From 2f74c00cd13ec9cd398c5d12d3f4a8a2af0cbd50 Mon Sep 17 00:00:00 2001 From: turuslan Date: Thu, 31 Jul 2025 10:42:18 +0500 Subject: [PATCH 01/13] lsquic 7048614 (ls-qpack 1a27f87, ls-hpack 8905c02) --- external/lsquic/.cirrus.yml | 20 + external/lsquic/.gitmodules | 6 + external/lsquic/.nojekyll | 0 external/lsquic/.readthedocs.yaml | 35 + external/lsquic/.travis.yml | 45 + external/lsquic/APIs.txt | 231 + external/lsquic/BUILD-WINDOWS.md | 110 + external/lsquic/CHANGELOG | 1774 + external/lsquic/CMakeLists.txt | 355 + external/lsquic/CONTRIBUTORS.txt | 21 + external/lsquic/Dockerfile | 38 + external/lsquic/EXAMPLES.txt | 297 + external/lsquic/LICENSE | 21 + external/lsquic/LICENSE.chrome | 32 + external/lsquic/README.md | 194 + external/lsquic/appveyor-linux.yml | 48 + external/lsquic/appveyor-windows.cmd | 23 + external/lsquic/appveyor-windows.yml | 33 + external/lsquic/bin/CMakeLists.txt | 120 + external/lsquic/bin/duck_client.c | 192 + external/lsquic/bin/duck_server.c | 161 + external/lsquic/bin/echo_client.c | 271 + external/lsquic/bin/echo_server.c | 238 + external/lsquic/bin/http_client.c | 1897 + external/lsquic/bin/http_server.c | 2060 + external/lsquic/bin/md5_client.c | 529 + external/lsquic/bin/md5_server.c | 345 + external/lsquic/bin/perf_client.c | 407 + external/lsquic/bin/perf_server.c | 253 + external/lsquic/bin/prog.c | 824 + external/lsquic/bin/prog.h | 116 + external/lsquic/bin/test_cert.c | 201 + external/lsquic/bin/test_cert.h | 30 + external/lsquic/bin/test_common.c | 2536 + external/lsquic/bin/test_common.h | 154 + external/lsquic/bin/test_config.h.in | 23 + external/lsquic/docs/apiref.rst | 2368 + external/lsquic/docs/conf.py | 184 + external/lsquic/docs/devel.rst | 37 + external/lsquic/docs/faq.rst | 47 + external/lsquic/docs/gettingstarted.rst | 78 + external/lsquic/docs/index.rst | 75 + external/lsquic/docs/internals.rst | 3706 + .../lsquic/docs/lsquic-engine-conns.drawio | 1 + external/lsquic/docs/lsquic-engine-conns.png | Bin 0 -> 97346 bytes external/lsquic/docs/lsquic-packet-queues.png | Bin 0 -> 25056 bytes external/lsquic/docs/rechist-linked-list.png | Bin 0 -> 8854 bytes .../lsquic/docs/rechist-memory-layout.png | Bin 0 -> 12524 bytes external/lsquic/docs/requirements.txt | 1 + external/lsquic/docs/stream-http3-framing.png | Bin 0 -> 22699 bytes external/lsquic/docs/tutorial.rst | 1207 + external/lsquic/docs/wireshark-screenshot.png | Bin 0 -> 40852 bytes external/lsquic/include/lsquic.h | 2246 + external/lsquic/include/lsquic_types.h | 60 + external/lsquic/include/lsxpack_header.h | 170 + external/lsquic/qir/run_endpoint.sh | 146 + external/lsquic/src/CMakeLists.txt | 4 + external/lsquic/src/liblsquic/CMakeLists.txt | 162 + external/lsquic/src/liblsquic/Makefile.am | 96 + .../lsquic/src/liblsquic/common_cert_set_2.c | 136 + .../src/liblsquic/common_cert_set_2a.inc | 5628 + .../src/liblsquic/common_cert_set_2b.inc | 5745 + .../lsquic/src/liblsquic/common_cert_set_3.c | 126 + .../src/liblsquic/common_cert_set_3a.inc | 5039 + .../src/liblsquic/common_cert_set_3b.inc | 5723 + external/lsquic/src/liblsquic/fiu-local.h | 38 + external/lsquic/src/liblsquic/gen-verstrs.pl | 168 + .../src/liblsquic/ls-qpack/.appveyor.yml | 46 + .../lsquic/src/liblsquic/ls-qpack/.cirrus.yml | 6 + .../lsquic/src/liblsquic/ls-qpack/.travis.yml | 32 + .../src/liblsquic/ls-qpack/CMakeLists.txt | 160 + .../lsquic/src/liblsquic/ls-qpack/LICENSE | 21 + .../lsquic/src/liblsquic/ls-qpack/README.md | 69 + .../src/liblsquic/ls-qpack/bin/CMakeLists.txt | 26 + .../src/liblsquic/ls-qpack/bin/encode-int.c | 87 + .../src/liblsquic/ls-qpack/bin/fuzz-decode.c | 317 + .../liblsquic/ls-qpack/bin/interop-decode.c | 728 + .../liblsquic/ls-qpack/bin/interop-encode.c | 561 + .../liblsquic/ls-qpack/deps/xxhash/xxhash.c | 941 + .../liblsquic/ls-qpack/deps/xxhash/xxhash.h | 160 + .../liblsquic/ls-qpack/fuzz/decode/a/README | 3 + .../liblsquic/ls-qpack/fuzz/decode/a/preamble | Bin 0 -> 317 bytes ...id_000000,sig_06,src_000390,op_havoc,rep_4 | Bin 0 -> 76 bytes ...d_000000,sig_06,src_000579,op_flip1,pos_14 | Bin 0 -> 48 bytes .../id_000000,src_000000,op_flip2,pos_12 | Bin 0 -> 136 bytes ...id_000001,sig_11,src_000579,op_havoc,rep_4 | Bin 0 -> 54 bytes ...2,sig_11,src_000481,op_int16,pos_15,val_-1 | Bin 0 -> 84 bytes .../id_000002,src_000000,op_havoc,rep_8 | Bin 0 -> 147 bytes .../id_000006,src_000285,op_flip2,pos_14 | Bin 0 -> 24 bytes .../id_000008,src_000285,op_flip2,pos_20 | Bin 0 -> 24 bytes .../id_000010,src_000306,op_flip2,pos_75 | Bin 0 -> 77 bytes .../id_000011,src_000344,op_havoc,rep_2 | Bin 0 -> 31 bytes .../id_000014,src_000366,op_flip2,pos_28 | Bin 0 -> 32 bytes .../liblsquic/ls-qpack/fuzz/decode/b/README | 1 + .../liblsquic/ls-qpack/fuzz/decode/b/preamble | Bin 0 -> 27492 bytes .../ls-qpack/fuzz/decode/b/test-cases/seed | Bin 0 -> 108 bytes .../liblsquic/ls-qpack/fuzz/decode/c/setup.sh | 3 + .../fb-req.qif.proxygen.out.256.100.0-chopped | Bin 0 -> 269 bytes .../liblsquic/ls-qpack/fuzz/decode/d/preamble | Bin 0 -> 59117 bytes .../liblsquic/ls-qpack/fuzz/decode/d/setup.sh | 3 + .../d/test-cases/fb-resp.minhq.256.128.0.ack | Bin 0 -> 906 bytes .../fuzz/input/256.100.1/fb-req.out.256.100.1 | Bin 0 -> 4319 bytes .../input/256.100.1/fb-resp.out.256.100.1 | Bin 0 -> 4846 bytes .../fuzz/input/256.100.1/netbsd.out.256.100.1 | Bin 0 -> 2409 bytes .../src/liblsquic/ls-qpack/huff-tables.h | 136247 ++++++++++++++ .../ls-qpack/ls-qpack-config.cmake.in | 10 + .../lsquic/src/liblsquic/ls-qpack/lsqpack.c | 5429 + .../lsquic/src/liblsquic/ls-qpack/lsqpack.h | 859 + .../src/liblsquic/ls-qpack/lsqpack.pc.in | 12 + .../src/liblsquic/ls-qpack/lsxpack_header.h | 169 + .../liblsquic/ls-qpack/test/CMakeLists.txt | 75 + .../liblsquic/ls-qpack/test/lsqpack-test.h | 47 + .../liblsquic/ls-qpack/test/qifs/fb-req.qif | 4917 + .../liblsquic/ls-qpack/test/qifs/fb-resp.qif | 5982 + .../ls-qpack/test/qifs/long-codes.qif | 5984 + .../liblsquic/ls-qpack/test/qifs/netbsd.qif | 235 + .../src/liblsquic/ls-qpack/test/run-qif.pl | 101 + .../liblsquic/ls-qpack/test/run-scenario.sh | 68 + .../ls-qpack/test/scenarios/0.95-reset.sce | 10 + .../ls-qpack/test/scenarios/cancel-stream.sce | 22 + .../ls-qpack/test/scenarios/drain-2.sce | 37 + .../ls-qpack/test/scenarios/drain.sce | 37 + .../ls-qpack/test/scenarios/end-dst-2.sce | 14 + .../ls-qpack/test/scenarios/end-dst.sce | 14 + .../ls-qpack/test/scenarios/incl-name.sce | 13 + .../scenarios/multi-byte-int-dyn-ref-1.sce | 110 + .../scenarios/multi-byte-int-dyn-ref-2.sce | 161 + .../ls-qpack/test/scenarios/post-base-1.sce | 10 + .../ls-qpack/test/scenarios/post-base-2.sce | 13 + .../ls-qpack/test/scenarios/post-base-nr.sce | 10 + .../ls-qpack/test/scenarios/set-max-cap.sce | 15 + .../liblsquic/ls-qpack/test/test_circ_list.c | 104 + .../ls-qpack/test/test_dec_crash_case.c | 50 + .../test/test_dyn_table_cap_mismatch.c | 56 + .../liblsquic/ls-qpack/test/test_enc_str.c | 139 + .../liblsquic/ls-qpack/test/test_huff_dec.c | 399 + .../src/liblsquic/ls-qpack/test/test_int.c | 220 + .../src/liblsquic/ls-qpack/test/test_qpack.c | 1125 + .../ls-qpack/test/test_read_enc_stream.c | 258 + .../ls-qpack/test/testdata/encoder_stream | Bin 0 -> 20594 bytes .../liblsquic/ls-qpack/test/testdata/response | 2 + .../src/liblsquic/ls-qpack/tools/gen-enums.pl | 123 + .../src/liblsquic/ls-qpack/tools/har2qif.pl | 139 + .../ls-qpack/tools/randomize-cookies.pl | 41 + .../src/liblsquic/ls-qpack/tools/sort-qif.pl | 31 + .../liblsquic/ls-qpack/wincompat/sys/queue.h | 859 + external/lsquic/src/liblsquic/ls-sfparser.c | 3173 + external/lsquic/src/liblsquic/ls-sfparser.h | 129 + .../lsquic/src/liblsquic/lsquic-config.cmake | 4 + .../lsquic/src/liblsquic/lsquic_adaptive_cc.c | 212 + .../lsquic/src/liblsquic/lsquic_adaptive_cc.h | 24 + .../lsquic/src/liblsquic/lsquic_alarmset.c | 116 + .../lsquic/src/liblsquic/lsquic_alarmset.h | 116 + external/lsquic/src/liblsquic/lsquic_arr.c | 53 + external/lsquic/src/liblsquic/lsquic_arr.h | 94 + external/lsquic/src/liblsquic/lsquic_attq.c | 287 + external/lsquic/src/liblsquic/lsquic_attq.h | 59 + external/lsquic/src/liblsquic/lsquic_bbr.c | 1086 + external/lsquic/src/liblsquic/lsquic_bbr.h | 210 + .../lsquic/src/liblsquic/lsquic_bw_sampler.c | 277 + .../lsquic/src/liblsquic/lsquic_bw_sampler.h | 111 + .../lsquic/src/liblsquic/lsquic_byteswap.h | 39 + external/lsquic/src/liblsquic/lsquic_cfcw.c | 116 + .../lsquic/src/liblsquic/lsquic_chsk_stream.c | 210 + .../lsquic/src/liblsquic/lsquic_chsk_stream.h | 24 + .../lsquic/src/liblsquic/lsquic_cong_ctl.h | 71 + external/lsquic/src/liblsquic/lsquic_conn.c | 348 + external/lsquic/src/liblsquic/lsquic_conn.h | 449 + .../lsquic/src/liblsquic/lsquic_conn_flow.h | 84 + .../lsquic/src/liblsquic/lsquic_conn_public.h | 73 + external/lsquic/src/liblsquic/lsquic_crand.c | 47 + external/lsquic/src/liblsquic/lsquic_crand.h | 23 + .../src/liblsquic/lsquic_crt_compress.c | 824 + .../src/liblsquic/lsquic_crt_compress.h | 75 + external/lsquic/src/liblsquic/lsquic_crypto.c | 539 + external/lsquic/src/liblsquic/lsquic_crypto.h | 106 + external/lsquic/src/liblsquic/lsquic_cubic.c | 294 + external/lsquic/src/liblsquic/lsquic_cubic.h | 42 + .../lsquic/src/liblsquic/lsquic_data_in_if.h | 111 + .../lsquic/src/liblsquic/lsquic_di_error.c | 112 + .../lsquic/src/liblsquic/lsquic_di_hash.c | 691 + .../lsquic/src/liblsquic/lsquic_di_nocopy.c | 560 + .../lsquic/src/liblsquic/lsquic_enc_sess.h | 384 + .../src/liblsquic/lsquic_enc_sess_common.c | 34 + .../src/liblsquic/lsquic_enc_sess_ietf.c | 3619 + .../lsquic/src/liblsquic/lsquic_eng_hist.c | 58 + .../lsquic/src/liblsquic/lsquic_eng_hist.h | 105 + external/lsquic/src/liblsquic/lsquic_engine.c | 3626 + .../src/liblsquic/lsquic_engine_public.h | 122 + external/lsquic/src/liblsquic/lsquic_ev_log.c | 598 + external/lsquic/src/liblsquic/lsquic_ev_log.h | 353 + .../lsquic/src/liblsquic/lsquic_frab_list.c | 148 + .../lsquic/src/liblsquic/lsquic_frab_list.h | 77 + .../src/liblsquic/lsquic_frame_common.c | 26 + .../src/liblsquic/lsquic_frame_common.h | 85 + .../src/liblsquic/lsquic_frame_reader.c | 990 + .../src/liblsquic/lsquic_frame_reader.h | 90 + .../src/liblsquic/lsquic_frame_writer.c | 674 + .../src/liblsquic/lsquic_frame_writer.h | 71 + .../lsquic/src/liblsquic/lsquic_full_conn.c | 4579 + .../lsquic/src/liblsquic/lsquic_full_conn.h | 60 + .../src/liblsquic/lsquic_full_conn_ietf.c | 10012 ++ external/lsquic/src/liblsquic/lsquic_global.c | 31 + .../lsquic/src/liblsquic/lsquic_handshake.c | 4353 + .../lsquic/src/liblsquic/lsquic_handshake.h | 123 + external/lsquic/src/liblsquic/lsquic_hash.c | 274 + external/lsquic/src/liblsquic/lsquic_hash.h | 79 + .../lsquic/src/liblsquic/lsquic_hcsi_reader.c | 267 + .../lsquic/src/liblsquic/lsquic_hcsi_reader.h | 72 + .../lsquic/src/liblsquic/lsquic_hcso_writer.c | 466 + .../lsquic/src/liblsquic/lsquic_hcso_writer.h | 48 + .../lsquic/src/liblsquic/lsquic_headers.h | 43 + .../src/liblsquic/lsquic_headers_stream.c | 426 + .../src/liblsquic/lsquic_headers_stream.h | 82 + external/lsquic/src/liblsquic/lsquic_hkdf.c | 45 + external/lsquic/src/liblsquic/lsquic_hkdf.h | 33 + external/lsquic/src/liblsquic/lsquic_hpi.c | 395 + external/lsquic/src/liblsquic/lsquic_hpi.h | 79 + external/lsquic/src/liblsquic/lsquic_hq.h | 103 + .../src/liblsquic/lsquic_hspack_valid.c | 165 + external/lsquic/src/liblsquic/lsquic_http.c | 77 + .../lsquic/src/liblsquic/lsquic_http1x_if.c | 631 + .../lsquic/src/liblsquic/lsquic_http1x_if.h | 21 + external/lsquic/src/liblsquic/lsquic_ietf.h | 45 + .../lsquic/src/liblsquic/lsquic_int_types.h | 31 + external/lsquic/src/liblsquic/lsquic_logger.c | 544 + external/lsquic/src/liblsquic/lsquic_logger.h | 272 + external/lsquic/src/liblsquic/lsquic_malo.c | 456 + external/lsquic/src/liblsquic/lsquic_malo.h | 49 + .../lsquic/src/liblsquic/lsquic_min_heap.c | 87 + .../lsquic/src/liblsquic/lsquic_min_heap.h | 53 + .../lsquic/src/liblsquic/lsquic_mini_conn.c | 2275 + .../lsquic/src/liblsquic/lsquic_mini_conn.h | 159 + .../src/liblsquic/lsquic_mini_conn_ietf.c | 2500 + .../src/liblsquic/lsquic_mini_conn_ietf.h | 171 + external/lsquic/src/liblsquic/lsquic_minmax.c | 155 + external/lsquic/src/liblsquic/lsquic_minmax.h | 52 + external/lsquic/src/liblsquic/lsquic_mm.c | 635 + external/lsquic/src/liblsquic/lsquic_mm.h | 100 + external/lsquic/src/liblsquic/lsquic_pacer.c | 160 + external/lsquic/src/liblsquic/lsquic_pacer.h | 74 + .../src/liblsquic/lsquic_packet_common.c | 119 + .../src/liblsquic/lsquic_packet_common.h | 233 + .../src/liblsquic/lsquic_packet_gquic.c | 33 + .../src/liblsquic/lsquic_packet_gquic.h | 88 + .../lsquic/src/liblsquic/lsquic_packet_ietf.h | 37 + .../lsquic/src/liblsquic/lsquic_packet_in.c | 63 + .../lsquic/src/liblsquic/lsquic_packet_in.h | 220 + .../lsquic/src/liblsquic/lsquic_packet_out.c | 554 + .../lsquic/src/liblsquic/lsquic_packet_out.h | 428 + .../src/liblsquic/lsquic_packet_resize.c | 267 + .../src/liblsquic/lsquic_packet_resize.h | 56 + external/lsquic/src/liblsquic/lsquic_parse.h | 450 + .../lsquic/src/liblsquic/lsquic_parse_Q046.c | 356 + .../lsquic/src/liblsquic/lsquic_parse_Q050.c | 887 + .../src/liblsquic/lsquic_parse_common.c | 463 + .../src/liblsquic/lsquic_parse_common.h | 99 + .../src/liblsquic/lsquic_parse_gquic_be.c | 1089 + .../src/liblsquic/lsquic_parse_gquic_be.h | 117 + .../src/liblsquic/lsquic_parse_gquic_common.c | 713 + .../lsquic/src/liblsquic/lsquic_parse_ietf.h | 16 + .../src/liblsquic/lsquic_parse_ietf_v1.c | 2348 + .../src/liblsquic/lsquic_parse_iquic_common.c | 453 + .../lsquic/src/liblsquic/lsquic_pr_queue.c | 693 + .../lsquic/src/liblsquic/lsquic_pr_queue.h | 88 + external/lsquic/src/liblsquic/lsquic_purga.c | 277 + external/lsquic/src/liblsquic/lsquic_purga.h | 68 + .../src/liblsquic/lsquic_push_promise.h | 68 + .../lsquic/src/liblsquic/lsquic_qdec_hdl.c | 901 + .../lsquic/src/liblsquic/lsquic_qdec_hdl.h | 90 + .../lsquic/src/liblsquic/lsquic_qenc_hdl.c | 580 + .../lsquic/src/liblsquic/lsquic_qenc_hdl.h | 82 + external/lsquic/src/liblsquic/lsquic_qlog.c | 266 + external/lsquic/src/liblsquic/lsquic_qlog.h | 94 + .../src/liblsquic/lsquic_qpack_dec_logger.h | 19 + .../src/liblsquic/lsquic_qpack_enc_logger.h | 16 + .../lsquic/src/liblsquic/lsquic_qpack_exp.c | 66 + .../lsquic/src/liblsquic/lsquic_qpack_exp.h | 71 + external/lsquic/src/liblsquic/lsquic_qtags.h | 62 + .../lsquic/src/liblsquic/lsquic_rapidhash.h | 324 + .../lsquic/src/liblsquic/lsquic_rechist.c | 579 + .../lsquic/src/liblsquic/lsquic_rechist.h | 97 + external/lsquic/src/liblsquic/lsquic_rtt.c | 44 + external/lsquic/src/liblsquic/lsquic_rtt.h | 41 + .../lsquic/src/liblsquic/lsquic_send_ctl.c | 4227 + .../lsquic/src/liblsquic/lsquic_send_ctl.h | 522 + .../lsquic/src/liblsquic/lsquic_senhist.c | 20 + .../lsquic/src/liblsquic/lsquic_senhist.h | 78 + external/lsquic/src/liblsquic/lsquic_set.c | 371 + external/lsquic/src/liblsquic/lsquic_set.h | 56 + external/lsquic/src/liblsquic/lsquic_sfcw.c | 156 + external/lsquic/src/liblsquic/lsquic_sfcw.h | 66 + .../src/liblsquic/lsquic_shared_support.h | 37 + .../lsquic/src/liblsquic/lsquic_shsk_stream.c | 102 + .../lsquic/src/liblsquic/lsquic_shsk_stream.h | 23 + external/lsquic/src/liblsquic/lsquic_sizes.h | 16 + external/lsquic/src/liblsquic/lsquic_spi.c | 364 + external/lsquic/src/liblsquic/lsquic_spi.h | 48 + .../lsquic/src/liblsquic/lsquic_stock_shi.c | 214 + .../lsquic/src/liblsquic/lsquic_stock_shi.h | 30 + external/lsquic/src/liblsquic/lsquic_str.c | 134 + external/lsquic/src/liblsquic/lsquic_str.h | 81 + external/lsquic/src/liblsquic/lsquic_stream.c | 5618 + external/lsquic/src/liblsquic/lsquic_stream.h | 682 + external/lsquic/src/liblsquic/lsquic_tokgen.c | 822 + external/lsquic/src/liblsquic/lsquic_tokgen.h | 65 + .../src/liblsquic/lsquic_trans_params.c | 1363 + .../src/liblsquic/lsquic_trans_params.h | 235 + .../lsquic/src/liblsquic/lsquic_trechist.c | 249 + .../lsquic/src/liblsquic/lsquic_trechist.h | 75 + external/lsquic/src/liblsquic/lsquic_util.c | 337 + external/lsquic/src/liblsquic/lsquic_util.h | 63 + external/lsquic/src/liblsquic/lsquic_varint.c | 202 + external/lsquic/src/liblsquic/lsquic_varint.h | 102 + .../lsquic/src/liblsquic/lsquic_ver_neg.h | 26 + .../lsquic/src/liblsquic/lsquic_version.c | 195 + .../lsquic/src/liblsquic/lsquic_version.h | 28 + external/lsquic/src/liblsquic/lsquic_xxhash.c | 942 + external/lsquic/src/liblsquic/lsquic_xxhash.h | 161 + external/lsquic/src/lshpack/.appveyor.yml | 14 + external/lsquic/src/lshpack/.cirrus.yml | 6 + external/lsquic/src/lshpack/.travis.yml | 27 + external/lsquic/src/lshpack/CMakeLists.txt | 90 + external/lsquic/src/lshpack/LICENSE | 21 + external/lsquic/src/lshpack/README.md | 33 + .../lsquic/src/lshpack/bin/CMakeLists.txt | 16 + external/lsquic/src/lshpack/bin/calc-xxh.c | 69 + external/lsquic/src/lshpack/bin/encode-qif.c | 263 + external/lsquic/src/lshpack/bin/find-xxh.c | 455 + .../src/lshpack/bin/gen-fast-dec-table.c | 175 + .../src/lshpack/bin/gen-fast-enc-table.c | 315 + external/lsquic/src/lshpack/bin/huff-decode.c | 99 + external/lsquic/src/lshpack/bin/huff-encode.c | 30 + .../src/lshpack/compat/queue/sys/queue.h | 859 + .../src/lshpack/compat/windows/sys/uio.h | 10 + .../lsquic/src/lshpack/deps/xxhash/xxhash.c | 941 + .../lsquic/src/lshpack/deps/xxhash/xxhash.h | 160 + external/lsquic/src/lshpack/huff-tables.h | 136251 +++++++++++++++ external/lsquic/src/lshpack/lshpack.c | 2073 + external/lsquic/src/lshpack/lshpack.h | 295 + external/lsquic/src/lshpack/lsxpack_header.h | 169 + .../lsquic/src/lshpack/test/CMakeLists.txt | 14 + .../lsquic/src/lshpack/test/lshpack-test.h | 53 + external/lsquic/src/lshpack/test/test_hpack.c | 11649 ++ external/lsquic/src/lshpack/test/test_int.c | 218 + external/lsquic/tests/CMakeLists.txt | 161 + external/lsquic/tests/graph_cubic.c | 160 + external/lsquic/tests/mini_parse.c | 115 + external/lsquic/tests/test_ack.c | 219 + external/lsquic/tests/test_ack_merge.c | 185 + external/lsquic/tests/test_ackgen_gquic_be.c | 389 + external/lsquic/tests/test_ackgen_gquic_le.c | 359 + .../lsquic/tests/test_ackparse_gquic_be.c | 470 + .../lsquic/tests/test_ackparse_gquic_le.c | 452 + external/lsquic/tests/test_ackparse_ietf.c | 140 + external/lsquic/tests/test_alarmset.c | 130 + external/lsquic/tests/test_alt_svc_ver.c | 18 + external/lsquic/tests/test_arr.c | 223 + external/lsquic/tests/test_attq.c | 231 + external/lsquic/tests/test_blocked_gquic_be.c | 70 + external/lsquic/tests/test_blocked_gquic_le.c | 70 + external/lsquic/tests/test_bw_sampler.c | 644 + external/lsquic/tests/test_chlo_gen.c | 72 + external/lsquic/tests/test_clear_aead.c | 120 + .../lsquic/tests/test_conn_close_gquic_be.c | 161 + .../lsquic/tests/test_conn_close_gquic_le.c | 161 + external/lsquic/tests/test_conn_hash.c | 87 + external/lsquic/tests/test_crypto_gen.c | 143 + external/lsquic/tests/test_cubic.c | 126 + external/lsquic/tests/test_dec.c | 82 + external/lsquic/tests/test_di_nocopy.c | 356 + external/lsquic/tests/test_elision.c | 420 + external/lsquic/tests/test_engine_ctor.c | 36 + external/lsquic/tests/test_export_key.c | 477 + external/lsquic/tests/test_frame_chop.c | 219 + external/lsquic/tests/test_frame_reader.c | 1219 + external/lsquic/tests/test_frame_rw.c | 10350 ++ external/lsquic/tests/test_frame_writer.c | 644 + external/lsquic/tests/test_goaway_gquic_be.c | 173 + external/lsquic/tests/test_goaway_gquic_le.c | 173 + external/lsquic/tests/test_h3_framing.c | 1761 + external/lsquic/tests/test_hcsi_reader.c | 303 + external/lsquic/tests/test_hkdf.c | 86 + external/lsquic/tests/test_hpi.c | 353 + external/lsquic/tests/test_lsquic_hash.c | 79 + external/lsquic/tests/test_malo.c | 157 + external/lsquic/tests/test_min_heap.c | 165 + external/lsquic/tests/test_minmax.c | 457 + external/lsquic/tests/test_packet_out.c | 100 + external/lsquic/tests/test_packet_resize.c | 1651 + external/lsquic/tests/test_packno_len.c | 342 + external/lsquic/tests/test_parse_packet_in.c | 513 + external/lsquic/tests/test_purga.c | 182 + external/lsquic/tests/test_qlog.c | 58 + external/lsquic/tests/test_quic_be_floats.c | 170 + external/lsquic/tests/test_quic_le_floats.c | 170 + external/lsquic/tests/test_rechist.c | 449 + .../lsquic/tests/test_reg_pkt_headergen.c | 237 + .../lsquic/tests/test_rst_stream_gquic_be.c | 77 + .../lsquic/tests/test_rst_stream_gquic_le.c | 78 + external/lsquic/tests/test_rst_stream_ietf.c | 81 + external/lsquic/tests/test_rtt.c | 33 + external/lsquic/tests/test_send_headers.c | 711 + external/lsquic/tests/test_senhist.c | 38 + external/lsquic/tests/test_set.c | 151 + external/lsquic/tests/test_sfcw.c | 64 + external/lsquic/tests/test_shi.c | 119 + external/lsquic/tests/test_some_packets.c | 133 + external/lsquic/tests/test_spi.c | 344 + .../lsquic/tests/test_stop_waiting_gquic_be.c | 101 + .../lsquic/tests/test_stop_waiting_gquic_le.c | 101 + external/lsquic/tests/test_stream.c | 3858 + external/lsquic/tests/test_streamgen.c | 493 + external/lsquic/tests/test_streamparse.c | 450 + external/lsquic/tests/test_tokgen.c | 41 + external/lsquic/tests/test_trapa.c | 286 + external/lsquic/tests/test_trechist.c | 533 + external/lsquic/tests/test_varint.c | 124 + external/lsquic/tests/test_ver_nego.c | 160 + external/lsquic/tests/test_wuf_gquic_be.c | 74 + external/lsquic/tests/test_wuf_gquic_le.c | 74 + external/lsquic/tools/gen-rst-tags.pl | 48 + external/lsquic/tools/gen-tags.pl | 68 + external/lsquic/wincompat/README.txt | 11 + external/lsquic/wincompat/sys/queue.h | 860 + external/lsquic/wincompat/vc_compat.h | 35 + 426 files changed, 487337 insertions(+) create mode 100644 external/lsquic/.cirrus.yml create mode 100644 external/lsquic/.gitmodules create mode 100644 external/lsquic/.nojekyll create mode 100644 external/lsquic/.readthedocs.yaml create mode 100644 external/lsquic/.travis.yml create mode 100644 external/lsquic/APIs.txt create mode 100644 external/lsquic/BUILD-WINDOWS.md create mode 100644 external/lsquic/CHANGELOG create mode 100644 external/lsquic/CMakeLists.txt create mode 100644 external/lsquic/CONTRIBUTORS.txt create mode 100644 external/lsquic/Dockerfile create mode 100644 external/lsquic/EXAMPLES.txt create mode 100644 external/lsquic/LICENSE create mode 100644 external/lsquic/LICENSE.chrome create mode 100644 external/lsquic/README.md create mode 100644 external/lsquic/appveyor-linux.yml create mode 100644 external/lsquic/appveyor-windows.cmd create mode 100644 external/lsquic/appveyor-windows.yml create mode 100644 external/lsquic/bin/CMakeLists.txt create mode 100644 external/lsquic/bin/duck_client.c create mode 100644 external/lsquic/bin/duck_server.c create mode 100644 external/lsquic/bin/echo_client.c create mode 100644 external/lsquic/bin/echo_server.c create mode 100644 external/lsquic/bin/http_client.c create mode 100644 external/lsquic/bin/http_server.c create mode 100644 external/lsquic/bin/md5_client.c create mode 100644 external/lsquic/bin/md5_server.c create mode 100644 external/lsquic/bin/perf_client.c create mode 100644 external/lsquic/bin/perf_server.c create mode 100644 external/lsquic/bin/prog.c create mode 100644 external/lsquic/bin/prog.h create mode 100644 external/lsquic/bin/test_cert.c create mode 100644 external/lsquic/bin/test_cert.h create mode 100644 external/lsquic/bin/test_common.c create mode 100644 external/lsquic/bin/test_common.h create mode 100644 external/lsquic/bin/test_config.h.in create mode 100644 external/lsquic/docs/apiref.rst create mode 100644 external/lsquic/docs/conf.py create mode 100644 external/lsquic/docs/devel.rst create mode 100644 external/lsquic/docs/faq.rst create mode 100644 external/lsquic/docs/gettingstarted.rst create mode 100644 external/lsquic/docs/index.rst create mode 100644 external/lsquic/docs/internals.rst create mode 100644 external/lsquic/docs/lsquic-engine-conns.drawio create mode 100644 external/lsquic/docs/lsquic-engine-conns.png create mode 100644 external/lsquic/docs/lsquic-packet-queues.png create mode 100644 external/lsquic/docs/rechist-linked-list.png create mode 100644 external/lsquic/docs/rechist-memory-layout.png create mode 100644 external/lsquic/docs/requirements.txt create mode 100644 external/lsquic/docs/stream-http3-framing.png create mode 100644 external/lsquic/docs/tutorial.rst create mode 100644 external/lsquic/docs/wireshark-screenshot.png create mode 100644 external/lsquic/include/lsquic.h create mode 100644 external/lsquic/include/lsquic_types.h create mode 100644 external/lsquic/include/lsxpack_header.h create mode 100644 external/lsquic/qir/run_endpoint.sh create mode 100644 external/lsquic/src/CMakeLists.txt create mode 100644 external/lsquic/src/liblsquic/CMakeLists.txt create mode 100644 external/lsquic/src/liblsquic/Makefile.am create mode 100644 external/lsquic/src/liblsquic/common_cert_set_2.c create mode 100644 external/lsquic/src/liblsquic/common_cert_set_2a.inc create mode 100644 external/lsquic/src/liblsquic/common_cert_set_2b.inc create mode 100644 external/lsquic/src/liblsquic/common_cert_set_3.c create mode 100644 external/lsquic/src/liblsquic/common_cert_set_3a.inc create mode 100644 external/lsquic/src/liblsquic/common_cert_set_3b.inc create mode 100644 external/lsquic/src/liblsquic/fiu-local.h create mode 100755 external/lsquic/src/liblsquic/gen-verstrs.pl create mode 100644 external/lsquic/src/liblsquic/ls-qpack/.appveyor.yml create mode 100644 external/lsquic/src/liblsquic/ls-qpack/.cirrus.yml create mode 100644 external/lsquic/src/liblsquic/ls-qpack/.travis.yml create mode 100644 external/lsquic/src/liblsquic/ls-qpack/CMakeLists.txt create mode 100644 external/lsquic/src/liblsquic/ls-qpack/LICENSE create mode 100644 external/lsquic/src/liblsquic/ls-qpack/README.md create mode 100644 external/lsquic/src/liblsquic/ls-qpack/bin/CMakeLists.txt create mode 100644 external/lsquic/src/liblsquic/ls-qpack/bin/encode-int.c create mode 100644 external/lsquic/src/liblsquic/ls-qpack/bin/fuzz-decode.c create mode 100644 external/lsquic/src/liblsquic/ls-qpack/bin/interop-decode.c create mode 100644 external/lsquic/src/liblsquic/ls-qpack/bin/interop-encode.c create mode 100644 external/lsquic/src/liblsquic/ls-qpack/deps/xxhash/xxhash.c create mode 100644 external/lsquic/src/liblsquic/ls-qpack/deps/xxhash/xxhash.h create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/README create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/preamble create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000000,sig_06,src_000390,op_havoc,rep_4 create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000000,sig_06,src_000579,op_flip1,pos_14 create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000000,src_000000,op_flip2,pos_12 create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000001,sig_11,src_000579,op_havoc,rep_4 create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000002,sig_11,src_000481,op_int16,pos_15,val_-1 create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000002,src_000000,op_havoc,rep_8 create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000006,src_000285,op_flip2,pos_14 create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000008,src_000285,op_flip2,pos_20 create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000010,src_000306,op_flip2,pos_75 create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000011,src_000344,op_havoc,rep_2 create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000014,src_000366,op_flip2,pos_28 create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/README create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/preamble create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/test-cases/seed create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/c/setup.sh create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/c/test-cases/fb-req.qif.proxygen.out.256.100.0-chopped create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/d/preamble create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/d/setup.sh create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/d/test-cases/fb-resp.minhq.256.128.0.ack create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/input/256.100.1/fb-req.out.256.100.1 create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/input/256.100.1/fb-resp.out.256.100.1 create mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/input/256.100.1/netbsd.out.256.100.1 create mode 100644 external/lsquic/src/liblsquic/ls-qpack/huff-tables.h create mode 100644 external/lsquic/src/liblsquic/ls-qpack/ls-qpack-config.cmake.in create mode 100644 external/lsquic/src/liblsquic/ls-qpack/lsqpack.c create mode 100644 external/lsquic/src/liblsquic/ls-qpack/lsqpack.h create mode 100644 external/lsquic/src/liblsquic/ls-qpack/lsqpack.pc.in create mode 100644 external/lsquic/src/liblsquic/ls-qpack/lsxpack_header.h create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/CMakeLists.txt create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/lsqpack-test.h create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/qifs/fb-req.qif create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/qifs/fb-resp.qif create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/qifs/long-codes.qif create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/qifs/netbsd.qif create mode 100755 external/lsquic/src/liblsquic/ls-qpack/test/run-qif.pl create mode 100755 external/lsquic/src/liblsquic/ls-qpack/test/run-scenario.sh create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/0.95-reset.sce create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/cancel-stream.sce create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/drain-2.sce create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/drain.sce create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/end-dst-2.sce create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/end-dst.sce create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/incl-name.sce create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-1.sce create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-2.sce create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-1.sce create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-2.sce create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-nr.sce create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/set-max-cap.sce create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/test_circ_list.c create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/test_dec_crash_case.c create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/test_dyn_table_cap_mismatch.c create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/test_enc_str.c create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/test_huff_dec.c create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/test_int.c create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/test_qpack.c create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/test_read_enc_stream.c create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/testdata/encoder_stream create mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/testdata/response create mode 100755 external/lsquic/src/liblsquic/ls-qpack/tools/gen-enums.pl create mode 100755 external/lsquic/src/liblsquic/ls-qpack/tools/har2qif.pl create mode 100755 external/lsquic/src/liblsquic/ls-qpack/tools/randomize-cookies.pl create mode 100755 external/lsquic/src/liblsquic/ls-qpack/tools/sort-qif.pl create mode 100644 external/lsquic/src/liblsquic/ls-qpack/wincompat/sys/queue.h create mode 100644 external/lsquic/src/liblsquic/ls-sfparser.c create mode 100644 external/lsquic/src/liblsquic/ls-sfparser.h create mode 100644 external/lsquic/src/liblsquic/lsquic-config.cmake create mode 100644 external/lsquic/src/liblsquic/lsquic_adaptive_cc.c create mode 100644 external/lsquic/src/liblsquic/lsquic_adaptive_cc.h create mode 100644 external/lsquic/src/liblsquic/lsquic_alarmset.c create mode 100644 external/lsquic/src/liblsquic/lsquic_alarmset.h create mode 100644 external/lsquic/src/liblsquic/lsquic_arr.c create mode 100644 external/lsquic/src/liblsquic/lsquic_arr.h create mode 100644 external/lsquic/src/liblsquic/lsquic_attq.c create mode 100644 external/lsquic/src/liblsquic/lsquic_attq.h create mode 100644 external/lsquic/src/liblsquic/lsquic_bbr.c create mode 100644 external/lsquic/src/liblsquic/lsquic_bbr.h create mode 100644 external/lsquic/src/liblsquic/lsquic_bw_sampler.c create mode 100644 external/lsquic/src/liblsquic/lsquic_bw_sampler.h create mode 100644 external/lsquic/src/liblsquic/lsquic_byteswap.h create mode 100644 external/lsquic/src/liblsquic/lsquic_cfcw.c create mode 100644 external/lsquic/src/liblsquic/lsquic_chsk_stream.c create mode 100644 external/lsquic/src/liblsquic/lsquic_chsk_stream.h create mode 100644 external/lsquic/src/liblsquic/lsquic_cong_ctl.h create mode 100644 external/lsquic/src/liblsquic/lsquic_conn.c create mode 100644 external/lsquic/src/liblsquic/lsquic_conn.h create mode 100644 external/lsquic/src/liblsquic/lsquic_conn_flow.h create mode 100644 external/lsquic/src/liblsquic/lsquic_conn_public.h create mode 100644 external/lsquic/src/liblsquic/lsquic_crand.c create mode 100644 external/lsquic/src/liblsquic/lsquic_crand.h create mode 100644 external/lsquic/src/liblsquic/lsquic_crt_compress.c create mode 100644 external/lsquic/src/liblsquic/lsquic_crt_compress.h create mode 100644 external/lsquic/src/liblsquic/lsquic_crypto.c create mode 100644 external/lsquic/src/liblsquic/lsquic_crypto.h create mode 100644 external/lsquic/src/liblsquic/lsquic_cubic.c create mode 100644 external/lsquic/src/liblsquic/lsquic_cubic.h create mode 100644 external/lsquic/src/liblsquic/lsquic_data_in_if.h create mode 100644 external/lsquic/src/liblsquic/lsquic_di_error.c create mode 100644 external/lsquic/src/liblsquic/lsquic_di_hash.c create mode 100644 external/lsquic/src/liblsquic/lsquic_di_nocopy.c create mode 100644 external/lsquic/src/liblsquic/lsquic_enc_sess.h create mode 100644 external/lsquic/src/liblsquic/lsquic_enc_sess_common.c create mode 100644 external/lsquic/src/liblsquic/lsquic_enc_sess_ietf.c create mode 100644 external/lsquic/src/liblsquic/lsquic_eng_hist.c create mode 100644 external/lsquic/src/liblsquic/lsquic_eng_hist.h create mode 100644 external/lsquic/src/liblsquic/lsquic_engine.c create mode 100644 external/lsquic/src/liblsquic/lsquic_engine_public.h create mode 100644 external/lsquic/src/liblsquic/lsquic_ev_log.c create mode 100644 external/lsquic/src/liblsquic/lsquic_ev_log.h create mode 100644 external/lsquic/src/liblsquic/lsquic_frab_list.c create mode 100644 external/lsquic/src/liblsquic/lsquic_frab_list.h create mode 100644 external/lsquic/src/liblsquic/lsquic_frame_common.c create mode 100644 external/lsquic/src/liblsquic/lsquic_frame_common.h create mode 100644 external/lsquic/src/liblsquic/lsquic_frame_reader.c create mode 100644 external/lsquic/src/liblsquic/lsquic_frame_reader.h create mode 100644 external/lsquic/src/liblsquic/lsquic_frame_writer.c create mode 100644 external/lsquic/src/liblsquic/lsquic_frame_writer.h create mode 100644 external/lsquic/src/liblsquic/lsquic_full_conn.c create mode 100644 external/lsquic/src/liblsquic/lsquic_full_conn.h create mode 100644 external/lsquic/src/liblsquic/lsquic_full_conn_ietf.c create mode 100644 external/lsquic/src/liblsquic/lsquic_global.c create mode 100644 external/lsquic/src/liblsquic/lsquic_handshake.c create mode 100644 external/lsquic/src/liblsquic/lsquic_handshake.h create mode 100644 external/lsquic/src/liblsquic/lsquic_hash.c create mode 100644 external/lsquic/src/liblsquic/lsquic_hash.h create mode 100644 external/lsquic/src/liblsquic/lsquic_hcsi_reader.c create mode 100644 external/lsquic/src/liblsquic/lsquic_hcsi_reader.h create mode 100644 external/lsquic/src/liblsquic/lsquic_hcso_writer.c create mode 100644 external/lsquic/src/liblsquic/lsquic_hcso_writer.h create mode 100644 external/lsquic/src/liblsquic/lsquic_headers.h create mode 100644 external/lsquic/src/liblsquic/lsquic_headers_stream.c create mode 100644 external/lsquic/src/liblsquic/lsquic_headers_stream.h create mode 100644 external/lsquic/src/liblsquic/lsquic_hkdf.c create mode 100644 external/lsquic/src/liblsquic/lsquic_hkdf.h create mode 100644 external/lsquic/src/liblsquic/lsquic_hpi.c create mode 100644 external/lsquic/src/liblsquic/lsquic_hpi.h create mode 100644 external/lsquic/src/liblsquic/lsquic_hq.h create mode 100644 external/lsquic/src/liblsquic/lsquic_hspack_valid.c create mode 100644 external/lsquic/src/liblsquic/lsquic_http.c create mode 100644 external/lsquic/src/liblsquic/lsquic_http1x_if.c create mode 100644 external/lsquic/src/liblsquic/lsquic_http1x_if.h create mode 100644 external/lsquic/src/liblsquic/lsquic_ietf.h create mode 100644 external/lsquic/src/liblsquic/lsquic_int_types.h create mode 100644 external/lsquic/src/liblsquic/lsquic_logger.c create mode 100644 external/lsquic/src/liblsquic/lsquic_logger.h create mode 100644 external/lsquic/src/liblsquic/lsquic_malo.c create mode 100644 external/lsquic/src/liblsquic/lsquic_malo.h create mode 100644 external/lsquic/src/liblsquic/lsquic_min_heap.c create mode 100644 external/lsquic/src/liblsquic/lsquic_min_heap.h create mode 100644 external/lsquic/src/liblsquic/lsquic_mini_conn.c create mode 100644 external/lsquic/src/liblsquic/lsquic_mini_conn.h create mode 100644 external/lsquic/src/liblsquic/lsquic_mini_conn_ietf.c create mode 100644 external/lsquic/src/liblsquic/lsquic_mini_conn_ietf.h create mode 100644 external/lsquic/src/liblsquic/lsquic_minmax.c create mode 100644 external/lsquic/src/liblsquic/lsquic_minmax.h create mode 100644 external/lsquic/src/liblsquic/lsquic_mm.c create mode 100644 external/lsquic/src/liblsquic/lsquic_mm.h create mode 100644 external/lsquic/src/liblsquic/lsquic_pacer.c create mode 100644 external/lsquic/src/liblsquic/lsquic_pacer.h create mode 100644 external/lsquic/src/liblsquic/lsquic_packet_common.c create mode 100644 external/lsquic/src/liblsquic/lsquic_packet_common.h create mode 100644 external/lsquic/src/liblsquic/lsquic_packet_gquic.c create mode 100644 external/lsquic/src/liblsquic/lsquic_packet_gquic.h create mode 100644 external/lsquic/src/liblsquic/lsquic_packet_ietf.h create mode 100644 external/lsquic/src/liblsquic/lsquic_packet_in.c create mode 100644 external/lsquic/src/liblsquic/lsquic_packet_in.h create mode 100644 external/lsquic/src/liblsquic/lsquic_packet_out.c create mode 100644 external/lsquic/src/liblsquic/lsquic_packet_out.h create mode 100644 external/lsquic/src/liblsquic/lsquic_packet_resize.c create mode 100644 external/lsquic/src/liblsquic/lsquic_packet_resize.h create mode 100644 external/lsquic/src/liblsquic/lsquic_parse.h create mode 100644 external/lsquic/src/liblsquic/lsquic_parse_Q046.c create mode 100644 external/lsquic/src/liblsquic/lsquic_parse_Q050.c create mode 100644 external/lsquic/src/liblsquic/lsquic_parse_common.c create mode 100644 external/lsquic/src/liblsquic/lsquic_parse_common.h create mode 100644 external/lsquic/src/liblsquic/lsquic_parse_gquic_be.c create mode 100644 external/lsquic/src/liblsquic/lsquic_parse_gquic_be.h create mode 100644 external/lsquic/src/liblsquic/lsquic_parse_gquic_common.c create mode 100644 external/lsquic/src/liblsquic/lsquic_parse_ietf.h create mode 100644 external/lsquic/src/liblsquic/lsquic_parse_ietf_v1.c create mode 100644 external/lsquic/src/liblsquic/lsquic_parse_iquic_common.c create mode 100644 external/lsquic/src/liblsquic/lsquic_pr_queue.c create mode 100644 external/lsquic/src/liblsquic/lsquic_pr_queue.h create mode 100644 external/lsquic/src/liblsquic/lsquic_purga.c create mode 100644 external/lsquic/src/liblsquic/lsquic_purga.h create mode 100644 external/lsquic/src/liblsquic/lsquic_push_promise.h create mode 100644 external/lsquic/src/liblsquic/lsquic_qdec_hdl.c create mode 100644 external/lsquic/src/liblsquic/lsquic_qdec_hdl.h create mode 100644 external/lsquic/src/liblsquic/lsquic_qenc_hdl.c create mode 100644 external/lsquic/src/liblsquic/lsquic_qenc_hdl.h create mode 100644 external/lsquic/src/liblsquic/lsquic_qlog.c create mode 100644 external/lsquic/src/liblsquic/lsquic_qlog.h create mode 100644 external/lsquic/src/liblsquic/lsquic_qpack_dec_logger.h create mode 100644 external/lsquic/src/liblsquic/lsquic_qpack_enc_logger.h create mode 100644 external/lsquic/src/liblsquic/lsquic_qpack_exp.c create mode 100644 external/lsquic/src/liblsquic/lsquic_qpack_exp.h create mode 100644 external/lsquic/src/liblsquic/lsquic_qtags.h create mode 100755 external/lsquic/src/liblsquic/lsquic_rapidhash.h create mode 100644 external/lsquic/src/liblsquic/lsquic_rechist.c create mode 100644 external/lsquic/src/liblsquic/lsquic_rechist.h create mode 100644 external/lsquic/src/liblsquic/lsquic_rtt.c create mode 100644 external/lsquic/src/liblsquic/lsquic_rtt.h create mode 100644 external/lsquic/src/liblsquic/lsquic_send_ctl.c create mode 100644 external/lsquic/src/liblsquic/lsquic_send_ctl.h create mode 100644 external/lsquic/src/liblsquic/lsquic_senhist.c create mode 100644 external/lsquic/src/liblsquic/lsquic_senhist.h create mode 100644 external/lsquic/src/liblsquic/lsquic_set.c create mode 100644 external/lsquic/src/liblsquic/lsquic_set.h create mode 100644 external/lsquic/src/liblsquic/lsquic_sfcw.c create mode 100644 external/lsquic/src/liblsquic/lsquic_sfcw.h create mode 100644 external/lsquic/src/liblsquic/lsquic_shared_support.h create mode 100644 external/lsquic/src/liblsquic/lsquic_shsk_stream.c create mode 100644 external/lsquic/src/liblsquic/lsquic_shsk_stream.h create mode 100644 external/lsquic/src/liblsquic/lsquic_sizes.h create mode 100644 external/lsquic/src/liblsquic/lsquic_spi.c create mode 100644 external/lsquic/src/liblsquic/lsquic_spi.h create mode 100644 external/lsquic/src/liblsquic/lsquic_stock_shi.c create mode 100644 external/lsquic/src/liblsquic/lsquic_stock_shi.h create mode 100644 external/lsquic/src/liblsquic/lsquic_str.c create mode 100644 external/lsquic/src/liblsquic/lsquic_str.h create mode 100644 external/lsquic/src/liblsquic/lsquic_stream.c create mode 100644 external/lsquic/src/liblsquic/lsquic_stream.h create mode 100644 external/lsquic/src/liblsquic/lsquic_tokgen.c create mode 100644 external/lsquic/src/liblsquic/lsquic_tokgen.h create mode 100644 external/lsquic/src/liblsquic/lsquic_trans_params.c create mode 100644 external/lsquic/src/liblsquic/lsquic_trans_params.h create mode 100644 external/lsquic/src/liblsquic/lsquic_trechist.c create mode 100644 external/lsquic/src/liblsquic/lsquic_trechist.h create mode 100644 external/lsquic/src/liblsquic/lsquic_util.c create mode 100644 external/lsquic/src/liblsquic/lsquic_util.h create mode 100644 external/lsquic/src/liblsquic/lsquic_varint.c create mode 100644 external/lsquic/src/liblsquic/lsquic_varint.h create mode 100644 external/lsquic/src/liblsquic/lsquic_ver_neg.h create mode 100644 external/lsquic/src/liblsquic/lsquic_version.c create mode 100644 external/lsquic/src/liblsquic/lsquic_version.h create mode 100644 external/lsquic/src/liblsquic/lsquic_xxhash.c create mode 100644 external/lsquic/src/liblsquic/lsquic_xxhash.h create mode 100644 external/lsquic/src/lshpack/.appveyor.yml create mode 100644 external/lsquic/src/lshpack/.cirrus.yml create mode 100644 external/lsquic/src/lshpack/.travis.yml create mode 100644 external/lsquic/src/lshpack/CMakeLists.txt create mode 100644 external/lsquic/src/lshpack/LICENSE create mode 100644 external/lsquic/src/lshpack/README.md create mode 100644 external/lsquic/src/lshpack/bin/CMakeLists.txt create mode 100644 external/lsquic/src/lshpack/bin/calc-xxh.c create mode 100644 external/lsquic/src/lshpack/bin/encode-qif.c create mode 100644 external/lsquic/src/lshpack/bin/find-xxh.c create mode 100644 external/lsquic/src/lshpack/bin/gen-fast-dec-table.c create mode 100644 external/lsquic/src/lshpack/bin/gen-fast-enc-table.c create mode 100644 external/lsquic/src/lshpack/bin/huff-decode.c create mode 100644 external/lsquic/src/lshpack/bin/huff-encode.c create mode 100644 external/lsquic/src/lshpack/compat/queue/sys/queue.h create mode 100644 external/lsquic/src/lshpack/compat/windows/sys/uio.h create mode 100644 external/lsquic/src/lshpack/deps/xxhash/xxhash.c create mode 100644 external/lsquic/src/lshpack/deps/xxhash/xxhash.h create mode 100644 external/lsquic/src/lshpack/huff-tables.h create mode 100644 external/lsquic/src/lshpack/lshpack.c create mode 100644 external/lsquic/src/lshpack/lshpack.h create mode 100644 external/lsquic/src/lshpack/lsxpack_header.h create mode 100644 external/lsquic/src/lshpack/test/CMakeLists.txt create mode 100644 external/lsquic/src/lshpack/test/lshpack-test.h create mode 100644 external/lsquic/src/lshpack/test/test_hpack.c create mode 100644 external/lsquic/src/lshpack/test/test_int.c create mode 100644 external/lsquic/tests/CMakeLists.txt create mode 100644 external/lsquic/tests/graph_cubic.c create mode 100644 external/lsquic/tests/mini_parse.c create mode 100644 external/lsquic/tests/test_ack.c create mode 100644 external/lsquic/tests/test_ack_merge.c create mode 100644 external/lsquic/tests/test_ackgen_gquic_be.c create mode 100644 external/lsquic/tests/test_ackgen_gquic_le.c create mode 100644 external/lsquic/tests/test_ackparse_gquic_be.c create mode 100644 external/lsquic/tests/test_ackparse_gquic_le.c create mode 100644 external/lsquic/tests/test_ackparse_ietf.c create mode 100644 external/lsquic/tests/test_alarmset.c create mode 100644 external/lsquic/tests/test_alt_svc_ver.c create mode 100644 external/lsquic/tests/test_arr.c create mode 100644 external/lsquic/tests/test_attq.c create mode 100644 external/lsquic/tests/test_blocked_gquic_be.c create mode 100644 external/lsquic/tests/test_blocked_gquic_le.c create mode 100644 external/lsquic/tests/test_bw_sampler.c create mode 100644 external/lsquic/tests/test_chlo_gen.c create mode 100644 external/lsquic/tests/test_clear_aead.c create mode 100644 external/lsquic/tests/test_conn_close_gquic_be.c create mode 100644 external/lsquic/tests/test_conn_close_gquic_le.c create mode 100644 external/lsquic/tests/test_conn_hash.c create mode 100644 external/lsquic/tests/test_crypto_gen.c create mode 100644 external/lsquic/tests/test_cubic.c create mode 100644 external/lsquic/tests/test_dec.c create mode 100644 external/lsquic/tests/test_di_nocopy.c create mode 100644 external/lsquic/tests/test_elision.c create mode 100644 external/lsquic/tests/test_engine_ctor.c create mode 100644 external/lsquic/tests/test_export_key.c create mode 100644 external/lsquic/tests/test_frame_chop.c create mode 100644 external/lsquic/tests/test_frame_reader.c create mode 100644 external/lsquic/tests/test_frame_rw.c create mode 100644 external/lsquic/tests/test_frame_writer.c create mode 100644 external/lsquic/tests/test_goaway_gquic_be.c create mode 100644 external/lsquic/tests/test_goaway_gquic_le.c create mode 100644 external/lsquic/tests/test_h3_framing.c create mode 100644 external/lsquic/tests/test_hcsi_reader.c create mode 100644 external/lsquic/tests/test_hkdf.c create mode 100644 external/lsquic/tests/test_hpi.c create mode 100644 external/lsquic/tests/test_lsquic_hash.c create mode 100644 external/lsquic/tests/test_malo.c create mode 100644 external/lsquic/tests/test_min_heap.c create mode 100644 external/lsquic/tests/test_minmax.c create mode 100644 external/lsquic/tests/test_packet_out.c create mode 100644 external/lsquic/tests/test_packet_resize.c create mode 100644 external/lsquic/tests/test_packno_len.c create mode 100644 external/lsquic/tests/test_parse_packet_in.c create mode 100644 external/lsquic/tests/test_purga.c create mode 100644 external/lsquic/tests/test_qlog.c create mode 100644 external/lsquic/tests/test_quic_be_floats.c create mode 100644 external/lsquic/tests/test_quic_le_floats.c create mode 100644 external/lsquic/tests/test_rechist.c create mode 100644 external/lsquic/tests/test_reg_pkt_headergen.c create mode 100644 external/lsquic/tests/test_rst_stream_gquic_be.c create mode 100644 external/lsquic/tests/test_rst_stream_gquic_le.c create mode 100644 external/lsquic/tests/test_rst_stream_ietf.c create mode 100644 external/lsquic/tests/test_rtt.c create mode 100644 external/lsquic/tests/test_send_headers.c create mode 100644 external/lsquic/tests/test_senhist.c create mode 100644 external/lsquic/tests/test_set.c create mode 100644 external/lsquic/tests/test_sfcw.c create mode 100644 external/lsquic/tests/test_shi.c create mode 100644 external/lsquic/tests/test_some_packets.c create mode 100644 external/lsquic/tests/test_spi.c create mode 100644 external/lsquic/tests/test_stop_waiting_gquic_be.c create mode 100644 external/lsquic/tests/test_stop_waiting_gquic_le.c create mode 100644 external/lsquic/tests/test_stream.c create mode 100644 external/lsquic/tests/test_streamgen.c create mode 100644 external/lsquic/tests/test_streamparse.c create mode 100644 external/lsquic/tests/test_tokgen.c create mode 100644 external/lsquic/tests/test_trapa.c create mode 100644 external/lsquic/tests/test_trechist.c create mode 100644 external/lsquic/tests/test_varint.c create mode 100644 external/lsquic/tests/test_ver_nego.c create mode 100644 external/lsquic/tests/test_wuf_gquic_be.c create mode 100644 external/lsquic/tests/test_wuf_gquic_le.c create mode 100644 external/lsquic/tools/gen-rst-tags.pl create mode 100755 external/lsquic/tools/gen-tags.pl create mode 100644 external/lsquic/wincompat/README.txt create mode 100644 external/lsquic/wincompat/sys/queue.h create mode 100644 external/lsquic/wincompat/vc_compat.h diff --git a/external/lsquic/.cirrus.yml b/external/lsquic/.cirrus.yml new file mode 100644 index 0000000..14e8906 --- /dev/null +++ b/external/lsquic/.cirrus.yml @@ -0,0 +1,20 @@ +freebsd_instance: + image: freebsd-13-2-release-amd64 + +task: + install_script: + - pkg install -y cmake libevent git go + - git clone https://boringssl.googlesource.com/boringssl + - cd boringssl + # This is so that both GQUIC and IETF branches build. Just picking + # a known good revision: + - git checkout a2278d4d2cabe73f6663e3299ea7808edfa306b9 + - cmake . + - make + - cd - + script: + - git submodule init + - git submodule update + - cmake -DBORINGSSL_DIR=$PWD/boringssl . + - make + - make test diff --git a/external/lsquic/.gitmodules b/external/lsquic/.gitmodules new file mode 100644 index 0000000..25eb1b8 --- /dev/null +++ b/external/lsquic/.gitmodules @@ -0,0 +1,6 @@ +[submodule "src/liblsquic/ls-qpack"] + path = src/liblsquic/ls-qpack + url = https://github.com/litespeedtech/ls-qpack +[submodule "src/lshpack"] + path = src/lshpack + url = https://github.com/litespeedtech/ls-hpack diff --git a/external/lsquic/.nojekyll b/external/lsquic/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/external/lsquic/.readthedocs.yaml b/external/lsquic/.readthedocs.yaml new file mode 100644 index 0000000..31dbf0d --- /dev/null +++ b/external/lsquic/.readthedocs.yaml @@ -0,0 +1,35 @@ +# Read the Docs configuration file for Sphinx projects +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +# Set the OS, Python version and other tools you might need +build: + os: ubuntu-22.04 + tools: + python: "3.12" + # You can also specify other tool versions: + # nodejs: "20" + # rust: "1.70" + # golang: "1.20" + +# Build documentation in the "docs/" directory with Sphinx +sphinx: + configuration: docs/conf.py + # You can configure Sphinx to use a different builder, for instance use the dirhtml builder for simpler URLs + # builder: "dirhtml" + # Fail on all warnings to avoid broken references + # fail_on_warning: true + +# Optionally build your docs in additional formats such as PDF and ePub +# formats: +# - pdf +# - epub + +# Optional but recommended, declare the Python requirements required +# to build your documentation +# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html +python: + install: + - requirements: docs/requirements.txt diff --git a/external/lsquic/.travis.yml b/external/lsquic/.travis.yml new file mode 100644 index 0000000..0c31521 --- /dev/null +++ b/external/lsquic/.travis.yml @@ -0,0 +1,45 @@ +language: c +if: branch = master +matrix: + include: + - name: Linux (gcc) + os: linux + compiler: gcc + addons: + apt: + packages: + - libevent-dev + - name: Linux (clang) + os: linux + compiler: clang + addons: + apt: + packages: + - libevent-dev + - name: macOS + os: osx +sudo: false +before_install: + - if [ $TRAVIS_OS_NAME = linux ]; then sudo add-apt-repository -y ppa:longsleep/golang-backports; fi + - if [ $TRAVIS_OS_NAME = linux ]; then sudo apt-get update; fi + - if [ $TRAVIS_OS_NAME = linux ]; then sudo apt-get install golang-1.13-go; fi +install: + - if [ $TRAVIS_OS_NAME = linux ]; then export PATH=/usr/lib/go-1.13/bin:$PATH; fi + - if [ $TRAVIS_OS_NAME = linux ]; then export GOPATH=/usr/lib/go-1.13:$GOPATH; fi + - if [ $TRAVIS_OS_NAME = linux ]; then export GOROOT=/usr/lib/go-1.13; fi +before_script: + - git clone https://boringssl.googlesource.com/boringssl + - cd boringssl + # This is so that both GQUIC and IETF branches build. Just picking + # a known good revision: + - git checkout a2278d4d2cabe73f6663e3299ea7808edfa306b9 + - cmake . + - make + - cd - + - git submodule init + - git submodule update + - cmake -DBORINGSSL_DIR=$PWD/boringssl . +script: + # Now build lsquic-client + - make + - make test diff --git a/external/lsquic/APIs.txt b/external/lsquic/APIs.txt new file mode 100644 index 0000000..16d5d00 --- /dev/null +++ b/external/lsquic/APIs.txt @@ -0,0 +1,231 @@ +# Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. +LSQUIC APIs +=========== + +LSQUIC exposes the following object types to the user: + + - Engine Settings (struct lsquic_engine_settings) + - Stream Interface (struct lsquic_stream_if) + - Engine API (struct lsquic_engine_api) + - Engine + - Connection + - Stream + +The first three -- engine settings, engine APIs, and stream interface -- +are used to instantiate the engine. After engine is instantiated, the +user code need only concern itself with engine, connections, and streams. + + +Engine Settings +--------------- + +Engine settings is the struct lsquic_engine_settings. It contains various +QUIC settings and LSQUIC parameters. The usual way to use it is to initialize +it to default values using lsquic_engine_init_settings(), modify any values +if necessary, and pass it as parameter to lsquic_engine_new(). + +QUIC settings are specified by the following members: + + lsquic_engine_settings QUIC + member parameter + ---------------------- --------- + es_cfcw CFCW + es_sfcw SFCW + es_max_streams_in MIDS + es_ua UAID + es_versions VER + es_idle_conn_to ICSL + es_silent_close SCLS + es_support_srej COPT/SREJ + es_support_nstp COPT/NSTP + es_support_tcid0 TCID + +The following parameters affect run-time behavior: + + es_rw_once Important: affects event dispatch + es_handshake_to + es_support_push + es_pace_packets + +Other noteworthy settings: + + es_max_header_list_size + es_progress_check + +To be sure your settings are good (in other words, passing this struct won't +trip up the engine constructor), use lsquic_engine_check_settings(). + + +Stream Interface +---------------- + +The stream interface, lsquic_stream_if, specifies callbacks LSQUIC engine +will call for connections and streams. + +The following callbacks should be specified for connection: + + on_new_conn This is called when connection is created. + + on_goaway_received This function is called when we receive GOAWAY + frame from peer. This callback is optional. + + on_conn_closed Connection is closed: all streams have been + destroyed. + +The streams have four callbacks: + + on_new_stream Stream has been created. + + on_read Stream can be read from (see Events). + + on_write Stream can be written to (see Events). + + on_close Stream has been closed. + +For both connections and streams, the "on new" callback return value can +be used to specify user-supplied data. This data pointer is optional and +can be NULL. It can also refer to the same data for the connection and +its streams. "on close" callbacks should be used to free user-supplied +data. + + +Engine API +---------- + +The engine API, struct lsquic_engine_api, is a combination structure to +make calling lsquic_engine_new() manageable. It holds references to +struct lsquic_engine_settings and struct lsquic_stream_if, as well as: + + - Interface for sending outgoing packets, ea_packets_out + - Interface for allocating memory for outgoing packet buffers + (optional). + - Interface for share memory hash, ea_shi + - Optional interface for reporting connections whose handshake + did not complete (ea_bad_handshake) + +ea_packets_out is a pointer to a function of type lsquic_packets_out_f. +The engine calls this function when it is appropriate to send out packets +for one or more connections, which it gives to the function in a batch. +This batch is an array of struct lsquic_out_spec. + + +Engine +------ + +The engine is instantiated using lsquic_engine_new(). The first parameter +is a list flags and the second parameter is the reference to the engine +api. The engine settings are specified, they are copied; changing +the setting after the engine has been created will not affect engine's +behavior. If the settings are not specified, the engine will use default +settings created by lsquic_engine_init_settings(). + +Once the engine is instantiated, there are four main ways to use it to +drive QUIC connections: + + 1. Create a connection using lsquic_engine_connect(). + 2. Feed it incoming packets using lsquic_engine_packet_in() function. + 3. Process connections using one of the connection queue functions + (see Connection Queues). + 4. Accept outgoing packets for sending (and send them!) using + ea_packets_out callback. + + +Connection Management +--------------------- + +A connection needs to be processed once in a while. It needs to be +processed when one of the following is true: + + - There are incoming packets; + - A stream is both readable by the user code and the user code wants + to read from it; + - A stream is both writeable by the user code and the user code wants + to write to it; + - User has written to stream outside of on_write() callbacks (that is + allowed) and now there are packets ready to be sent; + - A timer (pacer, retransmission, idle, etc) has expired; + - A control frame needs to be sent out; + - A stream needs to be serviced or created. + +Each of these use cases is handled by a single function: + + lsquic_engine_process_conns() + +The connections to which the conditions above apply are processed (or +"ticked") in the least recently ticked order. After calling this function, +you can see when is the next time a connection needs to be processed using + + lsquic_engine_earliest_adv_tick() + +Based on this value, next event can be scheduled (in the event loop of +your choice). + +Connection +---------- + +A connection is created using lsquic_engine_connect(). When on_new_conn() +is called, the client code should call lsquic_conn_make_stream() one or +more times. One new stream will be created for each one of those calls. + +Several auxiliary functions are available: + + - lsquic_conn_id() + - lsquic_conn_going_away() + - lsquic_conn_get_peer_ctx() + - lsquic_conn_get_stream_by_id() + - lsquic_conn_get_ctx() + + +Stream +------ + +LSQUIC stream hides QUIC and HTTP/2 framing complexities from the user. +What it presents is a way to send HTTP headers and, optionally, body to +peer. On read side, the user gets what looks like HTTP/1.1 stream. + +Expected usage for client is to express the desire to write to stream +using lsquic_stream_wantwrite() call. Once on_write() is called: + + 1. Write headers using lsquic_stream_send_headers() + 2. Optionally write payload body using of of lsquic_stream_write(), + lsquic_stream_writev(), or lsquic_stream_writef(). + +That done, shutdown write side using lsquic_stream_shutdown(), unregister +for write events and register for read events using lsquic_stream_wantread(). + +Read and parse HTTP/1.1 stream from on_read() callback until end-of-stream +or an error is encountered. + +Then unregister the read event and shutdown the read side. The stream will +be closed after that at some point and on_close() callback will be called, +at which point resources can be freed. (Internally, the stream object is +not destroyed until either all the packets carrying its data are ACKed or +the connection is destroyed). + +on_read() and on_write() callbacks are dispatched differently based on the +value of es_rw_once: + +If es_rw_once is false, then the callbacks are dispatched in a loop until +the user unregisters the event or the stream becomes unreadable (or +unwriteable). + +If es_rw_once is true, on_read() and on_write() are called once "per tick". +It is the up to the user to read and write enough data. + + +Events +------ + +Stream events are persistent: once call lsquic_stream_wantwrite() or +lsquic_stream_wantread(), the event stays active until turned off. + +Note that when an error is encountered (such as a stream reset), the +stream becomes readable and writeable: this allows user code to collect +the error. + + +Versions +-------- + +QUIC version are listed in enum lsquic_version. To specify a list of +versions, they are usually placed in a bitmask, e.g. es_versions. diff --git a/external/lsquic/BUILD-WINDOWS.md b/external/lsquic/BUILD-WINDOWS.md new file mode 100644 index 0000000..26c5b7c --- /dev/null +++ b/external/lsquic/BUILD-WINDOWS.md @@ -0,0 +1,110 @@ +LiteSpeed QUIC (LSQUIC) Library - Building for Windows +====================================================== + +Description +----------- + +This document is intended to supplement the document README.md at the +root of the distribution of the LiteSpeed QUIC (LSQUIC) Library +to build the library and programs in a Windows environment. + +The addition of Windows support to the LSQUIC was a contribution +from the user community and this document was based on our experiences +of validating the code. As for the overall implementation, do not hesitate +to report bugs back to us. Even better, continue to send us fixes and +improvements - it makes the code better for everyone. + + +Preliminaries +------------- +It it recommended that the installer have experience with Windows development, +Visual Studio, and open source projects in Windows. These instructions assume +a general build, primarily for 64-bit, both of a debug and a release version. + +Some open source code required to be installed to build the code include: + - The [Git version control system executable for Windows](https://git-scm.com/download/win). + - A version of the Visual Studio development environment for Windows. + The Windows SDK and C++ must be installed from it. The + [Visual Studio Community Edition](https://www.visualstudio.com/thank-you-downloading-visual-studio) will be just fine. + - [cmake for Windows](https://cmake.org/download/). Download and install the + version appropriate for the development/target platform (32 vs 64-bits, + etc.). + - The Windows vcpkg package manager. It can be cloned from [here](https://github.com/Microsoft/vcpkg). + Clone it at the same level to be used to clone/develop the lsquic. + The package must be compiled following the instructions on the git + repository. + - Perform builds using the _Developer Command Prompt for Visual Studio_ instead + of the regular `cmd.exe`. + - Once the package manager has been built, it must be used to install + and build some open source projects. Before doing that, an environment + variable must be defined which specifies how the package should be built. + The easiest way would be to add it into the system environment variables + in the System applet of the Windows Control Panel. This example assumes + 64-bit static libraries will be built, which is what is generally + recommended: + ``` + VCPKG_DEFAULT_TRIPLET=x64-windows-static + ``` + - From the command line, once the variable above has been defined, install + both *zlib* and *libevent*. Note that libevent may also automatically + install *openssl*. If it does not, it may need to be manually specified + to properly link the lsquic executables. + ``` + vcpkg install zlib:x64-windows-static + vcpkg install libevent:x64-windows-static + vcpkg integrate install + ``` + - Clone and compile boringssl. It can be cloned from [here](https://boringssl.googlesource.com/boringssl). + + ``` + git clone https://boringssl.googlesource.com/boringssl + cd boringssl + cmake -DCMAKE_GENERATOR_PLATFORM=x64 --config Debug -DBUILD_SHARED_LIBS=OFF -DOPENSSL_NO_ASM=1 . + msbuild ALL_BUILD.vcxproj + set boringssl=%cd% + ``` + - Visual Studio can be run, and the project opened within the boringssl + directory. Set the solution configuration to *Debug* and the solution + platform to *64-bit*. Compile the project. + - Repeat the cmake and compile steps replacing *Debug* with *Release*. + +Make and Compile LSQUIC +----------------------- + + +Clone lsquic: + + ``` + git clone https://github.com/litespeedtech/lsquic.git --recurse-submodules + cd lsquic + ``` + +Configure the build using cmake (you can specify `Release` instead of `Debug` +to build an optimized version of the library, but that won't build tests): + + ``` + cmake -DCMAKE_GENERATOR_PLATFORM=x64 -DBUILD_SHARED_LIBS=OFF ^ + -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_BUILD_TYPE=Debug ^ + -DCMAKE_TOOLCHAIN_FILE=c:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake ^ + -DBORINGSSL_DIR=%boringssl% . + ``` + +Compile everything (add `/m` flag if you have processors to spare): + + ``` + msbuild ALL_BUILD.vcxproj + ``` + +`http_client.exe` should be found in the `Debug` (or `Release`) directory. + +Run tests (assuming `Debug` build): + + ``` + msbuild RUN_TESTS.vcxproj + ``` + +Have fun, + +LiteSpeed QUIC Team. + +Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc diff --git a/external/lsquic/CHANGELOG b/external/lsquic/CHANGELOG new file mode 100644 index 0000000..54da316 --- /dev/null +++ b/external/lsquic/CHANGELOG @@ -0,0 +1,1774 @@ +2025-07-17 + - 4.3.1 + - Fix a memory leak in lsquic_engine_packet_in() + +2025-06-17 + - 4.3.0 + - Add WebTransport support. + - Fix IETF QUIC IP spoofing amplification attack. + - Improve preferred address migration implementation, pass interop tests. + - Add lsquic_conn_get_info() API to retrieve information about a connection. + +2025-02-18 + - 4.2.0 + - Address hash flood attack for lsquic_hash by switching to rapidhash with stronger random seed. + - Fix packet packing problem for post-quantum support. + - Add configuration to control version negotiation and amplification factor. + +2024-12-16 + - 4.1.0 + - Update to ls-qpack v2.6.1 to fix a infinite loop. + - Add lsquic_engine_get_conns_count() API + - Updated ea_generate_scid() API + - Fix retry packet SCID generation to follow engine API. + - Fix QUICv2 header protection key when retry packet is involved. + +2024-09-23 + - 4.0.12 + - Fix stream WANT_WRITE flag that causes busy looping. + +2024-09-09 + - 4.0.11 + - Fix assert failure related to splitting a large packet. + +2024-07-02 + - 4.0.10 + - Fix server initial packet padding. + - Fix a handshake failure corner case due to packet corruption. + +2024-06-12 + - 4.0.9 + - Fix bpq_count (issue #504). + +2024-03-12 + - 4.0.8 + - Fix RETIRE_CONNECTION_ID frame abuse. + - Fix some assert failures. + +2024-02-28 + - 4.0.7 + - Fix overly strict 0-RTT packet DCID validation. + - Update docker build. + +2024-02-23 + - 4.0.6 + - Fix ACK handling. + - Do not apply congestion control to CONNECTION_CLOSE frame. + +2024-02-07 + - 4.0.5 + - Fix CPU spinning due to STREAM_BLOCKED frame. + +2024-01-08 + - 4.0.4 + - Fix DCID validation. + - Fix CPU spinning due to pending STREAM_BLOCKED frame. + +2023-12-25 + - 4.0.3 + - Fix session resumption bug introduced in 4.0.2. + +2023-12-19 + - 4.0.2 + - More strict RFC compliance. + - Minimize packet generated when send STREAM_BLOCKED frame + - Fix memory management bugs. + - Fix memory leak in unit tests. + +2023-05-14 + - 4.0.1 + - Fix send_ctl bug. + - Make logid consistent + - Reduce memory usage for storing CIDs. + +2023-03-14 + - 4.0.0 + - Add support for QUICv2 (RFC9369). + - Add support for version negotiation (RFC9368). + - Retry packet for address validation. + - Improve handshake under high packet loss/corruption. + - Improve QUIC interop results + +2023-01-26 + - 3.3.1 + - Fix blocked header encoding stream due to connection flow control congestion. + - Fix qeh_write_headers bug for Windows. + - Fix corner case for packet resizing. + +2023-01-04 + - 3.3.0 + - Improve path validation logic to avoid sending padded packet to unverified + peer, follow 3X anti-amplification rule. + - Optimize application callback when STOP_SENDING frame is received. + - Improve new connection callback logic. + - Improve handling of a closed connection. + - Update BoringSSL to the most recent version. + - Fix memory leaks in gquic handshake and packet handling. + - Update ls-qpack to 2.5.1, ls-hpack to 2.3.1 to address compiler warnings + +2022-10-20 + - 3.2.0 + - Update ls-qpack to 2.5.0 to address a decoder bug + - Assertion failure if poison packet was acked + - Fix packet_in pool memory leak + +2022-08-16 + - 3.1.2 + - Update ls-qpack to 2.4.0 to address a use-after-free bug + - Address a few corner cases that trigger assert failures. + - Properly handle unexpected large packet for gQUIC. + - Fix memory leak in shared hash interface + - Fix IPv6 MTU detection + - Fix wrong size used in packet regeneration. + +2022-05-13 + - 3.1.1 + - Fix memory leak in processing stream frames (isse #368) + +2022-05-06 + - 3.1.0 + - Better handling of transport parameter max_table_capcity < 32 + - Fix NULL pointer dereference in handshake + - Fix 0-RTT transport parameter validation (issue #367) + - Remove unnecessary debug log to avoid NULL pointer dereference + - Tick connection on datagram write (pull #314) + - Do not dispatch write event for FINISHED stream + - Tweaks for CMake configuration (pull #354 #369 #370 #373 #374) + - Update ls-qpack to 2.3.0 + +2022-01-10 + - 3.0.4 + - Fix overly strict assert() + - Do not reset path MTU due to three lost_mtu_probe + - Fix handshake failure due to too many realy data + - Better build support for Windows platform + - Update ls-qpack to 2.2.3 + +2021-09-30 + - 3.0.3 + - Generate ACK for DATAGRAM frame while avoid RETX (issue #312 #325). + - Fix BBR end of startup phase detection (issue #328). + - Fix HTTP/3 v1 retry handling (issue #332) + - Fix memory leak when reset dcid (issue #333) + - Fix double decrement for ifc_active_cids_count (#334) + - Fix uninitialized value in frame_reader/frame_writer (#316) + - Remove a few overly strict asserts. + +2021-06-16 + - 3.0.2 + - Do not timeout connection if peer sends PING frames. + - Do not assert for MTU probe packet when cancel a path. + +2021-06-16 + - 3.0.1 + - Only force TICK_CLOSE flag after received CONNECTION_CLOSE frame. (issue #292 #281) + - Avoid mismatch in packet parsing. (issue #262) + - Remove unnecessary shi_delete call. + +2021-06-02 + - 3.0.0 + - Enable HTTP/3 v1 by default, drop draft 34. + - Prevent connection timeout when client does not send PING frame. + - Close connection ASAP after recieve CONNECTION_CLOSE (issue #284) + - Do not assert() when decode a trailer. + - Properly handle GOAWAY frame, do not close the last acknowledged stream. + +2021-04-20 + - 2.30.2 + - Update ls-hpack to 2.3.0 to address dynamic table size limit (issue #260). + +2021-04-16 + - 2.30.1 + - Fixed an unintialized data member for handling pushed headers. + - Added a new status code for version negotiation failure. + - Fixed a few compliance issues found by h3spec. + - Addressed high CPU usage when transport cannot send pending packets. + +2021-04-12 + - 2.30.0 + - Added support for sending/receiving multiple headers to address the + case related to "100 continue" header handling. + - Addressed high CPU usage for a GOAWAY connection before sending + CONNECTION_CLOSE. + - Addressed SIGFPE due to zero pacing rate. (ISSUE #254). + - Fixed a minor issue related to multi-paths. + +2021-03-31 + - 2.29.6 + - Documentation: describe lsquic internals ("guts"). + - Two more fixes to compliance issues found by h3spec. + - Truncate, don't abort, SCIDs larger than 16 bytes (PR #244). + - Several small internal improvements and space optimizations. + +2021-03-17 + - 2.29.5 + - Fix a few issues detected by h3spec for better compliance with HTTP/3 + standard. + +2021-03-08 + - 2.29.4 + - [BUGFIX] Infinite loop in stream: returned HQ frame can be at any + point on the list. + - [BUGFIX] Fail push promise immediately if STREAM_NOPUSH is set. + +2021-03-03 + - 2.29.3 + - [BUGFIX] Do not send RESET_STREAM if writing to stream is already + finished. + - perf_client: wait for all ACKs before exiting. + - Improve how generated RESET_STREAM is logged. + - Fix compilation in different combos of adv_tick/conn_stats flags. + - Move qpack warning disablement into src/liblsquic/CMakeLists.txt. + +2021-02-23 + - 2.29.2 + - Fix regression in gQUIC server: bug #234. + +2021-02-18 + - 2.29.1 + - Make it possible to build the library and unit tests without + libevent. + - Build all command-line utilities in bin/ + - Add perf_client and perf_server command-line utilities to test + performance according to the "perf" protocol. + +2021-02-10 + - 2.29.0 + - [FEATURE] QUIC and HTTP/3 Internet Draft 34 support and v1 support. + The latter is turned off by default. + - Drop support for ID-28 and ID-32. + - [BUGFIX] IETF QUIC mini conn receive history (trechist): allow + unlimited inserts by dropping smallest elements. + - [BUGFIX] gQUIC: set STTL to correct value, issue #226. + - [BUGFIX] Account for poison packet gap when MTU probe was too large. + +2021-02-03 + - 2.28.0 + - [API] lsquic_ssl_sess_to_resume_info() is the new way to get + session info. + - [API] Add user pointer to ea_generate_scid callback. + - [API] Add lsquic_dcid_from_packet() -- a fast function to parse + out DCID. + - [API] Add es_max_batch_size to control outgoing packet batch size. + - [BUGFIX] Disallow sending of header while promise is being written. + - [BUGFIX] Flush stream when buffered bytes exhaust stream cap. + - [BUGFIX] Deactivate HQ frame if writing push promise fails. + - Perform sanity check on peer transport parameters and fail the + handshake if some flow control limits are too low. This can be + turned off, see es_check_tp_sanity. + - http_server: fix how requests are read in "hq" mode. + +2021-01-27 + - 2.27.6 + - [BUGFIX] Replace dispatch read/write events assertion with a check. + - [BUGFIX] gQUIC connection close: there is no HEADERS stream without + HTTP flag, see issue #220. + - http_client, http_server: add hq protocol support and other flags + for use with QUIC Interop Runner. + - Fix: use IP_PMTUDISC_PROBE (not IP_PMTUDISC_DO) on Linux to set + Don't-Fragment flag on outgoing packets. + - Fix send_packets_one_by_one on Windows platform when sending + multiple iovs, see issue #218. + - Exit echo_client on Windows immediately, see issue #219. + +2021-01-18 + - 2.27.5 + - [BUGFIX] Assertion in send controller when path validation fails. + - [BUGFIX] Assertion in BBR when sending out-of-order packets is + detected. + - [BUGFIX] Drop overflow receive history ranges when cloning. + - Log correct size of the incoming packet. + - Fix internal stream function. + +2021-01-13 + - 2.27.4 + - [API] Add lsquic_conn_get_sni(), fixes issue #203. + +2021-01-08 + - 2.27.3 + - [BUGFIX] gQUIC: do not destroy critical streams when connection is + closed. See issue #201. + - [BUGFIX] Drop #if LSQUIC_CONN_STATS from lsquic.h. See issue #211. + - [BUGFIX] Challenge cancellation when path validation fails. + - [BUGFIX] Do not send FIN if RST is scheduled to be sent on a stream. + - [BUGFIX] gQUIC's is_tickable() when connection is closing. + - [BUGFIX] Q050 processing of GOAWAY frames. + +2021-01-06 + - 2.27.2 + - [BUGFIX] Memory corruption in receive history copy-ranges function. + +2021-01-06 + - 2.27.1 + - [API] New knob to set outgoing packet batch size. + - Aborted connection now become tickable immediately. + - Abort connection when HTTP/3 frame cannot be opened (can only happen + when malloc fails). + +2020-12-31 + - 2.27.0 + - [API] Remove keylog callbacks. See issue #188. + - Add a bit more ALPN logging. + +2020-12-23 + - 2.26.2 + - [BUGFIX] Do not drop incoming data when STOP_SENDING is received. + - [BUGFIX] Receipt of STOP_SENDING should not cause read-reset. + - [BUGFIX] Allow stream writes after receiving RESET. + - [BUGFIX] Typo in stream: ANDing enum with wrong flag. + - [BUGFIX] Reset elision: do not use zero as special stream ID value, + for zero is a valid stream ID in IETF QUIC. + - [API] Add optional on_conncloseframe_received() callback. + - Use zero error code in RESET stream sent in response to STOP_SENDING. + +2020-12-17 + - 2.26.1 + - [BUGFIX] Migration corner cases: drop or pad over path challenge + and response frames when necessary. + - Fix stream unit test. + +2020-12-09 + - 2.26.0 + - [OPTIMIZATION] Adjust packet reordering threshold when spurious losses + are detected. + - [API] Pass pointer to local sockaddr to ea_get_ssl_ctx() callback. + +2020-12-04 + - 2.25.0 + - [API, FEATURE] Add es_delay_onclose option to delay on_close until all + data is ACKed. Use new function lsquic_stream_has_unacked_data() to + learn whether peer acknowledged all data written to stream. + - [API] Add optional on_reset() stream callback to get notifications + when RESET or STOP_SENDING frames are received. + - [BUGFIX] On STOP_SENDING, make conn tickable is _writeable_, not + readable. + +2020-11-24 + - 2.24.5 + - [FEATURE] Improve Delayed ACKs extension and turn it on by default. + - Limit receive history to a finite amount of memory. + +2020-11-18 + - 2.24.4 + - [BUGFIX] Check whether ECN counts are set in ACK struct before using + them. + - [BUGFIX] Calculate TLP timer correctly when only one packet is in + flight. + - [BUGFIX] Min RTO delay is 200 milliseconds, not 1 second. + - [BUGFIX] Memory leak in QPACK decoder handler: discard hset when + necessary. + - Allow retired and drained CIDs to be reused after a timeout. + +2020-11-11 + - 2.24.3 + - [BUGFIX] Get rough RTT estimate on receipt of Handshake packet. + This prevents BBR on the client from miscalculating pacing rate, + slowing down sending of ACK packets. + - [BUGFIX] Packets sent during handshake are app-limited. + - [BUGFIX] Bandwidth sampler starts in app-limited mode. + - [BUGFIX] Memory leak: free QPACK handler context in stream dtor. + - Logging improvements. + +2020-11-05 + - 2.24.2 + - [BUGFIX] Allow peer to migrate when its SCID is zero-length. + - [BUGFIX] PADDING size calculation: only one Short packet can be + coalesced. (This should have been part of the fix in 2.24.1). + - Abort connect if received NEW_CONNECTION_ID but current DCID is + zero-length. + - Improve log messages + +2020-11-04 + - 2.24.1 + - [API] Allow use of ea_get_ssl_ctx() on the client (optional). PR #186. + - [BUGFIX] Expand datagram with ack-eliciting Initial to 1200 bytes + after connection promotion. + - [BUGFIX] Discard CRYPTO frames from lower encryption levels after + connection promotion. + - [BUGFIX] Cancel path response if path could not be initialized. + +2020-10-28 + - 2.24.0 + - [FEATURE] QUIC and HTTP/3 Internet Draft 31 support. Drop ID-30 + and ID-31 support. + - [BUGFIX] Divide-by-zero in newly enabled conn stats code when no + packets were sent. + - [BUGFIX] Memory leak in gQUIC client when server hello cannot be + parsed. + - [BUGFIX] Server Initial packet size calculation. + - Log user-agent and CONN_CLOSE reason when peer reports error. + - Example programs: Specify ALPN for echo and md5 clients and servers + (issue #184). + - Example programs: Don't add "QUIC_" prefix to lines in keylog file + (issue #185). + - http_server: Fix fd leak in preadv mode; fix preadv() usage when + reading from disk. + +2020-10-22 + - 2.23.3 + - [BUGFIX] Update packetization threshold when writing to stream + after packet size is reduced following an RTO. + +2020-10-21 + - 2.23.2 + - Add QPACK stats collection and experimentation mode, see the new + es_qpack_experiment setting. + - Log busy connection stats every second using the new "conn-stats" + log module. + - Log about skipping only once. + - Update HTTP/3 greased frame type formula. + - Use ls-qpack v2.2.1. + +2020-10-13 + - 2.23.1 + - [FEATURE] IETF Client 0-RTT support. + - [BUGFIX] Do not schedule MTU probe on first tick. + - [BUGFIX] Parsing DATAGRAM frame. + - [BUGFIX] If push promise fails, do not invoke hset destructor. + - [BUGFIX] Client: When connections are IDed by port number, check DCID. + Fixes issue #176. + - [BUGFIX] Regression introduced in 2.22.0: use correct number of + PNSs for IETF mini conn during promotion. + - Revert the 2.22.1 lsquic_is_valid_hs_packet change. All that was + necessary is a change to the way we call it in lsquic_engine. No + change to the function itself is required. + +2020-10-08 + - 2.22.1 + - [BUGFIX] Function that checks validity of handshake packets. + +2020-10-07 + - 2.22.0 + - [FEATURE] Extensible HTTP Priorities (HTTP/3 only). + - [FEATURE] Add conn context to packet-out memory interface (PR #175). + - [BUGFIX] gQUIC proof generation: allocate buffer big enough for + signature (issue #173). + - [BUGFIX] Make library thread-safe: drop use of global variables + (issue #133, issue #167). + - [BUGFIX] Deactivate only *recent* HQ frame, not any HQ frame. + - [BUGFIX] gQUIC server: associate compressed cert with SSL_CTX, + instead of keeping them in a separate hash, potentially leading + to mismatches. + - [BUGFIX] Stream data discard infinite loop: break on FIN. + - cmake: add install target via -DCMAKE_INSTALL_PREFIX (PR #171). + - Support randomized packet number to begin a connection. + - Mini and full IETF connection size optimization. + - http_client: specify HTTP priorities based on stream conditions. + +2020-09-29 + - 2.21.0 + - [FEATURE] QUIC and HTTP/3 Internet Draft 31 support. + - [API] Let user generate Souce Connection IDs. + - [FEATURE] Allow building lsquic as shared library. + - [OPTIMIZATION] Receive history: use a single contiguous memory + block for everything. + - Deprecate QUIC versions ID-27 and ID-30. + +2020-09-25 + - 2.20.2 + - [BUGFIX] Memory leak: free pushed promise when refcnt is zero. + - [BUGFIX] Memory leak in IETF full conn dtor: cleanup closed IDs sets. + +2020-09-23 + - 2.20.1 + - [BUGFIX] Typo in new "validate peer addr by DCID" code. It is + a benign bug (works either way), but better to fix it. + - Simplify Stream Priority Iterator (SPI). + - Minor documentation updates. + +2020-09-15 + - 2.20.0 + - [FEATURE] QUIC and HTTP/3 Internet Draft 30 support. + - [FEATURE] Unreliable Datagram Extension support. + - [FEATURE] Adaptive congestion controller. + - [BUGFIX] Do not send MAX_STREAM_DATA frames on crypto streams. + - [BUGFIX] Fail with CRYPTO_BUFFER_EXCEEDED when too much CRYPTO + data comes in. + - [BUGFIX] Spin bit is now strictly per path; value is reset on + DCID change. + - [BUGFIX] Check that max value of max_streams_uni and + max_streams_bidi TPs is 2^60. + - [BUGFIX] Close IETF mini conn immediately if crypto session + cannot be initialized. + - Deprecate ID-28 (no browser uses it): it's no longer in the + default versions list. + - New programs duck_server and duck_client that implement the + experimental siduck-00 protocol. They quack! + - IETF crypto streams: don't limit ourselves from sending. + - Command-line programs: turn off QL loss bits if -G is used, as + Wireshark cannot decrypt QUIC packets when this extension is used. + - Turn all h3 framing unit tests back on. + - Fix malo initialization when compiled in no-pool mode. + +2020-09-08 + - 2.19.10 + - [FEATURE] Add lsquic_stream_pwritev(). This function allows one to + reduce the number of system calls required to read a file from disk + by using lsquic_stream_pwritev() together with preadv(2). + - [BUGFIX] When stream is reset, it is writeable -- let user collect + the error. + - [BUGFIX] Calculate correct conn flow control if reading ends early. + - [BUGFIX] Remove stream from read and write queues on internal + shutdown. This is a regression introduced in 2.19.7. + - [BUGFIX] Swapped arguments in IETF RESET_FRAME generation. + - Turn off mini conn history when compiling with Visual Studio; this + allows the project to compile on Windows again. + - http_client: Add -3 flag to stop reading from streams early; code + cleanup. + - Don't use -Werror. + +2020-09-02 + - 2.19.8 + - [FEATURE] Update the timestamp extension to latest version. + - [FEATURE] Cope with appearance of ECN blackholes. + - [OPTIMIZATION] return packno offset and size when header is generated. + - [BUGFIX] ignore old ACK frames in mini conns. + - [BUGFIX] Mark initial server path as initialized. + - [BUGFIX] Do not merge ACK if ECN counts do not match. + - Turn incoming packet number history in mini conn back on. + - Record mini conn event history again when compiled in debug mode. + - IETF mini conn: log when ACK is queued. + - Clean up and refactor code in several places. + +2020-08-26 + - 2.19.7 + - Handle ECT-CE event: issue a loss event. + - Log the fact that we ignore SETTINGS_MAX_HEADER_LIST_SIZE. + - Use Max Push ID in GOAWAY frame to cancel promises. + - Add support for HTTP/3 CANCEL_PUSH frame. + - lsquic_stream_is_pushed: streams without headers are never pushed. + - [BUGFIX] Regression in lsquic_stream_shutdown_internal: now it shuts down. + - Improve logic whether to generate CONNECTION_CLOSE. + +2020-08-20 + - 2.19.6 + - Don't process incoming ECN marks if ECN is not enabled. + - Schedule ACK when incoming packet is marked with CE. + +2020-08-11 + - 2.19.5 + - [BUGFIX] Generate frame record when moving an ACK from one buffered + packet to another. + +2020-08-06 + - 2.19.4 + - [BUGFIX] Do not return an oversize MTU probe to connection twice. + - [FEATURE] Delayed Acks updated to latest draft. Still experimental. + - Minor code cleanup in IETF full connection. + +2020-08-04 + - 2.19.3 + - [BUGFIX] Regression in 2.19.1 that breaks Q050 + +2020-07-30 + - 2.19.2 + - [BUGFIX] Do not reduce PLPMTU size by network overhead. + - [BUGFIX] Windows build. + +2020-07-29 + - 2.19.1 + - [FEATURE] DPLPMTUD support. IETF connections now search for the + maximum packet size, improving throughput. + - [DEBUG] Record event in stream history when on_close() is called + in dtor. + +2020-07-22 + - 2.18.2 + - [BUGFIX] Send prediction: lone path challenges do not get squeezed out + - Fix crash in http_client: now -K and -B can be used simultaneously + +2020-07-14 + - 2.18.1 + - [FEATURE] Implement the "QUIC bit grease" extension. + - [BUGFIX] Selecting CID used for logging on client. + - [BUGFIX] Header protection assertion. + - [BUGFIX] Server: enable SSL key logging when cert lookup callback + is not set. + - Remove some dead code. + +2020-07-06 + - 2.18.0 + - [API] Rename "0-RTT" to "session resumption." In IETF QUIC, "0-RTT" + always refers to early data, meaning a request that the server can + reply to in the very first return flight. A more appropriate name + for what we support on the client site is "session resumption," which + is standard TLS terminology. Later, when we add support for 0-RTT + (early data), we can use the 0-RTT terminology again, this time in + proper context. + - [BUGFIX] Do not set certificate callback if ea_lookup_cert is NULL. + - [BUGFIX] Make connection tickable when it's marked as closed. + - [BUGFIX] Fail certificate lookup if SNI is not present in HTTP mode. + - Several documentation fixes and improvements. + - Minor code cleanup. + +2020-06-24 + - 2.17.2 + - [BUGFIX] Infinite loop in stream: advance read offset when discarding + data. + - [OPTIMIZATION] Header protection: only initialize cipher once. + - [OPTIMIZATION] Batch header protection application. + +2020-06-18 + - 2.17.1 + - [FEATURE] QUIC and HTTP/3 Internet Draft 29 support. + - [BUGFIX] Check that scheduled packets are also sendable when + calculating a connection's "tickable" property. + - [BUGFIX] Don't count scheduled packets as in-flight when pacer is + checked on tick. + - gQUIC: delay calling on_new for pushed stream until headers are + available. + - Allow nested calls to lsquic_engine_connect(). + +2020-06-15 + - 2.16.3 + - [OPTIMIZATION] Stash up to two reordered packets in IETF mini conn + instead of dropping them. + - [BUGFIX] Crash: check decrypt context before using it. This regression + was introduced in 2.16.2. + +2020-06-12 + - 2.16.2 + - [BUGFIX] ID-28: do not use TLS middlebox compatibility mode in + ClientHello. This change requires using a newer version of BoringSSL. + - [BUGFIX] Free connections in Advisory Tick Time Queue in engine dtor. + - [BUGFIX] IETF QUIC client: narrow migration check to a single path. + - [BUGFIX] NULL dereference: set function pointers for alarm for path + challenges 2 and 3. + - [BUGFIX] HTTP/3 headers may be followed immediately by trailers. + - [BUGFIX] Log messages when SCID changes. + +2020-06-09 + - 2.16.1 + - [FEATURE] Use "no-progress timeout" after which connection is closed. + - [BUGFIX] Select new SCID when current SCID is retired. + - [BUGFIX] Don't warn about dropped Initial packet sequence gaps during + mini/full handoff. + - [BUGFIX] Send correct conn error when HTTP/3 frame is truncated. + - [BUGFIX] Mini conn: consider amplification when deciding to return + TICK_SEND. + - [BUGFIX] Don't double-count tag length in amplification logic. + - [BUGFIX] Don't squeeze out lone path challenges. + - [BUGFIX] Log messages dealing with scheduled packet queue squeezing. + - [BUGFIX] don't wipe current path if no path challenge responses + come back. + - [BUGFIX] When path is reset, don't lose path_id which is used for + logging. + - Downgrade flow control violations to info log level from warnings. + - Fix connection cap extra check, avoid checks in nested calls. + - Fix some unit tests when extra checks are enabled. + - Use ls-hpack 2.2.1. + - Turn off unconditional extra checks for IETF clients. + - Extra checks: don't verify sent size of hello packets. Client + changes DCID length and this check will fail. + +2020-06-03 + - 2.16.0 + - [API] Use lsxpack_header v206. + - [FEATURE] Windows supported. + - [BUGFIX] Fix uninitialized variable use in client (regression in + 2.15.0). + - Use ls-hpack 2.2.0. + - Use ls-qpack 2.2.0. + - Sample programs: fix the way maximum number of packets is + calculated. + - Remove some dead code. + +2020-05-27 + - 2.15.0 + - [FEATURE] QUIC and HTTP/3 Internet Draft 28 support. + - [BUGFIX] Ignore Retry packets after other packets are decrypted + successfully. + - [BUGFIX] Transport parameter decoding: CID no longer has 4-byte + length minimum. + - http_client: fix and optimize lsxpack_header allocator. + - Drop support for Internet Draft 25. + +2020-05-19 + - 2.14.8 + - Support Android. + - Rerrange tree: move command-line examples into bin/ and unit + tests into tests/ from test/unittests/. + +2020-05-12 + - 2.14.7 + - [BUGFIX] ALPN-to-version mapping: do not skip h3-Q050. + - [BUGFIX] Frame reader: skip headers if target stream is closed. + +2020-05-06 + - 2.14.6 + - [BUGFIX] Fix amplification mitigation in 0-RTT case. + - [BUGFIX] IETF mini connection should not tickable if cannot send + a packet due to amplification. + - [BUGFIX] Fail if active_connection_id_limit TP is smaller than 2. + - [BUGFIX] Qlog server certificates for IETF QUIC connections. + - [BUGFIX] Uninitialized struct padding usage in tokgen (benign). + - [BUGFIX] Incorrect argument to shi_lookup() (benign). + +2020-04-29 + - 2.14.5 + - [BUGFIX] In coalesced datagram, ignore packets whose CID does not match. + - [BUGFIX] Frame reader: skip headers if target stream is not found. + - [BUGFIX] Log message in QPACK decoder handler. + +2020-04-24 + - 2.14.4 + - [BUGFIX] Heed es_rw_once for pushed HTTP/3 streams. + - [BUGFIX] IETF client: set correct flags on bidirectional streams. + - [BUGFIX] Generate Cancel Stream QPACK instructions for abandoned + streams. + - [BUGFIX] Do not call header callbacks after stream is closed. + - Use ls-qpack 2.1.1 + +2020-04-15 + - 2.14.3 + - [BUGFIX] gQUIC: pass correct stream to hsi_create_header_set() callback. + - [BUGFIX] Use ls-hpack 2.1.1 + - Improve stream code readability. + - Use ls-qpack 2.0.5 + +2020-04-08 + - 2.14.2 + - [BUGFIX] Use ls-qpack 2.0.4 + - [BUGFIX] Honor max packet size on the client and when path changes. + - http_server: fix prepare_decode() function. + +2020-04-07 + - 2.14.1 + - [BUGFIX] Place connections on tickable queue when sending is reenabled. + - [BUGFIX] A connection is tickable if it has unsent packets. + - [BUGFIX] Heed peer's max_packet_size transport parameter. + +2020-03-30 + - 2.14.0 + - [API] Use lsxpack_header structure to send HTTP headers. + - [OPTIMIZATION] nocopy's readable_bytes() function. + - http_server: fix typo in error message + - Use ls-hpack 2.1.0. + - Use ls-qpack 2.0.0. + +2020-03-23 + - 2.13.3 + - [BUGFIX] ACK ping-pong: TIMESTAMP frame is not to be acked. + +2020-03-13 + - 2.13.2 + - [BUGFIX] Use of new lsxpack_header API's hsi_prepare_decode(). + +2020-03-12 + - 2.13.1 + - [API] Use lsxpack_header structure to process incoming headers. + - [BUGFIX] Fix assertion when zero-padding Initial packet. + - [BUGFIX] Use idle timeout before we learn of peer's value. + - Use ls-hpack 2.0.1 -- has lsxpack_header changes. + - Use ls-qpack 0.14.0 -- new, common with ls-hpack, XXH seed (not + used yet). + - Code cleanup: prefix exported functions with "lsquic_". + +2020-03-02 + - 2.12.0 + - [FEATURE] QUIC timestamps extension. + - [API] New: ea_alpn that is used when not in HTTP mode. + - [BUGFIX] SNI is mandatory only for HTTP/3 and gQUIC. + - [BUGFIX] Benign double-free -- issue #110. + - [BUGFIX] Printing of transport parameters. + +2020-02-24 + - 2.11.1 + - [FEATURE] QUIC and HTTP/3 Internet Draft 27 support. + - [FEATURE] Add experimental delayed ACKs extension. + - Drop support for Internet Draft 24. + - Code cleanup. + +2020-02-14 + - 2.10.6 + - [BUGFIX] HTTP/3 framing: don't misinterpret rare occurence as error. + - [BUGFIX] Send gap warning due to missing poisoned packet. + - Stream unit test for scenario in issue #106. + +2020-02-13 + - 2.10.5 + - [BUGFIX] BBR: call cci_sent() with correct arguments and at correct + time. + - Refactor transport parameters module. + - Minor code cleanup. + +2020-02-11 + - 2.10.4 + - [BUGFIX] Send HANDSHAKE_DONE only after Finished is received. + - [BUGFIX] Don't treat garbage UDP padding as library error; ignore + it instead. + - [BUGFIX] Fix compilation on FreeBSD (missing header). + - Code cleanup: remove unnecessary #includes. + +2020-01-31 + - 2.10.3 + - [BUGFIX] Cancel path responses and challenges on old path when + switching to new path + - Logging network path information. + +2020-01-30 + - 2.10.2 + - [BUGFIX] Do not delay ACKs for Initial and Handshake packets. + - [BUGFIX] Send PATH_CHALLENGE if path changed before mini conn + promotion. + - Logging improvements. + - http_client: discard data faster. + +2020-01-29 + - 2.10.1 + - [BUGFIX] Coalesced packets could get longer than normal packet + size. + - Add spin bit configuration option es_spin (-o spin=[01]). + - Disable spin bit in 1/16 of connections. + - Improve logging a bit. + +2020-01-28 + - 2.10.0 + - [FEATURE] QUIC and HTTP/3 Internet Draft 25 support. + - [API] Drop support for ID-23. + - [BUGFIX] Set key phase bit on outgoing packets correctly. + - Code cleanup. + +2020-01-20 + - 2.9.0 + - [API] Drop support for Q039. + - Improve ACK-queuing logic. Send an ACK once in a while if + peer keeps on sending non-ack-eliciting packets. + - Improve Alt-Svc string: Q050 and later are not included in + the old-style "quic" string. + - Send stateless resets if connection could not be promoted. + - Schedule MAX_DATA if needed when DATA_BLOCKED is received. + - Use ls-qpack 0.11.2 -- needed for server push optimization. + - Code cleanup: handle some error cases, improve logging. + +2020-01-16 + - 2.8.9 + - [BUGFIX] Use ls-qpack 0.11.1 + - [OPTIMIZATION] Generate random bytes in batches. + - Change loss_bits transport parameter ID to 0x1057 following + latest draft. + - Randomize period with which PINGs are sent to elicit ACKs. + - Some refactoring and code cleanup. + +2020-01-14 + - 2.8.8 + - [BUGFIX] Invalid read when parsing IETF transport parameters + (this was benign). + - [OPTIMIZATION] Frame bundling when using buffered packets in + IETF QUIC: a) flush QPACK decoder stream and b) include ACKs + in opportunistic fashion. + - Fix HTTP/3 framing unit test. + - Code cleanup. + +2020-01-09 + - 2.8.7 + - [BUGFIX] Initial packet size check for IETF mini conn applies to + UDP payload, not QUIC packet. + - Support old and new school loss_bits transport parameter. + - Use Q run length of 64 as suggested in the loss bits Draft. + - Undo square wave count when packet is delayed. + - Code cleanup; minor fixes. + +2020-01-06 + - 2.8.5 + - [HTTP3] Verify number of bytes in incoming DATA frames against + content-length. + - [HTTP3] Stop issuing streams credits if peer stops opening QPACK + decoder window. This addresses a potential attack whereby client + can cause the server to keep allocating memory. See Security + Considerations in the QPACK draft. + - [BUGFIX] Mini conn: don't shorten max packet size for Q050 and later. + - [BUGFIX] Init IETF connection flow controller using correct setting. + - [BUGFIX] Fix unintended sign extension when removing header protection. + - Code cleanup and minor fixes. + +2019-12-30 + - 2.8.1 + - [FEATURE] Use occasional packet number gaps to detect optimistic + ACK attacks. + - [BUGFIX] Q050 client: all packet numbers are in the App PNS. + - [OPTIMIZATION] Merge multi-range ACK frames, not just single-range + ACK frames. + - IETF QUIC: use RTT estimate in ack timeout calculation. + - IETF handshake: abort conn when unexpected errors occur. + - Use PING rather than MAX_DATA frames to elicit ACKs from peer. + - Server: enforce 1200 byte Initial minimum packet size. + - [CLEANUP] Remove code to disable gQUIC crypto. + - [CLEANUP] Remove n_timestamps from ACK info struct. + - Optimize driver: reuse previous ancillary message when possible. + +2019-12-23 + - 2.8.0 + - [FEATURE] Add support for Q050. + - [OPTIMIZATION] Reduce mallocs in gQUIC handshake. + - [BUGFIX] Disable redo of failed STREAM frame insertion with debug + logging. + +2019-12-18 + - 2.7.3 + - [DEBUG] Further dedup next advisory tick messages when reason is + the same. + - [BUGFIX] Update size of `a` array in TP struct. Fixes (benign) + GitHub bug #94. + - Use Cubic by default again instead of BBR, as it delivers more + consistent performance. + +2019-12-11 + - 2.7.2 + - [BUGFIX] Send controller: update scheduled bytes when DCID length + changes (IETF client). + - [BUGFIX] Drop alarm check from sanity test. It no longer works now + that we use loss chains. + - [PORTABILITY] Fix build on Alpine Linux. + - [PORTABILITY] Fix build using XCode. + - Client initial DCID length: use RAND_bytes() instead of rand(3). + - Add unit tests for connection min heap. + - [DEBUG] Log CID in gQUIC handshake module + - [DEBUG] Turn on extra checks for IETF client send controller. + - [DEBUG] Dedup next advisory tick messages when reason is IDLE timer. + - [DEBUG] QPACK decoder handler: log header error code. + +2019-12-05 + - 2.7.1 + - [BUGFIX] client: don't call ignore_init() in middle of batch send. + ignore_init() makes an assumption that the send controller has access + to all outgoing packets. This change wraps a few IETF full connection + methods to delay calling ignore_init() until the engine returns all + outgoing packets that were batched. + - [BUGFIX] set errno to EAGAIN if sendmmsg() can't send all of them. + This needs to be done because the value of errno may be lost on + some platforms. + - [BUGFIX] Typo that set all bits in sm_qflags lead to crashes. + - [BUGFIX] Do not cancel header block processing after failure, as + QPACK releases the reference in that case. + - [CLEANUP] IETF encrypt: replace assert(0) with a warning. + - Several small improvements to the test server. + +2019-11-27 + - 2.7.0 + - [API, FEATURE] Close connection immediately when ea_packets_out() + fails with errno != EAGAIN. The API change is that errno is now + examined. Make sure to set it if using something other than + sendmsg() to send packets. + - [CLEANUP] Immediate close logic in IETF full conn. + - [CLEANUP] Fix bogus warning about uninitialized `pair' variable. + +2019-11-22 + - 2.6.7 + - [FEATURE] Implement the QL extension (offered by default). + - [BUGFIX] Abort when encountering unexpected HTTP/3 frames. + - [BUGFIX] Acknowledge (QPACK) HTTP/3 trailers correctly. + - [DEBUG] Turn on debug message for next advisory tick. + +2019-11-20 + - 2.6.6 + - [BUGFIX] Using HTTP/3 to HTTP/1.x converter. + - [BUGFIX] Truncate log messages instead of throwing them away. + +2019-11-15 + - 2.6.5 + - [BUGFIX] High priority buffered packet queue length. + - [BUGFIX] Rain time calculation: max_ack_delay is in milliseconds. + +2019-11-12 + - 2.6.3 + - [BUGFIX] Close DATA frames with empty payload correctly. + +2019-11-11 + - 2.6.2 + - [BUGFIX] SCID!=ODCID rule applies to Retry packets, not regular + packets. + - [BUGFIX] Zero-RTT: BoringSSL no longer flips read/write secrets. + - [BUGFIX] Truncate ACK frame rather instead of aborting IETF + connection. + - [BUGFIX] Client: don't send duplicate reset tokens. + - [BUGFIX] Remove invalid assertion in H3 framing code. + - Silence a warning in send ctl by restructuring switch() statement. + +2019-11-08 + - 2.6.1 + - [BUGFIX] set retry token on all resubmitted packets. + - Event log: log sent packet flags. In particular, this allows one + to see whether token was sent. + - Don't migrate client if es_allow_migration is false. + +2019-11-07 + - 2.6.0 + - [FEATURE] QUIC and HTTP/3 Internet Draft 24 support + +2019-11-07 + - 2.5.2 + - [BUGFIX] argument order to gQUIC client constructor. Regression + introduced in 2.5.0. + - [BUGFIX] split buffered packet error recovery: destroy the correct + packet. + +2019-11-04 + - 2.5.1 + - [BUGFIX] Fix double-free when emptying a packet number space. + - [BUGFIX] http_server: fix md5sum handler: handle EOF correctly. + - [BUGFIX] Use random values in bits 4 and 5 of the first byte of + verneg packets (regression introduced in 2.5.0). + - [OPTIMIZATION] Don't compile in expensive attq checks by default. + - [OPTIMIZATION] http_server: compile regexes only once. + +2019-10-31 + - 2.5.0 + - [API] lsquic_engine_connect() can now be passed QUIC version to use. + - [OPTIMIZATION] Queue opportunistic ACKs if there is data to be sent. + - [BUGFIX] Don't evict streams from priority iterator if there is + only one queue. + - [OPTIMIZATION, BUGFIX] Several other optimizations and bug fixes. + - Use ls-qpack v0.10.7. + +2019-10-24 + - 2.4.10 + - [BUGFIX] IETF QUIC server: fix uninitialized variable use. + - [BUGFIX] make sure TLSv1.3 is not disabled in SSL object. + - [BUGFIX] Use issuer name and serial number to cache certs (SKID + values are not unique). + - [BUGFIX] Always set the idle alarm in IETF connection so that it + can time out. + - Use ls-qpack v0.10.6, as it silences some warnings. + +2019-10-21 + - 2.4.8 + - [OPTIMIZATION, BUGFIX] Use ls-qpack v0.10.5. + +2019-10-15 + - 2.4.7 + - Add echo client and server to the distibution. + - Add MD5 client and server to the distibution. + - Fix http_client: check command-line arguments better, prevent crash. + - Fix IETF conn: can_write_ack() should only care about APP PNS. + - Client: delay stream creation until handshake succeds. + - Reset HTTP stream whose write end is closed prematurely. + - Fix tickable(): mirror behavior of tick() wrt buffered packets. + - Log reason why engine is tickable. + +2019-10-11 + - 2.4.6 + - Minor code cleanup and logging improvements. + - Server and client programs: include library version (e.g. 2.4.6) + into `server' and `user-agent' headers. + +2019-10-08 + - 2.4.5 + - [OPTIMIZATION]: flush encoder stream only when necessary. + - [BUGFIX] Use ls-qpack v0.10.2 for new API -- and for a bug fix. + - [BUGFIX] Typo in IETF conn SETTINGS writer. + - Use latest BoringSSL. + +2019-10-08 + - 2.4.4 + - [API] Add lsquic_alpn2ver() to aid parsing Alt-Svc header. + - [BUGFIX] NULL dereference when H3 frame header would be split. + - [BUGFIX] Do not close fixed-size H3 frame prematurely. + - [BUGFIX] Allow PING frames in IETF mini conn. + - [BUGFIX] Mini conns: don't send any packets after receiving + CONNECTION_CLOSE. + - [BUGFIX] Client migration: reserve slot for DCID from transport params. + - [BUGFIX] Allow max_early_data_size=0 -- early_data might not be there. + - [BUGFIX] Use an invalid stream number to reset BPT cache (zero is now a + valid stream number). + - [SPEC] Use FINAL_SIZE_ERROR when FIN mismatch is detected. + - [OPTIMIZATION] Closed connection only gets one chance to send packets. + - [OPTIMIZATION] Flush headers stream before packetizing stream data. + - [OPTIMIZATION] process QPACK encoder STREAM frames immediately. + - Update ls-qpack to v0.10.1. + +2019-09-30 + - 2.4.3 + - Add GQUIC versions to the list of h3 ALPNs for Alt-Svc header. + For example, h3-Q043. Chrome will switch to using this format at + some point in the future. + - [BUGFIX] Send correct value in max_streams_uni transport param + - [SPEC] Abort IETF QUIC connection if max_early_data_size is not set + to 0xFFFFFFFF + +2019-09-23 + - 2.4.2 + - [BUGFIX] H3 framing: fix zero-byte write when space is available + - [BUGFIX] Don't send STREAM frame when incoming unidirectgional stream + is closed + - [BUGFIX] Cancel all pending writes by stream reset by a GOAWAY + - [BUGFIX] Fix use-after-free in IETF full conn + - [OPTIMIZATION] Wait for session tickets for two seconds and then drop + SSL object and crypto streams. + +2019-09-18 + - 2.4.0 + - [FEATURE] QUIC and HTTP/3 Internet Draft 23 support + +2019-09-13 + - 2.3.1 + - [BUGFIX] Fix memory leaks + - [BUGFIX] Fix unit tests + +2019-09-12 + - 2.3.0 + - [FEATURE] BBR congestion control is on by default + - [BUGFIX] BBR app-limited logic + - [BUGFIX] Fix uninitialized warnings in IETF + - [BUGFIX] Update ls-qpack to v0.9.14 + - [CLEANUP] Code cleanup + +2019-09-11 + - 2.2.0 + - [FEATURE] Server code is included in the library + - [FEATURE] IETF QUIC and HTTP/3 Support (ID-22) + +2019-05-13 + - 1.21.2 + - [OPTIMIZATION] HPACK: use history to improve compression performance + +2019-05-06 + - 1.21.1 + - [BUGFIX] If FIN or RST not received, don't delay stream destruction. + - [OPTIMIZATION] Speed up HPACK encoder by using same hash value to + search static and dynamic tables. + +2019-04-12 + - 1.21.0 + - [FEATURE] Add qlog log module. + +2019-04-01 + - 1.20.0 + - [FEATURE] Add support for Q046. + +2019-03-19 + - 1.19.6 + - [BUGFIX] Ensure that Largest Observed does not decrease in ACKs we + send. ACK frames placed in packets in buffered queues (optimization + introduced in 1.17.15) can be preceded by an ACK frame generated later. + In this case, the older ACK frame should not be sent out, as Chromium- + based servers flags decrease in the ACK frame's Largest Observed value + as an error. + +2019-03-05 + - 1.19.5 + - [BUGFIX] Use correct public key from PUBS based on KEXS index. + - [BUGFIX] Check flags before dispatching writes, avoiding assert. + - [BUGFIX] Set :scheme to "https" (instead of "HTTP"). + +2019-02-25 + - 1.19.4 + - [BUGFIX] Check buffer bounds when looking up version in 0-RTT blob. + - [BUGFIX] http_client: don't fetch 0-rtt info if handshake failed. + - Log number of pacer calls at DEBUG, rather than NOTICE, level. + +2019-02-18 + - 1.19.3 + - [BUGFIX] Q044: don't encode packet number in 6 bytes. Six-byte + packet number encoding does not exist in Q044. This fixes a + regression introduced in '[BUGFIX] Buffered packets can contain + ACK frames' -- we need to keep QUIC version in mind when selecting + the longest possible packet number encoding used for the buffered + packet that carries the ACK. + - [BUGFIX] Do not increase CWND when timeout occurs. + - http_client: support setting handshake timeout on command line. + Use -o handshake_to=timeout. + - http_client: use -k to connect UDP socket to pick up ICMP errors. + - http_client: allow pathless mode, when only handshake is performed + without issuing any requests. This can be done by simply not + specifying a -p flag on the command line. + +2019-02-11 + - 1.19.2 + - [BUGFIX] Begin negotiation with version provided in 0-RTT info. + - [BUGFIX] Version checking in zero_rtt deserialize function. + +2019-02-04 + - 1.19.1 + - [BUGFIX] Fix Windows build. + +2019-02-04 + - 1.19.0 + - [FEATURE, API Change] 0-RTT support. Add function to export 0-RTT + information; it can be supplied to a subsequent connect() call. + - [FEATURE] Add -0 flag to http_client to exercise 0-RTT support. + - [BUGFIX] Resuscitate the Windows build. + - [BUGFIX] Send HTTP settings (max header list size) if necessary. + - [BUGFIX] Buffered packets can contain ACK frames. + - [BUGFIX] Make packet writeable once all STREAM frames are elided. + - [BUGFIX] Fix potential null dereference when realloc fails. + - cmake: simplify build configuration. + +2019-01-28 + - 1.18.0 + - [API Change] Can specify clock granularity in engine settings. + - [BUGFIX] Pacer uses fixed clock granularity. Since the change on + 2018-04-09, it is not necessary to try to approximate the next tick + time in the pacer: it can use fix clock granularity specified by + the user. + - [BUGFIX] Do not tick constantly before handshake is done. + - [BUGFIX] Do not exit tick prematurely: reuse packet with ACK. Even + if we cannot allocate *more* packets, we could still be able to write + to one already allocated. + - [BUGFIX] Do not schedule pacer if there are no lost packets. + +2019-01-17 + - 1.17.15 + - [BUGFIX] http_client: make sure only one read per on_read() callback + is performed in the header conversion bypass (-B) mode. + - http_client: with -E, assign random priority when stream is created. + - [OPTIMIZATION] On immediate write, place an ACK frame into the first + buffered packet if an ACK is queued. This reduces the number of + standalone ACK packets. + - [OPTIMIZATION] Allow placing more than one STREAM frame from the same + stream into an outgoing packet. This change minimizes the number of + buffered packets required to store several small HTTP messages by + virtue of allowing more than one STREAM frame from HEADERS stream in + the same packet. + - [OPTIMIZATION] Flush headers when writing to buffered packets. This + causes the headers to be written to the same buffered packet queue, + thereby improving packet utilization, especially for small HTTP + messages. + +2019-01-16 + - 1.17.14 + - [FEATURE] http_client can now collect stats: time to connect, TTFB, + time to download, requests per seconds, and bandwidth. See -t flag. + - [BUGFIX] http_client: -B, -K, and -r can be used at the same time. + - [BUGFIX] http_client: do not display cert chain before each request. + Now this is only done once per connection, if the handshake is + successful and -a option is given. + - [BUGFIX] Do not wait to dispatch on_close() after reading. If a + stream is scheduled to be closed after on_read() callback returns, + close it immediately instead of waiting until the end of the tick. + If client creates new request from on_close() event, they will be + processed in the same tick instead of waiting for the next one. + - [BUGFIX] HEADERS stream is critical: always treat it with highest + priority. + +2019-01-10 + - 1.17.12 + - [FEATURE] http_client can now issue parallel requests in the context + of a single connection. See -w option. + +2019-01-03 + - 1.17.11 + - Fix strict aliasing warning in optimized compilation. + +2018-12-27 + - 1.17.10 + - Fix the example program to be able to use parallel connections + again. (See the -n argument.) + +2018-12-18 + - 1.17.9 + - [BUGFIX] Engine: reduce minimum batch size from 256 to 4 + +2018-12-10 + - 1.17.8 + - [BUGFIX] Fix compilation on FreeBSD and 32-bit Linux + +2018-12-03 + - 1.17.7 + - [BUGFIX] Do not unset PING alarm before ringing expired alarms. + This prevented PING from ever being sent. + +2018-11-29 + - 1.17.6 + - Add failsafe: resume sending packets after some time + + The change puts a 1-second limit on the amount of time the engine + will not send packets after some packets are delayed. This makes + the library robust in case the user does not unblock the engine + explicitly using lsquic_engine_send_unsent_packets() call. + + - [BUGFIX] Handle corner cases in send controller when packets are + a) delayed or b) dropped during repackaging. + - [BUGFIX] Memory leak: destroy buffered packets during controller + cleanup. + +2018-11-16 + - 1.17.3 + - [BUGFIX] Do not send STOP_WAITING frames when using Q044 + +2018-10-19 + - 1.17.2 + - [BUGFIX] Memory leak in test_frame_rw unit test. + - [BUGFIX] Parsing packets with short IETF header: do not overwrite + flags. (Only a problem in unit tests -- benign otherwise.) + +2018-10-16 + - 1.17.0 + - [API Change] Packet out Memory Interface (PMI) update: + - Split PMI pool return into pmi_release and pmi_return + - PMI callbacks take peer_ctx and is_ipv6 arguments + - [BUGFIX] Fix use-after-free when certificate is updated + - Silence gcc warning in optimized mode by performing useless + initialization + - cmake: use the standard variable CMAKE_BUILD_TYPE instead of + DEVEL_MODE + +2018-10-03 + - 1.16.0 + - [API Change] Add lsquic_conn_n_avail_streams() + - [BUGFIX] only dispatch crypto stream read events if WANT_READ is on + +2018-09-27 + - 1.15.0 + - [API Change] Add LSCONN_ST_PEER_GOING_AWAY to the list of conn statuses + - [BUGFIX] free uncompressed headers correctly when error occurs + +2018-09-12 + - 1.14.3 + - [BUGFIX] Do not abort conn on STREAM frame for a reset stream + - [BUGFIX] Drop packets that would become empty due to repackaging. + Packets on the scheduled queue may be marked for repackaging. + Frames such as ACK frame that are never resent are removed from + repackaged packets. We must check that the newly repackaged packet + would not be empty. If it would be, it is destroyed instead and + the next packet on the scheduled queue is used. Note that this + change only affects the logic to return the next packet to be sent. + Lost packets that are being rescheduled are already processed in + this fashion. + - Byteswap CID before logging it - this makes it match Chrome CIDs. + (Except Q035, which is the last little-endian GQUIC version we + support.) + +2018-09-06 + - 1.14.0 + - [API Change] Disable packet sending if full batch cannot be sent + If lsquic_packets_out_f() cannot send the whole batch, disable + packet sending until lsquic_engine_send_unsent_packets() is called. + - [BUGFIX] Handle case when STREAM frame does not fit. + - [BUGFIX] Always allow incoming STREAM frames to overlap. Peers + may send overlapping STREAM frames even if using versions older + than Q043. + - Custom header set fixes: + - set "FIN reached" flag when custom header with FIN flag is + claimed; + - do not return custom header set for a reset stream. + +2018-08-27 + + - 1.13.0 + - [FEATURE, API Change] Add ability to create custom header set + objects via callbacks. This avoids reading and re-parsing + headers from the stream. + +2018-08-27 + + - 1.12.4 + - Fix memory leak when engine is destroyed + - Fix memory leak in http_client + - Fix gcc warning in unit tests + +2018-08-22 + + - 1.12.3 + - [BUGFIX] Fix duplicate STREAM frame detection + +2018-08-20 + + - 1.12.2 + - [BUGFIX] Update count of scheduled bytes when adjusting size of + an already-scheduled packet. + - Emit info instead of warning messages when stream is used in + unexpected ways. + +2018-08-17 + + - 1.12.0 + - [FEATURE, API Change] Add support for certificate verification + +2018-08-16 + + - 1.11.1 + - [BUGFIX] Fix STOP_WAITING frame processing in the new Q044 code + +2018-08-15 + + - 1.11.0 + - [FEATURE] Add support for Q044. + +2018-08-09 + + - 1.10.2 + - [BUGFIX] Don't go over limit when creating delayed streams + +2018-07-10 + + - 1.10.1 + - [BUGFIX] process connections after each batch of packets is read + This avoids a problem of accumulating a very large list of packets + (possible when speeds are high and socket's receive buffer is large) + and processing it all at once. + - If glibc is older than 2.17, link with rt. This is necessary for + clock_getres(2). + - Add version macros to lsquic.h; remove unnecessary includes. + +2018-06-13 + + - [BUGFIX] allow multiple parallel connections by default + + Use the original method of tracking connections by CIDs by default. + If zero-sized CID support is turned on, connections are tracked by + the address. A new connection is not created if another connection + is using the same network address + +2018-05-30 + + - [FEATURE, API CHANGE] Support zero-sized CIDs in received packets + +2018-05-24 + + - Close connection properly when packet encryption fails + +2018-05-23 + + - [BUGFIX] Do not produce packet sequence gaps due to delayed packets + +2018-05-21 + + - [API Change] Add optional callback to call when handshake is done + - [API Change, BUGFIX] After send failure, wait until transport available + +2018-05-18 + + - [API] Expose useful lsquic_ver2str[] in lsquic.h + - [BUGFIX] Do not produce packet sequence gaps due to STREAM frame elision + - Improve checks of number of incoming streams limit and associated + error reporting. + - [BUGFIX] Command-line option `-6` now works correctly. + +2018-05-16 + + - [FEATURE] DNS resolution + - [BUGFIX] Frame insertion mis-ID as overlap instead of dup + - http_client: fix priority range generated by -E flag + +2018-05-09 + + - [FEATURE] Add support for Q043. + - Support for versions Q037, Q038, Q041, and Q042 has been removed. + - Fix typo in debug message. + - Fix code indentation. + - Add /* fallthru */ comment to stop newer gcc from complaining. + - Logger: fix compilation of optimized Windows build. + +2018-05-04 + + - [FEATURE] Add support for Q042. + - Remove comment: MSPC is obsolete (no code changes) + - Prog: use lsquic_str2ver() when processing -o version flag + - Remove unused CTIM and SRBF transport parameters + - Disable QUIC versions Q037 and Q038 by default + - Fix Windows compilation by including compat header file in + lshpack.c + - Address warnings produced by newer versions of gcc + - Future-proof: turn off -Werror + +2018-05-02 + + - [BUGFIX] Make lsquic_conn_quic_version() available + - Switch to using ls-hpack 1.1 + - [BUGFIX] Do not ignore stream resets after receiving FIN + +2018-04-27 + + - HPACK: do not allow header block to end with table size update. + +2018-04-25 + + - [BUGFIX] Do not create gap in sent packnos when squeezing delayed + packets. + - [BUGFIX] sendctl checks for all unacked bytes, not just retx bytes. + - [BUGFIX] connections with blocked scheduled packets are not tickable + for sending. + - [BUGFIX] Conn is tickable if it wants to send a connection-level + frame. + +2018-04-23 + + - Fix busy loop: tickable must make progress. When connection is + self-reporting as tickable, it must make progress when ticked. There + are two issues: + 1. If there are buffered packets, the connection is only tickable if + they can be sent out. + 2. A connection is tickable if there are streams on the servicing + queue. When the tick occurs, we must service the stream + independent of whether any packets are sent. + - Fix assertion in pacer which can be incorrect under some + conditions. + - cmake: do not turn on address sanitizer if in Travis. + +2018-04-20 + + - [BUGFIX] Fix bug in lsquic_engine_connect() exposed by yesterday's + changes. + +2018-04-19 + + - [BUGFIX] Add connection to Tickable Queue on stream write + - cmake: use MSVC variable instead of trying to detect + - engine: improve connection incref/decref logging + - stream: don't ignore errors that may occur on triggered flush + - connection: remove obsolete method + - engine: indicate connection as tickable if previous call went + over threshold + +2018-04-09 + + [API Change, OPTIMIZATION] Only process conns that need to be processed + + The API is simplified: do not expose the user code to several + queues. A "connection queue" is now an internal concept. + The user processes connections using the single function + lsquic_engine_process_conns(). When this function is called, + only those connections are processed that need to be processed. + A connection needs to be processed when: + + 1. New incoming packets have been fed to the connection. + 2. User wants to read from a stream that is readable. + 3. User wants to write to a stream that is writeable. + 4. There are buffered packets that can be sent out. (This + means that the user wrote to a stream outside of the + lsquic library callback.) + 5. A control frame (such as BLOCKED) needs to be sent out. + 6. A stream needs to be serviced or delayed stream needs to + be created. + 7. An alarm rings. + 8. Pacer timer expires. + + To achieve this, the library places the connections into two + priority queues (min heaps): + + 1. Tickable Queue; and + 2. Advisory Tick Time queue (ATTQ). + + Each time lsquic_engine_process_conns() is called, the Tickable + Queue is emptied. After the connections have been ticked, they are + queried again: if a connection is not being closed, it is placed + either in the Tickable Queue if it is ready to be ticked again or + it is placed in the Advisory Tick Time Queue. It is assumed that + a connection always has at least one timer set (the idle alarm). + + The connections in the Tickable Queue are arranged in the least + recently ticked order. This lets connections that have been quiet + longer to get their packets scheduled first. + + This change means that the library no longer needs to be ticked + periodically. The user code can query the library when is the + next tick event and schedule it exactly. When connections are + processed, only the tickable connections are processed, not *all* + the connections. When there are no tick events, it means that no + timer event is necessary -- only the file descriptor READ event + is active. + + The following are improvements and simplifications that have + been triggered: + + - Queue of connections with incoming packets is gone. + - "Pending Read/Write Events" Queue is gone (along with its + history and progress checks). This queue has become the + Tickable Queue. + - The connection hash no longer needs to track the connection + insertion order. + +2018-04-02 + + - [FEATURE] Windows support + + - Reduce stack use -- outgoing packet batch is now allocated on the heap. + +2018-03-09 + + - [OPTIMIZATION] Merge series of ACKs if possible + + Parsed single-range ACK frames (that is the majority of frames) are + saved in the connection and their processing is deferred until the + connection is ticked. If several ACKs come in a series between + adjacent ticks, we check whether the latest ACK is a strict superset + of the saved ACK. If it is, the older ACK is not processed. + + If ACK frames can be merged, they are merged and only one of them is + either processed or saved. + + - [OPTIMIZATION] Speed up ACK verification by simplifying send history. + + Never generate a gap in the sent packet number sequence. This reduces + the send history to a single number instead of potentially a series of + packet ranges and thereby speeds up ACK verification. + + By default, detecting a gap in the send history is not fatal: only a + single warning is generated per connection. The connection can continue + to operate even if the ACK verification code is not able to detect some + inconsistencies. + + - [OPTIMIZATION] Rearrange the lsquic_send_ctl struct + + The first part of struct lsquic_send_ctl now consists of members that + are used in lsquic_send_ctl_got_ack() (in the absense of packet loss, + which is the normal case). To speed up reads and writes, we no longer + try to save space by using 8- and 16-bit integers. Use regular integer + width for everything. + + - [OPTIMIZATION] Cache size of sent packet. + + - [OPTIMIZATION] Keep track of the largest ACKed in packet_out + + Instead of parsing our own ACK frames when packet has been acked, + use the value saved in the packet_out structure when the ACK frame + was generated. + + - [OPTIMIZATION] Take RTT sampling conditional out of ACK loop + + - [OPTIMIZATION] ACK processing: only call clock_gettime() if needed + + - [OPTIMIZATION] Several code-level optimizations to ACK processing. + + - Fix: http_client: fix -I flag; switch assert() to abort() + +2018-02-26 + - [API Change] lsquic_engine_connect() returns pointer to the connection + object. + - [API Change] Add lsquic_conn_get_engine() to get engine object from + connection object. + - [API Change] Add lsquic_conn_status() to query connection status. + - [API Change] Add add lsquic_conn_set_ctx(). + - [API Change] Add new timestamp format, e.g. 2017-03-21 13:43:46.671345 + - [OPTIMIZATION] Process handshake STREAM frames as soon as packet + arrives. + - [OPTIMIZATION] Do not compile expensive send controller sanity check + by default. + - [OPTIMIZATION] Add fast path to gquic_be_gen_reg_pkt_header. + - [OPTIMIZATION] Only make squeeze function call if necessary. + - [OPTIMIZATION] Speed up Q039 ACK frame parsing. + - [OPTIMIZATION] Fit most used elements of packet_out into first 64 bytes. + - [OPTIMIZATION] Keep track of scheduled bytes instead of calculating. + - [OPTIMIZATION] Prefetch next unacked packet when processing ACK. + - [OPTIMIZATION] Leverage fact that ACK ranges and unacked list are. + ordered. + - [OPTIMIZATION] Reduce function pointer use for STREAM frame generation + - Fix: reset incoming streams that arrive after we send GOAWAY. + - Fix: delay client on_new_conn() call until connection is fully set up. + - Fixes to buffered packets logic: splitting, STREAM frame elision. + - Fix: do not dispatch on_write callback if no packets are available. + - Fix WINDOW_UPDATE send and resend logic. + - Fix STREAM frame extension code. + - Fix: Drop unflushed data when stream is reset. + - Switch to tracking CWND using bytes rather than packets. + - Fix TCP friendly adjustment in cubic. + - Fix: do not generate invalid STOP_WAITING frames during high packet + loss. + - Pacer fixes. + +2017-12-18 + + - Fix: better follow cubic curve after idle period + - Fix: add missing parts to outgoing packet splitting code + - Fix: compilation using gcc 4.8.4 + +2017-10-31 + + - Add APIs.txt -- describes LSQUIC APIs + +2017-10-31 + + - [API Change] Sendfile-like functionality is gone. The stream no + longer opens files and deals with file descriptors. (Among other + things, this makes the code more portable.) Three writing functions + are provided: + + lsquic_stream_write + lsquic_stream_writev + lsquic_stream_writef (NEW) + + lsquic_stream_writef() is given an abstract reader that has function + pointers for size() and read() functions which the user can implement. + This is the most flexible way. lsquic_stream_write() and + lsquic_stream_writev() are now both implemented as wrappers around + lsquic_stream_writef(). + + - [OPTIMIZATION] When writing to stream, be it within or without the + on_write() callback, place data directly into packet buffer, + bypassing auxiliary data structures. This reduces amount of memory + required, for the amount of data that can be written is limited + by the congestion window. + + To support writes outside the on_write() callback, we keep N + outgoing packet buffers per connection which can be written to + by any stream. One half of these are reserved for the highest + priority stream(s), the other half for all other streams. This way, + low-priority streams cannot write instead of high-priority streams + and, on the other hand, low-priority streams get a chance to send + their packets out. + + The algorithm is as follows: + + - When user writes to stream outside of the callback: + - If this is the highest priority stream, place it onto the + reserved N/2 queue or fail. + (The actual size of this queue is dynamic -- MAX(N/2, CWND) -- + rather than N/2, allowing high-priority streams to write as + much as can be sent.) + - If the stream is not the highest priority, try to place the + data onto the reserved N/2 queue or fail. + - When tick occurs *and* more packets can be scheduled: + - Transfer packets from the high N/2 queue to the scheduled + queue. + - If more scheduling is allowed: + - Call on_write callbacks for highest-priority streams, + placing resulting packets directly onto the scheduled queue. + - If more scheduling is allowed: + - Transfer packets from the low N/2 queue to the scheduled + queue. + - If more scheduling is allowed: + - Call on_write callbacks for non-highest-priority streams, + placing resulting packets directly onto the scheduled queue + + The number N is currently 20, but it could be varied based on + resource usage. + + - If stream is created due to incoming headers, make headers readable + from on_new. + + - Outgoing packets are no longer marked non-writeable to prevent placing + more than one STREAM frame from the same stream into a single packet. + This property is maintained via code flow and an explicit check. + Packets for stream data are allocated using a special function. + + - STREAM frame elision is cheaper, as we only perform it if a reset + stream has outgoing packets referencing it. + + - lsquic_packet_out_t is smaller, as stream_rec elements are now + inside a union. + +2017-10-12 + + - Do not send RST_STREAM when stream is closed for reading + - Raise maximum header size from 4K to 64K + - Check header name and value lengths against maximum imposed by HPACK + - Fix NULL dereference in stream flow controller + +2017-10-09 + + - Hide handshake implementation behind a set of function pointers + - Use monotonically increasing clock + - Make sure that retx delay is not larger than the max of 60 seconds + +2017-09-29 + + - A few fixes to code and README + +2017-09-28 + + - Add support for Q041; drop support for Q040 + +2017-09-27 + + - Fix CMakeLists.txt: BoringSSL include and lib was mixed up + +2017-09-26 + + - Add support for Mac OS + - Add support for Raspberry Pi + - Fix BoringSSL compilation: include explicitly + +2017-09-22 + + - Initial release diff --git a/external/lsquic/CMakeLists.txt b/external/lsquic/CMakeLists.txt new file mode 100644 index 0000000..932668e --- /dev/null +++ b/external/lsquic/CMakeLists.txt @@ -0,0 +1,355 @@ +# Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. +cmake_minimum_required(VERSION 3.0...3.23) + + +PROJECT(lsquic C CXX) + +SET(LIBS "-lstdc++") + +OPTION(LSQUIC_FIU "Use Fault Injection in Userspace (FIU)" OFF) +OPTION(LSQUIC_BIN "Compile example binaries that use the library" ON) +OPTION(LSQUIC_TESTS "Compile library unit tests" ON) +OPTION(LSQUIC_SHARED_LIB "Compile as shared librarry" OFF) +OPTION(LSQUIC_DEVEL "Compile in development mode" OFF) +OPTION(LSQUIC_WEBTRANSPORT "Enable WebTransport support" OFF) + +INCLUDE(GNUInstallDirs) + +MESSAGE(STATUS "CMake v${CMAKE_VERSION}") + +IF (CMAKE_SYSTEM_NAME STREQUAL "Linux") + # If using older glibc, need to link with -lrt. See clock_getres(2). + include(CheckSymbolExists) + check_symbol_exists(clock_getres "time.h" HAS_clock_getres_WITHOUT_LIBRT) + + if(NOT HAS_clock_getres_WITHOUT_LIBRT) + find_library(RT_LIBRARY rt) + set(NEED_LIBRT_FOR_clock_getres ON) + endif() +ELSEIF (CMAKE_SYSTEM_NAME STREQUAL "Android") + # for android-ndk >= r19b + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY "BOTH") + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE "BOTH") + set(CMAKE_FIND_ROOT_PATH_MODE_PATH "BOTH") +ENDIF() + +IF("${CMAKE_BUILD_TYPE}" STREQUAL "") + SET(CMAKE_BUILD_TYPE Debug) +ENDIF() + +MESSAGE(STATUS "Build type: ${CMAKE_BUILD_TYPE}") + +IF (NOT "$ENV{EXTRA_CFLAGS}" MATCHES "-DLSQUIC_DEBUG_NEXT_ADV_TICK") + SET(MY_CMAKE_FLAGS "-DLSQUIC_DEBUG_NEXT_ADV_TICK=1") +ENDIF() + +IF (NOT "$ENV{EXTRA_CFLAGS}" MATCHES "-DLSQUIC_CONN_STATS=") + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLSQUIC_CONN_STATS=1") +ENDIF() + +IF (NOT MSVC) + +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -Wall -Wextra -Wno-unused-parameter") +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -fno-omit-frame-pointer") + +IF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9.3) + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -Wno-missing-field-initializers") +ENDIF() + +IF(LSQUIC_FIU) + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DFIU_ENABLE=1") + SET(LIBS ${LIBS} fiu) +ENDIF() + +IF(CMAKE_BUILD_TYPE STREQUAL "Debug") + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -O0 -g3") + IF(CMAKE_C_COMPILER MATCHES "clang" AND + NOT "$ENV{TRAVIS}" MATCHES "^true$" AND + NOT "$ENV{EXTRA_CFLAGS}" MATCHES "-fsanitize") + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -fsanitize=address") + SET(LIBS ${LIBS} -fsanitize=address) + ENDIF() + # Uncomment to enable cleartext protocol mode (no crypto): + #SET (MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLSQUIC_ENABLE_HANDSHAKE_DISABLE=1") +ELSE() + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -O3 -g0") + # Comment out the following line to compile out debug messages: + #SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLSQUIC_LOWEST_LOG_LEVEL=LSQ_LOG_INFO") +ENDIF() + +IF (LSQUIC_DEVEL) + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLSQUIC_DEVEL=1") +ENDIF() + +IF (LSQUIC_WEBTRANSPORT) + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -LSQUIC_WEBTRANSPORT_SERVER_SUPPORT=1") +ENDIF() + +IF(LSQUIC_PROFILE EQUAL 1) + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -g -pg") +ENDIF() + +IF(LSQUIC_COVERAGE EQUAL 1) + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -fprofile-arcs -ftest-coverage") +ENDIF() + +IF(MY_CMAKE_FLAGS MATCHES "fsanitize=address") + MESSAGE(STATUS "AddressSanitizer is ON") +ELSE() + MESSAGE(STATUS "AddressSanitizer is OFF") +ENDIF() + +#MSVC +ELSE() +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4100") # unreferenced formal parameter +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4115") # unnamed type definition in parentheses +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4116") # named type definition in parentheses +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4146") # unary minus operator applied to unsigned type, result still unsigned +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4132") # const initialization +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4200") # zero-sized array +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4204") # non-constant aggregate initializer +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4244") # integer conversion +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4245") # conversion from 'int' to 'unsigned int', signed/unsigned mismatch +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4267") # integer conversion +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4214") # nonstandard extension used: bit field types other than int +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4295") # array is too small to include a terminating null character +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4324") # structure was padded due to alignment specifier +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4334") # result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?) +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4456") # hide previous local declaration +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4459") # hide global declaration +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4706") # assignment within conditional expression +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4090") # different 'const' qualifier (TODO: debug ls-sfparser.c) +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4305") # truncation from double to float +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -W4 -WX -Zi -DWIN32_LEAN_AND_MEAN -DNOMINMAX -D_CRT_SECURE_NO_WARNINGS -I${CMAKE_CURRENT_SOURCE_DIR}/wincompat") +IF(LSQUIC_SHARED_LIB) + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLSQUIC_SHARED_LIB") +ENDIF() +IF(CMAKE_BUILD_TYPE STREQUAL "Debug") + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -Od") + #SET (MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DFIU_ENABLE=1") + #SET(LIBS ${LIBS} fiu) +ELSE() + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -Ox") + # Comment out the following line to compile out debug messages: + #SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLSQUIC_LOWEST_LOG_LEVEL=LSQ_LOG_INFO") +ENDIF() + +ENDIF() #MSVC + +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MY_CMAKE_FLAGS} $ENV{EXTRA_CFLAGS}") + +MESSAGE(STATUS "Compiler flags: ${CMAKE_C_FLAGS}") + +find_package(Perl) +IF(NOT PERL_FOUND) + MESSAGE(FATAL_ERROR "Perl not found -- need it to generate source code") +ENDIF() + +IF (MSVC) + IF(LSQUIC_SHARED_LIB) + set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS YES CACHE BOOL "Export all symbols") + SET(LIB_SUFFIX .dll) + ELSE() + SET(LIB_SUFFIX .lib) + ENDIF() +ELSE() + IF(LSQUIC_SHARED_LIB) + SET(LIB_SUFFIX .so) + ELSE() + SET(LIB_SUFFIX .a) + ENDIF() +ENDIF() + +IF (NOT DEFINED BORINGSSL_INCLUDE AND DEFINED BORINGSSL_DIR) + FIND_PATH(BORINGSSL_INCLUDE NAMES openssl/ssl.h + PATHS ${BORINGSSL_DIR}/include + NO_DEFAULT_PATH) +ENDIF() +# This must be done before adding other include directories to take +# precedence over header files from other SSL installs. + +IF (BORINGSSL_INCLUDE) + MESSAGE(STATUS "BoringSSL include directory ${BORINGSSL_INCLUDE}") + INCLUDE_DIRECTORIES(${BORINGSSL_INCLUDE}) +ELSE() + MESSAGE(FATAL_ERROR "BoringSSL headers not found") +ENDIF() + +IF (NOT DEFINED BORINGSSL_LIB AND DEFINED BORINGSSL_DIR) + FOREACH(LIB_NAME ssl crypto) + IF (CMAKE_SYSTEM_NAME STREQUAL Windows) + FIND_LIBRARY(BORINGSSL_LIB_${LIB_NAME} + NAMES ${LIB_NAME} + PATHS ${BORINGSSL_DIR}/${LIB_NAME} + PATH_SUFFIXES Debug Release MinSizeRel RelWithDebInfo + NO_DEFAULT_PATH) + ELSE() + FIND_LIBRARY(BORINGSSL_LIB_${LIB_NAME} + NAMES lib${LIB_NAME}${LIB_SUFFIX} + PATHS ${BORINGSSL_DIR}/${LIB_NAME} + NO_DEFAULT_PATH) + ENDIF() + IF(BORINGSSL_LIB_${LIB_NAME}) + MESSAGE(STATUS "Found ${LIB_NAME} library: ${BORINGSSL_LIB_${LIB_NAME}}") + ELSE() + MESSAGE(STATUS "${LIB_NAME} library not found") + ENDIF() + ENDFOREACH() + +ELSE() + + + FOREACH(LIB_NAME ssl crypto) + # If BORINGSSL_LIB is defined, try find each lib. Otherwise, user should define BORINGSSL_LIB_ssl, + # BORINGSSL_LIB_crypto and so on explicitly. For example, including boringssl and lsquic both via + # add_subdirectory: + # add_subdirectory(third_party/boringssl) + # set(BORINGSSL_LIB_ssl ssl) + # set(BORINGSSL_LIB_crypto crypto) + # add_subdirectory(third_party/lsquic) + IF (DEFINED BORINGSSL_LIB) + IF (CMAKE_SYSTEM_NAME STREQUAL Windows) + FIND_LIBRARY(BORINGSSL_LIB_${LIB_NAME} + NAMES ${LIB_NAME} + PATHS ${BORINGSSL_LIB} + PATH_SUFFIXES Debug Release MinSizeRel RelWithDebInfo + NO_DEFAULT_PATH) + ELSE() + FIND_LIBRARY(BORINGSSL_LIB_${LIB_NAME} + NAMES lib${LIB_NAME}${LIB_SUFFIX} + PATHS ${BORINGSSL_LIB} + PATH_SUFFIXES ${LIB_NAME} + NO_DEFAULT_PATH) + ENDIF() + ENDIF() + IF(BORINGSSL_LIB_${LIB_NAME}) + MESSAGE(STATUS "Found ${LIB_NAME} library: ${BORINGSSL_LIB_${LIB_NAME}}") + ELSE() + MESSAGE(FATAL_ERROR "BORINGSSL_LIB_${LIB_NAME} library not found") + ENDIF() + ENDFOREACH() + +ENDIF() + +SET(CMAKE_INCLUDE_CURRENT_DIR ON) +INCLUDE_DIRECTORIES(include) +IF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "Darwin") + # Find libevent on FreeBSD: + include_directories( /usr/local/include ) + link_directories( /usr/local/lib ) +ENDIF() + +IF (CMAKE_SYSTEM_NAME STREQUAL Windows AND LSQUIC_TESTS AND LSQUIC_BIN) + FIND_PATH(GETOPT_INCLUDE_DIR NAMES getopt.h) + IF (GETOPT_INCLUDE_DIR) + INCLUDE_DIRECTORIES(${GETOPT_INCLUDE_DIR}) + ELSE() + MESSAGE(FATAL_ERROR "getopt.h was not found") + ENDIF() + FIND_LIBRARY(GETOPT_LIB getopt) + IF(GETOPT_LIB) + MESSAGE(STATUS "Found getopt: ${GETOPT_LIB}") + ELSE() + MESSAGE(STATUS "getopt not found") + ENDIF() +ENDIF() + +# Find zlib and libevent header files and library files +# TODO: libevent is not strictly necessary to build the library. +FIND_PATH(ZLIB_INCLUDE_DIR NAMES zlib.h) +IF (ZLIB_INCLUDE_DIR) + INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR}) +ELSE() + MESSAGE(FATAL_ERROR "zlib.h was not found") +ENDIF() +IF (CMAKE_SYSTEM_NAME STREQUAL Windows) + FIND_LIBRARY(ZLIB_LIB zlib) +ELSEIF(CMAKE_SYSTEM_NAME STREQUAL Darwin) + # XXX somehow FIND_LIBRARY() does not find zlib on Travis? + SET(ZLIB_LIB z) +ELSE() + FIND_LIBRARY(ZLIB_LIB libz${LIB_SUFFIX}) +ENDIF() +IF(ZLIB_LIB) + MESSAGE(STATUS "Found zlib: ${ZLIB_LIB}") +ELSE() + MESSAGE(STATUS "zlib not found") +ENDIF() + +SET(LIBS lsquic ${BORINGSSL_LIB_ssl} ${BORINGSSL_LIB_crypto} ${ZLIB_LIB} ${LIBS}) + +IF (LSQUIC_BIN) + FIND_PATH(EVENT_INCLUDE_DIR NAMES event2/event.h + PATHS ${PROJECT_SOURCE_DIR}/../third-party/include) + IF (EVENT_INCLUDE_DIR) + INCLUDE_DIRECTORIES(${EVENT_INCLUDE_DIR}) + ELSE() + MESSAGE(WARNING "event2/event.h was not found: binaries won't be built") + SET(LSQUIC_BIN OFF) + ENDIF() +ENDIF() + +IF (LSQUIC_BIN) + IF (CMAKE_SYSTEM_NAME STREQUAL Windows) + FIND_LIBRARY(EVENT_LIB event) + ELSE() + FIND_LIBRARY(EVENT_LIB libevent${LIB_SUFFIX} + PATHS ${PROJECT_SOURCE_DIR}/../third-party/lib) + IF(NOT EVENT_LIB) + FIND_LIBRARY(EVENT_LIB libevent.so) + ENDIF() + ENDIF() + IF(EVENT_LIB) + MESSAGE(STATUS "Found event: ${EVENT_LIB}") + ELSE() + MESSAGE(WARNING "libevent not found: binaries won't be built") + SET(LSQUIC_BIN OFF) + ENDIF() +ENDIF() + + +IF (NOT MSVC) + LIST(APPEND LIBS pthread m) +ELSE() + LIST(APPEND LIBS ws2_32) +ENDIF() + +IF (LSQUIC_BIN) + ADD_SUBDIRECTORY(bin) +ENDIF() + +add_subdirectory(src) + +IF(LSQUIC_TESTS AND CMAKE_BUILD_TYPE STREQUAL "Debug") + # Our test framework relies on assertions, only compile if assertions are + # enabled. + # + enable_testing() + add_subdirectory(tests) +ENDIF() + + +FIND_PROGRAM(SPHINX NAMES sphinx-build) +IF(SPHINX) + ADD_CUSTOM_TARGET(docs + ${SPHINX} -b html + docs + docs/_build + ) +ELSE() + MESSAGE(STATUS "sphinx-build not found: docs won't be made") +ENDIF() + +INSTALL(FILES + include/lsquic.h + include/lsquic_types.h + include/lsxpack_header.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lsquic +) + +if(WIN32) + install(FILES + wincompat/vc_compat.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lsquic + ) +endif() diff --git a/external/lsquic/CONTRIBUTORS.txt b/external/lsquic/CONTRIBUTORS.txt new file mode 100644 index 0000000..9303376 --- /dev/null +++ b/external/lsquic/CONTRIBUTORS.txt @@ -0,0 +1,21 @@ +# Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. +In addition to the LiteSpeed QUIC Team, the following people contributed +to the LiteSpeed QUIC and HTTP/3 Library: + + - Brian Prodoehl -- Docker file + - Amol Desphande -- Windows support + - Alexis La Goutte -- Travis-CI integration + - Bernhard Jaeger -- DNS Resolution + - Zhang Chi -- libevent build fix on Darwin + - Omar Roth -- Alpine Linux build and Crystal language bindings + - initlife (?) -- XCode build + - Rahul Jadhav -- Android support + - Victor Stewart -- Generate SCIDs API (connection ID steering) + - Aaron France -- Shared library support and Lisp bindings + - Suma Subbarao -- Use callback to supply client's SSL_CTX + - Paul Sheer -- Callback on arrival of CONNECTION_CLOSE frame + - Weiwei Wang -- Some fixes on Windows + +Thank you! + +We welcome contributions in any form -- patches, issues, pull requests. diff --git a/external/lsquic/Dockerfile b/external/lsquic/Dockerfile new file mode 100644 index 0000000..bad7796 --- /dev/null +++ b/external/lsquic/Dockerfile @@ -0,0 +1,38 @@ +FROM ubuntu:20.04 as build-lsquic + +ENV DEBIAN_FRONTEND noninteractive + +RUN apt-get update && \ + apt-get install -y apt-utils build-essential git cmake software-properties-common \ + zlib1g-dev libevent-dev + +RUN add-apt-repository ppa:longsleep/golang-backports && \ + apt-get update && \ + apt-get install -y golang-1.21-go && \ + cp /usr/lib/go-1.21/bin/go* /usr/bin/. + +ENV GOROOT /usr/lib/go-1.21 + +RUN mkdir /src +WORKDIR /src + +RUN mkdir /src/lsquic +COPY ./ /src/lsquic/ + +RUN git clone --depth=1 https://github.com/google/boringssl.git && \ + cd boringssl && \ + cmake . && \ + make + +ENV EXTRA_CFLAGS -DLSQUIC_QIR=1 +RUN cd /src/lsquic && \ + cmake -DBORINGSSL_DIR=/src/boringssl -D BORINGSSL_LIB_crypto=/src/boringssl/build/crypto/libcrypto.a -DBORINGSSL_LIB_SSL=/src/boringssl/build/ssl/libssl.a . && \ + make + +RUN cd lsquic && cp bin/http_client /usr/bin/ && cp bin/http_server /usr/bin + +FROM martenseemann/quic-network-simulator-endpoint:latest as lsquic-qir +COPY --from=build-lsquic /usr/bin/http_client /usr/bin/http_server /usr/bin/ +COPY qir/run_endpoint.sh . +RUN chmod +x run_endpoint.sh +ENTRYPOINT [ "./run_endpoint.sh" ] diff --git a/external/lsquic/EXAMPLES.txt b/external/lsquic/EXAMPLES.txt new file mode 100644 index 0000000..be5ca40 --- /dev/null +++ b/external/lsquic/EXAMPLES.txt @@ -0,0 +1,297 @@ +# Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. +LSQUIC Examples +=============== + +LSQUIC comes with several examples of how the library is used. + +The client and server programs described below are built on a common +framework and share many options. + +Echo client and server +---------------------- + +Echo client and server (see bin/echo_{client,server}.c) are for simple +line-based request and reply communication. Only one stream per connection +is supported for simplicity. The client reads input from stdin. + +MD5 client and server +--------------------- + +See bin/md5_{client,server}.c + +MD5 server accepts connections, computes MD5 sum of streams' (one or more) +payload, and sends back the checksum. MD5 client sends one or more file +contents to the server. Both client and server support various options to +exercise different aspects of LSQUIC. + +HTTP client and server +---------------------- + +See bin/http_{client,server}.c + +This pair of programs is to demonstrate how to use HTTP features of QUIC. +HTTP server is interoperable with proto-quic's quic_client. + +Duck client and server +---------------------- + +See bin/duck_{client,server}.c + +This pair of programs implement the siduck-00 protocol. They provide an +illustration of using the datagram API. + +Usage Examples +-------------- + +Fetch Google's home page: + + ./bin/http_client -s www.google.com -p / + +The default port number is 443, but it can be specified after colon +using the -s flag. The value of the `host' header as well as the SNI +value defaults to the host part of the -s option. -H option can be +used to override it. For example: + + ./bin/http_client -H www.youtube.com -s www.google.com:443 -p / -M HEAD + +The host part can be an IP address. Both IPv4 and IPv6 are supported. +See ./bin/http_client -h for a (long) list of different flags. + +POST a file to calculate its CRC32 checksum: + + ./bin/http_client -H www.litespeedtech.com -s 443 \ + -p /cgi-bin/crc32.cgi -P file-256M -M POST + + HTTP/1.1 200 OK + content-type: text/plain + date: Fri, 09 Jun 2017 08:40:45 GMT + server: LiteSpeed + alt-svc: quic=":443"; v="35,37" + + CRC32: 2A0E7DBB + +This is a good way to check that the payload gets to the other side +correctly. The CGI script is: + + #!/usr/bin/perl + use String::CRC32; + printf "Content-type: text/plain\r\n\r\nCRC32: %X\n", crc32(*STDIN) + +On the command line, I do + + alias crc32="perl -MString::CRC32 -e'printf qq(%X\n), crc32(<>)'" + +To submit several requests concurrently, one can use -n and -r options: + + ./bin/http_client -H www.litespeedtech.com -s 443 \ + -p /cgi-bin/crc32.cgi -P file-256M -M POST -n 3 -r 10 + +This will open three parallel connections which will make ten POST +requests together. + +To perform load testing, it is good to mix sending and receiving data: + + for i in {1..100}; do + ./bin/http_client $COMMON_OPTS -p /cgi-bin/crc32.cgi -P file-256M \ + -M POST >out-post.$i & + ./bin/http_client $COMMON_OPTS -p /docs/file-256M >out-get.$i & + sleep 1 + done + +If you don't want to create a hundred 256-megabyte out-get.* files, use -K +flag to discard output. + +Testing Large Packet Sizes +--------------------------------- + +IETF QUIC supports all valid UDP packet sizes. This section outlines the +environment setup and testing parameters necessary to test this feature. + +Compilation + - Make sure to compile the library in DEBUG mode so that the NDEBUG + define is off. + - Build both the http_client and http_server test programs. + +Running Instructions + - Specify maximum packet size using -o base_plpmtu=$number. + Valid sizes are up to 65535. + - Use the -W flag for http_client and http_server for the ability + to send packets of large size. + - On the client side, use the -z flag to specify the maximum size + of packet that the client will accept. + +Example Usage + ./bin/http_client -p /file-1M -H www.litespeedtech.com -s 192.168.0.85:5443 + -o version=FF000014 + ./bin/http_server -c www.litespeedtech.com,certschain,privkey + -s 0.0.0.0:5443 -W -o base_plpmtu=65535 + +Additional Notes + Since this feature does not have MTU discovery enabled at the time of + writing, make sure to use client and server machines that share a path + with the intended MTU. + +Control QUIC Settings via -o Flag +--------------------------------- + +Most of the settings in struct lsquic_engine_settings can be controlled +via -o flag. With exception of es_versions, which is a bit mask, other +es_* options can be mapped to corresponding -o value via s/^es_//: + + es_cfcw => -o cwcf=12345 + es_max_streams_in => -o max_streams_in=123 + +And so on. + +For example, to test version negotiation: + + ./bin/http_server -c www.litespeedtech.com,certschain,privkey \ + -o version=Q035 -L debug 2>server.out & + ./bin/http_client -H www.litespeedtech.com -p Makefile -L debug 2>client.out + +Above, the client will start with the default, which is the highest supported +QUIC version, which the server should negotiate down. You should see it from +the log files. + +The code to set options via -o flag lives in set_engine_option(). It is good +to update this function at the same time as member fields are added to struct +lsquic_engine_settings. + +Control LSQUIC Behavior via Environment Variables +------------------------------------------------- + +LSQUIC_PACKET_OUT_LIMIT + + If set, the value of this environment variable is the maximum number + of packets that can be sent out in one shot. The limit is in the test + program framework's ea_packets_out() callback. + + It is not applicable when sendmmsg(2) is used. + + Note 1: sendmmsg can be enabled using -g option, if available for your + platform. + + Note 2: see -m option for a related packet-out limitation. + +LSQUIC_LOSE_PACKETS_RE + + If set, this regular expression specifies the numbers of packets which + the sender will lose on purpose. For example: + + export LSQUIC_LOSE_PACKETS_RE='^(3|5|10)$' + + The act of losing a packet is performed by changing its payload to + zero-filled buffer of the same size, which is almost as good as + not sending anything. The latter is difficult to implement without + negatively affecting the regular code flow. + + Only available in debug builds. + +LSQUIC_PACER_INTERTICK + + Number of microsecods to use as constant intertick time in lieu of the + pacer's dynamic intertick time approximation. + + Only available in debug builds. + +LSQUIC_CUBIC_SAMPLING_RATE + + Number of microseconds between times CWND is logged at info level. + + Only available in debug builds. + +LSQUIC_RANDOM_SEND_FAILURE + + Frequency with which sending of packets fails: one out of this many + times on average. + + Only available when compiled with -DLSQUIC_RANDOM_SEND_FAILURE=1 + +LSQUIC_LOG_SECRETS + + If set to true value, crypto secrets will be logged. Applies to + IETF QUIC only. + +LSQUIC_COALESCE + + If set to false, packets are not coalesced. Defaults to true. + +LSQUIC_USE_POOLS + + If set to false, all memory pooling code is replaced with calls to + malloc() and free(). This facilitates debugging memory issues. + The default is true. + +LSQUIC_ACK_ATTACK + + If set to true, generate optimistic ACKs. + +Control Network-Related Stuff +----------------------------- + + -D Set `do not fragment' flag on outgoing UDP packets. + + -z BYTES Maximum size of outgoing UDP packets. The default is 1370 + bytes for IPv4 socket and 1350 bytes for IPv6 socket. + + -S opt=val Socket options. Supported options: + sndbuf=12345 # Sets SO_SNDBUF + rcvbuf=12345 # Sets SO_RCVBUF + + -g Use sendmmsg() to send packets. This is only compiled in + if available. + +More Compilation Options +------------------------ + +-DLSQUIC_CONN_STATS=1 + + Track some statistics about connections -- packets in, sent, delayed, + stream payload per packet size ratio, and some others -- and print them + at NOTICE level when connection is destroyed. + + Cumulative connections statistics are printed by the engine when it is + destroyed if lsquic_engine_api.ea_stats_fh is set. The HTTP client + programs sets it when -t or -T command-line option is used. + +-DLSQUIC_PACKINTS_SANITY_CHECK=1 + + Turn on sanity checking for packet interval code. The packet interval + code, shared by both send and receive history modules, contained a bug + which prompted me to add a checking function. + +-DLSQUIC_SEND_STATS=0 + + Turn off statistics collection performed by the send controller: number + of packets sent, resent, and delayed. + +-DLOG_PACKET_CHECKSUM=1 + + When turned on, CRC32 checksum of each sent and received packet is + logged as an event. + +-DLSQUIC_LOWEST_LOG_LEVEL=LSQ_LOG_WARN + + If you want to go even faster: compile out some log levels entirely. + +-DLSQUIC_EXTRA_CHECKS=1 + + Add relatively expensive run-time sanity checks + +-DLSQUIC_RANDOM_SEND_FAILURE=1 + + Simulate failure to send packets to test send resumption logic. When + this flag is specified, sending of packets will randomly fail, about + one out of every 10 attempts. Set environment variable + LSQUIC_RANDOM_SEND_FAILURE to change this frequency. + +-DLSQUIC_ECN_BLACK_HOLE=1 + + When compiled with this flag, setting environment variable + LSQUIC_ECN_BLACK_HOLE to 1 will emulate ECN black hole: all received + packets with ECN markings are dropped on the floor. + +-DLSQUIC_ACK_ATTACK=1 + + Enable ACK attack mode. See LSQUIC_ACK_ATTACK environment variable + entry above. diff --git a/external/lsquic/LICENSE b/external/lsquic/LICENSE new file mode 100644 index 0000000..690173b --- /dev/null +++ b/external/lsquic/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 - 2023 LiteSpeed Technologies Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/external/lsquic/LICENSE.chrome b/external/lsquic/LICENSE.chrome new file mode 100644 index 0000000..9efe9fa --- /dev/null +++ b/external/lsquic/LICENSE.chrome @@ -0,0 +1,32 @@ +A few parts of LiteSpeed QUIC library are based on proto-quic. That +code is covered by this additional license: + +------------------------------ + +Copyright 2015 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. +* Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/external/lsquic/README.md b/external/lsquic/README.md new file mode 100644 index 0000000..e3ecf5f --- /dev/null +++ b/external/lsquic/README.md @@ -0,0 +1,194 @@ +[![Linux and MacOS build status](https://ci.appveyor.com/api/projects/status/x790ve5msewmva2b/branch/master?svg=true)](https://ci.appveyor.com/project/litespeedtech/lsquic-linux/branch/master) +[![Windows build status](https://ci.appveyor.com/api/projects/status/ij4n3vy343pkgm1j/branch/master?svg=true)](https://ci.appveyor.com/project/litespeedtech/lsquic-windows/branch/master) +[![FreeBSD build status](https://api.cirrus-ci.com/github/litespeedtech/lsquic.svg)](https://cirrus-ci.com/github/litespeedtech/lsquic) +[![Documentation Status](https://readthedocs.org/projects/lsquic/badge/?version=latest)](https://lsquic.readthedocs.io/en/latest/?badge=latest) + +LiteSpeed QUIC (LSQUIC) Library README +============================================= + +Description +----------- + +LiteSpeed QUIC (LSQUIC) Library is an open-source implementation of QUIC +and HTTP/3 functionality for servers and clients. Most of the code in this +distribution is used in our own products: LiteSpeed Web Server, LiteSpeed ADC, +and OpenLiteSpeed. + +Currently supported QUIC versions are v1, v2, Internet-Draft versions 29, and 27; +and the older "Google" QUIC versions Q043, Q046, an Q050. + +Standard Compliance +------------------- + +LiteSpeed QUIC is mostly compliant to the follow RFCs: + +- [RFC 9000](https://www.rfc-editor.org/rfc/rfc9000) QUIC: A UDP-Based Multiplexed and Secure Transport +- [RFC 9001](https://www.rfc-editor.org/rfc/rfc9001) Using TLS to Secure QUIC +- [RFC 9002](https://www.rfc-editor.org/rfc/rfc9002) QUIC Loss Detection and Congestion Control +- [RFC 9114](https://www.rfc-editor.org/rfc/rfc9114) HTTP/3 +- [RFC 9204](https://www.rfc-editor.org/rfc/rfc9204) QPACK: Field Compression for HTTP/3 + +QUIC protocol extensions +------------------------ + +The following QUIC protocol extensions are implemented: + +- [RFC 9368](https://www.rfc-editor.org/rfc/rfc9368) Compatible Version Negotiation for QUIC +- [RFC 9369](https://www.rfc-editor.org/rfc/rfc9369) QUIC Version 2 +- [RFC 9218](https://www.rfc-editor.org/rfc/rfc9218) Extensible Prioritization Scheme for HTTP +- [RFC 9221](https://www.rfc-editor.org/rfc/rfc9221) An Unreliable Datagram Extension to QUIC +- [RFC 9287](https://www.rfc-editor.org/rfc/rfc9287) Greasing the QUIC Bit +- [ACK Frequency](https://datatracker.ietf.org/doc/draft-ietf-quic-ack-frequency/) +- [WebTransport](https://datatracker.ietf.org/doc/draft-ietf-webtrans-http3/) + +Documentation +------------- + +Documentation is available at https://lsquic.readthedocs.io/en/latest/. + +In addition, see example programs for API usage and EXAMPLES.txt for +some compilation and run-time options. + +Requirements +------------ + +To build LSQUIC, you need CMake, zlib, and BoringSSL. The example program +uses libevent to provide the event loop. + +Building BoringSSL +------------------ + +BoringSSL is not packaged; you have to build it yourself. The process is +straightforward. You will need `go` installed. + +1. Clone BoringSSL by issuing the following command: + +``` +git clone https://boringssl.googlesource.com/boringssl +cd boringssl +``` + +You may need to install pre-requisites like zlib and libevent. + +2. Use specific BoringSSL version + +``` +git checkout 9fc1c33e9c21439ce5f87855a6591a9324e569fd +``` +Or, just try the latest master branch. + +3. Compile the library + +``` +cmake . && make +``` + +Remember where BoringSSL sources are: +``` +BORINGSSL=$PWD +``` + +If you want to turn on optimizations, do + +``` +cmake -DCMAKE_BUILD_TYPE=Release . && make +``` + +If you want to build as a library, (necessary to build lsquic itself +as as shared library) do: + +``` +cmake -DBUILD_SHARED_LIBS=1 . && make +``` + +Building LSQUIC Library +----------------------- + +LSQUIC's `http_client`, `http_server`, and the tests link BoringSSL +libraries statically. Following previous section, you can build LSQUIC +as follows: + +1. Get the source code + +``` +git clone https://github.com/litespeedtech/lsquic.git +cd lsquic +git submodule update --init +``` + +2. Compile the library + +Statically: + + +``` +# $BORINGSSL is the top-level BoringSSL directory from the previous step +cmake -DBORINGSSL_DIR=$BORINGSSL . +make +``` + +As a dynamic library: + +``` +cmake -DLSQUIC_SHARED_LIB=1 -DBORINGSSL_DIR=$BORINGSSL . +make +``` + + +3. Run tests + +``` +make test +``` + +Building with Docker +--------- +The library and the example client and server can be built with Docker. + +Initialize Git submodules: +``` +cd lsquic +git submodule update --init +``` + +Build the Docker image: +``` +docker build -t lsquic . +``` + +Then you can use the examples from the command line. For example: +``` +sudo docker run -it --rm lsquic http_client -s www.google.com -p / -o version=h3 +sudo docker run -p 12345:12345/udp -v /path/to/certs:/mnt/certs -it --rm lsquic http_server -c www.example.com,/mnt/certs/chain,/mnt/certs/key +``` + +Platforms +--------- + +The library has been tested on the following platforms: +- Linux + - i386 + - x86_64 + - ARM (Raspberry Pi 3) +- FreeBSD + - i386 +- MacOS + - x86_64 +- iOS + - ARM +- Android + - ARM +- Windows + - x86_64 + +Get Involved +------------ + +Do not hesitate to report bugs back to us. Even better, send us fixes +and improvements! + +Have fun, + +LiteSpeed QUIC Team. + +Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc diff --git a/external/lsquic/appveyor-linux.yml b/external/lsquic/appveyor-linux.yml new file mode 100644 index 0000000..0fa15e1 --- /dev/null +++ b/external/lsquic/appveyor-linux.yml @@ -0,0 +1,48 @@ +version: 2.{branch}.{build} + +image: +- Ubuntu2004 +- MacOS + +build: off + +init: + +cache: +# - boringssl -> appveyor-linux.yml # we define the commit in here + +install: + +- sh: >- + + if [[ -e boringssl/CMakeLists.txt ]] ; then + + echo cached + + else + + git clone https://boringssl.googlesource.com/boringssl + + cd boringssl + + git checkout cf8d3ad3cea51cf7184307d54f465da62b7d8408 + + cmake . + + make -j4 + + cd .. + + fi + + git submodule init + + git submodule update --checkout --force --recursive + + cmake -DBORINGSSL_DIR=$PWD/boringssl . + + make + +test_script: + +- sh: make test diff --git a/external/lsquic/appveyor-windows.cmd b/external/lsquic/appveyor-windows.cmd new file mode 100644 index 0000000..fac703f --- /dev/null +++ b/external/lsquic/appveyor-windows.cmd @@ -0,0 +1,23 @@ +vcpkg list + +if exist ".\boringssl\CMakeLists.txt" ( + echo cached +) else ( + git clone https://boringssl.googlesource.com/boringssl + cd boringssl + git checkout cf8d3ad3cea51cf7184307d54f465da62b7d8408 + cmake -DCMAKE_GENERATOR_PLATFORM=x64 --config Debug -DBUILD_SHARED_LIBS=OFF -DOPENSSL_NO_ASM=1 . + msbuild /m ALL_BUILD.vcxproj + cd .. +) + +git submodule init + +git submodule update --checkout --force --recursive + +set VCPKG_ROOT=c:/tools/vcpkg/ + +cmake -DCMAKE_GENERATOR_PLATFORM=x64 -DBUILD_SHARED_LIBS=OFF -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=c:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake -DGETOPT_INCLUDE_DIR=c:/tools/vcpkg/installed/x64-windows/include -DGETOPT_LIB=c:/tools/vcpkg/installed/x64-windows/lib/getopt.lib -DBORINGSSL_DIR=%cd%\boringssl . + + +msbuild /m ALL_BUILD.vcxproj diff --git a/external/lsquic/appveyor-windows.yml b/external/lsquic/appveyor-windows.yml new file mode 100644 index 0000000..1aee700 --- /dev/null +++ b/external/lsquic/appveyor-windows.yml @@ -0,0 +1,33 @@ +version: 1.{branch}.{build} + +image: Visual Studio 2017 + +init: + +- cmd: '' + +install: + +- cmd: >- + + vcpkg install zlib:x64-windows-static + + vcpkg install libevent:x64-windows-static + + vcpkg install pcre:x64-windows-static + + vcpkg install getopt:x64-windows + + vcpkg integrate install + +cache: +- c:\tools\vcpkg\installed +- boringssl -> appveyor-windows.yml, appveyor-windows.cmd # we define the commit in here + +build_script: + +- cmd: appveyor-windows.cmd + +test_script: + +- cmd: msbuild /m RUN_TESTS.vcxproj diff --git a/external/lsquic/bin/CMakeLists.txt b/external/lsquic/bin/CMakeLists.txt new file mode 100644 index 0000000..5afd506 --- /dev/null +++ b/external/lsquic/bin/CMakeLists.txt @@ -0,0 +1,120 @@ +# Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. + +include_directories(${CMAKE_CURRENT_BINARY_DIR}) +LIST(APPEND LIBS ${EVENT_LIB}) + +IF(MSVC) + FIND_LIBRARY(PCRE_LIB pcre) + IF(PCRE_LIB) + MESSAGE(STATUS "Found pcre: ${PCRE_LIB}") + LIST(APPEND LIBS ${PCRE_LIB}) + ELSE() + MESSAGE(STATUS "pcre not found: http_server won't work") + ENDIF() + FIND_LIBRARY(PCREPOSIX_LIB pcreposix) + IF(PCREPOSIX_LIB) + MESSAGE(STATUS "Found pcreposix: ${PCREPOSIX_LIB}") + LIST(APPEND LIBS ${PCREPOSIX_LIB}) + ELSE() + MESSAGE(STATUS "pcreposix not found: http_server won't work") + ENDIF() + LIST(APPEND LIBS ws2_32) + LIST(APPEND LIBS iphlpapi) + LIST(APPEND LIBS ${GETOPT_LIB}) +ENDIF() + +add_executable(http_server http_server.c prog.c test_common.c test_cert.c) +IF(NOT MSVC) # TODO: port MD5 server and client to Windows +add_executable(md5_server md5_server.c prog.c test_common.c test_cert.c) +add_executable(md5_client md5_client.c prog.c test_common.c test_cert.c) +ENDIF() +add_executable(echo_server echo_server.c prog.c test_common.c test_cert.c) +add_executable(echo_client echo_client.c prog.c test_common.c test_cert.c) +add_executable(duck_server duck_server.c prog.c test_common.c test_cert.c) +add_executable(duck_client duck_client.c prog.c test_common.c test_cert.c) +add_executable(perf_client perf_client.c prog.c test_common.c test_cert.c) +add_executable(perf_server perf_server.c prog.c test_common.c test_cert.c) + + +IF (NOT MSVC) + +add_executable(http_client + http_client.c + prog.c + test_common.c + test_cert.c +) + +#MSVC +ELSE() + +add_executable(http_client + http_client.c + prog.c + test_common.c + test_cert.c +) + +ENDIF() + +TARGET_LINK_LIBRARIES(http_client ${LIBS}) +TARGET_LINK_LIBRARIES(http_server ${LIBS}) +IF(NOT MSVC) +TARGET_LINK_LIBRARIES(md5_server ${LIBS}) +TARGET_LINK_LIBRARIES(md5_client ${LIBS}) +ENDIF() +TARGET_LINK_LIBRARIES(echo_server ${LIBS}) +TARGET_LINK_LIBRARIES(echo_client ${LIBS}) +TARGET_LINK_LIBRARIES(duck_server ${LIBS}) +TARGET_LINK_LIBRARIES(duck_client ${LIBS}) +TARGET_LINK_LIBRARIES(perf_client ${LIBS}) +TARGET_LINK_LIBRARIES(perf_server ${LIBS}) + + +INCLUDE(CheckFunctionExists) +CHECK_FUNCTION_EXISTS(sendmmsg HAVE_SENDMMSG) +CHECK_FUNCTION_EXISTS(recvmmsg HAVE_RECVMMSG) +CHECK_FUNCTION_EXISTS(open_memstream HAVE_OPEN_MEMSTREAM) + + +INCLUDE(CheckSymbolExists) + +CHECK_SYMBOL_EXISTS( + IP_MTU_DISCOVER + "netinet/in.h" + HAVE_IP_MTU_DISCOVER +) + +CHECK_SYMBOL_EXISTS( + IPV6_MTU_DISCOVER + "netinet/in.h" + HAVE_IPV6_MTU_DISCOVER +) + +CHECK_SYMBOL_EXISTS( + IP_DONTFRAG + "netinet/in.h" + HAVE_IP_DONTFRAG +) + +CHECK_SYMBOL_EXISTS( + preadv + "sys/uio.h" + HAVE_PREADV +) + +INCLUDE(CheckIncludeFiles) + +IF (MSVC AND PCRE_LIB) +FIND_PATH(EVENT_INCLUDE_DIR NAMES pcreposix.h) +IF (EVENT_INCLUDE_DIR) + MESSAGE(STATUS "found pcreposix.h") + SET(HAVE_REGEX 1) +ELSE() + MESSAGE(FATAL_ERROR "event2/event.h was not found") +ENDIF() +ELSE() +CHECK_INCLUDE_FILES(regex.h HAVE_REGEX) +ENDIF() + +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/test_config.h.in ${CMAKE_CURRENT_BINARY_DIR}/test_config.h) diff --git a/external/lsquic/bin/duck_client.c b/external/lsquic/bin/duck_client.c new file mode 100644 index 0000000..3e12ac9 --- /dev/null +++ b/external/lsquic/bin/duck_client.c @@ -0,0 +1,192 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * duck_client.c -- The siduck client. See + * https://tools.ietf.org/html/draft-pardue-quic-siduck-00 + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef WIN32 +#include +#include +#define Read read +#else +#include "vc_compat.h" +#include "getopt.h" +#include +#define Read _read +#define STDIN_FILENO 0 +#endif + +#include + +#include "lsquic.h" +#include "test_common.h" +#include "prog.h" + +#include "../src/liblsquic/lsquic_logger.h" + +/* Expected request and response of the siduck protocol */ +#define REQUEST "quack" +#define RESPONSE "quack-ack" + +static lsquic_conn_ctx_t * +duck_client_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) +{ + LSQ_NOTICE("created a new connection"); + return stream_if_ctx; +} + + +static void +duck_client_on_hsk_done (lsquic_conn_t *conn, enum lsquic_hsk_status s) +{ + if (s == LSQ_HSK_OK || s == LSQ_HSK_RESUMED_OK) + { + if (lsquic_conn_want_datagram_write(conn, 1) < 0) + LSQ_ERROR("want_datagram_write failed"); + } +} + + +static void +duck_client_on_conn_closed (lsquic_conn_t *conn) +{ + lsquic_conn_ctx_t *ctx = lsquic_conn_get_ctx(conn); + LSQ_NOTICE("Connection closed, stop client"); + prog_stop((struct prog *) ctx); + + lsquic_conn_set_ctx(conn, NULL); +} + + +static ssize_t +duck_client_on_dg_write (lsquic_conn_t *conn, void *buf, size_t sz) +{ + /* We only write one request */ +#ifndef NDEBUG + int s = +#endif + lsquic_conn_want_datagram_write(conn, 0); + assert(s == 1); /* Old value was "yes, we want to write a datagram" */ + + if (sz >= sizeof(REQUEST) - 1) + { + LSQ_INFO("wrote `%s' in request", REQUEST); + memcpy(buf, REQUEST, sizeof(REQUEST) - 1); + return sizeof(REQUEST) - 1; + } + else + return -1; +} + + +static void +duck_client_on_datagram (lsquic_conn_t *conn, const void *buf, size_t bufsz) +{ + if (bufsz == sizeof(RESPONSE) - 1 + && 0 == memcmp(buf, RESPONSE, sizeof(RESPONSE) - 1)) + { + LSQ_DEBUG("received the expected `%s' response", RESPONSE); + lsquic_conn_close(conn); + } + else + { + LSQ_NOTICE("unexpected request received, abort connection"); + lsquic_conn_abort(conn); + } +} + + +const struct lsquic_stream_if duck_client_stream_if = { + .on_new_conn = duck_client_on_new_conn, + .on_hsk_done = duck_client_on_hsk_done, + .on_conn_closed = duck_client_on_conn_closed, + .on_dg_write = duck_client_on_dg_write, + .on_datagram = duck_client_on_datagram, +}; + + +static void +usage (const char *prog) +{ + const char *const slash = strrchr(prog, '/'); + if (slash) + prog = slash + 1; + LSQ_NOTICE( +"Usage: %s [opts]\n" +"\n" +"Options:\n" + , prog); +} + + +int +main (int argc, char **argv) +{ + int opt, s; + struct sport_head sports; + struct prog prog; + + TAILQ_INIT(&sports); + prog_init(&prog, 0, &sports, &duck_client_stream_if, &prog); + prog.prog_settings.es_datagrams = 1; + prog.prog_settings.es_init_max_data = 0; + prog.prog_settings.es_init_max_streams_bidi = 0; + prog.prog_settings.es_init_max_streams_uni = 0; + prog.prog_settings.es_max_streams_in = 0; + prog.prog_api.ea_alpn = "siduck-00"; + + while (-1 != (opt = getopt(argc, argv, PROG_OPTS "h"))) + { + switch (opt) { + case 'h': + usage(argv[0]); + prog_print_common_options(&prog, stdout); + exit(0); + default: + if (0 != prog_set_opt(&prog, opt, optarg)) + exit(1); + } + } + +#ifndef WIN32 + int flags = fcntl(STDIN_FILENO, F_GETFL); + flags |= O_NONBLOCK; + if (0 != fcntl(STDIN_FILENO, F_SETFL, flags)) + { + perror("fcntl"); + exit(1); + } +#else + { + u_long on = 1; + ioctlsocket(STDIN_FILENO, FIONBIO, &on); + } +#endif + + if (0 != prog_prep(&prog)) + { + LSQ_ERROR("could not prep"); + exit(EXIT_FAILURE); + } + if (0 != prog_connect(&prog, NULL, 0)) + { + LSQ_ERROR("could not connect"); + exit(EXIT_FAILURE); + } + + LSQ_DEBUG("entering event loop"); + + s = prog_run(&prog); + prog_cleanup(&prog); + + exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); +} diff --git a/external/lsquic/bin/duck_server.c b/external/lsquic/bin/duck_server.c new file mode 100644 index 0000000..7f7da80 --- /dev/null +++ b/external/lsquic/bin/duck_server.c @@ -0,0 +1,161 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * A duck quacks! The server for the siduck protocol: + * https://tools.ietf.org/html/draft-pardue-quic-siduck-00 + */ + +#include +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#include +#else +#include "vc_compat.h" +#include "getopt.h" +#endif + +#include "lsquic.h" +#include "../src/liblsquic/lsquic_hash.h" +#include "test_common.h" +#include "test_cert.h" +#include "prog.h" + +#include "../src/liblsquic/lsquic_logger.h" + + +static lsquic_conn_ctx_t * +duck_server_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) +{ + LSQ_NOTICE("New siduck connection established!"); + return NULL; +} + + +static void +duck_server_on_conn_closed (lsquic_conn_t *conn) +{ + LSQ_NOTICE("siduck connection closed"); + lsquic_conn_set_ctx(conn, NULL); +} + + +/* Expected request and response of the siduck protocol */ +#define REQUEST "quack" +#define RESPONSE "quack-ack" + + +static ssize_t +duck_on_dg_write (lsquic_conn_t *conn, void *buf, size_t sz) +{ + int s; + + /* We only write one response */ + s = lsquic_conn_want_datagram_write(conn, 0); + assert(s == 1); /* Old value was "yes" */ + + if (sz >= sizeof(RESPONSE) - 1) + { + LSQ_INFO("wrote `%s' in response", RESPONSE); + memcpy(buf, RESPONSE, sizeof(RESPONSE) - 1); + lsquic_conn_close(conn); /* Close connection right away */ + return sizeof(RESPONSE) - 1; + } + else + return -1; +} + + +static void +duck_on_datagram (lsquic_conn_t *conn, const void *buf, size_t bufsz) +{ + int s; + + if (bufsz == sizeof(REQUEST) - 1 + && 0 == memcmp(buf, REQUEST, sizeof(REQUEST) - 1)) + { + LSQ_DEBUG("received the expected `%s' request", REQUEST); + s = lsquic_conn_want_datagram_write(conn, 1); + assert(s == 0); + } + else + { + LSQ_NOTICE("unexpected request received, abort connection"); + lsquic_conn_abort(conn); + } +} + + +const struct lsquic_stream_if duck_server_stream_if = { + .on_new_conn = duck_server_on_new_conn, + .on_conn_closed = duck_server_on_conn_closed, + .on_dg_write = duck_on_dg_write, + .on_datagram = duck_on_datagram, +}; + + +static void +usage (const char *prog) +{ + const char *const slash = strrchr(prog, '/'); + if (slash) + prog = slash + 1; + printf( +"Usage: %s [opts]\n" +"\n" +"Options:\n" + , prog); +} + + +int +main (int argc, char **argv) +{ + int opt, s; + struct prog prog; + struct sport_head sports; + + TAILQ_INIT(&sports); + prog_init(&prog, LSENG_SERVER, &sports, &duck_server_stream_if, NULL); + prog.prog_settings.es_datagrams = 1; + prog.prog_settings.es_init_max_data = 0; + prog.prog_settings.es_init_max_streams_bidi = 0; + prog.prog_settings.es_init_max_streams_uni = 0; + prog.prog_settings.es_max_streams_in = 0; + + while (-1 != (opt = getopt(argc, argv, PROG_OPTS "h"))) + { + switch (opt) { + case 'h': + usage(argv[0]); + prog_print_common_options(&prog, stdout); + exit(0); + default: + if (0 != prog_set_opt(&prog, opt, optarg)) + exit(1); + } + } + + if (0 != add_alpn("siduck-00")) + { + LSQ_ERROR("could not add ALPN"); + exit(EXIT_FAILURE); + } + + if (0 != prog_prep(&prog)) + { + LSQ_ERROR("could not prep"); + exit(EXIT_FAILURE); + } + + LSQ_DEBUG("entering event loop"); + + s = prog_run(&prog); + prog_cleanup(&prog); + + exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); +} diff --git a/external/lsquic/bin/echo_client.c b/external/lsquic/bin/echo_client.c new file mode 100644 index 0000000..3fb42f3 --- /dev/null +++ b/external/lsquic/bin/echo_client.c @@ -0,0 +1,271 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * echo_client.c -- This is really a "line client:" it connects to QUIC server + * and sends it stuff, line by line. It works in tandem with echo_server. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef WIN32 +#include +#include +#define Read read +#else +#include "vc_compat.h" +#include "getopt.h" +#include +#define Read _read +#define STDIN_FILENO 0 +#endif + +#include + +#include "lsquic.h" +#include "test_common.h" +#include "prog.h" + +#include "../src/liblsquic/lsquic_logger.h" + +struct lsquic_conn_ctx; + +struct echo_client_ctx { + struct lsquic_conn_ctx *conn_h; + struct prog *prog; +}; + +struct lsquic_conn_ctx { + lsquic_conn_t *conn; + struct echo_client_ctx *client_ctx; +}; + + +static lsquic_conn_ctx_t * +echo_client_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) +{ + struct echo_client_ctx *client_ctx = stream_if_ctx; + lsquic_conn_ctx_t *conn_h = malloc(sizeof(*conn_h)); + conn_h->conn = conn; + conn_h->client_ctx = client_ctx; + client_ctx->conn_h = conn_h; + lsquic_conn_make_stream(conn); + return conn_h; +} + + +static void +echo_client_on_conn_closed (lsquic_conn_t *conn) +{ + lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); + LSQ_NOTICE("Connection closed"); + prog_stop(conn_h->client_ctx->prog); + + lsquic_conn_set_ctx(conn, NULL); + free(conn_h); +} + + +struct lsquic_stream_ctx { + lsquic_stream_t *stream; + struct echo_client_ctx *client_ctx; + struct event *read_stdin_ev; + char buf[0x100]; + size_t buf_off; +}; + + +static void +read_stdin (evutil_socket_t fd, short what, void *ctx) +{ + ssize_t nr; + lsquic_stream_ctx_t *st_h = ctx; + + nr = Read(fd, st_h->buf + st_h->buf_off++, 1); + LSQ_DEBUG("read %zd bytes from stdin", nr); + if (0 == nr) + { + lsquic_stream_shutdown(st_h->stream, 2); + } + else if (-1 == nr) + { + perror("read"); + exit(1); + } + else if ('\n' == st_h->buf[ st_h->buf_off - 1 ]) + { + LSQ_DEBUG("read newline: wantwrite"); + lsquic_stream_wantwrite(st_h->stream, 1); + lsquic_engine_process_conns(st_h->client_ctx->prog->prog_engine); + } + else if (st_h->buf_off == sizeof(st_h->buf)) + { + LSQ_NOTICE("line too long"); + exit(2); + } + else + event_add(st_h->read_stdin_ev, NULL); +} + + +static lsquic_stream_ctx_t * +echo_client_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) +{ + lsquic_stream_ctx_t *st_h = calloc(1, sizeof(*st_h)); + st_h->stream = stream; + st_h->client_ctx = stream_if_ctx; + st_h->buf_off = 0; + st_h->read_stdin_ev = event_new(prog_eb(st_h->client_ctx->prog), + STDIN_FILENO, EV_READ, read_stdin, st_h); + event_add(st_h->read_stdin_ev, NULL); + return st_h; +} + + +static void +echo_client_on_read (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + char c; + size_t nr; + + nr = lsquic_stream_read(stream, &c, 1); + if (0 == nr) + { + lsquic_stream_shutdown(stream, 2); + return; + } + printf("%c", c); + fflush(stdout); + if ('\n' == c) + { + event_add(st_h->read_stdin_ev, NULL); + lsquic_stream_wantread(stream, 0); + } +} + + +static void +echo_client_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + /* Here we make an assumption that we can write the whole buffer. + * Don't do it in a real program. + */ + lsquic_stream_write(stream, st_h->buf, st_h->buf_off); + st_h->buf_off = 0; + + lsquic_stream_flush(stream); + lsquic_stream_wantwrite(stream, 0); + lsquic_stream_wantread(stream, 1); +} + + +static void +echo_client_on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + LSQ_NOTICE("%s called", __func__); + if (st_h->read_stdin_ev) + { + event_del(st_h->read_stdin_ev); + event_free(st_h->read_stdin_ev); + } + free(st_h); + lsquic_conn_close(lsquic_stream_conn(stream)); +} + + +const struct lsquic_stream_if client_echo_stream_if = { + .on_new_conn = echo_client_on_new_conn, + .on_conn_closed = echo_client_on_conn_closed, + .on_new_stream = echo_client_on_new_stream, + .on_read = echo_client_on_read, + .on_write = echo_client_on_write, + .on_close = echo_client_on_close, +}; + + +static void +usage (const char *prog) +{ + const char *const slash = strrchr(prog, '/'); + if (slash) + prog = slash + 1; + LSQ_NOTICE( +"Usage: %s [opts]\n" +"\n" +"Options:\n" + , prog); +} + + +int +main (int argc, char **argv) +{ + int opt, s; + struct sport_head sports; + struct prog prog; + struct echo_client_ctx client_ctx; + +#ifdef WIN32 + fprintf(stderr, "%s does not work on Windows, see\n" + "https://github.com/litespeedtech/lsquic/issues/219\n", argv[0]); + exit(EXIT_FAILURE); +#endif + + memset(&client_ctx, 0, sizeof(client_ctx)); + client_ctx.prog = &prog; + + TAILQ_INIT(&sports); + prog_init(&prog, 0, &sports, &client_echo_stream_if, &client_ctx); + prog.prog_api.ea_alpn = "echo"; + + while (-1 != (opt = getopt(argc, argv, PROG_OPTS "h"))) + { + switch (opt) { + case 'h': + usage(argv[0]); + prog_print_common_options(&prog, stdout); + exit(0); + default: + if (0 != prog_set_opt(&prog, opt, optarg)) + exit(1); + } + } + +#ifndef WIN32 + int flags = fcntl(STDIN_FILENO, F_GETFL); + flags |= O_NONBLOCK; + if (0 != fcntl(STDIN_FILENO, F_SETFL, flags)) + { + perror("fcntl"); + exit(1); + } +#else + { + u_long on = 1; + ioctlsocket(STDIN_FILENO, FIONBIO, &on); + } +#endif + + if (0 != prog_prep(&prog)) + { + LSQ_ERROR("could not prep"); + exit(EXIT_FAILURE); + } + if (0 != prog_connect(&prog, NULL, 0)) + { + LSQ_ERROR("could not connect"); + exit(EXIT_FAILURE); + } + + LSQ_DEBUG("entering event loop"); + + s = prog_run(&prog); + prog_cleanup(&prog); + + exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); +} diff --git a/external/lsquic/bin/echo_server.c b/external/lsquic/bin/echo_server.c new file mode 100644 index 0000000..442ce8d --- /dev/null +++ b/external/lsquic/bin/echo_server.c @@ -0,0 +1,238 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * echo_server.c -- QUIC server that echoes back input line by line + */ + +#include +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#include +#else +#include "vc_compat.h" +#include "getopt.h" +#endif + +#include "lsquic.h" +#include "test_common.h" +#include "../src/liblsquic/lsquic_hash.h" +#include "test_cert.h" +#include "prog.h" + +#include "../src/liblsquic/lsquic_logger.h" + + +struct lsquic_conn_ctx; + +struct echo_server_ctx { + TAILQ_HEAD(, lsquic_conn_ctx) conn_ctxs; + unsigned max_reqs; + int n_conn; + struct sport_head sports; + struct prog *prog; +}; + +struct lsquic_conn_ctx { + TAILQ_ENTRY(lsquic_conn_ctx) next_connh; + lsquic_conn_t *conn; + struct echo_server_ctx *server_ctx; +}; + + +static lsquic_conn_ctx_t * +echo_server_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) +{ + struct echo_server_ctx *server_ctx = stream_if_ctx; + lsquic_conn_ctx_t *conn_h = calloc(1, sizeof(*conn_h)); + conn_h->conn = conn; + conn_h->server_ctx = server_ctx; + TAILQ_INSERT_TAIL(&server_ctx->conn_ctxs, conn_h, next_connh); + LSQ_NOTICE("New connection!"); + print_conn_info(conn); + return conn_h; +} + + +static void +echo_server_on_conn_closed (lsquic_conn_t *conn) +{ + lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); + if (conn_h->server_ctx->n_conn) + { + --conn_h->server_ctx->n_conn; + LSQ_NOTICE("Connection closed, remaining: %d", conn_h->server_ctx->n_conn); + if (0 == conn_h->server_ctx->n_conn) + prog_stop(conn_h->server_ctx->prog); + } + else + LSQ_NOTICE("Connection closed"); + TAILQ_REMOVE(&conn_h->server_ctx->conn_ctxs, conn_h, next_connh); + + lsquic_conn_set_ctx(conn, NULL); + free(conn_h); +} + + +struct lsquic_stream_ctx { + lsquic_stream_t *stream; + struct echo_server_ctx *server_ctx; + char buf[0x100]; + size_t buf_off; +}; + + +static lsquic_stream_ctx_t * +echo_server_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) +{ + lsquic_stream_ctx_t *st_h = malloc(sizeof(*st_h)); + st_h->stream = stream; + st_h->server_ctx = stream_if_ctx; + st_h->buf_off = 0; + lsquic_stream_wantread(stream, 1); + return st_h; +} + + +static struct lsquic_conn_ctx * +find_conn_h (const struct echo_server_ctx *server_ctx, lsquic_stream_t *stream) +{ + struct lsquic_conn_ctx *conn_h; + lsquic_conn_t *conn; + + conn = lsquic_stream_conn(stream); + TAILQ_FOREACH(conn_h, &server_ctx->conn_ctxs, next_connh) + if (conn_h->conn == conn) + return conn_h; + return NULL; +} + + +static void +echo_server_on_read (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + struct lsquic_conn_ctx *conn_h; + size_t nr; + + nr = lsquic_stream_read(stream, st_h->buf + st_h->buf_off++, 1); + if (0 == nr) + { + LSQ_NOTICE("EOF: closing connection"); + lsquic_stream_shutdown(stream, 2); + conn_h = find_conn_h(st_h->server_ctx, stream); + lsquic_conn_close(conn_h->conn); + } + else if ('\n' == st_h->buf[ st_h->buf_off - 1 ]) + { + /* Found end of line: echo it back */ + lsquic_stream_wantwrite(stream, 1); + lsquic_stream_wantread(stream, 0); + } + else if (st_h->buf_off == sizeof(st_h->buf)) + { + /* Out of buffer space: line too long */ + LSQ_NOTICE("run out of buffer space"); + lsquic_stream_shutdown(stream, 2); + } + else + { + /* Keep reading */; + } +} + + +static void +echo_server_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + lsquic_stream_write(stream, st_h->buf, st_h->buf_off); + st_h->buf_off = 0; + lsquic_stream_flush(stream); + lsquic_stream_wantwrite(stream, 0); + lsquic_stream_wantread(stream, 1); +} + + +static void +echo_server_on_stream_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + struct lsquic_conn_ctx *conn_h; + LSQ_NOTICE("%s called", __func__); + conn_h = find_conn_h(st_h->server_ctx, stream); + LSQ_WARN("%s: TODO: free connection handler %p", __func__, conn_h); + free(st_h); +} + + +const struct lsquic_stream_if server_echo_stream_if = { + .on_new_conn = echo_server_on_new_conn, + .on_conn_closed = echo_server_on_conn_closed, + .on_new_stream = echo_server_on_new_stream, + .on_read = echo_server_on_read, + .on_write = echo_server_on_write, + .on_close = echo_server_on_stream_close, +}; + + +static void +usage (const char *prog) +{ + const char *const slash = strrchr(prog, '/'); + if (slash) + prog = slash + 1; + printf( +"Usage: %s [opts]\n" +"\n" +"Options:\n" + , prog); +} + + +int +main (int argc, char **argv) +{ + int opt, s; + struct prog prog; + struct echo_server_ctx server_ctx; + + memset(&server_ctx, 0, sizeof(server_ctx)); + server_ctx.prog = &prog; + TAILQ_INIT(&server_ctx.sports); + TAILQ_INIT(&server_ctx.conn_ctxs); + + prog_init(&prog, LSENG_SERVER, &server_ctx.sports, + &server_echo_stream_if, &server_ctx); + + while (-1 != (opt = getopt(argc, argv, PROG_OPTS "hn:"))) + { + switch (opt) { + case 'n': + server_ctx.n_conn = atoi(optarg); + break; + case 'h': + usage(argv[0]); + prog_print_common_options(&prog, stdout); + exit(0); + default: + if (0 != prog_set_opt(&prog, opt, optarg)) + exit(1); + } + } + + add_alpn("echo"); + if (0 != prog_prep(&prog)) + { + LSQ_ERROR("could not prep"); + exit(EXIT_FAILURE); + } + + LSQ_DEBUG("entering event loop"); + + s = prog_run(&prog); + prog_cleanup(&prog); + + exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); +} diff --git a/external/lsquic/bin/http_client.c b/external/lsquic/bin/http_client.c new file mode 100644 index 0000000..73c803b --- /dev/null +++ b/external/lsquic/bin/http_client.c @@ -0,0 +1,1897 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * http_client.c -- A simple HTTP/QUIC client + */ + +#ifndef WIN32 +#include +#include +#else +#include +#include +#include +#include +#include +#define STDOUT_FILENO 1 +#define random rand +#pragma warning(disable:4996) //POSIX name deprecated +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#include +#include +#include +#endif +#include +#include +#include +#include + +#include +#include +#include + +#include "lsquic.h" +#include "test_common.h" +#include "prog.h" + +#include "../src/liblsquic/lsquic_logger.h" +#include "../src/liblsquic/lsquic_int_types.h" +#include "../src/liblsquic/lsquic_util.h" +#include "../src/liblsquic/lsquic_hash.h" +#if LSQUIC_QIR +/* include directly for reset_stream testing */ +#include "../src/liblsquic/lsquic_stream.h" +/* include directly for retire_cid testing */ +#include "../src/liblsquic/lsquic_conn.h" +#endif +#include "lsxpack_header.h" + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + +/* This is used to exercise generating and sending of priority frames */ +static int randomly_reprioritize_streams; + +static int s_display_cert_chain; + +/* If this file descriptor is open, the client will accept server push and + * dump the contents here. See -u flag. + */ +static int promise_fd = -1; + +/* Set to true value to use header bypass. This means that the use code + * creates header set via callbacks and then fetches it by calling + * lsquic_stream_get_hset() when the first "on_read" event is called. + */ +static int g_header_bypass; + +static int s_discard_response; + +/* If set to a non-zero value, abandon reading from stream early: read at + * most `s_abandon_early' bytes and then close the stream. + */ +static long s_abandon_early; + +struct sample_stats +{ + unsigned n; + unsigned long min, max; + unsigned long sum; /* To calculate mean */ + unsigned long sum_X2; /* To calculate stddev */ +}; + +static struct sample_stats s_stat_to_conn, /* Time to connect */ + s_stat_ttfb, + s_stat_req; /* From TTFB to EOS */ +static unsigned s_stat_conns_ok, s_stat_conns_failed; +static unsigned long s_stat_downloaded_bytes; + +static void +update_sample_stats (struct sample_stats *stats, unsigned long val) +{ + LSQ_DEBUG("%s: %p: %lu", __func__, stats, val); + if (stats->n) + { + if (val < stats->min) + stats->min = val; + else if (val > stats->max) + stats->max = val; + } + else + { + stats->min = val; + stats->max = val; + } + stats->sum += val; + stats->sum_X2 += val * val; + ++stats->n; +} + + +static void +calc_sample_stats (const struct sample_stats *stats, + long double *mean_p, long double *stddev_p) +{ + unsigned long mean, tmp; + + if (stats->n) + { + mean = stats->sum / stats->n; + *mean_p = (long double) mean; + if (stats->n > 1) + { + tmp = stats->sum_X2 - stats->n * mean * mean; + tmp /= stats->n - 1; + *stddev_p = sqrtl((long double) tmp); + } + else + *stddev_p = 0; + } + else + { + *mean_p = 0; + *stddev_p = 0; + } +} + + +/* When more than `nread' bytes are read from stream `stream_id', apply + * priority in `ehp'. + */ +struct priority_spec +{ + enum { + PRIORITY_SPEC_ACTIVE = 1 << 0, + } flags; + lsquic_stream_id_t stream_id; + size_t nread; + struct lsquic_ext_http_prio ehp; +}; +static struct priority_spec *s_priority_specs; +static unsigned s_n_prio_specs; + +static void +maybe_perform_priority_actions (struct lsquic_stream *, lsquic_stream_ctx_t *); + +struct lsquic_conn_ctx; + +struct path_elem { + TAILQ_ENTRY(path_elem) next_pe; + const char *path; +}; + +struct http_client_ctx { + const char *hostname; + const char *method; + const char *payload; + char payload_size[20]; + + /* hcc_path_elems holds a list of paths which are to be requested from + * the server. Each new request gets the next path from the list (the + * iterator is stored in hcc_cur_pe); when the end is reached, the + * iterator wraps around. + */ + TAILQ_HEAD(, path_elem) hcc_path_elems; + struct path_elem *hcc_cur_pe; + + unsigned hcc_total_n_reqs; + unsigned hcc_reqs_per_conn; + unsigned hcc_concurrency; + unsigned hcc_cc_reqs_per_conn; + unsigned hcc_n_open_conns; + unsigned hcc_reset_after_nbytes; + unsigned hcc_retire_cid_after_nbytes; + const char *hcc_download_dir; + + char *hcc_sess_resume_file_name; + + enum { + HCC_SKIP_SESS_RESUME = (1 << 0), + HCC_SEEN_FIN = (1 << 1), + HCC_ABORT_ON_INCOMPLETE = (1 << 2), + } hcc_flags; + struct prog *prog; + const char *qif_file; + FILE *qif_fh; +}; + +struct lsquic_conn_ctx { + TAILQ_ENTRY(lsquic_conn_ctx) next_ch; + lsquic_conn_t *conn; + struct http_client_ctx *client_ctx; + lsquic_time_t ch_created; + unsigned ch_n_reqs; /* This number gets decremented as streams are closed and + * incremented as push promises are accepted. + */ + unsigned ch_n_cc_streams; /* This number is incremented as streams are opened + * and decremented as streams are closed. It should + * never exceed hcc_cc_reqs_per_conn in client_ctx. + */ + enum { + CH_SESSION_RESUME_SAVED = 1 << 0, + } ch_flags; +}; + + +struct hset_elem +{ + STAILQ_ENTRY(hset_elem) next; + size_t nalloc; + struct lsxpack_header xhdr; +}; + + +STAILQ_HEAD(hset, hset_elem); + +static void +hset_dump (const struct hset *, FILE *); +static void +hset_destroy (void *hset); +static void +display_cert_chain (lsquic_conn_t *); + + +static void +create_connections (struct http_client_ctx *client_ctx) +{ + size_t len; + FILE *file; + unsigned char sess_resume[0x2000]; + + if (0 == (client_ctx->hcc_flags & HCC_SKIP_SESS_RESUME) + && client_ctx->hcc_sess_resume_file_name) + { + file = fopen(client_ctx->hcc_sess_resume_file_name, "rb"); + if (!file) + { + LSQ_DEBUG("cannot open %s for reading: %s", + client_ctx->hcc_sess_resume_file_name, strerror(errno)); + goto no_file; + } + len = fread(sess_resume, 1, sizeof(sess_resume), file); + if (0 == len && !feof(file)) + LSQ_WARN("error reading %s: %s", + client_ctx->hcc_sess_resume_file_name, strerror(errno)); + fclose(file); + LSQ_INFO("create connection sess_resume %zu bytes", len); + } + else no_file: + len = 0; + + while (client_ctx->hcc_n_open_conns < client_ctx->hcc_concurrency && + client_ctx->hcc_total_n_reqs > 0) + if (0 != prog_connect(client_ctx->prog, len ? sess_resume : NULL, len)) + { + LSQ_ERROR("connection failed"); + exit(EXIT_FAILURE); + } +} + + +static void +create_streams (struct http_client_ctx *client_ctx, lsquic_conn_ctx_t *conn_h) +{ + while (conn_h->ch_n_reqs - conn_h->ch_n_cc_streams && + conn_h->ch_n_cc_streams < client_ctx->hcc_cc_reqs_per_conn) + { + lsquic_conn_make_stream(conn_h->conn); + conn_h->ch_n_cc_streams++; + } +} + + +static lsquic_conn_ctx_t * +http_client_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) +{ + struct http_client_ctx *client_ctx = stream_if_ctx; + lsquic_conn_ctx_t *conn_h = calloc(1, sizeof(*conn_h)); + conn_h->conn = conn; + conn_h->client_ctx = client_ctx; + conn_h->ch_n_reqs = MIN(client_ctx->hcc_total_n_reqs, + client_ctx->hcc_reqs_per_conn); + client_ctx->hcc_total_n_reqs -= conn_h->ch_n_reqs; + ++conn_h->client_ctx->hcc_n_open_conns; + if (!TAILQ_EMPTY(&client_ctx->hcc_path_elems)) + create_streams(client_ctx, conn_h); + conn_h->ch_created = lsquic_time_now(); + return conn_h; +} + + +struct create_another_conn_or_stop_ctx +{ + struct event *event; + struct http_client_ctx *client_ctx; +}; + + +static void +create_another_conn_or_stop (evutil_socket_t sock, short events, void *ctx) +{ + struct create_another_conn_or_stop_ctx *const cacos = ctx; + struct http_client_ctx *const client_ctx = cacos->client_ctx; + + event_del(cacos->event); + event_free(cacos->event); + free(cacos); + + create_connections(client_ctx); + if (0 == client_ctx->hcc_n_open_conns) + { + LSQ_INFO("All connections are closed: stop engine"); + prog_stop(client_ctx->prog); + } +} + + +static void +http_client_on_conn_closed (lsquic_conn_t *conn) +{ + lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); + struct create_another_conn_or_stop_ctx *cacos; + enum LSQUIC_CONN_STATUS status; + struct event_base *eb; + char errmsg[80]; + + status = lsquic_conn_status(conn, errmsg, sizeof(errmsg)); + LSQ_INFO("Connection closed. Status: %d. Message: %s", status, + errmsg[0] ? errmsg : ""); + if (conn_h->client_ctx->hcc_flags & HCC_ABORT_ON_INCOMPLETE) + { + if (!(conn_h->client_ctx->hcc_flags & HCC_SEEN_FIN)) + { + LSQ_INFO("abort incomplete connection"); + exit(1); + } + } + --conn_h->client_ctx->hcc_n_open_conns; + + cacos = calloc(1, sizeof(*cacos)); + if (!cacos) + { + LSQ_ERROR("cannot allocate cacos"); + exit(1); + } + eb = prog_eb(conn_h->client_ctx->prog); + cacos->client_ctx = conn_h->client_ctx; + cacos->event = event_new(eb, -1, 0, create_another_conn_or_stop, cacos); + if (!cacos->event) + { + LSQ_ERROR("cannot allocate event"); + exit(1); + } + if (0 != event_add(cacos->event, NULL)) + { + LSQ_ERROR("cannot add cacos event"); + exit(1); + } + event_active(cacos->event, 0, 0); + + lsquic_conn_set_ctx(conn, NULL); + free(conn_h); +} + + +static int +hsk_status_ok (enum lsquic_hsk_status status) +{ + return status == LSQ_HSK_OK || status == LSQ_HSK_RESUMED_OK; +} + + +static void +http_client_on_hsk_done (lsquic_conn_t *conn, enum lsquic_hsk_status status) +{ + lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); + struct http_client_ctx *client_ctx = conn_h->client_ctx; + + if (hsk_status_ok(status)) + LSQ_INFO("handshake success %s", + status == LSQ_HSK_RESUMED_OK ? "(session resumed)" : ""); + else if (status == LSQ_HSK_FAIL) + LSQ_INFO("handshake failed"); + else if (status == LSQ_HSK_RESUMED_FAIL) + { + LSQ_INFO("handshake failed because of session resumption, will retry " + "without it"); + client_ctx->hcc_flags |= HCC_SKIP_SESS_RESUME; + ++client_ctx->hcc_concurrency; + ++client_ctx->hcc_total_n_reqs; + } + else + assert(0); + + if (hsk_status_ok(status) && s_display_cert_chain) + display_cert_chain(conn); + + if (hsk_status_ok(status)) + { + conn_h = lsquic_conn_get_ctx(conn); + ++s_stat_conns_ok; + update_sample_stats(&s_stat_to_conn, + lsquic_time_now() - conn_h->ch_created); + if (TAILQ_EMPTY(&client_ctx->hcc_path_elems)) + { + LSQ_INFO("no paths mode: close connection"); + lsquic_conn_close(conn_h->conn); + } + } + else + ++s_stat_conns_failed; +} + + +/* Now only used for gQUIC and will be going away after that */ +static void +http_client_on_sess_resume_info (lsquic_conn_t *conn, const unsigned char *buf, + size_t bufsz) +{ + lsquic_conn_ctx_t *const conn_h = lsquic_conn_get_ctx(conn); + struct http_client_ctx *const client_ctx = conn_h->client_ctx; + FILE *file; + size_t nw; + + assert(client_ctx->hcc_sess_resume_file_name); + + /* Our client is rather limited: only one file and only one ticket per + * connection can be saved. + */ + if (conn_h->ch_flags & CH_SESSION_RESUME_SAVED) + { + LSQ_DEBUG("session resumption information already saved for this " + "connection"); + return; + } + + file = fopen(client_ctx->hcc_sess_resume_file_name, "wb"); + if (!file) + { + LSQ_WARN("cannot open %s for writing: %s", + client_ctx->hcc_sess_resume_file_name, strerror(errno)); + return; + } + + nw = fwrite(buf, 1, bufsz, file); + if (nw == bufsz) + { + LSQ_DEBUG("wrote %zd bytes of session resumption information to %s", + nw, client_ctx->hcc_sess_resume_file_name); + conn_h->ch_flags |= CH_SESSION_RESUME_SAVED; + } + else + LSQ_WARN("error: fwrite(%s) returns %zd instead of %zd: %s", + client_ctx->hcc_sess_resume_file_name, nw, bufsz, strerror(errno)); + + fclose(file); +} + + +struct lsquic_stream_ctx { + lsquic_stream_t *stream; + struct http_client_ctx *client_ctx; + const char *path; + enum { + HEADERS_SENT = (1 << 0), + PROCESSED_HEADERS = 1 << 1, + ABANDON = 1 << 2, /* Abandon reading from stream after sh_stop bytes + * have been read. + */ + } sh_flags; + lsquic_time_t sh_created; + lsquic_time_t sh_ttfb; + size_t sh_stop; /* Stop after reading this many bytes if ABANDON is set */ + size_t sh_nread; /* Number of bytes read from stream using one of + * lsquic_stream_read* functions. + */ + unsigned count; + FILE *download_fh; + struct lsquic_reader reader; +}; + + +static lsquic_stream_ctx_t * +http_client_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) +{ + const int pushed = lsquic_stream_is_pushed(stream); + + if (pushed) + { + LSQ_INFO("not accepting server push"); + lsquic_stream_refuse_push(stream); + return NULL; + } + + lsquic_stream_ctx_t *st_h = calloc(1, sizeof(*st_h)); + st_h->stream = stream; + st_h->client_ctx = stream_if_ctx; + st_h->sh_created = lsquic_time_now(); + if (st_h->client_ctx->hcc_cur_pe) + { + st_h->client_ctx->hcc_cur_pe = TAILQ_NEXT( + st_h->client_ctx->hcc_cur_pe, next_pe); + if (!st_h->client_ctx->hcc_cur_pe) /* Wrap around */ + st_h->client_ctx->hcc_cur_pe = + TAILQ_FIRST(&st_h->client_ctx->hcc_path_elems); + } + else + st_h->client_ctx->hcc_cur_pe = TAILQ_FIRST( + &st_h->client_ctx->hcc_path_elems); + st_h->path = st_h->client_ctx->hcc_cur_pe->path; + if (st_h->client_ctx->payload) + { + st_h->reader.lsqr_read = test_reader_read; + st_h->reader.lsqr_size = test_reader_size; + st_h->reader.lsqr_ctx = create_lsquic_reader_ctx(st_h->client_ctx->payload); + if (!st_h->reader.lsqr_ctx) + exit(1); + } + else + st_h->reader.lsqr_ctx = NULL; + LSQ_INFO("created new stream, path: %s", st_h->path); + lsquic_stream_wantwrite(stream, 1); + if (randomly_reprioritize_streams) + { + if ((1 << lsquic_conn_quic_version(lsquic_stream_conn(stream))) + & LSQUIC_IETF_VERSIONS) + lsquic_stream_set_http_prio(stream, + &(struct lsquic_ext_http_prio){ + .urgency = random() & 7, + .incremental = random() & 1, + } + ); + else + lsquic_stream_set_priority(stream, 1 + (random() & 0xFF)); + } + if (s_priority_specs) + maybe_perform_priority_actions(stream, st_h); + if (s_abandon_early) + { + st_h->sh_stop = random() % (s_abandon_early + 1); + st_h->sh_flags |= ABANDON; + } + + if (st_h->client_ctx->hcc_download_dir) + { + char path[PATH_MAX]; + snprintf(path, sizeof(path), "%s/%s", + st_h->client_ctx->hcc_download_dir, st_h->path); + st_h->download_fh = fopen(path, "wb"); + if (st_h->download_fh) + LSQ_NOTICE("downloading %s to %s", st_h->path, path); + else + { + LSQ_ERROR("cannot open %s for writing: %s", path, strerror(errno)); + lsquic_stream_close(stream); + } + } + else + st_h->download_fh = NULL; + + return st_h; +} + + +static void +send_headers (lsquic_stream_ctx_t *st_h) +{ + const char *hostname = st_h->client_ctx->hostname; + struct header_buf hbuf; + unsigned h_idx = 0; + if (!hostname) + hostname = st_h->client_ctx->prog->prog_hostname; + hbuf.off = 0; + struct lsxpack_header headers_arr[10]; +#define V(v) (v), strlen(v) + header_set_ptr(&headers_arr[h_idx++], &hbuf, V(":method"), V(st_h->client_ctx->method)); + header_set_ptr(&headers_arr[h_idx++], &hbuf, V(":scheme"), V("https")); + header_set_ptr(&headers_arr[h_idx++], &hbuf, V(":path"), V(st_h->path)); + header_set_ptr(&headers_arr[h_idx++], &hbuf, V(":authority"), V(hostname)); + header_set_ptr(&headers_arr[h_idx++], &hbuf, V("user-agent"), V(st_h->client_ctx->prog->prog_settings.es_ua)); + //header_set_ptr(&headers_arr[h_idx++], &hbuf, V("expect"), V("100-continue")); + if (randomly_reprioritize_streams) + { + char pfv[10]; + sprintf(pfv, "u=%ld", random() & 7); + header_set_ptr(&headers_arr[h_idx++], &hbuf, V("priority"), V(pfv)); + if (random() & 1) + sprintf(pfv, "i"); + else + sprintf(pfv, "i=?0"); + header_set_ptr(&headers_arr[h_idx++], &hbuf, V("priority"), V(pfv)); + } + if (st_h->client_ctx->payload) + { + header_set_ptr(&headers_arr[h_idx++], &hbuf, V("content-type"), V("application/octet-stream")); + header_set_ptr(&headers_arr[h_idx++], &hbuf, V("content-length"), V( st_h->client_ctx->payload_size)); + } + lsquic_http_headers_t headers = { + .count = h_idx, + .headers = headers_arr, + }; + if (0 != lsquic_stream_send_headers(st_h->stream, &headers, + st_h->client_ctx->payload == NULL)) + { + LSQ_ERROR("cannot send headers: %s", strerror(errno)); + exit(1); + } +} + + +/* This is here to exercise lsquic_conn_get_server_cert_chain() API */ +static void +display_cert_chain (lsquic_conn_t *conn) +{ + STACK_OF(X509) *chain; + X509_NAME *name; + X509 *cert; + unsigned i; + char buf[100]; + + chain = lsquic_conn_get_server_cert_chain(conn); + if (!chain) + { + LSQ_WARN("could not get server certificate chain"); + return; + } + + for (i = 0; i < sk_X509_num(chain); ++i) + { + cert = sk_X509_value(chain, i); + name = X509_get_subject_name(cert); + LSQ_INFO("cert #%u: name: %s", i, + X509_NAME_oneline(name, buf, sizeof(buf))); + X509_free(cert); + } + + sk_X509_free(chain); +} + + +static void +http_client_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + ssize_t nw; + + if (st_h->sh_flags & HEADERS_SENT) + { + if (st_h->client_ctx->payload && test_reader_size(st_h->reader.lsqr_ctx) > 0) + { + nw = lsquic_stream_writef(stream, &st_h->reader); + if (nw < 0) + { + LSQ_ERROR("write error: %s", strerror(errno)); + exit(1); + } + if (test_reader_size(st_h->reader.lsqr_ctx) > 0) + { + lsquic_stream_wantwrite(stream, 1); + } + else + { + lsquic_stream_shutdown(stream, 1); + lsquic_stream_wantread(stream, 1); + } + } + else + { + lsquic_stream_shutdown(stream, 1); + lsquic_stream_wantread(stream, 1); + } + } + else + { + st_h->sh_flags |= HEADERS_SENT; + send_headers(st_h); + } +} + + +static size_t +discard (void *ctx, const unsigned char *buf, size_t sz, int fin) +{ + lsquic_stream_ctx_t *st_h = ctx; + + if (st_h->sh_flags & ABANDON) + { + if (sz > st_h->sh_stop - st_h->sh_nread) + sz = st_h->sh_stop - st_h->sh_nread; + } + + return sz; +} + + +static void +maybe_perform_priority_actions (struct lsquic_stream *stream, + lsquic_stream_ctx_t *st_h) +{ + const lsquic_stream_id_t stream_id = lsquic_stream_id(stream); + struct priority_spec *spec; + unsigned n_active; + int s; + + n_active = 0; + for (spec = s_priority_specs; spec < s_priority_specs + s_n_prio_specs; + ++spec) + { + if ((spec->flags & PRIORITY_SPEC_ACTIVE) + && spec->stream_id == stream_id + && st_h->sh_nread >= spec->nread) + { + s = lsquic_stream_set_http_prio(stream, &spec->ehp); + if (s != 0) + { + LSQ_ERROR("could not apply priorities to stream %"PRIu64, + stream_id); + exit(1); + } + spec->flags &= ~PRIORITY_SPEC_ACTIVE; + } + n_active += !!(spec->flags & PRIORITY_SPEC_ACTIVE); + } + + if (n_active == 0) + s_priority_specs = NULL; +} + + +static void +http_client_on_read (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + struct http_client_ctx *const client_ctx = st_h->client_ctx; + struct hset *hset; + ssize_t nread; + unsigned old_prio, new_prio; + unsigned char buf[0x200]; + unsigned nreads = 0; +#ifdef WIN32 + srand(GetTickCount()); +#endif + + do + { + if (g_header_bypass && !(st_h->sh_flags & PROCESSED_HEADERS)) + { + hset = lsquic_stream_get_hset(stream); + if (!hset) + { + LSQ_ERROR("could not get header set from stream"); + exit(2); + } + st_h->sh_ttfb = lsquic_time_now(); + update_sample_stats(&s_stat_ttfb, st_h->sh_ttfb - st_h->sh_created); + if (s_discard_response) + LSQ_DEBUG("discard response: do not dump headers"); + else + hset_dump(hset, stdout); + hset_destroy(hset); + st_h->sh_flags |= PROCESSED_HEADERS; + } + else if (nread = (s_discard_response + ? lsquic_stream_readf(stream, discard, st_h) + : lsquic_stream_read(stream, buf, + st_h->sh_flags & ABANDON + ? MIN(sizeof(buf), st_h->sh_nread - st_h->sh_stop) + : sizeof(buf))), + nread > 0) + { + st_h->sh_nread += (size_t) nread; + s_stat_downloaded_bytes += nread; +#if LSQUIC_QIR + /* test stream_reset after some number of read bytes */ + if (client_ctx->hcc_reset_after_nbytes && + s_stat_downloaded_bytes > client_ctx->hcc_reset_after_nbytes) + { + lsquic_stream_maybe_reset(stream, 0x1, 1); + break; + } + /* test retire_cid after some number of read bytes */ + if (client_ctx->hcc_retire_cid_after_nbytes && + s_stat_downloaded_bytes > client_ctx->hcc_retire_cid_after_nbytes) + { + lsquic_conn_retire_cid(lsquic_stream_conn(stream)); + client_ctx->hcc_retire_cid_after_nbytes = 0; + break; + } +#endif + if (!g_header_bypass && !(st_h->sh_flags & PROCESSED_HEADERS)) + { + /* First read is assumed to be the first byte */ + st_h->sh_ttfb = lsquic_time_now(); + update_sample_stats(&s_stat_ttfb, + st_h->sh_ttfb - st_h->sh_created); + st_h->sh_flags |= PROCESSED_HEADERS; + } + if (!s_discard_response) + fwrite(buf, 1, nread, st_h->download_fh + ? st_h->download_fh : stdout); + if (randomly_reprioritize_streams && (st_h->count++ & 0x3F) == 0) + { + if ((1 << lsquic_conn_quic_version(lsquic_stream_conn(stream))) + & LSQUIC_IETF_VERSIONS) + { + struct lsquic_ext_http_prio ehp; + if (0 == lsquic_stream_get_http_prio(stream, &ehp)) + { + ehp.urgency = 7 & (ehp.urgency + 1); + ehp.incremental = !ehp.incremental; +#ifndef NDEBUG + const int s = +#endif + lsquic_stream_set_http_prio(stream, &ehp); + assert(s == 0); + } + } + else + { + old_prio = lsquic_stream_priority(stream); + new_prio = 1 + (random() & 0xFF); +#ifndef NDEBUG + const int s = +#endif + lsquic_stream_set_priority(stream, new_prio); + assert(s == 0); + LSQ_DEBUG("changed stream %"PRIu64" priority from %u to %u", + lsquic_stream_id(stream), old_prio, new_prio); + } + } + if (s_priority_specs) + maybe_perform_priority_actions(stream, st_h); + if ((st_h->sh_flags & ABANDON) && st_h->sh_nread >= st_h->sh_stop) + { + LSQ_DEBUG("closing stream early having read %zd bytes", + st_h->sh_nread); + lsquic_stream_close(stream); + break; + } + } + else if (0 == nread) + { + update_sample_stats(&s_stat_req, lsquic_time_now() - st_h->sh_ttfb); + client_ctx->hcc_flags |= HCC_SEEN_FIN; + lsquic_stream_shutdown(stream, 0); + break; + } + else if (client_ctx->prog->prog_settings.es_rw_once && EWOULDBLOCK == errno) + { + LSQ_NOTICE("emptied the buffer in 'once' mode"); + break; + } + else if (lsquic_stream_is_rejected(stream)) + { + LSQ_NOTICE("stream was rejected"); + lsquic_stream_close(stream); + break; + } + else + { + LSQ_ERROR("could not read: %s", strerror(errno)); + exit(2); + } + } + while (client_ctx->prog->prog_settings.es_rw_once + && nreads++ < 3 /* Emulate just a few reads */); +} + + +static void +http_client_on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + const int pushed = lsquic_stream_is_pushed(stream); + if (pushed) + { + assert(NULL == st_h); + return; + } + + LSQ_INFO("%s called", __func__); + struct http_client_ctx *const client_ctx = st_h->client_ctx; + lsquic_conn_t *conn = lsquic_stream_conn(stream); + lsquic_conn_ctx_t *const conn_h = lsquic_conn_get_ctx(conn); + --conn_h->ch_n_reqs; + --conn_h->ch_n_cc_streams; + if (0 == conn_h->ch_n_reqs) + { + LSQ_INFO("all requests completed, closing connection"); + lsquic_conn_close(conn_h->conn); + } + else + { + LSQ_INFO("%u active stream, %u request remain, creating %u new stream", + conn_h->ch_n_cc_streams, + conn_h->ch_n_reqs - conn_h->ch_n_cc_streams, + MIN((conn_h->ch_n_reqs - conn_h->ch_n_cc_streams), + (client_ctx->hcc_cc_reqs_per_conn - conn_h->ch_n_cc_streams))); + create_streams(client_ctx, conn_h); + } + if (st_h->reader.lsqr_ctx) + destroy_lsquic_reader_ctx(st_h->reader.lsqr_ctx); + if (st_h->download_fh) + fclose(st_h->download_fh); + free(st_h); +} + + +static struct lsquic_stream_if http_client_if = { + .on_new_conn = http_client_on_new_conn, + .on_conn_closed = http_client_on_conn_closed, + .on_new_stream = http_client_on_new_stream, + .on_read = http_client_on_read, + .on_write = http_client_on_write, + .on_close = http_client_on_close, + .on_hsk_done = http_client_on_hsk_done, +}; + + +/* XXX This function assumes we can send the request in one shot. This is + * not a realistic assumption to make in general, but will work for our + * limited use case (QUIC Interop Runner). + */ +static void +hq_client_on_write (struct lsquic_stream *stream, lsquic_stream_ctx_t *st_h) +{ + if (st_h->client_ctx->payload) + { + LSQ_ERROR("payload is not supported in HQ client"); + lsquic_stream_close(stream); + return; + } + + lsquic_stream_write(stream, "GET ", 4); + lsquic_stream_write(stream, st_h->path, strlen(st_h->path)); + lsquic_stream_write(stream, "\r\n", 2); + lsquic_stream_shutdown(stream, 1); + lsquic_stream_wantread(stream, 1); +} + + +static size_t +hq_client_print_to_file (void *user_data, const unsigned char *buf, + size_t buf_len, int fin_unused) +{ + fwrite(buf, 1, buf_len, user_data); + return buf_len; +} + + +static void +hq_client_on_read (struct lsquic_stream *stream, lsquic_stream_ctx_t *st_h) +{ + FILE *out = st_h->download_fh ? st_h->download_fh : stdout; + ssize_t nread; + + nread = lsquic_stream_readf(stream, hq_client_print_to_file, out); + if (nread <= 0) + { + if (nread < 0) + LSQ_WARN("error reading response for %s: %s", st_h->path, + strerror(errno)); + lsquic_stream_close(stream); + } +} + + +/* The "hq" set of callbacks differs only in the read and write routines */ +static struct lsquic_stream_if hq_client_if = { + .on_new_conn = http_client_on_new_conn, + .on_conn_closed = http_client_on_conn_closed, + .on_new_stream = http_client_on_new_stream, + .on_read = hq_client_on_read, + .on_write = hq_client_on_write, + .on_close = http_client_on_close, +}; + + +static void +usage (const char *prog) +{ + const char *const slash = strrchr(prog, '/'); + if (slash) + prog = slash + 1; + printf( +"Usage: %s [opts]\n" +"\n" +"Options:\n" +" -p PATH Path to request. May be specified more than once. If no\n" +" path is specified, the connection is closed as soon as\n" +" handshake succeeds.\n" +" -n CONNS Number of concurrent connections. Defaults to 1.\n" +" -r NREQS Total number of requests to send. Defaults to 1.\n" +" -R MAXREQS Maximum number of requests per single connection. Some\n" +" connections will have fewer requests than this.\n" +" -w CONCUR Number of concurrent requests per single connection.\n" +" Defaults to 1.\n" +" -M METHOD Method. Defaults to GET.\n" +" -P PAYLOAD Name of the file that contains payload to be used in the\n" +" request. This adds two more headers to the request:\n" +" content-type: application/octet-stream and\n" +" content-length\n" +" -K Discard server response\n" +" -B Header bypass\n" +" -I Abort on incomplete reponse from server\n" +" -4 Prefer IPv4 when resolving hostname\n" +" -6 Prefer IPv6 when resolving hostname\n" +#ifndef WIN32 +" -C DIR Certificate store. If specified, server certificate will\n" +" be verified.\n" +#endif +" -a Display server certificate chain after successful handshake.\n" +" -b N_BYTES Send RESET_STREAM frame after the client has read n bytes.\n" +" -t Print stats to stdout.\n" +" -T FILE Print stats to FILE. If FILE is -, print stats to stdout.\n" +" -q FILE QIF mode: issue requests from the QIF file and validate\n" +" server responses.\n" +" -e TOKEN Hexadecimal string representing resume token.\n" +" -3 MAX Close stream after reading at most MAX bytes. The actual\n" +" number of bytes read is randominzed.\n" +" -9 SPEC Priority specification. May be specified several times.\n" +" SPEC takes the form stream_id:nread:UI, where U is\n" +" urgency and I is incremental. Matched \\d+:\\d+:[0-7][01]\n" +" -7 DIR Save fetched resources into this directory.\n" +" -Q ALPN Use hq ALPN. Specify, for example, \"h3-29\".\n" + , prog); +} + + +#ifndef WIN32 +static X509_STORE *store; + +/* Windows does not have regex... */ +static int +ends_in_pem (const char *s) +{ + int len; + + len = strlen(s); + + return len >= 4 + && 0 == strcasecmp(s + len - 4, ".pem"); +} + + +static X509 * +file2cert (const char *path) +{ + X509 *cert = NULL; + BIO *in; + + in = BIO_new(BIO_s_file()); + if (!in) + goto end; + + if (BIO_read_filename(in, path) <= 0) + goto end; + + cert = PEM_read_bio_X509_AUX(in, NULL, NULL, NULL); + + end: + BIO_free(in); + return cert; +} + + +static int +init_x509_cert_store (const char *path) +{ + struct dirent *ent; + X509 *cert; + DIR *dir; + char file_path[NAME_MAX]; + int ret; + + dir = opendir(path); + if (!dir) + { + LSQ_WARN("Cannot open directory `%s': %s", path, strerror(errno)); + return -1; + } + + store = X509_STORE_new(); + + while ((ent = readdir(dir))) + { + if (ends_in_pem(ent->d_name)) + { + ret = snprintf(file_path, sizeof(file_path), "%s/%s", + path, ent->d_name); + if (ret < 0) + { + LSQ_WARN("file_path formatting error %s", strerror(errno)); + continue; + } + else if ((unsigned)ret >= sizeof(file_path)) + { + LSQ_WARN("file_path was truncated %s", strerror(errno)); + continue; + } + cert = file2cert(file_path); + if (cert) + { + if (1 != X509_STORE_add_cert(store, cert)) + LSQ_WARN("could not add cert from %s", file_path); + } + else + LSQ_WARN("could not read cert from %s", file_path); + } + } + (void) closedir(dir); + return 0; +} + + +static int +verify_server_cert (void *ctx, STACK_OF(X509) *chain) +{ + X509_STORE_CTX *store_ctx = NULL; + X509 *cert; + int ver; + + if (!store) + { + if (0 != init_x509_cert_store(ctx)) + return -1; + } + + store_ctx = X509_STORE_CTX_new(); + if (!store_ctx) + return -1; + + cert = sk_X509_shift(chain); + X509_STORE_CTX_init(store_ctx, store, cert, chain); + + ver = X509_verify_cert(store_ctx); + + X509_STORE_CTX_free(store_ctx); + + if (ver != 1) + LSQ_WARN("could not verify server certificate"); + + return ver == 1 ? 0 : -1; +} +#endif + + +static void * +hset_create (void *hsi_ctx, lsquic_stream_t *stream, int is_push_promise) +{ + struct hset *hset; + + if ((hset = malloc(sizeof(*hset)))) + { + STAILQ_INIT(hset); + return hset; + } + else + return NULL; +} + + +static struct lsxpack_header * +hset_prepare_decode (void *hset_p, struct lsxpack_header *xhdr, + size_t req_space) +{ + struct hset *const hset = hset_p; + struct hset_elem *el; + char *buf; + + if (0 == req_space) + req_space = 0x100; + + if (req_space > LSXPACK_MAX_STRLEN) + { + LSQ_WARN("requested space for header is too large: %zd bytes", + req_space); + return NULL; + } + + if (!xhdr) + { + buf = malloc(req_space); + if (!buf) + { + LSQ_WARN("cannot allocate buf of %zd bytes", req_space); + return NULL; + } + el = malloc(sizeof(*el)); + if (!el) + { + LSQ_WARN("cannot allocate hset_elem"); + free(buf); + return NULL; + } + STAILQ_INSERT_TAIL(hset, el, next); + lsxpack_header_prepare_decode(&el->xhdr, buf, 0, req_space); + el->nalloc = req_space; + } + else + { + el = (struct hset_elem *) ((char *) xhdr + - offsetof(struct hset_elem, xhdr)); + if (req_space <= el->nalloc) + { + LSQ_ERROR("requested space is smaller than already allocated"); + return NULL; + } + if (req_space < el->nalloc * 2) + req_space = el->nalloc * 2; + buf = realloc(el->xhdr.buf, req_space); + if (!buf) + { + LSQ_WARN("cannot reallocate hset buf"); + return NULL; + } + el->xhdr.buf = buf; + el->xhdr.val_len = req_space; + el->nalloc = req_space; + } + + return &el->xhdr; +} + + +static int +hset_add_header (void *hset_p, struct lsxpack_header *xhdr) +{ + unsigned name_len, value_len; + /* Not much to do: the header value are in xhdr */ + + if (xhdr) + { + name_len = xhdr->name_len; + value_len = xhdr->val_len; + s_stat_downloaded_bytes += name_len + value_len + 4; /* ": \r\n" */ + } + else + s_stat_downloaded_bytes += 2; /* \r\n "*/ + + return 0; +} + + +static void +hset_destroy (void *hset_p) +{ + struct hset *hset = hset_p; + struct hset_elem *el, *next; + + for (el = STAILQ_FIRST(hset); el; el = next) + { + next = STAILQ_NEXT(el, next); + free(el->xhdr.buf); + free(el); + } + free(hset); +} + + +static void +hset_dump (const struct hset *hset, FILE *out) +{ + const struct hset_elem *el; + + STAILQ_FOREACH(el, hset, next) + if (el->xhdr.flags & (LSXPACK_HPACK_VAL_MATCHED|LSXPACK_QPACK_IDX)) + fprintf(out, "%.*s (%s static table idx %u): %.*s\n", + (int) el->xhdr.name_len, lsxpack_header_get_name(&el->xhdr), + el->xhdr.flags & LSXPACK_HPACK_VAL_MATCHED ? "hpack" : "qpack", + el->xhdr.flags & LSXPACK_HPACK_VAL_MATCHED ? el->xhdr.hpack_index + : el->xhdr.qpack_index, + (int) el->xhdr.val_len, lsxpack_header_get_value(&el->xhdr)); + else + fprintf(out, "%.*s: %.*s\n", + (int) el->xhdr.name_len, lsxpack_header_get_name(&el->xhdr), + (int) el->xhdr.val_len, lsxpack_header_get_value(&el->xhdr)); + + fprintf(out, "\n"); + fflush(out); +} + + +/* These are basic and for illustration purposes only. You will want to + * do your own verification by doing something similar to what is done + * in src/liblsquic/lsquic_http1x_if.c + */ +static const struct lsquic_hset_if header_bypass_api = +{ + .hsi_create_header_set = hset_create, + .hsi_prepare_decode = hset_prepare_decode, + .hsi_process_header = hset_add_header, + .hsi_discard_header_set = hset_destroy, +}; + + +static void +display_stat (FILE *out, const struct sample_stats *stats, const char *name) +{ + long double mean, stddev; + + calc_sample_stats(stats, &mean, &stddev); + fprintf(out, "%s: n: %u; min: %.2Lf ms; max: %.2Lf ms; mean: %.2Lf ms; " + "sd: %.2Lf ms\n", name, stats->n, (long double) stats->min / 1000, + (long double) stats->max / 1000, mean / 1000, stddev / 1000); +} + + +static lsquic_conn_ctx_t * +qif_client_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) +{ + lsquic_conn_make_stream(conn); + return stream_if_ctx; +} + + +static void +qif_client_on_conn_closed (lsquic_conn_t *conn) +{ + struct http_client_ctx *client_ctx = (void *) lsquic_conn_get_ctx(conn); + LSQ_INFO("connection is closed: stop engine"); + prog_stop(client_ctx->prog); + lsquic_conn_set_ctx(conn, NULL); +} + + +struct qif_stream_ctx +{ + int reqno; + struct lsquic_http_headers headers; + char *qif_str; + size_t qif_sz; + size_t qif_off; + char *resp_str; /* qif_sz allocated */ + size_t resp_off; /* Read so far */ + enum { + QSC_HEADERS_SENT = 1 << 0, + QSC_GOT_HEADERS = 1 << 1, + } flags; +}; + +#define MAX(a, b) ((a) > (b) ? (a) : (b)) + +lsquic_stream_ctx_t * +qif_client_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) +{ + struct http_client_ctx *const client_ctx = stream_if_ctx; + FILE *const fh = client_ctx->qif_fh; + struct qif_stream_ctx *ctx; + struct lsxpack_header *header; + static int reqno; + size_t nalloc; + char *end, *tab, *line; + char line_buf[0x1000]; + + ctx = calloc(1, sizeof(*ctx)); + if (!ctx) + { + perror("calloc"); + exit(1); + } + ctx->reqno = reqno++; + + nalloc = 0; + while ((line = fgets(line_buf, sizeof(line_buf), fh))) + { + end = strchr(line, '\n'); + if (!end) + { + fprintf(stderr, "no newline\n"); + exit(1); + } + + if (end == line) + break; + + if (*line == '#') + continue; + + tab = strchr(line, '\t'); + if (!tab) + { + fprintf(stderr, "no TAB\n"); + exit(1); + } + + if (nalloc + (end + 1 - line) > ctx->qif_sz) + { + if (nalloc) + nalloc = MAX(nalloc * 2, nalloc + (end + 1 - line)); + else + nalloc = end + 1 - line; + ctx->qif_str = realloc(ctx->qif_str, nalloc); + if (!ctx->qif_str) + { + perror("realloc"); + exit(1); + } + } + memcpy(ctx->qif_str + ctx->qif_sz, line, end + 1 - line); + + ctx->headers.headers = realloc(ctx->headers.headers, + sizeof(ctx->headers.headers[0]) * (ctx->headers.count + 1)); + if (!ctx->headers.headers) + { + perror("realloc"); + exit(1); + } + header = &ctx->headers.headers[ctx->headers.count++]; + lsxpack_header_set_offset2(header, ctx->qif_str + ctx->qif_sz, 0, + tab - line, tab - line + 1, end - tab - 1); + ctx->qif_sz += end + 1 - line; + } + + lsquic_stream_wantwrite(stream, 1); + + if (!line) + { + LSQ_DEBUG("Input QIF file ends; close file handle"); + fclose(client_ctx->qif_fh); + client_ctx->qif_fh = NULL; + } + + return (void *) ctx; +} + + +static void +qif_client_on_write (struct lsquic_stream *stream, lsquic_stream_ctx_t *h) +{ + struct qif_stream_ctx *const ctx = (void *) h; + size_t towrite; + ssize_t nw; + + if (ctx->flags & QSC_HEADERS_SENT) + { + towrite = ctx->qif_sz - ctx->qif_off; + nw = lsquic_stream_write(stream, ctx->qif_str + ctx->qif_off, towrite); + if (nw >= 0) + { + LSQ_DEBUG("wrote %zd bytes to stream", nw); + ctx->qif_off += nw; + if (ctx->qif_off == (size_t) nw) + { + lsquic_stream_shutdown(stream, 1); + lsquic_stream_wantread(stream, 1); + LSQ_DEBUG("finished writing request %d", ctx->reqno); + } + } + else + { + LSQ_ERROR("cannot write to stream: %s", strerror(errno)); + lsquic_stream_wantwrite(stream, 0); + lsquic_conn_abort(lsquic_stream_conn(stream)); + } + } + else + { + if (0 == lsquic_stream_send_headers(stream, &ctx->headers, 0)) + { + ctx->flags |= QSC_HEADERS_SENT; + LSQ_DEBUG("sent headers"); + } + else + { + LSQ_ERROR("cannot send headers: %s", strerror(errno)); + lsquic_stream_wantwrite(stream, 0); + lsquic_conn_abort(lsquic_stream_conn(stream)); + } + } +} + + +static void +qif_client_on_read (struct lsquic_stream *stream, lsquic_stream_ctx_t *h) +{ + struct qif_stream_ctx *const ctx = (void *) h; + struct hset *hset; + ssize_t nr; + unsigned char buf[1]; + + LSQ_DEBUG("reading response to request %d", ctx->reqno); + + if (!(ctx->flags & QSC_GOT_HEADERS)) + { + hset = lsquic_stream_get_hset(stream); + if (!hset) + { + LSQ_ERROR("could not get header set from stream"); + exit(2); + } + LSQ_DEBUG("got header set for response %d", ctx->reqno); + hset_dump(hset, stdout); + hset_destroy(hset); + ctx->flags |= QSC_GOT_HEADERS; + } + else + { + if (!ctx->resp_str) + { + ctx->resp_str = malloc(ctx->qif_sz); + if (!ctx->resp_str) + { + perror("malloc"); + exit(1); + } + } + if (ctx->resp_off < ctx->qif_sz) + { + nr = lsquic_stream_read(stream, ctx->resp_str + ctx->resp_off, + ctx->qif_sz - ctx->resp_off); + if (nr > 0) + { + ctx->resp_off += nr; + LSQ_DEBUG("read %zd bytes of reponse %d", nr, ctx->reqno); + } + else if (nr == 0) + { + LSQ_INFO("response %d too short", ctx->reqno); + LSQ_WARN("response %d FAIL", ctx->reqno); + lsquic_stream_shutdown(stream, 0); + } + else + { + LSQ_ERROR("error reading from stream"); + lsquic_stream_wantread(stream, 0); + lsquic_conn_abort(lsquic_stream_conn(stream)); + } + } + else + { + /* Collect EOF */ + nr = lsquic_stream_read(stream, buf, sizeof(buf)); + if (nr == 0) + { + if (0 == memcmp(ctx->qif_str, ctx->resp_str, ctx->qif_sz)) + LSQ_INFO("response %d OK", ctx->reqno); + else + LSQ_WARN("response %d FAIL", ctx->reqno); + lsquic_stream_shutdown(stream, 0); + } + else if (nr > 0) + { + LSQ_INFO("response %d too long", ctx->reqno); + LSQ_WARN("response %d FAIL", ctx->reqno); + lsquic_stream_shutdown(stream, 0); + } + else + { + LSQ_ERROR("error reading from stream"); + lsquic_stream_shutdown(stream, 0); + lsquic_conn_abort(lsquic_stream_conn(stream)); + } + } + } +} + + +static void +qif_client_on_close (struct lsquic_stream *stream, lsquic_stream_ctx_t *h) +{ + struct lsquic_conn *conn = lsquic_stream_conn(stream); + struct http_client_ctx *client_ctx = (void *) lsquic_conn_get_ctx(conn); + struct qif_stream_ctx *const ctx = (void *) h; + free(ctx->qif_str); + free(ctx->resp_str); + free(ctx->headers.headers); + free(ctx); + if (client_ctx->qif_fh) + lsquic_conn_make_stream(conn); + else + lsquic_conn_close(conn); +} + + +const struct lsquic_stream_if qif_client_if = { + .on_new_conn = qif_client_on_new_conn, + .on_conn_closed = qif_client_on_conn_closed, + .on_new_stream = qif_client_on_new_stream, + .on_read = qif_client_on_read, + .on_write = qif_client_on_write, + .on_close = qif_client_on_close, +}; + + +int +main (int argc, char **argv) +{ + int opt, s, was_empty; + lsquic_time_t start_time; + FILE *stats_fh = NULL; + long double elapsed; + struct http_client_ctx client_ctx; + struct stat st; + struct path_elem *pe; + struct sport_head sports; + struct prog prog; + const char *token = NULL; + struct priority_spec *priority_specs = NULL; + + TAILQ_INIT(&sports); + memset(&client_ctx, 0, sizeof(client_ctx)); + TAILQ_INIT(&client_ctx.hcc_path_elems); + client_ctx.method = "GET"; + client_ctx.hcc_concurrency = 1; + client_ctx.hcc_cc_reqs_per_conn = 1; + client_ctx.hcc_reqs_per_conn = 1; + client_ctx.hcc_total_n_reqs = 1; + client_ctx.hcc_reset_after_nbytes = 0; + client_ctx.hcc_retire_cid_after_nbytes = 0; + client_ctx.prog = &prog; + + prog_init(&prog, LSENG_HTTP, &sports, &http_client_if, &client_ctx); + + while (-1 != (opt = getopt(argc, argv, PROG_OPTS + "46Br:R:IKu:EP:M:n:w:H:p:0:q:e:hatT:b:d:" + "3:" /* 3 is 133+ for "e" ("e" for "early") */ + "9:" /* 9 sort of looks like P... */ + "7:" /* Download directory */ + "Q:" /* ALPN, e.g. h3-29 */ +#ifndef WIN32 + "C:" +#endif + ))) + { + switch (opt) { + case 'a': + ++s_display_cert_chain; + break; + case '4': + case '6': + prog.prog_ipver = opt - '0'; + break; + case 'B': + g_header_bypass = 1; + prog.prog_api.ea_hsi_if = &header_bypass_api; + prog.prog_api.ea_hsi_ctx = NULL; + break; + case 'I': + client_ctx.hcc_flags |= HCC_ABORT_ON_INCOMPLETE; + break; + case 'K': + ++s_discard_response; + break; + case 'u': /* Accept psh promise */ + promise_fd = open(optarg, O_WRONLY|O_CREAT|O_TRUNC, 0644); + if (promise_fd < 0) + { + perror("open"); + exit(1); + } + prog.prog_settings.es_support_push = 1; /* Pokes into prog */ + break; + case 'E': /* E: randomly reprioritize strams. Now, that's + * pretty random. :) + */ + srand((uintptr_t) argv); + randomly_reprioritize_streams = 1; + break; + case 'n': + client_ctx.hcc_concurrency = atoi(optarg); + break; + case 'w': + client_ctx.hcc_cc_reqs_per_conn = atoi(optarg); + break; + case 'P': + client_ctx.payload = optarg; + if (0 != stat(optarg, &st)) + { + perror("stat"); + exit(2); + } + sprintf(client_ctx.payload_size, "%jd", (intmax_t) st.st_size); + break; + case 'M': + client_ctx.method = optarg; + break; + case 'r': + client_ctx.hcc_total_n_reqs = atoi(optarg); + break; + case 'R': + client_ctx.hcc_reqs_per_conn = atoi(optarg); + break; + case 'H': + client_ctx.hostname = optarg; + prog.prog_hostname = optarg; /* Pokes into prog */ + break; + case 'p': + pe = calloc(1, sizeof(*pe)); + pe->path = optarg; + TAILQ_INSERT_TAIL(&client_ctx.hcc_path_elems, pe, next_pe); + break; + case 'h': + usage(argv[0]); + prog_print_common_options(&prog, stdout); + exit(0); + case 'q': + client_ctx.qif_file = optarg; + break; + case 'e': + if (TAILQ_EMPTY(&sports)) + token = optarg; + else + sport_set_token(TAILQ_LAST(&sports, sport_head), optarg); + break; +#ifndef WIN32 + case 'C': + prog.prog_api.ea_verify_cert = verify_server_cert; + prog.prog_api.ea_verify_ctx = optarg; + break; +#endif + case 't': + stats_fh = stdout; + break; + case 'T': + if (0 == strcmp(optarg, "-")) + stats_fh = stdout; + else + { + stats_fh = fopen(optarg, "w"); + if (!stats_fh) + { + perror("fopen"); + exit(1); + } + } + break; + case 'b': + client_ctx.hcc_reset_after_nbytes = atoi(optarg); + break; + case 'd': + client_ctx.hcc_retire_cid_after_nbytes = atoi(optarg); + break; + case '0': + http_client_if.on_sess_resume_info = http_client_on_sess_resume_info; + client_ctx.hcc_sess_resume_file_name = optarg; + goto common_opts; + case '3': + s_abandon_early = strtol(optarg, NULL, 10); + break; + case '9': + { + /* Parse priority spec and tack it onto the end of the array */ + lsquic_stream_id_t stream_id; + size_t nread; + struct lsquic_ext_http_prio ehp; + struct priority_spec *new_specs; + stream_id = strtoull(optarg, &optarg, 10); + if (*optarg != ':') + exit(1); + ++optarg; + nread = strtoull(optarg, &optarg, 10); + if (*optarg != ':') + exit(1); + ++optarg; + if (!(*optarg >= '0' && *optarg <= '7')) + exit(1); + ehp.urgency = *optarg++ - '0'; + if (!(*optarg >= '0' && *optarg <= '1')) + exit(1); + ehp.incremental = *optarg++ - '0'; + ++s_n_prio_specs; + new_specs = realloc(priority_specs, + sizeof(priority_specs[0]) * s_n_prio_specs); + if (!new_specs) + { + perror("malloc"); + exit(1); + } + priority_specs = new_specs; + priority_specs[s_n_prio_specs - 1] = (struct priority_spec) { + .flags = PRIORITY_SPEC_ACTIVE, + .stream_id = stream_id, + .nread = nread, + .ehp = ehp, + }; + s_priority_specs = priority_specs; + break; + } + case '7': + client_ctx.hcc_download_dir = optarg; + break; + case 'Q': + /* XXX A bit hacky, as `prog' has already been initialized... */ + prog.prog_engine_flags &= ~LSENG_HTTP; + prog.prog_api.ea_alpn = optarg; + prog.prog_api.ea_stream_if = &hq_client_if; + break; + common_opts: + default: + if (0 != prog_set_opt(&prog, opt, optarg)) + exit(1); + } + } + +#if LSQUIC_CONN_STATS + prog.prog_api.ea_stats_fh = stats_fh; +#endif + prog.prog_settings.es_ua = LITESPEED_ID; + + if (client_ctx.qif_file) + { + client_ctx.qif_fh = fopen(client_ctx.qif_file, "r"); + if (!client_ctx.qif_fh) + { + fprintf(stderr, "Cannot open %s for reading: %s\n", + client_ctx.qif_file, strerror(errno)); + exit(1); + } + LSQ_NOTICE("opened QIF file %s for reading\n", client_ctx.qif_file); + prog.prog_api.ea_stream_if = &qif_client_if; + g_header_bypass = 1; + prog.prog_api.ea_hsi_if = &header_bypass_api; + prog.prog_api.ea_hsi_ctx = NULL; + } + else if (TAILQ_EMPTY(&client_ctx.hcc_path_elems)) + { + fprintf(stderr, "Specify at least one path using -p option\n"); + exit(1); + } + + start_time = lsquic_time_now(); + was_empty = TAILQ_EMPTY(&sports); + if (0 != prog_prep(&prog)) + { + LSQ_ERROR("could not prep"); + exit(EXIT_FAILURE); + } + if (!(client_ctx.hostname || prog.prog_hostname)) + { + fprintf(stderr, "Specify hostname (used for SNI and :authority) via " + "-H option\n"); + exit(EXIT_FAILURE); + } + if (was_empty && token) + sport_set_token(TAILQ_LAST(&sports, sport_head), token); + + if (client_ctx.qif_file) + { + if (0 != prog_connect(&prog, NULL, 0)) + { + LSQ_ERROR("connection failed"); + exit(EXIT_FAILURE); + } + } + else + create_connections(&client_ctx); + + LSQ_DEBUG("entering event loop"); + + s = prog_run(&prog); + + if (stats_fh) + { + elapsed = (long double) (lsquic_time_now() - start_time) / 1000000; + fprintf(stats_fh, "overall statistics as calculated by %s:\n", argv[0]); + display_stat(stats_fh, &s_stat_to_conn, "time for connect"); + display_stat(stats_fh, &s_stat_req, "time for request"); + display_stat(stats_fh, &s_stat_ttfb, "time to 1st byte"); + fprintf(stats_fh, "downloaded %lu application bytes in %.3Lf seconds\n", + s_stat_downloaded_bytes, elapsed); + fprintf(stats_fh, "%.2Lf reqs/sec; %.0Lf bytes/sec\n", + (long double) s_stat_req.n / elapsed, + (long double) s_stat_downloaded_bytes / elapsed); + fprintf(stats_fh, "read handler count %lu\n", prog.prog_read_count); + } + + prog_cleanup(&prog); + if (promise_fd >= 0) + (void) close(promise_fd); + + while ((pe = TAILQ_FIRST(&client_ctx.hcc_path_elems))) + { + TAILQ_REMOVE(&client_ctx.hcc_path_elems, pe, next_pe); + free(pe); + } + + if (client_ctx.qif_fh) + (void) fclose(client_ctx.qif_fh); + + free(priority_specs); + exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); +} diff --git a/external/lsquic/bin/http_server.c b/external/lsquic/bin/http_server.c new file mode 100644 index 0000000..d468c68 --- /dev/null +++ b/external/lsquic/bin/http_server.c @@ -0,0 +1,2060 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * http_server.c -- A simple HTTP/QUIC server + * + * It serves up files from the filesystem. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef WIN32 +#include +#include +#include +#else +#include "vc_compat.h" +#include "getopt.h" +#endif + +#include + +#include + +#include "lsquic.h" +#include "../src/liblsquic/lsquic_hash.h" +#include "lsxpack_header.h" +#include "test_config.h" +#include "test_common.h" +#include "test_cert.h" +#include "prog.h" + +#if HAVE_REGEX +#ifndef WIN32 +#include +#else +#include +#endif +#endif + +#include "../src/liblsquic/lsquic_logger.h" +#include "../src/liblsquic/lsquic_int_types.h" +#include "../src/liblsquic/lsquic_util.h" + +#if HAVE_REGEX +static const char on_being_idle[] = +"ON BEING IDLE.\n" +"\n" +"Now, this is a subject on which I flatter myself I really am _au fait_.\n" +"The gentleman who, when I was young, bathed me at wisdom's font for nine\n" +"guineas a term--no extras--used to say he never knew a boy who could\n" +"do less work in more time; and I remember my poor grandmother once\n" +"incidentally observing, in the course of an instruction upon the use\n" +"of the Prayer-book, that it was highly improbable that I should ever do\n" +"much that I ought not to do, but that she felt convinced beyond a doubt\n" +"that I should leave undone pretty well everything that I ought to do.\n" +"\n" +"I am afraid I have somewhat belied half the dear old lady's prophecy.\n" +"Heaven help me! I have done a good many things that I ought not to have\n" +"done, in spite of my laziness. But I have fully confirmed the accuracy\n" +"of her judgment so far as neglecting much that I ought not to have\n" +"neglected is concerned. Idling always has been my strong point. I take\n" +"no credit to myself in the matter--it is a gift. Few possess it. There\n" +"are plenty of lazy people and plenty of slow-coaches, but a genuine\n" +"idler is a rarity. He is not a man who slouches about with his hands in\n" +"his pockets. On the contrary, his most startling characteristic is that\n" +"he is always intensely busy.\n" +"\n" +"It is impossible to enjoy idling thoroughly unless one has plenty of\n" +"work to do. There is no fun in doing nothing when you have nothing to\n" +"do. Wasting time is merely an occupation then, and a most exhausting\n" +"one. Idleness, like kisses, to be sweet must be stolen.\n" +"\n" +"Many years ago, when I was a young man, I was taken very ill--I never\n" +"could see myself that much was the matter with me, except that I had\n" +"a beastly cold. But I suppose it was something very serious, for the\n" +"doctor said that I ought to have come to him a month before, and that\n" +"if it (whatever it was) had gone on for another week he would not have\n" +"answered for the consequences. It is an extraordinary thing, but I\n" +"never knew a doctor called into any case yet but what it transpired\n" +"that another day's delay would have rendered cure hopeless. Our medical\n" +"guide, philosopher, and friend is like the hero in a melodrama--he\n" +"always comes upon the scene just, and only just, in the nick of time. It\n" +"is Providence, that is what it is.\n" +"\n" +"Well, as I was saying, I was very ill and was ordered to Buxton for a\n" +"month, with strict injunctions to do nothing whatever all the while\n" +"that I was there. \"Rest is what you require,\" said the doctor, \"perfect\n" +"rest.\"\n" +"\n" +"It seemed a delightful prospect. \"This man evidently understands my\n" +"complaint,\" said I, and I pictured to myself a glorious time--a four\n" +"weeks' _dolce far niente_ with a dash of illness in it. Not too much\n" +"illness, but just illness enough--just sufficient to give it the flavor\n" +"of suffering and make it poetical. I should get up late, sip chocolate,\n" +"and have my breakfast in slippers and a dressing-gown. I should lie out\n" +"in the garden in a hammock and read sentimental novels with a melancholy\n" +"ending, until the books should fall from my listless hand, and I should\n" +"recline there, dreamily gazing into the deep blue of the firmament,\n" +"watching the fleecy clouds floating like white-sailed ships across\n" +"its depths, and listening to the joyous song of the birds and the low\n" +"rustling of the trees. Or, on becoming too weak to go out of doors,\n" +"I should sit propped up with pillows at the open window of the\n" +"ground-floor front, and look wasted and interesting, so that all the\n" +"pretty girls would sigh as they passed by.\n" +"\n" +"And twice a day I should go down in a Bath chair to the Colonnade to\n" +"drink the waters. Oh, those waters! I knew nothing about them then,\n" +"and was rather taken with the idea. \"Drinking the waters\" sounded\n" +"fashionable and Queen Anne-fied, and I thought I should like them. But,\n" +"ugh! after the first three or four mornings! Sam Weller's description of\n" +"them as \"having a taste of warm flat-irons\" conveys only a faint idea of\n" +"their hideous nauseousness. If anything could make a sick man get well\n" +"quickly, it would be the knowledge that he must drink a glassful of them\n" +"every day until he was recovered. I drank them neat for six consecutive\n" +"days, and they nearly killed me; but after then I adopted the plan of\n" +"taking a stiff glass of brandy-and-water immediately on the top of them,\n" +"and found much relief thereby. I have been informed since, by various\n" +"eminent medical gentlemen, that the alcohol must have entirely\n" +"counteracted the effects of the chalybeate properties contained in the\n" +"water. I am glad I was lucky enough to hit upon the right thing.\n" +"\n" +"But \"drinking the waters\" was only a small portion of the torture I\n" +"experienced during that memorable month--a month which was, without\n" +"exception, the most miserable I have ever spent. During the best part of\n" +"it I religiously followed the doctor's mandate and did nothing whatever,\n" +"except moon about the house and garden and go out for two hours a day in\n" +"a Bath chair. That did break the monotony to a certain extent. There is\n" +"more excitement about Bath-chairing--especially if you are not used to\n" +"the exhilarating exercise--than might appear to the casual observer. A\n" +"sense of danger, such as a mere outsider might not understand, is ever\n" +"present to the mind of the occupant. He feels convinced every minute\n" +"that the whole concern is going over, a conviction which becomes\n" +"especially lively whenever a ditch or a stretch of newly macadamized\n" +"road comes in sight. Every vehicle that passes he expects is going to\n" +"run into him; and he never finds himself ascending or descending a\n" +"hill without immediately beginning to speculate upon his chances,\n" +"supposing--as seems extremely probable--that the weak-kneed controller\n" +"of his destiny should let go.\n" +"\n" +"But even this diversion failed to enliven after awhile, and the _ennui_\n" +"became perfectly unbearable. I felt my mind giving way under it. It is\n" +"not a strong mind, and I thought it would be unwise to tax it too far.\n" +"So somewhere about the twentieth morning I got up early, had a good\n" +"breakfast, and walked straight off to Hayfield, at the foot of the\n" +"Kinder Scout--a pleasant, busy little town, reached through a lovely\n" +"valley, and with two sweetly pretty women in it. At least they were\n" +"sweetly pretty then; one passed me on the bridge and, I think, smiled;\n" +"and the other was standing at an open door, making an unremunerative\n" +"investment of kisses upon a red-faced baby. But it is years ago, and I\n" +"dare say they have both grown stout and snappish since that time.\n" +"Coming back, I saw an old man breaking stones, and it roused such strong\n" +"longing in me to use my arms that I offered him a drink to let me take\n" +"his place. He was a kindly old man and he humored me. I went for those\n" +"stones with the accumulated energy of three weeks, and did more work in\n" +"half an hour than he had done all day. But it did not make him jealous.\n" +"\n" +"Having taken the plunge, I went further and further into dissipation,\n" +"going out for a long walk every morning and listening to the band in\n" +"the pavilion every evening. But the days still passed slowly\n" +"notwithstanding, and I was heartily glad when the last one came and I\n" +"was being whirled away from gouty, consumptive Buxton to London with its\n" +"stern work and life. I looked out of the carriage as we rushed through\n" +"Hendon in the evening. The lurid glare overhanging the mighty city\n" +"seemed to warm my heart, and when, later on, my cab rattled out of St.\n" +"Pancras' station, the old familiar roar that came swelling up around me\n" +"sounded the sweetest music I had heard for many a long day.\n" +"\n" +"I certainly did not enjoy that month's idling. I like idling when I\n" +"ought not to be idling; not when it is the only thing I have to do. That\n" +"is my pig-headed nature. The time when I like best to stand with my\n" +"back to the fire, calculating how much I owe, is when my desk is heaped\n" +"highest with letters that must be answered by the next post. When I like\n" +"to dawdle longest over my dinner is when I have a heavy evening's work\n" +"before me. And if, for some urgent reason, I ought to be up particularly\n" +"early in the morning, it is then, more than at any other time, that I\n" +"love to lie an extra half-hour in bed.\n" +"\n" +"Ah! how delicious it is to turn over and go to sleep again: \"just for\n" +"five minutes.\" Is there any human being, I wonder, besides the hero of\n" +"a Sunday-school \"tale for boys,\" who ever gets up willingly? There\n" +"are some men to whom getting up at the proper time is an utter\n" +"impossibility. If eight o'clock happens to be the time that they should\n" +"turn out, then they lie till half-past. If circumstances change and\n" +"half-past eight becomes early enough for them, then it is nine before\n" +"they can rise. They are like the statesman of whom it was said that he\n" +"was always punctually half an hour late. They try all manner of schemes.\n" +"They buy alarm-clocks (artful contrivances that go off at the wrong time\n" +"and alarm the wrong people). They tell Sarah Jane to knock at the door\n" +"and call them, and Sarah Jane does knock at the door and does call them,\n" +"and they grunt back \"awri\" and then go comfortably to sleep again. I\n" +"knew one man who would actually get out and have a cold bath; and even\n" +"that was of no use, for afterward he would jump into bed again to warm\n" +"himself.\n" +"\n" +"I think myself that I could keep out of bed all right if I once got\n" +"out. It is the wrenching away of the head from the pillow that I find so\n" +"hard, and no amount of over-night determination makes it easier. I say\n" +"to myself, after having wasted the whole evening, \"Well, I won't do\n" +"any more work to-night; I'll get up early to-morrow morning;\" and I am\n" +"thoroughly resolved to do so--then. In the morning, however, I feel less\n" +"enthusiastic about the idea, and reflect that it would have been much\n" +"better if I had stopped up last night. And then there is the trouble of\n" +"dressing, and the more one thinks about that the more one wants to put\n" +"it off.\n" +"\n" +"It is a strange thing this bed, this mimic grave, where we stretch our\n" +"tired limbs and sink away so quietly into the silence and rest. \"O bed,\n" +"O bed, delicious bed, that heaven on earth to the weary head,\" as sang\n" +"poor Hood, you are a kind old nurse to us fretful boys and girls. Clever\n" +"and foolish, naughty and good, you take us all in your motherly lap and\n" +"hush our wayward crying. The strong man full of care--the sick man\n" +"full of pain--the little maiden sobbing for her faithless lover--like\n" +"children we lay our aching heads on your white bosom, and you gently\n" +"soothe us off to by-by.\n" +"\n" +"Our trouble is sore indeed when you turn away and will not comfort us.\n" +"How long the dawn seems coming when we cannot sleep! Oh! those hideous\n" +"nights when we toss and turn in fever and pain, when we lie, like living\n" +"men among the dead, staring out into the dark hours that drift so slowly\n" +"between us and the light. And oh! those still more hideous nights when\n" +"we sit by another in pain, when the low fire startles us every now and\n" +"then with a falling cinder, and the tick of the clock seems a hammer\n" +"beating out the life that we are watching.\n" +"\n" +"But enough of beds and bedrooms. I have kept to them too long, even for\n" +"an idle fellow. Let us come out and have a smoke. That wastes time just\n" +"as well and does not look so bad. Tobacco has been a blessing to us\n" +"idlers. What the civil-service clerk before Sir Walter's time found\n" +"to occupy their minds with it is hard to imagine. I attribute the\n" +"quarrelsome nature of the Middle Ages young men entirely to the want of\n" +"the soothing weed. They had no work to do and could not smoke, and\n" +"the consequence was they were forever fighting and rowing. If, by any\n" +"extraordinary chance, there was no war going, then they got up a deadly\n" +"family feud with the next-door neighbor, and if, in spite of this, they\n" +"still had a few spare moments on their hands, they occupied them with\n" +"discussions as to whose sweetheart was the best looking, the arguments\n" +"employed on both sides being battle-axes, clubs, etc. Questions of taste\n" +"were soon decided in those days. When a twelfth-century youth fell in\n" +"love he did not take three paces backward, gaze into her eyes, and tell\n" +"her she was too beautiful to live. He said he would step outside and see\n" +"about it. And if, when he got out, he met a man and broke his head--the\n" +"other man's head, I mean--then that proved that his--the first\n" +"fellow's--girl was a pretty girl. But if the other fellow broke _his_\n" +"head--not his own, you know, but the other fellow's--the other fellow\n" +"to the second fellow, that is, because of course the other fellow would\n" +"only be the other fellow to him, not the first fellow who--well, if he\n" +"broke his head, then _his_ girl--not the other fellow's, but the fellow\n" +"who _was_ the--Look here, if A broke B's head, then A's girl was a\n" +"pretty girl; but if B broke A's head, then A's girl wasn't a pretty\n" +"girl, but B's girl was. That was their method of conducting art\n" +"criticism.\n" +"\n" +"Nowadays we light a pipe and let the girls fight it out among\n" +"themselves.\n" +"\n" +"They do it very well. They are getting to do all our work. They are\n" +"doctors, and barristers, and artists. They manage theaters, and promote\n" +"swindles, and edit newspapers. I am looking forward to the time when we\n" +"men shall have nothing to do but lie in bed till twelve, read two novels\n" +"a day, have nice little five-o'clock teas all to ourselves, and tax\n" +"our brains with nothing more trying than discussions upon the latest\n" +"patterns in trousers and arguments as to what Mr. Jones' coat was\n" +"made of and whether it fitted him. It is a glorious prospect--for idle\n" +"fellows.\n" +"\n\n\n" +; +static const size_t IDLE_SIZE = sizeof(on_being_idle) - 1; +#endif + +/* This is the "LSWS" mode: first write is performed immediately, outside + * of the on_write() callback. This makes it possible to play with buffered + * packet queues. + */ +static int s_immediate_write; + +/* Use preadv(2) in conjuction with lsquic_stream_pwritev() to reduce + * number of system calls required to read from disk. The actual value + * specifies maximum write size. A negative value indicates always to use + * the remaining file size. + */ +static ssize_t s_pwritev; + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define V(v) (v), strlen(v) + +struct lsquic_conn_ctx; + +static void interop_server_hset_destroy (void *); + + +struct server_ctx { + struct lsquic_conn_ctx *conn_h; + lsquic_engine_t *engine; + const char *document_root; + const char *push_path; + struct sport_head sports; + struct prog *prog; + unsigned max_conn; + unsigned n_conn; + unsigned n_current_conns; + unsigned delay_resp_sec; +}; + +struct lsquic_conn_ctx { + lsquic_conn_t *conn; + struct server_ctx *server_ctx; + enum { + RECEIVED_GOAWAY = 1 << 0, + } flags; +}; + + +static lsquic_conn_ctx_t * +http_server_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) +{ + struct server_ctx *server_ctx = stream_if_ctx; + const char *sni; + + sni = lsquic_conn_get_sni(conn); + LSQ_DEBUG("new connection, SNI: %s", sni ? sni : ""); + + lsquic_conn_ctx_t *conn_h = malloc(sizeof(*conn_h)); + conn_h->conn = conn; + conn_h->server_ctx = server_ctx; + server_ctx->conn_h = conn_h; + ++server_ctx->n_current_conns; + return conn_h; +} + + +static void +http_server_on_goaway (lsquic_conn_t *conn) +{ + lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); + conn_h->flags |= RECEIVED_GOAWAY; + LSQ_INFO("received GOAWAY"); +} + + +static void +http_server_on_conn_closed (lsquic_conn_t *conn) +{ + static int stopped; + lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); + LSQ_INFO("Connection closed"); + --conn_h->server_ctx->n_current_conns; + if ((conn_h->server_ctx->prog->prog_flags & PROG_FLAG_COOLDOWN) + && 0 == conn_h->server_ctx->n_current_conns) + { + if (!stopped) + { + stopped = 1; + prog_stop(conn_h->server_ctx->prog); + } + } + if (conn_h->server_ctx->max_conn > 0) + { + ++conn_h->server_ctx->n_conn; + LSQ_NOTICE("Connection closed, remaining: %d", + conn_h->server_ctx->max_conn - conn_h->server_ctx->n_conn); + if (conn_h->server_ctx->n_conn >= conn_h->server_ctx->max_conn) + { + if (!stopped) + { + stopped = 1; + prog_stop(conn_h->server_ctx->prog); + } + } + } + /* No provision is made to stop HTTP server */ + lsquic_conn_set_ctx(conn, NULL); + free(conn_h); +} + + +struct resp +{ + const char *buf; + size_t sz; + size_t off; +}; + + +struct index_html_ctx +{ + struct resp resp; +}; + + +struct ver_head_ctx +{ + struct resp resp; + unsigned char *req_body; + size_t req_sz; /* Expect it to be the same as qif_sz */ +}; + + +struct md5sum_ctx +{ + char resp_buf[0x100]; + MD5_CTX md5ctx; + struct resp resp; + int done; +}; + + +struct req +{ + enum method { + UNSET, GET, POST, UNSUPPORTED, + } method; + enum { + HAVE_XHDR = 1 << 0, + } flags; + enum { + PH_AUTHORITY = 1 << 0, + PH_METHOD = 1 << 1, + PH_PATH = 1 << 2, + } pseudo_headers; + char *path; + char *method_str; + char *authority_str; + char *qif_str; + size_t qif_sz; + struct lsxpack_header + xhdr; + size_t decode_off; + char decode_buf[MIN(LSXPACK_MAX_STRLEN + 1, 64 * 1024)]; +}; + + +struct interop_push_path +{ + STAILQ_ENTRY(interop_push_path) next; + char path[0]; +}; + + +struct gen_file_ctx +{ + STAILQ_HEAD(, interop_push_path) push_paths; + size_t remain; + unsigned idle_off; +}; + + +struct lsquic_stream_ctx { + lsquic_stream_t *stream; + struct server_ctx *server_ctx; + FILE *req_fh; + char *req_buf; + char *req_filename; + char *req_path; + size_t req_sz; + enum { + SH_HEADERS_SENT = (1 << 0), + SH_DELAYED = (1 << 1), + SH_HEADERS_READ = (1 << 2), + } flags; + struct lsquic_reader reader; + int file_fd; /* Used by pwritev */ + + /* Fields below are used by interop callbacks: */ + enum interop_handler { + IOH_ERROR, + IOH_INDEX_HTML, + IOH_MD5SUM, + IOH_VER_HEAD, + IOH_GEN_FILE, + IOH_ECHO, + } interop_handler; + struct req *req; + const char *resp_status; + union { + struct index_html_ctx ihc; + struct ver_head_ctx vhc; + struct md5sum_ctx md5c; + struct gen_file_ctx gfc; + struct { + char buf[0x100]; + struct resp resp; + } err; + } interop_u; + struct event *resume_resp; + size_t written; + size_t file_size; /* Used by pwritev */ +}; + + +static lsquic_stream_ctx_t * +http_server_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) +{ + lsquic_stream_ctx_t *st_h = calloc(1, sizeof(*st_h)); + st_h->stream = stream; + st_h->server_ctx = stream_if_ctx; + lsquic_stream_wantread(stream, 1); + return st_h; +} + + +static int +ends_with (const char *filename, const char *ext) +{ + const char *where; + + where = strstr(filename, ext); + return where + && strlen(where) == strlen(ext); +} + + +static const char * +select_content_type (lsquic_stream_ctx_t *st_h) +{ + if ( ends_with(st_h->req_filename, ".html")) + return "text/html"; + else if (ends_with(st_h->req_filename, ".png")) + return "image/png"; + else if (ends_with(st_h->req_filename, ".css")) + return "text/css"; + else if (ends_with(st_h->req_filename, ".gif")) + return "image/gif"; + else if (ends_with(st_h->req_filename, ".txt")) + return "text/plain"; + else + return "application/octet-stream"; +} + + +static int +send_headers (struct lsquic_stream *stream, lsquic_stream_ctx_t *st_h) +{ + const char *content_type; + struct header_buf hbuf; + + content_type = select_content_type(st_h); + struct lsxpack_header headers_arr[2]; + + hbuf.off = 0; + header_set_ptr(&headers_arr[0], &hbuf, ":status", 7, "200", 3); + header_set_ptr(&headers_arr[1], &hbuf, "content-type", 12, + content_type, strlen(content_type)); + lsquic_http_headers_t headers = { + .count = sizeof(headers_arr) / sizeof(headers_arr[0]), + .headers = headers_arr, + }; + if (0 != lsquic_stream_send_headers(stream, &headers, 0)) + { + LSQ_ERROR("cannot send headers: %s", strerror(errno)); + return -1; + } + + st_h->flags |= SH_HEADERS_SENT; + return 0; +} + + +static void +resume_response (evutil_socket_t fd, short what, void *arg) +{ + struct lsquic_stream_ctx *const st_h = arg; + + lsquic_stream_wantwrite(st_h->stream, 1); + event_del(st_h->resume_resp); + event_free(st_h->resume_resp); + st_h->resume_resp = NULL; + + LSQ_NOTICE("resume response to stream %"PRIu64, + lsquic_stream_id(st_h->stream)); + prog_process_conns(st_h->server_ctx->prog); +} + + +static size_t +bytes_left (lsquic_stream_ctx_t *st_h) +{ + if (s_pwritev) + return st_h->file_size - st_h->written; + else + return test_reader_size(st_h->reader.lsqr_ctx); +} + + +static ssize_t +my_preadv (void *user_data, const struct iovec *iov, int iovcnt) +{ +#if HAVE_PREADV + lsquic_stream_ctx_t *const st_h = user_data; + ssize_t nread = preadv(st_h->file_fd, iov, iovcnt, st_h->written); + LSQ_DEBUG("%s: wrote %zd bytes", __func__, (size_t) nread); + return nread; +#else + return -1; +#endif +} + + +static size_t +pwritev_fallback_read (void *lsqr_ctx, void *buf, size_t count) +{ + lsquic_stream_ctx_t *const st_h = lsqr_ctx; + struct iovec iov; + size_t ntoread; + + ntoread = st_h->file_size - st_h->written; + if (ntoread > count) + count = ntoread; + iov.iov_base = buf; + iov.iov_len = count; + return my_preadv(lsqr_ctx, &iov, 1); +} + + +static size_t +pwritev_fallback_size (void *lsqr_ctx) +{ + lsquic_stream_ctx_t *const st_h = lsqr_ctx; + return st_h->file_size - st_h->written; +} + + +static void +http_server_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + if (st_h->flags & SH_HEADERS_SENT) + { + ssize_t nw; + if (bytes_left(st_h) > 0) + { + if (st_h->server_ctx->delay_resp_sec + && !(st_h->flags & SH_DELAYED) + && st_h->written > 10000000) + { + struct timeval delay = { + .tv_sec = st_h->server_ctx->delay_resp_sec, }; + st_h->resume_resp = event_new(st_h->server_ctx->prog->prog_eb, + -1, EV_TIMEOUT, resume_response, st_h); + if (st_h->resume_resp) + { + event_add(st_h->resume_resp, &delay); + lsquic_stream_wantwrite(stream, 0); + st_h->flags |= SH_DELAYED; + LSQ_NOTICE("delay response of stream %"PRIu64" for %u seconds", + lsquic_stream_id(stream), st_h->server_ctx->delay_resp_sec); + return; + } + else + LSQ_ERROR("cannot allocate event"); + } + if (s_pwritev) + { + size_t to_write = bytes_left(st_h); + if (s_pwritev > 0 && (size_t) s_pwritev < to_write) + to_write = s_pwritev; + nw = lsquic_stream_pwritev(stream, my_preadv, st_h, to_write); + if (nw == 0) + { + struct lsquic_reader reader = { + .lsqr_read = pwritev_fallback_read, + .lsqr_size = pwritev_fallback_size, + .lsqr_ctx = st_h, + }; + nw = lsquic_stream_writef(stream, &reader); + } + } + else + { + nw = lsquic_stream_writef(stream, &st_h->reader); + } + if (nw < 0) + { + struct lsquic_conn *conn = lsquic_stream_conn(stream); + lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); + if (conn_h->flags & RECEIVED_GOAWAY) + { + LSQ_NOTICE("cannot write: goaway received"); + lsquic_stream_close(stream); + } + else + { + LSQ_ERROR("write error: %s", strerror(errno)); + exit(1); + } + } + if (bytes_left(st_h) > 0) + { + st_h->written += (size_t) nw; + lsquic_stream_wantwrite(stream, 1); + } + else + { + lsquic_stream_shutdown(stream, 1); + lsquic_stream_wantread(stream, 1); + } + } + else + { + lsquic_stream_shutdown(stream, 1); + lsquic_stream_wantread(stream, 1); + } + } + else + { + if (0 != send_headers(stream, st_h)) + exit(1); + } +} + + +struct capped_reader_ctx +{ + struct lsquic_reader *inner_reader; + size_t nread; +}; + + +static size_t +capped_reader_size (void *void_ctx) +{ + struct capped_reader_ctx *const capped_reader_ctx = void_ctx; + struct lsquic_reader *const inner_reader = capped_reader_ctx->inner_reader; + size_t size; + + size = inner_reader->lsqr_size(inner_reader->lsqr_ctx); + return MIN((size_t) (s_immediate_write - capped_reader_ctx->nread), size); +} + + +static size_t +capped_reader_read (void *void_ctx, void *buf, size_t count) +{ + struct capped_reader_ctx *const capped_reader_ctx = void_ctx; + struct lsquic_reader *const inner_reader = capped_reader_ctx->inner_reader; + size_t size; + + count = MIN(count, (size_t) (s_immediate_write - capped_reader_ctx->nread)); + size = inner_reader->lsqr_read(inner_reader->lsqr_ctx, buf, count); + capped_reader_ctx->nread += size; + return size; +} + + +#if HAVE_OPEN_MEMSTREAM +static void +parse_request (struct lsquic_stream *stream, lsquic_stream_ctx_t *st_h) +{ + char *filename; + int s; + regex_t re; + regmatch_t matches[2]; + + s = regcomp(&re, "GET (.*) HTTP/1.[01]\r\n", REG_EXTENDED); + if (0 != s) + { + perror("regcomp"); + exit(3); + } + + s = regexec(&re, st_h->req_buf, 2, matches, 0); + if (0 != s) + { + LSQ_WARN("GET request could not be parsed: `%s'", st_h->req_buf); + regfree(&re); + return; + } + + regfree(&re); + + filename = malloc(strlen(st_h->server_ctx->document_root) + 1 + + matches[1].rm_eo - matches[1].rm_so + 1); + strcpy(filename, st_h->server_ctx->document_root); + strcat(filename, "/"); + strncat(filename, st_h->req_buf + matches[1].rm_so, + matches[1].rm_eo - matches[1].rm_so); + + LSQ_INFO("filename to fetch: %s", filename); + + st_h->req_filename = filename; + st_h->req_path = strdup(filename); +} + + +static void +process_request (struct lsquic_stream *stream, lsquic_stream_ctx_t *st_h) +{ + struct stat st; + + if (s_pwritev) + { + st_h->file_fd = open(st_h->req_path, O_RDONLY); + if (st_h->file_fd < 0) + { + LSQ_ERROR("cannot open %s for reading: %s", st_h->req_path, + strerror(errno)); + exit(1); + } + if (fstat(st_h->file_fd, &st) < 0) + { + LSQ_ERROR("fstat: %s", strerror(errno)); + exit(1); + } + st_h->file_size = st.st_size; + } + else + { + st_h->reader.lsqr_read = test_reader_read; + st_h->reader.lsqr_size = test_reader_size; + st_h->reader.lsqr_ctx = create_lsquic_reader_ctx(st_h->req_path); + if (!st_h->reader.lsqr_ctx) + exit(1); + } + + if (s_immediate_write) + { + if (0 != send_headers(stream, st_h)) + exit(1); + + if (test_reader_size(st_h->reader.lsqr_ctx) > 0) + { + struct capped_reader_ctx capped_reader_ctx = + { + .inner_reader = &st_h->reader, + }; + struct lsquic_reader capped_reader = + { + .lsqr_read = capped_reader_read, + .lsqr_size = capped_reader_size, + .lsqr_ctx = &capped_reader_ctx, + }; + ssize_t nw; + nw = lsquic_stream_writef(stream, &capped_reader); + if (nw < 0) + { + LSQ_ERROR("write error: %s", strerror(errno)); + exit(1); + } + } + + if (test_reader_size(st_h->reader.lsqr_ctx) > 0) + { + lsquic_stream_flush(stream); + lsquic_stream_wantwrite(stream, 1); + } + else + { + lsquic_stream_shutdown(stream, 1); + lsquic_stream_wantread(stream, 1); + } + } + else + lsquic_stream_wantwrite(st_h->stream, 1); +} + + +static struct hset_fm /* FM stands for Filesystem Mode */ +{ + unsigned id; + char *path; +} * +new_hset_fm (const char *path) +{ + static unsigned hfm_id; + struct hset_fm *const hfm = malloc(sizeof(*hfm)); + char *const str = strdup(path); + if (hfm && path) + { + hfm->id = hfm_id++; + hfm->path = str; + return hfm; + } + else + { + free(str); + free(hfm); + return NULL; + } +} + + +static void +destroy_hset_fm (struct hset_fm *hfm) +{ + free(hfm->path); + free(hfm); +} + + +static int +push_promise (lsquic_stream_ctx_t *st_h, lsquic_stream_t *stream) +{ + lsquic_conn_t *conn; + int s; + regex_t re; + regmatch_t matches[2]; + struct hset_fm *hfm; + struct header_buf hbuf; + + s = regcomp(&re, "\r\nHost: *([[:alnum:].][[:alnum:].]*)\r\n", + REG_EXTENDED|REG_ICASE); + if (0 != s) + { + perror("regcomp"); + exit(3); + } + + s = regexec(&re, st_h->req_buf, 2, matches, 0); + if (0 != s) + { + LSQ_WARN("Could not find host header in request `%s'", st_h->req_buf); + regfree(&re); + return -1; + } + regfree(&re); + + hfm = new_hset_fm(st_h->server_ctx->push_path); + if (!hfm) + { + LSQ_WARN("Could not allocate hfm"); + return -1; + } + +#define V(v) (v), strlen(v) + hbuf.off = 0; + struct lsxpack_header headers_arr[6]; + header_set_ptr(&headers_arr[0], &hbuf, V(":method"), V("GET")); + header_set_ptr(&headers_arr[1], &hbuf, V(":path"), + V(st_h->server_ctx->push_path)); + header_set_ptr(&headers_arr[2], &hbuf, V(":authority"), + st_h->req_buf + matches[1].rm_so, matches[1].rm_eo - matches[1].rm_so); + header_set_ptr(&headers_arr[3], &hbuf, V(":scheme"), V("https")); + header_set_ptr(&headers_arr[4], &hbuf, V("x-some-header"), + V("x-some-value")); + header_set_ptr(&headers_arr[5], &hbuf, V("x-kenny-status"), + V("Oh my God! They killed Kenny!!! You bastards!")); + lsquic_http_headers_t headers = { + .count = sizeof(headers_arr) / sizeof(headers_arr[0]), + .headers = headers_arr, + }; + + conn = lsquic_stream_conn(stream); + s = lsquic_conn_push_stream(conn, hfm, stream, &headers); + if (0 == s) + LSQ_NOTICE("pushed stream successfully"); + else + { + destroy_hset_fm(hfm); + LSQ_ERROR("could not push stream: %s", strerror(errno)); + } + + return 0; +} + + +static void +http_server_on_read_pushed (struct lsquic_stream *stream, + lsquic_stream_ctx_t *st_h) +{ + struct hset_fm *hfm; + + hfm = lsquic_stream_get_hset(stream); + if (!hfm) + { + LSQ_ERROR("%s: error fetching hset: %s", __func__, strerror(errno)); + lsquic_stream_close(stream); + return; + } + + LSQ_INFO("got push request #%u for %s", hfm->id, hfm->path); + st_h->req_path = malloc(strlen(st_h->server_ctx->document_root) + 1 + + strlen(hfm->path) + 1); + strcpy(st_h->req_path, st_h->server_ctx->document_root); + strcat(st_h->req_path, "/"); + strcat(st_h->req_path, hfm->path); + st_h->req_filename = strdup(st_h->req_path); /* XXX Only used for ends_with: drop it? */ + + process_request(stream, st_h); + free(st_h->req_buf); + lsquic_stream_shutdown(stream, 0); + destroy_hset_fm(hfm); +} + + +static void +http_server_on_read_regular (struct lsquic_stream *stream, + lsquic_stream_ctx_t *st_h) +{ + unsigned char buf[0x400]; + ssize_t nread; + int s; + + if (!st_h->req_fh) + st_h->req_fh = open_memstream(&st_h->req_buf, &st_h->req_sz); + + nread = lsquic_stream_read(stream, buf, sizeof(buf)); + if (nread > 0) + fwrite(buf, 1, nread, st_h->req_fh); + else if (0 == nread) + { + fwrite("", 1, 1, st_h->req_fh); /* NUL-terminate so that we can regex the string */ + fclose(st_h->req_fh); + LSQ_INFO("got request: `%.*s'", (int) st_h->req_sz, st_h->req_buf); + parse_request(stream, st_h); + if (st_h->server_ctx->push_path && + 0 != strcmp(st_h->req_path, st_h->server_ctx->push_path)) + { + s = push_promise(st_h, stream); + if (s != 0) + exit(1); + } + process_request(stream, st_h); + free(st_h->req_buf); + lsquic_stream_shutdown(stream, 0); + } + else + { + LSQ_ERROR("error reading: %s", strerror(errno)); + lsquic_stream_close(stream); + } +} +#endif + + +static void +http_server_on_read (struct lsquic_stream *stream, lsquic_stream_ctx_t *st_h) +{ +#if HAVE_OPEN_MEMSTREAM + if (lsquic_stream_is_pushed(stream)) + http_server_on_read_pushed(stream, st_h); + else + http_server_on_read_regular(stream, st_h); +#else + LSQ_ERROR("%s: open_memstream not supported\n", __func__); + exit(1); +#endif +} + + +static void +http_server_on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + free(st_h->req_filename); + free(st_h->req_path); + if (st_h->reader.lsqr_ctx) + destroy_lsquic_reader_ctx(st_h->reader.lsqr_ctx); +#if HAVE_PREADV + if (s_pwritev) + close(st_h->file_fd); +#endif + if (st_h->req) + interop_server_hset_destroy(st_h->req); + free(st_h); + LSQ_INFO("%s called, has unacked data: %d", __func__, + lsquic_stream_has_unacked_data(stream)); +} + + +const struct lsquic_stream_if http_server_if = { + .on_new_conn = http_server_on_new_conn, + .on_conn_closed = http_server_on_conn_closed, + .on_new_stream = http_server_on_new_stream, + .on_read = http_server_on_read, + .on_write = http_server_on_write, + .on_close = http_server_on_close, + .on_goaway_received = http_server_on_goaway, +}; + + +#if HAVE_OPEN_MEMSTREAM +static void +hq_server_on_read (struct lsquic_stream *stream, lsquic_stream_ctx_t *st_h) +{ + char tbuf[0x100], *buf; + ssize_t nread; + char *path, *end, *filename; + + if (!st_h->req_fh) + st_h->req_fh = open_memstream(&st_h->req_buf, &st_h->req_sz); + + nread = lsquic_stream_read(stream, tbuf, sizeof(tbuf)); + if (nread > 0) + { + fwrite(tbuf, 1, nread, st_h->req_fh); + return; + } + + if (nread < 0) + { + LSQ_WARN("error reading request from stream: %s", strerror(errno)); + lsquic_stream_close(stream); + return; + } + + fwrite("", 1, 1, st_h->req_fh); + fclose(st_h->req_fh); + LSQ_INFO("got request: `%.*s'", (int) st_h->req_sz, st_h->req_buf); + + buf = st_h->req_buf; + path = strchr(buf, ' '); + if (!path) + { + LSQ_WARN("invalid request (no space character): `%s'", buf); + lsquic_stream_close(stream); + return; + } + if (!(path - buf == 3 && 0 == strncasecmp(buf, "GET", 3))) + { + LSQ_NOTICE("unsupported method `%.*s'", (int) (path - buf), buf); + lsquic_stream_close(stream); + return; + } + ++path; + for (end = buf + st_h->req_sz - 1; end > path + && (*end == '\0' || *end == '\r' || *end == '\n'); --end) + *end = '\0'; + LSQ_NOTICE("parsed out request path: %s", path); + + filename = malloc(strlen(st_h->server_ctx->document_root) + 1 + strlen(path) + 1); + strcpy(filename, st_h->server_ctx->document_root); + strcat(filename, "/"); + strcat(filename, path); + LSQ_NOTICE("file to fetch: %s", filename); + /* XXX This copy pasta is getting a bit annoying now: two mallocs of the + * same thing? + */ + st_h->req_filename = filename; + st_h->req_path = strdup(filename); + st_h->reader.lsqr_read = test_reader_read; + st_h->reader.lsqr_size = test_reader_size; + st_h->reader.lsqr_ctx = create_lsquic_reader_ctx(st_h->req_path); + if (!st_h->reader.lsqr_ctx) + { + lsquic_stream_close(stream); + return; + } + lsquic_stream_shutdown(stream, 0); + lsquic_stream_wantwrite(stream, 1); +} + + +static void +hq_server_on_write (struct lsquic_stream *stream, lsquic_stream_ctx_t *st_h) +{ + ssize_t nw; + + nw = lsquic_stream_writef(stream, &st_h->reader); + if (nw < 0) + { + struct lsquic_conn *conn = lsquic_stream_conn(stream); + lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); + if (conn_h->flags & RECEIVED_GOAWAY) + { + LSQ_NOTICE("cannot write: goaway received"); + lsquic_stream_close(stream); + } + else + { + LSQ_ERROR("write error: %s", strerror(errno)); + lsquic_stream_close(stream); + } + } + else if (bytes_left(st_h) > 0) + { + st_h->written += (size_t) nw; + lsquic_stream_wantwrite(stream, 1); + } + else + { + lsquic_stream_shutdown(stream, 1); + lsquic_stream_wantread(stream, 1); + } +} + + +const struct lsquic_stream_if hq_server_if = { + .on_new_conn = http_server_on_new_conn, + .on_conn_closed = http_server_on_conn_closed, + .on_new_stream = http_server_on_new_stream, + .on_read = hq_server_on_read, + .on_write = hq_server_on_write, + .on_close = http_server_on_close, +}; +#endif + + +#if HAVE_REGEX +struct req_map +{ + enum method method; + const char *path; + enum interop_handler handler; + const char *status; + enum { + RM_WANTBODY = 1 << 0, + RM_REGEX = 1 << 1, + RM_COMPILED = 1 << 2, + } flags; + regex_t re; +}; + + +static struct req_map req_maps[] = +{ + { .method = GET, .path = "/", .handler = IOH_INDEX_HTML, .status = "200", .flags = 0, }, + { .method = GET, .path = "/index.html", .handler = IOH_INDEX_HTML, .status = "200", .flags = 0, }, + { .method = POST, .path = "/cgi-bin/md5sum.cgi", .handler = IOH_MD5SUM, .status = "200", .flags = RM_WANTBODY, }, + { .method = POST, .path = "/cgi-bin/verify-headers.cgi", .handler = IOH_VER_HEAD, .status = "200", .flags = RM_WANTBODY, }, + { .method = GET, .path = "^/([0-9][0-9]*)([KMG]?)$", .handler = IOH_GEN_FILE, .status = "200", .flags = RM_REGEX, }, + { .method = GET, .path = "^/([0-9][0-9]*)([KMG]?)\\?push=([^&]*)$", .handler = IOH_GEN_FILE, .status = "200", .flags = RM_REGEX, }, + { .method = GET, .path = "^/([0-9][0-9]*)([KMG]?)\\?push=([^&]*)&push=([^&]*)$", .handler = IOH_GEN_FILE, .status = "200", .flags = RM_REGEX, }, + { .method = GET, .path = "^/([0-9][0-9]*)([KMG]?)\\?push=([^&]*)&push=([^&]*)&push=([^&]*)$", .handler = IOH_GEN_FILE, .status = "200", .flags = RM_REGEX, }, + { .method = GET, .path = "^/file-([0-9][0-9]*)([KMG]?)$", .handler = IOH_GEN_FILE, .status = "200", .flags = RM_REGEX, }, + { .method = GET, .path = "^/file-([0-9][0-9]*)([KMG]?)\\?push=([^&]*)$", .handler = IOH_GEN_FILE, .status = "200", .flags = RM_REGEX, }, + { .method = GET, .path = "^/file-([0-9][0-9]*)([KMG]?)\\?push=([^&]*)&push=([^&]*)$", .handler = IOH_GEN_FILE, .status = "200", .flags = RM_REGEX, }, + { .method = GET, .path = "^/file-([0-9][0-9]*)([KMG]?)\\?push=([^&]*)&push=([^&]*)&push=([^&]*)$", .handler = IOH_GEN_FILE, .status = "200", .flags = RM_REGEX, }, +}; + + +#define MAX_MATCHES 5 + + +static void +init_map_regexes (void) +{ + struct req_map *map; + + for (map = req_maps; map < req_maps + sizeof(req_maps) + / sizeof(req_maps[0]); ++map) + if (map->flags & RM_REGEX) + { +#ifndef NDEBUG + int s; + s = +#endif + regcomp(&map->re, map->path, REG_EXTENDED|REG_ICASE); + assert(0 == s); + map->flags |= RM_COMPILED; + } +} + + +static void +free_map_regexes (void) +{ + struct req_map *map; + + for (map = req_maps; map < req_maps + sizeof(req_maps) + / sizeof(req_maps[0]); ++map) + if (map->flags & RM_COMPILED) + { + regfree(&map->re); + map->flags &= ~RM_COMPILED; + } +} + + +static const struct req_map * +find_handler (enum method method, const char *path, regmatch_t *matches) +{ + const struct req_map *map; + + for (map = req_maps; map < req_maps + sizeof(req_maps) + / sizeof(req_maps[0]); ++map) + if (map->flags & RM_COMPILED) + { + if (0 == regexec(&map->re, path, MAX_MATCHES + 1, matches, 0)) + return map; + } + else if (0 == strcasecmp(path, map->path)) + return map; + + return NULL; +} + + +static const char INDEX_HTML[] = +"\n" +" \n" +" LiteSpeed IETF QUIC Server Index Page\n" +" \n" +" \n" +"

LiteSpeed IETF QUIC Server Index Page

\n" +"

Hello! Welcome to the interop. Available services:\n" +"

    \n" +"
  • POST to /cgi-bin/md5sum.cgi. This will return\n" +" MD5 checksum of the request body.\n" +"
  • GET /123K or GET /file-123K. This will return\n" +" requested number of payload in the form of repeating text\n" +" by Jerome K. Jerome. The size specification must match\n" +" (\\d+)[KMG]? and the total size request must not exceed\n" +" 2 gigabytes. Then, you will get back that many bytes\n" +" of the beloved classic.\n" +"
\n" +" \n" +"\n" +; + + +static size_t +read_md5 (void *ctx, const unsigned char *buf, size_t sz, int fin) +{ + struct lsquic_stream_ctx *st_h = ctx; + + if (sz) + MD5_Update(&st_h->interop_u.md5c.md5ctx, buf, sz); + + if (fin) + st_h->interop_u.md5c.done = 1; + + return sz; +} + + +static void +http_server_interop_on_read (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ +#define ERROR_RESP(code, ...) do { \ + LSQ_WARN(__VA_ARGS__); \ + st_h->interop_handler = IOH_ERROR; \ + st_h->resp_status = #code; \ + st_h->interop_u.err.resp.sz = snprintf(st_h->interop_u.err.buf, \ + sizeof(st_h->interop_u.err.buf), __VA_ARGS__); \ + if (st_h->interop_u.err.resp.sz >= sizeof(st_h->interop_u.err.buf)) \ + st_h->interop_u.err.resp.sz = sizeof(st_h->interop_u.err.buf) - 1; \ + st_h->interop_u.err.resp.buf = st_h->interop_u.err.buf; \ + st_h->interop_u.err.resp.off = 0; \ + goto err; \ +} while (0) + + const struct req_map *map; + ssize_t nw; + size_t need; + unsigned len, i; + struct interop_push_path *push_path; + regmatch_t matches[MAX_MATCHES + 1]; + unsigned char md5sum[MD5_DIGEST_LENGTH]; + char md5str[ sizeof(md5sum) * 2 + 1 ]; + char byte[1]; + + if (!(st_h->flags & SH_HEADERS_READ)) + { + st_h->flags |= SH_HEADERS_READ; + st_h->req = lsquic_stream_get_hset(stream); + if (!st_h->req) + ERROR_RESP(500, "Internal error: cannot fetch header set from stream"); + else if (st_h->req->method == UNSET) + ERROR_RESP(400, "Method is not specified"); + else if (!st_h->req->path) + ERROR_RESP(400, "Path is not specified"); + else if (st_h->req->method == UNSUPPORTED) + ERROR_RESP(501, "Method %s is not supported", st_h->req->method_str); + else if (!(map = find_handler(st_h->req->method, st_h->req->path, matches))) + ERROR_RESP(404, "No handler found for method: %s; path: %s", + st_h->req->method_str, st_h->req->path); + else + { + LSQ_INFO("found handler for %s %s", st_h->req->method_str, st_h->req->path); + st_h->resp_status = map->status; + st_h->interop_handler = map->handler; + switch (map->handler) + { + case IOH_INDEX_HTML: + st_h->interop_u.ihc.resp = (struct resp) { INDEX_HTML, sizeof(INDEX_HTML) - 1, 0, }; + break; + case IOH_VER_HEAD: + st_h->interop_u.vhc.resp = (struct resp) { + st_h->req->qif_str, st_h->req->qif_sz, 0, }; + break; + case IOH_MD5SUM: + MD5_Init(&st_h->interop_u.md5c.md5ctx); + st_h->interop_u.md5c.done = 0; + break; + case IOH_GEN_FILE: + STAILQ_INIT(&st_h->interop_u.gfc.push_paths); + st_h->interop_u.gfc.remain = strtol(st_h->req->path + matches[1].rm_so, NULL, 10); + if (matches[2].rm_so >= 0 + && matches[2].rm_so < matches[2].rm_eo) + { + switch (st_h->req->path[ matches[2].rm_so ]) + { + case 'G': + case 'g': + st_h->interop_u.gfc.remain <<= 30; + break; + case 'M': + case 'm': + st_h->interop_u.gfc.remain <<= 20; + break; + case 'K': + case 'k': + st_h->interop_u.gfc.remain <<= 10; + break; + } + } + if (st_h->interop_u.gfc.remain > 2 * (1u << 30)) + ERROR_RESP(406, "Response of %zd bytes is too long to generate", + st_h->interop_u.gfc.remain); + st_h->interop_u.gfc.idle_off = 0; + for (i = 3; i <= MAX_MATCHES; ++i) + if (matches[i].rm_so >= 0) + { + len = matches[i].rm_eo - matches[i].rm_so; + push_path = malloc(sizeof(*push_path) + len + 1); + memcpy(push_path->path, st_h->req->path + + matches[i].rm_so, len); + push_path->path[len] ='\0'; + STAILQ_INSERT_TAIL(&st_h->interop_u.gfc.push_paths, + push_path, next); + } + else + break; + break; + default: + /* TODO: implement this */ + assert(0); + break; + } + } + + if (!(map->flags & RM_WANTBODY)) + { + err: + lsquic_stream_shutdown(stream, 0); + lsquic_stream_wantwrite(stream, 1); + } + } + else + { + switch (st_h->interop_handler) + { + case IOH_MD5SUM: + assert(!st_h->interop_u.md5c.done); + nw = lsquic_stream_readf(stream, read_md5, st_h); + if (nw < 0) + { + LSQ_ERROR("could not read from stream for MD5: %s", strerror(errno)); + exit(1); + } + if (nw == 0) + st_h->interop_u.md5c.done = 1; + if (st_h->interop_u.md5c.done) + { + MD5_Final(md5sum, &st_h->interop_u.md5c.md5ctx); + lsquic_hexstr(md5sum, sizeof(md5sum), md5str, sizeof(md5str)); + snprintf(st_h->interop_u.md5c.resp_buf, sizeof(st_h->interop_u.md5c.resp_buf), + "MD5 Checksum Result\n" + "

MD5 Checksum Result

\n

" + "MD5 Checksum: %s\n\n", + md5str); + st_h->interop_u.md5c.resp.buf = st_h->interop_u.md5c.resp_buf; + st_h->interop_u.md5c.resp.sz = strlen(st_h->interop_u.md5c.resp_buf); + st_h->interop_u.md5c.resp.off = 0; + lsquic_stream_shutdown(stream, 0); + lsquic_stream_wantwrite(stream, 1); + } + break; + case IOH_VER_HEAD: + if (!st_h->interop_u.vhc.req_body) + { + st_h->interop_u.vhc.req_body = malloc(st_h->req->qif_sz); + if (!st_h->interop_u.vhc.req_body) + { + perror("malloc"); + exit(1); + } + } + need = st_h->req->qif_sz - st_h->interop_u.vhc.req_sz; + if (need > 0) + { + nw = lsquic_stream_read(stream, + st_h->interop_u.vhc.req_body + + st_h->interop_u.vhc.req_sz, need); + if (nw > 0) + st_h->interop_u.vhc.req_sz += need; + else if (nw == 0) + { + LSQ_WARN("request body too short (does not match headers)"); + lsquic_stream_shutdown(stream, 0); + lsquic_stream_wantwrite(stream, 1); + } + else + { + LSQ_ERROR("error reading from stream"); + exit(1); + } + } + else + { + nw = lsquic_stream_read(stream, byte, sizeof(byte)); + if (nw == 0) + { + if (0 == memcmp(st_h->req->qif_str, + st_h->interop_u.vhc.req_body, st_h->req->qif_sz)) + LSQ_INFO("request headers and payload check out"); + else + LSQ_WARN("request headers and payload are different"); + } + else + LSQ_WARN("request body too long (does not match headers)"); + lsquic_stream_shutdown(stream, 0); + lsquic_stream_wantwrite(stream, 1); + } + break; + default: + assert(0); + } + } +} + + +static int +send_headers2 (struct lsquic_stream *stream, struct lsquic_stream_ctx *st_h, + size_t content_len) +{ + char clbuf[0x20]; + struct header_buf hbuf; + + snprintf(clbuf, sizeof(clbuf), "%zd", content_len); + + hbuf.off = 0; + struct lsxpack_header headers_arr[4]; + header_set_ptr(&headers_arr[0], &hbuf, V(":status"), V(st_h->resp_status)); + header_set_ptr(&headers_arr[1], &hbuf, V("server"), V(LITESPEED_ID)); + header_set_ptr(&headers_arr[2], &hbuf, V("content-type"), V("text/html")); + header_set_ptr(&headers_arr[3], &hbuf, V("content-length"), V(clbuf)); + lsquic_http_headers_t headers = { + .count = sizeof(headers_arr) / sizeof(headers_arr[0]), + .headers = headers_arr, + }; + + return lsquic_stream_send_headers(st_h->stream, &headers, 0); +} + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + +static size_t +idle_read (void *lsqr_ctx, void *buf, size_t count) +{ + struct gen_file_ctx *const gfc = lsqr_ctx; + unsigned char *p = buf; + unsigned char *const end = p + count; + size_t towrite; + + while (p < end && gfc->remain > 0) + { + towrite = MIN((unsigned) (end - p), IDLE_SIZE - gfc->idle_off); + if (towrite > gfc->remain) + towrite = gfc->remain; + memcpy(p, on_being_idle + gfc->idle_off, towrite); + gfc->idle_off += towrite; + if (gfc->idle_off == IDLE_SIZE) + gfc->idle_off = 0; + p += towrite; + gfc->remain -= towrite; + } + + return p - (unsigned char *) buf; +} + + +static size_t +idle_size (void *lsqr_ctx) +{ + struct gen_file_ctx *const gfc = lsqr_ctx; + + return gfc->remain; +} + + +static struct req * +new_req (enum method method, const char *path, const char *authority) +{ + struct req *req; + + req = malloc(sizeof(*req)); + if (!req) + return NULL; + + memset(req, 0, offsetof(struct req, decode_buf)); + req->method = method; + req->path = strdup(path); + req->authority_str = strdup(authority); + if (!(req->path && req->authority_str)) + { + free(req->path); + free(req->authority_str); + free(req); + return NULL; + } + + return req; +} + + +static ssize_t +my_interop_preadv (void *user_data, const struct iovec *iov, int iovcnt) +{ + struct gen_file_ctx *const gfc = user_data; + size_t nread, nr; + int i; + + nread = 0; + for (i = 0; i < iovcnt; ++i) + { + nr = idle_read(gfc, iov[i].iov_base, iov[i].iov_len); + nread += nr; + } + + return (ssize_t) nread; +} + + +static void +idle_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + struct gen_file_ctx *const gfc = &st_h->interop_u.gfc; + struct interop_push_path *push_path; + struct lsxpack_header header_arr[4]; + struct lsquic_http_headers headers; + struct req *req; + ssize_t nw; + struct header_buf hbuf; + struct lsquic_reader reader; + + if (st_h->flags & SH_HEADERS_SENT) + { + if (s_pwritev) + { + nw = lsquic_stream_pwritev(stream, my_interop_preadv, gfc, + gfc->remain); + if (nw == 0) + goto with_reader; + } + else + { + with_reader: + reader.lsqr_read = idle_read, + reader.lsqr_size = idle_size, + reader.lsqr_ctx = gfc, + nw = lsquic_stream_writef(stream, &reader); + } + if (nw < 0) + { + LSQ_ERROR("error writing idle thoughts: %s", strerror(errno)); + exit(1); + } + if (gfc->remain == 0) + lsquic_stream_shutdown(stream, 1); + } + else + { + if (st_h->req->authority_str) + while ((push_path = STAILQ_FIRST(&gfc->push_paths))) + { + STAILQ_REMOVE_HEAD(&gfc->push_paths, next); + LSQ_DEBUG("pushing promise for %s", push_path->path); + hbuf.off = 0; + header_set_ptr(&header_arr[0], &hbuf, V(":method"), V("GET")); + header_set_ptr(&header_arr[1], &hbuf, V(":path"), V(push_path->path)); + header_set_ptr(&header_arr[2], &hbuf, V(":authority"), V(st_h->req->authority_str)); + header_set_ptr(&header_arr[3], &hbuf, V(":scheme"), V("https")); + headers.headers = header_arr; + headers.count = sizeof(header_arr) / sizeof(header_arr[0]); + req = new_req(GET, push_path->path, st_h->req->authority_str); + if (req) + { + if (0 != lsquic_conn_push_stream(lsquic_stream_conn(stream), + req, stream, &headers)) + { + LSQ_WARN("stream push failed"); + interop_server_hset_destroy(req); + } + } + else + LSQ_WARN("cannot allocate req for push"); + free(push_path); + } + if (0 == send_headers2(stream, st_h, gfc->remain)) + st_h->flags |= SH_HEADERS_SENT; + else + { + LSQ_ERROR("cannot send headers: %s", strerror(errno)); + lsquic_stream_close(stream); + } + } +} + + +static void +http_server_interop_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + struct resp *resp; + ssize_t nw; + + switch (st_h->interop_handler) + { + case IOH_ERROR: + resp = &st_h->interop_u.err.resp; + goto reply; + case IOH_INDEX_HTML: + resp = &st_h->interop_u.ihc.resp; + goto reply; + case IOH_VER_HEAD: + resp = &st_h->interop_u.vhc.resp; + goto reply; + case IOH_MD5SUM: + resp = &st_h->interop_u.md5c.resp; + goto reply; + case IOH_GEN_FILE: + idle_on_write(stream, st_h); + return; + default: + assert(0); + return; + } + + reply: + assert(resp->sz); /* We always need to send body */ + if (!(st_h->flags & SH_HEADERS_SENT)) + { + send_headers2(stream, st_h, resp->sz); + st_h->flags |= SH_HEADERS_SENT; + return; + } + + nw = lsquic_stream_write(stream, resp->buf + resp->off, resp->sz - resp->off); + if (nw < 0) + { + LSQ_ERROR("error writing to stream: %s", strerror(errno)); + lsquic_conn_abort(lsquic_stream_conn(stream)); + return; + } + + resp->off += nw; + lsquic_stream_flush(stream); + if (resp->off == resp->sz) + lsquic_stream_shutdown(stream, 1); +} + + +const struct lsquic_stream_if interop_http_server_if = { + .on_new_conn = http_server_on_new_conn, + .on_conn_closed = http_server_on_conn_closed, + .on_new_stream = http_server_on_new_stream, + .on_read = http_server_interop_on_read, + .on_write = http_server_interop_on_write, + .on_close = http_server_on_close, +}; +#endif /* HAVE_REGEX */ + + +static void +usage (const char *prog) +{ + const char *const slash = strrchr(prog, '/'); + if (slash) + prog = slash + 1; + printf( +"Usage: %s [opts]\n" +"\n" +"Options:\n" +" -r ROOT Document root\n" +" -p FILE Push request with this path\n" +" -w SIZE Write immediately (LSWS mode). Argument specifies maximum\n" +" size of the immediate write.\n" +#if HAVE_PREADV +" -P SIZE Use preadv(2) to read from disk and lsquic_stream_pwritev() to\n" +" write to stream. Positive SIZE indicate maximum value per\n" +" write; negative means always use remaining file size.\n" +" Incompatible with -w.\n" +#endif +" -Y DELAY Delay response for this many seconds -- use for debugging\n" +" -Q ALPN Use hq mode; ALPN could be \"hq-29\", for example.\n" + , prog); +} + + +static void * +interop_server_hset_create (void *hsi_ctx, lsquic_stream_t *stream, + int is_push_promise) +{ + struct req *req; + + req = malloc(sizeof(struct req)); + memset(req, 0, offsetof(struct req, decode_buf)); + + return req; +} + + +static struct lsxpack_header * +interop_server_hset_prepare_decode (void *hset_p, struct lsxpack_header *xhdr, + size_t req_space) +{ + struct req *req = hset_p; + + if (xhdr) + { + LSQ_WARN("we don't reallocate headers: can't give more"); + return NULL; + } + + if (req->flags & HAVE_XHDR) + { + if (req->decode_off + lsxpack_header_get_dec_size(&req->xhdr) + >= sizeof(req->decode_buf)) + { + LSQ_WARN("Not enough room in header"); + return NULL; + } + req->decode_off += lsxpack_header_get_dec_size(&req->xhdr); + } + else + req->flags |= HAVE_XHDR; + + lsxpack_header_prepare_decode(&req->xhdr, req->decode_buf, + req->decode_off, sizeof(req->decode_buf) - req->decode_off); + return &req->xhdr; +} + + +static int +interop_server_hset_add_header (void *hset_p, struct lsxpack_header *xhdr) +{ + struct req *req = hset_p; + const char *name, *value; + unsigned name_len, value_len; + + if (!xhdr) + { + if (req->pseudo_headers == (PH_AUTHORITY|PH_METHOD|PH_PATH)) + return 0; + else + { + LSQ_INFO("%s: missing some pseudo-headers: 0x%X", __func__, + req->pseudo_headers); + return 1; + } + } + + name = lsxpack_header_get_name(xhdr); + value = lsxpack_header_get_value(xhdr); + name_len = xhdr->name_len; + value_len = xhdr->val_len; + + req->qif_str = realloc(req->qif_str, + req->qif_sz + name_len + value_len + 2); + if (!req->qif_str) + { + LSQ_ERROR("malloc failed"); + return -1; + } + memcpy(req->qif_str + req->qif_sz, name, name_len); + req->qif_str[req->qif_sz + name_len] = '\t'; + memcpy(req->qif_str + req->qif_sz + name_len + 1, value, value_len); + req->qif_str[req->qif_sz + name_len + 1 + value_len] = '\n'; + req->qif_sz += name_len + value_len + 2; + + if (5 == name_len && 0 == strncmp(name, ":path", 5)) + { + if (req->path) + return 1; + req->path = strndup(value, value_len); + if (!req->path) + return -1; + req->pseudo_headers |= PH_PATH; + return 0; + } + + if (7 == name_len && 0 == strncmp(name, ":method", 7)) + { + if (req->method != UNSET) + return 1; + req->method_str = strndup(value, value_len); + if (!req->method_str) + return -1; + if (0 == strcmp(req->method_str, "GET")) + req->method = GET; + else if (0 == strcmp(req->method_str, "POST")) + req->method = POST; + else + req->method = UNSUPPORTED; + req->pseudo_headers |= PH_METHOD; + return 0; + } + + if (10 == name_len && 0 == strncmp(name, ":authority", 10)) + { + req->authority_str = strndup(value, value_len); + if (!req->authority_str) + return -1; + req->pseudo_headers |= PH_AUTHORITY; + return 0; + } + + return 0; +} + + +static void +interop_server_hset_destroy (void *hset_p) +{ + struct req *req = hset_p; + free(req->qif_str); + free(req->path); + free(req->method_str); + free(req->authority_str); + free(req); +} + + +static const struct lsquic_hset_if header_bypass_api = +{ + .hsi_create_header_set = interop_server_hset_create, + .hsi_prepare_decode = interop_server_hset_prepare_decode, + .hsi_process_header = interop_server_hset_add_header, + .hsi_discard_header_set = interop_server_hset_destroy, +}; + + +int +main (int argc, char **argv) +{ + int opt, s; + struct stat st; + struct server_ctx server_ctx; + struct prog prog; + const char *const *alpn; + +#if !(HAVE_OPEN_MEMSTREAM || HAVE_REGEX) + fprintf(stderr, "cannot run server without regex or open_memstream\n"); + return 1; +#endif + + memset(&server_ctx, 0, sizeof(server_ctx)); + TAILQ_INIT(&server_ctx.sports); + server_ctx.prog = &prog; + + prog_init(&prog, LSENG_SERVER|LSENG_HTTP, &server_ctx.sports, + &http_server_if, &server_ctx); + + while (-1 != (opt = getopt(argc, argv, PROG_OPTS "y:Y:n:p:r:w:P:h" +#if HAVE_OPEN_MEMSTREAM + "Q:" +#endif + ))) + { + switch (opt) { + case 'n': + server_ctx.max_conn = atoi(optarg); + break; + case 'p': + server_ctx.push_path = optarg; + break; + case 'r': + if (-1 == stat(optarg, &st)) + { + perror("stat"); + exit(2); + } +#ifndef WIN32 + if (!S_ISDIR(st.st_mode)) + { + fprintf(stderr, "`%s' is not a directory\n", optarg); + exit(2); + } +#endif + server_ctx.document_root = optarg; + break; + case 'w': + s_immediate_write = atoi(optarg); + break; + case 'P': +#if HAVE_PREADV + s_pwritev = strtoull(optarg, NULL, 10); + break; +#else + fprintf(stderr, "preadv is not supported on this platform, " + "cannot use -P\n"); + exit(EXIT_FAILURE); +#endif + case 'Y': + server_ctx.delay_resp_sec = atoi(optarg); + break; + case 'h': + usage(argv[0]); + prog_print_common_options(&prog, stdout); + exit(0); +#if HAVE_OPEN_MEMSTREAM + case 'Q': + /* XXX A bit hacky, as `prog' has already been initialized... */ + prog.prog_engine_flags &= ~LSENG_HTTP; + prog.prog_api.ea_stream_if = &hq_server_if; + add_alpn(optarg); + break; +#endif + default: + if (0 != prog_set_opt(&prog, opt, optarg)) + exit(1); + } + } + + if (!server_ctx.document_root) + { +#if HAVE_REGEX + LSQ_NOTICE("Document root is not set: start in Interop Mode"); + init_map_regexes(); + prog.prog_api.ea_stream_if = &interop_http_server_if; + prog.prog_api.ea_hsi_if = &header_bypass_api; + prog.prog_api.ea_hsi_ctx = NULL; +#else + LSQ_ERROR("Document root is not set: use -r option"); + exit(EXIT_FAILURE); +#endif + } + + if (s_immediate_write && s_pwritev) + { + LSQ_ERROR("-w and -P are incompatible options"); + exit(EXIT_FAILURE); + } + + alpn = lsquic_get_h3_alpns(prog.prog_settings.es_versions); + while (*alpn) + { + if (0 == add_alpn(*alpn)) + ++alpn; + else + { + LSQ_ERROR("cannot add ALPN %s", *alpn); + exit(EXIT_FAILURE); + } + } + + if (0 != prog_prep(&prog)) + { + LSQ_ERROR("could not prep"); + exit(EXIT_FAILURE); + } + + LSQ_DEBUG("entering event loop"); + + s = prog_run(&prog); + prog_cleanup(&prog); + +#if HAVE_REGEX + if (!server_ctx.document_root) + free_map_regexes(); +#endif + + exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); +} diff --git a/external/lsquic/bin/md5_client.c b/external/lsquic/bin/md5_client.c new file mode 100644 index 0000000..0fff7ed --- /dev/null +++ b/external/lsquic/bin/md5_client.c @@ -0,0 +1,529 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * md5_client.c -- This client sends one or more files to MD5 QUIC server + * for MD5 sum calculation. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef WIN32 +#include +#include +#else +#include "vc_compat.h" +#include "getopt.h" +#endif + +#include +#include + +#include "lsquic.h" +#include "test_common.h" +#include "prog.h" + +#include "../src/liblsquic/lsquic_logger.h" +#include "../src/liblsquic/lsquic_int_types.h" +#include "../src/liblsquic/lsquic_varint.h" +#include "../src/liblsquic/lsquic_hq.h" +#include "../src/liblsquic/lsquic_sfcw.h" +#include "../src/liblsquic/lsquic_hash.h" +#include "../src/liblsquic/lsquic_stream.h" + +/* Set to non-zero value to test out what happens when reset is sent */ +#define RESET_AFTER_N_WRITES 0 + +static int g_write_file = 1; + +#define LOCAL_BUF_SIZE 0x100 + +static struct { + unsigned stream_id; /* If set, reset this stream ID */ + off_t offset; /* Reset it after writing this many bytes */ +} g_reset_stream; + +struct file { + LIST_ENTRY(file) next_file; + const char *filename; + struct lsquic_reader reader; + int fd; + unsigned priority; + enum { + FILE_RESET = (1 << 0), + } file_flags; + size_t md5_off; + char md5str[MD5_DIGEST_LENGTH * 2]; +}; + +struct lsquic_conn_ctx; + +struct client_ctx { + struct lsquic_conn_ctx *conn_h; + LIST_HEAD(, file) files; + unsigned n_files; + struct file *cur_file; + lsquic_engine_t *engine; + struct service_port *sport; + struct prog *prog; +}; + +struct lsquic_conn_ctx { + lsquic_conn_t *conn; + struct client_ctx *client_ctx; +}; + + +static lsquic_conn_ctx_t * +client_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) +{ + struct client_ctx *client_ctx = stream_if_ctx; + lsquic_conn_ctx_t *conn_h = malloc(sizeof(*conn_h)); + conn_h->conn = conn; + conn_h->client_ctx = client_ctx; + client_ctx->conn_h = conn_h; + assert(client_ctx->n_files > 0); + unsigned n = client_ctx->n_files; + while (n--) + lsquic_conn_make_stream(conn); + print_conn_info(conn); + return conn_h; +} + + +static void +client_on_goaway_received (lsquic_conn_t *conn) +{ + LSQ_NOTICE("GOAWAY received"); +} + + +static void +client_on_conn_closed (lsquic_conn_t *conn) +{ + lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); + LSQ_NOTICE("Connection closed"); + prog_stop(conn_h->client_ctx->prog); + + lsquic_conn_set_ctx(conn, NULL); + free(conn_h); +} + + +struct lsquic_stream_ctx { + lsquic_stream_t *stream; + struct client_ctx *client_ctx; + struct file *file; + struct event *read_stdin_ev; + struct { + int initialized; + size_t size, + off; + } small; +}; + + +static lsquic_stream_ctx_t * +client_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) +{ + struct client_ctx *const client_ctx = stream_if_ctx; + if (!stream) + { + assert(client_ctx->n_files > 0); + LSQ_NOTICE("%s: got null stream: no more streams possible; # files: %u", + __func__, client_ctx->n_files); + --client_ctx->n_files; + if (0 == client_ctx->n_files) + { + LSQ_DEBUG("closing connection"); + lsquic_conn_close(client_ctx->conn_h->conn); + } + return NULL; + } + lsquic_stream_ctx_t *st_h = calloc(1, sizeof(*st_h)); + st_h->stream = stream; + st_h->client_ctx = stream_if_ctx; + if (LIST_EMPTY(&st_h->client_ctx->files)) + { + /* XXX: perhaps we should not be able to write immediately: there may + * be internal memory constraints... + */ + lsquic_stream_write(stream, "client request", 14); + (void) lsquic_stream_flush(stream); + lsquic_stream_wantwrite(stream, 0); + lsquic_stream_wantread(stream, 1); + } + else + { + st_h->file = LIST_FIRST(&st_h->client_ctx->files); + if (g_write_file) + { + st_h->file->fd = -1; + st_h->file->reader.lsqr_read = test_reader_read; + st_h->file->reader.lsqr_size = test_reader_size; + st_h->file->reader.lsqr_ctx = create_lsquic_reader_ctx(st_h->file->filename); + if (!st_h->file->reader.lsqr_ctx) + exit(1); + } + else + { + st_h->file->fd = open(st_h->file->filename, O_RDONLY); + if (st_h->file->fd < 0) + { + LSQ_ERROR("could not open %s for reading: %s", + st_h->file->filename, strerror(errno)); + exit(1); + } + } + LIST_REMOVE(st_h->file, next_file); + lsquic_stream_set_priority(stream, st_h->file->priority); + lsquic_stream_wantwrite(stream, 1); + } + return st_h; +} + + +static size_t +buf_reader_size (void *reader_ctx) +{ + lsquic_stream_ctx_t *const st_h = reader_ctx; + struct stat st; + off_t off; + + if (st_h->small.initialized) + goto initialized; + + if (0 != fstat(st_h->file->fd, &st)) + { + LSQ_ERROR("fstat failed: %s", strerror(errno)); + goto err; + } + + off = lseek(st_h->file->fd, 0, SEEK_CUR); + if (off == (off_t) -1) + { + LSQ_ERROR("lseek failed: %s", strerror(errno)); + goto err; + } + + if (st.st_size < off) + { + LSQ_ERROR("size mismatch"); + goto err; + } + + st_h->small.initialized = 1; + st_h->small.off = off; + st_h->small.size = st.st_size; + + initialized: + if (st_h->small.size - st_h->small.off > LOCAL_BUF_SIZE) + return LOCAL_BUF_SIZE; + else + return st_h->small.size - st_h->small.off; + + err: + close(st_h->file->fd); + st_h->file->fd = 0; + return 0; +} + + +static size_t +buf_reader_read (void *reader_ctx, void *buf, size_t count) +{ + lsquic_stream_ctx_t *const st_h = reader_ctx; + ssize_t nr; + unsigned char local_buf[LOCAL_BUF_SIZE]; + + assert(st_h->small.initialized); + + if (count > sizeof(local_buf)) + count = sizeof(local_buf); + + nr = read(st_h->file->fd, local_buf, count); + if (nr < 0) + { + LSQ_ERROR("read: %s", strerror(errno)); + close(st_h->file->fd); + st_h->file->fd = 0; + return 0; + } + + memcpy(buf, local_buf, nr); + st_h->small.off += nr; + return nr; +} + + +static void +client_file_on_write_buf (lsquic_stream_ctx_t *st_h) +{ + ssize_t nw; + struct lsquic_reader reader = { + .lsqr_read = buf_reader_read, + .lsqr_size = buf_reader_size, + .lsqr_ctx = st_h, + }; + + if (g_reset_stream.stream_id == lsquic_stream_id(st_h->stream) && + lseek(st_h->file->fd, 0, SEEK_CUR) >= g_reset_stream.offset) + { + /* Note: this is an internal function */ + lsquic_stream_maybe_reset(st_h->stream, + 0x01 /* QUIC_INTERNAL_ERROR */, 1); + g_reset_stream.stream_id = 0; /* Reset only once */ + } + + nw = lsquic_stream_writef(st_h->stream, &reader); + if (-1 == nw) + { + if (ECONNRESET == errno) + st_h->file->file_flags |= FILE_RESET; + LSQ_WARN("lsquic_stream_read: %s", strerror(errno)); + lsquic_stream_close(st_h->stream); + return; + } + +#if RESET_AFTER_N_WRITES + static int write_count = 0; + if (write_count++ > RESET_AFTER_N_WRITES) + lsquic_stream_reset(st_h->stream, 0); +#endif + + if (0 == nw) + { + (void) close(st_h->file->fd); + if (0 == lsquic_stream_shutdown(st_h->stream, 1)) + lsquic_stream_wantread(st_h->stream, 1); + else + { + if (ECONNRESET == errno) + st_h->file->file_flags |= FILE_RESET; + LSQ_WARN("lsquic_stream_shutdown: %s", strerror(errno)); + lsquic_stream_close(st_h->stream); + } + } +} + + +static void +client_file_on_write_efficient (lsquic_stream_t *stream, + lsquic_stream_ctx_t *st_h) +{ + ssize_t nw; + + nw = lsquic_stream_writef(stream, &st_h->file->reader); + if (nw < 0) + { + LSQ_ERROR("write error: %s", strerror(errno)); + exit(1); + } + if (nw == 0) + { + destroy_lsquic_reader_ctx(st_h->file->reader.lsqr_ctx); + st_h->file->reader.lsqr_ctx = NULL; + if (0 == lsquic_stream_shutdown(st_h->stream, 1)) + lsquic_stream_wantread(st_h->stream, 1); + else + { + if (ECONNRESET == errno) + st_h->file->file_flags |= FILE_RESET; + LSQ_WARN("lsquic_stream_shutdown: %s", strerror(errno)); + lsquic_stream_close(st_h->stream); + } + } +} + + +static void +client_file_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + if (g_write_file) + client_file_on_write_efficient(stream, st_h); + else + client_file_on_write_buf(st_h); +} + + +static void +client_file_on_read (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + char buf; + /* We expect to read in 32-character MD5 string */ + size_t ntoread = sizeof(st_h->file->md5str) - st_h->file->md5_off; + if (0 == ntoread) + { + lsquic_stream_wantread(stream, 0); + /* XXX What about an error (due to RST_STREAM) here: how are we to + * handle it? + */ + /* Expect a FIN */ + if (0 == lsquic_stream_read(stream, &buf, sizeof(buf))) + { + LSQ_NOTICE("%.*s %s", (int) sizeof(st_h->file->md5str), + st_h->file->md5str, + st_h->file->filename); + fflush(stdout); + LSQ_DEBUG("# of files: %d", st_h->client_ctx->n_files); + lsquic_stream_shutdown(stream, 0); + } + else + LSQ_ERROR("expected FIN from stream!"); + } + else + { + ssize_t nr = lsquic_stream_read(stream, + st_h->file->md5str + st_h->file->md5_off, ntoread); + if (-1 == nr) + { + if (ECONNRESET == errno) + st_h->file->file_flags |= FILE_RESET; + LSQ_WARN("lsquic_stream_read: %s", strerror(errno)); + lsquic_stream_close(stream); + return; + } + else + st_h->file->md5_off += nr; + } +} + + +static void +client_file_on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + --st_h->client_ctx->n_files; + LSQ_NOTICE("%s called for stream %"PRIu64", # files: %u", __func__, + lsquic_stream_id(stream), st_h->client_ctx->n_files); + if (0 == st_h->client_ctx->n_files) + lsquic_conn_close(st_h->client_ctx->conn_h->conn); + if (!(st_h->file->file_flags & FILE_RESET) && 0 == RESET_AFTER_N_WRITES) + assert(st_h->file->md5_off == sizeof(st_h->file->md5str)); + if (st_h->file->reader.lsqr_ctx) + { + destroy_lsquic_reader_ctx(st_h->file->reader.lsqr_ctx); + st_h->file->reader.lsqr_ctx = NULL; + } + if (st_h->file->fd >= 0) + (void) close(st_h->file->fd); + free(st_h->file); + free(st_h); +} + + +const struct lsquic_stream_if client_file_stream_if = { + .on_new_conn = client_on_new_conn, + .on_goaway_received = client_on_goaway_received, + .on_conn_closed = client_on_conn_closed, + .on_new_stream = client_on_new_stream, + .on_read = client_file_on_read, + .on_write = client_file_on_write, + .on_close = client_file_on_close, +}; + + +static void +usage (const char *prog) +{ + const char *const slash = strrchr(prog, '/'); + if (slash) + prog = slash + 1; + printf( +"Usage: %s [opts]\n" +"\n" +"Options:\n" +" -f FILE File to send to the server -- must be specified at least\n" +" once.\n" +" -b Use buffering API for sending files over rather than\n" +" the efficient version.\n" +" -p PRIORITY Applicatble to previous file specified with -f\n" +" -r STREAM_ID:OFFSET\n" +" Reset stream STREAM_ID after sending more that OFFSET bytes.\n" + , prog); +} + + +int +main (int argc, char **argv) +{ + int opt, s; + struct sport_head sports; + struct prog prog; + struct client_ctx client_ctx; + struct file *file; + + file = NULL; + memset(&client_ctx, 0, sizeof(client_ctx)); + client_ctx.prog = &prog; + + TAILQ_INIT(&sports); + prog_init(&prog, 0, &sports, &client_file_stream_if, &client_ctx); + prog.prog_api.ea_alpn = "md5"; + + while (-1 != (opt = getopt(argc, argv, PROG_OPTS "bhr:f:p:"))) + { + switch (opt) { + case 'p': + if (file) + file->priority = atoi(optarg); + else + { + fprintf(stderr, "No file to apply priority to\n"); + exit(1); + } + break; + case 'b': + g_write_file = 0; + break; + case 'f': + file = calloc(1, sizeof(*file)); + LIST_INSERT_HEAD(&client_ctx.files, file, next_file); + ++client_ctx.n_files; + file->filename = optarg; + break; + case 'r': + g_reset_stream.stream_id = atoi(optarg); + g_reset_stream.offset = atoi(strchr(optarg, ':') + 1); + break; + case 'h': + usage(argv[0]); + prog_print_common_options(&prog, stdout); + exit(0); + default: + if (0 != prog_set_opt(&prog, opt, optarg)) + exit(1); + } + } + + if (LIST_EMPTY(&client_ctx.files)) + { + fprintf(stderr, "please specify one of more files using -f\n"); + exit(1); + } + + if (0 != prog_prep(&prog)) + { + LSQ_ERROR("could not prep"); + exit(EXIT_FAILURE); + } + client_ctx.sport = TAILQ_FIRST(&sports); + + if (0 != prog_connect(&prog, NULL, 0)) + { + LSQ_ERROR("could not connect"); + exit(EXIT_FAILURE); + } + + LSQ_DEBUG("entering event loop"); + + s = prog_run(&prog); + prog_cleanup(&prog); + + exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); +} diff --git a/external/lsquic/bin/md5_server.c b/external/lsquic/bin/md5_server.c new file mode 100644 index 0000000..d47ccbf --- /dev/null +++ b/external/lsquic/bin/md5_server.c @@ -0,0 +1,345 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * md5_server.c -- Read one or more streams from the client and return + * MD5 sum of the payload. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include "lsquic.h" +#include "test_common.h" +#include "../src/liblsquic/lsquic_hash.h" +#include "test_cert.h" +#include "prog.h" + +#include "../src/liblsquic/lsquic_logger.h" + + +static int g_really_calculate_md5 = 1; + +/* Turn on to test whether stream reset is being sent when stream is closed + * prematurely. + */ +static struct { + unsigned stream_id; + unsigned long limit; + unsigned long n_read; +} g_premature_close; + +struct lsquic_conn_ctx; + +struct server_ctx { + TAILQ_HEAD(, lsquic_conn_ctx) conn_ctxs; + unsigned max_reqs; + int n_conn; + time_t expiry; + struct sport_head sports; + struct prog *prog; +}; + +struct lsquic_conn_ctx { + TAILQ_ENTRY(lsquic_conn_ctx) next_connh; + lsquic_conn_t *conn; + unsigned n_reqs, n_closed; + struct server_ctx *server_ctx; +}; + + +static lsquic_conn_ctx_t * +server_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) +{ + struct server_ctx *server_ctx = stream_if_ctx; + lsquic_conn_ctx_t *conn_h = calloc(1, sizeof(*conn_h)); + conn_h->conn = conn; + conn_h->server_ctx = server_ctx; + TAILQ_INSERT_TAIL(&server_ctx->conn_ctxs, conn_h, next_connh); + LSQ_NOTICE("New connection!"); + print_conn_info(conn); + return conn_h; +} + + +static void +server_on_conn_closed (lsquic_conn_t *conn) +{ + lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); + int stopped; + + if (conn_h->server_ctx->expiry && conn_h->server_ctx->expiry < time(NULL)) + { + LSQ_NOTICE("reached engine expiration time, shut down"); + prog_stop(conn_h->server_ctx->prog); + stopped = 1; + } + else + stopped = 0; + + if (conn_h->server_ctx->n_conn) + { + --conn_h->server_ctx->n_conn; + LSQ_NOTICE("Connection closed, remaining: %d", conn_h->server_ctx->n_conn); + if (0 == conn_h->server_ctx->n_conn && !stopped) + prog_stop(conn_h->server_ctx->prog); + } + else + LSQ_NOTICE("Connection closed"); + TAILQ_REMOVE(&conn_h->server_ctx->conn_ctxs, conn_h, next_connh); + + lsquic_conn_set_ctx(conn, NULL); + free(conn_h); +} + + +struct lsquic_stream_ctx { + lsquic_stream_t *stream; + struct server_ctx *server_ctx; + MD5_CTX md5ctx; + unsigned char md5sum[MD5_DIGEST_LENGTH]; + char md5str[MD5_DIGEST_LENGTH * 2 + 1]; +}; + + +static struct lsquic_conn_ctx * +find_conn_h (const struct server_ctx *server_ctx, lsquic_stream_t *stream) +{ + struct lsquic_conn_ctx *conn_h; + lsquic_conn_t *conn; + + conn = lsquic_stream_conn(stream); + TAILQ_FOREACH(conn_h, &server_ctx->conn_ctxs, next_connh) + if (conn_h->conn == conn) + return conn_h; + return NULL; +} + + +static lsquic_stream_ctx_t * +server_md5_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) +{ + struct lsquic_conn_ctx *conn_h; + lsquic_stream_ctx_t *st_h = malloc(sizeof(*st_h)); + st_h->stream = stream; + st_h->server_ctx = stream_if_ctx; + lsquic_stream_wantread(stream, 1); + if (g_really_calculate_md5) + MD5_Init(&st_h->md5ctx); + conn_h = find_conn_h(st_h->server_ctx, stream); + assert(conn_h); + conn_h->n_reqs++; + LSQ_NOTICE("request #%u", conn_h->n_reqs); + if (st_h->server_ctx->max_reqs && + conn_h->n_reqs >= st_h->server_ctx->max_reqs) + { + /* The assert guards the assumption that after the we mark the + * connection as going away, no new streams are opened and thus + * this callback is not called. + */ + assert(conn_h->n_reqs == st_h->server_ctx->max_reqs); + LSQ_NOTICE("reached maximum requests: %u, going away", + st_h->server_ctx->max_reqs); + lsquic_conn_going_away(conn_h->conn); + } + return st_h; +} + + +static void +server_md5_on_read (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + char buf[0x1000]; + ssize_t nr; + + nr = lsquic_stream_read(stream, buf, sizeof(buf)); + if (-1 == nr) + { + /* This should never return an error if we only call read() once + * per callback. + */ + perror("lsquic_stream_read"); + lsquic_stream_shutdown(stream, 0); + return; + } + + if (g_premature_close.limit && + g_premature_close.stream_id == lsquic_stream_id(stream)) + { + g_premature_close.n_read += nr; + if (g_premature_close.n_read > g_premature_close.limit) + { + LSQ_WARN("Done after reading %lu bytes", g_premature_close.n_read); + lsquic_stream_shutdown(stream, 0); + return; + } + } + + if (nr) + { + if (g_really_calculate_md5) + MD5_Update(&st_h->md5ctx, buf, nr); + } + else + { + lsquic_stream_wantread(stream, 0); + if (g_really_calculate_md5) + { + MD5_Final(st_h->md5sum, &st_h->md5ctx); + snprintf(st_h->md5str, sizeof(st_h->md5str), + "%02x%02x%02x%02x%02x%02x%02x%02x" + "%02x%02x%02x%02x%02x%02x%02x%02x" + , st_h->md5sum[0] + , st_h->md5sum[1] + , st_h->md5sum[2] + , st_h->md5sum[3] + , st_h->md5sum[4] + , st_h->md5sum[5] + , st_h->md5sum[6] + , st_h->md5sum[7] + , st_h->md5sum[8] + , st_h->md5sum[9] + , st_h->md5sum[10] + , st_h->md5sum[11] + , st_h->md5sum[12] + , st_h->md5sum[13] + , st_h->md5sum[14] + , st_h->md5sum[15] + ); + } + else + { + memset(st_h->md5str, '0', sizeof(st_h->md5str) - 1); + st_h->md5str[sizeof(st_h->md5str) - 1] = '\0'; + } + lsquic_stream_wantwrite(stream, 1); + lsquic_stream_shutdown(stream, 0); + } +} + + +static void +server_md5_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + ssize_t nw; + nw = lsquic_stream_write(stream, st_h->md5str, sizeof(st_h->md5str) - 1); + if (-1 == nw) + { + perror("lsquic_stream_write"); + return; + } + lsquic_stream_wantwrite(stream, 0); + lsquic_stream_shutdown(stream, 1); +} + + +static void +server_on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + struct lsquic_conn_ctx *conn_h; + LSQ_NOTICE("%s called", __func__); + conn_h = find_conn_h(st_h->server_ctx, stream); + conn_h->n_closed++; + if (st_h->server_ctx->max_reqs && + conn_h->n_closed >= st_h->server_ctx->max_reqs) + { + assert(conn_h->n_closed == st_h->server_ctx->max_reqs); + LSQ_NOTICE("closing connection after completing %u requests", + conn_h->n_closed); + lsquic_conn_close(conn_h->conn); + } + free(st_h); +} + + +const struct lsquic_stream_if server_md5_stream_if = { + .on_new_conn = server_on_new_conn, + .on_conn_closed = server_on_conn_closed, + .on_new_stream = server_md5_on_new_stream, + .on_read = server_md5_on_read, + .on_write = server_md5_on_write, + .on_close = server_on_close, +}; + + +static void +usage (const char *prog) +{ + const char *const slash = strrchr(prog, '/'); + if (slash) + prog = slash + 1; + printf( +"Usage: %s [opts]\n" +"\n" +"Options:\n" +" -e EXPIRY Stop engine after this many seconds. The expiration is\n" +" checked when connections are closed.\n" + , prog); +} + + +int +main (int argc, char **argv) +{ + int opt, s; + struct prog prog; + struct server_ctx server_ctx; + + memset(&server_ctx, 0, sizeof(server_ctx)); + TAILQ_INIT(&server_ctx.conn_ctxs); + server_ctx.prog = &prog; + TAILQ_INIT(&server_ctx.sports); + prog_init(&prog, LSENG_SERVER, &server_ctx.sports, + &server_md5_stream_if, &server_ctx); + + while (-1 != (opt = getopt(argc, argv, PROG_OPTS "hr:Fn:e:p:"))) + { + switch (opt) { + case 'F': + g_really_calculate_md5 = 0; + break; + case 'p': + g_premature_close.stream_id = atoi(optarg); + g_premature_close.limit = atoi(strchr(optarg, ':') + 1); + break; + case 'r': + server_ctx.max_reqs = atoi(optarg); + break; + case 'e': + server_ctx.expiry = time(NULL) + atoi(optarg); + break; + case 'n': + server_ctx.n_conn = atoi(optarg); + break; + case 'h': + usage(argv[0]); + prog_print_common_options(&prog, stdout); + exit(0); + default: + if (0 != prog_set_opt(&prog, opt, optarg)) + exit(1); + } + } + + add_alpn("md5"); + if (0 != prog_prep(&prog)) + { + LSQ_ERROR("could not prep"); + exit(EXIT_FAILURE); + } + + LSQ_DEBUG("entering event loop"); + + s = prog_run(&prog); + prog_cleanup(&prog); + + exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); +} diff --git a/external/lsquic/bin/perf_client.c b/external/lsquic/bin/perf_client.c new file mode 100644 index 0000000..6933710 --- /dev/null +++ b/external/lsquic/bin/perf_client.c @@ -0,0 +1,407 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * perf_client.c -- Implements the "perf" client, see + * https://tools.ietf.org/html/draft-banks-quic-performance-00 + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef WIN32 +#include +#include +#else +#include "vc_compat.h" +#include "getopt.h" +#endif + +#include + +#include "lsquic.h" +#include "test_common.h" +#include "prog.h" + +#include "../src/liblsquic/lsquic_logger.h" +#include "../src/liblsquic/lsquic_byteswap.h" + +struct scenario +{ + STAILQ_ENTRY(scenario) next; + uint64_t bytes_to_request; + uint64_t bytes_to_send; /* After the 8-byte header */ +}; + +/* Assume all connections use the same list of scenarios, so store it in + * a global variable. + */ +static STAILQ_HEAD(, scenario) s_scenarios + = STAILQ_HEAD_INITIALIZER(s_scenarios); +static unsigned s_n_scenarios; +static unsigned s_n_conns; + +struct prog s_prog; + +struct lsquic_conn_ctx +{ + /* Once a connection runs out of scenarios, no new streams are created + * and the connection is closed when all streams are closed. + */ + const struct scenario *next_scenario; + unsigned n_scenarios_left; + unsigned n_streams; +}; + + +static bool +perf_create_streams (struct lsquic_conn *conn, struct lsquic_conn_ctx *conn_ctx) +{ + if (conn_ctx->n_scenarios_left) + { + --conn_ctx->n_scenarios_left; + lsquic_conn_make_stream(conn); + return true; + } + else + return false; +} + + +static lsquic_conn_ctx_t * +perf_client_on_new_conn (void *stream_if_ctx, struct lsquic_conn *conn) +{ + struct lsquic_conn_ctx *conn_ctx; + + if (s_n_scenarios) + { + conn_ctx = calloc(1, sizeof(*conn_ctx)); + conn_ctx->next_scenario = STAILQ_FIRST(&s_scenarios); + conn_ctx->n_scenarios_left = s_n_scenarios; + perf_create_streams(conn, conn_ctx); + ++s_n_conns; + return conn_ctx; + } + else + { + lsquic_conn_close(conn); + return NULL; + } +} + + +static void +perf_client_on_conn_closed (struct lsquic_conn *conn) +{ + struct lsquic_conn_ctx *conn_ctx; + + LSQ_NOTICE("Connection closed"); + conn_ctx = lsquic_conn_get_ctx(conn); + lsquic_conn_set_ctx(conn, NULL); + free(conn_ctx); + --s_n_conns; + if (0 == s_n_conns) + prog_stop(&s_prog); +} + + +struct lsquic_stream_ctx +{ + const struct scenario *scenario; + struct { + uint64_t header; /* Big-endian */ + unsigned n_h; /* Number of header bytes written */ + uint64_t n_written; /* Number of non-header bytes written */ + } write_state; + struct { + uint64_t n_read; + } read_state; +}; + + +static struct lsquic_stream_ctx * +perf_client_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) +{ + struct lsquic_conn_ctx *conn_ctx; + struct lsquic_conn *conn; + + conn = lsquic_stream_conn(stream); + conn_ctx = lsquic_conn_get_ctx(conn); + + if (!stream) + { + LSQ_NOTICE("%s: got null stream: no more streams possible", __func__); + lsquic_conn_close(conn); + return NULL; + } + + assert(conn_ctx->next_scenario); + + struct lsquic_stream_ctx *stream_ctx = calloc(1, sizeof(*stream_ctx)); + stream_ctx->scenario = conn_ctx->next_scenario; + conn_ctx->next_scenario = STAILQ_NEXT(conn_ctx->next_scenario, next); +#if __BYTE_ORDER == __LITTLE_ENDIAN + stream_ctx->write_state.header + = bswap_64(stream_ctx->scenario->bytes_to_request); +#else + stream_ctx->write_state.header = stream_ctx->scenario->bytes_to_request; +#endif + lsquic_stream_wantwrite(stream, 1); + return stream_ctx; +} + + +static size_t +buffer_size (void *lsqr_ctx) +{ + struct lsquic_stream_ctx *const stream_ctx = lsqr_ctx; + return stream_ctx->scenario->bytes_to_send + - stream_ctx->write_state.n_written; +} + + +static size_t +buffer_read (void *lsqr_ctx, void *buf, size_t count) +{ + struct lsquic_stream_ctx *const stream_ctx = lsqr_ctx; + size_t left; + + left = buffer_size(stream_ctx); + if (count > left) + count = left; + memset(buf, 0, count); + stream_ctx->write_state.n_written += count; + return count; +} + + +static size_t +header_size (void *lsqr_ctx) +{ + struct lsquic_stream_ctx *const stream_ctx = lsqr_ctx; + return sizeof(uint64_t) - stream_ctx->write_state.n_h; +} + + +static size_t +header_read (void *lsqr_ctx, void *buf, size_t count) +{ + struct lsquic_stream_ctx *const stream_ctx = lsqr_ctx; + const unsigned char *src; + size_t left; + + left = header_size(stream_ctx); + if (count < left) + count = left; + src = (unsigned char *) &stream_ctx->write_state.header + + sizeof(uint64_t) - left; + memcpy(buf, src, count); + stream_ctx->write_state.n_h += count; + return count; +} + + +static void +perf_client_on_write (struct lsquic_stream *stream, + struct lsquic_stream_ctx *stream_ctx) +{ + struct lsquic_reader reader; + ssize_t nw; + + if (stream_ctx->write_state.n_h >= sizeof(uint64_t)) + reader = (struct lsquic_reader) { + buffer_read, + buffer_size, + stream_ctx, + }; + else + reader = (struct lsquic_reader) { + header_read, + header_size, + stream_ctx, + }; + + nw = lsquic_stream_writef(stream, &reader); + if (nw >= 0) + LSQ_DEBUG("%s: wrote %zd bytes", __func__, nw); + else + LSQ_WARN("%s: cannot write to stream: %s", __func__, strerror(errno)); + + if (reader.lsqr_size(stream_ctx) == 0 + && (reader.lsqr_size == buffer_size || buffer_size(stream_ctx) == 0)) + { + lsquic_stream_shutdown(stream, 1); + lsquic_stream_wantread(stream, 1); + } +} + + +static size_t +perf_read_and_discard (void *user_data, const unsigned char *buf, + size_t count, int fin) +{ + return count; +} + + +static void +perf_client_on_read (struct lsquic_stream *stream, + struct lsquic_stream_ctx *stream_ctx) +{ + ssize_t nr; + + nr = lsquic_stream_readf(stream, perf_read_and_discard, NULL); + if (nr >= 0) + { + stream_ctx->read_state.n_read += nr; + if (nr == 0) + { + LSQ_DEBUG("reached fin after reading %"PRIu64" bytes from server", + stream_ctx->read_state.n_read); + lsquic_stream_shutdown(stream, 0); + } + } + else + { + LSQ_WARN("error reading from stream: %s, abort connection", + strerror(errno)); + lsquic_stream_close(stream); + lsquic_conn_abort(lsquic_stream_conn(stream)); + } +} + + +static void +perf_client_on_close (struct lsquic_stream *stream, + struct lsquic_stream_ctx *stream_ctx) +{ + struct lsquic_conn_ctx *conn_ctx; + struct lsquic_conn *conn; + + conn = lsquic_stream_conn(stream); + conn_ctx = lsquic_conn_get_ctx(conn); + if (!perf_create_streams(conn, conn_ctx)) + { + LSQ_DEBUG("out of scenarios, will close connection"); + lsquic_conn_close(conn); + } + free(stream_ctx); +} + + +const struct lsquic_stream_if perf_stream_if = { + .on_new_conn = perf_client_on_new_conn, + .on_conn_closed = perf_client_on_conn_closed, + .on_new_stream = perf_client_on_new_stream, + .on_read = perf_client_on_read, + .on_write = perf_client_on_write, + .on_close = perf_client_on_close, +}; + + +static void +usage (const char *prog) +{ + const char *const slash = strrchr(prog, '/'); + if (slash) + prog = slash + 1; + printf( +"Usage: %s [opts]\n" +"\n" +"Options:\n" +" -p NREQ:NSEND Request NREQ bytes from server and, in addition, send\n" +" NSEND bytes to server. May be specified many times\n" +" and must be specified at least once.\n" +" -T FILE Print stats to FILE. If FILE is -, print stats to stdout.\n" + , prog); +} + + +int +main (int argc, char **argv) +{ + char *p; + int opt, s; + struct sport_head sports; + struct scenario *scenario; + + TAILQ_INIT(&sports); + prog_init(&s_prog, 0, &sports, &perf_stream_if, NULL); + s_prog.prog_api.ea_alpn = "perf"; + s_prog.prog_settings.es_delay_onclose = 1; + + while (-1 != (opt = getopt(argc, argv, PROG_OPTS "hp:T:"))) + { + switch (opt) { + case 'p': + scenario = calloc(1, sizeof(*scenario)); + if (!scenario) + { + perror("calloc"); + exit(EXIT_FAILURE); + } + ++s_n_scenarios; + STAILQ_INSERT_TAIL(&s_scenarios, scenario, next); + scenario->bytes_to_request = strtoull(optarg, &p, 10); + if (*p != ':') + { + fprintf(stderr, "invalid scenario `%s'\n", optarg); + exit(EXIT_FAILURE); + } + scenario->bytes_to_send = strtoull(p + 1, NULL, 10); + break; + case 'T': + if (0 == strcmp(optarg, "-")) + s_prog.prog_api.ea_stats_fh = stdout; + else + { + s_prog.prog_api.ea_stats_fh = fopen(optarg, "w"); + if (!s_prog.prog_api.ea_stats_fh) + { + perror("fopen"); + exit(1); + } + } + break; + case 'h': + usage(argv[0]); + prog_print_common_options(&s_prog, stdout); + exit(0); + default: + if (0 != prog_set_opt(&s_prog, opt, optarg)) + exit(1); + } + } + + if (STAILQ_EMPTY(&s_scenarios)) + { + fprintf(stderr, "please specify one of more requests using -p\n"); + exit(1); + } + + if (0 != prog_prep(&s_prog)) + { + LSQ_ERROR("could not prep"); + exit(EXIT_FAILURE); + } + + if (0 != prog_connect(&s_prog, NULL, 0)) + { + LSQ_ERROR("could not connect"); + exit(EXIT_FAILURE); + } + + LSQ_DEBUG("entering event loop"); + + s = prog_run(&s_prog); + prog_cleanup(&s_prog); + + exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); +} diff --git a/external/lsquic/bin/perf_server.c b/external/lsquic/bin/perf_server.c new file mode 100644 index 0000000..d43cc62 --- /dev/null +++ b/external/lsquic/bin/perf_server.c @@ -0,0 +1,253 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * perf_server.c -- Implements the "perf" server, see + * https://tools.ietf.org/html/draft-banks-quic-performance-00 + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef WIN32 +#include +#include +#else +#include "vc_compat.h" +#include "getopt.h" +#endif + +#include + +#include "lsquic.h" +#include "test_common.h" +#include "../src/liblsquic/lsquic_hash.h" +#include "test_cert.h" +#include "prog.h" + +#include "../src/liblsquic/lsquic_byteswap.h" +#include "../src/liblsquic/lsquic_logger.h" + + +static lsquic_conn_ctx_t * +perf_server_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) +{ + LSQ_INFO("New connection!"); + return NULL; +} + + +static void +perf_server_on_conn_closed (lsquic_conn_t *conn) +{ + LSQ_INFO("Connection closed"); +} + + +struct lsquic_stream_ctx +{ + union { + uint64_t left; /* Number of bytes left to write */ + unsigned char buf[sizeof(uint64_t)]; /* Read client header in */ + } u; + unsigned n_h_read; /* Number of header bytes read in */ +}; + + +static struct lsquic_stream_ctx * +perf_server_on_new_stream (void *unused, struct lsquic_stream *stream) +{ + struct lsquic_stream_ctx *stream_ctx; + + stream_ctx = calloc(1, sizeof(*stream_ctx)); + if (stream_ctx) + { + lsquic_stream_wantread(stream, 1); + return stream_ctx; + } + else + { + perror("calloc"); + exit(EXIT_FAILURE); + } +} + + +static size_t +perf_read_and_discard (void *user_data, const unsigned char *buf, + size_t count, int fin) +{ + return count; +} + + +static void +perf_server_on_read (struct lsquic_stream *stream, + struct lsquic_stream_ctx *stream_ctx) +{ + ssize_t nr; + size_t toread; + + if (stream_ctx->n_h_read < sizeof(stream_ctx->u.buf)) + { + /* Read the header */ + toread = sizeof(stream_ctx->u.buf) - stream_ctx->n_h_read; + nr = lsquic_stream_read(stream, stream_ctx->u.buf + + sizeof(stream_ctx->u.buf) - toread, toread); + if (nr > 0) + { + stream_ctx->n_h_read += nr; + if (stream_ctx->n_h_read == sizeof(stream_ctx->u.left)) + { +#if __BYTE_ORDER == __LITTLE_ENDIAN + stream_ctx->u.left = bswap_64(stream_ctx->u.left); +#endif + LSQ_INFO("client requests %"PRIu64" bytes on stream %"PRIu64, + stream_ctx->u.left, lsquic_stream_id(stream)); + } + } + else if (nr < 0) + { + LSQ_WARN("error reading from stream: %s", strerror(errno)); + lsquic_stream_close(stream); + } + else + { + LSQ_WARN("incomplete header on stream %"PRIu64", abort connection", + lsquic_stream_id(stream)); + lsquic_stream_wantread(stream, 0); + lsquic_conn_abort(lsquic_stream_conn(stream)); + } + } + else + { + /* Read up until FIN, discarding whatever the client is sending */ + nr = lsquic_stream_readf(stream, perf_read_and_discard, NULL); + if (nr == 0) + { + lsquic_stream_wantread(stream, 0); + lsquic_stream_wantwrite(stream, 1); + } + else if (nr < 0) + { + LSQ_WARN("error reading from stream: %s", strerror(errno)); + lsquic_stream_close(stream); + } + } +} + + +static size_t +buffer_size (void *lsqr_ctx) +{ + struct lsquic_stream_ctx *const stream_ctx = lsqr_ctx; + return stream_ctx->u.left; +} + + +static size_t +buffer_read (void *lsqr_ctx, void *buf, size_t count) +{ + struct lsquic_stream_ctx *const stream_ctx = lsqr_ctx; + size_t left; + + left = buffer_size(stream_ctx); + if (count > left) + count = left; + memset(buf, 0, count); + stream_ctx->u.left -= count; + return count; +} + + +static void +perf_server_on_write (struct lsquic_stream *stream, + struct lsquic_stream_ctx *stream_ctx) +{ + struct lsquic_reader reader; + ssize_t nw; + + reader = (struct lsquic_reader) { buffer_read, buffer_size, stream_ctx, }; + nw = lsquic_stream_writef(stream, &reader); + if (nw >= 0) + LSQ_DEBUG("%s: wrote %zd bytes", __func__, nw); + else + LSQ_WARN("%s: cannot write to stream: %s", __func__, strerror(errno)); + + if (stream_ctx->u.left == 0) + lsquic_stream_shutdown(stream, 1); +} + + +static void +perf_server_on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *stream_ctx) +{ + LSQ_DEBUG("stream closed"); + free(stream_ctx); +} + + +const struct lsquic_stream_if perf_server_stream_if = { + .on_new_conn = perf_server_on_new_conn, + .on_conn_closed = perf_server_on_conn_closed, + .on_new_stream = perf_server_on_new_stream, + .on_read = perf_server_on_read, + .on_write = perf_server_on_write, + .on_close = perf_server_on_close, +}; + + +static void +usage (const char *prog) +{ + const char *const slash = strrchr(prog, '/'); + if (slash) + prog = slash + 1; + printf( +"Usage: %s [opts]\n" +"\n" + , prog); +} + + +int +main (int argc, char **argv) +{ + int opt, s; + struct prog prog; + struct sport_head sports; + + TAILQ_INIT(&sports); + prog_init(&prog, LSENG_SERVER, &sports, &perf_server_stream_if, NULL); + + while (-1 != (opt = getopt(argc, argv, PROG_OPTS "h"))) + { + switch (opt) { + case 'h': + usage(argv[0]); + prog_print_common_options(&prog, stdout); + exit(0); + default: + if (0 != prog_set_opt(&prog, opt, optarg)) + exit(1); + } + } + + add_alpn("perf"); + if (0 != prog_prep(&prog)) + { + LSQ_ERROR("could not prep"); + exit(EXIT_FAILURE); + } + + LSQ_DEBUG("entering event loop"); + + s = prog_run(&prog); + prog_cleanup(&prog); + + exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); +} diff --git a/external/lsquic/bin/prog.c b/external/lsquic/bin/prog.c new file mode 100644 index 0000000..48b367a --- /dev/null +++ b/external/lsquic/bin/prog.c @@ -0,0 +1,824 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#ifndef WIN32 +#include +#include +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include "vc_compat.h" +#include "getopt.h" +#pragma warning(disable:4028) +#endif// WIN32 + +#include + +#include + +#include + +#include "../src/liblsquic/lsquic_hash.h" +#include "../src/liblsquic/lsquic_int_types.h" +#include "../src/liblsquic/lsquic_util.h" +#include "../src/liblsquic/lsquic_logger.h" + +#include "test_config.h" +#include "test_cert.h" +#include "test_common.h" +#include "prog.h" + +static int prog_stopped; +static const char *s_keylog_dir; +static const char *s_sess_resume_file; + +static SSL_CTX * get_ssl_ctx (void *, const struct sockaddr *); +static void keylog_log_line (const SSL *, const char *); + +static const struct lsquic_packout_mem_if pmi = { + .pmi_allocate = pba_allocate, + .pmi_release = pba_release, + .pmi_return = pba_release, +}; + + +int +prog_init (struct prog *prog, unsigned flags, + struct sport_head *sports, + const struct lsquic_stream_if *stream_if, void *stream_if_ctx) +{ +#ifdef WIN32 + WSADATA wsd; + int s = WSAStartup(MAKEWORD(2, 2), &wsd); + if (s != 0) + { + LSQ_ERROR("WSAStartup failed: %d", s); + return -1; + } +#endif + /* prog-specific initialization: */ + memset(prog, 0, sizeof(*prog)); + prog->prog_engine_flags = flags; + prog->prog_sports = sports; + lsquic_engine_init_settings(&prog->prog_settings, flags); +#if ECN_SUPPORTED + prog->prog_settings.es_ecn = LSQUIC_DF_ECN; +#else + prog->prog_settings.es_ecn = 0; +#endif + + prog->prog_api.ea_settings = &prog->prog_settings; + prog->prog_api.ea_stream_if = stream_if; + prog->prog_api.ea_stream_if_ctx = stream_if_ctx; + prog->prog_api.ea_packets_out = sport_packets_out; + prog->prog_api.ea_packets_out_ctx + = prog; + prog->prog_api.ea_pmi = &pmi; + prog->prog_api.ea_pmi_ctx = &prog->prog_pba; + prog->prog_api.ea_get_ssl_ctx = get_ssl_ctx; + + /* Non prog-specific initialization: */ + lsquic_global_init(flags & LSENG_SERVER ? LSQUIC_GLOBAL_SERVER : + LSQUIC_GLOBAL_CLIENT); + lsquic_log_to_fstream(stderr, LLTS_HHMMSSUS); + lsquic_logger_lopt("=notice"); + return 0; +} + + +static int +prog_add_sport (struct prog *prog, const char *arg) +{ + struct service_port *sport; + sport = sport_new(arg, prog); + if (!sport) + return -1; + /* Default settings: */ + sport->sp_flags = prog->prog_dummy_sport.sp_flags; + sport->sp_sndbuf = prog->prog_dummy_sport.sp_sndbuf; + sport->sp_rcvbuf = prog->prog_dummy_sport.sp_rcvbuf; + TAILQ_INSERT_TAIL(prog->prog_sports, sport, next_sport); + return 0; +} + + +void +prog_print_common_options (const struct prog *prog, FILE *out) +{ + fprintf(out, +" -0 FILE Provide session resumption file (reading or writing)\n" +#if HAVE_REGEX +" -s SVCPORT Service port. Takes on the form of host:port, host,\n" +" or port. If host is not an IPv4 or IPv6 address, it is\n" +" resolved. If host is not set, the value of SNI is\n" +" used (see the -H flag). If port is not set, the default\n" +" is 443.\n" +#else +" -s SVCPORT Service port. Takes on the form of host:port or host.\n" +" If host is not an IPv4 or IPv6 address, it is resolved.\n" +" If port is not set, the default is 443.\n" +#endif +" Examples:\n" +" 127.0.0.1:12345\n" +" ::1:443\n" +" example.com\n" +" example.com:8443\n" +#if HAVE_REGEX +" 8443\n" +#endif +" If no -s option is given, 0.0.0.0:12345 address\n" +" is used.\n" +#if LSQUIC_DONTFRAG_SUPPORTED +" -D Do not set `do not fragment' flag on outgoing UDP packets\n" +#endif +" -z BYTES Maximum size of outgoing UDP packets (client only).\n" +" Overrides -o base_plpmtu.\n" +" -L LEVEL Log level for all modules. Possible values are `debug',\n" +" `info', `notice', `warn', `error', `alert', `emerg',\n" +" and `crit'.\n" +" -l LEVELS Log levels for modules, e.g.\n" +" -l event=info,engine=debug\n" +" Can be specified more than once.\n" +" -m MAX Maximum number of outgoing packet buffers that can be\n" +" assigned at any one time. By default, there is no max.\n" +" -y style Timestamp style used in log messages. The following styles\n" +" are supported:\n" +" 0 No timestamp\n" +" 1 Millisecond time (this is the default).\n" +" Example: 11:04:05.196\n" +" 2 Full date and millisecond time.\n" +" Example: 2017-03-21 13:43:46.671\n" +" 3 Chrome-like timestamp: date/time.microseconds.\n" +" Example: 1223/104613.946956\n" +" 4 Microsecond time.\n" +" Example: 11:04:05.196308\n" +" 5 Full date and microsecond time.\n" +" Example: 2017-03-21 13:43:46.671345\n" +" -S opt=val Socket options. Supported options:\n" +" sndbuf=12345 # Sets SO_SNDBUF\n" +" rcvbuf=12345 # Sets SO_RCVBUF\n" +" -W Use stock PMI (malloc & free)\n" +" -A CC_ALGO Congestion control algorithm. The following algorithms are\n" +" supported.\n" +" 1: Cubic\n" +" 2: BBRv1\n" +" 3: Adaptive congestion control (this is the default).\n" + ); + +#if HAVE_SENDMMSG + fprintf(out, +" -g Use sendmmsg() to send packets.\n" + ); +#endif +#if HAVE_RECVMMSG + fprintf(out, +" -j Use recvmmsg() to receive packets.\n" + ); +#endif + + if (prog->prog_engine_flags & LSENG_SERVER) + fprintf(out, +" -c CERTSPEC Service specification. The specification is three values\n" +" separated by commas. The values are:\n" +" * Domain name\n" +" * File containing cert in PEM format\n" +" * File containing private key in DER or PEM format\n" +" Example:\n" +" -c www.example.com,/tmp/cert.pem,/tmp/key.pkcs8\n" + ); + else + { + if (prog->prog_engine_flags & LSENG_HTTP) + fprintf(out, +" -H host Value of `host' HTTP header. This is also used as SNI\n" +" in Client Hello. This option is used to override the\n" +" `host' part of the address specified using -s flag.\n" + ); + else + fprintf(out, +" -H host Value of SNI in CHLO.\n" + ); + } + +#ifndef WIN32 + fprintf(out, +" -G dir SSL keys will be logged to files in this directory.\n" + ); +#endif + + + fprintf(out, +" -k Connect UDP socket. Only meant to be used with clients\n" +" to pick up ICMP errors.\n" +" -i USECS Clock granularity in microseconds. Defaults to %u.\n", + LSQUIC_DF_CLOCK_GRANULARITY + ); + fprintf(out, +" -h Print this help screen and exit\n" + ); +} + + +int +prog_set_opt (struct prog *prog, int opt, const char *arg) +{ +#ifndef WIN32 + struct stat st; + int s; +#endif + + switch (opt) + { +#if LSQUIC_DONTFRAG_SUPPORTED + case 'D': + { + struct service_port *sport = TAILQ_LAST(prog->prog_sports, sport_head); + if (!sport) + sport = &prog->prog_dummy_sport; + sport->sp_flags |= SPORT_FRAGMENT_OK; + } + return 0; +#endif +#if HAVE_SENDMMSG + case 'g': + prog->prog_use_sendmmsg = 1; + return 0; +#endif +#if HAVE_RECVMMSG + case 'j': + prog->prog_use_recvmmsg = 1; + return 0; +#endif + case 'm': + prog->prog_packout_max = atoi(arg); + return 0; + case 'z': + prog->prog_max_packet_size = atoi(arg); + return 0; + case 'W': + prog->prog_use_stock_pmi = 1; + return 0; + case 'A': + prog->prog_settings.es_cc_algo = atoi(optarg); + return 0; + case 'c': + if (prog->prog_engine_flags & LSENG_SERVER) + { + if (!prog->prog_certs) + prog->prog_certs = lsquic_hash_create(); + return load_cert(prog->prog_certs, arg); + } + else + return -1; + case 'H': + if (prog->prog_engine_flags & LSENG_SERVER) + return -1; + prog->prog_hostname = arg; + return 0; + case 'y': + lsquic_log_to_fstream(stderr, atoi(arg)); + return 0; + case 'L': + return lsquic_set_log_level(arg); + case 'l': + return lsquic_logger_lopt(arg); + case 'o': + return set_engine_option(&prog->prog_settings, + &prog->prog_version_cleared, arg); + case 'i': + prog->prog_settings.es_clock_granularity = atoi(arg); + return 0; + case 's': + if (0 == (prog->prog_engine_flags & LSENG_SERVER) && + !TAILQ_EMPTY(prog->prog_sports)) + return -1; + return prog_add_sport(prog, arg); + case 'S': + { + struct service_port *sport = TAILQ_LAST(prog->prog_sports, sport_head); + if (!sport) + sport = &prog->prog_dummy_sport; + char *const name = strdup(optarg); + char *val = strchr(name, '='); + if (!val) + { + free(name); + return -1; + } + *val = '\0'; + ++val; + if (0 == strcasecmp(name, "sndbuf")) + { + sport->sp_flags |= SPORT_SET_SNDBUF; + sport->sp_sndbuf = atoi(val); + free(name); + return 0; + } + else if (0 == strcasecmp(name, "rcvbuf")) + { + sport->sp_flags |= SPORT_SET_RCVBUF; + sport->sp_rcvbuf = atoi(val); + free(name); + return 0; + } + else + { + free(name); + return -1; + } + } + case 'k': + { + struct service_port *sport = TAILQ_LAST(prog->prog_sports, sport_head); + if (!sport) + sport = &prog->prog_dummy_sport; + sport->sp_flags |= SPORT_CONNECT; + } + return 0; + case '0': + s_sess_resume_file = optarg; + return 0; + case 'G': +#ifndef WIN32 + if (0 == stat(optarg, &st)) + { + if (!S_ISDIR(st.st_mode)) + { + LSQ_ERROR("%s is not a directory", optarg); + return -1; + } + } + else + { + s = mkdir(optarg, 0700); + if (s != 0) + { + LSQ_ERROR("cannot create directory %s: %s", optarg, + strerror(errno)); + return -1; + } + } + s_keylog_dir = optarg; + if (prog->prog_settings.es_ql_bits) + { + LSQ_NOTICE("QL loss bits turned off because of -G. If you want " + "to turn it on, just override: -G dir -o ql_bits=2"); + prog->prog_settings.es_ql_bits = 0; + } + return 0; +#else + LSQ_ERROR("key logging is not supported on Windows"); + return -1; +#endif + default: + return 1; + } +} + + +struct event_base * +prog_eb (struct prog *prog) +{ + return prog->prog_eb; +} + + +int +prog_connect (struct prog *prog, unsigned char *sess_resume, size_t sess_resume_len) +{ + struct service_port *sport; + + sport = TAILQ_FIRST(prog->prog_sports); + if (NULL == lsquic_engine_connect(prog->prog_engine, N_LSQVER, + (struct sockaddr *) &sport->sp_local_addr, + (struct sockaddr *) &sport->sas, sport, NULL, + prog->prog_hostname ? prog->prog_hostname + /* SNI is required for HTTP */ + : prog->prog_engine_flags & LSENG_HTTP ? sport->host + : NULL, + prog->prog_max_packet_size, sess_resume, sess_resume_len, + sport->sp_token_buf, sport->sp_token_sz)) + return -1; + + prog_process_conns(prog); + return 0; +} + + +static int +prog_init_client (struct prog *prog) +{ + struct service_port *sport; + + sport = TAILQ_FIRST(prog->prog_sports); + if (0 != sport_init_client(sport, prog->prog_engine, prog->prog_eb)) + return -1; + + return 0; +} + + +static SSL_CTX * +get_ssl_ctx (void *peer_ctx, const struct sockaddr *unused) +{ + const struct service_port *const sport = peer_ctx; + return sport->sp_prog->prog_ssl_ctx; +} + + +static int +prog_new_session_cb (SSL *ssl, SSL_SESSION *session) +{ + unsigned char *buf; + size_t bufsz, nw; + FILE *file; + + /* Our client is rather limited: only one file and only one ticket + * can be saved. A more flexible client implementation would call + * lsquic_ssl_to_conn() and maybe save more tickets based on its + * own configuration. + */ + if (!s_sess_resume_file) + return 0; + + if (0 != lsquic_ssl_sess_to_resume_info(ssl, session, &buf, &bufsz)) + { + LSQ_NOTICE("lsquic_ssl_sess_to_resume_info failed"); + return 0; + } + + file = fopen(s_sess_resume_file, "wb"); + if (!file) + { + LSQ_WARN("cannot open %s for writing: %s", + s_sess_resume_file, strerror(errno)); + free(buf); + return 0; + } + + nw = fwrite(buf, 1, bufsz, file); + if (nw == bufsz) + { + LSQ_INFO("wrote %zd bytes of session resumption information to %s", + nw, s_sess_resume_file); + s_sess_resume_file = NULL; /* Save just one ticket */ + } + else + LSQ_WARN("error: fwrite(%s) returns %zd instead of %zd: %s", + s_sess_resume_file, nw, bufsz, strerror(errno)); + + fclose(file); + free(buf); + return 0; +} + + +static int +prog_init_ssl_ctx (struct prog *prog) +{ + unsigned char ticket_keys[48]; + + prog->prog_ssl_ctx = SSL_CTX_new(TLS_method()); + if (!prog->prog_ssl_ctx) + { + LSQ_ERROR("cannot allocate SSL context"); + return -1; + } + + SSL_CTX_set_min_proto_version(prog->prog_ssl_ctx, TLS1_3_VERSION); + SSL_CTX_set_max_proto_version(prog->prog_ssl_ctx, TLS1_3_VERSION); + SSL_CTX_set_default_verify_paths(prog->prog_ssl_ctx); + + /* This is obviously test code: the key is just an array of NUL bytes */ + memset(ticket_keys, 0, sizeof(ticket_keys)); + if (1 != SSL_CTX_set_tlsext_ticket_keys(prog->prog_ssl_ctx, + ticket_keys, sizeof(ticket_keys))) + { + LSQ_ERROR("SSL_CTX_set_tlsext_ticket_keys failed"); + return -1; + } + + if (s_keylog_dir) + SSL_CTX_set_keylog_callback(prog->prog_ssl_ctx, keylog_log_line); + + if (s_sess_resume_file) + { + SSL_CTX_set_session_cache_mode(prog->prog_ssl_ctx, + SSL_SESS_CACHE_CLIENT); + SSL_CTX_set_early_data_enabled(prog->prog_ssl_ctx, 1); + SSL_CTX_sess_set_new_cb(prog->prog_ssl_ctx, prog_new_session_cb); + } + + return 0; +} + + +static int +prog_init_server (struct prog *prog) +{ + struct service_port *sport; + + TAILQ_FOREACH(sport, prog->prog_sports, next_sport) + if (0 != sport_init_server(sport, prog->prog_engine, prog->prog_eb)) + return -1; + + return 0; +} + + +void +prog_process_conns (struct prog *prog) +{ + int diff; + struct timeval timeout; + + lsquic_engine_process_conns(prog->prog_engine); + + if (lsquic_engine_earliest_adv_tick(prog->prog_engine, &diff)) + { + if (diff < 0 + || (unsigned) diff < prog->prog_settings.es_clock_granularity) + { + timeout.tv_sec = 0; + timeout.tv_usec = prog->prog_settings.es_clock_granularity; + } + else + { + timeout.tv_sec = (unsigned) diff / 1000000; + timeout.tv_usec = (unsigned) diff % 1000000; + } + + if (!prog_is_stopped()) + event_add(prog->prog_timer, &timeout); + } +} + + +static void +prog_timer_handler (int fd, short what, void *arg) +{ + struct prog *const prog = arg; + if (!prog_is_stopped()) + prog_process_conns(prog); +} + + +static void +prog_usr1_handler (int fd, short what, void *arg) +{ + LSQ_NOTICE("Got SIGUSR1, stopping engine"); + prog_stop(arg); +} + + +static void +prog_usr2_handler (int fd, short what, void *arg) +{ + struct prog *const prog = arg; + + LSQ_NOTICE("Got SIGUSR2, cool down engine"); + prog->prog_flags |= PROG_FLAG_COOLDOWN; + lsquic_engine_cooldown(prog->prog_engine); + prog_process_conns(prog); +} + + +int +prog_run (struct prog *prog) +{ +#ifndef WIN32 + prog->prog_usr1 = evsignal_new(prog->prog_eb, SIGUSR1, + prog_usr1_handler, prog); + evsignal_add(prog->prog_usr1, NULL); + prog->prog_usr2 = evsignal_new(prog->prog_eb, SIGUSR2, + prog_usr2_handler, prog); + evsignal_add(prog->prog_usr2, NULL); +#endif + + event_base_loop(prog->prog_eb, 0); + + return 0; +} + + +void +prog_cleanup (struct prog *prog) +{ + lsquic_engine_destroy(prog->prog_engine); + event_base_free(prog->prog_eb); + if (!prog->prog_use_stock_pmi) + pba_cleanup(&prog->prog_pba); + if (prog->prog_ssl_ctx) + SSL_CTX_free(prog->prog_ssl_ctx); + if (prog->prog_certs) + delete_certs(prog->prog_certs); + lsquic_global_cleanup(); +} + + +void +prog_stop (struct prog *prog) +{ + struct service_port *sport; + + prog_stopped = 1; + + while ((sport = TAILQ_FIRST(prog->prog_sports))) + { + TAILQ_REMOVE(prog->prog_sports, sport, next_sport); + sport_destroy(sport); + } + + if (prog->prog_timer) + { + event_del(prog->prog_timer); + event_free(prog->prog_timer); + prog->prog_timer = NULL; + } + if (prog->prog_usr1) + { + event_del(prog->prog_usr1); + event_free(prog->prog_usr1); + prog->prog_usr1 = NULL; + } + if (prog->prog_usr2) + { + event_del(prog->prog_usr2); + event_free(prog->prog_usr2); + prog->prog_usr2 = NULL; + } +} + + +static void * +keylog_open_file (const SSL *ssl) +{ + const lsquic_conn_t *conn; + const lsquic_cid_t *cid; + FILE *fh; + int sz; + char id_str[MAX_CID_LEN * 2 + 1]; + char path[PATH_MAX]; + + conn = lsquic_ssl_to_conn(ssl); + cid = lsquic_conn_id(conn); + lsquic_hexstr(cid->idbuf, cid->len, id_str, sizeof(id_str)); + sz = snprintf(path, sizeof(path), "%s/%s.keys", s_keylog_dir, id_str); + if ((size_t) sz >= sizeof(path)) + { + LSQ_WARN("%s: file too long", __func__); + return NULL; + } + fh = fopen(path, "ab"); + if (!fh) + LSQ_WARN("could not open %s for appending: %s", path, strerror(errno)); + return fh; +} + + +static void +keylog_log_line (const SSL *ssl, const char *line) +{ + FILE *file; + + file = keylog_open_file(ssl); + if (file) + { + fputs(line, file); + fputs("\n", file); + fclose(file); + } +} + + +static struct ssl_ctx_st * +no_cert (void *cert_lu_ctx, const struct sockaddr *sa_UNUSED, const char *sni) +{ + return NULL; +} + + +int +prog_prep (struct prog *prog) +{ + int s; + char err_buf[100]; + + if (s_keylog_dir && prog->prog_certs) + { + struct lsquic_hash_elem *el; + struct server_cert *cert; + + for (el = lsquic_hash_first(prog->prog_certs); el; + el = lsquic_hash_next(prog->prog_certs)) + { + cert = lsquic_hashelem_getdata(el); + SSL_CTX_set_keylog_callback(cert->ce_ssl_ctx, keylog_log_line); + } + } + + if (0 != lsquic_engine_check_settings(prog->prog_api.ea_settings, + prog->prog_engine_flags, err_buf, sizeof(err_buf))) + { + LSQ_ERROR("Error in settings: %s", err_buf); + return -1; + } + + if (!prog->prog_use_stock_pmi) + pba_init(&prog->prog_pba, prog->prog_packout_max); + else + { + prog->prog_api.ea_pmi = NULL; + prog->prog_api.ea_pmi_ctx = NULL; + } + + if (TAILQ_EMPTY(prog->prog_sports)) + { + if (prog->prog_hostname) + s = prog_add_sport(prog, prog->prog_hostname); + else + s = prog_add_sport(prog, "0.0.0.0:12345"); + if (0 != s) + return -1; + } + + if (prog->prog_certs) + { + prog->prog_api.ea_lookup_cert = lookup_cert; + prog->prog_api.ea_cert_lu_ctx = prog->prog_certs; + } + else + { + if (prog->prog_engine_flags & LSENG_SERVER) + LSQ_WARN("Not a single service specified. Use -c option."); + prog->prog_api.ea_lookup_cert = no_cert; + } + + if (prog->prog_engine_flags & LSENG_SERVER) + { + if (memcmp(prog->prog_settings.es_preferred_address, + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 24) != 0) + prog->prog_flags |= PROG_SEARCH_ADDRS; + } + + prog->prog_eb = event_base_new(); + prog->prog_engine = lsquic_engine_new(prog->prog_engine_flags, + &prog->prog_api); + if (!prog->prog_engine) + return -1; + + prog->prog_timer = event_new(prog->prog_eb, -1, 0, + prog_timer_handler, prog); + + if (0 != prog_init_ssl_ctx(prog)) + return -1; + + if (prog->prog_engine_flags & LSENG_SERVER) + s = prog_init_server(prog); + else + s = prog_init_client(prog); + + if (s != 0) + return -1; + + return 0; +} + + +int +prog_is_stopped (void) +{ + return prog_stopped != 0; +} + + +static void +send_unsent (evutil_socket_t fd, short what, void *arg) +{ + struct prog *const prog = arg; + assert(prog->prog_send); + event_del(prog->prog_send); + event_free(prog->prog_send); + prog->prog_send = NULL; + LSQ_DEBUG("on_write event fires"); + lsquic_engine_send_unsent_packets(prog->prog_engine); +} + + +void +prog_sport_cant_send (struct prog *prog, int fd) +{ + assert(!prog->prog_send); + LSQ_DEBUG("cannot send: register on_write event"); + prog->prog_send = event_new(prog->prog_eb, fd, EV_WRITE, send_unsent, prog); + event_add(prog->prog_send, NULL); +} diff --git a/external/lsquic/bin/prog.h b/external/lsquic/bin/prog.h new file mode 100644 index 0000000..f8794c1 --- /dev/null +++ b/external/lsquic/bin/prog.h @@ -0,0 +1,116 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * prog.h -- common setup and options for QUIC program + */ + +#ifndef PROG_H +#define PROG_H 1 + +#include "test_config.h" + +struct event; +struct event_base; +struct lsquic_hash; +struct sport_head; +struct ssl_ctx_st; + +struct prog +{ + struct packout_buf_allocator prog_pba; + struct lsquic_engine_settings prog_settings; + struct lsquic_engine_api prog_api; + unsigned prog_engine_flags; + struct service_port prog_dummy_sport; /* Use for options */ + unsigned prog_packout_max; + unsigned short prog_max_packet_size; + int prog_version_cleared; + unsigned long prog_read_count; +#if HAVE_SENDMMSG + int prog_use_sendmmsg; +#endif +#if HAVE_RECVMMSG + int prog_use_recvmmsg; +#endif + int prog_use_stock_pmi; + struct event_base *prog_eb; + struct event *prog_timer, + *prog_send, + *prog_usr1; + struct event *prog_usr2; + struct ssl_ctx_st *prog_ssl_ctx; + struct lsquic_hash *prog_certs; + struct event *prog_event_sni; + char *prog_susp_sni; + struct sport_head *prog_sports; + struct lsquic_engine *prog_engine; + const char *prog_hostname; + int prog_ipver; /* 0, 4, or 6 */ + enum { + PROG_FLAG_COOLDOWN = 1 << 0, + PROG_SEARCH_ADDRS = 1 << 1, + } prog_flags; +}; + +int +prog_init (struct prog *, unsigned lsquic_engine_flags, struct sport_head *, + const struct lsquic_stream_if *, void *stream_if_ctx); + +#if HAVE_SENDMMSG +# define SENDMMSG_FLAG "g" +#else +# define SENDMMSG_FLAG "" +#endif +#if HAVE_RECVMMSG +# define RECVMMSG_FLAG "j" +#else +# define RECVMMSG_FLAG "" +#endif + +#if LSQUIC_DONTFRAG_SUPPORTED +# define IP_DONTFRAG_FLAG "D" +#else +# define IP_DONTFRAG_FLAG "" +#endif + +#define PROG_OPTS "i:km:c:y:L:l:o:H:s:S:Y:z:G:WA:" RECVMMSG_FLAG SENDMMSG_FLAG \ + IP_DONTFRAG_FLAG + +/* Returns: + * 0 Applied + * 1 Not applicable + * -1 Error + */ +int +prog_set_opt (struct prog *, int opt, const char *arg); + +struct event_base * +prog_eb (struct prog *); + +int +prog_run (struct prog *); + +void +prog_cleanup (struct prog *); + +void +prog_stop (struct prog *); + +int +prog_prep (struct prog *); + +int +prog_connect (struct prog *, unsigned char *, size_t); + +void +prog_print_common_options (const struct prog *, FILE *); + +int +prog_is_stopped (void); + +void +prog_process_conns (struct prog *); + +void +prog_sport_cant_send (struct prog *, int fd); + +#endif diff --git a/external/lsquic/bin/test_cert.c b/external/lsquic/bin/test_cert.c new file mode 100644 index 0000000..e00bde8 --- /dev/null +++ b/external/lsquic/bin/test_cert.c @@ -0,0 +1,201 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "lsquic_types.h" +#include "lsquic.h" +#include "../src/liblsquic/lsquic_logger.h" +#include "../src/liblsquic/lsquic_hash.h" + +#include "test_cert.h" + + +static char s_alpn[0x100]; + +int +add_alpn (const char *alpn) +{ + size_t alpn_len, all_len; + + alpn_len = strlen(alpn); + if (alpn_len > 255) + return -1; + + all_len = strlen(s_alpn); + if (all_len + 1 + alpn_len + 1 > sizeof(s_alpn)) + return -1; + + s_alpn[all_len] = alpn_len; + memcpy(&s_alpn[all_len + 1], alpn, alpn_len); + s_alpn[all_len + 1 + alpn_len] = '\0'; + return 0; +} + + +static int +select_alpn (SSL *ssl, const unsigned char **out, unsigned char *outlen, + const unsigned char *in, unsigned int inlen, void *arg) +{ + int r; + + r = SSL_select_next_proto((unsigned char **) out, outlen, in, inlen, + (unsigned char *) s_alpn, strlen(s_alpn)); + if (r == OPENSSL_NPN_NEGOTIATED) + return SSL_TLSEXT_ERR_OK; + else + { + LSQ_WARN("no supported protocol can be selected from %.*s", + (int) inlen, (char *) in); + return SSL_TLSEXT_ERR_ALERT_FATAL; + } +} + + + +int +load_cert (struct lsquic_hash *certs, const char *optarg) +{ + int rv = -1; + char *sni, *cert_file, *key_file; + struct server_cert *cert = NULL; + EVP_PKEY *pkey = NULL; + FILE *f = NULL; + + sni = strdup(optarg); + cert_file = strchr(sni, ','); + if (!cert_file) + goto end; + *cert_file = '\0'; + ++cert_file; + key_file = strchr(cert_file, ','); + if (!key_file) + goto end; + *key_file = '\0'; + ++key_file; + + cert = calloc(1, sizeof(*cert)); + cert->ce_sni = strdup(sni); + + cert->ce_ssl_ctx = SSL_CTX_new(TLS_method()); + if (!cert->ce_ssl_ctx) + { + LSQ_ERROR("SSL_CTX_new failed"); + goto end; + } + SSL_CTX_set_min_proto_version(cert->ce_ssl_ctx, TLS1_3_VERSION); + SSL_CTX_set_max_proto_version(cert->ce_ssl_ctx, TLS1_3_VERSION); + SSL_CTX_set_default_verify_paths(cert->ce_ssl_ctx); + SSL_CTX_set_alpn_select_cb(cert->ce_ssl_ctx, select_alpn, NULL); + { + const char *const s = getenv("LSQUIC_ENABLE_EARLY_DATA"); + if (!s || atoi(s)) + SSL_CTX_set_early_data_enabled(cert->ce_ssl_ctx, 1); /* XXX */ + } + if (1 != SSL_CTX_use_certificate_chain_file(cert->ce_ssl_ctx, cert_file)) + { + LSQ_ERROR("SSL_CTX_use_certificate_chain_file failed: %s", cert_file); + goto end; + } + + if (strstr(key_file, ".pkcs8")) + { + f = fopen(key_file, "r"); + if (!f) + { + LSQ_ERROR("fopen(%s) failed: %s", cert_file, strerror(errno)); + goto end; + } + pkey = d2i_PrivateKey_fp(f, NULL); + fclose(f); + f = NULL; + if (!pkey) + { + LSQ_ERROR("Reading private key from %s failed", key_file); + goto end; + } + if (!SSL_CTX_use_PrivateKey(cert->ce_ssl_ctx, pkey)) + { + LSQ_ERROR("SSL_CTX_use_PrivateKey failed"); + goto end; + } + } + else if (1 != SSL_CTX_use_PrivateKey_file(cert->ce_ssl_ctx, key_file, + SSL_FILETYPE_PEM)) + { + LSQ_ERROR("SSL_CTX_use_PrivateKey_file failed"); + goto end; + } + + const int was = SSL_CTX_set_session_cache_mode(cert->ce_ssl_ctx, 1); + LSQ_DEBUG("set SSL session cache mode to 1 (was: %d)", was); + + if (lsquic_hash_insert(certs, cert->ce_sni, strlen(cert->ce_sni), cert, + &cert->ce_hash_el)) + rv = 0; + else + LSQ_WARN("cannot insert cert for %s into hash table", cert->ce_sni); + + end: + free(sni); + if (rv != 0) + { /* Error: free cert and its components */ + if (cert) + { + free(cert->ce_sni); + free(cert); + } + } + return rv; +} + +struct ssl_ctx_st * +lookup_cert (void *cert_lu_ctx, const struct sockaddr *sa_UNUSED, + const char *sni) +{ + struct lsquic_hash_elem *el; + struct server_cert *server_cert; + + if (!cert_lu_ctx) + return NULL; + + if (sni) + el = lsquic_hash_find(cert_lu_ctx, sni, strlen(sni)); + else + { + LSQ_INFO("SNI is not set"); + el = lsquic_hash_first(cert_lu_ctx); + } + + if (el) + { + server_cert = lsquic_hashelem_getdata(el); + if (server_cert) + return server_cert->ce_ssl_ctx; + } + + return NULL; +} + + +void +delete_certs (struct lsquic_hash *certs) +{ + struct lsquic_hash_elem *el; + struct server_cert *cert; + + for (el = lsquic_hash_first(certs); el; el = lsquic_hash_next(certs)) + { + cert = lsquic_hashelem_getdata(el); + SSL_CTX_free(cert->ce_ssl_ctx); + free(cert->ce_sni); + free(cert); + } + lsquic_hash_destroy(certs); +} diff --git a/external/lsquic/bin/test_cert.h b/external/lsquic/bin/test_cert.h new file mode 100644 index 0000000..4614b57 --- /dev/null +++ b/external/lsquic/bin/test_cert.h @@ -0,0 +1,30 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef TEST_CERT_H +#define TEST_CERT_H + +struct lsquic_hash; +struct ssl_ctx_st; +struct sockaddr; + +struct server_cert +{ + char *ce_sni; + struct ssl_ctx_st *ce_ssl_ctx; + struct lsquic_hash_elem ce_hash_el; +}; + + +int +load_cert (struct lsquic_hash *, const char *optarg); + +struct ssl_ctx_st * +lookup_cert (void *cert_lu_ctx, const struct sockaddr * /*unused */, + const char *sni); + +void +delete_certs (struct lsquic_hash *); + +int +add_alpn (const char *alpn); + +#endif diff --git a/external/lsquic/bin/test_common.c b/external/lsquic/bin/test_common.c new file mode 100644 index 0000000..8fd0e70 --- /dev/null +++ b/external/lsquic/bin/test_common.c @@ -0,0 +1,2536 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#if __GNUC__ +#define _GNU_SOURCE /* For struct in6_pktinfo */ +#endif +#include +#include +#include +#include +#include +#include +#if defined(__APPLE__) +# define __APPLE_USE_RFC_3542 1 +#endif +#ifndef WIN32 +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#pragma warning(disable:4996)//posix name deprecated +#define close closesocket +#endif +#include +#include +#include + +#include "test_config.h" + +#if HAVE_REGEX +#ifndef WIN32 +#include +#else +#include +#endif +#endif + +#include + +#include "lsquic.h" +#include "test_common.h" +#include "prog.h" +#include "lsxpack_header.h" + +#include "../src/liblsquic/lsquic_logger.h" + +#define MAX(a, b) ((a) > (b) ? (a) : (b)) +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + +#ifndef LSQUIC_USE_POOLS +#define LSQUIC_USE_POOLS 1 +#endif + +#if __linux__ +# define NDROPPED_SZ CMSG_SPACE(sizeof(uint32_t)) /* SO_RXQ_OVFL */ +#else +# define NDROPPED_SZ 0 +#endif + +#if __linux__ && defined(IP_RECVORIGDSTADDR) +# define DST_MSG_SZ sizeof(struct sockaddr_in) +#elif WIN32 +# define DST_MSG_SZ sizeof(struct sockaddr_in) +#elif __linux__ +# define DST_MSG_SZ sizeof(struct in_pktinfo) +#else +# define DST_MSG_SZ sizeof(struct sockaddr_in) +#endif + +#if ECN_SUPPORTED +#define ECN_SZ CMSG_SPACE(sizeof(int)) +#else +#define ECN_SZ 0 +#endif + +#define MAX_PACKET_SZ 0xffff + +#define CTL_SZ (CMSG_SPACE(MAX(DST_MSG_SZ, \ + sizeof(struct in6_pktinfo))) + NDROPPED_SZ + ECN_SZ) + +/* There are `n_alloc' elements in `vecs', `local_addresses', and + * `peer_addresses' arrays. `ctlmsg_data' is n_alloc * CTL_SZ. Each packets + * gets a single `vecs' element that points somewhere into `packet_data'. + * + * `n_alloc' is calculated at run-time based on the socket's receive buffer + * size. + */ +struct packets_in +{ + unsigned char *packet_data; + unsigned char *ctlmsg_data; +#ifndef WIN32 + struct iovec *vecs; +#else + WSABUF *vecs; +#endif +#if ECN_SUPPORTED + int *ecn; +#endif + struct sockaddr_storage *local_addresses, + *peer_addresses; + unsigned n_alloc; + unsigned data_sz; +}; + + +#if WIN32 +LPFN_WSARECVMSG pfnWSARecvMsg; +GUID recvGuid = WSAID_WSARECVMSG; +LPFN_WSASENDMSG pfnWSASendMsg; +GUID sendGuid = WSAID_WSASENDMSG; + +CRITICAL_SECTION initLock; +LONG initialized = 0; + +static void getExtensionPtrs() +{ + if (InterlockedCompareExchange(&initialized, 1, 0) == 0) + { + InitializeCriticalSection(&initLock); + } + EnterCriticalSection(&initLock); + if(pfnWSARecvMsg == NULL|| pfnWSASendMsg == NULL) + { + SOCKET sock= socket(PF_INET, SOCK_DGRAM, 0); + DWORD dwBytes; + int rc = 0; + if (pfnWSARecvMsg == NULL) + { + rc = WSAIoctl(sock, SIO_GET_EXTENSION_FUNCTION_POINTER, &recvGuid, + sizeof(recvGuid), &pfnWSARecvMsg, sizeof(pfnWSARecvMsg), + &dwBytes, NULL, NULL); + } + if (rc != SOCKET_ERROR) + { + if (pfnWSASendMsg == NULL) + { + rc = WSAIoctl(sock, SIO_GET_EXTENSION_FUNCTION_POINTER, + &sendGuid, sizeof(sendGuid), &pfnWSASendMsg, + sizeof(pfnWSASendMsg), &dwBytes, NULL, NULL); + } + } + if (rc == SOCKET_ERROR) + { + LSQ_ERROR("Can't get extension function pointers: %d", + WSAGetLastError()); + } + closesocket(sock); + } + LeaveCriticalSection(&initLock); +} + + +#endif + + + + +static struct packets_in * +allocate_packets_in (SOCKET_TYPE fd) +{ + struct packets_in *packs_in; + unsigned n_alloc; + socklen_t opt_len; + int recvsz; + + opt_len = sizeof(recvsz); + if (0 != getsockopt(fd, SOL_SOCKET, SO_RCVBUF, (void*)&recvsz, &opt_len)) + { + LSQ_ERROR("getsockopt failed: %s", strerror(errno)); + return NULL; + } + + n_alloc = (unsigned) recvsz / 1370; + LSQ_INFO("socket buffer size: %d bytes; max # packets is set to %u", + recvsz, n_alloc); + recvsz += MAX_PACKET_SZ; + + packs_in = malloc(sizeof(*packs_in)); + packs_in->data_sz = recvsz; + packs_in->n_alloc = n_alloc; + packs_in->packet_data = malloc(recvsz); + packs_in->ctlmsg_data = malloc(n_alloc * CTL_SZ); + packs_in->vecs = malloc(n_alloc * sizeof(packs_in->vecs[0])); + packs_in->local_addresses = malloc(n_alloc * sizeof(packs_in->local_addresses[0])); + packs_in->peer_addresses = malloc(n_alloc * sizeof(packs_in->peer_addresses[0])); +#if ECN_SUPPORTED + packs_in->ecn = malloc(n_alloc * sizeof(packs_in->ecn[0])); +#endif + + return packs_in; +} + + +static void +free_packets_in (struct packets_in *packs_in) +{ +#if ECN_SUPPORTED + free(packs_in->ecn); +#endif + free(packs_in->peer_addresses); + free(packs_in->local_addresses); + free(packs_in->ctlmsg_data); + free(packs_in->vecs); + free(packs_in->packet_data); + free(packs_in); +} + + +void +sport_destroy (struct service_port *sport) +{ + if (sport->ev) + { + event_del(sport->ev); + event_free(sport->ev); + } + if (sport->fd >= 0) + (void) CLOSE_SOCKET(sport->fd); + if (sport->packs_in) + free_packets_in(sport->packs_in); + free(sport->sp_token_buf); + free(sport); +} + + +static char * +sockaddr2str (const struct sockaddr *addr, char *buf, size_t sz) +{ + unsigned short port; + int len; + + switch (addr->sa_family) + { + case AF_INET: + port = ntohs(((struct sockaddr_in *) addr)->sin_port); + if (!inet_ntop(AF_INET, &((struct sockaddr_in *) addr)->sin_addr, + buf, sz)) + buf[0] = '\0'; + break; + case AF_INET6: + port = ntohs(((struct sockaddr_in6 *) addr)->sin6_port); + if (!inet_ntop(AF_INET6, &((struct sockaddr_in6 *) addr)->sin6_addr, + buf, sz)) + buf[0] = '\0'; + break; + default: + port = 0; + (void) snprintf(buf, sz, "", addr->sa_family); + break; + } + + len = strlen(buf); + if (len < (int) sz) + snprintf(buf + len, sz - (size_t) len, ":%hu", port); + return buf; +} + + +struct service_port * +sport_new (const char *optarg, struct prog *prog) +{ + struct service_port *const sport = calloc(1, sizeof(*sport)); +#if HAVE_REGEX + regex_t re; + regmatch_t matches[5]; + int re_code; + const char *port_str; + char errbuf[80]; +#else + char *port_str; +#endif + int port, e; + const char *host; + struct addrinfo hints, *res = NULL; +#if __linux__ + sport->n_dropped = 0; + sport->drop_init = 0; +#endif + sport->ev = NULL; + sport->packs_in = NULL; + sport->fd = -1; + char *const addr = strdup(optarg); +#if __linux__ + char *if_name; + if_name = strrchr(addr, ','); + if (if_name) + { + strncpy(sport->if_name, if_name + 1, sizeof(sport->if_name) - 1); + sport->if_name[ sizeof(sport->if_name) - 1 ] = '\0'; + *if_name = '\0'; + } + else + sport->if_name[0] = '\0'; +#endif +#if HAVE_REGEX + re_code = regcomp(&re, "^(.*):([0-9][0-9]*)$" + "|^([0-9][0-9]*)$" + "|^(..*)$" + , REG_EXTENDED); + if (re_code != 0) + { + regerror(re_code, &re, errbuf, sizeof(errbuf)); + LSQ_ERROR("cannot compile regex: %s", errbuf); + goto err; + } + if (0 != regexec(&re, addr, sizeof(matches) / sizeof(matches[0]), + matches, 0)) + { + LSQ_ERROR("Invalid argument `%s'", addr); + goto err; + } + if (matches[1].rm_so >= 0) + { + addr[ matches[1].rm_so + matches[1].rm_eo ] = '\0'; + host = addr; + port_str = &addr[ matches[2].rm_so ]; + port = atoi(port_str); + } + else if (matches[3].rm_so >= 0) + { + if (!prog->prog_hostname) + { + LSQ_ERROR("hostname is not specified"); + goto err; + } + host = prog->prog_hostname; + port_str = &addr[ matches[3].rm_so ]; + port = atoi(port_str); + } + else + { + assert(matches[4].rm_so >= 0); + host = addr; + port_str = "443"; + port = 443; + } +#else + host = addr; + port_str = strrchr(addr, ':'); + if (port_str) + { + *port_str++ = '\0'; + port = atoi(port_str); + } + else + { + port_str = "443"; + port = 443; + } +#endif + assert(host); + LSQ_DEBUG("host: %s; port: %d", host, port); + if (strlen(host) > sizeof(sport->host) - 1) + { + LSQ_ERROR("argument `%s' too long", host); + goto err; + } + strcpy(sport->host, host); + + struct sockaddr_in *const sa4 = (void *) &sport->sas; + struct sockaddr_in6 *const sa6 = (void *) &sport->sas; + if (inet_pton(AF_INET, host, &sa4->sin_addr)) { + sa4->sin_family = AF_INET; + sa4->sin_port = htons(port); + } else if (memset(sa6, 0, sizeof(*sa6)), + inet_pton(AF_INET6, host, &sa6->sin6_addr)) { + sa6->sin6_family = AF_INET6; + sa6->sin6_port = htons(port); + } else + { + memset(&hints, 0, sizeof(hints)); + hints.ai_flags = AI_NUMERICSERV; + if (prog->prog_ipver == 4) + hints.ai_family = AF_INET; + else if (prog->prog_ipver == 6) + hints.ai_family = AF_INET6; + e = getaddrinfo(host, port_str, &hints, &res); + if (e != 0) + { + LSQ_ERROR("could not resolve %s:%s: %s", host, port_str, + gai_strerror(e)); + goto err; + } + if (res->ai_addrlen > sizeof(sport->sas)) + { + LSQ_ERROR("resolved socket length is too long"); + goto err; + } + memcpy(&sport->sas, res->ai_addr, res->ai_addrlen); + if (!prog->prog_hostname) + prog->prog_hostname = sport->host; + } + +#if HAVE_REGEX + if (0 == re_code) + regfree(&re); +#endif + if (res) + freeaddrinfo(res); + free(addr); + sport->sp_prog = prog; + return sport; + + err: +#if HAVE_REGEX + if (0 == re_code) + regfree(&re); +#endif + if (res) + freeaddrinfo(res); + free(sport); + free(addr); + return NULL; +} + + +/* Replace IP address part of `sa' with that provided in ancillary messages + * in `msg'. + */ +static void +proc_ancillary ( +#ifndef WIN32 + struct msghdr +#else + WSAMSG +#endif + *msg, struct sockaddr_storage *storage +#if __linux__ + , uint32_t *n_dropped +#endif +#if ECN_SUPPORTED + , int *ecn +#endif + ) +{ + const struct in6_pktinfo *in6_pkt; + struct cmsghdr *cmsg; + + for (cmsg = CMSG_FIRSTHDR(msg); cmsg; cmsg = CMSG_NXTHDR(msg, cmsg)) + { + if (cmsg->cmsg_level == IPPROTO_IP && + cmsg->cmsg_type == +#if __linux__ && defined(IP_RECVORIGDSTADDR) + IP_ORIGDSTADDR +#elif __linux__ || WIN32 || __APPLE__ + IP_PKTINFO +#else + IP_RECVDSTADDR +#endif + ) + { +#if __linux__ && defined(IP_RECVORIGDSTADDR) + memcpy(storage, CMSG_DATA(cmsg), sizeof(struct sockaddr_in)); +#elif WIN32 + const struct in_pktinfo *in_pkt; + in_pkt = (void *) WSA_CMSG_DATA(cmsg); + ((struct sockaddr_in *) storage)->sin_addr = in_pkt->ipi_addr; +#elif __linux__ || __APPLE__ + const struct in_pktinfo *in_pkt; + in_pkt = (void *) CMSG_DATA(cmsg); + ((struct sockaddr_in *) storage)->sin_addr = in_pkt->ipi_addr; +#else + memcpy(&((struct sockaddr_in *) storage)->sin_addr, + CMSG_DATA(cmsg), sizeof(struct in_addr)); +#endif + } + else if (cmsg->cmsg_level == IPPROTO_IPV6 && + cmsg->cmsg_type == IPV6_PKTINFO) + { +#ifndef WIN32 + in6_pkt = (void *) CMSG_DATA(cmsg); +#else + in6_pkt = (void *) WSA_CMSG_DATA(cmsg); +#endif + ((struct sockaddr_in6 *) storage)->sin6_addr = + in6_pkt->ipi6_addr; + } +#if __linux__ + else if (cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SO_RXQ_OVFL) + memcpy(n_dropped, CMSG_DATA(cmsg), sizeof(*n_dropped)); +#endif +#if ECN_SUPPORTED + else if ((cmsg->cmsg_level == IPPROTO_IP && cmsg->cmsg_type == IP_TOS) + || (cmsg->cmsg_level == IPPROTO_IPV6 + && cmsg->cmsg_type == IPV6_TCLASS)) + { + memcpy(ecn, CMSG_DATA(cmsg), sizeof(*ecn)); + *ecn &= IPTOS_ECN_MASK; + } +#ifdef __FreeBSD__ + else if (cmsg->cmsg_level == IPPROTO_IP + && cmsg->cmsg_type == IP_RECVTOS) + { + unsigned char tos; + memcpy(&tos, CMSG_DATA(cmsg), sizeof(tos)); + *ecn = tos & IPTOS_ECN_MASK; + } +#endif +#endif + } +} + + +struct read_iter +{ + struct service_port *ri_sport; + unsigned ri_idx; /* Current element */ + unsigned ri_off; /* Offset into packet_data */ +}; + + +enum rop { ROP_OK, ROP_NOROOM, ROP_ERROR, }; + +static enum rop +read_one_packet (struct read_iter *iter) +{ + unsigned char *ctl_buf; + struct packets_in *packs_in; +#if __linux__ + uint32_t n_dropped; +#endif +#ifndef WIN32 + ssize_t nread; +#else + DWORD nread; + int socket_ret; +#endif + struct sockaddr_storage *local_addr; + struct service_port *sport; + + sport = iter->ri_sport; + packs_in = sport->packs_in; + + if (iter->ri_idx >= packs_in->n_alloc || + iter->ri_off + MAX_PACKET_SZ > packs_in->data_sz) + { + LSQ_DEBUG("out of room in packets_in"); + return ROP_NOROOM; + } + +#ifndef WIN32 + packs_in->vecs[iter->ri_idx].iov_base = packs_in->packet_data + iter->ri_off; + packs_in->vecs[iter->ri_idx].iov_len = MAX_PACKET_SZ; +#else + packs_in->vecs[iter->ri_idx].buf = (char*)packs_in->packet_data + iter->ri_off; + packs_in->vecs[iter->ri_idx].len = MAX_PACKET_SZ; +#endif + +#ifndef WIN32 + top: +#endif + ctl_buf = packs_in->ctlmsg_data + iter->ri_idx * CTL_SZ; + +#ifndef WIN32 + struct msghdr msg = { + .msg_name = &packs_in->peer_addresses[iter->ri_idx], + .msg_namelen = sizeof(packs_in->peer_addresses[iter->ri_idx]), + .msg_iov = &packs_in->vecs[iter->ri_idx], + .msg_iovlen = 1, + .msg_control = ctl_buf, + .msg_controllen = CTL_SZ, + }; + nread = recvmsg(sport->fd, &msg, 0); + if (-1 == nread) { + if (!(EAGAIN == errno || EWOULDBLOCK == errno)) + LSQ_ERROR("recvmsg: %s", strerror(errno)); + return ROP_ERROR; + } + if (msg.msg_flags & (MSG_TRUNC|MSG_CTRUNC)) + { + if (msg.msg_flags & MSG_TRUNC) + LSQ_INFO("packet truncated - drop it"); + if (msg.msg_flags & MSG_CTRUNC) + LSQ_WARN("packet's auxilicary data truncated - drop it"); + goto top; + } +#else + WSAMSG msg = { + .name = (LPSOCKADDR)&packs_in->peer_addresses[iter->ri_idx], + .namelen = sizeof(packs_in->peer_addresses[iter->ri_idx]), + .lpBuffers = &packs_in->vecs[iter->ri_idx], + .dwBufferCount = 1, + .Control = {CTL_SZ,(char*)ctl_buf} + }; + socket_ret = pfnWSARecvMsg(sport->fd, &msg, &nread, NULL, NULL); + if (SOCKET_ERROR == socket_ret) { + if (WSAEWOULDBLOCK != WSAGetLastError()) + LSQ_ERROR("recvmsg: %d", WSAGetLastError()); + return ROP_ERROR; + } +#endif + + local_addr = &packs_in->local_addresses[iter->ri_idx]; + memcpy(local_addr, &sport->sp_local_addr, sizeof(*local_addr)); +#if __linux__ + n_dropped = 0; +#endif +#if ECN_SUPPORTED + packs_in->ecn[iter->ri_idx] = 0; +#endif + proc_ancillary(&msg, local_addr +#if __linux__ + , &n_dropped +#endif +#if ECN_SUPPORTED + , &packs_in->ecn[iter->ri_idx] +#endif + ); +#if LSQUIC_ECN_BLACK_HOLE && ECN_SUPPORTED + { + const char *s; + s = getenv("LSQUIC_ECN_BLACK_HOLE"); + if (s && atoi(s) && packs_in->ecn[iter->ri_idx]) + { + LSQ_NOTICE("ECN blackhole: drop packet"); + return ROP_OK; + } + } +#endif +#if __linux__ + if (sport->drop_init) + { + if (sport->n_dropped < n_dropped) + LSQ_INFO("dropped %u packets", n_dropped - sport->n_dropped); + } + else + sport->drop_init = 1; + sport->n_dropped = n_dropped; +#endif + char localaddr_str[80]; + char remoteaddr_str[80]; + LSQ_DEBUG("[%s] RX packet %zd bytes from: %s", + sockaddr2str((struct sockaddr *)local_addr, localaddr_str, + sizeof(localaddr_str)), + nread, sockaddr2str( + (struct sockaddr *)&packs_in->peer_addresses[iter->ri_idx], + remoteaddr_str, sizeof(remoteaddr_str))); + +#ifndef WIN32 + packs_in->vecs[iter->ri_idx].iov_len = nread; +#else + packs_in->vecs[iter->ri_idx].len = nread; +#endif + iter->ri_off += nread; + iter->ri_idx += 1; + + return ROP_OK; +} + + +#if HAVE_RECVMMSG +static enum rop +read_using_recvmmsg (struct read_iter *iter) +{ +#if __linux__ + uint32_t n_dropped; +#endif + int s; + unsigned n; + struct sockaddr_storage *local_addr; + struct service_port *const sport = iter->ri_sport; + struct packets_in *const packs_in = sport->packs_in; + /* XXX TODO We allocate this array on the stack and initialize the + * headers each time the function is invoked. This is suboptimal. + * What we should really be doing is allocate mmsghdrs as part of + * packs_in and initialize it there. While we are at it, we should + * make packs_in shared between all service ports. + */ + struct mmsghdr mmsghdrs[ packs_in->n_alloc ]; + + /* Sanity check: we assume that the iterator is reset */ + assert(iter->ri_off == 0 && iter->ri_idx == 0); + + /* Initialize mmsghdrs */ + for (n = 0; n < sizeof(mmsghdrs) / sizeof(mmsghdrs[0]); ++n) + { + packs_in->vecs[n].iov_base = packs_in->packet_data + MAX_PACKET_SZ * n; + packs_in->vecs[n].iov_len = MAX_PACKET_SZ; + mmsghdrs[n].msg_hdr = (struct msghdr) { + .msg_name = &packs_in->peer_addresses[n], + .msg_namelen = sizeof(packs_in->peer_addresses[n]), + .msg_iov = &packs_in->vecs[n], + .msg_iovlen = 1, + .msg_control = packs_in->ctlmsg_data + CTL_SZ * n, + .msg_controllen = CTL_SZ, + }; + } + + /* Read packets */ + s = recvmmsg(sport->fd, mmsghdrs, n, 0, NULL); + if (s < 0) + { + if (!(EAGAIN == errno || EWOULDBLOCK == errno)) + LSQ_ERROR("recvmmsg: %s", strerror(errno)); + return ROP_ERROR; + } + + /* Process ancillary data and update vecs */ + for (n = 0; n < (unsigned) s; ++n) + { + local_addr = &packs_in->local_addresses[n]; + memcpy(local_addr, &sport->sp_local_addr, sizeof(*local_addr)); +#if __linux__ + n_dropped = 0; +#endif +#if ECN_SUPPORTED + packs_in->ecn[n] = 0; +#endif + proc_ancillary(&mmsghdrs[n].msg_hdr, local_addr +#if __linux__ + , &n_dropped +#endif +#if ECN_SUPPORTED + , &packs_in->ecn[n] +#endif + ); +#if __linux__ + if (sport->drop_init) + { + if (sport->n_dropped < n_dropped) + LSQ_INFO("dropped %u packets", n_dropped - sport->n_dropped); + } + else + sport->drop_init = 1; + sport->n_dropped = n_dropped; +#endif + packs_in->vecs[n].iov_len = mmsghdrs[n].msg_len; + } + + iter->ri_idx = n; + + return n == sizeof(mmsghdrs) / sizeof(mmsghdrs[0]) ? ROP_NOROOM : ROP_OK; +} + + +#endif + + +#if __GNUC__ +# define UNLIKELY(cond) __builtin_expect(cond, 0) +#else +# define UNLIKELY(cond) cond +#endif + + +static void +read_handler (evutil_socket_t fd, short flags, void *ctx) +{ + struct service_port *sport = ctx; + lsquic_engine_t *const engine = sport->engine; + struct packets_in *packs_in = sport->packs_in; + struct read_iter iter; + unsigned n, n_batches; + /* Save the value in case program is stopped packs_in is freed: */ + const unsigned n_alloc = packs_in->n_alloc; + enum rop rop; + + n_batches = 0; + iter.ri_sport = sport; + + sport->sp_prog->prog_read_count += 1; + do + { + iter.ri_off = 0; + iter.ri_idx = 0; + +#if HAVE_RECVMMSG + if (sport->sp_prog->prog_use_recvmmsg) + rop = read_using_recvmmsg(&iter); + else +#endif + do + rop = read_one_packet(&iter); + while (ROP_OK == rop); + + if (UNLIKELY(ROP_ERROR == rop && (sport->sp_flags & SPORT_CONNECT) + && errno == ECONNREFUSED)) + { + LSQ_ERROR("connection refused: exit program"); + prog_cleanup(sport->sp_prog); + exit(1); + } + + n_batches += iter.ri_idx > 0; + + for (n = 0; n < iter.ri_idx; ++n) + if (0 > lsquic_engine_packet_in(engine, +#ifndef WIN32 + packs_in->vecs[n].iov_base, + packs_in->vecs[n].iov_len, +#else + (const unsigned char *) packs_in->vecs[n].buf, + packs_in->vecs[n].len, +#endif + (struct sockaddr *) &packs_in->local_addresses[n], + (struct sockaddr *) &packs_in->peer_addresses[n], + sport, +#if ECN_SUPPORTED + packs_in->ecn[n] +#else + 0 +#endif + )) + break; + + if (n > 0) + prog_process_conns(sport->sp_prog); + } + while (ROP_NOROOM == rop && !prog_is_stopped()); + + if (n_batches) + n += n_alloc * (n_batches - 1); + + LSQ_DEBUG("read %u packet%.*s in %u batch%s", n, n != 1, "s", n_batches, n_batches != 1 ? "es" : ""); +} + + +static int +add_to_event_loop (struct service_port *sport, struct event_base *eb) +{ + sport->ev = event_new(eb, sport->fd, EV_READ|EV_PERSIST, read_handler, + sport); + if (sport->ev) + { + event_add(sport->ev, NULL); + return 0; + } + else + return -1; +} + + +int +sport_init_server (struct service_port *sport, struct lsquic_engine *engine, + struct event_base *eb) +{ + const struct sockaddr *sa_local = (struct sockaddr *) &sport->sas; + int sockfd, saved_errno, s; +#ifndef WIN32 + int flags; +#endif + SOCKOPT_VAL on = 1; + socklen_t socklen; + char addr_str[0x20]; + + switch (sa_local->sa_family) + { + case AF_INET: + socklen = sizeof(struct sockaddr_in); + break; + case AF_INET6: + socklen = sizeof(struct sockaddr_in6); + break; + default: + errno = EINVAL; + return -1; + } + +#if WIN32 + getExtensionPtrs(); +#endif + sockfd = socket(sa_local->sa_family, SOCK_DGRAM, 0); + if (-1 == sockfd) + return -1; + + if (AF_INET6 == sa_local->sa_family + && setsockopt(sockfd, IPPROTO_IPV6, IPV6_V6ONLY, + CHAR_CAST &on, sizeof(on)) == -1) + { + close(sockfd); + return -1; + } + + if (0 != bind(sockfd, sa_local, socklen)) { + saved_errno = errno; + LSQ_WARN("bind failed: %s", strerror(errno)); + close(sockfd); + errno = saved_errno; + return -1; + } + + /* Make socket non-blocking */ +#ifndef WIN32 + flags = fcntl(sockfd, F_GETFL); + if (-1 == flags) { + saved_errno = errno; + close(sockfd); + errno = saved_errno; + return -1; + } + flags |= O_NONBLOCK; + if (0 != fcntl(sockfd, F_SETFL, flags)) { + saved_errno = errno; + close(sockfd); + errno = saved_errno; + return -1; + } +#else + { + u_long on = 1; + ioctlsocket(sockfd, FIONBIO, &on); + } +#endif + + on = 1; + if (AF_INET == sa_local->sa_family) + s = setsockopt(sockfd, IPPROTO_IP, +#if __linux__ && defined(IP_RECVORIGDSTADDR) + IP_RECVORIGDSTADDR, +#elif __linux__ || __APPLE__ || defined(WIN32) + IP_PKTINFO, +#else + IP_RECVDSTADDR, +#endif + CHAR_CAST &on, sizeof(on)); + else + { +#ifndef WIN32 + s = setsockopt(sockfd, IPPROTO_IPV6, IPV6_RECVPKTINFO, &on, sizeof(on)); +#else + s = setsockopt(sockfd, IPPROTO_IPV6, IPV6_PKTINFO, CHAR_CAST &on, sizeof(on)); +#endif + } + + if (0 != s) + { + saved_errno = errno; + close(sockfd); + errno = saved_errno; + return -1; + } + +#if (__linux__ && !defined(IP_RECVORIGDSTADDR)) || __APPLE__ || defined(WIN32) + /* Need to set IP_PKTINFO for sending */ + if (AF_INET == sa_local->sa_family) + { + on = 1; + s = setsockopt(sockfd, IPPROTO_IP, IP_PKTINFO, CHAR_CAST &on, sizeof(on)); + if (0 != s) + { + saved_errno = errno; + close(sockfd); + errno = saved_errno; + return -1; + } + } +#elif IP_RECVDSTADDR != IP_SENDSRCADDR + /* On FreeBSD, IP_RECVDSTADDR is the same as IP_SENDSRCADDR, but I do not + * know about other BSD systems. + */ + if (AF_INET == sa_local->sa_family) + { + on = 1; + s = setsockopt(sockfd, IPPROTO_IP, IP_SENDSRCADDR, &on, sizeof(on)); + if (0 != s) + { + saved_errno = errno; + close(sockfd); + errno = saved_errno; + return -1; + } + } +#endif + +#if __linux__ && defined(SO_RXQ_OVFL) + on = 1; + s = setsockopt(sockfd, SOL_SOCKET, SO_RXQ_OVFL, &on, sizeof(on)); + if (0 != s) + { + saved_errno = errno; + close(sockfd); + errno = saved_errno; + return -1; + } +#endif + +#if __linux__ + if (sport->if_name[0] && + 0 != setsockopt(sockfd, SOL_SOCKET, SO_BINDTODEVICE, sport->if_name, + IFNAMSIZ)) + { + saved_errno = errno; + close(sockfd); + errno = saved_errno; + return -1; + } +#endif + +#if LSQUIC_DONTFRAG_SUPPORTED + if (!(sport->sp_flags & SPORT_FRAGMENT_OK)) + { + if (AF_INET == sa_local->sa_family) + { +#if __linux__ + on = IP_PMTUDISC_PROBE; + s = setsockopt(sockfd, IPPROTO_IP, IP_MTU_DISCOVER, &on, + sizeof(on)); +#else + on = 1; + s = setsockopt(sockfd, IPPROTO_IP, IP_DONTFRAG, CHAR_CAST &on, sizeof(on)); +#endif + if (0 != s) + { + saved_errno = errno; + close(sockfd); + errno = saved_errno; + return -1; + } + } +#if __linux__ + else if (AF_INET6 == sa_local->sa_family) + { + int on = IP_PMTUDISC_PROBE; + s = setsockopt(sockfd, IPPROTO_IPV6, IPV6_MTU_DISCOVER, &on, sizeof(on)); + } +#endif + } +#endif + +#if ECN_SUPPORTED + on = 1; + if (AF_INET == sa_local->sa_family) + { + s = setsockopt(sockfd, IPPROTO_IP, IP_RECVTOS, + CHAR_CAST &on, sizeof(on)); + if (!s) + s = setsockopt(sockfd, IPPROTO_IP, IP_TOS, + CHAR_CAST &on, sizeof(on)); + } + else + { + s = setsockopt(sockfd, IPPROTO_IPV6, IPV6_RECVTCLASS, + CHAR_CAST &on, sizeof(on)); + if (!s) + s = setsockopt(sockfd, IPPROTO_IPV6, IPV6_TCLASS, + CHAR_CAST &on, sizeof(on)); + } + if (0 != s) + { + saved_errno = errno; + close(sockfd); + errno = saved_errno; + return -1; + } + LSQ_DEBUG("server ECN support is enabled."); + +#endif + + if (sport->sp_flags & SPORT_SET_SNDBUF) + { + s = setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, CHAR_CAST &sport->sp_sndbuf, + sizeof(sport->sp_sndbuf)); + if (0 != s) + { + saved_errno = errno; + close(sockfd); + errno = saved_errno; + return -1; + } + } + + if (sport->sp_flags & SPORT_SET_RCVBUF) + { + s = setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, CHAR_CAST &sport->sp_rcvbuf, + sizeof(sport->sp_rcvbuf)); + if (0 != s) + { + saved_errno = errno; + close(sockfd); + errno = saved_errno; + return -1; + } + } + + if (0 != getsockname(sockfd, (struct sockaddr *) sa_local, &socklen)) + { + saved_errno = errno; + close(sockfd); + errno = saved_errno; + return -1; + } + + sport->packs_in = allocate_packets_in(sockfd); + if (!sport->packs_in) + { + saved_errno = errno; + close(sockfd); + errno = saved_errno; + return -1; + } + + memcpy((void *) &sport->sp_local_addr, sa_local, + sa_local->sa_family == AF_INET ? + sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6)); + switch (sa_local->sa_family) { + case AF_INET: + LSQ_DEBUG("local address: %s:%d", + inet_ntop(AF_INET, &((struct sockaddr_in *) sa_local)->sin_addr, + addr_str, sizeof(addr_str)), + ntohs(((struct sockaddr_in *) sa_local)->sin_port)); + break; + } + + sport->engine = engine; + sport->fd = sockfd; + sport->sp_flags |= SPORT_SERVER; + + return add_to_event_loop(sport, eb); +} + + +int +sport_init_client (struct service_port *sport, struct lsquic_engine *engine, + struct event_base *eb) +{ + const struct sockaddr *sa_peer = (struct sockaddr *) &sport->sas; + int saved_errno, s; +#ifndef WIN32 + int flags; +#endif + SOCKET_TYPE sockfd; + socklen_t socklen, peer_socklen; + union { + struct sockaddr_in sin; + struct sockaddr_in6 sin6; + } u; + struct sockaddr *sa_local = (struct sockaddr *) &u; + char addr_str[0x20]; + + switch (sa_peer->sa_family) + { + case AF_INET: + socklen = sizeof(struct sockaddr_in); + u.sin.sin_family = AF_INET; + u.sin.sin_addr.s_addr = INADDR_ANY; + u.sin.sin_port = 0; + break; + case AF_INET6: + socklen = sizeof(struct sockaddr_in6); + memset(&u.sin6, 0, sizeof(u.sin6)); + u.sin6.sin6_family = AF_INET6; + break; + default: + errno = EINVAL; + return -1; + } + +#if WIN32 + getExtensionPtrs(); +#endif + sockfd = socket(sa_peer->sa_family, SOCK_DGRAM, 0); + if (-1 == sockfd) + return -1; + + if (0 != bind(sockfd, sa_local, socklen)) { + saved_errno = errno; + CLOSE_SOCKET(sockfd); + errno = saved_errno; + return -1; + } + + if (sport->sp_flags & SPORT_CONNECT) + { + peer_socklen = AF_INET == sa_peer->sa_family + ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6); + if (0 != connect(sockfd, sa_peer, peer_socklen)) + { + saved_errno = errno; + CLOSE_SOCKET(sockfd); + errno = saved_errno; + return -1; + } + } + + /* Make socket non-blocking */ +#ifndef WIN32 + flags = fcntl(sockfd, F_GETFL); + if (-1 == flags) { + saved_errno = errno; + CLOSE_SOCKET(sockfd); + errno = saved_errno; + return -1; + } + flags |= O_NONBLOCK; + if (0 != fcntl(sockfd, F_SETFL, flags)) { + saved_errno = errno; + CLOSE_SOCKET(sockfd); + errno = saved_errno; + return -1; + } +#else + { + u_long on = 1; + ioctlsocket(sockfd, FIONBIO, &on); + } +#endif + +#if LSQUIC_DONTFRAG_SUPPORTED + if (!(sport->sp_flags & SPORT_FRAGMENT_OK)) + { + if (AF_INET == sa_local->sa_family) + { + int on; +#if __linux__ + on = IP_PMTUDISC_PROBE; + s = setsockopt(sockfd, IPPROTO_IP, IP_MTU_DISCOVER, &on, + sizeof(on)); +#elif WIN32 + on = 1; + s = setsockopt(sockfd, IPPROTO_IP, IP_DONTFRAGMENT, CHAR_CAST &on, sizeof(on)); +#else + on = 1; + s = setsockopt(sockfd, IPPROTO_IP, IP_DONTFRAG, &on, sizeof(on)); +#endif + if (0 != s) + { + saved_errno = errno; + CLOSE_SOCKET(sockfd); + errno = saved_errno; + return -1; + } + } +#if __linux__ + else if (AF_INET6 == sa_local->sa_family) + { + int on = IP_PMTUDISC_PROBE; + s = setsockopt(sockfd, IPPROTO_IPV6, IPV6_MTU_DISCOVER, &on, sizeof(on)); + } +#endif + } +#endif + +#if ECN_SUPPORTED + { + int on = 1; + if (AF_INET == sa_local->sa_family) + { + s = setsockopt(sockfd, IPPROTO_IP, IP_RECVTOS, + CHAR_CAST &on, sizeof(on)); + if (!s) + s = setsockopt(sockfd, IPPROTO_IP, IP_TOS, + CHAR_CAST &on, sizeof(on)); + } + else + { + s = setsockopt(sockfd, IPPROTO_IPV6, IPV6_RECVTCLASS, + CHAR_CAST &on, sizeof(on)); + if (!s) + s = setsockopt(sockfd, IPPROTO_IPV6, IPV6_TCLASS, + CHAR_CAST &on, sizeof(on)); + } + if (0 != s) + { + saved_errno = errno; + close(sockfd); + errno = saved_errno; + return -1; + } + LSQ_DEBUG("client ECN support is enabled."); + } +#endif + + if (sport->sp_flags & SPORT_SET_SNDBUF) + { + s = setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, + CHAR_CAST &sport->sp_sndbuf, sizeof(sport->sp_sndbuf)); + if (0 != s) + { + saved_errno = errno; + CLOSE_SOCKET(sockfd); + errno = saved_errno; + return -1; + } + } + + if (sport->sp_flags & SPORT_SET_RCVBUF) + { + s = setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, + CHAR_CAST &sport->sp_rcvbuf, sizeof(sport->sp_rcvbuf)); + if (0 != s) + { + saved_errno = errno; + CLOSE_SOCKET(sockfd); + errno = saved_errno; + return -1; + } + } + + if (0 != getsockname(sockfd, sa_local, &socklen)) + { + saved_errno = errno; + CLOSE_SOCKET(sockfd); + errno = saved_errno; + return -1; + } + + sport->packs_in = allocate_packets_in(sockfd); + if (!sport->packs_in) + { + saved_errno = errno; + CLOSE_SOCKET(sockfd); + errno = saved_errno; + return -1; + } + + memcpy((void *) &sport->sp_local_addr, sa_local, + sa_local->sa_family == AF_INET ? + sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6)); + switch (sa_local->sa_family) { + case AF_INET: + LSQ_DEBUG("local address: %s:%d", + inet_ntop(AF_INET, &u.sin.sin_addr, addr_str, sizeof(addr_str)), + ntohs(u.sin.sin_port)); + break; + } + + sport->engine = engine; + sport->fd = sockfd; + + return add_to_event_loop(sport, eb); +} + + +/* Sometimes it is useful to impose an artificial limit for testing */ +static unsigned +packet_out_limit (void) +{ + const char *env = getenv("LSQUIC_PACKET_OUT_LIMIT"); + if (env) + return atoi(env); + else + return 0; +} + + +enum ctl_what +{ + CW_SENDADDR = 1 << 0, +#if ECN_SUPPORTED + CW_ECN = 1 << 1, +#endif +}; + +static void +setup_control_msg ( +#ifndef WIN32 + struct msghdr +#else + WSAMSG +#endif + *msg, enum ctl_what cw, + const struct lsquic_out_spec *spec, unsigned char *buf, size_t bufsz) +{ + struct cmsghdr *cmsg; + struct sockaddr_in *local_sa; + struct sockaddr_in6 *local_sa6; +#if __linux__ || __APPLE__ || WIN32 + struct in_pktinfo info; +#endif + struct in6_pktinfo info6; + size_t ctl_len; + +#ifndef WIN32 + msg->msg_control = buf; + msg->msg_controllen = bufsz; +#else + msg->Control.buf = (char*)buf; + msg->Control.len = bufsz; +#endif + + /* Need to zero the buffer due to a bug(?) in CMSG_NXTHDR. See + * https://stackoverflow.com/questions/27601849/cmsg-nxthdr-returns-null-even-though-there-are-more-cmsghdr-objects + */ + memset(buf, 0, bufsz); + + ctl_len = 0; + for (cmsg = CMSG_FIRSTHDR(msg); cw && cmsg; cmsg = CMSG_NXTHDR(msg, cmsg)) + { + if (cw & CW_SENDADDR) + { + if (AF_INET == spec->dest_sa->sa_family) + { + local_sa = (struct sockaddr_in *) spec->local_sa; +#if __linux__ || __APPLE__ + memset(&info, 0, sizeof(info)); + info.ipi_spec_dst = local_sa->sin_addr; + cmsg->cmsg_level = IPPROTO_IP; + cmsg->cmsg_type = IP_PKTINFO; + cmsg->cmsg_len = CMSG_LEN(sizeof(info)); + ctl_len += CMSG_SPACE(sizeof(info)); + memcpy(CMSG_DATA(cmsg), &info, sizeof(info)); +#elif WIN32 + memset(&info, 0, sizeof(info)); + info.ipi_addr = local_sa->sin_addr; + cmsg->cmsg_level = IPPROTO_IP; + cmsg->cmsg_type = IP_PKTINFO; + cmsg->cmsg_len = CMSG_LEN(sizeof(info)); + ctl_len += CMSG_SPACE(sizeof(info)); + memcpy(WSA_CMSG_DATA(cmsg), &info, sizeof(info)); +#else + cmsg->cmsg_level = IPPROTO_IP; + cmsg->cmsg_type = IP_SENDSRCADDR; + cmsg->cmsg_len = CMSG_LEN(sizeof(local_sa->sin_addr)); + ctl_len += CMSG_SPACE(sizeof(local_sa->sin_addr)); + memcpy(CMSG_DATA(cmsg), &local_sa->sin_addr, + sizeof(local_sa->sin_addr)); +#endif + } + else + { + local_sa6 = (struct sockaddr_in6 *) spec->local_sa; + memset(&info6, 0, sizeof(info6)); + info6.ipi6_addr = local_sa6->sin6_addr; + cmsg->cmsg_level = IPPROTO_IPV6; + cmsg->cmsg_type = IPV6_PKTINFO; + cmsg->cmsg_len = CMSG_LEN(sizeof(info6)); +#ifndef WIN32 + memcpy(CMSG_DATA(cmsg), &info6, sizeof(info6)); +#else + memcpy(WSA_CMSG_DATA(cmsg), &info6, sizeof(info6)); +#endif + ctl_len += CMSG_SPACE(sizeof(info6)); + } + cw &= ~CW_SENDADDR; + } +#if ECN_SUPPORTED + else if (cw & CW_ECN) + { + if (AF_INET == spec->dest_sa->sa_family) + { + const +#if defined(__FreeBSD__) + unsigned char +#else + int +#endif + tos = spec->ecn; + cmsg->cmsg_level = IPPROTO_IP; + cmsg->cmsg_type = IP_TOS; + cmsg->cmsg_len = CMSG_LEN(sizeof(tos)); + memcpy(CMSG_DATA(cmsg), &tos, sizeof(tos)); + ctl_len += CMSG_SPACE(sizeof(tos)); + } + else + { + const int tos = spec->ecn; + cmsg->cmsg_level = IPPROTO_IPV6; + cmsg->cmsg_type = IPV6_TCLASS; + cmsg->cmsg_len = CMSG_LEN(sizeof(tos)); + memcpy(CMSG_DATA(cmsg), &tos, sizeof(tos)); + ctl_len += CMSG_SPACE(sizeof(tos)); + } + cw &= ~CW_ECN; + } +#endif + else + assert(0); + } + +#ifndef WIN32 + msg->msg_controllen = ctl_len; +#else + msg->Control.len = ctl_len; +#endif +} + + +#if HAVE_SENDMMSG +static int +send_packets_using_sendmmsg (const struct lsquic_out_spec *specs, + unsigned count) +{ +#ifndef NDEBUG + { + /* This only works for a single port! If the specs contain more + * than one socket, this function does *NOT* work. We check it + * here just in case: + */ + void *ctx; + unsigned i; + for (i = 1, ctx = specs[i].peer_ctx; + i < count; + ctx = specs[i].peer_ctx, ++i) + assert(ctx == specs[i - 1].peer_ctx); + } +#endif + + const struct service_port *const sport = specs[0].peer_ctx; + const int fd = sport->fd; + enum ctl_what cw; + unsigned i; + int s, saved_errno; + uintptr_t ancil_key, prev_ancil_key; + struct mmsghdr mmsgs[1024]; + union { + /* cmsg(3) recommends union for proper alignment */ + unsigned char buf[ CMSG_SPACE( + MAX( +#if __linux__ + sizeof(struct in_pktinfo) +#else + sizeof(struct in_addr) +#endif + , sizeof(struct in6_pktinfo)) + ) +#if ECN_SUPPORTED + + CMSG_SPACE(sizeof(int)) +#endif + ]; + struct cmsghdr cmsg; + } ancil [ sizeof(mmsgs) / sizeof(mmsgs[0]) ]; + + prev_ancil_key = 0; + for (i = 0; i < count && i < sizeof(mmsgs) / sizeof(mmsgs[0]); ++i) + { + mmsgs[i].msg_hdr.msg_name = (void *) specs[i].dest_sa; + mmsgs[i].msg_hdr.msg_namelen = (AF_INET == specs[i].dest_sa->sa_family ? + sizeof(struct sockaddr_in) : + sizeof(struct sockaddr_in6)), + mmsgs[i].msg_hdr.msg_iov = specs[i].iov; + mmsgs[i].msg_hdr.msg_iovlen = specs[i].iovlen; + mmsgs[i].msg_hdr.msg_flags = 0; + if ((sport->sp_flags & SPORT_SERVER) && specs[i].local_sa->sa_family) + { + cw = CW_SENDADDR; + ancil_key = (uintptr_t) specs[i].local_sa; + assert(0 == (ancil_key & 3)); + } + else + { + cw = 0; + ancil_key = 0; + } +#if ECN_SUPPORTED + if (sport->sp_prog->prog_api.ea_settings->es_ecn && specs[i].ecn) + { + cw |= CW_ECN; + ancil_key |= specs[i].ecn; + } +#endif + if (cw && prev_ancil_key == ancil_key) + { + /* Reuse previous ancillary message */ + assert(i > 0); +#ifndef WIN32 + mmsgs[i].msg_hdr.msg_control = mmsgs[i - 1].msg_hdr.msg_control; + mmsgs[i].msg_hdr.msg_controllen = mmsgs[i - 1].msg_hdr.msg_controllen; +#else + mmsgs[i].msg_hdr.Control.buf = mmsgs[i - 1].msg_hdr.Control.buf; + mmsgs[i].msg_hdr.Control.len = mmsgs[i - 1].msg_hdr.Control.len; +#endif + } + else if (cw) + { + prev_ancil_key = ancil_key; + setup_control_msg(&mmsgs[i].msg_hdr, cw, &specs[i], ancil[i].buf, + sizeof(ancil[i].buf)); + } + else + { + prev_ancil_key = 0; +#ifndef WIN32 + mmsgs[i].msg_hdr.msg_control = NULL; + mmsgs[i].msg_hdr.msg_controllen = 0; +#else + mmsgs[i].msg_hdr.Control.buf = NULL; + mmsgs[i].msg_hdr.Control.len = 0; +#endif + } + } + + s = sendmmsg(fd, mmsgs, count, 0); + if (s < (int) count) + { + saved_errno = errno; + prog_sport_cant_send(sport->sp_prog, sport->fd); + if (s < 0) + { + LSQ_WARN("sendmmsg failed: %s", strerror(saved_errno)); + errno = saved_errno; + } + else if (s > 0) + errno = EAGAIN; + else + errno = saved_errno; + } + + return s; +} + + +#endif + + +static const struct service_port * +find_sport (struct prog *prog, const struct sockaddr *local_sa) +{ + const struct service_port *sport; + const struct sockaddr *addr; + size_t len; + + TAILQ_FOREACH(sport, prog->prog_sports, next_sport) + { + addr = (struct sockaddr *) &sport->sp_local_addr; + if (addr->sa_family == local_sa->sa_family) + { + len = addr->sa_family == AF_INET ? sizeof(struct sockaddr_in) + : sizeof(struct sockaddr_in6); + if (0 == memcmp(addr, local_sa, len)) + return sport; + if (((struct sockaddr_in *)addr)->sin_port == + ((struct sockaddr_in *)local_sa)->sin_port) + { + if ((addr->sa_family == AF_INET + && ((struct sockaddr_in *)addr)->sin_addr.s_addr + == INADDR_ANY) + ||(addr->sa_family == AF_INET6 + && (IN6_IS_ADDR_UNSPECIFIED( + &((struct sockaddr_in6 *)addr)->sin6_addr)))) + return sport; + } + } + } + + assert(0); + return NULL; +} + + +static int +send_packets_one_by_one (const struct lsquic_out_spec *specs, unsigned count) +{ + const struct service_port *sport; + enum ctl_what cw; + unsigned n; + int s = 0; +#ifndef WIN32 + struct msghdr msg; +#else + DWORD bytes; + WSAMSG msg; + LPWSABUF pWsaBuf = NULL; +#endif + union { + /* cmsg(3) recommends union for proper alignment */ +#if __linux__ || WIN32 +# define SIZE1 sizeof(struct in_pktinfo) +#else +# define SIZE1 sizeof(struct in_addr) +#endif + unsigned char buf[ + CMSG_SPACE(MAX(SIZE1, sizeof(struct in6_pktinfo))) +#if ECN_SUPPORTED + + CMSG_SPACE(sizeof(int)) +#endif + ]; + struct cmsghdr cmsg; + } ancil; + uintptr_t ancil_key, prev_ancil_key; + + if (0 == count) + return 0; + + const unsigned orig_count = count; + const unsigned out_limit = packet_out_limit(); + if (out_limit && count > out_limit) + count = out_limit; +#if LSQUIC_RANDOM_SEND_FAILURE + { + const char *freq_str = getenv("LSQUIC_RANDOM_SEND_FAILURE"); + int freq; + if (freq_str) + freq = atoi(freq_str); + else + freq = 10; + if (rand() % freq == 0) + { + assert(count > 0); + sport = specs[0].peer_ctx; + LSQ_NOTICE("sending \"randomly\" fails"); + prog_sport_cant_send(sport->sp_prog, sport->fd); + goto random_send_failure; + } + } +#endif + + n = 0; + prev_ancil_key = 0; +#ifdef WIN32 + #define MAX_OUT_BATCH_SIZE 1024 + pWsaBuf = malloc(sizeof(*pWsaBuf)*MAX_OUT_BATCH_SIZE*2); + if (NULL == pWsaBuf) { + return -1; + } +#endif + + do + { + sport = specs[n].peer_ctx; + if (sport->sp_prog->prog_flags & PROG_SEARCH_ADDRS) + sport = find_sport(sport->sp_prog, specs[n].local_sa); +#ifndef WIN32 + msg.msg_name = (void *) specs[n].dest_sa; + msg.msg_namelen = (AF_INET == specs[n].dest_sa->sa_family ? + sizeof(struct sockaddr_in) : + sizeof(struct sockaddr_in6)), + msg.msg_iov = specs[n].iov; + msg.msg_iovlen = specs[n].iovlen; + msg.msg_flags = 0; +#else + for (int i = 0; i < specs[n].iovlen; i++) + { + pWsaBuf[i].buf = specs[n].iov[i].iov_base; + pWsaBuf[i].len = specs[n].iov[i].iov_len; + } + msg.name = (void *) specs[n].dest_sa; + msg.namelen = (AF_INET == specs[n].dest_sa->sa_family ? + sizeof(struct sockaddr_in) : + sizeof(struct sockaddr_in6)); + msg.dwBufferCount = specs[n].iovlen; + msg.lpBuffers = pWsaBuf; + msg.dwFlags = 0; +#endif + if ((sport->sp_flags & SPORT_SERVER) && specs[n].local_sa->sa_family) + { + cw = CW_SENDADDR; + ancil_key = (uintptr_t) specs[n].local_sa; + assert(0 == (ancil_key & 3)); + } + else + { + cw = 0; + ancil_key = 0; + } +#if ECN_SUPPORTED + if (sport->sp_prog->prog_api.ea_settings->es_ecn && specs[n].ecn) + { + cw |= CW_ECN; + ancil_key |= specs[n].ecn; + } +#endif + if (cw && prev_ancil_key == ancil_key) + { + /* Reuse previous ancillary message */ + ; + } + else if (cw) + { + prev_ancil_key = ancil_key; + setup_control_msg(&msg, cw, &specs[n], ancil.buf, sizeof(ancil.buf)); + } + else + { + prev_ancil_key = 0; +#ifndef WIN32 + msg.msg_control = NULL; + msg.msg_controllen = 0; +#else + msg.Control.buf = NULL; + msg.Control.len = 0; +#endif + } +#ifndef WIN32 + s = sendmsg(sport->fd, &msg, 0); +#else + s = pfnWSASendMsg(sport->fd, &msg, 0, &bytes, NULL, NULL); +#endif + if (s < 0) + { +#ifndef WIN32 + LSQ_INFO("sendto failed: %s", strerror(errno)); +#else + LSQ_INFO("sendto failed: %s", WSAGetLastError()); +#endif + break; + } + char localaddr_str[80]; + char remoteaddr_str[80]; + LSQ_DEBUG("[%s] TX packet %d bytes to: %s", + sockaddr2str((struct sockaddr *)&sport->sp_local_addr, + localaddr_str, sizeof(localaddr_str)), + s, sockaddr2str(specs[n].dest_sa, + remoteaddr_str, sizeof(remoteaddr_str))); + + ++n; + } + while (n < count); + + if (n < orig_count) + prog_sport_cant_send(sport->sp_prog, sport->fd); + +#ifdef WIN32 + if (NULL != pWsaBuf) { + free(pWsaBuf); + pWsaBuf = NULL; + } +#endif + + if (n > 0) + { + if (n < orig_count && out_limit) + errno = EAGAIN; + return n; + } + else + { + assert(s < 0); +#if LSQUIC_RANDOM_SEND_FAILURE + random_send_failure: +#endif + return -1; + } +} + + +int +sport_packets_out (void *ctx, const struct lsquic_out_spec *specs, + unsigned count) +{ +#if HAVE_SENDMMSG + const struct prog *prog = ctx; + if (prog->prog_use_sendmmsg) + return send_packets_using_sendmmsg(specs, count); + else +#endif + return send_packets_one_by_one(specs, count); +} + + +int +set_perferred_address(uint8_t *addr, uint16_t *port, const char *s, int family) +{ + char addr_buf[1024]; + const char *colon; + if (s && strlen(s) < sizeof(addr_buf) && (colon = strrchr(s, ':'))) + { + strncpy(addr_buf, s, colon - s); + addr_buf[colon - s] = '\0'; + if (inet_pton(family, addr_buf, addr)) + { + *port = atoi(colon + 1); + //params.tp_set |= 1 << TPI_PREFERRED_ADDRESS; + return 1; + } + else + { + struct addrinfo hints, *res = NULL; + int ret; + memset(&hints, 0, sizeof(hints)); + hints.ai_flags = AI_NUMERICSERV; + hints.ai_family = family; + ret = getaddrinfo(addr_buf, colon + 1, &hints, &res); + if (ret != 0) + { + LSQ_ERROR("could not resolve %s:%s: %s", addr_buf, colon + 1, + gai_strerror(ret)); + return 0; + } + if (family == AF_INET) + memcpy(addr, &((struct sockaddr_in *)res->ai_addr)->sin_addr.s_addr, 4); + else + memcpy(addr, &((struct sockaddr_in6 *)res->ai_addr)->sin6_addr, 16); + *port = atoi(colon + 1); + return 1; + } + } + return 0; +} + + +int +set_engine_option (struct lsquic_engine_settings *settings, + int *version_cleared, const char *name) +{ + int len; + const char *val = strchr(name, '='); + if (!val) + return -1; + len = val - name; + ++val; + + switch (len) + { + case 2: + if (0 == strncmp(name, "ua", 2)) + { + settings->es_ua = val; + return 0; + } + break; + case 3: + if (0 == strncmp(name, "ecn", 1)) + { + settings->es_ecn = atoi(val); +#if !ECN_SUPPORTED + if (settings->es_ecn) + { + LSQ_ERROR("ECN is not supported on this platform"); + break; + } +#endif + return 0; + } + break; + case 4: + if (0 == strncmp(name, "cfcw", 4)) + { + settings->es_cfcw = atoi(val); + return 0; + } + if (0 == strncmp(name, "sfcw", 4)) + { + settings->es_sfcw = atoi(val); + return 0; + } + if (0 == strncmp(name, "spin", 4)) + { + settings->es_spin = atoi(val); + return 0; + } + if (0 == strncmp(name, "srej", 4)) + { + settings->es_support_srej = atoi(val); + return 0; + } + break; + case 7: + if (0 == strncmp(name, "version", 7)) + { + if (!*version_cleared) + { + *version_cleared = 1; + settings->es_versions = 0; + } + enum lsquic_version ver = lsquic_str2ver(val, strlen(val)); + if ((unsigned) ver < N_LSQVER) + { + settings->es_versions |= 1 << ver; + return 0; + } + ver = lsquic_alpn2ver(val, strlen(val)); + if ((unsigned) ver < N_LSQVER) + { + settings->es_versions |= 1 << ver; + return 0; + } + } + else if (0 == strncmp(name, "rw_once", 7)) + { + settings->es_rw_once = atoi(val); + return 0; + } + else if (0 == strncmp(name, "cc_algo", 7)) + { + settings->es_cc_algo = atoi(val); + return 0; + } + else if (0 == strncmp(name, "ql_bits", 7)) + { + settings->es_ql_bits = atoi(val); + return 0; + } + break; + case 8: + if (0 == strncmp(name, "max_cfcw", 8)) + { + settings->es_max_cfcw = atoi(val); + return 0; + } + if (0 == strncmp(name, "max_sfcw", 8)) + { + settings->es_max_sfcw = atoi(val); + return 0; + } + if (0 == strncmp(name, "scid_len", 8)) + { + settings->es_scid_len = atoi(val); + return 0; + } + if (0 == strncmp(name, "dplpmtud", 8)) + { + settings->es_dplpmtud = atoi(val); + return 0; + } + break; + case 9: + if (0 == strncmp(name, "send_prst", 9)) + { + settings->es_send_prst = atoi(val); + return 0; + } + break; + case 10: + if (0 == strncmp(name, "honor_prst", 10)) + { + settings->es_honor_prst = atoi(val); + return 0; + } + if (0 == strncmp(name, "timestamps", 10)) + { + settings->es_timestamps = atoi(val); + return 0; + } + if (0 == strncmp(name, "max_plpmtu", 10)) + { + settings->es_max_plpmtu = atoi(val); + return 0; + } + break; + case 11: + if (0 == strncmp(name, "ping_period", 11)) + { + settings->es_ping_period = atoi(val); + return 0; + } + if (0 == strncmp(name, "base_plpmtu", 11)) + { + settings->es_base_plpmtu = atoi(val); + return 0; + } + if (0 == strncmp(name, "ptpc_target", 11)) + { + settings->es_ptpc_target = atof(val); + return 0; + } + break; + case 12: + if (0 == strncmp(name, "idle_conn_to", 12)) + { + settings->es_idle_conn_to = atoi(val); + return 0; + } + if (0 == strncmp(name, "idle_timeout", 12)) + { + settings->es_idle_timeout = atoi(val); + return 0; + } + if (0 == strncmp(name, "silent_close", 12)) + { + settings->es_silent_close = atoi(val); + return 0; + } + if (0 == strncmp(name, "support_push", 12)) + { + settings->es_support_push = atoi(val); + return 0; + } + if (0 == strncmp(name, "support_nstp", 12)) + { + settings->es_support_nstp = atoi(val); + return 0; + } + if (0 == strncmp(name, "pace_packets", 12)) + { + settings->es_pace_packets = atoi(val); + return 0; + } + if (0 == strncmp(name, "handshake_to", 12)) + { + settings->es_handshake_to = atoi(val); + return 0; + } + if (0 == strncmp(name, "support_srej", 12)) + { + settings->es_support_srej = atoi(val); + return 0; + } + if (0 == strncmp(name, "delayed_acks", 12)) + { + settings->es_delayed_acks = atoi(val); + return 0; + } + if (0 == strncmp(name, "preferred_v4", 12)) + { + set_perferred_address(settings->es_preferred_address, + (uint16_t *)&settings->es_preferred_address[4], val, AF_INET); + return 0; + } + if (0 == strncmp(name, "preferred_v6", 12)) + { + set_perferred_address(&settings->es_preferred_address[6], + (uint16_t *)&settings->es_preferred_address[22], + val, AF_INET6); + return 0; + } + + break; + case 13: + if (0 == strncmp(name, "support_tcid0", 13)) + { + settings->es_support_tcid0 = atoi(val); + return 0; + } + if (0 == strncmp(name, "init_max_data", 13)) + { + settings->es_init_max_data = atoi(val); + return 0; + } + if (0 == strncmp(name, "scid_iss_rate", 13)) + { + settings->es_scid_iss_rate = atoi(val); + return 0; + } + if (0 == strncmp(name, "ext_http_prio", 13)) + { + settings->es_ext_http_prio = atoi(val); + return 0; + } + if (0 == strncmp(name, "ptpc_int_gain", 13)) + { + settings->es_ptpc_int_gain = atof(val); + return 0; + } + if (0 == strncmp(name, "delay_onclose", 13)) + { + settings->es_delay_onclose = atoi(val); + return 0; + } + break; + case 14: + if (0 == strncmp(name, "max_streams_in", 14)) + { + settings->es_max_streams_in = atoi(val); + return 0; + } + if (0 == strncmp(name, "progress_check", 14)) + { + settings->es_progress_check = atoi(val); + return 0; + } + if (0 == strncmp(name, "ptpc_prop_gain", 14)) + { + settings->es_ptpc_prop_gain = atof(val); + return 0; + } + if (0 == strncmp(name, "max_batch_size", 14)) + { + settings->es_max_batch_size = atoi(val); + return 0; + } + break; + case 15: + if (0 == strncmp(name, "allow_migration", 15)) + { + settings->es_allow_migration = atoi(val); + return 0; + } + if (0 == strncmp(name, "grease_quic_bit", 15)) + { + settings->es_grease_quic_bit = atoi(val); + return 0; + } + if (0 == strncmp(name, "ptpc_dyn_target", 15)) + { + settings->es_ptpc_dyn_target = atoi(val); + return 0; + } + if (0 == strncmp(name, "ptpc_err_thresh", 15)) + { + settings->es_ptpc_err_thresh = atof(val); + return 0; + } + break; + case 16: + if (0 == strncmp(name, "proc_time_thresh", 16)) + { + settings->es_proc_time_thresh = atoi(val); + return 0; + } + if (0 == strncmp(name, "qpack_experiment", 16)) + { + settings->es_qpack_experiment = atoi(val); + return 0; + } + if (0 == strncmp(name, "ptpc_periodicity", 16)) + { + settings->es_ptpc_periodicity = atoi(val); + return 0; + } + if (0 == strncmp(name, "ptpc_max_packtol", 16)) + { + settings->es_ptpc_max_packtol = atoi(val); + return 0; + } + if (0 == strncmp(name, "ptpc_err_divisor", 16)) + { + settings->es_ptpc_err_divisor = atof(val); + return 0; + } + break; + case 18: + if (0 == strncmp(name, "qpack_enc_max_size", 18)) + { + settings->es_qpack_enc_max_size = atoi(val); + return 0; + } + if (0 == strncmp(name, "qpack_dec_max_size", 18)) + { + settings->es_qpack_dec_max_size = atoi(val); + return 0; + } + if (0 == strncmp(name, "noprogress_timeout", 18)) + { + settings->es_noprogress_timeout = atoi(val); + return 0; + } + break; + case 20: + if (0 == strncmp(name, "max_header_list_size", 20)) + { + settings->es_max_header_list_size = atoi(val); + return 0; + } + if (0 == strncmp(name, "init_max_streams_uni", 20)) + { + settings->es_init_max_streams_uni = atoi(val); + return 0; + } + break; + case 21: + if (0 == strncmp(name, "qpack_enc_max_blocked", 21)) + { + settings->es_qpack_enc_max_blocked = atoi(val); + return 0; + } + if (0 == strncmp(name, "qpack_dec_max_blocked", 21)) + { + settings->es_qpack_dec_max_blocked = atoi(val); + return 0; + } + if (0 == strncmp(name, "init_max_streams_bidi", 21)) + { + settings->es_init_max_streams_bidi = atoi(val); + return 0; + } + break; + case 23: + if (0 == strncmp(name, "max_udp_payload_size_rx", 23)) + { + settings->es_max_udp_payload_size_rx = atoi(val); + return 0; + } + break; + case 24: + if (0 == strncmp(name, "init_max_stream_data_uni", 24)) + { + settings->es_init_max_stream_data_uni = atoi(val); + return 0; + } + break; + case 31: + if (0 == strncmp(name, "init_max_stream_data_bidi_local", 31)) + { + settings->es_init_max_stream_data_bidi_local = atoi(val); + return 0; + } + break; + case 32: + if (0 == strncmp(name, "init_max_stream_data_bidi_remote", 32)) + { + settings->es_init_max_stream_data_bidi_remote = atoi(val); + return 0; + } + break; + } + + return -1; +} + + +/* So that largest allocation in PBA fits in 4KB */ +#define PBA_SIZE_MAX 0x1000 +#define PBA_SIZE_THRESH (PBA_SIZE_MAX - sizeof(uintptr_t)) + +struct packout_buf +{ + SLIST_ENTRY(packout_buf) next_free_pb; +}; + + +void +pba_init (struct packout_buf_allocator *pba, unsigned max) +{ + SLIST_INIT(&pba->free_packout_bufs); + pba->max = max; + pba->n_out = 0; +} + + +void * +pba_allocate (void *packout_buf_allocator, void *peer_ctx, + lsquic_conn_ctx_t *conn_ctx, unsigned short size, char is_ipv6) +{ + struct packout_buf_allocator *const pba = packout_buf_allocator; + struct packout_buf *pb; + + if (pba->max && pba->n_out >= pba->max) + { + LSQ_DEBUG("# outstanding packout bufs reached the limit of %u, " + "returning NULL", pba->max); + return NULL; + } + +#if LSQUIC_USE_POOLS + pb = SLIST_FIRST(&pba->free_packout_bufs); + if (pb && size <= PBA_SIZE_THRESH) + SLIST_REMOVE_HEAD(&pba->free_packout_bufs, next_free_pb); + else if (size <= PBA_SIZE_THRESH) + pb = malloc(PBA_SIZE_MAX); + else + pb = malloc(sizeof(uintptr_t) + size); +#else + pb = malloc(sizeof(uintptr_t) + size); +#endif + + if (pb) + { + * (uintptr_t *) pb = size; + ++pba->n_out; + return (uintptr_t *) pb + 1; + } + else + return NULL; +} + + +void +pba_release (void *packout_buf_allocator, void *peer_ctx, void *obj, char ipv6) +{ + struct packout_buf_allocator *const pba = packout_buf_allocator; + obj = (uintptr_t *) obj - 1; +#if LSQUIC_USE_POOLS + if (* (uintptr_t *) obj <= PBA_SIZE_THRESH) + { + struct packout_buf *const pb = obj; + SLIST_INSERT_HEAD(&pba->free_packout_bufs, pb, next_free_pb); + } + else +#endif + free(obj); + --pba->n_out; +} + + +void +pba_cleanup (struct packout_buf_allocator *pba) +{ +#if LSQUIC_USE_POOLS + unsigned n = 0; + struct packout_buf *pb; +#endif + + if (pba->n_out) + LSQ_WARN("%u packout bufs outstanding at deinit", pba->n_out); + +#if LSQUIC_USE_POOLS + while ((pb = SLIST_FIRST(&pba->free_packout_bufs))) + { + SLIST_REMOVE_HEAD(&pba->free_packout_bufs, next_free_pb); + free(pb); + ++n; + } + + LSQ_INFO("pba deinitialized, freed %u packout bufs", n); +#endif +} + + +void +print_conn_info (const lsquic_conn_t *conn) +{ + const char *cipher; + + cipher = lsquic_conn_crypto_cipher(conn); + + LSQ_INFO("Connection info: version: %u; cipher: %s; key size: %d, alg key size: %d", + lsquic_conn_quic_version(conn), + cipher ? cipher : "", + lsquic_conn_crypto_keysize(conn), + lsquic_conn_crypto_alg_keysize(conn) + ); +} + + +struct reader_ctx +{ + size_t file_size; + size_t nread; + int fd; +}; + + +size_t +test_reader_size (void *void_ctx) +{ + struct reader_ctx *const ctx = void_ctx; + return ctx->file_size - ctx->nread; +} + + +size_t +test_reader_read (void *void_ctx, void *buf, size_t count) +{ + struct reader_ctx *const ctx = void_ctx; + ssize_t nread; + + if (count > test_reader_size(ctx)) + count = test_reader_size(ctx); + +#ifndef WIN32 + nread = read(ctx->fd, buf, count); +#else + nread = _read(ctx->fd, buf, count); +#endif + if (nread >= 0) + { + ctx->nread += nread; + return nread; + } + else + { + LSQ_WARN("%s: error reading from file: %s", __func__, strerror(errno)); + ctx->nread = ctx->file_size = 0; + return 0; + } +} + + +struct reader_ctx * +create_lsquic_reader_ctx (const char *filename) +{ + int fd; + struct stat st; + +#ifndef WIN32 + fd = open(filename, O_RDONLY); +#else + fd = _open(filename, _O_RDONLY); +#endif + if (fd < 0) + { + LSQ_ERROR("cannot open %s for reading: %s", filename, strerror(errno)); + return NULL; + } + + if (0 != fstat(fd, &st)) + { + LSQ_ERROR("cannot fstat(%s) failed: %s", filename, strerror(errno)); + (void) close(fd); + return NULL; + } + struct reader_ctx *ctx = malloc(sizeof(*ctx)); + ctx->file_size = st.st_size; + ctx->nread = 0; + ctx->fd = fd; + return ctx; +} + + +void +destroy_lsquic_reader_ctx (struct reader_ctx *ctx) +{ + (void) close(ctx->fd); + free(ctx); +} + + +int +sport_set_token (struct service_port *sport, const char *token_str) +{ + static const unsigned char c2b[0x100] = + { + [(int)'0'] = 0, + [(int)'1'] = 1, + [(int)'2'] = 2, + [(int)'3'] = 3, + [(int)'4'] = 4, + [(int)'5'] = 5, + [(int)'6'] = 6, + [(int)'7'] = 7, + [(int)'8'] = 8, + [(int)'9'] = 9, + [(int)'A'] = 0xA, + [(int)'B'] = 0xB, + [(int)'C'] = 0xC, + [(int)'D'] = 0xD, + [(int)'E'] = 0xE, + [(int)'F'] = 0xF, + [(int)'a'] = 0xA, + [(int)'b'] = 0xB, + [(int)'c'] = 0xC, + [(int)'d'] = 0xD, + [(int)'e'] = 0xE, + [(int)'f'] = 0xF, + }; + unsigned char *token; + int len, i; + + len = strlen(token_str); + token = malloc(len / 2); + if (!token) + return -1; + for (i = 0; i < len / 2; ++i) + token[i] = (c2b[ (int) token_str[i * 2] ] << 4) + | c2b[ (int) token_str[i * 2 + 1] ]; + + free(sport->sp_token_buf); + sport->sp_token_buf = token; + sport->sp_token_sz = len / 2; + return 0; +} + + +int +header_set_ptr (struct lsxpack_header *hdr, struct header_buf *header_buf, + const char *name, size_t name_len, + const char *val, size_t val_len) +{ + if (header_buf->off + name_len + val_len <= sizeof(header_buf->buf)) + { + memcpy(header_buf->buf + header_buf->off, name, name_len); + memcpy(header_buf->buf + header_buf->off + name_len, val, val_len); + lsxpack_header_set_offset2(hdr, header_buf->buf + header_buf->off, + 0, name_len, name_len, val_len); + header_buf->off += name_len + val_len; + return 0; + } + else + return -1; +} diff --git a/external/lsquic/bin/test_common.h b/external/lsquic/bin/test_common.h new file mode 100644 index 0000000..60fb5f3 --- /dev/null +++ b/external/lsquic/bin/test_common.h @@ -0,0 +1,154 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * Test client's and server's common components. + */ + +#ifndef TEST_COMMON_H +#define TEST_COMMON_H 1 + +#if __linux__ +# include /* For IFNAMSIZ */ +#endif + +#ifdef WIN32 +#include +#include +#endif + +struct lsquic_engine; +struct lsquic_engine_settings; +struct lsquic_out_spec; +struct event_base; +struct event; +struct packets_in; +struct lsquic_conn; +struct prog; +struct reader_ctx; +struct lsxpack_header; + +#ifndef WIN32 +# define SOCKOPT_VAL int +# define SOCKET_TYPE int +# define CLOSE_SOCKET close +# define CHAR_CAST +#else +# define SOCKOPT_VAL DWORD +# define SOCKET_TYPE SOCKET +# define CLOSE_SOCKET closesocket +# define CHAR_CAST (char *) +#endif + +enum sport_flags +{ +#if LSQUIC_DONTFRAG_SUPPORTED + SPORT_FRAGMENT_OK = (1 << 0), +#endif + SPORT_SET_SNDBUF = (1 << 1), /* SO_SNDBUF */ + SPORT_SET_RCVBUF = (1 << 2), /* SO_RCVBUF */ + SPORT_SERVER = (1 << 3), + SPORT_CONNECT = (1 << 4), +}; + +struct service_port { + TAILQ_ENTRY(service_port) next_sport; +#ifndef WIN32 + int fd; +#else + SOCKET fd; +#endif +#if __linux__ + uint32_t n_dropped; + int drop_init; + char if_name[IFNAMSIZ]; +#endif + struct event *ev; + struct lsquic_engine *engine; + void *conn_ctx; + char host[80]; + struct sockaddr_storage sas; + struct sockaddr_storage sp_local_addr; + struct packets_in *packs_in; + enum sport_flags sp_flags; + SOCKOPT_VAL sp_sndbuf; /* If SPORT_SET_SNDBUF is set */ + SOCKOPT_VAL sp_rcvbuf; /* If SPORT_SET_RCVBUF is set */ + struct prog *sp_prog; + unsigned char *sp_token_buf; + size_t sp_token_sz; +}; + +TAILQ_HEAD(sport_head, service_port); + +struct service_port * +sport_new (const char *optarg, struct prog *); + +void +sport_destroy (struct service_port *); + +int +sport_init_server (struct service_port *, struct lsquic_engine *, + struct event_base *); + +int +sport_init_client (struct service_port *, struct lsquic_engine *, + struct event_base *); + +int +sport_packets_out (void *ctx, const struct lsquic_out_spec *, unsigned count); + +int +sport_set_token (struct service_port *, const char *); + +int +set_engine_option (struct lsquic_engine_settings *, + int *version_cleared, const char *name_value); + +struct packout_buf; + +struct packout_buf_allocator +{ + unsigned n_out, /* Number of buffers outstanding */ + max; /* Maximum outstanding. Zero mean no limit */ + SLIST_HEAD(, packout_buf) free_packout_bufs; +}; + +void +pba_init (struct packout_buf_allocator *, unsigned max); + +void * +pba_allocate (void *packout_buf_allocator, void*, lsquic_conn_ctx_t *, unsigned short, char); + +void +pba_release (void *packout_buf_allocator, void *, void *obj, char); + +void +pba_cleanup (struct packout_buf_allocator *); + +void +print_conn_info (const struct lsquic_conn *conn); + +size_t +test_reader_size (void *void_ctx); + +size_t +test_reader_read (void *void_ctx, void *buf, size_t count); + +struct reader_ctx * +create_lsquic_reader_ctx (const char *filename); + +void +destroy_lsquic_reader_ctx (struct reader_ctx *ctx); + +#define LITESPEED_ID "lsquic/" LSQUIC_VERSION_STR + +struct header_buf +{ + unsigned off; + char buf[UINT16_MAX]; +}; + +int +header_set_ptr (struct lsxpack_header *hdr, struct header_buf *header_buf, + const char *name, size_t name_len, + const char *val, size_t val_len); + +#endif diff --git a/external/lsquic/bin/test_config.h.in b/external/lsquic/bin/test_config.h.in new file mode 100644 index 0000000..1c2ffba --- /dev/null +++ b/external/lsquic/bin/test_config.h.in @@ -0,0 +1,23 @@ +#ifndef LSQUIC_CONFIG_H +#define LSQUIC_CONFIG_H + +#cmakedefine HAVE_SENDMMSG 1 +#cmakedefine HAVE_RECVMMSG 1 +#cmakedefine HAVE_OPEN_MEMSTREAM 1 +#cmakedefine HAVE_IP_DONTFRAG 1 +#cmakedefine HAVE_IP_MTU_DISCOVER 1 +#cmakedefine HAVE_REGEX 1 +#cmakedefine HAVE_PREADV 1 + +#define LSQUIC_DONTFRAG_SUPPORTED (HAVE_IP_DONTFRAG || HAVE_IP_MTU_DISCOVER || HAVE_IPV6_MTU_DISCOVER) + +/* TODO: presumably it's the same on FreeBSD, test it. + * See https://github.com/quicwg/base-drafts/wiki/ECN-in-QUIC + */ +#if __linux__ || defined(__FreeBSD__) +#define ECN_SUPPORTED 1 +#else +#define ECN_SUPPORTED 0 +#endif + +#endif diff --git a/external/lsquic/docs/apiref.rst b/external/lsquic/docs/apiref.rst new file mode 100644 index 0000000..8453086 --- /dev/null +++ b/external/lsquic/docs/apiref.rst @@ -0,0 +1,2368 @@ +API Reference +============= + +.. highlight:: c + +Preliminaries +------------- + +All declarations are in :file:`lsquic.h`, so it is enough to + +:: + + #include + +in each source file. + + +Library Version +--------------- + +LSQUIC follows the following versioning model. The version number +has the form MAJOR.MINOR.PATCH, where + +- MAJOR changes when a large redesign occurs; +- MINOR changes when an API change or another significant change occurs; and +- PATCH changes when a bug is fixed or another small, API-compatible change occurs. + +QUIC Versions +------------- + +LSQUIC supports two types of QUIC protocol: Google QUIC and IETF QUIC. The +former will at some point become obsolete, while the latter is still being +developed by the IETF. Both types are included in a single enum: + +.. type:: enum lsquic_version + + .. member:: LSQVER_043 + + Google QUIC version Q043 + + .. member:: LSQVER_046 + + Google QUIC version Q046 + + .. member:: LSQVER_050 + + Google QUIC version Q050 + + .. member:: LSQVER_ID27 + + IETF QUIC version ID (Internet-Draft) 27; this version is deprecated. + + .. member:: LSQVER_ID29 + + IETF QUIC version ID 29 + + .. member:: LSQVER_ID34 + + IETF QUIC version ID 34 + + .. member:: LSQVER_I001 + + IETF QUIC version 1. (This version is disabled by default until + the QUIC RFC is released). + + .. member:: N_LSQVER + + Special value indicating the number of versions in the enum. It + may be used as argument to :func:`lsquic_engine_connect()`. + +Several version lists (as bitmasks) are defined in :file:`lsquic.h`: + +.. macro:: LSQUIC_SUPPORTED_VERSIONS + +List of all supported versions. + +.. macro:: LSQUIC_FORCED_TCID0_VERSIONS + +List of versions in which the server never includes CID in short packets. + +.. macro:: LSQUIC_EXPERIMENTAL_VERSIONS + +Experimental versions. + +.. macro:: LSQUIC_DEPRECATED_VERSIONS + +Deprecated versions. + +.. macro:: LSQUIC_GQUIC_HEADER_VERSIONS + +Versions that have Google QUIC-like headers. Only Q043 remains in this +list. + +.. macro:: LSQUIC_IETF_VERSIONS + +IETF QUIC versions. + +.. macro:: LSQUIC_IETF_DRAFT_VERSIONS + +IETF QUIC *draft* versions. When IETF QUIC v1 is released, it will not +be included in this list. + +LSQUIC Types +------------ + +LSQUIC declares several types used by many of its public functions. They are: + +.. type:: lsquic_engine_t + + Instance of LSQUIC engine. + +.. type:: lsquic_conn_t + + QUIC connection. + +.. type:: lsquic_stream_t + + QUIC stream. + +.. type:: lsquic_stream_id_t + + Stream ID. + +.. type:: lsquic_conn_ctx_t + + Connection context. This is the return value of :member:`lsquic_stream_if.on_new_conn`. + To LSQUIC, this is just an opaque pointer. User code is expected to + use it for its own purposes. + +.. type:: lsquic_stream_ctx_t + + Stream context. This is the return value of :func:`on_new_stream()`. + To LSQUIC, this is just an opaque pointer. User code is expected to + use it for its own purposes. + +.. type:: lsquic_http_headers_t + + HTTP headers + +Library Initialization +---------------------- + +Before using the library, internal structures must be initialized using +the global initialization function: + +:: + + if (0 == lsquic_global_init(LSQUIC_GLOBAL_CLIENT|LSQUIC_GLOBAL_SERVER)) + /* OK, do something useful */ + ; + +This call only needs to be made once. Afterwards, any number of LSQUIC +engines may be instantiated. + +After a process is done using LSQUIC, it should clean up: + +:: + + lsquic_global_cleanup(); + +Logging +------- + +.. type:: struct lsquic_logger_if + + .. member:: int (*log_buf)(void *logger_ctx, const char *buf, size_t len) + +.. function:: void lsquic_logger_init (const struct lsquic_logger_if *logger_if, void *logger_ctx, enum lsquic_logger_timestamp_style) + + Call this if you want to do something with LSQUIC log messages, as they are thrown out by default. + +.. function:: int lsquic_set_log_level (const char *log_level) + + Set log level for all LSQUIC modules. + + :param log_level: Acceptable values are debug, info, notice, warning, error, alert, emerg, crit (case-insensitive). + :return: 0 on success or -1 on failure (invalid log level). + +.. function:: int lsquic_logger_lopt (const char *log_specs) + + Set log level for a particular module or several modules. + + :param log_specs: + + One or more "module=level" specifications serapated by comma. + For example, "event=debug,engine=info". See `List of Log Modules`_ + +Engine Instantiation and Destruction +------------------------------------ + +To use the library, an instance of the ``struct lsquic_engine`` needs to be +created: + +.. function:: lsquic_engine_t *lsquic_engine_new (unsigned flags, const struct lsquic_engine_api *api) + + Create a new engine. + + :param flags: This is is a bitmask of :macro:`LSENG_SERVER` and + :macro:`LSENG_HTTP`. + :param api: Pointer to an initialized :type:`lsquic_engine_api`. + + The engine can be instantiated either in server mode (when ``LSENG_SERVER`` + is set) or client mode. If you need both server and client in your program, + create two engines (or as many as you'd like). + + Specifying ``LSENG_HTTP`` flag enables the HTTP functionality: HTTP/2-like + for Google QUIC connections and HTTP/3 functionality for IETF QUIC + connections. + +.. macro:: LSENG_SERVER + + One of possible bitmask values passed as first argument to + :type:`lsquic_engine_new`. When set, the engine instance + will be in the server mode. + +.. macro:: LSENG_HTTP + + One of possible bitmask values passed as first argument to + :type:`lsquic_engine_new`. When set, the engine instance + will enable HTTP functionality. + +.. function:: void lsquic_engine_cooldown (lsquic_engine_t *engine) + + This function closes all mini connections and marks all full connections + as going away. In server mode, this also causes the engine to stop + creating new connections. + +.. function:: void lsquic_engine_destroy (lsquic_engine_t *engine) + + Destroy engine and all its resources. + +Engine Callbacks +---------------- + +``struct lsquic_engine_api`` contains a few mandatory members and several +optional members. + +.. type:: struct lsquic_engine_api + + .. member:: const struct lsquic_stream_if *ea_stream_if + .. member:: void *ea_stream_if_ctx + + ``ea_stream_if`` is mandatory. This structure contains pointers + to callbacks that handle connections and stream events. + + .. member:: lsquic_packets_out_f ea_packets_out + .. member:: void *ea_packets_out_ctx + + ``ea_packets_out`` is used by the engine to send packets. + + .. member:: const struct lsquic_engine_settings *ea_settings + + If ``ea_settings`` is set to NULL, the engine uses default settings + (see :func:`lsquic_engine_init_settings()`) + + .. member:: lsquic_lookup_cert_f ea_lookup_cert + .. member:: void *ea_cert_lu_ctx + + Look up certificate. Mandatory in server mode. + + .. member:: struct ssl_ctx_st * (*ea_get_ssl_ctx)(void *peer_ctx, const struct sockaddr *local) + + Get SSL_CTX associated with a peer context. Mandatory in server + mode. This is used for default values for SSL instantiation. + + .. member:: const struct lsquic_hset_if *ea_hsi_if + .. member:: void *ea_hsi_ctx + + Optional header set interface. If not specified, the incoming headers + are converted to HTTP/1.x format and are read from stream and have to + be parsed again. + + .. member:: const struct lsquic_shared_hash_if *ea_shi + .. member:: void *ea_shi_ctx + + Shared hash interface can be used to share state between several + processes of a single QUIC server. + + .. member:: const struct lsquic_packout_mem_if *ea_pmi + .. member:: void *ea_pmi_ctx + + Optional set of functions to manage memory allocation for outgoing + packets. + + .. member:: lsquic_cids_update_f ea_new_scids + .. member:: lsquic_cids_update_f ea_live_scids + .. member:: lsquic_cids_update_f ea_old_scids + .. member:: void *ea_cids_update_ctx + + In a multi-process setup, it may be useful to observe the CID + lifecycle. This optional set of callbacks makes it possible. + + .. member:: const char *ea_alpn + + The optional ALPN string is used by the client if :macro:`LSENG_HTTP` + is not set. + + .. member:: void (*ea_generate_scid)(lsquic_conn_t *, lsquic_cid_t *, unsigned) + + Optional interface to control the creation of connection IDs. + +.. _apiref-engine-settings: + +Engine Settings +--------------- + +Engine behavior can be controlled by several settings specified in the +settings structure: + +.. type:: struct lsquic_engine_settings + + .. member:: unsigned es_versions + + This is a bit mask wherein each bit corresponds to a value in + :type:`lsquic_version`. Client starts negotiating with the highest + version and goes down. Server supports either of the versions + specified here. This setting applies to both Google and IETF QUIC. + + The default value is :macro:`LSQUIC_DF_VERSIONS`. + + .. member:: unsigned es_cfcw + + Initial default connection flow control window. + + In server mode, per-connection values may be set lower than + this if resources are scarce. + + Do not set es_cfcw and es_sfcw lower than :macro:`LSQUIC_MIN_FCW`. + + .. member:: unsigned es_sfcw + + Initial default stream flow control window. + + In server mode, per-connection values may be set lower than + this if resources are scarce. + + Do not set es_cfcw and es_sfcw lower than :macro:`LSQUIC_MIN_FCW`. + + .. member:: unsigned es_max_cfcw + + This value is used to specify maximum allowed value CFCW is allowed + to reach due to window auto-tuning. By default, this value is zero, + which means that CFCW is not allowed to increase from its initial + value. + + This setting is applicable to both gQUIC and IETF QUIC. + + See :member:`lsquic_engine_settings.es_cfcw`, + :member:`lsquic_engine_settings.es_init_max_data`. + + .. member:: unsigned es_max_sfcw + + This value is used to specify the maximum value stream flow control + window is allowed to reach due to auto-tuning. By default, this + value is zero, meaning that auto-tuning is turned off. + + This setting is applicable to both gQUIC and IETF QUIC. + + See :member:`lsquic_engine_settings.es_sfcw`, + :member:`lsquic_engine_settings.es_init_max_stream_data_bidi_local`, + :member:`lsquic_engine_settings.es_init_max_stream_data_bidi_remote`. + + .. member:: unsigned es_max_streams_in + + Maximum incoming streams, a.k.a. MIDS. + + Google QUIC only. + + .. member:: unsigned long es_handshake_to + + Handshake timeout in microseconds. + + For client, this can be set to an arbitrary value (zero turns the + timeout off). + + For server, this value is limited to about 16 seconds. Do not set + it to zero. + + Defaults to :macro:`LSQUIC_DF_HANDSHAKE_TO`. + + .. member:: unsigned long es_idle_conn_to + + Idle connection timeout, a.k.a ICSL, in microseconds; GQUIC only. + + Defaults to :macro:`LSQUIC_DF_IDLE_CONN_TO` + + .. member:: int es_silent_close + + When true, ``CONNECTION_CLOSE`` is not sent when connection times out. + The server will also not send a reply to client's ``CONNECTION_CLOSE``. + + Corresponds to SCLS (silent close) gQUIC option. + + .. member:: unsigned es_max_header_list_size + + This corresponds to SETTINGS_MAX_HEADER_LIST_SIZE + (:rfc:`7540#section-6.5.2`). 0 means no limit. Defaults + to :func:`LSQUIC_DF_MAX_HEADER_LIST_SIZE`. + + .. member:: const char *es_ua + + UAID -- User-Agent ID. Defaults to :macro:`LSQUIC_DF_UA`. + + Google QUIC only. + + + More parameters for server + + .. member:: unsigned es_max_inchoate + + Maximum number of incoming connections in inchoate state. (In + other words, maximum number of mini connections.) + + This is only applicable in server mode. + + Defaults to :macro:`LSQUIC_DF_MAX_INCHOATE`. + + .. member:: int es_support_push + + Setting this value to 0 means that + + For client: + + 1. we send a SETTINGS frame to indicate that we do not support server + push; and + 2. all incoming pushed streams get reset immediately. + + (For maximum effect, set es_max_streams_in to 0.) + + For server: + + 1. :func:`lsquic_conn_push_stream()` will return -1. + + .. member:: int es_support_tcid0 + + If set to true value, the server will not include connection ID in + outgoing packets if client's CHLO specifies TCID=0. + + For client, this means including TCID=0 into CHLO message. Note that + in this case, the engine tracks connections by the + (source-addr, dest-addr) tuple, thereby making it necessary to create + a socket for each connection. + + This option has no effect in Q046 and Q050, as the server never includes + CIDs in the short packets. + + This setting is applicable to gQUIC only. + + The default is :func:`LSQUIC_DF_SUPPORT_TCID0`. + + .. member:: int es_support_nstp + + Q037 and higher support "No STOP_WAITING frame" mode. When set, the + client will send NSTP option in its Client Hello message and will not + sent STOP_WAITING frames, while ignoring incoming STOP_WAITING frames, + if any. Note that if the version negotiation happens to downgrade the + client below Q037, this mode will *not* be used. + + This option does not affect the server, as it must support NSTP mode + if it was specified by the client. + + Defaults to :macro:`LSQUIC_DF_SUPPORT_NSTP`. + + .. member:: int es_honor_prst + + If set to true value, the library will drop connections when it + receives corresponding Public Reset packet. The default is to + ignore these packets. + + The default is :macro:`LSQUIC_DF_HONOR_PRST`. + + .. member:: int es_send_prst + + If set to true value, the library will send Public Reset packets + in response to incoming packets with unknown Connection IDs. + + The default is :macro:`LSQUIC_DF_SEND_PRST`. + + .. member:: unsigned es_progress_check + + A non-zero value enables internal checks that identify suspected + infinite loops in user `on_read` and `on_write` callbacks + and break them. An infinite loop may occur if user code keeps + on performing the same operation without checking status, e.g. + reading from a closed stream etc. + + The value of this parameter is as follows: should a callback return + this number of times in a row without making progress (that is, + reading, writing, or changing stream state), loop break will occur. + + The defaut value is :macro:`LSQUIC_DF_PROGRESS_CHECK`. + + .. member:: int es_rw_once + + A non-zero value make stream dispatch its read-write events once + per call. + + When zero, read and write events are dispatched until the stream + is no longer readable or writeable, respectively, or until the + user signals unwillingness to read or write using + :func:`lsquic_stream_wantread()` or :func:`lsquic_stream_wantwrite()` + or shuts down the stream. + + The default value is :macro:`LSQUIC_DF_RW_ONCE`. + + .. member:: unsigned es_proc_time_thresh + + If set, this value specifies the number of microseconds that + :func:`lsquic_engine_process_conns()` and + :func:`lsquic_engine_send_unsent_packets()` are allowed to spend + before returning. + + This is not an exact science and the connections must make + progress, so the deadline is checked after all connections get + a chance to tick (in the case of :func:`lsquic_engine_process_conns())` + and at least one batch of packets is sent out. + + When processing function runs out of its time slice, immediate + calls to :func:`lsquic_engine_has_unsent_packets()` return false. + + The default value is :func:`LSQUIC_DF_PROC_TIME_THRESH`. + + .. member:: int es_pace_packets + + If set to true, packet pacing is implemented per connection. + + The default value is :func:`LSQUIC_DF_PACE_PACKETS`. + + .. member:: unsigned es_clock_granularity + + Clock granularity information is used by the pacer. The value + is in microseconds; default is :func:`LSQUIC_DF_CLOCK_GRANULARITY`. + + .. member:: unsigned es_init_max_data + + Initial max data. + + This is a transport parameter. + + Depending on the engine mode, the default value is either + :macro:`LSQUIC_DF_INIT_MAX_DATA_CLIENT` or + :macro:`LSQUIC_DF_INIT_MAX_DATA_SERVER`. + + IETF QUIC only. + + .. member:: unsigned es_init_max_stream_data_bidi_remote + + Initial max stream data. + + This is a transport parameter. + + Depending on the engine mode, the default value is either + :macro:`LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_REMOTE_CLIENT` or + :macro:`LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_REMOTE_SERVER`. + + IETF QUIC only. + + .. member:: unsigned es_init_max_stream_data_bidi_local + + Initial max stream data. + + This is a transport parameter. + + Depending on the engine mode, the default value is either + :macro:`LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_LOCAL_CLIENT` or + :macro:`LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_LOCAL_SERVER`. + + IETF QUIC only. + + .. member:: unsigned es_init_max_stream_data_uni + + Initial max stream data for unidirectional streams initiated + by remote endpoint. + + This is a transport parameter. + + Depending on the engine mode, the default value is either + :macro:`LSQUIC_DF_INIT_MAX_STREAM_DATA_UNI_CLIENT` or + :macro:`LSQUIC_DF_INIT_MAX_STREAM_DATA_UNI_SERVER`. + + IETF QUIC only. + + .. member:: unsigned es_init_max_streams_bidi + + Maximum initial number of bidirectional stream. + + This is a transport parameter. + + Default value is :macro:`LSQUIC_DF_INIT_MAX_STREAMS_BIDI`. + + IETF QUIC only. + + .. member:: unsigned es_init_max_streams_uni + + Maximum initial number of unidirectional stream. + + This is a transport parameter. + + Default value is :macro:`LSQUIC_DF_INIT_MAX_STREAMS_UNI_CLIENT` or + :macro:`LSQUIC_DF_INIT_MAX_STREAM_DATA_UNI_SERVER`. + + IETF QUIC only. + + .. member:: unsigned es_idle_timeout + + Idle connection timeout. + + This is a transport parameter. + + (Note: `es_idle_conn_to` is not reused because it is in microseconds, + which, I now realize, was not a good choice. Since it will be + obsoleted some time after the switchover to IETF QUIC, we do not + have to keep on using strange units.) + + Default value is :macro:`LSQUIC_DF_IDLE_TIMEOUT`. + + Maximum value is 600 seconds. + + IETF QUIC only. + + .. member:: unsigned es_ping_period + + Ping period. If set to non-zero value, the connection will generate and + send PING frames in the absence of other activity. + + By default, the server does not send PINGs and the period is set to zero. + The client's defaut value is :macro:`LSQUIC_DF_PING_PERIOD`. + + IETF QUIC only. + + .. member:: unsigned es_scid_len + + Source Connection ID length. Valid values are 0 through 20, inclusive. + + Default value is :macro:`LSQUIC_DF_SCID_LEN`. + + IETF QUIC only. + + .. member:: unsigned es_scid_iss_rate + + Source Connection ID issuance rate. This field is measured in CIDs + per minute. Using value 0 indicates that there is no rate limit for + CID issuance. + + Default value is :macro:`LSQUIC_DF_SCID_ISS_RATE`. + + IETF QUIC only. + + .. member:: unsigned es_qpack_dec_max_size + + Maximum size of the QPACK dynamic table that the QPACK decoder will + use. + + The default is :macro:`LSQUIC_DF_QPACK_DEC_MAX_SIZE`. + + IETF QUIC only. + + .. member:: unsigned es_qpack_dec_max_blocked + + Maximum number of blocked streams that the QPACK decoder is willing + to tolerate. + + The default is :macro:`LSQUIC_DF_QPACK_DEC_MAX_BLOCKED`. + + IETF QUIC only. + + .. member:: unsigned es_qpack_enc_max_size + + Maximum size of the dynamic table that the encoder is willing to use. + The actual size of the dynamic table will not exceed the minimum of + this value and the value advertized by peer. + + The default is :macro:`LSQUIC_DF_QPACK_ENC_MAX_SIZE`. + + IETF QUIC only. + + .. member:: unsigned es_qpack_enc_max_blocked + + Maximum number of blocked streams that the QPACK encoder is willing + to risk. The actual number of blocked streams will not exceed the + minimum of this value and the value advertized by peer. + + The default is :macro:`LSQUIC_DF_QPACK_ENC_MAX_BLOCKED`. + + IETF QUIC only. + + .. member:: int es_ecn + + Enable ECN support. + + The default is :macro:`LSQUIC_DF_ECN` + + IETF QUIC only. + + .. member:: int es_allow_migration + + Allow peer to migrate connection. + + The default is :macro:`LSQUIC_DF_ALLOW_MIGRATION` + + IETF QUIC only. + + .. member:: unsigned es_cc_algo + + Congestion control algorithm to use. + + - 0: Use default (:macro:`LSQUIC_DF_CC_ALGO`) + - 1: Cubic + - 2: BBRv1 + - 3: Adaptive congestion control. + + Adaptive congestion control adapts to the environment. It figures + out whether to use Cubic or BBRv1 based on the RTT. + + .. member:: unsigned es_cc_rtt_thresh + + Congestion controller RTT threshold in microseconds. + + Adaptive congestion control uses BBRv1 until RTT is determined. At + that point a permanent choice of congestion controller is made. If + RTT is smaller than or equal to + :member:`lsquic_engine_settings.es_cc_rtt_thresh`, congestion + controller is switched to Cubic; otherwise, BBRv1 is picked. + + The default value is :macro:`LSQUIC_DF_CC_RTT_THRESH` + + .. member:: int es_ql_bits + + Use QL loss bits. Allowed values are: + + - 0: Do not use loss bits + - 1: Allow loss bits + - 2: Allow and send loss bits + + Default value is :macro:`LSQUIC_DF_QL_BITS` + + .. member:: int es_spin + + Enable spin bit. Allowed values are 0 and 1. + + Default value is :macro:`LSQUIC_DF_SPIN` + + .. member:: int es_delayed_acks + + Enable delayed ACKs extension. Allowed values are 0 and 1. + + Default value is :macro:`LSQUIC_DF_DELAYED_ACKS` + + .. member:: int es_timestamps + + Enable timestamps extension. Allowed values are 0 and 1. + + Default value is @ref LSQUIC_DF_TIMESTAMPS + + .. member:: unsigned short es_max_udp_payload_size_rx + + Maximum packet size we are willing to receive. This is sent to + peer in transport parameters: the library does not enforce this + limit for incoming packets. + + If set to zero, limit is not set. + + Default value is :macro:`LSQUIC_DF_MAX_UDP_PAYLOAD_SIZE_RX` + + .. member:: int es_dplpmtud + + If set to true value, enable DPLPMTUD -- Datagram Packetization + Layer Path MTU Discovery. + + Default value is :macro:`LSQUIC_DF_DPLPMTUD` + + .. member:: unsigned short es_base_plpmtu + + PLPMTU size expected to work for most paths. + + If set to zero, this value is calculated based on QUIC and IP versions. + + Default value is :macro:`LSQUIC_DF_BASE_PLPMTU` + + .. member:: unsigned short es_max_plpmtu + + Largest PLPMTU size the engine will try. + + If set to zero, picking this value is left to the engine. + + Default value is :macro:`LSQUIC_DF_MAX_PLPMTU` + + .. member:: unsigned es_mtu_probe_timer + + This value specifies how long the DPLPMTUD probe timer is, in + milliseconds. :rfc:`8899` says: + + PROBE_TIMER: The PROBE_TIMER is configured to expire after a period + longer than the maximum time to receive an acknowledgment to a + probe packet. This value MUST NOT be smaller than 1 second, and + SHOULD be larger than 15 seconds. Guidance on selection of the + timer value are provided in section 3.1.1 of the UDP Usage + Guidelines :rfc:`8085#section-3.1`. + + If set to zero, the default is used. + + Default value is :macro:`LSQUIC_DF_MTU_PROBE_TIMER` + + .. member:: unsigned es_noprogress_timeout + + No progress timeout. + + If connection does not make progress for this number of seconds, the + connection is dropped. Here, progress is defined as user streams + being written to or read from. + + If this value is zero, this timeout is disabled. + + Default value is :macro:`LSQUIC_DF_NOPROGRESS_TIMEOUT_SERVER` in server + mode and :macro:`LSQUIC_DF_NOPROGRESS_TIMEOUT_CLIENT` in client mode. + + .. member:: int es_grease_quic_bit + + Enable the "QUIC bit grease" extension. When set to a true value, + lsquic will grease the QUIC bit on the outgoing QUIC packets if + the peer sent the "grease_quic_bit" transport parameter. + + Default value is :macro:`LSQUIC_DF_GREASE_QUIC_BIT` + + .. member:: int es_datagrams + + Enable datagrams extension. Allowed values are 0 and 1. + + Default value is :macro:`LSQUIC_DF_DATAGRAMS` + + .. member:: int es_optimistic_nat + + If set to true, changes in peer port are assumed to be due to a + benign NAT rebinding and path characteristics -- MTU, RTT, and + CC state -- are not reset. + + Default value is :macro:`LSQUIC_DF_OPTIMISTIC_NAT` + + .. member:: int es_ext_http_prio + + If set to true, Extensible HTTP Priorities are enabled. This + is HTTP/3-only setting. + + Default value is :macro:`LSQUIC_DF_EXT_HTTP_PRIO` + + .. member:: int es_qpack_experiment + + If set to 1, QPACK statistics are logged per connection. + + If set to 2, QPACK experiments are run. In this mode, encoder + and decoder setting values are randomly selected (from the range + [0, whatever is specified in es_qpack_(enc|dec)_*]) and these + values along with compression ratio and user agent are logged at + NOTICE level when connection is destroyed. The purpose of these + experiments is to use compression performance statistics to figure + out a good set of default values. + + Default value is :macro:`LSQUIC_DF_QPACK_EXPERIMENT` + + .. member:: int es_delay_onclose + + When set to true, :member:`lsquic_stream_if.on_close` will be delayed until the + peer acknowledges all data sent on the stream. (Or until the connection + is destroyed in some manner -- either explicitly closed by the user or + as a result of an engine shutdown.) To find out whether all data written + to peer has been acknowledged, use `lsquic_stream_has_unacked_data()`. + + Default value is :macro:`LSQUIC_DF_DELAY_ONCLOSE` + + .. member:: int es_max_batch_size + + If set to a non-zero value, specifies maximum batch size. (The + batch of packets passed to :member:`lsquic_engine_api.ea_packets_out`). + Must be no larger than 1024. + + Default value is :macro:`LSQUIC_DF_MAX_BATCH_SIZE` + + .. member:: int es_check_tp_sanity + + When true, sanity checks are performed on peer's transport parameter + values. If some limits are set suspiciously low, the connection won't + be established. + + Default value is :macro:`LSQUIC_DF_CHECK_TP_SANITY` + +To initialize the settings structure to library defaults, use the following +convenience function: + +.. function:: lsquic_engine_init_settings (struct lsquic_engine_settings *, unsigned flags) + + ``flags`` is a bitmask of ``LSENG_SERVER`` and ``LSENG_HTTP`` + +After doing this, change just the settings you'd like. To check whether +the values are correct, another convenience function is provided: + +.. function:: lsquic_engine_check_settings (const struct lsquic_engine_settings *, unsigned flags, char *err_buf, size_t err_buf_sz) + + Check settings for errors. Return 0 if settings are OK, -1 otherwise. + + If `err_buf` and `err_buf_sz` are set, an error string is written to the + buffers. + +The following macros in :file:`lsquic.h` specify default values: + +*Note that, despite our best efforts, documentation may accidentally get +out of date. Please check your :file:`lsquic.h` for actual values.* + +.. macro:: LSQUIC_MIN_FCW + + Minimum flow control window is set to 16 KB for both client and server. + This means we can send up to this amount of data before handshake gets + completed. + +.. macro:: LSQUIC_DF_VERSIONS + + By default, deprecated and experimental versions are not included. + +.. macro:: LSQUIC_DF_CFCW_SERVER +.. macro:: LSQUIC_DF_CFCW_CLIENT +.. macro:: LSQUIC_DF_SFCW_SERVER +.. macro:: LSQUIC_DF_SFCW_CLIENT +.. macro:: LSQUIC_DF_MAX_STREAMS_IN + +.. macro:: LSQUIC_DF_INIT_MAX_DATA_SERVER +.. macro:: LSQUIC_DF_INIT_MAX_DATA_CLIENT +.. macro:: LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_REMOTE_SERVER +.. macro:: LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_LOCAL_SERVER +.. macro:: LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_REMOTE_CLIENT +.. macro:: LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_LOCAL_CLIENT +.. macro:: LSQUIC_DF_INIT_MAX_STREAMS_BIDI +.. macro:: LSQUIC_DF_INIT_MAX_STREAMS_UNI_CLIENT +.. macro:: LSQUIC_DF_INIT_MAX_STREAMS_UNI_SERVER +.. macro:: LSQUIC_DF_INIT_MAX_STREAM_DATA_UNI_CLIENT +.. macro:: LSQUIC_DF_INIT_MAX_STREAM_DATA_UNI_SERVER + +.. macro:: LSQUIC_DF_IDLE_TIMEOUT + + Default idle connection timeout is 30 seconds. + +.. macro:: LSQUIC_DF_PING_PERIOD + + Default ping period is 15 seconds. + +.. macro:: LSQUIC_DF_HANDSHAKE_TO + + Default handshake timeout is 10,000,000 microseconds (10 seconds). + +.. macro:: LSQUIC_DF_IDLE_CONN_TO + + Default idle connection timeout is 30,000,000 microseconds. + +.. macro:: LSQUIC_DF_SILENT_CLOSE + + By default, connections are closed silenty when they time out (no + ``CONNECTION_CLOSE`` frame is sent) and the server does not reply with + own ``CONNECTION_CLOSE`` after it receives one. + +.. macro:: LSQUIC_DF_MAX_HEADER_LIST_SIZE + + Default value of maximum header list size. If set to non-zero value, + SETTINGS_MAX_HEADER_LIST_SIZE will be sent to peer after handshake is + completed (assuming the peer supports this setting frame type). + +.. macro:: LSQUIC_DF_UA + + Default value of UAID (user-agent ID). + +.. macro:: LSQUIC_DF_MAX_INCHOATE + + Default is 1,000,000. + +.. macro:: LSQUIC_DF_SUPPORT_NSTP + + NSTP is not used by default. + +.. macro:: LSQUIC_DF_SUPPORT_PUSH + + Push promises are supported by default. + +.. macro:: LSQUIC_DF_SUPPORT_TCID0 + + Support for TCID=0 is enabled by default. + +.. macro:: LSQUIC_DF_HONOR_PRST + + By default, LSQUIC ignores Public Reset packets. + +.. macro:: LSQUIC_DF_SEND_PRST + + By default, LSQUIC will not send Public Reset packets in response to + packets that specify unknown connections. + +.. macro:: LSQUIC_DF_PROGRESS_CHECK + + By default, infinite loop checks are turned on. + +.. macro:: LSQUIC_DF_RW_ONCE + + By default, read/write events are dispatched in a loop. + +.. macro:: LSQUIC_DF_PROC_TIME_THRESH + + By default, the threshold is not enabled. + +.. macro:: LSQUIC_DF_PACE_PACKETS + + By default, packets are paced + +.. macro:: LSQUIC_DF_CLOCK_GRANULARITY + + Default clock granularity is 1000 microseconds. + +.. macro:: LSQUIC_DF_SCID_LEN + + The default value is 8 for simplicity and speed. + +.. macro:: LSQUIC_DF_SCID_ISS_RATE + + The default value is 60 CIDs per minute. + +.. macro:: LSQUIC_DF_QPACK_DEC_MAX_BLOCKED + + Default value is 100. + +.. macro:: LSQUIC_DF_QPACK_DEC_MAX_SIZE + + Default value is 4,096 bytes. + +.. macro:: LSQUIC_DF_QPACK_ENC_MAX_BLOCKED + + Default value is 100. + +.. macro:: LSQUIC_DF_QPACK_ENC_MAX_SIZE + + Default value is 4,096 bytes. + +.. macro:: LSQUIC_DF_ECN + + ECN is disabled by default. + +.. macro:: LSQUIC_DF_ALLOW_MIGRATION + + Allow migration by default. + +.. macro:: LSQUIC_DF_QL_BITS + + Use QL loss bits by default. + +.. macro:: LSQUIC_DF_SPIN + + Turn spin bit on by default. + +.. macro:: LSQUIC_DF_CC_ALGO + + Use Adaptive Congestion Controller by default. + +.. macro:: LSQUIC_DF_CC_RTT_THRESH + + Default value of the CC RTT threshold is 1500 microseconds + +.. macro:: LSQUIC_DF_DELAYED_ACKS + + The Delayed ACKs extension is on by default. + +.. macro:: LSQUIC_DF_MAX_UDP_PAYLOAD_SIZE_RX + + By default, incoming packet size is not limited. + +.. macro:: LSQUIC_DF_DPLPMTUD + + By default, DPLPMTUD is enabled + +.. macro:: LSQUIC_DF_BASE_PLPMTU + + By default, this value is left up to the engine. + +.. macro:: LSQUIC_DF_MAX_PLPMTU + + By default, this value is left up to the engine. + +.. macro:: LSQUIC_DF_MTU_PROBE_TIMER + + By default, we use the minimum timer of 1000 milliseconds. + +.. macro:: LSQUIC_DF_NOPROGRESS_TIMEOUT_SERVER + + By default, drop no-progress connections after 60 seconds on the server. + +.. macro:: LSQUIC_DF_NOPROGRESS_TIMEOUT_CLIENT + + By default, do not use no-progress timeout on the client. + +.. macro:: LSQUIC_DF_GREASE_QUIC_BIT + + By default, greasing the QUIC bit is enabled (if peer sent + the "grease_quic_bit" transport parameter). + +.. macro:: LSQUIC_DF_TIMESTAMPS + + Timestamps are on by default. + +.. macro:: LSQUIC_DF_DATAGRAMS + + Datagrams are off by default. + +.. macro:: LSQUIC_DF_OPTIMISTIC_NAT + + Assume optimistic NAT by default. + +.. macro:: LSQUIC_DF_EXT_HTTP_PRIO + + Turn on Extensible HTTP Priorities by default. + +.. macro:: LSQUIC_DF_QPACK_EXPERIMENT + + By default, QPACK experiments are turned off. + +.. macro:: LSQUIC_DF_DELAY_ONCLOSE + + By default, calling :member:`lsquic_stream_if.on_close()` is not delayed. + +.. macro:: LSQUIC_DF_MAX_BATCH_SIZE + + By default, maximum batch size is not specified, leaving it up to the + library. + +.. macro:: LSQUIC_DF_CHECK_TP_SANITY + + Transport parameter sanity checks are performed by default. + +Receiving Packets +----------------- + +Incoming packets are supplied to the engine using :func:`lsquic_engine_packet_in()`. +It is up to the engine to decide what do to with the packet. It can find an existing +connection and dispatch the packet there, create a new connection (in server mode), or +schedule a version negotiation or stateless reset packet. + +.. function:: int lsquic_engine_packet_in (lsquic_engine_t *engine, const unsigned char *data, size_t size, const struct sockaddr *local, const struct sockaddr *peer, void *peer_ctx, int ecn) + + Pass incoming packet to the QUIC engine. This function can be called + more than once in a row. After you add one or more packets, call + :func:`lsquic_engine_process_conns()` to schedule outgoing packets, if any. + + :param engine: Engine instance. + :param data: Pointer to UDP datagram payload. + :param size: Size of UDP datagram. + :param local: Local address. + :param peer: Peer address. + :param peer_ctx: Peer context. + :param ecn: ECN marking associated with this UDP datagram. + + :return: + + - ``0``: Packet was processed by a real connection. + - ``1``: Packet was handled successfully, but not by a connection. + This may happen with version negotiation and public reset + packets as well as some packets that may be ignored. + - ``-1``: Some error occurred. Possible reasons are invalid packet + size or failure to allocate memory. + +.. function:: int lsquic_engine_earliest_adv_tick (lsquic_engine_t *engine, int *diff) + + Returns true if there are connections to be processed, false otherwise. + + :param engine: + + Engine instance. + + :param diff: + + If the function returns a true value, the pointed to integer is set to the + difference between the earliest advisory tick time and now. + If the former is in the past, this difference is negative. + + :return: + + True if there are connections to be processed, false otherwise. + +Sending Packets +--------------- + +User specifies a callback :type:`lsquic_packets_out_f` in :type:`lsquic_engine_api` +that the library uses to send packets. + +.. type:: struct lsquic_out_spec + + This structure describes an outgoing packet. + + .. member:: struct iovec *iov + + A vector with payload. + + .. member:: size_t iovlen + + Vector length. + + .. member:: const struct sockaddr *local_sa + + Local address. + + .. member:: const struct sockaddr *dest_sa + + Destination address. + + .. member:: void *peer_ctx + + Peer context associated with the local address. + + .. member:: int ecn + + ECN: Valid values are 0 - 3. See :rfc:`3168`. + + ECN may be set by IETF QUIC connections if ``es_ecn`` is set. + +.. type:: typedef int (*lsquic_packets_out_f)(void *packets_out_ctx, const struct lsquic_out_spec *out_spec, unsigned n_packets_out) + + Returns number of packets successfully sent out or -1 on error. -1 should + only be returned if no packets were sent out. If -1 is returned or if the + return value is smaller than ``n_packets_out``, this indicates that sending + of packets is not possible. + + If not all packets could be sent out, then: + + - errno is examined. If it is not EAGAIN or EWOULDBLOCK, the connection + whose packet caused the error is closed forthwith. + - No packets are attempted to be sent out until :func:`lsquic_engine_send_unsent_packets()` + is called. + +.. function:: void lsquic_engine_process_conns (lsquic_engine_t *engine) + + Process tickable connections. This function must be called often enough so + that packets and connections do not expire. The preferred method of doing + so is by using :func:`lsquic_engine_earliest_adv_tick()`. + +.. function:: int lsquic_engine_has_unsent_packets (lsquic_engine_t *engine) + + Returns true if engine has some unsent packets. This happens if + :member:`lsquic_engine_api.ea_packets_out` could not send everything out + or if processing deadline was exceeded (see + :member:`lsquic_engine_settings.es_proc_time_thresh`). + +.. function:: void lsquic_engine_send_unsent_packets (lsquic_engine_t *engine) + + Send out as many unsent packets as possibe: until we are out of unsent + packets or until ``ea_packets_out()`` fails. + + If ``ea_packets_out()`` cannot send all packets, this function must be + called to signify that sending of packets is possible again. + +Stream Callback Interface +------------------------- + +The stream callback interface structure lists the callbacks used by +the engine to communicate with the user code: + +.. type:: struct lsquic_stream_if + + .. member:: lsquic_conn_ctx_t *(*on_new_conn)(void *stream_if_ctx, lsquic_conn_t *) + + Called when a new connection has been created. In server mode, + this means that the handshake has been successful. In client mode, + on the other hand, this callback is called as soon as connection + object is created inside the engine, but before the handshake is + done. + + The return value is the connection context associated with this + connection. Use :func:`lsquic_conn_get_ctx()` to get back this + context. It is OK for this function to return NULL. + + This callback is mandatory. + + .. member:: void (*on_conn_closed)(lsquic_conn_t *) + + Connection is closed. + + This callback is mandatory. + + .. member:: lsquic_stream_ctx_t * (*on_new_stream)(void *stream_if_ctx, lsquic_stream_t *) + + If you need to initiate a connection, call lsquic_conn_make_stream(). + This will cause `on_new_stream` callback to be called when appropriate + (this operation is delayed when maximum number of outgoing streams is + reached). + + If connection is going away, this callback may be called with the + second parameter set to NULL. + + The return value is the stream context associated with the stream. + A pointer to it is passed to `on_read()`, `on_write()`, and `on_close()` + callbacks. It is OK for this function to return NULL. + + This callback is mandatory. + + .. member:: void (*on_read) (lsquic_stream_t *s, lsquic_stream_ctx_t *h) + + Stream is readable: either there are bytes to be read or an error + is ready to be collected. + + This callback is mandatory. + + .. member:: void (*on_write) (lsquic_stream_t *s, lsquic_stream_ctx_t *h) + + Stream is writeable. + + This callback is mandatory. + + .. member:: void (*on_close) (lsquic_stream_t *s, lsquic_stream_ctx_t *h) + + After this callback returns, the stream is no longer accessible. This is + a good time to clean up the stream context. + + This callback is mandatory. + + .. member:: void (*on_reset) (lsquic_stream_t *s, lsquic_stream_ctx_t *h, int how) + + This callback is called as soon as the peer resets a stream. + The argument `how` is either 0, 1, or 2, meaning "read", "write", and + "read and write", respectively (just like in ``shutdown(2)``). This + signals the user to stop reading, writing, or both. + + Note that resets differ in gQUIC and IETF QUIC. In gQUIC, `how` is + always 2; in IETF QUIC, `how` is either 0 or 1 because one can reset + just one direction in IETF QUIC. + + This callback is optional. The reset error can still be collected + during next "on read" or "on write" event. + + .. member:: void (*on_hsk_done)(lsquic_conn_t *c, enum lsquic_hsk_status s) + + When handshake is completed, this callback is called. + + This callback is optional. + + .. member:: void (*on_goaway_received)(lsquic_conn_t *) + + This is called when our side received GOAWAY frame. After this, + new streams should not be created. + + This callback is optional. + + .. member:: void (*on_new_token)(lsquic_conn_t *c, const unsigned char *token, size_t token_size) + + When client receives a token in NEW_TOKEN frame, this callback is called. + + This callback is optional. + + .. member:: void (*on_sess_resume_info)(lsquic_conn_t *c, const unsigned char *, size_t) + + This callback lets client record information needed to + perform session resumption next time around. + + For IETF QUIC, this is called only if :member:`lsquic_engine_api.ea_get_ssl_ctx_st` + is *not* set, in which case the library creates its own SSL_CTX. + + Note: this callback will be deprecated when gQUIC support is removed. + + This callback is optional. + + .. member:: ssize_t (*on_dg_write)(lsquic_conn_t *c, void *buf, size_t buf_sz) + + Called when datagram is ready to be written. Write at most + ``buf_sz`` bytes to ``buf`` and return number of bytes + written. + + .. member:: void (*on_datagram)(lsquic_conn_t *c, const void *buf, size_t sz) + + Called when datagram is read from a packet. This callback is + required when :member:`lsquic_engine_settings.es_datagrams` is true. + Take care to process it quickly, as this is called during + :func:`lsquic_engine_packet_in()`. + +Creating Connections +-------------------- + +In server mode, the connections are created by the library based on incoming +packets. After handshake is completed, the library calls :member:`lsquic_stream_if.on_new_conn` +callback. + +In client mode, a new connection is created by + +.. function:: lsquic_conn_t * lsquic_engine_connect (lsquic_engine_t *engine, enum lsquic_version version, const struct sockaddr *local_sa, const struct sockaddr *peer_sa, void *peer_ctx, lsquic_conn_ctx_t *conn_ctx, const char *sni, unsigned short base_plpmtu, const unsigned char *sess_resume, size_t sess_resume_len, const unsigned char *token, size_t token_sz) + + :param engine: Engine to use. + + :param version: + + To let the engine specify QUIC version, use N_LSQVER. If session resumption + information is supplied, version is picked from there instead. + + :param local_sa: + + Local address. + + :param peer_sa: + + Address of the server. + + :param peer_ctx: + + Context associated with the peer. This is what gets passed to TODO. + + :param conn_ctx: + + Connection context can be set early using this parameter. Useful if + you need the connection context to be available in `on_conn_new()`. + Note that that callback's return value replaces the connection + context set here. + + :param sni: + + The SNI is required for Google QUIC connections; it is optional for + IETF QUIC and may be set to NULL. + + :param base_plpmtu: + + Base PLPMTU. If set to zero, it is selected based on the + engine settings (see + :member:`lsquic_engine_settings.es_base_plpmtu`), + QUIC version, and IP version. + + :param sess_resume: + + Pointer to previously saved session resumption data needed for + TLS resumption. May be NULL. + + :param sess_resume_len: + + Size of session resumption data. + + :param token: + + Pointer to previously received token to include in the Initial + packet. Tokens are used by IETF QUIC to pre-validate client + connections, potentially avoiding a retry. + + See :member:`lsquic_stream_if.on_new_token` callback. + + May be NULL. + + :param token_sz: + + Size of data pointed to by ``token``. + +Closing Connections +------------------- + +.. function:: void lsquic_conn_going_away (lsquic_conn_t *conn) + + Mark connection as going away: send GOAWAY frame and do not accept + any more incoming streams, nor generate streams of our own. + + Only applicable to HTTP/3 and GQUIC connections. Otherwise a no-op. + +.. function:: void lsquic_conn_close (lsquic_conn_t *conn) + + This closes the connection. :member:`lsquic_stream_if.on_conn_closed` + and :member:`lsquic_stream_if.on_close` callbacks will be called. + +.. function:: void lsquic_conn_abort (lsquic_conn_t *conn) + + This aborts the connection. The connection and all associated objects + will be destroyed (with necessary callbacks called) during the next time + :func:`lsquic_engine_process_conns()` is invoked. + +Creating Streams +---------------- + +Similar to connections, streams are created by the library in server mode; they +correspond to requests. In client mode, a new stream is created by + +.. function:: void lsquic_conn_make_stream (lsquic_conn_t *) + + Create a new request stream. This causes :member:`on_new_stream()` callback + to be called. If creating more requests is not permitted at the moment + (due to number of concurrent streams limit), stream creation is registered + as "pending" and the stream is created later when number of streams dips + under the limit again. Any number of pending streams can be created. + Use :func:`lsquic_conn_n_pending_streams()` and + :func:`lsquic_conn_cancel_pending_streams()` to manage pending streams. + + If connection is going away, :func:`on_new_stream()` is called with the + stream parameter set to NULL. + +Stream Events +------------- + +To register or unregister an interest in a read or write event, use the +following functions: + +.. function:: int lsquic_stream_wantread (lsquic_stream_t *stream, int want) + + :param stream: Stream to read from. + :param want: Boolean value indicating whether the caller wants to read + from stream. + :return: Previous value of ``want`` or ``-1`` if the stream has already + been closed for reading. + + A stream becomes readable if there is was an error: for example, the + peer may have reset the stream. In this case, reading from the stream + will return an error. + +.. function:: int lsquic_stream_wantwrite (lsquic_stream_t *stream, int want) + + :param stream: Stream to write to. + :param want: Boolean value indicating whether the caller wants to write + to stream. + :return: Previous value of ``want`` or ``-1`` if the stream has already + been closed for writing. + +Reading From Streams +-------------------- + +.. function:: ssize_t lsquic_stream_read (lsquic_stream_t *stream, unsigned char *buf, size_t sz) + + :param stream: Stream to read from. + :param buf: Buffer to copy data to. + :param sz: Size of the buffer. + :return: Number of bytes read, zero if EOS has been reached, or -1 on error. + + Read up to ``sz`` bytes from ``stream`` into buffer ``buf``. + + ``-1`` is returned on error, in which case ``errno`` is set: + + - ``EBADF``: The stream is closed. + - ``ECONNRESET``: The stream has been reset. + - ``EWOULDBLOCK``: There is no data to be read. + +.. function:: ssize_t lsquic_stream_readv (lsquic_stream_t *stream, const struct iovec *vec, int iovcnt) + + :param stream: Stream to read from. + :param vec: Array of ``iovec`` structures. + :param iovcnt: Number of elements in ``vec``. + :return: Number of bytes read, zero if EOS has been reached, or -1 on error. + + Similar to :func:`lsquic_stream_read()`, but reads data into a vector. + +.. function:: ssize_t lsquic_stream_readf (lsquic_stream_t *stream, size_t (*readf)(void *ctx, const unsigned char *buf, size_t len, int fin), void *ctx) + + :param stream: Stream to read from. + + :param readf: + + The callback takes four parameters: + + - Pointer to user-supplied context; + - Pointer to the data; + - Data size (can be zero); and + - Indicator whether the FIN follows the data. + + The callback returns number of bytes processed. If this number is zero + or is smaller than ``len``, reading from stream stops. + + :param ctx: Context pointer passed to ``readf``. + + This function allows user-supplied callback to read the stream contents. + It is meant to be used for zero-copy stream processing. + + Return value and errors are same as in :func:`lsquic_stream_read()`. + +Writing To Streams +------------------ + +.. function:: ssize_t lsquic_stream_write (lsquic_stream_t *stream, const void *buf, size_t len) + + :param stream: Stream to write to. + :param buf: Buffer to copy data from. + :param len: Number of bytes to copy. + :return: Number of bytes written -- which may be smaller than ``len`` -- or a negative + value when an error occurs. + + Write ``len`` bytes to the stream. Returns number of bytes written, which + may be smaller that ``len``. + + A negative return value indicates a serious error (the library is likely + to have aborted the connection because of it). + +.. function:: ssize_t lsquic_stream_writev (lsquic_stream_t *s, const struct iovec *vec, int count) + + Like :func:`lsquic_stream_write()`, but read data from a vector. + +.. type:: struct lsquic_reader + + Used as argument to :func:`lsquic_stream_writef()`. + + .. member:: size_t (*lsqr_read) (void *lsqr_ctx, void *buf, size_t count) + + :param lsqr_ctx: Pointer to user-specified context. + :param buf: Memory location to write to. + :param count: Size of available memory pointed to by ``buf``. + :return: + + Number of bytes written. This is not a ``ssize_t`` because + the read function is not supposed to return an error. If an error + occurs in the read function (for example, when reading from a file + fails), it is supposed to deal with the error itself. + + .. member:: size_t (*lsqr_size) (void *lsqr_ctx) + + Return number of bytes remaining in the reader. + + .. member:: void *lsqr_ctx + + Context pointer passed both to ``lsqr_read()`` and to ``lsqr_size()``. + +.. function:: ssize_t lsquic_stream_writef (lsquic_stream_t *stream, struct lsquic_reader *reader) + + :param stream: Stream to write to. + :param reader: Reader to read from. + :return: Number of bytes written or -1 on error. + + Write to stream using :type:`lsquic_reader`. This is the most generic of + the write functions -- :func:`lsquic_stream_write()` and + :func:`lsquic_stream_writev()` utilize the same mechanism. + +.. function:: ssize_t lsquic_stream_pwritev (struct lsquic_stream *stream, ssize_t (*preadv)(void *user_data, const struct iovec *iov, int iovcnt), void *user_data, size_t n_to_write) + + :param stream: Stream to write to. + :param preadv: Pointer to a custom ``preadv(2)``-like function. + :param user_data: Data to pass to ``preadv`` function. + :param n_to_write: Number of bytes to write. + :return: Number of bytes written or -1 on error. + + Write to stream using user-supplied ``preadv()`` function. + The stream allocates one or more packets and calls ``preadv()``, + which then fills the array of buffers. This is a good way to + minimize the number of ``read(2)`` system calls; the user can call + ``preadv(2)`` instead. + + The number of bytes available in the ``iov`` vector passed back to + the user callback may be smaller than ``n_to_write``. The expected + use pattern is to pass the number of bytes remaining in the file + and keep on calling ``preadv(2)``. + + Note that, unlike other stream-writing functions above, + ``lsquic_stream_pwritev()`` does *not* buffer bytes inside the + stream; it only writes to packets. That means the caller must be + prepared for this function to return 0 even inside the "on write" + stream callback. In that case, the caller should fall back to using + another write function. + + It is OK for the ``preadv`` callback to write fewer bytes that + ``n_to_write``. (This can happen if the underlying data source + is truncated.) + +:: + + /* + * For example, the return value of zero can be handled as follows: + */ + nw = lsquic_stream_pwritev(stream, my_readv, some_ctx, n_to_write); + if (nw == 0) + nw = lsquic_stream_write(stream, rem_bytes_buf, rem_bytes_len); + +.. function:: int lsquic_stream_flush (lsquic_stream_t *stream) + + :param stream: Stream to flush. + :return: 0 on success and -1 on failure. + + Flush any buffered data. This triggers packetizing even a single byte + into a separate frame. Flushing a closed stream is an error. + +Closing Streams +--------------- + +Streams can be closed for reading, writing, or both. +``on_close()`` callback is called at some point after a stream is closed +for both reading and writing, + +.. function:: int lsquic_stream_shutdown (lsquic_stream_t *stream, int how) + + :param stream: Stream to shut down. + :param how: + + This parameter specifies what do to. Allowed values are: + + - 0: Stop reading. + - 1: Stop writing. + - 2: Stop both reading and writing. + + :return: 0 on success or -1 on failure. + +.. function:: int lsquic_stream_close (lsquic_stream_t *stream) + + :param stream: Stream to close. + :return: 0 on success or -1 on failure. + +Sending HTTP Headers +-------------------- + +.. type:: struct lsxpack_header + +This type is defined in _lsxpack_header.h_. See that header file for +more information. + + .. member:: char *buf + + the buffer for headers + + .. member:: uint32_t name_hash + + hash value for name + + .. member:: uint32_t nameval_hash + + hash value for name + value + + .. member:: lsxpack_strlen_t name_offset + + the offset for name in the buffer + + .. member:: lsxpack_strlen_t name_len + + the length of name + + .. member:: lsxpack_strlen_t val_offset + + the offset for value in the buffer + + .. member:: lsxpack_strlen_t val_len + + the length of value + + .. member:: uint16_t chain_next_idx + + mainly for cookie value chain + + .. member:: uint8_t hpack_index + + HPACK static table index + + .. member:: uint8_t qpack_index + + QPACK static table index + + .. member:: uint8_t app_index + + APP header index + + .. member:: enum lsxpack_flag flags:8 + + combination of lsxpack_flag + + .. member:: uint8_t indexed_type + + control to disable index or not + + .. member:: uint8_t dec_overhead + + num of extra bytes written to decoded buffer + +.. type:: lsquic_http_headers_t + + .. member:: int count + + Number of headers in ``headers``. + + .. member:: struct lsxpack_header *headers + + Pointer to an array of HTTP headers. + + HTTP header list structure. Contains a list of HTTP headers. + +.. function:: int lsquic_stream_send_headers (lsquic_stream_t *stream, const lsquic_http_headers_t *headers, int eos) + + :param stream: + + Stream to send headers on. + + :param headers: + + Headers to send. + + :param eos: + + Boolean value to indicate whether these headers constitute the whole + HTTP message. + + :return: + + 0 on success or -1 on error. + +Receiving HTTP Headers +---------------------- + +If ``ea_hsi_if`` is not set in :type:`lsquic_engine_api`, the library will translate +HPACK- and QPACK-encoded headers into HTTP/1.x-like headers and prepend them to the +stream. To the stream-reading function, it will look as if a standard HTTP/1.x +message. + +Alternatively, you can specify header-processing set of functions and manage header +fields yourself. In that case, the header set must be "read" from the stream via +:func:`lsquic_stream_get_hset()`. + +.. type:: struct lsquic_hset_if + + .. member:: void * (*hsi_create_header_set)(void *hsi_ctx, lsquic_stream_t *stream, int is_push_promise) + + :param hsi_ctx: User context. This is the pointer specifed in ``ea_hsi_ctx``. + :param stream: Stream with which the header set is associated. May be set + to NULL in server mode. + :param is_push_promise: Boolean value indicating whether this header set is + for a push promise. + :return: Pointer to user-defined header set object. + + Create a new header set. This object is (and must be) fetched from a + stream by calling :func:`lsquic_stream_get_hset()` before the stream can + be read. + + .. member:: struct lsxpack_header * (*hsi_prepare_decode)(void *hdr_set, struct lsxpack_header *hdr, size_t space) + + Return a header set prepared for decoding. If ``hdr`` is NULL, this + means return a new structure with at least ``space`` bytes available + in the decoder buffer. On success, a newly prepared header is + returned. + + If ``hdr`` is not NULL, it means there was not enough decoder buffer + and it must be increased to at least ``space`` bytes. ``buf``, ``val_len``, + and ``name_offset`` member of the ``hdr`` structure may change. On + success, the return value is the same as ``hdr``. + + If NULL is returned, the space cannot be allocated. + + .. member:: int (*hsi_process_header)(void *hdr_set, struct lsxpack_header *hdr) + + Process new header. + + :param hdr_set: + + Header set to add the new header field to. This is the object + returned by ``hsi_create_header_set()``. + + :param hdr: + + The header returned by @ref ``hsi_prepare_decode()``. + + :return: + + Return 0 on success, a positive value if a header error occured, + or a negative value on any other error. A positive return value + will result in cancellation of associated stream. A negative return + value will result in connection being aborted. + + .. member:: void (*hsi_discard_header_set)(void *hdr_set) + + :param hdr_set: Header set to discard. + + Discard header set. This is called for unclaimed header sets and + header sets that had an error. + + .. member:: enum lsquic_hsi_flag hsi_flags + + These flags specify properties of decoded headers passed to + ``hsi_process_header()``. This is only applicable to QPACK headers; + HPACK library header properties are based on compilation, not + run-time, options. + +.. function:: void * lsquic_stream_get_hset (lsquic_stream_t *stream) + + :param stream: Stream to fetch header set from. + + :return: Header set associated with the stream. + + Get header set associated with the stream. The header set is created by + ``hsi_create_header_set()`` callback. After this call, the ownership of + the header set is transferred to the caller. + + This call must precede calls to :func:`lsquic_stream_read()`, + :func:`lsquic_stream_readv()`, and :func:`lsquic_stream_readf()`. + + If the optional header set interface is not specified, + this function returns NULL. + +Push Promises +------------- + +.. function:: int lsquic_conn_push_stream (lsquic_conn_t *conn, void *hdr_set, lsquic_stream_t *stream, const lsquic_http_headers_t *headers) + + :return: + + - 0: Stream pushed successfully. + - 1: Stream push failed because it is disabled or because we hit + stream limit or connection is going away. + - -1: Stream push failed because of an internal error. + + A server may push a stream. This call creates a new stream in reference + to stream ``stream``. It will behave as if the client made a request: it will + trigger ``on_new_stream()`` event and it can be used as a regular client-initiated stream. + + ``hdr_set`` must be set. It is passed as-is to :func:`lsquic_stream_get_hset()`. + +.. function:: int lsquic_conn_is_push_enabled (lsquic_conn_t *conn) + + :return: Boolean value indicating whether push promises are enabled. + + Only makes sense in server mode: the client cannot push a stream and this + function always returns false in client mode. + +.. function:: int lsquic_stream_is_pushed (const lsquic_stream_t *stream) + + :return: Boolean value indicating whether this is a pushed stream. + +.. function:: int lsquic_stream_refuse_push (lsquic_stream_t *stream) + + Refuse pushed stream. Call it from ``on_new_stream()``. No need to + call :func:`lsquic_stream_close()` after this. ``on_close()`` will be called. + +.. function:: int lsquic_stream_push_info (const lsquic_stream_t *stream, lsquic_stream_id_t *ref_stream_id, void **hdr_set) + + Get information associated with pushed stream + + :param ref_stream_id: Stream ID in response to which push promise was sent. + :param hdr_set: Header set. This object was passed to or generated by :func:`lsquic_conn_push_stream()`. + + :return: 0 on success and -1 if this is not a pushed stream. + +Stream Priorities +----------------- + +.. function:: unsigned lsquic_stream_priority (const lsquic_stream_t *stream) + + Return current priority of the stream. + +.. function:: int lsquic_stream_set_priority (lsquic_stream_t *stream, unsigned priority) + + Set stream priority. Valid priority values are 1 through 256, inclusive. + Lower value means higher priority. + + :return: 0 on success of -1 on failure (this happens if priority value is invalid). + +Miscellaneous Engine Functions +------------------------------ + +.. function:: unsigned lsquic_engine_quic_versions (const lsquic_engine_t *engine) + + Return the list of QUIC versions (as bitmask) this engine instance supports. + +.. function:: unsigned lsquic_engine_count_attq (lsquic_engine_t *engine, int from_now) + + Return number of connections whose advisory tick time is before current + time plus ``from_now`` microseconds from now. ``from_now`` can be negative. + +Miscellaneous Connection Functions +---------------------------------- + +.. function:: enum lsquic_version lsquic_conn_quic_version (const lsquic_conn_t *conn) + + Get QUIC version used by the connection. + + If version has not yet been negotiated (can happen in client mode), ``-1`` is + returned. + +.. function:: const lsquic_cid_t * lsquic_conn_id (const lsquic_conn_t *conn) + + Get connection ID. + +.. function:: lsquic_engine_t * lsquic_conn_get_engine (lsquic_conn_t *conn) + + Get pointer to the engine. + +.. function:: int lsquic_conn_get_sockaddr (lsquic_conn_t *conn, const struct sockaddr **local, const struct sockaddr **peer) + + Get current (last used) addresses associated with the current path + used by the connection. + +.. function:: struct stack_st_X509 * lsquic_conn_get_server_cert_chain (lsquic_conn_t *conn) + + Get certificate chain returned by the server. This can be used for + server certificate verification. + + The caller releases the stack using sk_X509_free(). + +.. function:: lsquic_conn_ctx_t * lsquic_conn_get_ctx (const lsquic_conn_t *conn) + + Get user-supplied context associated with the connection. + +.. function:: void lsquic_conn_set_ctx (lsquic_conn_t *conn, lsquic_conn_ctx_t *ctx) + + Set user-supplied context associated with the connection. + +.. function:: void * lsquic_conn_get_peer_ctx (lsquic_conn_t *conn, const struct sockaddr *local_sa) + + Get peer context associated with the connection and local address. + +.. function:: const char * lsquic_conn_get_sni (lsquic_conn_t *conn) + + Get SNI sent by the client. + +.. function:: enum LSQUIC_CONN_STATUS lsquic_conn_status (lsquic_conn_t *conn, char *errbuf, size_t bufsz) + + Get connection status. + +Miscellaneous Stream Functions +------------------------------ + +.. function:: unsigned lsquic_conn_n_avail_streams (const lsquic_conn_t *conn) + + Return max allowed outbound streams less current outbound streams. + +.. function:: unsigned lsquic_conn_n_pending_streams (const lsquic_conn_t *conn) + + Return number of delayed streams currently pending. + +.. function:: unsigned lsquic_conn_cancel_pending_streams (lsquic_conn_t *, unsigned n) + + Cancel ``n`` pending streams. Returns new number of pending streams. + +.. function:: lsquic_conn_t * lsquic_stream_conn (const lsquic_stream_t *stream) + + Get a pointer to the connection object. Use it with connection functions. + +.. function:: int lsquic_stream_is_rejected (const lsquic_stream_t *stream) + + Returns true if this stream was rejected, false otherwise. Use this as + an aid to distinguish between errors. + +.. function:: int lsquic_stream_has_unacked_data (const lsquic_stream_t *stream) + + Return true if peer has not ACKed all data written to the stream. This + includes both packetized and buffered data. + +Other Functions +--------------- + +.. function:: lsquic_conn_t lsquic_ssl_to_conn (const SSL *) + + Get connection associated with this SSL object. + +.. function:: enum lsquic_version lsquic_str2ver (const char *str, size_t len) + + Translate string QUIC version to LSQUIC QUIC version representation. + +.. function:: enum lsquic_version lsquic_alpn2ver (const char *alpn, size_t len) + + Translate ALPN (e.g. "h3", "h3-23", "h3-Q046") to LSQUIC enum. + +Miscellaneous Types +------------------- + +.. type:: struct lsquic_shared_hash_if + + The shared hash interface is used to share data between multiple LSQUIC instances. + + .. member:: int (*shi_insert)(void *shi_ctx, void *key, unsigned key_sz, void *data, unsigned data_sz, time_t expiry) + + :param shi_ctx: + + Shared memory context pointer + + :param key: + + Key data. + + :param key_sz: + + Key size. + + :param data: + + Pointer to the data to store. + + :param data_sz: + + Data size. + + :param expiry: When this item expires. If you want your item to never expire, set this to zero. + + :return: 0 on success, -1 on failure. + + If inserted successfully, ``free()`` will be called on ``data`` and ``key`` + pointer when the element is deleted, whether due to expiration + or explicit deletion. + + .. member:: int (*shi_delete)(void *shi_ctx, const void *key, unsigned key_sz) + + Delete item from shared hash + + :return: 0 on success, -1 on failure. + + .. member:: int (*shi_lookup)(void *shi_ctx, const void *key, unsigned key_sz, void **data, unsigned *data_sz) + + :param shi_ctx: + + Shared memory context pointer + + :param key: + + Key data. + + :param key_sz: + + Key size. + + :param data: + + Pointer to set to the result. + + :param data_sz: + + Pointer to the data size. + + :return: + + - ``1``: found. + - ``0``: not found. + - ``-1``: error (perhaps not enough room in ``data`` if copy was attempted). + + The implementation may choose to copy the object into buffer pointed + to by ``data``, so you should have it ready. + +.. type:: struct lsquic_packout_mem_if + + The packet out memory interface is used by LSQUIC to get buffers to + which outgoing packets will be written before they are passed to + :member:`lsquic_engine_api.ea_packets_out` callback. + + If not specified, malloc() and free() are used. + + .. member:: void * (*pmi_allocate) (void *pmi_ctx, void *peer_ctx, lsquic_conn_get_ctx *conn_ctx, unsigned short sz, char is_ipv6) + + Allocate buffer for sending. + + .. member:: void (*pmi_release) (void *pmi_ctx, void *peer_ctx, void *buf, char is_ipv6) + + This function is used to release the allocated buffer after it is + sent via ``ea_packets_out()``. + + .. member:: void (*pmi_return) (void *pmi_ctx, void *peer_ctx, void *buf, char is_ipv6) + + If allocated buffer is not going to be sent, return it to the + caller using this function. + +.. type:: typedef void (*lsquic_cids_update_f)(void *ctx, void **peer_ctx, const lsquic_cid_t *cids, unsigned n_cids) + + :param ctx: + + Context associated with the CID lifecycle callbacks (ea_cids_update_ctx). + + :param peer_ctx: + + Array of peer context pointers. + + :param cids: + + Array of connection IDs. + + :param n_cids: + + Number of elements in the peer context pointer and connection ID arrays. + +.. type:: enum lsquic_logger_timestamp_style + + Enumerate timestamp styles supported by LSQUIC logger mechanism. + + .. member:: LLTS_NONE + + No timestamp is generated. + + .. member:: LLTS_HHMMSSMS + + The timestamp consists of 24 hours, minutes, seconds, and milliseconds. Example: 13:43:46.671 + + .. member:: LLTS_YYYYMMDD_HHMMSSMS + + Like above, plus date, e.g: 2017-03-21 13:43:46.671 + + .. member:: LLTS_CHROMELIKE + + This is Chrome-like timestamp used by proto-quic. The timestamp + includes month, date, hours, minutes, seconds, and microseconds. + + Example: 1223/104613.946956 (instead of 12/23 10:46:13.946956). + + This is to facilitate reading two logs side-by-side. + + .. member:: LLTS_HHMMSSUS + + The timestamp consists of 24 hours, minutes, seconds, and microseconds. Example: 13:43:46.671123 + + .. member:: LLTS_YYYYMMDD_HHMMSSUS + + Date and time using microsecond resolution, e.g: 2017-03-21 13:43:46.671123 + +.. type:: enum LSQUIC_CONN_STATUS + + .. member:: LSCONN_ST_HSK_IN_PROGRESS + .. member:: LSCONN_ST_CONNECTED + .. member:: LSCONN_ST_HSK_FAILURE + .. member:: LSCONN_ST_GOING_AWAY + .. member:: LSCONN_ST_TIMED_OUT + .. member:: LSCONN_ST_RESET + + If es_honor_prst is not set, the connection will never get public + reset packets and this flag will not be set. + + .. member:: LSCONN_ST_USER_ABORTED + .. member:: LSCONN_ST_ERROR + .. member:: LSCONN_ST_CLOSED + .. member:: LSCONN_ST_PEER_GOING_AWAY + +.. type:: enum lsquic_hsi_flag + + These flags are ORed together to specify properties of + :type:`lsxpack_header` passed to :member:`lsquic_hset_if.hsi_process_header`. + + .. member:: LSQUIC_HSI_HTTP1X + + Turn HTTP/1.x mode on or off. In this mode, decoded name and value + pair are separated by ``": "`` and ``"\r\n"`` is appended to the end + of the string. By default, this mode is off. + + .. member:: LSQUIC_HSI_HASH_NAME + + Include name hash into lsxpack_header. + + .. member:: LSQUIC_HSI_HASH_NAMEVAL + + Include nameval hash into lsxpack_header. + +Global Variables +---------------- + +.. var:: const char *const lsquic_ver2str[N_LSQVER] + + Convert LSQUIC version to human-readable string + +List of Log Modules +------------------- + +The following log modules are defined: + +- *alarmset*: Alarm processing. +- *bbr*: BBRv1 congestion controller. +- *bw-sampler*: Bandwidth sampler (used by BBR). +- *cfcw*: Connection flow control window. +- *conn*: Connection. +- *crypto*: Low-level Google QUIC cryptography tracing. +- *cubic*: Cubic congestion controller. +- *di*: "Data In" handler (storing incoming data before it is read). +- *eng-hist*: Engine history. +- *engine*: Engine. +- *event*: Cross-module significant events. +- *frame-reader*: Reader of the HEADERS stream in Google QUIC. +- *frame-writer*: Writer of the HEADERS stream in Google QUIC. +- *handshake*: Handshake and packet encryption and decryption. +- *hcsi-reader*: Reader of the HTTP/3 control stream. +- *hcso-writer*: Writer of the HTTP/3 control stream. +- *headers*: HEADERS stream (Google QUIC). +- *hsk-adapter*: +- *http1x*: Header conversion to HTTP/1.x. +- *logger*: Logger. +- *mini-conn*: Mini connection. +- *pacer*: Pacer. +- *parse*: Parsing. +- *prq*: PRQ stands for Packet Request Queue. This logs scheduling + and sending packets not associated with a connection: version + negotiation and stateless resets. +- *purga*: CID purgatory. +- *qdec-hdl*: QPACK decoder stream handler. +- *qenc-hdl*: QPACK encoder stream handler. +- *qlog*: QLOG output. At the moment, it is out of date. +- *qpack-dec*: QPACK decoder. +- *qpack-enc*: QPACK encoder. +- *sendctl*: Send controller. +- *sfcw*: Stream flow control window. +- *spi*: Stream priority iterator. +- *stream*: Stream operation. +- *tokgen*: Token generation and validation. +- *trapa*: Transport parameter processing. + +.. _extensible-http-priorities: + +Extensible HTTP Priorities +-------------------------- + +lsquic supports the +`Extensible HTTP Priorities Extension `_. +It is enabled by default when HTTP/3 is used. The "urgency" and "incremental" +parameters are included into a dedicated type: + +.. type:: struct lsquic_ext_http_prio + + .. member:: unsigned char urgency + + This value's range is [0, 7], where 0 is the highest and 7 is + the lowest urgency. + + .. member:: signed char incremental + + This is a boolean value. The valid range is [0, 1]. + +Some useful macros are also available: + +.. macro:: LSQUIC_MAX_HTTP_URGENCY + +The maximum value of the "urgency" parameter is 7. + +.. macro:: LSQUIC_DEF_HTTP_URGENCY + +The default value of the "urgency" parameter is 3. + +.. macro:: LSQUIC_DEF_HTTP_INCREMENTAL + +The default value of the "incremental" parameter is 0. + +There are two functions to +manage a stream's priority: + +.. function:: int lsquic_stream_get_http_prio (lsquic_stream_t \*stream, struct lsquic_ext_http_prio \*ehp) + + Get a stream's priority information. + + :param stream: The stream whose priority informaion we want. + + :param ehp: Structure that is to be populated with the stream's + priority information. + + :return: Returns zero on success of a negative value on failure. + A failure occurs if this is not an HTTP/3 stream or if + Extensible HTTP Priorities have not been enabled. + See :member:`lsquic_engine_settings.es_ext_http_prio`. + +.. function:: int lsquic_stream_set_http_prio (lsquic_stream_t \*stream, const struct lsquic_ext_http_prio \*ehp) + + Set a stream's priority information. + + :param stream: The stream whose priority we want to set. + + :param ehp: Structure containing the stream's new priority information. + + :return: Returns zero on success of a negative value on failure. + A failure occurs if some internal error occured or if this + is not an HTTP/3 stream or if Extensible HTTP Priorities + haven't been enabled. + See :member:`lsquic_engine_settings.es_ext_http_prio`. + +.. _apiref-datagrams: + +Datagrams +--------- + +lsquic supports the +`Unreliable Datagram Extension `_. +To enable datagrams, set :member:`lsquic_engine_settings.es_datagrams` to +true and specify +:member:`lsquic_stream_if.on_datagram` +and +:member:`lsquic_stream_if.on_dg_write` callbacks. + +.. function:: int lsquic_conn_want_datagram_write (lsquic_conn_t *conn, int want) + + Indicate desire (or lack thereof) to write a datagram. + + :param conn: Connection on which to send a datagram. + :param want: Boolean value indicating whether the caller wants to write + a datagram. + :return: Previous value of ``want`` or ``-1`` if the datagrams cannot be + written. + +.. function:: size_t lsquic_conn_get_min_datagram_size (lsquic_conn_t *conn) + + Get minimum datagram size. By default, this value is zero. + +.. function:: int lsquic_conn_set_min_datagram_size (lsquic_conn_t *conn, size_t sz) + + Set minimum datagram size. This is the minumum value of the buffer + passed to the :member:`lsquic_stream_if.on_dg_write` callback. + Returns 0 on success and -1 on error. diff --git a/external/lsquic/docs/conf.py b/external/lsquic/docs/conf.py new file mode 100644 index 0000000..2af051a --- /dev/null +++ b/external/lsquic/docs/conf.py @@ -0,0 +1,184 @@ +# -*- coding: utf-8 -*- +# +# Configuration file for the Sphinx documentation builder. +# +# This file does only contain a selection of the most common options. For a +# full list see the documentation: +# http://www.sphinx-doc.org/en/master/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + + +# -- Project information ----------------------------------------------------- + +project = u'lsquic' +copyright = u'2023, LiteSpeed Technologies' +author = u'LiteSpeed Technologies' + +# The short X.Y version +version = u'4.3' +# The full version, including alpha/beta/rc tags +release = u'4.3.1' + + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ +# To make ours look like readthedocs.io, change theme to "sphinx_rtd_theme", +# pip install sphinx_rtd_theme, and uncomment extensions: + "sphinx_rtd_theme", +# "sphinx.ext.intersphinx", +# "sphinx.ext.autodoc", +# "sphinx.ext.mathjax", +# "sphinx.ext.viewcode", +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = [u'_build', 'Thumbs.db', '.DS_Store'] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = None + +default_role = 'c:func' +primary_domain = 'c' + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = "sphinx_rtd_theme" +#html_style = '/default.css' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = {} + + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'lsquicdoc' + + +# -- Options for LaTeX output ------------------------------------------------ + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'lsquic.tex', u'lsquic Documentation', + u'LiteSpeed Technologies', 'manual'), +] + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'lsquic', u'lsquic Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'lsquic', u'lsquic Documentation', + author, 'lsquic', 'One line description of project.', + 'Miscellaneous'), +] + + +# -- Options for Epub output ------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] diff --git a/external/lsquic/docs/devel.rst b/external/lsquic/docs/devel.rst new file mode 100644 index 0000000..f351d0f --- /dev/null +++ b/external/lsquic/docs/devel.rst @@ -0,0 +1,37 @@ +Developing lsquic +================= + +Generating Tags +--------------- + +Over the years, we have developed a wrapper around `Universal Ctags`_ +to generate convenient tags so that, for example, ``ci_packet_in`` will +be able to take you to any of its implementations such as +``full_conn_ci_packet_in()``, ``evanescent_conn_ci_packet_in()``, and +others. + +_Exuberant_ Ctags will work, too, but the more recent and maintained fork +of it, the _Universal_ Ctags, is preferred. (If you are on Ubuntu, you +should clone Universal Ctags from GitHub and compiled it yourself. The +version that comes in the Ubuntu package -- at the time of this writing +-- is so slow as to be considered broken). + +The wrapper is ``tools/gen-tags.pl``. Run it in the source directory: + +.. highlight:: bash + +:: + + sh$ cd lsquic + sh$ ./tools/gen-tags.pl + +Maintaining Documentation +------------------------- + +Documentation -- the ``*.rst`` files under ``docs/`` should be kept up-to-date +with changes in the API in ``include/lsquic.h``. + +For convenience, tags for the documentation files can be generated by passing +the ``--docs`` argument to ``tools/gen-tags.pl``. + +.. _`Universal Ctags`: https://ctags.io/ diff --git a/external/lsquic/docs/faq.rst b/external/lsquic/docs/faq.rst new file mode 100644 index 0000000..d1075ad --- /dev/null +++ b/external/lsquic/docs/faq.rst @@ -0,0 +1,47 @@ +************************** +Frequently Asked Questions +************************** + +API/Design +========== + +*Why have a separate engine for server and client? Surely traffic +could be differentiated as much as it needs to be internally in one +engine?* + +The traffic *cannot* be differentiated for gQUIC versions Q046 and Q050. +This is because in these versions, the server never includes a connection +ID into the packets it sends to the client. To have more than one +connection, then, the client must open a socket per connection: otherwise, +the engine would not be able to dispatch incoming packets to correct +connections. + +To aid development, there is a :macro:`LSQUIC_FORCED_TCID0_VERSIONS` that +specifies the list of versions with 0-sized connections. (If you, for +example, want to turn them off.) + +Once gQUIC becomes deprecated in the future, there will remain no technical +reason why a single engine instance could not be used both for client and +server connections. It will be just work. For example, the single +engine settings :type:`lsquic_engine_settings` will have to be separated +into client and server settings, as the two usually do need to have +separate settings. + +Example Programs +================ + +*http_client does not work with www.google.com, www.facebook.com, etc.* + +Check the version. By defaut, ``http_client`` will use the latest supported +version (at the time of this writing, "h3-31"), while the server may be using +an older version, such as "h3-29". Adding ``-o version=h3-29`` to the +command line may well solve your issue. + +There is an `outstanding bug`_ where lsquic client does not perform version +negotiation correctly for HTTP/3. We do not expect this to be fixed, because +a) this version negotiation mechanism is likely to become defunct when QUIC v1 +is released and b) version negotiation is not necessary for an HTTP/3 client, +because the other side's version is communicated to it via the ``Alt-Svc`` HTTP +header. + +.. _`outstanding bug`: https://github.com/litespeedtech/lsquic/issues/180 diff --git a/external/lsquic/docs/gettingstarted.rst b/external/lsquic/docs/gettingstarted.rst new file mode 100644 index 0000000..aba5fe5 --- /dev/null +++ b/external/lsquic/docs/gettingstarted.rst @@ -0,0 +1,78 @@ +Getting Started +=============== + +Supported Platforms +------------------- + +LSQUIC compiles and runs on Linux, Windows, FreeBSD, Mac OS, and Android. +It has been tested on i386, x86_64, and ARM (Raspberry Pi and Android). + +Dependencies +------------ + +LSQUIC library uses: + +- zlib_; +- BoringSSL_; and +- `ls-hpack`_ (as a Git submodule). +- `ls-qpack`_ (as a Git submodule). + +The accompanying demo command-line tools use libevent_. + +What's in the box +----------------- + +- ``src/liblsquic`` -- the library +- ``bin`` -- demo client and server programs +- ``tests`` -- unit tests + +Building +-------- + +To build the library, follow instructions in the README_ file. + +Demo Examples +------------- + +Fetch Google home page: + +:: + + ./http_client -s www.google.com -p / -o version=h3-29 + +Run your own server (it does not touch the filesystem, don't worry): + +:: + + ./http_server -c www.example.com,fullchain.pem,privkey.pem -s 0.0.0.0:4433 + +Grab a page from your server: + +:: + + ./http_client -H www.example.com -s 127.0.0.1:4433 -p / + +You can play with various options, of which there are many. Use +the ``-h`` command-line flag to see them. + +More about LSQUIC +----------------- + +You may be also interested in this presentation_ about LSQUIC. +Slides are available `here `_. + +Next steps +---------- + +If you want to use LSQUIC in your program, check out the :doc:`tutorial` and +the :doc:`apiref`. + +:doc:`internals` covers some library internals. + +.. _zlib: https://www.zlib.net/ +.. _BoringSSL: https://boringssl.googlesource.com/boringssl/ +.. _`ls-hpack`: https://github.com/litespeedtech/ls-hpack +.. _`ls-qpack`: https://github.com/litespeedtech/ls-qpack +.. _libevent: https://libevent.org/ +.. _README: https://github.com/litespeedtech/lsquic/blob/master/README.md +.. _presentation: https://www.youtube.com/watch?v=kDwyGNsQXds diff --git a/external/lsquic/docs/index.rst b/external/lsquic/docs/index.rst new file mode 100644 index 0000000..626dfc7 --- /dev/null +++ b/external/lsquic/docs/index.rst @@ -0,0 +1,75 @@ +LSQUIC Documentation +==================== + +This is the documentation for LSQUIC_ |release|, last updated |today|. + +LiteSpeed QUIC (LSQUIC) Library is an open-source implementation of QUIC +and HTTP/3 functionality for servers and clients. LSQUIC is: + +- fast; + +- flexible; and + +- production-ready. + +Most of the code in this distribution has been used in our own products +-- `LiteSpeed Web Server`_, `LiteSpeed Web ADC`_, and OpenLiteSpeed_ -- +since 2017. + +Currently supported QUIC versions are v1, Internet-Draft versions 29, and 27; +and the older "Google" QUIC versions Q043, Q046, an Q050. + +LSQUIC is licensed under the `MIT License`_; see LICENSE in the source +distribution for details. + +Features +-------- + +LSQUIC supports nearly all QUIC and HTTP/3 features, including + +- DPLPMTUD +- ECN +- Spin bits (allowing network observer to calculate a connection's RTT) +- Path migration +- NAT rebinding +- Push promises +- TLS Key updates +- Extensions: + + - :ref:`extensible-http-priorities` + - :ref:`apiref-datagrams` + - Loss bits extension (allowing network observer to locate source of packet loss) + - Timestamps extension (allowing for one-way delay calculation, improving performance of some congestion controllers) + - Delayed ACKs (this reduces number of ACK frames sent and processed, improving throughput) + - QUIC grease bit to reduce ossification opportunities + +Architecture +------------ + +The LSQUIC library does not use sockets to receive and send packets; that is handled by the user-supplied callbacks. The library also does not mandate the use of any particular event loop. Instead, it has functions to help the user schedule events. (Thus, using an event loop is not even strictly necessary.) The various callbacks and settings are supplied to the engine constructor. +LSQUIC keeps QUIC connections in several data structures in order to process them efficiently. Connections that need processing are kept in two priority queues: one holds connections that are ready to be processed (or "ticked") and the other orders connections by their next timer value. As a result, no connection is processed needlessly. + +.. _LSQUIC: https://github.com/litespeedtech/lsquic +.. _`MIT License`: http://www.opensource.org/licenses/mit-license.php +.. _`LiteSpeed Web Server`: https://www.litespeedtech.com/products/litespeed-web-server/ +.. _`LiteSpeed Web ADC`: https://www.litespeedtech.com/products/litespeed-web-adc/ +.. _OpenLiteSpeed: https://openlitespeed.org/ + +Contents +-------- + +.. toctree:: + :maxdepth: 2 + + gettingstarted + tutorial + apiref + devel + internals + faq + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`search` diff --git a/external/lsquic/docs/internals.rst b/external/lsquic/docs/internals.rst new file mode 100644 index 0000000..be218c4 --- /dev/null +++ b/external/lsquic/docs/internals.rst @@ -0,0 +1,3706 @@ +############ +Library Guts +############ + +.. highlight:: c + +Introduction +************ + + +lsquic inception dates back to the fall of 2016. Since that time, lsquic +underwent several major changes. Some of those had to do with making the +library more performant; others were needed to add important new +functionality (for example, IETF QUIC and HTTP/3). Throughout this time, +one of the main principles we embraced is that **performance trumps +everything else**, including code readability and maintainability. This +focus drove code design decisions again and again and it explains some +of the hairiness that we will come across in this document. + +Code Version +============ + +The code version under discussion is v2.29.6. + +Coding Style +************ + +Spacing and Cuddling +==================== + +lsquic follows the LiteSpeed spacing and cuddling conventions: + +- Two empty lines between function definitions + +- Four-space indentation + +- Ifs and elses are not cuddled + +Function Name Alignment +======================= + +In function definitions, the name is always left-aligned, for example: + +:: + + static void + check_flush_threshold (lsquic_stream_t *stream) + + +Naming Conventions +================== + +- Struct members usually have prefixes derived from the struct name. + For example members of ``struct qpack_dec_hdl`` begin with ``qdh_``, + members of ``struct cid_update_batch`` begin with ``cub_``, and so on. + This is done to reduce the need to memorize struct member names as + vim's autocomplete (Ctrl-P) functionality makes it easy to fill in + the needed identifier. + +- Non-static functions all begin with ``lsquic_``. + +- Functions usually begin with a module name (e.g. ``lsquic_engine_`` or + ``stream_``) which is then followed by a verb (e.g. + ``lsquic_engine_connect`` or ``stream_activate_hq_frame``). If a + function does not begin with a module name, it begins with a verb + (e.g. ``check_flush_threshold`` or ``maybe_remove_from_write_q``). + +- Underscores are used to separate words (as opposed to, for example, + theCamelCase). + +Typedefs +======== + +Outside of user-facing API, structs, unions, and enums are not +typedefed. On the other hand, some integral types are typedefed. + +List of Common Terms +******************** + +- **gQUIC** Google QUIC. The original lsquic supported only Google + QUIC. gQUIC is going to become obsolete. (Hopefully soon). + +- **HQ** This stands for "HTTP-over-QUIC", the original name of HTTP/3. + The code predates the official renaming to HTTP/3 and thus there + are many types and names with some variation of ``HQ`` in them. + +- **iQUIC** This stands for IETF QUIC. To differentiate between gQUIC + and IETF QUIC, we use ``iquic`` in some names and types. + +- **Public Reset** In the IETF QUIC parlance, this is called the *stateless* + reset. Because gQUIC was first to be implemented, this name is still + used in the code, even when the IETF QUIC stateless reset is meant. + You will see names that contain strings like "prst" and "pubres". + +High-Level Structure +******************** + +At a high level, the lsquic library can be used to instantiate an engine +(or several engines). An engine manages connections; each connection has +streams. Engine, connection, and stream objects are exposed to the user +who interacts with them using the API (see :doc:`apiref`). All other data +structures are internal and are hanging off, in one way or another, from +the engine, connection, or stream objects. + +Engine +****** + +*Files: lsquic_engine.c, lsquic_engine_public.h, lsquic.h* + +Data Structures +=============== + +out_batch +--------- + +:: + + /* The batch of outgoing packets grows and shrinks dynamically */ + /* Batch sizes do not have to be powers of two */ + #define MAX_OUT_BATCH_SIZE 1024 + #define MIN_OUT_BATCH_SIZE 4 + #define INITIAL_OUT_BATCH_SIZE 32 + + struct out_batch + { + lsquic_conn_t *conns [MAX_OUT_BATCH_SIZE]; + struct lsquic_out_spec outs [MAX_OUT_BATCH_SIZE]; + unsigned pack_off[MAX_OUT_BATCH_SIZE]; + lsquic_packet_out_t *packets[MAX_OUT_BATCH_SIZE * 2]; + struct iovec iov [MAX_OUT_BATCH_SIZE * 2]; + }; + +The array of struct lsquic_out_specs -- outs above -- is what gets +passed to the user callback ``ea_packets_out()``. ``conns`` array corresponds +to the spec elements one to one. + +``pack_off`` records which packet in ``packets`` corresponds to which +connection in ``conns``. Because of coalescing, an element in ``outs`` can +correspond (logically) to more than one packet. (See how the batch is +constructed in `Batching packets`_.) On the +other hand, ``packets`` and ``iov`` arrays have one-to-one correspondence. + +There is one instance of this structure per engine: the whole thing is +allocated as part of `struct lsquic_engine <#lsquic-engine>`__. + + +cid_update_batch +---------------- + +:: + + struct cid_update_batch + { + lsquic_cids_update_f cub_update_cids; + void *cub_update_ctx; + unsigned cub_count; + lsquic_cid_t cub_cids[20]; + void *cub_peer_ctxs[20]; + }; + +This struct is used to batch CID updates. + +There are three user-defined CID liveness callbacks: ``ea_new_scids``, +``ea_live_scids``, and ``ea_old_scids``. These functions all have the same +signature, ``lsquic_cids_update_f``. When the batch reaches the count of +20 (kept in ``cub_count``), the callback is called. + +The new SCIDs batch is kept in `struct +lsquic_engine <#lsquic-engine>`__. Other batches are allocated on the +stack in different functions as necessary. + +20 is an arbitrary number. + +lsquic_engine_public +-------------------- + +This struct, defined in lsquic_engine_public.h, is the "public" +interface to the engine. ("Public" here means accessible by other +modules inside lsquic, not that it's a public interface like the +:doc:`apiref`.) Because there are many things in the engine object that +are accessed by other modules, this struct is used to expose those +(``public``) parts of the engine. + +``lsquic_engine_struct`` is the first member of +`lsquic_engine <#lsquic-engine>`__. The functions declared in +lsquic_engine_public.h take a pointer to lsquic_engine_public as the +first argument, which is then case to lsquic_engine. + +This is somewhat ugly, but it's not too bad, as long as one remembers +that the two pointers are interchangeable. + +lsquic_engine +------------- + +This is the central data structure. The engine instance is the root of +all other data structures. It contains: + +- Pointers to connections in several lists and hashes (see `Connection Management <#connection-management>`__) + +- Memory manager + +- Engine settings + +- Token generator + +- CID Purgatory + +- Server certificate cache + +- Transport parameter cache + +- Packet request queue + +- `Outgoing packet batch <#out-batch>`__ + +- And several other things + +Some of the members above are stored in the ``pub`` member of type +`lsquic_engine_public <#lsquic-engine-public>`__. These are accessed +directly from other parts of lsquic. + +The engine is instantiated via ``lsquic_engine_new()`` and destroyed via +``lsquic_engine_destroy()`` + +Connection Management +===================== + +Lifetime +-------- + +There are several `connection types`_. All types of +connections begin their life inside the engine module, where their +constructors are called. They all also end their life here as well: this +is where the destructors are called. + +The connection constructors are all different function calls: + +- lsquic_ietf_full_conn_client_new + +- lsquic_gquic_full_conn_client_new + +- lsquic_ietf_full_conn_server_new + +- lsquic_gquic_full_conn_server_new + +- lsquic_mini_conn_ietf_new + +- lsquic_mini_conn_new + +- lsquic_prq_new_req + +- lsquic_prq_new_req_ext + +(See `Evanescent Connection`_ for information about the last two.) + +After a connection is instantiated, all further interactions with it, +including destruction, are done via the `Common Connection Interface`_. + +Refcounting Model +----------------- + +Each connection is referenced by at least one of the following data +structures: + +1. CID-to-connection hash. This hash is used to find connections in + order to dispatch an incoming packet. Connections can be hashed by + CIDs or by address. In the former case, each connection has one or + more mappings in the hash table. IETF QUIC connections have up to + eight (in our implementation) source CIDs and each of those would + have a mapping. In client mode, depending on QUIC versions and + options selected, it is may be necessary to hash connections by + address, in which case incoming packets are delivered to + connections based on the address. + +2. Outgoing queue. This queue holds connections that have packets to + send. + +3. `Tickable Queue`_. This queue holds connections + that `can be ticked now <#tickability>`__. + +4. `Advisory Tick Time Queue`_. + +5. Closing connections queue. This is a transient queue -- it only + exists for the duration of + `process_connections() <#processing-connections>`__ function call. + +6. Ticked connections queue. Another transient queue, similar to the + above. + +The idea is to destroy the connection when it is no longer referenced. +For example, a connection tick may return TICK_SEND|TICK_CLOSE. In that +case, the connection is referenced from two places: (2) and (5). After +its packets are sent, it is only referenced in (5), and at the end of +the function call, when it is removed from (5), reference count goes to +zero and the connection is destroyed. (See function ``destroy_conn``.) If +not all packets can be sent, at the end of the function call, the +connection is referenced by (2) and will only be removed once all +outgoing packets have been sent. + +.. image:: lsquic-engine-conns.png + +In the diagram above, you can see that the CID-to-connection hash has +several links to the same connection. This is because an IETF QUIC +connection has more than one Source Connection IDs (SCIDs), any of which +can be included by the peer into the packet. See ``insert_conn_into_hash`` +for more details. + +References from each of these data structures are tracked inside the +connection object by bit flags: + +:: + + #define CONN_REF_FLAGS (LSCONN_HASHED \ + |LSCONN_HAS_OUTGOING \ + |LSCONN_TICKABLE \ + |LSCONN_TICKED \ + |LSCONN_CLOSING \ + |LSCONN_ATTQ) + +Functions ``engine_incref_conn`` and ``engine_decref_conn`` manage setting +and unsetting of these flags. + + +Notable Code +============ + +Handling incoming packets +------------------------- + +Incoming UDP datagrams are handed off to the lsquic library using the +function ``lsquic_engine_packet_in``. Depending on the engine mode -- +client or server -- the appropriate `packet +parsing <#parsing-packets>`__ function is selected. + +Because a UDP datagram can contain more than one QUIC packet, the +parsing is done in a loop. If the first part of packet parsing is +successful, the internal ``process_packet_in`` function is called. + +There, most complexity is contained in ``find_or_create_conn``, which gets +called for the server side. Here, parsing of the packet is finished, now +via the version-specific call to ``pf_parse_packet_in_finish``. If +connection is not found, it may need to be created. Before that, the +following steps are performed: + +- Check that engine is not in the cooldown mode + +- Check that the maximum number of mini connections is not exceeded + +- Check that the (D)CID specified in the packet is not in the `CID Purgatory`_ + +- Check that the packet can be used to create a mini conn: it contains + version information and the version is supported + +- Depending on QUIC version, perform token verification, if necessary + +Only then does the mini connection constructor is called and the +connection is inserted into appropriate structures. + +Processing connections +---------------------- + +Connections are processed in the internal function +``process_connections``. There is the main connection processing loop and +logic. + +All connections that the iterator passed to this function returns are +processed in the first while loop. The ``ci_tick()`` call is what causes +the underlying connection to do all it needs to (most importantly, +dispatch user events and generate outgoing packets). The return value +dictates what lists -- global and local to the function -- the +connection will be placed upon. + +Note that mini connection promotion happens inside this loop. Newly +created full connections are processed inside the same while loop. For a +short time, a mini and a full connection object exist that are +associated with the same logical connection. + +After all connections are ticked, outgoing packets, if there are any, +`are sent out <#batching-packets>`__. + +Then, connections that were closed by the first while loop above are +finally closed. + +Connections that were ticked (and not closed) are either: + +- Put back onto the ``tickable`` queue; + +- Added to the `Advisory Tick Time Queue`_; or + +- Left unqueued. This can happen when both idle and ping timer are + turned off. (This should not happen for the connections that we + expect to process, though.) + +And lastly, CID liveness updates are reported to the user via the +optional SCIDs callbacks: ``ea_new_scids`` etc. + +Tickable Queue Cycle +-------------------- + +When a connection is ticked, it is removed from the `Tickable +Queue <#tickable-queue>`__ and placed onto the transient Ticked Queue. +After outgoing packets are sent and some connections are closed, the +Ticked Queue is examined: the engine queries each remaining connection +again whether it's tickable. If it is, back onto the Tickable Queue it +goes. This should not happen often, however. It may occur when RTT is +low and there are many connections to process. In that case, once all +connections have been processed, the pacer now allows to send another +packet because some time has passed. + +Batching packets +---------------- + +Packet-sending entry point is the function ``send_packets_out``. The main +idea here is as follows: + +Iterate over connections that have packets to send (those are on the +Outgoing queue in the engine). For each connection, ask it for the next +outgoing packet, encrypt it, and place it into the batch. When the batch +is full, `send the batch <#sending-a-batch>`__. + +The outgoing packets from all connections are interleaved. For example, +if connections A, B, and C are on the Outgoing queue, the batch will +contain packets A1, B1, C1, A2, B2, C2, A3, B3, C3, … and so on. This is +done to ensure fairness. When a connection runs out of packets to send, +it returns NULL and is removed from the iterator. + +The idea is simple, but the devil is in the details. The code may be +difficult to read. There are several things going on: + +Conns Out Iterator +^^^^^^^^^^^^^^^^^^ + +This iterator, ``conns_out_iter``, sends packets from connections on the +Outgoing queue and packets on the Packet Request queue. (The latter +masquerade as `Evanescent Connections <#evanescent-connection>`__ so that they +are simple to use.) First, the Outgoing queue (which is a min-heap) is +drained. Then, packets from the Packet Request queue are sent, if there +are any. Then, remaining connections from the first pass are returned in +the round-robin fashion. + +After sending is completed, the connections that still have outgoing +packets to send are placed back onto the Outgoing queue. + + +Packet Coalescing +^^^^^^^^^^^^^^^^^ + +Some IETF QUIC packets can be coalesced. This reduces the number of UDP +datagrams that need to be sent during the handshake. To support this, if +a packet matches some parameters, the same connection is queried for +another packet, which, if it returns, is added to the current batch +slot's iov. + +:: + + if ((conn->cn_flags & LSCONN_IETF) + && ((1 << packet_out->po_header_type) + & ((1 << HETY_INITIAL)|(1 << HETY_HANDSHAKE)|(1 << HETY_0RTT))) + && (engine->flags & ENG_COALESCE) + && iov < batch->iov + sizeof(batch->iov) / sizeof(batch->iov[0])) + { + const struct to_coal to_coal = { + .prev_packet = packet_out, + .prev_sz_sum = iov_size(packet_iov, iov), + }; + packet_out = conn->cn_if->ci_next_packet_to_send(conn, &to_coal); + if (packet_out) + goto next_coa; + } + batch->outs [n].iovlen = iov - packet_iov; + +*With some debug code removed for simplicity* + +Also see the description of the batch in `out_batch`_. + +Note that packet coalescing is only done during the handshake of an IETF +QUIC connection. Non-handshake and gQUIC packets cannot be coalesced. + +Sending and Refilling the Batch +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +When the batch is sent inside the while loop, and the whole batch was +sent successfully, the batch pointers are reset, the batch potentially +grows larger, and the while loop continues. + +Batch Resizing +^^^^^^^^^^^^^^ + +When all datagrams in the batch are sent successfully, the batch may +grow -- up to the hardcoded maximum value of ``MAX_OUT_BATCH_SIZE``. When +not all datagrams are sent, the batch shrinks. The batch size survives +the call into the library: when packets are sent again, the same batch +size is used to begin the sending. + +Deadline Checking +^^^^^^^^^^^^^^^^^ + +This is a rather old safety check dating back to the summer of 2017, +when we first shipped QUIC support. The way we send packets has changed +since then -- there is high possibility that this code can be removed +with no ill effect. + +Sending a batch +--------------- + +When the batch is filled, it is handed off to the function ``send_batch``, +which calls the user-supplied callback to send packets out. The +high-level logic is as follows: + +- Update each packet's ``sent`` time + +- Call the "send packets out" callback + +- For packets that were sent successfully, call ``ci_packet_sent`` + +- For packets that were not sent, call ``ci_packet_not_sent``. This is + important: all packets returned by ``ci_next_packet_to_send`` must + be returned to the connection via either these two calls above or + via ``ci_packet_too_large`` (see below). + +- Return the number of packets sent + +Because of support for coalescing, we have to map from outgoing spec to +packets via ``batch->pack_off``. This is done in several places in this +function. + +To handle the case when a PMTU probe is too large (stuff happens!), the +code checks for EMSGSIZE and returns the packet back to the connection +via ``ci_packet_too_large``. Because this error is of our own making, this +does not count as inability to send. The too-large packet is skipped and +sending of the datagrams in the batch continues. + +Growing min-heaps +----------------- + +The Outgoing and Tickable connection queues are actually min-heaps. The +number of elements in these min-heaps never exceeds the number of +connections. As optimization, allocation of the underlying arrays is +done not in the min-heap module itself but in the engine module in the +function ``maybe_grow_conn_heaps``. The engine knows how many connections +there are and it grows the arrays as necessary. + +As an additional optimization, the two arrays use a single memory region +which is allocated once. + +The min-heap arrays are never shrunk. + +Connection +********** + +*Files: lsquic_conn.h, lsquic_conn.c -- others are covered in dedicated +chapters* + +The connection represents the QUIC connection. Connections are `managed +by the engine <#connection-management>`__. A connection, in turn, +manages `streams <#stream>`__. + +Connection Types +================ + +lsquic supports two different QUIC protocols: Google QUIC and IETF QUIC. +Each of these has a separate implementation, which includes connection +logic, parsing/generating mechanism, and encryption. + +Each of the QUIC connection types on the server begin their life as a +``mini`` connection. This connection type is used while handshake is +proceeding. Once the handshake has completed, the mini connection is +``promoted`` to a ``full`` connection. (See `Mini vs Full +Connection <#mini-vs-full-connections>`__ for more.) + +In addition to the above, an "evanescent" connection type is used to +manage replies to incoming packets that do not result in connection +creation. These include version negotiation, stateless retry, and +stateless reset packets. + +Each of the five connection types above are covered in their own +dedicated chapters elsewhere in this document: + +- `Mini gQUIC Connection <#mini-gquic-connection>`__ + +- `Full gQUIC Connection <#full-gquic-connection>`__ + +- `Mini IETF QUIC Connection <#mini-ietf-connection>`__ + +- `Full IETF QUIC Connection <#full-ietf-connection>`__ + +- `Evanescent Connection <#evanescent-connection>`__ + +lsquic_conn +=========== + +All connection types expose the same connection interface via a pointer +to ``struct lsquic_conn``. (This is the same type pointer to which is +exposed to the user, but the user can only treat the connection as an +opaque pointer.) + +This structure contains the following elements: + +Pointers to Crypto Implementation +--------------------------------- + +The crypto session pointer, ``cn_enc_session``, points to a type-specific +(gQUIC or iQUIC) instance of the encryption session. This session +survives `connection promotion <#connection-promotion>`__. + +The two types of crypto session have a set of common functionality; it +is pointed to by ``cn_esf_c`` (where ``c`` stands for ``common``). Each of +them also has its own, type-specific functionality, which is pointed to +by ``cn_esf.g`` and ``cn_esf.i`` + +Pointer to Common Connection Interface +-------------------------------------- + +``cn_if`` points to the set of functions that implement the Common +Connection Interface (`see below <#common-connection-interface>`__). + +Pointer to Parsing Interface +---------------------------- + +The parsing interface is version-specific. It is pointed to by ``cn_pf``. + +Various list and heap connectors +-------------------------------- + +A connection may be pointed to by one or several queues and heaps (see +"\ `Connection Management <#connection-management>`__\ "). There are +several struct members that make it possible: \*TAILQ_ENTRYs, +``cn_attq_elem``, and ``cn_cert_susp_head``. + +Version +------- + +``cn_version`` is used to make some decisions in several parts of the +code. + +Flags +----- + +The flags in ``cn_flags`` specify which lists the connection is on and +some other properties of the connection which need to be accessible by +other modules. + +Stats +----- + +``cn_last_sent`` and ``cn_last_ticked`` are used to determine the +connection's place on the outgoing queue (see `Batching +Packets <#batching-packets>`__) and on the `Advisory Tick Time +Queue <#alarm-set>`__. + +List of SCIDs +------------- + +IETF QUIC connections have one or more SCIDs (Source Connection IDs), +any one of which can be used by the peer as the DCID (Destination CID) +in the packets it sends. Each of the SCIDs is used to hash the +connection so it can be found. ``cn_cces`` points to an array of size +``cn_n_cces`` which is allocated internally inside each connection type. + +Google QUIC connections use only one CID (same for source and +destination). In order not to modify old code, the macro ``cn_cid`` is +used. + +Common Connection Interface +=========================== + +The struct ``conn_iface`` defines the common connection interface. All +connection types implement all or some of these functions. + +Some of these functions are used by the engine; others by other modules +(for example, to abort a connection); yet others are for use by the +user, e.g. ``lsquic_conn_close`` and others in lsquic.h. In that case, +these calls are wrapped in lsquic_conn.c. + +Tickability +=========== + +A connection is processed when it is tickable. More precisely, the +connection is placed onto the `Tickable Queue <#tickable-queue>`__, +which is iterated over when `connections are +processed <#processing-connections>`__. A connection reports its own +tickability via the ``ci_is_tickable`` method. + +In general, a connection is tickable if it has productive user callbacks +to dispatch (that is, user wants to read and there is data to read or +user wants to write and writing is possible), if there are packets to +send or generate, or if its advisory tick time is in the past. (The +latter is handled in ``lsquic_engine_process_conns()`` when expired +connections from the `Advisory Tick Time Queue`_ are added +to the Tickable Queue.) + +Stream +****** + +*Files: lsquic_stream.h, lsquic_stream.c* + +Overview +======== + +The lsquic stream is the conduit for data. This object is accessible by +the user via any of the ``lsquic_stream_*`` functions declared in +lsquic.h. The stream is bidirectional; in our user code, it represents +the HTTP request and response. The client writes its request to the +stream and the server reads the request in its corresponding instance of +the stream. The server sends its response using the same stream, which +the client reads from the stream. + +Besides streams exposed to the application, connections use streams +internally: + +- gQUIC has the HANDSHAKE and HEADERS streams + +- IETF QUIC has up to four HANDSHAKE streams + +- HTTP/3 has at least three unidirectional streams: + + - Settings stream + + - QPACK encoder stream + + - QPACK decoder stream + +In addition, HTTP/3 push promises use unidirectional streams. In the +code, we make a unidirectional stream simply by closing one end in the +constructor. + +All of the use cases above are handled by the single module, +lsquic_stream. The differences in behavior -- gQUIC vs IETF QUIC, HTTP +vs non-HTTP -- are handled either by explicit conditionals or via +function pointers. + +The streams hang off full connections via stream ID-to-stream hashes and +in various queues. This is similar to the way the connections hang off +the engine. + +Streams are only used in the full connections; mini connections use +their own, minimalistic, code to handle streams. + +.. _data-structures-1: + +Data Structures +=============== + +stream_hq_frame +--------------- + +This structure is used to keep information about an HTTP/3 frame that is +being, or is about to be, written. In our implementation, frame headers +can be two or three bytes long: one byte is HTTP/3 frame type and the +frame length is encoded in 1 or 2 bytes, giving us the maximum payload +size of 2\ :sup:`14` - 1 bytes. You will find literal ``2`` or ``3`` values +in code that deals with writing HQ frames. + +If the HQ frame's size is known in advance (SHF_FIXED_SIZE) -- which is +the case for HEADERS and PUSH_PROMISE frames -- then the HQ header +contents are written immediately. Otherwise, ``shf_frame_ptr`` points to +the bytes in the packet where the HQ header was written, to be filled in +later. + +See `Writing HTTP/3 Streams`_ for more information. + +hq_filter +--------- + +This structure is used to read HTTP/3 streams. A single instance of it +is stored in the stream in ``sm_hq_filter``. The framing is removed +transparently (see `Reading HTTP/3 Streams`_). + +Frame type and length are read into ``hqfi_vint2_state``. Due to greasing, +the reader must be able to support arbitrary frame types and so the code +is pretty generic: varints of any size are supported. + +``hqfi_flags`` and ``hqfi_state`` contain information needed to resume +parsing the frame header, as only partial data may have arrived. + +``hqfi_hist_buf`` and ``hqfi_hist_idx`` are used to record the last few +incoming headers. This information is used to check for validity, as +some sequences of HTTP/3 frames are invalid. + +stream_filter_if +---------------- + +This struct is used to specify functionality required to strip arbitrary +framing when reading from the stream. At the moment (and for the +foreseeable future) only one mechanism is used: that to strip the HTTP/3 +framing. At the time the code was written, however, the idea was to +future-proof it in case we needed to support more than one framing format +at a time. + +lsquic_stream +------------- + +This struct is the stream object. It contains many members that deal +with + +- Reading data + +- Writing data + +- Maintaining stream list memberships + +- Enforcing flow control + +- Dispatching read and write events + +- Calling various user callbacks + +- Interacting with HEADERS streams + +The stream has an ID (``id``). It is used to hash the stream. + +A stream can be on one or more lists: see ``next_send_stream``, +``next_read_stream``, and so on. + +Incoming data is stored in ``data_in``. Outgoing data is packetized +immediately or buffered in ``sm_buf``. + +HTTP/3 frames that are being actively written are on the ``sm_hq_frames`` +list. + +A note on naming: newer members of the stream begin with ``sm_`` for +simplicity. Originally, the structure members lacked a prefix. + +progress +-------- + +This structure is used to determine whether the user callback has made +any progress during an ``on_write`` or ``on_read`` event loop. If progress +is not made for a number of calls, the callback is interrupted, breaking +out of a suspected infinite loop. (See ``es_progress_check`` setting.) + + +frame_gen_ctx +------------- + +This structure holds function pointers to get user data and write it to +packets. ``fgc_size``, ``fgc_fin``, and ``fgc_read`` are set based on framing +requirements. This is a nice abstraction that gets passed to several +packetization functions and allows them not to care about how or whether +framing is performed. + +pwritev_ctx +----------- + +Used to aid ``lsquic_stream_pwritev``. ``hq_arr`` is used to roll back +HTTP/3 framing if necessary. (The rollback is the most complicated part +of the ``pwritev`` functionality). + +Event Dispatch +============== + +The "on stream read" and "on stream write" callbacks are part of the +lsquic API. These callbacks are called when the user has registered +interest in reading from or writing to the stream and reading or writing +is possible. + +Calling ``lsquic_stream_wantwrite`` and ``lsquic_stream_wantread`` places +the stream on the corresponding "want to write" and "want to read" list. +These lists are processed by a connection when it's ticked. For each +stream on the list, the internal function +``lsquic_stream_dispatch_read_events`` or +``lsquic_stream_dispatch_write_events``, whichever may be the case. + +Dispatching read events is simple. When ``es_rw_once`` is set, the "on +stream read" callback is called once -- if the stream is readable. +Otherwise, the callback is called in a loop as long as: + +- The stream is readable; + +- The user wants to read from it; and + +- Progress is being made + +Dispatching write events is more complicated due to the following +factors: + +- In addition to calling the "on stream write" callback, the flushing + mechanism also works by using the "want to write" list. + +- When writing occurs, the stream's position on the list may change + +STREAM frames in +================ + +The data gets in from the transport into the stream via +``lsquic_stream_frame_in`` function. The connection calls this function +after parsing a STREAM frame. + +The data from the STREAM frame is stored in one of the two "data in" +modules: ``di_nocopy`` and ``di_hash``. The two are abstracted out behind +``stream->data_in``. + +The "data in" module is used to store incoming stream data. The data is +read from this module using the ``di_get_frame`` function. See the next +section. + +Reading Data +============ + +There are three user-facing stream-reading functions; two of them are +just wrappers around ``"lsquic_stream_readf``. This function performs some +checks (we will cover HTTP mode separately) and calls +``lsquic_stream_readf``, which also performs some checks and calls +``read_data_frames``. This is the only function in the stream module where +data is actually read from the "data in" module. + +Writing Data +============ + +There are four user-facing functions to write to stream, and all of them +are wrappers around ``stream_write``. (``lsquic_stream_pwritev`` is a bit +more involved than the other three, but it's pretty well-commented -- +and the complexity is in the rollback, not writing itself.) + +Small writes get buffered. If the write size plus whatever is buffered +already exceeds the threshold -- which is the size of the largest STREAM +frame that could be fit into a single outgoing packet -- the data is +packetized instead by calling ``stream_write_to_packets``. See the next +section. + +Packetization +============= + +``stream_write_to_packets`` is the only function through which user data +makes it into outgoing packets. There are three ways to write STREAM +frames: + +1. ``stream_write_to_packet_hsk`` + +2. ``stream_write_to_packet_std`` + +3. ``stream_write_to_packet_crypto`` + +The particular function is selected based on connection and stream type +when the stream is first created. + +stream_write_to_packets +----------------------- + +Depending on the need to frame data, a reader is selected. The job of +the reader is to copy user data into the outgoing STREAM frame. In +HTTP/3 mode, HTTP/3 framing is added transparently -- see `Writing +HTTP/3 Streams`_ for more information. + +The while loop is entered if there is user data to be copied or if the +end of the stream has been reached and FIN needs to be written. Note the +threshold check: when writing data from a user call, the threshold is +set and frames smaller than the full packet are not generated. This is +to allow for usage like "write 8KB", "write 8KB", "write 8KB" not to +produce jagged STREAM frames. This way, we utilize the bandwidth most +effectively. When flushing data, the threshold is not set, so even a +1-byte data gets packetized. + +The call ``stream->sm_write_to_packet`` writes data to a single packet. +This packet is allocated by the `Send Controller <#send-controller>`__. +(Depending on when writing is performed, the returned packet may be +placed onto the scheduled queue immediately or it may be a "buffered" +packet. The stream code is oblivious to that.) If the send controller +does not give us a packet, STOP is returned and the while loop exits. An +ERROR should never happen -- this indicates a bug or maybe failure to +allocate memory -- and so the connection is aborted in that case. If +everything is OK, the while loop goes on. + +The ``seen_ok`` check is used to place the connection on the tickable list +on the first successfully packetized STREAM frame. This is so that if +the packet is buffered (meaning that the writing is occurring outside of +the callback mechanism), the connection will be processed (ticked) and +the packets will be scheduled and sent out. + +After the while loop, we conditionally close an outstanding HTTP/3 +frame, save any leftover data, schedule STREAM_BLOCKED or BLOCKED frames +to be sent out if needed, and return the number of user-provided bytes +that were copied into the outgoing packets and into the internal stream +buffer (leftovers). + +Write a single STREAM frame +--------------------------- + +We will examine ``stream_write_to_packet_std`` as it is the most +complicated of these three functions. + +First, we flush the headers stream if necessary -- this is because we +want the HTTP (gQUIC or HTTP/3) headers to be sent before the payload. + +Then, the number of bytes needed to generate a STREAM frame is +calculated. This value depends on the QUIC version, whether we need to +generate HTTP/3 framing, and whether the data to write exists (or we +just need to write an empty STREAM frame with the FIN bit set). + +(Note that the framing check is made to overshoot the estimate for +simplicity. For one, we might not need 3 bytes for the DATA frame, but +only 2. Secondly, there may already be an open HTTP/3 frame in one of +the previous packets and so we don't need to write it at all.) + +Then, a packet is allocated and ``write_stream_frame`` is called. It is in +this function that we finally make the call to generate the STREAM frame +and to copy the data from the user. The function ``pf_gen_stream_frame`` +returns the number of bytes actually written to the packet: this +includes both the STREAM frame header and the payload (which may also +include HTTP/3 frame). + +The fact that this frame type has been written is added to +``po_frame_types`` and the STREAM frame location, type, and size are +recorded. This information is necessary to be able to elide the frame +from the packet in case the stream is reset. + +``PO_STREAM_END`` is set if the STREAM frame extends to the end of the +packet. This is done to prevent this packet from being used again to +append frames to it (after, for example, some preceding frames are +elided from it). This is because both in gQUIC and IETF QUIC the STREAM +frame header is likely to omit the ``length`` field and instead use the +"extends to the end of the packet" field. If frames are shifted, the +packet cannot be appended to because it will lead to data loss and +corruption. + +Writing HTTP/3 Streams +====================== + +HTTP/3 streams use framing. In most cases, a single HEADERS frame is +followed by zero or more DATA frames. The user code does not know this: +both gQUIC and IETF QUIC streams appear to behave in exactly the same +manner. This makes lsquic simple to use. + +The drawback is internal complexity. To make the code both easy to use +and performant, HTTP/3 framing is generated on-the-fly, as data is being +written to packets (as opposed to being buffered and then written). (OK, +*mostly* on-the-fly: the HEADERS frame payload is generated and then +copied.) + +On the high level, the way it works is as follows: + +- When a write call is made, a variable-size (that is, unknown size; + it's called variable-size because the size of the DATA header may + be 2 or 3 bytes; it's not the best name in the world) frame is + opened/activated. + +- When data is written to stream, the DATA header placeholder bytes are + written to the stream transparently and a pointer is saved to this + location. + +- The active frame header is closed when + + - It reaches its maximum size; or + + - The data we are writing runs out. + +- When the header is closed, the number of bytes that follows is now + written to the location we saved when the header was activated. + +This mechanism allows us to create a DATA frame that spans several +packets before we know how many packets there will be in a single write. +(As outgoing packet allocation is governed by the `Send Controller`_.) +This is done to minimize the goodput overhead incurred by the DATA frame header. + +.. image:: stream-http3-framing.png + +There are a couple of things that do not fit into this model: + +1. The HEADERS frame is fixed size [1]_. It is generated separately + (written by QPACK encoder into a buffer on the stack) and later + copied into the stream. (See the ``send_headers_ietf`` function.) It + can happen that the whole buffer cannot be written. In that case, + a rather complicated dance of buffering the unwritten HEADERS + frame bytes is performed. Here, the "on stream write" callback is + replaced with an internal callback (see the ``select_on_write`` + function) and user interaction is prohibited until the whole of + the HEADERS frame is written to the stream. + +2. Push promise streams are even weirder. In addition to the HEADERS + handling above, the push promise stream must begin with a + variable-integer Push ID. To make this fit into the framed stream + model, the code makes up the concept of a "phantom" HTTP/3 frame. + This type of frame's header is not written. This allows us to + treat the Push ID as the payload of a regular HTTP/3 frame. + +The framing code has had its share of bugs. Because of that, there is a +dedicated unit test program just for the framing code, +*tests/test_h3_framing.c*. In addition to manually-written tests, the +program has a "fuzzer driver" mode, in which the American Fuzzy Lop +fuzzer drives the testing of the HTTP/3 framing mechanism. The advantage +of this approach is that AFL tries to explore all the code paths. + + +Debates regarding DATA framing raged in 2018 on the QUIC mailing list. +Some of the discussion is quite interesting: for example, the debate about +"optimizing" DATA frames and `calculations of the header +cost `__. + +Reading HTTP/3 Streams +====================== + +HTTP/3 frame headers are stripped out transparently -- they are never +seen by the user. From the user's perspective, the lsquic stream +represents the payload of HTTP message; a dedicated call is made first +to get at the HTTP headers. + +To accomplish this, the stream implements a generic deframing mechanism. +The `stream_filter_if`_ interface allows one to +specify functions to a) check whether the stream is readable, b) strip +header bytes from a data frame fetched from "data in" module; and c) +update byte count in the filter once bytes have been read: + +hq_filter_readable +------------------ + +This function tests for availability of non-frame-header data, stripping +frame headers from the stream transparently. Note how it calls +``read_data_frames`` with its own callback, ``hq_read``. It is inside this +callback that the HEADERS frame is fed to the QPACK decoder. + +hq_filter_df +------------ + +This function's job is to strip framing from data frames returned by the +"data in" module inside the ``read_data_frames`` function. It, too, calls +the ``hq_read`` function. This allows the two functions that read from +stream (this one) and the readability-checking function +(``hq_filter_readable``) to share the same state. This is crucial: +Otherwise this approach is not likely to work well. + +hq_decr_left +------------ + +This function is needed to update the filter state. Once all payload +bytes from the frame have been consumed, the filter is readied to strip +the next frame header again. + +.. _notable-code-1: + +Notable Code +============ + +frame_hq_gen_read +----------------- + +This is where HTTP/3 frame headers are generated. Note the use of +``shf_frame_ptr`` to record the memory location to which the correct frame +size will be written by a different function. + +Parsing +******* + +*Files: lsquic_parse.h, lsquic_parse_ietf_v1.c, lsquic_parse_Q050.c, lsquic_parse_Q046.c, +lsquic_parse_gquic_be.c, lsquic_parse_common.c, and others* + +Overview +======== + +The two types of QUIC -- gQUIC and IETF QUIC -- have different packet and +frame formats. In addition, different gQUIC version are different among +themselves. Functions to parse and generate packets and frames of each +type are abstracted out behind the rather large ``struct parse_funcs``. +When a connection is created, its ``cn_pf`` member is set to point to +the correct set of function pointers via the ``select_pf_by_ver()`` macro. + +Parsing Packets +=============== + +Before settling on a particular set of parsing function for a connection, +the server needs to determine the connection's version. It does so using +the function ``lsquic_parse_packet_in_server_begin()``. + +This function figures out whether the packet has a long or a short header, +and which QUIC version it is. Because the server deals with fewer packet +types than the client (no version negotiation or stateless retry packets), +it can determine the necessary parsing function from the first byte of the +incoming packet. + +The "begin" in the name of the function refers to the fact that packet +parsing is a two-step process [3]_. In the first step, the packet version, +CID, and some other parameters are parsed out; in the second step, +version-specific ``pf_parse_packet_in_finish()`` is called to parse out +the packet number. Between the two calls, the state is saved in +``struct packin_parse_state``. + +Generating Packets +================== + +Packets are generated during encryption using the ``pf_gen_reg_pkt_header()`` +function. The generated header is encrypted together with the `packet payload`_ +and this becomes the QUIC packet that is sent out. (Most of the time, the +QUIC packet corresponds to the UDP datagram, but sometimes packets are +`coalesced <#packet-coalescing>`__. + +Parsing Frames +============== + +There is a parsing function for each frame type. These function generally +have names that begin with "pf_parse\_" and follow a similar pattern: + +- The first argument is the buffer to be parsed; + +- The second argument is its size; + +- Any additional arguments are outputs: the parsed out values from the frame; + +- Number of bytes consumed is returned or a negative value is returned + if a parsing error occurred. + +For example: + +:: + + int + (*pf_parse_stream_frame) (const unsigned char *buf, size_t rem_packet_sz, + struct stream_frame *); + + int + (*pf_parse_max_data) (const unsigned char *, size_t, uint64_t *); + +Generating Frames +================= + +Functions that generate frames begin with "pf_gen\_" and also follow a +pattern: + +- First argument is the buffer to be written to; + +- The second argument is the buffer size; + +- Any additional arguments specify the values to include in the frame; + +- The size of the resulting frame is returned or a negative value if + an error occurred. + +For example: + +:: + + int + (*pf_gen_path_chal_frame) (unsigned char *, size_t, uint64_t chal); + + int + (*pf_gen_stream_frame) (unsigned char *buf, size_t bufsz, + lsquic_stream_id_t stream_id, uint64_t offset, + int fin, size_t size, gsf_read_f, void *stream); + +Frame Types +=========== + +Frame types are listed in ``enum quic_frame_type``. When frames are parsed, +the on-the-wire frame type is translated to the enum value; when frames are +generated, the enum is converted to the on-the-wire format. This indirection +is convenient, as it limits the range of possible QUIC frame values, making +it possible to store a list of frame types as a bitmask. Examples include +``po_frame_types`` and ``sc_retx_frames``. + +Some frame types, such as ACK and STREAM, are common to both Google and IETF +QUIC. Others, such as STOP_WAITING and RETIRE_CONNECTION_ID, are only used +in one of the protocols. The third type is frames that are used by IETF +QUIC extensions, such as TIMESTAMP and ACK_FREQUENCY. + +Parsing IETF QUIC Frame Types +----------------------------- + +Most IETF frame types are encoded as a single by on the wire (and all Google +QUIC frames are). Some of them are encoded using multiple bytes. This is +because, like the vast majority of all integral values in IETF QUIC, the frame +type is encoded as a varint. Unlike the other integral values, however, the +frame type has the unique property is that it must be encoded using the +*minimal representation*: that is, the encoding must use the minimum number +of bytes possible. For example, encoding the value 200 must use the two-byte +varint, not four- or eight-byte version. This makes it possible to parse +frame types once without having to reparse the frame type again in individual +frame-parsing routines. + +Frame type is parsed out in ``ietf_v1_parse_frame_type()``. Because of the +minimal encoding requirement, the corresponding frame-parsing functions know +the number of bytes to skip for type, for example: + + +:: + + static int + ietf_v1_parse_frame_with_varints (const unsigned char *buf, size_t len, + const uint64_t frame_type, unsigned count, uint64_t *vals[]) + { + /* --- 8< --- code removed */ + vbits = vint_val2bits(frame_type); + p += 1 << vbits; // <=== SKIP FRAME TYPE + /* --- 8< --- code removed */ + } + + static int + ietf_v1_parse_timestamp_frame (const unsigned char *buf, + size_t buf_len, uint64_t *timestamp) + { + return ietf_v1_parse_frame_with_varints(buf, buf_len, + FRAME_TYPE_TIMESTAMP, 1, (uint64_t *[]) { timestamp }); + } + + +Mini vs Full Connections +************************ + +Mini Purpose +============ + +The reason for having a mini connection is to conserve resources: a mini +connection allocates a much smaller amount of memory. This protects the +server from a potential DoS attack. The mini connection's job is to get +the handshake to succeed, after which the connection is +`promoted <#connection-promotion>`__. + +Mini/Full Differences +===================== + +Besides their size, the two connection types differ in the following +ways: + +Mini connections' lifespan is limited. If the handshake does not succeed +within 10 seconds (configurable), the mini connection is destroyed. + +A mini connection is only `tickable <#tickability>`__ if it has unsent +packets. + +Mini connections do not process packets that carry application (as +opposed to handshake) data. The 0-RTT packet processing is deferred; +these packets are stashed and handed over to the full connection during +promotion. + +Connection Promotion +==================== + +A mini connection is promoted when the handshake succeeds. The mini +connection reports this via the return status of ``ci_tick`` by setting +the ``TICK_PROMOTE`` bit. The engine creates a new connection object and +calls the corresponding server constructor. The latter copies all the +relevant state information from mini to full connection. + +For a time, two connection objects -- one mini and one full -- exist at +the same state. Most of the time, the mini connection is destroyed +within the same function call to ``process_connections()``. If, however, +the mini connection has unsent packets, it will remain live until those +packets are sent successfully. Because the mini connection is by then +removed from the CID-to-connection hash (``engine->conns_hash``), it will +not receive any more incoming packets. + +Also see `Connection Processing <#processing-connections>`__. + +Mini gQUIC Connection +********************* + +*Files: lsquic_mini_conn.h, lsquic_mini_conn.c* + +.. _overview-1: + +Overview +======== + +The original version of ``struct mini_conn`` fit into paltry 128 bytes. +The desire to fit into 128 bytes [2]_ led to, for example, +``mc_largest_recv`` -- in effect, a 3-byte integer! Since that time, +the mini conn has grown to over 512 bytes. + +Looking at the struct, we can see that a lot of other data structures +are squeezed into small fields: + +Received and sent packet history is each packed into a 64-bit integer, +``mc_received_packnos`` and ``mc_sent_packnos``, respectively. The HEADERS +stream offsets are handled by the two two-byte integers ``mc_read_off`` +and ``mc_write_off``. + +.. _notable-code-2: + +Notable Code +============ + +continue_handshake +------------------ + +This function constructs a contiguous buffer with all the HANDSHAKE +stream chunks in order and passes it to ``esf_handle_chlo()``. This is +done because the gQUIC crypto module does not buffer anything: it's all +or nothing. + +The code has been written in a generic way, so that even +many small packets can be reconstructed into a CHLO. The lsquic client +can be made to split the CHLO by setting the max packet size +sufficiently low. + +sent/unsent packets +------------------- + +To conserve space, only a single outgoing packet header exists in the +mini connection struct, ``mc_packets_out``. To differentiate between +packets that are to be sent and those that have already been sent, the +``PO_SENT`` flag is used. + +Mini IETF Connection +******************** + +*Files: lsquic_mini_conn_ietf.h, lsquic_mini_conn_ietf.c* + +.. _overview-2: + +Overview +======== + +The IETF QUIC mini connection has the same idea as the gQUIC mini +connection: use as little memory as possible. This is more difficult to +do with the IETF QUIC, however, as there are more moving parts in this +version of the protocol. + +.. _data-structures-2: + +Data Structures +=============== + +mini_crypto_stream +------------------ + +This structure is a minimal representation of a stream. The IETF QUIC +protocol uses up to four HANDSHAKE streams (one for each encryption +level) during the handshake and we need to keep track of them. Even a +basic event dispatch mechanism is supported. + +packno_set_t +------------ + +This bitmask is used to keep track of sent, received, and acknowledged +packet numbers. It can support up to 64 packet numbers: 0 through 63. We +assume that the server will not need to send more than 64 packets to +complete the handshake. + +imc_recvd_packnos +----------------- + +Because the client is allowed to start its packet number sequence with +any number in the [0, 2\ :sup:`32`-1] range, the received packet history +must be able to accommodate numbers larger than 63. To do that, the +receive history is a union. If all received packet numbers are 63 or +smaller, the packno_set_t bitmask is used. Otherwise, the receive +history is kept in `Tiny Receive History <#tiny-receive-history>`__ +(trechist). The flag ``IMC_TRECHIST`` indicates which data structure is +used. + +ietf_mini_conn +-------------- + +This structure is similar to the gQUIC mini conn. It is larger, though, +as it needs to keep track of several instances of things based on +encryption level or packet number space. + +``imc_cces`` can hold up to three SCIDs: one for the original DCID from +the client, one for SCID generated by the server, and one for when +preferred address transport parameter is used. (The preferred address +functionality is not compiled by default.) + +ietf_mini_rechist +----------------- + +The receive history is in the header file because, in addition to +generating the ACK frames in the IETF mini conn, it is used to migrate +the receive history during promotion. + +.. _notable-code-3: + +Notable Code +============ + +Switching to trechist +--------------------- + +The switch to the Tiny Receive History happens when the incoming packet +number does not fit into the bitmask anymore -- see +``imico_switch_to_trechist()``. To keep the trechist code exercised, about +one in every 16 mini connection uses trechist unconditionally -- see +``lsquic_mini_conn_ietf_new()``. + +crypto_stream_if +---------------- + +A set of functions to drive reading and writing CRYPTO frames to move +the handshake along is specified. It is passed to the crypto session. +After promotion, the full connection installs its own function pointers. + +imico_read_chlo_size +-------------------- + +This function reads the first few bytes of the first CRYPTO frame on the +first HANDSHAKE stream to figure out the size of ClientHello. The +transport parameters will not be read until the full ClientHello is +available. + + +Duplicated Code +--------------- + +Some code has been copied from gQUIC mini connection. This was done on +purpose, with the expectation that gQUIC is going away. + +ECN Blackhole Detection +----------------------- + +ECN blackhole at the beginning of connection is guessed at when none of +packets sent in the initial batch were acknowledged. This is done by +``imico_get_ecn()``. ``lsquic_mini_conn_ietf_ecn_ok()`` is also used during +promotion to check whether to use ECN. + +Connection Public Interface +*************************** + +*Files: lsquic_conn_public.h* + +TODO + +Full gQUIC Connection +********************* + +*Files: lsquic_full_conn.h, lsquic_full_conn.c* + +.. _overview-3: + +Overview +======== + +The full gQUIC connection implements the Google QUIC protocol, both +server and client side. This is where a large part of the gQUIC protocol +logic is contained and where everything -- engine, streams, sending, +event dispatch -- is tied together. + +Components +========== + +In this section, each member of the ``full_conn`` structure is documented. + +fc_conn +------- + +The first member of the struct is the common connection object, +`lsquic_conn`_. + +It must be first in the struct because the two pointer are cast to each +other, depending on circumstances. + +fc_cces +------- + +This array holds two connection CID elements. + +The reason for having two elements in this array instead of one (even +though gQUIC only uses one CID) is for the benefit of the client: In +some circumstances, the client connections are hashed by the port +number, in which case the second element is used to hash the port value. +The relevant code is in lsquic_engine.c + +fc_rechist +---------- + +This member holds the `packet receive history <#receive-history>`__. It +is used to generate ACK frames. + +fc_stream_ifs +------------- + +This three-element array holds pointers to stream callbacks and the +stream callback contexts. + +From the perspective of lsquic, Google QUIC has three stream types: + +1. HANDSHAKE stream; + +2. HEADERS stream; and + +3. Regular (message, or request/response) streams. + +The user provides stream callbacks and the context for the regular +streams (3) in ``ea_stream_if`` and ``ea_stream_if_ctx``. + +The other two stream types are internal. The full connection specifies +internal callbacks for those streams. One set handles the handshake and +the other handles reading and writing of HTTP/2 frames: SETTINGS, +HEADERS, and so on. + +fc_send_ctl +----------- + +This is the `Send Controller <#send-controller>`__. It is used to +allocate outgoing packets, control sending rate, and process +acknowledgements. + +fc_pub +------ + +This member holds the `Connection Public +Interface <#connection-public-interface>`__. + +fc_alset +-------- + +This is the `Alarm Set <#alarm-set>`__. It is used to set various timers +in the connection and the send controller. + +fc_closed_stream_ids +-------------------- + +The two sets in this array hold the IDs of closed streams. + +There are two of them because of the uneven distribution of stream IDs. +It is more efficient to hold even and odd stream IDs in separate +structures. + +fc_settings +----------- + +Pointer to the engine settings. + +This member is superfluous -- the settings can be fetched from +``fc_enpub->enp_settings``. + +fc_enpub +-------- + +This points to the `engine's public interface <#lsquic-engine-public>`__. + +fc_max_ack_packno +----------------- + +Recording the maximum packet number that contained an ACK allows us to +ignore old ACKs. + +fc_max_swf_packno +----------------- + +This is the maximum packet number that contained a STOP_WAITING frame. +It is used to ignore old STOP_WAITING frames. + +fc_mem_logged_last +------------------ + +This timestamp is used to limit logging the amount of memory used to +most once per second. + +fc_cfg +------ + +This structure holds a few important configuration parameters. (Looks +like ``max_conn_send`` is no longer used…) + +fc_flags +-------- + +The flags hold various boolean indicators associated with the full +connections. Some of them, such as ``FC_SERVER``, never change, while +others change all the time. + +fc_n_slack_akbl +--------------- + +This is the number of ackable (or, in the new parlance, *ack-eliciting*) +packets received since the last ACK was sent. + +This counter is used to decide whether an ACK should be sent (or, more +precisely, queued to be sent) immediately or whether to wait. + +fc_n_delayed_streams +-------------------- + +Count how many streams have been delayed. + +When ``lsquic_conn_make_stream()`` is called, a stream may not be created +immediately. It is delayed if creating a stream would go over the +maximum number of stream allowed by peer. + +fc_n_cons_unretx +---------------- + +Counts how many consecutive unretransmittable packets have been sent. + + +fc_last_stream_id +----------------- + +ID of the last created stream. + +Used to assign ID to streams created by this side of the connection. +Clients create odd-numbered streams, while servers initiate +even-numbered streams (push promises). + +fc_max_peer_stream_id +--------------------- + +Maximum value of stream ID created by peer. + +fc_goaway_stream_id +------------------- + +Stream ID received in the GOAWAY frame. + +This ID is used to reset locally-initiated streams with ID larger than +this. + +fc_ver_neg +---------- + +This structure holds the version negotiation state. + +This is used by the client to negotiate with the server. + + +With gQUIC going away, it is probably not very important anymore. + +fc_hsk_ctx +---------- + +Handshake context for the HANDSHAKE stream. + +Client and server have different HANDSHAKE stream handlers -- and +therefore different contexts. + +fc_stats +-------- + +Connection stats + +fc_last_stats +------------- + +Snapshot of connection stats + +This is used to log the changes in counters between calls to +``ci_log_stats()``. The calculation is straightforward in +``lsquic_conn_stats_diff()``. + +fc_stream_histories and fc_stream_hist_idx +------------------------------------------ + +Rolling log of histories of closed streams + + +fc_errmsg +--------- + +Error message associated with connection termination + +This is set when the connection is aborted for some reason. This error +message is only set once. It is used only to set the error message in +the call to ``ci_status()`` + +fc_recent_packets +----------------- + +Dual ring-buffer log of packet history + +The first element is for incoming packets, the second is for outgoing +packets. Each entry holds received or sent time and frame information. + +This can be used for debugging. It is only compiled into debug builds. + +fc_stream_ids_to_reset +---------------------- + +List of stream ID to send STREAM_RESET for + +These STREAM_RESET frames are associated with streams that are not +allowed to be created because we sent a GOAWAY frame. (There is a period +when GOAWAY is in transit, but the peer keeps on creating streams). To +queue the reset frames for such a stream, an element is added to this +list. + +fc_saved_ack_received +--------------------- + +Timestamp of the last received ACK. + +This is used for `ACK merging <#ack-merging>`__. + +fc_path +------- + +The network path -- Google QUIC only has one network path. + +fc_orig_versions +---------------- + +List (as bitmask) of original versions supplied to the client +constructor. + +Used for version negotiation. See `fc_ver_neg`_ for more +coverage of this topic. + +fc_crypto_enc_level +------------------- + +Latest crypto level + +This is for Q050 only, which does away with the HANDSHAKE stream and +uses CRYPTO frames instead. (This was part of Google's plan to move +Google QUIC protocol closer to IETF QUIC.) + +fc_ack +------ + +Saved ACK -- latest or merged + +This ACK structure is used in `ACK merging <#ack-merging>`__. + +Instantiation +============= + +The largest difference between the server and client mode of the full +connection is in the way it is created. The client creates a brand-new +connection, performs version negotiation, and runs the handshake before +dispatching user events. The server connection, on the other hand, gets +created from a mini connection during `connection +promotion <#connection-promotion>`__. By that time, both version +negotiation and handshake have already completed. + +Common Initialization +--------------------- + +The ``new_conn_common()`` function contains initialization common to both +server and client. Most full connection's internal data structures are +initialized or allocated here, among them `Send +Controller <#send-controller>`__, `Receive +History <#receive-history>`__, and `Alarm Set <#alarm-set>`__. + +The HEADERS stream is created here, if necessary. (Throughout the code, +you can see checks whether the connection is in HTTP mode or not. Even +though gQUIC means that HTTP is used, our library supports a non-HTTP +mode, in which there is no HEADERS stream. This was done for testing +purposes and made possible the echo and md5 client and server programs.) + +Server +------ + +After initializing the common structures in ``new_conn_common()``, +server-specific initialization continues in +``lsquic_gquic_full_conn_server_new()``. + +The HANDSHAKE stream is created. The handler (see +``lsquic_server_hsk_stream_if``) simply throws out data that it reads from +the client. + +Outgoing packets are inherited -- they will be sent during the next tick +-- and deferred incoming packets are processed. + +Client +------ + +The client's initialization takes place in +``lsquic_gquic_full_conn_client_new()``. Crypto session is created and the +HANDSHAKE stream is initialized. The handlers in +``lsquic_client_hsk_stream_if`` drive the handshake process. + +Incoming Packets +================ + +The entry point for incoming packets is ``ci_packet_in()``, which is +implemented by ``full_conn_ci_packet_in``. Receiving a packet restarts the +idle timer. + +The function ``process_incoming_packet`` contains some client-only logic +for processing version negotiation and stateless retry packets. In the +normal case, ``process_regular_packet()`` is called. This is where the +incoming packet is decrypted, the `Receive +History <#receive-history>`__ is updated, ``parse_regular_packet()`` is +called, and some post-processing takes place (most importantly, +scheduling an ACK to be sent). + +The function ``parse_regular_packet`` is simple: It iterates over the +whole decrypted payload of the incoming packet and parses out frames one +by one. An error aborts the connection. + +ACK Merging +=========== + +Processing ACKs is `expensive <#handling-acks>`__. When sending data, a +batch of incoming packets is likely to contain an ACK frame each. The +ACK frame handler, ``process_ack_frame()``, merges consecutive ACK frames +and stores the result in `fc_ack`_. The ACK is processed +during the `next tick <#ticking>`__. If the two ACK cannot be merged +(which is unlikely), the cached ACK is processed immediately and the new +ACK is cached. + +Caching an ACK has a non-trivial memory cost: the 4KB-plus data +structure ``ack_info`` accounts for more than half of the size of the +``full_conn`` struct. Nevertheless, the tradeoff is well worth it. ACK +merging reduces the number of calls to ``lsquic_send_ctl_got_ack()`` by a +factor of 10 or 20 in some high-throughput scenarios. + +Ticking +======= + +When a `connection is processed by the +engine <#processing-connections>`__, the engine calls the connection's +``ci_tick()`` method. This is where most of the connection logic is +exercised. In the full gQUIC connection, this method is implemented by +``full_conn_ci_tick()``. + +The following steps are performed: + +- A cached ACK, if it exists, is processed + +- Expired alarms are rung + +- Stream read events are dispatched + +- An ACK frame is generated if necessary + +- Other control frames are generated if necessary + +- Lost packets are rescheduled + +- More control frames and stream resets are generated if necessary + +- HEADERS stream is flushed + +- Outgoing packets that carry stream data are scheduled in four steps: + + a. High-priority `buffered packets <#buffered-queue>`__ are scheduled + + b. Write events are dispatched for high-priority streams + + c. Non-high-priority buffered packets are scheduled + + d. Write events are dispatched for non-high-priority streams + +- Connection close or PING frames are generated if necessary + +- Streams are serviced (closed, freed, created) + +Full IETF Connection +******************** + +*Files: lsquic_full_conn_ietf.h, lsquic_full_conn_ietf.c* + +Overview +======== + +This module implements IETF QUIC +`Transport `_ +and +`HTTP/3 `_ logic, +plus several QUIC extensions. To attain an overall grasp of the code, +at least some familiarity with these protocols is required. To understand +the code in detail, especially *why* some things are done, a closer reading +of the specification may be in order. + +In some places, the code contains comments with references to the +specification, e.g. + +:: + + if (conn->ifc_flags & IFC_SERVER) + { /* [draft-ietf-quic-transport-34] Section 19.7 */ + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, + "received unexpected NEW_TOKEN frame"); + return 0; + } + +(A search for "[draft-ietf" will reveal over one hundred places in the +code thus commented.) + +The Full IETF Connection module is similar in structure to the `Full gQUIC +Connection`_ module, from which it originated. Some code is quite similar +as well, including logic for `ACK Merging`_ and `Ticking`_. + +Components +========== + +In this section, each member of ``ietf_full_conn`` is documented. + +ifc_conn +-------- + +The first member of the struct is the common connection object, +`lsquic_conn`_. + +It must be first in the struct because the two pointer are cast to each +other, depending on circumstances. + +ifc_cces +-------- + +This array holds eight connection CID elements. +See `Managing SCIDs`_. + +ifc_rechist +----------- + +This member holds the `packet receive history <#receive-history>`__. +The receive history is used to generate ACK frames. + +ifc_max_ackable_packno_in +------------------------- + +This value is used to detect holes in incoming packet number sequence. +This information is used to queue ACK frames. + +ifc_send_ctl +------------ + +This is the `Send Controller`_. It is used to +allocate outgoing packets, control sending rate, and process +acknowledgements. + +ifc_pub +------- + +This member holds the `Connection Public Interface`_ + +ifc_alset +--------- + +This is the `Alarm Set`_. It is used to set various timers +in the connection and the send controller. + +ifc_closed_stream_ids +--------------------- + +The two sets in this array hold the IDs of closed streams. + +There are two of them because of the uneven distribution of stream IDs. +The set data structure is meant to hold sequences without gaps. +It is more efficient to hold stream IDs for each stream type in +separate structures. + +ifc_n_created_streams +--------------------- + +Counters for locally initiated streams. Used to generate next +stream ID. + +ifc_max_allowed_stream_id +------------------------- + +Maximum allowed stream ID for each of the four (``N_SITS``) stream types. +This is used all over the place. + +ifc_closed_peer_streams +----------------------- + +Counts how many remotely-initiated streams have been closed. Because the +protocol mandates that the stream IDs be assigned in order, this allows us +to make some logical inferences in the code. + +ifc_max_streams_in +------------------ + +Maximum number of open streams the peer is allowed to initiate. + +ifc_max_stream_data_uni +----------------------- + +Initial value of the maximum amount of data locally-initiated unidirectional +stream is allowed to send. + +ifc_flags +--------- + +All kinds of flags. + +ifc_mflags +---------- + +More flags! + +ifc_send_flags +-------------- + +The send flags keep track of which control frames are queued to be sent. + +ifc_delayed_send +---------------- + +Some send flags are delayed. + +We stop issuing streams credits if peer stops opening QPACK decoder window. +This addresses a potential attack whereby client can cause the server to keep +allocating memory. See `Security Considerations in the QPACK Internet-Draft +`__. + +ifc_send +-------- + +This is the `Send Controller`_. It is used to allocate outgoing packets, +control sending rate, and process acknowledgements. + +ifc_error +--------- + +This struct records which type of error has occurred (transport or application)' +and the error code. + +ifc_n_delayed_streams +--------------------- + +Count how many streams have been delayed. + +When ``lsquic_conn_make_stream()`` is called, a stream may not be created +immediately. It is delayed if creating a stream would go over the +maximum number of stream allowed by peer. + +ifc_n_cons_unretx +----------------- + +Counts how many consecutive unretransmittable packets have been sent. + +Enough unretransittable sent packets in a row causes a PING frame to +be sent. This forces the peer to send an ACK. + +ifc_pii +------- + +Points to the selected priority iterator. + +The IETF Full Connection supports two priority mechanisms: the original +Google QUIC priority mechanism and the `HTTP/3 Extensible Priorities +`__. + +ifc_errmsg +---------- + +Holds dynamically generated error message string. + +Once set, the error string does not change until the connection is +destroyed. + +ifc_enpub +--------- + +This points to the `engine's public interface <#lsquic-engine-public>`__. + +ifc_settings +------------ + +Pointer to the engine settings. + +This member is superfluous -- the settings can be fetched from +``ifc_enpub->enp_settings``. + +ifc_stream_ids_to_ss +-------------------- + +Holds a queue of STOP_SENDING frames to send as response to remotely +initiated streams that came in after we sent a GOAWAY frame. + +ifc_created +----------- + +Time when the connection was created. This is used for the Timestamp +and Delayed ACKs extensions. + +ifc_saved_ack_received +---------------------- + +Time when cached ACK frame was received. See `ACK Merging`_. + +ifc_max_ack_packno +------------------ + +Holding the maximum packet number containing an ACK frame allows us +to ignore old ACK frames. One value per Packet Number Space is kept. + +ifc_max_non_probing +------------------- + +Maximum packet number of a received non-probing packets. This is used +for path migration. + +ifc_cfg +------- + +Local copy of a couple of transport parameters. We could get at them +with a function call, but these are used often enough to optimize +fetching them. + +ifc_process_incoming_packet +--------------------------- + +The client goes through version negotiation and the switches to the +fast function. The server begins to use the fast function immediately. + +ifc_n_slack_akbl +---------------- + +Number ackable packets received since last ACK was sent. A count is +kept for each Packet Number Space. + +ifc_n_slack_all +--------------- + +Count of all packets received since last ACK was sent. This is only +used in the Application PNS (Packet Number Space). (This is regular +PNS after the handshake completes). + +ifc_max_retx_since_last_ack +--------------------------- + +This number is the maximum number of ack-eliciting packets to receive +before an ACK must be sent. + +The default value is 2. When the Delayed ACKs extension is used, this +value gets modified by peer's ACK_FREQUENCY frames. + +ifc_max_ack_delay +----------------- + +Maximum amount of allowed after before an ACK is sent if the threshold +defined by ifc_max_retx_since_last_ack_ has not yet been reached. + +The default value is 25 ms. When the Delayed ACKs extension is used, this +value gets modified by peer's ACK_FREQUENCY frames. + +ifc_ecn_counts_in +----------------- + +Incoming ECN counts in each of the Packet Number Spaces. These counts +are used to generate ACK frames. + +ifc_max_req_id +-------------- + +Keeps track of the maximum ID of bidirectional stream ID initiated by the +peers. It is used to construct the GOAWAY frame. + +ifc_hcso +-------- + +State for outgoing HTTP/3 control stream. + +ifc_hcsi +-------- + +State for incoming HTTP/3 control stream. + +ifc_qeh +------- + +QPACK encoder streams handler. + +The handler owns two unidirectional streams: a) locally-initiated QPACK +encoder stream, to which it writes; and b) peer-initiated QPACK decoder +stream, from which it reads. + +ifc_qdh +------- + +QPACK decoder streams handler. + +The handler owns two unidirectional streams: a) peer-initiated QPACK +encoder stream, from which it reads; and b) locally-initiated QPACK +decoder stream, to which it writes. + +ifc_peer_hq_settings +-------------------- + +Peer's HTTP/3 settings. + +ifc_dces +-------- + +List of destination connection ID elements (DCEs). Each holds a DCID +and the associated stateless reset token. When lsquic uses a DCID, it +inserts the stateless reset token into a hash so that stateless resets +can be found. + +Outside of the initial migration, the lsquic client code does not switch +DCIDs. One idea (suggested in the drafts somewhere) is to switch DCIDs +after a period of inactivity. + +ifc_to_retire +------------- + +List of DCIDs to retire. + +ifc_scid_seqno +-------------- + +Sequence generator for SCIDs generated by the endpoint. + +ifc_scid_timestamp +------------------ + +List of timestamps for the generated SCIDs. + +This list is used in the SCID rate-limiting mechanism. + + +ifc_incoming_ecn +---------------- + +History indicating presence of ECN markings on most recent incoming packets. + +ifc_cur_path_id +--------------- + +Current path ID -- indexes `ifc_paths`_. + +ifc_used_paths +-------------- + +Bitmask of which paths in `ifc_paths`_ are being used. + +ifc_mig_path_id +--------------- + +Path ID of the path being migrated to. + +ifc_active_cids_limit +--------------------- + +This is the maximum number of CIDs at any one time this +endpoint is allowed to issue to peer. If the TP value exceeds ``cn_n_cces``, +it is reduced to it. + +ifc_active_cids_count +--------------------- + +This value tracks how many CIDs have been issued. It is decremented +each time a CID is retired. + +ifc_first_active_cid_seqno +-------------------------- + +Another piece of the SCID rate-limiting mechanism. + +ifc_ping_unretx_thresh +---------------------- + +Once the number consecutively sent non-ack-elicing packets +(`ifc_n_cons_unretx`_) exceeds this value, this endpoint will send +a PING frame to force the peer to respond with an ACK. + +The threshold begins at 20 and then made to fluctuate randomly between +12 and 27. + +ifc_last_retire_prior_to +------------------------ + +Records the maximum value of ``Retire Prior To`` value of the +`NEW_CONNECTION_ID frame +`_. + +ifc_ack_freq_seqno +------------------ + +Sequence number generator for ACK_FREQUENCY frames generated by this +endpoint. + +ifc_last_pack_tol +----------------- + +Last value of the ``Packet Tolerance`` field sent in the last +``ACK_FREQUENCY`` frame generated by this endpoint. + +ifc_last_calc_pack_tol +---------------------- + +Last *calculated* value of the ``Packet Tolerance`` field. + +ifc_min_pack_tol_sent +--------------------- + +Minimum value of the ``Packet Tolerance`` field sent. Only used for +statistics display. + +ifc_max_pack_tol_sent +--------------------- + +Maximum value of the ``Packet Tolerance`` field sent. Only used for +statistics display. + +ifc_max_ack_freq_seqno +---------------------- + +Maximum seen sequence number of incoming ``ACK_FREQUENCY`` frame. Used +to discard old frames. + +ifc_max_udp_payload +------------------- + +Maximum UDP payload. This is the cached value of the transport parameter. + +ifc_last_live_update +-------------------- + +Last time ``ea_live_scids()`` was called. + +ifc_paths +--------- + +Array of connection paths. Most of the time, only one path is used; more +are used during `migration <#path-migration>`__. The array has four +elements as a safe upper limit. + +The elements are of type ``struct conn_path``. Besides the network path, +which stores socket addresses and is associated with each outgoing packet +(via ``po_path``), the connection path keeps track of the following +information: + +- Outgoing path challenges. See `Sending Path Challenges`_. + +- Incoming path challenge. + +- Spin bit (``cop_max_packno``, ``cop_spin_bit``, and ``COP_SPIN_BIT``). + +- DPLPMTUD state. + +ifc_u.cli +--------- + +Client-specific state. This is where pointers to "crypto streams" are +stored; they are not in the ``ifc_pub.all_streams`` hash. + +ifc_u.ser +--------- + +The server-specific state is only about push promises. + +ifc_idle_to +----------- + +Idle timeout. + +ifc_ping_period +--------------- + +Ping period. + +ifc_bpus +-------- + +A hash of buffered priority updates. It is used when a priority update +(part of the Extensible HTTP Priorities extension) arrives before the +stream it is prioritizing. + +ifc_last_max_data_off_sent +-------------------------- + +Value of the last MAX_DATA frame sent. This is used to limit the number +of times we send the MAX_DATA frame in response to a DATA_BLOCKED frame. + +ifc_min_dg_sz +------------- + +Minimum size of the DATAGRAM frame. Used by the eponymous extension. + +ifc_max_dg_sz +------------- + +Maximum size of the DATAGRAM frame. Used by the eponymous extension. + +ifc_pts +------- + +PTS stands for "Packet Tolerance Stats". Information collected here +is used to calculate updates to the packet tolerance advertised to the +peer via ACK_FREQUENCY frames. Part of the Delayed ACKs extension. + +ifc_stats +--------- + +Cumulative connection stats. + +ifc_last_stats +-------------- + +Copy of `ifc_stats`_ last time ``ci_log_stats()`` was called. Used +to calculate the difference. + +ifc_ack +------- + +One or more cached incoming ACK frames. Used for `ACK merging`_. + +Managing SCIDs +============== + +Source Connection IDs -- or SCIDs for short -- are stored in the `ifc_cces`_ +array. + +Each of ``struct conn_cid_elem`` contains the CID itself, the CID's port or +sequence number, and flags: + +- ``CCE_USED`` means that this Connection ID has been used by the peer. This + information is used to check whether the peer's incoming packet is using + a new DCID or reusing an old one when the packet's DCID does not match + this path's current DCID. + +- ``CCE_REG`` signifies that the CID has been registered with the user-defined + ``ea_new_scids()`` callback. + +- ``CCE_SEQNO`` means that the connection has been issued by this endpoint + and ``cce_seqno`` contains a valid value. Most of SCIDs are issued by + either endpoint, with one exception: The DCID included in the first few + packets sent by the client becomes an interim SCID for the server and it + does not have a sequence number. This "original" SCID gets retired 2 + seconds after the handshake succeeds, see the ``AL_RET_CIDS`` alarm. + +- ``CCE_PORT`` is used to mark the special case of hashing connections by + port number. In client mode, the lsquic engine may, under some circumstances, + hash the connections by local port number instead of connection ID. + In that case, ``cce_port`` contains the port number used to hash the + connection. + +Each CIDs is hashed in the of the "CID-to-connection" mapping that the engine +maintains. If it is not in the hash, incoming packets that use this CID as +DCID will not be dispatched to the connection (because the connection will not +be found). + +Path Migration +============== + +What follows assumes familiarity with `Section 9 +`__ +of the Transport I-D. + +Server +------ + +The server handles two types of path migration. In the first type, the +client performs probing by sending path challenges; in the second type, +the migration is due to a NAT rebinding. + +The connection keeps track of different paths in `ifc_paths`_. Path +objects are allocated out of the ``ifc_paths`` array. They are of type +``struct conn_path``; one of the members is ``cop_path``, which is the +network path object used to send packets (via ``po_path``). + +Each incoming packet is fed to the engine using the +``lsquic_engine_packet_in()`` function. Along with the UDP datagram, +the local and peer socket addresses are passed to it. These addresses are +eventually passed to the connection via the ``ci_record_addrs()`` call. +The first of these calls -- for the first incoming packet -- determines the +*current path*. When the address pair, which is a four-tuple of local +and remote IP addresses and port numbers, does not match that of the +current path, a new path object is created, triggering migration logic. + +``ci_record_addrs()`` returns a *path ID*, which is simply the index of +the corresponding element in the ``ifc_paths`` array. The current path +ID is stored in ``ifc_cur_path_id``. The engine assigns this value to +the newly created incoming packet (in ``pi_path_id``). The packet is +then passed to ``ci_packet_in()``. + +The first part of the path-switching logic is in ``process_regular_packet()``: + +:: + + case REC_ST_OK: + /* --- 8< --- some code elided... */ + saved_path_id = conn->ifc_cur_path_id; + parse_regular_packet(conn, packet_in); + if (saved_path_id == conn->ifc_cur_path_id) + { + if (conn->ifc_cur_path_id != packet_in->pi_path_id) + { + if (0 != on_new_or_unconfirmed_path(conn, packet_in)) + { + LSQ_DEBUG("path %hhu invalid, cancel any path response " + "on it", packet_in->pi_path_id); + conn->ifc_send_flags &= ~(SF_SEND_PATH_RESP + << packet_in->pi_path_id); + } + +The above means: if the current path has not changed after the packet +was processed, but the packet came in on a different path, then invoke +the "on new or unconfirmed path" logic. This is done this way because +the current path may be have been already changed if the packet contained +a PATH_RESPONSE frame. + +First time a packet is received on a new path, a PATH_CHALLENGE frame is +scheduled. + +If more than one packet received on the new path contain non-probing frames, +the current path is switched: it is assumed that the path change is due to +NAT rebinding. + +Client +------ + +Path migration is controlled by the client. When the client receives +a packet from an unknown server address, it drops the packet on the +floor (per spec). This code is in ``process_regular_packet()``. + +The client can migrate if ``es_allow_migration`` is on (it is in the default +configuration) and the server provides the "preferred_address" transport +parameter. The migration process begins once the handshake is confirmed; +see the ``maybe_start_migration()`` function. The SCID provided by the +server as part of the "preferred_address" transport parameter is used as the +destination CID and path #1 is picked: + + +:: + + copath = &conn->ifc_paths[1]; + migra_begin(conn, copath, dce, (struct sockaddr *) &sockaddr, params); + return BM_MIGRATING; + +In ``migra_begin``, migration state is initiated and sending of a +PATH_CHALLENGE frame is scheduled: + +:: + + conn->ifc_mig_path_id = copath - conn->ifc_paths; + conn->ifc_used_paths |= 1 << conn->ifc_mig_path_id; + conn->ifc_send_flags |= SF_SEND_PATH_CHAL << conn->ifc_mig_path_id; + LSQ_DEBUG("Schedule migration to path %hhu: will send PATH_CHALLENGE", + conn->ifc_mig_path_id); + +Sending Path Challenges +----------------------- + +To send a path challenge, a packet is allocated to be sent on that path, +a new challenge is generated, the PATH_CHALLENGE is written to the +packet, and the packet is scheduled. All this happens in the +``generate_path_chal_frame()`` function. + +:: + + need = conn->ifc_conn.cn_pf->pf_path_chal_frame_size(); + packet_out = get_writeable_packet_on_path(conn, need, &copath->cop_path, 1); + /* --- 8< --- some code elided... */ + w = conn->ifc_conn.cn_pf->pf_gen_path_chal_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), + copath->cop_path_chals[copath->cop_n_chals]); + /* --- 8< --- some code elided... */ + lsquic_alarmset_set(&conn->ifc_alset, AL_PATH_CHAL + path_id, + now + (INITIAL_CHAL_TIMEOUT << (copath->cop_n_chals - 1))); + +If the path response is not received before a timeout, another path challenge +is sent, up to the number of elements in ``cop_path_chals``. The timeout +uses exponential back-off; it is not based on RTT, because the RTT of the +new path is unknown. + +Receiving Path Responses +------------------------ + +When a PATH_RESPONSE frame is received, the path on which the corresponding +challenge was sent may become the new current path. See +``process_path_response_frame()``. + +Note that the path ID of the incoming packet with the PATH_RESPONSE frame is +not taken into account. This is by design: see +`Section 8.2.2 of the Transport I-D +`__. + +Stream Priority Iterators +========================= + +Creating Streams on the Server +============================== + +Calculating Packet Tolerance +============================ + +When the Delayed ACKs extension is used, we advertise our ``Packet Tolerance`` +to peer. This is the number of packets the peer can receive before having to +send an acknowledgement. By default -- without the extension -- the packet +tolerance is 2. + +Because we `merge ACKs <#ack-merging>`__, receiving more than one ACK between +ticks is wasteful. Another consideration is that a packet is not declared +lost until at least one RTT passes -- the time to send a packet and receive +the acknowledgement from peer. + +To calculate the packet tolerance, we use a feedback mechanism: when number +of ACKs per RTT is too high, we increase packet tolerance; when number of +ACKs per RTT is too low, we decrease packet tolerance. The feedback is +implemented with a `PID Controller `__: +the target is the number of ACKs per RTT, normalized to 1.0. + +See the function ``packet_tolerance_alarm_expired()`` as well as comments +in ``lsquic.h`` that explain the normalization as well as the knobs available +for tuning. + +The pre-normalized target is a function of RTT. It was obtained +empirically using netem. This function together with the default +PID controller parameters give good performance in the lab and in +some limited interop testing. + +Anatomy of Outgoing Packet +************************** + +Overview +======== + +The outgoing packet is represented by ``struct lsquic_packet_out``. An +outgoing packet always lives on one -- and only one -- of the +`Send Controller`_'s `Packet Queues`_. For that, ``po_next`` is used. + +Beyond the packet number, stored in ``po_packno``, the packet has several +properties: sent time (``po_sent``), frame information, encryption +level, network path, and others. Several properties are encoded into +one or more bits in the bitmasks ``po_flags`` and ``po_lflags``. +Multibit properties are usually accessed and modified by a special +macro. + +The packet has a pointer to the packetized data in ``po_data``. +If the packet has been encrypted but not yet sent, the encrypted +buffer is pointed to ``po_enc_data``. + +Packet Payload +============== + +The payload consists of the various frames -- STREAM, ACK, and others -- +written, one after another, to ``po_data``. The header, consisting of +the type byte, (optional) connection ID, and the packet number is constructed +when the packet is just about to be sent, during encryption. This +buffer -- header and the encrypted payload are stored in a buffer +pointed to by ``po_enc_data``. + +Because stream data is written directly to the outgoing packet, the +packet is not destroyed when it is declared lost by the `loss detection +logic <#loss-detection-and-retransmission>`__. Instead, it is repackaged +and sent out again as a new packet. Besides assigning the packet a +new number, packet retransmission involves removing non-retransmittable +frames from the packet. (See ``lsquic_packet_out_chop_regen()``.) + +Historically, some places in the code assumed that the frames to be +dropped are always located at the beginning of the ``po_data`` buffer. +(This was before a `frame record <#frame-records>`__ was created for +each frame). The cumulative size of the frames to be removed is in +``po_regen_sz``; this size can be zero. Code that generates +non-retransmittable frames still writes them only to the beginning +of the packet. + +The goal is to drop ``po_regen_sz`` and to begin to write ACK and +other non-retransmittable frames anywhere. This should be possible +to do now (see ``lsquic_packet_out_chop_regen()``, which can support +such use after removing the assertion), but we haven't pulled the +trigger on it yet. Making this change will allow other code to become +simpler: for example, the opportunistic ACKs logic. + +Frame Records +============= + +Each frame written to ``po_data`` has an associated *frame record* stored +in ``po_frecs``: + +:: + + struct frame_rec { + union { + struct lsquic_stream *stream; + uintptr_t data; + } fe_u; + unsigned short fe_off, + fe_len; + enum quic_frame_type fe_frame_type; + }; + +Frame records are primarily used to keep track of the number of unacknowledged +stream frames for a stream. When a packet is acknowledged, the frame records +are iterated over and ``lsquic_stream_acked()`` is called. The second purpose +is to speed up packet resizing, as frame records record the type, position, +and size of a frame. + +Most of the time, a packet will contain a single frame: STREAM on the sender +of data and ACK on the receiver. This use case is optimized: ``po_frecs`` is +a union and when there is only one frame per packets, the frame record is +stored in the packet struct directly. + +Evanescent Connection +********************* + +*Files: lsquic_pr_queue.h, lsquic_pr_queue.c* + +"PR Queue" stands for "Packet Request Queue." This and the Evanescent +Connection object types are explaned below in this section. + +Overview +======== + +Some packets need to be replied to outside of context of existing +mini or full connections: + +1. A version negotiation packet needs to be sent when a packet + arrives that specifies QUIC version that we do not support. + +2. A stateless reset packet needs to be sent when we receive a + packet that does not belong to a known QUIC connection. + + +The replies cannot be sent immediately. They share outgoing +socket with existing connections and must be scheduled according +to prioritization rules. + +The information needed to generate reply packet -- connection ID, +connection context, and the peer address -- is saved in the Packet +Request Queue. + +When it is time to send packets, the connection iterator knows to +call prq_next_conn() when appropriate. What is returned is an +evanescent connection object that disappears as soon as the reply +packet is successfully sent out. + +There are two limits associated with Packet Request Queue: + +1. Maximum number of packet requests that are allowed to be + pending at any one time. This is simply to prevent memory + blowout. + +2. Maximum verneg connection objects to be allocated at any one + time. This number is the same as the maximum batch size in + the engine, because the packet (and, therefore, the connection) + is returned to the Packet Request Queue when it could not be + sent. + +We call this a "request" queue because it describes what we do with +QUIC packets whose version we do not support or those packets that +do not belong to an existing connection: we send a reply for each of +these packets, which effectively makes them "requests." + +Packet Requests +=============== + +When an incoming packet requires a non-connection response, it is added +to the Packet Request Queue. There is a single ``struct pr_queue`` per +engine -- it is instantiated if the engine is in the server mode. + +The packet request is recorded in ``struct packet_req``, which are kept +inside a hash in the PR Queue. The reason for keeping the requests in +a hash is to minimize duplicate responses: If a client hello message +is spread over several incoming packets, only one response carrying the +version negotiation packet (for example) will be sent. + +:: + + struct packet_req + { + struct lsquic_hash_elem pr_hash_el; + lsquic_cid_t pr_scid; + lsquic_cid_t pr_dcid; + enum packet_req_type pr_type; + enum pr_flags { + PR_GQUIC = 1 << 0, + } pr_flags; + enum lsquic_version pr_version; + unsigned pr_rst_sz; + struct network_path pr_path; + }; + +Responses are created on demand. Until that time, everything that is +necessary to generate the response is stored in ``packet_req``. + +Sending Responses +================= + +To make these packets fit into the usual packet-sending loop, +each response is made to resemble a packet +sent by a connecteion. For that, the PR Queue creates a connection +object that only lives for the duration of batching of the packet. +(Hence the connection's name: *evanescent* connection.) This connection +is returned by the ``lsquic_prq_next_conn()`` by the connection iterator +during the `batching process <#batching-packets>`__ + +For simplicity, the response packet is generated in this function as well. +The call to ``ci_next_packet_to_send()`` only returns the pointer to it. + +Send Controller +*************** + +*Files: lsquic_send_ctl.h, lsquic_send_ctl.c* + +.. _overview-4: + +Overview +======== + +The Send Controller manages outgoing packets and the sending rate: + +- It decides whether packets can be sent + +- It figures out what the congestion window is + +- It processes acknowledgements and detects packet losses + +- It allocates packets + +- It maintains sent packet history + +The controller allocates, manages, splits, coalesces, and destroys +outgoing packets. It owns these packets. + +The send controller services two modules: + +- Full connection. gQUIC and IETF full connections use the send + controller to allocate packets and delegate packet-sending + decisions to it. + +- Stream. The stream uses the stream controller as the source of + outgoing packets to write STREAM frames to. + +Packet Life Cycle +================= + +A new outgoing packet is allocated and returned to the connection or the +stream. Around this time (just before or just after, depending on the +particular function call to get the packet), the packet is placed on the +Scheduled Queue. + +When the engine is creating a batch of packets to send, it calls +``ci_next_packet_to_send()``. The connection removes the next packet from +its Scheduled Queue and returns it. The engine now owns the outgoing +packet, but only while the batch is being sent. The engine *always +returns the packet* after it tries to send it. + +If the packet was sent successfully, it is returned via the +``ci_packet_sent`` call, after which it is appended to the Unacked Queue. +If the packet could not be sent, ``ci_packet_not_sent()`` is called, at +which point it is prepended back to the Schedule Queue to be tried +later. + +There are two ways to get off the Unacked Queue: being acknowledged or +being lost. When a packet is acknowledged, it is destroyed. On the other +hand, if it is deemed lost, it is placed onto the Lost Queue, where it +will await being rescheduled. + +Packet Queues +============= + +.. image:: lsquic-packet-queues.png + +Buffered Queue +-------------- + +The Buffered Queue is a special case. When writing to the stream occurs +outside of the event dispatch loop, new outgoing packets begin their +life in the Buffered Queue. They get scheduled during a connection tick, +making their way onto the Scheduled Queue. + +There are two buffered queues: one for packets holding STREAM frames +from the highest-priority streams and one for packets for streams with +lower priority. + +Scheduled Queue +--------------- + +Packets on the Scheduled Queue have packet numbers assigned to them. In +rare cases, packets may be removed from this queue before being sent +out. (For example, a stream may be cancelled, in which case packets that +carry its STREAM frames may end up empty.) In that case, they are marked +with a special flag to generate the packet number just before they are +sent. + +Unacked Queue +------------- + +This queue holds packets that have been sent but are yet to be +acknowledged. When a packet on this queue is acknowledged, it is +destroyed. + +The loss detection code runs on this queue when ACKs are received or +when the retransmission timer expires. + +This queue is actually three queues: one for each of the IETF QUIC's +Packet Number Spaces, or PNSs. The PNS_APP queue is what is used by +gQUIC and IETF QUIC server code. PNS_INIT and PNS_HSK are only used by +the IETF QUIC client. (IETF QUIC server handles those packet number +spaces in its mini conn module.) + +In addition to regular packets, the Unacked Queue holds `loss +records <#loss-records>`__ and `poisoned packets <#poisoned-packets>`__. + +Lost Queue +---------- + +This queue holds lost packets. These packets are removed from the +Unacked Queue when it is decided that they have been lost. Packets on +this queue get rescheduled after connection schedules a packet with +control frames, as those have higher priority. + +0-RTT Stash Queue +----------------- + +This queue is used by the client to retransmit packets that carry 0-RTT +data. + +Handling ACKs +============= + +Acknowledgements are processed in the function +``lsquic_send_ctl_got_ack``. + +One of the first things that is done is ACK validation. We confirm that +the ACK does not contain any packet numbers that we did not send. +Because of the way we `generate packet numbers <#packet-numbers>`__, +this check is a simple comparison. + +The nested loops work as follows. The outer loop iterates over the +packets in the Unacked Queue in order -- meaning packet numbers +increase. In other words, older packets are examined first. The inner +loop processes ACK ranges in the ACK *backwards*, meaning that both +loops follow packets in increasing packet number order. It is done this +way as an optimization. The (previous) alternative design of looking +up a packet number in the ACK frame, even if using binary search, is +slower. + +The code is optimized: the inner loop has a minimum possible number of +branches. These optimizations predate the more-recent, higher-level +optimization. The latest ACK-handling optimization added to the code +combines incoming ACKs into a single ACK (at the connection level), thus +reducing the number of times this loop needs to be used by a lot, +sometimes by a significant factor (when lots of data is being sent). +This makes some of the code-level optimizations, such as the use of +``__builtin_prefetch``, an overkill. + +Loss Records +============ + +A loss record is a special type of outgoing packet. It marks a place in +the Unacked Queue where a lost packet had been -- the lost packet itself +having since moved on to the Lost Queue or further. The loss record and +the lost packet form a circular linked list called the "loss chain." +This list contains one real packet and zero or more loss records. The +real packet can move from the Unacked Queue to the Lost Queue to the +Scheduled Queue and back to the Unacked Queue; its loss records live +only on the Unacked Queue. + +We need loss records to be able to handle late acknowledgements -- those +that acknowledge a packet *after* it has been deemed lost. When an +acknowledgment for any of the packet numbers associated with this packet +comes in, the packet is acknowledged and the whole loss chain is +destroyed. + +Poisoned Packets +================ + +A poisoned packet is used to thwart opportunistic ACK attacks. The +opportunistic ACK attack works as follows: + +- The client requests a large resource + +- The server begins sending the response + +- The client sends ACKs for packet number before it sees these packets, + tricking the server into sending packets faster than it would + otherwise + +The poisoned packet is placed onto the Unacked Queue. If the peer lies +about packet numbers it received, it will acknowledge the poisoned +packet, in which case it will be discovered during ACK processing. + +Poisoned packets cycle in and out of the Unacked Queue. A maximum of one +poisoned packet is outstanding at any one time for simplicity. (And we +don't need more). + +Packet Numbers +============== + +The Send Controller aims to send out packets without any gaps in the +packet number sequence. (The only exception to this rule is the handling +of poisoned packets, where the gap is what we want.) Not having gaps in +the packet number sequence is beneficial: + +- ACK verification is cheap + +- Send history updates are fast + +- Send history uses very little memory + +The downside is code complexity and having to renumber packets when they +are removed from the Scheduled Queue (due to, for example, STREAM frame +elision or loss chain destruction) or resized (due to a path or MTU +change, for instance). + +Some scenarios when gaps can be produced inadvertently are difficult to +test or foresee. To cope with that, a special warning in the send +history code is added when the next packet produces a gap. This warning +is limited to once per connection. Having a gap does not break +functionality other than ACK verification, but that's minor. On the +other hand, we want to fix such bugs when they crop up -- that's why the +warning is there. + +Loss Detection and Retransmission +================================= + +The loss detection and retransmission logic in the Send Controller was +taken from the Chromium code in the fall of 2016, in the beginning of +the lsquic project. This logic has not changed much since then -- only +some bugs have been fixed here and there. The code bears no resemblance +to what is described in the QUIC Recovery Internet Draft. Instead, `the +much earlier +document `__, +describing gQUIC, could be looked to for reference. + +Congestions Controllers +======================= + +The Send Controller has a choice of two congestion controllers: Cubic +and BBRv1. The latter was translated from Chromium into C. BBRv1 does +not work well for very small RTTs. + +To cope with that, lsquic puts the Send Controller into the "adaptive CC" +mode by default. The CC is selected after RTT is determined: below a +certain threshold (configurable; 1.5 ms by default), Cubic is used. +Until Cubic or BBRv1 is selected, *both* CC controllers are used -- +because we won't have the necessary state to instantiate a controller +when the decision is made. + +Buffered Packet Handling +======================== + +Buffered packets require quite a bit of special handling. Because they +are created outside of the regular event dispatch, a lot of things are +unknown: + +- Congestion window + +- Whether more incoming packets will arrive before the next tick + +- The optimal packet number size + +The Send Controller tries its best to accommodate the buffered packets +usage scenario. + +ACKs +---- + +When buffered packets are created, we want to generate an ACK, if +possible. This can be seen in ``send_ctl_get_buffered_packet``, which +calls ``ci_write_ack()`` + +This ACK should be in the first buffered packet to be scheduled. Because +the Send Controller does not dictate the order of buffered packet +creation -- high-priority versus low-priority -- it may need to move (or +steal) the ACK frame from a packet on the low-priority queue to a packet +on the high-priority queue. + +When buffered packets are finally scheduled, we have to remove ACKs from +them if another ACK has already been sent. This is because Chrome errors +out if out-of-order ACKs come in. + +Flushing QPACK Decoder +---------------------- + +The priority-based write events dispatch is emulated when the first +buffered packet is allocated: the QPACK decoder is flushed. Without it, +QPACK updates are delayed, which may negatively affect compression +ratio. + +Snapshot and Rollback +===================== + +The Send Controller snapshot and rollback functionality was implemented +exclusively for the benefit of the optimized ``lsquic_stream_pwritev`` +call. + +Complexity Woes +=============== + +The Send Controller is complicated. Because we write stream data to +packets directly and packets need to be resized, a lot of complexity +resides in the code to resize packets, be it due to repathing, STREAM +frame elision, or MTU changes. This is the price to be paid for +efficiency in the normal case. + + +Alarm Set +********* + +*Files: lsquic_alarmset.h, lsquic_alarmset.c, test_alarmset.c* + +The alarm set, ``struct lsquic_alarmset``, is an array of callbacks and +expiry times. To speed up operations, setting and unsetting alarms is +done via macros. + +The functions to ring [4]_ the alarms and to calculate the next alarm +time use a loop. It would be possible to maintain a different data +structure, such as a min-heap, to keep the alarm, and that would obviate +the need to loop in ``lsquic_alarmset_mintime()``. It is not worth it: +the function is not called often and a speed win here would be offset +by the necessity to maintain the min-heap ordering. + +Tickable Queue +************** + +*Files: lsquic_engine.c, lsquic_min_heap.h, lsquic_min_heap.c* + +The Tickable Queue is a min-heap used as a priority queue. Connections +on this queue are in line to be processed. Connections that were last +ticked a longer time ago have higher priority than those ticked +recently. (``cn_last_ticked`` is used for ordering.) This is intended to +prevent starvation as multiple connections vye for the ability to send +packets. + +The way the min-heap grows is described in `Growing +Min-Heaps <#growing-min-heaps>`__. + +Advisory Tick Time Queue +************************ + +*Files: lsquic_attq.h, lsquic_attq.c* + +This data structure is a mini-heap. Connections are ordered by the value +of the next time they should be processed (ticked). (Because this is not +a hard limit, this value is advisory -- hence its name.) + +This particular min-heap implementation has two properties worth +highlighting: + +Removal of Arbitrary Elements +============================= + +When a connection's next tick time is updated (or when the connection is +destroyed), the connection is removed from the ATTQ. At that time, it +may be at any position in the min-heap. The position is recorded in the +heap element, ``attq_elem->ae_heap_idx`` and is updated when elements are +swapped. This makes it unnecessary to search for the entry in the +min-heap. + +Swapping Speed +============== + +To make swapping faster, the array that underlies the min-heap is an +array of *pointers* to ``attq_elem``. This makes it unnecessary to update +each connection's ``cn_attq_elem`` as array elements are swapped: the +memory that stores ``attq_elem`` stays put. This is why there are both +``aq_elem_malo`` and ``aq_heap``. + +CID Purgatory +************* + +*Files: lsquic_purga.h, lsquic_purga.c* + +Overview +======== + +This module keeps a set of CIDs that should be ignored for a period +of time. It is used when a connection is closed: this way, late +packets will not create a new connection. + +A connection may have been deleted, retired, or closed. In the latter +case, it enters the `Draining State `__. +In this state, the connection is to ignore incoming packets. + +Structure +========= + +The purgatory keeps a list of 16-KB pages. A page looks like this: + +:: + + #define PURGA_ELS_PER_PAGE 273 + + struct purga_page + { + TAILQ_ENTRY(purga_page) pupa_next; + lsquic_time_t pupa_last; + unsigned pupa_count; + bloom_mask_el_t pupa_mask[BLOOM_N_MASK_ELS]; + lsquic_cid_t pupa_cids[PURGA_ELS_PER_PAGE]; + void * pupa_peer_ctx[PURGA_ELS_PER_PAGE]; + struct purga_el pupa_els[PURGA_ELS_PER_PAGE]; + }; + +The reason for having CIDs and peer contexts in separate arrays is to be +able to call the ``ea_old_scids()`` callback when a page expires. A page +is expired when it is full and the last added element is more than +``pur_min_life`` microseconds ago. The minimum CID life is hardcoded as +30 seconds in lsquic_engine.c (see the ``lsquic_purga_new()`` call). + +To avoid scannig the whole array of CIDs in ``lsquic_purga_contains()``, +we use a Bloom filter. + +The Bloom filter is constructed using a 8192-bit bit field and 6 hash +functions. With 273 elements per page, this gives us 0.004% possibility +of a false positive. In other words, when we do have to search a page +for a particular CID, the chance of finding the CID is 99.99%. + +Quick calculation: + +.. code-block:: text + + perl -E '$k=6;$m=1<<13;$n=273;printf("%f\n", (1-exp(1)**-($k*$n/$m))**$k)' + +To extract 6 13-bit values from a 64-bit integer, they are overlapped: + +.. code-block:: text + + 0 10 20 30 40 50 60 + +----------------------------------------------------------------+ + | | + +----------------------------------------------------------------+ + 1111111111111 + 2222222222222 + 3333333333333 + 4444444444444 + 5555555555555 + 6666666666666 + +This is not 100% kosher, but having 6 functions gives a better guarantee +and it happens to work in practice. + +Memory Manager +************** + +*Files: lsquic_mm.h, lsquic_mm.c* + +The memory manager allocates several types of objects that are used by +different parts of the library: + +- Incoming packet objects and associated buffers + +- Outgoing packet objects and associated buffers + +- Stream frames + +- Frame records + +- Mini connections, both Google and IETF QUIC + +- DCID elements + +- HTTP/3 (a.k.a. "HQ") frames + +- Four- and sixteen-kilobyte pages + +These objects are either stored on linked list or in `malo <#malo-allocator>`__ +pools and are shared among all connections. (Full connections allocate outgoing +packets from per-connection malo allocators: this is done to speed up `ACK +processing <#handling-acks>`__.) + +The list of cached outgoing packet buffers is shrunk once in a while (see +the "poolst\_*" functions). Other object types are kept in the cache +until the engine is destroyed. One Memory Manager object is allocated per +engine instance. + +Malo Allocator +************** + +*Files: lsquic_malo.h, lsquic_malo.c* + +Overview +======== + +The malo allocator is a pool of objects of fixed size. It tries to +allocate and deallocate objects as fast as possible. To do so, it +does the following: + +1. Allocations occur 4 KB at a time. + +2. No division or multiplication operations are performed for + appropriately sized objects. (More on this below.) + +(In recent testing, malo was about 2.7 times faster than malloc for +64-byte objects.) + +Besides speed, the allocator provides a convenient API: +To free (put) an object, one does not need a pointer to the malo +object. + +To gain all these advantages, there are trade-offs: + +1. There are two memory penalties: + + a. Per object overhead. If an object is at least ROUNDUP_THRESH in + size as the next power of two, the allocator uses that power of + two value as the object size. This is done to avoid using + division and multiplication. For example, a 104-byte object + will have a 24-byte overhead. + + b. Per page overhead. Page links occupy some bytes in the + page. To keep things fast, at least one slot per page is + always occupied, independent of object size. Thus, for a + 1 KB object size, 25% of the page is used for the page + header. + +2. 4 KB pages are not freed until the malo allocator is destroyed. + This is something to keep in mind. + +Internal Structure +================== + +The malo allocator allocates objects out of 4 KB pages. Each page is +aligned on a 4-KB memory boundary. This makes it possible for the +``lsquic_malo_put()`` function only to take on argument -- the object +to free -- and to find the malo allocator object itself. + +Each page begins with a header followed by a number of slots -- up to +the 4-KB limit. Two lists of pages are maintained: all pages and free +pages. A "free" page is a page with at least one free slot in it. + +The malo allocator (``struct malo``) stores itself in the first page, +occupying some slots. + +Receive History +*************** + +*Files: lsquic_rechist.h, lsquic_rechist.c, test_rechist.c* + +.. _overview-5: + +Overview +======== + +The reason for keeping the history of received packets is to generate +ACK frames. The Receive History module provides functionality to add +packet numbers, truncate history, and iterate over the received packet +number ranges. + +.. _data-structures-3: + +Data Structures +=============== + +.. _overview-6: + +Overview +-------- + +The receive history is a singly-linked list of packet number ranges, +ordered from high to low: + +.. image:: rechist-linked-list.png + +The ordering is maintained as an invariant with each addition to the +list and each truncation. This makes it trivial to iterate over the +ranges. + +To limit the amount of memory this data structure can allocate, the +maximum number of elements is specified when Receive History is +initialized. In the unlikely case that that number is reached, new +elements will push out the elements at the tail of the linked list. + +Memory Layout +------------- + +In memory, the linked list elements are stored in an array. Placing them +into contiguous memory achieves three goals: + +- Receive history manipulation is fast because the elements are all + close together. + +- Memory usage is reduced because each element does not use pointers to + other memory locations. + +- Memory fragmentation is reduced. + +The array grows as necessary as the number of elements increases. + +The elements are allocated from and returned to the array with the aid +of an auxiliary data structure. An array of bitmasks is kept where each +bit corresponds to an array element. A set bit means that the element is +allocated; a cleared bit indicates that the corresponding element is +free. + +To take memory savings and speed further, the element array and the +array of bitmasks are allocated in a single span of memory. + +.. image:: rechist-memory-layout.png + +rechist_elem +------------ + +``re_low`` and ``re_count`` define the packet range. To save memory, we +assume that the range will not contain more than 4 billion entries and +use a four-byte integer instead of a second ``lsquic_packno_t``. + +``re_next`` is the index of the next element. Again, we assume that there +will be no more than 4 billion elements. The NULL pointer is represented +by ``UINT_MAX``. + +This struct is just 16 bytes in size, which is a nice number. + +lsquic_rechist +-------------- + +``rh_elems`` and ``rh_masks`` are the element array and the bitmask array, +respectively, as described above. The two use the same memory chunk. + +``rh_head`` is the index of the first element of the linked list. + +The iterator state, ``rh_iter``, is embedded into the main object itself, +as there is no expectation that more than one iterations will need to be +active at once. + +.. _notable-code-5: + +Notable Code +============ + +Inserting Elements +------------------ + +Elements may be inserted into the list when a new packet number is added +to history via ``lsquic_rechist_received()``. If the new packet number +requires a new range (e.g. it does not expand one of the existing +ranges), a new element is allocated and linked. + +There are four cases to consider: + +1. Inserting the new element at the head of the list, with it becoming + the new head. (This is the most common scenario.) The code that + does it is labeled ``first_elem``. + +2. Appending the new element to the list, with it becoming the new tail. + This code is located right after the ``while`` loop. + +3. Inserting the new element between two existing elements. This code is + labeled ``insert_before``. + +4. Like (3), but when the insertion is between the last and the + next-to-last elements and the maximum number of elements has been + reached. In this case, the last element's packet number + information can simply be replaced. This code is labeled + ``replace_last_el``. + +Growing the Array +----------------- + +When all allocated elements in ``rh_elems`` are in use +(``rh_n_used >= rh_n_alloced``), the element array needs to be expanded. +This is handled by the function ``rechist_grow``. + +Note how, after realloc, the bitmask array is moved to its new location +on the right side of the array. + +Handling Element Overflow +------------------------- + +When the array has grown to its maximum allowed size, allocating a new +element occurs via reusing the last element on the list, effectively +pushing it out. This happens in ``rechist_reuse_last_elem``. + +The first loop finds the last linked list element: that's the element +whose ``re_next`` is equal to ``UINT_MAX``. + +Then, the second loop finds the element that points to the last element. +This is the next-to-last (penultimate) element. This element's next +pointer will now be set to NULL, effectively dropping the last element, +which can now be reused. + +Iterating Over Ranges +--------------------- + +Iteration is performed by the ``lsquic_rechist_first`` and +``lsquic_rechist_next`` pair of functions. The former resets the internal +iterator. Only one iteration at a time is possible. + +These functions have a specific signature: they and the pointer to the +receive history are passed to the ``pf_gen_ack_frame`` function, which +generates an ACK frame. + +Clone Functionality +------------------- + +The Receive History can be initialized from another instance of a +receive history. This is done by ``lsquic_rechist_copy_ranges``. This +functionality is used during connection promotion, when `Tiny Receive +History <#tiny-receive-history>`__ that is used by the `IETF mini +connection <#mini-ietf-connection>`__ is converted to Receive History. + +Tiny Receive History +******************** + +*Files: lsquic_trechist.h, lsquic_trechist.c, test_trechist.c* + +.. _overview-7: + +Overview +======== + +The Tiny Receive History is similar to `Receive +History <#receive-history>`__, but it is even more frugal with memory. +It is used in the `IETF mini connection <#mini-ietf-connection>`__ as a +more costly `alternative to using bare bitmasks <#imc-recvd-packnos>`__. + +Because it is so similar to Receive History, only differences are +covered in this section. + +Less Memory +=========== + +No Trechist Type +---------------- + +There is no ``lsquic_trechist``. The history is just a single 32-bit +bitmask and a pointer to the array of elements. The bitmask and the +pointer are passed to all ``lsquic_trechist_*`` functions. + +This gives the user of Tiny Receive History some flexibility and saves +memory. + +Element +------- + +The linked list element, ``trechist_elem``, is just 6 bytes in size. The +assumptions are: + +- No packet number is larger than 2\ :sup:`32` - 1 + +- No packet range contains more than 255 packets + +- Linked list is limited to 256 elements + +Head Does Not Move +================== + +Because of memory optimizations described above, the head element is +always at index 0. The NULL pointer ``te_next`` is indicated by the value +0 (because nothing points to the first element). + +Array Does Not Grow +=================== + +The size of the element array is limited by the 32-bit bitmask. As a +further optimization, the number of ranges is limited to 16 via the +``TRECHIST_MAX_RANGES`` macro. + +Insertion Range Check +===================== + +A packet range spanning more than 255 (UCHAR_MAX) packets cannot be +represented. This will cause a failure, as it is checked for in the +code. + +This many packets are unlikely to even be required to complete the +handshake. If this limit is hit, it is perhaps good to abort the mini +connection. + +Set64 +***** + +*Files: lsquic_set.h, lsquic_set.h, test_set.c* + +This data structure (along with *Set32*, which is not currently used +anywhere in the code) is meant to keep track of a set of numbers that +are always increasing and are not expected to contain many gaps. +Stream IDs fit that description, and ``lsquic_set64`` is used in both +gQUIC and IETF QUIC full connections. + +Because one or two low bits in stream IDs contain stream type, the +stream IDs of different types are stored in different set structures; +otherwise, there would be gaps. For example, see the +``conn_is_stream_closed()`` functions (there is one in each gQUIC and +IETF QUIC full connection code). + +Appendix A: List of Data Structures +*********************************** + +The majority of data structures employed by lsquic are linked lists and, +to a lesser extent, arrays. This makes the code simple and fast +(assuming a smart memory layout). + +Nevertheless, a few places in the code called for more involved and, at +times, customized data structures. This appendix catalogues them. + +This is the list of non-trivial data structures implemented in lsquic: + +Ring Buffer Linked Lists +======================== + +- `Receive History <#receive-history>`__ + +- `Tiny Receive History <#tiny-receive-history>`__ + +Hashes +====== + +- lsquic_hash + +- hash_data_in + +Min-heaps +========= + +- `Advisory Tick Time Queue <#advisory-tick-time-queue>`__ + +- lsquic_min_heap + +Bloom Filters +============= + +- CID Purgatory + + +Appendix B: Obsolete and Defunct Code +************************************* + +Mem Used +======== + +Engine History +============== + +QLOG +==== + + +.. [1] + This is due to the limitation of the QPACK library: the decoder can + read input one byte at a time, but the encoder cannot write output + one byte at a time. It could be made to do that, but the effort is + not worth it. + +.. [2] + Mini conn structs are allocated out of the `Malo + Allocator <#malo-allocator>`__, which used to be limited to objects + whose size is a power of two, so it was either fitting it into 128 + bytes or effectively doubling the mini conn size. + +.. [3] + This two-step packet parsing mechanism is left over from the + little-endian to big-endian switch in gQUIC several years ago: + Before parsing out the packet number, it was necessary to know + whether it is little- or big-endian. It should be possible to + do away with this, especially once gQUIC is gone. + +.. [4] + This term was picked consciously: alarms *ring*, while timers do + other things, such as "fire" and so on. diff --git a/external/lsquic/docs/lsquic-engine-conns.drawio b/external/lsquic/docs/lsquic-engine-conns.drawio new file mode 100644 index 0000000..a5ad8ed --- /dev/null +++ b/external/lsquic/docs/lsquic-engine-conns.drawio @@ -0,0 +1 @@ +7Vzrc5s4EP9rPPcpHj14+WPjpNfeXB83baftRxlkYIKRD3Bi968/CRAGGTuyyyN1L5NJpEUvdn8r7a4kJni+2v6ZkHXwjnk0miDgbSf4boIQNBCaiF/g7QqKbeGC4CehVxbaEz6FP2hJBCV1E3o0bRTMGIuycN0kuiyOqZs1aCRJ2FOz2JJFzV7XxKcHhE8uiQ6pX0MvCwqqg+w9/Q0N/UD2DK1Z8WRFZOHyTdKAeOypRsL3EzxPGMuK1Go7p5FgnuRLUe/1kafVwBIaZzoVtttv+C//zp/fsS/hvft2zbbuDXaKZh5JtCnfuBxttpMscDfJIxWNwAm+pbH3SrCVZ92IpGnocmKQraLyeZol7IHOWcSSvDa2XIculqKmxxlbtsqSLGA+i0l0v6fytrNk963qiGe+8wyYIlPm7wSuQJXbydw2zKp6PF1UM8vcvpLIyDrFQKVMMacswyiqDdwj1FmKtysYIoZ/lPMlKWWbxKUn2I1KcGQk8Wl2Si6wQghXLcpWlL8vr/i0x6BZ4iqowU/SEhqRLHxsDpiUquBXzVU9fGQhfxUEtgq8S6U1bLPZRPGiZa065pSGIITNlhAAzZYKThy0xDFGdrVia1EgPTVi0OgHmubJganlLdOpl+eJYgQyVxPCnpQr2BnKZqK+lW1m2ZhY5ykbmFp7BSs0B2CsqXGgS42j0DOpLfv6SJOQc5wmZfUO1dCwNNXQMMZUQ2w3QWpjNAVKK7qaaCNnCoxGc9h2tHSxM/jDlwl/07Lr8IdnwL/TBWc4+Bu68LdGhT9owt8wlLVDF/vmTFkcLGU56xn4dgvurYgz69YLH3nSF8l5YcCGLOZFX8kCvL9amQN1Sdgm9nJ9ERB5CsKMflqTXPhP3B5vqks5CppkdHsaQ4cSl5x0mpyUkq4BAqIWRFjguPAb3D6XtYfm6/wt/ytnyUtZpZqCJnU8o23GcdACW1Y/zIVQk7u4L+7Ozgbu7QsFrqVMAZVXNhpypXCfYW6OZtQHV0fB+IEcnLExDk1tObx2a1BvF8hBxYCkgSQvErXgLy9PaD27IKBh1cpqEafC1jQga5GMwvihycO9Vdh0iC4LQKDTBuH5AlsQ98HPQfFhk/HR0+5tQ6kOz9qGTjsuBjINlWnEgBeahpVNKX0iFZg9m4awzTYcCa7XjFYIJiPC1cCKZTe7MJ5mQmX5hMN6MrAtXHzaIpy/UItQtbarmWA8i1DP3M4tQnw1FsShSzm2RYjOsMyN65UDHl0ObfHCI3Iwr1cO1uhyQPpysK5XDrPR5YD15WBfrRws3chNf3IwWuQwmM0OprY01L/XTPirNNpn7cgYyMdUQhtVHONso13dxzCHNdpRW4RrQLz+LnCtneoZA66mAlf1pIV2SGSmLnwDw3XUCN5vBNdRjxhB5QAORmh6YVAEKRO1DW21qb4h20sUT/vYWy3SfPWgRaPOscpKXrX7s2FnyxgYsBrHPv8HbCeAxaPOssoJMnypUYCVwLM1tFHQFhvt0peVh32Pn1+edO/LQt2Yc2++rGz4dEzhPd0KLHwOV1RgnuVp90F7E/xdGN+8oVwEo2yEDyJadSPc0A2f9radgDWOW758vh6Ef3SPnPWnMuga+KoexMGjHzbDGmGK4a+iDLCzPspNFCnG5w2YUYNw8NhuyNlOorIFb6onRno2YLCGi/jLoLvTWx+9oFteFXz2ntWo/uSNErMzLzXPkeJPIqRnnp97zUo9f2JZp69ZqeUxapTv55qVobFAj6Bq08YtkxswBX3EJPXVre9bJtJOel4HR42bQ2VhsNXdGe2YjhLRNJxhVxh5q+e0Kyf8NrKIhB/3niNe14P7Z0N5o304ayzOpAa1RHuqO1HH73pNunfetPeYe3PeDI1NkJ9xMobh60G8wx7byTAPleQN7wSBD5vM55rp8+RH4j5QsQqCEvUd8n25pJbb6tx59mwBQD94tkfHs6l3By5iaS6DsWclj6RBZR70IBBH95BjfwLROskrVgvOh4vk0W+Qr3cJ6V5M6k1ClpbKfA5CMVN5IfETshIMDcQ3T/gYxeoOaOyL/Q/xOZKY+DTVECUgUejHeYfWvxvxdZLbiC6zfU7W2t+GSqecRlZCRPEiXedlwIe8X5eIQ+ApzQPHAcnyf3Qnn3Q3mgXNbcEl5RJ3BWbBMmE5Q8JtzqBl/kgMYB1xVOVj7qz3rwEV77lnyR9pfTj5o03euc+6lUIejf9BE/5vLiAl+iggQcUas6Pe9GKNzETc/4QrFDOxt9ZY40qSHL3LOS6ci1uhnKFLolflg4ytjyh5cxpo6HluLBafCIJOma8toSD/EZwiCxrdssSjiTKulPclVhh8h/a5vwVji+6KmtX+oVK7g3nGULaQnZa4a3WbqT7PwAtsIp7df1+o8DP2X2nC9/8B \ No newline at end of file diff --git a/external/lsquic/docs/lsquic-engine-conns.png b/external/lsquic/docs/lsquic-engine-conns.png new file mode 100644 index 0000000000000000000000000000000000000000..1852d4e9fb0a556c31b6387bac9ddec39148d5c0 GIT binary patch literal 97346 zcmd42dpy(q|37|Rmqn5kA%_$e9ptdtX62A!<}l~OoR71yqYc}r)JlaMMk$icO3L|6 zhjoy1q~sKe&j@$tMr?vMN9u|y{aYw0!0YySA- z4`~~mrOO|G{FU{`A7XK<#le-8fc`gs{2@h;vLZy$xMAT`;vd`K7QdfugXxnQ?5J&U z%WW_ihr`hgWd(6`!x`WexJ6@xhKGd{Lx10f>BIDQ>%(@#4BTM)+u-I1BzQ1H>LTF! z-oM`;L?Y7vZVS(d4X09rw!yFnU478hcF%BnD1*ZWPaWLAgMmJ{499?H;0Dt0_fzhF zp0Hv-(~IGC_uC9$x+q<^=my*hEJ$d05Q!B;1FeVuJz>&rf;+~M z9?98lPt^w~FtA5B*fOo$V?yah zEL4yo#g-lpnt;V1y(u^XCxTAVr-fURf?dN5gBdo?4j7A|a4cwogmR9w3np4y7+Mg? z9^Bv{t5_t~2}ZWXSa=v%!5R9&E^c^hn`mB$gFYoXoaY$n%{B4Nok#PQrh?aYae zJf;iV9&Q!Ob+X1s+Zk9hP)r1tM2~i{cPE0+7*K-3JUAGeAn#a)M^sc)3~15}WW4KXKOguZpGR)S7>*>HT2m6Cz2IJta zEDH~BG|Yx+O=pDA?3`Ia_B^6DgNm}jIeLb;y2e-r!3Z`X(bPyg8kb8Aj$%i;+FJuN zz=Z2l^<$7>yeO6f1&xG9hFgO{VvIOEFB_^84aISdcD5x1^FleWSUV=t32WevH;M^~ zVcOg9ELm7*I}bcQD1^=7g-2S3av}_{G`lDs+slRl&H$F`gs0khdIodt-03hI1G^Aw zXNr+073La_0*!LvMrh6?vc?L zLac{7I?URc9L9CGiXufCxgy;Sg6*BWU7W1Ly@T|T2&SvGjg6ZFm27Sv>+NOdM&{{r zEwR?2ERXOY11pk~n@705BMC=~4z?u)(W&;Kj!Y_;Dbd!8~V0qE7pjL@Cvc8ws-W#5{xJoG4|*nnzMs}Ybc3^rrV;eTrda=wjDl< z8tF!GB0Iq`h?qzU8)3m@QbKX;AZNo6S1N+5Ph;}jDUpU4^GF+D+YzK_C-Y#qC6W;3 z6-GmXQE;Nb122lsbC2?7dPiE=(%p?1Ft~L{sJVrwffu+LYvbWeK}8#aDPd5Kv83Q= zlrtO4iuAyndwUQZ$V?uSU=il!iFEXia>jY+hXL@z*jRK(gndoq{Z3C>uKr*&u`&X%!S^VG!X=3PM=pIWgg6UWg;wBb2Nk zZeeKeY-j0)iN+z!scdJo5zfgu3`?efvEf_*NMaCC&Pa-5EIQKKErK15iLh~?deW^( z7-A5a>EU2U&=1FYlh8E7AWp0sSkoXBAp+}VV;k;dVGv?r=j}#B;cXE#XBq)P#ycSK zEb}M=E;h)9$pbyO+eA4>1qZQcp5{j329{26ykV3xonwGyyOLdFX)qVB2uC)a=YT}G zTjHqtj=^C#3mdo%hh-4rXb?^2IXf|VY&!(OlI7%r@Uk>Ocw)j>E*v&IgzOLo-sc(Z z%%S1+9hodIeFKrz5Zs)?Sq=_NIx2+Z#lwfXJCmb4aE=aah58oIEY z?PI~*?dcX#bRxss9EqfvQ^O3HHXblnYgd{*ony&?6WlEv5HT2sP?rcU8G~>(cXXkV zkzO9=R(39q29};MgUDb*GEATC4ty6j#>LFL?p_ui9DBS$6c*-g1bAMNX|Swg4MVMB$xfmAcJ?@qqlbYDz*G+=S|5wD0&nJqS_4GJ7%@CJRty-= z%93Xr6zb{}qHhihL$iWHNtT|Do+yM-3>j$^26uI$J9*Oa(InuKF?I|h7jGSbiw(B4 zrdit=imruQ+FQgrv6&873%WIe1M_nCa^M&_kfV7HR7VEO1{;iI&|T;Zn3uhUHSkH; z2z!QojGHHL!Wc9I8%4wtVqx?sPm!mNc6G2~;bZM%2~HHEt&>fp3!TnHqhj3|=rEYA zHxr5WjwHHsgP3kH2t=d@BN%HQfy6}W8+k=hxNHuF0JpMrB6zTf=wRC@TSp?*5a(hD z3wDNikl7A|P-`O0D}rqA;$X`KzK)ED1VbR|+wsDT99VWXWUzQxI6d5fXkh4s^451i zFyQ)zLA+Q;rg@No3obg+(Ex`-!I=)x^e|$S6VZzZcOqKa7&uUD(Of(un2gl7HsWwm z!8|u}Co0j|0r&)rB_aloK(Ls=Ut?Twh7ky7wsWL~Rg8P65gmqL+6D(Bqqqn(je~Kv zL>op?!f9qmTb=uY6Q{+ zI2+kU#YSSNpl1pR?}ahodN_JSpdw@8ERK~23Pq*!T+qxgw+IA7A5M%80SzOm?l#1T zFf>MFy@(k5aC7i!OgM?;9O53tMmiDE)^-lDR&L zx}lsn=22`LCMq;cbWRyYmQFANjBX*KL`E1u8^QnoFvnjs61@JKTEneMA!mty{IT^9 z8%uLHZtlnPy#2oJ-&fMi( zyf!vWpl$5P@Ew)ePUh>$TI)Z;7SJ|3D%h?&wTZ z#w-g?^(}%2e&}0SmXzLF*GphUo-XPoz}nJ#=S}T5{QtSh^ox!>79!*M zR0Qwrrym!Bw3Ple;Wd(r%Jt_NI~@HlN={)j95sa7`i->PKIP1-4NOa{4N)2xI=(}L zpF)hj-n~1MqH*QJAX~-rvqm-Gy?D z;>v1&#X-mc%!#`@e%LE@R?qi*5bf?z!^EoS*)N&mzU&rL*Ts8bWj*ficKtZIo;N%J zp4|R$^Hhsc>uTAv)GwcWuiJF=jD0kFexL;mV%t9lA+}53Gswa{-v7Y8TGcj!ZUZ-H z2$BC0zU`@R(Vee##_T;_yQn&~T6Z5fb1ze-;wmB?obnnrO6IxcHK<4`80Md6NJl?q zg?6~<|6>i_-p?s}dg|`t+0vJUHMby%o&+q7s&IU<#KMQ~i*CZ(}fOtOjzx>5f}H^hS} z(B;jErEB|-e8@Had3AZhzK>+Pa__^_!f8})kVXB>n}nam8<6zZcT2K_i!m|n%z#U& zmoCqgPL8$|3+U-ZcXAFqQOmYVZOdjou3896IuRJ+wYj9Utr*j7lreGQ{HE5DNGa?e z63ICa$90zKgfA866Sl~J!BSSe9L!EVuhd%lzWnD3yX*zQVd!;JZh;0hZcF}&)yS+D zf2y<|-loNU1T((JBC$6~P|Wtfe|_NV#EY~6f`Z3S-dD|M8<1HcFGxRD-i8(?8a;~) z)?kk`;6 zMeNw(9xxZ1q<C27 zEQ&s8bg6iQZ*_S&8&g~l|1TQdJkH(&dwS)f7*(1omC+?FWB+diip2(3l+8OHJxL5!R`8a^}U0 z7he}vy;Q!*D502wf$jYyWj4gP_fvdxsp{>!=YQ((i+8O0@3BvS9FQtH_k9PH>mJwP zRW%*2juD_ELpuo9Z#0Ho6|j2u$Hc_Us|bOaEF=`05QaO7l%}NKOpcF_->s{wQ@;Xi zP30pg@=KTX!dLJEx<3tFr}*DN2R?GiEH{(=a#4bEEcuF^r1khoVp0V4uTgg+Z=*r> zU!$JAiU*C|h677unC-&FHTSfrI!|sEr-KfR+1^P;zW+t$H4_94p|RnNa_qX^SeafW zF-?&@?LclbKv|>^)`fjZHC>#%3qBaB()u8RP9J*b+w#kTca2S6NmILcz4y1>+UXWO zd+r`zcSA;U(U))XVBw-2e4TS%gOy5l&MxEO2lQ;^@j|veHx4*4HPACCbM3etv#k zqs-qOeq;3wk~5B)M*{a3Md&U|?^l%S?#!H<(i4@(bc($CaOWpt;C zPjzF}yy`ed5`#*bd6>Q!=h$|Q5W~PrQ5igd0n}$3N8Whw<7D;Kat=7M8YIyTc zpYf@O`2;cbvDV`8tNoAOjNKMG3`N$H4qD1Z?ck^A3eP+|fPa@GL*W<73-RQLyDmu! zM}s$5j^miX_}Uyw{^5Nu4Xf)(Gh~c zbIA324+aj&gDn&n{sToTd@Qo>-#1Eqv~?XKr@4_e`LbAiH0y zI;X!Te=5@|)~@8iSdrzQYBe;$z1^Y29wFYFL2f)65S z@%LW%KU8X6{_*U7Ep8@5YvRiTQ~azdl)Ea$IOMP4HCobOtr7ol7}s7YcR<9$T*fX> z0cZLyt-&$xpo{-THJ#a@5Hyc+wb5m@x^lVm=gqj;HJlf@uV$xxCY+!((k3+#hYJP{ zJQ!N9r4E{u|3{M|@)Tj%Shk{u=)gd^_HwG8z1LUkTJp7{`q4qbLmRYE;1kCG{)CRG zt5b(VHVPl+M!^w^a9paSgLHNew0jzd;g@8E=N1Bz5K|APSUXCFOx|t*4<50l&k$| zyJVIxuB9^T-=5KW^R*>gsKI{QEY+x*t&-Z7eBvK|M?@fVwudNPG||qNrg}n2GBwrR z>#bylFk)=2Sw!n*&evW|Hk5E*z;pgzebYeSe|bKf5NtgHDfH#vnO!W(ykNnPCg;9L zc?F-(n|!IuF@jx)`u8FQZ)#nR>&u+b6ei<3!o{Z96P~ydccpJurT+H@vwhZQQ&QV# zf&XH(N#UZI;`a_egK&26Ti0B9h2=BIe6uT&x}3P+dIeYOZTAJW^8fJcB7}4=O(Cuv z_+-9I*7$PM_s{p^hQiG=(jqj|b|+-n9@3o42>MqywnWekMun#%Yn%l2S@UBf+6>FL zt~hL2@WpM7YPO>MKaBntE`DPn-HBmb8rM3il6{lhR7!;jYx zI!gW6csLpIG^GD~tu*b$gTbQkkkq!)`uRs|lK$JF%(x-mnc-x$I2+%66ExO1o`@SQPvBG`hhWL%R8ROUt z{*!hS#D#sVp?zYvkZ`6lg)DS!dE;RL~#fI>Tdjtb+KiCN>-_(E5#Pe zy6uNL#otrOA;ITvIjS4PkG{~B z*88k!ZF^{1TOYwA25kLKaVT$eD_eHOMN)jNWFFRW*?^my^5}K++vZbvztL@|{-vGy zq%Y^<-=eQ?6`n^%8(=O<;Bhl2H72h9c>s!#HBQFnQ7u&9EUi7T3nw1?QgwFKgLq&5 zVcFi1^SD_nJkz4HrzU26BYtKJ6gTi3>7Sl!fe@aXY(BP`w%&@rLgtT(mI$XWCD}7x z$(vO+oZat}b5^InNmDSU1?`)P!4GU3yx#O(S60OTe4fe0o!OnzHrbTc_O@IzwXM6h zX;39Tw4<@CEIDPHtMlZGSsZji8qW;t%s1xklx@f_@aPBKRz&K)fH2-iy}Et`X;tDZ z*DxmgF$gTEIsc^X^x66|e)<~Kh-;L)fv$?0M?ch0?;EX97ye9e-B?$bf5&fwjupSX z<+<9Oa*BRtW+`?&C->(Qx$N@NTOWbs;ij6CI~>9P^qMQ*>{U>Hju{_*qxk&Ci-)Zr z4oD*wp6}N{Y1DV*7kz#Mq77UL!kFP0r>`g(OMM?4b8)S`1^>D{dQR$xA=<1tCD<nku>9lH_sV*>j!Pm+)h$~QKH9cV#@{7RuDpQO zu$?uo*}QAE-?;Zsb>#Qf&8`Mx{Ce{%tJxD zt3_+C1Gr`X{ar2WFbFN_kFNXoI-B6XENTV?<@SHQe$VH`viqCjaIuBn9;8}@;E9HC zoT(yfNa43q!-K`2e9Drzco;Eho~A`wVP4Q8#X~2}#VCWP_lxh}W?(L;jh=&N{cml; z;mE|%4>JYF7w~rx=rR3|GjxO2HHFQ;$DFXu0K`M?B@5|4bfD4^&g;rd)@+>4qe>wRRE2 z^9_u>Ys)9r5_OKuUn+Xom=UC9Fcl3qy&>tpkEOP{e|*8{0Hlb| z|DCx?EUOYZQ_MmJO||r!82niI*m)5zFb2EQ_x$lkRbT-YV(}P$>VwT|d~+fJChqQU zdcKs`Z5C>$>AD}QEHVsL>Qzx>wdr&y(DsN)T1M+kxJr_`lKttSyJe~7j#Yi&bafty z6XdQyoI`bGSE^?NljB~Ul`GJveOTK(ug8Q^jfW(IAcla_oE0(~7ohZ=y6a;c1q zC~~XS8^?&zQ(p^=ah+F;&#D;Hz5m=|#lM~67Iy;g*VZ{%F?Rskduw%;!-t&t`36(| zmGqH=h7RYzxh}aT*kSThP%9{GeL+w&{W@bl@$27RU|*^)R9i3k9|t2iC5dBYYH{Ib zect(_Mvnk@ho8y!X;g`v(D$&!^-nc8Epe z(o44|EB$E~8$6AX$x;{INy?o*_G3_&qX@me*@nJmntI<&=52(Ic7*%4!0}U}{?vP= z1G>fiUy4ty={FQc;%0KSYTEOwK3|qxJ_%Xz5YJ!JwI%W1Nyq`>9b9wf#FYu(%$L{_ z1Xa1FjK{{`nkani1Kf2IZL8wd!^Ra#pFiIy3K#==kB>dq5F%+? z=@u%k-XM4vxviV2jZ;lSxS2BK%$}Hs6A4X^#~>@t5XQ)Rst@{dQ|&6rynQSOxyxp< z@sg5N+r^&r0$bc@E-R_qLYW(T1^h8BJQ$nyi!4dwM#783hM5=aX0itjB}Q}V9Q&U& zZQSy=r@v{*n{|V7WhLqBz{X@JjVv>LY6SyEKjonlZ&%ftb@aKv=@7%sc1h6>$@KOZ zDGcWI7U5=2*^(yG*Qg%_G$VaPuyv8tB4NnXm2EKWO1EB4VfCoC);1Ml8!Gv%my*V)^Wn`j;`}%QmB?s>aeo zW2!eL{V_8B7{`MEo>RJ~yC4klVM;Ba_hRXRKlbyV0x-|*ZsjfhrFj&_T&v8*WtP_f z>NjTrR*{f3h&v5!rv$VpN3~!lyJ<#7|cUpToreOSp$OQbMH4y1Rxja(qDeb?x z%*pkb%ux!9E{(Nf8GQfQazy&AvCCy+o|Nntjpi8j7|S>P?4BzU_^Pid^3WP|gP$9{ z@^ehJj~bv7@PnO3X4Ya)cl}je;wV^Bik(qaw)RSIv2Q11{E&YQf&(lwE3Trf|rn;IV4xb8PqUYjXqf|iq82t7OIaq>X9fHrGfSYhf@JWU-essny;Nb|G~*qvW=LC{c4gh zT*=LuO^#p2Cei~pE0dx_7Ea!wg@WQJ zZTX`(L!lke#dcWIN29O-+|b%K1p21=KiKr8ok>sb+xp=NyGwV-i6}heC47pY7ZRk z-H@m$+_Le{egJIgfeNy>+5vtd$YbBD3=JMz{acv;gI4K3dnxGeMT^079R2AdcgqE; zC?!a4mNq^LIZtkxOY;CEK`dkNYTbF)qfOX1Nr4+=jjwpLUJ)%OF5Nl&hLjqmI4l5K zdwYl9+$ykQZ(f5C%^h;@B_y5>{f4b67R9>=Au(x0*D!jx;+jBd_1}gKhxD^MFr&U{ zP!xc;t|J~_Ms`Abk2Zd<1$%DJo6X7<>>t|JyX(Xw73th$hzwGM0ANY8us2O0l2vuD z;AXNFJ7mT+%+v6G_MgKIXOcg@F`V#BH~_>U+>A!7ajc1RTOIS^a_Kgckh~`?zoGTv zS}|q)q%nqIWLO9&%fvb;;SfkmUGVYKg$TGEzWE7YA$MgYcNv`-04uo>JtqhqnzsQ^ zLT+Kd*b8SVi@>9>m)0T#>e{?AfZ%!75{=Kfp)Kv-| z*tHnhrRS<7G%3SrBl0hg2qQ~tl|FDJJ3tQdhKtRcB_txMVdKL!c8VYu{{3;1C{l)=_w*;g^u{nQb66h0Ew<9aY6r!o?s@2WQwQAb3wDK!z zUd`I|-xr5YcrPqYK6wCERZ(zJ(S-22=*IV>V6ywbWQ8`nN-d|W1pn>)C|Og_D&rII zy(5D(sD7Qw!4$~Ct_-ts&;vN$;U}(~d6joPel$uf5=tO}33o!ysGGCnEiQ1+Y4o=F zbh;^$RTI>VQN4ExfJ>b*&TnPseF@!~HTg60we!K!4JQN3e)}zbO=uTl!Gs(LkL~!5 zn`sd_A_KInB|^CCtF-g1Ey5fiU8`gzrB%QgUyrd$C+9ZjJY zFxY2T*4kT%fp~nIt}yQ50o@m>mvBS3QyMB>x6JyKAeBy3eOr);@i=%YU++J)0AHNM zGygu6N~?gzBN)lXI_4D{_inXBYQ2PT)X`tf0V6QxB|BJbmNmZEgx+!D5r`ck#GV2L zu>!2b#mI{@D-szE7y*1ZORG_t;hOhff$6e@;-$mKfqYCov5O?GQmNYUKU2P9sYJHS zcp1UU+NHO*+C_y|Fgqp-o!rL~r}i56Noss~%^=`xa{k;~1g%_&=w zDyc?B{TXOv&J5*BV%s1=gH4CN{(yTBun`~He>t&@*mZPR$>v)jxYGD`fAU}xTnKOC7D5q&q5g)p&ivJdW z61rdS*_!}W+9wmeoEeg(Ph9+ZO7nh$sO2EPCPz8zljW-=tdR6YX_@ zEC{R@*)bNZqE2x-!*EvLM_HR+w@QVRriI*Z`mF5r@lu81#BKXGDyI=3=be2SK58AsdIVM*LSK^>@Vw$jRN;OGs zu%HS3s;aSzpJ%+qgopR{iAlcZ1rU6``Bi-}Ib%W;jX7A$_yg|O--&bywu>D?loNjj zl^)%aqP1jKu9qrM zRpa(SN(BOL)}Mpc>wk~3^j^YU-NwdJou_wnSuIC)S!G|*Ozw%Nj9(rq?(m-6vaz1| z^Pu49O0qz?Wh74Iw&d~O4zT4=_pa;KMlO)&zHTX`_$@T|W~i9$r8tl8>gs8GEwG&a zEKo3$wF%A9xV`+g%W}G(P`L7voV@Y?7thh$oxK~N7oxOhsIK>N^o2?u1J-tw-&iXy zZAhH(Xi-ov6X8jvUGrZ0VL7&p5cuTe33lUXD@`IZoWA; zyo^AZrUBFJUwv=_^;q_9YUSYlE7|tE(W2Y04w4=qI}}< zA33Y<-jYP_ti z-B{x*ZST>*8PhCZIhqcqv8_jC-N`EYAu@%rGiT<4@_1g&E&wokRbyDS=Fk>7Ji^SJ zFY#(h3FLdv4AOaj$XW_=Ros>HHH3C=6}CtSzAa5P{fV1F;X54pxQ58DZ98x?4If_Y ze^S-aH3Eo-75}=Ma=tjNCDUvl-&#aed!IMjt5qDvLb+H0+a+jA#&g_^jxukS8$gE7mbhYst*gx-LEc@jbI=Z}ieCLf-=|r}`<`!LjMaC?RpSd9Uv_SXRRG-Tn&+ zVCXtIO}9>HEyaIYy4yUcjQ>XD85_91-6~28aQbRbKU36D%#7oLyczb$88kXO|8r-6H z;?e0pE%|0+077X%90mN*8^n=2D`btTf3{^c(kFa?mYgZ|k~4g`G2DU=*qrn0yWxJ_ zLq)5zG=yQOPy6F7e{PFX8{I_MYG;xx0 z``nhI7FgDw-GfDbfVPa`9^3=&rFweo;Ew|p2zJfxl(q2SlI!zKD7SV;J?G7EXHzEI z;QMe+Px~^nGt6g#yjtUP?xi-e%(%FKTeW4GKb9-H+JtxSH8rbPLlCg{$PQ9LG>3K; z&sP_A$EM4j17fW?U;DJS-s);=**i~2p7o1Q*TG@$tidX>d|vGN@Id-U+G8hiQ9xW4 zuJf=h{3|DUTkO-5T1yfV^(z{Z@zJ*)uhh}bgUUJ(UQe1k(&=wK@EyxI<_6iNj;|4S zk3f80eL3ma*MnB(x2`!q@uHZb;8B0;I-wh=@%s=JFuE6d^w=q?^Tgr!pP-%rCz`LrC4@BRTK>p zwjD&qmNbeS3p( zOqKCpsvdj8_pjrv`!xcfb3XE3DxOH)vAHc!HxU`IVlber6!u4*#JojDabVp%)37r! z&-a8$<#7uCjIZm04W9WmkRX!3}^ISx%#u^et0I57UK7}e98(~qwyJ=VFoHp{8mnI05Nd+JIDq= zwz{7+7jl6W7aZcBd*4j~uJ{%BkV!vqFJSU zg8tOPv8ehs+i=Y4jhf*qYqO~nkBId!W-0Cbm48R!*{Y!n=fBj)RO$Kay#CO1`D@%R zNB=_*#|YLz7p^qEW9eg6h<#athy`)$OMR9 z>2{zVA%qtanrN3DI;p>ocqCAj`Tjt!Sf4mCzwl$1^27vSu;QPZH^#cGN|OT-I!GYO zPX#o&Nx%n|R$8V^(7g)Vvd>*k{CZvSV9L3eyJ?Vf^1^2#lv0~&J?|cGrhL8q>#H)Q zE6#8a z|CB1OwzGQfCfKjyV^1}O=W-$rZt6GsInaOq-XNm#hiJb*8AJNWi+qsSy||lG*C|TB zUDJN{-Wqu7-D1l(ps~d#b^Oi7v=;wgO7k;NOEfqg%*s4@eNnA`I=pDjZ5Ar)&#s=e zmJ+Ipef7vP^3S2FN`sS~5EXCmLMMMAF*kTI}Gr}*w~DlgTZ z>B9|zx|y;8;294=%F_dB{^zud%{8A^0|8~TKw-tYRAHscJh-H?92_2G4&{vYB84@SIRfoBln8)!89)7{T^-@7VV zRo~~z8&?}rNQC9_#bSnrcj^KPxd_0)9Cn_o!eF&m-`dHma>3qbz zRmMQhGekg1LGli@a@|>(q^kLKurydXI;UwV>ekC>QC$;p`gjT+60mLoWc*BX2Vy>I z86pCdRyfYThXxH%0?vgbQ#QS=zvrorT zwxYf5ygw|s2u{Br03|3_65oyj2Yv_0My!^liaLanUDevG_-Z2cXW}GaU}pVq^i)ID z-o|U}z9Tn(7^iZ>f{#kiU3_2)y{-UK{bHXJWACsIfq>9+o2ZKCgl>!KW_+kxE9%Vh z&gu_${iu|Xo137#-5FP&BBSdyg%4Zq8{$hgq`n??jh^>X_}RWiduc3X zu)qPe_3(92?+OA~At^m@x9nL~&N{f7NP~C3DJuLB@#2lNubywMNAIB8sa|^@S0VFl zMU`U^litgcsV(id_Y1#9#28VYubrP(7fL0>@7IE_Dtx54onJVo5h>Q%X+-m| zN|lB7Ud5^18!csTmu(mUT(cVh_Wnm%OW`lc52jT^L*_n&Ro>e2!nmdMka))nh~B$S z=gWWgiESK_fBT|sd)2yuUse?gw$3KBLyxPMUM;8VT~&$pASH2^R;iGr7aRf2D#v^9|Spqu9QSGrtDF;od%N2>U1D!_-70%YZ zvMVS&^=n+>B5UvJk#;KSWKg2I7PqWjIla~ul0JgMF>U6DXT70>^q-6v`S8v#&$mrG z2-}veXn}hHFbQg4`tp+gOv(AO+tF9a{MOm|O`raeI6QfnOqp&lpTE-3nXhHo@nF!u z;EDYF4!)FNMDl!$L&>Gvy}t&a@M{1bD>dZH93SD$&jG!_vH{aogicg^9JJ*^BqKVH z?7lhheF(kF@dpFSwRCMilxeKB>wDoNb$;Xb5F^=_;vE)$J-ylFJW_NEgaZELj|D$s zL3x52z(tVC#&!%oir#V(xi}Fx1(yC9}?d#TiW^(_Y2GTUh*=Gt*aJOF0&8YIy00YT-o2DDd0^QfxYg9mBE-8vU$5M` z@8%!yvX1VuJ3YK+_W44%rk;CV!vHANc>oMMPB0>C$V{_+=w>IYt@>+VVWNSBJy>xw z6ntl!8=3~{A|7ts{7I-MxW8I(&gWh8hld8WTD(-<-ikPwT=#wonQnS5a|O2yYA`HDZNILv!DgioJU=+V@7!>DXFV#Y@v=_X`Uu6MSMZz}&+#pfCs*M8 z8Q;wY`my}_%j0sB!ZpzUvu+RM4lJzGvNT2MikmM8Yt$h+vkND*Vj1mmGTs$;uS!9b zuw>Re5D%(1Ystyt-x8%{0Rs(d?Be=}waP~;6~IJ6d$M!b=%H9rhWkWYOCNV64x zxYr%c>I9ig?c!!i>y(L6YnGPQ1rV{;gV>XMxWLynbz*Vn)5LH-D5&`eYQ)x?|0)Ee zlFzOFg+S#Z1j<%i+yZDTXPj~M?p^Bq^{|}~fCl?AI3R_rWwgeGt6LxOTpgTmtXc}> zDI(_S_GGgRU_YzXHwy7NW3yXjIeHhC>Cl=00XxI*nx=&0l$$?(McWaS+nj_HXLZ{y z*lrW4H(*fM!v(5L2M)R`G(rZ$Un_fS=h9{i$AjxY-CLwb+Js4v4fT5w?dy5hgK*CG ziGeo-44vBn%U9;PPo8FcZPje%KB@im*^OOx37&oOx~@&5>pjOFP83vSPkqMc=Ql%* zi5XuvQ!+ohX(>6<>>FL8bEH8Gu*YIZo_`g%h@h2So?E57bY-z$8VE_(hL+0CF4W87Vl_E#=DYLF2{FJUokI=u%Ii~ zbo3{#3}kpH%tFAcD46ze*cNx-to4=?Qe%ec4zCYTRHvK{6lUlr{3u9Qn^%S%GX${ zvC>tWr8zn#3oS&iE4`6Eu)M`5R=q>0d*yeFzh}(-=pbB$w4lC&zTzltFpC9^BU{0G7 zK^-*${mLAgcVOM%p*(8Ib=FvoNvWS;q+q5;@1H7z2Mq*7?|AuTFXFe>HLaYa`Dt$B z#XOm6Ro-*2$N$3Oy-;I$yB>~z`YlJl((@KG(ZwIS6;W3Y4tflC zb$VP_q?M_^ICqX?lrOmZSSsra!hdfeBgp0Wzy*3CIBg#;Ke`QU;jPrc_>S{5>CN;q zb%b_b`kp&?F3o+LKlYrH@j10vXYbtmp9+s%<7$dl*7=wzihKt6+Lf$N!|MvZ%mX_b zCHUrAJTnvNq;2^tp$pO-uSdS2fCK5euMEu7!5`|tRFwtQBYmZjbpq1G$f*(l-&@hU zw6y6{PFqmOj682II4^j6n9|aeW=Am zK0tvUBhAq>0Cd`$xjVZR9CtI)uICKA*<7x-XJyt^WktWxC$2L7{Pc?hdv9I)KhtMl z;Yw@%o`ZJ(`xV$ql-i2UK+f5nmlH=?aWnapFjeT$^*GiwjT&WXV}p3&*u8REhb{49 zSJ5+pLDSC9RxO#;BHzQVi)_p8D6@nUg?*0zYCAgI7SH?*l zzlGszu|LQ9HeaA7bC#h>)5gFIf0`;y*KEu7TMZZQ?)~f?*D$9?`?|SsV6>pBYVo<= zz=yrptK0n!K7UqQ@YK(g^n(8IohUaqnEN(BeqJ4YU0s+A^0&!z-JACQPOMMm;tJy< zhs59SUQVNe4O#sqa9zfigvqq@Ev`_{2)+6>eWJuo>p z4pWPN0F7Va#{qSrF%+j*ajo@TQwvKYVAD|7|n( z{nGrg)J(7gGIz^fw=CdKHNM^_#x?{2>sFWE>$r{{$iV4|N4D2U+kY45sOE@t^JJ~1 z>zFMWtzo2%`F}CHN&DAIE*GR213FW2IN);R@`0Dxc+RHb7(-Et2DY&TgrE z$yu)3oj05Dxg-9h#@&OuUc;qTCPM;T<6g?ZxF5Xo0R83FzT+=|B=SrgxfT6VVM-=> zZ2tzy*sde;Q%N6xlB9my|8Z>~99L~UtfYTFAt*^a|7~;9$iW3uj-p68aNiS`8@S^2 zqOZm->#>byg1{)F0YnF@fMVG0l?MHAd$sDe|4KYUWJMVENt@L&YBtTP)z_q-0{u|D z92;jG9TR6U(E<)_h$ccn`<$vcFuM5zAOHz~IcQh5e_C`ixcemdP^0stkPRw{LDB!= zWbwQw6?1Hr{-b~tz5@;@)Y1pG>0tc1?3sHEA30a6i;?}Eq3y}_K>UDm!Iy@lVqGNF zEnVxzAA->DeN4-nM*=2v=v2}75{+IyWMwMtQMq6ic_vIX*z?^?jbC?+Ip6w}cKrH^ z0z-SCc8e;Qkd>$5l~Rm;ct(@4YV7Ep1JKV4&(NL+(41NOy4$9e(ML4}dfP^Kn0Z}@ zuo3wP5zt=yrk0!tn6#*9$@dNTqRHTdOZ$eT5jt(`nzU!0cUg_8D5Oh8JbzLAfJ~=JtK`v1)>0Y%+;+CFoxW;z9VArFU zCgNHB?_Hm!1{$>A%akrq0e?M!n-wTNITK&?eAs7)Gf0=>Om7s7A5SmKlR8Wl-@s;@x^L!DoHy5l^qWQWmLD-|Odo0tLj zJ+L*Jk;JWspa`4HXqMhx zxmr+F>vsX*38MMfb9dV3=W-9zura336sBt$Zr=@AWQ^;sG_+5*D(v}`3skY~d?|@9 z8&r?00Z-yZ*lF?`L{d`;l<}ht3-vu;ulED@y1{F7wg1c}lUi>cGme|OMVVBov2X7h zYipxl;nTNdtqCA0bAD#8B#5g$YeWn4S_FcD{{N4wuked{>-IkCh>U>fprn)xCEX1I z3L`B@cXvzIaVY8T5)qJQh@l2>=q{yO1w>MikbF0u`<&J#o>rogg#Y4L- zBL{kz=nSG(f=CLt&SzCNc8MA!R<<5fX15_QaW;gKHymlOhR8LuI&EZO#uy(py6}}5 z4VD$Il`*;6YdfOQqFBsG7uVUmh?mjlnlT|N@GfbFphyCsqN%FKlyN|Xy>d<~zK`_2 zxR##zX*4ip^kYNk=YJw{E8oM|yms|RpE_PIR&DrevDrxr43T zq%XFhym#p4TG{dX=Cch$=z`XoexB9X$|**Gqz)9`WU$qELc+32>oPl(!38tg>D0}*~NO{xL5 zlx7+EXOlJMbpWG(o%vFAUSN2QQ>d&LBM3Lyk-RykyWaP|t( zy}8PFzJ1-w!qMbm4y+m;#I85pIMt(|yH`FOV(Jv4X7=bp3kC{RTbzgi;>^0o!!NVvYYGO@t2R$5tU&Jh zz7QjTH_rieeHX_#JEGBB)2(K?wjF$p==@$oH}OSl1dxAipVJEvSX^dJicac1a1t7~Bmr%$K68O?Y7c4TY%G#{G!~sndTX zuB0G()Jl$3OyMg1hRCJhXVKDpOZNqlCiC-&k&N$-b|9Kn6DRwqR}rDqG`q4Ib^rf( zi{|pC^!Fk)R<}b1ygtW6-=Hm2bB~@aqNxh{Kp+HUOm4;SVJk*I5*hF3L;a(^#Zm^- z6>`Fc(b&B3rRAlcH}!X~tzZ}Vu+Hu;qaP|dk->P61b&6pF(U_8Dop}dS?v*7QwEC- z-l<{d0_HJVn7y|^|BBx&BKpK}v}k|o^TAzj(eD;{ApvxoV=mB5XR@Y_1(^@zKSdGW zvpFz~q;dH313i(&;g^BJeHk{Q=E6T5Bt28N=9Us@lUjigjt~NT@Ax*BGDeo*I8RgM z`AIOaf*6rV&mVKbhn=<4r+)4>T!~)v%|#V%Z%Af5^78fEwrco9+gH2~mEmY+xjZ*Z9%@1ADU^ljH)~cm&M_*C;g2xnOk(MMtUkvVHdqe9f z2Si@?@jJ@K@N!H#aHZ*hL=NKhj1{Onr*ChapLkW$RsdbhCRSo2&@MLJcw_3!VdXpT8_-KE%wC`EJE~!i6uBaD+B25aJp`Y%Is2`@Ex&alA zT~fwQSPt}%nbpM0vZaX{O;hdwSF_tA^U1316>qo!X2_Jw38^-=XQ*kh{ok?SZ`lMG z_ltHl1QX)0kDQCkaC$`}8M9~Puq)W~;Wip4qO>pA%x?_^Za+Q| z>ae4pN;35_VW{O_!xx;f|a_OHhHc+75c|>9B(n)P{HTHuOSlZRC8-5+af_dgJryxe7+a%VBGQ{2!r56gQo0>V@SVUDvMYKPG~`y3hW$oo}zCfiS4(stkLQyL$UTA^~(2vL`k4uAR|GgA2cQ4Y8a= z`0;kKE+-zF!@zDJ5VJHMDTor)@Y;J`=X3J@!c31e438EBklu7@Q;HfG{cx8>cE9p= zar~MG1%sg7tL}IQJdrGrYW_eZ-38c%N6_XK|q zRST;`Mvf;)Mm`}4=FLyv28R7SSN5Y_Up44A1u18e7ohh+gSo3{ckH{M*Ppylgy!Q? z54jpCLjtk65NK*6;gH$H*B6Ee-ssyo9OBw!m2$prTR&$$y8p6K-gLy{k7#9Y(mpeL zb`Ku6^bW(XybzTw>TGGK#yazblF@8tO&#C+bk9mO zFmVGCE4t+NJUw%Lt!(z+j~5R;En87`BCfw*03OPoZQG0A^>=VggmZ zMNi+4&vG@=g5tepC#BX(%QmI%Z*e)EQ`m=v85zw*Ia|UoHeXlk zJpCMHWD>Pq`}zKtnD?_u2K}`L8>4o4G+1FckM3A7k%&Ix_>KIB;V$99PbzKuYN{=c zp5SZI>GTUwFi_5hSn@Dc6Q0gR#7c4#{**Ddrb%NFLdnlhelj~}w`%Vn%vyC`!6>nk zN{A9Guzqh>Xn9~8uB@rq!7M;zksqTHV6L2ca73$kHX4avI^?|g4MLf@l*|l~csX0} z-gogXq+bYY&$K~!BxhQSDvhSp4g5*4Pws=CFTay2e^g!Huv;pzgh2UqZLYaM-^7=(`zO!5)soYT_2Qe^ zeVr~Nb6tY*!@4TJ2IDL>6#XWtfmS-@#+GT^c$k7vW~;u?Se3;loe2#$xwrvg_*5i6o>y+!%m4w~bfFf8az-NOTp=WW z=g7_1&PBEr?~WCk?JVw9$(U_}{}LT<`t6VQoN-G^d?Ap_$9mP|(8kz-{*n?0r(bcf zfb02Q734&a{x~BYw{e0y@KilPuiH@7P7OikBrnCEhIKa+l(?j)i4}y)6nm>fDloiV z!|r#6D2RAVbUDuJ2x#B$Jb~AfLG9d}|7z#Nk68M9LAcx{y>yX5(?CbiYndczcufTC zc_jXstH5T$qV4*_ovWn_r*S1??1`RSr_^mAgA&)HR>!{{KA|vJ5UUexfkR(RQ6X*GCzV}auFMj~ZY+RTwll(}MV?veB{~HTIghF}dFCQ`{1f z{QCJ))~YpPlgxJfrs1K?`bS=m^zK{&4#P(q9?qs>hUnEk)o4coc8Pavsr9)rRDC^| zf|YDm6iKS|AI{5ejoUN)3e{%axX>e-vt9n5RQ|McAS*3R4C%xrp^2nM=XS8fW zZZoDb<0gOLf*&g{n~~HkGte$`Ts4;4YG2sI*3V-af_{6Q#(CX}*Vgn4&L36VAk2nk ztyavDDr2FDUF7(KDeZX=2diFjlo6(^B3=@de~ae1N362G+4;7YDNFl2pMIa5ntpxI z;@cp`ks(8-kDU0@u{)E9UBSBPhwYr`{U-+FRcEIW`L~ z6`7*QzY)kUl0alP5OHr{6~YDjnKlt@@eLn+o8K=L_koDzj+b&A3@g97r+U&WK+g_sPISg(vDl6y91MC09hATW0!aT02Mc&-pL2YESX&e$aT@Gp- zE=+f_@Yzf)H}{nZ)|^ksb&=Ygb@C<7yPMAk zmcDh(E^@9VK_cCsZc=wWQ)KrAxgz15#Wl&wXLmDHrWkO^M?#cev^@pYjyyE_@|XGE zkOT&tJOdwU#hY9;sLzQvB8-%4rZbQ~qCHHds?>sm!0qH}I+$g8B!$#$Fk|$2R09bo zQL?-vcRZq_UROs!1P%|}vx?qrl%#~+<*!vpiXR8DLU}6sl?wwbJ8dgB)2EX!hBl2_ z`T1`fZ=t6F9YtyuNQuo_s=*#pP>ZC{#yF!S&6Z7u{AcGB8$Kp_u`_y3^=VxuM4&nmySdLQODKrOL~lT|(;CZ{OBR?YQ^i%k zTt0x*6`j(i8N*$j4;~yU+A=vb7;?KFpG9i%vGW{NJ*%kUr&j>o+(DWS_R6cQTH^Y> zLftf|_=2ridK})&rX1X}TC0~0zV8C}Y|?JaX&%vFUlm}Jc*>Pb=v`I_!5oUG-!`!_ zEn;T0k`|Gx=Hrmr<)~SH!Pgb0_>4m1rKbM+FD`jsyJ3?1dhfPb-pmK1q2roq!)Hr- zJSMr{3fjVi*zh=7W#9kUo0wSTw|lbQylN5|A-LGf^2R@DU$KJET85u#BcKmTbr&*8 zY(bh1^?!uB{S`9#Ao&|Pa|iNgd(!Y(^9|}{q5p1Q!h&#khDw!$g(<}6Hk7(ZUYtC{ z7`*Kvxtc$&sZH)zO1}^c$#`+%pB^>6i3>mO(XsbdJ#xM(%rb1p!7~eQ5&ML43AE-B zgVN@&xl>M%Cl)BJt*v{kN)z9rz|56MevBJcz&jGc1QX3KCr`GgBbGs02ALIl=h_R_ z@O8z!6hHFt`ajDfkU0R}wJ8~VS=U4%Ju7ezD*gh`LswvYD+*EpH7D!Q$%{!mzBOkN zLy@L8YCf7^uw9OBL92Y>c!s~SVXyep+f9OYx(KnGntMN721zXGWM9ii7$osU^uqv- zL^s&2(PzV!uf+m8+Jfyf2NnS=wvzsgXD^*!YrW1T_xjf?j(D5vzq?fgvC4R8?q5tn ze@X$vM9x+elj>>u&!&-g*_hJ>@XUf%OTQ_!#oW5u8NkBiB zR+mEno&xIn!NM8^s#@R?wgmG@bT&#m>uXCGghRdR7J4iG+k!o|qpA$wT-zGxlfzhab^{But?+{piP%gDV3Cle|zxh^snrCl-|CU&#iSO?n@z>;}iP5!=o7#{K{cA#!t zl>s>*L4*CuGm(81>|*;S_zOulGAss9VP$qd{R{nYx{USpI$B5Tr*L#?f>7<8cPJ8U zV$K#Sv!TVpHpoVX@K2kuE|&qXMpXxXMlS^8XwXUul!xs2tj@f8u7#I(23b%#;1pp$Vsohqy8Ty4^vw#!!m|xB^Mw>N~^4i7SrCd ztG7g2CW#{}Sh$m2ut;c_BmSW;Vx-gF>Xo6g_O&Kj?Cju653>ed!kYoSe&O5{XF?pc zR%kJmwx^Q2VKi1uc3(RfaFJ|t{5K4&DBhrr&dgRCD!cyo<)WB>FP{s41l-R`89_IaHeC<47f~x>l#! zLQR9U0Dq0MX|u#%#p1sa`LsV+`wFmhLkd@4q*$ut{vo#V^{i8#@b3{${2RTZ5a<|_ zad7RUqZ`%4Z-V1nUu56=KewJ@ep+MIatYJ27yGh+L#cq`1v8^o;dZ}0KV{gwieFOx zi&x3@1Uv772s7wKx}tQ^J4}hYx%EXCP0|fYrycoCwKzlqcJuON9Q`h-R@E${7L#k8 zxD$_FGj{gmo-a_Ijs7~Fo?ePO$Ue-rLEEdOKeYFZBAP9Je2uYErEP<0FkRb%cOp?# z-AgGl2&VsU*LoSa@cfZ-QD;~~(22>-?zklj+QEpD3Kydj=FAJoj8ki4MeN;<>tFS5 z?+1oen_@dkigWGo=(nxy<*0aeNAm+AN3OFeS-wFFGe^}r{eg=C)x#(-cY zZ{EXfB#{b$jg=oC9b;xJ;&wchDqkSn6+c}6T69ZZm&vP9)!~B$Nw&(rz@?brS9Cegz%97(;|>G`TENJ@ez^6--3wvz&;V30u$P za0i+4eAV}#16X0&otjnUZQm7a7IqO`0=cjfPLdDwNXggK$YTcm4qy~#$<+$HSx~!j zo>GHdo|2`^&gG{VD*}dOucG{?|Ls`}Qf*>$L;3NA<+jJ*Nu6j2N3khO27M%$fGATZ zYTb+)yI9Y2I+@K}(pFm4cEF_la3_HokoCap_!;~k;4xgN8$Hg6432+r-u4B;1y9W) zsh*apnNCZ>l=lT`d-zN1w{dY=p0|uQqGi->KQhk-0NE8;g0`VMrkvS*C|CVR;xBnx zV!biYXjI`l-21hNWVJw5;9FQFpRRb;SDqghv=rgRyf3?q}GU_owF4D@dNf+$c}CG zZXL~t2_wvlv^fEo2EpEcAZWo14b}{P_DEE9{_+f|Tri z8OscW;EhjVRQ9@2Mqh@mtNrf67@c8kzI#Y=53hCXO_0b?%rpcc_{w);1Sh{SY<=gg zFF-G&9a&)*#y9#pQw%+rN)K*B^&L|;>q)fAyN2{hsz?7;x97F^=WQXa-#Wc<`dS^! zhVrAHk!*tZh+Vh?Uic;5_@pVP_o{7PN=jv(1iHOuW?)4+ZL;>eIZ-hz39wPI;&UqR znlzS%y=T+2BKt0`gxt$jD zU8IuS+e9&}Xr=t&3*&z)>F4#0g2v{!C3}`69(J*Hb2J$=TfJN3@O}Jp*t$S_3g*SE zfM0$`aL_H4w$S7)k-jJad3XGo)myG*Hz{r_n(H#HKTo43DM{Fhf#`Ph&5_VD?zgpl zIb5;O>-eoyUN`1d7(Y2?)u-sV5;};m&^M-tpALdh<3SISCPs-B2Kor{!jwP!I_UfR z-wHB#{Y@li*3Q%)pMegm#x#f_kH}mqZflIFl`>>@rlqBa&wcHhkqXNh&J@{-vX0>B zCF?U93k!xxd}#SmwthZac-y2%?#{Da*-TVl2W9bRH{Nu)*JB=njP;6lS##p|R?33- zf|o*(OT>~R#%|H47Wup#$grDzgzAR*N9!7e=xTn2SbW9wf@ zFxlD7Z)QW`eDoA^w=RD@OR=yRN=vr3mAe?1AMAXBoSlEwY)l#w+X7-95#wnYcIrxJ z_bja^v_i5}=*x3QU*2HPC4(BMmPpmpZ~^c0gPUppbJoO2mX+R%mtnSvY2g_ej5)qz ze1c@{oZP3|O^%%vLRtmuCDpl%ZI7X0j7j-k8($)7rMn?-o7Ae7YrvL?XlER~n4bU2{J?r0(4(OG_W- zHGTIj-8TNkqRykyIcus=evEIJ>PZ+;Q;k!Xf5Wcq*f6tLvP5wQA8)!1EnMVYn7tJD zZ0Q}AisI{x`y_~6+?f&aLYCcW7lXQ5=7t%+mH|RGiL%VK^1BcC_{)ve6m{g~$f*UBo93?FcCK zKJsUC0Y}5}O0sQv4{yb;<*L57egRt|#?9c<-g$$4b`&I|SbfZr6ZGdA+6rPSMt72U zFMpwmPj}bF5nM?XN&9o;QJPxO2V{vBEU+`_yP5CNQR}4DVvMPwkeIN<-z6^k)oiK9 zx`&~*oIm>kn8*w#&+t2%7x*+brpjAR&L+Ly>-yDU*x1j{4?QTR8DQTzq&+3_0bNva zH1DzaPAoZaTobYU`?0+l-YZ+)g|URk+>Sjl*z1x`IW$_?Bz1#i7#aNCq3%~#+0@bho12v^9cu_$ac z?%GOKLF%R{iKE0+?W=LYP^X|=J&|U6OsH#?7Uxf+2`!~aYGKiF^<0yJEbwGTE3UJYxPmhF;`Yu!;dqz$1mEt;OdDjkc%W|831Z{Uhpg4ZnbN$%cB zX&5(#q@4m7_amIE_6cjM7N_g>XNCUS0OzQc2-H%Q8bngo(R-7wX8PXt#UMmNl49XO z$=lUruKWKL9IO*z*#Be!h+v|+sS6a3FAygydNC^@J1Ji?!LA_3Ac?!isM~m%q|!*j zAYKl3cRS_}{n(+L`-_gAHYHM>QHlX#$(@l4;Lv7TTU(Q%QLJ-1Iyxr`l1JvOp~a4G zTLXO-I{ zp>mEZ0U7tK!0Z8~N?nA7kW%@hv0sw^5(1aIl}t@meQDD#b*+;28{z^-bWX zmSC>8Qo^)tuZJ_2jKXAN=vUm?dDc#N5sX)gCIoQGI?^%%4)ET$sNjV`y z*3{!3zl$2_(>qBo^feya*nyL%QM7K-9A@LQT)L49USM}E77Gk^9)0SSO!(Dj^28&k}154IQgY6iyvGZ#j~pcg@q8113@%d!x(mYQhxqI_CCv#|5JL-6T= zx?tAq=A9a2IpY`xnC(~Cs^(WQd>p0KmvFQohedk`wqO&#o%1@+q@OY~&o71Pr#8HF zciA_TWRTs0SWI*@*KCRXJIlQ<5--xr{LYsmK?RtvX#di1dr3&~FBP;Q10A@rW9f7G z$H~~Gn>EJ4mD&qaqHv&3c+wx#C>R`fYB4#h`74`OHMg3c$c4FH$AgY#PC*0~M%AAD zHdaVm)A%8V{{TMK5tfzhV-E%v96vOd=ihxJ9H0`p66+(zmp*?drla!5+^S7Xdt6kmO=#$ozBR*AXL=U#R6`;GjPP9AiHJvd-h?LRaj) z_$(j>@!*?^2!ue`f}8tpEXN23s88I=dEuT*K8X7t-(z&9ZroaX5L71aphw zcG~>_jJHi_@V}_5Rte=InmM3t)qWf9shPF=$f5WWJdZXD5P_x=fxTjHy9u^~2t?nR zwOw8x`m230n{dvUkE?49>Q_OsuK6(CLN4jRt$J~|yWGK*0R)=-Y-zSgDqIngmr{i? zJgO++ZodSgSGY*sg1cub_8IYeetCs9ICCLY7fwKK{;k+g_##`L&^yn2#BDm>&N0FVWRU@Y<_KMhxjBDCg|cB@&s72XfO~i=DMU85at6Fp`@d3P zYaPkCy!+lev2P18to6Y%wCc4k`42CWzzrE*W>=C-)N2E$JpLG>xeS8*+e0B*1V@egQeixJs*BV>=~yH<@CDeJ4Vj?Q_6bSj;~+l~KmlElTt8iRT9g%% z1nP&ev_a(5m$sR_&Pvubp1$Kg{F=qn-+j#ERxrDM*Is^$(Y{`vM)ghzjflWOCs4F+Hv5?NB!CIQ!17GM{nQUOmOpR zPQ-S|qn`H~r(rHszv#6&0_V|2Uj)AID_O~v&}*l87P&BTDlmLue}&4tyCbQl7oCYL z&d+a!qaHGU#qyFXOF~niNRJ@yxKZ<&v51uL@q@IU0VjaQ^tOUqX#XpwBd$Y2Pf^F{{`hQX=W0=d4L$1Uvz$Lb+Wm6-1mk@wFSaQK5U)5NlLp+1$RZQC=8UB z6WQt=77F?LTi85GO+z1lDJ+Xd8U9qY4Et{>#aH5r$3QMs@op<`C?@2YJp>aB(PbS# zJO&A(M@&L1l}D8CYl3<6S`JvQl29#tU7G)QLE?&`2!p~boEnxhU>-NiSsY?7k6 zVgtVLe@`4;)B>`NqxgVm)PjTtdoCpvMAT2A8^-_iMcbI_&^)mM`(rId#&Kh}O|9)C z&X24=rGtXlQptT%XS?V@+SE}C;*+e~@AL$D+OXA6ZlDk)h7T40E?+1SZ;+N%PvkaK zlnomBuMrWuRVX}lo?JmeqwDYC``=E%Bf&%T8KzA6SR4F*yQRz{tM>be7RHX#Qt;HM zj*Dm*!)jexfUJmw27)!Qo-5#;lJ5)pnx{Cn9=L zM*4{V! zOYgcXz5faW>M|J@+c)P=8c18aRQx*luZBVQ0KR`0-b0fXTF({79S{sNcw!wbjZ_46 z>`=WQJ5_*?{i^iC%OtmB?2J6=XRF3fF+i&7CL+(}hP58=*E!7A@O=f(MeJO4i19JO zyBeBCmT=G4g)U-r0NB%D)ikV$dR^6 zaU-U9SQ^+78;%!_wAd)AHk^`#ak=FG)r;`!wEqe_*Neo@H`5;nLzlM1xd;OY=SZpG7nxDbb?XNY|_+B11QPo5k23}G6=v% z9{H7Bhp?3EJ0gJZKVzTnbr{If9@MPECqKG~<;TD;89xoj9A;;* zj7m-vGj^G?7Ho}6u3#z*sA2}+*+Ry94?#@IB!A}#up=>dp$-E0?YpuMRU=o@{BoY> zjV8*mrg{$fMGxY2Ra@M%cc+J8!pyP_J@MncgkYF?*5%=G^^DGci+A)dWh^QDSo7QA z-0^dVjBD)1H|nOn=0arWQAzf>-!{KTA}sp$x)e6vo2N|_9B;M^>xrFY(J!cbkivY0 z=~qr)&svmOFak|~B0Q7qfE=D02`NHq-G(xp(yc3oqeKT;qR0oW9uX^G*2w#V6G;4D z*h_0)swwUMO;eAicY9%=%Y#*hVErZWdMDwKZZ<3$qJ53b@`8{~Bb1>JFw zuBLG%t}_nPIrEjFuqfcjI#aIrMVz@ot;pH!t-IJnU9#LySq2 zANp|09am~snPSwklmnQ57EzM;6F@Hp>CYHulZ!9QY4!sxW<6dWj1z~-zj;frwQYMD zNpSj2j=)V~BcDIYqGp6x$G_5qm73Bj;J;>1Wr5@WSUoqfH#CYZ+w^b#{ErlAQS+K# zF9i1fw2|+AoyEXfT1okZErT#!ymgE7S;m!~Gw05}JdD`wxdNHZFED)P#7d0E;ITQr zbBkkDhk!*b_`ZSTXNRb9E(=+>XZY;qeSoAwtWLg{q9V&H$g;?R$rE1reBN|Q}p+%-naO~@tq)#uP-91Gl?} z*4|!w_fN&P_eADwJ=9zEk;(g+42;Kto=7KvET+^7tC(A6fVD!e7XlfJHzg#7TmrH5 zi_LKh%`pdX*F5_6*E#4N@&`c7wmZ4B-~aEMSRnlGCGu5f2!!viZ~Zw7T=y)&oU)hW-HkSsIaODKMJ!*?$_lMcHzY zc_s^H{LTM<+*I(|yPyZ->N5fePI1qJ__ZXrwv7>s$-L6$3M59 zYwrRy6s66~Hhv|e+@Q%9>1%gRg&`o7v(0w*`Q$()Ym|jnjeh)`h$DS?M2ct#`gaW? z&9eSfL6>J+1hFd)RwQ=yp#di#gRAd&N!0ayslh3iH4(V4J?7Hw-nee;?#M)Snau+T4JU>`olKD@%|c7s@r~EISM~0 zD-RTTJwX&=WTh6I^!H=L3UjfF!J#m7eTJl2yE`yZ_MS60V+t6E&L|g~590)ad&*~n zFBv>4!T#Aww16!YBT3ei9Tprv9ZCgLkcK{Y3rJjjR6`qHvV02S{*=1b`M%&WvlyFv z{%?O*ci12LB<^;YnNRa8MbcvD!A;dc?VQ~|bUQ}ar^y+h`$Ps$CXkFm0p0qbVNL(6 z!zIV?{Qytwl9!UxxQ0EXRhlAO+Iom|)2kNsa9+0pH2`Uw4^3QC0$=l%Ej2aC@^N5) z9XAWpbeUDP^R{h2*->le(sL!Z!n{HDC&1g5$+(=Rhh>@;clALR=6!2oy)h{mr(}D>Rp;jdob-1=j6nlYTxI;6 zpQhEBqc1=nWPmerYt9{RRg~X~0_@WYk3MIxppB8?sQg>4cL*WY2hhr3d*lG#Xo$xP zspmv*YOWS)NK3f7FM!d8_W=V)C^8Sf?EVvt zP|hPO0(<8%Z@HNHu_}wjPwWpjgu_Z}aqp@PA;MI+=k}(l@`NAR@xS?E{HcZV6I@(8Wa8GH)5@(Y_@Kh?tFVH6AgkB5f zsAmUItMAW9NmY92ooMik#tksQkF_Y>YYxO`w4zrP*HONxDvx(EYBD+$A}vIC3i6-bj@4FDi4tHCCrXYH0X#XLQbu*YrBIx_o}6eYBs7EsU8mQCj_MvjO_#qb;J8?N#whoeUU< z`soQ!L|l=x5bR!?UC(_a^=+gsL^5<-XgfofvLtHd!@_;jv@}lJEXFkMC<~QWyzZNy zXAEK=mfYN4x2Tb7j6`N()m49p@dMiLoN^ep-rV=BVQlF#iVZ^*EU zFs(9y?c0Lxn00lf-|3ZS0G|9TFSt60W5jZ2dSp0>hpG{=n@7bO|gfa1FiWN4!{^<2Lw&Oz);3{lJ0A62W7N;< zH21}U&il+(?dhRER8*d;bw_4x&d$OJE9*qN!4=2CTMmxhaV^aB_b z=_f9W(`AEzdT=%E%&!?ZoK~&6o(%5NJG6g7E_sZPkiL0e(KmQ|C;R18G~}qHi2EO= zU5R^G8uHIF17;m*KJL$S2a>{xLy!5JUxCGr$n4@8^nynOvsrw5AKuG#}y zL#YyUI}d#}n`K|P3YlI+4xktxW_TF1bBYEGxAP?vEN{;i`w`mk(sQ+1|E2~0GhL^a zfo8cYU0Mp=>oTCQiY{a@tUUV9ECe{c&hI^yxp5MAX`v;Bui6P99&P3w%itYrDTG=FFHWishztvJD73q`s zD^H=rtUx%2_I(ojB{pcSTmd);7u3L*KL4m^g?5998N< zc=@LU2;7lcW&8~je~Rq&`gw24bUnT6BGQ1ltLkO@cXE}A#Uswh6_(EApW{|GNVJMc zOZxR361n8&?Du~tA0b<9idp_J3w=kB1GGghz{F;DnP)cNxNMNI=D+V~ z7}UT+wh}))@^Gjw^S;*~CXsHCNoh*9;N*|;D=q&xgxI|fg1zAjY9OWHmZk`ZyfkZS z{h%Mi5Mfu$zK*h?7R&U7Rr?=L294URC`7$9ZRlR`xgSN6K5WvQM`sMMf>Jp- z;>Zz$xy6?*IwJ+;325jt>-5Hr``B$?&nS^BpMYl_y^<&au#_)i^*q`9Tsi+$Qr{D1 zXWQVN%h)A#TRxFd`<<+`bLN5{cS;h=Ll8#?eWkl)a`E*vX=|<~9xI)8Ru#duLwxBv zbi@jxS(J_o^}j$$oebAFgM%~U=9{ptt#)Y(llXY=Tl2Ep zCw!G%&FJ&&v`nD|F-z7=>cCozfMRsVOstWle^Z0{KOK`OfprZz+;IAKunUR|C#byh zG;@6WhK29@)0&IJXWW`D=4@ZAtNcN5dSz9q+QP?-mz={2kAc5wxXaz@^6aCmC*jQI z^>)%UvE-PRUx?KyqG&do<7lzvse#DfJUDz^RT8GcDvlOqj^G#Va776E1pCudW8O}8 zp}Jmel7j!}alzhpv0fb`{b{1Gske<|`W%}`5X6Hdy6h>k3AE1fktyo@L0D)*Fi}h_ zO?I8X2iecirpbE3ROfqZn&(@yB5>n~#tBZweJOZ-Gi-)8J+7xV#obr&_vm@!q&H4K zf-iX`{ei(iW-@n(>w7yyEcEF_&U=NKxsgjsVD1CX$y{LV4*!ct~{eDy*hZ^zb{!Drxc1vS7 zKf7$a=$<*w8~S+zL@W~GXu!121Es%4tkCK@j9rB4kt^+B3t8#LwTf5A=5chpt19k$ z7!$~QP=qz7AYy+GPgTZ@nf^wS9Hq%56EHiz?rBUw=`9I;Uz&sD#CT#I2*{_+?(**ND)ZpCFYym>=)qJGsl#|C z1}Y|UzTEK*43~md%pT{6fQ|;kvah=KSAE7nTpz`Lay^ia$?a} z@_-i+TJUND;T?ShZ@PUjsEK^;3*T^1KM_~lp#MNixWuKTT!>HGR-LC0gjb&D*X_+; zMX)RQoGHlT-s(mbS?^_|l44P+4X7l5b?78<@`v{gtw675LyCdy8N2HNUE#0N&}=Xy z#2ktf06%|!>Qof7u(zceQ!U)J`39owoRJmpC&4Uu4QfycG8HM(SG&_&vNc;%inSFB zd`8hf+T74}H3^c${n~O$p3{~$P)h#@UAW} zra>P9b31xDqSyhSl9E@patdLWP~3)fO@wl-gG1l= zXH%&Ir!#3Z?)=ZDOikaUBTvcNuFb~2i(2`kTd2*i``|gp&y$uFYfUrl?k3jR^{hDP`aH2^m%Ep)mKKA*Qb(DR60i`#!OrR~PR9 z54nQiw6C8$lFgc|T95VGXc3BP)s1908A3750YJvj*XL6R$r*f>7Dq8 zLw2;P#6|8@HGC2!pcl0-Yh3D=ZbkzJw<)g2+W&iC?b9O1u!qm)xj*fU||i=0e9$;&ex zI7AMF0*`J^i)VZ*njgc^_`~0URLqnmc)-w6Z_0?c3-h+7ZGBS}{$2G*(t2pABbi_& zJ$c1f=6SHMD15p64lvn~-bb|n&Vs-z%gQO%X{cm060VaG@598?CTq5AeRY;Kj99Bz zR>|M3$NwO;<&_35R6V2ZW9cxZii1St+s3cpgn-cnfiC-fyTn~9A0OrPOroa7N=r2` zo>sSSYQU)?H+LoFARO8aZ^y9cbyeN(sujL0A?^1F&1+8k5&aZdcjbh+G`>ZR;M(%$ zrD=Vt%5!n^C(6DwqP%@oEoC3I7E-rRk>Eup)pCpbfcO?NH78MbGq9eQPo~S=1bVTY zYb_WwWv=3V+bm{+=l1-y+b3;c6qE`$xaG~<$Km{(+e6?2?^ z>8a-XlsIeRN@XZUJ)~Y2XFH;drMf4*z)Kei<~DT>b4eBKvVj|(GnpQ8dxpUYK&0-e zBqnWs#b^lL?LlpnRxL9e-MhTS)R_GfJ7z634D&4t8= z&hl{&ko>IAtcO%grP>BX#}gRpK#9Z-0G9O+E22{I!M|#8o+PJaFpPCs@vKOba^Ka2 zi`{emU!AYZxg1s->E=S^XwunrmF+9AesmR~Nq?+vy~zcVh^|yr@G4H88Yp>)4 zAGIiRQ?o(M`=&yr&`k0{4IoC`k~w+1FIB2e;!8#^ns=C}NG}L1*u24L&d3E+62EUT z7>y`sqyw@kP$@rf9PddDn7Q?*?PwqY=n6 zU&9K%Bs`^6@Ebnb{b{LekD}2~rsbjkN7PrwMZJArUjwB}8tIadkOlz}B!`fpyL0I7 z3zAaO4I(AoT~Z?5Fhfd-$iPq%QqRHrdp`dc>Pyd@v(MgZueJ91BJE!6K1}zvaiz;M zBr2FHQv%@um?4)6T+3peYySe*FTne)F+y~LsK zxohzxwzOzH>Z7Iq9aRWQo!DRgC$9!udWtd`H;l&Hebq*W;5Z}Y`n5kbOdO+8^4jk`IF-iiJz{7hN-lw{(u-v}Ta=X4tc`a02?r(c1h@l!kGO=#mCuUp z7LqdH%iqrVf8>*X+P1V%k%W2-C_i|oKNtxFvkGphm%0=&^L@;oeu9EY&kpOgM81x% zRIhHP=skXlIZgUE(M)IyNIw-7WVG!i@9lcPzxWai80VXEXo0~RwT~g9vp(4X=A10DpK6AX%^pUq&PtY=&B$OPt3^|JSK=cM{G|Teq7ULa*jq2ICIh4Q&r)pAOJ?lz+*p%no-d-~J)%ILn)I z6Tz#M-iLtC`{zw2Nple8#`7oVZC<)cDV~y_e~y=T#9OhvQ~oKR{FNY^?d;DgsgENY z*aRC1Mb`%84lokDBS>3u@=ubQX^(B|b?jDZ{tnq7+i@mOyb(sF@%v24Zym|xoFtn3 z5gJt7{HNTE=dTRtO)i5`8g8z3~d1dzikwJayVv;Q*;;Ii>(8-z6lAKxf(ZZ zZ|g=U=Ex*oaG_Bvq#4?k^69@;m21|C$>X#7n5~$YKl-&~gUk1fJUoe}OaOFz6}Wb? z!15zHS{}JeHGfW+irnmRebi%<;``Cf$bfYZhzX2djWuQ?$`06nt^5iG(EJjC8dds? z%RK5XxSiNd#KvZTP?2D&E%#scmB7r~^3<0W8NEn?&U$AqL-+2eoiAoLB>-P9Zok-{o<}!q`%8-D zN@U<}Qa@XEWh>1Flb<7;UJ`eLx8_kRg;E0;W^cTNWYa)y0LuGC_A9IVY4c;~T@JFh z;IMMP)#gb#)4Um*iBA|H)ElSo3~X@{$g6y~?&LK&oy1x4tj0Cr^kKN~5*Znm2UGwmpu{j9OR;69n-;Wa+#UZdNl9*avz*pu1B)W4TUq=s(b1MbCa+AdR(tcb4 z>P$8(5OgNR*96;d0{bqSC0uo^{|m{yyLQYP-LosJgGTq}v|`Plf^U)NnBvLft@(0@ zkFLys;{O~kOJhoIHin`O;00AF)#XD62)_O>#*dPLPopGxAuSq7nX)CU&R|B}y7$_) zyvfQV8vqO13|y_Yk&yqy_18Zvw_RUwNe3^MIs3;H5!Qz$3|NJepgqxB9yVjJ>wE!t zawpo_wSreOEnjFnZr0=6n*Q{Tu>~^vr%L>Kxr*=Hh;9B4dj}f*nCMMJqW9*-XbvT9 zhsL-z;6ESii*W~7o~_MZ%vj5yRdkBh}R0OvbHx82_v!;QW%f`@o5)>9|u7TKr~-r@4%h2?CWYZeDB^$zHGRgUQ1Ju*1%Q1(*I+IQhV8s(1VK#d7i` zr_)U?X)fI;dI5j)RdoBxko<7$Z(Zo~FBlw*u7wm&2!E8Z@AG-i(trufJ5szOEb~qc z&G69xmGy74GI+%TjC+D}5cf7Lj4DXlw7c)A387A)4}Swg_g<+E>69leA*@COaWgxU zH;Ek<`F4Bwcl>_tMgGn!+Fu;j=%SvN3}b=A)<=d%vQuXl47i~An0f`*`5q_adTnAQ zBh^O`B=@H_%(``uW`}wnf4}n^&CU%}iqXGSB17E5PssnZ6raBvt>3Z9P5RiqC;4M5 zK~85Eg%k>BVzy?&txcw1U*IcojjTLbbL&#PXUC^ALmp+{9a3!JYKz0@+MzmE@6bi+ z@yhgW2KC43y+D)JM(y&9Byq*8>}QPa39GzzIsAFa$jBi;jHFnvnz!qS(!rffdLHnPOv z$JvMPX6zO>-(vn!<5i`W*o7_Vtapx@=1T5aeI*5@$g`7?*M^6ShjllnIhWkzq$}0o zZ!N$O(ZYwO*BJjz9W;P3JcIkLt>U5%mVeL#`^a|z^}3^E(j`o`A>{ny&#j@z@1l|9 zXS|6;t51)^vt6$ze@mQ=yWx_JwJ!Ji7`4V0t|;)O;JhuSO9gzh5keHoyWYY~w#q)2 zbk3+}RKZ#~Z_Rn1ux!!iNHHK|=@(fY!_ZYtvTN)8+^vUrt{8!ppO#*N-~rVFJT^i{ zXASuCLGwmvm(y1_H<*#vio&$0=5JPqI_UpBM?iK$F+ibI0t}IH6d*hKTB+d`ogHp~ z+c;0N(>X`u%p8qZtYV$kx?cv^=onZ@UZkSu@t^(YK z34xRr5omcf2uhqKZNiH7>#Bk$5d~aW(sMLA$~eIGa5PyjU3mxf*e&l^iTecG8fSHC zf@XX3W&W!+wppQxP@`xta9}~>kteN@vP-E%+r124E-*SP82sP3E3o>2nKob*^9yXgJPQ)`)P%jz21 z%ZU4G*{OeVi8FY3NHstbynT=pkM7YE7yn%5lKs;q2NuAstG&|Spl+hmlvb7TcbsThM@!$7Y*=a?~QvUk+4S!C~kl@7sE(Y0u z=*ALu$)KDnk>K!DqPJv0y0y{R^xb7UfQMJLy7Lu8e~;DC4B>C*aesW|_khM_=kyG> zeIAoh9NLrH(NQ%>&Net%@a_pC=5$?Ok6byeQs-}Ah3qAi{84WElcOLh$!na{X?`QB24T2EIDvlRUObFf zG}@pTbHmE7%{XV9g@f5x;sf?xM1!gPX7RCKvnRr2TSi~aM9DK*wjK`1#^XdCr8Q#o0 z$s@cr)&fLHb%>r3<~+#f9cwa}Tc}$K>4G4D2hOt;~(9qgHqICCl_@Lrq=J9A7&3 zXP10=6AXzIx5Qy#2baX2JsCq7lgD>lWUv8d_63nkq><-5GIoUCj3sJ~6QY0m2C_!Z zo0pX;u41Io$yIbfvOlsvmx9?*=BENN;mvh2SG~}Om`Ig0pa)CV`H>TxqF&SZv6-mQ zMj7zC9xnLz%n6fC%3Tsx)*-U0f1`(~Y|)=;?5F!O!Ng4R5ip-q*X}m^pX9;vDtv@( zta^r@#p*fP5|e)@+xtS+oZqpL77hFonQ=75bewm8mX0k#ShYd`^?pF3R|17&K;i#B zQFz804HkeQO3XrOxixaBw?h!r-~R$CM8UVqiZtU*1S-f3UrZl-mwH)th`hi%nT z)xr?0_x)q~jxI_4Xs$qO61}jDc4+UMkp8Cz9*IN(!)Xs6xX;60E6eFtsTM0#uE{P& zroxn~=IQl;NY5Mtdb+heav}>pv>>X2t2b@l=eCu|lWbIGG@9BQ&n3Y6vS;AI+*=_M z==m2nc0A=clcsec$l3!}3q<$DJWhsRs!*-=gC?_<_Y(7Nd7OdaPoOQcPT#}SY{yn8 zMJ^2YezO~MLDsTGbPZ?d=YzkO(60zn9HO|4RUKaUm4(SP%EBpR75E5!89MekJ6?)c zdTODySf_Z(dr+Oshg7h@)Y~oxmbQBynCudSK7=mVvZG%Pre2-)vj!|6U|KeEMT< zc@!)n8avsm$?7#1hle-Zr>DsFE$UvD$%Px(V!A1j;=ONRC*_dvYJMdT?&S1Aa>J6- zSe5UwM_4Xnu4}l+&99mi>N=LKE%Gl4>Gud_N%WEpU;SttT}@b3Y+rdU(N}PQ;V~TW zfx0)=@4m;{-o;rGO3!u~o?O)*>t{7a7Rm|9E1l7O*ely`O>^9E_+sCoM_e<~2oGy+ zpRn<3&4e12Xw0qya{?0!*&}h1zwJG=4RmP@C2qPNsMtRw2vnryf4ZOxY%_}b35pSq`^72lt7AOgv*W=ljxkkb8Iy zUxi$=90&Sd`zNkreKZb{X5dM6?Tvm zWZfqbds%c-%}Bh@#3`RpP?gci?y=SaR-ZMJrg!)pvSxrxq0+M5dldT2<4D&^?ScUL zjTDQ4I^=~vuJ9}hR`tK$Y&7%bU;K@8f%Oi_0H-l9Xn9>HC zG(2o1wfn1k9^WZ`h@4%)o_au2ZNurQ6iAx06RgM})^_u$T1Yy9pP(O}=mG0KheWW% ze8JF*-aV~<+i{>R1)5{|xp40$zc>JcHM?RoFri?1<(t=&QRjTSztZcVG zyUUx85MmOeC8@UF{3do3DzrT}S>BGY+W`=a5H?+U`(^!s@IsT_^wOEhBUc>E@t@^K zSUWt(Z^`gv)W*2o&(`x}co54uTp?Q{;2zZLKJ;9vl)RzY>DWC%6 zp>Qg%@+28&3P^IYU)DCUL%#z&NbBPD@8IvRa5^sOh80i7Pfve@RaB_gkHucU$C7Gg zfr$lor(4t+#P?IL=ggn6BljIcE9~0y2yVy9=YtG{PO!TR=qMs9#+tt{)D-1ep$9*L zZqXr!QVWe(mN$=vWs0w&+K+9y(Q;{c3Gus?_qA1NdsfCRLny6?kW7X`idWo_ysA#A zvA$t)&a4nt7^k~s;|d*31goEAE5h{nkp^c!(Ojz9fcirMfd>SqhBgVc>2HZvL$b7+yCF&(o~*Wh zy;q_pPLrlSXx^EDvGo$!Gwt(omsureQKE6mZ8J?Wk4G+sSZT$xnXEaLsl)A$0MADPM@ByMFvLkumR2PS9n9L6>~~+r$p*U5Xr1 zg{yf`V&CC5~^mkVIO9BWAyZSMUH(V@qQ2r8VHB6a%>K8YiNd> zOqgKq;*{!VOg7dcL2=^kkTyYsq9s=wG4vP?Dvg=Mm8P84RX2pbQDi*z@}cT9O!B5o z{aCb8r_r-AsyIiWMEppS0cpD**v<*gns7qRf1t_Ll-+JI4pT3YmK4(6&$-!`K~8iN z_C!apg;731d04rRXl2WcT}d~9zUY9nYgY&IVQ&NZY0WCS_sVcRfv;Lo-$-mjF|7yd zk;d52FHPJpL@NW4AKN~Q6Y?zJGM5a*le)eN38X8jjl~(>`D%^wOBj;8U zZkNqmM$`8En%;??2m0L-Mo%l+txgl!rr3uPaPHOm$M}v{;(_gZC~aq^=^<%{0+;8b zL=m)+rf5jiFI)E7;eu>B^z3(EH27N9?(2up^g}avyxsA@`_QjV^L5(FtEl+qJ|!)2 zN+|prrCW2pU#sLAO7bT)b}w2m)wh!O#;O;RkYq)L3X2zc0yVtxqd8-jP5~r39aiAV z!al_}(l`+d=b-Dw(JCg-`bJxBGwz(w_2g9PzHCu6BF3sHIV0pGN1cMhzh9)I*XYVe zxR?;RTN0Daf5IV2Muu_z;^*bhD zv^0!UkMNS8BeA5$bFP-S+x7@K8Llet?j|$wgQY1{O9SF4U1`|}LvK|&@4eUdL4!3Y zHRx&9_Lo~(ms@#Y;g1HKHYL(3mqy}DNcEAMt%J~-WR=63Becmb?-1I|*{uMf z%PQMO8to;NG$Tdi^Pzxl$LZcV-r2X$t7L|w3Z+B*%Mk%@;0w$Y$(m>KOTItDD`fGx zC*_bABc__m0%ic}a?>6DqN>4Cq2Pol#xX5#9ym~inq9a;MPaCen&ejKDHLG8i!yfC zrS1GT3@aE}lvis(W0Y@Gygpr_L)M^TZ&MK0GpH1muSACPTIMm+YR0WD*rK)Z0R~jL zjSNNAlLbx+tnLtV^{C|}EA`We<(wO72K(%thVwAF%Zs}z@tFjAjG0rMyGZ` zVlv&MKO2p>9{Y0o>tPIbX>7YkZbnu@N6Y;aV)|~Fm&TZSPNp(N$wg~P1|h82*3wuB zKbxwlKJ0CizI4RXoA+X(i0t@qksz^q`Yt?&?iq8&mPSd4*nHPX@>zs}&lnCkVHv%d zI*F!xhcHk{?oFvZxn$SEzkUzSI4o}Mb@tAWy?j^lF|Zzp&3d9|qo(bk zs?DcK6|s9SiUXzfE?X2c_1qf25QtaZXps5T|gArH`PY@R=wpiglls<)@H-XzcRetO-_;2f!#z-WSr zmqzumz-X7qqlYMGy>3JCUQu=T$DM@)4bd{2=nxf|^e&lB3{S;4(j>pPygp zr0LQ_s7-T9gT%-~e8T9&DW;D&A1}BiAwKO`#RSzc;^2)}KEJ)e9ol{POJviCJod^lyGMD42Xb#K6&YUu zfo9ox%vRHyHG#^G;WoM(kOCCyOtV$#{lT>beku~!XOn9^6o5nd?lT3$prtP5J_ zr(+lJ%54Obz`RbjE-0Xz`ex61vQP97c@ zzc)|@yIt22SmcN81v5r?;aSdM5-{_6TSxY>3FoV+cjbl{W8#^~=HvuqzX-lDYu+mU zk!zsJPr}>ewpd8)txp( zGdFp}F!0HY(fI#ZmCf1Zta93Qql`0?n{d#}tAC1z_aY_=8WTbDNBt@WNh=M0h4x5u?sHgCRc13FpgS0P#!_o%T?Ye*3L$tzL7)1FfV=p@%bpwbTX^RqN z&!I@~s^~yEm{MU;d!C)j=;_!*gca=~N;;&2CyA~^7um&T5^L$Lp=;J8_a*%w+8+IV zl&2-APH$*+>yXwC_b#Q0q;uQT)H?~Gh3{zCH}BT_!r;Oj@MSc5HjG07v8*tG?Al<_ zc(y|l=P19o3OCU+Ob*SjjudZ=0X@~MTANWmDDvqj{OZ!2@gsd#=nwPz1gBC-(Bi2; z{1i0;sIbDPIx`lh-6M&fxhH(QnXO%);#Z)m`GSuLs&EKy2ThPNr#2xSaU6{l2qasK z7fZ;sFS-nFtxi_dFpbBj&&E%uDIy!3&?X%*01DLR4poNG6)P137}=irGG>P@)hq)% z$-t@~WMH9`XUEV(jk}(?4Qf1VOd!watVmQ=Vly%d>@AKgb$x?5Pj{u?bC1oeO(sYl z7W6Y)a+n&=9rbrUqAU$RroZ%s0i;_e+McZRY7E6#W zV)z!r6?7Gvd;7t+x8PAadgR;)DO#oyz{$qZKYjc}#cgE!4j};}%5WN}7aoh{6{A=Y zRA{c?z#(tM5waz*1s+jjyTyQ}jmOzwAy$^wZ_@*?7W1?-WPcIP+kiqeM3dow=uSTt zO`7Ho4ag1;ehBq~I}LFTwJVPZ-G{!kNm&>p5^UKddfZ=Z9@WW zenE}q$v05sZO-Xj_n`E+4Flu{6SmtD_`)N44HZ{2_jaFw6Ectg2pGPHF$(bImaqT* z{0zkgx6L)3>#A-Mm&Qj%$a-|QQ@^44EKMOwNh?w-*TwFJir{pW0QvfquBVZ9y-GHu z!Bz?Kma;t`e6hG9Op`Y4Cv6nJxfJCU;*PM3Pm$Ae{GsQ}NCG0{qgxu0gTRq44T(!4 zs8{3|TiavX92?Uyfz@xE!!~K?mXzCY0Ob5JEOFPq7K+{Z6>#|!3V05R!-wz-S3tf1Sofg^YY$IaBGEO zO2Jc;6YhuGJfVTd&f%Ua` z;75kCw%e)+F^LtmZG{_S((Gbvg-cqG$f9OEz7h$LV|)uq2dw}WWKBm*+`diC8vTAU zH}AN;w+1|e8B4J=HG8;Xl;fN4PHX4yk^Zy2cQ6zS_$4xp5|0Vy-h*36fRdMn%jUnJ zP8?ADW@(3SqV($g=|?nBk*9>Uv)WX@P7-9q%bPwHCM+w8%wOUhAS zS}XF-*8QOvDw(XPgc->0ChqZ_^NtiX#q@lW!s+|39@%~O<5(fZm-nWR6xq_LKBlR& zT1P*+S2V=*D4Ax2+|}5Im3KBOQig13bmTWFo|q!H{wMw#ZylAXqql(*JyYT0#R8{( z&^q{}ZoX&E+@=;?CO>WFbFIYdTG<3XURBN0wutjUDH6R(LQ74=O@BszY$fw<=si|4 zk_az^gFQ*zU93NtT!2#|`pYVe;$hu0UjV#H>~RSw|Bwmj#GRq!RAj7ySM2K63@h?& zgV%2sL}<6DnA2UJ2Eox~B?vT#cdyMRba~J6hZNooX%!h6t!W~|sJt2~rGz`xDc%R! z*60U4>B{`%17i>Go<;4pSjYzGy2+ukhxL8Ri zyeekadNWoF-y~2b1po}As)cfF1hUU%>i9SJ3QhOs>xQ%p|GD;*I|wWfsK0esWFCA2 zY<@_TAd(_tXSv`euzjh(mIh%Z$!G^^ToW= z8a8CD(EISF%M8EZPc_TYSHiTOEVZS;@=d1QcFmP9xEOlVUM8($9-sC5I^RI%YT(x{N#mU&aeanD!7_~g3j}psS(l`;v`JxK(!9%~qCO9ReM^=G? zYU}-W_NYplAFE!lAijqq%C|7xz52VY`s&7oCgwq!96buvMucqD^lZx z5D)H9Hc0pO0A|Y|@3v_5dMmM({&?UA1J`+C19;FMwV%lalg)iw3s=FYAGF{{82`sM zwcHNXzT*iUKf%5DqGm&e^Uaj>C~$X3=5(=|pZJ0Hp9$qH90T7^VJp{c8LfB~F!O=Z z6wg)#cvST@5|(Ps^WT>?ZQL+@M_PXWX{uf2L;U(*W7rv+lB-A2k?#~KdbG?Onw3BT8gFdb zx!{?MB5+rzMGt=YHJLV@q{YJ;T55^TXmH|X8Xwof17C=mq^wq0Cl)Q0UD8qtIeR~sNoMid}t3B2-NGnTsk!>Vx{#vu1 zl`*%(i#~WxY|$w%60=HUJ~;O zQMRu4tnEFi+wvY!@e;jM2OU?(4MqHv08Mx%Fv?rL7RG^kb*L{}$bdSpm9!Vb+FrT( zJU5G4@$@uI1xUdJ_lA=hS!c(Wf(jAwofX)nFSWNduL5*mc8*4hENadp8mmw8#+9Zw z7IzK@8mBWvn{q4bs800YxU=Thu^*?iIURof@w33X44%9CGFAs`EEB2n^{nt-PPGzn z541?>aNx41TlD?0-f#&hrOsK%fNvu~+zgkrMxYpa#Bmqllskar zmXdDQf-?C~%cbm^>_t>-O2hrkFI_?JT~e^E-%zvd1%AlwDD2nG`^q}|3o8bSNU?Oo z+*IiWW_8olSKL5D$?f-#ow&=4a*Ct1Si*wmKy)IAmiVQgW~u6>W;MR2yTVU&#s90y^BkgkPv{XrAXTF zb&#H=TLwis5c!mSk z(0wrpP93G;b-L3Tf@K+~3z}L))VCwUxri?yI0+f>ZWhQ}%Ba3Gn+&99D zhIZXiaxmomEfXH9w;;Y-{B_^$GYdxlX!Og62xOu;WceJ<`sDGhl)T`n9h=EGUC&J< zdK(@hpje?@ls{^@K&KO2Co1{?etKA#LOT{4hG@mmFX5unASyK_aO?C64Ei!{H!dyA zRu?6nedR|BKE$;JpS-(~@G-dC0)Q|2|?qbqQfk1FpkV#4TNIJKkFt*^{o){+lTD#bDU& zgXcQ}0eA!`DrvahH%rHl=GQ#{BV?*o91E0&h!qo}$jvWRY(m6>&=>zjztpN-$-5Pl zzIxnX-i>r;GchdHQ(&RdibVI-Yk%n(V5LGkBBDAy zV^8a|0Q+=?57#7xFX!u&Gj?-tt9%)hI%v$SNkm(xEW@=HIv(fm`kqN)&HE{3&v*FR zOU-W|FZV)2tr*+2BBfXp)iyNxRyb$AtG z5Emi)Ve9z}IxqjaQ5pELwl%~2J@nxBmiEsmM6pIxlLH7`RgZ8?e5F5+ARAXEG<$7`0u^{ zmcqVoE%p|Kg=OLFWlW2+{~vdDtIn6(MVYuch?#5RyL_A%zxNhgj}p_)HcAfdw&ASM zGyj^}Q2%==;`LB)cZ3YAM6E}&7wy2G-9KiFcRBwKWIR?(4Nz9;S5%G~Xi67&-WgMQ zW?!-UXHLy%RZ}F?pF8xq5D&wXMH?XtQoz)OU-&7i-R_In=HDLQ85Tg>b)0@av~Zda ziWh!T@Q}={?2_*B{9Vd?r3e&f{o?E>AP^XShM5@M$&{n8qrd{)j^eVAYjKN_5!pVY z3=XdKGoa|kMl|uXND(#i%-_oGn|nLb_ZULRYXW6MD(2C5H8ETh4kKr2yZ!oN{#_HYujd%og%Qv{P2b8ZAcwIJPCQNQ#{GHE42~Q_>jC zPKP;-9+gd@3U_)m;6c9UXQa?ATSy+GL&qesa=36BTiNkfl8o4=)^-Z}h8jB=AJhLo zJ>DEhSO0bYR&g(*D7WeYK(FY~!g#nOg6qZ}D5|ow&xkX&s8TMTGOU2Hegf>oxrME8 z^X2b*G=eiL;w6fj|23p(RG$z?^HIw#4f`$`rWJZ~-zK`u3Yor3%G&D~@E-p5)Bww% zG`=H4Eh7I}x^b;8z*iXnW`PD9MpH)8)*e`{ede4o>nnZ7$G@mCoeqv7?p4Z}V$P1?_gLT{~0 zY}#U@mRopXV)=z2*fQ^~TtW_%FG^`XLPAgnyxTa%aY`x;SB&t=eF!504Y&B~L7_&R zi0Vsx6Ha*;iaXYd^?OQDWWgg>aRtT6;MT_fp^=g@#nUDo9cQTFI z^C~to^#!|C{?F?q;zl=U9^YqM+t|C}sd-CWL_EH0WV=Ei_gm|)yHgFlfrk#Hh(Amx z@l3n_;@J{qy`j8hRbHjw9Q zARf^b`bW_0&erC#N$)V`BSlNDTk&mEL@iND*c@dey${MkBdUXjb~ra>iTp5?zGv=} zxo_<{dDLKn5GB3|Hd7RlU`dK66a7tL=~g!2CQMpJPqVGt!c9!oz+>4Z>}E@L0-4Du z=Iw6v77Ec8QHLU|d1E%uq}Qm=`s z)9#HGAo5E4BuEK7(CAl2L3pY67;*(qo>SAWB(j-M(<5=sFR(zfSXz&`DBZi&2KlpS zZmGq8qH9B4+U{4Y$h9ZXvy=gjHev;i1z5>$xlrrGQ{*>KN+PGRw6YUQtoJ}Ux%~5| z@dfM4;1U;kA4qZaV~@2ry`j9pb9Svqh)1C;h2l14CuBv{ch1R)Ga2)}GnboriVo#QIEVc4Egext_IfE5-;9S9SZzS5cwEKVOi8&SR;aY`aD z!a`G&o?#j43^wqJkE@swEea%VJNUFS6x8&DN+YFN&*N#)LFK-t`LFg2qJT&PFJ&Ws z|M`#nnM4j>iO%7(72KgL?*h6K=xEca0w*;qLh5JwG%e?TW;DJB!t=w#a9|=T%fdOx zy*q}#JntCJ&8c-&KELOFIRWb7tZAKEN8oLc%>4M7zcgHezh_^jkAcEOuE9q|7Es?} zH*k;st7WwQ2MA;-P%GAbSNIH=iizTOdMd)O3MTXu*^13DtAPF+hGk`}b)iD_{MKh; zL3V>s@Ux#qz&f@^@}qY{!}k-?B~fgvPoVG-R4IkJI4Km4KO;8FjCyu+>-NLc1EzXL zc)|ii)pWyR#|VzgF0kB(g#~v!Hs|)*?BB%$)p{L!*ra9Jt;2Dbt?Z0!_7s4seteU- zxTSwja^EIKaw|o6C2K^@UzYHXG+OWnM>{GiqPnT23x%E7a~+oXJg$!089~Z( zGSsg6|GfaARu>SboYytLbX3((gvoqMlnKHo@z0lj&XLhB+#&_<54wqGnqQng3R*=E zHIb{QllEQXo3OW#6>mu{NvWp&_|?cD95?m#@2VeBAgI&f{ym0wSO;B~p{AHO`>Ab8 zw$9J2yTka)A(s;npgQA|b|=w&aS49d3g~@YxalulKEB=&SAogmwa*_URC(6L`|Kq}oXRlKN5Ri8pFj^DJjwVZ{?_AJ(NQ?? zni&09!T9`z?@Ww_eK73a4kYk4uD`v}*!oj^TBiI`i9;sO33iaN3(v4+n~O)-PZ9nc zo0z_gDXh6qWtvNc1df%Kb-v+d(xrXA_d!=?`&<39(#qRbYSP0vC_YF!yyMbAxE$~x zVl)rB`C|ifuRAjwk&7w2lC1cXwrY75{nLi^+ehAKG@*)1PHT@KTbjU?ia&rm^SDGK zL2d1RY*r#uG^?8lrpAL&atzxiqP#4PwS$++JeBNZ;vjQe?zsExAh$06+hg712coW` zDJa0QbE9Kb=^idL6fJ7iefAYs+#=K$Oe(Z3hGjrgi)c7H!)$Y&xHO>up9D+&|4FG;4}Sk2|M zJK+l|(IznXJ$)A;%Qx)njxKd{Z`2a26kW6;qtEl{pP}HANA$4gO?tw{XXzrP`qrvm z`far!?UvVNAWjD3jI-5$MHev5j}6L@nm&QFlhO zf=z*1+ZxbuQKeYL(^~v z1-d37O1(jnXoEuI0wB0H=m#FG;)qGnrujj-LifHP*luz3#*<_~Hz3y_ef9YRk8oLD z8%h^>YVc0fwr7qlO^7j-2|z_UKi=;qs{B3xVUvi+Hoo-U&0ZKw>tO~~B#ZsUysR+R zm%yPEBXpzF&_3MUb$H1ueH@hF8Wk{%3!FTOkacCHwr2y(X$g#!PUapQ64+p|1*Mah zL6$WZ50J{8q&C`ZK9d^kQ>($bSb9~)ra=kUv(Q!Qj+HzsM)}sLttJwunm~ARU<@ma z?Atldv!7|fyffPP(O;PyDub_U9-wC5ej~ykh`nNftTA*zG3u-N|Bubzc@?_zSc(CO z!TA=ouwFuhotpCP=(zb$av;#6U*VIqjx}z<(&9kVQ8TB@%NRSO)nbWz+9hkv2bgL70na3}LH9pI)wO;Wc*@7rv z=CfrfCo2NCikwy_nP52QUf`>W(6M9dVC_Cxi~Ourmx*wZD9p0EkFn__dY*S-H!bo#%9!*f3Ka(Fi31)(K2{j@XX#kUf4i&!k2xVmi z|4NO{a-g^as8}8G3;TO$n?_WTg?~43YJR?nm~{G92h5o8-{Dc%?bgfGv(*oKc-o>> zg++U<= zjWR-oCsc5^m5o=Plv!g;@ae@Wjsa<)xLikCkIy@{RLlLg{~0u;#GR_W2OBHWyIg%g zP@p{k^v>uo^Io3=@G-u^XP#a^v~PCbNd%;XE}##SyA(@wSCXYh?IQc;tgwfFH5#S9 zE(6avEZoE$D?n#)#q6vhm`#*K6c-@WgdL9jxY0=4jv88AzwjG07m;N=>O?&=SVxPt zc*mv$e|!I0O=~{yX&jZ8d#7HF-f8DiavB@^}Bz6UJh9*29`7tYXQA41C5{i z*x_N$^=VXFR;G^)zb)z{j<(kd3%g?WX;Q?x;Cig}|B*&$y)WU)eM_udJajLu=dpXG zAH)aZITZVq^Gd7ONmW%B>YOuvWY6^11Y0eSn)&1Y;B_AgpDC<|MVB%&+5KJ9GMIV@ zqJ_D2z7jcX3aPN_$pct78r_WIaGdSLb=FeQoLAslN!RS`7RbLg1=}3bWPm<@45J~9 zseeAsp&bwZ5Oft>f&*+^4xiC7iTnJqF{2=*92<9H&G8RoV2C=SblrR<5h1%vsA6F$ zF%p-~DGec=dsL_a`gPGGv@iyV1YQ}F8cDjLIF0AJuCHQA3-Ua>Xx%X$74Z}5_3mju z($zMiO+$}JiGA~r4n(CRQuxsij?BHx`NPfm5^cqlg^roWZ4O{khP}>s_A4&V6)6Ek zTQyPQIoHy9EG^1PZEHO2fx@5P!43b9s;>@t6TTPbpUR!C^LAy66D8 zENIS8$i%WzB(O@l-Xg^^vJbf#bdFo8N2o}gh@;iZ6oSJ-WkO;$QnCh_(x{I|#9u{H zikMON(y$qrd)UiVx4Yi6@mY1h@N@nCF$Yjk@9Yln!5N2u;;T$%qAsQG!Xe_+jHbH| zHeKWmNN|U~4sW;8*{-pv3HchsI$B>DPU^UbEp_8E`A|ho^J<_v7H=gGW`-yhJtl5e;IhE=o5gM{i`?Yw)!F0UdQYZ9$5vj3II~4}PvQqmx zcs<*}_N_Yu7qA+wnqa3A2+LpzO@h98nCG!nU_-~%BRgihHCAbMN!evm*^Feg-lhM{ zY!C=nkmC?`3-(X)GLcW@D9%4jz=`w1Wi(vxq2Cl+1BGZBPheS)$i9 z_^rh3IOtn(Wz%~g6QFMnP`}BH5XD+w-7`+bzwcPNp|(=1fSkx+FiF^LEcgcXH;i6S z`NJvIgGwzH=@^2DR?5zgB>5V?EBdRL*^KBG4&Zy6MYZg##u|+B)dZC|gH*1j1)Be= zPp-cqpKK*i1?sCSWN5Fs&O)B zr%J1a`ZbRK_mD9pf6n+iL)p%$FPb3Qf7W*C<+iw$3Q#^z21~h>VA5E<=1Bjn~2Lr8Ax3#4#}n2C?`D39!R9p3ZbZO zcShw?|BOVUhh73%oRc|T0HLCL!V^nf>wk2W-Y1_6cI#=)A{0A)UiO|p#!ffiPGxf1 zkCR7ZV&W&chqZ32&&%d8wE6=XYpgokG>K-4$VJdS-@L3!90x4;+7;W{J=#LP)tawf zPq3g+kiVl*-;9KYtH6@-kDOvxduo7XC3KYl<#gx7^E19ONkMkzqD7Rwp{Cnp1f`4t1!dAM(p=9Z%^JIUS^;ca=VFRAvM&W8g$xBc@ZzC>?- z_YrF#0^ZR7p$;y&r79Cc|B`N-w?TgvH$(;gtWy8hJL{XI867qvPit_+9b2}e)sDKK zfS^2Ur6V2CPyL!VT&(YdHj#fE8>|IF_{4X4m$>5ajYFMs+M}RvzsMCe5JB*E_12rb zMh(@l4jTQxTZFWx_0aFUZNGKFO^++f+eNlBAA1q*2?h}#rG0m0e_y6WGQK!n@xqWQ z=W$_HS^TaZ>$d-Xlx5l1nbj^Jl!^tz1ARv}Kv-gc*#uONGd*^s94Wj5A}#M~FDrw9 z05zd2ppu)M4eU={7yDh6Bu6AOy}z}h#c!Sj%$~%S36IR)VAb}1(bxZ6fsm~ElIjNP zLfmjB*2jnvN7sI!kdno`J5xd4XKNyNF`44EOvUhlErA-ez=d`_FnK3Uz7V6wOzQKT zY)xfR0twAc?gAcS6G2|GOyF`MWe+}A16u`65K!&VBR}BRa{0zGmtVU6YOrv0$ZkUd zj%EotO|^7=J#K_4|3FpXEiUJA&ZH*t@*&L3T-ib z_*R`nFYO+aq~8M3UYZVjnQ^1^9=hq!G8PvFfZ{EZ`6~b`SX#DRc%mbU3O5t>jcIdElFSc{77?9Z zgy6RmC%$19_4tI3Lhm$L3C_%Rky*m2knHNo&*my{_}{`-2f9fqr$T46*sY*%&ijLYP+l&4d(EN!DU3n+dKB=zpBF zjpa=?#Al_yON8Rfe`()T`=$#-)nKxNk+|Gj)4DHvROERuOp+z9ku&0~Dz*!Ktk8boT)00T;3y)tCu z3gU=mRlA#^9P?@ye|%T<8t~%50-q3Ct|`(eow7%vNzU!!Sn>0=euhFOi4<0Je-bA6 ztMy#mzspE!alupdrvec`4Epu&UhkfK4S`*QMnK}*FK%eh`W>6`4Zq`~=PrN($~{x5 zViE_;6R|L=z)1**_Klk}VD}|GsHQuD*>y?yaAz`z3Ikw6pSFSYL=A(=!c!htRQ^GI84L`2$1NO|UDZD|Li*0G8wAr^Hc0 zcMnEE<|Q{zTW4K0c$~Iq#D*hvO$g=>+0=Budf{reui&fMw!B3+wtwsGccxUNo5)9MnF4PNW1qS#Q%Y@;&b`zf2kfP}04OxD7`br3xs~Y+YI#zUG z@Qp>$#3S}|c!)#>7%~AL$?A|xljp8f>I*4qjjX?`TuqCS8p8{NI7nUJ$u14qr44-4 zwJV!1BBYMfkNO*xg+;A(+FHLH1l)~VKH5YpfG6HP z?uk6$xtEkVuZ*5kX9TH2$m9adE06-YqQn|`EOh4G`6Y!spqg6VDYmyix9y*8BmrP( zNPJkhB9$vh?iKCyB(up6F;M#7QIdCJ1sYjChy6GKba#ZfgnIhsPL-{TOmJyqj_%nD z^4KF>*z##c^UgI9ZTJdl+}x{*@4~FsHf`CUPzYhU?61$EeI#uCv`cUzXcYwMCJ%~( z5>7yoqM_v~Q$!Al9;x}9I&snO?$n-x6n_XKWqM_V1WIv>wTUc(sBt>R65(|*FJIHz zAy4V3pNG0d(u+Q}h*sUcE%iQKN_E=AXPko)at&r?V#AOpG}ztJzTnaX?@wToA-MF! zFv@OZU(yKjt;rSx+ZL4DufYIMHG){dUR@kNXAe7~GLA~2Pfn_job{HoIW4eNFQ z=;~c=)wW&J|6T#Nc1%{_<@7cS zh2!C?)r7CD-4XRm^jpo^TmHgIK=SsO8>@W#F|Xx63OW!xpNg6)EGx-M7#k6Vz+X?Z zYh!yG{X$;hrWcPLgyCEU>TeDtiQ%Ysq?1qZ_7A@{Hu%xht%6xpHbT(EmBmaxv$pUS zAO|g)ekMY#n#tE6O$^ywsur{onoWn}L=IO^F=1NSdj-A#@UFM68>ZmPg}oNa*F zuMGr`M1g2f^HXKm4P0|Ox2Dk78P0%%asxql#(pQl+V0J<$Nn@-h)P-APGNcIXw!q> zK{L?y2`~Ni-bq}-K$8{`#%;UzdJ9}xfQNw;1{X#+r8^1SZ*h#FYA%Ja=XvV-_4BX_ zSnvyrTiY1;Q>cgPWHFfaY=eCPGjn&YcuEXtT;qiACGjw(g2IQ4Bjp|Fs607}%ySHp zM&ap3UTn=GdoOqR^V zKBHcH_;o^Mve3Rsmlz&BaH?MR{vqUrWEsh{JZUL(Aw)_x({E*UV90sndVxqk=%Oshelx}n}Bl#Cxqz?gph?; zOTCIpzj(Tv(U7^#Is$!6N>>Bb^9suGD$r7h1Y@*ke;l5-sge>9E!U-mwIzTCr&5T{ za$`yjhjswV)1W@7K)z*24;{D_gV=RR_I|;}X*rmFi|~G&dH;F(Q^qTr1Y`3`I|q{? z%RmFc&W8r-L{VMH9V(jU9o7N0$_q-IB5K+ z)kKfX&{p2pnju>zO4`5`WZ{K>Mv8leYikv(b7d0RN1uvXeGzi`J%RZ7GPv;gYZzzH zdnwPN59^O)b?JdA%HSFlO-35{2L1Eeh)lG=e_>Yp+ovtbR;Fc~lU)+91X%Rnn8QIA zXmaYVt0O>@UkusiSB%)u zlHZH2j8ov)+sRoo15j%%9`_spGw}a6U^FHmCYTx34*FO%DX=bW? zqJ}w|DeJ>_VT2YsG><)v=AsZZeR^=q7h5^efN7KQNuWd=7Fy(vh;zw9P~)p2!7e;H zm;~fNBR%d8bGogpDU;jpjge+`O9s*S3EG2N5aa#onm<}foOO772x4<4SXfy ztF}uN*`ItE;#Ve#ZGHkKfF3h)To{`61YyRm)OKQl8%fSUX7PVdQBye~1PtSUlf74( zX2WjZ2q;T3yMk(d%KLDu7X4GL@~k|2;u;sCaLsBxErm-R0}O&8*j-e^F71TppCbtf zz_T`68ZUUi z?!4|bh4L;mX$>TlPh_(0n~qn8f;mOy)wkpk6cd0_jl~7jskUsK8H^hjQE(Ji#LLW^ zRE*D7*@viYMbOP#fZKb{D*%(mbAs*5&rUg?t*$8tZc2(1p2AdiA97wU3v-G31LOZV z*IewnOQB)LNh%i^Tq!M@AkZLDZ0MB+7j`iDwAuv$A0kms1TPao)0y3(%3mIRMmJ4o z-RloYU>$M(kw3$AM$^KQ%r!tR-PNkv*xjz$xB1~APz{Y*Oop_L31&C16Zl#@-J9`$ zy7gI8_R8AD=Wu$^GjpJXRV^NFaE?E@!Y>&`&SDfABe%MPpzC| zn)ilVheGu)l`2NE*y28ZQIgxV(%C}TAHHmkVBeRn6}tU_n!1CvAlNz-@|A61o{C4s zr!LzoyDmqVPe-t6wdUc`dj9lo4^N)QYMN8OiyxzrXhC{O#T!%TCymk~YS@CxW&Zk8 zI`du05xjTdCd|Cc^;)gV3 zwYZElwhqH)m5b*LN!@LX_~H!s;Q1T%RqSbk2BqW1$BlTZ3{GEB^@FBQRa@_2Aq$=%(w&VPSp{-9$dVEFKZcyMpU^87O%x(D)b>N`w}|#o8ehkQ8nTPJdaOq z0%=6POmbGhh0rog6XwP&ExGiQ@|=ty8e_{dK|b1lm%XN-vf41SJ6&~00@uqi6nbMHLEmIa@(}^aDoV&UJU<SC5D||%f=}g*as8lmsUki zvJu1Ea5~x$_PKr=r`2rvHH>yHtTeLio+BB9N_VcZ)&eX;jAY{Ga82JgI2cnGxGpcK zjYx#D$;iaJetP*z;08{SK;3>u3P|Q1RpMFwHA^Vyx8Z3<((SlG( z?nY>o2XQ=(pieQPg=M}7@5z5n>vh7+$jwC7w~5y>NliAXx;{j=U8WUDzCM>R)unbiC3AHS|BJYptp`6UKdTS%rIjwMlDy{%`=&R-3L|`y zEj33uSQO5hc+5u^WXWX)Ww{HN2|s`|=(u-jIUGnH?K$Znr` zJ{7bh)MdZ*tkp$2(%WQ(XL-r9gWunzi<)Je!>BFVbwQC|ec03&zN-c?0QNnsJ_!HqTym*?+se?Gr3S`vHMX;YiDq zcp>W3t#6Nwj6t4K{p5x#U!2bklg{(g;JY=lxAQP{hgj3c*b}`7-(sEYu(jdge)tMI z$DQs#k$<`a=2T#9>`5D9-5q{fxr-DM7TlHpSNilR70-rFa=lGouPk-FRkf2ixPFhf9~WQt(`$89S3d8v30p)yZwx}qz?7x2wz zKrCZLztnnQ3!ORT6O2xrA?m;6jH%vlecdehGE&&=#e&vL!RQF^LRwodtg`)iLq>z7DWrN}fU(=N{kUlZ z=^VJ|9B6h1!qCyC)`I~&-R-shswYYB?WrZ*KwJCj0k&t$&3YY$nBd)@3& z+H24K6;%j-)c4ZHVU?+9-{#S+>yu}^xTMdMBTG}GaI!nwtYl_mo767(B;7wb4JXcZ z2|%G{<`@riF{ldj`Y@FizM`I{A;^W!LTF~PGnhS3a{AA3CEZ_?wZ>ZI#b%Vhk=nm? zQnAr9^9X7o3?CdS{BkXaFA*2 zde3%zX1|B!Po4YpDj6HaK5Hw~QP-p=ls36{G~+zXWR;~%F(Y`xaU)17W5yGxW%-jt z1;6}+W+V6+lH0lCRb}eMUxHi&^hP8rT&HS*hp-fT-48gc7J@q>{1b0QoTRiwoSa(i zD?4CDQuuv*U;`stQ|CKFwuZpb=aKi9R=zmCHQ7;F)mBvre67Sl=p}+od06f}cc2?Ma28@2fnOnfD53|ZQ8A)nE2GWNT~hmSN#nj* zdOagom%@}LXATakC5*n7u8#c+PYGW3d+$cwiGB2%@wXNT75DICneM zVV)yahYuufzq5rl>0?CgS=cnZPO2xCtcWYw_u;(frq^O+Ejb+Az{O@#{_(Uhuqqd=?HhqhAY?!^c zo>rd5LLzqC#o2YF5m?33d2-Phd&;AEaW^{eP#TdOI`UQI+qyG0Y*Z7#7oJ7Vu1C;$ zGa?azdE5OiRcC@H`piWIqh@bk|L4mzWQpAe$!?Y373{rn#W7VMouBhq`~54lrD^S!Wns*9$qHXjZymka@C%5`=Wt$fsD+Y8IXM$ydO z-n^n-XO8g9mwzc_!rMWT;W(JtG^%=U{^-{PEci>O2HcCfU2 zAY=3p&NuTmNDczQ#X3@>^*)Bvq@+5w{2hBWRUL}5)gG#fP9YMge=Y?@<*5#Aq2T-v z_ud0Os7NA>NKZ~DG=s+4Ox3_93s$Nlg~-lZQDWIQmk(WbQxakztK;ChGrO*QY?a@DGU8xRQqDw3_Kn{sf&J(nP3KN(c)rYAWZ{eL%o>>?FEGZarK!)1cRS%b)BbR48j>l8?&FRE$LOS=UQzRokPgdE)C4g{zms7Z=p%oajAWo*2e+5BpAg6vA1K`et4x zf+3yKO^r85Q57!dtx%U@O5;F%=Qlf$c) z^f^kKwjrH$>~k*}WXy!hS}95ZJL}e=GDJ=n(=<%L0-#gyBW~EeLHm-$Vbb2VclS%r z$2d}&SKLUA-ApNe}njo}mdG&9<4fP%P`gY6y6Z2nO8m>tmF!Q3Oxt3!}jWECe2UJOS0 zengvfLPVAy1elL8y9tYtMp2_o)5D+7LE*rviL)9u!`Ld-Ab<=&SdVZeWl%f}2xmYP ze46YPH^k`AO->R=Arlzh9D;zRSXil4)|w^MybCrrjdCZ}}#3L}P(&O*>m- zVYyNLiKMzZTPmr{AQ^GEYL}>z-L&z3pZ`RX5Xx0s1tW*TtS58M)UlEq`QPpyugmjC);escs4tM zBXhp+I8vzFoAJ^!zP+1WOA=^=i6An@HRw@=J`6>kUP9=`?+KQHeL`&{y=BSy(bgE_ z>xCz$9EaGixIQ)9^qH={b6oW+j(u?Co@vec#$Yh`5&bPF6ZM)^)aR%Jrb;+6Y)2sH+20N|VWqFtEDU9|_&vu(WopnJFD{=Hh8<+MRdN zi9j6nca~tDUr3*qlsK!o3nIVH>`E4)aRTP##Bsr;Ac`c`D?wM8CZCteHm$*b9TAdh(7NzHYY*Mq3Nug1%#c{$ktaOfr z4e+a``cq?UWUt6`20lKGdyCT+OWb@_kA;2zj0V?x%>eTv78|*s0?g8qt10SJ!$U=>+u(oy+}pvy;^|LJ(ry2c8{S&n zg~pjAGX3V2;Hz=j#Q@mL$Hx2H{4Gh`?B^bvgJumd>|C(Rz3Vh}@LCk>=?36h4Q+k+ zC7cY`Y^E(fqE#&y)d__()+MS&(fxoMF?Z7|xGK8f3XB&nJxd00k>)?hhdF7l>SZDt zvXyvA_AZ%<)EILAGvyj{YBMh7LjPamHWunh^#lRip_st#KlY8`?W{y-GnA9`*)`PC zw+x1*GUz(U%)o0Ca74XjCDpreSJW~G`@#A%u-mGf3)Tea@dE?!g8R1@L4m4v1a5jBurrODnR)cylD`wYAgyhi5?&z6 zEClO0A&W!Z`fJ#p-Kg!^b6vX2l*zs7THh(LxDCiT35J^`+`0BdNc74cwpSZk>c_tF z7`O;2;M8)_xPMopa^wth^XkXSdjMnobD1bG=8Z6JI9@MLamG#VJrKSXQ^@04MC+WJwQ+$HJe1QvCh3#07EbJKv{c4sY8IOCI`$f3!k zlFFFL1wm{S$Ef1GR&gY{klI;FUBC1)k_!RV4=2GzBF^LURTE~uc;WWf<`~j9(yu_V z-h=O_5wITcZ^Zyx=}Q*>F4~^<#633Lq#8s5|Be<&wQkjyLrg;qH;Z-eB=4n*HjZ93 ztxoH_FdA*e;=7X_$17AF)4nRXCR;2HKhIY}YH^-$K}A?g5bGGQJ^txG-hUL9?>xIl z>jmnZGa{)ZhU)|x5!HaZ2mg6zfVH)7;HH5``mP)|+yJ=eecGs`wCk6%Ftt&fndk_~ ziV*N*dgA7y9=Il!A^%Jl1W_>}D)KeDp|1ccV|@{Hb49w1FD@xrZDu(?aC7*=?ka|~ zuKr+P0DMJK>Q!U!xN80;pqaGJ?F4-&Oz5Wd%3t1-Vpm#7!eJv0o%NQLS~DW*VRws+ z2KC3VV*NLtBB8Ql10s>}Xn3PI%;LZ8y(_qr@;$3rImj;Ncf`YOF{mt$(fGg|oKZap zm{Omcy(yXAnCwjqzl}xJ`(ZRpU$qXmVU^dP)-EevhX_kG#na48zgsA2nD~JgA#Vjg zU36S!5%g<1Wq|D!+X_%DAwhX&icuAAF!kSyz7t=Q;7@70gMKJF`QWxFUTB^e@{4@V zVR%AVlzG&IjjC`|yYrqOK`^4afg#;X>cR8D`e{}5!=SJPbGjE78Lls$*!Kjmkf^4))#9~?k!C~+J*N_!hpNav{x=Tsc7*h(q##6c_IfXs7$ZJJ{_VSiVK~!* zyTTLbfBwl3WUt(-1+~OGyL%OJ5a8bwC>zs|d1lur>!&AmH~dBr+`W7KwEZ=$li`5p zbLpxWPx`!snlFYcwWdWB`|+U4SiA?&?!IuXN{-7D*dB8_Bh~#`c(xUW--4SyPaq@A zJ|{o_X0b_^Kc&51{8FeYqV`b(W5n=y3%%)gHV|PBc{LXVK)P7Ld3`TlSYA4UpSb5B zU4>&upE*@!BMtvQz72=lEhW?Xsoq0P`L&K^$2x}0mAYbtHYv%3sJYy2iI4Zl%*9eP z_WHCz6>TdkwSF76=O!j6wm{D83ZM{4=qxtM?b?d&)tK;I8`TA*d>oIT4QUS4j0^DL z3APf#k{uswbF|T%nHfgZezJf0zm=torQrX}e9}J6CEaKn$)0{6tV3PMYn$G#LWwIK zTl1j=Zd^vjQ)Q`66uR=K`;KdSm~P8M{0Pes!1Oh-4_YhJRCryVR9PG-vbqx(T+euQ z3nss@Cg$Y6f?fhSgWJW5?q?c$wuJv!Qs!U?#e`^+W}*j^xo8GG$)+fh4?Y`O!)`8m zTjK2l$!gV>=K)y&*4i#Q!EMD-GEO-F(Ln1Rk#TA()wGlqx>S7#yHHS76Y~04P(sAA zpApw~!3PzZjp%K7Al8PPHfp^uwcMwSIZGsGDxGxV@w>RzdjQ^ZVH$$@& zID0$8zQs6;)G8WZttgv{Gtke)+C23K()r^X1B{0*wxQb^dD;Foc*kZKC1uWKRnt0U zNpH+B+~9&Q|K&OqsNIC5oca;Tzm`DYBxVMA@&LWzqu(Km~j)N zM(->RTB~PdI+IWh+o)&Yv>DSKR$eHiO~sQT63;n(_@)^+bhmcJ^D@d40Q>?DP>hGJ z#e&kAbb29(6f>j$9;;x#@updWtUOI2=B?-WiZUvXCtyqx_r*_hjP5IBsXE%p$*yy? zsLzag;LrF|1RD4$pltJNYGEHw2Sk&d11DRYo!CB)Hsf-Wj?X(?|LlE4(yV1!yFQ?3 zi}P*8h8m-Y&zN-K<`1+h@?M-ygY3nI-$ams-%${?)l5ONAAKF z>`46E+K)grgST4x>HTC-L=xH;BB~ORx3#}VJ$ny&$cl&A^DJ+-Tzy` zj9-S}kFS~sdWHWq3&o(E?3h7iH4F31V*h&bz!vk(O>KXsnet_w^Z9hY7iq<2Om{uc9p4=^ZPaQm! zaU7;Mr0ALYGvGu`u&gzcxEV@uH7qVL)G+rG@RmKcLeFt;gVbg=^ZuZ1WyVOV&abt` zYV_$WQPiN#snk7wFD7&BtZORX^C@voq6nepIBWxh4BOK%+c5D%J?O8TZ?ec^lT~(4 zP4CPVeXMHb0xLE%AzAR-zgF;hddL}OPex_Li~|KuTgITzJja3IPfgZ0KYQ<~c}sq17g-G5@EA>S432by-+!^6~n$-{;?P ziMRvjniBxmBZeQ%K-SPJ45YyKaC!%|LnPQ=_9`t@mMcj*I7ndA=&T^Z>3Z07dm#Ik z^YzIq$z_ij2zk&A6i_iQ(zWwspIn9t4};JvZHUWj`N$OC~X_B)*=>Oy*`l`9HKgqQV{Wh{P_jgXT(Y_BwOh{aa+fh0EDUX6oovtx$*^8-2Qc9Bl8f+ z?c($+|AAr(U^fTD(lsl)z6>>@4ASPgS>G z*AP2gzgFBdbo>3#5VY(8Ax~$LCiWJa0`(NO7dVY%&O2)UY;x#`RdUMyzXjZMq?50B zyB-M#hrUMkl-2MwkN5*?#lDY3I$u2r7(;@^Bzu;y?GqegpbBE?S2nLl4VhcPeAx++_G;vCcB-c1P9I_Fo$8ftW&s)trfXxWKwUuM9Pe`}jGTk~iX?8Fvz{?~hm~D(BHlN|EAEA**qv zkb1M7d`>wF6W`CX8WlWm0JW!S*lPGoJzzmv_-lof)RRnm)YkQ6nm> z=X|X9l{)^dQuq6n9`>21Y*pJRxp&E*WRQU&j~oXD2S4wRuB(`kK*v*R$M=viezP^7 z%k=rmqe1D5eD&rj*UsciCY-T=;#`jsD~Q?)H7cTC%M>Ghu5^-`2I%D-TC&K+tI>4( zNTS;kYu{Gvxbyiy%cR{q6Z!JLZNDE4l?U;51{E$V$dpU0&LNWSx>V+rV@Y5aduO7} z+p8T+LyCG}T4z>??3LV*a21&%r3I|vRqx=8queyOFA6#G3lW8}@>A&Sh|GrO+1pGx z9*(tg7-3j|%X#T2uCg5Z`!5$yM3eOf3A#Ab7hOIetgV*<%c6yuQoyfA)kKY-o}IU;6E{~tbP}@&QH&$m!$p1_@W+8 z@oFXh(ktKT$O|-ul1qvLDc#cnaA47WF2!qwxyY|6{bUvoMi!R3k8=i9SoW3nrr z>X9reFL7Ty)yGJ7AtN|((F3#rXP_78z0#u!d&ECgJ>Urg_)$SYYtn$v2bhXD8j@O8 zjIuHS1OP-=5i~vadM7{Se4=3X56iN6Kx_Q1lGE8}*N(a6#N=9pCB&+Ntv*5UC)t~- zp98P+PWFX5)cHAh9?!d*iw(#4FoVeO1uC7|EJ{Cq51s#iDB?XB!J9K4U)4G^w@7Ht z=`^7mUe1cef1`!);0@%b$nqb3L6ISM*oKY^`!%kIYR-XG0Ne(W8NuBNB;BQ}lEikK ze1i-ryOX;(7)E!RUg46Cs~_AQpolw0KulS$OqD*7LTRZ@iKl%NOG>_|O1jYGCE)Eo zv1=n&zIr5qi;`$JMRYKdKara=HRkBu#q3Yh@}#U*l2YG^vS?Ii7;%qxFS`*lZ3*hR zn;iA?S^q^X!Qr2M>e@Say63#jV$`z0L`GZ6LN2<*=^0uz;G(p? zy&}8Z-5odAAD0yMi=664zKk@JEk-(?uesq84i|k<^|VM;f8rB+AKZ*REPP2Xwqq_=D9i?5A3Cec&6}#LYYCQboDyxmm&_kkEBJWo-@9i3ThOcU zUB8)`@UC0N>VfN;x^_qF436Xl)qU&5i+Try0BBU>5RJ3i=bg>KBls)6Z_h4?LE@#n zeN zV-BOVZ@muz5B`FNJ%nBF$2GApBX|pjyo8%0B~+Q(&SP{;MKWQdR86ISG^Qb1ujQ_3 zQfrD+1kuq9d?(yMwXu?$8+TGivO1>)hBw?zr&#c@8l+oTX(~+zpyFo-=itVL0s?L} zUK|bafK9rd^fS(dge<&&10@!l{!!F;|NhL=g*yE`IHqB!_A-ALpZ|%=a zPM)=A5qB^y;swBy&}3;uh_&%_0|Yul@{{`ZXUtl&EJnxP!QV{8A{jdlrsMnI1r|hMKDr7nt{vX15BDbt2BP4{A@m!;}0*Y!X^<3mtcu zej5WHZO!0<4yD~(+@Pgg&J+7MrXPush?2=SM{(dWP1^e-Ut;DblE!ka*I+YuE0 zlc_W_1r8N)Xvq}J{)yyzp=J3fEyElkpKwfQ;--+DO7Y^<>tdcfy^Y?Wp&RZ%HH})2 zR(^)x)Ez$~AZHdv)j8@>!xEeK89L4LBeW3Y6*?F|8wjdf$55W-x)%@&tBwx`!+!A!i}s!88f-P0gSw#j)5owd z4IvbT5;tR;LIrTbG#2Etc1R*Dl@>Y^Jj|82=J(PGF>!3H*yZyZ;wl9z_5 zPV-4|G!gU%FYx6+f~hkIA7E@ZZ*@QDo_@r18_e`mD~hx&>A zV~bMBs5R~RS*TP~KyIk9>b(bN~)et1v}K99+=Zwzsvv}3I^%v*0;jiJTPB0Ecnw7*~0 zYCuK>G)7(kb%@ZyS|}vy&OQw8Qs>j=CCr^wiIx>#yhSGgbI8(*W0n&GAL;o!No2b< z6m#vMrCOLh%$6uG<&Yg&+Q7-!JK~LSBw+`($>XP~&l;y|)OrT0E}Sfnp!7eJ6WNj8 zh~MF>mD=X8(i`HJAbDH_NFmbeclr4>H}}yII3mdUsh=y=#A7|TIlsi&1rssekG>rc z_eRjJSME#^YGy@uFd*u^*00}YBHqf>FD7;1U%#Fp zq2|p?R#1MRyLk~Wtwe-_rtz-Z!4u(2XAM-S@Z~UxO&W~P`=DDJe(|kQe{|utWOb0A z9-stdHdzygfwuG84@)!9hJSfVEm@sDIYctL27%*`53}Fs|WuF>iJlHX%v=q26ds*)e%zs(V6NDDt^jCi>}Q$MH90eEV{ zP!DT{LkoCJHNnrP7WzWH zLs^FNK@(aL6qU}(gvFoqEF82ZV^kl^GoF%$CsNv zXpZr=Vz9OGR84k^Zh#ZaFeSsC(9Z_JduEP3sw(zv=xnO1Pwv-y3@8-lKGtz`-RQ`& zZks+oADcPAQdcv4U-;Ah9~`cL_$Iw&Wo%Sq(T+@^#+XasbZ9O;0o7$f-R`6p zR?*-y%B?;-qccnQ%R zX^AB|j$?bfT!GWX&tosn{aws_!f8Z0b2_`*X*?@-gngd8Eb* zRqinm9wvfD1rd94yw=_YmhO6JHe>Z}ycgVE(T7<#Q)57pIA8`=r+Ux!Z&r$e;Q~j0 z>Lt}2H4nsEO0F447)duMdRwp;%~!aEn35jdeizQ5=(hA?MY~vg^(*j@BtX>CxOq=r z{t7kjsjS+pdy1)pJ$GW$zFA}(C1AovmEn~tJ4z=_mr zS4J9;;xmGb@`dELpw>9Sx6MjG=zzVj8ZXmtO4e{Z0ofE|AwQ$ z(8A~aUxipdB2p~P0K^Q~fKtC*MR!?>-Up7hdVjA8{s`ZD61XpDqM=o9y2!e%2P;jm zzZ)`N!J{mQE~5c9Xi>0P4)C_gni{WtEb0D%<}!amwA0*<%8oS_!8hj;m%^a?pcV&a z+p>EngKHY+Om0yNF^p~y_9&$>w|VEgT8p{f0jey5G3AaM>;K#LA7A(<(B}HDZr-Shdv`M%b<&PfO_$AeoCooX9;p(ES*k%*b#8&^fp0aJ*T97kw zgYXsl=?I#IsAb!g{y*m4JE+O7dmBYXL1~H#7K$P~sD$3T4G~aKM0)SNL+B_7NEd|A zJBXCfJA?>GlisBT5lN(%2qBc@?7;KBzd2{lnREX5=FH~|;~31ocUk3HYh7#KwPweW z-ndOWDVOj9Y_X_d#Hs>5hbax@ydJ3tn42SR^jL1h9UppPS1{IKV;A zUniMx+1**z88DvrGr%(h&ed*NWj+0QeGC5)ytdH(RbhX>q?%KDlW8-qvm3cPSaxPvP!C z36=B;T(BpI&};n+{hF%aRkp78(4W==YcWmDNB?~S0x$8|E+nqOe(8ZJu7&VvxWN9o z-kem-?WS))?To(EZ1eiqEw=s@XC0oXl}gjB6LYwqgRWle)xgGi1l~|W={DpH%fJ?s z%~>3^tF;=xWBCP(3YUp-f*SDGzaniR zR)B4D#-}q(q|H+bm{tfBy_28yRP&?RQpYF>Uebp1d-k zH*!dTR4~w2{(l-Q45X7J`?p~KE+KfN7v$sh*L@pkxO-vtzet75ygy0R`>#PxLb@PP zytc;K3EZlj(i40SWW<^Ch}^`Yf*1c?#S0zdm5Dl8cMyaO@I2J$J-nA7QgMPg=@m?s ze=E-weBtGI{EYuSzF8Bd@`*905wRf%#{T5MRrT{bRjE1U*%u#$-%m;?>TnIQQ<|uR zembt~i#LaUs}uwyzkawf$?+#_H@&@jLG!pibt3`R&mH32u}x51e?ubL_-m9ek&AYS ze7#LQ&n)wzf8^?m7e5a+X?K1}lkhI!{s11dBC`=Z*wKokp(C08B-U~E88H`|_?@AU zG@iM$O3$8yhO8%6avWP1r}=2NVziV#O^OPMTp$7WuIC52ErL+}Ey`BsJe&(yLjLBV z1C|pH~z;7s>J8?SBd?Iz3BprO}Ioy2=vG(i^03^v2D}E|16$ z)3A*_%{-hS6@4#Eo#ESRtB_{}0!IZ#E*(_+?6;VqRGsYi)z-s`&_SZf`DWrNsOLFI z`O@s7sW`C{5VycM`NN$O7sBI)nACEW^GWS_>Y(WK*@DhJ9=2K{GapfJg#>l;Euwht~eHO#BofOpWt zz`YVh<9kfdyz*%S^rgEK>H<0q$+scJPc($@IR$^rxwQVOd*EU@_TxgoSHI?W08d8W z=NgybSO(W@lrJ2k-$+|i??!#@f1I^1Ec`Vl89}IX}Y57uM;pAr2@!Sr)r%nv`B+Cm=s7h zsqL*+8&DnZPG5wF`-NKLdS8eOhY33Csm~A+otKT5iRZ`WH*jCg?dEz22t9y$NFoTf zhpB7yy!elT$;3qVGV3cu#o&?PR8>JiiDH&wSD-!j206%>JSm#@iP5>YXH$)3&#^(K zsr4c`uL?q!%o2X{tc^Q&Yc4;*`34)yR?fF7V%|&)Oo1)`KB3+ZVqn0}8yn`Up7H$t z-)9j%K-^?{qywEZe^CUES1HAS;p#goEYOAjx}eKi5@nLm{eH=@-XUhCv^cfi+U=b= z8`QXH)nOWFQ}XR+yw-}8ym+5ye#ma?TJYv+1D&M~(pCaCgYtjPQHZVSKz{~ZI^wpa zbR&~OyAMhb7FO?YY*u~1@pt%^)ppdr`0^XY({9Uc=~I%czm$yF6+5m5t&+Hnvo^vv z{c@%^^R0!JYg}2{fZ-se{`128E=9urs}Hw31^M=xWgjZIrEvT`SCvs@wvn=An%kX1~U8>2|0o_)&qx+n{d@6k-bFwyKW>&6gC+y-{5X#+K1BP zugnmQ*9-G><4Kr?|JVT#HUwbto|h86kyd~X3LuwmRh28`@g5`Kq|knzCFbeRNtLg9 zDt;y{%kyJ7lL1Jgdo**&iCnKr*Ne)FX^!@$!)h+Gk_-tO6F}4$$3}tIc_m8yy1oxo z`8Ob9I30e*Xc1)8V8_dbm}slrO(D;EzW3N9QXA{?UHz{YMdD@Ux8gkR-0XQFDS{?{ zxJjzM1S4ueL^9($fYNbHlT=P|x9+Y7Wh2@~nLnioq#EbV{x1Qi;@NRJd; zJVDh;UMM|Mpi47~Rh!WQ86%t8;z^QPc0Ejq^j+cu(G5D1hR++Sw@!xWl>3Yj{h+pM zRzWGQy}BAzxMD?_$9fZopg(NHT3Z4Y$sb2+LMaZ+$ga=LeE+z~O%HkGpEOw+2c_xG zM4D(DnC5uW?*Kk2j{b|zSc=~>pv+1;L;gnK-_VR9vh=_4MldTVKCrm^-T{<`g%FXp zp?XaJM&Nj*5=dP||72OMJ@X5lE$&E)DvcSAbD7IOHjygtxI1!j6MFzdYw;M`G zE2i-BR8rJhH&@rN1H0pk@?bWFbW#AqUyl!r98gsa29wfZzw_Rn%q2HXv{ z73GxdC_mjo-9l1|`_ zp6=KGFv81SZSHUtltVCBKwC5c3=GSS~&VRT7g75tcL6%xlCFe$u z_Sywrb7hTujjL5WVf~@1jkmL{wHeH5e-8hwCw2Q}3a?eL$5(%aYwjLb?>5VR2iSmU z#1EYvVRK(+1)oH1^!Avn_+EDFc>6*o)R!4_zuDexbp7%wlEZ;#_LUWDkMZYWhks^= zKJ3JkPRp51GQ>u(N(QKpP&)vM68#8 zjSLx})pIe|{7F+mz1x%qTS|dju^m-%RkT+hqnAPpjpE`rTRuGOVQ}4Z^ZSzMSbSk z5|x&PwtQyBr_E0mDt{|DM>DTTlNXS4JL&8M=$u;2#wm4z%?A|F6B_bFd4XH&Gu#O~ z=Q_k$sxeLwmT(rBcFya$`x>=!J*TC?84noDXPv2Yjo8y(z1T(fz zGg`?KqG|Pr@M`W6d`wOp09cOhn zM_x)yA6wHh{YpUPzuxK)u3rVdhP63ubs=YRKqhq6_{oyBQ6-ao4DES7_b52juVW?x?ne9N0FrR_n z?jJ9@Z98#sYG%UPU`3yL{t~dbLq4!Q6OepkzPVi;FCmhac}J>E^yx?eU5?Tv_bH%N)8|9EhA5FuE#KV)~W^2H^RizZ=_dv}OS^VlQDfB$!z1k5XXXXt9o)GJ zD*6{lS0&WB-+JSadYy~9-R3aGHjx7bvIks7_6IoJ?-aCE%sjm zXi?OFYRrCS`<<6HPtep{1IV7LuOu`*U4zW})B$sUUP6(R&%iDZ7JM1BtGELG9=Xw= z<}fAh+JOq^tMkq?T0LWSydc5eGSAW|QfEBreavyX#tKrUb1&|r;WDrB?g_(^mC5)E z!|G4bU$j@a6KHRK7Kmd}OSAH>;}7Nw#1H?D{|ebM_6G?z>eVd#8G|=D54m7QS;EbB zr->ofHYD_xOc|AHY`*Oa@yS3RRwInJWCmRd2d+YjgKEy+VE8d3IK zYu(sOG;gWCvy%-m=@+Wxu+!|N7Y5uy&`1E~0dC2-U(+5?Vdryn_`$1N#7MsI7$~%q zOPTxS>+m~lC4Gn5INeW3?IMF#nHX^YjXE3b$k_I|68NRkKo$P?7`68cg-I%F88xhc zz`i&2JxiSUZ@QpAug{SMV_oBawTh)xUX|a$-TxgVrP|z?grF&d*DW{7T$(?H)jI_Z zLmj!%4ll$E7S*p4w8OqmL8_5t^Hpr{`j4s7(FN=jHRpoePX${pFU5iW;H;{c z+o?UBLhl;^cVf{cAn*2<85;rEZPMn`2HEwb>Y8Q=uEud0GXV~eB;pe^yP)kj+i|oM zl^3OaAH8ezSzzjB5eD;=zCWO;+?8PzTlrm1e#!rOs}1uR?m2f8W~-$GkR;|HrQ6|I ze_ub$)SEYAJszLaHP$r=ihBIqQ3(xGLP6vCeXO zwop4{*9J9IV29A;3>u80?AuuJiS~5BRJVe>>qr3T_+JJ4aRh4nDaaG~^7j0`C4NAt8x$rdC!Fo?%GKe((L zSetVv0=NRWc}Prz*?mjtZXU0D8?KU>Duuv-RF1H8k34r>;NP?rOSIXVTY>J8|70)}5vGv{4Sq*3YD znb_s$HCF;0plwB~|ChQ1vlHR`WloQYrS9vFih@*PWGL71sum)%cKK1*po@J71K>Fn-KS8op> z_&3HhOaAYvYqWwD$4}n! z{${f?p#7^rN8@4@my_5U5ea%I6mBSUr+)JYvMAU8?%~Q-&h44vysUO#IPIYqxD4bP zIIZ_jg<+tCaJL~$4AA6emj4!3MC92h9|aE~ME{h=L@e%sw3L}{@WN-HZ)QM}^P8^r zxV+9dX4uD9N;RNE+NUT$yTwjV=X?u=bE?hF*siAm;|mr%trOQ;rvZI$wIf)03@-`V zd=j1t!AiCkG`N)X1VP980>P6M`ha>xs-)dif&TrbABaf4F3oWYPmp(cIH!2$U?fxc zlGz|Uai9VDo?$>p_BzR-e9tH4qZ{K;@p8*|S=ZIQ{F$qoRYAPSu$~ZfwJP2C&)q&# zkt#){CsmmcSxbYG5hVaR;{GDKNwrkpV8u^X+)x&t8{m!h$R=;de*TvcjG01)@VO{0(H#nSNb8lOM|xNW3E5`EP_ z0VZ#3$I=1ZL@_JT6wxiKdKtL---f4F`>_%b>zd2Cz^@rx)v3nxzgD{V}iW3&~HHS8sI+;yjUJ3>JP@z?#1-xybZgBxGg%eJt7m`U1d>JVTahCQEa= zZJi*VRaXOLg}B&q_ApRSt)5Zdv;m2~D_N2-=K*pazC?xgzkUz(oYt?hg4g`9*XkEZ z!jdniS_j+$lp8O#!=Ho5`Gm04WEUHaMo*u?8(bW*j`TCUQ2>D6lcP|~7kGa#1}HL6 z6L4t-NQ@Hu#H#0{e^6*VhP7MPNc*n(NQa*;79UjD2_d z5f$+=xCD%A(wW{F`JUHQLjkuC`YY6HL}>+j{Q#1i zp*un6)$e2*UPVbp{|3Dd0pm~NS_TWv%4x_BJwnyF&Sw+;zF6}H1+M<}U;Eu&cVG>` z6})(8Q_M+XA{1wy+6H&cP{6H(61h=dA^hm(bP}=pMyoVvUi={qx{yH|TvXb#8N7Q- z<*gWL(317!Y+SjuLQy>VD|uM0-cI?6cTr))<8X#h2*)|Nlf@i_AsEqdg) zu9PG8abU!vhbcNXWjBEaljox{y*fi0QPp@Xmb9BsA(6$CjXM1CxyCY@y)WJGp}CEw z7xjQ(KabTZ|3j;-A`bZzNC)bzfFeS40ipUk(0(BEf(JBox5;#Asz;}G=_e3tGZ6kw zEE|e(3Na_^=8ug?3UQZz-J@8u8QpVgz9y2M|KR1mxKzX~RtgIlS6Umbgv z^G<$H)`WcMj5Om zN8YmixUIpg>pZ9WVCC=+XVbyt?*Yf9m z6}=S$&X7<(-rAbgAFp^8D|55UXde&*Dx!KSE?Dqzzs|JX9uG-7>nIqW^YQJkKVNd{ zB-SCGU;oa8#ogL2ljfpiIR7r2k-fa~TkMrTpK>bX5}lj!Kk&f5TxgGclt8bgK8!a( zdt-YmRiLucNUsLWQK8p`Iuv2cRb^n;A|wA`Nqf&zBhhx;oiLEeK=>Ug4<$T8xp5aN z=3rHcZuS&5o)etmP~vcql14gmbLpKG!rnQ+te&c6cP;e*wb4QMa=$8=>?bb-L7pqJ-(hZvZF+{71->Q+-Y(-k8;{ZO!*t5{%|}YCedh&! zA3XE67vA6h9**qEZB2B+@E@Oc(m7n;!7%` z-lLV@ew8;$Y>^8|6KK7;ibC6UB(~odmXhY51of@h-!jnl#KvQIeacYL`W8$&FXC%!OQeXq>clz5Y&zdv#89cg8u$IzF2&;{)b_ zrW!4(IVQEXl!x4hUXL;l@#bqw2iTI0CU4Us7q7A)6XeAWI?Qss2nmq~_YFMDChx6>Yf{1%dB~M=t@ORn1GVGRbk)}L`o9bh#y0bAR&Ta& zvK}}Zb-YNWut`ay+tm@5kj;SlK7Dw6KIyLWhzu{gymDe`#48p*hn=H?xld5U)05L{ z&C{~;cPP3+@BoK5k;^x^DwByd5w%t!E;g-D*H-tnRi1&vQbH`SB_n0Wlj!+$KQfT< zTr*PVz+ZGjA~M2IYyDB#`wv~aL2DXwn&4{Mhj0Y*Xlp4u@|-IsA!RHLYA@Sxpn)wB zJuDWHke#E0rO~1FGK{W@Yc_8NA)Y;1k84z(bNgk%>tn?0wOET3#v;p0~hr&mPOVI8r-7=5Vdg`d|(0vSkqiA^$zkx-7Nz zybFBC5iD*l9*T&W)ixofzq_q?BLm;xv?3IdeXb{Ez?Ypq<`3G1^*ZJI8$5a~!?eNB zv}P_5-Q>loNSiZR)z5+qCp9K#koMB2^m`hWO&%X_XMY0cM4Kpi^)7Kn+reL?{*AyP z9J~$nWn~Ta%ucP$jsaTFA)=&W44>;1v#*KTx&HK3AdriVu)>XEiTpXA^*j14s%-`R zmo^9G?ajt^g&QoYGp zV>54z+UeMX+xza*1mdijo5X=8zWHWYkTqlrk4WLXr@8z$cSmhbYsY#l6^wsHYj#;m zc<=}@Rv!aR>xeo&El9%8p|KG0guz@1Iv7G-R0p!QznL*c{DNTq?pf+pOlksZTIZ0E#{v^fDD z-JoS-F5|M%ucAu~JvO2xa!};f`V21KP&^fAckxbP2QaTz#wSAf>qm3h(ek+0o~ZWN zZexJFR51_jju$n^ZZ88bs6Lh;q%dFSLbm^k}c&lkfVWtq3to! zq`%hxfYVM|FOQh+*w&f*J@Yi?yVSWJ`5OKG@#?3Tkw6uHR^7fv{ma7LhWPzPWyuf) zk0ZVOoHj=Ns3+`RyJ(m49$9Z}{j(?8;GWPhS64KFk3$1XC)y>meE!^ks?Xi(fyd+C9orv1r?M2A1$hf@a;`2 z3q@aAoOM-#IM2%aUc9^E%b~enWV<$}XXWZ=Qg+aYEooX2b{erPe}2JR!3-9VhhS=< z*P8jVo^GcOMNI*xa_dVlFEACNQVrEPK#Zoxy*zT>OygVVqz+?b6L5Z+*T!$~`qp~# zdpj0k13f3YA$qq} zB6yRyG*K=%#L&uy1hX$bzVxYzt_@9ZDR)={3as7{V*&o{X(!0@b$Q=)+Not&H^F`( zy>Uaj+;_JB@`Uz~G;~g>3=-poz!n1AxN*T+k}+UPxk!u3fHt<{qtvS@Btvm+pgFgX z%gV6eTsn@BSvOuoD-t>J?WhCafgx(5+!SB`HdMH+S@_*NUqK%*~zWhs(jL73s+y)(qa7Aej(78wyU$PoYi5Iw{64F+wsB zcwN_lSsW^9juuwp#!UJ@zC%lBzh>}t$)1alaEnI5q0O;&+W6)V7YE6v?Rq_t$1A?H zk)6|aFtCEx5?glfh$4kId>?u0evu_61KGX0a2hJOA(3|*c>OqOO_?97hgw)}%~_pS zyF|B`br+U!ElOC)I1)%uv*0Xkyn9b}y`M%=?zz?~yX35atB}66#Gb}om5H6zKFoTR zD`_@=LT%uZ2idq}dWgmJPBnN}a`Ac-|CcpgOLb_8aFHY{mGwMhWl-0y1F%)Hbk=K~ zfjhf%M@v0x4n5w;mwq-nX|>w3PO`Dkv{;hberJMkZEQ3FCx6H~eiX;*TQ-RY9@1{v zTv*c&94#%m(g7y=4XdnEbl7!BpB=|prN%n#i|v$!;KS(k`UBKEiNgu{eP%Bw0<+9Y`HK-JJ>Sn@}Kb+)_M_XBG3g`PW zz3F~WgiuDmdP$XI&V4A_;b z)NtuSmIBUg*{6iFV{OUYCjUCS9!_%^*~jqQg-8ioaPnPCa;Vowc-G)8_k7{j2N~qm zX`MRNW!Fbrqt8`uQUS-dTsB|+h6*`e7?eRb-bP1Jy}JNh-iztzb;4Nwa+Ar;_RX$w zr8#XYS3;oEDXFgi%$2++WbU9qR>NwQ7%{6@Uo+;pyxn1e6yMliv{w(vBj~Ub3LLSg zZqj@j_FkU0j~B|gP+NNmr&hN@P}C?p+~zWHb00`q5x~^eO7>-ig|R?nU6+z%$F%2; z98wa}36kJkZ)wu8+NeX*DaYF^fQ!QRY44@LpR4F~(h3nG)!i@#XRFg@Gi$Kx=5Cmf zbX~f+2cjb1jqQrCwdZ)>AM`b?n3B+N+-=Pgdlo5mu!64_;)&(MVte3PJrTjrmmv4> z@jySOcQ6K(M_qjmvn4_POWixWI3Zr?BWS>KKR%P88Jw+6-*SJvI=7F1(YRkBkhMoI zsptZ&JtV&b5pjRsIsH79JO|Xkzy=Jyaa6Fb=aGLWj+0uRUCHbsDRs z`n1D^!g*QR@ita_cO#8c58Xu zLMDSB&~=~tnsl-=g+a1grf!%lbGWZR={cO^vfBojBfT@`4*}?VJ>I^Rf!5=c1L)8o3HWW2>X#H#{4CH0)t6KT)Z@pvwHqi!F4)Yr zpQ;C?4zdl6WxhrS!k+%oZ`ri$n0)Lv6}FT)HY7rU3DFO`0@0|Ia3~UzAfin(rS`lQ zeR)erqdz5${?72)*;$^o(sQ#$9?jqYGHl1DWLb-AWk-wGgtP%pI6Jl(V<>$%Z*GU7 zNY_MqZjcbZ<#P2_%DPits&hPhSHFO+Msj2zS;c<*>%7~ z;W)e)IpF7#=d}6jYr9JkwnS=0&B`^KxK>O2s5%@gtZAJI&Zzm-fhtC)zD@v>QLhqnoWup=Hk-4-CN z+4t-FDgY-CKfS6Iod6=SBOHYmx~)qOITcY{;kIdnJ>57Zwl|}_(7usw%}fc)<8f*c z5P3;EsqJZWprMZ#_tiPhgCd=@o4ayQH|)=HE4vIZRbz^txCcp7+V$=T@YW8v z3Now0)3JG2tWM2}>9E&22V0a*M}KrM)^}v+=0bE(CiJEY%AJQPI24u7HC$%As8_1@ z_dLw0=W5nP$SKoTR;vciReyXMhWC1*%6`-2Jpzn0F#UHGIt0gRr_C6}92bz!AYy=b zxD0+O!H*~qKceXLCZuzu5QmqS*I@`;p3x71jQpJ4Y1$2Zw?~qA#{*g0k+m zIFB+Y>7jUlD`xeoZ;C$OLjRS02NmvGyrKFxVC9d@T!{Nq z=$6Mt8{S*~bxm874(Z?U=T*Sc4gAbDS$ZrSWEiEL;KCQhMot^+hGWW3b|AtSzV!=Q zDzYn!sr%yZO&849{nF zE${Rfjo(O91lCj0R%rxH;Ih%7XtBVF65NxGY;ICWgva+CLDg@hsleSjshO4)=9=2*IEaP?LWU(G5_4Z{hpn})og^*Z zT7_r-iB>CdTi3H&C0arqcLHT^X{uJ7Q_4H_NxdiF7I*}Z+23o2f&)Gyk5ecdbf;IF zs)1oNAZ1yA18(`Qj>!Q)unkN&ulgy*hJE)0+Tye1sz_^hm-Zz z(`0W8NYVw4p6u)B$%%lmtp7bTGCtuG@%djrT(ZJBrAwhxa2)k>$-^HZY%yC7m9t(d z>}=5Q9Sd}x+@ewYGlWG9+oe!i+1;#}K=u}TGP2*FsasSZFRmH**&9wXvex*xx!^MH zj>3U?Dj#-cC@0j_)0MpZbD_klMZoF^ z7z?tO9-ilvj{G$!D<|Ur3QoBDY?SA=g9jQuH@~f!%>9;rq=69{ZT45kPbDbDjh{6+ zX;d2KWF-FYw=F%PK{kn_p4C?esr9vEJ3^}(`_`Nwefa}x`Q>g62o{Y^moZMIvgbM{ z%V2Ooh4PkovxQgr9gEQY05fFbg0}T_3!7iL6DnooWMuUu+x`DRT#}v6DLFMY3^6GQ z*pySe9H{8!n-&aVr|J8w{yQg;am2G-_i?4LvHqy)-N3@K;HvZSZi#)O zg`tJ8#I*^&WbTxk(Xv(t-q+ydlCuliW_`U!BiNx->A~*TdS7xt{H*QvaGO`g4!GCwHH^5u{DPiTCH~ zK>CcKN=lEu3Y^Jpem$LTpAgx}DpAhkt*>Euv$|cN;D5%28(PirCXG8=@aD`eNJy6i z@!w%zr zxL;rK31K}L{OZ2SvtH*7aZ53N-xV}cDmm0@MbN=OXYW{#Tg07=^YZiL)e<9BuZKO< zZ*J^YB|cPooOt9IE{fw<;`X0b^vaeN7$a_>TA1fk5 zLu*fDi6hXO7oHZZ&()n|{^+q=Z(*0AEjyr#jj0{b#H^2B)LkvtM`9la)@r8#6 z1(=G`|4b!|t7+!X1@PfW-2dZ5u4Hi??ygOHl^U|M4YjtmhGsCcutYTxUXAk?9e?-r z<-WZ($&io`&PQ_{9UWVxk*XdwXR8&J99l8_O%=2 zvS|bQ{rVvwgXDIX|8zm{fEF#xHRuk7xAEbrgqJ)xv?x(Fbi=2uVnTLl?dp(z>6KS8 zD>CPq=$=1EO>)A5n{t1mF9e|v!IWM#&MNC_3`_L-+t`@F_WRy?>2orm$17aVBr(t= zzZ3Q?7nNJf(;`BCk{~ig$w*xTi5=lK)C^~cS(Fv6M3}pdf3iQdiw`DmVYkh zua146VdX?hvrR9wwKN-ZGTR{!@filn;N^mA)zpm zZz4V!n}wZZbe2s0;2JIW^NaV)HkyAhJQH!qEuZ$>OLz5XdgsUIu5Mp<<})#bvj(~T z&wK4yZptmmq;yPDD#qIhXZ`*$ z^H%7^>%MzD$@pEmdt7n;!s*>@pmd43vj$(dZKkH^C%73kEL@HhIv)^k4Z5^6by-`E zdRAT4bdc>*9ndOn4Ci5dhFsJOuPI(>cnU|Z9Ad>;`|uT`6K1Ix+Zi93gZaj0Nat%E z=Cy@v%=^h-elrJ9@qpaNsL6c3RZ+6;h+6gCQ5WgPxAUwh1uCzp_&hU>8Ah^C`iDNt z^Mw;yOR_u7Tt^4Ft1z{R<_4a(PK*tL!wB$}hcT_jnGx6oRn`ijsVcm1vORy^PVQWr z&Wu;@l0xU#k_?u|E(dIZj98QFhiz@gr;n?1`{(K`>dTIbB++L)BM)p}dS#m*Z?K*L zY$3^Aw-*(C$7Daobs$DHsP{jnGq_%~!0_Jiky#U4py&~&UYGoNSVOVC$LS^L!jg}| z!Ls-52{&uYsrYr7&(&g~5eyKyhIw19bF2^ebo@J*`&|tNc54c7oXcC%T=8-6uTHU`S~l77Y*f$N*aPzPf3JlINrmfC?vBUsU_?D@HKJ9c3Q2({;zS}I208-^afVAEVa zYnW(cv1;_xwLW*v%8@@rRG`tQZ*kQ#Are2#^VaKKIZi1(%pR@vJ-hHW}wJh7~_*mxuI*oy@ZkN~owLj)=V{y^q zzv=bnJqOG0Ro9(Uk!K|-(x>GMqP%-kkA5F863xWLAGl2I_L}_-{VDj11v1U@(o^n` z_cvNB9ewu2S_mUQlt z_i9h^&VU!eObe-UY>|M)ji``G6J7HNtD|^^w1)TWWC!Uf_$4=(V_xE`~h-Xd+Pr5%Rs6qKrutZ8Gjeh-B;(Ec$Zm zIGuFhyPyr`8?0YKdE(0Rz@EGk@`zrXpEnw{ucbI`q5UAjW{b(ao-LD$3E+~~sL9S0 zyxJakp;AszP|&j{=Nj_*{8tXqh}eBWn%o;|A$lcb%k^nm09UO4X7&+qiZr?RbfOCH zB6;iS(9e-s^IOdB^{2n697O=cg)MldH?MF(gnV#x@G9-|(d$dJ_O{#CBbq3c6`*2Q zT`pQpydCHo5bBqm5ZNxI3cGc`t4;D+)aE8FpTfTS?bp|NK3n7wy&8&!{UaCOn0OVS zuBg5o5hLnOcNOv64ftTFWeq&RKi#-&9rk^hb)8=Jdv^FI&tuE z1SO5&oDHw^e6G78JHgYr@ZR%j%&t8&hH#K}#w6L{$jvijfwgw6Zs6MtMI+T*i9Bq7 z%11U3g3%gZh;b+2S2d=b!lpaemt)YH+6y7Va@G-r}^?}?KG+I^>QF6 z$%p-Q+RI)2PpuqzK6FSg>X4FmuHbm?@3f&H%Fd%eOd#@Mt?o{(^_l1o_FimYKcf1G zXs$$LAC%oaDlwAObH!@u6J#}ruU zye%k{&&gb*CGLQJifWpF}XCYkS0xzbk@%;%euSY3k> zZtBfL3F;oJF2U_uebtKD3hI5O4H;S9@IKV@k-fY$W~I=Op>pfUUPbcO z9+N{t)xfP4Pm$iOi`~0lBWxN5oRYt_Nw%e5p32FBM@+S+jnc>{VfuVNfQDnTT(%i)u_v1$(^4~;vm$=G?=m?^TF`In3kl&_vjO!C;oxz^;A$DWU{fflNmC?;;OJL0|ct1 z)(IL!=iM?)LFc1wHXO07R_E~H8v5a#jDaVZ$@ov)b-TX43$&DIl0fBv4V-V&h5h>w zA+q!sf>@D)`BBroyr#;N=qR}UGHx?U|Dq2Iihu4We?M^d{@XLnZ&$TP^thqgvU+o0 z=r*WFenBCeI?!Gd$@|Qm+s`T@O_sb{cBBbBRv8MqD+$W1@((tTs4G$}fDAj;(l3(P|$n9(xk zz;iX2u}g`cB%XA~{N;6>TCQVTYNJ_G*mrzv#R#GC?Hp!Zei99zyt?jnLnhn^)wJ-R zse}ff^}c%xjukr{uwn6WN9rcpV=vXeIaWom5`R|c^EBf&A! zd-W^KBMETN(@t~?q%9Eem>;GJla@*Ex1h7NAK!@k`#4))O_%YS%ZwEEw8b{UFfG2N zrGBR_sndPb@ZK*!jXgL@NP|loMpd%01ywkB{wu1QP@dz)%5iJY=bX029M(2*Vcwfi z|M`H0b3&v;k1@s;pi0diXQ~zmkmcJavdjYl*RV%Aw>i4~;55Lw8 z{Tl}>KI%+xm9`AL9{WF$>a{b7e77I-Nqiih6#o+fhq_?;rLVeeR2JhJUfj793PSDY zynBC1p9U#U3!wWt6>vnZ!fOT$$x*lJ`+g6DtB(k@W@j z_j7b)Z?CJqr|L9Inq|ng+CERi#3gIhIqb$%UF{4bWmoEl)vs4hJ7_e_`qh{%HK+Hb z4&=){*YR}KYBalRm1aJXbF@6tjyjY$f~8Wcc@HD_mVM+q_A4RCVIB2}`Gy}n+B>r@ z#RC>8Y_qlTOxLlNqPD7*A0*YSI={*gnmY{@8sP3|0(mSd7W%n1f;M|iA|2h#bHhzg z?<(@*nhT`QzcDIDuOhXLEytI_6`zNaS#fIQ2z00}UrD?|x#R8s=3K3f|Hj(RAMVrg z;07b<-Xj4F71P0D<;E`VzP&eCpdqnhJbbg9nh-F-z_fNlcbVH{fU!1m0VUz8HRqNd z@ApS9#_t1PTSqMQIT37j<%CYgxzCHYVY18dW;V@cCe0j66z8O)yjn)Xt2aadva9Ns zN9=H%?Wr@l3Z?E{vrOALy)F@q7I*GR{G3tbmu|(aTN~k))RTleH`Sto>meMDtaJXA zhM{+LJBO%$h7S{;`yv^0e876{IAs{@vYy}XR2;?)y%UJBpMjnujpu5jO5iA;-n>)i*J@_C#T5VGS9AYenfVFY zMYh?pkGp)4*PloI{_VN)%Nw$`hIb9J5D$?*qWyy#t!71UgIMi`>!)U%L`Dg*`0ryg zRcYOoOH1ckOqN3QGkgs$;czOCCCCgrzE$rh8p-?Dr@%$cx%#&*PIpx(AF!3qvpYhH zxL-_pRd90h{>kAf9qD5zse(z&*)7XWHG71Aqj>#V_f`e&ww2`mBxqG|>Y0W=wQ70V zwhKqqECgiPNKf4_o-MM{`>7SR$k!s!BQCWJy|wNwp;#7ifSR7(Iq&#?RCeZJNu~W8 zXQt9J&9dCLNlRRPVHBlrbQ)GnH_c+bG^VjcsuiroX!NuWv&Uv2e`F`*FbDwi~Ny{sf6HP)%URe3Y zNIDTmYK>fqQtrF`>|K8!`Doc8c_7f+VoztCmqJrB1T)~%)rrcdDN%?4x|}HE+}MSB zu_0e=geHCO-sI3XKcuWKpBE(CQ=J@k{2&{u4Ej0`X z3C*3qZ%KH)BNr@9{_wEHXdbEp0$KdzQmGYx^+8eQ3;NN?)Z(+-PoF=a5ucEV#`))w z`VzL{^v38I@5YKc9`yiBFko`!a-FL!sze!#=^uBeY+}mccw&wvVdWmzPspXQlDt!k zg~A*Q1|+CYwzJE|&k!)xCrr#Pd6NA$r_bGTZY-0$v@r3Kz`d|12P$c7W_DwHB#a_u z2jv6uAj?(;m_fk7wvuj(97MYdU-`x?3l@s zd0O#^x^~89zaexxsP*^um%brW8V;EC++46oq&~m9QnusjmJx0Se3}e#{4*MSy^BI#KGJGFHtp zY++$>PJ;OJ-Nt6fSW-{xsOsVoNd(g` zH{t9AP}BTo#QQMhr%_v6FtdX?)u%H|qAMJ!>FOFL{|Zu}1BNQy!c0-a&a4@|PgJEaW0tc$5blK|$z@^wMaIALyFajA`&9=lStb zRRL06tJjNKMz@-H3>J9@jXF@}FQFH_t9UTEqtC#)s-z^D#53%Yo{tV586N6DVv{(B zS507&o7(AbKZ5v2n_Wk#wi?GLd~BGF9hkdQm2Kw*_v1I_>x%*|XzCO7ut^j*aj?>d zhc?j^K&@~C3l?rhtY*)tPeNq^#(MqZ0FFgw%WW9rpbI#aV;fx1bOStqZf|K*(wpvo zl<15Ws}(>~T6R0QLv9sHRu-pikp;=?t77`UFb0s<;*}pkW+9thZZ7?})!BK}8nApp zw=e!<(f)tjVtrZ1=&zU6d33$sQ;b~qjn!Ye`Q^6|o&KJWf`wDxxVs_p7-l~>so#YG zg*I4Ymcf})vCJhmpwTNf_?FtS#21Wy9()NDdC!-_OUj87NxkaC8#t^F;cw7w<`s2- zTg`wY(*Nr3j_A*4wi07aM@O8IvUI1$3fwZ~)vcZ=A-7(O_IoV#voXK^=DagyiV5dp zrzLP4va=%@~fpO+s_h^lrWm6Y(sfzGG~bH01kgIQr#c9<%S> zRA?1EC%c=?c^tVq=d16bC9o3=sW#cU3n`M}+4wV}HSRY!(V60a$hFKARzHhi!~G)d zokk)NgotUtg1vAz0ZUTvMy>KtGd<>639kDB8tE-fc7!68sS6CD z)g3V$oCjz4FL44tip>t_kl!hxc{j9|s9(VW#%EN1fSd0yahdgOQQLQs->H8YV>05V zyF{uQ^<4-0JTtU;Q)q9@r?L!Eua1akZa@BY=OVv~{UF(z*dL^G_I1XGy7iz$2XTPA zMAgC8D>QS7Sf!&-%v(+pqyT!Xg|$$k!h^hU%uAOfQWnPXM~&VklzulhR zI6ps5Tyox$*UZ8|47b^o6_g*vV5Pjp2X*2NBM3=pNJdLOA*+A4Dz;BDJYCR$;I8gm zuzgH@TwnYE_2oOAFv~rB^WbV{x#}oFy*YSxOK-FPspzlmp+F+M?(So3a%KQSk~F`- zyu6vURLrqD{96NS(#OLdU+xeWd26B5B$fux{U-1;>GY4c9L z4m%JQ;mx8iys$*rUxBxpZz3X0xk$$`lKMkeiTBJ`T6A?kgH2q!o{dboY$rg~eQUt= zX@Hr_h<&SxKW`JUYf7Z^8NvmvxCeLwuo&^qDirF0?dAUC&H-l)0r#Y%Y${{Ba%s<^0}!RU_2|QzNI4JtDi+He_yN8 z?;ggfh)40uU2FhCj#i&tr{w$6a6y-PQpHhH0N`~#Bs@4;DP@zpt#aag#iE* z$1^;Jk#9K4cJu!H*$M0YaW}ZwYdeTz%u;UzVnq zlcB)tj=44JB>qIx+J<+PXb1?z?lEP%w+l-)kuFBU&uMR7Ok+|5BJ#w08`fqo9!j2X z6w?g1hK7}`(xf>BNoB|(e|13hB?P97P;HklG)>Ck^i~b&bD3PC<*L&eKi9bo!fDLa z?r)m{@c!y3;t-+O*yPDf(61>bL^{nbD=Akyj@>fuJQ$QAIW8f@;8yEaUP9-dssi2W zyy8xU&}=zel!#sT&vLBz$5JjCJ3&;byU;~P82h)JI2TzkShc4wAolZkX8JZ9&nouF zeI(y6ysx!Pk%p(11P@hbXlevizQ0Bcj5cvzKZ*WePQVo0Ez-5?%XrF2*Br@S8czqZ zIx$x@Ut7PojKvy1FTY6NBCUy0a6}H$f`;AeAMJ+^+w*4@e5!a0!xwXFfug;Hw^wRN z=i882#VIrLn&3Fi%tM^QFnd0qp=M4$x0K6cqz=p~sHh zKJ_P@a}qhR`(Hja(z2=XJrE9?bh@-Hm3HXrMdstc{AZh8?q{bFnq*)k+4DO(Ajc&@ zFVOR5`;2iE#WTSjD~q+(J!#goX>KlWe60CN$p?#&#%iJaqI!qj!O;d8@?Fj2+z($L zkv^BP`<00BG&Gw~BV23zg9xqUHGtug*c#68u+Jy?|Dth=p-fClooa7C2^f{n4%{ldbLY;?L}%uvwy(hFKxd|^ z5KO78+<7@X{FM71hq-v^8MQl7@B69y5#yk1HUV~KWn#^Iv16b!;M(Q^IW2{I%ZH8v z$$a99CBBigf6I0punho1%fPG)jbX_T_8a^p{Fwa)=(=weUiS}KgO{?Afr0u~u|Vt* z1k!rTQhuxgj^wsrN)zFw`C^}v%Pw-PUtr(SZrN`@E4NOms){OoFaYldUeRcHVcH_4 zWN+)hXZxGCx7U{e`K&3(CJrzb;!|#;u z7R)g5i@iEqzuhKZMC6f1$!^iBEz%=l2AJOK4gb~NX1U~Zgkv&9@f9i9IwBiR5!&@@ z^n3c>1{f*+C7NTX##2(A&Azlhb{F{UMADY78-LaR$_(KlSpyQceh!^Wa-%xK&4-2Z zS&4?VHU#wp>CZ1}S-hOF&92*b15Y-Il|JgS!xd4W^+oGzmk6jk>{k?*a>r4-c@d9o ziDL%NqEQVE2<_1kk-8R4y!fVCQE#n#bE{clDx^6rya-<*d%#LzJ33(S+>=-TZW_sN z0gr9}R<$pq-s1I2U$vg$riU`;5R@G`;jb>*PXa>JeO9$w-YDpf$aHyauBO0g-D@`g zRPU;5H8?H6O+1aOOCDr9AAVx2zF7Q0KSEbrlqlba9uoP^Dl3$_bRE^_Cv!?_SV=9? zkBP1zd86-5(tSl+t&p9Sz9aohC9)I3oY=It?!xsx(U4#;p-&X%@*t!@bYYU*eO`d1 z*!=3rNPAZmsH5P|TY83%n-eADigk#X_mx-QKAe9+U`_Y@Q7_}e{J{CjI}{?_S?@Mz z{)5>|y|^2KohN(%ulJ^-=aFb7)faH%l#%KjzjCuw3$6mmUx@^tXn}f7qhl- zF<&4CpwmE1V4=FIYS(a_a(i(Wx_?@gm#zH*+wP5%wTty@3OhV!=Nhw0#J!37KtD_@ zZO<)Ex%e!-Ng1{yZ)8f)*!>PpNv|j>6nuH^2(PTQ&)3#*%Vg1OKX^eG_eY`9O6Ssq zzzG#Lr)8<$&yH+1mxa{Jp2Sg?m?t#)`#9mkjh3z@58E=-@ zq|?%N$i6;LjRF=>jQ;lD$8-Qf+}qgO8Wjm9<_&uf|k<8BO_yJnF>e(+@=B zkBaK+3b1P!Y}DBc0yNwh6CZr#Ltu`iQ{Ax=o-?1!zHake9GB1(9v&|L8t%TeO=;!bb_upX zE5b>)`ipjdw~kDYiH1h4$Tb5yFrNMy=jwT__dHbLY)Bw%OO^5Bqk--T+d1R|~p0EF05O8(0{? zL^YoSz1aGHL7hSX>e$#At)3|B%UnbTHVQ$X`k`NL|ANYUxG6&T=8ebeqSlWWC;@3x z2l=w4MJ#jAuva!_4J_Jp@_7rmVCYd4g1P*0f>@=`oE;zOE+S%Tk}rLX8Td(KaB8kb zaoK9}E)Y{zI{`qW%>Mz600Q>N`*;FE1r^-(DL8DhGValihVjmeUmr$E~ft zYN6`=(Bty2Ye1U#*!Z|MsIx>IyTf*$(zTGkjZBc4F%no@#~Ry#Jmul3zwrx@+kyUf zuLJ@*yT5aVjeM1!4(Fid#-9O)erKT@NtnMj(C?h=yW#+p;-bFrCPPqgy^Ra;Db*Yakn%_2*emkhd@{|FoWxsIe!{?+bt9 j+tBDBMG)vXcU|#7G0W!``Ul+&Cl%&!<`nUyf9ih#)SDA& literal 0 HcmV?d00001 diff --git a/external/lsquic/docs/lsquic-packet-queues.png b/external/lsquic/docs/lsquic-packet-queues.png new file mode 100644 index 0000000000000000000000000000000000000000..8cda9240528d8ea99b07f4ce25e70db686838d03 GIT binary patch literal 25056 zcmdSAXIN9+);6kws1y-V=^&t>Af3>QB?2l%iXzfm00W_fUPZd}9y$goVki%g zV<@3Y??~@_3*CD^&%5{gzSsBTT-Q10CyT5#=bCfOdyH}4_X>KcEKfm7PkQd$If`cr zV6}7SEhSX^;W7bA#S{?J{c!&rMp3V$A|61?T;UG zXs@9WH`yWlAE>C2IS7Gt1ibz|75@k1Z7wV}SbTMiVio&!b?mU>bkuD()yqQ}o|xDt zE%XYcE-fv+Hs>;ChE?&)|01J1m$$Z`s-B?8ffnn&{_Oef#jtCSFSDx6TGc!Z49r=* z%<6mX=|hTqg^$1gp-S98@$vKjA20Ws+nC+xrt+2u(9AubbWviIFXU0iL#w05;Z5E< zoeo+xI^~D z{z@@hH=p-vr%CAW&xfZp=E@w<9k9e-cOyy~DvMrwzrOT#B9`-07G%Xs@KsU?4Uq?Z zPK9PQG~LVe-K`(ooV_`cz>52>D`eF1nBWay9MC~VY9eVGbJO&v38*V%LLA-E36?QS zJr5ZQ?(cRCuX?Yxp+K5UM7n9MuwAwEDSS*rsP{=#)=~OPj8E6ZUbE}W)zVX$=+OL< z4wDK6H~%7To77z ziTuu7ggNWnJ9~4j;m@j0zCb`sM#}kUx1jQ<=QAF5<-3G?ABcBHCZGh^3PNE`w$QjW z+WAv5`?|y#L}HCek&CqP>>l-#~HaTk#kPE?iJnkYs-v?i$4Ky>NS!T3YXOT+F; zTC_-rSCUcZ{+P_$lgYdW)GkB5HIZn#WL89=)Y@d; z0p3WT3Gt?rVaBb%#bZ3tl(zl!s{LaQH=P0E1FwXmK!dk`n{)7aR#M-($GaB~xVmKp zp%m9SR@OlUO!m^s+M9`t-)wwypK(;AQ6-c>LUXP+LDEXT4jrGww8~X6A{fba+d*qz z7fDi5TA87y~NZhIMb|{wpZ1uv0>2=0YpU_0xR|{_Ni$#Z;j3&3{pLQuaO7E$2NPZ~3h5(UM zsoqu8Ug{Ry*`8Bu?DAxbmgWdy)-c6qnH8n!(uIIc^)t>!R~H(ZH`se~Ewbv#*`Gp! zL#I9CsW2V3Af^i*ajmIk1A;@my%fuFjjVqgojh=yV$tV*Lm*Cn(=}UBq-Yj5JT5qt zT>97m&;JPAANawrn-M%U&n1=n9Vg`Ch=FKA}YENxOh{CyMIs z_r3jQZxRS;QVEd|w1a*&She`1wB_ki;>E;k^PP&N74gOdSVvLuvy9*1QO_PqLPMmM zqSX+QOy{bi%%JX;Trn%{Lo^>n{)Cxc+-x!#WJd@T4%OZCe3w3M#>Fw&HzUR!&E$M8 zWZoWQD`Q{gnbMl5Ao}!D^Zq*y=(=Z8D?R(|qQ=wbPMJPkPLR-KaTzl8IfIwyPiY_# zN0O!475&~?4v^4QZ6suJe_@Yhuv(wvuqHr0E6S{lE1HQ|mHcl7#(r?RxeEOHW!=KDp=qrz(o9 z{!O90+jUaEhWLPO3jbz&hx3$%;P|#8SNf`)vC(A#vq~ojMMJqnbc$J+DiXD+!2#XV z8Q>{M==4=!h+g-M*Mj2t3&9KmUyfK9^0nf-Zl7M=45YhrVTiLEIHJE^;XQN+e-CK! zFQ}xRZ>H(HLPI7laxYS^&!Zk{`s3?jjya-NO7HZRb|l&vca)lo%9w@wCeYsLy63+X-m(VYimPCcnHt@IKhcc`g0Yik2ZHK9RGMs^u;a9YV>u|c$ILo26*k171@ud+ucdIAIYXav%`M*ItCpA&H zTuF4u9_>a#LAP_-nc!05;yKhj+c19egv*de``Arrx9%cjX~ps2NyW~J{*~$mhhshv z3Fyo3`vVnvNy@a#m>Jw%#!Lr}-F`ULOeb9UvgI&0MRwX#>T#$d)Jmb<`x{mQY42Fr zNIET!%xqptbDJ8kJ|D3dzv}8f=~W6HpL}&n7N!vO=ZA>zFq@>%Gi_ zFIJ9&GXaW4jHQEr^3|^(!bI4Jc}o_{9!0f=*VC&6xhEo+@lz!GwX)ymnC-kR!w7>l zb~h;em_$Ff#&uKl)Q|)wJgt2i9QJVJ&p^cAt!(0}cels;FTRD)i#bQ99q~zAuwD9H zQ(V9Hwa%*db1P}hr})Jh5=y2M{Szl9?>B!Y&>Hw-q74(nSM zY9M5u$G@S-$GvrV4p9OU^P`NE`Sa*{q;YC4Od|$HLY|=hoO>~)_!`qV~%GvrM z(S*LvBnv&A>fr}E--Z>d4C2HOqrT!Q^iM(7$HMkA9lL{FJMHaH1);#x!3)>F)`c45 zo7OzuTZ|zy7sk->uj03{2?jKfei7piN&O>n>*Ka!g0GL_VOR=oP~FHj_+`C1Ipjyirt+4^4N#jrlST;tI; zcOQwz0Uh&=E+|sF&JdBU=f-DUC43kCI^u7Of$v9siqsAj2w?O;dK_=K=_8`EQmtQm z?#GX8TuRe^*IBVFap<~HOomcr%WZNEP)@Y$7@llSF`AWGFV>w4)j#cYj9m4YFog8R zSlq;NuX!BYgl}6>BDCPE!iP#y!%|yEYT73wNh}G^qO*ssI>o%=T$Z9`HN=_@X(}OC zWfqCy6I9I!`+Rv3THK1LKRayl{hbZe2>;q+HyE=rX{PiQpVyHR&R1+oS+njB(#Ij! z@C`ZJOog93bW^n4RvN4o!zo;oc;u|jvbwNi^hKpB!%3WaS{7xp9tWn5`v=ml2`i4n zKSu0M)$xJ0SRr3Rik$Yx?vm?jlT4pH_{L56kPVx$#HBOx2wBj>Jl;A9b)Z zH*x@OFJ&pK@Cem{4%;(rF6I{4wTm)gGC>Zj(u5rr;lX6r)w?^=1>v&CBO`WBA%aks z@43GZr-Iz?{Un&|DKI>R8)=x$@h&ACb1D}t_4lK!q%4Jm?9n`y{T)H~7<yjdA(3`eMQBJ$>5#+vqs?zb)=mV##B1s8D_? zlwK5OId-z8aKKr+YvPvv5{pw}Sti4qVk}s${HHGbe%TB&IgtDp{Rfg2F%D*0z z-G3)KcIfM|k_5u)6N;_Oc&iuVNC_jq27_n4&EgTeHT$h$uT!LVt4E4Ef+WIl&d(r{05B`5M}ys-va)4gH z7^kLN>hp?VlB#tZN3oLJ=U+=oIw6Yor;|M0V6bZs`dqcOIydXHb_xqib@#W!lTv^E z14ne<=ts&SJZQ*EZ)%R9`vUdqrpX}VQjiX8KSqcz#1h|a(Z^TPQ@Fz|b7Tdclx&GcN5d?*WN&T{i;@(vM++?|cb_xtVG5qN`Y-Qbt)?`U2aX0#% zr5@j5f9=E2jB2C`k1_HT7JV+9Kc8!IXtS#Az-AU^#pRZG;gB?(jmPY7r=ADR@gwj5 z63PUjGxrlfXIaud=-)9g={qX#XoGKd*oAVaSwaZ_GR)kU_)UD|;_JU*7Zi^`l|ISt zbVL$#cSgD_#UYo_oe~|m^^UUK_5KTAV0Y0R0IJ6D0&6A)u{vpA8*GJ9%C6p!q)g=2 zFaAj_WV6n(Gr1r&);g}tRsGkzfw%s3;~cZ-Oe*=cTj8!hEr zuI-eNa{XAdAn33B z0n2K*rwS!*#oz&&y-X%1p0pDjUBBGK}<%;368y#095kPir47=wr zY}syQImXcbRR}5-k<#_G@HnTZGzl-8?|<*F4VME!bJpHdbbN~Dn2Tj+9#j^c72r&> z7^e}09+SXggrG`E`Nr(VhG@Ue6qiulFfD?|xDU7Gc*XepWUU6VA}=quvdT~YWif{> z<~oX9puw7+knw_p9Wx=oTTro>F>qr)YS_ZgO90oP+ zNE49^J1v_i%N+hJY4_PBi$fI=gxM;tBpIfS?Gb)GhX zw+GUZnDit}MnF`BQ1qilRNJ~NdbIjkUzSL3)5JwHeBh!|qSTLK%O7otPiMW7oN+g_ zS6SdsVsME-FQDpQq3$6wB>ITSHdM~VE_92-zuB`4G#X-lIVZCkpWQ>e_&nyizRcT_kF0yN$+Vs z`?Y@}={uXJY8qz=HIOZxMDxzm-v!yd3;*w4e#t-qBRrG`S&wZ5;jM-}`#%|HQ)c$6 z9bRSf8ZFhWDAO)}=isugyS-jh>)S6kdS4{?7|#AG{}#_%-d`#P4#nm}u3u_cz7$G0 ztQPgkda2G2e%X{fss3F5ZV0>0aI#O0lu?T&DYKYr3gufJG#%wrNpw9K=;AxvJC!+F zkqyyE{9R092`mQ#6Q9^Umu1b@+3R)(dQTr4t3_kgIfdW#n`6B6KDU+Vl`-od&J{}F z*Ls#Dy=2u4DMl@Wy$S;X|-Wfpo;Fh%X`efI{lU z7$um?O4s#Rst-8REUw%1{avR<#u3G<{d9uRUw6=P`6l?@cwFK=nkeD&lq3<|xhl6* zcP*M3S5z|%pQy(H<v6f|NVa(=ch5=}^+6p$frM*aPj{+WqC zKmNDD${{QM70g0U&r8U64#xC68pR8I3W3gF+igP^dqaz z%TN2tpHahm`!_p|$@I_?J27a*ZiBbfa|QYe9f=^(vXN5_Jr}i6kXPiD6N=3-QLlFG zS!m;&?4ZM%_WHZAqI+)-dUhS%Qm;?&af4b>&;0%#OnHucb(lJt;Q&jR)qqVrDP4GXTL3ngqQJH)RAXVNoyhM~dQ_o6psK~cY^;#OZ*|xw;o>b%# zE@k$Cta4!x6KpY*8%u}zK?}8ind7{&pW9CNnK*}M0td3F%FLFm$Y5YIjzC=NPEw1PS4U(N&ripsxO(CjJD0gw9Eu>_|-T_vJN{ z;48P5M+c;i>KPpO8#PC-3tt}1ORyv0y!M$kTY{~J2M{GM@~e2tLRJPZsq$ilTfG|A zF*CGvK%z`qT6O+D;yxaYS2Ro>v9p^Ql*!l1Sc>k#9)F|ZI`U$mB;XXqHy;x&wqqG9 zw0Dk*!cFnd$^Y|smP0xQs0&cS?4^Ul^rGZFw%MsxA`Bo2YiUm0u#)!zsWl6u|B76S z%c#^LHlnj~@41i%emkp~q>6jlx-RNf5N`NM7hlIAdG?h6#)NjiP59!xV5}B5(|-n9 zMj{A%KPbH;)lGj)P|lB}qR8h0P+1ry!Efm)J7p%V*0WI1i$Ir??$M{sc#&Y2{Rvjg z+U3jNo>~`xp!&z=`s2sne~xTmD5Z3}QPTU16+0zqUUT5oWJzAloz(%a65U!sXyy}u zUUYq={JCIw@9Kg~8fY%8aw7++JMNO3)tWZJLH%Q(YA2QjiyNY}tvBpoWKTd*uU@;*wl z*=`(Vi((WaR5%17f1UOywcC*>T&8Pz$eeW*AUt2oWcD+TI|1^>P-NUyo13j> z3Dt*Vl->`i+@88j{m5gpJtNS)Rhz|?qd@8bc7gy@cD%_R>V9^1A{bkV#m{|8X(v9* z_pH1KZ882@##}5UN9CKruG=ft)~I(9oUHp_6)C6VH932^b3d+2+FJc2>EUaB4-i^) zxbj(irRl5tJm@BYtAjREq;m*w74pK3fl&7Rin``G-M)-Ksp<8J!pCpRjY?J=Sa%0w zZBw#N)aCamU;?g^lIFM>0Zq<-Arc7rGGxPYG%Ih&W%r7s2B)~5@Ee$sj%T3a%p+sL zmHPIMNAk?pd|bSuC@yr<;gpK(K)%=DH_oIpYAJL$$Es--Y1N$O7{(OwkjVCoDal{j zZAk#dtrg9A;!SM5=k{oEwZM{oTa6VRHx8YVxx@s!1STJ{|6KK+9~(QPIbvTXJr>lg z_-(Y}NaZ6c_LgeLuum6H-b>}_fVC*|!Wt!wAKy``*4#qS{vVrsHFb#>7hMNY0&f#5 zl?DnU-CEZK-lZtEqxPEuPrc7eAb7lv#h$;z=VP}$p|B%6PS}OAaTigje*+{msTj^z zg->-NHwRixFWwh&O_!25!laOi2vC0fs{|0zTPIk&*$^#PjCf=|*~JKQb#tTsxt0NB z%73P#YdxHv=>duot%3Qmv9e~eB5)Gj5gBn~=5u1`CIDe}Wf=}nANN&=*SspnYHiL^;^a3(G zh3({1ow2%Uu)DI1r?o-_+EXol#OUWYdeS8GZvg4>l_`V*{X|@)b^?f7)mQYlkgu|n zh1kn@XH&2(IVR+iL@)2{cF;Q**96HER_(_0g%2TpUfl)^b)%2~T}$1}qwZ(XD~?2$ ztkwAQ-XG8jAM6aaT%t%S+2pP0OiW)tAgmNa{VvIHas(UswjpWq^17%#cqEX# z!^`3+Ocx7x5hTs1+D}V4e zqP~@N@yR-6W$;MQq75~j2oxbE7Z}~w=Jc`+61qeu%1B=QQ(6?4{G^jlGzF|T>JYj5 zJil?olDhGytG~c@2mN+1d@;Xyq@Vw1sss*WKTcM2o}8v8)@IFz+Ugu60V*!qZHR7i z=s(pjKM@2))uaLS%I~TMU>>6v15EHmTqbz)+Q69J!NO#BdZaqJBI|*~Sp#1&3R1*1 z2I#r&!lA_cj3Z#*4tjqi(2Bz4Qga?qFsc&6&hgvXU+OV0x|-$7sL0{C6E6N>9A(Jw zm}K+P&tX2S{>}m6mfANQ{oKb*uqgXlkdfg9ek*`l$_%aUJ8l$2F5$i^d`{YY1ZF0Z zV~!PqBB0P1q9;uvwEW0}Gpes6=@a$ZbEtUTQ1?L95EV zFYkJpC{L&0q65M;K+C}gQ$AEH1~=|Fpyemm97Iv6es94fS*X3;)4>Ti?0w*#MF4!y z@LIR>)Qu6#b=_C-N%Kh{eRp|xW#_Q=+&gHFHoreqa;{sK-YI$Y*j<5bxOb7-K>W!m za~v>1_SB`1{1AJA>mUOrHWAn&oo`S2;cSyzT45-idZlk#Rvk8+PcKyn3U(H_E^Gi} zQhY5Y5x@`S)lJWZbr-s$<-RAt4%a2Xi-B+VfyE&>GM(s5Fuwi*%s6D<)IqlQFMehgV}H>zxkS#+Hq9Fhhbe?O`KvPI*Bp3O|Cqd3V&m};5K z=oGjrM-rilcThC}^RiZvbfOGD49P}5ExS5?Wt+#HF^QbTLW!y1>k^4WZX4>Cc7uk{ zg>n7Y313v6dsZs(^rfgAVk!}OF%tH@!>6$C z{Boh&4WoxRP>Y~`A1}6^SLGd^Ln-xL(^`p_pF?0SlY9Ra7hpl&MuLzJR*#T2x#wLE zws)<-5%cW(2KMSkwQv0Ir)&3)^VOp+1{jFU_Z8HiN&{5kW+x9)yE~x@%MZ1X!_O}| z&c!PTPzjeMpC(8s`%?Ec?jw1PXGfAF{Wf}&wWj1Q0Ae`2Jy53zM`OYMpx}#E21D}r z`N+vO$hmuW{(=6c_%?MxsMgIzlI^E7cm0F&+2g-HF$smyVFveBf#~ z#WXfSC*z4mgLO-NALAVm6mbd3FzKMsDFaYazh4K^u|`4>ETu+HEN;nb9nNb2@CP@d zeCWq!4B>t|hBbdp2YsBvQ0i6MLr&dNq`1#AQPF^g>GYzNEB&J3> zRC}^-Wj6QM+@^t6QRuW=PiABP^-9iwu-(`Wn)$E1IQnMB98^}N4j=F5 zfZz`d%6zf@0GuNYKdIXFS!i%%dEcgKQQ~|=#KO$~{!982N#7h+Vu*9}+2nBq%Z=0% zKe?FWgC&8L3v%AyZBF0RBLy054rZ1Mx;?+D(?ckX=}jdVNFX-2WWwWdGI6g5lqzA1 zNb^s&65o#^g?oG}lLe@p49Q zK9MH(;^TP;*r4uuEsWpXEgzC`r$Lwnz5n&Ll~{4=YC zX-NW7o@LH4MpU*<+h5hVGwpGE?sX>}99m=4T|G9aqBYS{KR-$`L2^Y>`| zu*=!eeG{{fjfmrA8_!|5r0&+{byc^7-|j&i#o8!SVyI50)9%z@eYK)uD8-f$q=W!! za|Wyl{y(^Y90&#c>2ydy@?m?j^9}OWyvqDeROGJQ`BdTg}L9IM4^AZIBYfOG+H_faihfVaTQUcv%&f#^3 zsqbzGvt<5bttYVni>UB-n&)>b!0O*x!Mg1yY&m@o-Rv1K2r$wh{~u0baO zpV=&Xikf24Jfk!JFO#*5c{39R zUdbGSx;}1pFk>u$Y{F>Pff2Hny#IT@{-cjJK4B)O^SO*L4iNu{Fo~Qy7P!LRrC|@J zX9DyBN96M|p3QlHk-lSwcciV!UfHnUyvxdQ*R)7cPbk57@0-MQmVk7i5ERw^IUVM9 z5;kP(o=J3@KJmX!OUcS6Y)@PL2TI)HBR@AMMTJ*)gTe9->`{FqKc z$;N*ZT7Q`9e>;;_HZ&LCvc;z8;l6XiM(_3sQavwZ=O+JvlspV z{7jXFK}VJTfAk&pQ&e1XIhhP&wQET**e$@Q2(Nbg9iF z%E(2??XAIDFAns+-AM!nK|Bn-T|f@xXZoc);TQKO}f> zfccQ5x8o*_MnlBIHOLJ^>c@dae_WBuSn?JVih+k-kHAgDuJ>OWdwByy`hnkXlS|6h zd~_>)$zzO#ZTao)`<|cv_AmSSnAWhZk?;Bu?;#16CvQdn-01V?MtcN{d9wZ+qNYpO zM!p-sOub(Indu=T^}Iw);VozBmnt-FYNbbkFZ>`j`Gp z{~ZlSG1C$a{(9&I9?JeE{o8=nxb-EL#Hqq|iX?1&>Ahq?DDAe==_7{I;$MYSYF8{K zige*k*t5L5o#gQYhsrkef;>$;&?kypl?#;x00h$7qGa}!0XSHm2JY3^V9cWATc$3DD zDx>tIaXen*P1WJmBb=<)j~<6(W|o7)NG{F3tfk7uw1!1m5u?qTy~9XSXsy2wkoWFd z*oZEP+BA$;Z8oND(tCY5`J$P2{;OcC-C$IIio{)hX#4SL4XXuU@jVB)aTK?3xdAz2|n&R>HK_<_sA#U zWce@hA9d!_aarvM-)K9V;UBC!_Ae(dAbExstp(LW8O>qs+`DJ92c8%ITOv498q|~l@2JWd ze~CI;Y_8lW{8yek6F`8cDz!a>A)e+_ z8=koWT$WyO^itl++q+Xx$y)-@@5aZJhG(1B-!aTkbCNR2y5>h;eddE<_M8l@+z_@O z|Df3cW$}#GOx1Ae&^I|1t*Mj&X8N^}TUMy<9i%Rbaw9G_l(BRz>ja@ceeqKCJB(|reg;(v8aI#WyDInd?cWwJRe1k9&`(p zUZ=^eJR`V=Y+4F|8T7l1=FfgiTI~enktU_Y!P5@Dg03j7_S{biCB`b^?ISzuXqOpa zwSVsvQ1}5SQTtN}RBrq{Lt@ocu?N;3`oQVF1n*Mkn*+u)!9NGK=L)c4?5}|Y@~#0D zx#Z9t*-S9A?DUveAZ>@0FA2csKex`-vWE$Yj_;b}yYHLHBH(6v#vF`xpA&>l6I~z+ z0WODmWUAqSI{}CjU>klbF&|Cw-9SSA`cip~YQV>XQo0S7>Xx=YaacpJ%NNQ{b$bSr zR_r}k;&vCosqycjDc(vag?`EHywn6IL_npCoY&KEtS+uTl%v};77 zvvm!;UY^V$15)+hrDZCxw_^pN;zmDG)Y7vcp$9|x9+%uyQ(fyG^nHWVz&D0y2&Os; zZh+X&H%*Janj%4vXfIl6UV$~O76o9o4qSHX30NiVGYiMuO3fhK?wLbwvn}Nx=YcEh zw>zN&k|9SJ7#KS#wD^H70fFcAT=S|#Y|u?bHlp(*muLn>J~}RZ;IW`s>>8v9+*?I()WKbGWns5a=N%FSwWOaI6DdimYiY zN4)TXTun_6(=*;}8QwiPd(>{t?<2ze4zTv{qF*Dq=+I5XDJW6E-2w?ezFN|hqeO7T zeC$ATx8~6mPB!8D4HM722acn2wIe5i_AmF90df+G&v734RQSLW&+n%3R*_~6LwzPs z4O!JcnvH=&euH&`=s1@daY4#%#F;g1r_)z1&Z<=@LJJL8#WEi%;pkh-bQl|YiYwCI zST50vhxAkNe(u*STOP~S|5os&ptJlF;KC~eBnUZO^S(&!;W@v98Gv3tgN%Y=+*?58 zwsP||*DPg3`&e=7ynR$qeVj*SN8rEg&EUaiYKV6H*}veJ9^SsfA@=^+6ljHNC5mv# z$^wwJtZ29(JYpJ~E%m0DnKOxI?A}IVDHmhR?Y8F9k#xh`tp)J*@>_;mK%lALHN%gL z68}_w&q7p?<}szYQ`h&~7$z=z3rSy@)oYZ_th@CZCVn%yf>BQr?Fi7{go-3T?$>kp zDcZeH0N2nmirp=C600;jUJsv%J4`ET=0Zb)UO7GY2B_uLH($&qTewGWB0!3=G!uaL zkKl>{x{@~;YuE?n8K&BHZ^I-Own!aH@*6{yO?^E65k}A3QHG^EGVA=@Yyg*3DHT8V zp0({pdDzyfXsz4?KxaFcXIy@{4Djqba$!*Nfw)@Yp?uuBj0l}fZ?e$lVzL&Qet7AS zA&na&d5$q%kGoTd+p27jp3mU;j^rA|ExP`2rOzuJ_ckaO)-n7mdw89v0B|d=V=^%_ zqNBT?t%w^4HfE1CIa$Zg2nO9}F~%rB$c^2lQ$D%|cwWDIl6*4MR2KFX4D(yP&l$q1 zDmh@&<+YzOB69S8FR~S-_0I!lI=SkEG#^od|C*7;SZI##ykAkvCi_74Svx+77%Nzw zZWo~BnRH6$@TuLpvR&`!*zO++t>#-u-b>M(zPISo+{gQXT{K~+Y$QpPKIZm$tE45? z;dcb4fy5Hfz%5Rs6?i#W3ohylXb)I%EjhR55c1zf>EIpQ~#0#LQ>Rm z;7#`1TO{FdDRK19-p?7#47kvo*rmh$r3UZg^18+jMu4R&RReaqX&;TE+mvm%f|djO zR0K0KY;`KVs zO%0?&d$33M&SC(Zy`XZRnISW?+LnsK$*ouS`R9St5bU+S`3RDUc=msw?P5KO6=^=F z>!`b0)$Wv~3y|x>^sZ4Ou1-=rNRUM(ht0$W?wU)!j`d(QpvNq2V;#ycqcA$vnlq=? z0Q=6fTJ}o)VeN#HUVuAZnc1x_j9maIxDM^6(ep%CoB=y3JN=`^t6j0PZO%#=3cKp% zy+$_#94eboRMNK>y|o(VRh6gO&AN4O%7`%6ZEh{C5uSH!6bdwm9hlDC22yjf7QuF) ziVNX{6@Sxtj%e|>%S!YLIokxNofoqs!l0Cq?9DauuzRLekT+^N+UA#u%>`X%-n6_M z;Eaj*Pk<08E>rjJCU`&qlXWtYTF$oZy`XTkvA8vBeZoG_a`Sp5DgEOOZHoubQfx3m zpfjFjq)l=DNCY-Ah_A`bvIt_M`DVzEs6k2C>NW=M&6oo=@}esC>LaR=`Sp1+f51$njlYQW9TcbEBXWv5V;#h0tN357@&QrsTW5^VQ;Bnc?S^ONbbi zC7X9-44HMA#kNy!q@_5e8Ss`HDcc;g82YdP8CGm8#3|*rbxJCk*JwFX5;5|qrcxqO z<&9SO<;a(vptJ@FLa;ToE`NEt2&JB)m4WQLj3pyJ zO!pe)$^MB^<*PKazu%gguNH8L)`n51d_;&U=-$iogPdy%U1nPpvh-!iER<<=@sIME z{)Hz1kwPUHFU%PCV)!Yzk2XwYSG=Hspl)r^f?>T(S=T(>=U|w?*_Hny z(o)A9IaiFM7llp^jnfrB3VSCeD;yM+2&(4JC-THlQ&x>z|LhUDk_^4rtX|%}#9$_Nh?Yc!g_ngXTosH=L)5j}QWVN-1T&>Yl%`=|ogbjpEMwE;%2bHe_mZP{g z4%s(yI#D1E+g<&8i-0fKOJ{be4B^U=D2$Qa1R4am2bhPYa)IoD{!3T1>6yYIH`&B%b9*|Kkk|u$qNF5NV56e`X ztR@SBchs$0(VX-P7nBS`>8m{a#JR;^;~3Bv_JEnG;u8CM!@Z!?#kMVz!7#>O4@%Y* zl=YJtch;0$8EtGeJI>!2Tafz$_^4U+V=hYF9gkGD@K`4a}fw-i9E0Uy`Ounf9kt(h(T0C(K0 z321fOol5O~;kN@kf_n%<5{d;EF`m3tzOKp>{yA&|#J!s3F2)H$P-6RXxtCq{=Sci{ z4YNoyu0{{YchUQ_At(z}P9HhyJ(qPLjeK73z^&6nk$x(BM^&{WQDb;<3_T$0Q{ePW z@mMDv)xVv2TJvJ)NDbNK>GB^s7%vKUeg=!6BH}IY#!9}%y4UXu;b?wXPsr_nFp`t2 z7kMXWMPZkL@5T&lXqK@(d#Cd2H6YQpBX0+^)L99$iisq4 z?(`9Y9<8C^J9jl_@Snbh`S(?EMm3}Mc-K(CD4b!zt}o4BzEyLW@82&t+5f6+HC%ce zeb#b=U?YemY~|*gSabN%v9F(2hGypvL*#26B7Vh@LV@-0q~i5?_mCKdh)24V*{>o9 zofM1(0NV{k5Mo`I@SkKhC7njQk6t@>Q81i+X4trHxK&OCh{1Q=uSQw`PzzAlc4{U{ zMkgFK5As^*`>1^{+3;UuPbTr6huqPO2&AVm=b+0>o`yR0Z2M_7+$Ii)OyZ^zXt{#E zb)pzG9K`Xh5=fLxBKPSgTO`yE4g8NBrnov<=zAXS))?_)8k{JuAZfhwpDS`h=!n|H z;c)w&q=~hG1W>1d>hr7|oA#Ea25>-^K#%YM=td*THhF4yShk>&L(PN-%m3)}t)5sV zra8$5VSzUv>&U>FK{^7*^3D~-Y*27#{dUlKy~&Zcu*0ZkEpN+1 z7H*ZpcLzeh3U?%qQ_$an%L}IasJ02)ldq?Ln)JFG&j;vj8EYxYTI|@?Xg-BNr*{5B z@Y2!d5Kzti6?AhscU>ck41M zpjyl21uxzgCCX=r(NQG1WrPn5F>K*tXlWD-;XLIYUCmF1-qzjqWOAfB1*Z2CF0L7v z!zfqKZAohjP_;7vrQ72%AsXWVgzXzT>sl&`fFv&OgaORG3e!91q9q&O``UEUk7B_@ z&K-dgv*mU^q}SN%F$SB7m#L#a95jF67a7Sk*3hAI8ivvPCg$Yh=-G*n;R>D1q3oE4 z)0=)QU*#T)>Z$=>Te9(kIYu)gY0GEi8G;blo*)FqW+0c(?t*yNG{t`VJGO+9MZZ=9 zQmPQLNJ}r6Dkt(AIiCF;7>sv#g!j`jo_M$?`a(Dqrk2$;AuXPeug&ty&4&6{MKTDc zjQL`mNZl56Az&`;iG3y(18T*fEWb!v2Ar%hfO~Wy$mGrHG+FZZ#h5hE*SCt zy9Jvit+42u_X->tO9`vq{vr8HdWRX0#A(0}7p^)`-r}VH*u(xUDW5~M*2g7#J~7X7 zRhUgQmTopNry5XKgK-KGcl5)(Sx1q>PYNGNdLWrBnA&4MHlOyCKI0`2>8S zoWW67aJrye{03F%6&K#hEP*?!sg*ZyG~vg#OSaPWIZ+wcSI2CPw4=iJrDnA^HAG)5Whus`4r529nKe7%X48kT(KC-2+2r0=qHk#aASnuatKETuAJCQ-%!P>N?cA^00WJ{7d4&YT{GoE($=d8=( zHTbxfzrV7seVc|{U2ZyLRf^5JQr>+I;YgBK-cxOX0C|3mokDpj6wDe-W zCk_N;e0mzKRU{qkMHo>AsGKl!6&VAuv7QIWsE@&PG?#f1!i=lD(JUg9UTlJjtkh%v z!8c{q@Vj&VM!sxW?@d=%$qg?fq#~O_J+SjWhdR6{z(&RU*mwVUBeCtYQW%$5{MsS` zWRV9*n8L&0+IcL`Rz>r<^=haNRLXaWmG>BF9?jA>+Y5)J&k9+@3#{8;Vuo)d;4332<+f6jZnC8# zL=zg$p%oQR#8EJ={w^Sd}BOrQ+!NxGJ5cIFTRG zh2#!%!0-!#K3JzF2PQ|r!5Tpo&)M*ktjo`yYQ7RH`e*-24+-sQu^$pVh`mQ%V~V@l z&i_gZ6Hpp{-`rWrDJ8huV7;988r4tN#{+bc9fevA!c@m>Tqf+gb=FBse|RPTqJ7D)#8eJD_EACX0Ntx496fxH>Po{y42Brf zI+fM=v|&&*tJOhU^9RMp5##GrqN$UrQQ(Dr_k8IQVIx7U@O<^*=g1THs{~c$F@}LF z8)G{oUP!AlQ-B%=>{Qji)~Af!sf=dA-VcylJ5ZK7ARqJ7Trc?Y`RJUv*q4}*jtJbM z+yj9O{@DAK(l=wiYv~#H@14JPo>kMw)KY(*N|Hhqh#(+AX-v+oT}&EE`nXP<5hL(C zBKW50)f3NhMAUcsPN#=D2CX~|*QlPtXQVmrXZi|36;+=U^Bf5?A#G@7 zoG2a_`+-;A=*4O^+%bB9(X&-=4doPdh1HwewP32L9!()e4XE4ZFJ!)m*HOK|xh2NG z?i(470J)y0HDLp&eKk=iEr>ixe-+#kcgF%7l`8~w{4O^!-$4D7>Y4HP%V)|vjs<*? zLS?pD>yGIWwu6tsm z-9v{+DJv&=%LLJ{75cr9o}Mm@0$d>#7Q1?XF??e0!Y*@k!=GHGT_J^hXUY4_1@u zE--ugGX~Y;d{wRnS>p$3M(<6^)7lEDC1_3Y%19xvPth`mrD`yGITvaE73q_$8VeX! z%Fs%FMLMCA0G64jVF_;J*ZUHDt#ivu`8W6hOVHbE@Ig!}3!C|gg4Kma6@#bN$uSaI=sr-EG!C zyQ^VNv(I&Bm2sp}0{G%nHw9QtIwmym!5h&ecuK1U^=rQq^~-pjg?&=PJZsgT10Z+Y z(f;KTR3~%wjW;gd*@=GBF1X6OP-NhG1$&!L=V2#32POKcs4NX+RRc4RG2=XdP}n}Y zqeffzeW>Q!X37H( z3{T#KFA;AtW`P_6ieCd1AlFT&!^u`U3loKpS&Ha$~6yRbS(m^TN}{r&@Y7Z6`;_H_9hY8a+p zsz+Kb&r(JI`I3hlaCOhG6NQU)p6Ce(@HYA{U98b=3v!NZmg8rWs*om{DNnT_lD`V7 zF&k!$@9vTqS*KEkM_;CPXa)~mDRd%8?wVW%7pInXc8skBL$9<8yjApEQjz^`*5lD0 z%4Q|3DuuOPaQF%54+gJTs4vVIaZ%>S!m6c#Fpb4(J<%}2MxK43{u)w`DtC=4w_VTo zp1jIB=mCQmh%yukK{e#CilZS-I7ElwPMzB-`QTV+*r#49R$HJlV=0}Jj~YFpEd4~L za&<5QDCflu6-Vz`{&fUC_w3DVYatYoZn*kd3I?mY9K8;~f)DGIsC}Q2U3v|4=4T8< z@N@nvutLnu=$}zf$?iQoR8 zw$3~rs_*~fg~pzwvJ;B3FCohyP2^)wWlORqgM94SGM3_#Aqhi5^pVO|WM9g@8)0Ps zNX9z$eJsCoXVj_jX@LkU)H!9{)$$E zI~ysI!f`cW*O;55#ytJ4_9RWjug{6hthX4w2bR_52K;(~^_t0$mP~K>ug3H~Nxtwk zk}az)2nG~Z!;iWnn^^9qQBX3l9cj69P99Z6DjDkr-PHQ%+04UF$vq9EdVT-2X_(S? z>%rKE({PqLvdLv~Sm|kML|9`nItkOkY=w;l+FD}d)F=7YI+*52{IB%!4T(lOh&#`^qVqQqsH}LiD6y3CvROb%0|CZ!VcCow{+Og z9}5>Mki-Vf9-2UW+ib0fYP%9~&*sO)!4~KNLFr)G^P>2h*2nK1JaAiFdPG-_vgLCv z-^3Kk42@9q!9w za22+5u0$J&Z+9_zNz&~}pBDXJw^_B=6kxJbP}CT?VjWU5wG?De7pz~)Q`xN&ll7eI znUJX5UTqi2)BbdSbnH!h&Y(Y}nV9M+ZT;h+~M?5}$|j3);fj9TvEN zK1gSgd--wk?(WsN_lB{8691#knDw09J3J{$28B4Dv(E|bSHjk!U_|L*fvl0$ONm`GqJP#hQ5(b9VAj@+=3$qCi3VZP_Fm8i@k0|Ey7Sl@eJFJjF}YM$>IB**LcIh3!R{M(a~NL`XprTz+urKUIBEftHdA+S!hsku|YPlk7y z`l~J+@#Vu>pzNs>Rbtzt2Zaq%)!JolxIaw0M7~uz`Bs5gc&w~PIZRPFR@NCY&cj%E z2K!D2H&n?!)vr_38t0h_^A*LOMQPZ5#OK;+0Etl7fyyZmJFIvH`%R67a+qssO|97W z<8U5EDbiw7qDwyBW>JsM!$h!r7pul;3(UYhY-I7&1k=|2Xkr*2Th4$`EV_aK=vea| zps|B+)F~=6j_|{xZ6`xZZLoDOk+@gpUa4&ZE~YS92xvxDEOkqojIs6{f{Cos7Cx|d zE}pAL;bFe~v4p?Qc1Gp)*C&1|_0qiiv8zmloiEfOhztt4$5z3dm1t=~rAR$+0Xv`Q zv@sKh;%T;><<78Tr)>?Qi)T(mCJgHUjTaNSnv5Yz()~LH*D{<1m0W|*Yl}0kdI%~l zuf0+evi%slO~;2YC7YYySh<>|UEZxZo*5v>i558C*nL`@rsr)92M}3x{;cvhDXeI9 zKF=j%;o&!I7x_Z75`NapgK;&|(u5uEw_y$^Nr|3c@K_Ps_X|sB5i3A!PBDbQ~_Kh@PVKxHUT~!BMwnD}nh7}pSe^xL}ZYC;=7s10^ z78redG+=Y^A=_Ku0}ru24IiChEX@1P3SKNel3i(j+%Ls!M}A-ZOk5_uy5c)gN-5HO zAWMq{Ut#SzDi5Z9l{mDmh?TG*W4Nf_CxuRf%;c6me0 zXKgTE%sk+Pe}cu1ggn32Y*g06#WR$6jrXS#KY?X1i#p=0R)|u*bGg_1guvBd)!ir2 z*Q-4SFL&;Jd*?Ygxl3{zM`fiZW197J%*CXUU0~)54gX^fRt!@0c`8*tTTFXln(tCM zN_#Q9!FirR`*6+EUc=05@y-+$v#h7o?ZtqoHuRVw#2(_Vs>j_YvU0!On<-P`kqVLT zUzH>Kf(2$IxGBVz>FLR1ka~C)pbSlp>@}_MZjs9OGF8cOGI1}(?O)M6?E2)+|p&d-*O95J1<~U_jclQ9cd&#MLR|180&UZ_7$*0c8p(` z4C}x)Ty6&%lV`@aIm>|l!v4LpcbiDUGhi7;*giUuDH*Za+)~-%9T1XF#*gkz zt=M-dr4IDXz;b}9A|ia1b`@jE25>b8U9R^ZT)e5xa|ht$U1^cJ!xEinonZ&%aX5+? zw^wB#c~0rZw6WW4b9OHfgCP)Xw+tq10G{fgTLJQrbK)lvmogo6Plnr}lomA07?fJUtD&b>5z;HwP9f_0Gbt*t2W_tbl>yg7U3 zB++_5@PTgK-l<%Zm&Q?$Ba37eHRibiC@-u#kio~N z2}I}Rw*w2bH8t1bcBo88K|{xA9;rjYijQ#2vnqn+t&lE!bZ@=ZaU|Vtk*Lyhn{sDu z++ibtNv<))?dI(Vp4J@=EN}EWMKtN-{qL9+Iofs0)J(YZ-n!#QZ8CqK^iTixukoc%q8Ecy0|-e;APy*C zcK_GdsPwH_!n@3MT{rW_EDpbA$2+*e;5Gvs6-^HhpV9BI+sq)*lgs= z-TsN8E4=V6hHmfAk21Zh595PsquwrFr_k_?8nDlPSr$S+4Tvchz$j5K?zdGb;RGm! zzSxrhq((tm!5 zlTV5RR^nD5R6*7&$mGcZB#MJeIp;z^P2kbY#p%A$V!K<~ULyg)(@C1u< z@#BINhLDiy!E7Cn_x~INbl<6h;aJLnWlFXh8`G1$ggCCllGkiR_;BeyvMAHSrxg8e z!EegYi#^8MWj?&krUw!Y-tqB%1im;%Tf%JfrMPo~DIw|e5G7?o^f!)=%<9g*WABCJYKO2ja#&J%`iu{Jj=caV5lVFv!s`pG=h1 zijiez#hcBJv#LLD;@G<9$LoXX4P=QfYG|Ga;fwq>M4du{UqKQr+>n%&Tq~P{M;+~( z2?DDX4ib1Vo@8+>Uq;@4_)YH}L4}1Gjl^Y_TJY3oSC-9)_zfX&WozHkZfd-2IT+r_ z^7sf$GOI(dC5>U5*(>1H(un51Th3vckX!&HcAbfzmi!3!%P;IYAG1e0^h4mcqclFV zeMMX{k0J!rCtJnxTC!vIizYDKZC*+Q$C0h?opLS3ttmt(De?2OCL7WC1O=};IWu2 zs--HU8SX8H-)VpKP*e}G3F$B^_Qs0WcWs`G6d5XLWDsW?fLV;xoet#r;abINott3> zMg{A8@~V(?SrXbtFP+$XGuNaGgB@e9^@(|*A%CVdB63N`YQ6DezNrm7v+v@@S0up? zx6uDSS^)sMoaRkIFhfX=5-lJ9z)FI8y*}UVCZPRtK5+T$U|7pkkE?=3vCbT~To9Dz z0?`3Ls708Tuf4kK*6lM_GJD&r3Ep{ltuJ;4tnv5{i|kSW;epiIPB8Dp8}posk<6Sp zUF_7*>rM#Q(;0zM^a(QcOe{79{xe4k+yrErb;|*bz>WAN^aGcGrZIj(e#9>C3dCb5 z-Kr9DpZ&nV(s*WMkA-$~N1c-H+oOQTZ(tE%bp@g#690mOwZLLS0qeyoIhSI!K2++~ z*T(H~@s-Itb1-R8iPH5nOJsLsYaxGCKFT!XMNnhmQ|;s8cQ3+Mc%3iUcK@e}M}=q&BQf?6DRbxpe$`0BS<1nr1p zljhBKSuxtN(>t@T2LwOFq_K6N{4}t7FfOR;rd6rz_}3cyrz;!hS?)bM-8MHaIw>Vd z@=c4`$8>sciA3V9A1y=J2$taKC<69v!AqrPGNmdeh>;Th-zK5^8$){AcM?XM&GB^x zTbBi2+FBZeG+RI|#=^BenXZ-kzO-_&?hSiqp!gruY+dyKvbe77pi-fGIle9Fs@k}k z$d3ANVGBSQNF|A|%-}^|L$a=I2wkes`lp?YFrdK(!DB5Q0wSslu&!yrfzF4@zX3OT`8)k*A;m zyEC*tx@!#_1-9)2Pg)D?of~9}2V8pdZ;f!+w|l-#huC&NO+#o#3g%}!5g&mtI_4=S z1^OuK@6j1}w^E6A0Q=|`s{vNi-e;I4d4#&(?5imq7HrjUmcel;-g9#qgvgH^qJxYa zY^v+-ARG{$OQn|U1XAJvxZ8UveE2x{zB7n%1SzDy21Gqk{$q>~4PbZeDEb5lu@w;t z;>$u;)bFp{1~;<1od;n=KW^D0+98!QvdL#oJ6}Wz^|yI~VMcbN%r<^VW|V>ZLuo*f zrAyG4Rc(UP*pHkTrpH}oK(kufl~Qr{k$YQTayf6YQHZ4TRiB{4(XUIv)avEOBU8I` zAM!bS50M`*CxGMLI{jOaH;$1-T#xLpj(F{ieUnO(ml@UiGZU;~uDJ27z%~=TLi9Oy zefT$<>dV49!Hk#bM)JGP3xRuQw&EG7VM73?G z?EW#bBu8rZ4@T)6~n_WMupsr9!2u=!Hv(iT?! z&rjsBHXX*rHs!SOdmu>0jv^SRPEKk4zdtUln+{Lt(_vTm-%%zpc&w-dWKHXi<_YES#se}rr2@o$Uo5HiC<-(fhDon z!QoCgN^Xf>J4lyu_&Y0DO$S^eL*W+{q=B)?iZ)*}Z5rC9=wUq|#HWrVVlNMCho46Y zZUZxtp(S~3EkO4{+Q|0-(p{!M*WllUHFH>r64szPKk9*)0X^hv`c-+pqf8!2mL`o^ zxpaIpvSr~B06!nD4wm7;mL`uGXgsQ+Eu1x4a;ws%eazI{!DTKAVp>inxZM?I1c%HX8Mu&)BGVm_bqT84J3X!z>P*zV+imJp=~p@5Hp#|%N) z{BJY%bV=wW&QcKOejWl_HQAOJeldz1hMp$K&jrq1o=!eLpX{$py~+Sp7#zEP^Z~MR zx8{Vyvu2H6Ga@~y7-C|M*&*H%L%~AXzDT|+qIdE1+DQ~{iM5Acm$EXp%Yz$SFZ5Uh zhG$9*c+C=zPjMYw5@A!Rar+S3TV9kr1OOV^60@bc+h=6wDDXK|24~r&3QR__C~)3UKQ|oGx}t~3RlgJbfA+Sei~s-t literal 0 HcmV?d00001 diff --git a/external/lsquic/docs/rechist-linked-list.png b/external/lsquic/docs/rechist-linked-list.png new file mode 100644 index 0000000000000000000000000000000000000000..a49a751b8f858f4e484a494f5a7f53f44053ae1d GIT binary patch literal 8854 zcmdsdXH=8h)~*yOQiUzOSg4yWy#)jmQ7MWFNbe#LN+5s&p$7yh7K)UBh^R=1gx;%x zfb>v9@6AvWLiqxmZ``x*81DQ3{>jM5yJlN!zH`m_Jc%;U)26$`ap}T^3v@bnwH{r# zKnfs!x2K{Ye(KIG7hkw=-CRfO)?;6b^>oTI?kDI7{ZYDW)H+n$VZG!JLqqyr(cHe3 zBm6{N>$1~zs>r_{USz}P_sqNT$O1lXZ?2i znkmDP=&K!h2rEtUtCM%=a?nN>D&r`{r8M6MN5Jt59D>mEMm4G@M?)oQ-_O+D(1*TZ zSKh}i zx7TQSh@NO^?N!|F0+l);MF~B-!&C02gzWo7T}j?CKuZf>KWcpNOfL2~w^ zeJ2@}jd#Y-yq2eHK2zM@A4(kCJp55>68-WTE^A(U!s1L=nY%5S$J zk&^d^RPAHSDO^2bVOU3$LUgNC?$nv^r#gz)&F{pqV;|++dBZupk2w87_n=K;J8sB^ z&xe_%JCtE4nFl%e@H0)|vrv(rAFlOL=;wD{ng7YS90D7{yq~8xIJ5Rr)JQu)9Opz= zAY>GAms6!&!05e*=9!dXqO$s#zstpD+_$SRxv~|X%-FBHZVh}idsskwCZ%Vxap5fD zFYTV*f1Rm*?P(ub)@bPLdAsta)~S?&eI?mn|Gzra0K~5Z#5q=P)dsZhn(*V-LpevJuIWh74-?4U?PJd z>IudOIzT|bD|#R&*KxLO*B${m5k}NHp-y%dOY|)Ww@;P%l(p>`|GToA#u&2pw8QE6 z#V&ob4R~XXAcVDO*}kjxL?_9i5}RP@Fm*B*EnX{Lx7*uO0)^r8?iXIFPuR{G{@27< zO9Ya_n0r*@=M?d4G^2ez#FE;(+ahNikngP#9dmTtJ#}aSAKX)R%x;gN#tZ0ue9w(T zWtTz&@fwf}O33!20aVy9H(VuKI}Rm>_N-ou_5lpQ3x{2+?BU&d)!`?+0l!VM?r#iL z*KPhBCp7rjNe}t^flqpl83B;R_WJI<@y&Rb&M4;QW2eSZ;G(<(h!+<{*f22JQjX!P zRC?{zsPF84n#-e@Z?cuAZ@}r6rE@}TN=C{>32TwchicJsd6 zm_z&8C+9lGDj4qM>%;7lI5RJM2%t{0sCezShy$<6;ybiGjBpP=d<>1)WQvSmOt3r= z8?&i4xhAQE;noh{klnjwAnW%{7;RK{WPEb`+SVUfc@$g()11QA!IgSm{oY42F(-C8 ztk)Ug4lz9^@AC;icbk)QZp11pR?jTBg;j}`j$cAw5~&xhUMzMT_h7iV(zkGLbACmr z@1k0M<7p{y3e6pwJAGfzV*KezIU**tW#XK^JL=$dS*B~;J=^7wiCIGuv?lDh4}q!& z@4S(l`jU@~JgMK?O?9}hZz)%XiHDDwPI6FaLzXvq%RW@^##Tq{yy89a1~*=j4_B($ z|13TFdwe?-=Ey9li-J#i#~sTkSNPSYaN3C!)V!d|uo*RBHRIXyS>6RTE$+j%x3?4f0pHFj)w6k(V9QS&!p{{PbKu^=U@%YZ$f33>ZIig!pEf?CsPTcr9h6t}V zWN-dsifEpjLlOS3)<8jHJ_&SklPWQt#RQ?>6EGFt-=htb;7Qv}mv6#`n)@8my-OcO zVrf2!#1yN5VYgk;$H$L$g{^0>%Q>^PJqKDBhrdX*dOVLwDYd%v;`?ZwmL zYW}*$y65Ns``f2!w`U=EhRmOP%hWWKctth<*@d>QjhH~1-!$*-2Q1khEj#wqUH=?_ zYtpaYl)V2s)izDHl|wy-P>cs)@r6(it(c=}KFrKRxE>=bQ)IA_38p#7X{Gt^A5ShncHB&`ulk#k@6x8kRF{br~fDb9v-lhjm=9X}S0}K^_ zReaHY)US1>mg(H6gZatOPElj)Vs6gJcDFcr+RT#%sM_T{Bwg%N^a12V?1|k8`83ax zQ*!PdAxU{jWmbyzL@cgUjj@v{2BgeuWSXUsKMHfEYwrR;SH~Tu)>(`aMY6?ls%$p5 z*!T9A{=&5oE|)@PRU@|3$-g4=i{2vD(t>-SfIuAuN*4Yt6YP8;)$Y{u(tH9oFmS_1 zbCkomaP_yy7Q6Arg=+iE21?)G3lt5^$HVpev+>~lY<+01%<)pRzPZ_wCALbpDQLPd zU|;*%n{8!(xW0y2*NDXI%Nfi<07IaoDbF!mMSPbrX#KdXqyd^4$r6s!ZltTMP^AZc zk^P#im;QC^i>d2WBH*!5cK3%#n~?Fb=x{Tws1#=!X#cR) zIJvZH(|El4UL^bPCxHwbm(5DIg}(f%>H(~2cDmovZ!?_=)PhVPNntmiqo+4Rtm-Q= zxL0S3VKY-r?!}p?=r`vVAwx?+{tWYwj$;OEU&Ru(MRVtV*gcNT{@3`Xe$X+W7Lq|9 zOwK>P)}d|0;TJh#%RzG4@459%n9YLGHlGBIKPJ6B@Txy7RY=gmgHue^ADVkd{GN&| z&rz_nW*#Zt)j;mC5G0HLhDJfGX1IqXvarH)jJCQX2X^#GVXp$k%qk0j9AGV-kv_xO z^_O_oe3lZXr2&`k_U72_cm7Zd`JwQ&mY%9(MDW%X{Uxvd4;KOC(&W2x>4JW-A}D|z zI()`MTLGpxwF*qg{2}L)hy3vHio>Jd^2kWZVme@z zZ}Z7AeMqSQ4NXa`o)iPCy10zYegc$*|7WSb*MqoRwc*4@Lj^o_(3+f8rYs5i?>rP0 zVUe`e_-$1Pk5&EojoVCO>nF5YgDhl#*+%Q2UrdtgOO0fPNBXw{2kx%@JsULzT0>${VJ4%k%C+UluP2WwG=nq~6FLTYh~c^sS%BSSjaAy-kt_~nQHc## zO1uatW5V{fgqlCd7D+xN@a|>6YX&}Ss~^Ig8U3m%e=%I#Gnc8LAZ~I~v*V#Em5q>X z(NriXqe>*BWYQbuAD3)(sYhn~+K&oT8=wSH20!vcFsH2< z`=?t+%L_TjGIvM(y&K$I>Hab4{NM~BIT&)5ol0gt%U9rn-fKG*f zKre4(UJ2v8Ix$Gz7UL(hKsRwcU{=#eghc8VWut+M6puK?CI2PV?BTSTbtglWm2dK= zE0LK!3vohQPPtZ;gJ@&>f-0wEG3i`i}036RC1)?pPZNo|D|v zkWCiY!429pM^m(j!OAB?40GyKG>yeg@!$>lK3mrI)G4q#?r>c&W4(ewndkeZp)sW* z`+-jNU($?eH~Xte4?oEfgOdKTyge#a$_f=#mj_47@rVBoR6QwStI9=X@r@Y14EOX;2Vn$P#5hW;ea43wYfVn$jjXcAUxih7+N zHurxf;PxtvgFd4sdrjTviZ@n~G#`%W-Lo>4Lr>bnCD*UoD9j!rm4MMjcLfT0g-e7a zVC#S3+^4g4gQKtLo746>Mlkp}<-ZmK(1O3j+S9nTZPb;xYK9+O>CV4Z5TitF52iy< zY`h$w$}5(;!Q8|Hq4f4fi&1OYy0SXMbi&Mae&6_Dmr8S>8G7Q z&;MZ_MEF4XxGctRQw|*8e~!i7{fa*i4JMhFx$MxXcwloo4;Pz z_2;RZ+y*(vpSF|4BDEHe`l!37ENb5%M{yUMav`;oQI5BF=5AiJZroOwYY)Q^TPa@Y zm+)4Uv-*d1=c2@W7XjJC6ssgr3e&rj~mGlc1Mwtr$( zd@G}bUCVgLg)>S_5gwJY`|7Ua0xfKL#>%p_wdQ&kqa8(tZs9w!F*hGS8@lH@HD2>ysjBdp zigf9>HEpvX0A!oY0gTcYliBo?x>^*O51>`D>y-{Qi4HaLlMxeO<0-aZtZb$dcA(Vq=5WN9>_ zp^Xjm$!(PyM$bKNAr&rUT)kPh5tb=WL~x)PEoKq~R4 z`pTgf0UiPH68;<4Rrr2gX~U%@w@vXt3LB%}lKk?PGR8FT2IrV44F-cUu<6j68RHCv zJlVR?67dno>RQdAA8C}HJScRhi}Qp30^7L$jw!c>kUexk)viQOUFv@|8v-O2pw21< z!%NSw(Q~#)l+=hJlDt-?!Xh3|ABr6hVICia`DM!DT%7{$44Q{)f&r0jNAb|2{ zVV$X4tuP!9%qzk86d0aYE$aZDr*@9Y8U3!e4Z83)j`-Fmo+dK!peS)I0QP&T9?2bU z;yWDFsz~jrkZU59QJ{;ud?-Po$#R~^lJqg_9#*f|%K%vUj%Es5C*vP15>x^>LK%M5 zuBZVDDz9MjWB&oU=#zRyH@4DWPEs1ATo#)R z{dA$4itQ2D2o~$_{<#kB6#S*XB@KtZvFiS^moUC~u9{f66ms5NAZMMQjMJ)iSaCOnLySn?GBc<-|(+&@kxV&dnrp;YL zC%*b#lOS-3P8s|M`dqOiwjCZ}E{J88p=#@Gv#J^e81B`2S&x$SkhO^wR~CP&irhq# zVjE+SFI`r254e1ogb39-_a>)lf&yV6Ac|={6{=61X2SQ4wvR?0Pf@pt#Y@xyGfgYv zf2kV4?@r86)W`iBzE*KZYWL_%TCOKtaxCIDQBw}FM*yVL4Gce{_$5v-!t^u$5xr2M z9aUXKr=b;RyWr2}>5EKVFq%QOjs~<8<`>crtg5N~jU`cEK1lUdBNg;!?-%|NR@#z` zVz&Z$)}@xdML$g?&I6}TA6 zts}uH-E<&9OYc0Ri(pwX+Op&8_#*;tJ@7T{9Vi2d{^^o;x;Ok3fCrR(TbatyXvGJ= z_~R>Ae_4k6gJT#BlT12dy=9(vS01(%M#zd%g(N3v@(dX(Y;EmFY!=(R;QHJKpf*cx zymj?b*kWa&0Nmm}r*pvU+ zIf^n{=i`RO8|x9@&p|osry5e}taS+}&N93U8SH)`j2SRyV)0S)E(jbS<0f39f@O#uLH`0lpRyI5F> zB?2ol>Z^DxIb?;{IUL6pZ|2SQqB|U)5Va*4C8y- zC8%dZ*;uuBp8kpvQ%@&_b;HrW1}~mMt{pwT>1;T!XYf=+kn|U5c%SiM42zJ3u_IRY zqPO|;&dB(@?7OEx{27}En4kGJHrQlm0& z1VTMjDeJIH@tb8Jae62F;2t8XF}B@3SYsNVVs!{9Y7nez0PYPU!i*S-{42Wq`3CII zN8&%w0Q+~z)gE{|<}6-Aa$6y2Ww)Xv-l{CVbsnwrLFEibcuiV$E$UBf&2Oa`F}0{b zxxF>+Mw8{<*zWG~$lN8~(7{7H_DKw-9m%?Pknc{-$#UG(nENAw%uw!yit~&`a8`Xd z#l>D=nyUav@p_x37dB=LhJ${FHzk` zOQQtE7IP|fa${ytB%2C-Y2^=Ie*3S+><>)C z7S%wpq7S;|=Ku177T*iq4yR19t9&eEEI58j z5D1t}!f89tIeVcr6`><^Pyd%DJ>^jO#NH;49{W2VN9!v8{09?zd&o~Q3ElGP9~|p5 zyX|{46iS6ad98m?u`+z=8K5`1G5?@zo$lK3J6bpv$4&(OLkUNT-p|TOf$RU_T-nZO z;Rs?;kysG5m9O{*#j9hqm}bR1@eiK&v#w`gqV)IVr8BBH>-p<5`nPMac4?pU)Z2d=3=J*vs5nn+?1jI{0}7LTxS{K zoYQ_&CF|&RJbUi^1n*h&F9z5Z9k+SU{dCtnw@qoB?*Dt^3DQTcQ-%{VHNT}_lv22 literal 0 HcmV?d00001 diff --git a/external/lsquic/docs/rechist-memory-layout.png b/external/lsquic/docs/rechist-memory-layout.png new file mode 100644 index 0000000000000000000000000000000000000000..cdde72a1000b0b347da3cc3ab4c4cbbe308fd410 GIT binary patch literal 12524 zcmeIZWmME{_cp8uf;0{x4FduyA<``{l#(JbloCVdAYDoi>3|H~Qi8N}O1G3WL(Blu z-SG_f{lBm4e%5-{y8a*E5AT;*Gr!+??!C|2=dq8y2d1v7K!i_&f9K8}A|*x8n>%-~ zL@?hy@$O?j4QphA@7#G_p#+kC>u$7_ikmBjG((1e)$pB$w&V#@@ zwul72tQssf!u$lBdnPY&u$41_p&k=-zf0@4i=ABNE_dv2jCzQgD>BtxL}QkI1(D(!u;R=M|S8ZIDc+ z`WOL!g~1S%5fC0v%f(pXJ>HImYG&J3G^+Ie*`C_z4sfGX&}Xn-QpF;E{#p!wvXhfB zwSVONYGA}?%K<7jV}mhlNWaN=$@DxLt%lf1sxi&xtFM73Gb3#D1O<+$wp1?b?aY@B zB!2Ec0^As#h9Wnd0B)BKNjX^yer%Mam#*_w8Rhd4y;}=8Y&vuc4!-(B^!;!ATASD= zZq915u(DDgoG>Rg*e?vSod`z@)UG|Ho1{umLu}VRHBAkXHc_6lw6;Qn zoL4HuLVG9n)=SHa2^9E2GH~FUK~<&r)V^n59;ct_nM2=+@@%b2sdz`bf5?3=foh0T zz(H2*OwT?Q!c=+o!7#Ir_0qvI&uX8C^YsUR36;IfI9RleexJ|4$l#fFUx$6-Yq~g+?M)Q6-&7CHbD53+(Jo3k9Wlrr67M)r~rwe?gcGoAf)t@(8;^+ec z+#+tuFTKz=Jc+s==8czB_dtF3`bXB@>SS}^?0)_=)9x$wtKGLf9Z$nMI(<*b_r?O# zRtMqakyH#2i^@=P%x8PnZU)uvvx4ZxK511IhmQcvx{gP@PT!W(= z7j{f28=EcvAzr**K}Gxk9%x;>s>8X%>trSOD`=&;ve`N5o7wi?S8`caw(*58!mYq%U3Ik8<6b^9O{VNI zbS#kmFa+0)onLIaSjh;wP)lb+wd=*tb|p_D3J_Mp73f~ubG!=61i^tvKFc5pxy3ar z6J~#1@AmeM8qz`bsZ(hHyX!+D)6kOK=Dlx-kOX0HLcs}M?la}tOv^6{8k-9=5Crgq z0InQt5;vIcePbv^>cm_|bsZ zQTEz*h+Ef#emVF(c!OIxnUd~1FEgc3rRnlx!kRH$wCf$MKH1BV5}Jb5`L$_ zt`g-2!3WE$VH9n8Y^vo=)BDr_h2~QgvR|P@zvmXKiwhE-kQW&`C&EG=bWa(}4{*!p zIXrts5X#7a_2{>W4>M5eU4k%F$!J=Djq=1s=eN$7PNntuaiI41naj#6Zm;W$MGFLW zY8~{<`$!0>5FgRJ_ijtf^}1LoHh1>rkxSJb5kXe$hZ-3y@~Ab!{GYArWSR?I3Bs-W zUKm3jjfjo5pW*c-lf|)lCb;`Bm!;dL7aUfqXFHe5LcQ1^7Yyfs+xT z4Pnm{t+yfLDk-wg;V^)ol`@$Sp)9kjrQ>UyMrH5W{*RfaHNV$&F9`oO>U z!2w7V;S{@@*W=wMZvklL_V0v)Ro*4I3*t4?KbShgVSULrKs78j-VRH{m-E5$kSvmQ ziH98!g6}3}>NDuQouv}dtF#?o4*TY^gG`QyAK;qtaaBkeAgXKsp_ihv^N4(Ovw z7-vUI0He*-=a7Ok>yE%M?eC08kLaswHZcff>mVPXaMdU$hZE`dg#VH?rCgV;mMT6$ zI3^pfwT>=g=HP7?e%p|Kn%yfgYaLo9kwkC)V6^UM_00Ssrh>!<2DX%4$ADAg`&6$b zILc+f;3;04?~Q{)qM$fp`^$)9ql|YGbikU?BGZ&e1*2MKCJ!bbsW~J7X z1b2-#D>eqi2zCdlvV_8BDHHPqLPi5QJiY%OP_oc33k*-+9~7Y!e)~0)lIy9SuN$%- zN7|yONNiqgxi(*`@HcV_*=!)nYWke8;|qjxB&+TBXB)g2y9Y{s#!E+nkD`XzfBbxD z7INgX&HMB|1re?|>kB)dI@r5hvBCB}5XU-=O466~>Z4zVzKGP)^6gsmXZoAra)?cg zd-&ZzaN?5=az||-+pElO95TH5l8#?}R=J1!-@Js~}3EQad zao5sA!zq4*QBrUulg2G7@|x#cp33(LiE56ORH7DFsrVwbI5w(sImjZ%?aJ?j z#XG9_L;9P<^NI)@mJ%Tv-nab9y9@1D=_Sd+y#@J@B4okAH$Ql4$qV|JCaUm?N8q=^WST^Gh`){w(z^i z*<~oj?!P8xaQZ0)S=Gmb$s~yHIQkpbedT=G(MQjp+yb1uXT*^(x3 zB4Kvwr&n#SvL>lgO2b=G@4j&uoTW?_kf_m60_$iYcOfvRE*HNmqrf7HxvhX5m0}GJ zuaRUrnw2)l#T=NM3W?~v%$nR_Fs%ba>hpDfx^2HxUX2rmMuW2jX0iJ-=B*|aA^`iu zhc17niOS&j*Iw3mH1RskM*^`Q`1i*w1^L!>8+&F*uSO1YW|pY)oBi4@O<*HaP5q?~ zsI;2d)-86(z@;yJyBlyr72-GQ+=kTlbB#$x`DK!ov_!k_YGP(p~y^@$Arr zwFj{Vsm?t0q8zfPDFU7;ETaXGTJ|otGnZJyz_oAsdGg^>_#w@@NQhcqGxfvJX`Huw|2K?j~B|#`D94teOZj+s1(RpNZnlxaj7BaxU+i=tlgnEF~ZlQJ{1CR(Q}yyIoYybvhnD%ob4XbnHqmDo-!!>U!hA_aS}_O>+IE z;;Jk!4Ip4O!f*Y%L9Wtz!oGO^siAgw?vTELR!DrP>z}H+XB*{uC;5;Y1$XO=l$SjnE=u8rx=9`NiJ;`OzPGC6}OT<%XXXK(Rx?y>nU2ZEqiK8BhKUmNClp zWgJGA#lW}HOdVP0SOlO=)!ACNZSwBhat-V4OO{)%bs7|lfwGh8rgL+Y2# z#b&SF<}O;kZNWM#?MDUIM;+$Y26%2Ba-AMIWJjfH!|J}zXTLfn9T&NzVz0OBQf+9o z_EUl%jCj41!+2MaY{*ue^QKzU=`(ioD3LSHlf-=0@UXCaWF0N2f~rx+#g{IYf{lAA zcGeftQ?^oL&%)Duw@gnw7R>eKF*j-$!h7FNwef(vnT@7yBW?Jyx;b>PW(~huDvPT}6feWb z=KEIr=jxvJ<+)>tNjWnk?~@a)s%3@L9nc_vr(sKy@x>CT+Ap{|=3+Hry2^&puJLM6 z>&%a+#V>SlxS(O+{R&G(KjT@5i&7*{1Na3YjBTFrI znu?qNbfdk$#Ig}BHq`FCvl>5*Ch!JdCrXZ!bVy$^IgrY+;dy5(r=LoPkv>uU$^~ZY zQ27Q_Al88^_KAuRD$Sj@#EL-hGJAQ75uwDvv8R6Nvcb5>WLAHWJ&CWqG?}{6bw;3B4FZTqx(9OpKMe?o2k<3m@g6v|>WNnWBP<2RUG!EpQM0VK0*NR z1q@{jZDT?otghm_71`=+9^&NukE=VRh z^c>ox?JdI#7DMryx%@3pu83WZw0COFD_b)LW`B{JtTiPPd|QufJ~OfiVWs6O46{2w ze8=N?{e7r#U5g!>(5vbb7#l&;>fEX9*wv*@c_ubDvG!-Z;9DaYB6K6v5RW~s=1A&2 zLunmYO772ODnx&feOnZoLe8pmZd}kvEG{m3F|y~eQHI6)jD5#%a(K8^fu7OOW7)9P zy0d?JNf%XhtxIZG-XDA9ta}n-3b{{R_>3wB_bo>wpEj0-E+$^f@&mK{vptZlVKGyj zRz2Yc%Zj{Gi=cnll=HoyOxk8vtZjNCoUV_#C zslCcmV91F?+0~&(ctANT_)mgogTgBWS9G-ah4o>JCJ)Z>Ic8|+k3!+iz(~2ke^?mu zxNeU>jU}@-bTK;_PXjg65*RUXV64$q8Zj>9X~Buh#~BUp1j;xX9l=YkS1v5qV+m&K zC*0$cIERvmI!Hc;FkQCP@0fvq|LqIYv%Av#=H|ruHkxh1|Jx^Pz*6GSUkmtVueDIZ zA4)GPV1VdwidGK_S_>Y}p~iFBX#(_j5^?J9BM^Zd9t9(;i>3Nzl6CWrH@j`4B|e)* zqrk18{V5?ym!0z0=f>G8RgNWYaF+@bw9}Jvg@t4jmaQ)7w&=c#-mGahWZ532{_3pQ zJ;7<=q>9t4412qn9r#~9DYmYA5w>1=z!R-1ax#)q9o{w}bx~2Vcb)h3Dzi2`i;w#{ zCw$ky^N6c>aUY__yUT6r5Y;bBCeQJp1#f*wPxrG{-&?w4lh?;)=@v;My z$6?NXbuQo>Tt0MMlx$V;xv6QlO;m9CWR(2Q^bF$%G<&KK zOseJSxlkaBJqCEyW^y*$VIbEwPLl79gZFjzj5$&^8tOo@>bK6~dYUe;kv7z#f~zp6 zy#qf{LAj{xL_ik6eLi2yx=B-X%F5V)tD&Z9PQEel*TqNjku(%4Hs+3S!?1p z-B8V17~MrsbIRH#Xa*$+{%qP)D@G1x-c>2%<$|}hQ6u^G`@^A|4H+~S?e)31Gh>uf z&3_&1bY2_b;Y)Wbaj_n)NbINXu`IW5`0k@tI)zS|}KWyT< zyM+t{Jf=C>^9AV}?6fSS)saSwBDVULWNaI(9;KbA~zCE3*R$12`JZbx3vZ@1{GH1+$6zvIbdY7Jr$(w4}z?Wy+1^9ka zUM&H&{=D_$&>6$a81Y+N?EGbT=FGuwaohNkv%1Hh&UAY#vm5V|!#9>KJRdxg7nKSI ztFmr$qmfwMbrI?jwJX0ZXXssBj@&2Xu`VVxhnyz(uU?Nt<+n(p_g3fd6w`e->NbMB zcE=8QoLy>~3Y_QB6WGYc^2?4V7WF%cyf=|_Vs_HY<>fR)%skQFCI7vi#A@nF7epuG zOPfu5F~C*CMY?0UnuLS$perklTGD=k4d+>k8j49Zbm^A{TXl!h_nAr;({S%&VBYKM z@qq4rZZGcSM~6p8ImfonV7rWFxycJ8*wr@kQ!-o-)$8prVaHccbOxJuUF4mOkOHtFd^hYDg5z@N z_a#D2FtdGmALbZC-12VI8bkXsMf0E0$AG+D=bini=nX5>q~f#Sm%h^i zH!l^q^}7ZO?_YeJ)xo2;D&d0qz6n&62HN$!cw+yCLga;lu?G+ry13bd%q(X4CQf>? z?96;BikWh?Ykh}iXGhM@>~iaXrzgOWU$sRc2|p9BvmP6$&7lBR(}#oI0mler@)F}W zEX;n-rV=3xXWhc15S83{S4=Ca{j&wiD9IDh{?5TvF^u?!8}eEekHz1t+)EN(@j~3K zUu)ZQ`A?)NO7wuNy9k`m*wEeMCgsF4!n7|1JLTWkM;9oJMf$KFEbh|s{j&T(U1zR8 zC65A#1U#SY+sj+ddsmKf(BP?c(kVGF83wv9^7&^Hs9TD;n^L%r_Pjeg5nzPNk0`3F_8;~1;Y}HU=i`T=S5l6Kuj^k zf;rkC6bf(!g8fN9O&`NM?g=PwU}VbjS9FG6D5QH081C41eWk6vNeZQtm%*dimAaZ& zIgwlsB=HZ)xFho6+BkaoTk#c3jArVcZ$$sSnZoo?pDO|YW}$u(e#K}KG+9EsqwGSsjr;@C9OupSV)YjXSHa;$^X5LSaJHw zzjiNLg?Mg|O!HeRiYvTxaUMJdp-Jm(<9S}_PyxFXMAy6_|1%@32MOY_z%Jwv;Z+Y3 zIf~p!Ba|JPtf24dh298|iSSROkV;~x^WhY_pqC5D>!IB})pXcf!Bir6WXDQhLG!q2 zc+se1!kP2gG*lq%P*P|L1#{a?rPkR#E}0!DH>a_x`@e9`6KnW#2#xE^$$O#Vo$6)S zLos@a^s88LwcZFdlLHT0*39#6f>c7;cauGOT~*@ndrHqu&2{(1Dze;yTU-&0V8Iw1 zxv+(X{W5iUn=S1+I{Xy1{PW~yAz0C!hWW79G0yKNCd1M#?G3p5#dQtawb=!;dYGjT z3ZrAd%a7+-ij77olO1JhIx3}9X~cQpV8$rfCGCpm>#C(f=~bixjrfmW>5>5vUlEZ# z6p^hK1#&2=u6Vj-6GhV2H~cb7tpr6ewtn8qN;i~~dRkq;wcq%+W5BHC%iIf-Y|U)u z&2l}r6OpNfa(Xq}INWt8cPSs|N7=RZNd$2)0sGWl3Lw;dB##*O{_Klg(&3kt1%4LQNj(I)6_=8FzCs6cbUx534ZzQM(J2FpiYLJQzE??J-~)h7Ghu zpHTi}7Ta1W7Mpr``hy+e@;#?V=1M)k`xBnRzAfrAHzwat5<5(j3$J(=Q=#N(#*vT+ zR$`3dfcc?LC}j}v_cxqaNtLlfA*rFIvup%V&esk^a>01sn)Ddr(h1UB)cTepXyit6w_NA^ z#ld_9LUjuRyJ2*qS$plg;sqXJnr=$2 zC=-*^yCN+2hJU)TSwt$1fSs<*di%;N|D*L^nk4;H=eY0XkuZ? zU?ZziQiFY({;;5PV>wV%I?W&W~Wga|`?m3$7+u_3&J@zi%_fcAdOtTb1vsE4xGK_DF8g`VTyQOvZ#sX*C@c6Nb zPKZxt8?Rv^@)s=hPO>u1DWRyymn3YcFIx#6*Z^H9#OP z(B$gdcp4$m@JIE*Lx`we@VCoSHrAxBM|_zOo(!v(-o>FLLM7dzA{b)urIvpKd*nS? zn{sbcVP9_9YpogPSGs^e)lY+WX@3R>BYaMEc**Nj ziBS)d=<-ozpM{@L;q}MFb>(z3U_h#ACJ^^U&!>&lE3X)2PXGy;&}LYbSNSm&K7{_s z`o$qWCCy{&NW1akxs>nRzk5Cv@vk})B2Beez;R6t?0O!Vit2-sz9^@?^Fty)^vWO@V#TVG73G4MIa z>2jC-XQ=2T`uI$7@WBjUc&k(y1%Tk_-iiOEoj4iUnapa6*v8rdF3lq9dC3iZES3V| zadsK%F4O0R=dE4iXJw*L!c%7Ct0^$xKjhk5h2oCY`E$YH zh(N~@M~PLNp>MqpMTC{p7L9udfbuW%HFbElzS5)T7i&fpCt67Ub|7z2oB_(Rs|^ph zR&2T}GTh{0|3v*fg(9TqQ#)**CiW*iZsdDK_y6RH75@r1HQ<^ihl3nW*sD3p>FXg& zOunCmLV*D6CXHOROQyeemb{!Q3(u$j8ltGM=f$R$)}cI_c4s*D^grupGs${x1SD|f9HRS zFZ&Dg9>YsVVJQ1}&Je|HpcY}7w+0PG*!_qhE-$6*tmoMD#kbV!pGR_RHM9Fqt=@jc z_r2-+s*!2gl3*dCOhXaGyyh5($%H6&alB|1MKo8~auSdid_-QIAg&;vWQITT&hG=Q z-jWArv}xV$aQf_SLP9Y8yV7Ww-@E+`a{P{R>8}Tx0HjbD)~)KClzLR# z+BnjiandIFR9aMCgP(~E5p{|O&d4W=D!+_Hzckk2ARjjcV7h>kC~%n890|~Ws3Kfa z5B|ks772R|du=E9I`vLTPlfFthoptk2-(xAU^1ra+B2wxpm*dQK`vZUWeu(6Fb>V4 zM+r|}^z5?$N?w0e=g=nXN~n=oXC)wK_9w1Z|7`(x#uS5ORc%ez`xJC*yv<5Q+X70m zM`gb}!N2!#*A%2f09N4#I(!LbOlr*CJ)_IS16}W^-tGDn2S2LyASy#K&Pe zE0zLxMA*{MjxmtzSra*d1viuX6wNc>xO579xq;`M`-a&&KlIpc^|Hwge(6e&R(<3m z{Q(mU$lqRXhn-YXI7jiAd>y~*lHG79+yc~<>TC4jz$Y5lg-K>P*oy(CD!%-4Ep%Bm z@|K2No2MSaIa+6)x${9E42F(_r!v@}-TaL9fl#Dn?OT9yiI$5}*Pc z_llDW-1NS-i9-`*B8w@cq0~F3fMCkd%-<)5OX=CO6Oi-XTIUI`*otbKMUK~%ko~Y9 z{e9JpDcJ!z_@2dotHY$D>z=W9K``YR@)+L3<>)ac1hv-ZLN{zfaH|{7{lSn z-!iGz^I1QA7<_+Pi6EnEtj6*+#=f~E=ihvc%*s{i%O0qnmn0RjFoNb(q)Hu6FVL}) zX;;tQ1YX>v@B-eVI1o5lqU;GZpN#if#-ZV~;&qAcpQL=#mm``;lr!_65%TU?FR~NV z{~Yu0{)5RnTTWy0Ws!-BGlX*;Q#-z!)D~V_6^vN|o<~ulA2toNNQ@-TuJenOV%J(& zqQ94Kl~3Fqbj2idzS;6L9MoHGxlFhn2kqRnPUVX8A|IrDuR@CG9U61Sm^WV9kJ%kD zeClS#2fbZsN_@tqjj;|NyM*QaRoD(^iC~>Bl}U6Q_)NmRu)c{wHZ$Mrkl!h4FdI>b zq7=ZKBKyokpv7UJlE`uLw$IoU54B(HMgJ~EI#0v?`FqB;V-b$0JPwqNm#yiutC&D< z5Z&JGN$5}(&2HpA<0Jow8M@N2FRj{GXrD?Gni7{2M%RJ=(`_56KW|Pm|BGkP?%HKOWEe2l3;5N=dT3>H z`K($pnoUZ0^g*_4Gy}EER#k9eS1A>m(8D;kt8!tYSqq-sO+(MgBe*v$s;1BIeyKB0 z(*Hp87p5SrWX=f=xk#bGB;xH#YgTX(B-HfsCAHn~io&nm(zCm@7*5U5NL6xP(5|ZR zb<8fNmSbD&Dql`cj^D9@E1T%P9fAdVn;{#^yYX!0l?IAGg_6tN!M=lKkp{zQ`GE*< zw*JB`Ofnd9kYuxzC;z)ygM+-|(+a{=MLZi$ok?_jO^C^cgY&zYjT46YlIK9%QEEo! zcoB58?>Zwmj~C^LAM_NuZc%QUE?)S3IKr%17@>p;-P~Cm+JUR2Vz%>(YFnEVw1G~j zYskYs~Ms7GH7Q$r{BE+wpJKo`MbMzb~@b zRFdTH-M3$otmq_?RoSo;=J33YydwpiFHc@d$y%@cbekQ6u1lW$w$Q>L$8b+2IG@#e zgyqmZ;&3*#WQvrw@_dXBz)DE`QGy;|W01Y+*$4OSvH3ngPUmjt8C5)IRBH3mkK%Lk zCCUn3UaUFhs}n7g(O`TDLdYpoo10G&AUyI<{%1-)fegB{Tj#CfxHVR_>g#U6fYpMI z9j$Seuz*zNXHaMNA6Qs_PBm7=E;^R&i@tf?vf_ipg#f<(4)Oy`sK`nx@~m7{H3qZf z)OUExve6z0K4m(S>uU4`B3j=F;!%ut?AualAT=I(wLcAGouqQ@j-?F`Dx+UM04O&! zpC~u@rR|?eF#mPI-j<4UytxB6g1UsR z#nfw-{C$sON~|*#$@-g2LQ|%6kIen0|H364w-v9D=Vo&A3>zDtOWHie9!LHKBrx^P z_;T{^bIi1r%@L2Eal~`}bxYssBBu@*@Asgh1TehXIpQBksyPIN5S&3h5h`mA6K99dUE;MSVzs~-T(CqK%=#d19YsONL6~esJ!3y&)hC51fs-R+- H_x}F}j5BpC literal 0 HcmV?d00001 diff --git a/external/lsquic/docs/requirements.txt b/external/lsquic/docs/requirements.txt new file mode 100644 index 0000000..6c5d5d4 --- /dev/null +++ b/external/lsquic/docs/requirements.txt @@ -0,0 +1 @@ +sphinx-rtd-theme diff --git a/external/lsquic/docs/stream-http3-framing.png b/external/lsquic/docs/stream-http3-framing.png new file mode 100644 index 0000000000000000000000000000000000000000..e315dc269bb9b0bdde62bf4bb58b2d60db0834ac GIT binary patch literal 22699 zcmaI7by!s2_XaAWfP{4D(4ch3NK3bblz^llJ%k8DD-DtoLrY3`Gk~eh8T5GSp_PgI5sr^Wq2>&krwQJXiR8t+(|KziYrm94FL)72_D64d~b)GMnx`IUgkvS=`Y3t$>9&tBSLRg*3xWnj4&cUpgIQONr z7(#~T>LZm#?MA2RyOf*br*3m6&bP_s=Sk$LswgJzik!CSPhG4aI_ZA5ljGowF_{R{ zyr}*56&h}zyKRp~vE&&q+ja^&j1`q1gINJ-c&Ze~oa5!^pu0^UZ(y^pf+EH!zSL3Y)kH%6DTOtSq~Qq$P0XZq2POerWG zCIUYFdn-8M0C!F&<8;?AHQ8aoK-8`*MF!@atUP^XuTuO`ztD1-57Ei-dx&$zM(?GO zCKRP#if@S{;fGhdefQ$MhWOIK12>fm1T#z>N-)|4wXm#pK$#DBRp~(9^-A1#r~wG_G7X{ z)5o`bohq9XTHF%8$kCC?+6jk<&;i~DGc5X@X&A-uMQhrvm!5PIs{5J3J)`uGfPkSM zdr9wF|6K8}h6%7HMK<0jzncV+yP(Dee?L_{$QRRkkl>fmsmilZ{ODulVKG2n+^sQ% zXlZOfUIR!_?!{fPVL)DCnI8GuCaER6k*L3VGYde34rvXPoOVlwE*eWD=qZ61)1Kwx zmE>sEf^n9LI&j{7`Gd1)N4j9fO=IB>Mz5gECF9U)rZV_q*;gxzr&Pq{{zkn6S3hKK z5yH@J`?h!*URXTU7%b>A18>-nG2(u(A@n+0>#0tHjMFS~_KfAZzHjnLjKWYr@Y#;n z@iE)8oSM@1<)1HfN_8p!voc!(3|uUGI-F-wW0hy$WM=gZe$Q%g*S9B^E-c0%%&{NU zWA*v9O`cI&tyN#&<{-QakxN%p;@%!sDibEgHQ~&tiIPp|aEWHut*wV0f7G!#!KdV7 z>X)w9zaw7nh%qS8vlnn&5NIGGPp#5sYS;op_73QIL$vE|IVt5!O{F$|G1t(Turb1vDWubsakU~foTqWIvsgYz3Tyw3k2kZZ=;Ed z2%Y)$Le-P>W@nzoKwax}w^E!HQw7KsR!5f=%PxY?M#e<^b$ijydp*92ub36jM#OBl z?k8|*(Tg~lz@3hRjtpz%6#tJkU;;E?Ul0{P1-q`Eb58+M!mr;g(|>q&E|^U**Q#$q zl-Z%dq@F59-0O&dv~3bQEMho+8)**Wf9|G@30oCL&aO>>6fU|IuV<5|`~FNyuX-LB zNF!bNXARksOOWy!0d!vi;Z4x zyHRq`w(K!Y#2!Ov(*IAd!HXrylg3CJ^|!XAPvWEpuN`zcehA|;FFUmKWJegDA7<(K zvSY$5HJw-nCtv==qtwsvU8@%~<&QLa5wtkneNX)u2{NnGoj=*2;ePR1N9Oc(XwkfH znY0w!ND@v>q}`W_R0n0fO1pKzyxC?B2N(J`41eZnVxkHnW3u^RR$*b?L%)D9f%jCJ zTQn#Q)Nv-;;QjC@e78rG*+P5*Px$%et%<;IbN4t8B3#Vf(WU9?VDCkIfz=PH4PUXg zyt8xF4N7wL6b|-17X2-xv!v-g=6}NT4JyE>1=$H{Hw>?cjLRo`^AKL+{}M_zMdDrF z2D6Rk@lRwcTmjGT0-5Z;SCbSe=^UQ28`a|vOB{5?s)d9Sz=Irr0--nROqbY5dTg?< z)p1hee;LOLi`m(*P#h-lf1c&#CXGW&bkMQd3RWm>Tl}}@TisSS>dXt|jN|PkjwEJ! z>`QnwBQyTXW#wNUZ=~z#dni8u5`xignvh{-(Dx=4qA&30=E@5y<9Ry|lMQ;Ei0{Fq zvI2UY|I3{QFqQ^I&i5@WEX*PhC;Ub!FKETM6L5K zC=#8=$>iHb)UxYb-(Sgdl6u0Olzqs)zm#8u)-Q_akWZMcNw@u{52DuCA$OXFV>BHM zZ88>XQK&TMd!yb5g0EkqGGBspZ#e|sW6oK98J_Rsa@Woexh)Y`Ekpj z{>78gW_9ALj56x6^g@3Ei}H@PF2TTu8!7DOviH96nCGX+L_%Kvm+TYVbH;C%+(O49 zNJ^kXK%QRX_j^M&Xpl?eZ@hEi5ZL7QR)5cA;&RDT-`^5Q38govIPb2lt_!=Dr*q+A z!qjdR3(WX;>opK75mVl={jqy*MUj;_6rB+7^|f{)@8ytaY5RG#&W5)W%k|W>#VPNI zKZ{I4t)@f7H0(*O6{@#Oz#N5 zdhcqE>6vpY(EzK}1~w*q&8)qVZk&WC&vgy^AVX|nH-PNF85eS0L@g(2&~ZB=Oa%d= zH2$*+-|7=6IkB~_|6f^f1AG0UEi9%c=wH#$TTnD^UngMjzcw(_6i!Rge*Aw01c}7D zE;+K_=znEI9tWpqpVJ$W|CJ%>?FO_4sp|%?S$yx!M7{gUWkUp?1ubP8HH0K>z?uddQuoXZdE6M z`X{Tm?OlL9)Bo#9#(1L7S0{}d|8(BHAE%-(3?i4U5wscBbDaBulPp5XXTFxhk9F=02I0#M-i4{ls%)QyEnM{WLMCNS6z#bX9MWEIm3@Nd|+iicPtQ z(~n%9{Z79tQl{-^5#xAu30JjRNHci>E{BEa@6wUvC_#Cn;IDkuz>*h#8@-j+4gD)s z+FdnE^gpQ*>x?2j|D*=%iRAyT07IIS>TI$9Q%$juUgU4{JDeh4|2Ds&)5QEwe{Kb> zE0q&j8JGHxU9QH&q$)>Tviq-rW1&M@%w^K-t1d&dRzrWqKNt}N8`}N$AQQfOQK1~eM;2+ znf-C$%snB}9hnBw|sA83z|NVfE?VpYQRN8Wh5&pWN{~Uu>Y2g1GPwV$Z zP=6g$P(ObAuVYfjY~@)AX(xB4$e+JC7igQPgwA&&LG#PXeD)7hZ95CJ(#~0uYkUqF z_9CI%_d#OrD_@cpT^KFsdRVw3l?M$odPTL zp4-zqQkc12viAksLLeclZ`D|rzYZatWYZNdk(=jJmnUllKNG`VKz0{$F1BTE038w2 zo)}{0G)3Lf2 zuWZLTdzLL>W>ul5Str0^hpN>Qh5%WJr!f!e(PW3R;z|d54Q-+;s>a#>f8QsKyZryX zC(0B73BE@2oGM_bTK*IJzh3-qZbZXk7T-aKq(|Y3yy;C}qtM9tJZN-<9cqpz9XxcG zXJW*OP?;U`^5TSJv{k+=KG7U!KwuPDtMT9KfgvV`F0Ot9Ka8ubDwkn)3K+Btvm;w8UZ~l>m7u)CiM`RuRSN zJ)7PnG4hFne#zCHv%|(^Soxm;VBAnnc!1hCi$itJmsF!Qj=rP96_G|QmMz|!byKwG zR!r$&&P?5TxNK7goP&O*L#f_jO0M2zLD%VP!z1`5ayB-gh6I_>wsI4L^VEMa5B9(V zF6iDfaGP>9Tau&WVrVrsVD!JvY95znPSZrWqLG!e=AAsEKm4?x>XCdwxw)3*YyBS6 zCj#JIMotGO{nu&@VaT-Jiw%@cX0vC_nzcWK2dv&x_63Te-y>rP3^a*ZVx$Q=hUBxwYLhm<3465g z>z9oukKn9)r8Tjcw{UKNOW7R8D=Q6J+r2mMDCf9t2vw(kg|1lw zLi>i`PyM`8))q=4^XG|xST!wiK^sE_IfyD;G z8nNsqkS^()Cm3kV2S2UP=cC}m9G-hfC~k4u^sPx(^tGl1pS9Nd$L2%w6oE+w#1zs@ zvS*jBu596(bgcCcx$i_cE;DnVuojw#JN>6dsjp@@+yaG9$@~4m$X4sG{U-wg#t}*^ z&7a$~rh+hZTn)&MtI$)#yo@_b;X6rT0yKIq<6kT{mb-trS|t%%v$@t6jAdTxoz`@D z+;wX=rzuWsrlAAsU=n1X4^@9u*a|&e1Mi4+SiiKPh@3t7s5IaegXVz(!F-5jt9mf( z(I$O4PX~0n8@8AKW#@g2oEJQ=(5}sHpomreSIsE%G_t?$?m9E z6Yc4b!E)&7`H*iP8rq|fymzlJYY0Sps(F64M8De~nY^?Bp(DLK+_oIJ_(6g+`L5=P zp;DVNZ!0qRMg$W2S~D_Ub@?+g{dv?2={v}``G4&2dOdn!LC51;dV?LA=w8vmb`?rn zY_a2P`Mo8k`znNlA+O$j>GrN0WhKKLBF#IsOYmEdw(jqtkz76pJ4}zvh;mxL1w$5e zS{4VBxLB0lfbOHKVEMZAeg~`H$aPpmAXW4xOiG6i_x4tiEGPAla%Q_lX2|E-NPork zrO;&QmR6l4zNZ>~0nT;#=G^-~Uz09Pw&3<5AD1b%=qf5=eDwRgMx4C%gY8hvsi_DM zuZ7XiG1iJ2cGH4*8X@}v?-L{&?fDO%!-`GLT+#dfRr9sFNUtjADhn zX)*T~5g_-r3U9l}R`&5qL-n+paEAFGYt$M>0!VHKl;J}*}h@fJ7E3x^Hh6G)aBkGMz`%f)hgex6Q+TItqa<1}+S#6;PA zjbVqDDg%9+vH~tNcJ2$Ly#|7$&TKK9~eyU&YIyV>TVs6ESs8*k=DaoHkE zz3SVUqv* zpzGDTMt~+Fptzkq|32}2znc=D_=%*cgk=iRKHY3$m%fk zPYz^rEV!Ey^AboALRy(5g+nO@pU85&kE0xVT~y35fbC2x*>~L~m(TZIN$fOuFxfo_IPj z+Y)Z(g&C0w1iR#zzYnu>G~gwF`O))oa98aT?y1+lDg!@@5Okk6p77ca6|_bfIDKU@ zJ6>xGYP2@YArI%BbKQ?Iz#Wm|u;qJ_U+;Qwzvlego!!Z*fSt7?^mCaKX^7v6^@nAP z){B0+iPhty4!t-?;HlvNCiHP>2AGDo0QX6~dxtmXZK^(qdH#;#T)oBq&ni*K*GDm?$U`Oyv_`)TbYh|Us zcg}k5LF}6Dk|8tR3hJIBlq7NyAap6y zm$2GLH%+SO{i9EP5Y7}8uJW)LN(i*6w=;$4)M&Vk=4)cRy~MoOJzN(d z1|2)SGiUbZ?e2(UW*=n~rz(K=CPh8nFDsSK3ZJ=sl;eOWYAXjz_C8ck)EO7qR%1&Oa9cYl=!Pi;5mW5!z*RScKAmowM^H^>>A!DR$G9Z!gv7 z^A{L(@}Akd0nv?ho>J*+l*C~u%Wc#mE7h3M)R@&8?L(At!r+Jzg$`SJB2KcxX{$hw zfYpefC->#NF=u+U)w!-nDw`0x;(6zGX=aKjq&U>L!%FO+UFcLUk{{Bimb8D_=~$?h z#$wBDyuJpi*k%xTRKGdb6WHOoJ!+W5`S{TtK3|z1J;zP%%e)6)T~NmLTkMy-Jm+x@ zP>_gQm^e<@XTN!GpuFJm-?I~`z+n+o=B3r1f~g=uRKgaXA}%j1Q2YxXi`banZwXf! z0_b*@IE%7E;)Q4Z>c<3m_~ECc*h9PhZNoqVF8Al$eh;(C$e;6&C6^jd2P?&r=bW8s z1$IivoXP7|8ptP=X{*u&i?%_BGWa@A+6Nj%0gPo+^EgU>d>8FFATJE*5@XgMbQ%v4 zgcvvDS@6nz(!DqCcLR~%HTa+|hXY~w;i>+%WQ$^#+)e$_tu%u7Vkh>YLJ$&kgH)qO zWz-wWkEzPzCB~27?$27H5NZCJTc(m~6o?$d@1L^NDR`3173VL0ZAdH2NE*hd6$TIM zoK7_nb6}3j*cu-kPRE&x*#xakROY519ionLC*bgf_WFTQ>Zk^&#N~blr^DgNdzl;i zzIz98y%%*_Hx#yAQzIg#7o)Wzn*z_ngD!pvju_X9zjGelK<3#;i()y8Y>rd6#hQ^& za_W;ZT<-5+osyi>NILjE1O?!!rSkB-q!;76E38WJH8lZP`0Xvbu*j0BI1Ch!D_!Hk zu4UWx)$w>9-`&xJB^?kL7d7ul9tc=J1Xpu>Mc+y(#<08h^odq)U__H;q=4$nSmk>Qv_=SNK?4ln>0a*cU!>=XHO~ko~SAE zy2@MAlk)+kw`|V&Swi~4tuccFJ4>BHV;i^gi2>U4*S8*fyJl~C(0AdK%ZZ%Ix(GlX z1iE#Yd!ubXK+vZP=bABjj6R3EahF9i{Nk@X=ogswn`GXLLLSI?g7Q8!Kl&lzk6Z}b zdNhApyfd)D<4di6xQDBg=9}J zKIo@FPy;|2&Dh-YspU3wNhr=!<4JOI+?U#SzqX{Yo75J2+f7<1Us`n2wjc48KMuom zqGYzeR#B>BCVjv0k3Rp5C*X+^q`ddp{BU<{l`CJ^{*c)dw@7~Rsm}qmCrFf3)41Ni z%j$5I$QI?|e@>mi^8C@IB9&5&F;d*2&2o%tL(XxB0RdkOzcC6VruO|g6RgvoPh4nC zf-oX9K|_e;lJ@HO4|0vBfb*g#HAXVa?Ybc%bVWYAn2=W5K+)QA!%hCxVeb0dacHCm z)o2JyYPP{v#f+E1=v=>j#hJ5l7XsvB1;oV)L!Qjbl_#E+R&72NtxMkj^H!);7|M>TJXbMV9S->s_HUUWAade2L=uPIe%C5 zW$mR~lQec;QM>X)i+P)w{D3ckE$Zh93>5^Tf>%N{B!R8tU4;d;^cY56j4gEsd$H{E zMtRtnEgDtBRR=}I4-n}H)jcKXfx%2{8#`Zkr?E7d6hKiH``PoIMwzBE`sWSC^e$B7_ zaRYNU#NuYS__nBba-q?`%&mKyOB|$W8>gK76^I^BpW+BXelblquNKerW0tpv{bIED z(yt74o4@>7<8pT>1@j^Wr;O>#46p+A-go3GLwc{|gG`g=^$(h1^p#zjauuyaY_l8Ze(?6xCxe>LlzKabSpjl7S`yvo+g(^IvRnI~#-eqrK0K zfL*(AL*dJ`7{(-M&rc$Vc<`f-3++;gIOOpSlkJ^=RI!w1Tqv`zpQPkr&I{jIgUkv^|pM_~Qtthw0V{`-Gn8SCdLS8Tz z%ba~a6xk3!ljq{&J1D0Q$O5Yw%%dpZ-Z-BPsfTf_Zg-tf0?KJwolZB8iLhu2USpb~ z@l{9TjN2QTeSJ63M5H$`p6>t!SE*wAys&1QNtSS~ubQW3pDS$7L9Z9lz|cg|j;@Pa z65a*kI64vCiczJ-5yvMr0O9}|*2xmbFLB`?G2ZDpxMws&Oi?zq>Nl~WKTd(|WGz6; z$;K9S(@f(oynXR-B+HC@tv__oh?&%0rVNvN3 ztP+tyKhIA&2uGUi#;?h|sGsRS!dj5cY$I`r+Lz`TgEP&{MKX z9jd!dhZE^UXoGUyt!BfiFl|V@pg|Y+1LAK4jr>eU0sg@?7E7#o~BebHb74o zkDof^hE7utzJaPc&Z8KxKFfW7XkJ|%b=&I&8@;dW9U(te%i$j~_kS@#*MlMBq9&W^aiIgGj#%`+dWvVo%Sf#=aJHf)<0?av(THkSM_evfN{Hh z=uE%gsBWS9$q^HNf)11$;U({)=nIO4Zo~`#b(#VUOgLoys}B|C@vUp?bfP6f4A#u? zz~}f*!`Ex0rseLzHDAt2b3e4iIK#l1VD#ogK!-_XtO6EcR->`}hsirkV7EHfIsm*E*bUO4#QXs2AhYdce8tI?k^E zOAtm}U_>*g?HAF2Z%x&;rVOx%$h#L$L`+NLy5b#2m+sM4kvopUL)mgD0!Z9vLCZEM z?H6A)9tVXI!!jKXL%Y+OOvOBYt>)Y$CrpH9P8K@X(I)T_KDT0eHBF5f)2>+@sgl|F z8m?cul|D|vV1DZ<5=*|BE`5UPa&J=B22~xj`0CSn@-a|prU^i3c)L?~=VGSx6|U)s zD0F5+PdzAaeIS`wSzR#jU*$D_FSqlH^kJK*y^&=&J8q*8urs3B;QQISg*%>VT-6xN z)SEgJK!|3{jeGRoA{`9(;x4LY2qq9g)2CH20D#sa5@b-CjtQ9YbRZYhGG#`9!d5oH z4n<*dZo}RC-(H7;@Du{wbUr7vaCoE?+hOOCH@{oM0~rWzg5uvGK(SM++`PsS-_~1T zup|3N9Vm~p+9<)b$mN%qFwycxp)o$jd%@XYYAwKEV2Fy1O#mDJJvP1UW*|1^A}sXT zif&4tZdZ-B#HjFvZPqZ9VMyKNWfYcN1G?T>3ecdhv&a!zhk|a;6)Rhzezrwp=)kJK zZoiXxL#1Rt{_}lJJRz9-m-A%Y7Mci?ONu3IPT;Zqy6|CSp&d%FsA1g9S00W4k%cj9 z&Fw=UkMnbOe}jdbd?McYz2i192-9rf53F!$aOXtg=GhfD2Gz3|l{g$KIuH|ZQyrAud^(M9(+^)%$HNXMz(w;izINN#O+7m$ZGXs0 za7yAiR+drCeococWa)HH#uV;-$~6(oe&@}*V{wu^%fnoQkdfW9ui*?dh)sUO)5Y^H z602A;dKPeIHu=$9g?ZVhbsx%PDh;+gCR_1vi##X+1SPujq^cty_A_P&^aeylopxSN zW{LWF8S{~fkXD0?_t{}?;G87mMvy=M3ApoDmcsy?mPSN_l7`>ujrYMYL{EZh!PI{@ zW!aMv9($fiCuo~@dHQO3m+rHNOoMCwD@srCo5NxA%4Z1{2;#oe1}(C1SNV{muyt&- zZvMz_kVL4#J^xGD5t!PVNdL5asE z(X}I&Zh>3_^nr-CgG<~7*TowF?J@qfRiCp13wxbGoE1k7<{O%Vc+uhphwX#~ykT#W zP8Im>fJ&0L8yoXjx|iPck%pzgR3;)78f*qXcypo~o0C%Mt{uwdm8g#iGcNo%V%s9|n;srv%hs)Ld}f5$9IY@Z)Eb7zR& zl-6BnZnN z^3he~dD{l!ZSmVFPd?I306$H`62JINL0Kad_v#AC0+zJ<7R#rhP>GLm#htz%?=k>{ zmow4RBO;vb9>{{{72Y++Qw0MTba#oxe!Divzu`f@QY#1~hfiH_hf^^ICwJ|I+eOa1A--)$m1ROk(r#TS#@v`aQQ~Bw3+s;i4e5(5h89*u+`fM64@Y1rG zBC@`w8+2zi;U~rA7x=yRd#ilE(xDfu`K1$;hlS8>`zz#pS+a@C)J3~IkJqH*jj?5v zLi;c9^I_Uj@yO}li0xfb)gI)rYDteSL1C#et7I-SWHE#plZ%gVJlI%}_s7zb2{6^j zka$uk^U$PvPU>oRvrN#YH%R>bk>gl%Sb7tcLql;1#>6)22}^5fA2!XQ0*LvU${k<| z#DApbQWr2MQiqr6vlk{F=JigtJ)aUknLSu6JXl)ykEXrCr~zzQYLDvCN4dZsUzn8J zp0ZQ!Uw|QHQG^n=UG#NsA$;Xu`PA|KK7?Tc+8NmepM}}BQ7O3rsKP_%o@UFaYn7@V zsYn3mx^k?^cb+&st`eRU$g35nA){xi+hoIVrbQ+yI*Z&_W@1rLC;N(wGF?{Nz&8FT zcN;cPCqG0yNo7G_LKqq1rm2CDv}o0y#J3mUH*G*r6v;GLmVOmqFoe;UDe5HA6Oe1m zcKsk|a4?$hWXH0p5Pv^G8R&1_>Akt{knBp0Sw&daSMEH07xqM}JSTBcQWDrRx&yd% z4-#2?i$$;g?gEcgAa2&t*M*yb>d#|Bw z0MtKPt?Do0Cw_Hsaakk;?bjwWAU~4yF#$mEg z_nzhfGXN-pO(prqq1&I{S{)_OIsC%>TItzXdVLcw*C58h@;c}C8xmB%DLumc!?N}P zm3$f)FBBy(muApe8U)$~KA1CW=&c1t1#4`t0;Qu&&sFIT5<7v2*}IZEo!` zjKShi?xrjXHz^Jt)QOP_*h0nGjE^Ct~? z`_B=ttS0l;IiIRb+|}=!pyuTyr*TM^1M-l8gO$DzSt#>-kpBTlu*JHNLznBFM!ea* z_o2eKx;EmJn9E~(qNFq5KQOOx80lcB3jLmMXy!My5T;-BaWr(FsMSs?WTL`oG3G)A z6XbM&-t3bHutT1if)bT!kDa;rRcjVc=b$vlul274Uji{x?R|U9jox=R(b!qse)5Lf zHv~(bej8P6hqfegwx(>PB)QONJx(&nr>~vL;4Smz-7gaBqTfyB(^)eOjTD_L9s0%I zd~riNDl)U$4;;tc=;RXp@w17g0?(k!ieZm>DeE;Q!pDaNINe@ujEz(rL z2}&5j=NTR@fXqk&tBw(K6wixKh<`^tO5oJ9&t&|b0rxTBU0#Ea5~0yI+_k!X&SEOp zug^5gK76X|Py6N0yU7yXm6SVO#mVeXW&*8W(Hg7dTkHfUi4||>B0*o)zvYGQgZW=J z8+Fw$wuKOIt9j)zsEsmVw;!kP#se#af!=1R6uV$t`gAjvEXB+ZkVb@{wJ>SLw40YR?Y)p0IszGgkFcTHT9^GpCzp00V8#RX%t@?aY?>DH++a6$AZp zrlR0{ISlOg{w^3&f}(a2{%IDEk9+I2&W73)rVkk{1+WfO|~iMt(Un z(5b&*UXX{M3=%fBu|Nq=6l5oD*wy>K)kYH~T$4JxZn=KgLEc7pE=b19sjU=R3#^~U zG_4^5-DlwMdZ*|T=UC|?iz01nifDSd6}Mmu5`h7tXxhD%Pdt+v48=3P4UTJ7*(8s= z>BGFLye342?9ddhi3a$yCpENBiVJR-u#1xD@SRlFgF$x-NKlZ7B>AT>#J{2Qt7`^n% zsM3pfNDwn+>oe*QzbD0&L2Hb_AG%K(q)$Z6h3ElzXl%B*Yv*%eR=$?f$(fhexD~xZ zQ3EMqk#`!HCcxig)Ax)mflbRS@R2%ev67XkUe73+s1x}sW^#bBH8kUyQ@#%o{t(Ma z1|=pe!}j|`uPB0M*hArq#Z0{Xqa*o5r*W$OQ-x2w{=wH5?-PtF`0@HadY~7Im+ZxB ztZ0Y2hVG<`zw5I7lNQ);Xmz+xjPfP%TekWxxN!F2ZDcMjg}~h+IAK@7JGf1{t&zhC z%5685IGU%@b>?u79X(`evv!64t-TM$qcz9~%UGb&P*Hw8739{Vy%`Ai8t)_yBPD$x z+2j%(4jt=G?qD~thy6LplyK2c-riJ zum=7pGZ*YZL#c#1MOR?~@Xx0h-|cxPV9Gchg!4%k<}m~2H`tX%PDO^pZBhK+BgJxT zb6n-NKQs4571xWy%wt&Fa}8_;hTv)4En(k>zxG4JFhrvk3XSzp`8{{v8`S!eh*G*y z!VI|x*PbM%!8i7N>^-6E>6Jmjc9~~8I-lltrQ{Xy{JC8^bck-|+|-eukLA4mq@_q9 zPXh)3C)C;1?2>>L) zp{7O28?VJ<@o?q!IoAL#EZ5@X+md`KA0fR#LLSk8CjI#6D7D-jZW_MtDe_4!r+En* z%^h@ix$^A}n>OE5zbwl&sFO;n9fC8xem8`dmbRqRc+(us1W*biZt&L9ocNqnjL=d) zmQ+&ORYDpUm;Y*|8?aiqtxLzv=vFpkDGE-3on8Ovl^=;!8rzT$1XX`!=DkjF8cpKqirJ&N#7olx|H{cQlgeD=+ zI)?h*GUA;76}xXJK@mNA!T(2Mt4i)TC?q`=Ru@UYG;Dave3PPCxtD}m-#3Ir2Y(!2 z)SQnVDD33*Z(t;{jmfwM@wTNTKw3IgOpp>0UbLh?&WVfFyLT?|b=@$0d= zrqHduaHp{BhleETXt!qAxmZscIH~l@YG);uQ|h^I$dugvo!N-iMKE3G)-N-w83L5= zmJiW{DcGN|gZfv;H*w225-XRwfJ!5-Xf)A}gbf!_pV!*xt@bLEuDvYcP({RMSV6y3 zIiqPL;6yt;X!1!E+_I1(aV33A_QFVpn68t_~W1L>@cX`WAH8;}A;OW5Pn^j4XaL zM1G(1HCKOKg3tEQX8RJZxJYB^qFx7*t(L;o+^V zMX3WmrDY}bb(VQykfsI`K@iJH@R}9hwC}K$yqdqlqPaz*&k9l@GVkBaC@;+KWq@zs zp3E)G0w-+mp*^%}nL>v%Eii)TG7BW@-4QpG#Cbb^#-@jtXi^zGv(7HOaz~SEHwGZ- zEeF0??T3pf#MBrYkM#987`Dgbl6LE792GnJ;Sg3?nQ=0IH@a7rLqPiC^hhivsvEwN z)XJ_uGMBIi94*>9k0J0EowzS~b!wYA>q1*@J;}nPfVFs)GpG!Lm}@GhU8oaJ^4?ID z3Njj+WRY;(I2ev$sVis(}VeDI?|vyOSr zuB&{}H;j|uqj;SDds~?b0GOh=pGnO=921J)9MolM$$&OklI;0Os_T>Kv$PUqUFU#m zl=jgja_;`Hz7{eMv!4#vbnB9f!d18_U>Zen-^Ya{EQY@z^wq8p(k1`hb9 z9W!hdx#*4aI3q2FK}83Qo+`x?(*QZ^LHPFpy~oNwLYKBMV5ZY*j*y%9G&Mm?-H;No zvow87QKyHunF2PKLFI<|haitO#~rK<(|$SHxuATy$5#9~cfgYN6|<+*EsBluN}%bY;axDDCx7ZA+{&-7SE??%e8=4(Tf`0row9pMK>2 zMBtIvxjheyi0Fv0w|sDoOT9+B3l+O|BabqovDf+$KqKmx+sBHI`spvqSn#8oI=P7eGYDWPG~$ZxW;8-P-~EM7r%yN6 zKp|UWp!boNaDT)owGVK-8OZY(Zm4jqZI7kXMJu*V4zP1PX|emp;DzY`dyJ$+wDY;~ zrdPQqtu=L`rL}a)vA?zR*!LtuM24__tjALV`FvnGk=os(tg%};188N?1w?>0fMZgE z`aZy4wdm#}`jhTuLgkSUFjnu9M;#s)aD2!NIp#tu*q}((Uz6g$cZH&=h*q~k4b@YivLOhffY2rQzRArP@2oD3Uxz{&; z^f*kEc(C21mB*xHMkPS8i@UW)oitPdQ_P*iwi5752(&i_oQMmx(LBbM4eNs(z~wxb zE9MxG`=f2YQczNM-{TMgc#1C2KDdqNR|>_o0ZmP>`fz|r(ncwdF^~ml?XX0^k4O_~ ziSJLf`2l*MrOLqtFY-S@0Pa~OjqMw`SruA^Yft@~R!3zP0dLqESMobg{V5U%oTtoH z(4>Q_=l0}I;sH&{O61~waf=||sxO$evL#D@Rr{Ou92hcq0M?&@TN+V>F6KtrM3qr6 z%C|NBY_hZ|hHCt!{`v1`9F4<8>ZCH`f3kgm#>)gskGA@&2ZEBaO5}>mffENF zz3c0)GrmsmFXwp8@|x3Aon;nuv}Pr7uBd@lPAF};&E2-kB3^(26EYJeE*v9Ku(&R- z&^Jgqes=f!l)$O{N0El}4=M5ZB5_OrgXx@LQ%`q6+vngb{(wLv)gR^^4pS~K`kLkG zWGYzkbl6#chM0AhNR&0I7~5bbl-xlEI6nJBr3JZ2^Mj4q68r6l!!C8i7JHLfVlO@; zwah&;mtRVGU{nVLuIPxA))*WgH6CHm<0xR;MV^(Aas#x_ zibl&HB(Q%gw*p!%=Uco9qqaP8xUQfG}ORUKeQ;pvHYt4hh_9 zBbRFiQBwmK_<$=}zX@9ig1#hdCv$)x%x;)l9>}owLW|5#Bu(_f|8)PCt4>#hk+ghsu!?NTM-FsvS(rLEkNx$(!UQXx# zbTf{X4Ny>L`a1yv?a!SaO^OZdjQ@=(1e9cm3Vh_Z*K^8=fAqs-O8=C)vy)}ekee;r zXW4B);5XZsQW-NT>rgWdBLh}Yc9Ac&&gsQEZLLwYS*N-+IdW8d7=1PLu$G`yT=}EY|gS+5?NLCAIts zyIChD5g=jxN0DVLAb_3~4qXg<4fr*Rlr=O|{_VzLwDarnYjpzax1OV}ZY6PM0txZz zhu07nnn&k%z&N4y)Ut#?Z|T#Uevktb;vcE~563;K4vL*o0NgxLB|@4UMgsY46y9g> zhj{69m2d8SfKS8&cTesE7mudd0F)U3`AzZt-vO5d^xR(sHWt6EYnJXwml@O@dU^!DEKzGnFR3=Rdk;lD zPgP5DUua3CoG3N9Fce%c>$ACnKi!BfNC)oW6p%GzF5j;VJ$gFwRXGCG%yMv9P?QEV zcjr{+N$vhAW}qsX=p$SDx}E%!Fn@<5aQ{R17OSYAL1{6C+)U4PFY?5#@syL`6$!&z zsxJpsk*Tfh4Np0FT)~l~&w(2xxfMN zH4x8fE`5+LvAWV+!)u7TpU-BSk+rKp9eLI8I=;GQz2DnaVinJZ2a(bVgb8<@M9C62 z^b&pKN()zvj1x89jlDG-{5D4<&!p@$BI(<&;WZ{TjW z6DzB%aJ?V6h~}x0?Xkh!+wZGM(+?x2WN#(16>b0?|HPWbZSHO-M|SJWXnCDq7|}{n zDem@tj%&bOA=wWhPyNJ{U=nzdB#1(|t(!iLDxuMfP&Gk*ClEKvuSi@a{>_ra=YWHP~JX7*ycKfdaKrhnSPf+>E3vSk*E`Mda!t(9xR1@%_wHftg#k`j|@= zuUcLsoxhU;NnWEbX?)cdsr)dqogR418XuLyClufa*aqigXUNiMNN*Ig?%RT4la3Ak zr`(g|2jWi)`>(Euv9UXcMDJ+;4ZXTJZCL$>p97Kc)q9uV*}KTM`BZFCZ_9&q{Z$NKeA!EW*t)PcFHC0j+KxMsn_Ny1>pl)k79Lvx zIgy6c#tK>D9e4GEI=_B~0|jN{ayB()?E5(+iK^O3tM#;^m9n0_nL@molICM_ z2q63tsV6iOdHRG`7D{^9_7&O1M(i3 z$R8Vp+$bzs$-oUy6z_eCsP-ehn`l~J>(?^}%jP#Jeeumj&MNA^;V^Y^f;Ce5)xb-) zwezXCZmYU~Hgbqw0ep$iMu`nb1pn9bCz59_%Dq804Ykw-98f_Q1E8hqa!0>vdDtg6?GQbS_W=Gn9VV8 z$jFK1zD2sE^jAT$Wo~mpos@|vK9#wX<`wlkjoNUF1BF{|5~JyNSR<5F8&8x@H8xRR z7BPD1&I}Jx-7Q{CHJky(&N(>KgjQJ=k~1Uf5zjyHlivS4#qSjl+pX5atxM>o8iyNd!d-nJ$CTt5s=t@<(lL=dt4!v(o=hHRt`-RIj2W$N5S2I97;rBSH zzJNv0s(mI6Gdc@j1u<&J|9J;pQSIKFqNFiR(;=iM=*4(&X;8K3kfW9fvQ@!08fGP zsPCJwXeGolL6PyY9G$N5P>xPF`YkTNV}rP}LyN5!^d0e^j1^TO@ZysBlAGI+?o#!1 zJrjevi4Jz=Bmh>4@{kEkG0r){1+#D$wFMM|G8>bnZ6x6;W(nTfF&C^b+F2JkSdvNv zTDqb3*6&^}=Jlgz^d{pbTzNg-`}Nmw#U zK6hFa;(~*2Uj$2}?)~c?XRmp^QD{%O{IlpADaj_qZU`35!g~8O&n+1`Dnk68bvSJp zfYUtD-fQoxkf{>xSF~=_Phm#g99Z3?sfKiLrgiU`aUh+wfWu(zEyBU!RgV z<)O*pHy2_qpKYEJQDbzCfc8j)s;TeJ%E=I_fyA>H6?Y%LP@0=kihwyXS4wwcu2(m0 zCl~rC7eD-LrlRig+py%maoPGCtdQ>e0Ry|lZ>f3uDJG62(1ZfUgyOv$znzkI1~#!Z z4;2`-q$1XXO(V<)E%S4RSb;^tt#ZC3?mpcs$mt9UF^UL=xCyAg%m5+Gsf5?B6J81| zEc90UxsG`}tOiX!rh9e!C*I-{+98?lVQH+Fc*Go>{EoEJZ zaX8<9KdBLD!$1NpI|M1=bzqE1(Tk-p;y3bvoh9w)QKpD=zJzqk?;YpCHa(0R)K_~SN_88#tVIoRMgo2V2>Dq7?TA0$&PU#~ zqTP|423vXrk^-LR?LKSp$pI&Dwoz0G=w4kb%fC|V_py_eJ_nV$XgD?*e^pz{A$I1=OFR>>0ZAr>?vY+Z*dit>yW83g~?0jrkxro-$QE$bJTlakYI zNDJ@QbMp+a$1?_ItjO!1_U+y@igp$q|HZ)Z ztT4aqJcB&Mn0vrCPO7`)tC&lkazCApb++ij1DD@mGxgQ1s>h8RLe9-7%a+x;W3!fQ zPd%ezq4lU65*2Zow@JjB)a67Y<5hHh++ZbOKBHZ}zpLS<@$qZ2vXkbYb^J3mX---w zPV0O%@vMO@=c#DK60c#*vFJnGxxmW;9n-TjZxL?&$!-3}!I` z_iV!^#!VV*C)?`CH&TinRv%D)Pe?#8jp2&r?BLF$nD%H(Z9+krnYihPjL$=arSOdZAw1H(~w8N3B=pbF)db9{BM*~+bi+^-|E=&uxQ{Clx6l{`Zk zv4-M10awj%-F!HYg7rWsc9OJ?O5;F^$(_jC2tksGbDfpB)_LfTui z9!j2Qs&vx2WbR0sRJ9PE`|hB~Z5e#zNblE$x<1?t<{0uN$%y2bU&cSiz~xs~dU zrl!fU-sXk6@MD9pgFg-aM$E|cKC4A-^dw?`HQ`eA@T|uo2eVq+j~+`tFIW>_)?4)d zF~XrluJyiHh&vHHX?Z^M^)JYVAb^c{dyd94Oe436O1vD-T@xpYKkxaHLb-HHEjtT= ztHt|G47H8>5MtnCofBac^4Yq z(G_(prVw{dg{TGt4pjix3cdaZrvt$06v+;atH8M!aGpYmO;);IZZ-hz2b}zWVm{L| zk-vy%1+JSnVHc+l2KuijDUwKUV``$@*19S!2JyMG>u_>YMIWONVUVx&5*E2+8w=(0 zCr94$B)C8Dm2lthG-{zVyJ{-8_xb>u{`lL0i*Cc^quNy)19~8?+gbqj4+D-z)Xa(= z>@%u})RVqF$$8Z0AG7;X!FwI1^WM!^+I3583lBlLuXzSBWg=CgGQm^*SHjJHZ9dca z$!lnLizo|K%j~2Wz^%FdtO^dSl;$FfZ(MhFjZ%icaR5Py$F}QV|I;nk8!@w?O{B|moHulb+#Y1WGm+fL5y+g01!xjjh?3t&Qi49)xwM28mph?V$m~a zY|%L`DK=nK;kmi}w!W1HWV~ z!P09|!v>3F;{f z+nl+qw@}m=w4b?%jWqq}B2J8I4?_#+h7%^-)`S7s4q<>-)x0cb3Qe=bc{Hhnw1#aB z>Z1-H7mpNOGx1yk^a<<=G;>Lwltbr}$t(2^BE3G_y!&&R*qXMAEp~)9ZgYtI9Tk3W z8@+z;Ac~lgn9uCQrrM_IhGQ3SRvo;KaZG))ADtoIeD1|?j^l%Bz5_h@yYmXN>BD_5 zsSW=f8$dYA1s@SQv>VgB2t6pT=fPGY=Fe9Epl@~bo_>Xk!A{y5QtRH<` zi~Vm6NiZg&HMYRaV`%e<{Ur@HdetgPn{v~xywv7`uuMs_N?4i+9rGNiUc6bcqdc?q}NwkIs1oXwg=)1)X}s=VW{LmM(Of-x>v2F&k%`u(hOdnIcDy zS%G)mX3t|39Ay6m2Q&?|c%IMbz6mzq_HS`$2XBpZVX1DiUDs2q zR@@A7IU9c+PF831TxmCXaO0k&N%h7W{LIqYQhQeyp^FX}N_JTXZu4XdSuIt;*V#j&G7fv&|j-r5$?B zDf?fcaNsl_5hbQyJj;O=F;D&B51m1P5Q^ZW&@gsQwkQVlKKKbkBB3HWgk}li+sP&8 zX45e8RdDghwH4vPUOv7wO-l%SA$>?or~zQo*lv zJ$VgX7r=QD4V+YMuCtteSvr?&ibiFp#RvQmVR{*lKpEqU46{UmbPV6BKEIcLPj&OA z#5hMeK2MWRz#nLbzej$w-sSJrXFq+IExyS1bQ{3}v_XCcaqvQP1klSk zu1wk9xjAhAi{@Ph#eQPQt~EYUv67X0wk;eB-Y`1;Z%t&{4VHrL*mk=|fC%v!4VV_R ITm=#M9|uRWA^-pY literal 0 HcmV?d00001 diff --git a/external/lsquic/docs/tutorial.rst b/external/lsquic/docs/tutorial.rst new file mode 100644 index 0000000..1bcba03 --- /dev/null +++ b/external/lsquic/docs/tutorial.rst @@ -0,0 +1,1207 @@ +******** +Tutorial +******** + +Code for this tutorial is available on `GitHub `_. + +.. highlight:: c + +Introduction +============ + +The LSQUIC library provides facilities for operating a QUIC (Google QUIC +or IETF QUIC) server or client with optional HTTP (or HTTP/3) functionality. +To do that, it specifies an application programming interface (API) and +exposes several basic object types to operate upon: + +- engine; +- connection; and +- stream. + +Engine +------ + +An engine manages connections, processes incoming packets, and schedules outgoing packets. It can be instantiated in either server or client mode. If your program needs to have both QUIC client and server functionality, instantiate two engines. (This is what we do in our LiteSpeed ADC server.) +In addition, HTTP mode can be turned on for gQUIC and HTTP/3 support. + +Connection +---------- + +A connection carries one or more streams, ensures reliable data delivery, and handles the protocol details. +In client mode, a connection is created using a function call, which we will cover later in the tutorial. +In server mode, by the time the user code gets a hold of the connection object, the handshake has already been completed successfully. This is not the case in client mode. + +Stream +------ + +A connection can have several streams in parallel and many streams during its lifetime. +Streams do not exist by themselves; they belong to a connection. Streams are bidirectional and usually correspond to a request/response exchange - depending on the application protocol. +Application data is transmitted over streams. + +HTTP Mode +--------- + +The HTTP support is included directly into LSQUIC. The library hides the interaction between the HTTP application layer and the QUIC transport layer and presents a simple, unified way of sending and receiving HTTP messages. (By "unified way," we mean between Google QUIC and HTTP/3). Behind the scenes, the library will compress and decompress HTTP headers, add and remove HTTP/3 stream framing, and operate the necessary control streams. + +In the following sections, we will describe how to: + +- initialize the library; +- configure and instantiate an engine object; +- send and receive packets; and +- work with connections and streams. + +Include Files +------------- + +In your source files, you need to include a single header, "lsquic.h". +It pulls in an auxiliary file "lsquic_types.h". + +:: + + #include "lsquic.h" + +Library Initialization +====================== + +Before the first engine object is instantiated, the library must be +initialized using :func:`lsquic_global_init()`: + +:: + + if (0 != lsquic_global_init(LSQUIC_GLOBAL_CLIENT|LSQUIC_GLOBAL_SERVER)) + { + exit(EXIT_FAILURE); + } + /* OK, do something useful */ + +This will initialize the crypto library, gQUIC server certificate cache, and, depending on the platform, monotonic timers. +If you plan to instantiate engines only in a single mode, client or server, +you can omit the appropriate flag. + +After all engines have been destroyed and the LSQUIC library is no longer +going to be used, the global initialization can be undone: + +:: + + lsquic_global_cleanup(); + exit(EXIT_SUCCESS); + +Engine Instantiation +==================== + +Engine instantiation is performed by :func:`lsquic_engine_new()`: + +:: + + /* Create an engine in server mode with HTTP behavior: */ + lsquic_engine_t *engine + = lsquic_engine_new(LSENG_SERVER|LSENG_HTTP, &engine_api); + +The engine mode is selected by using the :macro:`LSENG_SERVER` flag. +If present, the engine will be in server mode; if not, the engine will +be in client mode. If you need both server and client functionality +in your program, instantiate two engines (or as many as you like). + +Using the :macro:`LSENG_HTTP` flag enables the HTTP behavior: The library +hides the interaction between the HTTP application layer and the QUIC +transport layer and presents a simple, unified (between Google QUIC and +HTTP/3) way of sending and receiving HTTP messages. Behind the scenes, +the library will compress and uncompress HTTP headers, add and remove +HTTP/3 stream framing, and operate the necessary control streams. + +Engine Configuration +-------------------- + +The second argument to :func:`lsquic_engine_new()` is a pointer to +a struct of type :type:`lsquic_engine_api`. This structure lists +several user-specified function pointers that the engine is to use +to perform various functions. Mandatory among these are: + +- function to send packets out, :member:`lsquic_engine_api.ea_packets_out`; +- functions linked to connection and stream events, + :member:`lsquic_engine_api.ea_stream_if`; +- function to look up certificate to use, :member:`lsquic_engine_api.ea_lookup_cert` (in server mode); and +- function to fetch SSL context, :member:`lsquic_engine_api.ea_get_ssl_ctx` (optional in client mode). + +The minimal structure for a client will look like this: + +:: + + lsquic_engine_api engine_api = { + .ea_packets_out = send_packets_out, + .ea_packets_out_ctx = (void *) sockfd, /* For example */ + .ea_stream_if = &stream_callbacks, + .ea_stream_if_ctx = &some_context, + }; + +Engine Settings +--------------- + +Engine settings can be changed by specifying +:member:`lsquic_engine_api.ea_settings`. There are **many** parameters +to tweak: supported QUIC versions, amount of memory dedicated to connections +and streams, various timeout values, and so on. See +:ref:`apiref-engine-settings` for full details. If ``ea_settings`` is set +to ``NULL``, the engine will use the defaults, which should be OK. + + +Receiving Packets +================= + +UDP datagrams are passed to the engine using the :func:`lsquic_engine_packet_in()` function. This is the only way to do so. +A pointer to the UDP payload is passed along with the size of the payload. +Local and peer socket addresses are passed in as well. +The void "peer ctx" pointer is associated with the peer address. It gets passed to the function that sends outgoing packets and to a few other callbacks. In a standard setup, this is most likely the socket file descriptor, but it could be pointing to something else. +The ECN value is in the range of 0 through 3, as in RFC 3168. + +:: + + /* 0: processed by real connection + * 1: handled + * -1: error: invalid arguments, malloc failure + */ + int + lsquic_engine_packet_in (lsquic_engine_t *, + const unsigned char *udp_payload, size_t sz, + const struct sockaddr *sa_local, + const struct sockaddr *sa_peer, + void *peer_ctx, int ecn); + +Why specify local address +------------------------- + +The local address is necessary because it becomes the source address of the outgoing packets. This is important in a multihomed configuration, when packets arriving at a socket can have different destination addresses. Changes in local and peer addresses are also used to detect changes in paths, such as path migration during the classic "parking lot" scenario or NAT rebinding. When path change is detected, QUIC connection performs special steps to validate the new path. + +Sending Packets +=============== + +The :member:`lsquic_engine_api.ea_packets_out` is the function that gets +called when an engine instance has packets to send. It could look like +this: + +:: + + /* Return number of packets sent or -1 on error */ + static int + send_packets_out (void *ctx, const struct lsquic_out_spec *specs, + unsigned n_specs) + { + struct msghdr msg; + int sockfd; + unsigned n; + + memset(&msg, 0, sizeof(msg)); + sockfd = (int) (uintptr_t) ctx; + + for (n = 0; n < n_specs; ++n) + { + msg.msg_name = (void *) specs[n].dest_sa; + msg.msg_namelen = sizeof(struct sockaddr_in); + msg.msg_iov = specs[n].iov; + msg.msg_iovlen = specs[n].iovlen; + if (sendmsg(sockfd, &msg, 0) < 0) + break; + } + + return (int) n; + } + +Note that the version above is very simple: it does not use local +address and ECN value specified in :type:`lsquic_out_spec`. +These can be set using ancillary data in a platform-dependent way. + +When an error occurs +-------------------- + +When an error occurs, the value of ``errno`` is examined: + +- ``EAGAIN`` (or ``EWOULDBLOCK``) means that the packets could not be sent and to retry later. It is up to the caller to call :func:`lsquic_engine_send_unsent_packets()` when sending can resume. +- ``EMSGSIZE`` means that a packet was too large. This occurs when lsquic send MTU probes. In that case, the engine will retry sending without the offending packet immediately. +- Any other error causes the connection whose packet could not be sent to be terminated. + +Outgoing Packet Specification +----------------------------- + +:: + + struct lsquic_out_spec + { + struct iovec *iov; + size_t iovlen; + const struct sockaddr *local_sa; + const struct sockaddr *dest_sa; + void *peer_ctx; + int ecn; /* 0 - 3; see RFC 3168 */ + }; + + +Each packet specification in the array given to the "packets out" function looks like this. In addition to the packet payload, specified via an iovec, the specification contains local and remote addresses, the peer context associated with the connection (which is just a file descriptor in tut.c), and ECN. +The reason for using iovec in the specification is that a UDP datagram may contain several QUIC packets. QUIC packets with long headers, which are used during QUIC handshake, can be coalesced and lsquic tries to do that to reduce the number of datagrams needed to be sent. On the incoming side, :func:`lsquic_engine_packet_in()` takes care of splitting incoming UDP datagrams into individual packets. + +When to process connections +=========================== + +Now that we covered how to initialize the library, instantiate an engine, and send and receive packets, it is time to see how to make the engine tick. "LSQUIC" has the concept of "tick," which is a way to describe a connection doing something productive. Other verbs could have been "kick," "prod," "poke," and so on, but we settled on "tick." + +There are several ways for a connection to do something productive. When a connection can do any of these things, it is "tickable:" + +- There are incoming packets to process +- A user wants to read from a stream and there is data that can be read +- A user wants to write to a stream and the stream is writeable +- A stream has buffered packets generated when a user has written to stream outside of the regular callback mechanism. (This is allowed as an optimization: sometimes data becomes available and it's faster to just write to stream than to buffer it in the user code and wait for the "on write" callback.) +- Internal QUIC protocol or LSQUIC maintenance actions need to be taken, such as sending out a control frame or recycling a stream. + +:: + + /* Returns true if there are connections to be processed, in + * which case `diff' is set to microseconds from current time. + */ + int + lsquic_engine_earliest_adv_tick (lsquic_engine_t *, int *diff); + +There is a single function, +:func:`lsquic_engine_earliest_adv_tick()`, that can tell the user whether and when there is at least one connection managed by an engine that needs to be ticked. "Adv" in the name of the function stands for "advisory," meaning that you do not have to process connections at that exact moment; it is simply recommended. If there is a connection to be ticked, the function will return a true value and ``diff`` will be set to a relative time to when the connection is to be ticked. This value may be negative, which means that the best time to tick the connection has passed. +The engine keeps all connections in several data structures. It tracks each connection's timers and knows when it needs to fire. + +Example with libev +------------------ + +:: + + void + process_conns (struct tut *tut) + { + ev_tstamp timeout; + int diff; + ev_timer_stop(); + lsquic_engine_process_conns(engine); + if (lsquic_engine_earliest_adv_tick(engine, &diff) { + if (diff > 0) + timeout = (ev_tstamp) diff / 1000000; /* To seconds */ + else + timeout = 0.; + ev_timer_init(timeout) + ev_timer_start(); + } + } + +Here is a simple example that uses the libev library. First, we stop the timer and process connections. Then, we query the engine to tell us when the next advisory tick time is. Based on that, we calculate the timeout to reinitialize the timer with and start the timer. +If ``diff`` is negative, we set timeout to zero. +When the timer expires (not shown here), it simply calls this ``process_conns()`` again. + +Note that one could ignore the advisory tick time and simply process connections every few milliseconds and it will still work. This, however, will result in worse performance. + +Processing Connections +---------------------- + +Recap: +To process connections, call :func:`lsquic_engine_process_conns()`. +This will call necessary callbacks to read from and write to streams +and send packets out. Call `lsquic_engine_process_conns()` when advised +by `lsquic_engine_earliest_adv_tick()`. + +Do not call `lsquic_engine_process_conns()` from inside callbacks, for +this function is not reentrant. + +Another function that sends packets is +:func:`lsquic_engine_send_unsent_packets()`. Call it if there was a +previous failure to send out all packets + +Required Engine Callbacks +========================= + +Now we continue to initialize our engine instance. We have covered the callback to send out packets. This is one of the required engine callbacks. +Other required engine callbacks are a set of stream and connection callbacks that get called on various events in then connections and stream lifecycles and a callback to get the default TLS context. + +:: + + struct lsquic_engine_api engine_api = { + /* --- 8< --- snip --- 8< --- */ + .ea_stream_if = &stream_callbacks, + .ea_stream_if_ctx = &some_context, + .ea_get_ssl_ctx = get_ssl_ctx, + }; + + +Optional Callbacks +------------------ + +Here we mention some optional callbacks. While they are not covered by +this tutorial, it is good to know that they are available. + +- Looking up certificate and TLS context by SNI. +- Callbacks to control memory allocation for outgoing packets. These are useful when sending packets using a custom library. For example, when all packets must be in contiguous memory. +- Callbacks to observe connection ID lifecycle. These are useful in multi-process applications. +- Callbacks that provide access to a shared-memory hash. This is also used in multi-process applications. +- HTTP header set processing. These callbacks may be used in HTTP mode for HTTP/3 and Google QUIC. + +Please refer to :ref:`apiref-engine-settings` for details. + +Stream and connection callbacks +=============================== + +Stream and connection callbacks are the way that the library communicates with user code. Some of these callbacks are mandatory; others are optional. +They are all collected in :type:`lsquic_stream_if` ("if" here stands +for "interface"). +The mandatory callbacks include calls when connections and streams are created and destroyed and callbacks when streams can be read from or written to. +The optional callbacks are used to observe some events in the connection lifecycle, such as being informed when handshake has succeeded (or failed) or when a goaway signal is received from peer. + +:: + + struct lsquic_stream_if + { + /* Mandatory callbacks: */ + lsquic_conn_ctx_t *(*on_new_conn)(void *stream_if_ctx, + lsquic_conn_t *c); + void (*on_conn_closed)(lsquic_conn_t *c); + lsquic_stream_ctx_t * + (*on_new_stream)(void *stream_if_ctx, lsquic_stream_t *s); + void (*on_read) (lsquic_stream_t *s, lsquic_stream_ctx_t *h); + void (*on_write) (lsquic_stream_t *s, lsquic_stream_ctx_t *h); + void (*on_close) (lsquic_stream_t *s, lsquic_stream_ctx_t *h); + + /* Optional callbacks: */ + void (*on_goaway_received)(lsquic_conn_t *c); + void (*on_hsk_done)(lsquic_conn_t *c, enum lsquic_hsk_status s); + void (*on_new_token)(lsquic_conn_t *c, const unsigned char *token, + void (*on_sess_resume_info)(lsquic_conn_t *c, const unsigned char *, size_t); + }; + +On new connection +----------------- + +When a connection object is created, the "on new connection" callback is called. In server mode, the handshake is already known to have succeeded; in client mode, the connection object is created before the handshake is attempted. The client can tell when handshake succeeds or fails by relying on the optional "handshake is done" callback or the "on connection close" callback. + +:: + + /* Return pointer to per-connection context. OK to return NULL. */ + static lsquic_conn_ctx_t * + my_on_new_conn (void *ea_stream_if_ctx, lsquic_conn_t *conn) + { + struct some_context *ctx = ea_stream_if_ctx; + struct my_conn_ctx *my_ctx = my_ctx_new(ctx); + if (ctx->is_client) + /* Need a stream to send request */ + lsquic_conn_make_stream(conn); + return (void *) my_ctx; + } + +In the made-up example above, a new per-connection context is allocated and returned. This context is then associated with the connection and can be retrieved using a dedicated function. Note that it is OK to return a ``NULL`` pointer. +Note that in client mode, this is a good place to request that the connection make a new stream by calling :func:`lsquic_conn_make_stream()`. The connection will create a new stream when handshake succeeds. + +On new stream +------------- + +QUIC allows either endpoint to create streams and send and receive data on them. There are unidirectional and bidirectional streams. Thus, there are four stream types. In our tutorial, however, we use the familiar paradigm of the client sending requests to the server using bidirectional stream. + +On the server, new streams are created when client requests arrive. On the client, streams are created when possible after the user code has requested stream creation by calling :func:`lsquic_conn_make_stream()`. + +:: + + /* Return pointer to per-connection context. OK to return NULL. */ + static lsquic_stream_ctx_t * + my_on_new_stream (void *ea_stream_if_ctx, lsquic_stream_t *stream) { + struct some_context *ctx = ea_stream_if_ctx; + /* Associate some data with this stream: */ + struct my_stream_ctx *stream_ctx + = my_stream_ctx_new(ea_stream_if_ctx); + stream_ctx->stream = stream; + if (ctx->is_client) + lsquic_stream_wantwrite(stream, 1); + return (void *) stream_ctx; + } + +In a pattern similar to the "on new connection" callback, a per-stream context can be created at this time. The function returns this context and other stream callbacks - "on read," "on write," and "on close" - will be passed a pointer to it. As before, it is OK to return ``NULL``. +You can register an interest in reading from or writing to the stream by using a "want read" or "want write" function. Alternatively, you can simply read or write; be prepared that this may fail and you have to try again in the "regular way." We talk about that next. + +On read +------- + +When the "on read" callback is called, there is data to be read from stream, end-of-stream has been reached, or there is an error. + +:: + + static void + my_on_read (lsquic_stream_t *stream, lsquic_stream_ctx_t *h) { + struct my_stream_ctx *my_stream_ctx = (void *) h; + unsigned char buf[BUFSZ]; + + ssize_t nr = lsquic_stream_read(stream, buf, sizeof(buf)); + /* Do something with the data.... */ + if (nr == 0) /* EOF */ { + lsquic_stream_shutdown(stream, 0); + lsquic_stream_wantwrite(stream, 1); /* Want to reply */ + } + } + +To read the data or to collect the error, call :func:`lsquic_stream_read`. If a negative value is returned, examine ``errno``. If it is not ``EWOULDBLOCK``, then an error has occurred, and you should close the stream. Here, an error means an application error, such as peer resetting the stream. A protocol error or an internal library error (such as memory allocation failure) lead to the connection being closed outright. +To reiterate, the "on read" callback is called only when the user has registered interest in reading from the stream. + +On write +-------- + +The "on write" callback is called when the stream can be written to. At this point, you should be able to write at least a byte to the stream. +As with the "on read" callback, for this callback to be called, the user must have registered interest in writing to stream using :func:`lsquic_stream_wantwrite()`. + + +:: + + static void + my_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *h) { + struct my_stream_ctx *my_stream_ctx = (void *) h; + ssize_t nw = lsquic_stream_write(stream, + my_stream_ctx->resp, my_stream_ctx->resp_sz); + if (nw == my_stream_ctx->resp_sz) + lsquic_stream_close(stream); + } + +By default, "on read" and "on write" callbacks will be called in a loop as long as there is data to read or the stream can be written to. If you are done reading from or writing to stream, you should either shut down the appropriate end, close the stream, or unregister your interest. The library implements a circuit breaker to stop would-be infinite loops when no reading or writing progress is made. Both loop dispatch and the circuit breaker are configurable (see :member:`lsquic_engine_settings.es_progress_check` and :member:`lsquic_engine_settings.es_rw_once`). + +On stream close +--------------- + +When reading and writing ends of the stream have been closed, the "on close" callback is called. After this function returns, pointers to the stream become invalid. (The library destroys the stream object when it deems proper.) +This is a good place to perform necessary cleanup. + +:: + + static void + my_on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *h) { + lsquic_conn_t *conn = lsquic_stream_conn(stream); + struct my_conn_ctx *my_ctx = lsquic_conn_get_ctx(conn); + if (!has_more_reqs_to_send(my_ctx)) /* For example */ + lsquic_conn_close(conn); + free(h); + } + +In the made-up example above, we free the per-stream context allocated in the "on new stream" callback and we may close the connection. + +On connection close +------------------- + +When either :func:`lsquic_conn_close()` has been called; or the peer has closed the connection; or an error has occurred, the "on connection close" callback is called. At this point, it is time to free the per-connection context, if any. + +:: + + static void + my_on_conn_closed (lsquic_conn_t *conn) { + struct my_conn_ctx *my_ctx = lsquic_conn_get_ctx(conn); + struct some_context *ctx = my_ctx->some_context; + + --ctx->n_conns; + if (0 == ctx->n_conn && (ctx->flags & CLOSING)) + exit_event_loop(ctx); + + free(my_ctx); + } + +In the example above, you see the call to :func:`lsquic_conn_get_ctx()`. This returns the pointer returned by the "on new connection" callback. + +Using Streams +============= + +To reduce buffering, most of the time bytes written to stream are written into packets directly. Bytes are buffered in the stream until a full packet can be created. Alternatively, one could flush the data by calling :func:`lsquic_stream_flush`. +It is impossible to write more data than the congestion window. This prevents excessive buffering inside the library. +Inside the "on read" and "on write" callbacks, reading and writing should succeed. The exception is error collection inside the "on read" callback. +Outside of the callbacks, be ready to handle errors. For reading, it is -1 with ``EWOULDBLOCK`` errno. For writing, it is the return value of 0. + +More stream functions +--------------------- + +Here are a few more useful stream functions. + +:: + + /* Flush any buffered data. This triggers packetizing even a single + * byte into a separate frame. + */ + int + lsquic_stream_flush (lsquic_stream_t *); + + /* Possible values for how are 0, 1, and 2. See shutdown(2). */ + int + lsquic_stream_shutdown (lsquic_stream_t *, int how); + + int + lsquic_stream_close (lsquic_stream_t *); + +As mentioned before, calling :func:`lsquic_stream_flush()` will cause the stream to packetize the buffered data. Note that it may not happen immediately, as there may be higher-priority writes pending or there may not be sufficient congestion window to do so. Calling "flush" only schedules writing to packets. + +:func:`lsquic_stream_shutdown()` and :func:`lsquic_stream_close()` mimic the interface of the "shutdown" and "close" socket functions. After both read and write ends of a stream are closed, the "on stream close" callback will soon be called. + +Stream return values +-------------------- + +The stream read and write functions are modeled on the standard UNIX read and write functions, including the use of the ``errno``. The most important of these error codes are ``EWOULDBLOCK`` and ``ECONNRESET`` because you may encounter these even if you structure your code correctly. Other errors typically occur when the user code does something unexpected. + +Return value of 0 is different for reads and writes. For reads, it means that EOF has been reached and you need to stop reading from the stream. For writes, it means that you should try writing later. + +If writing to stream returns an error, it may mean an internal error. If the error is not recoverable, the library will abort the connection; if it is recoverable (the only recoverable error is failure to allocate memory), attempting to write later may succeed. + +Scatter/gather stream functions +------------------------------- + +There is the scatter/gather way to read from and write to stream and the interface is similar to the usual "readv" and "writev" functions. All return values and error codes are the same as in the stream read and write functions we have just discussed. Those are actually just wrappers around the scatter/gather versions. + +:: + + ssize_t + lsquic_stream_readv (lsquic_stream_t *, const struct iovec *, + int iovcnt); + ssize_t + lsquic_stream_writev (lsquic_stream_t *, const struct iovec *, + int count); + +Read using a callback +--------------------- + +The scatter/gather functions themselves are also wrappers. LSQUIC provides stream functions that skip intermediate buffering. They are used for zero-copy stream processing. + +:: + + ssize_t + lsquic_stream_readf (lsquic_stream_t *, + size_t (*readf)(void *ctx, const unsigned char *, size_t len, int fin), + void *ctx); + + +The second argument to :func:`lsquic_stream_readf()` is a callback that +returns the number of bytes processed. The callback is passed: + +- Pointer to user-supplied context; +- Pointer to the data; +- Data size (can be zero); and +- Indicator whether the FIN follows the data. + +If callback returns 0 or value smaller than `len`, reading stops. + +Read with callback: Example 1 +----------------------------- + +Here is the first example of reading from stream using a callback. Now the process of reading from stream +is split into two functions. + +:: + + static void + tut_client_on_read_v1 (lsquic_stream_t *stream, lsquic_stream_ctx_t *h) + { + struct tut *tut = (struct tut *) h; + size_t nread = lsquic_stream_readf(stream, tut_client_readf_v1, NULL); + if (nread == 0) + { + LOG("read to end-of-stream: close and read from stdin again"); + lsquic_stream_shutdown(stream, 0); + ev_io_start(tut->tut_loop, &tut->tut_u.c.stdin_w); + } + /* ... */ + } + +Here, we see the :func:`lsquic_stream_readf()` call. The return value is the same as the other read functions. +Because in this example there is no extra information to pass to the callback (we simply print data to stdout), +the third argument is NULL. + +:: + + static size_t + tut_client_readf_v1 (void *ctx, const unsigned char *data, + size_t len, int fin) + { + if (len) + { + fwrite(data, 1, len, stdout); + fflush(stdout); + } + return len; + } + +Here is the callback itself. You can see it is very simple. If there is data to be processed, +it is printed to stdout. + +Note that the data size (``len`` above) can be anything. It is not limited by UDP datagram size. This is because when incoming STREAM frames pass some fragmentation threshold, LSQUIC begins to copy incoming STREAM data to a data structure that is impervious to stream fragmentation attacks. Thus, it is possible for the callback to pass a pointer to data that is over 3KB in size. The implementation may change, so again, no guarantees. +When the fourth argument, ``fin``, is true, this indicates that the incoming data ends after ``len`` bytes have been read. + +Read with callback: Example 2: Use FIN +-------------------------------------- + +The FIN indicator passed to the callback gives us yet another way to detect end-of-stream. +The previous version checked the return value of :func:`lsquic_stream_readf()` to check for EOS. +Instead, we can use ``fin`` in the callback. + +The second zero-copy read example is a little more efficient as it saves us +an extra call to ``tut_client_on_read_v2``. +Here, we package pointers to the tut struct and stream into a special struct and pass it to +``lsquic_stream_readf()``. + +:: + + struct client_read_v2_ctx { struct tut *tut; lsquic_stream_t *stream; }; + + static void + tut_client_on_read_v2 (lsquic_stream_t *stream, + lsquic_stream_ctx_t *h) + { + struct tut *tut = (struct tut *) h; + struct client_read_v2_ctx v2ctx = { tut, stream, }; + ssize_t nread = lsquic_stream_readf(stream, tut_client_readf_v2, + &v2ctx); + if (nread < 0) + /* ERROR */ + } + +Now the callback becomes more complicated, as we moved the logic to stop reading from stream into it. We need pointer to both stream and user context when "fin" is true. In that case, we call :func:`lsquic_stream_shutdown()` and begin reading from stdin again to grab the next line of input. + +:: + + static size_t + tut_client_readf_v2 (void *ctx, const unsigned char *data, + size_t len, int fin) + { + struct client_read_v2_ctx *v2ctx = ctx; + if (len) + fwrite(data, 1, len, stdout); + if (fin) + { + fflush(stdout); + LOG("read to end-of-stream: close and read from stdin again"); + lsquic_stream_shutdown(v2ctx->stream, 0); + ev_io_start(v2ctx->tut->tut_loop, &v2ctx->tut->tut_u.c.stdin_w); + } + return len; + } + +Writing to stream: Example 1 +---------------------------- + +Now let's consider writing to stream. + +:: + + static void + tut_server_on_write_v0 (lsquic_stream_t *stream, lsquic_stream_ctx_t *h) + { + struct tut_server_stream_ctx *const tssc = (void *) h; + ssize_t nw = lsquic_stream_write(stream, + tssc->tssc_buf + tssc->tssc_off, tssc->tssc_sz - tssc->tssc_off); + if (nw > 0) + { + tssc->tssc_off += nw; + if (tssc->tssc_off == tssc->tssc_sz) + lsquic_stream_close(stream); + /* ... */ + } + +Here, we call :func:`lsquic_stream_write()` directly. If writing succeeds and we reached the +end of the buffer we wanted to write, we close the stream. + +Write using callbacks +--------------------- + +To write using a callback, we need to use :func:`lsquic_stream_writef()`. + +:: + + struct lsquic_reader { + /* Return number of bytes written to buf */ + size_t (*lsqr_read) (void *lsqr_ctx, void *buf, size_t count); + /* Return number of bytes remaining in the reader. */ + size_t (*lsqr_size) (void *lsqr_ctx); + void *lsqr_ctx; + }; + + /* Return umber of bytes written or -1 on error. */ + ssize_t + lsquic_stream_writef (lsquic_stream_t *, struct lsquic_reader *); + +We must specify not only the function that will perform the copy, but also the function that will return the number of bytes remaining. This is useful in situations where the size of the data source may change. For example, an underlying file may change size. +The :member:`lsquic_reader.lsqr_read` callback will be called in a loop until stream can write no more or until :member:`lsquic_reader.lsqr_size` returns zero. +The return value of ``lsquic_stream_writef`` is the same as :func:`lsquic_stream_write()` and :func:`lsquic_stream_writev()`, which are just wrappers around the "writef" version. + +Writing to stream: Example 2 +---------------------------- + +Here is the second version of the "on write" callback. It uses :func:`lsquic_stream_writef()`. + +:: + + static void + tut_server_on_write_v1 (lsquic_stream_t *stream, lsquic_stream_ctx_t *h) + { + struct tut_server_stream_ctx *const tssc = (void *) h; + struct lsquic_reader reader = { tssc_read, tssc_size, tssc, }; + ssize_t nw = lsquic_stream_writef(stream, &reader); + if (nw > 0 && tssc->tssc_off == tssc->tssc_sz) + lsquic_stream_close(stream); + /* ... */ + } + + +The reader struct is initialized with pointers to read and size functions and this struct is passed +to the "writef" function. + +:: + + static size_t + tssc_size (void *ctx) + { + struct tut_server_stream_ctx *tssc = ctx; + return tssc->tssc_sz - tssc->tssc_off; + } + + +The size callback simply returns the number of bytes left. + +:: + + static size_t + tssc_read (void *ctx, void *buf, size_t count) + { + struct tut_server_stream_ctx *tssc = ctx; + + if (count > tssc->tssc_sz - tssc->tssc_off) + count = tssc->tssc_sz - tssc->tssc_off; + memcpy(buf, tssc->tssc_buf + tssc->tssc_off, count); + tssc->tssc_off += count; + return count; + } + + +The read callback (so called because you *read* data from the source) writes no more than ``count`` bytes +to memory location pointed by ``buf`` and returns the number of bytes copied. +In our case, ``count`` is never larger than the number of bytes still left to write. +This is because the caller - the LSQUIC library - gets the value of ``count`` from the ``lsqr_size()`` callback. When reading from a file descriptor, on the other hand, this can very well happen that you don't have as much data to write as you thought you had. + +Client: making connection +========================= + +We now switch our attention to making a QUIC connection. The function :func:`lsquic_engine_connect()` does that. This function has twelve arguments. (These arguments have accreted over time.) + +:: + + lsquic_conn_t * + lsquic_engine_connect (lsquic_engine_t *, + enum lsquic_version, /* Set to N_LSQVER for default */ + const struct sockaddr *local_sa, + const struct sockaddr *peer_sa, + void *peer_ctx, + lsquic_conn_ctx_t *conn_ctx, + const char *hostname, /* Used for SNI */ + unsigned short base_plpmtu, /* 0 means default */ + const unsigned char *sess_resume, size_t sess_resume_len, + const unsigned char *token, size_t token_sz); + +- The first argument is the pointer to the engine instance. +- The second argument is the QUIC version to use. +- The third and fourth arguments specify local and destination addresses, respectively. +- The fifth argument is the so-called "peer context." +- The sixth argument is the connection context. This is used if you need to pass a pointer to the "on new connection" callback. This context is overwritten by the return value of the "on new connection" callback. +- The argument "hostname," which is the seventh argument, is used for SNI. This argument is optional, just as the rest of the arguments that follow. +- The eighth argument is the initial maximum size of the UDP payload. This will be the base PLPMTU if DPLPMTUD is enabled. Specifying zero, or default, is the safe way to go: lsquic will pick a good starting value. +- The next two arguments allow one to specify a session resumption information to establish a connection faster. In the case of IETF QUIC, this is the TLS Session Ticket. To get this ticket, specify the :member:`lsquic_stream_if.on_sess_resume_info` callback. +- The last pair of arguments is for specifying a token to try to prevent a potential stateless retry from the server. The token is learned in a previous session. See the optional callback :member:`lsquic_stream_if.on_new_token`. + +:: + + tut.tut_u.c.conn = lsquic_engine_connect( + tut.tut_engine, N_LSQVER, + (struct sockaddr *) &tut.tut_local_sas, &addr.sa, + (void *) (uintptr_t) tut.tut_sock_fd, /* Peer ctx */ + NULL, NULL, 0, NULL, 0, NULL, 0); + if (!tut.tut_u.c.conn) + { + LOG("cannot create connection"); + exit(EXIT_FAILURE); + } + tut_process_conns(&tut); + +Here is an example from a tutorial program. The connect call is a lot less intimidating in real life, as half the arguments are set to zero. +We pass a pointer to the engine instance, N_LSQVER to let the engine pick the version to use and the two socket addresses. +The peer context is simply the socket file descriptor cast to a pointer. +This is what is passed to the "send packets out" callback. + +Specifying QUIC version +======================= + +QUIC versions in LSQUIC are gathered in an enum, :type:`lsquic_version`, and have an arbitrary value. + +:: + + enum lsquic_version { + LSQVER_043, LSQVER_046, LSQVER_050, /* Google QUIC */ + LSQVER_ID27, LSQVER_ID28, LSQVER_ID29, /* IETF QUIC */ + /* ...some special entries skipped */ + N_LSQVER /* <====================== Special value */ + }; + +The special value "N_LSQVER" is used to let the engine pick the QUIC version. +It picks the latest non-experimental version, so in this case it picks ID-29. +(Experimental from the point of view of the library.) + +Because version enum values are small -- and that is by design -- a list of +versions can be passed around as bitmasks. + +:: + + /* This allows list of versions to be specified as bitmask: */ + es_versions = (1 << LSQVER_ID28) | (1 << LSQVER_ID29); + +This is done, for example, when +specifying list of versions to enable in engine settings using :member:`lsquic_engine_api.ea_versions`. +There are a couple of more places in the API where this technique is used. + +Server callbacks +================ + +The server requires SSL callbacks to be present. The basic required callback is :member:`lsquic_engine_api.ea_get_ssl_ctx`. It is used to get a pointer to an initialized ``SSL_CTX``. + +:: + + typedef struct ssl_ctx_st * (*lsquic_lookup_cert_f)( + void *lsquic_cert_lookup_ctx, const struct sockaddr *local, + const char *sni); + + struct lsquic_engine_api { + lsquic_lookup_cert_f ea_lookup_cert; + void *ea_cert_lu_ctx; + struct ssl_ctx_st * (*ea_get_ssl_ctx)(void *peer_ctx, + const struct sockaddr *local); + /* (Other members of the struct are not shown) */ + }; + +In case SNI is used, LSQUIC will call :member:`lsquic_engine_api.ea_lookup_cert`. +For example, SNI is required in HTTP/3. +In `our web server`_, each virtual host has its own SSL context. Note that besides the SNI string, the callback is also given the local socket address. This makes it possible to implement a flexible lookup mechanism. + +Engine settings +=============== + +Besides the engine API struct passed to the engine constructor, there is also an engine settings struct, :type:`lsquic_engine_settings`. :member:`lsquic_engine_api.ea_settings` in the engine API struct +can be pointed to a custom settings struct. By default, this pointer is ``NULL``. +In that case, the engine uses default settings. + +There are many settings, controlling everything from flow control windows to the number of times an "on read" callback can be called in a loop before it is deemed an infinite loop and the circuit breaker is tripped. To make changing default settings values easier, the library provides functions to initialize the settings struct to defaults and then to check these values for sanity. + +Settings helper functions +------------------------- + +:: + + /* Initialize `settings' to default values */ + void + lsquic_engine_init_settings (struct lsquic_engine_settings *, + /* Bitmask of LSENG_SERVER and LSENG_HTTP */ + unsigned lsquic_engine_flags); + + /* Check settings for errors, return 0 on success, -1 on failure. */ + int + lsquic_engine_check_settings (const struct lsquic_engine_settings *, + unsigned lsquic_engine_flags, + /* Optional, can be NULL: */ + char *err_buf, size_t err_buf_sz); + +The first function is :func:`lsquic_engine_init_settings()`, which does just that. +The second argument is a bitmask to specify whether the engine is in server mode +and whether HTTP mode is turned on. These should be the same flags as those +passed to the engine constructor. + +Once you have initialized the settings struct in this manner, change the setting +or settings you want and then call :func:`lsquic_engine_check_settings()`. The +first two arguments are the same as in the initializer. The third and fourth +argument are used to pass a pointer to a buffer into which a human-readable error +string can be placed. + +The checker function does only the basic sanity checks. If you really set out +to misconfigure LSQUIC, you can. On the bright side, each setting is clearly +documented (see :ref:`apiref-engine-settings`). Most settings are standalone; +when there is interplay between them, it is also documented. +Test before deploying! + +Settings example +---------------- + +The example is adapted from a tutorial program. Here, command-line options +are processed and appropriate options is set. The first time the ``-o`` +flag is encountered, the settings struct is initialized. Then the argument +is parsed to see which setting to alter. + +:: + + while (/* getopt */) + { + case 'o': /* For example: -o version=h3-27 -o cc_algo=2 */ + if (!settings_initialized) { + lsquic_engine_init_settings(&settings, + cert_file || key_file ? LSENG_SERVER : 0); + settings_initialized = 1; + } + /* ... */ + else if (0 == strncmp(optarg, "cc_algo=", val - optarg)) + settings.es_cc_algo = atoi(val); + /* ... */ + } + + /* Check settings */ + if (0 != lsquic_engine_check_settings(&settings, + tut.tut_flags & TUT_SERVER ? LSENG_SERVER : 0, + errbuf, sizeof(errbuf))) + { + LOG("invalid settings: %s", errbuf); + exit(EXIT_FAILURE); + } + + /* ... */ + eapi.ea_settings = &settings; + +After option processing is completed, the settings are checked. The error +buffer is used to log a configuration error. + +Finally, the settings struct is pointed to by the engine API struct before +the engine constructor is called. + +Logging +======= + +LSQUIC provides a simple logging interface using a single callback function. +By default, no messages are logged. This can be changed by calling :func:`lsquic_logger_init()`. +This will set a library-wide logger callback function. + +:: + + void lsquic_logger_init(const struct lsquic_logger_if *, + void *logger_ctx, enum lsquic_logger_timestamp_style); + + struct lsquic_logger_if { + int (*log_buf)(void *logger_ctx, const char *buf, size_t len); + }; + + enum lsquic_logger_timestamp_style { LLTS_NONE, LLTS_HHMMSSMS, + LLTS_YYYYMMDD_HHMMSSMS, LLTS_CHROMELIKE, LLTS_HHMMSSUS, + LLTS_YYYYMMDD_HHMMSSUS, N_LLTS }; + +You can instruct the library to generate a timestamp and include it as part of the message. +Several timestamp formats are available. Some display microseconds, some do not; some +display the date, some do not. One of the most useful formats is "chromelike," +which matches the somewhat weird timestamp format used by Chromium. This makes it easy to +compare the two logs side by side. + +There are eight log levels in LSQUIC: debug, info, notice, warning, error, alert, emerg, +and crit. +These correspond to the usual log levels. (For example, see ``syslog(3)``). Of these, only five are used: debug, info, notice, warning, and error. Usually, warning and error messages are printed when there is a bug in the library or something very unusual has occurred. Memory allocation failures might elicit a warning as well, to give the operator a heads up. + +LSQUIC possesses about 40 logging modules. Each module usually corresponds to a single piece +of functionality in the library. The exception is the "event" module, which logs events of note in many modules. +There are two functions to manipulate which log messages will be generated. + +:: + + /* Set log level for all modules */ + int + lsquic_set_log_level (const char *log_level); + + /* Set log level per module "event=debug" */ + int + lsquic_logger_lopt (const char *optarg); + +The first is :func:`lsquic_set_log_level()`. It sets the same log level for each module. +The second is :func:`lsquic_logger_lopt()`. This function takes a comma-separated list of name-value pairs. For example, "event=debug." + +Logging Example +--------------- + +The following example is adapted from a tutorial program. In the program, log messages +are written to a file handle. By default, this is the standard error. One can change +that by using the "-f" command-line option and specify the log file. + +:: + + static int + tut_log_buf (void *ctx, const char *buf, size_t len) { + FILE *out = ctx; + fwrite(buf, 1, len, out); + fflush(out); + return 0; + } + static const struct lsquic_logger_if logger_if = { tut_log_buf, }; + + lsquic_logger_init(&logger_if, s_log_fh, LLTS_HHMMSSUS); + + +``tut_log_buf()`` returns 0, but the truth is that the return value is ignored. +There is just nothing for the library to do when the user-supplied log function fails! + +:: + + case 'l': /* e.g. -l event=debug,cubic=info */ + if (0 != lsquic_logger_lopt(optarg)) { + fprintf(stderr, "error processing -l option\n"); + exit(EXIT_FAILURE); + } + break; + case 'L': /* e.g. -L debug */ + if (0 != lsquic_set_log_level(optarg)) { + fprintf(stderr, "error processing -L option\n"); + exit(EXIT_FAILURE); + } + break; + +Here you can see how we use ``-l`` and ``-L`` command-line options to call one of +the two log level functions. These functions can fail if the incorrect log level +or module name is passed. Both log level and module name are treated in case-insensitive manner. + +Sample log messages +------------------- + +When log messages are turned on, you may see something like this in your log file (timestamps and +log levels are elided for brevity): + +.. code-block:: text + + [QUIC:B508E8AA234E0421] event: generated STREAM frame: stream 0, offset: 0, size: 3, fin: 1 + [QUIC:B508E8AA234E0421-0] stream: flushed to or past required offset 3 + [QUIC:B508E8AA234E0421] event: sent packet 13, type Short, crypto: forw-secure, size 32, frame types: STREAM, ecn: 0, spin: 0; kp: 0, path: 0, flags: 9470472 + [QUIC:B508E8AA234E0421] event: packet in: 15, type: Short, size: 44; ecn: 0, spin: 0; path: 0 + [QUIC:B508E8AA234E0421] rechist: received 15 + [QUIC:B508E8AA234E0421] event: ACK frame in: [13-9] + [QUIC:B508E8AA234E0421] conn: about to process QUIC_FRAME_STREAM frame + [QUIC:B508E8AA234E0421] event: STREAM frame in: stream 0; offset 0; size 3; fin: 1 + [QUIC:B508E8AA234E0421-0] stream: received stream frame, offset 0x0, len 3; fin: 1 + [QUIC:B508E8AA234E0421-0] di: FIN set at 3 + +Here we see the connection ID, ``B508E8AA234E0421``, and logging for modules "event", "stream", "rechist" +(that stands for "receive history"), "conn", and "di" (the "data in" module). When the connection ID is +followed by a dash and that number, the number is the stream ID. Note that stream ID is logged not just +for the stream, but for some other modules as well. + +Key logging and Wireshark +========================= + +`Wireshark`_ supports IETF QUIC. The developers have been very good at keeping up with latest versions. +You will need version 3.3 of Wireshark to support Internet-Draft 29. Support for HTTP/3 is in progress. + +To export TLS secrets, use BoringSSL's ``SSL_CTX_set_keylog_callback()``. +Use `lsquic_ssl_to_conn()` to get the connection associated +with the SSL object. + +Key logging example +------------------- + +:: + + static void * + keylog_open_file (const SSL *ssl) + { + const lsquic_conn_t *conn; + const lsquic_cid_t *cid; + FILE *fh; + int sz; + unsigned i; + char id_str[MAX_CID_LEN * 2 + 1]; + char path[PATH_MAX]; + static const char b2c[16] = "0123456789ABCDEF"; + + conn = lsquic_ssl_to_conn(ssl); + cid = lsquic_conn_id(conn); + for (i = 0; i < cid->len; ++i) + { + id_str[i * 2 + 0] = b2c[ cid->idbuf[i] >> 4 ]; + id_str[i * 2 + 1] = b2c[ cid->idbuf[i] & 0xF ]; + } + id_str[i * 2] = '\0'; + sz = snprintf(path, sizeof(path), "/secret_dir/%s.keys", id_str); + if ((size_t) sz >= sizeof(path)) + { + LOG("WARN: %s: file too long", __func__); + return NULL; + } + fh = fopen(path, "ab"); + if (!fh) + LOG("WARN: could not open %s for appending: %s", path, strerror(errno)); + return fh; + } + + static void + keylog_log_line (const SSL *ssl, const char *line) + { + file = keylog_open_file(ssl); + if (file) + { + fputs(line, file); + fputs("\n", file); + fclose(file); + } + } + + /* ... */ + + SSL_CTX_set_keylog_callback(ssl, keylog_log_line); + +The most involved part of this is opening the necessary file, creating it if necessary. +The connection can be used to generate a filename based on the connection ID. +We see that the line logger simply writes the passed C string to the filehandle and appends a newline. + +Wireshark screenshot +-------------------- + +After jumping through those hoops, our reward is a decoded QUIC trace in Wireshark! + +.. image:: wireshark-screenshot.png + +Here, we highlighted the STREAM frame payload. +Other frames in view are ACK and TIMESTAMP frames. +In the top panel with the packet list, you can see that frames are listed after the packet number. +Another interesting item is the DCID. This stands for "Destination Connection ID," and you can +see that there are two different values there. This is because the two peers of the QUIC connection +place different connection IDs in the packets! + +Connection IDs +============== + +A QUIC connection has two sets of connection IDs: source connection IDs and destination connection IDs. The source connection IDs set is what the peer uses to place in QUIC packets; the destination connection IDs is what this endpoint uses to include in the packets it sends to the peer. One's source CIDs is the other's destination CIDs and vice versa. +What interesting is that either side of the QUIC connection may change the DCID. Use CIDs with care. + +:: + + #define MAX_CID_LEN 20 + + typedef struct lsquic_cid + { + uint_fast8_t len; + union { + uint8_t buf[MAX_CID_LEN]; + uint64_t id; + } u_cid; + #define idbuf u_cid.buf + } lsquic_cid_t; + + #define LSQUIC_CIDS_EQ(a, b) ((a)->len == 8 ? \ + (b)->len == 8 && (a)->u_cid.id == (b)->u_cid.id : \ + (a)->len == (b)->len && 0 == memcmp((a)->idbuf, (b)->idbuf, (a)->len)) + +The LSQUIC representation of a CID is the struct above. The CID can be up to 20 bytes in length. +By default, LSQUIC uses 8-byte CIDs to speed up comparisons. + +Get this-and-that API +===================== + +Here are a few functions to get different LSQUIC objects from other objects. + +:: + + const lsquic_cid_t * + lsquic_conn_id (const lsquic_conn_t *); + + lsquic_conn_t * + lsquic_stream_conn (const lsquic_stream_t *); + + lsquic_engine_t * + lsquic_conn_get_engine (lsquic_conn_t *); + + int lsquic_conn_get_sockaddr (lsquic_conn_t *, + const struct sockaddr **local, const struct sockaddr **peer); + +The CID returned by :func:`lsquic_conn_id()` is that used for logging: server and client should return the same CID. As noted earlier, you should not rely on this value to identify a connection! +You can get a pointer to the connection from a stream and a pointer to the engine from a connection. +Calling :func:`lsquic_conn_get_sockaddr()` will point ``local`` and ``peer`` to the socket addressess of the current path. QUIC supports multiple paths during migration, but access to those paths has not been exposed via an API yet. This may change when or if QUIC adds true multipath support. + +.. _`our web server`: https://www.litespeedtech.com/products +.. _`Wireshark`: https://www.wireshark.org/ diff --git a/external/lsquic/docs/wireshark-screenshot.png b/external/lsquic/docs/wireshark-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..350091a7c39edd124ce345a459ef3265bb5d3577 GIT binary patch literal 40852 zcmbrGc{r5)|Mqovm%4>^Wi1kAnUH-;wqy%QmNAtr+1D``Dn*ig8OoAm&q%V4F^L)s z218>TlNf`+*v2wrW}d10zQ4=w_x(N3@f^QD9M{ZP4(9q?pX)r|uk#dt!@`*N55YgU zxVU&tt{GT!aqWG@#kHsZz<$mv0I#Sl&S6iGweeLhc%Se*=gIFLdggjuTs6r&yLb0- zo*(qTW*@}G#n=AxV-MP|%$4)v*09%HK6H(7PGtyu^h1pTk2(BG@appR)$1!z+S)kWWnI)oV9ChrN65 zYB==p;3N)A7oLGznnj>L%`u;@YJ~B zK?_y-Qt(#JI)yl&Ut`I1MoMu094@Zo_umzbM2o2t*{m(nl3z4}`2_hnK$_1jho~oq zi1|Rs<-BXcd~{9bE8=cRZdvXJmoz47k-hilH{Uq**!<`5%G3dsJwG2jl^FT`=ka*b zont?bH`F*^pe8+rQB-g8)?M5i8Zovxea)w@dt@a0w7cq(8W-35YQq?Fg8vQBOgg5p zq}^BL{N_!^EGcBH8TC@rdw+xOJ7P8Ddt0ZTU`<@{Hc8=~gd6<$eeFX$hH@SP1{mL4 z`{kRFBPgrt+AS#(iX1+|^a9G*gkI+28o|?*US+;CdsmQJgs%s5O=RIy z=07f2mk$*ev#VmOz8H>N+fT>h^+f{R38>paI4QO9wD zB6AiSXMYg8RN1;RwJLix5T{-B5s6#ZPMeFiy+%q;#ga1KZI{1j4C>d_ndQ&uTy@AI zjrJ24uGDLyw0(`|vq$%{Hs8oqKY{uIEXM*KTym@IqbaQqdiR;yCsN!Q5^jsUth&SY zM&Qwdm{s>{TJ-@KVu%gS+H3im%m?$rrA5N#By@P+VFuV?404(^o-2;2MN51DOdbZo z%G-oX^P%CpsBB&2?T%HGiIdQElPa5A#T97El612-7uTn29lEvZb>h6`o0kP!0K4(A zU>M4lnDt=!)|WlsCbCwQ^GIb~4`?r*vHfsic(;!dJOtUn7w-yccs&o@xnAN`fA_RH zIxsh;!m357itX%SvC;de;#nSuU&h9GB|Foi^9kR}v_8Ax6kR3V!slH=#O(fP$F!!p zGt;OLD*KK=NigO%FTqO>UFSHdrZkCql=)E@U1NTmZa?@v|JzC%!lTA zN$vs%A@;6NiW=4hquLyW8*i7Dn%zDDiM$6>mXw*AJntywTHgPGvr>!FwjaMPUoTvY zD?uof0~qTnZ8tTPB{GM3htH|syQma+-D9GAx?=Shy&>PdIehet34ev&(B;JNLk}K& zQBf;ZZTT>i*ri3jGe<3kT78q;u-EKH%X$(+Ean)#N z`z+hwQ7*2BsV0Y1LcoZ+oDlow`??ZB!v_?>M1=lzeGy+9nTkU~)5V_)?*~_>ZiJmUaoEuj}+S| zN@%0Wogzx(+JSoeEKC^i?&xn?{iQK|Swk}8fuoitd}%bA68kz)VIG)78CeEZ15^; zM|40@F$Pk;fBzdH;`s3ELm{!=<{p_x`}Fdj;;}xXDBW76)D*+@d{rK?g3(?H|DK!e z6VyL6RO+Rt<=CYXM>m1Wvu>^4=u9`LyZLNze_1!AO~;giI(0skH6DKlnd)*BksITL zQmfZ)sm73=piFfE-15nt3V7AuxV5pvL<-p(v*{Po;Hc^Ldi~QES5yet8CexG@lNZ{ zUmJ7Vc&k+7O)Hy8#f%eKp^SqOPp5APcPpY|96}Kv2(M}t>lNhk&OX-Y<7}3E+{`>y zuV0jn#Z8M*g)VEwS6mN^?kjB^JLf`oYjWk^!}aOm&&?Ft?DxbXBIht?bN%gq+GKqf z*FcR#BSx{5js$p;d4$0^t6W_E89-m>8J~|oA3sFuz5n&1v~b&b&aw}s1vF8iJRjV2 zm+PzICNHQWu|g+7A0!eog4i3OiLMc!H|hzDMyEQlfRq;L1Vbm)r_RyUU1TaRyp)k2 z)|F|r#Q3D6g~}~$pb94$Q^gfaddrk6@w=oE4OU%St+4>wYrq7 zY9OTEg{SJ^Bb=WsWVLOTqjI0CM@_j{Wmw57b=~iFTXP|%!BA^&a}fhcBiwME0GO6^ za`)%nPy@d^cdJovDHpBf;q>VdWZ-73v1>^g^>Zt|M)z4fN>n&RKh}+}$2J*JLLxc2 z->?M7WltAk}G6ML9a^&n{O=KIsnj(sur%r{U}dZ zp7v4qVn;EfQjK-#ZXpdo`uU0iAxuS(K>P-P0{2%o+xM+pIxraN%uO)K1yipdHbD#;=`j zN~|19&YYR*pq758^E@7S8)#CkdtUdXHYhIC<*@fVA~A~_!Rv%qUakL`wSq{ zY)xL9oMqX8}1!<)qd7(Q~jg)c};8NIcyZq6oiN1V*XT_E0#$t@tzFG6yhfh!g{5Hq>*fIi=3 zko>$)U&os4RZH!u1XPkQtX3@2NC)OWvHQV71MazBb6FnHy>2%I?&*C%oH-3CcO<(b zzFJcbFTQMN^vn+1k)A&|0A#pT2lltWW-jy+Di?g>L9xhtLgGj26*Z=TXQmJ?%|~BC zmP6I;PBg7KWG&r1QA+@56T`8FuvWP^{WXQ>S#_q9)0ZYz$D^e&Wq6P+?;i;BR<1t&$!fWP7D!KB|h`heTLhFGiFgk0OOw8$sd)AHi@j z_}F(n)ib)gFD5n(BaAhJjoBjv(2eO9S#XNps-MvuVnXlhRU#C2wz=7pgMx1&~yvRri+0+YnuGWK``!15)?y z_)Ql(v4m?|9nOV;T@KO05$vVF53AlaiILM9O`H3vpfAAbHpPe-&FGcKd$u4V{=?Hu zTpB#?E*>_dvie($rPS}zmR&K;tpgMra*oy}LV;3C*4xsQUD~~g^HFbJs9aG*Hed13 z98Rl<8XXBV@eDc-^U%AuV2KY2PHa92*V27%{O&`8fHiXCozu>D?x7H9-o&on{N!A3 zaH3ne{(CRJEuP2D5Ci$n(xs=&vWb)%dS9%i7GBgQSZ3o7tjiq1Es2-#+!-X~`%1nQ z^u><_%m*8x;p^Ux?#jTf z^47izzBQdNAWNIC)w@&~BMOZhyL|aGxu{odYjS{EBos46LsE0Ke5B_0r}0JY_dU~; zHJa`t^rFaVsBWRklsDD8S1!;?dL54G%2eMd&hi+f$ByY%ox{f_gCWcPJ@D65C-F>(h1s1X+zoF`{#&nISVJQzQMX3d|jiQ0o*Z~zQa<-0d*CRdY zgv^vS3WLv7TUTkwE{Xc(cDzqtF3t2Jp7y;t={Pjc^lC%kxSWcm(Iv}>v-$Marj?8d z|2(k8oRHxtf>pAp8A_PqQ?WH%@A4&)phrqot{unOe%5-GLG4R#iWp-&4Yk!RIEoy1 zY4*6>*Y$MTa?C@(Ii2d9y8I<`w6~#a{t2Le#7F)2T(oq_JK&mV+~*{sXp!vnyljaR zM0t%=Qk&Nv`6!1e+vvrD&(Alz=0CDYtQ>*gPSUt=T@LHFlGyCEGhFXvO*}{-mp{Kv zmd^4#mx)Pmwrjs}QZctGM{8Pl{B12y@y0v%i(7OfeJUe8a6Aayv0?Na07F*mKBk=j zC&q2IWsdd)@-;84?xAcK;yw2H90Qc~qp{=FH(<0EfRWSny(jHJBnS6C6^|%59Ty@3 zIqxUeRpbR2vD|lR!zoaKs9I>&*gD`A;rkZkGS5gNgoMSIL$^$?@}3Pj;&lJ5?)!H# zr-Gzp${*K&AwcLTtyUTqp6{kO9ZucM{zHB!voknmJ7q#+j&LrB8^9VZZ}d^08%(nD zwrBiE0%c9#n2BT@aLehr9Q(N~!+{+Wg-5waDp#Q}_ZI3R*6r7Yzr}E`@eVkY>A5Qk z9}KA|vJlKtmrv{$*=cPiP@+cg`y2~gOxkMZ$W{RLd@`n{r&Iln;E4i0 zf}ms3LK=<%F%INo6}w70zx|N4#M5IZb@9Ci^7i3!3N=3fsrC!}y^EG+Mj@TeZj`ek zXGUo!f)kCi=DWQ$uwKcPqRBs3Sgcb4b~mwH;>~I7H5d);k{`XOULXH!Yt^RNKG3|B zRNI?#3neYF6J^?zw9yn!It}?2wb_k&& z{*sL+4|NSAHITLT^(>72moKE10c^V!lJPX85Qd7G~s!zBq~*I~Kj`gl@B0 zjD)*5UhY;@C46$E-vH-Ks*GwFm^0qa?{_cF@t6#+1`?1xfN_7-En`yfmVB$|k9_c0 z9DP&Wsg%y}j=Pq3^HPx0b!|7Xs&VsJOJ&73q)Kc}Klrg|bIvg+M;~lm-)=NO4D+`1 zT!RqK64fh-{c7jx%m`nGiCa8qu{p<*u3K808M&>>kpw!CM*$ySsRiWR5ZP~lQPca} zUghUqtJb|-y+`QS6Urw8CJ`5-)n4)&{4`QtIh#7_d*?^ZfS8 z?Bd%}dc}3=qoeED+?{!(1n;6yg&vqy-kFfODVGj;Ky`oxGV5`T0d?^iu9zUOt@>&m`UKS>+K+c=O_3j){?t ze7YDTt7SJ+iZqcJ+M)9rwI!Nitgjm}c%K8=SEda8CH>Y$ zY3ygWOM_QF|5M1{Abg8hOlbTjjy`+4Bsyt>Z&HVrWxBC#n2Zn&hu5~QS@ksb2Yx1< z9t0I!fCrV&g?ox={zL04fL^NtUS2dy zGqR!RCcf_6+MR~9uJ>jk;#e)aG+ZjwfALlR=9KYFtR$ipFe#6X8bRH0S{FGEhx%uD zz+K=?-8i>rJE2Rbtg?1!zPP=Cq)4;&BCOnpez{uy(eS%g=X)`-Bl$9#$q!+&1U9-}kUDN&}=}J=>wbxSXR$AP#Xog}V>+x4d>!!DOv2-y^ zxP^Q0KQw;gt$%9#X7@ieK4eVSD11(Pv&QEv?9fu>?~}c-#+^YJgjQGI$%`&-C^I`8 zTsWj1%kesXMB;H7Q|%)`B7`vOnI-|nOdAylC7PQ6XRRm&jtel|D%$b^9Qk$ieg2Kp zzw5D0)IG=vno+4imm--L9I*|giNU?8YXfM;TMelK<_Cd?&dfkZ-?ID+nd+y%4UW*g z`4@_z3lF(pHUH@Qb^}50@R*rjFt%oGYV1^@V~$ZrLL^h|#@3pdxpNO3yDne71qea;2R6|kYcZbF1GRqFl^4^Nf@f0vBCpGD zgJXJETY$czGmXNGhZCXGk~>MvL1jW}{sH0%KB$TD@=0!RHd1pE+*wrpOba?$Ao}2; zWDhxElD7Fxbx5%tce7|ZO+-5-J8%_$!nt6yFWWn!L_R7Bdd;Cgp@Zd9r7a%F9{nCs zi~gohp6O;<8rA-OcPg;!X7q&k)?6&vVb%VL3pm=LZ-*SMhYxej@wD#qD&XAXUY!JM zpW64X8f5L*`G;HI;~))^rgzGEt&rAv0Irf}@`6%wxukO6=+Y{N^wWgBsn=EiWG0Ih z-xxa9x=oo2RcEw$%mf`o_W~$yr^l)v(xVNMknB+PoPPNH)*G#8L!YhQ3fV7y?T%u* z&n7l2_^yD`VM9X^N#m=xyrK1I+F(?mLH_8+%uhLO7o&r=E(#koU(R2;C0z2jj=emL zFsl~d-nf!TS^+8pA-!5)L~iBv4SCFw)W{bf#MWC#kddUlZl`JV$_l-^4PD^g)%3vm zVd|J=j1oviHETwYvGaXFTPk?(l4IcJux3l_(0T)JlpP3c9wGU1AB3)+YB{Fa&u_N` z`{;WmmKqkfJQo3OLCS*tx5iMX3#p3Sr+J`uPFHidpp%BRR==!61oeUL87bPF9xcOE zO=5ZpfxoXEx@CM-RsDp}MlLUSHDOxXQqB|FzEtpFNZF#>hiW;ZGCVSj79Z5Eu`6@> z@J*~_>NFiL-xm_N#5;+4j`$kmwz(h7`o3@P^18|9etn0{=O$3!e_XdQZy=RnVYDZ&_D;FcPuI~HfBA+cdWDnKo^N%a&EKrG zpZIN@`*#xoy7|!N3X@0~L9UsIJb~Vp^Lw`3sd3=NxtNUa!i)CxfACdDuIzn)s7`;S zd&*U@P6&=L^yO?_u>8g|L@RdE^J?s7tMiy{lEHiR5rVQQnCu_AdXRGmwAE?GB!JhV zuKL1oq1Fae#oEY1jbIr-h!w~SEpj2rC4-zzmc!}?2uqtDdd<##7Ag{XyU)%0OqtPJ zc5!vBAn1jAxn%*bpsdE+0GMp`gcDGOh1Ks$b<)oaCt%aMGGF^3rE+RJ=QLGE<5H0wA{{lcc z4P7%G81s>YfH=Y<3`Nqhp)nbEE{$F!|K-<&@%qa&$ewuAQb|M+vG`J*-0|+?Qm!lX z)^=;GB|+w^FLt!Pr^8K9gqTqCm(|kIxu_Z(^W)#W#+LcGh(?W_UO@{D<*3@o{;ssJ zT?XxG=`nRqshEYVbnk_#9u+6tw*^j}$Qg^{u`GW*sL36|H3u$MR?Y8iOw(dycUIMq z(ry-r{0R5tiqjowsbE-nV7j->><;4CT8zBX*ZeyTGqqF!+tbFDEiAWisnGrt5<})P zq{oT`jiE?^BwbI&d(?R%@(s0RhR1t*f}RUCD2W!Rxz4; zYYTD^8;dppWCKgQ-n#Jf2Vs(-xP?FR8&2=kR?-8whqo7XENwe9jBCs!%AK4yngwG& zq)d7D&YWi3OXS&JEcQ^gX~L@th7$`i#`6&pB|QF-O^ZI+3(>^hgra{MmUPC4%IE9T1Fhq$m=}|zgkaplq$fwwe7(^<8CJJBde>$L;EVo_W_fi4s=V(9Qw$TPbkNK@Ac>ny3H^8y#Xs(aIEm_ z%dV)6;Q5Qs@FeMAV`pV=K-u)scbLB&OMK!9X3u~mI!H-9>$JLY3-#$4o}Bax_=oBz zH;J)*wNA;}*SNY8`g9u%CVzP!(uyH*_+mu%~HTl?+a zbBNZ*@YPO5V2(K%vJ@~py^0gYx2I6nb5IIc8t=%-g}j*>;?)NNw$*WQupAn99u&(;ip{2bkA%-3{yEe9 zWnp5MySxFLi{Ql#f*MfdDdL#{fDgxwNUrEyrm)X@hir1l=Z)AgTye-B2A+UL$bYz5gYscdHx$u{e z*{UtUAp&Oi0}XK>0%DaSz^k;wTP--9%wUU+%($pq6uy)j`2RY3Nl_)CbLg{ZXORoxB zyr2&C+CH^IwEAyWg_TycLDydw%uvv4$|4BJ55WugN{up25jB%1=t+NwIo82DsF%n)^J3hZbE=*6@gEK)=@)A)pLR=H zbC=)&O?_=$mkD>-7HZrzzUp z{}X9&alQ8cor9=fjPd7Zuu02oVC!8D-0*w1%btNFkW-+Xk*~zn$=flTW3aCT4kZCHYlgGUU;2<^k zoVCR+VqWTRU9NGWIi;}zFV1d1O@1n({PDLe&u((aPOpE?7eU*m`$f`1GV82;Q7apM zn7zbT2ch73XtX`69(5?fLPUvCU@d=vT+lRoPG9Iu0tbhX9d7)n4lpL9+|5}H@Al@B zD323Hw>7m+GO@Uld2Q~vchx;RJ5TM3D8X{LFHO;qMmRS*YChXo4aRbeK+L!Je=N zZ9(GA172S#g{ah8fI6kA1&sxWXF-6++f*}vu*Jp*C*cPQwpPkLKZvi=%Yd564?VG2cCX*5Bv>nbax^d^-UNb+Z2i}L_QW=dAD%K#jAuN34vAqO6L%KA=mToZvKs$aYcbU( z>&mp^TFeRPSwj=3|AG<*uW!iBJTi`ft9q!-m7~KX&a}yqIh>Rna zH&`yPzA98sUWK#uHCroPu!woXDE1y>z%;t$4?A5<3)t(uU(-=Jmk@!7ht zSehiiF@@OLs?u{=A^Dqg55pG@f_6hLUqC@{Sz0;4PK!-5T6W@2==(Q`1JSbV`4HP! zsx?Dy$|YrqZdwHj9UY(4zJT{g;^m-hgs0I(B5u#z7Ksv=KC#NDIeEPjY)m?=TU#zP z7<~@4gH)$}W{;V#J@th(cy9oIJ7^~>&t4_@>UUnYUP48DkyEPQb8Hp8HX~rL%n~aS zu%t)EfjF!NP^;#CdehW0`jO7c+S>`H5Qn`Sm!L*6PH=oz3>7K(;1FbTGiiD)k4hq* z$CWiLzwA`x&v+6JPnq6I1e8CNf2kck<(3-#fV#-q^c(s5+PD8H_1rI~m4?)uYXjaz z6&6ulxpN|+4fY(Tg(M6hrX~}!cQJ>Sb6O-!$xq8aAHR$HIcPTYw1m#dYEP&{SaROU782on?^?Et}0B0v3AcObWB zomM($D#7wZ&n*4&SMUPEaN~*7Gddt^EUE#iUq!2k)b&g7uP$?0!!B(>!w!5`=pok{xjr3O&}p=XU*^Rkq)<3;gK z_!x?Y^+t&NK_Fzw%mv0d8f+et1z@o4rQg5(f!3D~ipUb`RU`oViv(UK7)` zH6AA=?vC0L_E{*KF+G0#VgDED5sM%&uG)9{pC<#^MeIY#%ZdK7+Lbxo$ku^=MyqTl zjC`+|3k}0e;>FtNoT-66Bjx3&*`>~%a>SF+@gqA)j4SA~Ev;wAyyRo>cJ~C=!e82b zEnHq#d3ep6($pPpz#zkQf%sH1kg9&(au-oOYRUcV0`|tNCGk)VQe&_hwGr5b(Nx{9 zUe7UDP-r=X<(9P+uowYrQYY1sgCU1-LY2~SYPIE0f4dZfzrfrl)jZ{+sAZy8h#ZGG zbwz{nqh!aVG(vK+Op3NPrnjsq%kQiwBIE2GAQ~9iMQ~g&83DCHZ|+G>HogQVd^cl0{danQeRmf)@(@ zVBZpfz4qN|7TXM&8XnIcIna;2iChTd%n%hN$j|JYW3+ImFpU@$`A4^ zQL+Hn$lp8c^WijJWHempZSz(iwX+7$Sk@v(WXl%%7^`8G&~=K}v=2KMD1=4GG1Rl`TAyzUCIlBy-LoPUFu_?N-K@kJ zh8#&_ki0-~9Q-JT2;D)1_R}Cpg%;Tw-8s>y5HCTR`c9I8xpDVe$LzAe1-Nf(FpciV}7z7eg{`0&&`T9!OQ%cFV9NzMIN$?oqwDN; zo;la4;z_{1J7T!RgigOt%QhuerJ%B-_}ilU@F9!J8|Q+i1*ONVbhx*0tzv7_H~f(i z22mczxQv$YBr$fa3xRt_Lbq+tqD)2MTcx9g0y0aEC6tk2AjKL^yd=2wMhR*MLiM=m zG7tThlvNbTw_FO&#*{j@OHZ zmriWx_}z}|N|LqiW8%h@)0Ph6#zU#ofx}T9dTVcFPX-WGba`DxDX)*_c3t*jVbaULI?CZ z=F3BpBPMs87%f!$-`C0KJ&8MHbatW`2zgN`%?E~ zMC1N)NrqNNH9hBwF2K5yp{CBP?)1QABh7najr0!S+H0+gJgVbI+==@5=SWry)AE9V z9W!9jSv{g%Lh+b7D6Zd5ce4TTw@2C=G&~LWgs8(#5AhSu&W6neiDyg2+-xvRg6<*1tNkMOcHwV- zZgs&5uiUXIxQUWkE6)bpfIiL>fQ;PQ4*}Xx&xo>9NntEpWzmT z9N&28q+U?05R@Prj9Jv*)Bt9fD4AzA(eL4T7hij$&Y(ihz%6Y>r^1b?plPK-z_u2; z4IrlMDo-r>ejp=(F3RX|k%Vl!G>jZUKBfQ;7^Qa?Z#gXeN{Z=#c>MoCk^Vg?W;}4K z^L-DFr7);Zt+9Lbr6)*IJ+Fx`ATq9a#kaMi7uMQSSzTx7t0s>$bo-6OQ@pGYxw9I< zV3pjqUx?49%zaH4$0Ae8a}~RWC;Qz0hwRu@{iQ#N&&AchiH|y#MVV<3<-f>s!Dkvc zdtxY?LE_}*4}kTBV+E1@A;&;{!_uE7EO_NFS2mUJ%!Z!D5m1GU6c{HE_Fac6fa{L%;hD)hNE1}=Ua{EVh(Ku<5 zyC4-SDXfZmm!9NR;Iy

zqNZE~93@8g4bY4>?_3Go!3!Nb0|Z#$pf)?k~ss(!)1i zhj&Znrmk)hygrH|7!m{f^LR{Gani@UjCc(zk6d8n)emq?jTu?w)8vjKoU_5S zpYem7pNl$Owtu58)afMTUqfRjR?N~K7>tE4p3fWJzIRzOobG+NXW_Lmu~3CKab@Se zQXdk$!I=AcCk#r}6nJnL(q@?@bnyt>ZPRsp|Nn;UwC8<9SpH3RP7D1z*-@?B^-(3* zFyVa*!Z@^?`lSPIHAfZ0pv1f7aARe3E1}{{dh5iSe^8r`A?h%Q ztuEqdG+M#4bqE?HyMC$DF+adeHRr2(lmD&><4~8^8bM~TY9?(a&kt4jUn68s5w0R? z+CW&3l7B@&=Ew<|V|7}N$-gYcu&J^R0&8=krq4 zygqN=dvlqV7(2NoMXDz+Kb!we7$hG7ivFD6rQxvA_bi4?X8s zwjTch-ECq15n_)GQXlRBq%(?~ZF!|zuG$v+qvEHz@L2nnrq#Up zn0Yz3WogM^mT^AgAYQfE8=JV{B?~3iAo#$lWAe5+&nBzyo1XLahFZ2Y zCAyzV2fuq;LIc~s@b=4nh2bPn17SH%n9t)(Z>;9IS8u z2a{>5i4vuyO+#9RF)wl@oVAxC-DP?HON5M*Dy{+kV5nnob*+V4*vz{__LuTFKW&_r zU(D+7VRc-79QV$#UUYCz8W8jgufuyv)>}3?fu(KFB+A`R+D;EK+oQGUuMk=D{Fd-| z2lc&PpJnPJK8V(>wDyiUqC8aJ(O|+2EWuBI zrWj81YY6#<`?@xN-TzKMWjvn94qfp76l0FULN`dflkvqC+Yw75N0gbG9udx#BIt=k z+;FN!d~f6w31Y@(>Li5}%i(TagMzv8){7S%2mcmRw{}+%h9`T*d6w3C@^NdsW=)Jl6)|ern z6BCN^-+k2T_R{-{i)GimV>`Zzop&TC(up+hK)k^aSXvVTNRMwU8iX?oA-p5mXPmgt zFR=4PXHKh}@b8@qDW7VS(ZG?bu_1|wh5eENoZ;!Z1BZ{r#)B65wUm(Hke)LPRK@WP_~j_}>>ZIjkfwQN)NNwMhn~ z3}(jSv*4nA4_kawpZd?1ZY5oQ?^m{;uv01yxHZ;bHd~JL0(R5JEvB7QiV$WCW)ixo z50QZ*SUtEx%INQ0-ybUZ-Sc^tdy}`hRoH(uOJ*IdI*agdP7Y6mHcWXa@~{~{-wuT zJORpiOGYtUqlZWb*_~5_~w?NvAHK$5jXP`5(;>c}rrBbEJ5rvDVP3p~TjH zf+stv9v0uIFA6oBnP2}4H-I*L8yi{+vrgxi2u8vd=N|ooHhgs*k3q2c{%d+Ga^Y{) zUU;R}`0w^db0Oky*?uc=v2^CKJmnYmujQz7akLgGH~B!_iCi==9&u|w9F3rGN-O-- zO8dU0z}lQ_YqV5e44i&3MDy5~w`a(md-jOU>NDE3Cjgd4Gq5je<@AozU_cEyZQUte zx+G5_`w3L7lUNfsQW);OzTo9^#PLXW^!Rf#yXQ(+f;_oG+|C(uJ3wZNRQy0|+~+_} zY!><@G5c=*icKyyu}G|b|kwVl4V)QHKT;%7nLx`nbu&e68Y zj*BWg|0>$8g8mfk!p7PHol&g@Ex~&Gf(N|kaM<|B!O6U+#s@+%9N;qLF;frVQ078S zIwvgnSddHr>MnW6H7B021w^Sew!^8urqah=V-a%%|LR8>(K+D`Y7uJ>bBF#7AB+&h z<~_H=6XCUBkcaU(|G)SF)ezDeVC@?b{kgvUD_rMfL5NSpudLRef<3SOOOpj0*~YL7 zz=yr>nLP7V?D3uN7a%J;x2I_3RsQU*)uDX__r+UE~q5<)lSw>-BqTp z)+Z-ExFNt?(?HlQOR6?)%c%>Rv?P@wIoP<+l+xBG@RJ81OgxUZo=qE)OPk zqyO-{^CF%wbqKbeix>8J+OaOnbTHB3God7eLOH20n(O?r#=f>gG~30{3g)-zd*j}4 zHw}yinN=JJ}?8FT8b$+SiAF<;zeDB%JpTkSq)F!0Y{`9ddv~@YZ;xfi5G;Dl>^CZhNBVX=zVrSf*u}%&oFFUA3(T2$>S| zJVVM$TtQi*woKU@n?2VjgWR%zE#JS&9D`^2NBcSe)I&W{CkLP2_v^q1g}zbwzH<~Z zd*6UihzJ%?8@@y)h>`#Yz>m0Ewb zby}xC;6QbCDWwR~x|wO5hJd(d+yqJbmA0fTYt-gr}jVkw+4p; zQ(Uz`8GBdz_K>5(mRVyyj~W*CI1G4JA6#pzzx!B2UT;gGnsFB-;0;ZZR9V?jvV{p_ z*GaeCXM|U~Wjgstt{Uj>dy?1*je-*fv{ujz<&tEQ=%|4`w`82Pip zk@Ir&&_OCb!AL^6dzjNms5hr=sVm9b~Y3ucgz6}+}GwwNkA1p>u zsgbB+Cu6!3a_xndmu~2Z7P;2ky{Ww{sSOv|= ziDJ`(bGexHY}PFFW^qt8dkfqN?u(K^j=!6AA|`B(#?B>Nc!OK?FFZ#fJnvUtdhNd$ zF{bc=xA<+(_1#rdUAyOb*bwgoBm3DBp)gai1$o@~`G~FCoQ6i!=ra`ZA40qAXY?uI z&*)Ph?Qm4=16|W{vUMNqbN00L!Ue`05Sl(^!~5?3&O(rxZp17#MzC4iY$L#m7b7z@ zeH6NThagYfF~;@rrS?N4_{o!G8wN%9shEJBb1rK6KNhK?;8_ zMNybj(0Fb5cR?fJXF)?N%+TZGF0Bb3U`Kd;PF~5pj4yc+LCM`}_`)|;|9D-ClkR{| ze|H9b)EUO!rQ<&qC4uvQ-i*d~1_3@f_6xr$8*E~`gZSK!dfTx>-X@Vo)10hH8p3FW z>s}uB^_L>3f2xA7@@&IW7q$q+)H2d&xrHIId5lX~na;DI6bQAvvUkx`!_@zgXw9~;$}XeEk~}Nc)1mEb#;7DSI!|P=j?8TE1X6m z#6iCVET(M&tk1Wl%#V=eYA4+CrYCw5KlI3P{wV~BvKD{Y8Trq;b@hOMd-QuK!39Y+ zoKZc>t`GCvIR?|z^EzsdPXXONZ1FsEJ)+&7yHswy zm}lV~^vXBXo9c2u!{`UnPWvU0ZBxyn!uV7|>zOO^6}~}3Z1rTTidN{sbD(Gw8jsOD zrvtDs!wPfk8{_%2RJ{zEpueR9Q!RPdNDB`6F*-DAT6V$b+MH6)~SF_nT24ypY80| zQC1vNhK~FnH z>s@+zQyz(b5Y1HBsae@^cqkNe$A!tN*BbHZX#V?xld{v!MRq35F?2iT^~C!zUoy4oXm6IJcb1mN!I?Ar%^O+E3Z%&#Q&CJ=&_+E|YL zhk|T@bUsV$6OS`p^AQxFr`zslbgin)g2ZaHq4sp#`1J;3(}-?q4x8QZ6P^FD8hiiR zy3f+`hVW5A_GUNUrs2-OM3>us`j7zU01%@0e?^`<{Zx+G$~_of!|*2CoZKL?oOa-} z_h`fC04a^?JcB(Z92##rx1hb>cm(S@WR7M45*pn0<`cidu8q{x3LpD6uZ zK4IP)T!d;T7%cxJrOl#vHoEGTVm6e8X;yxhUuOd4*QegwJ@DRQsv-v-#IH<+92D0y zB(=D^4*Q>fKY6ClwZuQ@byv0GKaqJ8h7y@?g&dr4&t5Nj|Bs5X)89W43sND7l z?*~_R1=MUc|4Z0&nFW9(@y4G1n}y#C zewkzHn&M^LntXR_F97JcUaWr|o$f80d_kiqTRnjZj*dG|5t&757ctz)h#}J(;MFw)hT2UO&6y`Qie!V`T zCXxHAd2akyKiuD3|Fraf)$#mWorJ(vyMx@FPi376k~{wP5rNhEbyUH#}vo*D}#c@BKj+5;6oPKKk zWld5lx}EVUQn=M+xA|{Jr49=M+RJ`ts*Qjsb$s{q%9HP<2dCny*jaWy2AL%?7uLMU zf|`mQq!0<$W$C8BAz5QdyZBrP=7W3i>fBJoz}8 zx2pau%+oo|%x8YaugSR9?Vj`1-GSvn$&KYBaWv?5~H1`XUaG&JMBI)@Dhd97yEPVIXp`mroy+NgoY zLjuYd?aHC<4yrkQf&^{U$j7RW@n6%Acdyi{3QLp-K^2ak!#R-^^HoOgZ;U^Z-(3H= zS-)8~?z>ueKq{<$nQ^_LveN2+KUR$}k`Sh&lW8eGG?T)HEEnkTz;XmfoN;h0=N?OS!OB@gLy|CgL3=KvS+2c8HYFZUDIh=}hSk8z&b zwK9YV!t<&Hb6GXE+s_A}x{(2Ss)S21ChATmOqE27(St<&nDE!{+_@ZQfoqy;gb{RY zfCD%XW0;2{kBe}Nf$aP~)a~E#eg8lol@;d_1hGE$ZvG%=kx%^{# zG7Go*;wHna<6k4Xa64`)x~T@`0t@LRgxZHNt$fQc8x6+BW0Axw10KNQY6#kR3_%T9 zCdUdHM{dWzUUKQ!W2&kDUeP@A^#d8Bqpf`yAJf~ehI)C_U@S<5@Itvr+*T;jABqr# zT9n-aWu~l_3ZMd2<1~$u86`Pp)|s?kHn?8P(0_E2lT_*1ia1)cQIJC0`x)d=>$=X# zp^ROR+Ytk2pFqavOwmWroH|w+znqi#CSSb2aeeTLU$;c#;>JK}_nnwzDFHRf(K+x7 zPrsxMC_%r;Y%md(mvf)i7HCt4SJb?_zM351s#ZO&qLOKu(H9XPwc{Fv?3KlEhj)%c zoHtvV^%&UQcJo+vdkaeWZH#hqwV7N4QqOXHDJTiOpsPA;;%uxjVjnPCq3<=e=ws{~ zE0*}FbpIY+bNFdhAx)W{L~>UU^4&WP%7mvm19k+aGpT&Q2>bv!sP_aTYpW0wSzWr< zICS2=o9_aQRD1a1M+R?pfa`}rr>o87(RntUI(h!jW1acpqc2)7y$x}ko`-8031Ln7 ze>5w=ymIv**HB8W)VGkoK0vE!xC zn4eD!z6-DJJ^d+_av;gTi-EWJ&3;*P^qrWTvu^@Lv@fVIN{x-=YUwQG40|MKEo|?$ zVUbMb&3j%OQ^M_irBG;UDnEIOSt&y)2#m6HE#k83Fi{t0lQT#Dz*53HP z?t3i>bhz1W*^z*A+TOsybSL-E&)fWf$}1>as}HT=ytgj-JlUcBoLhGCIH0lfm3~y@ z-Z)?3OcHG;B`ygrYl){QI~w(U$hnAm2;auDAVOD8Qr<9KPw*Asl0XB@KL+!NSpz;e zr|{pYx3|4fGwsDDUfA4CeG^n$o$0=3tOZtk4i@?h1Dw)$>G=bc_(wf(NUOs2j>-+XDBX)*f+7SHq5CmJXQ-d8T9lX$79s+ezG-o$c0&gbuVS=kBFnhcrn?$0L|MAbofMVzqjGmKz@ z_diaNFvRXuY@vk(6oY!7r@ucR&g38Y?~e6Zw^XlJ&@w+Me{xcvK`gt$sC;_uVtaJU zlG#IjeRTg12M?;avd)gxl=qyPU+m{hGGOSj3Ym8uLV$aE>@yzAQevppn)bts;z}>D z`>CBSw9RBSbS4zY`xg&7hlxnmX&FV*g0$ep<>?b8t0FeHBCGT8^KB2+c$VAz8ambG z(wM1(V^vm#dVgj*TjDy|wPVJ#6YKah%9hsnio?fs&9Tys%F3h$9gsv7(<>K=o;>B$ zntFBkREh__K}!`E8L*6`XolXiRmdrm?_|DNo}9h2{h)S8R=LNbjc*; z1vbeS&HvRE)NEO4LnGUmbfW*pRh6E4-Z5^?+#TGt+#HRUD{jp=W0(de-3qtzJ?H&w zZ9cDiZwCIhT}O+}W72H6s39uwto-ir)EMEtc)n0q|Kg2iXX~LWem5$G@6wcIESA=K zft-FC5z1dyy+3ThO~`z#?C7*Sv+#Z7wcBTYN1JBqlF}nj9rbPZH_k?t<^90A$d(G+UDz8fGCjU!go{h z-qcKxe5(kPkzl3#wP8Mb~z|2Ek{AbH~6VI}y*0wg4sZKU_BW%X{q@9RgJBpSm zujrV3QMT|b8SCUCDEo?hoCI&V(z>9%dhk`PTlAj5OwWoR<1%%Vk*i^aWcu)6iR6To z=vA)(2U6|(%Qa&$8-7XU#>OaRq{QfOzvWdtC~8OiQ`A63Zj;0`5E*X3bG1N(-ho8* zdp?qvEa~y9vEVkI_z&-hIf&4)S%uaLXqos;(`WsYn{z53YR$W}U^ZU18H%;;u2-0w z?sa%xGsboDl&FeCTS$IVJ`jG(m5K>3k&x3Cbg@jC+x7f87S?HT0zA(U{S2>o~FkjlbGIrn!( zCGdv+2ctzimh8jsfaqiay7wwl4j#!o11`fu=)b4|*6Hm7u{IW#*vrcrV5kd1f4^|h zG^(9fHpxUo@KsdUGn;hwcy$#L10ce+63~d*pBr2L>8;MM;*(7YOvM(@fFtq2$ZS#4 ztp!H8mthC-E%&mOy)S~A>Y{7D=tfsWkn^Q)wz}iG41|YiQw41b))bVpaG8o^M2^6Sch4`VXTrbZJ zI1wFlWyUeUm#QN^G3Vz)c(<6E0NX`!9dll-9vMy6Lz8pRe0+F5#e4$W1A!kCrlE}H zh3jzlF*LMBi2W|V$GGkK#bFU9;BJlIT)+6^%XtL~I=-A0u;F&^g>ll)m2eM|a&%kb zzgf9RX!heuWk*Mz=y`Q;?gd%8o5r}5o|A)C4+T;8Xv-9~1gPdm-w<(xf%zKkx^O9Z z&L@cPwn3QVFyQJ`Z*aXAz-k#9uY(6QlVG5icj6roONzJy>xLL%2|f%&fG(`g7B_?Z zY;yHMCi=!!?m0lhu_`A#+W`YIM;cq0*cwhbuSm> zZamGexganyuEhW7=w1V1z`YCzhFd2e?4(PV^N znm1@^2xrL5NFRzrr^})(gi>DO)1Sk1xbW?tUY$!qi&~Ze`HYRt32AKhrYI-RA-S?F zV5h?SlBSZ(CiCcE8;{in~Ijzv~gPDI4KTRSe1N{BQ2sK%l=R1J}m z{vs_WeusxB-X7F_H^;XGfi@T)!gMmQP@Tff7ZmO~uq`*=4^vHvu{-{VRdpyv$ZVs9 zFJw3!Mm(#krqQ;yXERxUMI(}6XvNlPQ+(|;umx*;%BOD`SoF@U;uh0il%HPn z%6zqF3(U3Rb2_eC$w#W=71OKOfufrjrStIZT2<1@ilwXJZ5mq;_FJ-~^v7{rw7BZn z<`-xS^u>O6`)&_-xeU&y{q^gIL1mM!F%v5@V{}Gdhy2hsuNX?<^kB%6Irxm=1?K))8QeL}Y8vAtwfO**KHQzSX zO$7y0l8jvK`~qd@SEi5_tBw~0+=O1mLf<(!-Djqbl5>y9RvMiBPp&gEpwn&5qL6j* z2STkmr2glsHw=x=9B=B2;~j`8na+gAJ1qL60Pmmd5BuPpWLOGAdE^b|Sjp!7 zPK>n9;{(S``xlgrB<>}D|CAJHE5jh>YzSl)AzsCrLc5)?T>eO6ZQOjD+fvquQ9-4>81SOQZq(QWf<+oqnk@IK~^qSn1!P5OnM;>JX=}0`6BpvV@lP)Sq zjI5P7eM3*V36SrZSZ8*r)Rl1S&C2=x0Vv#mR%AsHE%Qy!R)3D+wQO`ME<1Fw5x}K% zeP}ru4sFS?!8Nv+JIm8_LaOdyUyZ*FD=RIw)}e9wj)-&y8i20{eo!EC|MXX%^*Ta3>xjO zF3dSyy}%#;EBC#ygzSyLpZXLo`Idjm%~vrO3R|$ zUXc=zBTL{J_%{YqeFW_MkGTbKuOmO6VJ(3BF%sQrH`;ylk*>o1k*{&A;rAF+Pkqh{ z0v8O(=zRpajmL?MiB)|qXFuM%AARJ;!L>4&6L4v>uPYa#wuC5asfeWw!CfY=uqM#x z_W8Xk;g`I%dilUsWLsNZ@xNsqUZy_{Bjv5w%F_r^)_PP$ZIt26 z9%iOTf-WGNp+V}x(tXOHPBS!R$ccf5Vrd8ZVdy&5g3@1@?4 zg?$A>|IM8rNRb0eCi0Zn@A!R<%kOZhi{!E5kBXcb+|`+@4*wD4Y6aA~T2oA{xyEEZk=bYfnrVAy^Dn z9;pXL+$gR30lm1NHyWh|iXxU*<7i5e%5%RJwB`ymV5ih<2hzkFEHkqolva=9qe#};*+BC@j(F$s zu#-NR_yEPSw|0fHu2Yl*Wkb$`85pG4Eg(oz6dld4>Le77KKxlBLA7du0n!H=^Eb+$ zUjsOny&i|Un{7X)#mc}Ct(UEDkS?@zUco{bTEBSGW{~V5tVsjs#BpCNOO;OMwRJcC z>-$<3fQSr@%?mgJfXI5Z;k{OPk(<4;{@!$T5&KM-Oem#ltWlvz{J7~Uos(kyET%t& z5k1z`9RWf`5{&>Uv|TnwIBBc+vEX29t;dUJ1>)&gkUeQF){jgiuurQx}qr2RGXiMjdnQ2SY%H*-i$~#zE+rP%`~^oK}`QTE-$?`Zs?C(P^XcWjMeyAo56IYHC^NZ zqcw1Is?SUdbHen3HWDBRgY_$KL-~e57yH`C-R8%XZ#M*lVn^6xONw)Rf?qwLY^fm@ z)P{J5o?B`*MO&JstLqTMFA7XDSpaJaD@nll4>Z`tvD6||kn#Y`b7oX#!@qQbWe+2L6VY2St?L@cm zXG$iTBza2mVb$!XKbB*C4)@5XfzkTz!+taoyL}EEw>K&p_{{c62GFNZlUbgV4u=!h zw^Y#lm@|JC8^Nd-sb@L&eH~#ij=!wxztN(K ze8eT_?`HfM*a|T=HvP!DzHFL1sL43kK4VvYPm3}|Z>`P*`LLD$i(a4yda#v}7e|dh zZo?k8;QqP(hTjcV&7EVj8s016CbYsvl4`4m={nOT_XUJl=|4ZN?zO{b3kt?hnv{!R z`DgNEb9Mq}0Hjja!ymzk}t#mQ0TBkZ0NxkZS>|!9ylL zCb}vUKNdsl#B&c=cf^^-d-VJFlXy1omEh*P;Ed7PQh0E4u*zuH!9I(y)xenEZ_dKd zlI_%1JL@ojkJed_59-~%%Ocy_{f1aD=M3SpJ#P`a~X6Ve*q?Hk=+s;Y53We z+T-*4S7ST7vetGuJ0m$8QiFV2Z?#Wlg(GFXxI@S5|E!k6$cg$&cKR}4P*4fTBxrp4QwP(xQ^R>y2lW}o7nS0 z;oCgKRg%a6-_fkDBRh>@h4f4hCS9oMOne8sz3$FVfA{v1O>o?Bm_=bhG=sBu0Y6OU z4e-!5m;e~BKiytDuIwjE^hD`%{ZASX<`xIiVp=V$IM7hSfr+T>rFOsb3Hu~yiBs5; zi)qX4Hjb_i2hMQD_JMR{AbyFg>;V0b3o@(dAp$YqULAi&1eMMu38W0o#J*a^{TIS- zC;nsrVHBnzLXXhXnz}qPXMqeYbiALzAffj9gQHOsKD6)M*)U?r+~*~D4{lX0Y%r&; z%TMC=ctqTA(}MPfIORvs`vEiwGqrJVqner#B@TEak4Kr4^5i(#pO!q4WiJtLVDFc( z1=7*=Us0tb?+q2Wq95qYmZ~ zGA&Px*L_}N7>3d5{c0e_o`JHXq!Om|%f>N=Vd|+F9nF%H z;mYTHFJROZ?vVJ^;RC$)kl%vkM z>HJzf1(ebxj$At7Ttf_qP|pHc7(M$AX!Cr%Ld`*FHH=8pD6q&I6G-e0fdHN z&U47#0o=9a8Sttgq{-KNg8w5yRY)YBZ;C0x-7)>#+bAFkiPZ~!TJ17a8)O`XB;es- z1^hManq5B8z19w`fa-x{J~tTceS21T?cOt~=qE|71`Te6RgM@4@z-^w?2d{umiMfl5!)+O=3 zu87MgPs7W()__I7=T4MZQeEf(@d@3(`e{~4^X@D6Swq)^R~|RKO(`b+sp?^<&Eiy2 zKcww9YXcuZagKkOzbV8&a)+2{xJDBzrvGz(!Bwl}w8sYE&dd*!Sjfpqi8oDxYdg=J z4s!QgD%YiZoCv)v+wjz_to%U|;1e$J`r%KgH{8@|Py$+Ly>@qP4@<`0-?($%>+{6^ zE1ck3U=Xvm^tJA`XJWC~iC9$V&|_NQET(_*D%ihvGXo66|3r3!f)DmT7vGz>2<&78 zY&9p=*97x)7b3zzEtU?2-lCsRm5(FeJ*q@P622bF7H;bB9$Z|dza5KhT5E@v8N^he znqJto4w5t`IZ|pknLG%p^1Kc_(IVokNk%2FVhJ1BUg!I7GHR`(c$Nt5pYs#{PUg)$6n3ru8WVg z*~{aNg?di!3RQ!7#0EAr;);$yUXata+;1tAO`@8P5Bp&BQd%7lcVvKGLIniRA6B7Xu9vg7eMi1a z^reNG-+KYU6VfQV$D?mioHv+W`5+sSxSutPSB_?_RB z?><~w?+Zit+i@11e(t#OD7#yFkvPMO8x(U&|J5*E2V}$caP{?hVZQ03nQ%GO9BU=f z*m3!Gh9Fbl`yezK&ei_z>{;iRWu22J!DtVmSO}88{RNhz{~Ir{s2gEt*JcBiSAD1l zR|m>X$xw(f?Xp?pqQ8t;XlMVaCv3nI^8J1Z!Lj0_&%X04VXe_tS>JG{N@*-#j}B7( zIiThf31G|VgRSJ9NVW5KZ4O)RCq4n<5yO7ZA)R2eYlSNK-PQ9C$Gy~CoSI##@H}p& z{pWYoipE77qb%+CfU?T{z=Kyx&NbI#1eS$||4e6Km#n%km(osrro}9sXE}n*AISVS za`f*`C4YK6{!eTvFnj>fAR888)~=_p?|P>IfM!TAMOJdHbq}9cd60G$SY_A3@0Ce= zL>t?U{Zfu1e`UP3I~Av&hbNdz?>2NgNC?hSLduQ40_xaMnS;s~YpHCJiTjIimmme7 zq3PkFp~dL)2)SWYPblFE3RuWj8JTMvpXtEZr|;gmhI(~^8Z~$JCm4?3QvC3&<#iNx znD(b))uT;;!QbH=_s`*`!y)5#^{cOM{NyRkGv56GKXizi9e8i5aKwK^EV>gU7jZY9 zN3T*$%jv#0e|+NM-s}pn1*1{@&R}83r%w+>rv?rSWfp#+`Avj;(8{7ua0^2HD}JXy zd8!zt^eR5d0!qr1Do~WAINmi(S^E(Ery5B^ML5vs_iifdM*^2*m|??6e5RMX5jS_z zlZLrq>%S8zIN~vyXsMEqvpe{pD`*1XGd^sFpc2!rgiC|Fw}8+NOwHpV+1m9skAW?y zYNM&jr#OJ8+XPhhmjrx0se7L?71y+ww&KKY%m7B#_hGQq$lhzSt&{F^$!~ttEqkFv zr}lCic5>~KvReiC`C}T!_<-51Z4EF9-Y#Pi!DJ?J5ocvxdI%88VIUtctgOD}GbyUL zZF|Z4ud%sMu@h;`bAW2Y+EGrQ$5|Z3atMTUHuZW0MQi*nVQQt;5N9)Jr*o0|HY)Q1 zGaM=&q1H77Tu~p`7=p*1xjpFQ*!1X|(tVW(td!23MY)5OAR7T-+d$+^xowYyg@OqL z`jAk^S5e(65XiJ5C$=n|Rr_PjA z?R1!SSM%5D@hLj^l9QmOX=0d%nl?7i8(f(#nl|)vh^d2AUGu7-W3S6kRD*&y-w}9X zkAT~GV7>*Fa|7hiFhhSCUDrN~tb6smMGZR*j0GsMD&C!9Dwh&{96zMJ$zGj&8xi=? zO?}bB9SG{o8^+2QspozB=)`|BnBh3pGav-3mW>skLwLyM#AH^Rp!GG_8Yzg9 zc)y@N-jWiSku8_QyWZ}YSQ|;2b`?9>7!T>O`&7RLduyEH{N!S?XqU?RsV13aMNdmM za`b@S@y7TzW#-hC+csqoPseSJyC%*XN?Ii`5l_a`W{b>1vjuSUt@p9n*w;1* zAV@VAAmOW?e`$S!dOW|3&>uM@T!Q2v1I+WA_rBMzVc6?T$JLzdYoUoxk%4Gc?%OL@ zRf(!!uaA*e5Jv%ES{sXy6IYjZ0twZ1Icl(TJ}E8{SbifSHOvSbiN@O51WzC%PR1a5 zeFYwAHGMOz`)i&#`U@^=dt9JSw!xV5Yh<~mMBo4|Y^)^j))@hxoJt`Doql4oASe?t zZPMUX2I1itlgJ9fRLVxf5eAI@{F&TE5M$Pr$6_@m2_6^>D(ICZr$(XCRuTk{{N+)+ z5eIi?jW{v_HLziSeDd1CfIm>A_>-{<*qc#z+Ewq090A`3iX}q1j_4{wjldC0fmudN zi?NWa(TDwP(7~w-L$*SCIZYE@9C~V#kRB8x{+Y6VC(C{EhCxO8#JPmJ&er1is(Ezx zk0%)yESc%Y?RqST+xR#E=8oGa_v#K+0Ua4z8+7)Yn+cLjB`-J4A$TrvHi_;bIEkqn zTRZ!Ovr7YbOpC4nhec7>0AT)u(>%XkVg*_KM|2?p^{;oxfoDAK@vbO#gR)VsOgp`BK=%ie)$08t`HjL zTqLR}^1*1L_P^-|Z(vU_A`bRuWzZ;}-LaLyLT|k*SFTha%RKPehlDmb&41jk$piF- z?QbbLxkcc9l5hpIBL4`&vReQw|3UM8V1WPv66@C;{qi>RyP9Fu@r8Pf7#Vu}t*Ve- zVoUh|i%rIQ;JEuJx*}b>H?{U2IZ#qaE4OW9CaCxIC>pd%-}m-W3^yl#H||vf-*4@q z__rhNp<#74gYy!QZPRH2b}K|;a8Ba+!A{{}^{QmUs$@Lfi>VXD!^1J3T~t{2;eNxR z>n?hpS!6!z0Y?-@ztB~;Gi8^UlRWh6P*-EM#ofOlNWZQxJIme1<3;*J_E^J0K`Mi( z=}Psq$bf@CvS)2)&BJg5%iN!B@CfODeR|)^-29jV+Sv+WKp+tDa2+mv zK#Owo-^U^JbG<7hMAoFxW!3y88Q2>(Rs;Ib&l$2A`UsaVmWrejpxMuD{5C6Qh^dxX zn-^N~NJJAUuLjq5v204z*bmk{J=ejQ3a~vxSbp%!OdU6XOK5*6YEj9(DoHa=j@Smd zcr~K}muxCC478R6S^?vaSHV(@KL;?eXbB18ckZlDW@B!IXRF0Uf7F?lbg*|e1c;en|*QD&hJv(QQkr+_0mKpNqR^EwDyF%sN zxFn_yZn2WoV7sIN`l3<+T)AD(&T6pUVCGY`cBgzM5`Rw0^vtNd&ypjoz04diWcLq-eN17_5j`F6K2!@GlV~Q!F15+F|(>smvh^{2b3g8%+bN! z%YaOY0G9%|i8KPEv}NY30Z(}IuPCo8WqhV3yoOc``$bl7f2&D>sm3|+^1{D?nFaTN zqx?#Uc_Tyg9 zzc&ga?rGZ?JdSTh4lyU26FjRlD|wLK_Xs>Dux|+GN-6v-q+i4lX{$yW8=N9n7HmhC z%Vex8$H2Pgf8>b*BYCKMVqej*?ga-jhX1}aMJZ`&MPK{iw%dI0^Cjnk1 zxY@I3GLJ_XV;@xvdn&29n$!s_D~&~sKqX$87JR4MUu_}FY3g4`)$9w=pvy$(w(A&g zuJcVIKEIJHOS5Kjl`jM>oxIm8M1#aaP;=P*nyu+2i3_R=ql4C5!|$7E{D7g9u=F3M zG8>4^IbCtEH#Ri-23HpaggtT@o8P*t7Cnh@<29NHPRXsc^-|91{O{GVK>BqJcDkO0 zPxz0H^6JO=t{Of)?=Ngo-k*QkAYW2gj2rAn`8eb#AMXrspFMjn)y!ewgUtb4-`)+; z<$)@ixdmM6pN1u$!hl{Uz@PtKuJAAC^Q9@nht3fZB-#Q@E~?%0O&q5N0LFCRk*9`! z%3X&1*L4_F;ClzfSGc%+28tFAD9pRBp!W{-i4nm0JZ3`Wzl-C-bv=atXdq|%n?$l$0pw96$IwZuV*I%3drCAhMWhbwd^!52>@539e>$_ z2>j3~!5brA<^bR@mqqiW+)zPrnY>kfzIc1olYFJmX0quf@i=AP3uxq zoEcS%8#~|6V+hyY-2&2_a$~TG#aPJ;m}v|wPDq50LKl!bz`!X~HG$@i)PPSTH|zvI zi%}_F=ohHzg|wG+=DuzBiE?l~UT%7zQMC95X^;81>KwLRQjxy^a?U1jd5kIpy7RN$ zX_WVOnn}is@;BB03dN@!_}}9UU=w+U@SjWZCNnKfikp} z8zYbC;?pJBONKsrG>1q8jp7_&-Vd1x?D%BWeBre6YR<=B{DC}e-bunn6Q}zd!lBe2 zP_U9kX+O2Kqp5W5ZRKNE4O-}i-H;C%3dH6gg;YB#gq5Ya7Jq zCjdXL(VQ~R)5Qs-Q}>z#b?JsE1oJUdQMddYji(~>E@6D3Dn6l8XT`OwHo!S8=_xyZMUG&-IF#hAbp$-w} z!r~m|$aiM+LRnY@<=7A*KfKm+X@Al8*8DYfononN2z51;d~pH$&<8O3@Ta=6zrMSO zO_6BJl^vcv#1lj<MYtsx_8{xyu)TtqBY2 zh_A(XWPfIYf`AGjt2l4$!gse^-$aI9*}asYin$m7W%Nyb*~t--0VJk_73rkKnw&{P z9wDv9*jE(z-_Ynr4`4AH!(?If3Nc;AcB;GGp@6`sZ{hx8?f^}j4Jj!501|P_Oq9ay zFFI1T&;Ty^srPT$`hVJU99UDQCd1`-pwlCMFYR|%%GiD z(@gygby@iKLyMpAcX7jCVp+a*5?yu$_=*VD4 z2r=P6BCiM#A-ODB)Svm+&D8{N-rccKqwkElQ6T!49T4n5B5g#U6y#`};Eva{9gnJy z_O`iW;Qpw(H^*XRoHdq91R!u@T%2OUmL!3Thg|c+vu8Oy`{X2GLa9x8Bt{W~-Rm{D ziiiI28z%u-1Pi8}ZMMl_s;9Gq&tf(!u(kZ4{98gcIzmV@;mZvB zChFrSom0M{1NlMwdlpt6-6*&^MwBX&ymkO*#s@~*^oKd{$9cW`Xa)&9Wa(DxD!oa&2cWFS4m2-S#6&!>7BLIClMlr2ZQ<9@iu;1DXs6Zpl z<|#frQYo`vy9uL+@BZ!#lv`RJK7dfnc(q&e@Y4)SRiwMoo{TWWM)0pA#U}JG zL30_M`W5L*GVG%{xkV15Wz8z8L^?|q36W~UNJ;`!@4N-21TbPR&VWCw>X+OC3=Y9X zk~J%EZotW*(I$#*#F*5M2pJ*fd7mmfq7^85%6%HRsVI5}ee^inD35bl!#}zrPd*VB zCxN<7D)kAUf!_z{5~)BY!-7eXilfSu&7dsi1~F5Emt#eHiT8WQo%fe&lF{gvBe=v-IRM#J$U(#qNC}bSxWiB_Y-Rs z9Nh2=zCj^1sC>h2{;ie%{~mVIx@NSMI>37^rl7YBNhiC1DO z1g32=XYi`^2Zf9?Du?}kdqeh;N3pK_D|1lTInK!ncDNiwcKh_V#^-w1>uaafb{lL~ z?y?z`bQ|StA2gLqZ81nD#&9fW<1!DllnS;LjBJcmuD=Lvi$6p+e9hPVS;0M%@iYs(KWY+Ew zLRO3%t}l;vpSY1rdH&|209mx%6|&dvNh*0-5(;P@Z|khQJj~{zYv?|eErHvfi!-*! zTzY4Ko|(23q1^8)9_q{1iBgU$mBU8jv-Y;UD@J~LoS zQ_H(T+h5c3Z7<4j6Yc@SqS--nz5+n*_=RIs2u=a~sXP~~fcUE(6KxSVhf_=L`-32K<){9^y=)VE3GxVlsMpLVN|&Q zr4;vVP=6m$MJQ+6hE~#)u5K1{jvKc?uN}D9z>UsP{G6EC|6!DrLd!i^3e@Ir;Shj5 zcbBFMxd4xPNV}hauoh!VpIvQzlR3YxmNSDV{R+pG z02DOGF`{mak0gdA~(FrJb2vka>iX*iEL9 zh;;X`9YdeSS@P%Th`RWqF%sLGAKNc_y{_%QXm`@A$|p(-OuGbS@=hmPa8XJPF=09$ zCyA2)okUYgiN;H~SvK6#uFC*}Hva;6GDu9gNc>Zt+*9rv2JL-cqnsp6Gx*vRAD>8} z)FQ?@+YIal)OU%UWRi*x{%CXY3s5ZZUtI&%;NM(>TW$&GyO8M@N((AuGQ%!cnk?CE z`^Tq1T9hQ5YT?Ucfg+$Ck!nT-orH>w%O|@+S}WF7Yl*A5?`68@X8XVUc_5F_!Ln#` zqtkP&kP$A=Rir9VgYXSeFp+T-KK4nQ$$RYq!}k?dxQ`{!K7kFT=drAvkV-T#I#cqb z+8*U0PfC*0Pq#S{Qe2#~bNMgtQ-!~)p--7HVD8Q59Yu?%h6X zZ5aDw(tI$J;E~w_DjtRKh3WC$)jq?4;NkC^`OcA!)=ZkCcq9W z-p|K04@uH8HBE)*9s=di@)Oe(D|z|VzZ{kJ10c`~NJw5gC1YV#qq5WeHYbanc&Yg& z;HEq;x&Y;fzJMebo5I{0o3W%#o^?aWFa=9+;cV z-KC5i zS5CyLG{fV-aOXztaBF&>w0wc5hb4$id>rixZ_))}HF?Jm53o+ku-m!`M?5-PDs|WP z8uo)4CR9?99V5^Yk?Fo66!R;{$#$vUSn+f^ka|5sx0g;_<;Y z>1yV(5PrX(Nz6N1`5p>ohvYSi^hRFP=AO?&U}tK8a-9Vnw7Nabv+j|}Q5IsVO3~_ncD7bpSa4WObi7|P@kMBE(1^q3CvkW;PFQUoQ{fsfOIUy2 zHB8ECERa-t?bdX_aNn$3O1hPEYTpFdOW(Q{+Du^gj{z=7o z{?GP{um9IX4v-8|&eRn9m*G3Q)N7XC9ZM!D-%?$EwkUA8B5?M%VDoj#|Fg&t^`|$< zQe$oK2BXg}MsfqylsU`p9Dpfpn9go`Hy_X_C`~wiSUpK4c;+9G&c6z)FT5=0)d*=H zi3XZT072?yR7Hn}4y+Y6c$o48^-`sjXESfR>7Kd5lPxwBgjM$i7d}u^Umk<{P4c-zwo`U`&!O* z&bd@|YCL<<|E6wJzp?xiWf?<7-OA2s8Jw}@1>OlijmH-BD_zj~=irxJqv&f?`<|~l z_Nc+VaPJ8`ty=)5FgtPI?J;5cUPP}AM1&^v41lp2_tkH<@bwoqB$tjNL^t_;C?QKW zYm#W6P;XBqo)A1+xJ%zh~Z zWJIZhwY$rMP$+V`%M&>>*QS3Q8`5u#O_d2Zi;}W+;G-R30sNd&E0LiBQ$hW}pMpmK zRH@t>k_Q}s=*{A+mGCb*{Q!N}wQ+`Q+PK7{vhU9#UE$MKZfIa8v#(%>Z)$G2=7vRqL8GE3%sl z8kYVBhW?Q}m+YOi{Np{7qxUy#R{yCrqF|fPt{CUe6BRY{7jtK^KGO~XN@jX!E{l zjL6(8nq%KPs$9EfT5yCQP*Vv9{zjh{!gh@qyJ>aokBrwG;{Ji&cORLM2&UFbtA_ZN z7Hvh*2N}Bm?bq7kc*1Wp7(X>EzS*c*_@>obT`kPpvvkq;kAKAN6CT{XjC~~Y9W~LW zmPbZb194SLYEN9>eVDVS`+-5`mDxI8&vG5JmqadpmS!#nJ%Ck0$#a*r`?j+2V5NAc zn{^8}ebx=KdbZxi+j;iWX3_J&P_V_1pm6{$L*RVTq_wfcr`*kQhcF>0EK+AIHp+a% z1nrBGi^e&ag0h0dG}%N*f&A(y?6PnWua}GKSJDH-Sy|&^LG^_4g55||+Z@^)ad7)< z2!DdVf|d4DGUnWC$?dK**I<2nlGS>Fh7s(1)B-2Amed<)_n;Wu-vp!5s3w+eVu%i_ zBZLHsdy9^;NZ+NXk+nJV?pXPX348!R7bDq;9*z!{*X0zBEjE73=*I%cuSx<$A4g!; zhGJU$zJ(1_I?pop7_k{Sz=XF8cDJ(}Y`ooVv(Uw0N9G(cbMKD<&pbUZ_Bz+x^TV&z zM3H%%tf>PXKw*U*uVI`w3L{t}>LaN%Z5-j0z|-%%WGP(WY6>wjS9z}1HK@&bX_M|+ zSog{7I4P3=XcB&Vt#unX$I9hd5uwpewOw$QCbB_V*LRxd1^@k9%IdyTP!?A{s}jkw zjq~`Uc_=^dFYsjJsd!z=Iz~srPK#d@?Z#_a;YCNAcmTx=1TqYkCt_pi@N+1fwUj~M zKl9F+!Cg!GqJ5NQn&}%!2+aM52kSEd@L(bFPGq+HjY6*nn6}K5xm)_`B2BZp59ux; zs2s!kF|UU65wXv=Ls7iM%HhNce|YUftAabTG`C+I^A>G)m4O1U0%tV|sKajis$nIf zh~w$1s|R*I4)wdBTShNCnR=7C5~|`&AP6jYMj26KrrLg0JMJ<1tbv!Hzf7s!$|{6e ze<+op<_vfQt{G&EKdwo}OChIdvFyP#v{yCw4^ChaROs?x~OS$ftd!J!wxR71$k}>eC@RKrb4kD^OX@lvN5X#mAAne6PSW3PI> zQw%JxN2N5C#nx^ir zZY08SJhb{~NC3^-d{FUJM0QITG>ib&v&suWcJy#}X z$?QsNC1l9dIz)D`FXqsxok0fbzcWJK6d1|u<}#vg+2(!TEvt}N>F4bNy*b<&dbqSL zPSENu?r?u4`z9{I24UaiKEHp*=lP!KUBPW2kbDMP&SI-cQU2G^s?l;NB^(iU8QwdO zk~>pO1dMC``rp`yMYrl+<2ynn}eW6Kq1?q3$X;(;u0q$(M zbhr8IlAhg9c|CH%%>3Il$^Pj@R!y<-Tnx|9yjD06acQm!7A=$VHF~BYh|Cg!4#f>Q zOPtP7NTrIQk;N$pNnx@%&udeYB!KX+nf=fhWI3w_($4u%V_+})OE8IC1gtzA7O2&| zV8kyPKkx$ffb?%;XcZp=#T3i1-*Ww3l-+VABy!@yrvSb^bQ|bJ#BYW~)Y9iSM&}ta4&B>U=mNc#yPaP)9u1k+=Te2mLH18pd(pFY03$vy#2M$R}RMq0X zVWajA0}X+i;(!M~39(Vw4QC!T#fWGBtgZRGPS8z)-HYKWAb?ozfs<)SmKJ*NIX6+= z6hr=3>h2eN)YU4x1@XzBFH(+Ggu6U8zg}VzmdolkEz|_F%NUYfItZC0FR%)ct#C+K zuP4a_ZaxYqnBD;=oDh3goJ-E9&^DXaDiAp$^8JVSar)@UF>$O@`%2oAnElRnp!0vV z>N2&g9z{7WD~|jLBb=ca_c0O~Ai|R==3P>1GX3Uvx^SC5REGT!s*1T;7 z?%iu^xN5XqpQ^SwU-4U-+1E|)x+>60i~^@%r)RpRS*@{G4f0@O@s*bM(?}A{b!8y; zSL3q-q2MYFYA3nva-bN!`E#|oD~4}})4M5D4gTP)r<*5+WA_Oi5gYvFRpR2aUAin0 z=9I(=k>k9%IJfX4E6Zl@qQR5NHLP^poro@!@vkj~6k{{9WC@ozgR9|mgV)shw+&)Q z9SL+L&K;Na@W{5O`yEPJ3!Zb3%#=E7s2YHZK;{Mlq?Hj=o8Xj|IX9Cp!dcqN(~sE9 z2+n~a<9^^ggaJbQ(oFx+;e|?U2A?9b2V!egK{EM;=q*in1gpWkdk?JR-v0C$z(BFZvDPS)DKLY4My11!d=6LMuGAR+n$A42k}wyI)2k&EzMSkw zuj|>d7#bT(4NSv#2)QdS5lLSjEGJlc!;2BIzc+uBmJ7J+d_-oBi!^Z}g0Z#}w3ATyh3v`S*sLU*8Bw;e!my!Gjc0&(+P32Xd);p3|cXXtiehHHQWMf5S+7R>_$ zIuNNBn;P7u%=P literal 0 HcmV?d00001 diff --git a/external/lsquic/include/lsquic.h b/external/lsquic/include/lsquic.h new file mode 100644 index 0000000..4353b9c --- /dev/null +++ b/external/lsquic/include/lsquic.h @@ -0,0 +1,2246 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2023 LiteSpeed Technologies Inc. See LICENSE. */ + +#ifndef __LSQUIC_H__ +#define __LSQUIC_H__ + +/** + * @file + * public API for using liblsquic is defined in this file. + * + */ + +#include +#include "lsquic_types.h" +#ifndef WIN32 +#include +#include +#else +#include +#endif + +struct sockaddr; + +#ifdef __cplusplus +extern "C" { +#endif + +#define LSQUIC_MAJOR_VERSION 4 +#define LSQUIC_MINOR_VERSION 3 +#define LSQUIC_PATCH_VERSION 1 + +#define LSQUIC_QUOTE(x) #x +#define LSQUIC_SVAL(v) LSQUIC_QUOTE(v) +#define LSQUIC_VERSION_STR LSQUIC_SVAL(LSQUIC_MAJOR_VERSION) "." \ + LSQUIC_SVAL(LSQUIC_MINOR_VERSION) "." LSQUIC_SVAL(LSQUIC_PATCH_VERSION) + +/** + * Engine flags: + */ + +/** Server mode */ +#define LSENG_SERVER (1 << 0) + +/** Use HTTP behavior */ +#define LSENG_HTTP (1 << 1) + +#define LSENG_HTTP_SERVER (LSENG_SERVER|LSENG_HTTP) + +/** + * This is a list of QUIC versions that we know of. List of supported + * versions is in LSQUIC_SUPPORTED_VERSIONS. + */ +enum lsquic_version +{ + /** + * Q043. Support for processing PRIORITY frames. Since this library + * has supported PRIORITY frames from the beginning, this version is + * exactly the same as LSQVER_042. + */ + LSQVER_043, + + /** + * Q046. Use IETF Draft-17 compatible packet headers. + */ + LSQVER_046, + + /** + * Q050. Variable-length QUIC server connection IDs. Use CRYPTO frames + * for handshake. IETF header format matching invariants-06. Packet + * number encryption. Initial packets are obfuscated. + */ + LSQVER_050, + + /** + * IETF QUIC Draft-27 + */ + LSQVER_ID27, + + /** + * IETF QUIC Draft-29 + */ + LSQVER_ID29, + + /** + * IETF QUIC v1. + */ + LSQVER_I001, + + /** + * IETF QUIC v2. + */ + LSQVER_I002, + + /** + * Reserved version to trigger version negotiation. + * [rfc9000], Section 15. + */ + LSQVER_RESVED, + + N_LSQVER, + + /** + * The version 0x00000000 is reserved to represent version negotiation. + * [rfc9000], Section 15. + */ + LSQVER_VERNEG +}; + +/** + * We currently support versions 43, 46, 50, Draft-27, Draft-29, + * and IETF QUIC v1. + * @see lsquic_version + */ +#define LSQUIC_SUPPORTED_VERSIONS ((1 << N_LSQVER) - 1) + +/** + * List of versions in which the server never includes CID in short packets. + */ +#define LSQUIC_FORCED_TCID0_VERSIONS ((1 << LSQVER_046)|(1 << LSQVER_050)) + +#define LSQUIC_EXPERIMENTAL_VERSIONS ( \ + (1 << LSQVER_RESVED)) + +#define LSQUIC_DEPRECATED_VERSIONS ((1 << LSQVER_ID27)) + +#define LSQUIC_GQUIC_HEADER_VERSIONS (1 << LSQVER_043) + +#define LSQUIC_IETF_VERSIONS ((1 << LSQVER_ID27) \ + | (1 << LSQVER_ID29) | (1 << LSQVER_I001) \ + | (1 << LSQVER_I002) | (1 << LSQVER_RESVED)) + +#define LSQUIC_IETF_DRAFT_VERSIONS ((1 << LSQVER_ID27) \ + | (1 << LSQVER_ID29) \ + | (1 << LSQVER_RESVED)) + +enum lsquic_hsk_status +{ + /** + * The handshake failed. + */ + LSQ_HSK_FAIL, + /** + * The handshake succeeded without session resumption. + */ + LSQ_HSK_OK, + /** + * The handshake succeeded with session resumption. + */ + LSQ_HSK_RESUMED_OK, + /** + * Session resumption failed. Retry the connection without session + * resumption. + */ + LSQ_HSK_RESUMED_FAIL, +}; + +/** + * @struct lsquic_stream_if + * @brief The definitions of callback functions called by lsquic_stream to + * process events. + * + */ +struct lsquic_stream_if { + + /** + * Use @ref lsquic_conn_get_ctx to get back the context. It is + * OK for this function to return NULL. + */ + lsquic_conn_ctx_t *(*on_new_conn)(void *stream_if_ctx, + lsquic_conn_t *c); + + /** This is called when our side received GOAWAY frame. After this, + * new streams should not be created. The callback is optional. + */ + void (*on_goaway_received)(lsquic_conn_t *c); + void (*on_conn_closed)(lsquic_conn_t *c); + + /** If you need to initiate a connection, call lsquic_conn_make_stream(). + * This will cause `on_new_stream' callback to be called when appropriate + * (this operation is delayed when maximum number of outgoing streams is + * reached). + * + * After `on_close' is called, the stream is no longer accessible. + */ + lsquic_stream_ctx_t * + (*on_new_stream)(void *stream_if_ctx, lsquic_stream_t *s); + + void (*on_read) (lsquic_stream_t *s, lsquic_stream_ctx_t *h); + void (*on_write) (lsquic_stream_t *s, lsquic_stream_ctx_t *h); + void (*on_close) (lsquic_stream_t *s, lsquic_stream_ctx_t *h); + /* Called when datagram is ready to be written */ + ssize_t (*on_dg_write)(lsquic_conn_t *c, void *, size_t); + /* Called when datagram is read from a packet. This callback is required + * when es_datagrams is true. Take care to process it quickly, as this + * is called during lsquic_engine_packet_in(). + */ + void (*on_datagram)(lsquic_conn_t *, const void *buf, size_t); + /* This callback in only called in client mode */ + /** + * When handshake is completed, this optional callback is called. + */ + void (*on_hsk_done)(lsquic_conn_t *c, enum lsquic_hsk_status s); + /** + * When client receives a token in NEW_TOKEN frame, this callback is called. + * The callback is optional. + */ + void (*on_new_token)(lsquic_conn_t *c, const unsigned char *token, + size_t token_size); + /** + * This optional callback lets client record information needed to + * perform a session resumption next time around. + * + * For IETF QUIC, this is called only if ea_get_ssl_ctx() is *not* set, + * in which case the library creates its own SSL_CTX. + * + * Note: this callback will be deprecated when gQUIC support is removed. + */ + void (*on_sess_resume_info)(lsquic_conn_t *c, const unsigned char *, size_t); + /** + * Optional callback is called as soon as the peer resets a stream. + * The argument `how' is either 0, 1, or 2, meaning "read", "write", and + * "read and write", respectively (just like in shutdown(2)). This + * signals the user to stop reading, writing, or both. + * + * Note that resets differ in gQUIC and IETF QUIC. In gQUIC, `how' is + * always 2; in IETF QUIC, `how' is either 0 or 1 because one can reset + * just one direction in IETF QUIC. + */ + void (*on_reset) (lsquic_stream_t *s, lsquic_stream_ctx_t *h, int how); + /** + * Optional callback is called when a CONNECTION_CLOSE frame is received. + * This allows the application to log low-level diagnostic information about + * errors received with the CONNECTION_CLOSE frame. If app_error is -1 then + * it is considered unknown if this is an app_error or not. + */ + void (*on_conncloseframe_received)(lsquic_conn_t *c, + int app_error, uint64_t error_code, + const char *reason, int reason_len); +}; + +struct ssl_ctx_st; +struct ssl_st; +struct ssl_session_st; +struct lsxpack_header; + +/** + * QUIC engine in server mode needs access to certificates. This is + * accomplished by providing a callback and a context to the engine + * constructor. + */ + +/* `sni' may be NULL if engine is not HTTP mode and client TLS transport + * parameters did not include the SNI. + */ +typedef struct ssl_ctx_st * (*lsquic_lookup_cert_f)( + void *lsquic_cert_lookup_ctx, const struct sockaddr *local, const char *sni); + +/** + * Minimum flow control window is set to 16 KB for both client and server. + * This means we can send up to this amount of data before handshake gets + * completed. + */ +#define LSQUIC_MIN_FCW (16 * 1024) + +/* Each LSQUIC_DF_* value corresponds to es_* entry in + * lsquic_engine_settings below. + */ + +/** + * By default, deprecated and experimental versions are not included. + */ +#define LSQUIC_DF_VERSIONS (LSQUIC_SUPPORTED_VERSIONS & \ + ~LSQUIC_DEPRECATED_VERSIONS & \ + ~LSQUIC_EXPERIMENTAL_VERSIONS) + +#define LSQUIC_DF_CFCW_SERVER (3 * 1024 * 1024 / 2) +#define LSQUIC_DF_CFCW_CLIENT (15 * 1024 * 1024) +#define LSQUIC_DF_SFCW_SERVER (1 * 1024 * 1024) +#define LSQUIC_DF_SFCW_CLIENT (6 * 1024 * 1024) +#define LSQUIC_DF_MAX_STREAMS_IN 100 + +/* IQUIC uses different names for these: */ +#define LSQUIC_DF_INIT_MAX_DATA_SERVER LSQUIC_DF_CFCW_SERVER +#define LSQUIC_DF_INIT_MAX_DATA_CLIENT LSQUIC_DF_CFCW_CLIENT +#define LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_REMOTE_SERVER LSQUIC_DF_SFCW_SERVER +#define LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_LOCAL_SERVER 0 +#define LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_REMOTE_CLIENT 0 +#define LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_LOCAL_CLIENT LSQUIC_DF_SFCW_CLIENT +#define LSQUIC_DF_INIT_MAX_STREAMS_BIDI LSQUIC_DF_MAX_STREAMS_IN +#define LSQUIC_DF_INIT_MAX_STREAMS_UNI_CLIENT 100 +#define LSQUIC_DF_INIT_MAX_STREAMS_UNI_SERVER 3 +/* XXX What's a good value here? */ +#define LSQUIC_DF_INIT_MAX_STREAM_DATA_UNI_CLIENT (32 * 1024) +#define LSQUIC_DF_INIT_MAX_STREAM_DATA_UNI_SERVER (12 * 1024) + +/** + * Default idle connection time in seconds. + */ +#define LSQUIC_DF_IDLE_TIMEOUT 30 + +/** + * Default ping period in seconds. + */ +#define LSQUIC_DF_PING_PERIOD 15 + +/** + * Default handshake timeout in microseconds. + */ +#define LSQUIC_DF_HANDSHAKE_TO (10 * 1000 * 1000) + +#define LSQUIC_DF_IDLE_CONN_TO (LSQUIC_DF_IDLE_TIMEOUT * 1000 * 1000) +#define LSQUIC_DF_SILENT_CLOSE 1 + +/** Default value of maximum header list size. If set to non-zero value, + * SETTINGS_MAX_HEADER_LIST_SIZE will be sent to peer after handshake is + * completed (assuming the peer supports this setting frame type). + */ +#define LSQUIC_DF_MAX_HEADER_LIST_SIZE 0 + +/** Default value of UAID (user-agent ID). */ +#define LSQUIC_DF_UA "LSQUIC" + +#define LSQUIC_DF_STTL 86400 +#define LSQUIC_DF_MAX_INCHOATE (1 * 1000 * 1000) + +#define LSQUIC_DF_SUPPORT_SREJ_SERVER 1 +#define LSQUIC_DF_SUPPORT_SREJ_CLIENT 0 + +/** Do not use NSTP by default */ +#define LSQUIC_DF_SUPPORT_NSTP 0 +/** TODO: IETF QUIC clients do not support push */ +#define LSQUIC_DF_SUPPORT_PUSH 1 +#define LSQUIC_DF_SUPPORT_TCID0 1 +/** By default, LSQUIC ignores Public Reset packets. */ +#define LSQUIC_DF_HONOR_PRST 0 + +/** + * By default, LSQUIC will not send Public Reset packets in response to + * packets that specify unknown connections. + */ +#define LSQUIC_DF_SEND_PRST 0 + +/** + * By default, LSQUIC will send Version Negotiation packets in response to + * packets that specify unknown versions. + */ +#define LSQUIC_DF_SEND_VERNEG 1 + +/** By default, infinite loop checks are turned on */ +#define LSQUIC_DF_PROGRESS_CHECK 1000 + +/** By default, read/write events are dispatched in a loop */ +#define LSQUIC_DF_RW_ONCE 0 + +/** By default, the threshold is not enabled */ +#define LSQUIC_DF_PROC_TIME_THRESH 0 + +/** By default, packets are paced */ +#define LSQUIC_DF_PACE_PACKETS 1 + +/** Default clock granularity is 1000 microseconds */ +#define LSQUIC_DF_CLOCK_GRANULARITY 1000 + +/** The default value is 8 for simplicity */ +#define LSQUIC_DF_SCID_LEN 8 + +/** The default value is 60 CIDs per minute */ +#define LSQUIC_DF_SCID_ISS_RATE 60 + +#define LSQUIC_DF_QPACK_DEC_MAX_BLOCKED 100 +#define LSQUIC_DF_QPACK_DEC_MAX_SIZE 4096 +#define LSQUIC_DF_QPACK_ENC_MAX_BLOCKED 100 +#define LSQUIC_DF_QPACK_ENC_MAX_SIZE 4096 + +/* By default, QPACK experiments are turned off */ +#define LSQUIC_DF_QPACK_EXPERIMENT 0 + +/** ECN is disabled by default */ +#define LSQUIC_DF_ECN 0 + +/** Allow migration by default */ +#define LSQUIC_DF_ALLOW_MIGRATION 1 + +/** Default retry token duration. */ /* Do not set this value to zero. */ +#define LSQUIC_DF_RETRY_TOKEN_DURATION 10 + +/** Use QL loss bits by default */ +#define LSQUIC_DF_QL_BITS 2 + +/** Turn spin bit on by default */ +#define LSQUIC_DF_SPIN 1 + +/** Turn on delayed ACKs extension by default */ +#define LSQUIC_DF_DELAYED_ACKS 1 + +/** + * Defaults for the Packet Tolerance PID Controller (PTPC) used by the + * Delayed ACKs extension: + */ +#define LSQUIC_DF_PTPC_PERIODICITY 3 +#define LSQUIC_DF_PTPC_MAX_PACKTOL 150 +#define LSQUIC_DF_PTPC_DYN_TARGET 1 +#define LSQUIC_DF_PTPC_TARGET 1.0 +#define LSQUIC_DF_PTPC_PROP_GAIN 0.8 +#define LSQUIC_DF_PTPC_INT_GAIN 0.35 +#define LSQUIC_DF_PTPC_ERR_THRESH 0.05 +#define LSQUIC_DF_PTPC_ERR_DIVISOR 0.05 + +/** Turn on timestamp extension by default */ +#define LSQUIC_DF_TIMESTAMPS 1 + +/** default anti-amplification factor is 3 */ +#define LSQUIC_DF_AMP_FACTOR 3 + +/* Use Adaptive CC by default */ +#define LSQUIC_DF_CC_ALGO 3 + +/* Default value of the CC RTT threshold is 1.5 ms */ +#define LSQUIC_DF_CC_RTT_THRESH 1500 + +/** Turn off datagram extension by default */ +#define LSQUIC_DF_DATAGRAMS 0 + +/** Assume optimistic NAT by default. */ +#define LSQUIC_DF_OPTIMISTIC_NAT 1 + +/** Turn on Extensible HTTP Priorities by default. */ +#define LSQUIC_DF_EXT_HTTP_PRIO 1 + +/** By default, incoming packet size is not limited. */ +#define LSQUIC_DF_MAX_UDP_PAYLOAD_SIZE_RX 0 + +/** + * By default, greasing the QUIC bit is enabled (if peer sent + * the "grease_quic_bit" transport parameter). + */ +#define LSQUIC_DF_GREASE_QUIC_BIT 1 + +/** By default, DPLPMTUD is enabled */ +#define LSQUIC_DF_DPLPMTUD 1 + +/** By default, this value is left up to the engine. */ +#define LSQUIC_DF_BASE_PLPMTU 0 + +/** By default, this value is left up to the engine. */ +#define LSQUIC_DF_MAX_PLPMTU 0 + +/** By default, drop no-progress connections after 60 seconds on the server */ +#define LSQUIC_DF_NOPROGRESS_TIMEOUT_SERVER 60 + +/** By default, do not use no-progress timeout on the client */ +#define LSQUIC_DF_NOPROGRESS_TIMEOUT_CLIENT 0 + +/** By default, we use the minimum timer of 1000 milliseconds */ +#define LSQUIC_DF_MTU_PROBE_TIMER 1000 + +/** By default, calling on_close() is not delayed */ +#define LSQUIC_DF_DELAY_ONCLOSE 0 + +/** + * By default, maximum batch size is not specified, leaving it up to the + * library. + */ +#define LSQUIC_DF_MAX_BATCH_SIZE 0 + +/** Transport parameter sanity checks are performed by default. */ +#define LSQUIC_DF_CHECK_TP_SANITY 1 + +#if LSQUIC_WEBTRANSPORT_SERVER_SUPPORT +/** Turn off webtransport extension for server by default */ +#define LSQUIC_DF_WEBTRANSPORT_SERVER 0 + +/** Default allowed server webtransport streams count */ +#define LSQUIC_DF_MAX_WEBTRANSPORT_SERVER_STREAMS 10 +#endif +struct lsquic_engine_settings { + /** + * This is a bit mask wherein each bit corresponds to a value in + * enum lsquic_version. Client starts negotiating with the highest + * version and goes down. Server supports either of the versions + * specified here. + * + * This setting applies to both Google and IETF QUIC. + * + * @see lsquic_version + */ + unsigned es_versions; + + /** + * Initial default CFCW. + * + * In server mode, per-connection values may be set lower than + * this if resources are scarce. + * + * Do not set es_cfcw and es_sfcw lower than @ref LSQUIC_MIN_FCW. + * + * @see es_max_cfcw + */ + unsigned es_cfcw; + + /** + * Initial default SFCW. + * + * In server mode, per-connection values may be set lower than + * this if resources are scarce. + * + * Do not set es_cfcw and es_sfcw lower than @ref LSQUIC_MIN_FCW. + * + * @see es_max_sfcw + */ + unsigned es_sfcw; + + /** + * This value is used to specify maximum allowed value CFCW is allowed + * to reach due to window auto-tuning. By default, this value is zero, + * which means that CFCW is not allowed to increase from its initial + * value. + * + * This setting is applicable to both gQUIC and IETF QUIC. + * + * @see es_cfcw, @see es_init_max_data. + */ + unsigned es_max_cfcw; + + /** + * This value is used to specify the maximum value stream flow control + * window is allowed to reach due to auto-tuning. By default, this + * value is zero, meaning that auto-tuning is turned off. + * + * This setting is applicable to both gQUIC and IETF QUIC. + * + * @see es_sfcw, @see es_init_max_stream_data_bidi_remote, + * @see es_init_max_stream_data_bidi_local. + */ + unsigned es_max_sfcw; + + /** MIDS */ + unsigned es_max_streams_in; + + /** + * Handshake timeout in microseconds. + * + * For client, this can be set to an arbitrary value (zero turns the + * timeout off). + * + * For server, this value is limited to about 16 seconds. Do not set + * it to zero. + */ + unsigned long es_handshake_to; + + /** ICSL in microseconds; GQUIC only */ + unsigned long es_idle_conn_to; + + /** + * When true, CONNECTION_CLOSE is not sent when connection times out. + * The server will also not send a reply to client's CONNECTION_CLOSE. + * + * Corresponds to SCLS (silent close) gQUIC option. + */ + int es_silent_close; + + /** + * This corresponds to SETTINGS_MAX_HEADER_LIST_SIZE + * (RFC 7540, Section 6.5.2). 0 means no limit. Defaults + * to @ref LSQUIC_DF_MAX_HEADER_LIST_SIZE. + */ + unsigned es_max_header_list_size; + + /** UAID -- User-Agent ID. Defaults to @ref LSQUIC_DF_UA. */ + const char *es_ua; + + /** + * More parameters for server + */ + uint64_t es_sttl; /* SCFG TTL in seconds */ + + uint32_t es_pdmd; /* One fixed value X509 */ + uint32_t es_aead; /* One fixed value AESG */ + uint32_t es_kexs; /* One fixed value C255 */ + + /* Maximum number of incoming connections in inchoate state. This is + * only applicable in server mode. + */ + unsigned es_max_inchoate; + + /** + * Support SREJ: for client side, this means supporting server's SREJ + * responses (this does not work yet) and for server side, this means + * generating SREJ instead of REJ when appropriate. + * + * For IETF QUIC, this sending stateless retries when appropriate. + * The IETF client always supports stateless retries and knows how to + * handle them. + */ + int es_support_srej; + + /** + * Setting this value to 0 means that + * + * For client: + * a) we send a SETTINGS frame to indicate that we do not support server + * push; and + * b) All incoming pushed streams get reset immediately. + * (For maximum effect, set es_max_streams_in to 0.) + * + * For server: + * lsquic_conn_push_stream() will return -1. + */ + int es_support_push; + + /** + * If set to true value, the server will not include connection ID in + * outgoing packets if client's CHLO specifies TCID=0. + * + * For client, this means including TCID=0 into CHLO message. Note that + * in this case, the engine tracks connections by the + * (source-addr, dest-addr) tuple, thereby making it necessary to create + * a socket for each connection. + * + * This option has no effect in Q046 and Q050, as the server never includes + * CIDs in the short packets. + * + * This setting is applicable to gQUIC only. + * + * The default is @ref LSQUIC_DF_SUPPORT_TCID0. + */ + int es_support_tcid0; + + /** + * Q037 and higher support "No STOP_WAITING frame" mode. When set, the + * client will send NSTP option in its Client Hello message and will not + * sent STOP_WAITING frames, while ignoring incoming STOP_WAITING frames, + * if any. Note that if the version negotiation happens to downgrade the + * client below Q037, this mode will *not* be used. + * + * This option does not affect the server, as it must support NSTP mode + * if it was specified by the client. + * + * This setting is applicable to gQUIC only. + */ + int es_support_nstp; + + /** + * If set to true value, the library will drop connections when it + * receives corresponding Public Reset packet. The default is to + * ignore these packets. + * + * The default is @ref LSQUIC_DF_HONOR_PRST. + */ + int es_honor_prst; + + /** + * If set to true value, the library will send Public Reset packets + * in response to incoming packets with unknown Connection IDs. + * The default is @ref LSQUIC_DF_SEND_PRST. + */ + int es_send_prst; + + /** + * A non-zero value enables internal checks that identify suspected + * infinite loops in user @ref on_read and @ref on_write callbacks + * and break them. An infinite loop may occur if user code keeps + * on performing the same operation without checking status, e.g. + * reading from a closed stream etc. + * + * The value of this parameter is as follows: should a callback return + * this number of times in a row without making progress (that is, + * reading, writing, or changing stream state), loop break will occur. + * + * The defaut value is @ref LSQUIC_DF_PROGRESS_CHECK. + */ + unsigned es_progress_check; + + /** + * A non-zero value make stream dispatch its read-write events once + * per call. + * + * When zero, read and write events are dispatched until the stream + * is no longer readable or writeable, respectively, or until the + * user signals unwillingness to read or write using + * @ref lsquic_stream_wantread() or @ref lsquic_stream_wantwrite() + * or shuts down the stream. + * + * This also applies to the on_dg_write() callback. + * + * The default value is @ref LSQUIC_DF_RW_ONCE. + */ + int es_rw_once; + + /** + * If set, this value specifies the number of microseconds that + * @ref lsquic_engine_process_conns() and + * @ref lsquic_engine_send_unsent_packets() are allowed to spend + * before returning. + * + * This is not an exact science and the connections must make + * progress, so the deadline is checked after all connections get + * a chance to tick (in the case of @ref lsquic_engine_process_conns()) + * and at least one batch of packets is sent out. + * + * When processing function runs out of its time slice, immediate + * calls to @ref lsquic_engine_has_unsent_packets() return false. + * + * The default value is @ref LSQUIC_DF_PROC_TIME_THRESH. + */ + unsigned es_proc_time_thresh; + + /** + * If set to true, packet pacing is implemented per connection. + * + * The default value is @ref LSQUIC_DF_PACE_PACKETS. + */ + int es_pace_packets; + + /** + * Clock granularity information is used by the pacer. The value + * is in microseconds; default is @ref LSQUIC_DF_CLOCK_GRANULARITY. + */ + unsigned es_clock_granularity; + + /** + * Congestion control algorithm to use. + * + * 0: Use default (@ref LSQUIC_DF_CC_ALGO) + * 1: Cubic + * 2: BBRv1 + * 3: Adaptive (Cubic or BBRv1) + */ + unsigned es_cc_algo; + + /** + * Congestion controller RTT threshold in microseconds. + * + * Adaptive congestion control uses BBRv1 until RTT is determined. At + * that point a permanent choice of congestion controller is made. If + * RTT is smaller than or equal to es_cc_rtt_thresh, congestion + * controller is switched to Cubic; otherwise, BBRv1 is picked. + * + * The default value is @ref LSQUIC_DF_CC_RTT_THRESH. + */ + unsigned es_cc_rtt_thresh; + + /** + * No progress timeout. + * + * If connection does not make progress for this number of seconds, the + * connection is dropped. Here, progress is defined as user streams + * being written to or read from. + * + * If this value is zero, this timeout is disabled. + * + * Default value is @ref LSQUIC_DF_NOPROGRESS_TIMEOUT_SERVER in server + * mode and @ref LSQUIC_DF_NOPROGRESS_TIMEOUT_CLIENT in client mode. + */ + unsigned es_noprogress_timeout; + + /* The following settings are specific to IETF QUIC. */ + /* vvvvvvvvvvv */ + + /** + * Initial max data. + * + * This is a transport parameter. + * + * Depending on the engine mode, the default value is either + * @ref LSQUIC_DF_INIT_MAX_DATA_CLIENT or + * @ref LSQUIC_DF_INIT_MAX_DATA_SERVER. + */ + unsigned es_init_max_data; + + /** + * Initial maximum amount of stream data allowed to be sent on streams + * created by remote end (peer). + * + * This is a transport parameter. + * + * Depending on the engine mode, the default value is either + * @ref LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_REMOTE_CLIENT or + * @ref LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_REMOTE_SERVER. + */ + unsigned es_init_max_stream_data_bidi_remote; + + /** + * Initial maximum amount of stream data allowed to be sent on streams + * created by remote end (peer). + * + * This is a transport parameter. + * + * Depending on the engine mode, the default value is either + * @ref LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_LOCAL_CLIENT or + * @ref LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_LOCAL_SERVER. + */ + unsigned es_init_max_stream_data_bidi_local; + + /** + * Initial max stream data for unidirectional streams initiated + * by remote endpoint. + * + * This is a transport parameter. + * + * Depending on the engine mode, the default value is either + * @ref LSQUIC_DF_INIT_MAX_STREAM_DATA_UNI_CLIENT or + * @ref LSQUIC_DF_INIT_MAX_STREAM_DATA_UNI_SERVER. + */ + unsigned es_init_max_stream_data_uni; + + /** + * Maximum initial number of bidirectional stream. + * + * This is a transport parameter. + * + * Default value is @ref LSQUIC_DF_INIT_MAX_STREAMS_BIDI. + */ + unsigned es_init_max_streams_bidi; + + /** + * Maximum initial number of unidirectional stream. + * + * This is a transport parameter. + * + * Default value is @ref LSQUIC_DF_INIT_MAX_STREAMS_UNI_CLIENT or + * @ref LSQUIC_DF_INIT_MAX_STREAM_DATA_UNI_SERVER. + */ + unsigned es_init_max_streams_uni; + + /** + * Idle connection timeout. + * + * This is a transport parameter. + * + * (Note: es_idle_conn_to is not reused because it is in microseconds, + * which, I now realize, was not a good choice. Since it will be + * obsoleted some time after the switchover to IETF QUIC, we do not + * have to keep on using strange units.) + * + * Default value is @ref LSQUIC_DF_IDLE_TIMEOUT. + * + * Maximum value is 600 seconds. + */ + unsigned es_idle_timeout; + + /** + * Ping period. If set to non-zero value, the connection will generate and + * send PING frames in the absence of other activity. + * + * By default, the server does not send PINGs and the period is set to zero. + * The client's defaut value is @ref LSQUIC_DF_PING_PERIOD. + */ + unsigned es_ping_period; + + /** + * Source Connection ID length. Only applicable to the IETF QUIC + * versions. Valid values are 0 through 20, inclusive. + * + * Default value is @ref LSQUIC_DF_SCID_LEN. + */ + unsigned es_scid_len; + + /** + * Source Connection ID issuance rate. Only applicable to the IETF QUIC + * versions. This field is measured in CIDs per minute. Using value 0 + * indicates that there is no rate limit for CID issuance. + * + * Default value is @ref LSQUIC_DF_SCID_ISS_RATE. + */ + unsigned es_scid_iss_rate; + + /** + * Maximum size of the QPACK dynamic table that the QPACK decoder will + * use. + * + * The default is @ref LSQUIC_DF_QPACK_DEC_MAX_SIZE. + */ + unsigned es_qpack_dec_max_size; + + /** + * Maximum number of blocked streams that the QPACK decoder is willing + * to tolerate. + * + * The default is @ref LSQUIC_DF_QPACK_DEC_MAX_BLOCKED. + */ + unsigned es_qpack_dec_max_blocked; + + /** + * Maximum size of the dynamic table that the encoder is willing to use. + * The actual size of the dynamic table will not exceed the minimum of + * this value and the value advertized by peer. + * + * The default is @ref LSQUIC_DF_QPACK_ENC_MAX_SIZE. + */ + unsigned es_qpack_enc_max_size; + + /** + * Maximum number of blocked streams that the QPACK encoder is willing + * to risk. The actual number of blocked streams will not exceed the + * minimum of this value and the value advertized by peer. + * + * The default is @ref LSQUIC_DF_QPACK_ENC_MAX_BLOCKED. + */ + unsigned es_qpack_enc_max_blocked; + + /** + * Enable ECN support. + * + * The default is @ref LSQUIC_DF_ECN + */ + int es_ecn; + + /** + * Allow peer to migrate connection. + * + * The default is @ref LSQUIC_DF_ALLOW_MIGRATION + */ + int es_allow_migration; + + /** + * Amount of time, in seconds, after which the server token included in + * a stateless retry expires. If set to zero, the default value is + * used, which is @ref LSQUIC_DF_RETRY_TOKEN_DURATION + */ + unsigned es_retry_token_duration; + + /** + * Use QL loss bits. Allowed values are: + * 0: Do not use loss bits + * 1: Allow loss bits + * 2: Allow and send loss bits + * + * Default value is @ref LSQUIC_DF_QL_BITS + */ + int es_ql_bits; + + /** + * Enable spin bit. Allowed values are 0 and 1. + * + * Default value is @ref LSQUIC_DF_SPIN + */ + int es_spin; + + /** + * Enable delayed ACKs extension. Allowed values are 0 and 1. + * + * Default value is @ref LSQUIC_DF_DELAYED_ACKS + */ + int es_delayed_acks; + + /** + * Enable timestamps extension. Allowed values are 0 and 1. + * + * Default value is @ref LSQUIC_DF_TIMESTAMPS + */ + int es_timestamps; + + /** + * Maximum packet size we are willing to receive. This is sent to + * peer in transport parameters: the library does not enforce this + * limit for incoming packets. + * + * If set to zero, limit is not set. + * + * Default value is @ref LSQUIC_DF_MAX_UDP_PAYLOAD_SIZE_RX + */ + unsigned short es_max_udp_payload_size_rx; + + /** + * Enable the "QUIC bit grease" extension. When set to a true value, + * lsquic will grease the QUIC bit on the outgoing QUIC packets if + * the peer sent the "grease_quic_bit" transport parameter. + * + * Default value is @ref LSQUIC_DF_GREASE_QUIC_BIT + */ + int es_grease_quic_bit; + + /** + * If set to true value, enable DPLPMTUD -- Datagram Packetization + * Layer Path MTU Discovery. + * + * Default value is @ref LSQUIC_DF_DPLPMTUD + */ + int es_dplpmtud; + + /** + * PLPMTU size expected to work for most paths. + * + * If set to zero, this value is calculated based on QUIC and IP versions. + * + * Default value is @ref LSQUIC_DF_BASE_PLPMTU. + */ + unsigned short es_base_plpmtu; + + /** + * Largest PLPMTU size the engine will try. + * + * If set to zero, picking this value is left to the engine. + * + * Default value is @ref LSQUIC_DF_MAX_PLPMTU. + */ + unsigned short es_max_plpmtu; + + /** + * This value specifies how long the DPLPMTUD probe timer is, in + * milliseconds. [draft-ietf-tsvwg-datagram-plpmtud-17] says: + * + " PROBE_TIMER: The PROBE_TIMER is configured to expire after a period + " longer than the maximum time to receive an acknowledgment to a + " probe packet. This value MUST NOT be smaller than 1 second, and + " SHOULD be larger than 15 seconds. Guidance on selection of the + " timer value are provided in section 3.1.1 of the UDP Usage + " Guidelines [RFC8085]. + * + * If set to zero, the default is used. + * + * Default value is @ref LSQUIC_DF_MTU_PROBE_TIMER. + */ + unsigned es_mtu_probe_timer; + + /** + * Enable datagram extension. Allowed values are 0 and 1. + * + * Default value is @ref LSQUIC_DF_DATAGRAMS + */ + int es_datagrams; + + /** + * If set to true, changes in peer port are assumed to be due to a + * benign NAT rebinding and path characteristics -- MTU, RTT, and + * CC state -- are not reset. + * + * Default value is @ref LSQUIC_DF_OPTIMISTIC_NAT. + */ + int es_optimistic_nat; + + /** + * If set to true, Extensible HTTP Priorities are enabled. This + * is HTTP/3-only setting. + * + * Default value is @ref LSQUIC_DF_EXT_HTTP_PRIO + */ + int es_ext_http_prio; + + /** + * If set to 1, QPACK statistics are logged per connection. + * + * If set to 2, QPACK experiments are run. In this mode, encoder + * and decoder setting values are randomly selected (from the range + * [0, whatever is specified in es_qpack_(enc|dec)_*]) and these + * values along with compression ratio and user agent are logged at + * NOTICE level when connection is destroyed. The purpose of these + * experiments is to use compression performance statistics to figure + * out a good set of default values. + * + * Default value is @ref LSQUIC_DF_QPACK_EXPERIMENT. + */ + int es_qpack_experiment; + + /** + * Settings for the Packet Tolerance PID Controller (PTPC) used for + * the Delayed ACKs logic. Periodicity is how often the number of + * incoming ACKs is sampled. Periodicity's units is the number of + * RTTs. Target is the average number of incoming ACKs per RTT we + * want to achieve. Error threshold defines the range of error values + * within which no action is taken. For example, error threshold of + * 0.03 means that adjustment actions will be taken only when the + * error is outside of the [-0.03, 0.03] range. Proportional and + * integral gains have their usual meanings described here: + * https://en.wikipedia.org/wiki/PID_controller#Controller_theory + * + * The average is normalized as follows: + * AvgNormalized = Avg * e / Target # Where 'e' is 2.71828... + * + * The error is then calculated as ln(AvgNormalized) - 1. This gives + * us a logarithmic scale that is convenient to use for adjustment + * calculations. The error divisor is used to calculate the packet + * tolerance adjustment: + * Adjustment = Error / ErrorDivisor + * + * WARNING. The library comes with sane defaults. Only fiddle with + * these knobs if you know what you are doing. + */ + unsigned es_ptpc_periodicity; /* LSQUIC_DF_PTPC_PERIODICITY */ + unsigned es_ptpc_max_packtol; /* LSQUIC_DF_PTPC_MAX_PACKTOL */ + int es_ptpc_dyn_target; /* LSQUIC_DF_PTPC_DYN_TARGET */ + float es_ptpc_target, /* LSQUIC_DF_PTPC_TARGET */ + es_ptpc_prop_gain, /* LSQUIC_DF_PTPC_PROP_GAIN */ + es_ptpc_int_gain, /* LSQUIC_DF_PTPC_INT_GAIN */ + es_ptpc_err_thresh, /* LSQUIC_DF_PTPC_ERR_THRESH */ + es_ptpc_err_divisor; /* LSQUIC_DF_PTPC_ERR_DIVISOR */ + + /** + * When set to true, the on_close() callback will be delayed until the + * peer acknowledges all data sent on the stream. (Or until the connection + * is destroyed in some manner -- either explicitly closed by the user or + * as a result of an engine shutdown.) + * + * Default value is @ref LSQUIC_DF_DELAY_ONCLOSE + */ + int es_delay_onclose; + + /** + * If set to a non-zero value, specified maximum batch size. (The + * batch of packets passed to @ref ea_packets_out() callback). Must + * be no larger than 1024. + * + * Default value is @ref LSQUIC_DF_MAX_BATCH_SIZE + */ + unsigned es_max_batch_size; + + /** + * When true, sanity checks are performed on peer's transport parameter + * values. If some limits are set suspiciously low, the connection won't + * be established. + * + * Default value is @ref LSQUIC_DF_CHECK_TP_SANITY + */ + int es_check_tp_sanity; + + /** + * This is the anti-amplification factor when peer address has not be verified. + * + * Default value is @ref LSQUIC_DF_AMP_FACTOR + */ + int es_amp_factor; + + /** + * If set to true value, the library will send Version Negotiation packets + * in response to incoming packets with unsupported versions. + * The default is @ref LSQUIC_DF_SEND_VERNEG. + */ + int es_send_verneg; + + /** + * This is the preferred_address used in server's transport parameter + * It contains an address and port for both IPv4 and IPv6. It is copied directly + * as the addresses part of preferred_address value. Includes: + * Four-byte IPv4 Address, two-byte IPv4 Port, + * a 16-byte IPv6 Address, two-byte IPv6 Port. + * + * The default is all zero, which indicates perferred_address is not set + */ + uint8_t es_preferred_address[24]; + +#if LSQUIC_WEBTRANSPORT_SERVER_SUPPORT + /** + * Enable datagram extension for http3 server. Allowed values are 0 and 1. + * + * Default value is @ref LSQUIC_DF_WEBTRANSPORT_SERVER + */ + int es_webtransport_server; + + /** + * Maximum number of webtransport streams allowed by server for a connection. + * + * Default value is @ref LSQUIC_DF_MAX_WEBTRANSPORT_SERVER_STREAMS. + */ + unsigned es_max_webtransport_server_streams; +#endif +}; + +/* Initialize `settings' to default values */ +void +lsquic_engine_init_settings (struct lsquic_engine_settings *, + unsigned lsquic_engine_flags); + +/** + * Check settings for errors. + * + * @param settings Settings struct. + * + * @param flags Engine flags. + * + * @param err_buf Optional pointer to buffer into which error string + * is written. + + * @param err_buf_sz Size of err_buf. No more than this number of bytes + * will be written to err_buf, including the NUL byte. + * + * @retval 0 Settings have no errors. + * @retval -1 There are errors in settings. + */ +int +lsquic_engine_check_settings (const struct lsquic_engine_settings *settings, + unsigned lsquic_engine_flags, + char *err_buf, size_t err_buf_sz); + +struct lsquic_out_spec +{ + struct iovec *iov; + size_t iovlen; + const struct sockaddr *local_sa; + const struct sockaddr *dest_sa; + void *peer_ctx; + lsquic_conn_ctx_t *conn_ctx; /* will be NULL when sending out the first batch of handshake packets */ + int ecn; /* Valid values are 0 - 3. See RFC 3168 */ +}; + +/** + * Returns number of packets successfully sent out or -1 on error. -1 should + * only be returned if no packets were sent out. If -1 is returned or if the + * return value is smaller than `n_packets_out', this indicates that sending + * of packets is not possible. + * + * If not all packets could be sent out, errno is examined. If it is not + * EAGAIN or EWOULDBLOCK, the connection whose packet cause the error is + * closed forthwith. + * + * No packets will be attempted to be sent out until + * @ref lsquic_engine_send_unsent_packets() is called. + */ +typedef int (*lsquic_packets_out_f)( + void *packets_out_ctx, + const struct lsquic_out_spec *out_spec, + unsigned n_packets_out +); + +/** + * The shared hash interface is used to share data between multiple LSQUIC + * instances. + */ +struct lsquic_shared_hash_if +{ + /** + * If you want your item to never expire, set `expiry' to zero. + * Returns 0 on success, -1 on failure. + * + * If inserted successfully, `free()' will be called on `data' and 'key' + * pointer when the element is deleted, whether due to expiration + * or explicit deletion. + */ + int (*shi_insert)(void *shi_ctx, void *key, unsigned key_sz, + void *data, unsigned data_sz, time_t expiry); + /** + * Returns 0 on success, -1 on failure. + */ + int (*shi_delete)(void *shi_ctx, const void *key, unsigned key_sz); + + /** + * `data' is pointed to the result and `data_sz' is set to the + * object size. The implementation may choose to copy the object + * into buffer pointed to by `data', so you should have it ready. + * + * @retval 1 found. + * @retval 0 not found. + * @retval -1 error (perhaps not enough room in `data' if copy was + * attempted). + */ + int (*shi_lookup)(void *shi_ctx, const void *key, unsigned key_sz, + void **data, unsigned *data_sz); +}; + +/** + * The packet out memory interface is used by LSQUIC to get buffers to + * which outgoing packets will be written before they are passed to + * ea_packets_out callback. + * + * If not specified, malloc() and free() are used. + */ +struct lsquic_packout_mem_if +{ + /** + * Allocate buffer for sending. + */ + void * (*pmi_allocate) (void *pmi_ctx, void *peer_ctx, lsquic_conn_ctx_t *, unsigned short sz, + char is_ipv6); + /** + * This function is used to release the allocated buffer after it is + * sent via @ref ea_packets_out. + */ + void (*pmi_release) (void *pmi_ctx, void *peer_ctx, void *buf, + char is_ipv6); + /** + * If allocated buffer is not going to be sent, return it to the caller + * using this function. + */ + void (*pmi_return) (void *pmi_ctx, void *peer_ctx, void *buf, + char is_ipv6); +}; + +typedef void (*lsquic_cids_update_f)(void *ctx, void **peer_ctx, + const lsquic_cid_t *cids, unsigned n_cids); + +struct stack_st_X509; + +enum lsquic_hsi_flag { + /** + * Turn HTTP/1.x mode on or off. In this mode, decoded name and value + * pair are separated by ": " and "\r\n" is appended to the end of the + * string. By default, this mode is off. + */ + LSQUIC_HSI_HTTP1X = 1 << 1, + /** Include name hash into lsxpack_header */ + LSQUIC_HSI_HASH_NAME = 1 << 2, + /** Include nameval hash into lsxpack_header */ + LSQUIC_HSI_HASH_NAMEVAL = 1 << 3, +}; + +struct lsquic_hset_if +{ + /** + * Create a new header set. This object is (and must be) fetched from a + * stream by calling @ref lsquic_stream_get_hset() before the stream can + * be read. + * + * `stream' may be set to NULL in server mode. + */ + void * (*hsi_create_header_set)(void *hsi_ctx, lsquic_stream_t *stream, + int is_push_promise); + /** + * Return a header set prepared for decoding. If `hdr' is NULL, this + * means return a new structure with at least `space' bytes available + * in the decoder buffer. On success, a newly prepared header is + * returned. + * + * If `hdr' is not NULL, it means there was not enough decoder buffer + * and it must be increased to at least `space' bytes. `buf', `val_len', + * and `name_offset' member of the `hdr' structure may change. On + * success, the return value is the same as `hdr'. + * + * If NULL is returned, the space cannot be allocated. + */ + struct lsxpack_header * + (*hsi_prepare_decode)(void *hdr_set, + struct lsxpack_header *hdr, + size_t space); + /** + * Process new header. Return 0 on success, a positive value if a header + * error occured, or a negative value on any other error. + * + * A positive return value will result in cancellation of associated + * stream. + * + * A negative return value will result in connection being aborted. + * + * `hdr_set' is the header set object returned by + * @ref hsi_create_header_set(). + * + * `hdr' is the header returned by @ref `hsi_prepare_decode'. + * + * If `hdr' is NULL, this means that no more header are going to be + * added to the set. + */ + int (*hsi_process_header)(void *hdr_set, struct lsxpack_header *hdr); + /** + * Discard header set. This is called for unclaimed header sets and + * header sets that had an error. + */ + void (*hsi_discard_header_set)(void *hdr_set); + /** + * These flags specify properties of decoded headers passed to + * hsi_process_header(). This is only applicable to QPACK headers; + * HPACK library header properties are based on compilation, not + * run-time, options. + */ + enum lsquic_hsi_flag hsi_flags; +}; + +/** + * This struct contains a list of all callbacks that are used by the engine + * to communicate with the user code. Most of these are optional, while + * the following are mandatory: + * + * @ref ea_stream_if The stream interface. + * @ref ea_packets_out Function to send packets. + * @ref ea_lookup_cert Function to look up certificates by SNI (used + * in server mode). + * + * A pointer to this structure is passed to engine constructor + * @ref lsquic_engine_new(). + */ +struct lsquic_engine_api +{ + const struct lsquic_engine_settings *ea_settings; /* Optional */ + /** Stream interface is required to manage connections and streams. */ + const struct lsquic_stream_if *ea_stream_if; + void *ea_stream_if_ctx; + /** Function to send packets out is required. */ + lsquic_packets_out_f ea_packets_out; + void *ea_packets_out_ctx; + /** Function to look up certificates by SNI is used in server mode. */ + lsquic_lookup_cert_f ea_lookup_cert; + void *ea_cert_lu_ctx; + /** Mandatory callback for server, optional for client. */ + struct ssl_ctx_st * (*ea_get_ssl_ctx)(void *peer_ctx, + const struct sockaddr *local); + /** + * Shared hash interface is optional. If set to zero, performance of + * multiple LSQUIC instances will be degraded. + */ + const struct lsquic_shared_hash_if *ea_shi; + void *ea_shi_ctx; + /** + * Memory interface is optional. + */ + const struct lsquic_packout_mem_if *ea_pmi; + void *ea_pmi_ctx; + /** + * Optional interface to report new and old source connection IDs. + */ + lsquic_cids_update_f ea_new_scids; + lsquic_cids_update_f ea_live_scids; + lsquic_cids_update_f ea_old_scids; + void *ea_cids_update_ctx; + /** + * Function to verify server certificate. The chain contains at least + * one element. The first element in the chain is the server + * certificate. The chain belongs to the library. If you want to + * retain it, call sk_X509_up_ref(). + * + * 0 is returned on success, -1 on error. + * + * If the function pointer is not set, no verification is performed + * (the connection is allowed to proceed). + */ + int (*ea_verify_cert)(void *verify_ctx, + struct stack_st_X509 *chain); + void *ea_verify_ctx; + + /** + * Optional header set interface. If not specified, the incoming headers + * are converted to HTTP/1.x format and are read from stream and have to + * be parsed again. + */ + const struct lsquic_hset_if *ea_hsi_if; + void *ea_hsi_ctx; + + /** + * If set, engine will print cumulative connection statistics to this + * file just before it is destroyed. (Must be compiled with + * -DLSQUIC_CONN_STATS=1). + */ + void /* FILE, really */ *ea_stats_fh; + + /** + * The optional ALPN string is used by the client if @ref LSENG_HTTP + * is not set. + */ + const char *ea_alpn; + + /** + * Optional interface to control the creation of connection IDs + */ + void (*ea_generate_scid)(void *ctx, + lsquic_conn_t *, uint8_t *, unsigned); + /** Passed to ea_generate_scid() */ + void *ea_gen_scid_ctx; +}; + +/** + * Returns current number of connections processed by the engine. Both mini and full connections included + */ +unsigned +lsquic_engine_get_conns_count (lsquic_engine_t *engine); + +/** + * Create new engine. + * + * @param lsquic_engine_flags A bitmask of @ref LSENG_SERVER and + * @ref LSENG_HTTP + * + * @param api Required parameter that specifies + * various callbacks. + * + * The engine can be instantiated either in server mode (when LSENG_SERVER + * is set) or client mode. If you need both server and client in your + * program, create two engines (or as many as you'd like). + */ +lsquic_engine_t * +lsquic_engine_new (unsigned lsquic_engine_flags, + const struct lsquic_engine_api *api); + +/** + * Create a client connection to peer identified by `peer_ctx'. + * + * To let the engine specify QUIC version, use N_LSQVER. If session resumption + * information is supplied, version is picked from there instead. + * + * If `base_plpmtu' is set to zero, it is selected based on the + * engine settings, QUIC version, and IP version. + */ +lsquic_conn_t * +lsquic_engine_connect (lsquic_engine_t *, enum lsquic_version, + const struct sockaddr *local_sa, + const struct sockaddr *peer_sa, + void *peer_ctx, lsquic_conn_ctx_t *conn_ctx, + const char *hostname, unsigned short base_plpmtu, + const unsigned char *sess_resume, size_t sess_resume_len, + /** Resumption token: optional */ + const unsigned char *token, size_t token_sz); + +/** + * Pass incoming packet to the QUIC engine. This function can be called + * more than once in a row. After you add one or more packets, call + * lsquic_engine_process_conns() to schedule output, if any. + * + * @retval 0 Packet was processed by a real connection. + * + * @retval 1 Packet was handled successfully, but not by a connection. + * This may happen with version negotiation and public reset + * packets as well as some packets that may be ignored. + * + * @retval -1 An error occurred. Possible reasons are failure to allocate + * memory and invalid @param sa_local in client mode. + */ +int +lsquic_engine_packet_in (lsquic_engine_t *, + const unsigned char *packet_in_data, size_t packet_in_size, + const struct sockaddr *sa_local, const struct sockaddr *sa_peer, + void *peer_ctx, int ecn); + +/** + * Process tickable connections. This function must be called often enough so + * that packets and connections do not expire. + */ +void +lsquic_engine_process_conns (lsquic_engine_t *engine); + +/** + * Returns true if engine has some unsent packets. This happens if + * @ref ea_packets_out() could not send everything out or if processing + * deadline was exceeded (see @ref es_proc_time_thresh). + */ +int +lsquic_engine_has_unsent_packets (lsquic_engine_t *engine); + +/** + * Send out as many unsent packets as possibe: until we are out of unsent + * packets or until @ref ea_packets_out() fails. + * + * If @ref ea_packets_out() does fail cannot send all packets, this + * function must be called to signify that sending of packets is possible + * again. + */ +void +lsquic_engine_send_unsent_packets (lsquic_engine_t *engine); + +/** + * Destroy engine and all connections and streams in it and free all + * memory associated with this engine. + */ +void +lsquic_engine_destroy (lsquic_engine_t *); + +/** Return max allowed outbound streams less current outbound streams. */ +unsigned +lsquic_conn_n_avail_streams (const lsquic_conn_t *); + +/** + * Create a new request stream. This causes @ref on_new_stream() callback + * to be called. If creating more requests is not permitted at the moment + * (due to number of concurrent streams limit), stream creation is registered + * as "pending" and the stream is created later when number of streams dips + * under the limit again. Any number of pending streams can be created. + * Use @ref lsquic_conn_n_pending_streams() and + * @ref lsquic_conn_cancel_pending_streams() to manage pending streams. + * + * If connection is going away, @ref on_new_stream() is called with the + * stream parameter set to NULL. + */ +void +lsquic_conn_make_stream (lsquic_conn_t *); + +/** Return number of delayed streams currently pending */ +unsigned +lsquic_conn_n_pending_streams (const lsquic_conn_t *); + +/** Cancel `n' pending streams. Returns new number of pending streams. */ +unsigned +lsquic_conn_cancel_pending_streams (lsquic_conn_t *, unsigned n); + +/** + * Mark connection as going away: send GOAWAY frame and do not accept + * any more incoming streams, nor generate streams of our own. + * + * Only applicable to HTTP/3 and GQUIC connections. Otherwise a no-op. + */ +void +lsquic_conn_going_away (lsquic_conn_t *); + +/** + * This forces connection close. on_conn_closed and on_close callbacks + * will be called. + */ +void +lsquic_conn_close (lsquic_conn_t *); + +/** + * Set whether you want to read from stream. If @param is_want is true, + * @ref on_read() will be called when there is readable data in the + * stream. If @param is false, @ref on_read() will not be called. + * + * Returns previous value of this flag. + */ +int +lsquic_stream_wantread (lsquic_stream_t *s, int is_want); + +/** + * Read up to @param len bytes from stream into @param buf. Returns number + * of bytes read or -1 on error, in which case errno is set. Possible + * errno values: + * + * EBADF The stream is closed. + * ECONNRESET The stream has been reset. + * EWOULDBLOCK There is no data to be read. + * + * Return value of zero indicates EOF. + */ +ssize_t +lsquic_stream_read (lsquic_stream_t *s, void *buf, size_t len); + +/** + * Similar to @ref lsquic_stream_read(), but reads data into @param vec. + */ +ssize_t +lsquic_stream_readv (lsquic_stream_t *s, const struct iovec *vec, int iovcnt); + +/** + * This function allows user-supplied callback to read the stream contents. + * It is meant to be used for zero-copy stream processing. + * + * Return value and errors are same as in @ref lsquic_stream_read(). + */ +ssize_t +lsquic_stream_readf (lsquic_stream_t *s, + /** + * The callback takes four parameters: + * - Pointer to user-supplied context; + * - Pointer to the data; + * - Data size (can be zero); and + * - Indicator whether the FIN follows the data. + * + * The callback returns number of bytes processed. If this number is zero + * or is smaller than `len', reading from stream stops. + */ + size_t (*readf)(void *ctx, const unsigned char *buf, size_t len, int fin), + void *ctx); + +/** + * Set whether you want to write to stream. If @param is_want is true, + * @ref on_write() will be called when it is possible to write data to + * the stream. If @param is false, @ref on_write() will not be called. + * + * Returns previous value of this flag. + */ +int +lsquic_stream_wantwrite (lsquic_stream_t *s, int is_want); + +/** + * Write `len' bytes to the stream. Returns number of bytes written, which + * may be smaller that `len'. + * + * A negative return value indicates a serious error (the library is likely + * to have aborted the connection because of it). + */ +ssize_t +lsquic_stream_write (lsquic_stream_t *s, const void *buf, size_t len); + +/** + * Like @ref lsquic_stream_write(), but read data from @param vec. + */ +ssize_t +lsquic_stream_writev (lsquic_stream_t *s, const struct iovec *vec, int count); + +/** + * Write to streams using a single call to a preadv-like function. + */ +ssize_t +lsquic_stream_pwritev (lsquic_stream_t *s, + ssize_t (*preadv)(void *user_data, const struct iovec *iov, int iovcnt), + void *user_data, size_t n_to_write); + +/** + * Used as argument to @ref lsquic_stream_writef() + */ +struct lsquic_reader +{ + /** + * Not a ssize_t because the read function is not supposed to return + * an error. If an error occurs in the read function (for example, when + * reading from a file fails), it is supposed to deal with the error + * itself. + */ + size_t (*lsqr_read) (void *lsqr_ctx, void *buf, size_t count); + /** + * Return number of bytes remaining in the reader. + */ + size_t (*lsqr_size) (void *lsqr_ctx); + void *lsqr_ctx; +}; + +/** + * Write to stream using @ref lsquic_reader. This is the most generic of + * the write functions -- @ref lsquic_stream_write() and + * @ref lsquic_stream_writev() utilize the same mechanism. + * + * @retval Number of bytes written or -1 on error. + */ +ssize_t +lsquic_stream_writef (lsquic_stream_t *, struct lsquic_reader *); + +/** + * Flush any buffered data. This triggers packetizing even a single byte + * into a separate frame. Flushing a closed stream is an error. + * + * @retval 0 Success + * @retval -1 Failure + */ +int +lsquic_stream_flush (lsquic_stream_t *s); + +/** + * @typedef lsquic_http_headers_t + * @brief HTTP header list structure. Contains a list of HTTP headers in key/value pairs. + * used in API functions to pass headers. + */ +struct lsquic_http_headers +{ + int count; + struct lsxpack_header *headers; +}; + +/** + * Send headers in @param headers. This function must be called before + * writing to the stream. The value of @param eos is ignored in IETF QUIC. + */ +int +lsquic_stream_send_headers (lsquic_stream_t *s, + const lsquic_http_headers_t *headers, int eos); + +/** + * Get header set associated with the stream. The header set is created by + * @ref hsi_create_header_set() callback. After this call, the ownership of + * the header set is transferred to the caller. + * + * This call must precede calls to @ref lsquic_stream_read() and + * @ref lsquic_stream_readv(). + * + * If the optional header set interface (@ref ea_hsi_if) is not specified, + * this function returns NULL. + */ +void * +lsquic_stream_get_hset (lsquic_stream_t *); + +/** + * A server may push a stream. This call creates a new stream in reference + * to stream `s'. It will behave as if the client made a request: it will + * trigger on_new_stream() event and it can be used as a regular client- + * initiated stream. + * + * `hdr_set' must be set. It is passed as-is to @lsquic_stream_get_hset. + * + * @retval 0 Stream pushed successfully. + * @retval 1 Stream push failed because it is disabled or because we hit + * stream limit or connection is going away. + * @retval -1 Stream push failed because of an internal error. + */ +int +lsquic_conn_push_stream (lsquic_conn_t *c, void *hdr_set, lsquic_stream_t *s, + const lsquic_http_headers_t *headers); + +/** + * Only makes sense in server mode: the client cannot push a stream and this + * function always returns false in client mode. + */ +int +lsquic_conn_is_push_enabled (lsquic_conn_t *); + +/** Possible values for how are 0, 1, and 2. See shutdown(2). */ +int lsquic_stream_shutdown(lsquic_stream_t *s, int how); + +int lsquic_stream_close(lsquic_stream_t *s); + +/** + * Return true if peer has not ACKed all data written to the stream. This + * includes both packetized and buffered data. + */ +int +lsquic_stream_has_unacked_data (lsquic_stream_t *s); + +/** + * Get certificate chain returned by the server. This can be used for + * server certificate verification. + * + * The caller releases the stack using sk_X509_free(). + */ +struct stack_st_X509 * +lsquic_conn_get_server_cert_chain (lsquic_conn_t *); + +/** Returns ID of the stream */ +lsquic_stream_id_t +lsquic_stream_id (const lsquic_stream_t *s); + +/** + * Returns stream ctx associated with the stream. (The context is what + * is returned by @ref on_new_stream callback). + */ +lsquic_stream_ctx_t * +lsquic_stream_get_ctx (const lsquic_stream_t *s); + +/** + * Set user-supplied context associated with the stream. + */ +void +lsquic_stream_set_ctx (lsquic_stream_t *stream, lsquic_stream_ctx_t *ctx); + +/** Returns true if this is a pushed stream */ +int +lsquic_stream_is_pushed (const lsquic_stream_t *s); + +/** + * Returns true if this stream was rejected, false otherwise. Use this as + * an aid to distinguish between errors. + */ +int +lsquic_stream_is_rejected (const lsquic_stream_t *s); + +/** + * Refuse pushed stream. Call it from @ref on_new_stream. + * + * No need to call lsquic_stream_close() after this. on_close will be called. + * + * @see lsquic_stream_is_pushed + */ +int +lsquic_stream_refuse_push (lsquic_stream_t *s); + +/** + * Get information associated with pushed stream: + * + * @param ref_stream_id Stream ID in response to which push promise was + * sent. + * @param hdr_set Header set. This object was passed to or generated + * by @ref lsquic_conn_push_stream(). + * + * @retval 0 Success. + * @retval -1 This is not a pushed stream. + */ +int +lsquic_stream_push_info (const lsquic_stream_t *, + lsquic_stream_id_t *ref_stream_id, void **hdr_set); + +/** Return current priority of the stream */ +unsigned lsquic_stream_priority (const lsquic_stream_t *s); + +/** + * Set stream priority. Valid priority values are 1 through 256, inclusive. + * Lower value means higher priority. + * + * @retval 0 Success. + * @retval -1 Priority value is invalid. + */ +int lsquic_stream_set_priority (lsquic_stream_t *s, unsigned priority); + +/* + * Definitions for Extensible HTTP Priorities: + * https://tools.ietf.org/html/draft-ietf-httpbis-priority-01 + */ +/* This is maximum *value* -- but it's the lowest *priority* */ +#define LSQUIC_MAX_HTTP_URGENCY 7 +#define LSQUIC_DEF_HTTP_URGENCY 3 +#define LSQUIC_DEF_HTTP_INCREMENTAL 0 + +struct lsquic_ext_http_prio +{ + unsigned char urgency; + signed char incremental; +}; + +/** + * Get Extensible HTTP Priorities associated with the stream. + * + * Returns zero on success of a negative value on failure. A failure occurs + * if this is not an HTTP/3 stream or if Extensible HTTP Priorities haven't + * been enabled. See @ref es_ext_http_prio. + */ +int +lsquic_stream_get_http_prio (lsquic_stream_t *, struct lsquic_ext_http_prio *); + +/** + * Set Extensible HTTP Priorities of the stream. + * + * Returns zero on success of a negative value on failure. A failure occurs + * if some internal error occured or if this is not an HTTP/3 stream or if + * Extensible HTTP Priorities haven't been enabled. See @ref es_ext_http_prio. + */ +int +lsquic_stream_set_http_prio (lsquic_stream_t *, + const struct lsquic_ext_http_prio *); + +/** + * Get a pointer to the connection object. Use it with lsquic_conn_* + * functions. + */ +lsquic_conn_t * lsquic_stream_conn(const lsquic_stream_t *s); + +#if LSQUIC_WEBTRANSPORT_SERVER_SUPPORT +void +lsquic_stream_set_webtransport_session(lsquic_stream_t *s); + +int +lsquic_stream_is_webtransport_session (const lsquic_stream_t *s); + +int +lsquic_stream_is_webtransport_client_bidi_stream(const lsquic_stream_t *s); + +int +lsquic_stream_get_webtransport_session_stream_id(const lsquic_stream_t *s); +#endif + +/** Get connection ID */ +const lsquic_cid_t * +lsquic_conn_id (const lsquic_conn_t *c); + +/** Get pointer to the engine */ +lsquic_engine_t * +lsquic_conn_get_engine (lsquic_conn_t *c); + +int +lsquic_conn_get_sockaddr(lsquic_conn_t *c, + const struct sockaddr **local, const struct sockaddr **peer); + +/* Returns previous value */ +int +lsquic_conn_want_datagram_write (lsquic_conn_t *, int is_want); + +/* Get minimum datagram size. By default, this value is zero. */ +size_t +lsquic_conn_get_min_datagram_size (lsquic_conn_t *); + +/* Set minimum datagram size. This is the minumum value of the buffer passed + * to the on_dg_write() callback. + */ +int +lsquic_conn_set_min_datagram_size (lsquic_conn_t *, size_t sz); + +struct lsquic_logger_if { + int (*log_buf)(void *logger_ctx, const char *buf, size_t len); +}; + +/** + * Enumerate timestamp styles supported by LSQUIC logger mechanism. + */ +enum lsquic_logger_timestamp_style { + /** + * No timestamp is generated. + */ + LLTS_NONE, + + /** + * The timestamp consists of 24 hours, minutes, seconds, and + * milliseconds. Example: 13:43:46.671 + */ + LLTS_HHMMSSMS, + + /** + * Like above, plus date, e.g: 2017-03-21 13:43:46.671 + */ + LLTS_YYYYMMDD_HHMMSSMS, + + /** + * This is Chrome-like timestamp used by proto-quic. The timestamp + * includes month, date, hours, minutes, seconds, and microseconds. + * + * Example: 1223/104613.946956 (instead of 12/23 10:46:13.946956). + * + * This is to facilitate reading two logs side-by-side. + */ + LLTS_CHROMELIKE, + + /** + * The timestamp consists of 24 hours, minutes, seconds, and + * microseconds. Example: 13:43:46.671123 + */ + LLTS_HHMMSSUS, + + /** + * Date and time using microsecond resolution, + * e.g: 2017-03-21 13:43:46.671123 + */ + LLTS_YYYYMMDD_HHMMSSUS, + + N_LLTS +}; + +/** + * Call this if you want to do something with LSQUIC log messages, as they + * are thrown out by default. + */ +void lsquic_logger_init(const struct lsquic_logger_if *, void *logger_ctx, + enum lsquic_logger_timestamp_style); + +/** + * Set log level for all LSQUIC modules. Acceptable values are debug, info, + * notice, warning, error, alert, emerg, crit (case-insensitive). + * + * @retval 0 Success. + * @retval -1 Failure: log_level is not valid. + */ +int +lsquic_set_log_level (const char *log_level); + +/** + * E.g. "event=debug" + */ +int +lsquic_logger_lopt (const char *optarg); + +/** + * Return the list of QUIC versions (as bitmask) this engine instance + * supports. + */ +unsigned lsquic_engine_quic_versions (const lsquic_engine_t *); + +/** + * This is one of the flags that can be passed to @ref lsquic_global_init. + * Use it to initialize LSQUIC for use in client mode. + */ +#define LSQUIC_GLOBAL_CLIENT (1 << 0) + +/** + * This is one of the flags that can be passed to @ref lsquic_global_init. + * Use it to initialize LSQUIC for use in server mode. + */ +#define LSQUIC_GLOBAL_SERVER (1 << 1) + +/** + * Initialize LSQUIC. This must be called before any other LSQUIC function + * is called. Returns 0 on success and -1 on failure. + * + * @param flags This a bitmask of @ref LSQUIC_GLOBAL_CLIENT and + * @ref LSQUIC_GLOBAL_SERVER. At least one of these + * flags should be specified. + * + * @retval 0 Success. + * @retval -1 Initialization failed. + * + * @see LSQUIC_GLOBAL_CLIENT + * @see LSQUIC_GLOBAL_SERVER + */ +int +lsquic_global_init (int flags); + +/** + * Clean up global state created by @ref lsquic_global_init. Should be + * called after all LSQUIC engine instances are gone. + */ +void +lsquic_global_cleanup (void); + +/** + * Get QUIC version used by the connection. + * + * @see lsquic_version + */ +enum lsquic_version +lsquic_conn_quic_version (const lsquic_conn_t *c); + +/* Return keysize or -1 on error */ +int +lsquic_conn_crypto_keysize (const lsquic_conn_t *c); + +/* Return algorithm keysize or -1 on error */ +int +lsquic_conn_crypto_alg_keysize (const lsquic_conn_t *c); + +enum lsquic_crypto_ver +{ + LSQ_CRY_QUIC, + LSQ_CRY_TLSv13, +}; + +enum lsquic_crypto_ver +lsquic_conn_crypto_ver (const lsquic_conn_t *c); + +/* Return cipher or NULL on error */ +const char * +lsquic_conn_crypto_cipher (const lsquic_conn_t *c); + +/** Translate string QUIC version to LSQUIC QUIC version representation */ +enum lsquic_version +lsquic_str2ver (const char *str, size_t len); + +/** Translate ALPN (e.g. "h3", "h3-23", "h3-Q046") to LSQUIC enum */ +enum lsquic_version +lsquic_alpn2ver (const char *alpn, size_t len); + +/** + * This function closes all mini connections and marks all full connections + * as going away. In server mode, this also causes the engine to stop + * creating new connections. + */ +void +lsquic_engine_cooldown (lsquic_engine_t *); + +/** + * Get user-supplied context associated with the connection. + */ +lsquic_conn_ctx_t * +lsquic_conn_get_ctx (const lsquic_conn_t *); + +/** + * Set user-supplied context associated with the connection. + */ +void +lsquic_conn_set_ctx (lsquic_conn_t *, lsquic_conn_ctx_t *); + +/** + * Get peer context associated with the connection. + */ +void * +lsquic_conn_get_peer_ctx (lsquic_conn_t *, const struct sockaddr *local_sa); + +/** Get SNI sent by the client */ +const char * +lsquic_conn_get_sni (lsquic_conn_t *); + +/** + * Abort connection. + */ +void +lsquic_conn_abort (lsquic_conn_t *); + +struct lsquic_conn_info +{ + uint32_t lci_cwnd; + uint32_t lci_pmtu; + uint32_t lci_rtt; + uint32_t lci_rttvar; + uint32_t lci_rtt_min; + uint64_t lci_bytes_rcvd; + uint64_t lci_bytes_sent; + uint64_t lci_pkts_rcvd; + uint64_t lci_pkts_sent; + uint64_t lci_pkts_lost; + uint64_t lci_pkts_retx; + uint64_t lci_bw_estimate; +}; + +int +lsquic_conn_get_info (lsquic_conn_t *conn, struct lsquic_conn_info *info); + +/** + * Helper function: convert list of versions as specified in the argument + * bitmask to string that can be included as argument to "v=" part of the + * Alt-Svc header. + * + * For example (1< "37,38" + * + * This is only applicable to Google QUIC versions. + */ +const char * +lsquic_get_alt_svc_versions (unsigned versions); + +/** + * Return a NULL-terminated list of HTTP/3 ALPNs, e.g "h3-17", "h3-18", "h3". + */ +const char *const * +lsquic_get_h3_alpns (unsigned versions); + +/** + * Returns true if provided buffer could be a valid handshake-stage packet, + * false otherwise. Do not call this function if a connection has already + * been established: it will return incorrect result. + */ +int +lsquic_is_valid_hs_packet (lsquic_engine_t *, const unsigned char *, size_t); + +/** + * Parse cid from packet stored in `buf' and store it to `cid'. Returns 0 + * on success and -1 on failure. + */ +int +lsquic_cid_from_packet (const unsigned char *, size_t bufsz, lsquic_cid_t *cid); + +/** + * On success, offset to the CID is returned (a non-negative value). + * `cid_len' is set to the length of the CID. The server perspective + * is assumed. `server_cid_len' is set to the length of the CIDs that + * server generates. + * + * On failure, a negative value is returned. + */ +int +lsquic_dcid_from_packet (const unsigned char *, size_t bufsz, + unsigned server_cid_len, uint8_t *cid_len); + +/** + * Returns true if there are connections to be processed, false otherwise. + * If true, `diff' is set to the difference between the earliest advisory + * tick time and now. If the former is in the past, the value of `diff' + * is negative. + */ +int +lsquic_engine_earliest_adv_tick (lsquic_engine_t *engine, int *diff); + +/** + * Return number of connections whose advisory tick time is before current + * time plus `from_now' microseconds from now. `from_now' can be negative. + */ +unsigned +lsquic_engine_count_attq (lsquic_engine_t *engine, int from_now); + +enum LSQUIC_CONN_STATUS +{ + LSCONN_ST_HSK_IN_PROGRESS, + LSCONN_ST_CONNECTED, + LSCONN_ST_HSK_FAILURE, + LSCONN_ST_GOING_AWAY, + LSCONN_ST_TIMED_OUT, + /* If es_honor_prst is not set, the connection will never get public + * reset packets and this flag will not be set. + */ + LSCONN_ST_RESET, + LSCONN_ST_USER_ABORTED, + LSCONN_ST_ERROR, + LSCONN_ST_CLOSED, + LSCONN_ST_PEER_GOING_AWAY, + LSCONN_ST_VERNEG_FAILURE, +}; + +enum LSQUIC_CONN_STATUS +lsquic_conn_status (lsquic_conn_t *, char *errbuf, size_t bufsz); + +extern const char *const +lsquic_ver2str[N_LSQVER]; + +/* Return connection associated with this SSL object */ +lsquic_conn_t * +lsquic_ssl_to_conn (const struct ssl_st *); + +/* Return session resumption information that can be used on subsequenct + * connection as argument to lsquic_engine_connect(). Call from inside + * SSL's new session callback. + * + * Returns 0 on success. In this case, `buf' is made to point to newly + * allocated memory containing `buf_sz' bytes. It is the caller's + * responsibility to free the memory. + */ +int +lsquic_ssl_sess_to_resume_info (struct ssl_st *, struct ssl_session_st *, + unsigned char **buf, size_t *buf_sz); + +#ifdef __cplusplus +} +#endif + +#endif //__LSQUIC_H__ + diff --git a/external/lsquic/include/lsquic_types.h b/external/lsquic/include/lsquic_types.h new file mode 100644 index 0000000..4687b0d --- /dev/null +++ b/external/lsquic/include/lsquic_types.h @@ -0,0 +1,60 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef __LSQUIC_TYPES_H__ +#define __LSQUIC_TYPES_H__ + +/** + * @file + * LSQUIC types. + */ + +#include +#include + +#define MAX_CID_LEN 20 +#define GQUIC_CID_LEN 8 + +#if defined(_MSC_VER) +#define ALIGNED_(x) __declspec(align(x)) +#else +#if defined(__GNUC__) +#define ALIGNED_(x) __attribute__ ((aligned(x))) +#endif +#endif + +/** + * Connection ID + */ +typedef struct ALIGNED_(8) lsquic_cid +{ + uint8_t buf[MAX_CID_LEN]; +#define idbuf buf + uint_fast8_t len; +} lsquic_cid_t; + + +#define LSQUIC_CIDS_EQ(a, b) ((a)->len == 8 ? \ + (b)->len == 8 && *(uint64_t *)((a)->buf) == *(uint64_t *)((b)->buf) : \ + (a)->len == (b)->len && 0 == memcmp((a)->idbuf, (b)->idbuf, (a)->len)) + +/** Stream ID */ +typedef uint64_t lsquic_stream_id_t; + +/** LSQUIC engine */ +typedef struct lsquic_engine lsquic_engine_t; + +/** Connection */ +typedef struct lsquic_conn lsquic_conn_t; + +/** Connection context. This is the return value of @ref on_new_conn. */ +typedef struct lsquic_conn_ctx lsquic_conn_ctx_t; + +/** Stream */ +typedef struct lsquic_stream lsquic_stream_t; + +/** Stream context. This is the return value of @ref on_new_stream. */ +typedef struct lsquic_stream_ctx lsquic_stream_ctx_t; + +/** HTTP headers */ +typedef struct lsquic_http_headers lsquic_http_headers_t; + +#endif diff --git a/external/lsquic/include/lsxpack_header.h b/external/lsquic/include/lsxpack_header.h new file mode 100644 index 0000000..9fd5a8b --- /dev/null +++ b/external/lsquic/include/lsxpack_header.h @@ -0,0 +1,170 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSXPACK_HEADER_H_v208 +#define LSXPACK_HEADER_H_v208 + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#ifndef LSXPACK_MAX_STRLEN +#define LSXPACK_MAX_STRLEN UINT16_MAX +#endif + +typedef int32_t lsxpack_offset_t; +#if LSXPACK_MAX_STRLEN == UINT16_MAX +typedef uint16_t lsxpack_strlen_t; +#elif LSXPACK_MAX_STRLEN == UINT32_MAX +typedef uint32_t lsxpack_strlen_t; +#else +#error unexpected LSXPACK_MAX_STRLEN +#endif + +#define LSXPACK_DEL ((char *)NULL) + +enum lsxpack_flag +{ + LSXPACK_HPACK_VAL_MATCHED = 1, + LSXPACK_QPACK_IDX = 2, + LSXPACK_APP_IDX = 4, + LSXPACK_NAME_HASH = 8, + LSXPACK_NAMEVAL_HASH = 16, + LSXPACK_VAL_MATCHED = 32, + LSXPACK_NEVER_INDEX = 64, +}; + +/** + * When header are decoded, it should be stored to @buf starting from @name_offset, + * : \r\n + * So, it can be used directly as HTTP/1.1 header. there are 4 extra characters + * added. + * + * limitation: we currently does not support total header size > 64KB. + */ + +struct lsxpack_header +{ + char *buf; /* the buffer for headers */ + uint32_t name_hash; /* hash value for name */ + uint32_t nameval_hash; /* hash value for name + value */ + lsxpack_offset_t name_offset; /* the offset for name in the buffer */ + lsxpack_offset_t val_offset; /* the offset for value in the buffer */ + lsxpack_strlen_t name_len; /* the length of name */ + lsxpack_strlen_t val_len; /* the length of value */ + uint16_t chain_next_idx; /* mainly for cookie value chain */ + uint8_t hpack_index; /* HPACK static table index */ + uint8_t qpack_index; /* QPACK static table index */ + uint8_t app_index; /* APP header index */ + enum lsxpack_flag flags:8; /* combination of lsxpack_flag */ + uint8_t indexed_type; /* control to disable index or not */ + uint8_t dec_overhead; /* num of extra bytes written to decoded buffer */ +}; + +typedef struct lsxpack_header lsxpack_header_t; + + +static inline void +lsxpack_header_set_idx(lsxpack_header_t *hdr, int hpack_idx, + const char *val, size_t val_len) +{ + memset(hdr, 0, sizeof(*hdr)); + hdr->buf = (char *)val; + hdr->hpack_index = (uint8_t)hpack_idx; + assert(hpack_idx != 0); + assert(val_len <= LSXPACK_MAX_STRLEN); + hdr->val_len = (lsxpack_strlen_t)val_len; +} + + +static inline void +lsxpack_header_set_qpack_idx(lsxpack_header_t *hdr, int qpack_idx, + const char *val, size_t val_len) +{ + memset(hdr, 0, sizeof(*hdr)); + hdr->buf = (char *)val; + hdr->qpack_index = (uint8_t)qpack_idx; + assert(qpack_idx != -1); + hdr->flags = LSXPACK_QPACK_IDX; + assert(val_len <= LSXPACK_MAX_STRLEN); + hdr->val_len = (lsxpack_strlen_t)val_len; +} + + +static inline void +lsxpack_header_set_offset(lsxpack_header_t *hdr, const char *buf, + size_t name_offset, size_t name_len, + size_t val_len) +{ + memset(hdr, 0, sizeof(*hdr)); + hdr->buf = (char *)buf; + hdr->name_offset = (lsxpack_offset_t)name_offset; + assert(name_len <= LSXPACK_MAX_STRLEN); + hdr->name_len = (lsxpack_strlen_t)name_len; + assert(name_offset + name_len + 2 <= LSXPACK_MAX_STRLEN); + hdr->val_offset = (lsxpack_offset_t)(name_offset + name_len + 2); + assert(val_len <= LSXPACK_MAX_STRLEN); + hdr->val_len = (lsxpack_strlen_t)val_len; +} + + +static inline void +lsxpack_header_set_offset2(lsxpack_header_t *hdr, const char *buf, + size_t name_offset, size_t name_len, + size_t val_offset, size_t val_len) +{ + memset(hdr, 0, sizeof(*hdr)); + hdr->buf = (char *)buf; + hdr->name_offset = (lsxpack_offset_t)name_offset; + assert(name_len <= LSXPACK_MAX_STRLEN); + hdr->name_len = (lsxpack_strlen_t)name_len; + assert(val_offset <= LSXPACK_MAX_STRLEN); + hdr->val_offset = (lsxpack_offset_t)val_offset; + assert(val_len <= LSXPACK_MAX_STRLEN); + hdr->val_len = (lsxpack_strlen_t)val_len; +} + + +static inline void +lsxpack_header_prepare_decode(lsxpack_header_t *hdr, + char *out, size_t offset, size_t len) +{ + memset(hdr, 0, sizeof(*hdr)); + hdr->buf = out; + assert(offset <= LSXPACK_MAX_STRLEN); + hdr->name_offset = (lsxpack_offset_t)offset; + if (len > LSXPACK_MAX_STRLEN) + hdr->val_len = LSXPACK_MAX_STRLEN; + else + hdr->val_len = (lsxpack_strlen_t)len; +} + + +static inline const char * +lsxpack_header_get_name(const lsxpack_header_t *hdr) +{ + return (hdr->name_len)? hdr->buf + hdr->name_offset : NULL; +} + + +static inline const char * +lsxpack_header_get_value(const lsxpack_header_t *hdr) +{ return hdr->buf + hdr->val_offset; } + +static inline size_t +lsxpack_header_get_dec_size(const lsxpack_header_t *hdr) +{ return hdr->name_len + hdr->val_len + hdr->dec_overhead; } + +static inline void +lsxpack_header_mark_val_changed(lsxpack_header_t *hdr) +{ + hdr->flags = (enum lsxpack_flag)(hdr->flags & + ~(LSXPACK_HPACK_VAL_MATCHED|LSXPACK_VAL_MATCHED|LSXPACK_NAMEVAL_HASH)); +} +#ifdef __cplusplus +} +#endif + +#endif //LSXPACK_HEADER_H_v208 diff --git a/external/lsquic/qir/run_endpoint.sh b/external/lsquic/qir/run_endpoint.sh new file mode 100644 index 0000000..c16d575 --- /dev/null +++ b/external/lsquic/qir/run_endpoint.sh @@ -0,0 +1,146 @@ +#!/bin/bash +# +# run_endpoint.sh -- QUIC Interop Runner script for lsquic +# + +/setup.sh + +if [ "$ROLE" == "client" ]; then + # Wait for the simulator to start up. + /wait-for-it.sh sim:57832 -s -t 30 +fi + +echo TEST_PARAMS: $TEST_PARAMS +echo REQUESTS: "'$REQUESTS'" +eval $(perl <<'PERL' + @paths = split /\s+/, $ENV{REQUESTS}; + s~^https?://[^/]+~-p ~ for @paths; + print "PATHS='@paths'\n"; + $server = $ENV{REQUESTS}; + $server =~ s~^https?://~~; + $server =~ s~/.*~~; + ($server, $port) = split /:/, $server; + print "SERVER=$server\n"; + print "PORT=$port\n"; + print "N_REQS=", scalar(@paths), "\n"; + print "N_reqs=", scalar(@paths), "\n"; + if (@paths > 100) { + print "W=100\n"; + } else { + print "W=1\n"; + } +PERL +) +echo paths: $PATHS +echo server: $SERVER +echo port: $PORT + +# lsquic command-line tools create one file per connection when -G option +# is used. Here we make a copy and give it required name. +# +function maybe_create_keylog() { + local NAME=/logs/keys.log + if ls /logs/*.keys; then + # There may be more than one of these, as one file is created per + # connection. + cat /logs/*.keys > $NAME + fi + if [ -f $NAME ]; then + echo $NAME exists + else + echo $NAME does not exit + fi +} + +if [ "$ROLE" = server ]; then + if [ ! -z "$TESTCASE" ]; then + case "$TESTCASE" in + http3) + VERSIONS='-o version=h3-29 -o version=h3' + ;; + v2) + VERSIONS='-o version=h3-v2 -o version=h3 -Q hq-interop' + ;; + handshake|transfer|longrtt|resumption|blackhole|multiconnect|chacha20|zerortt) + VERSIONS='-o version=h3-29 -o version=h3 -o scid_iss_rate=0 -Q hq-interop' + ;; + connectionmigration) + VERSIONS='-o version=h3-29 -o version=h3 -o scid_iss_rate=0 -o preferred_v4=server4:4433 -o preferred_v6=server6:4433 -Q hq-interop' + ;; + retry) + VERSIONS='-o version=h3-29 -o version=h3 -o srej=1 -Q hq-interop' + FORCE_RETRY=1 + ;; + ecn) + VERSIONS='-o version=h3-29 -o version=h3 -Q hq-interop' + ECN='-o ecn=1' + ;; + *) exit 127 ;; + esac + fi + echo SERVER_PARAMS: $SERVER_PARAMS + exec env LSQUIC_FORCE_RETRY=$FORCE_RETRY /usr/bin/http_server $VERSIONS $ECN \ + -c server,/certs/cert.pem,/certs/priv.key \ + -c server4,/certs/cert.pem,/certs/priv.key \ + -c server6,/certs/cert.pem,/certs/priv.key \ + -c server46,/certs/cert.pem,/certs/priv.key \ + -s ::0:443 -s 0.0.0.0:443 -s ::0:4433 -s 0.0.0.0:4433 -s 193.167.100.100:12345 \ + -r /www -L debug 2>/logs/$TESTCASE.out +elif [ "$ROLE" = debug-server ]; then + exec /usr/bin/http_server $SERVER_PARAMS +elif [ "$ROLE" = client ]; then + if [ ! -z "$TESTCASE" ]; then + case "$TESTCASE" in + http3) + VERSIONS='-o version=h3' + ;; + v2) + VERSIONS='-o version=h3-v2 -o version=h3 -Q hq-interop' + ;; + handshake|transfer|longrtt|retry|multiplexing|blackhole|connectionmigration) + VERSIONS='-o version=h3 -Q hq-interop' + ;; + chacha20) + VERSIONS='-o version=h3 -Q hq-interop' + export OPENSSL_ia32cap=~0x200000200000000 + ;; + multiconnect) + VERSIONS='-o version=h3 -Q hq-interop' + N_REQS=1 + ;; + ecn) + VERSIONS='-o version=h3 -Q hq-interop' + ECN='-o ecn=1' + ;; + resumption) + VERSIONS='-o version=h3 -Q hq-interop' + RESUME='-0 /logs/resume.file' + ;; + *) exit 127 ;; + esac + fi + echo CLIENT_PARAMS: $CLIENT_PARAMS + if [ "$TESTCASE" = resumption ]; then + # Fetch first file: + /usr/bin/http_client $VERSIONS -s $SERVER:$PORT $PATHS \ + -r 1 -R 1 $RESUME \ + -B -7 /downloads -G /logs \ + -L debug 2>/logs/$TESTCASE-req1.out || exit $? + PATHS=`echo "$PATHS" | sed 's~-p /[^ ]* ~~'` + N_REQS=1 + N_reqs=1 + W=1 + echo "first request successful, new args: $N_REQS; $N_reqs; $PATHS" + fi + /usr/bin/http_client $VERSIONS -s $SERVER:$PORT $PATHS \ + -r $N_reqs -R $N_REQS -w $W $ECN $RESUME \ + -B -7 /downloads -G /logs \ + -L debug 2>/logs/$TESTCASE.out + EXIT_CODE=$? + maybe_create_keylog + sync + exit $EXIT_CODE +else + echo hi + exit 127 +fi diff --git a/external/lsquic/src/CMakeLists.txt b/external/lsquic/src/CMakeLists.txt new file mode 100644 index 0000000..5494fea --- /dev/null +++ b/external/lsquic/src/CMakeLists.txt @@ -0,0 +1,4 @@ +# Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. +cmake_minimum_required(VERSION 3.0...3.23) + +add_subdirectory(liblsquic) diff --git a/external/lsquic/src/liblsquic/CMakeLists.txt b/external/lsquic/src/liblsquic/CMakeLists.txt new file mode 100644 index 0000000..fe6307e --- /dev/null +++ b/external/lsquic/src/liblsquic/CMakeLists.txt @@ -0,0 +1,162 @@ +# Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. +SET(lsquic_STAT_SRCS + ls-qpack/lsqpack.c + lsquic_adaptive_cc.c + lsquic_alarmset.c + lsquic_arr.c + lsquic_attq.c + lsquic_bbr.c + lsquic_bw_sampler.c + lsquic_cfcw.c + lsquic_chsk_stream.c + lsquic_conn.c + lsquic_crand.c + lsquic_crt_compress.c + lsquic_crypto.c + lsquic_cubic.c + lsquic_di_error.c + lsquic_di_hash.c + lsquic_di_nocopy.c + lsquic_enc_sess_common.c + lsquic_enc_sess_ietf.c + lsquic_eng_hist.c + lsquic_engine.c + lsquic_ev_log.c + lsquic_frab_list.c + lsquic_frame_common.c + lsquic_frame_reader.c + lsquic_frame_writer.c + lsquic_full_conn.c + lsquic_full_conn_ietf.c + lsquic_global.c + lsquic_handshake.c + lsquic_hash.c + lsquic_hcsi_reader.c + lsquic_hcso_writer.c + lsquic_headers_stream.c + lsquic_hkdf.c + lsquic_hpi.c + lsquic_hspack_valid.c + lsquic_http.c + lsquic_http1x_if.c + lsquic_logger.c + lsquic_malo.c + lsquic_min_heap.c + lsquic_mini_conn.c + lsquic_mini_conn_ietf.c + lsquic_minmax.c + lsquic_mm.c + lsquic_pacer.c + lsquic_packet_common.c + lsquic_packet_gquic.c + lsquic_packet_in.c + lsquic_packet_out.c + lsquic_packet_resize.c + lsquic_parse_Q046.c + lsquic_parse_Q050.c + lsquic_parse_common.c + lsquic_parse_gquic_be.c + lsquic_parse_gquic_common.c + lsquic_parse_ietf_v1.c + lsquic_parse_iquic_common.c + lsquic_pr_queue.c + lsquic_purga.c + lsquic_qdec_hdl.c + lsquic_qenc_hdl.c + lsquic_qlog.c + lsquic_qpack_exp.c + lsquic_rechist.c + lsquic_rtt.c + lsquic_send_ctl.c + lsquic_senhist.c + lsquic_set.c + lsquic_sfcw.c + lsquic_shsk_stream.c + lsquic_spi.c + lsquic_stock_shi.c + lsquic_str.c + lsquic_stream.c + lsquic_tokgen.c + lsquic_trans_params.c + lsquic_trechist.c + lsquic_util.c + lsquic_varint.c + lsquic_version.c +) + +IF(NOT MSVC) + SET(QPACK_FLAGS "-Wno-uninitialized") + INCLUDE(CheckCCompilerFlag) + CHECK_C_COMPILER_FLAG(-Wno-implicit-fallthrough HAS_NO_IMPLICIT_FALLTHROUGH) + IF (HAS_NO_IMPLICIT_FALLTHROUGH) + SET(QPACK_FLAGS "${QPACK_FLAGS} -Wno-implicit-fallthrough") + ENDIF() +set_source_files_properties(ls-qpack/lsqpack.c PROPERTIES COMPILE_FLAGS ${QPACK_FLAGS}) +ENDIF() + +include_directories(ls-qpack) + +IF(PROJECT_NAME STREQUAL "openlitespeed") + INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src/spdy) +ELSE() + INCLUDE_DIRECTORIES(../lshpack) + SET(lsquic_STAT_SRCS ${lsquic_STAT_SRCS} + lsquic_xxhash.c + ../lshpack/lshpack.c + ) +ENDIF() + +ADD_CUSTOM_COMMAND( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lsquic_versions_to_string.c + COMMAND ${PERL_EXECUTABLE} + ARGS ${CMAKE_CURRENT_SOURCE_DIR}/gen-verstrs.pl ${CMAKE_CURRENT_SOURCE_DIR}/../../include/lsquic.h ${CMAKE_CURRENT_BINARY_DIR}/lsquic_versions_to_string.c + DEPENDS ./gen-verstrs.pl ${CMAKE_CURRENT_SOURCE_DIR}/../../include/lsquic.h +) +SET(lsquic_STAT_SRCS ${lsquic_STAT_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/lsquic_versions_to_string.c) +SET(lsquic_STAT_SRCS ${lsquic_STAT_SRCS} ls-sfparser.c) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DXXH_HEADER_NAME=\\\"lsquic_xxhash.h\\\"") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLSQPACK_ENC_LOGGER_HEADER=\\\"lsquic_qpack_enc_logger.h\\\"") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLSQPACK_DEC_LOGGER_HEADER=\\\"lsquic_qpack_dec_logger.h\\\"") + +if(NEED_LIBRT_FOR_clock_getres) + target_link_libraries(lsquic PRIVATE ${RT_LIBRARY}) +endif() + +IF(LSQUIC_SHARED_LIB) + add_library(lsquic SHARED ${lsquic_STAT_SRCS}) + TARGET_LINK_LIBRARIES(lsquic PRIVATE ${BORINGSSL_LIB_ssl} ${BORINGSSL_LIB_crypto} ${ZLIB_LIB}) + IF(MSVC) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLSQUIC_EXPORTS") + TARGET_LINK_LIBRARIES(lsquic PRIVATE ws2_32.lib) + ENDIF() +ELSE() + add_library(lsquic STATIC ${lsquic_STAT_SRCS}) +ENDIF() + +target_include_directories( + lsquic PUBLIC $) + +install(TARGETS lsquic + EXPORT lsquic-targets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +) + +include(CMakePackageConfigHelpers) +configure_package_config_file( + lsquic-config.cmake ${CMAKE_CURRENT_BINARY_DIR}/lsquic-config.cmake + INSTALL_DESTINATION share/lsquic + NO_CHECK_REQUIRED_COMPONENTS_MACRO + PATH_VARS CMAKE_INSTALL_INCLUDEDIR) + +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/lsquic-config.cmake + DESTINATION share/lsquic) + +install( + EXPORT lsquic-targets + DESTINATION share/lsquic + NAMESPACE lsquic:: + FILE lsquic-targets.cmake) + diff --git a/external/lsquic/src/liblsquic/Makefile.am b/external/lsquic/src/liblsquic/Makefile.am new file mode 100644 index 0000000..3491482 --- /dev/null +++ b/external/lsquic/src/liblsquic/Makefile.am @@ -0,0 +1,96 @@ +noinst_LIBRARIES = liblsquic.a + +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/src -I$(top_srcdir)/src/lsr -I$(top_srcdir)/src/liblsquic/ls-qpack -I$(top_srcdir)/src/spdy/ + + +liblsquic_a_METASOURCES = AUTO + +liblsquic_a_SOURCES = \ + ls-qpack/lsqpack.c \ + lsquic_adaptive_cc.c \ + lsquic_alarmset.c \ + lsquic_arr.c \ + lsquic_attq.c \ + lsquic_bbr.c \ + lsquic_bw_sampler.c \ + lsquic_cfcw.c \ + lsquic_chsk_stream.c \ + lsquic_conn.c \ + lsquic_crand.c \ + lsquic_crt_compress.c \ + lsquic_crypto.c \ + lsquic_cubic.c \ + lsquic_di_error.c \ + lsquic_di_hash.c \ + lsquic_di_nocopy.c \ + lsquic_enc_sess_common.c \ + lsquic_enc_sess_ietf.c \ + lsquic_eng_hist.c \ + lsquic_engine.c \ + lsquic_ev_log.c \ + lsquic_frab_list.c \ + lsquic_frame_common.c \ + lsquic_frame_reader.c \ + lsquic_frame_writer.c \ + lsquic_full_conn.c \ + lsquic_full_conn_ietf.c \ + lsquic_global.c \ + lsquic_handshake.c \ + lsquic_hash.c \ + lsquic_hcsi_reader.c \ + lsquic_hcso_writer.c \ + lsquic_headers_stream.c \ + lsquic_hkdf.c \ + lsquic_hpi.c \ + lsquic_hspack_valid.c \ + lsquic_http.c \ + lsquic_http1x_if.c \ + lsquic_logger.c \ + lsquic_malo.c \ + lsquic_min_heap.c \ + lsquic_mini_conn.c \ + lsquic_mini_conn_ietf.c \ + lsquic_minmax.c \ + lsquic_mm.c \ + lsquic_pacer.c \ + lsquic_packet_common.c \ + lsquic_packet_gquic.c \ + lsquic_packet_in.c \ + lsquic_packet_out.c \ + lsquic_packet_resize.c \ + lsquic_parse_Q046.c \ + lsquic_parse_Q050.c \ + lsquic_parse_common.c \ + lsquic_parse_gquic_be.c \ + lsquic_parse_gquic_common.c \ + lsquic_parse_ietf_v1.c \ + lsquic_parse_iquic_common.c \ + lsquic_pr_queue.c \ + lsquic_purga.c \ + lsquic_qdec_hdl.c \ + lsquic_qenc_hdl.c \ + lsquic_qlog.c \ + lsquic_qpack_exp.c \ + lsquic_rechist.c \ + lsquic_rtt.c \ + lsquic_send_ctl.c \ + lsquic_senhist.c \ + lsquic_set.c \ + lsquic_sfcw.c \ + lsquic_shsk_stream.c \ + lsquic_spi.c \ + lsquic_stock_shi.c \ + lsquic_str.c \ + lsquic_stream.c \ + lsquic_tokgen.c \ + lsquic_trans_params.c \ + lsquic_trechist.c \ + lsquic_util.c \ + lsquic_varint.c \ + lsquic_version.c \ + lsquic_xxhash.c \ + lsquic_versions_to_string.c \ + ls-sfparser.c + +lsquic_versions_to_string.c: gen-verstrs.pl + $(top_srcdir)/src/liblsquic/gen-verstrs.pl $(top_srcdir)/include/lsquic.h lsquic_versions_to_string.c diff --git a/external/lsquic/src/liblsquic/common_cert_set_2.c b/external/lsquic/src/liblsquic/common_cert_set_2.c new file mode 100644 index 0000000..fb0e06f --- /dev/null +++ b/external/lsquic/src/liblsquic/common_cert_set_2.c @@ -0,0 +1,136 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2015 The Chromium Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE.chrome file. + */ + +/* This file contains common certificates. It's designed to be #included in + * another file, in a namespace. */ + +/* Updated for C style, David Shue */ +/* + * Replace "kDERCert" to "der_cert2_" + * + */ + +#include + +#include "common_cert_set_2a.inc" +#include "common_cert_set_2b.inc" + +#define common_certs2_num 54 +static const unsigned char * const common_certs2[common_certs2_num] = { + der_cert2_0, + der_cert2_1, + der_cert2_2, + der_cert2_3, + der_cert2_4, + der_cert2_5, + der_cert2_6, + der_cert2_7, + der_cert2_8, + der_cert2_9, + der_cert2_10, + der_cert2_11, + der_cert2_12, + der_cert2_13, + der_cert2_14, + der_cert2_15, + der_cert2_16, + der_cert2_17, + der_cert2_18, + der_cert2_19, + der_cert2_20, + der_cert2_21, + der_cert2_22, + der_cert2_23, + der_cert2_24, + der_cert2_25, + der_cert2_26, + der_cert2_27, + der_cert2_28, + der_cert2_29, + der_cert2_30, + der_cert2_31, + der_cert2_32, + der_cert2_33, + der_cert2_34, + der_cert2_35, + der_cert2_36, + der_cert2_37, + der_cert2_38, + der_cert2_39, + der_cert2_40, + der_cert2_41, + der_cert2_42, + der_cert2_43, + der_cert2_44, + der_cert2_45, + der_cert2_46, + der_cert2_47, + der_cert2_48, + der_cert2_49, + der_cert2_50, + der_cert2_51, + der_cert2_52, + der_cert2_53, +}; + +static const size_t common_certs2_lens[common_certs2_num] = { + 897, + 911, + 985, + 1012, + 1049, + 1062, + 1065, + 1071, + 1084, + 1096, + 1097, + 1105, + 1107, + 1117, + 1127, + 1133, + 1136, + 1138, + 1153, + 1171, + 1172, + 1176, + 1182, + 1188, + 1194, + 1203, + 1205, + 1206, + 1210, + 1222, + 1226, + 1236, + 1236, + 1236, + 1238, + 1256, + 1270, + 1280, + 1283, + 1284, + 1287, + 1315, + 1327, + 1340, + 1418, + 1447, + 1509, + 1520, + 1570, + 1581, + 1592, + 1628, + 1632, + 1770, +}; + +#define common_certs2_hash UINT64_C(0xe81a92926081e801) diff --git a/external/lsquic/src/liblsquic/common_cert_set_2a.inc b/external/lsquic/src/liblsquic/common_cert_set_2a.inc new file mode 100644 index 0000000..e9ea3cf --- /dev/null +++ b/external/lsquic/src/liblsquic/common_cert_set_2a.inc @@ -0,0 +1,5628 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2015 The Chromium Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE.chrome file. + */ + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1227750 (0x12bbe6) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=Equifax, OU=Equifax Secure Certificate Authority + Validity + Not Before: May 21 04:00:00 2002 GMT + Not After : Aug 21 04:00:00 2018 GMT + Subject: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:da:cc:18:63:30:fd:f4:17:23:1a:56:7e:5b:df: + 3c:6c:38:e4:71:b7:78:91:d4:bc:a1:d8:4c:f8:a8: + 43:b6:03:e9:4d:21:07:08:88:da:58:2f:66:39:29: + bd:05:78:8b:9d:38:e8:05:b7:6a:7e:71:a4:e6:c4: + 60:a6:b0:ef:80:e4:89:28:0f:9e:25:d6:ed:83:f3: + ad:a6:91:c7:98:c9:42:18:35:14:9d:ad:98:46:92: + 2e:4f:ca:f1:87:43:c1:16:95:57:2d:50:ef:89:2d: + 80:7a:57:ad:f2:ee:5f:6b:d2:00:8d:b9:14:f8:14: + 15:35:d9:c0:46:a3:7b:72:c8:91:bf:c9:55:2b:cd: + d0:97:3e:9c:26:64:cc:df:ce:83:19:71:ca:4e:e6: + d4:d5:7b:a9:19:cd:55:de:c8:ec:d2:5e:38:53:e5: + 5c:4f:8c:2d:fe:50:23:36:fc:66:e6:cb:8e:a4:39: + 19:00:b7:95:02:39:91:0b:0e:fe:38:2e:d1:1d:05: + 9a:f6:4d:3e:6f:0f:07:1d:af:2c:1e:8f:60:39:e2: + fa:36:53:13:39:d4:5e:26:2b:db:3d:a8:14:bd:32: + eb:18:03:28:52:04:71:e5:ab:33:3d:e1:38:bb:07: + 36:84:62:9c:79:ea:16:30:f4:5f:c0:2b:e8:71:6b: + e4:f9 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Authority Key Identifier: + keyid:48:E6:68:F9:2B:D2:B2:95:D7:47:D8:23:20:10:4F:33:98:90:9F:D4 + + X509v3 Subject Key Identifier: + C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.geotrust.com/crls/secureca.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.geotrust.com/resources/repository + + Signature Algorithm: sha1WithRSAEncryption + 76:e1:12:6e:4e:4b:16:12:86:30:06:b2:81:08:cf:f0:08:c7: + c7:71:7e:66:ee:c2:ed:d4:3b:1f:ff:f0:f0:c8:4e:d6:43:38: + b0:b9:30:7d:18:d0:55:83:a2:6a:cb:36:11:9c:e8:48:66:a3: + 6d:7f:b8:13:d4:47:fe:8b:5a:5c:73:fc:ae:d9:1b:32:19:38: + ab:97:34:14:aa:96:d2:eb:a3:1c:14:08:49:b6:bb:e5:91:ef: + 83:36:eb:1d:56:6f:ca:da:bc:73:63:90:e4:7f:7b:3e:22:cb: + 3d:07:ed:5f:38:74:9c:e3:03:50:4e:a1:af:98:ee:61:f2:84: + 3f:12 +-----BEGIN CERTIFICATE----- +MIIDfTCCAuagAwIBAgIDErvmMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT +MRAwDgYDVQQKEwdFcXVpZmF4MS0wKwYDVQQLEyRFcXVpZmF4IFNlY3VyZSBDZXJ0 +aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDIwNTIxMDQwMDAwWhcNMTgwODIxMDQwMDAw +WjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UE +AxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9m +OSm9BXiLnTjoBbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIu +T8rxh0PBFpVXLVDviS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6c +JmTM386DGXHKTubU1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmR +Cw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5asz +PeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo4HwMIHtMB8GA1UdIwQYMBaAFEjm +aPkr0rKV10fYIyAQTzOYkJ/UMB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrM +TjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjA6BgNVHR8EMzAxMC+g +LaArhilodHRwOi8vY3JsLmdlb3RydXN0LmNvbS9jcmxzL3NlY3VyZWNhLmNybDBO +BgNVHSAERzBFMEMGBFUdIAAwOzA5BggrBgEFBQcCARYtaHR0cHM6Ly93d3cuZ2Vv +dHJ1c3QuY29tL3Jlc291cmNlcy9yZXBvc2l0b3J5MA0GCSqGSIb3DQEBBQUAA4GB +AHbhEm5OSxYShjAGsoEIz/AIx8dxfmbuwu3UOx//8PDITtZDOLC5MH0Y0FWDomrL +NhGc6Ehmo21/uBPUR/6LWlxz/K7ZGzIZOKuXNBSqltLroxwUCEm2u+WR74M26x1W +b8ravHNjkOR/ez4iyz0H7V84dJzjA1BOoa+Y7mHyhD8S +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_0[] = { + 0x30, 0x82, 0x03, 0x7d, 0x30, 0x82, 0x02, 0xe6, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x12, 0xbb, 0xe6, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x4e, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07, 0x45, + 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, + 0x55, 0x04, 0x0b, 0x13, 0x24, 0x45, 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, + 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x32, 0x30, + 0x35, 0x32, 0x31, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, + 0x31, 0x38, 0x30, 0x38, 0x32, 0x31, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30, + 0x5a, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x12, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xda, 0xcc, 0x18, 0x63, 0x30, 0xfd, + 0xf4, 0x17, 0x23, 0x1a, 0x56, 0x7e, 0x5b, 0xdf, 0x3c, 0x6c, 0x38, 0xe4, + 0x71, 0xb7, 0x78, 0x91, 0xd4, 0xbc, 0xa1, 0xd8, 0x4c, 0xf8, 0xa8, 0x43, + 0xb6, 0x03, 0xe9, 0x4d, 0x21, 0x07, 0x08, 0x88, 0xda, 0x58, 0x2f, 0x66, + 0x39, 0x29, 0xbd, 0x05, 0x78, 0x8b, 0x9d, 0x38, 0xe8, 0x05, 0xb7, 0x6a, + 0x7e, 0x71, 0xa4, 0xe6, 0xc4, 0x60, 0xa6, 0xb0, 0xef, 0x80, 0xe4, 0x89, + 0x28, 0x0f, 0x9e, 0x25, 0xd6, 0xed, 0x83, 0xf3, 0xad, 0xa6, 0x91, 0xc7, + 0x98, 0xc9, 0x42, 0x18, 0x35, 0x14, 0x9d, 0xad, 0x98, 0x46, 0x92, 0x2e, + 0x4f, 0xca, 0xf1, 0x87, 0x43, 0xc1, 0x16, 0x95, 0x57, 0x2d, 0x50, 0xef, + 0x89, 0x2d, 0x80, 0x7a, 0x57, 0xad, 0xf2, 0xee, 0x5f, 0x6b, 0xd2, 0x00, + 0x8d, 0xb9, 0x14, 0xf8, 0x14, 0x15, 0x35, 0xd9, 0xc0, 0x46, 0xa3, 0x7b, + 0x72, 0xc8, 0x91, 0xbf, 0xc9, 0x55, 0x2b, 0xcd, 0xd0, 0x97, 0x3e, 0x9c, + 0x26, 0x64, 0xcc, 0xdf, 0xce, 0x83, 0x19, 0x71, 0xca, 0x4e, 0xe6, 0xd4, + 0xd5, 0x7b, 0xa9, 0x19, 0xcd, 0x55, 0xde, 0xc8, 0xec, 0xd2, 0x5e, 0x38, + 0x53, 0xe5, 0x5c, 0x4f, 0x8c, 0x2d, 0xfe, 0x50, 0x23, 0x36, 0xfc, 0x66, + 0xe6, 0xcb, 0x8e, 0xa4, 0x39, 0x19, 0x00, 0xb7, 0x95, 0x02, 0x39, 0x91, + 0x0b, 0x0e, 0xfe, 0x38, 0x2e, 0xd1, 0x1d, 0x05, 0x9a, 0xf6, 0x4d, 0x3e, + 0x6f, 0x0f, 0x07, 0x1d, 0xaf, 0x2c, 0x1e, 0x8f, 0x60, 0x39, 0xe2, 0xfa, + 0x36, 0x53, 0x13, 0x39, 0xd4, 0x5e, 0x26, 0x2b, 0xdb, 0x3d, 0xa8, 0x14, + 0xbd, 0x32, 0xeb, 0x18, 0x03, 0x28, 0x52, 0x04, 0x71, 0xe5, 0xab, 0x33, + 0x3d, 0xe1, 0x38, 0xbb, 0x07, 0x36, 0x84, 0x62, 0x9c, 0x79, 0xea, 0x16, + 0x30, 0xf4, 0x5f, 0xc0, 0x2b, 0xe8, 0x71, 0x6b, 0xe4, 0xf9, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x81, 0xf0, 0x30, 0x81, 0xed, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x48, 0xe6, + 0x68, 0xf9, 0x2b, 0xd2, 0xb2, 0x95, 0xd7, 0x47, 0xd8, 0x23, 0x20, 0x10, + 0x4f, 0x33, 0x98, 0x90, 0x9f, 0xd4, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, + 0xab, 0x05, 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, + 0x4e, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, + 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3a, + 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, + 0x2d, 0xa0, 0x2b, 0x86, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x65, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x4e, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x47, 0x30, 0x45, 0x30, 0x43, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, + 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, + 0x00, 0x76, 0xe1, 0x12, 0x6e, 0x4e, 0x4b, 0x16, 0x12, 0x86, 0x30, 0x06, + 0xb2, 0x81, 0x08, 0xcf, 0xf0, 0x08, 0xc7, 0xc7, 0x71, 0x7e, 0x66, 0xee, + 0xc2, 0xed, 0xd4, 0x3b, 0x1f, 0xff, 0xf0, 0xf0, 0xc8, 0x4e, 0xd6, 0x43, + 0x38, 0xb0, 0xb9, 0x30, 0x7d, 0x18, 0xd0, 0x55, 0x83, 0xa2, 0x6a, 0xcb, + 0x36, 0x11, 0x9c, 0xe8, 0x48, 0x66, 0xa3, 0x6d, 0x7f, 0xb8, 0x13, 0xd4, + 0x47, 0xfe, 0x8b, 0x5a, 0x5c, 0x73, 0xfc, 0xae, 0xd9, 0x1b, 0x32, 0x19, + 0x38, 0xab, 0x97, 0x34, 0x14, 0xaa, 0x96, 0xd2, 0xeb, 0xa3, 0x1c, 0x14, + 0x08, 0x49, 0xb6, 0xbb, 0xe5, 0x91, 0xef, 0x83, 0x36, 0xeb, 0x1d, 0x56, + 0x6f, 0xca, 0xda, 0xbc, 0x73, 0x63, 0x90, 0xe4, 0x7f, 0x7b, 0x3e, 0x22, + 0xcb, 0x3d, 0x07, 0xed, 0x5f, 0x38, 0x74, 0x9c, 0xe3, 0x03, 0x50, 0x4e, + 0xa1, 0xaf, 0x98, 0xee, 0x61, 0xf2, 0x84, 0x3f, 0x12, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 880226 (0xd6e62) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=Equifax, OU=Equifax Secure Certificate Authority + Validity + Not Before: Nov 27 00:00:00 2006 GMT + Not After : Aug 21 16:15:00 2018 GMT + Subject: C=US, O=GeoTrust Inc., CN=GeoTrust Primary Certification Authority + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:be:b8:15:7b:ff:d4:7c:7d:67:ad:83:64:7b:c8: + 42:53:2d:df:f6:84:08:20:61:d6:01:59:6a:9c:44: + 11:af:ef:76:fd:95:7e:ce:61:30:bb:7a:83:5f:02: + bd:01:66:ca:ee:15:8d:6f:a1:30:9c:bd:a1:85:9e: + 94:3a:f3:56:88:00:31:cf:d8:ee:6a:96:02:d9:ed: + 03:8c:fb:75:6d:e7:ea:b8:55:16:05:16:9a:f4:e0: + 5e:b1:88:c0:64:85:5c:15:4d:88:c7:b7:ba:e0:75: + e9:ad:05:3d:9d:c7:89:48:e0:bb:28:c8:03:e1:30: + 93:64:5e:52:c0:59:70:22:35:57:88:8a:f1:95:0a: + 83:d7:bc:31:73:01:34:ed:ef:46:71:e0:6b:02:a8: + 35:72:6b:97:9b:66:e0:cb:1c:79:5f:d8:1a:04:68: + 1e:47:02:e6:9d:60:e2:36:97:01:df:ce:35:92:df: + be:67:c7:6d:77:59:3b:8f:9d:d6:90:15:94:bc:42: + 34:10:c1:39:f9:b1:27:3e:7e:d6:8a:75:c5:b2:af: + 96:d3:a2:de:9b:e4:98:be:7d:e1:e9:81:ad:b6:6f: + fc:d7:0e:da:e0:34:b0:0d:1a:77:e7:e3:08:98:ef: + 58:fa:9c:84:b7:36:af:c2:df:ac:d2:f4:10:06:70: + 71:35 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 2C:D5:50:41:97:15:8B:F0:8F:36:61:5B:4A:FB:6B:D9:99:C9:33:92 + X509v3 Authority Key Identifier: + keyid:48:E6:68:F9:2B:D2:B2:95:D7:47:D8:23:20:10:4F:33:98:90:9F:D4 + + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.geotrust.com/crls/secureca.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: http://www.geotrust.com/resources/cps + + Signature Algorithm: sha1WithRSAEncryption + af:f3:0e:d6:72:ab:c7:a9:97:ca:2a:6b:84:39:de:79:a9:f0: + 81:e5:08:67:ab:d7:2f:20:02:01:71:0c:04:22:c9:1e:88:95: + 03:c9:49:3a:af:67:08:49:b0:d5:08:f5:20:3d:80:91:a0:c5: + 87:a3:fb:c9:a3:17:91:f9:a8:2f:ae:e9:0f:df:96:72:0f:75: + 17:80:5d:78:01:4d:9f:1f:6d:7b:d8:f5:42:38:23:1a:99:93: + f4:83:be:3b:35:74:e7:37:13:35:7a:ac:b4:b6:90:82:6c:27: + a4:e0:ec:9e:35:bd:bf:e5:29:a1:47:9f:5b:32:fc:e9:99:7d: + 2b:39 +-----BEGIN CERTIFICATE----- +MIIDizCCAvSgAwIBAgIDDW5iMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT +MRAwDgYDVQQKEwdFcXVpZmF4MS0wKwYDVQQLEyRFcXVpZmF4IFNlY3VyZSBDZXJ0 +aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMTI3MDAwMDAwWhcNMTgwODIxMTYxNTAw +WjBYMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UE +AxMoR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL64FXv/1Hx9Z62DZHvIQlMt3/aE +CCBh1gFZapxEEa/vdv2Vfs5hMLt6g18CvQFmyu4VjW+hMJy9oYWelDrzVogAMc/Y +7mqWAtntA4z7dW3n6rhVFgUWmvTgXrGIwGSFXBVNiMe3uuB16a0FPZ3HiUjguyjI +A+Ewk2ReUsBZcCI1V4iK8ZUKg9e8MXMBNO3vRnHgawKoNXJrl5tm4MsceV/YGgRo +HkcC5p1g4jaXAd/ONZLfvmfHbXdZO4+d1pAVlLxCNBDBOfmxJz5+1op1xbKvltOi +3pvkmL594emBrbZv/NcO2uA0sA0ad+fjCJjvWPqchLc2r8LfrNL0EAZwcTUCAwEA +AaOB6DCB5TAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFCzVUEGXFYvwjzZhW0r7 +a9mZyTOSMB8GA1UdIwQYMBaAFEjmaPkr0rKV10fYIyAQTzOYkJ/UMA8GA1UdEwEB +/wQFMAMBAf8wOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5nZW90cnVzdC5j +b20vY3Jscy9zZWN1cmVjYS5jcmwwRgYDVR0gBD8wPTA7BgRVHSAAMDMwMQYIKwYB +BQUHAgEWJWh0dHA6Ly93d3cuZ2VvdHJ1c3QuY29tL3Jlc291cmNlcy9jcHMwDQYJ +KoZIhvcNAQEFBQADgYEAr/MO1nKrx6mXyiprhDneeanwgeUIZ6vXLyACAXEMBCLJ +HoiVA8lJOq9nCEmw1Qj1ID2AkaDFh6P7yaMXkfmoL67pD9+Wcg91F4BdeAFNnx9t +e9j1QjgjGpmT9IO+OzV05zcTNXqstLaQgmwnpODsnjW9v+UpoUefWzL86Zl9Kzk= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_1[] = { + 0x30, 0x82, 0x03, 0x8b, 0x30, 0x82, 0x02, 0xf4, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x0d, 0x6e, 0x62, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x4e, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07, 0x45, + 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, + 0x55, 0x04, 0x0b, 0x13, 0x24, 0x45, 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, + 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, + 0x31, 0x32, 0x37, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, + 0x31, 0x38, 0x30, 0x38, 0x32, 0x31, 0x31, 0x36, 0x31, 0x35, 0x30, 0x30, + 0x5a, 0x30, 0x58, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x28, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, + 0x82, 0x01, 0x01, 0x00, 0xbe, 0xb8, 0x15, 0x7b, 0xff, 0xd4, 0x7c, 0x7d, + 0x67, 0xad, 0x83, 0x64, 0x7b, 0xc8, 0x42, 0x53, 0x2d, 0xdf, 0xf6, 0x84, + 0x08, 0x20, 0x61, 0xd6, 0x01, 0x59, 0x6a, 0x9c, 0x44, 0x11, 0xaf, 0xef, + 0x76, 0xfd, 0x95, 0x7e, 0xce, 0x61, 0x30, 0xbb, 0x7a, 0x83, 0x5f, 0x02, + 0xbd, 0x01, 0x66, 0xca, 0xee, 0x15, 0x8d, 0x6f, 0xa1, 0x30, 0x9c, 0xbd, + 0xa1, 0x85, 0x9e, 0x94, 0x3a, 0xf3, 0x56, 0x88, 0x00, 0x31, 0xcf, 0xd8, + 0xee, 0x6a, 0x96, 0x02, 0xd9, 0xed, 0x03, 0x8c, 0xfb, 0x75, 0x6d, 0xe7, + 0xea, 0xb8, 0x55, 0x16, 0x05, 0x16, 0x9a, 0xf4, 0xe0, 0x5e, 0xb1, 0x88, + 0xc0, 0x64, 0x85, 0x5c, 0x15, 0x4d, 0x88, 0xc7, 0xb7, 0xba, 0xe0, 0x75, + 0xe9, 0xad, 0x05, 0x3d, 0x9d, 0xc7, 0x89, 0x48, 0xe0, 0xbb, 0x28, 0xc8, + 0x03, 0xe1, 0x30, 0x93, 0x64, 0x5e, 0x52, 0xc0, 0x59, 0x70, 0x22, 0x35, + 0x57, 0x88, 0x8a, 0xf1, 0x95, 0x0a, 0x83, 0xd7, 0xbc, 0x31, 0x73, 0x01, + 0x34, 0xed, 0xef, 0x46, 0x71, 0xe0, 0x6b, 0x02, 0xa8, 0x35, 0x72, 0x6b, + 0x97, 0x9b, 0x66, 0xe0, 0xcb, 0x1c, 0x79, 0x5f, 0xd8, 0x1a, 0x04, 0x68, + 0x1e, 0x47, 0x02, 0xe6, 0x9d, 0x60, 0xe2, 0x36, 0x97, 0x01, 0xdf, 0xce, + 0x35, 0x92, 0xdf, 0xbe, 0x67, 0xc7, 0x6d, 0x77, 0x59, 0x3b, 0x8f, 0x9d, + 0xd6, 0x90, 0x15, 0x94, 0xbc, 0x42, 0x34, 0x10, 0xc1, 0x39, 0xf9, 0xb1, + 0x27, 0x3e, 0x7e, 0xd6, 0x8a, 0x75, 0xc5, 0xb2, 0xaf, 0x96, 0xd3, 0xa2, + 0xde, 0x9b, 0xe4, 0x98, 0xbe, 0x7d, 0xe1, 0xe9, 0x81, 0xad, 0xb6, 0x6f, + 0xfc, 0xd7, 0x0e, 0xda, 0xe0, 0x34, 0xb0, 0x0d, 0x1a, 0x77, 0xe7, 0xe3, + 0x08, 0x98, 0xef, 0x58, 0xfa, 0x9c, 0x84, 0xb7, 0x36, 0xaf, 0xc2, 0xdf, + 0xac, 0xd2, 0xf4, 0x10, 0x06, 0x70, 0x71, 0x35, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xa3, 0x81, 0xe8, 0x30, 0x81, 0xe5, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x2c, 0xd5, + 0x50, 0x41, 0x97, 0x15, 0x8b, 0xf0, 0x8f, 0x36, 0x61, 0x5b, 0x4a, 0xfb, + 0x6b, 0xd9, 0x99, 0xc9, 0x33, 0x92, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x48, 0xe6, 0x68, 0xf9, 0x2b, + 0xd2, 0xb2, 0x95, 0xd7, 0x47, 0xd8, 0x23, 0x20, 0x10, 0x4f, 0x33, 0x98, + 0x90, 0x9f, 0xd4, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x3a, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, 0x2d, 0xa0, + 0x2b, 0x86, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x65, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x46, 0x06, 0x03, + 0x55, 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, 0x30, 0x3b, 0x06, 0x04, 0x55, + 0x1d, 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, + 0x81, 0x81, 0x00, 0xaf, 0xf3, 0x0e, 0xd6, 0x72, 0xab, 0xc7, 0xa9, 0x97, + 0xca, 0x2a, 0x6b, 0x84, 0x39, 0xde, 0x79, 0xa9, 0xf0, 0x81, 0xe5, 0x08, + 0x67, 0xab, 0xd7, 0x2f, 0x20, 0x02, 0x01, 0x71, 0x0c, 0x04, 0x22, 0xc9, + 0x1e, 0x88, 0x95, 0x03, 0xc9, 0x49, 0x3a, 0xaf, 0x67, 0x08, 0x49, 0xb0, + 0xd5, 0x08, 0xf5, 0x20, 0x3d, 0x80, 0x91, 0xa0, 0xc5, 0x87, 0xa3, 0xfb, + 0xc9, 0xa3, 0x17, 0x91, 0xf9, 0xa8, 0x2f, 0xae, 0xe9, 0x0f, 0xdf, 0x96, + 0x72, 0x0f, 0x75, 0x17, 0x80, 0x5d, 0x78, 0x01, 0x4d, 0x9f, 0x1f, 0x6d, + 0x7b, 0xd8, 0xf5, 0x42, 0x38, 0x23, 0x1a, 0x99, 0x93, 0xf4, 0x83, 0xbe, + 0x3b, 0x35, 0x74, 0xe7, 0x37, 0x13, 0x35, 0x7a, 0xac, 0xb4, 0xb6, 0x90, + 0x82, 0x6c, 0x27, 0xa4, 0xe0, 0xec, 0x9e, 0x35, 0xbd, 0xbf, 0xe5, 0x29, + 0xa1, 0x47, 0x9f, 0x5b, 0x32, 0xfc, 0xe9, 0x99, 0x7d, 0x2b, 0x39, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 145105 (0x236d1) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Validity + Not Before: Feb 19 22:45:05 2010 GMT + Not After : Feb 18 22:45:05 2020 GMT + Subject: C=US, O=GeoTrust, Inc., CN=RapidSSL CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:c7:71:f8:56:c7:1e:d9:cc:b5:ad:f6:b4:97:a3: + fb:a1:e6:0b:50:5f:50:aa:3a:da:0f:fc:3d:29:24: + 43:c6:10:29:c1:fc:55:40:72:ee:bd:ea:df:9f:b6: + 41:f4:48:4b:c8:6e:fe:4f:57:12:8b:5b:fa:92:dd: + 5e:e8:ad:f3:f0:1b:b1:7b:4d:fb:cf:fd:d1:e5:f8: + e3:dc:e7:f5:73:7f:df:01:49:cf:8c:56:c1:bd:37: + e3:5b:be:b5:4f:8b:8b:f0:da:4f:c7:e3:dd:55:47: + 69:df:f2:5b:7b:07:4f:3d:e5:ac:21:c1:c8:1d:7a: + e8:e7:f6:0f:a1:aa:f5:6f:de:a8:65:4f:10:89:9c: + 03:f3:89:7a:a5:5e:01:72:33:ed:a9:e9:5a:1e:79: + f3:87:c8:df:c8:c5:fc:37:c8:9a:9a:d7:b8:76:cc: + b0:3e:e7:fd:e6:54:ea:df:5f:52:41:78:59:57:ad: + f1:12:d6:7f:bc:d5:9f:70:d3:05:6c:fa:a3:7d:67: + 58:dd:26:62:1d:31:92:0c:79:79:1c:8e:cf:ca:7b: + c1:66:af:a8:74:48:fb:8e:82:c2:9e:2c:99:5c:7b: + 2d:5d:9b:bc:5b:57:9e:7c:3a:7a:13:ad:f2:a3:18: + 5b:2b:59:0f:cd:5c:3a:eb:68:33:c6:28:1d:82:d1: + 50:8b + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 6B:69:3D:6A:18:42:4A:DD:8F:02:65:39:FD:35:24:86:78:91:16:30 + X509v3 Authority Key Identifier: + keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.geotrust.com/crls/gtglobal.crl + + Authority Information Access: + OCSP - URI:http://ocsp.geotrust.com + + Signature Algorithm: sha1WithRSAEncryption + ab:bc:bc:0a:5d:18:94:e3:c1:b1:c3:a8:4c:55:d6:be:b4:98: + f1:ee:3c:1c:cd:cf:f3:24:24:5c:96:03:27:58:fc:36:ae:a2: + 2f:8f:f1:fe:da:2b:02:c3:33:bd:c8:dd:48:22:2b:60:0f:a5: + 03:10:fd:77:f8:d0:ed:96:67:4f:fd:ea:47:20:70:54:dc:a9: + 0c:55:7e:e1:96:25:8a:d9:b5:da:57:4a:be:8d:8e:49:43:63: + a5:6c:4e:27:87:25:eb:5b:6d:fe:a2:7f:38:28:e0:36:ab:ad: + 39:a5:a5:62:c4:b7:5c:58:2c:aa:5d:01:60:a6:62:67:a3:c0: + c7:62:23:f4:e7:6c:46:ee:b5:d3:80:6a:22:13:d2:2d:3f:74: + 4f:ea:af:8c:5f:b4:38:9c:db:ae:ce:af:84:1e:a6:f6:34:51: + 59:79:d3:e3:75:dc:bc:d7:f3:73:df:92:ec:d2:20:59:6f:9c: + fb:95:f8:92:76:18:0a:7c:0f:2c:a6:ca:de:8a:62:7b:d8:f3: + ce:5f:68:bd:8f:3e:c1:74:bb:15:72:3a:16:83:a9:0b:e6:4d: + 99:9c:d8:57:ec:a8:01:51:c7:6f:57:34:5e:ab:4a:2c:42:f6: + 4f:1c:89:78:de:26:4e:f5:6f:93:4c:15:6b:27:56:4d:00:54: + 6c:7a:b7:b7 +-----BEGIN CERTIFICATE----- +MIID1TCCAr2gAwIBAgIDAjbRMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMTAwMjE5MjI0NTA1WhcNMjAwMjE4MjI0NTA1WjA8MQswCQYDVQQG +EwJVUzEXMBUGA1UEChMOR2VvVHJ1c3QsIEluYy4xFDASBgNVBAMTC1JhcGlkU1NM +IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx3H4Vsce2cy1rfa0 +l6P7oeYLUF9QqjraD/w9KSRDxhApwfxVQHLuverfn7ZB9EhLyG7+T1cSi1v6kt1e +6K3z8Buxe037z/3R5fjj3Of1c3/fAUnPjFbBvTfjW761T4uL8NpPx+PdVUdp3/Jb +ewdPPeWsIcHIHXro5/YPoar1b96oZU8QiZwD84l6pV4BcjPtqelaHnnzh8jfyMX8 +N8iamte4dsywPuf95lTq319SQXhZV63xEtZ/vNWfcNMFbPqjfWdY3SZiHTGSDHl5 +HI7PynvBZq+odEj7joLCniyZXHstXZu8W1eefDp6E63yoxhbK1kPzVw662gzxigd +gtFQiwIDAQABo4HZMIHWMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUa2k9ahhC +St2PAmU5/TUkhniRFjAwHwYDVR0jBBgwFoAUwHqYaI2J+6sFZAwRfap9ZbjKzE4w +EgYDVR0TAQH/BAgwBgEB/wIBADA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vY3Js +Lmdlb3RydXN0LmNvbS9jcmxzL2d0Z2xvYmFsLmNybDA0BggrBgEFBQcBAQQoMCYw +JAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmdlb3RydXN0LmNvbTANBgkqhkiG9w0B +AQUFAAOCAQEAq7y8Cl0YlOPBscOoTFXWvrSY8e48HM3P8yQkXJYDJ1j8Nq6iL4/x +/torAsMzvcjdSCIrYA+lAxD9d/jQ7ZZnT/3qRyBwVNypDFV+4ZYlitm12ldKvo2O +SUNjpWxOJ4cl61tt/qJ/OCjgNqutOaWlYsS3XFgsql0BYKZiZ6PAx2Ij9OdsRu61 +04BqIhPSLT90T+qvjF+0OJzbrs6vhB6m9jRRWXnT43XcvNfzc9+S7NIgWW+c+5X4 +knYYCnwPLKbK3opie9jzzl9ovY8+wXS7FXI6FoOpC+ZNmZzYV+yoAVHHb1c0XqtK +LEL2TxyJeN4mTvVvk0wVaydWTQBUbHq3tw== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_2[] = { + 0x30, 0x82, 0x03, 0xd5, 0x30, 0x82, 0x02, 0xbd, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x36, 0xd1, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, + 0x32, 0x31, 0x39, 0x32, 0x32, 0x34, 0x35, 0x30, 0x35, 0x5a, 0x17, 0x0d, + 0x32, 0x30, 0x30, 0x32, 0x31, 0x38, 0x32, 0x32, 0x34, 0x35, 0x30, 0x35, + 0x5a, 0x30, 0x3c, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0e, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x2c, + 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x0b, 0x52, 0x61, 0x70, 0x69, 0x64, 0x53, 0x53, 0x4c, + 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xc7, 0x71, 0xf8, 0x56, 0xc7, 0x1e, 0xd9, 0xcc, 0xb5, 0xad, 0xf6, 0xb4, + 0x97, 0xa3, 0xfb, 0xa1, 0xe6, 0x0b, 0x50, 0x5f, 0x50, 0xaa, 0x3a, 0xda, + 0x0f, 0xfc, 0x3d, 0x29, 0x24, 0x43, 0xc6, 0x10, 0x29, 0xc1, 0xfc, 0x55, + 0x40, 0x72, 0xee, 0xbd, 0xea, 0xdf, 0x9f, 0xb6, 0x41, 0xf4, 0x48, 0x4b, + 0xc8, 0x6e, 0xfe, 0x4f, 0x57, 0x12, 0x8b, 0x5b, 0xfa, 0x92, 0xdd, 0x5e, + 0xe8, 0xad, 0xf3, 0xf0, 0x1b, 0xb1, 0x7b, 0x4d, 0xfb, 0xcf, 0xfd, 0xd1, + 0xe5, 0xf8, 0xe3, 0xdc, 0xe7, 0xf5, 0x73, 0x7f, 0xdf, 0x01, 0x49, 0xcf, + 0x8c, 0x56, 0xc1, 0xbd, 0x37, 0xe3, 0x5b, 0xbe, 0xb5, 0x4f, 0x8b, 0x8b, + 0xf0, 0xda, 0x4f, 0xc7, 0xe3, 0xdd, 0x55, 0x47, 0x69, 0xdf, 0xf2, 0x5b, + 0x7b, 0x07, 0x4f, 0x3d, 0xe5, 0xac, 0x21, 0xc1, 0xc8, 0x1d, 0x7a, 0xe8, + 0xe7, 0xf6, 0x0f, 0xa1, 0xaa, 0xf5, 0x6f, 0xde, 0xa8, 0x65, 0x4f, 0x10, + 0x89, 0x9c, 0x03, 0xf3, 0x89, 0x7a, 0xa5, 0x5e, 0x01, 0x72, 0x33, 0xed, + 0xa9, 0xe9, 0x5a, 0x1e, 0x79, 0xf3, 0x87, 0xc8, 0xdf, 0xc8, 0xc5, 0xfc, + 0x37, 0xc8, 0x9a, 0x9a, 0xd7, 0xb8, 0x76, 0xcc, 0xb0, 0x3e, 0xe7, 0xfd, + 0xe6, 0x54, 0xea, 0xdf, 0x5f, 0x52, 0x41, 0x78, 0x59, 0x57, 0xad, 0xf1, + 0x12, 0xd6, 0x7f, 0xbc, 0xd5, 0x9f, 0x70, 0xd3, 0x05, 0x6c, 0xfa, 0xa3, + 0x7d, 0x67, 0x58, 0xdd, 0x26, 0x62, 0x1d, 0x31, 0x92, 0x0c, 0x79, 0x79, + 0x1c, 0x8e, 0xcf, 0xca, 0x7b, 0xc1, 0x66, 0xaf, 0xa8, 0x74, 0x48, 0xfb, + 0x8e, 0x82, 0xc2, 0x9e, 0x2c, 0x99, 0x5c, 0x7b, 0x2d, 0x5d, 0x9b, 0xbc, + 0x5b, 0x57, 0x9e, 0x7c, 0x3a, 0x7a, 0x13, 0xad, 0xf2, 0xa3, 0x18, 0x5b, + 0x2b, 0x59, 0x0f, 0xcd, 0x5c, 0x3a, 0xeb, 0x68, 0x33, 0xc6, 0x28, 0x1d, + 0x82, 0xd1, 0x50, 0x8b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xd9, + 0x30, 0x81, 0xd6, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x6b, 0x69, 0x3d, 0x6a, 0x18, 0x42, + 0x4a, 0xdd, 0x8f, 0x02, 0x65, 0x39, 0xfd, 0x35, 0x24, 0x86, 0x78, 0x91, + 0x16, 0x30, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, + 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, + 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, + 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x3a, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, 0x2d, 0xa0, 0x2b, + 0x86, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, + 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, + 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x34, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, + 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, + 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, + 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xab, 0xbc, 0xbc, + 0x0a, 0x5d, 0x18, 0x94, 0xe3, 0xc1, 0xb1, 0xc3, 0xa8, 0x4c, 0x55, 0xd6, + 0xbe, 0xb4, 0x98, 0xf1, 0xee, 0x3c, 0x1c, 0xcd, 0xcf, 0xf3, 0x24, 0x24, + 0x5c, 0x96, 0x03, 0x27, 0x58, 0xfc, 0x36, 0xae, 0xa2, 0x2f, 0x8f, 0xf1, + 0xfe, 0xda, 0x2b, 0x02, 0xc3, 0x33, 0xbd, 0xc8, 0xdd, 0x48, 0x22, 0x2b, + 0x60, 0x0f, 0xa5, 0x03, 0x10, 0xfd, 0x77, 0xf8, 0xd0, 0xed, 0x96, 0x67, + 0x4f, 0xfd, 0xea, 0x47, 0x20, 0x70, 0x54, 0xdc, 0xa9, 0x0c, 0x55, 0x7e, + 0xe1, 0x96, 0x25, 0x8a, 0xd9, 0xb5, 0xda, 0x57, 0x4a, 0xbe, 0x8d, 0x8e, + 0x49, 0x43, 0x63, 0xa5, 0x6c, 0x4e, 0x27, 0x87, 0x25, 0xeb, 0x5b, 0x6d, + 0xfe, 0xa2, 0x7f, 0x38, 0x28, 0xe0, 0x36, 0xab, 0xad, 0x39, 0xa5, 0xa5, + 0x62, 0xc4, 0xb7, 0x5c, 0x58, 0x2c, 0xaa, 0x5d, 0x01, 0x60, 0xa6, 0x62, + 0x67, 0xa3, 0xc0, 0xc7, 0x62, 0x23, 0xf4, 0xe7, 0x6c, 0x46, 0xee, 0xb5, + 0xd3, 0x80, 0x6a, 0x22, 0x13, 0xd2, 0x2d, 0x3f, 0x74, 0x4f, 0xea, 0xaf, + 0x8c, 0x5f, 0xb4, 0x38, 0x9c, 0xdb, 0xae, 0xce, 0xaf, 0x84, 0x1e, 0xa6, + 0xf6, 0x34, 0x51, 0x59, 0x79, 0xd3, 0xe3, 0x75, 0xdc, 0xbc, 0xd7, 0xf3, + 0x73, 0xdf, 0x92, 0xec, 0xd2, 0x20, 0x59, 0x6f, 0x9c, 0xfb, 0x95, 0xf8, + 0x92, 0x76, 0x18, 0x0a, 0x7c, 0x0f, 0x2c, 0xa6, 0xca, 0xde, 0x8a, 0x62, + 0x7b, 0xd8, 0xf3, 0xce, 0x5f, 0x68, 0xbd, 0x8f, 0x3e, 0xc1, 0x74, 0xbb, + 0x15, 0x72, 0x3a, 0x16, 0x83, 0xa9, 0x0b, 0xe6, 0x4d, 0x99, 0x9c, 0xd8, + 0x57, 0xec, 0xa8, 0x01, 0x51, 0xc7, 0x6f, 0x57, 0x34, 0x5e, 0xab, 0x4a, + 0x2c, 0x42, 0xf6, 0x4f, 0x1c, 0x89, 0x78, 0xde, 0x26, 0x4e, 0xf5, 0x6f, + 0x93, 0x4c, 0x15, 0x6b, 0x27, 0x56, 0x4d, 0x00, 0x54, 0x6c, 0x7a, 0xb7, + 0xb7, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 146051 (0x23a83) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Validity + Not Before: Apr 5 15:15:56 2013 GMT + Not After : Dec 31 23:59:59 2016 GMT + Subject: C=US, O=Google Inc, CN=Google Internet Authority G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:9c:2a:04:77:5c:d8:50:91:3a:06:a3:82:e0:d8: + 50:48:bc:89:3f:f1:19:70:1a:88:46:7e:e0:8f:c5: + f1:89:ce:21:ee:5a:fe:61:0d:b7:32:44:89:a0:74: + 0b:53:4f:55:a4:ce:82:62:95:ee:eb:59:5f:c6:e1: + 05:80:12:c4:5e:94:3f:bc:5b:48:38:f4:53:f7:24: + e6:fb:91:e9:15:c4:cf:f4:53:0d:f4:4a:fc:9f:54: + de:7d:be:a0:6b:6f:87:c0:d0:50:1f:28:30:03:40: + da:08:73:51:6c:7f:ff:3a:3c:a7:37:06:8e:bd:4b: + 11:04:eb:7d:24:de:e6:f9:fc:31:71:fb:94:d5:60: + f3:2e:4a:af:42:d2:cb:ea:c4:6a:1a:b2:cc:53:dd: + 15:4b:8b:1f:c8:19:61:1f:cd:9d:a8:3e:63:2b:84: + 35:69:65:84:c8:19:c5:46:22:f8:53:95:be:e3:80: + 4a:10:c6:2a:ec:ba:97:20:11:c7:39:99:10:04:a0: + f0:61:7a:95:25:8c:4e:52:75:e2:b6:ed:08:ca:14: + fc:ce:22:6a:b3:4e:cf:46:03:97:97:03:7e:c0:b1: + de:7b:af:45:33:cf:ba:3e:71:b7:de:f4:25:25:c2: + 0d:35:89:9d:9d:fb:0e:11:79:89:1e:37:c5:af:8e: + 72:69 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Authority Key Identifier: + keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + + X509v3 Subject Key Identifier: + 4A:DD:06:16:1B:BC:F6:68:B5:76:F5:81:B6:BB:62:1A:BA:5A:81:2F + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + Authority Information Access: + OCSP - URI:http://g.symcd.com + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 CRL Distribution Points: + + Full Name: + URI:http://g.symcb.com/crls/gtglobal.crl + + X509v3 Certificate Policies: + Policy: 1.3.6.1.4.1.11129.2.5.1 + + Signature Algorithm: sha256WithRSAEncryption + aa:fa:a9:20:cd:6a:67:83:ed:5e:d4:7e:de:1d:c4:7f:e0:25: + 06:00:c5:24:fb:a9:c8:2d:6d:7e:de:9d:82:65:2c:81:63:34: + 66:3e:e9:52:c2:08:b4:cb:2f:f7:5f:99:3a:6a:9c:50:7a:85: + 05:8c:7d:d1:2a:48:84:d3:09:6c:7c:c2:cd:35:9f:f3:82:ee: + 52:de:68:5f:e4:00:8a:17:20:96:f7:29:8d:9a:4d:cb:a8:de: + 86:c8:0d:6f:56:87:03:7d:03:3f:dc:fa:79:7d:21:19:f9:c8: + 3a:2f:51:76:8c:c7:41:92:71:8f:25:ce:37:f8:4a:4c:00:23: + ef:c4:35:10:ae:e0:23:80:73:7c:4d:34:2e:c8:6e:90:d6:10: + 1e:99:84:73:1a:70:f2:ed:55:0e:ee:17:06:ea:67:ee:32:eb: + 2c:dd:67:07:3f:f6:8b:c2:70:de:5b:00:e6:bb:1b:d3:36:1a: + 22:6c:6c:b0:35:42:6c:90:09:3d:93:e9:64:09:22:0e:85:06: + 9f:c2:73:21:d3:e6:5f:80:e4:8d:85:22:3a:73:03:b1:60:8e: + ae:68:e2:f4:3e:97:e7:60:12:09:68:36:de:3a:d6:e2:43:95: + 5b:37:81:92:81:1f:bb:8d:d7:ad:52:64:16:57:96:d9:5e:34: + 7e:c8:35:d8 +-----BEGIN CERTIFICATE----- +MIID8DCCAtigAwIBAgIDAjqDMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMTMwNDA1MTUxNTU2WhcNMTYxMjMxMjM1OTU5WjBJMQswCQYDVQQG +EwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzElMCMGA1UEAxMcR29vZ2xlIEludGVy +bmV0IEF1dGhvcml0eSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AJwqBHdc2FCROgajguDYUEi8iT/xGXAaiEZ+4I/F8YnOIe5a/mENtzJEiaB0C1NP +VaTOgmKV7utZX8bhBYASxF6UP7xbSDj0U/ck5vuR6RXEz/RTDfRK/J9U3n2+oGtv +h8DQUB8oMANA2ghzUWx//zo8pzcGjr1LEQTrfSTe5vn8MXH7lNVg8y5Kr0LSy+rE +ahqyzFPdFUuLH8gZYR/Nnag+YyuENWllhMgZxUYi+FOVvuOAShDGKuy6lyARxzmZ +EASg8GF6lSWMTlJ14rbtCMoU/M4iarNOz0YDl5cDfsCx3nuvRTPPuj5xt970JSXC +DTWJnZ37DhF5iR43xa+OcmkCAwEAAaOB5zCB5DAfBgNVHSMEGDAWgBTAephojYn7 +qwVkDBF9qn1luMrMTjAdBgNVHQ4EFgQUSt0GFhu89mi1dvWBtrtiGrpagS8wDgYD +VR0PAQH/BAQDAgEGMC4GCCsGAQUFBwEBBCIwIDAeBggrBgEFBQcwAYYSaHR0cDov +L2cuc3ltY2QuY29tMBIGA1UdEwEB/wQIMAYBAf8CAQAwNQYDVR0fBC4wLDAqoCig +JoYkaHR0cDovL2cuc3ltY2IuY29tL2NybHMvZ3RnbG9iYWwuY3JsMBcGA1UdIAQQ +MA4wDAYKKwYBBAHWeQIFATANBgkqhkiG9w0BAQsFAAOCAQEAqvqpIM1qZ4PtXtR+ +3h3Ef+AlBgDFJPupyC1tft6dgmUsgWM0Zj7pUsIItMsv91+ZOmqcUHqFBYx90SpI +hNMJbHzCzTWf84LuUt5oX+QAihcglvcpjZpNy6jehsgNb1aHA30DP9z6eX0hGfnI +Oi9RdozHQZJxjyXON/hKTAAj78Q1EK7gI4BzfE00LshukNYQHpmEcxpw8u1VDu4X +Bupn7jLrLN1nBz/2i8Jw3lsA5rsb0zYaImxssDVCbJAJPZPpZAkiDoUGn8JzIdPm +X4DkjYUiOnMDsWCOrmji9D6X52ASCWg23jrW4kOVWzeBkoEfu43XrVJkFleW2V40 +fsg12A== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_3[] = { + 0x30, 0x82, 0x03, 0xf0, 0x30, 0x82, 0x02, 0xd8, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x83, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x30, + 0x34, 0x30, 0x35, 0x31, 0x35, 0x31, 0x35, 0x35, 0x36, 0x5a, 0x17, 0x0d, + 0x31, 0x36, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, + 0x5a, 0x30, 0x49, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x20, 0x49, 0x6e, + 0x63, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1c, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, + 0x00, 0x9c, 0x2a, 0x04, 0x77, 0x5c, 0xd8, 0x50, 0x91, 0x3a, 0x06, 0xa3, + 0x82, 0xe0, 0xd8, 0x50, 0x48, 0xbc, 0x89, 0x3f, 0xf1, 0x19, 0x70, 0x1a, + 0x88, 0x46, 0x7e, 0xe0, 0x8f, 0xc5, 0xf1, 0x89, 0xce, 0x21, 0xee, 0x5a, + 0xfe, 0x61, 0x0d, 0xb7, 0x32, 0x44, 0x89, 0xa0, 0x74, 0x0b, 0x53, 0x4f, + 0x55, 0xa4, 0xce, 0x82, 0x62, 0x95, 0xee, 0xeb, 0x59, 0x5f, 0xc6, 0xe1, + 0x05, 0x80, 0x12, 0xc4, 0x5e, 0x94, 0x3f, 0xbc, 0x5b, 0x48, 0x38, 0xf4, + 0x53, 0xf7, 0x24, 0xe6, 0xfb, 0x91, 0xe9, 0x15, 0xc4, 0xcf, 0xf4, 0x53, + 0x0d, 0xf4, 0x4a, 0xfc, 0x9f, 0x54, 0xde, 0x7d, 0xbe, 0xa0, 0x6b, 0x6f, + 0x87, 0xc0, 0xd0, 0x50, 0x1f, 0x28, 0x30, 0x03, 0x40, 0xda, 0x08, 0x73, + 0x51, 0x6c, 0x7f, 0xff, 0x3a, 0x3c, 0xa7, 0x37, 0x06, 0x8e, 0xbd, 0x4b, + 0x11, 0x04, 0xeb, 0x7d, 0x24, 0xde, 0xe6, 0xf9, 0xfc, 0x31, 0x71, 0xfb, + 0x94, 0xd5, 0x60, 0xf3, 0x2e, 0x4a, 0xaf, 0x42, 0xd2, 0xcb, 0xea, 0xc4, + 0x6a, 0x1a, 0xb2, 0xcc, 0x53, 0xdd, 0x15, 0x4b, 0x8b, 0x1f, 0xc8, 0x19, + 0x61, 0x1f, 0xcd, 0x9d, 0xa8, 0x3e, 0x63, 0x2b, 0x84, 0x35, 0x69, 0x65, + 0x84, 0xc8, 0x19, 0xc5, 0x46, 0x22, 0xf8, 0x53, 0x95, 0xbe, 0xe3, 0x80, + 0x4a, 0x10, 0xc6, 0x2a, 0xec, 0xba, 0x97, 0x20, 0x11, 0xc7, 0x39, 0x99, + 0x10, 0x04, 0xa0, 0xf0, 0x61, 0x7a, 0x95, 0x25, 0x8c, 0x4e, 0x52, 0x75, + 0xe2, 0xb6, 0xed, 0x08, 0xca, 0x14, 0xfc, 0xce, 0x22, 0x6a, 0xb3, 0x4e, + 0xcf, 0x46, 0x03, 0x97, 0x97, 0x03, 0x7e, 0xc0, 0xb1, 0xde, 0x7b, 0xaf, + 0x45, 0x33, 0xcf, 0xba, 0x3e, 0x71, 0xb7, 0xde, 0xf4, 0x25, 0x25, 0xc2, + 0x0d, 0x35, 0x89, 0x9d, 0x9d, 0xfb, 0x0e, 0x11, 0x79, 0x89, 0x1e, 0x37, + 0xc5, 0xaf, 0x8e, 0x72, 0x69, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, + 0xe7, 0x30, 0x81, 0xe4, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x18, 0x30, 0x16, 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, + 0xab, 0x05, 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, + 0x4e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x4a, 0xdd, 0x06, 0x16, 0x1b, 0xbc, 0xf6, 0x68, 0xb5, 0x76, 0xf5, 0x81, + 0xb6, 0xbb, 0x62, 0x1a, 0xba, 0x5a, 0x81, 0x2f, 0x30, 0x0e, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, + 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, + 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, + 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x35, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, + 0x26, 0x86, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, + 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, + 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x17, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x10, + 0x30, 0x0e, 0x30, 0x0c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xd6, + 0x79, 0x02, 0x05, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, + 0xaa, 0xfa, 0xa9, 0x20, 0xcd, 0x6a, 0x67, 0x83, 0xed, 0x5e, 0xd4, 0x7e, + 0xde, 0x1d, 0xc4, 0x7f, 0xe0, 0x25, 0x06, 0x00, 0xc5, 0x24, 0xfb, 0xa9, + 0xc8, 0x2d, 0x6d, 0x7e, 0xde, 0x9d, 0x82, 0x65, 0x2c, 0x81, 0x63, 0x34, + 0x66, 0x3e, 0xe9, 0x52, 0xc2, 0x08, 0xb4, 0xcb, 0x2f, 0xf7, 0x5f, 0x99, + 0x3a, 0x6a, 0x9c, 0x50, 0x7a, 0x85, 0x05, 0x8c, 0x7d, 0xd1, 0x2a, 0x48, + 0x84, 0xd3, 0x09, 0x6c, 0x7c, 0xc2, 0xcd, 0x35, 0x9f, 0xf3, 0x82, 0xee, + 0x52, 0xde, 0x68, 0x5f, 0xe4, 0x00, 0x8a, 0x17, 0x20, 0x96, 0xf7, 0x29, + 0x8d, 0x9a, 0x4d, 0xcb, 0xa8, 0xde, 0x86, 0xc8, 0x0d, 0x6f, 0x56, 0x87, + 0x03, 0x7d, 0x03, 0x3f, 0xdc, 0xfa, 0x79, 0x7d, 0x21, 0x19, 0xf9, 0xc8, + 0x3a, 0x2f, 0x51, 0x76, 0x8c, 0xc7, 0x41, 0x92, 0x71, 0x8f, 0x25, 0xce, + 0x37, 0xf8, 0x4a, 0x4c, 0x00, 0x23, 0xef, 0xc4, 0x35, 0x10, 0xae, 0xe0, + 0x23, 0x80, 0x73, 0x7c, 0x4d, 0x34, 0x2e, 0xc8, 0x6e, 0x90, 0xd6, 0x10, + 0x1e, 0x99, 0x84, 0x73, 0x1a, 0x70, 0xf2, 0xed, 0x55, 0x0e, 0xee, 0x17, + 0x06, 0xea, 0x67, 0xee, 0x32, 0xeb, 0x2c, 0xdd, 0x67, 0x07, 0x3f, 0xf6, + 0x8b, 0xc2, 0x70, 0xde, 0x5b, 0x00, 0xe6, 0xbb, 0x1b, 0xd3, 0x36, 0x1a, + 0x22, 0x6c, 0x6c, 0xb0, 0x35, 0x42, 0x6c, 0x90, 0x09, 0x3d, 0x93, 0xe9, + 0x64, 0x09, 0x22, 0x0e, 0x85, 0x06, 0x9f, 0xc2, 0x73, 0x21, 0xd3, 0xe6, + 0x5f, 0x80, 0xe4, 0x8d, 0x85, 0x22, 0x3a, 0x73, 0x03, 0xb1, 0x60, 0x8e, + 0xae, 0x68, 0xe2, 0xf4, 0x3e, 0x97, 0xe7, 0x60, 0x12, 0x09, 0x68, 0x36, + 0xde, 0x3a, 0xd6, 0xe2, 0x43, 0x95, 0x5b, 0x37, 0x81, 0x92, 0x81, 0x1f, + 0xbb, 0x8d, 0xd7, 0xad, 0x52, 0x64, 0x16, 0x57, 0x96, 0xd9, 0x5e, 0x34, + 0x7e, 0xc8, 0x35, 0xd8, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 120033005 (0x7278eed) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Global Root + Validity + Not Before: Apr 18 16:36:18 2012 GMT + Not After : Aug 13 16:35:17 2018 GMT + Subject: C=IE, O=Baltimore, OU=CyberTrust, CN=Baltimore CyberTrust Root + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:a3:04:bb:22:ab:98:3d:57:e8:26:72:9a:b5:79: + d4:29:e2:e1:e8:95:80:b1:b0:e3:5b:8e:2b:29:9a: + 64:df:a1:5d:ed:b0:09:05:6d:db:28:2e:ce:62:a2: + 62:fe:b4:88:da:12:eb:38:eb:21:9d:c0:41:2b:01: + 52:7b:88:77:d3:1c:8f:c7:ba:b9:88:b5:6a:09:e7: + 73:e8:11:40:a7:d1:cc:ca:62:8d:2d:e5:8f:0b:a6: + 50:d2:a8:50:c3:28:ea:f5:ab:25:87:8a:9a:96:1c: + a9:67:b8:3f:0c:d5:f7:f9:52:13:2f:c2:1b:d5:70: + 70:f0:8f:c0:12:ca:06:cb:9a:e1:d9:ca:33:7a:77: + d6:f8:ec:b9:f1:68:44:42:48:13:d2:c0:c2:a4:ae: + 5e:60:fe:b6:a6:05:fc:b4:dd:07:59:02:d4:59:18: + 98:63:f5:a5:63:e0:90:0c:7d:5d:b2:06:7a:f3:85: + ea:eb:d4:03:ae:5e:84:3e:5f:ff:15:ed:69:bc:f9: + 39:36:72:75:cf:77:52:4d:f3:c9:90:2c:b9:3d:e5: + c9:23:53:3f:1f:24:98:21:5c:07:99:29:bd:c6:3a: + ec:e7:6e:86:3a:6b:97:74:63:33:bd:68:18:31:f0: + 78:8d:76:bf:fc:9e:8e:5d:2a:86:a7:4d:90:dc:27: + 1a:39 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:3 + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: http://cybertrust.omniroot.com/repository + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Authority Key Identifier: + DirName:/C=US/O=GTE Corporation/OU=GTE CyberTrust Solutions, Inc./CN=GTE CyberTrust Global Root + serial:01:A5 + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://www.public-trust.com/cgi-bin/CRL/2018/cdp.crl + + Signature Algorithm: sha1WithRSAEncryption + 93:1d:fe:8b:ae:46:ec:cb:a9:0f:ab:e5:ef:ca:b2:68:16:68: + d8:8f:fa:13:a9:af:b3:cb:2d:e7:4b:6e:8e:69:2a:c2:2b:10: + 0a:8d:f6:ae:73:b6:b9:fb:14:fd:5f:6d:b8:50:b6:c4:8a:d6: + 40:7e:d7:c3:cb:73:dc:c9:5d:5b:af:b0:41:b5:37:eb:ea:dc: + 20:91:c4:34:6a:f4:a1:f3:96:9d:37:86:97:e1:71:a4:dd:7d: + fa:44:84:94:ae:d7:09:04:22:76:0f:64:51:35:a9:24:0f:f9: + 0b:db:32:da:c2:fe:c1:b9:2a:5c:7a:27:13:ca:b1:48:3a:71: + d0:43 +-----BEGIN CERTIFICATE----- +MIIEFTCCA36gAwIBAgIEByeO7TANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV +UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU +cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds +b2JhbCBSb290MB4XDTEyMDQxODE2MzYxOFoXDTE4MDgxMzE2MzUxN1owWjELMAkG +A1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVz +dDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKrmD1X6CZymrV51Cni4eiVgLGw41uO +KymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsBUnuId9Mcj8e6uYi1agnn +c+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/CG9VwcPCP +wBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPg +kAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFc +B5kpvcY67Oduhjprl3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaOCAUcw +ggFDMBIGA1UdEwEB/wQIMAYBAf8CAQMwSgYDVR0gBEMwQTA/BgRVHSAAMDcwNQYI +KwYBBQUHAgEWKWh0dHA6Ly9jeWJlcnRydXN0Lm9tbmlyb290LmNvbS9yZXBvc2l0 +b3J5MA4GA1UdDwEB/wQEAwIBBjCBiQYDVR0jBIGBMH+heaR3MHUxCzAJBgNVBAYT +AlVTMRgwFgYDVQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJl +clRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3Qg +R2xvYmFsIFJvb3SCAgGlMEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly93d3cucHVi +bGljLXRydXN0LmNvbS9jZ2ktYmluL0NSTC8yMDE4L2NkcC5jcmwwDQYJKoZIhvcN +AQEFBQADgYEAkx3+i65G7MupD6vl78qyaBZo2I/6E6mvs8st50tujmkqwisQCo32 +rnO2ufsU/V9tuFC2xIrWQH7Xw8tz3MldW6+wQbU36+rcIJHENGr0ofOWnTeGl+Fx +pN19+kSElK7XCQQidg9kUTWpJA/5C9sy2sL+wbkqXHonE8qxSDpx0EM= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_4[] = { + 0x30, 0x82, 0x04, 0x15, 0x30, 0x82, 0x03, 0x7e, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0x8e, 0xed, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x75, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0f, + 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x1e, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x23, 0x30, 0x21, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a, 0x47, 0x54, 0x45, 0x20, 0x43, + 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x32, 0x30, 0x34, 0x31, 0x38, 0x31, 0x36, 0x33, 0x36, 0x31, + 0x38, 0x5a, 0x17, 0x0d, 0x31, 0x38, 0x30, 0x38, 0x31, 0x33, 0x31, 0x36, + 0x33, 0x35, 0x31, 0x37, 0x5a, 0x30, 0x5a, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x45, 0x31, 0x12, 0x30, 0x10, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, 0x42, 0x61, 0x6c, 0x74, 0x69, + 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x43, 0x79, + 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, + 0x74, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, + 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x04, + 0xbb, 0x22, 0xab, 0x98, 0x3d, 0x57, 0xe8, 0x26, 0x72, 0x9a, 0xb5, 0x79, + 0xd4, 0x29, 0xe2, 0xe1, 0xe8, 0x95, 0x80, 0xb1, 0xb0, 0xe3, 0x5b, 0x8e, + 0x2b, 0x29, 0x9a, 0x64, 0xdf, 0xa1, 0x5d, 0xed, 0xb0, 0x09, 0x05, 0x6d, + 0xdb, 0x28, 0x2e, 0xce, 0x62, 0xa2, 0x62, 0xfe, 0xb4, 0x88, 0xda, 0x12, + 0xeb, 0x38, 0xeb, 0x21, 0x9d, 0xc0, 0x41, 0x2b, 0x01, 0x52, 0x7b, 0x88, + 0x77, 0xd3, 0x1c, 0x8f, 0xc7, 0xba, 0xb9, 0x88, 0xb5, 0x6a, 0x09, 0xe7, + 0x73, 0xe8, 0x11, 0x40, 0xa7, 0xd1, 0xcc, 0xca, 0x62, 0x8d, 0x2d, 0xe5, + 0x8f, 0x0b, 0xa6, 0x50, 0xd2, 0xa8, 0x50, 0xc3, 0x28, 0xea, 0xf5, 0xab, + 0x25, 0x87, 0x8a, 0x9a, 0x96, 0x1c, 0xa9, 0x67, 0xb8, 0x3f, 0x0c, 0xd5, + 0xf7, 0xf9, 0x52, 0x13, 0x2f, 0xc2, 0x1b, 0xd5, 0x70, 0x70, 0xf0, 0x8f, + 0xc0, 0x12, 0xca, 0x06, 0xcb, 0x9a, 0xe1, 0xd9, 0xca, 0x33, 0x7a, 0x77, + 0xd6, 0xf8, 0xec, 0xb9, 0xf1, 0x68, 0x44, 0x42, 0x48, 0x13, 0xd2, 0xc0, + 0xc2, 0xa4, 0xae, 0x5e, 0x60, 0xfe, 0xb6, 0xa6, 0x05, 0xfc, 0xb4, 0xdd, + 0x07, 0x59, 0x02, 0xd4, 0x59, 0x18, 0x98, 0x63, 0xf5, 0xa5, 0x63, 0xe0, + 0x90, 0x0c, 0x7d, 0x5d, 0xb2, 0x06, 0x7a, 0xf3, 0x85, 0xea, 0xeb, 0xd4, + 0x03, 0xae, 0x5e, 0x84, 0x3e, 0x5f, 0xff, 0x15, 0xed, 0x69, 0xbc, 0xf9, + 0x39, 0x36, 0x72, 0x75, 0xcf, 0x77, 0x52, 0x4d, 0xf3, 0xc9, 0x90, 0x2c, + 0xb9, 0x3d, 0xe5, 0xc9, 0x23, 0x53, 0x3f, 0x1f, 0x24, 0x98, 0x21, 0x5c, + 0x07, 0x99, 0x29, 0xbd, 0xc6, 0x3a, 0xec, 0xe7, 0x6e, 0x86, 0x3a, 0x6b, + 0x97, 0x74, 0x63, 0x33, 0xbd, 0x68, 0x18, 0x31, 0xf0, 0x78, 0x8d, 0x76, + 0xbf, 0xfc, 0x9e, 0x8e, 0x5d, 0x2a, 0x86, 0xa7, 0x4d, 0x90, 0xdc, 0x27, + 0x1a, 0x39, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x47, 0x30, + 0x82, 0x01, 0x43, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x03, 0x30, + 0x4a, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x43, 0x30, 0x41, 0x30, 0x3f, + 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x37, 0x30, 0x35, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x29, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x81, 0x89, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x81, 0x81, 0x30, 0x7f, 0xa1, 0x79, 0xa4, 0x77, + 0x30, 0x75, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x0f, 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x1e, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, + 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x6f, 0x6c, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x23, + 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a, 0x47, 0x54, 0x45, + 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x82, + 0x02, 0x01, 0xa5, 0x30, 0x45, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x3e, + 0x30, 0x3c, 0x30, 0x3a, 0xa0, 0x38, 0xa0, 0x36, 0x86, 0x34, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x63, 0x67, 0x69, 0x2d, 0x62, 0x69, 0x6e, 0x2f, 0x43, 0x52, + 0x4c, 0x2f, 0x32, 0x30, 0x31, 0x38, 0x2f, 0x63, 0x64, 0x70, 0x2e, 0x63, + 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x93, 0x1d, 0xfe, + 0x8b, 0xae, 0x46, 0xec, 0xcb, 0xa9, 0x0f, 0xab, 0xe5, 0xef, 0xca, 0xb2, + 0x68, 0x16, 0x68, 0xd8, 0x8f, 0xfa, 0x13, 0xa9, 0xaf, 0xb3, 0xcb, 0x2d, + 0xe7, 0x4b, 0x6e, 0x8e, 0x69, 0x2a, 0xc2, 0x2b, 0x10, 0x0a, 0x8d, 0xf6, + 0xae, 0x73, 0xb6, 0xb9, 0xfb, 0x14, 0xfd, 0x5f, 0x6d, 0xb8, 0x50, 0xb6, + 0xc4, 0x8a, 0xd6, 0x40, 0x7e, 0xd7, 0xc3, 0xcb, 0x73, 0xdc, 0xc9, 0x5d, + 0x5b, 0xaf, 0xb0, 0x41, 0xb5, 0x37, 0xeb, 0xea, 0xdc, 0x20, 0x91, 0xc4, + 0x34, 0x6a, 0xf4, 0xa1, 0xf3, 0x96, 0x9d, 0x37, 0x86, 0x97, 0xe1, 0x71, + 0xa4, 0xdd, 0x7d, 0xfa, 0x44, 0x84, 0x94, 0xae, 0xd7, 0x09, 0x04, 0x22, + 0x76, 0x0f, 0x64, 0x51, 0x35, 0xa9, 0x24, 0x0f, 0xf9, 0x0b, 0xdb, 0x32, + 0xda, 0xc2, 0xfe, 0xc1, 0xb9, 0x2a, 0x5c, 0x7a, 0x27, 0x13, 0xca, 0xb1, + 0x48, 0x3a, 0x71, 0xd0, 0x43, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 146041 (0x23a79) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Validity + Not Before: Sep 8 20:41:10 2014 GMT + Not After : May 20 20:41:10 2022 GMT + Subject: C=US, O=GeoTrust Inc., CN=GeoTrust SSL CA - G4 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:9a:7d:98:68:11:40:c1:5f:72:ec:55:b3:b1:63: + f3:32:22:72:91:c6:16:05:bb:08:82:31:b4:f6:ee: + d4:18:39:11:2f:2e:da:47:fe:51:31:6e:5b:f2:a9: + 0a:eb:2f:bb:f5:61:59:65:57:02:cd:80:ff:c7:70: + 32:54:89:fd:db:ae:99:72:d4:4f:0c:26:b9:2e:63: + 30:7d:de:14:5b:6a:d7:52:78:21:f9:bf:bc:50:d5: + 54:12:59:d8:b5:36:d9:21:47:b8:3f:6a:58:1d:8c: + 72:e1:97:95:d3:e1:45:a8:f1:5a:e5:be:fe:e3:53: + 7c:a5:f0:52:e0:cf:39:94:0c:19:71:f2:c0:25:07: + 48:7d:1c:e6:f1:39:25:2f:98:79:43:e8:18:72:f4: + 65:86:98:5a:00:04:47:da:4b:58:1e:7c:86:b1:4b: + 35:a6:20:00:1c:cd:1b:3b:22:5d:d1:93:28:33:12: + 23:94:08:aa:c3:3a:f5:d1:c6:8c:7e:99:d3:18:a0: + ad:9d:18:cf:49:ad:10:03:f7:99:33:26:86:46:9a: + 2f:a0:ba:6c:6e:c8:88:02:b7:6e:fa:7a:9e:98:4a: + ee:9a:31:7d:19:14:60:0c:ec:8f:20:23:3c:da:97: + 26:b6:ea:80:6c:8a:57:9e:20:ee:6f:17:25:4a:32: + ad:35 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Authority Key Identifier: + keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + + X509v3 Subject Key Identifier: + AC:32:ED:5A:C9:E0:DE:30:9C:90:58:55:26:63:F6:72:A6:54:5F:E3 + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 CRL Distribution Points: + + Full Name: + URI:http://g.symcb.com/crls/gtglobal.crl + + Authority Information Access: + OCSP - URI:http://g.symcd.com + + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: http://www.geotrust.com/resources/cps + + Signature Algorithm: sha256WithRSAEncryption + 61:40:ad:21:0f:03:bb:95:dc:89:fc:a3:cb:05:71:e9:1c:59: + 97:35:c2:fa:6b:05:a4:16:c6:56:46:37:74:1b:1b:f1:3e:2c: + e8:37:19:b7:94:d2:0f:0e:c5:bf:14:07:2b:34:cd:5b:b4:8d: + c7:56:9d:19:fc:02:b4:9e:90:31:fa:a4:44:c6:75:dd:dd:1f: + 25:54:a3:30:4c:ac:db:fe:c4:88:f7:31:26:18:47:ae:4c:20: + 19:1a:c7:ae:3e:98:0a:16:3d:d2:c2:a6:5d:0d:2e:29:7d:b2: + 9d:c7:41:32:17:ca:9d:ae:39:bf:91:98:de:e7:44:e2:95:9c: + 94:5c:6c:42:1b:59:c9:7b:68:13:a8:96:09:74:ee:40:14:a4: + d5:d7:c9:7b:33:a3:0f:5a:69:9c:1a:fa:6f:12:47:1c:df:1e: + 4c:70:4e:6d:dd:fe:1c:87:b5:9d:e1:54:07:09:8a:cd:be:aa: + a8:46:78:6e:16:f2:e7:91:0e:c3:af:da:76:00:d1:d8:a2:46: + 24:03:a5:1a:85:81:56:83:63:27:ba:90:8e:f9:62:11:ba:a7: + 7c:90:a9:1a:66:b4:c5:bc:8f:29:41:ab:eb:8d:99:a6:cc:91: + 64:ba:dc:c6:a6:4c:b3:b4:23:26:51:72:56:f9:f3:74:55:9f: + 25:75:4f:2b +-----BEGIN CERTIFICATE----- +MIIEIjCCAwqgAwIBAgIDAjp5MA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMTQwOTA4MjA0MTEwWhcNMjIwNTIwMjA0MTEwWjBEMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3Qg +U1NMIENBIC0gRzQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCafZho +EUDBX3LsVbOxY/MyInKRxhYFuwiCMbT27tQYOREvLtpH/lExblvyqQrrL7v1YVll +VwLNgP/HcDJUif3brply1E8MJrkuYzB93hRbatdSeCH5v7xQ1VQSWdi1NtkhR7g/ +algdjHLhl5XT4UWo8Vrlvv7jU3yl8FLgzzmUDBlx8sAlB0h9HObxOSUvmHlD6Bhy +9GWGmFoABEfaS1gefIaxSzWmIAAczRs7Il3RkygzEiOUCKrDOvXRxox+mdMYoK2d +GM9JrRAD95kzJoZGmi+gumxuyIgCt276ep6YSu6aMX0ZFGAM7I8gIzzalya26oBs +ileeIO5vFyVKMq01AgMBAAGjggEdMIIBGTAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjAdBgNVHQ4EFgQUrDLtWsng3jCckFhVJmP2cqZUX+MwEgYDVR0T +AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwNQYDVR0fBC4wLDAqoCigJoYk +aHR0cDovL2cuc3ltY2IuY29tL2NybHMvZ3RnbG9iYWwuY3JsMC4GCCsGAQUFBwEB +BCIwIDAeBggrBgEFBQcwAYYSaHR0cDovL2cuc3ltY2QuY29tMEwGA1UdIARFMEMw +QQYKYIZIAYb4RQEHNjAzMDEGCCsGAQUFBwIBFiVodHRwOi8vd3d3Lmdlb3RydXN0 +LmNvbS9yZXNvdXJjZXMvY3BzMA0GCSqGSIb3DQEBCwUAA4IBAQBhQK0hDwO7ldyJ +/KPLBXHpHFmXNcL6awWkFsZWRjd0GxvxPizoNxm3lNIPDsW/FAcrNM1btI3HVp0Z +/AK0npAx+qRExnXd3R8lVKMwTKzb/sSI9zEmGEeuTCAZGseuPpgKFj3SwqZdDS4p +fbKdx0EyF8qdrjm/kZje50TilZyUXGxCG1nJe2gTqJYJdO5AFKTV18l7M6MPWmmc +GvpvEkcc3x5McE5t3f4ch7Wd4VQHCYrNvqqoRnhuFvLnkQ7Dr9p2ANHYokYkA6Ua +hYFWg2MnupCO+WIRuqd8kKkaZrTFvI8pQavrjZmmzJFkutzGpkyztCMmUXJW+fN0 +VZ8ldU8r +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_5[] = { + 0x30, 0x82, 0x04, 0x22, 0x30, 0x82, 0x03, 0x0a, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x79, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, + 0x39, 0x30, 0x38, 0x32, 0x30, 0x34, 0x31, 0x31, 0x30, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x30, 0x34, 0x31, 0x31, 0x30, + 0x5a, 0x30, 0x44, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x14, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x34, 0x30, + 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, + 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x9a, 0x7d, 0x98, 0x68, + 0x11, 0x40, 0xc1, 0x5f, 0x72, 0xec, 0x55, 0xb3, 0xb1, 0x63, 0xf3, 0x32, + 0x22, 0x72, 0x91, 0xc6, 0x16, 0x05, 0xbb, 0x08, 0x82, 0x31, 0xb4, 0xf6, + 0xee, 0xd4, 0x18, 0x39, 0x11, 0x2f, 0x2e, 0xda, 0x47, 0xfe, 0x51, 0x31, + 0x6e, 0x5b, 0xf2, 0xa9, 0x0a, 0xeb, 0x2f, 0xbb, 0xf5, 0x61, 0x59, 0x65, + 0x57, 0x02, 0xcd, 0x80, 0xff, 0xc7, 0x70, 0x32, 0x54, 0x89, 0xfd, 0xdb, + 0xae, 0x99, 0x72, 0xd4, 0x4f, 0x0c, 0x26, 0xb9, 0x2e, 0x63, 0x30, 0x7d, + 0xde, 0x14, 0x5b, 0x6a, 0xd7, 0x52, 0x78, 0x21, 0xf9, 0xbf, 0xbc, 0x50, + 0xd5, 0x54, 0x12, 0x59, 0xd8, 0xb5, 0x36, 0xd9, 0x21, 0x47, 0xb8, 0x3f, + 0x6a, 0x58, 0x1d, 0x8c, 0x72, 0xe1, 0x97, 0x95, 0xd3, 0xe1, 0x45, 0xa8, + 0xf1, 0x5a, 0xe5, 0xbe, 0xfe, 0xe3, 0x53, 0x7c, 0xa5, 0xf0, 0x52, 0xe0, + 0xcf, 0x39, 0x94, 0x0c, 0x19, 0x71, 0xf2, 0xc0, 0x25, 0x07, 0x48, 0x7d, + 0x1c, 0xe6, 0xf1, 0x39, 0x25, 0x2f, 0x98, 0x79, 0x43, 0xe8, 0x18, 0x72, + 0xf4, 0x65, 0x86, 0x98, 0x5a, 0x00, 0x04, 0x47, 0xda, 0x4b, 0x58, 0x1e, + 0x7c, 0x86, 0xb1, 0x4b, 0x35, 0xa6, 0x20, 0x00, 0x1c, 0xcd, 0x1b, 0x3b, + 0x22, 0x5d, 0xd1, 0x93, 0x28, 0x33, 0x12, 0x23, 0x94, 0x08, 0xaa, 0xc3, + 0x3a, 0xf5, 0xd1, 0xc6, 0x8c, 0x7e, 0x99, 0xd3, 0x18, 0xa0, 0xad, 0x9d, + 0x18, 0xcf, 0x49, 0xad, 0x10, 0x03, 0xf7, 0x99, 0x33, 0x26, 0x86, 0x46, + 0x9a, 0x2f, 0xa0, 0xba, 0x6c, 0x6e, 0xc8, 0x88, 0x02, 0xb7, 0x6e, 0xfa, + 0x7a, 0x9e, 0x98, 0x4a, 0xee, 0x9a, 0x31, 0x7d, 0x19, 0x14, 0x60, 0x0c, + 0xec, 0x8f, 0x20, 0x23, 0x3c, 0xda, 0x97, 0x26, 0xb6, 0xea, 0x80, 0x6c, + 0x8a, 0x57, 0x9e, 0x20, 0xee, 0x6f, 0x17, 0x25, 0x4a, 0x32, 0xad, 0x35, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1d, 0x30, 0x82, 0x01, + 0x19, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, + 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xac, 0x32, 0xed, + 0x5a, 0xc9, 0xe0, 0xde, 0x30, 0x9c, 0x90, 0x58, 0x55, 0x26, 0x63, 0xf6, + 0x72, 0xa6, 0x54, 0x5f, 0xe3, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x35, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, 0x26, 0x86, 0x24, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, + 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, + 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, + 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, + 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, + 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x01, 0x00, 0x61, 0x40, 0xad, 0x21, 0x0f, 0x03, 0xbb, 0x95, 0xdc, 0x89, + 0xfc, 0xa3, 0xcb, 0x05, 0x71, 0xe9, 0x1c, 0x59, 0x97, 0x35, 0xc2, 0xfa, + 0x6b, 0x05, 0xa4, 0x16, 0xc6, 0x56, 0x46, 0x37, 0x74, 0x1b, 0x1b, 0xf1, + 0x3e, 0x2c, 0xe8, 0x37, 0x19, 0xb7, 0x94, 0xd2, 0x0f, 0x0e, 0xc5, 0xbf, + 0x14, 0x07, 0x2b, 0x34, 0xcd, 0x5b, 0xb4, 0x8d, 0xc7, 0x56, 0x9d, 0x19, + 0xfc, 0x02, 0xb4, 0x9e, 0x90, 0x31, 0xfa, 0xa4, 0x44, 0xc6, 0x75, 0xdd, + 0xdd, 0x1f, 0x25, 0x54, 0xa3, 0x30, 0x4c, 0xac, 0xdb, 0xfe, 0xc4, 0x88, + 0xf7, 0x31, 0x26, 0x18, 0x47, 0xae, 0x4c, 0x20, 0x19, 0x1a, 0xc7, 0xae, + 0x3e, 0x98, 0x0a, 0x16, 0x3d, 0xd2, 0xc2, 0xa6, 0x5d, 0x0d, 0x2e, 0x29, + 0x7d, 0xb2, 0x9d, 0xc7, 0x41, 0x32, 0x17, 0xca, 0x9d, 0xae, 0x39, 0xbf, + 0x91, 0x98, 0xde, 0xe7, 0x44, 0xe2, 0x95, 0x9c, 0x94, 0x5c, 0x6c, 0x42, + 0x1b, 0x59, 0xc9, 0x7b, 0x68, 0x13, 0xa8, 0x96, 0x09, 0x74, 0xee, 0x40, + 0x14, 0xa4, 0xd5, 0xd7, 0xc9, 0x7b, 0x33, 0xa3, 0x0f, 0x5a, 0x69, 0x9c, + 0x1a, 0xfa, 0x6f, 0x12, 0x47, 0x1c, 0xdf, 0x1e, 0x4c, 0x70, 0x4e, 0x6d, + 0xdd, 0xfe, 0x1c, 0x87, 0xb5, 0x9d, 0xe1, 0x54, 0x07, 0x09, 0x8a, 0xcd, + 0xbe, 0xaa, 0xa8, 0x46, 0x78, 0x6e, 0x16, 0xf2, 0xe7, 0x91, 0x0e, 0xc3, + 0xaf, 0xda, 0x76, 0x00, 0xd1, 0xd8, 0xa2, 0x46, 0x24, 0x03, 0xa5, 0x1a, + 0x85, 0x81, 0x56, 0x83, 0x63, 0x27, 0xba, 0x90, 0x8e, 0xf9, 0x62, 0x11, + 0xba, 0xa7, 0x7c, 0x90, 0xa9, 0x1a, 0x66, 0xb4, 0xc5, 0xbc, 0x8f, 0x29, + 0x41, 0xab, 0xeb, 0x8d, 0x99, 0xa6, 0xcc, 0x91, 0x64, 0xba, 0xdc, 0xc6, + 0xa6, 0x4c, 0xb3, 0xb4, 0x23, 0x26, 0x51, 0x72, 0x56, 0xf9, 0xf3, 0x74, + 0x55, 0x9f, 0x25, 0x75, 0x4f, 0x2b, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 146039 (0x23a77) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Validity + Not Before: Aug 29 21:39:32 2014 GMT + Not After : May 20 21:39:32 2022 GMT + Subject: C=US, O=GeoTrust Inc., CN=RapidSSL SHA256 CA - G3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:af:54:9b:d9:58:5d:1e:2c:56:c6:d5:e8:7f:f4: + 7d:16:03:ff:d0:8b:5a:e4:8e:a7:dd:54:2e:d4:04: + c0:5d:98:9c:8d:90:0f:bc:10:65:5f:da:9a:d6:44: + 7c:c0:9f:b5:e9:4a:8c:0b:06:43:04:bb:f4:96:e2: + 26:f6:61:01:91:66:31:22:c3:34:34:5f:3f:3f:91: + 2f:44:5f:dc:c7:14:b6:03:9f:86:4b:0e:a3:ff:a0: + 80:02:83:c3:d3:1f:69:52:d6:9d:64:0f:c9:83:e7: + 1b:c4:70:ac:94:e7:c3:a4:6a:2c:bd:b8:9e:69:d8: + be:0a:8f:16:63:5a:68:71:80:7b:30:de:15:04:bf: + cc:d3:bf:3e:48:05:55:7a:b3:d7:10:0c:03:fc:9b: + fd:08:a7:8c:8c:db:a7:8e:f1:1e:63:dc:b3:01:2f: + 7f:af:57:c3:3c:48:a7:83:68:21:a7:2f:e7:a7:3f: + f0:b5:0c:fc:f5:84:d1:53:bc:0e:72:4f:60:0c:42: + b8:98:ad:19:88:57:d7:04:ec:87:bf:7e:87:4e:a3: + 21:f9:53:fd:36:98:48:8d:d6:f8:bb:48:f2:29:c8: + 64:d1:cc:54:48:53:8b:af:b7:65:1e:bf:29:33:29: + d9:29:60:48:f8:ff:91:bc:57:58:e5:35:2e:bb:69: + b6:59 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Authority Key Identifier: + keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + + X509v3 Subject Key Identifier: + C3:9C:F3:FC:D3:46:08:34:BB:CE:46:7F:A0:7C:5B:F3:E2:08:CB:59 + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 CRL Distribution Points: + + Full Name: + URI:http://g.symcb.com/crls/gtglobal.crl + + Authority Information Access: + OCSP - URI:http://g.symcd.com + + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: http://www.geotrust.com/resources/cps + + Signature Algorithm: sha256WithRSAEncryption + a3:58:1e:c6:43:32:ac:ac:2f:93:78:b7:ea:ae:54:40:47:2d: + 7e:78:8d:50:f6:f8:66:ac:d6:4f:73:d6:44:ef:af:0b:cc:5b: + c1:f4:4f:9a:8f:49:7e:60:af:c2:27:c7:16:f1:fb:93:81:90: + a9:7c:ef:6f:7e:6e:45:94:16:84:bd:ec:49:f1:c4:0e:f4:af: + 04:59:83:87:0f:2c:3b:97:c3:5a:12:9b:7b:04:35:7b:a3:95: + 33:08:7b:93:71:22:42:b3:a9:d9:6f:4f:81:92:fc:07:b6:79: + bc:84:4a:9d:77:09:f1:c5:89:f2:f0:b4:9c:54:aa:12:7b:0d: + ba:4f:ef:93:19:ec:ef:7d:4e:61:a3:8e:76:9c:59:cf:8c:94: + b1:84:97:f7:1a:b9:07:b8:b2:c6:4f:13:79:db:bf:4f:51:1b: + 7f:69:0d:51:2a:c1:d6:15:ff:37:51:34:65:51:f4:1e:be:38: + 6a:ec:0e:ab:bf:3d:7b:39:05:7b:f4:f3:fb:1a:a1:d0:c8:7e: + 4e:64:8d:cd:8c:61:55:90:fe:3a:ca:5d:25:0f:f8:1d:a3:4a: + 74:56:4f:1a:55:40:70:75:25:a6:33:2e:ba:4b:a5:5d:53:9a: + 0d:30:e1:8d:5f:61:2c:af:cc:ef:b0:99:a1:80:ff:0b:f2:62: + 4c:70:26:98 +-----BEGIN CERTIFICATE----- +MIIEJTCCAw2gAwIBAgIDAjp3MA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMTQwODI5MjEzOTMyWhcNMjIwNTIwMjEzOTMyWjBHMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXUmFwaWRTU0wg +U0hBMjU2IENBIC0gRzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCv +VJvZWF0eLFbG1eh/9H0WA//Qi1rkjqfdVC7UBMBdmJyNkA+8EGVf2prWRHzAn7Xp +SowLBkMEu/SW4ib2YQGRZjEiwzQ0Xz8/kS9EX9zHFLYDn4ZLDqP/oIACg8PTH2lS +1p1kD8mD5xvEcKyU58Okaiy9uJ5p2L4KjxZjWmhxgHsw3hUEv8zTvz5IBVV6s9cQ +DAP8m/0Ip4yM26eO8R5j3LMBL3+vV8M8SKeDaCGnL+enP/C1DPz1hNFTvA5yT2AM +QriYrRmIV9cE7Ie/fodOoyH5U/02mEiN1vi7SPIpyGTRzFRIU4uvt2UevykzKdkp +YEj4/5G8V1jlNS67abZZAgMBAAGjggEdMIIBGTAfBgNVHSMEGDAWgBTAephojYn7 +qwVkDBF9qn1luMrMTjAdBgNVHQ4EFgQUw5zz/NNGCDS7zkZ/oHxb8+IIy1kwEgYD +VR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwNQYDVR0fBC4wLDAqoCig +JoYkaHR0cDovL2cuc3ltY2IuY29tL2NybHMvZ3RnbG9iYWwuY3JsMC4GCCsGAQUF +BwEBBCIwIDAeBggrBgEFBQcwAYYSaHR0cDovL2cuc3ltY2QuY29tMEwGA1UdIARF +MEMwQQYKYIZIAYb4RQEHNjAzMDEGCCsGAQUFBwIBFiVodHRwOi8vd3d3Lmdlb3Ry +dXN0LmNvbS9yZXNvdXJjZXMvY3BzMA0GCSqGSIb3DQEBCwUAA4IBAQCjWB7GQzKs +rC+TeLfqrlRARy1+eI1Q9vhmrNZPc9ZE768LzFvB9E+aj0l+YK/CJ8cW8fuTgZCp +fO9vfm5FlBaEvexJ8cQO9K8EWYOHDyw7l8NaEpt7BDV7o5UzCHuTcSJCs6nZb0+B +kvwHtnm8hEqddwnxxYny8LScVKoSew26T++TGezvfU5ho452nFnPjJSxhJf3GrkH +uLLGTxN5279PURt/aQ1RKsHWFf83UTRlUfQevjhq7A6rvz17OQV79PP7GqHQyH5O +ZI3NjGFVkP46yl0lD/gdo0p0Vk8aVUBwdSWmMy66S6VdU5oNMOGNX2Esr8zvsJmh +gP8L8mJMcCaY +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_6[] = { + 0x30, 0x82, 0x04, 0x25, 0x30, 0x82, 0x03, 0x0d, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x77, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, + 0x38, 0x32, 0x39, 0x32, 0x31, 0x33, 0x39, 0x33, 0x32, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x31, 0x33, 0x39, 0x33, 0x32, + 0x5a, 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x17, 0x52, 0x61, 0x70, 0x69, 0x64, 0x53, 0x53, 0x4c, 0x20, + 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, + 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, + 0x54, 0x9b, 0xd9, 0x58, 0x5d, 0x1e, 0x2c, 0x56, 0xc6, 0xd5, 0xe8, 0x7f, + 0xf4, 0x7d, 0x16, 0x03, 0xff, 0xd0, 0x8b, 0x5a, 0xe4, 0x8e, 0xa7, 0xdd, + 0x54, 0x2e, 0xd4, 0x04, 0xc0, 0x5d, 0x98, 0x9c, 0x8d, 0x90, 0x0f, 0xbc, + 0x10, 0x65, 0x5f, 0xda, 0x9a, 0xd6, 0x44, 0x7c, 0xc0, 0x9f, 0xb5, 0xe9, + 0x4a, 0x8c, 0x0b, 0x06, 0x43, 0x04, 0xbb, 0xf4, 0x96, 0xe2, 0x26, 0xf6, + 0x61, 0x01, 0x91, 0x66, 0x31, 0x22, 0xc3, 0x34, 0x34, 0x5f, 0x3f, 0x3f, + 0x91, 0x2f, 0x44, 0x5f, 0xdc, 0xc7, 0x14, 0xb6, 0x03, 0x9f, 0x86, 0x4b, + 0x0e, 0xa3, 0xff, 0xa0, 0x80, 0x02, 0x83, 0xc3, 0xd3, 0x1f, 0x69, 0x52, + 0xd6, 0x9d, 0x64, 0x0f, 0xc9, 0x83, 0xe7, 0x1b, 0xc4, 0x70, 0xac, 0x94, + 0xe7, 0xc3, 0xa4, 0x6a, 0x2c, 0xbd, 0xb8, 0x9e, 0x69, 0xd8, 0xbe, 0x0a, + 0x8f, 0x16, 0x63, 0x5a, 0x68, 0x71, 0x80, 0x7b, 0x30, 0xde, 0x15, 0x04, + 0xbf, 0xcc, 0xd3, 0xbf, 0x3e, 0x48, 0x05, 0x55, 0x7a, 0xb3, 0xd7, 0x10, + 0x0c, 0x03, 0xfc, 0x9b, 0xfd, 0x08, 0xa7, 0x8c, 0x8c, 0xdb, 0xa7, 0x8e, + 0xf1, 0x1e, 0x63, 0xdc, 0xb3, 0x01, 0x2f, 0x7f, 0xaf, 0x57, 0xc3, 0x3c, + 0x48, 0xa7, 0x83, 0x68, 0x21, 0xa7, 0x2f, 0xe7, 0xa7, 0x3f, 0xf0, 0xb5, + 0x0c, 0xfc, 0xf5, 0x84, 0xd1, 0x53, 0xbc, 0x0e, 0x72, 0x4f, 0x60, 0x0c, + 0x42, 0xb8, 0x98, 0xad, 0x19, 0x88, 0x57, 0xd7, 0x04, 0xec, 0x87, 0xbf, + 0x7e, 0x87, 0x4e, 0xa3, 0x21, 0xf9, 0x53, 0xfd, 0x36, 0x98, 0x48, 0x8d, + 0xd6, 0xf8, 0xbb, 0x48, 0xf2, 0x29, 0xc8, 0x64, 0xd1, 0xcc, 0x54, 0x48, + 0x53, 0x8b, 0xaf, 0xb7, 0x65, 0x1e, 0xbf, 0x29, 0x33, 0x29, 0xd9, 0x29, + 0x60, 0x48, 0xf8, 0xff, 0x91, 0xbc, 0x57, 0x58, 0xe5, 0x35, 0x2e, 0xbb, + 0x69, 0xb6, 0x59, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1d, + 0x30, 0x82, 0x01, 0x19, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x18, 0x30, 0x16, 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, + 0xab, 0x05, 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, + 0x4e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0xc3, 0x9c, 0xf3, 0xfc, 0xd3, 0x46, 0x08, 0x34, 0xbb, 0xce, 0x46, 0x7f, + 0xa0, 0x7c, 0x5b, 0xf3, 0xe2, 0x08, 0xcb, 0x59, 0x30, 0x12, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, + 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, + 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x35, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, + 0x26, 0x86, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, + 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, + 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, + 0x63, 0x6f, 0x6d, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, + 0x30, 0x43, 0x30, 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, + 0x45, 0x01, 0x07, 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x58, 0x1e, 0xc6, 0x43, 0x32, 0xac, + 0xac, 0x2f, 0x93, 0x78, 0xb7, 0xea, 0xae, 0x54, 0x40, 0x47, 0x2d, 0x7e, + 0x78, 0x8d, 0x50, 0xf6, 0xf8, 0x66, 0xac, 0xd6, 0x4f, 0x73, 0xd6, 0x44, + 0xef, 0xaf, 0x0b, 0xcc, 0x5b, 0xc1, 0xf4, 0x4f, 0x9a, 0x8f, 0x49, 0x7e, + 0x60, 0xaf, 0xc2, 0x27, 0xc7, 0x16, 0xf1, 0xfb, 0x93, 0x81, 0x90, 0xa9, + 0x7c, 0xef, 0x6f, 0x7e, 0x6e, 0x45, 0x94, 0x16, 0x84, 0xbd, 0xec, 0x49, + 0xf1, 0xc4, 0x0e, 0xf4, 0xaf, 0x04, 0x59, 0x83, 0x87, 0x0f, 0x2c, 0x3b, + 0x97, 0xc3, 0x5a, 0x12, 0x9b, 0x7b, 0x04, 0x35, 0x7b, 0xa3, 0x95, 0x33, + 0x08, 0x7b, 0x93, 0x71, 0x22, 0x42, 0xb3, 0xa9, 0xd9, 0x6f, 0x4f, 0x81, + 0x92, 0xfc, 0x07, 0xb6, 0x79, 0xbc, 0x84, 0x4a, 0x9d, 0x77, 0x09, 0xf1, + 0xc5, 0x89, 0xf2, 0xf0, 0xb4, 0x9c, 0x54, 0xaa, 0x12, 0x7b, 0x0d, 0xba, + 0x4f, 0xef, 0x93, 0x19, 0xec, 0xef, 0x7d, 0x4e, 0x61, 0xa3, 0x8e, 0x76, + 0x9c, 0x59, 0xcf, 0x8c, 0x94, 0xb1, 0x84, 0x97, 0xf7, 0x1a, 0xb9, 0x07, + 0xb8, 0xb2, 0xc6, 0x4f, 0x13, 0x79, 0xdb, 0xbf, 0x4f, 0x51, 0x1b, 0x7f, + 0x69, 0x0d, 0x51, 0x2a, 0xc1, 0xd6, 0x15, 0xff, 0x37, 0x51, 0x34, 0x65, + 0x51, 0xf4, 0x1e, 0xbe, 0x38, 0x6a, 0xec, 0x0e, 0xab, 0xbf, 0x3d, 0x7b, + 0x39, 0x05, 0x7b, 0xf4, 0xf3, 0xfb, 0x1a, 0xa1, 0xd0, 0xc8, 0x7e, 0x4e, + 0x64, 0x8d, 0xcd, 0x8c, 0x61, 0x55, 0x90, 0xfe, 0x3a, 0xca, 0x5d, 0x25, + 0x0f, 0xf8, 0x1d, 0xa3, 0x4a, 0x74, 0x56, 0x4f, 0x1a, 0x55, 0x40, 0x70, + 0x75, 0x25, 0xa6, 0x33, 0x2e, 0xba, 0x4b, 0xa5, 0x5d, 0x53, 0x9a, 0x0d, + 0x30, 0xe1, 0x8d, 0x5f, 0x61, 0x2c, 0xaf, 0xcc, 0xef, 0xb0, 0x99, 0xa1, + 0x80, 0xff, 0x0b, 0xf2, 0x62, 0x4c, 0x70, 0x26, 0x98, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 11:20:96:f6:c8:03:7c:9e:07:b1:38:bf:2e:72:10:8a:d7:ed + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=FR, O=Certplus, CN=Class 2 Primary CA + Validity + Not Before: Jun 5 00:00:00 2007 GMT + Not After : Jun 20 00:00:00 2019 GMT + Subject: C=FR, O=KEYNECTIS, CN=CLASS 2 KEYNECTIS CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:c6:be:fe:44:23:04:d4:ef:2f:3b:86:aa:35:58: + 81:d1:e1:9a:d6:b1:d4:27:45:28:fc:d1:1e:46:85: + ba:54:23:11:7d:e0:66:3f:d4:a3:57:66:78:f9:6b: + eb:74:7c:2a:b8:37:a5:e8:70:ae:82:b5:4e:d4:81: + fe:5b:e2:ea:e7:22:16:f8:f9:d7:ba:3a:f6:88:56: + dc:c4:f2:a0:a4:e5:75:06:60:72:2b:fb:f5:94:ee: + 2c:83:28:de:91:9a:b3:83:3a:b0:9f:08:fa:dd:d8: + 9e:8c:24:e6:df:66:5b:c8:7e:a3:62:4d:3f:3a:85: + 23:ec:e8:71:8f:0a:00:ac:89:6d:7e:d8:72:e5:dd: + c1:94:8e:5f:e4:73:e6:c1:c6:0c:87:58:4f:37:da: + d1:a9:88:26:76:b4:ee:11:8d:f6:ad:b2:a7:bc:73: + c4:cd:1c:6e:1a:e6:8d:72:56:44:a0:98:f7:92:f9: + d7:79:9b:03:e6:68:5f:a4:5c:7c:3d:50:b4:83:cc: + e5:ac:0d:e1:3e:4f:14:f2:b4:e4:7d:bf:71:a4:c3: + 97:73:38:d6:52:7c:c8:a4:b5:ea:e9:b2:54:56:d4: + eb:b8:57:3a:40:52:5a:5e:46:27:a3:7b:30:2d:08: + 3d:85:1e:9a:f0:32:a8:f2:10:a2:83:9b:e2:28:f6: + 9d:cb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: 1.3.6.4.1.22234.2.5.3.3 + CPS: http://www.keynectis.com/PC + Policy: 1.3.6.4.1.22234.2.5.1.3 + CPS: http://www.keynectis.com/PC + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://www.certplus.com/CRL/class2.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 00:11:41:DF:3B:9D:3B:CB:B8:A2:C1:33:92:A8:81:CC:E5:7D:E7:99 + X509v3 Authority Key Identifier: + keyid:E3:73:2D:DF:CB:0E:28:0C:DE:DD:B3:A4:CA:79:B8:8E:BB:E8:30:89 + + Signature Algorithm: sha1WithRSAEncryption + 08:88:fe:1f:a2:ca:cd:e2:a0:f1:2e:7c:67:49:fb:dc:94:ac: + 7f:41:0d:78:01:ba:31:f7:9b:fb:31:18:77:2f:66:25:94:b8: + 6d:16:74:81:f1:c0:ae:67:c6:14:45:7a:01:d1:13:88:fc:e2: + 8d:22:1d:bd:1e:0c:c7:a9:7e:d0:c3:97:f6:37:5b:41:5e:67: + 94:8e:ab:69:02:17:18:f5:4d:38:c2:49:28:09:6e:5a:9b:a6: + 27:db:c0:5f:8f:44:9c:90:65:99:d8:b3:2e:c1:92:ee:1a:9d: + 0f:72:45:20:fa:2c:0c:9c:5d:cd:5b:54:41:54:4f:d3:e2:c7: + 59:84:3f:17:7b:7d:0e:c2:ef:62:c7:ba:b1:26:6c:83:4e:d3: + 19:c5:ff:56:a7:b4:45:3f:7a:9e:fa:d0:39:3e:80:46:75:5d: + 5a:79:7a:33:c5:01:bc:02:44:ce:1b:c0:31:4e:47:96:15:6e: + e7:e4:76:f0:c2:90:0d:a1:78:f4:38:00:91:2b:65:7c:79:13: + a8:3e:91:14:dc:88:05:08:d7:6f:53:f6:15:43:ee:c5:53:56: + 1a:02:b5:a6:a2:46:8d:1e:13:e4:67:c2:45:5f:40:5e:10:42: + 58:b5:cd:44:a3:94:4c:1c:54:90:4d:91:9a:26:8b:ad:a2:80: + 50:8d:14:14 +-----BEGIN CERTIFICATE----- +MIIEKzCCAxOgAwIBAgISESCW9sgDfJ4HsTi/LnIQitftMA0GCSqGSIb3DQEBBQUA +MD0xCzAJBgNVBAYTAkZSMREwDwYDVQQKEwhDZXJ0cGx1czEbMBkGA1UEAxMSQ2xh +c3MgMiBQcmltYXJ5IENBMB4XDTA3MDYwNTAwMDAwMFoXDTE5MDYyMDAwMDAwMFow +QDELMAkGA1UEBhMCRlIxEjAQBgNVBAoTCUtFWU5FQ1RJUzEdMBsGA1UEAxMUQ0xB +U1MgMiBLRVlORUNUSVMgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQDGvv5EIwTU7y87hqo1WIHR4ZrWsdQnRSj80R5GhbpUIxF94GY/1KNXZnj5a+t0 +fCq4N6XocK6CtU7Ugf5b4urnIhb4+de6OvaIVtzE8qCk5XUGYHIr+/WU7iyDKN6R +mrODOrCfCPrd2J6MJObfZlvIfqNiTT86hSPs6HGPCgCsiW1+2HLl3cGUjl/kc+bB +xgyHWE832tGpiCZ2tO4Rjfatsqe8c8TNHG4a5o1yVkSgmPeS+dd5mwPmaF+kXHw9 +ULSDzOWsDeE+TxTytOR9v3Gkw5dzONZSfMikterpslRW1Ou4VzpAUlpeRiejezAt +CD2FHprwMqjyEKKDm+Io9p3LAgMBAAGjggEgMIIBHDASBgNVHRMBAf8ECDAGAQH/ +AgEAMH0GA1UdIAR2MHQwOAYLKwYEAYGtWgIFAwMwKTAnBggrBgEFBQcCARYbaHR0 +cDovL3d3dy5rZXluZWN0aXMuY29tL1BDMDgGCysGBAGBrVoCBQEDMCkwJwYIKwYB +BQUHAgEWG2h0dHA6Ly93d3cua2V5bmVjdGlzLmNvbS9QQzA3BgNVHR8EMDAuMCyg +KqAohiZodHRwOi8vd3d3LmNlcnRwbHVzLmNvbS9DUkwvY2xhc3MyLmNybDAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAARQd87nTvLuKLBM5KogczlfeeZMB8GA1Ud +IwQYMBaAFONzLd/LDigM3t2zpMp5uI676DCJMA0GCSqGSIb3DQEBBQUAA4IBAQAI +iP4fosrN4qDxLnxnSfvclKx/QQ14Abox95v7MRh3L2YllLhtFnSB8cCuZ8YURXoB +0ROI/OKNIh29HgzHqX7Qw5f2N1tBXmeUjqtpAhcY9U04wkkoCW5am6Yn28Bfj0Sc +kGWZ2LMuwZLuGp0PckUg+iwMnF3NW1RBVE/T4sdZhD8Xe30Owu9ix7qxJmyDTtMZ +xf9Wp7RFP3qe+tA5PoBGdV1aeXozxQG8AkTOG8AxTkeWFW7n5HbwwpANoXj0OACR +K2V8eROoPpEU3IgFCNdvU/YVQ+7FU1YaArWmokaNHhPkZ8JFX0BeEEJYtc1Eo5RM +HFSQTZGaJoutooBQjRQU +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_7[] = { + 0x30, 0x82, 0x04, 0x2b, 0x30, 0x82, 0x03, 0x13, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x12, 0x11, 0x20, 0x96, 0xf6, 0xc8, 0x03, 0x7c, 0x9e, 0x07, + 0xb1, 0x38, 0xbf, 0x2e, 0x72, 0x10, 0x8a, 0xd7, 0xed, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, + 0x30, 0x3d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x46, 0x52, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x08, 0x43, 0x65, 0x72, 0x74, 0x70, 0x6c, 0x75, 0x73, 0x31, 0x1b, + 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x20, 0x32, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, + 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x37, 0x30, 0x36, 0x30, + 0x35, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x39, + 0x30, 0x36, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, + 0x40, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x46, 0x52, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x09, 0x4b, 0x45, 0x59, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x53, 0x31, 0x1d, + 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x14, 0x43, 0x4c, 0x41, + 0x53, 0x53, 0x20, 0x32, 0x20, 0x4b, 0x45, 0x59, 0x4e, 0x45, 0x43, 0x54, + 0x49, 0x53, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, + 0x01, 0x00, 0xc6, 0xbe, 0xfe, 0x44, 0x23, 0x04, 0xd4, 0xef, 0x2f, 0x3b, + 0x86, 0xaa, 0x35, 0x58, 0x81, 0xd1, 0xe1, 0x9a, 0xd6, 0xb1, 0xd4, 0x27, + 0x45, 0x28, 0xfc, 0xd1, 0x1e, 0x46, 0x85, 0xba, 0x54, 0x23, 0x11, 0x7d, + 0xe0, 0x66, 0x3f, 0xd4, 0xa3, 0x57, 0x66, 0x78, 0xf9, 0x6b, 0xeb, 0x74, + 0x7c, 0x2a, 0xb8, 0x37, 0xa5, 0xe8, 0x70, 0xae, 0x82, 0xb5, 0x4e, 0xd4, + 0x81, 0xfe, 0x5b, 0xe2, 0xea, 0xe7, 0x22, 0x16, 0xf8, 0xf9, 0xd7, 0xba, + 0x3a, 0xf6, 0x88, 0x56, 0xdc, 0xc4, 0xf2, 0xa0, 0xa4, 0xe5, 0x75, 0x06, + 0x60, 0x72, 0x2b, 0xfb, 0xf5, 0x94, 0xee, 0x2c, 0x83, 0x28, 0xde, 0x91, + 0x9a, 0xb3, 0x83, 0x3a, 0xb0, 0x9f, 0x08, 0xfa, 0xdd, 0xd8, 0x9e, 0x8c, + 0x24, 0xe6, 0xdf, 0x66, 0x5b, 0xc8, 0x7e, 0xa3, 0x62, 0x4d, 0x3f, 0x3a, + 0x85, 0x23, 0xec, 0xe8, 0x71, 0x8f, 0x0a, 0x00, 0xac, 0x89, 0x6d, 0x7e, + 0xd8, 0x72, 0xe5, 0xdd, 0xc1, 0x94, 0x8e, 0x5f, 0xe4, 0x73, 0xe6, 0xc1, + 0xc6, 0x0c, 0x87, 0x58, 0x4f, 0x37, 0xda, 0xd1, 0xa9, 0x88, 0x26, 0x76, + 0xb4, 0xee, 0x11, 0x8d, 0xf6, 0xad, 0xb2, 0xa7, 0xbc, 0x73, 0xc4, 0xcd, + 0x1c, 0x6e, 0x1a, 0xe6, 0x8d, 0x72, 0x56, 0x44, 0xa0, 0x98, 0xf7, 0x92, + 0xf9, 0xd7, 0x79, 0x9b, 0x03, 0xe6, 0x68, 0x5f, 0xa4, 0x5c, 0x7c, 0x3d, + 0x50, 0xb4, 0x83, 0xcc, 0xe5, 0xac, 0x0d, 0xe1, 0x3e, 0x4f, 0x14, 0xf2, + 0xb4, 0xe4, 0x7d, 0xbf, 0x71, 0xa4, 0xc3, 0x97, 0x73, 0x38, 0xd6, 0x52, + 0x7c, 0xc8, 0xa4, 0xb5, 0xea, 0xe9, 0xb2, 0x54, 0x56, 0xd4, 0xeb, 0xb8, + 0x57, 0x3a, 0x40, 0x52, 0x5a, 0x5e, 0x46, 0x27, 0xa3, 0x7b, 0x30, 0x2d, + 0x08, 0x3d, 0x85, 0x1e, 0x9a, 0xf0, 0x32, 0xa8, 0xf2, 0x10, 0xa2, 0x83, + 0x9b, 0xe2, 0x28, 0xf6, 0x9d, 0xcb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, + 0x82, 0x01, 0x20, 0x30, 0x82, 0x01, 0x1c, 0x30, 0x12, 0x06, 0x03, 0x55, + 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, + 0x02, 0x01, 0x00, 0x30, 0x7d, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x76, + 0x30, 0x74, 0x30, 0x38, 0x06, 0x0b, 0x2b, 0x06, 0x04, 0x01, 0x81, 0xad, + 0x5a, 0x02, 0x05, 0x03, 0x03, 0x30, 0x29, 0x30, 0x27, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1b, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6b, 0x65, 0x79, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x43, + 0x30, 0x38, 0x06, 0x0b, 0x2b, 0x06, 0x04, 0x01, 0x81, 0xad, 0x5a, 0x02, + 0x05, 0x01, 0x03, 0x30, 0x29, 0x30, 0x27, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1b, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6b, 0x65, 0x79, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x43, 0x30, 0x37, + 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0xa0, + 0x2a, 0xa0, 0x28, 0x86, 0x26, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x70, 0x6c, 0x75, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x32, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x00, 0x11, + 0x41, 0xdf, 0x3b, 0x9d, 0x3b, 0xcb, 0xb8, 0xa2, 0xc1, 0x33, 0x92, 0xa8, + 0x81, 0xcc, 0xe5, 0x7d, 0xe7, 0x99, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe3, 0x73, 0x2d, 0xdf, 0xcb, + 0x0e, 0x28, 0x0c, 0xde, 0xdd, 0xb3, 0xa4, 0xca, 0x79, 0xb8, 0x8e, 0xbb, + 0xe8, 0x30, 0x89, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x08, + 0x88, 0xfe, 0x1f, 0xa2, 0xca, 0xcd, 0xe2, 0xa0, 0xf1, 0x2e, 0x7c, 0x67, + 0x49, 0xfb, 0xdc, 0x94, 0xac, 0x7f, 0x41, 0x0d, 0x78, 0x01, 0xba, 0x31, + 0xf7, 0x9b, 0xfb, 0x31, 0x18, 0x77, 0x2f, 0x66, 0x25, 0x94, 0xb8, 0x6d, + 0x16, 0x74, 0x81, 0xf1, 0xc0, 0xae, 0x67, 0xc6, 0x14, 0x45, 0x7a, 0x01, + 0xd1, 0x13, 0x88, 0xfc, 0xe2, 0x8d, 0x22, 0x1d, 0xbd, 0x1e, 0x0c, 0xc7, + 0xa9, 0x7e, 0xd0, 0xc3, 0x97, 0xf6, 0x37, 0x5b, 0x41, 0x5e, 0x67, 0x94, + 0x8e, 0xab, 0x69, 0x02, 0x17, 0x18, 0xf5, 0x4d, 0x38, 0xc2, 0x49, 0x28, + 0x09, 0x6e, 0x5a, 0x9b, 0xa6, 0x27, 0xdb, 0xc0, 0x5f, 0x8f, 0x44, 0x9c, + 0x90, 0x65, 0x99, 0xd8, 0xb3, 0x2e, 0xc1, 0x92, 0xee, 0x1a, 0x9d, 0x0f, + 0x72, 0x45, 0x20, 0xfa, 0x2c, 0x0c, 0x9c, 0x5d, 0xcd, 0x5b, 0x54, 0x41, + 0x54, 0x4f, 0xd3, 0xe2, 0xc7, 0x59, 0x84, 0x3f, 0x17, 0x7b, 0x7d, 0x0e, + 0xc2, 0xef, 0x62, 0xc7, 0xba, 0xb1, 0x26, 0x6c, 0x83, 0x4e, 0xd3, 0x19, + 0xc5, 0xff, 0x56, 0xa7, 0xb4, 0x45, 0x3f, 0x7a, 0x9e, 0xfa, 0xd0, 0x39, + 0x3e, 0x80, 0x46, 0x75, 0x5d, 0x5a, 0x79, 0x7a, 0x33, 0xc5, 0x01, 0xbc, + 0x02, 0x44, 0xce, 0x1b, 0xc0, 0x31, 0x4e, 0x47, 0x96, 0x15, 0x6e, 0xe7, + 0xe4, 0x76, 0xf0, 0xc2, 0x90, 0x0d, 0xa1, 0x78, 0xf4, 0x38, 0x00, 0x91, + 0x2b, 0x65, 0x7c, 0x79, 0x13, 0xa8, 0x3e, 0x91, 0x14, 0xdc, 0x88, 0x05, + 0x08, 0xd7, 0x6f, 0x53, 0xf6, 0x15, 0x43, 0xee, 0xc5, 0x53, 0x56, 0x1a, + 0x02, 0xb5, 0xa6, 0xa2, 0x46, 0x8d, 0x1e, 0x13, 0xe4, 0x67, 0xc2, 0x45, + 0x5f, 0x40, 0x5e, 0x10, 0x42, 0x58, 0xb5, 0xcd, 0x44, 0xa3, 0x94, 0x4c, + 0x1c, 0x54, 0x90, 0x4d, 0x91, 0x9a, 0x26, 0x8b, 0xad, 0xa2, 0x80, 0x50, + 0x8d, 0x14, 0x14, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 120024505 (0x7276db9) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Global Root + Validity + Not Before: Nov 30 16:35:21 2010 GMT + Not After : Aug 10 15:34:26 2018 GMT + Subject: C=IE, O=Baltimore, OU=CyberTrust, CN=Baltimore CyberTrust Root + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:a3:04:bb:22:ab:98:3d:57:e8:26:72:9a:b5:79: + d4:29:e2:e1:e8:95:80:b1:b0:e3:5b:8e:2b:29:9a: + 64:df:a1:5d:ed:b0:09:05:6d:db:28:2e:ce:62:a2: + 62:fe:b4:88:da:12:eb:38:eb:21:9d:c0:41:2b:01: + 52:7b:88:77:d3:1c:8f:c7:ba:b9:88:b5:6a:09:e7: + 73:e8:11:40:a7:d1:cc:ca:62:8d:2d:e5:8f:0b:a6: + 50:d2:a8:50:c3:28:ea:f5:ab:25:87:8a:9a:96:1c: + a9:67:b8:3f:0c:d5:f7:f9:52:13:2f:c2:1b:d5:70: + 70:f0:8f:c0:12:ca:06:cb:9a:e1:d9:ca:33:7a:77: + d6:f8:ec:b9:f1:68:44:42:48:13:d2:c0:c2:a4:ae: + 5e:60:fe:b6:a6:05:fc:b4:dd:07:59:02:d4:59:18: + 98:63:f5:a5:63:e0:90:0c:7d:5d:b2:06:7a:f3:85: + ea:eb:d4:03:ae:5e:84:3e:5f:ff:15:ed:69:bc:f9: + 39:36:72:75:cf:77:52:4d:f3:c9:90:2c:b9:3d:e5: + c9:23:53:3f:1f:24:98:21:5c:07:99:29:bd:c6:3a: + ec:e7:6e:86:3a:6b:97:74:63:33:bd:68:18:31:f0: + 78:8d:76:bf:fc:9e:8e:5d:2a:86:a7:4d:90:dc:27: + 1a:39 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:3 + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: http://cybertrust.omniroot.com/repository.cfm + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Authority Key Identifier: + DirName:/C=US/O=GTE Corporation/OU=GTE CyberTrust Solutions, Inc./CN=GTE CyberTrust Global Root + serial:01:A5 + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://www.public-trust.com/cgi-bin/CRL/2018/cdp.crl + + X509v3 Subject Key Identifier: + E5:9D:59:30:82:47:58:CC:AC:FA:08:54:36:86:7B:3A:B5:04:4D:F0 + Signature Algorithm: sha1WithRSAEncryption + 16:b4:2c:c9:f1:5e:e1:a2:7b:9b:78:20:7a:4a:70:70:86:19: + 00:b7:05:2a:e8:c9:25:39:0f:c3:64:3c:75:09:d9:89:15:80: + 07:c2:8d:bc:29:a5:64:50:cf:71:75:47:23:bd:4d:d8:7f:77: + 9a:51:10:6e:4e:1f:20:3c:47:9c:43:74:7f:96:84:10:4c:13: + 43:be:f8:e0:72:2e:ff:bf:ae:3c:0a:03:60:82:4b:6f:f9:9a: + c5:1e:f6:af:90:3b:9f:61:3b:3e:de:9b:05:1a:c6:2c:3c:57: + 21:08:0f:54:fa:28:63:6c:e8:1b:9c:0f:cf:dd:30:44:13:b9: + 57:fe +-----BEGIN CERTIFICATE----- +MIIEODCCA6GgAwIBAgIEBydtuTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV +UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU +cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds +b2JhbCBSb290MB4XDTEwMTEzMDE2MzUyMVoXDTE4MDgxMDE1MzQyNlowWjELMAkG +A1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVz +dDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKrmD1X6CZymrV51Cni4eiVgLGw41uO +KymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsBUnuId9Mcj8e6uYi1agnn +c+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/CG9VwcPCP +wBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPg +kAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFc +B5kpvcY67Oduhjprl3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaOCAWow +ggFmMBIGA1UdEwEB/wQIMAYBAf8CAQMwTgYDVR0gBEcwRTBDBgRVHSAAMDswOQYI +KwYBBQUHAgEWLWh0dHA6Ly9jeWJlcnRydXN0Lm9tbmlyb290LmNvbS9yZXBvc2l0 +b3J5LmNmbTAOBgNVHQ8BAf8EBAMCAQYwgYkGA1UdIwSBgTB/oXmkdzB1MQswCQYD +VQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUg +Q3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRy +dXN0IEdsb2JhbCBSb290ggIBpTBFBgNVHR8EPjA8MDqgOKA2hjRodHRwOi8vd3d3 +LnB1YmxpYy10cnVzdC5jb20vY2dpLWJpbi9DUkwvMjAxOC9jZHAuY3JsMB0GA1Ud +DgQWBBTlnVkwgkdYzKz6CFQ2hns6tQRN8DANBgkqhkiG9w0BAQUFAAOBgQAWtCzJ +8V7honubeCB6SnBwhhkAtwUq6MklOQ/DZDx1CdmJFYAHwo28KaVkUM9xdUcjvU3Y +f3eaURBuTh8gPEecQ3R/loQQTBNDvvjgci7/v648CgNggktv+ZrFHvavkDufYTs+ +3psFGsYsPFchCA9U+ihjbOgbnA/P3TBEE7lX/g== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_8[] = { + 0x30, 0x82, 0x04, 0x38, 0x30, 0x82, 0x03, 0xa1, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0x6d, 0xb9, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x75, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0f, + 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x1e, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x23, 0x30, 0x21, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a, 0x47, 0x54, 0x45, 0x20, 0x43, + 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x30, 0x31, 0x31, 0x33, 0x30, 0x31, 0x36, 0x33, 0x35, 0x32, + 0x31, 0x5a, 0x17, 0x0d, 0x31, 0x38, 0x30, 0x38, 0x31, 0x30, 0x31, 0x35, + 0x33, 0x34, 0x32, 0x36, 0x5a, 0x30, 0x5a, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x45, 0x31, 0x12, 0x30, 0x10, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, 0x42, 0x61, 0x6c, 0x74, 0x69, + 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x43, 0x79, + 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, + 0x74, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, + 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x04, + 0xbb, 0x22, 0xab, 0x98, 0x3d, 0x57, 0xe8, 0x26, 0x72, 0x9a, 0xb5, 0x79, + 0xd4, 0x29, 0xe2, 0xe1, 0xe8, 0x95, 0x80, 0xb1, 0xb0, 0xe3, 0x5b, 0x8e, + 0x2b, 0x29, 0x9a, 0x64, 0xdf, 0xa1, 0x5d, 0xed, 0xb0, 0x09, 0x05, 0x6d, + 0xdb, 0x28, 0x2e, 0xce, 0x62, 0xa2, 0x62, 0xfe, 0xb4, 0x88, 0xda, 0x12, + 0xeb, 0x38, 0xeb, 0x21, 0x9d, 0xc0, 0x41, 0x2b, 0x01, 0x52, 0x7b, 0x88, + 0x77, 0xd3, 0x1c, 0x8f, 0xc7, 0xba, 0xb9, 0x88, 0xb5, 0x6a, 0x09, 0xe7, + 0x73, 0xe8, 0x11, 0x40, 0xa7, 0xd1, 0xcc, 0xca, 0x62, 0x8d, 0x2d, 0xe5, + 0x8f, 0x0b, 0xa6, 0x50, 0xd2, 0xa8, 0x50, 0xc3, 0x28, 0xea, 0xf5, 0xab, + 0x25, 0x87, 0x8a, 0x9a, 0x96, 0x1c, 0xa9, 0x67, 0xb8, 0x3f, 0x0c, 0xd5, + 0xf7, 0xf9, 0x52, 0x13, 0x2f, 0xc2, 0x1b, 0xd5, 0x70, 0x70, 0xf0, 0x8f, + 0xc0, 0x12, 0xca, 0x06, 0xcb, 0x9a, 0xe1, 0xd9, 0xca, 0x33, 0x7a, 0x77, + 0xd6, 0xf8, 0xec, 0xb9, 0xf1, 0x68, 0x44, 0x42, 0x48, 0x13, 0xd2, 0xc0, + 0xc2, 0xa4, 0xae, 0x5e, 0x60, 0xfe, 0xb6, 0xa6, 0x05, 0xfc, 0xb4, 0xdd, + 0x07, 0x59, 0x02, 0xd4, 0x59, 0x18, 0x98, 0x63, 0xf5, 0xa5, 0x63, 0xe0, + 0x90, 0x0c, 0x7d, 0x5d, 0xb2, 0x06, 0x7a, 0xf3, 0x85, 0xea, 0xeb, 0xd4, + 0x03, 0xae, 0x5e, 0x84, 0x3e, 0x5f, 0xff, 0x15, 0xed, 0x69, 0xbc, 0xf9, + 0x39, 0x36, 0x72, 0x75, 0xcf, 0x77, 0x52, 0x4d, 0xf3, 0xc9, 0x90, 0x2c, + 0xb9, 0x3d, 0xe5, 0xc9, 0x23, 0x53, 0x3f, 0x1f, 0x24, 0x98, 0x21, 0x5c, + 0x07, 0x99, 0x29, 0xbd, 0xc6, 0x3a, 0xec, 0xe7, 0x6e, 0x86, 0x3a, 0x6b, + 0x97, 0x74, 0x63, 0x33, 0xbd, 0x68, 0x18, 0x31, 0xf0, 0x78, 0x8d, 0x76, + 0xbf, 0xfc, 0x9e, 0x8e, 0x5d, 0x2a, 0x86, 0xa7, 0x4d, 0x90, 0xdc, 0x27, + 0x1a, 0x39, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x6a, 0x30, + 0x82, 0x01, 0x66, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x03, 0x30, + 0x4e, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x47, 0x30, 0x45, 0x30, 0x43, + 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x2e, 0x63, 0x66, 0x6d, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, + 0x81, 0x89, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x81, 0x81, 0x30, 0x7f, + 0xa1, 0x79, 0xa4, 0x77, 0x30, 0x75, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, + 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x18, 0x30, 0x16, 0x06, + 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0f, 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, + 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x27, 0x30, + 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1e, 0x47, 0x54, 0x45, 0x20, + 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, + 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x23, 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x1a, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, + 0x6f, 0x6f, 0x74, 0x82, 0x02, 0x01, 0xa5, 0x30, 0x45, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x3e, 0x30, 0x3c, 0x30, 0x3a, 0xa0, 0x38, 0xa0, 0x36, + 0x86, 0x34, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, + 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x67, 0x69, 0x2d, 0x62, 0x69, + 0x6e, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x32, 0x30, 0x31, 0x38, 0x2f, 0x63, + 0x64, 0x70, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0xe5, 0x9d, 0x59, 0x30, 0x82, 0x47, 0x58, + 0xcc, 0xac, 0xfa, 0x08, 0x54, 0x36, 0x86, 0x7b, 0x3a, 0xb5, 0x04, 0x4d, + 0xf0, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x16, 0xb4, 0x2c, 0xc9, + 0xf1, 0x5e, 0xe1, 0xa2, 0x7b, 0x9b, 0x78, 0x20, 0x7a, 0x4a, 0x70, 0x70, + 0x86, 0x19, 0x00, 0xb7, 0x05, 0x2a, 0xe8, 0xc9, 0x25, 0x39, 0x0f, 0xc3, + 0x64, 0x3c, 0x75, 0x09, 0xd9, 0x89, 0x15, 0x80, 0x07, 0xc2, 0x8d, 0xbc, + 0x29, 0xa5, 0x64, 0x50, 0xcf, 0x71, 0x75, 0x47, 0x23, 0xbd, 0x4d, 0xd8, + 0x7f, 0x77, 0x9a, 0x51, 0x10, 0x6e, 0x4e, 0x1f, 0x20, 0x3c, 0x47, 0x9c, + 0x43, 0x74, 0x7f, 0x96, 0x84, 0x10, 0x4c, 0x13, 0x43, 0xbe, 0xf8, 0xe0, + 0x72, 0x2e, 0xff, 0xbf, 0xae, 0x3c, 0x0a, 0x03, 0x60, 0x82, 0x4b, 0x6f, + 0xf9, 0x9a, 0xc5, 0x1e, 0xf6, 0xaf, 0x90, 0x3b, 0x9f, 0x61, 0x3b, 0x3e, + 0xde, 0x9b, 0x05, 0x1a, 0xc6, 0x2c, 0x3c, 0x57, 0x21, 0x08, 0x0f, 0x54, + 0xfa, 0x28, 0x63, 0x6c, 0xe8, 0x1b, 0x9c, 0x0f, 0xcf, 0xdd, 0x30, 0x44, + 0x13, 0xb9, 0x57, 0xfe, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 146040 (0x23a78) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Validity + Not Before: Aug 29 22:24:58 2014 GMT + Not After : May 20 22:24:58 2022 GMT + Subject: C=US, O=GeoTrust Inc., OU=Domain Validated SSL, CN=GeoTrust DV SSL CA - G4 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:df:41:94:7a:da:f7:e4:31:43:b6:ea:01:1b:5c: + ce:63:ea:fa:6d:a3:d9:6a:ee:2d:9a:75:f9:d5:9c: + 5b:bd:34:df:d8:1c:c9:6d:d8:04:88:da:6e:b5:b7: + b5:f0:30:ae:40:d6:5d:fa:c4:53:c1:d4:22:9d:04: + 4e:11:a6:95:d5:45:7c:41:05:58:e0:4c:dd:f9:ee: + 55:bd:5f:46:dc:ad:13:08:9d:2c:e4:f7:82:e6:07: + 2b:9e:0e:8c:34:a1:ce:c4:a1:e0:81:70:86:00:06: + 3f:2d:ea:7c:9b:28:ae:1b:28:8b:39:09:d3:e7:f0: + 45:a4:b1:ba:11:67:90:55:7b:8f:de:ed:38:5c:a1: + e1:e3:83:c4:c3:72:91:4f:98:ee:1c:c2:80:aa:64: + a5:3e:83:62:1c:cc:e0:9e:f8:5a:c0:13:12:7d:a2: + a7:8b:a3:e7:9f:2a:d7:9b:ca:cb:ed:97:01:9c:28: + 84:51:04:50:41:bc:b4:fc:78:e9:1b:cf:14:ea:1f: + 0f:fc:2e:01:32:8d:b6:35:cb:0a:18:3b:ec:5a:3e: + 3c:1b:d3:99:43:1e:2f:f7:bd:f3:5b:12:b9:07:5e: + ed:3e:d1:a9:87:cc:77:72:27:d4:d9:75:a2:63:4b: + 93:36:bd:e5:5c:d7:bf:5f:79:0d:b3:32:a7:0b:b2: + 63:23 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Authority Key Identifier: + keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + + X509v3 Subject Key Identifier: + 0B:50:EC:77:EF:2A:9B:FF:EC:03:A1:0A:FF:AD:C6:E4:2A:18:C7:3E + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 CRL Distribution Points: + + Full Name: + URI:http://g.symcb.com/crls/gtglobal.crl + + Authority Information Access: + OCSP - URI:http://g.symcd.com + + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: http://www.geotrust.com/resources/cps + + Signature Algorithm: sha256WithRSAEncryption + 33:24:d5:90:aa:29:0c:35:b9:2f:c3:c7:42:93:c0:c6:10:4b: + 03:08:76:84:10:a2:e0:e7:53:12:27:f2:0a:da:7f:3a:dc:fd: + 5c:79:5a:8f:17:74:43:53:b1:d5:d1:5d:59:b9:a6:84:64:ca: + f1:3a:0a:59:96:10:bf:a9:81:57:8b:5c:87:dc:7f:e3:e4:bb: + 05:7a:a0:32:09:13:4e:10:81:28:1f:9c:03:62:bc:f4:01:b5: + 29:83:46:07:b9:e7:b8:5d:c8:e9:d1:dd:ad:3b:f8:34:db:c1: + d1:95:a9:91:18:ed:3c:2c:37:11:4d:cc:fe:53:3e:50:43:f9: + c3:56:41:ac:53:9b:6c:05:b2:9a:e2:e0:59:57:30:32:b6:26: + 4e:13:25:cd:fa:48:70:0f:75:55:60:11:f5:3b:d5:5e:5a:3c: + 8b:5b:0f:0f:62:42:48:61:85:8b:10:f4:c1:88:bf:7f:5f:8a: + c2:d7:cd:2b:94:5c:1f:34:4a:08:af:eb:ae:89:a8:48:75:55: + 95:1d:bb:c0:9a:01:b9:f4:03:22:3e:d4:e6:52:30:0d:67:b9: + c0:91:fd:2d:4c:30:8e:bd:8c:a5:04:91:bb:a4:ab:7f:0f:d8: + 6f:f0:66:00:c9:a3:5c:f5:b0:8f:83:e6:9c:5a:e6:b6:b9:c5: + bc:be:e4:02 +-----BEGIN CERTIFICATE----- +MIIERDCCAyygAwIBAgIDAjp4MA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMTQwODI5MjIyNDU4WhcNMjIwNTIwMjIyNDU4WjBmMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UECxMURG9tYWluIFZh +bGlkYXRlZCBTU0wxIDAeBgNVBAMTF0dlb1RydXN0IERWIFNTTCBDQSAtIEc0MIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA30GUetr35DFDtuoBG1zOY+r6 +baPZau4tmnX51ZxbvTTf2BzJbdgEiNputbe18DCuQNZd+sRTwdQinQROEaaV1UV8 +QQVY4Ezd+e5VvV9G3K0TCJ0s5PeC5gcrng6MNKHOxKHggXCGAAY/Lep8myiuGyiL +OQnT5/BFpLG6EWeQVXuP3u04XKHh44PEw3KRT5juHMKAqmSlPoNiHMzgnvhawBMS +faKni6PnnyrXm8rL7ZcBnCiEUQRQQby0/HjpG88U6h8P/C4BMo22NcsKGDvsWj48 +G9OZQx4v973zWxK5B17tPtGph8x3cifU2XWiY0uTNr3lXNe/X3kNszKnC7JjIwID +AQABo4IBHTCCARkwHwYDVR0jBBgwFoAUwHqYaI2J+6sFZAwRfap9ZbjKzE4wHQYD +VR0OBBYEFAtQ7HfvKpv/7AOhCv+txuQqGMc+MBIGA1UdEwEB/wQIMAYBAf8CAQAw +DgYDVR0PAQH/BAQDAgEGMDUGA1UdHwQuMCwwKqAooCaGJGh0dHA6Ly9nLnN5bWNi +LmNvbS9jcmxzL2d0Z2xvYmFsLmNybDAuBggrBgEFBQcBAQQiMCAwHgYIKwYBBQUH +MAGGEmh0dHA6Ly9nLnN5bWNkLmNvbTBMBgNVHSAERTBDMEEGCmCGSAGG+EUBBzYw +MzAxBggrBgEFBQcCARYlaHR0cDovL3d3dy5nZW90cnVzdC5jb20vcmVzb3VyY2Vz +L2NwczANBgkqhkiG9w0BAQsFAAOCAQEAMyTVkKopDDW5L8PHQpPAxhBLAwh2hBCi +4OdTEifyCtp/Otz9XHlajxd0Q1Ox1dFdWbmmhGTK8ToKWZYQv6mBV4tch9x/4+S7 +BXqgMgkTThCBKB+cA2K89AG1KYNGB7nnuF3I6dHdrTv4NNvB0ZWpkRjtPCw3EU3M +/lM+UEP5w1ZBrFObbAWymuLgWVcwMrYmThMlzfpIcA91VWAR9TvVXlo8i1sPD2JC +SGGFixD0wYi/f1+KwtfNK5RcHzRKCK/rromoSHVVlR27wJoBufQDIj7U5lIwDWe5 +wJH9LUwwjr2MpQSRu6Srfw/Yb/BmAMmjXPWwj4PmnFrmtrnFvL7kAg== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_9[] = { + 0x30, 0x82, 0x04, 0x44, 0x30, 0x82, 0x03, 0x2c, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x78, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, + 0x38, 0x32, 0x39, 0x32, 0x32, 0x32, 0x34, 0x35, 0x38, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x32, 0x32, 0x34, 0x35, 0x38, + 0x5a, 0x30, 0x66, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x14, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x53, 0x53, 0x4c, 0x31, + 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x47, 0x65, + 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x44, 0x56, 0x20, 0x53, 0x53, + 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x34, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xdf, 0x41, 0x94, 0x7a, 0xda, 0xf7, + 0xe4, 0x31, 0x43, 0xb6, 0xea, 0x01, 0x1b, 0x5c, 0xce, 0x63, 0xea, 0xfa, + 0x6d, 0xa3, 0xd9, 0x6a, 0xee, 0x2d, 0x9a, 0x75, 0xf9, 0xd5, 0x9c, 0x5b, + 0xbd, 0x34, 0xdf, 0xd8, 0x1c, 0xc9, 0x6d, 0xd8, 0x04, 0x88, 0xda, 0x6e, + 0xb5, 0xb7, 0xb5, 0xf0, 0x30, 0xae, 0x40, 0xd6, 0x5d, 0xfa, 0xc4, 0x53, + 0xc1, 0xd4, 0x22, 0x9d, 0x04, 0x4e, 0x11, 0xa6, 0x95, 0xd5, 0x45, 0x7c, + 0x41, 0x05, 0x58, 0xe0, 0x4c, 0xdd, 0xf9, 0xee, 0x55, 0xbd, 0x5f, 0x46, + 0xdc, 0xad, 0x13, 0x08, 0x9d, 0x2c, 0xe4, 0xf7, 0x82, 0xe6, 0x07, 0x2b, + 0x9e, 0x0e, 0x8c, 0x34, 0xa1, 0xce, 0xc4, 0xa1, 0xe0, 0x81, 0x70, 0x86, + 0x00, 0x06, 0x3f, 0x2d, 0xea, 0x7c, 0x9b, 0x28, 0xae, 0x1b, 0x28, 0x8b, + 0x39, 0x09, 0xd3, 0xe7, 0xf0, 0x45, 0xa4, 0xb1, 0xba, 0x11, 0x67, 0x90, + 0x55, 0x7b, 0x8f, 0xde, 0xed, 0x38, 0x5c, 0xa1, 0xe1, 0xe3, 0x83, 0xc4, + 0xc3, 0x72, 0x91, 0x4f, 0x98, 0xee, 0x1c, 0xc2, 0x80, 0xaa, 0x64, 0xa5, + 0x3e, 0x83, 0x62, 0x1c, 0xcc, 0xe0, 0x9e, 0xf8, 0x5a, 0xc0, 0x13, 0x12, + 0x7d, 0xa2, 0xa7, 0x8b, 0xa3, 0xe7, 0x9f, 0x2a, 0xd7, 0x9b, 0xca, 0xcb, + 0xed, 0x97, 0x01, 0x9c, 0x28, 0x84, 0x51, 0x04, 0x50, 0x41, 0xbc, 0xb4, + 0xfc, 0x78, 0xe9, 0x1b, 0xcf, 0x14, 0xea, 0x1f, 0x0f, 0xfc, 0x2e, 0x01, + 0x32, 0x8d, 0xb6, 0x35, 0xcb, 0x0a, 0x18, 0x3b, 0xec, 0x5a, 0x3e, 0x3c, + 0x1b, 0xd3, 0x99, 0x43, 0x1e, 0x2f, 0xf7, 0xbd, 0xf3, 0x5b, 0x12, 0xb9, + 0x07, 0x5e, 0xed, 0x3e, 0xd1, 0xa9, 0x87, 0xcc, 0x77, 0x72, 0x27, 0xd4, + 0xd9, 0x75, 0xa2, 0x63, 0x4b, 0x93, 0x36, 0xbd, 0xe5, 0x5c, 0xd7, 0xbf, + 0x5f, 0x79, 0x0d, 0xb3, 0x32, 0xa7, 0x0b, 0xb2, 0x63, 0x23, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1d, 0x30, 0x82, 0x01, 0x19, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, 0x0c, 0x11, + 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0b, 0x50, 0xec, 0x77, 0xef, + 0x2a, 0x9b, 0xff, 0xec, 0x03, 0xa1, 0x0a, 0xff, 0xad, 0xc6, 0xe4, 0x2a, + 0x18, 0xc7, 0x3e, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x35, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2e, + 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, 0x26, 0x86, 0x24, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, 0x74, + 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x2e, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x22, + 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, + 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4c, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, + 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30, + 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, + 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, + 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, + 0x33, 0x24, 0xd5, 0x90, 0xaa, 0x29, 0x0c, 0x35, 0xb9, 0x2f, 0xc3, 0xc7, + 0x42, 0x93, 0xc0, 0xc6, 0x10, 0x4b, 0x03, 0x08, 0x76, 0x84, 0x10, 0xa2, + 0xe0, 0xe7, 0x53, 0x12, 0x27, 0xf2, 0x0a, 0xda, 0x7f, 0x3a, 0xdc, 0xfd, + 0x5c, 0x79, 0x5a, 0x8f, 0x17, 0x74, 0x43, 0x53, 0xb1, 0xd5, 0xd1, 0x5d, + 0x59, 0xb9, 0xa6, 0x84, 0x64, 0xca, 0xf1, 0x3a, 0x0a, 0x59, 0x96, 0x10, + 0xbf, 0xa9, 0x81, 0x57, 0x8b, 0x5c, 0x87, 0xdc, 0x7f, 0xe3, 0xe4, 0xbb, + 0x05, 0x7a, 0xa0, 0x32, 0x09, 0x13, 0x4e, 0x10, 0x81, 0x28, 0x1f, 0x9c, + 0x03, 0x62, 0xbc, 0xf4, 0x01, 0xb5, 0x29, 0x83, 0x46, 0x07, 0xb9, 0xe7, + 0xb8, 0x5d, 0xc8, 0xe9, 0xd1, 0xdd, 0xad, 0x3b, 0xf8, 0x34, 0xdb, 0xc1, + 0xd1, 0x95, 0xa9, 0x91, 0x18, 0xed, 0x3c, 0x2c, 0x37, 0x11, 0x4d, 0xcc, + 0xfe, 0x53, 0x3e, 0x50, 0x43, 0xf9, 0xc3, 0x56, 0x41, 0xac, 0x53, 0x9b, + 0x6c, 0x05, 0xb2, 0x9a, 0xe2, 0xe0, 0x59, 0x57, 0x30, 0x32, 0xb6, 0x26, + 0x4e, 0x13, 0x25, 0xcd, 0xfa, 0x48, 0x70, 0x0f, 0x75, 0x55, 0x60, 0x11, + 0xf5, 0x3b, 0xd5, 0x5e, 0x5a, 0x3c, 0x8b, 0x5b, 0x0f, 0x0f, 0x62, 0x42, + 0x48, 0x61, 0x85, 0x8b, 0x10, 0xf4, 0xc1, 0x88, 0xbf, 0x7f, 0x5f, 0x8a, + 0xc2, 0xd7, 0xcd, 0x2b, 0x94, 0x5c, 0x1f, 0x34, 0x4a, 0x08, 0xaf, 0xeb, + 0xae, 0x89, 0xa8, 0x48, 0x75, 0x55, 0x95, 0x1d, 0xbb, 0xc0, 0x9a, 0x01, + 0xb9, 0xf4, 0x03, 0x22, 0x3e, 0xd4, 0xe6, 0x52, 0x30, 0x0d, 0x67, 0xb9, + 0xc0, 0x91, 0xfd, 0x2d, 0x4c, 0x30, 0x8e, 0xbd, 0x8c, 0xa5, 0x04, 0x91, + 0xbb, 0xa4, 0xab, 0x7f, 0x0f, 0xd8, 0x6f, 0xf0, 0x66, 0x00, 0xc9, 0xa3, + 0x5c, 0xf5, 0xb0, 0x8f, 0x83, 0xe6, 0x9c, 0x5a, 0xe6, 0xb6, 0xb9, 0xc5, + 0xbc, 0xbe, 0xe4, 0x02, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 33:65:50:08:79:ad:73:e2:30:b9:e0:1d:0d:7f:ac:91 + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com + Validity + Not Before: Nov 17 00:00:00 2006 GMT + Not After : Dec 30 23:59:59 2020 GMT + Subject: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2006 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:ac:a0:f0:fb:80:59:d4:9c:c7:a4:cf:9d:a1:59: + 73:09:10:45:0c:0d:2c:6e:68:f1:6c:5b:48:68:49: + 59:37:fc:0b:33:19:c2:77:7f:cc:10:2d:95:34:1c: + e6:eb:4d:09:a7:1c:d2:b8:c9:97:36:02:b7:89:d4: + 24:5f:06:c0:cc:44:94:94:8d:02:62:6f:eb:5a:dd: + 11:8d:28:9a:5c:84:90:10:7a:0d:bd:74:66:2f:6a: + 38:a0:e2:d5:54:44:eb:1d:07:9f:07:ba:6f:ee:e9: + fd:4e:0b:29:f5:3e:84:a0:01:f1:9c:ab:f8:1c:7e: + 89:a4:e8:a1:d8:71:65:0d:a3:51:7b:ee:bc:d2:22: + 60:0d:b9:5b:9d:df:ba:fc:51:5b:0b:af:98:b2:e9: + 2e:e9:04:e8:62:87:de:2b:c8:d7:4e:c1:4c:64:1e: + dd:cf:87:58:ba:4a:4f:ca:68:07:1d:1c:9d:4a:c6: + d5:2f:91:cc:7c:71:72:1c:c5:c0:67:eb:32:fd:c9: + 92:5c:94:da:85:c0:9b:bf:53:7d:2b:09:f4:8c:9d: + 91:1f:97:6a:52:cb:de:09:36:a4:77:d8:7b:87:50: + 44:d5:3e:6e:29:69:fb:39:49:26:1e:09:a5:80:7b: + 40:2d:eb:e8:27:85:c9:fe:61:fd:7e:e6:7c:97:1d: + d5:9d + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.thawte.com/cps + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 7B:5B:45:CF:AF:CE:CB:7A:FD:31:92:1A:6A:B6:F3:46:EB:57:48:50 + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.thawte.com/ThawtePremiumServerCA.crl + + Signature Algorithm: sha1WithRSAEncryption + 84:a8:4c:c9:3e:2a:bc:9a:e2:cc:8f:0b:b2:25:77:c4:61:89: + 89:63:5a:d4:a3:15:40:d4:fb:5e:3f:b4:43:ea:63:17:2b:6b: + 99:74:9e:09:a8:dd:d4:56:15:2e:7a:79:31:5f:63:96:53:1b: + 34:d9:15:ea:4f:6d:70:ca:be:f6:82:a9:ed:da:85:77:cc:76: + 1c:6a:81:0a:21:d8:41:99:7f:5e:2e:82:c1:e8:aa:f7:93:81: + 05:aa:92:b4:1f:b7:9a:c0:07:17:f5:cb:c6:b4:4c:0e:d7:56: + dc:71:20:74:38:d6:74:c6:d6:8f:6b:af:8b:8d:a0:6c:29:0b: + 61:e0 +-----BEGIN CERTIFICATE----- +MIIERTCCA66gAwIBAgIQM2VQCHmtc+IwueAdDX+skTANBgkqhkiG9w0BAQUFADCB +zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ +Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE +CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhh +d3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl +cnZlckB0aGF3dGUuY29tMB4XDTA2MTExNzAwMDAwMFoXDTIwMTIzMDIzNTk1OVow +gakxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwx0aGF3dGUsIEluYy4xKDAmBgNVBAsT +H0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xODA2BgNVBAsTLyhjKSAy +MDA2IHRoYXd0ZSwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYD +VQQDExZ0aGF3dGUgUHJpbWFyeSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEArKDw+4BZ1JzHpM+doVlzCRBFDA0sbmjxbFtIaElZN/wLMxnC +d3/MEC2VNBzm600JpxzSuMmXNgK3idQkXwbAzESUlI0CYm/rWt0RjSiaXISQEHoN +vXRmL2o4oOLVVETrHQefB7pv7un9Tgsp9T6EoAHxnKv4HH6JpOih2HFlDaNRe+68 +0iJgDblbnd+6/FFbC6+Ysuku6QToYofeK8jXTsFMZB7dz4dYukpPymgHHRydSsbV +L5HMfHFyHMXAZ+sy/cmSXJTahcCbv1N9Kwn0jJ2RH5dqUsveCTakd9h7h1BE1T5u +KWn7OUkmHgmlgHtALevoJ4XJ/mH9fuZ8lx3VnQIDAQABo4HCMIG/MA8GA1UdEwEB +/wQFMAMBAf8wOwYDVR0gBDQwMjAwBgRVHSAAMCgwJgYIKwYBBQUHAgEWGmh0dHBz +Oi8vd3d3LnRoYXd0ZS5jb20vY3BzMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +e1tFz6/Oy3r9MZIaarbzRutXSFAwQAYDVR0fBDkwNzA1oDOgMYYvaHR0cDovL2Ny +bC50aGF3dGUuY29tL1RoYXd0ZVByZW1pdW1TZXJ2ZXJDQS5jcmwwDQYJKoZIhvcN +AQEFBQADgYEAhKhMyT4qvJrizI8LsiV3xGGJiWNa1KMVQNT7Xj+0Q+pjFytrmXSe +Cajd1FYVLnp5MV9jllMbNNkV6k9tcMq+9oKp7dqFd8x2HGqBCiHYQZl/Xi6Cweiq +95OBBaqStB+3msAHF/XLxrRMDtdW3HEgdDjWdMbWj2uvi42gbCkLYeA= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_10[] = { + 0x30, 0x82, 0x04, 0x45, 0x30, 0x82, 0x03, 0xae, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x33, 0x65, 0x50, 0x08, 0x79, 0xad, 0x73, 0xe2, 0x30, + 0xb9, 0xe0, 0x1d, 0x0d, 0x7f, 0xac, 0x91, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, + 0xce, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x5a, 0x41, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, + 0x0c, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x43, 0x61, 0x70, + 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, + 0x43, 0x61, 0x70, 0x65, 0x20, 0x54, 0x6f, 0x77, 0x6e, 0x31, 0x1d, 0x30, + 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x54, 0x68, 0x61, 0x77, + 0x74, 0x65, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e, + 0x67, 0x20, 0x63, 0x63, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x1f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x21, + 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x54, 0x68, 0x61, + 0x77, 0x74, 0x65, 0x20, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x20, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x31, 0x28, 0x30, + 0x26, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, + 0x16, 0x19, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x2d, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x40, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x31, + 0x37, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, + 0x31, 0x32, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, + 0x81, 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x1f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, + 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, + 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, + 0x30, 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, + 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, + 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, + 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xac, 0xa0, 0xf0, 0xfb, 0x80, 0x59, 0xd4, 0x9c, 0xc7, 0xa4, 0xcf, 0x9d, + 0xa1, 0x59, 0x73, 0x09, 0x10, 0x45, 0x0c, 0x0d, 0x2c, 0x6e, 0x68, 0xf1, + 0x6c, 0x5b, 0x48, 0x68, 0x49, 0x59, 0x37, 0xfc, 0x0b, 0x33, 0x19, 0xc2, + 0x77, 0x7f, 0xcc, 0x10, 0x2d, 0x95, 0x34, 0x1c, 0xe6, 0xeb, 0x4d, 0x09, + 0xa7, 0x1c, 0xd2, 0xb8, 0xc9, 0x97, 0x36, 0x02, 0xb7, 0x89, 0xd4, 0x24, + 0x5f, 0x06, 0xc0, 0xcc, 0x44, 0x94, 0x94, 0x8d, 0x02, 0x62, 0x6f, 0xeb, + 0x5a, 0xdd, 0x11, 0x8d, 0x28, 0x9a, 0x5c, 0x84, 0x90, 0x10, 0x7a, 0x0d, + 0xbd, 0x74, 0x66, 0x2f, 0x6a, 0x38, 0xa0, 0xe2, 0xd5, 0x54, 0x44, 0xeb, + 0x1d, 0x07, 0x9f, 0x07, 0xba, 0x6f, 0xee, 0xe9, 0xfd, 0x4e, 0x0b, 0x29, + 0xf5, 0x3e, 0x84, 0xa0, 0x01, 0xf1, 0x9c, 0xab, 0xf8, 0x1c, 0x7e, 0x89, + 0xa4, 0xe8, 0xa1, 0xd8, 0x71, 0x65, 0x0d, 0xa3, 0x51, 0x7b, 0xee, 0xbc, + 0xd2, 0x22, 0x60, 0x0d, 0xb9, 0x5b, 0x9d, 0xdf, 0xba, 0xfc, 0x51, 0x5b, + 0x0b, 0xaf, 0x98, 0xb2, 0xe9, 0x2e, 0xe9, 0x04, 0xe8, 0x62, 0x87, 0xde, + 0x2b, 0xc8, 0xd7, 0x4e, 0xc1, 0x4c, 0x64, 0x1e, 0xdd, 0xcf, 0x87, 0x58, + 0xba, 0x4a, 0x4f, 0xca, 0x68, 0x07, 0x1d, 0x1c, 0x9d, 0x4a, 0xc6, 0xd5, + 0x2f, 0x91, 0xcc, 0x7c, 0x71, 0x72, 0x1c, 0xc5, 0xc0, 0x67, 0xeb, 0x32, + 0xfd, 0xc9, 0x92, 0x5c, 0x94, 0xda, 0x85, 0xc0, 0x9b, 0xbf, 0x53, 0x7d, + 0x2b, 0x09, 0xf4, 0x8c, 0x9d, 0x91, 0x1f, 0x97, 0x6a, 0x52, 0xcb, 0xde, + 0x09, 0x36, 0xa4, 0x77, 0xd8, 0x7b, 0x87, 0x50, 0x44, 0xd5, 0x3e, 0x6e, + 0x29, 0x69, 0xfb, 0x39, 0x49, 0x26, 0x1e, 0x09, 0xa5, 0x80, 0x7b, 0x40, + 0x2d, 0xeb, 0xe8, 0x27, 0x85, 0xc9, 0xfe, 0x61, 0xfd, 0x7e, 0xe6, 0x7c, + 0x97, 0x1d, 0xd5, 0x9d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xc2, + 0x30, 0x81, 0xbf, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x3b, 0x06, 0x03, + 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, 0x04, 0x55, + 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, + 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x7b, 0x5b, 0x45, 0xcf, 0xaf, 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, + 0x6a, 0xb6, 0xf3, 0x46, 0xeb, 0x57, 0x48, 0x50, 0x30, 0x40, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x39, 0x30, 0x37, 0x30, 0x35, 0xa0, 0x33, 0xa0, + 0x31, 0x86, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x72, 0x65, 0x6d, 0x69, + 0x75, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x41, 0x2e, 0x63, + 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x84, 0xa8, 0x4c, + 0xc9, 0x3e, 0x2a, 0xbc, 0x9a, 0xe2, 0xcc, 0x8f, 0x0b, 0xb2, 0x25, 0x77, + 0xc4, 0x61, 0x89, 0x89, 0x63, 0x5a, 0xd4, 0xa3, 0x15, 0x40, 0xd4, 0xfb, + 0x5e, 0x3f, 0xb4, 0x43, 0xea, 0x63, 0x17, 0x2b, 0x6b, 0x99, 0x74, 0x9e, + 0x09, 0xa8, 0xdd, 0xd4, 0x56, 0x15, 0x2e, 0x7a, 0x79, 0x31, 0x5f, 0x63, + 0x96, 0x53, 0x1b, 0x34, 0xd9, 0x15, 0xea, 0x4f, 0x6d, 0x70, 0xca, 0xbe, + 0xf6, 0x82, 0xa9, 0xed, 0xda, 0x85, 0x77, 0xcc, 0x76, 0x1c, 0x6a, 0x81, + 0x0a, 0x21, 0xd8, 0x41, 0x99, 0x7f, 0x5e, 0x2e, 0x82, 0xc1, 0xe8, 0xaa, + 0xf7, 0x93, 0x81, 0x05, 0xaa, 0x92, 0xb4, 0x1f, 0xb7, 0x9a, 0xc0, 0x07, + 0x17, 0xf5, 0xcb, 0xc6, 0xb4, 0x4c, 0x0e, 0xd7, 0x56, 0xdc, 0x71, 0x20, + 0x74, 0x38, 0xd6, 0x74, 0xc6, 0xd6, 0x8f, 0x6b, 0xaf, 0x8b, 0x8d, 0xa0, + 0x6c, 0x29, 0x0b, 0x61, 0xe0, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 04:00:00:00:00:01:44:4e:f0:36:31 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA + Validity + Not Before: Feb 20 10:00:00 2014 GMT + Not After : Feb 20 10:00:00 2024 GMT + Subject: C=BE, O=GlobalSign nv-sa, CN=AlphaSSL CA - SHA256 - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:da:01:ec:e4:ec:73:60:fb:7e:8f:6a:b7:c6:17: + e3:92:64:32:d4:ac:00:d9:a2:0f:b9:ed:ee:6b:8a: + 86:ca:92:67:d9:74:d7:5d:47:02:3c:8f:40:d6:9e: + 6d:14:cd:c3:da:29:39:a7:0f:05:0a:68:a2:66:1a: + 1e:c4:b2:8b:76:58:e5:ab:5d:1d:8f:40:b3:39:8b: + ef:1e:83:7d:22:d0:e3:a9:00:2e:ec:53:cf:62:19: + 85:44:28:4c:c0:27:cb:7b:0e:ec:10:64:00:10:a4: + 05:cc:a0:72:be:41:6c:31:5b:48:e4:b1:ec:b9:23: + eb:55:4d:d0:7d:62:4a:a5:b4:a5:a4:59:85:c5:25: + 91:a6:fe:a6:09:9f:06:10:6d:8f:81:0c:64:40:5e: + 73:00:9a:e0:2e:65:98:54:10:00:70:98:c8:e1:ed: + 34:5f:d8:9c:c7:0d:c0:d6:23:59:45:fc:fe:55:7a: + 86:ee:94:60:22:f1:ae:d1:e6:55:46:f6:99:c5:1b: + 08:74:5f:ac:b0:64:84:8f:89:38:1c:a1:a7:90:21: + 4f:02:6e:bd:e0:61:67:d4:f8:42:87:0f:0a:f7:c9: + 04:6d:2a:a9:2f:ef:42:a5:df:dd:a3:53:db:98:1e: + 81:f9:9a:72:7b:5a:de:4f:3e:7f:a2:58:a0:e2:17: + ad:67 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Subject Key Identifier: + F5:CD:D5:3C:08:50:F9:6A:4F:3A:B7:97:DA:56:83:E6:69:D2:68:F7 + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.alphassl.com/repository/ + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.globalsign.net/root.crl + + Authority Information Access: + OCSP - URI:http://ocsp.globalsign.com/rootr1 + + X509v3 Authority Key Identifier: + keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B + + Signature Algorithm: sha256WithRSAEncryption + 60:40:68:16:47:e7:16:8d:db:5c:a1:56:2a:cb:f4:5c:9b:b0: + 1e:a2:4b:f5:cb:02:3f:f8:0b:a1:f2:a7:42:d4:b7:4c:eb:e3: + 66:80:f3:25:43:78:2e:1b:17:56:07:52:18:cb:d1:a8:ec:e6: + fb:73:3e:a4:62:8c:80:b4:d2:c5:12:73:a3:d3:fa:02:38:be: + 63:3d:84:b8:99:c1:f1:ba:f7:9f:c3:40:d1:58:18:53:c1:62: + dd:af:18:42:7f:34:4e:c5:43:d5:71:b0:30:00:c7:e3:90:ae: + 3f:57:86:97:ce:ea:0c:12:8e:22:70:e3:66:a7:54:7f:2e:28: + cb:d4:54:d0:b3:1e:62:67:08:f9:27:e1:cb:e3:66:b8:24:1b: + 89:6a:89:44:65:f2:d9:4c:d2:58:1c:8c:4e:c0:95:a1:d4:ef: + 67:2f:38:20:e8:2e:ff:96:51:f0:ba:d8:3d:92:70:47:65:1c: + 9e:73:72:b4:60:0c:5c:e2:d1:73:76:e0:af:4e:e2:e5:37:a5: + 45:2f:8a:23:3e:87:c7:30:e6:31:38:7c:f4:dd:52:ca:f3:53: + 04:25:57:56:66:94:e8:0b:ee:e6:03:14:4e:ee:fd:6d:94:64: + 9e:5e:ce:79:d4:b2:a6:cf:40:b1:44:a8:3e:87:19:5e:e9:f8: + 21:16:59:53 +-----BEGIN CERTIFICATE----- +MIIETTCCAzWgAwIBAgILBAAAAAABRE7wNjEwDQYJKoZIhvcNAQELBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw +MDBaFw0yNDAyMjAxMDAwMDBaMEwxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMSIwIAYDVQQDExlBbHBoYVNTTCBDQSAtIFNIQTI1NiAtIEcy +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2gHs5OxzYPt+j2q3xhfj +kmQy1KwA2aIPue3ua4qGypJn2XTXXUcCPI9A1p5tFM3D2ik5pw8FCmiiZhoexLKL +dljlq10dj0CzOYvvHoN9ItDjqQAu7FPPYhmFRChMwCfLew7sEGQAEKQFzKByvkFs +MVtI5LHsuSPrVU3QfWJKpbSlpFmFxSWRpv6mCZ8GEG2PgQxkQF5zAJrgLmWYVBAA +cJjI4e00X9icxw3A1iNZRfz+VXqG7pRgIvGu0eZVRvaZxRsIdF+ssGSEj4k4HKGn +kCFPAm694GFn1PhChw8K98kEbSqpL+9Cpd/do1PbmB6B+Zpye1reTz5/olig4het +ZwIDAQABo4IBIzCCAR8wDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8C +AQAwHQYDVR0OBBYEFPXN1TwIUPlqTzq3l9pWg+Zp0mj3MEUGA1UdIAQ+MDwwOgYE +VR0gADAyMDAGCCsGAQUFBwIBFiRodHRwczovL3d3dy5hbHBoYXNzbC5jb20vcmVw +b3NpdG9yeS8wMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5nbG9iYWxzaWdu +Lm5ldC9yb290LmNybDA9BggrBgEFBQcBAQQxMC8wLQYIKwYBBQUHMAGGIWh0dHA6 +Ly9vY3NwLmdsb2JhbHNpZ24uY29tL3Jvb3RyMTAfBgNVHSMEGDAWgBRge2YaRQ2X +yolQL30EzTSo//z9SzANBgkqhkiG9w0BAQsFAAOCAQEAYEBoFkfnFo3bXKFWKsv0 +XJuwHqJL9csCP/gLofKnQtS3TOvjZoDzJUN4LhsXVgdSGMvRqOzm+3M+pGKMgLTS +xRJzo9P6Aji+Yz2EuJnB8br3n8NA0VgYU8Fi3a8YQn80TsVD1XGwMADH45CuP1eG +l87qDBKOInDjZqdUfy4oy9RU0LMeYmcI+Sfhy+NmuCQbiWqJRGXy2UzSWByMTsCV +odTvZy84IOgu/5ZR8LrYPZJwR2UcnnNytGAMXOLRc3bgr07i5TelRS+KIz6HxzDm +MTh89N1SyvNTBCVXVmaU6Avu5gMUTu79bZRknl7OedSyps9AsUSoPocZXun4IRZZ +Uw== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_11[] = { + 0x30, 0x82, 0x04, 0x4d, 0x30, 0x82, 0x03, 0x35, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4e, 0xf0, + 0x36, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x07, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, + 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, + 0x17, 0x0d, 0x31, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x4c, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, + 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, + 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x41, + 0x6c, 0x70, 0x68, 0x61, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, + 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x47, 0x32, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xda, 0x01, 0xec, + 0xe4, 0xec, 0x73, 0x60, 0xfb, 0x7e, 0x8f, 0x6a, 0xb7, 0xc6, 0x17, 0xe3, + 0x92, 0x64, 0x32, 0xd4, 0xac, 0x00, 0xd9, 0xa2, 0x0f, 0xb9, 0xed, 0xee, + 0x6b, 0x8a, 0x86, 0xca, 0x92, 0x67, 0xd9, 0x74, 0xd7, 0x5d, 0x47, 0x02, + 0x3c, 0x8f, 0x40, 0xd6, 0x9e, 0x6d, 0x14, 0xcd, 0xc3, 0xda, 0x29, 0x39, + 0xa7, 0x0f, 0x05, 0x0a, 0x68, 0xa2, 0x66, 0x1a, 0x1e, 0xc4, 0xb2, 0x8b, + 0x76, 0x58, 0xe5, 0xab, 0x5d, 0x1d, 0x8f, 0x40, 0xb3, 0x39, 0x8b, 0xef, + 0x1e, 0x83, 0x7d, 0x22, 0xd0, 0xe3, 0xa9, 0x00, 0x2e, 0xec, 0x53, 0xcf, + 0x62, 0x19, 0x85, 0x44, 0x28, 0x4c, 0xc0, 0x27, 0xcb, 0x7b, 0x0e, 0xec, + 0x10, 0x64, 0x00, 0x10, 0xa4, 0x05, 0xcc, 0xa0, 0x72, 0xbe, 0x41, 0x6c, + 0x31, 0x5b, 0x48, 0xe4, 0xb1, 0xec, 0xb9, 0x23, 0xeb, 0x55, 0x4d, 0xd0, + 0x7d, 0x62, 0x4a, 0xa5, 0xb4, 0xa5, 0xa4, 0x59, 0x85, 0xc5, 0x25, 0x91, + 0xa6, 0xfe, 0xa6, 0x09, 0x9f, 0x06, 0x10, 0x6d, 0x8f, 0x81, 0x0c, 0x64, + 0x40, 0x5e, 0x73, 0x00, 0x9a, 0xe0, 0x2e, 0x65, 0x98, 0x54, 0x10, 0x00, + 0x70, 0x98, 0xc8, 0xe1, 0xed, 0x34, 0x5f, 0xd8, 0x9c, 0xc7, 0x0d, 0xc0, + 0xd6, 0x23, 0x59, 0x45, 0xfc, 0xfe, 0x55, 0x7a, 0x86, 0xee, 0x94, 0x60, + 0x22, 0xf1, 0xae, 0xd1, 0xe6, 0x55, 0x46, 0xf6, 0x99, 0xc5, 0x1b, 0x08, + 0x74, 0x5f, 0xac, 0xb0, 0x64, 0x84, 0x8f, 0x89, 0x38, 0x1c, 0xa1, 0xa7, + 0x90, 0x21, 0x4f, 0x02, 0x6e, 0xbd, 0xe0, 0x61, 0x67, 0xd4, 0xf8, 0x42, + 0x87, 0x0f, 0x0a, 0xf7, 0xc9, 0x04, 0x6d, 0x2a, 0xa9, 0x2f, 0xef, 0x42, + 0xa5, 0xdf, 0xdd, 0xa3, 0x53, 0xdb, 0x98, 0x1e, 0x81, 0xf9, 0x9a, 0x72, + 0x7b, 0x5a, 0xde, 0x4f, 0x3e, 0x7f, 0xa2, 0x58, 0xa0, 0xe2, 0x17, 0xad, + 0x67, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x23, 0x30, 0x82, + 0x01, 0x1f, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, + 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0xf5, 0xcd, 0xd5, 0x3c, 0x08, 0x50, 0xf9, 0x6a, 0x4f, 0x3a, 0xb7, + 0x97, 0xda, 0x56, 0x83, 0xe6, 0x69, 0xd2, 0x68, 0xf7, 0x30, 0x45, 0x06, + 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3e, 0x30, 0x3c, 0x30, 0x3a, 0x06, 0x04, + 0x55, 0x1d, 0x20, 0x00, 0x30, 0x32, 0x30, 0x30, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x24, 0x68, 0x74, 0x74, 0x70, + 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x30, 0x33, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0, + 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, + 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, + 0x6c, 0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, + 0x01, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, + 0x6f, 0x74, 0x72, 0x31, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x18, 0x30, 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, 0x1a, 0x45, 0x0d, 0x97, + 0xca, 0x89, 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, 0xa8, 0xff, 0xfc, 0xfd, + 0x4b, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x60, 0x40, 0x68, + 0x16, 0x47, 0xe7, 0x16, 0x8d, 0xdb, 0x5c, 0xa1, 0x56, 0x2a, 0xcb, 0xf4, + 0x5c, 0x9b, 0xb0, 0x1e, 0xa2, 0x4b, 0xf5, 0xcb, 0x02, 0x3f, 0xf8, 0x0b, + 0xa1, 0xf2, 0xa7, 0x42, 0xd4, 0xb7, 0x4c, 0xeb, 0xe3, 0x66, 0x80, 0xf3, + 0x25, 0x43, 0x78, 0x2e, 0x1b, 0x17, 0x56, 0x07, 0x52, 0x18, 0xcb, 0xd1, + 0xa8, 0xec, 0xe6, 0xfb, 0x73, 0x3e, 0xa4, 0x62, 0x8c, 0x80, 0xb4, 0xd2, + 0xc5, 0x12, 0x73, 0xa3, 0xd3, 0xfa, 0x02, 0x38, 0xbe, 0x63, 0x3d, 0x84, + 0xb8, 0x99, 0xc1, 0xf1, 0xba, 0xf7, 0x9f, 0xc3, 0x40, 0xd1, 0x58, 0x18, + 0x53, 0xc1, 0x62, 0xdd, 0xaf, 0x18, 0x42, 0x7f, 0x34, 0x4e, 0xc5, 0x43, + 0xd5, 0x71, 0xb0, 0x30, 0x00, 0xc7, 0xe3, 0x90, 0xae, 0x3f, 0x57, 0x86, + 0x97, 0xce, 0xea, 0x0c, 0x12, 0x8e, 0x22, 0x70, 0xe3, 0x66, 0xa7, 0x54, + 0x7f, 0x2e, 0x28, 0xcb, 0xd4, 0x54, 0xd0, 0xb3, 0x1e, 0x62, 0x67, 0x08, + 0xf9, 0x27, 0xe1, 0xcb, 0xe3, 0x66, 0xb8, 0x24, 0x1b, 0x89, 0x6a, 0x89, + 0x44, 0x65, 0xf2, 0xd9, 0x4c, 0xd2, 0x58, 0x1c, 0x8c, 0x4e, 0xc0, 0x95, + 0xa1, 0xd4, 0xef, 0x67, 0x2f, 0x38, 0x20, 0xe8, 0x2e, 0xff, 0x96, 0x51, + 0xf0, 0xba, 0xd8, 0x3d, 0x92, 0x70, 0x47, 0x65, 0x1c, 0x9e, 0x73, 0x72, + 0xb4, 0x60, 0x0c, 0x5c, 0xe2, 0xd1, 0x73, 0x76, 0xe0, 0xaf, 0x4e, 0xe2, + 0xe5, 0x37, 0xa5, 0x45, 0x2f, 0x8a, 0x23, 0x3e, 0x87, 0xc7, 0x30, 0xe6, + 0x31, 0x38, 0x7c, 0xf4, 0xdd, 0x52, 0xca, 0xf3, 0x53, 0x04, 0x25, 0x57, + 0x56, 0x66, 0x94, 0xe8, 0x0b, 0xee, 0xe6, 0x03, 0x14, 0x4e, 0xee, 0xfd, + 0x6d, 0x94, 0x64, 0x9e, 0x5e, 0xce, 0x79, 0xd4, 0xb2, 0xa6, 0xcf, 0x40, + 0xb1, 0x44, 0xa8, 0x3e, 0x87, 0x19, 0x5e, 0xe9, 0xf8, 0x21, 0x16, 0x59, + 0x53, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 146031 (0x23a6f) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Validity + Not Before: Nov 5 21:36:50 2013 GMT + Not After : May 20 21:36:50 2022 GMT + Subject: C=US, O=GeoTrust Inc., CN=GeoTrust SSL CA - G3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:e3:be:7e:0a:86:a3:cf:6b:6d:3d:2b:a1:97:ad: + 49:24:4d:d7:77:b9:34:79:08:a5:9e:a2:9e:de:47: + 12:92:3d:7e:ea:19:86:b1:e8:4f:3d:5f:f7:d0:a7: + 77:9a:5b:1f:0a:03:b5:19:53:db:a5:21:94:69:63: + 9d:6a:4c:91:0c:10:47:be:11:fa:6c:86:25:b7:ab: + 04:68:42:38:09:65:f0:14:da:19:9e:fa:6b:0b:ab: + 62:ef:8d:a7:ef:63:70:23:a8:af:81:f3:d1:6e:88: + 67:53:ec:12:a4:29:75:8a:a7:f2:57:3d:a2:83:98: + 97:f2:0a:7d:d4:e7:43:6e:30:78:62:22:59:59:b8: + 71:27:45:aa:0f:66:c6:55:3f:fa:32:17:2b:31:8f: + 46:a0:fa:69:14:7c:9d:9f:5a:e2:eb:33:4e:10:a6: + b3:ed:77:63:d8:c3:9e:f4:dd:df:79:9a:7a:d4:ee: + de:dd:9a:cc:c3:b7:a9:5d:cc:11:3a:07:bb:6f:97: + a4:01:23:47:95:1f:a3:77:fa:58:92:c6:c7:d0:bd: + cf:93:18:42:b7:7e:f7:9e:65:ea:d5:3b:ca:ed:ac: + c5:70:a1:fe:d4:10:9a:f0:12:04:44:ac:1a:5b:78: + 50:45:57:4c:6f:bd:80:cb:81:5c:2d:b3:bc:76:a1: + 1e:65 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Authority Key Identifier: + keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + + X509v3 Subject Key Identifier: + D2:6F:F7:96:F4:85:3F:72:3C:30:7D:23:DA:85:78:9B:A3:7C:5A:7C + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 CRL Distribution Points: + + Full Name: + URI:http://g1.symcb.com/crls/gtglobal.crl + + Authority Information Access: + OCSP - URI:http://g2.symcb.com + + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: http://www.geotrust.com/resources/cps + + X509v3 Subject Alternative Name: + DirName:/CN=SymantecPKI-1-539 + Signature Algorithm: sha256WithRSAEncryption + a0:d4:f7:2c:fb:74:0b:7f:64:f1:cd:43:6a:9f:62:53:1c:02: + 7c:98:90:a2:ee:4f:68:d4:20:1a:73:12:3e:77:b3:50:eb:72: + bc:ee:88:be:7f:17:ea:77:8f:83:61:95:4f:84:a1:cb:32:4f: + 6c:21:be:d2:69:96:7d:63:bd:dc:2b:a8:1f:d0:13:84:70:fe: + f6:35:95:89:f9:a6:77:b0:46:c8:bb:b7:13:f5:c9:60:69:d6: + 4c:fe:d2:8e:ef:d3:60:c1:80:80:e1:e7:fb:8b:6f:21:79:4a: + e0:dc:a9:1b:c1:b7:fb:c3:49:59:5c:b5:77:07:44:d4:97:fc: + 49:00:89:6f:06:4e:01:70:19:ac:2f:11:c0:e2:e6:0f:2f:86: + 4b:8d:7b:c3:b9:a7:2e:f4:f1:ac:16:3e:39:49:51:9e:17:4b: + 4f:10:3a:5b:a5:a8:92:6f:fd:fa:d6:0b:03:4d:47:56:57:19: + f3:cb:6b:f5:f3:d6:cf:b0:f5:f5:a3:11:d2:20:53:13:34:37: + 05:2c:43:5a:63:df:8d:40:d6:85:1e:51:e9:51:17:1e:03:56: + c9:f1:30:ad:e7:9b:11:a2:b9:d0:31:81:9b:68:b1:d9:e8:f3: + e6:94:7e:c7:ae:13:2f:87:ed:d0:25:b0:68:f9:de:08:5a:f3: + 29:cc:d4:92 +-----BEGIN CERTIFICATE----- +MIIETzCCAzegAwIBAgIDAjpvMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMTMxMTA1MjEzNjUwWhcNMjIwNTIwMjEzNjUwWjBEMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3Qg +U1NMIENBIC0gRzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDjvn4K +hqPPa209K6GXrUkkTdd3uTR5CKWeop7eRxKSPX7qGYax6E89X/fQp3eaWx8KA7UZ +U9ulIZRpY51qTJEMEEe+EfpshiW3qwRoQjgJZfAU2hme+msLq2LvjafvY3AjqK+B +89FuiGdT7BKkKXWKp/JXPaKDmJfyCn3U50NuMHhiIllZuHEnRaoPZsZVP/oyFysx +j0ag+mkUfJ2fWuLrM04QprPtd2PYw5703d95mnrU7t7dmszDt6ldzBE6B7tvl6QB +I0eVH6N3+liSxsfQvc+TGEK3fveeZerVO8rtrMVwof7UEJrwEgRErBpbeFBFV0xv +vYDLgVwts7x2oR5lAgMBAAGjggFKMIIBRjAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjAdBgNVHQ4EFgQU0m/3lvSFP3I8MH0j2oV4m6N8WnwwEgYDVR0T +AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwNgYDVR0fBC8wLTAroCmgJ4Yl +aHR0cDovL2cxLnN5bWNiLmNvbS9jcmxzL2d0Z2xvYmFsLmNybDAvBggrBgEFBQcB +AQQjMCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly9nMi5zeW1jYi5jb20wTAYDVR0gBEUw +QzBBBgpghkgBhvhFAQc2MDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuZ2VvdHJ1 +c3QuY29tL3Jlc291cmNlcy9jcHMwKQYDVR0RBCIwIKQeMBwxGjAYBgNVBAMTEVN5 +bWFudGVjUEtJLTEtNTM5MA0GCSqGSIb3DQEBCwUAA4IBAQCg1Pcs+3QLf2TxzUNq +n2JTHAJ8mJCi7k9o1CAacxI+d7NQ63K87oi+fxfqd4+DYZVPhKHLMk9sIb7SaZZ9 +Y73cK6gf0BOEcP72NZWJ+aZ3sEbIu7cT9clgadZM/tKO79NgwYCA4ef7i28heUrg +3Kkbwbf7w0lZXLV3B0TUl/xJAIlvBk4BcBmsLxHA4uYPL4ZLjXvDuacu9PGsFj45 +SVGeF0tPEDpbpaiSb/361gsDTUdWVxnzy2v189bPsPX1oxHSIFMTNDcFLENaY9+N +QNaFHlHpURceA1bJ8TCt55sRornQMYGbaLHZ6PPmlH7HrhMvh+3QJbBo+d4IWvMp +zNSS +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_12[] = { + 0x30, 0x82, 0x04, 0x4f, 0x30, 0x82, 0x03, 0x37, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x6f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, + 0x31, 0x30, 0x35, 0x32, 0x31, 0x33, 0x36, 0x35, 0x30, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x31, 0x33, 0x36, 0x35, 0x30, + 0x5a, 0x30, 0x44, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x14, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, + 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, + 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe3, 0xbe, 0x7e, 0x0a, + 0x86, 0xa3, 0xcf, 0x6b, 0x6d, 0x3d, 0x2b, 0xa1, 0x97, 0xad, 0x49, 0x24, + 0x4d, 0xd7, 0x77, 0xb9, 0x34, 0x79, 0x08, 0xa5, 0x9e, 0xa2, 0x9e, 0xde, + 0x47, 0x12, 0x92, 0x3d, 0x7e, 0xea, 0x19, 0x86, 0xb1, 0xe8, 0x4f, 0x3d, + 0x5f, 0xf7, 0xd0, 0xa7, 0x77, 0x9a, 0x5b, 0x1f, 0x0a, 0x03, 0xb5, 0x19, + 0x53, 0xdb, 0xa5, 0x21, 0x94, 0x69, 0x63, 0x9d, 0x6a, 0x4c, 0x91, 0x0c, + 0x10, 0x47, 0xbe, 0x11, 0xfa, 0x6c, 0x86, 0x25, 0xb7, 0xab, 0x04, 0x68, + 0x42, 0x38, 0x09, 0x65, 0xf0, 0x14, 0xda, 0x19, 0x9e, 0xfa, 0x6b, 0x0b, + 0xab, 0x62, 0xef, 0x8d, 0xa7, 0xef, 0x63, 0x70, 0x23, 0xa8, 0xaf, 0x81, + 0xf3, 0xd1, 0x6e, 0x88, 0x67, 0x53, 0xec, 0x12, 0xa4, 0x29, 0x75, 0x8a, + 0xa7, 0xf2, 0x57, 0x3d, 0xa2, 0x83, 0x98, 0x97, 0xf2, 0x0a, 0x7d, 0xd4, + 0xe7, 0x43, 0x6e, 0x30, 0x78, 0x62, 0x22, 0x59, 0x59, 0xb8, 0x71, 0x27, + 0x45, 0xaa, 0x0f, 0x66, 0xc6, 0x55, 0x3f, 0xfa, 0x32, 0x17, 0x2b, 0x31, + 0x8f, 0x46, 0xa0, 0xfa, 0x69, 0x14, 0x7c, 0x9d, 0x9f, 0x5a, 0xe2, 0xeb, + 0x33, 0x4e, 0x10, 0xa6, 0xb3, 0xed, 0x77, 0x63, 0xd8, 0xc3, 0x9e, 0xf4, + 0xdd, 0xdf, 0x79, 0x9a, 0x7a, 0xd4, 0xee, 0xde, 0xdd, 0x9a, 0xcc, 0xc3, + 0xb7, 0xa9, 0x5d, 0xcc, 0x11, 0x3a, 0x07, 0xbb, 0x6f, 0x97, 0xa4, 0x01, + 0x23, 0x47, 0x95, 0x1f, 0xa3, 0x77, 0xfa, 0x58, 0x92, 0xc6, 0xc7, 0xd0, + 0xbd, 0xcf, 0x93, 0x18, 0x42, 0xb7, 0x7e, 0xf7, 0x9e, 0x65, 0xea, 0xd5, + 0x3b, 0xca, 0xed, 0xac, 0xc5, 0x70, 0xa1, 0xfe, 0xd4, 0x10, 0x9a, 0xf0, + 0x12, 0x04, 0x44, 0xac, 0x1a, 0x5b, 0x78, 0x50, 0x45, 0x57, 0x4c, 0x6f, + 0xbd, 0x80, 0xcb, 0x81, 0x5c, 0x2d, 0xb3, 0xbc, 0x76, 0xa1, 0x1e, 0x65, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x4a, 0x30, 0x82, 0x01, + 0x46, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, + 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xd2, 0x6f, 0xf7, + 0x96, 0xf4, 0x85, 0x3f, 0x72, 0x3c, 0x30, 0x7d, 0x23, 0xda, 0x85, 0x78, + 0x9b, 0xa3, 0x7c, 0x5a, 0x7c, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x36, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x2f, 0x30, 0x2d, 0x30, 0x2b, 0xa0, 0x29, 0xa0, 0x27, 0x86, 0x25, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x31, 0x2e, 0x73, 0x79, + 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, + 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, + 0x6c, 0x30, 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, + 0x01, 0x04, 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x67, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, + 0x43, 0x30, 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, + 0x01, 0x07, 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x29, 0x06, 0x03, + 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, + 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, + 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, + 0x35, 0x33, 0x39, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xa0, + 0xd4, 0xf7, 0x2c, 0xfb, 0x74, 0x0b, 0x7f, 0x64, 0xf1, 0xcd, 0x43, 0x6a, + 0x9f, 0x62, 0x53, 0x1c, 0x02, 0x7c, 0x98, 0x90, 0xa2, 0xee, 0x4f, 0x68, + 0xd4, 0x20, 0x1a, 0x73, 0x12, 0x3e, 0x77, 0xb3, 0x50, 0xeb, 0x72, 0xbc, + 0xee, 0x88, 0xbe, 0x7f, 0x17, 0xea, 0x77, 0x8f, 0x83, 0x61, 0x95, 0x4f, + 0x84, 0xa1, 0xcb, 0x32, 0x4f, 0x6c, 0x21, 0xbe, 0xd2, 0x69, 0x96, 0x7d, + 0x63, 0xbd, 0xdc, 0x2b, 0xa8, 0x1f, 0xd0, 0x13, 0x84, 0x70, 0xfe, 0xf6, + 0x35, 0x95, 0x89, 0xf9, 0xa6, 0x77, 0xb0, 0x46, 0xc8, 0xbb, 0xb7, 0x13, + 0xf5, 0xc9, 0x60, 0x69, 0xd6, 0x4c, 0xfe, 0xd2, 0x8e, 0xef, 0xd3, 0x60, + 0xc1, 0x80, 0x80, 0xe1, 0xe7, 0xfb, 0x8b, 0x6f, 0x21, 0x79, 0x4a, 0xe0, + 0xdc, 0xa9, 0x1b, 0xc1, 0xb7, 0xfb, 0xc3, 0x49, 0x59, 0x5c, 0xb5, 0x77, + 0x07, 0x44, 0xd4, 0x97, 0xfc, 0x49, 0x00, 0x89, 0x6f, 0x06, 0x4e, 0x01, + 0x70, 0x19, 0xac, 0x2f, 0x11, 0xc0, 0xe2, 0xe6, 0x0f, 0x2f, 0x86, 0x4b, + 0x8d, 0x7b, 0xc3, 0xb9, 0xa7, 0x2e, 0xf4, 0xf1, 0xac, 0x16, 0x3e, 0x39, + 0x49, 0x51, 0x9e, 0x17, 0x4b, 0x4f, 0x10, 0x3a, 0x5b, 0xa5, 0xa8, 0x92, + 0x6f, 0xfd, 0xfa, 0xd6, 0x0b, 0x03, 0x4d, 0x47, 0x56, 0x57, 0x19, 0xf3, + 0xcb, 0x6b, 0xf5, 0xf3, 0xd6, 0xcf, 0xb0, 0xf5, 0xf5, 0xa3, 0x11, 0xd2, + 0x20, 0x53, 0x13, 0x34, 0x37, 0x05, 0x2c, 0x43, 0x5a, 0x63, 0xdf, 0x8d, + 0x40, 0xd6, 0x85, 0x1e, 0x51, 0xe9, 0x51, 0x17, 0x1e, 0x03, 0x56, 0xc9, + 0xf1, 0x30, 0xad, 0xe7, 0x9b, 0x11, 0xa2, 0xb9, 0xd0, 0x31, 0x81, 0x9b, + 0x68, 0xb1, 0xd9, 0xe8, 0xf3, 0xe6, 0x94, 0x7e, 0xc7, 0xae, 0x13, 0x2f, + 0x87, 0xed, 0xd0, 0x25, 0xb0, 0x68, 0xf9, 0xde, 0x08, 0x5a, 0xf3, 0x29, + 0xcc, 0xd4, 0x92, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 146019 (0x23a63) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Validity + Not Before: Aug 27 20:40:40 2012 GMT + Not After : May 20 20:40:40 2022 GMT + Subject: C=US, O=GeoTrust Inc., CN=GeoTrust SSL CA - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:b9:27:f9:4f:d8:f6:b7:15:3f:8f:cd:ce:d6:8d: + 1c:6b:fd:7f:da:54:21:4e:03:d8:ca:d0:72:52:15: + b8:c9:82:5b:58:79:84:ff:24:72:6f:f2:69:7f:bc: + 96:d9:9a:7a:c3:3e:a9:cf:50:22:13:0e:86:19:db: + e8:49:ef:8b:e6:d6:47:f2:fd:73:45:08:ae:8f:ac: + 5e:b6:f8:9e:7c:f7:10:ff:92:43:66:ef:1c:d4:ee: + a1:46:88:11:89:49:79:7a:25:ce:4b:6a:f0:d7:1c: + 76:1a:29:3c:c9:e4:fd:1e:85:dc:e0:31:65:05:47: + 16:ac:0a:07:4b:2e:70:5e:6b:06:a7:6b:3a:6c:af: + 05:12:c4:b2:11:25:d6:3e:97:29:f0:83:6c:57:1c: + d8:a5:ef:cc:ec:fd:d6:12:f1:3f:db:40:b4:ae:0f: + 18:d3:c5:af:40:92:5d:07:5e:4e:fe:62:17:37:89: + e9:8b:74:26:a2:ed:b8:0a:e7:6c:15:5b:35:90:72: + dd:d8:4d:21:d4:40:23:5c:8f:ee:80:31:16:ab:68: + 55:f4:0e:3b:54:e9:04:4d:f0:cc:4e:81:5e:e9:6f: + 52:69:4e:be:a6:16:6d:42:f5:51:ff:e0:0b:56:3c: + 98:4f:73:8f:0e:6f:1a:23:f1:c9:c8:d9:df:bc:ec: + 52:d7 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Authority Key Identifier: + keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + + X509v3 Subject Key Identifier: + 11:4A:D0:73:39:D5:5B:69:08:5C:BA:3D:BF:64:9A:A8:8B:1C:55:BC + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.geotrust.com/crls/gtglobal.crl + + Authority Information Access: + OCSP - URI:http://ocsp.geotrust.com + + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: http://www.geotrust.com/resources/cps + + X509v3 Subject Alternative Name: + DirName:/CN=VeriSignMPKI-2-254 + Signature Algorithm: sha1WithRSAEncryption + 3c:e5:3d:5a:1b:a2:37:2a:e3:46:cf:36:96:18:3c:7b:f1:84: + c5:57:86:77:40:9d:35:f0:12:f0:78:18:fb:22:a4:de:98:4b: + 78:81:e6:4d:86:e3:91:0f:42:e3:b9:dc:a0:d6:ff:a9:f8:b1: + 79:97:99:d1:c3:6c:42:a5:92:94:e0:5d:0c:33:18:25:c9:2b: + 95:53:e0:e5:a9:0c:7d:47:fe:7f:51:31:44:5e:f7:2a:1e:35: + a2:94:32:f7:c9:ee:c0:b6:c6:9a:ac:de:99:21:6a:23:a0:38: + 64:ee:a3:c4:88:73:32:3b:50:ce:bf:ad:d3:75:1e:a6:f4:e9: + f9:42:6b:60:b2:dd:45:fd:5d:57:08:ce:2d:50:e6:12:32:16: + 13:8a:f2:94:a2:9b:47:a8:86:7f:d9:98:e5:f7:e5:76:74:64: + d8:91:bc:84:16:28:d8:25:44:30:7e:82:d8:ac:b1:e4:c0:e4: + 15:6c:db:b6:24:27:02:2a:01:12:85:ba:31:88:58:47:74:e3: + b8:d2:64:a6:c3:32:59:2e:29:4b:45:f1:5b:89:49:2e:82:9a: + c6:18:15:44:d0:2e:64:01:15:68:38:f9:f6:f9:66:03:0c:55: + 1b:9d:bf:00:40:ae:f0:48:27:4c:e0:80:5e:2d:b9:2a:15:7a: + bc:66:f8:35 +-----BEGIN CERTIFICATE----- +MIIEWTCCA0GgAwIBAgIDAjpjMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMTIwODI3MjA0MDQwWhcNMjIwNTIwMjA0MDQwWjBEMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3Qg +U1NMIENBIC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC5J/lP +2Pa3FT+Pzc7WjRxr/X/aVCFOA9jK0HJSFbjJgltYeYT/JHJv8ml/vJbZmnrDPqnP +UCITDoYZ2+hJ74vm1kfy/XNFCK6PrF62+J589xD/kkNm7xzU7qFGiBGJSXl6Jc5L +avDXHHYaKTzJ5P0ehdzgMWUFRxasCgdLLnBeawanazpsrwUSxLIRJdY+lynwg2xX +HNil78zs/dYS8T/bQLSuDxjTxa9Akl0HXk7+Yhc3iemLdCai7bgK52wVWzWQct3Y +TSHUQCNcj+6AMRaraFX0DjtU6QRN8MxOgV7pb1JpTr6mFm1C9VH/4AtWPJhPc48O +bxoj8cnI2d+87FLXAgMBAAGjggFUMIIBUDAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjAdBgNVHQ4EFgQUEUrQcznVW2kIXLo9v2SaqIscVbwwEgYDVR0T +AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwOgYDVR0fBDMwMTAvoC2gK4Yp +aHR0cDovL2NybC5nZW90cnVzdC5jb20vY3Jscy9ndGdsb2JhbC5jcmwwNAYIKwYB +BQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5nZW90cnVzdC5jb20w +TAYDVR0gBEUwQzBBBgpghkgBhvhFAQc2MDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93 +d3cuZ2VvdHJ1c3QuY29tL3Jlc291cmNlcy9jcHMwKgYDVR0RBCMwIaQfMB0xGzAZ +BgNVBAMTElZlcmlTaWduTVBLSS0yLTI1NDANBgkqhkiG9w0BAQUFAAOCAQEAPOU9 +WhuiNyrjRs82lhg8e/GExVeGd0CdNfAS8HgY+yKk3phLeIHmTYbjkQ9C47ncoNb/ +qfixeZeZ0cNsQqWSlOBdDDMYJckrlVPg5akMfUf+f1ExRF73Kh41opQy98nuwLbG +mqzemSFqI6A4ZO6jxIhzMjtQzr+t03UepvTp+UJrYLLdRf1dVwjOLVDmEjIWE4ry +lKKbR6iGf9mY5ffldnRk2JG8hBYo2CVEMH6C2Kyx5MDkFWzbtiQnAioBEoW6MYhY +R3TjuNJkpsMyWS4pS0XxW4lJLoKaxhgVRNAuZAEVaDj59vlmAwxVG52/AECu8Egn +TOCAXi25KhV6vGb4NQ== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_13[] = { + 0x30, 0x82, 0x04, 0x59, 0x30, 0x82, 0x03, 0x41, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x63, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x32, 0x30, + 0x38, 0x32, 0x37, 0x32, 0x30, 0x34, 0x30, 0x34, 0x30, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x30, 0x34, 0x30, 0x34, 0x30, + 0x5a, 0x30, 0x44, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x14, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, + 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, + 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb9, 0x27, 0xf9, 0x4f, + 0xd8, 0xf6, 0xb7, 0x15, 0x3f, 0x8f, 0xcd, 0xce, 0xd6, 0x8d, 0x1c, 0x6b, + 0xfd, 0x7f, 0xda, 0x54, 0x21, 0x4e, 0x03, 0xd8, 0xca, 0xd0, 0x72, 0x52, + 0x15, 0xb8, 0xc9, 0x82, 0x5b, 0x58, 0x79, 0x84, 0xff, 0x24, 0x72, 0x6f, + 0xf2, 0x69, 0x7f, 0xbc, 0x96, 0xd9, 0x9a, 0x7a, 0xc3, 0x3e, 0xa9, 0xcf, + 0x50, 0x22, 0x13, 0x0e, 0x86, 0x19, 0xdb, 0xe8, 0x49, 0xef, 0x8b, 0xe6, + 0xd6, 0x47, 0xf2, 0xfd, 0x73, 0x45, 0x08, 0xae, 0x8f, 0xac, 0x5e, 0xb6, + 0xf8, 0x9e, 0x7c, 0xf7, 0x10, 0xff, 0x92, 0x43, 0x66, 0xef, 0x1c, 0xd4, + 0xee, 0xa1, 0x46, 0x88, 0x11, 0x89, 0x49, 0x79, 0x7a, 0x25, 0xce, 0x4b, + 0x6a, 0xf0, 0xd7, 0x1c, 0x76, 0x1a, 0x29, 0x3c, 0xc9, 0xe4, 0xfd, 0x1e, + 0x85, 0xdc, 0xe0, 0x31, 0x65, 0x05, 0x47, 0x16, 0xac, 0x0a, 0x07, 0x4b, + 0x2e, 0x70, 0x5e, 0x6b, 0x06, 0xa7, 0x6b, 0x3a, 0x6c, 0xaf, 0x05, 0x12, + 0xc4, 0xb2, 0x11, 0x25, 0xd6, 0x3e, 0x97, 0x29, 0xf0, 0x83, 0x6c, 0x57, + 0x1c, 0xd8, 0xa5, 0xef, 0xcc, 0xec, 0xfd, 0xd6, 0x12, 0xf1, 0x3f, 0xdb, + 0x40, 0xb4, 0xae, 0x0f, 0x18, 0xd3, 0xc5, 0xaf, 0x40, 0x92, 0x5d, 0x07, + 0x5e, 0x4e, 0xfe, 0x62, 0x17, 0x37, 0x89, 0xe9, 0x8b, 0x74, 0x26, 0xa2, + 0xed, 0xb8, 0x0a, 0xe7, 0x6c, 0x15, 0x5b, 0x35, 0x90, 0x72, 0xdd, 0xd8, + 0x4d, 0x21, 0xd4, 0x40, 0x23, 0x5c, 0x8f, 0xee, 0x80, 0x31, 0x16, 0xab, + 0x68, 0x55, 0xf4, 0x0e, 0x3b, 0x54, 0xe9, 0x04, 0x4d, 0xf0, 0xcc, 0x4e, + 0x81, 0x5e, 0xe9, 0x6f, 0x52, 0x69, 0x4e, 0xbe, 0xa6, 0x16, 0x6d, 0x42, + 0xf5, 0x51, 0xff, 0xe0, 0x0b, 0x56, 0x3c, 0x98, 0x4f, 0x73, 0x8f, 0x0e, + 0x6f, 0x1a, 0x23, 0xf1, 0xc9, 0xc8, 0xd9, 0xdf, 0xbc, 0xec, 0x52, 0xd7, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x54, 0x30, 0x82, 0x01, + 0x50, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, + 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x11, 0x4a, 0xd0, + 0x73, 0x39, 0xd5, 0x5b, 0x69, 0x08, 0x5c, 0xba, 0x3d, 0xbf, 0x64, 0x9a, + 0xa8, 0x8b, 0x1c, 0x55, 0xbc, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3a, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, 0x2d, 0xa0, 0x2b, 0x86, 0x29, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67, + 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, + 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, + 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, + 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, + 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, + 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x2a, 0x06, 0x03, 0x55, 0x1d, 0x11, + 0x04, 0x23, 0x30, 0x21, 0xa4, 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x56, 0x65, 0x72, 0x69, 0x53, + 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x32, 0x35, + 0x34, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x3c, 0xe5, 0x3d, + 0x5a, 0x1b, 0xa2, 0x37, 0x2a, 0xe3, 0x46, 0xcf, 0x36, 0x96, 0x18, 0x3c, + 0x7b, 0xf1, 0x84, 0xc5, 0x57, 0x86, 0x77, 0x40, 0x9d, 0x35, 0xf0, 0x12, + 0xf0, 0x78, 0x18, 0xfb, 0x22, 0xa4, 0xde, 0x98, 0x4b, 0x78, 0x81, 0xe6, + 0x4d, 0x86, 0xe3, 0x91, 0x0f, 0x42, 0xe3, 0xb9, 0xdc, 0xa0, 0xd6, 0xff, + 0xa9, 0xf8, 0xb1, 0x79, 0x97, 0x99, 0xd1, 0xc3, 0x6c, 0x42, 0xa5, 0x92, + 0x94, 0xe0, 0x5d, 0x0c, 0x33, 0x18, 0x25, 0xc9, 0x2b, 0x95, 0x53, 0xe0, + 0xe5, 0xa9, 0x0c, 0x7d, 0x47, 0xfe, 0x7f, 0x51, 0x31, 0x44, 0x5e, 0xf7, + 0x2a, 0x1e, 0x35, 0xa2, 0x94, 0x32, 0xf7, 0xc9, 0xee, 0xc0, 0xb6, 0xc6, + 0x9a, 0xac, 0xde, 0x99, 0x21, 0x6a, 0x23, 0xa0, 0x38, 0x64, 0xee, 0xa3, + 0xc4, 0x88, 0x73, 0x32, 0x3b, 0x50, 0xce, 0xbf, 0xad, 0xd3, 0x75, 0x1e, + 0xa6, 0xf4, 0xe9, 0xf9, 0x42, 0x6b, 0x60, 0xb2, 0xdd, 0x45, 0xfd, 0x5d, + 0x57, 0x08, 0xce, 0x2d, 0x50, 0xe6, 0x12, 0x32, 0x16, 0x13, 0x8a, 0xf2, + 0x94, 0xa2, 0x9b, 0x47, 0xa8, 0x86, 0x7f, 0xd9, 0x98, 0xe5, 0xf7, 0xe5, + 0x76, 0x74, 0x64, 0xd8, 0x91, 0xbc, 0x84, 0x16, 0x28, 0xd8, 0x25, 0x44, + 0x30, 0x7e, 0x82, 0xd8, 0xac, 0xb1, 0xe4, 0xc0, 0xe4, 0x15, 0x6c, 0xdb, + 0xb6, 0x24, 0x27, 0x02, 0x2a, 0x01, 0x12, 0x85, 0xba, 0x31, 0x88, 0x58, + 0x47, 0x74, 0xe3, 0xb8, 0xd2, 0x64, 0xa6, 0xc3, 0x32, 0x59, 0x2e, 0x29, + 0x4b, 0x45, 0xf1, 0x5b, 0x89, 0x49, 0x2e, 0x82, 0x9a, 0xc6, 0x18, 0x15, + 0x44, 0xd0, 0x2e, 0x64, 0x01, 0x15, 0x68, 0x38, 0xf9, 0xf6, 0xf9, 0x66, + 0x03, 0x0c, 0x55, 0x1b, 0x9d, 0xbf, 0x00, 0x40, 0xae, 0xf0, 0x48, 0x27, + 0x4c, 0xe0, 0x80, 0x5e, 0x2d, 0xb9, 0x2a, 0x15, 0x7a, 0xbc, 0x66, 0xf8, + 0x35, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 04:00:00:00:00:01:44:4e:f0:3e:20 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA + Validity + Not Before: Feb 20 10:00:00 2014 GMT + Not After : Feb 20 10:00:00 2024 GMT + Subject: C=BE, O=GlobalSign nv-sa, CN=GlobalSign Domain Validation CA - SHA256 - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:a9:dd:cc:0e:b3:e2:32:39:dd:49:22:a8:13:69: + 93:87:88:e1:0c:ee:71:7d:bd:90:87:96:5d:59:f2: + cc:b3:d2:58:57:57:f9:46:ef:6c:26:d8:36:42:8e: + 7e:30:b3:2f:9a:3e:53:7b:1f:6e:b6:a2:4c:45:1f: + 3c:d3:15:93:1c:89:ed:3c:f4:57:de:ca:bd:ec:06: + 9a:6a:2a:a0:19:52:7f:51:d1:74:39:08:9f:ab:eb: + d7:86:13:15:97:ae:36:c3:54:66:0e:5a:f2:a0:73: + 85:31:e3:b2:64:14:6a:ff:a5:a2:8e:24:bb:bd:85: + 52:15:a2:79:ee:f0:b5:ee:3d:b8:f4:7d:80:bc:d9: + 90:35:65:b8:17:a9:ad:b3:98:9f:a0:7e:7d:6e:fb: + 3f:ad:7c:c2:1b:59:36:96:da:37:32:4b:4b:5d:35: + 02:63:8e:db:a7:cf:62:ee:cc:2e:d4:8d:c9:bd:3c: + 6a:91:72:a2:22:a7:72:2d:20:d1:fa:ca:37:da:18: + 98:e6:16:24:71:25:4b:c4:e5:7b:89:52:09:02:fd: + 59:2b:04:6e:ca:07:81:d4:b3:da:da:db:e3:cc:80: + a8:56:07:06:7c:96:08:37:9d:db:38:b6:62:34:91: + 62:07:74:01:38:d8:72:30:e2:eb:90:71:26:62:c0: + 57:f3 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Subject Key Identifier: + EA:4E:7C:D4:80:2D:E5:15:81:86:26:8C:82:6D:C0:98:A4:CF:97:0F + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.globalsign.com/repository/ + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.globalsign.net/root.crl + + Authority Information Access: + OCSP - URI:http://ocsp.globalsign.com/rootr1 + + X509v3 Authority Key Identifier: + keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B + + Signature Algorithm: sha256WithRSAEncryption + d7:45:9e:a0:dc:e0:e3:61:5a:0b:7d:77:84:17:2d:65:5a:82: + 9a:8d:a3:27:2a:85:f7:c9:ef:e9:86:fd:d4:47:cd:01:52:96: + c5:43:bd:37:b1:e1:b8:f2:a9:d2:8a:11:84:71:91:15:89:dc: + 02:9d:0b:cb:6c:33:85:34:28:9e:20:b2:b1:97:dc:6d:0b:10: + c1:3c:cd:5f:ea:5d:d7:98:31:c5:34:99:5c:00:61:55:c4:1b: + 02:5b:c5:e3:89:c8:b4:b8:6f:1e:38:f2:56:26:e9:41:ef:3d: + cd:ac:99:4f:59:4a:57:2d:4b:7d:ae:c7:88:fb:d6:98:3b:f5: + e5:f0:e8:89:89:b9:8b:03:cb:5a:23:1f:a4:fd:b8:ea:fb:2e: + 9d:ae:6a:73:09:bc:fc:d5:a0:b5:44:82:ab:44:91:2e:50:2e: + 57:c1:43:d8:91:04:8b:e9:11:2e:5f:b4:3f:79:df:1e:fb:3f: + 30:00:8b:53:e3:b7:2c:1d:3b:4d:8b:dc:e4:64:1d:04:58:33: + af:1b:55:e7:ab:0c:bf:30:04:74:e4:f3:0e:2f:30:39:8d:4b: + 04:8c:1e:75:66:66:49:e0:be:40:34:c7:5c:5a:51:92:ba:12: + 3c:52:d5:04:82:55:2d:67:a5:df:b7:95:7c:ee:3f:c3:08:ba: + 04:be:c0:46 +-----BEGIN CERTIFICATE----- +MIIEYzCCA0ugAwIBAgILBAAAAAABRE7wPiAwDQYJKoZIhvcNAQELBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw +MDBaFw0yNDAyMjAxMDAwMDBaMGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMTYwNAYDVQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0 +aW9uIENBIC0gU0hBMjU2IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCp3cwOs+IyOd1JIqgTaZOHiOEM7nF9vZCHll1Z8syz0lhXV/lG72wm2DZC +jn4wsy+aPlN7H262okxFHzzTFZMcie089Ffeyr3sBppqKqAZUn9R0XQ5CJ+r69eG +ExWXrjbDVGYOWvKgc4Ux47JkFGr/paKOJLu9hVIVonnu8LXuPbj0fYC82ZA1ZbgX +qa2zmJ+gfn1u+z+tfMIbWTaW2jcyS0tdNQJjjtunz2LuzC7Ujcm9PGqRcqIip3It +INH6yjfaGJjmFiRxJUvE5XuJUgkC/VkrBG7KB4HUs9ra2+PMgKhWBwZ8lgg3nds4 +tmI0kWIHdAE42HIw4uuQcSZiwFfzAgMBAAGjggElMIIBITAOBgNVHQ8BAf8EBAMC +AQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU6k581IAt5RWBhiaMgm3A +mKTPlw8wRwYDVR0gBEAwPjA8BgRVHSAAMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8v +d3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMDMGA1UdHwQsMCowKKAmoCSG +Imh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvcm9vdC5jcmwwPQYIKwYBBQUHAQEE +MTAvMC0GCCsGAQUFBzABhiFodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9yb290 +cjEwHwYDVR0jBBgwFoAUYHtmGkUNl8qJUC99BM00qP/8/UswDQYJKoZIhvcNAQEL +BQADggEBANdFnqDc4ONhWgt9d4QXLWVagpqNoycqhffJ7+mG/dRHzQFSlsVDvTex +4bjyqdKKEYRxkRWJ3AKdC8tsM4U0KJ4gsrGX3G0LEME8zV/qXdeYMcU0mVwAYVXE +GwJbxeOJyLS4bx448lYm6UHvPc2smU9ZSlctS32ux4j71pg79eXw6ImJuYsDy1oj +H6T9uOr7Lp2uanMJvPzVoLVEgqtEkS5QLlfBQ9iRBIvpES5ftD953x77PzAAi1Pj +tywdO02L3ORkHQRYM68bVeerDL8wBHTk8w4vMDmNSwSMHnVmZkngvkA0x1xaUZK6 +EjxS1QSCVS1npd+3lXzuP8MIugS+wEY= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_14[] = { + 0x30, 0x82, 0x04, 0x63, 0x30, 0x82, 0x03, 0x4b, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4e, 0xf0, + 0x3e, 0x20, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x07, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, + 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, + 0x17, 0x0d, 0x31, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x60, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, + 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, + 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x53, 0x48, 0x41, + 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xa9, 0xdd, 0xcc, 0x0e, 0xb3, 0xe2, 0x32, + 0x39, 0xdd, 0x49, 0x22, 0xa8, 0x13, 0x69, 0x93, 0x87, 0x88, 0xe1, 0x0c, + 0xee, 0x71, 0x7d, 0xbd, 0x90, 0x87, 0x96, 0x5d, 0x59, 0xf2, 0xcc, 0xb3, + 0xd2, 0x58, 0x57, 0x57, 0xf9, 0x46, 0xef, 0x6c, 0x26, 0xd8, 0x36, 0x42, + 0x8e, 0x7e, 0x30, 0xb3, 0x2f, 0x9a, 0x3e, 0x53, 0x7b, 0x1f, 0x6e, 0xb6, + 0xa2, 0x4c, 0x45, 0x1f, 0x3c, 0xd3, 0x15, 0x93, 0x1c, 0x89, 0xed, 0x3c, + 0xf4, 0x57, 0xde, 0xca, 0xbd, 0xec, 0x06, 0x9a, 0x6a, 0x2a, 0xa0, 0x19, + 0x52, 0x7f, 0x51, 0xd1, 0x74, 0x39, 0x08, 0x9f, 0xab, 0xeb, 0xd7, 0x86, + 0x13, 0x15, 0x97, 0xae, 0x36, 0xc3, 0x54, 0x66, 0x0e, 0x5a, 0xf2, 0xa0, + 0x73, 0x85, 0x31, 0xe3, 0xb2, 0x64, 0x14, 0x6a, 0xff, 0xa5, 0xa2, 0x8e, + 0x24, 0xbb, 0xbd, 0x85, 0x52, 0x15, 0xa2, 0x79, 0xee, 0xf0, 0xb5, 0xee, + 0x3d, 0xb8, 0xf4, 0x7d, 0x80, 0xbc, 0xd9, 0x90, 0x35, 0x65, 0xb8, 0x17, + 0xa9, 0xad, 0xb3, 0x98, 0x9f, 0xa0, 0x7e, 0x7d, 0x6e, 0xfb, 0x3f, 0xad, + 0x7c, 0xc2, 0x1b, 0x59, 0x36, 0x96, 0xda, 0x37, 0x32, 0x4b, 0x4b, 0x5d, + 0x35, 0x02, 0x63, 0x8e, 0xdb, 0xa7, 0xcf, 0x62, 0xee, 0xcc, 0x2e, 0xd4, + 0x8d, 0xc9, 0xbd, 0x3c, 0x6a, 0x91, 0x72, 0xa2, 0x22, 0xa7, 0x72, 0x2d, + 0x20, 0xd1, 0xfa, 0xca, 0x37, 0xda, 0x18, 0x98, 0xe6, 0x16, 0x24, 0x71, + 0x25, 0x4b, 0xc4, 0xe5, 0x7b, 0x89, 0x52, 0x09, 0x02, 0xfd, 0x59, 0x2b, + 0x04, 0x6e, 0xca, 0x07, 0x81, 0xd4, 0xb3, 0xda, 0xda, 0xdb, 0xe3, 0xcc, + 0x80, 0xa8, 0x56, 0x07, 0x06, 0x7c, 0x96, 0x08, 0x37, 0x9d, 0xdb, 0x38, + 0xb6, 0x62, 0x34, 0x91, 0x62, 0x07, 0x74, 0x01, 0x38, 0xd8, 0x72, 0x30, + 0xe2, 0xeb, 0x90, 0x71, 0x26, 0x62, 0xc0, 0x57, 0xf3, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x25, 0x30, 0x82, 0x01, 0x21, 0x30, 0x0e, + 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, + 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, + 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xea, 0x4e, 0x7c, + 0xd4, 0x80, 0x2d, 0xe5, 0x15, 0x81, 0x86, 0x26, 0x8c, 0x82, 0x6d, 0xc0, + 0x98, 0xa4, 0xcf, 0x97, 0x0f, 0x30, 0x47, 0x06, 0x03, 0x55, 0x1d, 0x20, + 0x04, 0x40, 0x30, 0x3e, 0x30, 0x3c, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, + 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, + 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, + 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, + 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, + 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x6e, + 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, + 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, + 0x72, 0x31, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, 0x1a, 0x45, 0x0d, 0x97, 0xca, 0x89, + 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, 0xa8, 0xff, 0xfc, 0xfd, 0x4b, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xd7, 0x45, 0x9e, 0xa0, 0xdc, + 0xe0, 0xe3, 0x61, 0x5a, 0x0b, 0x7d, 0x77, 0x84, 0x17, 0x2d, 0x65, 0x5a, + 0x82, 0x9a, 0x8d, 0xa3, 0x27, 0x2a, 0x85, 0xf7, 0xc9, 0xef, 0xe9, 0x86, + 0xfd, 0xd4, 0x47, 0xcd, 0x01, 0x52, 0x96, 0xc5, 0x43, 0xbd, 0x37, 0xb1, + 0xe1, 0xb8, 0xf2, 0xa9, 0xd2, 0x8a, 0x11, 0x84, 0x71, 0x91, 0x15, 0x89, + 0xdc, 0x02, 0x9d, 0x0b, 0xcb, 0x6c, 0x33, 0x85, 0x34, 0x28, 0x9e, 0x20, + 0xb2, 0xb1, 0x97, 0xdc, 0x6d, 0x0b, 0x10, 0xc1, 0x3c, 0xcd, 0x5f, 0xea, + 0x5d, 0xd7, 0x98, 0x31, 0xc5, 0x34, 0x99, 0x5c, 0x00, 0x61, 0x55, 0xc4, + 0x1b, 0x02, 0x5b, 0xc5, 0xe3, 0x89, 0xc8, 0xb4, 0xb8, 0x6f, 0x1e, 0x38, + 0xf2, 0x56, 0x26, 0xe9, 0x41, 0xef, 0x3d, 0xcd, 0xac, 0x99, 0x4f, 0x59, + 0x4a, 0x57, 0x2d, 0x4b, 0x7d, 0xae, 0xc7, 0x88, 0xfb, 0xd6, 0x98, 0x3b, + 0xf5, 0xe5, 0xf0, 0xe8, 0x89, 0x89, 0xb9, 0x8b, 0x03, 0xcb, 0x5a, 0x23, + 0x1f, 0xa4, 0xfd, 0xb8, 0xea, 0xfb, 0x2e, 0x9d, 0xae, 0x6a, 0x73, 0x09, + 0xbc, 0xfc, 0xd5, 0xa0, 0xb5, 0x44, 0x82, 0xab, 0x44, 0x91, 0x2e, 0x50, + 0x2e, 0x57, 0xc1, 0x43, 0xd8, 0x91, 0x04, 0x8b, 0xe9, 0x11, 0x2e, 0x5f, + 0xb4, 0x3f, 0x79, 0xdf, 0x1e, 0xfb, 0x3f, 0x30, 0x00, 0x8b, 0x53, 0xe3, + 0xb7, 0x2c, 0x1d, 0x3b, 0x4d, 0x8b, 0xdc, 0xe4, 0x64, 0x1d, 0x04, 0x58, + 0x33, 0xaf, 0x1b, 0x55, 0xe7, 0xab, 0x0c, 0xbf, 0x30, 0x04, 0x74, 0xe4, + 0xf3, 0x0e, 0x2f, 0x30, 0x39, 0x8d, 0x4b, 0x04, 0x8c, 0x1e, 0x75, 0x66, + 0x66, 0x49, 0xe0, 0xbe, 0x40, 0x34, 0xc7, 0x5c, 0x5a, 0x51, 0x92, 0xba, + 0x12, 0x3c, 0x52, 0xd5, 0x04, 0x82, 0x55, 0x2d, 0x67, 0xa5, 0xdf, 0xb7, + 0x95, 0x7c, 0xee, 0x3f, 0xc3, 0x08, 0xba, 0x04, 0xbe, 0xc0, 0x46, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 04:00:00:00:00:01:44:4e:f0:42:47 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA + Validity + Not Before: Feb 20 10:00:00 2014 GMT + Not After : Feb 20 10:00:00 2024 GMT + Subject: C=BE, O=GlobalSign nv-sa, CN=GlobalSign Organization Validation CA - SHA256 - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:c7:0e:6c:3f:23:93:7f:cc:70:a5:9d:20:c3:0e: + 53:3f:7e:c0:4e:c2:98:49:ca:47:d5:23:ef:03:34: + 85:74:c8:a3:02:2e:46:5c:0b:7d:c9:88:9d:4f:8b: + f0:f8:9c:6c:8c:55:35:db:bf:f2:b3:ea:fb:e3:56: + e7:4a:46:d9:13:22:ca:36:d5:9b:c1:a8:e3:96:43: + 93:f2:0c:bc:e6:f9:e6:e8:99:c8:63:48:78:7f:57: + 36:69:1a:19:1d:5a:d1:d4:7d:c2:9c:d4:7f:e1:80: + 12:ae:7a:ea:88:ea:57:d8:ca:0a:0a:3a:12:49:a2: + 62:19:7a:0d:24:f7:37:eb:b4:73:92:7b:05:23:9b: + 12:b5:ce:eb:29:df:a4:14:02:b9:01:a5:d4:a6:9c: + 43:64:88:de:f8:7e:fe:e3:f5:1e:e5:fe:dc:a3:a8: + e4:66:31:d9:4c:25:e9:18:b9:89:59:09:ae:e9:9d: + 1c:6d:37:0f:4a:1e:35:20:28:e2:af:d4:21:8b:01: + c4:45:ad:6e:2b:63:ab:92:6b:61:0a:4d:20:ed:73: + ba:7c:ce:fe:16:b5:db:9f:80:f0:d6:8b:6c:d9:08: + 79:4a:4f:78:65:da:92:bc:be:35:f9:b3:c4:f9:27: + 80:4e:ff:96:52:e6:02:20:e1:07:73:e9:5d:2b:bd: + b2:f1 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Subject Key Identifier: + 96:DE:61:F1:BD:1C:16:29:53:1C:C0:CC:7D:3B:83:00:40:E6:1A:7C + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.globalsign.com/repository/ + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.globalsign.net/root.crl + + Authority Information Access: + OCSP - URI:http://ocsp.globalsign.com/rootr1 + + X509v3 Authority Key Identifier: + keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B + + Signature Algorithm: sha256WithRSAEncryption + 46:2a:ee:5e:bd:ae:01:60:37:31:11:86:71:74:b6:46:49:c8: + 10:16:fe:2f:62:23:17:ab:1f:87:f8:82:ed:ca:df:0e:2c:df: + 64:75:8e:e5:18:72:a7:8c:3a:8b:c9:ac:a5:77:50:f7:ef:9e: + a4:e0:a0:8f:14:57:a3:2a:5f:ec:7e:6d:10:e6:ba:8d:b0:08: + 87:76:0e:4c:b2:d9:51:bb:11:02:f2:5c:dd:1c:bd:f3:55:96: + 0f:d4:06:c0:fc:e2:23:8a:24:70:d3:bb:f0:79:1a:a7:61:70: + 83:8a:af:06:c5:20:d8:a1:63:d0:6c:ae:4f:32:d7:ae:7c:18: + 45:75:05:29:77:df:42:40:64:64:86:be:2a:76:09:31:6f:1d: + 24:f4:99:d0:85:fe:f2:21:08:f9:c6:f6:f1:d0:59:ed:d6:56: + 3c:08:28:03:67:ba:f0:f9:f1:90:16:47:ae:67:e6:bc:80:48: + e9:42:76:34:97:55:69:24:0e:83:d6:a0:2d:b4:f5:f3:79:8a: + 49:28:74:1a:41:a1:c2:d3:24:88:35:30:60:94:17:b4:e1:04: + 22:31:3d:3b:2f:17:06:b2:b8:9d:86:2b:5a:69:ef:83:f5:4b: + c4:aa:b4:2a:f8:7c:a1:b1:85:94:8c:f4:0c:87:0c:f4:ac:40: + f8:59:49:98 +-----BEGIN CERTIFICATE----- +MIIEaTCCA1GgAwIBAgILBAAAAAABRE7wQkcwDQYJKoZIhvcNAQELBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw +MDBaFw0yNDAyMjAxMDAwMDBaMGYxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMTwwOgYDVQQDEzNHbG9iYWxTaWduIE9yZ2FuaXphdGlvbiBW +YWxpZGF0aW9uIENBIC0gU0hBMjU2IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDHDmw/I5N/zHClnSDDDlM/fsBOwphJykfVI+8DNIV0yKMCLkZc +C33JiJ1Pi/D4nGyMVTXbv/Kz6vvjVudKRtkTIso21ZvBqOOWQ5PyDLzm+ebomchj +SHh/VzZpGhkdWtHUfcKc1H/hgBKueuqI6lfYygoKOhJJomIZeg0k9zfrtHOSewUj +mxK1zusp36QUArkBpdSmnENkiN74fv7j9R7l/tyjqORmMdlMJekYuYlZCa7pnRxt +Nw9KHjUgKOKv1CGLAcRFrW4rY6uSa2EKTSDtc7p8zv4WtdufgPDWi2zZCHlKT3hl +2pK8vjX5s8T5J4BO/5ZS5gIg4Qdz6V0rvbLxAgMBAAGjggElMIIBITAOBgNVHQ8B +Af8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUlt5h8b0cFilT +HMDMfTuDAEDmGnwwRwYDVR0gBEAwPjA8BgRVHSAAMDQwMgYIKwYBBQUHAgEWJmh0 +dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMDMGA1UdHwQsMCow +KKAmoCSGImh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvcm9vdC5jcmwwPQYIKwYB +BQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNv +bS9yb290cjEwHwYDVR0jBBgwFoAUYHtmGkUNl8qJUC99BM00qP/8/UswDQYJKoZI +hvcNAQELBQADggEBAEYq7l69rgFgNzERhnF0tkZJyBAW/i9iIxerH4f4gu3K3w4s +32R1juUYcqeMOovJrKV3UPfvnqTgoI8UV6MqX+x+bRDmuo2wCId2Dkyy2VG7EQLy +XN0cvfNVlg/UBsD84iOKJHDTu/B5GqdhcIOKrwbFINihY9Bsrk8y1658GEV1BSl3 +30JAZGSGvip2CTFvHST0mdCF/vIhCPnG9vHQWe3WVjwIKANnuvD58ZAWR65n5ryA +SOlCdjSXVWkkDoPWoC209fN5ikkodBpBocLTJIg1MGCUF7ThBCIxPTsvFwayuJ2G +K1pp74P1S8SqtCr4fKGxhZSM9AyHDPSsQPhZSZg= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_15[] = { + 0x30, 0x82, 0x04, 0x69, 0x30, 0x82, 0x03, 0x51, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4e, 0xf0, + 0x42, 0x47, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x07, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, + 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, + 0x17, 0x0d, 0x31, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x66, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, + 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, + 0x31, 0x3c, 0x30, 0x3a, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x33, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x43, 0x41, + 0x20, 0x2d, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, + 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xc7, + 0x0e, 0x6c, 0x3f, 0x23, 0x93, 0x7f, 0xcc, 0x70, 0xa5, 0x9d, 0x20, 0xc3, + 0x0e, 0x53, 0x3f, 0x7e, 0xc0, 0x4e, 0xc2, 0x98, 0x49, 0xca, 0x47, 0xd5, + 0x23, 0xef, 0x03, 0x34, 0x85, 0x74, 0xc8, 0xa3, 0x02, 0x2e, 0x46, 0x5c, + 0x0b, 0x7d, 0xc9, 0x88, 0x9d, 0x4f, 0x8b, 0xf0, 0xf8, 0x9c, 0x6c, 0x8c, + 0x55, 0x35, 0xdb, 0xbf, 0xf2, 0xb3, 0xea, 0xfb, 0xe3, 0x56, 0xe7, 0x4a, + 0x46, 0xd9, 0x13, 0x22, 0xca, 0x36, 0xd5, 0x9b, 0xc1, 0xa8, 0xe3, 0x96, + 0x43, 0x93, 0xf2, 0x0c, 0xbc, 0xe6, 0xf9, 0xe6, 0xe8, 0x99, 0xc8, 0x63, + 0x48, 0x78, 0x7f, 0x57, 0x36, 0x69, 0x1a, 0x19, 0x1d, 0x5a, 0xd1, 0xd4, + 0x7d, 0xc2, 0x9c, 0xd4, 0x7f, 0xe1, 0x80, 0x12, 0xae, 0x7a, 0xea, 0x88, + 0xea, 0x57, 0xd8, 0xca, 0x0a, 0x0a, 0x3a, 0x12, 0x49, 0xa2, 0x62, 0x19, + 0x7a, 0x0d, 0x24, 0xf7, 0x37, 0xeb, 0xb4, 0x73, 0x92, 0x7b, 0x05, 0x23, + 0x9b, 0x12, 0xb5, 0xce, 0xeb, 0x29, 0xdf, 0xa4, 0x14, 0x02, 0xb9, 0x01, + 0xa5, 0xd4, 0xa6, 0x9c, 0x43, 0x64, 0x88, 0xde, 0xf8, 0x7e, 0xfe, 0xe3, + 0xf5, 0x1e, 0xe5, 0xfe, 0xdc, 0xa3, 0xa8, 0xe4, 0x66, 0x31, 0xd9, 0x4c, + 0x25, 0xe9, 0x18, 0xb9, 0x89, 0x59, 0x09, 0xae, 0xe9, 0x9d, 0x1c, 0x6d, + 0x37, 0x0f, 0x4a, 0x1e, 0x35, 0x20, 0x28, 0xe2, 0xaf, 0xd4, 0x21, 0x8b, + 0x01, 0xc4, 0x45, 0xad, 0x6e, 0x2b, 0x63, 0xab, 0x92, 0x6b, 0x61, 0x0a, + 0x4d, 0x20, 0xed, 0x73, 0xba, 0x7c, 0xce, 0xfe, 0x16, 0xb5, 0xdb, 0x9f, + 0x80, 0xf0, 0xd6, 0x8b, 0x6c, 0xd9, 0x08, 0x79, 0x4a, 0x4f, 0x78, 0x65, + 0xda, 0x92, 0xbc, 0xbe, 0x35, 0xf9, 0xb3, 0xc4, 0xf9, 0x27, 0x80, 0x4e, + 0xff, 0x96, 0x52, 0xe6, 0x02, 0x20, 0xe1, 0x07, 0x73, 0xe9, 0x5d, 0x2b, + 0xbd, 0xb2, 0xf1, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x25, + 0x30, 0x82, 0x01, 0x21, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, + 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, + 0xff, 0x02, 0x01, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, + 0x16, 0x04, 0x14, 0x96, 0xde, 0x61, 0xf1, 0xbd, 0x1c, 0x16, 0x29, 0x53, + 0x1c, 0xc0, 0xcc, 0x7d, 0x3b, 0x83, 0x00, 0x40, 0xe6, 0x1a, 0x7c, 0x30, + 0x47, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x40, 0x30, 0x3e, 0x30, 0x3c, + 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, + 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, + 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, + 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, + 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x72, 0x31, 0x30, 0x1f, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, + 0x1a, 0x45, 0x0d, 0x97, 0xca, 0x89, 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, + 0xa8, 0xff, 0xfc, 0xfd, 0x4b, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, + 0x00, 0x46, 0x2a, 0xee, 0x5e, 0xbd, 0xae, 0x01, 0x60, 0x37, 0x31, 0x11, + 0x86, 0x71, 0x74, 0xb6, 0x46, 0x49, 0xc8, 0x10, 0x16, 0xfe, 0x2f, 0x62, + 0x23, 0x17, 0xab, 0x1f, 0x87, 0xf8, 0x82, 0xed, 0xca, 0xdf, 0x0e, 0x2c, + 0xdf, 0x64, 0x75, 0x8e, 0xe5, 0x18, 0x72, 0xa7, 0x8c, 0x3a, 0x8b, 0xc9, + 0xac, 0xa5, 0x77, 0x50, 0xf7, 0xef, 0x9e, 0xa4, 0xe0, 0xa0, 0x8f, 0x14, + 0x57, 0xa3, 0x2a, 0x5f, 0xec, 0x7e, 0x6d, 0x10, 0xe6, 0xba, 0x8d, 0xb0, + 0x08, 0x87, 0x76, 0x0e, 0x4c, 0xb2, 0xd9, 0x51, 0xbb, 0x11, 0x02, 0xf2, + 0x5c, 0xdd, 0x1c, 0xbd, 0xf3, 0x55, 0x96, 0x0f, 0xd4, 0x06, 0xc0, 0xfc, + 0xe2, 0x23, 0x8a, 0x24, 0x70, 0xd3, 0xbb, 0xf0, 0x79, 0x1a, 0xa7, 0x61, + 0x70, 0x83, 0x8a, 0xaf, 0x06, 0xc5, 0x20, 0xd8, 0xa1, 0x63, 0xd0, 0x6c, + 0xae, 0x4f, 0x32, 0xd7, 0xae, 0x7c, 0x18, 0x45, 0x75, 0x05, 0x29, 0x77, + 0xdf, 0x42, 0x40, 0x64, 0x64, 0x86, 0xbe, 0x2a, 0x76, 0x09, 0x31, 0x6f, + 0x1d, 0x24, 0xf4, 0x99, 0xd0, 0x85, 0xfe, 0xf2, 0x21, 0x08, 0xf9, 0xc6, + 0xf6, 0xf1, 0xd0, 0x59, 0xed, 0xd6, 0x56, 0x3c, 0x08, 0x28, 0x03, 0x67, + 0xba, 0xf0, 0xf9, 0xf1, 0x90, 0x16, 0x47, 0xae, 0x67, 0xe6, 0xbc, 0x80, + 0x48, 0xe9, 0x42, 0x76, 0x34, 0x97, 0x55, 0x69, 0x24, 0x0e, 0x83, 0xd6, + 0xa0, 0x2d, 0xb4, 0xf5, 0xf3, 0x79, 0x8a, 0x49, 0x28, 0x74, 0x1a, 0x41, + 0xa1, 0xc2, 0xd3, 0x24, 0x88, 0x35, 0x30, 0x60, 0x94, 0x17, 0xb4, 0xe1, + 0x04, 0x22, 0x31, 0x3d, 0x3b, 0x2f, 0x17, 0x06, 0xb2, 0xb8, 0x9d, 0x86, + 0x2b, 0x5a, 0x69, 0xef, 0x83, 0xf5, 0x4b, 0xc4, 0xaa, 0xb4, 0x2a, 0xf8, + 0x7c, 0xa1, 0xb1, 0x85, 0x94, 0x8c, 0xf4, 0x0c, 0x87, 0x0c, 0xf4, 0xac, + 0x40, 0xf8, 0x59, 0x49, 0x98, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 4d:5f:2c:34:08:b2:4c:20:cd:6d:50:7e:24:4d:c9:ec + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2006 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA + Validity + Not Before: Feb 8 00:00:00 2010 GMT + Not After : Feb 7 23:59:59 2020 GMT + Subject: C=US, O=Thawte, Inc., CN=Thawte SSL CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:99:e4:85:5b:76:49:7d:2f:05:d8:c5:ac:c8:c8: + a9:d3:dc:98:e6:d7:34:a6:2f:0c:f2:22:26:d8:a3: + c9:14:4c:8f:05:a4:45:e8:14:0c:58:90:05:1a:b7: + c5:c1:06:a5:80:af:bb:1d:49:6b:52:34:88:c3:59: + e7:ef:6b:c4:27:41:8c:2b:66:1d:d0:e0:a3:97:98: + 19:34:4b:41:d5:98:d5:c7:05:ad:a2:e4:d7:ed:0c: + ad:4f:c1:b5:b0:21:fd:3e:50:53:b2:c4:90:d0:d4: + 30:67:6c:9a:f1:0e:74:c4:c2:dc:8a:e8:97:ff:c9: + 92:ae:01:8a:56:0a:98:32:b0:00:23:ec:90:1a:60: + c3:ed:bb:3a:cb:0f:63:9f:0d:44:c9:52:e1:25:96: + bf:ed:50:95:89:7f:56:14:b1:b7:61:1d:1c:07:8c: + 3a:2c:f7:ff:80:de:39:45:d5:af:1a:d1:78:d8:c7: + 71:6a:a3:19:a7:32:50:21:e9:f2:0e:a1:c6:13:03: + 44:48:d1:66:a8:52:57:d7:11:b4:93:8b:e5:99:9f: + 5d:e7:78:51:e5:4d:f6:b7:59:b4:76:b5:09:37:4d: + 06:38:13:7a:1c:08:98:5c:c4:48:4a:cb:52:a0:a9: + f8:b1:9d:8e:7b:79:b0:20:2f:3c:96:a8:11:62:47: + bb:11 + Exponent: 65537 (0x10001) + X509v3 extensions: + Authority Information Access: + OCSP - URI:http://ocsp.thawte.com + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.thawte.com/ThawtePCA.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Alternative Name: + DirName:/CN=VeriSignMPKI-2-9 + X509v3 Subject Key Identifier: + A7:A2:83:BB:34:45:40:3D:FC:D5:30:4F:12:B9:3E:A1:01:9F:F6:DB + X509v3 Authority Key Identifier: + keyid:7B:5B:45:CF:AF:CE:CB:7A:FD:31:92:1A:6A:B6:F3:46:EB:57:48:50 + + Signature Algorithm: sha1WithRSAEncryption + 80:22:80:e0:6c:c8:95:16:d7:57:26:87:f3:72:34:db:c6:72: + 56:27:3e:d3:96:f6:2e:25:91:a5:3e:33:97:a7:4b:e5:2f:fb: + 25:7d:2f:07:61:fa:6f:83:74:4c:4c:53:72:20:a4:7a:cf:51: + 51:56:81:88:b0:6d:1f:36:2c:c8:2b:b1:88:99:c1:fe:44:ab: + 48:51:7c:d8:f2:44:64:2a:d8:71:a7:fb:1a:2f:f9:19:8d:34: + b2:23:bf:c4:4c:55:1d:8e:44:e8:aa:5d:9a:dd:9f:fd:03:c7: + ba:24:43:8d:2d:47:44:db:f6:d8:98:c8:b2:f9:da:ef:ed:29: + 5c:69:12:fa:d1:23:96:0f:bf:9c:0d:f2:79:45:53:37:9a:56: + 2f:e8:57:10:70:f6:ee:89:0c:49:89:9a:c1:23:f5:c2:2a:cc: + 41:cf:22:ab:65:6e:b7:94:82:6d:2f:40:5f:58:de:eb:95:2b: + a6:72:68:52:19:91:2a:ae:75:9d:4e:92:e6:ca:de:54:ea:18: + ab:25:3c:e6:64:a6:79:1f:26:7d:61:ed:7d:d2:e5:71:55:d8: + 93:17:7c:14:38:30:3c:df:86:e3:4c:ad:49:e3:97:59:ce:1b: + 9b:2b:ce:dc:65:d4:0b:28:6b:4e:84:46:51:44:f7:33:08:2d: + 58:97:21:ae +-----BEGIN CERTIFICATE----- +MIIEbDCCA1SgAwIBAgIQTV8sNAiyTCDNbVB+JE3J7DANBgkqhkiG9w0BAQUFADCB +qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV +BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMTAwMjA4MDAwMDAwWhcNMjAw +MjA3MjM1OTU5WjA8MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMVGhhd3RlLCBJbmMu +MRYwFAYDVQQDEw1UaGF3dGUgU1NMIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAmeSFW3ZJfS8F2MWsyMip09yY5tc0pi8M8iIm2KPJFEyPBaRF6BQM +WJAFGrfFwQalgK+7HUlrUjSIw1nn72vEJ0GMK2Yd0OCjl5gZNEtB1ZjVxwWtouTX +7QytT8G1sCH9PlBTssSQ0NQwZ2ya8Q50xMLciuiX/8mSrgGKVgqYMrAAI+yQGmDD +7bs6yw9jnw1EyVLhJZa/7VCViX9WFLG3YR0cB4w6LPf/gN45RdWvGtF42MdxaqMZ +pzJQIenyDqHGEwNESNFmqFJX1xG0k4vlmZ9d53hR5U32t1m0drUJN00GOBN6HAiY +XMRISstSoKn4sZ2Oe3mwIC88lqgRYke7EQIDAQABo4H7MIH4MDIGCCsGAQUFBwEB +BCYwJDAiBggrBgEFBQcwAYYWaHR0cDovL29jc3AudGhhd3RlLmNvbTASBgNVHRMB +Af8ECDAGAQH/AgEAMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6Ly9jcmwudGhhd3Rl +LmNvbS9UaGF3dGVQQ0EuY3JsMA4GA1UdDwEB/wQEAwIBBjAoBgNVHREEITAfpB0w +GzEZMBcGA1UEAxMQVmVyaVNpZ25NUEtJLTItOTAdBgNVHQ4EFgQUp6KDuzRFQD38 +1TBPErk+oQGf9tswHwYDVR0jBBgwFoAUe1tFz6/Oy3r9MZIaarbzRutXSFAwDQYJ +KoZIhvcNAQEFBQADggEBAIAigOBsyJUW11cmh/NyNNvGclYnPtOW9i4lkaU+M5en +S+Uv+yV9Lwdh+m+DdExMU3IgpHrPUVFWgYiwbR82LMgrsYiZwf5Eq0hRfNjyRGQq +2HGn+xov+RmNNLIjv8RMVR2OROiqXZrdn/0Dx7okQ40tR0Tb9tiYyLL52u/tKVxp +EvrRI5YPv5wN8nlFUzeaVi/oVxBw9u6JDEmJmsEj9cIqzEHPIqtlbreUgm0vQF9Y +3uuVK6ZyaFIZkSqudZ1OkubK3lTqGKslPOZkpnkfJn1h7X3S5XFV2JMXfBQ4MDzf +huNMrUnjl1nOG5srztxl1Asoa06ERlFE9zMILViXIa4= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_16[] = { + 0x30, 0x82, 0x04, 0x6c, 0x30, 0x82, 0x03, 0x54, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x4d, 0x5f, 0x2c, 0x34, 0x08, 0xb2, 0x4c, 0x20, 0xcd, + 0x6d, 0x50, 0x7e, 0x24, 0x4d, 0xc9, 0xec, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, + 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x32, 0x30, 0x38, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x30, + 0x32, 0x30, 0x37, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x3c, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0d, 0x54, + 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x99, 0xe4, 0x85, + 0x5b, 0x76, 0x49, 0x7d, 0x2f, 0x05, 0xd8, 0xc5, 0xac, 0xc8, 0xc8, 0xa9, + 0xd3, 0xdc, 0x98, 0xe6, 0xd7, 0x34, 0xa6, 0x2f, 0x0c, 0xf2, 0x22, 0x26, + 0xd8, 0xa3, 0xc9, 0x14, 0x4c, 0x8f, 0x05, 0xa4, 0x45, 0xe8, 0x14, 0x0c, + 0x58, 0x90, 0x05, 0x1a, 0xb7, 0xc5, 0xc1, 0x06, 0xa5, 0x80, 0xaf, 0xbb, + 0x1d, 0x49, 0x6b, 0x52, 0x34, 0x88, 0xc3, 0x59, 0xe7, 0xef, 0x6b, 0xc4, + 0x27, 0x41, 0x8c, 0x2b, 0x66, 0x1d, 0xd0, 0xe0, 0xa3, 0x97, 0x98, 0x19, + 0x34, 0x4b, 0x41, 0xd5, 0x98, 0xd5, 0xc7, 0x05, 0xad, 0xa2, 0xe4, 0xd7, + 0xed, 0x0c, 0xad, 0x4f, 0xc1, 0xb5, 0xb0, 0x21, 0xfd, 0x3e, 0x50, 0x53, + 0xb2, 0xc4, 0x90, 0xd0, 0xd4, 0x30, 0x67, 0x6c, 0x9a, 0xf1, 0x0e, 0x74, + 0xc4, 0xc2, 0xdc, 0x8a, 0xe8, 0x97, 0xff, 0xc9, 0x92, 0xae, 0x01, 0x8a, + 0x56, 0x0a, 0x98, 0x32, 0xb0, 0x00, 0x23, 0xec, 0x90, 0x1a, 0x60, 0xc3, + 0xed, 0xbb, 0x3a, 0xcb, 0x0f, 0x63, 0x9f, 0x0d, 0x44, 0xc9, 0x52, 0xe1, + 0x25, 0x96, 0xbf, 0xed, 0x50, 0x95, 0x89, 0x7f, 0x56, 0x14, 0xb1, 0xb7, + 0x61, 0x1d, 0x1c, 0x07, 0x8c, 0x3a, 0x2c, 0xf7, 0xff, 0x80, 0xde, 0x39, + 0x45, 0xd5, 0xaf, 0x1a, 0xd1, 0x78, 0xd8, 0xc7, 0x71, 0x6a, 0xa3, 0x19, + 0xa7, 0x32, 0x50, 0x21, 0xe9, 0xf2, 0x0e, 0xa1, 0xc6, 0x13, 0x03, 0x44, + 0x48, 0xd1, 0x66, 0xa8, 0x52, 0x57, 0xd7, 0x11, 0xb4, 0x93, 0x8b, 0xe5, + 0x99, 0x9f, 0x5d, 0xe7, 0x78, 0x51, 0xe5, 0x4d, 0xf6, 0xb7, 0x59, 0xb4, + 0x76, 0xb5, 0x09, 0x37, 0x4d, 0x06, 0x38, 0x13, 0x7a, 0x1c, 0x08, 0x98, + 0x5c, 0xc4, 0x48, 0x4a, 0xcb, 0x52, 0xa0, 0xa9, 0xf8, 0xb1, 0x9d, 0x8e, + 0x7b, 0x79, 0xb0, 0x20, 0x2f, 0x3c, 0x96, 0xa8, 0x11, 0x62, 0x47, 0xbb, + 0x11, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xfb, 0x30, 0x81, 0xf8, + 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, + 0x04, 0x26, 0x30, 0x24, 0x30, 0x22, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, + 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2d, 0x30, 0x2b, 0x30, + 0x29, 0xa0, 0x27, 0xa0, 0x25, 0x86, 0x23, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, + 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x28, + 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x21, 0x30, 0x1f, 0xa4, 0x1d, 0x30, + 0x1b, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, + 0x2d, 0x32, 0x2d, 0x39, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, + 0x16, 0x04, 0x14, 0xa7, 0xa2, 0x83, 0xbb, 0x34, 0x45, 0x40, 0x3d, 0xfc, + 0xd5, 0x30, 0x4f, 0x12, 0xb9, 0x3e, 0xa1, 0x01, 0x9f, 0xf6, 0xdb, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0x7b, 0x5b, 0x45, 0xcf, 0xaf, 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, + 0x6a, 0xb6, 0xf3, 0x46, 0xeb, 0x57, 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x80, 0x22, 0x80, 0xe0, 0x6c, 0xc8, 0x95, 0x16, + 0xd7, 0x57, 0x26, 0x87, 0xf3, 0x72, 0x34, 0xdb, 0xc6, 0x72, 0x56, 0x27, + 0x3e, 0xd3, 0x96, 0xf6, 0x2e, 0x25, 0x91, 0xa5, 0x3e, 0x33, 0x97, 0xa7, + 0x4b, 0xe5, 0x2f, 0xfb, 0x25, 0x7d, 0x2f, 0x07, 0x61, 0xfa, 0x6f, 0x83, + 0x74, 0x4c, 0x4c, 0x53, 0x72, 0x20, 0xa4, 0x7a, 0xcf, 0x51, 0x51, 0x56, + 0x81, 0x88, 0xb0, 0x6d, 0x1f, 0x36, 0x2c, 0xc8, 0x2b, 0xb1, 0x88, 0x99, + 0xc1, 0xfe, 0x44, 0xab, 0x48, 0x51, 0x7c, 0xd8, 0xf2, 0x44, 0x64, 0x2a, + 0xd8, 0x71, 0xa7, 0xfb, 0x1a, 0x2f, 0xf9, 0x19, 0x8d, 0x34, 0xb2, 0x23, + 0xbf, 0xc4, 0x4c, 0x55, 0x1d, 0x8e, 0x44, 0xe8, 0xaa, 0x5d, 0x9a, 0xdd, + 0x9f, 0xfd, 0x03, 0xc7, 0xba, 0x24, 0x43, 0x8d, 0x2d, 0x47, 0x44, 0xdb, + 0xf6, 0xd8, 0x98, 0xc8, 0xb2, 0xf9, 0xda, 0xef, 0xed, 0x29, 0x5c, 0x69, + 0x12, 0xfa, 0xd1, 0x23, 0x96, 0x0f, 0xbf, 0x9c, 0x0d, 0xf2, 0x79, 0x45, + 0x53, 0x37, 0x9a, 0x56, 0x2f, 0xe8, 0x57, 0x10, 0x70, 0xf6, 0xee, 0x89, + 0x0c, 0x49, 0x89, 0x9a, 0xc1, 0x23, 0xf5, 0xc2, 0x2a, 0xcc, 0x41, 0xcf, + 0x22, 0xab, 0x65, 0x6e, 0xb7, 0x94, 0x82, 0x6d, 0x2f, 0x40, 0x5f, 0x58, + 0xde, 0xeb, 0x95, 0x2b, 0xa6, 0x72, 0x68, 0x52, 0x19, 0x91, 0x2a, 0xae, + 0x75, 0x9d, 0x4e, 0x92, 0xe6, 0xca, 0xde, 0x54, 0xea, 0x18, 0xab, 0x25, + 0x3c, 0xe6, 0x64, 0xa6, 0x79, 0x1f, 0x26, 0x7d, 0x61, 0xed, 0x7d, 0xd2, + 0xe5, 0x71, 0x55, 0xd8, 0x93, 0x17, 0x7c, 0x14, 0x38, 0x30, 0x3c, 0xdf, + 0x86, 0xe3, 0x4c, 0xad, 0x49, 0xe3, 0x97, 0x59, 0xce, 0x1b, 0x9b, 0x2b, + 0xce, 0xdc, 0x65, 0xd4, 0x0b, 0x28, 0x6b, 0x4e, 0x84, 0x46, 0x51, 0x44, + 0xf7, 0x33, 0x08, 0x2d, 0x58, 0x97, 0x21, 0xae, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 6e:8a:90:eb:cf:f0:44:8a:72:0d:08:05:d0:82:a5:44 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Primary Certification Authority + Validity + Not Before: Oct 31 00:00:00 2013 GMT + Not After : Oct 30 23:59:59 2023 GMT + Subject: C=US, O=GeoTrust Inc., CN=GeoTrust EV SSL CA - G4 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:d9:b4:05:f2:38:67:0f:09:e7:7c:f5:63:2a:e5: + b9:5e:a8:11:ae:75:71:d9:4c:84:67:ad:89:5d:fc: + 28:3d:2a:b0:a5:d5:d4:e6:30:0a:84:d4:e4:18:cb: + 85:37:c5:46:71:eb:1c:7b:69:db:65:69:8c:30:05: + 3e:07:e1:6f:3c:c1:0b:61:e6:38:44:fc:bc:8c:2f: + 4e:75:57:f5:96:99:7c:3e:87:1f:0f:90:4b:70:c3: + 3f:39:45:3b:3a:6b:cb:bb:7b:40:54:d1:8b:4b:a1: + 72:d2:04:e9:e0:72:1a:93:11:7a:2f:f1:ab:9d:9c: + 98:58:ae:2c:ea:77:5f:2f:2e:87:af:b8:6b:e3:e2: + e2:3f:d6:3d:e0:96:44:df:11:55:63:52:2f:f4:26: + 78:c4:0f:20:4d:0a:c0:68:70:15:86:38:ee:b7:76: + 88:ab:18:8f:4f:35:1e:d4:8c:c9:db:7e:3d:44:d4: + 36:8c:c1:37:b5:59:5b:87:f9:e9:f1:d4:c5:28:bd: + 1d:dc:cc:96:72:d1:7a:a1:a7:20:b5:b8:af:f8:6e: + a5:60:7b:2b:8d:1f:ee:f4:2b:d6:69:cd:af:ca:80: + 58:29:e8:4c:00:20:8a:49:0a:6e:8e:8c:a8:d1:00: + 12:84:b6:c5:e2:95:a2:c0:3b:a4:6b:f0:82:d0:96: + 5d:25 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + Authority Information Access: + OCSP - URI:http://g2.symcb.com + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.geotrust.com/resources/cps + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://g1.symcb.com/GeoTrustPCA.crl + + X509v3 Subject Alternative Name: + DirName:/CN=SymantecPKI-1-538 + X509v3 Subject Key Identifier: + DE:CF:5C:50:B7:AE:02:1F:15:17:AA:16:E8:0D:B5:28:9D:6A:5A:F3 + X509v3 Authority Key Identifier: + keyid:2C:D5:50:41:97:15:8B:F0:8F:36:61:5B:4A:FB:6B:D9:99:C9:33:92 + + Signature Algorithm: sha256WithRSAEncryption + b4:8e:bd:07:b9:9a:85:ec:3b:67:bd:07:60:61:e6:84:d1:d4: + ef:eb:1b:ba:0b:82:4b:95:64:b6:66:53:23:bd:b7:84:dd:e4: + 7b:8d:09:da:cf:b2:f5:f1:c3:bf:87:84:be:4e:a6:a8:c2:e7: + 12:39:28:34:e0:a4:56:44:40:0c:9f:88:a3:15:d3:e8:d3:5e: + e3:1c:04:60:fb:69:36:4f:6a:7e:0c:2a:28:c1:f3:aa:58:0e: + 6c:ce:1d:07:c3:4a:c0:9c:8d:c3:74:b1:ae:82:f0:1a:e1:f9: + 4e:29:bd:46:de:b7:1d:f9:7d:db:d9:0f:84:cb:92:45:cc:1c: + b3:18:f6:a0:cf:71:6f:0c:2e:9b:d2:2d:b3:99:93:83:44:ac: + 15:aa:9b:2e:67:ec:4f:88:69:05:56:7b:8b:b2:43:a9:3a:6c: + 1c:13:33:25:1b:fd:a8:c8:57:02:fb:1c:e0:d1:bd:3b:56:44: + 65:c3:63:f5:1b:ef:ec:30:d9:e3:6e:2e:13:e9:39:08:2a:0c: + 72:f3:9a:cc:f6:27:29:84:d3:ef:4c:c7:84:11:65:1f:c6:e3: + 81:03:db:87:cc:78:f7:b5:9d:96:3e:6a:7f:bc:11:85:7a:75: + e6:41:7d:0d:cf:f9:e5:85:69:25:8f:c7:8d:07:2d:f8:69:0f: + cb:41:53:00 +-----BEGIN CERTIFICATE----- +MIIEbjCCA1agAwIBAgIQboqQ68/wRIpyDQgF0IKlRDANBgkqhkiG9w0BAQsFADBY +MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo +R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xMzEw +MzEwMDAwMDBaFw0yMzEwMzAyMzU5NTlaMEcxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMSAwHgYDVQQDExdHZW9UcnVzdCBFViBTU0wgQ0EgLSBH +NDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANm0BfI4Zw8J53z1Yyrl +uV6oEa51cdlMhGetiV38KD0qsKXV1OYwCoTU5BjLhTfFRnHrHHtp22VpjDAFPgfh +bzzBC2HmOET8vIwvTnVX9ZaZfD6HHw+QS3DDPzlFOzpry7t7QFTRi0uhctIE6eBy +GpMRei/xq52cmFiuLOp3Xy8uh6+4a+Pi4j/WPeCWRN8RVWNSL/QmeMQPIE0KwGhw +FYY47rd2iKsYj081HtSMydt+PUTUNozBN7VZW4f56fHUxSi9HdzMlnLReqGnILW4 +r/hupWB7K40f7vQr1mnNr8qAWCnoTAAgikkKbo6MqNEAEoS2xeKVosA7pGvwgtCW +XSUCAwEAAaOCAUMwggE/MBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQD +AgEGMC8GCCsGAQUFBwEBBCMwITAfBggrBgEFBQcwAYYTaHR0cDovL2cyLnN5bWNi +LmNvbTBHBgNVHSAEQDA+MDwGBFUdIAAwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93 +d3cuZ2VvdHJ1c3QuY29tL3Jlc291cmNlcy9jcHMwNAYDVR0fBC0wKzApoCegJYYj +aHR0cDovL2cxLnN5bWNiLmNvbS9HZW9UcnVzdFBDQS5jcmwwKQYDVR0RBCIwIKQe +MBwxGjAYBgNVBAMTEVN5bWFudGVjUEtJLTEtNTM4MB0GA1UdDgQWBBTez1xQt64C +HxUXqhboDbUonWpa8zAfBgNVHSMEGDAWgBQs1VBBlxWL8I82YVtK+2vZmckzkjAN +BgkqhkiG9w0BAQsFAAOCAQEAtI69B7mahew7Z70HYGHmhNHU7+sbuguCS5VktmZT +I723hN3ke40J2s+y9fHDv4eEvk6mqMLnEjkoNOCkVkRADJ+IoxXT6NNe4xwEYPtp +Nk9qfgwqKMHzqlgObM4dB8NKwJyNw3SxroLwGuH5Tim9Rt63Hfl929kPhMuSRcwc +sxj2oM9xbwwum9Its5mTg0SsFaqbLmfsT4hpBVZ7i7JDqTpsHBMzJRv9qMhXAvsc +4NG9O1ZEZcNj9Rvv7DDZ424uE+k5CCoMcvOazPYnKYTT70zHhBFlH8bjgQPbh8x4 +97Wdlj5qf7wRhXp15kF9Dc/55YVpJY/HjQct+GkPy0FTAA== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_17[] = { + 0x30, 0x82, 0x04, 0x6e, 0x30, 0x82, 0x03, 0x56, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x6e, 0x8a, 0x90, 0xeb, 0xcf, 0xf0, 0x44, 0x8a, 0x72, + 0x0d, 0x08, 0x05, 0xd0, 0x82, 0xa5, 0x44, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x58, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x28, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, + 0x33, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, + 0x33, 0x31, 0x30, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, + 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x17, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, + 0x56, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, + 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, + 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xd9, 0xb4, + 0x05, 0xf2, 0x38, 0x67, 0x0f, 0x09, 0xe7, 0x7c, 0xf5, 0x63, 0x2a, 0xe5, + 0xb9, 0x5e, 0xa8, 0x11, 0xae, 0x75, 0x71, 0xd9, 0x4c, 0x84, 0x67, 0xad, + 0x89, 0x5d, 0xfc, 0x28, 0x3d, 0x2a, 0xb0, 0xa5, 0xd5, 0xd4, 0xe6, 0x30, + 0x0a, 0x84, 0xd4, 0xe4, 0x18, 0xcb, 0x85, 0x37, 0xc5, 0x46, 0x71, 0xeb, + 0x1c, 0x7b, 0x69, 0xdb, 0x65, 0x69, 0x8c, 0x30, 0x05, 0x3e, 0x07, 0xe1, + 0x6f, 0x3c, 0xc1, 0x0b, 0x61, 0xe6, 0x38, 0x44, 0xfc, 0xbc, 0x8c, 0x2f, + 0x4e, 0x75, 0x57, 0xf5, 0x96, 0x99, 0x7c, 0x3e, 0x87, 0x1f, 0x0f, 0x90, + 0x4b, 0x70, 0xc3, 0x3f, 0x39, 0x45, 0x3b, 0x3a, 0x6b, 0xcb, 0xbb, 0x7b, + 0x40, 0x54, 0xd1, 0x8b, 0x4b, 0xa1, 0x72, 0xd2, 0x04, 0xe9, 0xe0, 0x72, + 0x1a, 0x93, 0x11, 0x7a, 0x2f, 0xf1, 0xab, 0x9d, 0x9c, 0x98, 0x58, 0xae, + 0x2c, 0xea, 0x77, 0x5f, 0x2f, 0x2e, 0x87, 0xaf, 0xb8, 0x6b, 0xe3, 0xe2, + 0xe2, 0x3f, 0xd6, 0x3d, 0xe0, 0x96, 0x44, 0xdf, 0x11, 0x55, 0x63, 0x52, + 0x2f, 0xf4, 0x26, 0x78, 0xc4, 0x0f, 0x20, 0x4d, 0x0a, 0xc0, 0x68, 0x70, + 0x15, 0x86, 0x38, 0xee, 0xb7, 0x76, 0x88, 0xab, 0x18, 0x8f, 0x4f, 0x35, + 0x1e, 0xd4, 0x8c, 0xc9, 0xdb, 0x7e, 0x3d, 0x44, 0xd4, 0x36, 0x8c, 0xc1, + 0x37, 0xb5, 0x59, 0x5b, 0x87, 0xf9, 0xe9, 0xf1, 0xd4, 0xc5, 0x28, 0xbd, + 0x1d, 0xdc, 0xcc, 0x96, 0x72, 0xd1, 0x7a, 0xa1, 0xa7, 0x20, 0xb5, 0xb8, + 0xaf, 0xf8, 0x6e, 0xa5, 0x60, 0x7b, 0x2b, 0x8d, 0x1f, 0xee, 0xf4, 0x2b, + 0xd6, 0x69, 0xcd, 0xaf, 0xca, 0x80, 0x58, 0x29, 0xe8, 0x4c, 0x00, 0x20, + 0x8a, 0x49, 0x0a, 0x6e, 0x8e, 0x8c, 0xa8, 0xd1, 0x00, 0x12, 0x84, 0xb6, + 0xc5, 0xe2, 0x95, 0xa2, 0xc0, 0x3b, 0xa4, 0x6b, 0xf0, 0x82, 0xd0, 0x96, + 0x5d, 0x25, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x43, 0x30, + 0x82, 0x01, 0x3f, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x47, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x40, 0x30, 0x3e, 0x30, 0x3c, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, + 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, + 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, + 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x2d, 0x30, 0x2b, 0x30, 0x29, 0xa0, 0x27, 0xa0, 0x25, 0x86, 0x23, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x31, 0x2e, 0x73, 0x79, + 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x6f, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x50, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, + 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, + 0x2d, 0x31, 0x2d, 0x35, 0x33, 0x38, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0xde, 0xcf, 0x5c, 0x50, 0xb7, 0xae, 0x02, + 0x1f, 0x15, 0x17, 0xaa, 0x16, 0xe8, 0x0d, 0xb5, 0x28, 0x9d, 0x6a, 0x5a, + 0xf3, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0x2c, 0xd5, 0x50, 0x41, 0x97, 0x15, 0x8b, 0xf0, 0x8f, 0x36, + 0x61, 0x5b, 0x4a, 0xfb, 0x6b, 0xd9, 0x99, 0xc9, 0x33, 0x92, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xb4, 0x8e, 0xbd, 0x07, 0xb9, 0x9a, + 0x85, 0xec, 0x3b, 0x67, 0xbd, 0x07, 0x60, 0x61, 0xe6, 0x84, 0xd1, 0xd4, + 0xef, 0xeb, 0x1b, 0xba, 0x0b, 0x82, 0x4b, 0x95, 0x64, 0xb6, 0x66, 0x53, + 0x23, 0xbd, 0xb7, 0x84, 0xdd, 0xe4, 0x7b, 0x8d, 0x09, 0xda, 0xcf, 0xb2, + 0xf5, 0xf1, 0xc3, 0xbf, 0x87, 0x84, 0xbe, 0x4e, 0xa6, 0xa8, 0xc2, 0xe7, + 0x12, 0x39, 0x28, 0x34, 0xe0, 0xa4, 0x56, 0x44, 0x40, 0x0c, 0x9f, 0x88, + 0xa3, 0x15, 0xd3, 0xe8, 0xd3, 0x5e, 0xe3, 0x1c, 0x04, 0x60, 0xfb, 0x69, + 0x36, 0x4f, 0x6a, 0x7e, 0x0c, 0x2a, 0x28, 0xc1, 0xf3, 0xaa, 0x58, 0x0e, + 0x6c, 0xce, 0x1d, 0x07, 0xc3, 0x4a, 0xc0, 0x9c, 0x8d, 0xc3, 0x74, 0xb1, + 0xae, 0x82, 0xf0, 0x1a, 0xe1, 0xf9, 0x4e, 0x29, 0xbd, 0x46, 0xde, 0xb7, + 0x1d, 0xf9, 0x7d, 0xdb, 0xd9, 0x0f, 0x84, 0xcb, 0x92, 0x45, 0xcc, 0x1c, + 0xb3, 0x18, 0xf6, 0xa0, 0xcf, 0x71, 0x6f, 0x0c, 0x2e, 0x9b, 0xd2, 0x2d, + 0xb3, 0x99, 0x93, 0x83, 0x44, 0xac, 0x15, 0xaa, 0x9b, 0x2e, 0x67, 0xec, + 0x4f, 0x88, 0x69, 0x05, 0x56, 0x7b, 0x8b, 0xb2, 0x43, 0xa9, 0x3a, 0x6c, + 0x1c, 0x13, 0x33, 0x25, 0x1b, 0xfd, 0xa8, 0xc8, 0x57, 0x02, 0xfb, 0x1c, + 0xe0, 0xd1, 0xbd, 0x3b, 0x56, 0x44, 0x65, 0xc3, 0x63, 0xf5, 0x1b, 0xef, + 0xec, 0x30, 0xd9, 0xe3, 0x6e, 0x2e, 0x13, 0xe9, 0x39, 0x08, 0x2a, 0x0c, + 0x72, 0xf3, 0x9a, 0xcc, 0xf6, 0x27, 0x29, 0x84, 0xd3, 0xef, 0x4c, 0xc7, + 0x84, 0x11, 0x65, 0x1f, 0xc6, 0xe3, 0x81, 0x03, 0xdb, 0x87, 0xcc, 0x78, + 0xf7, 0xb5, 0x9d, 0x96, 0x3e, 0x6a, 0x7f, 0xbc, 0x11, 0x85, 0x7a, 0x75, + 0xe6, 0x41, 0x7d, 0x0d, 0xcf, 0xf9, 0xe5, 0x85, 0x69, 0x25, 0x8f, 0xc7, + 0x8d, 0x07, 0x2d, 0xf8, 0x69, 0x0f, 0xcb, 0x41, 0x53, 0x00, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1828629 (0x1be715) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=The Go Daddy Group, Inc., OU=Go Daddy Class 2 Certification Authority + Validity + Not Before: Jan 1 07:00:00 2014 GMT + Not After : May 30 07:00:00 2031 GMT + Subject: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., CN=Go Daddy Root Certificate Authority - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:bf:71:62:08:f1:fa:59:34:f7:1b:c9:18:a3:f7: + 80:49:58:e9:22:83:13:a6:c5:20:43:01:3b:84:f1: + e6:85:49:9f:27:ea:f6:84:1b:4e:a0:b4:db:70:98: + c7:32:01:b1:05:3e:07:4e:ee:f4:fa:4f:2f:59:30: + 22:e7:ab:19:56:6b:e2:80:07:fc:f3:16:75:80:39: + 51:7b:e5:f9:35:b6:74:4e:a9:8d:82:13:e4:b6:3f: + a9:03:83:fa:a2:be:8a:15:6a:7f:de:0b:c3:b6:19: + 14:05:ca:ea:c3:a8:04:94:3b:46:7c:32:0d:f3:00: + 66:22:c8:8d:69:6d:36:8c:11:18:b7:d3:b2:1c:60: + b4:38:fa:02:8c:ce:d3:dd:46:07:de:0a:3e:eb:5d: + 7c:c8:7c:fb:b0:2b:53:a4:92:62:69:51:25:05:61: + 1a:44:81:8c:2c:a9:43:96:23:df:ac:3a:81:9a:0e: + 29:c5:1c:a9:e9:5d:1e:b6:9e:9e:30:0a:39:ce:f1: + 88:80:fb:4b:5d:cc:32:ec:85:62:43:25:34:02:56: + 27:01:91:b4:3b:70:2a:3f:6e:b1:e8:9c:88:01:7d: + 9f:d4:f9:db:53:6d:60:9d:bf:2c:e7:58:ab:b8:5f: + 46:fc:ce:c4:1b:03:3c:09:eb:49:31:5c:69:46:b3: + e0:47 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 3A:9A:85:07:10:67:28:B6:EF:F6:BD:05:41:6E:20:C1:94:DA:0F:DE + X509v3 Authority Key Identifier: + keyid:D2:C4:B0:D2:91:D4:4C:11:71:B3:61:CB:3D:A1:FE:DD:A8:6A:D4:E3 + + Authority Information Access: + OCSP - URI:http://ocsp.godaddy.com/ + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.godaddy.com/gdroot.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://certs.godaddy.com/repository/ + + Signature Algorithm: sha256WithRSAEncryption + 59:0b:53:bd:92:86:11:a7:24:7b:ed:5b:31:cf:1d:1f:6c:70: + c5:b8:6e:be:4e:bb:f6:be:97:50:e1:30:7f:ba:28:5c:62:94: + c2:e3:7e:33:f7:fb:42:76:85:db:95:1c:8c:22:58:75:09:0c: + 88:65:67:39:0a:16:09:c5:a0:38:97:a4:c5:23:93:3f:b4:18: + a6:01:06:44:91:e3:a7:69:27:b4:5a:25:7f:3a:b7:32:cd:dd: + 84:ff:2a:38:29:33:a4:dd:67:b2:85:fe:a1:88:20:1c:50:89: + c8:dc:2a:f6:42:03:37:4c:e6:88:df:d5:af:24:f2:b1:c3:df: + cc:b5:ec:e0:99:5e:b7:49:54:20:3c:94:18:0c:c7:1c:52:18: + 49:a4:6d:e1:b3:58:0b:c9:d8:ec:d9:ae:1c:32:8e:28:70:0d: + e2:fe:a6:17:9e:84:0f:bd:57:70:b3:5a:e9:1f:a0:86:53:bb: + ef:7c:ff:69:0b:e0:48:c3:b7:93:0b:c8:0a:54:c4:ac:5d:14: + 67:37:6c:ca:a5:2f:31:08:37:aa:6e:6f:8c:bc:9b:e2:57:5d: + 24:81:af:97:97:9c:84:ad:6c:ac:37:4c:66:f3:61:91:11:20: + e4:be:30:9f:7a:a4:29:09:b0:e1:34:5f:64:77:18:40:51:df: + 8c:30:a6:af +-----BEGIN CERTIFICATE----- +MIIEfTCCA2WgAwIBAgIDG+cVMA0GCSqGSIb3DQEBCwUAMGMxCzAJBgNVBAYTAlVT +MSEwHwYDVQQKExhUaGUgR28gRGFkZHkgR3JvdXAsIEluYy4xMTAvBgNVBAsTKEdv +IERhZGR5IENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQwMTAx +MDcwMDAwWhcNMzEwNTMwMDcwMDAwWjCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHku +Y29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1 +dGhvcml0eSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv3Fi +CPH6WTT3G8kYo/eASVjpIoMTpsUgQwE7hPHmhUmfJ+r2hBtOoLTbcJjHMgGxBT4H +Tu70+k8vWTAi56sZVmvigAf88xZ1gDlRe+X5NbZ0TqmNghPktj+pA4P6or6KFWp/ +3gvDthkUBcrqw6gElDtGfDIN8wBmIsiNaW02jBEYt9OyHGC0OPoCjM7T3UYH3go+ +6118yHz7sCtTpJJiaVElBWEaRIGMLKlDliPfrDqBmg4pxRyp6V0etp6eMAo5zvGI +gPtLXcwy7IViQyU0AlYnAZG0O3AqP26x6JyIAX2f1PnbU21gnb8s51iruF9G/M7E +GwM8CetJMVxpRrPgRwIDAQABo4IBFzCCARMwDwYDVR0TAQH/BAUwAwEB/zAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9BUFuIMGU2g/eMB8GA1Ud +IwQYMBaAFNLEsNKR1EwRcbNhyz2h/t2oatTjMDQGCCsGAQUFBwEBBCgwJjAkBggr +BgEFBQcwAYYYaHR0cDovL29jc3AuZ29kYWRkeS5jb20vMDIGA1UdHwQrMCkwJ6Al +oCOGIWh0dHA6Ly9jcmwuZ29kYWRkeS5jb20vZ2Ryb290LmNybDBGBgNVHSAEPzA9 +MDsGBFUdIAAwMzAxBggrBgEFBQcCARYlaHR0cHM6Ly9jZXJ0cy5nb2RhZGR5LmNv +bS9yZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAWQtTvZKGEacke+1bMc8d +H2xwxbhuvk679r6XUOEwf7ooXGKUwuN+M/f7QnaF25UcjCJYdQkMiGVnOQoWCcWg +OJekxSOTP7QYpgEGRJHjp2kntFolfzq3Ms3dhP8qOCkzpN1nsoX+oYggHFCJyNwq +9kIDN0zmiN/VryTyscPfzLXs4Jlet0lUIDyUGAzHHFIYSaRt4bNYC8nY7NmuHDKO +KHAN4v6mF56ED71XcLNa6R+ghlO773z/aQvgSMO3kwvIClTErF0UZzdsyqUvMQg3 +qm5vjLyb4lddJIGvl5echK1srDdMZvNhkREg5L4wn3qkKQmw4TRfZHcYQFHfjDCm +rw== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_18[] = { + 0x30, 0x82, 0x04, 0x7d, 0x30, 0x82, 0x03, 0x65, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x1b, 0xe7, 0x15, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x63, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x18, 0x54, + 0x68, 0x65, 0x20, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, + 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x28, 0x47, 0x6f, + 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x20, 0x32, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x31, 0x30, 0x31, + 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x30, + 0x35, 0x33, 0x30, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x81, + 0x83, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, + 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, + 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, + 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, + 0x04, 0x0a, 0x13, 0x11, 0x47, 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e, + 0x63, 0x6f, 0x6d, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, + 0x2f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x28, 0x47, 0x6f, 0x20, 0x44, + 0x61, 0x64, 0x64, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbf, 0x71, 0x62, + 0x08, 0xf1, 0xfa, 0x59, 0x34, 0xf7, 0x1b, 0xc9, 0x18, 0xa3, 0xf7, 0x80, + 0x49, 0x58, 0xe9, 0x22, 0x83, 0x13, 0xa6, 0xc5, 0x20, 0x43, 0x01, 0x3b, + 0x84, 0xf1, 0xe6, 0x85, 0x49, 0x9f, 0x27, 0xea, 0xf6, 0x84, 0x1b, 0x4e, + 0xa0, 0xb4, 0xdb, 0x70, 0x98, 0xc7, 0x32, 0x01, 0xb1, 0x05, 0x3e, 0x07, + 0x4e, 0xee, 0xf4, 0xfa, 0x4f, 0x2f, 0x59, 0x30, 0x22, 0xe7, 0xab, 0x19, + 0x56, 0x6b, 0xe2, 0x80, 0x07, 0xfc, 0xf3, 0x16, 0x75, 0x80, 0x39, 0x51, + 0x7b, 0xe5, 0xf9, 0x35, 0xb6, 0x74, 0x4e, 0xa9, 0x8d, 0x82, 0x13, 0xe4, + 0xb6, 0x3f, 0xa9, 0x03, 0x83, 0xfa, 0xa2, 0xbe, 0x8a, 0x15, 0x6a, 0x7f, + 0xde, 0x0b, 0xc3, 0xb6, 0x19, 0x14, 0x05, 0xca, 0xea, 0xc3, 0xa8, 0x04, + 0x94, 0x3b, 0x46, 0x7c, 0x32, 0x0d, 0xf3, 0x00, 0x66, 0x22, 0xc8, 0x8d, + 0x69, 0x6d, 0x36, 0x8c, 0x11, 0x18, 0xb7, 0xd3, 0xb2, 0x1c, 0x60, 0xb4, + 0x38, 0xfa, 0x02, 0x8c, 0xce, 0xd3, 0xdd, 0x46, 0x07, 0xde, 0x0a, 0x3e, + 0xeb, 0x5d, 0x7c, 0xc8, 0x7c, 0xfb, 0xb0, 0x2b, 0x53, 0xa4, 0x92, 0x62, + 0x69, 0x51, 0x25, 0x05, 0x61, 0x1a, 0x44, 0x81, 0x8c, 0x2c, 0xa9, 0x43, + 0x96, 0x23, 0xdf, 0xac, 0x3a, 0x81, 0x9a, 0x0e, 0x29, 0xc5, 0x1c, 0xa9, + 0xe9, 0x5d, 0x1e, 0xb6, 0x9e, 0x9e, 0x30, 0x0a, 0x39, 0xce, 0xf1, 0x88, + 0x80, 0xfb, 0x4b, 0x5d, 0xcc, 0x32, 0xec, 0x85, 0x62, 0x43, 0x25, 0x34, + 0x02, 0x56, 0x27, 0x01, 0x91, 0xb4, 0x3b, 0x70, 0x2a, 0x3f, 0x6e, 0xb1, + 0xe8, 0x9c, 0x88, 0x01, 0x7d, 0x9f, 0xd4, 0xf9, 0xdb, 0x53, 0x6d, 0x60, + 0x9d, 0xbf, 0x2c, 0xe7, 0x58, 0xab, 0xb8, 0x5f, 0x46, 0xfc, 0xce, 0xc4, + 0x1b, 0x03, 0x3c, 0x09, 0xeb, 0x49, 0x31, 0x5c, 0x69, 0x46, 0xb3, 0xe0, + 0x47, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x17, 0x30, 0x82, + 0x01, 0x13, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, + 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3a, 0x9a, + 0x85, 0x07, 0x10, 0x67, 0x28, 0xb6, 0xef, 0xf6, 0xbd, 0x05, 0x41, 0x6e, + 0x20, 0xc1, 0x94, 0xda, 0x0f, 0xde, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xd2, 0xc4, 0xb0, 0xd2, 0x91, + 0xd4, 0x4c, 0x11, 0x71, 0xb3, 0x61, 0xcb, 0x3d, 0xa1, 0xfe, 0xdd, 0xa8, + 0x6a, 0xd4, 0xe3, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6f, 0x64, + 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x32, 0x06, + 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30, 0x27, 0xa0, 0x25, + 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, + 0x72, 0x6c, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x64, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, + 0x6c, 0x30, 0x46, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, + 0x30, 0x3b, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74, + 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x2f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x59, 0x0b, 0x53, + 0xbd, 0x92, 0x86, 0x11, 0xa7, 0x24, 0x7b, 0xed, 0x5b, 0x31, 0xcf, 0x1d, + 0x1f, 0x6c, 0x70, 0xc5, 0xb8, 0x6e, 0xbe, 0x4e, 0xbb, 0xf6, 0xbe, 0x97, + 0x50, 0xe1, 0x30, 0x7f, 0xba, 0x28, 0x5c, 0x62, 0x94, 0xc2, 0xe3, 0x7e, + 0x33, 0xf7, 0xfb, 0x42, 0x76, 0x85, 0xdb, 0x95, 0x1c, 0x8c, 0x22, 0x58, + 0x75, 0x09, 0x0c, 0x88, 0x65, 0x67, 0x39, 0x0a, 0x16, 0x09, 0xc5, 0xa0, + 0x38, 0x97, 0xa4, 0xc5, 0x23, 0x93, 0x3f, 0xb4, 0x18, 0xa6, 0x01, 0x06, + 0x44, 0x91, 0xe3, 0xa7, 0x69, 0x27, 0xb4, 0x5a, 0x25, 0x7f, 0x3a, 0xb7, + 0x32, 0xcd, 0xdd, 0x84, 0xff, 0x2a, 0x38, 0x29, 0x33, 0xa4, 0xdd, 0x67, + 0xb2, 0x85, 0xfe, 0xa1, 0x88, 0x20, 0x1c, 0x50, 0x89, 0xc8, 0xdc, 0x2a, + 0xf6, 0x42, 0x03, 0x37, 0x4c, 0xe6, 0x88, 0xdf, 0xd5, 0xaf, 0x24, 0xf2, + 0xb1, 0xc3, 0xdf, 0xcc, 0xb5, 0xec, 0xe0, 0x99, 0x5e, 0xb7, 0x49, 0x54, + 0x20, 0x3c, 0x94, 0x18, 0x0c, 0xc7, 0x1c, 0x52, 0x18, 0x49, 0xa4, 0x6d, + 0xe1, 0xb3, 0x58, 0x0b, 0xc9, 0xd8, 0xec, 0xd9, 0xae, 0x1c, 0x32, 0x8e, + 0x28, 0x70, 0x0d, 0xe2, 0xfe, 0xa6, 0x17, 0x9e, 0x84, 0x0f, 0xbd, 0x57, + 0x70, 0xb3, 0x5a, 0xe9, 0x1f, 0xa0, 0x86, 0x53, 0xbb, 0xef, 0x7c, 0xff, + 0x69, 0x0b, 0xe0, 0x48, 0xc3, 0xb7, 0x93, 0x0b, 0xc8, 0x0a, 0x54, 0xc4, + 0xac, 0x5d, 0x14, 0x67, 0x37, 0x6c, 0xca, 0xa5, 0x2f, 0x31, 0x08, 0x37, + 0xaa, 0x6e, 0x6f, 0x8c, 0xbc, 0x9b, 0xe2, 0x57, 0x5d, 0x24, 0x81, 0xaf, + 0x97, 0x97, 0x9c, 0x84, 0xad, 0x6c, 0xac, 0x37, 0x4c, 0x66, 0xf3, 0x61, + 0x91, 0x11, 0x20, 0xe4, 0xbe, 0x30, 0x9f, 0x7a, 0xa4, 0x29, 0x09, 0xb0, + 0xe1, 0x34, 0x5f, 0x64, 0x77, 0x18, 0x40, 0x51, 0xdf, 0x8c, 0x30, 0xa6, + 0xaf, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 06:9e:1d:b7:7f:cf:1d:fb:a9:7a:f5:e5:c9:a2:40:37 + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Global Root CA + Validity + Not Before: Mar 8 12:00:00 2013 GMT + Not After : Mar 8 12:00:00 2023 GMT + Subject: C=US, O=DigiCert Inc, CN=DigiCert Secure Server CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:bb:57:e4:21:a9:d5:9b:60:37:7e:8e:a1:61:7f: + 81:e2:1a:c2:75:64:d9:91:50:0b:e4:36:44:24:6e: + 30:d2:9b:7a:27:fa:c2:6a:ae:6a:70:09:38:b9:20: + 0a:c8:65:10:4a:88:ac:31:f2:dc:92:f2:63:a1:5d: + 80:63:59:80:92:23:1c:e6:ef:76:4a:50:35:c9:d8: + 71:38:b9:ed:f0:e6:42:ae:d3:38:26:79:30:f9:22: + 94:c6:db:a6:3f:41:78:90:d8:de:5c:7e:69:7d:f8: + 90:15:3a:d0:a1:a0:be:fa:b2:b2:19:a1:d8:2b:d1: + ce:bf:6b:dd:49:ab:a3:92:fe:b5:ab:c8:c1:3e:ee: + 01:00:d8:a9:44:b8:42:73:88:c3:61:f5:ab:4a:83: + 28:0a:d2:d4:49:fa:6a:b1:cd:df:57:2c:94:e5:e2: + ca:83:5f:b7:ba:62:5c:2f:68:a5:f0:c0:b9:fd:2b: + d1:e9:1f:d8:1a:62:15:bd:ff:3d:a6:f7:cb:ef:e6: + db:65:2f:25:38:ec:fb:e6:20:66:58:96:34:19:d2: + 15:ce:21:d3:24:cc:d9:14:6f:d8:fe:55:c7:e7:6f: + b6:0f:1a:8c:49:be:29:f2:ba:5a:9a:81:26:37:24: + 6f:d7:48:12:6c:2e:59:f5:9c:18:bb:d9:f6:68:e2: + df:45 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + Authority Information Access: + OCSP - URI:http://ocsp.digicert.com + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl3.digicert.com/DigiCertGlobalRootCA.crl + + Full Name: + URI:http://crl4.digicert.com/DigiCertGlobalRootCA.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.digicert.com/CPS + + X509v3 Subject Key Identifier: + 90:71:DB:37:EB:73:C8:EF:DC:D5:1E:12:B6:34:BA:2B:5A:A0:A6:92 + X509v3 Authority Key Identifier: + keyid:03:DE:50:35:56:D1:4C:BB:66:F0:A3:E2:1B:1B:C3:97:B2:3D:D1:55 + + Signature Algorithm: sha1WithRSAEncryption + 30:ce:d1:95:51:00:ae:06:0b:a1:0e:02:c0:17:ac:b6:7f:8f: + 20:f6:40:75:74:1c:cc:78:b1:a4:4f:ea:f4:d0:c4:9d:a2:de: + 81:07:26:1f:40:88:51:f0:1f:cf:b7:4c:40:99:d0:f4:3c:71: + 98:73:88:97:2c:19:d7:6e:84:8f:a4:1f:9c:5a:20:e3:51:5c: + b0:c5:9e:99:6a:4f:c8:69:f7:10:ff:4e:ad:19:d9:c9:58:b3: + 33:ae:0c:d9:96:29:9e:71:b2:70:63:a3:b6:99:16:42:1d:65: + f3:f7:a0:1e:7d:c5:d4:65:14:b2:62:84:d4:6c:5c:08:0c:d8: + 6c:93:2b:b4:76:59:8a:d1:7f:ff:03:d8:c2:5d:b8:2f:22:d6: + 38:f0:f6:9c:6b:7d:46:eb:99:74:f7:eb:4a:0e:a9:a6:04:eb: + 7b:ce:f0:5c:6b:98:31:5a:98:40:eb:69:c4:05:f4:20:a8:ca: + 08:3a:65:6c:38:15:f5:5c:2c:b2:55:e4:2c:6b:41:f0:be:5c: + 46:ca:4a:29:a0:48:5e:20:d2:45:ff:05:de:34:af:70:4b:81: + 39:e2:ca:07:57:7c:b6:31:dc:21:29:e2:be:97:0e:77:90:14: + 51:40:e1:bf:e3:cc:1b:19:9c:25:ca:a7:06:b2:53:df:23:b2: + cf:12:19:a3 +-----BEGIN CERTIFICATE----- +MIIEjzCCA3egAwIBAgIQBp4dt3/PHfupevXlyaJANzANBgkqhkiG9w0BAQUFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD +QTAeFw0xMzAzMDgxMjAwMDBaFw0yMzAzMDgxMjAwMDBaMEgxCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxIjAgBgNVBAMTGURpZ2lDZXJ0IFNlY3Vy +ZSBTZXJ2ZXIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7V+Qh +qdWbYDd+jqFhf4HiGsJ1ZNmRUAvkNkQkbjDSm3on+sJqrmpwCTi5IArIZRBKiKwx +8tyS8mOhXYBjWYCSIxzm73ZKUDXJ2HE4ue3w5kKu0zgmeTD5IpTG26Y/QXiQ2N5c +fml9+JAVOtChoL76srIZodgr0c6/a91Jq6OS/rWryME+7gEA2KlEuEJziMNh9atK +gygK0tRJ+mqxzd9XLJTl4sqDX7e6YlwvaKXwwLn9K9HpH9gaYhW9/z2m98vv5ttl +LyU47PvmIGZYljQZ0hXOIdMkzNkUb9j+Vcfnb7YPGoxJvinyulqagSY3JG/XSBJs +Lln1nBi72fZo4t9FAgMBAAGjggFaMIIBVjASBgNVHRMBAf8ECDAGAQH/AgEAMA4G +A1UdDwEB/wQEAwIBhjA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6 +Ly9vY3NwLmRpZ2ljZXJ0LmNvbTB7BgNVHR8EdDByMDegNaAzhjFodHRwOi8vY3Js +My5kaWdpY2VydC5jb20vRGlnaUNlcnRHbG9iYWxSb290Q0EuY3JsMDegNaAzhjFo +dHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRHbG9iYWxSb290Q0EuY3Js +MD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5k +aWdpY2VydC5jb20vQ1BTMB0GA1UdDgQWBBSQcds363PI79zVHhK2NLorWqCmkjAf +BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTANBgkqhkiG9w0BAQUFAAOC +AQEAMM7RlVEArgYLoQ4CwBestn+PIPZAdXQczHixpE/q9NDEnaLegQcmH0CIUfAf +z7dMQJnQ9DxxmHOIlywZ126Ej6QfnFog41FcsMWemWpPyGn3EP9OrRnZyVizM64M +2ZYpnnGycGOjtpkWQh1l8/egHn3F1GUUsmKE1GxcCAzYbJMrtHZZitF//wPYwl24 +LyLWOPD2nGt9RuuZdPfrSg6ppgTre87wXGuYMVqYQOtpxAX0IKjKCDplbDgV9Vws +slXkLGtB8L5cRspKKaBIXiDSRf8F3jSvcEuBOeLKB1d8tjHcISnivpcOd5AUUUDh +v+PMGxmcJcqnBrJT3yOyzxIZow== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_19[] = { + 0x30, 0x82, 0x04, 0x8f, 0x30, 0x82, 0x03, 0x77, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x06, 0x9e, 0x1d, 0xb7, 0x7f, 0xcf, 0x1d, 0xfb, 0xa9, + 0x7a, 0xf5, 0xe5, 0xc9, 0xa2, 0x40, 0x37, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x61, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x17, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, + 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x30, 0x33, 0x30, 0x38, 0x31, + 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x30, 0x33, + 0x30, 0x38, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x48, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, + 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, + 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, + 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, + 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, + 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbb, 0x57, 0xe4, 0x21, + 0xa9, 0xd5, 0x9b, 0x60, 0x37, 0x7e, 0x8e, 0xa1, 0x61, 0x7f, 0x81, 0xe2, + 0x1a, 0xc2, 0x75, 0x64, 0xd9, 0x91, 0x50, 0x0b, 0xe4, 0x36, 0x44, 0x24, + 0x6e, 0x30, 0xd2, 0x9b, 0x7a, 0x27, 0xfa, 0xc2, 0x6a, 0xae, 0x6a, 0x70, + 0x09, 0x38, 0xb9, 0x20, 0x0a, 0xc8, 0x65, 0x10, 0x4a, 0x88, 0xac, 0x31, + 0xf2, 0xdc, 0x92, 0xf2, 0x63, 0xa1, 0x5d, 0x80, 0x63, 0x59, 0x80, 0x92, + 0x23, 0x1c, 0xe6, 0xef, 0x76, 0x4a, 0x50, 0x35, 0xc9, 0xd8, 0x71, 0x38, + 0xb9, 0xed, 0xf0, 0xe6, 0x42, 0xae, 0xd3, 0x38, 0x26, 0x79, 0x30, 0xf9, + 0x22, 0x94, 0xc6, 0xdb, 0xa6, 0x3f, 0x41, 0x78, 0x90, 0xd8, 0xde, 0x5c, + 0x7e, 0x69, 0x7d, 0xf8, 0x90, 0x15, 0x3a, 0xd0, 0xa1, 0xa0, 0xbe, 0xfa, + 0xb2, 0xb2, 0x19, 0xa1, 0xd8, 0x2b, 0xd1, 0xce, 0xbf, 0x6b, 0xdd, 0x49, + 0xab, 0xa3, 0x92, 0xfe, 0xb5, 0xab, 0xc8, 0xc1, 0x3e, 0xee, 0x01, 0x00, + 0xd8, 0xa9, 0x44, 0xb8, 0x42, 0x73, 0x88, 0xc3, 0x61, 0xf5, 0xab, 0x4a, + 0x83, 0x28, 0x0a, 0xd2, 0xd4, 0x49, 0xfa, 0x6a, 0xb1, 0xcd, 0xdf, 0x57, + 0x2c, 0x94, 0xe5, 0xe2, 0xca, 0x83, 0x5f, 0xb7, 0xba, 0x62, 0x5c, 0x2f, + 0x68, 0xa5, 0xf0, 0xc0, 0xb9, 0xfd, 0x2b, 0xd1, 0xe9, 0x1f, 0xd8, 0x1a, + 0x62, 0x15, 0xbd, 0xff, 0x3d, 0xa6, 0xf7, 0xcb, 0xef, 0xe6, 0xdb, 0x65, + 0x2f, 0x25, 0x38, 0xec, 0xfb, 0xe6, 0x20, 0x66, 0x58, 0x96, 0x34, 0x19, + 0xd2, 0x15, 0xce, 0x21, 0xd3, 0x24, 0xcc, 0xd9, 0x14, 0x6f, 0xd8, 0xfe, + 0x55, 0xc7, 0xe7, 0x6f, 0xb6, 0x0f, 0x1a, 0x8c, 0x49, 0xbe, 0x29, 0xf2, + 0xba, 0x5a, 0x9a, 0x81, 0x26, 0x37, 0x24, 0x6f, 0xd7, 0x48, 0x12, 0x6c, + 0x2e, 0x59, 0xf5, 0x9c, 0x18, 0xbb, 0xd9, 0xf6, 0x68, 0xe2, 0xdf, 0x45, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x5a, 0x30, 0x82, 0x01, + 0x56, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, + 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, + 0x86, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, + 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, + 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x7b, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x74, 0x30, 0x72, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, + 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, + 0x33, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x34, 0x2e, 0x64, + 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, + 0x32, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, + 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x64, + 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, + 0x04, 0x14, 0x90, 0x71, 0xdb, 0x37, 0xeb, 0x73, 0xc8, 0xef, 0xdc, 0xd5, + 0x1e, 0x12, 0xb6, 0x34, 0xba, 0x2b, 0x5a, 0xa0, 0xa6, 0x92, 0x30, 0x1f, + 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x03, + 0xde, 0x50, 0x35, 0x56, 0xd1, 0x4c, 0xbb, 0x66, 0xf0, 0xa3, 0xe2, 0x1b, + 0x1b, 0xc3, 0x97, 0xb2, 0x3d, 0xd1, 0x55, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x01, 0x00, 0x30, 0xce, 0xd1, 0x95, 0x51, 0x00, 0xae, 0x06, 0x0b, + 0xa1, 0x0e, 0x02, 0xc0, 0x17, 0xac, 0xb6, 0x7f, 0x8f, 0x20, 0xf6, 0x40, + 0x75, 0x74, 0x1c, 0xcc, 0x78, 0xb1, 0xa4, 0x4f, 0xea, 0xf4, 0xd0, 0xc4, + 0x9d, 0xa2, 0xde, 0x81, 0x07, 0x26, 0x1f, 0x40, 0x88, 0x51, 0xf0, 0x1f, + 0xcf, 0xb7, 0x4c, 0x40, 0x99, 0xd0, 0xf4, 0x3c, 0x71, 0x98, 0x73, 0x88, + 0x97, 0x2c, 0x19, 0xd7, 0x6e, 0x84, 0x8f, 0xa4, 0x1f, 0x9c, 0x5a, 0x20, + 0xe3, 0x51, 0x5c, 0xb0, 0xc5, 0x9e, 0x99, 0x6a, 0x4f, 0xc8, 0x69, 0xf7, + 0x10, 0xff, 0x4e, 0xad, 0x19, 0xd9, 0xc9, 0x58, 0xb3, 0x33, 0xae, 0x0c, + 0xd9, 0x96, 0x29, 0x9e, 0x71, 0xb2, 0x70, 0x63, 0xa3, 0xb6, 0x99, 0x16, + 0x42, 0x1d, 0x65, 0xf3, 0xf7, 0xa0, 0x1e, 0x7d, 0xc5, 0xd4, 0x65, 0x14, + 0xb2, 0x62, 0x84, 0xd4, 0x6c, 0x5c, 0x08, 0x0c, 0xd8, 0x6c, 0x93, 0x2b, + 0xb4, 0x76, 0x59, 0x8a, 0xd1, 0x7f, 0xff, 0x03, 0xd8, 0xc2, 0x5d, 0xb8, + 0x2f, 0x22, 0xd6, 0x38, 0xf0, 0xf6, 0x9c, 0x6b, 0x7d, 0x46, 0xeb, 0x99, + 0x74, 0xf7, 0xeb, 0x4a, 0x0e, 0xa9, 0xa6, 0x04, 0xeb, 0x7b, 0xce, 0xf0, + 0x5c, 0x6b, 0x98, 0x31, 0x5a, 0x98, 0x40, 0xeb, 0x69, 0xc4, 0x05, 0xf4, + 0x20, 0xa8, 0xca, 0x08, 0x3a, 0x65, 0x6c, 0x38, 0x15, 0xf5, 0x5c, 0x2c, + 0xb2, 0x55, 0xe4, 0x2c, 0x6b, 0x41, 0xf0, 0xbe, 0x5c, 0x46, 0xca, 0x4a, + 0x29, 0xa0, 0x48, 0x5e, 0x20, 0xd2, 0x45, 0xff, 0x05, 0xde, 0x34, 0xaf, + 0x70, 0x4b, 0x81, 0x39, 0xe2, 0xca, 0x07, 0x57, 0x7c, 0xb6, 0x31, 0xdc, + 0x21, 0x29, 0xe2, 0xbe, 0x97, 0x0e, 0x77, 0x90, 0x14, 0x51, 0x40, 0xe1, + 0xbf, 0xe3, 0xcc, 0x1b, 0x19, 0x9c, 0x25, 0xca, 0xa7, 0x06, 0xb2, 0x53, + 0xdf, 0x23, 0xb2, 0xcf, 0x12, 0x19, 0xa3, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 1b:09:3b:78:60:96:da:37:bb:a4:51:94:46:c8:96:78 + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority + Validity + Not Before: Nov 8 00:00:00 2006 GMT + Not After : Nov 7 23:59:59 2021 GMT + Subject: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 2006 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 3 Public Primary Certification Authority - G5 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:af:24:08:08:29:7a:35:9e:60:0c:aa:e7:4b:3b: + 4e:dc:7c:bc:3c:45:1c:bb:2b:e0:fe:29:02:f9:57: + 08:a3:64:85:15:27:f5:f1:ad:c8:31:89:5d:22:e8: + 2a:aa:a6:42:b3:8f:f8:b9:55:b7:b1:b7:4b:b3:fe: + 8f:7e:07:57:ec:ef:43:db:66:62:15:61:cf:60:0d: + a4:d8:de:f8:e0:c3:62:08:3d:54:13:eb:49:ca:59: + 54:85:26:e5:2b:8f:1b:9f:eb:f5:a1:91:c2:33:49: + d8:43:63:6a:52:4b:d2:8f:e8:70:51:4d:d1:89:69: + 7b:c7:70:f6:b3:dc:12:74:db:7b:5d:4b:56:d3:96: + bf:15:77:a1:b0:f4:a2:25:f2:af:1c:92:67:18:e5: + f4:06:04:ef:90:b9:e4:00:e4:dd:3a:b5:19:ff:02: + ba:f4:3c:ee:e0:8b:eb:37:8b:ec:f4:d7:ac:f2:f6: + f0:3d:af:dd:75:91:33:19:1d:1c:40:cb:74:24:19: + 21:93:d9:14:fe:ac:2a:52:c7:8f:d5:04:49:e4:8d: + 63:47:88:3c:69:83:cb:fe:47:bd:2b:7e:4f:c5:95: + ae:0e:9d:d4:d1:43:c0:67:73:e3:14:08:7e:e5:3f: + 9f:73:b8:33:0a:cf:5d:3f:34:87:96:8a:ee:53:e8: + 25:15 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.verisign.com/pca3.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.verisign.com/cps + + X509v3 Subject Key Identifier: + 7F:D3:65:A7:C2:DD:EC:BB:F0:30:09:F3:43:39:FA:02:AF:33:31:33 + 1.3.6.1.5.5.7.1.12: + 0_.].[0Y0W0U..image/gif0!0.0...+..............k...j.H.,{..0%.#http://logo.verisign.com/vslogo.gif + Authority Information Access: + OCSP - URI:http://ocsp.verisign.com + + Signature Algorithm: sha1WithRSAEncryption + a3:cd:7d:1e:f7:c7:75:8d:48:e7:56:34:4c:00:90:75:a9:51: + a5:56:c1:6d:bc:fe:f5:53:22:e9:98:a2:ac:9a:7e:70:1e:b3: + 8e:3b:45:e3:86:95:31:da:6d:4c:fb:34:50:80:96:cd:24:f2: + 40:df:04:3f:e2:65:ce:34:22:61:15:ea:66:70:64:d2:f1:6e: + f3:ca:18:59:6a:41:46:7e:82:de:19:b0:70:31:56:69:0d:0c: + e6:1d:9d:71:58:dc:cc:de:62:f5:e1:7a:10:02:d8:7a:dc:3b: + fa:57:bd:c9:e9:8f:46:21:39:9f:51:65:4c:8e:3a:be:28:41: + 70:1d +-----BEGIN CERTIFICATE----- +MIIEkDCCA/mgAwIBAgIQGwk7eGCW2je7pFGURsiWeDANBgkqhkiG9w0BAQUFADBf +MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT +LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw +HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv +ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8 +RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb +ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR +TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH +iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB +AAGjggFbMIIBVzAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0 +dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjA9 +BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVy +aXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwbQYI +KwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQU +j+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29t +L3ZzbG9nby5naWYwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8v +b2NzcC52ZXJpc2lnbi5jb20wDQYJKoZIhvcNAQEFBQADgYEAo819HvfHdY1I51Y0 +TACQdalRpVbBbbz+9VMi6ZiirJp+cB6zjjtF44aVMdptTPs0UICWzSTyQN8EP+Jl +zjQiYRXqZnBk0vFu88oYWWpBRn6C3hmwcDFWaQ0M5h2dcVjczN5i9eF6EALYetw7 ++le9yemPRiE5n1FlTI46vihBcB0= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_20[] = { + 0x30, 0x82, 0x04, 0x90, 0x30, 0x82, 0x03, 0xf9, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x1b, 0x09, 0x3b, 0x78, 0x60, 0x96, 0xda, 0x37, 0xbb, + 0xa4, 0x51, 0x94, 0x46, 0xc8, 0x96, 0x78, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5f, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, + 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x30, 0x38, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 0x30, 0x37, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xca, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3a, 0x30, + 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, 0x63, 0x29, 0x20, + 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, + 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, + 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, + 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x45, 0x30, + 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, + 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, + 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, 0x24, 0x08, 0x08, 0x29, 0x7a, 0x35, + 0x9e, 0x60, 0x0c, 0xaa, 0xe7, 0x4b, 0x3b, 0x4e, 0xdc, 0x7c, 0xbc, 0x3c, + 0x45, 0x1c, 0xbb, 0x2b, 0xe0, 0xfe, 0x29, 0x02, 0xf9, 0x57, 0x08, 0xa3, + 0x64, 0x85, 0x15, 0x27, 0xf5, 0xf1, 0xad, 0xc8, 0x31, 0x89, 0x5d, 0x22, + 0xe8, 0x2a, 0xaa, 0xa6, 0x42, 0xb3, 0x8f, 0xf8, 0xb9, 0x55, 0xb7, 0xb1, + 0xb7, 0x4b, 0xb3, 0xfe, 0x8f, 0x7e, 0x07, 0x57, 0xec, 0xef, 0x43, 0xdb, + 0x66, 0x62, 0x15, 0x61, 0xcf, 0x60, 0x0d, 0xa4, 0xd8, 0xde, 0xf8, 0xe0, + 0xc3, 0x62, 0x08, 0x3d, 0x54, 0x13, 0xeb, 0x49, 0xca, 0x59, 0x54, 0x85, + 0x26, 0xe5, 0x2b, 0x8f, 0x1b, 0x9f, 0xeb, 0xf5, 0xa1, 0x91, 0xc2, 0x33, + 0x49, 0xd8, 0x43, 0x63, 0x6a, 0x52, 0x4b, 0xd2, 0x8f, 0xe8, 0x70, 0x51, + 0x4d, 0xd1, 0x89, 0x69, 0x7b, 0xc7, 0x70, 0xf6, 0xb3, 0xdc, 0x12, 0x74, + 0xdb, 0x7b, 0x5d, 0x4b, 0x56, 0xd3, 0x96, 0xbf, 0x15, 0x77, 0xa1, 0xb0, + 0xf4, 0xa2, 0x25, 0xf2, 0xaf, 0x1c, 0x92, 0x67, 0x18, 0xe5, 0xf4, 0x06, + 0x04, 0xef, 0x90, 0xb9, 0xe4, 0x00, 0xe4, 0xdd, 0x3a, 0xb5, 0x19, 0xff, + 0x02, 0xba, 0xf4, 0x3c, 0xee, 0xe0, 0x8b, 0xeb, 0x37, 0x8b, 0xec, 0xf4, + 0xd7, 0xac, 0xf2, 0xf6, 0xf0, 0x3d, 0xaf, 0xdd, 0x75, 0x91, 0x33, 0x19, + 0x1d, 0x1c, 0x40, 0xcb, 0x74, 0x24, 0x19, 0x21, 0x93, 0xd9, 0x14, 0xfe, + 0xac, 0x2a, 0x52, 0xc7, 0x8f, 0xd5, 0x04, 0x49, 0xe4, 0x8d, 0x63, 0x47, + 0x88, 0x3c, 0x69, 0x83, 0xcb, 0xfe, 0x47, 0xbd, 0x2b, 0x7e, 0x4f, 0xc5, + 0x95, 0xae, 0x0e, 0x9d, 0xd4, 0xd1, 0x43, 0xc0, 0x67, 0x73, 0xe3, 0x14, + 0x08, 0x7e, 0xe5, 0x3f, 0x9f, 0x73, 0xb8, 0x33, 0x0a, 0xcf, 0x5d, 0x3f, + 0x34, 0x87, 0x96, 0x8a, 0xee, 0x53, 0xe8, 0x25, 0x15, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x5b, 0x30, 0x82, 0x01, 0x57, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, + 0x01, 0x01, 0xff, 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a, + 0x30, 0x28, 0x30, 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, + 0x61, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3d, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, + 0x73, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, + 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x6d, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, + 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, + 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, + 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, + 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, + 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, + 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, + 0xa3, 0xcd, 0x7d, 0x1e, 0xf7, 0xc7, 0x75, 0x8d, 0x48, 0xe7, 0x56, 0x34, + 0x4c, 0x00, 0x90, 0x75, 0xa9, 0x51, 0xa5, 0x56, 0xc1, 0x6d, 0xbc, 0xfe, + 0xf5, 0x53, 0x22, 0xe9, 0x98, 0xa2, 0xac, 0x9a, 0x7e, 0x70, 0x1e, 0xb3, + 0x8e, 0x3b, 0x45, 0xe3, 0x86, 0x95, 0x31, 0xda, 0x6d, 0x4c, 0xfb, 0x34, + 0x50, 0x80, 0x96, 0xcd, 0x24, 0xf2, 0x40, 0xdf, 0x04, 0x3f, 0xe2, 0x65, + 0xce, 0x34, 0x22, 0x61, 0x15, 0xea, 0x66, 0x70, 0x64, 0xd2, 0xf1, 0x6e, + 0xf3, 0xca, 0x18, 0x59, 0x6a, 0x41, 0x46, 0x7e, 0x82, 0xde, 0x19, 0xb0, + 0x70, 0x31, 0x56, 0x69, 0x0d, 0x0c, 0xe6, 0x1d, 0x9d, 0x71, 0x58, 0xdc, + 0xcc, 0xde, 0x62, 0xf5, 0xe1, 0x7a, 0x10, 0x02, 0xd8, 0x7a, 0xdc, 0x3b, + 0xfa, 0x57, 0xbd, 0xc9, 0xe9, 0x8f, 0x46, 0x21, 0x39, 0x9f, 0x51, 0x65, + 0x4c, 0x8e, 0x3a, 0xbe, 0x28, 0x41, 0x70, 0x1d, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 01:fd:a3:eb:6e:ca:75:c8:88:43:8b:72:4b:cf:bc:91 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Global Root CA + Validity + Not Before: Mar 8 12:00:00 2013 GMT + Not After : Mar 8 12:00:00 2023 GMT + Subject: C=US, O=DigiCert Inc, CN=DigiCert SHA2 Secure Server CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:dc:ae:58:90:4d:c1:c4:30:15:90:35:5b:6e:3c: + 82:15:f5:2c:5c:bd:e3:db:ff:71:43:fa:64:25:80: + d4:ee:18:a2:4d:f0:66:d0:0a:73:6e:11:98:36:17: + 64:af:37:9d:fd:fa:41:84:af:c7:af:8c:fe:1a:73: + 4d:cf:33:97:90:a2:96:87:53:83:2b:b9:a6:75:48: + 2d:1d:56:37:7b:da:31:32:1a:d7:ac:ab:06:f4:aa: + 5d:4b:b7:47:46:dd:2a:93:c3:90:2e:79:80:80:ef: + 13:04:6a:14:3b:b5:9b:92:be:c2:07:65:4e:fc:da: + fc:ff:7a:ae:dc:5c:7e:55:31:0c:e8:39:07:a4:d7: + be:2f:d3:0b:6a:d2:b1:df:5f:fe:57:74:53:3b:35: + 80:dd:ae:8e:44:98:b3:9f:0e:d3:da:e0:d7:f4:6b: + 29:ab:44:a7:4b:58:84:6d:92:4b:81:c3:da:73:8b: + 12:97:48:90:04:45:75:1a:dd:37:31:97:92:e8:cd: + 54:0d:3b:e4:c1:3f:39:5e:2e:b8:f3:5c:7e:10:8e: + 86:41:00:8d:45:66:47:b0:a1:65:ce:a0:aa:29:09: + 4e:f3:97:eb:e8:2e:ab:0f:72:a7:30:0e:fa:c7:f4: + fd:14:77:c3:a4:5b:28:57:c2:b3:f9:82:fd:b7:45: + 58:9b + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + Authority Information Access: + OCSP - URI:http://ocsp.digicert.com + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl3.digicert.com/DigiCertGlobalRootCA.crl + + Full Name: + URI:http://crl4.digicert.com/DigiCertGlobalRootCA.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.digicert.com/CPS + + X509v3 Subject Key Identifier: + 0F:80:61:1C:82:31:61:D5:2F:28:E7:8D:46:38:B4:2C:E1:C6:D9:E2 + X509v3 Authority Key Identifier: + keyid:03:DE:50:35:56:D1:4C:BB:66:F0:A3:E2:1B:1B:C3:97:B2:3D:D1:55 + + Signature Algorithm: sha256WithRSAEncryption + 23:3e:df:4b:d2:31:42:a5:b6:7e:42:5c:1a:44:cc:69:d1:68: + b4:5d:4b:e0:04:21:6c:4b:e2:6d:cc:b1:e0:97:8f:a6:53:09: + cd:aa:2a:65:e5:39:4f:1e:83:a5:6e:5c:98:a2:24:26:e6:fb: + a1:ed:93:c7:2e:02:c6:4d:4a:bf:b0:42:df:78:da:b3:a8:f9: + 6d:ff:21:85:53:36:60:4c:76:ce:ec:38:dc:d6:51:80:f0:c5: + d6:e5:d4:4d:27:64:ab:9b:c7:3e:71:fb:48:97:b8:33:6d:c9: + 13:07:ee:96:a2:1b:18:15:f6:5c:4c:40:ed:b3:c2:ec:ff:71: + c1:e3:47:ff:d4:b9:00:b4:37:42:da:20:c9:ea:6e:8a:ee:14: + 06:ae:7d:a2:59:98:88:a8:1b:6f:2d:f4:f2:c9:14:5f:26:cf: + 2c:8d:7e:ed:37:c0:a9:d5:39:b9:82:bf:19:0c:ea:34:af:00: + 21:68:f8:ad:73:e2:c9:32:da:38:25:0b:55:d3:9a:1d:f0:68: + 86:ed:2e:41:34:ef:7c:a5:50:1d:bf:3a:f9:d3:c1:08:0c:e6: + ed:1e:8a:58:25:e4:b8:77:ad:2d:6e:f5:52:dd:b4:74:8f:ab: + 49:2e:9d:3b:93:34:28:1f:78:ce:94:ea:c7:bd:d3:c9:6d:1c: + de:5c:32:f3 +-----BEGIN CERTIFICATE----- +MIIElDCCA3ygAwIBAgIQAf2j627KdciIQ4tyS8+8kTANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD +QTAeFw0xMzAzMDgxMjAwMDBaFw0yMzAzMDgxMjAwMDBaME0xCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxJzAlBgNVBAMTHkRpZ2lDZXJ0IFNIQTIg +U2VjdXJlIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANyuWJBNwcQwFZA1W248ghX1LFy949v/cUP6ZCWA1O4Yok3wZtAKc24RmDYXZK83 +nf36QYSvx6+M/hpzTc8zl5CilodTgyu5pnVILR1WN3vaMTIa16yrBvSqXUu3R0bd +KpPDkC55gIDvEwRqFDu1m5K+wgdlTvza/P96rtxcflUxDOg5B6TXvi/TC2rSsd9f +/ld0Uzs1gN2ujkSYs58O09rg1/RrKatEp0tYhG2SS4HD2nOLEpdIkARFdRrdNzGX +kujNVA075ME/OV4uuPNcfhCOhkEAjUVmR7ChZc6gqikJTvOX6+guqw9ypzAO+sf0 +/RR3w6RbKFfCs/mC/bdFWJsCAwEAAaOCAVowggFWMBIGA1UdEwEB/wQIMAYBAf8C +AQAwDgYDVR0PAQH/BAQDAgGGMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYY +aHR0cDovL29jc3AuZGlnaWNlcnQuY29tMHsGA1UdHwR0MHIwN6A1oDOGMWh0dHA6 +Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RDQS5jcmwwN6A1 +oDOGMWh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RD +QS5jcmwwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v +d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwHQYDVR0OBBYEFA+AYRyCMWHVLyjnjUY4tCzh +xtniMB8GA1UdIwQYMBaAFAPeUDVW0Uy7ZvCj4hsbw5eyPdFVMA0GCSqGSIb3DQEB +CwUAA4IBAQAjPt9L0jFCpbZ+QlwaRMxp0Wi0XUvgBCFsS+JtzLHgl4+mUwnNqipl +5TlPHoOlblyYoiQm5vuh7ZPHLgLGTUq/sELfeNqzqPlt/yGFUzZgTHbO7Djc1lGA +8MXW5dRNJ2Srm8c+cftIl7gzbckTB+6WohsYFfZcTEDts8Ls/3HB40f/1LkAtDdC +2iDJ6m6K7hQGrn2iWZiIqBtvLfTyyRRfJs8sjX7tN8Cp1Tm5gr8ZDOo0rwAhaPit +c+LJMto4JQtV05od8GiG7S5BNO98pVAdvzr508EIDObtHopYJeS4d60tbvVS3bR0 +j6tJLp07kzQoH3jOlOrHvdPJbRzeXDLz +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_21[] = { + 0x30, 0x82, 0x04, 0x94, 0x30, 0x82, 0x03, 0x7c, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x01, 0xfd, 0xa3, 0xeb, 0x6e, 0xca, 0x75, 0xc8, 0x88, + 0x43, 0x8b, 0x72, 0x4b, 0xcf, 0xbc, 0x91, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x61, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x17, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, + 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x30, 0x33, 0x30, 0x38, 0x31, + 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x30, 0x33, + 0x30, 0x38, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x4d, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, + 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, + 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1e, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x48, 0x41, 0x32, 0x20, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, + 0x00, 0xdc, 0xae, 0x58, 0x90, 0x4d, 0xc1, 0xc4, 0x30, 0x15, 0x90, 0x35, + 0x5b, 0x6e, 0x3c, 0x82, 0x15, 0xf5, 0x2c, 0x5c, 0xbd, 0xe3, 0xdb, 0xff, + 0x71, 0x43, 0xfa, 0x64, 0x25, 0x80, 0xd4, 0xee, 0x18, 0xa2, 0x4d, 0xf0, + 0x66, 0xd0, 0x0a, 0x73, 0x6e, 0x11, 0x98, 0x36, 0x17, 0x64, 0xaf, 0x37, + 0x9d, 0xfd, 0xfa, 0x41, 0x84, 0xaf, 0xc7, 0xaf, 0x8c, 0xfe, 0x1a, 0x73, + 0x4d, 0xcf, 0x33, 0x97, 0x90, 0xa2, 0x96, 0x87, 0x53, 0x83, 0x2b, 0xb9, + 0xa6, 0x75, 0x48, 0x2d, 0x1d, 0x56, 0x37, 0x7b, 0xda, 0x31, 0x32, 0x1a, + 0xd7, 0xac, 0xab, 0x06, 0xf4, 0xaa, 0x5d, 0x4b, 0xb7, 0x47, 0x46, 0xdd, + 0x2a, 0x93, 0xc3, 0x90, 0x2e, 0x79, 0x80, 0x80, 0xef, 0x13, 0x04, 0x6a, + 0x14, 0x3b, 0xb5, 0x9b, 0x92, 0xbe, 0xc2, 0x07, 0x65, 0x4e, 0xfc, 0xda, + 0xfc, 0xff, 0x7a, 0xae, 0xdc, 0x5c, 0x7e, 0x55, 0x31, 0x0c, 0xe8, 0x39, + 0x07, 0xa4, 0xd7, 0xbe, 0x2f, 0xd3, 0x0b, 0x6a, 0xd2, 0xb1, 0xdf, 0x5f, + 0xfe, 0x57, 0x74, 0x53, 0x3b, 0x35, 0x80, 0xdd, 0xae, 0x8e, 0x44, 0x98, + 0xb3, 0x9f, 0x0e, 0xd3, 0xda, 0xe0, 0xd7, 0xf4, 0x6b, 0x29, 0xab, 0x44, + 0xa7, 0x4b, 0x58, 0x84, 0x6d, 0x92, 0x4b, 0x81, 0xc3, 0xda, 0x73, 0x8b, + 0x12, 0x97, 0x48, 0x90, 0x04, 0x45, 0x75, 0x1a, 0xdd, 0x37, 0x31, 0x97, + 0x92, 0xe8, 0xcd, 0x54, 0x0d, 0x3b, 0xe4, 0xc1, 0x3f, 0x39, 0x5e, 0x2e, + 0xb8, 0xf3, 0x5c, 0x7e, 0x10, 0x8e, 0x86, 0x41, 0x00, 0x8d, 0x45, 0x66, + 0x47, 0xb0, 0xa1, 0x65, 0xce, 0xa0, 0xaa, 0x29, 0x09, 0x4e, 0xf3, 0x97, + 0xeb, 0xe8, 0x2e, 0xab, 0x0f, 0x72, 0xa7, 0x30, 0x0e, 0xfa, 0xc7, 0xf4, + 0xfd, 0x14, 0x77, 0xc3, 0xa4, 0x5b, 0x28, 0x57, 0xc2, 0xb3, 0xf9, 0x82, + 0xfd, 0xb7, 0x45, 0x58, 0x9b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x01, 0x5a, 0x30, 0x82, 0x01, 0x56, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, + 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, + 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x7b, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x74, 0x30, 0x72, 0x30, + 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x33, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, + 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, + 0x43, 0x65, 0x72, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x6f, + 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x37, 0xa0, 0x35, + 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, + 0x72, 0x6c, 0x34, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, + 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x6f, 0x6f, 0x74, 0x43, + 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x20, + 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, + 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0f, 0x80, 0x61, 0x1c, 0x82, + 0x31, 0x61, 0xd5, 0x2f, 0x28, 0xe7, 0x8d, 0x46, 0x38, 0xb4, 0x2c, 0xe1, + 0xc6, 0xd9, 0xe2, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, + 0x30, 0x16, 0x80, 0x14, 0x03, 0xde, 0x50, 0x35, 0x56, 0xd1, 0x4c, 0xbb, + 0x66, 0xf0, 0xa3, 0xe2, 0x1b, 0x1b, 0xc3, 0x97, 0xb2, 0x3d, 0xd1, 0x55, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x23, 0x3e, 0xdf, 0x4b, + 0xd2, 0x31, 0x42, 0xa5, 0xb6, 0x7e, 0x42, 0x5c, 0x1a, 0x44, 0xcc, 0x69, + 0xd1, 0x68, 0xb4, 0x5d, 0x4b, 0xe0, 0x04, 0x21, 0x6c, 0x4b, 0xe2, 0x6d, + 0xcc, 0xb1, 0xe0, 0x97, 0x8f, 0xa6, 0x53, 0x09, 0xcd, 0xaa, 0x2a, 0x65, + 0xe5, 0x39, 0x4f, 0x1e, 0x83, 0xa5, 0x6e, 0x5c, 0x98, 0xa2, 0x24, 0x26, + 0xe6, 0xfb, 0xa1, 0xed, 0x93, 0xc7, 0x2e, 0x02, 0xc6, 0x4d, 0x4a, 0xbf, + 0xb0, 0x42, 0xdf, 0x78, 0xda, 0xb3, 0xa8, 0xf9, 0x6d, 0xff, 0x21, 0x85, + 0x53, 0x36, 0x60, 0x4c, 0x76, 0xce, 0xec, 0x38, 0xdc, 0xd6, 0x51, 0x80, + 0xf0, 0xc5, 0xd6, 0xe5, 0xd4, 0x4d, 0x27, 0x64, 0xab, 0x9b, 0xc7, 0x3e, + 0x71, 0xfb, 0x48, 0x97, 0xb8, 0x33, 0x6d, 0xc9, 0x13, 0x07, 0xee, 0x96, + 0xa2, 0x1b, 0x18, 0x15, 0xf6, 0x5c, 0x4c, 0x40, 0xed, 0xb3, 0xc2, 0xec, + 0xff, 0x71, 0xc1, 0xe3, 0x47, 0xff, 0xd4, 0xb9, 0x00, 0xb4, 0x37, 0x42, + 0xda, 0x20, 0xc9, 0xea, 0x6e, 0x8a, 0xee, 0x14, 0x06, 0xae, 0x7d, 0xa2, + 0x59, 0x98, 0x88, 0xa8, 0x1b, 0x6f, 0x2d, 0xf4, 0xf2, 0xc9, 0x14, 0x5f, + 0x26, 0xcf, 0x2c, 0x8d, 0x7e, 0xed, 0x37, 0xc0, 0xa9, 0xd5, 0x39, 0xb9, + 0x82, 0xbf, 0x19, 0x0c, 0xea, 0x34, 0xaf, 0x00, 0x21, 0x68, 0xf8, 0xad, + 0x73, 0xe2, 0xc9, 0x32, 0xda, 0x38, 0x25, 0x0b, 0x55, 0xd3, 0x9a, 0x1d, + 0xf0, 0x68, 0x86, 0xed, 0x2e, 0x41, 0x34, 0xef, 0x7c, 0xa5, 0x50, 0x1d, + 0xbf, 0x3a, 0xf9, 0xd3, 0xc1, 0x08, 0x0c, 0xe6, 0xed, 0x1e, 0x8a, 0x58, + 0x25, 0xe4, 0xb8, 0x77, 0xad, 0x2d, 0x6e, 0xf5, 0x52, 0xdd, 0xb4, 0x74, + 0x8f, 0xab, 0x49, 0x2e, 0x9d, 0x3b, 0x93, 0x34, 0x28, 0x1f, 0x78, 0xce, + 0x94, 0xea, 0xc7, 0xbd, 0xd3, 0xc9, 0x6d, 0x1c, 0xde, 0x5c, 0x32, 0xf3, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 0b:1d:b1:a9:19:f2:4c:3c:4e:fc:b5:7a:6a:4e:6c:bf + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Primary Certification Authority + Validity + Not Before: Aug 23 00:00:00 2012 GMT + Not After : Aug 22 23:59:59 2022 GMT + Subject: C=US, O=GeoTrust Inc., CN=GeoTrust Extended Validation SSL CA - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:9e:c6:21:cd:2e:3d:d0:bb:2a:4d:a4:7b:1f:a8: + 1a:c2:03:a6:ff:43:62:5b:bf:91:d1:66:52:a9:81: + 90:68:31:86:16:bb:1d:85:58:a9:7e:91:6a:1e:4c: + 31:ca:21:c4:be:70:1b:9f:8c:e4:05:2d:9c:ed:11: + 79:ad:8f:9c:25:86:4c:ba:f2:e5:62:79:8e:22:5f: + 85:7c:22:35:38:23:8d:80:3c:ac:cc:2d:fc:58:f2: + 35:bf:66:5b:eb:c1:24:f8:70:80:74:32:f9:46:de: + 32:19:80:8c:b7:e7:1a:a1:aa:64:98:8d:ca:ce:0e: + dc:6b:f7:e2:90:0a:6c:1c:a5:f4:90:32:52:e5:f1: + 00:42:31:91:48:42:89:a8:5d:7f:63:8d:31:b2:d6: + 48:5c:45:45:22:c9:c5:59:12:ab:41:94:ea:fe:9c: + 46:4d:9a:bc:9c:e0:e2:c6:46:b3:e6:7f:dc:f5:0f: + a3:13:45:86:6d:79:78:fc:e1:50:cf:09:86:e5:9f: + bf:cb:3a:d4:e0:b1:d4:ff:a8:3f:7d:62:1f:c0:6d: + 78:48:c3:d7:a3:a5:23:61:c5:3e:35:4d:b2:e5:f8: + fd:94:4b:bc:73:53:af:e3:9a:69:55:be:cb:67:ab: + e1:be:ef:1b:c2:4d:ac:cb:29:5c:bc:ed:b8:62:9d: + 10:e9 + Exponent: 65537 (0x10001) + X509v3 extensions: + Authority Information Access: + OCSP - URI:http://EVSecure-ocsp.geotrust.com + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: http://www.geotrust.com/resources/cps + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://EVSecure-crl.geotrust.com/GeoTrustPCA.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Alternative Name: + DirName:/CN=VeriSignMPKI-2-253 + X509v3 Subject Key Identifier: + 6F:26:56:D9:5C:E7:F7:C9:04:20:F8:1E:BA:7C:91:27:2F:8C:FA:07 + X509v3 Authority Key Identifier: + keyid:2C:D5:50:41:97:15:8B:F0:8F:36:61:5B:4A:FB:6B:D9:99:C9:33:92 + + Signature Algorithm: sha1WithRSAEncryption + 92:77:e9:57:c9:eb:c4:45:6f:c9:4c:6e:7d:00:12:71:a5:e3: + 39:fe:13:84:49:6c:e7:49:71:f5:2c:c7:c0:36:c2:08:58:f3: + 83:75:c5:72:d8:8d:78:f4:65:ea:8c:d5:e3:a5:0e:a9:ad:eb: + e3:a1:23:ae:93:b7:d8:75:75:4a:59:cb:f2:9e:db:40:bf:4e: + 89:fe:95:42:29:34:7b:f4:dd:6a:0d:74:5f:c7:11:13:2e:dd: + 11:6e:c6:e3:5b:b3:cf:a6:8d:e5:f7:67:7b:ba:b3:b3:69:70: + 14:b0:c2:99:b4:d2:76:5b:38:17:39:45:1b:82:f1:53:b8:3d: + 55:39:0b:7f:ff:98:ad:6e:96:9a:b6:6a:4c:7a:5e:bd:b1:86: + 12:9d:7c:2c:62:bb:09:93:5f:3f:d8:b5:8a:c3:49:28:0f:0b: + f9:39:22:1a:fe:5d:d3:e8:18:5f:9d:5f:b4:c0:20:c6:a9:49: + 0d:55:73:6a:09:7a:ff:a2:99:bf:d8:bb:91:dc:30:39:ae:28: + 4b:f6:c5:77:24:e8:d6:c6:a7:a0:4e:f2:a6:99:75:cd:dd:57: + dd:0a:47:92:cb:bb:b7:48:fa:21:f0:69:21:ff:e5:0c:aa:0c: + b1:ea:dd:05:1c:19:8e:d1:2a:79:68:02:5e:cc:38:e6:29:c4: + 77:f5:19:1c +-----BEGIN CERTIFICATE----- +MIIEmjCCA4KgAwIBAgIQCx2xqRnyTDxO/LV6ak5svzANBgkqhkiG9w0BAQUFADBY +MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo +R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xMjA4 +MjMwMDAwMDBaFw0yMjA4MjIyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBFeHRlbmRlZCBWYWxp +ZGF0aW9uIFNTTCBDQSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAnsYhzS490LsqTaR7H6gawgOm/0NiW7+R0WZSqYGQaDGGFrsdhVipfpFqHkwx +yiHEvnAbn4zkBS2c7RF5rY+cJYZMuvLlYnmOIl+FfCI1OCONgDyszC38WPI1v2Zb +68Ek+HCAdDL5Rt4yGYCMt+caoapkmI3Kzg7ca/fikApsHKX0kDJS5fEAQjGRSEKJ +qF1/Y40xstZIXEVFIsnFWRKrQZTq/pxGTZq8nODixkaz5n/c9Q+jE0WGbXl4/OFQ +zwmG5Z+/yzrU4LHU/6g/fWIfwG14SMPXo6UjYcU+NU2y5fj9lEu8c1Ov45ppVb7L +Z6vhvu8bwk2syylcvO24Yp0Q6QIDAQABo4IBXjCCAVowPQYIKwYBBQUHAQEEMTAv +MC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC5nZW90cnVzdC5jb20w +EgYDVR0TAQH/BAgwBgEB/wIBADBGBgNVHSAEPzA9MDsGBFUdIAAwMzAxBggrBgEF +BQcCARYlaHR0cDovL3d3dy5nZW90cnVzdC5jb20vcmVzb3VyY2VzL2NwczBBBgNV +HR8EOjA4MDagNKAyhjBodHRwOi8vRVZTZWN1cmUtY3JsLmdlb3RydXN0LmNvbS9H +ZW9UcnVzdFBDQS5jcmwwDgYDVR0PAQH/BAQDAgEGMCoGA1UdEQQjMCGkHzAdMRsw +GQYDVQQDExJWZXJpU2lnbk1QS0ktMi0yNTMwHQYDVR0OBBYEFG8mVtlc5/fJBCD4 +Hrp8kScvjPoHMB8GA1UdIwQYMBaAFCzVUEGXFYvwjzZhW0r7a9mZyTOSMA0GCSqG +SIb3DQEBBQUAA4IBAQCSd+lXyevERW/JTG59ABJxpeM5/hOESWznSXH1LMfANsII +WPODdcVy2I149GXqjNXjpQ6prevjoSOuk7fYdXVKWcvynttAv06J/pVCKTR79N1q +DXRfxxETLt0RbsbjW7PPpo3l92d7urOzaXAUsMKZtNJ2WzgXOUUbgvFTuD1VOQt/ +/5itbpaatmpMel69sYYSnXwsYrsJk18/2LWKw0koDwv5OSIa/l3T6BhfnV+0wCDG +qUkNVXNqCXr/opm/2LuR3DA5rihL9sV3JOjWxqegTvKmmXXN3VfdCkeSy7u3SPoh +8Gkh/+UMqgyx6t0FHBmO0Sp5aAJezDjmKcR39Rkc +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_22[] = { + 0x30, 0x82, 0x04, 0x9a, 0x30, 0x82, 0x03, 0x82, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x0b, 0x1d, 0xb1, 0xa9, 0x19, 0xf2, 0x4c, 0x3c, 0x4e, + 0xfc, 0xb5, 0x7a, 0x6a, 0x4e, 0x6c, 0xbf, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x58, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x28, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x32, 0x30, 0x38, + 0x32, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, + 0x32, 0x30, 0x38, 0x32, 0x32, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, + 0x30, 0x58, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x28, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, + 0x41, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, + 0x01, 0x01, 0x00, 0x9e, 0xc6, 0x21, 0xcd, 0x2e, 0x3d, 0xd0, 0xbb, 0x2a, + 0x4d, 0xa4, 0x7b, 0x1f, 0xa8, 0x1a, 0xc2, 0x03, 0xa6, 0xff, 0x43, 0x62, + 0x5b, 0xbf, 0x91, 0xd1, 0x66, 0x52, 0xa9, 0x81, 0x90, 0x68, 0x31, 0x86, + 0x16, 0xbb, 0x1d, 0x85, 0x58, 0xa9, 0x7e, 0x91, 0x6a, 0x1e, 0x4c, 0x31, + 0xca, 0x21, 0xc4, 0xbe, 0x70, 0x1b, 0x9f, 0x8c, 0xe4, 0x05, 0x2d, 0x9c, + 0xed, 0x11, 0x79, 0xad, 0x8f, 0x9c, 0x25, 0x86, 0x4c, 0xba, 0xf2, 0xe5, + 0x62, 0x79, 0x8e, 0x22, 0x5f, 0x85, 0x7c, 0x22, 0x35, 0x38, 0x23, 0x8d, + 0x80, 0x3c, 0xac, 0xcc, 0x2d, 0xfc, 0x58, 0xf2, 0x35, 0xbf, 0x66, 0x5b, + 0xeb, 0xc1, 0x24, 0xf8, 0x70, 0x80, 0x74, 0x32, 0xf9, 0x46, 0xde, 0x32, + 0x19, 0x80, 0x8c, 0xb7, 0xe7, 0x1a, 0xa1, 0xaa, 0x64, 0x98, 0x8d, 0xca, + 0xce, 0x0e, 0xdc, 0x6b, 0xf7, 0xe2, 0x90, 0x0a, 0x6c, 0x1c, 0xa5, 0xf4, + 0x90, 0x32, 0x52, 0xe5, 0xf1, 0x00, 0x42, 0x31, 0x91, 0x48, 0x42, 0x89, + 0xa8, 0x5d, 0x7f, 0x63, 0x8d, 0x31, 0xb2, 0xd6, 0x48, 0x5c, 0x45, 0x45, + 0x22, 0xc9, 0xc5, 0x59, 0x12, 0xab, 0x41, 0x94, 0xea, 0xfe, 0x9c, 0x46, + 0x4d, 0x9a, 0xbc, 0x9c, 0xe0, 0xe2, 0xc6, 0x46, 0xb3, 0xe6, 0x7f, 0xdc, + 0xf5, 0x0f, 0xa3, 0x13, 0x45, 0x86, 0x6d, 0x79, 0x78, 0xfc, 0xe1, 0x50, + 0xcf, 0x09, 0x86, 0xe5, 0x9f, 0xbf, 0xcb, 0x3a, 0xd4, 0xe0, 0xb1, 0xd4, + 0xff, 0xa8, 0x3f, 0x7d, 0x62, 0x1f, 0xc0, 0x6d, 0x78, 0x48, 0xc3, 0xd7, + 0xa3, 0xa5, 0x23, 0x61, 0xc5, 0x3e, 0x35, 0x4d, 0xb2, 0xe5, 0xf8, 0xfd, + 0x94, 0x4b, 0xbc, 0x73, 0x53, 0xaf, 0xe3, 0x9a, 0x69, 0x55, 0xbe, 0xcb, + 0x67, 0xab, 0xe1, 0xbe, 0xef, 0x1b, 0xc2, 0x4d, 0xac, 0xcb, 0x29, 0x5c, + 0xbc, 0xed, 0xb8, 0x62, 0x9d, 0x10, 0xe9, 0x02, 0x03, 0x01, 0x00, 0x01, + 0xa3, 0x82, 0x01, 0x5e, 0x30, 0x82, 0x01, 0x5a, 0x30, 0x3d, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x31, 0x30, 0x2f, + 0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x45, 0x56, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x65, 0x2d, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, + 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, + 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, + 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x46, 0x06, 0x03, 0x55, + 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, 0x30, 0x3b, 0x06, 0x04, 0x55, 0x1d, + 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x41, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x3a, 0x30, 0x38, 0x30, 0x36, 0xa0, 0x34, 0xa0, 0x32, + 0x86, 0x30, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x45, 0x56, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x65, 0x2d, 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x65, + 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x50, 0x43, 0x41, 0x2e, 0x63, + 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, + 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2a, 0x06, 0x03, 0x55, 0x1d, + 0x11, 0x04, 0x23, 0x30, 0x21, 0xa4, 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30, + 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x32, + 0x35, 0x33, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0x6f, 0x26, 0x56, 0xd9, 0x5c, 0xe7, 0xf7, 0xc9, 0x04, 0x20, 0xf8, + 0x1e, 0xba, 0x7c, 0x91, 0x27, 0x2f, 0x8c, 0xfa, 0x07, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x2c, 0xd5, + 0x50, 0x41, 0x97, 0x15, 0x8b, 0xf0, 0x8f, 0x36, 0x61, 0x5b, 0x4a, 0xfb, + 0x6b, 0xd9, 0x99, 0xc9, 0x33, 0x92, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x01, 0x00, 0x92, 0x77, 0xe9, 0x57, 0xc9, 0xeb, 0xc4, 0x45, 0x6f, 0xc9, + 0x4c, 0x6e, 0x7d, 0x00, 0x12, 0x71, 0xa5, 0xe3, 0x39, 0xfe, 0x13, 0x84, + 0x49, 0x6c, 0xe7, 0x49, 0x71, 0xf5, 0x2c, 0xc7, 0xc0, 0x36, 0xc2, 0x08, + 0x58, 0xf3, 0x83, 0x75, 0xc5, 0x72, 0xd8, 0x8d, 0x78, 0xf4, 0x65, 0xea, + 0x8c, 0xd5, 0xe3, 0xa5, 0x0e, 0xa9, 0xad, 0xeb, 0xe3, 0xa1, 0x23, 0xae, + 0x93, 0xb7, 0xd8, 0x75, 0x75, 0x4a, 0x59, 0xcb, 0xf2, 0x9e, 0xdb, 0x40, + 0xbf, 0x4e, 0x89, 0xfe, 0x95, 0x42, 0x29, 0x34, 0x7b, 0xf4, 0xdd, 0x6a, + 0x0d, 0x74, 0x5f, 0xc7, 0x11, 0x13, 0x2e, 0xdd, 0x11, 0x6e, 0xc6, 0xe3, + 0x5b, 0xb3, 0xcf, 0xa6, 0x8d, 0xe5, 0xf7, 0x67, 0x7b, 0xba, 0xb3, 0xb3, + 0x69, 0x70, 0x14, 0xb0, 0xc2, 0x99, 0xb4, 0xd2, 0x76, 0x5b, 0x38, 0x17, + 0x39, 0x45, 0x1b, 0x82, 0xf1, 0x53, 0xb8, 0x3d, 0x55, 0x39, 0x0b, 0x7f, + 0xff, 0x98, 0xad, 0x6e, 0x96, 0x9a, 0xb6, 0x6a, 0x4c, 0x7a, 0x5e, 0xbd, + 0xb1, 0x86, 0x12, 0x9d, 0x7c, 0x2c, 0x62, 0xbb, 0x09, 0x93, 0x5f, 0x3f, + 0xd8, 0xb5, 0x8a, 0xc3, 0x49, 0x28, 0x0f, 0x0b, 0xf9, 0x39, 0x22, 0x1a, + 0xfe, 0x5d, 0xd3, 0xe8, 0x18, 0x5f, 0x9d, 0x5f, 0xb4, 0xc0, 0x20, 0xc6, + 0xa9, 0x49, 0x0d, 0x55, 0x73, 0x6a, 0x09, 0x7a, 0xff, 0xa2, 0x99, 0xbf, + 0xd8, 0xbb, 0x91, 0xdc, 0x30, 0x39, 0xae, 0x28, 0x4b, 0xf6, 0xc5, 0x77, + 0x24, 0xe8, 0xd6, 0xc6, 0xa7, 0xa0, 0x4e, 0xf2, 0xa6, 0x99, 0x75, 0xcd, + 0xdd, 0x57, 0xdd, 0x0a, 0x47, 0x92, 0xcb, 0xbb, 0xb7, 0x48, 0xfa, 0x21, + 0xf0, 0x69, 0x21, 0xff, 0xe5, 0x0c, 0xaa, 0x0c, 0xb1, 0xea, 0xdd, 0x05, + 0x1c, 0x19, 0x8e, 0xd1, 0x2a, 0x79, 0x68, 0x02, 0x5e, 0xcc, 0x38, 0xe6, + 0x29, 0xc4, 0x77, 0xf5, 0x19, 0x1c, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 3740804 (0x391484) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=Starfield Technologies, Inc., OU=Starfield Class 2 Certification Authority + Validity + Not Before: Jan 1 07:00:00 2014 GMT + Not After : May 30 07:00:00 2031 GMT + Subject: C=US, ST=Arizona, L=Scottsdale, O=Starfield Technologies, Inc., CN=Starfield Root Certificate Authority - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:bd:ed:c1:03:fc:f6:8f:fc:02:b1:6f:5b:9f:48: + d9:9d:79:e2:a2:b7:03:61:56:18:c3:47:b6:d7:ca: + 3d:35:2e:89:43:f7:a1:69:9b:de:8a:1a:fd:13:20: + 9c:b4:49:77:32:29:56:fd:b9:ec:8c:dd:22:fa:72: + dc:27:61:97:ee:f6:5a:84:ec:6e:19:b9:89:2c:dc: + 84:5b:d5:74:fb:6b:5f:c5:89:a5:10:52:89:46:55: + f4:b8:75:1c:e6:7f:e4:54:ae:4b:f8:55:72:57:02: + 19:f8:17:71:59:eb:1e:28:07:74:c5:9d:48:be:6c: + b4:f4:a4:b0:f3:64:37:79:92:c0:ec:46:5e:7f:e1: + 6d:53:4c:62:af:cd:1f:0b:63:bb:3a:9d:fb:fc:79: + 00:98:61:74:cf:26:82:40:63:f3:b2:72:6a:19:0d: + 99:ca:d4:0e:75:cc:37:fb:8b:89:c1:59:f1:62:7f: + 5f:b3:5f:65:30:f8:a7:b7:4d:76:5a:1e:76:5e:34: + c0:e8:96:56:99:8a:b3:f0:7f:a4:cd:bd:dc:32:31: + 7c:91:cf:e0:5f:11:f8:6b:aa:49:5c:d1:99:94:d1: + a2:e3:63:5b:09:76:b5:56:62:e1:4b:74:1d:96:d4: + 26:d4:08:04:59:d0:98:0e:0e:e6:de:fc:c3:ec:1f: + 90:f1 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 7C:0C:32:1F:A7:D9:30:7F:C4:7D:68:A3:62:A8:A1:CE:AB:07:5B:27 + X509v3 Authority Key Identifier: + keyid:BF:5F:B7:D1:CE:DD:1F:86:F4:5B:55:AC:DC:D7:10:C2:0E:A9:88:E7 + + Authority Information Access: + OCSP - URI:http://ocsp.starfieldtech.com/ + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.starfieldtech.com/sfroot.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://certs.starfieldtech.com/repository/ + + Signature Algorithm: sha256WithRSAEncryption + 85:63:c1:d9:dd:b9:ff:a9:bd:a6:19:dc:bf:13:3a:11:38:22: + 54:b1:ac:05:10:fb:7c:b3:96:3f:31:8b:66:ff:88:f3:e1:bf: + fb:c7:1f:00:ff:46:6a:8b:61:32:c9:01:51:76:fb:9a:c6:fa: + 20:51:c8:46:c4:98:d7:79:a3:e3:04:72:3f:8b:4d:34:53:67: + ec:33:2c:7b:e8:94:01:28:7c:3a:34:5b:02:77:16:8d:40:25: + 33:b0:bc:6c:97:d7:05:7a:ff:8c:85:ce:6f:a0:53:00:17:6e: + 1e:6c:bd:22:d7:0a:88:37:f6:7d:eb:99:41:ef:27:cb:8c:60: + 6b:4c:01:7e:65:50:0b:4f:b8:95:9a:9a:6e:34:fd:73:3a:33: + f1:91:d5:f3:4e:2d:74:e8:ef:d3:90:35:f1:06:68:64:d4:d0: + 13:fd:52:d3:c6:6d:c1:3a:8a:31:dd:05:26:35:4a:8c:65:b8: + 52:6b:81:ec:d2:9c:b5:34:10:97:9c:3e:c6:2f:ed:8e:42:42: + 24:2e:e9:73:9a:25:f9:11:f1:f2:23:69:cb:e5:94:69:a0:d2: + dc:b0:fc:44:89:ac:17:a8:cc:d5:37:77:16:c5:80:b9:0c:8f: + 57:02:55:99:85:7b:49:f0:2e:5b:a0:c2:57:53:5d:a2:e8:a6: + 37:c3:01:fa +-----BEGIN CERTIFICATE----- +MIIEoDCCA4igAwIBAgIDORSEMA0GCSqGSIb3DQEBCwUAMGgxCzAJBgNVBAYTAlVT +MSUwIwYDVQQKExxTdGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQL +EylTdGFyZmllbGQgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x +NDAxMDEwNzAwMDBaFw0zMTA1MzAwNzAwMDBaMIGPMQswCQYDVQQGEwJVUzEQMA4G +A1UECBMHQXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTElMCMGA1UEChMcU3Rh +cmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UEAxMpU3RhcmZpZWxkIFJv +b3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQC97cED/PaP/AKxb1ufSNmdeeKitwNhVhjDR7bXyj01LolD +96Fpm96KGv0TIJy0SXcyKVb9ueyM3SL6ctwnYZfu9lqE7G4ZuYks3IRb1XT7a1/F +iaUQUolGVfS4dRzmf+RUrkv4VXJXAhn4F3FZ6x4oB3TFnUi+bLT0pLDzZDd5ksDs +Rl5/4W1TTGKvzR8LY7s6nfv8eQCYYXTPJoJAY/OycmoZDZnK1A51zDf7i4nBWfFi +f1+zX2Uw+Ke3TXZaHnZeNMDollaZirPwf6TNvdwyMXyRz+BfEfhrqklc0ZmU0aLj +Y1sJdrVWYuFLdB2W1CbUCARZ0JgODube/MPsH5DxAgMBAAGjggEpMIIBJTAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUfAwyH6fZMH/E +fWijYqihzqsHWycwHwYDVR0jBBgwFoAUv1+30c7dH4b0W1Ws3NcQwg6piOcwOgYI +KwYBBQUHAQEELjAsMCoGCCsGAQUFBzABhh5odHRwOi8vb2NzcC5zdGFyZmllbGR0 +ZWNoLmNvbS8wOAYDVR0fBDEwLzAtoCugKYYnaHR0cDovL2NybC5zdGFyZmllbGR0 +ZWNoLmNvbS9zZnJvb3QuY3JsMEwGA1UdIARFMEMwQQYEVR0gADA5MDcGCCsGAQUF +BwIBFitodHRwczovL2NlcnRzLnN0YXJmaWVsZHRlY2guY29tL3JlcG9zaXRvcnkv +MA0GCSqGSIb3DQEBCwUAA4IBAQCFY8HZ3bn/qb2mGdy/EzoROCJUsawFEPt8s5Y/ +MYtm/4jz4b/7xx8A/0Zqi2EyyQFRdvuaxvogUchGxJjXeaPjBHI/i000U2fsMyx7 +6JQBKHw6NFsCdxaNQCUzsLxsl9cFev+Mhc5voFMAF24ebL0i1wqIN/Z965lB7yfL +jGBrTAF+ZVALT7iVmppuNP1zOjPxkdXzTi106O/TkDXxBmhk1NAT/VLTxm3BOoox +3QUmNUqMZbhSa4Hs0py1NBCXnD7GL+2OQkIkLulzmiX5EfHyI2nL5ZRpoNLcsPxE +iawXqMzVN3cWxYC5DI9XAlWZhXtJ8C5boMJXU12i6KY3wwH6 +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_23[] = { + 0x30, 0x82, 0x04, 0xa0, 0x30, 0x82, 0x03, 0x88, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x39, 0x14, 0x84, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x68, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, + 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, + 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x29, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x32, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, + 0x34, 0x30, 0x31, 0x30, 0x31, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5a, + 0x17, 0x0d, 0x33, 0x31, 0x30, 0x35, 0x33, 0x30, 0x30, 0x37, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x30, 0x81, 0x8f, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, + 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, + 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, + 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x25, + 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, 0x74, 0x61, + 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6e, + 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x29, + 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, + 0x01, 0x00, 0xbd, 0xed, 0xc1, 0x03, 0xfc, 0xf6, 0x8f, 0xfc, 0x02, 0xb1, + 0x6f, 0x5b, 0x9f, 0x48, 0xd9, 0x9d, 0x79, 0xe2, 0xa2, 0xb7, 0x03, 0x61, + 0x56, 0x18, 0xc3, 0x47, 0xb6, 0xd7, 0xca, 0x3d, 0x35, 0x2e, 0x89, 0x43, + 0xf7, 0xa1, 0x69, 0x9b, 0xde, 0x8a, 0x1a, 0xfd, 0x13, 0x20, 0x9c, 0xb4, + 0x49, 0x77, 0x32, 0x29, 0x56, 0xfd, 0xb9, 0xec, 0x8c, 0xdd, 0x22, 0xfa, + 0x72, 0xdc, 0x27, 0x61, 0x97, 0xee, 0xf6, 0x5a, 0x84, 0xec, 0x6e, 0x19, + 0xb9, 0x89, 0x2c, 0xdc, 0x84, 0x5b, 0xd5, 0x74, 0xfb, 0x6b, 0x5f, 0xc5, + 0x89, 0xa5, 0x10, 0x52, 0x89, 0x46, 0x55, 0xf4, 0xb8, 0x75, 0x1c, 0xe6, + 0x7f, 0xe4, 0x54, 0xae, 0x4b, 0xf8, 0x55, 0x72, 0x57, 0x02, 0x19, 0xf8, + 0x17, 0x71, 0x59, 0xeb, 0x1e, 0x28, 0x07, 0x74, 0xc5, 0x9d, 0x48, 0xbe, + 0x6c, 0xb4, 0xf4, 0xa4, 0xb0, 0xf3, 0x64, 0x37, 0x79, 0x92, 0xc0, 0xec, + 0x46, 0x5e, 0x7f, 0xe1, 0x6d, 0x53, 0x4c, 0x62, 0xaf, 0xcd, 0x1f, 0x0b, + 0x63, 0xbb, 0x3a, 0x9d, 0xfb, 0xfc, 0x79, 0x00, 0x98, 0x61, 0x74, 0xcf, + 0x26, 0x82, 0x40, 0x63, 0xf3, 0xb2, 0x72, 0x6a, 0x19, 0x0d, 0x99, 0xca, + 0xd4, 0x0e, 0x75, 0xcc, 0x37, 0xfb, 0x8b, 0x89, 0xc1, 0x59, 0xf1, 0x62, + 0x7f, 0x5f, 0xb3, 0x5f, 0x65, 0x30, 0xf8, 0xa7, 0xb7, 0x4d, 0x76, 0x5a, + 0x1e, 0x76, 0x5e, 0x34, 0xc0, 0xe8, 0x96, 0x56, 0x99, 0x8a, 0xb3, 0xf0, + 0x7f, 0xa4, 0xcd, 0xbd, 0xdc, 0x32, 0x31, 0x7c, 0x91, 0xcf, 0xe0, 0x5f, + 0x11, 0xf8, 0x6b, 0xaa, 0x49, 0x5c, 0xd1, 0x99, 0x94, 0xd1, 0xa2, 0xe3, + 0x63, 0x5b, 0x09, 0x76, 0xb5, 0x56, 0x62, 0xe1, 0x4b, 0x74, 0x1d, 0x96, + 0xd4, 0x26, 0xd4, 0x08, 0x04, 0x59, 0xd0, 0x98, 0x0e, 0x0e, 0xe6, 0xde, + 0xfc, 0xc3, 0xec, 0x1f, 0x90, 0xf1, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, + 0x82, 0x01, 0x29, 0x30, 0x82, 0x01, 0x25, 0x30, 0x0f, 0x06, 0x03, 0x55, + 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, + 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, + 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, + 0x16, 0x04, 0x14, 0x7c, 0x0c, 0x32, 0x1f, 0xa7, 0xd9, 0x30, 0x7f, 0xc4, + 0x7d, 0x68, 0xa3, 0x62, 0xa8, 0xa1, 0xce, 0xab, 0x07, 0x5b, 0x27, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0xbf, 0x5f, 0xb7, 0xd1, 0xce, 0xdd, 0x1f, 0x86, 0xf4, 0x5b, 0x55, 0xac, + 0xdc, 0xd7, 0x10, 0xc2, 0x0e, 0xa9, 0x88, 0xe7, 0x30, 0x3a, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x2e, 0x30, 0x2c, + 0x30, 0x2a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x1e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, + 0x70, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, + 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x38, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0xa0, 0x2b, 0xa0, + 0x29, 0x86, 0x27, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, + 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x72, 0x6f, + 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, + 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, 0x04, 0x55, 0x1d, 0x20, + 0x00, 0x30, 0x39, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x2b, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x85, 0x63, 0xc1, 0xd9, + 0xdd, 0xb9, 0xff, 0xa9, 0xbd, 0xa6, 0x19, 0xdc, 0xbf, 0x13, 0x3a, 0x11, + 0x38, 0x22, 0x54, 0xb1, 0xac, 0x05, 0x10, 0xfb, 0x7c, 0xb3, 0x96, 0x3f, + 0x31, 0x8b, 0x66, 0xff, 0x88, 0xf3, 0xe1, 0xbf, 0xfb, 0xc7, 0x1f, 0x00, + 0xff, 0x46, 0x6a, 0x8b, 0x61, 0x32, 0xc9, 0x01, 0x51, 0x76, 0xfb, 0x9a, + 0xc6, 0xfa, 0x20, 0x51, 0xc8, 0x46, 0xc4, 0x98, 0xd7, 0x79, 0xa3, 0xe3, + 0x04, 0x72, 0x3f, 0x8b, 0x4d, 0x34, 0x53, 0x67, 0xec, 0x33, 0x2c, 0x7b, + 0xe8, 0x94, 0x01, 0x28, 0x7c, 0x3a, 0x34, 0x5b, 0x02, 0x77, 0x16, 0x8d, + 0x40, 0x25, 0x33, 0xb0, 0xbc, 0x6c, 0x97, 0xd7, 0x05, 0x7a, 0xff, 0x8c, + 0x85, 0xce, 0x6f, 0xa0, 0x53, 0x00, 0x17, 0x6e, 0x1e, 0x6c, 0xbd, 0x22, + 0xd7, 0x0a, 0x88, 0x37, 0xf6, 0x7d, 0xeb, 0x99, 0x41, 0xef, 0x27, 0xcb, + 0x8c, 0x60, 0x6b, 0x4c, 0x01, 0x7e, 0x65, 0x50, 0x0b, 0x4f, 0xb8, 0x95, + 0x9a, 0x9a, 0x6e, 0x34, 0xfd, 0x73, 0x3a, 0x33, 0xf1, 0x91, 0xd5, 0xf3, + 0x4e, 0x2d, 0x74, 0xe8, 0xef, 0xd3, 0x90, 0x35, 0xf1, 0x06, 0x68, 0x64, + 0xd4, 0xd0, 0x13, 0xfd, 0x52, 0xd3, 0xc6, 0x6d, 0xc1, 0x3a, 0x8a, 0x31, + 0xdd, 0x05, 0x26, 0x35, 0x4a, 0x8c, 0x65, 0xb8, 0x52, 0x6b, 0x81, 0xec, + 0xd2, 0x9c, 0xb5, 0x34, 0x10, 0x97, 0x9c, 0x3e, 0xc6, 0x2f, 0xed, 0x8e, + 0x42, 0x42, 0x24, 0x2e, 0xe9, 0x73, 0x9a, 0x25, 0xf9, 0x11, 0xf1, 0xf2, + 0x23, 0x69, 0xcb, 0xe5, 0x94, 0x69, 0xa0, 0xd2, 0xdc, 0xb0, 0xfc, 0x44, + 0x89, 0xac, 0x17, 0xa8, 0xcc, 0xd5, 0x37, 0x77, 0x16, 0xc5, 0x80, 0xb9, + 0x0c, 0x8f, 0x57, 0x02, 0x55, 0x99, 0x85, 0x7b, 0x49, 0xf0, 0x2e, 0x5b, + 0xa0, 0xc2, 0x57, 0x53, 0x5d, 0xa2, 0xe8, 0xa6, 0x37, 0xc3, 0x01, 0xfa, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 28:1c:89:29:66:14:43:80:42:63:55:3a:32:40:ae:b3 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., OU=(c) 2008 GeoTrust Inc. - For authorized use only, CN=GeoTrust Primary Certification Authority - G3 + Validity + Not Before: Jun 30 00:00:00 2015 GMT + Not After : Jun 29 23:59:59 2025 GMT + Subject: C=US, O=GeoTrust Inc., CN=RapidSSL SHA256 CA - G4 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:c0:9e:3a:0f:9a:b2:ba:d3:d2:dc:15:ec:d0:30: + 54:59:30:4d:40:51:ae:42:71:71:d2:8d:53:73:81: + fe:b8:e0:c4:96:c5:8e:7e:c2:f1:b7:63:4a:cf:a7: + 1e:3f:a8:e7:ce:53:a0:fa:2d:f7:d6:e6:ce:70:11: + a6:ee:e1:03:52:d2:68:de:3d:08:0d:87:fd:1c:d7: + 0b:97:62:6d:82:30:76:1b:47:3a:c4:f7:ce:ed:1d: + 7c:8c:b7:17:8e:53:80:1e:1d:0f:5d:8c:f9:90:e4: + 04:1e:02:7e:cb:b0:49:ef:da:52:25:fb:fb:67:ed: + dd:84:74:59:84:0e:f3:de:70:66:8d:e4:52:38:f7: + 53:5a:37:13:67:0b:3e:bb:a8:58:b7:2e:ed:ff:b7: + 5e:11:73:b9:77:45:52:67:46:ae:c4:dc:24:81:89: + 76:0a:ca:a1:6c:66:73:04:82:aa:f5:70:6c:5f:1b: + 9a:00:79:46:d6:7f:7a:26:17:30:cf:39:4b:2c:74: + d9:89:44:76:10:d0:ed:f7:8b:bb:89:05:75:4d:0b: + 0d:b3:da:e9:bf:f1:6a:7d:2a:11:db:1e:9f:8c:e3: + c4:06:69:e1:1d:88:45:39:d1:6e:55:d8:aa:b7:9b: + 6f:ea:f4:de:ac:17:11:92:5d:40:9b:83:7b:9a:e2: + f7:a9 + Exponent: 65537 (0x10001) + X509v3 extensions: + Authority Information Access: + OCSP - URI:http://g.symcd.com + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: 2.23.140.1.2.1 + CPS: https://www.geotrust.com/resources/cps + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://g.symcb.com/GeoTrustPCA-G3.crl + + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + F3:B5:56:0C:C4:09:B0:B4:CF:1F:AA:F9:DD:23:56:F0:77:E8:A1:F9 + X509v3 Authority Key Identifier: + keyid:C4:79:CA:8E:A1:4E:03:1D:1C:DC:6B:DB:31:5B:94:3E:3F:30:7F:2D + + Signature Algorithm: sha256WithRSAEncryption + c3:7e:d8:83:4b:04:4c:55:29:2a:4f:14:9d:9a:6e:de:90:70: + c1:a4:26:4c:88:8e:78:48:ef:bd:9c:b0:a0:f5:f0:66:fc:fe: + 59:26:e1:79:ef:c8:b7:60:64:a8:8b:47:ea:2f:e0:83:99:da: + 41:19:d7:c5:be:05:fa:f2:90:11:f0:0a:ff:6c:dc:05:b4:d8: + 06:6f:a4:6f:8d:be:20:2b:54:db:f9:a2:45:83:9a:1e:a5:21: + 89:35:1d:7c:20:5c:17:fd:04:2e:45:d8:b2:c6:f8:42:99:fc: + 54:08:4e:4b:80:5f:39:37:ba:95:4e:a6:37:0a:9e:93:5e:87: + 5b:e9:90:d6:a8:b6:65:08:8d:61:49:eb:83:20:a9:5d:1b:16: + 60:62:6b:2f:54:fb:5a:02:0d:7a:27:e2:4b:e1:05:14:c2:e4: + e9:f9:70:c0:d9:f7:34:65:0e:a2:91:4b:ac:28:f2:b7:08:0f: + 98:ca:d7:3e:70:b6:c8:0b:f1:8b:9c:51:f8:c6:10:6c:d2:53: + 4f:62:8c:11:00:3e:88:df:bf:e6:d2:cc:70:bd:ed:25:9c:fb: + dd:24:0a:bd:59:91:4a:42:03:38:12:71:32:88:76:a0:8e:7c: + bb:32:ef:88:2a:1b:d4:6a:6f:50:b9:52:67:8b:ab:30:fa:1f: + fd:e3:24:9a +-----BEGIN CERTIFICATE----- +MIIEpjCCA46gAwIBAgIQKByJKWYUQ4BCY1U6MkCuszANBgkqhkiG9w0BAQsFADCB +mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT +MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eSAtIEczMB4XDTE1MDYzMDAwMDAwMFoXDTI1MDYyOTIzNTk1OVowRzELMAkG +A1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xIDAeBgNVBAMTF1JhcGlk +U1NMIFNIQTI1NiBDQSAtIEc0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAwJ46D5qyutPS3BXs0DBUWTBNQFGuQnFx0o1Tc4H+uODElsWOfsLxt2NKz6ce +P6jnzlOg+i331ubOcBGm7uEDUtJo3j0IDYf9HNcLl2JtgjB2G0c6xPfO7R18jLcX +jlOAHh0PXYz5kOQEHgJ+y7BJ79pSJfv7Z+3dhHRZhA7z3nBmjeRSOPdTWjcTZws+ +u6hYty7t/7deEXO5d0VSZ0auxNwkgYl2CsqhbGZzBIKq9XBsXxuaAHlG1n96Jhcw +zzlLLHTZiUR2ENDt94u7iQV1TQsNs9rpv/FqfSoR2x6fjOPEBmnhHYhFOdFuVdiq +t5tv6vTerBcRkl1Am4N7muL3qQIDAQABo4IBOjCCATYwLgYIKwYBBQUHAQEEIjAg +MB4GCCsGAQUFBzABhhJodHRwOi8vZy5zeW1jZC5jb20wEgYDVR0TAQH/BAgwBgEB +/wIBADBJBgNVHSAEQjBAMD4GBmeBDAECATA0MDIGCCsGAQUFBwIBFiZodHRwczov +L3d3dy5nZW90cnVzdC5jb20vcmVzb3VyY2VzL2NwczA2BgNVHR8ELzAtMCugKaAn +hiVodHRwOi8vZy5zeW1jYi5jb20vR2VvVHJ1c3RQQ0EtRzMuY3JsMB0GA1UdJQQW +MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FPO1VgzECbC0zx+q+d0jVvB36KH5MB8GA1UdIwQYMBaAFMR5yo6hTgMdHNxr2zFb +lD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQDDftiDSwRMVSkqTxSdmm7ekHDBpCZM +iI54SO+9nLCg9fBm/P5ZJuF578i3YGSoi0fqL+CDmdpBGdfFvgX68pAR8Ar/bNwF +tNgGb6Rvjb4gK1Tb+aJFg5oepSGJNR18IFwX/QQuRdiyxvhCmfxUCE5LgF85N7qV +TqY3Cp6TXodb6ZDWqLZlCI1hSeuDIKldGxZgYmsvVPtaAg16J+JL4QUUwuTp+XDA +2fc0ZQ6ikUusKPK3CA+Yytc+cLbIC/GLnFH4xhBs0lNPYowRAD6I37/m0sxwve0l +nPvdJAq9WZFKQgM4EnEyiHagjny7Mu+IKhvUam9QuVJni6sw+h/94ySa +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_24[] = { + 0x30, 0x82, 0x04, 0xa6, 0x30, 0x82, 0x03, 0x8e, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x28, 0x1c, 0x89, 0x29, 0x66, 0x14, 0x43, 0x80, 0x42, + 0x63, 0x55, 0x3a, 0x32, 0x40, 0xae, 0xb3, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0x98, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x38, 0x20, 0x47, 0x65, + 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, + 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, + 0x79, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x35, 0x30, 0x36, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x35, 0x30, 0x36, 0x32, 0x39, 0x32, 0x33, + 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x52, 0x61, 0x70, 0x69, 0x64, + 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43, + 0x41, 0x20, 0x2d, 0x20, 0x47, 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, + 0x01, 0x01, 0x00, 0xc0, 0x9e, 0x3a, 0x0f, 0x9a, 0xb2, 0xba, 0xd3, 0xd2, + 0xdc, 0x15, 0xec, 0xd0, 0x30, 0x54, 0x59, 0x30, 0x4d, 0x40, 0x51, 0xae, + 0x42, 0x71, 0x71, 0xd2, 0x8d, 0x53, 0x73, 0x81, 0xfe, 0xb8, 0xe0, 0xc4, + 0x96, 0xc5, 0x8e, 0x7e, 0xc2, 0xf1, 0xb7, 0x63, 0x4a, 0xcf, 0xa7, 0x1e, + 0x3f, 0xa8, 0xe7, 0xce, 0x53, 0xa0, 0xfa, 0x2d, 0xf7, 0xd6, 0xe6, 0xce, + 0x70, 0x11, 0xa6, 0xee, 0xe1, 0x03, 0x52, 0xd2, 0x68, 0xde, 0x3d, 0x08, + 0x0d, 0x87, 0xfd, 0x1c, 0xd7, 0x0b, 0x97, 0x62, 0x6d, 0x82, 0x30, 0x76, + 0x1b, 0x47, 0x3a, 0xc4, 0xf7, 0xce, 0xed, 0x1d, 0x7c, 0x8c, 0xb7, 0x17, + 0x8e, 0x53, 0x80, 0x1e, 0x1d, 0x0f, 0x5d, 0x8c, 0xf9, 0x90, 0xe4, 0x04, + 0x1e, 0x02, 0x7e, 0xcb, 0xb0, 0x49, 0xef, 0xda, 0x52, 0x25, 0xfb, 0xfb, + 0x67, 0xed, 0xdd, 0x84, 0x74, 0x59, 0x84, 0x0e, 0xf3, 0xde, 0x70, 0x66, + 0x8d, 0xe4, 0x52, 0x38, 0xf7, 0x53, 0x5a, 0x37, 0x13, 0x67, 0x0b, 0x3e, + 0xbb, 0xa8, 0x58, 0xb7, 0x2e, 0xed, 0xff, 0xb7, 0x5e, 0x11, 0x73, 0xb9, + 0x77, 0x45, 0x52, 0x67, 0x46, 0xae, 0xc4, 0xdc, 0x24, 0x81, 0x89, 0x76, + 0x0a, 0xca, 0xa1, 0x6c, 0x66, 0x73, 0x04, 0x82, 0xaa, 0xf5, 0x70, 0x6c, + 0x5f, 0x1b, 0x9a, 0x00, 0x79, 0x46, 0xd6, 0x7f, 0x7a, 0x26, 0x17, 0x30, + 0xcf, 0x39, 0x4b, 0x2c, 0x74, 0xd9, 0x89, 0x44, 0x76, 0x10, 0xd0, 0xed, + 0xf7, 0x8b, 0xbb, 0x89, 0x05, 0x75, 0x4d, 0x0b, 0x0d, 0xb3, 0xda, 0xe9, + 0xbf, 0xf1, 0x6a, 0x7d, 0x2a, 0x11, 0xdb, 0x1e, 0x9f, 0x8c, 0xe3, 0xc4, + 0x06, 0x69, 0xe1, 0x1d, 0x88, 0x45, 0x39, 0xd1, 0x6e, 0x55, 0xd8, 0xaa, + 0xb7, 0x9b, 0x6f, 0xea, 0xf4, 0xde, 0xac, 0x17, 0x11, 0x92, 0x5d, 0x40, + 0x9b, 0x83, 0x7b, 0x9a, 0xe2, 0xf7, 0xa9, 0x02, 0x03, 0x01, 0x00, 0x01, + 0xa3, 0x82, 0x01, 0x3a, 0x30, 0x82, 0x01, 0x36, 0x30, 0x2e, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x22, 0x30, 0x20, + 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, + 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, + 0xff, 0x02, 0x01, 0x00, 0x30, 0x49, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x42, 0x30, 0x40, 0x30, 0x3e, 0x06, 0x06, 0x67, 0x81, 0x0c, 0x01, 0x02, + 0x01, 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x36, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x2f, 0x30, 0x2d, 0x30, 0x2b, 0xa0, 0x29, 0xa0, 0x27, + 0x86, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, + 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x6f, + 0x54, 0x72, 0x75, 0x73, 0x74, 0x50, 0x43, 0x41, 0x2d, 0x47, 0x33, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, + 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, 0x0e, + 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, + 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0xf3, 0xb5, 0x56, 0x0c, 0xc4, 0x09, 0xb0, 0xb4, 0xcf, 0x1f, 0xaa, + 0xf9, 0xdd, 0x23, 0x56, 0xf0, 0x77, 0xe8, 0xa1, 0xf9, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xc4, 0x79, + 0xca, 0x8e, 0xa1, 0x4e, 0x03, 0x1d, 0x1c, 0xdc, 0x6b, 0xdb, 0x31, 0x5b, + 0x94, 0x3e, 0x3f, 0x30, 0x7f, 0x2d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x01, 0x00, 0xc3, 0x7e, 0xd8, 0x83, 0x4b, 0x04, 0x4c, 0x55, 0x29, 0x2a, + 0x4f, 0x14, 0x9d, 0x9a, 0x6e, 0xde, 0x90, 0x70, 0xc1, 0xa4, 0x26, 0x4c, + 0x88, 0x8e, 0x78, 0x48, 0xef, 0xbd, 0x9c, 0xb0, 0xa0, 0xf5, 0xf0, 0x66, + 0xfc, 0xfe, 0x59, 0x26, 0xe1, 0x79, 0xef, 0xc8, 0xb7, 0x60, 0x64, 0xa8, + 0x8b, 0x47, 0xea, 0x2f, 0xe0, 0x83, 0x99, 0xda, 0x41, 0x19, 0xd7, 0xc5, + 0xbe, 0x05, 0xfa, 0xf2, 0x90, 0x11, 0xf0, 0x0a, 0xff, 0x6c, 0xdc, 0x05, + 0xb4, 0xd8, 0x06, 0x6f, 0xa4, 0x6f, 0x8d, 0xbe, 0x20, 0x2b, 0x54, 0xdb, + 0xf9, 0xa2, 0x45, 0x83, 0x9a, 0x1e, 0xa5, 0x21, 0x89, 0x35, 0x1d, 0x7c, + 0x20, 0x5c, 0x17, 0xfd, 0x04, 0x2e, 0x45, 0xd8, 0xb2, 0xc6, 0xf8, 0x42, + 0x99, 0xfc, 0x54, 0x08, 0x4e, 0x4b, 0x80, 0x5f, 0x39, 0x37, 0xba, 0x95, + 0x4e, 0xa6, 0x37, 0x0a, 0x9e, 0x93, 0x5e, 0x87, 0x5b, 0xe9, 0x90, 0xd6, + 0xa8, 0xb6, 0x65, 0x08, 0x8d, 0x61, 0x49, 0xeb, 0x83, 0x20, 0xa9, 0x5d, + 0x1b, 0x16, 0x60, 0x62, 0x6b, 0x2f, 0x54, 0xfb, 0x5a, 0x02, 0x0d, 0x7a, + 0x27, 0xe2, 0x4b, 0xe1, 0x05, 0x14, 0xc2, 0xe4, 0xe9, 0xf9, 0x70, 0xc0, + 0xd9, 0xf7, 0x34, 0x65, 0x0e, 0xa2, 0x91, 0x4b, 0xac, 0x28, 0xf2, 0xb7, + 0x08, 0x0f, 0x98, 0xca, 0xd7, 0x3e, 0x70, 0xb6, 0xc8, 0x0b, 0xf1, 0x8b, + 0x9c, 0x51, 0xf8, 0xc6, 0x10, 0x6c, 0xd2, 0x53, 0x4f, 0x62, 0x8c, 0x11, + 0x00, 0x3e, 0x88, 0xdf, 0xbf, 0xe6, 0xd2, 0xcc, 0x70, 0xbd, 0xed, 0x25, + 0x9c, 0xfb, 0xdd, 0x24, 0x0a, 0xbd, 0x59, 0x91, 0x4a, 0x42, 0x03, 0x38, + 0x12, 0x71, 0x32, 0x88, 0x76, 0xa0, 0x8e, 0x7c, 0xbb, 0x32, 0xef, 0x88, + 0x2a, 0x1b, 0xd4, 0x6a, 0x6f, 0x50, 0xb9, 0x52, 0x67, 0x8b, 0xab, 0x30, + 0xfa, 0x1f, 0xfd, 0xe3, 0x24, 0x9a, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 5d:72:fb:33:76:20:f6:4c:72:80:db:e9:12:81:ff:6a + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2006 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA + Validity + Not Before: Oct 31 00:00:00 2013 GMT + Not After : Oct 30 23:59:59 2023 GMT + Subject: C=US, O=thawte, Inc., CN=thawte EV SSL CA - G3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:c4:dd:da:94:1e:32:b2:2e:a0:83:c0:a6:7d:5f: + 65:2d:fd:27:b8:73:0e:f8:0b:a9:d4:56:26:69:98: + 67:35:39:64:58:ce:82:6f:98:94:d1:8f:e0:90:d6: + ed:55:4b:98:4b:d7:10:59:34:02:1b:e7:51:31:51: + c4:38:c2:bc:db:03:5c:ca:e1:7c:dc:4f:59:97:ea: + 07:7f:0f:85:3e:92:ea:aa:a7:d9:be:01:41:e4:62: + 56:47:36:bd:57:91:e6:21:d3:f8:41:0b:d8:ba:e8: + ed:81:ad:70:c0:8b:6e:f3:89:6e:27:9e:a6:a6:73: + 59:bb:71:00:d4:4f:4b:48:e9:d5:c9:27:36:9c:7c: + 1c:02:aa:ac:bd:3b:d1:53:83:6a:1f:e6:08:47:33: + a7:b1:9f:02:be:9b:47:ed:33:04:dc:1c:80:27:d1: + 4a:33:a0:8c:eb:01:47:a1:32:90:64:7b:c4:e0:84: + c9:32:e9:dd:34:1f:8a:68:67:f3:ad:10:63:eb:ee: + 8a:9a:b1:2a:1b:26:74:a1:2a:b0:8f:fe:52:98:46: + 97:cf:a3:56:1c:6f:6e:99:97:8d:26:0e:a9:ec:c2: + 53:70:fc:7a:a5:19:49:bd:b5:17:82:55:de:97:e0: + 5d:62:84:81:f0:70:a8:34:53:4f:14:fd:3d:5d:3d: + 6f:b9 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + Authority Information Access: + OCSP - URI:http://t2.symcb.com + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.thawte.com/cps + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://t1.symcb.com/ThawtePCA.crl + + X509v3 Subject Alternative Name: + DirName:/CN=SymantecPKI-1-536 + X509v3 Subject Key Identifier: + F0:70:51:DA:D3:2A:91:4F:52:77:D7:86:77:74:0F:CE:71:1A:6C:22 + X509v3 Authority Key Identifier: + keyid:7B:5B:45:CF:AF:CE:CB:7A:FD:31:92:1A:6A:B6:F3:46:EB:57:48:50 + + Signature Algorithm: sha256WithRSAEncryption + a1:2e:94:3e:9b:16:f4:58:1a:6f:c1:fa:c1:7e:43:93:b2:c3: + f7:89:eb:13:62:5d:dd:cc:61:13:2b:1d:4e:88:79:11:62:14: + 37:30:46:ff:89:62:10:85:2a:87:1e:f8:e2:af:fe:93:02:93: + ca:f2:e9:46:03:6b:a1:1a:ac:d5:f0:80:1b:98:6f:b8:3a:50: + f8:54:71:06:03:e7:84:cc:8e:61:d2:5f:4d:0c:97:02:65:b5: + 8c:26:bc:05:98:f4:dc:c6:af:e4:57:7f:e3:dc:a1:d7:27:47: + 2a:e0:2c:3f:09:74:dc:5a:e5:b5:7c:fa:82:9a:15:fa:74:2b: + 84:2e:6b:ac:ef:35:a6:30:fa:47:4a:aa:36:44:f6:5a:91:07: + d3:e4:4e:97:3f:a6:53:d8:29:33:32:6f:8b:3d:b5:a5:0d:e5: + e4:8a:e8:f5:c0:fa:af:d8:37:28:27:c3:ed:34:31:d9:7c:a6: + af:4d:12:4f:d0:2b:92:9c:69:95:f2:28:a6:fe:a8:c6:e0:2c: + 4d:36:eb:11:34:d6:e1:81:99:9d:41:f2:e7:c5:57:05:0e:19: + ca:af:42:39:1f:a7:27:5e:e0:0a:17:b8:ae:47:ab:92:f1:8a: + 04:df:30:e0:bb:4f:8a:f9:1b:88:4f:03:b4:25:7a:78:de:2e: + 7d:29:d1:31 +-----BEGIN CERTIFICATE----- +MIIErzCCA5egAwIBAgIQXXL7M3Yg9kxygNvpEoH/ajANBgkqhkiG9w0BAQsFADCB +qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV +BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMTMxMDMxMDAwMDAwWhcNMjMx +MDMwMjM1OTU5WjBEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3RlLCBJbmMu +MR4wHAYDVQQDExV0aGF3dGUgRVYgU1NMIENBIC0gRzMwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDE3dqUHjKyLqCDwKZ9X2Ut/Se4cw74C6nUViZpmGc1 +OWRYzoJvmJTRj+CQ1u1VS5hL1xBZNAIb51ExUcQ4wrzbA1zK4XzcT1mX6gd/D4U+ +kuqqp9m+AUHkYlZHNr1XkeYh0/hBC9i66O2BrXDAi27ziW4nnqamc1m7cQDUT0tI +6dXJJzacfBwCqqy9O9FTg2of5ghHM6exnwK+m0ftMwTcHIAn0UozoIzrAUehMpBk +e8TghMky6d00H4poZ/OtEGPr7oqasSobJnShKrCP/lKYRpfPo1Ycb26Zl40mDqns +wlNw/HqlGUm9tReCVd6X4F1ihIHwcKg0U08U/T1dPW+5AgMBAAGjggE1MIIBMTAS +BgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAvBggrBgEFBQcBAQQj +MCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly90Mi5zeW1jYi5jb20wOwYDVR0gBDQwMjAw +BgRVHSAAMCgwJgYIKwYBBQUHAgEWGmh0dHBzOi8vd3d3LnRoYXd0ZS5jb20vY3Bz +MDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly90MS5zeW1jYi5jb20vVGhhd3RlUENB +LmNybDApBgNVHREEIjAgpB4wHDEaMBgGA1UEAxMRU3ltYW50ZWNQS0ktMS01MzYw +HQYDVR0OBBYEFPBwUdrTKpFPUnfXhnd0D85xGmwiMB8GA1UdIwQYMBaAFHtbRc+v +zst6/TGSGmq280brV0hQMA0GCSqGSIb3DQEBCwUAA4IBAQChLpQ+mxb0WBpvwfrB +fkOTssP3iesTYl3dzGETKx1OiHkRYhQ3MEb/iWIQhSqHHvjir/6TApPK8ulGA2uh +GqzV8IAbmG+4OlD4VHEGA+eEzI5h0l9NDJcCZbWMJrwFmPTcxq/kV3/j3KHXJ0cq +4Cw/CXTcWuW1fPqCmhX6dCuELmus7zWmMPpHSqo2RPZakQfT5E6XP6ZT2CkzMm+L +PbWlDeXkiuj1wPqv2DcoJ8PtNDHZfKavTRJP0CuSnGmV8iim/qjG4CxNNusRNNbh +gZmdQfLnxVcFDhnKr0I5H6cnXuAKF7iuR6uS8YoE3zDgu0+K+RuITwO0JXp43i59 +KdEx +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_25[] = { + 0x30, 0x82, 0x04, 0xaf, 0x30, 0x82, 0x03, 0x97, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x5d, 0x72, 0xfb, 0x33, 0x76, 0x20, 0xf6, 0x4c, 0x72, + 0x80, 0xdb, 0xe9, 0x12, 0x81, 0xff, 0x6a, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, + 0x30, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x44, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x15, 0x74, + 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x45, 0x56, 0x20, 0x53, 0x53, 0x4c, + 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xc4, 0xdd, 0xda, 0x94, 0x1e, 0x32, 0xb2, + 0x2e, 0xa0, 0x83, 0xc0, 0xa6, 0x7d, 0x5f, 0x65, 0x2d, 0xfd, 0x27, 0xb8, + 0x73, 0x0e, 0xf8, 0x0b, 0xa9, 0xd4, 0x56, 0x26, 0x69, 0x98, 0x67, 0x35, + 0x39, 0x64, 0x58, 0xce, 0x82, 0x6f, 0x98, 0x94, 0xd1, 0x8f, 0xe0, 0x90, + 0xd6, 0xed, 0x55, 0x4b, 0x98, 0x4b, 0xd7, 0x10, 0x59, 0x34, 0x02, 0x1b, + 0xe7, 0x51, 0x31, 0x51, 0xc4, 0x38, 0xc2, 0xbc, 0xdb, 0x03, 0x5c, 0xca, + 0xe1, 0x7c, 0xdc, 0x4f, 0x59, 0x97, 0xea, 0x07, 0x7f, 0x0f, 0x85, 0x3e, + 0x92, 0xea, 0xaa, 0xa7, 0xd9, 0xbe, 0x01, 0x41, 0xe4, 0x62, 0x56, 0x47, + 0x36, 0xbd, 0x57, 0x91, 0xe6, 0x21, 0xd3, 0xf8, 0x41, 0x0b, 0xd8, 0xba, + 0xe8, 0xed, 0x81, 0xad, 0x70, 0xc0, 0x8b, 0x6e, 0xf3, 0x89, 0x6e, 0x27, + 0x9e, 0xa6, 0xa6, 0x73, 0x59, 0xbb, 0x71, 0x00, 0xd4, 0x4f, 0x4b, 0x48, + 0xe9, 0xd5, 0xc9, 0x27, 0x36, 0x9c, 0x7c, 0x1c, 0x02, 0xaa, 0xac, 0xbd, + 0x3b, 0xd1, 0x53, 0x83, 0x6a, 0x1f, 0xe6, 0x08, 0x47, 0x33, 0xa7, 0xb1, + 0x9f, 0x02, 0xbe, 0x9b, 0x47, 0xed, 0x33, 0x04, 0xdc, 0x1c, 0x80, 0x27, + 0xd1, 0x4a, 0x33, 0xa0, 0x8c, 0xeb, 0x01, 0x47, 0xa1, 0x32, 0x90, 0x64, + 0x7b, 0xc4, 0xe0, 0x84, 0xc9, 0x32, 0xe9, 0xdd, 0x34, 0x1f, 0x8a, 0x68, + 0x67, 0xf3, 0xad, 0x10, 0x63, 0xeb, 0xee, 0x8a, 0x9a, 0xb1, 0x2a, 0x1b, + 0x26, 0x74, 0xa1, 0x2a, 0xb0, 0x8f, 0xfe, 0x52, 0x98, 0x46, 0x97, 0xcf, + 0xa3, 0x56, 0x1c, 0x6f, 0x6e, 0x99, 0x97, 0x8d, 0x26, 0x0e, 0xa9, 0xec, + 0xc2, 0x53, 0x70, 0xfc, 0x7a, 0xa5, 0x19, 0x49, 0xbd, 0xb5, 0x17, 0x82, + 0x55, 0xde, 0x97, 0xe0, 0x5d, 0x62, 0x84, 0x81, 0xf0, 0x70, 0xa8, 0x34, + 0x53, 0x4f, 0x14, 0xfd, 0x3d, 0x5d, 0x3d, 0x6f, 0xb9, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x35, 0x30, 0x82, 0x01, 0x31, 0x30, 0x12, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, + 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2f, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x23, + 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x74, + 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x30, + 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, + 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, + 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, + 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, + 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30, + 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x74, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, + 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, + 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, + 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x35, 0x33, 0x36, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xf0, 0x70, + 0x51, 0xda, 0xd3, 0x2a, 0x91, 0x4f, 0x52, 0x77, 0xd7, 0x86, 0x77, 0x74, + 0x0f, 0xce, 0x71, 0x1a, 0x6c, 0x22, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7b, 0x5b, 0x45, 0xcf, 0xaf, + 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, 0x6a, 0xb6, 0xf3, 0x46, 0xeb, + 0x57, 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xa1, + 0x2e, 0x94, 0x3e, 0x9b, 0x16, 0xf4, 0x58, 0x1a, 0x6f, 0xc1, 0xfa, 0xc1, + 0x7e, 0x43, 0x93, 0xb2, 0xc3, 0xf7, 0x89, 0xeb, 0x13, 0x62, 0x5d, 0xdd, + 0xcc, 0x61, 0x13, 0x2b, 0x1d, 0x4e, 0x88, 0x79, 0x11, 0x62, 0x14, 0x37, + 0x30, 0x46, 0xff, 0x89, 0x62, 0x10, 0x85, 0x2a, 0x87, 0x1e, 0xf8, 0xe2, + 0xaf, 0xfe, 0x93, 0x02, 0x93, 0xca, 0xf2, 0xe9, 0x46, 0x03, 0x6b, 0xa1, + 0x1a, 0xac, 0xd5, 0xf0, 0x80, 0x1b, 0x98, 0x6f, 0xb8, 0x3a, 0x50, 0xf8, + 0x54, 0x71, 0x06, 0x03, 0xe7, 0x84, 0xcc, 0x8e, 0x61, 0xd2, 0x5f, 0x4d, + 0x0c, 0x97, 0x02, 0x65, 0xb5, 0x8c, 0x26, 0xbc, 0x05, 0x98, 0xf4, 0xdc, + 0xc6, 0xaf, 0xe4, 0x57, 0x7f, 0xe3, 0xdc, 0xa1, 0xd7, 0x27, 0x47, 0x2a, + 0xe0, 0x2c, 0x3f, 0x09, 0x74, 0xdc, 0x5a, 0xe5, 0xb5, 0x7c, 0xfa, 0x82, + 0x9a, 0x15, 0xfa, 0x74, 0x2b, 0x84, 0x2e, 0x6b, 0xac, 0xef, 0x35, 0xa6, + 0x30, 0xfa, 0x47, 0x4a, 0xaa, 0x36, 0x44, 0xf6, 0x5a, 0x91, 0x07, 0xd3, + 0xe4, 0x4e, 0x97, 0x3f, 0xa6, 0x53, 0xd8, 0x29, 0x33, 0x32, 0x6f, 0x8b, + 0x3d, 0xb5, 0xa5, 0x0d, 0xe5, 0xe4, 0x8a, 0xe8, 0xf5, 0xc0, 0xfa, 0xaf, + 0xd8, 0x37, 0x28, 0x27, 0xc3, 0xed, 0x34, 0x31, 0xd9, 0x7c, 0xa6, 0xaf, + 0x4d, 0x12, 0x4f, 0xd0, 0x2b, 0x92, 0x9c, 0x69, 0x95, 0xf2, 0x28, 0xa6, + 0xfe, 0xa8, 0xc6, 0xe0, 0x2c, 0x4d, 0x36, 0xeb, 0x11, 0x34, 0xd6, 0xe1, + 0x81, 0x99, 0x9d, 0x41, 0xf2, 0xe7, 0xc5, 0x57, 0x05, 0x0e, 0x19, 0xca, + 0xaf, 0x42, 0x39, 0x1f, 0xa7, 0x27, 0x5e, 0xe0, 0x0a, 0x17, 0xb8, 0xae, + 0x47, 0xab, 0x92, 0xf1, 0x8a, 0x04, 0xdf, 0x30, 0xe0, 0xbb, 0x4f, 0x8a, + 0xf9, 0x1b, 0x88, 0x4f, 0x03, 0xb4, 0x25, 0x7a, 0x78, 0xde, 0x2e, 0x7d, + 0x29, 0xd1, 0x31, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 04:e1:e7:a4:dc:5c:f2:f3:6d:c0:2b:42:b8:5d:15:9f + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA + Validity + Not Before: Oct 22 12:00:00 2013 GMT + Not After : Oct 22 12:00:00 2028 GMT + Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 High Assurance Server CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:b6:e0:2f:c2:24:06:c8:6d:04:5f:d7:ef:0a:64: + 06:b2:7d:22:26:65:16:ae:42:40:9b:ce:dc:9f:9f: + 76:07:3e:c3:30:55:87:19:b9:4f:94:0e:5a:94:1f: + 55:56:b4:c2:02:2a:af:d0:98:ee:0b:40:d7:c4:d0: + 3b:72:c8:14:9e:ef:90:b1:11:a9:ae:d2:c8:b8:43: + 3a:d9:0b:0b:d5:d5:95:f5:40:af:c8:1d:ed:4d:9c: + 5f:57:b7:86:50:68:99:f5:8a:da:d2:c7:05:1f:a8: + 97:c9:dc:a4:b1:82:84:2d:c6:ad:a5:9c:c7:19:82: + a6:85:0f:5e:44:58:2a:37:8f:fd:35:f1:0b:08:27: + 32:5a:f5:bb:8b:9e:a4:bd:51:d0:27:e2:dd:3b:42: + 33:a3:05:28:c4:bb:28:cc:9a:ac:2b:23:0d:78:c6: + 7b:e6:5e:71:b7:4a:3e:08:fb:81:b7:16:16:a1:9d: + 23:12:4d:e5:d7:92:08:ac:75:a4:9c:ba:cd:17:b2: + 1e:44:35:65:7f:53:25:39:d1:1c:0a:9a:63:1b:19: + 92:74:68:0a:37:c2:c2:52:48:cb:39:5a:a2:b6:e1: + 5d:c1:dd:a0:20:b8:21:a2:93:26:6f:14:4a:21:41: + c7:ed:6d:9b:f2:48:2f:f3:03:f5:a2:68:92:53:2f: + 5e:e3 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication + Authority Information Access: + OCSP - URI:http://ocsp.digicert.com + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl4.digicert.com/DigiCertHighAssuranceEVRootCA.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.digicert.com/CPS + + X509v3 Subject Key Identifier: + 51:68:FF:90:AF:02:07:75:3C:CC:D9:65:64:62:A2:12:B8:59:72:3B + X509v3 Authority Key Identifier: + keyid:B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3 + + Signature Algorithm: sha256WithRSAEncryption + 18:8a:95:89:03:e6:6d:df:5c:fc:1d:68:ea:4a:8f:83:d6:51: + 2f:8d:6b:44:16:9e:ac:63:f5:d2:6e:6c:84:99:8b:aa:81:71: + 84:5b:ed:34:4e:b0:b7:79:92:29:cc:2d:80:6a:f0:8e:20:e1: + 79:a4:fe:03:47:13:ea:f5:86:ca:59:71:7d:f4:04:96:6b:d3: + 59:58:3d:fe:d3:31:25:5c:18:38:84:a3:e6:9f:82:fd:8c:5b: + 98:31:4e:cd:78:9e:1a:fd:85:cb:49:aa:f2:27:8b:99:72:fc: + 3e:aa:d5:41:0b:da:d5:36:a1:bf:1c:6e:47:49:7f:5e:d9:48: + 7c:03:d9:fd:8b:49:a0:98:26:42:40:eb:d6:92:11:a4:64:0a: + 57:54:c4:f5:1d:d6:02:5e:6b:ac:ee:c4:80:9a:12:72:fa:56: + 93:d7:ff:bf:30:85:06:30:bf:0b:7f:4e:ff:57:05:9d:24:ed: + 85:c3:2b:fb:a6:75:a8:ac:2d:16:ef:7d:79:27:b2:eb:c2:9d: + 0b:07:ea:aa:85:d3:01:a3:20:28:41:59:43:28:d2:81:e3:aa: + f6:ec:7b:3b:77:b6:40:62:80:05:41:45:01:ef:17:06:3e:de: + c0:33:9b:67:d3:61:2e:72:87:e4:69:fc:12:00:57:40:1e:70: + f5:1e:c9:b4 +-----BEGIN CERTIFICATE----- +MIIEsTCCA5mgAwIBAgIQBOHnpNxc8vNtwCtCuF0VnzANBgkqhkiG9w0BAQsFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTEzMTAyMjEyMDAwMFoXDTI4MTAyMjEyMDAwMFowcDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTEvMC0GA1UEAxMmRGlnaUNlcnQgU0hBMiBIaWdoIEFzc3Vy +YW5jZSBTZXJ2ZXIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2 +4C/CJAbIbQRf1+8KZAayfSImZRauQkCbztyfn3YHPsMwVYcZuU+UDlqUH1VWtMIC +Kq/QmO4LQNfE0DtyyBSe75CxEamu0si4QzrZCwvV1ZX1QK/IHe1NnF9Xt4ZQaJn1 +itrSxwUfqJfJ3KSxgoQtxq2lnMcZgqaFD15EWCo3j/018QsIJzJa9buLnqS9UdAn +4t07QjOjBSjEuyjMmqwrIw14xnvmXnG3Sj4I+4G3FhahnSMSTeXXkgisdaScus0X +sh5ENWV/UyU50RwKmmMbGZJ0aAo3wsJSSMs5WqK24V3B3aAguCGikyZvFEohQcft +bZvySC/zA/WiaJJTL17jAgMBAAGjggFJMIIBRTASBgNVHRMBAf8ECDAGAQH/AgEA +MA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw +NAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy +dC5jb20wSwYDVR0fBEQwQjBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNlcnQuY29t +L0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDA9BgNVHSAENjA0MDIG +BFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQ +UzAdBgNVHQ4EFgQUUWj/kK8CB3U8zNllZGKiErhZcjswHwYDVR0jBBgwFoAUsT7D +aQP4v0cB1JgmGggC72NkK8MwDQYJKoZIhvcNAQELBQADggEBABiKlYkD5m3fXPwd +aOpKj4PWUS+Na0QWnqxj9dJubISZi6qBcYRb7TROsLd5kinMLYBq8I4g4Xmk/gNH +E+r1hspZcX30BJZr01lYPf7TMSVcGDiEo+afgv2MW5gxTs14nhr9hctJqvIni5ly +/D6q1UEL2tU2ob8cbkdJf17ZSHwD2f2LSaCYJkJA69aSEaRkCldUxPUd1gJea6zu +xICaEnL6VpPX/78whQYwvwt/Tv9XBZ0k7YXDK/umdaisLRbvfXknsuvCnQsH6qqF +0wGjIChBWUMo0oHjqvbsezt3tkBigAVBRQHvFwY+3sAzm2fTYS5yh+Rp/BIAV0Ae +cPUeybQ= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_26[] = { + 0x30, 0x82, 0x04, 0xb1, 0x30, 0x82, 0x03, 0x99, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x04, 0xe1, 0xe7, 0xa4, 0xdc, 0x5c, 0xf2, 0xf3, 0x6d, + 0xc0, 0x2b, 0x42, 0xb8, 0x5d, 0x15, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x6c, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, + 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, + 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x32, 0x32, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x38, 0x31, 0x30, 0x32, + 0x32, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x70, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, + 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, + 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x26, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x48, 0x41, + 0x32, 0x20, 0x48, 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, + 0x61, 0x6e, 0x63, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, + 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb6, + 0xe0, 0x2f, 0xc2, 0x24, 0x06, 0xc8, 0x6d, 0x04, 0x5f, 0xd7, 0xef, 0x0a, + 0x64, 0x06, 0xb2, 0x7d, 0x22, 0x26, 0x65, 0x16, 0xae, 0x42, 0x40, 0x9b, + 0xce, 0xdc, 0x9f, 0x9f, 0x76, 0x07, 0x3e, 0xc3, 0x30, 0x55, 0x87, 0x19, + 0xb9, 0x4f, 0x94, 0x0e, 0x5a, 0x94, 0x1f, 0x55, 0x56, 0xb4, 0xc2, 0x02, + 0x2a, 0xaf, 0xd0, 0x98, 0xee, 0x0b, 0x40, 0xd7, 0xc4, 0xd0, 0x3b, 0x72, + 0xc8, 0x14, 0x9e, 0xef, 0x90, 0xb1, 0x11, 0xa9, 0xae, 0xd2, 0xc8, 0xb8, + 0x43, 0x3a, 0xd9, 0x0b, 0x0b, 0xd5, 0xd5, 0x95, 0xf5, 0x40, 0xaf, 0xc8, + 0x1d, 0xed, 0x4d, 0x9c, 0x5f, 0x57, 0xb7, 0x86, 0x50, 0x68, 0x99, 0xf5, + 0x8a, 0xda, 0xd2, 0xc7, 0x05, 0x1f, 0xa8, 0x97, 0xc9, 0xdc, 0xa4, 0xb1, + 0x82, 0x84, 0x2d, 0xc6, 0xad, 0xa5, 0x9c, 0xc7, 0x19, 0x82, 0xa6, 0x85, + 0x0f, 0x5e, 0x44, 0x58, 0x2a, 0x37, 0x8f, 0xfd, 0x35, 0xf1, 0x0b, 0x08, + 0x27, 0x32, 0x5a, 0xf5, 0xbb, 0x8b, 0x9e, 0xa4, 0xbd, 0x51, 0xd0, 0x27, + 0xe2, 0xdd, 0x3b, 0x42, 0x33, 0xa3, 0x05, 0x28, 0xc4, 0xbb, 0x28, 0xcc, + 0x9a, 0xac, 0x2b, 0x23, 0x0d, 0x78, 0xc6, 0x7b, 0xe6, 0x5e, 0x71, 0xb7, + 0x4a, 0x3e, 0x08, 0xfb, 0x81, 0xb7, 0x16, 0x16, 0xa1, 0x9d, 0x23, 0x12, + 0x4d, 0xe5, 0xd7, 0x92, 0x08, 0xac, 0x75, 0xa4, 0x9c, 0xba, 0xcd, 0x17, + 0xb2, 0x1e, 0x44, 0x35, 0x65, 0x7f, 0x53, 0x25, 0x39, 0xd1, 0x1c, 0x0a, + 0x9a, 0x63, 0x1b, 0x19, 0x92, 0x74, 0x68, 0x0a, 0x37, 0xc2, 0xc2, 0x52, + 0x48, 0xcb, 0x39, 0x5a, 0xa2, 0xb6, 0xe1, 0x5d, 0xc1, 0xdd, 0xa0, 0x20, + 0xb8, 0x21, 0xa2, 0x93, 0x26, 0x6f, 0x14, 0x4a, 0x21, 0x41, 0xc7, 0xed, + 0x6d, 0x9b, 0xf2, 0x48, 0x2f, 0xf3, 0x03, 0xf5, 0xa2, 0x68, 0x92, 0x53, + 0x2f, 0x5e, 0xe3, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x49, + 0x30, 0x82, 0x01, 0x45, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, + 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, + 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, + 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, + 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, + 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4b, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x44, 0x30, 0x42, 0x30, 0x40, 0xa0, 0x3e, 0xa0, 0x3c, 0x86, 0x3a, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x34, 0x2e, + 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, 0x69, 0x67, + 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x56, + 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, + 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x50, + 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x51, 0x68, 0xff, 0x90, 0xaf, 0x02, 0x07, 0x75, 0x3c, 0xcc, 0xd9, 0x65, + 0x64, 0x62, 0xa2, 0x12, 0xb8, 0x59, 0x72, 0x3b, 0x30, 0x1f, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xb1, 0x3e, 0xc3, + 0x69, 0x03, 0xf8, 0xbf, 0x47, 0x01, 0xd4, 0x98, 0x26, 0x1a, 0x08, 0x02, + 0xef, 0x63, 0x64, 0x2b, 0xc3, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, + 0x00, 0x18, 0x8a, 0x95, 0x89, 0x03, 0xe6, 0x6d, 0xdf, 0x5c, 0xfc, 0x1d, + 0x68, 0xea, 0x4a, 0x8f, 0x83, 0xd6, 0x51, 0x2f, 0x8d, 0x6b, 0x44, 0x16, + 0x9e, 0xac, 0x63, 0xf5, 0xd2, 0x6e, 0x6c, 0x84, 0x99, 0x8b, 0xaa, 0x81, + 0x71, 0x84, 0x5b, 0xed, 0x34, 0x4e, 0xb0, 0xb7, 0x79, 0x92, 0x29, 0xcc, + 0x2d, 0x80, 0x6a, 0xf0, 0x8e, 0x20, 0xe1, 0x79, 0xa4, 0xfe, 0x03, 0x47, + 0x13, 0xea, 0xf5, 0x86, 0xca, 0x59, 0x71, 0x7d, 0xf4, 0x04, 0x96, 0x6b, + 0xd3, 0x59, 0x58, 0x3d, 0xfe, 0xd3, 0x31, 0x25, 0x5c, 0x18, 0x38, 0x84, + 0xa3, 0xe6, 0x9f, 0x82, 0xfd, 0x8c, 0x5b, 0x98, 0x31, 0x4e, 0xcd, 0x78, + 0x9e, 0x1a, 0xfd, 0x85, 0xcb, 0x49, 0xaa, 0xf2, 0x27, 0x8b, 0x99, 0x72, + 0xfc, 0x3e, 0xaa, 0xd5, 0x41, 0x0b, 0xda, 0xd5, 0x36, 0xa1, 0xbf, 0x1c, + 0x6e, 0x47, 0x49, 0x7f, 0x5e, 0xd9, 0x48, 0x7c, 0x03, 0xd9, 0xfd, 0x8b, + 0x49, 0xa0, 0x98, 0x26, 0x42, 0x40, 0xeb, 0xd6, 0x92, 0x11, 0xa4, 0x64, + 0x0a, 0x57, 0x54, 0xc4, 0xf5, 0x1d, 0xd6, 0x02, 0x5e, 0x6b, 0xac, 0xee, + 0xc4, 0x80, 0x9a, 0x12, 0x72, 0xfa, 0x56, 0x93, 0xd7, 0xff, 0xbf, 0x30, + 0x85, 0x06, 0x30, 0xbf, 0x0b, 0x7f, 0x4e, 0xff, 0x57, 0x05, 0x9d, 0x24, + 0xed, 0x85, 0xc3, 0x2b, 0xfb, 0xa6, 0x75, 0xa8, 0xac, 0x2d, 0x16, 0xef, + 0x7d, 0x79, 0x27, 0xb2, 0xeb, 0xc2, 0x9d, 0x0b, 0x07, 0xea, 0xaa, 0x85, + 0xd3, 0x01, 0xa3, 0x20, 0x28, 0x41, 0x59, 0x43, 0x28, 0xd2, 0x81, 0xe3, + 0xaa, 0xf6, 0xec, 0x7b, 0x3b, 0x77, 0xb6, 0x40, 0x62, 0x80, 0x05, 0x41, + 0x45, 0x01, 0xef, 0x17, 0x06, 0x3e, 0xde, 0xc0, 0x33, 0x9b, 0x67, 0xd3, + 0x61, 0x2e, 0x72, 0x87, 0xe4, 0x69, 0xfc, 0x12, 0x00, 0x57, 0x40, 0x1e, + 0x70, 0xf5, 0x1e, 0xc9, 0xb4, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 16:87:d6:88:6d:e2:30:06:85:23:3d:bf:11:bf:65:97 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2006 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA + Validity + Not Before: Oct 31 00:00:00 2013 GMT + Not After : Oct 30 23:59:59 2023 GMT + Subject: C=US, O=thawte, Inc., CN=thawte SSL CA - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:b2:fc:06:fb:04:93:d2:ea:59:20:3b:44:85:97: + 52:39:e7:10:f0:7a:e0:b0:94:40:da:46:f8:0c:28: + bb:b9:ce:60:38:3f:d2:d8:11:42:1b:91:ad:49:ee: + 8f:c7:de:6c:de:37:6f:fd:8b:20:3c:6d:e7:74:d3: + dc:d5:24:88:41:80:89:ee:36:be:c4:d5:be:8d:53: + 13:aa:e4:a5:b8:93:0a:be:ec:da:cd:3c:d4:32:56: + ef:d0:4e:a0:b8:97:bb:39:50:1e:6e:65:c3:fd:b2: + ce:e0:59:a9:48:09:c6:fe:be:ae:fc:3e:3b:81:20: + 97:8b:8f:46:df:60:64:07:75:bb:1b:86:38:9f:47: + 7b:34:ce:a1:d1:97:ad:76:d8:9f:b7:26:db:79:80: + 36:48:f2:c5:37:f8:d9:32:ae:7c:a4:53:81:c7:99: + a1:54:38:2f:4f:75:a0:bb:5a:a5:bb:cd:ac:02:5b: + 19:02:d5:13:18:a7:ce:ac:74:55:12:05:8b:9b:a2: + 95:46:64:72:38:cd:5a:1b:3a:16:a7:be:71:99:8c: + 54:03:b8:96:6c:01:d3:3e:06:98:3f:21:81:3b:02: + 7e:00:47:53:01:1e:0e:46:43:fb:4b:2d:dc:0b:1a: + e8:2f:98:f8:7e:d1:99:ab:13:6c:a4:17:de:6f:f6: + 15:f5 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 CRL Distribution Points: + + Full Name: + URI:http://t1.symcb.com/ThawtePCA.crl + + Authority Information Access: + OCSP - URI:http://t2.symcb.com + + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: https://www.thawte.com/cps + + X509v3 Subject Alternative Name: + DirName:/CN=SymantecPKI-1-537 + X509v3 Subject Key Identifier: + C2:4F:48:57:FC:D1:4F:9A:C0:5D:38:7D:0E:05:DB:D9:2E:B5:52:60 + X509v3 Authority Key Identifier: + keyid:7B:5B:45:CF:AF:CE:CB:7A:FD:31:92:1A:6A:B6:F3:46:EB:57:48:50 + + Signature Algorithm: sha256WithRSAEncryption + 8d:06:de:43:c9:76:02:ca:d9:23:97:5e:f3:63:d7:7d:44:c2: + 0f:6b:0a:f5:07:e5:8b:b8:fa:e0:a3:fa:6b:80:92:b5:03:2c: + c5:37:e0:c2:e5:95:b5:92:70:18:28:42:94:ee:4b:77:6a:01: + 0f:8b:23:ec:56:4d:f4:00:69:e5:84:c8:e2:ea:de:5b:3e:f6: + 3c:07:3a:94:ca:6c:27:b1:cc:83:1a:60:71:27:d2:bf:02:f5: + 1e:44:d3:48:d5:a6:d3:76:21:00:9c:fa:98:64:eb:17:36:3f: + eb:1b:3c:3e:a6:b1:d9:58:06:0e:72:d9:68:be:f1:a7:20:d7: + 52:e4:a4:77:1f:71:70:9d:55:35:85:37:e1:1d:4d:94:c2:70: + 7f:95:40:6e:4b:7d:b2:b4:29:2a:03:79:c8:b9:4c:67:61:04: + a0:8b:27:ff:59:00:eb:55:7f:c6:b7:33:35:2d:5e:4e:ac:b8: + ea:12:c5:e8:f7:b9:ab:be:74:92:2c:b7:d9:4d:ca:84:2f:1c: + c2:f0:72:7c:b2:31:6e:cf:80:e5:88:07:36:51:7b:ba:61:af: + 6d:8d:23:5b:34:a3:95:bc:a2:31:7f:f2:f5:e7:b7:e8:ef:c4: + b5:27:32:e9:f7:9e:69:c7:2b:e8:be:bb:0c:aa:e7:ea:60:12: + ea:26:8a:78 +-----BEGIN CERTIFICATE----- +MIIEsjCCA5qgAwIBAgIQFofWiG3iMAaFIz2/Eb9llzANBgkqhkiG9w0BAQsFADCB +qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV +BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMTMxMDMxMDAwMDAwWhcNMjMx +MDMwMjM1OTU5WjBBMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3RlLCBJbmMu +MRswGQYDVQQDExJ0aGF3dGUgU1NMIENBIC0gRzIwggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQCy/Ab7BJPS6lkgO0SFl1I55xDweuCwlEDaRvgMKLu5zmA4 +P9LYEUIbka1J7o/H3mzeN2/9iyA8bed009zVJIhBgInuNr7E1b6NUxOq5KW4kwq+ +7NrNPNQyVu/QTqC4l7s5UB5uZcP9ss7gWalICcb+vq78PjuBIJeLj0bfYGQHdbsb +hjifR3s0zqHRl6122J+3Jtt5gDZI8sU3+NkyrnykU4HHmaFUOC9PdaC7WqW7zawC +WxkC1RMYp86sdFUSBYubopVGZHI4zVobOhanvnGZjFQDuJZsAdM+Bpg/IYE7An4A +R1MBHg5GQ/tLLdwLGugvmPh+0ZmrE2ykF95v9hX1AgMBAAGjggE7MIIBNzASBgNV +HRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAyBgNVHR8EKzApMCegJaAj +hiFodHRwOi8vdDEuc3ltY2IuY29tL1RoYXd0ZVBDQS5jcmwwLwYIKwYBBQUHAQEE +IzAhMB8GCCsGAQUFBzABhhNodHRwOi8vdDIuc3ltY2IuY29tMEEGA1UdIAQ6MDgw +NgYKYIZIAYb4RQEHNjAoMCYGCCsGAQUFBwIBFhpodHRwczovL3d3dy50aGF3dGUu +Y29tL2NwczApBgNVHREEIjAgpB4wHDEaMBgGA1UEAxMRU3ltYW50ZWNQS0ktMS01 +MzcwHQYDVR0OBBYEFMJPSFf80U+awF04fQ4F29kutVJgMB8GA1UdIwQYMBaAFHtb +Rc+vzst6/TGSGmq280brV0hQMA0GCSqGSIb3DQEBCwUAA4IBAQCNBt5DyXYCytkj +l17zY9d9RMIPawr1B+WLuPrgo/prgJK1AyzFN+DC5ZW1knAYKEKU7kt3agEPiyPs +Vk30AGnlhMji6t5bPvY8BzqUymwnscyDGmBxJ9K/AvUeRNNI1abTdiEAnPqYZOsX +Nj/rGzw+prHZWAYOctlovvGnINdS5KR3H3FwnVU1hTfhHU2UwnB/lUBuS32ytCkq +A3nIuUxnYQSgiyf/WQDrVX/GtzM1LV5OrLjqEsXo97mrvnSSLLfZTcqELxzC8HJ8 +sjFuz4DliAc2UXu6Ya9tjSNbNKOVvKIxf/L157fo78S1JzLp955pxyvovrsMqufq +YBLqJop4 +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_27[] = { + 0x30, 0x82, 0x04, 0xb2, 0x30, 0x82, 0x03, 0x9a, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x16, 0x87, 0xd6, 0x88, 0x6d, 0xe2, 0x30, 0x06, 0x85, + 0x23, 0x3d, 0xbf, 0x11, 0xbf, 0x65, 0x97, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, + 0x30, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x41, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x74, + 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, + 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, + 0x01, 0x00, 0xb2, 0xfc, 0x06, 0xfb, 0x04, 0x93, 0xd2, 0xea, 0x59, 0x20, + 0x3b, 0x44, 0x85, 0x97, 0x52, 0x39, 0xe7, 0x10, 0xf0, 0x7a, 0xe0, 0xb0, + 0x94, 0x40, 0xda, 0x46, 0xf8, 0x0c, 0x28, 0xbb, 0xb9, 0xce, 0x60, 0x38, + 0x3f, 0xd2, 0xd8, 0x11, 0x42, 0x1b, 0x91, 0xad, 0x49, 0xee, 0x8f, 0xc7, + 0xde, 0x6c, 0xde, 0x37, 0x6f, 0xfd, 0x8b, 0x20, 0x3c, 0x6d, 0xe7, 0x74, + 0xd3, 0xdc, 0xd5, 0x24, 0x88, 0x41, 0x80, 0x89, 0xee, 0x36, 0xbe, 0xc4, + 0xd5, 0xbe, 0x8d, 0x53, 0x13, 0xaa, 0xe4, 0xa5, 0xb8, 0x93, 0x0a, 0xbe, + 0xec, 0xda, 0xcd, 0x3c, 0xd4, 0x32, 0x56, 0xef, 0xd0, 0x4e, 0xa0, 0xb8, + 0x97, 0xbb, 0x39, 0x50, 0x1e, 0x6e, 0x65, 0xc3, 0xfd, 0xb2, 0xce, 0xe0, + 0x59, 0xa9, 0x48, 0x09, 0xc6, 0xfe, 0xbe, 0xae, 0xfc, 0x3e, 0x3b, 0x81, + 0x20, 0x97, 0x8b, 0x8f, 0x46, 0xdf, 0x60, 0x64, 0x07, 0x75, 0xbb, 0x1b, + 0x86, 0x38, 0x9f, 0x47, 0x7b, 0x34, 0xce, 0xa1, 0xd1, 0x97, 0xad, 0x76, + 0xd8, 0x9f, 0xb7, 0x26, 0xdb, 0x79, 0x80, 0x36, 0x48, 0xf2, 0xc5, 0x37, + 0xf8, 0xd9, 0x32, 0xae, 0x7c, 0xa4, 0x53, 0x81, 0xc7, 0x99, 0xa1, 0x54, + 0x38, 0x2f, 0x4f, 0x75, 0xa0, 0xbb, 0x5a, 0xa5, 0xbb, 0xcd, 0xac, 0x02, + 0x5b, 0x19, 0x02, 0xd5, 0x13, 0x18, 0xa7, 0xce, 0xac, 0x74, 0x55, 0x12, + 0x05, 0x8b, 0x9b, 0xa2, 0x95, 0x46, 0x64, 0x72, 0x38, 0xcd, 0x5a, 0x1b, + 0x3a, 0x16, 0xa7, 0xbe, 0x71, 0x99, 0x8c, 0x54, 0x03, 0xb8, 0x96, 0x6c, + 0x01, 0xd3, 0x3e, 0x06, 0x98, 0x3f, 0x21, 0x81, 0x3b, 0x02, 0x7e, 0x00, + 0x47, 0x53, 0x01, 0x1e, 0x0e, 0x46, 0x43, 0xfb, 0x4b, 0x2d, 0xdc, 0x0b, + 0x1a, 0xe8, 0x2f, 0x98, 0xf8, 0x7e, 0xd1, 0x99, 0xab, 0x13, 0x6c, 0xa4, + 0x17, 0xde, 0x6f, 0xf6, 0x15, 0xf5, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, + 0x82, 0x01, 0x3b, 0x30, 0x82, 0x01, 0x37, 0x30, 0x12, 0x06, 0x03, 0x55, + 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, + 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x32, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30, 0x27, 0xa0, 0x25, 0xa0, 0x23, + 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x74, 0x31, 0x2e, + 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, + 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x74, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3a, 0x30, 0x38, 0x30, + 0x36, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, + 0x36, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x29, 0x06, 0x03, 0x55, + 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, + 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, + 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x35, + 0x33, 0x37, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0xc2, 0x4f, 0x48, 0x57, 0xfc, 0xd1, 0x4f, 0x9a, 0xc0, 0x5d, 0x38, + 0x7d, 0x0e, 0x05, 0xdb, 0xd9, 0x2e, 0xb5, 0x52, 0x60, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7b, 0x5b, + 0x45, 0xcf, 0xaf, 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, 0x6a, 0xb6, + 0xf3, 0x46, 0xeb, 0x57, 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x01, 0x00, 0x8d, 0x06, 0xde, 0x43, 0xc9, 0x76, 0x02, 0xca, 0xd9, 0x23, + 0x97, 0x5e, 0xf3, 0x63, 0xd7, 0x7d, 0x44, 0xc2, 0x0f, 0x6b, 0x0a, 0xf5, + 0x07, 0xe5, 0x8b, 0xb8, 0xfa, 0xe0, 0xa3, 0xfa, 0x6b, 0x80, 0x92, 0xb5, + 0x03, 0x2c, 0xc5, 0x37, 0xe0, 0xc2, 0xe5, 0x95, 0xb5, 0x92, 0x70, 0x18, + 0x28, 0x42, 0x94, 0xee, 0x4b, 0x77, 0x6a, 0x01, 0x0f, 0x8b, 0x23, 0xec, + 0x56, 0x4d, 0xf4, 0x00, 0x69, 0xe5, 0x84, 0xc8, 0xe2, 0xea, 0xde, 0x5b, + 0x3e, 0xf6, 0x3c, 0x07, 0x3a, 0x94, 0xca, 0x6c, 0x27, 0xb1, 0xcc, 0x83, + 0x1a, 0x60, 0x71, 0x27, 0xd2, 0xbf, 0x02, 0xf5, 0x1e, 0x44, 0xd3, 0x48, + 0xd5, 0xa6, 0xd3, 0x76, 0x21, 0x00, 0x9c, 0xfa, 0x98, 0x64, 0xeb, 0x17, + 0x36, 0x3f, 0xeb, 0x1b, 0x3c, 0x3e, 0xa6, 0xb1, 0xd9, 0x58, 0x06, 0x0e, + 0x72, 0xd9, 0x68, 0xbe, 0xf1, 0xa7, 0x20, 0xd7, 0x52, 0xe4, 0xa4, 0x77, + 0x1f, 0x71, 0x70, 0x9d, 0x55, 0x35, 0x85, 0x37, 0xe1, 0x1d, 0x4d, 0x94, + 0xc2, 0x70, 0x7f, 0x95, 0x40, 0x6e, 0x4b, 0x7d, 0xb2, 0xb4, 0x29, 0x2a, + 0x03, 0x79, 0xc8, 0xb9, 0x4c, 0x67, 0x61, 0x04, 0xa0, 0x8b, 0x27, 0xff, + 0x59, 0x00, 0xeb, 0x55, 0x7f, 0xc6, 0xb7, 0x33, 0x35, 0x2d, 0x5e, 0x4e, + 0xac, 0xb8, 0xea, 0x12, 0xc5, 0xe8, 0xf7, 0xb9, 0xab, 0xbe, 0x74, 0x92, + 0x2c, 0xb7, 0xd9, 0x4d, 0xca, 0x84, 0x2f, 0x1c, 0xc2, 0xf0, 0x72, 0x7c, + 0xb2, 0x31, 0x6e, 0xcf, 0x80, 0xe5, 0x88, 0x07, 0x36, 0x51, 0x7b, 0xba, + 0x61, 0xaf, 0x6d, 0x8d, 0x23, 0x5b, 0x34, 0xa3, 0x95, 0xbc, 0xa2, 0x31, + 0x7f, 0xf2, 0xf5, 0xe7, 0xb7, 0xe8, 0xef, 0xc4, 0xb5, 0x27, 0x32, 0xe9, + 0xf7, 0x9e, 0x69, 0xc7, 0x2b, 0xe8, 0xbe, 0xbb, 0x0c, 0xaa, 0xe7, 0xea, + 0x60, 0x12, 0xea, 0x26, 0x8a, 0x78, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 0c:79:a9:44:b0:8c:11:95:20:92:61:5f:e2:6b:1d:83 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA + Validity + Not Before: Oct 22 12:00:00 2013 GMT + Not After : Oct 22 12:00:00 2028 GMT + Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 Extended Validation Server CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:d7:53:a4:04:51:f8:99:a6:16:48:4b:67:27:aa: + 93:49:d0:39:ed:0c:b0:b0:00:87:f1:67:28:86:85: + 8c:8e:63:da:bc:b1:40:38:e2:d3:f5:ec:a5:05:18: + b8:3d:3e:c5:99:17:32:ec:18:8c:fa:f1:0c:a6:64: + 21:85:cb:07:10:34:b0:52:88:2b:1f:68:9b:d2:b1: + 8f:12:b0:b3:d2:e7:88:1f:1f:ef:38:77:54:53:5f: + 80:79:3f:2e:1a:aa:a8:1e:4b:2b:0d:ab:b7:63:b9: + 35:b7:7d:14:bc:59:4b:df:51:4a:d2:a1:e2:0c:e2: + 90:82:87:6a:ae:ea:d7:64:d6:98:55:e8:fd:af:1a: + 50:6c:54:bc:11:f2:fd:4a:f2:9d:bb:7f:0e:f4:d5: + be:8e:16:89:12:55:d8:c0:71:34:ee:f6:dc:2d:ec: + c4:87:25:86:8d:d8:21:e4:b0:4d:0c:89:dc:39:26: + 17:dd:f6:d7:94:85:d8:04:21:70:9d:6f:6f:ff:5c: + ba:19:e1:45:cb:56:57:28:7e:1c:0d:41:57:aa:b7: + b8:27:bb:b1:e4:fa:2a:ef:21:23:75:1a:ad:2d:9b: + 86:35:8c:9c:77:b5:73:ad:d8:94:2d:e4:f3:0c:9d: + ee:c1:4e:62:7e:17:c0:71:9e:2c:de:f1:f9:10:28: + 19:33 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication + Authority Information Access: + OCSP - URI:http://ocsp.digicert.com + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl4.digicert.com/DigiCertHighAssuranceEVRootCA.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.digicert.com/CPS + + X509v3 Subject Key Identifier: + 3D:D3:50:A5:D6:A0:AD:EE:F3:4A:60:0A:65:D3:21:D4:F8:F8:D6:0F + X509v3 Authority Key Identifier: + keyid:B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3 + + Signature Algorithm: sha256WithRSAEncryption + 9d:b6:d0:90:86:e1:86:02:ed:c5:a0:f0:34:1c:74:c1:8d:76: + cc:86:0a:a8:f0:4a:8a:42:d6:3f:c8:a9:4d:ad:7c:08:ad:e6: + b6:50:b8:a2:1a:4d:88:07:b1:29:21:dc:e7:da:c6:3c:21:e0: + e3:11:49:70:ac:7a:1d:01:a4:ca:11:3a:57:ab:7d:57:2a:40: + 74:fd:d3:1d:85:18:50:df:57:47:75:a1:7d:55:20:2e:47:37: + 50:72:8c:7f:82:1b:d2:62:8f:2d:03:5a:da:c3:c8:a1:ce:2c: + 52:a2:00:63:eb:73:ba:71:c8:49:27:23:97:64:85:9e:38:0e: + ad:63:68:3c:ba:52:81:58:79:a3:2c:0c:df:de:6d:eb:31:f2: + ba:a0:7c:6c:f1:2c:d4:e1:bd:77:84:37:03:ce:32:b5:c8:9a: + 81:1a:4a:92:4e:3b:46:9a:85:fe:83:a2:f9:9e:8c:a3:cc:0d: + 5e:b3:3d:cf:04:78:8f:14:14:7b:32:9c:c7:00:a6:5c:c4:b5: + a1:55:8d:5a:56:68:a4:22:70:aa:3c:81:71:d9:9d:a8:45:3b: + f4:e5:f6:a2:51:dd:c7:7b:62:e8:6f:0c:74:eb:b8:da:f8:bf: + 87:0d:79:50:91:90:9b:18:3b:91:59:27:f1:35:28:13:ab:26: + 7e:d5:f7:7a +-----BEGIN CERTIFICATE----- +MIIEtjCCA56gAwIBAgIQDHmpRLCMEZUgkmFf4msdgzANBgkqhkiG9w0BAQsFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTEzMTAyMjEyMDAwMFoXDTI4MTAyMjEyMDAwMFowdTEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTE0MDIGA1UEAxMrRGlnaUNlcnQgU0hBMiBFeHRlbmRlZCBW +YWxpZGF0aW9uIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBANdTpARR+JmmFkhLZyeqk0nQOe0MsLAAh/FnKIaFjI5j2ryxQDji0/XspQUY +uD0+xZkXMuwYjPrxDKZkIYXLBxA0sFKIKx9om9KxjxKws9LniB8f7zh3VFNfgHk/ +LhqqqB5LKw2rt2O5Nbd9FLxZS99RStKh4gzikIKHaq7q12TWmFXo/a8aUGxUvBHy +/Urynbt/DvTVvo4WiRJV2MBxNO723C3sxIclho3YIeSwTQyJ3DkmF93215SF2AQh +cJ1vb/9cuhnhRctWVyh+HA1BV6q3uCe7seT6Ku8hI3UarS2bhjWMnHe1c63YlC3k +8wyd7sFOYn4XwHGeLN7x+RAoGTMCAwEAAaOCAUkwggFFMBIGA1UdEwEB/wQIMAYB +Af8CAQAwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF +BQcDAjA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRp +Z2ljZXJ0LmNvbTBLBgNVHR8ERDBCMECgPqA8hjpodHRwOi8vY3JsNC5kaWdpY2Vy +dC5jb20vRGlnaUNlcnRIaWdoQXNzdXJhbmNlRVZSb290Q0EuY3JsMD0GA1UdIAQ2 +MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5j +b20vQ1BTMB0GA1UdDgQWBBQ901Cl1qCt7vNKYApl0yHU+PjWDzAfBgNVHSMEGDAW +gBSxPsNpA/i/RwHUmCYaCALvY2QrwzANBgkqhkiG9w0BAQsFAAOCAQEAnbbQkIbh +hgLtxaDwNBx0wY12zIYKqPBKikLWP8ipTa18CK3mtlC4ohpNiAexKSHc59rGPCHg +4xFJcKx6HQGkyhE6V6t9VypAdP3THYUYUN9XR3WhfVUgLkc3UHKMf4Ib0mKPLQNa +2sPIoc4sUqIAY+tzunHISScjl2SFnjgOrWNoPLpSgVh5oywM395t6zHyuqB8bPEs +1OG9d4Q3A84ytciagRpKkk47RpqF/oOi+Z6Mo8wNXrM9zwR4jxQUezKcxwCmXMS1 +oVWNWlZopCJwqjyBcdmdqEU79OX2olHdx3ti6G8MdOu42vi/hw15UJGQmxg7kVkn +8TUoE6smftX3eg== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_28[] = { + 0x30, 0x82, 0x04, 0xb6, 0x30, 0x82, 0x03, 0x9e, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x0c, 0x79, 0xa9, 0x44, 0xb0, 0x8c, 0x11, 0x95, 0x20, + 0x92, 0x61, 0x5f, 0xe2, 0x6b, 0x1d, 0x83, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x6c, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, + 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, + 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x32, 0x32, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x38, 0x31, 0x30, 0x32, + 0x32, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x75, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, + 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, + 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x31, 0x34, 0x30, 0x32, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2b, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x48, 0x41, + 0x32, 0x20, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, + 0x82, 0x01, 0x01, 0x00, 0xd7, 0x53, 0xa4, 0x04, 0x51, 0xf8, 0x99, 0xa6, + 0x16, 0x48, 0x4b, 0x67, 0x27, 0xaa, 0x93, 0x49, 0xd0, 0x39, 0xed, 0x0c, + 0xb0, 0xb0, 0x00, 0x87, 0xf1, 0x67, 0x28, 0x86, 0x85, 0x8c, 0x8e, 0x63, + 0xda, 0xbc, 0xb1, 0x40, 0x38, 0xe2, 0xd3, 0xf5, 0xec, 0xa5, 0x05, 0x18, + 0xb8, 0x3d, 0x3e, 0xc5, 0x99, 0x17, 0x32, 0xec, 0x18, 0x8c, 0xfa, 0xf1, + 0x0c, 0xa6, 0x64, 0x21, 0x85, 0xcb, 0x07, 0x10, 0x34, 0xb0, 0x52, 0x88, + 0x2b, 0x1f, 0x68, 0x9b, 0xd2, 0xb1, 0x8f, 0x12, 0xb0, 0xb3, 0xd2, 0xe7, + 0x88, 0x1f, 0x1f, 0xef, 0x38, 0x77, 0x54, 0x53, 0x5f, 0x80, 0x79, 0x3f, + 0x2e, 0x1a, 0xaa, 0xa8, 0x1e, 0x4b, 0x2b, 0x0d, 0xab, 0xb7, 0x63, 0xb9, + 0x35, 0xb7, 0x7d, 0x14, 0xbc, 0x59, 0x4b, 0xdf, 0x51, 0x4a, 0xd2, 0xa1, + 0xe2, 0x0c, 0xe2, 0x90, 0x82, 0x87, 0x6a, 0xae, 0xea, 0xd7, 0x64, 0xd6, + 0x98, 0x55, 0xe8, 0xfd, 0xaf, 0x1a, 0x50, 0x6c, 0x54, 0xbc, 0x11, 0xf2, + 0xfd, 0x4a, 0xf2, 0x9d, 0xbb, 0x7f, 0x0e, 0xf4, 0xd5, 0xbe, 0x8e, 0x16, + 0x89, 0x12, 0x55, 0xd8, 0xc0, 0x71, 0x34, 0xee, 0xf6, 0xdc, 0x2d, 0xec, + 0xc4, 0x87, 0x25, 0x86, 0x8d, 0xd8, 0x21, 0xe4, 0xb0, 0x4d, 0x0c, 0x89, + 0xdc, 0x39, 0x26, 0x17, 0xdd, 0xf6, 0xd7, 0x94, 0x85, 0xd8, 0x04, 0x21, + 0x70, 0x9d, 0x6f, 0x6f, 0xff, 0x5c, 0xba, 0x19, 0xe1, 0x45, 0xcb, 0x56, + 0x57, 0x28, 0x7e, 0x1c, 0x0d, 0x41, 0x57, 0xaa, 0xb7, 0xb8, 0x27, 0xbb, + 0xb1, 0xe4, 0xfa, 0x2a, 0xef, 0x21, 0x23, 0x75, 0x1a, 0xad, 0x2d, 0x9b, + 0x86, 0x35, 0x8c, 0x9c, 0x77, 0xb5, 0x73, 0xad, 0xd8, 0x94, 0x2d, 0xe4, + 0xf3, 0x0c, 0x9d, 0xee, 0xc1, 0x4e, 0x62, 0x7e, 0x17, 0xc0, 0x71, 0x9e, + 0x2c, 0xde, 0xf1, 0xf9, 0x10, 0x28, 0x19, 0x33, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xa3, 0x82, 0x01, 0x49, 0x30, 0x82, 0x01, 0x45, 0x30, 0x12, 0x06, + 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, + 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, + 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, + 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x02, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x64, 0x69, + 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4b, + 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x44, 0x30, 0x42, 0x30, 0x40, 0xa0, + 0x3e, 0xa0, 0x3c, 0x86, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x63, 0x72, 0x6c, 0x34, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, + 0x72, 0x74, 0x48, 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, + 0x6e, 0x63, 0x65, 0x45, 0x56, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, + 0x30, 0x34, 0x30, 0x32, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, + 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, + 0x16, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, + 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3d, 0xd3, 0x50, 0xa5, 0xd6, 0xa0, 0xad, + 0xee, 0xf3, 0x4a, 0x60, 0x0a, 0x65, 0xd3, 0x21, 0xd4, 0xf8, 0xf8, 0xd6, + 0x0f, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xb1, 0x3e, 0xc3, 0x69, 0x03, 0xf8, 0xbf, 0x47, 0x01, 0xd4, + 0x98, 0x26, 0x1a, 0x08, 0x02, 0xef, 0x63, 0x64, 0x2b, 0xc3, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x9d, 0xb6, 0xd0, 0x90, 0x86, 0xe1, + 0x86, 0x02, 0xed, 0xc5, 0xa0, 0xf0, 0x34, 0x1c, 0x74, 0xc1, 0x8d, 0x76, + 0xcc, 0x86, 0x0a, 0xa8, 0xf0, 0x4a, 0x8a, 0x42, 0xd6, 0x3f, 0xc8, 0xa9, + 0x4d, 0xad, 0x7c, 0x08, 0xad, 0xe6, 0xb6, 0x50, 0xb8, 0xa2, 0x1a, 0x4d, + 0x88, 0x07, 0xb1, 0x29, 0x21, 0xdc, 0xe7, 0xda, 0xc6, 0x3c, 0x21, 0xe0, + 0xe3, 0x11, 0x49, 0x70, 0xac, 0x7a, 0x1d, 0x01, 0xa4, 0xca, 0x11, 0x3a, + 0x57, 0xab, 0x7d, 0x57, 0x2a, 0x40, 0x74, 0xfd, 0xd3, 0x1d, 0x85, 0x18, + 0x50, 0xdf, 0x57, 0x47, 0x75, 0xa1, 0x7d, 0x55, 0x20, 0x2e, 0x47, 0x37, + 0x50, 0x72, 0x8c, 0x7f, 0x82, 0x1b, 0xd2, 0x62, 0x8f, 0x2d, 0x03, 0x5a, + 0xda, 0xc3, 0xc8, 0xa1, 0xce, 0x2c, 0x52, 0xa2, 0x00, 0x63, 0xeb, 0x73, + 0xba, 0x71, 0xc8, 0x49, 0x27, 0x23, 0x97, 0x64, 0x85, 0x9e, 0x38, 0x0e, + 0xad, 0x63, 0x68, 0x3c, 0xba, 0x52, 0x81, 0x58, 0x79, 0xa3, 0x2c, 0x0c, + 0xdf, 0xde, 0x6d, 0xeb, 0x31, 0xf2, 0xba, 0xa0, 0x7c, 0x6c, 0xf1, 0x2c, + 0xd4, 0xe1, 0xbd, 0x77, 0x84, 0x37, 0x03, 0xce, 0x32, 0xb5, 0xc8, 0x9a, + 0x81, 0x1a, 0x4a, 0x92, 0x4e, 0x3b, 0x46, 0x9a, 0x85, 0xfe, 0x83, 0xa2, + 0xf9, 0x9e, 0x8c, 0xa3, 0xcc, 0x0d, 0x5e, 0xb3, 0x3d, 0xcf, 0x04, 0x78, + 0x8f, 0x14, 0x14, 0x7b, 0x32, 0x9c, 0xc7, 0x00, 0xa6, 0x5c, 0xc4, 0xb5, + 0xa1, 0x55, 0x8d, 0x5a, 0x56, 0x68, 0xa4, 0x22, 0x70, 0xaa, 0x3c, 0x81, + 0x71, 0xd9, 0x9d, 0xa8, 0x45, 0x3b, 0xf4, 0xe5, 0xf6, 0xa2, 0x51, 0xdd, + 0xc7, 0x7b, 0x62, 0xe8, 0x6f, 0x0c, 0x74, 0xeb, 0xb8, 0xda, 0xf8, 0xbf, + 0x87, 0x0d, 0x79, 0x50, 0x91, 0x90, 0x9b, 0x18, 0x3b, 0x91, 0x59, 0x27, + 0xf1, 0x35, 0x28, 0x13, 0xab, 0x26, 0x7e, 0xd5, 0xf7, 0x7a, +}; diff --git a/external/lsquic/src/liblsquic/common_cert_set_2b.inc b/external/lsquic/src/liblsquic/common_cert_set_2b.inc new file mode 100644 index 0000000..45f0e31 --- /dev/null +++ b/external/lsquic/src/liblsquic/common_cert_set_2b.inc @@ -0,0 +1,5745 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2015 The Chromium Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE.chrome file. + */ + +/* This file contains common certificates. It's designed to be #included in + * another file, in a namespace. */ +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 36:34:9e:18:c9:9c:26:69:b6:56:2e:6c:e5:ad:71:32 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2008 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA - G3 + Validity + Not Before: May 23 00:00:00 2013 GMT + Not After : May 22 23:59:59 2023 GMT + Subject: C=US, O=thawte, Inc., CN=thawte SHA256 SSL CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:a3:63:2b:d4:ba:5d:38:ae:b0:cf:b9:4c:38:df: + 20:7d:f1:2b:47:71:1d:8b:68:f3:56:f9:9c:da:aa: + e5:84:26:de:a5:71:30:bc:f3:31:23:9d:e8:3b:80: + c8:66:57:75:b6:57:0e:db:93:f5:26:8e:70:ba:64: + 52:66:8a:2a:88:5c:44:18:4d:a8:a2:7c:bd:56:61: + 32:90:12:f9:35:87:48:60:b0:6e:90:67:44:01:8d: + e7:c9:0d:63:68:72:72:ab:63:3c:86:b8:1f:7d:ad: + 88:25:a7:6a:88:29:fb:59:c6:78:71:5f:2c:ba:89: + e6:d3:80:fd:57:ec:b9:51:5f:43:33:2e:7e:25:3b: + a4:04:d1:60:8c:b3:44:33:93:0c:ad:2a:b6:44:a2: + 19:3b:af:c4:90:6f:7b:05:87:86:9b:2c:6a:9d:2b: + 6c:77:c9:00:9f:c9:cf:ac:ed:3e:1b:f7:c3:f3:d9: + f8:6c:d4:a0:57:c4:fb:28:32:aa:33:f0:e6:ba:98: + df:e5:c2:4e:9c:74:bf:8a:48:c2:f2:1b:f0:77:40: + 41:07:04:b2:3a:d5:4c:c4:29:a9:11:40:3f:02:46: + f0:91:d5:d2:81:83:86:13:b3:31:ed:46:ab:a8:87: + 76:a9:99:7d:bc:cd:31:50:f4:a5:b5:dc:a5:32:b3: + 8b:8b + Exponent: 65537 (0x10001) + X509v3 extensions: + Authority Information Access: + OCSP - URI:http://ocsp.thawte.com + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: https://www.thawte.com/cps + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.thawte.com/ThawtePCA-G3.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Alternative Name: + DirName:/CN=VeriSignMPKI-2-415 + X509v3 Subject Key Identifier: + 2B:9A:35:AE:01:18:38:30:E1:70:7A:05:E0:11:76:A3:CE:BD:90:14 + X509v3 Authority Key Identifier: + keyid:AD:6C:AA:94:60:9C:ED:E4:FF:FA:3E:0A:74:2B:63:03:F7:B6:59:BF + + Signature Algorithm: sha256WithRSAEncryption + 74:a6:56:e8:af:93:96:19:fb:26:f9:0d:b0:44:a5:cd:e9:7a: + 48:03:74:01:6c:13:71:b7:e0:82:90:99:62:23:e3:d6:99:af: + f0:c7:1e:9e:a8:18:21:db:b4:94:3f:34:56:1b:99:55:2f:8e: + f0:45:33:32:b7:72:c1:13:5b:34:d3:f5:60:e5:2e:18:d1:5c: + c5:6a:c1:aa:87:50:0c:1c:9d:64:2b:ff:1b:dc:d5:2e:61:0b: + e7:b9:b6:91:53:86:d9:03:2a:d1:3d:7b:4a:da:2b:07:be:29: + f2:60:42:a9:91:1a:0e:2e:3c:d1:7d:a5:13:14:02:fa:ee:8b: + 8d:b6:c8:b8:3e:56:81:57:21:24:3f:65:c3:b4:c9:ce:5c:8d: + 46:ac:53:f3:f9:55:74:c8:2b:fd:d2:78:70:f5:f8:11:e5:f4: + a7:ad:20:f5:9d:f1:ec:70:f6:13:ac:e6:8c:8d:db:3f:c6:f2: + 79:0e:ab:52:f2:cc:1b:79:27:cf:16:b3:d6:f3:c6:36:80:43: + ec:c5:94:f0:dd:90:8d:f8:c6:52:46:56:eb:74:47:be:a6:f3: + 19:ae:71:4c:c0:e1:e7:d4:cf:ed:d4:06:28:2a:11:3c:ba:d9: + 41:6e:00:e7:81:37:93:e4:da:62:c6:1d:67:6f:63:b4:14:86: + d9:a6:62:f0 +-----BEGIN CERTIFICATE----- +MIIEwjCCA6qgAwIBAgIQNjSeGMmcJmm2Vi5s5a1xMjANBgkqhkiG9w0BAQsFADCB +rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV +BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0xMzA1MjMwMDAwMDBa +Fw0yMzA1MjIyMzU5NTlaMEMxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwx0aGF3dGUs +IEluYy4xHTAbBgNVBAMTFHRoYXd0ZSBTSEEyNTYgU1NMIENBMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo2Mr1LpdOK6wz7lMON8gffErR3Edi2jzVvmc +2qrlhCbepXEwvPMxI53oO4DIZld1tlcO25P1Jo5wumRSZooqiFxEGE2oony9VmEy +kBL5NYdIYLBukGdEAY3nyQ1jaHJyq2M8hrgffa2IJadqiCn7WcZ4cV8suonm04D9 +V+y5UV9DMy5+JTukBNFgjLNEM5MMrSq2RKIZO6/EkG97BYeGmyxqnStsd8kAn8nP +rO0+G/fD89n4bNSgV8T7KDKqM/Dmupjf5cJOnHS/ikjC8hvwd0BBBwSyOtVMxCmp +EUA/AkbwkdXSgYOGE7Mx7UarqId2qZl9vM0xUPSltdylMrOLiwIDAQABo4IBRDCC +AUAwMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzABhhZodHRwOi8vb2NzcC50aGF3 +dGUuY29tMBIGA1UdEwEB/wQIMAYBAf8CAQAwQQYDVR0gBDowODA2BgpghkgBhvhF +AQc2MCgwJgYIKwYBBQUHAgEWGmh0dHBzOi8vd3d3LnRoYXd0ZS5jb20vY3BzMDcG +A1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwudGhhd3RlLmNvbS9UaGF3dGVQQ0Et +RzMuY3JsMA4GA1UdDwEB/wQEAwIBBjAqBgNVHREEIzAhpB8wHTEbMBkGA1UEAxMS +VmVyaVNpZ25NUEtJLTItNDE1MB0GA1UdDgQWBBQrmjWuARg4MOFwegXgEXajzr2Q +FDAfBgNVHSMEGDAWgBStbKqUYJzt5P/6Pgp0K2MD97ZZvzANBgkqhkiG9w0BAQsF +AAOCAQEAdKZW6K+Tlhn7JvkNsESlzel6SAN0AWwTcbfggpCZYiPj1pmv8McenqgY +Idu0lD80VhuZVS+O8EUzMrdywRNbNNP1YOUuGNFcxWrBqodQDBydZCv/G9zVLmEL +57m2kVOG2QMq0T17StorB74p8mBCqZEaDi480X2lExQC+u6LjbbIuD5WgVchJD9l +w7TJzlyNRqxT8/lVdMgr/dJ4cPX4EeX0p60g9Z3x7HD2E6zmjI3bP8byeQ6rUvLM +G3knzxaz1vPGNoBD7MWU8N2QjfjGUkZW63RHvqbzGa5xTMDh59TP7dQGKCoRPLrZ +QW4A54E3k+TaYsYdZ29jtBSG2aZi8A== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_29[] = { + 0x30, 0x82, 0x04, 0xc2, 0x30, 0x82, 0x03, 0xaa, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x36, 0x34, 0x9e, 0x18, 0xc9, 0x9c, 0x26, 0x69, 0xb6, + 0x56, 0x2e, 0x6c, 0xe5, 0xad, 0x71, 0x32, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xae, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x38, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x1b, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17, 0x0d, 0x31, + 0x33, 0x30, 0x35, 0x32, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, + 0x17, 0x0d, 0x32, 0x33, 0x30, 0x35, 0x32, 0x32, 0x32, 0x33, 0x35, 0x39, + 0x35, 0x39, 0x5a, 0x30, 0x43, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, + 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, + 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x14, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, + 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x63, 0x2b, + 0xd4, 0xba, 0x5d, 0x38, 0xae, 0xb0, 0xcf, 0xb9, 0x4c, 0x38, 0xdf, 0x20, + 0x7d, 0xf1, 0x2b, 0x47, 0x71, 0x1d, 0x8b, 0x68, 0xf3, 0x56, 0xf9, 0x9c, + 0xda, 0xaa, 0xe5, 0x84, 0x26, 0xde, 0xa5, 0x71, 0x30, 0xbc, 0xf3, 0x31, + 0x23, 0x9d, 0xe8, 0x3b, 0x80, 0xc8, 0x66, 0x57, 0x75, 0xb6, 0x57, 0x0e, + 0xdb, 0x93, 0xf5, 0x26, 0x8e, 0x70, 0xba, 0x64, 0x52, 0x66, 0x8a, 0x2a, + 0x88, 0x5c, 0x44, 0x18, 0x4d, 0xa8, 0xa2, 0x7c, 0xbd, 0x56, 0x61, 0x32, + 0x90, 0x12, 0xf9, 0x35, 0x87, 0x48, 0x60, 0xb0, 0x6e, 0x90, 0x67, 0x44, + 0x01, 0x8d, 0xe7, 0xc9, 0x0d, 0x63, 0x68, 0x72, 0x72, 0xab, 0x63, 0x3c, + 0x86, 0xb8, 0x1f, 0x7d, 0xad, 0x88, 0x25, 0xa7, 0x6a, 0x88, 0x29, 0xfb, + 0x59, 0xc6, 0x78, 0x71, 0x5f, 0x2c, 0xba, 0x89, 0xe6, 0xd3, 0x80, 0xfd, + 0x57, 0xec, 0xb9, 0x51, 0x5f, 0x43, 0x33, 0x2e, 0x7e, 0x25, 0x3b, 0xa4, + 0x04, 0xd1, 0x60, 0x8c, 0xb3, 0x44, 0x33, 0x93, 0x0c, 0xad, 0x2a, 0xb6, + 0x44, 0xa2, 0x19, 0x3b, 0xaf, 0xc4, 0x90, 0x6f, 0x7b, 0x05, 0x87, 0x86, + 0x9b, 0x2c, 0x6a, 0x9d, 0x2b, 0x6c, 0x77, 0xc9, 0x00, 0x9f, 0xc9, 0xcf, + 0xac, 0xed, 0x3e, 0x1b, 0xf7, 0xc3, 0xf3, 0xd9, 0xf8, 0x6c, 0xd4, 0xa0, + 0x57, 0xc4, 0xfb, 0x28, 0x32, 0xaa, 0x33, 0xf0, 0xe6, 0xba, 0x98, 0xdf, + 0xe5, 0xc2, 0x4e, 0x9c, 0x74, 0xbf, 0x8a, 0x48, 0xc2, 0xf2, 0x1b, 0xf0, + 0x77, 0x40, 0x41, 0x07, 0x04, 0xb2, 0x3a, 0xd5, 0x4c, 0xc4, 0x29, 0xa9, + 0x11, 0x40, 0x3f, 0x02, 0x46, 0xf0, 0x91, 0xd5, 0xd2, 0x81, 0x83, 0x86, + 0x13, 0xb3, 0x31, 0xed, 0x46, 0xab, 0xa8, 0x87, 0x76, 0xa9, 0x99, 0x7d, + 0xbc, 0xcd, 0x31, 0x50, 0xf4, 0xa5, 0xb5, 0xdc, 0xa5, 0x32, 0xb3, 0x8b, + 0x8b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x44, 0x30, 0x82, + 0x01, 0x40, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x01, 0x01, 0x04, 0x26, 0x30, 0x24, 0x30, 0x22, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x74, 0x68, 0x61, 0x77, + 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3a, 0x30, + 0x38, 0x30, 0x36, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, + 0x01, 0x07, 0x36, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x37, 0x06, + 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0xa0, 0x2a, + 0xa0, 0x28, 0x86, 0x26, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, + 0x72, 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, 0x2d, + 0x47, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2a, + 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x23, 0x30, 0x21, 0xa4, 0x1f, 0x30, + 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, + 0x2d, 0x32, 0x2d, 0x34, 0x31, 0x35, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0x2b, 0x9a, 0x35, 0xae, 0x01, 0x18, 0x38, + 0x30, 0xe1, 0x70, 0x7a, 0x05, 0xe0, 0x11, 0x76, 0xa3, 0xce, 0xbd, 0x90, + 0x14, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xad, 0x6c, 0xaa, 0x94, 0x60, 0x9c, 0xed, 0xe4, 0xff, 0xfa, + 0x3e, 0x0a, 0x74, 0x2b, 0x63, 0x03, 0xf7, 0xb6, 0x59, 0xbf, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x74, 0xa6, 0x56, 0xe8, 0xaf, 0x93, + 0x96, 0x19, 0xfb, 0x26, 0xf9, 0x0d, 0xb0, 0x44, 0xa5, 0xcd, 0xe9, 0x7a, + 0x48, 0x03, 0x74, 0x01, 0x6c, 0x13, 0x71, 0xb7, 0xe0, 0x82, 0x90, 0x99, + 0x62, 0x23, 0xe3, 0xd6, 0x99, 0xaf, 0xf0, 0xc7, 0x1e, 0x9e, 0xa8, 0x18, + 0x21, 0xdb, 0xb4, 0x94, 0x3f, 0x34, 0x56, 0x1b, 0x99, 0x55, 0x2f, 0x8e, + 0xf0, 0x45, 0x33, 0x32, 0xb7, 0x72, 0xc1, 0x13, 0x5b, 0x34, 0xd3, 0xf5, + 0x60, 0xe5, 0x2e, 0x18, 0xd1, 0x5c, 0xc5, 0x6a, 0xc1, 0xaa, 0x87, 0x50, + 0x0c, 0x1c, 0x9d, 0x64, 0x2b, 0xff, 0x1b, 0xdc, 0xd5, 0x2e, 0x61, 0x0b, + 0xe7, 0xb9, 0xb6, 0x91, 0x53, 0x86, 0xd9, 0x03, 0x2a, 0xd1, 0x3d, 0x7b, + 0x4a, 0xda, 0x2b, 0x07, 0xbe, 0x29, 0xf2, 0x60, 0x42, 0xa9, 0x91, 0x1a, + 0x0e, 0x2e, 0x3c, 0xd1, 0x7d, 0xa5, 0x13, 0x14, 0x02, 0xfa, 0xee, 0x8b, + 0x8d, 0xb6, 0xc8, 0xb8, 0x3e, 0x56, 0x81, 0x57, 0x21, 0x24, 0x3f, 0x65, + 0xc3, 0xb4, 0xc9, 0xce, 0x5c, 0x8d, 0x46, 0xac, 0x53, 0xf3, 0xf9, 0x55, + 0x74, 0xc8, 0x2b, 0xfd, 0xd2, 0x78, 0x70, 0xf5, 0xf8, 0x11, 0xe5, 0xf4, + 0xa7, 0xad, 0x20, 0xf5, 0x9d, 0xf1, 0xec, 0x70, 0xf6, 0x13, 0xac, 0xe6, + 0x8c, 0x8d, 0xdb, 0x3f, 0xc6, 0xf2, 0x79, 0x0e, 0xab, 0x52, 0xf2, 0xcc, + 0x1b, 0x79, 0x27, 0xcf, 0x16, 0xb3, 0xd6, 0xf3, 0xc6, 0x36, 0x80, 0x43, + 0xec, 0xc5, 0x94, 0xf0, 0xdd, 0x90, 0x8d, 0xf8, 0xc6, 0x52, 0x46, 0x56, + 0xeb, 0x74, 0x47, 0xbe, 0xa6, 0xf3, 0x19, 0xae, 0x71, 0x4c, 0xc0, 0xe1, + 0xe7, 0xd4, 0xcf, 0xed, 0xd4, 0x06, 0x28, 0x2a, 0x11, 0x3c, 0xba, 0xd9, + 0x41, 0x6e, 0x00, 0xe7, 0x81, 0x37, 0x93, 0xe4, 0xda, 0x62, 0xc6, 0x1d, + 0x67, 0x6f, 0x63, 0xb4, 0x14, 0x86, 0xd9, 0xa6, 0x62, 0xf0, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 35:97:31:87:f3:87:3a:07:32:7e:ce:58:0c:9b:7e:da + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority + Validity + Not Before: Nov 8 00:00:00 2006 GMT + Not After : Nov 7 23:59:59 2021 GMT + Subject: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 2006 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 3 Public Primary Certification Authority - G5 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:af:24:08:08:29:7a:35:9e:60:0c:aa:e7:4b:3b: + 4e:dc:7c:bc:3c:45:1c:bb:2b:e0:fe:29:02:f9:57: + 08:a3:64:85:15:27:f5:f1:ad:c8:31:89:5d:22:e8: + 2a:aa:a6:42:b3:8f:f8:b9:55:b7:b1:b7:4b:b3:fe: + 8f:7e:07:57:ec:ef:43:db:66:62:15:61:cf:60:0d: + a4:d8:de:f8:e0:c3:62:08:3d:54:13:eb:49:ca:59: + 54:85:26:e5:2b:8f:1b:9f:eb:f5:a1:91:c2:33:49: + d8:43:63:6a:52:4b:d2:8f:e8:70:51:4d:d1:89:69: + 7b:c7:70:f6:b3:dc:12:74:db:7b:5d:4b:56:d3:96: + bf:15:77:a1:b0:f4:a2:25:f2:af:1c:92:67:18:e5: + f4:06:04:ef:90:b9:e4:00:e4:dd:3a:b5:19:ff:02: + ba:f4:3c:ee:e0:8b:eb:37:8b:ec:f4:d7:ac:f2:f6: + f0:3d:af:dd:75:91:33:19:1d:1c:40:cb:74:24:19: + 21:93:d9:14:fe:ac:2a:52:c7:8f:d5:04:49:e4:8d: + 63:47:88:3c:69:83:cb:fe:47:bd:2b:7e:4f:c5:95: + ae:0e:9d:d4:d1:43:c0:67:73:e3:14:08:7e:e5:3f: + 9f:73:b8:33:0a:cf:5d:3f:34:87:96:8a:ee:53:e8: + 25:15 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.verisign.com/pca3.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.verisign.com/cps + + X509v3 Subject Key Identifier: + 7F:D3:65:A7:C2:DD:EC:BB:F0:30:09:F3:43:39:FA:02:AF:33:31:33 + X509v3 Extended Key Usage: + Netscape Server Gated Crypto, 2.16.840.1.113733.1.8.1, TLS Web Server Authentication, TLS Web Client Authentication + 1.3.6.1.5.5.7.1.12: + 0_.].[0Y0W0U..image/gif0!0.0...+..............k...j.H.,{..0%.#http://logo.verisign.com/vslogo.gif + Authority Information Access: + OCSP - URI:http://ocsp.verisign.com + + Signature Algorithm: sha1WithRSAEncryption + 0f:25:ae:48:ed:1b:33:85:4c:0c:b5:c2:d7:fe:4d:d6:83:28: + 4c:41:65:60:00:0b:77:48:71:82:fe:7f:db:5a:0e:20:cc:d2: + ea:47:bc:64:42:61:44:34:74:30:81:81:26:8a:4a:f7:44:5d: + 7e:34:80:a8:b8:83:e2:09:d7:6d:23:dd:89:ed:28:08:bd:63: + 5a:11:57:08:c4:9e:da:e2:68:28:af:dd:50:3c:ec:82:21:d8: + 00:c2:55:44:50:70:41:ad:83:17:79:ba:08:f3:2b:de:ed:34: + 1d:44:9e:d2:04:93:f4:cb:05:17:2d:09:2d:2d:63:ef:f6:26: + 0b:7b +-----BEGIN CERTIFICATE----- +MIIExjCCBC+gAwIBAgIQNZcxh/OHOgcyfs5YDJt+2jANBgkqhkiG9w0BAQUFADBf +MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT +LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw +HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv +ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8 +RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb +ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR +TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH +iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB +AAGjggGRMIIBjTAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0 +dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjA9 +BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVy +aXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwNAYD +VR0lBC0wKwYJYIZIAYb4QgQBBgpghkgBhvhFAQgBBggrBgEFBQcDAQYIKwYBBQUH +AwIwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUr +DgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNp +Z24uY29tL3ZzbG9nby5naWYwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhho +dHRwOi8vb2NzcC52ZXJpc2lnbi5jb20wDQYJKoZIhvcNAQEFBQADgYEADyWuSO0b +M4VMDLXC1/5N1oMoTEFlYAALd0hxgv5/21oOIMzS6ke8ZEJhRDR0MIGBJopK90Rd +fjSAqLiD4gnXbSPdie0oCL1jWhFXCMSe2uJoKK/dUDzsgiHYAMJVRFBwQa2DF3m6 +CPMr3u00HUSe0gST9MsFFy0JLS1j7/YmC3s= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_30[] = { + 0x30, 0x82, 0x04, 0xc6, 0x30, 0x82, 0x04, 0x2f, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x35, 0x97, 0x31, 0x87, 0xf3, 0x87, 0x3a, 0x07, 0x32, + 0x7e, 0xce, 0x58, 0x0c, 0x9b, 0x7e, 0xda, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5f, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, + 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x30, 0x38, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 0x30, 0x37, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xca, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3a, 0x30, + 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, 0x63, 0x29, 0x20, + 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, + 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, + 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, + 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x45, 0x30, + 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, + 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, + 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, 0x24, 0x08, 0x08, 0x29, 0x7a, 0x35, + 0x9e, 0x60, 0x0c, 0xaa, 0xe7, 0x4b, 0x3b, 0x4e, 0xdc, 0x7c, 0xbc, 0x3c, + 0x45, 0x1c, 0xbb, 0x2b, 0xe0, 0xfe, 0x29, 0x02, 0xf9, 0x57, 0x08, 0xa3, + 0x64, 0x85, 0x15, 0x27, 0xf5, 0xf1, 0xad, 0xc8, 0x31, 0x89, 0x5d, 0x22, + 0xe8, 0x2a, 0xaa, 0xa6, 0x42, 0xb3, 0x8f, 0xf8, 0xb9, 0x55, 0xb7, 0xb1, + 0xb7, 0x4b, 0xb3, 0xfe, 0x8f, 0x7e, 0x07, 0x57, 0xec, 0xef, 0x43, 0xdb, + 0x66, 0x62, 0x15, 0x61, 0xcf, 0x60, 0x0d, 0xa4, 0xd8, 0xde, 0xf8, 0xe0, + 0xc3, 0x62, 0x08, 0x3d, 0x54, 0x13, 0xeb, 0x49, 0xca, 0x59, 0x54, 0x85, + 0x26, 0xe5, 0x2b, 0x8f, 0x1b, 0x9f, 0xeb, 0xf5, 0xa1, 0x91, 0xc2, 0x33, + 0x49, 0xd8, 0x43, 0x63, 0x6a, 0x52, 0x4b, 0xd2, 0x8f, 0xe8, 0x70, 0x51, + 0x4d, 0xd1, 0x89, 0x69, 0x7b, 0xc7, 0x70, 0xf6, 0xb3, 0xdc, 0x12, 0x74, + 0xdb, 0x7b, 0x5d, 0x4b, 0x56, 0xd3, 0x96, 0xbf, 0x15, 0x77, 0xa1, 0xb0, + 0xf4, 0xa2, 0x25, 0xf2, 0xaf, 0x1c, 0x92, 0x67, 0x18, 0xe5, 0xf4, 0x06, + 0x04, 0xef, 0x90, 0xb9, 0xe4, 0x00, 0xe4, 0xdd, 0x3a, 0xb5, 0x19, 0xff, + 0x02, 0xba, 0xf4, 0x3c, 0xee, 0xe0, 0x8b, 0xeb, 0x37, 0x8b, 0xec, 0xf4, + 0xd7, 0xac, 0xf2, 0xf6, 0xf0, 0x3d, 0xaf, 0xdd, 0x75, 0x91, 0x33, 0x19, + 0x1d, 0x1c, 0x40, 0xcb, 0x74, 0x24, 0x19, 0x21, 0x93, 0xd9, 0x14, 0xfe, + 0xac, 0x2a, 0x52, 0xc7, 0x8f, 0xd5, 0x04, 0x49, 0xe4, 0x8d, 0x63, 0x47, + 0x88, 0x3c, 0x69, 0x83, 0xcb, 0xfe, 0x47, 0xbd, 0x2b, 0x7e, 0x4f, 0xc5, + 0x95, 0xae, 0x0e, 0x9d, 0xd4, 0xd1, 0x43, 0xc0, 0x67, 0x73, 0xe3, 0x14, + 0x08, 0x7e, 0xe5, 0x3f, 0x9f, 0x73, 0xb8, 0x33, 0x0a, 0xcf, 0x5d, 0x3f, + 0x34, 0x87, 0x96, 0x8a, 0xee, 0x53, 0xe8, 0x25, 0x15, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x91, 0x30, 0x82, 0x01, 0x8d, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, + 0x01, 0x01, 0xff, 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a, + 0x30, 0x28, 0x30, 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, + 0x61, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3d, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, + 0x73, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, + 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x34, 0x06, 0x03, + 0x55, 0x1d, 0x25, 0x04, 0x2d, 0x30, 0x2b, 0x06, 0x09, 0x60, 0x86, 0x48, + 0x01, 0x86, 0xf8, 0x42, 0x04, 0x01, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, + 0x86, 0xf8, 0x45, 0x01, 0x08, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x03, 0x02, 0x30, 0x6d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59, + 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, + 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, + 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac, + 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b, + 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, + 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67, + 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, + 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, + 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x0f, 0x25, 0xae, 0x48, 0xed, 0x1b, + 0x33, 0x85, 0x4c, 0x0c, 0xb5, 0xc2, 0xd7, 0xfe, 0x4d, 0xd6, 0x83, 0x28, + 0x4c, 0x41, 0x65, 0x60, 0x00, 0x0b, 0x77, 0x48, 0x71, 0x82, 0xfe, 0x7f, + 0xdb, 0x5a, 0x0e, 0x20, 0xcc, 0xd2, 0xea, 0x47, 0xbc, 0x64, 0x42, 0x61, + 0x44, 0x34, 0x74, 0x30, 0x81, 0x81, 0x26, 0x8a, 0x4a, 0xf7, 0x44, 0x5d, + 0x7e, 0x34, 0x80, 0xa8, 0xb8, 0x83, 0xe2, 0x09, 0xd7, 0x6d, 0x23, 0xdd, + 0x89, 0xed, 0x28, 0x08, 0xbd, 0x63, 0x5a, 0x11, 0x57, 0x08, 0xc4, 0x9e, + 0xda, 0xe2, 0x68, 0x28, 0xaf, 0xdd, 0x50, 0x3c, 0xec, 0x82, 0x21, 0xd8, + 0x00, 0xc2, 0x55, 0x44, 0x50, 0x70, 0x41, 0xad, 0x83, 0x17, 0x79, 0xba, + 0x08, 0xf3, 0x2b, 0xde, 0xed, 0x34, 0x1d, 0x44, 0x9e, 0xd2, 0x04, 0x93, + 0xf4, 0xcb, 0x05, 0x17, 0x2d, 0x09, 0x2d, 0x2d, 0x63, 0xef, 0xf6, 0x26, + 0x0b, 0x7b, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 7 (0x7) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., CN=Go Daddy Root Certificate Authority - G2 + Validity + Not Before: May 3 07:00:00 2011 GMT + Not After : May 3 07:00:00 2031 GMT + Subject: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., OU=http://certs.godaddy.com/repository/, CN=Go Daddy Secure Certificate Authority - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:b9:e0:cb:10:d4:af:76:bd:d4:93:62:eb:30:64: + b8:81:08:6c:c3:04:d9:62:17:8e:2f:ff:3e:65:cf: + 8f:ce:62:e6:3c:52:1c:da:16:45:4b:55:ab:78:6b: + 63:83:62:90:ce:0f:69:6c:99:c8:1a:14:8b:4c:cc: + 45:33:ea:88:dc:9e:a3:af:2b:fe:80:61:9d:79:57: + c4:cf:2e:f4:3f:30:3c:5d:47:fc:9a:16:bc:c3:37: + 96:41:51:8e:11:4b:54:f8:28:be:d0:8c:be:f0:30: + 38:1e:f3:b0:26:f8:66:47:63:6d:de:71:26:47:8f: + 38:47:53:d1:46:1d:b4:e3:dc:00:ea:45:ac:bd:bc: + 71:d9:aa:6f:00:db:db:cd:30:3a:79:4f:5f:4c:47: + f8:1d:ef:5b:c2:c4:9d:60:3b:b1:b2:43:91:d8:a4: + 33:4e:ea:b3:d6:27:4f:ad:25:8a:a5:c6:f4:d5:d0: + a6:ae:74:05:64:57:88:b5:44:55:d4:2d:2a:3a:3e: + f8:b8:bd:e9:32:0a:02:94:64:c4:16:3a:50:f1:4a: + ae:e7:79:33:af:0c:20:07:7f:e8:df:04:39:c2:69: + 02:6c:63:52:fa:77:c1:1b:c8:74:87:c8:b9:93:18: + 50:54:35:4b:69:4e:bc:3b:d3:49:2e:1f:dc:c1:d2: + 52:fb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 40:C2:BD:27:8E:CC:34:83:30:A2:33:D7:FB:6C:B3:F0:B4:2C:80:CE + X509v3 Authority Key Identifier: + keyid:3A:9A:85:07:10:67:28:B6:EF:F6:BD:05:41:6E:20:C1:94:DA:0F:DE + + Authority Information Access: + OCSP - URI:http://ocsp.godaddy.com/ + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.godaddy.com/gdroot-g2.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://certs.godaddy.com/repository/ + + Signature Algorithm: sha256WithRSAEncryption + 08:7e:6c:93:10:c8:38:b8:96:a9:90:4b:ff:a1:5f:4f:04:ef: + 6c:3e:9c:88:06:c9:50:8f:a6:73:f7:57:31:1b:be:bc:e4:2f: + db:f8:ba:d3:5b:e0:b4:e7:e6:79:62:0e:0c:a2:d7:6a:63:73: + 31:b5:f5:a8:48:a4:3b:08:2d:a2:5d:90:d7:b4:7c:25:4f:11: + 56:30:c4:b6:44:9d:7b:2c:9d:e5:5e:e6:ef:0c:61:aa:bf:e4: + 2a:1b:ee:84:9e:b8:83:7d:c1:43:ce:44:a7:13:70:0d:91:1f: + f4:c8:13:ad:83:60:d9:d8:72:a8:73:24:1e:b5:ac:22:0e:ca: + 17:89:62:58:44:1b:ab:89:25:01:00:0f:cd:c4:1b:62:db:51: + b4:d3:0f:51:2a:9b:f4:bc:73:fc:76:ce:36:a4:cd:d9:d8:2c: + ea:ae:9b:f5:2a:b2:90:d1:4d:75:18:8a:3f:8a:41:90:23:7d: + 5b:4b:fe:a4:03:58:9b:46:b2:c3:60:60:83:f8:7d:50:41:ce: + c2:a1:90:c3:bb:ef:02:2f:d2:15:54:ee:44:15:d9:0a:ae:a7: + 8a:33:ed:b1:2d:76:36:26:dc:04:eb:9f:f7:61:1f:15:dc:87: + 6f:ee:46:96:28:ad:a1:26:7d:0a:09:a7:2e:04:a3:8d:bc:f8: + bc:04:30:01 +-----BEGIN CERTIFICATE----- +MIIE0DCCA7igAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT +EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp +ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTExMDUwMzA3MDAwMFoXDTMxMDUwMzA3 +MDAwMFowgbQxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH +EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjEtMCsGA1UE +CxMkaHR0cDovL2NlcnRzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkvMTMwMQYDVQQD +EypHbyBEYWRkeSBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC54MsQ1K92vdSTYuswZLiBCGzD +BNliF44v/z5lz4/OYuY8UhzaFkVLVat4a2ODYpDOD2lsmcgaFItMzEUz6ojcnqOv +K/6AYZ15V8TPLvQ/MDxdR/yaFrzDN5ZBUY4RS1T4KL7QjL7wMDge87Am+GZHY23e +cSZHjzhHU9FGHbTj3ADqRay9vHHZqm8A29vNMDp5T19MR/gd71vCxJ1gO7GyQ5HY +pDNO6rPWJ0+tJYqlxvTV0KaudAVkV4i1RFXULSo6Pvi4vekyCgKUZMQWOlDxSq7n +eTOvDCAHf+jfBDnCaQJsY1L6d8EbyHSHyLmTGFBUNUtpTrw700kuH9zB0lL7AgMB +AAGjggEaMIIBFjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV +HQ4EFgQUQMK9J47MNIMwojPX+2yz8LQsgM4wHwYDVR0jBBgwFoAUOpqFBxBnKLbv +9r0FQW4gwZTaD94wNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8v +b2NzcC5nb2RhZGR5LmNvbS8wNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2NybC5n +b2RhZGR5LmNvbS9nZHJvb3QtZzIuY3JsMEYGA1UdIAQ/MD0wOwYEVR0gADAzMDEG +CCsGAQUFBwIBFiVodHRwczovL2NlcnRzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkv +MA0GCSqGSIb3DQEBCwUAA4IBAQAIfmyTEMg4uJapkEv/oV9PBO9sPpyIBslQj6Zz +91cxG7685C/b+LrTW+C05+Z5Yg4MotdqY3MxtfWoSKQ7CC2iXZDXtHwlTxFWMMS2 +RJ17LJ3lXubvDGGqv+QqG+6EnriDfcFDzkSnE3ANkR/0yBOtg2DZ2HKocyQetawi +DsoXiWJYRBuriSUBAA/NxBti21G00w9RKpv0vHP8ds42pM3Z2Czqrpv1KrKQ0U11 +GIo/ikGQI31bS/6kA1ibRrLDYGCD+H1QQc7CoZDDu+8CL9IVVO5EFdkKrqeKM+2x +LXY2JtwE65/3YR8V3Idv7kaWKK2hJn0KCacuBKONvPi8BDAB +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_31[] = { + 0x30, 0x82, 0x04, 0xd0, 0x30, 0x82, 0x03, 0xb8, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x01, 0x07, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0x83, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, + 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, + 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, + 0x6c, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x11, 0x47, 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, + 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x28, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, + 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, 0x30, 0x30, 0x30, + 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x81, 0xb4, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, + 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, + 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x47, + 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2c, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65, + 0x72, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x2f, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x2a, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xb9, 0xe0, 0xcb, 0x10, 0xd4, 0xaf, 0x76, + 0xbd, 0xd4, 0x93, 0x62, 0xeb, 0x30, 0x64, 0xb8, 0x81, 0x08, 0x6c, 0xc3, + 0x04, 0xd9, 0x62, 0x17, 0x8e, 0x2f, 0xff, 0x3e, 0x65, 0xcf, 0x8f, 0xce, + 0x62, 0xe6, 0x3c, 0x52, 0x1c, 0xda, 0x16, 0x45, 0x4b, 0x55, 0xab, 0x78, + 0x6b, 0x63, 0x83, 0x62, 0x90, 0xce, 0x0f, 0x69, 0x6c, 0x99, 0xc8, 0x1a, + 0x14, 0x8b, 0x4c, 0xcc, 0x45, 0x33, 0xea, 0x88, 0xdc, 0x9e, 0xa3, 0xaf, + 0x2b, 0xfe, 0x80, 0x61, 0x9d, 0x79, 0x57, 0xc4, 0xcf, 0x2e, 0xf4, 0x3f, + 0x30, 0x3c, 0x5d, 0x47, 0xfc, 0x9a, 0x16, 0xbc, 0xc3, 0x37, 0x96, 0x41, + 0x51, 0x8e, 0x11, 0x4b, 0x54, 0xf8, 0x28, 0xbe, 0xd0, 0x8c, 0xbe, 0xf0, + 0x30, 0x38, 0x1e, 0xf3, 0xb0, 0x26, 0xf8, 0x66, 0x47, 0x63, 0x6d, 0xde, + 0x71, 0x26, 0x47, 0x8f, 0x38, 0x47, 0x53, 0xd1, 0x46, 0x1d, 0xb4, 0xe3, + 0xdc, 0x00, 0xea, 0x45, 0xac, 0xbd, 0xbc, 0x71, 0xd9, 0xaa, 0x6f, 0x00, + 0xdb, 0xdb, 0xcd, 0x30, 0x3a, 0x79, 0x4f, 0x5f, 0x4c, 0x47, 0xf8, 0x1d, + 0xef, 0x5b, 0xc2, 0xc4, 0x9d, 0x60, 0x3b, 0xb1, 0xb2, 0x43, 0x91, 0xd8, + 0xa4, 0x33, 0x4e, 0xea, 0xb3, 0xd6, 0x27, 0x4f, 0xad, 0x25, 0x8a, 0xa5, + 0xc6, 0xf4, 0xd5, 0xd0, 0xa6, 0xae, 0x74, 0x05, 0x64, 0x57, 0x88, 0xb5, + 0x44, 0x55, 0xd4, 0x2d, 0x2a, 0x3a, 0x3e, 0xf8, 0xb8, 0xbd, 0xe9, 0x32, + 0x0a, 0x02, 0x94, 0x64, 0xc4, 0x16, 0x3a, 0x50, 0xf1, 0x4a, 0xae, 0xe7, + 0x79, 0x33, 0xaf, 0x0c, 0x20, 0x07, 0x7f, 0xe8, 0xdf, 0x04, 0x39, 0xc2, + 0x69, 0x02, 0x6c, 0x63, 0x52, 0xfa, 0x77, 0xc1, 0x1b, 0xc8, 0x74, 0x87, + 0xc8, 0xb9, 0x93, 0x18, 0x50, 0x54, 0x35, 0x4b, 0x69, 0x4e, 0xbc, 0x3b, + 0xd3, 0x49, 0x2e, 0x1f, 0xdc, 0xc1, 0xd2, 0x52, 0xfb, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1a, 0x30, 0x82, 0x01, 0x16, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, + 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x40, 0xc2, 0xbd, 0x27, 0x8e, 0xcc, + 0x34, 0x83, 0x30, 0xa2, 0x33, 0xd7, 0xfb, 0x6c, 0xb3, 0xf0, 0xb4, 0x2c, + 0x80, 0xce, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0x3a, 0x9a, 0x85, 0x07, 0x10, 0x67, 0x28, 0xb6, 0xef, + 0xf6, 0xbd, 0x05, 0x41, 0x6e, 0x20, 0xc1, 0x94, 0xda, 0x0f, 0xde, 0x30, + 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x35, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, 0x26, 0x86, 0x24, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67, + 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, + 0x64, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x67, 0x32, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x46, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, 0x30, + 0x3b, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, + 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, + 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x08, 0x7e, 0x6c, 0x93, + 0x10, 0xc8, 0x38, 0xb8, 0x96, 0xa9, 0x90, 0x4b, 0xff, 0xa1, 0x5f, 0x4f, + 0x04, 0xef, 0x6c, 0x3e, 0x9c, 0x88, 0x06, 0xc9, 0x50, 0x8f, 0xa6, 0x73, + 0xf7, 0x57, 0x31, 0x1b, 0xbe, 0xbc, 0xe4, 0x2f, 0xdb, 0xf8, 0xba, 0xd3, + 0x5b, 0xe0, 0xb4, 0xe7, 0xe6, 0x79, 0x62, 0x0e, 0x0c, 0xa2, 0xd7, 0x6a, + 0x63, 0x73, 0x31, 0xb5, 0xf5, 0xa8, 0x48, 0xa4, 0x3b, 0x08, 0x2d, 0xa2, + 0x5d, 0x90, 0xd7, 0xb4, 0x7c, 0x25, 0x4f, 0x11, 0x56, 0x30, 0xc4, 0xb6, + 0x44, 0x9d, 0x7b, 0x2c, 0x9d, 0xe5, 0x5e, 0xe6, 0xef, 0x0c, 0x61, 0xaa, + 0xbf, 0xe4, 0x2a, 0x1b, 0xee, 0x84, 0x9e, 0xb8, 0x83, 0x7d, 0xc1, 0x43, + 0xce, 0x44, 0xa7, 0x13, 0x70, 0x0d, 0x91, 0x1f, 0xf4, 0xc8, 0x13, 0xad, + 0x83, 0x60, 0xd9, 0xd8, 0x72, 0xa8, 0x73, 0x24, 0x1e, 0xb5, 0xac, 0x22, + 0x0e, 0xca, 0x17, 0x89, 0x62, 0x58, 0x44, 0x1b, 0xab, 0x89, 0x25, 0x01, + 0x00, 0x0f, 0xcd, 0xc4, 0x1b, 0x62, 0xdb, 0x51, 0xb4, 0xd3, 0x0f, 0x51, + 0x2a, 0x9b, 0xf4, 0xbc, 0x73, 0xfc, 0x76, 0xce, 0x36, 0xa4, 0xcd, 0xd9, + 0xd8, 0x2c, 0xea, 0xae, 0x9b, 0xf5, 0x2a, 0xb2, 0x90, 0xd1, 0x4d, 0x75, + 0x18, 0x8a, 0x3f, 0x8a, 0x41, 0x90, 0x23, 0x7d, 0x5b, 0x4b, 0xfe, 0xa4, + 0x03, 0x58, 0x9b, 0x46, 0xb2, 0xc3, 0x60, 0x60, 0x83, 0xf8, 0x7d, 0x50, + 0x41, 0xce, 0xc2, 0xa1, 0x90, 0xc3, 0xbb, 0xef, 0x02, 0x2f, 0xd2, 0x15, + 0x54, 0xee, 0x44, 0x15, 0xd9, 0x0a, 0xae, 0xa7, 0x8a, 0x33, 0xed, 0xb1, + 0x2d, 0x76, 0x36, 0x26, 0xdc, 0x04, 0xeb, 0x9f, 0xf7, 0x61, 0x1f, 0x15, + 0xdc, 0x87, 0x6f, 0xee, 0x46, 0x96, 0x28, 0xad, 0xa1, 0x26, 0x7d, 0x0a, + 0x09, 0xa7, 0x2e, 0x04, 0xa3, 0x8d, 0xbc, 0xf8, 0xbc, 0x04, 0x30, 0x01, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 0a:48:9e:88:53:7e:8a:a6:45:4d:6e:2c:4b:2a:eb:20 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2008 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA - G3 + Validity + Not Before: Apr 9 00:00:00 2013 GMT + Not After : Apr 8 23:59:59 2023 GMT + Subject: C=US, O=thawte, Inc., CN=thawte Extended Validation SHA256 SSL CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:f2:c4:bc:74:e8:25:f6:00:62:28:e3:4c:e8:b8: + df:13:9f:8b:07:37:ef:62:4a:f1:57:09:f6:82:e8: + 75:f0:0a:a9:27:cf:93:3b:ec:36:89:a5:6e:1d:d6: + 54:f3:b8:04:97:72:b4:69:25:cc:d1:42:0e:5b:d5: + 1c:7f:a2:60:6e:b1:52:1a:db:93:2f:bb:0b:0d:64: + 53:16:cb:1c:09:24:95:29:22:b4:8a:18:00:89:fe: + f7:1f:72:c8:e8:5c:2f:1a:1b:a2:18:b8:ef:18:5c: + cb:b5:db:3a:4e:db:0f:ae:df:c4:79:e3:1e:aa:5c: + a3:a4:e5:ac:61:9b:37:85:8f:48:75:1b:b9:d5:68: + 96:e9:27:79:70:57:23:1a:bb:6c:93:90:c7:45:d7: + 17:d2:37:2a:76:b3:cd:82:a9:4f:c0:03:7b:e1:3d: + 7a:7e:5b:b8:85:f2:f5:15:fb:70:a9:bd:f5:50:65: + 16:9d:e3:b6:6b:61:6e:a1:7a:9e:e8:0d:1c:f7:2a: + 8e:69:7e:43:30:8e:78:ce:ee:65:1e:3b:9b:87:1e: + 49:1c:f8:32:46:5d:28:46:79:2a:4e:27:5d:17:58: + a8:37:fe:a8:13:a9:69:15:df:36:22:89:75:ba:ca: + 01:40:2e:ed:9d:d7:0c:aa:31:ce:27:ae:57:d5:d2: + 51:fb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + Authority Information Access: + OCSP - URI:http://ocsp.thawte.com + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.thawte.com/cps + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.thawte.com/ThawtePCA-G3.crl + + X509v3 Subject Alternative Name: + DirName:/CN=VeriSignMPKI-2-374 + X509v3 Subject Key Identifier: + 3B:24:C8:31:A0:B7:5A:D0:6A:B8:D2:CA:07:74:CC:1E:24:D4:C4:DC + X509v3 Authority Key Identifier: + keyid:AD:6C:AA:94:60:9C:ED:E4:FF:FA:3E:0A:74:2B:63:03:F7:B6:59:BF + + Signature Algorithm: sha256WithRSAEncryption + 68:98:26:aa:d4:33:c9:ba:75:70:d4:9f:49:ad:d6:c1:54:dc: + ee:aa:56:1f:78:a7:f0:a1:a4:ee:0b:f9:12:af:df:a6:b8:ee: + c3:cb:35:13:6a:59:2a:f8:c9:e9:4c:2f:bc:b1:bc:2b:c2:02: + 30:e1:c3:be:c2:f0:81:8c:99:77:89:58:00:a3:cc:7f:a3:02: + 4c:53:b2:6e:36:4f:fe:df:87:76:b3:3f:ec:5a:62:50:b6:00: + 45:58:f2:87:ac:77:e6:d0:20:50:63:c5:e4:b2:70:15:18:90: + 05:7b:7b:af:2b:46:be:6b:4e:1f:53:fc:84:27:ae:83:d2:8d: + 47:53:a7:0e:1f:63:b5:ba:db:16:d8:6a:09:25:55:7d:8f:3d: + 4a:c1:83:f9:b3:b9:a7:04:5a:c8:f3:11:04:91:53:30:d9:52: + 87:cb:39:00:9c:ec:53:c3:02:09:7e:a7:36:8e:72:21:2f:23: + bb:4c:c6:47:a5:a1:ee:67:c4:2f:5c:3a:47:38:61:e2:c3:1e: + 37:92:9e:c8:2f:6b:fa:ef:d2:c3:cd:29:8d:98:f8:52:17:ed: + b5:53:3c:df:af:c9:1b:62:ad:df:02:ee:5d:34:f6:41:4b:cb: + c3:55:af:b1:cb:da:9c:73:d5:02:a8:2d:a7:ac:fc:e1:e5:07: + d0:51:e8:35 +-----BEGIN CERTIFICATE----- +MIIE0DCCA7igAwIBAgIQCkieiFN+iqZFTW4sSyrrIDANBgkqhkiG9w0BAQsFADCB +rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV +BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0xMzA0MDkwMDAwMDBa +Fw0yMzA0MDgyMzU5NTlaMFcxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwx0aGF3dGUs +IEluYy4xMTAvBgNVBAMTKHRoYXd0ZSBFeHRlbmRlZCBWYWxpZGF0aW9uIFNIQTI1 +NiBTU0wgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDyxLx06CX2 +AGIo40zouN8Tn4sHN+9iSvFXCfaC6HXwCqknz5M77DaJpW4d1lTzuASXcrRpJczR +Qg5b1Rx/omBusVIa25MvuwsNZFMWyxwJJJUpIrSKGACJ/vcfcsjoXC8aG6IYuO8Y +XMu12zpO2w+u38R54x6qXKOk5axhmzeFj0h1G7nVaJbpJ3lwVyMau2yTkMdF1xfS +Nyp2s82CqU/AA3vhPXp+W7iF8vUV+3CpvfVQZRad47ZrYW6hep7oDRz3Ko5pfkMw +jnjO7mUeO5uHHkkc+DJGXShGeSpOJ10XWKg3/qgTqWkV3zYiiXW6ygFALu2d1wyq +Mc4nrlfV0lH7AgMBAAGjggE+MIIBOjASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1Ud +DwEB/wQEAwIBBjAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9v +Y3NwLnRoYXd0ZS5jb20wOwYDVR0gBDQwMjAwBgRVHSAAMCgwJgYIKwYBBQUHAgEW +Gmh0dHBzOi8vd3d3LnRoYXd0ZS5jb20vY3BzMDcGA1UdHwQwMC4wLKAqoCiGJmh0 +dHA6Ly9jcmwudGhhd3RlLmNvbS9UaGF3dGVQQ0EtRzMuY3JsMCoGA1UdEQQjMCGk +HzAdMRswGQYDVQQDExJWZXJpU2lnbk1QS0ktMi0zNzQwHQYDVR0OBBYEFDskyDGg +t1rQarjSygd0zB4k1MTcMB8GA1UdIwQYMBaAFK1sqpRgnO3k//o+CnQrYwP3tlm/ +MA0GCSqGSIb3DQEBCwUAA4IBAQBomCaq1DPJunVw1J9JrdbBVNzuqlYfeKfwoaTu +C/kSr9+muO7DyzUTalkq+MnpTC+8sbwrwgIw4cO+wvCBjJl3iVgAo8x/owJMU7Ju +Nk/+34d2sz/sWmJQtgBFWPKHrHfm0CBQY8XksnAVGJAFe3uvK0a+a04fU/yEJ66D +0o1HU6cOH2O1utsW2GoJJVV9jz1KwYP5s7mnBFrI8xEEkVMw2VKHyzkAnOxTwwIJ +fqc2jnIhLyO7TMZHpaHuZ8QvXDpHOGHiwx43kp7IL2v679LDzSmNmPhSF+21Uzzf +r8kbYq3fAu5dNPZBS8vDVa+xy9qcc9UCqC2nrPzh5QfQUeg1 +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_32[] = { + 0x30, 0x82, 0x04, 0xd0, 0x30, 0x82, 0x03, 0xb8, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x0a, 0x48, 0x9e, 0x88, 0x53, 0x7e, 0x8a, 0xa6, 0x45, + 0x4d, 0x6e, 0x2c, 0x4b, 0x2a, 0xeb, 0x20, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xae, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x38, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x1b, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17, 0x0d, 0x31, + 0x33, 0x30, 0x34, 0x30, 0x39, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, + 0x17, 0x0d, 0x32, 0x33, 0x30, 0x34, 0x30, 0x38, 0x32, 0x33, 0x35, 0x39, + 0x35, 0x39, 0x5a, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, + 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, + 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x28, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, + 0x36, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xf2, 0xc4, 0xbc, 0x74, 0xe8, 0x25, 0xf6, + 0x00, 0x62, 0x28, 0xe3, 0x4c, 0xe8, 0xb8, 0xdf, 0x13, 0x9f, 0x8b, 0x07, + 0x37, 0xef, 0x62, 0x4a, 0xf1, 0x57, 0x09, 0xf6, 0x82, 0xe8, 0x75, 0xf0, + 0x0a, 0xa9, 0x27, 0xcf, 0x93, 0x3b, 0xec, 0x36, 0x89, 0xa5, 0x6e, 0x1d, + 0xd6, 0x54, 0xf3, 0xb8, 0x04, 0x97, 0x72, 0xb4, 0x69, 0x25, 0xcc, 0xd1, + 0x42, 0x0e, 0x5b, 0xd5, 0x1c, 0x7f, 0xa2, 0x60, 0x6e, 0xb1, 0x52, 0x1a, + 0xdb, 0x93, 0x2f, 0xbb, 0x0b, 0x0d, 0x64, 0x53, 0x16, 0xcb, 0x1c, 0x09, + 0x24, 0x95, 0x29, 0x22, 0xb4, 0x8a, 0x18, 0x00, 0x89, 0xfe, 0xf7, 0x1f, + 0x72, 0xc8, 0xe8, 0x5c, 0x2f, 0x1a, 0x1b, 0xa2, 0x18, 0xb8, 0xef, 0x18, + 0x5c, 0xcb, 0xb5, 0xdb, 0x3a, 0x4e, 0xdb, 0x0f, 0xae, 0xdf, 0xc4, 0x79, + 0xe3, 0x1e, 0xaa, 0x5c, 0xa3, 0xa4, 0xe5, 0xac, 0x61, 0x9b, 0x37, 0x85, + 0x8f, 0x48, 0x75, 0x1b, 0xb9, 0xd5, 0x68, 0x96, 0xe9, 0x27, 0x79, 0x70, + 0x57, 0x23, 0x1a, 0xbb, 0x6c, 0x93, 0x90, 0xc7, 0x45, 0xd7, 0x17, 0xd2, + 0x37, 0x2a, 0x76, 0xb3, 0xcd, 0x82, 0xa9, 0x4f, 0xc0, 0x03, 0x7b, 0xe1, + 0x3d, 0x7a, 0x7e, 0x5b, 0xb8, 0x85, 0xf2, 0xf5, 0x15, 0xfb, 0x70, 0xa9, + 0xbd, 0xf5, 0x50, 0x65, 0x16, 0x9d, 0xe3, 0xb6, 0x6b, 0x61, 0x6e, 0xa1, + 0x7a, 0x9e, 0xe8, 0x0d, 0x1c, 0xf7, 0x2a, 0x8e, 0x69, 0x7e, 0x43, 0x30, + 0x8e, 0x78, 0xce, 0xee, 0x65, 0x1e, 0x3b, 0x9b, 0x87, 0x1e, 0x49, 0x1c, + 0xf8, 0x32, 0x46, 0x5d, 0x28, 0x46, 0x79, 0x2a, 0x4e, 0x27, 0x5d, 0x17, + 0x58, 0xa8, 0x37, 0xfe, 0xa8, 0x13, 0xa9, 0x69, 0x15, 0xdf, 0x36, 0x22, + 0x89, 0x75, 0xba, 0xca, 0x01, 0x40, 0x2e, 0xed, 0x9d, 0xd7, 0x0c, 0xaa, + 0x31, 0xce, 0x27, 0xae, 0x57, 0xd5, 0xd2, 0x51, 0xfb, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x3e, 0x30, 0x82, 0x01, 0x3a, 0x30, 0x12, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, + 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x32, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x26, + 0x30, 0x24, 0x30, 0x22, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, + 0x63, 0x73, 0x70, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, + 0x6f, 0x6d, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, + 0x32, 0x30, 0x30, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, + 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, + 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, + 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x70, 0x73, 0x30, 0x37, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x30, + 0x30, 0x2e, 0x30, 0x2c, 0xa0, 0x2a, 0xa0, 0x28, 0x86, 0x26, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x74, 0x68, 0x61, + 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, + 0x74, 0x65, 0x50, 0x43, 0x41, 0x2d, 0x47, 0x33, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x2a, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x23, 0x30, 0x21, 0xa4, + 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x12, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, + 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x33, 0x37, 0x34, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3b, 0x24, 0xc8, 0x31, 0xa0, + 0xb7, 0x5a, 0xd0, 0x6a, 0xb8, 0xd2, 0xca, 0x07, 0x74, 0xcc, 0x1e, 0x24, + 0xd4, 0xc4, 0xdc, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, + 0x30, 0x16, 0x80, 0x14, 0xad, 0x6c, 0xaa, 0x94, 0x60, 0x9c, 0xed, 0xe4, + 0xff, 0xfa, 0x3e, 0x0a, 0x74, 0x2b, 0x63, 0x03, 0xf7, 0xb6, 0x59, 0xbf, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x68, 0x98, 0x26, 0xaa, + 0xd4, 0x33, 0xc9, 0xba, 0x75, 0x70, 0xd4, 0x9f, 0x49, 0xad, 0xd6, 0xc1, + 0x54, 0xdc, 0xee, 0xaa, 0x56, 0x1f, 0x78, 0xa7, 0xf0, 0xa1, 0xa4, 0xee, + 0x0b, 0xf9, 0x12, 0xaf, 0xdf, 0xa6, 0xb8, 0xee, 0xc3, 0xcb, 0x35, 0x13, + 0x6a, 0x59, 0x2a, 0xf8, 0xc9, 0xe9, 0x4c, 0x2f, 0xbc, 0xb1, 0xbc, 0x2b, + 0xc2, 0x02, 0x30, 0xe1, 0xc3, 0xbe, 0xc2, 0xf0, 0x81, 0x8c, 0x99, 0x77, + 0x89, 0x58, 0x00, 0xa3, 0xcc, 0x7f, 0xa3, 0x02, 0x4c, 0x53, 0xb2, 0x6e, + 0x36, 0x4f, 0xfe, 0xdf, 0x87, 0x76, 0xb3, 0x3f, 0xec, 0x5a, 0x62, 0x50, + 0xb6, 0x00, 0x45, 0x58, 0xf2, 0x87, 0xac, 0x77, 0xe6, 0xd0, 0x20, 0x50, + 0x63, 0xc5, 0xe4, 0xb2, 0x70, 0x15, 0x18, 0x90, 0x05, 0x7b, 0x7b, 0xaf, + 0x2b, 0x46, 0xbe, 0x6b, 0x4e, 0x1f, 0x53, 0xfc, 0x84, 0x27, 0xae, 0x83, + 0xd2, 0x8d, 0x47, 0x53, 0xa7, 0x0e, 0x1f, 0x63, 0xb5, 0xba, 0xdb, 0x16, + 0xd8, 0x6a, 0x09, 0x25, 0x55, 0x7d, 0x8f, 0x3d, 0x4a, 0xc1, 0x83, 0xf9, + 0xb3, 0xb9, 0xa7, 0x04, 0x5a, 0xc8, 0xf3, 0x11, 0x04, 0x91, 0x53, 0x30, + 0xd9, 0x52, 0x87, 0xcb, 0x39, 0x00, 0x9c, 0xec, 0x53, 0xc3, 0x02, 0x09, + 0x7e, 0xa7, 0x36, 0x8e, 0x72, 0x21, 0x2f, 0x23, 0xbb, 0x4c, 0xc6, 0x47, + 0xa5, 0xa1, 0xee, 0x67, 0xc4, 0x2f, 0x5c, 0x3a, 0x47, 0x38, 0x61, 0xe2, + 0xc3, 0x1e, 0x37, 0x92, 0x9e, 0xc8, 0x2f, 0x6b, 0xfa, 0xef, 0xd2, 0xc3, + 0xcd, 0x29, 0x8d, 0x98, 0xf8, 0x52, 0x17, 0xed, 0xb5, 0x53, 0x3c, 0xdf, + 0xaf, 0xc9, 0x1b, 0x62, 0xad, 0xdf, 0x02, 0xee, 0x5d, 0x34, 0xf6, 0x41, + 0x4b, 0xcb, 0xc3, 0x55, 0xaf, 0xb1, 0xcb, 0xda, 0x9c, 0x73, 0xd5, 0x02, + 0xa8, 0x2d, 0xa7, 0xac, 0xfc, 0xe1, 0xe5, 0x07, 0xd0, 0x51, 0xe8, 0x35, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 25:0c:e8:e0:30:61:2e:9f:2b:89:f7:05:4d:7c:f8:fd + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority + Validity + Not Before: Nov 8 00:00:00 2006 GMT + Not After : Nov 7 23:59:59 2021 GMT + Subject: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 2006 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 3 Public Primary Certification Authority - G5 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:af:24:08:08:29:7a:35:9e:60:0c:aa:e7:4b:3b: + 4e:dc:7c:bc:3c:45:1c:bb:2b:e0:fe:29:02:f9:57: + 08:a3:64:85:15:27:f5:f1:ad:c8:31:89:5d:22:e8: + 2a:aa:a6:42:b3:8f:f8:b9:55:b7:b1:b7:4b:b3:fe: + 8f:7e:07:57:ec:ef:43:db:66:62:15:61:cf:60:0d: + a4:d8:de:f8:e0:c3:62:08:3d:54:13:eb:49:ca:59: + 54:85:26:e5:2b:8f:1b:9f:eb:f5:a1:91:c2:33:49: + d8:43:63:6a:52:4b:d2:8f:e8:70:51:4d:d1:89:69: + 7b:c7:70:f6:b3:dc:12:74:db:7b:5d:4b:56:d3:96: + bf:15:77:a1:b0:f4:a2:25:f2:af:1c:92:67:18:e5: + f4:06:04:ef:90:b9:e4:00:e4:dd:3a:b5:19:ff:02: + ba:f4:3c:ee:e0:8b:eb:37:8b:ec:f4:d7:ac:f2:f6: + f0:3d:af:dd:75:91:33:19:1d:1c:40:cb:74:24:19: + 21:93:d9:14:fe:ac:2a:52:c7:8f:d5:04:49:e4:8d: + 63:47:88:3c:69:83:cb:fe:47:bd:2b:7e:4f:c5:95: + ae:0e:9d:d4:d1:43:c0:67:73:e3:14:08:7e:e5:3f: + 9f:73:b8:33:0a:cf:5d:3f:34:87:96:8a:ee:53:e8: + 25:15 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.verisign.com/pca3.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.verisign.com/cps + + X509v3 Subject Key Identifier: + 7F:D3:65:A7:C2:DD:EC:BB:F0:30:09:F3:43:39:FA:02:AF:33:31:33 + 1.3.6.1.5.5.7.1.12: + 0_.].[0Y0W0U..image/gif0!0.0...+..............k...j.H.,{..0%.#http://logo.verisign.com/vslogo.gif + Authority Information Access: + OCSP - URI:http://ocsp.verisign.com + + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication, Code Signing, Netscape Server Gated Crypto, 2.16.840.1.113733.1.8.1 + Signature Algorithm: sha1WithRSAEncryption + 13:02:dd:f8:e8:86:00:f2:5a:f8:f8:20:0c:59:88:62:07:ce: + ce:f7:4e:f9:bb:59:a1:98:e5:e1:38:dd:4e:bc:66:18:d3:ad: + eb:18:f2:0d:c9:6d:3e:4a:94:20:c3:3c:ba:bd:65:54:c6:af: + 44:b3:10:ad:2c:6b:3e:ab:d7:07:b6:b8:81:63:c5:f9:5e:2e: + e5:2a:67:ce:cd:33:0c:2a:d7:89:56:03:23:1f:b3:be:e8:3a: + 08:59:b4:ec:45:35:f7:8a:5b:ff:66:cf:50:af:c6:6d:57:8d: + 19:78:b7:b9:a2:d1:57:ea:1f:9a:4b:af:ba:c9:8e:12:7e:c6: + bd:ff +-----BEGIN CERTIFICATE----- +MIIE0DCCBDmgAwIBAgIQJQzo4DBhLp8rifcFTXz4/TANBgkqhkiG9w0BAQUFADBf +MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT +LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw +HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv +ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8 +RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb +ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR +TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH +iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB +AAGjggGbMIIBlzAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0 +dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjA9 +BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVy +aXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwbQYI +KwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQU +j+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29t +L3ZzbG9nby5naWYwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8v +b2NzcC52ZXJpc2lnbi5jb20wPgYDVR0lBDcwNQYIKwYBBQUHAwEGCCsGAQUFBwMC +BggrBgEFBQcDAwYJYIZIAYb4QgQBBgpghkgBhvhFAQgBMA0GCSqGSIb3DQEBBQUA +A4GBABMC3fjohgDyWvj4IAxZiGIHzs73Tvm7WaGY5eE43U68ZhjTresY8g3JbT5K +lCDDPLq9ZVTGr0SzEK0saz6r1we2uIFjxfleLuUqZ87NMwwq14lWAyMfs77oOghZ +tOxFNfeKW/9mz1Cvxm1XjRl4t7mi0VfqH5pLr7rJjhJ+xr3/ +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_33[] = { + 0x30, 0x82, 0x04, 0xd0, 0x30, 0x82, 0x04, 0x39, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x25, 0x0c, 0xe8, 0xe0, 0x30, 0x61, 0x2e, 0x9f, 0x2b, + 0x89, 0xf7, 0x05, 0x4d, 0x7c, 0xf8, 0xfd, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5f, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, + 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x30, 0x38, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 0x30, 0x37, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xca, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3a, 0x30, + 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, 0x63, 0x29, 0x20, + 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, + 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, + 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, + 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x45, 0x30, + 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, + 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, + 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, 0x24, 0x08, 0x08, 0x29, 0x7a, 0x35, + 0x9e, 0x60, 0x0c, 0xaa, 0xe7, 0x4b, 0x3b, 0x4e, 0xdc, 0x7c, 0xbc, 0x3c, + 0x45, 0x1c, 0xbb, 0x2b, 0xe0, 0xfe, 0x29, 0x02, 0xf9, 0x57, 0x08, 0xa3, + 0x64, 0x85, 0x15, 0x27, 0xf5, 0xf1, 0xad, 0xc8, 0x31, 0x89, 0x5d, 0x22, + 0xe8, 0x2a, 0xaa, 0xa6, 0x42, 0xb3, 0x8f, 0xf8, 0xb9, 0x55, 0xb7, 0xb1, + 0xb7, 0x4b, 0xb3, 0xfe, 0x8f, 0x7e, 0x07, 0x57, 0xec, 0xef, 0x43, 0xdb, + 0x66, 0x62, 0x15, 0x61, 0xcf, 0x60, 0x0d, 0xa4, 0xd8, 0xde, 0xf8, 0xe0, + 0xc3, 0x62, 0x08, 0x3d, 0x54, 0x13, 0xeb, 0x49, 0xca, 0x59, 0x54, 0x85, + 0x26, 0xe5, 0x2b, 0x8f, 0x1b, 0x9f, 0xeb, 0xf5, 0xa1, 0x91, 0xc2, 0x33, + 0x49, 0xd8, 0x43, 0x63, 0x6a, 0x52, 0x4b, 0xd2, 0x8f, 0xe8, 0x70, 0x51, + 0x4d, 0xd1, 0x89, 0x69, 0x7b, 0xc7, 0x70, 0xf6, 0xb3, 0xdc, 0x12, 0x74, + 0xdb, 0x7b, 0x5d, 0x4b, 0x56, 0xd3, 0x96, 0xbf, 0x15, 0x77, 0xa1, 0xb0, + 0xf4, 0xa2, 0x25, 0xf2, 0xaf, 0x1c, 0x92, 0x67, 0x18, 0xe5, 0xf4, 0x06, + 0x04, 0xef, 0x90, 0xb9, 0xe4, 0x00, 0xe4, 0xdd, 0x3a, 0xb5, 0x19, 0xff, + 0x02, 0xba, 0xf4, 0x3c, 0xee, 0xe0, 0x8b, 0xeb, 0x37, 0x8b, 0xec, 0xf4, + 0xd7, 0xac, 0xf2, 0xf6, 0xf0, 0x3d, 0xaf, 0xdd, 0x75, 0x91, 0x33, 0x19, + 0x1d, 0x1c, 0x40, 0xcb, 0x74, 0x24, 0x19, 0x21, 0x93, 0xd9, 0x14, 0xfe, + 0xac, 0x2a, 0x52, 0xc7, 0x8f, 0xd5, 0x04, 0x49, 0xe4, 0x8d, 0x63, 0x47, + 0x88, 0x3c, 0x69, 0x83, 0xcb, 0xfe, 0x47, 0xbd, 0x2b, 0x7e, 0x4f, 0xc5, + 0x95, 0xae, 0x0e, 0x9d, 0xd4, 0xd1, 0x43, 0xc0, 0x67, 0x73, 0xe3, 0x14, + 0x08, 0x7e, 0xe5, 0x3f, 0x9f, 0x73, 0xb8, 0x33, 0x0a, 0xcf, 0x5d, 0x3f, + 0x34, 0x87, 0x96, 0x8a, 0xee, 0x53, 0xe8, 0x25, 0x15, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x9b, 0x30, 0x82, 0x01, 0x97, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, + 0x01, 0x01, 0xff, 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a, + 0x30, 0x28, 0x30, 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, + 0x61, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3d, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, + 0x73, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, + 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x6d, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, + 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, + 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, + 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, + 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, + 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, + 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x3e, 0x06, 0x03, 0x55, 0x1d, 0x25, + 0x04, 0x37, 0x30, 0x35, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x06, 0x09, + 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x04, 0x01, 0x06, 0x0a, 0x60, + 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x08, 0x01, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, + 0x03, 0x81, 0x81, 0x00, 0x13, 0x02, 0xdd, 0xf8, 0xe8, 0x86, 0x00, 0xf2, + 0x5a, 0xf8, 0xf8, 0x20, 0x0c, 0x59, 0x88, 0x62, 0x07, 0xce, 0xce, 0xf7, + 0x4e, 0xf9, 0xbb, 0x59, 0xa1, 0x98, 0xe5, 0xe1, 0x38, 0xdd, 0x4e, 0xbc, + 0x66, 0x18, 0xd3, 0xad, 0xeb, 0x18, 0xf2, 0x0d, 0xc9, 0x6d, 0x3e, 0x4a, + 0x94, 0x20, 0xc3, 0x3c, 0xba, 0xbd, 0x65, 0x54, 0xc6, 0xaf, 0x44, 0xb3, + 0x10, 0xad, 0x2c, 0x6b, 0x3e, 0xab, 0xd7, 0x07, 0xb6, 0xb8, 0x81, 0x63, + 0xc5, 0xf9, 0x5e, 0x2e, 0xe5, 0x2a, 0x67, 0xce, 0xcd, 0x33, 0x0c, 0x2a, + 0xd7, 0x89, 0x56, 0x03, 0x23, 0x1f, 0xb3, 0xbe, 0xe8, 0x3a, 0x08, 0x59, + 0xb4, 0xec, 0x45, 0x35, 0xf7, 0x8a, 0x5b, 0xff, 0x66, 0xcf, 0x50, 0xaf, + 0xc6, 0x6d, 0x57, 0x8d, 0x19, 0x78, 0xb7, 0xb9, 0xa2, 0xd1, 0x57, 0xea, + 0x1f, 0x9a, 0x4b, 0xaf, 0xba, 0xc9, 0x8e, 0x12, 0x7e, 0xc6, 0xbd, 0xff, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 2c:69:e1:2f:6a:67:0b:d9:9d:d2:0f:91:9e:f0:9e:51 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2006 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA + Validity + Not Before: Jun 10 00:00:00 2014 GMT + Not After : Jun 9 23:59:59 2024 GMT + Subject: C=US, O=thawte, Inc., OU=Domain Validated SSL, CN=thawte DV SSL CA - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:ea:94:07:85:c8:41:2c:f6:83:12:6c:92:5f:ab: + 1f:00:d4:96:6f:74:cd:2e:11:e9:6c:0f:39:01:b9: + 48:90:40:39:4d:c4:a2:c8:79:6a:a5:9a:bd:91:44: + 65:77:54:ad:ff:25:5f:ee:42:fb:b3:02:0f:ea:5d: + 7a:dd:1a:54:9e:d7:73:42:9b:cc:79:5f:c5:4d:f4: + b7:0b:18:39:20:7a:dd:50:01:5d:34:45:5f:4c:11: + 0e:f5:87:26:26:b4:b0:f3:7e:71:a0:31:71:50:89: + 68:5a:63:8a:14:62:e5:8c:3a:16:55:0d:3e:eb:aa: + 80:1d:71:7a:e3:87:07:ab:bd:a2:74:cd:da:08:01: + 9d:1b:cc:27:88:8c:47:d4:69:25:42:d6:bb:50:6d: + 85:50:d0:48:82:0d:08:9f:e9:23:e3:42:c6:3c:98: + b8:bb:6e:c5:70:13:df:19:1d:01:fd:d2:b5:4e:e6: + 62:f4:07:fa:6b:7d:11:77:c4:62:4f:40:4e:a5:78: + 97:ab:2c:4d:0c:a7:7c:c3:c4:50:32:9f:d0:70:9b: + 0f:ff:ff:75:59:34:85:ad:49:d5:35:ee:4f:5b:d4: + d4:36:95:a0:7e:e8:c5:a1:1c:bd:13:4e:7d:ee:63: + 6a:96:19:99:c8:a7:2a:00:e6:51:8d:46:eb:30:58: + e8:2d + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: https://www.thawte.com/cps + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + Authority Information Access: + OCSP - URI:http://t.symcd.com + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://t.symcb.com/ThawtePCA.crl + + X509v3 Subject Alternative Name: + DirName:/CN=SymantecPKI-1-698 + X509v3 Subject Key Identifier: + 9F:B8:C1:A9:6C:F2:F5:C0:22:2A:94:ED:5C:99:AC:D4:EC:D7:C6:07 + X509v3 Authority Key Identifier: + keyid:7B:5B:45:CF:AF:CE:CB:7A:FD:31:92:1A:6A:B6:F3:46:EB:57:48:50 + + Signature Algorithm: sha256WithRSAEncryption + 53:54:f2:47:a8:02:d7:ef:aa:35:78:be:4a:08:0d:90:18:4b: + 6d:9e:2a:53:2b:e9:54:17:77:74:29:7e:d0:37:07:05:b8:e4: + fa:b8:b4:63:98:44:dc:c6:4f:81:06:8c:3a:be:c7:30:57:c6: + 70:fc:d6:93:19:9f:c3:55:d7:3e:1f:72:8a:9d:30:5a:35:97: + 32:cb:63:e4:c6:72:df:fb:68:ca:69:2f:db:cd:50:38:3e:2b: + bb:ab:3b:82:c7:fd:4b:9b:bd:7c:41:98:ef:01:53:d8:35:8f: + 25:c9:03:06:e6:9c:57:c1:51:0f:9e:f6:7d:93:4d:f8:76:c8: + 3a:6b:f4:c4:8f:33:32:7f:9d:21:84:34:d9:a7:f9:92:fa:41: + 91:61:84:05:9d:a3:79:46:ce:67:e7:81:f2:5e:ac:4c:bc:a8: + ab:6a:6d:15:e2:9c:4e:5a:d9:63:80:bc:f7:42:eb:9a:44:c6: + 8c:6b:06:36:b4:8b:32:89:de:c2:f1:a8:26:aa:a9:ac:ff:ea: + 71:a6:e7:8c:41:fa:17:35:bb:b3:87:31:a9:93:c2:c8:58:e1: + 0a:4e:95:83:9c:b9:ed:3b:a5:ef:08:e0:74:f9:c3:1b:e6:07: + a3:ee:07:d7:42:22:79:21:a0:a1:d4:1d:26:d3:d0:d6:a6:5d: + 2b:41:c0:79 +-----BEGIN CERTIFICATE----- +MIIE0jCCA7qgAwIBAgIQLGnhL2pnC9md0g+RnvCeUTANBgkqhkiG9w0BAQsFADCB +qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV +BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMTQwNjEwMDAwMDAwWhcNMjQw +NjA5MjM1OTU5WjBjMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3RlLCBJbmMu +MR0wGwYDVQQLExREb21haW4gVmFsaWRhdGVkIFNTTDEeMBwGA1UEAxMVdGhhd3Rl +IERWIFNTTCBDQSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +6pQHhchBLPaDEmySX6sfANSWb3TNLhHpbA85AblIkEA5TcSiyHlqpZq9kURld1St +/yVf7kL7swIP6l163RpUntdzQpvMeV/FTfS3Cxg5IHrdUAFdNEVfTBEO9YcmJrSw +835xoDFxUIloWmOKFGLljDoWVQ0+66qAHXF644cHq72idM3aCAGdG8wniIxH1Gkl +Qta7UG2FUNBIgg0In+kj40LGPJi4u27FcBPfGR0B/dK1TuZi9Af6a30Rd8RiT0BO +pXiXqyxNDKd8w8RQMp/QcJsP//91WTSFrUnVNe5PW9TUNpWgfujFoRy9E0597mNq +lhmZyKcqAOZRjUbrMFjoLQIDAQABo4IBOTCCATUwEgYDVR0TAQH/BAgwBgEB/wIB +ADBBBgNVHSAEOjA4MDYGCmCGSAGG+EUBBzYwKDAmBggrBgEFBQcCARYaaHR0cHM6 +Ly93d3cudGhhd3RlLmNvbS9jcHMwDgYDVR0PAQH/BAQDAgEGMC4GCCsGAQUFBwEB +BCIwIDAeBggrBgEFBQcwAYYSaHR0cDovL3Quc3ltY2QuY29tMDEGA1UdHwQqMCgw +JqAkoCKGIGh0dHA6Ly90LnN5bWNiLmNvbS9UaGF3dGVQQ0EuY3JsMCkGA1UdEQQi +MCCkHjAcMRowGAYDVQQDExFTeW1hbnRlY1BLSS0xLTY5ODAdBgNVHQ4EFgQUn7jB +qWzy9cAiKpTtXJms1OzXxgcwHwYDVR0jBBgwFoAUe1tFz6/Oy3r9MZIaarbzRutX +SFAwDQYJKoZIhvcNAQELBQADggEBAFNU8keoAtfvqjV4vkoIDZAYS22eKlMr6VQX +d3QpftA3BwW45Pq4tGOYRNzGT4EGjDq+xzBXxnD81pMZn8NV1z4fcoqdMFo1lzLL +Y+TGct/7aMppL9vNUDg+K7urO4LH/UubvXxBmO8BU9g1jyXJAwbmnFfBUQ+e9n2T +Tfh2yDpr9MSPMzJ/nSGENNmn+ZL6QZFhhAWdo3lGzmfngfJerEy8qKtqbRXinE5a +2WOAvPdC65pExoxrBja0izKJ3sLxqCaqqaz/6nGm54xB+hc1u7OHMamTwshY4QpO +lYOcue07pe8I4HT5wxvmB6PuB9dCInkhoKHUHSbT0NamXStBwHk= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_34[] = { + 0x30, 0x82, 0x04, 0xd2, 0x30, 0x82, 0x03, 0xba, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x2c, 0x69, 0xe1, 0x2f, 0x6a, 0x67, 0x0b, 0xd9, 0x9d, + 0xd2, 0x0f, 0x91, 0x9e, 0xf0, 0x9e, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x36, 0x31, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, + 0x36, 0x30, 0x39, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x63, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x14, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x20, 0x53, 0x53, 0x4c, 0x31, 0x1e, 0x30, 0x1c, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x15, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, + 0x20, 0x44, 0x56, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, + 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xea, 0x94, 0x07, 0x85, 0xc8, 0x41, 0x2c, 0xf6, 0x83, 0x12, 0x6c, 0x92, + 0x5f, 0xab, 0x1f, 0x00, 0xd4, 0x96, 0x6f, 0x74, 0xcd, 0x2e, 0x11, 0xe9, + 0x6c, 0x0f, 0x39, 0x01, 0xb9, 0x48, 0x90, 0x40, 0x39, 0x4d, 0xc4, 0xa2, + 0xc8, 0x79, 0x6a, 0xa5, 0x9a, 0xbd, 0x91, 0x44, 0x65, 0x77, 0x54, 0xad, + 0xff, 0x25, 0x5f, 0xee, 0x42, 0xfb, 0xb3, 0x02, 0x0f, 0xea, 0x5d, 0x7a, + 0xdd, 0x1a, 0x54, 0x9e, 0xd7, 0x73, 0x42, 0x9b, 0xcc, 0x79, 0x5f, 0xc5, + 0x4d, 0xf4, 0xb7, 0x0b, 0x18, 0x39, 0x20, 0x7a, 0xdd, 0x50, 0x01, 0x5d, + 0x34, 0x45, 0x5f, 0x4c, 0x11, 0x0e, 0xf5, 0x87, 0x26, 0x26, 0xb4, 0xb0, + 0xf3, 0x7e, 0x71, 0xa0, 0x31, 0x71, 0x50, 0x89, 0x68, 0x5a, 0x63, 0x8a, + 0x14, 0x62, 0xe5, 0x8c, 0x3a, 0x16, 0x55, 0x0d, 0x3e, 0xeb, 0xaa, 0x80, + 0x1d, 0x71, 0x7a, 0xe3, 0x87, 0x07, 0xab, 0xbd, 0xa2, 0x74, 0xcd, 0xda, + 0x08, 0x01, 0x9d, 0x1b, 0xcc, 0x27, 0x88, 0x8c, 0x47, 0xd4, 0x69, 0x25, + 0x42, 0xd6, 0xbb, 0x50, 0x6d, 0x85, 0x50, 0xd0, 0x48, 0x82, 0x0d, 0x08, + 0x9f, 0xe9, 0x23, 0xe3, 0x42, 0xc6, 0x3c, 0x98, 0xb8, 0xbb, 0x6e, 0xc5, + 0x70, 0x13, 0xdf, 0x19, 0x1d, 0x01, 0xfd, 0xd2, 0xb5, 0x4e, 0xe6, 0x62, + 0xf4, 0x07, 0xfa, 0x6b, 0x7d, 0x11, 0x77, 0xc4, 0x62, 0x4f, 0x40, 0x4e, + 0xa5, 0x78, 0x97, 0xab, 0x2c, 0x4d, 0x0c, 0xa7, 0x7c, 0xc3, 0xc4, 0x50, + 0x32, 0x9f, 0xd0, 0x70, 0x9b, 0x0f, 0xff, 0xff, 0x75, 0x59, 0x34, 0x85, + 0xad, 0x49, 0xd5, 0x35, 0xee, 0x4f, 0x5b, 0xd4, 0xd4, 0x36, 0x95, 0xa0, + 0x7e, 0xe8, 0xc5, 0xa1, 0x1c, 0xbd, 0x13, 0x4e, 0x7d, 0xee, 0x63, 0x6a, + 0x96, 0x19, 0x99, 0xc8, 0xa7, 0x2a, 0x00, 0xe6, 0x51, 0x8d, 0x46, 0xeb, + 0x30, 0x58, 0xe8, 0x2d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, + 0x39, 0x30, 0x82, 0x01, 0x35, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3a, 0x30, 0x38, + 0x30, 0x36, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, + 0x07, 0x36, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0e, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, + 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, + 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x74, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a, 0x30, 0x28, 0x30, + 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x74, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, + 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, + 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x36, 0x39, 0x38, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x9f, 0xb8, 0xc1, + 0xa9, 0x6c, 0xf2, 0xf5, 0xc0, 0x22, 0x2a, 0x94, 0xed, 0x5c, 0x99, 0xac, + 0xd4, 0xec, 0xd7, 0xc6, 0x07, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, + 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7b, 0x5b, 0x45, 0xcf, 0xaf, 0xce, + 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, 0x6a, 0xb6, 0xf3, 0x46, 0xeb, 0x57, + 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x53, 0x54, + 0xf2, 0x47, 0xa8, 0x02, 0xd7, 0xef, 0xaa, 0x35, 0x78, 0xbe, 0x4a, 0x08, + 0x0d, 0x90, 0x18, 0x4b, 0x6d, 0x9e, 0x2a, 0x53, 0x2b, 0xe9, 0x54, 0x17, + 0x77, 0x74, 0x29, 0x7e, 0xd0, 0x37, 0x07, 0x05, 0xb8, 0xe4, 0xfa, 0xb8, + 0xb4, 0x63, 0x98, 0x44, 0xdc, 0xc6, 0x4f, 0x81, 0x06, 0x8c, 0x3a, 0xbe, + 0xc7, 0x30, 0x57, 0xc6, 0x70, 0xfc, 0xd6, 0x93, 0x19, 0x9f, 0xc3, 0x55, + 0xd7, 0x3e, 0x1f, 0x72, 0x8a, 0x9d, 0x30, 0x5a, 0x35, 0x97, 0x32, 0xcb, + 0x63, 0xe4, 0xc6, 0x72, 0xdf, 0xfb, 0x68, 0xca, 0x69, 0x2f, 0xdb, 0xcd, + 0x50, 0x38, 0x3e, 0x2b, 0xbb, 0xab, 0x3b, 0x82, 0xc7, 0xfd, 0x4b, 0x9b, + 0xbd, 0x7c, 0x41, 0x98, 0xef, 0x01, 0x53, 0xd8, 0x35, 0x8f, 0x25, 0xc9, + 0x03, 0x06, 0xe6, 0x9c, 0x57, 0xc1, 0x51, 0x0f, 0x9e, 0xf6, 0x7d, 0x93, + 0x4d, 0xf8, 0x76, 0xc8, 0x3a, 0x6b, 0xf4, 0xc4, 0x8f, 0x33, 0x32, 0x7f, + 0x9d, 0x21, 0x84, 0x34, 0xd9, 0xa7, 0xf9, 0x92, 0xfa, 0x41, 0x91, 0x61, + 0x84, 0x05, 0x9d, 0xa3, 0x79, 0x46, 0xce, 0x67, 0xe7, 0x81, 0xf2, 0x5e, + 0xac, 0x4c, 0xbc, 0xa8, 0xab, 0x6a, 0x6d, 0x15, 0xe2, 0x9c, 0x4e, 0x5a, + 0xd9, 0x63, 0x80, 0xbc, 0xf7, 0x42, 0xeb, 0x9a, 0x44, 0xc6, 0x8c, 0x6b, + 0x06, 0x36, 0xb4, 0x8b, 0x32, 0x89, 0xde, 0xc2, 0xf1, 0xa8, 0x26, 0xaa, + 0xa9, 0xac, 0xff, 0xea, 0x71, 0xa6, 0xe7, 0x8c, 0x41, 0xfa, 0x17, 0x35, + 0xbb, 0xb3, 0x87, 0x31, 0xa9, 0x93, 0xc2, 0xc8, 0x58, 0xe1, 0x0a, 0x4e, + 0x95, 0x83, 0x9c, 0xb9, 0xed, 0x3b, 0xa5, 0xef, 0x08, 0xe0, 0x74, 0xf9, + 0xc3, 0x1b, 0xe6, 0x07, 0xa3, 0xee, 0x07, 0xd7, 0x42, 0x22, 0x79, 0x21, + 0xa0, 0xa1, 0xd4, 0x1d, 0x26, 0xd3, 0xd0, 0xd6, 0xa6, 0x5d, 0x2b, 0x41, + 0xc0, 0x79, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 4f:e3:e2:65:21:07:ab:20:37:41:6e:48:70:ce:d2:c2 + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=SE, O=AddTrust AB, OU=AddTrust External TTP Network, CN=AddTrust External CA Root + Validity + Not Before: May 25 00:00:00 2010 GMT + Not After : May 30 10:48:38 2020 GMT + Subject: C=US, O=Trusted Secure Certificate Authority, CN=Trusted Secure Certificate Authority + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:80:0b:42:c6:06:6c:cf:22:b3:1a:9e:11:2e:42: + 6e:39:bf:e8:12:af:3c:42:21:12:95:40:5d:32:b1: + 6d:1c:21:d1:34:e5:4f:a8:d1:43:a2:26:4e:30:7d: + 73:44:2c:73:aa:c5:4d:66:01:19:d2:ea:50:59:65: + d0:68:9d:05:a0:7c:a1:79:53:d0:21:90:59:0e:37: + db:1e:dc:92:a7:8b:0d:c4:f5:f8:e6:ff:b5:35:1a: + da:a8:b6:9b:20:85:65:c4:a2:4d:df:f3:94:4d:63: + 7e:ee:89:07:af:fe:e1:ba:00:15:2d:c6:77:8e:a3: + fe:ad:cf:26:54:5a:df:fc:d2:de:c2:ad:f6:b2:23: + fd:a8:83:e5:65:bd:27:f7:27:1a:18:59:6a:9e:14: + f6:b4:86:ff:1c:58:14:43:73:96:24:bf:10:43:d5: + 5c:89:f0:ce:f7:e1:96:16:5e:18:4a:27:28:90:80: + 18:fc:32:fe:f4:c7:b8:d6:82:3d:35:af:bb:4a:1c: + 5b:05:78:f6:fd:55:3e:82:74:b2:73:b8:89:4e:f7: + 1b:85:9a:d8:ca:b1:5a:b1:00:20:41:14:30:2b:14: + 24:ed:37:0e:32:3e:23:88:39:7e:b9:d9:38:03:e2: + 4c:d9:0d:43:41:33:10:eb:30:72:53:88:f7:52:9b: + 4f:81 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Authority Key Identifier: + keyid:AD:BD:98:7A:34:B4:26:F7:FA:C4:26:54:EF:03:BD:E0:24:CB:54:1A + + X509v3 Subject Key Identifier: + CC:03:5B:96:5A:9E:16:CC:26:1E:BD:A3:70:FB:E3:CB:79:19:FC:4D + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: 1.3.6.1.4.1.6449.1.2.2.8 + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.usertrust.com/AddTrustExternalCARoot.crl + + Authority Information Access: + CA Issuers - URI:http://crt.usertrust.com/AddTrustExternalCARoot.p7c + CA Issuers - URI:http://crt.usertrust.com/AddTrustUTNSGCCA.crt + OCSP - URI:http://ocsp.usertrust.com + + Signature Algorithm: sha1WithRSAEncryption + 7b:f0:fc:a1:28:47:bc:2b:b4:04:73:3f:4b:dd:1e:d1:b9:cd: + 1c:ed:7d:e5:e8:cb:51:f4:92:bf:dd:9c:0d:5c:6e:1d:95:ed: + 5b:70:50:89:d4:67:9a:15:54:d1:90:0a:fa:09:68:06:18:bb: + d7:27:e4:93:ff:43:48:81:3b:c8:59:49:35:ea:ac:b6:ae:46: + b5:d4:f3:b8:c3:c6:e4:91:bf:c9:34:fd:7e:d0:59:6e:61:a1: + 1f:48:63:54:b2:7d:46:bf:c8:fa:c3:bf:48:58:98:f6:69:84: + a7:16:69:08:27:a4:22:cb:a2:2c:c8:df:6e:a9:ee:f8:41:df: + 1b:a8:b7:f3:e3:ae:ce:a3:fe:d9:27:60:50:3f:04:7d:7a:44: + ea:76:42:5c:d3:55:46:ef:27:c5:6a:4a:80:e7:35:a0:91:c6: + 1b:a6:86:9c:5a:3b:04:83:54:34:d7:d1:88:a6:36:e9:7f:40: + 27:da:56:0a:50:21:9d:29:8b:a0:84:ec:fe:71:23:53:04:18: + 19:70:67:86:44:95:72:40:55:f6:dd:a3:b4:3d:2d:09:60:a5: + e7:5f:fc:ac:3b:ec:0c:91:9f:f8:ee:6a:ba:b2:3c:fd:95:7d: + 9a:07:f4:b0:65:43:a2:f6:df:7d:b8:21:49:84:04:ee:bd:ce: + 53:8f:0f:29 +-----BEGIN CERTIFICATE----- +MIIE5DCCA8ygAwIBAgIQT+PiZSEHqyA3QW5IcM7SwjANBgkqhkiG9w0BAQUFADBv +MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk +ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF +eHRlcm5hbCBDQSBSb290MB4XDTEwMDUyNTAwMDAwMFoXDTIwMDUzMDEwNDgzOFow +azELMAkGA1UEBhMCVVMxLTArBgNVBAoTJFRydXN0ZWQgU2VjdXJlIENlcnRpZmlj +YXRlIEF1dGhvcml0eTEtMCsGA1UEAxMkVHJ1c3RlZCBTZWN1cmUgQ2VydGlmaWNh +dGUgQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgAtC +xgZszyKzGp4RLkJuOb/oEq88QiESlUBdMrFtHCHRNOVPqNFDoiZOMH1zRCxzqsVN +ZgEZ0upQWWXQaJ0FoHyheVPQIZBZDjfbHtySp4sNxPX45v+1NRraqLabIIVlxKJN +3/OUTWN+7okHr/7hugAVLcZ3jqP+rc8mVFrf/NLewq32siP9qIPlZb0n9ycaGFlq +nhT2tIb/HFgUQ3OWJL8QQ9VcifDO9+GWFl4YSicokIAY/DL+9Me41oI9Na+7Shxb +BXj2/VU+gnSyc7iJTvcbhZrYyrFasQAgQRQwKxQk7TcOMj4jiDl+udk4A+JM2Q1D +QTMQ6zByU4j3UptPgQIDAQABo4IBfjCCAXowHwYDVR0jBBgwFoAUrb2YejS0Jvf6 +xCZU7wO94CTLVBowHQYDVR0OBBYEFMwDW5ZanhbMJh69o3D748t5GfxNMA4GA1Ud +DwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMBgGA1UdIAQRMA8wDQYLKwYB +BAGyMQECAggwRAYDVR0fBD0wOzA5oDegNYYzaHR0cDovL2NybC51c2VydHJ1c3Qu +Y29tL0FkZFRydXN0RXh0ZXJuYWxDQVJvb3QuY3JsMIGzBggrBgEFBQcBAQSBpjCB +ozA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL0FkZFRydXN0 +RXh0ZXJuYWxDQVJvb3QucDdjMDkGCCsGAQUFBzAChi1odHRwOi8vY3J0LnVzZXJ0 +cnVzdC5jb20vQWRkVHJ1c3RVVE5TR0NDQS5jcnQwJQYIKwYBBQUHMAGGGWh0dHA6 +Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEFBQADggEBAHvw/KEoR7wr +tARzP0vdHtG5zRztfeXoy1H0kr/dnA1cbh2V7VtwUInUZ5oVVNGQCvoJaAYYu9cn +5JP/Q0iBO8hZSTXqrLauRrXU87jDxuSRv8k0/X7QWW5hoR9IY1SyfUa/yPrDv0hY +mPZphKcWaQgnpCLLoizI326p7vhB3xuot/Pjrs6j/tknYFA/BH16ROp2QlzTVUbv +J8VqSoDnNaCRxhumhpxaOwSDVDTX0YimNul/QCfaVgpQIZ0pi6CE7P5xI1MEGBlw +Z4ZElXJAVfbdo7Q9LQlgpedf/Kw77AyRn/juarqyPP2VfZoH9LBlQ6L23324IUmE +BO69zlOPDyk= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_35[] = { + 0x30, 0x82, 0x04, 0xe4, 0x30, 0x82, 0x03, 0xcc, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x4f, 0xe3, 0xe2, 0x65, 0x21, 0x07, 0xab, 0x20, 0x37, + 0x41, 0x6e, 0x48, 0x70, 0xce, 0xd2, 0xc2, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x6f, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x53, + 0x45, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0b, + 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x41, 0x42, 0x31, + 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x64, + 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x20, 0x54, 0x54, 0x50, 0x20, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x19, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x43, 0x41, 0x20, 0x52, + 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x35, 0x32, + 0x35, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, + 0x30, 0x35, 0x33, 0x30, 0x31, 0x30, 0x34, 0x38, 0x33, 0x38, 0x5a, 0x30, + 0x6b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x24, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x20, 0x53, 0x65, 0x63, + 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, + 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x20, 0x53, 0x65, 0x63, 0x75, + 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x80, 0x0b, 0x42, + 0xc6, 0x06, 0x6c, 0xcf, 0x22, 0xb3, 0x1a, 0x9e, 0x11, 0x2e, 0x42, 0x6e, + 0x39, 0xbf, 0xe8, 0x12, 0xaf, 0x3c, 0x42, 0x21, 0x12, 0x95, 0x40, 0x5d, + 0x32, 0xb1, 0x6d, 0x1c, 0x21, 0xd1, 0x34, 0xe5, 0x4f, 0xa8, 0xd1, 0x43, + 0xa2, 0x26, 0x4e, 0x30, 0x7d, 0x73, 0x44, 0x2c, 0x73, 0xaa, 0xc5, 0x4d, + 0x66, 0x01, 0x19, 0xd2, 0xea, 0x50, 0x59, 0x65, 0xd0, 0x68, 0x9d, 0x05, + 0xa0, 0x7c, 0xa1, 0x79, 0x53, 0xd0, 0x21, 0x90, 0x59, 0x0e, 0x37, 0xdb, + 0x1e, 0xdc, 0x92, 0xa7, 0x8b, 0x0d, 0xc4, 0xf5, 0xf8, 0xe6, 0xff, 0xb5, + 0x35, 0x1a, 0xda, 0xa8, 0xb6, 0x9b, 0x20, 0x85, 0x65, 0xc4, 0xa2, 0x4d, + 0xdf, 0xf3, 0x94, 0x4d, 0x63, 0x7e, 0xee, 0x89, 0x07, 0xaf, 0xfe, 0xe1, + 0xba, 0x00, 0x15, 0x2d, 0xc6, 0x77, 0x8e, 0xa3, 0xfe, 0xad, 0xcf, 0x26, + 0x54, 0x5a, 0xdf, 0xfc, 0xd2, 0xde, 0xc2, 0xad, 0xf6, 0xb2, 0x23, 0xfd, + 0xa8, 0x83, 0xe5, 0x65, 0xbd, 0x27, 0xf7, 0x27, 0x1a, 0x18, 0x59, 0x6a, + 0x9e, 0x14, 0xf6, 0xb4, 0x86, 0xff, 0x1c, 0x58, 0x14, 0x43, 0x73, 0x96, + 0x24, 0xbf, 0x10, 0x43, 0xd5, 0x5c, 0x89, 0xf0, 0xce, 0xf7, 0xe1, 0x96, + 0x16, 0x5e, 0x18, 0x4a, 0x27, 0x28, 0x90, 0x80, 0x18, 0xfc, 0x32, 0xfe, + 0xf4, 0xc7, 0xb8, 0xd6, 0x82, 0x3d, 0x35, 0xaf, 0xbb, 0x4a, 0x1c, 0x5b, + 0x05, 0x78, 0xf6, 0xfd, 0x55, 0x3e, 0x82, 0x74, 0xb2, 0x73, 0xb8, 0x89, + 0x4e, 0xf7, 0x1b, 0x85, 0x9a, 0xd8, 0xca, 0xb1, 0x5a, 0xb1, 0x00, 0x20, + 0x41, 0x14, 0x30, 0x2b, 0x14, 0x24, 0xed, 0x37, 0x0e, 0x32, 0x3e, 0x23, + 0x88, 0x39, 0x7e, 0xb9, 0xd9, 0x38, 0x03, 0xe2, 0x4c, 0xd9, 0x0d, 0x43, + 0x41, 0x33, 0x10, 0xeb, 0x30, 0x72, 0x53, 0x88, 0xf7, 0x52, 0x9b, 0x4f, + 0x81, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x7e, 0x30, 0x82, + 0x01, 0x7a, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0xad, 0xbd, 0x98, 0x7a, 0x34, 0xb4, 0x26, 0xf7, 0xfa, + 0xc4, 0x26, 0x54, 0xef, 0x03, 0xbd, 0xe0, 0x24, 0xcb, 0x54, 0x1a, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xcc, 0x03, + 0x5b, 0x96, 0x5a, 0x9e, 0x16, 0xcc, 0x26, 0x1e, 0xbd, 0xa3, 0x70, 0xfb, + 0xe3, 0xcb, 0x79, 0x19, 0xfc, 0x4d, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, + 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x18, 0x06, 0x03, 0x55, 0x1d, + 0x20, 0x04, 0x11, 0x30, 0x0f, 0x30, 0x0d, 0x06, 0x0b, 0x2b, 0x06, 0x01, + 0x04, 0x01, 0xb2, 0x31, 0x01, 0x02, 0x02, 0x08, 0x30, 0x44, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x3d, 0x30, 0x3b, 0x30, 0x39, 0xa0, 0x37, 0xa0, + 0x35, 0x86, 0x33, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x41, 0x52, 0x6f, + 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x81, 0xb3, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x81, 0xa6, 0x30, 0x81, + 0xa3, 0x30, 0x3f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x02, 0x86, 0x33, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x74, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x41, 0x52, 0x6f, + 0x6f, 0x74, 0x2e, 0x70, 0x37, 0x63, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x74, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x64, 0x64, + 0x54, 0x72, 0x75, 0x73, 0x74, 0x55, 0x54, 0x4e, 0x53, 0x47, 0x43, 0x43, + 0x41, 0x2e, 0x63, 0x72, 0x74, 0x30, 0x25, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x19, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x7b, 0xf0, 0xfc, 0xa1, 0x28, 0x47, 0xbc, 0x2b, + 0xb4, 0x04, 0x73, 0x3f, 0x4b, 0xdd, 0x1e, 0xd1, 0xb9, 0xcd, 0x1c, 0xed, + 0x7d, 0xe5, 0xe8, 0xcb, 0x51, 0xf4, 0x92, 0xbf, 0xdd, 0x9c, 0x0d, 0x5c, + 0x6e, 0x1d, 0x95, 0xed, 0x5b, 0x70, 0x50, 0x89, 0xd4, 0x67, 0x9a, 0x15, + 0x54, 0xd1, 0x90, 0x0a, 0xfa, 0x09, 0x68, 0x06, 0x18, 0xbb, 0xd7, 0x27, + 0xe4, 0x93, 0xff, 0x43, 0x48, 0x81, 0x3b, 0xc8, 0x59, 0x49, 0x35, 0xea, + 0xac, 0xb6, 0xae, 0x46, 0xb5, 0xd4, 0xf3, 0xb8, 0xc3, 0xc6, 0xe4, 0x91, + 0xbf, 0xc9, 0x34, 0xfd, 0x7e, 0xd0, 0x59, 0x6e, 0x61, 0xa1, 0x1f, 0x48, + 0x63, 0x54, 0xb2, 0x7d, 0x46, 0xbf, 0xc8, 0xfa, 0xc3, 0xbf, 0x48, 0x58, + 0x98, 0xf6, 0x69, 0x84, 0xa7, 0x16, 0x69, 0x08, 0x27, 0xa4, 0x22, 0xcb, + 0xa2, 0x2c, 0xc8, 0xdf, 0x6e, 0xa9, 0xee, 0xf8, 0x41, 0xdf, 0x1b, 0xa8, + 0xb7, 0xf3, 0xe3, 0xae, 0xce, 0xa3, 0xfe, 0xd9, 0x27, 0x60, 0x50, 0x3f, + 0x04, 0x7d, 0x7a, 0x44, 0xea, 0x76, 0x42, 0x5c, 0xd3, 0x55, 0x46, 0xef, + 0x27, 0xc5, 0x6a, 0x4a, 0x80, 0xe7, 0x35, 0xa0, 0x91, 0xc6, 0x1b, 0xa6, + 0x86, 0x9c, 0x5a, 0x3b, 0x04, 0x83, 0x54, 0x34, 0xd7, 0xd1, 0x88, 0xa6, + 0x36, 0xe9, 0x7f, 0x40, 0x27, 0xda, 0x56, 0x0a, 0x50, 0x21, 0x9d, 0x29, + 0x8b, 0xa0, 0x84, 0xec, 0xfe, 0x71, 0x23, 0x53, 0x04, 0x18, 0x19, 0x70, + 0x67, 0x86, 0x44, 0x95, 0x72, 0x40, 0x55, 0xf6, 0xdd, 0xa3, 0xb4, 0x3d, + 0x2d, 0x09, 0x60, 0xa5, 0xe7, 0x5f, 0xfc, 0xac, 0x3b, 0xec, 0x0c, 0x91, + 0x9f, 0xf8, 0xee, 0x6a, 0xba, 0xb2, 0x3c, 0xfd, 0x95, 0x7d, 0x9a, 0x07, + 0xf4, 0xb0, 0x65, 0x43, 0xa2, 0xf6, 0xdf, 0x7d, 0xb8, 0x21, 0x49, 0x84, + 0x04, 0xee, 0xbd, 0xce, 0x53, 0x8f, 0x0f, 0x29, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 946072060 (0x3863e9fc) + Signature Algorithm: sha1WithRSAEncryption + Issuer: O=Entrust.net, OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Certification Authority (2048) + Validity + Not Before: Dec 10 20:43:54 2009 GMT + Not After : Dec 10 21:13:54 2019 GMT + Subject: C=US, O=Entrust, Inc., OU=www.entrust.net/rpa is incorporated by reference, OU=(c) 2009 Entrust, Inc., CN=Entrust Certification Authority - L1C + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:97:a3:2d:3c:9e:de:05:da:13:c2:11:8d:9d:8e: + e3:7f:c7:4b:7e:5a:9f:b3:ff:62:ab:73:c8:28:6b: + ba:10:64:82:87:13:cd:57:18:ff:28:ce:c0:e6:0e: + 06:91:50:29:83:d1:f2:c3:2a:db:d8:db:4e:04:cc: + 00:eb:8b:b6:96:dc:bc:aa:fa:52:77:04:c1:db:19: + e4:ae:9c:fd:3c:8b:03:ef:4d:bc:1a:03:65:f9:c1: + b1:3f:72:86:f2:38:aa:19:ae:10:88:78:28:da:75: + c3:3d:02:82:02:9c:b9:c1:65:77:76:24:4c:98:f7: + 6d:31:38:fb:db:fe:db:37:02:76:a1:18:97:a6:cc: + de:20:09:49:36:24:69:42:f6:e4:37:62:f1:59:6d: + a9:3c:ed:34:9c:a3:8e:db:dc:3a:d7:f7:0a:6f:ef: + 2e:d8:d5:93:5a:7a:ed:08:49:68:e2:41:e3:5a:90: + c1:86:55:fc:51:43:9d:e0:b2:c4:67:b4:cb:32:31: + 25:f0:54:9f:4b:d1:6f:db:d4:dd:fc:af:5e:6c:78: + 90:95:de:ca:3a:48:b9:79:3c:9b:19:d6:75:05:a0: + f9:88:d7:c1:e8:a5:09:e4:1a:15:dc:87:23:aa:b2: + 75:8c:63:25:87:d8:f8:3d:a6:c2:cc:66:ff:a5:66: + 68:55 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Basic Constraints: critical + CA:TRUE + Authority Information Access: + OCSP - URI:http://ocsp.entrust.net + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.entrust.net/2048ca.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: http://www.entrust.net/rpa + + X509v3 Subject Key Identifier: + 1E:F1:AB:89:06:F8:49:0F:01:33:77:EE:14:7A:EE:19:7C:93:28:4D + X509v3 Authority Key Identifier: + keyid:55:E4:81:D1:11:80:BE:D8:89:B9:08:A3:31:F9:A1:24:09:16:B9:70 + + Signature Algorithm: sha1WithRSAEncryption + 07:f6:5f:82:84:7f:80:40:c7:90:34:46:42:24:03:ce:2f:ab: + ba:83:9e:25:73:0d:ed:ac:05:69:c6:87:ed:a3:5c:f2:57:c1: + b1:49:76:9a:4d:f2:3f:dd:e4:0e:fe:0b:3e:b9:98:d9:32:95: + 1d:32:f4:01:ee:9c:c8:c8:e5:3f:e0:53:76:62:fc:dd:ab:6d: + 3d:94:90:f2:c0:b3:3c:98:27:36:5e:28:97:22:fc:1b:40:d3: + 2b:0d:ad:b5:57:6d:df:0f:e3:4b:ef:73:02:10:65:fa:1b:d0: + ac:31:d5:e3:0f:e8:ba:32:30:83:ee:4a:d0:bf:df:22:90:7a: + be:ec:3a:1b:c4:49:04:1d:f1:ae:80:77:3c:42:08:db:a7:3b: + 28:a6:80:01:03:e6:39:a3:eb:df:80:59:1b:f3:2c:be:dc:72: + 44:79:a0:6c:07:a5:6d:4d:44:8e:42:68:ca:94:7c:2e:36:ba: + 85:9e:cd:aa:c4:5e:3c:54:be:fe:2f:ea:69:9d:1c:1e:29:9b: + 96:d8:c8:fe:51:90:f1:24:a6:90:06:b3:f0:29:a2:ff:78:2e: + 77:5c:45:21:d9:44:00:31:f3:be:32:4f:f5:0a:32:0d:fc:fc: + ba:16:76:56:b2:d6:48:92:f2:8b:a6:3e:b7:ac:5c:69:ea:0b: + 3f:66:45:b9 +-----BEGIN CERTIFICATE----- +MIIE8jCCA9qgAwIBAgIEOGPp/DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML +RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp +bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 +IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw0wOTEyMTAyMDQzNTRaFw0xOTEy +MTAyMTEzNTRaMIGxMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5j +LjE5MDcGA1UECxMwd3d3LmVudHJ1c3QubmV0L3JwYSBpcyBpbmNvcnBvcmF0ZWQg +YnkgcmVmZXJlbmNlMR8wHQYDVQQLExYoYykgMjAwOSBFbnRydXN0LCBJbmMuMS4w +LAYDVQQDEyVFbnRydXN0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gTDFDMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl6MtPJ7eBdoTwhGNnY7jf8dL +flqfs/9iq3PIKGu6EGSChxPNVxj/KM7A5g4GkVApg9Hywyrb2NtOBMwA64u2lty8 +qvpSdwTB2xnkrpz9PIsD7028GgNl+cGxP3KG8jiqGa4QiHgo2nXDPQKCApy5wWV3 +diRMmPdtMTj72/7bNwJ2oRiXpszeIAlJNiRpQvbkN2LxWW2pPO00nKOO29w61/cK +b+8u2NWTWnrtCElo4kHjWpDBhlX8UUOd4LLEZ7TLMjEl8FSfS9Fv29Td/K9ebHiQ +ld7KOki5eTybGdZ1BaD5iNfB6KUJ5BoV3IcjqrJ1jGMlh9j4PabCzGb/pWZoVQID +AQABo4IBCzCCAQcwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wMwYI +KwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5lbnRydXN0Lm5l +dDAyBgNVHR8EKzApMCegJaAjhiFodHRwOi8vY3JsLmVudHJ1c3QubmV0LzIwNDhj +YS5jcmwwOwYDVR0gBDQwMjAwBgRVHSAAMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly93 +d3cuZW50cnVzdC5uZXQvcnBhMB0GA1UdDgQWBBQe8auJBvhJDwEzd+4Ueu4ZfJMo +TTAfBgNVHSMEGDAWgBRV5IHREYC+2Im5CKMx+aEkCRa5cDANBgkqhkiG9w0BAQUF +AAOCAQEAB/ZfgoR/gEDHkDRGQiQDzi+ruoOeJXMN7awFacaH7aNc8lfBsUl2mk3y +P93kDv4LPrmY2TKVHTL0Ae6cyMjlP+BTdmL83attPZSQ8sCzPJgnNl4olyL8G0DT +Kw2ttVdt3w/jS+9zAhBl+hvQrDHV4w/oujIwg+5K0L/fIpB6vuw6G8RJBB3xroB3 +PEII26c7KKaAAQPmOaPr34BZG/MsvtxyRHmgbAelbU1EjkJoypR8Lja6hZ7NqsRe +PFS+/i/qaZ0cHimbltjI/lGQ8SSmkAaz8Cmi/3gud1xFIdlEADHzvjJP9QoyDfz8 +uhZ2VrLWSJLyi6Y+t6xcaeoLP2ZFuQ== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_36[] = { + 0x30, 0x82, 0x04, 0xf2, 0x30, 0x82, 0x03, 0xda, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x38, 0x63, 0xe9, 0xfc, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, + 0xb4, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0b, + 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x31, + 0x40, 0x30, 0x3e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x14, 0x37, 0x77, 0x77, + 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, + 0x74, 0x2f, 0x43, 0x50, 0x53, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x20, 0x69, + 0x6e, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x20, 0x62, 0x79, 0x20, 0x72, 0x65, + 0x66, 0x2e, 0x20, 0x28, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x20, 0x6c, + 0x69, 0x61, 0x62, 0x2e, 0x29, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x1c, 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x39, + 0x20, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, + 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x33, 0x30, 0x31, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2a, 0x45, 0x6e, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x28, 0x32, 0x30, 0x34, 0x38, + 0x29, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x39, 0x31, 0x32, 0x31, 0x30, 0x32, + 0x30, 0x34, 0x33, 0x35, 0x34, 0x5a, 0x17, 0x0d, 0x31, 0x39, 0x31, 0x32, + 0x31, 0x30, 0x32, 0x31, 0x31, 0x33, 0x35, 0x34, 0x5a, 0x30, 0x81, 0xb1, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, + 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x30, + 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x70, 0x61, 0x20, 0x69, 0x73, 0x20, 0x69, + 0x6e, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, + 0x62, 0x79, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x28, + 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x39, 0x20, 0x45, 0x6e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x2e, 0x30, + 0x2c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x25, 0x45, 0x6e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x4c, 0x31, 0x43, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x97, 0xa3, 0x2d, 0x3c, 0x9e, 0xde, + 0x05, 0xda, 0x13, 0xc2, 0x11, 0x8d, 0x9d, 0x8e, 0xe3, 0x7f, 0xc7, 0x4b, + 0x7e, 0x5a, 0x9f, 0xb3, 0xff, 0x62, 0xab, 0x73, 0xc8, 0x28, 0x6b, 0xba, + 0x10, 0x64, 0x82, 0x87, 0x13, 0xcd, 0x57, 0x18, 0xff, 0x28, 0xce, 0xc0, + 0xe6, 0x0e, 0x06, 0x91, 0x50, 0x29, 0x83, 0xd1, 0xf2, 0xc3, 0x2a, 0xdb, + 0xd8, 0xdb, 0x4e, 0x04, 0xcc, 0x00, 0xeb, 0x8b, 0xb6, 0x96, 0xdc, 0xbc, + 0xaa, 0xfa, 0x52, 0x77, 0x04, 0xc1, 0xdb, 0x19, 0xe4, 0xae, 0x9c, 0xfd, + 0x3c, 0x8b, 0x03, 0xef, 0x4d, 0xbc, 0x1a, 0x03, 0x65, 0xf9, 0xc1, 0xb1, + 0x3f, 0x72, 0x86, 0xf2, 0x38, 0xaa, 0x19, 0xae, 0x10, 0x88, 0x78, 0x28, + 0xda, 0x75, 0xc3, 0x3d, 0x02, 0x82, 0x02, 0x9c, 0xb9, 0xc1, 0x65, 0x77, + 0x76, 0x24, 0x4c, 0x98, 0xf7, 0x6d, 0x31, 0x38, 0xfb, 0xdb, 0xfe, 0xdb, + 0x37, 0x02, 0x76, 0xa1, 0x18, 0x97, 0xa6, 0xcc, 0xde, 0x20, 0x09, 0x49, + 0x36, 0x24, 0x69, 0x42, 0xf6, 0xe4, 0x37, 0x62, 0xf1, 0x59, 0x6d, 0xa9, + 0x3c, 0xed, 0x34, 0x9c, 0xa3, 0x8e, 0xdb, 0xdc, 0x3a, 0xd7, 0xf7, 0x0a, + 0x6f, 0xef, 0x2e, 0xd8, 0xd5, 0x93, 0x5a, 0x7a, 0xed, 0x08, 0x49, 0x68, + 0xe2, 0x41, 0xe3, 0x5a, 0x90, 0xc1, 0x86, 0x55, 0xfc, 0x51, 0x43, 0x9d, + 0xe0, 0xb2, 0xc4, 0x67, 0xb4, 0xcb, 0x32, 0x31, 0x25, 0xf0, 0x54, 0x9f, + 0x4b, 0xd1, 0x6f, 0xdb, 0xd4, 0xdd, 0xfc, 0xaf, 0x5e, 0x6c, 0x78, 0x90, + 0x95, 0xde, 0xca, 0x3a, 0x48, 0xb9, 0x79, 0x3c, 0x9b, 0x19, 0xd6, 0x75, + 0x05, 0xa0, 0xf9, 0x88, 0xd7, 0xc1, 0xe8, 0xa5, 0x09, 0xe4, 0x1a, 0x15, + 0xdc, 0x87, 0x23, 0xaa, 0xb2, 0x75, 0x8c, 0x63, 0x25, 0x87, 0xd8, 0xf8, + 0x3d, 0xa6, 0xc2, 0xcc, 0x66, 0xff, 0xa5, 0x66, 0x68, 0x55, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x0b, 0x30, 0x82, 0x01, 0x07, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x33, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x27, 0x30, 0x25, + 0x30, 0x23, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x17, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, + 0x70, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, + 0x74, 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, + 0x30, 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x32, 0x30, 0x34, 0x38, 0x63, + 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x20, + 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, + 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, + 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, + 0x65, 0x74, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0x1e, 0xf1, 0xab, 0x89, 0x06, 0xf8, 0x49, + 0x0f, 0x01, 0x33, 0x77, 0xee, 0x14, 0x7a, 0xee, 0x19, 0x7c, 0x93, 0x28, + 0x4d, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0x55, 0xe4, 0x81, 0xd1, 0x11, 0x80, 0xbe, 0xd8, 0x89, 0xb9, + 0x08, 0xa3, 0x31, 0xf9, 0xa1, 0x24, 0x09, 0x16, 0xb9, 0x70, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x07, 0xf6, 0x5f, 0x82, 0x84, 0x7f, + 0x80, 0x40, 0xc7, 0x90, 0x34, 0x46, 0x42, 0x24, 0x03, 0xce, 0x2f, 0xab, + 0xba, 0x83, 0x9e, 0x25, 0x73, 0x0d, 0xed, 0xac, 0x05, 0x69, 0xc6, 0x87, + 0xed, 0xa3, 0x5c, 0xf2, 0x57, 0xc1, 0xb1, 0x49, 0x76, 0x9a, 0x4d, 0xf2, + 0x3f, 0xdd, 0xe4, 0x0e, 0xfe, 0x0b, 0x3e, 0xb9, 0x98, 0xd9, 0x32, 0x95, + 0x1d, 0x32, 0xf4, 0x01, 0xee, 0x9c, 0xc8, 0xc8, 0xe5, 0x3f, 0xe0, 0x53, + 0x76, 0x62, 0xfc, 0xdd, 0xab, 0x6d, 0x3d, 0x94, 0x90, 0xf2, 0xc0, 0xb3, + 0x3c, 0x98, 0x27, 0x36, 0x5e, 0x28, 0x97, 0x22, 0xfc, 0x1b, 0x40, 0xd3, + 0x2b, 0x0d, 0xad, 0xb5, 0x57, 0x6d, 0xdf, 0x0f, 0xe3, 0x4b, 0xef, 0x73, + 0x02, 0x10, 0x65, 0xfa, 0x1b, 0xd0, 0xac, 0x31, 0xd5, 0xe3, 0x0f, 0xe8, + 0xba, 0x32, 0x30, 0x83, 0xee, 0x4a, 0xd0, 0xbf, 0xdf, 0x22, 0x90, 0x7a, + 0xbe, 0xec, 0x3a, 0x1b, 0xc4, 0x49, 0x04, 0x1d, 0xf1, 0xae, 0x80, 0x77, + 0x3c, 0x42, 0x08, 0xdb, 0xa7, 0x3b, 0x28, 0xa6, 0x80, 0x01, 0x03, 0xe6, + 0x39, 0xa3, 0xeb, 0xdf, 0x80, 0x59, 0x1b, 0xf3, 0x2c, 0xbe, 0xdc, 0x72, + 0x44, 0x79, 0xa0, 0x6c, 0x07, 0xa5, 0x6d, 0x4d, 0x44, 0x8e, 0x42, 0x68, + 0xca, 0x94, 0x7c, 0x2e, 0x36, 0xba, 0x85, 0x9e, 0xcd, 0xaa, 0xc4, 0x5e, + 0x3c, 0x54, 0xbe, 0xfe, 0x2f, 0xea, 0x69, 0x9d, 0x1c, 0x1e, 0x29, 0x9b, + 0x96, 0xd8, 0xc8, 0xfe, 0x51, 0x90, 0xf1, 0x24, 0xa6, 0x90, 0x06, 0xb3, + 0xf0, 0x29, 0xa2, 0xff, 0x78, 0x2e, 0x77, 0x5c, 0x45, 0x21, 0xd9, 0x44, + 0x00, 0x31, 0xf3, 0xbe, 0x32, 0x4f, 0xf5, 0x0a, 0x32, 0x0d, 0xfc, 0xfc, + 0xba, 0x16, 0x76, 0x56, 0xb2, 0xd6, 0x48, 0x92, 0xf2, 0x8b, 0xa6, 0x3e, + 0xb7, 0xac, 0x5c, 0x69, 0xea, 0x0b, 0x3f, 0x66, 0x45, 0xb9, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 16:90:c3:29:b6:78:06:07:51:1f:05:b0:34:48:46:cb + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=SE, O=AddTrust AB, OU=AddTrust External TTP Network, CN=AddTrust External CA Root + Validity + Not Before: Apr 16 00:00:00 2010 GMT + Not After : May 30 10:48:38 2020 GMT + Subject: C=GB, ST=Greater Manchester, L=Salford, O=COMODO CA Limited, CN=COMODO High-Assurance Secure Server CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:e7:87:da:c0:77:e4:bb:3a:fa:6a:24:c8:80:41: + ac:d2:16:13:15:3d:fa:f7:f8:2a:76:dc:a8:2d:39: + 08:ce:48:4a:be:0f:7d:f0:de:ba:bb:47:d5:bd:2d: + d7:1b:ab:0f:20:81:23:08:72:b1:c0:11:95:0d:e6: + ea:a9:87:ff:c7:6e:1e:4f:66:32:ba:53:bc:05:aa: + 1c:2c:0c:ef:4d:37:47:6b:10:0c:db:c5:a0:98:7e: + 58:db:37:d6:ae:e9:06:bd:d7:a8:65:f3:37:b9:c7: + 6d:ce:77:c7:26:e0:d7:74:1f:a6:98:16:bb:0c:6b: + c8:be:77:d0:ef:58:a7:29:a0:b9:b8:69:05:36:cb: + b2:da:58:a3:0b:75:ad:3d:8b:22:82:20:3e:70:86: + 99:1c:b9:4f:cf:77:a4:07:1a:23:63:d1:38:56:84: + ec:bf:8f:c5:4e:f4:18:96:9b:1a:e8:93:ec:8d:af: + 15:9c:24:f0:5a:3b:e8:0f:b9:a8:5a:01:d3:b2:1c: + 60:c9:9c:52:04:dd:92:a7:fe:0c:ac:e2:45:8d:03: + 61:bc:79:e0:77:2e:87:41:3c:58:5f:cb:f5:c5:77: + f2:58:c8:4d:28:d0:9a:fa:f3:73:09:24:68:74:bc: + 20:4c:d8:2c:b0:aa:e8:d9:4e:6d:f2:8c:24:d3:93: + 5d:91 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Authority Key Identifier: + keyid:AD:BD:98:7A:34:B4:26:F7:FA:C4:26:54:EF:03:BD:E0:24:CB:54:1A + + X509v3 Subject Key Identifier: + 3F:D5:B5:D0:D6:44:79:50:4A:17:A3:9B:8C:4A:DC:B8:B0:22:64:6B + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.usertrust.com/AddTrustExternalCARoot.crl + + Authority Information Access: + CA Issuers - URI:http://crt.usertrust.com/AddTrustExternalCARoot.p7c + CA Issuers - URI:http://crt.usertrust.com/AddTrustUTNSGCCA.crt + OCSP - URI:http://ocsp.usertrust.com + + Signature Algorithm: sha1WithRSAEncryption + 13:85:1f:52:80:18:c9:53:f7:fe:2e:1a:af:cc:d9:0b:3c:c2: + d3:85:81:10:f0:28:8d:b9:40:7e:2c:9e:8f:d6:36:86:0a:4c: + 14:2d:d6:97:43:92:41:19:37:4b:96:9e:eb:a9:30:79:12:95: + b3:02:36:57:ed:2b:b9:1d:98:1a:a3:18:0a:3f:9b:39:8b:cd: + a1:49:29:4c:2f:f9:d0:95:8c:c8:4d:95:ba:a8:43:cf:33:aa: + 25:2a:5a:0e:aa:27:c9:4e:6b:b1:e6:73:1f:b3:74:04:c3:f3: + 4c:e2:a8:eb:67:b7:5d:b8:08:05:1a:56:9a:54:29:85:f5:29: + 4e:80:3b:95:d0:7b:53:96:11:56:c1:02:d3:ea:b2:7f:ca:8f: + 9c:70:4a:14:8d:5a:b9:16:60:75:d6:cd:27:1e:16:cd:5b:33: + 8e:79:40:cf:28:48:e7:dc:71:16:4e:74:91:75:b9:2a:8c:f1: + 70:ac:26:dd:04:b9:40:c2:85:de:1c:93:40:d0:cc:6e:c3:9b: + aa:ef:60:65:df:60:22:f0:5a:a5:7a:a2:2f:e4:70:73:ee:3c: + d4:26:2b:68:07:c1:20:7a:e8:98:5a:3e:7b:9f:02:8b:62:c0: + 85:81:80:60:35:7e:a5:1d:0c:d2:9c:df:62:45:0d:db:fc:37: + fb:f5:25:22 +-----BEGIN CERTIFICATE----- +MIIE/DCCA+SgAwIBAgIQFpDDKbZ4BgdRHwWwNEhGyzANBgkqhkiG9w0BAQUFADBv +MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk +ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF +eHRlcm5hbCBDQSBSb290MB4XDTEwMDQxNjAwMDAwMFoXDTIwMDUzMDEwNDgzOFow +gYkxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO +BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMS8wLQYD +VQQDEyZDT01PRE8gSGlnaC1Bc3N1cmFuY2UgU2VjdXJlIFNlcnZlciBDQTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOeH2sB35Ls6+mokyIBBrNIWExU9 ++vf4KnbcqC05CM5ISr4PffDeurtH1b0t1xurDyCBIwhyscARlQ3m6qmH/8duHk9m +MrpTvAWqHCwM7003R2sQDNvFoJh+WNs31q7pBr3XqGXzN7nHbc53xybg13QfppgW +uwxryL530O9YpymgubhpBTbLstpYowt1rT2LIoIgPnCGmRy5T893pAcaI2PROFaE +7L+PxU70GJabGuiT7I2vFZwk8Fo76A+5qFoB07IcYMmcUgTdkqf+DKziRY0DYbx5 +4Hcuh0E8WF/L9cV38ljITSjQmvrzcwkkaHS8IEzYLLCq6NlObfKMJNOTXZECAwEA +AaOCAXcwggFzMB8GA1UdIwQYMBaAFK29mHo0tCb3+sQmVO8DveAky1QaMB0GA1Ud +DgQWBBQ/1bXQ1kR5UEoXo5uMSty4sCJkazAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0T +AQH/BAgwBgEB/wIBADARBgNVHSAECjAIMAYGBFUdIAAwRAYDVR0fBD0wOzA5oDeg +NYYzaHR0cDovL2NybC51c2VydHJ1c3QuY29tL0FkZFRydXN0RXh0ZXJuYWxDQVJv +b3QuY3JsMIGzBggrBgEFBQcBAQSBpjCBozA/BggrBgEFBQcwAoYzaHR0cDovL2Ny +dC51c2VydHJ1c3QuY29tL0FkZFRydXN0RXh0ZXJuYWxDQVJvb3QucDdjMDkGCCsG +AQUFBzAChi1odHRwOi8vY3J0LnVzZXJ0cnVzdC5jb20vQWRkVHJ1c3RVVE5TR0ND +QS5jcnQwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJ +KoZIhvcNAQEFBQADggEBABOFH1KAGMlT9/4uGq/M2Qs8wtOFgRDwKI25QH4sno/W +NoYKTBQt1pdDkkEZN0uWnuupMHkSlbMCNlftK7kdmBqjGAo/mzmLzaFJKUwv+dCV +jMhNlbqoQ88zqiUqWg6qJ8lOa7Hmcx+zdATD80ziqOtnt124CAUaVppUKYX1KU6A +O5XQe1OWEVbBAtPqsn/Kj5xwShSNWrkWYHXWzSceFs1bM455QM8oSOfccRZOdJF1 +uSqM8XCsJt0EuUDChd4ck0DQzG7Dm6rvYGXfYCLwWqV6oi/kcHPuPNQmK2gHwSB6 +6JhaPnufAotiwIWBgGA1fqUdDNKc32JFDdv8N/v1JSI= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_37[] = { + 0x30, 0x82, 0x04, 0xfc, 0x30, 0x82, 0x03, 0xe4, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x16, 0x90, 0xc3, 0x29, 0xb6, 0x78, 0x06, 0x07, 0x51, + 0x1f, 0x05, 0xb0, 0x34, 0x48, 0x46, 0xcb, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x6f, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x53, + 0x45, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0b, + 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x41, 0x42, 0x31, + 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x64, + 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x20, 0x54, 0x54, 0x50, 0x20, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x19, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x43, 0x41, 0x20, 0x52, + 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x34, 0x31, + 0x36, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, + 0x30, 0x35, 0x33, 0x30, 0x31, 0x30, 0x34, 0x38, 0x33, 0x38, 0x5a, 0x30, + 0x81, 0x89, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x47, 0x42, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x08, + 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x4d, 0x61, + 0x6e, 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e, + 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, 0x61, 0x6c, 0x66, 0x6f, + 0x72, 0x64, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x11, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x43, 0x41, 0x20, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x26, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, + 0x48, 0x69, 0x67, 0x68, 0x2d, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, + 0x63, 0x65, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, + 0x82, 0x01, 0x01, 0x00, 0xe7, 0x87, 0xda, 0xc0, 0x77, 0xe4, 0xbb, 0x3a, + 0xfa, 0x6a, 0x24, 0xc8, 0x80, 0x41, 0xac, 0xd2, 0x16, 0x13, 0x15, 0x3d, + 0xfa, 0xf7, 0xf8, 0x2a, 0x76, 0xdc, 0xa8, 0x2d, 0x39, 0x08, 0xce, 0x48, + 0x4a, 0xbe, 0x0f, 0x7d, 0xf0, 0xde, 0xba, 0xbb, 0x47, 0xd5, 0xbd, 0x2d, + 0xd7, 0x1b, 0xab, 0x0f, 0x20, 0x81, 0x23, 0x08, 0x72, 0xb1, 0xc0, 0x11, + 0x95, 0x0d, 0xe6, 0xea, 0xa9, 0x87, 0xff, 0xc7, 0x6e, 0x1e, 0x4f, 0x66, + 0x32, 0xba, 0x53, 0xbc, 0x05, 0xaa, 0x1c, 0x2c, 0x0c, 0xef, 0x4d, 0x37, + 0x47, 0x6b, 0x10, 0x0c, 0xdb, 0xc5, 0xa0, 0x98, 0x7e, 0x58, 0xdb, 0x37, + 0xd6, 0xae, 0xe9, 0x06, 0xbd, 0xd7, 0xa8, 0x65, 0xf3, 0x37, 0xb9, 0xc7, + 0x6d, 0xce, 0x77, 0xc7, 0x26, 0xe0, 0xd7, 0x74, 0x1f, 0xa6, 0x98, 0x16, + 0xbb, 0x0c, 0x6b, 0xc8, 0xbe, 0x77, 0xd0, 0xef, 0x58, 0xa7, 0x29, 0xa0, + 0xb9, 0xb8, 0x69, 0x05, 0x36, 0xcb, 0xb2, 0xda, 0x58, 0xa3, 0x0b, 0x75, + 0xad, 0x3d, 0x8b, 0x22, 0x82, 0x20, 0x3e, 0x70, 0x86, 0x99, 0x1c, 0xb9, + 0x4f, 0xcf, 0x77, 0xa4, 0x07, 0x1a, 0x23, 0x63, 0xd1, 0x38, 0x56, 0x84, + 0xec, 0xbf, 0x8f, 0xc5, 0x4e, 0xf4, 0x18, 0x96, 0x9b, 0x1a, 0xe8, 0x93, + 0xec, 0x8d, 0xaf, 0x15, 0x9c, 0x24, 0xf0, 0x5a, 0x3b, 0xe8, 0x0f, 0xb9, + 0xa8, 0x5a, 0x01, 0xd3, 0xb2, 0x1c, 0x60, 0xc9, 0x9c, 0x52, 0x04, 0xdd, + 0x92, 0xa7, 0xfe, 0x0c, 0xac, 0xe2, 0x45, 0x8d, 0x03, 0x61, 0xbc, 0x79, + 0xe0, 0x77, 0x2e, 0x87, 0x41, 0x3c, 0x58, 0x5f, 0xcb, 0xf5, 0xc5, 0x77, + 0xf2, 0x58, 0xc8, 0x4d, 0x28, 0xd0, 0x9a, 0xfa, 0xf3, 0x73, 0x09, 0x24, + 0x68, 0x74, 0xbc, 0x20, 0x4c, 0xd8, 0x2c, 0xb0, 0xaa, 0xe8, 0xd9, 0x4e, + 0x6d, 0xf2, 0x8c, 0x24, 0xd3, 0x93, 0x5d, 0x91, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xa3, 0x82, 0x01, 0x77, 0x30, 0x82, 0x01, 0x73, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xad, 0xbd, + 0x98, 0x7a, 0x34, 0xb4, 0x26, 0xf7, 0xfa, 0xc4, 0x26, 0x54, 0xef, 0x03, + 0xbd, 0xe0, 0x24, 0xcb, 0x54, 0x1a, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3f, 0xd5, 0xb5, 0xd0, 0xd6, 0x44, 0x79, + 0x50, 0x4a, 0x17, 0xa3, 0x9b, 0x8c, 0x4a, 0xdc, 0xb8, 0xb0, 0x22, 0x64, + 0x6b, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x11, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x0a, 0x30, 0x08, + 0x30, 0x06, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x44, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x3d, 0x30, 0x3b, 0x30, 0x39, 0xa0, 0x37, 0xa0, + 0x35, 0x86, 0x33, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x41, 0x52, 0x6f, + 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x81, 0xb3, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x81, 0xa6, 0x30, 0x81, + 0xa3, 0x30, 0x3f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x02, 0x86, 0x33, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x74, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x41, 0x52, 0x6f, + 0x6f, 0x74, 0x2e, 0x70, 0x37, 0x63, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x74, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x64, 0x64, + 0x54, 0x72, 0x75, 0x73, 0x74, 0x55, 0x54, 0x4e, 0x53, 0x47, 0x43, 0x43, + 0x41, 0x2e, 0x63, 0x72, 0x74, 0x30, 0x25, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x19, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x13, 0x85, 0x1f, 0x52, 0x80, 0x18, 0xc9, 0x53, + 0xf7, 0xfe, 0x2e, 0x1a, 0xaf, 0xcc, 0xd9, 0x0b, 0x3c, 0xc2, 0xd3, 0x85, + 0x81, 0x10, 0xf0, 0x28, 0x8d, 0xb9, 0x40, 0x7e, 0x2c, 0x9e, 0x8f, 0xd6, + 0x36, 0x86, 0x0a, 0x4c, 0x14, 0x2d, 0xd6, 0x97, 0x43, 0x92, 0x41, 0x19, + 0x37, 0x4b, 0x96, 0x9e, 0xeb, 0xa9, 0x30, 0x79, 0x12, 0x95, 0xb3, 0x02, + 0x36, 0x57, 0xed, 0x2b, 0xb9, 0x1d, 0x98, 0x1a, 0xa3, 0x18, 0x0a, 0x3f, + 0x9b, 0x39, 0x8b, 0xcd, 0xa1, 0x49, 0x29, 0x4c, 0x2f, 0xf9, 0xd0, 0x95, + 0x8c, 0xc8, 0x4d, 0x95, 0xba, 0xa8, 0x43, 0xcf, 0x33, 0xaa, 0x25, 0x2a, + 0x5a, 0x0e, 0xaa, 0x27, 0xc9, 0x4e, 0x6b, 0xb1, 0xe6, 0x73, 0x1f, 0xb3, + 0x74, 0x04, 0xc3, 0xf3, 0x4c, 0xe2, 0xa8, 0xeb, 0x67, 0xb7, 0x5d, 0xb8, + 0x08, 0x05, 0x1a, 0x56, 0x9a, 0x54, 0x29, 0x85, 0xf5, 0x29, 0x4e, 0x80, + 0x3b, 0x95, 0xd0, 0x7b, 0x53, 0x96, 0x11, 0x56, 0xc1, 0x02, 0xd3, 0xea, + 0xb2, 0x7f, 0xca, 0x8f, 0x9c, 0x70, 0x4a, 0x14, 0x8d, 0x5a, 0xb9, 0x16, + 0x60, 0x75, 0xd6, 0xcd, 0x27, 0x1e, 0x16, 0xcd, 0x5b, 0x33, 0x8e, 0x79, + 0x40, 0xcf, 0x28, 0x48, 0xe7, 0xdc, 0x71, 0x16, 0x4e, 0x74, 0x91, 0x75, + 0xb9, 0x2a, 0x8c, 0xf1, 0x70, 0xac, 0x26, 0xdd, 0x04, 0xb9, 0x40, 0xc2, + 0x85, 0xde, 0x1c, 0x93, 0x40, 0xd0, 0xcc, 0x6e, 0xc3, 0x9b, 0xaa, 0xef, + 0x60, 0x65, 0xdf, 0x60, 0x22, 0xf0, 0x5a, 0xa5, 0x7a, 0xa2, 0x2f, 0xe4, + 0x70, 0x73, 0xee, 0x3c, 0xd4, 0x26, 0x2b, 0x68, 0x07, 0xc1, 0x20, 0x7a, + 0xe8, 0x98, 0x5a, 0x3e, 0x7b, 0x9f, 0x02, 0x8b, 0x62, 0xc0, 0x85, 0x81, + 0x80, 0x60, 0x35, 0x7e, 0xa5, 0x1d, 0x0c, 0xd2, 0x9c, 0xdf, 0x62, 0x45, + 0x0d, 0xdb, 0xfc, 0x37, 0xfb, 0xf5, 0x25, 0x22, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1372799044 (0x51d34044) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=Entrust, Inc., OU=www.entrust.net/CPS is incorporated by reference, OU=(c) 2006 Entrust, Inc., CN=Entrust Root Certification Authority + Validity + Not Before: Sep 22 17:14:57 2014 GMT + Not After : Sep 23 01:31:53 2024 GMT + Subject: C=US, O=Entrust, Inc., OU=See www.entrust.net/legal-terms, OU=(c) 2009 Entrust, Inc. - for authorized use only, CN=Entrust Root Certification Authority - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:ba:84:b6:72:db:9e:0c:6b:e2:99:e9:30:01:a7: + 76:ea:32:b8:95:41:1a:c9:da:61:4e:58:72:cf:fe: + f6:82:79:bf:73:61:06:0a:a5:27:d8:b3:5f:d3:45: + 4e:1c:72:d6:4e:32:f2:72:8a:0f:f7:83:19:d0:6a: + 80:80:00:45:1e:b0:c7:e7:9a:bf:12:57:27:1c:a3: + 68:2f:0a:87:bd:6a:6b:0e:5e:65:f3:1c:77:d5:d4: + 85:8d:70:21:b4:b3:32:e7:8b:a2:d5:86:39:02:b1: + b8:d2:47:ce:e4:c9:49:c4:3b:a7:de:fb:54:7d:57: + be:f0:e8:6e:c2:79:b2:3a:0b:55:e2:50:98:16:32: + 13:5c:2f:78:56:c1:c2:94:b3:f2:5a:e4:27:9a:9f: + 24:d7:c6:ec:d0:9b:25:82:e3:cc:c2:c4:45:c5:8c: + 97:7a:06:6b:2a:11:9f:a9:0a:6e:48:3b:6f:db:d4: + 11:19:42:f7:8f:07:bf:f5:53:5f:9c:3e:f4:17:2c: + e6:69:ac:4e:32:4c:62:77:ea:b7:e8:e5:bb:34:bc: + 19:8b:ae:9c:51:e7:b7:7e:b5:53:b1:33:22:e5:6d: + cf:70:3c:1a:fa:e2:9b:67:b6:83:f4:8d:a5:af:62: + 4c:4d:e0:58:ac:64:34:12:03:f8:b6:8d:94:63:24: + a4:71 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:1 + Authority Information Access: + OCSP - URI:http://ocsp.entrust.net + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.entrust.net/rootca1.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: http://www.entrust.net/CPS + + X509v3 Subject Key Identifier: + 6A:72:26:7A:D0:1E:EF:7D:E7:3B:69:51:D4:6C:8D:9F:90:12:66:AB + X509v3 Authority Key Identifier: + keyid:68:90:E4:67:A4:A6:53:80:C7:86:66:A4:F1:F7:4B:43:FB:84:BD:6D + + Signature Algorithm: sha256WithRSAEncryption + 69:33:83:fc:28:7a:6f:7d:ef:9d:55:eb:c5:3e:7a:9d:75:b3: + cc:c3:38:36:d9:34:a2:28:68:18:ea:1e:69:d3:bd:e7:d0:77: + da:b8:00:83:4e:4a:cf:6f:d1:f1:c1:22:3f:74:e4:f7:98:49: + 9e:9b:b6:9e:e1:db:98:77:2d:56:34:b1:a8:3c:d9:fd:c0:cd: + c7:bf:05:03:d4:02:c5:f1:e5:c6:da:08:a5:13:c7:62:23:11: + d1:61:30:1d:60:84:45:ef:79:a8:c6:26:93:a4:b7:cd:34:b8: + 69:c5:13:f6:91:b3:c9:45:73:76:b6:92:f6:76:0a:5b:e1:03: + 47:b7:e9:29:4c:91:32:23:37:4a:9c:35:d8:78:fd:1d:1f:e4: + 83:89:24:80:ad:b7:f9:cf:e4:5d:a5:d4:71:c4:85:5b:70:1f: + db:3f:1c:01:eb:1a:45:26:31:14:cc:65:bf:67:de:ca:cc:33: + 65:e5:41:91:d7:37:be:41:1a:96:9d:e6:8a:97:9d:a7:ce:ac: + 4e:9a:3d:bd:01:a0:6a:d9:4f:22:00:8b:44:d5:69:62:7b:2e: + eb:cc:ba:e7:92:7d:69:67:3d:fc:b8:7c:de:41:87:d0:69:ea: + ba:0a:18:7a:1a:95:43:b3:79:71:28:76:6d:a1:fb:57:4a:ec: + 4d:c8:0e:10 +-----BEGIN CERTIFICATE----- +MIIE/zCCA+egAwIBAgIEUdNARDANBgkqhkiG9w0BAQsFADCBsDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 +Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW +KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE0MDkyMjE3MTQ1N1oXDTI0MDkyMzAx +MzE1M1owgb4xCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgw +JgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQL +EzAoYykgMjAwOSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9u +bHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuoS2ctueDGvi +mekwAad26jK4lUEaydphTlhyz/72gnm/c2EGCqUn2LNf00VOHHLWTjLycooP94MZ +0GqAgABFHrDH55q/ElcnHKNoLwqHvWprDl5l8xx31dSFjXAhtLMy54ui1YY5ArG4 +0kfO5MlJxDun3vtUfVe+8OhuwnmyOgtV4lCYFjITXC94VsHClLPyWuQnmp8k18bs +0JslguPMwsRFxYyXegZrKhGfqQpuSDtv29QRGUL3jwe/9VNfnD70FyzmaaxOMkxi +d+q36OW7NLwZi66cUee3frVTsTMi5W3PcDwa+uKbZ7aD9I2lr2JMTeBYrGQ0EgP4 +to2UYySkcQIDAQABo4IBDzCCAQswDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQI +MAYBAf8CAQEwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdodHRwOi8vb2Nz +cC5lbnRydXN0Lm5ldDAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3JsLmVudHJ1 +c3QubmV0L3Jvb3RjYTEuY3JsMDsGA1UdIAQ0MDIwMAYEVR0gADAoMCYGCCsGAQUF +BwIBFhpodHRwOi8vd3d3LmVudHJ1c3QubmV0L0NQUzAdBgNVHQ4EFgQUanImetAe +733nO2lR1GyNn5ASZqswHwYDVR0jBBgwFoAUaJDkZ6SmU4DHhmak8fdLQ/uEvW0w +DQYJKoZIhvcNAQELBQADggEBAGkzg/woem99751V68U+ep11s8zDODbZNKIoaBjq +HmnTvefQd9q4AINOSs9v0fHBIj905PeYSZ6btp7h25h3LVY0sag82f3Azce/BQPU +AsXx5cbaCKUTx2IjEdFhMB1ghEXveajGJpOkt800uGnFE/aRs8lFc3a2kvZ2Clvh +A0e36SlMkTIjN0qcNdh4/R0f5IOJJICtt/nP5F2l1HHEhVtwH9s/HAHrGkUmMRTM +Zb9n3srMM2XlQZHXN75BGpad5oqXnafOrE6aPb0BoGrZTyIAi0TVaWJ7LuvMuueS +fWlnPfy4fN5Bh9Bp6roKGHoalUOzeXEodm2h+1dK7E3IDhA= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_38[] = { + 0x30, 0x82, 0x04, 0xff, 0x30, 0x82, 0x03, 0xe7, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x51, 0xd3, 0x40, 0x44, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xb0, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x30, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x43, 0x50, 0x53, 0x20, 0x69, 0x73, 0x20, + 0x69, 0x6e, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x20, 0x62, 0x79, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, + 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x45, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x2d, + 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, 0x45, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x34, 0x30, 0x39, 0x32, 0x32, 0x31, 0x37, 0x31, 0x34, 0x35, + 0x37, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x39, 0x32, 0x33, 0x30, 0x31, + 0x33, 0x31, 0x35, 0x33, 0x5a, 0x30, 0x81, 0xbe, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, + 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x45, 0x6e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x28, 0x30, + 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, 0x53, 0x65, 0x65, 0x20, + 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x2d, 0x74, 0x65, + 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x39, 0x20, 0x45, + 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, + 0x6c, 0x79, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x29, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, + 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, + 0x01, 0x01, 0x00, 0xba, 0x84, 0xb6, 0x72, 0xdb, 0x9e, 0x0c, 0x6b, 0xe2, + 0x99, 0xe9, 0x30, 0x01, 0xa7, 0x76, 0xea, 0x32, 0xb8, 0x95, 0x41, 0x1a, + 0xc9, 0xda, 0x61, 0x4e, 0x58, 0x72, 0xcf, 0xfe, 0xf6, 0x82, 0x79, 0xbf, + 0x73, 0x61, 0x06, 0x0a, 0xa5, 0x27, 0xd8, 0xb3, 0x5f, 0xd3, 0x45, 0x4e, + 0x1c, 0x72, 0xd6, 0x4e, 0x32, 0xf2, 0x72, 0x8a, 0x0f, 0xf7, 0x83, 0x19, + 0xd0, 0x6a, 0x80, 0x80, 0x00, 0x45, 0x1e, 0xb0, 0xc7, 0xe7, 0x9a, 0xbf, + 0x12, 0x57, 0x27, 0x1c, 0xa3, 0x68, 0x2f, 0x0a, 0x87, 0xbd, 0x6a, 0x6b, + 0x0e, 0x5e, 0x65, 0xf3, 0x1c, 0x77, 0xd5, 0xd4, 0x85, 0x8d, 0x70, 0x21, + 0xb4, 0xb3, 0x32, 0xe7, 0x8b, 0xa2, 0xd5, 0x86, 0x39, 0x02, 0xb1, 0xb8, + 0xd2, 0x47, 0xce, 0xe4, 0xc9, 0x49, 0xc4, 0x3b, 0xa7, 0xde, 0xfb, 0x54, + 0x7d, 0x57, 0xbe, 0xf0, 0xe8, 0x6e, 0xc2, 0x79, 0xb2, 0x3a, 0x0b, 0x55, + 0xe2, 0x50, 0x98, 0x16, 0x32, 0x13, 0x5c, 0x2f, 0x78, 0x56, 0xc1, 0xc2, + 0x94, 0xb3, 0xf2, 0x5a, 0xe4, 0x27, 0x9a, 0x9f, 0x24, 0xd7, 0xc6, 0xec, + 0xd0, 0x9b, 0x25, 0x82, 0xe3, 0xcc, 0xc2, 0xc4, 0x45, 0xc5, 0x8c, 0x97, + 0x7a, 0x06, 0x6b, 0x2a, 0x11, 0x9f, 0xa9, 0x0a, 0x6e, 0x48, 0x3b, 0x6f, + 0xdb, 0xd4, 0x11, 0x19, 0x42, 0xf7, 0x8f, 0x07, 0xbf, 0xf5, 0x53, 0x5f, + 0x9c, 0x3e, 0xf4, 0x17, 0x2c, 0xe6, 0x69, 0xac, 0x4e, 0x32, 0x4c, 0x62, + 0x77, 0xea, 0xb7, 0xe8, 0xe5, 0xbb, 0x34, 0xbc, 0x19, 0x8b, 0xae, 0x9c, + 0x51, 0xe7, 0xb7, 0x7e, 0xb5, 0x53, 0xb1, 0x33, 0x22, 0xe5, 0x6d, 0xcf, + 0x70, 0x3c, 0x1a, 0xfa, 0xe2, 0x9b, 0x67, 0xb6, 0x83, 0xf4, 0x8d, 0xa5, + 0xaf, 0x62, 0x4c, 0x4d, 0xe0, 0x58, 0xac, 0x64, 0x34, 0x12, 0x03, 0xf8, + 0xb6, 0x8d, 0x94, 0x63, 0x24, 0xa4, 0x71, 0x02, 0x03, 0x01, 0x00, 0x01, + 0xa3, 0x82, 0x01, 0x0f, 0x30, 0x82, 0x01, 0x0b, 0x30, 0x0e, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, + 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, + 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x01, 0x30, 0x33, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x27, 0x30, 0x25, + 0x30, 0x23, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x17, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, + 0x70, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, + 0x74, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a, + 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x63, + 0x61, 0x31, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, + 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, 0x04, 0x55, 0x1d, 0x20, + 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x6e, 0x65, 0x74, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x6a, 0x72, 0x26, 0x7a, 0xd0, 0x1e, + 0xef, 0x7d, 0xe7, 0x3b, 0x69, 0x51, 0xd4, 0x6c, 0x8d, 0x9f, 0x90, 0x12, + 0x66, 0xab, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0x68, 0x90, 0xe4, 0x67, 0xa4, 0xa6, 0x53, 0x80, 0xc7, + 0x86, 0x66, 0xa4, 0xf1, 0xf7, 0x4b, 0x43, 0xfb, 0x84, 0xbd, 0x6d, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x69, 0x33, 0x83, 0xfc, 0x28, + 0x7a, 0x6f, 0x7d, 0xef, 0x9d, 0x55, 0xeb, 0xc5, 0x3e, 0x7a, 0x9d, 0x75, + 0xb3, 0xcc, 0xc3, 0x38, 0x36, 0xd9, 0x34, 0xa2, 0x28, 0x68, 0x18, 0xea, + 0x1e, 0x69, 0xd3, 0xbd, 0xe7, 0xd0, 0x77, 0xda, 0xb8, 0x00, 0x83, 0x4e, + 0x4a, 0xcf, 0x6f, 0xd1, 0xf1, 0xc1, 0x22, 0x3f, 0x74, 0xe4, 0xf7, 0x98, + 0x49, 0x9e, 0x9b, 0xb6, 0x9e, 0xe1, 0xdb, 0x98, 0x77, 0x2d, 0x56, 0x34, + 0xb1, 0xa8, 0x3c, 0xd9, 0xfd, 0xc0, 0xcd, 0xc7, 0xbf, 0x05, 0x03, 0xd4, + 0x02, 0xc5, 0xf1, 0xe5, 0xc6, 0xda, 0x08, 0xa5, 0x13, 0xc7, 0x62, 0x23, + 0x11, 0xd1, 0x61, 0x30, 0x1d, 0x60, 0x84, 0x45, 0xef, 0x79, 0xa8, 0xc6, + 0x26, 0x93, 0xa4, 0xb7, 0xcd, 0x34, 0xb8, 0x69, 0xc5, 0x13, 0xf6, 0x91, + 0xb3, 0xc9, 0x45, 0x73, 0x76, 0xb6, 0x92, 0xf6, 0x76, 0x0a, 0x5b, 0xe1, + 0x03, 0x47, 0xb7, 0xe9, 0x29, 0x4c, 0x91, 0x32, 0x23, 0x37, 0x4a, 0x9c, + 0x35, 0xd8, 0x78, 0xfd, 0x1d, 0x1f, 0xe4, 0x83, 0x89, 0x24, 0x80, 0xad, + 0xb7, 0xf9, 0xcf, 0xe4, 0x5d, 0xa5, 0xd4, 0x71, 0xc4, 0x85, 0x5b, 0x70, + 0x1f, 0xdb, 0x3f, 0x1c, 0x01, 0xeb, 0x1a, 0x45, 0x26, 0x31, 0x14, 0xcc, + 0x65, 0xbf, 0x67, 0xde, 0xca, 0xcc, 0x33, 0x65, 0xe5, 0x41, 0x91, 0xd7, + 0x37, 0xbe, 0x41, 0x1a, 0x96, 0x9d, 0xe6, 0x8a, 0x97, 0x9d, 0xa7, 0xce, + 0xac, 0x4e, 0x9a, 0x3d, 0xbd, 0x01, 0xa0, 0x6a, 0xd9, 0x4f, 0x22, 0x00, + 0x8b, 0x44, 0xd5, 0x69, 0x62, 0x7b, 0x2e, 0xeb, 0xcc, 0xba, 0xe7, 0x92, + 0x7d, 0x69, 0x67, 0x3d, 0xfc, 0xb8, 0x7c, 0xde, 0x41, 0x87, 0xd0, 0x69, + 0xea, 0xba, 0x0a, 0x18, 0x7a, 0x1a, 0x95, 0x43, 0xb3, 0x79, 0x71, 0x28, + 0x76, 0x6d, 0xa1, 0xfb, 0x57, 0x4a, 0xec, 0x4d, 0xc8, 0x0e, 0x10, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 7 (0x7) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, ST=Arizona, L=Scottsdale, O=Starfield Technologies, Inc., CN=Starfield Root Certificate Authority - G2 + Validity + Not Before: May 3 07:00:00 2011 GMT + Not After : May 3 07:00:00 2031 GMT + Subject: C=US, ST=Arizona, L=Scottsdale, O=Starfield Technologies, Inc., OU=http://certs.starfieldtech.com/repository/, CN=Starfield Secure Certificate Authority - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:e5:90:66:4b:ec:f9:46:71:a9:20:83:be:e9:6c: + bf:4a:c9:48:69:81:75:4e:6d:24:f6:cb:17:13:f8: + b0:71:59:84:7a:6b:2b:85:a4:34:b5:16:e5:cb:cc: + e9:41:70:2c:a4:2e:d6:fa:32:7d:e1:a8:de:94:10: + ac:31:c1:c0:d8:6a:ff:59:27:ab:76:d6:fc:0b:74: + 6b:b8:a7:ae:3f:c4:54:f4:b4:31:44:dd:93:56:8c: + a4:4c:5e:9b:89:cb:24:83:9b:e2:57:7d:b7:d8:12: + 1f:c9:85:6d:f4:d1:80:f1:50:9b:87:ae:d4:0b:10: + 05:fb:27:ba:28:6d:17:e9:0e:d6:4d:b9:39:55:06: + ff:0a:24:05:7e:2f:c6:1d:72:6c:d4:8b:29:8c:57: + 7d:da:d9:eb:66:1a:d3:4f:a7:df:7f:52:c4:30:c5: + a5:c9:0e:02:c5:53:bf:77:38:68:06:24:c3:66:c8: + 37:7e:30:1e:45:71:23:35:ff:90:d8:2a:9d:8d:e7: + b0:92:4d:3c:7f:2a:0a:93:dc:cd:16:46:65:f7:60: + 84:8b:76:4b:91:27:73:14:92:e0:ea:ee:8f:16:ea: + 8d:0e:3e:76:17:bf:7d:89:80:80:44:43:e7:2d:e0: + 43:09:75:da:36:e8:ad:db:89:3a:f5:5d:12:8e:23: + 04:83 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 25:45:81:68:50:26:38:3D:3B:2D:2C:BE:CD:6A:D9:B6:3D:B3:66:63 + X509v3 Authority Key Identifier: + keyid:7C:0C:32:1F:A7:D9:30:7F:C4:7D:68:A3:62:A8:A1:CE:AB:07:5B:27 + + Authority Information Access: + OCSP - URI:http://ocsp.starfieldtech.com/ + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.starfieldtech.com/sfroot-g2.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://certs.starfieldtech.com/repository/ + + Signature Algorithm: sha256WithRSAEncryption + 56:65:ca:fe:f3:3f:0a:a8:93:8b:18:c7:de:43:69:13:34:20: + be:4e:5f:78:a8:6b:9c:db:6a:4d:41:db:c1:13:ec:dc:31:00: + 22:5e:f7:00:9e:0c:e0:34:65:34:f9:b1:3a:4e:48:c8:12:81: + 88:5c:5b:3e:08:53:7a:f7:1a:64:df:b8:50:61:cc:53:51:40: + 29:4b:c2:f4:ae:3a:5f:e4:ca:ad:26:cc:4e:61:43:e5:fd:57: + a6:37:70:ce:43:2b:b0:94:c3:92:e9:e1:5f:aa:10:49:b7:69: + e4:e0:d0:1f:64:a4:2b:cd:1f:6f:a0:f8:84:24:18:ce:79:3d: + a9:91:bf:54:18:13:89:99:54:11:0d:55:c5:26:0b:79:4f:5a: + 1c:6e:f9:63:db:14:80:a4:07:ab:fa:b2:a5:b9:88:dd:91:fe: + 65:3b:a4:a3:79:be:89:4d:e1:d0:b0:f4:c8:17:0c:0a:96:14: + 7c:09:b7:6c:e1:c2:d8:55:d4:18:a0:aa:41:69:70:24:a3:b9: + ef:e9:5a:dc:3e:eb:94:4a:f0:b7:de:5f:0e:76:fa:fb:fb:69: + 03:45:40:50:ee:72:0c:a4:12:86:81:cd:13:d1:4e:c4:3c:ca: + 4e:0d:d2:26:f1:00:b7:b4:a6:a2:e1:6e:7a:81:fd:30:ac:7a: + 1f:c7:59:7b +-----BEGIN CERTIFICATE----- +MIIFADCCA+igAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs +ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTExMDUwMzA3MDAw +MFoXDTMxMDUwMzA3MDAwMFowgcYxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj +aG5vbG9naWVzLCBJbmMuMTMwMQYDVQQLEypodHRwOi8vY2VydHMuc3RhcmZpZWxk +dGVjaC5jb20vcmVwb3NpdG9yeS8xNDAyBgNVBAMTK1N0YXJmaWVsZCBTZWN1cmUg +Q2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDlkGZL7PlGcakgg77pbL9KyUhpgXVObST2yxcT+LBxWYR6ayuF +pDS1FuXLzOlBcCykLtb6Mn3hqN6UEKwxwcDYav9ZJ6t21vwLdGu4p64/xFT0tDFE +3ZNWjKRMXpuJyySDm+JXfbfYEh/JhW300YDxUJuHrtQLEAX7J7oobRfpDtZNuTlV +Bv8KJAV+L8YdcmzUiymMV33a2etmGtNPp99/UsQwxaXJDgLFU793OGgGJMNmyDd+ +MB5FcSM1/5DYKp2N57CSTTx/KgqT3M0WRmX3YISLdkuRJ3MUkuDq7o8W6o0OPnYX +v32JgIBEQ+ct4EMJddo26K3biTr1XRKOIwSDAgMBAAGjggEsMIIBKDAPBgNVHRMB +Af8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUJUWBaFAmOD07LSy+ +zWrZtj2zZmMwHwYDVR0jBBgwFoAUfAwyH6fZMH/EfWijYqihzqsHWycwOgYIKwYB +BQUHAQEELjAsMCoGCCsGAQUFBzABhh5odHRwOi8vb2NzcC5zdGFyZmllbGR0ZWNo +LmNvbS8wOwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL2NybC5zdGFyZmllbGR0ZWNo +LmNvbS9zZnJvb3QtZzIuY3JsMEwGA1UdIARFMEMwQQYEVR0gADA5MDcGCCsGAQUF +BwIBFitodHRwczovL2NlcnRzLnN0YXJmaWVsZHRlY2guY29tL3JlcG9zaXRvcnkv +MA0GCSqGSIb3DQEBCwUAA4IBAQBWZcr+8z8KqJOLGMfeQ2kTNCC+Tl94qGuc22pN +QdvBE+zcMQAiXvcAngzgNGU0+bE6TkjIEoGIXFs+CFN69xpk37hQYcxTUUApS8L0 +rjpf5MqtJsxOYUPl/VemN3DOQyuwlMOS6eFfqhBJt2nk4NAfZKQrzR9voPiEJBjO +eT2pkb9UGBOJmVQRDVXFJgt5T1ocbvlj2xSApAer+rKluYjdkf5lO6Sjeb6JTeHQ +sPTIFwwKlhR8Cbds4cLYVdQYoKpBaXAko7nv6VrcPuuUSvC33l8Odvr7+2kDRUBQ +7nIMpBKGgc0T0U7EPMpODdIm8QC3tKai4W56gf0wrHofx1l7 +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_39[] = { + 0x30, 0x82, 0x05, 0x00, 0x30, 0x82, 0x03, 0xe8, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x01, 0x07, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0x8f, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, + 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, + 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, + 0x6c, 0x65, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, + 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, + 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x29, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, 0x30, 0x30, 0x30, + 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x81, 0xc6, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, + 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, + 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, + 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, + 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x2a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, + 0x74, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x74, 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x31, 0x34, 0x30, 0x32, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2b, 0x53, 0x74, 0x61, 0x72, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, + 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe5, + 0x90, 0x66, 0x4b, 0xec, 0xf9, 0x46, 0x71, 0xa9, 0x20, 0x83, 0xbe, 0xe9, + 0x6c, 0xbf, 0x4a, 0xc9, 0x48, 0x69, 0x81, 0x75, 0x4e, 0x6d, 0x24, 0xf6, + 0xcb, 0x17, 0x13, 0xf8, 0xb0, 0x71, 0x59, 0x84, 0x7a, 0x6b, 0x2b, 0x85, + 0xa4, 0x34, 0xb5, 0x16, 0xe5, 0xcb, 0xcc, 0xe9, 0x41, 0x70, 0x2c, 0xa4, + 0x2e, 0xd6, 0xfa, 0x32, 0x7d, 0xe1, 0xa8, 0xde, 0x94, 0x10, 0xac, 0x31, + 0xc1, 0xc0, 0xd8, 0x6a, 0xff, 0x59, 0x27, 0xab, 0x76, 0xd6, 0xfc, 0x0b, + 0x74, 0x6b, 0xb8, 0xa7, 0xae, 0x3f, 0xc4, 0x54, 0xf4, 0xb4, 0x31, 0x44, + 0xdd, 0x93, 0x56, 0x8c, 0xa4, 0x4c, 0x5e, 0x9b, 0x89, 0xcb, 0x24, 0x83, + 0x9b, 0xe2, 0x57, 0x7d, 0xb7, 0xd8, 0x12, 0x1f, 0xc9, 0x85, 0x6d, 0xf4, + 0xd1, 0x80, 0xf1, 0x50, 0x9b, 0x87, 0xae, 0xd4, 0x0b, 0x10, 0x05, 0xfb, + 0x27, 0xba, 0x28, 0x6d, 0x17, 0xe9, 0x0e, 0xd6, 0x4d, 0xb9, 0x39, 0x55, + 0x06, 0xff, 0x0a, 0x24, 0x05, 0x7e, 0x2f, 0xc6, 0x1d, 0x72, 0x6c, 0xd4, + 0x8b, 0x29, 0x8c, 0x57, 0x7d, 0xda, 0xd9, 0xeb, 0x66, 0x1a, 0xd3, 0x4f, + 0xa7, 0xdf, 0x7f, 0x52, 0xc4, 0x30, 0xc5, 0xa5, 0xc9, 0x0e, 0x02, 0xc5, + 0x53, 0xbf, 0x77, 0x38, 0x68, 0x06, 0x24, 0xc3, 0x66, 0xc8, 0x37, 0x7e, + 0x30, 0x1e, 0x45, 0x71, 0x23, 0x35, 0xff, 0x90, 0xd8, 0x2a, 0x9d, 0x8d, + 0xe7, 0xb0, 0x92, 0x4d, 0x3c, 0x7f, 0x2a, 0x0a, 0x93, 0xdc, 0xcd, 0x16, + 0x46, 0x65, 0xf7, 0x60, 0x84, 0x8b, 0x76, 0x4b, 0x91, 0x27, 0x73, 0x14, + 0x92, 0xe0, 0xea, 0xee, 0x8f, 0x16, 0xea, 0x8d, 0x0e, 0x3e, 0x76, 0x17, + 0xbf, 0x7d, 0x89, 0x80, 0x80, 0x44, 0x43, 0xe7, 0x2d, 0xe0, 0x43, 0x09, + 0x75, 0xda, 0x36, 0xe8, 0xad, 0xdb, 0x89, 0x3a, 0xf5, 0x5d, 0x12, 0x8e, + 0x23, 0x04, 0x83, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x2c, + 0x30, 0x82, 0x01, 0x28, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, + 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x25, 0x45, 0x81, 0x68, 0x50, 0x26, 0x38, 0x3d, 0x3b, 0x2d, 0x2c, 0xbe, + 0xcd, 0x6a, 0xd9, 0xb6, 0x3d, 0xb3, 0x66, 0x63, 0x30, 0x1f, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7c, 0x0c, 0x32, + 0x1f, 0xa7, 0xd9, 0x30, 0x7f, 0xc4, 0x7d, 0x68, 0xa3, 0x62, 0xa8, 0xa1, + 0xce, 0xab, 0x07, 0x5b, 0x27, 0x30, 0x3a, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1e, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x73, + 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0xa0, 0x2e, 0xa0, 0x2c, 0x86, 0x2a, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x73, + 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x72, 0x6f, 0x6f, 0x74, 0x2d, + 0x67, 0x32, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, + 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, 0x04, 0x55, 0x1d, 0x20, + 0x00, 0x30, 0x39, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x2b, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x56, 0x65, 0xca, 0xfe, + 0xf3, 0x3f, 0x0a, 0xa8, 0x93, 0x8b, 0x18, 0xc7, 0xde, 0x43, 0x69, 0x13, + 0x34, 0x20, 0xbe, 0x4e, 0x5f, 0x78, 0xa8, 0x6b, 0x9c, 0xdb, 0x6a, 0x4d, + 0x41, 0xdb, 0xc1, 0x13, 0xec, 0xdc, 0x31, 0x00, 0x22, 0x5e, 0xf7, 0x00, + 0x9e, 0x0c, 0xe0, 0x34, 0x65, 0x34, 0xf9, 0xb1, 0x3a, 0x4e, 0x48, 0xc8, + 0x12, 0x81, 0x88, 0x5c, 0x5b, 0x3e, 0x08, 0x53, 0x7a, 0xf7, 0x1a, 0x64, + 0xdf, 0xb8, 0x50, 0x61, 0xcc, 0x53, 0x51, 0x40, 0x29, 0x4b, 0xc2, 0xf4, + 0xae, 0x3a, 0x5f, 0xe4, 0xca, 0xad, 0x26, 0xcc, 0x4e, 0x61, 0x43, 0xe5, + 0xfd, 0x57, 0xa6, 0x37, 0x70, 0xce, 0x43, 0x2b, 0xb0, 0x94, 0xc3, 0x92, + 0xe9, 0xe1, 0x5f, 0xaa, 0x10, 0x49, 0xb7, 0x69, 0xe4, 0xe0, 0xd0, 0x1f, + 0x64, 0xa4, 0x2b, 0xcd, 0x1f, 0x6f, 0xa0, 0xf8, 0x84, 0x24, 0x18, 0xce, + 0x79, 0x3d, 0xa9, 0x91, 0xbf, 0x54, 0x18, 0x13, 0x89, 0x99, 0x54, 0x11, + 0x0d, 0x55, 0xc5, 0x26, 0x0b, 0x79, 0x4f, 0x5a, 0x1c, 0x6e, 0xf9, 0x63, + 0xdb, 0x14, 0x80, 0xa4, 0x07, 0xab, 0xfa, 0xb2, 0xa5, 0xb9, 0x88, 0xdd, + 0x91, 0xfe, 0x65, 0x3b, 0xa4, 0xa3, 0x79, 0xbe, 0x89, 0x4d, 0xe1, 0xd0, + 0xb0, 0xf4, 0xc8, 0x17, 0x0c, 0x0a, 0x96, 0x14, 0x7c, 0x09, 0xb7, 0x6c, + 0xe1, 0xc2, 0xd8, 0x55, 0xd4, 0x18, 0xa0, 0xaa, 0x41, 0x69, 0x70, 0x24, + 0xa3, 0xb9, 0xef, 0xe9, 0x5a, 0xdc, 0x3e, 0xeb, 0x94, 0x4a, 0xf0, 0xb7, + 0xde, 0x5f, 0x0e, 0x76, 0xfa, 0xfb, 0xfb, 0x69, 0x03, 0x45, 0x40, 0x50, + 0xee, 0x72, 0x0c, 0xa4, 0x12, 0x86, 0x81, 0xcd, 0x13, 0xd1, 0x4e, 0xc4, + 0x3c, 0xca, 0x4e, 0x0d, 0xd2, 0x26, 0xf1, 0x00, 0xb7, 0xb4, 0xa6, 0xa2, + 0xe1, 0x6e, 0x7a, 0x81, 0xfd, 0x30, 0xac, 0x7a, 0x1f, 0xc7, 0x59, 0x7b, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1372807406 (0x51d360ee) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=Entrust, Inc., OU=See www.entrust.net/legal-terms, OU=(c) 2009 Entrust, Inc. - for authorized use only, CN=Entrust Root Certification Authority - G2 + Validity + Not Before: Oct 22 17:05:14 2014 GMT + Not After : Oct 23 07:33:22 2024 GMT + Subject: C=US, O=Entrust, Inc., OU=See www.entrust.net/legal-terms, OU=(c) 2012 Entrust, Inc. - for authorized use only, CN=Entrust Certification Authority - L1K + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:da:3f:96:d0:4d:b9:2f:44:e7:db:39:5e:9b:50: + ee:5c:a5:61:da:41:67:53:09:aa:00:9a:8e:57:7f: + 29:6b:db:c7:e1:21:24:aa:3a:d0:8d:47:23:d2:ed: + 72:16:f0:91:21:d2:5d:b7:b8:4b:a8:83:8f:b7:91: + 32:68:cf:ce:25:93:2c:b2:7d:97:c8:fe:c1:b4:17: + ba:09:9e:03:90:93:7b:7c:49:83:22:68:8a:9b:de: + 47:c3:31:98:7a:2e:7d:40:0b:d2:ef:3e:d3:b2:8c: + aa:8f:48:a9:ff:00:e8:29:58:06:f7:b6:93:5a:94: + 73:26:26:ad:58:0e:e5:42:b8:d5:ea:73:79:64:68: + 53:25:b8:84:cf:94:7a:ae:06:45:0c:a3:6b:4d:d0: + c6:be:ea:18:a4:36:f0:92:b2:ba:1c:88:8f:3a:52: + 7f:f7:5e:6d:83:1c:9d:f0:1f:e5:c3:d6:dd:a5:78: + 92:3d:b0:6d:2c:ea:c9:cf:94:41:19:71:44:68:ba: + 47:3c:04:e9:5d:ba:3e:f0:35:f7:15:b6:9e:f2:2e: + 15:1e:3f:47:c8:c8:38:a7:73:45:5d:4d:b0:3b:b1: + 8e:17:29:37:ea:dd:05:01:22:bb:94:36:2a:8d:5b: + 35:fe:53:19:2f:08:46:c1:2a:b3:1a:62:1d:4e:2b: + d9:1b + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Basic Constraints: + CA:TRUE, pathlen:0 + Authority Information Access: + OCSP - URI:http://ocsp.entrust.net + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.entrust.net/g2ca.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: http://www.entrust.net/rpa + + X509v3 Subject Key Identifier: + 82:A2:70:74:DD:BC:53:3F:CF:7B:D4:F7:CD:7F:A7:60:C6:0A:4C:BF + X509v3 Authority Key Identifier: + keyid:6A:72:26:7A:D0:1E:EF:7D:E7:3B:69:51:D4:6C:8D:9F:90:12:66:AB + + Signature Algorithm: sha256WithRSAEncryption + 3f:1c:1a:5b:ff:40:22:1d:8f:35:0c:2d:aa:99:27:ab:c0:11: + 32:70:d7:36:28:69:a5:8d:b1:27:99:42:be:c4:93:eb:48:57: + 43:71:23:c4:e5:4e:ad:ae:43:6f:92:76:c5:19:ef:ca:bc:6f: + 42:4c:16:9a:86:a9:04:38:c7:65:f0:f5:0c:e0:4a:df:a2:fa: + ce:1a:11:a8:9c:69:2f:1b:df:ea:e2:32:f3:ce:4c:bc:46:0c: + c0:89:80:d1:87:6b:a2:cf:6b:d4:7f:fd:f5:60:52:67:57:a0: + 6d:d1:64:41:14:6d:34:62:ed:06:6c:24:f2:06:bc:28:02:af: + 03:2d:c2:33:05:fb:cb:aa:16:e8:65:10:43:f5:69:5c:e3:81: + 58:99:cd:6b:d3:b8:c7:7b:19:55:c9:40:ce:79:55:b8:73:89: + e9:5c:40:66:43:12:7f:07:b8:65:56:d5:8d:c3:a7:f5:b1:b6: + 65:9e:c0:83:36:7f:16:45:3c:74:4b:93:8a:3c:f1:2b:f5:35: + 70:73:7b:e7:82:04:b1:18:98:0e:d4:9c:6f:1a:fc:fc:a7:33: + a5:bb:bb:18:f3:6b:7a:5d:32:87:f7:6d:25:e4:e2:76:86:21: + 1e:11:46:cd:76:0e:6f:4f:a4:21:71:0a:84:a7:2d:36:a9:48: + 22:51:7e:82 +-----BEGIN CERTIFICATE----- +MIIFAzCCA+ugAwIBAgIEUdNg7jANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50 +cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs +IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz +dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMTQxMDIyMTcw +NTE0WhcNMjQxMDIzMDczMzIyWjCBujELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu +dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt +dGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0 +aG9yaXplZCB1c2Ugb25seTEuMCwGA1UEAxMlRW50cnVzdCBDZXJ0aWZpY2F0aW9u +IEF1dGhvcml0eSAtIEwxSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANo/ltBNuS9E59s5XptQ7lylYdpBZ1MJqgCajld/KWvbx+EhJKo60I1HI9Ltchbw +kSHSXbe4S6iDj7eRMmjPziWTLLJ9l8j+wbQXugmeA5CTe3xJgyJoipveR8MxmHou +fUAL0u8+07KMqo9Iqf8A6ClYBve2k1qUcyYmrVgO5UK41epzeWRoUyW4hM+Ueq4G +RQyja03Qxr7qGKQ28JKyuhyIjzpSf/debYMcnfAf5cPW3aV4kj2wbSzqyc+UQRlx +RGi6RzwE6V26PvA19xW2nvIuFR4/R8jIOKdzRV1NsDuxjhcpN+rdBQEiu5Q2Ko1b +Nf5TGS8IRsEqsxpiHU4r2RsCAwEAAaOCAQkwggEFMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMECDAGAQH/AgEAMDMGCCsGAQUFBwEBBCcwJTAjBggrBgEFBQcwAYYXaHR0 +cDovL29jc3AuZW50cnVzdC5uZXQwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL2Ny +bC5lbnRydXN0Lm5ldC9nMmNhLmNybDA7BgNVHSAENDAyMDAGBFUdIAAwKDAmBggr +BgEFBQcCARYaaHR0cDovL3d3dy5lbnRydXN0Lm5ldC9ycGEwHQYDVR0OBBYEFIKi +cHTdvFM/z3vU981/p2DGCky/MB8GA1UdIwQYMBaAFGpyJnrQHu995ztpUdRsjZ+Q +EmarMA0GCSqGSIb3DQEBCwUAA4IBAQA/HBpb/0AiHY81DC2qmSerwBEycNc2KGml +jbEnmUK+xJPrSFdDcSPE5U6trkNvknbFGe/KvG9CTBaahqkEOMdl8PUM4ErfovrO +GhGonGkvG9/q4jLzzky8RgzAiYDRh2uiz2vUf/31YFJnV6Bt0WRBFG00Yu0GbCTy +BrwoAq8DLcIzBfvLqhboZRBD9Wlc44FYmc1r07jHexlVyUDOeVW4c4npXEBmQxJ/ +B7hlVtWNw6f1sbZlnsCDNn8WRTx0S5OKPPEr9TVwc3vnggSxGJgO1JxvGvz8pzOl +u7sY82t6XTKH920l5OJ2hiEeEUbNdg5vT6QhcQqEpy02qUgiUX6C +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_40[] = { + 0x30, 0x82, 0x05, 0x03, 0x30, 0x82, 0x03, 0xeb, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x51, 0xd3, 0x60, 0xee, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xbe, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x1f, 0x53, 0x65, 0x65, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, + 0x61, 0x6c, 0x2d, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, + 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, + 0x30, 0x30, 0x39, 0x20, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, + 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, + 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x32, 0x30, 0x30, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x29, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, + 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x31, 0x30, 0x32, 0x32, 0x31, 0x37, 0x30, + 0x35, 0x31, 0x34, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x31, 0x30, 0x32, 0x33, + 0x30, 0x37, 0x33, 0x33, 0x32, 0x32, 0x5a, 0x30, 0x81, 0xba, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x45, 0x6e, + 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, + 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, 0x53, 0x65, + 0x65, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x2d, + 0x74, 0x65, 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x31, 0x32, + 0x20, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, + 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x25, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, + 0x20, 0x4c, 0x31, 0x4b, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, + 0x00, 0xda, 0x3f, 0x96, 0xd0, 0x4d, 0xb9, 0x2f, 0x44, 0xe7, 0xdb, 0x39, + 0x5e, 0x9b, 0x50, 0xee, 0x5c, 0xa5, 0x61, 0xda, 0x41, 0x67, 0x53, 0x09, + 0xaa, 0x00, 0x9a, 0x8e, 0x57, 0x7f, 0x29, 0x6b, 0xdb, 0xc7, 0xe1, 0x21, + 0x24, 0xaa, 0x3a, 0xd0, 0x8d, 0x47, 0x23, 0xd2, 0xed, 0x72, 0x16, 0xf0, + 0x91, 0x21, 0xd2, 0x5d, 0xb7, 0xb8, 0x4b, 0xa8, 0x83, 0x8f, 0xb7, 0x91, + 0x32, 0x68, 0xcf, 0xce, 0x25, 0x93, 0x2c, 0xb2, 0x7d, 0x97, 0xc8, 0xfe, + 0xc1, 0xb4, 0x17, 0xba, 0x09, 0x9e, 0x03, 0x90, 0x93, 0x7b, 0x7c, 0x49, + 0x83, 0x22, 0x68, 0x8a, 0x9b, 0xde, 0x47, 0xc3, 0x31, 0x98, 0x7a, 0x2e, + 0x7d, 0x40, 0x0b, 0xd2, 0xef, 0x3e, 0xd3, 0xb2, 0x8c, 0xaa, 0x8f, 0x48, + 0xa9, 0xff, 0x00, 0xe8, 0x29, 0x58, 0x06, 0xf7, 0xb6, 0x93, 0x5a, 0x94, + 0x73, 0x26, 0x26, 0xad, 0x58, 0x0e, 0xe5, 0x42, 0xb8, 0xd5, 0xea, 0x73, + 0x79, 0x64, 0x68, 0x53, 0x25, 0xb8, 0x84, 0xcf, 0x94, 0x7a, 0xae, 0x06, + 0x45, 0x0c, 0xa3, 0x6b, 0x4d, 0xd0, 0xc6, 0xbe, 0xea, 0x18, 0xa4, 0x36, + 0xf0, 0x92, 0xb2, 0xba, 0x1c, 0x88, 0x8f, 0x3a, 0x52, 0x7f, 0xf7, 0x5e, + 0x6d, 0x83, 0x1c, 0x9d, 0xf0, 0x1f, 0xe5, 0xc3, 0xd6, 0xdd, 0xa5, 0x78, + 0x92, 0x3d, 0xb0, 0x6d, 0x2c, 0xea, 0xc9, 0xcf, 0x94, 0x41, 0x19, 0x71, + 0x44, 0x68, 0xba, 0x47, 0x3c, 0x04, 0xe9, 0x5d, 0xba, 0x3e, 0xf0, 0x35, + 0xf7, 0x15, 0xb6, 0x9e, 0xf2, 0x2e, 0x15, 0x1e, 0x3f, 0x47, 0xc8, 0xc8, + 0x38, 0xa7, 0x73, 0x45, 0x5d, 0x4d, 0xb0, 0x3b, 0xb1, 0x8e, 0x17, 0x29, + 0x37, 0xea, 0xdd, 0x05, 0x01, 0x22, 0xbb, 0x94, 0x36, 0x2a, 0x8d, 0x5b, + 0x35, 0xfe, 0x53, 0x19, 0x2f, 0x08, 0x46, 0xc1, 0x2a, 0xb3, 0x1a, 0x62, + 0x1d, 0x4e, 0x2b, 0xd9, 0x1b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x01, 0x09, 0x30, 0x82, 0x01, 0x05, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, + 0x02, 0x01, 0x00, 0x30, 0x33, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x27, 0x30, 0x25, 0x30, 0x23, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x17, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x65, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x30, 0x30, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x29, 0x30, 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, + 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, + 0x74, 0x2f, 0x67, 0x32, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x70, 0x61, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x82, 0xa2, + 0x70, 0x74, 0xdd, 0xbc, 0x53, 0x3f, 0xcf, 0x7b, 0xd4, 0xf7, 0xcd, 0x7f, + 0xa7, 0x60, 0xc6, 0x0a, 0x4c, 0xbf, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x6a, 0x72, 0x26, 0x7a, 0xd0, + 0x1e, 0xef, 0x7d, 0xe7, 0x3b, 0x69, 0x51, 0xd4, 0x6c, 0x8d, 0x9f, 0x90, + 0x12, 0x66, 0xab, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x3f, + 0x1c, 0x1a, 0x5b, 0xff, 0x40, 0x22, 0x1d, 0x8f, 0x35, 0x0c, 0x2d, 0xaa, + 0x99, 0x27, 0xab, 0xc0, 0x11, 0x32, 0x70, 0xd7, 0x36, 0x28, 0x69, 0xa5, + 0x8d, 0xb1, 0x27, 0x99, 0x42, 0xbe, 0xc4, 0x93, 0xeb, 0x48, 0x57, 0x43, + 0x71, 0x23, 0xc4, 0xe5, 0x4e, 0xad, 0xae, 0x43, 0x6f, 0x92, 0x76, 0xc5, + 0x19, 0xef, 0xca, 0xbc, 0x6f, 0x42, 0x4c, 0x16, 0x9a, 0x86, 0xa9, 0x04, + 0x38, 0xc7, 0x65, 0xf0, 0xf5, 0x0c, 0xe0, 0x4a, 0xdf, 0xa2, 0xfa, 0xce, + 0x1a, 0x11, 0xa8, 0x9c, 0x69, 0x2f, 0x1b, 0xdf, 0xea, 0xe2, 0x32, 0xf3, + 0xce, 0x4c, 0xbc, 0x46, 0x0c, 0xc0, 0x89, 0x80, 0xd1, 0x87, 0x6b, 0xa2, + 0xcf, 0x6b, 0xd4, 0x7f, 0xfd, 0xf5, 0x60, 0x52, 0x67, 0x57, 0xa0, 0x6d, + 0xd1, 0x64, 0x41, 0x14, 0x6d, 0x34, 0x62, 0xed, 0x06, 0x6c, 0x24, 0xf2, + 0x06, 0xbc, 0x28, 0x02, 0xaf, 0x03, 0x2d, 0xc2, 0x33, 0x05, 0xfb, 0xcb, + 0xaa, 0x16, 0xe8, 0x65, 0x10, 0x43, 0xf5, 0x69, 0x5c, 0xe3, 0x81, 0x58, + 0x99, 0xcd, 0x6b, 0xd3, 0xb8, 0xc7, 0x7b, 0x19, 0x55, 0xc9, 0x40, 0xce, + 0x79, 0x55, 0xb8, 0x73, 0x89, 0xe9, 0x5c, 0x40, 0x66, 0x43, 0x12, 0x7f, + 0x07, 0xb8, 0x65, 0x56, 0xd5, 0x8d, 0xc3, 0xa7, 0xf5, 0xb1, 0xb6, 0x65, + 0x9e, 0xc0, 0x83, 0x36, 0x7f, 0x16, 0x45, 0x3c, 0x74, 0x4b, 0x93, 0x8a, + 0x3c, 0xf1, 0x2b, 0xf5, 0x35, 0x70, 0x73, 0x7b, 0xe7, 0x82, 0x04, 0xb1, + 0x18, 0x98, 0x0e, 0xd4, 0x9c, 0x6f, 0x1a, 0xfc, 0xfc, 0xa7, 0x33, 0xa5, + 0xbb, 0xbb, 0x18, 0xf3, 0x6b, 0x7a, 0x5d, 0x32, 0x87, 0xf7, 0x6d, 0x25, + 0xe4, 0xe2, 0x76, 0x86, 0x21, 0x1e, 0x11, 0x46, 0xcd, 0x76, 0x0e, 0x6f, + 0x4f, 0xa4, 0x21, 0x71, 0x0a, 0x84, 0xa7, 0x2d, 0x36, 0xa9, 0x48, 0x22, + 0x51, 0x7e, 0x82, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 120038507 (0x727a46b) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=IE, O=Baltimore, OU=CyberTrust, CN=Baltimore CyberTrust Root + Validity + Not Before: Apr 2 14:36:10 2014 GMT + Not After : Apr 2 14:35:52 2021 GMT + Subject: C=NL, L=Amsterdam, O=Verizon Enterprise Solutions, OU=Cybertrust, CN=Verizon Akamai SureServer CA G14-SHA2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:dd:6e:9e:02:69:02:b5:a3:99:2e:08:64:32:6a: + 59:f3:c6:9e:a6:20:07:d2:48:d1:a8:93:c7:ea:47: + 8f:83:39:40:d7:20:5d:8d:9a:ba:ab:d8:70:ec:9d: + 88:d1:bd:62:f6:db:ec:9d:5e:35:01:76:03:23:e5: + 6f:d2:af:46:35:59:5a:5c:d1:a8:23:c1:eb:e9:20: + d4:49:d6:3f:00:d8:a8:22:de:43:79:81:ac:e9:a4: + 92:f5:77:70:05:1e:5c:b6:a0:f7:90:a4:cd:ab:28: + 2c:90:c2:e7:0f:c3:af:1c:47:59:d5:84:2e:df:26: + 07:45:23:5a:c6:e8:90:c8:85:4b:8c:16:1e:60:f9: + 01:13:f1:14:1f:e6:e8:14:ed:c5:d2:6f:63:28:6e: + 72:8c:49:ae:08:72:c7:93:95:b4:0b:0c:ae:8f:9a: + 67:84:f5:57:1b:db:81:d7:17:9d:41:11:43:19:bd: + 6d:4a:85:ed:8f:70:25:ab:66:ab:f6:fa:6d:1c:3c: + ab:ed:17:bd:56:84:e1:db:75:33:b2:28:4b:99:8e: + f9:4b:82:33:50:9f:92:53:ed:fa:ad:0f:95:9c:a3: + f2:cb:60:f0:77:1d:c9:01:8b:5f:2d:86:be:bf:36: + b8:24:96:13:7c:c1:86:5a:6c:c1:48:2a:7f:3e:93: + 60:c5 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:2 + X509v3 Certificate Policies: + Policy: 1.3.6.1.4.1.6334.1.50 + CPS: https://secure.omniroot.com/repository + + Authority Information Access: + OCSP - URI:http://ocsp.omniroot.com/baltimoreroot + CA Issuers - URI:https://cacert.omniroot.com/baltimoreroot.crt + CA Issuers - URI:https://cacert.omniroot.com/baltimoreroot.der + + X509v3 Key Usage: critical + Digital Signature, Non Repudiation, Certificate Sign, CRL Sign + X509v3 Authority Key Identifier: + keyid:E5:9D:59:30:82:47:58:CC:AC:FA:08:54:36:86:7B:3A:B5:04:4D:F0 + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://cdp1.public-trust.com/CRL/Omniroot2025.crl + + X509v3 Subject Key Identifier: + F8:BD:FA:AF:73:77:C6:C7:1B:F9:4B:4D:11:A7:D1:33:AF:AF:72:11 + Signature Algorithm: sha256WithRSAEncryption + 80:d9:7a:ed:72:05:37:8f:61:aa:73:7c:9a:6a:fc:fe:01:e2: + 19:81:70:07:25:32:b0:f0:6f:3b:c7:6a:28:3d:e4:51:87:e6: + 7e:82:ec:ae:48:a7:b1:77:38:c2:d6:56:af:8f:f2:01:fc:65: + 65:10:09:f7:74:29:b5:0e:92:ee:90:98:d1:88:a2:65:b7:cd: + 9c:0e:a7:86:98:28:bc:ae:15:83:b6:1a:d7:1d:ec:19:da:7a: + 8e:40:f9:99:15:d5:7d:a5:ba:ab:fd:26:98:6e:9c:41:3b:b6: + 81:18:ec:70:48:d7:6e:7f:a6:e1:77:25:d6:dd:62:e8:52:f3: + 8c:16:39:67:e2:22:0d:77:2e:fb:11:6c:e4:dd:38:b4:27:5f: + 03:a8:3d:44:e2:f2:84:4b:84:fd:56:a6:9e:4d:7b:a2:16:4f: + 07:f5:34:24:72:a5:a2:fa:16:66:2a:a4:4a:0e:c8:0d:27:44: + 9c:77:d4:12:10:87:d2:00:2c:7a:bb:8e:88:22:91:15:be:a2: + 59:ca:34:e0:1c:61:94:86:20:33:cd:e7:4c:5d:3b:92:3e:cb: + d6:2d:ea:54:fa:fb:af:54:f5:a8:c5:0b:ca:8b:87:00:e6:9f: + e6:95:bf:b7:c4:a3:59:f5:16:6c:5f:3e:69:55:80:39:f6:75: + 50:14:3e:32 +-----BEGIN CERTIFICATE----- +MIIFHzCCBAegAwIBAgIEByekazANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJJ +RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD +VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTE0MDQwMjE0MzYxMFoX +DTIxMDQwMjE0MzU1MlowgY0xCzAJBgNVBAYTAk5MMRIwEAYDVQQHEwlBbXN0ZXJk +YW0xJTAjBgNVBAoTHFZlcml6b24gRW50ZXJwcmlzZSBTb2x1dGlvbnMxEzARBgNV +BAsTCkN5YmVydHJ1c3QxLjAsBgNVBAMTJVZlcml6b24gQWthbWFpIFN1cmVTZXJ2 +ZXIgQ0EgRzE0LVNIQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDd +bp4CaQK1o5kuCGQyalnzxp6mIAfSSNGok8fqR4+DOUDXIF2Nmrqr2HDsnYjRvWL2 +2+ydXjUBdgMj5W/Sr0Y1WVpc0agjwevpINRJ1j8A2Kgi3kN5gazppJL1d3AFHly2 +oPeQpM2rKCyQwucPw68cR1nVhC7fJgdFI1rG6JDIhUuMFh5g+QET8RQf5ugU7cXS +b2MobnKMSa4IcseTlbQLDK6PmmeE9Vcb24HXF51BEUMZvW1Khe2PcCWrZqv2+m0c +PKvtF71WhOHbdTOyKEuZjvlLgjNQn5JT7fqtD5Wco/LLYPB3HckBi18thr6/Nrgk +lhN8wYZabMFIKn8+k2DFAgMBAAGjggG3MIIBszASBgNVHRMBAf8ECDAGAQH/AgEC +MEwGA1UdIARFMEMwQQYJKwYBBAGxPgEyMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8v +c2VjdXJlLm9tbmlyb290LmNvbS9yZXBvc2l0b3J5MIG6BggrBgEFBQcBAQSBrTCB +qjAyBggrBgEFBQcwAYYmaHR0cDovL29jc3Aub21uaXJvb3QuY29tL2JhbHRpbW9y +ZXJvb3QwOQYIKwYBBQUHMAKGLWh0dHBzOi8vY2FjZXJ0Lm9tbmlyb290LmNvbS9i +YWx0aW1vcmVyb290LmNydDA5BggrBgEFBQcwAoYtaHR0cHM6Ly9jYWNlcnQub21u +aXJvb3QuY29tL2JhbHRpbW9yZXJvb3QuZGVyMA4GA1UdDwEB/wQEAwIBxjAfBgNV +HSMEGDAWgBTlnVkwgkdYzKz6CFQ2hns6tQRN8DBCBgNVHR8EOzA5MDegNaAzhjFo +dHRwOi8vY2RwMS5wdWJsaWMtdHJ1c3QuY29tL0NSTC9PbW5pcm9vdDIwMjUuY3Js +MB0GA1UdDgQWBBT4vfqvc3fGxxv5S00Rp9Ezr69yETANBgkqhkiG9w0BAQsFAAOC +AQEAgNl67XIFN49hqnN8mmr8/gHiGYFwByUysPBvO8dqKD3kUYfmfoLsrkinsXc4 +wtZWr4/yAfxlZRAJ93QptQ6S7pCY0YiiZbfNnA6nhpgovK4Vg7Ya1x3sGdp6jkD5 +mRXVfaW6q/0mmG6cQTu2gRjscEjXbn+m4Xcl1t1i6FLzjBY5Z+IiDXcu+xFs5N04 +tCdfA6g9ROLyhEuE/Vamnk17ohZPB/U0JHKlovoWZiqkSg7IDSdEnHfUEhCH0gAs +eruOiCKRFb6iWco04BxhlIYgM83nTF07kj7L1i3qVPr7r1T1qMULyouHAOaf5pW/ +t8SjWfUWbF8+aVWAOfZ1UBQ+Mg== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_41[] = { + 0x30, 0x82, 0x05, 0x1f, 0x30, 0x82, 0x04, 0x07, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0xa4, 0x6b, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, + 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, + 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, + 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, + 0x30, 0x34, 0x30, 0x32, 0x31, 0x34, 0x33, 0x36, 0x31, 0x30, 0x5a, 0x17, + 0x0d, 0x32, 0x31, 0x30, 0x34, 0x30, 0x32, 0x31, 0x34, 0x33, 0x35, 0x35, + 0x32, 0x5a, 0x30, 0x81, 0x8d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, + 0x55, 0x04, 0x07, 0x13, 0x09, 0x41, 0x6d, 0x73, 0x74, 0x65, 0x72, 0x64, + 0x61, 0x6d, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x1c, 0x56, 0x65, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x20, 0x45, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x20, 0x53, 0x6f, 0x6c, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x25, 0x56, 0x65, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x20, 0x41, 0x6b, 0x61, + 0x6d, 0x61, 0x69, 0x20, 0x53, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x47, 0x31, 0x34, 0x2d, 0x53, 0x48, + 0x41, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xdd, + 0x6e, 0x9e, 0x02, 0x69, 0x02, 0xb5, 0xa3, 0x99, 0x2e, 0x08, 0x64, 0x32, + 0x6a, 0x59, 0xf3, 0xc6, 0x9e, 0xa6, 0x20, 0x07, 0xd2, 0x48, 0xd1, 0xa8, + 0x93, 0xc7, 0xea, 0x47, 0x8f, 0x83, 0x39, 0x40, 0xd7, 0x20, 0x5d, 0x8d, + 0x9a, 0xba, 0xab, 0xd8, 0x70, 0xec, 0x9d, 0x88, 0xd1, 0xbd, 0x62, 0xf6, + 0xdb, 0xec, 0x9d, 0x5e, 0x35, 0x01, 0x76, 0x03, 0x23, 0xe5, 0x6f, 0xd2, + 0xaf, 0x46, 0x35, 0x59, 0x5a, 0x5c, 0xd1, 0xa8, 0x23, 0xc1, 0xeb, 0xe9, + 0x20, 0xd4, 0x49, 0xd6, 0x3f, 0x00, 0xd8, 0xa8, 0x22, 0xde, 0x43, 0x79, + 0x81, 0xac, 0xe9, 0xa4, 0x92, 0xf5, 0x77, 0x70, 0x05, 0x1e, 0x5c, 0xb6, + 0xa0, 0xf7, 0x90, 0xa4, 0xcd, 0xab, 0x28, 0x2c, 0x90, 0xc2, 0xe7, 0x0f, + 0xc3, 0xaf, 0x1c, 0x47, 0x59, 0xd5, 0x84, 0x2e, 0xdf, 0x26, 0x07, 0x45, + 0x23, 0x5a, 0xc6, 0xe8, 0x90, 0xc8, 0x85, 0x4b, 0x8c, 0x16, 0x1e, 0x60, + 0xf9, 0x01, 0x13, 0xf1, 0x14, 0x1f, 0xe6, 0xe8, 0x14, 0xed, 0xc5, 0xd2, + 0x6f, 0x63, 0x28, 0x6e, 0x72, 0x8c, 0x49, 0xae, 0x08, 0x72, 0xc7, 0x93, + 0x95, 0xb4, 0x0b, 0x0c, 0xae, 0x8f, 0x9a, 0x67, 0x84, 0xf5, 0x57, 0x1b, + 0xdb, 0x81, 0xd7, 0x17, 0x9d, 0x41, 0x11, 0x43, 0x19, 0xbd, 0x6d, 0x4a, + 0x85, 0xed, 0x8f, 0x70, 0x25, 0xab, 0x66, 0xab, 0xf6, 0xfa, 0x6d, 0x1c, + 0x3c, 0xab, 0xed, 0x17, 0xbd, 0x56, 0x84, 0xe1, 0xdb, 0x75, 0x33, 0xb2, + 0x28, 0x4b, 0x99, 0x8e, 0xf9, 0x4b, 0x82, 0x33, 0x50, 0x9f, 0x92, 0x53, + 0xed, 0xfa, 0xad, 0x0f, 0x95, 0x9c, 0xa3, 0xf2, 0xcb, 0x60, 0xf0, 0x77, + 0x1d, 0xc9, 0x01, 0x8b, 0x5f, 0x2d, 0x86, 0xbe, 0xbf, 0x36, 0xb8, 0x24, + 0x96, 0x13, 0x7c, 0xc1, 0x86, 0x5a, 0x6c, 0xc1, 0x48, 0x2a, 0x7f, 0x3e, + 0x93, 0x60, 0xc5, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0xb7, + 0x30, 0x82, 0x01, 0xb3, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x02, + 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, + 0x41, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e, 0x01, 0x32, + 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, + 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x30, 0x81, 0xba, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x81, 0xad, 0x30, 0x81, + 0xaa, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x01, 0x86, 0x26, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, + 0x73, 0x70, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, + 0x65, 0x72, 0x6f, 0x6f, 0x74, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x73, + 0x3a, 0x2f, 0x2f, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x6f, 0x6d, + 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, + 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x6f, 0x6f, 0x74, + 0x2e, 0x63, 0x72, 0x74, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, + 0x2f, 0x2f, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x6f, 0x6d, 0x6e, + 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x61, + 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x6f, 0x6f, 0x74, 0x2e, + 0x64, 0x65, 0x72, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0xc6, 0x30, 0x1f, 0x06, 0x03, 0x55, + 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe5, 0x9d, 0x59, 0x30, + 0x82, 0x47, 0x58, 0xcc, 0xac, 0xfa, 0x08, 0x54, 0x36, 0x86, 0x7b, 0x3a, + 0xb5, 0x04, 0x4d, 0xf0, 0x30, 0x42, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, + 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x64, 0x70, 0x31, 0x2e, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x4f, 0x6d, 0x6e, 0x69, + 0x72, 0x6f, 0x6f, 0x74, 0x32, 0x30, 0x32, 0x35, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xf8, + 0xbd, 0xfa, 0xaf, 0x73, 0x77, 0xc6, 0xc7, 0x1b, 0xf9, 0x4b, 0x4d, 0x11, + 0xa7, 0xd1, 0x33, 0xaf, 0xaf, 0x72, 0x11, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x01, 0x00, 0x80, 0xd9, 0x7a, 0xed, 0x72, 0x05, 0x37, 0x8f, 0x61, + 0xaa, 0x73, 0x7c, 0x9a, 0x6a, 0xfc, 0xfe, 0x01, 0xe2, 0x19, 0x81, 0x70, + 0x07, 0x25, 0x32, 0xb0, 0xf0, 0x6f, 0x3b, 0xc7, 0x6a, 0x28, 0x3d, 0xe4, + 0x51, 0x87, 0xe6, 0x7e, 0x82, 0xec, 0xae, 0x48, 0xa7, 0xb1, 0x77, 0x38, + 0xc2, 0xd6, 0x56, 0xaf, 0x8f, 0xf2, 0x01, 0xfc, 0x65, 0x65, 0x10, 0x09, + 0xf7, 0x74, 0x29, 0xb5, 0x0e, 0x92, 0xee, 0x90, 0x98, 0xd1, 0x88, 0xa2, + 0x65, 0xb7, 0xcd, 0x9c, 0x0e, 0xa7, 0x86, 0x98, 0x28, 0xbc, 0xae, 0x15, + 0x83, 0xb6, 0x1a, 0xd7, 0x1d, 0xec, 0x19, 0xda, 0x7a, 0x8e, 0x40, 0xf9, + 0x99, 0x15, 0xd5, 0x7d, 0xa5, 0xba, 0xab, 0xfd, 0x26, 0x98, 0x6e, 0x9c, + 0x41, 0x3b, 0xb6, 0x81, 0x18, 0xec, 0x70, 0x48, 0xd7, 0x6e, 0x7f, 0xa6, + 0xe1, 0x77, 0x25, 0xd6, 0xdd, 0x62, 0xe8, 0x52, 0xf3, 0x8c, 0x16, 0x39, + 0x67, 0xe2, 0x22, 0x0d, 0x77, 0x2e, 0xfb, 0x11, 0x6c, 0xe4, 0xdd, 0x38, + 0xb4, 0x27, 0x5f, 0x03, 0xa8, 0x3d, 0x44, 0xe2, 0xf2, 0x84, 0x4b, 0x84, + 0xfd, 0x56, 0xa6, 0x9e, 0x4d, 0x7b, 0xa2, 0x16, 0x4f, 0x07, 0xf5, 0x34, + 0x24, 0x72, 0xa5, 0xa2, 0xfa, 0x16, 0x66, 0x2a, 0xa4, 0x4a, 0x0e, 0xc8, + 0x0d, 0x27, 0x44, 0x9c, 0x77, 0xd4, 0x12, 0x10, 0x87, 0xd2, 0x00, 0x2c, + 0x7a, 0xbb, 0x8e, 0x88, 0x22, 0x91, 0x15, 0xbe, 0xa2, 0x59, 0xca, 0x34, + 0xe0, 0x1c, 0x61, 0x94, 0x86, 0x20, 0x33, 0xcd, 0xe7, 0x4c, 0x5d, 0x3b, + 0x92, 0x3e, 0xcb, 0xd6, 0x2d, 0xea, 0x54, 0xfa, 0xfb, 0xaf, 0x54, 0xf5, + 0xa8, 0xc5, 0x0b, 0xca, 0x8b, 0x87, 0x00, 0xe6, 0x9f, 0xe6, 0x95, 0xbf, + 0xb7, 0xc4, 0xa3, 0x59, 0xf5, 0x16, 0x6c, 0x5f, 0x3e, 0x69, 0x55, 0x80, + 0x39, 0xf6, 0x75, 0x50, 0x14, 0x3e, 0x32, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 7e:e1:4a:6f:6f:ef:f2:d3:7f:3f:ad:65:4d:3a:da:b4 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 2006 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 3 Public Primary Certification Authority - G5 + Validity + Not Before: Oct 31 00:00:00 2013 GMT + Not After : Oct 30 23:59:59 2023 GMT + Subject: C=US, O=Symantec Corporation, OU=Symantec Trust Network, CN=Symantec Class 3 EV SSL CA - G3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:d8:a1:65:74:23:e8:2b:64:e2:32:d7:33:37:3d: + 8e:f5:34:16:48:dd:4f:7f:87:1c:f8:44:23:13:8e: + fb:11:d8:44:5a:18:71:8e:60:16:26:92:9b:fd:17: + 0b:e1:71:70:42:fe:bf:fa:1c:c0:aa:a3:a7:b5:71: + e8:ff:18:83:f6:df:10:0a:13:62:c8:3d:9c:a7:de: + 2e:3f:0c:d9:1d:e7:2e:fb:2a:ce:c8:9a:7f:87:bf: + d8:4c:04:15:32:c9:d1:cc:95:71:a0:4e:28:4f:84: + d9:35:fb:e3:86:6f:94:53:e6:72:8a:63:67:2e:be: + 69:f6:f7:6e:8e:9c:60:04:eb:29:fa:c4:47:42:d2: + 78:98:e3:ec:0b:a5:92:dc:b7:9a:bd:80:64:2b:38: + 7c:38:09:5b:66:f6:2d:95:7a:86:b2:34:2e:85:9e: + 90:0e:5f:b7:5d:a4:51:72:46:70:13:bf:67:f2:b6: + a7:4d:14:1e:6c:b9:53:ee:23:1a:4e:8d:48:55:43: + 41:b1:89:75:6a:40:28:c5:7d:dd:d2:6e:d2:02:19: + 2f:7b:24:94:4b:eb:f1:1a:a9:9b:e3:23:9a:ea:fa: + 33:ab:0a:2c:b7:f4:60:08:dd:9f:1c:cd:dd:2d:01: + 66:80:af:b3:2f:29:1d:23:b8:8a:e1:a1:70:07:0c: + 34:0f + Exponent: 65537 (0x10001) + X509v3 extensions: + Authority Information Access: + OCSP - URI:http://s2.symcb.com + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: http://www.symauth.com/cps + User Notice: + Explicit Text: http://www.symauth.com/rpa + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://s1.symcb.com/pca3-g5.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Alternative Name: + DirName:/CN=SymantecPKI-1-533 + X509v3 Subject Key Identifier: + 01:59:AB:E7:DD:3A:0B:59:A6:64:63:D6:CF:20:07:57:D5:91:E7:6A + X509v3 Authority Key Identifier: + keyid:7F:D3:65:A7:C2:DD:EC:BB:F0:30:09:F3:43:39:FA:02:AF:33:31:33 + + Signature Algorithm: sha256WithRSAEncryption + 42:01:55:7b:d0:16:1a:5d:58:e8:bb:9b:a8:4d:d7:f3:d7:eb: + 13:94:86:d6:7f:21:0b:47:bc:57:9b:92:5d:4f:05:9f:38:a4: + 10:7c:cf:83:be:06:43:46:8d:08:bc:6a:d7:10:a6:fa:ab:af: + 2f:61:a8:63:f2:65:df:7f:4c:88:12:88:4f:b3:69:d9:ff:27: + c0:0a:97:91:8f:56:fb:89:c4:a8:bb:92:2d:1b:73:b0:c6:ab: + 36:f4:96:6c:20:08:ef:0a:1e:66:24:45:4f:67:00:40:c8:07: + 54:74:33:3b:a6:ad:bb:23:9f:66:ed:a2:44:70:34:fb:0e:ea: + 01:fd:cf:78:74:df:a7:ad:55:b7:5f:4d:f6:d6:3f:e0:86:ce: + 24:c7:42:a9:13:14:44:35:4b:b6:df:c9:60:ac:0c:7f:d9:93: + 21:4b:ee:9c:e4:49:02:98:d3:60:7b:5c:bc:d5:30:2f:07:ce: + 44:42:c4:0b:99:fe:e6:9f:fc:b0:78:86:51:6d:d1:2c:9d:c6: + 96:fb:85:82:bb:04:2f:f7:62:80:ef:62:da:7f:f6:0e:ac:90: + b8:56:bd:79:3f:f2:80:6e:a3:d9:b9:0f:5d:3a:07:1d:91:93: + 86:4b:29:4c:e1:dc:b5:e1:e0:33:9d:b3:cb:36:91:4b:fe:a1: + b4:ee:f0:f9 +-----BEGIN CERTIFICATE----- +MIIFKzCCBBOgAwIBAgIQfuFKb2/v8tN/P61lTTratDANBgkqhkiG9w0BAQsFADCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW +ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IC0gRzUwHhcNMTMxMDMxMDAwMDAwWhcNMjMxMDMwMjM1OTU5WjB3MQsw +CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV +BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMTH1N5bWFudGVjIENs +YXNzIDMgRVYgU1NMIENBIC0gRzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQDYoWV0I+grZOIy1zM3PY71NBZI3U9/hxz4RCMTjvsR2ERaGHGOYBYmkpv9 +FwvhcXBC/r/6HMCqo6e1cej/GIP23xAKE2LIPZyn3i4/DNkd5y77Ks7Imn+Hv9hM +BBUyydHMlXGgTihPhNk1++OGb5RT5nKKY2cuvmn2926OnGAE6yn6xEdC0niY4+wL +pZLct5q9gGQrOHw4CVtm9i2VeoayNC6FnpAOX7ddpFFyRnATv2fytqdNFB5suVPu +IxpOjUhVQ0GxiXVqQCjFfd3SbtICGS97JJRL6/EaqZvjI5rq+jOrCiy39GAI3Z8c +zd0tAWaAr7MvKR0juIrhoXAHDDQPAgMBAAGjggFdMIIBWTAvBggrBgEFBQcBAQQj +MCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly9zMi5zeW1jYi5jb20wEgYDVR0TAQH/BAgw +BgEB/wIBADBlBgNVHSAEXjBcMFoGBFUdIAAwUjAmBggrBgEFBQcCARYaaHR0cDov +L3d3dy5zeW1hdXRoLmNvbS9jcHMwKAYIKwYBBQUHAgIwHBoaaHR0cDovL3d3dy5z +eW1hdXRoLmNvbS9ycGEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3MxLnN5bWNi +LmNvbS9wY2EzLWc1LmNybDAOBgNVHQ8BAf8EBAMCAQYwKQYDVR0RBCIwIKQeMBwx +GjAYBgNVBAMTEVN5bWFudGVjUEtJLTEtNTMzMB0GA1UdDgQWBBQBWavn3ToLWaZk +Y9bPIAdX1ZHnajAfBgNVHSMEGDAWgBR/02Wnwt3su/AwCfNDOfoCrzMxMzANBgkq +hkiG9w0BAQsFAAOCAQEAQgFVe9AWGl1Y6LubqE3X89frE5SG1n8hC0e8V5uSXU8F +nzikEHzPg74GQ0aNCLxq1xCm+quvL2GoY/Jl339MiBKIT7Np2f8nwAqXkY9W+4nE +qLuSLRtzsMarNvSWbCAI7woeZiRFT2cAQMgHVHQzO6atuyOfZu2iRHA0+w7qAf3P +eHTfp61Vt19N9tY/4IbOJMdCqRMURDVLtt/JYKwMf9mTIUvunORJApjTYHtcvNUw +LwfORELEC5n+5p/8sHiGUW3RLJ3GlvuFgrsEL/digO9i2n/2DqyQuFa9eT/ygG6j +2bkPXToHHZGThkspTOHcteHgM52zyzaRS/6htO7w+Q== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_42[] = { + 0x30, 0x82, 0x05, 0x2b, 0x30, 0x82, 0x04, 0x13, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x7e, 0xe1, 0x4a, 0x6f, 0x6f, 0xef, 0xf2, 0xd3, 0x7f, + 0x3f, 0xad, 0x65, 0x4d, 0x3a, 0xda, 0xb4, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, + 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, + 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, + 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, 0x30, 0x33, 0x30, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x77, 0x31, 0x0b, 0x30, + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1d, + 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x53, 0x79, 0x6d, + 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x16, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x1f, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x45, 0x56, 0x20, 0x53, 0x53, 0x4c, + 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xd8, 0xa1, 0x65, 0x74, 0x23, 0xe8, 0x2b, + 0x64, 0xe2, 0x32, 0xd7, 0x33, 0x37, 0x3d, 0x8e, 0xf5, 0x34, 0x16, 0x48, + 0xdd, 0x4f, 0x7f, 0x87, 0x1c, 0xf8, 0x44, 0x23, 0x13, 0x8e, 0xfb, 0x11, + 0xd8, 0x44, 0x5a, 0x18, 0x71, 0x8e, 0x60, 0x16, 0x26, 0x92, 0x9b, 0xfd, + 0x17, 0x0b, 0xe1, 0x71, 0x70, 0x42, 0xfe, 0xbf, 0xfa, 0x1c, 0xc0, 0xaa, + 0xa3, 0xa7, 0xb5, 0x71, 0xe8, 0xff, 0x18, 0x83, 0xf6, 0xdf, 0x10, 0x0a, + 0x13, 0x62, 0xc8, 0x3d, 0x9c, 0xa7, 0xde, 0x2e, 0x3f, 0x0c, 0xd9, 0x1d, + 0xe7, 0x2e, 0xfb, 0x2a, 0xce, 0xc8, 0x9a, 0x7f, 0x87, 0xbf, 0xd8, 0x4c, + 0x04, 0x15, 0x32, 0xc9, 0xd1, 0xcc, 0x95, 0x71, 0xa0, 0x4e, 0x28, 0x4f, + 0x84, 0xd9, 0x35, 0xfb, 0xe3, 0x86, 0x6f, 0x94, 0x53, 0xe6, 0x72, 0x8a, + 0x63, 0x67, 0x2e, 0xbe, 0x69, 0xf6, 0xf7, 0x6e, 0x8e, 0x9c, 0x60, 0x04, + 0xeb, 0x29, 0xfa, 0xc4, 0x47, 0x42, 0xd2, 0x78, 0x98, 0xe3, 0xec, 0x0b, + 0xa5, 0x92, 0xdc, 0xb7, 0x9a, 0xbd, 0x80, 0x64, 0x2b, 0x38, 0x7c, 0x38, + 0x09, 0x5b, 0x66, 0xf6, 0x2d, 0x95, 0x7a, 0x86, 0xb2, 0x34, 0x2e, 0x85, + 0x9e, 0x90, 0x0e, 0x5f, 0xb7, 0x5d, 0xa4, 0x51, 0x72, 0x46, 0x70, 0x13, + 0xbf, 0x67, 0xf2, 0xb6, 0xa7, 0x4d, 0x14, 0x1e, 0x6c, 0xb9, 0x53, 0xee, + 0x23, 0x1a, 0x4e, 0x8d, 0x48, 0x55, 0x43, 0x41, 0xb1, 0x89, 0x75, 0x6a, + 0x40, 0x28, 0xc5, 0x7d, 0xdd, 0xd2, 0x6e, 0xd2, 0x02, 0x19, 0x2f, 0x7b, + 0x24, 0x94, 0x4b, 0xeb, 0xf1, 0x1a, 0xa9, 0x9b, 0xe3, 0x23, 0x9a, 0xea, + 0xfa, 0x33, 0xab, 0x0a, 0x2c, 0xb7, 0xf4, 0x60, 0x08, 0xdd, 0x9f, 0x1c, + 0xcd, 0xdd, 0x2d, 0x01, 0x66, 0x80, 0xaf, 0xb3, 0x2f, 0x29, 0x1d, 0x23, + 0xb8, 0x8a, 0xe1, 0xa1, 0x70, 0x07, 0x0c, 0x34, 0x0f, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x5d, 0x30, 0x82, 0x01, 0x59, 0x30, 0x2f, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x23, + 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, + 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x30, + 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, + 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x65, 0x06, 0x03, 0x55, + 0x1d, 0x20, 0x04, 0x5e, 0x30, 0x5c, 0x30, 0x5a, 0x06, 0x04, 0x55, 0x1d, + 0x20, 0x00, 0x30, 0x52, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x28, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x1c, 0x1a, 0x1a, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, + 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, + 0x70, 0x61, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x29, 0x30, + 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, 0x2d, 0x67, 0x35, + 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, + 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x29, 0x06, 0x03, + 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, + 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, + 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, + 0x35, 0x33, 0x33, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, + 0x04, 0x14, 0x01, 0x59, 0xab, 0xe7, 0xdd, 0x3a, 0x0b, 0x59, 0xa6, 0x64, + 0x63, 0xd6, 0xcf, 0x20, 0x07, 0x57, 0xd5, 0x91, 0xe7, 0x6a, 0x30, 0x1f, + 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7f, + 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, 0x43, + 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x01, 0x00, 0x42, 0x01, 0x55, 0x7b, 0xd0, 0x16, 0x1a, 0x5d, 0x58, + 0xe8, 0xbb, 0x9b, 0xa8, 0x4d, 0xd7, 0xf3, 0xd7, 0xeb, 0x13, 0x94, 0x86, + 0xd6, 0x7f, 0x21, 0x0b, 0x47, 0xbc, 0x57, 0x9b, 0x92, 0x5d, 0x4f, 0x05, + 0x9f, 0x38, 0xa4, 0x10, 0x7c, 0xcf, 0x83, 0xbe, 0x06, 0x43, 0x46, 0x8d, + 0x08, 0xbc, 0x6a, 0xd7, 0x10, 0xa6, 0xfa, 0xab, 0xaf, 0x2f, 0x61, 0xa8, + 0x63, 0xf2, 0x65, 0xdf, 0x7f, 0x4c, 0x88, 0x12, 0x88, 0x4f, 0xb3, 0x69, + 0xd9, 0xff, 0x27, 0xc0, 0x0a, 0x97, 0x91, 0x8f, 0x56, 0xfb, 0x89, 0xc4, + 0xa8, 0xbb, 0x92, 0x2d, 0x1b, 0x73, 0xb0, 0xc6, 0xab, 0x36, 0xf4, 0x96, + 0x6c, 0x20, 0x08, 0xef, 0x0a, 0x1e, 0x66, 0x24, 0x45, 0x4f, 0x67, 0x00, + 0x40, 0xc8, 0x07, 0x54, 0x74, 0x33, 0x3b, 0xa6, 0xad, 0xbb, 0x23, 0x9f, + 0x66, 0xed, 0xa2, 0x44, 0x70, 0x34, 0xfb, 0x0e, 0xea, 0x01, 0xfd, 0xcf, + 0x78, 0x74, 0xdf, 0xa7, 0xad, 0x55, 0xb7, 0x5f, 0x4d, 0xf6, 0xd6, 0x3f, + 0xe0, 0x86, 0xce, 0x24, 0xc7, 0x42, 0xa9, 0x13, 0x14, 0x44, 0x35, 0x4b, + 0xb6, 0xdf, 0xc9, 0x60, 0xac, 0x0c, 0x7f, 0xd9, 0x93, 0x21, 0x4b, 0xee, + 0x9c, 0xe4, 0x49, 0x02, 0x98, 0xd3, 0x60, 0x7b, 0x5c, 0xbc, 0xd5, 0x30, + 0x2f, 0x07, 0xce, 0x44, 0x42, 0xc4, 0x0b, 0x99, 0xfe, 0xe6, 0x9f, 0xfc, + 0xb0, 0x78, 0x86, 0x51, 0x6d, 0xd1, 0x2c, 0x9d, 0xc6, 0x96, 0xfb, 0x85, + 0x82, 0xbb, 0x04, 0x2f, 0xf7, 0x62, 0x80, 0xef, 0x62, 0xda, 0x7f, 0xf6, + 0x0e, 0xac, 0x90, 0xb8, 0x56, 0xbd, 0x79, 0x3f, 0xf2, 0x80, 0x6e, 0xa3, + 0xd9, 0xb9, 0x0f, 0x5d, 0x3a, 0x07, 0x1d, 0x91, 0x93, 0x86, 0x4b, 0x29, + 0x4c, 0xe1, 0xdc, 0xb5, 0xe1, 0xe0, 0x33, 0x9d, 0xb3, 0xcb, 0x36, 0x91, + 0x4b, 0xfe, 0xa1, 0xb4, 0xee, 0xf0, 0xf9, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 51:3f:b9:74:38:70:b7:34:40:41:8d:30:93:06:99:ff + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 2006 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 3 Public Primary Certification Authority - G5 + Validity + Not Before: Oct 31 00:00:00 2013 GMT + Not After : Oct 30 23:59:59 2023 GMT + Subject: C=US, O=Symantec Corporation, OU=Symantec Trust Network, CN=Symantec Class 3 Secure Server CA - G4 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:b2:d8:05:ca:1c:74:2d:b5:17:56:39:c5:4a:52: + 09:96:e8:4b:d8:0c:f1:68:9f:9a:42:28:62:c3:a5: + 30:53:7e:55:11:82:5b:03:7a:0d:2f:e1:79:04:c9: + b4:96:77:19:81:01:94:59:f9:bc:f7:7a:99:27:82: + 2d:b7:83:dd:5a:27:7f:b2:03:7a:9c:53:25:e9:48: + 1f:46:4f:c8:9d:29:f8:be:79:56:f6:f7:fd:d9:3a: + 68:da:8b:4b:82:33:41:12:c3:c8:3c:cc:d6:96:7a: + 84:21:1a:22:04:03:27:17:8b:1c:68:61:93:0f:0e: + 51:80:33:1d:b4:b5:ce:eb:7e:d0:62:ac:ee:b3:7b: + 01:74:ef:69:35:eb:ca:d5:3d:a9:ee:97:98:ca:8d: + aa:44:0e:25:99:4a:15:96:a4:ce:6d:02:54:1f:2a: + 6a:26:e2:06:3a:63:48:ac:b4:4c:d1:75:93:50:ff: + 13:2f:d6:da:e1:c6:18:f5:9f:c9:25:5d:f3:00:3a: + de:26:4d:b4:29:09:cd:0f:3d:23:6f:16:4a:81:16: + fb:f2:83:10:c3:b8:d6:d8:55:32:3d:f1:bd:0f:bd: + 8c:52:95:4a:16:97:7a:52:21:63:75:2f:16:f9:c4: + 66:be:f5:b5:09:d8:ff:27:00:cd:44:7c:6f:4b:3f: + b0:f7 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 CRL Distribution Points: + + Full Name: + URI:http://s1.symcb.com/pca3-g5.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + Authority Information Access: + OCSP - URI:http://s2.symcb.com + + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: http://www.symauth.com/cps + User Notice: + Explicit Text: http://www.symauth.com/rpa + + X509v3 Subject Alternative Name: + DirName:/CN=SymantecPKI-1-534 + X509v3 Subject Key Identifier: + 5F:60:CF:61:90:55:DF:84:43:14:8A:60:2A:B2:F5:7A:F4:43:18:EF + X509v3 Authority Key Identifier: + keyid:7F:D3:65:A7:C2:DD:EC:BB:F0:30:09:F3:43:39:FA:02:AF:33:31:33 + + Signature Algorithm: sha256WithRSAEncryption + 5e:94:56:49:dd:8e:2d:65:f5:c1:36:51:b6:03:e3:da:9e:73: + 19:f2:1f:59:ab:58:7e:6c:26:05:2c:fa:81:d7:5c:23:17:22: + 2c:37:93:f7:86:ec:85:e6:b0:a3:fd:1f:e2:32:a8:45:6f:e1: + d9:fb:b9:af:d2:70:a0:32:42:65:bf:84:fe:16:2a:8f:3f:c5: + a6:d6:a3:93:7d:43:e9:74:21:91:35:28:f4:63:e9:2e:ed:f7: + f5:5c:7f:4b:9a:b5:20:e9:0a:bd:e0:45:10:0c:14:94:9a:5d: + a5:e3:4b:91:e8:24:9b:46:40:65:f4:22:72:cd:99:f8:88:11: + f5:f3:7f:e6:33:82:e6:a8:c5:7e:fe:d0:08:e2:25:58:08:71: + 68:e6:cd:a2:e6:14:de:4e:52:24:2d:fd:e5:79:13:53:e7:5e: + 2f:2d:4d:1b:6d:40:15:52:2b:f7:87:89:78:12:81:6e:d9:4d: + aa:2d:78:d4:c2:2c:3d:08:5f:87:91:9e:1f:0e:b0:de:30:52: + 64:86:89:aa:9d:66:9c:0e:76:0c:80:f2:74:d8:2a:f8:b8:3a: + ce:d7:d6:0f:11:be:6b:ab:14:f5:bd:41:a0:22:63:89:f1:ba: + 0f:6f:29:63:66:2d:3f:ac:8c:72:c5:fb:c7:e4:d4:0f:f2:3b: + 4f:8c:29:c7 +-----BEGIN CERTIFICATE----- +MIIFODCCBCCgAwIBAgIQUT+5dDhwtzRAQY0wkwaZ/zANBgkqhkiG9w0BAQsFADCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW +ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IC0gRzUwHhcNMTMxMDMxMDAwMDAwWhcNMjMxMDMwMjM1OTU5WjB+MQsw +CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV +BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxLzAtBgNVBAMTJlN5bWFudGVjIENs +YXNzIDMgU2VjdXJlIFNlcnZlciBDQSAtIEc0MIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAstgFyhx0LbUXVjnFSlIJluhL2AzxaJ+aQihiw6UwU35VEYJb +A3oNL+F5BMm0lncZgQGUWfm893qZJ4Itt4PdWid/sgN6nFMl6UgfRk/InSn4vnlW +9vf92Tpo2otLgjNBEsPIPMzWlnqEIRoiBAMnF4scaGGTDw5RgDMdtLXO637QYqzu +s3sBdO9pNevK1T2p7peYyo2qRA4lmUoVlqTObQJUHypqJuIGOmNIrLRM0XWTUP8T +L9ba4cYY9Z/JJV3zADreJk20KQnNDz0jbxZKgRb78oMQw7jW2FUyPfG9D72MUpVK +Fpd6UiFjdS8W+cRmvvW1Cdj/JwDNRHxvSz+w9wIDAQABo4IBYzCCAV8wEgYDVR0T +AQH/BAgwBgEB/wIBADAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vczEuc3ltY2Iu +Y29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB/wQEAwIBBjAvBggrBgEFBQcBAQQjMCEw +HwYIKwYBBQUHMAGGE2h0dHA6Ly9zMi5zeW1jYi5jb20wawYDVR0gBGQwYjBgBgpg +hkgBhvhFAQc2MFIwJgYIKwYBBQUHAgEWGmh0dHA6Ly93d3cuc3ltYXV0aC5jb20v +Y3BzMCgGCCsGAQUFBwICMBwaGmh0dHA6Ly93d3cuc3ltYXV0aC5jb20vcnBhMCkG +A1UdEQQiMCCkHjAcMRowGAYDVQQDExFTeW1hbnRlY1BLSS0xLTUzNDAdBgNVHQ4E +FgQUX2DPYZBV34RDFIpgKrL1evRDGO8wHwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnz +Qzn6Aq8zMTMwDQYJKoZIhvcNAQELBQADggEBAF6UVkndji1l9cE2UbYD49qecxny +H1mrWH5sJgUs+oHXXCMXIiw3k/eG7IXmsKP9H+IyqEVv4dn7ua/ScKAyQmW/hP4W +Ko8/xabWo5N9Q+l0IZE1KPRj6S7t9/Vcf0uatSDpCr3gRRAMFJSaXaXjS5HoJJtG +QGX0InLNmfiIEfXzf+YzguaoxX7+0AjiJVgIcWjmzaLmFN5OUiQt/eV5E1PnXi8t +TRttQBVSK/eHiXgSgW7ZTaoteNTCLD0IX4eRnh8OsN4wUmSGiaqdZpwOdgyA8nTY +Kvi4Os7X1g8RvmurFPW9QaAiY4nxug9vKWNmLT+sjHLF+8fk1A/yO0+MKcc= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_43[] = { + 0x30, 0x82, 0x05, 0x38, 0x30, 0x82, 0x04, 0x20, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x51, 0x3f, 0xb9, 0x74, 0x38, 0x70, 0xb7, 0x34, 0x40, + 0x41, 0x8d, 0x30, 0x93, 0x06, 0x99, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, + 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, + 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, + 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, 0x30, 0x33, 0x30, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x7e, 0x31, 0x0b, 0x30, + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1d, + 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x53, 0x79, 0x6d, + 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x16, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x26, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, + 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x2d, + 0x20, 0x47, 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xb2, 0xd8, 0x05, 0xca, 0x1c, 0x74, 0x2d, 0xb5, 0x17, 0x56, 0x39, 0xc5, + 0x4a, 0x52, 0x09, 0x96, 0xe8, 0x4b, 0xd8, 0x0c, 0xf1, 0x68, 0x9f, 0x9a, + 0x42, 0x28, 0x62, 0xc3, 0xa5, 0x30, 0x53, 0x7e, 0x55, 0x11, 0x82, 0x5b, + 0x03, 0x7a, 0x0d, 0x2f, 0xe1, 0x79, 0x04, 0xc9, 0xb4, 0x96, 0x77, 0x19, + 0x81, 0x01, 0x94, 0x59, 0xf9, 0xbc, 0xf7, 0x7a, 0x99, 0x27, 0x82, 0x2d, + 0xb7, 0x83, 0xdd, 0x5a, 0x27, 0x7f, 0xb2, 0x03, 0x7a, 0x9c, 0x53, 0x25, + 0xe9, 0x48, 0x1f, 0x46, 0x4f, 0xc8, 0x9d, 0x29, 0xf8, 0xbe, 0x79, 0x56, + 0xf6, 0xf7, 0xfd, 0xd9, 0x3a, 0x68, 0xda, 0x8b, 0x4b, 0x82, 0x33, 0x41, + 0x12, 0xc3, 0xc8, 0x3c, 0xcc, 0xd6, 0x96, 0x7a, 0x84, 0x21, 0x1a, 0x22, + 0x04, 0x03, 0x27, 0x17, 0x8b, 0x1c, 0x68, 0x61, 0x93, 0x0f, 0x0e, 0x51, + 0x80, 0x33, 0x1d, 0xb4, 0xb5, 0xce, 0xeb, 0x7e, 0xd0, 0x62, 0xac, 0xee, + 0xb3, 0x7b, 0x01, 0x74, 0xef, 0x69, 0x35, 0xeb, 0xca, 0xd5, 0x3d, 0xa9, + 0xee, 0x97, 0x98, 0xca, 0x8d, 0xaa, 0x44, 0x0e, 0x25, 0x99, 0x4a, 0x15, + 0x96, 0xa4, 0xce, 0x6d, 0x02, 0x54, 0x1f, 0x2a, 0x6a, 0x26, 0xe2, 0x06, + 0x3a, 0x63, 0x48, 0xac, 0xb4, 0x4c, 0xd1, 0x75, 0x93, 0x50, 0xff, 0x13, + 0x2f, 0xd6, 0xda, 0xe1, 0xc6, 0x18, 0xf5, 0x9f, 0xc9, 0x25, 0x5d, 0xf3, + 0x00, 0x3a, 0xde, 0x26, 0x4d, 0xb4, 0x29, 0x09, 0xcd, 0x0f, 0x3d, 0x23, + 0x6f, 0x16, 0x4a, 0x81, 0x16, 0xfb, 0xf2, 0x83, 0x10, 0xc3, 0xb8, 0xd6, + 0xd8, 0x55, 0x32, 0x3d, 0xf1, 0xbd, 0x0f, 0xbd, 0x8c, 0x52, 0x95, 0x4a, + 0x16, 0x97, 0x7a, 0x52, 0x21, 0x63, 0x75, 0x2f, 0x16, 0xf9, 0xc4, 0x66, + 0xbe, 0xf5, 0xb5, 0x09, 0xd8, 0xff, 0x27, 0x00, 0xcd, 0x44, 0x7c, 0x6f, + 0x4b, 0x3f, 0xb0, 0xf7, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, + 0x63, 0x30, 0x82, 0x01, 0x5f, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x29, 0x30, 0x27, + 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x73, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, 0x2d, 0x67, 0x35, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2f, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x23, 0x30, 0x21, 0x30, + 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, + 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x32, 0x2e, 0x73, + 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x6b, 0x06, 0x03, + 0x55, 0x1d, 0x20, 0x04, 0x64, 0x30, 0x62, 0x30, 0x60, 0x06, 0x0a, 0x60, + 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30, 0x52, 0x30, + 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, + 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, + 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x70, 0x73, 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x02, 0x30, 0x1c, 0x1a, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, + 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x29, 0x06, + 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, + 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, + 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, + 0x2d, 0x35, 0x33, 0x34, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, + 0x16, 0x04, 0x14, 0x5f, 0x60, 0xcf, 0x61, 0x90, 0x55, 0xdf, 0x84, 0x43, + 0x14, 0x8a, 0x60, 0x2a, 0xb2, 0xf5, 0x7a, 0xf4, 0x43, 0x18, 0xef, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, + 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x5e, 0x94, 0x56, 0x49, 0xdd, 0x8e, 0x2d, 0x65, + 0xf5, 0xc1, 0x36, 0x51, 0xb6, 0x03, 0xe3, 0xda, 0x9e, 0x73, 0x19, 0xf2, + 0x1f, 0x59, 0xab, 0x58, 0x7e, 0x6c, 0x26, 0x05, 0x2c, 0xfa, 0x81, 0xd7, + 0x5c, 0x23, 0x17, 0x22, 0x2c, 0x37, 0x93, 0xf7, 0x86, 0xec, 0x85, 0xe6, + 0xb0, 0xa3, 0xfd, 0x1f, 0xe2, 0x32, 0xa8, 0x45, 0x6f, 0xe1, 0xd9, 0xfb, + 0xb9, 0xaf, 0xd2, 0x70, 0xa0, 0x32, 0x42, 0x65, 0xbf, 0x84, 0xfe, 0x16, + 0x2a, 0x8f, 0x3f, 0xc5, 0xa6, 0xd6, 0xa3, 0x93, 0x7d, 0x43, 0xe9, 0x74, + 0x21, 0x91, 0x35, 0x28, 0xf4, 0x63, 0xe9, 0x2e, 0xed, 0xf7, 0xf5, 0x5c, + 0x7f, 0x4b, 0x9a, 0xb5, 0x20, 0xe9, 0x0a, 0xbd, 0xe0, 0x45, 0x10, 0x0c, + 0x14, 0x94, 0x9a, 0x5d, 0xa5, 0xe3, 0x4b, 0x91, 0xe8, 0x24, 0x9b, 0x46, + 0x40, 0x65, 0xf4, 0x22, 0x72, 0xcd, 0x99, 0xf8, 0x88, 0x11, 0xf5, 0xf3, + 0x7f, 0xe6, 0x33, 0x82, 0xe6, 0xa8, 0xc5, 0x7e, 0xfe, 0xd0, 0x08, 0xe2, + 0x25, 0x58, 0x08, 0x71, 0x68, 0xe6, 0xcd, 0xa2, 0xe6, 0x14, 0xde, 0x4e, + 0x52, 0x24, 0x2d, 0xfd, 0xe5, 0x79, 0x13, 0x53, 0xe7, 0x5e, 0x2f, 0x2d, + 0x4d, 0x1b, 0x6d, 0x40, 0x15, 0x52, 0x2b, 0xf7, 0x87, 0x89, 0x78, 0x12, + 0x81, 0x6e, 0xd9, 0x4d, 0xaa, 0x2d, 0x78, 0xd4, 0xc2, 0x2c, 0x3d, 0x08, + 0x5f, 0x87, 0x91, 0x9e, 0x1f, 0x0e, 0xb0, 0xde, 0x30, 0x52, 0x64, 0x86, + 0x89, 0xaa, 0x9d, 0x66, 0x9c, 0x0e, 0x76, 0x0c, 0x80, 0xf2, 0x74, 0xd8, + 0x2a, 0xf8, 0xb8, 0x3a, 0xce, 0xd7, 0xd6, 0x0f, 0x11, 0xbe, 0x6b, 0xab, + 0x14, 0xf5, 0xbd, 0x41, 0xa0, 0x22, 0x63, 0x89, 0xf1, 0xba, 0x0f, 0x6f, + 0x29, 0x63, 0x66, 0x2d, 0x3f, 0xac, 0x8c, 0x72, 0xc5, 0xfb, 0xc7, 0xe4, + 0xd4, 0x0f, 0xf2, 0x3b, 0x4f, 0x8c, 0x29, 0xc7, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 120036009 (0x7279aa9) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=IE, O=Baltimore, OU=CyberTrust, CN=Baltimore CyberTrust Root + Validity + Not Before: Dec 19 20:07:32 2013 GMT + Not After : Dec 19 20:06:55 2017 GMT + Subject: C=US, ST=Washington, L=Redmond, O=Microsoft Corporation, OU=Microsoft IT, CN=Microsoft IT SSL SHA2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (4096 bit) + Modulus: + 00:d1:e8:37:a7:76:8a:70:4b:19:f0:20:37:09:24: + 37:7f:ea:fb:78:e6:05:ba:6a:ad:4e:27:0d:fc:72: + 6a:d9:6c:21:c4:64:11:95:73:10:0a:5c:25:7b:88: + 6c:94:04:fd:c7:db:ae:7b:dc:4a:08:b3:3e:16:f1: + d0:ad:db:30:6d:d7:1a:1e:52:b5:3d:f0:47:19:03: + e2:7d:a6:bd:57:13:3f:54:ea:3a:a3:b1:77:fc:42: + f0:63:49:6a:91:80:2e:30:49:c0:8a:eb:2b:af:fe: + 3a:eb:07:5d:06:f7:e9:fd:84:0e:91:bd:09:20:29: + e8:6e:5d:09:ce:15:d3:e7:ef:db:50:eb:44:ef:18: + 57:ab:04:1d:bc:31:f9:f7:7b:2a:13:cf:d1:3d:51: + af:1b:c5:b5:7b:e7:b0:fc:53:bb:9a:e7:63:de:41: + 33:b6:47:24:69:5d:b8:46:a7:ff:ad:ab:df:4f:7a: + 78:25:27:21:26:34:ca:02:6e:37:51:f0:ed:58:1a: + 60:94:f6:c4:93:d8:dd:30:24:25:d7:1c:eb:19:94: + 35:5d:93:b2:ae:aa:29:83:73:c4:74:59:05:52:67: + 9d:da:67:51:39:05:3a:36:ea:f2:1e:76:2b:14:ae: + ec:3d:f9:14:99:8b:07:6e:bc:e7:0c:56:de:ac:be: + ae:db:75:32:90:9e:63:bd:74:bf:e0:0a:ca:f8:34: + 96:67:84:cd:d1:42:38:78:c7:99:b6:0c:ce:b6:0f: + e9:1b:cb:f4:59:be:11:0e:cb:2c:32:c8:fa:83:29: + 64:79:3c:8b:4b:f0:32:74:6c:f3:93:b8:96:6b:5d: + 57:5a:68:c1:cc:0c:79:8a:19:de:f5:49:02:5e:08: + 80:01:89:0c:32:cd:d2:d6:96:d5:4b:a0:f3:ec:bf: + ab:f4:7d:b3:a1:b9:7c:da:4e:d7:e5:b7:ac:b9:f2: + 25:5f:01:cb:8c:96:a8:28:ae:c1:33:5a:f6:3f:08: + 90:dc:eb:ff:39:d8:26:c8:12:9d:1c:9a:aa:a9:c0: + 16:8e:86:ed:67:52:96:00:7f:0d:92:3d:3d:d9:70: + 36:e5:ea:42:6f:1f:ae:95:e5:5b:5d:f8:d0:3a:c7: + d4:de:77:86:d0:fc:9e:4e:e2:e2:b8:a9:68:37:09: + c4:39:e3:85:b8:89:f3:1f:6e:b7:6d:1f:4a:2f:18: + 09:6f:de:4a:01:8f:14:c9:b7:a6:ee:a7:63:9f:33: + a4:54:7c:42:83:68:b8:a5:df:bf:ec:b9:1a:5d:13: + 3b:d9:ad:68:fd:20:0a:55:91:21:64:f9:d7:13:01: + a0:08:5d:59:89:1b:44:af:a4:ac:c7:05:10:fa:41: + 4a:a8:fb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: 1.3.6.1.4.1.6334.1.0 + CPS: http://cybertrust.omniroot.com/repository.cfm + + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication + X509v3 Authority Key Identifier: + keyid:E5:9D:59:30:82:47:58:CC:AC:FA:08:54:36:86:7B:3A:B5:04:4D:F0 + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://cdp1.public-trust.com/CRL/Omniroot2025.crl + + X509v3 Subject Key Identifier: + 51:AF:24:26:9C:F4:68:22:57:80:26:2B:3B:46:62:15:7B:1E:CC:A5 + Signature Algorithm: sha256WithRSAEncryption + 76:85:c5:23:31:1f:b4:73:ea:a0:bc:a5:ed:df:45:43:6a:7f: + 69:20:1b:80:b2:fb:1c:dd:aa:7f:88:d3:31:41:36:f7:fb:fb: + 6b:ad:98:8c:78:1f:9d:11:67:3a:cd:4b:ec:a8:bc:9d:15:19: + c4:3b:0b:a7:93:ce:e8:fc:9d:5b:e8:1f:cb:56:ae:76:43:2b: + c7:13:51:77:41:a8:66:4c:5f:a7:d1:d7:aa:75:c5:1b:29:4c: + c9:f4:6d:a1:5e:a1:85:93:16:c2:cb:3b:ab:14:7d:44:fd:da: + 25:29:86:2a:fe:63:20:ca:d2:0b:c2:34:15:bb:af:5b:7f:8a: + e0:aa:ed:45:a6:ea:79:db:d8:35:66:54:43:de:37:33:d1:e4: + e0:cd:57:ca:71:b0:7d:e9:16:77:64:e8:59:97:b9:d5:2e:d1: + b4:91:da:77:71:f3:4a:0f:48:d2:34:99:60:95:37:ac:1f:01: + cd:10:9d:e8:2a:a5:20:c7:50:9b:b3:6c:49:78:2b:58:92:64: + 89:b8:95:36:a8:34:aa:f0:41:d2:95:5a:24:54:97:4d:6e:05: + c4:95:ad:c4:7a:a3:39:fb:79:06:8a:9b:a6:4f:d9:22:fa:44: + 4e:36:f3:c9:0f:a6:39:e7:80:b2:5e:bf:bd:39:d1:46:e5:55: + 47:db:bc:6e +-----BEGIN CERTIFICATE----- +MIIFhjCCBG6gAwIBAgIEByeaqTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJJ +RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD +VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTEzMTIxOTIwMDczMloX +DTE3MTIxOTIwMDY1NVowgYsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5n +dG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y +YXRpb24xFTATBgNVBAsTDE1pY3Jvc29mdCBJVDEeMBwGA1UEAxMVTWljcm9zb2Z0 +IElUIFNTTCBTSEEyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0eg3 +p3aKcEsZ8CA3CSQ3f+r7eOYFumqtTicN/HJq2WwhxGQRlXMQClwle4hslAT9x9uu +e9xKCLM+FvHQrdswbdcaHlK1PfBHGQPifaa9VxM/VOo6o7F3/ELwY0lqkYAuMEnA +iusrr/466wddBvfp/YQOkb0JICnobl0JzhXT5+/bUOtE7xhXqwQdvDH593sqE8/R +PVGvG8W1e+ew/FO7mudj3kEztkckaV24Rqf/ravfT3p4JSchJjTKAm43UfDtWBpg +lPbEk9jdMCQl1xzrGZQ1XZOyrqopg3PEdFkFUmed2mdROQU6NuryHnYrFK7sPfkU +mYsHbrznDFberL6u23UykJ5jvXS/4ArK+DSWZ4TN0UI4eMeZtgzOtg/pG8v0Wb4R +DsssMsj6gylkeTyLS/AydGzzk7iWa11XWmjBzAx5ihne9UkCXgiAAYkMMs3S1pbV +S6Dz7L+r9H2zobl82k7X5besufIlXwHLjJaoKK7BM1r2PwiQ3Ov/OdgmyBKdHJqq +qcAWjobtZ1KWAH8Nkj092XA25epCbx+uleVbXfjQOsfU3neG0PyeTuLiuKloNwnE +OeOFuInzH263bR9KLxgJb95KAY8Uybem7qdjnzOkVHxCg2i4pd+/7LkaXRM72a1o +/SAKVZEhZPnXEwGgCF1ZiRtEr6SsxwUQ+kFKqPsCAwEAAaOCASAwggEcMBIGA1Ud +EwEB/wQIMAYBAf8CAQAwUwYDVR0gBEwwSjBIBgkrBgEEAbE+AQAwOzA5BggrBgEF +BQcCARYtaHR0cDovL2N5YmVydHJ1c3Qub21uaXJvb3QuY29tL3JlcG9zaXRvcnku +Y2ZtMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUH +AwIwHwYDVR0jBBgwFoAU5Z1ZMIJHWMys+ghUNoZ7OrUETfAwQgYDVR0fBDswOTA3 +oDWgM4YxaHR0cDovL2NkcDEucHVibGljLXRydXN0LmNvbS9DUkwvT21uaXJvb3Qy +MDI1LmNybDAdBgNVHQ4EFgQUUa8kJpz0aCJXgCYrO0ZiFXsezKUwDQYJKoZIhvcN +AQELBQADggEBAHaFxSMxH7Rz6qC8pe3fRUNqf2kgG4Cy+xzdqn+I0zFBNvf7+2ut +mIx4H50RZzrNS+yovJ0VGcQ7C6eTzuj8nVvoH8tWrnZDK8cTUXdBqGZMX6fR16p1 +xRspTMn0baFeoYWTFsLLO6sUfUT92iUphir+YyDK0gvCNBW7r1t/iuCq7UWm6nnb +2DVmVEPeNzPR5ODNV8pxsH3pFndk6FmXudUu0bSR2ndx80oPSNI0mWCVN6wfAc0Q +negqpSDHUJuzbEl4K1iSZIm4lTaoNKrwQdKVWiRUl01uBcSVrcR6ozn7eQaKm6ZP +2SL6RE4288kPpjnngLJev7050UblVUfbvG4= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_44[] = { + 0x30, 0x82, 0x05, 0x86, 0x30, 0x82, 0x04, 0x6e, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0x9a, 0xa9, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, + 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, + 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, + 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, + 0x31, 0x32, 0x31, 0x39, 0x32, 0x30, 0x30, 0x37, 0x33, 0x32, 0x5a, 0x17, + 0x0d, 0x31, 0x37, 0x31, 0x32, 0x31, 0x39, 0x32, 0x30, 0x30, 0x36, 0x35, + 0x35, 0x5a, 0x30, 0x81, 0x8b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, + 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, + 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, + 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, + 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x0c, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, + 0x74, 0x20, 0x49, 0x54, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, + 0x20, 0x49, 0x54, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32, + 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, + 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xd1, 0xe8, 0x37, + 0xa7, 0x76, 0x8a, 0x70, 0x4b, 0x19, 0xf0, 0x20, 0x37, 0x09, 0x24, 0x37, + 0x7f, 0xea, 0xfb, 0x78, 0xe6, 0x05, 0xba, 0x6a, 0xad, 0x4e, 0x27, 0x0d, + 0xfc, 0x72, 0x6a, 0xd9, 0x6c, 0x21, 0xc4, 0x64, 0x11, 0x95, 0x73, 0x10, + 0x0a, 0x5c, 0x25, 0x7b, 0x88, 0x6c, 0x94, 0x04, 0xfd, 0xc7, 0xdb, 0xae, + 0x7b, 0xdc, 0x4a, 0x08, 0xb3, 0x3e, 0x16, 0xf1, 0xd0, 0xad, 0xdb, 0x30, + 0x6d, 0xd7, 0x1a, 0x1e, 0x52, 0xb5, 0x3d, 0xf0, 0x47, 0x19, 0x03, 0xe2, + 0x7d, 0xa6, 0xbd, 0x57, 0x13, 0x3f, 0x54, 0xea, 0x3a, 0xa3, 0xb1, 0x77, + 0xfc, 0x42, 0xf0, 0x63, 0x49, 0x6a, 0x91, 0x80, 0x2e, 0x30, 0x49, 0xc0, + 0x8a, 0xeb, 0x2b, 0xaf, 0xfe, 0x3a, 0xeb, 0x07, 0x5d, 0x06, 0xf7, 0xe9, + 0xfd, 0x84, 0x0e, 0x91, 0xbd, 0x09, 0x20, 0x29, 0xe8, 0x6e, 0x5d, 0x09, + 0xce, 0x15, 0xd3, 0xe7, 0xef, 0xdb, 0x50, 0xeb, 0x44, 0xef, 0x18, 0x57, + 0xab, 0x04, 0x1d, 0xbc, 0x31, 0xf9, 0xf7, 0x7b, 0x2a, 0x13, 0xcf, 0xd1, + 0x3d, 0x51, 0xaf, 0x1b, 0xc5, 0xb5, 0x7b, 0xe7, 0xb0, 0xfc, 0x53, 0xbb, + 0x9a, 0xe7, 0x63, 0xde, 0x41, 0x33, 0xb6, 0x47, 0x24, 0x69, 0x5d, 0xb8, + 0x46, 0xa7, 0xff, 0xad, 0xab, 0xdf, 0x4f, 0x7a, 0x78, 0x25, 0x27, 0x21, + 0x26, 0x34, 0xca, 0x02, 0x6e, 0x37, 0x51, 0xf0, 0xed, 0x58, 0x1a, 0x60, + 0x94, 0xf6, 0xc4, 0x93, 0xd8, 0xdd, 0x30, 0x24, 0x25, 0xd7, 0x1c, 0xeb, + 0x19, 0x94, 0x35, 0x5d, 0x93, 0xb2, 0xae, 0xaa, 0x29, 0x83, 0x73, 0xc4, + 0x74, 0x59, 0x05, 0x52, 0x67, 0x9d, 0xda, 0x67, 0x51, 0x39, 0x05, 0x3a, + 0x36, 0xea, 0xf2, 0x1e, 0x76, 0x2b, 0x14, 0xae, 0xec, 0x3d, 0xf9, 0x14, + 0x99, 0x8b, 0x07, 0x6e, 0xbc, 0xe7, 0x0c, 0x56, 0xde, 0xac, 0xbe, 0xae, + 0xdb, 0x75, 0x32, 0x90, 0x9e, 0x63, 0xbd, 0x74, 0xbf, 0xe0, 0x0a, 0xca, + 0xf8, 0x34, 0x96, 0x67, 0x84, 0xcd, 0xd1, 0x42, 0x38, 0x78, 0xc7, 0x99, + 0xb6, 0x0c, 0xce, 0xb6, 0x0f, 0xe9, 0x1b, 0xcb, 0xf4, 0x59, 0xbe, 0x11, + 0x0e, 0xcb, 0x2c, 0x32, 0xc8, 0xfa, 0x83, 0x29, 0x64, 0x79, 0x3c, 0x8b, + 0x4b, 0xf0, 0x32, 0x74, 0x6c, 0xf3, 0x93, 0xb8, 0x96, 0x6b, 0x5d, 0x57, + 0x5a, 0x68, 0xc1, 0xcc, 0x0c, 0x79, 0x8a, 0x19, 0xde, 0xf5, 0x49, 0x02, + 0x5e, 0x08, 0x80, 0x01, 0x89, 0x0c, 0x32, 0xcd, 0xd2, 0xd6, 0x96, 0xd5, + 0x4b, 0xa0, 0xf3, 0xec, 0xbf, 0xab, 0xf4, 0x7d, 0xb3, 0xa1, 0xb9, 0x7c, + 0xda, 0x4e, 0xd7, 0xe5, 0xb7, 0xac, 0xb9, 0xf2, 0x25, 0x5f, 0x01, 0xcb, + 0x8c, 0x96, 0xa8, 0x28, 0xae, 0xc1, 0x33, 0x5a, 0xf6, 0x3f, 0x08, 0x90, + 0xdc, 0xeb, 0xff, 0x39, 0xd8, 0x26, 0xc8, 0x12, 0x9d, 0x1c, 0x9a, 0xaa, + 0xa9, 0xc0, 0x16, 0x8e, 0x86, 0xed, 0x67, 0x52, 0x96, 0x00, 0x7f, 0x0d, + 0x92, 0x3d, 0x3d, 0xd9, 0x70, 0x36, 0xe5, 0xea, 0x42, 0x6f, 0x1f, 0xae, + 0x95, 0xe5, 0x5b, 0x5d, 0xf8, 0xd0, 0x3a, 0xc7, 0xd4, 0xde, 0x77, 0x86, + 0xd0, 0xfc, 0x9e, 0x4e, 0xe2, 0xe2, 0xb8, 0xa9, 0x68, 0x37, 0x09, 0xc4, + 0x39, 0xe3, 0x85, 0xb8, 0x89, 0xf3, 0x1f, 0x6e, 0xb7, 0x6d, 0x1f, 0x4a, + 0x2f, 0x18, 0x09, 0x6f, 0xde, 0x4a, 0x01, 0x8f, 0x14, 0xc9, 0xb7, 0xa6, + 0xee, 0xa7, 0x63, 0x9f, 0x33, 0xa4, 0x54, 0x7c, 0x42, 0x83, 0x68, 0xb8, + 0xa5, 0xdf, 0xbf, 0xec, 0xb9, 0x1a, 0x5d, 0x13, 0x3b, 0xd9, 0xad, 0x68, + 0xfd, 0x20, 0x0a, 0x55, 0x91, 0x21, 0x64, 0xf9, 0xd7, 0x13, 0x01, 0xa0, + 0x08, 0x5d, 0x59, 0x89, 0x1b, 0x44, 0xaf, 0xa4, 0xac, 0xc7, 0x05, 0x10, + 0xfa, 0x41, 0x4a, 0xa8, 0xfb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x01, 0x20, 0x30, 0x82, 0x01, 0x1c, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x53, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x4c, 0x30, + 0x4a, 0x30, 0x48, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e, + 0x01, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x63, 0x66, 0x6d, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x03, 0x02, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0xe5, 0x9d, 0x59, 0x30, 0x82, 0x47, 0x58, 0xcc, 0xac, + 0xfa, 0x08, 0x54, 0x36, 0x86, 0x7b, 0x3a, 0xb5, 0x04, 0x4d, 0xf0, 0x30, + 0x42, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37, + 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x63, 0x64, 0x70, 0x31, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x2d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, + 0x52, 0x4c, 0x2f, 0x4f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x32, + 0x30, 0x32, 0x35, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x51, 0xaf, 0x24, 0x26, 0x9c, 0xf4, + 0x68, 0x22, 0x57, 0x80, 0x26, 0x2b, 0x3b, 0x46, 0x62, 0x15, 0x7b, 0x1e, + 0xcc, 0xa5, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x76, 0x85, + 0xc5, 0x23, 0x31, 0x1f, 0xb4, 0x73, 0xea, 0xa0, 0xbc, 0xa5, 0xed, 0xdf, + 0x45, 0x43, 0x6a, 0x7f, 0x69, 0x20, 0x1b, 0x80, 0xb2, 0xfb, 0x1c, 0xdd, + 0xaa, 0x7f, 0x88, 0xd3, 0x31, 0x41, 0x36, 0xf7, 0xfb, 0xfb, 0x6b, 0xad, + 0x98, 0x8c, 0x78, 0x1f, 0x9d, 0x11, 0x67, 0x3a, 0xcd, 0x4b, 0xec, 0xa8, + 0xbc, 0x9d, 0x15, 0x19, 0xc4, 0x3b, 0x0b, 0xa7, 0x93, 0xce, 0xe8, 0xfc, + 0x9d, 0x5b, 0xe8, 0x1f, 0xcb, 0x56, 0xae, 0x76, 0x43, 0x2b, 0xc7, 0x13, + 0x51, 0x77, 0x41, 0xa8, 0x66, 0x4c, 0x5f, 0xa7, 0xd1, 0xd7, 0xaa, 0x75, + 0xc5, 0x1b, 0x29, 0x4c, 0xc9, 0xf4, 0x6d, 0xa1, 0x5e, 0xa1, 0x85, 0x93, + 0x16, 0xc2, 0xcb, 0x3b, 0xab, 0x14, 0x7d, 0x44, 0xfd, 0xda, 0x25, 0x29, + 0x86, 0x2a, 0xfe, 0x63, 0x20, 0xca, 0xd2, 0x0b, 0xc2, 0x34, 0x15, 0xbb, + 0xaf, 0x5b, 0x7f, 0x8a, 0xe0, 0xaa, 0xed, 0x45, 0xa6, 0xea, 0x79, 0xdb, + 0xd8, 0x35, 0x66, 0x54, 0x43, 0xde, 0x37, 0x33, 0xd1, 0xe4, 0xe0, 0xcd, + 0x57, 0xca, 0x71, 0xb0, 0x7d, 0xe9, 0x16, 0x77, 0x64, 0xe8, 0x59, 0x97, + 0xb9, 0xd5, 0x2e, 0xd1, 0xb4, 0x91, 0xda, 0x77, 0x71, 0xf3, 0x4a, 0x0f, + 0x48, 0xd2, 0x34, 0x99, 0x60, 0x95, 0x37, 0xac, 0x1f, 0x01, 0xcd, 0x10, + 0x9d, 0xe8, 0x2a, 0xa5, 0x20, 0xc7, 0x50, 0x9b, 0xb3, 0x6c, 0x49, 0x78, + 0x2b, 0x58, 0x92, 0x64, 0x89, 0xb8, 0x95, 0x36, 0xa8, 0x34, 0xaa, 0xf0, + 0x41, 0xd2, 0x95, 0x5a, 0x24, 0x54, 0x97, 0x4d, 0x6e, 0x05, 0xc4, 0x95, + 0xad, 0xc4, 0x7a, 0xa3, 0x39, 0xfb, 0x79, 0x06, 0x8a, 0x9b, 0xa6, 0x4f, + 0xd9, 0x22, 0xfa, 0x44, 0x4e, 0x36, 0xf3, 0xc9, 0x0f, 0xa6, 0x39, 0xe7, + 0x80, 0xb2, 0x5e, 0xbf, 0xbd, 0x39, 0xd1, 0x46, 0xe5, 0x55, 0x47, 0xdb, + 0xbc, 0x6e, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 67:3f:33:4f:21:53:36:52:c3:5e:15:d2:fd:b3:02:0f + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=CN, O=WoSign CA Limited, CN=Certification Authority of WoSign + Validity + Not Before: Aug 8 01:00:05 2009 GMT + Not After : Aug 8 01:00:05 2024 GMT + Subject: C=CN, O=WoSign CA Limited, CN=WoSign Class 3 OV Server CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:bc:89:be:61:51:53:c8:2b:96:75:b3:5a:d3:0e: + 34:fe:4a:c2:9f:a3:18:83:a2:ac:e3:2e:5e:93:79: + 0b:13:49:5e:93:b2:8f:84:10:ed:91:8f:82:ba:ad: + 67:df:33:1b:ae:84:f2:55:b0:5b:f4:b3:9e:bc:e6: + 04:0f:1d:ef:04:5a:a8:0b:ec:12:6d:56:19:64:70: + 49:0f:57:92:f3:5f:21:a6:4d:b4:d2:96:2b:3c:32: + b3:ef:8f:59:0b:14:ba:6e:a2:9e:71:db:f2:88:3f: + 28:3b:ec:ce:be:47:ac:45:c7:8a:9e:fa:61:93:c5: + 49:17:b6:46:b6:f7:99:16:8c:1c:6e:31:ae:69:ce: + ed:c6:24:92:70:a1:cb:96:c3:6c:16:d0:ee:cc:4f: + 86:33:b3:41:e6:3d:3d:db:0e:8c:33:74:bb:c3:fc: + 0b:a7:fc:d1:71:e2:c1:0c:d4:f7:ba:3e:80:90:d4: + 48:eb:a2:83:70:d8:db:30:07:29:89:f9:81:21:2c: + ff:eb:47:f6:7a:6d:43:96:67:17:3e:f3:e2:73:51: + c7:76:1e:e9:1c:a0:ec:11:1a:b1:cf:1e:2d:9c:55: + ee:3b:c6:2d:ae:dc:66:65:91:a2:66:9c:ac:82:f1: + a4:17:b5:d7:43:83:c3:88:a0:64:de:ca:72:45:dc: + 38:fb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Extended Key Usage: + TLS Web Client Authentication, TLS Web Server Authentication + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crls1.wosign.com/ca1.crl + + Authority Information Access: + OCSP - URI:http://ocsp1.wosign.com/ca1 + CA Issuers - URI:http://aia1.wosign.com/ca1-class3-server.cer + + X509v3 Subject Key Identifier: + 62:2E:81:D9:E3:42:79:14:A3:CD:D9:54:8A:6E:F8:DE:95:AA:8F:98 + X509v3 Authority Key Identifier: + keyid:E1:66:CF:0E:D1:F1:B3:4B:B7:06:20:14:FE:87:12:D5:F6:FE:FB:3E + + X509v3 Certificate Policies: + Policy: 1.3.6.1.4.1.36305.1.3.2 + CPS: http://www.wosign.com/policy/ + + Signature Algorithm: sha1WithRSAEncryption + ab:70:aa:64:c4:0b:34:91:b9:63:20:5e:b0:9c:21:ff:25:79: + 6c:57:4e:56:44:58:83:b9:00:ce:2d:65:a8:6d:95:38:ea:82: + 2d:55:18:60:12:7e:1a:1d:6b:62:34:2c:d9:cd:17:00:43:84: + 3e:ad:bc:ff:26:85:1f:4a:a7:46:13:b0:7d:3b:0b:d9:4b:9d: + b0:cf:8d:f4:05:cb:12:29:fe:e1:97:c7:b7:c7:aa:53:7e:39: + 2d:9d:f6:d4:5e:b7:8c:15:6a:81:d2:37:1a:43:0e:cb:e6:30: + 21:43:83:69:0f:ef:6b:cd:10:f9:84:60:cf:89:e9:88:10:01: + af:09:f3:48:bb:07:09:75:01:84:fa:b1:1e:51:19:8f:c6:c9: + 85:65:16:5f:e0:56:7e:b7:bf:40:c2:d4:d0:05:1f:93:63:c9: + 24:08:3b:91:b2:35:e1:a4:8f:35:db:24:58:75:39:e4:dd:10: + 1a:b0:df:13:12:73:9e:6d:e7:67:3c:db:1c:1c:dd:10:dd:cc: + f4:07:09:b9:2e:e5:75:6d:97:b7:60:5b:89:70:81:d2:26:d8: + c6:09:2b:b2:05:7f:c4:b8:14:41:1e:07:f0:48:41:63:cb:0c: + aa:45:7e:84:f9:33:b3:58:87:bc:b1:d6:c2:65:c7:57:c6:95: + e8:85:90:b0:62:50:f5:ee:12:f1:d8:7e:73:cb:c0:c3:a0:25: + 17:23:37:91:ba:63:bd:84:af:f3:89:e0:51:c2:73:35:6d:63: + 86:21:f2:73:bd:c2:47:e0:4d:7e:46:37:4b:d0:f7:61:2a:c7: + 94:50:25:36:e8:ae:da:2e:1f:b8:08:b2:55:7c:6b:66:43:8f: + 02:1d:dd:a7:eb:98:00:a7:25:74:f5:93:1b:6d:26:bb:1d:e5: + b7:fc:21:25:26:d1:77:1b:a8:6e:aa:c3:4b:64:51:7f:91:0e: + 41:5c:19:83:a1:a8:1f:94:99:43:0f:99:db:18:dc:21:6f:76: + d1:9e:ea:a3:76:e0:f0:09:bc:b9:b4:f7:43:6c:1f:d3:2a:86: + 6a:2f:e0:6c:f1:83:39:d7:70:db:a2:91:ab:54:be:f4:47:88: + 8c:f0:10:d2:e4:ad:eb:7e:b1:ba:08:4b:67:04:a3:f2:e9:90: + 2b:81:e3:74:76:3d:00:9d:d2:bb:fc:a5:a0:15:1c:28:df:10: + 4f:47:d7:33:46:9d:b2:57:d2:c6:1f:fb:e4:59:4a:2b:28:a9: + 13:dd:b9:e9:93:b4:88:ee:e2:5b:a0:07:25:fe:8a:2e:78:e4: + b4:e1:d5:1d:f6:1a:3a:e3:1c:01:2a:1e:a1:86:54:9e:49:dc: + c9:59:e3:0d:6d:5a:13:36 +-----BEGIN CERTIFICATE----- +MIIFozCCA4ugAwIBAgIQZz8zTyFTNlLDXhXS/bMCDzANBgkqhkiG9w0BAQUFADBV +MQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxKjAoBgNV +BAMTIUNlcnRpZmljYXRpb24gQXV0aG9yaXR5IG9mIFdvU2lnbjAeFw0wOTA4MDgw +MTAwMDVaFw0yNDA4MDgwMTAwMDVaME8xCzAJBgNVBAYTAkNOMRowGAYDVQQKExFX +b1NpZ24gQ0EgTGltaXRlZDEkMCIGA1UEAxMbV29TaWduIENsYXNzIDMgT1YgU2Vy +dmVyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvIm+YVFTyCuW +dbNa0w40/krCn6MYg6Ks4y5ek3kLE0lek7KPhBDtkY+Cuq1n3zMbroTyVbBb9LOe +vOYEDx3vBFqoC+wSbVYZZHBJD1eS818hpk200pYrPDKz749ZCxS6bqKecdvyiD8o +O+zOvkesRceKnvphk8VJF7ZGtveZFowcbjGuac7txiSScKHLlsNsFtDuzE+GM7NB +5j092w6MM3S7w/wLp/zRceLBDNT3uj6AkNRI66KDcNjbMAcpifmBISz/60f2em1D +lmcXPvPic1HHdh7pHKDsERqxzx4tnFXuO8YtrtxmZZGiZpysgvGkF7XXQ4PDiKBk +3spyRdw4+wIDAQABo4IBczCCAW8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdJQQWMBQG +CCsGAQUFBwMCBggrBgEFBQcDATASBgNVHRMBAf8ECDAGAQH/AgEAMDAGA1UdHwQp +MCcwJaAjoCGGH2h0dHA6Ly9jcmxzMS53b3NpZ24uY29tL2NhMS5jcmwwcQYIKwYB +BQUHAQEEZTBjMCcGCCsGAQUFBzABhhtodHRwOi8vb2NzcDEud29zaWduLmNvbS9j +YTEwOAYIKwYBBQUHMAKGLGh0dHA6Ly9haWExLndvc2lnbi5jb20vY2ExLWNsYXNz +My1zZXJ2ZXIuY2VyMB0GA1UdDgQWBBRiLoHZ40J5FKPN2VSKbvjelaqPmDAfBgNV +HSMEGDAWgBThZs8O0fGzS7cGIBT+hxLV9v77PjBFBgNVHSAEPjA8MDoGCysGAQQB +gptRAQMCMCswKQYIKwYBBQUHAgEWHWh0dHA6Ly93d3cud29zaWduLmNvbS9wb2xp +Y3kvMA0GCSqGSIb3DQEBBQUAA4ICAQCrcKpkxAs0kbljIF6wnCH/JXlsV05WRFiD +uQDOLWWobZU46oItVRhgEn4aHWtiNCzZzRcAQ4Q+rbz/JoUfSqdGE7B9OwvZS52w +z430BcsSKf7hl8e3x6pTfjktnfbUXreMFWqB0jcaQw7L5jAhQ4NpD+9rzRD5hGDP +iemIEAGvCfNIuwcJdQGE+rEeURmPxsmFZRZf4FZ+t79AwtTQBR+TY8kkCDuRsjXh +pI812yRYdTnk3RAasN8TEnOebednPNscHN0Q3cz0Bwm5LuV1bZe3YFuJcIHSJtjG +CSuyBX/EuBRBHgfwSEFjywyqRX6E+TOzWIe8sdbCZcdXxpXohZCwYlD17hLx2H5z +y8DDoCUXIzeRumO9hK/zieBRwnM1bWOGIfJzvcJH4E1+RjdL0PdhKseUUCU26K7a +Lh+4CLJVfGtmQ48CHd2n65gApyV09ZMbbSa7HeW3/CElJtF3G6huqsNLZFF/kQ5B +XBmDoagflJlDD5nbGNwhb3bRnuqjduDwCby5tPdDbB/TKoZqL+Bs8YM513DbopGr +VL70R4iM8BDS5K3rfrG6CEtnBKPy6ZArgeN0dj0AndK7/KWgFRwo3xBPR9czRp2y +V9LGH/vkWUorKKkT3bnpk7SI7uJboAcl/ooueOS04dUd9ho64xwBKh6hhlSeSdzJ +WeMNbVoTNg== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_45[] = { + 0x30, 0x82, 0x05, 0xa3, 0x30, 0x82, 0x03, 0x8b, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x67, 0x3f, 0x33, 0x4f, 0x21, 0x53, 0x36, 0x52, 0xc3, + 0x5e, 0x15, 0xd2, 0xfd, 0xb3, 0x02, 0x0f, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x55, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, + 0x4e, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, + 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x2a, 0x30, 0x28, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x21, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x57, 0x6f, 0x53, 0x69, 0x67, + 0x6e, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x39, 0x30, 0x38, 0x30, 0x38, 0x30, + 0x31, 0x30, 0x30, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x38, + 0x30, 0x38, 0x30, 0x31, 0x30, 0x30, 0x30, 0x35, 0x5a, 0x30, 0x4f, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x4e, + 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x57, + 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x65, 0x64, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x1b, 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x4f, 0x56, 0x20, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, + 0x01, 0x01, 0x00, 0xbc, 0x89, 0xbe, 0x61, 0x51, 0x53, 0xc8, 0x2b, 0x96, + 0x75, 0xb3, 0x5a, 0xd3, 0x0e, 0x34, 0xfe, 0x4a, 0xc2, 0x9f, 0xa3, 0x18, + 0x83, 0xa2, 0xac, 0xe3, 0x2e, 0x5e, 0x93, 0x79, 0x0b, 0x13, 0x49, 0x5e, + 0x93, 0xb2, 0x8f, 0x84, 0x10, 0xed, 0x91, 0x8f, 0x82, 0xba, 0xad, 0x67, + 0xdf, 0x33, 0x1b, 0xae, 0x84, 0xf2, 0x55, 0xb0, 0x5b, 0xf4, 0xb3, 0x9e, + 0xbc, 0xe6, 0x04, 0x0f, 0x1d, 0xef, 0x04, 0x5a, 0xa8, 0x0b, 0xec, 0x12, + 0x6d, 0x56, 0x19, 0x64, 0x70, 0x49, 0x0f, 0x57, 0x92, 0xf3, 0x5f, 0x21, + 0xa6, 0x4d, 0xb4, 0xd2, 0x96, 0x2b, 0x3c, 0x32, 0xb3, 0xef, 0x8f, 0x59, + 0x0b, 0x14, 0xba, 0x6e, 0xa2, 0x9e, 0x71, 0xdb, 0xf2, 0x88, 0x3f, 0x28, + 0x3b, 0xec, 0xce, 0xbe, 0x47, 0xac, 0x45, 0xc7, 0x8a, 0x9e, 0xfa, 0x61, + 0x93, 0xc5, 0x49, 0x17, 0xb6, 0x46, 0xb6, 0xf7, 0x99, 0x16, 0x8c, 0x1c, + 0x6e, 0x31, 0xae, 0x69, 0xce, 0xed, 0xc6, 0x24, 0x92, 0x70, 0xa1, 0xcb, + 0x96, 0xc3, 0x6c, 0x16, 0xd0, 0xee, 0xcc, 0x4f, 0x86, 0x33, 0xb3, 0x41, + 0xe6, 0x3d, 0x3d, 0xdb, 0x0e, 0x8c, 0x33, 0x74, 0xbb, 0xc3, 0xfc, 0x0b, + 0xa7, 0xfc, 0xd1, 0x71, 0xe2, 0xc1, 0x0c, 0xd4, 0xf7, 0xba, 0x3e, 0x80, + 0x90, 0xd4, 0x48, 0xeb, 0xa2, 0x83, 0x70, 0xd8, 0xdb, 0x30, 0x07, 0x29, + 0x89, 0xf9, 0x81, 0x21, 0x2c, 0xff, 0xeb, 0x47, 0xf6, 0x7a, 0x6d, 0x43, + 0x96, 0x67, 0x17, 0x3e, 0xf3, 0xe2, 0x73, 0x51, 0xc7, 0x76, 0x1e, 0xe9, + 0x1c, 0xa0, 0xec, 0x11, 0x1a, 0xb1, 0xcf, 0x1e, 0x2d, 0x9c, 0x55, 0xee, + 0x3b, 0xc6, 0x2d, 0xae, 0xdc, 0x66, 0x65, 0x91, 0xa2, 0x66, 0x9c, 0xac, + 0x82, 0xf1, 0xa4, 0x17, 0xb5, 0xd7, 0x43, 0x83, 0xc3, 0x88, 0xa0, 0x64, + 0xde, 0xca, 0x72, 0x45, 0xdc, 0x38, 0xfb, 0x02, 0x03, 0x01, 0x00, 0x01, + 0xa3, 0x82, 0x01, 0x73, 0x30, 0x82, 0x01, 0x6f, 0x30, 0x0e, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, + 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x30, 0x12, 0x06, 0x03, 0x55, + 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, + 0x02, 0x01, 0x00, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x29, + 0x30, 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, 0x86, 0x1f, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x31, 0x2e, 0x77, + 0x6f, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x61, + 0x31, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x71, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x65, 0x30, 0x63, 0x30, 0x27, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1b, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x31, 0x2e, + 0x77, 0x6f, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, + 0x61, 0x31, 0x30, 0x38, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x02, 0x86, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x61, + 0x69, 0x61, 0x31, 0x2e, 0x77, 0x6f, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x63, 0x61, 0x31, 0x2d, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x33, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x63, 0x65, 0x72, + 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x62, + 0x2e, 0x81, 0xd9, 0xe3, 0x42, 0x79, 0x14, 0xa3, 0xcd, 0xd9, 0x54, 0x8a, + 0x6e, 0xf8, 0xde, 0x95, 0xaa, 0x8f, 0x98, 0x30, 0x1f, 0x06, 0x03, 0x55, + 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe1, 0x66, 0xcf, 0x0e, + 0xd1, 0xf1, 0xb3, 0x4b, 0xb7, 0x06, 0x20, 0x14, 0xfe, 0x87, 0x12, 0xd5, + 0xf6, 0xfe, 0xfb, 0x3e, 0x30, 0x45, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x3e, 0x30, 0x3c, 0x30, 0x3a, 0x06, 0x0b, 0x2b, 0x06, 0x01, 0x04, 0x01, + 0x82, 0x9b, 0x51, 0x01, 0x03, 0x02, 0x30, 0x2b, 0x30, 0x29, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1d, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x6f, 0x73, + 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0xab, + 0x70, 0xaa, 0x64, 0xc4, 0x0b, 0x34, 0x91, 0xb9, 0x63, 0x20, 0x5e, 0xb0, + 0x9c, 0x21, 0xff, 0x25, 0x79, 0x6c, 0x57, 0x4e, 0x56, 0x44, 0x58, 0x83, + 0xb9, 0x00, 0xce, 0x2d, 0x65, 0xa8, 0x6d, 0x95, 0x38, 0xea, 0x82, 0x2d, + 0x55, 0x18, 0x60, 0x12, 0x7e, 0x1a, 0x1d, 0x6b, 0x62, 0x34, 0x2c, 0xd9, + 0xcd, 0x17, 0x00, 0x43, 0x84, 0x3e, 0xad, 0xbc, 0xff, 0x26, 0x85, 0x1f, + 0x4a, 0xa7, 0x46, 0x13, 0xb0, 0x7d, 0x3b, 0x0b, 0xd9, 0x4b, 0x9d, 0xb0, + 0xcf, 0x8d, 0xf4, 0x05, 0xcb, 0x12, 0x29, 0xfe, 0xe1, 0x97, 0xc7, 0xb7, + 0xc7, 0xaa, 0x53, 0x7e, 0x39, 0x2d, 0x9d, 0xf6, 0xd4, 0x5e, 0xb7, 0x8c, + 0x15, 0x6a, 0x81, 0xd2, 0x37, 0x1a, 0x43, 0x0e, 0xcb, 0xe6, 0x30, 0x21, + 0x43, 0x83, 0x69, 0x0f, 0xef, 0x6b, 0xcd, 0x10, 0xf9, 0x84, 0x60, 0xcf, + 0x89, 0xe9, 0x88, 0x10, 0x01, 0xaf, 0x09, 0xf3, 0x48, 0xbb, 0x07, 0x09, + 0x75, 0x01, 0x84, 0xfa, 0xb1, 0x1e, 0x51, 0x19, 0x8f, 0xc6, 0xc9, 0x85, + 0x65, 0x16, 0x5f, 0xe0, 0x56, 0x7e, 0xb7, 0xbf, 0x40, 0xc2, 0xd4, 0xd0, + 0x05, 0x1f, 0x93, 0x63, 0xc9, 0x24, 0x08, 0x3b, 0x91, 0xb2, 0x35, 0xe1, + 0xa4, 0x8f, 0x35, 0xdb, 0x24, 0x58, 0x75, 0x39, 0xe4, 0xdd, 0x10, 0x1a, + 0xb0, 0xdf, 0x13, 0x12, 0x73, 0x9e, 0x6d, 0xe7, 0x67, 0x3c, 0xdb, 0x1c, + 0x1c, 0xdd, 0x10, 0xdd, 0xcc, 0xf4, 0x07, 0x09, 0xb9, 0x2e, 0xe5, 0x75, + 0x6d, 0x97, 0xb7, 0x60, 0x5b, 0x89, 0x70, 0x81, 0xd2, 0x26, 0xd8, 0xc6, + 0x09, 0x2b, 0xb2, 0x05, 0x7f, 0xc4, 0xb8, 0x14, 0x41, 0x1e, 0x07, 0xf0, + 0x48, 0x41, 0x63, 0xcb, 0x0c, 0xaa, 0x45, 0x7e, 0x84, 0xf9, 0x33, 0xb3, + 0x58, 0x87, 0xbc, 0xb1, 0xd6, 0xc2, 0x65, 0xc7, 0x57, 0xc6, 0x95, 0xe8, + 0x85, 0x90, 0xb0, 0x62, 0x50, 0xf5, 0xee, 0x12, 0xf1, 0xd8, 0x7e, 0x73, + 0xcb, 0xc0, 0xc3, 0xa0, 0x25, 0x17, 0x23, 0x37, 0x91, 0xba, 0x63, 0xbd, + 0x84, 0xaf, 0xf3, 0x89, 0xe0, 0x51, 0xc2, 0x73, 0x35, 0x6d, 0x63, 0x86, + 0x21, 0xf2, 0x73, 0xbd, 0xc2, 0x47, 0xe0, 0x4d, 0x7e, 0x46, 0x37, 0x4b, + 0xd0, 0xf7, 0x61, 0x2a, 0xc7, 0x94, 0x50, 0x25, 0x36, 0xe8, 0xae, 0xda, + 0x2e, 0x1f, 0xb8, 0x08, 0xb2, 0x55, 0x7c, 0x6b, 0x66, 0x43, 0x8f, 0x02, + 0x1d, 0xdd, 0xa7, 0xeb, 0x98, 0x00, 0xa7, 0x25, 0x74, 0xf5, 0x93, 0x1b, + 0x6d, 0x26, 0xbb, 0x1d, 0xe5, 0xb7, 0xfc, 0x21, 0x25, 0x26, 0xd1, 0x77, + 0x1b, 0xa8, 0x6e, 0xaa, 0xc3, 0x4b, 0x64, 0x51, 0x7f, 0x91, 0x0e, 0x41, + 0x5c, 0x19, 0x83, 0xa1, 0xa8, 0x1f, 0x94, 0x99, 0x43, 0x0f, 0x99, 0xdb, + 0x18, 0xdc, 0x21, 0x6f, 0x76, 0xd1, 0x9e, 0xea, 0xa3, 0x76, 0xe0, 0xf0, + 0x09, 0xbc, 0xb9, 0xb4, 0xf7, 0x43, 0x6c, 0x1f, 0xd3, 0x2a, 0x86, 0x6a, + 0x2f, 0xe0, 0x6c, 0xf1, 0x83, 0x39, 0xd7, 0x70, 0xdb, 0xa2, 0x91, 0xab, + 0x54, 0xbe, 0xf4, 0x47, 0x88, 0x8c, 0xf0, 0x10, 0xd2, 0xe4, 0xad, 0xeb, + 0x7e, 0xb1, 0xba, 0x08, 0x4b, 0x67, 0x04, 0xa3, 0xf2, 0xe9, 0x90, 0x2b, + 0x81, 0xe3, 0x74, 0x76, 0x3d, 0x00, 0x9d, 0xd2, 0xbb, 0xfc, 0xa5, 0xa0, + 0x15, 0x1c, 0x28, 0xdf, 0x10, 0x4f, 0x47, 0xd7, 0x33, 0x46, 0x9d, 0xb2, + 0x57, 0xd2, 0xc6, 0x1f, 0xfb, 0xe4, 0x59, 0x4a, 0x2b, 0x28, 0xa9, 0x13, + 0xdd, 0xb9, 0xe9, 0x93, 0xb4, 0x88, 0xee, 0xe2, 0x5b, 0xa0, 0x07, 0x25, + 0xfe, 0x8a, 0x2e, 0x78, 0xe4, 0xb4, 0xe1, 0xd5, 0x1d, 0xf6, 0x1a, 0x3a, + 0xe3, 0x1c, 0x01, 0x2a, 0x1e, 0xa1, 0x86, 0x54, 0x9e, 0x49, 0xdc, 0xc9, + 0x59, 0xe3, 0x0d, 0x6d, 0x5a, 0x13, 0x36, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 120040007 (0x727aa47) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=IE, O=Baltimore, OU=CyberTrust, CN=Baltimore CyberTrust Root + Validity + Not Before: May 7 17:04:09 2014 GMT + Not After : May 7 17:03:30 2018 GMT + Subject: C=US, ST=Washington, L=Redmond, O=Microsoft Corporation, OU=Microsoft IT, CN=Microsoft IT SSL SHA2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (4096 bit) + Modulus: + 00:d1:e8:37:a7:76:8a:70:4b:19:f0:20:37:09:24: + 37:7f:ea:fb:78:e6:05:ba:6a:ad:4e:27:0d:fc:72: + 6a:d9:6c:21:c4:64:11:95:73:10:0a:5c:25:7b:88: + 6c:94:04:fd:c7:db:ae:7b:dc:4a:08:b3:3e:16:f1: + d0:ad:db:30:6d:d7:1a:1e:52:b5:3d:f0:47:19:03: + e2:7d:a6:bd:57:13:3f:54:ea:3a:a3:b1:77:fc:42: + f0:63:49:6a:91:80:2e:30:49:c0:8a:eb:2b:af:fe: + 3a:eb:07:5d:06:f7:e9:fd:84:0e:91:bd:09:20:29: + e8:6e:5d:09:ce:15:d3:e7:ef:db:50:eb:44:ef:18: + 57:ab:04:1d:bc:31:f9:f7:7b:2a:13:cf:d1:3d:51: + af:1b:c5:b5:7b:e7:b0:fc:53:bb:9a:e7:63:de:41: + 33:b6:47:24:69:5d:b8:46:a7:ff:ad:ab:df:4f:7a: + 78:25:27:21:26:34:ca:02:6e:37:51:f0:ed:58:1a: + 60:94:f6:c4:93:d8:dd:30:24:25:d7:1c:eb:19:94: + 35:5d:93:b2:ae:aa:29:83:73:c4:74:59:05:52:67: + 9d:da:67:51:39:05:3a:36:ea:f2:1e:76:2b:14:ae: + ec:3d:f9:14:99:8b:07:6e:bc:e7:0c:56:de:ac:be: + ae:db:75:32:90:9e:63:bd:74:bf:e0:0a:ca:f8:34: + 96:67:84:cd:d1:42:38:78:c7:99:b6:0c:ce:b6:0f: + e9:1b:cb:f4:59:be:11:0e:cb:2c:32:c8:fa:83:29: + 64:79:3c:8b:4b:f0:32:74:6c:f3:93:b8:96:6b:5d: + 57:5a:68:c1:cc:0c:79:8a:19:de:f5:49:02:5e:08: + 80:01:89:0c:32:cd:d2:d6:96:d5:4b:a0:f3:ec:bf: + ab:f4:7d:b3:a1:b9:7c:da:4e:d7:e5:b7:ac:b9:f2: + 25:5f:01:cb:8c:96:a8:28:ae:c1:33:5a:f6:3f:08: + 90:dc:eb:ff:39:d8:26:c8:12:9d:1c:9a:aa:a9:c0: + 16:8e:86:ed:67:52:96:00:7f:0d:92:3d:3d:d9:70: + 36:e5:ea:42:6f:1f:ae:95:e5:5b:5d:f8:d0:3a:c7: + d4:de:77:86:d0:fc:9e:4e:e2:e2:b8:a9:68:37:09: + c4:39:e3:85:b8:89:f3:1f:6e:b7:6d:1f:4a:2f:18: + 09:6f:de:4a:01:8f:14:c9:b7:a6:ee:a7:63:9f:33: + a4:54:7c:42:83:68:b8:a5:df:bf:ec:b9:1a:5d:13: + 3b:d9:ad:68:fd:20:0a:55:91:21:64:f9:d7:13:01: + a0:08:5d:59:89:1b:44:af:a4:ac:c7:05:10:fa:41: + 4a:a8:fb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: 1.3.6.1.4.1.6334.1.0 + CPS: http://cybertrust.omniroot.com/repository.cfm + Policy: 1.3.6.1.4.1.311.42.1 + + Authority Information Access: + OCSP - URI:http://ocsp.omniroot.com/baltimoreroot + + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication, OCSP Signing + X509v3 Authority Key Identifier: + keyid:E5:9D:59:30:82:47:58:CC:AC:FA:08:54:36:86:7B:3A:B5:04:4D:F0 + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://cdp1.public-trust.com/CRL/Omniroot2025.crl + + X509v3 Subject Key Identifier: + 51:AF:24:26:9C:F4:68:22:57:80:26:2B:3B:46:62:15:7B:1E:CC:A5 + Signature Algorithm: sha256WithRSAEncryption + 69:62:f6:84:91:00:c4:6f:82:7b:24:e1:42:a2:a5:8b:82:5c: + a7:c5:44:cb:e7:52:76:63:d3:76:9e:78:e2:69:35:b1:38:ba: + b0:96:c6:1f:ac:7b:c6:b2:65:77:8b:7d:8d:ae:64:b9:a5:8c: + 17:ca:58:65:c3:ad:82:f5:c5:a2:f5:01:13:93:c6:7e:44:e5: + c4:61:fa:03:b6:56:c1:72:e1:c8:28:c5:69:21:8f:ac:6e:fd: + 7f:43:83:36:b8:c0:d6:a0:28:fe:1a:45:be:fd:93:8c:8d:a4: + 64:79:1f:14:db:a1:9f:21:dc:c0:4e:7b:17:22:17:b1:b6:3c: + d3:9b:e2:0a:a3:7e:99:b0:c1:ac:d8:f4:86:df:3c:da:7d:14: + 9c:40:c1:7c:d2:18:6f:f1:4f:26:45:09:95:94:5c:da:d0:98: + f8:f4:4c:82:96:10:de:ac:30:cb:2b:ae:f9:92:ea:bf:79:03: + fc:1e:3f:ac:09:a4:3f:65:fd:91:4f:96:24:a7:ce:b4:4e:6a: + 96:29:17:ae:c0:a8:df:17:22:f4:17:e3:dc:1c:39:06:56:10: + ea:ea:b5:74:17:3c:4e:dd:7e:91:0a:a8:0b:78:07:a7:31:44: + 08:31:ab:18:84:0f:12:9c:e7:de:84:2c:e9:6d:93:45:bf:a8: + c1:3f:34:dc +-----BEGIN CERTIFICATE----- +MIIF4TCCBMmgAwIBAgIEByeqRzANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJJ +RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD +VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTE0MDUwNzE3MDQwOVoX +DTE4MDUwNzE3MDMzMFowgYsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5n +dG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y +YXRpb24xFTATBgNVBAsTDE1pY3Jvc29mdCBJVDEeMBwGA1UEAxMVTWljcm9zb2Z0 +IElUIFNTTCBTSEEyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0eg3 +p3aKcEsZ8CA3CSQ3f+r7eOYFumqtTicN/HJq2WwhxGQRlXMQClwle4hslAT9x9uu +e9xKCLM+FvHQrdswbdcaHlK1PfBHGQPifaa9VxM/VOo6o7F3/ELwY0lqkYAuMEnA +iusrr/466wddBvfp/YQOkb0JICnobl0JzhXT5+/bUOtE7xhXqwQdvDH593sqE8/R +PVGvG8W1e+ew/FO7mudj3kEztkckaV24Rqf/ravfT3p4JSchJjTKAm43UfDtWBpg +lPbEk9jdMCQl1xzrGZQ1XZOyrqopg3PEdFkFUmed2mdROQU6NuryHnYrFK7sPfkU +mYsHbrznDFberL6u23UykJ5jvXS/4ArK+DSWZ4TN0UI4eMeZtgzOtg/pG8v0Wb4R +DsssMsj6gylkeTyLS/AydGzzk7iWa11XWmjBzAx5ihne9UkCXgiAAYkMMs3S1pbV +S6Dz7L+r9H2zobl82k7X5besufIlXwHLjJaoKK7BM1r2PwiQ3Ov/OdgmyBKdHJqq +qcAWjobtZ1KWAH8Nkj092XA25epCbx+uleVbXfjQOsfU3neG0PyeTuLiuKloNwnE +OeOFuInzH263bR9KLxgJb95KAY8Uybem7qdjnzOkVHxCg2i4pd+/7LkaXRM72a1o +/SAKVZEhZPnXEwGgCF1ZiRtEr6SsxwUQ+kFKqPsCAwEAAaOCAXswggF3MBIGA1Ud +EwEB/wQIMAYBAf8CAQAwYAYDVR0gBFkwVzBIBgkrBgEEAbE+AQAwOzA5BggrBgEF +BQcCARYtaHR0cDovL2N5YmVydHJ1c3Qub21uaXJvb3QuY29tL3JlcG9zaXRvcnku +Y2ZtMAsGCSsGAQQBgjcqATBCBggrBgEFBQcBAQQ2MDQwMgYIKwYBBQUHMAGGJmh0 +dHA6Ly9vY3NwLm9tbmlyb290LmNvbS9iYWx0aW1vcmVyb290MA4GA1UdDwEB/wQE +AwIBhjAnBgNVHSUEIDAeBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMJMB8G +A1UdIwQYMBaAFOWdWTCCR1jMrPoIVDaGezq1BE3wMEIGA1UdHwQ7MDkwN6A1oDOG +MWh0dHA6Ly9jZHAxLnB1YmxpYy10cnVzdC5jb20vQ1JML09tbmlyb290MjAyNS5j +cmwwHQYDVR0OBBYEFFGvJCac9GgiV4AmKztGYhV7HsylMA0GCSqGSIb3DQEBCwUA +A4IBAQBpYvaEkQDEb4J7JOFCoqWLglynxUTL51J2Y9N2nnjiaTWxOLqwlsYfrHvG +smV3i32NrmS5pYwXylhlw62C9cWi9QETk8Z+ROXEYfoDtlbBcuHIKMVpIY+sbv1/ +Q4M2uMDWoCj+GkW+/ZOMjaRkeR8U26GfIdzATnsXIhextjzTm+IKo36ZsMGs2PSG +3zzafRScQMF80hhv8U8mRQmVlFza0Jj49EyClhDerDDLK675kuq/eQP8Hj+sCaQ/ +Zf2RT5Ykp860TmqWKReuwKjfFyL0F+PcHDkGVhDq6rV0FzxO3X6RCqgLeAenMUQI +MasYhA8SnOfehCzpbZNFv6jBPzTc +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_46[] = { + 0x30, 0x82, 0x05, 0xe1, 0x30, 0x82, 0x04, 0xc9, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0xaa, 0x47, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, + 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, + 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, + 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, + 0x30, 0x35, 0x30, 0x37, 0x31, 0x37, 0x30, 0x34, 0x30, 0x39, 0x5a, 0x17, + 0x0d, 0x31, 0x38, 0x30, 0x35, 0x30, 0x37, 0x31, 0x37, 0x30, 0x33, 0x33, + 0x30, 0x5a, 0x30, 0x81, 0x8b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, + 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, + 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, + 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, + 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x0c, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, + 0x74, 0x20, 0x49, 0x54, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, + 0x20, 0x49, 0x54, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32, + 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, + 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xd1, 0xe8, 0x37, + 0xa7, 0x76, 0x8a, 0x70, 0x4b, 0x19, 0xf0, 0x20, 0x37, 0x09, 0x24, 0x37, + 0x7f, 0xea, 0xfb, 0x78, 0xe6, 0x05, 0xba, 0x6a, 0xad, 0x4e, 0x27, 0x0d, + 0xfc, 0x72, 0x6a, 0xd9, 0x6c, 0x21, 0xc4, 0x64, 0x11, 0x95, 0x73, 0x10, + 0x0a, 0x5c, 0x25, 0x7b, 0x88, 0x6c, 0x94, 0x04, 0xfd, 0xc7, 0xdb, 0xae, + 0x7b, 0xdc, 0x4a, 0x08, 0xb3, 0x3e, 0x16, 0xf1, 0xd0, 0xad, 0xdb, 0x30, + 0x6d, 0xd7, 0x1a, 0x1e, 0x52, 0xb5, 0x3d, 0xf0, 0x47, 0x19, 0x03, 0xe2, + 0x7d, 0xa6, 0xbd, 0x57, 0x13, 0x3f, 0x54, 0xea, 0x3a, 0xa3, 0xb1, 0x77, + 0xfc, 0x42, 0xf0, 0x63, 0x49, 0x6a, 0x91, 0x80, 0x2e, 0x30, 0x49, 0xc0, + 0x8a, 0xeb, 0x2b, 0xaf, 0xfe, 0x3a, 0xeb, 0x07, 0x5d, 0x06, 0xf7, 0xe9, + 0xfd, 0x84, 0x0e, 0x91, 0xbd, 0x09, 0x20, 0x29, 0xe8, 0x6e, 0x5d, 0x09, + 0xce, 0x15, 0xd3, 0xe7, 0xef, 0xdb, 0x50, 0xeb, 0x44, 0xef, 0x18, 0x57, + 0xab, 0x04, 0x1d, 0xbc, 0x31, 0xf9, 0xf7, 0x7b, 0x2a, 0x13, 0xcf, 0xd1, + 0x3d, 0x51, 0xaf, 0x1b, 0xc5, 0xb5, 0x7b, 0xe7, 0xb0, 0xfc, 0x53, 0xbb, + 0x9a, 0xe7, 0x63, 0xde, 0x41, 0x33, 0xb6, 0x47, 0x24, 0x69, 0x5d, 0xb8, + 0x46, 0xa7, 0xff, 0xad, 0xab, 0xdf, 0x4f, 0x7a, 0x78, 0x25, 0x27, 0x21, + 0x26, 0x34, 0xca, 0x02, 0x6e, 0x37, 0x51, 0xf0, 0xed, 0x58, 0x1a, 0x60, + 0x94, 0xf6, 0xc4, 0x93, 0xd8, 0xdd, 0x30, 0x24, 0x25, 0xd7, 0x1c, 0xeb, + 0x19, 0x94, 0x35, 0x5d, 0x93, 0xb2, 0xae, 0xaa, 0x29, 0x83, 0x73, 0xc4, + 0x74, 0x59, 0x05, 0x52, 0x67, 0x9d, 0xda, 0x67, 0x51, 0x39, 0x05, 0x3a, + 0x36, 0xea, 0xf2, 0x1e, 0x76, 0x2b, 0x14, 0xae, 0xec, 0x3d, 0xf9, 0x14, + 0x99, 0x8b, 0x07, 0x6e, 0xbc, 0xe7, 0x0c, 0x56, 0xde, 0xac, 0xbe, 0xae, + 0xdb, 0x75, 0x32, 0x90, 0x9e, 0x63, 0xbd, 0x74, 0xbf, 0xe0, 0x0a, 0xca, + 0xf8, 0x34, 0x96, 0x67, 0x84, 0xcd, 0xd1, 0x42, 0x38, 0x78, 0xc7, 0x99, + 0xb6, 0x0c, 0xce, 0xb6, 0x0f, 0xe9, 0x1b, 0xcb, 0xf4, 0x59, 0xbe, 0x11, + 0x0e, 0xcb, 0x2c, 0x32, 0xc8, 0xfa, 0x83, 0x29, 0x64, 0x79, 0x3c, 0x8b, + 0x4b, 0xf0, 0x32, 0x74, 0x6c, 0xf3, 0x93, 0xb8, 0x96, 0x6b, 0x5d, 0x57, + 0x5a, 0x68, 0xc1, 0xcc, 0x0c, 0x79, 0x8a, 0x19, 0xde, 0xf5, 0x49, 0x02, + 0x5e, 0x08, 0x80, 0x01, 0x89, 0x0c, 0x32, 0xcd, 0xd2, 0xd6, 0x96, 0xd5, + 0x4b, 0xa0, 0xf3, 0xec, 0xbf, 0xab, 0xf4, 0x7d, 0xb3, 0xa1, 0xb9, 0x7c, + 0xda, 0x4e, 0xd7, 0xe5, 0xb7, 0xac, 0xb9, 0xf2, 0x25, 0x5f, 0x01, 0xcb, + 0x8c, 0x96, 0xa8, 0x28, 0xae, 0xc1, 0x33, 0x5a, 0xf6, 0x3f, 0x08, 0x90, + 0xdc, 0xeb, 0xff, 0x39, 0xd8, 0x26, 0xc8, 0x12, 0x9d, 0x1c, 0x9a, 0xaa, + 0xa9, 0xc0, 0x16, 0x8e, 0x86, 0xed, 0x67, 0x52, 0x96, 0x00, 0x7f, 0x0d, + 0x92, 0x3d, 0x3d, 0xd9, 0x70, 0x36, 0xe5, 0xea, 0x42, 0x6f, 0x1f, 0xae, + 0x95, 0xe5, 0x5b, 0x5d, 0xf8, 0xd0, 0x3a, 0xc7, 0xd4, 0xde, 0x77, 0x86, + 0xd0, 0xfc, 0x9e, 0x4e, 0xe2, 0xe2, 0xb8, 0xa9, 0x68, 0x37, 0x09, 0xc4, + 0x39, 0xe3, 0x85, 0xb8, 0x89, 0xf3, 0x1f, 0x6e, 0xb7, 0x6d, 0x1f, 0x4a, + 0x2f, 0x18, 0x09, 0x6f, 0xde, 0x4a, 0x01, 0x8f, 0x14, 0xc9, 0xb7, 0xa6, + 0xee, 0xa7, 0x63, 0x9f, 0x33, 0xa4, 0x54, 0x7c, 0x42, 0x83, 0x68, 0xb8, + 0xa5, 0xdf, 0xbf, 0xec, 0xb9, 0x1a, 0x5d, 0x13, 0x3b, 0xd9, 0xad, 0x68, + 0xfd, 0x20, 0x0a, 0x55, 0x91, 0x21, 0x64, 0xf9, 0xd7, 0x13, 0x01, 0xa0, + 0x08, 0x5d, 0x59, 0x89, 0x1b, 0x44, 0xaf, 0xa4, 0xac, 0xc7, 0x05, 0x10, + 0xfa, 0x41, 0x4a, 0xa8, 0xfb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x01, 0x7b, 0x30, 0x82, 0x01, 0x77, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x60, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x59, 0x30, + 0x57, 0x30, 0x48, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e, + 0x01, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x63, 0x66, 0x6d, 0x30, 0x0b, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, + 0x82, 0x37, 0x2a, 0x01, 0x30, 0x42, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x01, 0x01, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x26, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x6f, 0x6d, + 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, + 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x6f, 0x6f, 0x74, + 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, + 0x03, 0x02, 0x01, 0x86, 0x30, 0x27, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, + 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, + 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x09, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe5, 0x9d, + 0x59, 0x30, 0x82, 0x47, 0x58, 0xcc, 0xac, 0xfa, 0x08, 0x54, 0x36, 0x86, + 0x7b, 0x3a, 0xb5, 0x04, 0x4d, 0xf0, 0x30, 0x42, 0x06, 0x03, 0x55, 0x1d, + 0x1f, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, + 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x64, 0x70, 0x31, + 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x4f, 0x6d, + 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x32, 0x30, 0x32, 0x35, 0x2e, 0x63, + 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0x51, 0xaf, 0x24, 0x26, 0x9c, 0xf4, 0x68, 0x22, 0x57, 0x80, 0x26, + 0x2b, 0x3b, 0x46, 0x62, 0x15, 0x7b, 0x1e, 0xcc, 0xa5, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x01, 0x00, 0x69, 0x62, 0xf6, 0x84, 0x91, 0x00, 0xc4, + 0x6f, 0x82, 0x7b, 0x24, 0xe1, 0x42, 0xa2, 0xa5, 0x8b, 0x82, 0x5c, 0xa7, + 0xc5, 0x44, 0xcb, 0xe7, 0x52, 0x76, 0x63, 0xd3, 0x76, 0x9e, 0x78, 0xe2, + 0x69, 0x35, 0xb1, 0x38, 0xba, 0xb0, 0x96, 0xc6, 0x1f, 0xac, 0x7b, 0xc6, + 0xb2, 0x65, 0x77, 0x8b, 0x7d, 0x8d, 0xae, 0x64, 0xb9, 0xa5, 0x8c, 0x17, + 0xca, 0x58, 0x65, 0xc3, 0xad, 0x82, 0xf5, 0xc5, 0xa2, 0xf5, 0x01, 0x13, + 0x93, 0xc6, 0x7e, 0x44, 0xe5, 0xc4, 0x61, 0xfa, 0x03, 0xb6, 0x56, 0xc1, + 0x72, 0xe1, 0xc8, 0x28, 0xc5, 0x69, 0x21, 0x8f, 0xac, 0x6e, 0xfd, 0x7f, + 0x43, 0x83, 0x36, 0xb8, 0xc0, 0xd6, 0xa0, 0x28, 0xfe, 0x1a, 0x45, 0xbe, + 0xfd, 0x93, 0x8c, 0x8d, 0xa4, 0x64, 0x79, 0x1f, 0x14, 0xdb, 0xa1, 0x9f, + 0x21, 0xdc, 0xc0, 0x4e, 0x7b, 0x17, 0x22, 0x17, 0xb1, 0xb6, 0x3c, 0xd3, + 0x9b, 0xe2, 0x0a, 0xa3, 0x7e, 0x99, 0xb0, 0xc1, 0xac, 0xd8, 0xf4, 0x86, + 0xdf, 0x3c, 0xda, 0x7d, 0x14, 0x9c, 0x40, 0xc1, 0x7c, 0xd2, 0x18, 0x6f, + 0xf1, 0x4f, 0x26, 0x45, 0x09, 0x95, 0x94, 0x5c, 0xda, 0xd0, 0x98, 0xf8, + 0xf4, 0x4c, 0x82, 0x96, 0x10, 0xde, 0xac, 0x30, 0xcb, 0x2b, 0xae, 0xf9, + 0x92, 0xea, 0xbf, 0x79, 0x03, 0xfc, 0x1e, 0x3f, 0xac, 0x09, 0xa4, 0x3f, + 0x65, 0xfd, 0x91, 0x4f, 0x96, 0x24, 0xa7, 0xce, 0xb4, 0x4e, 0x6a, 0x96, + 0x29, 0x17, 0xae, 0xc0, 0xa8, 0xdf, 0x17, 0x22, 0xf4, 0x17, 0xe3, 0xdc, + 0x1c, 0x39, 0x06, 0x56, 0x10, 0xea, 0xea, 0xb5, 0x74, 0x17, 0x3c, 0x4e, + 0xdd, 0x7e, 0x91, 0x0a, 0xa8, 0x0b, 0x78, 0x07, 0xa7, 0x31, 0x44, 0x08, + 0x31, 0xab, 0x18, 0x84, 0x0f, 0x12, 0x9c, 0xe7, 0xde, 0x84, 0x2c, 0xe9, + 0x6d, 0x93, 0x45, 0xbf, 0xa8, 0xc1, 0x3f, 0x34, 0xdc, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 6e:cc:7a:a5:a7:03:20:09:b8:ce:bc:f4:e9:52:d4:91 + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 2006 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 3 Public Primary Certification Authority - G5 + Validity + Not Before: Feb 8 00:00:00 2010 GMT + Not After : Feb 7 23:59:59 2020 GMT + Subject: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=Terms of use at https://www.verisign.com/rpa (c)10, CN=VeriSign Class 3 Secure Server CA - G3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:b1:87:84:1f:c2:0c:45:f5:bc:ab:25:97:a7:ad: + a2:3e:9c:ba:f6:c1:39:b8:8b:ca:c2:ac:56:c6:e5: + bb:65:8e:44:4f:4d:ce:6f:ed:09:4a:d4:af:4e:10: + 9c:68:8b:2e:95:7b:89:9b:13:ca:e2:34:34:c1:f3: + 5b:f3:49:7b:62:83:48:81:74:d1:88:78:6c:02:53: + f9:bc:7f:43:26:57:58:33:83:3b:33:0a:17:b0:d0: + 4e:91:24:ad:86:7d:64:12:dc:74:4a:34:a1:1d:0a: + ea:96:1d:0b:15:fc:a3:4b:3b:ce:63:88:d0:f8:2d: + 0c:94:86:10:ca:b6:9a:3d:ca:eb:37:9c:00:48:35: + 86:29:50:78:e8:45:63:cd:19:41:4f:f5:95:ec:7b: + 98:d4:c4:71:b3:50:be:28:b3:8f:a0:b9:53:9c:f5: + ca:2c:23:a9:fd:14:06:e8:18:b4:9a:e8:3c:6e:81: + fd:e4:cd:35:36:b3:51:d3:69:ec:12:ba:56:6e:6f: + 9b:57:c5:8b:14:e7:0e:c7:9c:ed:4a:54:6a:c9:4d: + c5:bf:11:b1:ae:1c:67:81:cb:44:55:33:99:7f:24: + 9b:3f:53:45:7f:86:1a:f3:3c:fa:6d:7f:81:f5:b8: + 4a:d3:f5:85:37:1c:b5:a6:d0:09:e4:18:7b:38:4e: + fa:0f + Exponent: 65537 (0x10001) + X509v3 extensions: + Authority Information Access: + OCSP - URI:http://ocsp.verisign.com + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.23.3 + CPS: https://www.verisign.com/cps + User Notice: + Explicit Text: https://www.verisign.com/rpa + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.verisign.com/pca3-g5.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + 1.3.6.1.5.5.7.1.12: + 0_.].[0Y0W0U..image/gif0!0.0...+..............k...j.H.,{..0%.#http://logo.verisign.com/vslogo.gif + X509v3 Subject Alternative Name: + DirName:/CN=VeriSignMPKI-2-6 + X509v3 Subject Key Identifier: + 0D:44:5C:16:53:44:C1:82:7E:1D:20:AB:25:F4:01:63:D8:BE:79:A5 + X509v3 Authority Key Identifier: + keyid:7F:D3:65:A7:C2:DD:EC:BB:F0:30:09:F3:43:39:FA:02:AF:33:31:33 + + Signature Algorithm: sha1WithRSAEncryption + 0c:83:24:ef:dd:c3:0c:d9:58:9c:fe:36:b6:eb:8a:80:4b:d1: + a3:f7:9d:f3:cc:53:ef:82:9e:a3:a1:e6:97:c1:58:9d:75:6c: + e0:1d:1b:4c:fa:d1:c1:2d:05:c0:ea:6e:b2:22:70:55:d9:20: + 33:40:33:07:c2:65:83:fa:8f:43:37:9b:ea:0e:9a:6c:70:ee: + f6:9c:80:3b:d9:37:f4:7a:6d:ec:d0:18:7d:49:4a:ca:99:c7: + 19:28:a2:be:d8:77:24:f7:85:26:86:6d:87:05:40:41:67:d1: + 27:3a:ed:dc:48:1d:22:cd:0b:0b:8b:bc:f4:b1:7b:fd:b4:99: + a8:e9:76:2a:e1:1a:2d:87:6e:74:d3:88:dd:1e:22:c6:df:16: + b6:2b:82:14:0a:94:5c:f2:50:ec:af:ce:ff:62:37:0d:ad:65: + d3:06:41:53:ed:02:14:c8:b5:58:28:a1:ac:e0:5b:ec:b3:7f: + 95:4a:fb:03:c8:ad:26:db:e6:66:78:12:4a:d9:9f:42:fb:e1: + 98:e6:42:83:9b:8f:8f:67:24:e8:61:19:b5:dd:cd:b5:0b:26: + 05:8e:c3:6e:c4:c8:75:b8:46:cf:e2:18:06:5e:a9:ae:a8:81: + 9a:47:16:de:0c:28:6c:25:27:b9:de:b7:84:58:c6:1f:38:1e: + a4:c4:cb:66 +-----BEGIN CERTIFICATE----- +MIIF7DCCBNSgAwIBAgIQbsx6pacDIAm4zrz06VLUkTANBgkqhkiG9w0BAQUFADCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW +ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IC0gRzUwHhcNMTAwMjA4MDAwMDAwWhcNMjAwMjA3MjM1OTU5WjCBtTEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg +aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykxMDEvMC0GA1UEAxMmVmVy +aVNpZ24gQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0gRzMwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCxh4QfwgxF9byrJZenraI+nLr2wTm4i8rCrFbG +5btljkRPTc5v7QlK1K9OEJxoiy6Ve4mbE8riNDTB81vzSXtig0iBdNGIeGwCU/m8 +f0MmV1gzgzszChew0E6RJK2GfWQS3HRKNKEdCuqWHQsV/KNLO85jiND4LQyUhhDK +tpo9yus3nABINYYpUHjoRWPNGUFP9ZXse5jUxHGzUL4os4+guVOc9cosI6n9FAbo +GLSa6Dxugf3kzTU2s1HTaewSulZub5tXxYsU5w7HnO1KVGrJTcW/EbGuHGeBy0RV +M5l/JJs/U0V/hhrzPPptf4H1uErT9YU3HLWm0AnkGHs4TvoPAgMBAAGjggHfMIIB +2zA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLnZlcmlz +aWduLmNvbTASBgNVHRMBAf8ECDAGAQH/AgEAMHAGA1UdIARpMGcwZQYLYIZIAYb4 +RQEHFwMwVjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2Nw +czAqBggrBgEFBQcCAjAeGhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMDQG +A1UdHwQtMCswKaAnoCWGI2h0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUu +Y3JsMA4GA1UdDwEB/wQEAwIBBjBtBggrBgEFBQcBDARhMF+hXaBbMFkwVzBVFglp +bWFnZS9naWYwITAfMAcGBSsOAwIaBBSP5dMahqyNjmvDz4Bq1EgYLHsZLjAlFiNo +dHRwOi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvLmdpZjAoBgNVHREEITAfpB0w +GzEZMBcGA1UEAxMQVmVyaVNpZ25NUEtJLTItNjAdBgNVHQ4EFgQUDURcFlNEwYJ+ +HSCrJfQBY9i+eaUwHwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJ +KoZIhvcNAQEFBQADggEBAAyDJO/dwwzZWJz+NrbrioBL0aP3nfPMU++CnqOh5pfB +WJ11bOAdG0z60cEtBcDqbrIicFXZIDNAMwfCZYP6j0M3m+oOmmxw7vacgDvZN/R6 +bezQGH1JSsqZxxkoor7YdyT3hSaGbYcFQEFn0Sc67dxIHSLNCwuLvPSxe/20majp +dirhGi2HbnTTiN0eIsbfFrYrghQKlFzyUOyvzv9iNw2tZdMGQVPtAhTItVgooazg +W+yzf5VK+wPIrSbb5mZ4EkrZn0L74ZjmQoObj49nJOhhGbXdzbULJgWOw27EyHW4 +Rs/iGAZeqa6ogZpHFt4MKGwlJ7net4RYxh84HqTEy2Y= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_47[] = { + 0x30, 0x82, 0x05, 0xec, 0x30, 0x82, 0x04, 0xd4, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x6e, 0xcc, 0x7a, 0xa5, 0xa7, 0x03, 0x20, 0x09, 0xb8, + 0xce, 0xbc, 0xf4, 0xe9, 0x52, 0xd4, 0x91, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, + 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, + 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, + 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, + 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x32, 0x30, 0x38, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x30, 0x32, 0x30, 0x37, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xb5, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3b, 0x30, + 0x39, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x32, 0x54, 0x65, 0x72, 0x6d, + 0x73, 0x20, 0x6f, 0x66, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x74, 0x20, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x70, 0x61, 0x20, 0x28, 0x63, 0x29, 0x31, 0x30, 0x31, 0x2f, + 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x26, 0x56, 0x65, 0x72, + 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, + 0x33, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, + 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, + 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb1, 0x87, 0x84, 0x1f, + 0xc2, 0x0c, 0x45, 0xf5, 0xbc, 0xab, 0x25, 0x97, 0xa7, 0xad, 0xa2, 0x3e, + 0x9c, 0xba, 0xf6, 0xc1, 0x39, 0xb8, 0x8b, 0xca, 0xc2, 0xac, 0x56, 0xc6, + 0xe5, 0xbb, 0x65, 0x8e, 0x44, 0x4f, 0x4d, 0xce, 0x6f, 0xed, 0x09, 0x4a, + 0xd4, 0xaf, 0x4e, 0x10, 0x9c, 0x68, 0x8b, 0x2e, 0x95, 0x7b, 0x89, 0x9b, + 0x13, 0xca, 0xe2, 0x34, 0x34, 0xc1, 0xf3, 0x5b, 0xf3, 0x49, 0x7b, 0x62, + 0x83, 0x48, 0x81, 0x74, 0xd1, 0x88, 0x78, 0x6c, 0x02, 0x53, 0xf9, 0xbc, + 0x7f, 0x43, 0x26, 0x57, 0x58, 0x33, 0x83, 0x3b, 0x33, 0x0a, 0x17, 0xb0, + 0xd0, 0x4e, 0x91, 0x24, 0xad, 0x86, 0x7d, 0x64, 0x12, 0xdc, 0x74, 0x4a, + 0x34, 0xa1, 0x1d, 0x0a, 0xea, 0x96, 0x1d, 0x0b, 0x15, 0xfc, 0xa3, 0x4b, + 0x3b, 0xce, 0x63, 0x88, 0xd0, 0xf8, 0x2d, 0x0c, 0x94, 0x86, 0x10, 0xca, + 0xb6, 0x9a, 0x3d, 0xca, 0xeb, 0x37, 0x9c, 0x00, 0x48, 0x35, 0x86, 0x29, + 0x50, 0x78, 0xe8, 0x45, 0x63, 0xcd, 0x19, 0x41, 0x4f, 0xf5, 0x95, 0xec, + 0x7b, 0x98, 0xd4, 0xc4, 0x71, 0xb3, 0x50, 0xbe, 0x28, 0xb3, 0x8f, 0xa0, + 0xb9, 0x53, 0x9c, 0xf5, 0xca, 0x2c, 0x23, 0xa9, 0xfd, 0x14, 0x06, 0xe8, + 0x18, 0xb4, 0x9a, 0xe8, 0x3c, 0x6e, 0x81, 0xfd, 0xe4, 0xcd, 0x35, 0x36, + 0xb3, 0x51, 0xd3, 0x69, 0xec, 0x12, 0xba, 0x56, 0x6e, 0x6f, 0x9b, 0x57, + 0xc5, 0x8b, 0x14, 0xe7, 0x0e, 0xc7, 0x9c, 0xed, 0x4a, 0x54, 0x6a, 0xc9, + 0x4d, 0xc5, 0xbf, 0x11, 0xb1, 0xae, 0x1c, 0x67, 0x81, 0xcb, 0x44, 0x55, + 0x33, 0x99, 0x7f, 0x24, 0x9b, 0x3f, 0x53, 0x45, 0x7f, 0x86, 0x1a, 0xf3, + 0x3c, 0xfa, 0x6d, 0x7f, 0x81, 0xf5, 0xb8, 0x4a, 0xd3, 0xf5, 0x85, 0x37, + 0x1c, 0xb5, 0xa6, 0xd0, 0x09, 0xe4, 0x18, 0x7b, 0x38, 0x4e, 0xfa, 0x0f, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0xdf, 0x30, 0x82, 0x01, + 0xdb, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, + 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, + 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, 0x55, + 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, + 0x02, 0x01, 0x00, 0x30, 0x70, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x69, + 0x30, 0x67, 0x30, 0x65, 0x06, 0x0b, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, + 0x45, 0x01, 0x07, 0x17, 0x03, 0x30, 0x56, 0x30, 0x28, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, + 0x73, 0x30, 0x2a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, + 0x02, 0x30, 0x1e, 0x1a, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, + 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x34, 0x06, + 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2d, 0x30, 0x2b, 0x30, 0x29, 0xa0, 0x27, + 0xa0, 0x25, 0x86, 0x23, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, + 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, 0x2d, 0x67, 0x35, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x6d, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, 0xa1, + 0x5d, 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, 0x1f, + 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, 0x8f, + 0xe5, 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, 0x6a, + 0xd4, 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x76, + 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x76, 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, 0x28, + 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x21, 0x30, 0x1f, 0xa4, 0x1d, 0x30, + 0x1b, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, + 0x2d, 0x32, 0x2d, 0x36, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, + 0x16, 0x04, 0x14, 0x0d, 0x44, 0x5c, 0x16, 0x53, 0x44, 0xc1, 0x82, 0x7e, + 0x1d, 0x20, 0xab, 0x25, 0xf4, 0x01, 0x63, 0xd8, 0xbe, 0x79, 0xa5, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, + 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x0c, 0x83, 0x24, 0xef, 0xdd, 0xc3, 0x0c, 0xd9, + 0x58, 0x9c, 0xfe, 0x36, 0xb6, 0xeb, 0x8a, 0x80, 0x4b, 0xd1, 0xa3, 0xf7, + 0x9d, 0xf3, 0xcc, 0x53, 0xef, 0x82, 0x9e, 0xa3, 0xa1, 0xe6, 0x97, 0xc1, + 0x58, 0x9d, 0x75, 0x6c, 0xe0, 0x1d, 0x1b, 0x4c, 0xfa, 0xd1, 0xc1, 0x2d, + 0x05, 0xc0, 0xea, 0x6e, 0xb2, 0x22, 0x70, 0x55, 0xd9, 0x20, 0x33, 0x40, + 0x33, 0x07, 0xc2, 0x65, 0x83, 0xfa, 0x8f, 0x43, 0x37, 0x9b, 0xea, 0x0e, + 0x9a, 0x6c, 0x70, 0xee, 0xf6, 0x9c, 0x80, 0x3b, 0xd9, 0x37, 0xf4, 0x7a, + 0x6d, 0xec, 0xd0, 0x18, 0x7d, 0x49, 0x4a, 0xca, 0x99, 0xc7, 0x19, 0x28, + 0xa2, 0xbe, 0xd8, 0x77, 0x24, 0xf7, 0x85, 0x26, 0x86, 0x6d, 0x87, 0x05, + 0x40, 0x41, 0x67, 0xd1, 0x27, 0x3a, 0xed, 0xdc, 0x48, 0x1d, 0x22, 0xcd, + 0x0b, 0x0b, 0x8b, 0xbc, 0xf4, 0xb1, 0x7b, 0xfd, 0xb4, 0x99, 0xa8, 0xe9, + 0x76, 0x2a, 0xe1, 0x1a, 0x2d, 0x87, 0x6e, 0x74, 0xd3, 0x88, 0xdd, 0x1e, + 0x22, 0xc6, 0xdf, 0x16, 0xb6, 0x2b, 0x82, 0x14, 0x0a, 0x94, 0x5c, 0xf2, + 0x50, 0xec, 0xaf, 0xce, 0xff, 0x62, 0x37, 0x0d, 0xad, 0x65, 0xd3, 0x06, + 0x41, 0x53, 0xed, 0x02, 0x14, 0xc8, 0xb5, 0x58, 0x28, 0xa1, 0xac, 0xe0, + 0x5b, 0xec, 0xb3, 0x7f, 0x95, 0x4a, 0xfb, 0x03, 0xc8, 0xad, 0x26, 0xdb, + 0xe6, 0x66, 0x78, 0x12, 0x4a, 0xd9, 0x9f, 0x42, 0xfb, 0xe1, 0x98, 0xe6, + 0x42, 0x83, 0x9b, 0x8f, 0x8f, 0x67, 0x24, 0xe8, 0x61, 0x19, 0xb5, 0xdd, + 0xcd, 0xb5, 0x0b, 0x26, 0x05, 0x8e, 0xc3, 0x6e, 0xc4, 0xc8, 0x75, 0xb8, + 0x46, 0xcf, 0xe2, 0x18, 0x06, 0x5e, 0xa9, 0xae, 0xa8, 0x81, 0x9a, 0x47, + 0x16, 0xde, 0x0c, 0x28, 0x6c, 0x25, 0x27, 0xb9, 0xde, 0xb7, 0x84, 0x58, + 0xc6, 0x1f, 0x38, 0x1e, 0xa4, 0xc4, 0xcb, 0x66, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 2c:48:dd:93:0d:f5:59:8e:f9:3c:99:54:7a:60:ed:43 + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 2006 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 3 Public Primary Certification Authority - G5 + Validity + Not Before: Nov 8 00:00:00 2006 GMT + Not After : Nov 7 23:59:59 2016 GMT + Subject: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=Terms of use at https://www.verisign.com/rpa (c)06, CN=VeriSign Class 3 Extended Validation SSL SGC CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:bd:56:88:ba:88:34:64:64:cf:cd:ca:b0:ee:e7: + 19:73:c5:72:d9:bb:45:bc:b5:a8:ff:83:be:1c:03: + db:ed:89:b7:2e:10:1a:25:bc:55:ca:41:a1:9f:0b: + cf:19:5e:70:b9:5e:39:4b:9e:31:1c:5f:87:ae:2a: + aa:a8:2b:a2:1b:3b:10:23:5f:13:b1:dd:08:8c:4e: + 14:da:83:81:e3:b5:8c:e3:68:ed:24:67:ce:56:b6: + ac:9b:73:96:44:db:8a:8c:b3:d6:f0:71:93:8e:db: + 71:54:4a:eb:73:59:6a:8f:70:51:2c:03:9f:97:d1: + cc:11:7a:bc:62:0d:95:2a:c9:1c:75:57:e9:f5:c7: + ea:ba:84:35:cb:c7:85:5a:7e:e4:4d:e1:11:97:7d: + 0e:20:34:45:db:f1:a2:09:eb:eb:3d:9e:b8:96:43: + 5e:34:4b:08:25:1e:43:1a:a2:d9:b7:8a:01:34:3d: + c3:f8:e5:af:4f:8c:ff:cd:65:f0:23:4e:c5:97:b3: + 5c:da:90:1c:82:85:0d:06:0d:c1:22:b6:7b:28:a4: + 03:c3:4c:53:d1:58:bc:72:bc:08:39:fc:a0:76:a8: + a8:e9:4b:6e:88:3d:e3:b3:31:25:8c:73:29:48:0e: + 32:79:06:ed:3d:43:f4:f6:e4:e9:fc:7d:be:8e:08: + d5:1f + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Subject Key Identifier: + 4E:43:C8:1D:76:EF:37:53:7A:4F:F2:58:6F:94:F3:38:E2:D5:BD:DF + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.verisign.com/cps + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://EVSecure-crl.verisign.com/pca3-g5.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + Netscape Cert Type: + SSL CA, S/MIME CA + 1.3.6.1.5.5.7.1.12: + 0_.].[0Y0W0U..image/gif0!0.0...+..............k...j.H.,{..0%.#http://logo.verisign.com/vslogo.gif + X509v3 Subject Alternative Name: + DirName:/CN=Class3CA2048-1-48 + X509v3 Authority Key Identifier: + keyid:7F:D3:65:A7:C2:DD:EC:BB:F0:30:09:F3:43:39:FA:02:AF:33:31:33 + + Authority Information Access: + OCSP - URI:http://EVSecure-ocsp.verisign.com + + X509v3 Extended Key Usage: + Netscape Server Gated Crypto, 2.16.840.1.113733.1.8.1, TLS Web Server Authentication, TLS Web Client Authentication + Signature Algorithm: sha1WithRSAEncryption + 27:74:a6:34:ea:1d:9d:e1:53:d6:1c:9d:0c:a7:5b:4c:a9:67: + f2:f0:32:b7:01:0f:fb:42:18:38:de:e4:ee:49:c8:13:c9:0b: + ec:04:c3:40:71:18:72:76:43:02:23:5d:ab:7b:c8:48:14:1a: + c8:7b:1d:fc:f6:0a:9f:36:a1:d2:09:73:71:66:96:75:51:34: + bf:99:30:51:67:9d:54:b7:26:45:ac:73:08:23:86:26:99:71: + f4:8e:d7:ea:39:9b:06:09:23:bf:62:dd:a8:c4:b6:7d:a4:89: + 07:3e:f3:6d:ae:40:59:50:79:97:37:3d:32:78:7d:b2:63:4b: + f9:ea:08:69:0e:13:ed:e8:cf:bb:ac:05:86:ca:22:cf:88:62: + 5d:3c:22:49:d8:63:d5:24:a6:bd:ef:5c:e3:cc:20:3b:22:ea: + fc:44:c6:a8:e5:1f:e1:86:cd:0c:4d:8f:93:53:d9:7f:ee:a1: + 08:a7:b3:30:96:49:70:6e:a3:6c:3d:d0:63:ef:25:66:63:cc: + aa:b7:18:17:4e:ea:70:76:f6:ba:42:a6:80:37:09:4e:9f:66: + 88:2e:6b:33:66:c8:c0:71:a4:41:eb:5a:e3:fc:14:2e:4b:88: + fd:ae:6e:5b:65:e9:27:e4:bf:e4:b0:23:c1:b2:7d:5b:62:25: + d7:3e:10:d4 +-----BEGIN CERTIFICATE----- +MIIGHjCCBQagAwIBAgIQLEjdkw31WY75PJlUemDtQzANBgkqhkiG9w0BAQUFADCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW +ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBvjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg +aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMvVmVy +aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0EwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9Voi6iDRkZM/NyrDu5xlzxXLZ +u0W8taj/g74cA9vtibcuEBolvFXKQaGfC88ZXnC5XjlLnjEcX4euKqqoK6IbOxAj +XxOx3QiMThTag4HjtYzjaO0kZ85Wtqybc5ZE24qMs9bwcZOO23FUSutzWWqPcFEs +A5+X0cwRerxiDZUqyRx1V+n1x+q6hDXLx4VafuRN4RGXfQ4gNEXb8aIJ6+s9nriW +Q140SwglHkMaotm3igE0PcP45a9PjP/NZfAjTsWXs1zakByChQ0GDcEitnsopAPD +TFPRWLxyvAg5/KB2qKjpS26IPeOzMSWMcylIDjJ5Bu09Q/T25On8fb6OCNUfAgMB +AAGjggIIMIICBDAdBgNVHQ4EFgQUTkPIHXbvN1N6T/JYb5TzOOLVvd8wEgYDVR0T +AQH/BAgwBgEB/wIBADA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc +aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL2NwczA9BgNVHR8ENjA0MDKgMKAuhixo +dHRwOi8vRVZTZWN1cmUtY3JsLnZlcmlzaWduLmNvbS9wY2EzLWc1LmNybDAOBgNV +HQ8BAf8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgEGMG0GCCsGAQUFBwEMBGEwX6Fd +oFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrU +SBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMCkG +A1UdEQQiMCCkHjAcMRowGAYDVQQDExFDbGFzczNDQTIwNDgtMS00ODAfBgNVHSME +GDAWgBR/02Wnwt3su/AwCfNDOfoCrzMxMzA9BggrBgEFBQcBAQQxMC8wLQYIKwYB +BQUHMAGGIWh0dHA6Ly9FVlNlY3VyZS1vY3NwLnZlcmlzaWduLmNvbTA0BgNVHSUE +LTArBglghkgBhvhCBAEGCmCGSAGG+EUBCAEGCCsGAQUFBwMBBggrBgEFBQcDAjAN +BgkqhkiG9w0BAQUFAAOCAQEAJ3SmNOodneFT1hydDKdbTKln8vAytwEP+0IYON7k +7knIE8kL7ATDQHEYcnZDAiNdq3vISBQayHsd/PYKnzah0glzcWaWdVE0v5kwUWed +VLcmRaxzCCOGJplx9I7X6jmbBgkjv2LdqMS2faSJBz7zba5AWVB5lzc9Mnh9smNL ++eoIaQ4T7ejPu6wFhsoiz4hiXTwiSdhj1SSmve9c48wgOyLq/ETGqOUf4YbNDE2P +k1PZf+6hCKezMJZJcG6jbD3QY+8lZmPMqrcYF07qcHb2ukKmgDcJTp9miC5rM2bI +wHGkQeta4/wULkuI/a5uW2XpJ+S/5LAjwbJ9W2Il1z4Q1A== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_48[] = { + 0x30, 0x82, 0x06, 0x1e, 0x30, 0x82, 0x05, 0x06, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x2c, 0x48, 0xdd, 0x93, 0x0d, 0xf5, 0x59, 0x8e, 0xf9, + 0x3c, 0x99, 0x54, 0x7a, 0x60, 0xed, 0x43, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, + 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, + 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, + 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, + 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x30, 0x38, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x36, 0x31, 0x31, 0x30, 0x37, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xbe, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3b, 0x30, + 0x39, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x32, 0x54, 0x65, 0x72, 0x6d, + 0x73, 0x20, 0x6f, 0x66, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x74, 0x20, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x70, 0x61, 0x20, 0x28, 0x63, 0x29, 0x30, 0x36, 0x31, 0x38, + 0x30, 0x36, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2f, 0x56, 0x65, 0x72, + 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, + 0x33, 0x20, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x53, + 0x4c, 0x20, 0x53, 0x47, 0x43, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xbd, 0x56, 0x88, 0xba, 0x88, 0x34, 0x64, + 0x64, 0xcf, 0xcd, 0xca, 0xb0, 0xee, 0xe7, 0x19, 0x73, 0xc5, 0x72, 0xd9, + 0xbb, 0x45, 0xbc, 0xb5, 0xa8, 0xff, 0x83, 0xbe, 0x1c, 0x03, 0xdb, 0xed, + 0x89, 0xb7, 0x2e, 0x10, 0x1a, 0x25, 0xbc, 0x55, 0xca, 0x41, 0xa1, 0x9f, + 0x0b, 0xcf, 0x19, 0x5e, 0x70, 0xb9, 0x5e, 0x39, 0x4b, 0x9e, 0x31, 0x1c, + 0x5f, 0x87, 0xae, 0x2a, 0xaa, 0xa8, 0x2b, 0xa2, 0x1b, 0x3b, 0x10, 0x23, + 0x5f, 0x13, 0xb1, 0xdd, 0x08, 0x8c, 0x4e, 0x14, 0xda, 0x83, 0x81, 0xe3, + 0xb5, 0x8c, 0xe3, 0x68, 0xed, 0x24, 0x67, 0xce, 0x56, 0xb6, 0xac, 0x9b, + 0x73, 0x96, 0x44, 0xdb, 0x8a, 0x8c, 0xb3, 0xd6, 0xf0, 0x71, 0x93, 0x8e, + 0xdb, 0x71, 0x54, 0x4a, 0xeb, 0x73, 0x59, 0x6a, 0x8f, 0x70, 0x51, 0x2c, + 0x03, 0x9f, 0x97, 0xd1, 0xcc, 0x11, 0x7a, 0xbc, 0x62, 0x0d, 0x95, 0x2a, + 0xc9, 0x1c, 0x75, 0x57, 0xe9, 0xf5, 0xc7, 0xea, 0xba, 0x84, 0x35, 0xcb, + 0xc7, 0x85, 0x5a, 0x7e, 0xe4, 0x4d, 0xe1, 0x11, 0x97, 0x7d, 0x0e, 0x20, + 0x34, 0x45, 0xdb, 0xf1, 0xa2, 0x09, 0xeb, 0xeb, 0x3d, 0x9e, 0xb8, 0x96, + 0x43, 0x5e, 0x34, 0x4b, 0x08, 0x25, 0x1e, 0x43, 0x1a, 0xa2, 0xd9, 0xb7, + 0x8a, 0x01, 0x34, 0x3d, 0xc3, 0xf8, 0xe5, 0xaf, 0x4f, 0x8c, 0xff, 0xcd, + 0x65, 0xf0, 0x23, 0x4e, 0xc5, 0x97, 0xb3, 0x5c, 0xda, 0x90, 0x1c, 0x82, + 0x85, 0x0d, 0x06, 0x0d, 0xc1, 0x22, 0xb6, 0x7b, 0x28, 0xa4, 0x03, 0xc3, + 0x4c, 0x53, 0xd1, 0x58, 0xbc, 0x72, 0xbc, 0x08, 0x39, 0xfc, 0xa0, 0x76, + 0xa8, 0xa8, 0xe9, 0x4b, 0x6e, 0x88, 0x3d, 0xe3, 0xb3, 0x31, 0x25, 0x8c, + 0x73, 0x29, 0x48, 0x0e, 0x32, 0x79, 0x06, 0xed, 0x3d, 0x43, 0xf4, 0xf6, + 0xe4, 0xe9, 0xfc, 0x7d, 0xbe, 0x8e, 0x08, 0xd5, 0x1f, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x02, 0x08, 0x30, 0x82, 0x02, 0x04, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x4e, 0x43, 0xc8, + 0x1d, 0x76, 0xef, 0x37, 0x53, 0x7a, 0x4f, 0xf2, 0x58, 0x6f, 0x94, 0xf3, + 0x38, 0xe2, 0xd5, 0xbd, 0xdf, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, + 0x30, 0x32, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x63, 0x70, 0x73, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, + 0x36, 0x30, 0x34, 0x30, 0x32, 0xa0, 0x30, 0xa0, 0x2e, 0x86, 0x2c, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x45, 0x56, 0x53, 0x65, 0x63, 0x75, + 0x72, 0x65, 0x2d, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, + 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, + 0x2d, 0x67, 0x35, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, + 0x11, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x01, 0x01, + 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x6d, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, 0xa1, 0x5d, + 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, 0x1f, 0x30, + 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, 0x8f, 0xe5, + 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, 0x6a, 0xd4, + 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x76, 0x65, + 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, + 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, 0x29, 0x06, + 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, + 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x33, 0x43, 0x41, 0x32, 0x30, 0x34, 0x38, 0x2d, + 0x31, 0x2d, 0x34, 0x38, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x18, 0x30, 0x16, 0x80, 0x14, 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, + 0xbb, 0xf0, 0x30, 0x09, 0xf3, 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, + 0x33, 0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, + 0x01, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x45, 0x56, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x2d, 0x6f, + 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, + 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, + 0x2d, 0x30, 0x2b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, + 0x04, 0x01, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, + 0x08, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x27, 0x74, 0xa6, 0x34, 0xea, 0x1d, + 0x9d, 0xe1, 0x53, 0xd6, 0x1c, 0x9d, 0x0c, 0xa7, 0x5b, 0x4c, 0xa9, 0x67, + 0xf2, 0xf0, 0x32, 0xb7, 0x01, 0x0f, 0xfb, 0x42, 0x18, 0x38, 0xde, 0xe4, + 0xee, 0x49, 0xc8, 0x13, 0xc9, 0x0b, 0xec, 0x04, 0xc3, 0x40, 0x71, 0x18, + 0x72, 0x76, 0x43, 0x02, 0x23, 0x5d, 0xab, 0x7b, 0xc8, 0x48, 0x14, 0x1a, + 0xc8, 0x7b, 0x1d, 0xfc, 0xf6, 0x0a, 0x9f, 0x36, 0xa1, 0xd2, 0x09, 0x73, + 0x71, 0x66, 0x96, 0x75, 0x51, 0x34, 0xbf, 0x99, 0x30, 0x51, 0x67, 0x9d, + 0x54, 0xb7, 0x26, 0x45, 0xac, 0x73, 0x08, 0x23, 0x86, 0x26, 0x99, 0x71, + 0xf4, 0x8e, 0xd7, 0xea, 0x39, 0x9b, 0x06, 0x09, 0x23, 0xbf, 0x62, 0xdd, + 0xa8, 0xc4, 0xb6, 0x7d, 0xa4, 0x89, 0x07, 0x3e, 0xf3, 0x6d, 0xae, 0x40, + 0x59, 0x50, 0x79, 0x97, 0x37, 0x3d, 0x32, 0x78, 0x7d, 0xb2, 0x63, 0x4b, + 0xf9, 0xea, 0x08, 0x69, 0x0e, 0x13, 0xed, 0xe8, 0xcf, 0xbb, 0xac, 0x05, + 0x86, 0xca, 0x22, 0xcf, 0x88, 0x62, 0x5d, 0x3c, 0x22, 0x49, 0xd8, 0x63, + 0xd5, 0x24, 0xa6, 0xbd, 0xef, 0x5c, 0xe3, 0xcc, 0x20, 0x3b, 0x22, 0xea, + 0xfc, 0x44, 0xc6, 0xa8, 0xe5, 0x1f, 0xe1, 0x86, 0xcd, 0x0c, 0x4d, 0x8f, + 0x93, 0x53, 0xd9, 0x7f, 0xee, 0xa1, 0x08, 0xa7, 0xb3, 0x30, 0x96, 0x49, + 0x70, 0x6e, 0xa3, 0x6c, 0x3d, 0xd0, 0x63, 0xef, 0x25, 0x66, 0x63, 0xcc, + 0xaa, 0xb7, 0x18, 0x17, 0x4e, 0xea, 0x70, 0x76, 0xf6, 0xba, 0x42, 0xa6, + 0x80, 0x37, 0x09, 0x4e, 0x9f, 0x66, 0x88, 0x2e, 0x6b, 0x33, 0x66, 0xc8, + 0xc0, 0x71, 0xa4, 0x41, 0xeb, 0x5a, 0xe3, 0xfc, 0x14, 0x2e, 0x4b, 0x88, + 0xfd, 0xae, 0x6e, 0x5b, 0x65, 0xe9, 0x27, 0xe4, 0xbf, 0xe4, 0xb0, 0x23, + 0xc1, 0xb2, 0x7d, 0x5b, 0x62, 0x25, 0xd7, 0x3e, 0x10, 0xd4, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 64:1b:e8:20:ce:02:08:13:f3:2d:4d:2d:95:d6:7e:67 + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 2006 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 3 Public Primary Certification Authority - G5 + Validity + Not Before: Feb 8 00:00:00 2010 GMT + Not After : Feb 7 23:59:59 2020 GMT + Subject: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=Terms of use at https://www.verisign.com/rpa (c)10, CN=VeriSign Class 3 International Server CA - G3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:99:d6:9c:62:f0:15:f4:81:9a:41:08:59:8f:13: + 9d:17:c9:9f:51:dc:da:b1:52:ef:ff:e3:41:dd:e0: + df:c4:28:c6:e3:ad:79:1f:27:10:98:b8:bb:20:97: + c1:28:44:41:0f:ea:a9:a8:52:cf:4d:4e:1b:8b:bb: + b5:c4:76:d9:cc:56:06:ee:b3:55:20:2a:de:15:8d: + 71:cb:54:c8:6f:17:cd:89:00:e4:dc:ff:e1:c0:1f: + 68:71:e9:c7:29:2e:7e:bc:3b:fc:e5:bb:ab:26:54: + 8b:66:90:cd:f6:92:b9:31:24:80:bc:9e:6c:d5:fc: + 7e:d2:e1:4b:8c:dc:42:fa:44:4b:5f:f8:18:b5:2e: + 30:f4:3d:12:98:d3:62:05:73:54:a6:9c:a2:1d:be: + 52:83:3a:07:46:c4:3b:02:56:21:bf:f2:51:4f:d0: + a6:99:39:e9:ae:a5:3f:89:9b:9c:7d:fe:4d:60:07: + 25:20:f7:bb:d7:69:83:2b:82:93:43:37:d9:83:41: + 1b:6b:0b:ab:4a:66:84:4f:4a:8e:de:7e:34:99:8e: + 68:d6:ca:39:06:9b:4c:b3:9a:48:4d:13:46:b4:58: + 21:04:c4:fb:a0:4d:ac:2e:4b:62:12:e3:fb:4d:f6: + c9:51:00:01:1f:fc:1e:6a:81:2a:38:e0:b9:4f:d6: + 2d:45 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.23.3 + CPS: https://www.verisign.com/cps + User Notice: + Explicit Text: https://www.verisign.com/rpa + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + 1.3.6.1.5.5.7.1.12: + 0_.].[0Y0W0U..image/gif0!0.0...+..............k...j.H.,{..0%.#http://logo.verisign.com/vslogo.gif + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication, Netscape Server Gated Crypto, 2.16.840.1.113733.1.8.1 + Authority Information Access: + OCSP - URI:http://ocsp.verisign.com + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.verisign.com/pca3-g5.crl + + X509v3 Subject Alternative Name: + DirName:/CN=VeriSignMPKI-2-7 + X509v3 Subject Key Identifier: + D7:9B:7C:D8:22:A0:15:F7:DD:AD:5F:CE:29:9B:58:C3:BC:46:00:B5 + X509v3 Authority Key Identifier: + keyid:7F:D3:65:A7:C2:DD:EC:BB:F0:30:09:F3:43:39:FA:02:AF:33:31:33 + + Signature Algorithm: sha1WithRSAEncryption + 71:b5:7d:73:52:4a:dd:d7:4d:34:2b:2e:af:94:46:a5:49:50: + 02:4f:f8:2f:17:70:f2:13:dc:1f:21:86:aa:c2:4f:7c:37:3c: + d4:46:78:ae:5d:78:6f:d1:ba:5a:bc:10:ab:58:36:c5:8c:62: + 15:45:60:17:21:e2:d5:42:a8:77:a1:55:d8:43:04:51:f6:6e: + ba:48:e6:5d:4c:b7:44:d3:3e:a4:d5:d6:33:9a:9f:0d:e6:d7: + 4e:96:44:95:5a:6c:d6:a3:16:53:0e:98:43:ce:a4:b8:c3:66: + 7a:05:5c:62:10:e8:1b:12:db:7d:2e:76:50:ff:df:d7:6b:1b: + cc:8a:cc:71:fa:b3:40:56:7c:33:7a:77:94:5b:f5:0b:53:fb: + 0e:5f:bc:68:fb:af:2a:ee:30:37:79:16:93:25:7f:4d:10:ff: + 57:fb:bf:6e:3b:33:21:de:79:dc:86:17:59:2d:43:64:b7:a6: + 66:87:ea:bc:96:46:19:1a:86:8b:6f:d7:b7:49:00:5b:db:a3: + bf:29:9a:ee:f7:d3:33:ae:a3:f4:9e:4c:ca:5e:69:d4:1b:ad: + b7:90:77:6a:d8:59:6f:79:ab:01:fa:55:f0:8a:21:66:e5:65: + 6e:fd:7c:d3:df:1e:eb:7e:3f:06:90:fb:19:0b:d3:06:02:1b: + 78:43:99:a8 +-----BEGIN CERTIFICATE----- +MIIGKTCCBRGgAwIBAgIQZBvoIM4CCBPzLU0tldZ+ZzANBgkqhkiG9w0BAQUFADCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW +ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IC0gRzUwHhcNMTAwMjA4MDAwMDAwWhcNMjAwMjA3MjM1OTU5WjCBvDEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg +aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykxMDE2MDQGA1UEAxMtVmVy +aVNpZ24gQ2xhc3MgMyBJbnRlcm5hdGlvbmFsIFNlcnZlciBDQSAtIEczMIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmdacYvAV9IGaQQhZjxOdF8mfUdza +sVLv/+NB3eDfxCjG4615HycQmLi7IJfBKERBD+qpqFLPTU4bi7u1xHbZzFYG7rNV +ICreFY1xy1TIbxfNiQDk3P/hwB9ocenHKS5+vDv85burJlSLZpDN9pK5MSSAvJ5s +1fx+0uFLjNxC+kRLX/gYtS4w9D0SmNNiBXNUppyiHb5SgzoHRsQ7AlYhv/JRT9Cm +mTnprqU/iZucff5NYAclIPe712mDK4KTQzfZg0EbawurSmaET0qO3n40mY5o1so5 +BptMs5pITRNGtFghBMT7oE2sLktiEuP7TfbJUQABH/weaoEqOOC5T9YtRQIDAQAB +o4ICFTCCAhEwEgYDVR0TAQH/BAgwBgEB/wIBADBwBgNVHSAEaTBnMGUGC2CGSAGG ++EUBBxcDMFYwKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9j +cHMwKgYIKwYBBQUHAgIwHhocaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYTAO +BgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv +Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDov +L2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwNAYDVR0lBC0wKwYIKwYBBQUH +AwEGCCsGAQUFBwMCBglghkgBhvhCBAEGCmCGSAGG+EUBCAEwNAYIKwYBBQUHAQEE +KDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC52ZXJpc2lnbi5jb20wNAYDVR0f +BC0wKzApoCegJYYjaHR0cDovL2NybC52ZXJpc2lnbi5jb20vcGNhMy1nNS5jcmww +KAYDVR0RBCEwH6QdMBsxGTAXBgNVBAMTEFZlcmlTaWduTVBLSS0yLTcwHQYDVR0O +BBYEFNebfNgioBX33a1fzimbWMO8RgC1MB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ +80M5+gKvMzEzMA0GCSqGSIb3DQEBBQUAA4IBAQBxtX1zUkrd1000Ky6vlEalSVAC +T/gvF3DyE9wfIYaqwk98NzzURniuXXhv0bpavBCrWDbFjGIVRWAXIeLVQqh3oVXY +QwRR9m66SOZdTLdE0z6k1dYzmp8N5tdOlkSVWmzWoxZTDphDzqS4w2Z6BVxiEOgb +Ett9LnZQ/9/XaxvMisxx+rNAVnwzeneUW/ULU/sOX7xo+68q7jA3eRaTJX9NEP9X ++79uOzMh3nnchhdZLUNkt6Zmh+q8lkYZGoaLb9e3SQBb26O/KZru99MzrqP0nkzK +XmnUG623kHdq2FlveasB+lXwiiFm5WVu/XzT3x7rfj8GkPsZC9MGAht4Q5mo +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_49[] = { + 0x30, 0x82, 0x06, 0x29, 0x30, 0x82, 0x05, 0x11, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x64, 0x1b, 0xe8, 0x20, 0xce, 0x02, 0x08, 0x13, 0xf3, + 0x2d, 0x4d, 0x2d, 0x95, 0xd6, 0x7e, 0x67, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, + 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, + 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, + 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, + 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x32, 0x30, 0x38, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x30, 0x32, 0x30, 0x37, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xbc, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3b, 0x30, + 0x39, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x32, 0x54, 0x65, 0x72, 0x6d, + 0x73, 0x20, 0x6f, 0x66, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x74, 0x20, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x70, 0x61, 0x20, 0x28, 0x63, 0x29, 0x31, 0x30, 0x31, 0x36, + 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d, 0x56, 0x65, 0x72, + 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, + 0x33, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, + 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, + 0x01, 0x01, 0x00, 0x99, 0xd6, 0x9c, 0x62, 0xf0, 0x15, 0xf4, 0x81, 0x9a, + 0x41, 0x08, 0x59, 0x8f, 0x13, 0x9d, 0x17, 0xc9, 0x9f, 0x51, 0xdc, 0xda, + 0xb1, 0x52, 0xef, 0xff, 0xe3, 0x41, 0xdd, 0xe0, 0xdf, 0xc4, 0x28, 0xc6, + 0xe3, 0xad, 0x79, 0x1f, 0x27, 0x10, 0x98, 0xb8, 0xbb, 0x20, 0x97, 0xc1, + 0x28, 0x44, 0x41, 0x0f, 0xea, 0xa9, 0xa8, 0x52, 0xcf, 0x4d, 0x4e, 0x1b, + 0x8b, 0xbb, 0xb5, 0xc4, 0x76, 0xd9, 0xcc, 0x56, 0x06, 0xee, 0xb3, 0x55, + 0x20, 0x2a, 0xde, 0x15, 0x8d, 0x71, 0xcb, 0x54, 0xc8, 0x6f, 0x17, 0xcd, + 0x89, 0x00, 0xe4, 0xdc, 0xff, 0xe1, 0xc0, 0x1f, 0x68, 0x71, 0xe9, 0xc7, + 0x29, 0x2e, 0x7e, 0xbc, 0x3b, 0xfc, 0xe5, 0xbb, 0xab, 0x26, 0x54, 0x8b, + 0x66, 0x90, 0xcd, 0xf6, 0x92, 0xb9, 0x31, 0x24, 0x80, 0xbc, 0x9e, 0x6c, + 0xd5, 0xfc, 0x7e, 0xd2, 0xe1, 0x4b, 0x8c, 0xdc, 0x42, 0xfa, 0x44, 0x4b, + 0x5f, 0xf8, 0x18, 0xb5, 0x2e, 0x30, 0xf4, 0x3d, 0x12, 0x98, 0xd3, 0x62, + 0x05, 0x73, 0x54, 0xa6, 0x9c, 0xa2, 0x1d, 0xbe, 0x52, 0x83, 0x3a, 0x07, + 0x46, 0xc4, 0x3b, 0x02, 0x56, 0x21, 0xbf, 0xf2, 0x51, 0x4f, 0xd0, 0xa6, + 0x99, 0x39, 0xe9, 0xae, 0xa5, 0x3f, 0x89, 0x9b, 0x9c, 0x7d, 0xfe, 0x4d, + 0x60, 0x07, 0x25, 0x20, 0xf7, 0xbb, 0xd7, 0x69, 0x83, 0x2b, 0x82, 0x93, + 0x43, 0x37, 0xd9, 0x83, 0x41, 0x1b, 0x6b, 0x0b, 0xab, 0x4a, 0x66, 0x84, + 0x4f, 0x4a, 0x8e, 0xde, 0x7e, 0x34, 0x99, 0x8e, 0x68, 0xd6, 0xca, 0x39, + 0x06, 0x9b, 0x4c, 0xb3, 0x9a, 0x48, 0x4d, 0x13, 0x46, 0xb4, 0x58, 0x21, + 0x04, 0xc4, 0xfb, 0xa0, 0x4d, 0xac, 0x2e, 0x4b, 0x62, 0x12, 0xe3, 0xfb, + 0x4d, 0xf6, 0xc9, 0x51, 0x00, 0x01, 0x1f, 0xfc, 0x1e, 0x6a, 0x81, 0x2a, + 0x38, 0xe0, 0xb9, 0x4f, 0xd6, 0x2d, 0x45, 0x02, 0x03, 0x01, 0x00, 0x01, + 0xa3, 0x82, 0x02, 0x15, 0x30, 0x82, 0x02, 0x11, 0x30, 0x12, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, + 0xff, 0x02, 0x01, 0x00, 0x30, 0x70, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x69, 0x30, 0x67, 0x30, 0x65, 0x06, 0x0b, 0x60, 0x86, 0x48, 0x01, 0x86, + 0xf8, 0x45, 0x01, 0x07, 0x17, 0x03, 0x30, 0x56, 0x30, 0x28, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, + 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, + 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, + 0x70, 0x73, 0x30, 0x2a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x02, 0x30, 0x1e, 0x1a, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, + 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x0e, + 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, + 0x01, 0x06, 0x30, 0x6d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59, + 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, + 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, + 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac, + 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b, + 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, + 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67, + 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x25, + 0x04, 0x2d, 0x30, 0x2b, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, + 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x04, 0x01, 0x06, + 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x08, 0x01, 0x30, + 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, + 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x2d, 0x30, 0x2b, 0x30, 0x29, 0xa0, 0x27, 0xa0, 0x25, 0x86, 0x23, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, + 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x70, 0x63, 0x61, 0x33, 0x2d, 0x67, 0x35, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x28, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x21, 0x30, 0x1f, 0xa4, 0x1d, + 0x30, 0x1b, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x10, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, + 0x49, 0x2d, 0x32, 0x2d, 0x37, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, + 0x04, 0x16, 0x04, 0x14, 0xd7, 0x9b, 0x7c, 0xd8, 0x22, 0xa0, 0x15, 0xf7, + 0xdd, 0xad, 0x5f, 0xce, 0x29, 0x9b, 0x58, 0xc3, 0xbc, 0x46, 0x00, 0xb5, + 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, + 0x14, 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, + 0xf3, 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x01, 0x00, 0x71, 0xb5, 0x7d, 0x73, 0x52, 0x4a, 0xdd, + 0xd7, 0x4d, 0x34, 0x2b, 0x2e, 0xaf, 0x94, 0x46, 0xa5, 0x49, 0x50, 0x02, + 0x4f, 0xf8, 0x2f, 0x17, 0x70, 0xf2, 0x13, 0xdc, 0x1f, 0x21, 0x86, 0xaa, + 0xc2, 0x4f, 0x7c, 0x37, 0x3c, 0xd4, 0x46, 0x78, 0xae, 0x5d, 0x78, 0x6f, + 0xd1, 0xba, 0x5a, 0xbc, 0x10, 0xab, 0x58, 0x36, 0xc5, 0x8c, 0x62, 0x15, + 0x45, 0x60, 0x17, 0x21, 0xe2, 0xd5, 0x42, 0xa8, 0x77, 0xa1, 0x55, 0xd8, + 0x43, 0x04, 0x51, 0xf6, 0x6e, 0xba, 0x48, 0xe6, 0x5d, 0x4c, 0xb7, 0x44, + 0xd3, 0x3e, 0xa4, 0xd5, 0xd6, 0x33, 0x9a, 0x9f, 0x0d, 0xe6, 0xd7, 0x4e, + 0x96, 0x44, 0x95, 0x5a, 0x6c, 0xd6, 0xa3, 0x16, 0x53, 0x0e, 0x98, 0x43, + 0xce, 0xa4, 0xb8, 0xc3, 0x66, 0x7a, 0x05, 0x5c, 0x62, 0x10, 0xe8, 0x1b, + 0x12, 0xdb, 0x7d, 0x2e, 0x76, 0x50, 0xff, 0xdf, 0xd7, 0x6b, 0x1b, 0xcc, + 0x8a, 0xcc, 0x71, 0xfa, 0xb3, 0x40, 0x56, 0x7c, 0x33, 0x7a, 0x77, 0x94, + 0x5b, 0xf5, 0x0b, 0x53, 0xfb, 0x0e, 0x5f, 0xbc, 0x68, 0xfb, 0xaf, 0x2a, + 0xee, 0x30, 0x37, 0x79, 0x16, 0x93, 0x25, 0x7f, 0x4d, 0x10, 0xff, 0x57, + 0xfb, 0xbf, 0x6e, 0x3b, 0x33, 0x21, 0xde, 0x79, 0xdc, 0x86, 0x17, 0x59, + 0x2d, 0x43, 0x64, 0xb7, 0xa6, 0x66, 0x87, 0xea, 0xbc, 0x96, 0x46, 0x19, + 0x1a, 0x86, 0x8b, 0x6f, 0xd7, 0xb7, 0x49, 0x00, 0x5b, 0xdb, 0xa3, 0xbf, + 0x29, 0x9a, 0xee, 0xf7, 0xd3, 0x33, 0xae, 0xa3, 0xf4, 0x9e, 0x4c, 0xca, + 0x5e, 0x69, 0xd4, 0x1b, 0xad, 0xb7, 0x90, 0x77, 0x6a, 0xd8, 0x59, 0x6f, + 0x79, 0xab, 0x01, 0xfa, 0x55, 0xf0, 0x8a, 0x21, 0x66, 0xe5, 0x65, 0x6e, + 0xfd, 0x7c, 0xd3, 0xdf, 0x1e, 0xeb, 0x7e, 0x3f, 0x06, 0x90, 0xfb, 0x19, + 0x0b, 0xd3, 0x06, 0x02, 0x1b, 0x78, 0x43, 0x99, 0xa8, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 26 (0x1a) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=IL, O=StartCom Ltd., OU=Secure Digital Certificate Signing, CN=StartCom Certification Authority + Validity + Not Before: Oct 24 20:57:09 2007 GMT + Not After : Oct 24 20:57:09 2017 GMT + Subject: C=IL, O=StartCom Ltd., OU=Secure Digital Certificate Signing, CN=StartCom Class 2 Primary Intermediate Server CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:e2:4f:39:2f:a1:8c:9a:85:ad:08:0e:08:3e:57: + f2:88:01:21:1b:94:a9:6c:e2:b8:db:aa:19:18:46: + 3a:52:a1:f5:0f:f4:6e:8c:ea:96:8c:96:87:79:13: + 40:51:2f:22:f2:0c:8b:87:0f:65:df:71:74:34:43: + 55:b1:35:09:9b:d9:bc:1f:fa:eb:42:d0:97:40:72: + b7:43:96:3d:ba:96:9d:5d:50:02:1c:9b:91:8d:9c: + c0:ac:d7:bb:2f:17:d7:cb:3e:82:9d:73:eb:07:42: + 92:b2:cd:64:b3:74:55:1b:b4:4b:86:21:2c:f7:78: + 87:32:e0:16:e4:da:bd:4c:95:ea:a4:0a:7e:b6:0a: + 0d:2e:8a:cf:55:ab:c3:e5:dd:41:8a:4e:e6:6f:65: + 6c:b2:40:cf:17:5d:b9:c3:6a:0b:27:11:84:77:61: + f6:c2:7c:ed:c0:8d:78:14:18:99:81:99:75:63:b7: + e8:53:d3:ba:61:e9:0e:fa:a2:30:f3:46:a2:b9:c9: + 1f:6c:80:5a:40:ac:27:ed:48:47:33:b0:54:c6:46: + 1a:f3:35:61:c1:02:29:90:54:7e:64:4d:c4:30:52: + 02:82:d7:df:ce:21:6e:18:91:d7:b8:ab:8c:27:17: + b5:f0:a3:01:2f:8e:d2:2e:87:3a:3d:b4:29:67:8a: + c4:03 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 11:DB:23:45:FD:54:CC:6A:71:6F:84:8A:03:D7:BE:F7:01:2F:26:86 + X509v3 Authority Key Identifier: + keyid:4E:0B:EF:1A:A4:40:5B:A5:17:69:87:30:CA:34:68:43:D0:41:AE:F2 + + Authority Information Access: + OCSP - URI:http://ocsp.startssl.com/ca + CA Issuers - URI:http://www.startssl.com/sfsca.crt + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://www.startssl.com/sfsca.crl + + Full Name: + URI:http://crl.startssl.com/sfsca.crl + + X509v3 Certificate Policies: + Policy: 1.3.6.1.4.1.23223.1.2.1 + CPS: http://www.startssl.com/policy.pdf + CPS: http://www.startssl.com/intermediate.pdf + + Signature Algorithm: sha1WithRSAEncryption + 9d:07:e1:ee:90:76:31:67:16:45:70:8c:cb:84:8b:4b:57:68: + 44:a5:89:c1:f2:7e:cb:28:8b:f5:e7:70:77:d5:b6:f4:0b:21: + 60:a5:a1:74:73:24:22:80:d6:d8:ba:8d:a2:62:5d:09:35:42: + 29:fb:39:63:45:0b:a4:b0:38:1a:68:f4:95:13:cc:e0:43:94: + ec:eb:39:1a:ec:57:29:d9:99:6d:f5:84:cd:8e:73:ae:c9:dc: + 6a:fa:9e:9d:16:64:93:08:c7:1c:c2:89:54:9e:77:80:90:f6: + b9:29:76:eb:13:67:48:59:f8:2e:3a:31:b8:c9:d3:88:e5:5f: + 4e:d2:19:3d:43:8e:d7:92:ff:cf:38:b6:e1:5b:8a:53:1d:ce: + ac:b4:76:2f:d8:f7:40:63:d5:ee:69:f3:45:7d:a0:62:c1:61: + c3:75:ed:b2:7b:4d:ac:21:27:30:4e:59:46:6a:93:17:ca:c8: + 39:2d:01:73:65:5b:e9:41:9b:11:17:9c:c8:c8:4a:ef:a1:76: + 60:2d:ae:93:ff:0c:d5:33:13:9f:4f:13:ce:dd:86:f1:fc:f8: + 35:54:15:a8:5b:e7:85:7e:fa:37:09:ff:8b:b8:31:49:9e:0d: + 6e:de:b4:d2:12:2d:b8:ed:c8:c3:f1:b6:42:a0:4c:97:79:df: + fe:c3:a3:9f:a1:f4:6d:2c:84:77:a4:a2:05:e1:17:ff:31:dd: + 9a:f3:b8:7a:c3:52:c2:11:11:b7:50:31:8a:7f:cc:e7:5a:89: + cc:f7:86:9a:61:92:4f:2f:94:b6:98:c7:78:e0:62:4b:43:7d: + 3c:de:d6:9a:b4:10:a1:40:9c:4b:2a:dc:b8:d0:d4:9e:fd:f1: + 84:78:1b:0e:57:8f:69:54:42:68:7b:ea:a0:ef:75:0f:07:a2: + 8c:73:99:ab:55:f5:07:09:d2:af:38:03:6a:90:03:0c:2f:8f: + e2:e8:43:c2:31:e9:6f:ad:87:e5:8d:bd:4e:2c:89:4b:51:e6: + 9c:4c:54:76:c0:12:81:53:9b:ec:a0:fc:2c:9c:da:18:95:6e: + 1e:38:26:42:27:78:60:08:df:7f:6d:32:e8:d8:c0:6f:1f:eb: + 26:75:9f:93:fc:7b:1b:fe:35:90:dc:53:a3:07:a6:3f:83:55: + 0a:2b:4e:62:82:25:ce:66:30:5d:2c:e0:f9:19:1b:75:b9:9d: + 98:56:a6:83:27:7a:d1:8f:8d:59:93:fc:3f:73:d7:2e:b4:2c: + 95:d8:8b:f7:c9:7e:c7:fc:9d:ac:72:04:1f:d2:cc:17:f4:ed: + 34:60:9b:9e:4a:97:04:fe:dd:72:0e:57:54:51:06:70:4d:ef: + aa:1c:a4:82:e0:33:c7:f4 +-----BEGIN CERTIFICATE----- +MIIGNDCCBBygAwIBAgIBGjANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW +MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg +Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDcxMDI0MjA1NzA5WhcNMTcxMDI0MjA1NzA5WjCB +jDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsT +IlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNVBAMTL1N0 +YXJ0Q29tIENsYXNzIDIgUHJpbWFyeSBJbnRlcm1lZGlhdGUgU2VydmVyIENBMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4k85L6GMmoWtCA4IPlfyiAEh +G5SpbOK426oZGEY6UqH1D/RujOqWjJaHeRNAUS8i8gyLhw9l33F0NENVsTUJm9m8 +H/rrQtCXQHK3Q5Y9upadXVACHJuRjZzArNe7LxfXyz6CnXPrB0KSss1ks3RVG7RL +hiEs93iHMuAW5Nq9TJXqpAp+tgoNLorPVavD5d1Bik7mb2VsskDPF125w2oLJxGE +d2H2wnztwI14FBiZgZl1Y7foU9O6YekO+qIw80aiuckfbIBaQKwn7UhHM7BUxkYa +8zVhwQIpkFR+ZE3EMFICgtffziFuGJHXuKuMJxe18KMBL47SLoc6PbQpZ4rEAwID +AQABo4IBrTCCAakwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFBHbI0X9VMxqcW+EigPXvvcBLyaGMB8GA1UdIwQYMBaAFE4L7xqkQFul +F2mHMMo0aEPQQa7yMGYGCCsGAQUFBwEBBFowWDAnBggrBgEFBQcwAYYbaHR0cDov +L29jc3Auc3RhcnRzc2wuY29tL2NhMC0GCCsGAQUFBzAChiFodHRwOi8vd3d3LnN0 +YXJ0c3NsLmNvbS9zZnNjYS5jcnQwWwYDVR0fBFQwUjAnoCWgI4YhaHR0cDovL3d3 +dy5zdGFydHNzbC5jb20vc2ZzY2EuY3JsMCegJaAjhiFodHRwOi8vY3JsLnN0YXJ0 +c3NsLmNvbS9zZnNjYS5jcmwwgYAGA1UdIAR5MHcwdQYLKwYBBAGBtTcBAgEwZjAu +BggrBgEFBQcCARYiaHR0cDovL3d3dy5zdGFydHNzbC5jb20vcG9saWN5LnBkZjA0 +BggrBgEFBQcCARYoaHR0cDovL3d3dy5zdGFydHNzbC5jb20vaW50ZXJtZWRpYXRl +LnBkZjANBgkqhkiG9w0BAQUFAAOCAgEAnQfh7pB2MWcWRXCMy4SLS1doRKWJwfJ+ +yyiL9edwd9W29AshYKWhdHMkIoDW2LqNomJdCTVCKfs5Y0ULpLA4Gmj0lRPM4EOU +7Os5GuxXKdmZbfWEzY5zrsncavqenRZkkwjHHMKJVJ53gJD2uSl26xNnSFn4Ljox +uMnTiOVfTtIZPUOO15L/zzi24VuKUx3OrLR2L9j3QGPV7mnzRX2gYsFhw3XtsntN +rCEnME5ZRmqTF8rIOS0Bc2Vb6UGbERecyMhK76F2YC2uk/8M1TMTn08Tzt2G8fz4 +NVQVqFvnhX76Nwn/i7gxSZ4Nbt600hItuO3Iw/G2QqBMl3nf/sOjn6H0bSyEd6Si +BeEX/zHdmvO4esNSwhERt1Axin/M51qJzPeGmmGSTy+UtpjHeOBiS0N9PN7WmrQQ +oUCcSyrcuNDUnv3xhHgbDlePaVRCaHvqoO91DweijHOZq1X1BwnSrzgDapADDC+P +4uhDwjHpb62H5Y29TiyJS1HmnExUdsASgVOb7KD8LJzaGJVuHjgmQid4YAjff20y +6NjAbx/rJnWfk/x7G/41kNxTowemP4NVCitOYoIlzmYwXSzg+RkbdbmdmFamgyd6 +0Y+NWZP8P3PXLrQsldiL98l+x/ydrHIEH9LMF/TtNGCbnkqXBP7dcg5XVFEGcE3v +qhykguAzx/Q= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_50[] = { + 0x30, 0x82, 0x06, 0x34, 0x30, 0x82, 0x04, 0x1c, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x01, 0x1a, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x7d, 0x31, 0x0b, 0x30, + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x4c, 0x31, 0x16, + 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x4c, 0x74, 0x64, 0x2e, 0x31, 0x2b, + 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x22, 0x53, 0x65, 0x63, + 0x75, 0x72, 0x65, 0x20, 0x44, 0x69, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, + 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x31, 0x29, 0x30, 0x27, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, + 0x6f, 0x6d, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x37, 0x31, 0x30, 0x32, 0x34, + 0x32, 0x30, 0x35, 0x37, 0x30, 0x39, 0x5a, 0x17, 0x0d, 0x31, 0x37, 0x31, + 0x30, 0x32, 0x34, 0x32, 0x30, 0x35, 0x37, 0x30, 0x39, 0x5a, 0x30, 0x81, + 0x8c, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x49, 0x4c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x4c, 0x74, + 0x64, 0x2e, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x22, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x44, 0x69, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x31, + 0x38, 0x30, 0x36, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2f, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x20, 0x32, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x20, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe2, 0x4f, 0x39, 0x2f, 0xa1, 0x8c, + 0x9a, 0x85, 0xad, 0x08, 0x0e, 0x08, 0x3e, 0x57, 0xf2, 0x88, 0x01, 0x21, + 0x1b, 0x94, 0xa9, 0x6c, 0xe2, 0xb8, 0xdb, 0xaa, 0x19, 0x18, 0x46, 0x3a, + 0x52, 0xa1, 0xf5, 0x0f, 0xf4, 0x6e, 0x8c, 0xea, 0x96, 0x8c, 0x96, 0x87, + 0x79, 0x13, 0x40, 0x51, 0x2f, 0x22, 0xf2, 0x0c, 0x8b, 0x87, 0x0f, 0x65, + 0xdf, 0x71, 0x74, 0x34, 0x43, 0x55, 0xb1, 0x35, 0x09, 0x9b, 0xd9, 0xbc, + 0x1f, 0xfa, 0xeb, 0x42, 0xd0, 0x97, 0x40, 0x72, 0xb7, 0x43, 0x96, 0x3d, + 0xba, 0x96, 0x9d, 0x5d, 0x50, 0x02, 0x1c, 0x9b, 0x91, 0x8d, 0x9c, 0xc0, + 0xac, 0xd7, 0xbb, 0x2f, 0x17, 0xd7, 0xcb, 0x3e, 0x82, 0x9d, 0x73, 0xeb, + 0x07, 0x42, 0x92, 0xb2, 0xcd, 0x64, 0xb3, 0x74, 0x55, 0x1b, 0xb4, 0x4b, + 0x86, 0x21, 0x2c, 0xf7, 0x78, 0x87, 0x32, 0xe0, 0x16, 0xe4, 0xda, 0xbd, + 0x4c, 0x95, 0xea, 0xa4, 0x0a, 0x7e, 0xb6, 0x0a, 0x0d, 0x2e, 0x8a, 0xcf, + 0x55, 0xab, 0xc3, 0xe5, 0xdd, 0x41, 0x8a, 0x4e, 0xe6, 0x6f, 0x65, 0x6c, + 0xb2, 0x40, 0xcf, 0x17, 0x5d, 0xb9, 0xc3, 0x6a, 0x0b, 0x27, 0x11, 0x84, + 0x77, 0x61, 0xf6, 0xc2, 0x7c, 0xed, 0xc0, 0x8d, 0x78, 0x14, 0x18, 0x99, + 0x81, 0x99, 0x75, 0x63, 0xb7, 0xe8, 0x53, 0xd3, 0xba, 0x61, 0xe9, 0x0e, + 0xfa, 0xa2, 0x30, 0xf3, 0x46, 0xa2, 0xb9, 0xc9, 0x1f, 0x6c, 0x80, 0x5a, + 0x40, 0xac, 0x27, 0xed, 0x48, 0x47, 0x33, 0xb0, 0x54, 0xc6, 0x46, 0x1a, + 0xf3, 0x35, 0x61, 0xc1, 0x02, 0x29, 0x90, 0x54, 0x7e, 0x64, 0x4d, 0xc4, + 0x30, 0x52, 0x02, 0x82, 0xd7, 0xdf, 0xce, 0x21, 0x6e, 0x18, 0x91, 0xd7, + 0xb8, 0xab, 0x8c, 0x27, 0x17, 0xb5, 0xf0, 0xa3, 0x01, 0x2f, 0x8e, 0xd2, + 0x2e, 0x87, 0x3a, 0x3d, 0xb4, 0x29, 0x67, 0x8a, 0xc4, 0x03, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0xad, 0x30, 0x82, 0x01, 0xa9, 0x30, + 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, + 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, + 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x11, 0xdb, 0x23, 0x45, 0xfd, + 0x54, 0xcc, 0x6a, 0x71, 0x6f, 0x84, 0x8a, 0x03, 0xd7, 0xbe, 0xf7, 0x01, + 0x2f, 0x26, 0x86, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, + 0x30, 0x16, 0x80, 0x14, 0x4e, 0x0b, 0xef, 0x1a, 0xa4, 0x40, 0x5b, 0xa5, + 0x17, 0x69, 0x87, 0x30, 0xca, 0x34, 0x68, 0x43, 0xd0, 0x41, 0xae, 0xf2, + 0x30, 0x66, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, + 0x04, 0x5a, 0x30, 0x58, 0x30, 0x27, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x01, 0x86, 0x1b, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, + 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x61, 0x30, 0x2d, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x21, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x66, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x74, 0x30, 0x5b, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x54, 0x30, 0x52, 0x30, 0x27, 0xa0, 0x25, 0xa0, + 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, + 0x77, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x73, 0x63, + 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x81, 0x80, 0x06, 0x03, 0x55, 0x1d, + 0x20, 0x04, 0x79, 0x30, 0x77, 0x30, 0x75, 0x06, 0x0b, 0x2b, 0x06, 0x01, + 0x04, 0x01, 0x81, 0xb5, 0x37, 0x01, 0x02, 0x01, 0x30, 0x66, 0x30, 0x2e, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x22, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x64, 0x66, 0x30, 0x34, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x28, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, + 0x2e, 0x70, 0x64, 0x66, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, + 0x9d, 0x07, 0xe1, 0xee, 0x90, 0x76, 0x31, 0x67, 0x16, 0x45, 0x70, 0x8c, + 0xcb, 0x84, 0x8b, 0x4b, 0x57, 0x68, 0x44, 0xa5, 0x89, 0xc1, 0xf2, 0x7e, + 0xcb, 0x28, 0x8b, 0xf5, 0xe7, 0x70, 0x77, 0xd5, 0xb6, 0xf4, 0x0b, 0x21, + 0x60, 0xa5, 0xa1, 0x74, 0x73, 0x24, 0x22, 0x80, 0xd6, 0xd8, 0xba, 0x8d, + 0xa2, 0x62, 0x5d, 0x09, 0x35, 0x42, 0x29, 0xfb, 0x39, 0x63, 0x45, 0x0b, + 0xa4, 0xb0, 0x38, 0x1a, 0x68, 0xf4, 0x95, 0x13, 0xcc, 0xe0, 0x43, 0x94, + 0xec, 0xeb, 0x39, 0x1a, 0xec, 0x57, 0x29, 0xd9, 0x99, 0x6d, 0xf5, 0x84, + 0xcd, 0x8e, 0x73, 0xae, 0xc9, 0xdc, 0x6a, 0xfa, 0x9e, 0x9d, 0x16, 0x64, + 0x93, 0x08, 0xc7, 0x1c, 0xc2, 0x89, 0x54, 0x9e, 0x77, 0x80, 0x90, 0xf6, + 0xb9, 0x29, 0x76, 0xeb, 0x13, 0x67, 0x48, 0x59, 0xf8, 0x2e, 0x3a, 0x31, + 0xb8, 0xc9, 0xd3, 0x88, 0xe5, 0x5f, 0x4e, 0xd2, 0x19, 0x3d, 0x43, 0x8e, + 0xd7, 0x92, 0xff, 0xcf, 0x38, 0xb6, 0xe1, 0x5b, 0x8a, 0x53, 0x1d, 0xce, + 0xac, 0xb4, 0x76, 0x2f, 0xd8, 0xf7, 0x40, 0x63, 0xd5, 0xee, 0x69, 0xf3, + 0x45, 0x7d, 0xa0, 0x62, 0xc1, 0x61, 0xc3, 0x75, 0xed, 0xb2, 0x7b, 0x4d, + 0xac, 0x21, 0x27, 0x30, 0x4e, 0x59, 0x46, 0x6a, 0x93, 0x17, 0xca, 0xc8, + 0x39, 0x2d, 0x01, 0x73, 0x65, 0x5b, 0xe9, 0x41, 0x9b, 0x11, 0x17, 0x9c, + 0xc8, 0xc8, 0x4a, 0xef, 0xa1, 0x76, 0x60, 0x2d, 0xae, 0x93, 0xff, 0x0c, + 0xd5, 0x33, 0x13, 0x9f, 0x4f, 0x13, 0xce, 0xdd, 0x86, 0xf1, 0xfc, 0xf8, + 0x35, 0x54, 0x15, 0xa8, 0x5b, 0xe7, 0x85, 0x7e, 0xfa, 0x37, 0x09, 0xff, + 0x8b, 0xb8, 0x31, 0x49, 0x9e, 0x0d, 0x6e, 0xde, 0xb4, 0xd2, 0x12, 0x2d, + 0xb8, 0xed, 0xc8, 0xc3, 0xf1, 0xb6, 0x42, 0xa0, 0x4c, 0x97, 0x79, 0xdf, + 0xfe, 0xc3, 0xa3, 0x9f, 0xa1, 0xf4, 0x6d, 0x2c, 0x84, 0x77, 0xa4, 0xa2, + 0x05, 0xe1, 0x17, 0xff, 0x31, 0xdd, 0x9a, 0xf3, 0xb8, 0x7a, 0xc3, 0x52, + 0xc2, 0x11, 0x11, 0xb7, 0x50, 0x31, 0x8a, 0x7f, 0xcc, 0xe7, 0x5a, 0x89, + 0xcc, 0xf7, 0x86, 0x9a, 0x61, 0x92, 0x4f, 0x2f, 0x94, 0xb6, 0x98, 0xc7, + 0x78, 0xe0, 0x62, 0x4b, 0x43, 0x7d, 0x3c, 0xde, 0xd6, 0x9a, 0xb4, 0x10, + 0xa1, 0x40, 0x9c, 0x4b, 0x2a, 0xdc, 0xb8, 0xd0, 0xd4, 0x9e, 0xfd, 0xf1, + 0x84, 0x78, 0x1b, 0x0e, 0x57, 0x8f, 0x69, 0x54, 0x42, 0x68, 0x7b, 0xea, + 0xa0, 0xef, 0x75, 0x0f, 0x07, 0xa2, 0x8c, 0x73, 0x99, 0xab, 0x55, 0xf5, + 0x07, 0x09, 0xd2, 0xaf, 0x38, 0x03, 0x6a, 0x90, 0x03, 0x0c, 0x2f, 0x8f, + 0xe2, 0xe8, 0x43, 0xc2, 0x31, 0xe9, 0x6f, 0xad, 0x87, 0xe5, 0x8d, 0xbd, + 0x4e, 0x2c, 0x89, 0x4b, 0x51, 0xe6, 0x9c, 0x4c, 0x54, 0x76, 0xc0, 0x12, + 0x81, 0x53, 0x9b, 0xec, 0xa0, 0xfc, 0x2c, 0x9c, 0xda, 0x18, 0x95, 0x6e, + 0x1e, 0x38, 0x26, 0x42, 0x27, 0x78, 0x60, 0x08, 0xdf, 0x7f, 0x6d, 0x32, + 0xe8, 0xd8, 0xc0, 0x6f, 0x1f, 0xeb, 0x26, 0x75, 0x9f, 0x93, 0xfc, 0x7b, + 0x1b, 0xfe, 0x35, 0x90, 0xdc, 0x53, 0xa3, 0x07, 0xa6, 0x3f, 0x83, 0x55, + 0x0a, 0x2b, 0x4e, 0x62, 0x82, 0x25, 0xce, 0x66, 0x30, 0x5d, 0x2c, 0xe0, + 0xf9, 0x19, 0x1b, 0x75, 0xb9, 0x9d, 0x98, 0x56, 0xa6, 0x83, 0x27, 0x7a, + 0xd1, 0x8f, 0x8d, 0x59, 0x93, 0xfc, 0x3f, 0x73, 0xd7, 0x2e, 0xb4, 0x2c, + 0x95, 0xd8, 0x8b, 0xf7, 0xc9, 0x7e, 0xc7, 0xfc, 0x9d, 0xac, 0x72, 0x04, + 0x1f, 0xd2, 0xcc, 0x17, 0xf4, 0xed, 0x34, 0x60, 0x9b, 0x9e, 0x4a, 0x97, + 0x04, 0xfe, 0xdd, 0x72, 0x0e, 0x57, 0x54, 0x51, 0x06, 0x70, 0x4d, 0xef, + 0xaa, 0x1c, 0xa4, 0x82, 0xe0, 0x33, 0xc7, 0xf4, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 0a:5f:11:4d:03:5b:17:91:17:d2:ef:d4:03:8c:3f:3b + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA + Validity + Not Before: Apr 2 12:00:00 2008 GMT + Not After : Apr 3 00:00:00 2022 GMT + Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance CA-3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:bf:61:0a:29:10:1f:5e:fe:34:37:51:08:f8:1e: + fb:22:ed:61:be:0b:0d:70:4c:50:63:26:75:15:b9: + 41:88:97:b6:f0:a0:15:bb:08:60:e0:42:e8:05:29: + 10:87:36:8a:28:65:a8:ef:31:07:74:6d:36:97:2f: + 28:46:66:04:c7:2a:79:26:7a:99:d5:8e:c3:6d:4f: + a0:5e:ad:bc:3d:91:c2:59:7b:5e:36:6c:c0:53:cf: + 00:08:32:3e:10:64:58:10:13:69:c7:0c:ee:9c:42: + 51:00:f9:05:44:ee:24:ce:7a:1f:ed:8c:11:bd:12: + a8:f3:15:f4:1c:7a:31:69:01:1b:a7:e6:5d:c0:9a: + 6c:7e:09:9e:e7:52:44:4a:10:3a:23:e4:9b:b6:03: + af:a8:9c:b4:5b:9f:d4:4b:ad:92:8c:ce:b5:11:2a: + aa:37:18:8d:b4:c2:b8:d8:5c:06:8c:f8:ff:23:bd: + 35:5e:d4:7c:3e:7e:83:0e:91:96:05:98:c3:b2:1f: + e3:c8:65:eb:a9:7b:5d:a0:2c:cc:fc:3c:d9:6d:ed: + cc:fa:4b:43:8c:c9:d4:b8:a5:61:1c:b2:40:b6:28: + 12:df:b9:f8:5f:fe:d3:b2:c9:ef:3d:b4:1e:4b:7c: + 1c:4c:99:36:9e:3d:eb:ec:a7:68:5e:1d:df:67:6e: + 5e:fb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Certificate Policies: + Policy: 2.16.840.1.114412.1.3.0.2 + CPS: http://www.digicert.com/ssl-cps-repository.htm + User Notice: + Explicit Text: + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + Authority Information Access: + OCSP - URI:http://ocsp.digicert.com + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl3.digicert.com/DigiCertHighAssuranceEVRootCA.crl + + Full Name: + URI:http://crl4.digicert.com/DigiCertHighAssuranceEVRootCA.crl + + X509v3 Authority Key Identifier: + keyid:B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3 + + X509v3 Subject Key Identifier: + 50:EA:73:89:DB:29:FB:10:8F:9E:E5:01:20:D4:DE:79:99:48:83:F7 + Signature Algorithm: sha1WithRSAEncryption + 1e:e2:a5:48:9e:6c:db:53:38:0f:ef:a6:1a:2a:ac:e2:03:43: + ed:9a:bc:3e:8e:75:1b:f0:fd:2e:22:59:ac:13:c0:61:e2:e7: + fa:e9:99:cd:87:09:75:54:28:bf:46:60:dc:be:51:2c:92:f3: + 1b:91:7c:31:08:70:e2:37:b9:c1:5b:a8:bd:a3:0b:00:fb:1a: + 15:fd:03:ad:58:6a:c5:c7:24:99:48:47:46:31:1e:92:ef:b4: + 5f:4e:34:c7:90:bf:31:c1:f8:b1:84:86:d0:9c:01:aa:df:8a: + 56:06:ce:3a:e9:0e:ae:97:74:5d:d7:71:9a:42:74:5f:de:8d: + 43:7c:de:e9:55:ed:69:00:cb:05:e0:7a:61:61:33:d1:19:4d: + f9:08:ee:a0:39:c5:25:35:b7:2b:c4:0f:b2:dd:f1:a5:b7:0e: + 24:c4:26:28:8d:79:77:f5:2f:f0:57:ba:7c:07:d4:e1:fc:cd: + 5a:30:57:7e:86:10:47:dd:31:1f:d7:fc:a2:c2:bf:30:7c:5d: + 24:aa:e8:f9:ae:5f:6a:74:c2:ce:6b:b3:46:d8:21:be:29:d4: + 8e:5e:15:d6:42:4a:e7:32:6f:a4:b1:6b:51:83:58:be:3f:6d: + c7:fb:da:03:21:cb:6a:16:19:4e:0a:f0:ad:84:ca:5d:94:b3: + 5a:76:f7:61 +-----BEGIN CERTIFICATE----- +MIIGWDCCBUCgAwIBAgIQCl8RTQNbF5EX0u/UA4w/OzANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA4MDQwMjEyMDAwMFoXDTIyMDQwMzAwMDAwMFowZjEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTElMCMGA1UEAxMcRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +Q0EtMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9hCikQH17+NDdR +CPge+yLtYb4LDXBMUGMmdRW5QYiXtvCgFbsIYOBC6AUpEIc2iihlqO8xB3RtNpcv +KEZmBMcqeSZ6mdWOw21PoF6tvD2Rwll7XjZswFPPAAgyPhBkWBATaccM7pxCUQD5 +BUTuJM56H+2MEb0SqPMV9Bx6MWkBG6fmXcCabH4JnudSREoQOiPkm7YDr6ictFuf +1EutkozOtREqqjcYjbTCuNhcBoz4/yO9NV7UfD5+gw6RlgWYw7If48hl66l7XaAs +zPw82W3tzPpLQ4zJ1LilYRyyQLYoEt+5+F/+07LJ7z20Hkt8HEyZNp496+ynaF4d +32duXvsCAwEAAaOCAvowggL2MA4GA1UdDwEB/wQEAwIBhjCCAcYGA1UdIASCAb0w +ggG5MIIBtQYLYIZIAYb9bAEDAAIwggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3 +LmRpZ2ljZXJ0LmNvbS9zc2wtY3BzLXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUH +AgIwggFWHoIBUgBBAG4AeQAgAHUAcwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQBy +AHQAaQBmAGkAYwBhAHQAZQAgAGMAbwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBj +AGUAcAB0AGEAbgBjAGUAIABvAGYAIAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAg +AEMAUAAvAEMAUABTACAAYQBuAGQAIAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQ +AGEAcgB0AHkAIABBAGcAcgBlAGUAbQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBt +AGkAdAAgAGwAaQBhAGIAaQBsAGkAdAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBj +AG8AcgBwAG8AcgBhAHQAZQBkACAAaABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBl +AHIAZQBuAGMAZQAuMBIGA1UdEwEB/wQIMAYBAf8CAQAwNAYIKwYBBQUHAQEEKDAm +MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wgY8GA1UdHwSB +hzCBhDBAoD6gPIY6aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0SGln +aEFzc3VyYW5jZUVWUm9vdENBLmNybDBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNl +cnQuY29tL0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDAfBgNVHSME +GDAWgBSxPsNpA/i/RwHUmCYaCALvY2QrwzAdBgNVHQ4EFgQUUOpzidsp+xCPnuUB +INTeeZlIg/cwDQYJKoZIhvcNAQEFBQADggEBAB7ipUiebNtTOA/vphoqrOIDQ+2a +vD6OdRvw/S4iWawTwGHi5/rpmc2HCXVUKL9GYNy+USyS8xuRfDEIcOI3ucFbqL2j +CwD7GhX9A61YasXHJJlIR0YxHpLvtF9ONMeQvzHB+LGEhtCcAarfilYGzjrpDq6X +dF3XcZpCdF/ejUN83ulV7WkAywXgemFhM9EZTfkI7qA5xSU1tyvED7Ld8aW3DiTE +JiiNeXf1L/BXunwH1OH8zVowV36GEEfdMR/X/KLCvzB8XSSq6PmuX2p0ws5rs0bY +Ib4p1I5eFdZCSucyb6Sxa1GDWL4/bcf72gMhy2oWGU4K8K2Eyl2Us1p292E= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_51[] = { + 0x30, 0x82, 0x06, 0x58, 0x30, 0x82, 0x05, 0x40, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x0a, 0x5f, 0x11, 0x4d, 0x03, 0x5b, 0x17, 0x91, 0x17, + 0xd2, 0xef, 0xd4, 0x03, 0x8c, 0x3f, 0x3b, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x6c, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, + 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, + 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x38, 0x30, 0x34, 0x30, 0x32, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x32, 0x30, 0x34, 0x30, + 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x66, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, + 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, + 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, 0x69, 0x67, + 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x20, + 0x43, 0x41, 0x2d, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, + 0x00, 0xbf, 0x61, 0x0a, 0x29, 0x10, 0x1f, 0x5e, 0xfe, 0x34, 0x37, 0x51, + 0x08, 0xf8, 0x1e, 0xfb, 0x22, 0xed, 0x61, 0xbe, 0x0b, 0x0d, 0x70, 0x4c, + 0x50, 0x63, 0x26, 0x75, 0x15, 0xb9, 0x41, 0x88, 0x97, 0xb6, 0xf0, 0xa0, + 0x15, 0xbb, 0x08, 0x60, 0xe0, 0x42, 0xe8, 0x05, 0x29, 0x10, 0x87, 0x36, + 0x8a, 0x28, 0x65, 0xa8, 0xef, 0x31, 0x07, 0x74, 0x6d, 0x36, 0x97, 0x2f, + 0x28, 0x46, 0x66, 0x04, 0xc7, 0x2a, 0x79, 0x26, 0x7a, 0x99, 0xd5, 0x8e, + 0xc3, 0x6d, 0x4f, 0xa0, 0x5e, 0xad, 0xbc, 0x3d, 0x91, 0xc2, 0x59, 0x7b, + 0x5e, 0x36, 0x6c, 0xc0, 0x53, 0xcf, 0x00, 0x08, 0x32, 0x3e, 0x10, 0x64, + 0x58, 0x10, 0x13, 0x69, 0xc7, 0x0c, 0xee, 0x9c, 0x42, 0x51, 0x00, 0xf9, + 0x05, 0x44, 0xee, 0x24, 0xce, 0x7a, 0x1f, 0xed, 0x8c, 0x11, 0xbd, 0x12, + 0xa8, 0xf3, 0x15, 0xf4, 0x1c, 0x7a, 0x31, 0x69, 0x01, 0x1b, 0xa7, 0xe6, + 0x5d, 0xc0, 0x9a, 0x6c, 0x7e, 0x09, 0x9e, 0xe7, 0x52, 0x44, 0x4a, 0x10, + 0x3a, 0x23, 0xe4, 0x9b, 0xb6, 0x03, 0xaf, 0xa8, 0x9c, 0xb4, 0x5b, 0x9f, + 0xd4, 0x4b, 0xad, 0x92, 0x8c, 0xce, 0xb5, 0x11, 0x2a, 0xaa, 0x37, 0x18, + 0x8d, 0xb4, 0xc2, 0xb8, 0xd8, 0x5c, 0x06, 0x8c, 0xf8, 0xff, 0x23, 0xbd, + 0x35, 0x5e, 0xd4, 0x7c, 0x3e, 0x7e, 0x83, 0x0e, 0x91, 0x96, 0x05, 0x98, + 0xc3, 0xb2, 0x1f, 0xe3, 0xc8, 0x65, 0xeb, 0xa9, 0x7b, 0x5d, 0xa0, 0x2c, + 0xcc, 0xfc, 0x3c, 0xd9, 0x6d, 0xed, 0xcc, 0xfa, 0x4b, 0x43, 0x8c, 0xc9, + 0xd4, 0xb8, 0xa5, 0x61, 0x1c, 0xb2, 0x40, 0xb6, 0x28, 0x12, 0xdf, 0xb9, + 0xf8, 0x5f, 0xfe, 0xd3, 0xb2, 0xc9, 0xef, 0x3d, 0xb4, 0x1e, 0x4b, 0x7c, + 0x1c, 0x4c, 0x99, 0x36, 0x9e, 0x3d, 0xeb, 0xec, 0xa7, 0x68, 0x5e, 0x1d, + 0xdf, 0x67, 0x6e, 0x5e, 0xfb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x02, 0xfa, 0x30, 0x82, 0x02, 0xf6, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x82, + 0x01, 0xc6, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x82, 0x01, 0xbd, 0x30, + 0x82, 0x01, 0xb9, 0x30, 0x82, 0x01, 0xb5, 0x06, 0x0b, 0x60, 0x86, 0x48, + 0x01, 0x86, 0xfd, 0x6c, 0x01, 0x03, 0x00, 0x02, 0x30, 0x82, 0x01, 0xa4, + 0x30, 0x3a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, + 0x16, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, + 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x73, 0x6c, 0x2d, 0x63, 0x70, 0x73, 0x2d, 0x72, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x68, 0x74, 0x6d, + 0x30, 0x82, 0x01, 0x64, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x02, 0x30, 0x82, 0x01, 0x56, 0x1e, 0x82, 0x01, 0x52, 0x00, 0x41, + 0x00, 0x6e, 0x00, 0x79, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x65, + 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, + 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72, + 0x00, 0x74, 0x00, 0x69, 0x00, 0x66, 0x00, 0x69, 0x00, 0x63, 0x00, 0x61, + 0x00, 0x74, 0x00, 0x65, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6f, 0x00, 0x6e, + 0x00, 0x73, 0x00, 0x74, 0x00, 0x69, 0x00, 0x74, 0x00, 0x75, 0x00, 0x74, + 0x00, 0x65, 0x00, 0x73, 0x00, 0x20, 0x00, 0x61, 0x00, 0x63, 0x00, 0x63, + 0x00, 0x65, 0x00, 0x70, 0x00, 0x74, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x63, + 0x00, 0x65, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, + 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x44, 0x00, 0x69, 0x00, 0x67, + 0x00, 0x69, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72, 0x00, 0x74, 0x00, 0x20, + 0x00, 0x43, 0x00, 0x50, 0x00, 0x2f, 0x00, 0x43, 0x00, 0x50, 0x00, 0x53, + 0x00, 0x20, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, 0x00, 0x74, + 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x52, 0x00, 0x65, 0x00, 0x6c, + 0x00, 0x79, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x20, 0x00, 0x50, + 0x00, 0x61, 0x00, 0x72, 0x00, 0x74, 0x00, 0x79, 0x00, 0x20, 0x00, 0x41, + 0x00, 0x67, 0x00, 0x72, 0x00, 0x65, 0x00, 0x65, 0x00, 0x6d, 0x00, 0x65, + 0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, 0x00, 0x77, 0x00, 0x68, 0x00, 0x69, + 0x00, 0x63, 0x00, 0x68, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x6d, + 0x00, 0x69, 0x00, 0x74, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x61, + 0x00, 0x62, 0x00, 0x69, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x74, 0x00, 0x79, + 0x00, 0x20, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, 0x00, 0x61, + 0x00, 0x72, 0x00, 0x65, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x63, + 0x00, 0x6f, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x61, + 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x68, 0x00, 0x65, + 0x00, 0x72, 0x00, 0x65, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x62, + 0x00, 0x79, 0x00, 0x20, 0x00, 0x72, 0x00, 0x65, 0x00, 0x66, 0x00, 0x65, + 0x00, 0x72, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x65, 0x00, 0x2e, + 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, + 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x34, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, + 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, + 0x70, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x30, 0x81, 0x8f, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x81, + 0x87, 0x30, 0x81, 0x84, 0x30, 0x40, 0xa0, 0x3e, 0xa0, 0x3c, 0x86, 0x3a, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x33, 0x2e, + 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, 0x69, 0x67, + 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x56, + 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x40, + 0xa0, 0x3e, 0xa0, 0x3c, 0x86, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x63, 0x72, 0x6c, 0x34, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, + 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, + 0x65, 0x72, 0x74, 0x48, 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, + 0x61, 0x6e, 0x63, 0x65, 0x45, 0x56, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, + 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x18, 0x30, 0x16, 0x80, 0x14, 0xb1, 0x3e, 0xc3, 0x69, 0x03, 0xf8, 0xbf, + 0x47, 0x01, 0xd4, 0x98, 0x26, 0x1a, 0x08, 0x02, 0xef, 0x63, 0x64, 0x2b, + 0xc3, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x50, 0xea, 0x73, 0x89, 0xdb, 0x29, 0xfb, 0x10, 0x8f, 0x9e, 0xe5, 0x01, + 0x20, 0xd4, 0xde, 0x79, 0x99, 0x48, 0x83, 0xf7, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x1e, 0xe2, 0xa5, 0x48, 0x9e, 0x6c, 0xdb, 0x53, + 0x38, 0x0f, 0xef, 0xa6, 0x1a, 0x2a, 0xac, 0xe2, 0x03, 0x43, 0xed, 0x9a, + 0xbc, 0x3e, 0x8e, 0x75, 0x1b, 0xf0, 0xfd, 0x2e, 0x22, 0x59, 0xac, 0x13, + 0xc0, 0x61, 0xe2, 0xe7, 0xfa, 0xe9, 0x99, 0xcd, 0x87, 0x09, 0x75, 0x54, + 0x28, 0xbf, 0x46, 0x60, 0xdc, 0xbe, 0x51, 0x2c, 0x92, 0xf3, 0x1b, 0x91, + 0x7c, 0x31, 0x08, 0x70, 0xe2, 0x37, 0xb9, 0xc1, 0x5b, 0xa8, 0xbd, 0xa3, + 0x0b, 0x00, 0xfb, 0x1a, 0x15, 0xfd, 0x03, 0xad, 0x58, 0x6a, 0xc5, 0xc7, + 0x24, 0x99, 0x48, 0x47, 0x46, 0x31, 0x1e, 0x92, 0xef, 0xb4, 0x5f, 0x4e, + 0x34, 0xc7, 0x90, 0xbf, 0x31, 0xc1, 0xf8, 0xb1, 0x84, 0x86, 0xd0, 0x9c, + 0x01, 0xaa, 0xdf, 0x8a, 0x56, 0x06, 0xce, 0x3a, 0xe9, 0x0e, 0xae, 0x97, + 0x74, 0x5d, 0xd7, 0x71, 0x9a, 0x42, 0x74, 0x5f, 0xde, 0x8d, 0x43, 0x7c, + 0xde, 0xe9, 0x55, 0xed, 0x69, 0x00, 0xcb, 0x05, 0xe0, 0x7a, 0x61, 0x61, + 0x33, 0xd1, 0x19, 0x4d, 0xf9, 0x08, 0xee, 0xa0, 0x39, 0xc5, 0x25, 0x35, + 0xb7, 0x2b, 0xc4, 0x0f, 0xb2, 0xdd, 0xf1, 0xa5, 0xb7, 0x0e, 0x24, 0xc4, + 0x26, 0x28, 0x8d, 0x79, 0x77, 0xf5, 0x2f, 0xf0, 0x57, 0xba, 0x7c, 0x07, + 0xd4, 0xe1, 0xfc, 0xcd, 0x5a, 0x30, 0x57, 0x7e, 0x86, 0x10, 0x47, 0xdd, + 0x31, 0x1f, 0xd7, 0xfc, 0xa2, 0xc2, 0xbf, 0x30, 0x7c, 0x5d, 0x24, 0xaa, + 0xe8, 0xf9, 0xae, 0x5f, 0x6a, 0x74, 0xc2, 0xce, 0x6b, 0xb3, 0x46, 0xd8, + 0x21, 0xbe, 0x29, 0xd4, 0x8e, 0x5e, 0x15, 0xd6, 0x42, 0x4a, 0xe7, 0x32, + 0x6f, 0xa4, 0xb1, 0x6b, 0x51, 0x83, 0x58, 0xbe, 0x3f, 0x6d, 0xc7, 0xfb, + 0xda, 0x03, 0x21, 0xcb, 0x6a, 0x16, 0x19, 0x4e, 0x0a, 0xf0, 0xad, 0x84, + 0xca, 0x5d, 0x94, 0xb3, 0x5a, 0x76, 0xf7, 0x61, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 7250751724796726 (0x19c28530e93b36) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=IL, O=StartCom Ltd., OU=Secure Digital Certificate Signing, CN=StartCom Certification Authority + Validity + Not Before: Sep 17 22:46:36 2006 GMT + Not After : Dec 31 23:59:59 2019 GMT + Subject: C=CN, O=WoSign CA Limited, CN=Certification Authority of WoSign + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (4096 bit) + Modulus: + 00:bd:ca:8d:ac:b8:91:15:56:97:7b:6b:5c:7a:c2: + de:6b:d9:a1:b0:c3:10:23:fa:a7:a1:b2:cc:31:fa: + 3e:d9:a6:29:6f:16:3d:e0:6b:f8:b8:40:5f:db:39: + a8:00:7a:8b:a0:4d:54:7d:c2:22:78:fc:8e:09:b8: + a8:85:d7:cc:95:97:4b:74:d8:9e:7e:f0:00:e4:0e: + 89:ae:49:28:44:1a:10:99:32:0f:25:88:53:a4:0d: + b3:0f:12:08:16:0b:03:71:27:1c:7f:e1:db:d2:fd: + 67:68:c4:05:5d:0a:0e:5d:70:d7:d8:97:a0:bc:53: + 41:9a:91:8d:f4:9e:36:66:7a:7e:56:c1:90:5f:e6: + b1:68:20:36:a4:8c:24:2c:2c:47:0b:59:76:66:30: + b5:be:de:ed:8f:f8:9d:d3:bb:01:30:e6:f2:f3:0e: + e0:2c:92:80:f3:85:f9:28:8a:b4:54:2e:9a:ed:f7: + 76:fc:15:68:16:eb:4a:6c:eb:2e:12:8f:d4:cf:fe: + 0c:c7:5c:1d:0b:7e:05:32:be:5e:b0:09:2a:42:d5: + c9:4e:90:b3:59:0d:bb:7a:7e:cd:d5:08:5a:b4:7f: + d8:1c:69:11:f9:27:0f:7b:06:af:54:83:18:7b:e1: + dd:54:7a:51:68:6e:77:fc:c6:bf:52:4a:66:46:a1: + b2:67:1a:bb:a3:4f:77:a0:be:5d:ff:fc:56:0b:43: + 72:77:90:ca:9e:f9:f2:39:f5:0d:a9:f4:ea:d7:e7: + b3:10:2f:30:42:37:21:cc:30:70:c9:86:98:0f:cc: + 58:4d:83:bb:7d:e5:1a:a5:37:8d:b6:ac:32:97:00: + 3a:63:71:24:1e:9e:37:c4:ff:74:d4:37:c0:e2:fe: + 88:46:60:11:dd:08:3f:50:36:ab:b8:7a:a4:95:62: + 6a:6e:b0:ca:6a:21:5a:69:f3:f3:fb:1d:70:39:95: + f3:a7:6e:a6:81:89:a1:88:c5:3b:71:ca:a3:52:ee: + 83:bb:fd:a0:77:f4:e4:6f:e7:42:db:6d:4a:99:8a: + 34:48:bc:17:dc:e4:80:08:22:b6:f2:31:c0:3f:04: + 3e:eb:9f:20:79:d6:b8:06:64:64:02:31:d7:a9:cd: + 52:fb:84:45:69:09:00:2a:dc:55:8b:c4:06:46:4b: + c0:4a:1d:09:5b:39:28:fd:a9:ab:ce:00:f9:2e:48: + 4b:26:e6:30:4c:a5:58:ca:b4:44:82:4f:e7:91:1e: + 33:c3:b0:93:ff:11:fc:81:d2:ca:1f:71:29:dd:76: + 4f:92:25:af:1d:81:b7:0f:2f:8c:c3:06:cc:2f:27: + a3:4a:e4:0e:99:ba:7c:1e:45:1f:7f:aa:19:45:96: + fd:fc:3d + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:2 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + E1:66:CF:0E:D1:F1:B3:4B:B7:06:20:14:FE:87:12:D5:F6:FE:FB:3E + X509v3 Authority Key Identifier: + keyid:4E:0B:EF:1A:A4:40:5B:A5:17:69:87:30:CA:34:68:43:D0:41:AE:F2 + + Authority Information Access: + OCSP - URI:http://ocsp.startssl.com/ca + CA Issuers - URI:http://aia.startssl.com/certs/ca.crt + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.startssl.com/sfsca.crl + + Signature Algorithm: sha256WithRSAEncryption + b6:6d:f8:70:fb:e2:0d:4c:98:b3:07:49:15:f5:04:c4:6c:ca: + ca:f5:68:a0:08:fe:12:6d:9c:04:06:c9:ad:9a:91:52:3e:78: + c4:5c:ee:9f:54:1d:ee:e3:f1:5e:30:c9:49:e1:39:e0:a6:9d: + 36:6c:57:fa:e6:34:4f:55:e8:87:a8:2c:dd:05:f1:58:12:91: + e8:ca:ce:28:78:8f:df:07:85:01:a5:dc:45:96:05:d4:80:b2: + 2b:05:9a:cb:9a:a5:8b:e0:3a:67:e6:73:47:be:4a:fd:27:b1: + 88:ef:e6:ca:cf:8d:0e:26:9f:fa:5f:57:78:ad:6d:fe:ae:9b: + 35:08:b1:c3:ba:c1:00:4a:4b:7d:14:bd:f7:f1:d3:55:18:ac: + d0:33:70:88:6d:c4:09:71:14:a6:2b:4f:88:81:e7:0b:00:37: + a9:15:7d:7e:d7:01:96:3f:2f:af:7b:62:ae:0a:4a:bf:4b:39: + 2e:35:10:8b:fe:04:39:e4:3c:3a:0c:09:56:40:3a:b5:f4:c2: + 68:0c:b5:f9:52:cd:ee:9d:f8:98:fc:78:e7:58:47:8f:1c:73: + 58:69:33:ab:ff:dd:df:8e:24:01:77:98:19:3a:b0:66:79:bc: + e1:08:a3:0e:4f:c1:04:b3:f3:01:c8:eb:d3:59:1c:35:d2:93: + 1e:70:65:82:7f:db:cf:fb:c8:99:12:60:c3:44:6f:3a:80:4b: + d7:be:21:aa:14:7a:64:cb:dd:37:43:45:5b:32:2e:45:f0:d9: + 59:1f:6b:18:f0:7c:e9:55:36:19:61:5f:b5:7d:f1:8d:bd:88: + e4:75:4b:98:dd:27:b0:e4:84:44:2a:61:84:57:05:82:11:1f: + aa:35:58:f3:20:0e:af:59:ef:fa:55:72:72:0d:26:d0:9b:53: + 49:ac:ce:37:2e:65:61:ff:f6:ec:1b:ea:f6:f1:a6:d3:d1:b5: + 7b:be:35:f4:22:c1:bc:8d:01:bd:68:5e:83:0d:2f:ec:d6:da: + 63:0c:27:d1:54:3e:e4:a8:d3:ce:4b:32:b8:91:94:ff:fb:5b: + 49:2d:75:18:a8:ba:71:9a:3b:ae:d9:c0:a9:4f:87:91:ed:8b: + 7b:6b:20:98:89:39:83:4f:80:c4:69:cc:17:c9:c8:4e:be:e4: + a9:a5:81:76:70:06:04:32:cd:83:65:f4:bc:7d:3e:13:bc:d2: + e8:6f:63:aa:b5:3b:da:8d:86:32:82:78:9d:d9:cc:ff:bf:57: + 64:74:ed:28:3d:44:62:15:61:4b:f7:94:b0:0d:2a:67:1c:f0: + cb:9b:a5:92:bf:f8:41:5a:c1:3d:60:ed:9f:bb:b8:6d:9b:ce: + a9:6a:16:3f:7e:ea:06:f1 +-----BEGIN CERTIFICATE----- +MIIGXDCCBESgAwIBAgIHGcKFMOk7NjANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQG +EwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERp +Z2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MjI0NjM2WhcNMTkxMjMxMjM1 +OTU5WjBVMQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQx +KjAoBgNVBAMTIUNlcnRpZmljYXRpb24gQXV0aG9yaXR5IG9mIFdvU2lnbjCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL3Kjay4kRVWl3trXHrC3mvZobDD +ECP6p6GyzDH6PtmmKW8WPeBr+LhAX9s5qAB6i6BNVH3CInj8jgm4qIXXzJWXS3TY +nn7wAOQOia5JKEQaEJkyDyWIU6QNsw8SCBYLA3EnHH/h29L9Z2jEBV0KDl1w19iX +oLxTQZqRjfSeNmZ6flbBkF/msWggNqSMJCwsRwtZdmYwtb7e7Y/4ndO7ATDm8vMO +4CySgPOF+SiKtFQumu33dvwVaBbrSmzrLhKP1M/+DMdcHQt+BTK+XrAJKkLVyU6Q +s1kNu3p+zdUIWrR/2BxpEfknD3sGr1SDGHvh3VR6UWhud/zGv1JKZkahsmcau6NP +d6C+Xf/8VgtDcneQyp758jn1Dan06tfnsxAvMEI3IcwwcMmGmA/MWE2Du33lGqU3 +jbasMpcAOmNxJB6eN8T/dNQ3wOL+iEZgEd0IP1A2q7h6pJViam6wymohWmnz8/sd +cDmV86dupoGJoYjFO3HKo1Lug7v9oHf05G/nQtttSpmKNEi8F9zkgAgitvIxwD8E +PuufIHnWuAZkZAIx16nNUvuERWkJACrcVYvEBkZLwEodCVs5KP2pq84A+S5ISybm +MEylWMq0RIJP55EeM8Owk/8R/IHSyh9xKd12T5Ilrx2Btw8vjMMGzC8no0rkDpm6 +fB5FH3+qGUWW/fw9AgMBAAGjggEHMIIBAzASBgNVHRMBAf8ECDAGAQH/AgECMA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU4WbPDtHxs0u3BiAU/ocS1fb++z4wHwYD +VR0jBBgwFoAUTgvvGqRAW6UXaYcwyjRoQ9BBrvIwaQYIKwYBBQUHAQEEXTBbMCcG +CCsGAQUFBzABhhtodHRwOi8vb2NzcC5zdGFydHNzbC5jb20vY2EwMAYIKwYBBQUH +MAKGJGh0dHA6Ly9haWEuc3RhcnRzc2wuY29tL2NlcnRzL2NhLmNydDAyBgNVHR8E +KzApMCegJaAjhiFodHRwOi8vY3JsLnN0YXJ0c3NsLmNvbS9zZnNjYS5jcmwwDQYJ +KoZIhvcNAQELBQADggIBALZt+HD74g1MmLMHSRX1BMRsysr1aKAI/hJtnAQGya2a +kVI+eMRc7p9UHe7j8V4wyUnhOeCmnTZsV/rmNE9V6IeoLN0F8VgSkejKzih4j98H +hQGl3EWWBdSAsisFmsuapYvgOmfmc0e+Sv0nsYjv5srPjQ4mn/pfV3itbf6umzUI +scO6wQBKS30Uvffx01UYrNAzcIhtxAlxFKYrT4iB5wsAN6kVfX7XAZY/L697Yq4K +Sr9LOS41EIv+BDnkPDoMCVZAOrX0wmgMtflSze6d+Jj8eOdYR48cc1hpM6v/3d+O +JAF3mBk6sGZ5vOEIow5PwQSz8wHI69NZHDXSkx5wZYJ/28/7yJkSYMNEbzqAS9e+ +IaoUemTL3TdDRVsyLkXw2VkfaxjwfOlVNhlhX7V98Y29iOR1S5jdJ7DkhEQqYYRX +BYIRH6o1WPMgDq9Z7/pVcnINJtCbU0mszjcuZWH/9uwb6vbxptPRtXu+NfQiwbyN +Ab1oXoMNL+zW2mMMJ9FUPuSo085LMriRlP/7W0ktdRiounGaO67ZwKlPh5Hti3tr +IJiJOYNPgMRpzBfJyE6+5KmlgXZwBgQyzYNl9Lx9PhO80uhvY6q1O9qNhjKCeJ3Z +zP+/V2R07Sg9RGIVYUv3lLANKmcc8MubpZK/+EFawT1g7Z+7uG2bzqlqFj9+6gbx +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_52[] = { + 0x30, 0x82, 0x06, 0x5c, 0x30, 0x82, 0x04, 0x44, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x07, 0x19, 0xc2, 0x85, 0x30, 0xe9, 0x3b, 0x36, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x30, 0x7d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x49, 0x4c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, + 0x4c, 0x74, 0x64, 0x2e, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x22, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x44, 0x69, + 0x67, 0x69, 0x74, 0x61, 0x6c, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, + 0x67, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x20, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, + 0x30, 0x36, 0x30, 0x39, 0x31, 0x37, 0x32, 0x32, 0x34, 0x36, 0x33, 0x36, + 0x5a, 0x17, 0x0d, 0x31, 0x39, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, + 0x39, 0x35, 0x39, 0x5a, 0x30, 0x55, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, + 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x4e, 0x31, 0x1a, 0x30, 0x18, 0x06, + 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, + 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, + 0x2a, 0x30, 0x28, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x21, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, + 0x20, 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x30, 0x82, 0x02, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02, + 0x82, 0x02, 0x01, 0x00, 0xbd, 0xca, 0x8d, 0xac, 0xb8, 0x91, 0x15, 0x56, + 0x97, 0x7b, 0x6b, 0x5c, 0x7a, 0xc2, 0xde, 0x6b, 0xd9, 0xa1, 0xb0, 0xc3, + 0x10, 0x23, 0xfa, 0xa7, 0xa1, 0xb2, 0xcc, 0x31, 0xfa, 0x3e, 0xd9, 0xa6, + 0x29, 0x6f, 0x16, 0x3d, 0xe0, 0x6b, 0xf8, 0xb8, 0x40, 0x5f, 0xdb, 0x39, + 0xa8, 0x00, 0x7a, 0x8b, 0xa0, 0x4d, 0x54, 0x7d, 0xc2, 0x22, 0x78, 0xfc, + 0x8e, 0x09, 0xb8, 0xa8, 0x85, 0xd7, 0xcc, 0x95, 0x97, 0x4b, 0x74, 0xd8, + 0x9e, 0x7e, 0xf0, 0x00, 0xe4, 0x0e, 0x89, 0xae, 0x49, 0x28, 0x44, 0x1a, + 0x10, 0x99, 0x32, 0x0f, 0x25, 0x88, 0x53, 0xa4, 0x0d, 0xb3, 0x0f, 0x12, + 0x08, 0x16, 0x0b, 0x03, 0x71, 0x27, 0x1c, 0x7f, 0xe1, 0xdb, 0xd2, 0xfd, + 0x67, 0x68, 0xc4, 0x05, 0x5d, 0x0a, 0x0e, 0x5d, 0x70, 0xd7, 0xd8, 0x97, + 0xa0, 0xbc, 0x53, 0x41, 0x9a, 0x91, 0x8d, 0xf4, 0x9e, 0x36, 0x66, 0x7a, + 0x7e, 0x56, 0xc1, 0x90, 0x5f, 0xe6, 0xb1, 0x68, 0x20, 0x36, 0xa4, 0x8c, + 0x24, 0x2c, 0x2c, 0x47, 0x0b, 0x59, 0x76, 0x66, 0x30, 0xb5, 0xbe, 0xde, + 0xed, 0x8f, 0xf8, 0x9d, 0xd3, 0xbb, 0x01, 0x30, 0xe6, 0xf2, 0xf3, 0x0e, + 0xe0, 0x2c, 0x92, 0x80, 0xf3, 0x85, 0xf9, 0x28, 0x8a, 0xb4, 0x54, 0x2e, + 0x9a, 0xed, 0xf7, 0x76, 0xfc, 0x15, 0x68, 0x16, 0xeb, 0x4a, 0x6c, 0xeb, + 0x2e, 0x12, 0x8f, 0xd4, 0xcf, 0xfe, 0x0c, 0xc7, 0x5c, 0x1d, 0x0b, 0x7e, + 0x05, 0x32, 0xbe, 0x5e, 0xb0, 0x09, 0x2a, 0x42, 0xd5, 0xc9, 0x4e, 0x90, + 0xb3, 0x59, 0x0d, 0xbb, 0x7a, 0x7e, 0xcd, 0xd5, 0x08, 0x5a, 0xb4, 0x7f, + 0xd8, 0x1c, 0x69, 0x11, 0xf9, 0x27, 0x0f, 0x7b, 0x06, 0xaf, 0x54, 0x83, + 0x18, 0x7b, 0xe1, 0xdd, 0x54, 0x7a, 0x51, 0x68, 0x6e, 0x77, 0xfc, 0xc6, + 0xbf, 0x52, 0x4a, 0x66, 0x46, 0xa1, 0xb2, 0x67, 0x1a, 0xbb, 0xa3, 0x4f, + 0x77, 0xa0, 0xbe, 0x5d, 0xff, 0xfc, 0x56, 0x0b, 0x43, 0x72, 0x77, 0x90, + 0xca, 0x9e, 0xf9, 0xf2, 0x39, 0xf5, 0x0d, 0xa9, 0xf4, 0xea, 0xd7, 0xe7, + 0xb3, 0x10, 0x2f, 0x30, 0x42, 0x37, 0x21, 0xcc, 0x30, 0x70, 0xc9, 0x86, + 0x98, 0x0f, 0xcc, 0x58, 0x4d, 0x83, 0xbb, 0x7d, 0xe5, 0x1a, 0xa5, 0x37, + 0x8d, 0xb6, 0xac, 0x32, 0x97, 0x00, 0x3a, 0x63, 0x71, 0x24, 0x1e, 0x9e, + 0x37, 0xc4, 0xff, 0x74, 0xd4, 0x37, 0xc0, 0xe2, 0xfe, 0x88, 0x46, 0x60, + 0x11, 0xdd, 0x08, 0x3f, 0x50, 0x36, 0xab, 0xb8, 0x7a, 0xa4, 0x95, 0x62, + 0x6a, 0x6e, 0xb0, 0xca, 0x6a, 0x21, 0x5a, 0x69, 0xf3, 0xf3, 0xfb, 0x1d, + 0x70, 0x39, 0x95, 0xf3, 0xa7, 0x6e, 0xa6, 0x81, 0x89, 0xa1, 0x88, 0xc5, + 0x3b, 0x71, 0xca, 0xa3, 0x52, 0xee, 0x83, 0xbb, 0xfd, 0xa0, 0x77, 0xf4, + 0xe4, 0x6f, 0xe7, 0x42, 0xdb, 0x6d, 0x4a, 0x99, 0x8a, 0x34, 0x48, 0xbc, + 0x17, 0xdc, 0xe4, 0x80, 0x08, 0x22, 0xb6, 0xf2, 0x31, 0xc0, 0x3f, 0x04, + 0x3e, 0xeb, 0x9f, 0x20, 0x79, 0xd6, 0xb8, 0x06, 0x64, 0x64, 0x02, 0x31, + 0xd7, 0xa9, 0xcd, 0x52, 0xfb, 0x84, 0x45, 0x69, 0x09, 0x00, 0x2a, 0xdc, + 0x55, 0x8b, 0xc4, 0x06, 0x46, 0x4b, 0xc0, 0x4a, 0x1d, 0x09, 0x5b, 0x39, + 0x28, 0xfd, 0xa9, 0xab, 0xce, 0x00, 0xf9, 0x2e, 0x48, 0x4b, 0x26, 0xe6, + 0x30, 0x4c, 0xa5, 0x58, 0xca, 0xb4, 0x44, 0x82, 0x4f, 0xe7, 0x91, 0x1e, + 0x33, 0xc3, 0xb0, 0x93, 0xff, 0x11, 0xfc, 0x81, 0xd2, 0xca, 0x1f, 0x71, + 0x29, 0xdd, 0x76, 0x4f, 0x92, 0x25, 0xaf, 0x1d, 0x81, 0xb7, 0x0f, 0x2f, + 0x8c, 0xc3, 0x06, 0xcc, 0x2f, 0x27, 0xa3, 0x4a, 0xe4, 0x0e, 0x99, 0xba, + 0x7c, 0x1e, 0x45, 0x1f, 0x7f, 0xaa, 0x19, 0x45, 0x96, 0xfd, 0xfc, 0x3d, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x07, 0x30, 0x82, 0x01, + 0x03, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, + 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x02, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, + 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0xe1, 0x66, 0xcf, 0x0e, 0xd1, 0xf1, 0xb3, 0x4b, 0xb7, 0x06, 0x20, 0x14, + 0xfe, 0x87, 0x12, 0xd5, 0xf6, 0xfe, 0xfb, 0x3e, 0x30, 0x1f, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x4e, 0x0b, 0xef, + 0x1a, 0xa4, 0x40, 0x5b, 0xa5, 0x17, 0x69, 0x87, 0x30, 0xca, 0x34, 0x68, + 0x43, 0xd0, 0x41, 0xae, 0xf2, 0x30, 0x69, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x5d, 0x30, 0x5b, 0x30, 0x27, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1b, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x61, 0x30, 0x30, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x02, 0x86, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x61, + 0x69, 0x61, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x63, 0x61, + 0x2e, 0x63, 0x72, 0x74, 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, + 0x2b, 0x30, 0x29, 0x30, 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x66, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, + 0x82, 0x02, 0x01, 0x00, 0xb6, 0x6d, 0xf8, 0x70, 0xfb, 0xe2, 0x0d, 0x4c, + 0x98, 0xb3, 0x07, 0x49, 0x15, 0xf5, 0x04, 0xc4, 0x6c, 0xca, 0xca, 0xf5, + 0x68, 0xa0, 0x08, 0xfe, 0x12, 0x6d, 0x9c, 0x04, 0x06, 0xc9, 0xad, 0x9a, + 0x91, 0x52, 0x3e, 0x78, 0xc4, 0x5c, 0xee, 0x9f, 0x54, 0x1d, 0xee, 0xe3, + 0xf1, 0x5e, 0x30, 0xc9, 0x49, 0xe1, 0x39, 0xe0, 0xa6, 0x9d, 0x36, 0x6c, + 0x57, 0xfa, 0xe6, 0x34, 0x4f, 0x55, 0xe8, 0x87, 0xa8, 0x2c, 0xdd, 0x05, + 0xf1, 0x58, 0x12, 0x91, 0xe8, 0xca, 0xce, 0x28, 0x78, 0x8f, 0xdf, 0x07, + 0x85, 0x01, 0xa5, 0xdc, 0x45, 0x96, 0x05, 0xd4, 0x80, 0xb2, 0x2b, 0x05, + 0x9a, 0xcb, 0x9a, 0xa5, 0x8b, 0xe0, 0x3a, 0x67, 0xe6, 0x73, 0x47, 0xbe, + 0x4a, 0xfd, 0x27, 0xb1, 0x88, 0xef, 0xe6, 0xca, 0xcf, 0x8d, 0x0e, 0x26, + 0x9f, 0xfa, 0x5f, 0x57, 0x78, 0xad, 0x6d, 0xfe, 0xae, 0x9b, 0x35, 0x08, + 0xb1, 0xc3, 0xba, 0xc1, 0x00, 0x4a, 0x4b, 0x7d, 0x14, 0xbd, 0xf7, 0xf1, + 0xd3, 0x55, 0x18, 0xac, 0xd0, 0x33, 0x70, 0x88, 0x6d, 0xc4, 0x09, 0x71, + 0x14, 0xa6, 0x2b, 0x4f, 0x88, 0x81, 0xe7, 0x0b, 0x00, 0x37, 0xa9, 0x15, + 0x7d, 0x7e, 0xd7, 0x01, 0x96, 0x3f, 0x2f, 0xaf, 0x7b, 0x62, 0xae, 0x0a, + 0x4a, 0xbf, 0x4b, 0x39, 0x2e, 0x35, 0x10, 0x8b, 0xfe, 0x04, 0x39, 0xe4, + 0x3c, 0x3a, 0x0c, 0x09, 0x56, 0x40, 0x3a, 0xb5, 0xf4, 0xc2, 0x68, 0x0c, + 0xb5, 0xf9, 0x52, 0xcd, 0xee, 0x9d, 0xf8, 0x98, 0xfc, 0x78, 0xe7, 0x58, + 0x47, 0x8f, 0x1c, 0x73, 0x58, 0x69, 0x33, 0xab, 0xff, 0xdd, 0xdf, 0x8e, + 0x24, 0x01, 0x77, 0x98, 0x19, 0x3a, 0xb0, 0x66, 0x79, 0xbc, 0xe1, 0x08, + 0xa3, 0x0e, 0x4f, 0xc1, 0x04, 0xb3, 0xf3, 0x01, 0xc8, 0xeb, 0xd3, 0x59, + 0x1c, 0x35, 0xd2, 0x93, 0x1e, 0x70, 0x65, 0x82, 0x7f, 0xdb, 0xcf, 0xfb, + 0xc8, 0x99, 0x12, 0x60, 0xc3, 0x44, 0x6f, 0x3a, 0x80, 0x4b, 0xd7, 0xbe, + 0x21, 0xaa, 0x14, 0x7a, 0x64, 0xcb, 0xdd, 0x37, 0x43, 0x45, 0x5b, 0x32, + 0x2e, 0x45, 0xf0, 0xd9, 0x59, 0x1f, 0x6b, 0x18, 0xf0, 0x7c, 0xe9, 0x55, + 0x36, 0x19, 0x61, 0x5f, 0xb5, 0x7d, 0xf1, 0x8d, 0xbd, 0x88, 0xe4, 0x75, + 0x4b, 0x98, 0xdd, 0x27, 0xb0, 0xe4, 0x84, 0x44, 0x2a, 0x61, 0x84, 0x57, + 0x05, 0x82, 0x11, 0x1f, 0xaa, 0x35, 0x58, 0xf3, 0x20, 0x0e, 0xaf, 0x59, + 0xef, 0xfa, 0x55, 0x72, 0x72, 0x0d, 0x26, 0xd0, 0x9b, 0x53, 0x49, 0xac, + 0xce, 0x37, 0x2e, 0x65, 0x61, 0xff, 0xf6, 0xec, 0x1b, 0xea, 0xf6, 0xf1, + 0xa6, 0xd3, 0xd1, 0xb5, 0x7b, 0xbe, 0x35, 0xf4, 0x22, 0xc1, 0xbc, 0x8d, + 0x01, 0xbd, 0x68, 0x5e, 0x83, 0x0d, 0x2f, 0xec, 0xd6, 0xda, 0x63, 0x0c, + 0x27, 0xd1, 0x54, 0x3e, 0xe4, 0xa8, 0xd3, 0xce, 0x4b, 0x32, 0xb8, 0x91, + 0x94, 0xff, 0xfb, 0x5b, 0x49, 0x2d, 0x75, 0x18, 0xa8, 0xba, 0x71, 0x9a, + 0x3b, 0xae, 0xd9, 0xc0, 0xa9, 0x4f, 0x87, 0x91, 0xed, 0x8b, 0x7b, 0x6b, + 0x20, 0x98, 0x89, 0x39, 0x83, 0x4f, 0x80, 0xc4, 0x69, 0xcc, 0x17, 0xc9, + 0xc8, 0x4e, 0xbe, 0xe4, 0xa9, 0xa5, 0x81, 0x76, 0x70, 0x06, 0x04, 0x32, + 0xcd, 0x83, 0x65, 0xf4, 0xbc, 0x7d, 0x3e, 0x13, 0xbc, 0xd2, 0xe8, 0x6f, + 0x63, 0xaa, 0xb5, 0x3b, 0xda, 0x8d, 0x86, 0x32, 0x82, 0x78, 0x9d, 0xd9, + 0xcc, 0xff, 0xbf, 0x57, 0x64, 0x74, 0xed, 0x28, 0x3d, 0x44, 0x62, 0x15, + 0x61, 0x4b, 0xf7, 0x94, 0xb0, 0x0d, 0x2a, 0x67, 0x1c, 0xf0, 0xcb, 0x9b, + 0xa5, 0x92, 0xbf, 0xf8, 0x41, 0x5a, 0xc1, 0x3d, 0x60, 0xed, 0x9f, 0xbb, + 0xb8, 0x6d, 0x9b, 0xce, 0xa9, 0x6a, 0x16, 0x3f, 0x7e, 0xea, 0x06, 0xf1, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 03:37:b9:28:34:7c:60:a6:ae:c5:ad:b1:21:7f:38:60 + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA + Validity + Not Before: Nov 9 12:00:00 2007 GMT + Not After : Nov 10 00:00:00 2021 GMT + Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV CA-1 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:f3:96:62:d8:75:6e:19:ff:3f:34:7c:49:4f:31: + 7e:0d:04:4e:99:81:e2:b3:85:55:91:30:b1:c0:af: + 70:bb:2c:a8:e7:18:aa:3f:78:f7:90:68:52:86:01: + 88:97:e2:3b:06:65:90:aa:bd:65:76:c2:ec:be:10: + 5b:37:78:83:60:75:45:c6:bd:74:aa:b6:9f:a4:3a: + 01:50:17:c4:39:69:b9:f1:4f:ef:82:c1:ca:f3:4a: + db:cc:9e:50:4f:4d:40:a3:3a:90:e7:86:66:bc:f0: + 3e:76:28:4c:d1:75:80:9e:6a:35:14:35:03:9e:db: + 0c:8c:c2:28:ad:50:b2:ce:f6:91:a3:c3:a5:0a:58: + 49:f6:75:44:6c:ba:f9:ce:e9:ab:3a:02:e0:4d:f3: + ac:e2:7a:e0:60:22:05:3c:82:d3:52:e2:f3:9c:47: + f8:3b:d8:b2:4b:93:56:4a:bf:70:ab:3e:e9:68:c8: + 1d:8f:58:1d:2a:4d:5e:27:3d:ad:0a:59:2f:5a:11: + 20:40:d9:68:04:68:2d:f4:c0:84:0b:0a:1b:78:df: + ed:1a:58:dc:fb:41:5a:6d:6b:f2:ed:1c:ee:5c:32: + b6:5c:ec:d7:a6:03:32:a6:e8:de:b7:28:27:59:88: + 80:ff:7b:ad:89:58:d5:1e:14:a4:f2:b0:70:d4:a0: + 3e:a7 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication, Code Signing, E-mail Protection, Time Stamping + X509v3 Certificate Policies: + Policy: 2.16.840.1.114412.2.1 + CPS: http://www.digicert.com/ssl-cps-repository.htm + User Notice: + Explicit Text: + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + Authority Information Access: + OCSP - URI:http://ocsp.digicert.com + CA Issuers - URI:http://www.digicert.com/CACerts/DigiCertHighAssuranceEVRootCA.crt + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl3.digicert.com/DigiCertHighAssuranceEVRootCA.crl + + Full Name: + URI:http://crl4.digicert.com/DigiCertHighAssuranceEVRootCA.crl + + X509v3 Subject Key Identifier: + 4C:58:CB:25:F0:41:4F:52:F4:28:C8:81:43:9B:A6:A8:A0:E6:92:E5 + X509v3 Authority Key Identifier: + keyid:B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3 + + Signature Algorithm: sha1WithRSAEncryption + 4c:7a:17:87:28:5d:17:bc:b2:32:73:bf:cd:2e:f5:58:31:1d: + f0:b1:71:54:9c:d6:9b:67:93:db:2f:03:3e:16:6f:1e:03:c9: + 53:84:a3:56:60:1e:78:94:1b:a2:a8:6f:a3:a4:8b:52:91:d7: + dd:5c:95:bb:ef:b5:16:49:e9:a5:42:4f:34:f2:47:ff:ae:81: + 7f:13:54:b7:20:c4:70:15:cb:81:0a:81:cb:74:57:dc:9c:df: + 24:a4:29:0c:18:f0:1c:e4:ae:07:33:ec:f1:49:3e:55:cf:6e: + 4f:0d:54:7b:d3:c9:e8:15:48:d4:c5:bb:dc:35:1c:77:45:07: + 48:45:85:bd:d7:7e:53:b8:c0:16:d9:95:cd:8b:8d:7d:c9:60: + 4f:d1:a2:9b:e3:d0:30:d6:b4:73:36:e6:d2:f9:03:b2:e3:a4: + f5:e5:b8:3e:04:49:00:ba:2e:a6:4a:72:83:72:9d:f7:0b:8c: + a9:89:e7:b3:d7:64:1f:d6:e3:60:cb:03:c4:dc:88:e9:9d:25: + 01:00:71:cb:03:b4:29:60:25:8f:f9:46:d1:7b:71:ae:cd:53: + 12:5b:84:8e:c2:0f:c7:ed:93:19:d9:c9:fa:8f:58:34:76:32: + 2f:ae:e1:50:14:61:d4:a8:58:a3:c8:30:13:23:ef:c6:25:8c: + 36:8f:1c:80 +-----BEGIN CERTIFICATE----- +MIIG5jCCBc6gAwIBAgIQAze5KDR8YKauxa2xIX84YDANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA3MTEwOTEyMDAwMFoXDTIxMTExMDAwMDAwMFowaTEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTEoMCYGA1UEAxMfRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +RVYgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPOWYth1bhn/ +PzR8SU8xfg0ETpmB4rOFVZEwscCvcLssqOcYqj9495BoUoYBiJfiOwZlkKq9ZXbC +7L4QWzd4g2B1Rca9dKq2n6Q6AVAXxDlpufFP74LByvNK28yeUE9NQKM6kOeGZrzw +PnYoTNF1gJ5qNRQ1A57bDIzCKK1Qss72kaPDpQpYSfZ1RGy6+c7pqzoC4E3zrOJ6 +4GAiBTyC01Li85xH+DvYskuTVkq/cKs+6WjIHY9YHSpNXic9rQpZL1oRIEDZaARo +LfTAhAsKG3jf7RpY3PtBWm1r8u0c7lwytlzs16YDMqbo3rcoJ1mIgP97rYlY1R4U +pPKwcNSgPqcCAwEAAaOCA4UwggOBMA4GA1UdDwEB/wQEAwIBhjA7BgNVHSUENDAy +BggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEFBQcDBAYIKwYBBQUH +AwgwggHEBgNVHSAEggG7MIIBtzCCAbMGCWCGSAGG/WwCATCCAaQwOgYIKwYBBQUH +AgEWLmh0dHA6Ly93d3cuZGlnaWNlcnQuY29tL3NzbC1jcHMtcmVwb3NpdG9yeS5o +dG0wggFkBggrBgEFBQcCAjCCAVYeggFSAEEAbgB5ACAAdQBzAGUAIABvAGYAIAB0 +AGgAaQBzACAAQwBlAHIAdABpAGYAaQBjAGEAdABlACAAYwBvAG4AcwB0AGkAdAB1 +AHQAZQBzACAAYQBjAGMAZQBwAHQAYQBuAGMAZQAgAG8AZgAgAHQAaABlACAARABp +AGcAaQBDAGUAcgB0ACAARQBWACAAQwBQAFMAIABhAG4AZAAgAHQAaABlACAAUgBl +AGwAeQBpAG4AZwAgAFAAYQByAHQAeQAgAEEAZwByAGUAZQBtAGUAbgB0ACAAdwBo +AGkAYwBoACAAbABpAG0AaQB0ACAAbABpAGEAYgBpAGwAaQB0AHkAIABhAG4AZAAg +AGEAcgBlACAAaQBuAGMAbwByAHAAbwByAGEAdABlAGQAIABoAGUAcgBlAGkAbgAg +AGIAeQAgAHIAZQBmAGUAcgBlAG4AYwBlAC4wEgYDVR0TAQH/BAgwBgEB/wIBADCB +gwYIKwYBBQUHAQEEdzB1MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy +dC5jb20wTQYIKwYBBQUHMAKGQWh0dHA6Ly93d3cuZGlnaWNlcnQuY29tL0NBQ2Vy +dHMvRGlnaUNlcnRIaWdoQXNzdXJhbmNlRVZSb290Q0EuY3J0MIGPBgNVHR8EgYcw +gYQwQKA+oDyGOmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEhpZ2hB +c3N1cmFuY2VFVlJvb3RDQS5jcmwwQKA+oDyGOmh0dHA6Ly9jcmw0LmRpZ2ljZXJ0 +LmNvbS9EaWdpQ2VydEhpZ2hBc3N1cmFuY2VFVlJvb3RDQS5jcmwwHQYDVR0OBBYE +FExYyyXwQU9S9CjIgUObpqig5pLlMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSYJhoI +Au9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQBMeheHKF0XvLIyc7/NLvVYMR3wsXFU +nNabZ5PbLwM+Fm8eA8lThKNWYB54lBuiqG+jpItSkdfdXJW777UWSemlQk808kf/ +roF/E1S3IMRwFcuBCoHLdFfcnN8kpCkMGPAc5K4HM+zxST5Vz25PDVR708noFUjU +xbvcNRx3RQdIRYW9135TuMAW2ZXNi419yWBP0aKb49Aw1rRzNubS+QOy46T15bg+ +BEkAui6mSnKDcp33C4ypieez12Qf1uNgywPE3IjpnSUBAHHLA7QpYCWP+UbRe3Gu +zVMSW4SOwg/H7ZMZ2cn6j1g0djIvruFQFGHUqFijyDATI+/GJYw2jxyA +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert2_53[] = { + 0x30, 0x82, 0x06, 0xe6, 0x30, 0x82, 0x05, 0xce, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x03, 0x37, 0xb9, 0x28, 0x34, 0x7c, 0x60, 0xa6, 0xae, + 0xc5, 0xad, 0xb1, 0x21, 0x7f, 0x38, 0x60, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x6c, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, + 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, + 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x37, 0x31, 0x31, 0x30, 0x39, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x69, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, + 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, + 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1f, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, 0x69, 0x67, + 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x20, + 0x45, 0x56, 0x20, 0x43, 0x41, 0x2d, 0x31, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, + 0x82, 0x01, 0x01, 0x00, 0xf3, 0x96, 0x62, 0xd8, 0x75, 0x6e, 0x19, 0xff, + 0x3f, 0x34, 0x7c, 0x49, 0x4f, 0x31, 0x7e, 0x0d, 0x04, 0x4e, 0x99, 0x81, + 0xe2, 0xb3, 0x85, 0x55, 0x91, 0x30, 0xb1, 0xc0, 0xaf, 0x70, 0xbb, 0x2c, + 0xa8, 0xe7, 0x18, 0xaa, 0x3f, 0x78, 0xf7, 0x90, 0x68, 0x52, 0x86, 0x01, + 0x88, 0x97, 0xe2, 0x3b, 0x06, 0x65, 0x90, 0xaa, 0xbd, 0x65, 0x76, 0xc2, + 0xec, 0xbe, 0x10, 0x5b, 0x37, 0x78, 0x83, 0x60, 0x75, 0x45, 0xc6, 0xbd, + 0x74, 0xaa, 0xb6, 0x9f, 0xa4, 0x3a, 0x01, 0x50, 0x17, 0xc4, 0x39, 0x69, + 0xb9, 0xf1, 0x4f, 0xef, 0x82, 0xc1, 0xca, 0xf3, 0x4a, 0xdb, 0xcc, 0x9e, + 0x50, 0x4f, 0x4d, 0x40, 0xa3, 0x3a, 0x90, 0xe7, 0x86, 0x66, 0xbc, 0xf0, + 0x3e, 0x76, 0x28, 0x4c, 0xd1, 0x75, 0x80, 0x9e, 0x6a, 0x35, 0x14, 0x35, + 0x03, 0x9e, 0xdb, 0x0c, 0x8c, 0xc2, 0x28, 0xad, 0x50, 0xb2, 0xce, 0xf6, + 0x91, 0xa3, 0xc3, 0xa5, 0x0a, 0x58, 0x49, 0xf6, 0x75, 0x44, 0x6c, 0xba, + 0xf9, 0xce, 0xe9, 0xab, 0x3a, 0x02, 0xe0, 0x4d, 0xf3, 0xac, 0xe2, 0x7a, + 0xe0, 0x60, 0x22, 0x05, 0x3c, 0x82, 0xd3, 0x52, 0xe2, 0xf3, 0x9c, 0x47, + 0xf8, 0x3b, 0xd8, 0xb2, 0x4b, 0x93, 0x56, 0x4a, 0xbf, 0x70, 0xab, 0x3e, + 0xe9, 0x68, 0xc8, 0x1d, 0x8f, 0x58, 0x1d, 0x2a, 0x4d, 0x5e, 0x27, 0x3d, + 0xad, 0x0a, 0x59, 0x2f, 0x5a, 0x11, 0x20, 0x40, 0xd9, 0x68, 0x04, 0x68, + 0x2d, 0xf4, 0xc0, 0x84, 0x0b, 0x0a, 0x1b, 0x78, 0xdf, 0xed, 0x1a, 0x58, + 0xdc, 0xfb, 0x41, 0x5a, 0x6d, 0x6b, 0xf2, 0xed, 0x1c, 0xee, 0x5c, 0x32, + 0xb6, 0x5c, 0xec, 0xd7, 0xa6, 0x03, 0x32, 0xa6, 0xe8, 0xde, 0xb7, 0x28, + 0x27, 0x59, 0x88, 0x80, 0xff, 0x7b, 0xad, 0x89, 0x58, 0xd5, 0x1e, 0x14, + 0xa4, 0xf2, 0xb0, 0x70, 0xd4, 0xa0, 0x3e, 0xa7, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xa3, 0x82, 0x03, 0x85, 0x30, 0x82, 0x03, 0x81, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, + 0x86, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x34, 0x30, 0x32, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x04, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x03, 0x08, 0x30, 0x82, 0x01, 0xc4, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x82, 0x01, 0xbb, 0x30, 0x82, 0x01, 0xb7, 0x30, 0x82, 0x01, 0xb3, 0x06, + 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xfd, 0x6c, 0x02, 0x01, 0x30, 0x82, + 0x01, 0xa4, 0x30, 0x3a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x73, 0x6c, 0x2d, 0x63, 0x70, 0x73, 0x2d, + 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x68, + 0x74, 0x6d, 0x30, 0x82, 0x01, 0x64, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x02, 0x30, 0x82, 0x01, 0x56, 0x1e, 0x82, 0x01, 0x52, + 0x00, 0x41, 0x00, 0x6e, 0x00, 0x79, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, + 0x00, 0x65, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, + 0x00, 0x68, 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, 0x00, 0x43, 0x00, 0x65, + 0x00, 0x72, 0x00, 0x74, 0x00, 0x69, 0x00, 0x66, 0x00, 0x69, 0x00, 0x63, + 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6f, + 0x00, 0x6e, 0x00, 0x73, 0x00, 0x74, 0x00, 0x69, 0x00, 0x74, 0x00, 0x75, + 0x00, 0x74, 0x00, 0x65, 0x00, 0x73, 0x00, 0x20, 0x00, 0x61, 0x00, 0x63, + 0x00, 0x63, 0x00, 0x65, 0x00, 0x70, 0x00, 0x74, 0x00, 0x61, 0x00, 0x6e, + 0x00, 0x63, 0x00, 0x65, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, + 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x44, 0x00, 0x69, + 0x00, 0x67, 0x00, 0x69, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72, 0x00, 0x74, + 0x00, 0x20, 0x00, 0x45, 0x00, 0x56, 0x00, 0x20, 0x00, 0x43, 0x00, 0x50, + 0x00, 0x53, 0x00, 0x20, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, + 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x52, 0x00, 0x65, + 0x00, 0x6c, 0x00, 0x79, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x20, + 0x00, 0x50, 0x00, 0x61, 0x00, 0x72, 0x00, 0x74, 0x00, 0x79, 0x00, 0x20, + 0x00, 0x41, 0x00, 0x67, 0x00, 0x72, 0x00, 0x65, 0x00, 0x65, 0x00, 0x6d, + 0x00, 0x65, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, 0x00, 0x77, 0x00, 0x68, + 0x00, 0x69, 0x00, 0x63, 0x00, 0x68, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x69, + 0x00, 0x6d, 0x00, 0x69, 0x00, 0x74, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x69, + 0x00, 0x61, 0x00, 0x62, 0x00, 0x69, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x74, + 0x00, 0x79, 0x00, 0x20, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, + 0x00, 0x61, 0x00, 0x72, 0x00, 0x65, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6e, + 0x00, 0x63, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, + 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x68, + 0x00, 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x20, + 0x00, 0x62, 0x00, 0x79, 0x00, 0x20, 0x00, 0x72, 0x00, 0x65, 0x00, 0x66, + 0x00, 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x65, + 0x00, 0x2e, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, + 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x81, + 0x83, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x77, 0x30, 0x75, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4d, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x41, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, + 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x41, 0x43, 0x65, 0x72, + 0x74, 0x73, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, + 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, + 0x45, 0x56, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x74, + 0x30, 0x81, 0x8f, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x81, 0x87, 0x30, + 0x81, 0x84, 0x30, 0x40, 0xa0, 0x3e, 0xa0, 0x3c, 0x86, 0x3a, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x33, 0x2e, 0x64, 0x69, + 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, + 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, 0x69, 0x67, 0x68, 0x41, + 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x56, 0x52, 0x6f, + 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x40, 0xa0, 0x3e, + 0xa0, 0x3c, 0x86, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, + 0x72, 0x6c, 0x34, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, + 0x74, 0x48, 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, + 0x63, 0x65, 0x45, 0x56, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, + 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0x4c, 0x58, 0xcb, 0x25, 0xf0, 0x41, 0x4f, 0x52, 0xf4, 0x28, 0xc8, + 0x81, 0x43, 0x9b, 0xa6, 0xa8, 0xa0, 0xe6, 0x92, 0xe5, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xb1, 0x3e, + 0xc3, 0x69, 0x03, 0xf8, 0xbf, 0x47, 0x01, 0xd4, 0x98, 0x26, 0x1a, 0x08, + 0x02, 0xef, 0x63, 0x64, 0x2b, 0xc3, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x01, 0x00, 0x4c, 0x7a, 0x17, 0x87, 0x28, 0x5d, 0x17, 0xbc, 0xb2, 0x32, + 0x73, 0xbf, 0xcd, 0x2e, 0xf5, 0x58, 0x31, 0x1d, 0xf0, 0xb1, 0x71, 0x54, + 0x9c, 0xd6, 0x9b, 0x67, 0x93, 0xdb, 0x2f, 0x03, 0x3e, 0x16, 0x6f, 0x1e, + 0x03, 0xc9, 0x53, 0x84, 0xa3, 0x56, 0x60, 0x1e, 0x78, 0x94, 0x1b, 0xa2, + 0xa8, 0x6f, 0xa3, 0xa4, 0x8b, 0x52, 0x91, 0xd7, 0xdd, 0x5c, 0x95, 0xbb, + 0xef, 0xb5, 0x16, 0x49, 0xe9, 0xa5, 0x42, 0x4f, 0x34, 0xf2, 0x47, 0xff, + 0xae, 0x81, 0x7f, 0x13, 0x54, 0xb7, 0x20, 0xc4, 0x70, 0x15, 0xcb, 0x81, + 0x0a, 0x81, 0xcb, 0x74, 0x57, 0xdc, 0x9c, 0xdf, 0x24, 0xa4, 0x29, 0x0c, + 0x18, 0xf0, 0x1c, 0xe4, 0xae, 0x07, 0x33, 0xec, 0xf1, 0x49, 0x3e, 0x55, + 0xcf, 0x6e, 0x4f, 0x0d, 0x54, 0x7b, 0xd3, 0xc9, 0xe8, 0x15, 0x48, 0xd4, + 0xc5, 0xbb, 0xdc, 0x35, 0x1c, 0x77, 0x45, 0x07, 0x48, 0x45, 0x85, 0xbd, + 0xd7, 0x7e, 0x53, 0xb8, 0xc0, 0x16, 0xd9, 0x95, 0xcd, 0x8b, 0x8d, 0x7d, + 0xc9, 0x60, 0x4f, 0xd1, 0xa2, 0x9b, 0xe3, 0xd0, 0x30, 0xd6, 0xb4, 0x73, + 0x36, 0xe6, 0xd2, 0xf9, 0x03, 0xb2, 0xe3, 0xa4, 0xf5, 0xe5, 0xb8, 0x3e, + 0x04, 0x49, 0x00, 0xba, 0x2e, 0xa6, 0x4a, 0x72, 0x83, 0x72, 0x9d, 0xf7, + 0x0b, 0x8c, 0xa9, 0x89, 0xe7, 0xb3, 0xd7, 0x64, 0x1f, 0xd6, 0xe3, 0x60, + 0xcb, 0x03, 0xc4, 0xdc, 0x88, 0xe9, 0x9d, 0x25, 0x01, 0x00, 0x71, 0xcb, + 0x03, 0xb4, 0x29, 0x60, 0x25, 0x8f, 0xf9, 0x46, 0xd1, 0x7b, 0x71, 0xae, + 0xcd, 0x53, 0x12, 0x5b, 0x84, 0x8e, 0xc2, 0x0f, 0xc7, 0xed, 0x93, 0x19, + 0xd9, 0xc9, 0xfa, 0x8f, 0x58, 0x34, 0x76, 0x32, 0x2f, 0xae, 0xe1, 0x50, + 0x14, 0x61, 0xd4, 0xa8, 0x58, 0xa3, 0xc8, 0x30, 0x13, 0x23, 0xef, 0xc6, + 0x25, 0x8c, 0x36, 0x8f, 0x1c, 0x80, +}; diff --git a/external/lsquic/src/liblsquic/common_cert_set_3.c b/external/lsquic/src/liblsquic/common_cert_set_3.c new file mode 100644 index 0000000..6710543 --- /dev/null +++ b/external/lsquic/src/liblsquic/common_cert_set_3.c @@ -0,0 +1,126 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2015 The Chromium Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE.chrome file. + */ + +/* Updated for C style, David Shue */ +/* + * Replace "kDERCert" to "der_cert3_" + * + */ +#include "common_cert_set_3a.inc" +#include "common_cert_set_3b.inc" + +#define common_certs3_num 52 +static const unsigned char* const common_certs3[common_certs3_num] = { + der_cert3_0, + der_cert3_1, + der_cert3_2, + der_cert3_3, + der_cert3_4, + der_cert3_5, + der_cert3_6, + der_cert3_7, + der_cert3_8, + der_cert3_9, + der_cert3_10, + der_cert3_11, + der_cert3_12, + der_cert3_13, + der_cert3_14, + der_cert3_15, + der_cert3_16, + der_cert3_17, + der_cert3_18, + der_cert3_19, + der_cert3_20, + der_cert3_21, + der_cert3_22, + der_cert3_23, + der_cert3_24, + der_cert3_25, + der_cert3_26, + der_cert3_27, + der_cert3_28, + der_cert3_29, + der_cert3_30, + der_cert3_31, + der_cert3_32, + der_cert3_33, + der_cert3_34, + der_cert3_35, + der_cert3_36, + der_cert3_37, + der_cert3_38, + der_cert3_39, + der_cert3_40, + der_cert3_41, + der_cert3_42, + der_cert3_43, + der_cert3_44, + der_cert3_45, + der_cert3_46, + der_cert3_47, + der_cert3_48, + der_cert3_49, + der_cert3_50, + der_cert3_51, +}; + +static const size_t common_certs3_lens[common_certs3_num] = { + 897, + 911, + 1012, + 1049, + 1065, + 1096, + 1097, + 1101, + 1105, + 1105, + 1107, + 1117, + 1127, + 1133, + 1136, + 1138, + 1139, + 1145, + 1149, + 1153, + 1167, + 1172, + 1174, + 1174, + 1176, + 1188, + 1194, + 1196, + 1203, + 1205, + 1206, + 1208, + 1209, + 1210, + 1222, + 1227, + 1236, + 1236, + 1238, + 1283, + 1284, + 1287, + 1298, + 1315, + 1327, + 1340, + 1357, + 1418, + 1447, + 1509, + 1513, + 1632, +}; + +#define common_certs3_hash UINT64_C(0x918215a28680ed7e) diff --git a/external/lsquic/src/liblsquic/common_cert_set_3a.inc b/external/lsquic/src/liblsquic/common_cert_set_3a.inc new file mode 100644 index 0000000..d12d4de --- /dev/null +++ b/external/lsquic/src/liblsquic/common_cert_set_3a.inc @@ -0,0 +1,5039 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2015 The Chromium Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE.chrome file. + */ + +/* This file contains common certificates. It's designed to be #included in + * another file, in a namespace. */ + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1227750 (0x12bbe6) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=Equifax, OU=Equifax Secure Certificate Authority + Validity + Not Before: May 21 04:00:00 2002 GMT + Not After : Aug 21 04:00:00 2018 GMT + Subject: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:da:cc:18:63:30:fd:f4:17:23:1a:56:7e:5b:df: + 3c:6c:38:e4:71:b7:78:91:d4:bc:a1:d8:4c:f8:a8: + 43:b6:03:e9:4d:21:07:08:88:da:58:2f:66:39:29: + bd:05:78:8b:9d:38:e8:05:b7:6a:7e:71:a4:e6:c4: + 60:a6:b0:ef:80:e4:89:28:0f:9e:25:d6:ed:83:f3: + ad:a6:91:c7:98:c9:42:18:35:14:9d:ad:98:46:92: + 2e:4f:ca:f1:87:43:c1:16:95:57:2d:50:ef:89:2d: + 80:7a:57:ad:f2:ee:5f:6b:d2:00:8d:b9:14:f8:14: + 15:35:d9:c0:46:a3:7b:72:c8:91:bf:c9:55:2b:cd: + d0:97:3e:9c:26:64:cc:df:ce:83:19:71:ca:4e:e6: + d4:d5:7b:a9:19:cd:55:de:c8:ec:d2:5e:38:53:e5: + 5c:4f:8c:2d:fe:50:23:36:fc:66:e6:cb:8e:a4:39: + 19:00:b7:95:02:39:91:0b:0e:fe:38:2e:d1:1d:05: + 9a:f6:4d:3e:6f:0f:07:1d:af:2c:1e:8f:60:39:e2: + fa:36:53:13:39:d4:5e:26:2b:db:3d:a8:14:bd:32: + eb:18:03:28:52:04:71:e5:ab:33:3d:e1:38:bb:07: + 36:84:62:9c:79:ea:16:30:f4:5f:c0:2b:e8:71:6b: + e4:f9 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Authority Key Identifier: + keyid:48:E6:68:F9:2B:D2:B2:95:D7:47:D8:23:20:10:4F:33:98:90:9F:D4 + + X509v3 Subject Key Identifier: + C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.geotrust.com/crls/secureca.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.geotrust.com/resources/repository + + Signature Algorithm: sha1WithRSAEncryption + 76:e1:12:6e:4e:4b:16:12:86:30:06:b2:81:08:cf:f0:08:c7: + c7:71:7e:66:ee:c2:ed:d4:3b:1f:ff:f0:f0:c8:4e:d6:43:38: + b0:b9:30:7d:18:d0:55:83:a2:6a:cb:36:11:9c:e8:48:66:a3: + 6d:7f:b8:13:d4:47:fe:8b:5a:5c:73:fc:ae:d9:1b:32:19:38: + ab:97:34:14:aa:96:d2:eb:a3:1c:14:08:49:b6:bb:e5:91:ef: + 83:36:eb:1d:56:6f:ca:da:bc:73:63:90:e4:7f:7b:3e:22:cb: + 3d:07:ed:5f:38:74:9c:e3:03:50:4e:a1:af:98:ee:61:f2:84: + 3f:12 +-----BEGIN CERTIFICATE----- +MIIDfTCCAuagAwIBAgIDErvmMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT +MRAwDgYDVQQKEwdFcXVpZmF4MS0wKwYDVQQLEyRFcXVpZmF4IFNlY3VyZSBDZXJ0 +aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDIwNTIxMDQwMDAwWhcNMTgwODIxMDQwMDAw +WjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UE +AxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9m +OSm9BXiLnTjoBbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIu +T8rxh0PBFpVXLVDviS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6c +JmTM386DGXHKTubU1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmR +Cw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5asz +PeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo4HwMIHtMB8GA1UdIwQYMBaAFEjm +aPkr0rKV10fYIyAQTzOYkJ/UMB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrM +TjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjA6BgNVHR8EMzAxMC+g +LaArhilodHRwOi8vY3JsLmdlb3RydXN0LmNvbS9jcmxzL3NlY3VyZWNhLmNybDBO +BgNVHSAERzBFMEMGBFUdIAAwOzA5BggrBgEFBQcCARYtaHR0cHM6Ly93d3cuZ2Vv +dHJ1c3QuY29tL3Jlc291cmNlcy9yZXBvc2l0b3J5MA0GCSqGSIb3DQEBBQUAA4GB +AHbhEm5OSxYShjAGsoEIz/AIx8dxfmbuwu3UOx//8PDITtZDOLC5MH0Y0FWDomrL +NhGc6Ehmo21/uBPUR/6LWlxz/K7ZGzIZOKuXNBSqltLroxwUCEm2u+WR74M26x1W +b8ravHNjkOR/ez4iyz0H7V84dJzjA1BOoa+Y7mHyhD8S +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_0[] = { + 0x30, 0x82, 0x03, 0x7d, 0x30, 0x82, 0x02, 0xe6, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x12, 0xbb, 0xe6, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x4e, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07, 0x45, + 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, + 0x55, 0x04, 0x0b, 0x13, 0x24, 0x45, 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, + 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x32, 0x30, + 0x35, 0x32, 0x31, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, + 0x31, 0x38, 0x30, 0x38, 0x32, 0x31, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30, + 0x5a, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x12, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xda, 0xcc, 0x18, 0x63, 0x30, 0xfd, + 0xf4, 0x17, 0x23, 0x1a, 0x56, 0x7e, 0x5b, 0xdf, 0x3c, 0x6c, 0x38, 0xe4, + 0x71, 0xb7, 0x78, 0x91, 0xd4, 0xbc, 0xa1, 0xd8, 0x4c, 0xf8, 0xa8, 0x43, + 0xb6, 0x03, 0xe9, 0x4d, 0x21, 0x07, 0x08, 0x88, 0xda, 0x58, 0x2f, 0x66, + 0x39, 0x29, 0xbd, 0x05, 0x78, 0x8b, 0x9d, 0x38, 0xe8, 0x05, 0xb7, 0x6a, + 0x7e, 0x71, 0xa4, 0xe6, 0xc4, 0x60, 0xa6, 0xb0, 0xef, 0x80, 0xe4, 0x89, + 0x28, 0x0f, 0x9e, 0x25, 0xd6, 0xed, 0x83, 0xf3, 0xad, 0xa6, 0x91, 0xc7, + 0x98, 0xc9, 0x42, 0x18, 0x35, 0x14, 0x9d, 0xad, 0x98, 0x46, 0x92, 0x2e, + 0x4f, 0xca, 0xf1, 0x87, 0x43, 0xc1, 0x16, 0x95, 0x57, 0x2d, 0x50, 0xef, + 0x89, 0x2d, 0x80, 0x7a, 0x57, 0xad, 0xf2, 0xee, 0x5f, 0x6b, 0xd2, 0x00, + 0x8d, 0xb9, 0x14, 0xf8, 0x14, 0x15, 0x35, 0xd9, 0xc0, 0x46, 0xa3, 0x7b, + 0x72, 0xc8, 0x91, 0xbf, 0xc9, 0x55, 0x2b, 0xcd, 0xd0, 0x97, 0x3e, 0x9c, + 0x26, 0x64, 0xcc, 0xdf, 0xce, 0x83, 0x19, 0x71, 0xca, 0x4e, 0xe6, 0xd4, + 0xd5, 0x7b, 0xa9, 0x19, 0xcd, 0x55, 0xde, 0xc8, 0xec, 0xd2, 0x5e, 0x38, + 0x53, 0xe5, 0x5c, 0x4f, 0x8c, 0x2d, 0xfe, 0x50, 0x23, 0x36, 0xfc, 0x66, + 0xe6, 0xcb, 0x8e, 0xa4, 0x39, 0x19, 0x00, 0xb7, 0x95, 0x02, 0x39, 0x91, + 0x0b, 0x0e, 0xfe, 0x38, 0x2e, 0xd1, 0x1d, 0x05, 0x9a, 0xf6, 0x4d, 0x3e, + 0x6f, 0x0f, 0x07, 0x1d, 0xaf, 0x2c, 0x1e, 0x8f, 0x60, 0x39, 0xe2, 0xfa, + 0x36, 0x53, 0x13, 0x39, 0xd4, 0x5e, 0x26, 0x2b, 0xdb, 0x3d, 0xa8, 0x14, + 0xbd, 0x32, 0xeb, 0x18, 0x03, 0x28, 0x52, 0x04, 0x71, 0xe5, 0xab, 0x33, + 0x3d, 0xe1, 0x38, 0xbb, 0x07, 0x36, 0x84, 0x62, 0x9c, 0x79, 0xea, 0x16, + 0x30, 0xf4, 0x5f, 0xc0, 0x2b, 0xe8, 0x71, 0x6b, 0xe4, 0xf9, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x81, 0xf0, 0x30, 0x81, 0xed, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x48, 0xe6, + 0x68, 0xf9, 0x2b, 0xd2, 0xb2, 0x95, 0xd7, 0x47, 0xd8, 0x23, 0x20, 0x10, + 0x4f, 0x33, 0x98, 0x90, 0x9f, 0xd4, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, + 0xab, 0x05, 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, + 0x4e, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, + 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3a, + 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, + 0x2d, 0xa0, 0x2b, 0x86, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x65, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x4e, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x47, 0x30, 0x45, 0x30, 0x43, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, + 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, + 0x00, 0x76, 0xe1, 0x12, 0x6e, 0x4e, 0x4b, 0x16, 0x12, 0x86, 0x30, 0x06, + 0xb2, 0x81, 0x08, 0xcf, 0xf0, 0x08, 0xc7, 0xc7, 0x71, 0x7e, 0x66, 0xee, + 0xc2, 0xed, 0xd4, 0x3b, 0x1f, 0xff, 0xf0, 0xf0, 0xc8, 0x4e, 0xd6, 0x43, + 0x38, 0xb0, 0xb9, 0x30, 0x7d, 0x18, 0xd0, 0x55, 0x83, 0xa2, 0x6a, 0xcb, + 0x36, 0x11, 0x9c, 0xe8, 0x48, 0x66, 0xa3, 0x6d, 0x7f, 0xb8, 0x13, 0xd4, + 0x47, 0xfe, 0x8b, 0x5a, 0x5c, 0x73, 0xfc, 0xae, 0xd9, 0x1b, 0x32, 0x19, + 0x38, 0xab, 0x97, 0x34, 0x14, 0xaa, 0x96, 0xd2, 0xeb, 0xa3, 0x1c, 0x14, + 0x08, 0x49, 0xb6, 0xbb, 0xe5, 0x91, 0xef, 0x83, 0x36, 0xeb, 0x1d, 0x56, + 0x6f, 0xca, 0xda, 0xbc, 0x73, 0x63, 0x90, 0xe4, 0x7f, 0x7b, 0x3e, 0x22, + 0xcb, 0x3d, 0x07, 0xed, 0x5f, 0x38, 0x74, 0x9c, 0xe3, 0x03, 0x50, 0x4e, + 0xa1, 0xaf, 0x98, 0xee, 0x61, 0xf2, 0x84, 0x3f, 0x12, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 880226 (0xd6e62) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=Equifax, OU=Equifax Secure Certificate Authority + Validity + Not Before: Nov 27 00:00:00 2006 GMT + Not After : Aug 21 16:15:00 2018 GMT + Subject: C=US, O=GeoTrust Inc., CN=GeoTrust Primary Certification Authority + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:be:b8:15:7b:ff:d4:7c:7d:67:ad:83:64:7b:c8: + 42:53:2d:df:f6:84:08:20:61:d6:01:59:6a:9c:44: + 11:af:ef:76:fd:95:7e:ce:61:30:bb:7a:83:5f:02: + bd:01:66:ca:ee:15:8d:6f:a1:30:9c:bd:a1:85:9e: + 94:3a:f3:56:88:00:31:cf:d8:ee:6a:96:02:d9:ed: + 03:8c:fb:75:6d:e7:ea:b8:55:16:05:16:9a:f4:e0: + 5e:b1:88:c0:64:85:5c:15:4d:88:c7:b7:ba:e0:75: + e9:ad:05:3d:9d:c7:89:48:e0:bb:28:c8:03:e1:30: + 93:64:5e:52:c0:59:70:22:35:57:88:8a:f1:95:0a: + 83:d7:bc:31:73:01:34:ed:ef:46:71:e0:6b:02:a8: + 35:72:6b:97:9b:66:e0:cb:1c:79:5f:d8:1a:04:68: + 1e:47:02:e6:9d:60:e2:36:97:01:df:ce:35:92:df: + be:67:c7:6d:77:59:3b:8f:9d:d6:90:15:94:bc:42: + 34:10:c1:39:f9:b1:27:3e:7e:d6:8a:75:c5:b2:af: + 96:d3:a2:de:9b:e4:98:be:7d:e1:e9:81:ad:b6:6f: + fc:d7:0e:da:e0:34:b0:0d:1a:77:e7:e3:08:98:ef: + 58:fa:9c:84:b7:36:af:c2:df:ac:d2:f4:10:06:70: + 71:35 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 2C:D5:50:41:97:15:8B:F0:8F:36:61:5B:4A:FB:6B:D9:99:C9:33:92 + X509v3 Authority Key Identifier: + keyid:48:E6:68:F9:2B:D2:B2:95:D7:47:D8:23:20:10:4F:33:98:90:9F:D4 + + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.geotrust.com/crls/secureca.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: http://www.geotrust.com/resources/cps + + Signature Algorithm: sha1WithRSAEncryption + af:f3:0e:d6:72:ab:c7:a9:97:ca:2a:6b:84:39:de:79:a9:f0: + 81:e5:08:67:ab:d7:2f:20:02:01:71:0c:04:22:c9:1e:88:95: + 03:c9:49:3a:af:67:08:49:b0:d5:08:f5:20:3d:80:91:a0:c5: + 87:a3:fb:c9:a3:17:91:f9:a8:2f:ae:e9:0f:df:96:72:0f:75: + 17:80:5d:78:01:4d:9f:1f:6d:7b:d8:f5:42:38:23:1a:99:93: + f4:83:be:3b:35:74:e7:37:13:35:7a:ac:b4:b6:90:82:6c:27: + a4:e0:ec:9e:35:bd:bf:e5:29:a1:47:9f:5b:32:fc:e9:99:7d: + 2b:39 +-----BEGIN CERTIFICATE----- +MIIDizCCAvSgAwIBAgIDDW5iMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT +MRAwDgYDVQQKEwdFcXVpZmF4MS0wKwYDVQQLEyRFcXVpZmF4IFNlY3VyZSBDZXJ0 +aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMTI3MDAwMDAwWhcNMTgwODIxMTYxNTAw +WjBYMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UE +AxMoR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL64FXv/1Hx9Z62DZHvIQlMt3/aE +CCBh1gFZapxEEa/vdv2Vfs5hMLt6g18CvQFmyu4VjW+hMJy9oYWelDrzVogAMc/Y +7mqWAtntA4z7dW3n6rhVFgUWmvTgXrGIwGSFXBVNiMe3uuB16a0FPZ3HiUjguyjI +A+Ewk2ReUsBZcCI1V4iK8ZUKg9e8MXMBNO3vRnHgawKoNXJrl5tm4MsceV/YGgRo +HkcC5p1g4jaXAd/ONZLfvmfHbXdZO4+d1pAVlLxCNBDBOfmxJz5+1op1xbKvltOi +3pvkmL594emBrbZv/NcO2uA0sA0ad+fjCJjvWPqchLc2r8LfrNL0EAZwcTUCAwEA +AaOB6DCB5TAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFCzVUEGXFYvwjzZhW0r7 +a9mZyTOSMB8GA1UdIwQYMBaAFEjmaPkr0rKV10fYIyAQTzOYkJ/UMA8GA1UdEwEB +/wQFMAMBAf8wOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5nZW90cnVzdC5j +b20vY3Jscy9zZWN1cmVjYS5jcmwwRgYDVR0gBD8wPTA7BgRVHSAAMDMwMQYIKwYB +BQUHAgEWJWh0dHA6Ly93d3cuZ2VvdHJ1c3QuY29tL3Jlc291cmNlcy9jcHMwDQYJ +KoZIhvcNAQEFBQADgYEAr/MO1nKrx6mXyiprhDneeanwgeUIZ6vXLyACAXEMBCLJ +HoiVA8lJOq9nCEmw1Qj1ID2AkaDFh6P7yaMXkfmoL67pD9+Wcg91F4BdeAFNnx9t +e9j1QjgjGpmT9IO+OzV05zcTNXqstLaQgmwnpODsnjW9v+UpoUefWzL86Zl9Kzk= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_1[] = { + 0x30, 0x82, 0x03, 0x8b, 0x30, 0x82, 0x02, 0xf4, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x0d, 0x6e, 0x62, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x4e, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07, 0x45, + 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, + 0x55, 0x04, 0x0b, 0x13, 0x24, 0x45, 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, + 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, + 0x31, 0x32, 0x37, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, + 0x31, 0x38, 0x30, 0x38, 0x32, 0x31, 0x31, 0x36, 0x31, 0x35, 0x30, 0x30, + 0x5a, 0x30, 0x58, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x28, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, + 0x82, 0x01, 0x01, 0x00, 0xbe, 0xb8, 0x15, 0x7b, 0xff, 0xd4, 0x7c, 0x7d, + 0x67, 0xad, 0x83, 0x64, 0x7b, 0xc8, 0x42, 0x53, 0x2d, 0xdf, 0xf6, 0x84, + 0x08, 0x20, 0x61, 0xd6, 0x01, 0x59, 0x6a, 0x9c, 0x44, 0x11, 0xaf, 0xef, + 0x76, 0xfd, 0x95, 0x7e, 0xce, 0x61, 0x30, 0xbb, 0x7a, 0x83, 0x5f, 0x02, + 0xbd, 0x01, 0x66, 0xca, 0xee, 0x15, 0x8d, 0x6f, 0xa1, 0x30, 0x9c, 0xbd, + 0xa1, 0x85, 0x9e, 0x94, 0x3a, 0xf3, 0x56, 0x88, 0x00, 0x31, 0xcf, 0xd8, + 0xee, 0x6a, 0x96, 0x02, 0xd9, 0xed, 0x03, 0x8c, 0xfb, 0x75, 0x6d, 0xe7, + 0xea, 0xb8, 0x55, 0x16, 0x05, 0x16, 0x9a, 0xf4, 0xe0, 0x5e, 0xb1, 0x88, + 0xc0, 0x64, 0x85, 0x5c, 0x15, 0x4d, 0x88, 0xc7, 0xb7, 0xba, 0xe0, 0x75, + 0xe9, 0xad, 0x05, 0x3d, 0x9d, 0xc7, 0x89, 0x48, 0xe0, 0xbb, 0x28, 0xc8, + 0x03, 0xe1, 0x30, 0x93, 0x64, 0x5e, 0x52, 0xc0, 0x59, 0x70, 0x22, 0x35, + 0x57, 0x88, 0x8a, 0xf1, 0x95, 0x0a, 0x83, 0xd7, 0xbc, 0x31, 0x73, 0x01, + 0x34, 0xed, 0xef, 0x46, 0x71, 0xe0, 0x6b, 0x02, 0xa8, 0x35, 0x72, 0x6b, + 0x97, 0x9b, 0x66, 0xe0, 0xcb, 0x1c, 0x79, 0x5f, 0xd8, 0x1a, 0x04, 0x68, + 0x1e, 0x47, 0x02, 0xe6, 0x9d, 0x60, 0xe2, 0x36, 0x97, 0x01, 0xdf, 0xce, + 0x35, 0x92, 0xdf, 0xbe, 0x67, 0xc7, 0x6d, 0x77, 0x59, 0x3b, 0x8f, 0x9d, + 0xd6, 0x90, 0x15, 0x94, 0xbc, 0x42, 0x34, 0x10, 0xc1, 0x39, 0xf9, 0xb1, + 0x27, 0x3e, 0x7e, 0xd6, 0x8a, 0x75, 0xc5, 0xb2, 0xaf, 0x96, 0xd3, 0xa2, + 0xde, 0x9b, 0xe4, 0x98, 0xbe, 0x7d, 0xe1, 0xe9, 0x81, 0xad, 0xb6, 0x6f, + 0xfc, 0xd7, 0x0e, 0xda, 0xe0, 0x34, 0xb0, 0x0d, 0x1a, 0x77, 0xe7, 0xe3, + 0x08, 0x98, 0xef, 0x58, 0xfa, 0x9c, 0x84, 0xb7, 0x36, 0xaf, 0xc2, 0xdf, + 0xac, 0xd2, 0xf4, 0x10, 0x06, 0x70, 0x71, 0x35, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xa3, 0x81, 0xe8, 0x30, 0x81, 0xe5, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x2c, 0xd5, + 0x50, 0x41, 0x97, 0x15, 0x8b, 0xf0, 0x8f, 0x36, 0x61, 0x5b, 0x4a, 0xfb, + 0x6b, 0xd9, 0x99, 0xc9, 0x33, 0x92, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x48, 0xe6, 0x68, 0xf9, 0x2b, + 0xd2, 0xb2, 0x95, 0xd7, 0x47, 0xd8, 0x23, 0x20, 0x10, 0x4f, 0x33, 0x98, + 0x90, 0x9f, 0xd4, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x3a, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, 0x2d, 0xa0, + 0x2b, 0x86, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x65, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x46, 0x06, 0x03, + 0x55, 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, 0x30, 0x3b, 0x06, 0x04, 0x55, + 0x1d, 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, + 0x81, 0x81, 0x00, 0xaf, 0xf3, 0x0e, 0xd6, 0x72, 0xab, 0xc7, 0xa9, 0x97, + 0xca, 0x2a, 0x6b, 0x84, 0x39, 0xde, 0x79, 0xa9, 0xf0, 0x81, 0xe5, 0x08, + 0x67, 0xab, 0xd7, 0x2f, 0x20, 0x02, 0x01, 0x71, 0x0c, 0x04, 0x22, 0xc9, + 0x1e, 0x88, 0x95, 0x03, 0xc9, 0x49, 0x3a, 0xaf, 0x67, 0x08, 0x49, 0xb0, + 0xd5, 0x08, 0xf5, 0x20, 0x3d, 0x80, 0x91, 0xa0, 0xc5, 0x87, 0xa3, 0xfb, + 0xc9, 0xa3, 0x17, 0x91, 0xf9, 0xa8, 0x2f, 0xae, 0xe9, 0x0f, 0xdf, 0x96, + 0x72, 0x0f, 0x75, 0x17, 0x80, 0x5d, 0x78, 0x01, 0x4d, 0x9f, 0x1f, 0x6d, + 0x7b, 0xd8, 0xf5, 0x42, 0x38, 0x23, 0x1a, 0x99, 0x93, 0xf4, 0x83, 0xbe, + 0x3b, 0x35, 0x74, 0xe7, 0x37, 0x13, 0x35, 0x7a, 0xac, 0xb4, 0xb6, 0x90, + 0x82, 0x6c, 0x27, 0xa4, 0xe0, 0xec, 0x9e, 0x35, 0xbd, 0xbf, 0xe5, 0x29, + 0xa1, 0x47, 0x9f, 0x5b, 0x32, 0xfc, 0xe9, 0x99, 0x7d, 0x2b, 0x39, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 146066 (0x23a92) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Validity + Not Before: Apr 1 00:00:00 2015 GMT + Not After : Dec 31 23:59:59 2017 GMT + Subject: C=US, O=Google Inc, CN=Google Internet Authority G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:9c:2a:04:77:5c:d8:50:91:3a:06:a3:82:e0:d8: + 50:48:bc:89:3f:f1:19:70:1a:88:46:7e:e0:8f:c5: + f1:89:ce:21:ee:5a:fe:61:0d:b7:32:44:89:a0:74: + 0b:53:4f:55:a4:ce:82:62:95:ee:eb:59:5f:c6:e1: + 05:80:12:c4:5e:94:3f:bc:5b:48:38:f4:53:f7:24: + e6:fb:91:e9:15:c4:cf:f4:53:0d:f4:4a:fc:9f:54: + de:7d:be:a0:6b:6f:87:c0:d0:50:1f:28:30:03:40: + da:08:73:51:6c:7f:ff:3a:3c:a7:37:06:8e:bd:4b: + 11:04:eb:7d:24:de:e6:f9:fc:31:71:fb:94:d5:60: + f3:2e:4a:af:42:d2:cb:ea:c4:6a:1a:b2:cc:53:dd: + 15:4b:8b:1f:c8:19:61:1f:cd:9d:a8:3e:63:2b:84: + 35:69:65:84:c8:19:c5:46:22:f8:53:95:be:e3:80: + 4a:10:c6:2a:ec:ba:97:20:11:c7:39:99:10:04:a0: + f0:61:7a:95:25:8c:4e:52:75:e2:b6:ed:08:ca:14: + fc:ce:22:6a:b3:4e:cf:46:03:97:97:03:7e:c0:b1: + de:7b:af:45:33:cf:ba:3e:71:b7:de:f4:25:25:c2: + 0d:35:89:9d:9d:fb:0e:11:79:89:1e:37:c5:af:8e: + 72:69 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Authority Key Identifier: + keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + + X509v3 Subject Key Identifier: + 4A:DD:06:16:1B:BC:F6:68:B5:76:F5:81:B6:BB:62:1A:BA:5A:81:2F + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + Authority Information Access: + OCSP - URI:http://g.symcd.com + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 CRL Distribution Points: + + Full Name: + URI:http://g.symcb.com/crls/gtglobal.crl + + X509v3 Certificate Policies: + Policy: 1.3.6.1.4.1.11129.2.5.1 + + Signature Algorithm: sha256WithRSAEncryption + 08:4e:04:a7:80:7f:10:16:43:5e:02:ad:d7:42:80:f4:b0:8e: + d2:ae:b3:eb:11:7d:90:84:18:7d:e7:90:15:fb:49:7f:a8:99: + 05:91:bb:7a:c9:d6:3c:37:18:09:9a:b6:c7:92:20:07:35:33: + 09:e4:28:63:72:0d:b4:e0:32:9c:87:98:c4:1b:76:89:67:c1: + 50:58:b0:13:aa:13:1a:1b:32:a5:be:ea:11:95:4c:48:63:49: + e9:99:5d:20:37:cc:fe:2a:69:51:16:95:4b:a9:de:49:82:c0: + 10:70:f4:2c:f3:ec:bc:24:24:d0:4e:ac:a5:d9:5e:1e:6d:92: + c1:a7:ac:48:35:81:f9:e5:e4:9c:65:69:cd:87:a4:41:50:3f: + 2e:57:a5:91:51:12:58:0e:8c:09:a1:ac:7a:a4:12:a5:27:f3: + 9a:10:97:7d:55:03:06:f7:66:58:5f:5f:64:e1:ab:5d:6d:a5: + 39:48:75:98:4c:29:5a:3a:8d:d3:2b:ca:9c:55:04:bf:f4:e6: + 14:d5:80:ac:26:ed:17:89:a6:93:6c:5c:a4:cc:b8:f0:66:8e: + 64:e3:7d:9a:e2:00:b3:49:c7:e4:0a:aa:dd:5b:83:c7:70:90: + 46:4e:be:d0:db:59:96:6c:2e:f5:16:36:de:71:cc:01:c2:12: + c1:21:c6:16 +-----BEGIN CERTIFICATE----- +MIID8DCCAtigAwIBAgIDAjqSMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMTUwNDAxMDAwMDAwWhcNMTcxMjMxMjM1OTU5WjBJMQswCQYDVQQG +EwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzElMCMGA1UEAxMcR29vZ2xlIEludGVy +bmV0IEF1dGhvcml0eSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AJwqBHdc2FCROgajguDYUEi8iT/xGXAaiEZ+4I/F8YnOIe5a/mENtzJEiaB0C1NP +VaTOgmKV7utZX8bhBYASxF6UP7xbSDj0U/ck5vuR6RXEz/RTDfRK/J9U3n2+oGtv +h8DQUB8oMANA2ghzUWx//zo8pzcGjr1LEQTrfSTe5vn8MXH7lNVg8y5Kr0LSy+rE +ahqyzFPdFUuLH8gZYR/Nnag+YyuENWllhMgZxUYi+FOVvuOAShDGKuy6lyARxzmZ +EASg8GF6lSWMTlJ14rbtCMoU/M4iarNOz0YDl5cDfsCx3nuvRTPPuj5xt970JSXC +DTWJnZ37DhF5iR43xa+OcmkCAwEAAaOB5zCB5DAfBgNVHSMEGDAWgBTAephojYn7 +qwVkDBF9qn1luMrMTjAdBgNVHQ4EFgQUSt0GFhu89mi1dvWBtrtiGrpagS8wDgYD +VR0PAQH/BAQDAgEGMC4GCCsGAQUFBwEBBCIwIDAeBggrBgEFBQcwAYYSaHR0cDov +L2cuc3ltY2QuY29tMBIGA1UdEwEB/wQIMAYBAf8CAQAwNQYDVR0fBC4wLDAqoCig +JoYkaHR0cDovL2cuc3ltY2IuY29tL2NybHMvZ3RnbG9iYWwuY3JsMBcGA1UdIAQQ +MA4wDAYKKwYBBAHWeQIFATANBgkqhkiG9w0BAQsFAAOCAQEACE4Ep4B/EBZDXgKt +10KA9LCO0q6z6xF9kIQYfeeQFftJf6iZBZG7esnWPDcYCZq2x5IgBzUzCeQoY3IN +tOAynIeYxBt2iWfBUFiwE6oTGhsypb7qEZVMSGNJ6ZldIDfM/ippURaVS6neSYLA +EHD0LPPsvCQk0E6spdleHm2SwaesSDWB+eXknGVpzYekQVA/LlelkVESWA6MCaGs +eqQSpSfzmhCXfVUDBvdmWF9fZOGrXW2lOUh1mEwpWjqN0yvKnFUEv/TmFNWArCbt +F4mmk2xcpMy48GaOZON9muIAs0nH5Aqq3VuDx3CQRk6+0NtZlmwu9RY23nHMAcIS +wSHGFg== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_2[] = { + 0x30, 0x82, 0x03, 0xf0, 0x30, 0x82, 0x02, 0xd8, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x92, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x35, 0x30, + 0x34, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, + 0x31, 0x37, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, + 0x5a, 0x30, 0x49, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x20, 0x49, 0x6e, + 0x63, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1c, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, + 0x00, 0x9c, 0x2a, 0x04, 0x77, 0x5c, 0xd8, 0x50, 0x91, 0x3a, 0x06, 0xa3, + 0x82, 0xe0, 0xd8, 0x50, 0x48, 0xbc, 0x89, 0x3f, 0xf1, 0x19, 0x70, 0x1a, + 0x88, 0x46, 0x7e, 0xe0, 0x8f, 0xc5, 0xf1, 0x89, 0xce, 0x21, 0xee, 0x5a, + 0xfe, 0x61, 0x0d, 0xb7, 0x32, 0x44, 0x89, 0xa0, 0x74, 0x0b, 0x53, 0x4f, + 0x55, 0xa4, 0xce, 0x82, 0x62, 0x95, 0xee, 0xeb, 0x59, 0x5f, 0xc6, 0xe1, + 0x05, 0x80, 0x12, 0xc4, 0x5e, 0x94, 0x3f, 0xbc, 0x5b, 0x48, 0x38, 0xf4, + 0x53, 0xf7, 0x24, 0xe6, 0xfb, 0x91, 0xe9, 0x15, 0xc4, 0xcf, 0xf4, 0x53, + 0x0d, 0xf4, 0x4a, 0xfc, 0x9f, 0x54, 0xde, 0x7d, 0xbe, 0xa0, 0x6b, 0x6f, + 0x87, 0xc0, 0xd0, 0x50, 0x1f, 0x28, 0x30, 0x03, 0x40, 0xda, 0x08, 0x73, + 0x51, 0x6c, 0x7f, 0xff, 0x3a, 0x3c, 0xa7, 0x37, 0x06, 0x8e, 0xbd, 0x4b, + 0x11, 0x04, 0xeb, 0x7d, 0x24, 0xde, 0xe6, 0xf9, 0xfc, 0x31, 0x71, 0xfb, + 0x94, 0xd5, 0x60, 0xf3, 0x2e, 0x4a, 0xaf, 0x42, 0xd2, 0xcb, 0xea, 0xc4, + 0x6a, 0x1a, 0xb2, 0xcc, 0x53, 0xdd, 0x15, 0x4b, 0x8b, 0x1f, 0xc8, 0x19, + 0x61, 0x1f, 0xcd, 0x9d, 0xa8, 0x3e, 0x63, 0x2b, 0x84, 0x35, 0x69, 0x65, + 0x84, 0xc8, 0x19, 0xc5, 0x46, 0x22, 0xf8, 0x53, 0x95, 0xbe, 0xe3, 0x80, + 0x4a, 0x10, 0xc6, 0x2a, 0xec, 0xba, 0x97, 0x20, 0x11, 0xc7, 0x39, 0x99, + 0x10, 0x04, 0xa0, 0xf0, 0x61, 0x7a, 0x95, 0x25, 0x8c, 0x4e, 0x52, 0x75, + 0xe2, 0xb6, 0xed, 0x08, 0xca, 0x14, 0xfc, 0xce, 0x22, 0x6a, 0xb3, 0x4e, + 0xcf, 0x46, 0x03, 0x97, 0x97, 0x03, 0x7e, 0xc0, 0xb1, 0xde, 0x7b, 0xaf, + 0x45, 0x33, 0xcf, 0xba, 0x3e, 0x71, 0xb7, 0xde, 0xf4, 0x25, 0x25, 0xc2, + 0x0d, 0x35, 0x89, 0x9d, 0x9d, 0xfb, 0x0e, 0x11, 0x79, 0x89, 0x1e, 0x37, + 0xc5, 0xaf, 0x8e, 0x72, 0x69, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, + 0xe7, 0x30, 0x81, 0xe4, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x18, 0x30, 0x16, 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, + 0xab, 0x05, 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, + 0x4e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x4a, 0xdd, 0x06, 0x16, 0x1b, 0xbc, 0xf6, 0x68, 0xb5, 0x76, 0xf5, 0x81, + 0xb6, 0xbb, 0x62, 0x1a, 0xba, 0x5a, 0x81, 0x2f, 0x30, 0x0e, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, + 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, + 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, + 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x35, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, + 0x26, 0x86, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, + 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, + 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x17, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x10, + 0x30, 0x0e, 0x30, 0x0c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xd6, + 0x79, 0x02, 0x05, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, + 0x08, 0x4e, 0x04, 0xa7, 0x80, 0x7f, 0x10, 0x16, 0x43, 0x5e, 0x02, 0xad, + 0xd7, 0x42, 0x80, 0xf4, 0xb0, 0x8e, 0xd2, 0xae, 0xb3, 0xeb, 0x11, 0x7d, + 0x90, 0x84, 0x18, 0x7d, 0xe7, 0x90, 0x15, 0xfb, 0x49, 0x7f, 0xa8, 0x99, + 0x05, 0x91, 0xbb, 0x7a, 0xc9, 0xd6, 0x3c, 0x37, 0x18, 0x09, 0x9a, 0xb6, + 0xc7, 0x92, 0x20, 0x07, 0x35, 0x33, 0x09, 0xe4, 0x28, 0x63, 0x72, 0x0d, + 0xb4, 0xe0, 0x32, 0x9c, 0x87, 0x98, 0xc4, 0x1b, 0x76, 0x89, 0x67, 0xc1, + 0x50, 0x58, 0xb0, 0x13, 0xaa, 0x13, 0x1a, 0x1b, 0x32, 0xa5, 0xbe, 0xea, + 0x11, 0x95, 0x4c, 0x48, 0x63, 0x49, 0xe9, 0x99, 0x5d, 0x20, 0x37, 0xcc, + 0xfe, 0x2a, 0x69, 0x51, 0x16, 0x95, 0x4b, 0xa9, 0xde, 0x49, 0x82, 0xc0, + 0x10, 0x70, 0xf4, 0x2c, 0xf3, 0xec, 0xbc, 0x24, 0x24, 0xd0, 0x4e, 0xac, + 0xa5, 0xd9, 0x5e, 0x1e, 0x6d, 0x92, 0xc1, 0xa7, 0xac, 0x48, 0x35, 0x81, + 0xf9, 0xe5, 0xe4, 0x9c, 0x65, 0x69, 0xcd, 0x87, 0xa4, 0x41, 0x50, 0x3f, + 0x2e, 0x57, 0xa5, 0x91, 0x51, 0x12, 0x58, 0x0e, 0x8c, 0x09, 0xa1, 0xac, + 0x7a, 0xa4, 0x12, 0xa5, 0x27, 0xf3, 0x9a, 0x10, 0x97, 0x7d, 0x55, 0x03, + 0x06, 0xf7, 0x66, 0x58, 0x5f, 0x5f, 0x64, 0xe1, 0xab, 0x5d, 0x6d, 0xa5, + 0x39, 0x48, 0x75, 0x98, 0x4c, 0x29, 0x5a, 0x3a, 0x8d, 0xd3, 0x2b, 0xca, + 0x9c, 0x55, 0x04, 0xbf, 0xf4, 0xe6, 0x14, 0xd5, 0x80, 0xac, 0x26, 0xed, + 0x17, 0x89, 0xa6, 0x93, 0x6c, 0x5c, 0xa4, 0xcc, 0xb8, 0xf0, 0x66, 0x8e, + 0x64, 0xe3, 0x7d, 0x9a, 0xe2, 0x00, 0xb3, 0x49, 0xc7, 0xe4, 0x0a, 0xaa, + 0xdd, 0x5b, 0x83, 0xc7, 0x70, 0x90, 0x46, 0x4e, 0xbe, 0xd0, 0xdb, 0x59, + 0x96, 0x6c, 0x2e, 0xf5, 0x16, 0x36, 0xde, 0x71, 0xcc, 0x01, 0xc2, 0x12, + 0xc1, 0x21, 0xc6, 0x16, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 120033005 (0x7278eed) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Global Root + Validity + Not Before: Apr 18 16:36:18 2012 GMT + Not After : Aug 13 16:35:17 2018 GMT + Subject: C=IE, O=Baltimore, OU=CyberTrust, CN=Baltimore CyberTrust Root + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:a3:04:bb:22:ab:98:3d:57:e8:26:72:9a:b5:79: + d4:29:e2:e1:e8:95:80:b1:b0:e3:5b:8e:2b:29:9a: + 64:df:a1:5d:ed:b0:09:05:6d:db:28:2e:ce:62:a2: + 62:fe:b4:88:da:12:eb:38:eb:21:9d:c0:41:2b:01: + 52:7b:88:77:d3:1c:8f:c7:ba:b9:88:b5:6a:09:e7: + 73:e8:11:40:a7:d1:cc:ca:62:8d:2d:e5:8f:0b:a6: + 50:d2:a8:50:c3:28:ea:f5:ab:25:87:8a:9a:96:1c: + a9:67:b8:3f:0c:d5:f7:f9:52:13:2f:c2:1b:d5:70: + 70:f0:8f:c0:12:ca:06:cb:9a:e1:d9:ca:33:7a:77: + d6:f8:ec:b9:f1:68:44:42:48:13:d2:c0:c2:a4:ae: + 5e:60:fe:b6:a6:05:fc:b4:dd:07:59:02:d4:59:18: + 98:63:f5:a5:63:e0:90:0c:7d:5d:b2:06:7a:f3:85: + ea:eb:d4:03:ae:5e:84:3e:5f:ff:15:ed:69:bc:f9: + 39:36:72:75:cf:77:52:4d:f3:c9:90:2c:b9:3d:e5: + c9:23:53:3f:1f:24:98:21:5c:07:99:29:bd:c6:3a: + ec:e7:6e:86:3a:6b:97:74:63:33:bd:68:18:31:f0: + 78:8d:76:bf:fc:9e:8e:5d:2a:86:a7:4d:90:dc:27: + 1a:39 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:3 + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: http://cybertrust.omniroot.com/repository + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Authority Key Identifier: + DirName:/C=US/O=GTE Corporation/OU=GTE CyberTrust Solutions, Inc./CN=GTE CyberTrust Global Root + serial:01:A5 + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://www.public-trust.com/cgi-bin/CRL/2018/cdp.crl + + Signature Algorithm: sha1WithRSAEncryption + 93:1d:fe:8b:ae:46:ec:cb:a9:0f:ab:e5:ef:ca:b2:68:16:68: + d8:8f:fa:13:a9:af:b3:cb:2d:e7:4b:6e:8e:69:2a:c2:2b:10: + 0a:8d:f6:ae:73:b6:b9:fb:14:fd:5f:6d:b8:50:b6:c4:8a:d6: + 40:7e:d7:c3:cb:73:dc:c9:5d:5b:af:b0:41:b5:37:eb:ea:dc: + 20:91:c4:34:6a:f4:a1:f3:96:9d:37:86:97:e1:71:a4:dd:7d: + fa:44:84:94:ae:d7:09:04:22:76:0f:64:51:35:a9:24:0f:f9: + 0b:db:32:da:c2:fe:c1:b9:2a:5c:7a:27:13:ca:b1:48:3a:71: + d0:43 +-----BEGIN CERTIFICATE----- +MIIEFTCCA36gAwIBAgIEByeO7TANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV +UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU +cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds +b2JhbCBSb290MB4XDTEyMDQxODE2MzYxOFoXDTE4MDgxMzE2MzUxN1owWjELMAkG +A1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVz +dDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKrmD1X6CZymrV51Cni4eiVgLGw41uO +KymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsBUnuId9Mcj8e6uYi1agnn +c+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/CG9VwcPCP +wBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPg +kAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFc +B5kpvcY67Oduhjprl3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaOCAUcw +ggFDMBIGA1UdEwEB/wQIMAYBAf8CAQMwSgYDVR0gBEMwQTA/BgRVHSAAMDcwNQYI +KwYBBQUHAgEWKWh0dHA6Ly9jeWJlcnRydXN0Lm9tbmlyb290LmNvbS9yZXBvc2l0 +b3J5MA4GA1UdDwEB/wQEAwIBBjCBiQYDVR0jBIGBMH+heaR3MHUxCzAJBgNVBAYT +AlVTMRgwFgYDVQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJl +clRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3Qg +R2xvYmFsIFJvb3SCAgGlMEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly93d3cucHVi +bGljLXRydXN0LmNvbS9jZ2ktYmluL0NSTC8yMDE4L2NkcC5jcmwwDQYJKoZIhvcN +AQEFBQADgYEAkx3+i65G7MupD6vl78qyaBZo2I/6E6mvs8st50tujmkqwisQCo32 +rnO2ufsU/V9tuFC2xIrWQH7Xw8tz3MldW6+wQbU36+rcIJHENGr0ofOWnTeGl+Fx +pN19+kSElK7XCQQidg9kUTWpJA/5C9sy2sL+wbkqXHonE8qxSDpx0EM= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_3[] = { + 0x30, 0x82, 0x04, 0x15, 0x30, 0x82, 0x03, 0x7e, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0x8e, 0xed, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x75, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0f, + 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x1e, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x23, 0x30, 0x21, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a, 0x47, 0x54, 0x45, 0x20, 0x43, + 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x32, 0x30, 0x34, 0x31, 0x38, 0x31, 0x36, 0x33, 0x36, 0x31, + 0x38, 0x5a, 0x17, 0x0d, 0x31, 0x38, 0x30, 0x38, 0x31, 0x33, 0x31, 0x36, + 0x33, 0x35, 0x31, 0x37, 0x5a, 0x30, 0x5a, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x45, 0x31, 0x12, 0x30, 0x10, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, 0x42, 0x61, 0x6c, 0x74, 0x69, + 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x43, 0x79, + 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, + 0x74, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, + 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x04, + 0xbb, 0x22, 0xab, 0x98, 0x3d, 0x57, 0xe8, 0x26, 0x72, 0x9a, 0xb5, 0x79, + 0xd4, 0x29, 0xe2, 0xe1, 0xe8, 0x95, 0x80, 0xb1, 0xb0, 0xe3, 0x5b, 0x8e, + 0x2b, 0x29, 0x9a, 0x64, 0xdf, 0xa1, 0x5d, 0xed, 0xb0, 0x09, 0x05, 0x6d, + 0xdb, 0x28, 0x2e, 0xce, 0x62, 0xa2, 0x62, 0xfe, 0xb4, 0x88, 0xda, 0x12, + 0xeb, 0x38, 0xeb, 0x21, 0x9d, 0xc0, 0x41, 0x2b, 0x01, 0x52, 0x7b, 0x88, + 0x77, 0xd3, 0x1c, 0x8f, 0xc7, 0xba, 0xb9, 0x88, 0xb5, 0x6a, 0x09, 0xe7, + 0x73, 0xe8, 0x11, 0x40, 0xa7, 0xd1, 0xcc, 0xca, 0x62, 0x8d, 0x2d, 0xe5, + 0x8f, 0x0b, 0xa6, 0x50, 0xd2, 0xa8, 0x50, 0xc3, 0x28, 0xea, 0xf5, 0xab, + 0x25, 0x87, 0x8a, 0x9a, 0x96, 0x1c, 0xa9, 0x67, 0xb8, 0x3f, 0x0c, 0xd5, + 0xf7, 0xf9, 0x52, 0x13, 0x2f, 0xc2, 0x1b, 0xd5, 0x70, 0x70, 0xf0, 0x8f, + 0xc0, 0x12, 0xca, 0x06, 0xcb, 0x9a, 0xe1, 0xd9, 0xca, 0x33, 0x7a, 0x77, + 0xd6, 0xf8, 0xec, 0xb9, 0xf1, 0x68, 0x44, 0x42, 0x48, 0x13, 0xd2, 0xc0, + 0xc2, 0xa4, 0xae, 0x5e, 0x60, 0xfe, 0xb6, 0xa6, 0x05, 0xfc, 0xb4, 0xdd, + 0x07, 0x59, 0x02, 0xd4, 0x59, 0x18, 0x98, 0x63, 0xf5, 0xa5, 0x63, 0xe0, + 0x90, 0x0c, 0x7d, 0x5d, 0xb2, 0x06, 0x7a, 0xf3, 0x85, 0xea, 0xeb, 0xd4, + 0x03, 0xae, 0x5e, 0x84, 0x3e, 0x5f, 0xff, 0x15, 0xed, 0x69, 0xbc, 0xf9, + 0x39, 0x36, 0x72, 0x75, 0xcf, 0x77, 0x52, 0x4d, 0xf3, 0xc9, 0x90, 0x2c, + 0xb9, 0x3d, 0xe5, 0xc9, 0x23, 0x53, 0x3f, 0x1f, 0x24, 0x98, 0x21, 0x5c, + 0x07, 0x99, 0x29, 0xbd, 0xc6, 0x3a, 0xec, 0xe7, 0x6e, 0x86, 0x3a, 0x6b, + 0x97, 0x74, 0x63, 0x33, 0xbd, 0x68, 0x18, 0x31, 0xf0, 0x78, 0x8d, 0x76, + 0xbf, 0xfc, 0x9e, 0x8e, 0x5d, 0x2a, 0x86, 0xa7, 0x4d, 0x90, 0xdc, 0x27, + 0x1a, 0x39, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x47, 0x30, + 0x82, 0x01, 0x43, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x03, 0x30, + 0x4a, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x43, 0x30, 0x41, 0x30, 0x3f, + 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x37, 0x30, 0x35, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x29, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x81, 0x89, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x81, 0x81, 0x30, 0x7f, 0xa1, 0x79, 0xa4, 0x77, + 0x30, 0x75, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x0f, 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x1e, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, + 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x6f, 0x6c, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x23, + 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a, 0x47, 0x54, 0x45, + 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x82, + 0x02, 0x01, 0xa5, 0x30, 0x45, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x3e, + 0x30, 0x3c, 0x30, 0x3a, 0xa0, 0x38, 0xa0, 0x36, 0x86, 0x34, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x63, 0x67, 0x69, 0x2d, 0x62, 0x69, 0x6e, 0x2f, 0x43, 0x52, + 0x4c, 0x2f, 0x32, 0x30, 0x31, 0x38, 0x2f, 0x63, 0x64, 0x70, 0x2e, 0x63, + 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x93, 0x1d, 0xfe, + 0x8b, 0xae, 0x46, 0xec, 0xcb, 0xa9, 0x0f, 0xab, 0xe5, 0xef, 0xca, 0xb2, + 0x68, 0x16, 0x68, 0xd8, 0x8f, 0xfa, 0x13, 0xa9, 0xaf, 0xb3, 0xcb, 0x2d, + 0xe7, 0x4b, 0x6e, 0x8e, 0x69, 0x2a, 0xc2, 0x2b, 0x10, 0x0a, 0x8d, 0xf6, + 0xae, 0x73, 0xb6, 0xb9, 0xfb, 0x14, 0xfd, 0x5f, 0x6d, 0xb8, 0x50, 0xb6, + 0xc4, 0x8a, 0xd6, 0x40, 0x7e, 0xd7, 0xc3, 0xcb, 0x73, 0xdc, 0xc9, 0x5d, + 0x5b, 0xaf, 0xb0, 0x41, 0xb5, 0x37, 0xeb, 0xea, 0xdc, 0x20, 0x91, 0xc4, + 0x34, 0x6a, 0xf4, 0xa1, 0xf3, 0x96, 0x9d, 0x37, 0x86, 0x97, 0xe1, 0x71, + 0xa4, 0xdd, 0x7d, 0xfa, 0x44, 0x84, 0x94, 0xae, 0xd7, 0x09, 0x04, 0x22, + 0x76, 0x0f, 0x64, 0x51, 0x35, 0xa9, 0x24, 0x0f, 0xf9, 0x0b, 0xdb, 0x32, + 0xda, 0xc2, 0xfe, 0xc1, 0xb9, 0x2a, 0x5c, 0x7a, 0x27, 0x13, 0xca, 0xb1, + 0x48, 0x3a, 0x71, 0xd0, 0x43, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 146039 (0x23a77) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Validity + Not Before: Aug 29 21:39:32 2014 GMT + Not After : May 20 21:39:32 2022 GMT + Subject: C=US, O=GeoTrust Inc., CN=RapidSSL SHA256 CA - G3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:af:54:9b:d9:58:5d:1e:2c:56:c6:d5:e8:7f:f4: + 7d:16:03:ff:d0:8b:5a:e4:8e:a7:dd:54:2e:d4:04: + c0:5d:98:9c:8d:90:0f:bc:10:65:5f:da:9a:d6:44: + 7c:c0:9f:b5:e9:4a:8c:0b:06:43:04:bb:f4:96:e2: + 26:f6:61:01:91:66:31:22:c3:34:34:5f:3f:3f:91: + 2f:44:5f:dc:c7:14:b6:03:9f:86:4b:0e:a3:ff:a0: + 80:02:83:c3:d3:1f:69:52:d6:9d:64:0f:c9:83:e7: + 1b:c4:70:ac:94:e7:c3:a4:6a:2c:bd:b8:9e:69:d8: + be:0a:8f:16:63:5a:68:71:80:7b:30:de:15:04:bf: + cc:d3:bf:3e:48:05:55:7a:b3:d7:10:0c:03:fc:9b: + fd:08:a7:8c:8c:db:a7:8e:f1:1e:63:dc:b3:01:2f: + 7f:af:57:c3:3c:48:a7:83:68:21:a7:2f:e7:a7:3f: + f0:b5:0c:fc:f5:84:d1:53:bc:0e:72:4f:60:0c:42: + b8:98:ad:19:88:57:d7:04:ec:87:bf:7e:87:4e:a3: + 21:f9:53:fd:36:98:48:8d:d6:f8:bb:48:f2:29:c8: + 64:d1:cc:54:48:53:8b:af:b7:65:1e:bf:29:33:29: + d9:29:60:48:f8:ff:91:bc:57:58:e5:35:2e:bb:69: + b6:59 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Authority Key Identifier: + keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + + X509v3 Subject Key Identifier: + C3:9C:F3:FC:D3:46:08:34:BB:CE:46:7F:A0:7C:5B:F3:E2:08:CB:59 + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 CRL Distribution Points: + + Full Name: + URI:http://g.symcb.com/crls/gtglobal.crl + + Authority Information Access: + OCSP - URI:http://g.symcd.com + + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: http://www.geotrust.com/resources/cps + + Signature Algorithm: sha256WithRSAEncryption + a3:58:1e:c6:43:32:ac:ac:2f:93:78:b7:ea:ae:54:40:47:2d: + 7e:78:8d:50:f6:f8:66:ac:d6:4f:73:d6:44:ef:af:0b:cc:5b: + c1:f4:4f:9a:8f:49:7e:60:af:c2:27:c7:16:f1:fb:93:81:90: + a9:7c:ef:6f:7e:6e:45:94:16:84:bd:ec:49:f1:c4:0e:f4:af: + 04:59:83:87:0f:2c:3b:97:c3:5a:12:9b:7b:04:35:7b:a3:95: + 33:08:7b:93:71:22:42:b3:a9:d9:6f:4f:81:92:fc:07:b6:79: + bc:84:4a:9d:77:09:f1:c5:89:f2:f0:b4:9c:54:aa:12:7b:0d: + ba:4f:ef:93:19:ec:ef:7d:4e:61:a3:8e:76:9c:59:cf:8c:94: + b1:84:97:f7:1a:b9:07:b8:b2:c6:4f:13:79:db:bf:4f:51:1b: + 7f:69:0d:51:2a:c1:d6:15:ff:37:51:34:65:51:f4:1e:be:38: + 6a:ec:0e:ab:bf:3d:7b:39:05:7b:f4:f3:fb:1a:a1:d0:c8:7e: + 4e:64:8d:cd:8c:61:55:90:fe:3a:ca:5d:25:0f:f8:1d:a3:4a: + 74:56:4f:1a:55:40:70:75:25:a6:33:2e:ba:4b:a5:5d:53:9a: + 0d:30:e1:8d:5f:61:2c:af:cc:ef:b0:99:a1:80:ff:0b:f2:62: + 4c:70:26:98 +-----BEGIN CERTIFICATE----- +MIIEJTCCAw2gAwIBAgIDAjp3MA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMTQwODI5MjEzOTMyWhcNMjIwNTIwMjEzOTMyWjBHMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXUmFwaWRTU0wg +U0hBMjU2IENBIC0gRzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCv +VJvZWF0eLFbG1eh/9H0WA//Qi1rkjqfdVC7UBMBdmJyNkA+8EGVf2prWRHzAn7Xp +SowLBkMEu/SW4ib2YQGRZjEiwzQ0Xz8/kS9EX9zHFLYDn4ZLDqP/oIACg8PTH2lS +1p1kD8mD5xvEcKyU58Okaiy9uJ5p2L4KjxZjWmhxgHsw3hUEv8zTvz5IBVV6s9cQ +DAP8m/0Ip4yM26eO8R5j3LMBL3+vV8M8SKeDaCGnL+enP/C1DPz1hNFTvA5yT2AM +QriYrRmIV9cE7Ie/fodOoyH5U/02mEiN1vi7SPIpyGTRzFRIU4uvt2UevykzKdkp +YEj4/5G8V1jlNS67abZZAgMBAAGjggEdMIIBGTAfBgNVHSMEGDAWgBTAephojYn7 +qwVkDBF9qn1luMrMTjAdBgNVHQ4EFgQUw5zz/NNGCDS7zkZ/oHxb8+IIy1kwEgYD +VR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwNQYDVR0fBC4wLDAqoCig +JoYkaHR0cDovL2cuc3ltY2IuY29tL2NybHMvZ3RnbG9iYWwuY3JsMC4GCCsGAQUF +BwEBBCIwIDAeBggrBgEFBQcwAYYSaHR0cDovL2cuc3ltY2QuY29tMEwGA1UdIARF +MEMwQQYKYIZIAYb4RQEHNjAzMDEGCCsGAQUFBwIBFiVodHRwOi8vd3d3Lmdlb3Ry +dXN0LmNvbS9yZXNvdXJjZXMvY3BzMA0GCSqGSIb3DQEBCwUAA4IBAQCjWB7GQzKs +rC+TeLfqrlRARy1+eI1Q9vhmrNZPc9ZE768LzFvB9E+aj0l+YK/CJ8cW8fuTgZCp +fO9vfm5FlBaEvexJ8cQO9K8EWYOHDyw7l8NaEpt7BDV7o5UzCHuTcSJCs6nZb0+B +kvwHtnm8hEqddwnxxYny8LScVKoSew26T++TGezvfU5ho452nFnPjJSxhJf3GrkH +uLLGTxN5279PURt/aQ1RKsHWFf83UTRlUfQevjhq7A6rvz17OQV79PP7GqHQyH5O +ZI3NjGFVkP46yl0lD/gdo0p0Vk8aVUBwdSWmMy66S6VdU5oNMOGNX2Esr8zvsJmh +gP8L8mJMcCaY +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_4[] = { + 0x30, 0x82, 0x04, 0x25, 0x30, 0x82, 0x03, 0x0d, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x77, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, + 0x38, 0x32, 0x39, 0x32, 0x31, 0x33, 0x39, 0x33, 0x32, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x31, 0x33, 0x39, 0x33, 0x32, + 0x5a, 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x17, 0x52, 0x61, 0x70, 0x69, 0x64, 0x53, 0x53, 0x4c, 0x20, + 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, + 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, + 0x54, 0x9b, 0xd9, 0x58, 0x5d, 0x1e, 0x2c, 0x56, 0xc6, 0xd5, 0xe8, 0x7f, + 0xf4, 0x7d, 0x16, 0x03, 0xff, 0xd0, 0x8b, 0x5a, 0xe4, 0x8e, 0xa7, 0xdd, + 0x54, 0x2e, 0xd4, 0x04, 0xc0, 0x5d, 0x98, 0x9c, 0x8d, 0x90, 0x0f, 0xbc, + 0x10, 0x65, 0x5f, 0xda, 0x9a, 0xd6, 0x44, 0x7c, 0xc0, 0x9f, 0xb5, 0xe9, + 0x4a, 0x8c, 0x0b, 0x06, 0x43, 0x04, 0xbb, 0xf4, 0x96, 0xe2, 0x26, 0xf6, + 0x61, 0x01, 0x91, 0x66, 0x31, 0x22, 0xc3, 0x34, 0x34, 0x5f, 0x3f, 0x3f, + 0x91, 0x2f, 0x44, 0x5f, 0xdc, 0xc7, 0x14, 0xb6, 0x03, 0x9f, 0x86, 0x4b, + 0x0e, 0xa3, 0xff, 0xa0, 0x80, 0x02, 0x83, 0xc3, 0xd3, 0x1f, 0x69, 0x52, + 0xd6, 0x9d, 0x64, 0x0f, 0xc9, 0x83, 0xe7, 0x1b, 0xc4, 0x70, 0xac, 0x94, + 0xe7, 0xc3, 0xa4, 0x6a, 0x2c, 0xbd, 0xb8, 0x9e, 0x69, 0xd8, 0xbe, 0x0a, + 0x8f, 0x16, 0x63, 0x5a, 0x68, 0x71, 0x80, 0x7b, 0x30, 0xde, 0x15, 0x04, + 0xbf, 0xcc, 0xd3, 0xbf, 0x3e, 0x48, 0x05, 0x55, 0x7a, 0xb3, 0xd7, 0x10, + 0x0c, 0x03, 0xfc, 0x9b, 0xfd, 0x08, 0xa7, 0x8c, 0x8c, 0xdb, 0xa7, 0x8e, + 0xf1, 0x1e, 0x63, 0xdc, 0xb3, 0x01, 0x2f, 0x7f, 0xaf, 0x57, 0xc3, 0x3c, + 0x48, 0xa7, 0x83, 0x68, 0x21, 0xa7, 0x2f, 0xe7, 0xa7, 0x3f, 0xf0, 0xb5, + 0x0c, 0xfc, 0xf5, 0x84, 0xd1, 0x53, 0xbc, 0x0e, 0x72, 0x4f, 0x60, 0x0c, + 0x42, 0xb8, 0x98, 0xad, 0x19, 0x88, 0x57, 0xd7, 0x04, 0xec, 0x87, 0xbf, + 0x7e, 0x87, 0x4e, 0xa3, 0x21, 0xf9, 0x53, 0xfd, 0x36, 0x98, 0x48, 0x8d, + 0xd6, 0xf8, 0xbb, 0x48, 0xf2, 0x29, 0xc8, 0x64, 0xd1, 0xcc, 0x54, 0x48, + 0x53, 0x8b, 0xaf, 0xb7, 0x65, 0x1e, 0xbf, 0x29, 0x33, 0x29, 0xd9, 0x29, + 0x60, 0x48, 0xf8, 0xff, 0x91, 0xbc, 0x57, 0x58, 0xe5, 0x35, 0x2e, 0xbb, + 0x69, 0xb6, 0x59, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1d, + 0x30, 0x82, 0x01, 0x19, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x18, 0x30, 0x16, 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, + 0xab, 0x05, 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, + 0x4e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0xc3, 0x9c, 0xf3, 0xfc, 0xd3, 0x46, 0x08, 0x34, 0xbb, 0xce, 0x46, 0x7f, + 0xa0, 0x7c, 0x5b, 0xf3, 0xe2, 0x08, 0xcb, 0x59, 0x30, 0x12, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, + 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, + 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x35, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, + 0x26, 0x86, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, + 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, + 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, + 0x63, 0x6f, 0x6d, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, + 0x30, 0x43, 0x30, 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, + 0x45, 0x01, 0x07, 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x58, 0x1e, 0xc6, 0x43, 0x32, 0xac, + 0xac, 0x2f, 0x93, 0x78, 0xb7, 0xea, 0xae, 0x54, 0x40, 0x47, 0x2d, 0x7e, + 0x78, 0x8d, 0x50, 0xf6, 0xf8, 0x66, 0xac, 0xd6, 0x4f, 0x73, 0xd6, 0x44, + 0xef, 0xaf, 0x0b, 0xcc, 0x5b, 0xc1, 0xf4, 0x4f, 0x9a, 0x8f, 0x49, 0x7e, + 0x60, 0xaf, 0xc2, 0x27, 0xc7, 0x16, 0xf1, 0xfb, 0x93, 0x81, 0x90, 0xa9, + 0x7c, 0xef, 0x6f, 0x7e, 0x6e, 0x45, 0x94, 0x16, 0x84, 0xbd, 0xec, 0x49, + 0xf1, 0xc4, 0x0e, 0xf4, 0xaf, 0x04, 0x59, 0x83, 0x87, 0x0f, 0x2c, 0x3b, + 0x97, 0xc3, 0x5a, 0x12, 0x9b, 0x7b, 0x04, 0x35, 0x7b, 0xa3, 0x95, 0x33, + 0x08, 0x7b, 0x93, 0x71, 0x22, 0x42, 0xb3, 0xa9, 0xd9, 0x6f, 0x4f, 0x81, + 0x92, 0xfc, 0x07, 0xb6, 0x79, 0xbc, 0x84, 0x4a, 0x9d, 0x77, 0x09, 0xf1, + 0xc5, 0x89, 0xf2, 0xf0, 0xb4, 0x9c, 0x54, 0xaa, 0x12, 0x7b, 0x0d, 0xba, + 0x4f, 0xef, 0x93, 0x19, 0xec, 0xef, 0x7d, 0x4e, 0x61, 0xa3, 0x8e, 0x76, + 0x9c, 0x59, 0xcf, 0x8c, 0x94, 0xb1, 0x84, 0x97, 0xf7, 0x1a, 0xb9, 0x07, + 0xb8, 0xb2, 0xc6, 0x4f, 0x13, 0x79, 0xdb, 0xbf, 0x4f, 0x51, 0x1b, 0x7f, + 0x69, 0x0d, 0x51, 0x2a, 0xc1, 0xd6, 0x15, 0xff, 0x37, 0x51, 0x34, 0x65, + 0x51, 0xf4, 0x1e, 0xbe, 0x38, 0x6a, 0xec, 0x0e, 0xab, 0xbf, 0x3d, 0x7b, + 0x39, 0x05, 0x7b, 0xf4, 0xf3, 0xfb, 0x1a, 0xa1, 0xd0, 0xc8, 0x7e, 0x4e, + 0x64, 0x8d, 0xcd, 0x8c, 0x61, 0x55, 0x90, 0xfe, 0x3a, 0xca, 0x5d, 0x25, + 0x0f, 0xf8, 0x1d, 0xa3, 0x4a, 0x74, 0x56, 0x4f, 0x1a, 0x55, 0x40, 0x70, + 0x75, 0x25, 0xa6, 0x33, 0x2e, 0xba, 0x4b, 0xa5, 0x5d, 0x53, 0x9a, 0x0d, + 0x30, 0xe1, 0x8d, 0x5f, 0x61, 0x2c, 0xaf, 0xcc, 0xef, 0xb0, 0x99, 0xa1, + 0x80, 0xff, 0x0b, 0xf2, 0x62, 0x4c, 0x70, 0x26, 0x98, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 146040 (0x23a78) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Validity + Not Before: Aug 29 22:24:58 2014 GMT + Not After : May 20 22:24:58 2022 GMT + Subject: C=US, O=GeoTrust Inc., OU=Domain Validated SSL, CN=GeoTrust DV SSL CA - G4 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:df:41:94:7a:da:f7:e4:31:43:b6:ea:01:1b:5c: + ce:63:ea:fa:6d:a3:d9:6a:ee:2d:9a:75:f9:d5:9c: + 5b:bd:34:df:d8:1c:c9:6d:d8:04:88:da:6e:b5:b7: + b5:f0:30:ae:40:d6:5d:fa:c4:53:c1:d4:22:9d:04: + 4e:11:a6:95:d5:45:7c:41:05:58:e0:4c:dd:f9:ee: + 55:bd:5f:46:dc:ad:13:08:9d:2c:e4:f7:82:e6:07: + 2b:9e:0e:8c:34:a1:ce:c4:a1:e0:81:70:86:00:06: + 3f:2d:ea:7c:9b:28:ae:1b:28:8b:39:09:d3:e7:f0: + 45:a4:b1:ba:11:67:90:55:7b:8f:de:ed:38:5c:a1: + e1:e3:83:c4:c3:72:91:4f:98:ee:1c:c2:80:aa:64: + a5:3e:83:62:1c:cc:e0:9e:f8:5a:c0:13:12:7d:a2: + a7:8b:a3:e7:9f:2a:d7:9b:ca:cb:ed:97:01:9c:28: + 84:51:04:50:41:bc:b4:fc:78:e9:1b:cf:14:ea:1f: + 0f:fc:2e:01:32:8d:b6:35:cb:0a:18:3b:ec:5a:3e: + 3c:1b:d3:99:43:1e:2f:f7:bd:f3:5b:12:b9:07:5e: + ed:3e:d1:a9:87:cc:77:72:27:d4:d9:75:a2:63:4b: + 93:36:bd:e5:5c:d7:bf:5f:79:0d:b3:32:a7:0b:b2: + 63:23 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Authority Key Identifier: + keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + + X509v3 Subject Key Identifier: + 0B:50:EC:77:EF:2A:9B:FF:EC:03:A1:0A:FF:AD:C6:E4:2A:18:C7:3E + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 CRL Distribution Points: + + Full Name: + URI:http://g.symcb.com/crls/gtglobal.crl + + Authority Information Access: + OCSP - URI:http://g.symcd.com + + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: http://www.geotrust.com/resources/cps + + Signature Algorithm: sha256WithRSAEncryption + 33:24:d5:90:aa:29:0c:35:b9:2f:c3:c7:42:93:c0:c6:10:4b: + 03:08:76:84:10:a2:e0:e7:53:12:27:f2:0a:da:7f:3a:dc:fd: + 5c:79:5a:8f:17:74:43:53:b1:d5:d1:5d:59:b9:a6:84:64:ca: + f1:3a:0a:59:96:10:bf:a9:81:57:8b:5c:87:dc:7f:e3:e4:bb: + 05:7a:a0:32:09:13:4e:10:81:28:1f:9c:03:62:bc:f4:01:b5: + 29:83:46:07:b9:e7:b8:5d:c8:e9:d1:dd:ad:3b:f8:34:db:c1: + d1:95:a9:91:18:ed:3c:2c:37:11:4d:cc:fe:53:3e:50:43:f9: + c3:56:41:ac:53:9b:6c:05:b2:9a:e2:e0:59:57:30:32:b6:26: + 4e:13:25:cd:fa:48:70:0f:75:55:60:11:f5:3b:d5:5e:5a:3c: + 8b:5b:0f:0f:62:42:48:61:85:8b:10:f4:c1:88:bf:7f:5f:8a: + c2:d7:cd:2b:94:5c:1f:34:4a:08:af:eb:ae:89:a8:48:75:55: + 95:1d:bb:c0:9a:01:b9:f4:03:22:3e:d4:e6:52:30:0d:67:b9: + c0:91:fd:2d:4c:30:8e:bd:8c:a5:04:91:bb:a4:ab:7f:0f:d8: + 6f:f0:66:00:c9:a3:5c:f5:b0:8f:83:e6:9c:5a:e6:b6:b9:c5: + bc:be:e4:02 +-----BEGIN CERTIFICATE----- +MIIERDCCAyygAwIBAgIDAjp4MA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMTQwODI5MjIyNDU4WhcNMjIwNTIwMjIyNDU4WjBmMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UECxMURG9tYWluIFZh +bGlkYXRlZCBTU0wxIDAeBgNVBAMTF0dlb1RydXN0IERWIFNTTCBDQSAtIEc0MIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA30GUetr35DFDtuoBG1zOY+r6 +baPZau4tmnX51ZxbvTTf2BzJbdgEiNputbe18DCuQNZd+sRTwdQinQROEaaV1UV8 +QQVY4Ezd+e5VvV9G3K0TCJ0s5PeC5gcrng6MNKHOxKHggXCGAAY/Lep8myiuGyiL +OQnT5/BFpLG6EWeQVXuP3u04XKHh44PEw3KRT5juHMKAqmSlPoNiHMzgnvhawBMS +faKni6PnnyrXm8rL7ZcBnCiEUQRQQby0/HjpG88U6h8P/C4BMo22NcsKGDvsWj48 +G9OZQx4v973zWxK5B17tPtGph8x3cifU2XWiY0uTNr3lXNe/X3kNszKnC7JjIwID +AQABo4IBHTCCARkwHwYDVR0jBBgwFoAUwHqYaI2J+6sFZAwRfap9ZbjKzE4wHQYD +VR0OBBYEFAtQ7HfvKpv/7AOhCv+txuQqGMc+MBIGA1UdEwEB/wQIMAYBAf8CAQAw +DgYDVR0PAQH/BAQDAgEGMDUGA1UdHwQuMCwwKqAooCaGJGh0dHA6Ly9nLnN5bWNi +LmNvbS9jcmxzL2d0Z2xvYmFsLmNybDAuBggrBgEFBQcBAQQiMCAwHgYIKwYBBQUH +MAGGEmh0dHA6Ly9nLnN5bWNkLmNvbTBMBgNVHSAERTBDMEEGCmCGSAGG+EUBBzYw +MzAxBggrBgEFBQcCARYlaHR0cDovL3d3dy5nZW90cnVzdC5jb20vcmVzb3VyY2Vz +L2NwczANBgkqhkiG9w0BAQsFAAOCAQEAMyTVkKopDDW5L8PHQpPAxhBLAwh2hBCi +4OdTEifyCtp/Otz9XHlajxd0Q1Ox1dFdWbmmhGTK8ToKWZYQv6mBV4tch9x/4+S7 +BXqgMgkTThCBKB+cA2K89AG1KYNGB7nnuF3I6dHdrTv4NNvB0ZWpkRjtPCw3EU3M +/lM+UEP5w1ZBrFObbAWymuLgWVcwMrYmThMlzfpIcA91VWAR9TvVXlo8i1sPD2JC +SGGFixD0wYi/f1+KwtfNK5RcHzRKCK/rromoSHVVlR27wJoBufQDIj7U5lIwDWe5 +wJH9LUwwjr2MpQSRu6Srfw/Yb/BmAMmjXPWwj4PmnFrmtrnFvL7kAg== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_5[] = { + 0x30, 0x82, 0x04, 0x44, 0x30, 0x82, 0x03, 0x2c, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x78, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, + 0x38, 0x32, 0x39, 0x32, 0x32, 0x32, 0x34, 0x35, 0x38, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x32, 0x32, 0x34, 0x35, 0x38, + 0x5a, 0x30, 0x66, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x14, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x53, 0x53, 0x4c, 0x31, + 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x47, 0x65, + 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x44, 0x56, 0x20, 0x53, 0x53, + 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x34, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xdf, 0x41, 0x94, 0x7a, 0xda, 0xf7, + 0xe4, 0x31, 0x43, 0xb6, 0xea, 0x01, 0x1b, 0x5c, 0xce, 0x63, 0xea, 0xfa, + 0x6d, 0xa3, 0xd9, 0x6a, 0xee, 0x2d, 0x9a, 0x75, 0xf9, 0xd5, 0x9c, 0x5b, + 0xbd, 0x34, 0xdf, 0xd8, 0x1c, 0xc9, 0x6d, 0xd8, 0x04, 0x88, 0xda, 0x6e, + 0xb5, 0xb7, 0xb5, 0xf0, 0x30, 0xae, 0x40, 0xd6, 0x5d, 0xfa, 0xc4, 0x53, + 0xc1, 0xd4, 0x22, 0x9d, 0x04, 0x4e, 0x11, 0xa6, 0x95, 0xd5, 0x45, 0x7c, + 0x41, 0x05, 0x58, 0xe0, 0x4c, 0xdd, 0xf9, 0xee, 0x55, 0xbd, 0x5f, 0x46, + 0xdc, 0xad, 0x13, 0x08, 0x9d, 0x2c, 0xe4, 0xf7, 0x82, 0xe6, 0x07, 0x2b, + 0x9e, 0x0e, 0x8c, 0x34, 0xa1, 0xce, 0xc4, 0xa1, 0xe0, 0x81, 0x70, 0x86, + 0x00, 0x06, 0x3f, 0x2d, 0xea, 0x7c, 0x9b, 0x28, 0xae, 0x1b, 0x28, 0x8b, + 0x39, 0x09, 0xd3, 0xe7, 0xf0, 0x45, 0xa4, 0xb1, 0xba, 0x11, 0x67, 0x90, + 0x55, 0x7b, 0x8f, 0xde, 0xed, 0x38, 0x5c, 0xa1, 0xe1, 0xe3, 0x83, 0xc4, + 0xc3, 0x72, 0x91, 0x4f, 0x98, 0xee, 0x1c, 0xc2, 0x80, 0xaa, 0x64, 0xa5, + 0x3e, 0x83, 0x62, 0x1c, 0xcc, 0xe0, 0x9e, 0xf8, 0x5a, 0xc0, 0x13, 0x12, + 0x7d, 0xa2, 0xa7, 0x8b, 0xa3, 0xe7, 0x9f, 0x2a, 0xd7, 0x9b, 0xca, 0xcb, + 0xed, 0x97, 0x01, 0x9c, 0x28, 0x84, 0x51, 0x04, 0x50, 0x41, 0xbc, 0xb4, + 0xfc, 0x78, 0xe9, 0x1b, 0xcf, 0x14, 0xea, 0x1f, 0x0f, 0xfc, 0x2e, 0x01, + 0x32, 0x8d, 0xb6, 0x35, 0xcb, 0x0a, 0x18, 0x3b, 0xec, 0x5a, 0x3e, 0x3c, + 0x1b, 0xd3, 0x99, 0x43, 0x1e, 0x2f, 0xf7, 0xbd, 0xf3, 0x5b, 0x12, 0xb9, + 0x07, 0x5e, 0xed, 0x3e, 0xd1, 0xa9, 0x87, 0xcc, 0x77, 0x72, 0x27, 0xd4, + 0xd9, 0x75, 0xa2, 0x63, 0x4b, 0x93, 0x36, 0xbd, 0xe5, 0x5c, 0xd7, 0xbf, + 0x5f, 0x79, 0x0d, 0xb3, 0x32, 0xa7, 0x0b, 0xb2, 0x63, 0x23, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1d, 0x30, 0x82, 0x01, 0x19, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, 0x0c, 0x11, + 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0b, 0x50, 0xec, 0x77, 0xef, + 0x2a, 0x9b, 0xff, 0xec, 0x03, 0xa1, 0x0a, 0xff, 0xad, 0xc6, 0xe4, 0x2a, + 0x18, 0xc7, 0x3e, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x35, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2e, + 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, 0x26, 0x86, 0x24, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, 0x74, + 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x2e, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x22, + 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, + 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4c, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, + 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30, + 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, + 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, + 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, + 0x33, 0x24, 0xd5, 0x90, 0xaa, 0x29, 0x0c, 0x35, 0xb9, 0x2f, 0xc3, 0xc7, + 0x42, 0x93, 0xc0, 0xc6, 0x10, 0x4b, 0x03, 0x08, 0x76, 0x84, 0x10, 0xa2, + 0xe0, 0xe7, 0x53, 0x12, 0x27, 0xf2, 0x0a, 0xda, 0x7f, 0x3a, 0xdc, 0xfd, + 0x5c, 0x79, 0x5a, 0x8f, 0x17, 0x74, 0x43, 0x53, 0xb1, 0xd5, 0xd1, 0x5d, + 0x59, 0xb9, 0xa6, 0x84, 0x64, 0xca, 0xf1, 0x3a, 0x0a, 0x59, 0x96, 0x10, + 0xbf, 0xa9, 0x81, 0x57, 0x8b, 0x5c, 0x87, 0xdc, 0x7f, 0xe3, 0xe4, 0xbb, + 0x05, 0x7a, 0xa0, 0x32, 0x09, 0x13, 0x4e, 0x10, 0x81, 0x28, 0x1f, 0x9c, + 0x03, 0x62, 0xbc, 0xf4, 0x01, 0xb5, 0x29, 0x83, 0x46, 0x07, 0xb9, 0xe7, + 0xb8, 0x5d, 0xc8, 0xe9, 0xd1, 0xdd, 0xad, 0x3b, 0xf8, 0x34, 0xdb, 0xc1, + 0xd1, 0x95, 0xa9, 0x91, 0x18, 0xed, 0x3c, 0x2c, 0x37, 0x11, 0x4d, 0xcc, + 0xfe, 0x53, 0x3e, 0x50, 0x43, 0xf9, 0xc3, 0x56, 0x41, 0xac, 0x53, 0x9b, + 0x6c, 0x05, 0xb2, 0x9a, 0xe2, 0xe0, 0x59, 0x57, 0x30, 0x32, 0xb6, 0x26, + 0x4e, 0x13, 0x25, 0xcd, 0xfa, 0x48, 0x70, 0x0f, 0x75, 0x55, 0x60, 0x11, + 0xf5, 0x3b, 0xd5, 0x5e, 0x5a, 0x3c, 0x8b, 0x5b, 0x0f, 0x0f, 0x62, 0x42, + 0x48, 0x61, 0x85, 0x8b, 0x10, 0xf4, 0xc1, 0x88, 0xbf, 0x7f, 0x5f, 0x8a, + 0xc2, 0xd7, 0xcd, 0x2b, 0x94, 0x5c, 0x1f, 0x34, 0x4a, 0x08, 0xaf, 0xeb, + 0xae, 0x89, 0xa8, 0x48, 0x75, 0x55, 0x95, 0x1d, 0xbb, 0xc0, 0x9a, 0x01, + 0xb9, 0xf4, 0x03, 0x22, 0x3e, 0xd4, 0xe6, 0x52, 0x30, 0x0d, 0x67, 0xb9, + 0xc0, 0x91, 0xfd, 0x2d, 0x4c, 0x30, 0x8e, 0xbd, 0x8c, 0xa5, 0x04, 0x91, + 0xbb, 0xa4, 0xab, 0x7f, 0x0f, 0xd8, 0x6f, 0xf0, 0x66, 0x00, 0xc9, 0xa3, + 0x5c, 0xf5, 0xb0, 0x8f, 0x83, 0xe6, 0x9c, 0x5a, 0xe6, 0xb6, 0xb9, 0xc5, + 0xbc, 0xbe, 0xe4, 0x02, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 33:65:50:08:79:ad:73:e2:30:b9:e0:1d:0d:7f:ac:91 + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com + Validity + Not Before: Nov 17 00:00:00 2006 GMT + Not After : Dec 30 23:59:59 2020 GMT + Subject: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2006 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:ac:a0:f0:fb:80:59:d4:9c:c7:a4:cf:9d:a1:59: + 73:09:10:45:0c:0d:2c:6e:68:f1:6c:5b:48:68:49: + 59:37:fc:0b:33:19:c2:77:7f:cc:10:2d:95:34:1c: + e6:eb:4d:09:a7:1c:d2:b8:c9:97:36:02:b7:89:d4: + 24:5f:06:c0:cc:44:94:94:8d:02:62:6f:eb:5a:dd: + 11:8d:28:9a:5c:84:90:10:7a:0d:bd:74:66:2f:6a: + 38:a0:e2:d5:54:44:eb:1d:07:9f:07:ba:6f:ee:e9: + fd:4e:0b:29:f5:3e:84:a0:01:f1:9c:ab:f8:1c:7e: + 89:a4:e8:a1:d8:71:65:0d:a3:51:7b:ee:bc:d2:22: + 60:0d:b9:5b:9d:df:ba:fc:51:5b:0b:af:98:b2:e9: + 2e:e9:04:e8:62:87:de:2b:c8:d7:4e:c1:4c:64:1e: + dd:cf:87:58:ba:4a:4f:ca:68:07:1d:1c:9d:4a:c6: + d5:2f:91:cc:7c:71:72:1c:c5:c0:67:eb:32:fd:c9: + 92:5c:94:da:85:c0:9b:bf:53:7d:2b:09:f4:8c:9d: + 91:1f:97:6a:52:cb:de:09:36:a4:77:d8:7b:87:50: + 44:d5:3e:6e:29:69:fb:39:49:26:1e:09:a5:80:7b: + 40:2d:eb:e8:27:85:c9:fe:61:fd:7e:e6:7c:97:1d: + d5:9d + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.thawte.com/cps + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 7B:5B:45:CF:AF:CE:CB:7A:FD:31:92:1A:6A:B6:F3:46:EB:57:48:50 + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.thawte.com/ThawtePremiumServerCA.crl + + Signature Algorithm: sha1WithRSAEncryption + 84:a8:4c:c9:3e:2a:bc:9a:e2:cc:8f:0b:b2:25:77:c4:61:89: + 89:63:5a:d4:a3:15:40:d4:fb:5e:3f:b4:43:ea:63:17:2b:6b: + 99:74:9e:09:a8:dd:d4:56:15:2e:7a:79:31:5f:63:96:53:1b: + 34:d9:15:ea:4f:6d:70:ca:be:f6:82:a9:ed:da:85:77:cc:76: + 1c:6a:81:0a:21:d8:41:99:7f:5e:2e:82:c1:e8:aa:f7:93:81: + 05:aa:92:b4:1f:b7:9a:c0:07:17:f5:cb:c6:b4:4c:0e:d7:56: + dc:71:20:74:38:d6:74:c6:d6:8f:6b:af:8b:8d:a0:6c:29:0b: + 61:e0 +-----BEGIN CERTIFICATE----- +MIIERTCCA66gAwIBAgIQM2VQCHmtc+IwueAdDX+skTANBgkqhkiG9w0BAQUFADCB +zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ +Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE +CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhh +d3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl +cnZlckB0aGF3dGUuY29tMB4XDTA2MTExNzAwMDAwMFoXDTIwMTIzMDIzNTk1OVow +gakxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwx0aGF3dGUsIEluYy4xKDAmBgNVBAsT +H0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xODA2BgNVBAsTLyhjKSAy +MDA2IHRoYXd0ZSwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYD +VQQDExZ0aGF3dGUgUHJpbWFyeSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEArKDw+4BZ1JzHpM+doVlzCRBFDA0sbmjxbFtIaElZN/wLMxnC +d3/MEC2VNBzm600JpxzSuMmXNgK3idQkXwbAzESUlI0CYm/rWt0RjSiaXISQEHoN +vXRmL2o4oOLVVETrHQefB7pv7un9Tgsp9T6EoAHxnKv4HH6JpOih2HFlDaNRe+68 +0iJgDblbnd+6/FFbC6+Ysuku6QToYofeK8jXTsFMZB7dz4dYukpPymgHHRydSsbV +L5HMfHFyHMXAZ+sy/cmSXJTahcCbv1N9Kwn0jJ2RH5dqUsveCTakd9h7h1BE1T5u +KWn7OUkmHgmlgHtALevoJ4XJ/mH9fuZ8lx3VnQIDAQABo4HCMIG/MA8GA1UdEwEB +/wQFMAMBAf8wOwYDVR0gBDQwMjAwBgRVHSAAMCgwJgYIKwYBBQUHAgEWGmh0dHBz +Oi8vd3d3LnRoYXd0ZS5jb20vY3BzMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +e1tFz6/Oy3r9MZIaarbzRutXSFAwQAYDVR0fBDkwNzA1oDOgMYYvaHR0cDovL2Ny +bC50aGF3dGUuY29tL1RoYXd0ZVByZW1pdW1TZXJ2ZXJDQS5jcmwwDQYJKoZIhvcN +AQEFBQADgYEAhKhMyT4qvJrizI8LsiV3xGGJiWNa1KMVQNT7Xj+0Q+pjFytrmXSe +Cajd1FYVLnp5MV9jllMbNNkV6k9tcMq+9oKp7dqFd8x2HGqBCiHYQZl/Xi6Cweiq +95OBBaqStB+3msAHF/XLxrRMDtdW3HEgdDjWdMbWj2uvi42gbCkLYeA= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_6[] = { + 0x30, 0x82, 0x04, 0x45, 0x30, 0x82, 0x03, 0xae, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x33, 0x65, 0x50, 0x08, 0x79, 0xad, 0x73, 0xe2, 0x30, + 0xb9, 0xe0, 0x1d, 0x0d, 0x7f, 0xac, 0x91, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, + 0xce, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x5a, 0x41, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, + 0x0c, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x43, 0x61, 0x70, + 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, + 0x43, 0x61, 0x70, 0x65, 0x20, 0x54, 0x6f, 0x77, 0x6e, 0x31, 0x1d, 0x30, + 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x54, 0x68, 0x61, 0x77, + 0x74, 0x65, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e, + 0x67, 0x20, 0x63, 0x63, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x1f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x21, + 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x54, 0x68, 0x61, + 0x77, 0x74, 0x65, 0x20, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x20, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x31, 0x28, 0x30, + 0x26, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, + 0x16, 0x19, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x2d, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x40, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x31, + 0x37, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, + 0x31, 0x32, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, + 0x81, 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x1f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, + 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, + 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, + 0x30, 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, + 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, + 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, + 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xac, 0xa0, 0xf0, 0xfb, 0x80, 0x59, 0xd4, 0x9c, 0xc7, 0xa4, 0xcf, 0x9d, + 0xa1, 0x59, 0x73, 0x09, 0x10, 0x45, 0x0c, 0x0d, 0x2c, 0x6e, 0x68, 0xf1, + 0x6c, 0x5b, 0x48, 0x68, 0x49, 0x59, 0x37, 0xfc, 0x0b, 0x33, 0x19, 0xc2, + 0x77, 0x7f, 0xcc, 0x10, 0x2d, 0x95, 0x34, 0x1c, 0xe6, 0xeb, 0x4d, 0x09, + 0xa7, 0x1c, 0xd2, 0xb8, 0xc9, 0x97, 0x36, 0x02, 0xb7, 0x89, 0xd4, 0x24, + 0x5f, 0x06, 0xc0, 0xcc, 0x44, 0x94, 0x94, 0x8d, 0x02, 0x62, 0x6f, 0xeb, + 0x5a, 0xdd, 0x11, 0x8d, 0x28, 0x9a, 0x5c, 0x84, 0x90, 0x10, 0x7a, 0x0d, + 0xbd, 0x74, 0x66, 0x2f, 0x6a, 0x38, 0xa0, 0xe2, 0xd5, 0x54, 0x44, 0xeb, + 0x1d, 0x07, 0x9f, 0x07, 0xba, 0x6f, 0xee, 0xe9, 0xfd, 0x4e, 0x0b, 0x29, + 0xf5, 0x3e, 0x84, 0xa0, 0x01, 0xf1, 0x9c, 0xab, 0xf8, 0x1c, 0x7e, 0x89, + 0xa4, 0xe8, 0xa1, 0xd8, 0x71, 0x65, 0x0d, 0xa3, 0x51, 0x7b, 0xee, 0xbc, + 0xd2, 0x22, 0x60, 0x0d, 0xb9, 0x5b, 0x9d, 0xdf, 0xba, 0xfc, 0x51, 0x5b, + 0x0b, 0xaf, 0x98, 0xb2, 0xe9, 0x2e, 0xe9, 0x04, 0xe8, 0x62, 0x87, 0xde, + 0x2b, 0xc8, 0xd7, 0x4e, 0xc1, 0x4c, 0x64, 0x1e, 0xdd, 0xcf, 0x87, 0x58, + 0xba, 0x4a, 0x4f, 0xca, 0x68, 0x07, 0x1d, 0x1c, 0x9d, 0x4a, 0xc6, 0xd5, + 0x2f, 0x91, 0xcc, 0x7c, 0x71, 0x72, 0x1c, 0xc5, 0xc0, 0x67, 0xeb, 0x32, + 0xfd, 0xc9, 0x92, 0x5c, 0x94, 0xda, 0x85, 0xc0, 0x9b, 0xbf, 0x53, 0x7d, + 0x2b, 0x09, 0xf4, 0x8c, 0x9d, 0x91, 0x1f, 0x97, 0x6a, 0x52, 0xcb, 0xde, + 0x09, 0x36, 0xa4, 0x77, 0xd8, 0x7b, 0x87, 0x50, 0x44, 0xd5, 0x3e, 0x6e, + 0x29, 0x69, 0xfb, 0x39, 0x49, 0x26, 0x1e, 0x09, 0xa5, 0x80, 0x7b, 0x40, + 0x2d, 0xeb, 0xe8, 0x27, 0x85, 0xc9, 0xfe, 0x61, 0xfd, 0x7e, 0xe6, 0x7c, + 0x97, 0x1d, 0xd5, 0x9d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xc2, + 0x30, 0x81, 0xbf, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x3b, 0x06, 0x03, + 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, 0x04, 0x55, + 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, + 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x7b, 0x5b, 0x45, 0xcf, 0xaf, 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, + 0x6a, 0xb6, 0xf3, 0x46, 0xeb, 0x57, 0x48, 0x50, 0x30, 0x40, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x39, 0x30, 0x37, 0x30, 0x35, 0xa0, 0x33, 0xa0, + 0x31, 0x86, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x72, 0x65, 0x6d, 0x69, + 0x75, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x41, 0x2e, 0x63, + 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x84, 0xa8, 0x4c, + 0xc9, 0x3e, 0x2a, 0xbc, 0x9a, 0xe2, 0xcc, 0x8f, 0x0b, 0xb2, 0x25, 0x77, + 0xc4, 0x61, 0x89, 0x89, 0x63, 0x5a, 0xd4, 0xa3, 0x15, 0x40, 0xd4, 0xfb, + 0x5e, 0x3f, 0xb4, 0x43, 0xea, 0x63, 0x17, 0x2b, 0x6b, 0x99, 0x74, 0x9e, + 0x09, 0xa8, 0xdd, 0xd4, 0x56, 0x15, 0x2e, 0x7a, 0x79, 0x31, 0x5f, 0x63, + 0x96, 0x53, 0x1b, 0x34, 0xd9, 0x15, 0xea, 0x4f, 0x6d, 0x70, 0xca, 0xbe, + 0xf6, 0x82, 0xa9, 0xed, 0xda, 0x85, 0x77, 0xcc, 0x76, 0x1c, 0x6a, 0x81, + 0x0a, 0x21, 0xd8, 0x41, 0x99, 0x7f, 0x5e, 0x2e, 0x82, 0xc1, 0xe8, 0xaa, + 0xf7, 0x93, 0x81, 0x05, 0xaa, 0x92, 0xb4, 0x1f, 0xb7, 0x9a, 0xc0, 0x07, + 0x17, 0xf5, 0xcb, 0xc6, 0xb4, 0x4c, 0x0e, 0xd7, 0x56, 0xdc, 0x71, 0x20, + 0x74, 0x38, 0xd6, 0x74, 0xc6, 0xd6, 0x8f, 0x6b, 0xaf, 0x8b, 0x8d, 0xa0, + 0x6c, 0x29, 0x0b, 0x61, 0xe0, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 06:7f:94:57:85:87:e8:ac:77:de:b2:53:32:5b:bc:99:8b:56:0d + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=Amazon, CN=Amazon Root CA 1 + Validity + Not Before: Oct 22 00:00:00 2015 GMT + Not After : Oct 19 00:00:00 2025 GMT + Subject: C=US, O=Amazon, OU=Server CA 1B, CN=Amazon + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:c2:4e:16:67:dd:ce:bc:6a:c8:37:5a:ec:3a:30: + b0:1d:e6:d1:12:e8:12:28:48:cc:e8:29:c1:b9:6e: + 53:d5:a3:eb:03:39:1a:cc:77:87:f6:01:b9:d9:70: + cc:cf:6b:8d:e3:e3:03:71:86:99:6d:cb:a6:94:2a: + 4e:13:d6:a7:bd:04:ec:0a:16:3c:0a:eb:39:b1:c4: + b5:58:a3:b6:c7:56:25:ec:3e:52:7a:a8:e3:29:16: + 07:b9:6e:50:cf:fb:5f:31:f8:1d:ba:03:4a:62:89: + 03:ae:3e:47:f2:0f:27:91:e3:14:20:85:f8:fa:e9: + 8a:35:f5:5f:9e:99:4d:e7:6b:37:ef:a4:50:3e:44: + ec:fa:5a:85:66:07:9c:7e:17:6a:55:f3:17:8a:35: + 1e:ee:e9:ac:c3:75:4e:58:55:7d:53:6b:0a:6b:9b: + 14:42:d7:e5:ac:01:89:b3:ea:a3:fe:cf:c0:2b:0c: + 84:c2:d8:53:15:cb:67:f0:d0:88:ca:3a:d1:17:73: + f5:5f:9a:d4:c5:72:1e:7e:01:f1:98:30:63:2a:aa: + f2:7a:2d:c5:e2:02:1a:86:e5:32:3e:0e:bd:11:b4: + cf:3c:93:ef:17:50:10:9e:43:c2:06:2a:e0:0d:68: + be:d3:88:8b:4a:65:8c:4a:d4:c3:2e:4c:9b:55:f4: + 86:e5 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 59:A4:66:06:52:A0:7B:95:92:3C:A3:94:07:27:96:74:5B:F9:3D:D0 + X509v3 Authority Key Identifier: + keyid:84:18:CC:85:34:EC:BC:0C:94:94:2E:08:59:9C:C7:B2:10:4E:0A:08 + + Authority Information Access: + OCSP - URI:http://ocsp.rootca1.amazontrust.com + CA Issuers - URI:http://crt.rootca1.amazontrust.com/rootca1.cer + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.rootca1.amazontrust.com/rootca1.crl + + X509v3 Certificate Policies: + Policy: 2.23.140.1.2.1 + + Signature Algorithm: sha256WithRSAEncryption + 85:92:be:35:bb:79:cf:a3:81:42:1c:e4:e3:63:73:53:39:52: + 35:e7:d1:ad:fd:ae:99:8a:ac:89:12:2f:bb:e7:6f:9a:d5:4e: + 72:ea:20:30:61:f9:97:b2:cd:a5:27:02:45:a8:ca:76:3e:98: + 4a:83:9e:b6:e6:45:e0:f2:43:f6:08:de:6d:e8:6e:db:31:07: + 13:f0:2f:31:0d:93:6d:61:37:7b:58:f0:fc:51:98:91:28:02: + 4f:05:76:b7:d3:f0:1b:c2:e6:5e:d0:66:85:11:0f:2e:81:c6: + 10:81:29:fe:20:60:48:f3:f2:f0:84:13:53:65:35:15:11:6b: + 82:51:40:55:57:5f:18:b5:b0:22:3e:ad:f2:5e:a3:01:e3:c3: + b3:f9:cb:41:5a:e6:52:91:bb:e4:36:87:4f:2d:a9:a4:07:68: + 35:ba:94:72:cd:0e:ea:0e:7d:57:f2:79:fc:37:c5:7b:60:9e: + b2:eb:c0:2d:90:77:0d:49:10:27:a5:38:ad:c4:12:a3:b4:a3: + c8:48:b3:15:0b:1e:e2:e2:19:dc:c4:76:52:c8:bc:8a:41:78: + 70:d9:6d:97:b3:4a:8b:78:2d:5e:b4:0f:a3:4c:60:ca:e1:47: + cb:78:2d:12:17:b1:52:8b:ca:39:2c:bd:b5:2f:c2:33:02:96: + ab:da:94:7f +-----BEGIN CERTIFICATE----- +MIIESTCCAzGgAwIBAgITBn+UV4WH6Kx33rJTMlu8mYtWDTANBgkqhkiG9w0BAQsF +ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 +b24gUm9vdCBDQSAxMB4XDTE1MTAyMjAwMDAwMFoXDTI1MTAxOTAwMDAwMFowRjEL +MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEVMBMGA1UECxMMU2VydmVyIENB +IDFCMQ8wDQYDVQQDEwZBbWF6b24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQDCThZn3c68asg3Wuw6MLAd5tES6BIoSMzoKcG5blPVo+sDORrMd4f2AbnZ +cMzPa43j4wNxhplty6aUKk4T1qe9BOwKFjwK6zmxxLVYo7bHViXsPlJ6qOMpFge5 +blDP+18x+B26A0piiQOuPkfyDyeR4xQghfj66Yo19V+emU3nazfvpFA+ROz6WoVm +B5x+F2pV8xeKNR7u6azDdU5YVX1TawprmxRC1+WsAYmz6qP+z8ArDITC2FMVy2fw +0IjKOtEXc/VfmtTFch5+AfGYMGMqqvJ6LcXiAhqG5TI+Dr0RtM88k+8XUBCeQ8IG +KuANaL7TiItKZYxK1MMuTJtV9IblAgMBAAGjggE7MIIBNzASBgNVHRMBAf8ECDAG +AQH/AgEAMA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUWaRmBlKge5WSPKOUByeW +dFv5PdAwHwYDVR0jBBgwFoAUhBjMhTTsvAyUlC4IWZzHshBOCggwewYIKwYBBQUH +AQEEbzBtMC8GCCsGAQUFBzABhiNodHRwOi8vb2NzcC5yb290Y2ExLmFtYXpvbnRy +dXN0LmNvbTA6BggrBgEFBQcwAoYuaHR0cDovL2NydC5yb290Y2ExLmFtYXpvbnRy +dXN0LmNvbS9yb290Y2ExLmNlcjA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3Js +LnJvb3RjYTEuYW1hem9udHJ1c3QuY29tL3Jvb3RjYTEuY3JsMBMGA1UdIAQMMAow +CAYGZ4EMAQIBMA0GCSqGSIb3DQEBCwUAA4IBAQCFkr41u3nPo4FCHOTjY3NTOVI1 +59Gt/a6ZiqyJEi+752+a1U5y6iAwYfmXss2lJwJFqMp2PphKg5625kXg8kP2CN5t +6G7bMQcT8C8xDZNtYTd7WPD8UZiRKAJPBXa30/AbwuZe0GaFEQ8ugcYQgSn+IGBI +8/LwhBNTZTUVEWuCUUBVV18YtbAiPq3yXqMB48Oz+ctBWuZSkbvkNodPLamkB2g1 +upRyzQ7qDn1X8nn8N8V7YJ6y68AtkHcNSRAnpTitxBKjtKPISLMVCx7i4hncxHZS +yLyKQXhw2W2Xs0qLeC1etA+jTGDK4UfLeC0SF7FSi8o5LL21L8IzApar2pR/ +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_7[] = { + 0x30, 0x82, 0x04, 0x49, 0x30, 0x82, 0x03, 0x31, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x13, 0x06, 0x7f, 0x94, 0x57, 0x85, 0x87, 0xe8, 0xac, 0x77, + 0xde, 0xb2, 0x53, 0x32, 0x5b, 0xbc, 0x99, 0x8b, 0x56, 0x0d, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x30, 0x39, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x06, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x31, 0x19, 0x30, + 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, 0x41, 0x6d, 0x61, 0x7a, + 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x31, + 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x35, 0x31, 0x30, 0x32, 0x32, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x35, 0x31, 0x30, 0x31, + 0x39, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x46, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x06, 0x41, 0x6d, + 0x61, 0x7a, 0x6f, 0x6e, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, + 0x20, 0x31, 0x42, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x06, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xc2, 0x4e, 0x16, 0x67, 0xdd, 0xce, 0xbc, + 0x6a, 0xc8, 0x37, 0x5a, 0xec, 0x3a, 0x30, 0xb0, 0x1d, 0xe6, 0xd1, 0x12, + 0xe8, 0x12, 0x28, 0x48, 0xcc, 0xe8, 0x29, 0xc1, 0xb9, 0x6e, 0x53, 0xd5, + 0xa3, 0xeb, 0x03, 0x39, 0x1a, 0xcc, 0x77, 0x87, 0xf6, 0x01, 0xb9, 0xd9, + 0x70, 0xcc, 0xcf, 0x6b, 0x8d, 0xe3, 0xe3, 0x03, 0x71, 0x86, 0x99, 0x6d, + 0xcb, 0xa6, 0x94, 0x2a, 0x4e, 0x13, 0xd6, 0xa7, 0xbd, 0x04, 0xec, 0x0a, + 0x16, 0x3c, 0x0a, 0xeb, 0x39, 0xb1, 0xc4, 0xb5, 0x58, 0xa3, 0xb6, 0xc7, + 0x56, 0x25, 0xec, 0x3e, 0x52, 0x7a, 0xa8, 0xe3, 0x29, 0x16, 0x07, 0xb9, + 0x6e, 0x50, 0xcf, 0xfb, 0x5f, 0x31, 0xf8, 0x1d, 0xba, 0x03, 0x4a, 0x62, + 0x89, 0x03, 0xae, 0x3e, 0x47, 0xf2, 0x0f, 0x27, 0x91, 0xe3, 0x14, 0x20, + 0x85, 0xf8, 0xfa, 0xe9, 0x8a, 0x35, 0xf5, 0x5f, 0x9e, 0x99, 0x4d, 0xe7, + 0x6b, 0x37, 0xef, 0xa4, 0x50, 0x3e, 0x44, 0xec, 0xfa, 0x5a, 0x85, 0x66, + 0x07, 0x9c, 0x7e, 0x17, 0x6a, 0x55, 0xf3, 0x17, 0x8a, 0x35, 0x1e, 0xee, + 0xe9, 0xac, 0xc3, 0x75, 0x4e, 0x58, 0x55, 0x7d, 0x53, 0x6b, 0x0a, 0x6b, + 0x9b, 0x14, 0x42, 0xd7, 0xe5, 0xac, 0x01, 0x89, 0xb3, 0xea, 0xa3, 0xfe, + 0xcf, 0xc0, 0x2b, 0x0c, 0x84, 0xc2, 0xd8, 0x53, 0x15, 0xcb, 0x67, 0xf0, + 0xd0, 0x88, 0xca, 0x3a, 0xd1, 0x17, 0x73, 0xf5, 0x5f, 0x9a, 0xd4, 0xc5, + 0x72, 0x1e, 0x7e, 0x01, 0xf1, 0x98, 0x30, 0x63, 0x2a, 0xaa, 0xf2, 0x7a, + 0x2d, 0xc5, 0xe2, 0x02, 0x1a, 0x86, 0xe5, 0x32, 0x3e, 0x0e, 0xbd, 0x11, + 0xb4, 0xcf, 0x3c, 0x93, 0xef, 0x17, 0x50, 0x10, 0x9e, 0x43, 0xc2, 0x06, + 0x2a, 0xe0, 0x0d, 0x68, 0xbe, 0xd3, 0x88, 0x8b, 0x4a, 0x65, 0x8c, 0x4a, + 0xd4, 0xc3, 0x2e, 0x4c, 0x9b, 0x55, 0xf4, 0x86, 0xe5, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x3b, 0x30, 0x82, 0x01, 0x37, 0x30, 0x12, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, + 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x59, 0xa4, 0x66, + 0x06, 0x52, 0xa0, 0x7b, 0x95, 0x92, 0x3c, 0xa3, 0x94, 0x07, 0x27, 0x96, + 0x74, 0x5b, 0xf9, 0x3d, 0xd0, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, + 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x84, 0x18, 0xcc, 0x85, 0x34, 0xec, + 0xbc, 0x0c, 0x94, 0x94, 0x2e, 0x08, 0x59, 0x9c, 0xc7, 0xb2, 0x10, 0x4e, + 0x0a, 0x08, 0x30, 0x7b, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x01, 0x01, 0x04, 0x6f, 0x30, 0x6d, 0x30, 0x2f, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x23, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x72, 0x6f, 0x6f, 0x74, + 0x63, 0x61, 0x31, 0x2e, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x3a, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2e, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x74, 0x2e, 0x72, 0x6f, 0x6f, 0x74, + 0x63, 0x61, 0x31, 0x2e, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, + 0x63, 0x61, 0x31, 0x2e, 0x63, 0x65, 0x72, 0x30, 0x3f, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x38, 0x30, 0x36, 0x30, 0x34, 0xa0, 0x32, 0xa0, 0x30, + 0x86, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, + 0x2e, 0x72, 0x6f, 0x6f, 0x74, 0x63, 0x61, 0x31, 0x2e, 0x61, 0x6d, 0x61, + 0x7a, 0x6f, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x63, 0x61, 0x31, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x13, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x0c, 0x30, 0x0a, 0x30, + 0x08, 0x06, 0x06, 0x67, 0x81, 0x0c, 0x01, 0x02, 0x01, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x01, 0x00, 0x85, 0x92, 0xbe, 0x35, 0xbb, 0x79, 0xcf, + 0xa3, 0x81, 0x42, 0x1c, 0xe4, 0xe3, 0x63, 0x73, 0x53, 0x39, 0x52, 0x35, + 0xe7, 0xd1, 0xad, 0xfd, 0xae, 0x99, 0x8a, 0xac, 0x89, 0x12, 0x2f, 0xbb, + 0xe7, 0x6f, 0x9a, 0xd5, 0x4e, 0x72, 0xea, 0x20, 0x30, 0x61, 0xf9, 0x97, + 0xb2, 0xcd, 0xa5, 0x27, 0x02, 0x45, 0xa8, 0xca, 0x76, 0x3e, 0x98, 0x4a, + 0x83, 0x9e, 0xb6, 0xe6, 0x45, 0xe0, 0xf2, 0x43, 0xf6, 0x08, 0xde, 0x6d, + 0xe8, 0x6e, 0xdb, 0x31, 0x07, 0x13, 0xf0, 0x2f, 0x31, 0x0d, 0x93, 0x6d, + 0x61, 0x37, 0x7b, 0x58, 0xf0, 0xfc, 0x51, 0x98, 0x91, 0x28, 0x02, 0x4f, + 0x05, 0x76, 0xb7, 0xd3, 0xf0, 0x1b, 0xc2, 0xe6, 0x5e, 0xd0, 0x66, 0x85, + 0x11, 0x0f, 0x2e, 0x81, 0xc6, 0x10, 0x81, 0x29, 0xfe, 0x20, 0x60, 0x48, + 0xf3, 0xf2, 0xf0, 0x84, 0x13, 0x53, 0x65, 0x35, 0x15, 0x11, 0x6b, 0x82, + 0x51, 0x40, 0x55, 0x57, 0x5f, 0x18, 0xb5, 0xb0, 0x22, 0x3e, 0xad, 0xf2, + 0x5e, 0xa3, 0x01, 0xe3, 0xc3, 0xb3, 0xf9, 0xcb, 0x41, 0x5a, 0xe6, 0x52, + 0x91, 0xbb, 0xe4, 0x36, 0x87, 0x4f, 0x2d, 0xa9, 0xa4, 0x07, 0x68, 0x35, + 0xba, 0x94, 0x72, 0xcd, 0x0e, 0xea, 0x0e, 0x7d, 0x57, 0xf2, 0x79, 0xfc, + 0x37, 0xc5, 0x7b, 0x60, 0x9e, 0xb2, 0xeb, 0xc0, 0x2d, 0x90, 0x77, 0x0d, + 0x49, 0x10, 0x27, 0xa5, 0x38, 0xad, 0xc4, 0x12, 0xa3, 0xb4, 0xa3, 0xc8, + 0x48, 0xb3, 0x15, 0x0b, 0x1e, 0xe2, 0xe2, 0x19, 0xdc, 0xc4, 0x76, 0x52, + 0xc8, 0xbc, 0x8a, 0x41, 0x78, 0x70, 0xd9, 0x6d, 0x97, 0xb3, 0x4a, 0x8b, + 0x78, 0x2d, 0x5e, 0xb4, 0x0f, 0xa3, 0x4c, 0x60, 0xca, 0xe1, 0x47, 0xcb, + 0x78, 0x2d, 0x12, 0x17, 0xb1, 0x52, 0x8b, 0xca, 0x39, 0x2c, 0xbd, 0xb5, + 0x2f, 0xc2, 0x33, 0x02, 0x96, 0xab, 0xda, 0x94, 0x7f, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 146033 (0x23a71) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Validity + Not Before: Dec 11 23:45:51 2013 GMT + Not After : May 20 23:45:51 2022 GMT + Subject: C=US, O=GeoTrust Inc., CN=RapidSSL SHA256 CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:bb:58:c1:12:01:2e:97:d8:7d:18:aa:c8:c2:e5: + 85:e2:17:6c:60:2e:c9:8d:31:05:39:1a:06:98:56: + dd:54:d7:11:8c:59:5b:3d:b1:54:ae:4b:21:85:32: + 16:5f:54:86:e6:d9:b1:d8:60:89:6b:58:be:72:da: + a0:00:42:76:b1:27:59:4c:cd:e3:ba:d4:5c:d9:a6: + 7f:bb:2b:75:d5:46:44:bd:ec:40:5c:59:b7:dd:59: + 9f:f1:6a:f7:06:fc:d6:2f:19:8a:95:12:ba:9a:ca: + d5:30:d2:38:fc:19:3b:5b:15:3b:36:d0:43:4d:d1: + 65:a1:d4:8b:c1:60:41:b3:d6:70:17:cc:39:c0:9c: + 0c:a0:3d:b7:11:22:4e:ce:d9:a9:7a:d2:2a:62:9c: + a0:0b:4e:2a:d7:c3:61:5a:85:dd:5c:10:b9:54:3d: + 2d:03:f8:49:f0:bc:92:b7:b7:9c:31:c7:e9:b8:aa: + 82:0b:05:b9:31:cd:08:5b:bb:22:0b:f6:9c:8e:8a: + 55:1c:76:43:76:f0:e2:6e:f0:df:a8:29:75:e7:c8: + a4:87:8b:6a:f1:bb:08:c9:36:18:65:ee:50:43:b8: + 5d:72:d5:28:39:e1:53:3e:25:2c:da:2b:4f:dd:8a: + 9e:50:50:e0:6f:9a:c4:d5:19:26:89:01:75:73:09: + 9b:3b + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Authority Key Identifier: + keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + + X509v3 Subject Key Identifier: + 97:C2:27:50:9E:C2:C9:EC:0C:88:32:C8:7C:AD:E2:A6:01:4F:DA:6F + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 CRL Distribution Points: + + Full Name: + URI:http://g1.symcb.com/crls/gtglobal.crl + + Authority Information Access: + OCSP - URI:http://g2.symcb.com + + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: http://www.geotrust.com/resources/cps + + X509v3 Subject Alternative Name: + DirName:/CN=SymantecPKI-1-569 + Signature Algorithm: sha256WithRSAEncryption + 35:eb:e1:8b:20:56:94:ba:7a:bd:79:a9:f6:e3:fe:6e:38:b4: + 32:c1:a3:db:58:56:20:3e:7d:c7:3a:b1:67:69:d5:79:14:1b: + f6:fa:ec:60:f2:79:cd:0a:0c:60:8a:74:4c:a3:93:2a:a0:f0: + 51:7f:cd:e9:f9:92:fd:96:ab:45:f5:62:3d:3f:60:46:50:13: + 3d:20:13:18:2e:94:46:ae:d5:21:fe:43:a1:c9:23:fe:53:c4: + bf:1a:d8:ac:3a:ca:de:66:97:23:ae:d3:df:4a:4d:73:1f:6f: + 31:a2:51:04:16:6a:00:eb:f9:8d:43:81:f0:50:a1:1f:a6:ca: + 3a:f3:28:3c:5f:51:ac:d7:0a:45:77:4b:0e:52:62:1b:d8:38: + 51:a0:92:2d:3f:90:6e:c8:7e:40:9f:20:46:15:5d:e0:50:7c: + e1:76:af:5e:ed:11:d3:2f:13:b9:b8:25:a4:af:58:09:af:35: + b4:62:54:85:e3:48:de:bc:d2:90:7a:7a:a4:84:0d:a3:42:f2: + 51:c0:d4:ad:53:65:5d:6c:f8:3f:1f:06:f2:4f:cb:97:a0:4a: + 59:c6:78:d1:e8:03:b9:85:6d:2c:ba:e1:5f:b6:ad:2b:3e:25: + 79:c5:8b:56:d5:e3:09:80:ea:c1:27:c2:d9:0e:ec:47:0a:e9: + d0:ca:fc:d8 +-----BEGIN CERTIFICATE----- +MIIETTCCAzWgAwIBAgIDAjpxMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMTMxMjExMjM0NTUxWhcNMjIwNTIwMjM0NTUxWjBCMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSUmFwaWRTU0wg +U0hBMjU2IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1jBEgEu +l9h9GKrIwuWF4hdsYC7JjTEFORoGmFbdVNcRjFlbPbFUrkshhTIWX1SG5tmx2GCJ +a1i+ctqgAEJ2sSdZTM3jutRc2aZ/uyt11UZEvexAXFm33Vmf8Wr3BvzWLxmKlRK6 +msrVMNI4/Bk7WxU7NtBDTdFlodSLwWBBs9ZwF8w5wJwMoD23ESJOztmpetIqYpyg +C04q18NhWoXdXBC5VD0tA/hJ8LySt7ecMcfpuKqCCwW5Mc0IW7siC/acjopVHHZD +dvDibvDfqCl158ikh4tq8bsIyTYYZe5QQ7hdctUoOeFTPiUs2itP3YqeUFDgb5rE +1RkmiQF1cwmbOwIDAQABo4IBSjCCAUYwHwYDVR0jBBgwFoAUwHqYaI2J+6sFZAwR +fap9ZbjKzE4wHQYDVR0OBBYEFJfCJ1CewsnsDIgyyHyt4qYBT9pvMBIGA1UdEwEB +/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMDYGA1UdHwQvMC0wK6ApoCeGJWh0 +dHA6Ly9nMS5zeW1jYi5jb20vY3Jscy9ndGdsb2JhbC5jcmwwLwYIKwYBBQUHAQEE +IzAhMB8GCCsGAQUFBzABhhNodHRwOi8vZzIuc3ltY2IuY29tMEwGA1UdIARFMEMw +QQYKYIZIAYb4RQEHNjAzMDEGCCsGAQUFBwIBFiVodHRwOi8vd3d3Lmdlb3RydXN0 +LmNvbS9yZXNvdXJjZXMvY3BzMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFTeW1h +bnRlY1BLSS0xLTU2OTANBgkqhkiG9w0BAQsFAAOCAQEANevhiyBWlLp6vXmp9uP+ +bji0MsGj21hWID59xzqxZ2nVeRQb9vrsYPJ5zQoMYIp0TKOTKqDwUX/N6fmS/Zar +RfViPT9gRlATPSATGC6URq7VIf5Dockj/lPEvxrYrDrK3maXI67T30pNcx9vMaJR +BBZqAOv5jUOB8FChH6bKOvMoPF9RrNcKRXdLDlJiG9g4UaCSLT+Qbsh+QJ8gRhVd +4FB84XavXu0R0y8TubglpK9YCa81tGJUheNI3rzSkHp6pIQNo0LyUcDUrVNlXWz4 +Px8G8k/Ll6BKWcZ40egDuYVtLLrhX7atKz4lecWLVtXjCYDqwSfC2Q7sRwrp0Mr8 +2A== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_8[] = { + 0x30, 0x82, 0x04, 0x4d, 0x30, 0x82, 0x03, 0x35, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x71, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, + 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x35, 0x31, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x33, 0x34, 0x35, 0x35, 0x31, + 0x5a, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x12, 0x52, 0x61, 0x70, 0x69, 0x64, 0x53, 0x53, 0x4c, 0x20, + 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbb, 0x58, 0xc1, 0x12, 0x01, 0x2e, + 0x97, 0xd8, 0x7d, 0x18, 0xaa, 0xc8, 0xc2, 0xe5, 0x85, 0xe2, 0x17, 0x6c, + 0x60, 0x2e, 0xc9, 0x8d, 0x31, 0x05, 0x39, 0x1a, 0x06, 0x98, 0x56, 0xdd, + 0x54, 0xd7, 0x11, 0x8c, 0x59, 0x5b, 0x3d, 0xb1, 0x54, 0xae, 0x4b, 0x21, + 0x85, 0x32, 0x16, 0x5f, 0x54, 0x86, 0xe6, 0xd9, 0xb1, 0xd8, 0x60, 0x89, + 0x6b, 0x58, 0xbe, 0x72, 0xda, 0xa0, 0x00, 0x42, 0x76, 0xb1, 0x27, 0x59, + 0x4c, 0xcd, 0xe3, 0xba, 0xd4, 0x5c, 0xd9, 0xa6, 0x7f, 0xbb, 0x2b, 0x75, + 0xd5, 0x46, 0x44, 0xbd, 0xec, 0x40, 0x5c, 0x59, 0xb7, 0xdd, 0x59, 0x9f, + 0xf1, 0x6a, 0xf7, 0x06, 0xfc, 0xd6, 0x2f, 0x19, 0x8a, 0x95, 0x12, 0xba, + 0x9a, 0xca, 0xd5, 0x30, 0xd2, 0x38, 0xfc, 0x19, 0x3b, 0x5b, 0x15, 0x3b, + 0x36, 0xd0, 0x43, 0x4d, 0xd1, 0x65, 0xa1, 0xd4, 0x8b, 0xc1, 0x60, 0x41, + 0xb3, 0xd6, 0x70, 0x17, 0xcc, 0x39, 0xc0, 0x9c, 0x0c, 0xa0, 0x3d, 0xb7, + 0x11, 0x22, 0x4e, 0xce, 0xd9, 0xa9, 0x7a, 0xd2, 0x2a, 0x62, 0x9c, 0xa0, + 0x0b, 0x4e, 0x2a, 0xd7, 0xc3, 0x61, 0x5a, 0x85, 0xdd, 0x5c, 0x10, 0xb9, + 0x54, 0x3d, 0x2d, 0x03, 0xf8, 0x49, 0xf0, 0xbc, 0x92, 0xb7, 0xb7, 0x9c, + 0x31, 0xc7, 0xe9, 0xb8, 0xaa, 0x82, 0x0b, 0x05, 0xb9, 0x31, 0xcd, 0x08, + 0x5b, 0xbb, 0x22, 0x0b, 0xf6, 0x9c, 0x8e, 0x8a, 0x55, 0x1c, 0x76, 0x43, + 0x76, 0xf0, 0xe2, 0x6e, 0xf0, 0xdf, 0xa8, 0x29, 0x75, 0xe7, 0xc8, 0xa4, + 0x87, 0x8b, 0x6a, 0xf1, 0xbb, 0x08, 0xc9, 0x36, 0x18, 0x65, 0xee, 0x50, + 0x43, 0xb8, 0x5d, 0x72, 0xd5, 0x28, 0x39, 0xe1, 0x53, 0x3e, 0x25, 0x2c, + 0xda, 0x2b, 0x4f, 0xdd, 0x8a, 0x9e, 0x50, 0x50, 0xe0, 0x6f, 0x9a, 0xc4, + 0xd5, 0x19, 0x26, 0x89, 0x01, 0x75, 0x73, 0x09, 0x9b, 0x3b, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x4a, 0x30, 0x82, 0x01, 0x46, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, 0x0c, 0x11, + 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x97, 0xc2, 0x27, 0x50, 0x9e, + 0xc2, 0xc9, 0xec, 0x0c, 0x88, 0x32, 0xc8, 0x7c, 0xad, 0xe2, 0xa6, 0x01, + 0x4f, 0xda, 0x6f, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x36, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2f, + 0x30, 0x2d, 0x30, 0x2b, 0xa0, 0x29, 0xa0, 0x27, 0x86, 0x25, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, + 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x67, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, + 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, + 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, + 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30, + 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, 0x61, + 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x35, 0x36, + 0x39, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x35, 0xeb, 0xe1, + 0x8b, 0x20, 0x56, 0x94, 0xba, 0x7a, 0xbd, 0x79, 0xa9, 0xf6, 0xe3, 0xfe, + 0x6e, 0x38, 0xb4, 0x32, 0xc1, 0xa3, 0xdb, 0x58, 0x56, 0x20, 0x3e, 0x7d, + 0xc7, 0x3a, 0xb1, 0x67, 0x69, 0xd5, 0x79, 0x14, 0x1b, 0xf6, 0xfa, 0xec, + 0x60, 0xf2, 0x79, 0xcd, 0x0a, 0x0c, 0x60, 0x8a, 0x74, 0x4c, 0xa3, 0x93, + 0x2a, 0xa0, 0xf0, 0x51, 0x7f, 0xcd, 0xe9, 0xf9, 0x92, 0xfd, 0x96, 0xab, + 0x45, 0xf5, 0x62, 0x3d, 0x3f, 0x60, 0x46, 0x50, 0x13, 0x3d, 0x20, 0x13, + 0x18, 0x2e, 0x94, 0x46, 0xae, 0xd5, 0x21, 0xfe, 0x43, 0xa1, 0xc9, 0x23, + 0xfe, 0x53, 0xc4, 0xbf, 0x1a, 0xd8, 0xac, 0x3a, 0xca, 0xde, 0x66, 0x97, + 0x23, 0xae, 0xd3, 0xdf, 0x4a, 0x4d, 0x73, 0x1f, 0x6f, 0x31, 0xa2, 0x51, + 0x04, 0x16, 0x6a, 0x00, 0xeb, 0xf9, 0x8d, 0x43, 0x81, 0xf0, 0x50, 0xa1, + 0x1f, 0xa6, 0xca, 0x3a, 0xf3, 0x28, 0x3c, 0x5f, 0x51, 0xac, 0xd7, 0x0a, + 0x45, 0x77, 0x4b, 0x0e, 0x52, 0x62, 0x1b, 0xd8, 0x38, 0x51, 0xa0, 0x92, + 0x2d, 0x3f, 0x90, 0x6e, 0xc8, 0x7e, 0x40, 0x9f, 0x20, 0x46, 0x15, 0x5d, + 0xe0, 0x50, 0x7c, 0xe1, 0x76, 0xaf, 0x5e, 0xed, 0x11, 0xd3, 0x2f, 0x13, + 0xb9, 0xb8, 0x25, 0xa4, 0xaf, 0x58, 0x09, 0xaf, 0x35, 0xb4, 0x62, 0x54, + 0x85, 0xe3, 0x48, 0xde, 0xbc, 0xd2, 0x90, 0x7a, 0x7a, 0xa4, 0x84, 0x0d, + 0xa3, 0x42, 0xf2, 0x51, 0xc0, 0xd4, 0xad, 0x53, 0x65, 0x5d, 0x6c, 0xf8, + 0x3f, 0x1f, 0x06, 0xf2, 0x4f, 0xcb, 0x97, 0xa0, 0x4a, 0x59, 0xc6, 0x78, + 0xd1, 0xe8, 0x03, 0xb9, 0x85, 0x6d, 0x2c, 0xba, 0xe1, 0x5f, 0xb6, 0xad, + 0x2b, 0x3e, 0x25, 0x79, 0xc5, 0x8b, 0x56, 0xd5, 0xe3, 0x09, 0x80, 0xea, + 0xc1, 0x27, 0xc2, 0xd9, 0x0e, 0xec, 0x47, 0x0a, 0xe9, 0xd0, 0xca, 0xfc, + 0xd8, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 04:00:00:00:00:01:44:4e:f0:36:31 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA + Validity + Not Before: Feb 20 10:00:00 2014 GMT + Not After : Feb 20 10:00:00 2024 GMT + Subject: C=BE, O=GlobalSign nv-sa, CN=AlphaSSL CA - SHA256 - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:da:01:ec:e4:ec:73:60:fb:7e:8f:6a:b7:c6:17: + e3:92:64:32:d4:ac:00:d9:a2:0f:b9:ed:ee:6b:8a: + 86:ca:92:67:d9:74:d7:5d:47:02:3c:8f:40:d6:9e: + 6d:14:cd:c3:da:29:39:a7:0f:05:0a:68:a2:66:1a: + 1e:c4:b2:8b:76:58:e5:ab:5d:1d:8f:40:b3:39:8b: + ef:1e:83:7d:22:d0:e3:a9:00:2e:ec:53:cf:62:19: + 85:44:28:4c:c0:27:cb:7b:0e:ec:10:64:00:10:a4: + 05:cc:a0:72:be:41:6c:31:5b:48:e4:b1:ec:b9:23: + eb:55:4d:d0:7d:62:4a:a5:b4:a5:a4:59:85:c5:25: + 91:a6:fe:a6:09:9f:06:10:6d:8f:81:0c:64:40:5e: + 73:00:9a:e0:2e:65:98:54:10:00:70:98:c8:e1:ed: + 34:5f:d8:9c:c7:0d:c0:d6:23:59:45:fc:fe:55:7a: + 86:ee:94:60:22:f1:ae:d1:e6:55:46:f6:99:c5:1b: + 08:74:5f:ac:b0:64:84:8f:89:38:1c:a1:a7:90:21: + 4f:02:6e:bd:e0:61:67:d4:f8:42:87:0f:0a:f7:c9: + 04:6d:2a:a9:2f:ef:42:a5:df:dd:a3:53:db:98:1e: + 81:f9:9a:72:7b:5a:de:4f:3e:7f:a2:58:a0:e2:17: + ad:67 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Subject Key Identifier: + F5:CD:D5:3C:08:50:F9:6A:4F:3A:B7:97:DA:56:83:E6:69:D2:68:F7 + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.alphassl.com/repository/ + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.globalsign.net/root.crl + + Authority Information Access: + OCSP - URI:http://ocsp.globalsign.com/rootr1 + + X509v3 Authority Key Identifier: + keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B + + Signature Algorithm: sha256WithRSAEncryption + 60:40:68:16:47:e7:16:8d:db:5c:a1:56:2a:cb:f4:5c:9b:b0: + 1e:a2:4b:f5:cb:02:3f:f8:0b:a1:f2:a7:42:d4:b7:4c:eb:e3: + 66:80:f3:25:43:78:2e:1b:17:56:07:52:18:cb:d1:a8:ec:e6: + fb:73:3e:a4:62:8c:80:b4:d2:c5:12:73:a3:d3:fa:02:38:be: + 63:3d:84:b8:99:c1:f1:ba:f7:9f:c3:40:d1:58:18:53:c1:62: + dd:af:18:42:7f:34:4e:c5:43:d5:71:b0:30:00:c7:e3:90:ae: + 3f:57:86:97:ce:ea:0c:12:8e:22:70:e3:66:a7:54:7f:2e:28: + cb:d4:54:d0:b3:1e:62:67:08:f9:27:e1:cb:e3:66:b8:24:1b: + 89:6a:89:44:65:f2:d9:4c:d2:58:1c:8c:4e:c0:95:a1:d4:ef: + 67:2f:38:20:e8:2e:ff:96:51:f0:ba:d8:3d:92:70:47:65:1c: + 9e:73:72:b4:60:0c:5c:e2:d1:73:76:e0:af:4e:e2:e5:37:a5: + 45:2f:8a:23:3e:87:c7:30:e6:31:38:7c:f4:dd:52:ca:f3:53: + 04:25:57:56:66:94:e8:0b:ee:e6:03:14:4e:ee:fd:6d:94:64: + 9e:5e:ce:79:d4:b2:a6:cf:40:b1:44:a8:3e:87:19:5e:e9:f8: + 21:16:59:53 +-----BEGIN CERTIFICATE----- +MIIETTCCAzWgAwIBAgILBAAAAAABRE7wNjEwDQYJKoZIhvcNAQELBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw +MDBaFw0yNDAyMjAxMDAwMDBaMEwxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMSIwIAYDVQQDExlBbHBoYVNTTCBDQSAtIFNIQTI1NiAtIEcy +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2gHs5OxzYPt+j2q3xhfj +kmQy1KwA2aIPue3ua4qGypJn2XTXXUcCPI9A1p5tFM3D2ik5pw8FCmiiZhoexLKL +dljlq10dj0CzOYvvHoN9ItDjqQAu7FPPYhmFRChMwCfLew7sEGQAEKQFzKByvkFs +MVtI5LHsuSPrVU3QfWJKpbSlpFmFxSWRpv6mCZ8GEG2PgQxkQF5zAJrgLmWYVBAA +cJjI4e00X9icxw3A1iNZRfz+VXqG7pRgIvGu0eZVRvaZxRsIdF+ssGSEj4k4HKGn +kCFPAm694GFn1PhChw8K98kEbSqpL+9Cpd/do1PbmB6B+Zpye1reTz5/olig4het +ZwIDAQABo4IBIzCCAR8wDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8C +AQAwHQYDVR0OBBYEFPXN1TwIUPlqTzq3l9pWg+Zp0mj3MEUGA1UdIAQ+MDwwOgYE +VR0gADAyMDAGCCsGAQUFBwIBFiRodHRwczovL3d3dy5hbHBoYXNzbC5jb20vcmVw +b3NpdG9yeS8wMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5nbG9iYWxzaWdu +Lm5ldC9yb290LmNybDA9BggrBgEFBQcBAQQxMC8wLQYIKwYBBQUHMAGGIWh0dHA6 +Ly9vY3NwLmdsb2JhbHNpZ24uY29tL3Jvb3RyMTAfBgNVHSMEGDAWgBRge2YaRQ2X +yolQL30EzTSo//z9SzANBgkqhkiG9w0BAQsFAAOCAQEAYEBoFkfnFo3bXKFWKsv0 +XJuwHqJL9csCP/gLofKnQtS3TOvjZoDzJUN4LhsXVgdSGMvRqOzm+3M+pGKMgLTS +xRJzo9P6Aji+Yz2EuJnB8br3n8NA0VgYU8Fi3a8YQn80TsVD1XGwMADH45CuP1eG +l87qDBKOInDjZqdUfy4oy9RU0LMeYmcI+Sfhy+NmuCQbiWqJRGXy2UzSWByMTsCV +odTvZy84IOgu/5ZR8LrYPZJwR2UcnnNytGAMXOLRc3bgr07i5TelRS+KIz6HxzDm +MTh89N1SyvNTBCVXVmaU6Avu5gMUTu79bZRknl7OedSyps9AsUSoPocZXun4IRZZ +Uw== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_9[] = { + 0x30, 0x82, 0x04, 0x4d, 0x30, 0x82, 0x03, 0x35, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4e, 0xf0, + 0x36, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x07, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, + 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, + 0x17, 0x0d, 0x31, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x4c, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, + 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, + 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x41, + 0x6c, 0x70, 0x68, 0x61, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, + 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x47, 0x32, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xda, 0x01, 0xec, + 0xe4, 0xec, 0x73, 0x60, 0xfb, 0x7e, 0x8f, 0x6a, 0xb7, 0xc6, 0x17, 0xe3, + 0x92, 0x64, 0x32, 0xd4, 0xac, 0x00, 0xd9, 0xa2, 0x0f, 0xb9, 0xed, 0xee, + 0x6b, 0x8a, 0x86, 0xca, 0x92, 0x67, 0xd9, 0x74, 0xd7, 0x5d, 0x47, 0x02, + 0x3c, 0x8f, 0x40, 0xd6, 0x9e, 0x6d, 0x14, 0xcd, 0xc3, 0xda, 0x29, 0x39, + 0xa7, 0x0f, 0x05, 0x0a, 0x68, 0xa2, 0x66, 0x1a, 0x1e, 0xc4, 0xb2, 0x8b, + 0x76, 0x58, 0xe5, 0xab, 0x5d, 0x1d, 0x8f, 0x40, 0xb3, 0x39, 0x8b, 0xef, + 0x1e, 0x83, 0x7d, 0x22, 0xd0, 0xe3, 0xa9, 0x00, 0x2e, 0xec, 0x53, 0xcf, + 0x62, 0x19, 0x85, 0x44, 0x28, 0x4c, 0xc0, 0x27, 0xcb, 0x7b, 0x0e, 0xec, + 0x10, 0x64, 0x00, 0x10, 0xa4, 0x05, 0xcc, 0xa0, 0x72, 0xbe, 0x41, 0x6c, + 0x31, 0x5b, 0x48, 0xe4, 0xb1, 0xec, 0xb9, 0x23, 0xeb, 0x55, 0x4d, 0xd0, + 0x7d, 0x62, 0x4a, 0xa5, 0xb4, 0xa5, 0xa4, 0x59, 0x85, 0xc5, 0x25, 0x91, + 0xa6, 0xfe, 0xa6, 0x09, 0x9f, 0x06, 0x10, 0x6d, 0x8f, 0x81, 0x0c, 0x64, + 0x40, 0x5e, 0x73, 0x00, 0x9a, 0xe0, 0x2e, 0x65, 0x98, 0x54, 0x10, 0x00, + 0x70, 0x98, 0xc8, 0xe1, 0xed, 0x34, 0x5f, 0xd8, 0x9c, 0xc7, 0x0d, 0xc0, + 0xd6, 0x23, 0x59, 0x45, 0xfc, 0xfe, 0x55, 0x7a, 0x86, 0xee, 0x94, 0x60, + 0x22, 0xf1, 0xae, 0xd1, 0xe6, 0x55, 0x46, 0xf6, 0x99, 0xc5, 0x1b, 0x08, + 0x74, 0x5f, 0xac, 0xb0, 0x64, 0x84, 0x8f, 0x89, 0x38, 0x1c, 0xa1, 0xa7, + 0x90, 0x21, 0x4f, 0x02, 0x6e, 0xbd, 0xe0, 0x61, 0x67, 0xd4, 0xf8, 0x42, + 0x87, 0x0f, 0x0a, 0xf7, 0xc9, 0x04, 0x6d, 0x2a, 0xa9, 0x2f, 0xef, 0x42, + 0xa5, 0xdf, 0xdd, 0xa3, 0x53, 0xdb, 0x98, 0x1e, 0x81, 0xf9, 0x9a, 0x72, + 0x7b, 0x5a, 0xde, 0x4f, 0x3e, 0x7f, 0xa2, 0x58, 0xa0, 0xe2, 0x17, 0xad, + 0x67, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x23, 0x30, 0x82, + 0x01, 0x1f, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, + 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0xf5, 0xcd, 0xd5, 0x3c, 0x08, 0x50, 0xf9, 0x6a, 0x4f, 0x3a, 0xb7, + 0x97, 0xda, 0x56, 0x83, 0xe6, 0x69, 0xd2, 0x68, 0xf7, 0x30, 0x45, 0x06, + 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3e, 0x30, 0x3c, 0x30, 0x3a, 0x06, 0x04, + 0x55, 0x1d, 0x20, 0x00, 0x30, 0x32, 0x30, 0x30, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x24, 0x68, 0x74, 0x74, 0x70, + 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x30, 0x33, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0, + 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, + 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, + 0x6c, 0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, + 0x01, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, + 0x6f, 0x74, 0x72, 0x31, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x18, 0x30, 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, 0x1a, 0x45, 0x0d, 0x97, + 0xca, 0x89, 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, 0xa8, 0xff, 0xfc, 0xfd, + 0x4b, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x60, 0x40, 0x68, + 0x16, 0x47, 0xe7, 0x16, 0x8d, 0xdb, 0x5c, 0xa1, 0x56, 0x2a, 0xcb, 0xf4, + 0x5c, 0x9b, 0xb0, 0x1e, 0xa2, 0x4b, 0xf5, 0xcb, 0x02, 0x3f, 0xf8, 0x0b, + 0xa1, 0xf2, 0xa7, 0x42, 0xd4, 0xb7, 0x4c, 0xeb, 0xe3, 0x66, 0x80, 0xf3, + 0x25, 0x43, 0x78, 0x2e, 0x1b, 0x17, 0x56, 0x07, 0x52, 0x18, 0xcb, 0xd1, + 0xa8, 0xec, 0xe6, 0xfb, 0x73, 0x3e, 0xa4, 0x62, 0x8c, 0x80, 0xb4, 0xd2, + 0xc5, 0x12, 0x73, 0xa3, 0xd3, 0xfa, 0x02, 0x38, 0xbe, 0x63, 0x3d, 0x84, + 0xb8, 0x99, 0xc1, 0xf1, 0xba, 0xf7, 0x9f, 0xc3, 0x40, 0xd1, 0x58, 0x18, + 0x53, 0xc1, 0x62, 0xdd, 0xaf, 0x18, 0x42, 0x7f, 0x34, 0x4e, 0xc5, 0x43, + 0xd5, 0x71, 0xb0, 0x30, 0x00, 0xc7, 0xe3, 0x90, 0xae, 0x3f, 0x57, 0x86, + 0x97, 0xce, 0xea, 0x0c, 0x12, 0x8e, 0x22, 0x70, 0xe3, 0x66, 0xa7, 0x54, + 0x7f, 0x2e, 0x28, 0xcb, 0xd4, 0x54, 0xd0, 0xb3, 0x1e, 0x62, 0x67, 0x08, + 0xf9, 0x27, 0xe1, 0xcb, 0xe3, 0x66, 0xb8, 0x24, 0x1b, 0x89, 0x6a, 0x89, + 0x44, 0x65, 0xf2, 0xd9, 0x4c, 0xd2, 0x58, 0x1c, 0x8c, 0x4e, 0xc0, 0x95, + 0xa1, 0xd4, 0xef, 0x67, 0x2f, 0x38, 0x20, 0xe8, 0x2e, 0xff, 0x96, 0x51, + 0xf0, 0xba, 0xd8, 0x3d, 0x92, 0x70, 0x47, 0x65, 0x1c, 0x9e, 0x73, 0x72, + 0xb4, 0x60, 0x0c, 0x5c, 0xe2, 0xd1, 0x73, 0x76, 0xe0, 0xaf, 0x4e, 0xe2, + 0xe5, 0x37, 0xa5, 0x45, 0x2f, 0x8a, 0x23, 0x3e, 0x87, 0xc7, 0x30, 0xe6, + 0x31, 0x38, 0x7c, 0xf4, 0xdd, 0x52, 0xca, 0xf3, 0x53, 0x04, 0x25, 0x57, + 0x56, 0x66, 0x94, 0xe8, 0x0b, 0xee, 0xe6, 0x03, 0x14, 0x4e, 0xee, 0xfd, + 0x6d, 0x94, 0x64, 0x9e, 0x5e, 0xce, 0x79, 0xd4, 0xb2, 0xa6, 0xcf, 0x40, + 0xb1, 0x44, 0xa8, 0x3e, 0x87, 0x19, 0x5e, 0xe9, 0xf8, 0x21, 0x16, 0x59, + 0x53, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 146031 (0x23a6f) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Validity + Not Before: Nov 5 21:36:50 2013 GMT + Not After : May 20 21:36:50 2022 GMT + Subject: C=US, O=GeoTrust Inc., CN=GeoTrust SSL CA - G3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:e3:be:7e:0a:86:a3:cf:6b:6d:3d:2b:a1:97:ad: + 49:24:4d:d7:77:b9:34:79:08:a5:9e:a2:9e:de:47: + 12:92:3d:7e:ea:19:86:b1:e8:4f:3d:5f:f7:d0:a7: + 77:9a:5b:1f:0a:03:b5:19:53:db:a5:21:94:69:63: + 9d:6a:4c:91:0c:10:47:be:11:fa:6c:86:25:b7:ab: + 04:68:42:38:09:65:f0:14:da:19:9e:fa:6b:0b:ab: + 62:ef:8d:a7:ef:63:70:23:a8:af:81:f3:d1:6e:88: + 67:53:ec:12:a4:29:75:8a:a7:f2:57:3d:a2:83:98: + 97:f2:0a:7d:d4:e7:43:6e:30:78:62:22:59:59:b8: + 71:27:45:aa:0f:66:c6:55:3f:fa:32:17:2b:31:8f: + 46:a0:fa:69:14:7c:9d:9f:5a:e2:eb:33:4e:10:a6: + b3:ed:77:63:d8:c3:9e:f4:dd:df:79:9a:7a:d4:ee: + de:dd:9a:cc:c3:b7:a9:5d:cc:11:3a:07:bb:6f:97: + a4:01:23:47:95:1f:a3:77:fa:58:92:c6:c7:d0:bd: + cf:93:18:42:b7:7e:f7:9e:65:ea:d5:3b:ca:ed:ac: + c5:70:a1:fe:d4:10:9a:f0:12:04:44:ac:1a:5b:78: + 50:45:57:4c:6f:bd:80:cb:81:5c:2d:b3:bc:76:a1: + 1e:65 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Authority Key Identifier: + keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + + X509v3 Subject Key Identifier: + D2:6F:F7:96:F4:85:3F:72:3C:30:7D:23:DA:85:78:9B:A3:7C:5A:7C + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 CRL Distribution Points: + + Full Name: + URI:http://g1.symcb.com/crls/gtglobal.crl + + Authority Information Access: + OCSP - URI:http://g2.symcb.com + + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: http://www.geotrust.com/resources/cps + + X509v3 Subject Alternative Name: + DirName:/CN=SymantecPKI-1-539 + Signature Algorithm: sha256WithRSAEncryption + a0:d4:f7:2c:fb:74:0b:7f:64:f1:cd:43:6a:9f:62:53:1c:02: + 7c:98:90:a2:ee:4f:68:d4:20:1a:73:12:3e:77:b3:50:eb:72: + bc:ee:88:be:7f:17:ea:77:8f:83:61:95:4f:84:a1:cb:32:4f: + 6c:21:be:d2:69:96:7d:63:bd:dc:2b:a8:1f:d0:13:84:70:fe: + f6:35:95:89:f9:a6:77:b0:46:c8:bb:b7:13:f5:c9:60:69:d6: + 4c:fe:d2:8e:ef:d3:60:c1:80:80:e1:e7:fb:8b:6f:21:79:4a: + e0:dc:a9:1b:c1:b7:fb:c3:49:59:5c:b5:77:07:44:d4:97:fc: + 49:00:89:6f:06:4e:01:70:19:ac:2f:11:c0:e2:e6:0f:2f:86: + 4b:8d:7b:c3:b9:a7:2e:f4:f1:ac:16:3e:39:49:51:9e:17:4b: + 4f:10:3a:5b:a5:a8:92:6f:fd:fa:d6:0b:03:4d:47:56:57:19: + f3:cb:6b:f5:f3:d6:cf:b0:f5:f5:a3:11:d2:20:53:13:34:37: + 05:2c:43:5a:63:df:8d:40:d6:85:1e:51:e9:51:17:1e:03:56: + c9:f1:30:ad:e7:9b:11:a2:b9:d0:31:81:9b:68:b1:d9:e8:f3: + e6:94:7e:c7:ae:13:2f:87:ed:d0:25:b0:68:f9:de:08:5a:f3: + 29:cc:d4:92 +-----BEGIN CERTIFICATE----- +MIIETzCCAzegAwIBAgIDAjpvMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMTMxMTA1MjEzNjUwWhcNMjIwNTIwMjEzNjUwWjBEMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3Qg +U1NMIENBIC0gRzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDjvn4K +hqPPa209K6GXrUkkTdd3uTR5CKWeop7eRxKSPX7qGYax6E89X/fQp3eaWx8KA7UZ +U9ulIZRpY51qTJEMEEe+EfpshiW3qwRoQjgJZfAU2hme+msLq2LvjafvY3AjqK+B +89FuiGdT7BKkKXWKp/JXPaKDmJfyCn3U50NuMHhiIllZuHEnRaoPZsZVP/oyFysx +j0ag+mkUfJ2fWuLrM04QprPtd2PYw5703d95mnrU7t7dmszDt6ldzBE6B7tvl6QB +I0eVH6N3+liSxsfQvc+TGEK3fveeZerVO8rtrMVwof7UEJrwEgRErBpbeFBFV0xv +vYDLgVwts7x2oR5lAgMBAAGjggFKMIIBRjAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjAdBgNVHQ4EFgQU0m/3lvSFP3I8MH0j2oV4m6N8WnwwEgYDVR0T +AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwNgYDVR0fBC8wLTAroCmgJ4Yl +aHR0cDovL2cxLnN5bWNiLmNvbS9jcmxzL2d0Z2xvYmFsLmNybDAvBggrBgEFBQcB +AQQjMCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly9nMi5zeW1jYi5jb20wTAYDVR0gBEUw +QzBBBgpghkgBhvhFAQc2MDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuZ2VvdHJ1 +c3QuY29tL3Jlc291cmNlcy9jcHMwKQYDVR0RBCIwIKQeMBwxGjAYBgNVBAMTEVN5 +bWFudGVjUEtJLTEtNTM5MA0GCSqGSIb3DQEBCwUAA4IBAQCg1Pcs+3QLf2TxzUNq +n2JTHAJ8mJCi7k9o1CAacxI+d7NQ63K87oi+fxfqd4+DYZVPhKHLMk9sIb7SaZZ9 +Y73cK6gf0BOEcP72NZWJ+aZ3sEbIu7cT9clgadZM/tKO79NgwYCA4ef7i28heUrg +3Kkbwbf7w0lZXLV3B0TUl/xJAIlvBk4BcBmsLxHA4uYPL4ZLjXvDuacu9PGsFj45 +SVGeF0tPEDpbpaiSb/361gsDTUdWVxnzy2v189bPsPX1oxHSIFMTNDcFLENaY9+N +QNaFHlHpURceA1bJ8TCt55sRornQMYGbaLHZ6PPmlH7HrhMvh+3QJbBo+d4IWvMp +zNSS +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_10[] = { + 0x30, 0x82, 0x04, 0x4f, 0x30, 0x82, 0x03, 0x37, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x6f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, + 0x31, 0x30, 0x35, 0x32, 0x31, 0x33, 0x36, 0x35, 0x30, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x31, 0x33, 0x36, 0x35, 0x30, + 0x5a, 0x30, 0x44, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x14, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, + 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, + 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe3, 0xbe, 0x7e, 0x0a, + 0x86, 0xa3, 0xcf, 0x6b, 0x6d, 0x3d, 0x2b, 0xa1, 0x97, 0xad, 0x49, 0x24, + 0x4d, 0xd7, 0x77, 0xb9, 0x34, 0x79, 0x08, 0xa5, 0x9e, 0xa2, 0x9e, 0xde, + 0x47, 0x12, 0x92, 0x3d, 0x7e, 0xea, 0x19, 0x86, 0xb1, 0xe8, 0x4f, 0x3d, + 0x5f, 0xf7, 0xd0, 0xa7, 0x77, 0x9a, 0x5b, 0x1f, 0x0a, 0x03, 0xb5, 0x19, + 0x53, 0xdb, 0xa5, 0x21, 0x94, 0x69, 0x63, 0x9d, 0x6a, 0x4c, 0x91, 0x0c, + 0x10, 0x47, 0xbe, 0x11, 0xfa, 0x6c, 0x86, 0x25, 0xb7, 0xab, 0x04, 0x68, + 0x42, 0x38, 0x09, 0x65, 0xf0, 0x14, 0xda, 0x19, 0x9e, 0xfa, 0x6b, 0x0b, + 0xab, 0x62, 0xef, 0x8d, 0xa7, 0xef, 0x63, 0x70, 0x23, 0xa8, 0xaf, 0x81, + 0xf3, 0xd1, 0x6e, 0x88, 0x67, 0x53, 0xec, 0x12, 0xa4, 0x29, 0x75, 0x8a, + 0xa7, 0xf2, 0x57, 0x3d, 0xa2, 0x83, 0x98, 0x97, 0xf2, 0x0a, 0x7d, 0xd4, + 0xe7, 0x43, 0x6e, 0x30, 0x78, 0x62, 0x22, 0x59, 0x59, 0xb8, 0x71, 0x27, + 0x45, 0xaa, 0x0f, 0x66, 0xc6, 0x55, 0x3f, 0xfa, 0x32, 0x17, 0x2b, 0x31, + 0x8f, 0x46, 0xa0, 0xfa, 0x69, 0x14, 0x7c, 0x9d, 0x9f, 0x5a, 0xe2, 0xeb, + 0x33, 0x4e, 0x10, 0xa6, 0xb3, 0xed, 0x77, 0x63, 0xd8, 0xc3, 0x9e, 0xf4, + 0xdd, 0xdf, 0x79, 0x9a, 0x7a, 0xd4, 0xee, 0xde, 0xdd, 0x9a, 0xcc, 0xc3, + 0xb7, 0xa9, 0x5d, 0xcc, 0x11, 0x3a, 0x07, 0xbb, 0x6f, 0x97, 0xa4, 0x01, + 0x23, 0x47, 0x95, 0x1f, 0xa3, 0x77, 0xfa, 0x58, 0x92, 0xc6, 0xc7, 0xd0, + 0xbd, 0xcf, 0x93, 0x18, 0x42, 0xb7, 0x7e, 0xf7, 0x9e, 0x65, 0xea, 0xd5, + 0x3b, 0xca, 0xed, 0xac, 0xc5, 0x70, 0xa1, 0xfe, 0xd4, 0x10, 0x9a, 0xf0, + 0x12, 0x04, 0x44, 0xac, 0x1a, 0x5b, 0x78, 0x50, 0x45, 0x57, 0x4c, 0x6f, + 0xbd, 0x80, 0xcb, 0x81, 0x5c, 0x2d, 0xb3, 0xbc, 0x76, 0xa1, 0x1e, 0x65, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x4a, 0x30, 0x82, 0x01, + 0x46, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, + 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xd2, 0x6f, 0xf7, + 0x96, 0xf4, 0x85, 0x3f, 0x72, 0x3c, 0x30, 0x7d, 0x23, 0xda, 0x85, 0x78, + 0x9b, 0xa3, 0x7c, 0x5a, 0x7c, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x36, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x2f, 0x30, 0x2d, 0x30, 0x2b, 0xa0, 0x29, 0xa0, 0x27, 0x86, 0x25, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x31, 0x2e, 0x73, 0x79, + 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, + 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, + 0x6c, 0x30, 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, + 0x01, 0x04, 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x67, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, + 0x43, 0x30, 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, + 0x01, 0x07, 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x29, 0x06, 0x03, + 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, + 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, + 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, + 0x35, 0x33, 0x39, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xa0, + 0xd4, 0xf7, 0x2c, 0xfb, 0x74, 0x0b, 0x7f, 0x64, 0xf1, 0xcd, 0x43, 0x6a, + 0x9f, 0x62, 0x53, 0x1c, 0x02, 0x7c, 0x98, 0x90, 0xa2, 0xee, 0x4f, 0x68, + 0xd4, 0x20, 0x1a, 0x73, 0x12, 0x3e, 0x77, 0xb3, 0x50, 0xeb, 0x72, 0xbc, + 0xee, 0x88, 0xbe, 0x7f, 0x17, 0xea, 0x77, 0x8f, 0x83, 0x61, 0x95, 0x4f, + 0x84, 0xa1, 0xcb, 0x32, 0x4f, 0x6c, 0x21, 0xbe, 0xd2, 0x69, 0x96, 0x7d, + 0x63, 0xbd, 0xdc, 0x2b, 0xa8, 0x1f, 0xd0, 0x13, 0x84, 0x70, 0xfe, 0xf6, + 0x35, 0x95, 0x89, 0xf9, 0xa6, 0x77, 0xb0, 0x46, 0xc8, 0xbb, 0xb7, 0x13, + 0xf5, 0xc9, 0x60, 0x69, 0xd6, 0x4c, 0xfe, 0xd2, 0x8e, 0xef, 0xd3, 0x60, + 0xc1, 0x80, 0x80, 0xe1, 0xe7, 0xfb, 0x8b, 0x6f, 0x21, 0x79, 0x4a, 0xe0, + 0xdc, 0xa9, 0x1b, 0xc1, 0xb7, 0xfb, 0xc3, 0x49, 0x59, 0x5c, 0xb5, 0x77, + 0x07, 0x44, 0xd4, 0x97, 0xfc, 0x49, 0x00, 0x89, 0x6f, 0x06, 0x4e, 0x01, + 0x70, 0x19, 0xac, 0x2f, 0x11, 0xc0, 0xe2, 0xe6, 0x0f, 0x2f, 0x86, 0x4b, + 0x8d, 0x7b, 0xc3, 0xb9, 0xa7, 0x2e, 0xf4, 0xf1, 0xac, 0x16, 0x3e, 0x39, + 0x49, 0x51, 0x9e, 0x17, 0x4b, 0x4f, 0x10, 0x3a, 0x5b, 0xa5, 0xa8, 0x92, + 0x6f, 0xfd, 0xfa, 0xd6, 0x0b, 0x03, 0x4d, 0x47, 0x56, 0x57, 0x19, 0xf3, + 0xcb, 0x6b, 0xf5, 0xf3, 0xd6, 0xcf, 0xb0, 0xf5, 0xf5, 0xa3, 0x11, 0xd2, + 0x20, 0x53, 0x13, 0x34, 0x37, 0x05, 0x2c, 0x43, 0x5a, 0x63, 0xdf, 0x8d, + 0x40, 0xd6, 0x85, 0x1e, 0x51, 0xe9, 0x51, 0x17, 0x1e, 0x03, 0x56, 0xc9, + 0xf1, 0x30, 0xad, 0xe7, 0x9b, 0x11, 0xa2, 0xb9, 0xd0, 0x31, 0x81, 0x9b, + 0x68, 0xb1, 0xd9, 0xe8, 0xf3, 0xe6, 0x94, 0x7e, 0xc7, 0xae, 0x13, 0x2f, + 0x87, 0xed, 0xd0, 0x25, 0xb0, 0x68, 0xf9, 0xde, 0x08, 0x5a, 0xf3, 0x29, + 0xcc, 0xd4, 0x92, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 146019 (0x23a63) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Validity + Not Before: Aug 27 20:40:40 2012 GMT + Not After : May 20 20:40:40 2022 GMT + Subject: C=US, O=GeoTrust Inc., CN=GeoTrust SSL CA - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:b9:27:f9:4f:d8:f6:b7:15:3f:8f:cd:ce:d6:8d: + 1c:6b:fd:7f:da:54:21:4e:03:d8:ca:d0:72:52:15: + b8:c9:82:5b:58:79:84:ff:24:72:6f:f2:69:7f:bc: + 96:d9:9a:7a:c3:3e:a9:cf:50:22:13:0e:86:19:db: + e8:49:ef:8b:e6:d6:47:f2:fd:73:45:08:ae:8f:ac: + 5e:b6:f8:9e:7c:f7:10:ff:92:43:66:ef:1c:d4:ee: + a1:46:88:11:89:49:79:7a:25:ce:4b:6a:f0:d7:1c: + 76:1a:29:3c:c9:e4:fd:1e:85:dc:e0:31:65:05:47: + 16:ac:0a:07:4b:2e:70:5e:6b:06:a7:6b:3a:6c:af: + 05:12:c4:b2:11:25:d6:3e:97:29:f0:83:6c:57:1c: + d8:a5:ef:cc:ec:fd:d6:12:f1:3f:db:40:b4:ae:0f: + 18:d3:c5:af:40:92:5d:07:5e:4e:fe:62:17:37:89: + e9:8b:74:26:a2:ed:b8:0a:e7:6c:15:5b:35:90:72: + dd:d8:4d:21:d4:40:23:5c:8f:ee:80:31:16:ab:68: + 55:f4:0e:3b:54:e9:04:4d:f0:cc:4e:81:5e:e9:6f: + 52:69:4e:be:a6:16:6d:42:f5:51:ff:e0:0b:56:3c: + 98:4f:73:8f:0e:6f:1a:23:f1:c9:c8:d9:df:bc:ec: + 52:d7 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Authority Key Identifier: + keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + + X509v3 Subject Key Identifier: + 11:4A:D0:73:39:D5:5B:69:08:5C:BA:3D:BF:64:9A:A8:8B:1C:55:BC + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.geotrust.com/crls/gtglobal.crl + + Authority Information Access: + OCSP - URI:http://ocsp.geotrust.com + + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: http://www.geotrust.com/resources/cps + + X509v3 Subject Alternative Name: + DirName:/CN=VeriSignMPKI-2-254 + Signature Algorithm: sha1WithRSAEncryption + 3c:e5:3d:5a:1b:a2:37:2a:e3:46:cf:36:96:18:3c:7b:f1:84: + c5:57:86:77:40:9d:35:f0:12:f0:78:18:fb:22:a4:de:98:4b: + 78:81:e6:4d:86:e3:91:0f:42:e3:b9:dc:a0:d6:ff:a9:f8:b1: + 79:97:99:d1:c3:6c:42:a5:92:94:e0:5d:0c:33:18:25:c9:2b: + 95:53:e0:e5:a9:0c:7d:47:fe:7f:51:31:44:5e:f7:2a:1e:35: + a2:94:32:f7:c9:ee:c0:b6:c6:9a:ac:de:99:21:6a:23:a0:38: + 64:ee:a3:c4:88:73:32:3b:50:ce:bf:ad:d3:75:1e:a6:f4:e9: + f9:42:6b:60:b2:dd:45:fd:5d:57:08:ce:2d:50:e6:12:32:16: + 13:8a:f2:94:a2:9b:47:a8:86:7f:d9:98:e5:f7:e5:76:74:64: + d8:91:bc:84:16:28:d8:25:44:30:7e:82:d8:ac:b1:e4:c0:e4: + 15:6c:db:b6:24:27:02:2a:01:12:85:ba:31:88:58:47:74:e3: + b8:d2:64:a6:c3:32:59:2e:29:4b:45:f1:5b:89:49:2e:82:9a: + c6:18:15:44:d0:2e:64:01:15:68:38:f9:f6:f9:66:03:0c:55: + 1b:9d:bf:00:40:ae:f0:48:27:4c:e0:80:5e:2d:b9:2a:15:7a: + bc:66:f8:35 +-----BEGIN CERTIFICATE----- +MIIEWTCCA0GgAwIBAgIDAjpjMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMTIwODI3MjA0MDQwWhcNMjIwNTIwMjA0MDQwWjBEMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3Qg +U1NMIENBIC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC5J/lP +2Pa3FT+Pzc7WjRxr/X/aVCFOA9jK0HJSFbjJgltYeYT/JHJv8ml/vJbZmnrDPqnP +UCITDoYZ2+hJ74vm1kfy/XNFCK6PrF62+J589xD/kkNm7xzU7qFGiBGJSXl6Jc5L +avDXHHYaKTzJ5P0ehdzgMWUFRxasCgdLLnBeawanazpsrwUSxLIRJdY+lynwg2xX +HNil78zs/dYS8T/bQLSuDxjTxa9Akl0HXk7+Yhc3iemLdCai7bgK52wVWzWQct3Y +TSHUQCNcj+6AMRaraFX0DjtU6QRN8MxOgV7pb1JpTr6mFm1C9VH/4AtWPJhPc48O +bxoj8cnI2d+87FLXAgMBAAGjggFUMIIBUDAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjAdBgNVHQ4EFgQUEUrQcznVW2kIXLo9v2SaqIscVbwwEgYDVR0T +AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwOgYDVR0fBDMwMTAvoC2gK4Yp +aHR0cDovL2NybC5nZW90cnVzdC5jb20vY3Jscy9ndGdsb2JhbC5jcmwwNAYIKwYB +BQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5nZW90cnVzdC5jb20w +TAYDVR0gBEUwQzBBBgpghkgBhvhFAQc2MDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93 +d3cuZ2VvdHJ1c3QuY29tL3Jlc291cmNlcy9jcHMwKgYDVR0RBCMwIaQfMB0xGzAZ +BgNVBAMTElZlcmlTaWduTVBLSS0yLTI1NDANBgkqhkiG9w0BAQUFAAOCAQEAPOU9 +WhuiNyrjRs82lhg8e/GExVeGd0CdNfAS8HgY+yKk3phLeIHmTYbjkQ9C47ncoNb/ +qfixeZeZ0cNsQqWSlOBdDDMYJckrlVPg5akMfUf+f1ExRF73Kh41opQy98nuwLbG +mqzemSFqI6A4ZO6jxIhzMjtQzr+t03UepvTp+UJrYLLdRf1dVwjOLVDmEjIWE4ry +lKKbR6iGf9mY5ffldnRk2JG8hBYo2CVEMH6C2Kyx5MDkFWzbtiQnAioBEoW6MYhY +R3TjuNJkpsMyWS4pS0XxW4lJLoKaxhgVRNAuZAEVaDj59vlmAwxVG52/AECu8Egn +TOCAXi25KhV6vGb4NQ== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_11[] = { + 0x30, 0x82, 0x04, 0x59, 0x30, 0x82, 0x03, 0x41, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x63, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x32, 0x30, + 0x38, 0x32, 0x37, 0x32, 0x30, 0x34, 0x30, 0x34, 0x30, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x30, 0x34, 0x30, 0x34, 0x30, + 0x5a, 0x30, 0x44, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x14, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, + 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, + 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb9, 0x27, 0xf9, 0x4f, + 0xd8, 0xf6, 0xb7, 0x15, 0x3f, 0x8f, 0xcd, 0xce, 0xd6, 0x8d, 0x1c, 0x6b, + 0xfd, 0x7f, 0xda, 0x54, 0x21, 0x4e, 0x03, 0xd8, 0xca, 0xd0, 0x72, 0x52, + 0x15, 0xb8, 0xc9, 0x82, 0x5b, 0x58, 0x79, 0x84, 0xff, 0x24, 0x72, 0x6f, + 0xf2, 0x69, 0x7f, 0xbc, 0x96, 0xd9, 0x9a, 0x7a, 0xc3, 0x3e, 0xa9, 0xcf, + 0x50, 0x22, 0x13, 0x0e, 0x86, 0x19, 0xdb, 0xe8, 0x49, 0xef, 0x8b, 0xe6, + 0xd6, 0x47, 0xf2, 0xfd, 0x73, 0x45, 0x08, 0xae, 0x8f, 0xac, 0x5e, 0xb6, + 0xf8, 0x9e, 0x7c, 0xf7, 0x10, 0xff, 0x92, 0x43, 0x66, 0xef, 0x1c, 0xd4, + 0xee, 0xa1, 0x46, 0x88, 0x11, 0x89, 0x49, 0x79, 0x7a, 0x25, 0xce, 0x4b, + 0x6a, 0xf0, 0xd7, 0x1c, 0x76, 0x1a, 0x29, 0x3c, 0xc9, 0xe4, 0xfd, 0x1e, + 0x85, 0xdc, 0xe0, 0x31, 0x65, 0x05, 0x47, 0x16, 0xac, 0x0a, 0x07, 0x4b, + 0x2e, 0x70, 0x5e, 0x6b, 0x06, 0xa7, 0x6b, 0x3a, 0x6c, 0xaf, 0x05, 0x12, + 0xc4, 0xb2, 0x11, 0x25, 0xd6, 0x3e, 0x97, 0x29, 0xf0, 0x83, 0x6c, 0x57, + 0x1c, 0xd8, 0xa5, 0xef, 0xcc, 0xec, 0xfd, 0xd6, 0x12, 0xf1, 0x3f, 0xdb, + 0x40, 0xb4, 0xae, 0x0f, 0x18, 0xd3, 0xc5, 0xaf, 0x40, 0x92, 0x5d, 0x07, + 0x5e, 0x4e, 0xfe, 0x62, 0x17, 0x37, 0x89, 0xe9, 0x8b, 0x74, 0x26, 0xa2, + 0xed, 0xb8, 0x0a, 0xe7, 0x6c, 0x15, 0x5b, 0x35, 0x90, 0x72, 0xdd, 0xd8, + 0x4d, 0x21, 0xd4, 0x40, 0x23, 0x5c, 0x8f, 0xee, 0x80, 0x31, 0x16, 0xab, + 0x68, 0x55, 0xf4, 0x0e, 0x3b, 0x54, 0xe9, 0x04, 0x4d, 0xf0, 0xcc, 0x4e, + 0x81, 0x5e, 0xe9, 0x6f, 0x52, 0x69, 0x4e, 0xbe, 0xa6, 0x16, 0x6d, 0x42, + 0xf5, 0x51, 0xff, 0xe0, 0x0b, 0x56, 0x3c, 0x98, 0x4f, 0x73, 0x8f, 0x0e, + 0x6f, 0x1a, 0x23, 0xf1, 0xc9, 0xc8, 0xd9, 0xdf, 0xbc, 0xec, 0x52, 0xd7, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x54, 0x30, 0x82, 0x01, + 0x50, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, + 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x11, 0x4a, 0xd0, + 0x73, 0x39, 0xd5, 0x5b, 0x69, 0x08, 0x5c, 0xba, 0x3d, 0xbf, 0x64, 0x9a, + 0xa8, 0x8b, 0x1c, 0x55, 0xbc, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3a, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, 0x2d, 0xa0, 0x2b, 0x86, 0x29, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67, + 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, + 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, + 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, + 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, + 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, + 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x2a, 0x06, 0x03, 0x55, 0x1d, 0x11, + 0x04, 0x23, 0x30, 0x21, 0xa4, 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x56, 0x65, 0x72, 0x69, 0x53, + 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x32, 0x35, + 0x34, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x3c, 0xe5, 0x3d, + 0x5a, 0x1b, 0xa2, 0x37, 0x2a, 0xe3, 0x46, 0xcf, 0x36, 0x96, 0x18, 0x3c, + 0x7b, 0xf1, 0x84, 0xc5, 0x57, 0x86, 0x77, 0x40, 0x9d, 0x35, 0xf0, 0x12, + 0xf0, 0x78, 0x18, 0xfb, 0x22, 0xa4, 0xde, 0x98, 0x4b, 0x78, 0x81, 0xe6, + 0x4d, 0x86, 0xe3, 0x91, 0x0f, 0x42, 0xe3, 0xb9, 0xdc, 0xa0, 0xd6, 0xff, + 0xa9, 0xf8, 0xb1, 0x79, 0x97, 0x99, 0xd1, 0xc3, 0x6c, 0x42, 0xa5, 0x92, + 0x94, 0xe0, 0x5d, 0x0c, 0x33, 0x18, 0x25, 0xc9, 0x2b, 0x95, 0x53, 0xe0, + 0xe5, 0xa9, 0x0c, 0x7d, 0x47, 0xfe, 0x7f, 0x51, 0x31, 0x44, 0x5e, 0xf7, + 0x2a, 0x1e, 0x35, 0xa2, 0x94, 0x32, 0xf7, 0xc9, 0xee, 0xc0, 0xb6, 0xc6, + 0x9a, 0xac, 0xde, 0x99, 0x21, 0x6a, 0x23, 0xa0, 0x38, 0x64, 0xee, 0xa3, + 0xc4, 0x88, 0x73, 0x32, 0x3b, 0x50, 0xce, 0xbf, 0xad, 0xd3, 0x75, 0x1e, + 0xa6, 0xf4, 0xe9, 0xf9, 0x42, 0x6b, 0x60, 0xb2, 0xdd, 0x45, 0xfd, 0x5d, + 0x57, 0x08, 0xce, 0x2d, 0x50, 0xe6, 0x12, 0x32, 0x16, 0x13, 0x8a, 0xf2, + 0x94, 0xa2, 0x9b, 0x47, 0xa8, 0x86, 0x7f, 0xd9, 0x98, 0xe5, 0xf7, 0xe5, + 0x76, 0x74, 0x64, 0xd8, 0x91, 0xbc, 0x84, 0x16, 0x28, 0xd8, 0x25, 0x44, + 0x30, 0x7e, 0x82, 0xd8, 0xac, 0xb1, 0xe4, 0xc0, 0xe4, 0x15, 0x6c, 0xdb, + 0xb6, 0x24, 0x27, 0x02, 0x2a, 0x01, 0x12, 0x85, 0xba, 0x31, 0x88, 0x58, + 0x47, 0x74, 0xe3, 0xb8, 0xd2, 0x64, 0xa6, 0xc3, 0x32, 0x59, 0x2e, 0x29, + 0x4b, 0x45, 0xf1, 0x5b, 0x89, 0x49, 0x2e, 0x82, 0x9a, 0xc6, 0x18, 0x15, + 0x44, 0xd0, 0x2e, 0x64, 0x01, 0x15, 0x68, 0x38, 0xf9, 0xf6, 0xf9, 0x66, + 0x03, 0x0c, 0x55, 0x1b, 0x9d, 0xbf, 0x00, 0x40, 0xae, 0xf0, 0x48, 0x27, + 0x4c, 0xe0, 0x80, 0x5e, 0x2d, 0xb9, 0x2a, 0x15, 0x7a, 0xbc, 0x66, 0xf8, + 0x35, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 04:00:00:00:00:01:44:4e:f0:3e:20 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA + Validity + Not Before: Feb 20 10:00:00 2014 GMT + Not After : Feb 20 10:00:00 2024 GMT + Subject: C=BE, O=GlobalSign nv-sa, CN=GlobalSign Domain Validation CA - SHA256 - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:a9:dd:cc:0e:b3:e2:32:39:dd:49:22:a8:13:69: + 93:87:88:e1:0c:ee:71:7d:bd:90:87:96:5d:59:f2: + cc:b3:d2:58:57:57:f9:46:ef:6c:26:d8:36:42:8e: + 7e:30:b3:2f:9a:3e:53:7b:1f:6e:b6:a2:4c:45:1f: + 3c:d3:15:93:1c:89:ed:3c:f4:57:de:ca:bd:ec:06: + 9a:6a:2a:a0:19:52:7f:51:d1:74:39:08:9f:ab:eb: + d7:86:13:15:97:ae:36:c3:54:66:0e:5a:f2:a0:73: + 85:31:e3:b2:64:14:6a:ff:a5:a2:8e:24:bb:bd:85: + 52:15:a2:79:ee:f0:b5:ee:3d:b8:f4:7d:80:bc:d9: + 90:35:65:b8:17:a9:ad:b3:98:9f:a0:7e:7d:6e:fb: + 3f:ad:7c:c2:1b:59:36:96:da:37:32:4b:4b:5d:35: + 02:63:8e:db:a7:cf:62:ee:cc:2e:d4:8d:c9:bd:3c: + 6a:91:72:a2:22:a7:72:2d:20:d1:fa:ca:37:da:18: + 98:e6:16:24:71:25:4b:c4:e5:7b:89:52:09:02:fd: + 59:2b:04:6e:ca:07:81:d4:b3:da:da:db:e3:cc:80: + a8:56:07:06:7c:96:08:37:9d:db:38:b6:62:34:91: + 62:07:74:01:38:d8:72:30:e2:eb:90:71:26:62:c0: + 57:f3 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Subject Key Identifier: + EA:4E:7C:D4:80:2D:E5:15:81:86:26:8C:82:6D:C0:98:A4:CF:97:0F + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.globalsign.com/repository/ + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.globalsign.net/root.crl + + Authority Information Access: + OCSP - URI:http://ocsp.globalsign.com/rootr1 + + X509v3 Authority Key Identifier: + keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B + + Signature Algorithm: sha256WithRSAEncryption + d7:45:9e:a0:dc:e0:e3:61:5a:0b:7d:77:84:17:2d:65:5a:82: + 9a:8d:a3:27:2a:85:f7:c9:ef:e9:86:fd:d4:47:cd:01:52:96: + c5:43:bd:37:b1:e1:b8:f2:a9:d2:8a:11:84:71:91:15:89:dc: + 02:9d:0b:cb:6c:33:85:34:28:9e:20:b2:b1:97:dc:6d:0b:10: + c1:3c:cd:5f:ea:5d:d7:98:31:c5:34:99:5c:00:61:55:c4:1b: + 02:5b:c5:e3:89:c8:b4:b8:6f:1e:38:f2:56:26:e9:41:ef:3d: + cd:ac:99:4f:59:4a:57:2d:4b:7d:ae:c7:88:fb:d6:98:3b:f5: + e5:f0:e8:89:89:b9:8b:03:cb:5a:23:1f:a4:fd:b8:ea:fb:2e: + 9d:ae:6a:73:09:bc:fc:d5:a0:b5:44:82:ab:44:91:2e:50:2e: + 57:c1:43:d8:91:04:8b:e9:11:2e:5f:b4:3f:79:df:1e:fb:3f: + 30:00:8b:53:e3:b7:2c:1d:3b:4d:8b:dc:e4:64:1d:04:58:33: + af:1b:55:e7:ab:0c:bf:30:04:74:e4:f3:0e:2f:30:39:8d:4b: + 04:8c:1e:75:66:66:49:e0:be:40:34:c7:5c:5a:51:92:ba:12: + 3c:52:d5:04:82:55:2d:67:a5:df:b7:95:7c:ee:3f:c3:08:ba: + 04:be:c0:46 +-----BEGIN CERTIFICATE----- +MIIEYzCCA0ugAwIBAgILBAAAAAABRE7wPiAwDQYJKoZIhvcNAQELBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw +MDBaFw0yNDAyMjAxMDAwMDBaMGAxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMTYwNAYDVQQDEy1HbG9iYWxTaWduIERvbWFpbiBWYWxpZGF0 +aW9uIENBIC0gU0hBMjU2IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCp3cwOs+IyOd1JIqgTaZOHiOEM7nF9vZCHll1Z8syz0lhXV/lG72wm2DZC +jn4wsy+aPlN7H262okxFHzzTFZMcie089Ffeyr3sBppqKqAZUn9R0XQ5CJ+r69eG +ExWXrjbDVGYOWvKgc4Ux47JkFGr/paKOJLu9hVIVonnu8LXuPbj0fYC82ZA1ZbgX +qa2zmJ+gfn1u+z+tfMIbWTaW2jcyS0tdNQJjjtunz2LuzC7Ujcm9PGqRcqIip3It +INH6yjfaGJjmFiRxJUvE5XuJUgkC/VkrBG7KB4HUs9ra2+PMgKhWBwZ8lgg3nds4 +tmI0kWIHdAE42HIw4uuQcSZiwFfzAgMBAAGjggElMIIBITAOBgNVHQ8BAf8EBAMC +AQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU6k581IAt5RWBhiaMgm3A +mKTPlw8wRwYDVR0gBEAwPjA8BgRVHSAAMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8v +d3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMDMGA1UdHwQsMCowKKAmoCSG +Imh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvcm9vdC5jcmwwPQYIKwYBBQUHAQEE +MTAvMC0GCCsGAQUFBzABhiFodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9yb290 +cjEwHwYDVR0jBBgwFoAUYHtmGkUNl8qJUC99BM00qP/8/UswDQYJKoZIhvcNAQEL +BQADggEBANdFnqDc4ONhWgt9d4QXLWVagpqNoycqhffJ7+mG/dRHzQFSlsVDvTex +4bjyqdKKEYRxkRWJ3AKdC8tsM4U0KJ4gsrGX3G0LEME8zV/qXdeYMcU0mVwAYVXE +GwJbxeOJyLS4bx448lYm6UHvPc2smU9ZSlctS32ux4j71pg79eXw6ImJuYsDy1oj +H6T9uOr7Lp2uanMJvPzVoLVEgqtEkS5QLlfBQ9iRBIvpES5ftD953x77PzAAi1Pj +tywdO02L3ORkHQRYM68bVeerDL8wBHTk8w4vMDmNSwSMHnVmZkngvkA0x1xaUZK6 +EjxS1QSCVS1npd+3lXzuP8MIugS+wEY= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_12[] = { + 0x30, 0x82, 0x04, 0x63, 0x30, 0x82, 0x03, 0x4b, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4e, 0xf0, + 0x3e, 0x20, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x07, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, + 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, + 0x17, 0x0d, 0x31, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x60, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, + 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, + 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x53, 0x48, 0x41, + 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xa9, 0xdd, 0xcc, 0x0e, 0xb3, 0xe2, 0x32, + 0x39, 0xdd, 0x49, 0x22, 0xa8, 0x13, 0x69, 0x93, 0x87, 0x88, 0xe1, 0x0c, + 0xee, 0x71, 0x7d, 0xbd, 0x90, 0x87, 0x96, 0x5d, 0x59, 0xf2, 0xcc, 0xb3, + 0xd2, 0x58, 0x57, 0x57, 0xf9, 0x46, 0xef, 0x6c, 0x26, 0xd8, 0x36, 0x42, + 0x8e, 0x7e, 0x30, 0xb3, 0x2f, 0x9a, 0x3e, 0x53, 0x7b, 0x1f, 0x6e, 0xb6, + 0xa2, 0x4c, 0x45, 0x1f, 0x3c, 0xd3, 0x15, 0x93, 0x1c, 0x89, 0xed, 0x3c, + 0xf4, 0x57, 0xde, 0xca, 0xbd, 0xec, 0x06, 0x9a, 0x6a, 0x2a, 0xa0, 0x19, + 0x52, 0x7f, 0x51, 0xd1, 0x74, 0x39, 0x08, 0x9f, 0xab, 0xeb, 0xd7, 0x86, + 0x13, 0x15, 0x97, 0xae, 0x36, 0xc3, 0x54, 0x66, 0x0e, 0x5a, 0xf2, 0xa0, + 0x73, 0x85, 0x31, 0xe3, 0xb2, 0x64, 0x14, 0x6a, 0xff, 0xa5, 0xa2, 0x8e, + 0x24, 0xbb, 0xbd, 0x85, 0x52, 0x15, 0xa2, 0x79, 0xee, 0xf0, 0xb5, 0xee, + 0x3d, 0xb8, 0xf4, 0x7d, 0x80, 0xbc, 0xd9, 0x90, 0x35, 0x65, 0xb8, 0x17, + 0xa9, 0xad, 0xb3, 0x98, 0x9f, 0xa0, 0x7e, 0x7d, 0x6e, 0xfb, 0x3f, 0xad, + 0x7c, 0xc2, 0x1b, 0x59, 0x36, 0x96, 0xda, 0x37, 0x32, 0x4b, 0x4b, 0x5d, + 0x35, 0x02, 0x63, 0x8e, 0xdb, 0xa7, 0xcf, 0x62, 0xee, 0xcc, 0x2e, 0xd4, + 0x8d, 0xc9, 0xbd, 0x3c, 0x6a, 0x91, 0x72, 0xa2, 0x22, 0xa7, 0x72, 0x2d, + 0x20, 0xd1, 0xfa, 0xca, 0x37, 0xda, 0x18, 0x98, 0xe6, 0x16, 0x24, 0x71, + 0x25, 0x4b, 0xc4, 0xe5, 0x7b, 0x89, 0x52, 0x09, 0x02, 0xfd, 0x59, 0x2b, + 0x04, 0x6e, 0xca, 0x07, 0x81, 0xd4, 0xb3, 0xda, 0xda, 0xdb, 0xe3, 0xcc, + 0x80, 0xa8, 0x56, 0x07, 0x06, 0x7c, 0x96, 0x08, 0x37, 0x9d, 0xdb, 0x38, + 0xb6, 0x62, 0x34, 0x91, 0x62, 0x07, 0x74, 0x01, 0x38, 0xd8, 0x72, 0x30, + 0xe2, 0xeb, 0x90, 0x71, 0x26, 0x62, 0xc0, 0x57, 0xf3, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x25, 0x30, 0x82, 0x01, 0x21, 0x30, 0x0e, + 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, + 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, + 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xea, 0x4e, 0x7c, + 0xd4, 0x80, 0x2d, 0xe5, 0x15, 0x81, 0x86, 0x26, 0x8c, 0x82, 0x6d, 0xc0, + 0x98, 0xa4, 0xcf, 0x97, 0x0f, 0x30, 0x47, 0x06, 0x03, 0x55, 0x1d, 0x20, + 0x04, 0x40, 0x30, 0x3e, 0x30, 0x3c, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, + 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, + 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, + 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, + 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, + 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x6e, + 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, + 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, + 0x72, 0x31, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, 0x1a, 0x45, 0x0d, 0x97, 0xca, 0x89, + 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, 0xa8, 0xff, 0xfc, 0xfd, 0x4b, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xd7, 0x45, 0x9e, 0xa0, 0xdc, + 0xe0, 0xe3, 0x61, 0x5a, 0x0b, 0x7d, 0x77, 0x84, 0x17, 0x2d, 0x65, 0x5a, + 0x82, 0x9a, 0x8d, 0xa3, 0x27, 0x2a, 0x85, 0xf7, 0xc9, 0xef, 0xe9, 0x86, + 0xfd, 0xd4, 0x47, 0xcd, 0x01, 0x52, 0x96, 0xc5, 0x43, 0xbd, 0x37, 0xb1, + 0xe1, 0xb8, 0xf2, 0xa9, 0xd2, 0x8a, 0x11, 0x84, 0x71, 0x91, 0x15, 0x89, + 0xdc, 0x02, 0x9d, 0x0b, 0xcb, 0x6c, 0x33, 0x85, 0x34, 0x28, 0x9e, 0x20, + 0xb2, 0xb1, 0x97, 0xdc, 0x6d, 0x0b, 0x10, 0xc1, 0x3c, 0xcd, 0x5f, 0xea, + 0x5d, 0xd7, 0x98, 0x31, 0xc5, 0x34, 0x99, 0x5c, 0x00, 0x61, 0x55, 0xc4, + 0x1b, 0x02, 0x5b, 0xc5, 0xe3, 0x89, 0xc8, 0xb4, 0xb8, 0x6f, 0x1e, 0x38, + 0xf2, 0x56, 0x26, 0xe9, 0x41, 0xef, 0x3d, 0xcd, 0xac, 0x99, 0x4f, 0x59, + 0x4a, 0x57, 0x2d, 0x4b, 0x7d, 0xae, 0xc7, 0x88, 0xfb, 0xd6, 0x98, 0x3b, + 0xf5, 0xe5, 0xf0, 0xe8, 0x89, 0x89, 0xb9, 0x8b, 0x03, 0xcb, 0x5a, 0x23, + 0x1f, 0xa4, 0xfd, 0xb8, 0xea, 0xfb, 0x2e, 0x9d, 0xae, 0x6a, 0x73, 0x09, + 0xbc, 0xfc, 0xd5, 0xa0, 0xb5, 0x44, 0x82, 0xab, 0x44, 0x91, 0x2e, 0x50, + 0x2e, 0x57, 0xc1, 0x43, 0xd8, 0x91, 0x04, 0x8b, 0xe9, 0x11, 0x2e, 0x5f, + 0xb4, 0x3f, 0x79, 0xdf, 0x1e, 0xfb, 0x3f, 0x30, 0x00, 0x8b, 0x53, 0xe3, + 0xb7, 0x2c, 0x1d, 0x3b, 0x4d, 0x8b, 0xdc, 0xe4, 0x64, 0x1d, 0x04, 0x58, + 0x33, 0xaf, 0x1b, 0x55, 0xe7, 0xab, 0x0c, 0xbf, 0x30, 0x04, 0x74, 0xe4, + 0xf3, 0x0e, 0x2f, 0x30, 0x39, 0x8d, 0x4b, 0x04, 0x8c, 0x1e, 0x75, 0x66, + 0x66, 0x49, 0xe0, 0xbe, 0x40, 0x34, 0xc7, 0x5c, 0x5a, 0x51, 0x92, 0xba, + 0x12, 0x3c, 0x52, 0xd5, 0x04, 0x82, 0x55, 0x2d, 0x67, 0xa5, 0xdf, 0xb7, + 0x95, 0x7c, 0xee, 0x3f, 0xc3, 0x08, 0xba, 0x04, 0xbe, 0xc0, 0x46, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 04:00:00:00:00:01:44:4e:f0:42:47 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA + Validity + Not Before: Feb 20 10:00:00 2014 GMT + Not After : Feb 20 10:00:00 2024 GMT + Subject: C=BE, O=GlobalSign nv-sa, CN=GlobalSign Organization Validation CA - SHA256 - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:c7:0e:6c:3f:23:93:7f:cc:70:a5:9d:20:c3:0e: + 53:3f:7e:c0:4e:c2:98:49:ca:47:d5:23:ef:03:34: + 85:74:c8:a3:02:2e:46:5c:0b:7d:c9:88:9d:4f:8b: + f0:f8:9c:6c:8c:55:35:db:bf:f2:b3:ea:fb:e3:56: + e7:4a:46:d9:13:22:ca:36:d5:9b:c1:a8:e3:96:43: + 93:f2:0c:bc:e6:f9:e6:e8:99:c8:63:48:78:7f:57: + 36:69:1a:19:1d:5a:d1:d4:7d:c2:9c:d4:7f:e1:80: + 12:ae:7a:ea:88:ea:57:d8:ca:0a:0a:3a:12:49:a2: + 62:19:7a:0d:24:f7:37:eb:b4:73:92:7b:05:23:9b: + 12:b5:ce:eb:29:df:a4:14:02:b9:01:a5:d4:a6:9c: + 43:64:88:de:f8:7e:fe:e3:f5:1e:e5:fe:dc:a3:a8: + e4:66:31:d9:4c:25:e9:18:b9:89:59:09:ae:e9:9d: + 1c:6d:37:0f:4a:1e:35:20:28:e2:af:d4:21:8b:01: + c4:45:ad:6e:2b:63:ab:92:6b:61:0a:4d:20:ed:73: + ba:7c:ce:fe:16:b5:db:9f:80:f0:d6:8b:6c:d9:08: + 79:4a:4f:78:65:da:92:bc:be:35:f9:b3:c4:f9:27: + 80:4e:ff:96:52:e6:02:20:e1:07:73:e9:5d:2b:bd: + b2:f1 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Subject Key Identifier: + 96:DE:61:F1:BD:1C:16:29:53:1C:C0:CC:7D:3B:83:00:40:E6:1A:7C + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.globalsign.com/repository/ + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.globalsign.net/root.crl + + Authority Information Access: + OCSP - URI:http://ocsp.globalsign.com/rootr1 + + X509v3 Authority Key Identifier: + keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B + + Signature Algorithm: sha256WithRSAEncryption + 46:2a:ee:5e:bd:ae:01:60:37:31:11:86:71:74:b6:46:49:c8: + 10:16:fe:2f:62:23:17:ab:1f:87:f8:82:ed:ca:df:0e:2c:df: + 64:75:8e:e5:18:72:a7:8c:3a:8b:c9:ac:a5:77:50:f7:ef:9e: + a4:e0:a0:8f:14:57:a3:2a:5f:ec:7e:6d:10:e6:ba:8d:b0:08: + 87:76:0e:4c:b2:d9:51:bb:11:02:f2:5c:dd:1c:bd:f3:55:96: + 0f:d4:06:c0:fc:e2:23:8a:24:70:d3:bb:f0:79:1a:a7:61:70: + 83:8a:af:06:c5:20:d8:a1:63:d0:6c:ae:4f:32:d7:ae:7c:18: + 45:75:05:29:77:df:42:40:64:64:86:be:2a:76:09:31:6f:1d: + 24:f4:99:d0:85:fe:f2:21:08:f9:c6:f6:f1:d0:59:ed:d6:56: + 3c:08:28:03:67:ba:f0:f9:f1:90:16:47:ae:67:e6:bc:80:48: + e9:42:76:34:97:55:69:24:0e:83:d6:a0:2d:b4:f5:f3:79:8a: + 49:28:74:1a:41:a1:c2:d3:24:88:35:30:60:94:17:b4:e1:04: + 22:31:3d:3b:2f:17:06:b2:b8:9d:86:2b:5a:69:ef:83:f5:4b: + c4:aa:b4:2a:f8:7c:a1:b1:85:94:8c:f4:0c:87:0c:f4:ac:40: + f8:59:49:98 +-----BEGIN CERTIFICATE----- +MIIEaTCCA1GgAwIBAgILBAAAAAABRE7wQkcwDQYJKoZIhvcNAQELBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw +MDBaFw0yNDAyMjAxMDAwMDBaMGYxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMTwwOgYDVQQDEzNHbG9iYWxTaWduIE9yZ2FuaXphdGlvbiBW +YWxpZGF0aW9uIENBIC0gU0hBMjU2IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDHDmw/I5N/zHClnSDDDlM/fsBOwphJykfVI+8DNIV0yKMCLkZc +C33JiJ1Pi/D4nGyMVTXbv/Kz6vvjVudKRtkTIso21ZvBqOOWQ5PyDLzm+ebomchj +SHh/VzZpGhkdWtHUfcKc1H/hgBKueuqI6lfYygoKOhJJomIZeg0k9zfrtHOSewUj +mxK1zusp36QUArkBpdSmnENkiN74fv7j9R7l/tyjqORmMdlMJekYuYlZCa7pnRxt +Nw9KHjUgKOKv1CGLAcRFrW4rY6uSa2EKTSDtc7p8zv4WtdufgPDWi2zZCHlKT3hl +2pK8vjX5s8T5J4BO/5ZS5gIg4Qdz6V0rvbLxAgMBAAGjggElMIIBITAOBgNVHQ8B +Af8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUlt5h8b0cFilT +HMDMfTuDAEDmGnwwRwYDVR0gBEAwPjA8BgRVHSAAMDQwMgYIKwYBBQUHAgEWJmh0 +dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMDMGA1UdHwQsMCow +KKAmoCSGImh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvcm9vdC5jcmwwPQYIKwYB +BQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNv +bS9yb290cjEwHwYDVR0jBBgwFoAUYHtmGkUNl8qJUC99BM00qP/8/UswDQYJKoZI +hvcNAQELBQADggEBAEYq7l69rgFgNzERhnF0tkZJyBAW/i9iIxerH4f4gu3K3w4s +32R1juUYcqeMOovJrKV3UPfvnqTgoI8UV6MqX+x+bRDmuo2wCId2Dkyy2VG7EQLy +XN0cvfNVlg/UBsD84iOKJHDTu/B5GqdhcIOKrwbFINihY9Bsrk8y1658GEV1BSl3 +30JAZGSGvip2CTFvHST0mdCF/vIhCPnG9vHQWe3WVjwIKANnuvD58ZAWR65n5ryA +SOlCdjSXVWkkDoPWoC209fN5ikkodBpBocLTJIg1MGCUF7ThBCIxPTsvFwayuJ2G +K1pp74P1S8SqtCr4fKGxhZSM9AyHDPSsQPhZSZg= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_13[] = { + 0x30, 0x82, 0x04, 0x69, 0x30, 0x82, 0x03, 0x51, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4e, 0xf0, + 0x42, 0x47, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x07, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, + 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e, + 0x17, 0x0d, 0x31, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x66, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, + 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, + 0x31, 0x3c, 0x30, 0x3a, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x33, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x43, 0x41, + 0x20, 0x2d, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, + 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xc7, + 0x0e, 0x6c, 0x3f, 0x23, 0x93, 0x7f, 0xcc, 0x70, 0xa5, 0x9d, 0x20, 0xc3, + 0x0e, 0x53, 0x3f, 0x7e, 0xc0, 0x4e, 0xc2, 0x98, 0x49, 0xca, 0x47, 0xd5, + 0x23, 0xef, 0x03, 0x34, 0x85, 0x74, 0xc8, 0xa3, 0x02, 0x2e, 0x46, 0x5c, + 0x0b, 0x7d, 0xc9, 0x88, 0x9d, 0x4f, 0x8b, 0xf0, 0xf8, 0x9c, 0x6c, 0x8c, + 0x55, 0x35, 0xdb, 0xbf, 0xf2, 0xb3, 0xea, 0xfb, 0xe3, 0x56, 0xe7, 0x4a, + 0x46, 0xd9, 0x13, 0x22, 0xca, 0x36, 0xd5, 0x9b, 0xc1, 0xa8, 0xe3, 0x96, + 0x43, 0x93, 0xf2, 0x0c, 0xbc, 0xe6, 0xf9, 0xe6, 0xe8, 0x99, 0xc8, 0x63, + 0x48, 0x78, 0x7f, 0x57, 0x36, 0x69, 0x1a, 0x19, 0x1d, 0x5a, 0xd1, 0xd4, + 0x7d, 0xc2, 0x9c, 0xd4, 0x7f, 0xe1, 0x80, 0x12, 0xae, 0x7a, 0xea, 0x88, + 0xea, 0x57, 0xd8, 0xca, 0x0a, 0x0a, 0x3a, 0x12, 0x49, 0xa2, 0x62, 0x19, + 0x7a, 0x0d, 0x24, 0xf7, 0x37, 0xeb, 0xb4, 0x73, 0x92, 0x7b, 0x05, 0x23, + 0x9b, 0x12, 0xb5, 0xce, 0xeb, 0x29, 0xdf, 0xa4, 0x14, 0x02, 0xb9, 0x01, + 0xa5, 0xd4, 0xa6, 0x9c, 0x43, 0x64, 0x88, 0xde, 0xf8, 0x7e, 0xfe, 0xe3, + 0xf5, 0x1e, 0xe5, 0xfe, 0xdc, 0xa3, 0xa8, 0xe4, 0x66, 0x31, 0xd9, 0x4c, + 0x25, 0xe9, 0x18, 0xb9, 0x89, 0x59, 0x09, 0xae, 0xe9, 0x9d, 0x1c, 0x6d, + 0x37, 0x0f, 0x4a, 0x1e, 0x35, 0x20, 0x28, 0xe2, 0xaf, 0xd4, 0x21, 0x8b, + 0x01, 0xc4, 0x45, 0xad, 0x6e, 0x2b, 0x63, 0xab, 0x92, 0x6b, 0x61, 0x0a, + 0x4d, 0x20, 0xed, 0x73, 0xba, 0x7c, 0xce, 0xfe, 0x16, 0xb5, 0xdb, 0x9f, + 0x80, 0xf0, 0xd6, 0x8b, 0x6c, 0xd9, 0x08, 0x79, 0x4a, 0x4f, 0x78, 0x65, + 0xda, 0x92, 0xbc, 0xbe, 0x35, 0xf9, 0xb3, 0xc4, 0xf9, 0x27, 0x80, 0x4e, + 0xff, 0x96, 0x52, 0xe6, 0x02, 0x20, 0xe1, 0x07, 0x73, 0xe9, 0x5d, 0x2b, + 0xbd, 0xb2, 0xf1, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x25, + 0x30, 0x82, 0x01, 0x21, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, + 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, + 0xff, 0x02, 0x01, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, + 0x16, 0x04, 0x14, 0x96, 0xde, 0x61, 0xf1, 0xbd, 0x1c, 0x16, 0x29, 0x53, + 0x1c, 0xc0, 0xcc, 0x7d, 0x3b, 0x83, 0x00, 0x40, 0xe6, 0x1a, 0x7c, 0x30, + 0x47, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x40, 0x30, 0x3e, 0x30, 0x3c, + 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, + 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, + 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, + 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, + 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x72, 0x31, 0x30, 0x1f, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, + 0x1a, 0x45, 0x0d, 0x97, 0xca, 0x89, 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, + 0xa8, 0xff, 0xfc, 0xfd, 0x4b, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, + 0x00, 0x46, 0x2a, 0xee, 0x5e, 0xbd, 0xae, 0x01, 0x60, 0x37, 0x31, 0x11, + 0x86, 0x71, 0x74, 0xb6, 0x46, 0x49, 0xc8, 0x10, 0x16, 0xfe, 0x2f, 0x62, + 0x23, 0x17, 0xab, 0x1f, 0x87, 0xf8, 0x82, 0xed, 0xca, 0xdf, 0x0e, 0x2c, + 0xdf, 0x64, 0x75, 0x8e, 0xe5, 0x18, 0x72, 0xa7, 0x8c, 0x3a, 0x8b, 0xc9, + 0xac, 0xa5, 0x77, 0x50, 0xf7, 0xef, 0x9e, 0xa4, 0xe0, 0xa0, 0x8f, 0x14, + 0x57, 0xa3, 0x2a, 0x5f, 0xec, 0x7e, 0x6d, 0x10, 0xe6, 0xba, 0x8d, 0xb0, + 0x08, 0x87, 0x76, 0x0e, 0x4c, 0xb2, 0xd9, 0x51, 0xbb, 0x11, 0x02, 0xf2, + 0x5c, 0xdd, 0x1c, 0xbd, 0xf3, 0x55, 0x96, 0x0f, 0xd4, 0x06, 0xc0, 0xfc, + 0xe2, 0x23, 0x8a, 0x24, 0x70, 0xd3, 0xbb, 0xf0, 0x79, 0x1a, 0xa7, 0x61, + 0x70, 0x83, 0x8a, 0xaf, 0x06, 0xc5, 0x20, 0xd8, 0xa1, 0x63, 0xd0, 0x6c, + 0xae, 0x4f, 0x32, 0xd7, 0xae, 0x7c, 0x18, 0x45, 0x75, 0x05, 0x29, 0x77, + 0xdf, 0x42, 0x40, 0x64, 0x64, 0x86, 0xbe, 0x2a, 0x76, 0x09, 0x31, 0x6f, + 0x1d, 0x24, 0xf4, 0x99, 0xd0, 0x85, 0xfe, 0xf2, 0x21, 0x08, 0xf9, 0xc6, + 0xf6, 0xf1, 0xd0, 0x59, 0xed, 0xd6, 0x56, 0x3c, 0x08, 0x28, 0x03, 0x67, + 0xba, 0xf0, 0xf9, 0xf1, 0x90, 0x16, 0x47, 0xae, 0x67, 0xe6, 0xbc, 0x80, + 0x48, 0xe9, 0x42, 0x76, 0x34, 0x97, 0x55, 0x69, 0x24, 0x0e, 0x83, 0xd6, + 0xa0, 0x2d, 0xb4, 0xf5, 0xf3, 0x79, 0x8a, 0x49, 0x28, 0x74, 0x1a, 0x41, + 0xa1, 0xc2, 0xd3, 0x24, 0x88, 0x35, 0x30, 0x60, 0x94, 0x17, 0xb4, 0xe1, + 0x04, 0x22, 0x31, 0x3d, 0x3b, 0x2f, 0x17, 0x06, 0xb2, 0xb8, 0x9d, 0x86, + 0x2b, 0x5a, 0x69, 0xef, 0x83, 0xf5, 0x4b, 0xc4, 0xaa, 0xb4, 0x2a, 0xf8, + 0x7c, 0xa1, 0xb1, 0x85, 0x94, 0x8c, 0xf4, 0x0c, 0x87, 0x0c, 0xf4, 0xac, + 0x40, 0xf8, 0x59, 0x49, 0x98, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 4d:5f:2c:34:08:b2:4c:20:cd:6d:50:7e:24:4d:c9:ec + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2006 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA + Validity + Not Before: Feb 8 00:00:00 2010 GMT + Not After : Feb 7 23:59:59 2020 GMT + Subject: C=US, O=Thawte, Inc., CN=Thawte SSL CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:99:e4:85:5b:76:49:7d:2f:05:d8:c5:ac:c8:c8: + a9:d3:dc:98:e6:d7:34:a6:2f:0c:f2:22:26:d8:a3: + c9:14:4c:8f:05:a4:45:e8:14:0c:58:90:05:1a:b7: + c5:c1:06:a5:80:af:bb:1d:49:6b:52:34:88:c3:59: + e7:ef:6b:c4:27:41:8c:2b:66:1d:d0:e0:a3:97:98: + 19:34:4b:41:d5:98:d5:c7:05:ad:a2:e4:d7:ed:0c: + ad:4f:c1:b5:b0:21:fd:3e:50:53:b2:c4:90:d0:d4: + 30:67:6c:9a:f1:0e:74:c4:c2:dc:8a:e8:97:ff:c9: + 92:ae:01:8a:56:0a:98:32:b0:00:23:ec:90:1a:60: + c3:ed:bb:3a:cb:0f:63:9f:0d:44:c9:52:e1:25:96: + bf:ed:50:95:89:7f:56:14:b1:b7:61:1d:1c:07:8c: + 3a:2c:f7:ff:80:de:39:45:d5:af:1a:d1:78:d8:c7: + 71:6a:a3:19:a7:32:50:21:e9:f2:0e:a1:c6:13:03: + 44:48:d1:66:a8:52:57:d7:11:b4:93:8b:e5:99:9f: + 5d:e7:78:51:e5:4d:f6:b7:59:b4:76:b5:09:37:4d: + 06:38:13:7a:1c:08:98:5c:c4:48:4a:cb:52:a0:a9: + f8:b1:9d:8e:7b:79:b0:20:2f:3c:96:a8:11:62:47: + bb:11 + Exponent: 65537 (0x10001) + X509v3 extensions: + Authority Information Access: + OCSP - URI:http://ocsp.thawte.com + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.thawte.com/ThawtePCA.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Alternative Name: + DirName:/CN=VeriSignMPKI-2-9 + X509v3 Subject Key Identifier: + A7:A2:83:BB:34:45:40:3D:FC:D5:30:4F:12:B9:3E:A1:01:9F:F6:DB + X509v3 Authority Key Identifier: + keyid:7B:5B:45:CF:AF:CE:CB:7A:FD:31:92:1A:6A:B6:F3:46:EB:57:48:50 + + Signature Algorithm: sha1WithRSAEncryption + 80:22:80:e0:6c:c8:95:16:d7:57:26:87:f3:72:34:db:c6:72: + 56:27:3e:d3:96:f6:2e:25:91:a5:3e:33:97:a7:4b:e5:2f:fb: + 25:7d:2f:07:61:fa:6f:83:74:4c:4c:53:72:20:a4:7a:cf:51: + 51:56:81:88:b0:6d:1f:36:2c:c8:2b:b1:88:99:c1:fe:44:ab: + 48:51:7c:d8:f2:44:64:2a:d8:71:a7:fb:1a:2f:f9:19:8d:34: + b2:23:bf:c4:4c:55:1d:8e:44:e8:aa:5d:9a:dd:9f:fd:03:c7: + ba:24:43:8d:2d:47:44:db:f6:d8:98:c8:b2:f9:da:ef:ed:29: + 5c:69:12:fa:d1:23:96:0f:bf:9c:0d:f2:79:45:53:37:9a:56: + 2f:e8:57:10:70:f6:ee:89:0c:49:89:9a:c1:23:f5:c2:2a:cc: + 41:cf:22:ab:65:6e:b7:94:82:6d:2f:40:5f:58:de:eb:95:2b: + a6:72:68:52:19:91:2a:ae:75:9d:4e:92:e6:ca:de:54:ea:18: + ab:25:3c:e6:64:a6:79:1f:26:7d:61:ed:7d:d2:e5:71:55:d8: + 93:17:7c:14:38:30:3c:df:86:e3:4c:ad:49:e3:97:59:ce:1b: + 9b:2b:ce:dc:65:d4:0b:28:6b:4e:84:46:51:44:f7:33:08:2d: + 58:97:21:ae +-----BEGIN CERTIFICATE----- +MIIEbDCCA1SgAwIBAgIQTV8sNAiyTCDNbVB+JE3J7DANBgkqhkiG9w0BAQUFADCB +qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV +BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMTAwMjA4MDAwMDAwWhcNMjAw +MjA3MjM1OTU5WjA8MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMVGhhd3RlLCBJbmMu +MRYwFAYDVQQDEw1UaGF3dGUgU1NMIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAmeSFW3ZJfS8F2MWsyMip09yY5tc0pi8M8iIm2KPJFEyPBaRF6BQM +WJAFGrfFwQalgK+7HUlrUjSIw1nn72vEJ0GMK2Yd0OCjl5gZNEtB1ZjVxwWtouTX +7QytT8G1sCH9PlBTssSQ0NQwZ2ya8Q50xMLciuiX/8mSrgGKVgqYMrAAI+yQGmDD +7bs6yw9jnw1EyVLhJZa/7VCViX9WFLG3YR0cB4w6LPf/gN45RdWvGtF42MdxaqMZ +pzJQIenyDqHGEwNESNFmqFJX1xG0k4vlmZ9d53hR5U32t1m0drUJN00GOBN6HAiY +XMRISstSoKn4sZ2Oe3mwIC88lqgRYke7EQIDAQABo4H7MIH4MDIGCCsGAQUFBwEB +BCYwJDAiBggrBgEFBQcwAYYWaHR0cDovL29jc3AudGhhd3RlLmNvbTASBgNVHRMB +Af8ECDAGAQH/AgEAMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6Ly9jcmwudGhhd3Rl +LmNvbS9UaGF3dGVQQ0EuY3JsMA4GA1UdDwEB/wQEAwIBBjAoBgNVHREEITAfpB0w +GzEZMBcGA1UEAxMQVmVyaVNpZ25NUEtJLTItOTAdBgNVHQ4EFgQUp6KDuzRFQD38 +1TBPErk+oQGf9tswHwYDVR0jBBgwFoAUe1tFz6/Oy3r9MZIaarbzRutXSFAwDQYJ +KoZIhvcNAQEFBQADggEBAIAigOBsyJUW11cmh/NyNNvGclYnPtOW9i4lkaU+M5en +S+Uv+yV9Lwdh+m+DdExMU3IgpHrPUVFWgYiwbR82LMgrsYiZwf5Eq0hRfNjyRGQq +2HGn+xov+RmNNLIjv8RMVR2OROiqXZrdn/0Dx7okQ40tR0Tb9tiYyLL52u/tKVxp +EvrRI5YPv5wN8nlFUzeaVi/oVxBw9u6JDEmJmsEj9cIqzEHPIqtlbreUgm0vQF9Y +3uuVK6ZyaFIZkSqudZ1OkubK3lTqGKslPOZkpnkfJn1h7X3S5XFV2JMXfBQ4MDzf +huNMrUnjl1nOG5srztxl1Asoa06ERlFE9zMILViXIa4= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_14[] = { + 0x30, 0x82, 0x04, 0x6c, 0x30, 0x82, 0x03, 0x54, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x4d, 0x5f, 0x2c, 0x34, 0x08, 0xb2, 0x4c, 0x20, 0xcd, + 0x6d, 0x50, 0x7e, 0x24, 0x4d, 0xc9, 0xec, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, + 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x32, 0x30, 0x38, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x30, + 0x32, 0x30, 0x37, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x3c, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0d, 0x54, + 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x99, 0xe4, 0x85, + 0x5b, 0x76, 0x49, 0x7d, 0x2f, 0x05, 0xd8, 0xc5, 0xac, 0xc8, 0xc8, 0xa9, + 0xd3, 0xdc, 0x98, 0xe6, 0xd7, 0x34, 0xa6, 0x2f, 0x0c, 0xf2, 0x22, 0x26, + 0xd8, 0xa3, 0xc9, 0x14, 0x4c, 0x8f, 0x05, 0xa4, 0x45, 0xe8, 0x14, 0x0c, + 0x58, 0x90, 0x05, 0x1a, 0xb7, 0xc5, 0xc1, 0x06, 0xa5, 0x80, 0xaf, 0xbb, + 0x1d, 0x49, 0x6b, 0x52, 0x34, 0x88, 0xc3, 0x59, 0xe7, 0xef, 0x6b, 0xc4, + 0x27, 0x41, 0x8c, 0x2b, 0x66, 0x1d, 0xd0, 0xe0, 0xa3, 0x97, 0x98, 0x19, + 0x34, 0x4b, 0x41, 0xd5, 0x98, 0xd5, 0xc7, 0x05, 0xad, 0xa2, 0xe4, 0xd7, + 0xed, 0x0c, 0xad, 0x4f, 0xc1, 0xb5, 0xb0, 0x21, 0xfd, 0x3e, 0x50, 0x53, + 0xb2, 0xc4, 0x90, 0xd0, 0xd4, 0x30, 0x67, 0x6c, 0x9a, 0xf1, 0x0e, 0x74, + 0xc4, 0xc2, 0xdc, 0x8a, 0xe8, 0x97, 0xff, 0xc9, 0x92, 0xae, 0x01, 0x8a, + 0x56, 0x0a, 0x98, 0x32, 0xb0, 0x00, 0x23, 0xec, 0x90, 0x1a, 0x60, 0xc3, + 0xed, 0xbb, 0x3a, 0xcb, 0x0f, 0x63, 0x9f, 0x0d, 0x44, 0xc9, 0x52, 0xe1, + 0x25, 0x96, 0xbf, 0xed, 0x50, 0x95, 0x89, 0x7f, 0x56, 0x14, 0xb1, 0xb7, + 0x61, 0x1d, 0x1c, 0x07, 0x8c, 0x3a, 0x2c, 0xf7, 0xff, 0x80, 0xde, 0x39, + 0x45, 0xd5, 0xaf, 0x1a, 0xd1, 0x78, 0xd8, 0xc7, 0x71, 0x6a, 0xa3, 0x19, + 0xa7, 0x32, 0x50, 0x21, 0xe9, 0xf2, 0x0e, 0xa1, 0xc6, 0x13, 0x03, 0x44, + 0x48, 0xd1, 0x66, 0xa8, 0x52, 0x57, 0xd7, 0x11, 0xb4, 0x93, 0x8b, 0xe5, + 0x99, 0x9f, 0x5d, 0xe7, 0x78, 0x51, 0xe5, 0x4d, 0xf6, 0xb7, 0x59, 0xb4, + 0x76, 0xb5, 0x09, 0x37, 0x4d, 0x06, 0x38, 0x13, 0x7a, 0x1c, 0x08, 0x98, + 0x5c, 0xc4, 0x48, 0x4a, 0xcb, 0x52, 0xa0, 0xa9, 0xf8, 0xb1, 0x9d, 0x8e, + 0x7b, 0x79, 0xb0, 0x20, 0x2f, 0x3c, 0x96, 0xa8, 0x11, 0x62, 0x47, 0xbb, + 0x11, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xfb, 0x30, 0x81, 0xf8, + 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, + 0x04, 0x26, 0x30, 0x24, 0x30, 0x22, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, + 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2d, 0x30, 0x2b, 0x30, + 0x29, 0xa0, 0x27, 0xa0, 0x25, 0x86, 0x23, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, + 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x28, + 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x21, 0x30, 0x1f, 0xa4, 0x1d, 0x30, + 0x1b, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, + 0x2d, 0x32, 0x2d, 0x39, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, + 0x16, 0x04, 0x14, 0xa7, 0xa2, 0x83, 0xbb, 0x34, 0x45, 0x40, 0x3d, 0xfc, + 0xd5, 0x30, 0x4f, 0x12, 0xb9, 0x3e, 0xa1, 0x01, 0x9f, 0xf6, 0xdb, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0x7b, 0x5b, 0x45, 0xcf, 0xaf, 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, + 0x6a, 0xb6, 0xf3, 0x46, 0xeb, 0x57, 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x80, 0x22, 0x80, 0xe0, 0x6c, 0xc8, 0x95, 0x16, + 0xd7, 0x57, 0x26, 0x87, 0xf3, 0x72, 0x34, 0xdb, 0xc6, 0x72, 0x56, 0x27, + 0x3e, 0xd3, 0x96, 0xf6, 0x2e, 0x25, 0x91, 0xa5, 0x3e, 0x33, 0x97, 0xa7, + 0x4b, 0xe5, 0x2f, 0xfb, 0x25, 0x7d, 0x2f, 0x07, 0x61, 0xfa, 0x6f, 0x83, + 0x74, 0x4c, 0x4c, 0x53, 0x72, 0x20, 0xa4, 0x7a, 0xcf, 0x51, 0x51, 0x56, + 0x81, 0x88, 0xb0, 0x6d, 0x1f, 0x36, 0x2c, 0xc8, 0x2b, 0xb1, 0x88, 0x99, + 0xc1, 0xfe, 0x44, 0xab, 0x48, 0x51, 0x7c, 0xd8, 0xf2, 0x44, 0x64, 0x2a, + 0xd8, 0x71, 0xa7, 0xfb, 0x1a, 0x2f, 0xf9, 0x19, 0x8d, 0x34, 0xb2, 0x23, + 0xbf, 0xc4, 0x4c, 0x55, 0x1d, 0x8e, 0x44, 0xe8, 0xaa, 0x5d, 0x9a, 0xdd, + 0x9f, 0xfd, 0x03, 0xc7, 0xba, 0x24, 0x43, 0x8d, 0x2d, 0x47, 0x44, 0xdb, + 0xf6, 0xd8, 0x98, 0xc8, 0xb2, 0xf9, 0xda, 0xef, 0xed, 0x29, 0x5c, 0x69, + 0x12, 0xfa, 0xd1, 0x23, 0x96, 0x0f, 0xbf, 0x9c, 0x0d, 0xf2, 0x79, 0x45, + 0x53, 0x37, 0x9a, 0x56, 0x2f, 0xe8, 0x57, 0x10, 0x70, 0xf6, 0xee, 0x89, + 0x0c, 0x49, 0x89, 0x9a, 0xc1, 0x23, 0xf5, 0xc2, 0x2a, 0xcc, 0x41, 0xcf, + 0x22, 0xab, 0x65, 0x6e, 0xb7, 0x94, 0x82, 0x6d, 0x2f, 0x40, 0x5f, 0x58, + 0xde, 0xeb, 0x95, 0x2b, 0xa6, 0x72, 0x68, 0x52, 0x19, 0x91, 0x2a, 0xae, + 0x75, 0x9d, 0x4e, 0x92, 0xe6, 0xca, 0xde, 0x54, 0xea, 0x18, 0xab, 0x25, + 0x3c, 0xe6, 0x64, 0xa6, 0x79, 0x1f, 0x26, 0x7d, 0x61, 0xed, 0x7d, 0xd2, + 0xe5, 0x71, 0x55, 0xd8, 0x93, 0x17, 0x7c, 0x14, 0x38, 0x30, 0x3c, 0xdf, + 0x86, 0xe3, 0x4c, 0xad, 0x49, 0xe3, 0x97, 0x59, 0xce, 0x1b, 0x9b, 0x2b, + 0xce, 0xdc, 0x65, 0xd4, 0x0b, 0x28, 0x6b, 0x4e, 0x84, 0x46, 0x51, 0x44, + 0xf7, 0x33, 0x08, 0x2d, 0x58, 0x97, 0x21, 0xae, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 6e:8a:90:eb:cf:f0:44:8a:72:0d:08:05:d0:82:a5:44 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Primary Certification Authority + Validity + Not Before: Oct 31 00:00:00 2013 GMT + Not After : Oct 30 23:59:59 2023 GMT + Subject: C=US, O=GeoTrust Inc., CN=GeoTrust EV SSL CA - G4 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:d9:b4:05:f2:38:67:0f:09:e7:7c:f5:63:2a:e5: + b9:5e:a8:11:ae:75:71:d9:4c:84:67:ad:89:5d:fc: + 28:3d:2a:b0:a5:d5:d4:e6:30:0a:84:d4:e4:18:cb: + 85:37:c5:46:71:eb:1c:7b:69:db:65:69:8c:30:05: + 3e:07:e1:6f:3c:c1:0b:61:e6:38:44:fc:bc:8c:2f: + 4e:75:57:f5:96:99:7c:3e:87:1f:0f:90:4b:70:c3: + 3f:39:45:3b:3a:6b:cb:bb:7b:40:54:d1:8b:4b:a1: + 72:d2:04:e9:e0:72:1a:93:11:7a:2f:f1:ab:9d:9c: + 98:58:ae:2c:ea:77:5f:2f:2e:87:af:b8:6b:e3:e2: + e2:3f:d6:3d:e0:96:44:df:11:55:63:52:2f:f4:26: + 78:c4:0f:20:4d:0a:c0:68:70:15:86:38:ee:b7:76: + 88:ab:18:8f:4f:35:1e:d4:8c:c9:db:7e:3d:44:d4: + 36:8c:c1:37:b5:59:5b:87:f9:e9:f1:d4:c5:28:bd: + 1d:dc:cc:96:72:d1:7a:a1:a7:20:b5:b8:af:f8:6e: + a5:60:7b:2b:8d:1f:ee:f4:2b:d6:69:cd:af:ca:80: + 58:29:e8:4c:00:20:8a:49:0a:6e:8e:8c:a8:d1:00: + 12:84:b6:c5:e2:95:a2:c0:3b:a4:6b:f0:82:d0:96: + 5d:25 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + Authority Information Access: + OCSP - URI:http://g2.symcb.com + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.geotrust.com/resources/cps + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://g1.symcb.com/GeoTrustPCA.crl + + X509v3 Subject Alternative Name: + DirName:/CN=SymantecPKI-1-538 + X509v3 Subject Key Identifier: + DE:CF:5C:50:B7:AE:02:1F:15:17:AA:16:E8:0D:B5:28:9D:6A:5A:F3 + X509v3 Authority Key Identifier: + keyid:2C:D5:50:41:97:15:8B:F0:8F:36:61:5B:4A:FB:6B:D9:99:C9:33:92 + + Signature Algorithm: sha256WithRSAEncryption + b4:8e:bd:07:b9:9a:85:ec:3b:67:bd:07:60:61:e6:84:d1:d4: + ef:eb:1b:ba:0b:82:4b:95:64:b6:66:53:23:bd:b7:84:dd:e4: + 7b:8d:09:da:cf:b2:f5:f1:c3:bf:87:84:be:4e:a6:a8:c2:e7: + 12:39:28:34:e0:a4:56:44:40:0c:9f:88:a3:15:d3:e8:d3:5e: + e3:1c:04:60:fb:69:36:4f:6a:7e:0c:2a:28:c1:f3:aa:58:0e: + 6c:ce:1d:07:c3:4a:c0:9c:8d:c3:74:b1:ae:82:f0:1a:e1:f9: + 4e:29:bd:46:de:b7:1d:f9:7d:db:d9:0f:84:cb:92:45:cc:1c: + b3:18:f6:a0:cf:71:6f:0c:2e:9b:d2:2d:b3:99:93:83:44:ac: + 15:aa:9b:2e:67:ec:4f:88:69:05:56:7b:8b:b2:43:a9:3a:6c: + 1c:13:33:25:1b:fd:a8:c8:57:02:fb:1c:e0:d1:bd:3b:56:44: + 65:c3:63:f5:1b:ef:ec:30:d9:e3:6e:2e:13:e9:39:08:2a:0c: + 72:f3:9a:cc:f6:27:29:84:d3:ef:4c:c7:84:11:65:1f:c6:e3: + 81:03:db:87:cc:78:f7:b5:9d:96:3e:6a:7f:bc:11:85:7a:75: + e6:41:7d:0d:cf:f9:e5:85:69:25:8f:c7:8d:07:2d:f8:69:0f: + cb:41:53:00 +-----BEGIN CERTIFICATE----- +MIIEbjCCA1agAwIBAgIQboqQ68/wRIpyDQgF0IKlRDANBgkqhkiG9w0BAQsFADBY +MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo +R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xMzEw +MzEwMDAwMDBaFw0yMzEwMzAyMzU5NTlaMEcxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMSAwHgYDVQQDExdHZW9UcnVzdCBFViBTU0wgQ0EgLSBH +NDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANm0BfI4Zw8J53z1Yyrl +uV6oEa51cdlMhGetiV38KD0qsKXV1OYwCoTU5BjLhTfFRnHrHHtp22VpjDAFPgfh +bzzBC2HmOET8vIwvTnVX9ZaZfD6HHw+QS3DDPzlFOzpry7t7QFTRi0uhctIE6eBy +GpMRei/xq52cmFiuLOp3Xy8uh6+4a+Pi4j/WPeCWRN8RVWNSL/QmeMQPIE0KwGhw +FYY47rd2iKsYj081HtSMydt+PUTUNozBN7VZW4f56fHUxSi9HdzMlnLReqGnILW4 +r/hupWB7K40f7vQr1mnNr8qAWCnoTAAgikkKbo6MqNEAEoS2xeKVosA7pGvwgtCW +XSUCAwEAAaOCAUMwggE/MBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQD +AgEGMC8GCCsGAQUFBwEBBCMwITAfBggrBgEFBQcwAYYTaHR0cDovL2cyLnN5bWNi +LmNvbTBHBgNVHSAEQDA+MDwGBFUdIAAwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93 +d3cuZ2VvdHJ1c3QuY29tL3Jlc291cmNlcy9jcHMwNAYDVR0fBC0wKzApoCegJYYj +aHR0cDovL2cxLnN5bWNiLmNvbS9HZW9UcnVzdFBDQS5jcmwwKQYDVR0RBCIwIKQe +MBwxGjAYBgNVBAMTEVN5bWFudGVjUEtJLTEtNTM4MB0GA1UdDgQWBBTez1xQt64C +HxUXqhboDbUonWpa8zAfBgNVHSMEGDAWgBQs1VBBlxWL8I82YVtK+2vZmckzkjAN +BgkqhkiG9w0BAQsFAAOCAQEAtI69B7mahew7Z70HYGHmhNHU7+sbuguCS5VktmZT +I723hN3ke40J2s+y9fHDv4eEvk6mqMLnEjkoNOCkVkRADJ+IoxXT6NNe4xwEYPtp +Nk9qfgwqKMHzqlgObM4dB8NKwJyNw3SxroLwGuH5Tim9Rt63Hfl929kPhMuSRcwc +sxj2oM9xbwwum9Its5mTg0SsFaqbLmfsT4hpBVZ7i7JDqTpsHBMzJRv9qMhXAvsc +4NG9O1ZEZcNj9Rvv7DDZ424uE+k5CCoMcvOazPYnKYTT70zHhBFlH8bjgQPbh8x4 +97Wdlj5qf7wRhXp15kF9Dc/55YVpJY/HjQct+GkPy0FTAA== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_15[] = { + 0x30, 0x82, 0x04, 0x6e, 0x30, 0x82, 0x03, 0x56, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x6e, 0x8a, 0x90, 0xeb, 0xcf, 0xf0, 0x44, 0x8a, 0x72, + 0x0d, 0x08, 0x05, 0xd0, 0x82, 0xa5, 0x44, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x58, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x28, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, + 0x33, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, + 0x33, 0x31, 0x30, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, + 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x17, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, + 0x56, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, + 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, + 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xd9, 0xb4, + 0x05, 0xf2, 0x38, 0x67, 0x0f, 0x09, 0xe7, 0x7c, 0xf5, 0x63, 0x2a, 0xe5, + 0xb9, 0x5e, 0xa8, 0x11, 0xae, 0x75, 0x71, 0xd9, 0x4c, 0x84, 0x67, 0xad, + 0x89, 0x5d, 0xfc, 0x28, 0x3d, 0x2a, 0xb0, 0xa5, 0xd5, 0xd4, 0xe6, 0x30, + 0x0a, 0x84, 0xd4, 0xe4, 0x18, 0xcb, 0x85, 0x37, 0xc5, 0x46, 0x71, 0xeb, + 0x1c, 0x7b, 0x69, 0xdb, 0x65, 0x69, 0x8c, 0x30, 0x05, 0x3e, 0x07, 0xe1, + 0x6f, 0x3c, 0xc1, 0x0b, 0x61, 0xe6, 0x38, 0x44, 0xfc, 0xbc, 0x8c, 0x2f, + 0x4e, 0x75, 0x57, 0xf5, 0x96, 0x99, 0x7c, 0x3e, 0x87, 0x1f, 0x0f, 0x90, + 0x4b, 0x70, 0xc3, 0x3f, 0x39, 0x45, 0x3b, 0x3a, 0x6b, 0xcb, 0xbb, 0x7b, + 0x40, 0x54, 0xd1, 0x8b, 0x4b, 0xa1, 0x72, 0xd2, 0x04, 0xe9, 0xe0, 0x72, + 0x1a, 0x93, 0x11, 0x7a, 0x2f, 0xf1, 0xab, 0x9d, 0x9c, 0x98, 0x58, 0xae, + 0x2c, 0xea, 0x77, 0x5f, 0x2f, 0x2e, 0x87, 0xaf, 0xb8, 0x6b, 0xe3, 0xe2, + 0xe2, 0x3f, 0xd6, 0x3d, 0xe0, 0x96, 0x44, 0xdf, 0x11, 0x55, 0x63, 0x52, + 0x2f, 0xf4, 0x26, 0x78, 0xc4, 0x0f, 0x20, 0x4d, 0x0a, 0xc0, 0x68, 0x70, + 0x15, 0x86, 0x38, 0xee, 0xb7, 0x76, 0x88, 0xab, 0x18, 0x8f, 0x4f, 0x35, + 0x1e, 0xd4, 0x8c, 0xc9, 0xdb, 0x7e, 0x3d, 0x44, 0xd4, 0x36, 0x8c, 0xc1, + 0x37, 0xb5, 0x59, 0x5b, 0x87, 0xf9, 0xe9, 0xf1, 0xd4, 0xc5, 0x28, 0xbd, + 0x1d, 0xdc, 0xcc, 0x96, 0x72, 0xd1, 0x7a, 0xa1, 0xa7, 0x20, 0xb5, 0xb8, + 0xaf, 0xf8, 0x6e, 0xa5, 0x60, 0x7b, 0x2b, 0x8d, 0x1f, 0xee, 0xf4, 0x2b, + 0xd6, 0x69, 0xcd, 0xaf, 0xca, 0x80, 0x58, 0x29, 0xe8, 0x4c, 0x00, 0x20, + 0x8a, 0x49, 0x0a, 0x6e, 0x8e, 0x8c, 0xa8, 0xd1, 0x00, 0x12, 0x84, 0xb6, + 0xc5, 0xe2, 0x95, 0xa2, 0xc0, 0x3b, 0xa4, 0x6b, 0xf0, 0x82, 0xd0, 0x96, + 0x5d, 0x25, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x43, 0x30, + 0x82, 0x01, 0x3f, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x47, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x40, 0x30, 0x3e, 0x30, 0x3c, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, + 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, + 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, + 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x2d, 0x30, 0x2b, 0x30, 0x29, 0xa0, 0x27, 0xa0, 0x25, 0x86, 0x23, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x31, 0x2e, 0x73, 0x79, + 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x6f, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x50, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, + 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, + 0x2d, 0x31, 0x2d, 0x35, 0x33, 0x38, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0xde, 0xcf, 0x5c, 0x50, 0xb7, 0xae, 0x02, + 0x1f, 0x15, 0x17, 0xaa, 0x16, 0xe8, 0x0d, 0xb5, 0x28, 0x9d, 0x6a, 0x5a, + 0xf3, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0x2c, 0xd5, 0x50, 0x41, 0x97, 0x15, 0x8b, 0xf0, 0x8f, 0x36, + 0x61, 0x5b, 0x4a, 0xfb, 0x6b, 0xd9, 0x99, 0xc9, 0x33, 0x92, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xb4, 0x8e, 0xbd, 0x07, 0xb9, 0x9a, + 0x85, 0xec, 0x3b, 0x67, 0xbd, 0x07, 0x60, 0x61, 0xe6, 0x84, 0xd1, 0xd4, + 0xef, 0xeb, 0x1b, 0xba, 0x0b, 0x82, 0x4b, 0x95, 0x64, 0xb6, 0x66, 0x53, + 0x23, 0xbd, 0xb7, 0x84, 0xdd, 0xe4, 0x7b, 0x8d, 0x09, 0xda, 0xcf, 0xb2, + 0xf5, 0xf1, 0xc3, 0xbf, 0x87, 0x84, 0xbe, 0x4e, 0xa6, 0xa8, 0xc2, 0xe7, + 0x12, 0x39, 0x28, 0x34, 0xe0, 0xa4, 0x56, 0x44, 0x40, 0x0c, 0x9f, 0x88, + 0xa3, 0x15, 0xd3, 0xe8, 0xd3, 0x5e, 0xe3, 0x1c, 0x04, 0x60, 0xfb, 0x69, + 0x36, 0x4f, 0x6a, 0x7e, 0x0c, 0x2a, 0x28, 0xc1, 0xf3, 0xaa, 0x58, 0x0e, + 0x6c, 0xce, 0x1d, 0x07, 0xc3, 0x4a, 0xc0, 0x9c, 0x8d, 0xc3, 0x74, 0xb1, + 0xae, 0x82, 0xf0, 0x1a, 0xe1, 0xf9, 0x4e, 0x29, 0xbd, 0x46, 0xde, 0xb7, + 0x1d, 0xf9, 0x7d, 0xdb, 0xd9, 0x0f, 0x84, 0xcb, 0x92, 0x45, 0xcc, 0x1c, + 0xb3, 0x18, 0xf6, 0xa0, 0xcf, 0x71, 0x6f, 0x0c, 0x2e, 0x9b, 0xd2, 0x2d, + 0xb3, 0x99, 0x93, 0x83, 0x44, 0xac, 0x15, 0xaa, 0x9b, 0x2e, 0x67, 0xec, + 0x4f, 0x88, 0x69, 0x05, 0x56, 0x7b, 0x8b, 0xb2, 0x43, 0xa9, 0x3a, 0x6c, + 0x1c, 0x13, 0x33, 0x25, 0x1b, 0xfd, 0xa8, 0xc8, 0x57, 0x02, 0xfb, 0x1c, + 0xe0, 0xd1, 0xbd, 0x3b, 0x56, 0x44, 0x65, 0xc3, 0x63, 0xf5, 0x1b, 0xef, + 0xec, 0x30, 0xd9, 0xe3, 0x6e, 0x2e, 0x13, 0xe9, 0x39, 0x08, 0x2a, 0x0c, + 0x72, 0xf3, 0x9a, 0xcc, 0xf6, 0x27, 0x29, 0x84, 0xd3, 0xef, 0x4c, 0xc7, + 0x84, 0x11, 0x65, 0x1f, 0xc6, 0xe3, 0x81, 0x03, 0xdb, 0x87, 0xcc, 0x78, + 0xf7, 0xb5, 0x9d, 0x96, 0x3e, 0x6a, 0x7f, 0xbc, 0x11, 0x85, 0x7a, 0x75, + 0xe6, 0x41, 0x7d, 0x0d, 0xcf, 0xf9, 0xe5, 0x85, 0x69, 0x25, 0x8f, 0xc7, + 0x8d, 0x07, 0x2d, 0xf8, 0x69, 0x0f, 0xcb, 0x41, 0x53, 0x00, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 146035 (0x23a73) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA + Validity + Not Before: Jun 11 22:02:59 2014 GMT + Not After : May 20 22:02:59 2022 GMT + Subject: C=US, O=GeoTrust Inc., OU=Domain Validated SSL, CN=GeoTrust DV SSL CA - G3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:b3:44:3a:6c:b0:ae:cb:14:f9:8c:19:74:34:5c: + a9:69:e3:88:53:77:a5:a7:ff:bd:d1:3c:0d:27:e4: + de:ad:7f:bc:d1:90:58:93:d6:a6:da:39:9c:ad:e1: + 0e:56:46:ee:95:9e:10:68:4c:9c:2b:f6:6a:3a:8b: + 80:81:87:06:57:25:1a:56:52:94:dd:90:eb:67:3b: + de:fa:ae:36:68:d3:62:69:f6:6c:82:24:44:4f:87: + 5c:98:11:95:64:6b:e8:0c:d1:dd:e6:27:97:ae:cc: + e2:91:6a:41:12:b6:ab:e5:cc:6e:cc:23:b8:63:8a: + 1f:31:93:2d:06:c4:f7:e8:3d:58:cd:97:08:46:6c: + 7b:74:c0:f8:fc:31:3b:a7:7f:d7:8f:b0:c9:15:63: + 50:7a:12:4d:f5:12:1e:a3:7e:55:e3:75:b7:ea:1e: + ea:31:2c:08:4e:d8:cb:43:74:89:24:bc:d2:0e:1e: + f0:db:05:24:f6:8a:bf:10:27:84:41:1a:f6:18:53: + ee:91:d0:54:17:d3:7d:3e:7e:b2:7d:a8:bf:db:b9: + 21:2a:f0:89:b9:08:6e:5a:b3:5e:ea:82:b8:7e:27: + 0b:cc:56:73:81:05:4f:e3:96:2d:71:d5:78:a7:60: + c3:d7:ec:aa:39:1a:05:39:82:81:e0:15:2c:35:d1: + ee:25 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Authority Key Identifier: + keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E + + X509v3 Subject Key Identifier: + AD:65:22:85:90:D0:3B:E3:A1:49:8B:37:F9:F1:0B:1D:5F:17:A0:77 + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 CRL Distribution Points: + + Full Name: + URI:http://g.symcb.com/crls/gtglobal.crl + + Authority Information Access: + OCSP - URI:http://g.symcd.com + + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: http://www.geotrust.com/resources/cps + + X509v3 Subject Alternative Name: + DirName:/CN=SymantecPKI-1-699 + Signature Algorithm: sha256WithRSAEncryption + 4e:27:b8:1a:c7:3b:dc:5d:bb:9e:1a:35:23:1e:88:55:90:d1: + ec:86:9c:88:b7:e0:1f:67:87:e2:7c:b5:43:03:0e:b6:02:e8: + e0:ff:86:84:19:71:e9:f2:4b:f5:9e:2e:2e:5e:db:ab:d6:1c: + 4e:c4:3e:b8:2c:78:86:71:10:ae:8d:c5:70:bf:a4:f9:89:e6: + b4:ed:e8:4b:ed:7c:09:2a:09:08:06:3e:d4:e1:de:82:92:0c: + 34:30:35:0a:c1:60:75:ca:b6:55:6b:aa:00:42:cb:3f:fb:10: + e1:fb:85:c1:21:90:72:2b:6e:c0:e8:9d:d9:b5:5a:50:8e:34: + 1e:bb:38:a7:3c:31:bd:7a:f2:43:8b:eb:16:ca:ad:9b:de:6b: + 1e:f8:4f:b6:5e:4a:29:1f:7a:14:ee:91:f4:94:4f:a4:bd:9b: + 76:7a:bc:f1:51:7a:96:a8:81:0e:83:87:3f:8b:ae:5e:32:9b: + 34:9e:b2:e7:db:2f:ec:02:a0:e1:fd:51:52:fe:2c:db:36:ba: + c1:d6:5e:4b:58:6d:de:c6:e1:e1:fa:9a:03:2c:5b:a2:e1:b3: + 9b:f9:36:ec:c1:73:fa:33:12:66:95:e3:69:10:b6:d7:aa:33: + fa:f6:9d:41:6d:96:2a:ba:be:83:31:41:7f:0c:0a:d2:69:d6: + fc:35:4c:c3 +-----BEGIN CERTIFICATE----- +MIIEbzCCA1egAwIBAgIDAjpzMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMTQwNjExMjIwMjU5WhcNMjIwNTIwMjIwMjU5WjBmMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UECxMURG9tYWluIFZh +bGlkYXRlZCBTU0wxIDAeBgNVBAMTF0dlb1RydXN0IERWIFNTTCBDQSAtIEczMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs0Q6bLCuyxT5jBl0NFypaeOI +U3elp/+90TwNJ+TerX+80ZBYk9am2jmcreEOVkbulZ4QaEycK/ZqOouAgYcGVyUa +VlKU3ZDrZzve+q42aNNiafZsgiRET4dcmBGVZGvoDNHd5ieXrszikWpBErar5cxu +zCO4Y4ofMZMtBsT36D1YzZcIRmx7dMD4/DE7p3/Xj7DJFWNQehJN9RIeo35V43W3 +6h7qMSwITtjLQ3SJJLzSDh7w2wUk9oq/ECeEQRr2GFPukdBUF9N9Pn6yfai/27kh +KvCJuQhuWrNe6oK4ficLzFZzgQVP45YtcdV4p2DD1+yqORoFOYKB4BUsNdHuJQID +AQABo4IBSDCCAUQwHwYDVR0jBBgwFoAUwHqYaI2J+6sFZAwRfap9ZbjKzE4wHQYD +VR0OBBYEFK1lIoWQ0DvjoUmLN/nxCx1fF6B3MBIGA1UdEwEB/wQIMAYBAf8CAQAw +DgYDVR0PAQH/BAQDAgEGMDUGA1UdHwQuMCwwKqAooCaGJGh0dHA6Ly9nLnN5bWNi +LmNvbS9jcmxzL2d0Z2xvYmFsLmNybDAuBggrBgEFBQcBAQQiMCAwHgYIKwYBBQUH +MAGGEmh0dHA6Ly9nLnN5bWNkLmNvbTBMBgNVHSAERTBDMEEGCmCGSAGG+EUBBzYw +MzAxBggrBgEFBQcCARYlaHR0cDovL3d3dy5nZW90cnVzdC5jb20vcmVzb3VyY2Vz +L2NwczApBgNVHREEIjAgpB4wHDEaMBgGA1UEAxMRU3ltYW50ZWNQS0ktMS02OTkw +DQYJKoZIhvcNAQELBQADggEBAE4nuBrHO9xdu54aNSMeiFWQ0eyGnIi34B9nh+J8 +tUMDDrYC6OD/hoQZcenyS/WeLi5e26vWHE7EPrgseIZxEK6NxXC/pPmJ5rTt6Evt +fAkqCQgGPtTh3oKSDDQwNQrBYHXKtlVrqgBCyz/7EOH7hcEhkHIrbsDondm1WlCO +NB67OKc8Mb168kOL6xbKrZveax74T7ZeSikfehTukfSUT6S9m3Z6vPFRepaogQ6D +hz+Lrl4ymzSesufbL+wCoOH9UVL+LNs2usHWXktYbd7G4eH6mgMsW6Lhs5v5NuzB +c/ozEmaV42kQtteqM/r2nUFtliq6voMxQX8MCtJp1vw1TMM= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_16[] = { + 0x30, 0x82, 0x04, 0x6f, 0x30, 0x82, 0x03, 0x57, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x3a, 0x73, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, + 0x36, 0x31, 0x31, 0x32, 0x32, 0x30, 0x32, 0x35, 0x39, 0x5a, 0x17, 0x0d, + 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x32, 0x30, 0x32, 0x35, 0x39, + 0x5a, 0x30, 0x66, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x14, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x53, 0x53, 0x4c, 0x31, + 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x47, 0x65, + 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x44, 0x56, 0x20, 0x53, 0x53, + 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb3, 0x44, 0x3a, 0x6c, 0xb0, 0xae, + 0xcb, 0x14, 0xf9, 0x8c, 0x19, 0x74, 0x34, 0x5c, 0xa9, 0x69, 0xe3, 0x88, + 0x53, 0x77, 0xa5, 0xa7, 0xff, 0xbd, 0xd1, 0x3c, 0x0d, 0x27, 0xe4, 0xde, + 0xad, 0x7f, 0xbc, 0xd1, 0x90, 0x58, 0x93, 0xd6, 0xa6, 0xda, 0x39, 0x9c, + 0xad, 0xe1, 0x0e, 0x56, 0x46, 0xee, 0x95, 0x9e, 0x10, 0x68, 0x4c, 0x9c, + 0x2b, 0xf6, 0x6a, 0x3a, 0x8b, 0x80, 0x81, 0x87, 0x06, 0x57, 0x25, 0x1a, + 0x56, 0x52, 0x94, 0xdd, 0x90, 0xeb, 0x67, 0x3b, 0xde, 0xfa, 0xae, 0x36, + 0x68, 0xd3, 0x62, 0x69, 0xf6, 0x6c, 0x82, 0x24, 0x44, 0x4f, 0x87, 0x5c, + 0x98, 0x11, 0x95, 0x64, 0x6b, 0xe8, 0x0c, 0xd1, 0xdd, 0xe6, 0x27, 0x97, + 0xae, 0xcc, 0xe2, 0x91, 0x6a, 0x41, 0x12, 0xb6, 0xab, 0xe5, 0xcc, 0x6e, + 0xcc, 0x23, 0xb8, 0x63, 0x8a, 0x1f, 0x31, 0x93, 0x2d, 0x06, 0xc4, 0xf7, + 0xe8, 0x3d, 0x58, 0xcd, 0x97, 0x08, 0x46, 0x6c, 0x7b, 0x74, 0xc0, 0xf8, + 0xfc, 0x31, 0x3b, 0xa7, 0x7f, 0xd7, 0x8f, 0xb0, 0xc9, 0x15, 0x63, 0x50, + 0x7a, 0x12, 0x4d, 0xf5, 0x12, 0x1e, 0xa3, 0x7e, 0x55, 0xe3, 0x75, 0xb7, + 0xea, 0x1e, 0xea, 0x31, 0x2c, 0x08, 0x4e, 0xd8, 0xcb, 0x43, 0x74, 0x89, + 0x24, 0xbc, 0xd2, 0x0e, 0x1e, 0xf0, 0xdb, 0x05, 0x24, 0xf6, 0x8a, 0xbf, + 0x10, 0x27, 0x84, 0x41, 0x1a, 0xf6, 0x18, 0x53, 0xee, 0x91, 0xd0, 0x54, + 0x17, 0xd3, 0x7d, 0x3e, 0x7e, 0xb2, 0x7d, 0xa8, 0xbf, 0xdb, 0xb9, 0x21, + 0x2a, 0xf0, 0x89, 0xb9, 0x08, 0x6e, 0x5a, 0xb3, 0x5e, 0xea, 0x82, 0xb8, + 0x7e, 0x27, 0x0b, 0xcc, 0x56, 0x73, 0x81, 0x05, 0x4f, 0xe3, 0x96, 0x2d, + 0x71, 0xd5, 0x78, 0xa7, 0x60, 0xc3, 0xd7, 0xec, 0xaa, 0x39, 0x1a, 0x05, + 0x39, 0x82, 0x81, 0xe0, 0x15, 0x2c, 0x35, 0xd1, 0xee, 0x25, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x48, 0x30, 0x82, 0x01, 0x44, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, 0x0c, 0x11, + 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xad, 0x65, 0x22, 0x85, 0x90, + 0xd0, 0x3b, 0xe3, 0xa1, 0x49, 0x8b, 0x37, 0xf9, 0xf1, 0x0b, 0x1d, 0x5f, + 0x17, 0xa0, 0x77, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x35, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2e, + 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, 0x26, 0x86, 0x24, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, 0x74, + 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x2e, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x22, + 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, + 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4c, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, + 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30, + 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, + 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, + 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2f, 0x63, 0x70, 0x73, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, + 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, + 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x36, 0x39, 0x39, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x4e, 0x27, 0xb8, 0x1a, 0xc7, + 0x3b, 0xdc, 0x5d, 0xbb, 0x9e, 0x1a, 0x35, 0x23, 0x1e, 0x88, 0x55, 0x90, + 0xd1, 0xec, 0x86, 0x9c, 0x88, 0xb7, 0xe0, 0x1f, 0x67, 0x87, 0xe2, 0x7c, + 0xb5, 0x43, 0x03, 0x0e, 0xb6, 0x02, 0xe8, 0xe0, 0xff, 0x86, 0x84, 0x19, + 0x71, 0xe9, 0xf2, 0x4b, 0xf5, 0x9e, 0x2e, 0x2e, 0x5e, 0xdb, 0xab, 0xd6, + 0x1c, 0x4e, 0xc4, 0x3e, 0xb8, 0x2c, 0x78, 0x86, 0x71, 0x10, 0xae, 0x8d, + 0xc5, 0x70, 0xbf, 0xa4, 0xf9, 0x89, 0xe6, 0xb4, 0xed, 0xe8, 0x4b, 0xed, + 0x7c, 0x09, 0x2a, 0x09, 0x08, 0x06, 0x3e, 0xd4, 0xe1, 0xde, 0x82, 0x92, + 0x0c, 0x34, 0x30, 0x35, 0x0a, 0xc1, 0x60, 0x75, 0xca, 0xb6, 0x55, 0x6b, + 0xaa, 0x00, 0x42, 0xcb, 0x3f, 0xfb, 0x10, 0xe1, 0xfb, 0x85, 0xc1, 0x21, + 0x90, 0x72, 0x2b, 0x6e, 0xc0, 0xe8, 0x9d, 0xd9, 0xb5, 0x5a, 0x50, 0x8e, + 0x34, 0x1e, 0xbb, 0x38, 0xa7, 0x3c, 0x31, 0xbd, 0x7a, 0xf2, 0x43, 0x8b, + 0xeb, 0x16, 0xca, 0xad, 0x9b, 0xde, 0x6b, 0x1e, 0xf8, 0x4f, 0xb6, 0x5e, + 0x4a, 0x29, 0x1f, 0x7a, 0x14, 0xee, 0x91, 0xf4, 0x94, 0x4f, 0xa4, 0xbd, + 0x9b, 0x76, 0x7a, 0xbc, 0xf1, 0x51, 0x7a, 0x96, 0xa8, 0x81, 0x0e, 0x83, + 0x87, 0x3f, 0x8b, 0xae, 0x5e, 0x32, 0x9b, 0x34, 0x9e, 0xb2, 0xe7, 0xdb, + 0x2f, 0xec, 0x02, 0xa0, 0xe1, 0xfd, 0x51, 0x52, 0xfe, 0x2c, 0xdb, 0x36, + 0xba, 0xc1, 0xd6, 0x5e, 0x4b, 0x58, 0x6d, 0xde, 0xc6, 0xe1, 0xe1, 0xfa, + 0x9a, 0x03, 0x2c, 0x5b, 0xa2, 0xe1, 0xb3, 0x9b, 0xf9, 0x36, 0xec, 0xc1, + 0x73, 0xfa, 0x33, 0x12, 0x66, 0x95, 0xe3, 0x69, 0x10, 0xb6, 0xd7, 0xaa, + 0x33, 0xfa, 0xf6, 0x9d, 0x41, 0x6d, 0x96, 0x2a, 0xba, 0xbe, 0x83, 0x31, + 0x41, 0x7f, 0x0c, 0x0a, 0xd2, 0x69, 0xd6, 0xfc, 0x35, 0x4c, 0xc3, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 12037640545166866303 (0xa70e4a4c3482b77f) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=Starfield Technologies, Inc., OU=Starfield Class 2 Certification Authority + Validity + Not Before: Sep 2 00:00:00 2009 GMT + Not After : Jun 28 17:39:16 2034 GMT + Subject: C=US, ST=Arizona, L=Scottsdale, O=Starfield Technologies, Inc., CN=Starfield Services Root Certificate Authority - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:d5:0c:3a:c4:2a:f9:4e:e2:f5:be:19:97:5f:8e: + 88:53:b1:1f:3f:cb:cf:9f:20:13:6d:29:3a:c8:0f: + 7d:3c:f7:6b:76:38:63:d9:36:60:a8:9b:5e:5c:00: + 80:b2:2f:59:7f:f6:87:f9:25:43:86:e7:69:1b:52: + 9a:90:e1:71:e3:d8:2d:0d:4e:6f:f6:c8:49:d9:b6: + f3:1a:56:ae:2b:b6:74:14:eb:cf:fb:26:e3:1a:ba: + 1d:96:2e:6a:3b:58:94:89:47:56:ff:25:a0:93:70: + 53:83:da:84:74:14:c3:67:9e:04:68:3a:df:8e:40: + 5a:1d:4a:4e:cf:43:91:3b:e7:56:d6:00:70:cb:52: + ee:7b:7d:ae:3a:e7:bc:31:f9:45:f6:c2:60:cf:13: + 59:02:2b:80:cc:34:47:df:b9:de:90:65:6d:02:cf: + 2c:91:a6:a6:e7:de:85:18:49:7c:66:4e:a3:3a:6d: + a9:b5:ee:34:2e:ba:0d:03:b8:33:df:47:eb:b1:6b: + 8d:25:d9:9b:ce:81:d1:45:46:32:96:70:87:de:02: + 0e:49:43:85:b6:6c:73:bb:64:ea:61:41:ac:c9:d4: + 54:df:87:2f:c7:22:b2:26:cc:9f:59:54:68:9f:fc: + be:2a:2f:c4:55:1c:75:40:60:17:85:02:55:39:8b: + 7f:05 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 9C:5F:00:DF:AA:01:D7:30:2B:38:88:A2:B8:6D:4A:9C:F2:11:91:83 + X509v3 Authority Key Identifier: + keyid:BF:5F:B7:D1:CE:DD:1F:86:F4:5B:55:AC:DC:D7:10:C2:0E:A9:88:E7 + + Authority Information Access: + OCSP - URI:http://o.ss2.us/ + CA Issuers - URI:http://x.ss2.us/x.cer + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://s.ss2.us/r.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + + Signature Algorithm: sha256WithRSAEncryption + 23:1d:e3:8a:57:ca:7d:e9:17:79:4c:f1:1e:55:fd:cc:53:6e: + 3e:47:0f:df:c6:55:f2:b2:04:36:ed:80:1f:53:c4:5d:34:28: + 6b:be:c7:55:fc:67:ea:cb:3f:7f:90:b2:33:cd:1b:58:10:82: + 02:f8:f8:2f:f5:13:60:d4:05:ce:f1:81:08:c1:dd:a7:75:97: + 4f:18:b9:6d:de:f7:93:91:08:ba:7e:40:2c:ed:c1:ea:bb:76: + 9e:33:06:77:1d:0d:08:7f:53:dd:1b:64:ab:82:27:f1:69:d5: + 4d:5e:ae:f4:a1:c3:75:a7:58:44:2d:f2:3c:70:98:ac:ba:69: + b6:95:77:7f:0f:31:5e:2c:fc:a0:87:3a:47:69:f0:79:5f:f4: + 14:54:a4:95:5e:11:78:12:60:27:ce:9f:c2:77:ff:23:53:77: + 5d:ba:ff:ea:59:e7:db:cf:af:92:96:ef:24:9a:35:10:7a:9c: + 91:c6:0e:7d:99:f6:3f:19:df:f5:72:54:e1:15:a9:07:59:7b: + 83:bf:52:2e:46:8c:b2:00:64:76:1c:48:d3:d8:79:e8:6e:56: + cc:ae:2c:03:90:d7:19:38:99:e4:ca:09:19:5b:ff:07:96:b0: + a8:7f:34:49:df:56:a9:f7:b0:5f:ed:33:ed:8c:47:b7:30:03: + 5d:f4:03:8c +-----BEGIN CERTIFICATE----- +MIIEdTCCA12gAwIBAgIJAKcOSkw0grd/MA0GCSqGSIb3DQEBCwUAMGgxCzAJBgNV +BAYTAlVTMSUwIwYDVQQKExxTdGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTIw +MAYDVQQLEylTdGFyZmllbGQgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eTAeFw0wOTA5MDIwMDAwMDBaFw0zNDA2MjgxNzM5MTZaMIGYMQswCQYDVQQGEwJV +UzEQMA4GA1UECBMHQXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTElMCMGA1UE +ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjE7MDkGA1UEAxMyU3RhcmZp +ZWxkIFNlcnZpY2VzIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVDDrEKvlO4vW+GZdfjohTsR8/ +y8+fIBNtKTrID30892t2OGPZNmCom15cAICyL1l/9of5JUOG52kbUpqQ4XHj2C0N +Tm/2yEnZtvMaVq4rtnQU68/7JuMauh2WLmo7WJSJR1b/JaCTcFOD2oR0FMNnngRo +Ot+OQFodSk7PQ5E751bWAHDLUu57fa4657wx+UX2wmDPE1kCK4DMNEffud6QZW0C +zyyRpqbn3oUYSXxmTqM6bam17jQuug0DuDPfR+uxa40l2ZvOgdFFRjKWcIfeAg5J +Q4W2bHO7ZOphQazJ1FTfhy/HIrImzJ9ZVGif/L4qL8RVHHVAYBeFAlU5i38FAgMB +AAGjgfAwge0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0O +BBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMB8GA1UdIwQYMBaAFL9ft9HO3R+G9FtV +rNzXEMIOqYjnME8GCCsGAQUFBwEBBEMwQTAcBggrBgEFBQcwAYYQaHR0cDovL28u +c3MyLnVzLzAhBggrBgEFBQcwAoYVaHR0cDovL3guc3MyLnVzL3guY2VyMCYGA1Ud +HwQfMB0wG6AZoBeGFWh0dHA6Ly9zLnNzMi51cy9yLmNybDARBgNVHSAECjAIMAYG +BFUdIAAwDQYJKoZIhvcNAQELBQADggEBACMd44pXyn3pF3lM8R5V/cxTbj5HD9/G +VfKyBDbtgB9TxF00KGu+x1X8Z+rLP3+QsjPNG1gQggL4+C/1E2DUBc7xgQjB3ad1 +l08YuW3e95ORCLp+QCztweq7dp4zBncdDQh/U90bZKuCJ/Fp1U1ervShw3WnWEQt +8jxwmKy6abaVd38PMV4s/KCHOkdp8Hlf9BRUpJVeEXgSYCfOn8J3/yNTd126/+pZ +59vPr5KW7ySaNRB6nJHGDn2Z9j8Z3/VyVOEVqQdZe4O/Ui5GjLIAZHYcSNPYeehu +VsyuLAOQ1xk4meTKCRlb/weWsKh/NEnfVqn3sF/tM+2MR7cwA130A4w= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_17[] = { + 0x30, 0x82, 0x04, 0x75, 0x30, 0x82, 0x03, 0x5d, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x09, 0x00, 0xa7, 0x0e, 0x4a, 0x4c, 0x34, 0x82, 0xb7, 0x7f, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x30, 0x68, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, + 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, + 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30, + 0x30, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x29, 0x53, 0x74, 0x61, 0x72, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, + 0x32, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x39, 0x30, 0x39, 0x30, 0x32, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x34, 0x30, 0x36, + 0x32, 0x38, 0x31, 0x37, 0x33, 0x39, 0x31, 0x36, 0x5a, 0x30, 0x81, 0x98, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, + 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, + 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, + 0x64, 0x61, 0x6c, 0x65, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x20, 0x54, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, + 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x3b, 0x30, 0x39, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x32, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xd5, 0x0c, 0x3a, 0xc4, 0x2a, 0xf9, 0x4e, + 0xe2, 0xf5, 0xbe, 0x19, 0x97, 0x5f, 0x8e, 0x88, 0x53, 0xb1, 0x1f, 0x3f, + 0xcb, 0xcf, 0x9f, 0x20, 0x13, 0x6d, 0x29, 0x3a, 0xc8, 0x0f, 0x7d, 0x3c, + 0xf7, 0x6b, 0x76, 0x38, 0x63, 0xd9, 0x36, 0x60, 0xa8, 0x9b, 0x5e, 0x5c, + 0x00, 0x80, 0xb2, 0x2f, 0x59, 0x7f, 0xf6, 0x87, 0xf9, 0x25, 0x43, 0x86, + 0xe7, 0x69, 0x1b, 0x52, 0x9a, 0x90, 0xe1, 0x71, 0xe3, 0xd8, 0x2d, 0x0d, + 0x4e, 0x6f, 0xf6, 0xc8, 0x49, 0xd9, 0xb6, 0xf3, 0x1a, 0x56, 0xae, 0x2b, + 0xb6, 0x74, 0x14, 0xeb, 0xcf, 0xfb, 0x26, 0xe3, 0x1a, 0xba, 0x1d, 0x96, + 0x2e, 0x6a, 0x3b, 0x58, 0x94, 0x89, 0x47, 0x56, 0xff, 0x25, 0xa0, 0x93, + 0x70, 0x53, 0x83, 0xda, 0x84, 0x74, 0x14, 0xc3, 0x67, 0x9e, 0x04, 0x68, + 0x3a, 0xdf, 0x8e, 0x40, 0x5a, 0x1d, 0x4a, 0x4e, 0xcf, 0x43, 0x91, 0x3b, + 0xe7, 0x56, 0xd6, 0x00, 0x70, 0xcb, 0x52, 0xee, 0x7b, 0x7d, 0xae, 0x3a, + 0xe7, 0xbc, 0x31, 0xf9, 0x45, 0xf6, 0xc2, 0x60, 0xcf, 0x13, 0x59, 0x02, + 0x2b, 0x80, 0xcc, 0x34, 0x47, 0xdf, 0xb9, 0xde, 0x90, 0x65, 0x6d, 0x02, + 0xcf, 0x2c, 0x91, 0xa6, 0xa6, 0xe7, 0xde, 0x85, 0x18, 0x49, 0x7c, 0x66, + 0x4e, 0xa3, 0x3a, 0x6d, 0xa9, 0xb5, 0xee, 0x34, 0x2e, 0xba, 0x0d, 0x03, + 0xb8, 0x33, 0xdf, 0x47, 0xeb, 0xb1, 0x6b, 0x8d, 0x25, 0xd9, 0x9b, 0xce, + 0x81, 0xd1, 0x45, 0x46, 0x32, 0x96, 0x70, 0x87, 0xde, 0x02, 0x0e, 0x49, + 0x43, 0x85, 0xb6, 0x6c, 0x73, 0xbb, 0x64, 0xea, 0x61, 0x41, 0xac, 0xc9, + 0xd4, 0x54, 0xdf, 0x87, 0x2f, 0xc7, 0x22, 0xb2, 0x26, 0xcc, 0x9f, 0x59, + 0x54, 0x68, 0x9f, 0xfc, 0xbe, 0x2a, 0x2f, 0xc4, 0x55, 0x1c, 0x75, 0x40, + 0x60, 0x17, 0x85, 0x02, 0x55, 0x39, 0x8b, 0x7f, 0x05, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x81, 0xf0, 0x30, 0x81, 0xed, 0x30, 0x0f, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, + 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, + 0x04, 0x16, 0x04, 0x14, 0x9c, 0x5f, 0x00, 0xdf, 0xaa, 0x01, 0xd7, 0x30, + 0x2b, 0x38, 0x88, 0xa2, 0xb8, 0x6d, 0x4a, 0x9c, 0xf2, 0x11, 0x91, 0x83, + 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, + 0x14, 0xbf, 0x5f, 0xb7, 0xd1, 0xce, 0xdd, 0x1f, 0x86, 0xf4, 0x5b, 0x55, + 0xac, 0xdc, 0xd7, 0x10, 0xc2, 0x0e, 0xa9, 0x88, 0xe7, 0x30, 0x4f, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x43, 0x30, + 0x41, 0x30, 0x1c, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x01, 0x86, 0x10, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x2e, + 0x73, 0x73, 0x32, 0x2e, 0x75, 0x73, 0x2f, 0x30, 0x21, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x15, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x78, 0x2e, 0x73, 0x73, 0x32, 0x2e, 0x75, 0x73, + 0x2f, 0x78, 0x2e, 0x63, 0x65, 0x72, 0x30, 0x26, 0x06, 0x03, 0x55, 0x1d, + 0x1f, 0x04, 0x1f, 0x30, 0x1d, 0x30, 0x1b, 0xa0, 0x19, 0xa0, 0x17, 0x86, + 0x15, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x2e, 0x73, 0x73, + 0x32, 0x2e, 0x75, 0x73, 0x2f, 0x72, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x11, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x0a, 0x30, 0x08, 0x30, 0x06, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, + 0x00, 0x23, 0x1d, 0xe3, 0x8a, 0x57, 0xca, 0x7d, 0xe9, 0x17, 0x79, 0x4c, + 0xf1, 0x1e, 0x55, 0xfd, 0xcc, 0x53, 0x6e, 0x3e, 0x47, 0x0f, 0xdf, 0xc6, + 0x55, 0xf2, 0xb2, 0x04, 0x36, 0xed, 0x80, 0x1f, 0x53, 0xc4, 0x5d, 0x34, + 0x28, 0x6b, 0xbe, 0xc7, 0x55, 0xfc, 0x67, 0xea, 0xcb, 0x3f, 0x7f, 0x90, + 0xb2, 0x33, 0xcd, 0x1b, 0x58, 0x10, 0x82, 0x02, 0xf8, 0xf8, 0x2f, 0xf5, + 0x13, 0x60, 0xd4, 0x05, 0xce, 0xf1, 0x81, 0x08, 0xc1, 0xdd, 0xa7, 0x75, + 0x97, 0x4f, 0x18, 0xb9, 0x6d, 0xde, 0xf7, 0x93, 0x91, 0x08, 0xba, 0x7e, + 0x40, 0x2c, 0xed, 0xc1, 0xea, 0xbb, 0x76, 0x9e, 0x33, 0x06, 0x77, 0x1d, + 0x0d, 0x08, 0x7f, 0x53, 0xdd, 0x1b, 0x64, 0xab, 0x82, 0x27, 0xf1, 0x69, + 0xd5, 0x4d, 0x5e, 0xae, 0xf4, 0xa1, 0xc3, 0x75, 0xa7, 0x58, 0x44, 0x2d, + 0xf2, 0x3c, 0x70, 0x98, 0xac, 0xba, 0x69, 0xb6, 0x95, 0x77, 0x7f, 0x0f, + 0x31, 0x5e, 0x2c, 0xfc, 0xa0, 0x87, 0x3a, 0x47, 0x69, 0xf0, 0x79, 0x5f, + 0xf4, 0x14, 0x54, 0xa4, 0x95, 0x5e, 0x11, 0x78, 0x12, 0x60, 0x27, 0xce, + 0x9f, 0xc2, 0x77, 0xff, 0x23, 0x53, 0x77, 0x5d, 0xba, 0xff, 0xea, 0x59, + 0xe7, 0xdb, 0xcf, 0xaf, 0x92, 0x96, 0xef, 0x24, 0x9a, 0x35, 0x10, 0x7a, + 0x9c, 0x91, 0xc6, 0x0e, 0x7d, 0x99, 0xf6, 0x3f, 0x19, 0xdf, 0xf5, 0x72, + 0x54, 0xe1, 0x15, 0xa9, 0x07, 0x59, 0x7b, 0x83, 0xbf, 0x52, 0x2e, 0x46, + 0x8c, 0xb2, 0x00, 0x64, 0x76, 0x1c, 0x48, 0xd3, 0xd8, 0x79, 0xe8, 0x6e, + 0x56, 0xcc, 0xae, 0x2c, 0x03, 0x90, 0xd7, 0x19, 0x38, 0x99, 0xe4, 0xca, + 0x09, 0x19, 0x5b, 0xff, 0x07, 0x96, 0xb0, 0xa8, 0x7f, 0x34, 0x49, 0xdf, + 0x56, 0xa9, 0xf7, 0xb0, 0x5f, 0xed, 0x33, 0xed, 0x8c, 0x47, 0xb7, 0x30, + 0x03, 0x5d, 0xf4, 0x03, 0x8c, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 120038006 (0x727a276) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=IE, O=Baltimore, OU=CyberTrust, CN=Baltimore CyberTrust Root + Validity + Not Before: Feb 27 18:09:27 2014 GMT + Not After : Jun 9 17:07:29 2020 GMT + Subject: C=JP, O=Cybertrust Japan Co., Ltd., CN=Cybertrust Japan Public CA G3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:94:56:a3:45:44:54:aa:60:64:bf:b8:57:9f:4e: + db:d4:79:68:5f:13:05:f4:3f:cd:25:dd:3c:5e:58: + 77:1c:9d:e6:9f:e3:32:49:ef:02:3a:34:53:8d:52: + e5:e3:39:66:1f:e7:33:61:b6:27:c6:24:55:50:27: + 02:65:f0:b0:8c:41:8d:30:5e:47:5b:82:6f:c7:9c: + a3:28:43:6d:58:7b:c8:15:98:4e:25:6f:cb:76:27: + 5b:0b:2c:2c:b5:98:23:e7:8b:7c:fd:77:1a:c4:52: + ba:5d:19:ee:78:21:4d:21:9a:d9:12:7c:33:15:6b: + 1a:c9:81:ea:da:da:57:b7:d5:2f:ce:1f:4b:fc:b4: + 33:e0:a0:c9:94:27:bb:27:40:b6:90:db:ac:9e:75: + a6:11:2b:49:19:2d:c3:c2:43:07:09:bb:3d:6e:88: + a3:e3:8a:c5:d2:86:f6:65:5b:34:c3:9f:4c:02:e5: + 09:ba:2c:c6:76:66:eb:d1:76:25:f4:30:13:fb:58: + 60:a8:58:e3:51:6f:4b:08:04:61:8d:ac:a9:30:2f: + 52:41:a3:22:c1:33:59:ab:7b:59:f9:93:67:4b:c9: + 89:75:52:ef:29:49:34:93:1c:9c:93:73:9c:19:ce: + 5c:18:cd:4c:09:27:c1:3f:f5:49:ec:f4:e2:df:4b: + af:8f + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: 1.3.6.1.4.1.6334.1.0 + CPS: http://cybertrust.omniroot.com/repository.cfm + + Authority Information Access: + OCSP - URI:http://ocsp.omniroot.com/baltimoreroot + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Authority Key Identifier: + keyid:E5:9D:59:30:82:47:58:CC:AC:FA:08:54:36:86:7B:3A:B5:04:4D:F0 + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://cdp1.public-trust.com/CRL/Omniroot2025.crl + + X509v3 Subject Key Identifier: + 73:A8:08:53:29:B8:15:FB:99:80:E5:C5:37:D8:F8:39:7B:A4:13:06 + Signature Algorithm: sha256WithRSAEncryption + 68:df:fe:72:54:4e:1b:fb:5c:6e:5a:45:46:cf:42:be:b2:02: + 9c:9d:90:6a:09:2e:b7:36:64:24:b6:b1:e2:48:67:ce:17:46: + 9b:23:75:78:11:f6:c6:09:38:42:62:96:97:30:7b:51:77:df: + 33:b5:00:51:29:d5:24:fe:b7:98:a2:ac:6c:a1:13:7f:ca:f3: + b7:a6:52:c2:16:0d:ec:3a:bf:a3:37:77:4f:ae:7b:55:1d:46: + e9:10:da:c3:b4:05:5c:5b:f6:48:21:00:89:f4:bb:38:8e:1e: + 33:f3:49:97:81:31:6c:16:74:08:91:17:c0:d3:25:b3:bc:c1: + 15:b5:a4:cd:84:4d:b9:c8:eb:c5:59:42:10:14:25:79:f8:db: + b6:d0:e6:d3:a0:14:7c:17:1c:20:1e:ed:99:90:65:c0:41:71: + c3:ab:3f:29:41:67:f9:e2:d1:98:e3:f8:df:3a:b8:ca:a3:6f: + 68:8b:6c:9f:6e:88:7c:9d:41:5c:ba:cb:19:05:83:9c:99:f4: + 1a:d2:24:69:57:0a:0f:7a:c3:1b:2c:4b:06:d3:2a:97:7e:07: + b0:f9:20:5a:b5:92:4b:5b:a8:eb:eb:36:33:47:36:da:72:9c: + bf:68:45:81:31:be:d2:fd:3b:e9:72:d5:70:dd:a6:de:5f:0d: + b6:5e:00:49 +-----BEGIN CERTIFICATE----- +MIIEeTCCA2GgAwIBAgIEByeidjANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJJ +RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD +VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTE0MDIyNzE4MDkyN1oX +DTIwMDYwOTE3MDcyOVowWjELMAkGA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1 +c3QgSmFwYW4gQ28uLCBMdGQuMSYwJAYDVQQDEx1DeWJlcnRydXN0IEphcGFuIFB1 +YmxpYyBDQSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJRWo0VE +VKpgZL+4V59O29R5aF8TBfQ/zSXdPF5Ydxyd5p/jMknvAjo0U41S5eM5Zh/nM2G2 +J8YkVVAnAmXwsIxBjTBeR1uCb8ecoyhDbVh7yBWYTiVvy3YnWwssLLWYI+eLfP13 +GsRSul0Z7nghTSGa2RJ8MxVrGsmB6traV7fVL84fS/y0M+CgyZQnuydAtpDbrJ51 +phErSRktw8JDBwm7PW6Io+OKxdKG9mVbNMOfTALlCbosxnZm69F2JfQwE/tYYKhY +41FvSwgEYY2sqTAvUkGjIsEzWat7WfmTZ0vJiXVS7ylJNJMcnJNznBnOXBjNTAkn +wT/1Sez04t9Lr48CAwEAAaOCAUUwggFBMBIGA1UdEwEB/wQIMAYBAf8CAQAwUwYD +VR0gBEwwSjBIBgkrBgEEAbE+AQAwOzA5BggrBgEFBQcCARYtaHR0cDovL2N5YmVy +dHJ1c3Qub21uaXJvb3QuY29tL3JlcG9zaXRvcnkuY2ZtMEIGCCsGAQUFBwEBBDYw +NDAyBggrBgEFBQcwAYYmaHR0cDovL29jc3Aub21uaXJvb3QuY29tL2JhbHRpbW9y +ZXJvb3QwDgYDVR0PAQH/BAQDAgEGMB8GA1UdIwQYMBaAFOWdWTCCR1jMrPoIVDaG +ezq1BE3wMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9jZHAxLnB1YmxpYy10cnVz +dC5jb20vQ1JML09tbmlyb290MjAyNS5jcmwwHQYDVR0OBBYEFHOoCFMpuBX7mYDl +xTfY+Dl7pBMGMA0GCSqGSIb3DQEBCwUAA4IBAQBo3/5yVE4b+1xuWkVGz0K+sgKc +nZBqCS63NmQktrHiSGfOF0abI3V4EfbGCThCYpaXMHtRd98ztQBRKdUk/reYoqxs +oRN/yvO3plLCFg3sOr+jN3dPrntVHUbpENrDtAVcW/ZIIQCJ9Ls4jh4z80mXgTFs +FnQIkRfA0yWzvMEVtaTNhE25yOvFWUIQFCV5+Nu20ObToBR8FxwgHu2ZkGXAQXHD +qz8pQWf54tGY4/jfOrjKo29oi2yfboh8nUFcussZBYOcmfQa0iRpVwoPesMbLEsG +0yqXfgew+SBatZJLW6jr6zYzRzbacpy/aEWBMb7S/TvpctVw3abeXw22XgBJ +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_18[] = { + 0x30, 0x82, 0x04, 0x79, 0x30, 0x82, 0x03, 0x61, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0xa2, 0x76, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, + 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, + 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, + 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, + 0x30, 0x32, 0x32, 0x37, 0x31, 0x38, 0x30, 0x39, 0x32, 0x37, 0x5a, 0x17, + 0x0d, 0x32, 0x30, 0x30, 0x36, 0x30, 0x39, 0x31, 0x37, 0x30, 0x37, 0x32, + 0x39, 0x5a, 0x30, 0x5a, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, + 0x06, 0x13, 0x02, 0x4a, 0x50, 0x31, 0x23, 0x30, 0x21, 0x06, 0x03, 0x55, + 0x04, 0x0a, 0x13, 0x1a, 0x43, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x20, 0x4a, 0x61, 0x70, 0x61, 0x6e, 0x20, 0x43, 0x6f, 0x2e, + 0x2c, 0x20, 0x4c, 0x74, 0x64, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x1d, 0x43, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x4a, 0x61, 0x70, 0x61, 0x6e, 0x20, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x20, 0x43, 0x41, 0x20, 0x47, 0x33, 0x30, 0x82, + 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, + 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x94, 0x56, 0xa3, 0x45, 0x44, + 0x54, 0xaa, 0x60, 0x64, 0xbf, 0xb8, 0x57, 0x9f, 0x4e, 0xdb, 0xd4, 0x79, + 0x68, 0x5f, 0x13, 0x05, 0xf4, 0x3f, 0xcd, 0x25, 0xdd, 0x3c, 0x5e, 0x58, + 0x77, 0x1c, 0x9d, 0xe6, 0x9f, 0xe3, 0x32, 0x49, 0xef, 0x02, 0x3a, 0x34, + 0x53, 0x8d, 0x52, 0xe5, 0xe3, 0x39, 0x66, 0x1f, 0xe7, 0x33, 0x61, 0xb6, + 0x27, 0xc6, 0x24, 0x55, 0x50, 0x27, 0x02, 0x65, 0xf0, 0xb0, 0x8c, 0x41, + 0x8d, 0x30, 0x5e, 0x47, 0x5b, 0x82, 0x6f, 0xc7, 0x9c, 0xa3, 0x28, 0x43, + 0x6d, 0x58, 0x7b, 0xc8, 0x15, 0x98, 0x4e, 0x25, 0x6f, 0xcb, 0x76, 0x27, + 0x5b, 0x0b, 0x2c, 0x2c, 0xb5, 0x98, 0x23, 0xe7, 0x8b, 0x7c, 0xfd, 0x77, + 0x1a, 0xc4, 0x52, 0xba, 0x5d, 0x19, 0xee, 0x78, 0x21, 0x4d, 0x21, 0x9a, + 0xd9, 0x12, 0x7c, 0x33, 0x15, 0x6b, 0x1a, 0xc9, 0x81, 0xea, 0xda, 0xda, + 0x57, 0xb7, 0xd5, 0x2f, 0xce, 0x1f, 0x4b, 0xfc, 0xb4, 0x33, 0xe0, 0xa0, + 0xc9, 0x94, 0x27, 0xbb, 0x27, 0x40, 0xb6, 0x90, 0xdb, 0xac, 0x9e, 0x75, + 0xa6, 0x11, 0x2b, 0x49, 0x19, 0x2d, 0xc3, 0xc2, 0x43, 0x07, 0x09, 0xbb, + 0x3d, 0x6e, 0x88, 0xa3, 0xe3, 0x8a, 0xc5, 0xd2, 0x86, 0xf6, 0x65, 0x5b, + 0x34, 0xc3, 0x9f, 0x4c, 0x02, 0xe5, 0x09, 0xba, 0x2c, 0xc6, 0x76, 0x66, + 0xeb, 0xd1, 0x76, 0x25, 0xf4, 0x30, 0x13, 0xfb, 0x58, 0x60, 0xa8, 0x58, + 0xe3, 0x51, 0x6f, 0x4b, 0x08, 0x04, 0x61, 0x8d, 0xac, 0xa9, 0x30, 0x2f, + 0x52, 0x41, 0xa3, 0x22, 0xc1, 0x33, 0x59, 0xab, 0x7b, 0x59, 0xf9, 0x93, + 0x67, 0x4b, 0xc9, 0x89, 0x75, 0x52, 0xef, 0x29, 0x49, 0x34, 0x93, 0x1c, + 0x9c, 0x93, 0x73, 0x9c, 0x19, 0xce, 0x5c, 0x18, 0xcd, 0x4c, 0x09, 0x27, + 0xc1, 0x3f, 0xf5, 0x49, 0xec, 0xf4, 0xe2, 0xdf, 0x4b, 0xaf, 0x8f, 0x02, + 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x45, 0x30, 0x82, 0x01, 0x41, + 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, + 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x53, 0x06, 0x03, + 0x55, 0x1d, 0x20, 0x04, 0x4c, 0x30, 0x4a, 0x30, 0x48, 0x06, 0x09, 0x2b, + 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e, 0x01, 0x00, 0x30, 0x3b, 0x30, 0x39, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, + 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, + 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x63, 0x66, 0x6d, 0x30, 0x42, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x36, 0x30, + 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x01, 0x86, 0x26, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, + 0x73, 0x70, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, + 0x65, 0x72, 0x6f, 0x6f, 0x74, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, + 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe5, 0x9d, + 0x59, 0x30, 0x82, 0x47, 0x58, 0xcc, 0xac, 0xfa, 0x08, 0x54, 0x36, 0x86, + 0x7b, 0x3a, 0xb5, 0x04, 0x4d, 0xf0, 0x30, 0x42, 0x06, 0x03, 0x55, 0x1d, + 0x1f, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, + 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x64, 0x70, 0x31, + 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x4f, 0x6d, + 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x32, 0x30, 0x32, 0x35, 0x2e, 0x63, + 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0x73, 0xa8, 0x08, 0x53, 0x29, 0xb8, 0x15, 0xfb, 0x99, 0x80, 0xe5, + 0xc5, 0x37, 0xd8, 0xf8, 0x39, 0x7b, 0xa4, 0x13, 0x06, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x01, 0x00, 0x68, 0xdf, 0xfe, 0x72, 0x54, 0x4e, 0x1b, + 0xfb, 0x5c, 0x6e, 0x5a, 0x45, 0x46, 0xcf, 0x42, 0xbe, 0xb2, 0x02, 0x9c, + 0x9d, 0x90, 0x6a, 0x09, 0x2e, 0xb7, 0x36, 0x64, 0x24, 0xb6, 0xb1, 0xe2, + 0x48, 0x67, 0xce, 0x17, 0x46, 0x9b, 0x23, 0x75, 0x78, 0x11, 0xf6, 0xc6, + 0x09, 0x38, 0x42, 0x62, 0x96, 0x97, 0x30, 0x7b, 0x51, 0x77, 0xdf, 0x33, + 0xb5, 0x00, 0x51, 0x29, 0xd5, 0x24, 0xfe, 0xb7, 0x98, 0xa2, 0xac, 0x6c, + 0xa1, 0x13, 0x7f, 0xca, 0xf3, 0xb7, 0xa6, 0x52, 0xc2, 0x16, 0x0d, 0xec, + 0x3a, 0xbf, 0xa3, 0x37, 0x77, 0x4f, 0xae, 0x7b, 0x55, 0x1d, 0x46, 0xe9, + 0x10, 0xda, 0xc3, 0xb4, 0x05, 0x5c, 0x5b, 0xf6, 0x48, 0x21, 0x00, 0x89, + 0xf4, 0xbb, 0x38, 0x8e, 0x1e, 0x33, 0xf3, 0x49, 0x97, 0x81, 0x31, 0x6c, + 0x16, 0x74, 0x08, 0x91, 0x17, 0xc0, 0xd3, 0x25, 0xb3, 0xbc, 0xc1, 0x15, + 0xb5, 0xa4, 0xcd, 0x84, 0x4d, 0xb9, 0xc8, 0xeb, 0xc5, 0x59, 0x42, 0x10, + 0x14, 0x25, 0x79, 0xf8, 0xdb, 0xb6, 0xd0, 0xe6, 0xd3, 0xa0, 0x14, 0x7c, + 0x17, 0x1c, 0x20, 0x1e, 0xed, 0x99, 0x90, 0x65, 0xc0, 0x41, 0x71, 0xc3, + 0xab, 0x3f, 0x29, 0x41, 0x67, 0xf9, 0xe2, 0xd1, 0x98, 0xe3, 0xf8, 0xdf, + 0x3a, 0xb8, 0xca, 0xa3, 0x6f, 0x68, 0x8b, 0x6c, 0x9f, 0x6e, 0x88, 0x7c, + 0x9d, 0x41, 0x5c, 0xba, 0xcb, 0x19, 0x05, 0x83, 0x9c, 0x99, 0xf4, 0x1a, + 0xd2, 0x24, 0x69, 0x57, 0x0a, 0x0f, 0x7a, 0xc3, 0x1b, 0x2c, 0x4b, 0x06, + 0xd3, 0x2a, 0x97, 0x7e, 0x07, 0xb0, 0xf9, 0x20, 0x5a, 0xb5, 0x92, 0x4b, + 0x5b, 0xa8, 0xeb, 0xeb, 0x36, 0x33, 0x47, 0x36, 0xda, 0x72, 0x9c, 0xbf, + 0x68, 0x45, 0x81, 0x31, 0xbe, 0xd2, 0xfd, 0x3b, 0xe9, 0x72, 0xd5, 0x70, + 0xdd, 0xa6, 0xde, 0x5f, 0x0d, 0xb6, 0x5e, 0x00, 0x49, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1828629 (0x1be715) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=The Go Daddy Group, Inc., OU=Go Daddy Class 2 Certification Authority + Validity + Not Before: Jan 1 07:00:00 2014 GMT + Not After : May 30 07:00:00 2031 GMT + Subject: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., CN=Go Daddy Root Certificate Authority - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:bf:71:62:08:f1:fa:59:34:f7:1b:c9:18:a3:f7: + 80:49:58:e9:22:83:13:a6:c5:20:43:01:3b:84:f1: + e6:85:49:9f:27:ea:f6:84:1b:4e:a0:b4:db:70:98: + c7:32:01:b1:05:3e:07:4e:ee:f4:fa:4f:2f:59:30: + 22:e7:ab:19:56:6b:e2:80:07:fc:f3:16:75:80:39: + 51:7b:e5:f9:35:b6:74:4e:a9:8d:82:13:e4:b6:3f: + a9:03:83:fa:a2:be:8a:15:6a:7f:de:0b:c3:b6:19: + 14:05:ca:ea:c3:a8:04:94:3b:46:7c:32:0d:f3:00: + 66:22:c8:8d:69:6d:36:8c:11:18:b7:d3:b2:1c:60: + b4:38:fa:02:8c:ce:d3:dd:46:07:de:0a:3e:eb:5d: + 7c:c8:7c:fb:b0:2b:53:a4:92:62:69:51:25:05:61: + 1a:44:81:8c:2c:a9:43:96:23:df:ac:3a:81:9a:0e: + 29:c5:1c:a9:e9:5d:1e:b6:9e:9e:30:0a:39:ce:f1: + 88:80:fb:4b:5d:cc:32:ec:85:62:43:25:34:02:56: + 27:01:91:b4:3b:70:2a:3f:6e:b1:e8:9c:88:01:7d: + 9f:d4:f9:db:53:6d:60:9d:bf:2c:e7:58:ab:b8:5f: + 46:fc:ce:c4:1b:03:3c:09:eb:49:31:5c:69:46:b3: + e0:47 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 3A:9A:85:07:10:67:28:B6:EF:F6:BD:05:41:6E:20:C1:94:DA:0F:DE + X509v3 Authority Key Identifier: + keyid:D2:C4:B0:D2:91:D4:4C:11:71:B3:61:CB:3D:A1:FE:DD:A8:6A:D4:E3 + + Authority Information Access: + OCSP - URI:http://ocsp.godaddy.com/ + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.godaddy.com/gdroot.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://certs.godaddy.com/repository/ + + Signature Algorithm: sha256WithRSAEncryption + 59:0b:53:bd:92:86:11:a7:24:7b:ed:5b:31:cf:1d:1f:6c:70: + c5:b8:6e:be:4e:bb:f6:be:97:50:e1:30:7f:ba:28:5c:62:94: + c2:e3:7e:33:f7:fb:42:76:85:db:95:1c:8c:22:58:75:09:0c: + 88:65:67:39:0a:16:09:c5:a0:38:97:a4:c5:23:93:3f:b4:18: + a6:01:06:44:91:e3:a7:69:27:b4:5a:25:7f:3a:b7:32:cd:dd: + 84:ff:2a:38:29:33:a4:dd:67:b2:85:fe:a1:88:20:1c:50:89: + c8:dc:2a:f6:42:03:37:4c:e6:88:df:d5:af:24:f2:b1:c3:df: + cc:b5:ec:e0:99:5e:b7:49:54:20:3c:94:18:0c:c7:1c:52:18: + 49:a4:6d:e1:b3:58:0b:c9:d8:ec:d9:ae:1c:32:8e:28:70:0d: + e2:fe:a6:17:9e:84:0f:bd:57:70:b3:5a:e9:1f:a0:86:53:bb: + ef:7c:ff:69:0b:e0:48:c3:b7:93:0b:c8:0a:54:c4:ac:5d:14: + 67:37:6c:ca:a5:2f:31:08:37:aa:6e:6f:8c:bc:9b:e2:57:5d: + 24:81:af:97:97:9c:84:ad:6c:ac:37:4c:66:f3:61:91:11:20: + e4:be:30:9f:7a:a4:29:09:b0:e1:34:5f:64:77:18:40:51:df: + 8c:30:a6:af +-----BEGIN CERTIFICATE----- +MIIEfTCCA2WgAwIBAgIDG+cVMA0GCSqGSIb3DQEBCwUAMGMxCzAJBgNVBAYTAlVT +MSEwHwYDVQQKExhUaGUgR28gRGFkZHkgR3JvdXAsIEluYy4xMTAvBgNVBAsTKEdv +IERhZGR5IENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQwMTAx +MDcwMDAwWhcNMzEwNTMwMDcwMDAwWjCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHku +Y29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1 +dGhvcml0eSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv3Fi +CPH6WTT3G8kYo/eASVjpIoMTpsUgQwE7hPHmhUmfJ+r2hBtOoLTbcJjHMgGxBT4H +Tu70+k8vWTAi56sZVmvigAf88xZ1gDlRe+X5NbZ0TqmNghPktj+pA4P6or6KFWp/ +3gvDthkUBcrqw6gElDtGfDIN8wBmIsiNaW02jBEYt9OyHGC0OPoCjM7T3UYH3go+ +6118yHz7sCtTpJJiaVElBWEaRIGMLKlDliPfrDqBmg4pxRyp6V0etp6eMAo5zvGI +gPtLXcwy7IViQyU0AlYnAZG0O3AqP26x6JyIAX2f1PnbU21gnb8s51iruF9G/M7E +GwM8CetJMVxpRrPgRwIDAQABo4IBFzCCARMwDwYDVR0TAQH/BAUwAwEB/zAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9BUFuIMGU2g/eMB8GA1Ud +IwQYMBaAFNLEsNKR1EwRcbNhyz2h/t2oatTjMDQGCCsGAQUFBwEBBCgwJjAkBggr +BgEFBQcwAYYYaHR0cDovL29jc3AuZ29kYWRkeS5jb20vMDIGA1UdHwQrMCkwJ6Al +oCOGIWh0dHA6Ly9jcmwuZ29kYWRkeS5jb20vZ2Ryb290LmNybDBGBgNVHSAEPzA9 +MDsGBFUdIAAwMzAxBggrBgEFBQcCARYlaHR0cHM6Ly9jZXJ0cy5nb2RhZGR5LmNv +bS9yZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAWQtTvZKGEacke+1bMc8d +H2xwxbhuvk679r6XUOEwf7ooXGKUwuN+M/f7QnaF25UcjCJYdQkMiGVnOQoWCcWg +OJekxSOTP7QYpgEGRJHjp2kntFolfzq3Ms3dhP8qOCkzpN1nsoX+oYggHFCJyNwq +9kIDN0zmiN/VryTyscPfzLXs4Jlet0lUIDyUGAzHHFIYSaRt4bNYC8nY7NmuHDKO +KHAN4v6mF56ED71XcLNa6R+ghlO773z/aQvgSMO3kwvIClTErF0UZzdsyqUvMQg3 +qm5vjLyb4lddJIGvl5echK1srDdMZvNhkREg5L4wn3qkKQmw4TRfZHcYQFHfjDCm +rw== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_19[] = { + 0x30, 0x82, 0x04, 0x7d, 0x30, 0x82, 0x03, 0x65, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x1b, 0xe7, 0x15, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x63, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x18, 0x54, + 0x68, 0x65, 0x20, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, + 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x28, 0x47, 0x6f, + 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x20, 0x32, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x31, 0x30, 0x31, + 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x30, + 0x35, 0x33, 0x30, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x81, + 0x83, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, + 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, + 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, + 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, + 0x04, 0x0a, 0x13, 0x11, 0x47, 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e, + 0x63, 0x6f, 0x6d, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, + 0x2f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x28, 0x47, 0x6f, 0x20, 0x44, + 0x61, 0x64, 0x64, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbf, 0x71, 0x62, + 0x08, 0xf1, 0xfa, 0x59, 0x34, 0xf7, 0x1b, 0xc9, 0x18, 0xa3, 0xf7, 0x80, + 0x49, 0x58, 0xe9, 0x22, 0x83, 0x13, 0xa6, 0xc5, 0x20, 0x43, 0x01, 0x3b, + 0x84, 0xf1, 0xe6, 0x85, 0x49, 0x9f, 0x27, 0xea, 0xf6, 0x84, 0x1b, 0x4e, + 0xa0, 0xb4, 0xdb, 0x70, 0x98, 0xc7, 0x32, 0x01, 0xb1, 0x05, 0x3e, 0x07, + 0x4e, 0xee, 0xf4, 0xfa, 0x4f, 0x2f, 0x59, 0x30, 0x22, 0xe7, 0xab, 0x19, + 0x56, 0x6b, 0xe2, 0x80, 0x07, 0xfc, 0xf3, 0x16, 0x75, 0x80, 0x39, 0x51, + 0x7b, 0xe5, 0xf9, 0x35, 0xb6, 0x74, 0x4e, 0xa9, 0x8d, 0x82, 0x13, 0xe4, + 0xb6, 0x3f, 0xa9, 0x03, 0x83, 0xfa, 0xa2, 0xbe, 0x8a, 0x15, 0x6a, 0x7f, + 0xde, 0x0b, 0xc3, 0xb6, 0x19, 0x14, 0x05, 0xca, 0xea, 0xc3, 0xa8, 0x04, + 0x94, 0x3b, 0x46, 0x7c, 0x32, 0x0d, 0xf3, 0x00, 0x66, 0x22, 0xc8, 0x8d, + 0x69, 0x6d, 0x36, 0x8c, 0x11, 0x18, 0xb7, 0xd3, 0xb2, 0x1c, 0x60, 0xb4, + 0x38, 0xfa, 0x02, 0x8c, 0xce, 0xd3, 0xdd, 0x46, 0x07, 0xde, 0x0a, 0x3e, + 0xeb, 0x5d, 0x7c, 0xc8, 0x7c, 0xfb, 0xb0, 0x2b, 0x53, 0xa4, 0x92, 0x62, + 0x69, 0x51, 0x25, 0x05, 0x61, 0x1a, 0x44, 0x81, 0x8c, 0x2c, 0xa9, 0x43, + 0x96, 0x23, 0xdf, 0xac, 0x3a, 0x81, 0x9a, 0x0e, 0x29, 0xc5, 0x1c, 0xa9, + 0xe9, 0x5d, 0x1e, 0xb6, 0x9e, 0x9e, 0x30, 0x0a, 0x39, 0xce, 0xf1, 0x88, + 0x80, 0xfb, 0x4b, 0x5d, 0xcc, 0x32, 0xec, 0x85, 0x62, 0x43, 0x25, 0x34, + 0x02, 0x56, 0x27, 0x01, 0x91, 0xb4, 0x3b, 0x70, 0x2a, 0x3f, 0x6e, 0xb1, + 0xe8, 0x9c, 0x88, 0x01, 0x7d, 0x9f, 0xd4, 0xf9, 0xdb, 0x53, 0x6d, 0x60, + 0x9d, 0xbf, 0x2c, 0xe7, 0x58, 0xab, 0xb8, 0x5f, 0x46, 0xfc, 0xce, 0xc4, + 0x1b, 0x03, 0x3c, 0x09, 0xeb, 0x49, 0x31, 0x5c, 0x69, 0x46, 0xb3, 0xe0, + 0x47, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x17, 0x30, 0x82, + 0x01, 0x13, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, + 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3a, 0x9a, + 0x85, 0x07, 0x10, 0x67, 0x28, 0xb6, 0xef, 0xf6, 0xbd, 0x05, 0x41, 0x6e, + 0x20, 0xc1, 0x94, 0xda, 0x0f, 0xde, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xd2, 0xc4, 0xb0, 0xd2, 0x91, + 0xd4, 0x4c, 0x11, 0x71, 0xb3, 0x61, 0xcb, 0x3d, 0xa1, 0xfe, 0xdd, 0xa8, + 0x6a, 0xd4, 0xe3, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6f, 0x64, + 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x32, 0x06, + 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30, 0x27, 0xa0, 0x25, + 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, + 0x72, 0x6c, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x64, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, + 0x6c, 0x30, 0x46, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, + 0x30, 0x3b, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74, + 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x2f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x59, 0x0b, 0x53, + 0xbd, 0x92, 0x86, 0x11, 0xa7, 0x24, 0x7b, 0xed, 0x5b, 0x31, 0xcf, 0x1d, + 0x1f, 0x6c, 0x70, 0xc5, 0xb8, 0x6e, 0xbe, 0x4e, 0xbb, 0xf6, 0xbe, 0x97, + 0x50, 0xe1, 0x30, 0x7f, 0xba, 0x28, 0x5c, 0x62, 0x94, 0xc2, 0xe3, 0x7e, + 0x33, 0xf7, 0xfb, 0x42, 0x76, 0x85, 0xdb, 0x95, 0x1c, 0x8c, 0x22, 0x58, + 0x75, 0x09, 0x0c, 0x88, 0x65, 0x67, 0x39, 0x0a, 0x16, 0x09, 0xc5, 0xa0, + 0x38, 0x97, 0xa4, 0xc5, 0x23, 0x93, 0x3f, 0xb4, 0x18, 0xa6, 0x01, 0x06, + 0x44, 0x91, 0xe3, 0xa7, 0x69, 0x27, 0xb4, 0x5a, 0x25, 0x7f, 0x3a, 0xb7, + 0x32, 0xcd, 0xdd, 0x84, 0xff, 0x2a, 0x38, 0x29, 0x33, 0xa4, 0xdd, 0x67, + 0xb2, 0x85, 0xfe, 0xa1, 0x88, 0x20, 0x1c, 0x50, 0x89, 0xc8, 0xdc, 0x2a, + 0xf6, 0x42, 0x03, 0x37, 0x4c, 0xe6, 0x88, 0xdf, 0xd5, 0xaf, 0x24, 0xf2, + 0xb1, 0xc3, 0xdf, 0xcc, 0xb5, 0xec, 0xe0, 0x99, 0x5e, 0xb7, 0x49, 0x54, + 0x20, 0x3c, 0x94, 0x18, 0x0c, 0xc7, 0x1c, 0x52, 0x18, 0x49, 0xa4, 0x6d, + 0xe1, 0xb3, 0x58, 0x0b, 0xc9, 0xd8, 0xec, 0xd9, 0xae, 0x1c, 0x32, 0x8e, + 0x28, 0x70, 0x0d, 0xe2, 0xfe, 0xa6, 0x17, 0x9e, 0x84, 0x0f, 0xbd, 0x57, + 0x70, 0xb3, 0x5a, 0xe9, 0x1f, 0xa0, 0x86, 0x53, 0xbb, 0xef, 0x7c, 0xff, + 0x69, 0x0b, 0xe0, 0x48, 0xc3, 0xb7, 0x93, 0x0b, 0xc8, 0x0a, 0x54, 0xc4, + 0xac, 0x5d, 0x14, 0x67, 0x37, 0x6c, 0xca, 0xa5, 0x2f, 0x31, 0x08, 0x37, + 0xaa, 0x6e, 0x6f, 0x8c, 0xbc, 0x9b, 0xe2, 0x57, 0x5d, 0x24, 0x81, 0xaf, + 0x97, 0x97, 0x9c, 0x84, 0xad, 0x6c, 0xac, 0x37, 0x4c, 0x66, 0xf3, 0x61, + 0x91, 0x11, 0x20, 0xe4, 0xbe, 0x30, 0x9f, 0x7a, 0xa4, 0x29, 0x09, 0xb0, + 0xe1, 0x34, 0x5f, 0x64, 0x77, 0x18, 0x40, 0x51, 0xdf, 0x8c, 0x30, 0xa6, + 0xaf, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 46:f0:8c:db:cf:2c:54:66:ef:33:01:dd:5f:34 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA + Validity + Not Before: Aug 19 00:00:00 2015 GMT + Not After : Aug 19 00:00:00 2025 GMT + Subject: C=BE, O=GlobalSign nv-sa, CN=GlobalSign CloudSSL CA - SHA256 - G3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:a3:c0:75:e1:32:98:e5:d9:ae:84:7c:8d:e8:23: + 5f:46:95:5b:4c:a2:25:70:d7:90:04:85:80:c9:b5: + f4:8a:65:4d:92:cb:a5:c4:42:a0:b6:79:25:31:ed: + f1:85:20:cd:13:51:3d:67:ac:97:4d:68:9b:33:86: + 5c:b3:7b:2d:aa:df:77:a0:61:d1:f5:3c:fb:9a:fc: + d3:d5:94:ca:c9:1e:80:1b:90:90:c8:ac:8d:f6:60: + 17:9c:31:b8:c5:61:a2:e2:6e:57:25:08:6f:24:99: + 99:cf:94:bf:c7:8b:6b:b0:1f:ca:14:fa:18:9b:6c: + 10:7c:99:2b:da:4a:63:e5:b2:4e:c2:fd:3e:10:0b: + 48:f4:77:0b:2f:f0:96:4b:3a:ee:bd:35:de:85:8d: + da:13:0e:ce:01:c4:71:d3:d3:77:c5:08:a6:60:39: + 25:a7:27:69:5c:83:d1:6f:76:78:ee:c5:44:5b:45: + bd:29:3b:e2:c6:09:0f:a2:be:2b:dc:e3:5c:da:5a: + 6f:8e:e7:c9:07:6b:7e:a1:c0:53:95:82:89:e0:78: + 5c:72:a8:6c:be:67:6b:ab:e7:33:d9:87:f2:f8:5c: + 27:f4:f6:2a:3b:87:ef:da:c2:47:da:bf:ac:eb:27: + 64:7b:4c:53:eb:34:e1:2f:9b:20:4d:54:12:6b:7d: + 28:bd + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Subject Key Identifier: + A9:2B:87:E1:CE:24:47:3B:1B:BF:CF:85:37:02:55:9D:0D:94:58:E6 + X509v3 Authority Key Identifier: + keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B + + Authority Information Access: + OCSP - URI:http://ocsp.globalsign.com/rootr1 + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.globalsign.com/root.crl + + X509v3 Certificate Policies: + Policy: 1.3.6.1.4.1.4146.1.20 + Policy: 2.23.140.1.2.2 + CPS: https://www.globalsign.com/repository/ + + Signature Algorithm: sha256WithRSAEncryption + a2:1d:69:8a:0a:8e:c4:14:83:2a:2a:12:4d:39:27:90:4e:f0: + 8d:ac:d2:96:62:47:36:5e:92:d1:fa:c5:93:b5:37:07:65:29: + d2:f4:53:50:6b:c9:f4:fe:34:f5:dd:b8:1d:fa:fc:dc:14:ac: + 56:94:27:9c:42:aa:04:4d:b7:ed:58:d9:99:d2:49:e6:20:2f: + d3:a7:77:b8:2a:89:1a:ef:a7:cf:86:2d:d6:53:e9:0b:93:9c: + 4e:ab:d9:45:ee:a4:84:85:ff:34:e4:0e:c0:bb:a5:ce:5f:95: + 89:85:70:aa:c1:5d:ec:cf:2b:d3:d9:83:df:03:ca:81:a7:02: + 32:b7:77:61:10:25:4e:d9:74:f3:d9:79:82:b5:26:70:b4:52: + bc:8f:33:d7:8a:ae:19:d0:fc:92:ad:2f:ba:3c:a0:48:58:47: + 5e:fd:20:56:95:20:c1:72:1d:ab:66:99:a4:d5:78:37:48:1b: + 9f:b2:4c:37:67:7a:fd:42:d2:d3:56:9e:d3:1d:8e:c4:0c:68: + 96:b6:47:51:10:f7:7b:eb:15:09:64:f5:f9:f0:63:16:2d:3d: + df:23:42:3a:93:63:cc:ab:af:4f:57:06:c7:fe:14:55:62:ce: + 27:11:19:e1:f4:42:ed:22:30:6b:35:1a:4a:05:80:a4:65:df: + cc:cb:6f:d0 +-----BEGIN CERTIFICATE----- +MIIEizCCA3OgAwIBAgIORvCM288sVGbvMwHdXzQwDQYJKoZIhvcNAQELBQAwVzEL +MAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsT +B1Jvb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNTA4MTkw +MDAwMDBaFw0yNTA4MTkwMDAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBH +bG9iYWxTaWduIG52LXNhMS0wKwYDVQQDEyRHbG9iYWxTaWduIENsb3VkU1NMIENB +IC0gU0hBMjU2IC0gRzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCj +wHXhMpjl2a6EfI3oI19GlVtMoiVw15AEhYDJtfSKZU2Sy6XEQqC2eSUx7fGFIM0T +UT1nrJdNaJszhlyzey2q33egYdH1PPua/NPVlMrJHoAbkJDIrI32YBecMbjFYaLi +blclCG8kmZnPlL/Hi2uwH8oU+hibbBB8mSvaSmPlsk7C/T4QC0j0dwsv8JZLOu69 +Nd6FjdoTDs4BxHHT03fFCKZgOSWnJ2lcg9FvdnjuxURbRb0pO+LGCQ+ivivc41za +Wm+O58kHa36hwFOVgongeFxyqGy+Z2ur5zPZh/L4XCf09io7h+/awkfav6zrJ2R7 +TFPrNOEvmyBNVBJrfSi9AgMBAAGjggFTMIIBTzAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8CAQAw +HQYDVR0OBBYEFKkrh+HOJEc7G7/PhTcCVZ0NlFjmMB8GA1UdIwQYMBaAFGB7ZhpF +DZfKiVAvfQTNNKj//P1LMD0GCCsGAQUFBwEBBDEwLzAtBggrBgEFBQcwAYYhaHR0 +cDovL29jc3AuZ2xvYmFsc2lnbi5jb20vcm9vdHIxMDMGA1UdHwQsMCowKKAmoCSG +Imh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5jb20vcm9vdC5jcmwwVgYDVR0gBE8wTTAL +BgkrBgEEAaAyARQwPgYGZ4EMAQICMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3 +Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMA0GCSqGSIb3DQEBCwUAA4IBAQCi +HWmKCo7EFIMqKhJNOSeQTvCNrNKWYkc2XpLR+sWTtTcHZSnS9FNQa8n0/jT13bgd ++vzcFKxWlCecQqoETbftWNmZ0knmIC/Tp3e4Koka76fPhi3WU+kLk5xOq9lF7qSE +hf805A7Au6XOX5WJhXCqwV3szyvT2YPfA8qBpwIyt3dhECVO2XTz2XmCtSZwtFK8 +jzPXiq4Z0PySrS+6PKBIWEde/SBWlSDBch2rZpmk1Xg3SBufskw3Z3r9QtLTVp7T +HY7EDGiWtkdREPd76xUJZPX58GMWLT3fI0I6k2PMq69PVwbH/hRVYs4nERnh9ELt +IjBrNRpKBYCkZd/My2/Q +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_20[] = { + 0x30, 0x82, 0x04, 0x8b, 0x30, 0x82, 0x03, 0x73, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x0e, 0x46, 0xf0, 0x8c, 0xdb, 0xcf, 0x2c, 0x54, 0x66, 0xef, + 0x33, 0x01, 0xdd, 0x5f, 0x34, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, + 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, + 0x73, 0x61, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x07, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, + 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x38, 0x31, 0x39, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x35, 0x30, 0x38, + 0x31, 0x39, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x57, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, + 0x2d, 0x73, 0x61, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, + 0x20, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, + 0x20, 0x2d, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, + 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3, + 0xc0, 0x75, 0xe1, 0x32, 0x98, 0xe5, 0xd9, 0xae, 0x84, 0x7c, 0x8d, 0xe8, + 0x23, 0x5f, 0x46, 0x95, 0x5b, 0x4c, 0xa2, 0x25, 0x70, 0xd7, 0x90, 0x04, + 0x85, 0x80, 0xc9, 0xb5, 0xf4, 0x8a, 0x65, 0x4d, 0x92, 0xcb, 0xa5, 0xc4, + 0x42, 0xa0, 0xb6, 0x79, 0x25, 0x31, 0xed, 0xf1, 0x85, 0x20, 0xcd, 0x13, + 0x51, 0x3d, 0x67, 0xac, 0x97, 0x4d, 0x68, 0x9b, 0x33, 0x86, 0x5c, 0xb3, + 0x7b, 0x2d, 0xaa, 0xdf, 0x77, 0xa0, 0x61, 0xd1, 0xf5, 0x3c, 0xfb, 0x9a, + 0xfc, 0xd3, 0xd5, 0x94, 0xca, 0xc9, 0x1e, 0x80, 0x1b, 0x90, 0x90, 0xc8, + 0xac, 0x8d, 0xf6, 0x60, 0x17, 0x9c, 0x31, 0xb8, 0xc5, 0x61, 0xa2, 0xe2, + 0x6e, 0x57, 0x25, 0x08, 0x6f, 0x24, 0x99, 0x99, 0xcf, 0x94, 0xbf, 0xc7, + 0x8b, 0x6b, 0xb0, 0x1f, 0xca, 0x14, 0xfa, 0x18, 0x9b, 0x6c, 0x10, 0x7c, + 0x99, 0x2b, 0xda, 0x4a, 0x63, 0xe5, 0xb2, 0x4e, 0xc2, 0xfd, 0x3e, 0x10, + 0x0b, 0x48, 0xf4, 0x77, 0x0b, 0x2f, 0xf0, 0x96, 0x4b, 0x3a, 0xee, 0xbd, + 0x35, 0xde, 0x85, 0x8d, 0xda, 0x13, 0x0e, 0xce, 0x01, 0xc4, 0x71, 0xd3, + 0xd3, 0x77, 0xc5, 0x08, 0xa6, 0x60, 0x39, 0x25, 0xa7, 0x27, 0x69, 0x5c, + 0x83, 0xd1, 0x6f, 0x76, 0x78, 0xee, 0xc5, 0x44, 0x5b, 0x45, 0xbd, 0x29, + 0x3b, 0xe2, 0xc6, 0x09, 0x0f, 0xa2, 0xbe, 0x2b, 0xdc, 0xe3, 0x5c, 0xda, + 0x5a, 0x6f, 0x8e, 0xe7, 0xc9, 0x07, 0x6b, 0x7e, 0xa1, 0xc0, 0x53, 0x95, + 0x82, 0x89, 0xe0, 0x78, 0x5c, 0x72, 0xa8, 0x6c, 0xbe, 0x67, 0x6b, 0xab, + 0xe7, 0x33, 0xd9, 0x87, 0xf2, 0xf8, 0x5c, 0x27, 0xf4, 0xf6, 0x2a, 0x3b, + 0x87, 0xef, 0xda, 0xc2, 0x47, 0xda, 0xbf, 0xac, 0xeb, 0x27, 0x64, 0x7b, + 0x4c, 0x53, 0xeb, 0x34, 0xe1, 0x2f, 0x9b, 0x20, 0x4d, 0x54, 0x12, 0x6b, + 0x7d, 0x28, 0xbd, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x53, + 0x30, 0x82, 0x01, 0x4f, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, + 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x03, 0x02, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xa9, 0x2b, + 0x87, 0xe1, 0xce, 0x24, 0x47, 0x3b, 0x1b, 0xbf, 0xcf, 0x85, 0x37, 0x02, + 0x55, 0x9d, 0x0d, 0x94, 0x58, 0xe6, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, 0x1a, 0x45, + 0x0d, 0x97, 0xca, 0x89, 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, 0xa8, 0xff, + 0xfc, 0xfd, 0x4b, 0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6c, 0x6f, + 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x72, 0x6f, 0x6f, 0x74, 0x72, 0x31, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, + 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, + 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, + 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x56, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x4f, 0x30, 0x4d, 0x30, 0x0b, + 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xa0, 0x32, 0x01, 0x14, 0x30, + 0x3e, 0x06, 0x06, 0x67, 0x81, 0x0c, 0x01, 0x02, 0x02, 0x30, 0x34, 0x30, + 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, + 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, + 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x2f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xa2, + 0x1d, 0x69, 0x8a, 0x0a, 0x8e, 0xc4, 0x14, 0x83, 0x2a, 0x2a, 0x12, 0x4d, + 0x39, 0x27, 0x90, 0x4e, 0xf0, 0x8d, 0xac, 0xd2, 0x96, 0x62, 0x47, 0x36, + 0x5e, 0x92, 0xd1, 0xfa, 0xc5, 0x93, 0xb5, 0x37, 0x07, 0x65, 0x29, 0xd2, + 0xf4, 0x53, 0x50, 0x6b, 0xc9, 0xf4, 0xfe, 0x34, 0xf5, 0xdd, 0xb8, 0x1d, + 0xfa, 0xfc, 0xdc, 0x14, 0xac, 0x56, 0x94, 0x27, 0x9c, 0x42, 0xaa, 0x04, + 0x4d, 0xb7, 0xed, 0x58, 0xd9, 0x99, 0xd2, 0x49, 0xe6, 0x20, 0x2f, 0xd3, + 0xa7, 0x77, 0xb8, 0x2a, 0x89, 0x1a, 0xef, 0xa7, 0xcf, 0x86, 0x2d, 0xd6, + 0x53, 0xe9, 0x0b, 0x93, 0x9c, 0x4e, 0xab, 0xd9, 0x45, 0xee, 0xa4, 0x84, + 0x85, 0xff, 0x34, 0xe4, 0x0e, 0xc0, 0xbb, 0xa5, 0xce, 0x5f, 0x95, 0x89, + 0x85, 0x70, 0xaa, 0xc1, 0x5d, 0xec, 0xcf, 0x2b, 0xd3, 0xd9, 0x83, 0xdf, + 0x03, 0xca, 0x81, 0xa7, 0x02, 0x32, 0xb7, 0x77, 0x61, 0x10, 0x25, 0x4e, + 0xd9, 0x74, 0xf3, 0xd9, 0x79, 0x82, 0xb5, 0x26, 0x70, 0xb4, 0x52, 0xbc, + 0x8f, 0x33, 0xd7, 0x8a, 0xae, 0x19, 0xd0, 0xfc, 0x92, 0xad, 0x2f, 0xba, + 0x3c, 0xa0, 0x48, 0x58, 0x47, 0x5e, 0xfd, 0x20, 0x56, 0x95, 0x20, 0xc1, + 0x72, 0x1d, 0xab, 0x66, 0x99, 0xa4, 0xd5, 0x78, 0x37, 0x48, 0x1b, 0x9f, + 0xb2, 0x4c, 0x37, 0x67, 0x7a, 0xfd, 0x42, 0xd2, 0xd3, 0x56, 0x9e, 0xd3, + 0x1d, 0x8e, 0xc4, 0x0c, 0x68, 0x96, 0xb6, 0x47, 0x51, 0x10, 0xf7, 0x7b, + 0xeb, 0x15, 0x09, 0x64, 0xf5, 0xf9, 0xf0, 0x63, 0x16, 0x2d, 0x3d, 0xdf, + 0x23, 0x42, 0x3a, 0x93, 0x63, 0xcc, 0xab, 0xaf, 0x4f, 0x57, 0x06, 0xc7, + 0xfe, 0x14, 0x55, 0x62, 0xce, 0x27, 0x11, 0x19, 0xe1, 0xf4, 0x42, 0xed, + 0x22, 0x30, 0x6b, 0x35, 0x1a, 0x4a, 0x05, 0x80, 0xa4, 0x65, 0xdf, 0xcc, + 0xcb, 0x6f, 0xd0, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 1b:09:3b:78:60:96:da:37:bb:a4:51:94:46:c8:96:78 + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority + Validity + Not Before: Nov 8 00:00:00 2006 GMT + Not After : Nov 7 23:59:59 2021 GMT + Subject: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 2006 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 3 Public Primary Certification Authority - G5 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:af:24:08:08:29:7a:35:9e:60:0c:aa:e7:4b:3b: + 4e:dc:7c:bc:3c:45:1c:bb:2b:e0:fe:29:02:f9:57: + 08:a3:64:85:15:27:f5:f1:ad:c8:31:89:5d:22:e8: + 2a:aa:a6:42:b3:8f:f8:b9:55:b7:b1:b7:4b:b3:fe: + 8f:7e:07:57:ec:ef:43:db:66:62:15:61:cf:60:0d: + a4:d8:de:f8:e0:c3:62:08:3d:54:13:eb:49:ca:59: + 54:85:26:e5:2b:8f:1b:9f:eb:f5:a1:91:c2:33:49: + d8:43:63:6a:52:4b:d2:8f:e8:70:51:4d:d1:89:69: + 7b:c7:70:f6:b3:dc:12:74:db:7b:5d:4b:56:d3:96: + bf:15:77:a1:b0:f4:a2:25:f2:af:1c:92:67:18:e5: + f4:06:04:ef:90:b9:e4:00:e4:dd:3a:b5:19:ff:02: + ba:f4:3c:ee:e0:8b:eb:37:8b:ec:f4:d7:ac:f2:f6: + f0:3d:af:dd:75:91:33:19:1d:1c:40:cb:74:24:19: + 21:93:d9:14:fe:ac:2a:52:c7:8f:d5:04:49:e4:8d: + 63:47:88:3c:69:83:cb:fe:47:bd:2b:7e:4f:c5:95: + ae:0e:9d:d4:d1:43:c0:67:73:e3:14:08:7e:e5:3f: + 9f:73:b8:33:0a:cf:5d:3f:34:87:96:8a:ee:53:e8: + 25:15 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.verisign.com/pca3.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.verisign.com/cps + + X509v3 Subject Key Identifier: + 7F:D3:65:A7:C2:DD:EC:BB:F0:30:09:F3:43:39:FA:02:AF:33:31:33 + 1.3.6.1.5.5.7.1.12: + 0_.].[0Y0W0U..image/gif0!0.0...+..............k...j.H.,{..0%.#http://logo.verisign.com/vslogo.gif + Authority Information Access: + OCSP - URI:http://ocsp.verisign.com + + Signature Algorithm: sha1WithRSAEncryption + a3:cd:7d:1e:f7:c7:75:8d:48:e7:56:34:4c:00:90:75:a9:51: + a5:56:c1:6d:bc:fe:f5:53:22:e9:98:a2:ac:9a:7e:70:1e:b3: + 8e:3b:45:e3:86:95:31:da:6d:4c:fb:34:50:80:96:cd:24:f2: + 40:df:04:3f:e2:65:ce:34:22:61:15:ea:66:70:64:d2:f1:6e: + f3:ca:18:59:6a:41:46:7e:82:de:19:b0:70:31:56:69:0d:0c: + e6:1d:9d:71:58:dc:cc:de:62:f5:e1:7a:10:02:d8:7a:dc:3b: + fa:57:bd:c9:e9:8f:46:21:39:9f:51:65:4c:8e:3a:be:28:41: + 70:1d +-----BEGIN CERTIFICATE----- +MIIEkDCCA/mgAwIBAgIQGwk7eGCW2je7pFGURsiWeDANBgkqhkiG9w0BAQUFADBf +MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT +LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw +HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv +ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8 +RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb +ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR +TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH +iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB +AAGjggFbMIIBVzAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0 +dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjA9 +BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVy +aXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwbQYI +KwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQU +j+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29t +L3ZzbG9nby5naWYwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8v +b2NzcC52ZXJpc2lnbi5jb20wDQYJKoZIhvcNAQEFBQADgYEAo819HvfHdY1I51Y0 +TACQdalRpVbBbbz+9VMi6ZiirJp+cB6zjjtF44aVMdptTPs0UICWzSTyQN8EP+Jl +zjQiYRXqZnBk0vFu88oYWWpBRn6C3hmwcDFWaQ0M5h2dcVjczN5i9eF6EALYetw7 ++le9yemPRiE5n1FlTI46vihBcB0= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_21[] = { + 0x30, 0x82, 0x04, 0x90, 0x30, 0x82, 0x03, 0xf9, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x1b, 0x09, 0x3b, 0x78, 0x60, 0x96, 0xda, 0x37, 0xbb, + 0xa4, 0x51, 0x94, 0x46, 0xc8, 0x96, 0x78, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5f, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, + 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x30, 0x38, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 0x30, 0x37, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xca, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3a, 0x30, + 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, 0x63, 0x29, 0x20, + 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, + 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, + 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, + 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x45, 0x30, + 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, + 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, + 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, 0x24, 0x08, 0x08, 0x29, 0x7a, 0x35, + 0x9e, 0x60, 0x0c, 0xaa, 0xe7, 0x4b, 0x3b, 0x4e, 0xdc, 0x7c, 0xbc, 0x3c, + 0x45, 0x1c, 0xbb, 0x2b, 0xe0, 0xfe, 0x29, 0x02, 0xf9, 0x57, 0x08, 0xa3, + 0x64, 0x85, 0x15, 0x27, 0xf5, 0xf1, 0xad, 0xc8, 0x31, 0x89, 0x5d, 0x22, + 0xe8, 0x2a, 0xaa, 0xa6, 0x42, 0xb3, 0x8f, 0xf8, 0xb9, 0x55, 0xb7, 0xb1, + 0xb7, 0x4b, 0xb3, 0xfe, 0x8f, 0x7e, 0x07, 0x57, 0xec, 0xef, 0x43, 0xdb, + 0x66, 0x62, 0x15, 0x61, 0xcf, 0x60, 0x0d, 0xa4, 0xd8, 0xde, 0xf8, 0xe0, + 0xc3, 0x62, 0x08, 0x3d, 0x54, 0x13, 0xeb, 0x49, 0xca, 0x59, 0x54, 0x85, + 0x26, 0xe5, 0x2b, 0x8f, 0x1b, 0x9f, 0xeb, 0xf5, 0xa1, 0x91, 0xc2, 0x33, + 0x49, 0xd8, 0x43, 0x63, 0x6a, 0x52, 0x4b, 0xd2, 0x8f, 0xe8, 0x70, 0x51, + 0x4d, 0xd1, 0x89, 0x69, 0x7b, 0xc7, 0x70, 0xf6, 0xb3, 0xdc, 0x12, 0x74, + 0xdb, 0x7b, 0x5d, 0x4b, 0x56, 0xd3, 0x96, 0xbf, 0x15, 0x77, 0xa1, 0xb0, + 0xf4, 0xa2, 0x25, 0xf2, 0xaf, 0x1c, 0x92, 0x67, 0x18, 0xe5, 0xf4, 0x06, + 0x04, 0xef, 0x90, 0xb9, 0xe4, 0x00, 0xe4, 0xdd, 0x3a, 0xb5, 0x19, 0xff, + 0x02, 0xba, 0xf4, 0x3c, 0xee, 0xe0, 0x8b, 0xeb, 0x37, 0x8b, 0xec, 0xf4, + 0xd7, 0xac, 0xf2, 0xf6, 0xf0, 0x3d, 0xaf, 0xdd, 0x75, 0x91, 0x33, 0x19, + 0x1d, 0x1c, 0x40, 0xcb, 0x74, 0x24, 0x19, 0x21, 0x93, 0xd9, 0x14, 0xfe, + 0xac, 0x2a, 0x52, 0xc7, 0x8f, 0xd5, 0x04, 0x49, 0xe4, 0x8d, 0x63, 0x47, + 0x88, 0x3c, 0x69, 0x83, 0xcb, 0xfe, 0x47, 0xbd, 0x2b, 0x7e, 0x4f, 0xc5, + 0x95, 0xae, 0x0e, 0x9d, 0xd4, 0xd1, 0x43, 0xc0, 0x67, 0x73, 0xe3, 0x14, + 0x08, 0x7e, 0xe5, 0x3f, 0x9f, 0x73, 0xb8, 0x33, 0x0a, 0xcf, 0x5d, 0x3f, + 0x34, 0x87, 0x96, 0x8a, 0xee, 0x53, 0xe8, 0x25, 0x15, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x5b, 0x30, 0x82, 0x01, 0x57, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, + 0x01, 0x01, 0xff, 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a, + 0x30, 0x28, 0x30, 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, + 0x61, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3d, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, + 0x73, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, + 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x6d, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, + 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, + 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, + 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, + 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, + 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, + 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, + 0xa3, 0xcd, 0x7d, 0x1e, 0xf7, 0xc7, 0x75, 0x8d, 0x48, 0xe7, 0x56, 0x34, + 0x4c, 0x00, 0x90, 0x75, 0xa9, 0x51, 0xa5, 0x56, 0xc1, 0x6d, 0xbc, 0xfe, + 0xf5, 0x53, 0x22, 0xe9, 0x98, 0xa2, 0xac, 0x9a, 0x7e, 0x70, 0x1e, 0xb3, + 0x8e, 0x3b, 0x45, 0xe3, 0x86, 0x95, 0x31, 0xda, 0x6d, 0x4c, 0xfb, 0x34, + 0x50, 0x80, 0x96, 0xcd, 0x24, 0xf2, 0x40, 0xdf, 0x04, 0x3f, 0xe2, 0x65, + 0xce, 0x34, 0x22, 0x61, 0x15, 0xea, 0x66, 0x70, 0x64, 0xd2, 0xf1, 0x6e, + 0xf3, 0xca, 0x18, 0x59, 0x6a, 0x41, 0x46, 0x7e, 0x82, 0xde, 0x19, 0xb0, + 0x70, 0x31, 0x56, 0x69, 0x0d, 0x0c, 0xe6, 0x1d, 0x9d, 0x71, 0x58, 0xdc, + 0xcc, 0xde, 0x62, 0xf5, 0xe1, 0x7a, 0x10, 0x02, 0xd8, 0x7a, 0xdc, 0x3b, + 0xfa, 0x57, 0xbd, 0xc9, 0xe9, 0x8f, 0x46, 0x21, 0x39, 0x9f, 0x51, 0x65, + 0x4c, 0x8e, 0x3a, 0xbe, 0x28, 0x41, 0x70, 0x1d, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 0a:01:41:42:00:00:01:53:85:73:6a:0b:85:ec:a7:08 + Signature Algorithm: sha256WithRSAEncryption + Issuer: O=Digital Signature Trust Co., CN=DST Root CA X3 + Validity + Not Before: Mar 17 16:40:46 2016 GMT + Not After : Mar 17 16:40:46 2021 GMT + Subject: C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:9c:d3:0c:f0:5a:e5:2e:47:b7:72:5d:37:83:b3: + 68:63:30:ea:d7:35:26:19:25:e1:bd:be:35:f1:70: + 92:2f:b7:b8:4b:41:05:ab:a9:9e:35:08:58:ec:b1: + 2a:c4:68:87:0b:a3:e3:75:e4:e6:f3:a7:62:71:ba: + 79:81:60:1f:d7:91:9a:9f:f3:d0:78:67:71:c8:69: + 0e:95:91:cf:fe:e6:99:e9:60:3c:48:cc:7e:ca:4d: + 77:12:24:9d:47:1b:5a:eb:b9:ec:1e:37:00:1c:9c: + ac:7b:a7:05:ea:ce:4a:eb:bd:41:e5:36:98:b9:cb: + fd:6d:3c:96:68:df:23:2a:42:90:0c:86:74:67:c8: + 7f:a5:9a:b8:52:61:14:13:3f:65:e9:82:87:cb:db: + fa:0e:56:f6:86:89:f3:85:3f:97:86:af:b0:dc:1a: + ef:6b:0d:95:16:7d:c4:2b:a0:65:b2:99:04:36:75: + 80:6b:ac:4a:f3:1b:90:49:78:2f:a2:96:4f:2a:20: + 25:29:04:c6:74:c0:d0:31:cd:8f:31:38:95:16:ba: + a8:33:b8:43:f1:b1:1f:c3:30:7f:a2:79:31:13:3d: + 2d:36:f8:e3:fc:f2:33:6a:b9:39:31:c5:af:c4:8d: + 0d:1d:64:16:33:aa:fa:84:29:b6:d4:0b:c0:d8:7d: + c3:93 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + Authority Information Access: + OCSP - URI:http://isrg.trustid.ocsp.identrust.com + CA Issuers - URI:http://apps.identrust.com/roots/dstrootcax3.p7c + + X509v3 Authority Key Identifier: + keyid:C4:A7:B1:A4:7B:2C:71:FA:DB:E1:4B:90:75:FF:C4:15:60:85:89:10 + + X509v3 Certificate Policies: + Policy: 2.23.140.1.2.1 + Policy: 1.3.6.1.4.1.44947.1.1.1 + CPS: http://cps.root-x1.letsencrypt.org + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.identrust.com/DSTROOTCAX3CRL.crl + + X509v3 Subject Key Identifier: + A8:4A:6A:63:04:7D:DD:BA:E6:D1:39:B7:A6:45:65:EF:F3:A8:EC:A1 + Signature Algorithm: sha256WithRSAEncryption + dd:33:d7:11:f3:63:58:38:dd:18:15:fb:09:55:be:76:56:b9: + 70:48:a5:69:47:27:7b:c2:24:08:92:f1:5a:1f:4a:12:29:37: + 24:74:51:1c:62:68:b8:cd:95:70:67:e5:f7:a4:bc:4e:28:51: + cd:9b:e8:ae:87:9d:ea:d8:ba:5a:a1:01:9a:dc:f0:dd:6a:1d: + 6a:d8:3e:57:23:9e:a6:1e:04:62:9a:ff:d7:05:ca:b7:1f:3f: + c0:0a:48:bc:94:b0:b6:65:62:e0:c1:54:e5:a3:2a:ad:20:c4: + e9:e6:bb:dc:c8:f6:b5:c3:32:a3:98:cc:77:a8:e6:79:65:07: + 2b:cb:28:fe:3a:16:52:81:ce:52:0c:2e:5f:83:e8:d5:06:33: + fb:77:6c:ce:40:ea:32:9e:1f:92:5c:41:c1:74:6c:5b:5d:0a: + 5f:33:cc:4d:9f:ac:38:f0:2f:7b:2c:62:9d:d9:a3:91:6f:25: + 1b:2f:90:b1:19:46:3d:f6:7e:1b:a6:7a:87:b9:a3:7a:6d:18: + fa:25:a5:91:87:15:e0:f2:16:2f:58:b0:06:2f:2c:68:26:c6: + 4b:98:cd:da:9f:0c:f9:7f:90:ed:43:4a:12:44:4e:6f:73:7a: + 28:ea:a4:aa:6e:7b:4c:7d:87:dd:e0:c9:02:44:a7:87:af:c3: + 34:5b:b4:42 +-----BEGIN CERTIFICATE----- +MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/ +MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT +DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow +SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT +GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF +q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8 +SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0 +Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA +a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj +/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T +AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG +CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv +bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k +c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw +VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC +ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz +MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu +Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF +AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo +uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/ +wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu +X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG +PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6 +KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_22[] = { + 0x30, 0x82, 0x04, 0x92, 0x30, 0x82, 0x03, 0x7a, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x0a, 0x01, 0x41, 0x42, 0x00, 0x00, 0x01, 0x53, 0x85, + 0x73, 0x6a, 0x0b, 0x85, 0xec, 0xa7, 0x08, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x3f, + 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1b, 0x44, + 0x69, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x43, + 0x6f, 0x2e, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x0e, 0x44, 0x53, 0x54, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, + 0x20, 0x58, 0x33, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x36, 0x30, 0x33, 0x31, + 0x37, 0x31, 0x36, 0x34, 0x30, 0x34, 0x36, 0x5a, 0x17, 0x0d, 0x32, 0x31, + 0x30, 0x33, 0x31, 0x37, 0x31, 0x36, 0x34, 0x30, 0x34, 0x36, 0x5a, 0x30, + 0x4a, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x4c, 0x65, 0x74, 0x27, 0x73, 0x20, 0x45, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x31, 0x23, 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x1a, 0x4c, 0x65, 0x74, 0x27, 0x73, 0x20, 0x45, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x20, 0x58, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, + 0x9c, 0xd3, 0x0c, 0xf0, 0x5a, 0xe5, 0x2e, 0x47, 0xb7, 0x72, 0x5d, 0x37, + 0x83, 0xb3, 0x68, 0x63, 0x30, 0xea, 0xd7, 0x35, 0x26, 0x19, 0x25, 0xe1, + 0xbd, 0xbe, 0x35, 0xf1, 0x70, 0x92, 0x2f, 0xb7, 0xb8, 0x4b, 0x41, 0x05, + 0xab, 0xa9, 0x9e, 0x35, 0x08, 0x58, 0xec, 0xb1, 0x2a, 0xc4, 0x68, 0x87, + 0x0b, 0xa3, 0xe3, 0x75, 0xe4, 0xe6, 0xf3, 0xa7, 0x62, 0x71, 0xba, 0x79, + 0x81, 0x60, 0x1f, 0xd7, 0x91, 0x9a, 0x9f, 0xf3, 0xd0, 0x78, 0x67, 0x71, + 0xc8, 0x69, 0x0e, 0x95, 0x91, 0xcf, 0xfe, 0xe6, 0x99, 0xe9, 0x60, 0x3c, + 0x48, 0xcc, 0x7e, 0xca, 0x4d, 0x77, 0x12, 0x24, 0x9d, 0x47, 0x1b, 0x5a, + 0xeb, 0xb9, 0xec, 0x1e, 0x37, 0x00, 0x1c, 0x9c, 0xac, 0x7b, 0xa7, 0x05, + 0xea, 0xce, 0x4a, 0xeb, 0xbd, 0x41, 0xe5, 0x36, 0x98, 0xb9, 0xcb, 0xfd, + 0x6d, 0x3c, 0x96, 0x68, 0xdf, 0x23, 0x2a, 0x42, 0x90, 0x0c, 0x86, 0x74, + 0x67, 0xc8, 0x7f, 0xa5, 0x9a, 0xb8, 0x52, 0x61, 0x14, 0x13, 0x3f, 0x65, + 0xe9, 0x82, 0x87, 0xcb, 0xdb, 0xfa, 0x0e, 0x56, 0xf6, 0x86, 0x89, 0xf3, + 0x85, 0x3f, 0x97, 0x86, 0xaf, 0xb0, 0xdc, 0x1a, 0xef, 0x6b, 0x0d, 0x95, + 0x16, 0x7d, 0xc4, 0x2b, 0xa0, 0x65, 0xb2, 0x99, 0x04, 0x36, 0x75, 0x80, + 0x6b, 0xac, 0x4a, 0xf3, 0x1b, 0x90, 0x49, 0x78, 0x2f, 0xa2, 0x96, 0x4f, + 0x2a, 0x20, 0x25, 0x29, 0x04, 0xc6, 0x74, 0xc0, 0xd0, 0x31, 0xcd, 0x8f, + 0x31, 0x38, 0x95, 0x16, 0xba, 0xa8, 0x33, 0xb8, 0x43, 0xf1, 0xb1, 0x1f, + 0xc3, 0x30, 0x7f, 0xa2, 0x79, 0x31, 0x13, 0x3d, 0x2d, 0x36, 0xf8, 0xe3, + 0xfc, 0xf2, 0x33, 0x6a, 0xb9, 0x39, 0x31, 0xc5, 0xaf, 0xc4, 0x8d, 0x0d, + 0x1d, 0x64, 0x16, 0x33, 0xaa, 0xfa, 0x84, 0x29, 0xb6, 0xd4, 0x0b, 0xc0, + 0xd8, 0x7d, 0xc3, 0x93, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, + 0x7d, 0x30, 0x82, 0x01, 0x79, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x7f, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x73, 0x30, 0x71, 0x30, 0x32, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x26, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x69, 0x73, 0x72, 0x67, 0x2e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x69, 0x64, 0x2e, 0x6f, 0x63, 0x73, 0x70, 0x2e, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x30, 0x3b, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x02, 0x86, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x61, 0x70, + 0x70, 0x73, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x2f, 0x64, + 0x73, 0x74, 0x72, 0x6f, 0x6f, 0x74, 0x63, 0x61, 0x78, 0x33, 0x2e, 0x70, + 0x37, 0x63, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0xc4, 0xa7, 0xb1, 0xa4, 0x7b, 0x2c, 0x71, 0xfa, 0xdb, + 0xe1, 0x4b, 0x90, 0x75, 0xff, 0xc4, 0x15, 0x60, 0x85, 0x89, 0x10, 0x30, + 0x54, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x4d, 0x30, 0x4b, 0x30, 0x08, + 0x06, 0x06, 0x67, 0x81, 0x0c, 0x01, 0x02, 0x01, 0x30, 0x3f, 0x06, 0x0b, + 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0xdf, 0x13, 0x01, 0x01, 0x01, 0x30, + 0x30, 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, + 0x01, 0x16, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x70, + 0x73, 0x2e, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x78, 0x31, 0x2e, 0x6c, 0x65, + 0x74, 0x73, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2e, 0x6f, 0x72, + 0x67, 0x30, 0x3c, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x35, 0x30, 0x33, + 0x30, 0x31, 0xa0, 0x2f, 0xa0, 0x2d, 0x86, 0x2b, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x53, 0x54, + 0x52, 0x4f, 0x4f, 0x54, 0x43, 0x41, 0x58, 0x33, 0x43, 0x52, 0x4c, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, + 0x04, 0x14, 0xa8, 0x4a, 0x6a, 0x63, 0x04, 0x7d, 0xdd, 0xba, 0xe6, 0xd1, + 0x39, 0xb7, 0xa6, 0x45, 0x65, 0xef, 0xf3, 0xa8, 0xec, 0xa1, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xdd, 0x33, 0xd7, 0x11, 0xf3, 0x63, + 0x58, 0x38, 0xdd, 0x18, 0x15, 0xfb, 0x09, 0x55, 0xbe, 0x76, 0x56, 0xb9, + 0x70, 0x48, 0xa5, 0x69, 0x47, 0x27, 0x7b, 0xc2, 0x24, 0x08, 0x92, 0xf1, + 0x5a, 0x1f, 0x4a, 0x12, 0x29, 0x37, 0x24, 0x74, 0x51, 0x1c, 0x62, 0x68, + 0xb8, 0xcd, 0x95, 0x70, 0x67, 0xe5, 0xf7, 0xa4, 0xbc, 0x4e, 0x28, 0x51, + 0xcd, 0x9b, 0xe8, 0xae, 0x87, 0x9d, 0xea, 0xd8, 0xba, 0x5a, 0xa1, 0x01, + 0x9a, 0xdc, 0xf0, 0xdd, 0x6a, 0x1d, 0x6a, 0xd8, 0x3e, 0x57, 0x23, 0x9e, + 0xa6, 0x1e, 0x04, 0x62, 0x9a, 0xff, 0xd7, 0x05, 0xca, 0xb7, 0x1f, 0x3f, + 0xc0, 0x0a, 0x48, 0xbc, 0x94, 0xb0, 0xb6, 0x65, 0x62, 0xe0, 0xc1, 0x54, + 0xe5, 0xa3, 0x2a, 0xad, 0x20, 0xc4, 0xe9, 0xe6, 0xbb, 0xdc, 0xc8, 0xf6, + 0xb5, 0xc3, 0x32, 0xa3, 0x98, 0xcc, 0x77, 0xa8, 0xe6, 0x79, 0x65, 0x07, + 0x2b, 0xcb, 0x28, 0xfe, 0x3a, 0x16, 0x52, 0x81, 0xce, 0x52, 0x0c, 0x2e, + 0x5f, 0x83, 0xe8, 0xd5, 0x06, 0x33, 0xfb, 0x77, 0x6c, 0xce, 0x40, 0xea, + 0x32, 0x9e, 0x1f, 0x92, 0x5c, 0x41, 0xc1, 0x74, 0x6c, 0x5b, 0x5d, 0x0a, + 0x5f, 0x33, 0xcc, 0x4d, 0x9f, 0xac, 0x38, 0xf0, 0x2f, 0x7b, 0x2c, 0x62, + 0x9d, 0xd9, 0xa3, 0x91, 0x6f, 0x25, 0x1b, 0x2f, 0x90, 0xb1, 0x19, 0x46, + 0x3d, 0xf6, 0x7e, 0x1b, 0xa6, 0x7a, 0x87, 0xb9, 0xa3, 0x7a, 0x6d, 0x18, + 0xfa, 0x25, 0xa5, 0x91, 0x87, 0x15, 0xe0, 0xf2, 0x16, 0x2f, 0x58, 0xb0, + 0x06, 0x2f, 0x2c, 0x68, 0x26, 0xc6, 0x4b, 0x98, 0xcd, 0xda, 0x9f, 0x0c, + 0xf9, 0x7f, 0x90, 0xed, 0x43, 0x4a, 0x12, 0x44, 0x4e, 0x6f, 0x73, 0x7a, + 0x28, 0xea, 0xa4, 0xaa, 0x6e, 0x7b, 0x4c, 0x7d, 0x87, 0xdd, 0xe0, 0xc9, + 0x02, 0x44, 0xa7, 0x87, 0xaf, 0xc3, 0x34, 0x5b, 0xb4, 0x42, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 06:7f:94:4a:2a:27:cd:f3:fa:c2:ae:2b:01:f9:08:ee:b9:c4:c6 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, ST=Arizona, L=Scottsdale, O=Starfield Technologies, Inc., CN=Starfield Services Root Certificate Authority - G2 + Validity + Not Before: May 25 12:00:00 2015 GMT + Not After : Dec 31 01:00:00 2037 GMT + Subject: C=US, O=Amazon, CN=Amazon Root CA 1 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:b2:78:80:71:ca:78:d5:e3:71:af:47:80:50:74: + 7d:6e:d8:d7:88:76:f4:99:68:f7:58:21:60:f9:74: + 84:01:2f:ac:02:2d:86:d3:a0:43:7a:4e:b2:a4:d0: + 36:ba:01:be:8d:db:48:c8:07:17:36:4c:f4:ee:88: + 23:c7:3e:eb:37:f5:b5:19:f8:49:68:b0:de:d7:b9: + 76:38:1d:61:9e:a4:fe:82:36:a5:e5:4a:56:e4:45: + e1:f9:fd:b4:16:fa:74:da:9c:9b:35:39:2f:fa:b0: + 20:50:06:6c:7a:d0:80:b2:a6:f9:af:ec:47:19:8f: + 50:38:07:dc:a2:87:39:58:f8:ba:d5:a9:f9:48:67: + 30:96:ee:94:78:5e:6f:89:a3:51:c0:30:86:66:a1: + 45:66:ba:54:eb:a3:c3:91:f9:48:dc:ff:d1:e8:30: + 2d:7d:2d:74:70:35:d7:88:24:f7:9e:c4:59:6e:bb: + 73:87:17:f2:32:46:28:b8:43:fa:b7:1d:aa:ca:b4: + f2:9f:24:0e:2d:4b:f7:71:5c:5e:69:ff:ea:95:02: + cb:38:8a:ae:50:38:6f:db:fb:2d:62:1b:c5:c7:1e: + 54:e1:77:e0:67:c8:0f:9c:87:23:d6:3f:40:20:7f: + 20:80:c4:80:4c:3e:3b:24:26:8e:04:ae:6c:9a:c8: + aa:0d + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 84:18:CC:85:34:EC:BC:0C:94:94:2E:08:59:9C:C7:B2:10:4E:0A:08 + X509v3 Authority Key Identifier: + keyid:9C:5F:00:DF:AA:01:D7:30:2B:38:88:A2:B8:6D:4A:9C:F2:11:91:83 + + Authority Information Access: + OCSP - URI:http://ocsp.rootg2.amazontrust.com + CA Issuers - URI:http://crt.rootg2.amazontrust.com/rootg2.cer + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.rootg2.amazontrust.com/rootg2.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + + Signature Algorithm: sha256WithRSAEncryption + 62:37:42:5c:bc:10:b5:3e:8b:2c:e9:0c:9b:6c:45:e2:07:00: + 7a:f9:c5:58:0b:b9:08:8c:3e:ed:b3:25:3c:b5:6f:50:e4:cd: + 35:6a:a7:93:34:96:32:21:a9:48:44:ab:9c:ed:3d:b4:aa:73: + 6d:e4:7f:16:80:89:6c:cf:28:03:18:83:47:79:a3:10:7e:30: + 5b:ac:3b:b0:60:e0:77:d4:08:a6:e1:1d:7c:5e:c0:bb:f9:9a: + 7b:22:9d:a7:00:09:7e:ac:46:17:83:dc:9c:26:57:99:30:39: + 62:96:8f:ed:da:de:aa:c5:cc:1b:3e:ca:43:68:6c:57:16:bc: + d5:0e:20:2e:fe:ff:c2:6a:5d:2e:a0:4a:6d:14:58:87:94:e6: + 39:31:5f:7c:73:cb:90:88:6a:84:11:96:27:a6:ed:d9:81:46: + a6:7e:a3:72:00:0a:52:3e:83:88:07:63:77:89:69:17:0f:39: + 85:d2:ab:08:45:4d:d0:51:3a:fd:5d:5d:37:64:4c:7e:30:b2: + 55:24:42:9d:36:b0:5d:9c:17:81:61:f1:ca:f9:10:02:24:ab: + eb:0d:74:91:8d:7b:45:29:50:39:88:b2:a6:89:35:25:1e:14: + 6a:47:23:31:2f:5c:9a:fa:ad:9a:0e:62:51:a4:2a:a9:c4:f9: + 34:9d:21:18 +-----BEGIN CERTIFICATE----- +MIIEkjCCA3qgAwIBAgITBn+USionzfP6wq4rAfkI7rnExjANBgkqhkiG9w0BAQsF +ADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNj +b3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4x +OzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1 +dGhvcml0eSAtIEcyMB4XDTE1MDUyNTEyMDAwMFoXDTM3MTIzMTAxMDAwMFowOTEL +MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv +b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj +ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM +9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw +IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6 +VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L +93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm +jgSubJrIqg0CAwEAAaOCATEwggEtMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgGGMB0GA1UdDgQWBBSEGMyFNOy8DJSULghZnMeyEE4KCDAfBgNVHSMEGDAW +gBScXwDfqgHXMCs4iKK4bUqc8hGRgzB4BggrBgEFBQcBAQRsMGowLgYIKwYBBQUH +MAGGImh0dHA6Ly9vY3NwLnJvb3RnMi5hbWF6b250cnVzdC5jb20wOAYIKwYBBQUH +MAKGLGh0dHA6Ly9jcnQucm9vdGcyLmFtYXpvbnRydXN0LmNvbS9yb290ZzIuY2Vy +MD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6Ly9jcmwucm9vdGcyLmFtYXpvbnRydXN0 +LmNvbS9yb290ZzIuY3JsMBEGA1UdIAQKMAgwBgYEVR0gADANBgkqhkiG9w0BAQsF +AAOCAQEAYjdCXLwQtT6LLOkMm2xF4gcAevnFWAu5CIw+7bMlPLVvUOTNNWqnkzSW +MiGpSESrnO09tKpzbeR/FoCJbM8oAxiDR3mjEH4wW6w7sGDgd9QIpuEdfF7Au/ma +eyKdpwAJfqxGF4PcnCZXmTA5YpaP7dreqsXMGz7KQ2hsVxa81Q4gLv7/wmpdLqBK +bRRYh5TmOTFffHPLkIhqhBGWJ6bt2YFGpn6jcgAKUj6DiAdjd4lpFw85hdKrCEVN +0FE6/V1dN2RMfjCyVSRCnTawXZwXgWHxyvkQAiSr6w10kY17RSlQOYiypok1JR4U +akcjMS9cmvqtmg5iUaQqqcT5NJ0hGA== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_23[] = { + 0x30, 0x82, 0x04, 0x92, 0x30, 0x82, 0x03, 0x7a, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x13, 0x06, 0x7f, 0x94, 0x4a, 0x2a, 0x27, 0xcd, 0xf3, 0xfa, + 0xc2, 0xae, 0x2b, 0x01, 0xf9, 0x08, 0xee, 0xb9, 0xc4, 0xc6, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x30, 0x81, 0x98, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, + 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, + 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, + 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x25, 0x30, 0x23, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, + 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, + 0x3b, 0x30, 0x39, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x32, 0x53, 0x74, + 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, + 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x35, 0x32, 0x35, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x37, 0x31, 0x32, 0x33, + 0x31, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x39, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x06, 0x41, 0x6d, + 0x61, 0x7a, 0x6f, 0x6e, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x10, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x20, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x31, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, + 0x82, 0x01, 0x01, 0x00, 0xb2, 0x78, 0x80, 0x71, 0xca, 0x78, 0xd5, 0xe3, + 0x71, 0xaf, 0x47, 0x80, 0x50, 0x74, 0x7d, 0x6e, 0xd8, 0xd7, 0x88, 0x76, + 0xf4, 0x99, 0x68, 0xf7, 0x58, 0x21, 0x60, 0xf9, 0x74, 0x84, 0x01, 0x2f, + 0xac, 0x02, 0x2d, 0x86, 0xd3, 0xa0, 0x43, 0x7a, 0x4e, 0xb2, 0xa4, 0xd0, + 0x36, 0xba, 0x01, 0xbe, 0x8d, 0xdb, 0x48, 0xc8, 0x07, 0x17, 0x36, 0x4c, + 0xf4, 0xee, 0x88, 0x23, 0xc7, 0x3e, 0xeb, 0x37, 0xf5, 0xb5, 0x19, 0xf8, + 0x49, 0x68, 0xb0, 0xde, 0xd7, 0xb9, 0x76, 0x38, 0x1d, 0x61, 0x9e, 0xa4, + 0xfe, 0x82, 0x36, 0xa5, 0xe5, 0x4a, 0x56, 0xe4, 0x45, 0xe1, 0xf9, 0xfd, + 0xb4, 0x16, 0xfa, 0x74, 0xda, 0x9c, 0x9b, 0x35, 0x39, 0x2f, 0xfa, 0xb0, + 0x20, 0x50, 0x06, 0x6c, 0x7a, 0xd0, 0x80, 0xb2, 0xa6, 0xf9, 0xaf, 0xec, + 0x47, 0x19, 0x8f, 0x50, 0x38, 0x07, 0xdc, 0xa2, 0x87, 0x39, 0x58, 0xf8, + 0xba, 0xd5, 0xa9, 0xf9, 0x48, 0x67, 0x30, 0x96, 0xee, 0x94, 0x78, 0x5e, + 0x6f, 0x89, 0xa3, 0x51, 0xc0, 0x30, 0x86, 0x66, 0xa1, 0x45, 0x66, 0xba, + 0x54, 0xeb, 0xa3, 0xc3, 0x91, 0xf9, 0x48, 0xdc, 0xff, 0xd1, 0xe8, 0x30, + 0x2d, 0x7d, 0x2d, 0x74, 0x70, 0x35, 0xd7, 0x88, 0x24, 0xf7, 0x9e, 0xc4, + 0x59, 0x6e, 0xbb, 0x73, 0x87, 0x17, 0xf2, 0x32, 0x46, 0x28, 0xb8, 0x43, + 0xfa, 0xb7, 0x1d, 0xaa, 0xca, 0xb4, 0xf2, 0x9f, 0x24, 0x0e, 0x2d, 0x4b, + 0xf7, 0x71, 0x5c, 0x5e, 0x69, 0xff, 0xea, 0x95, 0x02, 0xcb, 0x38, 0x8a, + 0xae, 0x50, 0x38, 0x6f, 0xdb, 0xfb, 0x2d, 0x62, 0x1b, 0xc5, 0xc7, 0x1e, + 0x54, 0xe1, 0x77, 0xe0, 0x67, 0xc8, 0x0f, 0x9c, 0x87, 0x23, 0xd6, 0x3f, + 0x40, 0x20, 0x7f, 0x20, 0x80, 0xc4, 0x80, 0x4c, 0x3e, 0x3b, 0x24, 0x26, + 0x8e, 0x04, 0xae, 0x6c, 0x9a, 0xc8, 0xaa, 0x0d, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xa3, 0x82, 0x01, 0x31, 0x30, 0x82, 0x01, 0x2d, 0x30, 0x0f, 0x06, + 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, + 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, + 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0x84, 0x18, 0xcc, 0x85, 0x34, 0xec, 0xbc, + 0x0c, 0x94, 0x94, 0x2e, 0x08, 0x59, 0x9c, 0xc7, 0xb2, 0x10, 0x4e, 0x0a, + 0x08, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0x9c, 0x5f, 0x00, 0xdf, 0xaa, 0x01, 0xd7, 0x30, 0x2b, 0x38, + 0x88, 0xa2, 0xb8, 0x6d, 0x4a, 0x9c, 0xf2, 0x11, 0x91, 0x83, 0x30, 0x78, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x6c, + 0x30, 0x6a, 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x01, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, + 0x63, 0x73, 0x70, 0x2e, 0x72, 0x6f, 0x6f, 0x74, 0x67, 0x32, 0x2e, 0x61, + 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x30, 0x38, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x02, 0x86, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, + 0x72, 0x74, 0x2e, 0x72, 0x6f, 0x6f, 0x74, 0x67, 0x32, 0x2e, 0x61, 0x6d, + 0x61, 0x7a, 0x6f, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x67, 0x32, 0x2e, 0x63, 0x65, 0x72, + 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x36, 0x30, 0x34, 0x30, + 0x32, 0xa0, 0x30, 0xa0, 0x2e, 0x86, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x72, 0x6f, 0x6f, 0x74, 0x67, 0x32, + 0x2e, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x67, 0x32, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x11, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x0a, + 0x30, 0x08, 0x30, 0x06, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x62, 0x37, 0x42, 0x5c, 0xbc, 0x10, + 0xb5, 0x3e, 0x8b, 0x2c, 0xe9, 0x0c, 0x9b, 0x6c, 0x45, 0xe2, 0x07, 0x00, + 0x7a, 0xf9, 0xc5, 0x58, 0x0b, 0xb9, 0x08, 0x8c, 0x3e, 0xed, 0xb3, 0x25, + 0x3c, 0xb5, 0x6f, 0x50, 0xe4, 0xcd, 0x35, 0x6a, 0xa7, 0x93, 0x34, 0x96, + 0x32, 0x21, 0xa9, 0x48, 0x44, 0xab, 0x9c, 0xed, 0x3d, 0xb4, 0xaa, 0x73, + 0x6d, 0xe4, 0x7f, 0x16, 0x80, 0x89, 0x6c, 0xcf, 0x28, 0x03, 0x18, 0x83, + 0x47, 0x79, 0xa3, 0x10, 0x7e, 0x30, 0x5b, 0xac, 0x3b, 0xb0, 0x60, 0xe0, + 0x77, 0xd4, 0x08, 0xa6, 0xe1, 0x1d, 0x7c, 0x5e, 0xc0, 0xbb, 0xf9, 0x9a, + 0x7b, 0x22, 0x9d, 0xa7, 0x00, 0x09, 0x7e, 0xac, 0x46, 0x17, 0x83, 0xdc, + 0x9c, 0x26, 0x57, 0x99, 0x30, 0x39, 0x62, 0x96, 0x8f, 0xed, 0xda, 0xde, + 0xaa, 0xc5, 0xcc, 0x1b, 0x3e, 0xca, 0x43, 0x68, 0x6c, 0x57, 0x16, 0xbc, + 0xd5, 0x0e, 0x20, 0x2e, 0xfe, 0xff, 0xc2, 0x6a, 0x5d, 0x2e, 0xa0, 0x4a, + 0x6d, 0x14, 0x58, 0x87, 0x94, 0xe6, 0x39, 0x31, 0x5f, 0x7c, 0x73, 0xcb, + 0x90, 0x88, 0x6a, 0x84, 0x11, 0x96, 0x27, 0xa6, 0xed, 0xd9, 0x81, 0x46, + 0xa6, 0x7e, 0xa3, 0x72, 0x00, 0x0a, 0x52, 0x3e, 0x83, 0x88, 0x07, 0x63, + 0x77, 0x89, 0x69, 0x17, 0x0f, 0x39, 0x85, 0xd2, 0xab, 0x08, 0x45, 0x4d, + 0xd0, 0x51, 0x3a, 0xfd, 0x5d, 0x5d, 0x37, 0x64, 0x4c, 0x7e, 0x30, 0xb2, + 0x55, 0x24, 0x42, 0x9d, 0x36, 0xb0, 0x5d, 0x9c, 0x17, 0x81, 0x61, 0xf1, + 0xca, 0xf9, 0x10, 0x02, 0x24, 0xab, 0xeb, 0x0d, 0x74, 0x91, 0x8d, 0x7b, + 0x45, 0x29, 0x50, 0x39, 0x88, 0xb2, 0xa6, 0x89, 0x35, 0x25, 0x1e, 0x14, + 0x6a, 0x47, 0x23, 0x31, 0x2f, 0x5c, 0x9a, 0xfa, 0xad, 0x9a, 0x0e, 0x62, + 0x51, 0xa4, 0x2a, 0xa9, 0xc4, 0xf9, 0x34, 0x9d, 0x21, 0x18, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 01:fd:a3:eb:6e:ca:75:c8:88:43:8b:72:4b:cf:bc:91 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Global Root CA + Validity + Not Before: Mar 8 12:00:00 2013 GMT + Not After : Mar 8 12:00:00 2023 GMT + Subject: C=US, O=DigiCert Inc, CN=DigiCert SHA2 Secure Server CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:dc:ae:58:90:4d:c1:c4:30:15:90:35:5b:6e:3c: + 82:15:f5:2c:5c:bd:e3:db:ff:71:43:fa:64:25:80: + d4:ee:18:a2:4d:f0:66:d0:0a:73:6e:11:98:36:17: + 64:af:37:9d:fd:fa:41:84:af:c7:af:8c:fe:1a:73: + 4d:cf:33:97:90:a2:96:87:53:83:2b:b9:a6:75:48: + 2d:1d:56:37:7b:da:31:32:1a:d7:ac:ab:06:f4:aa: + 5d:4b:b7:47:46:dd:2a:93:c3:90:2e:79:80:80:ef: + 13:04:6a:14:3b:b5:9b:92:be:c2:07:65:4e:fc:da: + fc:ff:7a:ae:dc:5c:7e:55:31:0c:e8:39:07:a4:d7: + be:2f:d3:0b:6a:d2:b1:df:5f:fe:57:74:53:3b:35: + 80:dd:ae:8e:44:98:b3:9f:0e:d3:da:e0:d7:f4:6b: + 29:ab:44:a7:4b:58:84:6d:92:4b:81:c3:da:73:8b: + 12:97:48:90:04:45:75:1a:dd:37:31:97:92:e8:cd: + 54:0d:3b:e4:c1:3f:39:5e:2e:b8:f3:5c:7e:10:8e: + 86:41:00:8d:45:66:47:b0:a1:65:ce:a0:aa:29:09: + 4e:f3:97:eb:e8:2e:ab:0f:72:a7:30:0e:fa:c7:f4: + fd:14:77:c3:a4:5b:28:57:c2:b3:f9:82:fd:b7:45: + 58:9b + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + Authority Information Access: + OCSP - URI:http://ocsp.digicert.com + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl3.digicert.com/DigiCertGlobalRootCA.crl + + Full Name: + URI:http://crl4.digicert.com/DigiCertGlobalRootCA.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.digicert.com/CPS + + X509v3 Subject Key Identifier: + 0F:80:61:1C:82:31:61:D5:2F:28:E7:8D:46:38:B4:2C:E1:C6:D9:E2 + X509v3 Authority Key Identifier: + keyid:03:DE:50:35:56:D1:4C:BB:66:F0:A3:E2:1B:1B:C3:97:B2:3D:D1:55 + + Signature Algorithm: sha256WithRSAEncryption + 23:3e:df:4b:d2:31:42:a5:b6:7e:42:5c:1a:44:cc:69:d1:68: + b4:5d:4b:e0:04:21:6c:4b:e2:6d:cc:b1:e0:97:8f:a6:53:09: + cd:aa:2a:65:e5:39:4f:1e:83:a5:6e:5c:98:a2:24:26:e6:fb: + a1:ed:93:c7:2e:02:c6:4d:4a:bf:b0:42:df:78:da:b3:a8:f9: + 6d:ff:21:85:53:36:60:4c:76:ce:ec:38:dc:d6:51:80:f0:c5: + d6:e5:d4:4d:27:64:ab:9b:c7:3e:71:fb:48:97:b8:33:6d:c9: + 13:07:ee:96:a2:1b:18:15:f6:5c:4c:40:ed:b3:c2:ec:ff:71: + c1:e3:47:ff:d4:b9:00:b4:37:42:da:20:c9:ea:6e:8a:ee:14: + 06:ae:7d:a2:59:98:88:a8:1b:6f:2d:f4:f2:c9:14:5f:26:cf: + 2c:8d:7e:ed:37:c0:a9:d5:39:b9:82:bf:19:0c:ea:34:af:00: + 21:68:f8:ad:73:e2:c9:32:da:38:25:0b:55:d3:9a:1d:f0:68: + 86:ed:2e:41:34:ef:7c:a5:50:1d:bf:3a:f9:d3:c1:08:0c:e6: + ed:1e:8a:58:25:e4:b8:77:ad:2d:6e:f5:52:dd:b4:74:8f:ab: + 49:2e:9d:3b:93:34:28:1f:78:ce:94:ea:c7:bd:d3:c9:6d:1c: + de:5c:32:f3 +-----BEGIN CERTIFICATE----- +MIIElDCCA3ygAwIBAgIQAf2j627KdciIQ4tyS8+8kTANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD +QTAeFw0xMzAzMDgxMjAwMDBaFw0yMzAzMDgxMjAwMDBaME0xCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxJzAlBgNVBAMTHkRpZ2lDZXJ0IFNIQTIg +U2VjdXJlIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANyuWJBNwcQwFZA1W248ghX1LFy949v/cUP6ZCWA1O4Yok3wZtAKc24RmDYXZK83 +nf36QYSvx6+M/hpzTc8zl5CilodTgyu5pnVILR1WN3vaMTIa16yrBvSqXUu3R0bd +KpPDkC55gIDvEwRqFDu1m5K+wgdlTvza/P96rtxcflUxDOg5B6TXvi/TC2rSsd9f +/ld0Uzs1gN2ujkSYs58O09rg1/RrKatEp0tYhG2SS4HD2nOLEpdIkARFdRrdNzGX +kujNVA075ME/OV4uuPNcfhCOhkEAjUVmR7ChZc6gqikJTvOX6+guqw9ypzAO+sf0 +/RR3w6RbKFfCs/mC/bdFWJsCAwEAAaOCAVowggFWMBIGA1UdEwEB/wQIMAYBAf8C +AQAwDgYDVR0PAQH/BAQDAgGGMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYY +aHR0cDovL29jc3AuZGlnaWNlcnQuY29tMHsGA1UdHwR0MHIwN6A1oDOGMWh0dHA6 +Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RDQS5jcmwwN6A1 +oDOGMWh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RD +QS5jcmwwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v +d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwHQYDVR0OBBYEFA+AYRyCMWHVLyjnjUY4tCzh +xtniMB8GA1UdIwQYMBaAFAPeUDVW0Uy7ZvCj4hsbw5eyPdFVMA0GCSqGSIb3DQEB +CwUAA4IBAQAjPt9L0jFCpbZ+QlwaRMxp0Wi0XUvgBCFsS+JtzLHgl4+mUwnNqipl +5TlPHoOlblyYoiQm5vuh7ZPHLgLGTUq/sELfeNqzqPlt/yGFUzZgTHbO7Djc1lGA +8MXW5dRNJ2Srm8c+cftIl7gzbckTB+6WohsYFfZcTEDts8Ls/3HB40f/1LkAtDdC +2iDJ6m6K7hQGrn2iWZiIqBtvLfTyyRRfJs8sjX7tN8Cp1Tm5gr8ZDOo0rwAhaPit +c+LJMto4JQtV05od8GiG7S5BNO98pVAdvzr508EIDObtHopYJeS4d60tbvVS3bR0 +j6tJLp07kzQoH3jOlOrHvdPJbRzeXDLz +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_24[] = { + 0x30, 0x82, 0x04, 0x94, 0x30, 0x82, 0x03, 0x7c, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x01, 0xfd, 0xa3, 0xeb, 0x6e, 0xca, 0x75, 0xc8, 0x88, + 0x43, 0x8b, 0x72, 0x4b, 0xcf, 0xbc, 0x91, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x61, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x17, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, + 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x30, 0x33, 0x30, 0x38, 0x31, + 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x30, 0x33, + 0x30, 0x38, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x4d, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, + 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, + 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1e, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x48, 0x41, 0x32, 0x20, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, + 0x00, 0xdc, 0xae, 0x58, 0x90, 0x4d, 0xc1, 0xc4, 0x30, 0x15, 0x90, 0x35, + 0x5b, 0x6e, 0x3c, 0x82, 0x15, 0xf5, 0x2c, 0x5c, 0xbd, 0xe3, 0xdb, 0xff, + 0x71, 0x43, 0xfa, 0x64, 0x25, 0x80, 0xd4, 0xee, 0x18, 0xa2, 0x4d, 0xf0, + 0x66, 0xd0, 0x0a, 0x73, 0x6e, 0x11, 0x98, 0x36, 0x17, 0x64, 0xaf, 0x37, + 0x9d, 0xfd, 0xfa, 0x41, 0x84, 0xaf, 0xc7, 0xaf, 0x8c, 0xfe, 0x1a, 0x73, + 0x4d, 0xcf, 0x33, 0x97, 0x90, 0xa2, 0x96, 0x87, 0x53, 0x83, 0x2b, 0xb9, + 0xa6, 0x75, 0x48, 0x2d, 0x1d, 0x56, 0x37, 0x7b, 0xda, 0x31, 0x32, 0x1a, + 0xd7, 0xac, 0xab, 0x06, 0xf4, 0xaa, 0x5d, 0x4b, 0xb7, 0x47, 0x46, 0xdd, + 0x2a, 0x93, 0xc3, 0x90, 0x2e, 0x79, 0x80, 0x80, 0xef, 0x13, 0x04, 0x6a, + 0x14, 0x3b, 0xb5, 0x9b, 0x92, 0xbe, 0xc2, 0x07, 0x65, 0x4e, 0xfc, 0xda, + 0xfc, 0xff, 0x7a, 0xae, 0xdc, 0x5c, 0x7e, 0x55, 0x31, 0x0c, 0xe8, 0x39, + 0x07, 0xa4, 0xd7, 0xbe, 0x2f, 0xd3, 0x0b, 0x6a, 0xd2, 0xb1, 0xdf, 0x5f, + 0xfe, 0x57, 0x74, 0x53, 0x3b, 0x35, 0x80, 0xdd, 0xae, 0x8e, 0x44, 0x98, + 0xb3, 0x9f, 0x0e, 0xd3, 0xda, 0xe0, 0xd7, 0xf4, 0x6b, 0x29, 0xab, 0x44, + 0xa7, 0x4b, 0x58, 0x84, 0x6d, 0x92, 0x4b, 0x81, 0xc3, 0xda, 0x73, 0x8b, + 0x12, 0x97, 0x48, 0x90, 0x04, 0x45, 0x75, 0x1a, 0xdd, 0x37, 0x31, 0x97, + 0x92, 0xe8, 0xcd, 0x54, 0x0d, 0x3b, 0xe4, 0xc1, 0x3f, 0x39, 0x5e, 0x2e, + 0xb8, 0xf3, 0x5c, 0x7e, 0x10, 0x8e, 0x86, 0x41, 0x00, 0x8d, 0x45, 0x66, + 0x47, 0xb0, 0xa1, 0x65, 0xce, 0xa0, 0xaa, 0x29, 0x09, 0x4e, 0xf3, 0x97, + 0xeb, 0xe8, 0x2e, 0xab, 0x0f, 0x72, 0xa7, 0x30, 0x0e, 0xfa, 0xc7, 0xf4, + 0xfd, 0x14, 0x77, 0xc3, 0xa4, 0x5b, 0x28, 0x57, 0xc2, 0xb3, 0xf9, 0x82, + 0xfd, 0xb7, 0x45, 0x58, 0x9b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x01, 0x5a, 0x30, 0x82, 0x01, 0x56, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, + 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, + 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x7b, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x74, 0x30, 0x72, 0x30, + 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x33, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, + 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, + 0x43, 0x65, 0x72, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x6f, + 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x37, 0xa0, 0x35, + 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, + 0x72, 0x6c, 0x34, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, + 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x6f, 0x6f, 0x74, 0x43, + 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x20, + 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, + 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0f, 0x80, 0x61, 0x1c, 0x82, + 0x31, 0x61, 0xd5, 0x2f, 0x28, 0xe7, 0x8d, 0x46, 0x38, 0xb4, 0x2c, 0xe1, + 0xc6, 0xd9, 0xe2, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, + 0x30, 0x16, 0x80, 0x14, 0x03, 0xde, 0x50, 0x35, 0x56, 0xd1, 0x4c, 0xbb, + 0x66, 0xf0, 0xa3, 0xe2, 0x1b, 0x1b, 0xc3, 0x97, 0xb2, 0x3d, 0xd1, 0x55, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x23, 0x3e, 0xdf, 0x4b, + 0xd2, 0x31, 0x42, 0xa5, 0xb6, 0x7e, 0x42, 0x5c, 0x1a, 0x44, 0xcc, 0x69, + 0xd1, 0x68, 0xb4, 0x5d, 0x4b, 0xe0, 0x04, 0x21, 0x6c, 0x4b, 0xe2, 0x6d, + 0xcc, 0xb1, 0xe0, 0x97, 0x8f, 0xa6, 0x53, 0x09, 0xcd, 0xaa, 0x2a, 0x65, + 0xe5, 0x39, 0x4f, 0x1e, 0x83, 0xa5, 0x6e, 0x5c, 0x98, 0xa2, 0x24, 0x26, + 0xe6, 0xfb, 0xa1, 0xed, 0x93, 0xc7, 0x2e, 0x02, 0xc6, 0x4d, 0x4a, 0xbf, + 0xb0, 0x42, 0xdf, 0x78, 0xda, 0xb3, 0xa8, 0xf9, 0x6d, 0xff, 0x21, 0x85, + 0x53, 0x36, 0x60, 0x4c, 0x76, 0xce, 0xec, 0x38, 0xdc, 0xd6, 0x51, 0x80, + 0xf0, 0xc5, 0xd6, 0xe5, 0xd4, 0x4d, 0x27, 0x64, 0xab, 0x9b, 0xc7, 0x3e, + 0x71, 0xfb, 0x48, 0x97, 0xb8, 0x33, 0x6d, 0xc9, 0x13, 0x07, 0xee, 0x96, + 0xa2, 0x1b, 0x18, 0x15, 0xf6, 0x5c, 0x4c, 0x40, 0xed, 0xb3, 0xc2, 0xec, + 0xff, 0x71, 0xc1, 0xe3, 0x47, 0xff, 0xd4, 0xb9, 0x00, 0xb4, 0x37, 0x42, + 0xda, 0x20, 0xc9, 0xea, 0x6e, 0x8a, 0xee, 0x14, 0x06, 0xae, 0x7d, 0xa2, + 0x59, 0x98, 0x88, 0xa8, 0x1b, 0x6f, 0x2d, 0xf4, 0xf2, 0xc9, 0x14, 0x5f, + 0x26, 0xcf, 0x2c, 0x8d, 0x7e, 0xed, 0x37, 0xc0, 0xa9, 0xd5, 0x39, 0xb9, + 0x82, 0xbf, 0x19, 0x0c, 0xea, 0x34, 0xaf, 0x00, 0x21, 0x68, 0xf8, 0xad, + 0x73, 0xe2, 0xc9, 0x32, 0xda, 0x38, 0x25, 0x0b, 0x55, 0xd3, 0x9a, 0x1d, + 0xf0, 0x68, 0x86, 0xed, 0x2e, 0x41, 0x34, 0xef, 0x7c, 0xa5, 0x50, 0x1d, + 0xbf, 0x3a, 0xf9, 0xd3, 0xc1, 0x08, 0x0c, 0xe6, 0xed, 0x1e, 0x8a, 0x58, + 0x25, 0xe4, 0xb8, 0x77, 0xad, 0x2d, 0x6e, 0xf5, 0x52, 0xdd, 0xb4, 0x74, + 0x8f, 0xab, 0x49, 0x2e, 0x9d, 0x3b, 0x93, 0x34, 0x28, 0x1f, 0x78, 0xce, + 0x94, 0xea, 0xc7, 0xbd, 0xd3, 0xc9, 0x6d, 0x1c, 0xde, 0x5c, 0x32, 0xf3, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 3740804 (0x391484) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=Starfield Technologies, Inc., OU=Starfield Class 2 Certification Authority + Validity + Not Before: Jan 1 07:00:00 2014 GMT + Not After : May 30 07:00:00 2031 GMT + Subject: C=US, ST=Arizona, L=Scottsdale, O=Starfield Technologies, Inc., CN=Starfield Root Certificate Authority - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:bd:ed:c1:03:fc:f6:8f:fc:02:b1:6f:5b:9f:48: + d9:9d:79:e2:a2:b7:03:61:56:18:c3:47:b6:d7:ca: + 3d:35:2e:89:43:f7:a1:69:9b:de:8a:1a:fd:13:20: + 9c:b4:49:77:32:29:56:fd:b9:ec:8c:dd:22:fa:72: + dc:27:61:97:ee:f6:5a:84:ec:6e:19:b9:89:2c:dc: + 84:5b:d5:74:fb:6b:5f:c5:89:a5:10:52:89:46:55: + f4:b8:75:1c:e6:7f:e4:54:ae:4b:f8:55:72:57:02: + 19:f8:17:71:59:eb:1e:28:07:74:c5:9d:48:be:6c: + b4:f4:a4:b0:f3:64:37:79:92:c0:ec:46:5e:7f:e1: + 6d:53:4c:62:af:cd:1f:0b:63:bb:3a:9d:fb:fc:79: + 00:98:61:74:cf:26:82:40:63:f3:b2:72:6a:19:0d: + 99:ca:d4:0e:75:cc:37:fb:8b:89:c1:59:f1:62:7f: + 5f:b3:5f:65:30:f8:a7:b7:4d:76:5a:1e:76:5e:34: + c0:e8:96:56:99:8a:b3:f0:7f:a4:cd:bd:dc:32:31: + 7c:91:cf:e0:5f:11:f8:6b:aa:49:5c:d1:99:94:d1: + a2:e3:63:5b:09:76:b5:56:62:e1:4b:74:1d:96:d4: + 26:d4:08:04:59:d0:98:0e:0e:e6:de:fc:c3:ec:1f: + 90:f1 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 7C:0C:32:1F:A7:D9:30:7F:C4:7D:68:A3:62:A8:A1:CE:AB:07:5B:27 + X509v3 Authority Key Identifier: + keyid:BF:5F:B7:D1:CE:DD:1F:86:F4:5B:55:AC:DC:D7:10:C2:0E:A9:88:E7 + + Authority Information Access: + OCSP - URI:http://ocsp.starfieldtech.com/ + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.starfieldtech.com/sfroot.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://certs.starfieldtech.com/repository/ + + Signature Algorithm: sha256WithRSAEncryption + 85:63:c1:d9:dd:b9:ff:a9:bd:a6:19:dc:bf:13:3a:11:38:22: + 54:b1:ac:05:10:fb:7c:b3:96:3f:31:8b:66:ff:88:f3:e1:bf: + fb:c7:1f:00:ff:46:6a:8b:61:32:c9:01:51:76:fb:9a:c6:fa: + 20:51:c8:46:c4:98:d7:79:a3:e3:04:72:3f:8b:4d:34:53:67: + ec:33:2c:7b:e8:94:01:28:7c:3a:34:5b:02:77:16:8d:40:25: + 33:b0:bc:6c:97:d7:05:7a:ff:8c:85:ce:6f:a0:53:00:17:6e: + 1e:6c:bd:22:d7:0a:88:37:f6:7d:eb:99:41:ef:27:cb:8c:60: + 6b:4c:01:7e:65:50:0b:4f:b8:95:9a:9a:6e:34:fd:73:3a:33: + f1:91:d5:f3:4e:2d:74:e8:ef:d3:90:35:f1:06:68:64:d4:d0: + 13:fd:52:d3:c6:6d:c1:3a:8a:31:dd:05:26:35:4a:8c:65:b8: + 52:6b:81:ec:d2:9c:b5:34:10:97:9c:3e:c6:2f:ed:8e:42:42: + 24:2e:e9:73:9a:25:f9:11:f1:f2:23:69:cb:e5:94:69:a0:d2: + dc:b0:fc:44:89:ac:17:a8:cc:d5:37:77:16:c5:80:b9:0c:8f: + 57:02:55:99:85:7b:49:f0:2e:5b:a0:c2:57:53:5d:a2:e8:a6: + 37:c3:01:fa +-----BEGIN CERTIFICATE----- +MIIEoDCCA4igAwIBAgIDORSEMA0GCSqGSIb3DQEBCwUAMGgxCzAJBgNVBAYTAlVT +MSUwIwYDVQQKExxTdGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQL +EylTdGFyZmllbGQgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x +NDAxMDEwNzAwMDBaFw0zMTA1MzAwNzAwMDBaMIGPMQswCQYDVQQGEwJVUzEQMA4G +A1UECBMHQXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTElMCMGA1UEChMcU3Rh +cmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UEAxMpU3RhcmZpZWxkIFJv +b3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQC97cED/PaP/AKxb1ufSNmdeeKitwNhVhjDR7bXyj01LolD +96Fpm96KGv0TIJy0SXcyKVb9ueyM3SL6ctwnYZfu9lqE7G4ZuYks3IRb1XT7a1/F +iaUQUolGVfS4dRzmf+RUrkv4VXJXAhn4F3FZ6x4oB3TFnUi+bLT0pLDzZDd5ksDs +Rl5/4W1TTGKvzR8LY7s6nfv8eQCYYXTPJoJAY/OycmoZDZnK1A51zDf7i4nBWfFi +f1+zX2Uw+Ke3TXZaHnZeNMDollaZirPwf6TNvdwyMXyRz+BfEfhrqklc0ZmU0aLj +Y1sJdrVWYuFLdB2W1CbUCARZ0JgODube/MPsH5DxAgMBAAGjggEpMIIBJTAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUfAwyH6fZMH/E +fWijYqihzqsHWycwHwYDVR0jBBgwFoAUv1+30c7dH4b0W1Ws3NcQwg6piOcwOgYI +KwYBBQUHAQEELjAsMCoGCCsGAQUFBzABhh5odHRwOi8vb2NzcC5zdGFyZmllbGR0 +ZWNoLmNvbS8wOAYDVR0fBDEwLzAtoCugKYYnaHR0cDovL2NybC5zdGFyZmllbGR0 +ZWNoLmNvbS9zZnJvb3QuY3JsMEwGA1UdIARFMEMwQQYEVR0gADA5MDcGCCsGAQUF +BwIBFitodHRwczovL2NlcnRzLnN0YXJmaWVsZHRlY2guY29tL3JlcG9zaXRvcnkv +MA0GCSqGSIb3DQEBCwUAA4IBAQCFY8HZ3bn/qb2mGdy/EzoROCJUsawFEPt8s5Y/ +MYtm/4jz4b/7xx8A/0Zqi2EyyQFRdvuaxvogUchGxJjXeaPjBHI/i000U2fsMyx7 +6JQBKHw6NFsCdxaNQCUzsLxsl9cFev+Mhc5voFMAF24ebL0i1wqIN/Z965lB7yfL +jGBrTAF+ZVALT7iVmppuNP1zOjPxkdXzTi106O/TkDXxBmhk1NAT/VLTxm3BOoox +3QUmNUqMZbhSa4Hs0py1NBCXnD7GL+2OQkIkLulzmiX5EfHyI2nL5ZRpoNLcsPxE +iawXqMzVN3cWxYC5DI9XAlWZhXtJ8C5boMJXU12i6KY3wwH6 +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_25[] = { + 0x30, 0x82, 0x04, 0xa0, 0x30, 0x82, 0x03, 0x88, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x03, 0x39, 0x14, 0x84, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x68, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, + 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, + 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x29, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x32, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, + 0x34, 0x30, 0x31, 0x30, 0x31, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5a, + 0x17, 0x0d, 0x33, 0x31, 0x30, 0x35, 0x33, 0x30, 0x30, 0x37, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x30, 0x81, 0x8f, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, + 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, + 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, + 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x25, + 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, 0x74, 0x61, + 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6e, + 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x29, + 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, + 0x01, 0x00, 0xbd, 0xed, 0xc1, 0x03, 0xfc, 0xf6, 0x8f, 0xfc, 0x02, 0xb1, + 0x6f, 0x5b, 0x9f, 0x48, 0xd9, 0x9d, 0x79, 0xe2, 0xa2, 0xb7, 0x03, 0x61, + 0x56, 0x18, 0xc3, 0x47, 0xb6, 0xd7, 0xca, 0x3d, 0x35, 0x2e, 0x89, 0x43, + 0xf7, 0xa1, 0x69, 0x9b, 0xde, 0x8a, 0x1a, 0xfd, 0x13, 0x20, 0x9c, 0xb4, + 0x49, 0x77, 0x32, 0x29, 0x56, 0xfd, 0xb9, 0xec, 0x8c, 0xdd, 0x22, 0xfa, + 0x72, 0xdc, 0x27, 0x61, 0x97, 0xee, 0xf6, 0x5a, 0x84, 0xec, 0x6e, 0x19, + 0xb9, 0x89, 0x2c, 0xdc, 0x84, 0x5b, 0xd5, 0x74, 0xfb, 0x6b, 0x5f, 0xc5, + 0x89, 0xa5, 0x10, 0x52, 0x89, 0x46, 0x55, 0xf4, 0xb8, 0x75, 0x1c, 0xe6, + 0x7f, 0xe4, 0x54, 0xae, 0x4b, 0xf8, 0x55, 0x72, 0x57, 0x02, 0x19, 0xf8, + 0x17, 0x71, 0x59, 0xeb, 0x1e, 0x28, 0x07, 0x74, 0xc5, 0x9d, 0x48, 0xbe, + 0x6c, 0xb4, 0xf4, 0xa4, 0xb0, 0xf3, 0x64, 0x37, 0x79, 0x92, 0xc0, 0xec, + 0x46, 0x5e, 0x7f, 0xe1, 0x6d, 0x53, 0x4c, 0x62, 0xaf, 0xcd, 0x1f, 0x0b, + 0x63, 0xbb, 0x3a, 0x9d, 0xfb, 0xfc, 0x79, 0x00, 0x98, 0x61, 0x74, 0xcf, + 0x26, 0x82, 0x40, 0x63, 0xf3, 0xb2, 0x72, 0x6a, 0x19, 0x0d, 0x99, 0xca, + 0xd4, 0x0e, 0x75, 0xcc, 0x37, 0xfb, 0x8b, 0x89, 0xc1, 0x59, 0xf1, 0x62, + 0x7f, 0x5f, 0xb3, 0x5f, 0x65, 0x30, 0xf8, 0xa7, 0xb7, 0x4d, 0x76, 0x5a, + 0x1e, 0x76, 0x5e, 0x34, 0xc0, 0xe8, 0x96, 0x56, 0x99, 0x8a, 0xb3, 0xf0, + 0x7f, 0xa4, 0xcd, 0xbd, 0xdc, 0x32, 0x31, 0x7c, 0x91, 0xcf, 0xe0, 0x5f, + 0x11, 0xf8, 0x6b, 0xaa, 0x49, 0x5c, 0xd1, 0x99, 0x94, 0xd1, 0xa2, 0xe3, + 0x63, 0x5b, 0x09, 0x76, 0xb5, 0x56, 0x62, 0xe1, 0x4b, 0x74, 0x1d, 0x96, + 0xd4, 0x26, 0xd4, 0x08, 0x04, 0x59, 0xd0, 0x98, 0x0e, 0x0e, 0xe6, 0xde, + 0xfc, 0xc3, 0xec, 0x1f, 0x90, 0xf1, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, + 0x82, 0x01, 0x29, 0x30, 0x82, 0x01, 0x25, 0x30, 0x0f, 0x06, 0x03, 0x55, + 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, + 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, + 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, + 0x16, 0x04, 0x14, 0x7c, 0x0c, 0x32, 0x1f, 0xa7, 0xd9, 0x30, 0x7f, 0xc4, + 0x7d, 0x68, 0xa3, 0x62, 0xa8, 0xa1, 0xce, 0xab, 0x07, 0x5b, 0x27, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0xbf, 0x5f, 0xb7, 0xd1, 0xce, 0xdd, 0x1f, 0x86, 0xf4, 0x5b, 0x55, 0xac, + 0xdc, 0xd7, 0x10, 0xc2, 0x0e, 0xa9, 0x88, 0xe7, 0x30, 0x3a, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x2e, 0x30, 0x2c, + 0x30, 0x2a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x1e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, + 0x70, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, + 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x38, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0xa0, 0x2b, 0xa0, + 0x29, 0x86, 0x27, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, + 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x72, 0x6f, + 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, + 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, 0x04, 0x55, 0x1d, 0x20, + 0x00, 0x30, 0x39, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x2b, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x85, 0x63, 0xc1, 0xd9, + 0xdd, 0xb9, 0xff, 0xa9, 0xbd, 0xa6, 0x19, 0xdc, 0xbf, 0x13, 0x3a, 0x11, + 0x38, 0x22, 0x54, 0xb1, 0xac, 0x05, 0x10, 0xfb, 0x7c, 0xb3, 0x96, 0x3f, + 0x31, 0x8b, 0x66, 0xff, 0x88, 0xf3, 0xe1, 0xbf, 0xfb, 0xc7, 0x1f, 0x00, + 0xff, 0x46, 0x6a, 0x8b, 0x61, 0x32, 0xc9, 0x01, 0x51, 0x76, 0xfb, 0x9a, + 0xc6, 0xfa, 0x20, 0x51, 0xc8, 0x46, 0xc4, 0x98, 0xd7, 0x79, 0xa3, 0xe3, + 0x04, 0x72, 0x3f, 0x8b, 0x4d, 0x34, 0x53, 0x67, 0xec, 0x33, 0x2c, 0x7b, + 0xe8, 0x94, 0x01, 0x28, 0x7c, 0x3a, 0x34, 0x5b, 0x02, 0x77, 0x16, 0x8d, + 0x40, 0x25, 0x33, 0xb0, 0xbc, 0x6c, 0x97, 0xd7, 0x05, 0x7a, 0xff, 0x8c, + 0x85, 0xce, 0x6f, 0xa0, 0x53, 0x00, 0x17, 0x6e, 0x1e, 0x6c, 0xbd, 0x22, + 0xd7, 0x0a, 0x88, 0x37, 0xf6, 0x7d, 0xeb, 0x99, 0x41, 0xef, 0x27, 0xcb, + 0x8c, 0x60, 0x6b, 0x4c, 0x01, 0x7e, 0x65, 0x50, 0x0b, 0x4f, 0xb8, 0x95, + 0x9a, 0x9a, 0x6e, 0x34, 0xfd, 0x73, 0x3a, 0x33, 0xf1, 0x91, 0xd5, 0xf3, + 0x4e, 0x2d, 0x74, 0xe8, 0xef, 0xd3, 0x90, 0x35, 0xf1, 0x06, 0x68, 0x64, + 0xd4, 0xd0, 0x13, 0xfd, 0x52, 0xd3, 0xc6, 0x6d, 0xc1, 0x3a, 0x8a, 0x31, + 0xdd, 0x05, 0x26, 0x35, 0x4a, 0x8c, 0x65, 0xb8, 0x52, 0x6b, 0x81, 0xec, + 0xd2, 0x9c, 0xb5, 0x34, 0x10, 0x97, 0x9c, 0x3e, 0xc6, 0x2f, 0xed, 0x8e, + 0x42, 0x42, 0x24, 0x2e, 0xe9, 0x73, 0x9a, 0x25, 0xf9, 0x11, 0xf1, 0xf2, + 0x23, 0x69, 0xcb, 0xe5, 0x94, 0x69, 0xa0, 0xd2, 0xdc, 0xb0, 0xfc, 0x44, + 0x89, 0xac, 0x17, 0xa8, 0xcc, 0xd5, 0x37, 0x77, 0x16, 0xc5, 0x80, 0xb9, + 0x0c, 0x8f, 0x57, 0x02, 0x55, 0x99, 0x85, 0x7b, 0x49, 0xf0, 0x2e, 0x5b, + 0xa0, 0xc2, 0x57, 0x53, 0x5d, 0xa2, 0xe8, 0xa6, 0x37, 0xc3, 0x01, 0xfa, +}; + diff --git a/external/lsquic/src/liblsquic/common_cert_set_3b.inc b/external/lsquic/src/liblsquic/common_cert_set_3b.inc new file mode 100644 index 0000000..4ad584b --- /dev/null +++ b/external/lsquic/src/liblsquic/common_cert_set_3b.inc @@ -0,0 +1,5723 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2015 The Chromium Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE.chrome file. + */ + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 28:1c:89:29:66:14:43:80:42:63:55:3a:32:40:ae:b3 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., OU=(c) 2008 GeoTrust Inc. - For authorized use only, CN=GeoTrust Primary Certification Authority - G3 + Validity + Not Before: Jun 30 00:00:00 2015 GMT + Not After : Jun 29 23:59:59 2025 GMT + Subject: C=US, O=GeoTrust Inc., CN=RapidSSL SHA256 CA - G4 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:c0:9e:3a:0f:9a:b2:ba:d3:d2:dc:15:ec:d0:30: + 54:59:30:4d:40:51:ae:42:71:71:d2:8d:53:73:81: + fe:b8:e0:c4:96:c5:8e:7e:c2:f1:b7:63:4a:cf:a7: + 1e:3f:a8:e7:ce:53:a0:fa:2d:f7:d6:e6:ce:70:11: + a6:ee:e1:03:52:d2:68:de:3d:08:0d:87:fd:1c:d7: + 0b:97:62:6d:82:30:76:1b:47:3a:c4:f7:ce:ed:1d: + 7c:8c:b7:17:8e:53:80:1e:1d:0f:5d:8c:f9:90:e4: + 04:1e:02:7e:cb:b0:49:ef:da:52:25:fb:fb:67:ed: + dd:84:74:59:84:0e:f3:de:70:66:8d:e4:52:38:f7: + 53:5a:37:13:67:0b:3e:bb:a8:58:b7:2e:ed:ff:b7: + 5e:11:73:b9:77:45:52:67:46:ae:c4:dc:24:81:89: + 76:0a:ca:a1:6c:66:73:04:82:aa:f5:70:6c:5f:1b: + 9a:00:79:46:d6:7f:7a:26:17:30:cf:39:4b:2c:74: + d9:89:44:76:10:d0:ed:f7:8b:bb:89:05:75:4d:0b: + 0d:b3:da:e9:bf:f1:6a:7d:2a:11:db:1e:9f:8c:e3: + c4:06:69:e1:1d:88:45:39:d1:6e:55:d8:aa:b7:9b: + 6f:ea:f4:de:ac:17:11:92:5d:40:9b:83:7b:9a:e2: + f7:a9 + Exponent: 65537 (0x10001) + X509v3 extensions: + Authority Information Access: + OCSP - URI:http://g.symcd.com + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: 2.23.140.1.2.1 + CPS: https://www.geotrust.com/resources/cps + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://g.symcb.com/GeoTrustPCA-G3.crl + + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + F3:B5:56:0C:C4:09:B0:B4:CF:1F:AA:F9:DD:23:56:F0:77:E8:A1:F9 + X509v3 Authority Key Identifier: + keyid:C4:79:CA:8E:A1:4E:03:1D:1C:DC:6B:DB:31:5B:94:3E:3F:30:7F:2D + + Signature Algorithm: sha256WithRSAEncryption + c3:7e:d8:83:4b:04:4c:55:29:2a:4f:14:9d:9a:6e:de:90:70: + c1:a4:26:4c:88:8e:78:48:ef:bd:9c:b0:a0:f5:f0:66:fc:fe: + 59:26:e1:79:ef:c8:b7:60:64:a8:8b:47:ea:2f:e0:83:99:da: + 41:19:d7:c5:be:05:fa:f2:90:11:f0:0a:ff:6c:dc:05:b4:d8: + 06:6f:a4:6f:8d:be:20:2b:54:db:f9:a2:45:83:9a:1e:a5:21: + 89:35:1d:7c:20:5c:17:fd:04:2e:45:d8:b2:c6:f8:42:99:fc: + 54:08:4e:4b:80:5f:39:37:ba:95:4e:a6:37:0a:9e:93:5e:87: + 5b:e9:90:d6:a8:b6:65:08:8d:61:49:eb:83:20:a9:5d:1b:16: + 60:62:6b:2f:54:fb:5a:02:0d:7a:27:e2:4b:e1:05:14:c2:e4: + e9:f9:70:c0:d9:f7:34:65:0e:a2:91:4b:ac:28:f2:b7:08:0f: + 98:ca:d7:3e:70:b6:c8:0b:f1:8b:9c:51:f8:c6:10:6c:d2:53: + 4f:62:8c:11:00:3e:88:df:bf:e6:d2:cc:70:bd:ed:25:9c:fb: + dd:24:0a:bd:59:91:4a:42:03:38:12:71:32:88:76:a0:8e:7c: + bb:32:ef:88:2a:1b:d4:6a:6f:50:b9:52:67:8b:ab:30:fa:1f: + fd:e3:24:9a +-----BEGIN CERTIFICATE----- +MIIEpjCCA46gAwIBAgIQKByJKWYUQ4BCY1U6MkCuszANBgkqhkiG9w0BAQsFADCB +mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT +MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eSAtIEczMB4XDTE1MDYzMDAwMDAwMFoXDTI1MDYyOTIzNTk1OVowRzELMAkG +A1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xIDAeBgNVBAMTF1JhcGlk +U1NMIFNIQTI1NiBDQSAtIEc0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAwJ46D5qyutPS3BXs0DBUWTBNQFGuQnFx0o1Tc4H+uODElsWOfsLxt2NKz6ce +P6jnzlOg+i331ubOcBGm7uEDUtJo3j0IDYf9HNcLl2JtgjB2G0c6xPfO7R18jLcX +jlOAHh0PXYz5kOQEHgJ+y7BJ79pSJfv7Z+3dhHRZhA7z3nBmjeRSOPdTWjcTZws+ +u6hYty7t/7deEXO5d0VSZ0auxNwkgYl2CsqhbGZzBIKq9XBsXxuaAHlG1n96Jhcw +zzlLLHTZiUR2ENDt94u7iQV1TQsNs9rpv/FqfSoR2x6fjOPEBmnhHYhFOdFuVdiq +t5tv6vTerBcRkl1Am4N7muL3qQIDAQABo4IBOjCCATYwLgYIKwYBBQUHAQEEIjAg +MB4GCCsGAQUFBzABhhJodHRwOi8vZy5zeW1jZC5jb20wEgYDVR0TAQH/BAgwBgEB +/wIBADBJBgNVHSAEQjBAMD4GBmeBDAECATA0MDIGCCsGAQUFBwIBFiZodHRwczov +L3d3dy5nZW90cnVzdC5jb20vcmVzb3VyY2VzL2NwczA2BgNVHR8ELzAtMCugKaAn +hiVodHRwOi8vZy5zeW1jYi5jb20vR2VvVHJ1c3RQQ0EtRzMuY3JsMB0GA1UdJQQW +MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FPO1VgzECbC0zx+q+d0jVvB36KH5MB8GA1UdIwQYMBaAFMR5yo6hTgMdHNxr2zFb +lD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQDDftiDSwRMVSkqTxSdmm7ekHDBpCZM +iI54SO+9nLCg9fBm/P5ZJuF578i3YGSoi0fqL+CDmdpBGdfFvgX68pAR8Ar/bNwF +tNgGb6Rvjb4gK1Tb+aJFg5oepSGJNR18IFwX/QQuRdiyxvhCmfxUCE5LgF85N7qV +TqY3Cp6TXodb6ZDWqLZlCI1hSeuDIKldGxZgYmsvVPtaAg16J+JL4QUUwuTp+XDA +2fc0ZQ6ikUusKPK3CA+Yytc+cLbIC/GLnFH4xhBs0lNPYowRAD6I37/m0sxwve0l +nPvdJAq9WZFKQgM4EnEyiHagjny7Mu+IKhvUam9QuVJni6sw+h/94ySa +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_26[] = { + 0x30, 0x82, 0x04, 0xa6, 0x30, 0x82, 0x03, 0x8e, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x28, 0x1c, 0x89, 0x29, 0x66, 0x14, 0x43, 0x80, 0x42, + 0x63, 0x55, 0x3a, 0x32, 0x40, 0xae, 0xb3, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0x98, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x38, 0x20, 0x47, 0x65, + 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, + 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, + 0x79, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x35, 0x30, 0x36, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x35, 0x30, 0x36, 0x32, 0x39, 0x32, 0x33, + 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x52, 0x61, 0x70, 0x69, 0x64, + 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43, + 0x41, 0x20, 0x2d, 0x20, 0x47, 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, + 0x01, 0x01, 0x00, 0xc0, 0x9e, 0x3a, 0x0f, 0x9a, 0xb2, 0xba, 0xd3, 0xd2, + 0xdc, 0x15, 0xec, 0xd0, 0x30, 0x54, 0x59, 0x30, 0x4d, 0x40, 0x51, 0xae, + 0x42, 0x71, 0x71, 0xd2, 0x8d, 0x53, 0x73, 0x81, 0xfe, 0xb8, 0xe0, 0xc4, + 0x96, 0xc5, 0x8e, 0x7e, 0xc2, 0xf1, 0xb7, 0x63, 0x4a, 0xcf, 0xa7, 0x1e, + 0x3f, 0xa8, 0xe7, 0xce, 0x53, 0xa0, 0xfa, 0x2d, 0xf7, 0xd6, 0xe6, 0xce, + 0x70, 0x11, 0xa6, 0xee, 0xe1, 0x03, 0x52, 0xd2, 0x68, 0xde, 0x3d, 0x08, + 0x0d, 0x87, 0xfd, 0x1c, 0xd7, 0x0b, 0x97, 0x62, 0x6d, 0x82, 0x30, 0x76, + 0x1b, 0x47, 0x3a, 0xc4, 0xf7, 0xce, 0xed, 0x1d, 0x7c, 0x8c, 0xb7, 0x17, + 0x8e, 0x53, 0x80, 0x1e, 0x1d, 0x0f, 0x5d, 0x8c, 0xf9, 0x90, 0xe4, 0x04, + 0x1e, 0x02, 0x7e, 0xcb, 0xb0, 0x49, 0xef, 0xda, 0x52, 0x25, 0xfb, 0xfb, + 0x67, 0xed, 0xdd, 0x84, 0x74, 0x59, 0x84, 0x0e, 0xf3, 0xde, 0x70, 0x66, + 0x8d, 0xe4, 0x52, 0x38, 0xf7, 0x53, 0x5a, 0x37, 0x13, 0x67, 0x0b, 0x3e, + 0xbb, 0xa8, 0x58, 0xb7, 0x2e, 0xed, 0xff, 0xb7, 0x5e, 0x11, 0x73, 0xb9, + 0x77, 0x45, 0x52, 0x67, 0x46, 0xae, 0xc4, 0xdc, 0x24, 0x81, 0x89, 0x76, + 0x0a, 0xca, 0xa1, 0x6c, 0x66, 0x73, 0x04, 0x82, 0xaa, 0xf5, 0x70, 0x6c, + 0x5f, 0x1b, 0x9a, 0x00, 0x79, 0x46, 0xd6, 0x7f, 0x7a, 0x26, 0x17, 0x30, + 0xcf, 0x39, 0x4b, 0x2c, 0x74, 0xd9, 0x89, 0x44, 0x76, 0x10, 0xd0, 0xed, + 0xf7, 0x8b, 0xbb, 0x89, 0x05, 0x75, 0x4d, 0x0b, 0x0d, 0xb3, 0xda, 0xe9, + 0xbf, 0xf1, 0x6a, 0x7d, 0x2a, 0x11, 0xdb, 0x1e, 0x9f, 0x8c, 0xe3, 0xc4, + 0x06, 0x69, 0xe1, 0x1d, 0x88, 0x45, 0x39, 0xd1, 0x6e, 0x55, 0xd8, 0xaa, + 0xb7, 0x9b, 0x6f, 0xea, 0xf4, 0xde, 0xac, 0x17, 0x11, 0x92, 0x5d, 0x40, + 0x9b, 0x83, 0x7b, 0x9a, 0xe2, 0xf7, 0xa9, 0x02, 0x03, 0x01, 0x00, 0x01, + 0xa3, 0x82, 0x01, 0x3a, 0x30, 0x82, 0x01, 0x36, 0x30, 0x2e, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x22, 0x30, 0x20, + 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, + 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, + 0xff, 0x02, 0x01, 0x00, 0x30, 0x49, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x42, 0x30, 0x40, 0x30, 0x3e, 0x06, 0x06, 0x67, 0x81, 0x0c, 0x01, 0x02, + 0x01, 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x36, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x2f, 0x30, 0x2d, 0x30, 0x2b, 0xa0, 0x29, 0xa0, 0x27, + 0x86, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, + 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x6f, + 0x54, 0x72, 0x75, 0x73, 0x74, 0x50, 0x43, 0x41, 0x2d, 0x47, 0x33, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, + 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, 0x0e, + 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, + 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0xf3, 0xb5, 0x56, 0x0c, 0xc4, 0x09, 0xb0, 0xb4, 0xcf, 0x1f, 0xaa, + 0xf9, 0xdd, 0x23, 0x56, 0xf0, 0x77, 0xe8, 0xa1, 0xf9, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xc4, 0x79, + 0xca, 0x8e, 0xa1, 0x4e, 0x03, 0x1d, 0x1c, 0xdc, 0x6b, 0xdb, 0x31, 0x5b, + 0x94, 0x3e, 0x3f, 0x30, 0x7f, 0x2d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x01, 0x00, 0xc3, 0x7e, 0xd8, 0x83, 0x4b, 0x04, 0x4c, 0x55, 0x29, 0x2a, + 0x4f, 0x14, 0x9d, 0x9a, 0x6e, 0xde, 0x90, 0x70, 0xc1, 0xa4, 0x26, 0x4c, + 0x88, 0x8e, 0x78, 0x48, 0xef, 0xbd, 0x9c, 0xb0, 0xa0, 0xf5, 0xf0, 0x66, + 0xfc, 0xfe, 0x59, 0x26, 0xe1, 0x79, 0xef, 0xc8, 0xb7, 0x60, 0x64, 0xa8, + 0x8b, 0x47, 0xea, 0x2f, 0xe0, 0x83, 0x99, 0xda, 0x41, 0x19, 0xd7, 0xc5, + 0xbe, 0x05, 0xfa, 0xf2, 0x90, 0x11, 0xf0, 0x0a, 0xff, 0x6c, 0xdc, 0x05, + 0xb4, 0xd8, 0x06, 0x6f, 0xa4, 0x6f, 0x8d, 0xbe, 0x20, 0x2b, 0x54, 0xdb, + 0xf9, 0xa2, 0x45, 0x83, 0x9a, 0x1e, 0xa5, 0x21, 0x89, 0x35, 0x1d, 0x7c, + 0x20, 0x5c, 0x17, 0xfd, 0x04, 0x2e, 0x45, 0xd8, 0xb2, 0xc6, 0xf8, 0x42, + 0x99, 0xfc, 0x54, 0x08, 0x4e, 0x4b, 0x80, 0x5f, 0x39, 0x37, 0xba, 0x95, + 0x4e, 0xa6, 0x37, 0x0a, 0x9e, 0x93, 0x5e, 0x87, 0x5b, 0xe9, 0x90, 0xd6, + 0xa8, 0xb6, 0x65, 0x08, 0x8d, 0x61, 0x49, 0xeb, 0x83, 0x20, 0xa9, 0x5d, + 0x1b, 0x16, 0x60, 0x62, 0x6b, 0x2f, 0x54, 0xfb, 0x5a, 0x02, 0x0d, 0x7a, + 0x27, 0xe2, 0x4b, 0xe1, 0x05, 0x14, 0xc2, 0xe4, 0xe9, 0xf9, 0x70, 0xc0, + 0xd9, 0xf7, 0x34, 0x65, 0x0e, 0xa2, 0x91, 0x4b, 0xac, 0x28, 0xf2, 0xb7, + 0x08, 0x0f, 0x98, 0xca, 0xd7, 0x3e, 0x70, 0xb6, 0xc8, 0x0b, 0xf1, 0x8b, + 0x9c, 0x51, 0xf8, 0xc6, 0x10, 0x6c, 0xd2, 0x53, 0x4f, 0x62, 0x8c, 0x11, + 0x00, 0x3e, 0x88, 0xdf, 0xbf, 0xe6, 0xd2, 0xcc, 0x70, 0xbd, 0xed, 0x25, + 0x9c, 0xfb, 0xdd, 0x24, 0x0a, 0xbd, 0x59, 0x91, 0x4a, 0x42, 0x03, 0x38, + 0x12, 0x71, 0x32, 0x88, 0x76, 0xa0, 0x8e, 0x7c, 0xbb, 0x32, 0xef, 0x88, + 0x2a, 0x1b, 0xd4, 0x6a, 0x6f, 0x50, 0xb9, 0x52, 0x67, 0x8b, 0xab, 0x30, + 0xfa, 0x1f, 0xfd, 0xe3, 0x24, 0x9a, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + e4:05:47:83:0e:0c:64:52:97:6f:7a:35:49:c0:dd:48 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=PL, O=Unizeto Technologies S.A., OU=Certum Certification Authority, CN=Certum Trusted Network CA + Validity + Not Before: Jan 21 12:00:00 2015 GMT + Not After : Jan 18 12:00:00 2025 GMT + Subject: C=RU, O=Yandex LLC, OU=Yandex Certification Authority, CN=Yandex CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:a6:05:24:76:61:b9:9e:42:60:22:63:85:59:e5: + 9d:88:0d:df:ef:21:64:5a:26:94:71:3a:a4:7f:2b: + 53:c3:ac:7b:ba:95:42:6d:6a:5b:d6:7e:78:0c:67: + 40:98:2f:6a:2d:d0:b7:18:3a:7e:99:60:01:e5:27: + bf:ff:49:f5:cd:c4:58:c3:4c:e1:70:d5:fd:08:a8: + 79:95:76:1c:0e:05:41:fa:bd:80:38:2a:87:4f:c1: + 67:42:aa:17:a6:ee:a7:8c:8e:ef:2d:7f:7a:1d:05: + 17:8f:7e:3b:92:35:f5:68:ed:93:03:55:23:4f:4b: + a2:00:86:65:91:0f:eb:f6:3c:d5:db:6d:0e:ed:e8: + 7c:3a:c8:ba:b7:53:c1:a4:d8:40:02:e5:b5:a2:ca: + bf:da:9c:94:0d:fc:c5:1c:2a:59:88:62:57:93:2e: + 11:f0:38:2c:7a:81:2a:f2:25:15:17:35:70:2c:4b: + f7:23:4c:82:ef:33:9f:c2:9a:0b:a3:e2:5d:6b:38: + 77:f9:60:33:cf:2e:7b:56:b7:13:93:1f:34:97:71: + 99:76:02:46:35:14:7c:dc:ca:48:8a:0a:72:4b:78: + 6d:82:34:96:13:45:cf:02:2f:50:13:39:43:89:c0: + e1:74:d7:28:71:21:e5:aa:97:0e:ee:46:ec:93:f7: + 23:7d + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Subject Key Identifier: + 37:5C:E3:19:E0:B2:8E:A1:A8:4E:D2:CF:AB:D0:DC:E3:0B:5C:35:4D + X509v3 Authority Key Identifier: + keyid:08:76:CD:CB:07:FF:24:F6:C5:CD:ED:BB:90:BC:E2:84:37:46:75:F7 + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.certum.pl/ctnca.crl + + Authority Information Access: + OCSP - URI:http://subca.ocsp-certum.com + CA Issuers - URI:http://repository.certum.pl/ctnca.cer + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: http://www.certum.pl/CPS + + Signature Algorithm: sha256WithRSAEncryption + 02:5e:8e:7b:e0:66:a1:c6:ab:8b:18:1f:0e:b9:c4:cd:71:db: + 44:5c:03:7d:65:ea:b8:47:b5:1e:ce:24:70:a0:7f:d3:df:66: + 4b:8c:90:e2:a5:ed:9b:94:36:b4:a8:be:f0:74:8c:26:92:75: + 9d:56:50:9e:ad:d0:1a:a0:df:a4:14:56:10:75:93:7a:c1:f4: + 53:a0:76:74:2c:72:ba:b5:d1:c9:e2:dc:46:86:3f:1d:f6:33: + 87:59:ec:9c:dc:2d:1e:4d:43:1a:ce:ba:d9:87:7e:e2:47:45: + 72:3d:28:03:c9:0a:4d:e0:57:a3:5e:6e:7e:cc:5a:c8:c4:78: + 01:57:68:7a:38:3b:53:36:e7:92:6d:8a:2c:2f:d7:8b:b6:34: + a8:d1:b6:f8:5e:3b:ab:ed:a5:8f:39:6f:45:ad:cb:63:ed:6a: + 64:c9:10:a7:03:08:12:53:b1:1c:af:ca:f7:53:fc:d8:29:4b: + 1b:fb:38:cd:c0:63:ff:5f:e4:b9:8d:5e:aa:2b:d2:c3:22:35: + 31:f6:30:0e:53:32:f4:93:c5:43:cb:c8:f0:15:56:8f:00:19: + 87:ca:78:22:8d:a0:2e:db:2f:a0:c3:7e:29:5d:91:25:84:1d: + 1d:39:ab:1b:c5:d6:91:fe:69:0e:46:80:bc:45:7b:35:53:2a: + df:00:b6:77 +-----BEGIN CERTIFICATE----- +MIIEqDCCA5CgAwIBAgIRAOQFR4MODGRSl296NUnA3UgwDQYJKoZIhvcNAQELBQAw +fjELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu +QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEiMCAG +A1UEAxMZQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQTAeFw0xNTAxMjExMjAwMDBa +Fw0yNTAxMTgxMjAwMDBaMF8xCzAJBgNVBAYTAlJVMRMwEQYDVQQKEwpZYW5kZXgg +TExDMScwJQYDVQQLEx5ZYW5kZXggQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxEjAQ +BgNVBAMTCVlhbmRleCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AKYFJHZhuZ5CYCJjhVnlnYgN3+8hZFomlHE6pH8rU8Ose7qVQm1qW9Z+eAxnQJgv +ai3Qtxg6fplgAeUnv/9J9c3EWMNM4XDV/QioeZV2HA4FQfq9gDgqh0/BZ0KqF6bu +p4yO7y1/eh0FF49+O5I19WjtkwNVI09LogCGZZEP6/Y81dttDu3ofDrIurdTwaTY +QALltaLKv9qclA38xRwqWYhiV5MuEfA4LHqBKvIlFRc1cCxL9yNMgu8zn8KaC6Pi +XWs4d/lgM88ue1a3E5MfNJdxmXYCRjUUfNzKSIoKckt4bYI0lhNFzwIvUBM5Q4nA +4XTXKHEh5aqXDu5G7JP3I30CAwEAAaOCAT4wggE6MA8GA1UdEwEB/wQFMAMBAf8w +HQYDVR0OBBYEFDdc4xngso6hqE7Sz6vQ3OMLXDVNMB8GA1UdIwQYMBaAFAh2zcsH +/yT2xc3tu5C84oQ3RnX3MA4GA1UdDwEB/wQEAwIBBjAvBgNVHR8EKDAmMCSgIqAg +hh5odHRwOi8vY3JsLmNlcnR1bS5wbC9jdG5jYS5jcmwwawYIKwYBBQUHAQEEXzBd +MCgGCCsGAQUFBzABhhxodHRwOi8vc3ViY2Eub2NzcC1jZXJ0dW0uY29tMDEGCCsG +AQUFBzAChiVodHRwOi8vcmVwb3NpdG9yeS5jZXJ0dW0ucGwvY3RuY2EuY2VyMDkG +A1UdIAQyMDAwLgYEVR0gADAmMCQGCCsGAQUFBwIBFhhodHRwOi8vd3d3LmNlcnR1 +bS5wbC9DUFMwDQYJKoZIhvcNAQELBQADggEBAAJejnvgZqHGq4sYHw65xM1x20Rc +A31l6rhHtR7OJHCgf9PfZkuMkOKl7ZuUNrSovvB0jCaSdZ1WUJ6t0Bqg36QUVhB1 +k3rB9FOgdnQscrq10cni3EaGPx32M4dZ7JzcLR5NQxrOutmHfuJHRXI9KAPJCk3g +V6Nebn7MWsjEeAFXaHo4O1M255Jtiiwv14u2NKjRtvheO6vtpY85b0Wty2PtamTJ +EKcDCBJTsRyvyvdT/NgpSxv7OM3AY/9f5LmNXqor0sMiNTH2MA5TMvSTxUPLyPAV +Vo8AGYfKeCKNoC7bL6DDfildkSWEHR05qxvF1pH+aQ5GgLxFezVTKt8Atnc= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_27[] = { + 0x30, 0x82, 0x04, 0xa8, 0x30, 0x82, 0x03, 0x90, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x11, 0x00, 0xe4, 0x05, 0x47, 0x83, 0x0e, 0x0c, 0x64, 0x52, + 0x97, 0x6f, 0x7a, 0x35, 0x49, 0xc0, 0xdd, 0x48, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, + 0x7e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x50, 0x4c, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x19, 0x55, 0x6e, 0x69, 0x7a, 0x65, 0x74, 0x6f, 0x20, 0x54, 0x65, 0x63, + 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x20, 0x53, 0x2e, + 0x41, 0x2e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x1e, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6d, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x22, 0x30, 0x20, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6d, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x20, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, + 0x35, 0x30, 0x31, 0x32, 0x31, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, + 0x17, 0x0d, 0x32, 0x35, 0x30, 0x31, 0x31, 0x38, 0x31, 0x32, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x30, 0x5f, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x52, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, + 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x59, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x20, + 0x4c, 0x4c, 0x43, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x1e, 0x59, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x12, 0x30, 0x10, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x09, 0x59, 0x61, 0x6e, 0x64, 0x65, + 0x78, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, + 0x00, 0xa6, 0x05, 0x24, 0x76, 0x61, 0xb9, 0x9e, 0x42, 0x60, 0x22, 0x63, + 0x85, 0x59, 0xe5, 0x9d, 0x88, 0x0d, 0xdf, 0xef, 0x21, 0x64, 0x5a, 0x26, + 0x94, 0x71, 0x3a, 0xa4, 0x7f, 0x2b, 0x53, 0xc3, 0xac, 0x7b, 0xba, 0x95, + 0x42, 0x6d, 0x6a, 0x5b, 0xd6, 0x7e, 0x78, 0x0c, 0x67, 0x40, 0x98, 0x2f, + 0x6a, 0x2d, 0xd0, 0xb7, 0x18, 0x3a, 0x7e, 0x99, 0x60, 0x01, 0xe5, 0x27, + 0xbf, 0xff, 0x49, 0xf5, 0xcd, 0xc4, 0x58, 0xc3, 0x4c, 0xe1, 0x70, 0xd5, + 0xfd, 0x08, 0xa8, 0x79, 0x95, 0x76, 0x1c, 0x0e, 0x05, 0x41, 0xfa, 0xbd, + 0x80, 0x38, 0x2a, 0x87, 0x4f, 0xc1, 0x67, 0x42, 0xaa, 0x17, 0xa6, 0xee, + 0xa7, 0x8c, 0x8e, 0xef, 0x2d, 0x7f, 0x7a, 0x1d, 0x05, 0x17, 0x8f, 0x7e, + 0x3b, 0x92, 0x35, 0xf5, 0x68, 0xed, 0x93, 0x03, 0x55, 0x23, 0x4f, 0x4b, + 0xa2, 0x00, 0x86, 0x65, 0x91, 0x0f, 0xeb, 0xf6, 0x3c, 0xd5, 0xdb, 0x6d, + 0x0e, 0xed, 0xe8, 0x7c, 0x3a, 0xc8, 0xba, 0xb7, 0x53, 0xc1, 0xa4, 0xd8, + 0x40, 0x02, 0xe5, 0xb5, 0xa2, 0xca, 0xbf, 0xda, 0x9c, 0x94, 0x0d, 0xfc, + 0xc5, 0x1c, 0x2a, 0x59, 0x88, 0x62, 0x57, 0x93, 0x2e, 0x11, 0xf0, 0x38, + 0x2c, 0x7a, 0x81, 0x2a, 0xf2, 0x25, 0x15, 0x17, 0x35, 0x70, 0x2c, 0x4b, + 0xf7, 0x23, 0x4c, 0x82, 0xef, 0x33, 0x9f, 0xc2, 0x9a, 0x0b, 0xa3, 0xe2, + 0x5d, 0x6b, 0x38, 0x77, 0xf9, 0x60, 0x33, 0xcf, 0x2e, 0x7b, 0x56, 0xb7, + 0x13, 0x93, 0x1f, 0x34, 0x97, 0x71, 0x99, 0x76, 0x02, 0x46, 0x35, 0x14, + 0x7c, 0xdc, 0xca, 0x48, 0x8a, 0x0a, 0x72, 0x4b, 0x78, 0x6d, 0x82, 0x34, + 0x96, 0x13, 0x45, 0xcf, 0x02, 0x2f, 0x50, 0x13, 0x39, 0x43, 0x89, 0xc0, + 0xe1, 0x74, 0xd7, 0x28, 0x71, 0x21, 0xe5, 0xaa, 0x97, 0x0e, 0xee, 0x46, + 0xec, 0x93, 0xf7, 0x23, 0x7d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x01, 0x3e, 0x30, 0x82, 0x01, 0x3a, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x37, 0x5c, + 0xe3, 0x19, 0xe0, 0xb2, 0x8e, 0xa1, 0xa8, 0x4e, 0xd2, 0xcf, 0xab, 0xd0, + 0xdc, 0xe3, 0x0b, 0x5c, 0x35, 0x4d, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x08, 0x76, 0xcd, 0xcb, 0x07, + 0xff, 0x24, 0xf6, 0xc5, 0xcd, 0xed, 0xbb, 0x90, 0xbc, 0xe2, 0x84, 0x37, + 0x46, 0x75, 0xf7, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2f, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0xa0, 0x22, 0xa0, 0x20, + 0x86, 0x1e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, + 0x2e, 0x63, 0x65, 0x72, 0x74, 0x75, 0x6d, 0x2e, 0x70, 0x6c, 0x2f, 0x63, + 0x74, 0x6e, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x6b, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x5f, 0x30, 0x5d, + 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x75, 0x62, + 0x63, 0x61, 0x2e, 0x6f, 0x63, 0x73, 0x70, 0x2d, 0x63, 0x65, 0x72, 0x74, + 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x25, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x75, 0x6d, 0x2e, 0x70, 0x6c, 0x2f, + 0x63, 0x74, 0x6e, 0x63, 0x61, 0x2e, 0x63, 0x65, 0x72, 0x30, 0x39, 0x06, + 0x03, 0x55, 0x1d, 0x20, 0x04, 0x32, 0x30, 0x30, 0x30, 0x2e, 0x06, 0x04, + 0x55, 0x1d, 0x20, 0x00, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x18, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x75, + 0x6d, 0x2e, 0x70, 0x6c, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x02, 0x5e, 0x8e, 0x7b, 0xe0, 0x66, 0xa1, 0xc6, + 0xab, 0x8b, 0x18, 0x1f, 0x0e, 0xb9, 0xc4, 0xcd, 0x71, 0xdb, 0x44, 0x5c, + 0x03, 0x7d, 0x65, 0xea, 0xb8, 0x47, 0xb5, 0x1e, 0xce, 0x24, 0x70, 0xa0, + 0x7f, 0xd3, 0xdf, 0x66, 0x4b, 0x8c, 0x90, 0xe2, 0xa5, 0xed, 0x9b, 0x94, + 0x36, 0xb4, 0xa8, 0xbe, 0xf0, 0x74, 0x8c, 0x26, 0x92, 0x75, 0x9d, 0x56, + 0x50, 0x9e, 0xad, 0xd0, 0x1a, 0xa0, 0xdf, 0xa4, 0x14, 0x56, 0x10, 0x75, + 0x93, 0x7a, 0xc1, 0xf4, 0x53, 0xa0, 0x76, 0x74, 0x2c, 0x72, 0xba, 0xb5, + 0xd1, 0xc9, 0xe2, 0xdc, 0x46, 0x86, 0x3f, 0x1d, 0xf6, 0x33, 0x87, 0x59, + 0xec, 0x9c, 0xdc, 0x2d, 0x1e, 0x4d, 0x43, 0x1a, 0xce, 0xba, 0xd9, 0x87, + 0x7e, 0xe2, 0x47, 0x45, 0x72, 0x3d, 0x28, 0x03, 0xc9, 0x0a, 0x4d, 0xe0, + 0x57, 0xa3, 0x5e, 0x6e, 0x7e, 0xcc, 0x5a, 0xc8, 0xc4, 0x78, 0x01, 0x57, + 0x68, 0x7a, 0x38, 0x3b, 0x53, 0x36, 0xe7, 0x92, 0x6d, 0x8a, 0x2c, 0x2f, + 0xd7, 0x8b, 0xb6, 0x34, 0xa8, 0xd1, 0xb6, 0xf8, 0x5e, 0x3b, 0xab, 0xed, + 0xa5, 0x8f, 0x39, 0x6f, 0x45, 0xad, 0xcb, 0x63, 0xed, 0x6a, 0x64, 0xc9, + 0x10, 0xa7, 0x03, 0x08, 0x12, 0x53, 0xb1, 0x1c, 0xaf, 0xca, 0xf7, 0x53, + 0xfc, 0xd8, 0x29, 0x4b, 0x1b, 0xfb, 0x38, 0xcd, 0xc0, 0x63, 0xff, 0x5f, + 0xe4, 0xb9, 0x8d, 0x5e, 0xaa, 0x2b, 0xd2, 0xc3, 0x22, 0x35, 0x31, 0xf6, + 0x30, 0x0e, 0x53, 0x32, 0xf4, 0x93, 0xc5, 0x43, 0xcb, 0xc8, 0xf0, 0x15, + 0x56, 0x8f, 0x00, 0x19, 0x87, 0xca, 0x78, 0x22, 0x8d, 0xa0, 0x2e, 0xdb, + 0x2f, 0xa0, 0xc3, 0x7e, 0x29, 0x5d, 0x91, 0x25, 0x84, 0x1d, 0x1d, 0x39, + 0xab, 0x1b, 0xc5, 0xd6, 0x91, 0xfe, 0x69, 0x0e, 0x46, 0x80, 0xbc, 0x45, + 0x7b, 0x35, 0x53, 0x2a, 0xdf, 0x00, 0xb6, 0x77, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 5d:72:fb:33:76:20:f6:4c:72:80:db:e9:12:81:ff:6a + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2006 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA + Validity + Not Before: Oct 31 00:00:00 2013 GMT + Not After : Oct 30 23:59:59 2023 GMT + Subject: C=US, O=thawte, Inc., CN=thawte EV SSL CA - G3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:c4:dd:da:94:1e:32:b2:2e:a0:83:c0:a6:7d:5f: + 65:2d:fd:27:b8:73:0e:f8:0b:a9:d4:56:26:69:98: + 67:35:39:64:58:ce:82:6f:98:94:d1:8f:e0:90:d6: + ed:55:4b:98:4b:d7:10:59:34:02:1b:e7:51:31:51: + c4:38:c2:bc:db:03:5c:ca:e1:7c:dc:4f:59:97:ea: + 07:7f:0f:85:3e:92:ea:aa:a7:d9:be:01:41:e4:62: + 56:47:36:bd:57:91:e6:21:d3:f8:41:0b:d8:ba:e8: + ed:81:ad:70:c0:8b:6e:f3:89:6e:27:9e:a6:a6:73: + 59:bb:71:00:d4:4f:4b:48:e9:d5:c9:27:36:9c:7c: + 1c:02:aa:ac:bd:3b:d1:53:83:6a:1f:e6:08:47:33: + a7:b1:9f:02:be:9b:47:ed:33:04:dc:1c:80:27:d1: + 4a:33:a0:8c:eb:01:47:a1:32:90:64:7b:c4:e0:84: + c9:32:e9:dd:34:1f:8a:68:67:f3:ad:10:63:eb:ee: + 8a:9a:b1:2a:1b:26:74:a1:2a:b0:8f:fe:52:98:46: + 97:cf:a3:56:1c:6f:6e:99:97:8d:26:0e:a9:ec:c2: + 53:70:fc:7a:a5:19:49:bd:b5:17:82:55:de:97:e0: + 5d:62:84:81:f0:70:a8:34:53:4f:14:fd:3d:5d:3d: + 6f:b9 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + Authority Information Access: + OCSP - URI:http://t2.symcb.com + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.thawte.com/cps + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://t1.symcb.com/ThawtePCA.crl + + X509v3 Subject Alternative Name: + DirName:/CN=SymantecPKI-1-536 + X509v3 Subject Key Identifier: + F0:70:51:DA:D3:2A:91:4F:52:77:D7:86:77:74:0F:CE:71:1A:6C:22 + X509v3 Authority Key Identifier: + keyid:7B:5B:45:CF:AF:CE:CB:7A:FD:31:92:1A:6A:B6:F3:46:EB:57:48:50 + + Signature Algorithm: sha256WithRSAEncryption + a1:2e:94:3e:9b:16:f4:58:1a:6f:c1:fa:c1:7e:43:93:b2:c3: + f7:89:eb:13:62:5d:dd:cc:61:13:2b:1d:4e:88:79:11:62:14: + 37:30:46:ff:89:62:10:85:2a:87:1e:f8:e2:af:fe:93:02:93: + ca:f2:e9:46:03:6b:a1:1a:ac:d5:f0:80:1b:98:6f:b8:3a:50: + f8:54:71:06:03:e7:84:cc:8e:61:d2:5f:4d:0c:97:02:65:b5: + 8c:26:bc:05:98:f4:dc:c6:af:e4:57:7f:e3:dc:a1:d7:27:47: + 2a:e0:2c:3f:09:74:dc:5a:e5:b5:7c:fa:82:9a:15:fa:74:2b: + 84:2e:6b:ac:ef:35:a6:30:fa:47:4a:aa:36:44:f6:5a:91:07: + d3:e4:4e:97:3f:a6:53:d8:29:33:32:6f:8b:3d:b5:a5:0d:e5: + e4:8a:e8:f5:c0:fa:af:d8:37:28:27:c3:ed:34:31:d9:7c:a6: + af:4d:12:4f:d0:2b:92:9c:69:95:f2:28:a6:fe:a8:c6:e0:2c: + 4d:36:eb:11:34:d6:e1:81:99:9d:41:f2:e7:c5:57:05:0e:19: + ca:af:42:39:1f:a7:27:5e:e0:0a:17:b8:ae:47:ab:92:f1:8a: + 04:df:30:e0:bb:4f:8a:f9:1b:88:4f:03:b4:25:7a:78:de:2e: + 7d:29:d1:31 +-----BEGIN CERTIFICATE----- +MIIErzCCA5egAwIBAgIQXXL7M3Yg9kxygNvpEoH/ajANBgkqhkiG9w0BAQsFADCB +qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV +BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMTMxMDMxMDAwMDAwWhcNMjMx +MDMwMjM1OTU5WjBEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3RlLCBJbmMu +MR4wHAYDVQQDExV0aGF3dGUgRVYgU1NMIENBIC0gRzMwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDE3dqUHjKyLqCDwKZ9X2Ut/Se4cw74C6nUViZpmGc1 +OWRYzoJvmJTRj+CQ1u1VS5hL1xBZNAIb51ExUcQ4wrzbA1zK4XzcT1mX6gd/D4U+ +kuqqp9m+AUHkYlZHNr1XkeYh0/hBC9i66O2BrXDAi27ziW4nnqamc1m7cQDUT0tI +6dXJJzacfBwCqqy9O9FTg2of5ghHM6exnwK+m0ftMwTcHIAn0UozoIzrAUehMpBk +e8TghMky6d00H4poZ/OtEGPr7oqasSobJnShKrCP/lKYRpfPo1Ycb26Zl40mDqns +wlNw/HqlGUm9tReCVd6X4F1ihIHwcKg0U08U/T1dPW+5AgMBAAGjggE1MIIBMTAS +BgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAvBggrBgEFBQcBAQQj +MCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly90Mi5zeW1jYi5jb20wOwYDVR0gBDQwMjAw +BgRVHSAAMCgwJgYIKwYBBQUHAgEWGmh0dHBzOi8vd3d3LnRoYXd0ZS5jb20vY3Bz +MDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly90MS5zeW1jYi5jb20vVGhhd3RlUENB +LmNybDApBgNVHREEIjAgpB4wHDEaMBgGA1UEAxMRU3ltYW50ZWNQS0ktMS01MzYw +HQYDVR0OBBYEFPBwUdrTKpFPUnfXhnd0D85xGmwiMB8GA1UdIwQYMBaAFHtbRc+v +zst6/TGSGmq280brV0hQMA0GCSqGSIb3DQEBCwUAA4IBAQChLpQ+mxb0WBpvwfrB +fkOTssP3iesTYl3dzGETKx1OiHkRYhQ3MEb/iWIQhSqHHvjir/6TApPK8ulGA2uh +GqzV8IAbmG+4OlD4VHEGA+eEzI5h0l9NDJcCZbWMJrwFmPTcxq/kV3/j3KHXJ0cq +4Cw/CXTcWuW1fPqCmhX6dCuELmus7zWmMPpHSqo2RPZakQfT5E6XP6ZT2CkzMm+L +PbWlDeXkiuj1wPqv2DcoJ8PtNDHZfKavTRJP0CuSnGmV8iim/qjG4CxNNusRNNbh +gZmdQfLnxVcFDhnKr0I5H6cnXuAKF7iuR6uS8YoE3zDgu0+K+RuITwO0JXp43i59 +KdEx +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_28[] = { + 0x30, 0x82, 0x04, 0xaf, 0x30, 0x82, 0x03, 0x97, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x5d, 0x72, 0xfb, 0x33, 0x76, 0x20, 0xf6, 0x4c, 0x72, + 0x80, 0xdb, 0xe9, 0x12, 0x81, 0xff, 0x6a, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, + 0x30, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x44, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x15, 0x74, + 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x45, 0x56, 0x20, 0x53, 0x53, 0x4c, + 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xc4, 0xdd, 0xda, 0x94, 0x1e, 0x32, 0xb2, + 0x2e, 0xa0, 0x83, 0xc0, 0xa6, 0x7d, 0x5f, 0x65, 0x2d, 0xfd, 0x27, 0xb8, + 0x73, 0x0e, 0xf8, 0x0b, 0xa9, 0xd4, 0x56, 0x26, 0x69, 0x98, 0x67, 0x35, + 0x39, 0x64, 0x58, 0xce, 0x82, 0x6f, 0x98, 0x94, 0xd1, 0x8f, 0xe0, 0x90, + 0xd6, 0xed, 0x55, 0x4b, 0x98, 0x4b, 0xd7, 0x10, 0x59, 0x34, 0x02, 0x1b, + 0xe7, 0x51, 0x31, 0x51, 0xc4, 0x38, 0xc2, 0xbc, 0xdb, 0x03, 0x5c, 0xca, + 0xe1, 0x7c, 0xdc, 0x4f, 0x59, 0x97, 0xea, 0x07, 0x7f, 0x0f, 0x85, 0x3e, + 0x92, 0xea, 0xaa, 0xa7, 0xd9, 0xbe, 0x01, 0x41, 0xe4, 0x62, 0x56, 0x47, + 0x36, 0xbd, 0x57, 0x91, 0xe6, 0x21, 0xd3, 0xf8, 0x41, 0x0b, 0xd8, 0xba, + 0xe8, 0xed, 0x81, 0xad, 0x70, 0xc0, 0x8b, 0x6e, 0xf3, 0x89, 0x6e, 0x27, + 0x9e, 0xa6, 0xa6, 0x73, 0x59, 0xbb, 0x71, 0x00, 0xd4, 0x4f, 0x4b, 0x48, + 0xe9, 0xd5, 0xc9, 0x27, 0x36, 0x9c, 0x7c, 0x1c, 0x02, 0xaa, 0xac, 0xbd, + 0x3b, 0xd1, 0x53, 0x83, 0x6a, 0x1f, 0xe6, 0x08, 0x47, 0x33, 0xa7, 0xb1, + 0x9f, 0x02, 0xbe, 0x9b, 0x47, 0xed, 0x33, 0x04, 0xdc, 0x1c, 0x80, 0x27, + 0xd1, 0x4a, 0x33, 0xa0, 0x8c, 0xeb, 0x01, 0x47, 0xa1, 0x32, 0x90, 0x64, + 0x7b, 0xc4, 0xe0, 0x84, 0xc9, 0x32, 0xe9, 0xdd, 0x34, 0x1f, 0x8a, 0x68, + 0x67, 0xf3, 0xad, 0x10, 0x63, 0xeb, 0xee, 0x8a, 0x9a, 0xb1, 0x2a, 0x1b, + 0x26, 0x74, 0xa1, 0x2a, 0xb0, 0x8f, 0xfe, 0x52, 0x98, 0x46, 0x97, 0xcf, + 0xa3, 0x56, 0x1c, 0x6f, 0x6e, 0x99, 0x97, 0x8d, 0x26, 0x0e, 0xa9, 0xec, + 0xc2, 0x53, 0x70, 0xfc, 0x7a, 0xa5, 0x19, 0x49, 0xbd, 0xb5, 0x17, 0x82, + 0x55, 0xde, 0x97, 0xe0, 0x5d, 0x62, 0x84, 0x81, 0xf0, 0x70, 0xa8, 0x34, + 0x53, 0x4f, 0x14, 0xfd, 0x3d, 0x5d, 0x3d, 0x6f, 0xb9, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x35, 0x30, 0x82, 0x01, 0x31, 0x30, 0x12, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, + 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2f, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x23, + 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x74, + 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x30, + 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, + 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, + 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, + 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, + 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30, + 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x74, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, + 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, + 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, + 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x35, 0x33, 0x36, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xf0, 0x70, + 0x51, 0xda, 0xd3, 0x2a, 0x91, 0x4f, 0x52, 0x77, 0xd7, 0x86, 0x77, 0x74, + 0x0f, 0xce, 0x71, 0x1a, 0x6c, 0x22, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7b, 0x5b, 0x45, 0xcf, 0xaf, + 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, 0x6a, 0xb6, 0xf3, 0x46, 0xeb, + 0x57, 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xa1, + 0x2e, 0x94, 0x3e, 0x9b, 0x16, 0xf4, 0x58, 0x1a, 0x6f, 0xc1, 0xfa, 0xc1, + 0x7e, 0x43, 0x93, 0xb2, 0xc3, 0xf7, 0x89, 0xeb, 0x13, 0x62, 0x5d, 0xdd, + 0xcc, 0x61, 0x13, 0x2b, 0x1d, 0x4e, 0x88, 0x79, 0x11, 0x62, 0x14, 0x37, + 0x30, 0x46, 0xff, 0x89, 0x62, 0x10, 0x85, 0x2a, 0x87, 0x1e, 0xf8, 0xe2, + 0xaf, 0xfe, 0x93, 0x02, 0x93, 0xca, 0xf2, 0xe9, 0x46, 0x03, 0x6b, 0xa1, + 0x1a, 0xac, 0xd5, 0xf0, 0x80, 0x1b, 0x98, 0x6f, 0xb8, 0x3a, 0x50, 0xf8, + 0x54, 0x71, 0x06, 0x03, 0xe7, 0x84, 0xcc, 0x8e, 0x61, 0xd2, 0x5f, 0x4d, + 0x0c, 0x97, 0x02, 0x65, 0xb5, 0x8c, 0x26, 0xbc, 0x05, 0x98, 0xf4, 0xdc, + 0xc6, 0xaf, 0xe4, 0x57, 0x7f, 0xe3, 0xdc, 0xa1, 0xd7, 0x27, 0x47, 0x2a, + 0xe0, 0x2c, 0x3f, 0x09, 0x74, 0xdc, 0x5a, 0xe5, 0xb5, 0x7c, 0xfa, 0x82, + 0x9a, 0x15, 0xfa, 0x74, 0x2b, 0x84, 0x2e, 0x6b, 0xac, 0xef, 0x35, 0xa6, + 0x30, 0xfa, 0x47, 0x4a, 0xaa, 0x36, 0x44, 0xf6, 0x5a, 0x91, 0x07, 0xd3, + 0xe4, 0x4e, 0x97, 0x3f, 0xa6, 0x53, 0xd8, 0x29, 0x33, 0x32, 0x6f, 0x8b, + 0x3d, 0xb5, 0xa5, 0x0d, 0xe5, 0xe4, 0x8a, 0xe8, 0xf5, 0xc0, 0xfa, 0xaf, + 0xd8, 0x37, 0x28, 0x27, 0xc3, 0xed, 0x34, 0x31, 0xd9, 0x7c, 0xa6, 0xaf, + 0x4d, 0x12, 0x4f, 0xd0, 0x2b, 0x92, 0x9c, 0x69, 0x95, 0xf2, 0x28, 0xa6, + 0xfe, 0xa8, 0xc6, 0xe0, 0x2c, 0x4d, 0x36, 0xeb, 0x11, 0x34, 0xd6, 0xe1, + 0x81, 0x99, 0x9d, 0x41, 0xf2, 0xe7, 0xc5, 0x57, 0x05, 0x0e, 0x19, 0xca, + 0xaf, 0x42, 0x39, 0x1f, 0xa7, 0x27, 0x5e, 0xe0, 0x0a, 0x17, 0xb8, 0xae, + 0x47, 0xab, 0x92, 0xf1, 0x8a, 0x04, 0xdf, 0x30, 0xe0, 0xbb, 0x4f, 0x8a, + 0xf9, 0x1b, 0x88, 0x4f, 0x03, 0xb4, 0x25, 0x7a, 0x78, 0xde, 0x2e, 0x7d, + 0x29, 0xd1, 0x31, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 04:e1:e7:a4:dc:5c:f2:f3:6d:c0:2b:42:b8:5d:15:9f + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA + Validity + Not Before: Oct 22 12:00:00 2013 GMT + Not After : Oct 22 12:00:00 2028 GMT + Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 High Assurance Server CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:b6:e0:2f:c2:24:06:c8:6d:04:5f:d7:ef:0a:64: + 06:b2:7d:22:26:65:16:ae:42:40:9b:ce:dc:9f:9f: + 76:07:3e:c3:30:55:87:19:b9:4f:94:0e:5a:94:1f: + 55:56:b4:c2:02:2a:af:d0:98:ee:0b:40:d7:c4:d0: + 3b:72:c8:14:9e:ef:90:b1:11:a9:ae:d2:c8:b8:43: + 3a:d9:0b:0b:d5:d5:95:f5:40:af:c8:1d:ed:4d:9c: + 5f:57:b7:86:50:68:99:f5:8a:da:d2:c7:05:1f:a8: + 97:c9:dc:a4:b1:82:84:2d:c6:ad:a5:9c:c7:19:82: + a6:85:0f:5e:44:58:2a:37:8f:fd:35:f1:0b:08:27: + 32:5a:f5:bb:8b:9e:a4:bd:51:d0:27:e2:dd:3b:42: + 33:a3:05:28:c4:bb:28:cc:9a:ac:2b:23:0d:78:c6: + 7b:e6:5e:71:b7:4a:3e:08:fb:81:b7:16:16:a1:9d: + 23:12:4d:e5:d7:92:08:ac:75:a4:9c:ba:cd:17:b2: + 1e:44:35:65:7f:53:25:39:d1:1c:0a:9a:63:1b:19: + 92:74:68:0a:37:c2:c2:52:48:cb:39:5a:a2:b6:e1: + 5d:c1:dd:a0:20:b8:21:a2:93:26:6f:14:4a:21:41: + c7:ed:6d:9b:f2:48:2f:f3:03:f5:a2:68:92:53:2f: + 5e:e3 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication + Authority Information Access: + OCSP - URI:http://ocsp.digicert.com + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl4.digicert.com/DigiCertHighAssuranceEVRootCA.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.digicert.com/CPS + + X509v3 Subject Key Identifier: + 51:68:FF:90:AF:02:07:75:3C:CC:D9:65:64:62:A2:12:B8:59:72:3B + X509v3 Authority Key Identifier: + keyid:B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3 + + Signature Algorithm: sha256WithRSAEncryption + 18:8a:95:89:03:e6:6d:df:5c:fc:1d:68:ea:4a:8f:83:d6:51: + 2f:8d:6b:44:16:9e:ac:63:f5:d2:6e:6c:84:99:8b:aa:81:71: + 84:5b:ed:34:4e:b0:b7:79:92:29:cc:2d:80:6a:f0:8e:20:e1: + 79:a4:fe:03:47:13:ea:f5:86:ca:59:71:7d:f4:04:96:6b:d3: + 59:58:3d:fe:d3:31:25:5c:18:38:84:a3:e6:9f:82:fd:8c:5b: + 98:31:4e:cd:78:9e:1a:fd:85:cb:49:aa:f2:27:8b:99:72:fc: + 3e:aa:d5:41:0b:da:d5:36:a1:bf:1c:6e:47:49:7f:5e:d9:48: + 7c:03:d9:fd:8b:49:a0:98:26:42:40:eb:d6:92:11:a4:64:0a: + 57:54:c4:f5:1d:d6:02:5e:6b:ac:ee:c4:80:9a:12:72:fa:56: + 93:d7:ff:bf:30:85:06:30:bf:0b:7f:4e:ff:57:05:9d:24:ed: + 85:c3:2b:fb:a6:75:a8:ac:2d:16:ef:7d:79:27:b2:eb:c2:9d: + 0b:07:ea:aa:85:d3:01:a3:20:28:41:59:43:28:d2:81:e3:aa: + f6:ec:7b:3b:77:b6:40:62:80:05:41:45:01:ef:17:06:3e:de: + c0:33:9b:67:d3:61:2e:72:87:e4:69:fc:12:00:57:40:1e:70: + f5:1e:c9:b4 +-----BEGIN CERTIFICATE----- +MIIEsTCCA5mgAwIBAgIQBOHnpNxc8vNtwCtCuF0VnzANBgkqhkiG9w0BAQsFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTEzMTAyMjEyMDAwMFoXDTI4MTAyMjEyMDAwMFowcDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTEvMC0GA1UEAxMmRGlnaUNlcnQgU0hBMiBIaWdoIEFzc3Vy +YW5jZSBTZXJ2ZXIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2 +4C/CJAbIbQRf1+8KZAayfSImZRauQkCbztyfn3YHPsMwVYcZuU+UDlqUH1VWtMIC +Kq/QmO4LQNfE0DtyyBSe75CxEamu0si4QzrZCwvV1ZX1QK/IHe1NnF9Xt4ZQaJn1 +itrSxwUfqJfJ3KSxgoQtxq2lnMcZgqaFD15EWCo3j/018QsIJzJa9buLnqS9UdAn +4t07QjOjBSjEuyjMmqwrIw14xnvmXnG3Sj4I+4G3FhahnSMSTeXXkgisdaScus0X +sh5ENWV/UyU50RwKmmMbGZJ0aAo3wsJSSMs5WqK24V3B3aAguCGikyZvFEohQcft +bZvySC/zA/WiaJJTL17jAgMBAAGjggFJMIIBRTASBgNVHRMBAf8ECDAGAQH/AgEA +MA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw +NAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy +dC5jb20wSwYDVR0fBEQwQjBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNlcnQuY29t +L0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDA9BgNVHSAENjA0MDIG +BFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQ +UzAdBgNVHQ4EFgQUUWj/kK8CB3U8zNllZGKiErhZcjswHwYDVR0jBBgwFoAUsT7D +aQP4v0cB1JgmGggC72NkK8MwDQYJKoZIhvcNAQELBQADggEBABiKlYkD5m3fXPwd +aOpKj4PWUS+Na0QWnqxj9dJubISZi6qBcYRb7TROsLd5kinMLYBq8I4g4Xmk/gNH +E+r1hspZcX30BJZr01lYPf7TMSVcGDiEo+afgv2MW5gxTs14nhr9hctJqvIni5ly +/D6q1UEL2tU2ob8cbkdJf17ZSHwD2f2LSaCYJkJA69aSEaRkCldUxPUd1gJea6zu +xICaEnL6VpPX/78whQYwvwt/Tv9XBZ0k7YXDK/umdaisLRbvfXknsuvCnQsH6qqF +0wGjIChBWUMo0oHjqvbsezt3tkBigAVBRQHvFwY+3sAzm2fTYS5yh+Rp/BIAV0Ae +cPUeybQ= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_29[] = { + 0x30, 0x82, 0x04, 0xb1, 0x30, 0x82, 0x03, 0x99, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x04, 0xe1, 0xe7, 0xa4, 0xdc, 0x5c, 0xf2, 0xf3, 0x6d, + 0xc0, 0x2b, 0x42, 0xb8, 0x5d, 0x15, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x6c, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, + 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, + 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x32, 0x32, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x38, 0x31, 0x30, 0x32, + 0x32, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x70, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, + 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, + 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x26, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x48, 0x41, + 0x32, 0x20, 0x48, 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, + 0x61, 0x6e, 0x63, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, + 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb6, + 0xe0, 0x2f, 0xc2, 0x24, 0x06, 0xc8, 0x6d, 0x04, 0x5f, 0xd7, 0xef, 0x0a, + 0x64, 0x06, 0xb2, 0x7d, 0x22, 0x26, 0x65, 0x16, 0xae, 0x42, 0x40, 0x9b, + 0xce, 0xdc, 0x9f, 0x9f, 0x76, 0x07, 0x3e, 0xc3, 0x30, 0x55, 0x87, 0x19, + 0xb9, 0x4f, 0x94, 0x0e, 0x5a, 0x94, 0x1f, 0x55, 0x56, 0xb4, 0xc2, 0x02, + 0x2a, 0xaf, 0xd0, 0x98, 0xee, 0x0b, 0x40, 0xd7, 0xc4, 0xd0, 0x3b, 0x72, + 0xc8, 0x14, 0x9e, 0xef, 0x90, 0xb1, 0x11, 0xa9, 0xae, 0xd2, 0xc8, 0xb8, + 0x43, 0x3a, 0xd9, 0x0b, 0x0b, 0xd5, 0xd5, 0x95, 0xf5, 0x40, 0xaf, 0xc8, + 0x1d, 0xed, 0x4d, 0x9c, 0x5f, 0x57, 0xb7, 0x86, 0x50, 0x68, 0x99, 0xf5, + 0x8a, 0xda, 0xd2, 0xc7, 0x05, 0x1f, 0xa8, 0x97, 0xc9, 0xdc, 0xa4, 0xb1, + 0x82, 0x84, 0x2d, 0xc6, 0xad, 0xa5, 0x9c, 0xc7, 0x19, 0x82, 0xa6, 0x85, + 0x0f, 0x5e, 0x44, 0x58, 0x2a, 0x37, 0x8f, 0xfd, 0x35, 0xf1, 0x0b, 0x08, + 0x27, 0x32, 0x5a, 0xf5, 0xbb, 0x8b, 0x9e, 0xa4, 0xbd, 0x51, 0xd0, 0x27, + 0xe2, 0xdd, 0x3b, 0x42, 0x33, 0xa3, 0x05, 0x28, 0xc4, 0xbb, 0x28, 0xcc, + 0x9a, 0xac, 0x2b, 0x23, 0x0d, 0x78, 0xc6, 0x7b, 0xe6, 0x5e, 0x71, 0xb7, + 0x4a, 0x3e, 0x08, 0xfb, 0x81, 0xb7, 0x16, 0x16, 0xa1, 0x9d, 0x23, 0x12, + 0x4d, 0xe5, 0xd7, 0x92, 0x08, 0xac, 0x75, 0xa4, 0x9c, 0xba, 0xcd, 0x17, + 0xb2, 0x1e, 0x44, 0x35, 0x65, 0x7f, 0x53, 0x25, 0x39, 0xd1, 0x1c, 0x0a, + 0x9a, 0x63, 0x1b, 0x19, 0x92, 0x74, 0x68, 0x0a, 0x37, 0xc2, 0xc2, 0x52, + 0x48, 0xcb, 0x39, 0x5a, 0xa2, 0xb6, 0xe1, 0x5d, 0xc1, 0xdd, 0xa0, 0x20, + 0xb8, 0x21, 0xa2, 0x93, 0x26, 0x6f, 0x14, 0x4a, 0x21, 0x41, 0xc7, 0xed, + 0x6d, 0x9b, 0xf2, 0x48, 0x2f, 0xf3, 0x03, 0xf5, 0xa2, 0x68, 0x92, 0x53, + 0x2f, 0x5e, 0xe3, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x49, + 0x30, 0x82, 0x01, 0x45, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, + 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, + 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, + 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, + 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, + 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4b, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x44, 0x30, 0x42, 0x30, 0x40, 0xa0, 0x3e, 0xa0, 0x3c, 0x86, 0x3a, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x34, 0x2e, + 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, 0x69, 0x67, + 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x56, + 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, + 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x50, + 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x51, 0x68, 0xff, 0x90, 0xaf, 0x02, 0x07, 0x75, 0x3c, 0xcc, 0xd9, 0x65, + 0x64, 0x62, 0xa2, 0x12, 0xb8, 0x59, 0x72, 0x3b, 0x30, 0x1f, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xb1, 0x3e, 0xc3, + 0x69, 0x03, 0xf8, 0xbf, 0x47, 0x01, 0xd4, 0x98, 0x26, 0x1a, 0x08, 0x02, + 0xef, 0x63, 0x64, 0x2b, 0xc3, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, + 0x00, 0x18, 0x8a, 0x95, 0x89, 0x03, 0xe6, 0x6d, 0xdf, 0x5c, 0xfc, 0x1d, + 0x68, 0xea, 0x4a, 0x8f, 0x83, 0xd6, 0x51, 0x2f, 0x8d, 0x6b, 0x44, 0x16, + 0x9e, 0xac, 0x63, 0xf5, 0xd2, 0x6e, 0x6c, 0x84, 0x99, 0x8b, 0xaa, 0x81, + 0x71, 0x84, 0x5b, 0xed, 0x34, 0x4e, 0xb0, 0xb7, 0x79, 0x92, 0x29, 0xcc, + 0x2d, 0x80, 0x6a, 0xf0, 0x8e, 0x20, 0xe1, 0x79, 0xa4, 0xfe, 0x03, 0x47, + 0x13, 0xea, 0xf5, 0x86, 0xca, 0x59, 0x71, 0x7d, 0xf4, 0x04, 0x96, 0x6b, + 0xd3, 0x59, 0x58, 0x3d, 0xfe, 0xd3, 0x31, 0x25, 0x5c, 0x18, 0x38, 0x84, + 0xa3, 0xe6, 0x9f, 0x82, 0xfd, 0x8c, 0x5b, 0x98, 0x31, 0x4e, 0xcd, 0x78, + 0x9e, 0x1a, 0xfd, 0x85, 0xcb, 0x49, 0xaa, 0xf2, 0x27, 0x8b, 0x99, 0x72, + 0xfc, 0x3e, 0xaa, 0xd5, 0x41, 0x0b, 0xda, 0xd5, 0x36, 0xa1, 0xbf, 0x1c, + 0x6e, 0x47, 0x49, 0x7f, 0x5e, 0xd9, 0x48, 0x7c, 0x03, 0xd9, 0xfd, 0x8b, + 0x49, 0xa0, 0x98, 0x26, 0x42, 0x40, 0xeb, 0xd6, 0x92, 0x11, 0xa4, 0x64, + 0x0a, 0x57, 0x54, 0xc4, 0xf5, 0x1d, 0xd6, 0x02, 0x5e, 0x6b, 0xac, 0xee, + 0xc4, 0x80, 0x9a, 0x12, 0x72, 0xfa, 0x56, 0x93, 0xd7, 0xff, 0xbf, 0x30, + 0x85, 0x06, 0x30, 0xbf, 0x0b, 0x7f, 0x4e, 0xff, 0x57, 0x05, 0x9d, 0x24, + 0xed, 0x85, 0xc3, 0x2b, 0xfb, 0xa6, 0x75, 0xa8, 0xac, 0x2d, 0x16, 0xef, + 0x7d, 0x79, 0x27, 0xb2, 0xeb, 0xc2, 0x9d, 0x0b, 0x07, 0xea, 0xaa, 0x85, + 0xd3, 0x01, 0xa3, 0x20, 0x28, 0x41, 0x59, 0x43, 0x28, 0xd2, 0x81, 0xe3, + 0xaa, 0xf6, 0xec, 0x7b, 0x3b, 0x77, 0xb6, 0x40, 0x62, 0x80, 0x05, 0x41, + 0x45, 0x01, 0xef, 0x17, 0x06, 0x3e, 0xde, 0xc0, 0x33, 0x9b, 0x67, 0xd3, + 0x61, 0x2e, 0x72, 0x87, 0xe4, 0x69, 0xfc, 0x12, 0x00, 0x57, 0x40, 0x1e, + 0x70, 0xf5, 0x1e, 0xc9, 0xb4, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 16:87:d6:88:6d:e2:30:06:85:23:3d:bf:11:bf:65:97 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2006 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA + Validity + Not Before: Oct 31 00:00:00 2013 GMT + Not After : Oct 30 23:59:59 2023 GMT + Subject: C=US, O=thawte, Inc., CN=thawte SSL CA - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:b2:fc:06:fb:04:93:d2:ea:59:20:3b:44:85:97: + 52:39:e7:10:f0:7a:e0:b0:94:40:da:46:f8:0c:28: + bb:b9:ce:60:38:3f:d2:d8:11:42:1b:91:ad:49:ee: + 8f:c7:de:6c:de:37:6f:fd:8b:20:3c:6d:e7:74:d3: + dc:d5:24:88:41:80:89:ee:36:be:c4:d5:be:8d:53: + 13:aa:e4:a5:b8:93:0a:be:ec:da:cd:3c:d4:32:56: + ef:d0:4e:a0:b8:97:bb:39:50:1e:6e:65:c3:fd:b2: + ce:e0:59:a9:48:09:c6:fe:be:ae:fc:3e:3b:81:20: + 97:8b:8f:46:df:60:64:07:75:bb:1b:86:38:9f:47: + 7b:34:ce:a1:d1:97:ad:76:d8:9f:b7:26:db:79:80: + 36:48:f2:c5:37:f8:d9:32:ae:7c:a4:53:81:c7:99: + a1:54:38:2f:4f:75:a0:bb:5a:a5:bb:cd:ac:02:5b: + 19:02:d5:13:18:a7:ce:ac:74:55:12:05:8b:9b:a2: + 95:46:64:72:38:cd:5a:1b:3a:16:a7:be:71:99:8c: + 54:03:b8:96:6c:01:d3:3e:06:98:3f:21:81:3b:02: + 7e:00:47:53:01:1e:0e:46:43:fb:4b:2d:dc:0b:1a: + e8:2f:98:f8:7e:d1:99:ab:13:6c:a4:17:de:6f:f6: + 15:f5 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 CRL Distribution Points: + + Full Name: + URI:http://t1.symcb.com/ThawtePCA.crl + + Authority Information Access: + OCSP - URI:http://t2.symcb.com + + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: https://www.thawte.com/cps + + X509v3 Subject Alternative Name: + DirName:/CN=SymantecPKI-1-537 + X509v3 Subject Key Identifier: + C2:4F:48:57:FC:D1:4F:9A:C0:5D:38:7D:0E:05:DB:D9:2E:B5:52:60 + X509v3 Authority Key Identifier: + keyid:7B:5B:45:CF:AF:CE:CB:7A:FD:31:92:1A:6A:B6:F3:46:EB:57:48:50 + + Signature Algorithm: sha256WithRSAEncryption + 8d:06:de:43:c9:76:02:ca:d9:23:97:5e:f3:63:d7:7d:44:c2: + 0f:6b:0a:f5:07:e5:8b:b8:fa:e0:a3:fa:6b:80:92:b5:03:2c: + c5:37:e0:c2:e5:95:b5:92:70:18:28:42:94:ee:4b:77:6a:01: + 0f:8b:23:ec:56:4d:f4:00:69:e5:84:c8:e2:ea:de:5b:3e:f6: + 3c:07:3a:94:ca:6c:27:b1:cc:83:1a:60:71:27:d2:bf:02:f5: + 1e:44:d3:48:d5:a6:d3:76:21:00:9c:fa:98:64:eb:17:36:3f: + eb:1b:3c:3e:a6:b1:d9:58:06:0e:72:d9:68:be:f1:a7:20:d7: + 52:e4:a4:77:1f:71:70:9d:55:35:85:37:e1:1d:4d:94:c2:70: + 7f:95:40:6e:4b:7d:b2:b4:29:2a:03:79:c8:b9:4c:67:61:04: + a0:8b:27:ff:59:00:eb:55:7f:c6:b7:33:35:2d:5e:4e:ac:b8: + ea:12:c5:e8:f7:b9:ab:be:74:92:2c:b7:d9:4d:ca:84:2f:1c: + c2:f0:72:7c:b2:31:6e:cf:80:e5:88:07:36:51:7b:ba:61:af: + 6d:8d:23:5b:34:a3:95:bc:a2:31:7f:f2:f5:e7:b7:e8:ef:c4: + b5:27:32:e9:f7:9e:69:c7:2b:e8:be:bb:0c:aa:e7:ea:60:12: + ea:26:8a:78 +-----BEGIN CERTIFICATE----- +MIIEsjCCA5qgAwIBAgIQFofWiG3iMAaFIz2/Eb9llzANBgkqhkiG9w0BAQsFADCB +qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV +BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMTMxMDMxMDAwMDAwWhcNMjMx +MDMwMjM1OTU5WjBBMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3RlLCBJbmMu +MRswGQYDVQQDExJ0aGF3dGUgU1NMIENBIC0gRzIwggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQCy/Ab7BJPS6lkgO0SFl1I55xDweuCwlEDaRvgMKLu5zmA4 +P9LYEUIbka1J7o/H3mzeN2/9iyA8bed009zVJIhBgInuNr7E1b6NUxOq5KW4kwq+ +7NrNPNQyVu/QTqC4l7s5UB5uZcP9ss7gWalICcb+vq78PjuBIJeLj0bfYGQHdbsb +hjifR3s0zqHRl6122J+3Jtt5gDZI8sU3+NkyrnykU4HHmaFUOC9PdaC7WqW7zawC +WxkC1RMYp86sdFUSBYubopVGZHI4zVobOhanvnGZjFQDuJZsAdM+Bpg/IYE7An4A +R1MBHg5GQ/tLLdwLGugvmPh+0ZmrE2ykF95v9hX1AgMBAAGjggE7MIIBNzASBgNV +HRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAyBgNVHR8EKzApMCegJaAj +hiFodHRwOi8vdDEuc3ltY2IuY29tL1RoYXd0ZVBDQS5jcmwwLwYIKwYBBQUHAQEE +IzAhMB8GCCsGAQUFBzABhhNodHRwOi8vdDIuc3ltY2IuY29tMEEGA1UdIAQ6MDgw +NgYKYIZIAYb4RQEHNjAoMCYGCCsGAQUFBwIBFhpodHRwczovL3d3dy50aGF3dGUu +Y29tL2NwczApBgNVHREEIjAgpB4wHDEaMBgGA1UEAxMRU3ltYW50ZWNQS0ktMS01 +MzcwHQYDVR0OBBYEFMJPSFf80U+awF04fQ4F29kutVJgMB8GA1UdIwQYMBaAFHtb +Rc+vzst6/TGSGmq280brV0hQMA0GCSqGSIb3DQEBCwUAA4IBAQCNBt5DyXYCytkj +l17zY9d9RMIPawr1B+WLuPrgo/prgJK1AyzFN+DC5ZW1knAYKEKU7kt3agEPiyPs +Vk30AGnlhMji6t5bPvY8BzqUymwnscyDGmBxJ9K/AvUeRNNI1abTdiEAnPqYZOsX +Nj/rGzw+prHZWAYOctlovvGnINdS5KR3H3FwnVU1hTfhHU2UwnB/lUBuS32ytCkq +A3nIuUxnYQSgiyf/WQDrVX/GtzM1LV5OrLjqEsXo97mrvnSSLLfZTcqELxzC8HJ8 +sjFuz4DliAc2UXu6Ya9tjSNbNKOVvKIxf/L157fo78S1JzLp955pxyvovrsMqufq +YBLqJop4 +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_30[] = { + 0x30, 0x82, 0x04, 0xb2, 0x30, 0x82, 0x03, 0x9a, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x16, 0x87, 0xd6, 0x88, 0x6d, 0xe2, 0x30, 0x06, 0x85, + 0x23, 0x3d, 0xbf, 0x11, 0xbf, 0x65, 0x97, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, + 0x30, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x41, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x74, + 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, + 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, + 0x01, 0x00, 0xb2, 0xfc, 0x06, 0xfb, 0x04, 0x93, 0xd2, 0xea, 0x59, 0x20, + 0x3b, 0x44, 0x85, 0x97, 0x52, 0x39, 0xe7, 0x10, 0xf0, 0x7a, 0xe0, 0xb0, + 0x94, 0x40, 0xda, 0x46, 0xf8, 0x0c, 0x28, 0xbb, 0xb9, 0xce, 0x60, 0x38, + 0x3f, 0xd2, 0xd8, 0x11, 0x42, 0x1b, 0x91, 0xad, 0x49, 0xee, 0x8f, 0xc7, + 0xde, 0x6c, 0xde, 0x37, 0x6f, 0xfd, 0x8b, 0x20, 0x3c, 0x6d, 0xe7, 0x74, + 0xd3, 0xdc, 0xd5, 0x24, 0x88, 0x41, 0x80, 0x89, 0xee, 0x36, 0xbe, 0xc4, + 0xd5, 0xbe, 0x8d, 0x53, 0x13, 0xaa, 0xe4, 0xa5, 0xb8, 0x93, 0x0a, 0xbe, + 0xec, 0xda, 0xcd, 0x3c, 0xd4, 0x32, 0x56, 0xef, 0xd0, 0x4e, 0xa0, 0xb8, + 0x97, 0xbb, 0x39, 0x50, 0x1e, 0x6e, 0x65, 0xc3, 0xfd, 0xb2, 0xce, 0xe0, + 0x59, 0xa9, 0x48, 0x09, 0xc6, 0xfe, 0xbe, 0xae, 0xfc, 0x3e, 0x3b, 0x81, + 0x20, 0x97, 0x8b, 0x8f, 0x46, 0xdf, 0x60, 0x64, 0x07, 0x75, 0xbb, 0x1b, + 0x86, 0x38, 0x9f, 0x47, 0x7b, 0x34, 0xce, 0xa1, 0xd1, 0x97, 0xad, 0x76, + 0xd8, 0x9f, 0xb7, 0x26, 0xdb, 0x79, 0x80, 0x36, 0x48, 0xf2, 0xc5, 0x37, + 0xf8, 0xd9, 0x32, 0xae, 0x7c, 0xa4, 0x53, 0x81, 0xc7, 0x99, 0xa1, 0x54, + 0x38, 0x2f, 0x4f, 0x75, 0xa0, 0xbb, 0x5a, 0xa5, 0xbb, 0xcd, 0xac, 0x02, + 0x5b, 0x19, 0x02, 0xd5, 0x13, 0x18, 0xa7, 0xce, 0xac, 0x74, 0x55, 0x12, + 0x05, 0x8b, 0x9b, 0xa2, 0x95, 0x46, 0x64, 0x72, 0x38, 0xcd, 0x5a, 0x1b, + 0x3a, 0x16, 0xa7, 0xbe, 0x71, 0x99, 0x8c, 0x54, 0x03, 0xb8, 0x96, 0x6c, + 0x01, 0xd3, 0x3e, 0x06, 0x98, 0x3f, 0x21, 0x81, 0x3b, 0x02, 0x7e, 0x00, + 0x47, 0x53, 0x01, 0x1e, 0x0e, 0x46, 0x43, 0xfb, 0x4b, 0x2d, 0xdc, 0x0b, + 0x1a, 0xe8, 0x2f, 0x98, 0xf8, 0x7e, 0xd1, 0x99, 0xab, 0x13, 0x6c, 0xa4, + 0x17, 0xde, 0x6f, 0xf6, 0x15, 0xf5, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, + 0x82, 0x01, 0x3b, 0x30, 0x82, 0x01, 0x37, 0x30, 0x12, 0x06, 0x03, 0x55, + 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, + 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x32, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30, 0x27, 0xa0, 0x25, 0xa0, 0x23, + 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x74, 0x31, 0x2e, + 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, + 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x74, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3a, 0x30, 0x38, 0x30, + 0x36, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, + 0x36, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x29, 0x06, 0x03, 0x55, + 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, + 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, + 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x35, + 0x33, 0x37, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0xc2, 0x4f, 0x48, 0x57, 0xfc, 0xd1, 0x4f, 0x9a, 0xc0, 0x5d, 0x38, + 0x7d, 0x0e, 0x05, 0xdb, 0xd9, 0x2e, 0xb5, 0x52, 0x60, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7b, 0x5b, + 0x45, 0xcf, 0xaf, 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, 0x6a, 0xb6, + 0xf3, 0x46, 0xeb, 0x57, 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x01, 0x00, 0x8d, 0x06, 0xde, 0x43, 0xc9, 0x76, 0x02, 0xca, 0xd9, 0x23, + 0x97, 0x5e, 0xf3, 0x63, 0xd7, 0x7d, 0x44, 0xc2, 0x0f, 0x6b, 0x0a, 0xf5, + 0x07, 0xe5, 0x8b, 0xb8, 0xfa, 0xe0, 0xa3, 0xfa, 0x6b, 0x80, 0x92, 0xb5, + 0x03, 0x2c, 0xc5, 0x37, 0xe0, 0xc2, 0xe5, 0x95, 0xb5, 0x92, 0x70, 0x18, + 0x28, 0x42, 0x94, 0xee, 0x4b, 0x77, 0x6a, 0x01, 0x0f, 0x8b, 0x23, 0xec, + 0x56, 0x4d, 0xf4, 0x00, 0x69, 0xe5, 0x84, 0xc8, 0xe2, 0xea, 0xde, 0x5b, + 0x3e, 0xf6, 0x3c, 0x07, 0x3a, 0x94, 0xca, 0x6c, 0x27, 0xb1, 0xcc, 0x83, + 0x1a, 0x60, 0x71, 0x27, 0xd2, 0xbf, 0x02, 0xf5, 0x1e, 0x44, 0xd3, 0x48, + 0xd5, 0xa6, 0xd3, 0x76, 0x21, 0x00, 0x9c, 0xfa, 0x98, 0x64, 0xeb, 0x17, + 0x36, 0x3f, 0xeb, 0x1b, 0x3c, 0x3e, 0xa6, 0xb1, 0xd9, 0x58, 0x06, 0x0e, + 0x72, 0xd9, 0x68, 0xbe, 0xf1, 0xa7, 0x20, 0xd7, 0x52, 0xe4, 0xa4, 0x77, + 0x1f, 0x71, 0x70, 0x9d, 0x55, 0x35, 0x85, 0x37, 0xe1, 0x1d, 0x4d, 0x94, + 0xc2, 0x70, 0x7f, 0x95, 0x40, 0x6e, 0x4b, 0x7d, 0xb2, 0xb4, 0x29, 0x2a, + 0x03, 0x79, 0xc8, 0xb9, 0x4c, 0x67, 0x61, 0x04, 0xa0, 0x8b, 0x27, 0xff, + 0x59, 0x00, 0xeb, 0x55, 0x7f, 0xc6, 0xb7, 0x33, 0x35, 0x2d, 0x5e, 0x4e, + 0xac, 0xb8, 0xea, 0x12, 0xc5, 0xe8, 0xf7, 0xb9, 0xab, 0xbe, 0x74, 0x92, + 0x2c, 0xb7, 0xd9, 0x4d, 0xca, 0x84, 0x2f, 0x1c, 0xc2, 0xf0, 0x72, 0x7c, + 0xb2, 0x31, 0x6e, 0xcf, 0x80, 0xe5, 0x88, 0x07, 0x36, 0x51, 0x7b, 0xba, + 0x61, 0xaf, 0x6d, 0x8d, 0x23, 0x5b, 0x34, 0xa3, 0x95, 0xbc, 0xa2, 0x31, + 0x7f, 0xf2, 0xf5, 0xe7, 0xb7, 0xe8, 0xef, 0xc4, 0xb5, 0x27, 0x32, 0xe9, + 0xf7, 0x9e, 0x69, 0xc7, 0x2b, 0xe8, 0xbe, 0xbb, 0x0c, 0xaa, 0xe7, 0xea, + 0x60, 0x12, 0xea, 0x26, 0x8a, 0x78, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 93:92:85:40:01:65:71:5f:94:7f:28:8f:ef:c9:9b:28 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=PL, O=Unizeto Sp. z o.o., CN=Certum CA + Validity + Not Before: Oct 22 12:07:37 2008 GMT + Not After : Jun 10 10:46:39 2027 GMT + Subject: C=PL, O=Unizeto Technologies S.A., OU=Certum Certification Authority, CN=Certum Trusted Network CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:e3:fb:7d:a3:72:ba:c2:f0:c9:14:87:f5:6b:01: + 4e:e1:6e:40:07:ba:6d:27:5d:7f:f7:5b:2d:b3:5a: + c7:51:5f:ab:a4:32:a6:61:87:b6:6e:0f:86:d2:30: + 02:97:f8:d7:69:57:a1:18:39:5d:6a:64:79:c6:01: + 59:ac:3c:31:4a:38:7c:d2:04:d2:4b:28:e8:20:5f: + 3b:07:a2:cc:4d:73:db:f3:ae:4f:c7:56:d5:5a:a7: + 96:89:fa:f3:ab:68:d4:23:86:59:27:cf:09:27:bc: + ac:6e:72:83:1c:30:72:df:e0:a2:e9:d2:e1:74:75: + 19:bd:2a:9e:7b:15:54:04:1b:d7:43:39:ad:55:28: + c5:e2:1a:bb:f4:c0:e4:ae:38:49:33:cc:76:85:9f: + 39:45:d2:a4:9e:f2:12:8c:51:f8:7c:e4:2d:7f:f5: + ac:5f:eb:16:9f:b1:2d:d1:ba:cc:91:42:77:4c:25: + c9:90:38:6f:db:f0:cc:fb:8e:1e:97:59:3e:d5:60: + 4e:e6:05:28:ed:49:79:13:4b:ba:48:db:2f:f9:72: + d3:39:ca:fe:1f:d8:34:72:f5:b4:40:cf:31:01:c3: + ec:de:11:2d:17:5d:1f:b8:50:d1:5e:19:a7:69:de: + 07:33:28:ca:50:95:f9:a7:54:cb:54:86:50:45:a9: + f9:49 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Subject Key Identifier: + 08:76:CD:CB:07:FF:24:F6:C5:CD:ED:BB:90:BC:E2:84:37:46:75:F7 + X509v3 Authority Key Identifier: + DirName:/C=PL/O=Unizeto Sp. z o.o./CN=Certum CA + serial:01:00:20 + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.certum.pl/ca.crl + + Authority Information Access: + OCSP - URI:http://subca.ocsp-certum.com + CA Issuers - URI:http://repository.certum.pl/ca.cer + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: http://www.certum.pl/CPS + + Signature Algorithm: sha256WithRSAEncryption + 8d:e6:fd:40:66:a3:4c:9c:a7:ab:a1:da:84:dd:1c:30:07:e6: + db:c7:2d:ec:83:a1:56:e4:1d:3c:26:a1:a5:09:2b:e8:7d:62: + be:b2:75:94:dd:08:f2:7f:28:41:e4:80:67:02:4e:8a:8f:c3: + 35:d0:d5:a9:27:28:ea:d2:f4:ab:06:86:43:ae:8c:e3:f9:88: + 7d:e0:db:bd:42:81:80:02:12:75:b2:e8:17:71:ab:21:95:31: + 46:42:0d:88:10:39:d3:6f:ec:2f:42:ea:40:53:62:bf:eb:ca: + 78:9e:ab:a2:d5:2e:05:ea:33:ab:e9:d6:97:94:42:5e:04:ed: + 2c:ed:6a:9c:7a:95:7d:05:2a:05:7f:08:5d:66:ad:61:d4:76: + ac:75:96:97:73:63:bd:1a:41:59:29:a5:5e:22:83:c3:8b:59: + fa:9a:a2:f6:bd:30:bf:72:1d:1c:99:86:9c:f2:85:3c:1d:f7: + 26:96:2f:2e:f9:02:b1:b5:a9:50:e8:38:fa:9b:0a:5e:b4:04: + c0:ce:4e:39:2c:ca:0b:5b:62:f0:4d:58:50:34:99:e6:9a:2c: + d2:90:d7:09:81:d6:c0:aa:5e:ce:fe:d2:f7:a1:ba:4b:d9:d6: + 86:8e:19:1f:a6:06:47:42:72:e0:56:0a:00:1c:78:b9:8d:cc: + 99:04:37:49 +-----BEGIN CERTIFICATE----- +MIIEtDCCA5ygAwIBAgIRAJOShUABZXFflH8oj+/JmygwDQYJKoZIhvcNAQELBQAw +PjELMAkGA1UEBhMCUEwxGzAZBgNVBAoTElVuaXpldG8gU3AuIHogby5vLjESMBAG +A1UEAxMJQ2VydHVtIENBMB4XDTA4MTAyMjEyMDczN1oXDTI3MDYxMDEwNDYzOVow +fjELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu +QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEiMCAG +A1UEAxMZQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQTCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAOP7faNyusLwyRSH9WsBTuFuQAe6bSddf/dbLbNax1Ff +q6QypmGHtm4PhtIwApf412lXoRg5XWpkecYBWaw8MUo4fNIE0kso6CBfOweizE1z +2/OuT8dW1Vqnlon686to1COGWSfPCSe8rG5ygxwwct/gounS4XR1Gb0qnnsVVAQb +10M5rVUoxeIau/TA5K44STPMdoWfOUXSpJ7yEoxR+HzkLX/1rF/rFp+xLdG6zJFC +d0wlyZA4b9vwzPuOHpdZPtVgTuYFKO1JeRNLukjbL/ly0znK/h/YNHL1tEDPMQHD +7N4RLRddH7hQ0V4Zp2neBzMoylCV+adUy1SGUEWp+UkCAwEAAaOCAWswggFnMA8G +A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFAh2zcsH/yT2xc3tu5C84oQ3RnX3MFIG +A1UdIwRLMEmhQqRAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNw +LiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQYIDAQAgMA4GA1UdDwEB/wQEAwIB +BjAsBgNVHR8EJTAjMCGgH6AdhhtodHRwOi8vY3JsLmNlcnR1bS5wbC9jYS5jcmww +aAYIKwYBBQUHAQEEXDBaMCgGCCsGAQUFBzABhhxodHRwOi8vc3ViY2Eub2NzcC1j +ZXJ0dW0uY29tMC4GCCsGAQUFBzAChiJodHRwOi8vcmVwb3NpdG9yeS5jZXJ0dW0u +cGwvY2EuY2VyMDkGA1UdIAQyMDAwLgYEVR0gADAmMCQGCCsGAQUFBwIBFhhodHRw +Oi8vd3d3LmNlcnR1bS5wbC9DUFMwDQYJKoZIhvcNAQELBQADggEBAI3m/UBmo0yc +p6uh2oTdHDAH5tvHLeyDoVbkHTwmoaUJK+h9Yr6ydZTdCPJ/KEHkgGcCToqPwzXQ +1aknKOrS9KsGhkOujOP5iH3g271CgYACEnWy6BdxqyGVMUZCDYgQOdNv7C9C6kBT +Yr/rynieq6LVLgXqM6vp1peUQl4E7Sztapx6lX0FKgV/CF1mrWHUdqx1lpdzY70a +QVkppV4ig8OLWfqaova9ML9yHRyZhpzyhTwd9yaWLy75ArG1qVDoOPqbCl60BMDO +TjksygtbYvBNWFA0meaaLNKQ1wmB1sCqXs7+0vehukvZ1oaOGR+mBkdCcuBWCgAc +eLmNzJkEN0k= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_31[] = { + 0x30, 0x82, 0x04, 0xb4, 0x30, 0x82, 0x03, 0x9c, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x11, 0x00, 0x93, 0x92, 0x85, 0x40, 0x01, 0x65, 0x71, 0x5f, + 0x94, 0x7f, 0x28, 0x8f, 0xef, 0xc9, 0x9b, 0x28, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, + 0x3e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x50, 0x4c, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x12, 0x55, 0x6e, 0x69, 0x7a, 0x65, 0x74, 0x6f, 0x20, 0x53, 0x70, 0x2e, + 0x20, 0x7a, 0x20, 0x6f, 0x2e, 0x6f, 0x2e, 0x31, 0x12, 0x30, 0x10, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x09, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6d, + 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x38, 0x31, 0x30, 0x32, + 0x32, 0x31, 0x32, 0x30, 0x37, 0x33, 0x37, 0x5a, 0x17, 0x0d, 0x32, 0x37, + 0x30, 0x36, 0x31, 0x30, 0x31, 0x30, 0x34, 0x36, 0x33, 0x39, 0x5a, 0x30, + 0x7e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x50, 0x4c, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x19, 0x55, 0x6e, 0x69, 0x7a, 0x65, 0x74, 0x6f, 0x20, 0x54, 0x65, 0x63, + 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x20, 0x53, 0x2e, + 0x41, 0x2e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x1e, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6d, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x22, 0x30, 0x20, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6d, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x20, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, + 0x82, 0x01, 0x01, 0x00, 0xe3, 0xfb, 0x7d, 0xa3, 0x72, 0xba, 0xc2, 0xf0, + 0xc9, 0x14, 0x87, 0xf5, 0x6b, 0x01, 0x4e, 0xe1, 0x6e, 0x40, 0x07, 0xba, + 0x6d, 0x27, 0x5d, 0x7f, 0xf7, 0x5b, 0x2d, 0xb3, 0x5a, 0xc7, 0x51, 0x5f, + 0xab, 0xa4, 0x32, 0xa6, 0x61, 0x87, 0xb6, 0x6e, 0x0f, 0x86, 0xd2, 0x30, + 0x02, 0x97, 0xf8, 0xd7, 0x69, 0x57, 0xa1, 0x18, 0x39, 0x5d, 0x6a, 0x64, + 0x79, 0xc6, 0x01, 0x59, 0xac, 0x3c, 0x31, 0x4a, 0x38, 0x7c, 0xd2, 0x04, + 0xd2, 0x4b, 0x28, 0xe8, 0x20, 0x5f, 0x3b, 0x07, 0xa2, 0xcc, 0x4d, 0x73, + 0xdb, 0xf3, 0xae, 0x4f, 0xc7, 0x56, 0xd5, 0x5a, 0xa7, 0x96, 0x89, 0xfa, + 0xf3, 0xab, 0x68, 0xd4, 0x23, 0x86, 0x59, 0x27, 0xcf, 0x09, 0x27, 0xbc, + 0xac, 0x6e, 0x72, 0x83, 0x1c, 0x30, 0x72, 0xdf, 0xe0, 0xa2, 0xe9, 0xd2, + 0xe1, 0x74, 0x75, 0x19, 0xbd, 0x2a, 0x9e, 0x7b, 0x15, 0x54, 0x04, 0x1b, + 0xd7, 0x43, 0x39, 0xad, 0x55, 0x28, 0xc5, 0xe2, 0x1a, 0xbb, 0xf4, 0xc0, + 0xe4, 0xae, 0x38, 0x49, 0x33, 0xcc, 0x76, 0x85, 0x9f, 0x39, 0x45, 0xd2, + 0xa4, 0x9e, 0xf2, 0x12, 0x8c, 0x51, 0xf8, 0x7c, 0xe4, 0x2d, 0x7f, 0xf5, + 0xac, 0x5f, 0xeb, 0x16, 0x9f, 0xb1, 0x2d, 0xd1, 0xba, 0xcc, 0x91, 0x42, + 0x77, 0x4c, 0x25, 0xc9, 0x90, 0x38, 0x6f, 0xdb, 0xf0, 0xcc, 0xfb, 0x8e, + 0x1e, 0x97, 0x59, 0x3e, 0xd5, 0x60, 0x4e, 0xe6, 0x05, 0x28, 0xed, 0x49, + 0x79, 0x13, 0x4b, 0xba, 0x48, 0xdb, 0x2f, 0xf9, 0x72, 0xd3, 0x39, 0xca, + 0xfe, 0x1f, 0xd8, 0x34, 0x72, 0xf5, 0xb4, 0x40, 0xcf, 0x31, 0x01, 0xc3, + 0xec, 0xde, 0x11, 0x2d, 0x17, 0x5d, 0x1f, 0xb8, 0x50, 0xd1, 0x5e, 0x19, + 0xa7, 0x69, 0xde, 0x07, 0x33, 0x28, 0xca, 0x50, 0x95, 0xf9, 0xa7, 0x54, + 0xcb, 0x54, 0x86, 0x50, 0x45, 0xa9, 0xf9, 0x49, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xa3, 0x82, 0x01, 0x6b, 0x30, 0x82, 0x01, 0x67, 0x30, 0x0f, 0x06, + 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, + 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0x08, 0x76, 0xcd, 0xcb, 0x07, 0xff, 0x24, 0xf6, 0xc5, 0xcd, 0xed, + 0xbb, 0x90, 0xbc, 0xe2, 0x84, 0x37, 0x46, 0x75, 0xf7, 0x30, 0x52, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x4b, 0x30, 0x49, 0xa1, 0x42, 0xa4, 0x40, + 0x30, 0x3e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x50, 0x4c, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x12, 0x55, 0x6e, 0x69, 0x7a, 0x65, 0x74, 0x6f, 0x20, 0x53, 0x70, + 0x2e, 0x20, 0x7a, 0x20, 0x6f, 0x2e, 0x6f, 0x2e, 0x31, 0x12, 0x30, 0x10, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x09, 0x43, 0x65, 0x72, 0x74, 0x75, + 0x6d, 0x20, 0x43, 0x41, 0x82, 0x03, 0x01, 0x00, 0x20, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, + 0x06, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x25, 0x30, 0x23, + 0x30, 0x21, 0xa0, 0x1f, 0xa0, 0x1d, 0x86, 0x1b, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x75, + 0x6d, 0x2e, 0x70, 0x6c, 0x2f, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x68, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x5c, 0x30, 0x5a, 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x73, 0x75, 0x62, 0x63, 0x61, 0x2e, 0x6f, 0x63, 0x73, 0x70, 0x2d, 0x63, + 0x65, 0x72, 0x74, 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x2e, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x22, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x75, 0x6d, 0x2e, + 0x70, 0x6c, 0x2f, 0x63, 0x61, 0x2e, 0x63, 0x65, 0x72, 0x30, 0x39, 0x06, + 0x03, 0x55, 0x1d, 0x20, 0x04, 0x32, 0x30, 0x30, 0x30, 0x2e, 0x06, 0x04, + 0x55, 0x1d, 0x20, 0x00, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x18, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x75, + 0x6d, 0x2e, 0x70, 0x6c, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x8d, 0xe6, 0xfd, 0x40, 0x66, 0xa3, 0x4c, 0x9c, + 0xa7, 0xab, 0xa1, 0xda, 0x84, 0xdd, 0x1c, 0x30, 0x07, 0xe6, 0xdb, 0xc7, + 0x2d, 0xec, 0x83, 0xa1, 0x56, 0xe4, 0x1d, 0x3c, 0x26, 0xa1, 0xa5, 0x09, + 0x2b, 0xe8, 0x7d, 0x62, 0xbe, 0xb2, 0x75, 0x94, 0xdd, 0x08, 0xf2, 0x7f, + 0x28, 0x41, 0xe4, 0x80, 0x67, 0x02, 0x4e, 0x8a, 0x8f, 0xc3, 0x35, 0xd0, + 0xd5, 0xa9, 0x27, 0x28, 0xea, 0xd2, 0xf4, 0xab, 0x06, 0x86, 0x43, 0xae, + 0x8c, 0xe3, 0xf9, 0x88, 0x7d, 0xe0, 0xdb, 0xbd, 0x42, 0x81, 0x80, 0x02, + 0x12, 0x75, 0xb2, 0xe8, 0x17, 0x71, 0xab, 0x21, 0x95, 0x31, 0x46, 0x42, + 0x0d, 0x88, 0x10, 0x39, 0xd3, 0x6f, 0xec, 0x2f, 0x42, 0xea, 0x40, 0x53, + 0x62, 0xbf, 0xeb, 0xca, 0x78, 0x9e, 0xab, 0xa2, 0xd5, 0x2e, 0x05, 0xea, + 0x33, 0xab, 0xe9, 0xd6, 0x97, 0x94, 0x42, 0x5e, 0x04, 0xed, 0x2c, 0xed, + 0x6a, 0x9c, 0x7a, 0x95, 0x7d, 0x05, 0x2a, 0x05, 0x7f, 0x08, 0x5d, 0x66, + 0xad, 0x61, 0xd4, 0x76, 0xac, 0x75, 0x96, 0x97, 0x73, 0x63, 0xbd, 0x1a, + 0x41, 0x59, 0x29, 0xa5, 0x5e, 0x22, 0x83, 0xc3, 0x8b, 0x59, 0xfa, 0x9a, + 0xa2, 0xf6, 0xbd, 0x30, 0xbf, 0x72, 0x1d, 0x1c, 0x99, 0x86, 0x9c, 0xf2, + 0x85, 0x3c, 0x1d, 0xf7, 0x26, 0x96, 0x2f, 0x2e, 0xf9, 0x02, 0xb1, 0xb5, + 0xa9, 0x50, 0xe8, 0x38, 0xfa, 0x9b, 0x0a, 0x5e, 0xb4, 0x04, 0xc0, 0xce, + 0x4e, 0x39, 0x2c, 0xca, 0x0b, 0x5b, 0x62, 0xf0, 0x4d, 0x58, 0x50, 0x34, + 0x99, 0xe6, 0x9a, 0x2c, 0xd2, 0x90, 0xd7, 0x09, 0x81, 0xd6, 0xc0, 0xaa, + 0x5e, 0xce, 0xfe, 0xd2, 0xf7, 0xa1, 0xba, 0x4b, 0xd9, 0xd6, 0x86, 0x8e, + 0x19, 0x1f, 0xa6, 0x06, 0x47, 0x42, 0x72, 0xe0, 0x56, 0x0a, 0x00, 0x1c, + 0x78, 0xb9, 0x8d, 0xcc, 0x99, 0x04, 0x37, 0x49, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 48:e9:94:40:d4:36:49:1c:b8:b8:82:3d:09:43:94:c7 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., OU=(c) 2008 GeoTrust Inc. - For authorized use only, CN=GeoTrust Primary Certification Authority - G3 + Validity + Not Before: Jun 10 00:00:00 2014 GMT + Not After : Jun 9 23:59:59 2024 GMT + Subject: C=US, O=GeoTrust Inc., CN=RapidSSL SHA256 CA - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:c4:95:63:28:d0:4e:30:45:af:8b:97:34:14:45: + f8:5c:58:4a:fa:33:8e:6e:9c:60:ab:f3:86:ff:34: + 74:b2:2b:be:a1:8c:d5:a2:a3:60:7a:40:b9:e1:fc: + 22:ca:67:ba:60:aa:c7:9a:f9:06:7f:ee:f7:ba:85: + 05:b0:03:ff:72:ae:15:41:4a:98:64:d7:17:4b:54: + ef:05:c6:98:07:93:27:3e:4f:dc:0f:c6:7b:8b:e7: + f3:06:5e:8d:e8:b4:ae:29:b4:1e:1e:2d:16:90:d3: + ea:aa:e7:8c:3b:6d:af:36:59:ff:c5:0a:fa:c7:4c: + bd:36:8b:64:c4:4a:f5:ce:33:f9:07:be:7f:45:90: + a8:08:14:b0:d0:a5:4f:df:82:80:da:1b:ee:c3:13: + b0:98:f5:0f:f9:7e:76:b5:e6:b9:5d:68:b9:5c:50: + 90:89:a4:36:b1:70:16:ea:b1:10:b5:6a:76:df:e1: + bb:fc:78:f2:72:99:cf:c9:a2:d4:73:54:77:bf:c0: + 39:77:e5:ae:12:c5:78:5a:19:45:d4:41:19:d3:7c: + f5:6f:99:6b:d7:8b:bc:2d:09:9d:4b:10:61:c0:da: + 52:c3:af:22:43:c6:eb:37:7e:63:74:30:0d:6a:71: + 8e:de:5d:5b:8a:c8:c5:d7:9b:29:e8:ae:b6:25:61: + 81:eb + Exponent: 65537 (0x10001) + X509v3 extensions: + Authority Information Access: + OCSP - URI:http://g.symcd.com + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: http://www.geotrust.com/resources/cps + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://g.symcb.com/GeoTrustPCA-G3.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Alternative Name: + DirName:/CN=SymantecPKI-1-697 + X509v3 Subject Key Identifier: + 4C:F4:BF:E8:3B:BE:C2:24:F3:1B:47:3B:B5:6E:48:8E:16:AB:AF:12 + X509v3 Authority Key Identifier: + keyid:C4:79:CA:8E:A1:4E:03:1D:1C:DC:6B:DB:31:5B:94:3E:3F:30:7F:2D + + Signature Algorithm: sha256WithRSAEncryption + 7a:53:b5:de:b6:ef:52:a3:5f:8a:f5:89:f1:42:cc:5e:46:88: + ae:a5:08:87:51:de:0f:0f:02:eb:0c:82:78:e3:73:7d:71:bd: + 43:e9:ca:8a:3f:e0:25:92:9b:33:33:74:49:5e:00:d9:73:14: + 1c:0b:46:76:1c:8a:0d:4d:8c:6c:7e:4b:f7:60:d8:81:78:a0: + 78:d0:25:62:ab:10:ca:22:e8:1c:19:dd:52:83:64:05:e5:87: + 66:ae:e7:7a:a4:3b:3e:d8:70:7a:76:a2:67:39:d4:c9:fa:e5: + b7:1e:41:e2:09:39:88:1c:18:55:0a:c4:41:af:b2:f3:f3:0f: + 42:14:61:74:81:e3:da:87:5a:9a:4d:8b:d3:c9:8f:89:66:13: + 29:11:e4:ff:e2:df:8e:96:0c:5a:a1:aa:6b:9b:fd:fc:03:3b: + 55:0d:a6:a2:25:48:17:1f:42:a8:da:6c:7e:69:6e:a0:df:67: + d2:6d:f4:0e:6a:12:79:f5:7c:c8:a5:32:1c:c4:31:b2:e6:bb: + a8:6b:6a:a2:8a:60:69:c0:57:7d:b2:f2:31:0c:98:65:32:ec: + 08:5a:ce:c6:98:e9:21:97:3f:2c:79:29:03:f5:f6:94:2b:53: + 31:f3:93:68:57:e1:d7:4f:3a:d1:61:a1:60:ce:b9:ab:98:ae: + 35:54:63:8b +-----BEGIN CERTIFICATE----- +MIIEtTCCA52gAwIBAgIQSOmUQNQ2SRy4uII9CUOUxzANBgkqhkiG9w0BAQsFADCB +mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT +MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eSAtIEczMB4XDTE0MDYxMDAwMDAwMFoXDTI0MDYwOTIzNTk1OVowRzELMAkG +A1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xIDAeBgNVBAMTF1JhcGlk +U1NMIFNIQTI1NiBDQSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAxJVjKNBOMEWvi5c0FEX4XFhK+jOObpxgq/OG/zR0siu+oYzVoqNgekC54fwi +yme6YKrHmvkGf+73uoUFsAP/cq4VQUqYZNcXS1TvBcaYB5MnPk/cD8Z7i+fzBl6N +6LSuKbQeHi0WkNPqqueMO22vNln/xQr6x0y9NotkxEr1zjP5B75/RZCoCBSw0KVP +34KA2hvuwxOwmPUP+X52tea5XWi5XFCQiaQ2sXAW6rEQtWp23+G7/HjycpnPyaLU +c1R3v8A5d+WuEsV4WhlF1EEZ03z1b5lr14u8LQmdSxBhwNpSw68iQ8brN35jdDAN +anGO3l1bisjF15sp6K62JWGB6wIDAQABo4IBSTCCAUUwLgYIKwYBBQUHAQEEIjAg +MB4GCCsGAQUFBzABhhJodHRwOi8vZy5zeW1jZC5jb20wEgYDVR0TAQH/BAgwBgEB +/wIBADBMBgNVHSAERTBDMEEGCmCGSAGG+EUBBzYwMzAxBggrBgEFBQcCARYlaHR0 +cDovL3d3dy5nZW90cnVzdC5jb20vcmVzb3VyY2VzL2NwczA2BgNVHR8ELzAtMCug +KaAnhiVodHRwOi8vZy5zeW1jYi5jb20vR2VvVHJ1c3RQQ0EtRzMuY3JsMA4GA1Ud +DwEB/wQEAwIBBjApBgNVHREEIjAgpB4wHDEaMBgGA1UEAxMRU3ltYW50ZWNQS0kt +MS02OTcwHQYDVR0OBBYEFEz0v+g7vsIk8xtHO7VuSI4Wq68SMB8GA1UdIwQYMBaA +FMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQB6U7Xetu9S +o1+K9YnxQsxeRoiupQiHUd4PDwLrDIJ443N9cb1D6cqKP+AlkpszM3RJXgDZcxQc +C0Z2HIoNTYxsfkv3YNiBeKB40CViqxDKIugcGd1Sg2QF5Ydmrud6pDs+2HB6dqJn +OdTJ+uW3HkHiCTmIHBhVCsRBr7Lz8w9CFGF0gePah1qaTYvTyY+JZhMpEeT/4t+O +lgxaoaprm/38AztVDaaiJUgXH0Ko2mx+aW6g32fSbfQOahJ59XzIpTIcxDGy5ruo +a2qiimBpwFd9svIxDJhlMuwIWs7GmOkhlz8seSkD9faUK1Mx85NoV+HXTzrRYaFg +zrmrmK41VGOL +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_32[] = { + 0x30, 0x82, 0x04, 0xb5, 0x30, 0x82, 0x03, 0x9d, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x48, 0xe9, 0x94, 0x40, 0xd4, 0x36, 0x49, 0x1c, 0xb8, + 0xb8, 0x82, 0x3d, 0x09, 0x43, 0x94, 0xc7, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0x98, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x38, 0x20, 0x47, 0x65, + 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, + 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, + 0x79, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x34, 0x30, 0x36, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x36, 0x30, 0x39, 0x32, 0x33, + 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x52, 0x61, 0x70, 0x69, 0x64, + 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43, + 0x41, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, + 0x01, 0x01, 0x00, 0xc4, 0x95, 0x63, 0x28, 0xd0, 0x4e, 0x30, 0x45, 0xaf, + 0x8b, 0x97, 0x34, 0x14, 0x45, 0xf8, 0x5c, 0x58, 0x4a, 0xfa, 0x33, 0x8e, + 0x6e, 0x9c, 0x60, 0xab, 0xf3, 0x86, 0xff, 0x34, 0x74, 0xb2, 0x2b, 0xbe, + 0xa1, 0x8c, 0xd5, 0xa2, 0xa3, 0x60, 0x7a, 0x40, 0xb9, 0xe1, 0xfc, 0x22, + 0xca, 0x67, 0xba, 0x60, 0xaa, 0xc7, 0x9a, 0xf9, 0x06, 0x7f, 0xee, 0xf7, + 0xba, 0x85, 0x05, 0xb0, 0x03, 0xff, 0x72, 0xae, 0x15, 0x41, 0x4a, 0x98, + 0x64, 0xd7, 0x17, 0x4b, 0x54, 0xef, 0x05, 0xc6, 0x98, 0x07, 0x93, 0x27, + 0x3e, 0x4f, 0xdc, 0x0f, 0xc6, 0x7b, 0x8b, 0xe7, 0xf3, 0x06, 0x5e, 0x8d, + 0xe8, 0xb4, 0xae, 0x29, 0xb4, 0x1e, 0x1e, 0x2d, 0x16, 0x90, 0xd3, 0xea, + 0xaa, 0xe7, 0x8c, 0x3b, 0x6d, 0xaf, 0x36, 0x59, 0xff, 0xc5, 0x0a, 0xfa, + 0xc7, 0x4c, 0xbd, 0x36, 0x8b, 0x64, 0xc4, 0x4a, 0xf5, 0xce, 0x33, 0xf9, + 0x07, 0xbe, 0x7f, 0x45, 0x90, 0xa8, 0x08, 0x14, 0xb0, 0xd0, 0xa5, 0x4f, + 0xdf, 0x82, 0x80, 0xda, 0x1b, 0xee, 0xc3, 0x13, 0xb0, 0x98, 0xf5, 0x0f, + 0xf9, 0x7e, 0x76, 0xb5, 0xe6, 0xb9, 0x5d, 0x68, 0xb9, 0x5c, 0x50, 0x90, + 0x89, 0xa4, 0x36, 0xb1, 0x70, 0x16, 0xea, 0xb1, 0x10, 0xb5, 0x6a, 0x76, + 0xdf, 0xe1, 0xbb, 0xfc, 0x78, 0xf2, 0x72, 0x99, 0xcf, 0xc9, 0xa2, 0xd4, + 0x73, 0x54, 0x77, 0xbf, 0xc0, 0x39, 0x77, 0xe5, 0xae, 0x12, 0xc5, 0x78, + 0x5a, 0x19, 0x45, 0xd4, 0x41, 0x19, 0xd3, 0x7c, 0xf5, 0x6f, 0x99, 0x6b, + 0xd7, 0x8b, 0xbc, 0x2d, 0x09, 0x9d, 0x4b, 0x10, 0x61, 0xc0, 0xda, 0x52, + 0xc3, 0xaf, 0x22, 0x43, 0xc6, 0xeb, 0x37, 0x7e, 0x63, 0x74, 0x30, 0x0d, + 0x6a, 0x71, 0x8e, 0xde, 0x5d, 0x5b, 0x8a, 0xc8, 0xc5, 0xd7, 0x9b, 0x29, + 0xe8, 0xae, 0xb6, 0x25, 0x61, 0x81, 0xeb, 0x02, 0x03, 0x01, 0x00, 0x01, + 0xa3, 0x82, 0x01, 0x49, 0x30, 0x82, 0x01, 0x45, 0x30, 0x2e, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x22, 0x30, 0x20, + 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, + 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, + 0xff, 0x02, 0x01, 0x00, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, + 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x36, + 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2f, 0x30, 0x2d, 0x30, 0x2b, 0xa0, + 0x29, 0xa0, 0x27, 0x86, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x50, 0x43, 0x41, 0x2d, + 0x47, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x29, + 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, + 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, + 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, + 0x31, 0x2d, 0x36, 0x39, 0x37, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, + 0x04, 0x16, 0x04, 0x14, 0x4c, 0xf4, 0xbf, 0xe8, 0x3b, 0xbe, 0xc2, 0x24, + 0xf3, 0x1b, 0x47, 0x3b, 0xb5, 0x6e, 0x48, 0x8e, 0x16, 0xab, 0xaf, 0x12, + 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, + 0x14, 0xc4, 0x79, 0xca, 0x8e, 0xa1, 0x4e, 0x03, 0x1d, 0x1c, 0xdc, 0x6b, + 0xdb, 0x31, 0x5b, 0x94, 0x3e, 0x3f, 0x30, 0x7f, 0x2d, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x01, 0x00, 0x7a, 0x53, 0xb5, 0xde, 0xb6, 0xef, 0x52, + 0xa3, 0x5f, 0x8a, 0xf5, 0x89, 0xf1, 0x42, 0xcc, 0x5e, 0x46, 0x88, 0xae, + 0xa5, 0x08, 0x87, 0x51, 0xde, 0x0f, 0x0f, 0x02, 0xeb, 0x0c, 0x82, 0x78, + 0xe3, 0x73, 0x7d, 0x71, 0xbd, 0x43, 0xe9, 0xca, 0x8a, 0x3f, 0xe0, 0x25, + 0x92, 0x9b, 0x33, 0x33, 0x74, 0x49, 0x5e, 0x00, 0xd9, 0x73, 0x14, 0x1c, + 0x0b, 0x46, 0x76, 0x1c, 0x8a, 0x0d, 0x4d, 0x8c, 0x6c, 0x7e, 0x4b, 0xf7, + 0x60, 0xd8, 0x81, 0x78, 0xa0, 0x78, 0xd0, 0x25, 0x62, 0xab, 0x10, 0xca, + 0x22, 0xe8, 0x1c, 0x19, 0xdd, 0x52, 0x83, 0x64, 0x05, 0xe5, 0x87, 0x66, + 0xae, 0xe7, 0x7a, 0xa4, 0x3b, 0x3e, 0xd8, 0x70, 0x7a, 0x76, 0xa2, 0x67, + 0x39, 0xd4, 0xc9, 0xfa, 0xe5, 0xb7, 0x1e, 0x41, 0xe2, 0x09, 0x39, 0x88, + 0x1c, 0x18, 0x55, 0x0a, 0xc4, 0x41, 0xaf, 0xb2, 0xf3, 0xf3, 0x0f, 0x42, + 0x14, 0x61, 0x74, 0x81, 0xe3, 0xda, 0x87, 0x5a, 0x9a, 0x4d, 0x8b, 0xd3, + 0xc9, 0x8f, 0x89, 0x66, 0x13, 0x29, 0x11, 0xe4, 0xff, 0xe2, 0xdf, 0x8e, + 0x96, 0x0c, 0x5a, 0xa1, 0xaa, 0x6b, 0x9b, 0xfd, 0xfc, 0x03, 0x3b, 0x55, + 0x0d, 0xa6, 0xa2, 0x25, 0x48, 0x17, 0x1f, 0x42, 0xa8, 0xda, 0x6c, 0x7e, + 0x69, 0x6e, 0xa0, 0xdf, 0x67, 0xd2, 0x6d, 0xf4, 0x0e, 0x6a, 0x12, 0x79, + 0xf5, 0x7c, 0xc8, 0xa5, 0x32, 0x1c, 0xc4, 0x31, 0xb2, 0xe6, 0xbb, 0xa8, + 0x6b, 0x6a, 0xa2, 0x8a, 0x60, 0x69, 0xc0, 0x57, 0x7d, 0xb2, 0xf2, 0x31, + 0x0c, 0x98, 0x65, 0x32, 0xec, 0x08, 0x5a, 0xce, 0xc6, 0x98, 0xe9, 0x21, + 0x97, 0x3f, 0x2c, 0x79, 0x29, 0x03, 0xf5, 0xf6, 0x94, 0x2b, 0x53, 0x31, + 0xf3, 0x93, 0x68, 0x57, 0xe1, 0xd7, 0x4f, 0x3a, 0xd1, 0x61, 0xa1, 0x60, + 0xce, 0xb9, 0xab, 0x98, 0xae, 0x35, 0x54, 0x63, 0x8b, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 0c:79:a9:44:b0:8c:11:95:20:92:61:5f:e2:6b:1d:83 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert High Assurance EV Root CA + Validity + Not Before: Oct 22 12:00:00 2013 GMT + Not After : Oct 22 12:00:00 2028 GMT + Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 Extended Validation Server CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:d7:53:a4:04:51:f8:99:a6:16:48:4b:67:27:aa: + 93:49:d0:39:ed:0c:b0:b0:00:87:f1:67:28:86:85: + 8c:8e:63:da:bc:b1:40:38:e2:d3:f5:ec:a5:05:18: + b8:3d:3e:c5:99:17:32:ec:18:8c:fa:f1:0c:a6:64: + 21:85:cb:07:10:34:b0:52:88:2b:1f:68:9b:d2:b1: + 8f:12:b0:b3:d2:e7:88:1f:1f:ef:38:77:54:53:5f: + 80:79:3f:2e:1a:aa:a8:1e:4b:2b:0d:ab:b7:63:b9: + 35:b7:7d:14:bc:59:4b:df:51:4a:d2:a1:e2:0c:e2: + 90:82:87:6a:ae:ea:d7:64:d6:98:55:e8:fd:af:1a: + 50:6c:54:bc:11:f2:fd:4a:f2:9d:bb:7f:0e:f4:d5: + be:8e:16:89:12:55:d8:c0:71:34:ee:f6:dc:2d:ec: + c4:87:25:86:8d:d8:21:e4:b0:4d:0c:89:dc:39:26: + 17:dd:f6:d7:94:85:d8:04:21:70:9d:6f:6f:ff:5c: + ba:19:e1:45:cb:56:57:28:7e:1c:0d:41:57:aa:b7: + b8:27:bb:b1:e4:fa:2a:ef:21:23:75:1a:ad:2d:9b: + 86:35:8c:9c:77:b5:73:ad:d8:94:2d:e4:f3:0c:9d: + ee:c1:4e:62:7e:17:c0:71:9e:2c:de:f1:f9:10:28: + 19:33 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication + Authority Information Access: + OCSP - URI:http://ocsp.digicert.com + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl4.digicert.com/DigiCertHighAssuranceEVRootCA.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.digicert.com/CPS + + X509v3 Subject Key Identifier: + 3D:D3:50:A5:D6:A0:AD:EE:F3:4A:60:0A:65:D3:21:D4:F8:F8:D6:0F + X509v3 Authority Key Identifier: + keyid:B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3 + + Signature Algorithm: sha256WithRSAEncryption + 9d:b6:d0:90:86:e1:86:02:ed:c5:a0:f0:34:1c:74:c1:8d:76: + cc:86:0a:a8:f0:4a:8a:42:d6:3f:c8:a9:4d:ad:7c:08:ad:e6: + b6:50:b8:a2:1a:4d:88:07:b1:29:21:dc:e7:da:c6:3c:21:e0: + e3:11:49:70:ac:7a:1d:01:a4:ca:11:3a:57:ab:7d:57:2a:40: + 74:fd:d3:1d:85:18:50:df:57:47:75:a1:7d:55:20:2e:47:37: + 50:72:8c:7f:82:1b:d2:62:8f:2d:03:5a:da:c3:c8:a1:ce:2c: + 52:a2:00:63:eb:73:ba:71:c8:49:27:23:97:64:85:9e:38:0e: + ad:63:68:3c:ba:52:81:58:79:a3:2c:0c:df:de:6d:eb:31:f2: + ba:a0:7c:6c:f1:2c:d4:e1:bd:77:84:37:03:ce:32:b5:c8:9a: + 81:1a:4a:92:4e:3b:46:9a:85:fe:83:a2:f9:9e:8c:a3:cc:0d: + 5e:b3:3d:cf:04:78:8f:14:14:7b:32:9c:c7:00:a6:5c:c4:b5: + a1:55:8d:5a:56:68:a4:22:70:aa:3c:81:71:d9:9d:a8:45:3b: + f4:e5:f6:a2:51:dd:c7:7b:62:e8:6f:0c:74:eb:b8:da:f8:bf: + 87:0d:79:50:91:90:9b:18:3b:91:59:27:f1:35:28:13:ab:26: + 7e:d5:f7:7a +-----BEGIN CERTIFICATE----- +MIIEtjCCA56gAwIBAgIQDHmpRLCMEZUgkmFf4msdgzANBgkqhkiG9w0BAQsFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTEzMTAyMjEyMDAwMFoXDTI4MTAyMjEyMDAwMFowdTEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTE0MDIGA1UEAxMrRGlnaUNlcnQgU0hBMiBFeHRlbmRlZCBW +YWxpZGF0aW9uIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBANdTpARR+JmmFkhLZyeqk0nQOe0MsLAAh/FnKIaFjI5j2ryxQDji0/XspQUY +uD0+xZkXMuwYjPrxDKZkIYXLBxA0sFKIKx9om9KxjxKws9LniB8f7zh3VFNfgHk/ +LhqqqB5LKw2rt2O5Nbd9FLxZS99RStKh4gzikIKHaq7q12TWmFXo/a8aUGxUvBHy +/Urynbt/DvTVvo4WiRJV2MBxNO723C3sxIclho3YIeSwTQyJ3DkmF93215SF2AQh +cJ1vb/9cuhnhRctWVyh+HA1BV6q3uCe7seT6Ku8hI3UarS2bhjWMnHe1c63YlC3k +8wyd7sFOYn4XwHGeLN7x+RAoGTMCAwEAAaOCAUkwggFFMBIGA1UdEwEB/wQIMAYB +Af8CAQAwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF +BQcDAjA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRp +Z2ljZXJ0LmNvbTBLBgNVHR8ERDBCMECgPqA8hjpodHRwOi8vY3JsNC5kaWdpY2Vy +dC5jb20vRGlnaUNlcnRIaWdoQXNzdXJhbmNlRVZSb290Q0EuY3JsMD0GA1UdIAQ2 +MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5j +b20vQ1BTMB0GA1UdDgQWBBQ901Cl1qCt7vNKYApl0yHU+PjWDzAfBgNVHSMEGDAW +gBSxPsNpA/i/RwHUmCYaCALvY2QrwzANBgkqhkiG9w0BAQsFAAOCAQEAnbbQkIbh +hgLtxaDwNBx0wY12zIYKqPBKikLWP8ipTa18CK3mtlC4ohpNiAexKSHc59rGPCHg +4xFJcKx6HQGkyhE6V6t9VypAdP3THYUYUN9XR3WhfVUgLkc3UHKMf4Ib0mKPLQNa +2sPIoc4sUqIAY+tzunHISScjl2SFnjgOrWNoPLpSgVh5oywM395t6zHyuqB8bPEs +1OG9d4Q3A84ytciagRpKkk47RpqF/oOi+Z6Mo8wNXrM9zwR4jxQUezKcxwCmXMS1 +oVWNWlZopCJwqjyBcdmdqEU79OX2olHdx3ti6G8MdOu42vi/hw15UJGQmxg7kVkn +8TUoE6smftX3eg== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_33[] = { + 0x30, 0x82, 0x04, 0xb6, 0x30, 0x82, 0x03, 0x9e, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x0c, 0x79, 0xa9, 0x44, 0xb0, 0x8c, 0x11, 0x95, 0x20, + 0x92, 0x61, 0x5f, 0xe2, 0x6b, 0x1d, 0x83, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x6c, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, + 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, + 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x32, 0x32, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x38, 0x31, 0x30, 0x32, + 0x32, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x75, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, + 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, + 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x31, 0x34, 0x30, 0x32, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2b, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x48, 0x41, + 0x32, 0x20, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, + 0x82, 0x01, 0x01, 0x00, 0xd7, 0x53, 0xa4, 0x04, 0x51, 0xf8, 0x99, 0xa6, + 0x16, 0x48, 0x4b, 0x67, 0x27, 0xaa, 0x93, 0x49, 0xd0, 0x39, 0xed, 0x0c, + 0xb0, 0xb0, 0x00, 0x87, 0xf1, 0x67, 0x28, 0x86, 0x85, 0x8c, 0x8e, 0x63, + 0xda, 0xbc, 0xb1, 0x40, 0x38, 0xe2, 0xd3, 0xf5, 0xec, 0xa5, 0x05, 0x18, + 0xb8, 0x3d, 0x3e, 0xc5, 0x99, 0x17, 0x32, 0xec, 0x18, 0x8c, 0xfa, 0xf1, + 0x0c, 0xa6, 0x64, 0x21, 0x85, 0xcb, 0x07, 0x10, 0x34, 0xb0, 0x52, 0x88, + 0x2b, 0x1f, 0x68, 0x9b, 0xd2, 0xb1, 0x8f, 0x12, 0xb0, 0xb3, 0xd2, 0xe7, + 0x88, 0x1f, 0x1f, 0xef, 0x38, 0x77, 0x54, 0x53, 0x5f, 0x80, 0x79, 0x3f, + 0x2e, 0x1a, 0xaa, 0xa8, 0x1e, 0x4b, 0x2b, 0x0d, 0xab, 0xb7, 0x63, 0xb9, + 0x35, 0xb7, 0x7d, 0x14, 0xbc, 0x59, 0x4b, 0xdf, 0x51, 0x4a, 0xd2, 0xa1, + 0xe2, 0x0c, 0xe2, 0x90, 0x82, 0x87, 0x6a, 0xae, 0xea, 0xd7, 0x64, 0xd6, + 0x98, 0x55, 0xe8, 0xfd, 0xaf, 0x1a, 0x50, 0x6c, 0x54, 0xbc, 0x11, 0xf2, + 0xfd, 0x4a, 0xf2, 0x9d, 0xbb, 0x7f, 0x0e, 0xf4, 0xd5, 0xbe, 0x8e, 0x16, + 0x89, 0x12, 0x55, 0xd8, 0xc0, 0x71, 0x34, 0xee, 0xf6, 0xdc, 0x2d, 0xec, + 0xc4, 0x87, 0x25, 0x86, 0x8d, 0xd8, 0x21, 0xe4, 0xb0, 0x4d, 0x0c, 0x89, + 0xdc, 0x39, 0x26, 0x17, 0xdd, 0xf6, 0xd7, 0x94, 0x85, 0xd8, 0x04, 0x21, + 0x70, 0x9d, 0x6f, 0x6f, 0xff, 0x5c, 0xba, 0x19, 0xe1, 0x45, 0xcb, 0x56, + 0x57, 0x28, 0x7e, 0x1c, 0x0d, 0x41, 0x57, 0xaa, 0xb7, 0xb8, 0x27, 0xbb, + 0xb1, 0xe4, 0xfa, 0x2a, 0xef, 0x21, 0x23, 0x75, 0x1a, 0xad, 0x2d, 0x9b, + 0x86, 0x35, 0x8c, 0x9c, 0x77, 0xb5, 0x73, 0xad, 0xd8, 0x94, 0x2d, 0xe4, + 0xf3, 0x0c, 0x9d, 0xee, 0xc1, 0x4e, 0x62, 0x7e, 0x17, 0xc0, 0x71, 0x9e, + 0x2c, 0xde, 0xf1, 0xf9, 0x10, 0x28, 0x19, 0x33, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xa3, 0x82, 0x01, 0x49, 0x30, 0x82, 0x01, 0x45, 0x30, 0x12, 0x06, + 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, + 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, + 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, + 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x02, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x64, 0x69, + 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4b, + 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x44, 0x30, 0x42, 0x30, 0x40, 0xa0, + 0x3e, 0xa0, 0x3c, 0x86, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x63, 0x72, 0x6c, 0x34, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, + 0x72, 0x74, 0x48, 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, + 0x6e, 0x63, 0x65, 0x45, 0x56, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, + 0x30, 0x34, 0x30, 0x32, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, + 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, + 0x16, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, + 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3d, 0xd3, 0x50, 0xa5, 0xd6, 0xa0, 0xad, + 0xee, 0xf3, 0x4a, 0x60, 0x0a, 0x65, 0xd3, 0x21, 0xd4, 0xf8, 0xf8, 0xd6, + 0x0f, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xb1, 0x3e, 0xc3, 0x69, 0x03, 0xf8, 0xbf, 0x47, 0x01, 0xd4, + 0x98, 0x26, 0x1a, 0x08, 0x02, 0xef, 0x63, 0x64, 0x2b, 0xc3, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x9d, 0xb6, 0xd0, 0x90, 0x86, 0xe1, + 0x86, 0x02, 0xed, 0xc5, 0xa0, 0xf0, 0x34, 0x1c, 0x74, 0xc1, 0x8d, 0x76, + 0xcc, 0x86, 0x0a, 0xa8, 0xf0, 0x4a, 0x8a, 0x42, 0xd6, 0x3f, 0xc8, 0xa9, + 0x4d, 0xad, 0x7c, 0x08, 0xad, 0xe6, 0xb6, 0x50, 0xb8, 0xa2, 0x1a, 0x4d, + 0x88, 0x07, 0xb1, 0x29, 0x21, 0xdc, 0xe7, 0xda, 0xc6, 0x3c, 0x21, 0xe0, + 0xe3, 0x11, 0x49, 0x70, 0xac, 0x7a, 0x1d, 0x01, 0xa4, 0xca, 0x11, 0x3a, + 0x57, 0xab, 0x7d, 0x57, 0x2a, 0x40, 0x74, 0xfd, 0xd3, 0x1d, 0x85, 0x18, + 0x50, 0xdf, 0x57, 0x47, 0x75, 0xa1, 0x7d, 0x55, 0x20, 0x2e, 0x47, 0x37, + 0x50, 0x72, 0x8c, 0x7f, 0x82, 0x1b, 0xd2, 0x62, 0x8f, 0x2d, 0x03, 0x5a, + 0xda, 0xc3, 0xc8, 0xa1, 0xce, 0x2c, 0x52, 0xa2, 0x00, 0x63, 0xeb, 0x73, + 0xba, 0x71, 0xc8, 0x49, 0x27, 0x23, 0x97, 0x64, 0x85, 0x9e, 0x38, 0x0e, + 0xad, 0x63, 0x68, 0x3c, 0xba, 0x52, 0x81, 0x58, 0x79, 0xa3, 0x2c, 0x0c, + 0xdf, 0xde, 0x6d, 0xeb, 0x31, 0xf2, 0xba, 0xa0, 0x7c, 0x6c, 0xf1, 0x2c, + 0xd4, 0xe1, 0xbd, 0x77, 0x84, 0x37, 0x03, 0xce, 0x32, 0xb5, 0xc8, 0x9a, + 0x81, 0x1a, 0x4a, 0x92, 0x4e, 0x3b, 0x46, 0x9a, 0x85, 0xfe, 0x83, 0xa2, + 0xf9, 0x9e, 0x8c, 0xa3, 0xcc, 0x0d, 0x5e, 0xb3, 0x3d, 0xcf, 0x04, 0x78, + 0x8f, 0x14, 0x14, 0x7b, 0x32, 0x9c, 0xc7, 0x00, 0xa6, 0x5c, 0xc4, 0xb5, + 0xa1, 0x55, 0x8d, 0x5a, 0x56, 0x68, 0xa4, 0x22, 0x70, 0xaa, 0x3c, 0x81, + 0x71, 0xd9, 0x9d, 0xa8, 0x45, 0x3b, 0xf4, 0xe5, 0xf6, 0xa2, 0x51, 0xdd, + 0xc7, 0x7b, 0x62, 0xe8, 0x6f, 0x0c, 0x74, 0xeb, 0xb8, 0xda, 0xf8, 0xbf, + 0x87, 0x0d, 0x79, 0x50, 0x91, 0x90, 0x9b, 0x18, 0x3b, 0x91, 0x59, 0x27, + 0xf1, 0x35, 0x28, 0x13, 0xab, 0x26, 0x7e, 0xd5, 0xf7, 0x7a, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 36:34:9e:18:c9:9c:26:69:b6:56:2e:6c:e5:ad:71:32 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2008 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA - G3 + Validity + Not Before: May 23 00:00:00 2013 GMT + Not After : May 22 23:59:59 2023 GMT + Subject: C=US, O=thawte, Inc., CN=thawte SHA256 SSL CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:a3:63:2b:d4:ba:5d:38:ae:b0:cf:b9:4c:38:df: + 20:7d:f1:2b:47:71:1d:8b:68:f3:56:f9:9c:da:aa: + e5:84:26:de:a5:71:30:bc:f3:31:23:9d:e8:3b:80: + c8:66:57:75:b6:57:0e:db:93:f5:26:8e:70:ba:64: + 52:66:8a:2a:88:5c:44:18:4d:a8:a2:7c:bd:56:61: + 32:90:12:f9:35:87:48:60:b0:6e:90:67:44:01:8d: + e7:c9:0d:63:68:72:72:ab:63:3c:86:b8:1f:7d:ad: + 88:25:a7:6a:88:29:fb:59:c6:78:71:5f:2c:ba:89: + e6:d3:80:fd:57:ec:b9:51:5f:43:33:2e:7e:25:3b: + a4:04:d1:60:8c:b3:44:33:93:0c:ad:2a:b6:44:a2: + 19:3b:af:c4:90:6f:7b:05:87:86:9b:2c:6a:9d:2b: + 6c:77:c9:00:9f:c9:cf:ac:ed:3e:1b:f7:c3:f3:d9: + f8:6c:d4:a0:57:c4:fb:28:32:aa:33:f0:e6:ba:98: + df:e5:c2:4e:9c:74:bf:8a:48:c2:f2:1b:f0:77:40: + 41:07:04:b2:3a:d5:4c:c4:29:a9:11:40:3f:02:46: + f0:91:d5:d2:81:83:86:13:b3:31:ed:46:ab:a8:87: + 76:a9:99:7d:bc:cd:31:50:f4:a5:b5:dc:a5:32:b3: + 8b:8b + Exponent: 65537 (0x10001) + X509v3 extensions: + Authority Information Access: + OCSP - URI:http://ocsp.thawte.com + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: https://www.thawte.com/cps + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.thawte.com/ThawtePCA-G3.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Alternative Name: + DirName:/CN=VeriSignMPKI-2-415 + X509v3 Subject Key Identifier: + 2B:9A:35:AE:01:18:38:30:E1:70:7A:05:E0:11:76:A3:CE:BD:90:14 + X509v3 Authority Key Identifier: + keyid:AD:6C:AA:94:60:9C:ED:E4:FF:FA:3E:0A:74:2B:63:03:F7:B6:59:BF + + Signature Algorithm: sha256WithRSAEncryption + 74:a6:56:e8:af:93:96:19:fb:26:f9:0d:b0:44:a5:cd:e9:7a: + 48:03:74:01:6c:13:71:b7:e0:82:90:99:62:23:e3:d6:99:af: + f0:c7:1e:9e:a8:18:21:db:b4:94:3f:34:56:1b:99:55:2f:8e: + f0:45:33:32:b7:72:c1:13:5b:34:d3:f5:60:e5:2e:18:d1:5c: + c5:6a:c1:aa:87:50:0c:1c:9d:64:2b:ff:1b:dc:d5:2e:61:0b: + e7:b9:b6:91:53:86:d9:03:2a:d1:3d:7b:4a:da:2b:07:be:29: + f2:60:42:a9:91:1a:0e:2e:3c:d1:7d:a5:13:14:02:fa:ee:8b: + 8d:b6:c8:b8:3e:56:81:57:21:24:3f:65:c3:b4:c9:ce:5c:8d: + 46:ac:53:f3:f9:55:74:c8:2b:fd:d2:78:70:f5:f8:11:e5:f4: + a7:ad:20:f5:9d:f1:ec:70:f6:13:ac:e6:8c:8d:db:3f:c6:f2: + 79:0e:ab:52:f2:cc:1b:79:27:cf:16:b3:d6:f3:c6:36:80:43: + ec:c5:94:f0:dd:90:8d:f8:c6:52:46:56:eb:74:47:be:a6:f3: + 19:ae:71:4c:c0:e1:e7:d4:cf:ed:d4:06:28:2a:11:3c:ba:d9: + 41:6e:00:e7:81:37:93:e4:da:62:c6:1d:67:6f:63:b4:14:86: + d9:a6:62:f0 +-----BEGIN CERTIFICATE----- +MIIEwjCCA6qgAwIBAgIQNjSeGMmcJmm2Vi5s5a1xMjANBgkqhkiG9w0BAQsFADCB +rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV +BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0xMzA1MjMwMDAwMDBa +Fw0yMzA1MjIyMzU5NTlaMEMxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwx0aGF3dGUs +IEluYy4xHTAbBgNVBAMTFHRoYXd0ZSBTSEEyNTYgU1NMIENBMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo2Mr1LpdOK6wz7lMON8gffErR3Edi2jzVvmc +2qrlhCbepXEwvPMxI53oO4DIZld1tlcO25P1Jo5wumRSZooqiFxEGE2oony9VmEy +kBL5NYdIYLBukGdEAY3nyQ1jaHJyq2M8hrgffa2IJadqiCn7WcZ4cV8suonm04D9 +V+y5UV9DMy5+JTukBNFgjLNEM5MMrSq2RKIZO6/EkG97BYeGmyxqnStsd8kAn8nP +rO0+G/fD89n4bNSgV8T7KDKqM/Dmupjf5cJOnHS/ikjC8hvwd0BBBwSyOtVMxCmp +EUA/AkbwkdXSgYOGE7Mx7UarqId2qZl9vM0xUPSltdylMrOLiwIDAQABo4IBRDCC +AUAwMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzABhhZodHRwOi8vb2NzcC50aGF3 +dGUuY29tMBIGA1UdEwEB/wQIMAYBAf8CAQAwQQYDVR0gBDowODA2BgpghkgBhvhF +AQc2MCgwJgYIKwYBBQUHAgEWGmh0dHBzOi8vd3d3LnRoYXd0ZS5jb20vY3BzMDcG +A1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwudGhhd3RlLmNvbS9UaGF3dGVQQ0Et +RzMuY3JsMA4GA1UdDwEB/wQEAwIBBjAqBgNVHREEIzAhpB8wHTEbMBkGA1UEAxMS +VmVyaVNpZ25NUEtJLTItNDE1MB0GA1UdDgQWBBQrmjWuARg4MOFwegXgEXajzr2Q +FDAfBgNVHSMEGDAWgBStbKqUYJzt5P/6Pgp0K2MD97ZZvzANBgkqhkiG9w0BAQsF +AAOCAQEAdKZW6K+Tlhn7JvkNsESlzel6SAN0AWwTcbfggpCZYiPj1pmv8McenqgY +Idu0lD80VhuZVS+O8EUzMrdywRNbNNP1YOUuGNFcxWrBqodQDBydZCv/G9zVLmEL +57m2kVOG2QMq0T17StorB74p8mBCqZEaDi480X2lExQC+u6LjbbIuD5WgVchJD9l +w7TJzlyNRqxT8/lVdMgr/dJ4cPX4EeX0p60g9Z3x7HD2E6zmjI3bP8byeQ6rUvLM +G3knzxaz1vPGNoBD7MWU8N2QjfjGUkZW63RHvqbzGa5xTMDh59TP7dQGKCoRPLrZ +QW4A54E3k+TaYsYdZ29jtBSG2aZi8A== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_34[] = { + 0x30, 0x82, 0x04, 0xc2, 0x30, 0x82, 0x03, 0xaa, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x36, 0x34, 0x9e, 0x18, 0xc9, 0x9c, 0x26, 0x69, 0xb6, + 0x56, 0x2e, 0x6c, 0xe5, 0xad, 0x71, 0x32, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xae, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x38, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x1b, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17, 0x0d, 0x31, + 0x33, 0x30, 0x35, 0x32, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, + 0x17, 0x0d, 0x32, 0x33, 0x30, 0x35, 0x32, 0x32, 0x32, 0x33, 0x35, 0x39, + 0x35, 0x39, 0x5a, 0x30, 0x43, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, + 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, + 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x14, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, + 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x63, 0x2b, + 0xd4, 0xba, 0x5d, 0x38, 0xae, 0xb0, 0xcf, 0xb9, 0x4c, 0x38, 0xdf, 0x20, + 0x7d, 0xf1, 0x2b, 0x47, 0x71, 0x1d, 0x8b, 0x68, 0xf3, 0x56, 0xf9, 0x9c, + 0xda, 0xaa, 0xe5, 0x84, 0x26, 0xde, 0xa5, 0x71, 0x30, 0xbc, 0xf3, 0x31, + 0x23, 0x9d, 0xe8, 0x3b, 0x80, 0xc8, 0x66, 0x57, 0x75, 0xb6, 0x57, 0x0e, + 0xdb, 0x93, 0xf5, 0x26, 0x8e, 0x70, 0xba, 0x64, 0x52, 0x66, 0x8a, 0x2a, + 0x88, 0x5c, 0x44, 0x18, 0x4d, 0xa8, 0xa2, 0x7c, 0xbd, 0x56, 0x61, 0x32, + 0x90, 0x12, 0xf9, 0x35, 0x87, 0x48, 0x60, 0xb0, 0x6e, 0x90, 0x67, 0x44, + 0x01, 0x8d, 0xe7, 0xc9, 0x0d, 0x63, 0x68, 0x72, 0x72, 0xab, 0x63, 0x3c, + 0x86, 0xb8, 0x1f, 0x7d, 0xad, 0x88, 0x25, 0xa7, 0x6a, 0x88, 0x29, 0xfb, + 0x59, 0xc6, 0x78, 0x71, 0x5f, 0x2c, 0xba, 0x89, 0xe6, 0xd3, 0x80, 0xfd, + 0x57, 0xec, 0xb9, 0x51, 0x5f, 0x43, 0x33, 0x2e, 0x7e, 0x25, 0x3b, 0xa4, + 0x04, 0xd1, 0x60, 0x8c, 0xb3, 0x44, 0x33, 0x93, 0x0c, 0xad, 0x2a, 0xb6, + 0x44, 0xa2, 0x19, 0x3b, 0xaf, 0xc4, 0x90, 0x6f, 0x7b, 0x05, 0x87, 0x86, + 0x9b, 0x2c, 0x6a, 0x9d, 0x2b, 0x6c, 0x77, 0xc9, 0x00, 0x9f, 0xc9, 0xcf, + 0xac, 0xed, 0x3e, 0x1b, 0xf7, 0xc3, 0xf3, 0xd9, 0xf8, 0x6c, 0xd4, 0xa0, + 0x57, 0xc4, 0xfb, 0x28, 0x32, 0xaa, 0x33, 0xf0, 0xe6, 0xba, 0x98, 0xdf, + 0xe5, 0xc2, 0x4e, 0x9c, 0x74, 0xbf, 0x8a, 0x48, 0xc2, 0xf2, 0x1b, 0xf0, + 0x77, 0x40, 0x41, 0x07, 0x04, 0xb2, 0x3a, 0xd5, 0x4c, 0xc4, 0x29, 0xa9, + 0x11, 0x40, 0x3f, 0x02, 0x46, 0xf0, 0x91, 0xd5, 0xd2, 0x81, 0x83, 0x86, + 0x13, 0xb3, 0x31, 0xed, 0x46, 0xab, 0xa8, 0x87, 0x76, 0xa9, 0x99, 0x7d, + 0xbc, 0xcd, 0x31, 0x50, 0xf4, 0xa5, 0xb5, 0xdc, 0xa5, 0x32, 0xb3, 0x8b, + 0x8b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x44, 0x30, 0x82, + 0x01, 0x40, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x01, 0x01, 0x04, 0x26, 0x30, 0x24, 0x30, 0x22, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x74, 0x68, 0x61, 0x77, + 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3a, 0x30, + 0x38, 0x30, 0x36, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, + 0x01, 0x07, 0x36, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x37, 0x06, + 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0xa0, 0x2a, + 0xa0, 0x28, 0x86, 0x26, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, + 0x72, 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, 0x2d, + 0x47, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2a, + 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x23, 0x30, 0x21, 0xa4, 0x1f, 0x30, + 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, + 0x2d, 0x32, 0x2d, 0x34, 0x31, 0x35, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, + 0x0e, 0x04, 0x16, 0x04, 0x14, 0x2b, 0x9a, 0x35, 0xae, 0x01, 0x18, 0x38, + 0x30, 0xe1, 0x70, 0x7a, 0x05, 0xe0, 0x11, 0x76, 0xa3, 0xce, 0xbd, 0x90, + 0x14, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xad, 0x6c, 0xaa, 0x94, 0x60, 0x9c, 0xed, 0xe4, 0xff, 0xfa, + 0x3e, 0x0a, 0x74, 0x2b, 0x63, 0x03, 0xf7, 0xb6, 0x59, 0xbf, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x74, 0xa6, 0x56, 0xe8, 0xaf, 0x93, + 0x96, 0x19, 0xfb, 0x26, 0xf9, 0x0d, 0xb0, 0x44, 0xa5, 0xcd, 0xe9, 0x7a, + 0x48, 0x03, 0x74, 0x01, 0x6c, 0x13, 0x71, 0xb7, 0xe0, 0x82, 0x90, 0x99, + 0x62, 0x23, 0xe3, 0xd6, 0x99, 0xaf, 0xf0, 0xc7, 0x1e, 0x9e, 0xa8, 0x18, + 0x21, 0xdb, 0xb4, 0x94, 0x3f, 0x34, 0x56, 0x1b, 0x99, 0x55, 0x2f, 0x8e, + 0xf0, 0x45, 0x33, 0x32, 0xb7, 0x72, 0xc1, 0x13, 0x5b, 0x34, 0xd3, 0xf5, + 0x60, 0xe5, 0x2e, 0x18, 0xd1, 0x5c, 0xc5, 0x6a, 0xc1, 0xaa, 0x87, 0x50, + 0x0c, 0x1c, 0x9d, 0x64, 0x2b, 0xff, 0x1b, 0xdc, 0xd5, 0x2e, 0x61, 0x0b, + 0xe7, 0xb9, 0xb6, 0x91, 0x53, 0x86, 0xd9, 0x03, 0x2a, 0xd1, 0x3d, 0x7b, + 0x4a, 0xda, 0x2b, 0x07, 0xbe, 0x29, 0xf2, 0x60, 0x42, 0xa9, 0x91, 0x1a, + 0x0e, 0x2e, 0x3c, 0xd1, 0x7d, 0xa5, 0x13, 0x14, 0x02, 0xfa, 0xee, 0x8b, + 0x8d, 0xb6, 0xc8, 0xb8, 0x3e, 0x56, 0x81, 0x57, 0x21, 0x24, 0x3f, 0x65, + 0xc3, 0xb4, 0xc9, 0xce, 0x5c, 0x8d, 0x46, 0xac, 0x53, 0xf3, 0xf9, 0x55, + 0x74, 0xc8, 0x2b, 0xfd, 0xd2, 0x78, 0x70, 0xf5, 0xf8, 0x11, 0xe5, 0xf4, + 0xa7, 0xad, 0x20, 0xf5, 0x9d, 0xf1, 0xec, 0x70, 0xf6, 0x13, 0xac, 0xe6, + 0x8c, 0x8d, 0xdb, 0x3f, 0xc6, 0xf2, 0x79, 0x0e, 0xab, 0x52, 0xf2, 0xcc, + 0x1b, 0x79, 0x27, 0xcf, 0x16, 0xb3, 0xd6, 0xf3, 0xc6, 0x36, 0x80, 0x43, + 0xec, 0xc5, 0x94, 0xf0, 0xdd, 0x90, 0x8d, 0xf8, 0xc6, 0x52, 0x46, 0x56, + 0xeb, 0x74, 0x47, 0xbe, 0xa6, 0xf3, 0x19, 0xae, 0x71, 0x4c, 0xc0, 0xe1, + 0xe7, 0xd4, 0xcf, 0xed, 0xd4, 0x06, 0x28, 0x2a, 0x11, 0x3c, 0xba, 0xd9, + 0x41, 0x6e, 0x00, 0xe7, 0x81, 0x37, 0x93, 0xe4, 0xda, 0x62, 0xc6, 0x1d, + 0x67, 0x6f, 0x63, 0xb4, 0x14, 0x86, 0xd9, 0xa6, 0x62, 0xf0, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 41:82:12:7d:12:d9:c6:b3:21:39:43:12:56:64:00:b8 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=GeoTrust Inc., OU=(c) 2008 GeoTrust Inc. - For authorized use only, CN=GeoTrust Primary Certification Authority - G3 + Validity + Not Before: May 23 00:00:00 2013 GMT + Not After : May 22 23:59:59 2023 GMT + Subject: C=US, O=GeoTrust Inc., CN=GeoTrust SHA256 SSL CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:c6:a9:0b:5d:17:a5:7d:c6:cf:2a:ef:c6:66:d1: + 42:1e:5f:83:78:68:91:af:e6:a7:8b:f0:1d:44:01: + 0a:19:ca:9c:d4:8b:1d:e1:a1:90:a3:c1:5b:b4:d7: + 5b:6a:8b:fc:0e:49:1e:c2:62:29:fe:80:15:39:8b: + 81:2a:27:b5:fb:12:a8:05:22:0b:c5:2c:f5:d9:98: + dd:16:2f:3b:66:e7:62:a2:43:32:ac:8f:b5:85:c8: + 52:06:2c:5c:c0:77:fa:67:f7:83:e8:5e:05:8d:c8: + ab:a1:16:32:8a:d2:40:ec:86:3a:1c:23:a9:8d:b5: + 00:de:72:bd:85:55:fe:06:01:60:5d:ad:b3:e0:65: + 73:a5:92:14:9e:94:56:6f:93:ee:af:a9:3a:30:25: + 4a:8e:09:84:ef:b7:d2:d5:d7:9b:49:cd:e9:c0:5e: + 67:71:22:ac:50:90:43:20:5d:a1:a3:15:83:fd:fc: + a7:39:bc:6b:65:48:12:60:ff:dd:23:b3:3a:aa:f4: + 9f:9c:37:53:41:a2:47:93:81:33:09:e5:22:c6:c8: + 1c:49:a1:6e:8d:cc:83:b3:9a:cd:ea:43:f2:19:d3: + 24:cb:a8:29:ae:52:cc:f4:08:27:b0:84:ea:ce:27: + b5:e1:34:13:73:92:5c:87:86:2a:c6:b0:68:36:ad: + cb:09 + Exponent: 65537 (0x10001) + X509v3 extensions: + Authority Information Access: + OCSP - URI:http://pca-g3-ocsp.geotrust.com + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: http://www.geotrust.com/resources/cps + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.geotrust.com/GeoTrustPCA-G3.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Alternative Name: + DirName:/CN=VeriSignMPKI-2-416 + X509v3 Subject Key Identifier: + 14:67:8E:ED:83:4F:D6:1E:9D:40:04:0C:04:46:A1:70:34:B2:0F:72 + X509v3 Authority Key Identifier: + keyid:C4:79:CA:8E:A1:4E:03:1D:1C:DC:6B:DB:31:5B:94:3E:3F:30:7F:2D + + Signature Algorithm: sha256WithRSAEncryption + 10:10:ea:f2:10:d6:08:46:e2:c1:8f:3e:36:59:c8:2b:0f:fe: + 4d:ec:e3:f8:b6:56:31:78:25:d4:76:f2:08:dd:ef:3f:cd:8b: + 1c:7e:aa:7f:fc:0b:a8:23:64:51:b3:87:d6:09:fa:22:fa:c7: + 0a:51:e8:ce:b8:f6:03:70:e0:1b:5a:b9:b1:b2:93:11:10:f9: + 97:05:07:29:6c:6d:57:25:54:e8:f9:66:9b:0e:fb:db:9f:ee: + 96:6f:65:cb:1f:d8:55:ce:31:fa:cf:02:f4:d0:7f:50:66:ff: + 2f:79:9b:a5:c2:df:d6:cf:c8:15:83:96:84:98:b2:46:d4:5f: + 13:a8:3e:a7:34:9c:05:38:da:cf:d6:69:95:a9:26:87:76:01: + d7:b2:51:0f:81:69:46:26:1c:99:b6:83:58:e3:3b:58:8f:dc: + b4:71:c0:b9:bf:42:9c:1c:03:9e:e4:46:a8:ea:b9:c1:cd:f6: + 5b:a9:3c:96:fb:79:a4:33:73:a7:9e:78:b9:70:dc:72:74:c4: + 32:c8:00:1b:c9:ef:48:d3:fb:3a:9b:fa:fe:7a:9a:40:69:1c: + c8:da:28:37:0b:d3:a3:b9:7e:96:cc:2b:28:c3:56:6c:6f:e9: + db:52:b1:fa:9a:fb:e7:af:b5:97:a6:22:c3:c5:a8:93:b1:00: + c9:07:b2:7d +-----BEGIN CERTIFICATE----- +MIIExzCCA6+gAwIBAgIQQYISfRLZxrMhOUMSVmQAuDANBgkqhkiG9w0BAQsFADCB +mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT +MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eSAtIEczMB4XDTEzMDUyMzAwMDAwMFoXDTIzMDUyMjIzNTk1OVowRjELMAkG +A1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xHzAdBgNVBAMTFkdlb1Ry +dXN0IFNIQTI1NiBTU0wgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQDGqQtdF6V9xs8q78Zm0UIeX4N4aJGv5qeL8B1EAQoZypzUix3hoZCjwVu011tq +i/wOSR7CYin+gBU5i4EqJ7X7EqgFIgvFLPXZmN0WLztm52KiQzKsj7WFyFIGLFzA +d/pn94PoXgWNyKuhFjKK0kDshjocI6mNtQDecr2FVf4GAWBdrbPgZXOlkhSelFZv +k+6vqTowJUqOCYTvt9LV15tJzenAXmdxIqxQkEMgXaGjFYP9/Kc5vGtlSBJg/90j +szqq9J+cN1NBokeTgTMJ5SLGyBxJoW6NzIOzms3qQ/IZ0yTLqCmuUsz0CCewhOrO +J7XhNBNzklyHhirGsGg2rcsJAgMBAAGjggFcMIIBWDA7BggrBgEFBQcBAQQvMC0w +KwYIKwYBBQUHMAGGH2h0dHA6Ly9wY2EtZzMtb2NzcC5nZW90cnVzdC5jb20wEgYD +VR0TAQH/BAgwBgEB/wIBADBMBgNVHSAERTBDMEEGCmCGSAGG+EUBBzYwMzAxBggr +BgEFBQcCARYlaHR0cDovL3d3dy5nZW90cnVzdC5jb20vcmVzb3VyY2VzL2NwczA7 +BgNVHR8ENDAyMDCgLqAshipodHRwOi8vY3JsLmdlb3RydXN0LmNvbS9HZW9UcnVz +dFBDQS1HMy5jcmwwDgYDVR0PAQH/BAQDAgEGMCoGA1UdEQQjMCGkHzAdMRswGQYD +VQQDExJWZXJpU2lnbk1QS0ktMi00MTYwHQYDVR0OBBYEFBRnju2DT9YenUAEDARG +oXA0sg9yMB8GA1UdIwQYMBaAFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3 +DQEBCwUAA4IBAQAQEOryENYIRuLBjz42WcgrD/5N7OP4tlYxeCXUdvII3e8/zYsc +fqp//AuoI2RRs4fWCfoi+scKUejOuPYDcOAbWrmxspMREPmXBQcpbG1XJVTo+Wab +Dvvbn+6Wb2XLH9hVzjH6zwL00H9QZv8veZulwt/Wz8gVg5aEmLJG1F8TqD6nNJwF +ONrP1mmVqSaHdgHXslEPgWlGJhyZtoNY4ztYj9y0ccC5v0KcHAOe5Eao6rnBzfZb +qTyW+3mkM3Onnni5cNxydMQyyAAbye9I0/s6m/r+eppAaRzI2ig3C9OjuX6WzCso +w1Zsb+nbUrH6mvvnr7WXpiLDxaiTsQDJB7J9 +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_35[] = { + 0x30, 0x82, 0x04, 0xc7, 0x30, 0x82, 0x03, 0xaf, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x41, 0x82, 0x12, 0x7d, 0x12, 0xd9, 0xc6, 0xb3, 0x21, + 0x39, 0x43, 0x12, 0x56, 0x64, 0x00, 0xb8, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0x98, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x38, 0x20, 0x47, 0x65, + 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, + 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, + 0x79, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d, + 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x33, 0x30, 0x35, 0x32, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x30, 0x35, 0x32, 0x32, 0x32, 0x33, + 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x46, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x16, 0x47, 0x65, 0x6f, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x53, + 0x53, 0x4c, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, + 0x01, 0x00, 0xc6, 0xa9, 0x0b, 0x5d, 0x17, 0xa5, 0x7d, 0xc6, 0xcf, 0x2a, + 0xef, 0xc6, 0x66, 0xd1, 0x42, 0x1e, 0x5f, 0x83, 0x78, 0x68, 0x91, 0xaf, + 0xe6, 0xa7, 0x8b, 0xf0, 0x1d, 0x44, 0x01, 0x0a, 0x19, 0xca, 0x9c, 0xd4, + 0x8b, 0x1d, 0xe1, 0xa1, 0x90, 0xa3, 0xc1, 0x5b, 0xb4, 0xd7, 0x5b, 0x6a, + 0x8b, 0xfc, 0x0e, 0x49, 0x1e, 0xc2, 0x62, 0x29, 0xfe, 0x80, 0x15, 0x39, + 0x8b, 0x81, 0x2a, 0x27, 0xb5, 0xfb, 0x12, 0xa8, 0x05, 0x22, 0x0b, 0xc5, + 0x2c, 0xf5, 0xd9, 0x98, 0xdd, 0x16, 0x2f, 0x3b, 0x66, 0xe7, 0x62, 0xa2, + 0x43, 0x32, 0xac, 0x8f, 0xb5, 0x85, 0xc8, 0x52, 0x06, 0x2c, 0x5c, 0xc0, + 0x77, 0xfa, 0x67, 0xf7, 0x83, 0xe8, 0x5e, 0x05, 0x8d, 0xc8, 0xab, 0xa1, + 0x16, 0x32, 0x8a, 0xd2, 0x40, 0xec, 0x86, 0x3a, 0x1c, 0x23, 0xa9, 0x8d, + 0xb5, 0x00, 0xde, 0x72, 0xbd, 0x85, 0x55, 0xfe, 0x06, 0x01, 0x60, 0x5d, + 0xad, 0xb3, 0xe0, 0x65, 0x73, 0xa5, 0x92, 0x14, 0x9e, 0x94, 0x56, 0x6f, + 0x93, 0xee, 0xaf, 0xa9, 0x3a, 0x30, 0x25, 0x4a, 0x8e, 0x09, 0x84, 0xef, + 0xb7, 0xd2, 0xd5, 0xd7, 0x9b, 0x49, 0xcd, 0xe9, 0xc0, 0x5e, 0x67, 0x71, + 0x22, 0xac, 0x50, 0x90, 0x43, 0x20, 0x5d, 0xa1, 0xa3, 0x15, 0x83, 0xfd, + 0xfc, 0xa7, 0x39, 0xbc, 0x6b, 0x65, 0x48, 0x12, 0x60, 0xff, 0xdd, 0x23, + 0xb3, 0x3a, 0xaa, 0xf4, 0x9f, 0x9c, 0x37, 0x53, 0x41, 0xa2, 0x47, 0x93, + 0x81, 0x33, 0x09, 0xe5, 0x22, 0xc6, 0xc8, 0x1c, 0x49, 0xa1, 0x6e, 0x8d, + 0xcc, 0x83, 0xb3, 0x9a, 0xcd, 0xea, 0x43, 0xf2, 0x19, 0xd3, 0x24, 0xcb, + 0xa8, 0x29, 0xae, 0x52, 0xcc, 0xf4, 0x08, 0x27, 0xb0, 0x84, 0xea, 0xce, + 0x27, 0xb5, 0xe1, 0x34, 0x13, 0x73, 0x92, 0x5c, 0x87, 0x86, 0x2a, 0xc6, + 0xb0, 0x68, 0x36, 0xad, 0xcb, 0x09, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, + 0x82, 0x01, 0x5c, 0x30, 0x82, 0x01, 0x58, 0x30, 0x3b, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x2f, 0x30, 0x2d, 0x30, + 0x2b, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, + 0x1f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x70, 0x63, 0x61, 0x2d, + 0x67, 0x33, 0x2d, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x65, 0x6f, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, + 0xff, 0x02, 0x01, 0x00, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, + 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x3b, + 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0xa0, + 0x2e, 0xa0, 0x2c, 0x86, 0x2a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x50, 0x43, 0x41, 0x2d, 0x47, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x2a, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x23, + 0x30, 0x21, 0xa4, 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x12, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, + 0x6e, 0x4d, 0x50, 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x34, 0x31, 0x36, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x14, 0x67, + 0x8e, 0xed, 0x83, 0x4f, 0xd6, 0x1e, 0x9d, 0x40, 0x04, 0x0c, 0x04, 0x46, + 0xa1, 0x70, 0x34, 0xb2, 0x0f, 0x72, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xc4, 0x79, 0xca, 0x8e, 0xa1, + 0x4e, 0x03, 0x1d, 0x1c, 0xdc, 0x6b, 0xdb, 0x31, 0x5b, 0x94, 0x3e, 0x3f, + 0x30, 0x7f, 0x2d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x10, + 0x10, 0xea, 0xf2, 0x10, 0xd6, 0x08, 0x46, 0xe2, 0xc1, 0x8f, 0x3e, 0x36, + 0x59, 0xc8, 0x2b, 0x0f, 0xfe, 0x4d, 0xec, 0xe3, 0xf8, 0xb6, 0x56, 0x31, + 0x78, 0x25, 0xd4, 0x76, 0xf2, 0x08, 0xdd, 0xef, 0x3f, 0xcd, 0x8b, 0x1c, + 0x7e, 0xaa, 0x7f, 0xfc, 0x0b, 0xa8, 0x23, 0x64, 0x51, 0xb3, 0x87, 0xd6, + 0x09, 0xfa, 0x22, 0xfa, 0xc7, 0x0a, 0x51, 0xe8, 0xce, 0xb8, 0xf6, 0x03, + 0x70, 0xe0, 0x1b, 0x5a, 0xb9, 0xb1, 0xb2, 0x93, 0x11, 0x10, 0xf9, 0x97, + 0x05, 0x07, 0x29, 0x6c, 0x6d, 0x57, 0x25, 0x54, 0xe8, 0xf9, 0x66, 0x9b, + 0x0e, 0xfb, 0xdb, 0x9f, 0xee, 0x96, 0x6f, 0x65, 0xcb, 0x1f, 0xd8, 0x55, + 0xce, 0x31, 0xfa, 0xcf, 0x02, 0xf4, 0xd0, 0x7f, 0x50, 0x66, 0xff, 0x2f, + 0x79, 0x9b, 0xa5, 0xc2, 0xdf, 0xd6, 0xcf, 0xc8, 0x15, 0x83, 0x96, 0x84, + 0x98, 0xb2, 0x46, 0xd4, 0x5f, 0x13, 0xa8, 0x3e, 0xa7, 0x34, 0x9c, 0x05, + 0x38, 0xda, 0xcf, 0xd6, 0x69, 0x95, 0xa9, 0x26, 0x87, 0x76, 0x01, 0xd7, + 0xb2, 0x51, 0x0f, 0x81, 0x69, 0x46, 0x26, 0x1c, 0x99, 0xb6, 0x83, 0x58, + 0xe3, 0x3b, 0x58, 0x8f, 0xdc, 0xb4, 0x71, 0xc0, 0xb9, 0xbf, 0x42, 0x9c, + 0x1c, 0x03, 0x9e, 0xe4, 0x46, 0xa8, 0xea, 0xb9, 0xc1, 0xcd, 0xf6, 0x5b, + 0xa9, 0x3c, 0x96, 0xfb, 0x79, 0xa4, 0x33, 0x73, 0xa7, 0x9e, 0x78, 0xb9, + 0x70, 0xdc, 0x72, 0x74, 0xc4, 0x32, 0xc8, 0x00, 0x1b, 0xc9, 0xef, 0x48, + 0xd3, 0xfb, 0x3a, 0x9b, 0xfa, 0xfe, 0x7a, 0x9a, 0x40, 0x69, 0x1c, 0xc8, + 0xda, 0x28, 0x37, 0x0b, 0xd3, 0xa3, 0xb9, 0x7e, 0x96, 0xcc, 0x2b, 0x28, + 0xc3, 0x56, 0x6c, 0x6f, 0xe9, 0xdb, 0x52, 0xb1, 0xfa, 0x9a, 0xfb, 0xe7, + 0xaf, 0xb5, 0x97, 0xa6, 0x22, 0xc3, 0xc5, 0xa8, 0x93, 0xb1, 0x00, 0xc9, + 0x07, 0xb2, 0x7d, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 7 (0x7) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., CN=Go Daddy Root Certificate Authority - G2 + Validity + Not Before: May 3 07:00:00 2011 GMT + Not After : May 3 07:00:00 2031 GMT + Subject: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., OU=http://certs.godaddy.com/repository/, CN=Go Daddy Secure Certificate Authority - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:b9:e0:cb:10:d4:af:76:bd:d4:93:62:eb:30:64: + b8:81:08:6c:c3:04:d9:62:17:8e:2f:ff:3e:65:cf: + 8f:ce:62:e6:3c:52:1c:da:16:45:4b:55:ab:78:6b: + 63:83:62:90:ce:0f:69:6c:99:c8:1a:14:8b:4c:cc: + 45:33:ea:88:dc:9e:a3:af:2b:fe:80:61:9d:79:57: + c4:cf:2e:f4:3f:30:3c:5d:47:fc:9a:16:bc:c3:37: + 96:41:51:8e:11:4b:54:f8:28:be:d0:8c:be:f0:30: + 38:1e:f3:b0:26:f8:66:47:63:6d:de:71:26:47:8f: + 38:47:53:d1:46:1d:b4:e3:dc:00:ea:45:ac:bd:bc: + 71:d9:aa:6f:00:db:db:cd:30:3a:79:4f:5f:4c:47: + f8:1d:ef:5b:c2:c4:9d:60:3b:b1:b2:43:91:d8:a4: + 33:4e:ea:b3:d6:27:4f:ad:25:8a:a5:c6:f4:d5:d0: + a6:ae:74:05:64:57:88:b5:44:55:d4:2d:2a:3a:3e: + f8:b8:bd:e9:32:0a:02:94:64:c4:16:3a:50:f1:4a: + ae:e7:79:33:af:0c:20:07:7f:e8:df:04:39:c2:69: + 02:6c:63:52:fa:77:c1:1b:c8:74:87:c8:b9:93:18: + 50:54:35:4b:69:4e:bc:3b:d3:49:2e:1f:dc:c1:d2: + 52:fb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 40:C2:BD:27:8E:CC:34:83:30:A2:33:D7:FB:6C:B3:F0:B4:2C:80:CE + X509v3 Authority Key Identifier: + keyid:3A:9A:85:07:10:67:28:B6:EF:F6:BD:05:41:6E:20:C1:94:DA:0F:DE + + Authority Information Access: + OCSP - URI:http://ocsp.godaddy.com/ + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.godaddy.com/gdroot-g2.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://certs.godaddy.com/repository/ + + Signature Algorithm: sha256WithRSAEncryption + 08:7e:6c:93:10:c8:38:b8:96:a9:90:4b:ff:a1:5f:4f:04:ef: + 6c:3e:9c:88:06:c9:50:8f:a6:73:f7:57:31:1b:be:bc:e4:2f: + db:f8:ba:d3:5b:e0:b4:e7:e6:79:62:0e:0c:a2:d7:6a:63:73: + 31:b5:f5:a8:48:a4:3b:08:2d:a2:5d:90:d7:b4:7c:25:4f:11: + 56:30:c4:b6:44:9d:7b:2c:9d:e5:5e:e6:ef:0c:61:aa:bf:e4: + 2a:1b:ee:84:9e:b8:83:7d:c1:43:ce:44:a7:13:70:0d:91:1f: + f4:c8:13:ad:83:60:d9:d8:72:a8:73:24:1e:b5:ac:22:0e:ca: + 17:89:62:58:44:1b:ab:89:25:01:00:0f:cd:c4:1b:62:db:51: + b4:d3:0f:51:2a:9b:f4:bc:73:fc:76:ce:36:a4:cd:d9:d8:2c: + ea:ae:9b:f5:2a:b2:90:d1:4d:75:18:8a:3f:8a:41:90:23:7d: + 5b:4b:fe:a4:03:58:9b:46:b2:c3:60:60:83:f8:7d:50:41:ce: + c2:a1:90:c3:bb:ef:02:2f:d2:15:54:ee:44:15:d9:0a:ae:a7: + 8a:33:ed:b1:2d:76:36:26:dc:04:eb:9f:f7:61:1f:15:dc:87: + 6f:ee:46:96:28:ad:a1:26:7d:0a:09:a7:2e:04:a3:8d:bc:f8: + bc:04:30:01 +-----BEGIN CERTIFICATE----- +MIIE0DCCA7igAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT +EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp +ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTExMDUwMzA3MDAwMFoXDTMxMDUwMzA3 +MDAwMFowgbQxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH +EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjEtMCsGA1UE +CxMkaHR0cDovL2NlcnRzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkvMTMwMQYDVQQD +EypHbyBEYWRkeSBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC54MsQ1K92vdSTYuswZLiBCGzD +BNliF44v/z5lz4/OYuY8UhzaFkVLVat4a2ODYpDOD2lsmcgaFItMzEUz6ojcnqOv +K/6AYZ15V8TPLvQ/MDxdR/yaFrzDN5ZBUY4RS1T4KL7QjL7wMDge87Am+GZHY23e +cSZHjzhHU9FGHbTj3ADqRay9vHHZqm8A29vNMDp5T19MR/gd71vCxJ1gO7GyQ5HY +pDNO6rPWJ0+tJYqlxvTV0KaudAVkV4i1RFXULSo6Pvi4vekyCgKUZMQWOlDxSq7n +eTOvDCAHf+jfBDnCaQJsY1L6d8EbyHSHyLmTGFBUNUtpTrw700kuH9zB0lL7AgMB +AAGjggEaMIIBFjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV +HQ4EFgQUQMK9J47MNIMwojPX+2yz8LQsgM4wHwYDVR0jBBgwFoAUOpqFBxBnKLbv +9r0FQW4gwZTaD94wNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8v +b2NzcC5nb2RhZGR5LmNvbS8wNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2NybC5n +b2RhZGR5LmNvbS9nZHJvb3QtZzIuY3JsMEYGA1UdIAQ/MD0wOwYEVR0gADAzMDEG +CCsGAQUFBwIBFiVodHRwczovL2NlcnRzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkv +MA0GCSqGSIb3DQEBCwUAA4IBAQAIfmyTEMg4uJapkEv/oV9PBO9sPpyIBslQj6Zz +91cxG7685C/b+LrTW+C05+Z5Yg4MotdqY3MxtfWoSKQ7CC2iXZDXtHwlTxFWMMS2 +RJ17LJ3lXubvDGGqv+QqG+6EnriDfcFDzkSnE3ANkR/0yBOtg2DZ2HKocyQetawi +DsoXiWJYRBuriSUBAA/NxBti21G00w9RKpv0vHP8ds42pM3Z2Czqrpv1KrKQ0U11 +GIo/ikGQI31bS/6kA1ibRrLDYGCD+H1QQc7CoZDDu+8CL9IVVO5EFdkKrqeKM+2x +LXY2JtwE65/3YR8V3Idv7kaWKK2hJn0KCacuBKONvPi8BDAB +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_36[] = { + 0x30, 0x82, 0x04, 0xd0, 0x30, 0x82, 0x03, 0xb8, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x01, 0x07, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0x83, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, + 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, + 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, + 0x6c, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x11, 0x47, 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, + 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x28, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, + 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, 0x30, 0x30, 0x30, + 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x81, 0xb4, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, + 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, + 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x47, + 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2c, 0x20, + 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65, + 0x72, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x2f, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x2a, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xb9, 0xe0, 0xcb, 0x10, 0xd4, 0xaf, 0x76, + 0xbd, 0xd4, 0x93, 0x62, 0xeb, 0x30, 0x64, 0xb8, 0x81, 0x08, 0x6c, 0xc3, + 0x04, 0xd9, 0x62, 0x17, 0x8e, 0x2f, 0xff, 0x3e, 0x65, 0xcf, 0x8f, 0xce, + 0x62, 0xe6, 0x3c, 0x52, 0x1c, 0xda, 0x16, 0x45, 0x4b, 0x55, 0xab, 0x78, + 0x6b, 0x63, 0x83, 0x62, 0x90, 0xce, 0x0f, 0x69, 0x6c, 0x99, 0xc8, 0x1a, + 0x14, 0x8b, 0x4c, 0xcc, 0x45, 0x33, 0xea, 0x88, 0xdc, 0x9e, 0xa3, 0xaf, + 0x2b, 0xfe, 0x80, 0x61, 0x9d, 0x79, 0x57, 0xc4, 0xcf, 0x2e, 0xf4, 0x3f, + 0x30, 0x3c, 0x5d, 0x47, 0xfc, 0x9a, 0x16, 0xbc, 0xc3, 0x37, 0x96, 0x41, + 0x51, 0x8e, 0x11, 0x4b, 0x54, 0xf8, 0x28, 0xbe, 0xd0, 0x8c, 0xbe, 0xf0, + 0x30, 0x38, 0x1e, 0xf3, 0xb0, 0x26, 0xf8, 0x66, 0x47, 0x63, 0x6d, 0xde, + 0x71, 0x26, 0x47, 0x8f, 0x38, 0x47, 0x53, 0xd1, 0x46, 0x1d, 0xb4, 0xe3, + 0xdc, 0x00, 0xea, 0x45, 0xac, 0xbd, 0xbc, 0x71, 0xd9, 0xaa, 0x6f, 0x00, + 0xdb, 0xdb, 0xcd, 0x30, 0x3a, 0x79, 0x4f, 0x5f, 0x4c, 0x47, 0xf8, 0x1d, + 0xef, 0x5b, 0xc2, 0xc4, 0x9d, 0x60, 0x3b, 0xb1, 0xb2, 0x43, 0x91, 0xd8, + 0xa4, 0x33, 0x4e, 0xea, 0xb3, 0xd6, 0x27, 0x4f, 0xad, 0x25, 0x8a, 0xa5, + 0xc6, 0xf4, 0xd5, 0xd0, 0xa6, 0xae, 0x74, 0x05, 0x64, 0x57, 0x88, 0xb5, + 0x44, 0x55, 0xd4, 0x2d, 0x2a, 0x3a, 0x3e, 0xf8, 0xb8, 0xbd, 0xe9, 0x32, + 0x0a, 0x02, 0x94, 0x64, 0xc4, 0x16, 0x3a, 0x50, 0xf1, 0x4a, 0xae, 0xe7, + 0x79, 0x33, 0xaf, 0x0c, 0x20, 0x07, 0x7f, 0xe8, 0xdf, 0x04, 0x39, 0xc2, + 0x69, 0x02, 0x6c, 0x63, 0x52, 0xfa, 0x77, 0xc1, 0x1b, 0xc8, 0x74, 0x87, + 0xc8, 0xb9, 0x93, 0x18, 0x50, 0x54, 0x35, 0x4b, 0x69, 0x4e, 0xbc, 0x3b, + 0xd3, 0x49, 0x2e, 0x1f, 0xdc, 0xc1, 0xd2, 0x52, 0xfb, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1a, 0x30, 0x82, 0x01, 0x16, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, + 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x40, 0xc2, 0xbd, 0x27, 0x8e, 0xcc, + 0x34, 0x83, 0x30, 0xa2, 0x33, 0xd7, 0xfb, 0x6c, 0xb3, 0xf0, 0xb4, 0x2c, + 0x80, 0xce, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0x3a, 0x9a, 0x85, 0x07, 0x10, 0x67, 0x28, 0xb6, 0xef, + 0xf6, 0xbd, 0x05, 0x41, 0x6e, 0x20, 0xc1, 0x94, 0xda, 0x0f, 0xde, 0x30, + 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x35, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, 0x26, 0x86, 0x24, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67, + 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, + 0x64, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x67, 0x32, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x46, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, 0x30, + 0x3b, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, + 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, + 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x08, 0x7e, 0x6c, 0x93, + 0x10, 0xc8, 0x38, 0xb8, 0x96, 0xa9, 0x90, 0x4b, 0xff, 0xa1, 0x5f, 0x4f, + 0x04, 0xef, 0x6c, 0x3e, 0x9c, 0x88, 0x06, 0xc9, 0x50, 0x8f, 0xa6, 0x73, + 0xf7, 0x57, 0x31, 0x1b, 0xbe, 0xbc, 0xe4, 0x2f, 0xdb, 0xf8, 0xba, 0xd3, + 0x5b, 0xe0, 0xb4, 0xe7, 0xe6, 0x79, 0x62, 0x0e, 0x0c, 0xa2, 0xd7, 0x6a, + 0x63, 0x73, 0x31, 0xb5, 0xf5, 0xa8, 0x48, 0xa4, 0x3b, 0x08, 0x2d, 0xa2, + 0x5d, 0x90, 0xd7, 0xb4, 0x7c, 0x25, 0x4f, 0x11, 0x56, 0x30, 0xc4, 0xb6, + 0x44, 0x9d, 0x7b, 0x2c, 0x9d, 0xe5, 0x5e, 0xe6, 0xef, 0x0c, 0x61, 0xaa, + 0xbf, 0xe4, 0x2a, 0x1b, 0xee, 0x84, 0x9e, 0xb8, 0x83, 0x7d, 0xc1, 0x43, + 0xce, 0x44, 0xa7, 0x13, 0x70, 0x0d, 0x91, 0x1f, 0xf4, 0xc8, 0x13, 0xad, + 0x83, 0x60, 0xd9, 0xd8, 0x72, 0xa8, 0x73, 0x24, 0x1e, 0xb5, 0xac, 0x22, + 0x0e, 0xca, 0x17, 0x89, 0x62, 0x58, 0x44, 0x1b, 0xab, 0x89, 0x25, 0x01, + 0x00, 0x0f, 0xcd, 0xc4, 0x1b, 0x62, 0xdb, 0x51, 0xb4, 0xd3, 0x0f, 0x51, + 0x2a, 0x9b, 0xf4, 0xbc, 0x73, 0xfc, 0x76, 0xce, 0x36, 0xa4, 0xcd, 0xd9, + 0xd8, 0x2c, 0xea, 0xae, 0x9b, 0xf5, 0x2a, 0xb2, 0x90, 0xd1, 0x4d, 0x75, + 0x18, 0x8a, 0x3f, 0x8a, 0x41, 0x90, 0x23, 0x7d, 0x5b, 0x4b, 0xfe, 0xa4, + 0x03, 0x58, 0x9b, 0x46, 0xb2, 0xc3, 0x60, 0x60, 0x83, 0xf8, 0x7d, 0x50, + 0x41, 0xce, 0xc2, 0xa1, 0x90, 0xc3, 0xbb, 0xef, 0x02, 0x2f, 0xd2, 0x15, + 0x54, 0xee, 0x44, 0x15, 0xd9, 0x0a, 0xae, 0xa7, 0x8a, 0x33, 0xed, 0xb1, + 0x2d, 0x76, 0x36, 0x26, 0xdc, 0x04, 0xeb, 0x9f, 0xf7, 0x61, 0x1f, 0x15, + 0xdc, 0x87, 0x6f, 0xee, 0x46, 0x96, 0x28, 0xad, 0xa1, 0x26, 0x7d, 0x0a, + 0x09, 0xa7, 0x2e, 0x04, 0xa3, 0x8d, 0xbc, 0xf8, 0xbc, 0x04, 0x30, 0x01, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 25:0c:e8:e0:30:61:2e:9f:2b:89:f7:05:4d:7c:f8:fd + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority + Validity + Not Before: Nov 8 00:00:00 2006 GMT + Not After : Nov 7 23:59:59 2021 GMT + Subject: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 2006 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 3 Public Primary Certification Authority - G5 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:af:24:08:08:29:7a:35:9e:60:0c:aa:e7:4b:3b: + 4e:dc:7c:bc:3c:45:1c:bb:2b:e0:fe:29:02:f9:57: + 08:a3:64:85:15:27:f5:f1:ad:c8:31:89:5d:22:e8: + 2a:aa:a6:42:b3:8f:f8:b9:55:b7:b1:b7:4b:b3:fe: + 8f:7e:07:57:ec:ef:43:db:66:62:15:61:cf:60:0d: + a4:d8:de:f8:e0:c3:62:08:3d:54:13:eb:49:ca:59: + 54:85:26:e5:2b:8f:1b:9f:eb:f5:a1:91:c2:33:49: + d8:43:63:6a:52:4b:d2:8f:e8:70:51:4d:d1:89:69: + 7b:c7:70:f6:b3:dc:12:74:db:7b:5d:4b:56:d3:96: + bf:15:77:a1:b0:f4:a2:25:f2:af:1c:92:67:18:e5: + f4:06:04:ef:90:b9:e4:00:e4:dd:3a:b5:19:ff:02: + ba:f4:3c:ee:e0:8b:eb:37:8b:ec:f4:d7:ac:f2:f6: + f0:3d:af:dd:75:91:33:19:1d:1c:40:cb:74:24:19: + 21:93:d9:14:fe:ac:2a:52:c7:8f:d5:04:49:e4:8d: + 63:47:88:3c:69:83:cb:fe:47:bd:2b:7e:4f:c5:95: + ae:0e:9d:d4:d1:43:c0:67:73:e3:14:08:7e:e5:3f: + 9f:73:b8:33:0a:cf:5d:3f:34:87:96:8a:ee:53:e8: + 25:15 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.verisign.com/pca3.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://www.verisign.com/cps + + X509v3 Subject Key Identifier: + 7F:D3:65:A7:C2:DD:EC:BB:F0:30:09:F3:43:39:FA:02:AF:33:31:33 + 1.3.6.1.5.5.7.1.12: + 0_.].[0Y0W0U..image/gif0!0.0...+..............k...j.H.,{..0%.#http://logo.verisign.com/vslogo.gif + Authority Information Access: + OCSP - URI:http://ocsp.verisign.com + + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication, Code Signing, Netscape Server Gated Crypto, 2.16.840.1.113733.1.8.1 + Signature Algorithm: sha1WithRSAEncryption + 13:02:dd:f8:e8:86:00:f2:5a:f8:f8:20:0c:59:88:62:07:ce: + ce:f7:4e:f9:bb:59:a1:98:e5:e1:38:dd:4e:bc:66:18:d3:ad: + eb:18:f2:0d:c9:6d:3e:4a:94:20:c3:3c:ba:bd:65:54:c6:af: + 44:b3:10:ad:2c:6b:3e:ab:d7:07:b6:b8:81:63:c5:f9:5e:2e: + e5:2a:67:ce:cd:33:0c:2a:d7:89:56:03:23:1f:b3:be:e8:3a: + 08:59:b4:ec:45:35:f7:8a:5b:ff:66:cf:50:af:c6:6d:57:8d: + 19:78:b7:b9:a2:d1:57:ea:1f:9a:4b:af:ba:c9:8e:12:7e:c6: + bd:ff +-----BEGIN CERTIFICATE----- +MIIE0DCCBDmgAwIBAgIQJQzo4DBhLp8rifcFTXz4/TANBgkqhkiG9w0BAQUFADBf +MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsT +LkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw +HhcNMDYxMTA4MDAwMDAwWhcNMjExMTA3MjM1OTU5WjCByjELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZv +ciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8 +RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbext0uz/o9+B1fs70Pb +ZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhDY2pSS9KP6HBR +TdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNH +iDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMB +AAGjggGbMIIBlzAPBgNVHRMBAf8EBTADAQH/MDEGA1UdHwQqMCgwJqAkoCKGIGh0 +dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMuY3JsMA4GA1UdDwEB/wQEAwIBBjA9 +BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVy +aXNpZ24uY29tL2NwczAdBgNVHQ4EFgQUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwbQYI +KwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQU +j+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29t +L3ZzbG9nby5naWYwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8v +b2NzcC52ZXJpc2lnbi5jb20wPgYDVR0lBDcwNQYIKwYBBQUHAwEGCCsGAQUFBwMC +BggrBgEFBQcDAwYJYIZIAYb4QgQBBgpghkgBhvhFAQgBMA0GCSqGSIb3DQEBBQUA +A4GBABMC3fjohgDyWvj4IAxZiGIHzs73Tvm7WaGY5eE43U68ZhjTresY8g3JbT5K +lCDDPLq9ZVTGr0SzEK0saz6r1we2uIFjxfleLuUqZ87NMwwq14lWAyMfs77oOghZ +tOxFNfeKW/9mz1Cvxm1XjRl4t7mi0VfqH5pLr7rJjhJ+xr3/ +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_37[] = { + 0x30, 0x82, 0x04, 0xd0, 0x30, 0x82, 0x04, 0x39, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x25, 0x0c, 0xe8, 0xe0, 0x30, 0x61, 0x2e, 0x9f, 0x2b, + 0x89, 0xf7, 0x05, 0x4d, 0x7c, 0xf8, 0xfd, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5f, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, + 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, + 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x30, 0x38, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 0x30, 0x37, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xca, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3a, 0x30, + 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, 0x63, 0x29, 0x20, + 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, + 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, + 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, + 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x45, 0x30, + 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, + 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, + 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, 0x24, 0x08, 0x08, 0x29, 0x7a, 0x35, + 0x9e, 0x60, 0x0c, 0xaa, 0xe7, 0x4b, 0x3b, 0x4e, 0xdc, 0x7c, 0xbc, 0x3c, + 0x45, 0x1c, 0xbb, 0x2b, 0xe0, 0xfe, 0x29, 0x02, 0xf9, 0x57, 0x08, 0xa3, + 0x64, 0x85, 0x15, 0x27, 0xf5, 0xf1, 0xad, 0xc8, 0x31, 0x89, 0x5d, 0x22, + 0xe8, 0x2a, 0xaa, 0xa6, 0x42, 0xb3, 0x8f, 0xf8, 0xb9, 0x55, 0xb7, 0xb1, + 0xb7, 0x4b, 0xb3, 0xfe, 0x8f, 0x7e, 0x07, 0x57, 0xec, 0xef, 0x43, 0xdb, + 0x66, 0x62, 0x15, 0x61, 0xcf, 0x60, 0x0d, 0xa4, 0xd8, 0xde, 0xf8, 0xe0, + 0xc3, 0x62, 0x08, 0x3d, 0x54, 0x13, 0xeb, 0x49, 0xca, 0x59, 0x54, 0x85, + 0x26, 0xe5, 0x2b, 0x8f, 0x1b, 0x9f, 0xeb, 0xf5, 0xa1, 0x91, 0xc2, 0x33, + 0x49, 0xd8, 0x43, 0x63, 0x6a, 0x52, 0x4b, 0xd2, 0x8f, 0xe8, 0x70, 0x51, + 0x4d, 0xd1, 0x89, 0x69, 0x7b, 0xc7, 0x70, 0xf6, 0xb3, 0xdc, 0x12, 0x74, + 0xdb, 0x7b, 0x5d, 0x4b, 0x56, 0xd3, 0x96, 0xbf, 0x15, 0x77, 0xa1, 0xb0, + 0xf4, 0xa2, 0x25, 0xf2, 0xaf, 0x1c, 0x92, 0x67, 0x18, 0xe5, 0xf4, 0x06, + 0x04, 0xef, 0x90, 0xb9, 0xe4, 0x00, 0xe4, 0xdd, 0x3a, 0xb5, 0x19, 0xff, + 0x02, 0xba, 0xf4, 0x3c, 0xee, 0xe0, 0x8b, 0xeb, 0x37, 0x8b, 0xec, 0xf4, + 0xd7, 0xac, 0xf2, 0xf6, 0xf0, 0x3d, 0xaf, 0xdd, 0x75, 0x91, 0x33, 0x19, + 0x1d, 0x1c, 0x40, 0xcb, 0x74, 0x24, 0x19, 0x21, 0x93, 0xd9, 0x14, 0xfe, + 0xac, 0x2a, 0x52, 0xc7, 0x8f, 0xd5, 0x04, 0x49, 0xe4, 0x8d, 0x63, 0x47, + 0x88, 0x3c, 0x69, 0x83, 0xcb, 0xfe, 0x47, 0xbd, 0x2b, 0x7e, 0x4f, 0xc5, + 0x95, 0xae, 0x0e, 0x9d, 0xd4, 0xd1, 0x43, 0xc0, 0x67, 0x73, 0xe3, 0x14, + 0x08, 0x7e, 0xe5, 0x3f, 0x9f, 0x73, 0xb8, 0x33, 0x0a, 0xcf, 0x5d, 0x3f, + 0x34, 0x87, 0x96, 0x8a, 0xee, 0x53, 0xe8, 0x25, 0x15, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x9b, 0x30, 0x82, 0x01, 0x97, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, + 0x01, 0x01, 0xff, 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a, + 0x30, 0x28, 0x30, 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, + 0x61, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3d, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, + 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, + 0x73, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, + 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x6d, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, + 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, + 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, + 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, + 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, + 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, + 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, + 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x3e, 0x06, 0x03, 0x55, 0x1d, 0x25, + 0x04, 0x37, 0x30, 0x35, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x06, 0x09, + 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x04, 0x01, 0x06, 0x0a, 0x60, + 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x08, 0x01, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, + 0x03, 0x81, 0x81, 0x00, 0x13, 0x02, 0xdd, 0xf8, 0xe8, 0x86, 0x00, 0xf2, + 0x5a, 0xf8, 0xf8, 0x20, 0x0c, 0x59, 0x88, 0x62, 0x07, 0xce, 0xce, 0xf7, + 0x4e, 0xf9, 0xbb, 0x59, 0xa1, 0x98, 0xe5, 0xe1, 0x38, 0xdd, 0x4e, 0xbc, + 0x66, 0x18, 0xd3, 0xad, 0xeb, 0x18, 0xf2, 0x0d, 0xc9, 0x6d, 0x3e, 0x4a, + 0x94, 0x20, 0xc3, 0x3c, 0xba, 0xbd, 0x65, 0x54, 0xc6, 0xaf, 0x44, 0xb3, + 0x10, 0xad, 0x2c, 0x6b, 0x3e, 0xab, 0xd7, 0x07, 0xb6, 0xb8, 0x81, 0x63, + 0xc5, 0xf9, 0x5e, 0x2e, 0xe5, 0x2a, 0x67, 0xce, 0xcd, 0x33, 0x0c, 0x2a, + 0xd7, 0x89, 0x56, 0x03, 0x23, 0x1f, 0xb3, 0xbe, 0xe8, 0x3a, 0x08, 0x59, + 0xb4, 0xec, 0x45, 0x35, 0xf7, 0x8a, 0x5b, 0xff, 0x66, 0xcf, 0x50, 0xaf, + 0xc6, 0x6d, 0x57, 0x8d, 0x19, 0x78, 0xb7, 0xb9, 0xa2, 0xd1, 0x57, 0xea, + 0x1f, 0x9a, 0x4b, 0xaf, 0xba, 0xc9, 0x8e, 0x12, 0x7e, 0xc6, 0xbd, 0xff, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 2c:69:e1:2f:6a:67:0b:d9:9d:d2:0f:91:9e:f0:9e:51 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=thawte, Inc., OU=Certification Services Division, OU=(c) 2006 thawte, Inc. - For authorized use only, CN=thawte Primary Root CA + Validity + Not Before: Jun 10 00:00:00 2014 GMT + Not After : Jun 9 23:59:59 2024 GMT + Subject: C=US, O=thawte, Inc., OU=Domain Validated SSL, CN=thawte DV SSL CA - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:ea:94:07:85:c8:41:2c:f6:83:12:6c:92:5f:ab: + 1f:00:d4:96:6f:74:cd:2e:11:e9:6c:0f:39:01:b9: + 48:90:40:39:4d:c4:a2:c8:79:6a:a5:9a:bd:91:44: + 65:77:54:ad:ff:25:5f:ee:42:fb:b3:02:0f:ea:5d: + 7a:dd:1a:54:9e:d7:73:42:9b:cc:79:5f:c5:4d:f4: + b7:0b:18:39:20:7a:dd:50:01:5d:34:45:5f:4c:11: + 0e:f5:87:26:26:b4:b0:f3:7e:71:a0:31:71:50:89: + 68:5a:63:8a:14:62:e5:8c:3a:16:55:0d:3e:eb:aa: + 80:1d:71:7a:e3:87:07:ab:bd:a2:74:cd:da:08:01: + 9d:1b:cc:27:88:8c:47:d4:69:25:42:d6:bb:50:6d: + 85:50:d0:48:82:0d:08:9f:e9:23:e3:42:c6:3c:98: + b8:bb:6e:c5:70:13:df:19:1d:01:fd:d2:b5:4e:e6: + 62:f4:07:fa:6b:7d:11:77:c4:62:4f:40:4e:a5:78: + 97:ab:2c:4d:0c:a7:7c:c3:c4:50:32:9f:d0:70:9b: + 0f:ff:ff:75:59:34:85:ad:49:d5:35:ee:4f:5b:d4: + d4:36:95:a0:7e:e8:c5:a1:1c:bd:13:4e:7d:ee:63: + 6a:96:19:99:c8:a7:2a:00:e6:51:8d:46:eb:30:58: + e8:2d + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: https://www.thawte.com/cps + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + Authority Information Access: + OCSP - URI:http://t.symcd.com + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://t.symcb.com/ThawtePCA.crl + + X509v3 Subject Alternative Name: + DirName:/CN=SymantecPKI-1-698 + X509v3 Subject Key Identifier: + 9F:B8:C1:A9:6C:F2:F5:C0:22:2A:94:ED:5C:99:AC:D4:EC:D7:C6:07 + X509v3 Authority Key Identifier: + keyid:7B:5B:45:CF:AF:CE:CB:7A:FD:31:92:1A:6A:B6:F3:46:EB:57:48:50 + + Signature Algorithm: sha256WithRSAEncryption + 53:54:f2:47:a8:02:d7:ef:aa:35:78:be:4a:08:0d:90:18:4b: + 6d:9e:2a:53:2b:e9:54:17:77:74:29:7e:d0:37:07:05:b8:e4: + fa:b8:b4:63:98:44:dc:c6:4f:81:06:8c:3a:be:c7:30:57:c6: + 70:fc:d6:93:19:9f:c3:55:d7:3e:1f:72:8a:9d:30:5a:35:97: + 32:cb:63:e4:c6:72:df:fb:68:ca:69:2f:db:cd:50:38:3e:2b: + bb:ab:3b:82:c7:fd:4b:9b:bd:7c:41:98:ef:01:53:d8:35:8f: + 25:c9:03:06:e6:9c:57:c1:51:0f:9e:f6:7d:93:4d:f8:76:c8: + 3a:6b:f4:c4:8f:33:32:7f:9d:21:84:34:d9:a7:f9:92:fa:41: + 91:61:84:05:9d:a3:79:46:ce:67:e7:81:f2:5e:ac:4c:bc:a8: + ab:6a:6d:15:e2:9c:4e:5a:d9:63:80:bc:f7:42:eb:9a:44:c6: + 8c:6b:06:36:b4:8b:32:89:de:c2:f1:a8:26:aa:a9:ac:ff:ea: + 71:a6:e7:8c:41:fa:17:35:bb:b3:87:31:a9:93:c2:c8:58:e1: + 0a:4e:95:83:9c:b9:ed:3b:a5:ef:08:e0:74:f9:c3:1b:e6:07: + a3:ee:07:d7:42:22:79:21:a0:a1:d4:1d:26:d3:d0:d6:a6:5d: + 2b:41:c0:79 +-----BEGIN CERTIFICATE----- +MIIE0jCCA7qgAwIBAgIQLGnhL2pnC9md0g+RnvCeUTANBgkqhkiG9w0BAQsFADCB +qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV +BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMTQwNjEwMDAwMDAwWhcNMjQw +NjA5MjM1OTU5WjBjMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3RlLCBJbmMu +MR0wGwYDVQQLExREb21haW4gVmFsaWRhdGVkIFNTTDEeMBwGA1UEAxMVdGhhd3Rl +IERWIFNTTCBDQSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +6pQHhchBLPaDEmySX6sfANSWb3TNLhHpbA85AblIkEA5TcSiyHlqpZq9kURld1St +/yVf7kL7swIP6l163RpUntdzQpvMeV/FTfS3Cxg5IHrdUAFdNEVfTBEO9YcmJrSw +835xoDFxUIloWmOKFGLljDoWVQ0+66qAHXF644cHq72idM3aCAGdG8wniIxH1Gkl +Qta7UG2FUNBIgg0In+kj40LGPJi4u27FcBPfGR0B/dK1TuZi9Af6a30Rd8RiT0BO +pXiXqyxNDKd8w8RQMp/QcJsP//91WTSFrUnVNe5PW9TUNpWgfujFoRy9E0597mNq +lhmZyKcqAOZRjUbrMFjoLQIDAQABo4IBOTCCATUwEgYDVR0TAQH/BAgwBgEB/wIB +ADBBBgNVHSAEOjA4MDYGCmCGSAGG+EUBBzYwKDAmBggrBgEFBQcCARYaaHR0cHM6 +Ly93d3cudGhhd3RlLmNvbS9jcHMwDgYDVR0PAQH/BAQDAgEGMC4GCCsGAQUFBwEB +BCIwIDAeBggrBgEFBQcwAYYSaHR0cDovL3Quc3ltY2QuY29tMDEGA1UdHwQqMCgw +JqAkoCKGIGh0dHA6Ly90LnN5bWNiLmNvbS9UaGF3dGVQQ0EuY3JsMCkGA1UdEQQi +MCCkHjAcMRowGAYDVQQDExFTeW1hbnRlY1BLSS0xLTY5ODAdBgNVHQ4EFgQUn7jB +qWzy9cAiKpTtXJms1OzXxgcwHwYDVR0jBBgwFoAUe1tFz6/Oy3r9MZIaarbzRutX +SFAwDQYJKoZIhvcNAQELBQADggEBAFNU8keoAtfvqjV4vkoIDZAYS22eKlMr6VQX +d3QpftA3BwW45Pq4tGOYRNzGT4EGjDq+xzBXxnD81pMZn8NV1z4fcoqdMFo1lzLL +Y+TGct/7aMppL9vNUDg+K7urO4LH/UubvXxBmO8BU9g1jyXJAwbmnFfBUQ+e9n2T +Tfh2yDpr9MSPMzJ/nSGENNmn+ZL6QZFhhAWdo3lGzmfngfJerEy8qKtqbRXinE5a +2WOAvPdC65pExoxrBja0izKJ3sLxqCaqqaz/6nGm54xB+hc1u7OHMamTwshY4QpO +lYOcue07pe8I4HT5wxvmB6PuB9dCInkhoKHUHSbT0NamXStBwHk= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_38[] = { + 0x30, 0x82, 0x04, 0xd2, 0x30, 0x82, 0x03, 0xba, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x2c, 0x69, 0xe1, 0x2f, 0x6a, 0x67, 0x0b, 0xd9, 0x9d, + 0xd2, 0x0f, 0x91, 0x9e, 0xf0, 0x9e, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, + 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, + 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x36, 0x31, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, + 0x36, 0x30, 0x39, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x63, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x14, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x20, 0x53, 0x53, 0x4c, 0x31, 0x1e, 0x30, 0x1c, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x15, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, + 0x20, 0x44, 0x56, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, + 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xea, 0x94, 0x07, 0x85, 0xc8, 0x41, 0x2c, 0xf6, 0x83, 0x12, 0x6c, 0x92, + 0x5f, 0xab, 0x1f, 0x00, 0xd4, 0x96, 0x6f, 0x74, 0xcd, 0x2e, 0x11, 0xe9, + 0x6c, 0x0f, 0x39, 0x01, 0xb9, 0x48, 0x90, 0x40, 0x39, 0x4d, 0xc4, 0xa2, + 0xc8, 0x79, 0x6a, 0xa5, 0x9a, 0xbd, 0x91, 0x44, 0x65, 0x77, 0x54, 0xad, + 0xff, 0x25, 0x5f, 0xee, 0x42, 0xfb, 0xb3, 0x02, 0x0f, 0xea, 0x5d, 0x7a, + 0xdd, 0x1a, 0x54, 0x9e, 0xd7, 0x73, 0x42, 0x9b, 0xcc, 0x79, 0x5f, 0xc5, + 0x4d, 0xf4, 0xb7, 0x0b, 0x18, 0x39, 0x20, 0x7a, 0xdd, 0x50, 0x01, 0x5d, + 0x34, 0x45, 0x5f, 0x4c, 0x11, 0x0e, 0xf5, 0x87, 0x26, 0x26, 0xb4, 0xb0, + 0xf3, 0x7e, 0x71, 0xa0, 0x31, 0x71, 0x50, 0x89, 0x68, 0x5a, 0x63, 0x8a, + 0x14, 0x62, 0xe5, 0x8c, 0x3a, 0x16, 0x55, 0x0d, 0x3e, 0xeb, 0xaa, 0x80, + 0x1d, 0x71, 0x7a, 0xe3, 0x87, 0x07, 0xab, 0xbd, 0xa2, 0x74, 0xcd, 0xda, + 0x08, 0x01, 0x9d, 0x1b, 0xcc, 0x27, 0x88, 0x8c, 0x47, 0xd4, 0x69, 0x25, + 0x42, 0xd6, 0xbb, 0x50, 0x6d, 0x85, 0x50, 0xd0, 0x48, 0x82, 0x0d, 0x08, + 0x9f, 0xe9, 0x23, 0xe3, 0x42, 0xc6, 0x3c, 0x98, 0xb8, 0xbb, 0x6e, 0xc5, + 0x70, 0x13, 0xdf, 0x19, 0x1d, 0x01, 0xfd, 0xd2, 0xb5, 0x4e, 0xe6, 0x62, + 0xf4, 0x07, 0xfa, 0x6b, 0x7d, 0x11, 0x77, 0xc4, 0x62, 0x4f, 0x40, 0x4e, + 0xa5, 0x78, 0x97, 0xab, 0x2c, 0x4d, 0x0c, 0xa7, 0x7c, 0xc3, 0xc4, 0x50, + 0x32, 0x9f, 0xd0, 0x70, 0x9b, 0x0f, 0xff, 0xff, 0x75, 0x59, 0x34, 0x85, + 0xad, 0x49, 0xd5, 0x35, 0xee, 0x4f, 0x5b, 0xd4, 0xd4, 0x36, 0x95, 0xa0, + 0x7e, 0xe8, 0xc5, 0xa1, 0x1c, 0xbd, 0x13, 0x4e, 0x7d, 0xee, 0x63, 0x6a, + 0x96, 0x19, 0x99, 0xc8, 0xa7, 0x2a, 0x00, 0xe6, 0x51, 0x8d, 0x46, 0xeb, + 0x30, 0x58, 0xe8, 0x2d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, + 0x39, 0x30, 0x82, 0x01, 0x35, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3a, 0x30, 0x38, + 0x30, 0x36, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, + 0x07, 0x36, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0e, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, + 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, + 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x74, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a, 0x30, 0x28, 0x30, + 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x74, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, + 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, + 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x36, 0x39, 0x38, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x9f, 0xb8, 0xc1, + 0xa9, 0x6c, 0xf2, 0xf5, 0xc0, 0x22, 0x2a, 0x94, 0xed, 0x5c, 0x99, 0xac, + 0xd4, 0xec, 0xd7, 0xc6, 0x07, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, + 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7b, 0x5b, 0x45, 0xcf, 0xaf, 0xce, + 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, 0x6a, 0xb6, 0xf3, 0x46, 0xeb, 0x57, + 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x53, 0x54, + 0xf2, 0x47, 0xa8, 0x02, 0xd7, 0xef, 0xaa, 0x35, 0x78, 0xbe, 0x4a, 0x08, + 0x0d, 0x90, 0x18, 0x4b, 0x6d, 0x9e, 0x2a, 0x53, 0x2b, 0xe9, 0x54, 0x17, + 0x77, 0x74, 0x29, 0x7e, 0xd0, 0x37, 0x07, 0x05, 0xb8, 0xe4, 0xfa, 0xb8, + 0xb4, 0x63, 0x98, 0x44, 0xdc, 0xc6, 0x4f, 0x81, 0x06, 0x8c, 0x3a, 0xbe, + 0xc7, 0x30, 0x57, 0xc6, 0x70, 0xfc, 0xd6, 0x93, 0x19, 0x9f, 0xc3, 0x55, + 0xd7, 0x3e, 0x1f, 0x72, 0x8a, 0x9d, 0x30, 0x5a, 0x35, 0x97, 0x32, 0xcb, + 0x63, 0xe4, 0xc6, 0x72, 0xdf, 0xfb, 0x68, 0xca, 0x69, 0x2f, 0xdb, 0xcd, + 0x50, 0x38, 0x3e, 0x2b, 0xbb, 0xab, 0x3b, 0x82, 0xc7, 0xfd, 0x4b, 0x9b, + 0xbd, 0x7c, 0x41, 0x98, 0xef, 0x01, 0x53, 0xd8, 0x35, 0x8f, 0x25, 0xc9, + 0x03, 0x06, 0xe6, 0x9c, 0x57, 0xc1, 0x51, 0x0f, 0x9e, 0xf6, 0x7d, 0x93, + 0x4d, 0xf8, 0x76, 0xc8, 0x3a, 0x6b, 0xf4, 0xc4, 0x8f, 0x33, 0x32, 0x7f, + 0x9d, 0x21, 0x84, 0x34, 0xd9, 0xa7, 0xf9, 0x92, 0xfa, 0x41, 0x91, 0x61, + 0x84, 0x05, 0x9d, 0xa3, 0x79, 0x46, 0xce, 0x67, 0xe7, 0x81, 0xf2, 0x5e, + 0xac, 0x4c, 0xbc, 0xa8, 0xab, 0x6a, 0x6d, 0x15, 0xe2, 0x9c, 0x4e, 0x5a, + 0xd9, 0x63, 0x80, 0xbc, 0xf7, 0x42, 0xeb, 0x9a, 0x44, 0xc6, 0x8c, 0x6b, + 0x06, 0x36, 0xb4, 0x8b, 0x32, 0x89, 0xde, 0xc2, 0xf1, 0xa8, 0x26, 0xaa, + 0xa9, 0xac, 0xff, 0xea, 0x71, 0xa6, 0xe7, 0x8c, 0x41, 0xfa, 0x17, 0x35, + 0xbb, 0xb3, 0x87, 0x31, 0xa9, 0x93, 0xc2, 0xc8, 0x58, 0xe1, 0x0a, 0x4e, + 0x95, 0x83, 0x9c, 0xb9, 0xed, 0x3b, 0xa5, 0xef, 0x08, 0xe0, 0x74, 0xf9, + 0xc3, 0x1b, 0xe6, 0x07, 0xa3, 0xee, 0x07, 0xd7, 0x42, 0x22, 0x79, 0x21, + 0xa0, 0xa1, 0xd4, 0x1d, 0x26, 0xd3, 0xd0, 0xd6, 0xa6, 0x5d, 0x2b, 0x41, + 0xc0, 0x79, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1372799044 (0x51d34044) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=Entrust, Inc., OU=www.entrust.net/CPS is incorporated by reference, OU=(c) 2006 Entrust, Inc., CN=Entrust Root Certification Authority + Validity + Not Before: Sep 22 17:14:57 2014 GMT + Not After : Sep 23 01:31:53 2024 GMT + Subject: C=US, O=Entrust, Inc., OU=See www.entrust.net/legal-terms, OU=(c) 2009 Entrust, Inc. - for authorized use only, CN=Entrust Root Certification Authority - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:ba:84:b6:72:db:9e:0c:6b:e2:99:e9:30:01:a7: + 76:ea:32:b8:95:41:1a:c9:da:61:4e:58:72:cf:fe: + f6:82:79:bf:73:61:06:0a:a5:27:d8:b3:5f:d3:45: + 4e:1c:72:d6:4e:32:f2:72:8a:0f:f7:83:19:d0:6a: + 80:80:00:45:1e:b0:c7:e7:9a:bf:12:57:27:1c:a3: + 68:2f:0a:87:bd:6a:6b:0e:5e:65:f3:1c:77:d5:d4: + 85:8d:70:21:b4:b3:32:e7:8b:a2:d5:86:39:02:b1: + b8:d2:47:ce:e4:c9:49:c4:3b:a7:de:fb:54:7d:57: + be:f0:e8:6e:c2:79:b2:3a:0b:55:e2:50:98:16:32: + 13:5c:2f:78:56:c1:c2:94:b3:f2:5a:e4:27:9a:9f: + 24:d7:c6:ec:d0:9b:25:82:e3:cc:c2:c4:45:c5:8c: + 97:7a:06:6b:2a:11:9f:a9:0a:6e:48:3b:6f:db:d4: + 11:19:42:f7:8f:07:bf:f5:53:5f:9c:3e:f4:17:2c: + e6:69:ac:4e:32:4c:62:77:ea:b7:e8:e5:bb:34:bc: + 19:8b:ae:9c:51:e7:b7:7e:b5:53:b1:33:22:e5:6d: + cf:70:3c:1a:fa:e2:9b:67:b6:83:f4:8d:a5:af:62: + 4c:4d:e0:58:ac:64:34:12:03:f8:b6:8d:94:63:24: + a4:71 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:1 + Authority Information Access: + OCSP - URI:http://ocsp.entrust.net + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.entrust.net/rootca1.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: http://www.entrust.net/CPS + + X509v3 Subject Key Identifier: + 6A:72:26:7A:D0:1E:EF:7D:E7:3B:69:51:D4:6C:8D:9F:90:12:66:AB + X509v3 Authority Key Identifier: + keyid:68:90:E4:67:A4:A6:53:80:C7:86:66:A4:F1:F7:4B:43:FB:84:BD:6D + + Signature Algorithm: sha256WithRSAEncryption + 69:33:83:fc:28:7a:6f:7d:ef:9d:55:eb:c5:3e:7a:9d:75:b3: + cc:c3:38:36:d9:34:a2:28:68:18:ea:1e:69:d3:bd:e7:d0:77: + da:b8:00:83:4e:4a:cf:6f:d1:f1:c1:22:3f:74:e4:f7:98:49: + 9e:9b:b6:9e:e1:db:98:77:2d:56:34:b1:a8:3c:d9:fd:c0:cd: + c7:bf:05:03:d4:02:c5:f1:e5:c6:da:08:a5:13:c7:62:23:11: + d1:61:30:1d:60:84:45:ef:79:a8:c6:26:93:a4:b7:cd:34:b8: + 69:c5:13:f6:91:b3:c9:45:73:76:b6:92:f6:76:0a:5b:e1:03: + 47:b7:e9:29:4c:91:32:23:37:4a:9c:35:d8:78:fd:1d:1f:e4: + 83:89:24:80:ad:b7:f9:cf:e4:5d:a5:d4:71:c4:85:5b:70:1f: + db:3f:1c:01:eb:1a:45:26:31:14:cc:65:bf:67:de:ca:cc:33: + 65:e5:41:91:d7:37:be:41:1a:96:9d:e6:8a:97:9d:a7:ce:ac: + 4e:9a:3d:bd:01:a0:6a:d9:4f:22:00:8b:44:d5:69:62:7b:2e: + eb:cc:ba:e7:92:7d:69:67:3d:fc:b8:7c:de:41:87:d0:69:ea: + ba:0a:18:7a:1a:95:43:b3:79:71:28:76:6d:a1:fb:57:4a:ec: + 4d:c8:0e:10 +-----BEGIN CERTIFICATE----- +MIIE/zCCA+egAwIBAgIEUdNARDANBgkqhkiG9w0BAQsFADCBsDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 +Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW +KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE0MDkyMjE3MTQ1N1oXDTI0MDkyMzAx +MzE1M1owgb4xCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgw +JgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQL +EzAoYykgMjAwOSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9u +bHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuoS2ctueDGvi +mekwAad26jK4lUEaydphTlhyz/72gnm/c2EGCqUn2LNf00VOHHLWTjLycooP94MZ +0GqAgABFHrDH55q/ElcnHKNoLwqHvWprDl5l8xx31dSFjXAhtLMy54ui1YY5ArG4 +0kfO5MlJxDun3vtUfVe+8OhuwnmyOgtV4lCYFjITXC94VsHClLPyWuQnmp8k18bs +0JslguPMwsRFxYyXegZrKhGfqQpuSDtv29QRGUL3jwe/9VNfnD70FyzmaaxOMkxi +d+q36OW7NLwZi66cUee3frVTsTMi5W3PcDwa+uKbZ7aD9I2lr2JMTeBYrGQ0EgP4 +to2UYySkcQIDAQABo4IBDzCCAQswDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQI +MAYBAf8CAQEwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdodHRwOi8vb2Nz +cC5lbnRydXN0Lm5ldDAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3JsLmVudHJ1 +c3QubmV0L3Jvb3RjYTEuY3JsMDsGA1UdIAQ0MDIwMAYEVR0gADAoMCYGCCsGAQUF +BwIBFhpodHRwOi8vd3d3LmVudHJ1c3QubmV0L0NQUzAdBgNVHQ4EFgQUanImetAe +733nO2lR1GyNn5ASZqswHwYDVR0jBBgwFoAUaJDkZ6SmU4DHhmak8fdLQ/uEvW0w +DQYJKoZIhvcNAQELBQADggEBAGkzg/woem99751V68U+ep11s8zDODbZNKIoaBjq +HmnTvefQd9q4AINOSs9v0fHBIj905PeYSZ6btp7h25h3LVY0sag82f3Azce/BQPU +AsXx5cbaCKUTx2IjEdFhMB1ghEXveajGJpOkt800uGnFE/aRs8lFc3a2kvZ2Clvh +A0e36SlMkTIjN0qcNdh4/R0f5IOJJICtt/nP5F2l1HHEhVtwH9s/HAHrGkUmMRTM +Zb9n3srMM2XlQZHXN75BGpad5oqXnafOrE6aPb0BoGrZTyIAi0TVaWJ7LuvMuueS +fWlnPfy4fN5Bh9Bp6roKGHoalUOzeXEodm2h+1dK7E3IDhA= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_39[] = { + 0x30, 0x82, 0x04, 0xff, 0x30, 0x82, 0x03, 0xe7, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x51, 0xd3, 0x40, 0x44, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xb0, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x30, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x43, 0x50, 0x53, 0x20, 0x69, 0x73, 0x20, + 0x69, 0x6e, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x20, 0x62, 0x79, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, + 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x45, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x2d, + 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, 0x45, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x34, 0x30, 0x39, 0x32, 0x32, 0x31, 0x37, 0x31, 0x34, 0x35, + 0x37, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x39, 0x32, 0x33, 0x30, 0x31, + 0x33, 0x31, 0x35, 0x33, 0x5a, 0x30, 0x81, 0xbe, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, + 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x45, 0x6e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x28, 0x30, + 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, 0x53, 0x65, 0x65, 0x20, + 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x2d, 0x74, 0x65, + 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x39, 0x20, 0x45, + 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, + 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, + 0x6c, 0x79, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x29, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, + 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, + 0x01, 0x01, 0x00, 0xba, 0x84, 0xb6, 0x72, 0xdb, 0x9e, 0x0c, 0x6b, 0xe2, + 0x99, 0xe9, 0x30, 0x01, 0xa7, 0x76, 0xea, 0x32, 0xb8, 0x95, 0x41, 0x1a, + 0xc9, 0xda, 0x61, 0x4e, 0x58, 0x72, 0xcf, 0xfe, 0xf6, 0x82, 0x79, 0xbf, + 0x73, 0x61, 0x06, 0x0a, 0xa5, 0x27, 0xd8, 0xb3, 0x5f, 0xd3, 0x45, 0x4e, + 0x1c, 0x72, 0xd6, 0x4e, 0x32, 0xf2, 0x72, 0x8a, 0x0f, 0xf7, 0x83, 0x19, + 0xd0, 0x6a, 0x80, 0x80, 0x00, 0x45, 0x1e, 0xb0, 0xc7, 0xe7, 0x9a, 0xbf, + 0x12, 0x57, 0x27, 0x1c, 0xa3, 0x68, 0x2f, 0x0a, 0x87, 0xbd, 0x6a, 0x6b, + 0x0e, 0x5e, 0x65, 0xf3, 0x1c, 0x77, 0xd5, 0xd4, 0x85, 0x8d, 0x70, 0x21, + 0xb4, 0xb3, 0x32, 0xe7, 0x8b, 0xa2, 0xd5, 0x86, 0x39, 0x02, 0xb1, 0xb8, + 0xd2, 0x47, 0xce, 0xe4, 0xc9, 0x49, 0xc4, 0x3b, 0xa7, 0xde, 0xfb, 0x54, + 0x7d, 0x57, 0xbe, 0xf0, 0xe8, 0x6e, 0xc2, 0x79, 0xb2, 0x3a, 0x0b, 0x55, + 0xe2, 0x50, 0x98, 0x16, 0x32, 0x13, 0x5c, 0x2f, 0x78, 0x56, 0xc1, 0xc2, + 0x94, 0xb3, 0xf2, 0x5a, 0xe4, 0x27, 0x9a, 0x9f, 0x24, 0xd7, 0xc6, 0xec, + 0xd0, 0x9b, 0x25, 0x82, 0xe3, 0xcc, 0xc2, 0xc4, 0x45, 0xc5, 0x8c, 0x97, + 0x7a, 0x06, 0x6b, 0x2a, 0x11, 0x9f, 0xa9, 0x0a, 0x6e, 0x48, 0x3b, 0x6f, + 0xdb, 0xd4, 0x11, 0x19, 0x42, 0xf7, 0x8f, 0x07, 0xbf, 0xf5, 0x53, 0x5f, + 0x9c, 0x3e, 0xf4, 0x17, 0x2c, 0xe6, 0x69, 0xac, 0x4e, 0x32, 0x4c, 0x62, + 0x77, 0xea, 0xb7, 0xe8, 0xe5, 0xbb, 0x34, 0xbc, 0x19, 0x8b, 0xae, 0x9c, + 0x51, 0xe7, 0xb7, 0x7e, 0xb5, 0x53, 0xb1, 0x33, 0x22, 0xe5, 0x6d, 0xcf, + 0x70, 0x3c, 0x1a, 0xfa, 0xe2, 0x9b, 0x67, 0xb6, 0x83, 0xf4, 0x8d, 0xa5, + 0xaf, 0x62, 0x4c, 0x4d, 0xe0, 0x58, 0xac, 0x64, 0x34, 0x12, 0x03, 0xf8, + 0xb6, 0x8d, 0x94, 0x63, 0x24, 0xa4, 0x71, 0x02, 0x03, 0x01, 0x00, 0x01, + 0xa3, 0x82, 0x01, 0x0f, 0x30, 0x82, 0x01, 0x0b, 0x30, 0x0e, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, + 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, + 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x01, 0x30, 0x33, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x27, 0x30, 0x25, + 0x30, 0x23, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x17, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, + 0x70, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, + 0x74, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a, + 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x63, + 0x61, 0x31, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, + 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, 0x04, 0x55, 0x1d, 0x20, + 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x6e, 0x65, 0x74, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x6a, 0x72, 0x26, 0x7a, 0xd0, 0x1e, + 0xef, 0x7d, 0xe7, 0x3b, 0x69, 0x51, 0xd4, 0x6c, 0x8d, 0x9f, 0x90, 0x12, + 0x66, 0xab, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0x68, 0x90, 0xe4, 0x67, 0xa4, 0xa6, 0x53, 0x80, 0xc7, + 0x86, 0x66, 0xa4, 0xf1, 0xf7, 0x4b, 0x43, 0xfb, 0x84, 0xbd, 0x6d, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, + 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x69, 0x33, 0x83, 0xfc, 0x28, + 0x7a, 0x6f, 0x7d, 0xef, 0x9d, 0x55, 0xeb, 0xc5, 0x3e, 0x7a, 0x9d, 0x75, + 0xb3, 0xcc, 0xc3, 0x38, 0x36, 0xd9, 0x34, 0xa2, 0x28, 0x68, 0x18, 0xea, + 0x1e, 0x69, 0xd3, 0xbd, 0xe7, 0xd0, 0x77, 0xda, 0xb8, 0x00, 0x83, 0x4e, + 0x4a, 0xcf, 0x6f, 0xd1, 0xf1, 0xc1, 0x22, 0x3f, 0x74, 0xe4, 0xf7, 0x98, + 0x49, 0x9e, 0x9b, 0xb6, 0x9e, 0xe1, 0xdb, 0x98, 0x77, 0x2d, 0x56, 0x34, + 0xb1, 0xa8, 0x3c, 0xd9, 0xfd, 0xc0, 0xcd, 0xc7, 0xbf, 0x05, 0x03, 0xd4, + 0x02, 0xc5, 0xf1, 0xe5, 0xc6, 0xda, 0x08, 0xa5, 0x13, 0xc7, 0x62, 0x23, + 0x11, 0xd1, 0x61, 0x30, 0x1d, 0x60, 0x84, 0x45, 0xef, 0x79, 0xa8, 0xc6, + 0x26, 0x93, 0xa4, 0xb7, 0xcd, 0x34, 0xb8, 0x69, 0xc5, 0x13, 0xf6, 0x91, + 0xb3, 0xc9, 0x45, 0x73, 0x76, 0xb6, 0x92, 0xf6, 0x76, 0x0a, 0x5b, 0xe1, + 0x03, 0x47, 0xb7, 0xe9, 0x29, 0x4c, 0x91, 0x32, 0x23, 0x37, 0x4a, 0x9c, + 0x35, 0xd8, 0x78, 0xfd, 0x1d, 0x1f, 0xe4, 0x83, 0x89, 0x24, 0x80, 0xad, + 0xb7, 0xf9, 0xcf, 0xe4, 0x5d, 0xa5, 0xd4, 0x71, 0xc4, 0x85, 0x5b, 0x70, + 0x1f, 0xdb, 0x3f, 0x1c, 0x01, 0xeb, 0x1a, 0x45, 0x26, 0x31, 0x14, 0xcc, + 0x65, 0xbf, 0x67, 0xde, 0xca, 0xcc, 0x33, 0x65, 0xe5, 0x41, 0x91, 0xd7, + 0x37, 0xbe, 0x41, 0x1a, 0x96, 0x9d, 0xe6, 0x8a, 0x97, 0x9d, 0xa7, 0xce, + 0xac, 0x4e, 0x9a, 0x3d, 0xbd, 0x01, 0xa0, 0x6a, 0xd9, 0x4f, 0x22, 0x00, + 0x8b, 0x44, 0xd5, 0x69, 0x62, 0x7b, 0x2e, 0xeb, 0xcc, 0xba, 0xe7, 0x92, + 0x7d, 0x69, 0x67, 0x3d, 0xfc, 0xb8, 0x7c, 0xde, 0x41, 0x87, 0xd0, 0x69, + 0xea, 0xba, 0x0a, 0x18, 0x7a, 0x1a, 0x95, 0x43, 0xb3, 0x79, 0x71, 0x28, + 0x76, 0x6d, 0xa1, 0xfb, 0x57, 0x4a, 0xec, 0x4d, 0xc8, 0x0e, 0x10, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 7 (0x7) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, ST=Arizona, L=Scottsdale, O=Starfield Technologies, Inc., CN=Starfield Root Certificate Authority - G2 + Validity + Not Before: May 3 07:00:00 2011 GMT + Not After : May 3 07:00:00 2031 GMT + Subject: C=US, ST=Arizona, L=Scottsdale, O=Starfield Technologies, Inc., OU=http://certs.starfieldtech.com/repository/, CN=Starfield Secure Certificate Authority - G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:e5:90:66:4b:ec:f9:46:71:a9:20:83:be:e9:6c: + bf:4a:c9:48:69:81:75:4e:6d:24:f6:cb:17:13:f8: + b0:71:59:84:7a:6b:2b:85:a4:34:b5:16:e5:cb:cc: + e9:41:70:2c:a4:2e:d6:fa:32:7d:e1:a8:de:94:10: + ac:31:c1:c0:d8:6a:ff:59:27:ab:76:d6:fc:0b:74: + 6b:b8:a7:ae:3f:c4:54:f4:b4:31:44:dd:93:56:8c: + a4:4c:5e:9b:89:cb:24:83:9b:e2:57:7d:b7:d8:12: + 1f:c9:85:6d:f4:d1:80:f1:50:9b:87:ae:d4:0b:10: + 05:fb:27:ba:28:6d:17:e9:0e:d6:4d:b9:39:55:06: + ff:0a:24:05:7e:2f:c6:1d:72:6c:d4:8b:29:8c:57: + 7d:da:d9:eb:66:1a:d3:4f:a7:df:7f:52:c4:30:c5: + a5:c9:0e:02:c5:53:bf:77:38:68:06:24:c3:66:c8: + 37:7e:30:1e:45:71:23:35:ff:90:d8:2a:9d:8d:e7: + b0:92:4d:3c:7f:2a:0a:93:dc:cd:16:46:65:f7:60: + 84:8b:76:4b:91:27:73:14:92:e0:ea:ee:8f:16:ea: + 8d:0e:3e:76:17:bf:7d:89:80:80:44:43:e7:2d:e0: + 43:09:75:da:36:e8:ad:db:89:3a:f5:5d:12:8e:23: + 04:83 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 25:45:81:68:50:26:38:3D:3B:2D:2C:BE:CD:6A:D9:B6:3D:B3:66:63 + X509v3 Authority Key Identifier: + keyid:7C:0C:32:1F:A7:D9:30:7F:C4:7D:68:A3:62:A8:A1:CE:AB:07:5B:27 + + Authority Information Access: + OCSP - URI:http://ocsp.starfieldtech.com/ + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.starfieldtech.com/sfroot-g2.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: https://certs.starfieldtech.com/repository/ + + Signature Algorithm: sha256WithRSAEncryption + 56:65:ca:fe:f3:3f:0a:a8:93:8b:18:c7:de:43:69:13:34:20: + be:4e:5f:78:a8:6b:9c:db:6a:4d:41:db:c1:13:ec:dc:31:00: + 22:5e:f7:00:9e:0c:e0:34:65:34:f9:b1:3a:4e:48:c8:12:81: + 88:5c:5b:3e:08:53:7a:f7:1a:64:df:b8:50:61:cc:53:51:40: + 29:4b:c2:f4:ae:3a:5f:e4:ca:ad:26:cc:4e:61:43:e5:fd:57: + a6:37:70:ce:43:2b:b0:94:c3:92:e9:e1:5f:aa:10:49:b7:69: + e4:e0:d0:1f:64:a4:2b:cd:1f:6f:a0:f8:84:24:18:ce:79:3d: + a9:91:bf:54:18:13:89:99:54:11:0d:55:c5:26:0b:79:4f:5a: + 1c:6e:f9:63:db:14:80:a4:07:ab:fa:b2:a5:b9:88:dd:91:fe: + 65:3b:a4:a3:79:be:89:4d:e1:d0:b0:f4:c8:17:0c:0a:96:14: + 7c:09:b7:6c:e1:c2:d8:55:d4:18:a0:aa:41:69:70:24:a3:b9: + ef:e9:5a:dc:3e:eb:94:4a:f0:b7:de:5f:0e:76:fa:fb:fb:69: + 03:45:40:50:ee:72:0c:a4:12:86:81:cd:13:d1:4e:c4:3c:ca: + 4e:0d:d2:26:f1:00:b7:b4:a6:a2:e1:6e:7a:81:fd:30:ac:7a: + 1f:c7:59:7b +-----BEGIN CERTIFICATE----- +MIIFADCCA+igAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs +ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTExMDUwMzA3MDAw +MFoXDTMxMDUwMzA3MDAwMFowgcYxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj +aG5vbG9naWVzLCBJbmMuMTMwMQYDVQQLEypodHRwOi8vY2VydHMuc3RhcmZpZWxk +dGVjaC5jb20vcmVwb3NpdG9yeS8xNDAyBgNVBAMTK1N0YXJmaWVsZCBTZWN1cmUg +Q2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDlkGZL7PlGcakgg77pbL9KyUhpgXVObST2yxcT+LBxWYR6ayuF +pDS1FuXLzOlBcCykLtb6Mn3hqN6UEKwxwcDYav9ZJ6t21vwLdGu4p64/xFT0tDFE +3ZNWjKRMXpuJyySDm+JXfbfYEh/JhW300YDxUJuHrtQLEAX7J7oobRfpDtZNuTlV +Bv8KJAV+L8YdcmzUiymMV33a2etmGtNPp99/UsQwxaXJDgLFU793OGgGJMNmyDd+ +MB5FcSM1/5DYKp2N57CSTTx/KgqT3M0WRmX3YISLdkuRJ3MUkuDq7o8W6o0OPnYX +v32JgIBEQ+ct4EMJddo26K3biTr1XRKOIwSDAgMBAAGjggEsMIIBKDAPBgNVHRMB +Af8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUJUWBaFAmOD07LSy+ +zWrZtj2zZmMwHwYDVR0jBBgwFoAUfAwyH6fZMH/EfWijYqihzqsHWycwOgYIKwYB +BQUHAQEELjAsMCoGCCsGAQUFBzABhh5odHRwOi8vb2NzcC5zdGFyZmllbGR0ZWNo +LmNvbS8wOwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL2NybC5zdGFyZmllbGR0ZWNo +LmNvbS9zZnJvb3QtZzIuY3JsMEwGA1UdIARFMEMwQQYEVR0gADA5MDcGCCsGAQUF +BwIBFitodHRwczovL2NlcnRzLnN0YXJmaWVsZHRlY2guY29tL3JlcG9zaXRvcnkv +MA0GCSqGSIb3DQEBCwUAA4IBAQBWZcr+8z8KqJOLGMfeQ2kTNCC+Tl94qGuc22pN +QdvBE+zcMQAiXvcAngzgNGU0+bE6TkjIEoGIXFs+CFN69xpk37hQYcxTUUApS8L0 +rjpf5MqtJsxOYUPl/VemN3DOQyuwlMOS6eFfqhBJt2nk4NAfZKQrzR9voPiEJBjO +eT2pkb9UGBOJmVQRDVXFJgt5T1ocbvlj2xSApAer+rKluYjdkf5lO6Sjeb6JTeHQ +sPTIFwwKlhR8Cbds4cLYVdQYoKpBaXAko7nv6VrcPuuUSvC33l8Odvr7+2kDRUBQ +7nIMpBKGgc0T0U7EPMpODdIm8QC3tKai4W56gf0wrHofx1l7 +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_40[] = { + 0x30, 0x82, 0x05, 0x00, 0x30, 0x82, 0x03, 0xe8, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x01, 0x07, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0x8f, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, + 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, + 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, + 0x6c, 0x65, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, + 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, + 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x29, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x1e, 0x17, + 0x0d, 0x31, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, 0x30, 0x30, 0x30, + 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x81, 0xc6, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, + 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, + 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, + 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, + 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x2a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, + 0x74, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x74, 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x31, 0x34, 0x30, 0x32, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2b, 0x53, 0x74, 0x61, 0x72, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, + 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe5, + 0x90, 0x66, 0x4b, 0xec, 0xf9, 0x46, 0x71, 0xa9, 0x20, 0x83, 0xbe, 0xe9, + 0x6c, 0xbf, 0x4a, 0xc9, 0x48, 0x69, 0x81, 0x75, 0x4e, 0x6d, 0x24, 0xf6, + 0xcb, 0x17, 0x13, 0xf8, 0xb0, 0x71, 0x59, 0x84, 0x7a, 0x6b, 0x2b, 0x85, + 0xa4, 0x34, 0xb5, 0x16, 0xe5, 0xcb, 0xcc, 0xe9, 0x41, 0x70, 0x2c, 0xa4, + 0x2e, 0xd6, 0xfa, 0x32, 0x7d, 0xe1, 0xa8, 0xde, 0x94, 0x10, 0xac, 0x31, + 0xc1, 0xc0, 0xd8, 0x6a, 0xff, 0x59, 0x27, 0xab, 0x76, 0xd6, 0xfc, 0x0b, + 0x74, 0x6b, 0xb8, 0xa7, 0xae, 0x3f, 0xc4, 0x54, 0xf4, 0xb4, 0x31, 0x44, + 0xdd, 0x93, 0x56, 0x8c, 0xa4, 0x4c, 0x5e, 0x9b, 0x89, 0xcb, 0x24, 0x83, + 0x9b, 0xe2, 0x57, 0x7d, 0xb7, 0xd8, 0x12, 0x1f, 0xc9, 0x85, 0x6d, 0xf4, + 0xd1, 0x80, 0xf1, 0x50, 0x9b, 0x87, 0xae, 0xd4, 0x0b, 0x10, 0x05, 0xfb, + 0x27, 0xba, 0x28, 0x6d, 0x17, 0xe9, 0x0e, 0xd6, 0x4d, 0xb9, 0x39, 0x55, + 0x06, 0xff, 0x0a, 0x24, 0x05, 0x7e, 0x2f, 0xc6, 0x1d, 0x72, 0x6c, 0xd4, + 0x8b, 0x29, 0x8c, 0x57, 0x7d, 0xda, 0xd9, 0xeb, 0x66, 0x1a, 0xd3, 0x4f, + 0xa7, 0xdf, 0x7f, 0x52, 0xc4, 0x30, 0xc5, 0xa5, 0xc9, 0x0e, 0x02, 0xc5, + 0x53, 0xbf, 0x77, 0x38, 0x68, 0x06, 0x24, 0xc3, 0x66, 0xc8, 0x37, 0x7e, + 0x30, 0x1e, 0x45, 0x71, 0x23, 0x35, 0xff, 0x90, 0xd8, 0x2a, 0x9d, 0x8d, + 0xe7, 0xb0, 0x92, 0x4d, 0x3c, 0x7f, 0x2a, 0x0a, 0x93, 0xdc, 0xcd, 0x16, + 0x46, 0x65, 0xf7, 0x60, 0x84, 0x8b, 0x76, 0x4b, 0x91, 0x27, 0x73, 0x14, + 0x92, 0xe0, 0xea, 0xee, 0x8f, 0x16, 0xea, 0x8d, 0x0e, 0x3e, 0x76, 0x17, + 0xbf, 0x7d, 0x89, 0x80, 0x80, 0x44, 0x43, 0xe7, 0x2d, 0xe0, 0x43, 0x09, + 0x75, 0xda, 0x36, 0xe8, 0xad, 0xdb, 0x89, 0x3a, 0xf5, 0x5d, 0x12, 0x8e, + 0x23, 0x04, 0x83, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x2c, + 0x30, 0x82, 0x01, 0x28, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, + 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x25, 0x45, 0x81, 0x68, 0x50, 0x26, 0x38, 0x3d, 0x3b, 0x2d, 0x2c, 0xbe, + 0xcd, 0x6a, 0xd9, 0xb6, 0x3d, 0xb3, 0x66, 0x63, 0x30, 0x1f, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7c, 0x0c, 0x32, + 0x1f, 0xa7, 0xd9, 0x30, 0x7f, 0xc4, 0x7d, 0x68, 0xa3, 0x62, 0xa8, 0xa1, + 0xce, 0xab, 0x07, 0x5b, 0x27, 0x30, 0x3a, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1e, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x73, + 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x1f, + 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0xa0, 0x2e, 0xa0, 0x2c, 0x86, 0x2a, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x73, + 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x72, 0x6f, 0x6f, 0x74, 0x2d, + 0x67, 0x32, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, + 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, 0x04, 0x55, 0x1d, 0x20, + 0x00, 0x30, 0x39, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x2b, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x56, 0x65, 0xca, 0xfe, + 0xf3, 0x3f, 0x0a, 0xa8, 0x93, 0x8b, 0x18, 0xc7, 0xde, 0x43, 0x69, 0x13, + 0x34, 0x20, 0xbe, 0x4e, 0x5f, 0x78, 0xa8, 0x6b, 0x9c, 0xdb, 0x6a, 0x4d, + 0x41, 0xdb, 0xc1, 0x13, 0xec, 0xdc, 0x31, 0x00, 0x22, 0x5e, 0xf7, 0x00, + 0x9e, 0x0c, 0xe0, 0x34, 0x65, 0x34, 0xf9, 0xb1, 0x3a, 0x4e, 0x48, 0xc8, + 0x12, 0x81, 0x88, 0x5c, 0x5b, 0x3e, 0x08, 0x53, 0x7a, 0xf7, 0x1a, 0x64, + 0xdf, 0xb8, 0x50, 0x61, 0xcc, 0x53, 0x51, 0x40, 0x29, 0x4b, 0xc2, 0xf4, + 0xae, 0x3a, 0x5f, 0xe4, 0xca, 0xad, 0x26, 0xcc, 0x4e, 0x61, 0x43, 0xe5, + 0xfd, 0x57, 0xa6, 0x37, 0x70, 0xce, 0x43, 0x2b, 0xb0, 0x94, 0xc3, 0x92, + 0xe9, 0xe1, 0x5f, 0xaa, 0x10, 0x49, 0xb7, 0x69, 0xe4, 0xe0, 0xd0, 0x1f, + 0x64, 0xa4, 0x2b, 0xcd, 0x1f, 0x6f, 0xa0, 0xf8, 0x84, 0x24, 0x18, 0xce, + 0x79, 0x3d, 0xa9, 0x91, 0xbf, 0x54, 0x18, 0x13, 0x89, 0x99, 0x54, 0x11, + 0x0d, 0x55, 0xc5, 0x26, 0x0b, 0x79, 0x4f, 0x5a, 0x1c, 0x6e, 0xf9, 0x63, + 0xdb, 0x14, 0x80, 0xa4, 0x07, 0xab, 0xfa, 0xb2, 0xa5, 0xb9, 0x88, 0xdd, + 0x91, 0xfe, 0x65, 0x3b, 0xa4, 0xa3, 0x79, 0xbe, 0x89, 0x4d, 0xe1, 0xd0, + 0xb0, 0xf4, 0xc8, 0x17, 0x0c, 0x0a, 0x96, 0x14, 0x7c, 0x09, 0xb7, 0x6c, + 0xe1, 0xc2, 0xd8, 0x55, 0xd4, 0x18, 0xa0, 0xaa, 0x41, 0x69, 0x70, 0x24, + 0xa3, 0xb9, 0xef, 0xe9, 0x5a, 0xdc, 0x3e, 0xeb, 0x94, 0x4a, 0xf0, 0xb7, + 0xde, 0x5f, 0x0e, 0x76, 0xfa, 0xfb, 0xfb, 0x69, 0x03, 0x45, 0x40, 0x50, + 0xee, 0x72, 0x0c, 0xa4, 0x12, 0x86, 0x81, 0xcd, 0x13, 0xd1, 0x4e, 0xc4, + 0x3c, 0xca, 0x4e, 0x0d, 0xd2, 0x26, 0xf1, 0x00, 0xb7, 0xb4, 0xa6, 0xa2, + 0xe1, 0x6e, 0x7a, 0x81, 0xfd, 0x30, 0xac, 0x7a, 0x1f, 0xc7, 0x59, 0x7b, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1372807406 (0x51d360ee) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=Entrust, Inc., OU=See www.entrust.net/legal-terms, OU=(c) 2009 Entrust, Inc. - for authorized use only, CN=Entrust Root Certification Authority - G2 + Validity + Not Before: Oct 22 17:05:14 2014 GMT + Not After : Oct 23 07:33:22 2024 GMT + Subject: C=US, O=Entrust, Inc., OU=See www.entrust.net/legal-terms, OU=(c) 2012 Entrust, Inc. - for authorized use only, CN=Entrust Certification Authority - L1K + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:da:3f:96:d0:4d:b9:2f:44:e7:db:39:5e:9b:50: + ee:5c:a5:61:da:41:67:53:09:aa:00:9a:8e:57:7f: + 29:6b:db:c7:e1:21:24:aa:3a:d0:8d:47:23:d2:ed: + 72:16:f0:91:21:d2:5d:b7:b8:4b:a8:83:8f:b7:91: + 32:68:cf:ce:25:93:2c:b2:7d:97:c8:fe:c1:b4:17: + ba:09:9e:03:90:93:7b:7c:49:83:22:68:8a:9b:de: + 47:c3:31:98:7a:2e:7d:40:0b:d2:ef:3e:d3:b2:8c: + aa:8f:48:a9:ff:00:e8:29:58:06:f7:b6:93:5a:94: + 73:26:26:ad:58:0e:e5:42:b8:d5:ea:73:79:64:68: + 53:25:b8:84:cf:94:7a:ae:06:45:0c:a3:6b:4d:d0: + c6:be:ea:18:a4:36:f0:92:b2:ba:1c:88:8f:3a:52: + 7f:f7:5e:6d:83:1c:9d:f0:1f:e5:c3:d6:dd:a5:78: + 92:3d:b0:6d:2c:ea:c9:cf:94:41:19:71:44:68:ba: + 47:3c:04:e9:5d:ba:3e:f0:35:f7:15:b6:9e:f2:2e: + 15:1e:3f:47:c8:c8:38:a7:73:45:5d:4d:b0:3b:b1: + 8e:17:29:37:ea:dd:05:01:22:bb:94:36:2a:8d:5b: + 35:fe:53:19:2f:08:46:c1:2a:b3:1a:62:1d:4e:2b: + d9:1b + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Basic Constraints: + CA:TRUE, pathlen:0 + Authority Information Access: + OCSP - URI:http://ocsp.entrust.net + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.entrust.net/g2ca.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: http://www.entrust.net/rpa + + X509v3 Subject Key Identifier: + 82:A2:70:74:DD:BC:53:3F:CF:7B:D4:F7:CD:7F:A7:60:C6:0A:4C:BF + X509v3 Authority Key Identifier: + keyid:6A:72:26:7A:D0:1E:EF:7D:E7:3B:69:51:D4:6C:8D:9F:90:12:66:AB + + Signature Algorithm: sha256WithRSAEncryption + 3f:1c:1a:5b:ff:40:22:1d:8f:35:0c:2d:aa:99:27:ab:c0:11: + 32:70:d7:36:28:69:a5:8d:b1:27:99:42:be:c4:93:eb:48:57: + 43:71:23:c4:e5:4e:ad:ae:43:6f:92:76:c5:19:ef:ca:bc:6f: + 42:4c:16:9a:86:a9:04:38:c7:65:f0:f5:0c:e0:4a:df:a2:fa: + ce:1a:11:a8:9c:69:2f:1b:df:ea:e2:32:f3:ce:4c:bc:46:0c: + c0:89:80:d1:87:6b:a2:cf:6b:d4:7f:fd:f5:60:52:67:57:a0: + 6d:d1:64:41:14:6d:34:62:ed:06:6c:24:f2:06:bc:28:02:af: + 03:2d:c2:33:05:fb:cb:aa:16:e8:65:10:43:f5:69:5c:e3:81: + 58:99:cd:6b:d3:b8:c7:7b:19:55:c9:40:ce:79:55:b8:73:89: + e9:5c:40:66:43:12:7f:07:b8:65:56:d5:8d:c3:a7:f5:b1:b6: + 65:9e:c0:83:36:7f:16:45:3c:74:4b:93:8a:3c:f1:2b:f5:35: + 70:73:7b:e7:82:04:b1:18:98:0e:d4:9c:6f:1a:fc:fc:a7:33: + a5:bb:bb:18:f3:6b:7a:5d:32:87:f7:6d:25:e4:e2:76:86:21: + 1e:11:46:cd:76:0e:6f:4f:a4:21:71:0a:84:a7:2d:36:a9:48: + 22:51:7e:82 +-----BEGIN CERTIFICATE----- +MIIFAzCCA+ugAwIBAgIEUdNg7jANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50 +cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs +IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz +dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMTQxMDIyMTcw +NTE0WhcNMjQxMDIzMDczMzIyWjCBujELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu +dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt +dGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0 +aG9yaXplZCB1c2Ugb25seTEuMCwGA1UEAxMlRW50cnVzdCBDZXJ0aWZpY2F0aW9u +IEF1dGhvcml0eSAtIEwxSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANo/ltBNuS9E59s5XptQ7lylYdpBZ1MJqgCajld/KWvbx+EhJKo60I1HI9Ltchbw +kSHSXbe4S6iDj7eRMmjPziWTLLJ9l8j+wbQXugmeA5CTe3xJgyJoipveR8MxmHou +fUAL0u8+07KMqo9Iqf8A6ClYBve2k1qUcyYmrVgO5UK41epzeWRoUyW4hM+Ueq4G +RQyja03Qxr7qGKQ28JKyuhyIjzpSf/debYMcnfAf5cPW3aV4kj2wbSzqyc+UQRlx +RGi6RzwE6V26PvA19xW2nvIuFR4/R8jIOKdzRV1NsDuxjhcpN+rdBQEiu5Q2Ko1b +Nf5TGS8IRsEqsxpiHU4r2RsCAwEAAaOCAQkwggEFMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMECDAGAQH/AgEAMDMGCCsGAQUFBwEBBCcwJTAjBggrBgEFBQcwAYYXaHR0 +cDovL29jc3AuZW50cnVzdC5uZXQwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL2Ny +bC5lbnRydXN0Lm5ldC9nMmNhLmNybDA7BgNVHSAENDAyMDAGBFUdIAAwKDAmBggr +BgEFBQcCARYaaHR0cDovL3d3dy5lbnRydXN0Lm5ldC9ycGEwHQYDVR0OBBYEFIKi +cHTdvFM/z3vU981/p2DGCky/MB8GA1UdIwQYMBaAFGpyJnrQHu995ztpUdRsjZ+Q +EmarMA0GCSqGSIb3DQEBCwUAA4IBAQA/HBpb/0AiHY81DC2qmSerwBEycNc2KGml +jbEnmUK+xJPrSFdDcSPE5U6trkNvknbFGe/KvG9CTBaahqkEOMdl8PUM4ErfovrO +GhGonGkvG9/q4jLzzky8RgzAiYDRh2uiz2vUf/31YFJnV6Bt0WRBFG00Yu0GbCTy +BrwoAq8DLcIzBfvLqhboZRBD9Wlc44FYmc1r07jHexlVyUDOeVW4c4npXEBmQxJ/ +B7hlVtWNw6f1sbZlnsCDNn8WRTx0S5OKPPEr9TVwc3vnggSxGJgO1JxvGvz8pzOl +u7sY82t6XTKH920l5OJ2hiEeEUbNdg5vT6QhcQqEpy02qUgiUX6C +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_41[] = { + 0x30, 0x82, 0x05, 0x03, 0x30, 0x82, 0x03, 0xeb, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x51, 0xd3, 0x60, 0xee, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xbe, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0d, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, + 0x1f, 0x53, 0x65, 0x65, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, + 0x61, 0x6c, 0x2d, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, + 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, + 0x30, 0x30, 0x39, 0x20, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, + 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, + 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x32, 0x30, 0x30, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x29, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, + 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x31, 0x30, 0x32, 0x32, 0x31, 0x37, 0x30, + 0x35, 0x31, 0x34, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x31, 0x30, 0x32, 0x33, + 0x30, 0x37, 0x33, 0x33, 0x32, 0x32, 0x5a, 0x30, 0x81, 0xba, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x45, 0x6e, + 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, + 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, 0x53, 0x65, + 0x65, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x2d, + 0x74, 0x65, 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x31, 0x32, + 0x20, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, + 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, + 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x25, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, + 0x20, 0x4c, 0x31, 0x4b, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, + 0x00, 0xda, 0x3f, 0x96, 0xd0, 0x4d, 0xb9, 0x2f, 0x44, 0xe7, 0xdb, 0x39, + 0x5e, 0x9b, 0x50, 0xee, 0x5c, 0xa5, 0x61, 0xda, 0x41, 0x67, 0x53, 0x09, + 0xaa, 0x00, 0x9a, 0x8e, 0x57, 0x7f, 0x29, 0x6b, 0xdb, 0xc7, 0xe1, 0x21, + 0x24, 0xaa, 0x3a, 0xd0, 0x8d, 0x47, 0x23, 0xd2, 0xed, 0x72, 0x16, 0xf0, + 0x91, 0x21, 0xd2, 0x5d, 0xb7, 0xb8, 0x4b, 0xa8, 0x83, 0x8f, 0xb7, 0x91, + 0x32, 0x68, 0xcf, 0xce, 0x25, 0x93, 0x2c, 0xb2, 0x7d, 0x97, 0xc8, 0xfe, + 0xc1, 0xb4, 0x17, 0xba, 0x09, 0x9e, 0x03, 0x90, 0x93, 0x7b, 0x7c, 0x49, + 0x83, 0x22, 0x68, 0x8a, 0x9b, 0xde, 0x47, 0xc3, 0x31, 0x98, 0x7a, 0x2e, + 0x7d, 0x40, 0x0b, 0xd2, 0xef, 0x3e, 0xd3, 0xb2, 0x8c, 0xaa, 0x8f, 0x48, + 0xa9, 0xff, 0x00, 0xe8, 0x29, 0x58, 0x06, 0xf7, 0xb6, 0x93, 0x5a, 0x94, + 0x73, 0x26, 0x26, 0xad, 0x58, 0x0e, 0xe5, 0x42, 0xb8, 0xd5, 0xea, 0x73, + 0x79, 0x64, 0x68, 0x53, 0x25, 0xb8, 0x84, 0xcf, 0x94, 0x7a, 0xae, 0x06, + 0x45, 0x0c, 0xa3, 0x6b, 0x4d, 0xd0, 0xc6, 0xbe, 0xea, 0x18, 0xa4, 0x36, + 0xf0, 0x92, 0xb2, 0xba, 0x1c, 0x88, 0x8f, 0x3a, 0x52, 0x7f, 0xf7, 0x5e, + 0x6d, 0x83, 0x1c, 0x9d, 0xf0, 0x1f, 0xe5, 0xc3, 0xd6, 0xdd, 0xa5, 0x78, + 0x92, 0x3d, 0xb0, 0x6d, 0x2c, 0xea, 0xc9, 0xcf, 0x94, 0x41, 0x19, 0x71, + 0x44, 0x68, 0xba, 0x47, 0x3c, 0x04, 0xe9, 0x5d, 0xba, 0x3e, 0xf0, 0x35, + 0xf7, 0x15, 0xb6, 0x9e, 0xf2, 0x2e, 0x15, 0x1e, 0x3f, 0x47, 0xc8, 0xc8, + 0x38, 0xa7, 0x73, 0x45, 0x5d, 0x4d, 0xb0, 0x3b, 0xb1, 0x8e, 0x17, 0x29, + 0x37, 0xea, 0xdd, 0x05, 0x01, 0x22, 0xbb, 0x94, 0x36, 0x2a, 0x8d, 0x5b, + 0x35, 0xfe, 0x53, 0x19, 0x2f, 0x08, 0x46, 0xc1, 0x2a, 0xb3, 0x1a, 0x62, + 0x1d, 0x4e, 0x2b, 0xd9, 0x1b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x01, 0x09, 0x30, 0x82, 0x01, 0x05, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, + 0x02, 0x01, 0x00, 0x30, 0x33, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x27, 0x30, 0x25, 0x30, 0x23, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x17, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x65, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x30, 0x30, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x29, 0x30, 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, + 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, + 0x74, 0x2f, 0x67, 0x32, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b, + 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, + 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x70, 0x61, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x82, 0xa2, + 0x70, 0x74, 0xdd, 0xbc, 0x53, 0x3f, 0xcf, 0x7b, 0xd4, 0xf7, 0xcd, 0x7f, + 0xa7, 0x60, 0xc6, 0x0a, 0x4c, 0xbf, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x6a, 0x72, 0x26, 0x7a, 0xd0, + 0x1e, 0xef, 0x7d, 0xe7, 0x3b, 0x69, 0x51, 0xd4, 0x6c, 0x8d, 0x9f, 0x90, + 0x12, 0x66, 0xab, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x3f, + 0x1c, 0x1a, 0x5b, 0xff, 0x40, 0x22, 0x1d, 0x8f, 0x35, 0x0c, 0x2d, 0xaa, + 0x99, 0x27, 0xab, 0xc0, 0x11, 0x32, 0x70, 0xd7, 0x36, 0x28, 0x69, 0xa5, + 0x8d, 0xb1, 0x27, 0x99, 0x42, 0xbe, 0xc4, 0x93, 0xeb, 0x48, 0x57, 0x43, + 0x71, 0x23, 0xc4, 0xe5, 0x4e, 0xad, 0xae, 0x43, 0x6f, 0x92, 0x76, 0xc5, + 0x19, 0xef, 0xca, 0xbc, 0x6f, 0x42, 0x4c, 0x16, 0x9a, 0x86, 0xa9, 0x04, + 0x38, 0xc7, 0x65, 0xf0, 0xf5, 0x0c, 0xe0, 0x4a, 0xdf, 0xa2, 0xfa, 0xce, + 0x1a, 0x11, 0xa8, 0x9c, 0x69, 0x2f, 0x1b, 0xdf, 0xea, 0xe2, 0x32, 0xf3, + 0xce, 0x4c, 0xbc, 0x46, 0x0c, 0xc0, 0x89, 0x80, 0xd1, 0x87, 0x6b, 0xa2, + 0xcf, 0x6b, 0xd4, 0x7f, 0xfd, 0xf5, 0x60, 0x52, 0x67, 0x57, 0xa0, 0x6d, + 0xd1, 0x64, 0x41, 0x14, 0x6d, 0x34, 0x62, 0xed, 0x06, 0x6c, 0x24, 0xf2, + 0x06, 0xbc, 0x28, 0x02, 0xaf, 0x03, 0x2d, 0xc2, 0x33, 0x05, 0xfb, 0xcb, + 0xaa, 0x16, 0xe8, 0x65, 0x10, 0x43, 0xf5, 0x69, 0x5c, 0xe3, 0x81, 0x58, + 0x99, 0xcd, 0x6b, 0xd3, 0xb8, 0xc7, 0x7b, 0x19, 0x55, 0xc9, 0x40, 0xce, + 0x79, 0x55, 0xb8, 0x73, 0x89, 0xe9, 0x5c, 0x40, 0x66, 0x43, 0x12, 0x7f, + 0x07, 0xb8, 0x65, 0x56, 0xd5, 0x8d, 0xc3, 0xa7, 0xf5, 0xb1, 0xb6, 0x65, + 0x9e, 0xc0, 0x83, 0x36, 0x7f, 0x16, 0x45, 0x3c, 0x74, 0x4b, 0x93, 0x8a, + 0x3c, 0xf1, 0x2b, 0xf5, 0x35, 0x70, 0x73, 0x7b, 0xe7, 0x82, 0x04, 0xb1, + 0x18, 0x98, 0x0e, 0xd4, 0x9c, 0x6f, 0x1a, 0xfc, 0xfc, 0xa7, 0x33, 0xa5, + 0xbb, 0xbb, 0x18, 0xf3, 0x6b, 0x7a, 0x5d, 0x32, 0x87, 0xf7, 0x6d, 0x25, + 0xe4, 0xe2, 0x76, 0x86, 0x21, 0x1e, 0x11, 0x46, 0xcd, 0x76, 0x0e, 0x6f, + 0x4f, 0xa4, 0x21, 0x71, 0x0a, 0x84, 0xa7, 0x2d, 0x36, 0xa9, 0x48, 0x22, + 0x51, 0x7e, 0x82, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 0e:e9:4c:c3:00:00:00:00:51:d3:77:85 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=Entrust, Inc., OU=See www.entrust.net/legal-terms, OU=(c) 2009 Entrust, Inc. - for authorized use only, CN=Entrust Root Certification Authority - G2 + Validity + Not Before: Oct 5 19:13:56 2015 GMT + Not After : Dec 5 19:43:56 2030 GMT + Subject: C=US, O=Entrust, Inc., OU=See www.entrust.net/legal-terms, OU=(c) 2012 Entrust, Inc. - for authorized use only, CN=Entrust Certification Authority - L1K + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:da:3f:96:d0:4d:b9:2f:44:e7:db:39:5e:9b:50: + ee:5c:a5:61:da:41:67:53:09:aa:00:9a:8e:57:7f: + 29:6b:db:c7:e1:21:24:aa:3a:d0:8d:47:23:d2:ed: + 72:16:f0:91:21:d2:5d:b7:b8:4b:a8:83:8f:b7:91: + 32:68:cf:ce:25:93:2c:b2:7d:97:c8:fe:c1:b4:17: + ba:09:9e:03:90:93:7b:7c:49:83:22:68:8a:9b:de: + 47:c3:31:98:7a:2e:7d:40:0b:d2:ef:3e:d3:b2:8c: + aa:8f:48:a9:ff:00:e8:29:58:06:f7:b6:93:5a:94: + 73:26:26:ad:58:0e:e5:42:b8:d5:ea:73:79:64:68: + 53:25:b8:84:cf:94:7a:ae:06:45:0c:a3:6b:4d:d0: + c6:be:ea:18:a4:36:f0:92:b2:ba:1c:88:8f:3a:52: + 7f:f7:5e:6d:83:1c:9d:f0:1f:e5:c3:d6:dd:a5:78: + 92:3d:b0:6d:2c:ea:c9:cf:94:41:19:71:44:68:ba: + 47:3c:04:e9:5d:ba:3e:f0:35:f7:15:b6:9e:f2:2e: + 15:1e:3f:47:c8:c8:38:a7:73:45:5d:4d:b0:3b:b1: + 8e:17:29:37:ea:dd:05:01:22:bb:94:36:2a:8d:5b: + 35:fe:53:19:2f:08:46:c1:2a:b3:1a:62:1d:4e:2b: + d9:1b + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + Authority Information Access: + OCSP - URI:http://ocsp.entrust.net + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.entrust.net/g2ca.crl + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: http://www.entrust.net/rpa + + X509v3 Subject Key Identifier: + 82:A2:70:74:DD:BC:53:3F:CF:7B:D4:F7:CD:7F:A7:60:C6:0A:4C:BF + X509v3 Authority Key Identifier: + keyid:6A:72:26:7A:D0:1E:EF:7D:E7:3B:69:51:D4:6C:8D:9F:90:12:66:AB + + Signature Algorithm: sha256WithRSAEncryption + 39:d5:8e:98:83:61:c8:2c:63:d3:70:1d:19:30:cb:f6:09:ac: + cc:69:d5:c9:dc:37:41:f2:32:0f:ef:74:c3:58:f6:78:27:09: + 34:08:95:92:2f:d7:df:b8:a3:fd:0e:81:e9:a4:9c:d3:3f:4d: + 68:2b:15:31:0a:15:cc:52:04:93:e8:93:50:c3:d9:b1:e2:e1: + 68:b7:3a:09:74:f1:34:58:0a:3f:77:98:40:b8:e6:68:ff:5d: + e4:c8:46:c5:ec:81:d7:c9:82:18:5c:83:ce:71:d8:bc:bf:ac: + 99:02:93:db:94:98:84:d2:9c:a6:b5:fe:5c:bb:f0:4a:af:21: + ac:c2:3f:49:24:67:d6:2e:8e:cf:ac:cc:64:15:18:72:e5:6c: + 77:d3:52:a8:b9:dd:8d:ac:00:4a:35:19:d4:6f:73:a3:75:ef: + 6b:64:c3:e0:8d:83:12:a1:8a:e7:0e:86:4d:d8:b4:20:1b:be: + 6a:a5:8c:4b:68:66:e3:2b:c7:58:0b:fb:56:10:d4:91:fb:1d: + d3:31:58:10:8c:44:e3:75:7b:10:9d:b5:38:b1:f6:aa:ca:81: + 64:6c:e8:f2:e2:81:55:97:51:7f:e1:c2:27:50:a2:c9:3c:5b: + 00:43:f6:5b:b9:d5:a5:fc:ff:07:50:40:67:07:b0:55:f0:b7: + 7e:6e:2d:cc +-----BEGIN CERTIFICATE----- +MIIFDjCCA/agAwIBAgIMDulMwwAAAABR03eFMA0GCSqGSIb3DQEBCwUAMIG+MQsw +CQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2Vl +IHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMDkg +RW50cnVzdCwgSW5jLiAtIGZvciBhdXRob3JpemVkIHVzZSBvbmx5MTIwMAYDVQQD +EylFbnRydXN0IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjAeFw0x +NTEwMDUxOTEzNTZaFw0zMDEyMDUxOTQzNTZaMIG6MQswCQYDVQQGEwJVUzEWMBQG +A1UEChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5l +dC9sZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMTIgRW50cnVzdCwgSW5jLiAt +IGZvciBhdXRob3JpemVkIHVzZSBvbmx5MS4wLAYDVQQDEyVFbnRydXN0IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5IC0gTDFLMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEA2j+W0E25L0Tn2zlem1DuXKVh2kFnUwmqAJqOV38pa9vH4SEkqjrQ +jUcj0u1yFvCRIdJdt7hLqIOPt5EyaM/OJZMssn2XyP7BtBe6CZ4DkJN7fEmDImiK +m95HwzGYei59QAvS7z7Tsoyqj0ip/wDoKVgG97aTWpRzJiatWA7lQrjV6nN5ZGhT +JbiEz5R6rgZFDKNrTdDGvuoYpDbwkrK6HIiPOlJ/915tgxyd8B/lw9bdpXiSPbBt +LOrJz5RBGXFEaLpHPATpXbo+8DX3Fbae8i4VHj9HyMg4p3NFXU2wO7GOFyk36t0F +ASK7lDYqjVs1/lMZLwhGwSqzGmIdTivZGwIDAQABo4IBDDCCAQgwDgYDVR0PAQH/ +BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwMwYIKwYBBQUHAQEEJzAlMCMGCCsG +AQUFBzABhhdodHRwOi8vb2NzcC5lbnRydXN0Lm5ldDAwBgNVHR8EKTAnMCWgI6Ah +hh9odHRwOi8vY3JsLmVudHJ1c3QubmV0L2cyY2EuY3JsMDsGA1UdIAQ0MDIwMAYE +VR0gADAoMCYGCCsGAQUFBwIBFhpodHRwOi8vd3d3LmVudHJ1c3QubmV0L3JwYTAd +BgNVHQ4EFgQUgqJwdN28Uz/Pe9T3zX+nYMYKTL8wHwYDVR0jBBgwFoAUanImetAe +733nO2lR1GyNn5ASZqswDQYJKoZIhvcNAQELBQADggEBADnVjpiDYcgsY9NwHRkw +y/YJrMxp1cncN0HyMg/vdMNY9ngnCTQIlZIv19+4o/0OgemknNM/TWgrFTEKFcxS +BJPok1DD2bHi4Wi3Ogl08TRYCj93mEC45mj/XeTIRsXsgdfJghhcg85x2Ly/rJkC +k9uUmITSnKa1/ly78EqvIazCP0kkZ9Yujs+szGQVGHLlbHfTUqi53Y2sAEo1GdRv +c6N172tkw+CNgxKhiucOhk3YtCAbvmqljEtoZuMrx1gL+1YQ1JH7HdMxWBCMRON1 +exCdtTix9qrKgWRs6PLigVWXUX/hwidQosk8WwBD9lu51aX8/wdQQGcHsFXwt35u +Lcw= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_42[] = { + 0x30, 0x82, 0x05, 0x0e, 0x30, 0x82, 0x03, 0xf6, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x0c, 0x0e, 0xe9, 0x4c, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x51, + 0xd3, 0x77, 0x85, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0xbe, 0x31, 0x0b, 0x30, + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, + 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x45, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x28, + 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, 0x53, 0x65, 0x65, + 0x20, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x2d, 0x74, + 0x65, 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x39, 0x20, + 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, + 0x2e, 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, + 0x6e, 0x6c, 0x79, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x29, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, + 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x1e, 0x17, 0x0d, 0x31, + 0x35, 0x31, 0x30, 0x30, 0x35, 0x31, 0x39, 0x31, 0x33, 0x35, 0x36, 0x5a, + 0x17, 0x0d, 0x33, 0x30, 0x31, 0x32, 0x30, 0x35, 0x31, 0x39, 0x34, 0x33, + 0x35, 0x36, 0x5a, 0x30, 0x81, 0xba, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, + 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, + 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, 0x53, 0x65, 0x65, 0x20, 0x77, 0x77, + 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, + 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x2d, 0x74, 0x65, 0x72, 0x6d, + 0x73, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x30, + 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x31, 0x32, 0x20, 0x45, 0x6e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x25, 0x45, + 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x4c, 0x31, 0x4b, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xda, 0x3f, 0x96, + 0xd0, 0x4d, 0xb9, 0x2f, 0x44, 0xe7, 0xdb, 0x39, 0x5e, 0x9b, 0x50, 0xee, + 0x5c, 0xa5, 0x61, 0xda, 0x41, 0x67, 0x53, 0x09, 0xaa, 0x00, 0x9a, 0x8e, + 0x57, 0x7f, 0x29, 0x6b, 0xdb, 0xc7, 0xe1, 0x21, 0x24, 0xaa, 0x3a, 0xd0, + 0x8d, 0x47, 0x23, 0xd2, 0xed, 0x72, 0x16, 0xf0, 0x91, 0x21, 0xd2, 0x5d, + 0xb7, 0xb8, 0x4b, 0xa8, 0x83, 0x8f, 0xb7, 0x91, 0x32, 0x68, 0xcf, 0xce, + 0x25, 0x93, 0x2c, 0xb2, 0x7d, 0x97, 0xc8, 0xfe, 0xc1, 0xb4, 0x17, 0xba, + 0x09, 0x9e, 0x03, 0x90, 0x93, 0x7b, 0x7c, 0x49, 0x83, 0x22, 0x68, 0x8a, + 0x9b, 0xde, 0x47, 0xc3, 0x31, 0x98, 0x7a, 0x2e, 0x7d, 0x40, 0x0b, 0xd2, + 0xef, 0x3e, 0xd3, 0xb2, 0x8c, 0xaa, 0x8f, 0x48, 0xa9, 0xff, 0x00, 0xe8, + 0x29, 0x58, 0x06, 0xf7, 0xb6, 0x93, 0x5a, 0x94, 0x73, 0x26, 0x26, 0xad, + 0x58, 0x0e, 0xe5, 0x42, 0xb8, 0xd5, 0xea, 0x73, 0x79, 0x64, 0x68, 0x53, + 0x25, 0xb8, 0x84, 0xcf, 0x94, 0x7a, 0xae, 0x06, 0x45, 0x0c, 0xa3, 0x6b, + 0x4d, 0xd0, 0xc6, 0xbe, 0xea, 0x18, 0xa4, 0x36, 0xf0, 0x92, 0xb2, 0xba, + 0x1c, 0x88, 0x8f, 0x3a, 0x52, 0x7f, 0xf7, 0x5e, 0x6d, 0x83, 0x1c, 0x9d, + 0xf0, 0x1f, 0xe5, 0xc3, 0xd6, 0xdd, 0xa5, 0x78, 0x92, 0x3d, 0xb0, 0x6d, + 0x2c, 0xea, 0xc9, 0xcf, 0x94, 0x41, 0x19, 0x71, 0x44, 0x68, 0xba, 0x47, + 0x3c, 0x04, 0xe9, 0x5d, 0xba, 0x3e, 0xf0, 0x35, 0xf7, 0x15, 0xb6, 0x9e, + 0xf2, 0x2e, 0x15, 0x1e, 0x3f, 0x47, 0xc8, 0xc8, 0x38, 0xa7, 0x73, 0x45, + 0x5d, 0x4d, 0xb0, 0x3b, 0xb1, 0x8e, 0x17, 0x29, 0x37, 0xea, 0xdd, 0x05, + 0x01, 0x22, 0xbb, 0x94, 0x36, 0x2a, 0x8d, 0x5b, 0x35, 0xfe, 0x53, 0x19, + 0x2f, 0x08, 0x46, 0xc1, 0x2a, 0xb3, 0x1a, 0x62, 0x1d, 0x4e, 0x2b, 0xd9, + 0x1b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x0c, 0x30, 0x82, + 0x01, 0x08, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, + 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x33, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x01, 0x01, 0x04, 0x27, 0x30, 0x25, 0x30, 0x23, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x17, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x65, 0x6e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x30, 0x30, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x29, 0x30, 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, + 0x86, 0x1f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, + 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, + 0x2f, 0x67, 0x32, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b, 0x06, + 0x03, 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, 0x04, + 0x55, 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x1d, + 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x82, 0xa2, 0x70, + 0x74, 0xdd, 0xbc, 0x53, 0x3f, 0xcf, 0x7b, 0xd4, 0xf7, 0xcd, 0x7f, 0xa7, + 0x60, 0xc6, 0x0a, 0x4c, 0xbf, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, + 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x6a, 0x72, 0x26, 0x7a, 0xd0, 0x1e, + 0xef, 0x7d, 0xe7, 0x3b, 0x69, 0x51, 0xd4, 0x6c, 0x8d, 0x9f, 0x90, 0x12, + 0x66, 0xab, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x39, 0xd5, + 0x8e, 0x98, 0x83, 0x61, 0xc8, 0x2c, 0x63, 0xd3, 0x70, 0x1d, 0x19, 0x30, + 0xcb, 0xf6, 0x09, 0xac, 0xcc, 0x69, 0xd5, 0xc9, 0xdc, 0x37, 0x41, 0xf2, + 0x32, 0x0f, 0xef, 0x74, 0xc3, 0x58, 0xf6, 0x78, 0x27, 0x09, 0x34, 0x08, + 0x95, 0x92, 0x2f, 0xd7, 0xdf, 0xb8, 0xa3, 0xfd, 0x0e, 0x81, 0xe9, 0xa4, + 0x9c, 0xd3, 0x3f, 0x4d, 0x68, 0x2b, 0x15, 0x31, 0x0a, 0x15, 0xcc, 0x52, + 0x04, 0x93, 0xe8, 0x93, 0x50, 0xc3, 0xd9, 0xb1, 0xe2, 0xe1, 0x68, 0xb7, + 0x3a, 0x09, 0x74, 0xf1, 0x34, 0x58, 0x0a, 0x3f, 0x77, 0x98, 0x40, 0xb8, + 0xe6, 0x68, 0xff, 0x5d, 0xe4, 0xc8, 0x46, 0xc5, 0xec, 0x81, 0xd7, 0xc9, + 0x82, 0x18, 0x5c, 0x83, 0xce, 0x71, 0xd8, 0xbc, 0xbf, 0xac, 0x99, 0x02, + 0x93, 0xdb, 0x94, 0x98, 0x84, 0xd2, 0x9c, 0xa6, 0xb5, 0xfe, 0x5c, 0xbb, + 0xf0, 0x4a, 0xaf, 0x21, 0xac, 0xc2, 0x3f, 0x49, 0x24, 0x67, 0xd6, 0x2e, + 0x8e, 0xcf, 0xac, 0xcc, 0x64, 0x15, 0x18, 0x72, 0xe5, 0x6c, 0x77, 0xd3, + 0x52, 0xa8, 0xb9, 0xdd, 0x8d, 0xac, 0x00, 0x4a, 0x35, 0x19, 0xd4, 0x6f, + 0x73, 0xa3, 0x75, 0xef, 0x6b, 0x64, 0xc3, 0xe0, 0x8d, 0x83, 0x12, 0xa1, + 0x8a, 0xe7, 0x0e, 0x86, 0x4d, 0xd8, 0xb4, 0x20, 0x1b, 0xbe, 0x6a, 0xa5, + 0x8c, 0x4b, 0x68, 0x66, 0xe3, 0x2b, 0xc7, 0x58, 0x0b, 0xfb, 0x56, 0x10, + 0xd4, 0x91, 0xfb, 0x1d, 0xd3, 0x31, 0x58, 0x10, 0x8c, 0x44, 0xe3, 0x75, + 0x7b, 0x10, 0x9d, 0xb5, 0x38, 0xb1, 0xf6, 0xaa, 0xca, 0x81, 0x64, 0x6c, + 0xe8, 0xf2, 0xe2, 0x81, 0x55, 0x97, 0x51, 0x7f, 0xe1, 0xc2, 0x27, 0x50, + 0xa2, 0xc9, 0x3c, 0x5b, 0x00, 0x43, 0xf6, 0x5b, 0xb9, 0xd5, 0xa5, 0xfc, + 0xff, 0x07, 0x50, 0x40, 0x67, 0x07, 0xb0, 0x55, 0xf0, 0xb7, 0x7e, 0x6e, + 0x2d, 0xcc, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 120038507 (0x727a46b) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=IE, O=Baltimore, OU=CyberTrust, CN=Baltimore CyberTrust Root + Validity + Not Before: Apr 2 14:36:10 2014 GMT + Not After : Apr 2 14:35:52 2021 GMT + Subject: C=NL, L=Amsterdam, O=Verizon Enterprise Solutions, OU=Cybertrust, CN=Verizon Akamai SureServer CA G14-SHA2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:dd:6e:9e:02:69:02:b5:a3:99:2e:08:64:32:6a: + 59:f3:c6:9e:a6:20:07:d2:48:d1:a8:93:c7:ea:47: + 8f:83:39:40:d7:20:5d:8d:9a:ba:ab:d8:70:ec:9d: + 88:d1:bd:62:f6:db:ec:9d:5e:35:01:76:03:23:e5: + 6f:d2:af:46:35:59:5a:5c:d1:a8:23:c1:eb:e9:20: + d4:49:d6:3f:00:d8:a8:22:de:43:79:81:ac:e9:a4: + 92:f5:77:70:05:1e:5c:b6:a0:f7:90:a4:cd:ab:28: + 2c:90:c2:e7:0f:c3:af:1c:47:59:d5:84:2e:df:26: + 07:45:23:5a:c6:e8:90:c8:85:4b:8c:16:1e:60:f9: + 01:13:f1:14:1f:e6:e8:14:ed:c5:d2:6f:63:28:6e: + 72:8c:49:ae:08:72:c7:93:95:b4:0b:0c:ae:8f:9a: + 67:84:f5:57:1b:db:81:d7:17:9d:41:11:43:19:bd: + 6d:4a:85:ed:8f:70:25:ab:66:ab:f6:fa:6d:1c:3c: + ab:ed:17:bd:56:84:e1:db:75:33:b2:28:4b:99:8e: + f9:4b:82:33:50:9f:92:53:ed:fa:ad:0f:95:9c:a3: + f2:cb:60:f0:77:1d:c9:01:8b:5f:2d:86:be:bf:36: + b8:24:96:13:7c:c1:86:5a:6c:c1:48:2a:7f:3e:93: + 60:c5 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:2 + X509v3 Certificate Policies: + Policy: 1.3.6.1.4.1.6334.1.50 + CPS: https://secure.omniroot.com/repository + + Authority Information Access: + OCSP - URI:http://ocsp.omniroot.com/baltimoreroot + CA Issuers - URI:https://cacert.omniroot.com/baltimoreroot.crt + CA Issuers - URI:https://cacert.omniroot.com/baltimoreroot.der + + X509v3 Key Usage: critical + Digital Signature, Non Repudiation, Certificate Sign, CRL Sign + X509v3 Authority Key Identifier: + keyid:E5:9D:59:30:82:47:58:CC:AC:FA:08:54:36:86:7B:3A:B5:04:4D:F0 + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://cdp1.public-trust.com/CRL/Omniroot2025.crl + + X509v3 Subject Key Identifier: + F8:BD:FA:AF:73:77:C6:C7:1B:F9:4B:4D:11:A7:D1:33:AF:AF:72:11 + Signature Algorithm: sha256WithRSAEncryption + 80:d9:7a:ed:72:05:37:8f:61:aa:73:7c:9a:6a:fc:fe:01:e2: + 19:81:70:07:25:32:b0:f0:6f:3b:c7:6a:28:3d:e4:51:87:e6: + 7e:82:ec:ae:48:a7:b1:77:38:c2:d6:56:af:8f:f2:01:fc:65: + 65:10:09:f7:74:29:b5:0e:92:ee:90:98:d1:88:a2:65:b7:cd: + 9c:0e:a7:86:98:28:bc:ae:15:83:b6:1a:d7:1d:ec:19:da:7a: + 8e:40:f9:99:15:d5:7d:a5:ba:ab:fd:26:98:6e:9c:41:3b:b6: + 81:18:ec:70:48:d7:6e:7f:a6:e1:77:25:d6:dd:62:e8:52:f3: + 8c:16:39:67:e2:22:0d:77:2e:fb:11:6c:e4:dd:38:b4:27:5f: + 03:a8:3d:44:e2:f2:84:4b:84:fd:56:a6:9e:4d:7b:a2:16:4f: + 07:f5:34:24:72:a5:a2:fa:16:66:2a:a4:4a:0e:c8:0d:27:44: + 9c:77:d4:12:10:87:d2:00:2c:7a:bb:8e:88:22:91:15:be:a2: + 59:ca:34:e0:1c:61:94:86:20:33:cd:e7:4c:5d:3b:92:3e:cb: + d6:2d:ea:54:fa:fb:af:54:f5:a8:c5:0b:ca:8b:87:00:e6:9f: + e6:95:bf:b7:c4:a3:59:f5:16:6c:5f:3e:69:55:80:39:f6:75: + 50:14:3e:32 +-----BEGIN CERTIFICATE----- +MIIFHzCCBAegAwIBAgIEByekazANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJJ +RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD +VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTE0MDQwMjE0MzYxMFoX +DTIxMDQwMjE0MzU1MlowgY0xCzAJBgNVBAYTAk5MMRIwEAYDVQQHEwlBbXN0ZXJk +YW0xJTAjBgNVBAoTHFZlcml6b24gRW50ZXJwcmlzZSBTb2x1dGlvbnMxEzARBgNV +BAsTCkN5YmVydHJ1c3QxLjAsBgNVBAMTJVZlcml6b24gQWthbWFpIFN1cmVTZXJ2 +ZXIgQ0EgRzE0LVNIQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDd +bp4CaQK1o5kuCGQyalnzxp6mIAfSSNGok8fqR4+DOUDXIF2Nmrqr2HDsnYjRvWL2 +2+ydXjUBdgMj5W/Sr0Y1WVpc0agjwevpINRJ1j8A2Kgi3kN5gazppJL1d3AFHly2 +oPeQpM2rKCyQwucPw68cR1nVhC7fJgdFI1rG6JDIhUuMFh5g+QET8RQf5ugU7cXS +b2MobnKMSa4IcseTlbQLDK6PmmeE9Vcb24HXF51BEUMZvW1Khe2PcCWrZqv2+m0c +PKvtF71WhOHbdTOyKEuZjvlLgjNQn5JT7fqtD5Wco/LLYPB3HckBi18thr6/Nrgk +lhN8wYZabMFIKn8+k2DFAgMBAAGjggG3MIIBszASBgNVHRMBAf8ECDAGAQH/AgEC +MEwGA1UdIARFMEMwQQYJKwYBBAGxPgEyMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8v +c2VjdXJlLm9tbmlyb290LmNvbS9yZXBvc2l0b3J5MIG6BggrBgEFBQcBAQSBrTCB +qjAyBggrBgEFBQcwAYYmaHR0cDovL29jc3Aub21uaXJvb3QuY29tL2JhbHRpbW9y +ZXJvb3QwOQYIKwYBBQUHMAKGLWh0dHBzOi8vY2FjZXJ0Lm9tbmlyb290LmNvbS9i +YWx0aW1vcmVyb290LmNydDA5BggrBgEFBQcwAoYtaHR0cHM6Ly9jYWNlcnQub21u +aXJvb3QuY29tL2JhbHRpbW9yZXJvb3QuZGVyMA4GA1UdDwEB/wQEAwIBxjAfBgNV +HSMEGDAWgBTlnVkwgkdYzKz6CFQ2hns6tQRN8DBCBgNVHR8EOzA5MDegNaAzhjFo +dHRwOi8vY2RwMS5wdWJsaWMtdHJ1c3QuY29tL0NSTC9PbW5pcm9vdDIwMjUuY3Js +MB0GA1UdDgQWBBT4vfqvc3fGxxv5S00Rp9Ezr69yETANBgkqhkiG9w0BAQsFAAOC +AQEAgNl67XIFN49hqnN8mmr8/gHiGYFwByUysPBvO8dqKD3kUYfmfoLsrkinsXc4 +wtZWr4/yAfxlZRAJ93QptQ6S7pCY0YiiZbfNnA6nhpgovK4Vg7Ya1x3sGdp6jkD5 +mRXVfaW6q/0mmG6cQTu2gRjscEjXbn+m4Xcl1t1i6FLzjBY5Z+IiDXcu+xFs5N04 +tCdfA6g9ROLyhEuE/Vamnk17ohZPB/U0JHKlovoWZiqkSg7IDSdEnHfUEhCH0gAs +eruOiCKRFb6iWco04BxhlIYgM83nTF07kj7L1i3qVPr7r1T1qMULyouHAOaf5pW/ +t8SjWfUWbF8+aVWAOfZ1UBQ+Mg== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_43[] = { + 0x30, 0x82, 0x05, 0x1f, 0x30, 0x82, 0x04, 0x07, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0xa4, 0x6b, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, + 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, + 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, + 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, + 0x30, 0x34, 0x30, 0x32, 0x31, 0x34, 0x33, 0x36, 0x31, 0x30, 0x5a, 0x17, + 0x0d, 0x32, 0x31, 0x30, 0x34, 0x30, 0x32, 0x31, 0x34, 0x33, 0x35, 0x35, + 0x32, 0x5a, 0x30, 0x81, 0x8d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, + 0x55, 0x04, 0x07, 0x13, 0x09, 0x41, 0x6d, 0x73, 0x74, 0x65, 0x72, 0x64, + 0x61, 0x6d, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x1c, 0x56, 0x65, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x20, 0x45, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x20, 0x53, 0x6f, 0x6c, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x25, 0x56, 0x65, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x20, 0x41, 0x6b, 0x61, + 0x6d, 0x61, 0x69, 0x20, 0x53, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x47, 0x31, 0x34, 0x2d, 0x53, 0x48, + 0x41, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xdd, + 0x6e, 0x9e, 0x02, 0x69, 0x02, 0xb5, 0xa3, 0x99, 0x2e, 0x08, 0x64, 0x32, + 0x6a, 0x59, 0xf3, 0xc6, 0x9e, 0xa6, 0x20, 0x07, 0xd2, 0x48, 0xd1, 0xa8, + 0x93, 0xc7, 0xea, 0x47, 0x8f, 0x83, 0x39, 0x40, 0xd7, 0x20, 0x5d, 0x8d, + 0x9a, 0xba, 0xab, 0xd8, 0x70, 0xec, 0x9d, 0x88, 0xd1, 0xbd, 0x62, 0xf6, + 0xdb, 0xec, 0x9d, 0x5e, 0x35, 0x01, 0x76, 0x03, 0x23, 0xe5, 0x6f, 0xd2, + 0xaf, 0x46, 0x35, 0x59, 0x5a, 0x5c, 0xd1, 0xa8, 0x23, 0xc1, 0xeb, 0xe9, + 0x20, 0xd4, 0x49, 0xd6, 0x3f, 0x00, 0xd8, 0xa8, 0x22, 0xde, 0x43, 0x79, + 0x81, 0xac, 0xe9, 0xa4, 0x92, 0xf5, 0x77, 0x70, 0x05, 0x1e, 0x5c, 0xb6, + 0xa0, 0xf7, 0x90, 0xa4, 0xcd, 0xab, 0x28, 0x2c, 0x90, 0xc2, 0xe7, 0x0f, + 0xc3, 0xaf, 0x1c, 0x47, 0x59, 0xd5, 0x84, 0x2e, 0xdf, 0x26, 0x07, 0x45, + 0x23, 0x5a, 0xc6, 0xe8, 0x90, 0xc8, 0x85, 0x4b, 0x8c, 0x16, 0x1e, 0x60, + 0xf9, 0x01, 0x13, 0xf1, 0x14, 0x1f, 0xe6, 0xe8, 0x14, 0xed, 0xc5, 0xd2, + 0x6f, 0x63, 0x28, 0x6e, 0x72, 0x8c, 0x49, 0xae, 0x08, 0x72, 0xc7, 0x93, + 0x95, 0xb4, 0x0b, 0x0c, 0xae, 0x8f, 0x9a, 0x67, 0x84, 0xf5, 0x57, 0x1b, + 0xdb, 0x81, 0xd7, 0x17, 0x9d, 0x41, 0x11, 0x43, 0x19, 0xbd, 0x6d, 0x4a, + 0x85, 0xed, 0x8f, 0x70, 0x25, 0xab, 0x66, 0xab, 0xf6, 0xfa, 0x6d, 0x1c, + 0x3c, 0xab, 0xed, 0x17, 0xbd, 0x56, 0x84, 0xe1, 0xdb, 0x75, 0x33, 0xb2, + 0x28, 0x4b, 0x99, 0x8e, 0xf9, 0x4b, 0x82, 0x33, 0x50, 0x9f, 0x92, 0x53, + 0xed, 0xfa, 0xad, 0x0f, 0x95, 0x9c, 0xa3, 0xf2, 0xcb, 0x60, 0xf0, 0x77, + 0x1d, 0xc9, 0x01, 0x8b, 0x5f, 0x2d, 0x86, 0xbe, 0xbf, 0x36, 0xb8, 0x24, + 0x96, 0x13, 0x7c, 0xc1, 0x86, 0x5a, 0x6c, 0xc1, 0x48, 0x2a, 0x7f, 0x3e, + 0x93, 0x60, 0xc5, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0xb7, + 0x30, 0x82, 0x01, 0xb3, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x02, + 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, + 0x41, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e, 0x01, 0x32, + 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, + 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x30, 0x81, 0xba, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x81, 0xad, 0x30, 0x81, + 0xaa, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, + 0x01, 0x86, 0x26, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, + 0x73, 0x70, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, + 0x65, 0x72, 0x6f, 0x6f, 0x74, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x73, + 0x3a, 0x2f, 0x2f, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x6f, 0x6d, + 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, + 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x6f, 0x6f, 0x74, + 0x2e, 0x63, 0x72, 0x74, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, + 0x2f, 0x2f, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x6f, 0x6d, 0x6e, + 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x61, + 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x6f, 0x6f, 0x74, 0x2e, + 0x64, 0x65, 0x72, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0xc6, 0x30, 0x1f, 0x06, 0x03, 0x55, + 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe5, 0x9d, 0x59, 0x30, + 0x82, 0x47, 0x58, 0xcc, 0xac, 0xfa, 0x08, 0x54, 0x36, 0x86, 0x7b, 0x3a, + 0xb5, 0x04, 0x4d, 0xf0, 0x30, 0x42, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, + 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x64, 0x70, 0x31, 0x2e, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x4f, 0x6d, 0x6e, 0x69, + 0x72, 0x6f, 0x6f, 0x74, 0x32, 0x30, 0x32, 0x35, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xf8, + 0xbd, 0xfa, 0xaf, 0x73, 0x77, 0xc6, 0xc7, 0x1b, 0xf9, 0x4b, 0x4d, 0x11, + 0xa7, 0xd1, 0x33, 0xaf, 0xaf, 0x72, 0x11, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x01, 0x00, 0x80, 0xd9, 0x7a, 0xed, 0x72, 0x05, 0x37, 0x8f, 0x61, + 0xaa, 0x73, 0x7c, 0x9a, 0x6a, 0xfc, 0xfe, 0x01, 0xe2, 0x19, 0x81, 0x70, + 0x07, 0x25, 0x32, 0xb0, 0xf0, 0x6f, 0x3b, 0xc7, 0x6a, 0x28, 0x3d, 0xe4, + 0x51, 0x87, 0xe6, 0x7e, 0x82, 0xec, 0xae, 0x48, 0xa7, 0xb1, 0x77, 0x38, + 0xc2, 0xd6, 0x56, 0xaf, 0x8f, 0xf2, 0x01, 0xfc, 0x65, 0x65, 0x10, 0x09, + 0xf7, 0x74, 0x29, 0xb5, 0x0e, 0x92, 0xee, 0x90, 0x98, 0xd1, 0x88, 0xa2, + 0x65, 0xb7, 0xcd, 0x9c, 0x0e, 0xa7, 0x86, 0x98, 0x28, 0xbc, 0xae, 0x15, + 0x83, 0xb6, 0x1a, 0xd7, 0x1d, 0xec, 0x19, 0xda, 0x7a, 0x8e, 0x40, 0xf9, + 0x99, 0x15, 0xd5, 0x7d, 0xa5, 0xba, 0xab, 0xfd, 0x26, 0x98, 0x6e, 0x9c, + 0x41, 0x3b, 0xb6, 0x81, 0x18, 0xec, 0x70, 0x48, 0xd7, 0x6e, 0x7f, 0xa6, + 0xe1, 0x77, 0x25, 0xd6, 0xdd, 0x62, 0xe8, 0x52, 0xf3, 0x8c, 0x16, 0x39, + 0x67, 0xe2, 0x22, 0x0d, 0x77, 0x2e, 0xfb, 0x11, 0x6c, 0xe4, 0xdd, 0x38, + 0xb4, 0x27, 0x5f, 0x03, 0xa8, 0x3d, 0x44, 0xe2, 0xf2, 0x84, 0x4b, 0x84, + 0xfd, 0x56, 0xa6, 0x9e, 0x4d, 0x7b, 0xa2, 0x16, 0x4f, 0x07, 0xf5, 0x34, + 0x24, 0x72, 0xa5, 0xa2, 0xfa, 0x16, 0x66, 0x2a, 0xa4, 0x4a, 0x0e, 0xc8, + 0x0d, 0x27, 0x44, 0x9c, 0x77, 0xd4, 0x12, 0x10, 0x87, 0xd2, 0x00, 0x2c, + 0x7a, 0xbb, 0x8e, 0x88, 0x22, 0x91, 0x15, 0xbe, 0xa2, 0x59, 0xca, 0x34, + 0xe0, 0x1c, 0x61, 0x94, 0x86, 0x20, 0x33, 0xcd, 0xe7, 0x4c, 0x5d, 0x3b, + 0x92, 0x3e, 0xcb, 0xd6, 0x2d, 0xea, 0x54, 0xfa, 0xfb, 0xaf, 0x54, 0xf5, + 0xa8, 0xc5, 0x0b, 0xca, 0x8b, 0x87, 0x00, 0xe6, 0x9f, 0xe6, 0x95, 0xbf, + 0xb7, 0xc4, 0xa3, 0x59, 0xf5, 0x16, 0x6c, 0x5f, 0x3e, 0x69, 0x55, 0x80, + 0x39, 0xf6, 0x75, 0x50, 0x14, 0x3e, 0x32, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 7e:e1:4a:6f:6f:ef:f2:d3:7f:3f:ad:65:4d:3a:da:b4 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 2006 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 3 Public Primary Certification Authority - G5 + Validity + Not Before: Oct 31 00:00:00 2013 GMT + Not After : Oct 30 23:59:59 2023 GMT + Subject: C=US, O=Symantec Corporation, OU=Symantec Trust Network, CN=Symantec Class 3 EV SSL CA - G3 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:d8:a1:65:74:23:e8:2b:64:e2:32:d7:33:37:3d: + 8e:f5:34:16:48:dd:4f:7f:87:1c:f8:44:23:13:8e: + fb:11:d8:44:5a:18:71:8e:60:16:26:92:9b:fd:17: + 0b:e1:71:70:42:fe:bf:fa:1c:c0:aa:a3:a7:b5:71: + e8:ff:18:83:f6:df:10:0a:13:62:c8:3d:9c:a7:de: + 2e:3f:0c:d9:1d:e7:2e:fb:2a:ce:c8:9a:7f:87:bf: + d8:4c:04:15:32:c9:d1:cc:95:71:a0:4e:28:4f:84: + d9:35:fb:e3:86:6f:94:53:e6:72:8a:63:67:2e:be: + 69:f6:f7:6e:8e:9c:60:04:eb:29:fa:c4:47:42:d2: + 78:98:e3:ec:0b:a5:92:dc:b7:9a:bd:80:64:2b:38: + 7c:38:09:5b:66:f6:2d:95:7a:86:b2:34:2e:85:9e: + 90:0e:5f:b7:5d:a4:51:72:46:70:13:bf:67:f2:b6: + a7:4d:14:1e:6c:b9:53:ee:23:1a:4e:8d:48:55:43: + 41:b1:89:75:6a:40:28:c5:7d:dd:d2:6e:d2:02:19: + 2f:7b:24:94:4b:eb:f1:1a:a9:9b:e3:23:9a:ea:fa: + 33:ab:0a:2c:b7:f4:60:08:dd:9f:1c:cd:dd:2d:01: + 66:80:af:b3:2f:29:1d:23:b8:8a:e1:a1:70:07:0c: + 34:0f + Exponent: 65537 (0x10001) + X509v3 extensions: + Authority Information Access: + OCSP - URI:http://s2.symcb.com + + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: http://www.symauth.com/cps + User Notice: + Explicit Text: http://www.symauth.com/rpa + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://s1.symcb.com/pca3-g5.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Alternative Name: + DirName:/CN=SymantecPKI-1-533 + X509v3 Subject Key Identifier: + 01:59:AB:E7:DD:3A:0B:59:A6:64:63:D6:CF:20:07:57:D5:91:E7:6A + X509v3 Authority Key Identifier: + keyid:7F:D3:65:A7:C2:DD:EC:BB:F0:30:09:F3:43:39:FA:02:AF:33:31:33 + + Signature Algorithm: sha256WithRSAEncryption + 42:01:55:7b:d0:16:1a:5d:58:e8:bb:9b:a8:4d:d7:f3:d7:eb: + 13:94:86:d6:7f:21:0b:47:bc:57:9b:92:5d:4f:05:9f:38:a4: + 10:7c:cf:83:be:06:43:46:8d:08:bc:6a:d7:10:a6:fa:ab:af: + 2f:61:a8:63:f2:65:df:7f:4c:88:12:88:4f:b3:69:d9:ff:27: + c0:0a:97:91:8f:56:fb:89:c4:a8:bb:92:2d:1b:73:b0:c6:ab: + 36:f4:96:6c:20:08:ef:0a:1e:66:24:45:4f:67:00:40:c8:07: + 54:74:33:3b:a6:ad:bb:23:9f:66:ed:a2:44:70:34:fb:0e:ea: + 01:fd:cf:78:74:df:a7:ad:55:b7:5f:4d:f6:d6:3f:e0:86:ce: + 24:c7:42:a9:13:14:44:35:4b:b6:df:c9:60:ac:0c:7f:d9:93: + 21:4b:ee:9c:e4:49:02:98:d3:60:7b:5c:bc:d5:30:2f:07:ce: + 44:42:c4:0b:99:fe:e6:9f:fc:b0:78:86:51:6d:d1:2c:9d:c6: + 96:fb:85:82:bb:04:2f:f7:62:80:ef:62:da:7f:f6:0e:ac:90: + b8:56:bd:79:3f:f2:80:6e:a3:d9:b9:0f:5d:3a:07:1d:91:93: + 86:4b:29:4c:e1:dc:b5:e1:e0:33:9d:b3:cb:36:91:4b:fe:a1: + b4:ee:f0:f9 +-----BEGIN CERTIFICATE----- +MIIFKzCCBBOgAwIBAgIQfuFKb2/v8tN/P61lTTratDANBgkqhkiG9w0BAQsFADCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW +ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IC0gRzUwHhcNMTMxMDMxMDAwMDAwWhcNMjMxMDMwMjM1OTU5WjB3MQsw +CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV +BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMTH1N5bWFudGVjIENs +YXNzIDMgRVYgU1NMIENBIC0gRzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQDYoWV0I+grZOIy1zM3PY71NBZI3U9/hxz4RCMTjvsR2ERaGHGOYBYmkpv9 +FwvhcXBC/r/6HMCqo6e1cej/GIP23xAKE2LIPZyn3i4/DNkd5y77Ks7Imn+Hv9hM +BBUyydHMlXGgTihPhNk1++OGb5RT5nKKY2cuvmn2926OnGAE6yn6xEdC0niY4+wL +pZLct5q9gGQrOHw4CVtm9i2VeoayNC6FnpAOX7ddpFFyRnATv2fytqdNFB5suVPu +IxpOjUhVQ0GxiXVqQCjFfd3SbtICGS97JJRL6/EaqZvjI5rq+jOrCiy39GAI3Z8c +zd0tAWaAr7MvKR0juIrhoXAHDDQPAgMBAAGjggFdMIIBWTAvBggrBgEFBQcBAQQj +MCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly9zMi5zeW1jYi5jb20wEgYDVR0TAQH/BAgw +BgEB/wIBADBlBgNVHSAEXjBcMFoGBFUdIAAwUjAmBggrBgEFBQcCARYaaHR0cDov +L3d3dy5zeW1hdXRoLmNvbS9jcHMwKAYIKwYBBQUHAgIwHBoaaHR0cDovL3d3dy5z +eW1hdXRoLmNvbS9ycGEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3MxLnN5bWNi +LmNvbS9wY2EzLWc1LmNybDAOBgNVHQ8BAf8EBAMCAQYwKQYDVR0RBCIwIKQeMBwx +GjAYBgNVBAMTEVN5bWFudGVjUEtJLTEtNTMzMB0GA1UdDgQWBBQBWavn3ToLWaZk +Y9bPIAdX1ZHnajAfBgNVHSMEGDAWgBR/02Wnwt3su/AwCfNDOfoCrzMxMzANBgkq +hkiG9w0BAQsFAAOCAQEAQgFVe9AWGl1Y6LubqE3X89frE5SG1n8hC0e8V5uSXU8F +nzikEHzPg74GQ0aNCLxq1xCm+quvL2GoY/Jl339MiBKIT7Np2f8nwAqXkY9W+4nE +qLuSLRtzsMarNvSWbCAI7woeZiRFT2cAQMgHVHQzO6atuyOfZu2iRHA0+w7qAf3P +eHTfp61Vt19N9tY/4IbOJMdCqRMURDVLtt/JYKwMf9mTIUvunORJApjTYHtcvNUw +LwfORELEC5n+5p/8sHiGUW3RLJ3GlvuFgrsEL/digO9i2n/2DqyQuFa9eT/ygG6j +2bkPXToHHZGThkspTOHcteHgM52zyzaRS/6htO7w+Q== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_44[] = { + 0x30, 0x82, 0x05, 0x2b, 0x30, 0x82, 0x04, 0x13, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x7e, 0xe1, 0x4a, 0x6f, 0x6f, 0xef, 0xf2, 0xd3, 0x7f, + 0x3f, 0xad, 0x65, 0x4d, 0x3a, 0xda, 0xb4, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, + 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, + 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, + 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, 0x30, 0x33, 0x30, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x77, 0x31, 0x0b, 0x30, + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1d, + 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x53, 0x79, 0x6d, + 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x16, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x1f, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x45, 0x56, 0x20, 0x53, 0x53, 0x4c, + 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xd8, 0xa1, 0x65, 0x74, 0x23, 0xe8, 0x2b, + 0x64, 0xe2, 0x32, 0xd7, 0x33, 0x37, 0x3d, 0x8e, 0xf5, 0x34, 0x16, 0x48, + 0xdd, 0x4f, 0x7f, 0x87, 0x1c, 0xf8, 0x44, 0x23, 0x13, 0x8e, 0xfb, 0x11, + 0xd8, 0x44, 0x5a, 0x18, 0x71, 0x8e, 0x60, 0x16, 0x26, 0x92, 0x9b, 0xfd, + 0x17, 0x0b, 0xe1, 0x71, 0x70, 0x42, 0xfe, 0xbf, 0xfa, 0x1c, 0xc0, 0xaa, + 0xa3, 0xa7, 0xb5, 0x71, 0xe8, 0xff, 0x18, 0x83, 0xf6, 0xdf, 0x10, 0x0a, + 0x13, 0x62, 0xc8, 0x3d, 0x9c, 0xa7, 0xde, 0x2e, 0x3f, 0x0c, 0xd9, 0x1d, + 0xe7, 0x2e, 0xfb, 0x2a, 0xce, 0xc8, 0x9a, 0x7f, 0x87, 0xbf, 0xd8, 0x4c, + 0x04, 0x15, 0x32, 0xc9, 0xd1, 0xcc, 0x95, 0x71, 0xa0, 0x4e, 0x28, 0x4f, + 0x84, 0xd9, 0x35, 0xfb, 0xe3, 0x86, 0x6f, 0x94, 0x53, 0xe6, 0x72, 0x8a, + 0x63, 0x67, 0x2e, 0xbe, 0x69, 0xf6, 0xf7, 0x6e, 0x8e, 0x9c, 0x60, 0x04, + 0xeb, 0x29, 0xfa, 0xc4, 0x47, 0x42, 0xd2, 0x78, 0x98, 0xe3, 0xec, 0x0b, + 0xa5, 0x92, 0xdc, 0xb7, 0x9a, 0xbd, 0x80, 0x64, 0x2b, 0x38, 0x7c, 0x38, + 0x09, 0x5b, 0x66, 0xf6, 0x2d, 0x95, 0x7a, 0x86, 0xb2, 0x34, 0x2e, 0x85, + 0x9e, 0x90, 0x0e, 0x5f, 0xb7, 0x5d, 0xa4, 0x51, 0x72, 0x46, 0x70, 0x13, + 0xbf, 0x67, 0xf2, 0xb6, 0xa7, 0x4d, 0x14, 0x1e, 0x6c, 0xb9, 0x53, 0xee, + 0x23, 0x1a, 0x4e, 0x8d, 0x48, 0x55, 0x43, 0x41, 0xb1, 0x89, 0x75, 0x6a, + 0x40, 0x28, 0xc5, 0x7d, 0xdd, 0xd2, 0x6e, 0xd2, 0x02, 0x19, 0x2f, 0x7b, + 0x24, 0x94, 0x4b, 0xeb, 0xf1, 0x1a, 0xa9, 0x9b, 0xe3, 0x23, 0x9a, 0xea, + 0xfa, 0x33, 0xab, 0x0a, 0x2c, 0xb7, 0xf4, 0x60, 0x08, 0xdd, 0x9f, 0x1c, + 0xcd, 0xdd, 0x2d, 0x01, 0x66, 0x80, 0xaf, 0xb3, 0x2f, 0x29, 0x1d, 0x23, + 0xb8, 0x8a, 0xe1, 0xa1, 0x70, 0x07, 0x0c, 0x34, 0x0f, 0x02, 0x03, 0x01, + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x5d, 0x30, 0x82, 0x01, 0x59, 0x30, 0x2f, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x23, + 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, + 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x30, + 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, + 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x65, 0x06, 0x03, 0x55, + 0x1d, 0x20, 0x04, 0x5e, 0x30, 0x5c, 0x30, 0x5a, 0x06, 0x04, 0x55, 0x1d, + 0x20, 0x00, 0x30, 0x52, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x28, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x1c, 0x1a, 0x1a, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, + 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, + 0x70, 0x61, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x29, 0x30, + 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, 0x2d, 0x67, 0x35, + 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, + 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x29, 0x06, 0x03, + 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, + 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, + 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, + 0x35, 0x33, 0x33, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, + 0x04, 0x14, 0x01, 0x59, 0xab, 0xe7, 0xdd, 0x3a, 0x0b, 0x59, 0xa6, 0x64, + 0x63, 0xd6, 0xcf, 0x20, 0x07, 0x57, 0xd5, 0x91, 0xe7, 0x6a, 0x30, 0x1f, + 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7f, + 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, 0x43, + 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x01, 0x00, 0x42, 0x01, 0x55, 0x7b, 0xd0, 0x16, 0x1a, 0x5d, 0x58, + 0xe8, 0xbb, 0x9b, 0xa8, 0x4d, 0xd7, 0xf3, 0xd7, 0xeb, 0x13, 0x94, 0x86, + 0xd6, 0x7f, 0x21, 0x0b, 0x47, 0xbc, 0x57, 0x9b, 0x92, 0x5d, 0x4f, 0x05, + 0x9f, 0x38, 0xa4, 0x10, 0x7c, 0xcf, 0x83, 0xbe, 0x06, 0x43, 0x46, 0x8d, + 0x08, 0xbc, 0x6a, 0xd7, 0x10, 0xa6, 0xfa, 0xab, 0xaf, 0x2f, 0x61, 0xa8, + 0x63, 0xf2, 0x65, 0xdf, 0x7f, 0x4c, 0x88, 0x12, 0x88, 0x4f, 0xb3, 0x69, + 0xd9, 0xff, 0x27, 0xc0, 0x0a, 0x97, 0x91, 0x8f, 0x56, 0xfb, 0x89, 0xc4, + 0xa8, 0xbb, 0x92, 0x2d, 0x1b, 0x73, 0xb0, 0xc6, 0xab, 0x36, 0xf4, 0x96, + 0x6c, 0x20, 0x08, 0xef, 0x0a, 0x1e, 0x66, 0x24, 0x45, 0x4f, 0x67, 0x00, + 0x40, 0xc8, 0x07, 0x54, 0x74, 0x33, 0x3b, 0xa6, 0xad, 0xbb, 0x23, 0x9f, + 0x66, 0xed, 0xa2, 0x44, 0x70, 0x34, 0xfb, 0x0e, 0xea, 0x01, 0xfd, 0xcf, + 0x78, 0x74, 0xdf, 0xa7, 0xad, 0x55, 0xb7, 0x5f, 0x4d, 0xf6, 0xd6, 0x3f, + 0xe0, 0x86, 0xce, 0x24, 0xc7, 0x42, 0xa9, 0x13, 0x14, 0x44, 0x35, 0x4b, + 0xb6, 0xdf, 0xc9, 0x60, 0xac, 0x0c, 0x7f, 0xd9, 0x93, 0x21, 0x4b, 0xee, + 0x9c, 0xe4, 0x49, 0x02, 0x98, 0xd3, 0x60, 0x7b, 0x5c, 0xbc, 0xd5, 0x30, + 0x2f, 0x07, 0xce, 0x44, 0x42, 0xc4, 0x0b, 0x99, 0xfe, 0xe6, 0x9f, 0xfc, + 0xb0, 0x78, 0x86, 0x51, 0x6d, 0xd1, 0x2c, 0x9d, 0xc6, 0x96, 0xfb, 0x85, + 0x82, 0xbb, 0x04, 0x2f, 0xf7, 0x62, 0x80, 0xef, 0x62, 0xda, 0x7f, 0xf6, + 0x0e, 0xac, 0x90, 0xb8, 0x56, 0xbd, 0x79, 0x3f, 0xf2, 0x80, 0x6e, 0xa3, + 0xd9, 0xb9, 0x0f, 0x5d, 0x3a, 0x07, 0x1d, 0x91, 0x93, 0x86, 0x4b, 0x29, + 0x4c, 0xe1, 0xdc, 0xb5, 0xe1, 0xe0, 0x33, 0x9d, 0xb3, 0xcb, 0x36, 0x91, + 0x4b, 0xfe, 0xa1, 0xb4, 0xee, 0xf0, 0xf9, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 51:3f:b9:74:38:70:b7:34:40:41:8d:30:93:06:99:ff + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 2006 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 3 Public Primary Certification Authority - G5 + Validity + Not Before: Oct 31 00:00:00 2013 GMT + Not After : Oct 30 23:59:59 2023 GMT + Subject: C=US, O=Symantec Corporation, OU=Symantec Trust Network, CN=Symantec Class 3 Secure Server CA - G4 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:b2:d8:05:ca:1c:74:2d:b5:17:56:39:c5:4a:52: + 09:96:e8:4b:d8:0c:f1:68:9f:9a:42:28:62:c3:a5: + 30:53:7e:55:11:82:5b:03:7a:0d:2f:e1:79:04:c9: + b4:96:77:19:81:01:94:59:f9:bc:f7:7a:99:27:82: + 2d:b7:83:dd:5a:27:7f:b2:03:7a:9c:53:25:e9:48: + 1f:46:4f:c8:9d:29:f8:be:79:56:f6:f7:fd:d9:3a: + 68:da:8b:4b:82:33:41:12:c3:c8:3c:cc:d6:96:7a: + 84:21:1a:22:04:03:27:17:8b:1c:68:61:93:0f:0e: + 51:80:33:1d:b4:b5:ce:eb:7e:d0:62:ac:ee:b3:7b: + 01:74:ef:69:35:eb:ca:d5:3d:a9:ee:97:98:ca:8d: + aa:44:0e:25:99:4a:15:96:a4:ce:6d:02:54:1f:2a: + 6a:26:e2:06:3a:63:48:ac:b4:4c:d1:75:93:50:ff: + 13:2f:d6:da:e1:c6:18:f5:9f:c9:25:5d:f3:00:3a: + de:26:4d:b4:29:09:cd:0f:3d:23:6f:16:4a:81:16: + fb:f2:83:10:c3:b8:d6:d8:55:32:3d:f1:bd:0f:bd: + 8c:52:95:4a:16:97:7a:52:21:63:75:2f:16:f9:c4: + 66:be:f5:b5:09:d8:ff:27:00:cd:44:7c:6f:4b:3f: + b0:f7 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 CRL Distribution Points: + + Full Name: + URI:http://s1.symcb.com/pca3-g5.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + Authority Information Access: + OCSP - URI:http://s2.symcb.com + + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: http://www.symauth.com/cps + User Notice: + Explicit Text: http://www.symauth.com/rpa + + X509v3 Subject Alternative Name: + DirName:/CN=SymantecPKI-1-534 + X509v3 Subject Key Identifier: + 5F:60:CF:61:90:55:DF:84:43:14:8A:60:2A:B2:F5:7A:F4:43:18:EF + X509v3 Authority Key Identifier: + keyid:7F:D3:65:A7:C2:DD:EC:BB:F0:30:09:F3:43:39:FA:02:AF:33:31:33 + + Signature Algorithm: sha256WithRSAEncryption + 5e:94:56:49:dd:8e:2d:65:f5:c1:36:51:b6:03:e3:da:9e:73: + 19:f2:1f:59:ab:58:7e:6c:26:05:2c:fa:81:d7:5c:23:17:22: + 2c:37:93:f7:86:ec:85:e6:b0:a3:fd:1f:e2:32:a8:45:6f:e1: + d9:fb:b9:af:d2:70:a0:32:42:65:bf:84:fe:16:2a:8f:3f:c5: + a6:d6:a3:93:7d:43:e9:74:21:91:35:28:f4:63:e9:2e:ed:f7: + f5:5c:7f:4b:9a:b5:20:e9:0a:bd:e0:45:10:0c:14:94:9a:5d: + a5:e3:4b:91:e8:24:9b:46:40:65:f4:22:72:cd:99:f8:88:11: + f5:f3:7f:e6:33:82:e6:a8:c5:7e:fe:d0:08:e2:25:58:08:71: + 68:e6:cd:a2:e6:14:de:4e:52:24:2d:fd:e5:79:13:53:e7:5e: + 2f:2d:4d:1b:6d:40:15:52:2b:f7:87:89:78:12:81:6e:d9:4d: + aa:2d:78:d4:c2:2c:3d:08:5f:87:91:9e:1f:0e:b0:de:30:52: + 64:86:89:aa:9d:66:9c:0e:76:0c:80:f2:74:d8:2a:f8:b8:3a: + ce:d7:d6:0f:11:be:6b:ab:14:f5:bd:41:a0:22:63:89:f1:ba: + 0f:6f:29:63:66:2d:3f:ac:8c:72:c5:fb:c7:e4:d4:0f:f2:3b: + 4f:8c:29:c7 +-----BEGIN CERTIFICATE----- +MIIFODCCBCCgAwIBAgIQUT+5dDhwtzRAQY0wkwaZ/zANBgkqhkiG9w0BAQsFADCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW +ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IC0gRzUwHhcNMTMxMDMxMDAwMDAwWhcNMjMxMDMwMjM1OTU5WjB+MQsw +CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV +BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxLzAtBgNVBAMTJlN5bWFudGVjIENs +YXNzIDMgU2VjdXJlIFNlcnZlciBDQSAtIEc0MIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAstgFyhx0LbUXVjnFSlIJluhL2AzxaJ+aQihiw6UwU35VEYJb +A3oNL+F5BMm0lncZgQGUWfm893qZJ4Itt4PdWid/sgN6nFMl6UgfRk/InSn4vnlW +9vf92Tpo2otLgjNBEsPIPMzWlnqEIRoiBAMnF4scaGGTDw5RgDMdtLXO637QYqzu +s3sBdO9pNevK1T2p7peYyo2qRA4lmUoVlqTObQJUHypqJuIGOmNIrLRM0XWTUP8T +L9ba4cYY9Z/JJV3zADreJk20KQnNDz0jbxZKgRb78oMQw7jW2FUyPfG9D72MUpVK +Fpd6UiFjdS8W+cRmvvW1Cdj/JwDNRHxvSz+w9wIDAQABo4IBYzCCAV8wEgYDVR0T +AQH/BAgwBgEB/wIBADAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vczEuc3ltY2Iu +Y29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB/wQEAwIBBjAvBggrBgEFBQcBAQQjMCEw +HwYIKwYBBQUHMAGGE2h0dHA6Ly9zMi5zeW1jYi5jb20wawYDVR0gBGQwYjBgBgpg +hkgBhvhFAQc2MFIwJgYIKwYBBQUHAgEWGmh0dHA6Ly93d3cuc3ltYXV0aC5jb20v +Y3BzMCgGCCsGAQUFBwICMBwaGmh0dHA6Ly93d3cuc3ltYXV0aC5jb20vcnBhMCkG +A1UdEQQiMCCkHjAcMRowGAYDVQQDExFTeW1hbnRlY1BLSS0xLTUzNDAdBgNVHQ4E +FgQUX2DPYZBV34RDFIpgKrL1evRDGO8wHwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnz +Qzn6Aq8zMTMwDQYJKoZIhvcNAQELBQADggEBAF6UVkndji1l9cE2UbYD49qecxny +H1mrWH5sJgUs+oHXXCMXIiw3k/eG7IXmsKP9H+IyqEVv4dn7ua/ScKAyQmW/hP4W +Ko8/xabWo5N9Q+l0IZE1KPRj6S7t9/Vcf0uatSDpCr3gRRAMFJSaXaXjS5HoJJtG +QGX0InLNmfiIEfXzf+YzguaoxX7+0AjiJVgIcWjmzaLmFN5OUiQt/eV5E1PnXi8t +TRttQBVSK/eHiXgSgW7ZTaoteNTCLD0IX4eRnh8OsN4wUmSGiaqdZpwOdgyA8nTY +Kvi4Os7X1g8RvmurFPW9QaAiY4nxug9vKWNmLT+sjHLF+8fk1A/yO0+MKcc= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_45[] = { + 0x30, 0x82, 0x05, 0x38, 0x30, 0x82, 0x04, 0x20, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x51, 0x3f, 0xb9, 0x74, 0x38, 0x70, 0xb7, 0x34, 0x40, + 0x41, 0x8d, 0x30, 0x93, 0x06, 0x99, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, + 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, + 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, + 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, 0x30, 0x33, 0x30, + 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x7e, 0x31, 0x0b, 0x30, + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1d, + 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x53, 0x79, 0x6d, + 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x16, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x26, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, + 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x2d, + 0x20, 0x47, 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xb2, 0xd8, 0x05, 0xca, 0x1c, 0x74, 0x2d, 0xb5, 0x17, 0x56, 0x39, 0xc5, + 0x4a, 0x52, 0x09, 0x96, 0xe8, 0x4b, 0xd8, 0x0c, 0xf1, 0x68, 0x9f, 0x9a, + 0x42, 0x28, 0x62, 0xc3, 0xa5, 0x30, 0x53, 0x7e, 0x55, 0x11, 0x82, 0x5b, + 0x03, 0x7a, 0x0d, 0x2f, 0xe1, 0x79, 0x04, 0xc9, 0xb4, 0x96, 0x77, 0x19, + 0x81, 0x01, 0x94, 0x59, 0xf9, 0xbc, 0xf7, 0x7a, 0x99, 0x27, 0x82, 0x2d, + 0xb7, 0x83, 0xdd, 0x5a, 0x27, 0x7f, 0xb2, 0x03, 0x7a, 0x9c, 0x53, 0x25, + 0xe9, 0x48, 0x1f, 0x46, 0x4f, 0xc8, 0x9d, 0x29, 0xf8, 0xbe, 0x79, 0x56, + 0xf6, 0xf7, 0xfd, 0xd9, 0x3a, 0x68, 0xda, 0x8b, 0x4b, 0x82, 0x33, 0x41, + 0x12, 0xc3, 0xc8, 0x3c, 0xcc, 0xd6, 0x96, 0x7a, 0x84, 0x21, 0x1a, 0x22, + 0x04, 0x03, 0x27, 0x17, 0x8b, 0x1c, 0x68, 0x61, 0x93, 0x0f, 0x0e, 0x51, + 0x80, 0x33, 0x1d, 0xb4, 0xb5, 0xce, 0xeb, 0x7e, 0xd0, 0x62, 0xac, 0xee, + 0xb3, 0x7b, 0x01, 0x74, 0xef, 0x69, 0x35, 0xeb, 0xca, 0xd5, 0x3d, 0xa9, + 0xee, 0x97, 0x98, 0xca, 0x8d, 0xaa, 0x44, 0x0e, 0x25, 0x99, 0x4a, 0x15, + 0x96, 0xa4, 0xce, 0x6d, 0x02, 0x54, 0x1f, 0x2a, 0x6a, 0x26, 0xe2, 0x06, + 0x3a, 0x63, 0x48, 0xac, 0xb4, 0x4c, 0xd1, 0x75, 0x93, 0x50, 0xff, 0x13, + 0x2f, 0xd6, 0xda, 0xe1, 0xc6, 0x18, 0xf5, 0x9f, 0xc9, 0x25, 0x5d, 0xf3, + 0x00, 0x3a, 0xde, 0x26, 0x4d, 0xb4, 0x29, 0x09, 0xcd, 0x0f, 0x3d, 0x23, + 0x6f, 0x16, 0x4a, 0x81, 0x16, 0xfb, 0xf2, 0x83, 0x10, 0xc3, 0xb8, 0xd6, + 0xd8, 0x55, 0x32, 0x3d, 0xf1, 0xbd, 0x0f, 0xbd, 0x8c, 0x52, 0x95, 0x4a, + 0x16, 0x97, 0x7a, 0x52, 0x21, 0x63, 0x75, 0x2f, 0x16, 0xf9, 0xc4, 0x66, + 0xbe, 0xf5, 0xb5, 0x09, 0xd8, 0xff, 0x27, 0x00, 0xcd, 0x44, 0x7c, 0x6f, + 0x4b, 0x3f, 0xb0, 0xf7, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, + 0x63, 0x30, 0x82, 0x01, 0x5f, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, + 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, + 0x00, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x29, 0x30, 0x27, + 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x73, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, 0x2d, 0x67, 0x35, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2f, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x23, 0x30, 0x21, 0x30, + 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, + 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x32, 0x2e, 0x73, + 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x6b, 0x06, 0x03, + 0x55, 0x1d, 0x20, 0x04, 0x64, 0x30, 0x62, 0x30, 0x60, 0x06, 0x0a, 0x60, + 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30, 0x52, 0x30, + 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, + 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, + 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x70, 0x73, 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x02, 0x30, 0x1c, 0x1a, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, + 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x29, 0x06, + 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, + 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, + 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, + 0x2d, 0x35, 0x33, 0x34, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, + 0x16, 0x04, 0x14, 0x5f, 0x60, 0xcf, 0x61, 0x90, 0x55, 0xdf, 0x84, 0x43, + 0x14, 0x8a, 0x60, 0x2a, 0xb2, 0xf5, 0x7a, 0xf4, 0x43, 0x18, 0xef, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, + 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x5e, 0x94, 0x56, 0x49, 0xdd, 0x8e, 0x2d, 0x65, + 0xf5, 0xc1, 0x36, 0x51, 0xb6, 0x03, 0xe3, 0xda, 0x9e, 0x73, 0x19, 0xf2, + 0x1f, 0x59, 0xab, 0x58, 0x7e, 0x6c, 0x26, 0x05, 0x2c, 0xfa, 0x81, 0xd7, + 0x5c, 0x23, 0x17, 0x22, 0x2c, 0x37, 0x93, 0xf7, 0x86, 0xec, 0x85, 0xe6, + 0xb0, 0xa3, 0xfd, 0x1f, 0xe2, 0x32, 0xa8, 0x45, 0x6f, 0xe1, 0xd9, 0xfb, + 0xb9, 0xaf, 0xd2, 0x70, 0xa0, 0x32, 0x42, 0x65, 0xbf, 0x84, 0xfe, 0x16, + 0x2a, 0x8f, 0x3f, 0xc5, 0xa6, 0xd6, 0xa3, 0x93, 0x7d, 0x43, 0xe9, 0x74, + 0x21, 0x91, 0x35, 0x28, 0xf4, 0x63, 0xe9, 0x2e, 0xed, 0xf7, 0xf5, 0x5c, + 0x7f, 0x4b, 0x9a, 0xb5, 0x20, 0xe9, 0x0a, 0xbd, 0xe0, 0x45, 0x10, 0x0c, + 0x14, 0x94, 0x9a, 0x5d, 0xa5, 0xe3, 0x4b, 0x91, 0xe8, 0x24, 0x9b, 0x46, + 0x40, 0x65, 0xf4, 0x22, 0x72, 0xcd, 0x99, 0xf8, 0x88, 0x11, 0xf5, 0xf3, + 0x7f, 0xe6, 0x33, 0x82, 0xe6, 0xa8, 0xc5, 0x7e, 0xfe, 0xd0, 0x08, 0xe2, + 0x25, 0x58, 0x08, 0x71, 0x68, 0xe6, 0xcd, 0xa2, 0xe6, 0x14, 0xde, 0x4e, + 0x52, 0x24, 0x2d, 0xfd, 0xe5, 0x79, 0x13, 0x53, 0xe7, 0x5e, 0x2f, 0x2d, + 0x4d, 0x1b, 0x6d, 0x40, 0x15, 0x52, 0x2b, 0xf7, 0x87, 0x89, 0x78, 0x12, + 0x81, 0x6e, 0xd9, 0x4d, 0xaa, 0x2d, 0x78, 0xd4, 0xc2, 0x2c, 0x3d, 0x08, + 0x5f, 0x87, 0x91, 0x9e, 0x1f, 0x0e, 0xb0, 0xde, 0x30, 0x52, 0x64, 0x86, + 0x89, 0xaa, 0x9d, 0x66, 0x9c, 0x0e, 0x76, 0x0c, 0x80, 0xf2, 0x74, 0xd8, + 0x2a, 0xf8, 0xb8, 0x3a, 0xce, 0xd7, 0xd6, 0x0f, 0x11, 0xbe, 0x6b, 0xab, + 0x14, 0xf5, 0xbd, 0x41, 0xa0, 0x22, 0x63, 0x89, 0xf1, 0xba, 0x0f, 0x6f, + 0x29, 0x63, 0x66, 0x2d, 0x3f, 0xac, 0x8c, 0x72, 0xc5, 0xfb, 0xc7, 0xe4, + 0xd4, 0x0f, 0xf2, 0x3b, 0x4f, 0x8c, 0x29, 0xc7, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 69:87:94:19:d9:e3:62:70:74:9d:bb:e5:9d:c6:68:5e + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 2008 VeriSign, Inc. - For authorized use only, CN=VeriSign Universal Root Certification Authority + Validity + Not Before: Apr 9 00:00:00 2013 GMT + Not After : Apr 8 23:59:59 2023 GMT + Subject: C=US, O=Symantec Corporation, OU=Symantec Trust Network, CN=Symantec Class 3 Secure Server SHA256 SSL CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:be:38:16:51:8b:80:db:ea:0e:4d:ec:e8:3f:5c: + c4:7c:a2:5d:ed:3b:af:a5:d6:9e:10:35:2c:e3:c5: + e5:a8:de:8c:86:17:26:e6:de:0b:51:4a:2c:d0:fb: + d1:14:5a:72:f7:c9:dd:b8:83:1c:c6:46:8c:31:25: + 91:0e:59:17:a3:d0:13:8c:92:c1:af:81:54:4e:bc: + 62:02:9e:aa:a7:1a:57:d8:ca:a6:99:7a:70:56:4f: + 98:07:2e:4b:96:d0:4c:39:53:b9:61:2f:3b:76:7c: + 8e:05:9e:99:44:d1:03:54:77:29:2b:56:2a:aa:61: + e4:84:2f:12:15:3c:bd:d7:8a:e8:09:1e:56:f1:b5: + 14:ac:8a:84:ce:ae:78:a2:60:0a:53:7e:13:4c:1a: + 40:70:0e:52:59:ff:5a:68:2e:4c:46:13:3b:39:09: + 82:78:02:35:49:20:08:82:b3:b1:6c:89:0f:6e:1e: + 35:25:b0:2c:24:83:e3:c5:50:2c:ba:46:90:45:87: + 0d:72:ff:5d:11:38:c5:91:76:c5:2c:fb:05:2a:82: + 95:a1:59:63:e3:d0:26:58:cd:67:56:3a:ba:df:7c: + d2:d2:3b:d8:de:1a:7a:77:e4:0c:8c:0b:eb:2b:c2: + 22:b0:bd:55:ba:d9:b9:55:d1:22:7a:c6:02:4e:3f: + c3:35 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.ws.symantec.com/universal-root.crl + + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + Authority Information Access: + OCSP - URI:http://ocsp.ws.symantec.com + + X509v3 Certificate Policies: + Policy: 2.16.840.1.113733.1.7.54 + CPS: http://www.symauth.com/cps + User Notice: + Explicit Text: http://www.symauth.com/rpa + + X509v3 Subject Alternative Name: + DirName:/CN=VeriSignMPKI-2-373 + X509v3 Subject Key Identifier: + DB:62:20:FB:7D:02:89:7C:D2:3B:6F:C7:E4:32:6C:05:52:1D:AD:B1 + X509v3 Authority Key Identifier: + keyid:B6:77:FA:69:48:47:9F:53:12:D5:C2:EA:07:32:76:07:D1:97:07:19 + + Signature Algorithm: sha256WithRSAEncryption + 19:cc:95:e2:2f:7b:49:d0:48:90:53:f4:07:b1:20:44:35:70: + 14:d5:44:37:31:ef:ef:70:d1:2d:4c:e9:2d:b0:53:91:01:4c: + 54:e7:7d:9b:da:3a:ff:b7:cb:14:ad:30:0f:69:1a:2a:f0:bc: + cd:35:eb:48:dc:b9:87:fd:cf:b1:5a:f6:05:da:3c:64:e6:2b: + e6:dc:73:5e:9a:d8:0c:9b:d2:97:b3:e8:fa:87:95:53:e1:99: + ad:88:e8:fa:bc:09:4d:a2:c4:6a:1b:28:3b:2d:c3:21:15:ee: + 14:fa:9d:98:10:eb:9f:3e:e6:24:24:5f:7a:1c:05:bb:9a:31: + 23:58:79:4c:ec:6d:18:19:4d:51:1f:08:61:bd:91:05:0c:5a: + 9c:26:fc:0b:a5:20:25:bf:6a:1b:2b:f7:02:09:72:69:83:32: + 14:c3:60:5b:7e:fd:9a:32:fa:b4:95:0e:1a:f9:3b:09:a4:54: + 47:9a:0c:ce:32:af:d1:21:cc:7f:d2:06:ef:60:0e:62:6f:6f: + 81:1a:17:9d:c8:cb:28:cc:e2:5f:6e:2c:7a:b4:cb:47:7c:74: + 68:7b:48:71:02:9c:23:09:f3:5a:ae:5f:42:2e:5f:2b:59:2d: + 52:88:e5:8d:0b:b3:a8:61:f9:4b:9b:55:d6:da:b1:92:3b:bf: + c3:9b:f9:2c +-----BEGIN CERTIFICATE----- +MIIFSTCCBDGgAwIBAgIQaYeUGdnjYnB0nbvlncZoXjANBgkqhkiG9w0BAQsFADCB +vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W +ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe +Fw0xMzA0MDkwMDAwMDBaFw0yMzA0MDgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEd +MBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVj +IFRydXN0IE5ldHdvcmsxNTAzBgNVBAMTLFN5bWFudGVjIENsYXNzIDMgU2VjdXJl +IFNlcnZlciBTSEEyNTYgU1NMIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAvjgWUYuA2+oOTezoP1zEfKJd7TuvpdaeEDUs48XlqN6Mhhcm5t4LUUos +0PvRFFpy98nduIMcxkaMMSWRDlkXo9ATjJLBr4FUTrxiAp6qpxpX2MqmmXpwVk+Y +By5LltBMOVO5YS87dnyOBZ6ZRNEDVHcpK1YqqmHkhC8SFTy914roCR5W8bUUrIqE +zq54omAKU34TTBpAcA5SWf9aaC5MRhM7OQmCeAI1SSAIgrOxbIkPbh41JbAsJIPj +xVAsukaQRYcNcv9dETjFkXbFLPsFKoKVoVlj49AmWM1nVjq633zS0jvY3hp6d+QM +jAvrK8IisL1Vutm5VdEiesYCTj/DNQIDAQABo4IBejCCAXYwEgYDVR0TAQH/BAgw +BgEB/wIBADA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vY3JsLndzLnN5bWFudGVj +LmNvbS91bml2ZXJzYWwtcm9vdC5jcmwwDgYDVR0PAQH/BAQDAgEGMDcGCCsGAQUF +BwEBBCswKTAnBggrBgEFBQcwAYYbaHR0cDovL29jc3Aud3Muc3ltYW50ZWMuY29t +MGsGA1UdIARkMGIwYAYKYIZIAYb4RQEHNjBSMCYGCCsGAQUFBwIBFhpodHRwOi8v +d3d3LnN5bWF1dGguY29tL2NwczAoBggrBgEFBQcCAjAcGhpodHRwOi8vd3d3LnN5 +bWF1dGguY29tL3JwYTAqBgNVHREEIzAhpB8wHTEbMBkGA1UEAxMSVmVyaVNpZ25N +UEtJLTItMzczMB0GA1UdDgQWBBTbYiD7fQKJfNI7b8fkMmwFUh2tsTAfBgNVHSME +GDAWgBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEAGcyV +4i97SdBIkFP0B7EgRDVwFNVENzHv73DRLUzpLbBTkQFMVOd9m9o6/7fLFK0wD2ka +KvC8zTXrSNy5h/3PsVr2Bdo8ZOYr5txzXprYDJvSl7Po+oeVU+GZrYjo+rwJTaLE +ahsoOy3DIRXuFPqdmBDrnz7mJCRfehwFu5oxI1h5TOxtGBlNUR8IYb2RBQxanCb8 +C6UgJb9qGyv3AglyaYMyFMNgW379mjL6tJUOGvk7CaRUR5oMzjKv0SHMf9IG72AO +Ym9vgRoXncjLKMziX24serTLR3x0aHtIcQKcIwnzWq5fQi5fK1ktUojljQuzqGH5 +S5tV1tqxkju/w5v5LA== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_46[] = { + 0x30, 0x82, 0x05, 0x49, 0x30, 0x82, 0x04, 0x31, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x69, 0x87, 0x94, 0x19, 0xd9, 0xe3, 0x62, 0x70, 0x74, + 0x9d, 0xbb, 0xe5, 0x9d, 0xc6, 0x68, 0x5e, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, + 0xbd, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, + 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, + 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x38, 0x20, 0x56, 0x65, 0x72, 0x69, + 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, + 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x31, 0x38, 0x30, 0x36, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2f, 0x56, + 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x55, 0x6e, 0x69, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, + 0x17, 0x0d, 0x31, 0x33, 0x30, 0x34, 0x30, 0x39, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x30, 0x34, 0x30, 0x38, 0x32, + 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0x84, 0x31, 0x0b, 0x30, + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1d, + 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x53, 0x79, 0x6d, + 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x16, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x31, 0x35, 0x30, 0x33, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x2c, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, + 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x53, 0x48, 0x41, 0x32, + 0x35, 0x36, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbe, 0x38, 0x16, 0x51, 0x8b, 0x80, + 0xdb, 0xea, 0x0e, 0x4d, 0xec, 0xe8, 0x3f, 0x5c, 0xc4, 0x7c, 0xa2, 0x5d, + 0xed, 0x3b, 0xaf, 0xa5, 0xd6, 0x9e, 0x10, 0x35, 0x2c, 0xe3, 0xc5, 0xe5, + 0xa8, 0xde, 0x8c, 0x86, 0x17, 0x26, 0xe6, 0xde, 0x0b, 0x51, 0x4a, 0x2c, + 0xd0, 0xfb, 0xd1, 0x14, 0x5a, 0x72, 0xf7, 0xc9, 0xdd, 0xb8, 0x83, 0x1c, + 0xc6, 0x46, 0x8c, 0x31, 0x25, 0x91, 0x0e, 0x59, 0x17, 0xa3, 0xd0, 0x13, + 0x8c, 0x92, 0xc1, 0xaf, 0x81, 0x54, 0x4e, 0xbc, 0x62, 0x02, 0x9e, 0xaa, + 0xa7, 0x1a, 0x57, 0xd8, 0xca, 0xa6, 0x99, 0x7a, 0x70, 0x56, 0x4f, 0x98, + 0x07, 0x2e, 0x4b, 0x96, 0xd0, 0x4c, 0x39, 0x53, 0xb9, 0x61, 0x2f, 0x3b, + 0x76, 0x7c, 0x8e, 0x05, 0x9e, 0x99, 0x44, 0xd1, 0x03, 0x54, 0x77, 0x29, + 0x2b, 0x56, 0x2a, 0xaa, 0x61, 0xe4, 0x84, 0x2f, 0x12, 0x15, 0x3c, 0xbd, + 0xd7, 0x8a, 0xe8, 0x09, 0x1e, 0x56, 0xf1, 0xb5, 0x14, 0xac, 0x8a, 0x84, + 0xce, 0xae, 0x78, 0xa2, 0x60, 0x0a, 0x53, 0x7e, 0x13, 0x4c, 0x1a, 0x40, + 0x70, 0x0e, 0x52, 0x59, 0xff, 0x5a, 0x68, 0x2e, 0x4c, 0x46, 0x13, 0x3b, + 0x39, 0x09, 0x82, 0x78, 0x02, 0x35, 0x49, 0x20, 0x08, 0x82, 0xb3, 0xb1, + 0x6c, 0x89, 0x0f, 0x6e, 0x1e, 0x35, 0x25, 0xb0, 0x2c, 0x24, 0x83, 0xe3, + 0xc5, 0x50, 0x2c, 0xba, 0x46, 0x90, 0x45, 0x87, 0x0d, 0x72, 0xff, 0x5d, + 0x11, 0x38, 0xc5, 0x91, 0x76, 0xc5, 0x2c, 0xfb, 0x05, 0x2a, 0x82, 0x95, + 0xa1, 0x59, 0x63, 0xe3, 0xd0, 0x26, 0x58, 0xcd, 0x67, 0x56, 0x3a, 0xba, + 0xdf, 0x7c, 0xd2, 0xd2, 0x3b, 0xd8, 0xde, 0x1a, 0x7a, 0x77, 0xe4, 0x0c, + 0x8c, 0x0b, 0xeb, 0x2b, 0xc2, 0x22, 0xb0, 0xbd, 0x55, 0xba, 0xd9, 0xb9, + 0x55, 0xd1, 0x22, 0x7a, 0xc6, 0x02, 0x4e, 0x3f, 0xc3, 0x35, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x7a, 0x30, 0x82, 0x01, 0x76, 0x30, + 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, + 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x3e, 0x06, 0x03, 0x55, + 0x1d, 0x1f, 0x04, 0x37, 0x30, 0x35, 0x30, 0x33, 0xa0, 0x31, 0xa0, 0x2f, + 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, + 0x2e, 0x77, 0x73, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x6c, 0x2d, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x2b, 0x30, 0x29, 0x30, 0x27, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1b, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x77, 0x73, 0x2e, + 0x73, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x6b, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x64, 0x30, 0x62, 0x30, + 0x60, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, + 0x36, 0x30, 0x52, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x28, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x1c, 0x1a, 0x1a, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79, + 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, + 0x61, 0x30, 0x2a, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x23, 0x30, 0x21, + 0xa4, 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x12, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, + 0x50, 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x33, 0x37, 0x33, 0x30, 0x1d, 0x06, + 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xdb, 0x62, 0x20, 0xfb, + 0x7d, 0x02, 0x89, 0x7c, 0xd2, 0x3b, 0x6f, 0xc7, 0xe4, 0x32, 0x6c, 0x05, + 0x52, 0x1d, 0xad, 0xb1, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x18, 0x30, 0x16, 0x80, 0x14, 0xb6, 0x77, 0xfa, 0x69, 0x48, 0x47, 0x9f, + 0x53, 0x12, 0xd5, 0xc2, 0xea, 0x07, 0x32, 0x76, 0x07, 0xd1, 0x97, 0x07, + 0x19, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x19, 0xcc, 0x95, + 0xe2, 0x2f, 0x7b, 0x49, 0xd0, 0x48, 0x90, 0x53, 0xf4, 0x07, 0xb1, 0x20, + 0x44, 0x35, 0x70, 0x14, 0xd5, 0x44, 0x37, 0x31, 0xef, 0xef, 0x70, 0xd1, + 0x2d, 0x4c, 0xe9, 0x2d, 0xb0, 0x53, 0x91, 0x01, 0x4c, 0x54, 0xe7, 0x7d, + 0x9b, 0xda, 0x3a, 0xff, 0xb7, 0xcb, 0x14, 0xad, 0x30, 0x0f, 0x69, 0x1a, + 0x2a, 0xf0, 0xbc, 0xcd, 0x35, 0xeb, 0x48, 0xdc, 0xb9, 0x87, 0xfd, 0xcf, + 0xb1, 0x5a, 0xf6, 0x05, 0xda, 0x3c, 0x64, 0xe6, 0x2b, 0xe6, 0xdc, 0x73, + 0x5e, 0x9a, 0xd8, 0x0c, 0x9b, 0xd2, 0x97, 0xb3, 0xe8, 0xfa, 0x87, 0x95, + 0x53, 0xe1, 0x99, 0xad, 0x88, 0xe8, 0xfa, 0xbc, 0x09, 0x4d, 0xa2, 0xc4, + 0x6a, 0x1b, 0x28, 0x3b, 0x2d, 0xc3, 0x21, 0x15, 0xee, 0x14, 0xfa, 0x9d, + 0x98, 0x10, 0xeb, 0x9f, 0x3e, 0xe6, 0x24, 0x24, 0x5f, 0x7a, 0x1c, 0x05, + 0xbb, 0x9a, 0x31, 0x23, 0x58, 0x79, 0x4c, 0xec, 0x6d, 0x18, 0x19, 0x4d, + 0x51, 0x1f, 0x08, 0x61, 0xbd, 0x91, 0x05, 0x0c, 0x5a, 0x9c, 0x26, 0xfc, + 0x0b, 0xa5, 0x20, 0x25, 0xbf, 0x6a, 0x1b, 0x2b, 0xf7, 0x02, 0x09, 0x72, + 0x69, 0x83, 0x32, 0x14, 0xc3, 0x60, 0x5b, 0x7e, 0xfd, 0x9a, 0x32, 0xfa, + 0xb4, 0x95, 0x0e, 0x1a, 0xf9, 0x3b, 0x09, 0xa4, 0x54, 0x47, 0x9a, 0x0c, + 0xce, 0x32, 0xaf, 0xd1, 0x21, 0xcc, 0x7f, 0xd2, 0x06, 0xef, 0x60, 0x0e, + 0x62, 0x6f, 0x6f, 0x81, 0x1a, 0x17, 0x9d, 0xc8, 0xcb, 0x28, 0xcc, 0xe2, + 0x5f, 0x6e, 0x2c, 0x7a, 0xb4, 0xcb, 0x47, 0x7c, 0x74, 0x68, 0x7b, 0x48, + 0x71, 0x02, 0x9c, 0x23, 0x09, 0xf3, 0x5a, 0xae, 0x5f, 0x42, 0x2e, 0x5f, + 0x2b, 0x59, 0x2d, 0x52, 0x88, 0xe5, 0x8d, 0x0b, 0xb3, 0xa8, 0x61, 0xf9, + 0x4b, 0x9b, 0x55, 0xd6, 0xda, 0xb1, 0x92, 0x3b, 0xbf, 0xc3, 0x9b, 0xf9, + 0x2c, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 120036009 (0x7279aa9) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=IE, O=Baltimore, OU=CyberTrust, CN=Baltimore CyberTrust Root + Validity + Not Before: Dec 19 20:07:32 2013 GMT + Not After : Dec 19 20:06:55 2017 GMT + Subject: C=US, ST=Washington, L=Redmond, O=Microsoft Corporation, OU=Microsoft IT, CN=Microsoft IT SSL SHA2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (4096 bit) + Modulus: + 00:d1:e8:37:a7:76:8a:70:4b:19:f0:20:37:09:24: + 37:7f:ea:fb:78:e6:05:ba:6a:ad:4e:27:0d:fc:72: + 6a:d9:6c:21:c4:64:11:95:73:10:0a:5c:25:7b:88: + 6c:94:04:fd:c7:db:ae:7b:dc:4a:08:b3:3e:16:f1: + d0:ad:db:30:6d:d7:1a:1e:52:b5:3d:f0:47:19:03: + e2:7d:a6:bd:57:13:3f:54:ea:3a:a3:b1:77:fc:42: + f0:63:49:6a:91:80:2e:30:49:c0:8a:eb:2b:af:fe: + 3a:eb:07:5d:06:f7:e9:fd:84:0e:91:bd:09:20:29: + e8:6e:5d:09:ce:15:d3:e7:ef:db:50:eb:44:ef:18: + 57:ab:04:1d:bc:31:f9:f7:7b:2a:13:cf:d1:3d:51: + af:1b:c5:b5:7b:e7:b0:fc:53:bb:9a:e7:63:de:41: + 33:b6:47:24:69:5d:b8:46:a7:ff:ad:ab:df:4f:7a: + 78:25:27:21:26:34:ca:02:6e:37:51:f0:ed:58:1a: + 60:94:f6:c4:93:d8:dd:30:24:25:d7:1c:eb:19:94: + 35:5d:93:b2:ae:aa:29:83:73:c4:74:59:05:52:67: + 9d:da:67:51:39:05:3a:36:ea:f2:1e:76:2b:14:ae: + ec:3d:f9:14:99:8b:07:6e:bc:e7:0c:56:de:ac:be: + ae:db:75:32:90:9e:63:bd:74:bf:e0:0a:ca:f8:34: + 96:67:84:cd:d1:42:38:78:c7:99:b6:0c:ce:b6:0f: + e9:1b:cb:f4:59:be:11:0e:cb:2c:32:c8:fa:83:29: + 64:79:3c:8b:4b:f0:32:74:6c:f3:93:b8:96:6b:5d: + 57:5a:68:c1:cc:0c:79:8a:19:de:f5:49:02:5e:08: + 80:01:89:0c:32:cd:d2:d6:96:d5:4b:a0:f3:ec:bf: + ab:f4:7d:b3:a1:b9:7c:da:4e:d7:e5:b7:ac:b9:f2: + 25:5f:01:cb:8c:96:a8:28:ae:c1:33:5a:f6:3f:08: + 90:dc:eb:ff:39:d8:26:c8:12:9d:1c:9a:aa:a9:c0: + 16:8e:86:ed:67:52:96:00:7f:0d:92:3d:3d:d9:70: + 36:e5:ea:42:6f:1f:ae:95:e5:5b:5d:f8:d0:3a:c7: + d4:de:77:86:d0:fc:9e:4e:e2:e2:b8:a9:68:37:09: + c4:39:e3:85:b8:89:f3:1f:6e:b7:6d:1f:4a:2f:18: + 09:6f:de:4a:01:8f:14:c9:b7:a6:ee:a7:63:9f:33: + a4:54:7c:42:83:68:b8:a5:df:bf:ec:b9:1a:5d:13: + 3b:d9:ad:68:fd:20:0a:55:91:21:64:f9:d7:13:01: + a0:08:5d:59:89:1b:44:af:a4:ac:c7:05:10:fa:41: + 4a:a8:fb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: 1.3.6.1.4.1.6334.1.0 + CPS: http://cybertrust.omniroot.com/repository.cfm + + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication + X509v3 Authority Key Identifier: + keyid:E5:9D:59:30:82:47:58:CC:AC:FA:08:54:36:86:7B:3A:B5:04:4D:F0 + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://cdp1.public-trust.com/CRL/Omniroot2025.crl + + X509v3 Subject Key Identifier: + 51:AF:24:26:9C:F4:68:22:57:80:26:2B:3B:46:62:15:7B:1E:CC:A5 + Signature Algorithm: sha256WithRSAEncryption + 76:85:c5:23:31:1f:b4:73:ea:a0:bc:a5:ed:df:45:43:6a:7f: + 69:20:1b:80:b2:fb:1c:dd:aa:7f:88:d3:31:41:36:f7:fb:fb: + 6b:ad:98:8c:78:1f:9d:11:67:3a:cd:4b:ec:a8:bc:9d:15:19: + c4:3b:0b:a7:93:ce:e8:fc:9d:5b:e8:1f:cb:56:ae:76:43:2b: + c7:13:51:77:41:a8:66:4c:5f:a7:d1:d7:aa:75:c5:1b:29:4c: + c9:f4:6d:a1:5e:a1:85:93:16:c2:cb:3b:ab:14:7d:44:fd:da: + 25:29:86:2a:fe:63:20:ca:d2:0b:c2:34:15:bb:af:5b:7f:8a: + e0:aa:ed:45:a6:ea:79:db:d8:35:66:54:43:de:37:33:d1:e4: + e0:cd:57:ca:71:b0:7d:e9:16:77:64:e8:59:97:b9:d5:2e:d1: + b4:91:da:77:71:f3:4a:0f:48:d2:34:99:60:95:37:ac:1f:01: + cd:10:9d:e8:2a:a5:20:c7:50:9b:b3:6c:49:78:2b:58:92:64: + 89:b8:95:36:a8:34:aa:f0:41:d2:95:5a:24:54:97:4d:6e:05: + c4:95:ad:c4:7a:a3:39:fb:79:06:8a:9b:a6:4f:d9:22:fa:44: + 4e:36:f3:c9:0f:a6:39:e7:80:b2:5e:bf:bd:39:d1:46:e5:55: + 47:db:bc:6e +-----BEGIN CERTIFICATE----- +MIIFhjCCBG6gAwIBAgIEByeaqTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJJ +RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD +VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTEzMTIxOTIwMDczMloX +DTE3MTIxOTIwMDY1NVowgYsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5n +dG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y +YXRpb24xFTATBgNVBAsTDE1pY3Jvc29mdCBJVDEeMBwGA1UEAxMVTWljcm9zb2Z0 +IElUIFNTTCBTSEEyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0eg3 +p3aKcEsZ8CA3CSQ3f+r7eOYFumqtTicN/HJq2WwhxGQRlXMQClwle4hslAT9x9uu +e9xKCLM+FvHQrdswbdcaHlK1PfBHGQPifaa9VxM/VOo6o7F3/ELwY0lqkYAuMEnA +iusrr/466wddBvfp/YQOkb0JICnobl0JzhXT5+/bUOtE7xhXqwQdvDH593sqE8/R +PVGvG8W1e+ew/FO7mudj3kEztkckaV24Rqf/ravfT3p4JSchJjTKAm43UfDtWBpg +lPbEk9jdMCQl1xzrGZQ1XZOyrqopg3PEdFkFUmed2mdROQU6NuryHnYrFK7sPfkU +mYsHbrznDFberL6u23UykJ5jvXS/4ArK+DSWZ4TN0UI4eMeZtgzOtg/pG8v0Wb4R +DsssMsj6gylkeTyLS/AydGzzk7iWa11XWmjBzAx5ihne9UkCXgiAAYkMMs3S1pbV +S6Dz7L+r9H2zobl82k7X5besufIlXwHLjJaoKK7BM1r2PwiQ3Ov/OdgmyBKdHJqq +qcAWjobtZ1KWAH8Nkj092XA25epCbx+uleVbXfjQOsfU3neG0PyeTuLiuKloNwnE +OeOFuInzH263bR9KLxgJb95KAY8Uybem7qdjnzOkVHxCg2i4pd+/7LkaXRM72a1o +/SAKVZEhZPnXEwGgCF1ZiRtEr6SsxwUQ+kFKqPsCAwEAAaOCASAwggEcMBIGA1Ud +EwEB/wQIMAYBAf8CAQAwUwYDVR0gBEwwSjBIBgkrBgEEAbE+AQAwOzA5BggrBgEF +BQcCARYtaHR0cDovL2N5YmVydHJ1c3Qub21uaXJvb3QuY29tL3JlcG9zaXRvcnku +Y2ZtMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUH +AwIwHwYDVR0jBBgwFoAU5Z1ZMIJHWMys+ghUNoZ7OrUETfAwQgYDVR0fBDswOTA3 +oDWgM4YxaHR0cDovL2NkcDEucHVibGljLXRydXN0LmNvbS9DUkwvT21uaXJvb3Qy +MDI1LmNybDAdBgNVHQ4EFgQUUa8kJpz0aCJXgCYrO0ZiFXsezKUwDQYJKoZIhvcN +AQELBQADggEBAHaFxSMxH7Rz6qC8pe3fRUNqf2kgG4Cy+xzdqn+I0zFBNvf7+2ut +mIx4H50RZzrNS+yovJ0VGcQ7C6eTzuj8nVvoH8tWrnZDK8cTUXdBqGZMX6fR16p1 +xRspTMn0baFeoYWTFsLLO6sUfUT92iUphir+YyDK0gvCNBW7r1t/iuCq7UWm6nnb +2DVmVEPeNzPR5ODNV8pxsH3pFndk6FmXudUu0bSR2ndx80oPSNI0mWCVN6wfAc0Q +negqpSDHUJuzbEl4K1iSZIm4lTaoNKrwQdKVWiRUl01uBcSVrcR6ozn7eQaKm6ZP +2SL6RE4288kPpjnngLJev7050UblVUfbvG4= +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_47[] = { + 0x30, 0x82, 0x05, 0x86, 0x30, 0x82, 0x04, 0x6e, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0x9a, 0xa9, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, + 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, + 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, + 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, + 0x31, 0x32, 0x31, 0x39, 0x32, 0x30, 0x30, 0x37, 0x33, 0x32, 0x5a, 0x17, + 0x0d, 0x31, 0x37, 0x31, 0x32, 0x31, 0x39, 0x32, 0x30, 0x30, 0x36, 0x35, + 0x35, 0x5a, 0x30, 0x81, 0x8b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, + 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, + 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, + 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, + 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x0c, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, + 0x74, 0x20, 0x49, 0x54, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, + 0x20, 0x49, 0x54, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32, + 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, + 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xd1, 0xe8, 0x37, + 0xa7, 0x76, 0x8a, 0x70, 0x4b, 0x19, 0xf0, 0x20, 0x37, 0x09, 0x24, 0x37, + 0x7f, 0xea, 0xfb, 0x78, 0xe6, 0x05, 0xba, 0x6a, 0xad, 0x4e, 0x27, 0x0d, + 0xfc, 0x72, 0x6a, 0xd9, 0x6c, 0x21, 0xc4, 0x64, 0x11, 0x95, 0x73, 0x10, + 0x0a, 0x5c, 0x25, 0x7b, 0x88, 0x6c, 0x94, 0x04, 0xfd, 0xc7, 0xdb, 0xae, + 0x7b, 0xdc, 0x4a, 0x08, 0xb3, 0x3e, 0x16, 0xf1, 0xd0, 0xad, 0xdb, 0x30, + 0x6d, 0xd7, 0x1a, 0x1e, 0x52, 0xb5, 0x3d, 0xf0, 0x47, 0x19, 0x03, 0xe2, + 0x7d, 0xa6, 0xbd, 0x57, 0x13, 0x3f, 0x54, 0xea, 0x3a, 0xa3, 0xb1, 0x77, + 0xfc, 0x42, 0xf0, 0x63, 0x49, 0x6a, 0x91, 0x80, 0x2e, 0x30, 0x49, 0xc0, + 0x8a, 0xeb, 0x2b, 0xaf, 0xfe, 0x3a, 0xeb, 0x07, 0x5d, 0x06, 0xf7, 0xe9, + 0xfd, 0x84, 0x0e, 0x91, 0xbd, 0x09, 0x20, 0x29, 0xe8, 0x6e, 0x5d, 0x09, + 0xce, 0x15, 0xd3, 0xe7, 0xef, 0xdb, 0x50, 0xeb, 0x44, 0xef, 0x18, 0x57, + 0xab, 0x04, 0x1d, 0xbc, 0x31, 0xf9, 0xf7, 0x7b, 0x2a, 0x13, 0xcf, 0xd1, + 0x3d, 0x51, 0xaf, 0x1b, 0xc5, 0xb5, 0x7b, 0xe7, 0xb0, 0xfc, 0x53, 0xbb, + 0x9a, 0xe7, 0x63, 0xde, 0x41, 0x33, 0xb6, 0x47, 0x24, 0x69, 0x5d, 0xb8, + 0x46, 0xa7, 0xff, 0xad, 0xab, 0xdf, 0x4f, 0x7a, 0x78, 0x25, 0x27, 0x21, + 0x26, 0x34, 0xca, 0x02, 0x6e, 0x37, 0x51, 0xf0, 0xed, 0x58, 0x1a, 0x60, + 0x94, 0xf6, 0xc4, 0x93, 0xd8, 0xdd, 0x30, 0x24, 0x25, 0xd7, 0x1c, 0xeb, + 0x19, 0x94, 0x35, 0x5d, 0x93, 0xb2, 0xae, 0xaa, 0x29, 0x83, 0x73, 0xc4, + 0x74, 0x59, 0x05, 0x52, 0x67, 0x9d, 0xda, 0x67, 0x51, 0x39, 0x05, 0x3a, + 0x36, 0xea, 0xf2, 0x1e, 0x76, 0x2b, 0x14, 0xae, 0xec, 0x3d, 0xf9, 0x14, + 0x99, 0x8b, 0x07, 0x6e, 0xbc, 0xe7, 0x0c, 0x56, 0xde, 0xac, 0xbe, 0xae, + 0xdb, 0x75, 0x32, 0x90, 0x9e, 0x63, 0xbd, 0x74, 0xbf, 0xe0, 0x0a, 0xca, + 0xf8, 0x34, 0x96, 0x67, 0x84, 0xcd, 0xd1, 0x42, 0x38, 0x78, 0xc7, 0x99, + 0xb6, 0x0c, 0xce, 0xb6, 0x0f, 0xe9, 0x1b, 0xcb, 0xf4, 0x59, 0xbe, 0x11, + 0x0e, 0xcb, 0x2c, 0x32, 0xc8, 0xfa, 0x83, 0x29, 0x64, 0x79, 0x3c, 0x8b, + 0x4b, 0xf0, 0x32, 0x74, 0x6c, 0xf3, 0x93, 0xb8, 0x96, 0x6b, 0x5d, 0x57, + 0x5a, 0x68, 0xc1, 0xcc, 0x0c, 0x79, 0x8a, 0x19, 0xde, 0xf5, 0x49, 0x02, + 0x5e, 0x08, 0x80, 0x01, 0x89, 0x0c, 0x32, 0xcd, 0xd2, 0xd6, 0x96, 0xd5, + 0x4b, 0xa0, 0xf3, 0xec, 0xbf, 0xab, 0xf4, 0x7d, 0xb3, 0xa1, 0xb9, 0x7c, + 0xda, 0x4e, 0xd7, 0xe5, 0xb7, 0xac, 0xb9, 0xf2, 0x25, 0x5f, 0x01, 0xcb, + 0x8c, 0x96, 0xa8, 0x28, 0xae, 0xc1, 0x33, 0x5a, 0xf6, 0x3f, 0x08, 0x90, + 0xdc, 0xeb, 0xff, 0x39, 0xd8, 0x26, 0xc8, 0x12, 0x9d, 0x1c, 0x9a, 0xaa, + 0xa9, 0xc0, 0x16, 0x8e, 0x86, 0xed, 0x67, 0x52, 0x96, 0x00, 0x7f, 0x0d, + 0x92, 0x3d, 0x3d, 0xd9, 0x70, 0x36, 0xe5, 0xea, 0x42, 0x6f, 0x1f, 0xae, + 0x95, 0xe5, 0x5b, 0x5d, 0xf8, 0xd0, 0x3a, 0xc7, 0xd4, 0xde, 0x77, 0x86, + 0xd0, 0xfc, 0x9e, 0x4e, 0xe2, 0xe2, 0xb8, 0xa9, 0x68, 0x37, 0x09, 0xc4, + 0x39, 0xe3, 0x85, 0xb8, 0x89, 0xf3, 0x1f, 0x6e, 0xb7, 0x6d, 0x1f, 0x4a, + 0x2f, 0x18, 0x09, 0x6f, 0xde, 0x4a, 0x01, 0x8f, 0x14, 0xc9, 0xb7, 0xa6, + 0xee, 0xa7, 0x63, 0x9f, 0x33, 0xa4, 0x54, 0x7c, 0x42, 0x83, 0x68, 0xb8, + 0xa5, 0xdf, 0xbf, 0xec, 0xb9, 0x1a, 0x5d, 0x13, 0x3b, 0xd9, 0xad, 0x68, + 0xfd, 0x20, 0x0a, 0x55, 0x91, 0x21, 0x64, 0xf9, 0xd7, 0x13, 0x01, 0xa0, + 0x08, 0x5d, 0x59, 0x89, 0x1b, 0x44, 0xaf, 0xa4, 0xac, 0xc7, 0x05, 0x10, + 0xfa, 0x41, 0x4a, 0xa8, 0xfb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x01, 0x20, 0x30, 0x82, 0x01, 0x1c, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x53, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x4c, 0x30, + 0x4a, 0x30, 0x48, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e, + 0x01, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x63, 0x66, 0x6d, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, + 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x03, 0x02, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0xe5, 0x9d, 0x59, 0x30, 0x82, 0x47, 0x58, 0xcc, 0xac, + 0xfa, 0x08, 0x54, 0x36, 0x86, 0x7b, 0x3a, 0xb5, 0x04, 0x4d, 0xf0, 0x30, + 0x42, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37, + 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x63, 0x64, 0x70, 0x31, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x2d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, + 0x52, 0x4c, 0x2f, 0x4f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x32, + 0x30, 0x32, 0x35, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x51, 0xaf, 0x24, 0x26, 0x9c, 0xf4, + 0x68, 0x22, 0x57, 0x80, 0x26, 0x2b, 0x3b, 0x46, 0x62, 0x15, 0x7b, 0x1e, + 0xcc, 0xa5, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x76, 0x85, + 0xc5, 0x23, 0x31, 0x1f, 0xb4, 0x73, 0xea, 0xa0, 0xbc, 0xa5, 0xed, 0xdf, + 0x45, 0x43, 0x6a, 0x7f, 0x69, 0x20, 0x1b, 0x80, 0xb2, 0xfb, 0x1c, 0xdd, + 0xaa, 0x7f, 0x88, 0xd3, 0x31, 0x41, 0x36, 0xf7, 0xfb, 0xfb, 0x6b, 0xad, + 0x98, 0x8c, 0x78, 0x1f, 0x9d, 0x11, 0x67, 0x3a, 0xcd, 0x4b, 0xec, 0xa8, + 0xbc, 0x9d, 0x15, 0x19, 0xc4, 0x3b, 0x0b, 0xa7, 0x93, 0xce, 0xe8, 0xfc, + 0x9d, 0x5b, 0xe8, 0x1f, 0xcb, 0x56, 0xae, 0x76, 0x43, 0x2b, 0xc7, 0x13, + 0x51, 0x77, 0x41, 0xa8, 0x66, 0x4c, 0x5f, 0xa7, 0xd1, 0xd7, 0xaa, 0x75, + 0xc5, 0x1b, 0x29, 0x4c, 0xc9, 0xf4, 0x6d, 0xa1, 0x5e, 0xa1, 0x85, 0x93, + 0x16, 0xc2, 0xcb, 0x3b, 0xab, 0x14, 0x7d, 0x44, 0xfd, 0xda, 0x25, 0x29, + 0x86, 0x2a, 0xfe, 0x63, 0x20, 0xca, 0xd2, 0x0b, 0xc2, 0x34, 0x15, 0xbb, + 0xaf, 0x5b, 0x7f, 0x8a, 0xe0, 0xaa, 0xed, 0x45, 0xa6, 0xea, 0x79, 0xdb, + 0xd8, 0x35, 0x66, 0x54, 0x43, 0xde, 0x37, 0x33, 0xd1, 0xe4, 0xe0, 0xcd, + 0x57, 0xca, 0x71, 0xb0, 0x7d, 0xe9, 0x16, 0x77, 0x64, 0xe8, 0x59, 0x97, + 0xb9, 0xd5, 0x2e, 0xd1, 0xb4, 0x91, 0xda, 0x77, 0x71, 0xf3, 0x4a, 0x0f, + 0x48, 0xd2, 0x34, 0x99, 0x60, 0x95, 0x37, 0xac, 0x1f, 0x01, 0xcd, 0x10, + 0x9d, 0xe8, 0x2a, 0xa5, 0x20, 0xc7, 0x50, 0x9b, 0xb3, 0x6c, 0x49, 0x78, + 0x2b, 0x58, 0x92, 0x64, 0x89, 0xb8, 0x95, 0x36, 0xa8, 0x34, 0xaa, 0xf0, + 0x41, 0xd2, 0x95, 0x5a, 0x24, 0x54, 0x97, 0x4d, 0x6e, 0x05, 0xc4, 0x95, + 0xad, 0xc4, 0x7a, 0xa3, 0x39, 0xfb, 0x79, 0x06, 0x8a, 0x9b, 0xa6, 0x4f, + 0xd9, 0x22, 0xfa, 0x44, 0x4e, 0x36, 0xf3, 0xc9, 0x0f, 0xa6, 0x39, 0xe7, + 0x80, 0xb2, 0x5e, 0xbf, 0xbd, 0x39, 0xd1, 0x46, 0xe5, 0x55, 0x47, 0xdb, + 0xbc, 0x6e, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 75:96:c2:3e:fa:89:59:45:6e:79:f7:17:ba:cf:64:f3 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=CN, O=WoSign CA Limited, CN=Certification Authority of WoSign + Validity + Not Before: Nov 8 00:58:58 2014 GMT + Not After : Nov 8 00:58:58 2029 GMT + Subject: C=CN, O=WoSign CA Limited, CN=WoSign Class 3 OV Server CA G2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:d6:74:87:af:99:c0:57:96:99:c2:89:74:3c:92: + 55:99:bf:1f:07:00:35:05:26:96:16:5b:03:c1:42: + 37:33:be:3f:0d:4f:ff:bb:94:26:91:d7:14:16:78: + 1b:f7:13:a2:4b:4c:e5:5c:a7:10:40:35:59:30:d1: + 77:99:e3:9d:29:c2:be:31:95:bd:92:61:5b:b0:23: + fb:67:58:d5:52:e4:7b:2f:f0:73:1c:73:94:55:ba: + c8:68:59:02:10:10:e4:f7:11:f0:c3:b6:d7:ae:56: + 80:00:9e:65:64:a6:83:91:41:e6:ed:a7:7a:65:a5: + 1f:30:2e:13:3c:bf:df:63:97:f3:96:f0:52:32:b4: + f4:7b:98:57:ed:36:4f:f7:21:4a:28:9d:dd:1c:92: + b3:4d:8d:9c:58:8b:17:21:d8:dc:a1:b7:ae:73:78: + 8a:c4:b6:e9:7f:28:8e:9a:d5:2e:9e:39:e9:da:59: + 74:e3:c8:97:10:32:94:19:59:d4:0f:89:57:44:e6: + e5:2b:17:30:62:52:98:7f:ab:0d:a5:01:ea:04:41: + ca:fa:13:0e:3b:87:06:ba:bd:47:31:d7:63:03:01: + f4:be:a1:37:11:9f:1e:01:95:4e:0f:3f:54:1e:92: + a6:9f:30:8c:fe:98:e8:56:96:66:04:e1:35:fe:59: + ac:57 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Extended Key Usage: + TLS Web Client Authentication, TLS Web Server Authentication + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crls1.wosign.com/ca1.crl + + Authority Information Access: + OCSP - URI:http://ocsp1.wosign.com/ca1 + CA Issuers - URI:http://aia1.wosign.com/ca1g2-server3.cer + + X509v3 Subject Key Identifier: + F9:8B:EC:04:38:6A:3F:AA:06:C6:94:AD:73:95:2A:B0:C8:E6:B8:FB + X509v3 Authority Key Identifier: + keyid:E1:66:CF:0E:D1:F1:B3:4B:B7:06:20:14:FE:87:12:D5:F6:FE:FB:3E + + X509v3 Certificate Policies: + Policy: 1.3.6.1.4.1.36305.6.3.2.1 + CPS: http://www.wosign.com/policy/ + + Signature Algorithm: sha256WithRSAEncryption + 5e:67:ba:78:32:05:b6:b7:af:e7:de:6a:7a:82:64:0e:a0:0b: + f2:9e:9a:ba:c6:2b:6f:56:3a:b4:62:57:ab:7c:ad:60:50:96: + 34:9c:a3:88:cf:d9:8f:50:af:f6:f0:00:36:1b:1f:1f:87:55: + 3c:60:9a:f0:b0:0d:9a:80:2d:8a:3b:be:05:b3:d7:a0:80:b6: + b8:19:eb:51:db:ec:64:54:f1:1a:89:4a:48:a1:4d:3f:31:7d: + c4:79:94:4b:f1:de:ab:83:af:5f:86:be:96:1c:b3:3e:1c:e7: + bc:96:b2:e8:5a:ac:b5:58:cb:3c:56:6f:0a:a7:a5:d0:36:89: + 82:26:8c:b9:1f:b6:eb:8f:7e:78:fc:5b:8b:79:1c:d6:df:47: + a7:56:f4:98:4e:c7:a9:d5:0e:75:56:06:7f:b4:37:46:08:c6: + e9:4f:8b:5b:43:1c:e0:45:3e:95:20:71:c0:1c:98:16:ef:f2: + 78:df:ac:4d:bb:bf:56:0e:cf:85:af:cf:bf:04:ed:72:6b:fd: + 1f:57:0e:58:91:44:11:58:3b:62:3b:09:78:b3:a4:75:6a:ec: + b3:c2:2b:32:cc:b3:8d:c3:a3:6e:dc:8a:d5:e8:4a:c4:0b:7b: + db:30:5d:95:33:c3:d1:a3:69:64:5b:a8:aa:96:48:73:73:e3: + c9:b9:24:df:17:75:aa:af:07:3a:cf:be:9b:8a:80:a7:bf:7c: + e2:e9:2a:e6:fd:b0:2c:e7:e6:e6:7e:b3:35:15:65:00:f4:e1: + 39:73:0e:28:4b:f0:0c:98:9e:3a:eb:ce:7b:7a:9e:40:c1:50: + 65:96:9a:e7:4b:77:cd:dd:cb:7d:97:b4:ea:09:b2:e9:49:28: + c3:30:e0:87:15:f0:26:ea:d8:03:fd:ec:da:08:83:65:dc:77: + c5:6e:3d:34:f7:87:c3:1c:1d:26:33:ec:33:ac:c6:99:53:ab: + 60:f4:b0:d9:ee:64:5a:33:07:70:13:74:88:07:f5:86:f9:18: + d3:b2:47:c8:ae:03:4a:53:de:1c:65:d6:0a:2e:3a:51:93:ee: + b7:e3:6f:0a:fb:e9:fe:4e:e8:bb:1d:c2:97:ab:0a:b9:ed:36: + 32:1b:4d:a1:cc:03:a6:9d:b3:d9:1c:d5:67:e2:8f:74:3c:92: + 2a:74:b1:56:50:df:53:15:d7:21:d6:eb:f3:fb:63:e3:20:2c: + 0a:74:37:0b:c1:a1:35:6a:84:70:f4:45:f8:b2:b6:81:49:aa: + fd:54:45:90:4d:e7:04:07:5f:78:14:dd:3a:bb:2b:f9:72:50: + ec:68:ea:3c:a8:d1:80:bb:be:35:43:97:c3:32:b2:f5:aa:ad: + c9:7f:83:9f:7d:69:1e:15 +-----BEGIN CERTIFICATE----- +MIIFozCCA4ugAwIBAgIQdZbCPvqJWUVuefcXus9k8zANBgkqhkiG9w0BAQsFADBV +MQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxKjAoBgNV +BAMTIUNlcnRpZmljYXRpb24gQXV0aG9yaXR5IG9mIFdvU2lnbjAeFw0xNDExMDgw +MDU4NThaFw0yOTExMDgwMDU4NThaMFIxCzAJBgNVBAYTAkNOMRowGAYDVQQKExFX +b1NpZ24gQ0EgTGltaXRlZDEnMCUGA1UEAxMeV29TaWduIENsYXNzIDMgT1YgU2Vy +dmVyIENBIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1nSHr5nA +V5aZwol0PJJVmb8fBwA1BSaWFlsDwUI3M74/DU//u5QmkdcUFngb9xOiS0zlXKcQ +QDVZMNF3meOdKcK+MZW9kmFbsCP7Z1jVUuR7L/BzHHOUVbrIaFkCEBDk9xHww7bX +rlaAAJ5lZKaDkUHm7ad6ZaUfMC4TPL/fY5fzlvBSMrT0e5hX7TZP9yFKKJ3dHJKz +TY2cWIsXIdjcobeuc3iKxLbpfyiOmtUunjnp2ll048iXEDKUGVnUD4lXROblKxcw +YlKYf6sNpQHqBEHK+hMOO4cGur1HMddjAwH0vqE3EZ8eAZVODz9UHpKmnzCM/pjo +VpZmBOE1/lmsVwIDAQABo4IBcDCCAWwwDgYDVR0PAQH/BAQDAgEGMB0GA1UdJQQW +MBQGCCsGAQUFBwMCBggrBgEFBQcDATASBgNVHRMBAf8ECDAGAQH/AgEAMDAGA1Ud +HwQpMCcwJaAjoCGGH2h0dHA6Ly9jcmxzMS53b3NpZ24uY29tL2NhMS5jcmwwbQYI +KwYBBQUHAQEEYTBfMCcGCCsGAQUFBzABhhtodHRwOi8vb2NzcDEud29zaWduLmNv +bS9jYTEwNAYIKwYBBQUHMAKGKGh0dHA6Ly9haWExLndvc2lnbi5jb20vY2ExZzIt +c2VydmVyMy5jZXIwHQYDVR0OBBYEFPmL7AQ4aj+qBsaUrXOVKrDI5rj7MB8GA1Ud +IwQYMBaAFOFmzw7R8bNLtwYgFP6HEtX2/vs+MEYGA1UdIAQ/MD0wOwYMKwYBBAGC +m1EGAwIBMCswKQYIKwYBBQUHAgEWHWh0dHA6Ly93d3cud29zaWduLmNvbS9wb2xp +Y3kvMA0GCSqGSIb3DQEBCwUAA4ICAQBeZ7p4MgW2t6/n3mp6gmQOoAvynpq6xitv +Vjq0YlerfK1gUJY0nKOIz9mPUK/28AA2Gx8fh1U8YJrwsA2agC2KO74Fs9eggLa4 +GetR2+xkVPEaiUpIoU0/MX3EeZRL8d6rg69fhr6WHLM+HOe8lrLoWqy1WMs8Vm8K +p6XQNomCJoy5H7brj354/FuLeRzW30enVvSYTsep1Q51VgZ/tDdGCMbpT4tbQxzg +RT6VIHHAHJgW7/J436xNu79WDs+Fr8+/BO1ya/0fVw5YkUQRWDtiOwl4s6R1auyz +wisyzLONw6Nu3IrV6ErEC3vbMF2VM8PRo2lkW6iqlkhzc+PJuSTfF3Wqrwc6z76b +ioCnv3zi6Srm/bAs5+bmfrM1FWUA9OE5cw4oS/AMmJ466857ep5AwVBllprnS3fN +3ct9l7TqCbLpSSjDMOCHFfAm6tgD/ezaCINl3HfFbj0094fDHB0mM+wzrMaZU6tg +9LDZ7mRaMwdwE3SIB/WG+RjTskfIrgNKU94cZdYKLjpRk+63428K++n+Tui7HcKX +qwq57TYyG02hzAOmnbPZHNVn4o90PJIqdLFWUN9TFdch1uvz+2PjICwKdDcLwaE1 +aoRw9EX4sraBSar9VEWQTecEB194FN06uyv5clDsaOo8qNGAu741Q5fDMrL1qq3J +f4OffWkeFQ== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_48[] = { + 0x30, 0x82, 0x05, 0xa3, 0x30, 0x82, 0x03, 0x8b, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x75, 0x96, 0xc2, 0x3e, 0xfa, 0x89, 0x59, 0x45, 0x6e, + 0x79, 0xf7, 0x17, 0xba, 0xcf, 0x64, 0xf3, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x55, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, + 0x4e, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, + 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x2a, 0x30, 0x28, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x21, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x57, 0x6f, 0x53, 0x69, 0x67, + 0x6e, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x31, 0x31, 0x30, 0x38, 0x30, + 0x30, 0x35, 0x38, 0x35, 0x38, 0x5a, 0x17, 0x0d, 0x32, 0x39, 0x31, 0x31, + 0x30, 0x38, 0x30, 0x30, 0x35, 0x38, 0x35, 0x38, 0x5a, 0x30, 0x52, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x4e, + 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x57, + 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x65, 0x64, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x1e, 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x4f, 0x56, 0x20, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, + 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xd6, 0x74, 0x87, 0xaf, 0x99, 0xc0, + 0x57, 0x96, 0x99, 0xc2, 0x89, 0x74, 0x3c, 0x92, 0x55, 0x99, 0xbf, 0x1f, + 0x07, 0x00, 0x35, 0x05, 0x26, 0x96, 0x16, 0x5b, 0x03, 0xc1, 0x42, 0x37, + 0x33, 0xbe, 0x3f, 0x0d, 0x4f, 0xff, 0xbb, 0x94, 0x26, 0x91, 0xd7, 0x14, + 0x16, 0x78, 0x1b, 0xf7, 0x13, 0xa2, 0x4b, 0x4c, 0xe5, 0x5c, 0xa7, 0x10, + 0x40, 0x35, 0x59, 0x30, 0xd1, 0x77, 0x99, 0xe3, 0x9d, 0x29, 0xc2, 0xbe, + 0x31, 0x95, 0xbd, 0x92, 0x61, 0x5b, 0xb0, 0x23, 0xfb, 0x67, 0x58, 0xd5, + 0x52, 0xe4, 0x7b, 0x2f, 0xf0, 0x73, 0x1c, 0x73, 0x94, 0x55, 0xba, 0xc8, + 0x68, 0x59, 0x02, 0x10, 0x10, 0xe4, 0xf7, 0x11, 0xf0, 0xc3, 0xb6, 0xd7, + 0xae, 0x56, 0x80, 0x00, 0x9e, 0x65, 0x64, 0xa6, 0x83, 0x91, 0x41, 0xe6, + 0xed, 0xa7, 0x7a, 0x65, 0xa5, 0x1f, 0x30, 0x2e, 0x13, 0x3c, 0xbf, 0xdf, + 0x63, 0x97, 0xf3, 0x96, 0xf0, 0x52, 0x32, 0xb4, 0xf4, 0x7b, 0x98, 0x57, + 0xed, 0x36, 0x4f, 0xf7, 0x21, 0x4a, 0x28, 0x9d, 0xdd, 0x1c, 0x92, 0xb3, + 0x4d, 0x8d, 0x9c, 0x58, 0x8b, 0x17, 0x21, 0xd8, 0xdc, 0xa1, 0xb7, 0xae, + 0x73, 0x78, 0x8a, 0xc4, 0xb6, 0xe9, 0x7f, 0x28, 0x8e, 0x9a, 0xd5, 0x2e, + 0x9e, 0x39, 0xe9, 0xda, 0x59, 0x74, 0xe3, 0xc8, 0x97, 0x10, 0x32, 0x94, + 0x19, 0x59, 0xd4, 0x0f, 0x89, 0x57, 0x44, 0xe6, 0xe5, 0x2b, 0x17, 0x30, + 0x62, 0x52, 0x98, 0x7f, 0xab, 0x0d, 0xa5, 0x01, 0xea, 0x04, 0x41, 0xca, + 0xfa, 0x13, 0x0e, 0x3b, 0x87, 0x06, 0xba, 0xbd, 0x47, 0x31, 0xd7, 0x63, + 0x03, 0x01, 0xf4, 0xbe, 0xa1, 0x37, 0x11, 0x9f, 0x1e, 0x01, 0x95, 0x4e, + 0x0f, 0x3f, 0x54, 0x1e, 0x92, 0xa6, 0x9f, 0x30, 0x8c, 0xfe, 0x98, 0xe8, + 0x56, 0x96, 0x66, 0x04, 0xe1, 0x35, 0xfe, 0x59, 0xac, 0x57, 0x02, 0x03, + 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x70, 0x30, 0x82, 0x01, 0x6c, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, + 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x30, 0x12, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, + 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d, + 0x1f, 0x04, 0x29, 0x30, 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, 0x86, + 0x1f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x73, + 0x31, 0x2e, 0x77, 0x6f, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x63, 0x61, 0x31, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x6d, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x61, 0x30, 0x5f, + 0x30, 0x27, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, + 0x86, 0x1b, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, + 0x70, 0x31, 0x2e, 0x77, 0x6f, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x63, 0x61, 0x31, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x61, 0x69, 0x61, 0x31, 0x2e, 0x77, 0x6f, 0x73, 0x69, 0x67, + 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x61, 0x31, 0x67, 0x32, 0x2d, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x33, 0x2e, 0x63, 0x65, 0x72, 0x30, + 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xf9, 0x8b, + 0xec, 0x04, 0x38, 0x6a, 0x3f, 0xaa, 0x06, 0xc6, 0x94, 0xad, 0x73, 0x95, + 0x2a, 0xb0, 0xc8, 0xe6, 0xb8, 0xfb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe1, 0x66, 0xcf, 0x0e, 0xd1, + 0xf1, 0xb3, 0x4b, 0xb7, 0x06, 0x20, 0x14, 0xfe, 0x87, 0x12, 0xd5, 0xf6, + 0xfe, 0xfb, 0x3e, 0x30, 0x46, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3f, + 0x30, 0x3d, 0x30, 0x3b, 0x06, 0x0c, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, + 0x9b, 0x51, 0x06, 0x03, 0x02, 0x01, 0x30, 0x2b, 0x30, 0x29, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1d, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x6f, 0x73, + 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x5e, + 0x67, 0xba, 0x78, 0x32, 0x05, 0xb6, 0xb7, 0xaf, 0xe7, 0xde, 0x6a, 0x7a, + 0x82, 0x64, 0x0e, 0xa0, 0x0b, 0xf2, 0x9e, 0x9a, 0xba, 0xc6, 0x2b, 0x6f, + 0x56, 0x3a, 0xb4, 0x62, 0x57, 0xab, 0x7c, 0xad, 0x60, 0x50, 0x96, 0x34, + 0x9c, 0xa3, 0x88, 0xcf, 0xd9, 0x8f, 0x50, 0xaf, 0xf6, 0xf0, 0x00, 0x36, + 0x1b, 0x1f, 0x1f, 0x87, 0x55, 0x3c, 0x60, 0x9a, 0xf0, 0xb0, 0x0d, 0x9a, + 0x80, 0x2d, 0x8a, 0x3b, 0xbe, 0x05, 0xb3, 0xd7, 0xa0, 0x80, 0xb6, 0xb8, + 0x19, 0xeb, 0x51, 0xdb, 0xec, 0x64, 0x54, 0xf1, 0x1a, 0x89, 0x4a, 0x48, + 0xa1, 0x4d, 0x3f, 0x31, 0x7d, 0xc4, 0x79, 0x94, 0x4b, 0xf1, 0xde, 0xab, + 0x83, 0xaf, 0x5f, 0x86, 0xbe, 0x96, 0x1c, 0xb3, 0x3e, 0x1c, 0xe7, 0xbc, + 0x96, 0xb2, 0xe8, 0x5a, 0xac, 0xb5, 0x58, 0xcb, 0x3c, 0x56, 0x6f, 0x0a, + 0xa7, 0xa5, 0xd0, 0x36, 0x89, 0x82, 0x26, 0x8c, 0xb9, 0x1f, 0xb6, 0xeb, + 0x8f, 0x7e, 0x78, 0xfc, 0x5b, 0x8b, 0x79, 0x1c, 0xd6, 0xdf, 0x47, 0xa7, + 0x56, 0xf4, 0x98, 0x4e, 0xc7, 0xa9, 0xd5, 0x0e, 0x75, 0x56, 0x06, 0x7f, + 0xb4, 0x37, 0x46, 0x08, 0xc6, 0xe9, 0x4f, 0x8b, 0x5b, 0x43, 0x1c, 0xe0, + 0x45, 0x3e, 0x95, 0x20, 0x71, 0xc0, 0x1c, 0x98, 0x16, 0xef, 0xf2, 0x78, + 0xdf, 0xac, 0x4d, 0xbb, 0xbf, 0x56, 0x0e, 0xcf, 0x85, 0xaf, 0xcf, 0xbf, + 0x04, 0xed, 0x72, 0x6b, 0xfd, 0x1f, 0x57, 0x0e, 0x58, 0x91, 0x44, 0x11, + 0x58, 0x3b, 0x62, 0x3b, 0x09, 0x78, 0xb3, 0xa4, 0x75, 0x6a, 0xec, 0xb3, + 0xc2, 0x2b, 0x32, 0xcc, 0xb3, 0x8d, 0xc3, 0xa3, 0x6e, 0xdc, 0x8a, 0xd5, + 0xe8, 0x4a, 0xc4, 0x0b, 0x7b, 0xdb, 0x30, 0x5d, 0x95, 0x33, 0xc3, 0xd1, + 0xa3, 0x69, 0x64, 0x5b, 0xa8, 0xaa, 0x96, 0x48, 0x73, 0x73, 0xe3, 0xc9, + 0xb9, 0x24, 0xdf, 0x17, 0x75, 0xaa, 0xaf, 0x07, 0x3a, 0xcf, 0xbe, 0x9b, + 0x8a, 0x80, 0xa7, 0xbf, 0x7c, 0xe2, 0xe9, 0x2a, 0xe6, 0xfd, 0xb0, 0x2c, + 0xe7, 0xe6, 0xe6, 0x7e, 0xb3, 0x35, 0x15, 0x65, 0x00, 0xf4, 0xe1, 0x39, + 0x73, 0x0e, 0x28, 0x4b, 0xf0, 0x0c, 0x98, 0x9e, 0x3a, 0xeb, 0xce, 0x7b, + 0x7a, 0x9e, 0x40, 0xc1, 0x50, 0x65, 0x96, 0x9a, 0xe7, 0x4b, 0x77, 0xcd, + 0xdd, 0xcb, 0x7d, 0x97, 0xb4, 0xea, 0x09, 0xb2, 0xe9, 0x49, 0x28, 0xc3, + 0x30, 0xe0, 0x87, 0x15, 0xf0, 0x26, 0xea, 0xd8, 0x03, 0xfd, 0xec, 0xda, + 0x08, 0x83, 0x65, 0xdc, 0x77, 0xc5, 0x6e, 0x3d, 0x34, 0xf7, 0x87, 0xc3, + 0x1c, 0x1d, 0x26, 0x33, 0xec, 0x33, 0xac, 0xc6, 0x99, 0x53, 0xab, 0x60, + 0xf4, 0xb0, 0xd9, 0xee, 0x64, 0x5a, 0x33, 0x07, 0x70, 0x13, 0x74, 0x88, + 0x07, 0xf5, 0x86, 0xf9, 0x18, 0xd3, 0xb2, 0x47, 0xc8, 0xae, 0x03, 0x4a, + 0x53, 0xde, 0x1c, 0x65, 0xd6, 0x0a, 0x2e, 0x3a, 0x51, 0x93, 0xee, 0xb7, + 0xe3, 0x6f, 0x0a, 0xfb, 0xe9, 0xfe, 0x4e, 0xe8, 0xbb, 0x1d, 0xc2, 0x97, + 0xab, 0x0a, 0xb9, 0xed, 0x36, 0x32, 0x1b, 0x4d, 0xa1, 0xcc, 0x03, 0xa6, + 0x9d, 0xb3, 0xd9, 0x1c, 0xd5, 0x67, 0xe2, 0x8f, 0x74, 0x3c, 0x92, 0x2a, + 0x74, 0xb1, 0x56, 0x50, 0xdf, 0x53, 0x15, 0xd7, 0x21, 0xd6, 0xeb, 0xf3, + 0xfb, 0x63, 0xe3, 0x20, 0x2c, 0x0a, 0x74, 0x37, 0x0b, 0xc1, 0xa1, 0x35, + 0x6a, 0x84, 0x70, 0xf4, 0x45, 0xf8, 0xb2, 0xb6, 0x81, 0x49, 0xaa, 0xfd, + 0x54, 0x45, 0x90, 0x4d, 0xe7, 0x04, 0x07, 0x5f, 0x78, 0x14, 0xdd, 0x3a, + 0xbb, 0x2b, 0xf9, 0x72, 0x50, 0xec, 0x68, 0xea, 0x3c, 0xa8, 0xd1, 0x80, + 0xbb, 0xbe, 0x35, 0x43, 0x97, 0xc3, 0x32, 0xb2, 0xf5, 0xaa, 0xad, 0xc9, + 0x7f, 0x83, 0x9f, 0x7d, 0x69, 0x1e, 0x15, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 120040007 (0x727aa47) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=IE, O=Baltimore, OU=CyberTrust, CN=Baltimore CyberTrust Root + Validity + Not Before: May 7 17:04:09 2014 GMT + Not After : May 7 17:03:30 2018 GMT + Subject: C=US, ST=Washington, L=Redmond, O=Microsoft Corporation, OU=Microsoft IT, CN=Microsoft IT SSL SHA2 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (4096 bit) + Modulus: + 00:d1:e8:37:a7:76:8a:70:4b:19:f0:20:37:09:24: + 37:7f:ea:fb:78:e6:05:ba:6a:ad:4e:27:0d:fc:72: + 6a:d9:6c:21:c4:64:11:95:73:10:0a:5c:25:7b:88: + 6c:94:04:fd:c7:db:ae:7b:dc:4a:08:b3:3e:16:f1: + d0:ad:db:30:6d:d7:1a:1e:52:b5:3d:f0:47:19:03: + e2:7d:a6:bd:57:13:3f:54:ea:3a:a3:b1:77:fc:42: + f0:63:49:6a:91:80:2e:30:49:c0:8a:eb:2b:af:fe: + 3a:eb:07:5d:06:f7:e9:fd:84:0e:91:bd:09:20:29: + e8:6e:5d:09:ce:15:d3:e7:ef:db:50:eb:44:ef:18: + 57:ab:04:1d:bc:31:f9:f7:7b:2a:13:cf:d1:3d:51: + af:1b:c5:b5:7b:e7:b0:fc:53:bb:9a:e7:63:de:41: + 33:b6:47:24:69:5d:b8:46:a7:ff:ad:ab:df:4f:7a: + 78:25:27:21:26:34:ca:02:6e:37:51:f0:ed:58:1a: + 60:94:f6:c4:93:d8:dd:30:24:25:d7:1c:eb:19:94: + 35:5d:93:b2:ae:aa:29:83:73:c4:74:59:05:52:67: + 9d:da:67:51:39:05:3a:36:ea:f2:1e:76:2b:14:ae: + ec:3d:f9:14:99:8b:07:6e:bc:e7:0c:56:de:ac:be: + ae:db:75:32:90:9e:63:bd:74:bf:e0:0a:ca:f8:34: + 96:67:84:cd:d1:42:38:78:c7:99:b6:0c:ce:b6:0f: + e9:1b:cb:f4:59:be:11:0e:cb:2c:32:c8:fa:83:29: + 64:79:3c:8b:4b:f0:32:74:6c:f3:93:b8:96:6b:5d: + 57:5a:68:c1:cc:0c:79:8a:19:de:f5:49:02:5e:08: + 80:01:89:0c:32:cd:d2:d6:96:d5:4b:a0:f3:ec:bf: + ab:f4:7d:b3:a1:b9:7c:da:4e:d7:e5:b7:ac:b9:f2: + 25:5f:01:cb:8c:96:a8:28:ae:c1:33:5a:f6:3f:08: + 90:dc:eb:ff:39:d8:26:c8:12:9d:1c:9a:aa:a9:c0: + 16:8e:86:ed:67:52:96:00:7f:0d:92:3d:3d:d9:70: + 36:e5:ea:42:6f:1f:ae:95:e5:5b:5d:f8:d0:3a:c7: + d4:de:77:86:d0:fc:9e:4e:e2:e2:b8:a9:68:37:09: + c4:39:e3:85:b8:89:f3:1f:6e:b7:6d:1f:4a:2f:18: + 09:6f:de:4a:01:8f:14:c9:b7:a6:ee:a7:63:9f:33: + a4:54:7c:42:83:68:b8:a5:df:bf:ec:b9:1a:5d:13: + 3b:d9:ad:68:fd:20:0a:55:91:21:64:f9:d7:13:01: + a0:08:5d:59:89:1b:44:af:a4:ac:c7:05:10:fa:41: + 4a:a8:fb + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Certificate Policies: + Policy: 1.3.6.1.4.1.6334.1.0 + CPS: http://cybertrust.omniroot.com/repository.cfm + Policy: 1.3.6.1.4.1.311.42.1 + + Authority Information Access: + OCSP - URI:http://ocsp.omniroot.com/baltimoreroot + + X509v3 Key Usage: critical + Digital Signature, Certificate Sign, CRL Sign + X509v3 Extended Key Usage: + TLS Web Server Authentication, TLS Web Client Authentication, OCSP Signing + X509v3 Authority Key Identifier: + keyid:E5:9D:59:30:82:47:58:CC:AC:FA:08:54:36:86:7B:3A:B5:04:4D:F0 + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://cdp1.public-trust.com/CRL/Omniroot2025.crl + + X509v3 Subject Key Identifier: + 51:AF:24:26:9C:F4:68:22:57:80:26:2B:3B:46:62:15:7B:1E:CC:A5 + Signature Algorithm: sha256WithRSAEncryption + 69:62:f6:84:91:00:c4:6f:82:7b:24:e1:42:a2:a5:8b:82:5c: + a7:c5:44:cb:e7:52:76:63:d3:76:9e:78:e2:69:35:b1:38:ba: + b0:96:c6:1f:ac:7b:c6:b2:65:77:8b:7d:8d:ae:64:b9:a5:8c: + 17:ca:58:65:c3:ad:82:f5:c5:a2:f5:01:13:93:c6:7e:44:e5: + c4:61:fa:03:b6:56:c1:72:e1:c8:28:c5:69:21:8f:ac:6e:fd: + 7f:43:83:36:b8:c0:d6:a0:28:fe:1a:45:be:fd:93:8c:8d:a4: + 64:79:1f:14:db:a1:9f:21:dc:c0:4e:7b:17:22:17:b1:b6:3c: + d3:9b:e2:0a:a3:7e:99:b0:c1:ac:d8:f4:86:df:3c:da:7d:14: + 9c:40:c1:7c:d2:18:6f:f1:4f:26:45:09:95:94:5c:da:d0:98: + f8:f4:4c:82:96:10:de:ac:30:cb:2b:ae:f9:92:ea:bf:79:03: + fc:1e:3f:ac:09:a4:3f:65:fd:91:4f:96:24:a7:ce:b4:4e:6a: + 96:29:17:ae:c0:a8:df:17:22:f4:17:e3:dc:1c:39:06:56:10: + ea:ea:b5:74:17:3c:4e:dd:7e:91:0a:a8:0b:78:07:a7:31:44: + 08:31:ab:18:84:0f:12:9c:e7:de:84:2c:e9:6d:93:45:bf:a8: + c1:3f:34:dc +-----BEGIN CERTIFICATE----- +MIIF4TCCBMmgAwIBAgIEByeqRzANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJJ +RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD +VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTE0MDUwNzE3MDQwOVoX +DTE4MDUwNzE3MDMzMFowgYsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5n +dG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y +YXRpb24xFTATBgNVBAsTDE1pY3Jvc29mdCBJVDEeMBwGA1UEAxMVTWljcm9zb2Z0 +IElUIFNTTCBTSEEyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0eg3 +p3aKcEsZ8CA3CSQ3f+r7eOYFumqtTicN/HJq2WwhxGQRlXMQClwle4hslAT9x9uu +e9xKCLM+FvHQrdswbdcaHlK1PfBHGQPifaa9VxM/VOo6o7F3/ELwY0lqkYAuMEnA +iusrr/466wddBvfp/YQOkb0JICnobl0JzhXT5+/bUOtE7xhXqwQdvDH593sqE8/R +PVGvG8W1e+ew/FO7mudj3kEztkckaV24Rqf/ravfT3p4JSchJjTKAm43UfDtWBpg +lPbEk9jdMCQl1xzrGZQ1XZOyrqopg3PEdFkFUmed2mdROQU6NuryHnYrFK7sPfkU +mYsHbrznDFberL6u23UykJ5jvXS/4ArK+DSWZ4TN0UI4eMeZtgzOtg/pG8v0Wb4R +DsssMsj6gylkeTyLS/AydGzzk7iWa11XWmjBzAx5ihne9UkCXgiAAYkMMs3S1pbV +S6Dz7L+r9H2zobl82k7X5besufIlXwHLjJaoKK7BM1r2PwiQ3Ov/OdgmyBKdHJqq +qcAWjobtZ1KWAH8Nkj092XA25epCbx+uleVbXfjQOsfU3neG0PyeTuLiuKloNwnE +OeOFuInzH263bR9KLxgJb95KAY8Uybem7qdjnzOkVHxCg2i4pd+/7LkaXRM72a1o +/SAKVZEhZPnXEwGgCF1ZiRtEr6SsxwUQ+kFKqPsCAwEAAaOCAXswggF3MBIGA1Ud +EwEB/wQIMAYBAf8CAQAwYAYDVR0gBFkwVzBIBgkrBgEEAbE+AQAwOzA5BggrBgEF +BQcCARYtaHR0cDovL2N5YmVydHJ1c3Qub21uaXJvb3QuY29tL3JlcG9zaXRvcnku +Y2ZtMAsGCSsGAQQBgjcqATBCBggrBgEFBQcBAQQ2MDQwMgYIKwYBBQUHMAGGJmh0 +dHA6Ly9vY3NwLm9tbmlyb290LmNvbS9iYWx0aW1vcmVyb290MA4GA1UdDwEB/wQE +AwIBhjAnBgNVHSUEIDAeBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMJMB8G +A1UdIwQYMBaAFOWdWTCCR1jMrPoIVDaGezq1BE3wMEIGA1UdHwQ7MDkwN6A1oDOG +MWh0dHA6Ly9jZHAxLnB1YmxpYy10cnVzdC5jb20vQ1JML09tbmlyb290MjAyNS5j +cmwwHQYDVR0OBBYEFFGvJCac9GgiV4AmKztGYhV7HsylMA0GCSqGSIb3DQEBCwUA +A4IBAQBpYvaEkQDEb4J7JOFCoqWLglynxUTL51J2Y9N2nnjiaTWxOLqwlsYfrHvG +smV3i32NrmS5pYwXylhlw62C9cWi9QETk8Z+ROXEYfoDtlbBcuHIKMVpIY+sbv1/ +Q4M2uMDWoCj+GkW+/ZOMjaRkeR8U26GfIdzATnsXIhextjzTm+IKo36ZsMGs2PSG +3zzafRScQMF80hhv8U8mRQmVlFza0Jj49EyClhDerDDLK675kuq/eQP8Hj+sCaQ/ +Zf2RT5Ykp860TmqWKReuwKjfFyL0F+PcHDkGVhDq6rV0FzxO3X6RCqgLeAenMUQI +MasYhA8SnOfehCzpbZNFv6jBPzTc +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_49[] = { + 0x30, 0x82, 0x05, 0xe1, 0x30, 0x82, 0x04, 0xc9, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x07, 0x27, 0xaa, 0x47, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, + 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, + 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, + 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, + 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, + 0x30, 0x35, 0x30, 0x37, 0x31, 0x37, 0x30, 0x34, 0x30, 0x39, 0x5a, 0x17, + 0x0d, 0x31, 0x38, 0x30, 0x35, 0x30, 0x37, 0x31, 0x37, 0x30, 0x33, 0x33, + 0x30, 0x5a, 0x30, 0x81, 0x8b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, + 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, + 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, + 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, + 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, + 0x04, 0x0b, 0x13, 0x0c, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, + 0x74, 0x20, 0x49, 0x54, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, + 0x20, 0x49, 0x54, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32, + 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, + 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xd1, 0xe8, 0x37, + 0xa7, 0x76, 0x8a, 0x70, 0x4b, 0x19, 0xf0, 0x20, 0x37, 0x09, 0x24, 0x37, + 0x7f, 0xea, 0xfb, 0x78, 0xe6, 0x05, 0xba, 0x6a, 0xad, 0x4e, 0x27, 0x0d, + 0xfc, 0x72, 0x6a, 0xd9, 0x6c, 0x21, 0xc4, 0x64, 0x11, 0x95, 0x73, 0x10, + 0x0a, 0x5c, 0x25, 0x7b, 0x88, 0x6c, 0x94, 0x04, 0xfd, 0xc7, 0xdb, 0xae, + 0x7b, 0xdc, 0x4a, 0x08, 0xb3, 0x3e, 0x16, 0xf1, 0xd0, 0xad, 0xdb, 0x30, + 0x6d, 0xd7, 0x1a, 0x1e, 0x52, 0xb5, 0x3d, 0xf0, 0x47, 0x19, 0x03, 0xe2, + 0x7d, 0xa6, 0xbd, 0x57, 0x13, 0x3f, 0x54, 0xea, 0x3a, 0xa3, 0xb1, 0x77, + 0xfc, 0x42, 0xf0, 0x63, 0x49, 0x6a, 0x91, 0x80, 0x2e, 0x30, 0x49, 0xc0, + 0x8a, 0xeb, 0x2b, 0xaf, 0xfe, 0x3a, 0xeb, 0x07, 0x5d, 0x06, 0xf7, 0xe9, + 0xfd, 0x84, 0x0e, 0x91, 0xbd, 0x09, 0x20, 0x29, 0xe8, 0x6e, 0x5d, 0x09, + 0xce, 0x15, 0xd3, 0xe7, 0xef, 0xdb, 0x50, 0xeb, 0x44, 0xef, 0x18, 0x57, + 0xab, 0x04, 0x1d, 0xbc, 0x31, 0xf9, 0xf7, 0x7b, 0x2a, 0x13, 0xcf, 0xd1, + 0x3d, 0x51, 0xaf, 0x1b, 0xc5, 0xb5, 0x7b, 0xe7, 0xb0, 0xfc, 0x53, 0xbb, + 0x9a, 0xe7, 0x63, 0xde, 0x41, 0x33, 0xb6, 0x47, 0x24, 0x69, 0x5d, 0xb8, + 0x46, 0xa7, 0xff, 0xad, 0xab, 0xdf, 0x4f, 0x7a, 0x78, 0x25, 0x27, 0x21, + 0x26, 0x34, 0xca, 0x02, 0x6e, 0x37, 0x51, 0xf0, 0xed, 0x58, 0x1a, 0x60, + 0x94, 0xf6, 0xc4, 0x93, 0xd8, 0xdd, 0x30, 0x24, 0x25, 0xd7, 0x1c, 0xeb, + 0x19, 0x94, 0x35, 0x5d, 0x93, 0xb2, 0xae, 0xaa, 0x29, 0x83, 0x73, 0xc4, + 0x74, 0x59, 0x05, 0x52, 0x67, 0x9d, 0xda, 0x67, 0x51, 0x39, 0x05, 0x3a, + 0x36, 0xea, 0xf2, 0x1e, 0x76, 0x2b, 0x14, 0xae, 0xec, 0x3d, 0xf9, 0x14, + 0x99, 0x8b, 0x07, 0x6e, 0xbc, 0xe7, 0x0c, 0x56, 0xde, 0xac, 0xbe, 0xae, + 0xdb, 0x75, 0x32, 0x90, 0x9e, 0x63, 0xbd, 0x74, 0xbf, 0xe0, 0x0a, 0xca, + 0xf8, 0x34, 0x96, 0x67, 0x84, 0xcd, 0xd1, 0x42, 0x38, 0x78, 0xc7, 0x99, + 0xb6, 0x0c, 0xce, 0xb6, 0x0f, 0xe9, 0x1b, 0xcb, 0xf4, 0x59, 0xbe, 0x11, + 0x0e, 0xcb, 0x2c, 0x32, 0xc8, 0xfa, 0x83, 0x29, 0x64, 0x79, 0x3c, 0x8b, + 0x4b, 0xf0, 0x32, 0x74, 0x6c, 0xf3, 0x93, 0xb8, 0x96, 0x6b, 0x5d, 0x57, + 0x5a, 0x68, 0xc1, 0xcc, 0x0c, 0x79, 0x8a, 0x19, 0xde, 0xf5, 0x49, 0x02, + 0x5e, 0x08, 0x80, 0x01, 0x89, 0x0c, 0x32, 0xcd, 0xd2, 0xd6, 0x96, 0xd5, + 0x4b, 0xa0, 0xf3, 0xec, 0xbf, 0xab, 0xf4, 0x7d, 0xb3, 0xa1, 0xb9, 0x7c, + 0xda, 0x4e, 0xd7, 0xe5, 0xb7, 0xac, 0xb9, 0xf2, 0x25, 0x5f, 0x01, 0xcb, + 0x8c, 0x96, 0xa8, 0x28, 0xae, 0xc1, 0x33, 0x5a, 0xf6, 0x3f, 0x08, 0x90, + 0xdc, 0xeb, 0xff, 0x39, 0xd8, 0x26, 0xc8, 0x12, 0x9d, 0x1c, 0x9a, 0xaa, + 0xa9, 0xc0, 0x16, 0x8e, 0x86, 0xed, 0x67, 0x52, 0x96, 0x00, 0x7f, 0x0d, + 0x92, 0x3d, 0x3d, 0xd9, 0x70, 0x36, 0xe5, 0xea, 0x42, 0x6f, 0x1f, 0xae, + 0x95, 0xe5, 0x5b, 0x5d, 0xf8, 0xd0, 0x3a, 0xc7, 0xd4, 0xde, 0x77, 0x86, + 0xd0, 0xfc, 0x9e, 0x4e, 0xe2, 0xe2, 0xb8, 0xa9, 0x68, 0x37, 0x09, 0xc4, + 0x39, 0xe3, 0x85, 0xb8, 0x89, 0xf3, 0x1f, 0x6e, 0xb7, 0x6d, 0x1f, 0x4a, + 0x2f, 0x18, 0x09, 0x6f, 0xde, 0x4a, 0x01, 0x8f, 0x14, 0xc9, 0xb7, 0xa6, + 0xee, 0xa7, 0x63, 0x9f, 0x33, 0xa4, 0x54, 0x7c, 0x42, 0x83, 0x68, 0xb8, + 0xa5, 0xdf, 0xbf, 0xec, 0xb9, 0x1a, 0x5d, 0x13, 0x3b, 0xd9, 0xad, 0x68, + 0xfd, 0x20, 0x0a, 0x55, 0x91, 0x21, 0x64, 0xf9, 0xd7, 0x13, 0x01, 0xa0, + 0x08, 0x5d, 0x59, 0x89, 0x1b, 0x44, 0xaf, 0xa4, 0xac, 0xc7, 0x05, 0x10, + 0xfa, 0x41, 0x4a, 0xa8, 0xfb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, + 0x01, 0x7b, 0x30, 0x82, 0x01, 0x77, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x60, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x59, 0x30, + 0x57, 0x30, 0x48, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e, + 0x01, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x63, 0x66, 0x6d, 0x30, 0x0b, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, + 0x82, 0x37, 0x2a, 0x01, 0x30, 0x42, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x01, 0x01, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x26, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x6f, 0x6d, + 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, + 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x6f, 0x6f, 0x74, + 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, + 0x03, 0x02, 0x01, 0x86, 0x30, 0x27, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, + 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, + 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x09, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe5, 0x9d, + 0x59, 0x30, 0x82, 0x47, 0x58, 0xcc, 0xac, 0xfa, 0x08, 0x54, 0x36, 0x86, + 0x7b, 0x3a, 0xb5, 0x04, 0x4d, 0xf0, 0x30, 0x42, 0x06, 0x03, 0x55, 0x1d, + 0x1f, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, + 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x64, 0x70, 0x31, + 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x4f, 0x6d, + 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x32, 0x30, 0x32, 0x35, 0x2e, 0x63, + 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, + 0x14, 0x51, 0xaf, 0x24, 0x26, 0x9c, 0xf4, 0x68, 0x22, 0x57, 0x80, 0x26, + 0x2b, 0x3b, 0x46, 0x62, 0x15, 0x7b, 0x1e, 0xcc, 0xa5, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x01, 0x00, 0x69, 0x62, 0xf6, 0x84, 0x91, 0x00, 0xc4, + 0x6f, 0x82, 0x7b, 0x24, 0xe1, 0x42, 0xa2, 0xa5, 0x8b, 0x82, 0x5c, 0xa7, + 0xc5, 0x44, 0xcb, 0xe7, 0x52, 0x76, 0x63, 0xd3, 0x76, 0x9e, 0x78, 0xe2, + 0x69, 0x35, 0xb1, 0x38, 0xba, 0xb0, 0x96, 0xc6, 0x1f, 0xac, 0x7b, 0xc6, + 0xb2, 0x65, 0x77, 0x8b, 0x7d, 0x8d, 0xae, 0x64, 0xb9, 0xa5, 0x8c, 0x17, + 0xca, 0x58, 0x65, 0xc3, 0xad, 0x82, 0xf5, 0xc5, 0xa2, 0xf5, 0x01, 0x13, + 0x93, 0xc6, 0x7e, 0x44, 0xe5, 0xc4, 0x61, 0xfa, 0x03, 0xb6, 0x56, 0xc1, + 0x72, 0xe1, 0xc8, 0x28, 0xc5, 0x69, 0x21, 0x8f, 0xac, 0x6e, 0xfd, 0x7f, + 0x43, 0x83, 0x36, 0xb8, 0xc0, 0xd6, 0xa0, 0x28, 0xfe, 0x1a, 0x45, 0xbe, + 0xfd, 0x93, 0x8c, 0x8d, 0xa4, 0x64, 0x79, 0x1f, 0x14, 0xdb, 0xa1, 0x9f, + 0x21, 0xdc, 0xc0, 0x4e, 0x7b, 0x17, 0x22, 0x17, 0xb1, 0xb6, 0x3c, 0xd3, + 0x9b, 0xe2, 0x0a, 0xa3, 0x7e, 0x99, 0xb0, 0xc1, 0xac, 0xd8, 0xf4, 0x86, + 0xdf, 0x3c, 0xda, 0x7d, 0x14, 0x9c, 0x40, 0xc1, 0x7c, 0xd2, 0x18, 0x6f, + 0xf1, 0x4f, 0x26, 0x45, 0x09, 0x95, 0x94, 0x5c, 0xda, 0xd0, 0x98, 0xf8, + 0xf4, 0x4c, 0x82, 0x96, 0x10, 0xde, 0xac, 0x30, 0xcb, 0x2b, 0xae, 0xf9, + 0x92, 0xea, 0xbf, 0x79, 0x03, 0xfc, 0x1e, 0x3f, 0xac, 0x09, 0xa4, 0x3f, + 0x65, 0xfd, 0x91, 0x4f, 0x96, 0x24, 0xa7, 0xce, 0xb4, 0x4e, 0x6a, 0x96, + 0x29, 0x17, 0xae, 0xc0, 0xa8, 0xdf, 0x17, 0x22, 0xf4, 0x17, 0xe3, 0xdc, + 0x1c, 0x39, 0x06, 0x56, 0x10, 0xea, 0xea, 0xb5, 0x74, 0x17, 0x3c, 0x4e, + 0xdd, 0x7e, 0x91, 0x0a, 0xa8, 0x0b, 0x78, 0x07, 0xa7, 0x31, 0x44, 0x08, + 0x31, 0xab, 0x18, 0x84, 0x0f, 0x12, 0x9c, 0xe7, 0xde, 0x84, 0x2c, 0xe9, + 0x6d, 0x93, 0x45, 0xbf, 0xa8, 0xc1, 0x3f, 0x34, 0xdc, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 13:8b:fe:f3:32:94:f9:d8:16:f9:45:c2:71:95:29:98 + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=IL, O=StartCom Ltd., OU=Secure Digital Certificate Signing, CN=StartCom Certification Authority + Validity + Not Before: Dec 16 01:00:05 2015 GMT + Not After : Dec 16 01:00:05 2030 GMT + Subject: C=IL, O=StartCom Ltd., OU=StartCom Certification Authority, CN=StartCom Class 3 OV Server CA + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:af:67:1c:6f:e5:45:e0:d7:46:4b:75:2c:b6:80: + f2:9a:17:4d:2d:ff:de:ae:d2:d4:00:8a:3a:b8:31: + fe:8e:37:9e:fa:aa:d5:a3:5b:16:12:c1:19:3e:34: + 85:96:c3:be:d3:b3:43:f4:8d:6f:16:bd:30:ba:07: + fc:d8:9a:c1:79:89:80:6d:a0:8c:be:dd:37:f7:eb: + 05:d3:53:7f:57:58:76:55:b6:a8:a8:86:44:b8:bb: + d0:13:da:fd:8f:e1:f2:cd:a0:15:38:55:56:ce:26: + cf:7c:93:75:29:7a:0a:ab:fb:ba:09:38:20:11:57: + 07:5d:7f:49:9f:2a:4a:67:1e:9e:58:e9:c7:7f:f9: + c3:ed:fe:5f:4d:af:b8:4f:9d:df:69:2d:69:1b:3a: + 58:81:69:63:30:ea:87:8d:0f:52:9d:5a:da:39:44: + ba:9f:89:9f:36:b6:c2:19:5c:d9:26:78:d9:ae:5e: + fc:95:90:bf:e8:11:c0:47:0f:77:89:dd:6a:28:4f: + 0a:bc:32:64:57:43:3d:08:65:93:e5:45:ae:dd:28: + 0c:27:2c:8e:a6:2b:09:03:5d:a1:78:d2:8c:ab:b6: + 6b:b9:46:c9:19:00:39:b9:bf:c6:13:2b:73:72:1f: + f2:3e:37:b8:e8:b9:14:65:88:4d:e2:f1:1b:d8:a5: + 1d:3b + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Extended Key Usage: + TLS Web Client Authentication, TLS Web Server Authentication + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.startssl.com/sfsca.crl + + Authority Information Access: + OCSP - URI:http://ocsp.startssl.com + CA Issuers - URI:http://aia.startssl.com/certs/ca.crt + + X509v3 Subject Key Identifier: + B1:3F:1C:92:7B:92:B0:5A:25:B3:38:FB:9C:07:A4:26:50:32:E3:51 + X509v3 Authority Key Identifier: + keyid:4E:0B:EF:1A:A4:40:5B:A5:17:69:87:30:CA:34:68:43:D0:41:AE:F2 + + X509v3 Certificate Policies: + Policy: X509v3 Any Policy + CPS: http://www.startssl.com/policy + + Signature Algorithm: sha256WithRSAEncryption + 85:f2:e8:14:d3:1b:c1:a1:16:1d:a4:f4:4d:ba:51:8b:5c:52: + b1:54:54:12:16:17:9c:96:78:6f:d3:bf:df:43:36:f5:12:89: + 61:72:44:df:1c:9b:09:4f:60:26:68:c1:e6:66:50:70:b3:6a: + f1:a8:6a:0c:1e:2e:93:f1:ee:07:3e:09:dd:30:45:b2:56:8e: + dc:2c:5c:ab:49:fa:b9:04:03:40:15:7a:b5:30:e0:1d:91:8f: + a6:d6:6f:1f:99:a0:84:95:39:bd:ac:77:7f:72:4b:dd:2d:ae: + ff:a8:58:1d:46:27:d4:83:c7:69:64:9f:19:bb:10:f8:04:42: + 87:59:5d:02:b1:d6:e5:c8:da:43:30:a3:e8:37:a5:d2:48:0b: + a2:83:4e:9d:4f:83:58:9d:d7:47:22:b1:89:f0:89:3b:3d:28: + 43:2c:9b:17:7c:03:ee:9d:26:25:e0:04:b8:1d:04:57:42:47: + da:58:69:f0:d3:29:ab:12:02:99:2b:2a:d8:9d:a0:1f:54:5e: + 23:9a:0c:d2:99:58:c4:a1:e5:49:c2:25:a7:64:20:52:2e:e7: + 89:f5:19:c0:8b:d0:63:b1:78:1e:be:01:47:be:76:81:46:f1: + 99:1f:94:9a:be:fa:82:15:b5:84:84:79:75:93:ba:9f:b5:e4: + 9b:c2:cb:69:5c:bd:1f:55:0a:a7:26:30:05:51:be:65:ee:57: + a9:6a:df:bd:f9:36:2f:ad:1e:46:41:2b:b1:88:d0:88:25:85: + 40:17:79:bf:3d:8d:e2:f4:2d:ea:30:31:df:a1:40:cb:35:ff: + 82:9f:f5:99:3c:4a:fd:9d:a1:d1:55:cc:20:a8:1c:d8:20:05: + ab:b3:14:65:95:53:d8:e8:8e:57:c5:77:6b:2d:4d:88:e9:5d: + 62:d5:a2:f8:70:e1:70:eb:45:23:0e:f0:00:46:c2:48:31:e8: + e7:36:80:36:2d:22:f2:01:27:53:eb:ce:a7:69:49:82:bf:e7: + 0f:9c:f3:20:2e:f5:fa:5d:ce:ea:58:3a:8f:d8:aa:7d:30:b7: + 74:96:7c:3d:6e:b4:ec:4a:3b:59:b6:a9:50:0d:0f:05:06:70: + 26:b9:95:91:d1:5e:24:8c:8f:ca:74:57:97:90:8b:5a:b7:fe: + 8d:ad:d8:e8:c2:06:bc:08:56:21:02:12:53:c6:9f:86:04:58: + ca:2d:f8:03:0d:57:0b:1c:37:bd:f0:5a:35:f2:fe:3b:d6:a4: + 37:15:e9:f8:08:92:96:3d:74:c8:b5:5c:6e:65:08:e7:df:69: + 73:9c:ec:e3:30:5a:a6:df:5c:be:da:7f:00:ee:a5:da:2b:5c: + 1e:2a:6a:c0:a3:ae:1e:f1 +-----BEGIN CERTIFICATE----- +MIIF5TCCA82gAwIBAgIQE4v+8zKU+dgW+UXCcZUpmDANBgkqhkiG9w0BAQsFADB9 +MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi +U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh +cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTUxMjE2MDEwMDA1WhcN +MzAxMjE2MDEwMDA1WjB4MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20g +THRkLjEpMCcGA1UECxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkx +JjAkBgNVBAMTHVN0YXJ0Q29tIENsYXNzIDMgT1YgU2VydmVyIENBMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr2ccb+VF4NdGS3UstoDymhdNLf/ertLU +AIo6uDH+jjee+qrVo1sWEsEZPjSFlsO+07ND9I1vFr0wugf82JrBeYmAbaCMvt03 +9+sF01N/V1h2VbaoqIZEuLvQE9r9j+HyzaAVOFVWzibPfJN1KXoKq/u6CTggEVcH +XX9JnypKZx6eWOnHf/nD7f5fTa+4T53faS1pGzpYgWljMOqHjQ9SnVraOUS6n4mf +NrbCGVzZJnjZrl78lZC/6BHARw93id1qKE8KvDJkV0M9CGWT5UWu3SgMJyyOpisJ +A12heNKMq7ZruUbJGQA5ub/GEytzch/yPje46LkUZYhN4vEb2KUdOwIDAQABo4IB +ZDCCAWAwDgYDVR0PAQH/BAQDAgEGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF +BQcDATASBgNVHRMBAf8ECDAGAQH/AgEAMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6 +Ly9jcmwuc3RhcnRzc2wuY29tL3Nmc2NhLmNybDBmBggrBgEFBQcBAQRaMFgwJAYI +KwYBBQUHMAGGGGh0dHA6Ly9vY3NwLnN0YXJ0c3NsLmNvbTAwBggrBgEFBQcwAoYk +aHR0cDovL2FpYS5zdGFydHNzbC5jb20vY2VydHMvY2EuY3J0MB0GA1UdDgQWBBSx +PxySe5KwWiWzOPucB6QmUDLjUTAfBgNVHSMEGDAWgBROC+8apEBbpRdphzDKNGhD +0EGu8jA/BgNVHSAEODA2MDQGBFUdIAAwLDAqBggrBgEFBQcCARYeaHR0cDovL3d3 +dy5zdGFydHNzbC5jb20vcG9saWN5MA0GCSqGSIb3DQEBCwUAA4ICAQCF8ugU0xvB +oRYdpPRNulGLXFKxVFQSFheclnhv07/fQzb1EolhckTfHJsJT2AmaMHmZlBws2rx +qGoMHi6T8e4HPgndMEWyVo7cLFyrSfq5BANAFXq1MOAdkY+m1m8fmaCElTm9rHd/ +ckvdLa7/qFgdRifUg8dpZJ8ZuxD4BEKHWV0CsdblyNpDMKPoN6XSSAuig06dT4NY +nddHIrGJ8Ik7PShDLJsXfAPunSYl4AS4HQRXQkfaWGnw0ymrEgKZKyrYnaAfVF4j +mgzSmVjEoeVJwiWnZCBSLueJ9RnAi9BjsXgevgFHvnaBRvGZH5SavvqCFbWEhHl1 +k7qfteSbwstpXL0fVQqnJjAFUb5l7lepat+9+TYvrR5GQSuxiNCIJYVAF3m/PY3i +9C3qMDHfoUDLNf+Cn/WZPEr9naHRVcwgqBzYIAWrsxRllVPY6I5XxXdrLU2I6V1i +1aL4cOFw60UjDvAARsJIMejnNoA2LSLyASdT686naUmCv+cPnPMgLvX6Xc7qWDqP +2Kp9MLd0lnw9brTsSjtZtqlQDQ8FBnAmuZWR0V4kjI/KdFeXkItat/6Nrdjowga8 +CFYhAhJTxp+GBFjKLfgDDVcLHDe98Fo18v471qQ3Fen4CJKWPXTItVxuZQjn32lz +nOzjMFqm31y+2n8A7qXaK1weKmrAo64e8Q== +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_50[] = { + 0x30, 0x82, 0x05, 0xe5, 0x30, 0x82, 0x03, 0xcd, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x13, 0x8b, 0xfe, 0xf3, 0x32, 0x94, 0xf9, 0xd8, 0x16, + 0xf9, 0x45, 0xc2, 0x71, 0x95, 0x29, 0x98, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x7d, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, + 0x4c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x4c, 0x74, 0x64, + 0x2e, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x22, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x44, 0x69, 0x67, 0x69, 0x74, + 0x61, 0x6c, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x31, 0x29, + 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x20, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x35, 0x31, + 0x32, 0x31, 0x36, 0x30, 0x31, 0x30, 0x30, 0x30, 0x35, 0x5a, 0x17, 0x0d, + 0x33, 0x30, 0x31, 0x32, 0x31, 0x36, 0x30, 0x31, 0x30, 0x30, 0x30, 0x35, + 0x5a, 0x30, 0x78, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x49, 0x4c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, + 0x4c, 0x74, 0x64, 0x2e, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, + 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1d, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x20, 0x33, 0x20, 0x4f, 0x56, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xaf, 0x67, 0x1c, 0x6f, 0xe5, 0x45, 0xe0, 0xd7, 0x46, 0x4b, 0x75, 0x2c, + 0xb6, 0x80, 0xf2, 0x9a, 0x17, 0x4d, 0x2d, 0xff, 0xde, 0xae, 0xd2, 0xd4, + 0x00, 0x8a, 0x3a, 0xb8, 0x31, 0xfe, 0x8e, 0x37, 0x9e, 0xfa, 0xaa, 0xd5, + 0xa3, 0x5b, 0x16, 0x12, 0xc1, 0x19, 0x3e, 0x34, 0x85, 0x96, 0xc3, 0xbe, + 0xd3, 0xb3, 0x43, 0xf4, 0x8d, 0x6f, 0x16, 0xbd, 0x30, 0xba, 0x07, 0xfc, + 0xd8, 0x9a, 0xc1, 0x79, 0x89, 0x80, 0x6d, 0xa0, 0x8c, 0xbe, 0xdd, 0x37, + 0xf7, 0xeb, 0x05, 0xd3, 0x53, 0x7f, 0x57, 0x58, 0x76, 0x55, 0xb6, 0xa8, + 0xa8, 0x86, 0x44, 0xb8, 0xbb, 0xd0, 0x13, 0xda, 0xfd, 0x8f, 0xe1, 0xf2, + 0xcd, 0xa0, 0x15, 0x38, 0x55, 0x56, 0xce, 0x26, 0xcf, 0x7c, 0x93, 0x75, + 0x29, 0x7a, 0x0a, 0xab, 0xfb, 0xba, 0x09, 0x38, 0x20, 0x11, 0x57, 0x07, + 0x5d, 0x7f, 0x49, 0x9f, 0x2a, 0x4a, 0x67, 0x1e, 0x9e, 0x58, 0xe9, 0xc7, + 0x7f, 0xf9, 0xc3, 0xed, 0xfe, 0x5f, 0x4d, 0xaf, 0xb8, 0x4f, 0x9d, 0xdf, + 0x69, 0x2d, 0x69, 0x1b, 0x3a, 0x58, 0x81, 0x69, 0x63, 0x30, 0xea, 0x87, + 0x8d, 0x0f, 0x52, 0x9d, 0x5a, 0xda, 0x39, 0x44, 0xba, 0x9f, 0x89, 0x9f, + 0x36, 0xb6, 0xc2, 0x19, 0x5c, 0xd9, 0x26, 0x78, 0xd9, 0xae, 0x5e, 0xfc, + 0x95, 0x90, 0xbf, 0xe8, 0x11, 0xc0, 0x47, 0x0f, 0x77, 0x89, 0xdd, 0x6a, + 0x28, 0x4f, 0x0a, 0xbc, 0x32, 0x64, 0x57, 0x43, 0x3d, 0x08, 0x65, 0x93, + 0xe5, 0x45, 0xae, 0xdd, 0x28, 0x0c, 0x27, 0x2c, 0x8e, 0xa6, 0x2b, 0x09, + 0x03, 0x5d, 0xa1, 0x78, 0xd2, 0x8c, 0xab, 0xb6, 0x6b, 0xb9, 0x46, 0xc9, + 0x19, 0x00, 0x39, 0xb9, 0xbf, 0xc6, 0x13, 0x2b, 0x73, 0x72, 0x1f, 0xf2, + 0x3e, 0x37, 0xb8, 0xe8, 0xb9, 0x14, 0x65, 0x88, 0x4d, 0xe2, 0xf1, 0x1b, + 0xd8, 0xa5, 0x1d, 0x3b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, + 0x64, 0x30, 0x82, 0x01, 0x60, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, + 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, + 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, + 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x01, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, + 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30, + 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, + 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x73, 0x63, 0x61, + 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x66, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x01, 0x01, 0x04, 0x5a, 0x30, 0x58, 0x30, 0x24, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x30, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x24, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x61, 0x69, 0x61, 0x2e, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x74, + 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xb1, + 0x3f, 0x1c, 0x92, 0x7b, 0x92, 0xb0, 0x5a, 0x25, 0xb3, 0x38, 0xfb, 0x9c, + 0x07, 0xa4, 0x26, 0x50, 0x32, 0xe3, 0x51, 0x30, 0x1f, 0x06, 0x03, 0x55, + 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x4e, 0x0b, 0xef, 0x1a, + 0xa4, 0x40, 0x5b, 0xa5, 0x17, 0x69, 0x87, 0x30, 0xca, 0x34, 0x68, 0x43, + 0xd0, 0x41, 0xae, 0xf2, 0x30, 0x3f, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x38, 0x30, 0x36, 0x30, 0x34, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, + 0x2c, 0x30, 0x2a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, + 0x01, 0x16, 0x1e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, + 0x77, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, + 0x03, 0x82, 0x02, 0x01, 0x00, 0x85, 0xf2, 0xe8, 0x14, 0xd3, 0x1b, 0xc1, + 0xa1, 0x16, 0x1d, 0xa4, 0xf4, 0x4d, 0xba, 0x51, 0x8b, 0x5c, 0x52, 0xb1, + 0x54, 0x54, 0x12, 0x16, 0x17, 0x9c, 0x96, 0x78, 0x6f, 0xd3, 0xbf, 0xdf, + 0x43, 0x36, 0xf5, 0x12, 0x89, 0x61, 0x72, 0x44, 0xdf, 0x1c, 0x9b, 0x09, + 0x4f, 0x60, 0x26, 0x68, 0xc1, 0xe6, 0x66, 0x50, 0x70, 0xb3, 0x6a, 0xf1, + 0xa8, 0x6a, 0x0c, 0x1e, 0x2e, 0x93, 0xf1, 0xee, 0x07, 0x3e, 0x09, 0xdd, + 0x30, 0x45, 0xb2, 0x56, 0x8e, 0xdc, 0x2c, 0x5c, 0xab, 0x49, 0xfa, 0xb9, + 0x04, 0x03, 0x40, 0x15, 0x7a, 0xb5, 0x30, 0xe0, 0x1d, 0x91, 0x8f, 0xa6, + 0xd6, 0x6f, 0x1f, 0x99, 0xa0, 0x84, 0x95, 0x39, 0xbd, 0xac, 0x77, 0x7f, + 0x72, 0x4b, 0xdd, 0x2d, 0xae, 0xff, 0xa8, 0x58, 0x1d, 0x46, 0x27, 0xd4, + 0x83, 0xc7, 0x69, 0x64, 0x9f, 0x19, 0xbb, 0x10, 0xf8, 0x04, 0x42, 0x87, + 0x59, 0x5d, 0x02, 0xb1, 0xd6, 0xe5, 0xc8, 0xda, 0x43, 0x30, 0xa3, 0xe8, + 0x37, 0xa5, 0xd2, 0x48, 0x0b, 0xa2, 0x83, 0x4e, 0x9d, 0x4f, 0x83, 0x58, + 0x9d, 0xd7, 0x47, 0x22, 0xb1, 0x89, 0xf0, 0x89, 0x3b, 0x3d, 0x28, 0x43, + 0x2c, 0x9b, 0x17, 0x7c, 0x03, 0xee, 0x9d, 0x26, 0x25, 0xe0, 0x04, 0xb8, + 0x1d, 0x04, 0x57, 0x42, 0x47, 0xda, 0x58, 0x69, 0xf0, 0xd3, 0x29, 0xab, + 0x12, 0x02, 0x99, 0x2b, 0x2a, 0xd8, 0x9d, 0xa0, 0x1f, 0x54, 0x5e, 0x23, + 0x9a, 0x0c, 0xd2, 0x99, 0x58, 0xc4, 0xa1, 0xe5, 0x49, 0xc2, 0x25, 0xa7, + 0x64, 0x20, 0x52, 0x2e, 0xe7, 0x89, 0xf5, 0x19, 0xc0, 0x8b, 0xd0, 0x63, + 0xb1, 0x78, 0x1e, 0xbe, 0x01, 0x47, 0xbe, 0x76, 0x81, 0x46, 0xf1, 0x99, + 0x1f, 0x94, 0x9a, 0xbe, 0xfa, 0x82, 0x15, 0xb5, 0x84, 0x84, 0x79, 0x75, + 0x93, 0xba, 0x9f, 0xb5, 0xe4, 0x9b, 0xc2, 0xcb, 0x69, 0x5c, 0xbd, 0x1f, + 0x55, 0x0a, 0xa7, 0x26, 0x30, 0x05, 0x51, 0xbe, 0x65, 0xee, 0x57, 0xa9, + 0x6a, 0xdf, 0xbd, 0xf9, 0x36, 0x2f, 0xad, 0x1e, 0x46, 0x41, 0x2b, 0xb1, + 0x88, 0xd0, 0x88, 0x25, 0x85, 0x40, 0x17, 0x79, 0xbf, 0x3d, 0x8d, 0xe2, + 0xf4, 0x2d, 0xea, 0x30, 0x31, 0xdf, 0xa1, 0x40, 0xcb, 0x35, 0xff, 0x82, + 0x9f, 0xf5, 0x99, 0x3c, 0x4a, 0xfd, 0x9d, 0xa1, 0xd1, 0x55, 0xcc, 0x20, + 0xa8, 0x1c, 0xd8, 0x20, 0x05, 0xab, 0xb3, 0x14, 0x65, 0x95, 0x53, 0xd8, + 0xe8, 0x8e, 0x57, 0xc5, 0x77, 0x6b, 0x2d, 0x4d, 0x88, 0xe9, 0x5d, 0x62, + 0xd5, 0xa2, 0xf8, 0x70, 0xe1, 0x70, 0xeb, 0x45, 0x23, 0x0e, 0xf0, 0x00, + 0x46, 0xc2, 0x48, 0x31, 0xe8, 0xe7, 0x36, 0x80, 0x36, 0x2d, 0x22, 0xf2, + 0x01, 0x27, 0x53, 0xeb, 0xce, 0xa7, 0x69, 0x49, 0x82, 0xbf, 0xe7, 0x0f, + 0x9c, 0xf3, 0x20, 0x2e, 0xf5, 0xfa, 0x5d, 0xce, 0xea, 0x58, 0x3a, 0x8f, + 0xd8, 0xaa, 0x7d, 0x30, 0xb7, 0x74, 0x96, 0x7c, 0x3d, 0x6e, 0xb4, 0xec, + 0x4a, 0x3b, 0x59, 0xb6, 0xa9, 0x50, 0x0d, 0x0f, 0x05, 0x06, 0x70, 0x26, + 0xb9, 0x95, 0x91, 0xd1, 0x5e, 0x24, 0x8c, 0x8f, 0xca, 0x74, 0x57, 0x97, + 0x90, 0x8b, 0x5a, 0xb7, 0xfe, 0x8d, 0xad, 0xd8, 0xe8, 0xc2, 0x06, 0xbc, + 0x08, 0x56, 0x21, 0x02, 0x12, 0x53, 0xc6, 0x9f, 0x86, 0x04, 0x58, 0xca, + 0x2d, 0xf8, 0x03, 0x0d, 0x57, 0x0b, 0x1c, 0x37, 0xbd, 0xf0, 0x5a, 0x35, + 0xf2, 0xfe, 0x3b, 0xd6, 0xa4, 0x37, 0x15, 0xe9, 0xf8, 0x08, 0x92, 0x96, + 0x3d, 0x74, 0xc8, 0xb5, 0x5c, 0x6e, 0x65, 0x08, 0xe7, 0xdf, 0x69, 0x73, + 0x9c, 0xec, 0xe3, 0x30, 0x5a, 0xa6, 0xdf, 0x5c, 0xbe, 0xda, 0x7f, 0x00, + 0xee, 0xa5, 0xda, 0x2b, 0x5c, 0x1e, 0x2a, 0x6a, 0xc0, 0xa3, 0xae, 0x1e, + 0xf1, +}; + +#if 0 +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 7250751724796726 (0x19c28530e93b36) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=IL, O=StartCom Ltd., OU=Secure Digital Certificate Signing, CN=StartCom Certification Authority + Validity + Not Before: Sep 17 22:46:36 2006 GMT + Not After : Dec 31 23:59:59 2019 GMT + Subject: C=CN, O=WoSign CA Limited, CN=Certification Authority of WoSign + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (4096 bit) + Modulus: + 00:bd:ca:8d:ac:b8:91:15:56:97:7b:6b:5c:7a:c2: + de:6b:d9:a1:b0:c3:10:23:fa:a7:a1:b2:cc:31:fa: + 3e:d9:a6:29:6f:16:3d:e0:6b:f8:b8:40:5f:db:39: + a8:00:7a:8b:a0:4d:54:7d:c2:22:78:fc:8e:09:b8: + a8:85:d7:cc:95:97:4b:74:d8:9e:7e:f0:00:e4:0e: + 89:ae:49:28:44:1a:10:99:32:0f:25:88:53:a4:0d: + b3:0f:12:08:16:0b:03:71:27:1c:7f:e1:db:d2:fd: + 67:68:c4:05:5d:0a:0e:5d:70:d7:d8:97:a0:bc:53: + 41:9a:91:8d:f4:9e:36:66:7a:7e:56:c1:90:5f:e6: + b1:68:20:36:a4:8c:24:2c:2c:47:0b:59:76:66:30: + b5:be:de:ed:8f:f8:9d:d3:bb:01:30:e6:f2:f3:0e: + e0:2c:92:80:f3:85:f9:28:8a:b4:54:2e:9a:ed:f7: + 76:fc:15:68:16:eb:4a:6c:eb:2e:12:8f:d4:cf:fe: + 0c:c7:5c:1d:0b:7e:05:32:be:5e:b0:09:2a:42:d5: + c9:4e:90:b3:59:0d:bb:7a:7e:cd:d5:08:5a:b4:7f: + d8:1c:69:11:f9:27:0f:7b:06:af:54:83:18:7b:e1: + dd:54:7a:51:68:6e:77:fc:c6:bf:52:4a:66:46:a1: + b2:67:1a:bb:a3:4f:77:a0:be:5d:ff:fc:56:0b:43: + 72:77:90:ca:9e:f9:f2:39:f5:0d:a9:f4:ea:d7:e7: + b3:10:2f:30:42:37:21:cc:30:70:c9:86:98:0f:cc: + 58:4d:83:bb:7d:e5:1a:a5:37:8d:b6:ac:32:97:00: + 3a:63:71:24:1e:9e:37:c4:ff:74:d4:37:c0:e2:fe: + 88:46:60:11:dd:08:3f:50:36:ab:b8:7a:a4:95:62: + 6a:6e:b0:ca:6a:21:5a:69:f3:f3:fb:1d:70:39:95: + f3:a7:6e:a6:81:89:a1:88:c5:3b:71:ca:a3:52:ee: + 83:bb:fd:a0:77:f4:e4:6f:e7:42:db:6d:4a:99:8a: + 34:48:bc:17:dc:e4:80:08:22:b6:f2:31:c0:3f:04: + 3e:eb:9f:20:79:d6:b8:06:64:64:02:31:d7:a9:cd: + 52:fb:84:45:69:09:00:2a:dc:55:8b:c4:06:46:4b: + c0:4a:1d:09:5b:39:28:fd:a9:ab:ce:00:f9:2e:48: + 4b:26:e6:30:4c:a5:58:ca:b4:44:82:4f:e7:91:1e: + 33:c3:b0:93:ff:11:fc:81:d2:ca:1f:71:29:dd:76: + 4f:92:25:af:1d:81:b7:0f:2f:8c:c3:06:cc:2f:27: + a3:4a:e4:0e:99:ba:7c:1e:45:1f:7f:aa:19:45:96: + fd:fc:3d + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:2 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + E1:66:CF:0E:D1:F1:B3:4B:B7:06:20:14:FE:87:12:D5:F6:FE:FB:3E + X509v3 Authority Key Identifier: + keyid:4E:0B:EF:1A:A4:40:5B:A5:17:69:87:30:CA:34:68:43:D0:41:AE:F2 + + Authority Information Access: + OCSP - URI:http://ocsp.startssl.com/ca + CA Issuers - URI:http://aia.startssl.com/certs/ca.crt + + X509v3 CRL Distribution Points: + + Full Name: + URI:http://crl.startssl.com/sfsca.crl + + Signature Algorithm: sha256WithRSAEncryption + b6:6d:f8:70:fb:e2:0d:4c:98:b3:07:49:15:f5:04:c4:6c:ca: + ca:f5:68:a0:08:fe:12:6d:9c:04:06:c9:ad:9a:91:52:3e:78: + c4:5c:ee:9f:54:1d:ee:e3:f1:5e:30:c9:49:e1:39:e0:a6:9d: + 36:6c:57:fa:e6:34:4f:55:e8:87:a8:2c:dd:05:f1:58:12:91: + e8:ca:ce:28:78:8f:df:07:85:01:a5:dc:45:96:05:d4:80:b2: + 2b:05:9a:cb:9a:a5:8b:e0:3a:67:e6:73:47:be:4a:fd:27:b1: + 88:ef:e6:ca:cf:8d:0e:26:9f:fa:5f:57:78:ad:6d:fe:ae:9b: + 35:08:b1:c3:ba:c1:00:4a:4b:7d:14:bd:f7:f1:d3:55:18:ac: + d0:33:70:88:6d:c4:09:71:14:a6:2b:4f:88:81:e7:0b:00:37: + a9:15:7d:7e:d7:01:96:3f:2f:af:7b:62:ae:0a:4a:bf:4b:39: + 2e:35:10:8b:fe:04:39:e4:3c:3a:0c:09:56:40:3a:b5:f4:c2: + 68:0c:b5:f9:52:cd:ee:9d:f8:98:fc:78:e7:58:47:8f:1c:73: + 58:69:33:ab:ff:dd:df:8e:24:01:77:98:19:3a:b0:66:79:bc: + e1:08:a3:0e:4f:c1:04:b3:f3:01:c8:eb:d3:59:1c:35:d2:93: + 1e:70:65:82:7f:db:cf:fb:c8:99:12:60:c3:44:6f:3a:80:4b: + d7:be:21:aa:14:7a:64:cb:dd:37:43:45:5b:32:2e:45:f0:d9: + 59:1f:6b:18:f0:7c:e9:55:36:19:61:5f:b5:7d:f1:8d:bd:88: + e4:75:4b:98:dd:27:b0:e4:84:44:2a:61:84:57:05:82:11:1f: + aa:35:58:f3:20:0e:af:59:ef:fa:55:72:72:0d:26:d0:9b:53: + 49:ac:ce:37:2e:65:61:ff:f6:ec:1b:ea:f6:f1:a6:d3:d1:b5: + 7b:be:35:f4:22:c1:bc:8d:01:bd:68:5e:83:0d:2f:ec:d6:da: + 63:0c:27:d1:54:3e:e4:a8:d3:ce:4b:32:b8:91:94:ff:fb:5b: + 49:2d:75:18:a8:ba:71:9a:3b:ae:d9:c0:a9:4f:87:91:ed:8b: + 7b:6b:20:98:89:39:83:4f:80:c4:69:cc:17:c9:c8:4e:be:e4: + a9:a5:81:76:70:06:04:32:cd:83:65:f4:bc:7d:3e:13:bc:d2: + e8:6f:63:aa:b5:3b:da:8d:86:32:82:78:9d:d9:cc:ff:bf:57: + 64:74:ed:28:3d:44:62:15:61:4b:f7:94:b0:0d:2a:67:1c:f0: + cb:9b:a5:92:bf:f8:41:5a:c1:3d:60:ed:9f:bb:b8:6d:9b:ce: + a9:6a:16:3f:7e:ea:06:f1 +-----BEGIN CERTIFICATE----- +MIIGXDCCBESgAwIBAgIHGcKFMOk7NjANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQG +EwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERp +Z2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MjI0NjM2WhcNMTkxMjMxMjM1 +OTU5WjBVMQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQx +KjAoBgNVBAMTIUNlcnRpZmljYXRpb24gQXV0aG9yaXR5IG9mIFdvU2lnbjCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL3Kjay4kRVWl3trXHrC3mvZobDD +ECP6p6GyzDH6PtmmKW8WPeBr+LhAX9s5qAB6i6BNVH3CInj8jgm4qIXXzJWXS3TY +nn7wAOQOia5JKEQaEJkyDyWIU6QNsw8SCBYLA3EnHH/h29L9Z2jEBV0KDl1w19iX +oLxTQZqRjfSeNmZ6flbBkF/msWggNqSMJCwsRwtZdmYwtb7e7Y/4ndO7ATDm8vMO +4CySgPOF+SiKtFQumu33dvwVaBbrSmzrLhKP1M/+DMdcHQt+BTK+XrAJKkLVyU6Q +s1kNu3p+zdUIWrR/2BxpEfknD3sGr1SDGHvh3VR6UWhud/zGv1JKZkahsmcau6NP +d6C+Xf/8VgtDcneQyp758jn1Dan06tfnsxAvMEI3IcwwcMmGmA/MWE2Du33lGqU3 +jbasMpcAOmNxJB6eN8T/dNQ3wOL+iEZgEd0IP1A2q7h6pJViam6wymohWmnz8/sd +cDmV86dupoGJoYjFO3HKo1Lug7v9oHf05G/nQtttSpmKNEi8F9zkgAgitvIxwD8E +PuufIHnWuAZkZAIx16nNUvuERWkJACrcVYvEBkZLwEodCVs5KP2pq84A+S5ISybm +MEylWMq0RIJP55EeM8Owk/8R/IHSyh9xKd12T5Ilrx2Btw8vjMMGzC8no0rkDpm6 +fB5FH3+qGUWW/fw9AgMBAAGjggEHMIIBAzASBgNVHRMBAf8ECDAGAQH/AgECMA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU4WbPDtHxs0u3BiAU/ocS1fb++z4wHwYD +VR0jBBgwFoAUTgvvGqRAW6UXaYcwyjRoQ9BBrvIwaQYIKwYBBQUHAQEEXTBbMCcG +CCsGAQUFBzABhhtodHRwOi8vb2NzcC5zdGFydHNzbC5jb20vY2EwMAYIKwYBBQUH +MAKGJGh0dHA6Ly9haWEuc3RhcnRzc2wuY29tL2NlcnRzL2NhLmNydDAyBgNVHR8E +KzApMCegJaAjhiFodHRwOi8vY3JsLnN0YXJ0c3NsLmNvbS9zZnNjYS5jcmwwDQYJ +KoZIhvcNAQELBQADggIBALZt+HD74g1MmLMHSRX1BMRsysr1aKAI/hJtnAQGya2a +kVI+eMRc7p9UHe7j8V4wyUnhOeCmnTZsV/rmNE9V6IeoLN0F8VgSkejKzih4j98H +hQGl3EWWBdSAsisFmsuapYvgOmfmc0e+Sv0nsYjv5srPjQ4mn/pfV3itbf6umzUI +scO6wQBKS30Uvffx01UYrNAzcIhtxAlxFKYrT4iB5wsAN6kVfX7XAZY/L697Yq4K +Sr9LOS41EIv+BDnkPDoMCVZAOrX0wmgMtflSze6d+Jj8eOdYR48cc1hpM6v/3d+O +JAF3mBk6sGZ5vOEIow5PwQSz8wHI69NZHDXSkx5wZYJ/28/7yJkSYMNEbzqAS9e+ +IaoUemTL3TdDRVsyLkXw2VkfaxjwfOlVNhlhX7V98Y29iOR1S5jdJ7DkhEQqYYRX +BYIRH6o1WPMgDq9Z7/pVcnINJtCbU0mszjcuZWH/9uwb6vbxptPRtXu+NfQiwbyN +Ab1oXoMNL+zW2mMMJ9FUPuSo085LMriRlP/7W0ktdRiounGaO67ZwKlPh5Hti3tr +IJiJOYNPgMRpzBfJyE6+5KmlgXZwBgQyzYNl9Lx9PhO80uhvY6q1O9qNhjKCeJ3Z +zP+/V2R07Sg9RGIVYUv3lLANKmcc8MubpZK/+EFawT1g7Z+7uG2bzqlqFj9+6gbx +-----END CERTIFICATE----- +#endif +static const unsigned char der_cert3_51[] = { + 0x30, 0x82, 0x06, 0x5c, 0x30, 0x82, 0x04, 0x44, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x07, 0x19, 0xc2, 0x85, 0x30, 0xe9, 0x3b, 0x36, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, + 0x00, 0x30, 0x7d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x49, 0x4c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0a, 0x13, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, + 0x4c, 0x74, 0x64, 0x2e, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, + 0x0b, 0x13, 0x22, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x44, 0x69, + 0x67, 0x69, 0x74, 0x61, 0x6c, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, + 0x67, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x20, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, + 0x30, 0x36, 0x30, 0x39, 0x31, 0x37, 0x32, 0x32, 0x34, 0x36, 0x33, 0x36, + 0x5a, 0x17, 0x0d, 0x31, 0x39, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, + 0x39, 0x35, 0x39, 0x5a, 0x30, 0x55, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, + 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x4e, 0x31, 0x1a, 0x30, 0x18, 0x06, + 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, + 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, + 0x2a, 0x30, 0x28, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x21, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, + 0x20, 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x30, 0x82, 0x02, 0x22, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, + 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02, + 0x82, 0x02, 0x01, 0x00, 0xbd, 0xca, 0x8d, 0xac, 0xb8, 0x91, 0x15, 0x56, + 0x97, 0x7b, 0x6b, 0x5c, 0x7a, 0xc2, 0xde, 0x6b, 0xd9, 0xa1, 0xb0, 0xc3, + 0x10, 0x23, 0xfa, 0xa7, 0xa1, 0xb2, 0xcc, 0x31, 0xfa, 0x3e, 0xd9, 0xa6, + 0x29, 0x6f, 0x16, 0x3d, 0xe0, 0x6b, 0xf8, 0xb8, 0x40, 0x5f, 0xdb, 0x39, + 0xa8, 0x00, 0x7a, 0x8b, 0xa0, 0x4d, 0x54, 0x7d, 0xc2, 0x22, 0x78, 0xfc, + 0x8e, 0x09, 0xb8, 0xa8, 0x85, 0xd7, 0xcc, 0x95, 0x97, 0x4b, 0x74, 0xd8, + 0x9e, 0x7e, 0xf0, 0x00, 0xe4, 0x0e, 0x89, 0xae, 0x49, 0x28, 0x44, 0x1a, + 0x10, 0x99, 0x32, 0x0f, 0x25, 0x88, 0x53, 0xa4, 0x0d, 0xb3, 0x0f, 0x12, + 0x08, 0x16, 0x0b, 0x03, 0x71, 0x27, 0x1c, 0x7f, 0xe1, 0xdb, 0xd2, 0xfd, + 0x67, 0x68, 0xc4, 0x05, 0x5d, 0x0a, 0x0e, 0x5d, 0x70, 0xd7, 0xd8, 0x97, + 0xa0, 0xbc, 0x53, 0x41, 0x9a, 0x91, 0x8d, 0xf4, 0x9e, 0x36, 0x66, 0x7a, + 0x7e, 0x56, 0xc1, 0x90, 0x5f, 0xe6, 0xb1, 0x68, 0x20, 0x36, 0xa4, 0x8c, + 0x24, 0x2c, 0x2c, 0x47, 0x0b, 0x59, 0x76, 0x66, 0x30, 0xb5, 0xbe, 0xde, + 0xed, 0x8f, 0xf8, 0x9d, 0xd3, 0xbb, 0x01, 0x30, 0xe6, 0xf2, 0xf3, 0x0e, + 0xe0, 0x2c, 0x92, 0x80, 0xf3, 0x85, 0xf9, 0x28, 0x8a, 0xb4, 0x54, 0x2e, + 0x9a, 0xed, 0xf7, 0x76, 0xfc, 0x15, 0x68, 0x16, 0xeb, 0x4a, 0x6c, 0xeb, + 0x2e, 0x12, 0x8f, 0xd4, 0xcf, 0xfe, 0x0c, 0xc7, 0x5c, 0x1d, 0x0b, 0x7e, + 0x05, 0x32, 0xbe, 0x5e, 0xb0, 0x09, 0x2a, 0x42, 0xd5, 0xc9, 0x4e, 0x90, + 0xb3, 0x59, 0x0d, 0xbb, 0x7a, 0x7e, 0xcd, 0xd5, 0x08, 0x5a, 0xb4, 0x7f, + 0xd8, 0x1c, 0x69, 0x11, 0xf9, 0x27, 0x0f, 0x7b, 0x06, 0xaf, 0x54, 0x83, + 0x18, 0x7b, 0xe1, 0xdd, 0x54, 0x7a, 0x51, 0x68, 0x6e, 0x77, 0xfc, 0xc6, + 0xbf, 0x52, 0x4a, 0x66, 0x46, 0xa1, 0xb2, 0x67, 0x1a, 0xbb, 0xa3, 0x4f, + 0x77, 0xa0, 0xbe, 0x5d, 0xff, 0xfc, 0x56, 0x0b, 0x43, 0x72, 0x77, 0x90, + 0xca, 0x9e, 0xf9, 0xf2, 0x39, 0xf5, 0x0d, 0xa9, 0xf4, 0xea, 0xd7, 0xe7, + 0xb3, 0x10, 0x2f, 0x30, 0x42, 0x37, 0x21, 0xcc, 0x30, 0x70, 0xc9, 0x86, + 0x98, 0x0f, 0xcc, 0x58, 0x4d, 0x83, 0xbb, 0x7d, 0xe5, 0x1a, 0xa5, 0x37, + 0x8d, 0xb6, 0xac, 0x32, 0x97, 0x00, 0x3a, 0x63, 0x71, 0x24, 0x1e, 0x9e, + 0x37, 0xc4, 0xff, 0x74, 0xd4, 0x37, 0xc0, 0xe2, 0xfe, 0x88, 0x46, 0x60, + 0x11, 0xdd, 0x08, 0x3f, 0x50, 0x36, 0xab, 0xb8, 0x7a, 0xa4, 0x95, 0x62, + 0x6a, 0x6e, 0xb0, 0xca, 0x6a, 0x21, 0x5a, 0x69, 0xf3, 0xf3, 0xfb, 0x1d, + 0x70, 0x39, 0x95, 0xf3, 0xa7, 0x6e, 0xa6, 0x81, 0x89, 0xa1, 0x88, 0xc5, + 0x3b, 0x71, 0xca, 0xa3, 0x52, 0xee, 0x83, 0xbb, 0xfd, 0xa0, 0x77, 0xf4, + 0xe4, 0x6f, 0xe7, 0x42, 0xdb, 0x6d, 0x4a, 0x99, 0x8a, 0x34, 0x48, 0xbc, + 0x17, 0xdc, 0xe4, 0x80, 0x08, 0x22, 0xb6, 0xf2, 0x31, 0xc0, 0x3f, 0x04, + 0x3e, 0xeb, 0x9f, 0x20, 0x79, 0xd6, 0xb8, 0x06, 0x64, 0x64, 0x02, 0x31, + 0xd7, 0xa9, 0xcd, 0x52, 0xfb, 0x84, 0x45, 0x69, 0x09, 0x00, 0x2a, 0xdc, + 0x55, 0x8b, 0xc4, 0x06, 0x46, 0x4b, 0xc0, 0x4a, 0x1d, 0x09, 0x5b, 0x39, + 0x28, 0xfd, 0xa9, 0xab, 0xce, 0x00, 0xf9, 0x2e, 0x48, 0x4b, 0x26, 0xe6, + 0x30, 0x4c, 0xa5, 0x58, 0xca, 0xb4, 0x44, 0x82, 0x4f, 0xe7, 0x91, 0x1e, + 0x33, 0xc3, 0xb0, 0x93, 0xff, 0x11, 0xfc, 0x81, 0xd2, 0xca, 0x1f, 0x71, + 0x29, 0xdd, 0x76, 0x4f, 0x92, 0x25, 0xaf, 0x1d, 0x81, 0xb7, 0x0f, 0x2f, + 0x8c, 0xc3, 0x06, 0xcc, 0x2f, 0x27, 0xa3, 0x4a, 0xe4, 0x0e, 0x99, 0xba, + 0x7c, 0x1e, 0x45, 0x1f, 0x7f, 0xaa, 0x19, 0x45, 0x96, 0xfd, 0xfc, 0x3d, + 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x07, 0x30, 0x82, 0x01, + 0x03, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, + 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x02, 0x30, 0x0e, 0x06, + 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, + 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0xe1, 0x66, 0xcf, 0x0e, 0xd1, 0xf1, 0xb3, 0x4b, 0xb7, 0x06, 0x20, 0x14, + 0xfe, 0x87, 0x12, 0xd5, 0xf6, 0xfe, 0xfb, 0x3e, 0x30, 0x1f, 0x06, 0x03, + 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x4e, 0x0b, 0xef, + 0x1a, 0xa4, 0x40, 0x5b, 0xa5, 0x17, 0x69, 0x87, 0x30, 0xca, 0x34, 0x68, + 0x43, 0xd0, 0x41, 0xae, 0xf2, 0x30, 0x69, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x5d, 0x30, 0x5b, 0x30, 0x27, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1b, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x63, 0x61, 0x30, 0x30, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x02, 0x86, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x61, + 0x69, 0x61, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x63, 0x61, + 0x2e, 0x63, 0x72, 0x74, 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, + 0x2b, 0x30, 0x29, 0x30, 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x66, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, + 0x82, 0x02, 0x01, 0x00, 0xb6, 0x6d, 0xf8, 0x70, 0xfb, 0xe2, 0x0d, 0x4c, + 0x98, 0xb3, 0x07, 0x49, 0x15, 0xf5, 0x04, 0xc4, 0x6c, 0xca, 0xca, 0xf5, + 0x68, 0xa0, 0x08, 0xfe, 0x12, 0x6d, 0x9c, 0x04, 0x06, 0xc9, 0xad, 0x9a, + 0x91, 0x52, 0x3e, 0x78, 0xc4, 0x5c, 0xee, 0x9f, 0x54, 0x1d, 0xee, 0xe3, + 0xf1, 0x5e, 0x30, 0xc9, 0x49, 0xe1, 0x39, 0xe0, 0xa6, 0x9d, 0x36, 0x6c, + 0x57, 0xfa, 0xe6, 0x34, 0x4f, 0x55, 0xe8, 0x87, 0xa8, 0x2c, 0xdd, 0x05, + 0xf1, 0x58, 0x12, 0x91, 0xe8, 0xca, 0xce, 0x28, 0x78, 0x8f, 0xdf, 0x07, + 0x85, 0x01, 0xa5, 0xdc, 0x45, 0x96, 0x05, 0xd4, 0x80, 0xb2, 0x2b, 0x05, + 0x9a, 0xcb, 0x9a, 0xa5, 0x8b, 0xe0, 0x3a, 0x67, 0xe6, 0x73, 0x47, 0xbe, + 0x4a, 0xfd, 0x27, 0xb1, 0x88, 0xef, 0xe6, 0xca, 0xcf, 0x8d, 0x0e, 0x26, + 0x9f, 0xfa, 0x5f, 0x57, 0x78, 0xad, 0x6d, 0xfe, 0xae, 0x9b, 0x35, 0x08, + 0xb1, 0xc3, 0xba, 0xc1, 0x00, 0x4a, 0x4b, 0x7d, 0x14, 0xbd, 0xf7, 0xf1, + 0xd3, 0x55, 0x18, 0xac, 0xd0, 0x33, 0x70, 0x88, 0x6d, 0xc4, 0x09, 0x71, + 0x14, 0xa6, 0x2b, 0x4f, 0x88, 0x81, 0xe7, 0x0b, 0x00, 0x37, 0xa9, 0x15, + 0x7d, 0x7e, 0xd7, 0x01, 0x96, 0x3f, 0x2f, 0xaf, 0x7b, 0x62, 0xae, 0x0a, + 0x4a, 0xbf, 0x4b, 0x39, 0x2e, 0x35, 0x10, 0x8b, 0xfe, 0x04, 0x39, 0xe4, + 0x3c, 0x3a, 0x0c, 0x09, 0x56, 0x40, 0x3a, 0xb5, 0xf4, 0xc2, 0x68, 0x0c, + 0xb5, 0xf9, 0x52, 0xcd, 0xee, 0x9d, 0xf8, 0x98, 0xfc, 0x78, 0xe7, 0x58, + 0x47, 0x8f, 0x1c, 0x73, 0x58, 0x69, 0x33, 0xab, 0xff, 0xdd, 0xdf, 0x8e, + 0x24, 0x01, 0x77, 0x98, 0x19, 0x3a, 0xb0, 0x66, 0x79, 0xbc, 0xe1, 0x08, + 0xa3, 0x0e, 0x4f, 0xc1, 0x04, 0xb3, 0xf3, 0x01, 0xc8, 0xeb, 0xd3, 0x59, + 0x1c, 0x35, 0xd2, 0x93, 0x1e, 0x70, 0x65, 0x82, 0x7f, 0xdb, 0xcf, 0xfb, + 0xc8, 0x99, 0x12, 0x60, 0xc3, 0x44, 0x6f, 0x3a, 0x80, 0x4b, 0xd7, 0xbe, + 0x21, 0xaa, 0x14, 0x7a, 0x64, 0xcb, 0xdd, 0x37, 0x43, 0x45, 0x5b, 0x32, + 0x2e, 0x45, 0xf0, 0xd9, 0x59, 0x1f, 0x6b, 0x18, 0xf0, 0x7c, 0xe9, 0x55, + 0x36, 0x19, 0x61, 0x5f, 0xb5, 0x7d, 0xf1, 0x8d, 0xbd, 0x88, 0xe4, 0x75, + 0x4b, 0x98, 0xdd, 0x27, 0xb0, 0xe4, 0x84, 0x44, 0x2a, 0x61, 0x84, 0x57, + 0x05, 0x82, 0x11, 0x1f, 0xaa, 0x35, 0x58, 0xf3, 0x20, 0x0e, 0xaf, 0x59, + 0xef, 0xfa, 0x55, 0x72, 0x72, 0x0d, 0x26, 0xd0, 0x9b, 0x53, 0x49, 0xac, + 0xce, 0x37, 0x2e, 0x65, 0x61, 0xff, 0xf6, 0xec, 0x1b, 0xea, 0xf6, 0xf1, + 0xa6, 0xd3, 0xd1, 0xb5, 0x7b, 0xbe, 0x35, 0xf4, 0x22, 0xc1, 0xbc, 0x8d, + 0x01, 0xbd, 0x68, 0x5e, 0x83, 0x0d, 0x2f, 0xec, 0xd6, 0xda, 0x63, 0x0c, + 0x27, 0xd1, 0x54, 0x3e, 0xe4, 0xa8, 0xd3, 0xce, 0x4b, 0x32, 0xb8, 0x91, + 0x94, 0xff, 0xfb, 0x5b, 0x49, 0x2d, 0x75, 0x18, 0xa8, 0xba, 0x71, 0x9a, + 0x3b, 0xae, 0xd9, 0xc0, 0xa9, 0x4f, 0x87, 0x91, 0xed, 0x8b, 0x7b, 0x6b, + 0x20, 0x98, 0x89, 0x39, 0x83, 0x4f, 0x80, 0xc4, 0x69, 0xcc, 0x17, 0xc9, + 0xc8, 0x4e, 0xbe, 0xe4, 0xa9, 0xa5, 0x81, 0x76, 0x70, 0x06, 0x04, 0x32, + 0xcd, 0x83, 0x65, 0xf4, 0xbc, 0x7d, 0x3e, 0x13, 0xbc, 0xd2, 0xe8, 0x6f, + 0x63, 0xaa, 0xb5, 0x3b, 0xda, 0x8d, 0x86, 0x32, 0x82, 0x78, 0x9d, 0xd9, + 0xcc, 0xff, 0xbf, 0x57, 0x64, 0x74, 0xed, 0x28, 0x3d, 0x44, 0x62, 0x15, + 0x61, 0x4b, 0xf7, 0x94, 0xb0, 0x0d, 0x2a, 0x67, 0x1c, 0xf0, 0xcb, 0x9b, + 0xa5, 0x92, 0xbf, 0xf8, 0x41, 0x5a, 0xc1, 0x3d, 0x60, 0xed, 0x9f, 0xbb, + 0xb8, 0x6d, 0x9b, 0xce, 0xa9, 0x6a, 0x16, 0x3f, 0x7e, 0xea, 0x06, 0xf1, +}; diff --git a/external/lsquic/src/liblsquic/fiu-local.h b/external/lsquic/src/liblsquic/fiu-local.h new file mode 100644 index 0000000..a63f44b --- /dev/null +++ b/external/lsquic/src/liblsquic/fiu-local.h @@ -0,0 +1,38 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ + +/* libfiu - Fault Injection in Userspace + * + * This header, part of libfiu, is meant to be included in your project to + * avoid having libfiu as a mandatory build-time dependency. + * + * You can add it to your project, and #include it instead of fiu.h. + * The real fiu.h will be used only when FIU_ENABLE is defined. + * + * This header, as the rest of libfiu, is in the public domain. + * + * You can find more information about libfiu at + * http://blitiri.com.ar/p/libfiu. + */ + +#ifndef _FIU_LOCAL_H +#define _FIU_LOCAL_H + +/* Only define the stubs when fiu is disabled, otherwise use the real fiu.h + * header */ +#ifndef FIU_ENABLE + +#define fiu_init(flags) 0 +#define fiu_fail(name) 0 +#define fiu_failinfo() NULL +#define fiu_do_on(name, action) +#define fiu_exit_on(name) +#define fiu_return_on(name, retval) + +#else + +#include + +#endif /* FIU_ENABLE */ + +#endif /* _FIU_LOCAL_H */ + diff --git a/external/lsquic/src/liblsquic/gen-verstrs.pl b/external/lsquic/src/liblsquic/gen-verstrs.pl new file mode 100755 index 0000000..0aea696 --- /dev/null +++ b/external/lsquic/src/liblsquic/gen-verstrs.pl @@ -0,0 +1,168 @@ +#!/usr/bin/env perl +# +# Generate C file that contains version strings + +($header # This is lsquic.h that contains version enum which we parse + , $outfile # This is destination C file + ) = @ARGV; + +open HEADER, $header + or die "cannot open $header for reading: $!"; +open OUT, ">$outfile" + or die "cannot open $outfile for writing: $!"; + +while (

) { + if (/^enum lsquic_version$/ .. /^}/) { + if (/^\s*(LSQVER_0*(\d+)),\s*$/ && $1 ne 'LSQVER_098') { + if ($2 < 50) { + push @enums, $1; + push @versions, $2; + } + push @all_versions, $1; + push @all_alpns, "h3-Q0$2"; + } + if (/^\s*(LSQVER_ID(\d+))\b/) { + push @draft_versions, $2; + push @all_versions, $1; + push @all_alpns, "h3-$2"; + } + if (/^\s*(LSQVER_I(\d{3}))\b/) { + push @all_versions, $1; + if (not grep 'h3' eq $_, @all_alpns) { + push @all_alpns, "h3"; + } + } + } +} + +close HEADER; + +$timestamp = localtime; + +print OUT < +#include + +#include "lsquic.h" + +struct lsquic_engine; + +static const char *const versions_to_string[ 1 << N_LSQVER ] = { +C_CODE + +$max_mask = (1 << @versions) - 1; + +for ($mask = 0; $mask <= $max_mask; ++$mask) { + my @indexes; + for ($i = 0; $i < @versions; ++$i) { + if ($mask & (1 << $i)) { + push @indexes, $i; + } + } + print OUT " [", + join('|', map "(1<<$_)", @enums[@indexes]) || 0, + "] = \"", + join(',', @versions[@indexes]), + "\",\n"; +} + +$enums = join '|', map "(1<<$_)", sort @enums; + +print OUT <<"C_CODE"; +}; + + +const char * +lsquic_get_alt_svc_versions (unsigned versions) +{ + /* Limit to versions in versions_to_string: */ + versions &= ($enums); + return versions_to_string[ versions ]; +} + +C_CODE + + +$all_version_count_and_null = scalar(@all_versions) + 1; + +print OUT <<"C_CODE"; +static const struct { + unsigned versions; + const char *h3_alpns[$all_version_count_and_null]; +} vers_2_h3_alnps[] = { + { 0, { NULL }}, +C_CODE + +for ($i = 0; $i < (1 << @all_versions); ++$i) +{ + my (@vers, @alpns); + for ($j = 0; $j < @all_versions; ++$j) + { + if ($i & (1 << $j)) + { + push @vers, $all_versions[$j]; + push @alpns, $all_alpns[$j]; + } + } + if (@vers) { + print OUT " {", join("|", map "(1<<$_)", @vers), ", ", + "{ ", join(", ", (map qq("$_"), @alpns), "NULL"), " }},\n"; + } +} + +$all_versions = join "|", map "(1<<$_)", @all_versions; + +print OUT <<"C_CODE"; +}; + +const char *const * +lsquic_get_h3_alpns (unsigned versions) +{ + unsigned i; + + versions &= ($all_versions); + + for (i = 0; i < sizeof(vers_2_h3_alnps) / sizeof(vers_2_h3_alnps[0]); ++i) + if (versions == vers_2_h3_alnps[i].versions) + return vers_2_h3_alnps[i].h3_alpns; + + assert(0); + return vers_2_h3_alnps[0].h3_alpns; +} +C_CODE + + +print OUT <<'C_CODE'; + +enum lsquic_version +lsquic_alpn2ver (const char *alpn, size_t len) +{ + static const struct el { + size_t len; + char alpn[10]; + enum lsquic_version version; + } map[] = { +C_CODE + +for ($i = 0; $i < @all_alpns; ++$i) { + print OUT " {sizeof(\"$all_alpns[$i]\")-1,\"$all_alpns[$i]\", $all_versions[$i]},\n"; +} + +print OUT <<'C_CODE'; + }; + const struct el *el; + + if (alpn) + for (el = map; el < map + sizeof(map) / sizeof(map[0]); ++el) + if (el->len == len && 0 == strncmp(el->alpn, alpn, len)) + return el->version; + + return -1; +} +C_CODE + +close OUT; diff --git a/external/lsquic/src/liblsquic/ls-qpack/.appveyor.yml b/external/lsquic/src/liblsquic/ls-qpack/.appveyor.yml new file mode 100644 index 0000000..e2bf22a --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/.appveyor.yml @@ -0,0 +1,46 @@ +version: 1.0.{build} + +image: Visual Studio 2017 + +cache: +- c:\tools\vcpkg\installed + +environment: + matrix: + - job_name: "Internal xxhash" + LSQPACK_XXH: ON + XXH_CMAKE: UNUSED + - job_name: "External xxhash (CMake)" + LSQPACK_XXH: OFF + XXH_CMAKE: REQUIRE + - job_name: "External xxhash (pkgconfig)" + LSQPACK_XXH: OFF + XXH_CMAKE: DISABLE + +before_build: + - git -C c:\tools\vcpkg\ fetch + - git -C c:\tools\vcpkg\ checkout 2024.08.23 + - c:\tools\vcpkg\bootstrap-vcpkg.bat + - vcpkg x-set-installed getopt:x64-windows xxhash:x64-windows pkgconf:x64-windows + - cmake . + -DCMAKE_TOOLCHAIN_FILE=c:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake + -DVCPKG_INSTALLED_DIR=c:/tools/vcpkg/installed + -DVCPKG_TARGET_TRIPLET=x64-windows + -DPKG_CONFIG_EXECUTABLE=c:/tools/vcpkg/installed/x64-windows/tools/pkgconf/pkgconf.exe + -DCMAKE_BUILD_TYPE=Debug + -DCMAKE_GENERATOR_PLATFORM=x64 + -DLSQPACK_TESTS=ON + -DLSQPACK_XXH=%LSQPACK_XXH% + -DCMAKE_%XXH_CMAKE%_FIND_PACKAGE_xxHash=ON + -DGETOPT_INCLUDE_DIR=c:/tools/vcpkg/installed/x64-windows/include + -DGETOPT_LIB=c:/tools/vcpkg/installed/x64-windows/lib/getopt.lib + +build_script: + - cmake --build . + +before_test: + - set PATH=%PATH%;c:\projects\ls-qpack\bin\Debug + +test_script: + - dir + - msbuild RUN_TESTS.vcxproj diff --git a/external/lsquic/src/liblsquic/ls-qpack/.cirrus.yml b/external/lsquic/src/liblsquic/ls-qpack/.cirrus.yml new file mode 100644 index 0000000..bb66d70 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/.cirrus.yml @@ -0,0 +1,6 @@ +freebsd_instance: + image: freebsd-13-3-release-amd64 + +task: + install_script: pkg install -y cmake bash perl5 p5-PkgConfig-LibPkgConf devel/xxhash + script: cmake -DLSQPACK_TESTS=ON -DLSQPACK_XXH=OFF . && make && make test diff --git a/external/lsquic/src/liblsquic/ls-qpack/.travis.yml b/external/lsquic/src/liblsquic/ls-qpack/.travis.yml new file mode 100644 index 0000000..8dcea9f --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/.travis.yml @@ -0,0 +1,32 @@ +language: c +sudo: false +addons: + apt: +matrix: + include: + - name: Linux (gcc-8) + os: linux + dist: xenial + compiler: gcc-8 + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: g++-8 + - name: Linux (clang) + os: linux + dist: xenial + compiler: clang + - name: macOS (xcode) + os: osx + - name: macOS (xcode 10.1) + os: osx + image: xcode10.1 +before_install: + - $CC --version + - cmake --version +before_script: + - cmake -DLSQPACK_TESTS=ON . +script: + - make + - make test diff --git a/external/lsquic/src/liblsquic/ls-qpack/CMakeLists.txt b/external/lsquic/src/liblsquic/ls-qpack/CMakeLists.txt new file mode 100644 index 0000000..1163249 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/CMakeLists.txt @@ -0,0 +1,160 @@ +# The following variable can be defined on the command line: +# +# BUILD_SHARED_LIBS +# +# The following environment variables will be taken into account when running +# cmake for the first time: +# +# CFLAGS +# LDFLAGS + +cmake_minimum_required(VERSION 3.1) +project(ls-qpack + LANGUAGES C + HOMEPAGE_URL "https://github.com/litespeedtech/ls-qpack" + DESCRIPTION "QPACK compression library for use with HTTP/3" + VERSION 2.6.1) + +option(LSQPACK_TESTS "Build tests") +option(LSQPACK_BIN "Build binaries" ON) +option(LSQPACK_XXH "Include XXH" ON) +option(BUILD_SHARED_LIBS OFF) + +# Use `cmake -DBUILD_SHARED_LIBS=OFF` to build a static library. +add_library(ls-qpack "") +add_library(ls-qpack::ls-qpack ALIAS ls-qpack) +set_target_properties(ls-qpack PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION_MAJOR}) +target_include_directories(ls-qpack PUBLIC + $ + $ +) +target_sources(ls-qpack PRIVATE lsqpack.c) + +if(LSQPACK_XXH) + target_include_directories(ls-qpack PRIVATE deps/xxhash/) + target_sources(ls-qpack PRIVATE deps/xxhash/xxhash.c) + set(LSQPACK_DEPENDS "") +else() + find_package(xxHash CONFIG) + if(NOT xxHash_FOUND) + find_package(PkgConfig REQUIRED) + pkg_check_modules(LS_QPACK_XXH REQUIRED IMPORTED_TARGET libxxhash GLOBAL) + add_library(xxHash::xxhash ALIAS PkgConfig::LS_QPACK_XXH) + endif() + target_link_libraries(ls-qpack PRIVATE xxHash::xxhash) + set(LSQPACK_DEPENDS "libxxhash") +endif() + +if(WIN32 OR EMSCRIPTEN) + target_include_directories(ls-qpack PUBLIC + $ + $ + ) +endif() + +if(MSVC) + target_compile_options(ls-qpack PRIVATE + /Wall + /wd4100 # unreffed parameter + /wd4200 # zero-sized array + # Apparently this C99 construct is not supported properly by VS: + # https://stackoverflow.com/questions/1064930/struct-initializer-typedef-with-visual-studio + /wd4204 # non-constant aggregate initializer + /wd4255 # no function prototype (getopt) + /wd4334 # result of 32-bit shift implicitly converted to 64 bits + /wd4820 # padding + /wd4668 # undefined macro + /wd4710 # not inlined by default + /wd4996 # unsafe function + /wd4061 # enum is not explicitly handled by a case + /wd5045 # Compiler will insert Spectre mitigation for memory load + ) +else() + target_compile_options(ls-qpack PRIVATE + -Wall + -Wextra + -Wno-unused-parameter + -fno-omit-frame-pointer + ) +endif() + +IF (CMAKE_SYSTEM_NAME STREQUAL Windows) + IF (LSQPACK_TESTS OR LSQPACK_BIN) + FIND_PATH(GETOPT_INCLUDE_DIR NAMES getopt.h) + IF (GETOPT_INCLUDE_DIR) + INCLUDE_DIRECTORIES(${GETOPT_INCLUDE_DIR}) + ELSE() + MESSAGE(FATAL_ERROR "getopt.h was not found") + ENDIF() + FIND_LIBRARY(GETOPT_LIB getopt) + IF(GETOPT_LIB) + MESSAGE(STATUS "Found getopt: ${GETOPT_LIB}") + ELSE() + MESSAGE(STATUS "getopt not found") + ENDIF() + ENDIF() +ENDIF() + +IF(DEFINED LSXPACK_MAX_STRLEN) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLSXPACK_MAX_STRLEN=${LSXPACK_MAX_STRLEN}") +ENDIF() + +IF (CMAKE_BUILD_TYPE STREQUAL MinSizeRel) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLS_QPACK_USE_LARGE_TABLES=0") +ENDIF() + +IF(LSQPACK_TESTS) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLSQPACK_DEVEL_MODE=1") +ENDIF() + +INCLUDE(CheckCCompilerFlag) +CHECK_C_COMPILER_FLAG(-Wno-implicit-fallthrough HAS_NO_IMPLICIT_FALLTHROUGH) +IF (HAS_NO_IMPLICIT_FALLTHROUGH) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-implicit-fallthrough") +ENDIF() + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} $ENV{EXTRA_CFLAGS}") +MESSAGE(STATUS "Compiler flags: ${CMAKE_C_FLAGS}") + +if(LSQPACK_TESTS) + enable_testing() + add_subdirectory(test) +endif() + +if(LSQPACK_BIN) + add_subdirectory(bin) +endif() + +include(GNUInstallDirs) +configure_file(lsqpack.pc.in lsqpack.pc @ONLY) +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/lsqpack.pc" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + +configure_file(ls-qpack-config.cmake.in ls-qpack-config.cmake @ONLY) +install(TARGETS ls-qpack EXPORT ls-qpack-config + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ls-qpack-config.cmake" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ls-qpack) +install( + EXPORT ls-qpack-config + FILE ls-qpack-targets.cmake + NAMESPACE ls-qpack:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ls-qpack +) +install(FILES lsqpack.h lsxpack_header.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + +if(LSQPACK_BIN) + install(TARGETS + encode-int + fuzz-decode + interop-decode + interop-encode + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +endif() + +if(WIN32 OR EMSCRIPTEN) + install(DIRECTORY wincompat/sys DESTINATION include) +endif() diff --git a/external/lsquic/src/liblsquic/ls-qpack/LICENSE b/external/lsquic/src/liblsquic/ls-qpack/LICENSE new file mode 100644 index 0000000..4b3c1fd --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 - 2022 LiteSpeed Technologies Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/external/lsquic/src/liblsquic/ls-qpack/README.md b/external/lsquic/src/liblsquic/ls-qpack/README.md new file mode 100644 index 0000000..23bda58 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/README.md @@ -0,0 +1,69 @@ +[![Build Status](https://travis-ci.org/litespeedtech/ls-qpack.svg?branch=master)](https://travis-ci.org/litespeedtech/ls-qpack) +[![Build status](https://ci.appveyor.com/api/projects/status/kat31lt42ds0rmom?svg=true)](https://ci.appveyor.com/project/litespeedtech/ls-qpack) +[![Build Status](https://api.cirrus-ci.com/github/litespeedtech/ls-qpack.svg)](https://cirrus-ci.com/github/litespeedtech/ls-qpack) + +# ls-qpack +QPACK compression library for use with HTTP/3 + +## Introduction + +QPACK is the compression mechanism used by +[HTTP/3](https://en.wikipedia.org/wiki/HTTP/3) to compress HTTP headers. +It is in the process of being standardazed by the QUIC Working Group. The +[QPACK Internet-Draft](https://tools.ietf.org/html/draft-ietf-quic-qpack-11) +is has been stable for some time and we don't expect functional changes to +it before the final RFC is released. + +## Functionality + +ls-qpack is a full-featured, tested, and fast QPACK library. The QPACK encoder +produces excellent compression results based on an [innovative mnemonic technique](https://blog.litespeedtech.com/2021/04/05/qpack-mnemonic-technique/). It boasts the fastest Huffman +[encoder](https://blog.litespeedtech.com/2019/10/03/fast-huffman-encoder/) and +[decoder](https://blog.litespeedtech.com/2019/09/16/fast-huffman-decoder/). + +The library is production quality. It is used in +[OpenLiteSpeed](https://openlitespeed.org/), +LiteSpeed [Web Server](https://www.litespeedtech.com/products#lsws), +and LiteSpeed [Web ADC](https://www.litespeedtech.com/products#wadc). + +The library is robust: +1. The encoder does not assume anything about usual HTTP headers such as `Server` + or `User-Agent`. Instead, it uses its mnemonic compression technique to + achieve good compression results for any input. +1. The decoder uses modulo arithmetic to track dynamic table insertions. This is + in contrast to all other QPACK implementations, which use an integer counter, + meaning that at some point, the decoder will break. +1. The decoder processes input in streaming fashion. The caller does not have to + buffer the contents of HTTP/3 `HEADERS` frame. Instead, the decoder can be + supplied input byte-by-byte. + +## Other Languages + +The ls-qpack library is implemented in vanilla C99. It makes it a good candidate +for wrapping into a library for a higher-level language. As of this writing, we +know of the following wrappers: +- Go: [ls-qpack-go](https://github.com/mpiraux/ls-qpack-go) +- Python: [pylsqpack](https://github.com/aiortc/pylsqpack) +- Rust: [ls-qpack-rs](https://github.com/BiagioFesta/ls-qpack-rs) +- TypeScript: [quicker](https://github.com/rmarx/quicker/tree/draft-20/lib/ls-qpack) +- Ruby: [lsqpack-ruby](https://github.com/unasuke/lsqpack-ruby) + +## Versioning + +Before the QPACK RFC is released, the three parts of the version are: +- MAJOR: set to zero; +- MINOR: set to the number of QPACK Internet-Draft the lirbary supports; and +- PATCH: set to the patch number + +Once the RFC is released, MAJOR will be set to 1 and the version will follow +the usual MAJOR.MINOR.PATCH pattern. + +## API + +The API is documented in the header file, [lsqpack.h](lsqpack.h). +One example how it is used in real code can be seen in +[lsquic](https://github.com/litespeedtech/lsquic), a QUIC and HTTP/3 library +developed by LiteSpeed Technologies. + +A different API, without the use of `struct lsxpack_header`, is available +on branch-v1. diff --git a/external/lsquic/src/liblsquic/ls-qpack/bin/CMakeLists.txt b/external/lsquic/src/liblsquic/ls-qpack/bin/CMakeLists.txt new file mode 100644 index 0000000..4663c43 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/bin/CMakeLists.txt @@ -0,0 +1,26 @@ +function(lsqpack_add_executable TARGET) + add_executable(${TARGET} "") + target_link_libraries(${TARGET} PRIVATE ls-qpack) + + if(LSQPACK_XXH) + target_sources(${TARGET} PRIVATE ${TARGET}.c ../deps/xxhash/xxhash.c) + target_include_directories(${TARGET} PRIVATE ../deps/xxhash) + else() + target_sources(${TARGET} PRIVATE ${TARGET}.c) + target_link_libraries(${TARGET} PUBLIC xxHash::xxhash) + endif() + + if(WIN32) + target_include_directories(${TARGET} PRIVATE ../wincompat) + target_link_libraries(${TARGET} PRIVATE ${GETOPT_LIB}) + else() + target_link_libraries(${TARGET} PRIVATE m) + endif() +endfunction() + +lsqpack_add_executable(interop-encode) +lsqpack_add_executable(interop-decode) +lsqpack_add_executable(encode-int) +lsqpack_add_executable(fuzz-decode) + +target_include_directories(interop-decode PRIVATE ../test) diff --git a/external/lsquic/src/liblsquic/ls-qpack/bin/encode-int.c b/external/lsquic/src/liblsquic/ls-qpack/bin/encode-int.c new file mode 100644 index 0000000..6c4d94c --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/bin/encode-int.c @@ -0,0 +1,87 @@ +/* encode-int: encode an integer into HPACK varint. */ + +#include +#include +#include +#include + + +static unsigned char * +enc_int (unsigned char *dst, unsigned char *const end, uint64_t value, + unsigned prefix_bits) +{ + unsigned char *const dst_orig = dst; + + /* This function assumes that at least one byte is available */ + assert(dst < end); + if (value < (1u << prefix_bits) - 1) + *dst++ |= value; + else + { + *dst++ |= (1 << prefix_bits) - 1; + value -= (1 << prefix_bits) - 1; + while (value >= 128) + { + if (dst < end) + { + *dst++ = 0x80 | (unsigned char) value; + value >>= 7; + } + else + return dst_orig; + } + if (dst < end) + *dst++ = (unsigned char) value; + else + return dst_orig; + } + return dst; +} + +static unsigned +lsqpack_val2len (uint64_t value, unsigned prefix_bits) +{ + uint64_t mask = (1ULL << prefix_bits) - 1; + return 1 + + (value >= mask ) + + (value >= ((1ULL << 7) + mask)) + + (value >= ((1ULL << 14) + mask)) + + (value >= ((1ULL << 21) + mask)) + + (value >= ((1ULL << 28) + mask)) + + (value >= ((1ULL << 35) + mask)) + + (value >= ((1ULL << 42) + mask)) + + (value >= ((1ULL << 49) + mask)) + + (value >= ((1ULL << 56) + mask)) + + (value >= ((1ULL << 63) + mask)) + ; +} + +int +main (int argc, char **argv) +{ + unsigned long long val; + unsigned char *p; + unsigned prefix_bits; + unsigned char buf[20]; + + if (argc != 3) + { + fprintf(stderr, "Usage: %s prefix_bits value\n", argv[0]); + exit(EXIT_FAILURE); + } + + prefix_bits = atoi(argv[1]); + val = strtoull(argv[2], NULL, 10); + + fprintf(stderr, "expected size: %u\n", lsqpack_val2len(val, prefix_bits)); + buf[0] = 0; + p = enc_int(buf, buf + sizeof(buf), val, prefix_bits); + + if (p > buf) + { + fwrite(buf, 1, p - buf, stdout); + exit(EXIT_SUCCESS); + } + else + exit(EXIT_FAILURE); +} diff --git a/external/lsquic/src/liblsquic/ls-qpack/bin/fuzz-decode.c b/external/lsquic/src/liblsquic/ls-qpack/bin/fuzz-decode.c new file mode 100644 index 0000000..2c50655 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/bin/fuzz-decode.c @@ -0,0 +1,317 @@ +/* + * fuzz-decode: special program for fuzzing. It still reads encoded + * files just like interop-decode, but tries to do it faster and + * forgoes several advanced options. + */ + +#ifdef WIN32 + +#include + +int +main (int argc, char **argv) +{ + fprintf(stderr, "%s is not supported on Windows: need mmap(2)\n", argv[0]); + return 1; +} + +#else + +#include + +#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) +#include +#define bswap_16 bswap16 +#define bswap_32 bswap32 +#define bswap_64 bswap64 +#elif defined(__OpenBSD__) +#define bswap_16 swap16 +#define bswap_32 swap32 +#define bswap_64 swap64 +#elif defined(__APPLE__) +#include +#define bswap_16 OSSwapInt16 +#define bswap_32 OSSwapInt32 +#define bswap_64 OSSwapInt64 +#elif defined(WIN32) +#define bswap_16 _byteswap_ushort +#define bswap_32 _byteswap_ulong +#define bswap_64 _byteswap_uint64 +#else +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lsqpack.h" +#include "lsxpack_header.h" + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + +static void +usage (const char *name) +{ + fprintf(stderr, +"Usage: %s [options] [-i input] [-o output]\n" +"\n" +"Options:\n" +" -i FILE Input file.\n" +" -f FILE Fuzz file: this is the stuff the fuzzer will change.\n" +" -s NUMBER Maximum number of risked streams. Defaults to %u.\n" +" -t NUMBER Dynamic table size. Defaults to %u.\n" +"\n" +" -h Print this help screen and exit\n" + , name, LSQPACK_DEF_MAX_RISKED_STREAMS, LSQPACK_DEF_DYN_TABLE_SIZE); +} + + +static void +hblock_unblocked (void *buf_p) +{ + exit(1); +} + + +struct header +{ + LIST_ENTRY(header) next_header; + struct lsxpack_header xhdr; + char buf[0x10000]; +}; + + +LIST_HEAD(, header) s_headers; + + +static struct lsxpack_header * +prepare_decode (void *hblock_ctx, struct lsxpack_header *xhdr, size_t space) +{ + struct header *header; + + if (xhdr) + { + /* If the original buffer is not enough, we don't reallocate */ + header = (struct header *) ((char *) xhdr + - offsetof(struct header, xhdr)); + LIST_REMOVE(header, next_header); + free(header); + return NULL; + } + else if (space <= LSXPACK_MAX_STRLEN) + { + header = malloc(sizeof(*header)); + if (!header) + return NULL; + LIST_INSERT_HEAD(&s_headers, header, next_header); + lsxpack_header_prepare_decode(&header->xhdr, header->buf, + 0, sizeof(header->buf)); + return &header->xhdr; + } + else + return NULL; +} + + +static int +process_header (void *hblock_ctx, struct lsxpack_header *xhdr) +{ + struct header *header; + + header = (struct header *) ((char *) xhdr - offsetof(struct header, xhdr)); + LIST_REMOVE(header, next_header); + free(header); + return 0; +} + + +static const struct lsqpack_dec_hset_if hset_if = { + .dhi_unblocked = hblock_unblocked, + .dhi_prepare_decode = prepare_decode, + .dhi_process_header = process_header, +}; + + +int +main (int argc, char **argv) +{ + int in_fd = -1, fuzz_fd = STDIN_FILENO; + int opt; + unsigned dyn_table_size = LSQPACK_DEF_DYN_TABLE_SIZE, + max_risked_streams = LSQPACK_DEF_MAX_RISKED_STREAMS; + struct lsqpack_dec decoder; + const unsigned char *p, *end; + unsigned char *begin; + struct stat st; + uint64_t stream_id; + uint32_t size; + int r; + struct header *header; + + while (-1 != (opt = getopt(argc, argv, "i:f:s:t:h"))) + { + switch (opt) + { + case 'i': + in_fd = open(optarg, O_RDONLY); + if (in_fd < 0) + { + fprintf(stderr, "cannot open `%s' for reading: %s\n", + optarg, strerror(errno)); + exit(EXIT_FAILURE); + } + break; + case 'f': + fuzz_fd = open(optarg, O_RDONLY); + if (fuzz_fd < 0) + { + fprintf(stderr, "cannot open `%s' for reading: %s\n", + optarg, strerror(errno)); + exit(EXIT_FAILURE); + } + break; + case 's': + max_risked_streams = atoi(optarg); + break; + case 't': + dyn_table_size = atoi(optarg); + break; + case 'h': + usage(argv[0]); + exit(EXIT_SUCCESS); + default: + exit(EXIT_FAILURE); + } + } + + LIST_INIT(&s_headers); + lsqpack_dec_init(&decoder, NULL, dyn_table_size, max_risked_streams, + &hset_if, 0 /* TODO: add command-line option */); + + if (in_fd < 0) + { + fprintf(stderr, "Specify input using `-i' option\n"); + exit(1); + } + + if (0 != fstat(in_fd, &st)) + { + perror("fstat"); + exit(1); + } + + begin = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, in_fd, 0); + if (!begin) + { + perror("mmap"); + exit(1); + } + + p = begin; + end = begin + st.st_size; + while (p + sizeof(stream_id) + sizeof(size) < end) + { + stream_id = * (uint64_t *) p; + p += sizeof(uint64_t); + size = * (uint32_t *) p; + p += sizeof(uint32_t); +#if __BYTE_ORDER == __LITTLE_ENDIAN + stream_id = bswap_64(stream_id); + size = bswap_32(size); +#endif + if (p + size > end) + { + fprintf(stderr, "truncated input at offset %u", + (unsigned) (p - begin)); + abort(); + } + if (stream_id == 0) + { + r = lsqpack_dec_enc_in(&decoder, p, size); + if (r != 0) + abort(); + } + else + { + const unsigned char *cur = p; + enum lsqpack_read_header_status rhs; + rhs = lsqpack_dec_header_in(&decoder, NULL, stream_id, + size, &cur, size, NULL, NULL); + if (rhs != LQRHS_DONE || (uint32_t) (cur - p) != size) + abort(); + } + p += size; + } + + munmap(begin, st.st_size); + (void) close(in_fd); + + /* Now let's read the fuzzed part */ + + if (0 != fstat(fuzz_fd, &st)) + { + perror("fstat"); + exit(1); + } + + begin = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fuzz_fd, 0); + if (!begin) + { + perror("mmap"); + exit(1); + } + + p = begin; + end = begin + st.st_size; + while (p + sizeof(stream_id) + sizeof(size) < end) + { + stream_id = * (uint64_t *) p; + p += sizeof(uint64_t); + size = * (uint32_t *) p; + p += sizeof(uint32_t); +#if __BYTE_ORDER == __LITTLE_ENDIAN + stream_id = bswap_64(stream_id); + size = bswap_32(size); +#endif + if (stream_id == 0) + { + r = lsqpack_dec_enc_in(&decoder, p, MIN(size, (uint32_t) (end - p))); + (void) r; + } + else + { + const unsigned char *cur = p; + enum lsqpack_read_header_status rhs; + size = MIN(size, (uint32_t) (end - p)); + rhs = lsqpack_dec_header_in(&decoder, NULL, stream_id, + size, &cur, size, NULL, NULL); + (void) rhs; + } + break; + } + + munmap(begin, st.st_size); + (void) close(fuzz_fd); + + lsqpack_dec_cleanup(&decoder); + while (!LIST_EMPTY(&s_headers)) + { + header = LIST_FIRST(&s_headers); + LIST_REMOVE(header, next_header); + free(header); + } + + exit(0); +} + +#endif diff --git a/external/lsquic/src/liblsquic/ls-qpack/bin/interop-decode.c b/external/lsquic/src/liblsquic/ls-qpack/bin/interop-decode.c new file mode 100644 index 0000000..68cf00b --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/bin/interop-decode.c @@ -0,0 +1,728 @@ +/* + * QPACK Interop -- decode from intermediate format and output QIF + * + * https://github.com/quicwg/base-drafts/wiki/QPACK-Offline-Interop + */ + +#include + +#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) +#include +#define bswap_16 bswap16 +#define bswap_32 bswap32 +#define bswap_64 bswap64 +#elif defined(__OpenBSD__) +#define bswap_16 swap16 +#define bswap_32 swap32 +#define bswap_64 swap64 +#elif defined(__APPLE__) +#include +#define bswap_16 OSSwapInt16 +#define bswap_32 OSSwapInt32 +#define bswap_64 OSSwapInt64 +#elif defined(WIN32) +#define bswap_16 _byteswap_ushort +#define bswap_32 _byteswap_ulong +#define bswap_64 _byteswap_uint64 +#else +#include +#endif + +#include +#include +#include +#include +#include +#ifdef WIN32 +#include +#else +#include +#endif +#include +#include +#include +#include + +#include "lsqpack.h" +#include "lsxpack_header.h" +#include "xxhash.h" +#ifndef DEBUG +#include "lsqpack-test.h" +#endif + +#ifndef NDEBUG +struct static_table_entry +{ + const char *name; + const char *val; + unsigned name_len; + unsigned val_len; +}; + +/* [draft-ietf-quic-qpack-03] Appendix A */ +static const struct static_table_entry static_table[] = +{ + {":authority", "", 10, 0,}, + {":path", "/", 5, 1,}, + {"age", "0", 3, 1,}, + {"content-disposition", "", 19, 0,}, + {"content-length", "0", 14, 1,}, + {"cookie", "", 6, 0,}, + {"date", "", 4, 0,}, + {"etag", "", 4, 0,}, + {"if-modified-since", "", 17, 0,}, + {"if-none-match", "", 13, 0,}, + {"last-modified", "", 13, 0,}, + {"link", "", 4, 0,}, + {"location", "", 8, 0,}, + {"referer", "", 7, 0,}, + {"set-cookie", "", 10, 0,}, + {":method", "CONNECT", 7, 7,}, + {":method", "DELETE", 7, 6,}, + {":method", "GET", 7, 3,}, + {":method", "HEAD", 7, 4,}, + {":method", "OPTIONS", 7, 7,}, + {":method", "POST", 7, 4,}, + {":method", "PUT", 7, 3,}, + {":scheme", "http", 7, 4,}, + {":scheme", "https", 7, 5,}, + {":status", "103", 7, 3,}, + {":status", "200", 7, 3,}, + {":status", "304", 7, 3,}, + {":status", "404", 7, 3,}, + {":status", "503", 7, 3,}, + {"accept", "*/*", 6, 3,}, + {"accept", "application/dns-message", 6, 23,}, + {"accept-encoding", "gzip, deflate, br", 15, 17,}, + {"accept-ranges", "bytes", 13, 5,}, + {"access-control-allow-headers", "cache-control", 28, 13,}, + {"access-control-allow-headers", "content-type", 28, 12,}, + {"access-control-allow-origin", "*", 27, 1,}, + {"cache-control", "max-age=0", 13, 9,}, + {"cache-control", "max-age=2592000", 13, 15,}, + {"cache-control", "max-age=604800", 13, 14,}, + {"cache-control", "no-cache", 13, 8,}, + {"cache-control", "no-store", 13, 8,}, + {"cache-control", "public, max-age=31536000", 13, 24,}, + {"content-encoding", "br", 16, 2,}, + {"content-encoding", "gzip", 16, 4,}, + {"content-type", "application/dns-message", 12, 23,}, + {"content-type", "application/javascript", 12, 22,}, + {"content-type", "application/json", 12, 16,}, + {"content-type", "application/x-www-form-urlencoded", 12, 33,}, + {"content-type", "image/gif", 12, 9,}, + {"content-type", "image/jpeg", 12, 10,}, + {"content-type", "image/png", 12, 9,}, + {"content-type", "text/css", 12, 8,}, + {"content-type", "text/html; charset=utf-8", 12, 24,}, + {"content-type", "text/plain", 12, 10,}, + {"content-type", "text/plain;charset=utf-8", 12, 24,}, + {"range", "bytes=0-", 5, 8,}, + {"strict-transport-security", "max-age=31536000", 25, 16,}, + {"strict-transport-security", "max-age=31536000; includesubdomains", + 25, 35,}, + {"strict-transport-security", + "max-age=31536000; includesubdomains; preload", 25, 44,}, + {"vary", "accept-encoding", 4, 15,}, + {"vary", "origin", 4, 6,}, + {"x-content-type-options", "nosniff", 22, 7,}, + {"x-xss-protection", "1; mode=block", 16, 13,}, + {":status", "100", 7, 3,}, + {":status", "204", 7, 3,}, + {":status", "206", 7, 3,}, + {":status", "302", 7, 3,}, + {":status", "400", 7, 3,}, + {":status", "403", 7, 3,}, + {":status", "421", 7, 3,}, + {":status", "425", 7, 3,}, + {":status", "500", 7, 3,}, + {"accept-language", "", 15, 0,}, + {"access-control-allow-credentials", "FALSE", 32, 5,}, + {"access-control-allow-credentials", "TRUE", 32, 4,}, + {"access-control-allow-headers", "*", 28, 1,}, + {"access-control-allow-methods", "get", 28, 3,}, + {"access-control-allow-methods", "get, post, options", 28, 18,}, + {"access-control-allow-methods", "options", 28, 7,}, + {"access-control-expose-headers", "content-length", 29, 14,}, + {"access-control-request-headers", "content-type", 30, 12,}, + {"access-control-request-method", "get", 29, 3,}, + {"access-control-request-method", "post", 29, 4,}, + {"alt-svc", "clear", 7, 5,}, + {"authorization", "", 13, 0,}, + {"content-security-policy", + "script-src 'none'; object-src 'none'; base-uri 'none'", 23, 53,}, + {"early-data", "1", 10, 1,}, + {"expect-ct", "", 9, 0,}, + {"forwarded", "", 9, 0,}, + {"if-range", "", 8, 0,}, + {"origin", "", 6, 0,}, + {"purpose", "prefetch", 7, 8,}, + {"server", "", 6, 0,}, + {"timing-allow-origin", "*", 19, 1,}, + {"upgrade-insecure-requests", "1", 25, 1,}, + {"user-agent", "", 10, 0,}, + {"x-forwarded-for", "", 15, 0,}, + {"x-frame-options", "deny", 15, 4,}, + {"x-frame-options", "sameorigin", 15, 10,}, +}; +#endif + +static size_t s_max_read_size = SIZE_MAX; + +static int s_verbose; +static enum lsqpack_dec_opts s_dec_opts = LSQPACK_DEC_OPT_HASH_NAME + | LSQPACK_DEC_OPT_HASH_NAMEVAL; + +static int s_check_unset_qpack_idx = 1; + +static FILE *s_out; + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + +static void +usage (const char *name) +{ + fprintf(stderr, +"Usage: %s [options] [-i input] [-o output]\n" +"\n" +"Options:\n" +" -i FILE Input file. If not specified or set to `-', the input is\n" +" read from stdin.\n" +" -o FILE Output file. If not spepcified or set to `-', the output\n" +" is written to stdout.\n" +" -r FILE Recipe file. Without a recipe, buffers are processed in\n" +" order.\n" +" -s NUMBER Maximum number of risked streams. Defaults to %u.\n" +" -t NUMBER Dynamic table size. Defaults to %u.\n" +" -m NUMBER Maximum read size. Defaults to %zu.\n" +" -H [0|1] Use HTTP/1.x mode and test each header (defaults to `off').\n" +" -v Verbose: print headers and table state to stderr.\n" +" -S Don't swap encoder stream and header blocks.\n" +" -Q Don't check static table when LSXPACK_QPACK_IDX is not set.\n" +"\n" +" -h Print this help screen and exit\n" + , name, LSQPACK_DEF_MAX_RISKED_STREAMS, LSQPACK_DEF_DYN_TABLE_SIZE, SIZE_MAX); +} + + +struct buf +{ + TAILQ_ENTRY(buf) next_buf; + struct lsqpack_dec *dec; + uint64_t stream_id; /* Zero means encoder stream */ + size_t size; + size_t off; + size_t file_off; + + /* A single header name/value pair is stored in xhdr_buf. When the + * header is done, the whole buffer can be used again for the next + * header. + */ + struct lsxpack_header xhdr; + unsigned xhdr_off; /* Used in xhdr_buf */ + unsigned xhdr_nalloc; /* Number of bytes allocated */ /* TODO: use it */ + + /* Output is written to out_buf out header at a time and the printed all + * at once. This logic is not very important and we use a reasonably + * large fixed-size buffer. + */ + unsigned out_off; + char out_buf[0x1000]; + + unsigned char buf[0]; +}; + + +TAILQ_HEAD(, buf) bufs = TAILQ_HEAD_INITIALIZER(bufs); + +static void +hblock_unblocked (void *buf_p) +{ + struct buf *buf = buf_p; + TAILQ_INSERT_HEAD(&bufs, buf, next_buf); +} + + +static struct lsxpack_header * +prepare_decode (void *hblock_ctx, struct lsxpack_header *xhdr, size_t space) +{ + struct buf *const buf = hblock_ctx; + char *new; + + if (space > LSXPACK_MAX_STRLEN) + return NULL; + + if (xhdr) + { + assert(xhdr == &buf->xhdr); + assert(space > xhdr->val_len); + new = realloc(xhdr->buf, space); + if (!new) + return NULL; + xhdr->buf = new; + xhdr->val_len = space; + return xhdr; + } + else + { + xhdr = &buf->xhdr; + new = malloc(space); + if (!new) + return NULL; + lsxpack_header_prepare_decode(xhdr, new, 0, space); + return xhdr; + } +} + + +static int +process_header (void *hblock_ctx, struct lsxpack_header *xhdr) +{ + struct buf *const buf = hblock_ctx; + const char *p; + const uint32_t seed = 39378473; + uint32_t hash, name_hash; + int nw; + + if (s_dec_opts & LSQPACK_DEC_OPT_HTTP1X) + { + p = lsxpack_header_get_name(xhdr) + xhdr->name_len; + assert(0 == memcmp(p, ": ", 2)); + p += 2 + xhdr->val_len; + assert(0 == memcmp(p, "\r\n", 2)); + assert(xhdr->dec_overhead == 4); + } + else + assert(xhdr->dec_overhead == 0); + + if (s_dec_opts & LSQPACK_DEC_OPT_HASH_NAME) + { + assert(xhdr->flags & LSXPACK_NAME_HASH); + hash = XXH32(lsxpack_header_get_name(xhdr), xhdr->name_len, seed); + assert(hash == xhdr->name_hash); + } + + if (s_dec_opts & LSQPACK_DEC_OPT_HASH_NAME) + assert(xhdr->flags & LSXPACK_NAME_HASH); + + if (xhdr->flags & LSXPACK_NAME_HASH) + { + name_hash = XXH32(lsxpack_header_get_name(xhdr), xhdr->name_len, seed); + assert(hash == xhdr->name_hash); + } +#ifndef NDEBUG + else if (!(xhdr->flags & LSXPACK_QPACK_IDX)) + /* Calculate for upcoming "not in static table check" */ + name_hash = XXH32(lsxpack_header_get_name(xhdr), xhdr->name_len, seed); +#endif + + if (s_dec_opts & LSQPACK_DEC_OPT_HASH_NAMEVAL) + { + /* This is not required by the API, but internally, if the library + * calculates nameval hash, it should also set the name hash. + */ + assert(xhdr->flags & LSXPACK_NAME_HASH); + assert(xhdr->flags & LSXPACK_NAMEVAL_HASH); + } + + if (xhdr->flags & LSXPACK_NAMEVAL_HASH) + { + hash = XXH32(lsxpack_header_get_name(xhdr), xhdr->name_len, seed); + hash = XXH32(lsxpack_header_get_value(xhdr), xhdr->val_len, hash); + assert(hash == xhdr->nameval_hash); + } + +#ifndef NDEBUG + if (xhdr->flags & LSXPACK_QPACK_IDX) + { + assert(xhdr->qpack_index < + sizeof(static_table) / sizeof(static_table[0])); + assert(static_table[xhdr->qpack_index].name_len == xhdr->name_len); + assert(0 == memcmp(lsxpack_header_get_name(xhdr), + static_table[xhdr->qpack_index].name, xhdr->name_len)); + } + else if (s_check_unset_qpack_idx) + { + /* The decoder does best effort: if the encoder did not use the + * static table, QPACK index is not set. However, since we are + * testing our decoder, we assume that the encoder always uses + * the static table when it can. + */ + int idx = lsqpack_find_in_static_headers(name_hash, + lsxpack_header_get_name(xhdr), xhdr->name_len); + assert(idx < 0); + } +#endif + + nw = snprintf(buf->out_buf + buf->out_off, + sizeof(buf->out_buf) - buf->out_off, + "%.*s\t%.*s\n", + (int) xhdr->name_len, lsxpack_header_get_name(xhdr), + (int) xhdr->val_len, lsxpack_header_get_value(xhdr)); + free(buf->xhdr.buf); + memset(&buf->xhdr, 0, sizeof(buf->xhdr)); + if (nw > 0 && (size_t) nw <= sizeof(buf->out_buf) - buf->out_off) + { + buf->out_off += (unsigned) nw; + return 0; + } + else + { + fprintf(stderr, "header list too long\n"); + return -1; + } +} + + +static const struct lsqpack_dec_hset_if hset_if = { + .dhi_unblocked = hblock_unblocked, + .dhi_prepare_decode = prepare_decode, + .dhi_process_header = process_header, +}; + + +static void +header_block_done (const struct buf *buf) +{ + fprintf(s_out, "# stream %"PRIu64"\n", buf->stream_id); + fprintf(s_out, "# (stream ID above is used for sorting)\n"); + fprintf(s_out, "%.*s\n", (int) buf->out_off, buf->out_buf); +} + + +int +main (int argc, char **argv) +{ + FILE *in = stdin; + FILE *recipe = NULL; + int opt; + unsigned dyn_table_size = LSQPACK_DEF_DYN_TABLE_SIZE, + max_risked_streams = LSQPACK_DEF_MAX_RISKED_STREAMS; + struct lsqpack_dec decoder; + const struct lsqpack_dec_err *err; + const unsigned char *p; + ssize_t nr; + int r; + uint64_t stream_id; + uint32_t size; + size_t off; /* For debugging */ + size_t file_off; + struct buf *buf; + unsigned lineno; + char *line, *end; + enum lsqpack_read_header_status rhs; + int do_swap = 1; + char command[0x100]; + char line_buf[0x100]; + + while (-1 != (opt = getopt(argc, argv, "i:o:r:s:t:m:hvH:SQ"))) + { + switch (opt) + { + case 'i': + if (0 != strcmp(optarg, "-")) + { + in = fopen(optarg, "rb"); + if (!in) + { + fprintf(stderr, "cannot open `%s' for reading: %s\n", + optarg, strerror(errno)); + exit(EXIT_FAILURE); + } + } + break; + case 'o': + if (0 != strcmp(optarg, "-")) + { + s_out = fopen(optarg, "w"); + if (!s_out) + { + fprintf(stderr, "cannot open `%s' for writing: %s\n", + optarg, strerror(errno)); + exit(EXIT_FAILURE); + } + } + break; + case 'r': + if (0 == strcmp(optarg, "-")) + recipe = stdin; + else + { + recipe = fopen(optarg, "r"); + if (!recipe) + { + fprintf(stderr, "cannot open `%s' for reading: %s\n", + optarg, strerror(errno)); + exit(EXIT_FAILURE); + } + } + break; + case 's': + max_risked_streams = atoi(optarg); + break; + case 't': + dyn_table_size = atoi(optarg); + break; + case 'm': + s_max_read_size = atoi(optarg); + break; + case 'h': + usage(argv[0]); + exit(EXIT_SUCCESS); + case 'v': + ++s_verbose; + break; + case 'S': + do_swap = 0; + break; + case 'H': + if (atoi(optarg)) + s_dec_opts |= LSQPACK_DEC_OPT_HTTP1X; + else + s_dec_opts &= ~LSQPACK_DEC_OPT_HTTP1X; + break; + case 'Q': + s_check_unset_qpack_idx = 0; + break; + default: + exit(EXIT_FAILURE); + } + } + + if (!s_out) + s_out = stdout; + + lsqpack_dec_init(&decoder, s_verbose ? stderr : NULL, dyn_table_size, + max_risked_streams, &hset_if, s_dec_opts); + + off = 0; + while (1) + { + file_off = off; + nr = fread(&stream_id, 1, sizeof(stream_id), in); + if (nr == 0) + break; + if (nr != sizeof(stream_id)) + { + fprintf(stderr, "could not read %zu bytes (stream id) at " + "offset %zu: %s\n", sizeof(stream_id), off, strerror(errno)); + goto read_err; + } + off += nr; + nr = fread(&size, 1, sizeof(size), in); + if (nr != sizeof(size)) + { + fprintf(stderr, "could not read %zu bytes (size) at " + "offset %zu: %s\n", sizeof(size), off, strerror(errno)); + goto read_err; + } + off += nr; +#if __BYTE_ORDER == __LITTLE_ENDIAN + stream_id = bswap_64(stream_id); + size = bswap_32(size); +#endif + if (stream_id == 0 && size == 0) + continue; + buf = malloc(sizeof(*buf) + size); + if (!buf) + { + perror("malloc"); + exit(EXIT_FAILURE); + } + memset(buf, 0, sizeof(*buf)); + nr = fread(buf->buf, 1, size, in); + if (nr != (ssize_t) size) + { + fprintf(stderr, "could not read %"PRIu32" bytes (buffer) at " + "offset %zu: %s\n", size, off, strerror(errno)); + goto read_err; + } + off += nr; + buf->dec = &decoder; + buf->stream_id = stream_id; + buf->size = size; + buf->file_off = file_off; + if (buf->size == 0) + exit(EXIT_FAILURE); + TAILQ_INSERT_TAIL(&bufs, buf, next_buf); + } + (void) fclose(in); + in = NULL; + + if (recipe) + { + lineno = 0; + while (line = fgets(line_buf, sizeof(line_buf), recipe), line != NULL) + { + ++lineno; + end = strchr(line, '\n'); + if (!end) + { + fprintf(stderr, "no newline on line %u\n", lineno); + exit(EXIT_FAILURE); + } + *end = '\0'; + + if (*line == '#') + continue; + + if (3 == sscanf(line, " %[s] %"PRIu64" %"PRIu32" ", command, &stream_id, &size)) + { + TAILQ_FOREACH(buf, &bufs, next_buf) + if (stream_id == buf->stream_id) + break; + if (!buf) + { + fprintf(stderr, "stream %"PRIu64" not found (recipe line %u)\n", + stream_id, lineno); + exit(EXIT_FAILURE); + } + p = buf->buf; + rhs = lsqpack_dec_header_in(&decoder, buf, stream_id, + buf->size, &p, + buf->size /* FIXME: this should be `size' */, + NULL, NULL); + switch (rhs) + { + case LQRHS_DONE: + assert(p == buf->buf + buf->size); + header_block_done(buf); + if (s_verbose) + fprintf(stderr, "compression ratio: %.3f\n", + lsqpack_dec_ratio(&decoder)); + TAILQ_REMOVE(&bufs, buf, next_buf); + free(buf); + break; + case LQRHS_BLOCKED: + buf->off += (unsigned) (p - buf->buf); + TAILQ_REMOVE(&bufs, buf, next_buf); + break; + case LQRHS_NEED: + buf->off += (unsigned) (p - buf->buf); + break; + default: + assert(rhs == LQRHS_ERROR); + fprintf(stderr, "recipe line %u: stream %"PRIu64": " + "header_in error\n", lineno, stream_id); + exit(EXIT_FAILURE); + } + } + else if (2 == sscanf(line, " %[z] %u ", command, &size)) + { + s_max_read_size = size; + } + else + { + perror("sscanf"); + exit(EXIT_FAILURE); + } + } + fclose(recipe); + } + else if (do_swap && max_risked_streams && dyn_table_size + && TAILQ_FIRST(&bufs) && TAILQ_FIRST(&bufs)->stream_id) + { + /* Swap header blocks and encoder stream bufs to exercise blocked + * header blocks logic. + */ + struct buf *saved_hblock = NULL, *next; + for (buf = TAILQ_FIRST(&bufs); buf; buf = next) + { + next = TAILQ_NEXT(buf, next_buf); + if (buf->stream_id) + continue; + if (saved_hblock) + TAILQ_INSERT_BEFORE(buf, saved_hblock, next_buf); + saved_hblock = buf; + TAILQ_REMOVE(&bufs, buf, next_buf); + } + TAILQ_INSERT_TAIL(&bufs, saved_hblock, next_buf); + } + + while (buf = TAILQ_FIRST(&bufs), buf != NULL) + { + TAILQ_REMOVE(&bufs, buf, next_buf); + if (buf->stream_id == 0) + { + r = lsqpack_dec_enc_in(&decoder, buf->buf, buf->size - buf->off); + if (r != 0) + { + err = lsqpack_dec_get_err_info(buf->dec); + fprintf(stderr, "encoder_in error; off %"PRIu64", line %d\n", + err->off, err->line); + exit(EXIT_FAILURE); + } + if (s_verbose) + lsqpack_dec_print_table(&decoder, stderr); + free(buf); + } + else + { + dec_header: + p = buf->buf + buf->off; + if (buf->off == 0) + rhs = lsqpack_dec_header_in(&decoder, buf, buf->stream_id, + buf->size, &p, MIN(s_max_read_size, buf->size), + NULL, NULL); + else + rhs = lsqpack_dec_header_read(buf->dec, buf, &p, + MIN(s_max_read_size, (buf->size - buf->off)), + NULL, NULL); + switch (rhs) + { + case LQRHS_DONE: + assert(p == buf->buf + buf->size); + header_block_done(buf); + if (s_verbose) + fprintf(stderr, "compression ratio: %.3f\n", + lsqpack_dec_ratio(&decoder)); + free(buf); + break; + case LQRHS_BLOCKED: + buf->off = (unsigned) (p - buf->buf); + break; + case LQRHS_NEED: + buf->off = (unsigned) (p - buf->buf); + goto dec_header; + default: + assert(rhs == LQRHS_ERROR); + fprintf(stderr, "stream %"PRIu64": header block error " + "starting at off %zu\n", buf->stream_id, buf->off); + err = lsqpack_dec_get_err_info(&decoder); + fprintf(stderr, "encoder_in error; off %"PRIu64", line %d\n", + err->off, err->line); + exit(EXIT_FAILURE); + } + } + } + + if (!TAILQ_EMPTY(&bufs)) + { + fprintf(stderr, "some streams reamain\n"); + exit(EXIT_FAILURE); + } + /* TODO: check if decoder has any stream references. That would be + * an error. + */ + + if (s_verbose) + lsqpack_dec_print_table(&decoder, stderr); + + lsqpack_dec_cleanup(&decoder); + + assert(TAILQ_EMPTY(&bufs)); + + if (s_out) + (void) fclose(s_out); + + exit(EXIT_SUCCESS); + + read_err: + if (nr < 0) + perror("read"); + else if (nr == 0) + fprintf(stderr, "unexpected EOF\n"); + else + fprintf(stderr, "not enough bytes read (%zu)\n", (size_t) nr); + exit(EXIT_FAILURE); +} diff --git a/external/lsquic/src/liblsquic/ls-qpack/bin/interop-encode.c b/external/lsquic/src/liblsquic/ls-qpack/bin/interop-encode.c new file mode 100644 index 0000000..152a151 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/bin/interop-encode.c @@ -0,0 +1,561 @@ +/* + * QPACK Interop -- encode to intermediate format + * + * https://github.com/quicwg/base-drafts/wiki/QPACK-Offline-Interop + */ + +#include + +#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) +#include +#define bswap_16 bswap16 +#define bswap_32 bswap32 +#define bswap_64 bswap64 +#elif defined(__OpenBSD__) +#define bswap_16 swap16 +#define bswap_32 swap32 +#define bswap_64 swap64 +#elif defined(__APPLE__) +#include +#define bswap_16 OSSwapInt16 +#define bswap_32 OSSwapInt32 +#define bswap_64 OSSwapInt64 +#elif defined(WIN32) +#define bswap_16 _byteswap_ushort +#define bswap_32 _byteswap_ulong +#define bswap_64 _byteswap_uint64 +#else +#include +#endif + +#include +#include +#include +#include +#ifdef WIN32 +#include +#else +#include +#endif +#include +#include +#include +#include + +#include "lsqpack.h" +#include "lsxpack_header.h" + +static int s_verbose; + +unsigned char * +lsqpack_enc_int (unsigned char *dst, unsigned char *const end, uint64_t value, + unsigned prefix_bits); + +static void +usage (const char *name) +{ + fprintf(stderr, +"Usage: %s [options] [-i input] [-o output]\n" +"\n" +"Options:\n" +" -i FILE Input file. If not specified or set to `-', the input is\n" +" read from stdin.\n" +" -o FILE Output file. If not spepcified or set to `-', the output\n" +" is written to stdout.\n" +" -s NUMBER Maximum number of risked streams. Defaults to %u.\n" +" -t NUMBER Dynamic table size. Defaults to %u.\n" +" -a MODE Header acknowledgement mode. 0 means headers are never\n" +" acknowledged, non-zero means header blocks are acknowledged\n" +" immediately. Default value is 0.\n" +" -n Process annotations.\n" +" -S Server mode.\n" +" -D Do not emit \"Duplicate\" instructions.\n" +" -A Aggressive indexing.\n" +" -M Turn off memory guard.\n" +" -f Fast: use maximum output buffers.\n" +" -v Verbose: print various messages to stderr.\n" +"\n" +" -h Print this help screen and exit\n" + , name, LSQPACK_DEF_MAX_RISKED_STREAMS, LSQPACK_DEF_DYN_TABLE_SIZE); +} + + +static void +write_enc_stream (FILE *out, const unsigned char *enc_buf, size_t enc_sz) +{ + uint64_t stream_id_enc; + uint32_t length_enc; + size_t written; + + if (enc_sz <= 0) + return; + stream_id_enc = 0; + length_enc = enc_sz; +#if __BYTE_ORDER == __LITTLE_ENDIAN + stream_id_enc = bswap_64(stream_id_enc); + length_enc = bswap_32(length_enc); +#endif + written = fwrite(&stream_id_enc, 1, sizeof(stream_id_enc), out); + if (written != sizeof(stream_id_enc)) + { + perror("fwrite"); + exit(EXIT_FAILURE); + } + written = fwrite(&length_enc, 1, sizeof(length_enc), out); + if (written != sizeof(length_enc)) + { + perror("fwrite"); + exit(EXIT_FAILURE); + } + written = fwrite(enc_buf, 1, enc_sz, out); + if (written != enc_sz) + { + perror("fwrite"); + exit(EXIT_FAILURE); + } +} + + +static void +write_enc_and_header_streams (FILE *out, unsigned stream_id, + const unsigned char *enc_buf, size_t enc_sz, + const unsigned char *pref_buf, size_t pref_sz, + const unsigned char *hea_buf, size_t hea_sz) +{ + uint64_t stream_id_enc; + uint32_t length_enc; + size_t written; + + if (s_verbose) + fprintf(stderr, "%s: stream %"PRIu32"\n", __func__, stream_id); + + if (enc_sz) + { + stream_id_enc = 0; + length_enc = enc_sz; +#if __BYTE_ORDER == __LITTLE_ENDIAN + stream_id_enc = bswap_64(stream_id_enc); + length_enc = bswap_32(length_enc); +#endif + written = fwrite(&stream_id_enc, 1, sizeof(stream_id_enc), out); + if (written != sizeof(stream_id_enc)) + goto write_err; + written = fwrite(&length_enc, 1, sizeof(length_enc), out); + if (written != sizeof(length_enc)) + goto write_err; + written = fwrite(enc_buf, 1, enc_sz, out); + if (written != enc_sz) + goto write_err; + } + + stream_id_enc = stream_id; + length_enc = pref_sz + hea_sz; +#if __BYTE_ORDER == __LITTLE_ENDIAN + stream_id_enc = bswap_64(stream_id_enc); + length_enc = bswap_32(length_enc); +#endif + written = fwrite(&stream_id_enc, 1, sizeof(stream_id_enc), out); + if (written != sizeof(stream_id_enc)) + goto write_err; + written = fwrite(&length_enc, 1, sizeof(length_enc), out); + if (written != sizeof(length_enc)) + goto write_err; + written = fwrite(pref_buf, 1, pref_sz, out); + if (written != pref_sz) + goto write_err; + written = fwrite(hea_buf, 1, hea_sz, out); + if (written != hea_sz) + goto write_err; + return; + + write_err: + perror("fwrite"); + exit(EXIT_FAILURE); +} + + +static unsigned s_saved_ins_count; +static int +ack_last_entry_id (struct lsqpack_enc *encoder) +{ + unsigned char *end_cmd; + unsigned char cmd[80]; + unsigned val; + + if (s_verbose) + fprintf(stderr, "ACK entry ID %u\n", encoder->qpe_ins_count); + + cmd[0] = 0x00; + val = encoder->qpe_ins_count - s_saved_ins_count; + s_saved_ins_count = encoder->qpe_ins_count; + end_cmd = lsqpack_enc_int(cmd, cmd + sizeof(cmd), val, 6); + assert(end_cmd > cmd); + return lsqpack_enc_decoder_in(encoder, cmd, end_cmd - cmd); +} + + +static int +ack_stream (struct lsqpack_enc *encoder, uint64_t stream_id) +{ + unsigned char *end_cmd; + unsigned char cmd[80]; + + if (s_verbose) + fprintf(stderr, "ACK stream ID %"PRIu64"\n", stream_id); + + cmd[0] = 0x80; + end_cmd = lsqpack_enc_int(cmd, cmd + sizeof(cmd), stream_id, 7); + assert(end_cmd > cmd); + return lsqpack_enc_decoder_in(encoder, cmd, end_cmd - cmd); +} + + +static int +sync_table (struct lsqpack_enc *encoder, uint64_t num_inserts) +{ + unsigned char *end_cmd; + unsigned char cmd[80]; + + if (s_verbose) + fprintf(stderr, "Sync table num inserts %"PRIu64"\n", num_inserts); + + cmd[0] = 0x00; + end_cmd = lsqpack_enc_int(cmd, cmd + sizeof(cmd), num_inserts, 6); + assert(end_cmd > cmd); + return lsqpack_enc_decoder_in(encoder, cmd, end_cmd - cmd); +} + + +static int +cancel_stream (struct lsqpack_enc *encoder, uint64_t stream_id) +{ + unsigned char *end_cmd; + unsigned char cmd[80]; + + if (s_verbose) + fprintf(stderr, "Cancel stream ID %"PRIu64"\n", stream_id); + + cmd[0] = 0x40; + end_cmd = lsqpack_enc_int(cmd, cmd + sizeof(cmd), stream_id, 6); + assert(end_cmd > cmd); + return lsqpack_enc_decoder_in(encoder, cmd, end_cmd - cmd); +} + + +int +main (int argc, char **argv) +{ + FILE *in = stdin; + FILE *out = stdout; + int opt; + unsigned dyn_table_size = LSQPACK_DEF_DYN_TABLE_SIZE, + max_risked_streams = LSQPACK_DEF_MAX_RISKED_STREAMS; + unsigned lineno, stream_id; + struct lsqpack_enc encoder; + char *line, *end, *tab; + ssize_t pref_sz; + enum lsqpack_enc_status st; + enum lsqpack_enc_opts enc_opts = 0; + size_t enc_sz, hea_sz, enc_off, hea_off; + int header_opened, r; + unsigned arg; + enum { ACK_NEVER, ACK_IMMEDIATE, } ack_mode = ACK_NEVER; + int process_annotations = 0; + char line_buf[0x1000]; + unsigned char tsu_buf[LSQPACK_LONGEST_SDTC]; + size_t tsu_buf_sz; + enum lsqpack_enc_header_flags hflags; + int fast = 0; + struct lsxpack_header xhdr; + unsigned char enc_buf[0x1000], hea_buf[0x1000], pref_buf[0x20]; + + while (-1 != (opt = getopt(argc, argv, "ADMSa:i:no:s:t:hvf"))) + { + switch (opt) + { + case 'S': + enc_opts |= LSQPACK_ENC_OPT_SERVER; + break; + case 'D': + enc_opts |= LSQPACK_ENC_OPT_NO_DUP; + break; + case 'A': + enc_opts |= LSQPACK_ENC_OPT_IX_AGGR; + break; + case 'M': + enc_opts |= LSQPACK_ENC_OPT_NO_MEM_GUARD; + break; + case 'n': + ++process_annotations; + break; + case 'a': + ack_mode = atoi(optarg) ? ACK_IMMEDIATE : ACK_NEVER; + break; + case 'i': + if (0 != strcmp(optarg, "-")) + { + in = fopen(optarg, "r"); + if (!in) + { + fprintf(stderr, "cannot open `%s' for reading: %s\n", + optarg, strerror(errno)); + exit(EXIT_FAILURE); + } + } + break; + case 'o': + if (0 != strcmp(optarg, "-")) + { + out = fopen(optarg, "wb"); + if (!out) + { + fprintf(stderr, "cannot open `%s' for writing: %s\n", + optarg, strerror(errno)); + exit(EXIT_FAILURE); + } + } + break; + case 's': + max_risked_streams = atoi(optarg); + break; + case 't': + dyn_table_size = atoi(optarg); + break; + case 'h': + usage(argv[0]); + exit(EXIT_SUCCESS); + case 'f': + fast = 1; + break; + case 'v': + ++s_verbose; + break; + default: + exit(EXIT_FAILURE); + } + } + + tsu_buf_sz = sizeof(tsu_buf); + if (0 != lsqpack_enc_init(&encoder, s_verbose ? stderr : NULL, dyn_table_size, + dyn_table_size, max_risked_streams, enc_opts, tsu_buf, + &tsu_buf_sz)) + { + perror("lsqpack_enc_init"); + exit(EXIT_FAILURE); + } + + lineno = 0; + stream_id = 0; + enc_off = 0; + hea_off = 0; + header_opened = 0; + + while (line = fgets(line_buf, sizeof(line_buf), in), line != NULL) + { + ++lineno; + end = strchr(line, '\n'); + if (!end) + { + fprintf(stderr, "no newline on line %u\n", lineno); + exit(EXIT_FAILURE); + } + *end = '\0'; + + if (end == line) + { + if (header_opened) + { + size_t sz, pref_max = sizeof(pref_buf); + for (sz = (fast ? pref_max : 0); sz <= pref_max; sz++) + { + pref_sz = lsqpack_enc_end_header(&encoder, pref_buf, sz, &hflags); + if (pref_sz > 0) + { + if (max_risked_streams == 0) + assert(!(hflags & LSQECH_REF_AT_RISK)); + break; + } + } + assert(pref_sz <= lsqpack_enc_header_block_prefix_size(&encoder)); + if (pref_sz < 0) + { + fprintf(stderr, "end_header failed: %s", strerror(errno)); + exit(EXIT_FAILURE); + } + if (ack_mode == ACK_IMMEDIATE) + { + if (!(2 == pref_sz && pref_buf[0] == 0 && pref_buf[1] == 0)) + r = ack_stream(&encoder, stream_id); + else + r = 0; + if (r == 0 && encoder.qpe_ins_count > s_saved_ins_count) + r = ack_last_entry_id(&encoder); + else + r = 0; + if (r != 0) + { + fprintf(stderr, "acking stream %u failed: %s", stream_id, + strerror(errno)); + exit(EXIT_FAILURE); + } + } + if (s_verbose) + fprintf(stderr, "compression ratio: %.3f\n", + lsqpack_enc_ratio(&encoder)); + write_enc_and_header_streams(out, stream_id, enc_buf, enc_off, + pref_buf, pref_sz, hea_buf, hea_off); + enc_off = 0; + hea_off = 0; + header_opened = 0; + } + continue; + } + + if (*line == '#') + { + if (!process_annotations) + continue; + + /* Lines starting with ## are potential annotations */ + if (ack_mode != ACK_IMMEDIATE + /* Ignore ACK annotations in immediate ACK mode, as we do + * not tolerate duplicate ACKs. + */ + && 1 == sscanf(line, "## %*[a] %u ", &arg)) + { + if (0 != ack_stream(&encoder, arg)) + { + fprintf(stderr, "ACKing stream ID %u failed\n", arg); + exit(EXIT_FAILURE); + } + } + else if (1 == sscanf(line, "## %*[s] %u", &arg)) + sync_table(&encoder, arg); + else if (1 == sscanf(line, "## %*[c] %u", &arg)) + cancel_stream(&encoder, arg); + else if (1 == sscanf(line, "## %*[t] %u", &arg)) + { + tsu_buf_sz = sizeof(tsu_buf); + if (0 != lsqpack_enc_set_max_capacity(&encoder, arg, tsu_buf, + &tsu_buf_sz)) + { + fprintf(stderr, "cannot set capacity to %u: %s\n", arg, + strerror(errno)); + exit(EXIT_FAILURE); + } + write_enc_stream(out, tsu_buf, tsu_buf_sz); + } + continue; + } + + tab = strchr(line, '\t'); + if (!tab) + { + fprintf(stderr, "no TAB on line %u\n", lineno); + exit(EXIT_FAILURE); + } + + if (!header_opened) + { + ++stream_id; + if (0 != lsqpack_enc_start_header(&encoder, stream_id, 0)) + { + fprintf(stderr, "start_header failed: %s\n", strerror(errno)); + exit(EXIT_FAILURE); + } + header_opened = 1; + } + if (fast) + { + enc_sz = sizeof(enc_buf) - enc_off; + hea_sz = sizeof(hea_buf) - hea_off; + } + else + { + /* Increase buffers one by one to exercise error conditions */ + enc_sz = 0; + hea_sz = 0; + } + while (1) + { + lsxpack_header_set_offset2(&xhdr, line, 0, tab - line, + tab + 1 - line, end - tab - 1); + st = lsqpack_enc_encode(&encoder, enc_buf + enc_off, &enc_sz, + hea_buf + hea_off, &hea_sz, &xhdr, 0); + switch (st) + { + case LQES_NOBUF_ENC: + if (enc_sz < sizeof(enc_buf) - enc_off) + ++enc_sz; + else + assert(0); + break; + case LQES_NOBUF_HEAD: + if (hea_sz < sizeof(hea_buf) - hea_off) + ++hea_sz; + else + assert(0); + break; + default: + assert(st == LQES_OK); + goto end_encode_one_header; + } + } + if (st != LQES_OK) + { + /* It could only run of of output space, so it's not really an + * error, but we make no provision in the interop encoder to + * grow the buffers. + */ + fprintf(stderr, "Could not encode header on line %u: %u\n", + lineno, st); + exit(EXIT_FAILURE); + } + end_encode_one_header: + enc_off += enc_sz; + hea_off += hea_sz; + } + + if (s_verbose) + fprintf(stderr, "exited while loop\n"); + + (void) fclose(in); + + if (header_opened) + { + if (s_verbose) + fprintf(stderr, "close opened header\n"); + pref_sz = lsqpack_enc_end_header(&encoder, pref_buf, sizeof(pref_buf), + &hflags); + if (pref_sz < 0) + { + fprintf(stderr, "end_header failed: %s", strerror(errno)); + exit(EXIT_FAILURE); + } + if (max_risked_streams == 0) + assert(!(hflags & LSQECH_REF_AT_RISK)); + if (ack_mode == ACK_IMMEDIATE + && !(2 == pref_sz && pref_buf[0] == 0 && pref_buf[1] == 0) + && 0 != ack_stream(&encoder, stream_id)) + { + fprintf(stderr, "acking stream %u failed: %s", stream_id, + strerror(errno)); + exit(EXIT_FAILURE); + } + if (s_verbose) + fprintf(stderr, "compression ratio: %.3f\n", + lsqpack_enc_ratio(&encoder)); + write_enc_and_header_streams(out, stream_id, enc_buf, enc_off, pref_buf, + pref_sz, hea_buf, hea_off); + } + + lsqpack_enc_cleanup(&encoder); + + if (0 != fclose(out)) + { + perror("fclose(out)"); + exit(EXIT_FAILURE); + } + + exit(EXIT_SUCCESS); +} diff --git a/external/lsquic/src/liblsquic/ls-qpack/deps/xxhash/xxhash.c b/external/lsquic/src/liblsquic/ls-qpack/deps/xxhash/xxhash.c new file mode 100644 index 0000000..3023948 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/deps/xxhash/xxhash.c @@ -0,0 +1,941 @@ +/* +xxHash - Fast Hash algorithm +Copyright (C) 2012-2014, Yann Collet. +BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +You can contact the author at : +- xxHash source repository : http://code.google.com/p/xxhash/ +- public discussion board : https://groups.google.com/forum/#!forum/lz4c +*/ + + +//************************************** +// Tuning parameters +//************************************** +// Unaligned memory access is automatically enabled for "common" CPU, such as x86. +// For others CPU, the compiler will be more cautious, and insert extra code to ensure aligned access is respected. +// If you know your target CPU supports unaligned memory access, you want to force this option manually to improve performance. +// You can also enable this parameter if you know your input data will always be aligned (boundaries of 4, for U32). +#if defined(__ARM_FEATURE_UNALIGNED) || defined(__i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64) +# define XXH_USE_UNALIGNED_ACCESS 1 +#endif + +// XXH_ACCEPT_NULL_INPUT_POINTER : +// If the input pointer is a null pointer, xxHash default behavior is to trigger a memory access error, since it is a bad pointer. +// When this option is enabled, xxHash output for null input pointers will be the same as a null-length input. +// This option has a very small performance cost (only measurable on small inputs). +// By default, this option is disabled. To enable it, uncomment below define : +// #define XXH_ACCEPT_NULL_INPUT_POINTER 1 + +// XXH_FORCE_NATIVE_FORMAT : +// By default, xxHash library provides endian-independant Hash values, based on little-endian convention. +// Results are therefore identical for little-endian and big-endian CPU. +// This comes at a performance cost for big-endian CPU, since some swapping is required to emulate little-endian format. +// Should endian-independance be of no importance for your application, you may set the #define below to 1. +// It will improve speed for Big-endian CPU. +// This option has no impact on Little_Endian CPU. +#define XXH_FORCE_NATIVE_FORMAT 0 + +//************************************** +// Compiler Specific Options +//************************************** +// Disable some Visual warning messages +#ifdef _MSC_VER // Visual Studio +# pragma warning(disable : 4127) // disable: C4127: conditional expression is constant +#endif + +#ifdef _MSC_VER // Visual Studio +# define FORCE_INLINE static __forceinline +#else +# ifdef __GNUC__ +# define FORCE_INLINE static inline __attribute__((always_inline)) +# else +# define FORCE_INLINE static inline +# endif +#endif + +//************************************** +// Includes & Memory related functions +//************************************** +#include "xxhash.h" +// Modify the local functions below should you wish to use some other memory routines +// for malloc(), free() +#include +static void *XXH_malloc(size_t s) { return malloc(s); } +static void XXH_free(void *p) { free(p); } +// for memcpy() +#include +static void *XXH_memcpy(void *dest, const void *src, size_t size) +{ + return memcpy(dest, src, size); +} + + +//************************************** +// Basic Types +//************************************** +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L // C99 +# include +typedef uint8_t BYTE; +typedef uint16_t U16; +typedef uint32_t U32; +typedef int32_t S32; +typedef uint64_t U64; +#else +typedef unsigned char BYTE; +typedef unsigned short U16; +typedef unsigned int U32; +typedef signed int S32; +typedef unsigned long long U64; +#endif + +#if defined(__GNUC__) && !defined(XXH_USE_UNALIGNED_ACCESS) +# define _PACKED __attribute__ ((packed)) +#else +# define _PACKED +#endif + +#if !defined(XXH_USE_UNALIGNED_ACCESS) && !defined(__GNUC__) +# ifdef __IBMC__ +# pragma pack(1) +# else +# pragma pack(push, 1) +# endif +#endif + +typedef struct _U32_S +{ + U32 v; +} _PACKED U32_S; +typedef struct _U64_S +{ + U64 v; +} _PACKED U64_S; + +#if !defined(XXH_USE_UNALIGNED_ACCESS) && !defined(__GNUC__) +# pragma pack(pop) +#endif + +#define A32(x) (((U32_S *)(x))->v) +#define A64(x) (((U64_S *)(x))->v) + + +//*************************************** +// Compiler-specific Functions and Macros +//*************************************** +#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) + +// Note : although _rotl exists for minGW (GCC under windows), performance seems poor +#if defined(_MSC_VER) +# define XXH_rotl32(x,r) _rotl(x,r) +# define XXH_rotl64(x,r) _rotl64(x,r) +#else +# define XXH_rotl32(x,r) ((x << r) | (x >> (32 - r))) +# define XXH_rotl64(x,r) ((x << r) | (x >> (64 - r))) +#endif + +#if defined(_MSC_VER) // Visual Studio +# define XXH_swap32 _byteswap_ulong +# define XXH_swap64 _byteswap_uint64 +#elif GCC_VERSION >= 403 +# define XXH_swap32 __builtin_bswap32 +# define XXH_swap64 __builtin_bswap64 +#else +static inline U32 XXH_swap32(U32 x) +{ + return ((x << 24) & 0xff000000) | + ((x << 8) & 0x00ff0000) | + ((x >> 8) & 0x0000ff00) | + ((x >> 24) & 0x000000ff); +} +static inline U64 XXH_swap64(U64 x) +{ + return ((x << 56) & 0xff00000000000000ULL) | + ((x << 40) & 0x00ff000000000000ULL) | + ((x << 24) & 0x0000ff0000000000ULL) | + ((x << 8) & 0x000000ff00000000ULL) | + ((x >> 8) & 0x00000000ff000000ULL) | + ((x >> 24) & 0x0000000000ff0000ULL) | + ((x >> 40) & 0x000000000000ff00ULL) | + ((x >> 56) & 0x00000000000000ffULL); +} +#endif + + +//************************************** +// Constants +//************************************** +#define PRIME32_1 2654435761U +#define PRIME32_2 2246822519U +#define PRIME32_3 3266489917U +#define PRIME32_4 668265263U +#define PRIME32_5 374761393U + +#define PRIME64_1 11400714785074694791ULL +#define PRIME64_2 14029467366897019727ULL +#define PRIME64_3 1609587929392839161ULL +#define PRIME64_4 9650029242287828579ULL +#define PRIME64_5 2870177450012600261ULL + +//************************************** +// Architecture Macros +//************************************** +typedef enum { XXH_bigEndian = 0, XXH_littleEndian = 1 } XXH_endianess; +#ifndef XXH_CPU_LITTLE_ENDIAN // It is possible to define XXH_CPU_LITTLE_ENDIAN externally, for example using a compiler switch +static const int one = 1; +# define XXH_CPU_LITTLE_ENDIAN (*(char*)(&one)) +#endif + + +//************************************** +// Macros +//************************************** +#define XXH_STATIC_ASSERT(c) { enum { XXH_static_assert = 1/(!!(c)) }; } // use only *after* variable declarations + + +//**************************** +// Memory reads +//**************************** +typedef enum { XXH_aligned, XXH_unaligned } XXH_alignment; + +FORCE_INLINE U32 XXH_readLE32_align(const void *ptr, XXH_endianess endian, + XXH_alignment align) +{ + if (align == XXH_unaligned) + return endian == XXH_littleEndian ? A32(ptr) : XXH_swap32(A32(ptr)); + else + return endian == XXH_littleEndian ? *(U32 *)ptr : XXH_swap32(*(U32 *)ptr); +} + +FORCE_INLINE U32 XXH_readLE32(const void *ptr, XXH_endianess endian) +{ + return XXH_readLE32_align(ptr, endian, XXH_unaligned); +} + +FORCE_INLINE U64 XXH_readLE64_align(const void *ptr, XXH_endianess endian, + XXH_alignment align) +{ + if (align == XXH_unaligned) + return endian == XXH_littleEndian ? A64(ptr) : XXH_swap64(A64(ptr)); + else + return endian == XXH_littleEndian ? *(U64 *)ptr : XXH_swap64(*(U64 *)ptr); +} + +FORCE_INLINE U64 XXH_readLE64(const void *ptr, XXH_endianess endian) +{ + return XXH_readLE64_align(ptr, endian, XXH_unaligned); +} + + +//**************************** +// Simple Hash Functions +//**************************** +FORCE_INLINE U32 XXH32_endian_align(const void *input, size_t len, + U32 seed, XXH_endianess endian, XXH_alignment align) +{ + const BYTE *p = (const BYTE *)input; + const BYTE *bEnd = p + len; + U32 h32; +#define XXH_get32bits(p) XXH_readLE32_align(p, endian, align) + +#ifdef XXH_ACCEPT_NULL_INPUT_POINTER + if (p == NULL) + { + len = 0; + bEnd = p = (const BYTE *)(size_t)16; + } +#endif + + if (len >= 16) + { + const BYTE *const limit = bEnd - 16; + U32 v1 = seed + PRIME32_1 + PRIME32_2; + U32 v2 = seed + PRIME32_2; + U32 v3 = seed + 0; + U32 v4 = seed - PRIME32_1; + + do + { + v1 += XXH_get32bits(p) * PRIME32_2; + v1 = XXH_rotl32(v1, 13); + v1 *= PRIME32_1; + p += 4; + v2 += XXH_get32bits(p) * PRIME32_2; + v2 = XXH_rotl32(v2, 13); + v2 *= PRIME32_1; + p += 4; + v3 += XXH_get32bits(p) * PRIME32_2; + v3 = XXH_rotl32(v3, 13); + v3 *= PRIME32_1; + p += 4; + v4 += XXH_get32bits(p) * PRIME32_2; + v4 = XXH_rotl32(v4, 13); + v4 *= PRIME32_1; + p += 4; + } + while (p <= limit); + + h32 = XXH_rotl32(v1, 1) + XXH_rotl32(v2, 7) + XXH_rotl32(v3, + 12) + XXH_rotl32(v4, 18); + } + else + h32 = seed + PRIME32_5; + + h32 += (U32) len; + + while (p + 4 <= bEnd) + { + h32 += XXH_get32bits(p) * PRIME32_3; + h32 = XXH_rotl32(h32, 17) * PRIME32_4 ; + p += 4; + } + + while (p < bEnd) + { + h32 += (*p) * PRIME32_5; + h32 = XXH_rotl32(h32, 11) * PRIME32_1 ; + p++; + } + + h32 ^= h32 >> 15; + h32 *= PRIME32_2; + h32 ^= h32 >> 13; + h32 *= PRIME32_3; + h32 ^= h32 >> 16; + + return h32; +} + + +unsigned int XXH32(const void *input, size_t len, unsigned seed) +{ +#if 0 + // Simple version, good for code maintenance, but unfortunately slow for small inputs + XXH32_state_t state; + XXH32_reset(&state, seed); + XXH32_update(&state, input, len); + return XXH32_digest(&state); +#else + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + +# if !defined(XXH_USE_UNALIGNED_ACCESS) + if ((((size_t)input) & 3) == + 0) // Input is aligned, let's leverage the speed advantage + { + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH32_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned); + else + return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned); + } +# endif + + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH32_endian_align(input, len, seed, XXH_littleEndian, + XXH_unaligned); + else + return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned); +#endif +} + +FORCE_INLINE U64 XXH64_endian_align(const void *input, size_t len, + U64 seed, XXH_endianess endian, XXH_alignment align) +{ + const BYTE *p = (const BYTE *)input; + const BYTE *bEnd = p + len; + U64 h64; +#define XXH_get64bits(p) XXH_readLE64_align(p, endian, align) + +#ifdef XXH_ACCEPT_NULL_INPUT_POINTER + if (p == NULL) + { + len = 0; + bEnd = p = (const BYTE *)(size_t)32; + } +#endif + + if (len >= 32) + { + const BYTE *const limit = bEnd - 32; + U64 v1 = seed + PRIME64_1 + PRIME64_2; + U64 v2 = seed + PRIME64_2; + U64 v3 = seed + 0; + U64 v4 = seed - PRIME64_1; + + do + { + v1 += XXH_get64bits(p) * PRIME64_2; + p += 8; + v1 = XXH_rotl64(v1, 31); + v1 *= PRIME64_1; + v2 += XXH_get64bits(p) * PRIME64_2; + p += 8; + v2 = XXH_rotl64(v2, 31); + v2 *= PRIME64_1; + v3 += XXH_get64bits(p) * PRIME64_2; + p += 8; + v3 = XXH_rotl64(v3, 31); + v3 *= PRIME64_1; + v4 += XXH_get64bits(p) * PRIME64_2; + p += 8; + v4 = XXH_rotl64(v4, 31); + v4 *= PRIME64_1; + } + while (p <= limit); + + h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, + 12) + XXH_rotl64(v4, 18); + + v1 *= PRIME64_2; + v1 = XXH_rotl64(v1, 31); + v1 *= PRIME64_1; + h64 ^= v1; + h64 = h64 * PRIME64_1 + PRIME64_4; + + v2 *= PRIME64_2; + v2 = XXH_rotl64(v2, 31); + v2 *= PRIME64_1; + h64 ^= v2; + h64 = h64 * PRIME64_1 + PRIME64_4; + + v3 *= PRIME64_2; + v3 = XXH_rotl64(v3, 31); + v3 *= PRIME64_1; + h64 ^= v3; + h64 = h64 * PRIME64_1 + PRIME64_4; + + v4 *= PRIME64_2; + v4 = XXH_rotl64(v4, 31); + v4 *= PRIME64_1; + h64 ^= v4; + h64 = h64 * PRIME64_1 + PRIME64_4; + } + else + h64 = seed + PRIME64_5; + + h64 += (U64) len; + + while (p + 8 <= bEnd) + { + U64 k1 = XXH_get64bits(p); + k1 *= PRIME64_2; + k1 = XXH_rotl64(k1, 31); + k1 *= PRIME64_1; + h64 ^= k1; + h64 = XXH_rotl64(h64, 27) * PRIME64_1 + PRIME64_4; + p += 8; + } + + if (p + 4 <= bEnd) + { + h64 ^= (U64)(XXH_get32bits(p)) * PRIME64_1; + h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3; + p += 4; + } + + while (p < bEnd) + { + h64 ^= (*p) * PRIME64_5; + h64 = XXH_rotl64(h64, 11) * PRIME64_1; + p++; + } + + h64 ^= h64 >> 33; + h64 *= PRIME64_2; + h64 ^= h64 >> 29; + h64 *= PRIME64_3; + h64 ^= h64 >> 32; + + return h64; +} + + +unsigned long long XXH64(const void *input, size_t len, + unsigned long long seed) +{ +#if 0 + // Simple version, good for code maintenance, but unfortunately slow for small inputs + XXH64_state_t state; + XXH64_reset(&state, seed); + XXH64_update(&state, input, len); + return XXH64_digest(&state); +#else + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + +# if !defined(XXH_USE_UNALIGNED_ACCESS) + if ((((size_t)input) & 7) == + 0) // Input is aligned, let's leverage the speed advantage + { + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH64_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned); + else + return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned); + } +# endif + + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH64_endian_align(input, len, seed, XXH_littleEndian, + XXH_unaligned); + else + return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned); +#endif +} + +/**************************************************** + * Advanced Hash Functions +****************************************************/ + +/*** Allocation ***/ +typedef struct +{ + U64 total_len; + U32 seed; + U32 v1; + U32 v2; + U32 v3; + U32 v4; + U32 mem32[4]; /* defined as U32 for alignment */ + U32 memsize; +} XXH_istate32_t; + +typedef struct +{ + U64 total_len; + U64 seed; + U64 v1; + U64 v2; + U64 v3; + U64 v4; + U64 mem64[4]; /* defined as U64 for alignment */ + U32 memsize; +} XXH_istate64_t; + + +XXH32_state_t *XXH32_createState(void) +{ + XXH_STATIC_ASSERT(sizeof(XXH32_state_t) >= sizeof( + XXH_istate32_t)); // A compilation error here means XXH32_state_t is not large enough + return (XXH32_state_t *)XXH_malloc(sizeof(XXH32_state_t)); +} +XXH_errorcode XXH32_freeState(XXH32_state_t *statePtr) +{ + XXH_free(statePtr); + return XXH_OK; +}; + +XXH64_state_t *XXH64_createState(void) +{ + XXH_STATIC_ASSERT(sizeof(XXH64_state_t) >= sizeof( + XXH_istate64_t)); // A compilation error here means XXH64_state_t is not large enough + return (XXH64_state_t *)XXH_malloc(sizeof(XXH64_state_t)); +} +XXH_errorcode XXH64_freeState(XXH64_state_t *statePtr) +{ + XXH_free(statePtr); + return XXH_OK; +}; + + +/*** Hash feed ***/ + +XXH_errorcode XXH32_reset(XXH32_state_t *state_in, U32 seed) +{ + XXH_istate32_t *state = (XXH_istate32_t *) state_in; + state->seed = seed; + state->v1 = seed + PRIME32_1 + PRIME32_2; + state->v2 = seed + PRIME32_2; + state->v3 = seed + 0; + state->v4 = seed - PRIME32_1; + state->total_len = 0; + state->memsize = 0; + return XXH_OK; +} + +XXH_errorcode XXH64_reset(XXH64_state_t *state_in, unsigned long long seed) +{ + XXH_istate64_t *state = (XXH_istate64_t *) state_in; + state->seed = seed; + state->v1 = seed + PRIME64_1 + PRIME64_2; + state->v2 = seed + PRIME64_2; + state->v3 = seed + 0; + state->v4 = seed - PRIME64_1; + state->total_len = 0; + state->memsize = 0; + return XXH_OK; +} + + +FORCE_INLINE XXH_errorcode XXH32_update_endian(XXH32_state_t *state_in, + const void *input, size_t len, XXH_endianess endian) +{ + XXH_istate32_t *state = (XXH_istate32_t *) state_in; + const BYTE *p = (const BYTE *)input; + const BYTE *const bEnd = p + len; + +#ifdef XXH_ACCEPT_NULL_INPUT_POINTER + if (input == NULL) return XXH_ERROR; +#endif + + state->total_len += len; + + if (state->memsize + len < 16) // fill in tmp buffer + { + XXH_memcpy((BYTE *)(state->mem32) + state->memsize, input, len); + state->memsize += (U32)len; + return XXH_OK; + } + + if (state->memsize) // some data left from previous update + { + XXH_memcpy((BYTE *)(state->mem32) + state->memsize, input, + 16 - state->memsize); + { + const U32 *p32 = state->mem32; + state->v1 += XXH_readLE32(p32, endian) * PRIME32_2; + state->v1 = XXH_rotl32(state->v1, 13); + state->v1 *= PRIME32_1; + p32++; + state->v2 += XXH_readLE32(p32, endian) * PRIME32_2; + state->v2 = XXH_rotl32(state->v2, 13); + state->v2 *= PRIME32_1; + p32++; + state->v3 += XXH_readLE32(p32, endian) * PRIME32_2; + state->v3 = XXH_rotl32(state->v3, 13); + state->v3 *= PRIME32_1; + p32++; + state->v4 += XXH_readLE32(p32, endian) * PRIME32_2; + state->v4 = XXH_rotl32(state->v4, 13); + state->v4 *= PRIME32_1; + p32++; + } + p += 16 - state->memsize; + state->memsize = 0; + } + + if (p <= bEnd - 16) + { + const BYTE *const limit = bEnd - 16; + U32 v1 = state->v1; + U32 v2 = state->v2; + U32 v3 = state->v3; + U32 v4 = state->v4; + + do + { + v1 += XXH_readLE32(p, endian) * PRIME32_2; + v1 = XXH_rotl32(v1, 13); + v1 *= PRIME32_1; + p += 4; + v2 += XXH_readLE32(p, endian) * PRIME32_2; + v2 = XXH_rotl32(v2, 13); + v2 *= PRIME32_1; + p += 4; + v3 += XXH_readLE32(p, endian) * PRIME32_2; + v3 = XXH_rotl32(v3, 13); + v3 *= PRIME32_1; + p += 4; + v4 += XXH_readLE32(p, endian) * PRIME32_2; + v4 = XXH_rotl32(v4, 13); + v4 *= PRIME32_1; + p += 4; + } + while (p <= limit); + + state->v1 = v1; + state->v2 = v2; + state->v3 = v3; + state->v4 = v4; + } + + if (p < bEnd) + { + XXH_memcpy(state->mem32, p, bEnd - p); + state->memsize = (int)(bEnd - p); + } + + return XXH_OK; +} + +XXH_errorcode XXH32_update(XXH32_state_t *state_in, const void *input, + size_t len) +{ + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH32_update_endian(state_in, input, len, XXH_littleEndian); + else + return XXH32_update_endian(state_in, input, len, XXH_bigEndian); +} + + + +FORCE_INLINE U32 XXH32_digest_endian(const XXH32_state_t *state_in, + XXH_endianess endian) +{ + XXH_istate32_t *state = (XXH_istate32_t *) state_in; + const BYTE *p = (const BYTE *)state->mem32; + BYTE *bEnd = (BYTE *)(state->mem32) + state->memsize; + U32 h32; + + if (state->total_len >= 16) + h32 = XXH_rotl32(state->v1, 1) + XXH_rotl32(state->v2, + 7) + XXH_rotl32(state->v3, 12) + XXH_rotl32(state->v4, 18); + else + h32 = state->seed + PRIME32_5; + + h32 += (U32) state->total_len; + + while (p + 4 <= bEnd) + { + h32 += XXH_readLE32(p, endian) * PRIME32_3; + h32 = XXH_rotl32(h32, 17) * PRIME32_4; + p += 4; + } + + while (p < bEnd) + { + h32 += (*p) * PRIME32_5; + h32 = XXH_rotl32(h32, 11) * PRIME32_1; + p++; + } + + h32 ^= h32 >> 15; + h32 *= PRIME32_2; + h32 ^= h32 >> 13; + h32 *= PRIME32_3; + h32 ^= h32 >> 16; + + return h32; +} + + +U32 XXH32_digest(const XXH32_state_t *state_in) +{ + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH32_digest_endian(state_in, XXH_littleEndian); + else + return XXH32_digest_endian(state_in, XXH_bigEndian); +} + + +FORCE_INLINE XXH_errorcode XXH64_update_endian(XXH64_state_t *state_in, + const void *input, size_t len, XXH_endianess endian) +{ + XXH_istate64_t *state = (XXH_istate64_t *) state_in; + const BYTE *p = (const BYTE *)input; + const BYTE *const bEnd = p + len; + +#ifdef XXH_ACCEPT_NULL_INPUT_POINTER + if (input == NULL) return XXH_ERROR; +#endif + + state->total_len += len; + + if (state->memsize + len < 32) // fill in tmp buffer + { + XXH_memcpy(((BYTE *)state->mem64) + state->memsize, input, len); + state->memsize += (U32)len; + return XXH_OK; + } + + if (state->memsize) // some data left from previous update + { + XXH_memcpy(((BYTE *)state->mem64) + state->memsize, input, + 32 - state->memsize); + { + const U64 *p64 = state->mem64; + state->v1 += XXH_readLE64(p64, endian) * PRIME64_2; + state->v1 = XXH_rotl64(state->v1, 31); + state->v1 *= PRIME64_1; + p64++; + state->v2 += XXH_readLE64(p64, endian) * PRIME64_2; + state->v2 = XXH_rotl64(state->v2, 31); + state->v2 *= PRIME64_1; + p64++; + state->v3 += XXH_readLE64(p64, endian) * PRIME64_2; + state->v3 = XXH_rotl64(state->v3, 31); + state->v3 *= PRIME64_1; + p64++; + state->v4 += XXH_readLE64(p64, endian) * PRIME64_2; + state->v4 = XXH_rotl64(state->v4, 31); + state->v4 *= PRIME64_1; + p64++; + } + p += 32 - state->memsize; + state->memsize = 0; + } + + if (p + 32 <= bEnd) + { + const BYTE *const limit = bEnd - 32; + U64 v1 = state->v1; + U64 v2 = state->v2; + U64 v3 = state->v3; + U64 v4 = state->v4; + + do + { + v1 += XXH_readLE64(p, endian) * PRIME64_2; + v1 = XXH_rotl64(v1, 31); + v1 *= PRIME64_1; + p += 8; + v2 += XXH_readLE64(p, endian) * PRIME64_2; + v2 = XXH_rotl64(v2, 31); + v2 *= PRIME64_1; + p += 8; + v3 += XXH_readLE64(p, endian) * PRIME64_2; + v3 = XXH_rotl64(v3, 31); + v3 *= PRIME64_1; + p += 8; + v4 += XXH_readLE64(p, endian) * PRIME64_2; + v4 = XXH_rotl64(v4, 31); + v4 *= PRIME64_1; + p += 8; + } + while (p <= limit); + + state->v1 = v1; + state->v2 = v2; + state->v3 = v3; + state->v4 = v4; + } + + if (p < bEnd) + { + XXH_memcpy(state->mem64, p, bEnd - p); + state->memsize = (int)(bEnd - p); + } + + return XXH_OK; +} + +XXH_errorcode XXH64_update(XXH64_state_t *state_in, const void *input, + size_t len) +{ + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH64_update_endian(state_in, input, len, XXH_littleEndian); + else + return XXH64_update_endian(state_in, input, len, XXH_bigEndian); +} + + + +FORCE_INLINE U64 XXH64_digest_endian(const XXH64_state_t *state_in, + XXH_endianess endian) +{ + XXH_istate64_t *state = (XXH_istate64_t *) state_in; + const BYTE *p = (const BYTE *)state->mem64; + BYTE *bEnd = (BYTE *)state->mem64 + state->memsize; + U64 h64; + + if (state->total_len >= 32) + { + U64 v1 = state->v1; + U64 v2 = state->v2; + U64 v3 = state->v3; + U64 v4 = state->v4; + + h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, + 12) + XXH_rotl64(v4, 18); + + v1 *= PRIME64_2; + v1 = XXH_rotl64(v1, 31); + v1 *= PRIME64_1; + h64 ^= v1; + h64 = h64 * PRIME64_1 + PRIME64_4; + + v2 *= PRIME64_2; + v2 = XXH_rotl64(v2, 31); + v2 *= PRIME64_1; + h64 ^= v2; + h64 = h64 * PRIME64_1 + PRIME64_4; + + v3 *= PRIME64_2; + v3 = XXH_rotl64(v3, 31); + v3 *= PRIME64_1; + h64 ^= v3; + h64 = h64 * PRIME64_1 + PRIME64_4; + + v4 *= PRIME64_2; + v4 = XXH_rotl64(v4, 31); + v4 *= PRIME64_1; + h64 ^= v4; + h64 = h64 * PRIME64_1 + PRIME64_4; + } + else + h64 = state->seed + PRIME64_5; + + h64 += (U64) state->total_len; + + while (p + 8 <= bEnd) + { + U64 k1 = XXH_readLE64(p, endian); + k1 *= PRIME64_2; + k1 = XXH_rotl64(k1, 31); + k1 *= PRIME64_1; + h64 ^= k1; + h64 = XXH_rotl64(h64, 27) * PRIME64_1 + PRIME64_4; + p += 8; + } + + if (p + 4 <= bEnd) + { + h64 ^= (U64)(XXH_readLE32(p, endian)) * PRIME64_1; + h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3; + p += 4; + } + + while (p < bEnd) + { + h64 ^= (*p) * PRIME64_5; + h64 = XXH_rotl64(h64, 11) * PRIME64_1; + p++; + } + + h64 ^= h64 >> 33; + h64 *= PRIME64_2; + h64 ^= h64 >> 29; + h64 *= PRIME64_3; + h64 ^= h64 >> 32; + + return h64; +} + + +unsigned long long XXH64_digest(const XXH64_state_t *state_in) +{ + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH64_digest_endian(state_in, XXH_littleEndian); + else + return XXH64_digest_endian(state_in, XXH_bigEndian); +} + + diff --git a/external/lsquic/src/liblsquic/ls-qpack/deps/xxhash/xxhash.h b/external/lsquic/src/liblsquic/ls-qpack/deps/xxhash/xxhash.h new file mode 100644 index 0000000..45ecc9d --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/deps/xxhash/xxhash.h @@ -0,0 +1,160 @@ +/* + xxHash - Extremely Fast Hash algorithm + Header File + Copyright (C) 2012-2014, Yann Collet. + BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + You can contact the author at : + - xxHash source repository : http://code.google.com/p/xxhash/ +*/ + +/* Notice extracted from xxHash homepage : + +xxHash is an extremely fast Hash algorithm, running at RAM speed limits. +It also successfully passes all tests from the SMHasher suite. + +Comparison (single thread, Windows Seven 32 bits, using SMHasher on a Core 2 Duo @3GHz) + +Name Speed Q.Score Author +xxHash 5.4 GB/s 10 +CrapWow 3.2 GB/s 2 Andrew +MumurHash 3a 2.7 GB/s 10 Austin Appleby +SpookyHash 2.0 GB/s 10 Bob Jenkins +SBox 1.4 GB/s 9 Bret Mulvey +Lookup3 1.2 GB/s 9 Bob Jenkins +SuperFastHash 1.2 GB/s 1 Paul Hsieh +CityHash64 1.05 GB/s 10 Pike & Alakuijala +FNV 0.55 GB/s 5 Fowler, Noll, Vo +CRC32 0.43 GB/s 9 +MD5-32 0.33 GB/s 10 Ronald L. Rivest +SHA1-32 0.28 GB/s 10 + +Q.Score is a measure of quality of the hash function. +It depends on successfully passing SMHasher test set. +10 is a perfect score. +*/ + +#pragma once + +#if defined (__cplusplus) +extern "C" { +#endif + + +/***************************** + Includes +*****************************/ +#include /* size_t */ + + +/***************************** + Type +*****************************/ +typedef enum { XXH_OK = 0, XXH_ERROR } XXH_errorcode; + + + +/***************************** + Simple Hash Functions +*****************************/ + +unsigned int XXH32(const void *input, size_t length, unsigned seed); +unsigned long long XXH64(const void *input, size_t length, + unsigned long long seed); + +/* +XXH32() : + Calculate the 32-bits hash of sequence "length" bytes stored at memory address "input". + The memory between input & input+length must be valid (allocated and read-accessible). + "seed" can be used to alter the result predictably. + This function successfully passes all SMHasher tests. + Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark) : 5.4 GB/s +XXH64() : + Calculate the 64-bits hash of sequence of length "len" stored at memory address "input". +*/ + + + +/***************************** + Advanced Hash Functions +*****************************/ +typedef struct { long long ll[ 6]; } XXH32_state_t; +typedef struct { long long ll[11]; } XXH64_state_t; + +/* +These structures allow static allocation of XXH states. +States must then be initialized using XXHnn_reset() before first use. + +If you prefer dynamic allocation, please refer to functions below. +*/ + +XXH32_state_t *XXH32_createState(void); +XXH_errorcode XXH32_freeState(XXH32_state_t *statePtr); + +XXH64_state_t *XXH64_createState(void); +XXH_errorcode XXH64_freeState(XXH64_state_t *statePtr); + +/* +These functions create and release memory for XXH state. +States must then be initialized using XXHnn_reset() before first use. +*/ + + +XXH_errorcode XXH32_reset(XXH32_state_t *statePtr, unsigned seed); +XXH_errorcode XXH32_update(XXH32_state_t *statePtr, const void *input, + size_t length); +unsigned int XXH32_digest(const XXH32_state_t *statePtr); + +XXH_errorcode XXH64_reset(XXH64_state_t *statePtr, + unsigned long long seed); +XXH_errorcode XXH64_update(XXH64_state_t *statePtr, const void *input, + size_t length); +unsigned long long XXH64_digest(const XXH64_state_t *statePtr); + +/* +These functions calculate the xxHash of an input provided in multiple smaller packets, +as opposed to an input provided as a single block. + +XXH state space must first be allocated, using either static or dynamic method provided above. + +Start a new hash by initializing state with a seed, using XXHnn_reset(). + +Then, feed the hash state by calling XXHnn_update() as many times as necessary. +Obviously, input must be valid, meaning allocated and read accessible. +The function returns an error code, with 0 meaning OK, and any other value meaning there is an error. + +Finally, you can produce a hash anytime, by using XXHnn_digest(). +This function returns the final nn-bits hash. +You can nonetheless continue feeding the hash state with more input, +and therefore get some new hashes, by calling again XXHnn_digest(). + +When you are done, don't forget to free XXH state space, using typically XXHnn_freeState(). +*/ + + +#if defined (__cplusplus) +} +#endif diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/README b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/README new file mode 100644 index 0000000..198f141 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/README @@ -0,0 +1,3 @@ +These are based on a first couple of blocks of encoded netbsd.qif + +Table size: 256 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/preamble b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/preamble new file mode 100644 index 0000000000000000000000000000000000000000..580de759dcd5268fe863adf304e0617256107eef GIT binary patch literal 317 zcmZQz00TxK`ICV`pYhX{jcXN?x8tqZqbIl8!B$H{GWV3Ppjr^oT4GuGXBVQ9Bfermg6 zLW=ID2Mqj+gMC-Zl!(V$HTzDR{$DPnSzu0mygs9WuKujEiGg4vg|#y6OIaB9EO0H* cyTg4d>EeD!7=THg3|I&-oWkMm44AVS0N2@$*#H0l literal 0 HcmV?d00001 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000000,sig_06,src_000390,op_havoc,rep_4 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000000,sig_06,src_000390,op_havoc,rep_4 new file mode 100644 index 0000000000000000000000000000000000000000..b001720e639e5839c548f09d49ec2b3fc7ccaead GIT binary patch literal 76 xcmZQzfB+^22KlgQ3=E<`2E!Q^t19ND_3ew#L+JkyfJNv(!{V!8(8O@;6adslBvAkW literal 0 HcmV?d00001 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000000,sig_06,src_000579,op_flip1,pos_14 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000000,sig_06,src_000579,op_flip1,pos_14 new file mode 100644 index 0000000000000000000000000000000000000000..e64ddbff74b15c20db459bf6d012e9efc5eab85e GIT binary patch literal 48 vcmZRw|F8I;kNppm{l5l=JLdm^K)oJF+!1*G{P|@d27~(lPe3yN|1$sp)4(C? literal 0 HcmV?d00001 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000000,src_000000,op_flip2,pos_12 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000000,src_000000,op_flip2,pos_12 new file mode 100644 index 0000000000000000000000000000000000000000..2db588ae51db1a16b176c24690593f9c908eee86 GIT binary patch literal 136 zcmZQzfC454hJ-ULO$^7*o1DmJNO|+FzVzeCnKO+ub{m{7*}g+)k^0}>1(vxp^9vQ% zJP1&?s$yPR-@aJ=yZ=Uv|=>2u|^6H8v{=b4ulQjyn<(-_lYi9QE no&F;vs_Za}eAu+ZiTkE7gzO8_P++~vpxtX-xIN_P;(8qb(T+L# literal 0 HcmV?d00001 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000001,sig_11,src_000579,op_havoc,rep_4 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000001,sig_11,src_000579,op_havoc,rep_4 new file mode 100644 index 0000000000000000000000000000000000000000..1f0db89be417b582e1dc63d7d2396b6970fa99f5 GIT binary patch literal 54 zcmZRw|F8I;kNppm{l5l=JLdm^K)wF|e*q9!|NoA_^XJbm1Mzd9*#G+fPkk)b4>Uks9RSN59e@A; literal 0 HcmV?d00001 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000002,src_000000,op_havoc,rep_8 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000002,src_000000,op_havoc,rep_8 new file mode 100644 index 0000000000000000000000000000000000000000..13524068a421de7bb07634cd060ef4289394fd88 GIT binary patch literal 147 zcmZQzfC46l3^-s&U^v6l#Bl7q$%%Z1lppWvOFy2RIny{}x54R>?K^}PssHU=V3|8J zzpw$QS>39Nd1-z7M)BWmHf5WS8dsdX$ZoxP+KZz1Z`I4IE1LNK3NlUBxQ@gw%$9d@ g=B}C9zjykNkf^dC4F%S#4BEZch1)}pF0R)B0A{{C6951J literal 0 HcmV?d00001 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000006,src_000285,op_flip2,pos_14 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000006,src_000285,op_flip2,pos_14 new file mode 100644 index 0000000000000000000000000000000000000000..458ee506aa96ac5a467fe08aefd69647b43183a2 GIT binary patch literal 24 VcmZQzfB**|<-m{t;hbS<0ssxh0y6*r literal 0 HcmV?d00001 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000008,src_000285,op_flip2,pos_20 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000008,src_000285,op_flip2,pos_20 new file mode 100644 index 0000000000000000000000000000000000000000..002e7e43f505355e072a271acd69f11895a682b8 GIT binary patch literal 24 UcmZQzfB**|1;QYZaE7G`01Ji!GXMYp literal 0 HcmV?d00001 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000010,src_000306,op_flip2,pos_75 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000010,src_000306,op_flip2,pos_75 new file mode 100644 index 0000000000000000000000000000000000000000..62572c80feca850bb6098dd0a918b701378a39b5 GIT binary patch literal 77 zcmZQzfP(*T8O|^?Ffg1qIZ>_N>=iXLzff__+yK`qY3Zf)?Tf{Kw^?I|plVGx4*=5z B8u9=D literal 0 HcmV?d00001 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000011,src_000344,op_havoc,rep_2 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000011,src_000344,op_havoc,rep_2 new file mode 100644 index 0000000000000000000000000000000000000000..f97d9f72e9b141f7f1bd52111360b5dcd6597754 GIT binary patch literal 31 dcmZQzfC8q5pZ^&efE=a-Akpw22#%dM0RUW738DZ1 literal 0 HcmV?d00001 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000014,src_000366,op_flip2,pos_28 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000014,src_000366,op_flip2,pos_28 new file mode 100644 index 0000000000000000000000000000000000000000..a71313e4cff591204cc86b55dddbf672b84760b9 GIT binary patch literal 32 ScmZQzfC76Az?8tia0UQEu?3v~ literal 0 HcmV?d00001 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/README b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/README new file mode 100644 index 0000000..7036633 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/README @@ -0,0 +1 @@ +Table size: 4096 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/preamble b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/preamble new file mode 100644 index 0000000000000000000000000000000000000000..295dfa6ebf3bf2dcc04e89a288b4131efdb9f8cc GIT binary patch literal 27492 zcmeIb2|SeD`#(N*HDr)|-z%gfBv~eFkyK|NH-5uh0Fwrss;qL*L|+{Il*Aqivs*P z4TBk`*wmY7PNbvu7B}T26 z=`4-oUM=xwLT7q=dh>ne+A7zWcGo zN9P1>_>T4?d7XQ2u2s6^%F1=c~SEAI|3eh;B}uRToDxunS!{Dr!jS(D3( zsov07XZLW(Mfm4Oj7yx>?=yVs4NXo?%XSXIzbt98NbWW?rIJ>GRiWz*g&!Ghb`@_q zJ2A6aC-1FB5@ojrUBAOSUo^sRz#ys}`7W@%w3Z6=7Qu-UW14H1XJ?P-^{GDy>L5kp{D=zhM>chyPE^w#UGH0J_;)t^wg!qMp1y~}E3uCgnk zQiAV&U(fKlhY@Jna9$PTmzc=Q!MRt(tM?6^edi>G8>iJuVISL<>n5kteK{)snEl+= z#_N^uXIi+>-#YaC%7TTI+3WT^-1vylZMcToOJ=Yvx7aT^*XGc`8Rz z(EeTxN8fz7sPWmXDC!<33m@Sywv_wVVdnIHi;+rgXg~h}1TzckW;S*XPNUFYysS?A z9(N50)<*;MXF#)ocvdTrGHLkrVYJ#uFWvK`WtOVt!MJtfT@@V`K45Wu-S1Mq5rm?l zp4r$yfW&naE$Ap6Cg4^dVLK{xQZYCN7%ll zw%;NU|HGaqFElQ)w2?(?B>F|CRcvAgEAmXf>da>2Oq3b|Mro&4K9R37UnLysO7~&Q zo$tps)yc=@wSU?i@VIvQ!*+pv*M{XCxgMUsGI*}#Bx}_4m&uvO-C8bznwtb9Px&@h zBHz}rTBc9$J|`dd3(e(KCIYui)0jQuYyIO=o9eZ}JqzDYk432%*GP3OeLXd8H+!X& z>ZPyzliJoJ^PQuoD|=PhGTx+5A008c{H3q`hgpaAm5#xeGRHiwH$e`z-C$<3VFH*6 z*z5vNDqgax%H4sky~@uu2l?hHB9F@!L*$CJDIHM-)yx{<)RoDoO9A^E@qv*1%&%P!02xE;IVT-a^I&hZ7T=j>{vij~2RCSm>^5E&^9?S?!x6NBITBHxX zXPo8M0K=G~sJ5t&G66j>HQ0t&*@=RZ#SinkKNIfnt(Z~!_0vz4S@SI14n#@f8Z8Co zom1C7Yzcw+qQkEZgb}Jts4+dL@fA?xvEQpO{II#of1(;2KsCHUH9q}bH8$P-KJ-I( zdjFfa1w9rp#a;Bew9{+Nl>f}&&13ZebU5AA8!&n$51R|p!zg6ME!^K_cv&)QC{q1} zKA^$D)=F+XL3hBl5qv}tejQzrYldo`Nu#$}4(+kw&ab;a%2gw-VIPLU;9!)=GEo>} z(#X3*c+&&1Z>ic^Za<}yw`IQNxIFyUF8I;^E8bC|-cZYgYG$)h9OLEp0|7tt>U?QA zFP}yOf51`6P%=-s=!+dU#%e7Feln%l5Jr=CLve5UN|YlGLorj#al2=ruSE=m6U>uf zosbgQFg#@39!|Xs;9H#8k2t_Am^7&?I{va`puDuKYdjhO73~*AD3TFK7*R8JbVU;j z-AyVAd*%MHX`|=)auAhT6#vVh{msk6H7a4&?N|3SJ^ysZ+`uQPOPDzlSEWthTb>za zm}+zT&g-N=-RL8nVzkn_HWh|@`3=sRU_=X=sr=9pky8WL2rce9MkTjX?hUR4Ch#o` zN(g}lL+CHe`lkcoPW$jrLqZ#B@z3IlK!EQ-7C*#_s72oT`GMof*#n%YV*cw!3iGm} zO*va%2Bo(hHgekROQ@C6UE2pCp45$DyY7W9A-Bm*zj)WSXV=Wjbc?=^U8i+(4$SN? zwxkF#imk%v$hTZo*mvf|bL&@w{i91peFN`QI50cEdBQJrEYA&Lyrh>FY+FB}oaaa!s5pAslrnhBDrHojE& z^ZW9WZm!sq?Gs;ot}mC{u`@|Ifldh5e_=fZy4 zt}bZ-Hhxi-I^(2V?$ds%eEB<-+RtWV(C51Y`3sk^;|!Inpq8uP^BZqLWvcy}bz?-3phb)$}L^If54Wj5z#2Wj(9y|%0vmPw?xJ~w+m z-HB;Z<<-L2%#|ipmAs{yrWf5bDVVgEgAC~|7l%BeKXxhZ$+6`2%9~5o{_yDM^}&r^ zVN-k+p8PFlTc$ks_5^>9mc0xGQN5c&_Zij8gl0uN1QA27DECZV1_?KX_!`}91rqpR8}E-gpue3aye z^Z9Ds`Gd{B>loTn%Int;KlsxK!Vm?a8^MJ@-Re5*(5j&h57MQ>7YL-JMcgfBn1k;r$EBeGFQkf7Lj7pYNFI?PSfT&2jlPCmp);GiC(q z$BLv*;na+m`H79YQV=w}-2Ri2E}Xazbn@S~xe7maLSg4VrBf|+mnPqw25(A`=l~HU=Q>fBK5K_){i6Le zIoo-XCVsx{9vFx?uUxHxtu3)A7Z4Q(s6K_h1#MrQAG z!D&SPfyeOOy^HboKe3X;t>OccYjt^=r>c`bqJe?^ewnlF*0r{1VKS-}0-|eGFP&$AoX(0#*bkA?HgeGEe=+^~o(w3Egqbz`$GihnJh()_N0rOZFx<*LIV_Lwj~}<9Ap@Bjut@xia4$9{ zdc}JMAwa~rd*^QAAWE#3sG!!rDguiPgNcG~9v**0DEdbH)BtlFzT{v~uKW%{xnkJI zVE*Cggv6-ZIo?oLvPEszCvNztsM( zqxKFHoOANz?rcVVRZM;jR@##ZZV76c;K1Lk=0gvGO9FhvdHoDyt=>f0+zObJ*4_+Ys*}~-`GAeFnnZ5$=9O%R(zlanK6*e(@$eoiHUkX$cOkZ00V8o4)lrmv6v zF_cJITPdma5;-PCVZ(_`+k`u_`Eo(%L?R)*UgAM_QIy4{d{qC=We@lDwc5U30=Ulz z9rmiq%OYaRSYudQD;XeR3Uo`95X$8&iU_J!O%YkTQZI?C)!)3-b#UU$L)YNsH4)pC zKJF2u>S}-N03a6u$XnZr4I76{7>p(Qzac36H^eB<7S^)|a9DbbX$UIM`?ItJ}kM}&KsR+W1;Z6i&aNn zzG92DdrjrA;HhnipH86Pj|C{CU$DAijj)J)XYV~kGlP16P%xNb-4^W zDcL{LkI?vCq-f&i-#B=z)ZMd@EpF5lPK_zvO~}q@xe2!oL$aOD^!mXG$@DO~4-b6e zTbKDS(=QbS$436J;8fdcVITWKr`KtGnCJDQ>GL)H3O%e*6(neK0L>1xtsB?2i6Q_;vu3A5PuI_(0mJ2JH`RIXKhGJ_l>VDcoY6iQSd z(O0TTcB(1kuz?rQB&v1RIJF0Vw6POr)u$*mcZw+eV{qQAcG=cZ(<1{iO0P{%y(~%46iLv8 zGAl+i%WHyWC#%MV=_&iH>^~w~0vr$RMWlNF7+@__8W(WLHm5d{dHtlit_^1Eqs_y7 zLU7}8J2zC&@w*O9+>&kK^2^w^O+TBjCPCW+(AJoV2TGFls|P&{0KTHRrO|!DyGVY~ zv3OYhym$~oc~QD#=%oEzntd})m$32<0ZBuYy2>Kb2dTti>ZvPs%D7e%O((@z=ZTPm zlj>3l;F$rldQviM)= zB+_u|NceN9DKv;=o;^OmTPQ1k4KjXVwvY8_l2+{{(IKwKWV=s#-_qbfwsXU!N;(bX z`VCYjrsxeqWoWw6Se>8Zjj=DfxTUB?q^)=|s_bQ4>vfR8yQfWyo+RKNzs%6 zniXi%8@wA?8E0zl?KE9B?lD13Ds*bolyt)M0#2Fbg7QOtvtLz)-EeM|p;Eg}(9$c& zb$cVr4Yi132C)kiLIT)f_E2uLi&TI60G2htBJtsJ>`1!)(Cz+X{Pv}21Rs4ysNe+| zxy48ng<@Z{EFInyd8kCs8tN$a$0juIs2rzcsiN(5FY>R3OtI?Ako6@JHL3tGTL9Lz zwqZyQ6mr&(rc}UHMs`?;Dzb9qkaCN@f5NlofZ0q|$0v9_vTG<`_>F|wXXw<*#Wc5|{X@#)R!#Gb$ekp4guE6ZV)SPlgI=EE8qeFHmXb9Gi8)wx1TXmX~B?T`cgXdnni7nAm zn-_5(YFY8d_NbdAXzG7~R^DfY$b!2B2|4{pVI6||he}sU^s&ASl2)29C?2=Lc@WV^ zlzDt&(8Q?wM_Z@t-cu&e+MmsD5U~UX`D__c4zDIbLy{;G=lJz0nu6$TfD3W-FNJkx zd8uC%1nEepA^G`}@JyK6OMKIcBHtI&@m&yskHlv-FLs17M9{?caAQq!T7_eP1Z+P5 zvj;}fgP&+T8YNk!7vPZ(#e&MBe7F7~J4f47~Iwkgd-w)_>Dx0`Qg_IcDX4Zgd#IA&;Lzi_8K3!8}Pq!ckRrTe|0XFK9vv}XpsSV zY0~)8PmA{92d6tSP*nc+ARS4#@K4imu_$?|7o`N=4pu?5*MoqlH1g9_73bpTwk$R% zR{jkTaxvyAhz zy=aAjrE>Z-7yN710q~eOGXwEE2uPMRc{!K9t-f@5^1v@C#= zwtMeP&hDQgq!N1TB?|OR>eKxB^#(mz-Ov50O)8-egHf}wz;Ttgz+}<<#oH_VYcVrL zt)fH^{OitTh7gc9OJckDISbKzo&WwlS(YpNwh3)}xh>Rk5v+xldKhkC@7dC9WL|kc zD0fHBz^KMn+OT28$ynnl@R;Na@W95nIJY-;M{+O4BjQi7K@VO#m2_V>`q+^h#hOl9 z2l5AxA&(u8cm9^e?3G>HAozMWuCOm}p}(Zk9?H(KU-=311zRk10~7}&IBa#We}T#X z%dgJg@&}D7UW6W~a0d?#jN%?!`B4Yu5FV8DT_dp1dLvE$TOcByZB5D8dqToJ+1prb-?Dfc8xg~<+yn|EE&;0NF(l=0maJ{PBv>SPUp@Mm z7Nk~^W*vC6aeX%kGph*Z|X zu(<&$>5_K-_4iq_R*ZsJ8ycdb7sZ9mZJ2C`f5r9UDa5uf-w91CK!YMfEkRE0bA>M^ z9N3UAet<(X650=rvj;Ma;#PBTZ=TMnmhSQOH7Z+^zS~7DGt-putMo?1=M)FWKTd6N z8SJWEa%$hC`sJE;>%yV;TGZc^RaNtSsL)2szq7DirMuW98E;py+^Cw-)-`u} zoS{6qL0SI%!j%S}lorO1(+=pL3)3B*?9vtDW74w=1(g=1)9)>Bt#yHQ9wjCTn;Sdf?cN>ruCb<8dAgJSb`|*MQXX%(`(m zPV%fQ@K9MRc8a(*D!*wfZ7i;^gLt)9+Xhv{h<4WpguTU+#muzzjfzfFdba~ zTnwsBdXwznWyAUAzbSd+UZ(dnVKhhv&n!8hR?=pz`gp><`$1~Woo(fBqM65@9Z&Z} zZf0)YD&lA$&$hN&prn=gh_p!c!-4$wBZbNN2Qo!$h}}@6G@s$!F59P1LDKTSgh1WC zSn>}Ycu;dtcbb<$)i{?^w%^LEMrbi`vE-*9A(5h;EPaS8WOSXo!~eJozOO)n@+UL_ zVLkw-*N0hxYzV`0+>T;iKz$+aEnsdjWiGut+rk2odzeOM9e48N&QU!6-lE-fPVZ0& z_k-%Wew1KSE@p+kmDAe3trZ=b^_Zp@<_BXHw(qiVm}{8XydTO5O5|i-z#klIxLGYvA?4*^_3|H!p>_oQ^CYM+i18N&GtBGFr=Nw)9ydb${Vo7iTtU zz9p8*D=n^{K1{_w+?yQR`{{*S<>K4Hm&1ql9lzOjS(PT)ZID0pedyNKx_?DbyP*EL zK)gygT((9aG%GLWT+^mWj<=_H=6BT9sbC;N;t&zdu$YK{xMfH`;cXW-FCMmo=3yvP zS!dpoCSpX75d^;&f#eWER0xp}39+*Q@I6wT8;B#$LVV^4{wVr5PuG`R^An-kG3c9V zVX+wmxx+wiD>I^_D}z{+Y#J{uHU{!=;4%cC^+IHGhO0tHfDlOy^QCaPF;(~RFUg5T zQg0?==}BvNbiLf2B3$P5{XGsx(Ycmmnq*pbY`q*I8|soT+cx}aPrfWz879RuS}#}l z4#(~1X+RgUA8l3q4sv*;a>ncB^6>53IT{#+d;*X=a3BCLuxTtO?SL;VU^b zYf1V2_WQ3NGWvD;R<*OY5=E8r~$<4c|PDUTr0r|9rs%n&58 z^Fc;UlR zfpEGmbaUUm{&aQ?h!p^_;iFz%{O`W`O`_ilX~(2IF+-CX+%@RYLC>TjsL}VTY#cVt z>yT(+KR3XDUuU(9IPYK9{M^)|HbD2J_YEJ?U_ zUPG~58O;%1qaIrTauTTL^~$o26yl)&MZXF)8MV z?HQIIIHXKQ?lh2-1~b^Ii)kYG&wb9rAp$a%#TLS395#@H$+iCLlrh;+011NY4ETr( z`wYS{?`Jy-U*iTdVs&IX00~oGT4D*1Z*2_p@o}l(&rkn&vOF7|mVWhb zhW}gqjxmnFg~^#z=X?CX%V!eC%2@zn$wy<@i8DRpcI6UUYW8G1B(*xs+);>C$Rnn_ zGaziJYPOcD_QLjJ3gs4jmU0u!Pjb6_cTIE6NB~uXLsCx+jie2=FLvoZw=2aLs$E<# z0qPupvI0=JrF*FrsCJ7p$cuu0YIZWgi5afyRE71kdcm1Wol&8i{JYFu@mLfhFPr~# zKDecU$2QKm?*fd$&n_>>+80{icCmo_RghpglEvaMXVu>*ZsyjM!s=8$9HqpW;_z;e z)dptnQOfT&bQPCt^hbqu=qNrH`NBM>_Oei`dEk`xNzP$TA83tq-1X!IRT3;GfMpBX zgnpYxl+#(dH{FE4YQSY}RXIbsET|@n>1-W7*+%Rad8N`>%&rxNT}v;l z98M(dG#3&@GT*H!Q=@qX+i9Z4Bn0DxPgS+J(NlU1Db7Yxpv;_wWLu>DSMyaHc+Uu* z+NmSopP#5a&eTqL~or^ zd(n*?x40ZpEg2c0W#|1``DHbfCRl6>q$fo?zXr{OK~SHnIfaVyj6qrZe#8koM#YH; z{}?3+O;(vI+J5+}l9ugd9Lb0*d{ScT2A(*DEd$<3ecqqUF3au`4Wg>&Ovk1P3N0!; zF(hsK1E8G(HqwjF6I|BA14;$g>_VsshII`(3OcmQif6$iP@S)oCtjiYqKX9-@cAT# zkqgd^!(W;?>m-kCE~->`F)VXn!sXzKomkf(d`S>5kZ&K=dq?STFuLtKSuFm$UTZ^Bpj5GJzf)zWn2!Se;vxBAH3r)lsORdg(6aZDx{`}zv3}ESF&>bm z)fJ0;sLi7uqn@DFXhsYvGRZM-7&Aj4hi7nc z2jh!bYlk1E43WkC#af@V6!vc!jbV}>!sd~t@lD09ZNH#!ZCP(u?&V9!G(WRuMU`6c!|;vdfZc+P)pdO)!iiJ^r9QW zy83Qi?srJT+J!KuGfLI7Qwduh!i zK4#Yy9F97orJd@f?!{a-SyVEAwL@dF5F+frC(&+0q#nzM9F~AXVg>^UL+lgN-BC4* zneJujm(>s%P9HPuOVeR$^mvYmE{`5+_S;o0%Yibp>{TsaWA_^k#>en7xSh{EtGZa+q|Ts+MI{bS9xOWa4T zZ$B2(UT!^d(E4!Pb2j6JYfrAd7g+LBrHvzAL=wBGCJ+ls{ms{rRNVVWP$1Y|Kqa?J z5x=>?tDbU**2JML)V`{( zO?heRQrLmj3voq*f#`OCw)!&fl=rNY{}GOT9WwJ|imMBL#q1X|Dd<%oDGnrwUdQua zn$(wnQvJ#^KdN+mJepJ@WL-7S-2b)8^!`+8I!}4>iEu9&rG%~%J=Z_(5PcNKGH$K? zI@P5mwe*3Ea>CZv6YMC9THfuTmGI|_WzC-=r1cC35@MibNraV=rowkpHnL^OuTxO1 z9zLO@0@r|m18@=pxCj6tbOK)X`m0=n^X}2cBvxUETZ)_kL+0?d%3*7_A-O-*9c9W8 zN(ld0IYEjseAvMwx^L;%p!0JIMW z%A9bV@~d1$X*?F3^8{}p>M&|Pl}g6HF?>;NOWZc4+~0=v==D+J89stl92(83R0id+l95C5eKLx4u;Izz>GIhrycd=` zen7UF>!f2K@WrTSf+e$#@wZ|Vv2p73`21 z8~7&$OiU@w!{$vLnNVAB4w6Dv!B%j@Ju!{G?~H8obJ55#9uc>&`^(T9&BUz=Z!`%c zv;un;^y47jct{|XhlLpcq#q@{rBkE1cT!NdsiRE!gp2HAVKE&yep(ZGUB1|c>ex6D z6`#GIH@}qUwX$p}=WT3H7NFj-`;wpnP}sKC-&w7xhg>4`IJjbAFsgJ>u)`^sb|n?| zlc|Nm;hrT`p-OkEM~!0bgMw$bX!q&)1`2)F^}2^Svk!%+Uh>bbqJ_2t8!R{CQ)CmE zm~BG7UvL>LbGzF@*en+|Lxs4*EfFzX4DwdEM3Tm~1G-IyvDl2cLGf-G5wp2$hrIZKp*q`b!kFjYs=ms`>6KX+7;}B<% zg|-p+0;@?LLb{&GDTrK#A0jG{q_TyeJUp3H8BT4cmRisV?~gZ9LyIo9Z(+tdd85D4qSZ%VrHx_N6^k;Y~ZYR=kv0+TkN=+br9bsf`bn5|WP&^rjO-yw7e)C;y;~=9VBz^C0 zwF~c!h+iGjYnz2*1<5m{=^uN6YiTc*pF_w~Yiw`C6IqA{14v7LUNvQ0UKtVV*vYnG z=jSjw)H60vnYHQWP_pco+Ygr!Mr+3xp^w%Uv6?9VnFo|XdXsFrndUc3hVtn)|17(V zkd>SL`dFmiV>*5;Jtmm?{6?KV)>bmaB=Xk%pC3T^_XqN&{y(4x>F7-AX`t%)8_4MT zr68c_;QC5K%%TcPhgZ*o!Fv%bwv#t*ql6dQ>N%eYiSzrxy1I&=Ww&A-1;n2^hU|;N za`84U-Z z*0nB(*g+BQ8Pfa5-pg=*z%SAkRH*!C&=!%HBU;_*j-U@nT?pCe;Ga$3tir4|?lUTj znf9m@Dw38H{546fgPpX#IQ&EJ^KWrmklHpjVkp5MWOQw8O^GGdVU+@+u0gZ08|0=`R%@z! zRA;OFIPZU_)YV~x^}vY#PN{4B0+BPsdME7Y3;nlZ(*I7W|7uE&2Lm-rgksH<%1}9L zP`Nm@A;HqVkx~C5L?X6b!cC#-UmgZyMi_TbV~^|b{XsbP#d68t5RN&EC58(L_la>q z9B>>VJy@_q`7~b~aAEj~^2m`xN)h2kxK~eT5?+Zy!;d8BcqB~X%#UP7p_wg>_@)gb2uu6C<}oae^^`aPGpgCH<@OWWu*Qy%BZ-8c>Tl&?>V&=CpkK7zYsT!Jn3~~ zZ)ET5fB5G8?@Zl6K~eSf2OZTXiK~R|A7~wf1{?4~>V{aGpFvCm2hpiFcu$plLEgAc z9q(M=F32H7KkGTl(q+(l72fvO1c^+`7!X=x=I;m3KuhuKr&MT_eGfhWhSrs6phYHV z$0l?oKoPMRIQ)<}A_hs@mY2m6gD`%Nz@rwyfa{xt!7VDa14H*+pwjok?mNl&6%n@c zbNC-Z5|6qtg8yY=B=>5;a0UL;h1XfEu}o3899Sy$Ay`1 z69`Yq0K`ZP_CHJ;u5St9MIDq6Q?31PH4vDA z(`{%-mp@+nH^C!3B2+ilKLWPs2w%cK1_-VcdHnRa$1E_1{)(ZguQbo+@uR-)6-6U% zS&*_|;282@aSnFxp1vG*iW4$7yv`OJzp};UVF{yHoG>_I1qn^*_k#$L(*Y<<$>Lak z3$4z91vAtES!f|{WvSV4V{wnp_-+d@P2)GVtXqyScU#$%MfEq<_0GyicmHVFw!HAve&t|3$CV)`!n?RnyQ@ zBa3vQDxHmnj#pBZSajulM$<~izby1!zbrZ6m6Y3hi4QI13vI31{utkHpm$+)L>sCI zt!ntkt!ntc*(#_V;7SK4#fyRyaxvjlE2$$hhpw85HkA0F>n7qYqXgS>xC;drh8ue$ zlJcZ-u=d0joarDH3!RP$&dVcnkltUdQ~xh5<$>LO9}Z07kLIfp@c&aFrPb61I^I`k zDc$L+h`Y~_eASaP^Isgo-US*dEH5V1bAI>zhTRJC*tDF+wBnx~#>`)IrFOhBZ{$)m z`jr%C@ZB~qrG*ly`AMI2)O6)@S8ahjzFi#kOQP>{dNs=~Rqh{_puXZ+NdNxw>&q3R zwHHqxjUId1#c;@KDs;!fWb>B`ql$yxpQlc_-Q&-hyT0$!R6FOy#-t_eF_5{t_DwE7 zaG@SdKmUWt)Z$xPo}$b~RnF}hx4z6kC&rfWAv|-#zI7-BD+;&Rp<^`A+no9R)v5JjFOlO$uZ@_$QDKR5P482bUgr{BP)gfEuH?KmkuFFw*Hp->!HvNdLCRk;3FmPpF+0c zKw}^|i9d)vA@bU4b}|>pnM!S3!*QB4dG^Pr)2bgodl@xACy#|+OZl6K@C{zGjGr~; zf3(YM6@#q=Yme4nwfQ^%X{F$|);K7Kt=vC?BV`a89F}L0tdW(?Hm-sW@8#Rm?LP+1 z^Sa>=R-z4RKgp@nOu<>RrEaT$owQarY=MtA1L7b5pe@`J2vrubdR$#Tz&fh{Tcvd9 z7XTLbb_7NEGZ=IN(Qnen4=lNqz+N0H8Vp)DJi!$;Hch2om6A$L(dEvEUGxhm|n@Y%}-i$E;rg6}hVK5Q zB5E6_u0glww6YA*D$TZ%f@kGVo@QGrOHKR8^2+enZL0kSnf#-H7TW67I(C){*s z4&YGhv!>5*d)MQZl;S;>ae<+nBY+N#P~*fAX6S;()x_;#J)*Xr+NpLdRYHm!c9&&Y zu~b?IR6i35*h2tj1Hf>Ud?{lDRkIo`^=}SyrzVS2$GP2`dN1gefqyb+*dx(SFx_Ja zOJAI*^-}O9K`UB|#;`(@_w#QIkl+q$x_Lo}wUA;=gU-gO@q|NmuLCO0`=iG26rSM9 zHjkzcpN!tP$1?sCpZon@x2z_SJk&gv3p8)$b-bDct(ZiSIJB~Eeuo$hc5|n97T~}( zaWj~(#~39?{ctVZX~U4pY!Qwp3={bZ6OI35AD`XtcCYWU`W8xgw3jUQAT=2kx|^g; zdqfJxK{2u&oSK)N?zpL*gL=Z|G6hwnT+8(T+ zS-&cco1QV0T~u>4kXuxvPl3Nu!t+jP)8O__-^zw-n01B=v_-SdYh{SoxML5cgLj!Z zy%Zn;d`#MLE3Kos$7P>w1NT3}gp%m9Qv;`FwWvD{l?+Fh(e_XY!rgGKqZGXZqaAU( zsxa)TSJ_fnHhq$lpT}|KOuEAT7Yr~YXefYY1)4|LZiD4q|E5h|U?~%dabiwZmvTmI YV!n05iSf1kdu=THzvrp{1Oe;+09e77V*mgE literal 0 HcmV?d00001 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/test-cases/seed b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/test-cases/seed new file mode 100644 index 0000000000000000000000000000000000000000..c26505c0200f5ff224f0b611e26b138cb805ca3b GIT binary patch literal 108 zcmZQz0E6v7GQpf7@JjM-POb+LI$D KXLiG^>lXoy%r52t literal 0 HcmV?d00001 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/c/setup.sh b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/c/setup.sh new file mode 100644 index 0000000..7ecfba6 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/c/setup.sh @@ -0,0 +1,3 @@ +# Source this file +export USE_QPACK_05=1 +ARGS='interop-decode -i @@ -o /dev/null -s 100 -t 256' diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/c/test-cases/fb-req.qif.proxygen.out.256.100.0-chopped b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/c/test-cases/fb-req.qif.proxygen.out.256.100.0-chopped new file mode 100644 index 0000000000000000000000000000000000000000..1ce5358fd2308f5d1cde04e0a8f4261ec3d701ea GIT binary patch literal 269 zcmZQz00TxKxq_ux;J#pdz>N#_X^R>++q*uU`xedRRgFv!eg{unRk(hu&5rBe zmY805tQ503=FPk5)tep5zs{EXEBSBAg1cVJlqRqIzg6Eq@ufDO(GKwxpMAR*1Q$G& zZA;u18#~=zD0cH)&9&kZiJVeCu77^UMVwUiz7n!ANk{4H`Dodj$=AMVB*?pLc;PHm z{pVk#+nM9(!Wv@&xEnZ2G@dU PySjZ5KYzbv5U&ORDGhss literal 0 HcmV?d00001 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/d/preamble b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/d/preamble new file mode 100644 index 0000000000000000000000000000000000000000..0c4985ae6c68225876bb83c0e969ea722d1e799c GIT binary patch literal 59117 zcmeHw2{_bi`~O5msW_=b89EgyOP0u!g@4KlcX|a^Gk|jj4WgmNz8OxDm zU&lV#X6$1d{@)SD=vDE)o!>d!f^K)oZysJ?fCd;*nQ(dY>%bs zbg%V*(wl&Y5Q&ibS>Dq1O!zB)pX_sdK+45JJ~W`6pwV|^EuaXFJ+oZvet5!5e)*b& zf0mXTi!anio(A*Sez|T+d52FU-9q?O}a!tM#C)kTa&7ja0?g%X8;1feiTXDDfpA z%J>RRK-zs6sMTQ6vuC_|nMX@3)8N}fS@G^6f=16w%=X2!oM#oXCw~QX4Wpa7Ct{sc zz-wDtzDGF8?~6IMhSkQw_73$5ZovDHnE}(uQ&f)6JhT1Bm9JRmuV-5B0+d&O0s1(m zm0kcj2t;lK0zuBs4v;-g^r+vS$o_lqVM#uZwkMx#F-{?V49PK%C?ku9++5tyJ?Yfa z!ADBy4@B8N^c7R_(Pq~bzu0qFc|t=g=;r3PJ&a(l>-)^Xz^^a{w0d6-^~v^DDn|`v zAw?>80)I@#szTPHCLpFfp}sSaC8UFq>hVb9gcAO$A_d!}W6BJnv#-RfQkczsuj3e* zx}~&Ep7s7sGfpflTqo!Z@F{*gQi_F=pRaQ;BZWs>a8LbXLFt4yAyssEw&Af;RTm_EpJ?uw z(75n8;RRl0U$^4I|0s3ZX&vz8x}do5&9lz{-#j!aymBw>r8zht_^{*R!3OTCX?ps0 z(o@lwRn7fQ-lzJJ8#lW_2<)|$r1WN?*Mbx$J46XzTunbjPvT1oi>RcU>nn*@`wxux zg~zk&c@}qw9=1J$*bQ6?ZQ!Q#p>RvE@I%Kqsl&%4CA;2Q#+~{cIVqv%k3S^UCwlO5 zj^dTaT2*HE_8;$f8u{f4>+>iIz7flyQ`s}h|7rBe70`Z5XR1yvvznfJ+LG+x@jiN`md*0nRR{dk0;^##_tt-#fm7CzI zaJUHd>v4U2vni|j$fg1bhZ&)DH?X0>azak_gBbhW%n-%(r_ac%E+_Q_*h3_v!ksVe zEx5%zsrbIyVS7p{19g{WM5Y_Jrh({#lS7DfYMBkgs*+v@J<$+0udjcXBenJx$SF$Q zC8XUOB1)lfURg>(UJ1hJC*}Cc1BT(-o_{GgWz+FK38f8DzPh=P9bSQKv2?q&ke*b< zJiB;<-*kwILr(ZkU)@?2?VX$4WO&xltc1bbT(-q_#KO1y{dNO1Ha?ZHAdFhA9@ZAgYfPb_GOZ9Lbf7Be1Oa|i$~;u4jSe8C_plk@Qj5bPh3$&1_=spXGgEXoW+XebWd%+R6hG85P=VwvQ=-Alu4qDSui z$pdL)-a3NOWX2baR-dkK zWf7INyBad(zW!}hWdBKdVH)MUn>SRkD{+sBykhOm^Iq|7vk*1%!;4<=MgSs~B#5j{ zh%8`W)wT(VLS1UQv^z--DZtM0VCy9E&My60CYym9ox%+nWY{TR6q~MwO{Q5R1QA#k zqLOCKd4c<7s^gwGmf%?%?0wVD59`T|(?ek2GftwWAf;XIv%l0U{2`qFHs6o}z@G{U zeuMaHlL?>14emcvQ2nX}{LLd`s#*{-_3&1Ckd za*5mE9MYjQA5uk)h0?v=WcKCVhC8(zBxgq4q5ii*&XXt^WQVv#O&ops5u&ekY>wgQ zPf)!9sW8}oO+n3vUz8+>k;1RZqf)n(jkK%Btlb9j|{jfI%!O^h=XKqDa~rQ?=w z5h^!3%QmFu+f>Hv$`GM&YE9KagX8E;5lA}PECpT|{Gr|ZDtewHec+F!JB-!CTpG>m!HnZ&ya|2I z^6%v*1|16ghp9v;i(Z=#U)I(sb+);{w-zC`83ZD0BQ9Sc1sH1rTAXsm49Y!`@?PO- z@T*fVWZO((B@t&$ZnXP|7-ObCQ%W=rROP>LQy*>^9#G`2d;3;FC3)t#aIHBmGA1|f z@%cQ871S?$8u_i#8U&^)n(8Bt#Po)W9Runf%Y?D1K12nKfuDz{Kq&%EDn)d!g$e|r zSVtvcKvb)0GJ;5N=;RB|xC7ESe*#`>yy+FU9%|laqXGTHT~X1f(EV?5?PpQt0#lRE?S@=kjh|(f2fod% zypw=;K_3ZHFABD}J^GpPvBdvnjPy?{R&4?7OxYarB1o$FpI;?*n(e_8WxC^UIPPz+ zLG;I+>jm%a6W&t^v}i13`G9VTTV+c#-G#4ec+1j){cjkxBPyK~uUNBq42#Z;P~a*D zCTw)m9)$}eS+w60IPp!Kb%Q#?)#-h9+!&Bhl0dr@k`)<|RIL2wUW92ohQ}-yvSKvc=>rsF4GP>no zO&?Wd94v{=b^9c-j0^RW?a|rUg(tScCKy95aU#1)=&M=M1VjFCG2Oonu&d@IyGpXF ztFo&F2gcMh`(tZ=djy9XrmER!vfpWZ+;XnZXEu>RfU0-f=Q57zV-ASz6c*;0!MfJ# zhqX1sEQa#y82g_)T|VGF_DQKln3SVjGn*kJzb z^_^A^`I0=VEINloi%b=b!4y2XVUBvWGKearSnD+R-k7jhI=kaFw{5p#h1ep>O8*dz zKD6&giT|wxo3jRLZ8QMTzDH66tco`8(7$n3u)roWzw&n5*bOFX*bsUZU>~O zDRtD^z~65m&^lRS{~IxU$t^}o*ixm(Z4|Oi#Z}Z*+dBJsQUAt|GwjwGo320#F%P?D zoq|v^9ju&V!?`!s)ny5#DWLC7ylJoA+u!?)MWS(VJyY-Undb#B`aitvg&Y4_AE_76 zNBW>bj_Kxhv)Vfm+x85^;8xcsFxRH8Q7PtiF=JD-xLkdj(`!_Fr+(Z3S>SXEs&=fA zDP3g3z>CCb4Peli|<6l=t?nNH}mvS^+ z= zIHGEM{i8>JZ~mLc=lA`g&1b1*FfZ9J%#_qSYD|7^)5BI|9sLIZ;~5;(NPBZJ?Ya{H z1`vIcEXLZl7(Ti(dQlI*r0GLZ5R~Yqls}$~-=SVahLiu*rN}78!Q$;j?K7Qm&!!xP zOK?`IBBD2fY)cZy;^`-(YfiKj$ONTeT00U-_%G#^q%=*Bbx|1Fry^Z~n>jyqZMg!8 zd<4a+_~o}zivP2W2G7u<(bz>Y8YH6u%(1)YO!K{c5U$P9;Wg`7GEG$hloc1TVX2U| z6dTAf@U9VaL#}K3bVFLS!+xJ^p!klCu`mxSFK2hel9Av*%O+051~~NZ5c+_nq-q(1DSgM zzgvtS&fBa!;_xTbv;Q1lgTO0P7;ea35m*4pZU7_(JkWgdAEX@Fu_dOs3NV?eGEe_(H>-G(W~oxSvDH~MKGD;KKTrYJd;*^8? zSSf7JS@EbA%{KJGv{%&~_LpL0sk=p1g*ZXvZUI(=9Ee3o7+KpG@eXf_^%=QtZK5`z zvF*78R~MFs$luc5H^-Gjgb*C7duaE^EHJ7$Kr2Aw4O>+vXUI%T{qSJsMNW)c?ckH< zkC?~!309qE)ikHcfNQ%JAjdm6d7adY=y}p*io33(yMA+-ko3kamXX${UV@oDM^10lH@o=+Wt-+~lD7>+o$D+bWmGs&WwX~0_tBxz zW@^;-)DWt-G@(7>>UgPS=0GZ@xyIfyNWLvD279AhE#1rLWp~Ezf2O7;u)0tYwRtm= zQb(kmDv(pfXKOgUw1wNYh2h7;&hQHq^*>&8X71kbhtMrm`pAYyW5Kxd$;MDNt5#~) z395q_0XbNnkOfo)J>@buG^RoETX*(FwPv(6y+#)028Y7`Bg9}C?x&=)kv6^q4XyO!C7!2Ya4+@%Dy-e!=$#~d@tkC5(hrv zBO>~PZ&J1K-Kj=wzo2mam)H*%Q%*JQ&5Mms`$!-mfdufezBJFO<-L#dF3Cs9i{FW~ zk=7wD&r#CTh<^hT{HJ$3>6OrIHUk>b%);@^%5k2y>`UE|#vfr3MwbS+%;2seyPMt1 zx*kMd&u(v$x3=?`?QclS7t0&2HxlI5s%#c|0`LU=ugRys1SAl6Lk+{`#k}h8B+7+< z6G*X6tu@#%=GRGFo#p)5(2kOHJuKy;!e9Z zCPDF!6m5e3*RNWPANB+KpR{v=G;+DhofDCqPW)yrA|J_mp9X0lH;fE8ffyVtPwBGaP{P^A5cog8m7mh!mJB_FmcKJ%h`qh zX*50u0N?@pCrE+&S`6G5qL1b0VhQ%>I|N#Vy{WiZm#0oo3u=Qh5uMte15Lv(lKMR} z`HTYAIa+CX;Oo@$WABt871Bjp%l>GxDXl?(b&5KH~w;RV?05=FkZpQ+2n=(;PiD&6?)zh`E(85V%K(s>tjD%+*=_AeCtu zR&gH+p@6fFfj;AxSP4t2H}7P^#bde2&e9kP!{ANubM?EKmzjf}Q-BK^dIbz$Bon^& zOgO-ndY5vq(_B)0e(;vCWs&yb{1z7%vovFVqW)f1fLVhN@b;Etv>>Jjq-M-vFXoIb zndprZxEa1XHkfF}hKr2dd*^jja99ym%9Xedv)5n@FUi7Me+X^ItSHKMDyZ3lf3f8>~ z4$VC7ATU*+bKSXb8G2<=)Bi$qkQ(*=6^(iT-pP6SkIi}JUsstfZB+)9BJL2iDzgD% zyM)LR*{yz{)+rrS7O9z3DV~<`Sc*$j7;anAmw^fsR>f)-%h^VIyKZ@E2TkTy;7~Cz z)hO}QO}J3|VbE=Kq(o78#Fa@_$#6xxOns{Elz(y03dZu<9*KJ~qSq=APxGHdma7-m zxhvq~{pJd2*uwFZG-N|}w&n?&`4b`bFo4(&V#F5hLVr}Xh30%}s;-u|kFRP+VTESv zZEZvA#%EMZ`ve8jz5E(&U}AyR0|Ucxa|Ja-RGbh$RuC?^`Q`=;Yi2$BE>92_ZVC8f6@R z&ti?>2q5o0#PW{JsgYyJ*p`F}!?&FlhZnY!4^Gq|Gt+|xHyu^qpVQhZQ;%-?awRTt z{7QEF#=~|twrY~-z%82%>eX5XuH?Op-KD%$&~ass?X~W6m+eqRC9Y4(oVm{zB`?SR zzk0-z9NRVN*pl-eIsw}KiJ@}?h*WllWbb~p#T!&p-sb^!&ai?6X_4t?j5Wu6c#eab-IvPmamct_b)(bXSw5WG-Ix&vFwF&TgWsEdxrbzu*Q)$X}DlzeBT! zSnBnieQ4jz1Ah;k1+y+?5%`<{@W+YGU13#@+EW?dkH^vzMn>B!%JfAA-o708$SyFT z9#dCvr*~>rs54SOy;B#07Dpug?w3+l*GOk`9b9DQe^jKoCLpHXR*}iZ*I89{ClM;AF*)fE z3itHKH3ypOvC1~v6y+!C%|avm#&E1`ubW)rgv`tHH7+|@=jVt$8!Y#dAG1nx@F{ds z=LrMmF;{X2Nx|u&+zv**Q}O&JDkCNt&A=QS3Hs$XW$hoQQ%gVjWQ$>A{w(|u8ouiR zw5Fc6=T6Kc%5az@hK-TJqb<0n{;{BR!kdsPIy~F(*r}=ulD6H7&ymWnv)x6i8E?n6;MV9BfOTA zhsf*_xK)382&y+Xe^;g<>$$V@U5cq3@#cn~9O8u?iil5-_N)7o5dt%nZ!{w6p5Xb} zAqYu9njLfZXmujV%r9<30iZ)yb`#oLvbcy2L3I~H;a9QKyq^h zhbWj&B62oT36OmTe5e&3Lemg3e+WVhw$7K!=ON`fs}mdBIn_Wui&?^BKRX0Ltatf* z6-=^H1k99-Ah0Vu1SS=Ab^ZqdR{P%TlT_hcPt)4@Mni0 zNYtj$W4|2+BuZj)iw2yP@D*0}IB1#w)Dv^*|AnW@2>(s(M(3ipB=oaG5H#kW%4!3U z{Qg9csFfW;oAY)qkzoD_QR^0%={kaZ10PO!2?IYrlnKJ)pt?Ed@MVOMoB0{@5Goie zI|Nl8&4OSO-iEg4&$o%dtS3Cxxg&r;B0oC>;U1}^PZ<`^J&tyTMk9jPxxz!7aEhP5 z3BrZaEQpr4SwtMq4ngUYqj(6gg8)Qx z&7KgcZ86{wwm-6>gqzUb{MCTnb_N7<*NO!bW)&j5j7Z$xiBN@uh|VDXvx^`oOq!^< z6mQS14e#!?%w@S(_B1HTHbR#>gn7HM+6|&rf+v1<2!fJXH#%=RnBg>yH&*;KU{2Mi zzMf&OinYmi{$04#wCU*eiD;@Me)cp7QvIjSCu;%2S$tNCP?#CcWtoe(W#2*%XC=G~ z@Y#gdN#N&)09{gu<5Hs%SWn>gUD?y1D!aX4$cdHqiEO}p(LP)R=&7F_f?&QD><(zp zZR?gjtFWObofcHpoE2PfX|}%0GvkpYEyDnn!bzQql%vgqVL(B5CDC1zi7vW^1tk&q z)K=@mh&ZN(W!Z}3oWs2!04wNKAb9#_=w>2MpYR-(Y$Ky2lE||_gd0p8I9eEVKWG@SygSu@ub`32@9-#hTdWM`E(}1Mi<)R1>!8&wH@1zw|?{ z|2?U(mUsG0{Us|5Z~MVr=Cc`K>M16%%#I_1>bgMT=X(*yDlP!XY>`T?|CW*~jON5# zbN)PB=Ul9Z^9iZB4hte`^K*cxh7gNtVW@F6racrhBb=aWgLnTUV|;RbIqw4U4U^fg+fD(27a9`}Y)b*KAZ=eH%_6OG7RgIEw5aCb3+sV<>UlND z?fdcXYwkI-`YsVrM>CAn?!Ov=Hl!T*85}onW zg7&g6iRpG=dfVpeql;zq3vIg7QTQ_AtGqN7-9q(cE^C(>vCDpQa>4%_NIi2}Zo@SUS zml|ZR!qjKGx0m@!Z+6T;9?=FR8n6K&6j;OvBBse& zK;2X&OCdr? zt1hzr1NBuSLgD{w_z#i;AVS)6y+$FjkgQ(y>^Bl>?I~zJ)SCX#EVHQ1RD4bW8Qjk~rr$##R0RGYmUL0v3GpYYgNdeV^|F1!bSl@Va&&i_T ztC=RHHTX~`fcB~vb9o3mozmSXFKl+6tw2D*mgDm?o1!Pr5A03kR-hk;Jr@$Td|^3R z4$duA-7?JDZ@=sq@~;NtU$l<-f7zaX8@}CzHv{Tjf_>B)_enn z@7EzaAFD&mpv{E!Yq!W2ljsTnh)GMH*QgO)^fP_Fj14%eN2*hhHyv|kb-rYIjW}IF z&Mi1M!A0a~`bIDnp*?jHW`^%|{$Ud6PaD4ATO z?9N_va1J$fs2=k|Y@`gkQ4_E*v1P^ZnPVwPq(L~cLt)M{Xv&) zhjOD8sT`8zirvDhI-AADROM$f^!1rA$d|hEu(xRWZhXM-j$3}ypH{PuOH*~g z6aqg{tBw+Y3u+QB);cbH{LanlBv_}4 zRz@Q7Gwl##z*OrhNQ8emGQQpH+@Qi>Mbt8{3_xQW2^wo28vZE($e0{)!`PhTLIzQ7 zZ4E$lyl68hgTASS7W!S*+}dQVTM=^4LL>cUbhy8@-CNl&`2iQ#qn#SfMQ6sSUj&H0 z3QWUi>UuV-R-D>iT;n{!<9+F!PA|7%yFU{|ObUk2Usb8+mqTM|m%we)ZED)mi!&4# zNys2Y;J{LarrI2F(R1<|tkl*Kcj+zKGM6@Z@_v(=DlD~gXKc>Q$eQUYjd=ZDHpyAn zUe27sKjC^^s;Jo8lK08B#k>>IXWzHSn;aH*)ZAy&m3xLybJnn9Th8S~xoGmPRGsF! zHcIio(`YP31_WNALcB@g5`YX+=QAk;KZglSuCn|r8Z;zigsNcKA_jD~EZPjS>TlwV zg56h5MERY^Gg||8gWWhNlY{+4ynnmrB4s*Skf~i0W5ANBTRkIr)*V7Q3lCi00tw%XrjJjx)OQL z=8y#vom)`^5Lzw5!jzg~Y4}~3Uo#wcs4gzL9&BCM?|rFEzP%uAxJFuUL_OB{Wslxd zC&3%9?%H|!IbVP8AZU{PAUpjazI7r=qRdt>qpcu=G5HfloU`=rb)~)z<}P%Tu>3OM;n2% z$SK5+AsHYliYy*-b8$oW08B=~M@r}qMA<*|6;tuiX4e(J*mGEULPIO)=H|COj9{
&listen); + + ~LsquicEngine() { + // will call `LsquicEngine::on_conn_closed`, `LsquicEngine::on_close`. + lsquic_engine_destroy(engine_); + } + + void pollRead(Ptr); + + void pollWrite(Ptr, uint32_t) { + // will call `LsquicEngine::ea_packets_out`. + lsquic_engine_send_unsent_packets(engine_); + } + + void process(); + void wantProcess() { + if (want_process_) { + return; + } + want_process_ = true; + ns3::Simulator::ScheduleNow([this] { process(); }); + } + + /** + * Called from `lsquic_engine_connect` (client), + * `lsquic_engine_process_conns` (server). + */ + static lsquic_conn_ctx_t *on_new_conn(void *void_self, + lsquic_conn_t *ls_conn); + /** + * Called from `lsquic_engine_process_conns`, `lsquic_engine_destroy`. + */ + static void on_conn_closed(lsquic_conn_t *ls_conn); + /** + * Called from `lsquic_engine_packet_in` (client), + * `on_new_conn` (server). + */ + static void on_hsk_done(lsquic_conn_t *ls_conn, lsquic_hsk_status status); + /** + * Called from `lsquic_conn_make_stream` (client), + * `lsquic_engine_process_conns` (server). + */ + static lsquic_stream_ctx_t *on_new_stream(void *void_self, + lsquic_stream_t *ls_stream); + /** + * Called from `lsquic_engine_process_conns`, `lsquic_engine_destroy`. + */ + static void on_close(lsquic_stream_t *ls_stream, + lsquic_stream_ctx_t *ls_stream_ctx); + /** + * Called from `lsquic_engine_process_conns`. + * `lsquic_stream_flush` doesn't work inside `on_read`. + */ + static void on_read(lsquic_stream_t *ls_stream, + lsquic_stream_ctx_t *ls_stream_ctx); + /** + * Called from `lsquic_engine_process_conns`. + */ + static void on_write(lsquic_stream_t *ls_stream, + lsquic_stream_ctx_t *ls_stream_ctx); + /** + * Called from `lsquic_engine_connect` (client), + * `lsquic_engine_packet_in` (server). + */ + static ssl_ctx_st *ea_get_ssl_ctx(void *void_self, const sockaddr *); + /** + * Called from `lsquic_engine_process_conns`, + * `lsquic_engine_send_unsent_packets`. + */ + static int ea_packets_out(void *void_self, + const lsquic_out_spec *out_spec, + unsigned n_packets_out); + + Ptr factory_; + Ptr socket_; + sockaddr address_raw_; + lsquic_engine_t *engine_ = nullptr; + Ptr listener_; + std::optional> connecting_; + bool want_process_ = false; + std::vector> want_flush_; + }; + + class LsquicSocketFactory : public SocketFactory { + public: + static TypeId GetTypeId() { + static TypeId tid = TypeId("ns3::LsquicSocketFactory") + .SetParent() + .AddConstructor(); + return tid; + } + + // Object + void DoDispose() override; + + // SocketFactory + Ptr CreateSocket() override; + + Ptr node_; + Ptr client_; + std::map> servers_; + std::vector buffer_; + LsquicCertificate certificate_; + }; + NS_OBJECT_ENSURE_REGISTERED(LsquicSocketFactory); + + class LsquicSocket : public Socket { + friend class LsquicEngine; + + public: + static TypeId GetTypeId() { + static TypeId tid = TypeId("ns3::LsquicSocket") + .SetParent() + .AddConstructor(); + return tid; + } + + // Socket + SocketErrno GetErrno() const override { + return errno_; + } + SocketType GetSocketType() const override { + NS_ABORT_MSG("TODO: GetSocketType"); + } + Ptr GetNode() const override { + return factory_->node_; + } + int Bind(const Address &address) override { + NS_ASSERT(not server_.has_value()); + server_.emplace(true); + NS_ASSERT(not factory_->servers_.contains(address)); + NS_ASSERT(engine_ == nullptr); + engine_ = Create(factory_, address); + engine_->listener_ = this; + factory_->servers_.emplace(address, engine_); + return 0; + } + int Bind() override { + NS_ABORT_MSG("TODO: Bind"); + } + int Bind6() override { + NS_ABORT_MSG("TODO: Bind6"); + } + int Close() override { + NS_ABORT_MSG("TODO: Close"); + } + int ShutdownSend() override { + NS_ABORT_MSG("TODO: ShutdownSend"); + } + int ShutdownRecv() override { + NS_ABORT_MSG("TODO: ShutdownRecv"); + } + int Connect(const Address &address) override { + NS_ASSERT(not server_.has_value()); + server_.emplace(false); + NS_ASSERT(not connecting_); + connecting_ = true; + if (factory_->client_ == nullptr) { + factory_->client_ = Create(factory_, std::nullopt); + } + NS_ASSERT(engine_ == nullptr); + engine_ = factory_->client_; + NS_ASSERT(not engine_->connecting_.has_value()); + engine_->connecting_.emplace(this); + auto address_raw = toSockaddr(address); + // will call `LsquicEngine::ea_get_ssl_ctx`, `LsquicEngine::on_new_conn`. + lsquic_engine_connect(engine_->engine_, + N_LSQVER, + &engine_->address_raw_, + &address_raw, + &*engine_, + nullptr, + nullptr, + 0, + nullptr, + 0, + nullptr, + 0); + engine_->wantProcess(); + if (auto connecting = optionTake(engine_->connecting_)) { + NS_ABORT_MSG("TODO: lsquic_engine_connect error"); + return -1; + } + return 0; + } + int Listen() override { + NS_ASSERT(server_.has_value() and server_.value()); + return 0; + } + uint32_t GetTxAvailable() const override { + NS_ASSERT(server_.has_value() and not server_.value()); + if (ls_stream_ == nullptr) { + return 0; + } + return kWindowSize; + } + int Send(Ptr packet, uint32_t flags) override { + NS_ASSERT(server_.has_value() and not server_.value()); + if (ls_stream_ == nullptr) { + errno_ = ERROR_AGAIN; + return -1; + } + factory_->buffer_.resize(packet->GetSize()); + packet->CopyData(factory_->buffer_.data(), packet->GetSize()); + auto r = lsquic_stream_write( + ls_stream_, factory_->buffer_.data(), factory_->buffer_.size()); + if (r == 0) { + errno_ = ERROR_AGAIN; + return -1; + } + errno_ = ERROR_NOTERROR; + NS_ASSERT(r > 0); + if (not want_flush_) { + want_flush_ = true; + engine_->want_flush_.emplace_back(this); + engine_->wantProcess(); + } + return r; + } + int SendTo(Ptr p, + uint32_t flags, + const Address &toAddress) override { + NS_ABORT_MSG("TODO: SendTo"); + } + uint32_t GetRxAvailable() const override { + NS_ABORT_MSG("TODO: GetRxAvailable"); + } + Ptr Recv(uint32_t maxSize, uint32_t flags) override { + NS_ASSERT(server_.has_value() and not server_.value()); + NS_ASSERT(ls_stream_ != nullptr); + maxSize = std::min(maxSize, kWindowSize); + factory_->buffer_.resize(maxSize); + auto r = lsquic_stream_read( + ls_stream_, factory_->buffer_.data(), factory_->buffer_.size()); + if (r == -1 and errno == EWOULDBLOCK) { + errno_ = ERROR_AGAIN; + return nullptr; + } + errno_ = ERROR_NOTERROR; + NS_ASSERT(r > 0); + return Create(factory_->buffer_.data(), r); + } + Ptr RecvFrom(uint32_t maxSize, + uint32_t flags, + Address &fromAddress) override { + NS_ABORT_MSG("TODO: RecvFrom"); + } + int GetSockName(Address &address) const override { + NS_ABORT_MSG("TODO: GetSockName"); + } + int GetPeerName(Address &address) const override { + NS_ABORT_MSG("TODO: GetPeerName"); + } + bool SetAllowBroadcast(bool allowBroadcast) override { + NS_ABORT_MSG("TODO: SetAllowBroadcast"); + } + bool GetAllowBroadcast() const override { + NS_ABORT_MSG("TODO: GetAllowBroadcast"); + } + + lsquic_conn_ctx_t *connCtx() { + return reinterpret_cast(this); + } + lsquic_stream_ctx_t *streamCtx() { + return reinterpret_cast(this); + } + static Ptr from(lsquic_conn_t *ls_conn) { + return reinterpret_cast(lsquic_conn_get_ctx(ls_conn)); + } + static Ptr from(lsquic_stream_ctx_t *ls_stream_ctx) { + return reinterpret_cast(ls_stream_ctx); + } + + Ptr factory_; + Ptr engine_; + std::optional server_; + bool connecting_ = false; + lsquic_conn_t *ls_conn_ = nullptr; + lsquic_stream_t *ls_stream_ = nullptr; + SocketErrno errno_ = ERROR_NOTERROR; + bool want_flush_ = false; + }; + NS_OBJECT_ENSURE_REGISTERED(LsquicSocket); + + void InstallLsquic(const Ptr &node) { + auto factory = + ObjectFactory{"ns3::LsquicSocketFactory"}.Create(); + factory->node_ = node; + node->AggregateObject(factory); + } + + LsquicEngine::LsquicEngine(Ptr factory, + const std::optional
&listen) + : factory_{factory} { + [[maybe_unused]] static auto init = [] { + NS_ASSERT(lsquic_global_init(LSQUIC_GLOBAL_CLIENT | LSQUIC_GLOBAL_SERVER) + == 0); + return 0; + }(); + + static auto tid = TypeId::LookupByName("ns3::UdpSocketFactory"); + socket_ = Socket::CreateSocket(factory_->node_, tid); + Address address; + if (listen.has_value()) { + address = listen.value(); + NS_ASSERT(socket_->Bind(address) == 0); + } else { + NS_ASSERT(socket_->Bind() == 0); + NS_ASSERT(socket_->GetSockName(address) == 0); + } + address_raw_ = toSockaddr(address); + socket_->SetRecvCallback(MakeCallback(&LsquicEngine::pollRead, this)); + socket_->SetSendCallback(MakeCallback(&LsquicEngine::pollWrite, this)); + + uint32_t flags = 0; + if (listen.has_value()) { + flags |= LSENG_SERVER; + } + + lsquic_engine_settings settings{}; + lsquic_engine_init_settings(&settings, flags); + settings.es_init_max_stream_data_bidi_remote = kWindowSize; + settings.es_init_max_stream_data_bidi_local = kWindowSize; + settings.es_idle_timeout = kIdleTimeout.count(); + settings.es_versions = LSQUIC_IETF_VERSIONS; + + static lsquic_stream_if stream_if{}; + stream_if.on_new_conn = on_new_conn; + stream_if.on_conn_closed = on_conn_closed; + stream_if.on_hsk_done = on_hsk_done; + stream_if.on_new_stream = on_new_stream; + stream_if.on_close = on_close; + stream_if.on_read = on_read; + stream_if.on_write = on_write; + + lsquic_engine_api api{}; + api.ea_settings = &settings; + api.ea_stream_if = &stream_if; + api.ea_stream_if_ctx = this; + api.ea_packets_out = ea_packets_out; + api.ea_packets_out_ctx = this; + api.ea_get_ssl_ctx = ea_get_ssl_ctx; + + engine_ = lsquic_engine_new(flags, &api); + NS_ASSERT(engine_ != nullptr); + } + + void LsquicEngine::pollRead(Ptr) { + Address from_address; + while (auto packet = socket_->RecvFrom(from_address)) { + factory_->buffer_.resize(packet->GetSize()); + packet->CopyData(factory_->buffer_.data(), packet->GetSize()); + auto from_address_raw = toSockaddr(from_address); + // will call `LsquicEngine::on_hsk_done`, `LsquicEngine::ea_get_ssl_ctx`. + lsquic_engine_packet_in(engine_, + factory_->buffer_.data(), + packet->GetSize(), + &address_raw_, + &from_address_raw, + this, + 0); + } + + process(); + } + + void LsquicEngine::process() { + want_process_ = false; + while (not want_flush_.empty()) { + auto socket = want_flush_.back(); + want_flush_.pop_back(); + socket->want_flush_ = false; + NS_ASSERT(socket->ls_stream_ != nullptr); + lsquic_stream_flush(socket->ls_stream_); + } + // will call `LsquicEngine::on_new_conn`, `LsquicEngine::on_conn_closed`, + // `LsquicEngine::on_new_stream`, `LsquicEngine::on_close`, `LsquicEngine::on_read`, + // `LsquicEngine::on_write`, `LsquicEngine::ea_packets_out`. + lsquic_engine_process_conns(engine_); + int us = 0; + if (not lsquic_engine_earliest_adv_tick(engine_, &us)) { + return; + } + if (us <= 0) { + return; + } + ns3::Simulator::Schedule(ns3::MicroSeconds(us), [this] { process(); }); + } + + lsquic_conn_ctx_t *LsquicEngine::on_new_conn(void *void_self, + lsquic_conn_t *ls_conn) { + LsquicEngine *self = static_cast(void_self); + auto connecting = optionTake(self->connecting_); + auto is_connecting = connecting.has_value(); + Ptr socket; + if (connecting.has_value()) { + socket = connecting.value(); + } else { + socket = Create(); + socket->factory_ = self->factory_; + socket->engine_ = self; + socket->server_.emplace(false); + } + socket->ls_conn_ = ls_conn; + socket->Ref(); + lsquic_conn_set_ctx(ls_conn, socket->connCtx()); + if (not is_connecting) { + // lsquic doesn't call `on_hsk_done` for incoming connection + on_hsk_done(ls_conn, LSQ_HSK_OK); + } + return socket->connCtx(); + } + + void LsquicEngine::on_conn_closed(lsquic_conn_t *ls_conn) { + auto socket = LsquicSocket::from(ls_conn); + lsquic_conn_set_ctx(ls_conn, nullptr); + if (socket->connecting_) { + socket->connecting_ = false; + socket->NotifyConnectionFailed(); + } else { + socket->NotifyNormalClose(); + } + socket->ls_conn_ = nullptr; + socket->Unref(); + } + + void LsquicEngine::on_hsk_done(lsquic_conn_t *ls_conn, + lsquic_hsk_status status) { + auto socket = LsquicSocket::from(ls_conn); + auto ok = status == LSQ_HSK_OK or status == LSQ_HSK_RESUMED_OK; + if (not ok) { + lsquic_conn_close(ls_conn); + } + if (socket->connecting_) { + if (not ok) { + socket->connecting_ = false; + socket->NotifyConnectionFailed(); + } else { + NS_ASSERT(socket->ls_stream_ == nullptr); + // will call `Engine::on_new_stream`. + lsquic_conn_make_stream(socket->ls_conn_); + NS_ASSERT(not socket->connecting_); + NS_ASSERT(socket->ls_stream_ != nullptr); + } + } + } + + lsquic_stream_ctx_t *LsquicEngine::on_new_stream(void *, + lsquic_stream_t *ls_stream) { + auto socket = LsquicSocket::from(lsquic_stream_conn(ls_stream)); + NS_ASSERT(socket->ls_stream_ == nullptr); + socket->ls_stream_ = ls_stream; + socket->Ref(); + lsquic_stream_set_ctx(ls_stream, socket->streamCtx()); + lsquic_stream_wantread(ls_stream, 1); + lsquic_stream_wantwrite(ls_stream, 1); + if (socket->connecting_) { + socket->connecting_ = false; + socket->NotifyConnectionSucceeded(); + } else { + const sockaddr *local_address_raw = nullptr; + const sockaddr *address_raw = nullptr; + lsquic_conn_get_sockaddr( + socket->ls_conn_, &local_address_raw, &address_raw); + socket->engine_->listener_->NotifyNewConnectionCreated( + socket, fromSockaddr(*address_raw)); + } + return socket->streamCtx(); + } + + void LsquicEngine::on_close(lsquic_stream_t *ls_stream, + lsquic_stream_ctx_t *ls_stream_ctx) { + auto socket = LsquicSocket::from(ls_stream_ctx); + NS_ABORT_MSG("TODO: notify close"); + socket->ls_stream_ = nullptr; + socket->Unref(); + } + + void LsquicEngine::on_read(lsquic_stream_t *ls_stream, + lsquic_stream_ctx_t *ls_stream_ctx) { + auto socket = LsquicSocket::from(ls_stream_ctx); + socket->NotifyDataRecv(); + } + + void LsquicEngine::on_write(lsquic_stream_t *ls_stream, + lsquic_stream_ctx_t *ls_stream_ctx) { + auto socket = LsquicSocket::from(ls_stream_ctx); + socket->NotifySend(socket->GetTxAvailable()); + } + + ssl_ctx_st *LsquicEngine::ea_get_ssl_ctx(void *void_self, const sockaddr *) { + LsquicEngine *self = static_cast(void_self); + return self->factory_->certificate_.ctx_.get(); + } + + int LsquicEngine::ea_packets_out(void *void_self, + const lsquic_out_spec *out_spec, + unsigned n_packets_out) { + LsquicEngine *self = static_cast(void_self); + int packets = 0; + for (auto &spec : std::span{out_spec, n_packets_out}) { + auto address = fromSockaddr(*spec.dest_sa); + auto packet = Create(); + for (auto &iovec : std::span{spec.iov, spec.iovlen}) { + packet->AddAtEnd(Create( + static_cast(iovec.iov_base), iovec.iov_len)); + } + auto r = self->socket_->SendTo(packet, 0, address); + NS_ASSERT(r == packet->GetSize()); + ++packets; + } + return packets; + } + + void LsquicSocketFactory::DoDispose() { + node_ = nullptr; + client_ = nullptr; + servers_.clear(); + SocketFactory::DoDispose(); + } + + Ptr LsquicSocketFactory::CreateSocket() { + auto socket = Create(); + socket->factory_ = this; + return socket; + } +} // namespace ns3 diff --git a/lsquic-test.cpp b/lsquic-test.cpp new file mode 100644 index 0000000..2af50c9 --- /dev/null +++ b/lsquic-test.cpp @@ -0,0 +1,250 @@ +#ifndef NS3_ASSERT_ENABLE +#define NS3_ASSERT_ENABLE +#endif + +#include +#include +#include +#include + +#include +#include + +using SocketPtr = ns3::Ptr; + +constexpr uint16_t kPort = 10000; +constexpr size_t kServer = 0; +constexpr size_t kClient0 = 1; + +const ns3::Ipv4Address kNetwork = "10.1.0.0"; +const ns3::Ipv4Mask kNetworkMask = "255.255.0.0"; +const uint32_t kNetworkReserved = 2; + +ns3::Ipv4Address indexIp(size_t index) { + return ns3::Ipv4Address{kNetwork.Get() + | (uint32_t)(index + kNetworkReserved)}; +} +ns3::InetSocketAddress indexAddress(size_t index) { + return ns3::InetSocketAddress{indexIp(index), kPort}; +} +size_t ipIndex(const ns3::Ipv4Address &ip) { + size_t index = ip.Get() & kNetworkMask.GetInverse(); + NS_ASSERT(index >= kNetworkReserved); + return index - kNetworkReserved; +} +size_t addressIndex(const ns3::Address &address) { + return ipIndex(ns3::InetSocketAddress::ConvertFrom(address).GetIpv4()); +} + +void wireNodes(ns3::PointToPointHelper &wire, + const ns3::NodeContainer &nodes, + size_t index1, + size_t index2) { + auto devices = wire.Install(nodes.Get(index1), nodes.Get(index2)); + auto route = + [&](size_t index1, size_t index2, ns3::Ptr device) { + auto ipv4 = device->GetNode()->GetObject(); + auto interface = ipv4->AddInterface(device); + auto routing = ns3::Ipv4StaticRoutingHelper{}.GetStaticRouting(ipv4); + ipv4->AddAddress(interface, {indexIp(index1), kNetworkMask}); + ipv4->SetUp(interface); + routing->RemoveRoute(routing->GetNRoutes() - 1); + routing->AddHostRouteTo(indexIp(index2), interface); + }; + route(index1, index2, devices.Get(0)); + route(index2, index1, devices.Get(1)); +} + +struct Config { + size_t client_count; + size_t message_size; +}; + +struct State { + struct Reading { + size_t remaining; + size_t last_time = 0; + }; + + const Config &config; + bool tcp; + size_t accept_remaining; + std::map> reading; + std::map> writing; + + State(const Config &config, bool tcp) + : config{config}, tcp{tcp}, accept_remaining{config.client_count} { + for (size_t index = kClient0; index <= config.client_count; ++index) { + reading[kServer].emplace(index, Reading{config.message_size}); + reading[index].emplace(kServer, Reading{config.message_size}); + writing[kServer].emplace(index, 0); + writing[index].emplace(kServer, 0); + } + } +}; + +struct App : ns3::Application { + App(size_t index, State &state) : index_{index}, state_{state} {} + + void StartApplication() override { + if (index_ == kServer) { + listener_ = makeSocket(); + NS_ASSERT(listener_->Bind(ns3::InetSocketAddress{ + ns3::Ipv4Address::GetAny(), + kPort, + }) + == 0); + NS_ASSERT(listener_->Listen() == 0); + listener_->SetAcceptCallback( + {}, [this](SocketPtr socket, const ns3::Address &address) { + --state_.accept_remaining; + auto index = addressIndex(address); + sockets_.emplace(index, socket); + setReadWrite(index); + }); + } + if (index_ != kServer) { + auto index = kServer; + auto socket = makeSocket(); + sockets_.emplace(index, socket); + setReadWrite(index); + NS_ASSERT(socket->Connect(indexAddress(index)) == 0); + write(index, state_.config.message_size); + } + } + + void setReadWrite(size_t index) { + auto &socket = sockets_.at(index); + socket->SetRecvCallback([this, index](SocketPtr) { pollRead(index); }); + socket->SetSendCallback( + [this, index](SocketPtr, uint32_t) { pollWrite(index); }); + } + + void write(size_t index, size_t size) { + state_.writing.at(index_).at(index) = size; + pollWrite(index); + } + + void pollWrite(size_t index) { + auto socket = sockets_.at(index); + auto &writing1 = state_.writing.at(index_); + auto &writing = writing1.at(index); + if (writing == 0) { + return; + } + auto available = socket->GetTxAvailable(); + if (available == 0) { + return; + } + auto packet = + ns3::Create(std::min(writing, available)); + auto r = socket->Send(packet, 0); + if (r == -1) { + NS_ASSERT(socket->GetErrno() == ns3::Socket::ERROR_AGAIN); + return; + } + NS_ASSERT(r > 0); + writing -= r; + } + + void pollRead(size_t index) { + auto socket = sockets_.at(index); + while (auto packet = socket->Recv()) { + auto &reading1 = state_.reading.at(index_); + auto &reading = reading1.at(index); + reading.last_time = ns3::Simulator::Now().GetSeconds(); + auto size = packet->GetSize(); + NS_ASSERT(reading.remaining >= size); + reading.remaining -= size; + if (reading.remaining == 0) { + reading1.erase(index); + if (index_ == kServer) { + write(index, state_.config.message_size); + } + if (reading1.empty()) { + state_.reading.erase(index_); + } + if (state_.reading.empty()) { + ns3::Simulator::Stop(); + } + } + } + } + + SocketPtr makeSocket() { + return ns3::Socket::CreateSocket( + GetNode(), + ns3::TypeId::LookupByName(state_.tcp ? "ns3::TcpSocketFactory" + : "ns3::LsquicSocketFactory")); + } + + size_t index_; + State &state_; + SocketPtr listener_; + std::map sockets_; +}; + +void test(const Config &config, bool tcp) { + using C = std::chrono::steady_clock; + auto t0 = C::now(); + std::println("BEGIN clients={} size={} {}", + config.client_count, + config.message_size, + tcp ? "tcp" : "quic"); + State state{config, tcp}; + ns3::PointToPointHelper wire; + wire.SetDeviceAttribute("DataRate", ns3::DataRateValue{1024 * 1024 * 8}); + wire.SetChannelAttribute("Delay", ns3::TimeValue{ns3::MilliSeconds(1)}); + ns3::NodeContainer nodes; + nodes.Create(kClient0 + config.client_count); + for (size_t index = 0; index < nodes.GetN(); ++index) { + auto node = nodes.Get(index); + ns3::InternetStackHelper{}.Install(node); + ns3::InstallLsquic(node); + node->AddApplication(ns3::Create(index, state)); + if (index != kServer) { + wireNodes(wire, nodes, index, kServer); + } + } + + ns3::Simulator::Stop(ns3::Seconds(60)); + ns3::Simulator::Run(); + if (state.accept_remaining != 0) { + std::println("accept remaining {}", state.accept_remaining); + } + size_t read_remaining_n = 0; + std::string read_remaining_s; + for (auto &[index1, reading1] : state.reading) { + for (auto &[index2, reading] : reading1) { + read_remaining_n += reading.remaining; + read_remaining_s += std::format(" {} < {} {} {}s;", + index1, + index2, + reading.remaining, + reading.last_time); + } + } + if (read_remaining_n != 0) { + std::println("read remaining {}: {}", read_remaining_n, read_remaining_s); + } + std::println( + "END {}ms ({}ms)", + (size_t)ns3::Simulator::Now().GetMilliSeconds(), + std::chrono::duration_cast(C::now() - t0) + .count()); + ns3::Simulator::Destroy(); + std::println(); +} + +void test(bool tcp) { + test({1, 1000000}, tcp); + test({10, 1 * 1000000}, tcp); + test({10, 2 * 1000000}, tcp); + test({10, 4 * 1000000}, tcp); +} + +int main() { + for (auto &tcp : {true, false}) { + test(tcp); + } +} diff --git a/main.cpp b/main.cpp index dde3e84..25213fc 100644 --- a/main.cpp +++ b/main.cpp @@ -621,7 +621,8 @@ namespace beamsim::example { PeerIndex index, SharedState &shared_state, Random &random) - : PeerBase{simulator, index, shared_state}, gossip_{*this, random,shared_state_.gossip_config} {} + : PeerBase{simulator, index, shared_state}, + gossip_{*this, random, shared_state_.gossip_config} {} // IPeer void onStart() override { @@ -924,6 +925,7 @@ void run_simulation(const SimulationConfig &config) { case SimulationConfig::Backend::NS3_DIRECT: { #ifdef ns3_FOUND beamsim::ns3_::Simulator simulator{metrics_ptr}; + simulator.setProtocol(config.protocol); if (config.backend == SimulationConfig::Backend::NS3) { simulator.routing_.initRouters(routers); } else { diff --git a/src/beamsim/ns3/protocol.hpp b/src/beamsim/ns3/protocol.hpp new file mode 100644 index 0000000..0aaced6 --- /dev/null +++ b/src/beamsim/ns3/protocol.hpp @@ -0,0 +1,8 @@ +#pragma once + +namespace beamsim::ns3_ { + enum class Protocol { + TCP, + QUIC, + }; +} // namespace beamsim::ns3_ diff --git a/src/beamsim/ns3/routing.hpp b/src/beamsim/ns3/routing.hpp index ffde56d..8c2f2af 100644 --- a/src/beamsim/ns3/routing.hpp +++ b/src/beamsim/ns3/routing.hpp @@ -282,7 +282,7 @@ namespace beamsim::ns3_ { } } if (mpiIsMain()) { - std::println(std::cout, "routing table rules: {}", + std::println("routing table rules: {}", ns3_::countRoutingTableRules(routers_)); } } diff --git a/src/beamsim/ns3/simulator.hpp b/src/beamsim/ns3/simulator.hpp index 9cf9665..4ff5a60 100644 --- a/src/beamsim/ns3/simulator.hpp +++ b/src/beamsim/ns3/simulator.hpp @@ -6,7 +6,9 @@ #include #include +#include #include +#include #include namespace beamsim::ns3_ { @@ -124,29 +126,44 @@ namespace beamsim::ns3_ { queue_.emplace_back(std::move(item)); } - ns3::Ptr readPacket(uint32_t available) { + ns3::Ptr peekPacket(uint32_t available) const { auto packet = ns3::Create(); - while (available != 0 and not queue_.empty()) { - auto &item = queue_.front(); - if (item.offset < item.data.size()) { - auto n = - std::min(available, item.data.size() - item.offset); + for (auto &item : queue_) { + auto offset = item.offset; + if (offset < item.data.size()) { + auto n = std::min(available, item.data.size() - offset); packet->AddAtEnd( - ns3::Create(item.data.data() + item.offset, n)); - item.offset += n; + ns3::Create(item.data.data() + offset, n)); + offset += n; available -= n; - } else if (item.offset < item.size) { - auto n = std::min(available, item.size - item.offset); + } + if (available == 0) { + break; + } + if (offset < item.size) { + auto n = std::min(available, item.size - offset); packet->AddPaddingAtEnd(n); - item.offset += n; available -= n; - } else { - queue_.pop_front(); + } + if (available == 0) { + break; } } return packet; } + void read(uint32_t want) { + while (want != 0 and not queue_.empty()) { + auto &item = queue_.front(); + auto n = std::min(want, item.size - item.offset); + item.offset += n; + want -= n; + if (item.offset >= item.size) { + queue_.pop_front(); + } + } + } + std::deque queue_; }; @@ -178,11 +195,7 @@ namespace beamsim::ns3_ { peer_->onStart(); } - SocketPtr makeSocket() { - auto socket = ns3::Socket::CreateSocket( - GetNode(), ns3::TypeId::LookupByName("ns3::TcpSocketFactory")); - return socket; - } + SocketPtr makeSocket(); void listen() { tcp_listener_ = makeSocket(); tcp_listener_->Bind(ns3::InetSocketAddress{ @@ -208,8 +221,14 @@ namespace beamsim::ns3_ { if (available == 0) { break; } - auto packet = state.writing.readPacket(available); - assert2(socket->Send(packet) == static_cast(packet->GetSize())); + auto packet = state.writing.peekPacket(available); + auto r = socket->Send(packet); + if (r == -1) { + assert2(socket->GetErrno() == socket->ERROR_AGAIN); + break; + } + assert2(r > 0); + state.writing.read(r); } } void onConnect(SocketPtr socket) { @@ -252,6 +271,10 @@ namespace beamsim::ns3_ { } } + void setProtocol(Protocol protocol) { + protocol_ = protocol; + } + // ISimulator ~Simulator() override { ns3::Simulator::Destroy(); @@ -305,7 +328,11 @@ namespace beamsim::ns3_ { if (isLocalPeer(index)) { auto peer = std::make_unique(*this, index, std::forward(a)...); application = ns3::Create(*this, std::move(peer)); - routing_.peers_.Get(index)->AddApplication(std::move(application)); + auto node = routing_.peers_.Get(index); + node->AddApplication(std::move(application)); + if (protocol_ == Protocol::QUIC) { + ns3::InstallLsquic(node); + } } } template @@ -367,6 +394,7 @@ namespace beamsim::ns3_ { } IMetrics *metrics_; + Protocol protocol_ = Protocol::TCP; bool cache_messages_ = true; std::vector> applications_; Routing routing_; @@ -374,6 +402,14 @@ namespace beamsim::ns3_ { std::unordered_map messages_; }; + SocketPtr Application::makeSocket() { + return ns3::Socket::CreateSocket( + GetNode(), + ns3::TypeId::LookupByName(simulator_.protocol_ == Protocol::TCP + ? "ns3::TcpSocketFactory" + : "ns3::LsquicSocketFactory")); + } + void Application::onAccept(SocketPtr socket, const ns3::Address &address) { auto index = simulator_.routing_.ip_peer_index_.at( ns3::InetSocketAddress::ConvertFrom(address).GetIpv4()); From 1e0fab9da8a2ad4706fdee87a1bf7fa31d641ed5 Mon Sep 17 00:00:00 2001 From: kamilsa Date: Fri, 1 Aug 2025 16:40:36 +0500 Subject: [PATCH 03/13] Refactor CMake configuration to use FetchContent_Declare --- CMakeLists.txt | 22 +++++++++++++++++++++- external/lsquic.cmake | 8 +++----- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 78500a8..9817172 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,8 @@ set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) -add_compile_options( +# Store our strict compile options for later use +set(STRICT_COMPILE_OPTIONS -Wall -Wextra -Woverloaded-virtual @@ -34,9 +35,26 @@ FetchContent_Declare( ) FetchContent_MakeAvailable(xxHash) +FetchContent_Declare( + zlib + GIT_REPOSITORY https://github.com/madler/zlib.git + GIT_TAG v1.3.1 +) +FetchContent_MakeAvailable(zlib) + +FetchContent_Declare( + boringssl + GIT_REPOSITORY https://github.com/google/boringssl.git + GIT_TAG main +) +FetchContent_MakeAvailable(boringssl) + + + add_executable(beamsim main.cpp) target_include_directories(beamsim PRIVATE ${PROJECT_SOURCE_DIR}/src) target_link_libraries(beamsim yaml-cpp::yaml-cpp xxhash) +target_compile_options(beamsim PRIVATE ${STRICT_COMPILE_OPTIONS}) find_package(ns3 CONFIG) if(ns3_FOUND) @@ -46,6 +64,7 @@ if(ns3_FOUND) add_executable(lsquic-test lsquic-test.cpp) target_link_libraries(lsquic-test lsquic) + target_compile_options(lsquic-test PRIVATE ${STRICT_COMPILE_OPTIONS}) target_compile_definitions(beamsim PRIVATE ns3_FOUND) target_link_libraries(beamsim @@ -61,3 +80,4 @@ endif() add_executable(gml2bin gml2bin.cpp) target_include_directories(gml2bin PRIVATE ${PROJECT_SOURCE_DIR}/src) +target_compile_options(gml2bin PRIVATE ${STRICT_COMPILE_OPTIONS}) diff --git a/external/lsquic.cmake b/external/lsquic.cmake index 32f2d98..c657631 100644 --- a/external/lsquic.cmake +++ b/external/lsquic.cmake @@ -99,15 +99,13 @@ target_include_directories(lsquic PUBLIC ${lsquic_dir}/include ${lsquic_dir}/src/liblsquic/ls-qpack ${lsquic_dir}/src/lshpack - ${OpenSSL_DIR}/include - ${ZLIB_DIR}/include ) target_link_libraries(lsquic ns3::applications ns3::internet ns3::point-to-point - ${OpenSSL_DIR}/lib/libcrypto.dylib - ${OpenSSL_DIR}/lib/libssl.dylib + ssl + crypto xxhash - ${ZLIB_DIR}/lib/libz.a + zlibstatic ) From 397cab226280010fb39bc9d15583a53d9dab35df Mon Sep 17 00:00:00 2001 From: turuslan Date: Mon, 4 Aug 2025 09:38:25 +0500 Subject: [PATCH 04/13] remove unused files --- external/lsquic/.cirrus.yml | 20 - external/lsquic/.nojekyll | 0 external/lsquic/.readthedocs.yaml | 35 - external/lsquic/.travis.yml | 45 - external/lsquic/APIs.txt | 231 - external/lsquic/BUILD-WINDOWS.md | 110 - external/lsquic/CHANGELOG | 1774 --- external/lsquic/CMakeLists.txt | 355 - external/lsquic/CONTRIBUTORS.txt | 21 - external/lsquic/Dockerfile | 38 - external/lsquic/EXAMPLES.txt | 297 - external/lsquic/LICENSE | 21 - external/lsquic/LICENSE.chrome | 32 - external/lsquic/README.md | 194 - external/lsquic/appveyor-linux.yml | 48 - external/lsquic/appveyor-windows.cmd | 23 - external/lsquic/appveyor-windows.yml | 33 - external/lsquic/bin/CMakeLists.txt | 120 - external/lsquic/bin/duck_client.c | 192 - external/lsquic/bin/duck_server.c | 161 - external/lsquic/bin/echo_client.c | 271 - external/lsquic/bin/echo_server.c | 238 - external/lsquic/bin/http_client.c | 1897 --- external/lsquic/bin/http_server.c | 2060 --- external/lsquic/bin/md5_client.c | 529 - external/lsquic/bin/md5_server.c | 345 - external/lsquic/bin/perf_client.c | 407 - external/lsquic/bin/perf_server.c | 253 - external/lsquic/bin/prog.c | 824 -- external/lsquic/bin/prog.h | 116 - external/lsquic/bin/test_cert.c | 201 - external/lsquic/bin/test_cert.h | 30 - external/lsquic/bin/test_common.c | 2536 ---- external/lsquic/bin/test_common.h | 154 - external/lsquic/bin/test_config.h.in | 23 - external/lsquic/docs/apiref.rst | 2368 ---- external/lsquic/docs/conf.py | 184 - external/lsquic/docs/devel.rst | 37 - external/lsquic/docs/faq.rst | 47 - external/lsquic/docs/gettingstarted.rst | 78 - external/lsquic/docs/index.rst | 75 - external/lsquic/docs/internals.rst | 3706 ----- .../lsquic/docs/lsquic-engine-conns.drawio | 1 - external/lsquic/docs/lsquic-engine-conns.png | Bin 97346 -> 0 bytes external/lsquic/docs/lsquic-packet-queues.png | Bin 25056 -> 0 bytes external/lsquic/docs/rechist-linked-list.png | Bin 8854 -> 0 bytes .../lsquic/docs/rechist-memory-layout.png | Bin 12524 -> 0 bytes external/lsquic/docs/requirements.txt | 1 - external/lsquic/docs/stream-http3-framing.png | Bin 22699 -> 0 bytes external/lsquic/docs/tutorial.rst | 1207 -- external/lsquic/docs/wireshark-screenshot.png | Bin 40852 -> 0 bytes external/lsquic/qir/run_endpoint.sh | 146 - external/lsquic/src/CMakeLists.txt | 4 - external/lsquic/src/liblsquic/CMakeLists.txt | 162 - external/lsquic/src/liblsquic/Makefile.am | 96 - external/lsquic/src/liblsquic/gen-verstrs.pl | 168 - .../src/liblsquic/ls-qpack/.appveyor.yml | 46 - .../lsquic/src/liblsquic/ls-qpack/.cirrus.yml | 6 - .../lsquic/src/liblsquic/ls-qpack/.travis.yml | 32 - .../src/liblsquic/ls-qpack/CMakeLists.txt | 160 - .../lsquic/src/liblsquic/ls-qpack/LICENSE | 21 - .../lsquic/src/liblsquic/ls-qpack/README.md | 69 - .../src/liblsquic/ls-qpack/bin/CMakeLists.txt | 26 - .../src/liblsquic/ls-qpack/bin/encode-int.c | 87 - .../src/liblsquic/ls-qpack/bin/fuzz-decode.c | 317 - .../liblsquic/ls-qpack/bin/interop-decode.c | 728 - .../liblsquic/ls-qpack/bin/interop-encode.c | 561 - .../liblsquic/ls-qpack/deps/xxhash/xxhash.c | 941 -- .../liblsquic/ls-qpack/deps/xxhash/xxhash.h | 160 - .../liblsquic/ls-qpack/fuzz/decode/a/README | 3 - .../liblsquic/ls-qpack/fuzz/decode/a/preamble | Bin 317 -> 0 bytes ...id_000000,sig_06,src_000390,op_havoc,rep_4 | Bin 76 -> 0 bytes ...d_000000,sig_06,src_000579,op_flip1,pos_14 | Bin 48 -> 0 bytes .../id_000000,src_000000,op_flip2,pos_12 | Bin 136 -> 0 bytes ...id_000001,sig_11,src_000579,op_havoc,rep_4 | Bin 54 -> 0 bytes ...2,sig_11,src_000481,op_int16,pos_15,val_-1 | Bin 84 -> 0 bytes .../id_000002,src_000000,op_havoc,rep_8 | Bin 147 -> 0 bytes .../id_000006,src_000285,op_flip2,pos_14 | Bin 24 -> 0 bytes .../id_000008,src_000285,op_flip2,pos_20 | Bin 24 -> 0 bytes .../id_000010,src_000306,op_flip2,pos_75 | Bin 77 -> 0 bytes .../id_000011,src_000344,op_havoc,rep_2 | Bin 31 -> 0 bytes .../id_000014,src_000366,op_flip2,pos_28 | Bin 32 -> 0 bytes .../liblsquic/ls-qpack/fuzz/decode/b/README | 1 - .../liblsquic/ls-qpack/fuzz/decode/b/preamble | Bin 27492 -> 0 bytes .../ls-qpack/fuzz/decode/b/test-cases/seed | Bin 108 -> 0 bytes .../liblsquic/ls-qpack/fuzz/decode/c/setup.sh | 3 - .../fb-req.qif.proxygen.out.256.100.0-chopped | Bin 269 -> 0 bytes .../liblsquic/ls-qpack/fuzz/decode/d/preamble | Bin 59117 -> 0 bytes .../liblsquic/ls-qpack/fuzz/decode/d/setup.sh | 3 - .../d/test-cases/fb-resp.minhq.256.128.0.ack | Bin 906 -> 0 bytes .../fuzz/input/256.100.1/fb-req.out.256.100.1 | Bin 4319 -> 0 bytes .../input/256.100.1/fb-resp.out.256.100.1 | Bin 4846 -> 0 bytes .../fuzz/input/256.100.1/netbsd.out.256.100.1 | Bin 2409 -> 0 bytes .../ls-qpack/ls-qpack-config.cmake.in | 10 - .../src/liblsquic/ls-qpack/lsqpack.pc.in | 12 - .../src/liblsquic/ls-qpack/lsxpack_header.h | 169 - .../liblsquic/ls-qpack/test/CMakeLists.txt | 75 - .../liblsquic/ls-qpack/test/lsqpack-test.h | 47 - .../liblsquic/ls-qpack/test/qifs/fb-req.qif | 4917 ------- .../liblsquic/ls-qpack/test/qifs/fb-resp.qif | 5982 -------- .../ls-qpack/test/qifs/long-codes.qif | 5984 -------- .../liblsquic/ls-qpack/test/qifs/netbsd.qif | 235 - .../src/liblsquic/ls-qpack/test/run-qif.pl | 101 - .../liblsquic/ls-qpack/test/run-scenario.sh | 68 - .../ls-qpack/test/scenarios/0.95-reset.sce | 10 - .../ls-qpack/test/scenarios/cancel-stream.sce | 22 - .../ls-qpack/test/scenarios/drain-2.sce | 37 - .../ls-qpack/test/scenarios/drain.sce | 37 - .../ls-qpack/test/scenarios/end-dst-2.sce | 14 - .../ls-qpack/test/scenarios/end-dst.sce | 14 - .../ls-qpack/test/scenarios/incl-name.sce | 13 - .../scenarios/multi-byte-int-dyn-ref-1.sce | 110 - .../scenarios/multi-byte-int-dyn-ref-2.sce | 161 - .../ls-qpack/test/scenarios/post-base-1.sce | 10 - .../ls-qpack/test/scenarios/post-base-2.sce | 13 - .../ls-qpack/test/scenarios/post-base-nr.sce | 10 - .../ls-qpack/test/scenarios/set-max-cap.sce | 15 - .../liblsquic/ls-qpack/test/test_circ_list.c | 104 - .../ls-qpack/test/test_dec_crash_case.c | 50 - .../test/test_dyn_table_cap_mismatch.c | 56 - .../liblsquic/ls-qpack/test/test_enc_str.c | 139 - .../liblsquic/ls-qpack/test/test_huff_dec.c | 399 - .../src/liblsquic/ls-qpack/test/test_int.c | 220 - .../src/liblsquic/ls-qpack/test/test_qpack.c | 1125 -- .../ls-qpack/test/test_read_enc_stream.c | 258 - .../ls-qpack/test/testdata/encoder_stream | Bin 20594 -> 0 bytes .../liblsquic/ls-qpack/test/testdata/response | 2 - .../src/liblsquic/ls-qpack/tools/gen-enums.pl | 123 - .../src/liblsquic/ls-qpack/tools/har2qif.pl | 139 - .../ls-qpack/tools/randomize-cookies.pl | 41 - .../src/liblsquic/ls-qpack/tools/sort-qif.pl | 31 - .../liblsquic/ls-qpack/wincompat/sys/queue.h | 859 -- .../lsquic/src/liblsquic/lsquic-config.cmake | 4 - .../src/liblsquic/lsquic_qpack_dec_logger.h | 19 - .../src/liblsquic/lsquic_qpack_enc_logger.h | 16 - external/lsquic/src/liblsquic/lsquic_xxhash.c | 942 -- external/lsquic/src/lshpack/.appveyor.yml | 14 - external/lsquic/src/lshpack/.cirrus.yml | 6 - external/lsquic/src/lshpack/.travis.yml | 27 - external/lsquic/src/lshpack/CMakeLists.txt | 90 - external/lsquic/src/lshpack/LICENSE | 21 - external/lsquic/src/lshpack/README.md | 33 - .../lsquic/src/lshpack/bin/CMakeLists.txt | 16 - external/lsquic/src/lshpack/bin/calc-xxh.c | 69 - external/lsquic/src/lshpack/bin/encode-qif.c | 263 - external/lsquic/src/lshpack/bin/find-xxh.c | 455 - .../src/lshpack/bin/gen-fast-dec-table.c | 175 - .../src/lshpack/bin/gen-fast-enc-table.c | 315 - external/lsquic/src/lshpack/bin/huff-decode.c | 99 - external/lsquic/src/lshpack/bin/huff-encode.c | 30 - .../src/lshpack/compat/queue/sys/queue.h | 859 -- .../src/lshpack/compat/windows/sys/uio.h | 10 - .../lsquic/src/lshpack/deps/xxhash/xxhash.c | 941 -- .../lsquic/src/lshpack/deps/xxhash/xxhash.h | 160 - external/lsquic/src/lshpack/lsxpack_header.h | 169 - .../lsquic/src/lshpack/test/CMakeLists.txt | 14 - .../lsquic/src/lshpack/test/lshpack-test.h | 53 - external/lsquic/src/lshpack/test/test_hpack.c | 11649 ---------------- external/lsquic/src/lshpack/test/test_int.c | 218 - external/lsquic/tests/CMakeLists.txt | 161 - external/lsquic/tests/graph_cubic.c | 160 - external/lsquic/tests/mini_parse.c | 115 - external/lsquic/tests/test_ack.c | 219 - external/lsquic/tests/test_ack_merge.c | 185 - external/lsquic/tests/test_ackgen_gquic_be.c | 389 - external/lsquic/tests/test_ackgen_gquic_le.c | 359 - .../lsquic/tests/test_ackparse_gquic_be.c | 470 - .../lsquic/tests/test_ackparse_gquic_le.c | 452 - external/lsquic/tests/test_ackparse_ietf.c | 140 - external/lsquic/tests/test_alarmset.c | 130 - external/lsquic/tests/test_alt_svc_ver.c | 18 - external/lsquic/tests/test_arr.c | 223 - external/lsquic/tests/test_attq.c | 231 - external/lsquic/tests/test_blocked_gquic_be.c | 70 - external/lsquic/tests/test_blocked_gquic_le.c | 70 - external/lsquic/tests/test_bw_sampler.c | 644 - external/lsquic/tests/test_chlo_gen.c | 72 - external/lsquic/tests/test_clear_aead.c | 120 - .../lsquic/tests/test_conn_close_gquic_be.c | 161 - .../lsquic/tests/test_conn_close_gquic_le.c | 161 - external/lsquic/tests/test_conn_hash.c | 87 - external/lsquic/tests/test_crypto_gen.c | 143 - external/lsquic/tests/test_cubic.c | 126 - external/lsquic/tests/test_dec.c | 82 - external/lsquic/tests/test_di_nocopy.c | 356 - external/lsquic/tests/test_elision.c | 420 - external/lsquic/tests/test_engine_ctor.c | 36 - external/lsquic/tests/test_export_key.c | 477 - external/lsquic/tests/test_frame_chop.c | 219 - external/lsquic/tests/test_frame_reader.c | 1219 -- external/lsquic/tests/test_frame_rw.c | 10350 -------------- external/lsquic/tests/test_frame_writer.c | 644 - external/lsquic/tests/test_goaway_gquic_be.c | 173 - external/lsquic/tests/test_goaway_gquic_le.c | 173 - external/lsquic/tests/test_h3_framing.c | 1761 --- external/lsquic/tests/test_hcsi_reader.c | 303 - external/lsquic/tests/test_hkdf.c | 86 - external/lsquic/tests/test_hpi.c | 353 - external/lsquic/tests/test_lsquic_hash.c | 79 - external/lsquic/tests/test_malo.c | 157 - external/lsquic/tests/test_min_heap.c | 165 - external/lsquic/tests/test_minmax.c | 457 - external/lsquic/tests/test_packet_out.c | 100 - external/lsquic/tests/test_packet_resize.c | 1651 --- external/lsquic/tests/test_packno_len.c | 342 - external/lsquic/tests/test_parse_packet_in.c | 513 - external/lsquic/tests/test_purga.c | 182 - external/lsquic/tests/test_qlog.c | 58 - external/lsquic/tests/test_quic_be_floats.c | 170 - external/lsquic/tests/test_quic_le_floats.c | 170 - external/lsquic/tests/test_rechist.c | 449 - .../lsquic/tests/test_reg_pkt_headergen.c | 237 - .../lsquic/tests/test_rst_stream_gquic_be.c | 77 - .../lsquic/tests/test_rst_stream_gquic_le.c | 78 - external/lsquic/tests/test_rst_stream_ietf.c | 81 - external/lsquic/tests/test_rtt.c | 33 - external/lsquic/tests/test_send_headers.c | 711 - external/lsquic/tests/test_senhist.c | 38 - external/lsquic/tests/test_set.c | 151 - external/lsquic/tests/test_sfcw.c | 64 - external/lsquic/tests/test_shi.c | 119 - external/lsquic/tests/test_some_packets.c | 133 - external/lsquic/tests/test_spi.c | 344 - .../lsquic/tests/test_stop_waiting_gquic_be.c | 101 - .../lsquic/tests/test_stop_waiting_gquic_le.c | 101 - external/lsquic/tests/test_stream.c | 3858 ----- external/lsquic/tests/test_streamgen.c | 493 - external/lsquic/tests/test_streamparse.c | 450 - external/lsquic/tests/test_tokgen.c | 41 - external/lsquic/tests/test_trapa.c | 286 - external/lsquic/tests/test_trechist.c | 533 - external/lsquic/tests/test_varint.c | 124 - external/lsquic/tests/test_ver_nego.c | 160 - external/lsquic/tests/test_wuf_gquic_be.c | 74 - external/lsquic/tests/test_wuf_gquic_le.c | 74 - external/lsquic/tools/gen-rst-tags.pl | 48 - external/lsquic/tools/gen-tags.pl | 68 - external/lsquic/wincompat/README.txt | 11 - external/lsquic/wincompat/sys/queue.h | 860 -- external/lsquic/wincompat/vc_compat.h | 35 - 240 files changed, 98791 deletions(-) delete mode 100644 external/lsquic/.cirrus.yml delete mode 100644 external/lsquic/.nojekyll delete mode 100644 external/lsquic/.readthedocs.yaml delete mode 100644 external/lsquic/.travis.yml delete mode 100644 external/lsquic/APIs.txt delete mode 100644 external/lsquic/BUILD-WINDOWS.md delete mode 100644 external/lsquic/CHANGELOG delete mode 100644 external/lsquic/CMakeLists.txt delete mode 100644 external/lsquic/CONTRIBUTORS.txt delete mode 100644 external/lsquic/Dockerfile delete mode 100644 external/lsquic/EXAMPLES.txt delete mode 100644 external/lsquic/LICENSE delete mode 100644 external/lsquic/LICENSE.chrome delete mode 100644 external/lsquic/README.md delete mode 100644 external/lsquic/appveyor-linux.yml delete mode 100644 external/lsquic/appveyor-windows.cmd delete mode 100644 external/lsquic/appveyor-windows.yml delete mode 100644 external/lsquic/bin/CMakeLists.txt delete mode 100644 external/lsquic/bin/duck_client.c delete mode 100644 external/lsquic/bin/duck_server.c delete mode 100644 external/lsquic/bin/echo_client.c delete mode 100644 external/lsquic/bin/echo_server.c delete mode 100644 external/lsquic/bin/http_client.c delete mode 100644 external/lsquic/bin/http_server.c delete mode 100644 external/lsquic/bin/md5_client.c delete mode 100644 external/lsquic/bin/md5_server.c delete mode 100644 external/lsquic/bin/perf_client.c delete mode 100644 external/lsquic/bin/perf_server.c delete mode 100644 external/lsquic/bin/prog.c delete mode 100644 external/lsquic/bin/prog.h delete mode 100644 external/lsquic/bin/test_cert.c delete mode 100644 external/lsquic/bin/test_cert.h delete mode 100644 external/lsquic/bin/test_common.c delete mode 100644 external/lsquic/bin/test_common.h delete mode 100644 external/lsquic/bin/test_config.h.in delete mode 100644 external/lsquic/docs/apiref.rst delete mode 100644 external/lsquic/docs/conf.py delete mode 100644 external/lsquic/docs/devel.rst delete mode 100644 external/lsquic/docs/faq.rst delete mode 100644 external/lsquic/docs/gettingstarted.rst delete mode 100644 external/lsquic/docs/index.rst delete mode 100644 external/lsquic/docs/internals.rst delete mode 100644 external/lsquic/docs/lsquic-engine-conns.drawio delete mode 100644 external/lsquic/docs/lsquic-engine-conns.png delete mode 100644 external/lsquic/docs/lsquic-packet-queues.png delete mode 100644 external/lsquic/docs/rechist-linked-list.png delete mode 100644 external/lsquic/docs/rechist-memory-layout.png delete mode 100644 external/lsquic/docs/requirements.txt delete mode 100644 external/lsquic/docs/stream-http3-framing.png delete mode 100644 external/lsquic/docs/tutorial.rst delete mode 100644 external/lsquic/docs/wireshark-screenshot.png delete mode 100644 external/lsquic/qir/run_endpoint.sh delete mode 100644 external/lsquic/src/CMakeLists.txt delete mode 100644 external/lsquic/src/liblsquic/CMakeLists.txt delete mode 100644 external/lsquic/src/liblsquic/Makefile.am delete mode 100755 external/lsquic/src/liblsquic/gen-verstrs.pl delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/.appveyor.yml delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/.cirrus.yml delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/.travis.yml delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/CMakeLists.txt delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/LICENSE delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/README.md delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/bin/CMakeLists.txt delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/bin/encode-int.c delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/bin/fuzz-decode.c delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/bin/interop-decode.c delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/bin/interop-encode.c delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/deps/xxhash/xxhash.c delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/deps/xxhash/xxhash.h delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/README delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/preamble delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000000,sig_06,src_000390,op_havoc,rep_4 delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000000,sig_06,src_000579,op_flip1,pos_14 delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000000,src_000000,op_flip2,pos_12 delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000001,sig_11,src_000579,op_havoc,rep_4 delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000002,sig_11,src_000481,op_int16,pos_15,val_-1 delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000002,src_000000,op_havoc,rep_8 delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000006,src_000285,op_flip2,pos_14 delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000008,src_000285,op_flip2,pos_20 delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000010,src_000306,op_flip2,pos_75 delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000011,src_000344,op_havoc,rep_2 delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000014,src_000366,op_flip2,pos_28 delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/README delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/preamble delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/test-cases/seed delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/c/setup.sh delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/c/test-cases/fb-req.qif.proxygen.out.256.100.0-chopped delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/d/preamble delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/d/setup.sh delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/d/test-cases/fb-resp.minhq.256.128.0.ack delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/input/256.100.1/fb-req.out.256.100.1 delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/input/256.100.1/fb-resp.out.256.100.1 delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/fuzz/input/256.100.1/netbsd.out.256.100.1 delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/ls-qpack-config.cmake.in delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/lsqpack.pc.in delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/lsxpack_header.h delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/CMakeLists.txt delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/lsqpack-test.h delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/qifs/fb-req.qif delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/qifs/fb-resp.qif delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/qifs/long-codes.qif delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/qifs/netbsd.qif delete mode 100755 external/lsquic/src/liblsquic/ls-qpack/test/run-qif.pl delete mode 100755 external/lsquic/src/liblsquic/ls-qpack/test/run-scenario.sh delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/0.95-reset.sce delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/cancel-stream.sce delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/drain-2.sce delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/drain.sce delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/end-dst-2.sce delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/end-dst.sce delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/incl-name.sce delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-1.sce delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-2.sce delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-1.sce delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-2.sce delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-nr.sce delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/scenarios/set-max-cap.sce delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/test_circ_list.c delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/test_dec_crash_case.c delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/test_dyn_table_cap_mismatch.c delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/test_enc_str.c delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/test_huff_dec.c delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/test_int.c delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/test_qpack.c delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/test_read_enc_stream.c delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/testdata/encoder_stream delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/test/testdata/response delete mode 100755 external/lsquic/src/liblsquic/ls-qpack/tools/gen-enums.pl delete mode 100755 external/lsquic/src/liblsquic/ls-qpack/tools/har2qif.pl delete mode 100755 external/lsquic/src/liblsquic/ls-qpack/tools/randomize-cookies.pl delete mode 100755 external/lsquic/src/liblsquic/ls-qpack/tools/sort-qif.pl delete mode 100644 external/lsquic/src/liblsquic/ls-qpack/wincompat/sys/queue.h delete mode 100644 external/lsquic/src/liblsquic/lsquic-config.cmake delete mode 100644 external/lsquic/src/liblsquic/lsquic_qpack_dec_logger.h delete mode 100644 external/lsquic/src/liblsquic/lsquic_qpack_enc_logger.h delete mode 100644 external/lsquic/src/liblsquic/lsquic_xxhash.c delete mode 100644 external/lsquic/src/lshpack/.appveyor.yml delete mode 100644 external/lsquic/src/lshpack/.cirrus.yml delete mode 100644 external/lsquic/src/lshpack/.travis.yml delete mode 100644 external/lsquic/src/lshpack/CMakeLists.txt delete mode 100644 external/lsquic/src/lshpack/LICENSE delete mode 100644 external/lsquic/src/lshpack/README.md delete mode 100644 external/lsquic/src/lshpack/bin/CMakeLists.txt delete mode 100644 external/lsquic/src/lshpack/bin/calc-xxh.c delete mode 100644 external/lsquic/src/lshpack/bin/encode-qif.c delete mode 100644 external/lsquic/src/lshpack/bin/find-xxh.c delete mode 100644 external/lsquic/src/lshpack/bin/gen-fast-dec-table.c delete mode 100644 external/lsquic/src/lshpack/bin/gen-fast-enc-table.c delete mode 100644 external/lsquic/src/lshpack/bin/huff-decode.c delete mode 100644 external/lsquic/src/lshpack/bin/huff-encode.c delete mode 100644 external/lsquic/src/lshpack/compat/queue/sys/queue.h delete mode 100644 external/lsquic/src/lshpack/compat/windows/sys/uio.h delete mode 100644 external/lsquic/src/lshpack/deps/xxhash/xxhash.c delete mode 100644 external/lsquic/src/lshpack/deps/xxhash/xxhash.h delete mode 100644 external/lsquic/src/lshpack/lsxpack_header.h delete mode 100644 external/lsquic/src/lshpack/test/CMakeLists.txt delete mode 100644 external/lsquic/src/lshpack/test/lshpack-test.h delete mode 100644 external/lsquic/src/lshpack/test/test_hpack.c delete mode 100644 external/lsquic/src/lshpack/test/test_int.c delete mode 100644 external/lsquic/tests/CMakeLists.txt delete mode 100644 external/lsquic/tests/graph_cubic.c delete mode 100644 external/lsquic/tests/mini_parse.c delete mode 100644 external/lsquic/tests/test_ack.c delete mode 100644 external/lsquic/tests/test_ack_merge.c delete mode 100644 external/lsquic/tests/test_ackgen_gquic_be.c delete mode 100644 external/lsquic/tests/test_ackgen_gquic_le.c delete mode 100644 external/lsquic/tests/test_ackparse_gquic_be.c delete mode 100644 external/lsquic/tests/test_ackparse_gquic_le.c delete mode 100644 external/lsquic/tests/test_ackparse_ietf.c delete mode 100644 external/lsquic/tests/test_alarmset.c delete mode 100644 external/lsquic/tests/test_alt_svc_ver.c delete mode 100644 external/lsquic/tests/test_arr.c delete mode 100644 external/lsquic/tests/test_attq.c delete mode 100644 external/lsquic/tests/test_blocked_gquic_be.c delete mode 100644 external/lsquic/tests/test_blocked_gquic_le.c delete mode 100644 external/lsquic/tests/test_bw_sampler.c delete mode 100644 external/lsquic/tests/test_chlo_gen.c delete mode 100644 external/lsquic/tests/test_clear_aead.c delete mode 100644 external/lsquic/tests/test_conn_close_gquic_be.c delete mode 100644 external/lsquic/tests/test_conn_close_gquic_le.c delete mode 100644 external/lsquic/tests/test_conn_hash.c delete mode 100644 external/lsquic/tests/test_crypto_gen.c delete mode 100644 external/lsquic/tests/test_cubic.c delete mode 100644 external/lsquic/tests/test_dec.c delete mode 100644 external/lsquic/tests/test_di_nocopy.c delete mode 100644 external/lsquic/tests/test_elision.c delete mode 100644 external/lsquic/tests/test_engine_ctor.c delete mode 100644 external/lsquic/tests/test_export_key.c delete mode 100644 external/lsquic/tests/test_frame_chop.c delete mode 100644 external/lsquic/tests/test_frame_reader.c delete mode 100644 external/lsquic/tests/test_frame_rw.c delete mode 100644 external/lsquic/tests/test_frame_writer.c delete mode 100644 external/lsquic/tests/test_goaway_gquic_be.c delete mode 100644 external/lsquic/tests/test_goaway_gquic_le.c delete mode 100644 external/lsquic/tests/test_h3_framing.c delete mode 100644 external/lsquic/tests/test_hcsi_reader.c delete mode 100644 external/lsquic/tests/test_hkdf.c delete mode 100644 external/lsquic/tests/test_hpi.c delete mode 100644 external/lsquic/tests/test_lsquic_hash.c delete mode 100644 external/lsquic/tests/test_malo.c delete mode 100644 external/lsquic/tests/test_min_heap.c delete mode 100644 external/lsquic/tests/test_minmax.c delete mode 100644 external/lsquic/tests/test_packet_out.c delete mode 100644 external/lsquic/tests/test_packet_resize.c delete mode 100644 external/lsquic/tests/test_packno_len.c delete mode 100644 external/lsquic/tests/test_parse_packet_in.c delete mode 100644 external/lsquic/tests/test_purga.c delete mode 100644 external/lsquic/tests/test_qlog.c delete mode 100644 external/lsquic/tests/test_quic_be_floats.c delete mode 100644 external/lsquic/tests/test_quic_le_floats.c delete mode 100644 external/lsquic/tests/test_rechist.c delete mode 100644 external/lsquic/tests/test_reg_pkt_headergen.c delete mode 100644 external/lsquic/tests/test_rst_stream_gquic_be.c delete mode 100644 external/lsquic/tests/test_rst_stream_gquic_le.c delete mode 100644 external/lsquic/tests/test_rst_stream_ietf.c delete mode 100644 external/lsquic/tests/test_rtt.c delete mode 100644 external/lsquic/tests/test_send_headers.c delete mode 100644 external/lsquic/tests/test_senhist.c delete mode 100644 external/lsquic/tests/test_set.c delete mode 100644 external/lsquic/tests/test_sfcw.c delete mode 100644 external/lsquic/tests/test_shi.c delete mode 100644 external/lsquic/tests/test_some_packets.c delete mode 100644 external/lsquic/tests/test_spi.c delete mode 100644 external/lsquic/tests/test_stop_waiting_gquic_be.c delete mode 100644 external/lsquic/tests/test_stop_waiting_gquic_le.c delete mode 100644 external/lsquic/tests/test_stream.c delete mode 100644 external/lsquic/tests/test_streamgen.c delete mode 100644 external/lsquic/tests/test_streamparse.c delete mode 100644 external/lsquic/tests/test_tokgen.c delete mode 100644 external/lsquic/tests/test_trapa.c delete mode 100644 external/lsquic/tests/test_trechist.c delete mode 100644 external/lsquic/tests/test_varint.c delete mode 100644 external/lsquic/tests/test_ver_nego.c delete mode 100644 external/lsquic/tests/test_wuf_gquic_be.c delete mode 100644 external/lsquic/tests/test_wuf_gquic_le.c delete mode 100644 external/lsquic/tools/gen-rst-tags.pl delete mode 100755 external/lsquic/tools/gen-tags.pl delete mode 100644 external/lsquic/wincompat/README.txt delete mode 100644 external/lsquic/wincompat/sys/queue.h delete mode 100644 external/lsquic/wincompat/vc_compat.h diff --git a/external/lsquic/.cirrus.yml b/external/lsquic/.cirrus.yml deleted file mode 100644 index 14e8906..0000000 --- a/external/lsquic/.cirrus.yml +++ /dev/null @@ -1,20 +0,0 @@ -freebsd_instance: - image: freebsd-13-2-release-amd64 - -task: - install_script: - - pkg install -y cmake libevent git go - - git clone https://boringssl.googlesource.com/boringssl - - cd boringssl - # This is so that both GQUIC and IETF branches build. Just picking - # a known good revision: - - git checkout a2278d4d2cabe73f6663e3299ea7808edfa306b9 - - cmake . - - make - - cd - - script: - - git submodule init - - git submodule update - - cmake -DBORINGSSL_DIR=$PWD/boringssl . - - make - - make test diff --git a/external/lsquic/.nojekyll b/external/lsquic/.nojekyll deleted file mode 100644 index e69de29..0000000 diff --git a/external/lsquic/.readthedocs.yaml b/external/lsquic/.readthedocs.yaml deleted file mode 100644 index 31dbf0d..0000000 --- a/external/lsquic/.readthedocs.yaml +++ /dev/null @@ -1,35 +0,0 @@ -# Read the Docs configuration file for Sphinx projects -# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details - -# Required -version: 2 - -# Set the OS, Python version and other tools you might need -build: - os: ubuntu-22.04 - tools: - python: "3.12" - # You can also specify other tool versions: - # nodejs: "20" - # rust: "1.70" - # golang: "1.20" - -# Build documentation in the "docs/" directory with Sphinx -sphinx: - configuration: docs/conf.py - # You can configure Sphinx to use a different builder, for instance use the dirhtml builder for simpler URLs - # builder: "dirhtml" - # Fail on all warnings to avoid broken references - # fail_on_warning: true - -# Optionally build your docs in additional formats such as PDF and ePub -# formats: -# - pdf -# - epub - -# Optional but recommended, declare the Python requirements required -# to build your documentation -# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html -python: - install: - - requirements: docs/requirements.txt diff --git a/external/lsquic/.travis.yml b/external/lsquic/.travis.yml deleted file mode 100644 index 0c31521..0000000 --- a/external/lsquic/.travis.yml +++ /dev/null @@ -1,45 +0,0 @@ -language: c -if: branch = master -matrix: - include: - - name: Linux (gcc) - os: linux - compiler: gcc - addons: - apt: - packages: - - libevent-dev - - name: Linux (clang) - os: linux - compiler: clang - addons: - apt: - packages: - - libevent-dev - - name: macOS - os: osx -sudo: false -before_install: - - if [ $TRAVIS_OS_NAME = linux ]; then sudo add-apt-repository -y ppa:longsleep/golang-backports; fi - - if [ $TRAVIS_OS_NAME = linux ]; then sudo apt-get update; fi - - if [ $TRAVIS_OS_NAME = linux ]; then sudo apt-get install golang-1.13-go; fi -install: - - if [ $TRAVIS_OS_NAME = linux ]; then export PATH=/usr/lib/go-1.13/bin:$PATH; fi - - if [ $TRAVIS_OS_NAME = linux ]; then export GOPATH=/usr/lib/go-1.13:$GOPATH; fi - - if [ $TRAVIS_OS_NAME = linux ]; then export GOROOT=/usr/lib/go-1.13; fi -before_script: - - git clone https://boringssl.googlesource.com/boringssl - - cd boringssl - # This is so that both GQUIC and IETF branches build. Just picking - # a known good revision: - - git checkout a2278d4d2cabe73f6663e3299ea7808edfa306b9 - - cmake . - - make - - cd - - - git submodule init - - git submodule update - - cmake -DBORINGSSL_DIR=$PWD/boringssl . -script: - # Now build lsquic-client - - make - - make test diff --git a/external/lsquic/APIs.txt b/external/lsquic/APIs.txt deleted file mode 100644 index 16d5d00..0000000 --- a/external/lsquic/APIs.txt +++ /dev/null @@ -1,231 +0,0 @@ -# Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. -LSQUIC APIs -=========== - -LSQUIC exposes the following object types to the user: - - - Engine Settings (struct lsquic_engine_settings) - - Stream Interface (struct lsquic_stream_if) - - Engine API (struct lsquic_engine_api) - - Engine - - Connection - - Stream - -The first three -- engine settings, engine APIs, and stream interface -- -are used to instantiate the engine. After engine is instantiated, the -user code need only concern itself with engine, connections, and streams. - - -Engine Settings ---------------- - -Engine settings is the struct lsquic_engine_settings. It contains various -QUIC settings and LSQUIC parameters. The usual way to use it is to initialize -it to default values using lsquic_engine_init_settings(), modify any values -if necessary, and pass it as parameter to lsquic_engine_new(). - -QUIC settings are specified by the following members: - - lsquic_engine_settings QUIC - member parameter - ---------------------- --------- - es_cfcw CFCW - es_sfcw SFCW - es_max_streams_in MIDS - es_ua UAID - es_versions VER - es_idle_conn_to ICSL - es_silent_close SCLS - es_support_srej COPT/SREJ - es_support_nstp COPT/NSTP - es_support_tcid0 TCID - -The following parameters affect run-time behavior: - - es_rw_once Important: affects event dispatch - es_handshake_to - es_support_push - es_pace_packets - -Other noteworthy settings: - - es_max_header_list_size - es_progress_check - -To be sure your settings are good (in other words, passing this struct won't -trip up the engine constructor), use lsquic_engine_check_settings(). - - -Stream Interface ----------------- - -The stream interface, lsquic_stream_if, specifies callbacks LSQUIC engine -will call for connections and streams. - -The following callbacks should be specified for connection: - - on_new_conn This is called when connection is created. - - on_goaway_received This function is called when we receive GOAWAY - frame from peer. This callback is optional. - - on_conn_closed Connection is closed: all streams have been - destroyed. - -The streams have four callbacks: - - on_new_stream Stream has been created. - - on_read Stream can be read from (see Events). - - on_write Stream can be written to (see Events). - - on_close Stream has been closed. - -For both connections and streams, the "on new" callback return value can -be used to specify user-supplied data. This data pointer is optional and -can be NULL. It can also refer to the same data for the connection and -its streams. "on close" callbacks should be used to free user-supplied -data. - - -Engine API ----------- - -The engine API, struct lsquic_engine_api, is a combination structure to -make calling lsquic_engine_new() manageable. It holds references to -struct lsquic_engine_settings and struct lsquic_stream_if, as well as: - - - Interface for sending outgoing packets, ea_packets_out - - Interface for allocating memory for outgoing packet buffers - (optional). - - Interface for share memory hash, ea_shi - - Optional interface for reporting connections whose handshake - did not complete (ea_bad_handshake) - -ea_packets_out is a pointer to a function of type lsquic_packets_out_f. -The engine calls this function when it is appropriate to send out packets -for one or more connections, which it gives to the function in a batch. -This batch is an array of struct lsquic_out_spec. - - -Engine ------- - -The engine is instantiated using lsquic_engine_new(). The first parameter -is a list flags and the second parameter is the reference to the engine -api. The engine settings are specified, they are copied; changing -the setting after the engine has been created will not affect engine's -behavior. If the settings are not specified, the engine will use default -settings created by lsquic_engine_init_settings(). - -Once the engine is instantiated, there are four main ways to use it to -drive QUIC connections: - - 1. Create a connection using lsquic_engine_connect(). - 2. Feed it incoming packets using lsquic_engine_packet_in() function. - 3. Process connections using one of the connection queue functions - (see Connection Queues). - 4. Accept outgoing packets for sending (and send them!) using - ea_packets_out callback. - - -Connection Management ---------------------- - -A connection needs to be processed once in a while. It needs to be -processed when one of the following is true: - - - There are incoming packets; - - A stream is both readable by the user code and the user code wants - to read from it; - - A stream is both writeable by the user code and the user code wants - to write to it; - - User has written to stream outside of on_write() callbacks (that is - allowed) and now there are packets ready to be sent; - - A timer (pacer, retransmission, idle, etc) has expired; - - A control frame needs to be sent out; - - A stream needs to be serviced or created. - -Each of these use cases is handled by a single function: - - lsquic_engine_process_conns() - -The connections to which the conditions above apply are processed (or -"ticked") in the least recently ticked order. After calling this function, -you can see when is the next time a connection needs to be processed using - - lsquic_engine_earliest_adv_tick() - -Based on this value, next event can be scheduled (in the event loop of -your choice). - -Connection ----------- - -A connection is created using lsquic_engine_connect(). When on_new_conn() -is called, the client code should call lsquic_conn_make_stream() one or -more times. One new stream will be created for each one of those calls. - -Several auxiliary functions are available: - - - lsquic_conn_id() - - lsquic_conn_going_away() - - lsquic_conn_get_peer_ctx() - - lsquic_conn_get_stream_by_id() - - lsquic_conn_get_ctx() - - -Stream ------- - -LSQUIC stream hides QUIC and HTTP/2 framing complexities from the user. -What it presents is a way to send HTTP headers and, optionally, body to -peer. On read side, the user gets what looks like HTTP/1.1 stream. - -Expected usage for client is to express the desire to write to stream -using lsquic_stream_wantwrite() call. Once on_write() is called: - - 1. Write headers using lsquic_stream_send_headers() - 2. Optionally write payload body using of of lsquic_stream_write(), - lsquic_stream_writev(), or lsquic_stream_writef(). - -That done, shutdown write side using lsquic_stream_shutdown(), unregister -for write events and register for read events using lsquic_stream_wantread(). - -Read and parse HTTP/1.1 stream from on_read() callback until end-of-stream -or an error is encountered. - -Then unregister the read event and shutdown the read side. The stream will -be closed after that at some point and on_close() callback will be called, -at which point resources can be freed. (Internally, the stream object is -not destroyed until either all the packets carrying its data are ACKed or -the connection is destroyed). - -on_read() and on_write() callbacks are dispatched differently based on the -value of es_rw_once: - -If es_rw_once is false, then the callbacks are dispatched in a loop until -the user unregisters the event or the stream becomes unreadable (or -unwriteable). - -If es_rw_once is true, on_read() and on_write() are called once "per tick". -It is the up to the user to read and write enough data. - - -Events ------- - -Stream events are persistent: once call lsquic_stream_wantwrite() or -lsquic_stream_wantread(), the event stays active until turned off. - -Note that when an error is encountered (such as a stream reset), the -stream becomes readable and writeable: this allows user code to collect -the error. - - -Versions --------- - -QUIC version are listed in enum lsquic_version. To specify a list of -versions, they are usually placed in a bitmask, e.g. es_versions. diff --git a/external/lsquic/BUILD-WINDOWS.md b/external/lsquic/BUILD-WINDOWS.md deleted file mode 100644 index 26c5b7c..0000000 --- a/external/lsquic/BUILD-WINDOWS.md +++ /dev/null @@ -1,110 +0,0 @@ -LiteSpeed QUIC (LSQUIC) Library - Building for Windows -====================================================== - -Description ------------ - -This document is intended to supplement the document README.md at the -root of the distribution of the LiteSpeed QUIC (LSQUIC) Library -to build the library and programs in a Windows environment. - -The addition of Windows support to the LSQUIC was a contribution -from the user community and this document was based on our experiences -of validating the code. As for the overall implementation, do not hesitate -to report bugs back to us. Even better, continue to send us fixes and -improvements - it makes the code better for everyone. - - -Preliminaries -------------- -It it recommended that the installer have experience with Windows development, -Visual Studio, and open source projects in Windows. These instructions assume -a general build, primarily for 64-bit, both of a debug and a release version. - -Some open source code required to be installed to build the code include: - - The [Git version control system executable for Windows](https://git-scm.com/download/win). - - A version of the Visual Studio development environment for Windows. - The Windows SDK and C++ must be installed from it. The - [Visual Studio Community Edition](https://www.visualstudio.com/thank-you-downloading-visual-studio) will be just fine. - - [cmake for Windows](https://cmake.org/download/). Download and install the - version appropriate for the development/target platform (32 vs 64-bits, - etc.). - - The Windows vcpkg package manager. It can be cloned from [here](https://github.com/Microsoft/vcpkg). - Clone it at the same level to be used to clone/develop the lsquic. - The package must be compiled following the instructions on the git - repository. - - Perform builds using the _Developer Command Prompt for Visual Studio_ instead - of the regular `cmd.exe`. - - Once the package manager has been built, it must be used to install - and build some open source projects. Before doing that, an environment - variable must be defined which specifies how the package should be built. - The easiest way would be to add it into the system environment variables - in the System applet of the Windows Control Panel. This example assumes - 64-bit static libraries will be built, which is what is generally - recommended: - ``` - VCPKG_DEFAULT_TRIPLET=x64-windows-static - ``` - - From the command line, once the variable above has been defined, install - both *zlib* and *libevent*. Note that libevent may also automatically - install *openssl*. If it does not, it may need to be manually specified - to properly link the lsquic executables. - ``` - vcpkg install zlib:x64-windows-static - vcpkg install libevent:x64-windows-static - vcpkg integrate install - ``` - - Clone and compile boringssl. It can be cloned from [here](https://boringssl.googlesource.com/boringssl). - - ``` - git clone https://boringssl.googlesource.com/boringssl - cd boringssl - cmake -DCMAKE_GENERATOR_PLATFORM=x64 --config Debug -DBUILD_SHARED_LIBS=OFF -DOPENSSL_NO_ASM=1 . - msbuild ALL_BUILD.vcxproj - set boringssl=%cd% - ``` - - Visual Studio can be run, and the project opened within the boringssl - directory. Set the solution configuration to *Debug* and the solution - platform to *64-bit*. Compile the project. - - Repeat the cmake and compile steps replacing *Debug* with *Release*. - -Make and Compile LSQUIC ------------------------ - - -Clone lsquic: - - ``` - git clone https://github.com/litespeedtech/lsquic.git --recurse-submodules - cd lsquic - ``` - -Configure the build using cmake (you can specify `Release` instead of `Debug` -to build an optimized version of the library, but that won't build tests): - - ``` - cmake -DCMAKE_GENERATOR_PLATFORM=x64 -DBUILD_SHARED_LIBS=OFF ^ - -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_BUILD_TYPE=Debug ^ - -DCMAKE_TOOLCHAIN_FILE=c:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake ^ - -DBORINGSSL_DIR=%boringssl% . - ``` - -Compile everything (add `/m` flag if you have processors to spare): - - ``` - msbuild ALL_BUILD.vcxproj - ``` - -`http_client.exe` should be found in the `Debug` (or `Release`) directory. - -Run tests (assuming `Debug` build): - - ``` - msbuild RUN_TESTS.vcxproj - ``` - -Have fun, - -LiteSpeed QUIC Team. - -Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc diff --git a/external/lsquic/CHANGELOG b/external/lsquic/CHANGELOG deleted file mode 100644 index 54da316..0000000 --- a/external/lsquic/CHANGELOG +++ /dev/null @@ -1,1774 +0,0 @@ -2025-07-17 - - 4.3.1 - - Fix a memory leak in lsquic_engine_packet_in() - -2025-06-17 - - 4.3.0 - - Add WebTransport support. - - Fix IETF QUIC IP spoofing amplification attack. - - Improve preferred address migration implementation, pass interop tests. - - Add lsquic_conn_get_info() API to retrieve information about a connection. - -2025-02-18 - - 4.2.0 - - Address hash flood attack for lsquic_hash by switching to rapidhash with stronger random seed. - - Fix packet packing problem for post-quantum support. - - Add configuration to control version negotiation and amplification factor. - -2024-12-16 - - 4.1.0 - - Update to ls-qpack v2.6.1 to fix a infinite loop. - - Add lsquic_engine_get_conns_count() API - - Updated ea_generate_scid() API - - Fix retry packet SCID generation to follow engine API. - - Fix QUICv2 header protection key when retry packet is involved. - -2024-09-23 - - 4.0.12 - - Fix stream WANT_WRITE flag that causes busy looping. - -2024-09-09 - - 4.0.11 - - Fix assert failure related to splitting a large packet. - -2024-07-02 - - 4.0.10 - - Fix server initial packet padding. - - Fix a handshake failure corner case due to packet corruption. - -2024-06-12 - - 4.0.9 - - Fix bpq_count (issue #504). - -2024-03-12 - - 4.0.8 - - Fix RETIRE_CONNECTION_ID frame abuse. - - Fix some assert failures. - -2024-02-28 - - 4.0.7 - - Fix overly strict 0-RTT packet DCID validation. - - Update docker build. - -2024-02-23 - - 4.0.6 - - Fix ACK handling. - - Do not apply congestion control to CONNECTION_CLOSE frame. - -2024-02-07 - - 4.0.5 - - Fix CPU spinning due to STREAM_BLOCKED frame. - -2024-01-08 - - 4.0.4 - - Fix DCID validation. - - Fix CPU spinning due to pending STREAM_BLOCKED frame. - -2023-12-25 - - 4.0.3 - - Fix session resumption bug introduced in 4.0.2. - -2023-12-19 - - 4.0.2 - - More strict RFC compliance. - - Minimize packet generated when send STREAM_BLOCKED frame - - Fix memory management bugs. - - Fix memory leak in unit tests. - -2023-05-14 - - 4.0.1 - - Fix send_ctl bug. - - Make logid consistent - - Reduce memory usage for storing CIDs. - -2023-03-14 - - 4.0.0 - - Add support for QUICv2 (RFC9369). - - Add support for version negotiation (RFC9368). - - Retry packet for address validation. - - Improve handshake under high packet loss/corruption. - - Improve QUIC interop results - -2023-01-26 - - 3.3.1 - - Fix blocked header encoding stream due to connection flow control congestion. - - Fix qeh_write_headers bug for Windows. - - Fix corner case for packet resizing. - -2023-01-04 - - 3.3.0 - - Improve path validation logic to avoid sending padded packet to unverified - peer, follow 3X anti-amplification rule. - - Optimize application callback when STOP_SENDING frame is received. - - Improve new connection callback logic. - - Improve handling of a closed connection. - - Update BoringSSL to the most recent version. - - Fix memory leaks in gquic handshake and packet handling. - - Update ls-qpack to 2.5.1, ls-hpack to 2.3.1 to address compiler warnings - -2022-10-20 - - 3.2.0 - - Update ls-qpack to 2.5.0 to address a decoder bug - - Assertion failure if poison packet was acked - - Fix packet_in pool memory leak - -2022-08-16 - - 3.1.2 - - Update ls-qpack to 2.4.0 to address a use-after-free bug - - Address a few corner cases that trigger assert failures. - - Properly handle unexpected large packet for gQUIC. - - Fix memory leak in shared hash interface - - Fix IPv6 MTU detection - - Fix wrong size used in packet regeneration. - -2022-05-13 - - 3.1.1 - - Fix memory leak in processing stream frames (isse #368) - -2022-05-06 - - 3.1.0 - - Better handling of transport parameter max_table_capcity < 32 - - Fix NULL pointer dereference in handshake - - Fix 0-RTT transport parameter validation (issue #367) - - Remove unnecessary debug log to avoid NULL pointer dereference - - Tick connection on datagram write (pull #314) - - Do not dispatch write event for FINISHED stream - - Tweaks for CMake configuration (pull #354 #369 #370 #373 #374) - - Update ls-qpack to 2.3.0 - -2022-01-10 - - 3.0.4 - - Fix overly strict assert() - - Do not reset path MTU due to three lost_mtu_probe - - Fix handshake failure due to too many realy data - - Better build support for Windows platform - - Update ls-qpack to 2.2.3 - -2021-09-30 - - 3.0.3 - - Generate ACK for DATAGRAM frame while avoid RETX (issue #312 #325). - - Fix BBR end of startup phase detection (issue #328). - - Fix HTTP/3 v1 retry handling (issue #332) - - Fix memory leak when reset dcid (issue #333) - - Fix double decrement for ifc_active_cids_count (#334) - - Fix uninitialized value in frame_reader/frame_writer (#316) - - Remove a few overly strict asserts. - -2021-06-16 - - 3.0.2 - - Do not timeout connection if peer sends PING frames. - - Do not assert for MTU probe packet when cancel a path. - -2021-06-16 - - 3.0.1 - - Only force TICK_CLOSE flag after received CONNECTION_CLOSE frame. (issue #292 #281) - - Avoid mismatch in packet parsing. (issue #262) - - Remove unnecessary shi_delete call. - -2021-06-02 - - 3.0.0 - - Enable HTTP/3 v1 by default, drop draft 34. - - Prevent connection timeout when client does not send PING frame. - - Close connection ASAP after recieve CONNECTION_CLOSE (issue #284) - - Do not assert() when decode a trailer. - - Properly handle GOAWAY frame, do not close the last acknowledged stream. - -2021-04-20 - - 2.30.2 - - Update ls-hpack to 2.3.0 to address dynamic table size limit (issue #260). - -2021-04-16 - - 2.30.1 - - Fixed an unintialized data member for handling pushed headers. - - Added a new status code for version negotiation failure. - - Fixed a few compliance issues found by h3spec. - - Addressed high CPU usage when transport cannot send pending packets. - -2021-04-12 - - 2.30.0 - - Added support for sending/receiving multiple headers to address the - case related to "100 continue" header handling. - - Addressed high CPU usage for a GOAWAY connection before sending - CONNECTION_CLOSE. - - Addressed SIGFPE due to zero pacing rate. (ISSUE #254). - - Fixed a minor issue related to multi-paths. - -2021-03-31 - - 2.29.6 - - Documentation: describe lsquic internals ("guts"). - - Two more fixes to compliance issues found by h3spec. - - Truncate, don't abort, SCIDs larger than 16 bytes (PR #244). - - Several small internal improvements and space optimizations. - -2021-03-17 - - 2.29.5 - - Fix a few issues detected by h3spec for better compliance with HTTP/3 - standard. - -2021-03-08 - - 2.29.4 - - [BUGFIX] Infinite loop in stream: returned HQ frame can be at any - point on the list. - - [BUGFIX] Fail push promise immediately if STREAM_NOPUSH is set. - -2021-03-03 - - 2.29.3 - - [BUGFIX] Do not send RESET_STREAM if writing to stream is already - finished. - - perf_client: wait for all ACKs before exiting. - - Improve how generated RESET_STREAM is logged. - - Fix compilation in different combos of adv_tick/conn_stats flags. - - Move qpack warning disablement into src/liblsquic/CMakeLists.txt. - -2021-02-23 - - 2.29.2 - - Fix regression in gQUIC server: bug #234. - -2021-02-18 - - 2.29.1 - - Make it possible to build the library and unit tests without - libevent. - - Build all command-line utilities in bin/ - - Add perf_client and perf_server command-line utilities to test - performance according to the "perf" protocol. - -2021-02-10 - - 2.29.0 - - [FEATURE] QUIC and HTTP/3 Internet Draft 34 support and v1 support. - The latter is turned off by default. - - Drop support for ID-28 and ID-32. - - [BUGFIX] IETF QUIC mini conn receive history (trechist): allow - unlimited inserts by dropping smallest elements. - - [BUGFIX] gQUIC: set STTL to correct value, issue #226. - - [BUGFIX] Account for poison packet gap when MTU probe was too large. - -2021-02-03 - - 2.28.0 - - [API] lsquic_ssl_sess_to_resume_info() is the new way to get - session info. - - [API] Add user pointer to ea_generate_scid callback. - - [API] Add lsquic_dcid_from_packet() -- a fast function to parse - out DCID. - - [API] Add es_max_batch_size to control outgoing packet batch size. - - [BUGFIX] Disallow sending of header while promise is being written. - - [BUGFIX] Flush stream when buffered bytes exhaust stream cap. - - [BUGFIX] Deactivate HQ frame if writing push promise fails. - - Perform sanity check on peer transport parameters and fail the - handshake if some flow control limits are too low. This can be - turned off, see es_check_tp_sanity. - - http_server: fix how requests are read in "hq" mode. - -2021-01-27 - - 2.27.6 - - [BUGFIX] Replace dispatch read/write events assertion with a check. - - [BUGFIX] gQUIC connection close: there is no HEADERS stream without - HTTP flag, see issue #220. - - http_client, http_server: add hq protocol support and other flags - for use with QUIC Interop Runner. - - Fix: use IP_PMTUDISC_PROBE (not IP_PMTUDISC_DO) on Linux to set - Don't-Fragment flag on outgoing packets. - - Fix send_packets_one_by_one on Windows platform when sending - multiple iovs, see issue #218. - - Exit echo_client on Windows immediately, see issue #219. - -2021-01-18 - - 2.27.5 - - [BUGFIX] Assertion in send controller when path validation fails. - - [BUGFIX] Assertion in BBR when sending out-of-order packets is - detected. - - [BUGFIX] Drop overflow receive history ranges when cloning. - - Log correct size of the incoming packet. - - Fix internal stream function. - -2021-01-13 - - 2.27.4 - - [API] Add lsquic_conn_get_sni(), fixes issue #203. - -2021-01-08 - - 2.27.3 - - [BUGFIX] gQUIC: do not destroy critical streams when connection is - closed. See issue #201. - - [BUGFIX] Drop #if LSQUIC_CONN_STATS from lsquic.h. See issue #211. - - [BUGFIX] Challenge cancellation when path validation fails. - - [BUGFIX] Do not send FIN if RST is scheduled to be sent on a stream. - - [BUGFIX] gQUIC's is_tickable() when connection is closing. - - [BUGFIX] Q050 processing of GOAWAY frames. - -2021-01-06 - - 2.27.2 - - [BUGFIX] Memory corruption in receive history copy-ranges function. - -2021-01-06 - - 2.27.1 - - [API] New knob to set outgoing packet batch size. - - Aborted connection now become tickable immediately. - - Abort connection when HTTP/3 frame cannot be opened (can only happen - when malloc fails). - -2020-12-31 - - 2.27.0 - - [API] Remove keylog callbacks. See issue #188. - - Add a bit more ALPN logging. - -2020-12-23 - - 2.26.2 - - [BUGFIX] Do not drop incoming data when STOP_SENDING is received. - - [BUGFIX] Receipt of STOP_SENDING should not cause read-reset. - - [BUGFIX] Allow stream writes after receiving RESET. - - [BUGFIX] Typo in stream: ANDing enum with wrong flag. - - [BUGFIX] Reset elision: do not use zero as special stream ID value, - for zero is a valid stream ID in IETF QUIC. - - [API] Add optional on_conncloseframe_received() callback. - - Use zero error code in RESET stream sent in response to STOP_SENDING. - -2020-12-17 - - 2.26.1 - - [BUGFIX] Migration corner cases: drop or pad over path challenge - and response frames when necessary. - - Fix stream unit test. - -2020-12-09 - - 2.26.0 - - [OPTIMIZATION] Adjust packet reordering threshold when spurious losses - are detected. - - [API] Pass pointer to local sockaddr to ea_get_ssl_ctx() callback. - -2020-12-04 - - 2.25.0 - - [API, FEATURE] Add es_delay_onclose option to delay on_close until all - data is ACKed. Use new function lsquic_stream_has_unacked_data() to - learn whether peer acknowledged all data written to stream. - - [API] Add optional on_reset() stream callback to get notifications - when RESET or STOP_SENDING frames are received. - - [BUGFIX] On STOP_SENDING, make conn tickable is _writeable_, not - readable. - -2020-11-24 - - 2.24.5 - - [FEATURE] Improve Delayed ACKs extension and turn it on by default. - - Limit receive history to a finite amount of memory. - -2020-11-18 - - 2.24.4 - - [BUGFIX] Check whether ECN counts are set in ACK struct before using - them. - - [BUGFIX] Calculate TLP timer correctly when only one packet is in - flight. - - [BUGFIX] Min RTO delay is 200 milliseconds, not 1 second. - - [BUGFIX] Memory leak in QPACK decoder handler: discard hset when - necessary. - - Allow retired and drained CIDs to be reused after a timeout. - -2020-11-11 - - 2.24.3 - - [BUGFIX] Get rough RTT estimate on receipt of Handshake packet. - This prevents BBR on the client from miscalculating pacing rate, - slowing down sending of ACK packets. - - [BUGFIX] Packets sent during handshake are app-limited. - - [BUGFIX] Bandwidth sampler starts in app-limited mode. - - [BUGFIX] Memory leak: free QPACK handler context in stream dtor. - - Logging improvements. - -2020-11-05 - - 2.24.2 - - [BUGFIX] Allow peer to migrate when its SCID is zero-length. - - [BUGFIX] PADDING size calculation: only one Short packet can be - coalesced. (This should have been part of the fix in 2.24.1). - - Abort connect if received NEW_CONNECTION_ID but current DCID is - zero-length. - - Improve log messages - -2020-11-04 - - 2.24.1 - - [API] Allow use of ea_get_ssl_ctx() on the client (optional). PR #186. - - [BUGFIX] Expand datagram with ack-eliciting Initial to 1200 bytes - after connection promotion. - - [BUGFIX] Discard CRYPTO frames from lower encryption levels after - connection promotion. - - [BUGFIX] Cancel path response if path could not be initialized. - -2020-10-28 - - 2.24.0 - - [FEATURE] QUIC and HTTP/3 Internet Draft 31 support. Drop ID-30 - and ID-31 support. - - [BUGFIX] Divide-by-zero in newly enabled conn stats code when no - packets were sent. - - [BUGFIX] Memory leak in gQUIC client when server hello cannot be - parsed. - - [BUGFIX] Server Initial packet size calculation. - - Log user-agent and CONN_CLOSE reason when peer reports error. - - Example programs: Specify ALPN for echo and md5 clients and servers - (issue #184). - - Example programs: Don't add "QUIC_" prefix to lines in keylog file - (issue #185). - - http_server: Fix fd leak in preadv mode; fix preadv() usage when - reading from disk. - -2020-10-22 - - 2.23.3 - - [BUGFIX] Update packetization threshold when writing to stream - after packet size is reduced following an RTO. - -2020-10-21 - - 2.23.2 - - Add QPACK stats collection and experimentation mode, see the new - es_qpack_experiment setting. - - Log busy connection stats every second using the new "conn-stats" - log module. - - Log about skipping only once. - - Update HTTP/3 greased frame type formula. - - Use ls-qpack v2.2.1. - -2020-10-13 - - 2.23.1 - - [FEATURE] IETF Client 0-RTT support. - - [BUGFIX] Do not schedule MTU probe on first tick. - - [BUGFIX] Parsing DATAGRAM frame. - - [BUGFIX] If push promise fails, do not invoke hset destructor. - - [BUGFIX] Client: When connections are IDed by port number, check DCID. - Fixes issue #176. - - [BUGFIX] Regression introduced in 2.22.0: use correct number of - PNSs for IETF mini conn during promotion. - - Revert the 2.22.1 lsquic_is_valid_hs_packet change. All that was - necessary is a change to the way we call it in lsquic_engine. No - change to the function itself is required. - -2020-10-08 - - 2.22.1 - - [BUGFIX] Function that checks validity of handshake packets. - -2020-10-07 - - 2.22.0 - - [FEATURE] Extensible HTTP Priorities (HTTP/3 only). - - [FEATURE] Add conn context to packet-out memory interface (PR #175). - - [BUGFIX] gQUIC proof generation: allocate buffer big enough for - signature (issue #173). - - [BUGFIX] Make library thread-safe: drop use of global variables - (issue #133, issue #167). - - [BUGFIX] Deactivate only *recent* HQ frame, not any HQ frame. - - [BUGFIX] gQUIC server: associate compressed cert with SSL_CTX, - instead of keeping them in a separate hash, potentially leading - to mismatches. - - [BUGFIX] Stream data discard infinite loop: break on FIN. - - cmake: add install target via -DCMAKE_INSTALL_PREFIX (PR #171). - - Support randomized packet number to begin a connection. - - Mini and full IETF connection size optimization. - - http_client: specify HTTP priorities based on stream conditions. - -2020-09-29 - - 2.21.0 - - [FEATURE] QUIC and HTTP/3 Internet Draft 31 support. - - [API] Let user generate Souce Connection IDs. - - [FEATURE] Allow building lsquic as shared library. - - [OPTIMIZATION] Receive history: use a single contiguous memory - block for everything. - - Deprecate QUIC versions ID-27 and ID-30. - -2020-09-25 - - 2.20.2 - - [BUGFIX] Memory leak: free pushed promise when refcnt is zero. - - [BUGFIX] Memory leak in IETF full conn dtor: cleanup closed IDs sets. - -2020-09-23 - - 2.20.1 - - [BUGFIX] Typo in new "validate peer addr by DCID" code. It is - a benign bug (works either way), but better to fix it. - - Simplify Stream Priority Iterator (SPI). - - Minor documentation updates. - -2020-09-15 - - 2.20.0 - - [FEATURE] QUIC and HTTP/3 Internet Draft 30 support. - - [FEATURE] Unreliable Datagram Extension support. - - [FEATURE] Adaptive congestion controller. - - [BUGFIX] Do not send MAX_STREAM_DATA frames on crypto streams. - - [BUGFIX] Fail with CRYPTO_BUFFER_EXCEEDED when too much CRYPTO - data comes in. - - [BUGFIX] Spin bit is now strictly per path; value is reset on - DCID change. - - [BUGFIX] Check that max value of max_streams_uni and - max_streams_bidi TPs is 2^60. - - [BUGFIX] Close IETF mini conn immediately if crypto session - cannot be initialized. - - Deprecate ID-28 (no browser uses it): it's no longer in the - default versions list. - - New programs duck_server and duck_client that implement the - experimental siduck-00 protocol. They quack! - - IETF crypto streams: don't limit ourselves from sending. - - Command-line programs: turn off QL loss bits if -G is used, as - Wireshark cannot decrypt QUIC packets when this extension is used. - - Turn all h3 framing unit tests back on. - - Fix malo initialization when compiled in no-pool mode. - -2020-09-08 - - 2.19.10 - - [FEATURE] Add lsquic_stream_pwritev(). This function allows one to - reduce the number of system calls required to read a file from disk - by using lsquic_stream_pwritev() together with preadv(2). - - [BUGFIX] When stream is reset, it is writeable -- let user collect - the error. - - [BUGFIX] Calculate correct conn flow control if reading ends early. - - [BUGFIX] Remove stream from read and write queues on internal - shutdown. This is a regression introduced in 2.19.7. - - [BUGFIX] Swapped arguments in IETF RESET_FRAME generation. - - Turn off mini conn history when compiling with Visual Studio; this - allows the project to compile on Windows again. - - http_client: Add -3 flag to stop reading from streams early; code - cleanup. - - Don't use -Werror. - -2020-09-02 - - 2.19.8 - - [FEATURE] Update the timestamp extension to latest version. - - [FEATURE] Cope with appearance of ECN blackholes. - - [OPTIMIZATION] return packno offset and size when header is generated. - - [BUGFIX] ignore old ACK frames in mini conns. - - [BUGFIX] Mark initial server path as initialized. - - [BUGFIX] Do not merge ACK if ECN counts do not match. - - Turn incoming packet number history in mini conn back on. - - Record mini conn event history again when compiled in debug mode. - - IETF mini conn: log when ACK is queued. - - Clean up and refactor code in several places. - -2020-08-26 - - 2.19.7 - - Handle ECT-CE event: issue a loss event. - - Log the fact that we ignore SETTINGS_MAX_HEADER_LIST_SIZE. - - Use Max Push ID in GOAWAY frame to cancel promises. - - Add support for HTTP/3 CANCEL_PUSH frame. - - lsquic_stream_is_pushed: streams without headers are never pushed. - - [BUGFIX] Regression in lsquic_stream_shutdown_internal: now it shuts down. - - Improve logic whether to generate CONNECTION_CLOSE. - -2020-08-20 - - 2.19.6 - - Don't process incoming ECN marks if ECN is not enabled. - - Schedule ACK when incoming packet is marked with CE. - -2020-08-11 - - 2.19.5 - - [BUGFIX] Generate frame record when moving an ACK from one buffered - packet to another. - -2020-08-06 - - 2.19.4 - - [BUGFIX] Do not return an oversize MTU probe to connection twice. - - [FEATURE] Delayed Acks updated to latest draft. Still experimental. - - Minor code cleanup in IETF full connection. - -2020-08-04 - - 2.19.3 - - [BUGFIX] Regression in 2.19.1 that breaks Q050 - -2020-07-30 - - 2.19.2 - - [BUGFIX] Do not reduce PLPMTU size by network overhead. - - [BUGFIX] Windows build. - -2020-07-29 - - 2.19.1 - - [FEATURE] DPLPMTUD support. IETF connections now search for the - maximum packet size, improving throughput. - - [DEBUG] Record event in stream history when on_close() is called - in dtor. - -2020-07-22 - - 2.18.2 - - [BUGFIX] Send prediction: lone path challenges do not get squeezed out - - Fix crash in http_client: now -K and -B can be used simultaneously - -2020-07-14 - - 2.18.1 - - [FEATURE] Implement the "QUIC bit grease" extension. - - [BUGFIX] Selecting CID used for logging on client. - - [BUGFIX] Header protection assertion. - - [BUGFIX] Server: enable SSL key logging when cert lookup callback - is not set. - - Remove some dead code. - -2020-07-06 - - 2.18.0 - - [API] Rename "0-RTT" to "session resumption." In IETF QUIC, "0-RTT" - always refers to early data, meaning a request that the server can - reply to in the very first return flight. A more appropriate name - for what we support on the client site is "session resumption," which - is standard TLS terminology. Later, when we add support for 0-RTT - (early data), we can use the 0-RTT terminology again, this time in - proper context. - - [BUGFIX] Do not set certificate callback if ea_lookup_cert is NULL. - - [BUGFIX] Make connection tickable when it's marked as closed. - - [BUGFIX] Fail certificate lookup if SNI is not present in HTTP mode. - - Several documentation fixes and improvements. - - Minor code cleanup. - -2020-06-24 - - 2.17.2 - - [BUGFIX] Infinite loop in stream: advance read offset when discarding - data. - - [OPTIMIZATION] Header protection: only initialize cipher once. - - [OPTIMIZATION] Batch header protection application. - -2020-06-18 - - 2.17.1 - - [FEATURE] QUIC and HTTP/3 Internet Draft 29 support. - - [BUGFIX] Check that scheduled packets are also sendable when - calculating a connection's "tickable" property. - - [BUGFIX] Don't count scheduled packets as in-flight when pacer is - checked on tick. - - gQUIC: delay calling on_new for pushed stream until headers are - available. - - Allow nested calls to lsquic_engine_connect(). - -2020-06-15 - - 2.16.3 - - [OPTIMIZATION] Stash up to two reordered packets in IETF mini conn - instead of dropping them. - - [BUGFIX] Crash: check decrypt context before using it. This regression - was introduced in 2.16.2. - -2020-06-12 - - 2.16.2 - - [BUGFIX] ID-28: do not use TLS middlebox compatibility mode in - ClientHello. This change requires using a newer version of BoringSSL. - - [BUGFIX] Free connections in Advisory Tick Time Queue in engine dtor. - - [BUGFIX] IETF QUIC client: narrow migration check to a single path. - - [BUGFIX] NULL dereference: set function pointers for alarm for path - challenges 2 and 3. - - [BUGFIX] HTTP/3 headers may be followed immediately by trailers. - - [BUGFIX] Log messages when SCID changes. - -2020-06-09 - - 2.16.1 - - [FEATURE] Use "no-progress timeout" after which connection is closed. - - [BUGFIX] Select new SCID when current SCID is retired. - - [BUGFIX] Don't warn about dropped Initial packet sequence gaps during - mini/full handoff. - - [BUGFIX] Send correct conn error when HTTP/3 frame is truncated. - - [BUGFIX] Mini conn: consider amplification when deciding to return - TICK_SEND. - - [BUGFIX] Don't double-count tag length in amplification logic. - - [BUGFIX] Don't squeeze out lone path challenges. - - [BUGFIX] Log messages dealing with scheduled packet queue squeezing. - - [BUGFIX] don't wipe current path if no path challenge responses - come back. - - [BUGFIX] When path is reset, don't lose path_id which is used for - logging. - - Downgrade flow control violations to info log level from warnings. - - Fix connection cap extra check, avoid checks in nested calls. - - Fix some unit tests when extra checks are enabled. - - Use ls-hpack 2.2.1. - - Turn off unconditional extra checks for IETF clients. - - Extra checks: don't verify sent size of hello packets. Client - changes DCID length and this check will fail. - -2020-06-03 - - 2.16.0 - - [API] Use lsxpack_header v206. - - [FEATURE] Windows supported. - - [BUGFIX] Fix uninitialized variable use in client (regression in - 2.15.0). - - Use ls-hpack 2.2.0. - - Use ls-qpack 2.2.0. - - Sample programs: fix the way maximum number of packets is - calculated. - - Remove some dead code. - -2020-05-27 - - 2.15.0 - - [FEATURE] QUIC and HTTP/3 Internet Draft 28 support. - - [BUGFIX] Ignore Retry packets after other packets are decrypted - successfully. - - [BUGFIX] Transport parameter decoding: CID no longer has 4-byte - length minimum. - - http_client: fix and optimize lsxpack_header allocator. - - Drop support for Internet Draft 25. - -2020-05-19 - - 2.14.8 - - Support Android. - - Rerrange tree: move command-line examples into bin/ and unit - tests into tests/ from test/unittests/. - -2020-05-12 - - 2.14.7 - - [BUGFIX] ALPN-to-version mapping: do not skip h3-Q050. - - [BUGFIX] Frame reader: skip headers if target stream is closed. - -2020-05-06 - - 2.14.6 - - [BUGFIX] Fix amplification mitigation in 0-RTT case. - - [BUGFIX] IETF mini connection should not tickable if cannot send - a packet due to amplification. - - [BUGFIX] Fail if active_connection_id_limit TP is smaller than 2. - - [BUGFIX] Qlog server certificates for IETF QUIC connections. - - [BUGFIX] Uninitialized struct padding usage in tokgen (benign). - - [BUGFIX] Incorrect argument to shi_lookup() (benign). - -2020-04-29 - - 2.14.5 - - [BUGFIX] In coalesced datagram, ignore packets whose CID does not match. - - [BUGFIX] Frame reader: skip headers if target stream is not found. - - [BUGFIX] Log message in QPACK decoder handler. - -2020-04-24 - - 2.14.4 - - [BUGFIX] Heed es_rw_once for pushed HTTP/3 streams. - - [BUGFIX] IETF client: set correct flags on bidirectional streams. - - [BUGFIX] Generate Cancel Stream QPACK instructions for abandoned - streams. - - [BUGFIX] Do not call header callbacks after stream is closed. - - Use ls-qpack 2.1.1 - -2020-04-15 - - 2.14.3 - - [BUGFIX] gQUIC: pass correct stream to hsi_create_header_set() callback. - - [BUGFIX] Use ls-hpack 2.1.1 - - Improve stream code readability. - - Use ls-qpack 2.0.5 - -2020-04-08 - - 2.14.2 - - [BUGFIX] Use ls-qpack 2.0.4 - - [BUGFIX] Honor max packet size on the client and when path changes. - - http_server: fix prepare_decode() function. - -2020-04-07 - - 2.14.1 - - [BUGFIX] Place connections on tickable queue when sending is reenabled. - - [BUGFIX] A connection is tickable if it has unsent packets. - - [BUGFIX] Heed peer's max_packet_size transport parameter. - -2020-03-30 - - 2.14.0 - - [API] Use lsxpack_header structure to send HTTP headers. - - [OPTIMIZATION] nocopy's readable_bytes() function. - - http_server: fix typo in error message - - Use ls-hpack 2.1.0. - - Use ls-qpack 2.0.0. - -2020-03-23 - - 2.13.3 - - [BUGFIX] ACK ping-pong: TIMESTAMP frame is not to be acked. - -2020-03-13 - - 2.13.2 - - [BUGFIX] Use of new lsxpack_header API's hsi_prepare_decode(). - -2020-03-12 - - 2.13.1 - - [API] Use lsxpack_header structure to process incoming headers. - - [BUGFIX] Fix assertion when zero-padding Initial packet. - - [BUGFIX] Use idle timeout before we learn of peer's value. - - Use ls-hpack 2.0.1 -- has lsxpack_header changes. - - Use ls-qpack 0.14.0 -- new, common with ls-hpack, XXH seed (not - used yet). - - Code cleanup: prefix exported functions with "lsquic_". - -2020-03-02 - - 2.12.0 - - [FEATURE] QUIC timestamps extension. - - [API] New: ea_alpn that is used when not in HTTP mode. - - [BUGFIX] SNI is mandatory only for HTTP/3 and gQUIC. - - [BUGFIX] Benign double-free -- issue #110. - - [BUGFIX] Printing of transport parameters. - -2020-02-24 - - 2.11.1 - - [FEATURE] QUIC and HTTP/3 Internet Draft 27 support. - - [FEATURE] Add experimental delayed ACKs extension. - - Drop support for Internet Draft 24. - - Code cleanup. - -2020-02-14 - - 2.10.6 - - [BUGFIX] HTTP/3 framing: don't misinterpret rare occurence as error. - - [BUGFIX] Send gap warning due to missing poisoned packet. - - Stream unit test for scenario in issue #106. - -2020-02-13 - - 2.10.5 - - [BUGFIX] BBR: call cci_sent() with correct arguments and at correct - time. - - Refactor transport parameters module. - - Minor code cleanup. - -2020-02-11 - - 2.10.4 - - [BUGFIX] Send HANDSHAKE_DONE only after Finished is received. - - [BUGFIX] Don't treat garbage UDP padding as library error; ignore - it instead. - - [BUGFIX] Fix compilation on FreeBSD (missing header). - - Code cleanup: remove unnecessary #includes. - -2020-01-31 - - 2.10.3 - - [BUGFIX] Cancel path responses and challenges on old path when - switching to new path - - Logging network path information. - -2020-01-30 - - 2.10.2 - - [BUGFIX] Do not delay ACKs for Initial and Handshake packets. - - [BUGFIX] Send PATH_CHALLENGE if path changed before mini conn - promotion. - - Logging improvements. - - http_client: discard data faster. - -2020-01-29 - - 2.10.1 - - [BUGFIX] Coalesced packets could get longer than normal packet - size. - - Add spin bit configuration option es_spin (-o spin=[01]). - - Disable spin bit in 1/16 of connections. - - Improve logging a bit. - -2020-01-28 - - 2.10.0 - - [FEATURE] QUIC and HTTP/3 Internet Draft 25 support. - - [API] Drop support for ID-23. - - [BUGFIX] Set key phase bit on outgoing packets correctly. - - Code cleanup. - -2020-01-20 - - 2.9.0 - - [API] Drop support for Q039. - - Improve ACK-queuing logic. Send an ACK once in a while if - peer keeps on sending non-ack-eliciting packets. - - Improve Alt-Svc string: Q050 and later are not included in - the old-style "quic" string. - - Send stateless resets if connection could not be promoted. - - Schedule MAX_DATA if needed when DATA_BLOCKED is received. - - Use ls-qpack 0.11.2 -- needed for server push optimization. - - Code cleanup: handle some error cases, improve logging. - -2020-01-16 - - 2.8.9 - - [BUGFIX] Use ls-qpack 0.11.1 - - [OPTIMIZATION] Generate random bytes in batches. - - Change loss_bits transport parameter ID to 0x1057 following - latest draft. - - Randomize period with which PINGs are sent to elicit ACKs. - - Some refactoring and code cleanup. - -2020-01-14 - - 2.8.8 - - [BUGFIX] Invalid read when parsing IETF transport parameters - (this was benign). - - [OPTIMIZATION] Frame bundling when using buffered packets in - IETF QUIC: a) flush QPACK decoder stream and b) include ACKs - in opportunistic fashion. - - Fix HTTP/3 framing unit test. - - Code cleanup. - -2020-01-09 - - 2.8.7 - - [BUGFIX] Initial packet size check for IETF mini conn applies to - UDP payload, not QUIC packet. - - Support old and new school loss_bits transport parameter. - - Use Q run length of 64 as suggested in the loss bits Draft. - - Undo square wave count when packet is delayed. - - Code cleanup; minor fixes. - -2020-01-06 - - 2.8.5 - - [HTTP3] Verify number of bytes in incoming DATA frames against - content-length. - - [HTTP3] Stop issuing streams credits if peer stops opening QPACK - decoder window. This addresses a potential attack whereby client - can cause the server to keep allocating memory. See Security - Considerations in the QPACK draft. - - [BUGFIX] Mini conn: don't shorten max packet size for Q050 and later. - - [BUGFIX] Init IETF connection flow controller using correct setting. - - [BUGFIX] Fix unintended sign extension when removing header protection. - - Code cleanup and minor fixes. - -2019-12-30 - - 2.8.1 - - [FEATURE] Use occasional packet number gaps to detect optimistic - ACK attacks. - - [BUGFIX] Q050 client: all packet numbers are in the App PNS. - - [OPTIMIZATION] Merge multi-range ACK frames, not just single-range - ACK frames. - - IETF QUIC: use RTT estimate in ack timeout calculation. - - IETF handshake: abort conn when unexpected errors occur. - - Use PING rather than MAX_DATA frames to elicit ACKs from peer. - - Server: enforce 1200 byte Initial minimum packet size. - - [CLEANUP] Remove code to disable gQUIC crypto. - - [CLEANUP] Remove n_timestamps from ACK info struct. - - Optimize driver: reuse previous ancillary message when possible. - -2019-12-23 - - 2.8.0 - - [FEATURE] Add support for Q050. - - [OPTIMIZATION] Reduce mallocs in gQUIC handshake. - - [BUGFIX] Disable redo of failed STREAM frame insertion with debug - logging. - -2019-12-18 - - 2.7.3 - - [DEBUG] Further dedup next advisory tick messages when reason is - the same. - - [BUGFIX] Update size of `a` array in TP struct. Fixes (benign) - GitHub bug #94. - - Use Cubic by default again instead of BBR, as it delivers more - consistent performance. - -2019-12-11 - - 2.7.2 - - [BUGFIX] Send controller: update scheduled bytes when DCID length - changes (IETF client). - - [BUGFIX] Drop alarm check from sanity test. It no longer works now - that we use loss chains. - - [PORTABILITY] Fix build on Alpine Linux. - - [PORTABILITY] Fix build using XCode. - - Client initial DCID length: use RAND_bytes() instead of rand(3). - - Add unit tests for connection min heap. - - [DEBUG] Log CID in gQUIC handshake module - - [DEBUG] Turn on extra checks for IETF client send controller. - - [DEBUG] Dedup next advisory tick messages when reason is IDLE timer. - - [DEBUG] QPACK decoder handler: log header error code. - -2019-12-05 - - 2.7.1 - - [BUGFIX] client: don't call ignore_init() in middle of batch send. - ignore_init() makes an assumption that the send controller has access - to all outgoing packets. This change wraps a few IETF full connection - methods to delay calling ignore_init() until the engine returns all - outgoing packets that were batched. - - [BUGFIX] set errno to EAGAIN if sendmmsg() can't send all of them. - This needs to be done because the value of errno may be lost on - some platforms. - - [BUGFIX] Typo that set all bits in sm_qflags lead to crashes. - - [BUGFIX] Do not cancel header block processing after failure, as - QPACK releases the reference in that case. - - [CLEANUP] IETF encrypt: replace assert(0) with a warning. - - Several small improvements to the test server. - -2019-11-27 - - 2.7.0 - - [API, FEATURE] Close connection immediately when ea_packets_out() - fails with errno != EAGAIN. The API change is that errno is now - examined. Make sure to set it if using something other than - sendmsg() to send packets. - - [CLEANUP] Immediate close logic in IETF full conn. - - [CLEANUP] Fix bogus warning about uninitialized `pair' variable. - -2019-11-22 - - 2.6.7 - - [FEATURE] Implement the QL extension (offered by default). - - [BUGFIX] Abort when encountering unexpected HTTP/3 frames. - - [BUGFIX] Acknowledge (QPACK) HTTP/3 trailers correctly. - - [DEBUG] Turn on debug message for next advisory tick. - -2019-11-20 - - 2.6.6 - - [BUGFIX] Using HTTP/3 to HTTP/1.x converter. - - [BUGFIX] Truncate log messages instead of throwing them away. - -2019-11-15 - - 2.6.5 - - [BUGFIX] High priority buffered packet queue length. - - [BUGFIX] Rain time calculation: max_ack_delay is in milliseconds. - -2019-11-12 - - 2.6.3 - - [BUGFIX] Close DATA frames with empty payload correctly. - -2019-11-11 - - 2.6.2 - - [BUGFIX] SCID!=ODCID rule applies to Retry packets, not regular - packets. - - [BUGFIX] Zero-RTT: BoringSSL no longer flips read/write secrets. - - [BUGFIX] Truncate ACK frame rather instead of aborting IETF - connection. - - [BUGFIX] Client: don't send duplicate reset tokens. - - [BUGFIX] Remove invalid assertion in H3 framing code. - - Silence a warning in send ctl by restructuring switch() statement. - -2019-11-08 - - 2.6.1 - - [BUGFIX] set retry token on all resubmitted packets. - - Event log: log sent packet flags. In particular, this allows one - to see whether token was sent. - - Don't migrate client if es_allow_migration is false. - -2019-11-07 - - 2.6.0 - - [FEATURE] QUIC and HTTP/3 Internet Draft 24 support - -2019-11-07 - - 2.5.2 - - [BUGFIX] argument order to gQUIC client constructor. Regression - introduced in 2.5.0. - - [BUGFIX] split buffered packet error recovery: destroy the correct - packet. - -2019-11-04 - - 2.5.1 - - [BUGFIX] Fix double-free when emptying a packet number space. - - [BUGFIX] http_server: fix md5sum handler: handle EOF correctly. - - [BUGFIX] Use random values in bits 4 and 5 of the first byte of - verneg packets (regression introduced in 2.5.0). - - [OPTIMIZATION] Don't compile in expensive attq checks by default. - - [OPTIMIZATION] http_server: compile regexes only once. - -2019-10-31 - - 2.5.0 - - [API] lsquic_engine_connect() can now be passed QUIC version to use. - - [OPTIMIZATION] Queue opportunistic ACKs if there is data to be sent. - - [BUGFIX] Don't evict streams from priority iterator if there is - only one queue. - - [OPTIMIZATION, BUGFIX] Several other optimizations and bug fixes. - - Use ls-qpack v0.10.7. - -2019-10-24 - - 2.4.10 - - [BUGFIX] IETF QUIC server: fix uninitialized variable use. - - [BUGFIX] make sure TLSv1.3 is not disabled in SSL object. - - [BUGFIX] Use issuer name and serial number to cache certs (SKID - values are not unique). - - [BUGFIX] Always set the idle alarm in IETF connection so that it - can time out. - - Use ls-qpack v0.10.6, as it silences some warnings. - -2019-10-21 - - 2.4.8 - - [OPTIMIZATION, BUGFIX] Use ls-qpack v0.10.5. - -2019-10-15 - - 2.4.7 - - Add echo client and server to the distibution. - - Add MD5 client and server to the distibution. - - Fix http_client: check command-line arguments better, prevent crash. - - Fix IETF conn: can_write_ack() should only care about APP PNS. - - Client: delay stream creation until handshake succeds. - - Reset HTTP stream whose write end is closed prematurely. - - Fix tickable(): mirror behavior of tick() wrt buffered packets. - - Log reason why engine is tickable. - -2019-10-11 - - 2.4.6 - - Minor code cleanup and logging improvements. - - Server and client programs: include library version (e.g. 2.4.6) - into `server' and `user-agent' headers. - -2019-10-08 - - 2.4.5 - - [OPTIMIZATION]: flush encoder stream only when necessary. - - [BUGFIX] Use ls-qpack v0.10.2 for new API -- and for a bug fix. - - [BUGFIX] Typo in IETF conn SETTINGS writer. - - Use latest BoringSSL. - -2019-10-08 - - 2.4.4 - - [API] Add lsquic_alpn2ver() to aid parsing Alt-Svc header. - - [BUGFIX] NULL dereference when H3 frame header would be split. - - [BUGFIX] Do not close fixed-size H3 frame prematurely. - - [BUGFIX] Allow PING frames in IETF mini conn. - - [BUGFIX] Mini conns: don't send any packets after receiving - CONNECTION_CLOSE. - - [BUGFIX] Client migration: reserve slot for DCID from transport params. - - [BUGFIX] Allow max_early_data_size=0 -- early_data might not be there. - - [BUGFIX] Use an invalid stream number to reset BPT cache (zero is now a - valid stream number). - - [SPEC] Use FINAL_SIZE_ERROR when FIN mismatch is detected. - - [OPTIMIZATION] Closed connection only gets one chance to send packets. - - [OPTIMIZATION] Flush headers stream before packetizing stream data. - - [OPTIMIZATION] process QPACK encoder STREAM frames immediately. - - Update ls-qpack to v0.10.1. - -2019-09-30 - - 2.4.3 - - Add GQUIC versions to the list of h3 ALPNs for Alt-Svc header. - For example, h3-Q043. Chrome will switch to using this format at - some point in the future. - - [BUGFIX] Send correct value in max_streams_uni transport param - - [SPEC] Abort IETF QUIC connection if max_early_data_size is not set - to 0xFFFFFFFF - -2019-09-23 - - 2.4.2 - - [BUGFIX] H3 framing: fix zero-byte write when space is available - - [BUGFIX] Don't send STREAM frame when incoming unidirectgional stream - is closed - - [BUGFIX] Cancel all pending writes by stream reset by a GOAWAY - - [BUGFIX] Fix use-after-free in IETF full conn - - [OPTIMIZATION] Wait for session tickets for two seconds and then drop - SSL object and crypto streams. - -2019-09-18 - - 2.4.0 - - [FEATURE] QUIC and HTTP/3 Internet Draft 23 support - -2019-09-13 - - 2.3.1 - - [BUGFIX] Fix memory leaks - - [BUGFIX] Fix unit tests - -2019-09-12 - - 2.3.0 - - [FEATURE] BBR congestion control is on by default - - [BUGFIX] BBR app-limited logic - - [BUGFIX] Fix uninitialized warnings in IETF - - [BUGFIX] Update ls-qpack to v0.9.14 - - [CLEANUP] Code cleanup - -2019-09-11 - - 2.2.0 - - [FEATURE] Server code is included in the library - - [FEATURE] IETF QUIC and HTTP/3 Support (ID-22) - -2019-05-13 - - 1.21.2 - - [OPTIMIZATION] HPACK: use history to improve compression performance - -2019-05-06 - - 1.21.1 - - [BUGFIX] If FIN or RST not received, don't delay stream destruction. - - [OPTIMIZATION] Speed up HPACK encoder by using same hash value to - search static and dynamic tables. - -2019-04-12 - - 1.21.0 - - [FEATURE] Add qlog log module. - -2019-04-01 - - 1.20.0 - - [FEATURE] Add support for Q046. - -2019-03-19 - - 1.19.6 - - [BUGFIX] Ensure that Largest Observed does not decrease in ACKs we - send. ACK frames placed in packets in buffered queues (optimization - introduced in 1.17.15) can be preceded by an ACK frame generated later. - In this case, the older ACK frame should not be sent out, as Chromium- - based servers flags decrease in the ACK frame's Largest Observed value - as an error. - -2019-03-05 - - 1.19.5 - - [BUGFIX] Use correct public key from PUBS based on KEXS index. - - [BUGFIX] Check flags before dispatching writes, avoiding assert. - - [BUGFIX] Set :scheme to "https" (instead of "HTTP"). - -2019-02-25 - - 1.19.4 - - [BUGFIX] Check buffer bounds when looking up version in 0-RTT blob. - - [BUGFIX] http_client: don't fetch 0-rtt info if handshake failed. - - Log number of pacer calls at DEBUG, rather than NOTICE, level. - -2019-02-18 - - 1.19.3 - - [BUGFIX] Q044: don't encode packet number in 6 bytes. Six-byte - packet number encoding does not exist in Q044. This fixes a - regression introduced in '[BUGFIX] Buffered packets can contain - ACK frames' -- we need to keep QUIC version in mind when selecting - the longest possible packet number encoding used for the buffered - packet that carries the ACK. - - [BUGFIX] Do not increase CWND when timeout occurs. - - http_client: support setting handshake timeout on command line. - Use -o handshake_to=timeout. - - http_client: use -k to connect UDP socket to pick up ICMP errors. - - http_client: allow pathless mode, when only handshake is performed - without issuing any requests. This can be done by simply not - specifying a -p flag on the command line. - -2019-02-11 - - 1.19.2 - - [BUGFIX] Begin negotiation with version provided in 0-RTT info. - - [BUGFIX] Version checking in zero_rtt deserialize function. - -2019-02-04 - - 1.19.1 - - [BUGFIX] Fix Windows build. - -2019-02-04 - - 1.19.0 - - [FEATURE, API Change] 0-RTT support. Add function to export 0-RTT - information; it can be supplied to a subsequent connect() call. - - [FEATURE] Add -0 flag to http_client to exercise 0-RTT support. - - [BUGFIX] Resuscitate the Windows build. - - [BUGFIX] Send HTTP settings (max header list size) if necessary. - - [BUGFIX] Buffered packets can contain ACK frames. - - [BUGFIX] Make packet writeable once all STREAM frames are elided. - - [BUGFIX] Fix potential null dereference when realloc fails. - - cmake: simplify build configuration. - -2019-01-28 - - 1.18.0 - - [API Change] Can specify clock granularity in engine settings. - - [BUGFIX] Pacer uses fixed clock granularity. Since the change on - 2018-04-09, it is not necessary to try to approximate the next tick - time in the pacer: it can use fix clock granularity specified by - the user. - - [BUGFIX] Do not tick constantly before handshake is done. - - [BUGFIX] Do not exit tick prematurely: reuse packet with ACK. Even - if we cannot allocate *more* packets, we could still be able to write - to one already allocated. - - [BUGFIX] Do not schedule pacer if there are no lost packets. - -2019-01-17 - - 1.17.15 - - [BUGFIX] http_client: make sure only one read per on_read() callback - is performed in the header conversion bypass (-B) mode. - - http_client: with -E, assign random priority when stream is created. - - [OPTIMIZATION] On immediate write, place an ACK frame into the first - buffered packet if an ACK is queued. This reduces the number of - standalone ACK packets. - - [OPTIMIZATION] Allow placing more than one STREAM frame from the same - stream into an outgoing packet. This change minimizes the number of - buffered packets required to store several small HTTP messages by - virtue of allowing more than one STREAM frame from HEADERS stream in - the same packet. - - [OPTIMIZATION] Flush headers when writing to buffered packets. This - causes the headers to be written to the same buffered packet queue, - thereby improving packet utilization, especially for small HTTP - messages. - -2019-01-16 - - 1.17.14 - - [FEATURE] http_client can now collect stats: time to connect, TTFB, - time to download, requests per seconds, and bandwidth. See -t flag. - - [BUGFIX] http_client: -B, -K, and -r can be used at the same time. - - [BUGFIX] http_client: do not display cert chain before each request. - Now this is only done once per connection, if the handshake is - successful and -a option is given. - - [BUGFIX] Do not wait to dispatch on_close() after reading. If a - stream is scheduled to be closed after on_read() callback returns, - close it immediately instead of waiting until the end of the tick. - If client creates new request from on_close() event, they will be - processed in the same tick instead of waiting for the next one. - - [BUGFIX] HEADERS stream is critical: always treat it with highest - priority. - -2019-01-10 - - 1.17.12 - - [FEATURE] http_client can now issue parallel requests in the context - of a single connection. See -w option. - -2019-01-03 - - 1.17.11 - - Fix strict aliasing warning in optimized compilation. - -2018-12-27 - - 1.17.10 - - Fix the example program to be able to use parallel connections - again. (See the -n argument.) - -2018-12-18 - - 1.17.9 - - [BUGFIX] Engine: reduce minimum batch size from 256 to 4 - -2018-12-10 - - 1.17.8 - - [BUGFIX] Fix compilation on FreeBSD and 32-bit Linux - -2018-12-03 - - 1.17.7 - - [BUGFIX] Do not unset PING alarm before ringing expired alarms. - This prevented PING from ever being sent. - -2018-11-29 - - 1.17.6 - - Add failsafe: resume sending packets after some time - - The change puts a 1-second limit on the amount of time the engine - will not send packets after some packets are delayed. This makes - the library robust in case the user does not unblock the engine - explicitly using lsquic_engine_send_unsent_packets() call. - - - [BUGFIX] Handle corner cases in send controller when packets are - a) delayed or b) dropped during repackaging. - - [BUGFIX] Memory leak: destroy buffered packets during controller - cleanup. - -2018-11-16 - - 1.17.3 - - [BUGFIX] Do not send STOP_WAITING frames when using Q044 - -2018-10-19 - - 1.17.2 - - [BUGFIX] Memory leak in test_frame_rw unit test. - - [BUGFIX] Parsing packets with short IETF header: do not overwrite - flags. (Only a problem in unit tests -- benign otherwise.) - -2018-10-16 - - 1.17.0 - - [API Change] Packet out Memory Interface (PMI) update: - - Split PMI pool return into pmi_release and pmi_return - - PMI callbacks take peer_ctx and is_ipv6 arguments - - [BUGFIX] Fix use-after-free when certificate is updated - - Silence gcc warning in optimized mode by performing useless - initialization - - cmake: use the standard variable CMAKE_BUILD_TYPE instead of - DEVEL_MODE - -2018-10-03 - - 1.16.0 - - [API Change] Add lsquic_conn_n_avail_streams() - - [BUGFIX] only dispatch crypto stream read events if WANT_READ is on - -2018-09-27 - - 1.15.0 - - [API Change] Add LSCONN_ST_PEER_GOING_AWAY to the list of conn statuses - - [BUGFIX] free uncompressed headers correctly when error occurs - -2018-09-12 - - 1.14.3 - - [BUGFIX] Do not abort conn on STREAM frame for a reset stream - - [BUGFIX] Drop packets that would become empty due to repackaging. - Packets on the scheduled queue may be marked for repackaging. - Frames such as ACK frame that are never resent are removed from - repackaged packets. We must check that the newly repackaged packet - would not be empty. If it would be, it is destroyed instead and - the next packet on the scheduled queue is used. Note that this - change only affects the logic to return the next packet to be sent. - Lost packets that are being rescheduled are already processed in - this fashion. - - Byteswap CID before logging it - this makes it match Chrome CIDs. - (Except Q035, which is the last little-endian GQUIC version we - support.) - -2018-09-06 - - 1.14.0 - - [API Change] Disable packet sending if full batch cannot be sent - If lsquic_packets_out_f() cannot send the whole batch, disable - packet sending until lsquic_engine_send_unsent_packets() is called. - - [BUGFIX] Handle case when STREAM frame does not fit. - - [BUGFIX] Always allow incoming STREAM frames to overlap. Peers - may send overlapping STREAM frames even if using versions older - than Q043. - - Custom header set fixes: - - set "FIN reached" flag when custom header with FIN flag is - claimed; - - do not return custom header set for a reset stream. - -2018-08-27 - - - 1.13.0 - - [FEATURE, API Change] Add ability to create custom header set - objects via callbacks. This avoids reading and re-parsing - headers from the stream. - -2018-08-27 - - - 1.12.4 - - Fix memory leak when engine is destroyed - - Fix memory leak in http_client - - Fix gcc warning in unit tests - -2018-08-22 - - - 1.12.3 - - [BUGFIX] Fix duplicate STREAM frame detection - -2018-08-20 - - - 1.12.2 - - [BUGFIX] Update count of scheduled bytes when adjusting size of - an already-scheduled packet. - - Emit info instead of warning messages when stream is used in - unexpected ways. - -2018-08-17 - - - 1.12.0 - - [FEATURE, API Change] Add support for certificate verification - -2018-08-16 - - - 1.11.1 - - [BUGFIX] Fix STOP_WAITING frame processing in the new Q044 code - -2018-08-15 - - - 1.11.0 - - [FEATURE] Add support for Q044. - -2018-08-09 - - - 1.10.2 - - [BUGFIX] Don't go over limit when creating delayed streams - -2018-07-10 - - - 1.10.1 - - [BUGFIX] process connections after each batch of packets is read - This avoids a problem of accumulating a very large list of packets - (possible when speeds are high and socket's receive buffer is large) - and processing it all at once. - - If glibc is older than 2.17, link with rt. This is necessary for - clock_getres(2). - - Add version macros to lsquic.h; remove unnecessary includes. - -2018-06-13 - - - [BUGFIX] allow multiple parallel connections by default - - Use the original method of tracking connections by CIDs by default. - If zero-sized CID support is turned on, connections are tracked by - the address. A new connection is not created if another connection - is using the same network address - -2018-05-30 - - - [FEATURE, API CHANGE] Support zero-sized CIDs in received packets - -2018-05-24 - - - Close connection properly when packet encryption fails - -2018-05-23 - - - [BUGFIX] Do not produce packet sequence gaps due to delayed packets - -2018-05-21 - - - [API Change] Add optional callback to call when handshake is done - - [API Change, BUGFIX] After send failure, wait until transport available - -2018-05-18 - - - [API] Expose useful lsquic_ver2str[] in lsquic.h - - [BUGFIX] Do not produce packet sequence gaps due to STREAM frame elision - - Improve checks of number of incoming streams limit and associated - error reporting. - - [BUGFIX] Command-line option `-6` now works correctly. - -2018-05-16 - - - [FEATURE] DNS resolution - - [BUGFIX] Frame insertion mis-ID as overlap instead of dup - - http_client: fix priority range generated by -E flag - -2018-05-09 - - - [FEATURE] Add support for Q043. - - Support for versions Q037, Q038, Q041, and Q042 has been removed. - - Fix typo in debug message. - - Fix code indentation. - - Add /* fallthru */ comment to stop newer gcc from complaining. - - Logger: fix compilation of optimized Windows build. - -2018-05-04 - - - [FEATURE] Add support for Q042. - - Remove comment: MSPC is obsolete (no code changes) - - Prog: use lsquic_str2ver() when processing -o version flag - - Remove unused CTIM and SRBF transport parameters - - Disable QUIC versions Q037 and Q038 by default - - Fix Windows compilation by including compat header file in - lshpack.c - - Address warnings produced by newer versions of gcc - - Future-proof: turn off -Werror - -2018-05-02 - - - [BUGFIX] Make lsquic_conn_quic_version() available - - Switch to using ls-hpack 1.1 - - [BUGFIX] Do not ignore stream resets after receiving FIN - -2018-04-27 - - - HPACK: do not allow header block to end with table size update. - -2018-04-25 - - - [BUGFIX] Do not create gap in sent packnos when squeezing delayed - packets. - - [BUGFIX] sendctl checks for all unacked bytes, not just retx bytes. - - [BUGFIX] connections with blocked scheduled packets are not tickable - for sending. - - [BUGFIX] Conn is tickable if it wants to send a connection-level - frame. - -2018-04-23 - - - Fix busy loop: tickable must make progress. When connection is - self-reporting as tickable, it must make progress when ticked. There - are two issues: - 1. If there are buffered packets, the connection is only tickable if - they can be sent out. - 2. A connection is tickable if there are streams on the servicing - queue. When the tick occurs, we must service the stream - independent of whether any packets are sent. - - Fix assertion in pacer which can be incorrect under some - conditions. - - cmake: do not turn on address sanitizer if in Travis. - -2018-04-20 - - - [BUGFIX] Fix bug in lsquic_engine_connect() exposed by yesterday's - changes. - -2018-04-19 - - - [BUGFIX] Add connection to Tickable Queue on stream write - - cmake: use MSVC variable instead of trying to detect - - engine: improve connection incref/decref logging - - stream: don't ignore errors that may occur on triggered flush - - connection: remove obsolete method - - engine: indicate connection as tickable if previous call went - over threshold - -2018-04-09 - - [API Change, OPTIMIZATION] Only process conns that need to be processed - - The API is simplified: do not expose the user code to several - queues. A "connection queue" is now an internal concept. - The user processes connections using the single function - lsquic_engine_process_conns(). When this function is called, - only those connections are processed that need to be processed. - A connection needs to be processed when: - - 1. New incoming packets have been fed to the connection. - 2. User wants to read from a stream that is readable. - 3. User wants to write to a stream that is writeable. - 4. There are buffered packets that can be sent out. (This - means that the user wrote to a stream outside of the - lsquic library callback.) - 5. A control frame (such as BLOCKED) needs to be sent out. - 6. A stream needs to be serviced or delayed stream needs to - be created. - 7. An alarm rings. - 8. Pacer timer expires. - - To achieve this, the library places the connections into two - priority queues (min heaps): - - 1. Tickable Queue; and - 2. Advisory Tick Time queue (ATTQ). - - Each time lsquic_engine_process_conns() is called, the Tickable - Queue is emptied. After the connections have been ticked, they are - queried again: if a connection is not being closed, it is placed - either in the Tickable Queue if it is ready to be ticked again or - it is placed in the Advisory Tick Time Queue. It is assumed that - a connection always has at least one timer set (the idle alarm). - - The connections in the Tickable Queue are arranged in the least - recently ticked order. This lets connections that have been quiet - longer to get their packets scheduled first. - - This change means that the library no longer needs to be ticked - periodically. The user code can query the library when is the - next tick event and schedule it exactly. When connections are - processed, only the tickable connections are processed, not *all* - the connections. When there are no tick events, it means that no - timer event is necessary -- only the file descriptor READ event - is active. - - The following are improvements and simplifications that have - been triggered: - - - Queue of connections with incoming packets is gone. - - "Pending Read/Write Events" Queue is gone (along with its - history and progress checks). This queue has become the - Tickable Queue. - - The connection hash no longer needs to track the connection - insertion order. - -2018-04-02 - - - [FEATURE] Windows support - - - Reduce stack use -- outgoing packet batch is now allocated on the heap. - -2018-03-09 - - - [OPTIMIZATION] Merge series of ACKs if possible - - Parsed single-range ACK frames (that is the majority of frames) are - saved in the connection and their processing is deferred until the - connection is ticked. If several ACKs come in a series between - adjacent ticks, we check whether the latest ACK is a strict superset - of the saved ACK. If it is, the older ACK is not processed. - - If ACK frames can be merged, they are merged and only one of them is - either processed or saved. - - - [OPTIMIZATION] Speed up ACK verification by simplifying send history. - - Never generate a gap in the sent packet number sequence. This reduces - the send history to a single number instead of potentially a series of - packet ranges and thereby speeds up ACK verification. - - By default, detecting a gap in the send history is not fatal: only a - single warning is generated per connection. The connection can continue - to operate even if the ACK verification code is not able to detect some - inconsistencies. - - - [OPTIMIZATION] Rearrange the lsquic_send_ctl struct - - The first part of struct lsquic_send_ctl now consists of members that - are used in lsquic_send_ctl_got_ack() (in the absense of packet loss, - which is the normal case). To speed up reads and writes, we no longer - try to save space by using 8- and 16-bit integers. Use regular integer - width for everything. - - - [OPTIMIZATION] Cache size of sent packet. - - - [OPTIMIZATION] Keep track of the largest ACKed in packet_out - - Instead of parsing our own ACK frames when packet has been acked, - use the value saved in the packet_out structure when the ACK frame - was generated. - - - [OPTIMIZATION] Take RTT sampling conditional out of ACK loop - - - [OPTIMIZATION] ACK processing: only call clock_gettime() if needed - - - [OPTIMIZATION] Several code-level optimizations to ACK processing. - - - Fix: http_client: fix -I flag; switch assert() to abort() - -2018-02-26 - - [API Change] lsquic_engine_connect() returns pointer to the connection - object. - - [API Change] Add lsquic_conn_get_engine() to get engine object from - connection object. - - [API Change] Add lsquic_conn_status() to query connection status. - - [API Change] Add add lsquic_conn_set_ctx(). - - [API Change] Add new timestamp format, e.g. 2017-03-21 13:43:46.671345 - - [OPTIMIZATION] Process handshake STREAM frames as soon as packet - arrives. - - [OPTIMIZATION] Do not compile expensive send controller sanity check - by default. - - [OPTIMIZATION] Add fast path to gquic_be_gen_reg_pkt_header. - - [OPTIMIZATION] Only make squeeze function call if necessary. - - [OPTIMIZATION] Speed up Q039 ACK frame parsing. - - [OPTIMIZATION] Fit most used elements of packet_out into first 64 bytes. - - [OPTIMIZATION] Keep track of scheduled bytes instead of calculating. - - [OPTIMIZATION] Prefetch next unacked packet when processing ACK. - - [OPTIMIZATION] Leverage fact that ACK ranges and unacked list are. - ordered. - - [OPTIMIZATION] Reduce function pointer use for STREAM frame generation - - Fix: reset incoming streams that arrive after we send GOAWAY. - - Fix: delay client on_new_conn() call until connection is fully set up. - - Fixes to buffered packets logic: splitting, STREAM frame elision. - - Fix: do not dispatch on_write callback if no packets are available. - - Fix WINDOW_UPDATE send and resend logic. - - Fix STREAM frame extension code. - - Fix: Drop unflushed data when stream is reset. - - Switch to tracking CWND using bytes rather than packets. - - Fix TCP friendly adjustment in cubic. - - Fix: do not generate invalid STOP_WAITING frames during high packet - loss. - - Pacer fixes. - -2017-12-18 - - - Fix: better follow cubic curve after idle period - - Fix: add missing parts to outgoing packet splitting code - - Fix: compilation using gcc 4.8.4 - -2017-10-31 - - - Add APIs.txt -- describes LSQUIC APIs - -2017-10-31 - - - [API Change] Sendfile-like functionality is gone. The stream no - longer opens files and deals with file descriptors. (Among other - things, this makes the code more portable.) Three writing functions - are provided: - - lsquic_stream_write - lsquic_stream_writev - lsquic_stream_writef (NEW) - - lsquic_stream_writef() is given an abstract reader that has function - pointers for size() and read() functions which the user can implement. - This is the most flexible way. lsquic_stream_write() and - lsquic_stream_writev() are now both implemented as wrappers around - lsquic_stream_writef(). - - - [OPTIMIZATION] When writing to stream, be it within or without the - on_write() callback, place data directly into packet buffer, - bypassing auxiliary data structures. This reduces amount of memory - required, for the amount of data that can be written is limited - by the congestion window. - - To support writes outside the on_write() callback, we keep N - outgoing packet buffers per connection which can be written to - by any stream. One half of these are reserved for the highest - priority stream(s), the other half for all other streams. This way, - low-priority streams cannot write instead of high-priority streams - and, on the other hand, low-priority streams get a chance to send - their packets out. - - The algorithm is as follows: - - - When user writes to stream outside of the callback: - - If this is the highest priority stream, place it onto the - reserved N/2 queue or fail. - (The actual size of this queue is dynamic -- MAX(N/2, CWND) -- - rather than N/2, allowing high-priority streams to write as - much as can be sent.) - - If the stream is not the highest priority, try to place the - data onto the reserved N/2 queue or fail. - - When tick occurs *and* more packets can be scheduled: - - Transfer packets from the high N/2 queue to the scheduled - queue. - - If more scheduling is allowed: - - Call on_write callbacks for highest-priority streams, - placing resulting packets directly onto the scheduled queue. - - If more scheduling is allowed: - - Transfer packets from the low N/2 queue to the scheduled - queue. - - If more scheduling is allowed: - - Call on_write callbacks for non-highest-priority streams, - placing resulting packets directly onto the scheduled queue - - The number N is currently 20, but it could be varied based on - resource usage. - - - If stream is created due to incoming headers, make headers readable - from on_new. - - - Outgoing packets are no longer marked non-writeable to prevent placing - more than one STREAM frame from the same stream into a single packet. - This property is maintained via code flow and an explicit check. - Packets for stream data are allocated using a special function. - - - STREAM frame elision is cheaper, as we only perform it if a reset - stream has outgoing packets referencing it. - - - lsquic_packet_out_t is smaller, as stream_rec elements are now - inside a union. - -2017-10-12 - - - Do not send RST_STREAM when stream is closed for reading - - Raise maximum header size from 4K to 64K - - Check header name and value lengths against maximum imposed by HPACK - - Fix NULL dereference in stream flow controller - -2017-10-09 - - - Hide handshake implementation behind a set of function pointers - - Use monotonically increasing clock - - Make sure that retx delay is not larger than the max of 60 seconds - -2017-09-29 - - - A few fixes to code and README - -2017-09-28 - - - Add support for Q041; drop support for Q040 - -2017-09-27 - - - Fix CMakeLists.txt: BoringSSL include and lib was mixed up - -2017-09-26 - - - Add support for Mac OS - - Add support for Raspberry Pi - - Fix BoringSSL compilation: include explicitly - -2017-09-22 - - - Initial release diff --git a/external/lsquic/CMakeLists.txt b/external/lsquic/CMakeLists.txt deleted file mode 100644 index 932668e..0000000 --- a/external/lsquic/CMakeLists.txt +++ /dev/null @@ -1,355 +0,0 @@ -# Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. -cmake_minimum_required(VERSION 3.0...3.23) - - -PROJECT(lsquic C CXX) - -SET(LIBS "-lstdc++") - -OPTION(LSQUIC_FIU "Use Fault Injection in Userspace (FIU)" OFF) -OPTION(LSQUIC_BIN "Compile example binaries that use the library" ON) -OPTION(LSQUIC_TESTS "Compile library unit tests" ON) -OPTION(LSQUIC_SHARED_LIB "Compile as shared librarry" OFF) -OPTION(LSQUIC_DEVEL "Compile in development mode" OFF) -OPTION(LSQUIC_WEBTRANSPORT "Enable WebTransport support" OFF) - -INCLUDE(GNUInstallDirs) - -MESSAGE(STATUS "CMake v${CMAKE_VERSION}") - -IF (CMAKE_SYSTEM_NAME STREQUAL "Linux") - # If using older glibc, need to link with -lrt. See clock_getres(2). - include(CheckSymbolExists) - check_symbol_exists(clock_getres "time.h" HAS_clock_getres_WITHOUT_LIBRT) - - if(NOT HAS_clock_getres_WITHOUT_LIBRT) - find_library(RT_LIBRARY rt) - set(NEED_LIBRT_FOR_clock_getres ON) - endif() -ELSEIF (CMAKE_SYSTEM_NAME STREQUAL "Android") - # for android-ndk >= r19b - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY "BOTH") - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE "BOTH") - set(CMAKE_FIND_ROOT_PATH_MODE_PATH "BOTH") -ENDIF() - -IF("${CMAKE_BUILD_TYPE}" STREQUAL "") - SET(CMAKE_BUILD_TYPE Debug) -ENDIF() - -MESSAGE(STATUS "Build type: ${CMAKE_BUILD_TYPE}") - -IF (NOT "$ENV{EXTRA_CFLAGS}" MATCHES "-DLSQUIC_DEBUG_NEXT_ADV_TICK") - SET(MY_CMAKE_FLAGS "-DLSQUIC_DEBUG_NEXT_ADV_TICK=1") -ENDIF() - -IF (NOT "$ENV{EXTRA_CFLAGS}" MATCHES "-DLSQUIC_CONN_STATS=") - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLSQUIC_CONN_STATS=1") -ENDIF() - -IF (NOT MSVC) - -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -Wall -Wextra -Wno-unused-parameter") -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -fno-omit-frame-pointer") - -IF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9.3) - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -Wno-missing-field-initializers") -ENDIF() - -IF(LSQUIC_FIU) - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DFIU_ENABLE=1") - SET(LIBS ${LIBS} fiu) -ENDIF() - -IF(CMAKE_BUILD_TYPE STREQUAL "Debug") - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -O0 -g3") - IF(CMAKE_C_COMPILER MATCHES "clang" AND - NOT "$ENV{TRAVIS}" MATCHES "^true$" AND - NOT "$ENV{EXTRA_CFLAGS}" MATCHES "-fsanitize") - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -fsanitize=address") - SET(LIBS ${LIBS} -fsanitize=address) - ENDIF() - # Uncomment to enable cleartext protocol mode (no crypto): - #SET (MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLSQUIC_ENABLE_HANDSHAKE_DISABLE=1") -ELSE() - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -O3 -g0") - # Comment out the following line to compile out debug messages: - #SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLSQUIC_LOWEST_LOG_LEVEL=LSQ_LOG_INFO") -ENDIF() - -IF (LSQUIC_DEVEL) - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLSQUIC_DEVEL=1") -ENDIF() - -IF (LSQUIC_WEBTRANSPORT) - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -LSQUIC_WEBTRANSPORT_SERVER_SUPPORT=1") -ENDIF() - -IF(LSQUIC_PROFILE EQUAL 1) - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -g -pg") -ENDIF() - -IF(LSQUIC_COVERAGE EQUAL 1) - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -fprofile-arcs -ftest-coverage") -ENDIF() - -IF(MY_CMAKE_FLAGS MATCHES "fsanitize=address") - MESSAGE(STATUS "AddressSanitizer is ON") -ELSE() - MESSAGE(STATUS "AddressSanitizer is OFF") -ENDIF() - -#MSVC -ELSE() -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4100") # unreferenced formal parameter -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4115") # unnamed type definition in parentheses -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4116") # named type definition in parentheses -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4146") # unary minus operator applied to unsigned type, result still unsigned -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4132") # const initialization -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4200") # zero-sized array -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4204") # non-constant aggregate initializer -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4244") # integer conversion -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4245") # conversion from 'int' to 'unsigned int', signed/unsigned mismatch -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4267") # integer conversion -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4214") # nonstandard extension used: bit field types other than int -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4295") # array is too small to include a terminating null character -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4324") # structure was padded due to alignment specifier -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4334") # result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?) -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4456") # hide previous local declaration -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4459") # hide global declaration -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4706") # assignment within conditional expression -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4090") # different 'const' qualifier (TODO: debug ls-sfparser.c) -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} /wd4305") # truncation from double to float -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -W4 -WX -Zi -DWIN32_LEAN_AND_MEAN -DNOMINMAX -D_CRT_SECURE_NO_WARNINGS -I${CMAKE_CURRENT_SOURCE_DIR}/wincompat") -IF(LSQUIC_SHARED_LIB) - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLSQUIC_SHARED_LIB") -ENDIF() -IF(CMAKE_BUILD_TYPE STREQUAL "Debug") - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -Od") - #SET (MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DFIU_ENABLE=1") - #SET(LIBS ${LIBS} fiu) -ELSE() - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -Ox") - # Comment out the following line to compile out debug messages: - #SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLSQUIC_LOWEST_LOG_LEVEL=LSQ_LOG_INFO") -ENDIF() - -ENDIF() #MSVC - -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MY_CMAKE_FLAGS} $ENV{EXTRA_CFLAGS}") - -MESSAGE(STATUS "Compiler flags: ${CMAKE_C_FLAGS}") - -find_package(Perl) -IF(NOT PERL_FOUND) - MESSAGE(FATAL_ERROR "Perl not found -- need it to generate source code") -ENDIF() - -IF (MSVC) - IF(LSQUIC_SHARED_LIB) - set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS YES CACHE BOOL "Export all symbols") - SET(LIB_SUFFIX .dll) - ELSE() - SET(LIB_SUFFIX .lib) - ENDIF() -ELSE() - IF(LSQUIC_SHARED_LIB) - SET(LIB_SUFFIX .so) - ELSE() - SET(LIB_SUFFIX .a) - ENDIF() -ENDIF() - -IF (NOT DEFINED BORINGSSL_INCLUDE AND DEFINED BORINGSSL_DIR) - FIND_PATH(BORINGSSL_INCLUDE NAMES openssl/ssl.h - PATHS ${BORINGSSL_DIR}/include - NO_DEFAULT_PATH) -ENDIF() -# This must be done before adding other include directories to take -# precedence over header files from other SSL installs. - -IF (BORINGSSL_INCLUDE) - MESSAGE(STATUS "BoringSSL include directory ${BORINGSSL_INCLUDE}") - INCLUDE_DIRECTORIES(${BORINGSSL_INCLUDE}) -ELSE() - MESSAGE(FATAL_ERROR "BoringSSL headers not found") -ENDIF() - -IF (NOT DEFINED BORINGSSL_LIB AND DEFINED BORINGSSL_DIR) - FOREACH(LIB_NAME ssl crypto) - IF (CMAKE_SYSTEM_NAME STREQUAL Windows) - FIND_LIBRARY(BORINGSSL_LIB_${LIB_NAME} - NAMES ${LIB_NAME} - PATHS ${BORINGSSL_DIR}/${LIB_NAME} - PATH_SUFFIXES Debug Release MinSizeRel RelWithDebInfo - NO_DEFAULT_PATH) - ELSE() - FIND_LIBRARY(BORINGSSL_LIB_${LIB_NAME} - NAMES lib${LIB_NAME}${LIB_SUFFIX} - PATHS ${BORINGSSL_DIR}/${LIB_NAME} - NO_DEFAULT_PATH) - ENDIF() - IF(BORINGSSL_LIB_${LIB_NAME}) - MESSAGE(STATUS "Found ${LIB_NAME} library: ${BORINGSSL_LIB_${LIB_NAME}}") - ELSE() - MESSAGE(STATUS "${LIB_NAME} library not found") - ENDIF() - ENDFOREACH() - -ELSE() - - - FOREACH(LIB_NAME ssl crypto) - # If BORINGSSL_LIB is defined, try find each lib. Otherwise, user should define BORINGSSL_LIB_ssl, - # BORINGSSL_LIB_crypto and so on explicitly. For example, including boringssl and lsquic both via - # add_subdirectory: - # add_subdirectory(third_party/boringssl) - # set(BORINGSSL_LIB_ssl ssl) - # set(BORINGSSL_LIB_crypto crypto) - # add_subdirectory(third_party/lsquic) - IF (DEFINED BORINGSSL_LIB) - IF (CMAKE_SYSTEM_NAME STREQUAL Windows) - FIND_LIBRARY(BORINGSSL_LIB_${LIB_NAME} - NAMES ${LIB_NAME} - PATHS ${BORINGSSL_LIB} - PATH_SUFFIXES Debug Release MinSizeRel RelWithDebInfo - NO_DEFAULT_PATH) - ELSE() - FIND_LIBRARY(BORINGSSL_LIB_${LIB_NAME} - NAMES lib${LIB_NAME}${LIB_SUFFIX} - PATHS ${BORINGSSL_LIB} - PATH_SUFFIXES ${LIB_NAME} - NO_DEFAULT_PATH) - ENDIF() - ENDIF() - IF(BORINGSSL_LIB_${LIB_NAME}) - MESSAGE(STATUS "Found ${LIB_NAME} library: ${BORINGSSL_LIB_${LIB_NAME}}") - ELSE() - MESSAGE(FATAL_ERROR "BORINGSSL_LIB_${LIB_NAME} library not found") - ENDIF() - ENDFOREACH() - -ENDIF() - -SET(CMAKE_INCLUDE_CURRENT_DIR ON) -INCLUDE_DIRECTORIES(include) -IF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "Darwin") - # Find libevent on FreeBSD: - include_directories( /usr/local/include ) - link_directories( /usr/local/lib ) -ENDIF() - -IF (CMAKE_SYSTEM_NAME STREQUAL Windows AND LSQUIC_TESTS AND LSQUIC_BIN) - FIND_PATH(GETOPT_INCLUDE_DIR NAMES getopt.h) - IF (GETOPT_INCLUDE_DIR) - INCLUDE_DIRECTORIES(${GETOPT_INCLUDE_DIR}) - ELSE() - MESSAGE(FATAL_ERROR "getopt.h was not found") - ENDIF() - FIND_LIBRARY(GETOPT_LIB getopt) - IF(GETOPT_LIB) - MESSAGE(STATUS "Found getopt: ${GETOPT_LIB}") - ELSE() - MESSAGE(STATUS "getopt not found") - ENDIF() -ENDIF() - -# Find zlib and libevent header files and library files -# TODO: libevent is not strictly necessary to build the library. -FIND_PATH(ZLIB_INCLUDE_DIR NAMES zlib.h) -IF (ZLIB_INCLUDE_DIR) - INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR}) -ELSE() - MESSAGE(FATAL_ERROR "zlib.h was not found") -ENDIF() -IF (CMAKE_SYSTEM_NAME STREQUAL Windows) - FIND_LIBRARY(ZLIB_LIB zlib) -ELSEIF(CMAKE_SYSTEM_NAME STREQUAL Darwin) - # XXX somehow FIND_LIBRARY() does not find zlib on Travis? - SET(ZLIB_LIB z) -ELSE() - FIND_LIBRARY(ZLIB_LIB libz${LIB_SUFFIX}) -ENDIF() -IF(ZLIB_LIB) - MESSAGE(STATUS "Found zlib: ${ZLIB_LIB}") -ELSE() - MESSAGE(STATUS "zlib not found") -ENDIF() - -SET(LIBS lsquic ${BORINGSSL_LIB_ssl} ${BORINGSSL_LIB_crypto} ${ZLIB_LIB} ${LIBS}) - -IF (LSQUIC_BIN) - FIND_PATH(EVENT_INCLUDE_DIR NAMES event2/event.h - PATHS ${PROJECT_SOURCE_DIR}/../third-party/include) - IF (EVENT_INCLUDE_DIR) - INCLUDE_DIRECTORIES(${EVENT_INCLUDE_DIR}) - ELSE() - MESSAGE(WARNING "event2/event.h was not found: binaries won't be built") - SET(LSQUIC_BIN OFF) - ENDIF() -ENDIF() - -IF (LSQUIC_BIN) - IF (CMAKE_SYSTEM_NAME STREQUAL Windows) - FIND_LIBRARY(EVENT_LIB event) - ELSE() - FIND_LIBRARY(EVENT_LIB libevent${LIB_SUFFIX} - PATHS ${PROJECT_SOURCE_DIR}/../third-party/lib) - IF(NOT EVENT_LIB) - FIND_LIBRARY(EVENT_LIB libevent.so) - ENDIF() - ENDIF() - IF(EVENT_LIB) - MESSAGE(STATUS "Found event: ${EVENT_LIB}") - ELSE() - MESSAGE(WARNING "libevent not found: binaries won't be built") - SET(LSQUIC_BIN OFF) - ENDIF() -ENDIF() - - -IF (NOT MSVC) - LIST(APPEND LIBS pthread m) -ELSE() - LIST(APPEND LIBS ws2_32) -ENDIF() - -IF (LSQUIC_BIN) - ADD_SUBDIRECTORY(bin) -ENDIF() - -add_subdirectory(src) - -IF(LSQUIC_TESTS AND CMAKE_BUILD_TYPE STREQUAL "Debug") - # Our test framework relies on assertions, only compile if assertions are - # enabled. - # - enable_testing() - add_subdirectory(tests) -ENDIF() - - -FIND_PROGRAM(SPHINX NAMES sphinx-build) -IF(SPHINX) - ADD_CUSTOM_TARGET(docs - ${SPHINX} -b html - docs - docs/_build - ) -ELSE() - MESSAGE(STATUS "sphinx-build not found: docs won't be made") -ENDIF() - -INSTALL(FILES - include/lsquic.h - include/lsquic_types.h - include/lsxpack_header.h - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lsquic -) - -if(WIN32) - install(FILES - wincompat/vc_compat.h - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lsquic - ) -endif() diff --git a/external/lsquic/CONTRIBUTORS.txt b/external/lsquic/CONTRIBUTORS.txt deleted file mode 100644 index 9303376..0000000 --- a/external/lsquic/CONTRIBUTORS.txt +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. -In addition to the LiteSpeed QUIC Team, the following people contributed -to the LiteSpeed QUIC and HTTP/3 Library: - - - Brian Prodoehl -- Docker file - - Amol Desphande -- Windows support - - Alexis La Goutte -- Travis-CI integration - - Bernhard Jaeger -- DNS Resolution - - Zhang Chi -- libevent build fix on Darwin - - Omar Roth -- Alpine Linux build and Crystal language bindings - - initlife (?) -- XCode build - - Rahul Jadhav -- Android support - - Victor Stewart -- Generate SCIDs API (connection ID steering) - - Aaron France -- Shared library support and Lisp bindings - - Suma Subbarao -- Use callback to supply client's SSL_CTX - - Paul Sheer -- Callback on arrival of CONNECTION_CLOSE frame - - Weiwei Wang -- Some fixes on Windows - -Thank you! - -We welcome contributions in any form -- patches, issues, pull requests. diff --git a/external/lsquic/Dockerfile b/external/lsquic/Dockerfile deleted file mode 100644 index bad7796..0000000 --- a/external/lsquic/Dockerfile +++ /dev/null @@ -1,38 +0,0 @@ -FROM ubuntu:20.04 as build-lsquic - -ENV DEBIAN_FRONTEND noninteractive - -RUN apt-get update && \ - apt-get install -y apt-utils build-essential git cmake software-properties-common \ - zlib1g-dev libevent-dev - -RUN add-apt-repository ppa:longsleep/golang-backports && \ - apt-get update && \ - apt-get install -y golang-1.21-go && \ - cp /usr/lib/go-1.21/bin/go* /usr/bin/. - -ENV GOROOT /usr/lib/go-1.21 - -RUN mkdir /src -WORKDIR /src - -RUN mkdir /src/lsquic -COPY ./ /src/lsquic/ - -RUN git clone --depth=1 https://github.com/google/boringssl.git && \ - cd boringssl && \ - cmake . && \ - make - -ENV EXTRA_CFLAGS -DLSQUIC_QIR=1 -RUN cd /src/lsquic && \ - cmake -DBORINGSSL_DIR=/src/boringssl -D BORINGSSL_LIB_crypto=/src/boringssl/build/crypto/libcrypto.a -DBORINGSSL_LIB_SSL=/src/boringssl/build/ssl/libssl.a . && \ - make - -RUN cd lsquic && cp bin/http_client /usr/bin/ && cp bin/http_server /usr/bin - -FROM martenseemann/quic-network-simulator-endpoint:latest as lsquic-qir -COPY --from=build-lsquic /usr/bin/http_client /usr/bin/http_server /usr/bin/ -COPY qir/run_endpoint.sh . -RUN chmod +x run_endpoint.sh -ENTRYPOINT [ "./run_endpoint.sh" ] diff --git a/external/lsquic/EXAMPLES.txt b/external/lsquic/EXAMPLES.txt deleted file mode 100644 index be5ca40..0000000 --- a/external/lsquic/EXAMPLES.txt +++ /dev/null @@ -1,297 +0,0 @@ -# Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. -LSQUIC Examples -=============== - -LSQUIC comes with several examples of how the library is used. - -The client and server programs described below are built on a common -framework and share many options. - -Echo client and server ----------------------- - -Echo client and server (see bin/echo_{client,server}.c) are for simple -line-based request and reply communication. Only one stream per connection -is supported for simplicity. The client reads input from stdin. - -MD5 client and server ---------------------- - -See bin/md5_{client,server}.c - -MD5 server accepts connections, computes MD5 sum of streams' (one or more) -payload, and sends back the checksum. MD5 client sends one or more file -contents to the server. Both client and server support various options to -exercise different aspects of LSQUIC. - -HTTP client and server ----------------------- - -See bin/http_{client,server}.c - -This pair of programs is to demonstrate how to use HTTP features of QUIC. -HTTP server is interoperable with proto-quic's quic_client. - -Duck client and server ----------------------- - -See bin/duck_{client,server}.c - -This pair of programs implement the siduck-00 protocol. They provide an -illustration of using the datagram API. - -Usage Examples --------------- - -Fetch Google's home page: - - ./bin/http_client -s www.google.com -p / - -The default port number is 443, but it can be specified after colon -using the -s flag. The value of the `host' header as well as the SNI -value defaults to the host part of the -s option. -H option can be -used to override it. For example: - - ./bin/http_client -H www.youtube.com -s www.google.com:443 -p / -M HEAD - -The host part can be an IP address. Both IPv4 and IPv6 are supported. -See ./bin/http_client -h for a (long) list of different flags. - -POST a file to calculate its CRC32 checksum: - - ./bin/http_client -H www.litespeedtech.com -s 443 \ - -p /cgi-bin/crc32.cgi -P file-256M -M POST - - HTTP/1.1 200 OK - content-type: text/plain - date: Fri, 09 Jun 2017 08:40:45 GMT - server: LiteSpeed - alt-svc: quic=":443"; v="35,37" - - CRC32: 2A0E7DBB - -This is a good way to check that the payload gets to the other side -correctly. The CGI script is: - - #!/usr/bin/perl - use String::CRC32; - printf "Content-type: text/plain\r\n\r\nCRC32: %X\n", crc32(*STDIN) - -On the command line, I do - - alias crc32="perl -MString::CRC32 -e'printf qq(%X\n), crc32(<>)'" - -To submit several requests concurrently, one can use -n and -r options: - - ./bin/http_client -H www.litespeedtech.com -s 443 \ - -p /cgi-bin/crc32.cgi -P file-256M -M POST -n 3 -r 10 - -This will open three parallel connections which will make ten POST -requests together. - -To perform load testing, it is good to mix sending and receiving data: - - for i in {1..100}; do - ./bin/http_client $COMMON_OPTS -p /cgi-bin/crc32.cgi -P file-256M \ - -M POST >out-post.$i & - ./bin/http_client $COMMON_OPTS -p /docs/file-256M >out-get.$i & - sleep 1 - done - -If you don't want to create a hundred 256-megabyte out-get.* files, use -K -flag to discard output. - -Testing Large Packet Sizes ---------------------------------- - -IETF QUIC supports all valid UDP packet sizes. This section outlines the -environment setup and testing parameters necessary to test this feature. - -Compilation - - Make sure to compile the library in DEBUG mode so that the NDEBUG - define is off. - - Build both the http_client and http_server test programs. - -Running Instructions - - Specify maximum packet size using -o base_plpmtu=$number. - Valid sizes are up to 65535. - - Use the -W flag for http_client and http_server for the ability - to send packets of large size. - - On the client side, use the -z flag to specify the maximum size - of packet that the client will accept. - -Example Usage - ./bin/http_client -p /file-1M -H www.litespeedtech.com -s 192.168.0.85:5443 - -o version=FF000014 - ./bin/http_server -c www.litespeedtech.com,certschain,privkey - -s 0.0.0.0:5443 -W -o base_plpmtu=65535 - -Additional Notes - Since this feature does not have MTU discovery enabled at the time of - writing, make sure to use client and server machines that share a path - with the intended MTU. - -Control QUIC Settings via -o Flag ---------------------------------- - -Most of the settings in struct lsquic_engine_settings can be controlled -via -o flag. With exception of es_versions, which is a bit mask, other -es_* options can be mapped to corresponding -o value via s/^es_//: - - es_cfcw => -o cwcf=12345 - es_max_streams_in => -o max_streams_in=123 - -And so on. - -For example, to test version negotiation: - - ./bin/http_server -c www.litespeedtech.com,certschain,privkey \ - -o version=Q035 -L debug 2>server.out & - ./bin/http_client -H www.litespeedtech.com -p Makefile -L debug 2>client.out - -Above, the client will start with the default, which is the highest supported -QUIC version, which the server should negotiate down. You should see it from -the log files. - -The code to set options via -o flag lives in set_engine_option(). It is good -to update this function at the same time as member fields are added to struct -lsquic_engine_settings. - -Control LSQUIC Behavior via Environment Variables -------------------------------------------------- - -LSQUIC_PACKET_OUT_LIMIT - - If set, the value of this environment variable is the maximum number - of packets that can be sent out in one shot. The limit is in the test - program framework's ea_packets_out() callback. - - It is not applicable when sendmmsg(2) is used. - - Note 1: sendmmsg can be enabled using -g option, if available for your - platform. - - Note 2: see -m option for a related packet-out limitation. - -LSQUIC_LOSE_PACKETS_RE - - If set, this regular expression specifies the numbers of packets which - the sender will lose on purpose. For example: - - export LSQUIC_LOSE_PACKETS_RE='^(3|5|10)$' - - The act of losing a packet is performed by changing its payload to - zero-filled buffer of the same size, which is almost as good as - not sending anything. The latter is difficult to implement without - negatively affecting the regular code flow. - - Only available in debug builds. - -LSQUIC_PACER_INTERTICK - - Number of microsecods to use as constant intertick time in lieu of the - pacer's dynamic intertick time approximation. - - Only available in debug builds. - -LSQUIC_CUBIC_SAMPLING_RATE - - Number of microseconds between times CWND is logged at info level. - - Only available in debug builds. - -LSQUIC_RANDOM_SEND_FAILURE - - Frequency with which sending of packets fails: one out of this many - times on average. - - Only available when compiled with -DLSQUIC_RANDOM_SEND_FAILURE=1 - -LSQUIC_LOG_SECRETS - - If set to true value, crypto secrets will be logged. Applies to - IETF QUIC only. - -LSQUIC_COALESCE - - If set to false, packets are not coalesced. Defaults to true. - -LSQUIC_USE_POOLS - - If set to false, all memory pooling code is replaced with calls to - malloc() and free(). This facilitates debugging memory issues. - The default is true. - -LSQUIC_ACK_ATTACK - - If set to true, generate optimistic ACKs. - -Control Network-Related Stuff ------------------------------ - - -D Set `do not fragment' flag on outgoing UDP packets. - - -z BYTES Maximum size of outgoing UDP packets. The default is 1370 - bytes for IPv4 socket and 1350 bytes for IPv6 socket. - - -S opt=val Socket options. Supported options: - sndbuf=12345 # Sets SO_SNDBUF - rcvbuf=12345 # Sets SO_RCVBUF - - -g Use sendmmsg() to send packets. This is only compiled in - if available. - -More Compilation Options ------------------------- - --DLSQUIC_CONN_STATS=1 - - Track some statistics about connections -- packets in, sent, delayed, - stream payload per packet size ratio, and some others -- and print them - at NOTICE level when connection is destroyed. - - Cumulative connections statistics are printed by the engine when it is - destroyed if lsquic_engine_api.ea_stats_fh is set. The HTTP client - programs sets it when -t or -T command-line option is used. - --DLSQUIC_PACKINTS_SANITY_CHECK=1 - - Turn on sanity checking for packet interval code. The packet interval - code, shared by both send and receive history modules, contained a bug - which prompted me to add a checking function. - --DLSQUIC_SEND_STATS=0 - - Turn off statistics collection performed by the send controller: number - of packets sent, resent, and delayed. - --DLOG_PACKET_CHECKSUM=1 - - When turned on, CRC32 checksum of each sent and received packet is - logged as an event. - --DLSQUIC_LOWEST_LOG_LEVEL=LSQ_LOG_WARN - - If you want to go even faster: compile out some log levels entirely. - --DLSQUIC_EXTRA_CHECKS=1 - - Add relatively expensive run-time sanity checks - --DLSQUIC_RANDOM_SEND_FAILURE=1 - - Simulate failure to send packets to test send resumption logic. When - this flag is specified, sending of packets will randomly fail, about - one out of every 10 attempts. Set environment variable - LSQUIC_RANDOM_SEND_FAILURE to change this frequency. - --DLSQUIC_ECN_BLACK_HOLE=1 - - When compiled with this flag, setting environment variable - LSQUIC_ECN_BLACK_HOLE to 1 will emulate ECN black hole: all received - packets with ECN markings are dropped on the floor. - --DLSQUIC_ACK_ATTACK=1 - - Enable ACK attack mode. See LSQUIC_ACK_ATTACK environment variable - entry above. diff --git a/external/lsquic/LICENSE b/external/lsquic/LICENSE deleted file mode 100644 index 690173b..0000000 --- a/external/lsquic/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 - 2023 LiteSpeed Technologies Inc - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/external/lsquic/LICENSE.chrome b/external/lsquic/LICENSE.chrome deleted file mode 100644 index 9efe9fa..0000000 --- a/external/lsquic/LICENSE.chrome +++ /dev/null @@ -1,32 +0,0 @@ -A few parts of LiteSpeed QUIC library are based on proto-quic. That -code is covered by this additional license: - ------------------------------- - -Copyright 2015 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. -* Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/external/lsquic/README.md b/external/lsquic/README.md deleted file mode 100644 index e3ecf5f..0000000 --- a/external/lsquic/README.md +++ /dev/null @@ -1,194 +0,0 @@ -[![Linux and MacOS build status](https://ci.appveyor.com/api/projects/status/x790ve5msewmva2b/branch/master?svg=true)](https://ci.appveyor.com/project/litespeedtech/lsquic-linux/branch/master) -[![Windows build status](https://ci.appveyor.com/api/projects/status/ij4n3vy343pkgm1j/branch/master?svg=true)](https://ci.appveyor.com/project/litespeedtech/lsquic-windows/branch/master) -[![FreeBSD build status](https://api.cirrus-ci.com/github/litespeedtech/lsquic.svg)](https://cirrus-ci.com/github/litespeedtech/lsquic) -[![Documentation Status](https://readthedocs.org/projects/lsquic/badge/?version=latest)](https://lsquic.readthedocs.io/en/latest/?badge=latest) - -LiteSpeed QUIC (LSQUIC) Library README -============================================= - -Description ------------ - -LiteSpeed QUIC (LSQUIC) Library is an open-source implementation of QUIC -and HTTP/3 functionality for servers and clients. Most of the code in this -distribution is used in our own products: LiteSpeed Web Server, LiteSpeed ADC, -and OpenLiteSpeed. - -Currently supported QUIC versions are v1, v2, Internet-Draft versions 29, and 27; -and the older "Google" QUIC versions Q043, Q046, an Q050. - -Standard Compliance -------------------- - -LiteSpeed QUIC is mostly compliant to the follow RFCs: - -- [RFC 9000](https://www.rfc-editor.org/rfc/rfc9000) QUIC: A UDP-Based Multiplexed and Secure Transport -- [RFC 9001](https://www.rfc-editor.org/rfc/rfc9001) Using TLS to Secure QUIC -- [RFC 9002](https://www.rfc-editor.org/rfc/rfc9002) QUIC Loss Detection and Congestion Control -- [RFC 9114](https://www.rfc-editor.org/rfc/rfc9114) HTTP/3 -- [RFC 9204](https://www.rfc-editor.org/rfc/rfc9204) QPACK: Field Compression for HTTP/3 - -QUIC protocol extensions ------------------------- - -The following QUIC protocol extensions are implemented: - -- [RFC 9368](https://www.rfc-editor.org/rfc/rfc9368) Compatible Version Negotiation for QUIC -- [RFC 9369](https://www.rfc-editor.org/rfc/rfc9369) QUIC Version 2 -- [RFC 9218](https://www.rfc-editor.org/rfc/rfc9218) Extensible Prioritization Scheme for HTTP -- [RFC 9221](https://www.rfc-editor.org/rfc/rfc9221) An Unreliable Datagram Extension to QUIC -- [RFC 9287](https://www.rfc-editor.org/rfc/rfc9287) Greasing the QUIC Bit -- [ACK Frequency](https://datatracker.ietf.org/doc/draft-ietf-quic-ack-frequency/) -- [WebTransport](https://datatracker.ietf.org/doc/draft-ietf-webtrans-http3/) - -Documentation -------------- - -Documentation is available at https://lsquic.readthedocs.io/en/latest/. - -In addition, see example programs for API usage and EXAMPLES.txt for -some compilation and run-time options. - -Requirements ------------- - -To build LSQUIC, you need CMake, zlib, and BoringSSL. The example program -uses libevent to provide the event loop. - -Building BoringSSL ------------------- - -BoringSSL is not packaged; you have to build it yourself. The process is -straightforward. You will need `go` installed. - -1. Clone BoringSSL by issuing the following command: - -``` -git clone https://boringssl.googlesource.com/boringssl -cd boringssl -``` - -You may need to install pre-requisites like zlib and libevent. - -2. Use specific BoringSSL version - -``` -git checkout 9fc1c33e9c21439ce5f87855a6591a9324e569fd -``` -Or, just try the latest master branch. - -3. Compile the library - -``` -cmake . && make -``` - -Remember where BoringSSL sources are: -``` -BORINGSSL=$PWD -``` - -If you want to turn on optimizations, do - -``` -cmake -DCMAKE_BUILD_TYPE=Release . && make -``` - -If you want to build as a library, (necessary to build lsquic itself -as as shared library) do: - -``` -cmake -DBUILD_SHARED_LIBS=1 . && make -``` - -Building LSQUIC Library ------------------------ - -LSQUIC's `http_client`, `http_server`, and the tests link BoringSSL -libraries statically. Following previous section, you can build LSQUIC -as follows: - -1. Get the source code - -``` -git clone https://github.com/litespeedtech/lsquic.git -cd lsquic -git submodule update --init -``` - -2. Compile the library - -Statically: - - -``` -# $BORINGSSL is the top-level BoringSSL directory from the previous step -cmake -DBORINGSSL_DIR=$BORINGSSL . -make -``` - -As a dynamic library: - -``` -cmake -DLSQUIC_SHARED_LIB=1 -DBORINGSSL_DIR=$BORINGSSL . -make -``` - - -3. Run tests - -``` -make test -``` - -Building with Docker ---------- -The library and the example client and server can be built with Docker. - -Initialize Git submodules: -``` -cd lsquic -git submodule update --init -``` - -Build the Docker image: -``` -docker build -t lsquic . -``` - -Then you can use the examples from the command line. For example: -``` -sudo docker run -it --rm lsquic http_client -s www.google.com -p / -o version=h3 -sudo docker run -p 12345:12345/udp -v /path/to/certs:/mnt/certs -it --rm lsquic http_server -c www.example.com,/mnt/certs/chain,/mnt/certs/key -``` - -Platforms ---------- - -The library has been tested on the following platforms: -- Linux - - i386 - - x86_64 - - ARM (Raspberry Pi 3) -- FreeBSD - - i386 -- MacOS - - x86_64 -- iOS - - ARM -- Android - - ARM -- Windows - - x86_64 - -Get Involved ------------- - -Do not hesitate to report bugs back to us. Even better, send us fixes -and improvements! - -Have fun, - -LiteSpeed QUIC Team. - -Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc diff --git a/external/lsquic/appveyor-linux.yml b/external/lsquic/appveyor-linux.yml deleted file mode 100644 index 0fa15e1..0000000 --- a/external/lsquic/appveyor-linux.yml +++ /dev/null @@ -1,48 +0,0 @@ -version: 2.{branch}.{build} - -image: -- Ubuntu2004 -- MacOS - -build: off - -init: - -cache: -# - boringssl -> appveyor-linux.yml # we define the commit in here - -install: - -- sh: >- - - if [[ -e boringssl/CMakeLists.txt ]] ; then - - echo cached - - else - - git clone https://boringssl.googlesource.com/boringssl - - cd boringssl - - git checkout cf8d3ad3cea51cf7184307d54f465da62b7d8408 - - cmake . - - make -j4 - - cd .. - - fi - - git submodule init - - git submodule update --checkout --force --recursive - - cmake -DBORINGSSL_DIR=$PWD/boringssl . - - make - -test_script: - -- sh: make test diff --git a/external/lsquic/appveyor-windows.cmd b/external/lsquic/appveyor-windows.cmd deleted file mode 100644 index fac703f..0000000 --- a/external/lsquic/appveyor-windows.cmd +++ /dev/null @@ -1,23 +0,0 @@ -vcpkg list - -if exist ".\boringssl\CMakeLists.txt" ( - echo cached -) else ( - git clone https://boringssl.googlesource.com/boringssl - cd boringssl - git checkout cf8d3ad3cea51cf7184307d54f465da62b7d8408 - cmake -DCMAKE_GENERATOR_PLATFORM=x64 --config Debug -DBUILD_SHARED_LIBS=OFF -DOPENSSL_NO_ASM=1 . - msbuild /m ALL_BUILD.vcxproj - cd .. -) - -git submodule init - -git submodule update --checkout --force --recursive - -set VCPKG_ROOT=c:/tools/vcpkg/ - -cmake -DCMAKE_GENERATOR_PLATFORM=x64 -DBUILD_SHARED_LIBS=OFF -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=c:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake -DGETOPT_INCLUDE_DIR=c:/tools/vcpkg/installed/x64-windows/include -DGETOPT_LIB=c:/tools/vcpkg/installed/x64-windows/lib/getopt.lib -DBORINGSSL_DIR=%cd%\boringssl . - - -msbuild /m ALL_BUILD.vcxproj diff --git a/external/lsquic/appveyor-windows.yml b/external/lsquic/appveyor-windows.yml deleted file mode 100644 index 1aee700..0000000 --- a/external/lsquic/appveyor-windows.yml +++ /dev/null @@ -1,33 +0,0 @@ -version: 1.{branch}.{build} - -image: Visual Studio 2017 - -init: - -- cmd: '' - -install: - -- cmd: >- - - vcpkg install zlib:x64-windows-static - - vcpkg install libevent:x64-windows-static - - vcpkg install pcre:x64-windows-static - - vcpkg install getopt:x64-windows - - vcpkg integrate install - -cache: -- c:\tools\vcpkg\installed -- boringssl -> appveyor-windows.yml, appveyor-windows.cmd # we define the commit in here - -build_script: - -- cmd: appveyor-windows.cmd - -test_script: - -- cmd: msbuild /m RUN_TESTS.vcxproj diff --git a/external/lsquic/bin/CMakeLists.txt b/external/lsquic/bin/CMakeLists.txt deleted file mode 100644 index 5afd506..0000000 --- a/external/lsquic/bin/CMakeLists.txt +++ /dev/null @@ -1,120 +0,0 @@ -# Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. - -include_directories(${CMAKE_CURRENT_BINARY_DIR}) -LIST(APPEND LIBS ${EVENT_LIB}) - -IF(MSVC) - FIND_LIBRARY(PCRE_LIB pcre) - IF(PCRE_LIB) - MESSAGE(STATUS "Found pcre: ${PCRE_LIB}") - LIST(APPEND LIBS ${PCRE_LIB}) - ELSE() - MESSAGE(STATUS "pcre not found: http_server won't work") - ENDIF() - FIND_LIBRARY(PCREPOSIX_LIB pcreposix) - IF(PCREPOSIX_LIB) - MESSAGE(STATUS "Found pcreposix: ${PCREPOSIX_LIB}") - LIST(APPEND LIBS ${PCREPOSIX_LIB}) - ELSE() - MESSAGE(STATUS "pcreposix not found: http_server won't work") - ENDIF() - LIST(APPEND LIBS ws2_32) - LIST(APPEND LIBS iphlpapi) - LIST(APPEND LIBS ${GETOPT_LIB}) -ENDIF() - -add_executable(http_server http_server.c prog.c test_common.c test_cert.c) -IF(NOT MSVC) # TODO: port MD5 server and client to Windows -add_executable(md5_server md5_server.c prog.c test_common.c test_cert.c) -add_executable(md5_client md5_client.c prog.c test_common.c test_cert.c) -ENDIF() -add_executable(echo_server echo_server.c prog.c test_common.c test_cert.c) -add_executable(echo_client echo_client.c prog.c test_common.c test_cert.c) -add_executable(duck_server duck_server.c prog.c test_common.c test_cert.c) -add_executable(duck_client duck_client.c prog.c test_common.c test_cert.c) -add_executable(perf_client perf_client.c prog.c test_common.c test_cert.c) -add_executable(perf_server perf_server.c prog.c test_common.c test_cert.c) - - -IF (NOT MSVC) - -add_executable(http_client - http_client.c - prog.c - test_common.c - test_cert.c -) - -#MSVC -ELSE() - -add_executable(http_client - http_client.c - prog.c - test_common.c - test_cert.c -) - -ENDIF() - -TARGET_LINK_LIBRARIES(http_client ${LIBS}) -TARGET_LINK_LIBRARIES(http_server ${LIBS}) -IF(NOT MSVC) -TARGET_LINK_LIBRARIES(md5_server ${LIBS}) -TARGET_LINK_LIBRARIES(md5_client ${LIBS}) -ENDIF() -TARGET_LINK_LIBRARIES(echo_server ${LIBS}) -TARGET_LINK_LIBRARIES(echo_client ${LIBS}) -TARGET_LINK_LIBRARIES(duck_server ${LIBS}) -TARGET_LINK_LIBRARIES(duck_client ${LIBS}) -TARGET_LINK_LIBRARIES(perf_client ${LIBS}) -TARGET_LINK_LIBRARIES(perf_server ${LIBS}) - - -INCLUDE(CheckFunctionExists) -CHECK_FUNCTION_EXISTS(sendmmsg HAVE_SENDMMSG) -CHECK_FUNCTION_EXISTS(recvmmsg HAVE_RECVMMSG) -CHECK_FUNCTION_EXISTS(open_memstream HAVE_OPEN_MEMSTREAM) - - -INCLUDE(CheckSymbolExists) - -CHECK_SYMBOL_EXISTS( - IP_MTU_DISCOVER - "netinet/in.h" - HAVE_IP_MTU_DISCOVER -) - -CHECK_SYMBOL_EXISTS( - IPV6_MTU_DISCOVER - "netinet/in.h" - HAVE_IPV6_MTU_DISCOVER -) - -CHECK_SYMBOL_EXISTS( - IP_DONTFRAG - "netinet/in.h" - HAVE_IP_DONTFRAG -) - -CHECK_SYMBOL_EXISTS( - preadv - "sys/uio.h" - HAVE_PREADV -) - -INCLUDE(CheckIncludeFiles) - -IF (MSVC AND PCRE_LIB) -FIND_PATH(EVENT_INCLUDE_DIR NAMES pcreposix.h) -IF (EVENT_INCLUDE_DIR) - MESSAGE(STATUS "found pcreposix.h") - SET(HAVE_REGEX 1) -ELSE() - MESSAGE(FATAL_ERROR "event2/event.h was not found") -ENDIF() -ELSE() -CHECK_INCLUDE_FILES(regex.h HAVE_REGEX) -ENDIF() - -CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/test_config.h.in ${CMAKE_CURRENT_BINARY_DIR}/test_config.h) diff --git a/external/lsquic/bin/duck_client.c b/external/lsquic/bin/duck_client.c deleted file mode 100644 index 3e12ac9..0000000 --- a/external/lsquic/bin/duck_client.c +++ /dev/null @@ -1,192 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * duck_client.c -- The siduck client. See - * https://tools.ietf.org/html/draft-pardue-quic-siduck-00 - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef WIN32 -#include -#include -#define Read read -#else -#include "vc_compat.h" -#include "getopt.h" -#include -#define Read _read -#define STDIN_FILENO 0 -#endif - -#include - -#include "lsquic.h" -#include "test_common.h" -#include "prog.h" - -#include "../src/liblsquic/lsquic_logger.h" - -/* Expected request and response of the siduck protocol */ -#define REQUEST "quack" -#define RESPONSE "quack-ack" - -static lsquic_conn_ctx_t * -duck_client_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) -{ - LSQ_NOTICE("created a new connection"); - return stream_if_ctx; -} - - -static void -duck_client_on_hsk_done (lsquic_conn_t *conn, enum lsquic_hsk_status s) -{ - if (s == LSQ_HSK_OK || s == LSQ_HSK_RESUMED_OK) - { - if (lsquic_conn_want_datagram_write(conn, 1) < 0) - LSQ_ERROR("want_datagram_write failed"); - } -} - - -static void -duck_client_on_conn_closed (lsquic_conn_t *conn) -{ - lsquic_conn_ctx_t *ctx = lsquic_conn_get_ctx(conn); - LSQ_NOTICE("Connection closed, stop client"); - prog_stop((struct prog *) ctx); - - lsquic_conn_set_ctx(conn, NULL); -} - - -static ssize_t -duck_client_on_dg_write (lsquic_conn_t *conn, void *buf, size_t sz) -{ - /* We only write one request */ -#ifndef NDEBUG - int s = -#endif - lsquic_conn_want_datagram_write(conn, 0); - assert(s == 1); /* Old value was "yes, we want to write a datagram" */ - - if (sz >= sizeof(REQUEST) - 1) - { - LSQ_INFO("wrote `%s' in request", REQUEST); - memcpy(buf, REQUEST, sizeof(REQUEST) - 1); - return sizeof(REQUEST) - 1; - } - else - return -1; -} - - -static void -duck_client_on_datagram (lsquic_conn_t *conn, const void *buf, size_t bufsz) -{ - if (bufsz == sizeof(RESPONSE) - 1 - && 0 == memcmp(buf, RESPONSE, sizeof(RESPONSE) - 1)) - { - LSQ_DEBUG("received the expected `%s' response", RESPONSE); - lsquic_conn_close(conn); - } - else - { - LSQ_NOTICE("unexpected request received, abort connection"); - lsquic_conn_abort(conn); - } -} - - -const struct lsquic_stream_if duck_client_stream_if = { - .on_new_conn = duck_client_on_new_conn, - .on_hsk_done = duck_client_on_hsk_done, - .on_conn_closed = duck_client_on_conn_closed, - .on_dg_write = duck_client_on_dg_write, - .on_datagram = duck_client_on_datagram, -}; - - -static void -usage (const char *prog) -{ - const char *const slash = strrchr(prog, '/'); - if (slash) - prog = slash + 1; - LSQ_NOTICE( -"Usage: %s [opts]\n" -"\n" -"Options:\n" - , prog); -} - - -int -main (int argc, char **argv) -{ - int opt, s; - struct sport_head sports; - struct prog prog; - - TAILQ_INIT(&sports); - prog_init(&prog, 0, &sports, &duck_client_stream_if, &prog); - prog.prog_settings.es_datagrams = 1; - prog.prog_settings.es_init_max_data = 0; - prog.prog_settings.es_init_max_streams_bidi = 0; - prog.prog_settings.es_init_max_streams_uni = 0; - prog.prog_settings.es_max_streams_in = 0; - prog.prog_api.ea_alpn = "siduck-00"; - - while (-1 != (opt = getopt(argc, argv, PROG_OPTS "h"))) - { - switch (opt) { - case 'h': - usage(argv[0]); - prog_print_common_options(&prog, stdout); - exit(0); - default: - if (0 != prog_set_opt(&prog, opt, optarg)) - exit(1); - } - } - -#ifndef WIN32 - int flags = fcntl(STDIN_FILENO, F_GETFL); - flags |= O_NONBLOCK; - if (0 != fcntl(STDIN_FILENO, F_SETFL, flags)) - { - perror("fcntl"); - exit(1); - } -#else - { - u_long on = 1; - ioctlsocket(STDIN_FILENO, FIONBIO, &on); - } -#endif - - if (0 != prog_prep(&prog)) - { - LSQ_ERROR("could not prep"); - exit(EXIT_FAILURE); - } - if (0 != prog_connect(&prog, NULL, 0)) - { - LSQ_ERROR("could not connect"); - exit(EXIT_FAILURE); - } - - LSQ_DEBUG("entering event loop"); - - s = prog_run(&prog); - prog_cleanup(&prog); - - exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); -} diff --git a/external/lsquic/bin/duck_server.c b/external/lsquic/bin/duck_server.c deleted file mode 100644 index 7f7da80..0000000 --- a/external/lsquic/bin/duck_server.c +++ /dev/null @@ -1,161 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * A duck quacks! The server for the siduck protocol: - * https://tools.ietf.org/html/draft-pardue-quic-siduck-00 - */ - -#include -#include -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#include -#else -#include "vc_compat.h" -#include "getopt.h" -#endif - -#include "lsquic.h" -#include "../src/liblsquic/lsquic_hash.h" -#include "test_common.h" -#include "test_cert.h" -#include "prog.h" - -#include "../src/liblsquic/lsquic_logger.h" - - -static lsquic_conn_ctx_t * -duck_server_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) -{ - LSQ_NOTICE("New siduck connection established!"); - return NULL; -} - - -static void -duck_server_on_conn_closed (lsquic_conn_t *conn) -{ - LSQ_NOTICE("siduck connection closed"); - lsquic_conn_set_ctx(conn, NULL); -} - - -/* Expected request and response of the siduck protocol */ -#define REQUEST "quack" -#define RESPONSE "quack-ack" - - -static ssize_t -duck_on_dg_write (lsquic_conn_t *conn, void *buf, size_t sz) -{ - int s; - - /* We only write one response */ - s = lsquic_conn_want_datagram_write(conn, 0); - assert(s == 1); /* Old value was "yes" */ - - if (sz >= sizeof(RESPONSE) - 1) - { - LSQ_INFO("wrote `%s' in response", RESPONSE); - memcpy(buf, RESPONSE, sizeof(RESPONSE) - 1); - lsquic_conn_close(conn); /* Close connection right away */ - return sizeof(RESPONSE) - 1; - } - else - return -1; -} - - -static void -duck_on_datagram (lsquic_conn_t *conn, const void *buf, size_t bufsz) -{ - int s; - - if (bufsz == sizeof(REQUEST) - 1 - && 0 == memcmp(buf, REQUEST, sizeof(REQUEST) - 1)) - { - LSQ_DEBUG("received the expected `%s' request", REQUEST); - s = lsquic_conn_want_datagram_write(conn, 1); - assert(s == 0); - } - else - { - LSQ_NOTICE("unexpected request received, abort connection"); - lsquic_conn_abort(conn); - } -} - - -const struct lsquic_stream_if duck_server_stream_if = { - .on_new_conn = duck_server_on_new_conn, - .on_conn_closed = duck_server_on_conn_closed, - .on_dg_write = duck_on_dg_write, - .on_datagram = duck_on_datagram, -}; - - -static void -usage (const char *prog) -{ - const char *const slash = strrchr(prog, '/'); - if (slash) - prog = slash + 1; - printf( -"Usage: %s [opts]\n" -"\n" -"Options:\n" - , prog); -} - - -int -main (int argc, char **argv) -{ - int opt, s; - struct prog prog; - struct sport_head sports; - - TAILQ_INIT(&sports); - prog_init(&prog, LSENG_SERVER, &sports, &duck_server_stream_if, NULL); - prog.prog_settings.es_datagrams = 1; - prog.prog_settings.es_init_max_data = 0; - prog.prog_settings.es_init_max_streams_bidi = 0; - prog.prog_settings.es_init_max_streams_uni = 0; - prog.prog_settings.es_max_streams_in = 0; - - while (-1 != (opt = getopt(argc, argv, PROG_OPTS "h"))) - { - switch (opt) { - case 'h': - usage(argv[0]); - prog_print_common_options(&prog, stdout); - exit(0); - default: - if (0 != prog_set_opt(&prog, opt, optarg)) - exit(1); - } - } - - if (0 != add_alpn("siduck-00")) - { - LSQ_ERROR("could not add ALPN"); - exit(EXIT_FAILURE); - } - - if (0 != prog_prep(&prog)) - { - LSQ_ERROR("could not prep"); - exit(EXIT_FAILURE); - } - - LSQ_DEBUG("entering event loop"); - - s = prog_run(&prog); - prog_cleanup(&prog); - - exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); -} diff --git a/external/lsquic/bin/echo_client.c b/external/lsquic/bin/echo_client.c deleted file mode 100644 index 3fb42f3..0000000 --- a/external/lsquic/bin/echo_client.c +++ /dev/null @@ -1,271 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * echo_client.c -- This is really a "line client:" it connects to QUIC server - * and sends it stuff, line by line. It works in tandem with echo_server. - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef WIN32 -#include -#include -#define Read read -#else -#include "vc_compat.h" -#include "getopt.h" -#include -#define Read _read -#define STDIN_FILENO 0 -#endif - -#include - -#include "lsquic.h" -#include "test_common.h" -#include "prog.h" - -#include "../src/liblsquic/lsquic_logger.h" - -struct lsquic_conn_ctx; - -struct echo_client_ctx { - struct lsquic_conn_ctx *conn_h; - struct prog *prog; -}; - -struct lsquic_conn_ctx { - lsquic_conn_t *conn; - struct echo_client_ctx *client_ctx; -}; - - -static lsquic_conn_ctx_t * -echo_client_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) -{ - struct echo_client_ctx *client_ctx = stream_if_ctx; - lsquic_conn_ctx_t *conn_h = malloc(sizeof(*conn_h)); - conn_h->conn = conn; - conn_h->client_ctx = client_ctx; - client_ctx->conn_h = conn_h; - lsquic_conn_make_stream(conn); - return conn_h; -} - - -static void -echo_client_on_conn_closed (lsquic_conn_t *conn) -{ - lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); - LSQ_NOTICE("Connection closed"); - prog_stop(conn_h->client_ctx->prog); - - lsquic_conn_set_ctx(conn, NULL); - free(conn_h); -} - - -struct lsquic_stream_ctx { - lsquic_stream_t *stream; - struct echo_client_ctx *client_ctx; - struct event *read_stdin_ev; - char buf[0x100]; - size_t buf_off; -}; - - -static void -read_stdin (evutil_socket_t fd, short what, void *ctx) -{ - ssize_t nr; - lsquic_stream_ctx_t *st_h = ctx; - - nr = Read(fd, st_h->buf + st_h->buf_off++, 1); - LSQ_DEBUG("read %zd bytes from stdin", nr); - if (0 == nr) - { - lsquic_stream_shutdown(st_h->stream, 2); - } - else if (-1 == nr) - { - perror("read"); - exit(1); - } - else if ('\n' == st_h->buf[ st_h->buf_off - 1 ]) - { - LSQ_DEBUG("read newline: wantwrite"); - lsquic_stream_wantwrite(st_h->stream, 1); - lsquic_engine_process_conns(st_h->client_ctx->prog->prog_engine); - } - else if (st_h->buf_off == sizeof(st_h->buf)) - { - LSQ_NOTICE("line too long"); - exit(2); - } - else - event_add(st_h->read_stdin_ev, NULL); -} - - -static lsquic_stream_ctx_t * -echo_client_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) -{ - lsquic_stream_ctx_t *st_h = calloc(1, sizeof(*st_h)); - st_h->stream = stream; - st_h->client_ctx = stream_if_ctx; - st_h->buf_off = 0; - st_h->read_stdin_ev = event_new(prog_eb(st_h->client_ctx->prog), - STDIN_FILENO, EV_READ, read_stdin, st_h); - event_add(st_h->read_stdin_ev, NULL); - return st_h; -} - - -static void -echo_client_on_read (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - char c; - size_t nr; - - nr = lsquic_stream_read(stream, &c, 1); - if (0 == nr) - { - lsquic_stream_shutdown(stream, 2); - return; - } - printf("%c", c); - fflush(stdout); - if ('\n' == c) - { - event_add(st_h->read_stdin_ev, NULL); - lsquic_stream_wantread(stream, 0); - } -} - - -static void -echo_client_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - /* Here we make an assumption that we can write the whole buffer. - * Don't do it in a real program. - */ - lsquic_stream_write(stream, st_h->buf, st_h->buf_off); - st_h->buf_off = 0; - - lsquic_stream_flush(stream); - lsquic_stream_wantwrite(stream, 0); - lsquic_stream_wantread(stream, 1); -} - - -static void -echo_client_on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - LSQ_NOTICE("%s called", __func__); - if (st_h->read_stdin_ev) - { - event_del(st_h->read_stdin_ev); - event_free(st_h->read_stdin_ev); - } - free(st_h); - lsquic_conn_close(lsquic_stream_conn(stream)); -} - - -const struct lsquic_stream_if client_echo_stream_if = { - .on_new_conn = echo_client_on_new_conn, - .on_conn_closed = echo_client_on_conn_closed, - .on_new_stream = echo_client_on_new_stream, - .on_read = echo_client_on_read, - .on_write = echo_client_on_write, - .on_close = echo_client_on_close, -}; - - -static void -usage (const char *prog) -{ - const char *const slash = strrchr(prog, '/'); - if (slash) - prog = slash + 1; - LSQ_NOTICE( -"Usage: %s [opts]\n" -"\n" -"Options:\n" - , prog); -} - - -int -main (int argc, char **argv) -{ - int opt, s; - struct sport_head sports; - struct prog prog; - struct echo_client_ctx client_ctx; - -#ifdef WIN32 - fprintf(stderr, "%s does not work on Windows, see\n" - "https://github.com/litespeedtech/lsquic/issues/219\n", argv[0]); - exit(EXIT_FAILURE); -#endif - - memset(&client_ctx, 0, sizeof(client_ctx)); - client_ctx.prog = &prog; - - TAILQ_INIT(&sports); - prog_init(&prog, 0, &sports, &client_echo_stream_if, &client_ctx); - prog.prog_api.ea_alpn = "echo"; - - while (-1 != (opt = getopt(argc, argv, PROG_OPTS "h"))) - { - switch (opt) { - case 'h': - usage(argv[0]); - prog_print_common_options(&prog, stdout); - exit(0); - default: - if (0 != prog_set_opt(&prog, opt, optarg)) - exit(1); - } - } - -#ifndef WIN32 - int flags = fcntl(STDIN_FILENO, F_GETFL); - flags |= O_NONBLOCK; - if (0 != fcntl(STDIN_FILENO, F_SETFL, flags)) - { - perror("fcntl"); - exit(1); - } -#else - { - u_long on = 1; - ioctlsocket(STDIN_FILENO, FIONBIO, &on); - } -#endif - - if (0 != prog_prep(&prog)) - { - LSQ_ERROR("could not prep"); - exit(EXIT_FAILURE); - } - if (0 != prog_connect(&prog, NULL, 0)) - { - LSQ_ERROR("could not connect"); - exit(EXIT_FAILURE); - } - - LSQ_DEBUG("entering event loop"); - - s = prog_run(&prog); - prog_cleanup(&prog); - - exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); -} diff --git a/external/lsquic/bin/echo_server.c b/external/lsquic/bin/echo_server.c deleted file mode 100644 index 442ce8d..0000000 --- a/external/lsquic/bin/echo_server.c +++ /dev/null @@ -1,238 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * echo_server.c -- QUIC server that echoes back input line by line - */ - -#include -#include -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#include -#else -#include "vc_compat.h" -#include "getopt.h" -#endif - -#include "lsquic.h" -#include "test_common.h" -#include "../src/liblsquic/lsquic_hash.h" -#include "test_cert.h" -#include "prog.h" - -#include "../src/liblsquic/lsquic_logger.h" - - -struct lsquic_conn_ctx; - -struct echo_server_ctx { - TAILQ_HEAD(, lsquic_conn_ctx) conn_ctxs; - unsigned max_reqs; - int n_conn; - struct sport_head sports; - struct prog *prog; -}; - -struct lsquic_conn_ctx { - TAILQ_ENTRY(lsquic_conn_ctx) next_connh; - lsquic_conn_t *conn; - struct echo_server_ctx *server_ctx; -}; - - -static lsquic_conn_ctx_t * -echo_server_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) -{ - struct echo_server_ctx *server_ctx = stream_if_ctx; - lsquic_conn_ctx_t *conn_h = calloc(1, sizeof(*conn_h)); - conn_h->conn = conn; - conn_h->server_ctx = server_ctx; - TAILQ_INSERT_TAIL(&server_ctx->conn_ctxs, conn_h, next_connh); - LSQ_NOTICE("New connection!"); - print_conn_info(conn); - return conn_h; -} - - -static void -echo_server_on_conn_closed (lsquic_conn_t *conn) -{ - lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); - if (conn_h->server_ctx->n_conn) - { - --conn_h->server_ctx->n_conn; - LSQ_NOTICE("Connection closed, remaining: %d", conn_h->server_ctx->n_conn); - if (0 == conn_h->server_ctx->n_conn) - prog_stop(conn_h->server_ctx->prog); - } - else - LSQ_NOTICE("Connection closed"); - TAILQ_REMOVE(&conn_h->server_ctx->conn_ctxs, conn_h, next_connh); - - lsquic_conn_set_ctx(conn, NULL); - free(conn_h); -} - - -struct lsquic_stream_ctx { - lsquic_stream_t *stream; - struct echo_server_ctx *server_ctx; - char buf[0x100]; - size_t buf_off; -}; - - -static lsquic_stream_ctx_t * -echo_server_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) -{ - lsquic_stream_ctx_t *st_h = malloc(sizeof(*st_h)); - st_h->stream = stream; - st_h->server_ctx = stream_if_ctx; - st_h->buf_off = 0; - lsquic_stream_wantread(stream, 1); - return st_h; -} - - -static struct lsquic_conn_ctx * -find_conn_h (const struct echo_server_ctx *server_ctx, lsquic_stream_t *stream) -{ - struct lsquic_conn_ctx *conn_h; - lsquic_conn_t *conn; - - conn = lsquic_stream_conn(stream); - TAILQ_FOREACH(conn_h, &server_ctx->conn_ctxs, next_connh) - if (conn_h->conn == conn) - return conn_h; - return NULL; -} - - -static void -echo_server_on_read (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - struct lsquic_conn_ctx *conn_h; - size_t nr; - - nr = lsquic_stream_read(stream, st_h->buf + st_h->buf_off++, 1); - if (0 == nr) - { - LSQ_NOTICE("EOF: closing connection"); - lsquic_stream_shutdown(stream, 2); - conn_h = find_conn_h(st_h->server_ctx, stream); - lsquic_conn_close(conn_h->conn); - } - else if ('\n' == st_h->buf[ st_h->buf_off - 1 ]) - { - /* Found end of line: echo it back */ - lsquic_stream_wantwrite(stream, 1); - lsquic_stream_wantread(stream, 0); - } - else if (st_h->buf_off == sizeof(st_h->buf)) - { - /* Out of buffer space: line too long */ - LSQ_NOTICE("run out of buffer space"); - lsquic_stream_shutdown(stream, 2); - } - else - { - /* Keep reading */; - } -} - - -static void -echo_server_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - lsquic_stream_write(stream, st_h->buf, st_h->buf_off); - st_h->buf_off = 0; - lsquic_stream_flush(stream); - lsquic_stream_wantwrite(stream, 0); - lsquic_stream_wantread(stream, 1); -} - - -static void -echo_server_on_stream_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - struct lsquic_conn_ctx *conn_h; - LSQ_NOTICE("%s called", __func__); - conn_h = find_conn_h(st_h->server_ctx, stream); - LSQ_WARN("%s: TODO: free connection handler %p", __func__, conn_h); - free(st_h); -} - - -const struct lsquic_stream_if server_echo_stream_if = { - .on_new_conn = echo_server_on_new_conn, - .on_conn_closed = echo_server_on_conn_closed, - .on_new_stream = echo_server_on_new_stream, - .on_read = echo_server_on_read, - .on_write = echo_server_on_write, - .on_close = echo_server_on_stream_close, -}; - - -static void -usage (const char *prog) -{ - const char *const slash = strrchr(prog, '/'); - if (slash) - prog = slash + 1; - printf( -"Usage: %s [opts]\n" -"\n" -"Options:\n" - , prog); -} - - -int -main (int argc, char **argv) -{ - int opt, s; - struct prog prog; - struct echo_server_ctx server_ctx; - - memset(&server_ctx, 0, sizeof(server_ctx)); - server_ctx.prog = &prog; - TAILQ_INIT(&server_ctx.sports); - TAILQ_INIT(&server_ctx.conn_ctxs); - - prog_init(&prog, LSENG_SERVER, &server_ctx.sports, - &server_echo_stream_if, &server_ctx); - - while (-1 != (opt = getopt(argc, argv, PROG_OPTS "hn:"))) - { - switch (opt) { - case 'n': - server_ctx.n_conn = atoi(optarg); - break; - case 'h': - usage(argv[0]); - prog_print_common_options(&prog, stdout); - exit(0); - default: - if (0 != prog_set_opt(&prog, opt, optarg)) - exit(1); - } - } - - add_alpn("echo"); - if (0 != prog_prep(&prog)) - { - LSQ_ERROR("could not prep"); - exit(EXIT_FAILURE); - } - - LSQ_DEBUG("entering event loop"); - - s = prog_run(&prog); - prog_cleanup(&prog); - - exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); -} diff --git a/external/lsquic/bin/http_client.c b/external/lsquic/bin/http_client.c deleted file mode 100644 index 73c803b..0000000 --- a/external/lsquic/bin/http_client.c +++ /dev/null @@ -1,1897 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * http_client.c -- A simple HTTP/QUIC client - */ - -#ifndef WIN32 -#include -#include -#else -#include -#include -#include -#include -#include -#define STDOUT_FILENO 1 -#define random rand -#pragma warning(disable:4996) //POSIX name deprecated -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#include -#include -#include -#endif -#include -#include -#include -#include - -#include -#include -#include - -#include "lsquic.h" -#include "test_common.h" -#include "prog.h" - -#include "../src/liblsquic/lsquic_logger.h" -#include "../src/liblsquic/lsquic_int_types.h" -#include "../src/liblsquic/lsquic_util.h" -#include "../src/liblsquic/lsquic_hash.h" -#if LSQUIC_QIR -/* include directly for reset_stream testing */ -#include "../src/liblsquic/lsquic_stream.h" -/* include directly for retire_cid testing */ -#include "../src/liblsquic/lsquic_conn.h" -#endif -#include "lsxpack_header.h" - -#define MIN(a, b) ((a) < (b) ? (a) : (b)) - -/* This is used to exercise generating and sending of priority frames */ -static int randomly_reprioritize_streams; - -static int s_display_cert_chain; - -/* If this file descriptor is open, the client will accept server push and - * dump the contents here. See -u flag. - */ -static int promise_fd = -1; - -/* Set to true value to use header bypass. This means that the use code - * creates header set via callbacks and then fetches it by calling - * lsquic_stream_get_hset() when the first "on_read" event is called. - */ -static int g_header_bypass; - -static int s_discard_response; - -/* If set to a non-zero value, abandon reading from stream early: read at - * most `s_abandon_early' bytes and then close the stream. - */ -static long s_abandon_early; - -struct sample_stats -{ - unsigned n; - unsigned long min, max; - unsigned long sum; /* To calculate mean */ - unsigned long sum_X2; /* To calculate stddev */ -}; - -static struct sample_stats s_stat_to_conn, /* Time to connect */ - s_stat_ttfb, - s_stat_req; /* From TTFB to EOS */ -static unsigned s_stat_conns_ok, s_stat_conns_failed; -static unsigned long s_stat_downloaded_bytes; - -static void -update_sample_stats (struct sample_stats *stats, unsigned long val) -{ - LSQ_DEBUG("%s: %p: %lu", __func__, stats, val); - if (stats->n) - { - if (val < stats->min) - stats->min = val; - else if (val > stats->max) - stats->max = val; - } - else - { - stats->min = val; - stats->max = val; - } - stats->sum += val; - stats->sum_X2 += val * val; - ++stats->n; -} - - -static void -calc_sample_stats (const struct sample_stats *stats, - long double *mean_p, long double *stddev_p) -{ - unsigned long mean, tmp; - - if (stats->n) - { - mean = stats->sum / stats->n; - *mean_p = (long double) mean; - if (stats->n > 1) - { - tmp = stats->sum_X2 - stats->n * mean * mean; - tmp /= stats->n - 1; - *stddev_p = sqrtl((long double) tmp); - } - else - *stddev_p = 0; - } - else - { - *mean_p = 0; - *stddev_p = 0; - } -} - - -/* When more than `nread' bytes are read from stream `stream_id', apply - * priority in `ehp'. - */ -struct priority_spec -{ - enum { - PRIORITY_SPEC_ACTIVE = 1 << 0, - } flags; - lsquic_stream_id_t stream_id; - size_t nread; - struct lsquic_ext_http_prio ehp; -}; -static struct priority_spec *s_priority_specs; -static unsigned s_n_prio_specs; - -static void -maybe_perform_priority_actions (struct lsquic_stream *, lsquic_stream_ctx_t *); - -struct lsquic_conn_ctx; - -struct path_elem { - TAILQ_ENTRY(path_elem) next_pe; - const char *path; -}; - -struct http_client_ctx { - const char *hostname; - const char *method; - const char *payload; - char payload_size[20]; - - /* hcc_path_elems holds a list of paths which are to be requested from - * the server. Each new request gets the next path from the list (the - * iterator is stored in hcc_cur_pe); when the end is reached, the - * iterator wraps around. - */ - TAILQ_HEAD(, path_elem) hcc_path_elems; - struct path_elem *hcc_cur_pe; - - unsigned hcc_total_n_reqs; - unsigned hcc_reqs_per_conn; - unsigned hcc_concurrency; - unsigned hcc_cc_reqs_per_conn; - unsigned hcc_n_open_conns; - unsigned hcc_reset_after_nbytes; - unsigned hcc_retire_cid_after_nbytes; - const char *hcc_download_dir; - - char *hcc_sess_resume_file_name; - - enum { - HCC_SKIP_SESS_RESUME = (1 << 0), - HCC_SEEN_FIN = (1 << 1), - HCC_ABORT_ON_INCOMPLETE = (1 << 2), - } hcc_flags; - struct prog *prog; - const char *qif_file; - FILE *qif_fh; -}; - -struct lsquic_conn_ctx { - TAILQ_ENTRY(lsquic_conn_ctx) next_ch; - lsquic_conn_t *conn; - struct http_client_ctx *client_ctx; - lsquic_time_t ch_created; - unsigned ch_n_reqs; /* This number gets decremented as streams are closed and - * incremented as push promises are accepted. - */ - unsigned ch_n_cc_streams; /* This number is incremented as streams are opened - * and decremented as streams are closed. It should - * never exceed hcc_cc_reqs_per_conn in client_ctx. - */ - enum { - CH_SESSION_RESUME_SAVED = 1 << 0, - } ch_flags; -}; - - -struct hset_elem -{ - STAILQ_ENTRY(hset_elem) next; - size_t nalloc; - struct lsxpack_header xhdr; -}; - - -STAILQ_HEAD(hset, hset_elem); - -static void -hset_dump (const struct hset *, FILE *); -static void -hset_destroy (void *hset); -static void -display_cert_chain (lsquic_conn_t *); - - -static void -create_connections (struct http_client_ctx *client_ctx) -{ - size_t len; - FILE *file; - unsigned char sess_resume[0x2000]; - - if (0 == (client_ctx->hcc_flags & HCC_SKIP_SESS_RESUME) - && client_ctx->hcc_sess_resume_file_name) - { - file = fopen(client_ctx->hcc_sess_resume_file_name, "rb"); - if (!file) - { - LSQ_DEBUG("cannot open %s for reading: %s", - client_ctx->hcc_sess_resume_file_name, strerror(errno)); - goto no_file; - } - len = fread(sess_resume, 1, sizeof(sess_resume), file); - if (0 == len && !feof(file)) - LSQ_WARN("error reading %s: %s", - client_ctx->hcc_sess_resume_file_name, strerror(errno)); - fclose(file); - LSQ_INFO("create connection sess_resume %zu bytes", len); - } - else no_file: - len = 0; - - while (client_ctx->hcc_n_open_conns < client_ctx->hcc_concurrency && - client_ctx->hcc_total_n_reqs > 0) - if (0 != prog_connect(client_ctx->prog, len ? sess_resume : NULL, len)) - { - LSQ_ERROR("connection failed"); - exit(EXIT_FAILURE); - } -} - - -static void -create_streams (struct http_client_ctx *client_ctx, lsquic_conn_ctx_t *conn_h) -{ - while (conn_h->ch_n_reqs - conn_h->ch_n_cc_streams && - conn_h->ch_n_cc_streams < client_ctx->hcc_cc_reqs_per_conn) - { - lsquic_conn_make_stream(conn_h->conn); - conn_h->ch_n_cc_streams++; - } -} - - -static lsquic_conn_ctx_t * -http_client_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) -{ - struct http_client_ctx *client_ctx = stream_if_ctx; - lsquic_conn_ctx_t *conn_h = calloc(1, sizeof(*conn_h)); - conn_h->conn = conn; - conn_h->client_ctx = client_ctx; - conn_h->ch_n_reqs = MIN(client_ctx->hcc_total_n_reqs, - client_ctx->hcc_reqs_per_conn); - client_ctx->hcc_total_n_reqs -= conn_h->ch_n_reqs; - ++conn_h->client_ctx->hcc_n_open_conns; - if (!TAILQ_EMPTY(&client_ctx->hcc_path_elems)) - create_streams(client_ctx, conn_h); - conn_h->ch_created = lsquic_time_now(); - return conn_h; -} - - -struct create_another_conn_or_stop_ctx -{ - struct event *event; - struct http_client_ctx *client_ctx; -}; - - -static void -create_another_conn_or_stop (evutil_socket_t sock, short events, void *ctx) -{ - struct create_another_conn_or_stop_ctx *const cacos = ctx; - struct http_client_ctx *const client_ctx = cacos->client_ctx; - - event_del(cacos->event); - event_free(cacos->event); - free(cacos); - - create_connections(client_ctx); - if (0 == client_ctx->hcc_n_open_conns) - { - LSQ_INFO("All connections are closed: stop engine"); - prog_stop(client_ctx->prog); - } -} - - -static void -http_client_on_conn_closed (lsquic_conn_t *conn) -{ - lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); - struct create_another_conn_or_stop_ctx *cacos; - enum LSQUIC_CONN_STATUS status; - struct event_base *eb; - char errmsg[80]; - - status = lsquic_conn_status(conn, errmsg, sizeof(errmsg)); - LSQ_INFO("Connection closed. Status: %d. Message: %s", status, - errmsg[0] ? errmsg : ""); - if (conn_h->client_ctx->hcc_flags & HCC_ABORT_ON_INCOMPLETE) - { - if (!(conn_h->client_ctx->hcc_flags & HCC_SEEN_FIN)) - { - LSQ_INFO("abort incomplete connection"); - exit(1); - } - } - --conn_h->client_ctx->hcc_n_open_conns; - - cacos = calloc(1, sizeof(*cacos)); - if (!cacos) - { - LSQ_ERROR("cannot allocate cacos"); - exit(1); - } - eb = prog_eb(conn_h->client_ctx->prog); - cacos->client_ctx = conn_h->client_ctx; - cacos->event = event_new(eb, -1, 0, create_another_conn_or_stop, cacos); - if (!cacos->event) - { - LSQ_ERROR("cannot allocate event"); - exit(1); - } - if (0 != event_add(cacos->event, NULL)) - { - LSQ_ERROR("cannot add cacos event"); - exit(1); - } - event_active(cacos->event, 0, 0); - - lsquic_conn_set_ctx(conn, NULL); - free(conn_h); -} - - -static int -hsk_status_ok (enum lsquic_hsk_status status) -{ - return status == LSQ_HSK_OK || status == LSQ_HSK_RESUMED_OK; -} - - -static void -http_client_on_hsk_done (lsquic_conn_t *conn, enum lsquic_hsk_status status) -{ - lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); - struct http_client_ctx *client_ctx = conn_h->client_ctx; - - if (hsk_status_ok(status)) - LSQ_INFO("handshake success %s", - status == LSQ_HSK_RESUMED_OK ? "(session resumed)" : ""); - else if (status == LSQ_HSK_FAIL) - LSQ_INFO("handshake failed"); - else if (status == LSQ_HSK_RESUMED_FAIL) - { - LSQ_INFO("handshake failed because of session resumption, will retry " - "without it"); - client_ctx->hcc_flags |= HCC_SKIP_SESS_RESUME; - ++client_ctx->hcc_concurrency; - ++client_ctx->hcc_total_n_reqs; - } - else - assert(0); - - if (hsk_status_ok(status) && s_display_cert_chain) - display_cert_chain(conn); - - if (hsk_status_ok(status)) - { - conn_h = lsquic_conn_get_ctx(conn); - ++s_stat_conns_ok; - update_sample_stats(&s_stat_to_conn, - lsquic_time_now() - conn_h->ch_created); - if (TAILQ_EMPTY(&client_ctx->hcc_path_elems)) - { - LSQ_INFO("no paths mode: close connection"); - lsquic_conn_close(conn_h->conn); - } - } - else - ++s_stat_conns_failed; -} - - -/* Now only used for gQUIC and will be going away after that */ -static void -http_client_on_sess_resume_info (lsquic_conn_t *conn, const unsigned char *buf, - size_t bufsz) -{ - lsquic_conn_ctx_t *const conn_h = lsquic_conn_get_ctx(conn); - struct http_client_ctx *const client_ctx = conn_h->client_ctx; - FILE *file; - size_t nw; - - assert(client_ctx->hcc_sess_resume_file_name); - - /* Our client is rather limited: only one file and only one ticket per - * connection can be saved. - */ - if (conn_h->ch_flags & CH_SESSION_RESUME_SAVED) - { - LSQ_DEBUG("session resumption information already saved for this " - "connection"); - return; - } - - file = fopen(client_ctx->hcc_sess_resume_file_name, "wb"); - if (!file) - { - LSQ_WARN("cannot open %s for writing: %s", - client_ctx->hcc_sess_resume_file_name, strerror(errno)); - return; - } - - nw = fwrite(buf, 1, bufsz, file); - if (nw == bufsz) - { - LSQ_DEBUG("wrote %zd bytes of session resumption information to %s", - nw, client_ctx->hcc_sess_resume_file_name); - conn_h->ch_flags |= CH_SESSION_RESUME_SAVED; - } - else - LSQ_WARN("error: fwrite(%s) returns %zd instead of %zd: %s", - client_ctx->hcc_sess_resume_file_name, nw, bufsz, strerror(errno)); - - fclose(file); -} - - -struct lsquic_stream_ctx { - lsquic_stream_t *stream; - struct http_client_ctx *client_ctx; - const char *path; - enum { - HEADERS_SENT = (1 << 0), - PROCESSED_HEADERS = 1 << 1, - ABANDON = 1 << 2, /* Abandon reading from stream after sh_stop bytes - * have been read. - */ - } sh_flags; - lsquic_time_t sh_created; - lsquic_time_t sh_ttfb; - size_t sh_stop; /* Stop after reading this many bytes if ABANDON is set */ - size_t sh_nread; /* Number of bytes read from stream using one of - * lsquic_stream_read* functions. - */ - unsigned count; - FILE *download_fh; - struct lsquic_reader reader; -}; - - -static lsquic_stream_ctx_t * -http_client_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) -{ - const int pushed = lsquic_stream_is_pushed(stream); - - if (pushed) - { - LSQ_INFO("not accepting server push"); - lsquic_stream_refuse_push(stream); - return NULL; - } - - lsquic_stream_ctx_t *st_h = calloc(1, sizeof(*st_h)); - st_h->stream = stream; - st_h->client_ctx = stream_if_ctx; - st_h->sh_created = lsquic_time_now(); - if (st_h->client_ctx->hcc_cur_pe) - { - st_h->client_ctx->hcc_cur_pe = TAILQ_NEXT( - st_h->client_ctx->hcc_cur_pe, next_pe); - if (!st_h->client_ctx->hcc_cur_pe) /* Wrap around */ - st_h->client_ctx->hcc_cur_pe = - TAILQ_FIRST(&st_h->client_ctx->hcc_path_elems); - } - else - st_h->client_ctx->hcc_cur_pe = TAILQ_FIRST( - &st_h->client_ctx->hcc_path_elems); - st_h->path = st_h->client_ctx->hcc_cur_pe->path; - if (st_h->client_ctx->payload) - { - st_h->reader.lsqr_read = test_reader_read; - st_h->reader.lsqr_size = test_reader_size; - st_h->reader.lsqr_ctx = create_lsquic_reader_ctx(st_h->client_ctx->payload); - if (!st_h->reader.lsqr_ctx) - exit(1); - } - else - st_h->reader.lsqr_ctx = NULL; - LSQ_INFO("created new stream, path: %s", st_h->path); - lsquic_stream_wantwrite(stream, 1); - if (randomly_reprioritize_streams) - { - if ((1 << lsquic_conn_quic_version(lsquic_stream_conn(stream))) - & LSQUIC_IETF_VERSIONS) - lsquic_stream_set_http_prio(stream, - &(struct lsquic_ext_http_prio){ - .urgency = random() & 7, - .incremental = random() & 1, - } - ); - else - lsquic_stream_set_priority(stream, 1 + (random() & 0xFF)); - } - if (s_priority_specs) - maybe_perform_priority_actions(stream, st_h); - if (s_abandon_early) - { - st_h->sh_stop = random() % (s_abandon_early + 1); - st_h->sh_flags |= ABANDON; - } - - if (st_h->client_ctx->hcc_download_dir) - { - char path[PATH_MAX]; - snprintf(path, sizeof(path), "%s/%s", - st_h->client_ctx->hcc_download_dir, st_h->path); - st_h->download_fh = fopen(path, "wb"); - if (st_h->download_fh) - LSQ_NOTICE("downloading %s to %s", st_h->path, path); - else - { - LSQ_ERROR("cannot open %s for writing: %s", path, strerror(errno)); - lsquic_stream_close(stream); - } - } - else - st_h->download_fh = NULL; - - return st_h; -} - - -static void -send_headers (lsquic_stream_ctx_t *st_h) -{ - const char *hostname = st_h->client_ctx->hostname; - struct header_buf hbuf; - unsigned h_idx = 0; - if (!hostname) - hostname = st_h->client_ctx->prog->prog_hostname; - hbuf.off = 0; - struct lsxpack_header headers_arr[10]; -#define V(v) (v), strlen(v) - header_set_ptr(&headers_arr[h_idx++], &hbuf, V(":method"), V(st_h->client_ctx->method)); - header_set_ptr(&headers_arr[h_idx++], &hbuf, V(":scheme"), V("https")); - header_set_ptr(&headers_arr[h_idx++], &hbuf, V(":path"), V(st_h->path)); - header_set_ptr(&headers_arr[h_idx++], &hbuf, V(":authority"), V(hostname)); - header_set_ptr(&headers_arr[h_idx++], &hbuf, V("user-agent"), V(st_h->client_ctx->prog->prog_settings.es_ua)); - //header_set_ptr(&headers_arr[h_idx++], &hbuf, V("expect"), V("100-continue")); - if (randomly_reprioritize_streams) - { - char pfv[10]; - sprintf(pfv, "u=%ld", random() & 7); - header_set_ptr(&headers_arr[h_idx++], &hbuf, V("priority"), V(pfv)); - if (random() & 1) - sprintf(pfv, "i"); - else - sprintf(pfv, "i=?0"); - header_set_ptr(&headers_arr[h_idx++], &hbuf, V("priority"), V(pfv)); - } - if (st_h->client_ctx->payload) - { - header_set_ptr(&headers_arr[h_idx++], &hbuf, V("content-type"), V("application/octet-stream")); - header_set_ptr(&headers_arr[h_idx++], &hbuf, V("content-length"), V( st_h->client_ctx->payload_size)); - } - lsquic_http_headers_t headers = { - .count = h_idx, - .headers = headers_arr, - }; - if (0 != lsquic_stream_send_headers(st_h->stream, &headers, - st_h->client_ctx->payload == NULL)) - { - LSQ_ERROR("cannot send headers: %s", strerror(errno)); - exit(1); - } -} - - -/* This is here to exercise lsquic_conn_get_server_cert_chain() API */ -static void -display_cert_chain (lsquic_conn_t *conn) -{ - STACK_OF(X509) *chain; - X509_NAME *name; - X509 *cert; - unsigned i; - char buf[100]; - - chain = lsquic_conn_get_server_cert_chain(conn); - if (!chain) - { - LSQ_WARN("could not get server certificate chain"); - return; - } - - for (i = 0; i < sk_X509_num(chain); ++i) - { - cert = sk_X509_value(chain, i); - name = X509_get_subject_name(cert); - LSQ_INFO("cert #%u: name: %s", i, - X509_NAME_oneline(name, buf, sizeof(buf))); - X509_free(cert); - } - - sk_X509_free(chain); -} - - -static void -http_client_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - ssize_t nw; - - if (st_h->sh_flags & HEADERS_SENT) - { - if (st_h->client_ctx->payload && test_reader_size(st_h->reader.lsqr_ctx) > 0) - { - nw = lsquic_stream_writef(stream, &st_h->reader); - if (nw < 0) - { - LSQ_ERROR("write error: %s", strerror(errno)); - exit(1); - } - if (test_reader_size(st_h->reader.lsqr_ctx) > 0) - { - lsquic_stream_wantwrite(stream, 1); - } - else - { - lsquic_stream_shutdown(stream, 1); - lsquic_stream_wantread(stream, 1); - } - } - else - { - lsquic_stream_shutdown(stream, 1); - lsquic_stream_wantread(stream, 1); - } - } - else - { - st_h->sh_flags |= HEADERS_SENT; - send_headers(st_h); - } -} - - -static size_t -discard (void *ctx, const unsigned char *buf, size_t sz, int fin) -{ - lsquic_stream_ctx_t *st_h = ctx; - - if (st_h->sh_flags & ABANDON) - { - if (sz > st_h->sh_stop - st_h->sh_nread) - sz = st_h->sh_stop - st_h->sh_nread; - } - - return sz; -} - - -static void -maybe_perform_priority_actions (struct lsquic_stream *stream, - lsquic_stream_ctx_t *st_h) -{ - const lsquic_stream_id_t stream_id = lsquic_stream_id(stream); - struct priority_spec *spec; - unsigned n_active; - int s; - - n_active = 0; - for (spec = s_priority_specs; spec < s_priority_specs + s_n_prio_specs; - ++spec) - { - if ((spec->flags & PRIORITY_SPEC_ACTIVE) - && spec->stream_id == stream_id - && st_h->sh_nread >= spec->nread) - { - s = lsquic_stream_set_http_prio(stream, &spec->ehp); - if (s != 0) - { - LSQ_ERROR("could not apply priorities to stream %"PRIu64, - stream_id); - exit(1); - } - spec->flags &= ~PRIORITY_SPEC_ACTIVE; - } - n_active += !!(spec->flags & PRIORITY_SPEC_ACTIVE); - } - - if (n_active == 0) - s_priority_specs = NULL; -} - - -static void -http_client_on_read (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - struct http_client_ctx *const client_ctx = st_h->client_ctx; - struct hset *hset; - ssize_t nread; - unsigned old_prio, new_prio; - unsigned char buf[0x200]; - unsigned nreads = 0; -#ifdef WIN32 - srand(GetTickCount()); -#endif - - do - { - if (g_header_bypass && !(st_h->sh_flags & PROCESSED_HEADERS)) - { - hset = lsquic_stream_get_hset(stream); - if (!hset) - { - LSQ_ERROR("could not get header set from stream"); - exit(2); - } - st_h->sh_ttfb = lsquic_time_now(); - update_sample_stats(&s_stat_ttfb, st_h->sh_ttfb - st_h->sh_created); - if (s_discard_response) - LSQ_DEBUG("discard response: do not dump headers"); - else - hset_dump(hset, stdout); - hset_destroy(hset); - st_h->sh_flags |= PROCESSED_HEADERS; - } - else if (nread = (s_discard_response - ? lsquic_stream_readf(stream, discard, st_h) - : lsquic_stream_read(stream, buf, - st_h->sh_flags & ABANDON - ? MIN(sizeof(buf), st_h->sh_nread - st_h->sh_stop) - : sizeof(buf))), - nread > 0) - { - st_h->sh_nread += (size_t) nread; - s_stat_downloaded_bytes += nread; -#if LSQUIC_QIR - /* test stream_reset after some number of read bytes */ - if (client_ctx->hcc_reset_after_nbytes && - s_stat_downloaded_bytes > client_ctx->hcc_reset_after_nbytes) - { - lsquic_stream_maybe_reset(stream, 0x1, 1); - break; - } - /* test retire_cid after some number of read bytes */ - if (client_ctx->hcc_retire_cid_after_nbytes && - s_stat_downloaded_bytes > client_ctx->hcc_retire_cid_after_nbytes) - { - lsquic_conn_retire_cid(lsquic_stream_conn(stream)); - client_ctx->hcc_retire_cid_after_nbytes = 0; - break; - } -#endif - if (!g_header_bypass && !(st_h->sh_flags & PROCESSED_HEADERS)) - { - /* First read is assumed to be the first byte */ - st_h->sh_ttfb = lsquic_time_now(); - update_sample_stats(&s_stat_ttfb, - st_h->sh_ttfb - st_h->sh_created); - st_h->sh_flags |= PROCESSED_HEADERS; - } - if (!s_discard_response) - fwrite(buf, 1, nread, st_h->download_fh - ? st_h->download_fh : stdout); - if (randomly_reprioritize_streams && (st_h->count++ & 0x3F) == 0) - { - if ((1 << lsquic_conn_quic_version(lsquic_stream_conn(stream))) - & LSQUIC_IETF_VERSIONS) - { - struct lsquic_ext_http_prio ehp; - if (0 == lsquic_stream_get_http_prio(stream, &ehp)) - { - ehp.urgency = 7 & (ehp.urgency + 1); - ehp.incremental = !ehp.incremental; -#ifndef NDEBUG - const int s = -#endif - lsquic_stream_set_http_prio(stream, &ehp); - assert(s == 0); - } - } - else - { - old_prio = lsquic_stream_priority(stream); - new_prio = 1 + (random() & 0xFF); -#ifndef NDEBUG - const int s = -#endif - lsquic_stream_set_priority(stream, new_prio); - assert(s == 0); - LSQ_DEBUG("changed stream %"PRIu64" priority from %u to %u", - lsquic_stream_id(stream), old_prio, new_prio); - } - } - if (s_priority_specs) - maybe_perform_priority_actions(stream, st_h); - if ((st_h->sh_flags & ABANDON) && st_h->sh_nread >= st_h->sh_stop) - { - LSQ_DEBUG("closing stream early having read %zd bytes", - st_h->sh_nread); - lsquic_stream_close(stream); - break; - } - } - else if (0 == nread) - { - update_sample_stats(&s_stat_req, lsquic_time_now() - st_h->sh_ttfb); - client_ctx->hcc_flags |= HCC_SEEN_FIN; - lsquic_stream_shutdown(stream, 0); - break; - } - else if (client_ctx->prog->prog_settings.es_rw_once && EWOULDBLOCK == errno) - { - LSQ_NOTICE("emptied the buffer in 'once' mode"); - break; - } - else if (lsquic_stream_is_rejected(stream)) - { - LSQ_NOTICE("stream was rejected"); - lsquic_stream_close(stream); - break; - } - else - { - LSQ_ERROR("could not read: %s", strerror(errno)); - exit(2); - } - } - while (client_ctx->prog->prog_settings.es_rw_once - && nreads++ < 3 /* Emulate just a few reads */); -} - - -static void -http_client_on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - const int pushed = lsquic_stream_is_pushed(stream); - if (pushed) - { - assert(NULL == st_h); - return; - } - - LSQ_INFO("%s called", __func__); - struct http_client_ctx *const client_ctx = st_h->client_ctx; - lsquic_conn_t *conn = lsquic_stream_conn(stream); - lsquic_conn_ctx_t *const conn_h = lsquic_conn_get_ctx(conn); - --conn_h->ch_n_reqs; - --conn_h->ch_n_cc_streams; - if (0 == conn_h->ch_n_reqs) - { - LSQ_INFO("all requests completed, closing connection"); - lsquic_conn_close(conn_h->conn); - } - else - { - LSQ_INFO("%u active stream, %u request remain, creating %u new stream", - conn_h->ch_n_cc_streams, - conn_h->ch_n_reqs - conn_h->ch_n_cc_streams, - MIN((conn_h->ch_n_reqs - conn_h->ch_n_cc_streams), - (client_ctx->hcc_cc_reqs_per_conn - conn_h->ch_n_cc_streams))); - create_streams(client_ctx, conn_h); - } - if (st_h->reader.lsqr_ctx) - destroy_lsquic_reader_ctx(st_h->reader.lsqr_ctx); - if (st_h->download_fh) - fclose(st_h->download_fh); - free(st_h); -} - - -static struct lsquic_stream_if http_client_if = { - .on_new_conn = http_client_on_new_conn, - .on_conn_closed = http_client_on_conn_closed, - .on_new_stream = http_client_on_new_stream, - .on_read = http_client_on_read, - .on_write = http_client_on_write, - .on_close = http_client_on_close, - .on_hsk_done = http_client_on_hsk_done, -}; - - -/* XXX This function assumes we can send the request in one shot. This is - * not a realistic assumption to make in general, but will work for our - * limited use case (QUIC Interop Runner). - */ -static void -hq_client_on_write (struct lsquic_stream *stream, lsquic_stream_ctx_t *st_h) -{ - if (st_h->client_ctx->payload) - { - LSQ_ERROR("payload is not supported in HQ client"); - lsquic_stream_close(stream); - return; - } - - lsquic_stream_write(stream, "GET ", 4); - lsquic_stream_write(stream, st_h->path, strlen(st_h->path)); - lsquic_stream_write(stream, "\r\n", 2); - lsquic_stream_shutdown(stream, 1); - lsquic_stream_wantread(stream, 1); -} - - -static size_t -hq_client_print_to_file (void *user_data, const unsigned char *buf, - size_t buf_len, int fin_unused) -{ - fwrite(buf, 1, buf_len, user_data); - return buf_len; -} - - -static void -hq_client_on_read (struct lsquic_stream *stream, lsquic_stream_ctx_t *st_h) -{ - FILE *out = st_h->download_fh ? st_h->download_fh : stdout; - ssize_t nread; - - nread = lsquic_stream_readf(stream, hq_client_print_to_file, out); - if (nread <= 0) - { - if (nread < 0) - LSQ_WARN("error reading response for %s: %s", st_h->path, - strerror(errno)); - lsquic_stream_close(stream); - } -} - - -/* The "hq" set of callbacks differs only in the read and write routines */ -static struct lsquic_stream_if hq_client_if = { - .on_new_conn = http_client_on_new_conn, - .on_conn_closed = http_client_on_conn_closed, - .on_new_stream = http_client_on_new_stream, - .on_read = hq_client_on_read, - .on_write = hq_client_on_write, - .on_close = http_client_on_close, -}; - - -static void -usage (const char *prog) -{ - const char *const slash = strrchr(prog, '/'); - if (slash) - prog = slash + 1; - printf( -"Usage: %s [opts]\n" -"\n" -"Options:\n" -" -p PATH Path to request. May be specified more than once. If no\n" -" path is specified, the connection is closed as soon as\n" -" handshake succeeds.\n" -" -n CONNS Number of concurrent connections. Defaults to 1.\n" -" -r NREQS Total number of requests to send. Defaults to 1.\n" -" -R MAXREQS Maximum number of requests per single connection. Some\n" -" connections will have fewer requests than this.\n" -" -w CONCUR Number of concurrent requests per single connection.\n" -" Defaults to 1.\n" -" -M METHOD Method. Defaults to GET.\n" -" -P PAYLOAD Name of the file that contains payload to be used in the\n" -" request. This adds two more headers to the request:\n" -" content-type: application/octet-stream and\n" -" content-length\n" -" -K Discard server response\n" -" -B Header bypass\n" -" -I Abort on incomplete reponse from server\n" -" -4 Prefer IPv4 when resolving hostname\n" -" -6 Prefer IPv6 when resolving hostname\n" -#ifndef WIN32 -" -C DIR Certificate store. If specified, server certificate will\n" -" be verified.\n" -#endif -" -a Display server certificate chain after successful handshake.\n" -" -b N_BYTES Send RESET_STREAM frame after the client has read n bytes.\n" -" -t Print stats to stdout.\n" -" -T FILE Print stats to FILE. If FILE is -, print stats to stdout.\n" -" -q FILE QIF mode: issue requests from the QIF file and validate\n" -" server responses.\n" -" -e TOKEN Hexadecimal string representing resume token.\n" -" -3 MAX Close stream after reading at most MAX bytes. The actual\n" -" number of bytes read is randominzed.\n" -" -9 SPEC Priority specification. May be specified several times.\n" -" SPEC takes the form stream_id:nread:UI, where U is\n" -" urgency and I is incremental. Matched \\d+:\\d+:[0-7][01]\n" -" -7 DIR Save fetched resources into this directory.\n" -" -Q ALPN Use hq ALPN. Specify, for example, \"h3-29\".\n" - , prog); -} - - -#ifndef WIN32 -static X509_STORE *store; - -/* Windows does not have regex... */ -static int -ends_in_pem (const char *s) -{ - int len; - - len = strlen(s); - - return len >= 4 - && 0 == strcasecmp(s + len - 4, ".pem"); -} - - -static X509 * -file2cert (const char *path) -{ - X509 *cert = NULL; - BIO *in; - - in = BIO_new(BIO_s_file()); - if (!in) - goto end; - - if (BIO_read_filename(in, path) <= 0) - goto end; - - cert = PEM_read_bio_X509_AUX(in, NULL, NULL, NULL); - - end: - BIO_free(in); - return cert; -} - - -static int -init_x509_cert_store (const char *path) -{ - struct dirent *ent; - X509 *cert; - DIR *dir; - char file_path[NAME_MAX]; - int ret; - - dir = opendir(path); - if (!dir) - { - LSQ_WARN("Cannot open directory `%s': %s", path, strerror(errno)); - return -1; - } - - store = X509_STORE_new(); - - while ((ent = readdir(dir))) - { - if (ends_in_pem(ent->d_name)) - { - ret = snprintf(file_path, sizeof(file_path), "%s/%s", - path, ent->d_name); - if (ret < 0) - { - LSQ_WARN("file_path formatting error %s", strerror(errno)); - continue; - } - else if ((unsigned)ret >= sizeof(file_path)) - { - LSQ_WARN("file_path was truncated %s", strerror(errno)); - continue; - } - cert = file2cert(file_path); - if (cert) - { - if (1 != X509_STORE_add_cert(store, cert)) - LSQ_WARN("could not add cert from %s", file_path); - } - else - LSQ_WARN("could not read cert from %s", file_path); - } - } - (void) closedir(dir); - return 0; -} - - -static int -verify_server_cert (void *ctx, STACK_OF(X509) *chain) -{ - X509_STORE_CTX *store_ctx = NULL; - X509 *cert; - int ver; - - if (!store) - { - if (0 != init_x509_cert_store(ctx)) - return -1; - } - - store_ctx = X509_STORE_CTX_new(); - if (!store_ctx) - return -1; - - cert = sk_X509_shift(chain); - X509_STORE_CTX_init(store_ctx, store, cert, chain); - - ver = X509_verify_cert(store_ctx); - - X509_STORE_CTX_free(store_ctx); - - if (ver != 1) - LSQ_WARN("could not verify server certificate"); - - return ver == 1 ? 0 : -1; -} -#endif - - -static void * -hset_create (void *hsi_ctx, lsquic_stream_t *stream, int is_push_promise) -{ - struct hset *hset; - - if ((hset = malloc(sizeof(*hset)))) - { - STAILQ_INIT(hset); - return hset; - } - else - return NULL; -} - - -static struct lsxpack_header * -hset_prepare_decode (void *hset_p, struct lsxpack_header *xhdr, - size_t req_space) -{ - struct hset *const hset = hset_p; - struct hset_elem *el; - char *buf; - - if (0 == req_space) - req_space = 0x100; - - if (req_space > LSXPACK_MAX_STRLEN) - { - LSQ_WARN("requested space for header is too large: %zd bytes", - req_space); - return NULL; - } - - if (!xhdr) - { - buf = malloc(req_space); - if (!buf) - { - LSQ_WARN("cannot allocate buf of %zd bytes", req_space); - return NULL; - } - el = malloc(sizeof(*el)); - if (!el) - { - LSQ_WARN("cannot allocate hset_elem"); - free(buf); - return NULL; - } - STAILQ_INSERT_TAIL(hset, el, next); - lsxpack_header_prepare_decode(&el->xhdr, buf, 0, req_space); - el->nalloc = req_space; - } - else - { - el = (struct hset_elem *) ((char *) xhdr - - offsetof(struct hset_elem, xhdr)); - if (req_space <= el->nalloc) - { - LSQ_ERROR("requested space is smaller than already allocated"); - return NULL; - } - if (req_space < el->nalloc * 2) - req_space = el->nalloc * 2; - buf = realloc(el->xhdr.buf, req_space); - if (!buf) - { - LSQ_WARN("cannot reallocate hset buf"); - return NULL; - } - el->xhdr.buf = buf; - el->xhdr.val_len = req_space; - el->nalloc = req_space; - } - - return &el->xhdr; -} - - -static int -hset_add_header (void *hset_p, struct lsxpack_header *xhdr) -{ - unsigned name_len, value_len; - /* Not much to do: the header value are in xhdr */ - - if (xhdr) - { - name_len = xhdr->name_len; - value_len = xhdr->val_len; - s_stat_downloaded_bytes += name_len + value_len + 4; /* ": \r\n" */ - } - else - s_stat_downloaded_bytes += 2; /* \r\n "*/ - - return 0; -} - - -static void -hset_destroy (void *hset_p) -{ - struct hset *hset = hset_p; - struct hset_elem *el, *next; - - for (el = STAILQ_FIRST(hset); el; el = next) - { - next = STAILQ_NEXT(el, next); - free(el->xhdr.buf); - free(el); - } - free(hset); -} - - -static void -hset_dump (const struct hset *hset, FILE *out) -{ - const struct hset_elem *el; - - STAILQ_FOREACH(el, hset, next) - if (el->xhdr.flags & (LSXPACK_HPACK_VAL_MATCHED|LSXPACK_QPACK_IDX)) - fprintf(out, "%.*s (%s static table idx %u): %.*s\n", - (int) el->xhdr.name_len, lsxpack_header_get_name(&el->xhdr), - el->xhdr.flags & LSXPACK_HPACK_VAL_MATCHED ? "hpack" : "qpack", - el->xhdr.flags & LSXPACK_HPACK_VAL_MATCHED ? el->xhdr.hpack_index - : el->xhdr.qpack_index, - (int) el->xhdr.val_len, lsxpack_header_get_value(&el->xhdr)); - else - fprintf(out, "%.*s: %.*s\n", - (int) el->xhdr.name_len, lsxpack_header_get_name(&el->xhdr), - (int) el->xhdr.val_len, lsxpack_header_get_value(&el->xhdr)); - - fprintf(out, "\n"); - fflush(out); -} - - -/* These are basic and for illustration purposes only. You will want to - * do your own verification by doing something similar to what is done - * in src/liblsquic/lsquic_http1x_if.c - */ -static const struct lsquic_hset_if header_bypass_api = -{ - .hsi_create_header_set = hset_create, - .hsi_prepare_decode = hset_prepare_decode, - .hsi_process_header = hset_add_header, - .hsi_discard_header_set = hset_destroy, -}; - - -static void -display_stat (FILE *out, const struct sample_stats *stats, const char *name) -{ - long double mean, stddev; - - calc_sample_stats(stats, &mean, &stddev); - fprintf(out, "%s: n: %u; min: %.2Lf ms; max: %.2Lf ms; mean: %.2Lf ms; " - "sd: %.2Lf ms\n", name, stats->n, (long double) stats->min / 1000, - (long double) stats->max / 1000, mean / 1000, stddev / 1000); -} - - -static lsquic_conn_ctx_t * -qif_client_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) -{ - lsquic_conn_make_stream(conn); - return stream_if_ctx; -} - - -static void -qif_client_on_conn_closed (lsquic_conn_t *conn) -{ - struct http_client_ctx *client_ctx = (void *) lsquic_conn_get_ctx(conn); - LSQ_INFO("connection is closed: stop engine"); - prog_stop(client_ctx->prog); - lsquic_conn_set_ctx(conn, NULL); -} - - -struct qif_stream_ctx -{ - int reqno; - struct lsquic_http_headers headers; - char *qif_str; - size_t qif_sz; - size_t qif_off; - char *resp_str; /* qif_sz allocated */ - size_t resp_off; /* Read so far */ - enum { - QSC_HEADERS_SENT = 1 << 0, - QSC_GOT_HEADERS = 1 << 1, - } flags; -}; - -#define MAX(a, b) ((a) > (b) ? (a) : (b)) - -lsquic_stream_ctx_t * -qif_client_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) -{ - struct http_client_ctx *const client_ctx = stream_if_ctx; - FILE *const fh = client_ctx->qif_fh; - struct qif_stream_ctx *ctx; - struct lsxpack_header *header; - static int reqno; - size_t nalloc; - char *end, *tab, *line; - char line_buf[0x1000]; - - ctx = calloc(1, sizeof(*ctx)); - if (!ctx) - { - perror("calloc"); - exit(1); - } - ctx->reqno = reqno++; - - nalloc = 0; - while ((line = fgets(line_buf, sizeof(line_buf), fh))) - { - end = strchr(line, '\n'); - if (!end) - { - fprintf(stderr, "no newline\n"); - exit(1); - } - - if (end == line) - break; - - if (*line == '#') - continue; - - tab = strchr(line, '\t'); - if (!tab) - { - fprintf(stderr, "no TAB\n"); - exit(1); - } - - if (nalloc + (end + 1 - line) > ctx->qif_sz) - { - if (nalloc) - nalloc = MAX(nalloc * 2, nalloc + (end + 1 - line)); - else - nalloc = end + 1 - line; - ctx->qif_str = realloc(ctx->qif_str, nalloc); - if (!ctx->qif_str) - { - perror("realloc"); - exit(1); - } - } - memcpy(ctx->qif_str + ctx->qif_sz, line, end + 1 - line); - - ctx->headers.headers = realloc(ctx->headers.headers, - sizeof(ctx->headers.headers[0]) * (ctx->headers.count + 1)); - if (!ctx->headers.headers) - { - perror("realloc"); - exit(1); - } - header = &ctx->headers.headers[ctx->headers.count++]; - lsxpack_header_set_offset2(header, ctx->qif_str + ctx->qif_sz, 0, - tab - line, tab - line + 1, end - tab - 1); - ctx->qif_sz += end + 1 - line; - } - - lsquic_stream_wantwrite(stream, 1); - - if (!line) - { - LSQ_DEBUG("Input QIF file ends; close file handle"); - fclose(client_ctx->qif_fh); - client_ctx->qif_fh = NULL; - } - - return (void *) ctx; -} - - -static void -qif_client_on_write (struct lsquic_stream *stream, lsquic_stream_ctx_t *h) -{ - struct qif_stream_ctx *const ctx = (void *) h; - size_t towrite; - ssize_t nw; - - if (ctx->flags & QSC_HEADERS_SENT) - { - towrite = ctx->qif_sz - ctx->qif_off; - nw = lsquic_stream_write(stream, ctx->qif_str + ctx->qif_off, towrite); - if (nw >= 0) - { - LSQ_DEBUG("wrote %zd bytes to stream", nw); - ctx->qif_off += nw; - if (ctx->qif_off == (size_t) nw) - { - lsquic_stream_shutdown(stream, 1); - lsquic_stream_wantread(stream, 1); - LSQ_DEBUG("finished writing request %d", ctx->reqno); - } - } - else - { - LSQ_ERROR("cannot write to stream: %s", strerror(errno)); - lsquic_stream_wantwrite(stream, 0); - lsquic_conn_abort(lsquic_stream_conn(stream)); - } - } - else - { - if (0 == lsquic_stream_send_headers(stream, &ctx->headers, 0)) - { - ctx->flags |= QSC_HEADERS_SENT; - LSQ_DEBUG("sent headers"); - } - else - { - LSQ_ERROR("cannot send headers: %s", strerror(errno)); - lsquic_stream_wantwrite(stream, 0); - lsquic_conn_abort(lsquic_stream_conn(stream)); - } - } -} - - -static void -qif_client_on_read (struct lsquic_stream *stream, lsquic_stream_ctx_t *h) -{ - struct qif_stream_ctx *const ctx = (void *) h; - struct hset *hset; - ssize_t nr; - unsigned char buf[1]; - - LSQ_DEBUG("reading response to request %d", ctx->reqno); - - if (!(ctx->flags & QSC_GOT_HEADERS)) - { - hset = lsquic_stream_get_hset(stream); - if (!hset) - { - LSQ_ERROR("could not get header set from stream"); - exit(2); - } - LSQ_DEBUG("got header set for response %d", ctx->reqno); - hset_dump(hset, stdout); - hset_destroy(hset); - ctx->flags |= QSC_GOT_HEADERS; - } - else - { - if (!ctx->resp_str) - { - ctx->resp_str = malloc(ctx->qif_sz); - if (!ctx->resp_str) - { - perror("malloc"); - exit(1); - } - } - if (ctx->resp_off < ctx->qif_sz) - { - nr = lsquic_stream_read(stream, ctx->resp_str + ctx->resp_off, - ctx->qif_sz - ctx->resp_off); - if (nr > 0) - { - ctx->resp_off += nr; - LSQ_DEBUG("read %zd bytes of reponse %d", nr, ctx->reqno); - } - else if (nr == 0) - { - LSQ_INFO("response %d too short", ctx->reqno); - LSQ_WARN("response %d FAIL", ctx->reqno); - lsquic_stream_shutdown(stream, 0); - } - else - { - LSQ_ERROR("error reading from stream"); - lsquic_stream_wantread(stream, 0); - lsquic_conn_abort(lsquic_stream_conn(stream)); - } - } - else - { - /* Collect EOF */ - nr = lsquic_stream_read(stream, buf, sizeof(buf)); - if (nr == 0) - { - if (0 == memcmp(ctx->qif_str, ctx->resp_str, ctx->qif_sz)) - LSQ_INFO("response %d OK", ctx->reqno); - else - LSQ_WARN("response %d FAIL", ctx->reqno); - lsquic_stream_shutdown(stream, 0); - } - else if (nr > 0) - { - LSQ_INFO("response %d too long", ctx->reqno); - LSQ_WARN("response %d FAIL", ctx->reqno); - lsquic_stream_shutdown(stream, 0); - } - else - { - LSQ_ERROR("error reading from stream"); - lsquic_stream_shutdown(stream, 0); - lsquic_conn_abort(lsquic_stream_conn(stream)); - } - } - } -} - - -static void -qif_client_on_close (struct lsquic_stream *stream, lsquic_stream_ctx_t *h) -{ - struct lsquic_conn *conn = lsquic_stream_conn(stream); - struct http_client_ctx *client_ctx = (void *) lsquic_conn_get_ctx(conn); - struct qif_stream_ctx *const ctx = (void *) h; - free(ctx->qif_str); - free(ctx->resp_str); - free(ctx->headers.headers); - free(ctx); - if (client_ctx->qif_fh) - lsquic_conn_make_stream(conn); - else - lsquic_conn_close(conn); -} - - -const struct lsquic_stream_if qif_client_if = { - .on_new_conn = qif_client_on_new_conn, - .on_conn_closed = qif_client_on_conn_closed, - .on_new_stream = qif_client_on_new_stream, - .on_read = qif_client_on_read, - .on_write = qif_client_on_write, - .on_close = qif_client_on_close, -}; - - -int -main (int argc, char **argv) -{ - int opt, s, was_empty; - lsquic_time_t start_time; - FILE *stats_fh = NULL; - long double elapsed; - struct http_client_ctx client_ctx; - struct stat st; - struct path_elem *pe; - struct sport_head sports; - struct prog prog; - const char *token = NULL; - struct priority_spec *priority_specs = NULL; - - TAILQ_INIT(&sports); - memset(&client_ctx, 0, sizeof(client_ctx)); - TAILQ_INIT(&client_ctx.hcc_path_elems); - client_ctx.method = "GET"; - client_ctx.hcc_concurrency = 1; - client_ctx.hcc_cc_reqs_per_conn = 1; - client_ctx.hcc_reqs_per_conn = 1; - client_ctx.hcc_total_n_reqs = 1; - client_ctx.hcc_reset_after_nbytes = 0; - client_ctx.hcc_retire_cid_after_nbytes = 0; - client_ctx.prog = &prog; - - prog_init(&prog, LSENG_HTTP, &sports, &http_client_if, &client_ctx); - - while (-1 != (opt = getopt(argc, argv, PROG_OPTS - "46Br:R:IKu:EP:M:n:w:H:p:0:q:e:hatT:b:d:" - "3:" /* 3 is 133+ for "e" ("e" for "early") */ - "9:" /* 9 sort of looks like P... */ - "7:" /* Download directory */ - "Q:" /* ALPN, e.g. h3-29 */ -#ifndef WIN32 - "C:" -#endif - ))) - { - switch (opt) { - case 'a': - ++s_display_cert_chain; - break; - case '4': - case '6': - prog.prog_ipver = opt - '0'; - break; - case 'B': - g_header_bypass = 1; - prog.prog_api.ea_hsi_if = &header_bypass_api; - prog.prog_api.ea_hsi_ctx = NULL; - break; - case 'I': - client_ctx.hcc_flags |= HCC_ABORT_ON_INCOMPLETE; - break; - case 'K': - ++s_discard_response; - break; - case 'u': /* Accept psh promise */ - promise_fd = open(optarg, O_WRONLY|O_CREAT|O_TRUNC, 0644); - if (promise_fd < 0) - { - perror("open"); - exit(1); - } - prog.prog_settings.es_support_push = 1; /* Pokes into prog */ - break; - case 'E': /* E: randomly reprioritize strams. Now, that's - * pretty random. :) - */ - srand((uintptr_t) argv); - randomly_reprioritize_streams = 1; - break; - case 'n': - client_ctx.hcc_concurrency = atoi(optarg); - break; - case 'w': - client_ctx.hcc_cc_reqs_per_conn = atoi(optarg); - break; - case 'P': - client_ctx.payload = optarg; - if (0 != stat(optarg, &st)) - { - perror("stat"); - exit(2); - } - sprintf(client_ctx.payload_size, "%jd", (intmax_t) st.st_size); - break; - case 'M': - client_ctx.method = optarg; - break; - case 'r': - client_ctx.hcc_total_n_reqs = atoi(optarg); - break; - case 'R': - client_ctx.hcc_reqs_per_conn = atoi(optarg); - break; - case 'H': - client_ctx.hostname = optarg; - prog.prog_hostname = optarg; /* Pokes into prog */ - break; - case 'p': - pe = calloc(1, sizeof(*pe)); - pe->path = optarg; - TAILQ_INSERT_TAIL(&client_ctx.hcc_path_elems, pe, next_pe); - break; - case 'h': - usage(argv[0]); - prog_print_common_options(&prog, stdout); - exit(0); - case 'q': - client_ctx.qif_file = optarg; - break; - case 'e': - if (TAILQ_EMPTY(&sports)) - token = optarg; - else - sport_set_token(TAILQ_LAST(&sports, sport_head), optarg); - break; -#ifndef WIN32 - case 'C': - prog.prog_api.ea_verify_cert = verify_server_cert; - prog.prog_api.ea_verify_ctx = optarg; - break; -#endif - case 't': - stats_fh = stdout; - break; - case 'T': - if (0 == strcmp(optarg, "-")) - stats_fh = stdout; - else - { - stats_fh = fopen(optarg, "w"); - if (!stats_fh) - { - perror("fopen"); - exit(1); - } - } - break; - case 'b': - client_ctx.hcc_reset_after_nbytes = atoi(optarg); - break; - case 'd': - client_ctx.hcc_retire_cid_after_nbytes = atoi(optarg); - break; - case '0': - http_client_if.on_sess_resume_info = http_client_on_sess_resume_info; - client_ctx.hcc_sess_resume_file_name = optarg; - goto common_opts; - case '3': - s_abandon_early = strtol(optarg, NULL, 10); - break; - case '9': - { - /* Parse priority spec and tack it onto the end of the array */ - lsquic_stream_id_t stream_id; - size_t nread; - struct lsquic_ext_http_prio ehp; - struct priority_spec *new_specs; - stream_id = strtoull(optarg, &optarg, 10); - if (*optarg != ':') - exit(1); - ++optarg; - nread = strtoull(optarg, &optarg, 10); - if (*optarg != ':') - exit(1); - ++optarg; - if (!(*optarg >= '0' && *optarg <= '7')) - exit(1); - ehp.urgency = *optarg++ - '0'; - if (!(*optarg >= '0' && *optarg <= '1')) - exit(1); - ehp.incremental = *optarg++ - '0'; - ++s_n_prio_specs; - new_specs = realloc(priority_specs, - sizeof(priority_specs[0]) * s_n_prio_specs); - if (!new_specs) - { - perror("malloc"); - exit(1); - } - priority_specs = new_specs; - priority_specs[s_n_prio_specs - 1] = (struct priority_spec) { - .flags = PRIORITY_SPEC_ACTIVE, - .stream_id = stream_id, - .nread = nread, - .ehp = ehp, - }; - s_priority_specs = priority_specs; - break; - } - case '7': - client_ctx.hcc_download_dir = optarg; - break; - case 'Q': - /* XXX A bit hacky, as `prog' has already been initialized... */ - prog.prog_engine_flags &= ~LSENG_HTTP; - prog.prog_api.ea_alpn = optarg; - prog.prog_api.ea_stream_if = &hq_client_if; - break; - common_opts: - default: - if (0 != prog_set_opt(&prog, opt, optarg)) - exit(1); - } - } - -#if LSQUIC_CONN_STATS - prog.prog_api.ea_stats_fh = stats_fh; -#endif - prog.prog_settings.es_ua = LITESPEED_ID; - - if (client_ctx.qif_file) - { - client_ctx.qif_fh = fopen(client_ctx.qif_file, "r"); - if (!client_ctx.qif_fh) - { - fprintf(stderr, "Cannot open %s for reading: %s\n", - client_ctx.qif_file, strerror(errno)); - exit(1); - } - LSQ_NOTICE("opened QIF file %s for reading\n", client_ctx.qif_file); - prog.prog_api.ea_stream_if = &qif_client_if; - g_header_bypass = 1; - prog.prog_api.ea_hsi_if = &header_bypass_api; - prog.prog_api.ea_hsi_ctx = NULL; - } - else if (TAILQ_EMPTY(&client_ctx.hcc_path_elems)) - { - fprintf(stderr, "Specify at least one path using -p option\n"); - exit(1); - } - - start_time = lsquic_time_now(); - was_empty = TAILQ_EMPTY(&sports); - if (0 != prog_prep(&prog)) - { - LSQ_ERROR("could not prep"); - exit(EXIT_FAILURE); - } - if (!(client_ctx.hostname || prog.prog_hostname)) - { - fprintf(stderr, "Specify hostname (used for SNI and :authority) via " - "-H option\n"); - exit(EXIT_FAILURE); - } - if (was_empty && token) - sport_set_token(TAILQ_LAST(&sports, sport_head), token); - - if (client_ctx.qif_file) - { - if (0 != prog_connect(&prog, NULL, 0)) - { - LSQ_ERROR("connection failed"); - exit(EXIT_FAILURE); - } - } - else - create_connections(&client_ctx); - - LSQ_DEBUG("entering event loop"); - - s = prog_run(&prog); - - if (stats_fh) - { - elapsed = (long double) (lsquic_time_now() - start_time) / 1000000; - fprintf(stats_fh, "overall statistics as calculated by %s:\n", argv[0]); - display_stat(stats_fh, &s_stat_to_conn, "time for connect"); - display_stat(stats_fh, &s_stat_req, "time for request"); - display_stat(stats_fh, &s_stat_ttfb, "time to 1st byte"); - fprintf(stats_fh, "downloaded %lu application bytes in %.3Lf seconds\n", - s_stat_downloaded_bytes, elapsed); - fprintf(stats_fh, "%.2Lf reqs/sec; %.0Lf bytes/sec\n", - (long double) s_stat_req.n / elapsed, - (long double) s_stat_downloaded_bytes / elapsed); - fprintf(stats_fh, "read handler count %lu\n", prog.prog_read_count); - } - - prog_cleanup(&prog); - if (promise_fd >= 0) - (void) close(promise_fd); - - while ((pe = TAILQ_FIRST(&client_ctx.hcc_path_elems))) - { - TAILQ_REMOVE(&client_ctx.hcc_path_elems, pe, next_pe); - free(pe); - } - - if (client_ctx.qif_fh) - (void) fclose(client_ctx.qif_fh); - - free(priority_specs); - exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); -} diff --git a/external/lsquic/bin/http_server.c b/external/lsquic/bin/http_server.c deleted file mode 100644 index d468c68..0000000 --- a/external/lsquic/bin/http_server.c +++ /dev/null @@ -1,2060 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * http_server.c -- A simple HTTP/QUIC server - * - * It serves up files from the filesystem. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef WIN32 -#include -#include -#include -#else -#include "vc_compat.h" -#include "getopt.h" -#endif - -#include - -#include - -#include "lsquic.h" -#include "../src/liblsquic/lsquic_hash.h" -#include "lsxpack_header.h" -#include "test_config.h" -#include "test_common.h" -#include "test_cert.h" -#include "prog.h" - -#if HAVE_REGEX -#ifndef WIN32 -#include -#else -#include -#endif -#endif - -#include "../src/liblsquic/lsquic_logger.h" -#include "../src/liblsquic/lsquic_int_types.h" -#include "../src/liblsquic/lsquic_util.h" - -#if HAVE_REGEX -static const char on_being_idle[] = -"ON BEING IDLE.\n" -"\n" -"Now, this is a subject on which I flatter myself I really am _au fait_.\n" -"The gentleman who, when I was young, bathed me at wisdom's font for nine\n" -"guineas a term--no extras--used to say he never knew a boy who could\n" -"do less work in more time; and I remember my poor grandmother once\n" -"incidentally observing, in the course of an instruction upon the use\n" -"of the Prayer-book, that it was highly improbable that I should ever do\n" -"much that I ought not to do, but that she felt convinced beyond a doubt\n" -"that I should leave undone pretty well everything that I ought to do.\n" -"\n" -"I am afraid I have somewhat belied half the dear old lady's prophecy.\n" -"Heaven help me! I have done a good many things that I ought not to have\n" -"done, in spite of my laziness. But I have fully confirmed the accuracy\n" -"of her judgment so far as neglecting much that I ought not to have\n" -"neglected is concerned. Idling always has been my strong point. I take\n" -"no credit to myself in the matter--it is a gift. Few possess it. There\n" -"are plenty of lazy people and plenty of slow-coaches, but a genuine\n" -"idler is a rarity. He is not a man who slouches about with his hands in\n" -"his pockets. On the contrary, his most startling characteristic is that\n" -"he is always intensely busy.\n" -"\n" -"It is impossible to enjoy idling thoroughly unless one has plenty of\n" -"work to do. There is no fun in doing nothing when you have nothing to\n" -"do. Wasting time is merely an occupation then, and a most exhausting\n" -"one. Idleness, like kisses, to be sweet must be stolen.\n" -"\n" -"Many years ago, when I was a young man, I was taken very ill--I never\n" -"could see myself that much was the matter with me, except that I had\n" -"a beastly cold. But I suppose it was something very serious, for the\n" -"doctor said that I ought to have come to him a month before, and that\n" -"if it (whatever it was) had gone on for another week he would not have\n" -"answered for the consequences. It is an extraordinary thing, but I\n" -"never knew a doctor called into any case yet but what it transpired\n" -"that another day's delay would have rendered cure hopeless. Our medical\n" -"guide, philosopher, and friend is like the hero in a melodrama--he\n" -"always comes upon the scene just, and only just, in the nick of time. It\n" -"is Providence, that is what it is.\n" -"\n" -"Well, as I was saying, I was very ill and was ordered to Buxton for a\n" -"month, with strict injunctions to do nothing whatever all the while\n" -"that I was there. \"Rest is what you require,\" said the doctor, \"perfect\n" -"rest.\"\n" -"\n" -"It seemed a delightful prospect. \"This man evidently understands my\n" -"complaint,\" said I, and I pictured to myself a glorious time--a four\n" -"weeks' _dolce far niente_ with a dash of illness in it. Not too much\n" -"illness, but just illness enough--just sufficient to give it the flavor\n" -"of suffering and make it poetical. I should get up late, sip chocolate,\n" -"and have my breakfast in slippers and a dressing-gown. I should lie out\n" -"in the garden in a hammock and read sentimental novels with a melancholy\n" -"ending, until the books should fall from my listless hand, and I should\n" -"recline there, dreamily gazing into the deep blue of the firmament,\n" -"watching the fleecy clouds floating like white-sailed ships across\n" -"its depths, and listening to the joyous song of the birds and the low\n" -"rustling of the trees. Or, on becoming too weak to go out of doors,\n" -"I should sit propped up with pillows at the open window of the\n" -"ground-floor front, and look wasted and interesting, so that all the\n" -"pretty girls would sigh as they passed by.\n" -"\n" -"And twice a day I should go down in a Bath chair to the Colonnade to\n" -"drink the waters. Oh, those waters! I knew nothing about them then,\n" -"and was rather taken with the idea. \"Drinking the waters\" sounded\n" -"fashionable and Queen Anne-fied, and I thought I should like them. But,\n" -"ugh! after the first three or four mornings! Sam Weller's description of\n" -"them as \"having a taste of warm flat-irons\" conveys only a faint idea of\n" -"their hideous nauseousness. If anything could make a sick man get well\n" -"quickly, it would be the knowledge that he must drink a glassful of them\n" -"every day until he was recovered. I drank them neat for six consecutive\n" -"days, and they nearly killed me; but after then I adopted the plan of\n" -"taking a stiff glass of brandy-and-water immediately on the top of them,\n" -"and found much relief thereby. I have been informed since, by various\n" -"eminent medical gentlemen, that the alcohol must have entirely\n" -"counteracted the effects of the chalybeate properties contained in the\n" -"water. I am glad I was lucky enough to hit upon the right thing.\n" -"\n" -"But \"drinking the waters\" was only a small portion of the torture I\n" -"experienced during that memorable month--a month which was, without\n" -"exception, the most miserable I have ever spent. During the best part of\n" -"it I religiously followed the doctor's mandate and did nothing whatever,\n" -"except moon about the house and garden and go out for two hours a day in\n" -"a Bath chair. That did break the monotony to a certain extent. There is\n" -"more excitement about Bath-chairing--especially if you are not used to\n" -"the exhilarating exercise--than might appear to the casual observer. A\n" -"sense of danger, such as a mere outsider might not understand, is ever\n" -"present to the mind of the occupant. He feels convinced every minute\n" -"that the whole concern is going over, a conviction which becomes\n" -"especially lively whenever a ditch or a stretch of newly macadamized\n" -"road comes in sight. Every vehicle that passes he expects is going to\n" -"run into him; and he never finds himself ascending or descending a\n" -"hill without immediately beginning to speculate upon his chances,\n" -"supposing--as seems extremely probable--that the weak-kneed controller\n" -"of his destiny should let go.\n" -"\n" -"But even this diversion failed to enliven after awhile, and the _ennui_\n" -"became perfectly unbearable. I felt my mind giving way under it. It is\n" -"not a strong mind, and I thought it would be unwise to tax it too far.\n" -"So somewhere about the twentieth morning I got up early, had a good\n" -"breakfast, and walked straight off to Hayfield, at the foot of the\n" -"Kinder Scout--a pleasant, busy little town, reached through a lovely\n" -"valley, and with two sweetly pretty women in it. At least they were\n" -"sweetly pretty then; one passed me on the bridge and, I think, smiled;\n" -"and the other was standing at an open door, making an unremunerative\n" -"investment of kisses upon a red-faced baby. But it is years ago, and I\n" -"dare say they have both grown stout and snappish since that time.\n" -"Coming back, I saw an old man breaking stones, and it roused such strong\n" -"longing in me to use my arms that I offered him a drink to let me take\n" -"his place. He was a kindly old man and he humored me. I went for those\n" -"stones with the accumulated energy of three weeks, and did more work in\n" -"half an hour than he had done all day. But it did not make him jealous.\n" -"\n" -"Having taken the plunge, I went further and further into dissipation,\n" -"going out for a long walk every morning and listening to the band in\n" -"the pavilion every evening. But the days still passed slowly\n" -"notwithstanding, and I was heartily glad when the last one came and I\n" -"was being whirled away from gouty, consumptive Buxton to London with its\n" -"stern work and life. I looked out of the carriage as we rushed through\n" -"Hendon in the evening. The lurid glare overhanging the mighty city\n" -"seemed to warm my heart, and when, later on, my cab rattled out of St.\n" -"Pancras' station, the old familiar roar that came swelling up around me\n" -"sounded the sweetest music I had heard for many a long day.\n" -"\n" -"I certainly did not enjoy that month's idling. I like idling when I\n" -"ought not to be idling; not when it is the only thing I have to do. That\n" -"is my pig-headed nature. The time when I like best to stand with my\n" -"back to the fire, calculating how much I owe, is when my desk is heaped\n" -"highest with letters that must be answered by the next post. When I like\n" -"to dawdle longest over my dinner is when I have a heavy evening's work\n" -"before me. And if, for some urgent reason, I ought to be up particularly\n" -"early in the morning, it is then, more than at any other time, that I\n" -"love to lie an extra half-hour in bed.\n" -"\n" -"Ah! how delicious it is to turn over and go to sleep again: \"just for\n" -"five minutes.\" Is there any human being, I wonder, besides the hero of\n" -"a Sunday-school \"tale for boys,\" who ever gets up willingly? There\n" -"are some men to whom getting up at the proper time is an utter\n" -"impossibility. If eight o'clock happens to be the time that they should\n" -"turn out, then they lie till half-past. If circumstances change and\n" -"half-past eight becomes early enough for them, then it is nine before\n" -"they can rise. They are like the statesman of whom it was said that he\n" -"was always punctually half an hour late. They try all manner of schemes.\n" -"They buy alarm-clocks (artful contrivances that go off at the wrong time\n" -"and alarm the wrong people). They tell Sarah Jane to knock at the door\n" -"and call them, and Sarah Jane does knock at the door and does call them,\n" -"and they grunt back \"awri\" and then go comfortably to sleep again. I\n" -"knew one man who would actually get out and have a cold bath; and even\n" -"that was of no use, for afterward he would jump into bed again to warm\n" -"himself.\n" -"\n" -"I think myself that I could keep out of bed all right if I once got\n" -"out. It is the wrenching away of the head from the pillow that I find so\n" -"hard, and no amount of over-night determination makes it easier. I say\n" -"to myself, after having wasted the whole evening, \"Well, I won't do\n" -"any more work to-night; I'll get up early to-morrow morning;\" and I am\n" -"thoroughly resolved to do so--then. In the morning, however, I feel less\n" -"enthusiastic about the idea, and reflect that it would have been much\n" -"better if I had stopped up last night. And then there is the trouble of\n" -"dressing, and the more one thinks about that the more one wants to put\n" -"it off.\n" -"\n" -"It is a strange thing this bed, this mimic grave, where we stretch our\n" -"tired limbs and sink away so quietly into the silence and rest. \"O bed,\n" -"O bed, delicious bed, that heaven on earth to the weary head,\" as sang\n" -"poor Hood, you are a kind old nurse to us fretful boys and girls. Clever\n" -"and foolish, naughty and good, you take us all in your motherly lap and\n" -"hush our wayward crying. The strong man full of care--the sick man\n" -"full of pain--the little maiden sobbing for her faithless lover--like\n" -"children we lay our aching heads on your white bosom, and you gently\n" -"soothe us off to by-by.\n" -"\n" -"Our trouble is sore indeed when you turn away and will not comfort us.\n" -"How long the dawn seems coming when we cannot sleep! Oh! those hideous\n" -"nights when we toss and turn in fever and pain, when we lie, like living\n" -"men among the dead, staring out into the dark hours that drift so slowly\n" -"between us and the light. And oh! those still more hideous nights when\n" -"we sit by another in pain, when the low fire startles us every now and\n" -"then with a falling cinder, and the tick of the clock seems a hammer\n" -"beating out the life that we are watching.\n" -"\n" -"But enough of beds and bedrooms. I have kept to them too long, even for\n" -"an idle fellow. Let us come out and have a smoke. That wastes time just\n" -"as well and does not look so bad. Tobacco has been a blessing to us\n" -"idlers. What the civil-service clerk before Sir Walter's time found\n" -"to occupy their minds with it is hard to imagine. I attribute the\n" -"quarrelsome nature of the Middle Ages young men entirely to the want of\n" -"the soothing weed. They had no work to do and could not smoke, and\n" -"the consequence was they were forever fighting and rowing. If, by any\n" -"extraordinary chance, there was no war going, then they got up a deadly\n" -"family feud with the next-door neighbor, and if, in spite of this, they\n" -"still had a few spare moments on their hands, they occupied them with\n" -"discussions as to whose sweetheart was the best looking, the arguments\n" -"employed on both sides being battle-axes, clubs, etc. Questions of taste\n" -"were soon decided in those days. When a twelfth-century youth fell in\n" -"love he did not take three paces backward, gaze into her eyes, and tell\n" -"her she was too beautiful to live. He said he would step outside and see\n" -"about it. And if, when he got out, he met a man and broke his head--the\n" -"other man's head, I mean--then that proved that his--the first\n" -"fellow's--girl was a pretty girl. But if the other fellow broke _his_\n" -"head--not his own, you know, but the other fellow's--the other fellow\n" -"to the second fellow, that is, because of course the other fellow would\n" -"only be the other fellow to him, not the first fellow who--well, if he\n" -"broke his head, then _his_ girl--not the other fellow's, but the fellow\n" -"who _was_ the--Look here, if A broke B's head, then A's girl was a\n" -"pretty girl; but if B broke A's head, then A's girl wasn't a pretty\n" -"girl, but B's girl was. That was their method of conducting art\n" -"criticism.\n" -"\n" -"Nowadays we light a pipe and let the girls fight it out among\n" -"themselves.\n" -"\n" -"They do it very well. They are getting to do all our work. They are\n" -"doctors, and barristers, and artists. They manage theaters, and promote\n" -"swindles, and edit newspapers. I am looking forward to the time when we\n" -"men shall have nothing to do but lie in bed till twelve, read two novels\n" -"a day, have nice little five-o'clock teas all to ourselves, and tax\n" -"our brains with nothing more trying than discussions upon the latest\n" -"patterns in trousers and arguments as to what Mr. Jones' coat was\n" -"made of and whether it fitted him. It is a glorious prospect--for idle\n" -"fellows.\n" -"\n\n\n" -; -static const size_t IDLE_SIZE = sizeof(on_being_idle) - 1; -#endif - -/* This is the "LSWS" mode: first write is performed immediately, outside - * of the on_write() callback. This makes it possible to play with buffered - * packet queues. - */ -static int s_immediate_write; - -/* Use preadv(2) in conjuction with lsquic_stream_pwritev() to reduce - * number of system calls required to read from disk. The actual value - * specifies maximum write size. A negative value indicates always to use - * the remaining file size. - */ -static ssize_t s_pwritev; - -#define MIN(a, b) ((a) < (b) ? (a) : (b)) -#define V(v) (v), strlen(v) - -struct lsquic_conn_ctx; - -static void interop_server_hset_destroy (void *); - - -struct server_ctx { - struct lsquic_conn_ctx *conn_h; - lsquic_engine_t *engine; - const char *document_root; - const char *push_path; - struct sport_head sports; - struct prog *prog; - unsigned max_conn; - unsigned n_conn; - unsigned n_current_conns; - unsigned delay_resp_sec; -}; - -struct lsquic_conn_ctx { - lsquic_conn_t *conn; - struct server_ctx *server_ctx; - enum { - RECEIVED_GOAWAY = 1 << 0, - } flags; -}; - - -static lsquic_conn_ctx_t * -http_server_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) -{ - struct server_ctx *server_ctx = stream_if_ctx; - const char *sni; - - sni = lsquic_conn_get_sni(conn); - LSQ_DEBUG("new connection, SNI: %s", sni ? sni : ""); - - lsquic_conn_ctx_t *conn_h = malloc(sizeof(*conn_h)); - conn_h->conn = conn; - conn_h->server_ctx = server_ctx; - server_ctx->conn_h = conn_h; - ++server_ctx->n_current_conns; - return conn_h; -} - - -static void -http_server_on_goaway (lsquic_conn_t *conn) -{ - lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); - conn_h->flags |= RECEIVED_GOAWAY; - LSQ_INFO("received GOAWAY"); -} - - -static void -http_server_on_conn_closed (lsquic_conn_t *conn) -{ - static int stopped; - lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); - LSQ_INFO("Connection closed"); - --conn_h->server_ctx->n_current_conns; - if ((conn_h->server_ctx->prog->prog_flags & PROG_FLAG_COOLDOWN) - && 0 == conn_h->server_ctx->n_current_conns) - { - if (!stopped) - { - stopped = 1; - prog_stop(conn_h->server_ctx->prog); - } - } - if (conn_h->server_ctx->max_conn > 0) - { - ++conn_h->server_ctx->n_conn; - LSQ_NOTICE("Connection closed, remaining: %d", - conn_h->server_ctx->max_conn - conn_h->server_ctx->n_conn); - if (conn_h->server_ctx->n_conn >= conn_h->server_ctx->max_conn) - { - if (!stopped) - { - stopped = 1; - prog_stop(conn_h->server_ctx->prog); - } - } - } - /* No provision is made to stop HTTP server */ - lsquic_conn_set_ctx(conn, NULL); - free(conn_h); -} - - -struct resp -{ - const char *buf; - size_t sz; - size_t off; -}; - - -struct index_html_ctx -{ - struct resp resp; -}; - - -struct ver_head_ctx -{ - struct resp resp; - unsigned char *req_body; - size_t req_sz; /* Expect it to be the same as qif_sz */ -}; - - -struct md5sum_ctx -{ - char resp_buf[0x100]; - MD5_CTX md5ctx; - struct resp resp; - int done; -}; - - -struct req -{ - enum method { - UNSET, GET, POST, UNSUPPORTED, - } method; - enum { - HAVE_XHDR = 1 << 0, - } flags; - enum { - PH_AUTHORITY = 1 << 0, - PH_METHOD = 1 << 1, - PH_PATH = 1 << 2, - } pseudo_headers; - char *path; - char *method_str; - char *authority_str; - char *qif_str; - size_t qif_sz; - struct lsxpack_header - xhdr; - size_t decode_off; - char decode_buf[MIN(LSXPACK_MAX_STRLEN + 1, 64 * 1024)]; -}; - - -struct interop_push_path -{ - STAILQ_ENTRY(interop_push_path) next; - char path[0]; -}; - - -struct gen_file_ctx -{ - STAILQ_HEAD(, interop_push_path) push_paths; - size_t remain; - unsigned idle_off; -}; - - -struct lsquic_stream_ctx { - lsquic_stream_t *stream; - struct server_ctx *server_ctx; - FILE *req_fh; - char *req_buf; - char *req_filename; - char *req_path; - size_t req_sz; - enum { - SH_HEADERS_SENT = (1 << 0), - SH_DELAYED = (1 << 1), - SH_HEADERS_READ = (1 << 2), - } flags; - struct lsquic_reader reader; - int file_fd; /* Used by pwritev */ - - /* Fields below are used by interop callbacks: */ - enum interop_handler { - IOH_ERROR, - IOH_INDEX_HTML, - IOH_MD5SUM, - IOH_VER_HEAD, - IOH_GEN_FILE, - IOH_ECHO, - } interop_handler; - struct req *req; - const char *resp_status; - union { - struct index_html_ctx ihc; - struct ver_head_ctx vhc; - struct md5sum_ctx md5c; - struct gen_file_ctx gfc; - struct { - char buf[0x100]; - struct resp resp; - } err; - } interop_u; - struct event *resume_resp; - size_t written; - size_t file_size; /* Used by pwritev */ -}; - - -static lsquic_stream_ctx_t * -http_server_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) -{ - lsquic_stream_ctx_t *st_h = calloc(1, sizeof(*st_h)); - st_h->stream = stream; - st_h->server_ctx = stream_if_ctx; - lsquic_stream_wantread(stream, 1); - return st_h; -} - - -static int -ends_with (const char *filename, const char *ext) -{ - const char *where; - - where = strstr(filename, ext); - return where - && strlen(where) == strlen(ext); -} - - -static const char * -select_content_type (lsquic_stream_ctx_t *st_h) -{ - if ( ends_with(st_h->req_filename, ".html")) - return "text/html"; - else if (ends_with(st_h->req_filename, ".png")) - return "image/png"; - else if (ends_with(st_h->req_filename, ".css")) - return "text/css"; - else if (ends_with(st_h->req_filename, ".gif")) - return "image/gif"; - else if (ends_with(st_h->req_filename, ".txt")) - return "text/plain"; - else - return "application/octet-stream"; -} - - -static int -send_headers (struct lsquic_stream *stream, lsquic_stream_ctx_t *st_h) -{ - const char *content_type; - struct header_buf hbuf; - - content_type = select_content_type(st_h); - struct lsxpack_header headers_arr[2]; - - hbuf.off = 0; - header_set_ptr(&headers_arr[0], &hbuf, ":status", 7, "200", 3); - header_set_ptr(&headers_arr[1], &hbuf, "content-type", 12, - content_type, strlen(content_type)); - lsquic_http_headers_t headers = { - .count = sizeof(headers_arr) / sizeof(headers_arr[0]), - .headers = headers_arr, - }; - if (0 != lsquic_stream_send_headers(stream, &headers, 0)) - { - LSQ_ERROR("cannot send headers: %s", strerror(errno)); - return -1; - } - - st_h->flags |= SH_HEADERS_SENT; - return 0; -} - - -static void -resume_response (evutil_socket_t fd, short what, void *arg) -{ - struct lsquic_stream_ctx *const st_h = arg; - - lsquic_stream_wantwrite(st_h->stream, 1); - event_del(st_h->resume_resp); - event_free(st_h->resume_resp); - st_h->resume_resp = NULL; - - LSQ_NOTICE("resume response to stream %"PRIu64, - lsquic_stream_id(st_h->stream)); - prog_process_conns(st_h->server_ctx->prog); -} - - -static size_t -bytes_left (lsquic_stream_ctx_t *st_h) -{ - if (s_pwritev) - return st_h->file_size - st_h->written; - else - return test_reader_size(st_h->reader.lsqr_ctx); -} - - -static ssize_t -my_preadv (void *user_data, const struct iovec *iov, int iovcnt) -{ -#if HAVE_PREADV - lsquic_stream_ctx_t *const st_h = user_data; - ssize_t nread = preadv(st_h->file_fd, iov, iovcnt, st_h->written); - LSQ_DEBUG("%s: wrote %zd bytes", __func__, (size_t) nread); - return nread; -#else - return -1; -#endif -} - - -static size_t -pwritev_fallback_read (void *lsqr_ctx, void *buf, size_t count) -{ - lsquic_stream_ctx_t *const st_h = lsqr_ctx; - struct iovec iov; - size_t ntoread; - - ntoread = st_h->file_size - st_h->written; - if (ntoread > count) - count = ntoread; - iov.iov_base = buf; - iov.iov_len = count; - return my_preadv(lsqr_ctx, &iov, 1); -} - - -static size_t -pwritev_fallback_size (void *lsqr_ctx) -{ - lsquic_stream_ctx_t *const st_h = lsqr_ctx; - return st_h->file_size - st_h->written; -} - - -static void -http_server_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - if (st_h->flags & SH_HEADERS_SENT) - { - ssize_t nw; - if (bytes_left(st_h) > 0) - { - if (st_h->server_ctx->delay_resp_sec - && !(st_h->flags & SH_DELAYED) - && st_h->written > 10000000) - { - struct timeval delay = { - .tv_sec = st_h->server_ctx->delay_resp_sec, }; - st_h->resume_resp = event_new(st_h->server_ctx->prog->prog_eb, - -1, EV_TIMEOUT, resume_response, st_h); - if (st_h->resume_resp) - { - event_add(st_h->resume_resp, &delay); - lsquic_stream_wantwrite(stream, 0); - st_h->flags |= SH_DELAYED; - LSQ_NOTICE("delay response of stream %"PRIu64" for %u seconds", - lsquic_stream_id(stream), st_h->server_ctx->delay_resp_sec); - return; - } - else - LSQ_ERROR("cannot allocate event"); - } - if (s_pwritev) - { - size_t to_write = bytes_left(st_h); - if (s_pwritev > 0 && (size_t) s_pwritev < to_write) - to_write = s_pwritev; - nw = lsquic_stream_pwritev(stream, my_preadv, st_h, to_write); - if (nw == 0) - { - struct lsquic_reader reader = { - .lsqr_read = pwritev_fallback_read, - .lsqr_size = pwritev_fallback_size, - .lsqr_ctx = st_h, - }; - nw = lsquic_stream_writef(stream, &reader); - } - } - else - { - nw = lsquic_stream_writef(stream, &st_h->reader); - } - if (nw < 0) - { - struct lsquic_conn *conn = lsquic_stream_conn(stream); - lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); - if (conn_h->flags & RECEIVED_GOAWAY) - { - LSQ_NOTICE("cannot write: goaway received"); - lsquic_stream_close(stream); - } - else - { - LSQ_ERROR("write error: %s", strerror(errno)); - exit(1); - } - } - if (bytes_left(st_h) > 0) - { - st_h->written += (size_t) nw; - lsquic_stream_wantwrite(stream, 1); - } - else - { - lsquic_stream_shutdown(stream, 1); - lsquic_stream_wantread(stream, 1); - } - } - else - { - lsquic_stream_shutdown(stream, 1); - lsquic_stream_wantread(stream, 1); - } - } - else - { - if (0 != send_headers(stream, st_h)) - exit(1); - } -} - - -struct capped_reader_ctx -{ - struct lsquic_reader *inner_reader; - size_t nread; -}; - - -static size_t -capped_reader_size (void *void_ctx) -{ - struct capped_reader_ctx *const capped_reader_ctx = void_ctx; - struct lsquic_reader *const inner_reader = capped_reader_ctx->inner_reader; - size_t size; - - size = inner_reader->lsqr_size(inner_reader->lsqr_ctx); - return MIN((size_t) (s_immediate_write - capped_reader_ctx->nread), size); -} - - -static size_t -capped_reader_read (void *void_ctx, void *buf, size_t count) -{ - struct capped_reader_ctx *const capped_reader_ctx = void_ctx; - struct lsquic_reader *const inner_reader = capped_reader_ctx->inner_reader; - size_t size; - - count = MIN(count, (size_t) (s_immediate_write - capped_reader_ctx->nread)); - size = inner_reader->lsqr_read(inner_reader->lsqr_ctx, buf, count); - capped_reader_ctx->nread += size; - return size; -} - - -#if HAVE_OPEN_MEMSTREAM -static void -parse_request (struct lsquic_stream *stream, lsquic_stream_ctx_t *st_h) -{ - char *filename; - int s; - regex_t re; - regmatch_t matches[2]; - - s = regcomp(&re, "GET (.*) HTTP/1.[01]\r\n", REG_EXTENDED); - if (0 != s) - { - perror("regcomp"); - exit(3); - } - - s = regexec(&re, st_h->req_buf, 2, matches, 0); - if (0 != s) - { - LSQ_WARN("GET request could not be parsed: `%s'", st_h->req_buf); - regfree(&re); - return; - } - - regfree(&re); - - filename = malloc(strlen(st_h->server_ctx->document_root) + 1 + - matches[1].rm_eo - matches[1].rm_so + 1); - strcpy(filename, st_h->server_ctx->document_root); - strcat(filename, "/"); - strncat(filename, st_h->req_buf + matches[1].rm_so, - matches[1].rm_eo - matches[1].rm_so); - - LSQ_INFO("filename to fetch: %s", filename); - - st_h->req_filename = filename; - st_h->req_path = strdup(filename); -} - - -static void -process_request (struct lsquic_stream *stream, lsquic_stream_ctx_t *st_h) -{ - struct stat st; - - if (s_pwritev) - { - st_h->file_fd = open(st_h->req_path, O_RDONLY); - if (st_h->file_fd < 0) - { - LSQ_ERROR("cannot open %s for reading: %s", st_h->req_path, - strerror(errno)); - exit(1); - } - if (fstat(st_h->file_fd, &st) < 0) - { - LSQ_ERROR("fstat: %s", strerror(errno)); - exit(1); - } - st_h->file_size = st.st_size; - } - else - { - st_h->reader.lsqr_read = test_reader_read; - st_h->reader.lsqr_size = test_reader_size; - st_h->reader.lsqr_ctx = create_lsquic_reader_ctx(st_h->req_path); - if (!st_h->reader.lsqr_ctx) - exit(1); - } - - if (s_immediate_write) - { - if (0 != send_headers(stream, st_h)) - exit(1); - - if (test_reader_size(st_h->reader.lsqr_ctx) > 0) - { - struct capped_reader_ctx capped_reader_ctx = - { - .inner_reader = &st_h->reader, - }; - struct lsquic_reader capped_reader = - { - .lsqr_read = capped_reader_read, - .lsqr_size = capped_reader_size, - .lsqr_ctx = &capped_reader_ctx, - }; - ssize_t nw; - nw = lsquic_stream_writef(stream, &capped_reader); - if (nw < 0) - { - LSQ_ERROR("write error: %s", strerror(errno)); - exit(1); - } - } - - if (test_reader_size(st_h->reader.lsqr_ctx) > 0) - { - lsquic_stream_flush(stream); - lsquic_stream_wantwrite(stream, 1); - } - else - { - lsquic_stream_shutdown(stream, 1); - lsquic_stream_wantread(stream, 1); - } - } - else - lsquic_stream_wantwrite(st_h->stream, 1); -} - - -static struct hset_fm /* FM stands for Filesystem Mode */ -{ - unsigned id; - char *path; -} * -new_hset_fm (const char *path) -{ - static unsigned hfm_id; - struct hset_fm *const hfm = malloc(sizeof(*hfm)); - char *const str = strdup(path); - if (hfm && path) - { - hfm->id = hfm_id++; - hfm->path = str; - return hfm; - } - else - { - free(str); - free(hfm); - return NULL; - } -} - - -static void -destroy_hset_fm (struct hset_fm *hfm) -{ - free(hfm->path); - free(hfm); -} - - -static int -push_promise (lsquic_stream_ctx_t *st_h, lsquic_stream_t *stream) -{ - lsquic_conn_t *conn; - int s; - regex_t re; - regmatch_t matches[2]; - struct hset_fm *hfm; - struct header_buf hbuf; - - s = regcomp(&re, "\r\nHost: *([[:alnum:].][[:alnum:].]*)\r\n", - REG_EXTENDED|REG_ICASE); - if (0 != s) - { - perror("regcomp"); - exit(3); - } - - s = regexec(&re, st_h->req_buf, 2, matches, 0); - if (0 != s) - { - LSQ_WARN("Could not find host header in request `%s'", st_h->req_buf); - regfree(&re); - return -1; - } - regfree(&re); - - hfm = new_hset_fm(st_h->server_ctx->push_path); - if (!hfm) - { - LSQ_WARN("Could not allocate hfm"); - return -1; - } - -#define V(v) (v), strlen(v) - hbuf.off = 0; - struct lsxpack_header headers_arr[6]; - header_set_ptr(&headers_arr[0], &hbuf, V(":method"), V("GET")); - header_set_ptr(&headers_arr[1], &hbuf, V(":path"), - V(st_h->server_ctx->push_path)); - header_set_ptr(&headers_arr[2], &hbuf, V(":authority"), - st_h->req_buf + matches[1].rm_so, matches[1].rm_eo - matches[1].rm_so); - header_set_ptr(&headers_arr[3], &hbuf, V(":scheme"), V("https")); - header_set_ptr(&headers_arr[4], &hbuf, V("x-some-header"), - V("x-some-value")); - header_set_ptr(&headers_arr[5], &hbuf, V("x-kenny-status"), - V("Oh my God! They killed Kenny!!! You bastards!")); - lsquic_http_headers_t headers = { - .count = sizeof(headers_arr) / sizeof(headers_arr[0]), - .headers = headers_arr, - }; - - conn = lsquic_stream_conn(stream); - s = lsquic_conn_push_stream(conn, hfm, stream, &headers); - if (0 == s) - LSQ_NOTICE("pushed stream successfully"); - else - { - destroy_hset_fm(hfm); - LSQ_ERROR("could not push stream: %s", strerror(errno)); - } - - return 0; -} - - -static void -http_server_on_read_pushed (struct lsquic_stream *stream, - lsquic_stream_ctx_t *st_h) -{ - struct hset_fm *hfm; - - hfm = lsquic_stream_get_hset(stream); - if (!hfm) - { - LSQ_ERROR("%s: error fetching hset: %s", __func__, strerror(errno)); - lsquic_stream_close(stream); - return; - } - - LSQ_INFO("got push request #%u for %s", hfm->id, hfm->path); - st_h->req_path = malloc(strlen(st_h->server_ctx->document_root) + 1 + - strlen(hfm->path) + 1); - strcpy(st_h->req_path, st_h->server_ctx->document_root); - strcat(st_h->req_path, "/"); - strcat(st_h->req_path, hfm->path); - st_h->req_filename = strdup(st_h->req_path); /* XXX Only used for ends_with: drop it? */ - - process_request(stream, st_h); - free(st_h->req_buf); - lsquic_stream_shutdown(stream, 0); - destroy_hset_fm(hfm); -} - - -static void -http_server_on_read_regular (struct lsquic_stream *stream, - lsquic_stream_ctx_t *st_h) -{ - unsigned char buf[0x400]; - ssize_t nread; - int s; - - if (!st_h->req_fh) - st_h->req_fh = open_memstream(&st_h->req_buf, &st_h->req_sz); - - nread = lsquic_stream_read(stream, buf, sizeof(buf)); - if (nread > 0) - fwrite(buf, 1, nread, st_h->req_fh); - else if (0 == nread) - { - fwrite("", 1, 1, st_h->req_fh); /* NUL-terminate so that we can regex the string */ - fclose(st_h->req_fh); - LSQ_INFO("got request: `%.*s'", (int) st_h->req_sz, st_h->req_buf); - parse_request(stream, st_h); - if (st_h->server_ctx->push_path && - 0 != strcmp(st_h->req_path, st_h->server_ctx->push_path)) - { - s = push_promise(st_h, stream); - if (s != 0) - exit(1); - } - process_request(stream, st_h); - free(st_h->req_buf); - lsquic_stream_shutdown(stream, 0); - } - else - { - LSQ_ERROR("error reading: %s", strerror(errno)); - lsquic_stream_close(stream); - } -} -#endif - - -static void -http_server_on_read (struct lsquic_stream *stream, lsquic_stream_ctx_t *st_h) -{ -#if HAVE_OPEN_MEMSTREAM - if (lsquic_stream_is_pushed(stream)) - http_server_on_read_pushed(stream, st_h); - else - http_server_on_read_regular(stream, st_h); -#else - LSQ_ERROR("%s: open_memstream not supported\n", __func__); - exit(1); -#endif -} - - -static void -http_server_on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - free(st_h->req_filename); - free(st_h->req_path); - if (st_h->reader.lsqr_ctx) - destroy_lsquic_reader_ctx(st_h->reader.lsqr_ctx); -#if HAVE_PREADV - if (s_pwritev) - close(st_h->file_fd); -#endif - if (st_h->req) - interop_server_hset_destroy(st_h->req); - free(st_h); - LSQ_INFO("%s called, has unacked data: %d", __func__, - lsquic_stream_has_unacked_data(stream)); -} - - -const struct lsquic_stream_if http_server_if = { - .on_new_conn = http_server_on_new_conn, - .on_conn_closed = http_server_on_conn_closed, - .on_new_stream = http_server_on_new_stream, - .on_read = http_server_on_read, - .on_write = http_server_on_write, - .on_close = http_server_on_close, - .on_goaway_received = http_server_on_goaway, -}; - - -#if HAVE_OPEN_MEMSTREAM -static void -hq_server_on_read (struct lsquic_stream *stream, lsquic_stream_ctx_t *st_h) -{ - char tbuf[0x100], *buf; - ssize_t nread; - char *path, *end, *filename; - - if (!st_h->req_fh) - st_h->req_fh = open_memstream(&st_h->req_buf, &st_h->req_sz); - - nread = lsquic_stream_read(stream, tbuf, sizeof(tbuf)); - if (nread > 0) - { - fwrite(tbuf, 1, nread, st_h->req_fh); - return; - } - - if (nread < 0) - { - LSQ_WARN("error reading request from stream: %s", strerror(errno)); - lsquic_stream_close(stream); - return; - } - - fwrite("", 1, 1, st_h->req_fh); - fclose(st_h->req_fh); - LSQ_INFO("got request: `%.*s'", (int) st_h->req_sz, st_h->req_buf); - - buf = st_h->req_buf; - path = strchr(buf, ' '); - if (!path) - { - LSQ_WARN("invalid request (no space character): `%s'", buf); - lsquic_stream_close(stream); - return; - } - if (!(path - buf == 3 && 0 == strncasecmp(buf, "GET", 3))) - { - LSQ_NOTICE("unsupported method `%.*s'", (int) (path - buf), buf); - lsquic_stream_close(stream); - return; - } - ++path; - for (end = buf + st_h->req_sz - 1; end > path - && (*end == '\0' || *end == '\r' || *end == '\n'); --end) - *end = '\0'; - LSQ_NOTICE("parsed out request path: %s", path); - - filename = malloc(strlen(st_h->server_ctx->document_root) + 1 + strlen(path) + 1); - strcpy(filename, st_h->server_ctx->document_root); - strcat(filename, "/"); - strcat(filename, path); - LSQ_NOTICE("file to fetch: %s", filename); - /* XXX This copy pasta is getting a bit annoying now: two mallocs of the - * same thing? - */ - st_h->req_filename = filename; - st_h->req_path = strdup(filename); - st_h->reader.lsqr_read = test_reader_read; - st_h->reader.lsqr_size = test_reader_size; - st_h->reader.lsqr_ctx = create_lsquic_reader_ctx(st_h->req_path); - if (!st_h->reader.lsqr_ctx) - { - lsquic_stream_close(stream); - return; - } - lsquic_stream_shutdown(stream, 0); - lsquic_stream_wantwrite(stream, 1); -} - - -static void -hq_server_on_write (struct lsquic_stream *stream, lsquic_stream_ctx_t *st_h) -{ - ssize_t nw; - - nw = lsquic_stream_writef(stream, &st_h->reader); - if (nw < 0) - { - struct lsquic_conn *conn = lsquic_stream_conn(stream); - lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); - if (conn_h->flags & RECEIVED_GOAWAY) - { - LSQ_NOTICE("cannot write: goaway received"); - lsquic_stream_close(stream); - } - else - { - LSQ_ERROR("write error: %s", strerror(errno)); - lsquic_stream_close(stream); - } - } - else if (bytes_left(st_h) > 0) - { - st_h->written += (size_t) nw; - lsquic_stream_wantwrite(stream, 1); - } - else - { - lsquic_stream_shutdown(stream, 1); - lsquic_stream_wantread(stream, 1); - } -} - - -const struct lsquic_stream_if hq_server_if = { - .on_new_conn = http_server_on_new_conn, - .on_conn_closed = http_server_on_conn_closed, - .on_new_stream = http_server_on_new_stream, - .on_read = hq_server_on_read, - .on_write = hq_server_on_write, - .on_close = http_server_on_close, -}; -#endif - - -#if HAVE_REGEX -struct req_map -{ - enum method method; - const char *path; - enum interop_handler handler; - const char *status; - enum { - RM_WANTBODY = 1 << 0, - RM_REGEX = 1 << 1, - RM_COMPILED = 1 << 2, - } flags; - regex_t re; -}; - - -static struct req_map req_maps[] = -{ - { .method = GET, .path = "/", .handler = IOH_INDEX_HTML, .status = "200", .flags = 0, }, - { .method = GET, .path = "/index.html", .handler = IOH_INDEX_HTML, .status = "200", .flags = 0, }, - { .method = POST, .path = "/cgi-bin/md5sum.cgi", .handler = IOH_MD5SUM, .status = "200", .flags = RM_WANTBODY, }, - { .method = POST, .path = "/cgi-bin/verify-headers.cgi", .handler = IOH_VER_HEAD, .status = "200", .flags = RM_WANTBODY, }, - { .method = GET, .path = "^/([0-9][0-9]*)([KMG]?)$", .handler = IOH_GEN_FILE, .status = "200", .flags = RM_REGEX, }, - { .method = GET, .path = "^/([0-9][0-9]*)([KMG]?)\\?push=([^&]*)$", .handler = IOH_GEN_FILE, .status = "200", .flags = RM_REGEX, }, - { .method = GET, .path = "^/([0-9][0-9]*)([KMG]?)\\?push=([^&]*)&push=([^&]*)$", .handler = IOH_GEN_FILE, .status = "200", .flags = RM_REGEX, }, - { .method = GET, .path = "^/([0-9][0-9]*)([KMG]?)\\?push=([^&]*)&push=([^&]*)&push=([^&]*)$", .handler = IOH_GEN_FILE, .status = "200", .flags = RM_REGEX, }, - { .method = GET, .path = "^/file-([0-9][0-9]*)([KMG]?)$", .handler = IOH_GEN_FILE, .status = "200", .flags = RM_REGEX, }, - { .method = GET, .path = "^/file-([0-9][0-9]*)([KMG]?)\\?push=([^&]*)$", .handler = IOH_GEN_FILE, .status = "200", .flags = RM_REGEX, }, - { .method = GET, .path = "^/file-([0-9][0-9]*)([KMG]?)\\?push=([^&]*)&push=([^&]*)$", .handler = IOH_GEN_FILE, .status = "200", .flags = RM_REGEX, }, - { .method = GET, .path = "^/file-([0-9][0-9]*)([KMG]?)\\?push=([^&]*)&push=([^&]*)&push=([^&]*)$", .handler = IOH_GEN_FILE, .status = "200", .flags = RM_REGEX, }, -}; - - -#define MAX_MATCHES 5 - - -static void -init_map_regexes (void) -{ - struct req_map *map; - - for (map = req_maps; map < req_maps + sizeof(req_maps) - / sizeof(req_maps[0]); ++map) - if (map->flags & RM_REGEX) - { -#ifndef NDEBUG - int s; - s = -#endif - regcomp(&map->re, map->path, REG_EXTENDED|REG_ICASE); - assert(0 == s); - map->flags |= RM_COMPILED; - } -} - - -static void -free_map_regexes (void) -{ - struct req_map *map; - - for (map = req_maps; map < req_maps + sizeof(req_maps) - / sizeof(req_maps[0]); ++map) - if (map->flags & RM_COMPILED) - { - regfree(&map->re); - map->flags &= ~RM_COMPILED; - } -} - - -static const struct req_map * -find_handler (enum method method, const char *path, regmatch_t *matches) -{ - const struct req_map *map; - - for (map = req_maps; map < req_maps + sizeof(req_maps) - / sizeof(req_maps[0]); ++map) - if (map->flags & RM_COMPILED) - { - if (0 == regexec(&map->re, path, MAX_MATCHES + 1, matches, 0)) - return map; - } - else if (0 == strcasecmp(path, map->path)) - return map; - - return NULL; -} - - -static const char INDEX_HTML[] = -"\n" -" \n" -" LiteSpeed IETF QUIC Server Index Page\n" -" \n" -" \n" -"

LiteSpeed IETF QUIC Server Index Page

\n" -"

Hello! Welcome to the interop. Available services:\n" -"

\n" -" \n" -"\n" -; - - -static size_t -read_md5 (void *ctx, const unsigned char *buf, size_t sz, int fin) -{ - struct lsquic_stream_ctx *st_h = ctx; - - if (sz) - MD5_Update(&st_h->interop_u.md5c.md5ctx, buf, sz); - - if (fin) - st_h->interop_u.md5c.done = 1; - - return sz; -} - - -static void -http_server_interop_on_read (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ -#define ERROR_RESP(code, ...) do { \ - LSQ_WARN(__VA_ARGS__); \ - st_h->interop_handler = IOH_ERROR; \ - st_h->resp_status = #code; \ - st_h->interop_u.err.resp.sz = snprintf(st_h->interop_u.err.buf, \ - sizeof(st_h->interop_u.err.buf), __VA_ARGS__); \ - if (st_h->interop_u.err.resp.sz >= sizeof(st_h->interop_u.err.buf)) \ - st_h->interop_u.err.resp.sz = sizeof(st_h->interop_u.err.buf) - 1; \ - st_h->interop_u.err.resp.buf = st_h->interop_u.err.buf; \ - st_h->interop_u.err.resp.off = 0; \ - goto err; \ -} while (0) - - const struct req_map *map; - ssize_t nw; - size_t need; - unsigned len, i; - struct interop_push_path *push_path; - regmatch_t matches[MAX_MATCHES + 1]; - unsigned char md5sum[MD5_DIGEST_LENGTH]; - char md5str[ sizeof(md5sum) * 2 + 1 ]; - char byte[1]; - - if (!(st_h->flags & SH_HEADERS_READ)) - { - st_h->flags |= SH_HEADERS_READ; - st_h->req = lsquic_stream_get_hset(stream); - if (!st_h->req) - ERROR_RESP(500, "Internal error: cannot fetch header set from stream"); - else if (st_h->req->method == UNSET) - ERROR_RESP(400, "Method is not specified"); - else if (!st_h->req->path) - ERROR_RESP(400, "Path is not specified"); - else if (st_h->req->method == UNSUPPORTED) - ERROR_RESP(501, "Method %s is not supported", st_h->req->method_str); - else if (!(map = find_handler(st_h->req->method, st_h->req->path, matches))) - ERROR_RESP(404, "No handler found for method: %s; path: %s", - st_h->req->method_str, st_h->req->path); - else - { - LSQ_INFO("found handler for %s %s", st_h->req->method_str, st_h->req->path); - st_h->resp_status = map->status; - st_h->interop_handler = map->handler; - switch (map->handler) - { - case IOH_INDEX_HTML: - st_h->interop_u.ihc.resp = (struct resp) { INDEX_HTML, sizeof(INDEX_HTML) - 1, 0, }; - break; - case IOH_VER_HEAD: - st_h->interop_u.vhc.resp = (struct resp) { - st_h->req->qif_str, st_h->req->qif_sz, 0, }; - break; - case IOH_MD5SUM: - MD5_Init(&st_h->interop_u.md5c.md5ctx); - st_h->interop_u.md5c.done = 0; - break; - case IOH_GEN_FILE: - STAILQ_INIT(&st_h->interop_u.gfc.push_paths); - st_h->interop_u.gfc.remain = strtol(st_h->req->path + matches[1].rm_so, NULL, 10); - if (matches[2].rm_so >= 0 - && matches[2].rm_so < matches[2].rm_eo) - { - switch (st_h->req->path[ matches[2].rm_so ]) - { - case 'G': - case 'g': - st_h->interop_u.gfc.remain <<= 30; - break; - case 'M': - case 'm': - st_h->interop_u.gfc.remain <<= 20; - break; - case 'K': - case 'k': - st_h->interop_u.gfc.remain <<= 10; - break; - } - } - if (st_h->interop_u.gfc.remain > 2 * (1u << 30)) - ERROR_RESP(406, "Response of %zd bytes is too long to generate", - st_h->interop_u.gfc.remain); - st_h->interop_u.gfc.idle_off = 0; - for (i = 3; i <= MAX_MATCHES; ++i) - if (matches[i].rm_so >= 0) - { - len = matches[i].rm_eo - matches[i].rm_so; - push_path = malloc(sizeof(*push_path) + len + 1); - memcpy(push_path->path, st_h->req->path - + matches[i].rm_so, len); - push_path->path[len] ='\0'; - STAILQ_INSERT_TAIL(&st_h->interop_u.gfc.push_paths, - push_path, next); - } - else - break; - break; - default: - /* TODO: implement this */ - assert(0); - break; - } - } - - if (!(map->flags & RM_WANTBODY)) - { - err: - lsquic_stream_shutdown(stream, 0); - lsquic_stream_wantwrite(stream, 1); - } - } - else - { - switch (st_h->interop_handler) - { - case IOH_MD5SUM: - assert(!st_h->interop_u.md5c.done); - nw = lsquic_stream_readf(stream, read_md5, st_h); - if (nw < 0) - { - LSQ_ERROR("could not read from stream for MD5: %s", strerror(errno)); - exit(1); - } - if (nw == 0) - st_h->interop_u.md5c.done = 1; - if (st_h->interop_u.md5c.done) - { - MD5_Final(md5sum, &st_h->interop_u.md5c.md5ctx); - lsquic_hexstr(md5sum, sizeof(md5sum), md5str, sizeof(md5str)); - snprintf(st_h->interop_u.md5c.resp_buf, sizeof(st_h->interop_u.md5c.resp_buf), - "MD5 Checksum Result\n" - "

MD5 Checksum Result

\n

" - "MD5 Checksum: %s\n\n", - md5str); - st_h->interop_u.md5c.resp.buf = st_h->interop_u.md5c.resp_buf; - st_h->interop_u.md5c.resp.sz = strlen(st_h->interop_u.md5c.resp_buf); - st_h->interop_u.md5c.resp.off = 0; - lsquic_stream_shutdown(stream, 0); - lsquic_stream_wantwrite(stream, 1); - } - break; - case IOH_VER_HEAD: - if (!st_h->interop_u.vhc.req_body) - { - st_h->interop_u.vhc.req_body = malloc(st_h->req->qif_sz); - if (!st_h->interop_u.vhc.req_body) - { - perror("malloc"); - exit(1); - } - } - need = st_h->req->qif_sz - st_h->interop_u.vhc.req_sz; - if (need > 0) - { - nw = lsquic_stream_read(stream, - st_h->interop_u.vhc.req_body - + st_h->interop_u.vhc.req_sz, need); - if (nw > 0) - st_h->interop_u.vhc.req_sz += need; - else if (nw == 0) - { - LSQ_WARN("request body too short (does not match headers)"); - lsquic_stream_shutdown(stream, 0); - lsquic_stream_wantwrite(stream, 1); - } - else - { - LSQ_ERROR("error reading from stream"); - exit(1); - } - } - else - { - nw = lsquic_stream_read(stream, byte, sizeof(byte)); - if (nw == 0) - { - if (0 == memcmp(st_h->req->qif_str, - st_h->interop_u.vhc.req_body, st_h->req->qif_sz)) - LSQ_INFO("request headers and payload check out"); - else - LSQ_WARN("request headers and payload are different"); - } - else - LSQ_WARN("request body too long (does not match headers)"); - lsquic_stream_shutdown(stream, 0); - lsquic_stream_wantwrite(stream, 1); - } - break; - default: - assert(0); - } - } -} - - -static int -send_headers2 (struct lsquic_stream *stream, struct lsquic_stream_ctx *st_h, - size_t content_len) -{ - char clbuf[0x20]; - struct header_buf hbuf; - - snprintf(clbuf, sizeof(clbuf), "%zd", content_len); - - hbuf.off = 0; - struct lsxpack_header headers_arr[4]; - header_set_ptr(&headers_arr[0], &hbuf, V(":status"), V(st_h->resp_status)); - header_set_ptr(&headers_arr[1], &hbuf, V("server"), V(LITESPEED_ID)); - header_set_ptr(&headers_arr[2], &hbuf, V("content-type"), V("text/html")); - header_set_ptr(&headers_arr[3], &hbuf, V("content-length"), V(clbuf)); - lsquic_http_headers_t headers = { - .count = sizeof(headers_arr) / sizeof(headers_arr[0]), - .headers = headers_arr, - }; - - return lsquic_stream_send_headers(st_h->stream, &headers, 0); -} - -#define MIN(a, b) ((a) < (b) ? (a) : (b)) - -static size_t -idle_read (void *lsqr_ctx, void *buf, size_t count) -{ - struct gen_file_ctx *const gfc = lsqr_ctx; - unsigned char *p = buf; - unsigned char *const end = p + count; - size_t towrite; - - while (p < end && gfc->remain > 0) - { - towrite = MIN((unsigned) (end - p), IDLE_SIZE - gfc->idle_off); - if (towrite > gfc->remain) - towrite = gfc->remain; - memcpy(p, on_being_idle + gfc->idle_off, towrite); - gfc->idle_off += towrite; - if (gfc->idle_off == IDLE_SIZE) - gfc->idle_off = 0; - p += towrite; - gfc->remain -= towrite; - } - - return p - (unsigned char *) buf; -} - - -static size_t -idle_size (void *lsqr_ctx) -{ - struct gen_file_ctx *const gfc = lsqr_ctx; - - return gfc->remain; -} - - -static struct req * -new_req (enum method method, const char *path, const char *authority) -{ - struct req *req; - - req = malloc(sizeof(*req)); - if (!req) - return NULL; - - memset(req, 0, offsetof(struct req, decode_buf)); - req->method = method; - req->path = strdup(path); - req->authority_str = strdup(authority); - if (!(req->path && req->authority_str)) - { - free(req->path); - free(req->authority_str); - free(req); - return NULL; - } - - return req; -} - - -static ssize_t -my_interop_preadv (void *user_data, const struct iovec *iov, int iovcnt) -{ - struct gen_file_ctx *const gfc = user_data; - size_t nread, nr; - int i; - - nread = 0; - for (i = 0; i < iovcnt; ++i) - { - nr = idle_read(gfc, iov[i].iov_base, iov[i].iov_len); - nread += nr; - } - - return (ssize_t) nread; -} - - -static void -idle_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - struct gen_file_ctx *const gfc = &st_h->interop_u.gfc; - struct interop_push_path *push_path; - struct lsxpack_header header_arr[4]; - struct lsquic_http_headers headers; - struct req *req; - ssize_t nw; - struct header_buf hbuf; - struct lsquic_reader reader; - - if (st_h->flags & SH_HEADERS_SENT) - { - if (s_pwritev) - { - nw = lsquic_stream_pwritev(stream, my_interop_preadv, gfc, - gfc->remain); - if (nw == 0) - goto with_reader; - } - else - { - with_reader: - reader.lsqr_read = idle_read, - reader.lsqr_size = idle_size, - reader.lsqr_ctx = gfc, - nw = lsquic_stream_writef(stream, &reader); - } - if (nw < 0) - { - LSQ_ERROR("error writing idle thoughts: %s", strerror(errno)); - exit(1); - } - if (gfc->remain == 0) - lsquic_stream_shutdown(stream, 1); - } - else - { - if (st_h->req->authority_str) - while ((push_path = STAILQ_FIRST(&gfc->push_paths))) - { - STAILQ_REMOVE_HEAD(&gfc->push_paths, next); - LSQ_DEBUG("pushing promise for %s", push_path->path); - hbuf.off = 0; - header_set_ptr(&header_arr[0], &hbuf, V(":method"), V("GET")); - header_set_ptr(&header_arr[1], &hbuf, V(":path"), V(push_path->path)); - header_set_ptr(&header_arr[2], &hbuf, V(":authority"), V(st_h->req->authority_str)); - header_set_ptr(&header_arr[3], &hbuf, V(":scheme"), V("https")); - headers.headers = header_arr; - headers.count = sizeof(header_arr) / sizeof(header_arr[0]); - req = new_req(GET, push_path->path, st_h->req->authority_str); - if (req) - { - if (0 != lsquic_conn_push_stream(lsquic_stream_conn(stream), - req, stream, &headers)) - { - LSQ_WARN("stream push failed"); - interop_server_hset_destroy(req); - } - } - else - LSQ_WARN("cannot allocate req for push"); - free(push_path); - } - if (0 == send_headers2(stream, st_h, gfc->remain)) - st_h->flags |= SH_HEADERS_SENT; - else - { - LSQ_ERROR("cannot send headers: %s", strerror(errno)); - lsquic_stream_close(stream); - } - } -} - - -static void -http_server_interop_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - struct resp *resp; - ssize_t nw; - - switch (st_h->interop_handler) - { - case IOH_ERROR: - resp = &st_h->interop_u.err.resp; - goto reply; - case IOH_INDEX_HTML: - resp = &st_h->interop_u.ihc.resp; - goto reply; - case IOH_VER_HEAD: - resp = &st_h->interop_u.vhc.resp; - goto reply; - case IOH_MD5SUM: - resp = &st_h->interop_u.md5c.resp; - goto reply; - case IOH_GEN_FILE: - idle_on_write(stream, st_h); - return; - default: - assert(0); - return; - } - - reply: - assert(resp->sz); /* We always need to send body */ - if (!(st_h->flags & SH_HEADERS_SENT)) - { - send_headers2(stream, st_h, resp->sz); - st_h->flags |= SH_HEADERS_SENT; - return; - } - - nw = lsquic_stream_write(stream, resp->buf + resp->off, resp->sz - resp->off); - if (nw < 0) - { - LSQ_ERROR("error writing to stream: %s", strerror(errno)); - lsquic_conn_abort(lsquic_stream_conn(stream)); - return; - } - - resp->off += nw; - lsquic_stream_flush(stream); - if (resp->off == resp->sz) - lsquic_stream_shutdown(stream, 1); -} - - -const struct lsquic_stream_if interop_http_server_if = { - .on_new_conn = http_server_on_new_conn, - .on_conn_closed = http_server_on_conn_closed, - .on_new_stream = http_server_on_new_stream, - .on_read = http_server_interop_on_read, - .on_write = http_server_interop_on_write, - .on_close = http_server_on_close, -}; -#endif /* HAVE_REGEX */ - - -static void -usage (const char *prog) -{ - const char *const slash = strrchr(prog, '/'); - if (slash) - prog = slash + 1; - printf( -"Usage: %s [opts]\n" -"\n" -"Options:\n" -" -r ROOT Document root\n" -" -p FILE Push request with this path\n" -" -w SIZE Write immediately (LSWS mode). Argument specifies maximum\n" -" size of the immediate write.\n" -#if HAVE_PREADV -" -P SIZE Use preadv(2) to read from disk and lsquic_stream_pwritev() to\n" -" write to stream. Positive SIZE indicate maximum value per\n" -" write; negative means always use remaining file size.\n" -" Incompatible with -w.\n" -#endif -" -Y DELAY Delay response for this many seconds -- use for debugging\n" -" -Q ALPN Use hq mode; ALPN could be \"hq-29\", for example.\n" - , prog); -} - - -static void * -interop_server_hset_create (void *hsi_ctx, lsquic_stream_t *stream, - int is_push_promise) -{ - struct req *req; - - req = malloc(sizeof(struct req)); - memset(req, 0, offsetof(struct req, decode_buf)); - - return req; -} - - -static struct lsxpack_header * -interop_server_hset_prepare_decode (void *hset_p, struct lsxpack_header *xhdr, - size_t req_space) -{ - struct req *req = hset_p; - - if (xhdr) - { - LSQ_WARN("we don't reallocate headers: can't give more"); - return NULL; - } - - if (req->flags & HAVE_XHDR) - { - if (req->decode_off + lsxpack_header_get_dec_size(&req->xhdr) - >= sizeof(req->decode_buf)) - { - LSQ_WARN("Not enough room in header"); - return NULL; - } - req->decode_off += lsxpack_header_get_dec_size(&req->xhdr); - } - else - req->flags |= HAVE_XHDR; - - lsxpack_header_prepare_decode(&req->xhdr, req->decode_buf, - req->decode_off, sizeof(req->decode_buf) - req->decode_off); - return &req->xhdr; -} - - -static int -interop_server_hset_add_header (void *hset_p, struct lsxpack_header *xhdr) -{ - struct req *req = hset_p; - const char *name, *value; - unsigned name_len, value_len; - - if (!xhdr) - { - if (req->pseudo_headers == (PH_AUTHORITY|PH_METHOD|PH_PATH)) - return 0; - else - { - LSQ_INFO("%s: missing some pseudo-headers: 0x%X", __func__, - req->pseudo_headers); - return 1; - } - } - - name = lsxpack_header_get_name(xhdr); - value = lsxpack_header_get_value(xhdr); - name_len = xhdr->name_len; - value_len = xhdr->val_len; - - req->qif_str = realloc(req->qif_str, - req->qif_sz + name_len + value_len + 2); - if (!req->qif_str) - { - LSQ_ERROR("malloc failed"); - return -1; - } - memcpy(req->qif_str + req->qif_sz, name, name_len); - req->qif_str[req->qif_sz + name_len] = '\t'; - memcpy(req->qif_str + req->qif_sz + name_len + 1, value, value_len); - req->qif_str[req->qif_sz + name_len + 1 + value_len] = '\n'; - req->qif_sz += name_len + value_len + 2; - - if (5 == name_len && 0 == strncmp(name, ":path", 5)) - { - if (req->path) - return 1; - req->path = strndup(value, value_len); - if (!req->path) - return -1; - req->pseudo_headers |= PH_PATH; - return 0; - } - - if (7 == name_len && 0 == strncmp(name, ":method", 7)) - { - if (req->method != UNSET) - return 1; - req->method_str = strndup(value, value_len); - if (!req->method_str) - return -1; - if (0 == strcmp(req->method_str, "GET")) - req->method = GET; - else if (0 == strcmp(req->method_str, "POST")) - req->method = POST; - else - req->method = UNSUPPORTED; - req->pseudo_headers |= PH_METHOD; - return 0; - } - - if (10 == name_len && 0 == strncmp(name, ":authority", 10)) - { - req->authority_str = strndup(value, value_len); - if (!req->authority_str) - return -1; - req->pseudo_headers |= PH_AUTHORITY; - return 0; - } - - return 0; -} - - -static void -interop_server_hset_destroy (void *hset_p) -{ - struct req *req = hset_p; - free(req->qif_str); - free(req->path); - free(req->method_str); - free(req->authority_str); - free(req); -} - - -static const struct lsquic_hset_if header_bypass_api = -{ - .hsi_create_header_set = interop_server_hset_create, - .hsi_prepare_decode = interop_server_hset_prepare_decode, - .hsi_process_header = interop_server_hset_add_header, - .hsi_discard_header_set = interop_server_hset_destroy, -}; - - -int -main (int argc, char **argv) -{ - int opt, s; - struct stat st; - struct server_ctx server_ctx; - struct prog prog; - const char *const *alpn; - -#if !(HAVE_OPEN_MEMSTREAM || HAVE_REGEX) - fprintf(stderr, "cannot run server without regex or open_memstream\n"); - return 1; -#endif - - memset(&server_ctx, 0, sizeof(server_ctx)); - TAILQ_INIT(&server_ctx.sports); - server_ctx.prog = &prog; - - prog_init(&prog, LSENG_SERVER|LSENG_HTTP, &server_ctx.sports, - &http_server_if, &server_ctx); - - while (-1 != (opt = getopt(argc, argv, PROG_OPTS "y:Y:n:p:r:w:P:h" -#if HAVE_OPEN_MEMSTREAM - "Q:" -#endif - ))) - { - switch (opt) { - case 'n': - server_ctx.max_conn = atoi(optarg); - break; - case 'p': - server_ctx.push_path = optarg; - break; - case 'r': - if (-1 == stat(optarg, &st)) - { - perror("stat"); - exit(2); - } -#ifndef WIN32 - if (!S_ISDIR(st.st_mode)) - { - fprintf(stderr, "`%s' is not a directory\n", optarg); - exit(2); - } -#endif - server_ctx.document_root = optarg; - break; - case 'w': - s_immediate_write = atoi(optarg); - break; - case 'P': -#if HAVE_PREADV - s_pwritev = strtoull(optarg, NULL, 10); - break; -#else - fprintf(stderr, "preadv is not supported on this platform, " - "cannot use -P\n"); - exit(EXIT_FAILURE); -#endif - case 'Y': - server_ctx.delay_resp_sec = atoi(optarg); - break; - case 'h': - usage(argv[0]); - prog_print_common_options(&prog, stdout); - exit(0); -#if HAVE_OPEN_MEMSTREAM - case 'Q': - /* XXX A bit hacky, as `prog' has already been initialized... */ - prog.prog_engine_flags &= ~LSENG_HTTP; - prog.prog_api.ea_stream_if = &hq_server_if; - add_alpn(optarg); - break; -#endif - default: - if (0 != prog_set_opt(&prog, opt, optarg)) - exit(1); - } - } - - if (!server_ctx.document_root) - { -#if HAVE_REGEX - LSQ_NOTICE("Document root is not set: start in Interop Mode"); - init_map_regexes(); - prog.prog_api.ea_stream_if = &interop_http_server_if; - prog.prog_api.ea_hsi_if = &header_bypass_api; - prog.prog_api.ea_hsi_ctx = NULL; -#else - LSQ_ERROR("Document root is not set: use -r option"); - exit(EXIT_FAILURE); -#endif - } - - if (s_immediate_write && s_pwritev) - { - LSQ_ERROR("-w and -P are incompatible options"); - exit(EXIT_FAILURE); - } - - alpn = lsquic_get_h3_alpns(prog.prog_settings.es_versions); - while (*alpn) - { - if (0 == add_alpn(*alpn)) - ++alpn; - else - { - LSQ_ERROR("cannot add ALPN %s", *alpn); - exit(EXIT_FAILURE); - } - } - - if (0 != prog_prep(&prog)) - { - LSQ_ERROR("could not prep"); - exit(EXIT_FAILURE); - } - - LSQ_DEBUG("entering event loop"); - - s = prog_run(&prog); - prog_cleanup(&prog); - -#if HAVE_REGEX - if (!server_ctx.document_root) - free_map_regexes(); -#endif - - exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); -} diff --git a/external/lsquic/bin/md5_client.c b/external/lsquic/bin/md5_client.c deleted file mode 100644 index 0fff7ed..0000000 --- a/external/lsquic/bin/md5_client.c +++ /dev/null @@ -1,529 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * md5_client.c -- This client sends one or more files to MD5 QUIC server - * for MD5 sum calculation. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef WIN32 -#include -#include -#else -#include "vc_compat.h" -#include "getopt.h" -#endif - -#include -#include - -#include "lsquic.h" -#include "test_common.h" -#include "prog.h" - -#include "../src/liblsquic/lsquic_logger.h" -#include "../src/liblsquic/lsquic_int_types.h" -#include "../src/liblsquic/lsquic_varint.h" -#include "../src/liblsquic/lsquic_hq.h" -#include "../src/liblsquic/lsquic_sfcw.h" -#include "../src/liblsquic/lsquic_hash.h" -#include "../src/liblsquic/lsquic_stream.h" - -/* Set to non-zero value to test out what happens when reset is sent */ -#define RESET_AFTER_N_WRITES 0 - -static int g_write_file = 1; - -#define LOCAL_BUF_SIZE 0x100 - -static struct { - unsigned stream_id; /* If set, reset this stream ID */ - off_t offset; /* Reset it after writing this many bytes */ -} g_reset_stream; - -struct file { - LIST_ENTRY(file) next_file; - const char *filename; - struct lsquic_reader reader; - int fd; - unsigned priority; - enum { - FILE_RESET = (1 << 0), - } file_flags; - size_t md5_off; - char md5str[MD5_DIGEST_LENGTH * 2]; -}; - -struct lsquic_conn_ctx; - -struct client_ctx { - struct lsquic_conn_ctx *conn_h; - LIST_HEAD(, file) files; - unsigned n_files; - struct file *cur_file; - lsquic_engine_t *engine; - struct service_port *sport; - struct prog *prog; -}; - -struct lsquic_conn_ctx { - lsquic_conn_t *conn; - struct client_ctx *client_ctx; -}; - - -static lsquic_conn_ctx_t * -client_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) -{ - struct client_ctx *client_ctx = stream_if_ctx; - lsquic_conn_ctx_t *conn_h = malloc(sizeof(*conn_h)); - conn_h->conn = conn; - conn_h->client_ctx = client_ctx; - client_ctx->conn_h = conn_h; - assert(client_ctx->n_files > 0); - unsigned n = client_ctx->n_files; - while (n--) - lsquic_conn_make_stream(conn); - print_conn_info(conn); - return conn_h; -} - - -static void -client_on_goaway_received (lsquic_conn_t *conn) -{ - LSQ_NOTICE("GOAWAY received"); -} - - -static void -client_on_conn_closed (lsquic_conn_t *conn) -{ - lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); - LSQ_NOTICE("Connection closed"); - prog_stop(conn_h->client_ctx->prog); - - lsquic_conn_set_ctx(conn, NULL); - free(conn_h); -} - - -struct lsquic_stream_ctx { - lsquic_stream_t *stream; - struct client_ctx *client_ctx; - struct file *file; - struct event *read_stdin_ev; - struct { - int initialized; - size_t size, - off; - } small; -}; - - -static lsquic_stream_ctx_t * -client_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) -{ - struct client_ctx *const client_ctx = stream_if_ctx; - if (!stream) - { - assert(client_ctx->n_files > 0); - LSQ_NOTICE("%s: got null stream: no more streams possible; # files: %u", - __func__, client_ctx->n_files); - --client_ctx->n_files; - if (0 == client_ctx->n_files) - { - LSQ_DEBUG("closing connection"); - lsquic_conn_close(client_ctx->conn_h->conn); - } - return NULL; - } - lsquic_stream_ctx_t *st_h = calloc(1, sizeof(*st_h)); - st_h->stream = stream; - st_h->client_ctx = stream_if_ctx; - if (LIST_EMPTY(&st_h->client_ctx->files)) - { - /* XXX: perhaps we should not be able to write immediately: there may - * be internal memory constraints... - */ - lsquic_stream_write(stream, "client request", 14); - (void) lsquic_stream_flush(stream); - lsquic_stream_wantwrite(stream, 0); - lsquic_stream_wantread(stream, 1); - } - else - { - st_h->file = LIST_FIRST(&st_h->client_ctx->files); - if (g_write_file) - { - st_h->file->fd = -1; - st_h->file->reader.lsqr_read = test_reader_read; - st_h->file->reader.lsqr_size = test_reader_size; - st_h->file->reader.lsqr_ctx = create_lsquic_reader_ctx(st_h->file->filename); - if (!st_h->file->reader.lsqr_ctx) - exit(1); - } - else - { - st_h->file->fd = open(st_h->file->filename, O_RDONLY); - if (st_h->file->fd < 0) - { - LSQ_ERROR("could not open %s for reading: %s", - st_h->file->filename, strerror(errno)); - exit(1); - } - } - LIST_REMOVE(st_h->file, next_file); - lsquic_stream_set_priority(stream, st_h->file->priority); - lsquic_stream_wantwrite(stream, 1); - } - return st_h; -} - - -static size_t -buf_reader_size (void *reader_ctx) -{ - lsquic_stream_ctx_t *const st_h = reader_ctx; - struct stat st; - off_t off; - - if (st_h->small.initialized) - goto initialized; - - if (0 != fstat(st_h->file->fd, &st)) - { - LSQ_ERROR("fstat failed: %s", strerror(errno)); - goto err; - } - - off = lseek(st_h->file->fd, 0, SEEK_CUR); - if (off == (off_t) -1) - { - LSQ_ERROR("lseek failed: %s", strerror(errno)); - goto err; - } - - if (st.st_size < off) - { - LSQ_ERROR("size mismatch"); - goto err; - } - - st_h->small.initialized = 1; - st_h->small.off = off; - st_h->small.size = st.st_size; - - initialized: - if (st_h->small.size - st_h->small.off > LOCAL_BUF_SIZE) - return LOCAL_BUF_SIZE; - else - return st_h->small.size - st_h->small.off; - - err: - close(st_h->file->fd); - st_h->file->fd = 0; - return 0; -} - - -static size_t -buf_reader_read (void *reader_ctx, void *buf, size_t count) -{ - lsquic_stream_ctx_t *const st_h = reader_ctx; - ssize_t nr; - unsigned char local_buf[LOCAL_BUF_SIZE]; - - assert(st_h->small.initialized); - - if (count > sizeof(local_buf)) - count = sizeof(local_buf); - - nr = read(st_h->file->fd, local_buf, count); - if (nr < 0) - { - LSQ_ERROR("read: %s", strerror(errno)); - close(st_h->file->fd); - st_h->file->fd = 0; - return 0; - } - - memcpy(buf, local_buf, nr); - st_h->small.off += nr; - return nr; -} - - -static void -client_file_on_write_buf (lsquic_stream_ctx_t *st_h) -{ - ssize_t nw; - struct lsquic_reader reader = { - .lsqr_read = buf_reader_read, - .lsqr_size = buf_reader_size, - .lsqr_ctx = st_h, - }; - - if (g_reset_stream.stream_id == lsquic_stream_id(st_h->stream) && - lseek(st_h->file->fd, 0, SEEK_CUR) >= g_reset_stream.offset) - { - /* Note: this is an internal function */ - lsquic_stream_maybe_reset(st_h->stream, - 0x01 /* QUIC_INTERNAL_ERROR */, 1); - g_reset_stream.stream_id = 0; /* Reset only once */ - } - - nw = lsquic_stream_writef(st_h->stream, &reader); - if (-1 == nw) - { - if (ECONNRESET == errno) - st_h->file->file_flags |= FILE_RESET; - LSQ_WARN("lsquic_stream_read: %s", strerror(errno)); - lsquic_stream_close(st_h->stream); - return; - } - -#if RESET_AFTER_N_WRITES - static int write_count = 0; - if (write_count++ > RESET_AFTER_N_WRITES) - lsquic_stream_reset(st_h->stream, 0); -#endif - - if (0 == nw) - { - (void) close(st_h->file->fd); - if (0 == lsquic_stream_shutdown(st_h->stream, 1)) - lsquic_stream_wantread(st_h->stream, 1); - else - { - if (ECONNRESET == errno) - st_h->file->file_flags |= FILE_RESET; - LSQ_WARN("lsquic_stream_shutdown: %s", strerror(errno)); - lsquic_stream_close(st_h->stream); - } - } -} - - -static void -client_file_on_write_efficient (lsquic_stream_t *stream, - lsquic_stream_ctx_t *st_h) -{ - ssize_t nw; - - nw = lsquic_stream_writef(stream, &st_h->file->reader); - if (nw < 0) - { - LSQ_ERROR("write error: %s", strerror(errno)); - exit(1); - } - if (nw == 0) - { - destroy_lsquic_reader_ctx(st_h->file->reader.lsqr_ctx); - st_h->file->reader.lsqr_ctx = NULL; - if (0 == lsquic_stream_shutdown(st_h->stream, 1)) - lsquic_stream_wantread(st_h->stream, 1); - else - { - if (ECONNRESET == errno) - st_h->file->file_flags |= FILE_RESET; - LSQ_WARN("lsquic_stream_shutdown: %s", strerror(errno)); - lsquic_stream_close(st_h->stream); - } - } -} - - -static void -client_file_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - if (g_write_file) - client_file_on_write_efficient(stream, st_h); - else - client_file_on_write_buf(st_h); -} - - -static void -client_file_on_read (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - char buf; - /* We expect to read in 32-character MD5 string */ - size_t ntoread = sizeof(st_h->file->md5str) - st_h->file->md5_off; - if (0 == ntoread) - { - lsquic_stream_wantread(stream, 0); - /* XXX What about an error (due to RST_STREAM) here: how are we to - * handle it? - */ - /* Expect a FIN */ - if (0 == lsquic_stream_read(stream, &buf, sizeof(buf))) - { - LSQ_NOTICE("%.*s %s", (int) sizeof(st_h->file->md5str), - st_h->file->md5str, - st_h->file->filename); - fflush(stdout); - LSQ_DEBUG("# of files: %d", st_h->client_ctx->n_files); - lsquic_stream_shutdown(stream, 0); - } - else - LSQ_ERROR("expected FIN from stream!"); - } - else - { - ssize_t nr = lsquic_stream_read(stream, - st_h->file->md5str + st_h->file->md5_off, ntoread); - if (-1 == nr) - { - if (ECONNRESET == errno) - st_h->file->file_flags |= FILE_RESET; - LSQ_WARN("lsquic_stream_read: %s", strerror(errno)); - lsquic_stream_close(stream); - return; - } - else - st_h->file->md5_off += nr; - } -} - - -static void -client_file_on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - --st_h->client_ctx->n_files; - LSQ_NOTICE("%s called for stream %"PRIu64", # files: %u", __func__, - lsquic_stream_id(stream), st_h->client_ctx->n_files); - if (0 == st_h->client_ctx->n_files) - lsquic_conn_close(st_h->client_ctx->conn_h->conn); - if (!(st_h->file->file_flags & FILE_RESET) && 0 == RESET_AFTER_N_WRITES) - assert(st_h->file->md5_off == sizeof(st_h->file->md5str)); - if (st_h->file->reader.lsqr_ctx) - { - destroy_lsquic_reader_ctx(st_h->file->reader.lsqr_ctx); - st_h->file->reader.lsqr_ctx = NULL; - } - if (st_h->file->fd >= 0) - (void) close(st_h->file->fd); - free(st_h->file); - free(st_h); -} - - -const struct lsquic_stream_if client_file_stream_if = { - .on_new_conn = client_on_new_conn, - .on_goaway_received = client_on_goaway_received, - .on_conn_closed = client_on_conn_closed, - .on_new_stream = client_on_new_stream, - .on_read = client_file_on_read, - .on_write = client_file_on_write, - .on_close = client_file_on_close, -}; - - -static void -usage (const char *prog) -{ - const char *const slash = strrchr(prog, '/'); - if (slash) - prog = slash + 1; - printf( -"Usage: %s [opts]\n" -"\n" -"Options:\n" -" -f FILE File to send to the server -- must be specified at least\n" -" once.\n" -" -b Use buffering API for sending files over rather than\n" -" the efficient version.\n" -" -p PRIORITY Applicatble to previous file specified with -f\n" -" -r STREAM_ID:OFFSET\n" -" Reset stream STREAM_ID after sending more that OFFSET bytes.\n" - , prog); -} - - -int -main (int argc, char **argv) -{ - int opt, s; - struct sport_head sports; - struct prog prog; - struct client_ctx client_ctx; - struct file *file; - - file = NULL; - memset(&client_ctx, 0, sizeof(client_ctx)); - client_ctx.prog = &prog; - - TAILQ_INIT(&sports); - prog_init(&prog, 0, &sports, &client_file_stream_if, &client_ctx); - prog.prog_api.ea_alpn = "md5"; - - while (-1 != (opt = getopt(argc, argv, PROG_OPTS "bhr:f:p:"))) - { - switch (opt) { - case 'p': - if (file) - file->priority = atoi(optarg); - else - { - fprintf(stderr, "No file to apply priority to\n"); - exit(1); - } - break; - case 'b': - g_write_file = 0; - break; - case 'f': - file = calloc(1, sizeof(*file)); - LIST_INSERT_HEAD(&client_ctx.files, file, next_file); - ++client_ctx.n_files; - file->filename = optarg; - break; - case 'r': - g_reset_stream.stream_id = atoi(optarg); - g_reset_stream.offset = atoi(strchr(optarg, ':') + 1); - break; - case 'h': - usage(argv[0]); - prog_print_common_options(&prog, stdout); - exit(0); - default: - if (0 != prog_set_opt(&prog, opt, optarg)) - exit(1); - } - } - - if (LIST_EMPTY(&client_ctx.files)) - { - fprintf(stderr, "please specify one of more files using -f\n"); - exit(1); - } - - if (0 != prog_prep(&prog)) - { - LSQ_ERROR("could not prep"); - exit(EXIT_FAILURE); - } - client_ctx.sport = TAILQ_FIRST(&sports); - - if (0 != prog_connect(&prog, NULL, 0)) - { - LSQ_ERROR("could not connect"); - exit(EXIT_FAILURE); - } - - LSQ_DEBUG("entering event loop"); - - s = prog_run(&prog); - prog_cleanup(&prog); - - exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); -} diff --git a/external/lsquic/bin/md5_server.c b/external/lsquic/bin/md5_server.c deleted file mode 100644 index d47ccbf..0000000 --- a/external/lsquic/bin/md5_server.c +++ /dev/null @@ -1,345 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * md5_server.c -- Read one or more streams from the client and return - * MD5 sum of the payload. - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include - -#include "lsquic.h" -#include "test_common.h" -#include "../src/liblsquic/lsquic_hash.h" -#include "test_cert.h" -#include "prog.h" - -#include "../src/liblsquic/lsquic_logger.h" - - -static int g_really_calculate_md5 = 1; - -/* Turn on to test whether stream reset is being sent when stream is closed - * prematurely. - */ -static struct { - unsigned stream_id; - unsigned long limit; - unsigned long n_read; -} g_premature_close; - -struct lsquic_conn_ctx; - -struct server_ctx { - TAILQ_HEAD(, lsquic_conn_ctx) conn_ctxs; - unsigned max_reqs; - int n_conn; - time_t expiry; - struct sport_head sports; - struct prog *prog; -}; - -struct lsquic_conn_ctx { - TAILQ_ENTRY(lsquic_conn_ctx) next_connh; - lsquic_conn_t *conn; - unsigned n_reqs, n_closed; - struct server_ctx *server_ctx; -}; - - -static lsquic_conn_ctx_t * -server_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) -{ - struct server_ctx *server_ctx = stream_if_ctx; - lsquic_conn_ctx_t *conn_h = calloc(1, sizeof(*conn_h)); - conn_h->conn = conn; - conn_h->server_ctx = server_ctx; - TAILQ_INSERT_TAIL(&server_ctx->conn_ctxs, conn_h, next_connh); - LSQ_NOTICE("New connection!"); - print_conn_info(conn); - return conn_h; -} - - -static void -server_on_conn_closed (lsquic_conn_t *conn) -{ - lsquic_conn_ctx_t *conn_h = lsquic_conn_get_ctx(conn); - int stopped; - - if (conn_h->server_ctx->expiry && conn_h->server_ctx->expiry < time(NULL)) - { - LSQ_NOTICE("reached engine expiration time, shut down"); - prog_stop(conn_h->server_ctx->prog); - stopped = 1; - } - else - stopped = 0; - - if (conn_h->server_ctx->n_conn) - { - --conn_h->server_ctx->n_conn; - LSQ_NOTICE("Connection closed, remaining: %d", conn_h->server_ctx->n_conn); - if (0 == conn_h->server_ctx->n_conn && !stopped) - prog_stop(conn_h->server_ctx->prog); - } - else - LSQ_NOTICE("Connection closed"); - TAILQ_REMOVE(&conn_h->server_ctx->conn_ctxs, conn_h, next_connh); - - lsquic_conn_set_ctx(conn, NULL); - free(conn_h); -} - - -struct lsquic_stream_ctx { - lsquic_stream_t *stream; - struct server_ctx *server_ctx; - MD5_CTX md5ctx; - unsigned char md5sum[MD5_DIGEST_LENGTH]; - char md5str[MD5_DIGEST_LENGTH * 2 + 1]; -}; - - -static struct lsquic_conn_ctx * -find_conn_h (const struct server_ctx *server_ctx, lsquic_stream_t *stream) -{ - struct lsquic_conn_ctx *conn_h; - lsquic_conn_t *conn; - - conn = lsquic_stream_conn(stream); - TAILQ_FOREACH(conn_h, &server_ctx->conn_ctxs, next_connh) - if (conn_h->conn == conn) - return conn_h; - return NULL; -} - - -static lsquic_stream_ctx_t * -server_md5_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) -{ - struct lsquic_conn_ctx *conn_h; - lsquic_stream_ctx_t *st_h = malloc(sizeof(*st_h)); - st_h->stream = stream; - st_h->server_ctx = stream_if_ctx; - lsquic_stream_wantread(stream, 1); - if (g_really_calculate_md5) - MD5_Init(&st_h->md5ctx); - conn_h = find_conn_h(st_h->server_ctx, stream); - assert(conn_h); - conn_h->n_reqs++; - LSQ_NOTICE("request #%u", conn_h->n_reqs); - if (st_h->server_ctx->max_reqs && - conn_h->n_reqs >= st_h->server_ctx->max_reqs) - { - /* The assert guards the assumption that after the we mark the - * connection as going away, no new streams are opened and thus - * this callback is not called. - */ - assert(conn_h->n_reqs == st_h->server_ctx->max_reqs); - LSQ_NOTICE("reached maximum requests: %u, going away", - st_h->server_ctx->max_reqs); - lsquic_conn_going_away(conn_h->conn); - } - return st_h; -} - - -static void -server_md5_on_read (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - char buf[0x1000]; - ssize_t nr; - - nr = lsquic_stream_read(stream, buf, sizeof(buf)); - if (-1 == nr) - { - /* This should never return an error if we only call read() once - * per callback. - */ - perror("lsquic_stream_read"); - lsquic_stream_shutdown(stream, 0); - return; - } - - if (g_premature_close.limit && - g_premature_close.stream_id == lsquic_stream_id(stream)) - { - g_premature_close.n_read += nr; - if (g_premature_close.n_read > g_premature_close.limit) - { - LSQ_WARN("Done after reading %lu bytes", g_premature_close.n_read); - lsquic_stream_shutdown(stream, 0); - return; - } - } - - if (nr) - { - if (g_really_calculate_md5) - MD5_Update(&st_h->md5ctx, buf, nr); - } - else - { - lsquic_stream_wantread(stream, 0); - if (g_really_calculate_md5) - { - MD5_Final(st_h->md5sum, &st_h->md5ctx); - snprintf(st_h->md5str, sizeof(st_h->md5str), - "%02x%02x%02x%02x%02x%02x%02x%02x" - "%02x%02x%02x%02x%02x%02x%02x%02x" - , st_h->md5sum[0] - , st_h->md5sum[1] - , st_h->md5sum[2] - , st_h->md5sum[3] - , st_h->md5sum[4] - , st_h->md5sum[5] - , st_h->md5sum[6] - , st_h->md5sum[7] - , st_h->md5sum[8] - , st_h->md5sum[9] - , st_h->md5sum[10] - , st_h->md5sum[11] - , st_h->md5sum[12] - , st_h->md5sum[13] - , st_h->md5sum[14] - , st_h->md5sum[15] - ); - } - else - { - memset(st_h->md5str, '0', sizeof(st_h->md5str) - 1); - st_h->md5str[sizeof(st_h->md5str) - 1] = '\0'; - } - lsquic_stream_wantwrite(stream, 1); - lsquic_stream_shutdown(stream, 0); - } -} - - -static void -server_md5_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - ssize_t nw; - nw = lsquic_stream_write(stream, st_h->md5str, sizeof(st_h->md5str) - 1); - if (-1 == nw) - { - perror("lsquic_stream_write"); - return; - } - lsquic_stream_wantwrite(stream, 0); - lsquic_stream_shutdown(stream, 1); -} - - -static void -server_on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - struct lsquic_conn_ctx *conn_h; - LSQ_NOTICE("%s called", __func__); - conn_h = find_conn_h(st_h->server_ctx, stream); - conn_h->n_closed++; - if (st_h->server_ctx->max_reqs && - conn_h->n_closed >= st_h->server_ctx->max_reqs) - { - assert(conn_h->n_closed == st_h->server_ctx->max_reqs); - LSQ_NOTICE("closing connection after completing %u requests", - conn_h->n_closed); - lsquic_conn_close(conn_h->conn); - } - free(st_h); -} - - -const struct lsquic_stream_if server_md5_stream_if = { - .on_new_conn = server_on_new_conn, - .on_conn_closed = server_on_conn_closed, - .on_new_stream = server_md5_on_new_stream, - .on_read = server_md5_on_read, - .on_write = server_md5_on_write, - .on_close = server_on_close, -}; - - -static void -usage (const char *prog) -{ - const char *const slash = strrchr(prog, '/'); - if (slash) - prog = slash + 1; - printf( -"Usage: %s [opts]\n" -"\n" -"Options:\n" -" -e EXPIRY Stop engine after this many seconds. The expiration is\n" -" checked when connections are closed.\n" - , prog); -} - - -int -main (int argc, char **argv) -{ - int opt, s; - struct prog prog; - struct server_ctx server_ctx; - - memset(&server_ctx, 0, sizeof(server_ctx)); - TAILQ_INIT(&server_ctx.conn_ctxs); - server_ctx.prog = &prog; - TAILQ_INIT(&server_ctx.sports); - prog_init(&prog, LSENG_SERVER, &server_ctx.sports, - &server_md5_stream_if, &server_ctx); - - while (-1 != (opt = getopt(argc, argv, PROG_OPTS "hr:Fn:e:p:"))) - { - switch (opt) { - case 'F': - g_really_calculate_md5 = 0; - break; - case 'p': - g_premature_close.stream_id = atoi(optarg); - g_premature_close.limit = atoi(strchr(optarg, ':') + 1); - break; - case 'r': - server_ctx.max_reqs = atoi(optarg); - break; - case 'e': - server_ctx.expiry = time(NULL) + atoi(optarg); - break; - case 'n': - server_ctx.n_conn = atoi(optarg); - break; - case 'h': - usage(argv[0]); - prog_print_common_options(&prog, stdout); - exit(0); - default: - if (0 != prog_set_opt(&prog, opt, optarg)) - exit(1); - } - } - - add_alpn("md5"); - if (0 != prog_prep(&prog)) - { - LSQ_ERROR("could not prep"); - exit(EXIT_FAILURE); - } - - LSQ_DEBUG("entering event loop"); - - s = prog_run(&prog); - prog_cleanup(&prog); - - exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); -} diff --git a/external/lsquic/bin/perf_client.c b/external/lsquic/bin/perf_client.c deleted file mode 100644 index 6933710..0000000 --- a/external/lsquic/bin/perf_client.c +++ /dev/null @@ -1,407 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * perf_client.c -- Implements the "perf" client, see - * https://tools.ietf.org/html/draft-banks-quic-performance-00 - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef WIN32 -#include -#include -#else -#include "vc_compat.h" -#include "getopt.h" -#endif - -#include - -#include "lsquic.h" -#include "test_common.h" -#include "prog.h" - -#include "../src/liblsquic/lsquic_logger.h" -#include "../src/liblsquic/lsquic_byteswap.h" - -struct scenario -{ - STAILQ_ENTRY(scenario) next; - uint64_t bytes_to_request; - uint64_t bytes_to_send; /* After the 8-byte header */ -}; - -/* Assume all connections use the same list of scenarios, so store it in - * a global variable. - */ -static STAILQ_HEAD(, scenario) s_scenarios - = STAILQ_HEAD_INITIALIZER(s_scenarios); -static unsigned s_n_scenarios; -static unsigned s_n_conns; - -struct prog s_prog; - -struct lsquic_conn_ctx -{ - /* Once a connection runs out of scenarios, no new streams are created - * and the connection is closed when all streams are closed. - */ - const struct scenario *next_scenario; - unsigned n_scenarios_left; - unsigned n_streams; -}; - - -static bool -perf_create_streams (struct lsquic_conn *conn, struct lsquic_conn_ctx *conn_ctx) -{ - if (conn_ctx->n_scenarios_left) - { - --conn_ctx->n_scenarios_left; - lsquic_conn_make_stream(conn); - return true; - } - else - return false; -} - - -static lsquic_conn_ctx_t * -perf_client_on_new_conn (void *stream_if_ctx, struct lsquic_conn *conn) -{ - struct lsquic_conn_ctx *conn_ctx; - - if (s_n_scenarios) - { - conn_ctx = calloc(1, sizeof(*conn_ctx)); - conn_ctx->next_scenario = STAILQ_FIRST(&s_scenarios); - conn_ctx->n_scenarios_left = s_n_scenarios; - perf_create_streams(conn, conn_ctx); - ++s_n_conns; - return conn_ctx; - } - else - { - lsquic_conn_close(conn); - return NULL; - } -} - - -static void -perf_client_on_conn_closed (struct lsquic_conn *conn) -{ - struct lsquic_conn_ctx *conn_ctx; - - LSQ_NOTICE("Connection closed"); - conn_ctx = lsquic_conn_get_ctx(conn); - lsquic_conn_set_ctx(conn, NULL); - free(conn_ctx); - --s_n_conns; - if (0 == s_n_conns) - prog_stop(&s_prog); -} - - -struct lsquic_stream_ctx -{ - const struct scenario *scenario; - struct { - uint64_t header; /* Big-endian */ - unsigned n_h; /* Number of header bytes written */ - uint64_t n_written; /* Number of non-header bytes written */ - } write_state; - struct { - uint64_t n_read; - } read_state; -}; - - -static struct lsquic_stream_ctx * -perf_client_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) -{ - struct lsquic_conn_ctx *conn_ctx; - struct lsquic_conn *conn; - - conn = lsquic_stream_conn(stream); - conn_ctx = lsquic_conn_get_ctx(conn); - - if (!stream) - { - LSQ_NOTICE("%s: got null stream: no more streams possible", __func__); - lsquic_conn_close(conn); - return NULL; - } - - assert(conn_ctx->next_scenario); - - struct lsquic_stream_ctx *stream_ctx = calloc(1, sizeof(*stream_ctx)); - stream_ctx->scenario = conn_ctx->next_scenario; - conn_ctx->next_scenario = STAILQ_NEXT(conn_ctx->next_scenario, next); -#if __BYTE_ORDER == __LITTLE_ENDIAN - stream_ctx->write_state.header - = bswap_64(stream_ctx->scenario->bytes_to_request); -#else - stream_ctx->write_state.header = stream_ctx->scenario->bytes_to_request; -#endif - lsquic_stream_wantwrite(stream, 1); - return stream_ctx; -} - - -static size_t -buffer_size (void *lsqr_ctx) -{ - struct lsquic_stream_ctx *const stream_ctx = lsqr_ctx; - return stream_ctx->scenario->bytes_to_send - - stream_ctx->write_state.n_written; -} - - -static size_t -buffer_read (void *lsqr_ctx, void *buf, size_t count) -{ - struct lsquic_stream_ctx *const stream_ctx = lsqr_ctx; - size_t left; - - left = buffer_size(stream_ctx); - if (count > left) - count = left; - memset(buf, 0, count); - stream_ctx->write_state.n_written += count; - return count; -} - - -static size_t -header_size (void *lsqr_ctx) -{ - struct lsquic_stream_ctx *const stream_ctx = lsqr_ctx; - return sizeof(uint64_t) - stream_ctx->write_state.n_h; -} - - -static size_t -header_read (void *lsqr_ctx, void *buf, size_t count) -{ - struct lsquic_stream_ctx *const stream_ctx = lsqr_ctx; - const unsigned char *src; - size_t left; - - left = header_size(stream_ctx); - if (count < left) - count = left; - src = (unsigned char *) &stream_ctx->write_state.header - + sizeof(uint64_t) - left; - memcpy(buf, src, count); - stream_ctx->write_state.n_h += count; - return count; -} - - -static void -perf_client_on_write (struct lsquic_stream *stream, - struct lsquic_stream_ctx *stream_ctx) -{ - struct lsquic_reader reader; - ssize_t nw; - - if (stream_ctx->write_state.n_h >= sizeof(uint64_t)) - reader = (struct lsquic_reader) { - buffer_read, - buffer_size, - stream_ctx, - }; - else - reader = (struct lsquic_reader) { - header_read, - header_size, - stream_ctx, - }; - - nw = lsquic_stream_writef(stream, &reader); - if (nw >= 0) - LSQ_DEBUG("%s: wrote %zd bytes", __func__, nw); - else - LSQ_WARN("%s: cannot write to stream: %s", __func__, strerror(errno)); - - if (reader.lsqr_size(stream_ctx) == 0 - && (reader.lsqr_size == buffer_size || buffer_size(stream_ctx) == 0)) - { - lsquic_stream_shutdown(stream, 1); - lsquic_stream_wantread(stream, 1); - } -} - - -static size_t -perf_read_and_discard (void *user_data, const unsigned char *buf, - size_t count, int fin) -{ - return count; -} - - -static void -perf_client_on_read (struct lsquic_stream *stream, - struct lsquic_stream_ctx *stream_ctx) -{ - ssize_t nr; - - nr = lsquic_stream_readf(stream, perf_read_and_discard, NULL); - if (nr >= 0) - { - stream_ctx->read_state.n_read += nr; - if (nr == 0) - { - LSQ_DEBUG("reached fin after reading %"PRIu64" bytes from server", - stream_ctx->read_state.n_read); - lsquic_stream_shutdown(stream, 0); - } - } - else - { - LSQ_WARN("error reading from stream: %s, abort connection", - strerror(errno)); - lsquic_stream_close(stream); - lsquic_conn_abort(lsquic_stream_conn(stream)); - } -} - - -static void -perf_client_on_close (struct lsquic_stream *stream, - struct lsquic_stream_ctx *stream_ctx) -{ - struct lsquic_conn_ctx *conn_ctx; - struct lsquic_conn *conn; - - conn = lsquic_stream_conn(stream); - conn_ctx = lsquic_conn_get_ctx(conn); - if (!perf_create_streams(conn, conn_ctx)) - { - LSQ_DEBUG("out of scenarios, will close connection"); - lsquic_conn_close(conn); - } - free(stream_ctx); -} - - -const struct lsquic_stream_if perf_stream_if = { - .on_new_conn = perf_client_on_new_conn, - .on_conn_closed = perf_client_on_conn_closed, - .on_new_stream = perf_client_on_new_stream, - .on_read = perf_client_on_read, - .on_write = perf_client_on_write, - .on_close = perf_client_on_close, -}; - - -static void -usage (const char *prog) -{ - const char *const slash = strrchr(prog, '/'); - if (slash) - prog = slash + 1; - printf( -"Usage: %s [opts]\n" -"\n" -"Options:\n" -" -p NREQ:NSEND Request NREQ bytes from server and, in addition, send\n" -" NSEND bytes to server. May be specified many times\n" -" and must be specified at least once.\n" -" -T FILE Print stats to FILE. If FILE is -, print stats to stdout.\n" - , prog); -} - - -int -main (int argc, char **argv) -{ - char *p; - int opt, s; - struct sport_head sports; - struct scenario *scenario; - - TAILQ_INIT(&sports); - prog_init(&s_prog, 0, &sports, &perf_stream_if, NULL); - s_prog.prog_api.ea_alpn = "perf"; - s_prog.prog_settings.es_delay_onclose = 1; - - while (-1 != (opt = getopt(argc, argv, PROG_OPTS "hp:T:"))) - { - switch (opt) { - case 'p': - scenario = calloc(1, sizeof(*scenario)); - if (!scenario) - { - perror("calloc"); - exit(EXIT_FAILURE); - } - ++s_n_scenarios; - STAILQ_INSERT_TAIL(&s_scenarios, scenario, next); - scenario->bytes_to_request = strtoull(optarg, &p, 10); - if (*p != ':') - { - fprintf(stderr, "invalid scenario `%s'\n", optarg); - exit(EXIT_FAILURE); - } - scenario->bytes_to_send = strtoull(p + 1, NULL, 10); - break; - case 'T': - if (0 == strcmp(optarg, "-")) - s_prog.prog_api.ea_stats_fh = stdout; - else - { - s_prog.prog_api.ea_stats_fh = fopen(optarg, "w"); - if (!s_prog.prog_api.ea_stats_fh) - { - perror("fopen"); - exit(1); - } - } - break; - case 'h': - usage(argv[0]); - prog_print_common_options(&s_prog, stdout); - exit(0); - default: - if (0 != prog_set_opt(&s_prog, opt, optarg)) - exit(1); - } - } - - if (STAILQ_EMPTY(&s_scenarios)) - { - fprintf(stderr, "please specify one of more requests using -p\n"); - exit(1); - } - - if (0 != prog_prep(&s_prog)) - { - LSQ_ERROR("could not prep"); - exit(EXIT_FAILURE); - } - - if (0 != prog_connect(&s_prog, NULL, 0)) - { - LSQ_ERROR("could not connect"); - exit(EXIT_FAILURE); - } - - LSQ_DEBUG("entering event loop"); - - s = prog_run(&s_prog); - prog_cleanup(&s_prog); - - exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); -} diff --git a/external/lsquic/bin/perf_server.c b/external/lsquic/bin/perf_server.c deleted file mode 100644 index d43cc62..0000000 --- a/external/lsquic/bin/perf_server.c +++ /dev/null @@ -1,253 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * perf_server.c -- Implements the "perf" server, see - * https://tools.ietf.org/html/draft-banks-quic-performance-00 - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef WIN32 -#include -#include -#else -#include "vc_compat.h" -#include "getopt.h" -#endif - -#include - -#include "lsquic.h" -#include "test_common.h" -#include "../src/liblsquic/lsquic_hash.h" -#include "test_cert.h" -#include "prog.h" - -#include "../src/liblsquic/lsquic_byteswap.h" -#include "../src/liblsquic/lsquic_logger.h" - - -static lsquic_conn_ctx_t * -perf_server_on_new_conn (void *stream_if_ctx, lsquic_conn_t *conn) -{ - LSQ_INFO("New connection!"); - return NULL; -} - - -static void -perf_server_on_conn_closed (lsquic_conn_t *conn) -{ - LSQ_INFO("Connection closed"); -} - - -struct lsquic_stream_ctx -{ - union { - uint64_t left; /* Number of bytes left to write */ - unsigned char buf[sizeof(uint64_t)]; /* Read client header in */ - } u; - unsigned n_h_read; /* Number of header bytes read in */ -}; - - -static struct lsquic_stream_ctx * -perf_server_on_new_stream (void *unused, struct lsquic_stream *stream) -{ - struct lsquic_stream_ctx *stream_ctx; - - stream_ctx = calloc(1, sizeof(*stream_ctx)); - if (stream_ctx) - { - lsquic_stream_wantread(stream, 1); - return stream_ctx; - } - else - { - perror("calloc"); - exit(EXIT_FAILURE); - } -} - - -static size_t -perf_read_and_discard (void *user_data, const unsigned char *buf, - size_t count, int fin) -{ - return count; -} - - -static void -perf_server_on_read (struct lsquic_stream *stream, - struct lsquic_stream_ctx *stream_ctx) -{ - ssize_t nr; - size_t toread; - - if (stream_ctx->n_h_read < sizeof(stream_ctx->u.buf)) - { - /* Read the header */ - toread = sizeof(stream_ctx->u.buf) - stream_ctx->n_h_read; - nr = lsquic_stream_read(stream, stream_ctx->u.buf - + sizeof(stream_ctx->u.buf) - toread, toread); - if (nr > 0) - { - stream_ctx->n_h_read += nr; - if (stream_ctx->n_h_read == sizeof(stream_ctx->u.left)) - { -#if __BYTE_ORDER == __LITTLE_ENDIAN - stream_ctx->u.left = bswap_64(stream_ctx->u.left); -#endif - LSQ_INFO("client requests %"PRIu64" bytes on stream %"PRIu64, - stream_ctx->u.left, lsquic_stream_id(stream)); - } - } - else if (nr < 0) - { - LSQ_WARN("error reading from stream: %s", strerror(errno)); - lsquic_stream_close(stream); - } - else - { - LSQ_WARN("incomplete header on stream %"PRIu64", abort connection", - lsquic_stream_id(stream)); - lsquic_stream_wantread(stream, 0); - lsquic_conn_abort(lsquic_stream_conn(stream)); - } - } - else - { - /* Read up until FIN, discarding whatever the client is sending */ - nr = lsquic_stream_readf(stream, perf_read_and_discard, NULL); - if (nr == 0) - { - lsquic_stream_wantread(stream, 0); - lsquic_stream_wantwrite(stream, 1); - } - else if (nr < 0) - { - LSQ_WARN("error reading from stream: %s", strerror(errno)); - lsquic_stream_close(stream); - } - } -} - - -static size_t -buffer_size (void *lsqr_ctx) -{ - struct lsquic_stream_ctx *const stream_ctx = lsqr_ctx; - return stream_ctx->u.left; -} - - -static size_t -buffer_read (void *lsqr_ctx, void *buf, size_t count) -{ - struct lsquic_stream_ctx *const stream_ctx = lsqr_ctx; - size_t left; - - left = buffer_size(stream_ctx); - if (count > left) - count = left; - memset(buf, 0, count); - stream_ctx->u.left -= count; - return count; -} - - -static void -perf_server_on_write (struct lsquic_stream *stream, - struct lsquic_stream_ctx *stream_ctx) -{ - struct lsquic_reader reader; - ssize_t nw; - - reader = (struct lsquic_reader) { buffer_read, buffer_size, stream_ctx, }; - nw = lsquic_stream_writef(stream, &reader); - if (nw >= 0) - LSQ_DEBUG("%s: wrote %zd bytes", __func__, nw); - else - LSQ_WARN("%s: cannot write to stream: %s", __func__, strerror(errno)); - - if (stream_ctx->u.left == 0) - lsquic_stream_shutdown(stream, 1); -} - - -static void -perf_server_on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *stream_ctx) -{ - LSQ_DEBUG("stream closed"); - free(stream_ctx); -} - - -const struct lsquic_stream_if perf_server_stream_if = { - .on_new_conn = perf_server_on_new_conn, - .on_conn_closed = perf_server_on_conn_closed, - .on_new_stream = perf_server_on_new_stream, - .on_read = perf_server_on_read, - .on_write = perf_server_on_write, - .on_close = perf_server_on_close, -}; - - -static void -usage (const char *prog) -{ - const char *const slash = strrchr(prog, '/'); - if (slash) - prog = slash + 1; - printf( -"Usage: %s [opts]\n" -"\n" - , prog); -} - - -int -main (int argc, char **argv) -{ - int opt, s; - struct prog prog; - struct sport_head sports; - - TAILQ_INIT(&sports); - prog_init(&prog, LSENG_SERVER, &sports, &perf_server_stream_if, NULL); - - while (-1 != (opt = getopt(argc, argv, PROG_OPTS "h"))) - { - switch (opt) { - case 'h': - usage(argv[0]); - prog_print_common_options(&prog, stdout); - exit(0); - default: - if (0 != prog_set_opt(&prog, opt, optarg)) - exit(1); - } - } - - add_alpn("perf"); - if (0 != prog_prep(&prog)) - { - LSQ_ERROR("could not prep"); - exit(EXIT_FAILURE); - } - - LSQ_DEBUG("entering event loop"); - - s = prog_run(&prog); - prog_cleanup(&prog); - - exit(0 == s ? EXIT_SUCCESS : EXIT_FAILURE); -} diff --git a/external/lsquic/bin/prog.c b/external/lsquic/bin/prog.c deleted file mode 100644 index 48b367a..0000000 --- a/external/lsquic/bin/prog.c +++ /dev/null @@ -1,824 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#ifndef WIN32 -#include -#include -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#else -#include "vc_compat.h" -#include "getopt.h" -#pragma warning(disable:4028) -#endif// WIN32 - -#include - -#include - -#include - -#include "../src/liblsquic/lsquic_hash.h" -#include "../src/liblsquic/lsquic_int_types.h" -#include "../src/liblsquic/lsquic_util.h" -#include "../src/liblsquic/lsquic_logger.h" - -#include "test_config.h" -#include "test_cert.h" -#include "test_common.h" -#include "prog.h" - -static int prog_stopped; -static const char *s_keylog_dir; -static const char *s_sess_resume_file; - -static SSL_CTX * get_ssl_ctx (void *, const struct sockaddr *); -static void keylog_log_line (const SSL *, const char *); - -static const struct lsquic_packout_mem_if pmi = { - .pmi_allocate = pba_allocate, - .pmi_release = pba_release, - .pmi_return = pba_release, -}; - - -int -prog_init (struct prog *prog, unsigned flags, - struct sport_head *sports, - const struct lsquic_stream_if *stream_if, void *stream_if_ctx) -{ -#ifdef WIN32 - WSADATA wsd; - int s = WSAStartup(MAKEWORD(2, 2), &wsd); - if (s != 0) - { - LSQ_ERROR("WSAStartup failed: %d", s); - return -1; - } -#endif - /* prog-specific initialization: */ - memset(prog, 0, sizeof(*prog)); - prog->prog_engine_flags = flags; - prog->prog_sports = sports; - lsquic_engine_init_settings(&prog->prog_settings, flags); -#if ECN_SUPPORTED - prog->prog_settings.es_ecn = LSQUIC_DF_ECN; -#else - prog->prog_settings.es_ecn = 0; -#endif - - prog->prog_api.ea_settings = &prog->prog_settings; - prog->prog_api.ea_stream_if = stream_if; - prog->prog_api.ea_stream_if_ctx = stream_if_ctx; - prog->prog_api.ea_packets_out = sport_packets_out; - prog->prog_api.ea_packets_out_ctx - = prog; - prog->prog_api.ea_pmi = &pmi; - prog->prog_api.ea_pmi_ctx = &prog->prog_pba; - prog->prog_api.ea_get_ssl_ctx = get_ssl_ctx; - - /* Non prog-specific initialization: */ - lsquic_global_init(flags & LSENG_SERVER ? LSQUIC_GLOBAL_SERVER : - LSQUIC_GLOBAL_CLIENT); - lsquic_log_to_fstream(stderr, LLTS_HHMMSSUS); - lsquic_logger_lopt("=notice"); - return 0; -} - - -static int -prog_add_sport (struct prog *prog, const char *arg) -{ - struct service_port *sport; - sport = sport_new(arg, prog); - if (!sport) - return -1; - /* Default settings: */ - sport->sp_flags = prog->prog_dummy_sport.sp_flags; - sport->sp_sndbuf = prog->prog_dummy_sport.sp_sndbuf; - sport->sp_rcvbuf = prog->prog_dummy_sport.sp_rcvbuf; - TAILQ_INSERT_TAIL(prog->prog_sports, sport, next_sport); - return 0; -} - - -void -prog_print_common_options (const struct prog *prog, FILE *out) -{ - fprintf(out, -" -0 FILE Provide session resumption file (reading or writing)\n" -#if HAVE_REGEX -" -s SVCPORT Service port. Takes on the form of host:port, host,\n" -" or port. If host is not an IPv4 or IPv6 address, it is\n" -" resolved. If host is not set, the value of SNI is\n" -" used (see the -H flag). If port is not set, the default\n" -" is 443.\n" -#else -" -s SVCPORT Service port. Takes on the form of host:port or host.\n" -" If host is not an IPv4 or IPv6 address, it is resolved.\n" -" If port is not set, the default is 443.\n" -#endif -" Examples:\n" -" 127.0.0.1:12345\n" -" ::1:443\n" -" example.com\n" -" example.com:8443\n" -#if HAVE_REGEX -" 8443\n" -#endif -" If no -s option is given, 0.0.0.0:12345 address\n" -" is used.\n" -#if LSQUIC_DONTFRAG_SUPPORTED -" -D Do not set `do not fragment' flag on outgoing UDP packets\n" -#endif -" -z BYTES Maximum size of outgoing UDP packets (client only).\n" -" Overrides -o base_plpmtu.\n" -" -L LEVEL Log level for all modules. Possible values are `debug',\n" -" `info', `notice', `warn', `error', `alert', `emerg',\n" -" and `crit'.\n" -" -l LEVELS Log levels for modules, e.g.\n" -" -l event=info,engine=debug\n" -" Can be specified more than once.\n" -" -m MAX Maximum number of outgoing packet buffers that can be\n" -" assigned at any one time. By default, there is no max.\n" -" -y style Timestamp style used in log messages. The following styles\n" -" are supported:\n" -" 0 No timestamp\n" -" 1 Millisecond time (this is the default).\n" -" Example: 11:04:05.196\n" -" 2 Full date and millisecond time.\n" -" Example: 2017-03-21 13:43:46.671\n" -" 3 Chrome-like timestamp: date/time.microseconds.\n" -" Example: 1223/104613.946956\n" -" 4 Microsecond time.\n" -" Example: 11:04:05.196308\n" -" 5 Full date and microsecond time.\n" -" Example: 2017-03-21 13:43:46.671345\n" -" -S opt=val Socket options. Supported options:\n" -" sndbuf=12345 # Sets SO_SNDBUF\n" -" rcvbuf=12345 # Sets SO_RCVBUF\n" -" -W Use stock PMI (malloc & free)\n" -" -A CC_ALGO Congestion control algorithm. The following algorithms are\n" -" supported.\n" -" 1: Cubic\n" -" 2: BBRv1\n" -" 3: Adaptive congestion control (this is the default).\n" - ); - -#if HAVE_SENDMMSG - fprintf(out, -" -g Use sendmmsg() to send packets.\n" - ); -#endif -#if HAVE_RECVMMSG - fprintf(out, -" -j Use recvmmsg() to receive packets.\n" - ); -#endif - - if (prog->prog_engine_flags & LSENG_SERVER) - fprintf(out, -" -c CERTSPEC Service specification. The specification is three values\n" -" separated by commas. The values are:\n" -" * Domain name\n" -" * File containing cert in PEM format\n" -" * File containing private key in DER or PEM format\n" -" Example:\n" -" -c www.example.com,/tmp/cert.pem,/tmp/key.pkcs8\n" - ); - else - { - if (prog->prog_engine_flags & LSENG_HTTP) - fprintf(out, -" -H host Value of `host' HTTP header. This is also used as SNI\n" -" in Client Hello. This option is used to override the\n" -" `host' part of the address specified using -s flag.\n" - ); - else - fprintf(out, -" -H host Value of SNI in CHLO.\n" - ); - } - -#ifndef WIN32 - fprintf(out, -" -G dir SSL keys will be logged to files in this directory.\n" - ); -#endif - - - fprintf(out, -" -k Connect UDP socket. Only meant to be used with clients\n" -" to pick up ICMP errors.\n" -" -i USECS Clock granularity in microseconds. Defaults to %u.\n", - LSQUIC_DF_CLOCK_GRANULARITY - ); - fprintf(out, -" -h Print this help screen and exit\n" - ); -} - - -int -prog_set_opt (struct prog *prog, int opt, const char *arg) -{ -#ifndef WIN32 - struct stat st; - int s; -#endif - - switch (opt) - { -#if LSQUIC_DONTFRAG_SUPPORTED - case 'D': - { - struct service_port *sport = TAILQ_LAST(prog->prog_sports, sport_head); - if (!sport) - sport = &prog->prog_dummy_sport; - sport->sp_flags |= SPORT_FRAGMENT_OK; - } - return 0; -#endif -#if HAVE_SENDMMSG - case 'g': - prog->prog_use_sendmmsg = 1; - return 0; -#endif -#if HAVE_RECVMMSG - case 'j': - prog->prog_use_recvmmsg = 1; - return 0; -#endif - case 'm': - prog->prog_packout_max = atoi(arg); - return 0; - case 'z': - prog->prog_max_packet_size = atoi(arg); - return 0; - case 'W': - prog->prog_use_stock_pmi = 1; - return 0; - case 'A': - prog->prog_settings.es_cc_algo = atoi(optarg); - return 0; - case 'c': - if (prog->prog_engine_flags & LSENG_SERVER) - { - if (!prog->prog_certs) - prog->prog_certs = lsquic_hash_create(); - return load_cert(prog->prog_certs, arg); - } - else - return -1; - case 'H': - if (prog->prog_engine_flags & LSENG_SERVER) - return -1; - prog->prog_hostname = arg; - return 0; - case 'y': - lsquic_log_to_fstream(stderr, atoi(arg)); - return 0; - case 'L': - return lsquic_set_log_level(arg); - case 'l': - return lsquic_logger_lopt(arg); - case 'o': - return set_engine_option(&prog->prog_settings, - &prog->prog_version_cleared, arg); - case 'i': - prog->prog_settings.es_clock_granularity = atoi(arg); - return 0; - case 's': - if (0 == (prog->prog_engine_flags & LSENG_SERVER) && - !TAILQ_EMPTY(prog->prog_sports)) - return -1; - return prog_add_sport(prog, arg); - case 'S': - { - struct service_port *sport = TAILQ_LAST(prog->prog_sports, sport_head); - if (!sport) - sport = &prog->prog_dummy_sport; - char *const name = strdup(optarg); - char *val = strchr(name, '='); - if (!val) - { - free(name); - return -1; - } - *val = '\0'; - ++val; - if (0 == strcasecmp(name, "sndbuf")) - { - sport->sp_flags |= SPORT_SET_SNDBUF; - sport->sp_sndbuf = atoi(val); - free(name); - return 0; - } - else if (0 == strcasecmp(name, "rcvbuf")) - { - sport->sp_flags |= SPORT_SET_RCVBUF; - sport->sp_rcvbuf = atoi(val); - free(name); - return 0; - } - else - { - free(name); - return -1; - } - } - case 'k': - { - struct service_port *sport = TAILQ_LAST(prog->prog_sports, sport_head); - if (!sport) - sport = &prog->prog_dummy_sport; - sport->sp_flags |= SPORT_CONNECT; - } - return 0; - case '0': - s_sess_resume_file = optarg; - return 0; - case 'G': -#ifndef WIN32 - if (0 == stat(optarg, &st)) - { - if (!S_ISDIR(st.st_mode)) - { - LSQ_ERROR("%s is not a directory", optarg); - return -1; - } - } - else - { - s = mkdir(optarg, 0700); - if (s != 0) - { - LSQ_ERROR("cannot create directory %s: %s", optarg, - strerror(errno)); - return -1; - } - } - s_keylog_dir = optarg; - if (prog->prog_settings.es_ql_bits) - { - LSQ_NOTICE("QL loss bits turned off because of -G. If you want " - "to turn it on, just override: -G dir -o ql_bits=2"); - prog->prog_settings.es_ql_bits = 0; - } - return 0; -#else - LSQ_ERROR("key logging is not supported on Windows"); - return -1; -#endif - default: - return 1; - } -} - - -struct event_base * -prog_eb (struct prog *prog) -{ - return prog->prog_eb; -} - - -int -prog_connect (struct prog *prog, unsigned char *sess_resume, size_t sess_resume_len) -{ - struct service_port *sport; - - sport = TAILQ_FIRST(prog->prog_sports); - if (NULL == lsquic_engine_connect(prog->prog_engine, N_LSQVER, - (struct sockaddr *) &sport->sp_local_addr, - (struct sockaddr *) &sport->sas, sport, NULL, - prog->prog_hostname ? prog->prog_hostname - /* SNI is required for HTTP */ - : prog->prog_engine_flags & LSENG_HTTP ? sport->host - : NULL, - prog->prog_max_packet_size, sess_resume, sess_resume_len, - sport->sp_token_buf, sport->sp_token_sz)) - return -1; - - prog_process_conns(prog); - return 0; -} - - -static int -prog_init_client (struct prog *prog) -{ - struct service_port *sport; - - sport = TAILQ_FIRST(prog->prog_sports); - if (0 != sport_init_client(sport, prog->prog_engine, prog->prog_eb)) - return -1; - - return 0; -} - - -static SSL_CTX * -get_ssl_ctx (void *peer_ctx, const struct sockaddr *unused) -{ - const struct service_port *const sport = peer_ctx; - return sport->sp_prog->prog_ssl_ctx; -} - - -static int -prog_new_session_cb (SSL *ssl, SSL_SESSION *session) -{ - unsigned char *buf; - size_t bufsz, nw; - FILE *file; - - /* Our client is rather limited: only one file and only one ticket - * can be saved. A more flexible client implementation would call - * lsquic_ssl_to_conn() and maybe save more tickets based on its - * own configuration. - */ - if (!s_sess_resume_file) - return 0; - - if (0 != lsquic_ssl_sess_to_resume_info(ssl, session, &buf, &bufsz)) - { - LSQ_NOTICE("lsquic_ssl_sess_to_resume_info failed"); - return 0; - } - - file = fopen(s_sess_resume_file, "wb"); - if (!file) - { - LSQ_WARN("cannot open %s for writing: %s", - s_sess_resume_file, strerror(errno)); - free(buf); - return 0; - } - - nw = fwrite(buf, 1, bufsz, file); - if (nw == bufsz) - { - LSQ_INFO("wrote %zd bytes of session resumption information to %s", - nw, s_sess_resume_file); - s_sess_resume_file = NULL; /* Save just one ticket */ - } - else - LSQ_WARN("error: fwrite(%s) returns %zd instead of %zd: %s", - s_sess_resume_file, nw, bufsz, strerror(errno)); - - fclose(file); - free(buf); - return 0; -} - - -static int -prog_init_ssl_ctx (struct prog *prog) -{ - unsigned char ticket_keys[48]; - - prog->prog_ssl_ctx = SSL_CTX_new(TLS_method()); - if (!prog->prog_ssl_ctx) - { - LSQ_ERROR("cannot allocate SSL context"); - return -1; - } - - SSL_CTX_set_min_proto_version(prog->prog_ssl_ctx, TLS1_3_VERSION); - SSL_CTX_set_max_proto_version(prog->prog_ssl_ctx, TLS1_3_VERSION); - SSL_CTX_set_default_verify_paths(prog->prog_ssl_ctx); - - /* This is obviously test code: the key is just an array of NUL bytes */ - memset(ticket_keys, 0, sizeof(ticket_keys)); - if (1 != SSL_CTX_set_tlsext_ticket_keys(prog->prog_ssl_ctx, - ticket_keys, sizeof(ticket_keys))) - { - LSQ_ERROR("SSL_CTX_set_tlsext_ticket_keys failed"); - return -1; - } - - if (s_keylog_dir) - SSL_CTX_set_keylog_callback(prog->prog_ssl_ctx, keylog_log_line); - - if (s_sess_resume_file) - { - SSL_CTX_set_session_cache_mode(prog->prog_ssl_ctx, - SSL_SESS_CACHE_CLIENT); - SSL_CTX_set_early_data_enabled(prog->prog_ssl_ctx, 1); - SSL_CTX_sess_set_new_cb(prog->prog_ssl_ctx, prog_new_session_cb); - } - - return 0; -} - - -static int -prog_init_server (struct prog *prog) -{ - struct service_port *sport; - - TAILQ_FOREACH(sport, prog->prog_sports, next_sport) - if (0 != sport_init_server(sport, prog->prog_engine, prog->prog_eb)) - return -1; - - return 0; -} - - -void -prog_process_conns (struct prog *prog) -{ - int diff; - struct timeval timeout; - - lsquic_engine_process_conns(prog->prog_engine); - - if (lsquic_engine_earliest_adv_tick(prog->prog_engine, &diff)) - { - if (diff < 0 - || (unsigned) diff < prog->prog_settings.es_clock_granularity) - { - timeout.tv_sec = 0; - timeout.tv_usec = prog->prog_settings.es_clock_granularity; - } - else - { - timeout.tv_sec = (unsigned) diff / 1000000; - timeout.tv_usec = (unsigned) diff % 1000000; - } - - if (!prog_is_stopped()) - event_add(prog->prog_timer, &timeout); - } -} - - -static void -prog_timer_handler (int fd, short what, void *arg) -{ - struct prog *const prog = arg; - if (!prog_is_stopped()) - prog_process_conns(prog); -} - - -static void -prog_usr1_handler (int fd, short what, void *arg) -{ - LSQ_NOTICE("Got SIGUSR1, stopping engine"); - prog_stop(arg); -} - - -static void -prog_usr2_handler (int fd, short what, void *arg) -{ - struct prog *const prog = arg; - - LSQ_NOTICE("Got SIGUSR2, cool down engine"); - prog->prog_flags |= PROG_FLAG_COOLDOWN; - lsquic_engine_cooldown(prog->prog_engine); - prog_process_conns(prog); -} - - -int -prog_run (struct prog *prog) -{ -#ifndef WIN32 - prog->prog_usr1 = evsignal_new(prog->prog_eb, SIGUSR1, - prog_usr1_handler, prog); - evsignal_add(prog->prog_usr1, NULL); - prog->prog_usr2 = evsignal_new(prog->prog_eb, SIGUSR2, - prog_usr2_handler, prog); - evsignal_add(prog->prog_usr2, NULL); -#endif - - event_base_loop(prog->prog_eb, 0); - - return 0; -} - - -void -prog_cleanup (struct prog *prog) -{ - lsquic_engine_destroy(prog->prog_engine); - event_base_free(prog->prog_eb); - if (!prog->prog_use_stock_pmi) - pba_cleanup(&prog->prog_pba); - if (prog->prog_ssl_ctx) - SSL_CTX_free(prog->prog_ssl_ctx); - if (prog->prog_certs) - delete_certs(prog->prog_certs); - lsquic_global_cleanup(); -} - - -void -prog_stop (struct prog *prog) -{ - struct service_port *sport; - - prog_stopped = 1; - - while ((sport = TAILQ_FIRST(prog->prog_sports))) - { - TAILQ_REMOVE(prog->prog_sports, sport, next_sport); - sport_destroy(sport); - } - - if (prog->prog_timer) - { - event_del(prog->prog_timer); - event_free(prog->prog_timer); - prog->prog_timer = NULL; - } - if (prog->prog_usr1) - { - event_del(prog->prog_usr1); - event_free(prog->prog_usr1); - prog->prog_usr1 = NULL; - } - if (prog->prog_usr2) - { - event_del(prog->prog_usr2); - event_free(prog->prog_usr2); - prog->prog_usr2 = NULL; - } -} - - -static void * -keylog_open_file (const SSL *ssl) -{ - const lsquic_conn_t *conn; - const lsquic_cid_t *cid; - FILE *fh; - int sz; - char id_str[MAX_CID_LEN * 2 + 1]; - char path[PATH_MAX]; - - conn = lsquic_ssl_to_conn(ssl); - cid = lsquic_conn_id(conn); - lsquic_hexstr(cid->idbuf, cid->len, id_str, sizeof(id_str)); - sz = snprintf(path, sizeof(path), "%s/%s.keys", s_keylog_dir, id_str); - if ((size_t) sz >= sizeof(path)) - { - LSQ_WARN("%s: file too long", __func__); - return NULL; - } - fh = fopen(path, "ab"); - if (!fh) - LSQ_WARN("could not open %s for appending: %s", path, strerror(errno)); - return fh; -} - - -static void -keylog_log_line (const SSL *ssl, const char *line) -{ - FILE *file; - - file = keylog_open_file(ssl); - if (file) - { - fputs(line, file); - fputs("\n", file); - fclose(file); - } -} - - -static struct ssl_ctx_st * -no_cert (void *cert_lu_ctx, const struct sockaddr *sa_UNUSED, const char *sni) -{ - return NULL; -} - - -int -prog_prep (struct prog *prog) -{ - int s; - char err_buf[100]; - - if (s_keylog_dir && prog->prog_certs) - { - struct lsquic_hash_elem *el; - struct server_cert *cert; - - for (el = lsquic_hash_first(prog->prog_certs); el; - el = lsquic_hash_next(prog->prog_certs)) - { - cert = lsquic_hashelem_getdata(el); - SSL_CTX_set_keylog_callback(cert->ce_ssl_ctx, keylog_log_line); - } - } - - if (0 != lsquic_engine_check_settings(prog->prog_api.ea_settings, - prog->prog_engine_flags, err_buf, sizeof(err_buf))) - { - LSQ_ERROR("Error in settings: %s", err_buf); - return -1; - } - - if (!prog->prog_use_stock_pmi) - pba_init(&prog->prog_pba, prog->prog_packout_max); - else - { - prog->prog_api.ea_pmi = NULL; - prog->prog_api.ea_pmi_ctx = NULL; - } - - if (TAILQ_EMPTY(prog->prog_sports)) - { - if (prog->prog_hostname) - s = prog_add_sport(prog, prog->prog_hostname); - else - s = prog_add_sport(prog, "0.0.0.0:12345"); - if (0 != s) - return -1; - } - - if (prog->prog_certs) - { - prog->prog_api.ea_lookup_cert = lookup_cert; - prog->prog_api.ea_cert_lu_ctx = prog->prog_certs; - } - else - { - if (prog->prog_engine_flags & LSENG_SERVER) - LSQ_WARN("Not a single service specified. Use -c option."); - prog->prog_api.ea_lookup_cert = no_cert; - } - - if (prog->prog_engine_flags & LSENG_SERVER) - { - if (memcmp(prog->prog_settings.es_preferred_address, - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 24) != 0) - prog->prog_flags |= PROG_SEARCH_ADDRS; - } - - prog->prog_eb = event_base_new(); - prog->prog_engine = lsquic_engine_new(prog->prog_engine_flags, - &prog->prog_api); - if (!prog->prog_engine) - return -1; - - prog->prog_timer = event_new(prog->prog_eb, -1, 0, - prog_timer_handler, prog); - - if (0 != prog_init_ssl_ctx(prog)) - return -1; - - if (prog->prog_engine_flags & LSENG_SERVER) - s = prog_init_server(prog); - else - s = prog_init_client(prog); - - if (s != 0) - return -1; - - return 0; -} - - -int -prog_is_stopped (void) -{ - return prog_stopped != 0; -} - - -static void -send_unsent (evutil_socket_t fd, short what, void *arg) -{ - struct prog *const prog = arg; - assert(prog->prog_send); - event_del(prog->prog_send); - event_free(prog->prog_send); - prog->prog_send = NULL; - LSQ_DEBUG("on_write event fires"); - lsquic_engine_send_unsent_packets(prog->prog_engine); -} - - -void -prog_sport_cant_send (struct prog *prog, int fd) -{ - assert(!prog->prog_send); - LSQ_DEBUG("cannot send: register on_write event"); - prog->prog_send = event_new(prog->prog_eb, fd, EV_WRITE, send_unsent, prog); - event_add(prog->prog_send, NULL); -} diff --git a/external/lsquic/bin/prog.h b/external/lsquic/bin/prog.h deleted file mode 100644 index f8794c1..0000000 --- a/external/lsquic/bin/prog.h +++ /dev/null @@ -1,116 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * prog.h -- common setup and options for QUIC program - */ - -#ifndef PROG_H -#define PROG_H 1 - -#include "test_config.h" - -struct event; -struct event_base; -struct lsquic_hash; -struct sport_head; -struct ssl_ctx_st; - -struct prog -{ - struct packout_buf_allocator prog_pba; - struct lsquic_engine_settings prog_settings; - struct lsquic_engine_api prog_api; - unsigned prog_engine_flags; - struct service_port prog_dummy_sport; /* Use for options */ - unsigned prog_packout_max; - unsigned short prog_max_packet_size; - int prog_version_cleared; - unsigned long prog_read_count; -#if HAVE_SENDMMSG - int prog_use_sendmmsg; -#endif -#if HAVE_RECVMMSG - int prog_use_recvmmsg; -#endif - int prog_use_stock_pmi; - struct event_base *prog_eb; - struct event *prog_timer, - *prog_send, - *prog_usr1; - struct event *prog_usr2; - struct ssl_ctx_st *prog_ssl_ctx; - struct lsquic_hash *prog_certs; - struct event *prog_event_sni; - char *prog_susp_sni; - struct sport_head *prog_sports; - struct lsquic_engine *prog_engine; - const char *prog_hostname; - int prog_ipver; /* 0, 4, or 6 */ - enum { - PROG_FLAG_COOLDOWN = 1 << 0, - PROG_SEARCH_ADDRS = 1 << 1, - } prog_flags; -}; - -int -prog_init (struct prog *, unsigned lsquic_engine_flags, struct sport_head *, - const struct lsquic_stream_if *, void *stream_if_ctx); - -#if HAVE_SENDMMSG -# define SENDMMSG_FLAG "g" -#else -# define SENDMMSG_FLAG "" -#endif -#if HAVE_RECVMMSG -# define RECVMMSG_FLAG "j" -#else -# define RECVMMSG_FLAG "" -#endif - -#if LSQUIC_DONTFRAG_SUPPORTED -# define IP_DONTFRAG_FLAG "D" -#else -# define IP_DONTFRAG_FLAG "" -#endif - -#define PROG_OPTS "i:km:c:y:L:l:o:H:s:S:Y:z:G:WA:" RECVMMSG_FLAG SENDMMSG_FLAG \ - IP_DONTFRAG_FLAG - -/* Returns: - * 0 Applied - * 1 Not applicable - * -1 Error - */ -int -prog_set_opt (struct prog *, int opt, const char *arg); - -struct event_base * -prog_eb (struct prog *); - -int -prog_run (struct prog *); - -void -prog_cleanup (struct prog *); - -void -prog_stop (struct prog *); - -int -prog_prep (struct prog *); - -int -prog_connect (struct prog *, unsigned char *, size_t); - -void -prog_print_common_options (const struct prog *, FILE *); - -int -prog_is_stopped (void); - -void -prog_process_conns (struct prog *); - -void -prog_sport_cant_send (struct prog *, int fd); - -#endif diff --git a/external/lsquic/bin/test_cert.c b/external/lsquic/bin/test_cert.c deleted file mode 100644 index e00bde8..0000000 --- a/external/lsquic/bin/test_cert.c +++ /dev/null @@ -1,201 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "lsquic_types.h" -#include "lsquic.h" -#include "../src/liblsquic/lsquic_logger.h" -#include "../src/liblsquic/lsquic_hash.h" - -#include "test_cert.h" - - -static char s_alpn[0x100]; - -int -add_alpn (const char *alpn) -{ - size_t alpn_len, all_len; - - alpn_len = strlen(alpn); - if (alpn_len > 255) - return -1; - - all_len = strlen(s_alpn); - if (all_len + 1 + alpn_len + 1 > sizeof(s_alpn)) - return -1; - - s_alpn[all_len] = alpn_len; - memcpy(&s_alpn[all_len + 1], alpn, alpn_len); - s_alpn[all_len + 1 + alpn_len] = '\0'; - return 0; -} - - -static int -select_alpn (SSL *ssl, const unsigned char **out, unsigned char *outlen, - const unsigned char *in, unsigned int inlen, void *arg) -{ - int r; - - r = SSL_select_next_proto((unsigned char **) out, outlen, in, inlen, - (unsigned char *) s_alpn, strlen(s_alpn)); - if (r == OPENSSL_NPN_NEGOTIATED) - return SSL_TLSEXT_ERR_OK; - else - { - LSQ_WARN("no supported protocol can be selected from %.*s", - (int) inlen, (char *) in); - return SSL_TLSEXT_ERR_ALERT_FATAL; - } -} - - - -int -load_cert (struct lsquic_hash *certs, const char *optarg) -{ - int rv = -1; - char *sni, *cert_file, *key_file; - struct server_cert *cert = NULL; - EVP_PKEY *pkey = NULL; - FILE *f = NULL; - - sni = strdup(optarg); - cert_file = strchr(sni, ','); - if (!cert_file) - goto end; - *cert_file = '\0'; - ++cert_file; - key_file = strchr(cert_file, ','); - if (!key_file) - goto end; - *key_file = '\0'; - ++key_file; - - cert = calloc(1, sizeof(*cert)); - cert->ce_sni = strdup(sni); - - cert->ce_ssl_ctx = SSL_CTX_new(TLS_method()); - if (!cert->ce_ssl_ctx) - { - LSQ_ERROR("SSL_CTX_new failed"); - goto end; - } - SSL_CTX_set_min_proto_version(cert->ce_ssl_ctx, TLS1_3_VERSION); - SSL_CTX_set_max_proto_version(cert->ce_ssl_ctx, TLS1_3_VERSION); - SSL_CTX_set_default_verify_paths(cert->ce_ssl_ctx); - SSL_CTX_set_alpn_select_cb(cert->ce_ssl_ctx, select_alpn, NULL); - { - const char *const s = getenv("LSQUIC_ENABLE_EARLY_DATA"); - if (!s || atoi(s)) - SSL_CTX_set_early_data_enabled(cert->ce_ssl_ctx, 1); /* XXX */ - } - if (1 != SSL_CTX_use_certificate_chain_file(cert->ce_ssl_ctx, cert_file)) - { - LSQ_ERROR("SSL_CTX_use_certificate_chain_file failed: %s", cert_file); - goto end; - } - - if (strstr(key_file, ".pkcs8")) - { - f = fopen(key_file, "r"); - if (!f) - { - LSQ_ERROR("fopen(%s) failed: %s", cert_file, strerror(errno)); - goto end; - } - pkey = d2i_PrivateKey_fp(f, NULL); - fclose(f); - f = NULL; - if (!pkey) - { - LSQ_ERROR("Reading private key from %s failed", key_file); - goto end; - } - if (!SSL_CTX_use_PrivateKey(cert->ce_ssl_ctx, pkey)) - { - LSQ_ERROR("SSL_CTX_use_PrivateKey failed"); - goto end; - } - } - else if (1 != SSL_CTX_use_PrivateKey_file(cert->ce_ssl_ctx, key_file, - SSL_FILETYPE_PEM)) - { - LSQ_ERROR("SSL_CTX_use_PrivateKey_file failed"); - goto end; - } - - const int was = SSL_CTX_set_session_cache_mode(cert->ce_ssl_ctx, 1); - LSQ_DEBUG("set SSL session cache mode to 1 (was: %d)", was); - - if (lsquic_hash_insert(certs, cert->ce_sni, strlen(cert->ce_sni), cert, - &cert->ce_hash_el)) - rv = 0; - else - LSQ_WARN("cannot insert cert for %s into hash table", cert->ce_sni); - - end: - free(sni); - if (rv != 0) - { /* Error: free cert and its components */ - if (cert) - { - free(cert->ce_sni); - free(cert); - } - } - return rv; -} - -struct ssl_ctx_st * -lookup_cert (void *cert_lu_ctx, const struct sockaddr *sa_UNUSED, - const char *sni) -{ - struct lsquic_hash_elem *el; - struct server_cert *server_cert; - - if (!cert_lu_ctx) - return NULL; - - if (sni) - el = lsquic_hash_find(cert_lu_ctx, sni, strlen(sni)); - else - { - LSQ_INFO("SNI is not set"); - el = lsquic_hash_first(cert_lu_ctx); - } - - if (el) - { - server_cert = lsquic_hashelem_getdata(el); - if (server_cert) - return server_cert->ce_ssl_ctx; - } - - return NULL; -} - - -void -delete_certs (struct lsquic_hash *certs) -{ - struct lsquic_hash_elem *el; - struct server_cert *cert; - - for (el = lsquic_hash_first(certs); el; el = lsquic_hash_next(certs)) - { - cert = lsquic_hashelem_getdata(el); - SSL_CTX_free(cert->ce_ssl_ctx); - free(cert->ce_sni); - free(cert); - } - lsquic_hash_destroy(certs); -} diff --git a/external/lsquic/bin/test_cert.h b/external/lsquic/bin/test_cert.h deleted file mode 100644 index 4614b57..0000000 --- a/external/lsquic/bin/test_cert.h +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#ifndef TEST_CERT_H -#define TEST_CERT_H - -struct lsquic_hash; -struct ssl_ctx_st; -struct sockaddr; - -struct server_cert -{ - char *ce_sni; - struct ssl_ctx_st *ce_ssl_ctx; - struct lsquic_hash_elem ce_hash_el; -}; - - -int -load_cert (struct lsquic_hash *, const char *optarg); - -struct ssl_ctx_st * -lookup_cert (void *cert_lu_ctx, const struct sockaddr * /*unused */, - const char *sni); - -void -delete_certs (struct lsquic_hash *); - -int -add_alpn (const char *alpn); - -#endif diff --git a/external/lsquic/bin/test_common.c b/external/lsquic/bin/test_common.c deleted file mode 100644 index 8fd0e70..0000000 --- a/external/lsquic/bin/test_common.c +++ /dev/null @@ -1,2536 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#if __GNUC__ -#define _GNU_SOURCE /* For struct in6_pktinfo */ -#endif -#include -#include -#include -#include -#include -#include -#if defined(__APPLE__) -# define __APPLE_USE_RFC_3542 1 -#endif -#ifndef WIN32 -#include -#include -#include -#include -#include -#else -#include -#include -#include -#include -#pragma warning(disable:4996)//posix name deprecated -#define close closesocket -#endif -#include -#include -#include - -#include "test_config.h" - -#if HAVE_REGEX -#ifndef WIN32 -#include -#else -#include -#endif -#endif - -#include - -#include "lsquic.h" -#include "test_common.h" -#include "prog.h" -#include "lsxpack_header.h" - -#include "../src/liblsquic/lsquic_logger.h" - -#define MAX(a, b) ((a) > (b) ? (a) : (b)) -#define MIN(a, b) ((a) < (b) ? (a) : (b)) - -#ifndef LSQUIC_USE_POOLS -#define LSQUIC_USE_POOLS 1 -#endif - -#if __linux__ -# define NDROPPED_SZ CMSG_SPACE(sizeof(uint32_t)) /* SO_RXQ_OVFL */ -#else -# define NDROPPED_SZ 0 -#endif - -#if __linux__ && defined(IP_RECVORIGDSTADDR) -# define DST_MSG_SZ sizeof(struct sockaddr_in) -#elif WIN32 -# define DST_MSG_SZ sizeof(struct sockaddr_in) -#elif __linux__ -# define DST_MSG_SZ sizeof(struct in_pktinfo) -#else -# define DST_MSG_SZ sizeof(struct sockaddr_in) -#endif - -#if ECN_SUPPORTED -#define ECN_SZ CMSG_SPACE(sizeof(int)) -#else -#define ECN_SZ 0 -#endif - -#define MAX_PACKET_SZ 0xffff - -#define CTL_SZ (CMSG_SPACE(MAX(DST_MSG_SZ, \ - sizeof(struct in6_pktinfo))) + NDROPPED_SZ + ECN_SZ) - -/* There are `n_alloc' elements in `vecs', `local_addresses', and - * `peer_addresses' arrays. `ctlmsg_data' is n_alloc * CTL_SZ. Each packets - * gets a single `vecs' element that points somewhere into `packet_data'. - * - * `n_alloc' is calculated at run-time based on the socket's receive buffer - * size. - */ -struct packets_in -{ - unsigned char *packet_data; - unsigned char *ctlmsg_data; -#ifndef WIN32 - struct iovec *vecs; -#else - WSABUF *vecs; -#endif -#if ECN_SUPPORTED - int *ecn; -#endif - struct sockaddr_storage *local_addresses, - *peer_addresses; - unsigned n_alloc; - unsigned data_sz; -}; - - -#if WIN32 -LPFN_WSARECVMSG pfnWSARecvMsg; -GUID recvGuid = WSAID_WSARECVMSG; -LPFN_WSASENDMSG pfnWSASendMsg; -GUID sendGuid = WSAID_WSASENDMSG; - -CRITICAL_SECTION initLock; -LONG initialized = 0; - -static void getExtensionPtrs() -{ - if (InterlockedCompareExchange(&initialized, 1, 0) == 0) - { - InitializeCriticalSection(&initLock); - } - EnterCriticalSection(&initLock); - if(pfnWSARecvMsg == NULL|| pfnWSASendMsg == NULL) - { - SOCKET sock= socket(PF_INET, SOCK_DGRAM, 0); - DWORD dwBytes; - int rc = 0; - if (pfnWSARecvMsg == NULL) - { - rc = WSAIoctl(sock, SIO_GET_EXTENSION_FUNCTION_POINTER, &recvGuid, - sizeof(recvGuid), &pfnWSARecvMsg, sizeof(pfnWSARecvMsg), - &dwBytes, NULL, NULL); - } - if (rc != SOCKET_ERROR) - { - if (pfnWSASendMsg == NULL) - { - rc = WSAIoctl(sock, SIO_GET_EXTENSION_FUNCTION_POINTER, - &sendGuid, sizeof(sendGuid), &pfnWSASendMsg, - sizeof(pfnWSASendMsg), &dwBytes, NULL, NULL); - } - } - if (rc == SOCKET_ERROR) - { - LSQ_ERROR("Can't get extension function pointers: %d", - WSAGetLastError()); - } - closesocket(sock); - } - LeaveCriticalSection(&initLock); -} - - -#endif - - - - -static struct packets_in * -allocate_packets_in (SOCKET_TYPE fd) -{ - struct packets_in *packs_in; - unsigned n_alloc; - socklen_t opt_len; - int recvsz; - - opt_len = sizeof(recvsz); - if (0 != getsockopt(fd, SOL_SOCKET, SO_RCVBUF, (void*)&recvsz, &opt_len)) - { - LSQ_ERROR("getsockopt failed: %s", strerror(errno)); - return NULL; - } - - n_alloc = (unsigned) recvsz / 1370; - LSQ_INFO("socket buffer size: %d bytes; max # packets is set to %u", - recvsz, n_alloc); - recvsz += MAX_PACKET_SZ; - - packs_in = malloc(sizeof(*packs_in)); - packs_in->data_sz = recvsz; - packs_in->n_alloc = n_alloc; - packs_in->packet_data = malloc(recvsz); - packs_in->ctlmsg_data = malloc(n_alloc * CTL_SZ); - packs_in->vecs = malloc(n_alloc * sizeof(packs_in->vecs[0])); - packs_in->local_addresses = malloc(n_alloc * sizeof(packs_in->local_addresses[0])); - packs_in->peer_addresses = malloc(n_alloc * sizeof(packs_in->peer_addresses[0])); -#if ECN_SUPPORTED - packs_in->ecn = malloc(n_alloc * sizeof(packs_in->ecn[0])); -#endif - - return packs_in; -} - - -static void -free_packets_in (struct packets_in *packs_in) -{ -#if ECN_SUPPORTED - free(packs_in->ecn); -#endif - free(packs_in->peer_addresses); - free(packs_in->local_addresses); - free(packs_in->ctlmsg_data); - free(packs_in->vecs); - free(packs_in->packet_data); - free(packs_in); -} - - -void -sport_destroy (struct service_port *sport) -{ - if (sport->ev) - { - event_del(sport->ev); - event_free(sport->ev); - } - if (sport->fd >= 0) - (void) CLOSE_SOCKET(sport->fd); - if (sport->packs_in) - free_packets_in(sport->packs_in); - free(sport->sp_token_buf); - free(sport); -} - - -static char * -sockaddr2str (const struct sockaddr *addr, char *buf, size_t sz) -{ - unsigned short port; - int len; - - switch (addr->sa_family) - { - case AF_INET: - port = ntohs(((struct sockaddr_in *) addr)->sin_port); - if (!inet_ntop(AF_INET, &((struct sockaddr_in *) addr)->sin_addr, - buf, sz)) - buf[0] = '\0'; - break; - case AF_INET6: - port = ntohs(((struct sockaddr_in6 *) addr)->sin6_port); - if (!inet_ntop(AF_INET6, &((struct sockaddr_in6 *) addr)->sin6_addr, - buf, sz)) - buf[0] = '\0'; - break; - default: - port = 0; - (void) snprintf(buf, sz, "", addr->sa_family); - break; - } - - len = strlen(buf); - if (len < (int) sz) - snprintf(buf + len, sz - (size_t) len, ":%hu", port); - return buf; -} - - -struct service_port * -sport_new (const char *optarg, struct prog *prog) -{ - struct service_port *const sport = calloc(1, sizeof(*sport)); -#if HAVE_REGEX - regex_t re; - regmatch_t matches[5]; - int re_code; - const char *port_str; - char errbuf[80]; -#else - char *port_str; -#endif - int port, e; - const char *host; - struct addrinfo hints, *res = NULL; -#if __linux__ - sport->n_dropped = 0; - sport->drop_init = 0; -#endif - sport->ev = NULL; - sport->packs_in = NULL; - sport->fd = -1; - char *const addr = strdup(optarg); -#if __linux__ - char *if_name; - if_name = strrchr(addr, ','); - if (if_name) - { - strncpy(sport->if_name, if_name + 1, sizeof(sport->if_name) - 1); - sport->if_name[ sizeof(sport->if_name) - 1 ] = '\0'; - *if_name = '\0'; - } - else - sport->if_name[0] = '\0'; -#endif -#if HAVE_REGEX - re_code = regcomp(&re, "^(.*):([0-9][0-9]*)$" - "|^([0-9][0-9]*)$" - "|^(..*)$" - , REG_EXTENDED); - if (re_code != 0) - { - regerror(re_code, &re, errbuf, sizeof(errbuf)); - LSQ_ERROR("cannot compile regex: %s", errbuf); - goto err; - } - if (0 != regexec(&re, addr, sizeof(matches) / sizeof(matches[0]), - matches, 0)) - { - LSQ_ERROR("Invalid argument `%s'", addr); - goto err; - } - if (matches[1].rm_so >= 0) - { - addr[ matches[1].rm_so + matches[1].rm_eo ] = '\0'; - host = addr; - port_str = &addr[ matches[2].rm_so ]; - port = atoi(port_str); - } - else if (matches[3].rm_so >= 0) - { - if (!prog->prog_hostname) - { - LSQ_ERROR("hostname is not specified"); - goto err; - } - host = prog->prog_hostname; - port_str = &addr[ matches[3].rm_so ]; - port = atoi(port_str); - } - else - { - assert(matches[4].rm_so >= 0); - host = addr; - port_str = "443"; - port = 443; - } -#else - host = addr; - port_str = strrchr(addr, ':'); - if (port_str) - { - *port_str++ = '\0'; - port = atoi(port_str); - } - else - { - port_str = "443"; - port = 443; - } -#endif - assert(host); - LSQ_DEBUG("host: %s; port: %d", host, port); - if (strlen(host) > sizeof(sport->host) - 1) - { - LSQ_ERROR("argument `%s' too long", host); - goto err; - } - strcpy(sport->host, host); - - struct sockaddr_in *const sa4 = (void *) &sport->sas; - struct sockaddr_in6 *const sa6 = (void *) &sport->sas; - if (inet_pton(AF_INET, host, &sa4->sin_addr)) { - sa4->sin_family = AF_INET; - sa4->sin_port = htons(port); - } else if (memset(sa6, 0, sizeof(*sa6)), - inet_pton(AF_INET6, host, &sa6->sin6_addr)) { - sa6->sin6_family = AF_INET6; - sa6->sin6_port = htons(port); - } else - { - memset(&hints, 0, sizeof(hints)); - hints.ai_flags = AI_NUMERICSERV; - if (prog->prog_ipver == 4) - hints.ai_family = AF_INET; - else if (prog->prog_ipver == 6) - hints.ai_family = AF_INET6; - e = getaddrinfo(host, port_str, &hints, &res); - if (e != 0) - { - LSQ_ERROR("could not resolve %s:%s: %s", host, port_str, - gai_strerror(e)); - goto err; - } - if (res->ai_addrlen > sizeof(sport->sas)) - { - LSQ_ERROR("resolved socket length is too long"); - goto err; - } - memcpy(&sport->sas, res->ai_addr, res->ai_addrlen); - if (!prog->prog_hostname) - prog->prog_hostname = sport->host; - } - -#if HAVE_REGEX - if (0 == re_code) - regfree(&re); -#endif - if (res) - freeaddrinfo(res); - free(addr); - sport->sp_prog = prog; - return sport; - - err: -#if HAVE_REGEX - if (0 == re_code) - regfree(&re); -#endif - if (res) - freeaddrinfo(res); - free(sport); - free(addr); - return NULL; -} - - -/* Replace IP address part of `sa' with that provided in ancillary messages - * in `msg'. - */ -static void -proc_ancillary ( -#ifndef WIN32 - struct msghdr -#else - WSAMSG -#endif - *msg, struct sockaddr_storage *storage -#if __linux__ - , uint32_t *n_dropped -#endif -#if ECN_SUPPORTED - , int *ecn -#endif - ) -{ - const struct in6_pktinfo *in6_pkt; - struct cmsghdr *cmsg; - - for (cmsg = CMSG_FIRSTHDR(msg); cmsg; cmsg = CMSG_NXTHDR(msg, cmsg)) - { - if (cmsg->cmsg_level == IPPROTO_IP && - cmsg->cmsg_type == -#if __linux__ && defined(IP_RECVORIGDSTADDR) - IP_ORIGDSTADDR -#elif __linux__ || WIN32 || __APPLE__ - IP_PKTINFO -#else - IP_RECVDSTADDR -#endif - ) - { -#if __linux__ && defined(IP_RECVORIGDSTADDR) - memcpy(storage, CMSG_DATA(cmsg), sizeof(struct sockaddr_in)); -#elif WIN32 - const struct in_pktinfo *in_pkt; - in_pkt = (void *) WSA_CMSG_DATA(cmsg); - ((struct sockaddr_in *) storage)->sin_addr = in_pkt->ipi_addr; -#elif __linux__ || __APPLE__ - const struct in_pktinfo *in_pkt; - in_pkt = (void *) CMSG_DATA(cmsg); - ((struct sockaddr_in *) storage)->sin_addr = in_pkt->ipi_addr; -#else - memcpy(&((struct sockaddr_in *) storage)->sin_addr, - CMSG_DATA(cmsg), sizeof(struct in_addr)); -#endif - } - else if (cmsg->cmsg_level == IPPROTO_IPV6 && - cmsg->cmsg_type == IPV6_PKTINFO) - { -#ifndef WIN32 - in6_pkt = (void *) CMSG_DATA(cmsg); -#else - in6_pkt = (void *) WSA_CMSG_DATA(cmsg); -#endif - ((struct sockaddr_in6 *) storage)->sin6_addr = - in6_pkt->ipi6_addr; - } -#if __linux__ - else if (cmsg->cmsg_level == SOL_SOCKET && - cmsg->cmsg_type == SO_RXQ_OVFL) - memcpy(n_dropped, CMSG_DATA(cmsg), sizeof(*n_dropped)); -#endif -#if ECN_SUPPORTED - else if ((cmsg->cmsg_level == IPPROTO_IP && cmsg->cmsg_type == IP_TOS) - || (cmsg->cmsg_level == IPPROTO_IPV6 - && cmsg->cmsg_type == IPV6_TCLASS)) - { - memcpy(ecn, CMSG_DATA(cmsg), sizeof(*ecn)); - *ecn &= IPTOS_ECN_MASK; - } -#ifdef __FreeBSD__ - else if (cmsg->cmsg_level == IPPROTO_IP - && cmsg->cmsg_type == IP_RECVTOS) - { - unsigned char tos; - memcpy(&tos, CMSG_DATA(cmsg), sizeof(tos)); - *ecn = tos & IPTOS_ECN_MASK; - } -#endif -#endif - } -} - - -struct read_iter -{ - struct service_port *ri_sport; - unsigned ri_idx; /* Current element */ - unsigned ri_off; /* Offset into packet_data */ -}; - - -enum rop { ROP_OK, ROP_NOROOM, ROP_ERROR, }; - -static enum rop -read_one_packet (struct read_iter *iter) -{ - unsigned char *ctl_buf; - struct packets_in *packs_in; -#if __linux__ - uint32_t n_dropped; -#endif -#ifndef WIN32 - ssize_t nread; -#else - DWORD nread; - int socket_ret; -#endif - struct sockaddr_storage *local_addr; - struct service_port *sport; - - sport = iter->ri_sport; - packs_in = sport->packs_in; - - if (iter->ri_idx >= packs_in->n_alloc || - iter->ri_off + MAX_PACKET_SZ > packs_in->data_sz) - { - LSQ_DEBUG("out of room in packets_in"); - return ROP_NOROOM; - } - -#ifndef WIN32 - packs_in->vecs[iter->ri_idx].iov_base = packs_in->packet_data + iter->ri_off; - packs_in->vecs[iter->ri_idx].iov_len = MAX_PACKET_SZ; -#else - packs_in->vecs[iter->ri_idx].buf = (char*)packs_in->packet_data + iter->ri_off; - packs_in->vecs[iter->ri_idx].len = MAX_PACKET_SZ; -#endif - -#ifndef WIN32 - top: -#endif - ctl_buf = packs_in->ctlmsg_data + iter->ri_idx * CTL_SZ; - -#ifndef WIN32 - struct msghdr msg = { - .msg_name = &packs_in->peer_addresses[iter->ri_idx], - .msg_namelen = sizeof(packs_in->peer_addresses[iter->ri_idx]), - .msg_iov = &packs_in->vecs[iter->ri_idx], - .msg_iovlen = 1, - .msg_control = ctl_buf, - .msg_controllen = CTL_SZ, - }; - nread = recvmsg(sport->fd, &msg, 0); - if (-1 == nread) { - if (!(EAGAIN == errno || EWOULDBLOCK == errno)) - LSQ_ERROR("recvmsg: %s", strerror(errno)); - return ROP_ERROR; - } - if (msg.msg_flags & (MSG_TRUNC|MSG_CTRUNC)) - { - if (msg.msg_flags & MSG_TRUNC) - LSQ_INFO("packet truncated - drop it"); - if (msg.msg_flags & MSG_CTRUNC) - LSQ_WARN("packet's auxilicary data truncated - drop it"); - goto top; - } -#else - WSAMSG msg = { - .name = (LPSOCKADDR)&packs_in->peer_addresses[iter->ri_idx], - .namelen = sizeof(packs_in->peer_addresses[iter->ri_idx]), - .lpBuffers = &packs_in->vecs[iter->ri_idx], - .dwBufferCount = 1, - .Control = {CTL_SZ,(char*)ctl_buf} - }; - socket_ret = pfnWSARecvMsg(sport->fd, &msg, &nread, NULL, NULL); - if (SOCKET_ERROR == socket_ret) { - if (WSAEWOULDBLOCK != WSAGetLastError()) - LSQ_ERROR("recvmsg: %d", WSAGetLastError()); - return ROP_ERROR; - } -#endif - - local_addr = &packs_in->local_addresses[iter->ri_idx]; - memcpy(local_addr, &sport->sp_local_addr, sizeof(*local_addr)); -#if __linux__ - n_dropped = 0; -#endif -#if ECN_SUPPORTED - packs_in->ecn[iter->ri_idx] = 0; -#endif - proc_ancillary(&msg, local_addr -#if __linux__ - , &n_dropped -#endif -#if ECN_SUPPORTED - , &packs_in->ecn[iter->ri_idx] -#endif - ); -#if LSQUIC_ECN_BLACK_HOLE && ECN_SUPPORTED - { - const char *s; - s = getenv("LSQUIC_ECN_BLACK_HOLE"); - if (s && atoi(s) && packs_in->ecn[iter->ri_idx]) - { - LSQ_NOTICE("ECN blackhole: drop packet"); - return ROP_OK; - } - } -#endif -#if __linux__ - if (sport->drop_init) - { - if (sport->n_dropped < n_dropped) - LSQ_INFO("dropped %u packets", n_dropped - sport->n_dropped); - } - else - sport->drop_init = 1; - sport->n_dropped = n_dropped; -#endif - char localaddr_str[80]; - char remoteaddr_str[80]; - LSQ_DEBUG("[%s] RX packet %zd bytes from: %s", - sockaddr2str((struct sockaddr *)local_addr, localaddr_str, - sizeof(localaddr_str)), - nread, sockaddr2str( - (struct sockaddr *)&packs_in->peer_addresses[iter->ri_idx], - remoteaddr_str, sizeof(remoteaddr_str))); - -#ifndef WIN32 - packs_in->vecs[iter->ri_idx].iov_len = nread; -#else - packs_in->vecs[iter->ri_idx].len = nread; -#endif - iter->ri_off += nread; - iter->ri_idx += 1; - - return ROP_OK; -} - - -#if HAVE_RECVMMSG -static enum rop -read_using_recvmmsg (struct read_iter *iter) -{ -#if __linux__ - uint32_t n_dropped; -#endif - int s; - unsigned n; - struct sockaddr_storage *local_addr; - struct service_port *const sport = iter->ri_sport; - struct packets_in *const packs_in = sport->packs_in; - /* XXX TODO We allocate this array on the stack and initialize the - * headers each time the function is invoked. This is suboptimal. - * What we should really be doing is allocate mmsghdrs as part of - * packs_in and initialize it there. While we are at it, we should - * make packs_in shared between all service ports. - */ - struct mmsghdr mmsghdrs[ packs_in->n_alloc ]; - - /* Sanity check: we assume that the iterator is reset */ - assert(iter->ri_off == 0 && iter->ri_idx == 0); - - /* Initialize mmsghdrs */ - for (n = 0; n < sizeof(mmsghdrs) / sizeof(mmsghdrs[0]); ++n) - { - packs_in->vecs[n].iov_base = packs_in->packet_data + MAX_PACKET_SZ * n; - packs_in->vecs[n].iov_len = MAX_PACKET_SZ; - mmsghdrs[n].msg_hdr = (struct msghdr) { - .msg_name = &packs_in->peer_addresses[n], - .msg_namelen = sizeof(packs_in->peer_addresses[n]), - .msg_iov = &packs_in->vecs[n], - .msg_iovlen = 1, - .msg_control = packs_in->ctlmsg_data + CTL_SZ * n, - .msg_controllen = CTL_SZ, - }; - } - - /* Read packets */ - s = recvmmsg(sport->fd, mmsghdrs, n, 0, NULL); - if (s < 0) - { - if (!(EAGAIN == errno || EWOULDBLOCK == errno)) - LSQ_ERROR("recvmmsg: %s", strerror(errno)); - return ROP_ERROR; - } - - /* Process ancillary data and update vecs */ - for (n = 0; n < (unsigned) s; ++n) - { - local_addr = &packs_in->local_addresses[n]; - memcpy(local_addr, &sport->sp_local_addr, sizeof(*local_addr)); -#if __linux__ - n_dropped = 0; -#endif -#if ECN_SUPPORTED - packs_in->ecn[n] = 0; -#endif - proc_ancillary(&mmsghdrs[n].msg_hdr, local_addr -#if __linux__ - , &n_dropped -#endif -#if ECN_SUPPORTED - , &packs_in->ecn[n] -#endif - ); -#if __linux__ - if (sport->drop_init) - { - if (sport->n_dropped < n_dropped) - LSQ_INFO("dropped %u packets", n_dropped - sport->n_dropped); - } - else - sport->drop_init = 1; - sport->n_dropped = n_dropped; -#endif - packs_in->vecs[n].iov_len = mmsghdrs[n].msg_len; - } - - iter->ri_idx = n; - - return n == sizeof(mmsghdrs) / sizeof(mmsghdrs[0]) ? ROP_NOROOM : ROP_OK; -} - - -#endif - - -#if __GNUC__ -# define UNLIKELY(cond) __builtin_expect(cond, 0) -#else -# define UNLIKELY(cond) cond -#endif - - -static void -read_handler (evutil_socket_t fd, short flags, void *ctx) -{ - struct service_port *sport = ctx; - lsquic_engine_t *const engine = sport->engine; - struct packets_in *packs_in = sport->packs_in; - struct read_iter iter; - unsigned n, n_batches; - /* Save the value in case program is stopped packs_in is freed: */ - const unsigned n_alloc = packs_in->n_alloc; - enum rop rop; - - n_batches = 0; - iter.ri_sport = sport; - - sport->sp_prog->prog_read_count += 1; - do - { - iter.ri_off = 0; - iter.ri_idx = 0; - -#if HAVE_RECVMMSG - if (sport->sp_prog->prog_use_recvmmsg) - rop = read_using_recvmmsg(&iter); - else -#endif - do - rop = read_one_packet(&iter); - while (ROP_OK == rop); - - if (UNLIKELY(ROP_ERROR == rop && (sport->sp_flags & SPORT_CONNECT) - && errno == ECONNREFUSED)) - { - LSQ_ERROR("connection refused: exit program"); - prog_cleanup(sport->sp_prog); - exit(1); - } - - n_batches += iter.ri_idx > 0; - - for (n = 0; n < iter.ri_idx; ++n) - if (0 > lsquic_engine_packet_in(engine, -#ifndef WIN32 - packs_in->vecs[n].iov_base, - packs_in->vecs[n].iov_len, -#else - (const unsigned char *) packs_in->vecs[n].buf, - packs_in->vecs[n].len, -#endif - (struct sockaddr *) &packs_in->local_addresses[n], - (struct sockaddr *) &packs_in->peer_addresses[n], - sport, -#if ECN_SUPPORTED - packs_in->ecn[n] -#else - 0 -#endif - )) - break; - - if (n > 0) - prog_process_conns(sport->sp_prog); - } - while (ROP_NOROOM == rop && !prog_is_stopped()); - - if (n_batches) - n += n_alloc * (n_batches - 1); - - LSQ_DEBUG("read %u packet%.*s in %u batch%s", n, n != 1, "s", n_batches, n_batches != 1 ? "es" : ""); -} - - -static int -add_to_event_loop (struct service_port *sport, struct event_base *eb) -{ - sport->ev = event_new(eb, sport->fd, EV_READ|EV_PERSIST, read_handler, - sport); - if (sport->ev) - { - event_add(sport->ev, NULL); - return 0; - } - else - return -1; -} - - -int -sport_init_server (struct service_port *sport, struct lsquic_engine *engine, - struct event_base *eb) -{ - const struct sockaddr *sa_local = (struct sockaddr *) &sport->sas; - int sockfd, saved_errno, s; -#ifndef WIN32 - int flags; -#endif - SOCKOPT_VAL on = 1; - socklen_t socklen; - char addr_str[0x20]; - - switch (sa_local->sa_family) - { - case AF_INET: - socklen = sizeof(struct sockaddr_in); - break; - case AF_INET6: - socklen = sizeof(struct sockaddr_in6); - break; - default: - errno = EINVAL; - return -1; - } - -#if WIN32 - getExtensionPtrs(); -#endif - sockfd = socket(sa_local->sa_family, SOCK_DGRAM, 0); - if (-1 == sockfd) - return -1; - - if (AF_INET6 == sa_local->sa_family - && setsockopt(sockfd, IPPROTO_IPV6, IPV6_V6ONLY, - CHAR_CAST &on, sizeof(on)) == -1) - { - close(sockfd); - return -1; - } - - if (0 != bind(sockfd, sa_local, socklen)) { - saved_errno = errno; - LSQ_WARN("bind failed: %s", strerror(errno)); - close(sockfd); - errno = saved_errno; - return -1; - } - - /* Make socket non-blocking */ -#ifndef WIN32 - flags = fcntl(sockfd, F_GETFL); - if (-1 == flags) { - saved_errno = errno; - close(sockfd); - errno = saved_errno; - return -1; - } - flags |= O_NONBLOCK; - if (0 != fcntl(sockfd, F_SETFL, flags)) { - saved_errno = errno; - close(sockfd); - errno = saved_errno; - return -1; - } -#else - { - u_long on = 1; - ioctlsocket(sockfd, FIONBIO, &on); - } -#endif - - on = 1; - if (AF_INET == sa_local->sa_family) - s = setsockopt(sockfd, IPPROTO_IP, -#if __linux__ && defined(IP_RECVORIGDSTADDR) - IP_RECVORIGDSTADDR, -#elif __linux__ || __APPLE__ || defined(WIN32) - IP_PKTINFO, -#else - IP_RECVDSTADDR, -#endif - CHAR_CAST &on, sizeof(on)); - else - { -#ifndef WIN32 - s = setsockopt(sockfd, IPPROTO_IPV6, IPV6_RECVPKTINFO, &on, sizeof(on)); -#else - s = setsockopt(sockfd, IPPROTO_IPV6, IPV6_PKTINFO, CHAR_CAST &on, sizeof(on)); -#endif - } - - if (0 != s) - { - saved_errno = errno; - close(sockfd); - errno = saved_errno; - return -1; - } - -#if (__linux__ && !defined(IP_RECVORIGDSTADDR)) || __APPLE__ || defined(WIN32) - /* Need to set IP_PKTINFO for sending */ - if (AF_INET == sa_local->sa_family) - { - on = 1; - s = setsockopt(sockfd, IPPROTO_IP, IP_PKTINFO, CHAR_CAST &on, sizeof(on)); - if (0 != s) - { - saved_errno = errno; - close(sockfd); - errno = saved_errno; - return -1; - } - } -#elif IP_RECVDSTADDR != IP_SENDSRCADDR - /* On FreeBSD, IP_RECVDSTADDR is the same as IP_SENDSRCADDR, but I do not - * know about other BSD systems. - */ - if (AF_INET == sa_local->sa_family) - { - on = 1; - s = setsockopt(sockfd, IPPROTO_IP, IP_SENDSRCADDR, &on, sizeof(on)); - if (0 != s) - { - saved_errno = errno; - close(sockfd); - errno = saved_errno; - return -1; - } - } -#endif - -#if __linux__ && defined(SO_RXQ_OVFL) - on = 1; - s = setsockopt(sockfd, SOL_SOCKET, SO_RXQ_OVFL, &on, sizeof(on)); - if (0 != s) - { - saved_errno = errno; - close(sockfd); - errno = saved_errno; - return -1; - } -#endif - -#if __linux__ - if (sport->if_name[0] && - 0 != setsockopt(sockfd, SOL_SOCKET, SO_BINDTODEVICE, sport->if_name, - IFNAMSIZ)) - { - saved_errno = errno; - close(sockfd); - errno = saved_errno; - return -1; - } -#endif - -#if LSQUIC_DONTFRAG_SUPPORTED - if (!(sport->sp_flags & SPORT_FRAGMENT_OK)) - { - if (AF_INET == sa_local->sa_family) - { -#if __linux__ - on = IP_PMTUDISC_PROBE; - s = setsockopt(sockfd, IPPROTO_IP, IP_MTU_DISCOVER, &on, - sizeof(on)); -#else - on = 1; - s = setsockopt(sockfd, IPPROTO_IP, IP_DONTFRAG, CHAR_CAST &on, sizeof(on)); -#endif - if (0 != s) - { - saved_errno = errno; - close(sockfd); - errno = saved_errno; - return -1; - } - } -#if __linux__ - else if (AF_INET6 == sa_local->sa_family) - { - int on = IP_PMTUDISC_PROBE; - s = setsockopt(sockfd, IPPROTO_IPV6, IPV6_MTU_DISCOVER, &on, sizeof(on)); - } -#endif - } -#endif - -#if ECN_SUPPORTED - on = 1; - if (AF_INET == sa_local->sa_family) - { - s = setsockopt(sockfd, IPPROTO_IP, IP_RECVTOS, - CHAR_CAST &on, sizeof(on)); - if (!s) - s = setsockopt(sockfd, IPPROTO_IP, IP_TOS, - CHAR_CAST &on, sizeof(on)); - } - else - { - s = setsockopt(sockfd, IPPROTO_IPV6, IPV6_RECVTCLASS, - CHAR_CAST &on, sizeof(on)); - if (!s) - s = setsockopt(sockfd, IPPROTO_IPV6, IPV6_TCLASS, - CHAR_CAST &on, sizeof(on)); - } - if (0 != s) - { - saved_errno = errno; - close(sockfd); - errno = saved_errno; - return -1; - } - LSQ_DEBUG("server ECN support is enabled."); - -#endif - - if (sport->sp_flags & SPORT_SET_SNDBUF) - { - s = setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, CHAR_CAST &sport->sp_sndbuf, - sizeof(sport->sp_sndbuf)); - if (0 != s) - { - saved_errno = errno; - close(sockfd); - errno = saved_errno; - return -1; - } - } - - if (sport->sp_flags & SPORT_SET_RCVBUF) - { - s = setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, CHAR_CAST &sport->sp_rcvbuf, - sizeof(sport->sp_rcvbuf)); - if (0 != s) - { - saved_errno = errno; - close(sockfd); - errno = saved_errno; - return -1; - } - } - - if (0 != getsockname(sockfd, (struct sockaddr *) sa_local, &socklen)) - { - saved_errno = errno; - close(sockfd); - errno = saved_errno; - return -1; - } - - sport->packs_in = allocate_packets_in(sockfd); - if (!sport->packs_in) - { - saved_errno = errno; - close(sockfd); - errno = saved_errno; - return -1; - } - - memcpy((void *) &sport->sp_local_addr, sa_local, - sa_local->sa_family == AF_INET ? - sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6)); - switch (sa_local->sa_family) { - case AF_INET: - LSQ_DEBUG("local address: %s:%d", - inet_ntop(AF_INET, &((struct sockaddr_in *) sa_local)->sin_addr, - addr_str, sizeof(addr_str)), - ntohs(((struct sockaddr_in *) sa_local)->sin_port)); - break; - } - - sport->engine = engine; - sport->fd = sockfd; - sport->sp_flags |= SPORT_SERVER; - - return add_to_event_loop(sport, eb); -} - - -int -sport_init_client (struct service_port *sport, struct lsquic_engine *engine, - struct event_base *eb) -{ - const struct sockaddr *sa_peer = (struct sockaddr *) &sport->sas; - int saved_errno, s; -#ifndef WIN32 - int flags; -#endif - SOCKET_TYPE sockfd; - socklen_t socklen, peer_socklen; - union { - struct sockaddr_in sin; - struct sockaddr_in6 sin6; - } u; - struct sockaddr *sa_local = (struct sockaddr *) &u; - char addr_str[0x20]; - - switch (sa_peer->sa_family) - { - case AF_INET: - socklen = sizeof(struct sockaddr_in); - u.sin.sin_family = AF_INET; - u.sin.sin_addr.s_addr = INADDR_ANY; - u.sin.sin_port = 0; - break; - case AF_INET6: - socklen = sizeof(struct sockaddr_in6); - memset(&u.sin6, 0, sizeof(u.sin6)); - u.sin6.sin6_family = AF_INET6; - break; - default: - errno = EINVAL; - return -1; - } - -#if WIN32 - getExtensionPtrs(); -#endif - sockfd = socket(sa_peer->sa_family, SOCK_DGRAM, 0); - if (-1 == sockfd) - return -1; - - if (0 != bind(sockfd, sa_local, socklen)) { - saved_errno = errno; - CLOSE_SOCKET(sockfd); - errno = saved_errno; - return -1; - } - - if (sport->sp_flags & SPORT_CONNECT) - { - peer_socklen = AF_INET == sa_peer->sa_family - ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6); - if (0 != connect(sockfd, sa_peer, peer_socklen)) - { - saved_errno = errno; - CLOSE_SOCKET(sockfd); - errno = saved_errno; - return -1; - } - } - - /* Make socket non-blocking */ -#ifndef WIN32 - flags = fcntl(sockfd, F_GETFL); - if (-1 == flags) { - saved_errno = errno; - CLOSE_SOCKET(sockfd); - errno = saved_errno; - return -1; - } - flags |= O_NONBLOCK; - if (0 != fcntl(sockfd, F_SETFL, flags)) { - saved_errno = errno; - CLOSE_SOCKET(sockfd); - errno = saved_errno; - return -1; - } -#else - { - u_long on = 1; - ioctlsocket(sockfd, FIONBIO, &on); - } -#endif - -#if LSQUIC_DONTFRAG_SUPPORTED - if (!(sport->sp_flags & SPORT_FRAGMENT_OK)) - { - if (AF_INET == sa_local->sa_family) - { - int on; -#if __linux__ - on = IP_PMTUDISC_PROBE; - s = setsockopt(sockfd, IPPROTO_IP, IP_MTU_DISCOVER, &on, - sizeof(on)); -#elif WIN32 - on = 1; - s = setsockopt(sockfd, IPPROTO_IP, IP_DONTFRAGMENT, CHAR_CAST &on, sizeof(on)); -#else - on = 1; - s = setsockopt(sockfd, IPPROTO_IP, IP_DONTFRAG, &on, sizeof(on)); -#endif - if (0 != s) - { - saved_errno = errno; - CLOSE_SOCKET(sockfd); - errno = saved_errno; - return -1; - } - } -#if __linux__ - else if (AF_INET6 == sa_local->sa_family) - { - int on = IP_PMTUDISC_PROBE; - s = setsockopt(sockfd, IPPROTO_IPV6, IPV6_MTU_DISCOVER, &on, sizeof(on)); - } -#endif - } -#endif - -#if ECN_SUPPORTED - { - int on = 1; - if (AF_INET == sa_local->sa_family) - { - s = setsockopt(sockfd, IPPROTO_IP, IP_RECVTOS, - CHAR_CAST &on, sizeof(on)); - if (!s) - s = setsockopt(sockfd, IPPROTO_IP, IP_TOS, - CHAR_CAST &on, sizeof(on)); - } - else - { - s = setsockopt(sockfd, IPPROTO_IPV6, IPV6_RECVTCLASS, - CHAR_CAST &on, sizeof(on)); - if (!s) - s = setsockopt(sockfd, IPPROTO_IPV6, IPV6_TCLASS, - CHAR_CAST &on, sizeof(on)); - } - if (0 != s) - { - saved_errno = errno; - close(sockfd); - errno = saved_errno; - return -1; - } - LSQ_DEBUG("client ECN support is enabled."); - } -#endif - - if (sport->sp_flags & SPORT_SET_SNDBUF) - { - s = setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, - CHAR_CAST &sport->sp_sndbuf, sizeof(sport->sp_sndbuf)); - if (0 != s) - { - saved_errno = errno; - CLOSE_SOCKET(sockfd); - errno = saved_errno; - return -1; - } - } - - if (sport->sp_flags & SPORT_SET_RCVBUF) - { - s = setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, - CHAR_CAST &sport->sp_rcvbuf, sizeof(sport->sp_rcvbuf)); - if (0 != s) - { - saved_errno = errno; - CLOSE_SOCKET(sockfd); - errno = saved_errno; - return -1; - } - } - - if (0 != getsockname(sockfd, sa_local, &socklen)) - { - saved_errno = errno; - CLOSE_SOCKET(sockfd); - errno = saved_errno; - return -1; - } - - sport->packs_in = allocate_packets_in(sockfd); - if (!sport->packs_in) - { - saved_errno = errno; - CLOSE_SOCKET(sockfd); - errno = saved_errno; - return -1; - } - - memcpy((void *) &sport->sp_local_addr, sa_local, - sa_local->sa_family == AF_INET ? - sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6)); - switch (sa_local->sa_family) { - case AF_INET: - LSQ_DEBUG("local address: %s:%d", - inet_ntop(AF_INET, &u.sin.sin_addr, addr_str, sizeof(addr_str)), - ntohs(u.sin.sin_port)); - break; - } - - sport->engine = engine; - sport->fd = sockfd; - - return add_to_event_loop(sport, eb); -} - - -/* Sometimes it is useful to impose an artificial limit for testing */ -static unsigned -packet_out_limit (void) -{ - const char *env = getenv("LSQUIC_PACKET_OUT_LIMIT"); - if (env) - return atoi(env); - else - return 0; -} - - -enum ctl_what -{ - CW_SENDADDR = 1 << 0, -#if ECN_SUPPORTED - CW_ECN = 1 << 1, -#endif -}; - -static void -setup_control_msg ( -#ifndef WIN32 - struct msghdr -#else - WSAMSG -#endif - *msg, enum ctl_what cw, - const struct lsquic_out_spec *spec, unsigned char *buf, size_t bufsz) -{ - struct cmsghdr *cmsg; - struct sockaddr_in *local_sa; - struct sockaddr_in6 *local_sa6; -#if __linux__ || __APPLE__ || WIN32 - struct in_pktinfo info; -#endif - struct in6_pktinfo info6; - size_t ctl_len; - -#ifndef WIN32 - msg->msg_control = buf; - msg->msg_controllen = bufsz; -#else - msg->Control.buf = (char*)buf; - msg->Control.len = bufsz; -#endif - - /* Need to zero the buffer due to a bug(?) in CMSG_NXTHDR. See - * https://stackoverflow.com/questions/27601849/cmsg-nxthdr-returns-null-even-though-there-are-more-cmsghdr-objects - */ - memset(buf, 0, bufsz); - - ctl_len = 0; - for (cmsg = CMSG_FIRSTHDR(msg); cw && cmsg; cmsg = CMSG_NXTHDR(msg, cmsg)) - { - if (cw & CW_SENDADDR) - { - if (AF_INET == spec->dest_sa->sa_family) - { - local_sa = (struct sockaddr_in *) spec->local_sa; -#if __linux__ || __APPLE__ - memset(&info, 0, sizeof(info)); - info.ipi_spec_dst = local_sa->sin_addr; - cmsg->cmsg_level = IPPROTO_IP; - cmsg->cmsg_type = IP_PKTINFO; - cmsg->cmsg_len = CMSG_LEN(sizeof(info)); - ctl_len += CMSG_SPACE(sizeof(info)); - memcpy(CMSG_DATA(cmsg), &info, sizeof(info)); -#elif WIN32 - memset(&info, 0, sizeof(info)); - info.ipi_addr = local_sa->sin_addr; - cmsg->cmsg_level = IPPROTO_IP; - cmsg->cmsg_type = IP_PKTINFO; - cmsg->cmsg_len = CMSG_LEN(sizeof(info)); - ctl_len += CMSG_SPACE(sizeof(info)); - memcpy(WSA_CMSG_DATA(cmsg), &info, sizeof(info)); -#else - cmsg->cmsg_level = IPPROTO_IP; - cmsg->cmsg_type = IP_SENDSRCADDR; - cmsg->cmsg_len = CMSG_LEN(sizeof(local_sa->sin_addr)); - ctl_len += CMSG_SPACE(sizeof(local_sa->sin_addr)); - memcpy(CMSG_DATA(cmsg), &local_sa->sin_addr, - sizeof(local_sa->sin_addr)); -#endif - } - else - { - local_sa6 = (struct sockaddr_in6 *) spec->local_sa; - memset(&info6, 0, sizeof(info6)); - info6.ipi6_addr = local_sa6->sin6_addr; - cmsg->cmsg_level = IPPROTO_IPV6; - cmsg->cmsg_type = IPV6_PKTINFO; - cmsg->cmsg_len = CMSG_LEN(sizeof(info6)); -#ifndef WIN32 - memcpy(CMSG_DATA(cmsg), &info6, sizeof(info6)); -#else - memcpy(WSA_CMSG_DATA(cmsg), &info6, sizeof(info6)); -#endif - ctl_len += CMSG_SPACE(sizeof(info6)); - } - cw &= ~CW_SENDADDR; - } -#if ECN_SUPPORTED - else if (cw & CW_ECN) - { - if (AF_INET == spec->dest_sa->sa_family) - { - const -#if defined(__FreeBSD__) - unsigned char -#else - int -#endif - tos = spec->ecn; - cmsg->cmsg_level = IPPROTO_IP; - cmsg->cmsg_type = IP_TOS; - cmsg->cmsg_len = CMSG_LEN(sizeof(tos)); - memcpy(CMSG_DATA(cmsg), &tos, sizeof(tos)); - ctl_len += CMSG_SPACE(sizeof(tos)); - } - else - { - const int tos = spec->ecn; - cmsg->cmsg_level = IPPROTO_IPV6; - cmsg->cmsg_type = IPV6_TCLASS; - cmsg->cmsg_len = CMSG_LEN(sizeof(tos)); - memcpy(CMSG_DATA(cmsg), &tos, sizeof(tos)); - ctl_len += CMSG_SPACE(sizeof(tos)); - } - cw &= ~CW_ECN; - } -#endif - else - assert(0); - } - -#ifndef WIN32 - msg->msg_controllen = ctl_len; -#else - msg->Control.len = ctl_len; -#endif -} - - -#if HAVE_SENDMMSG -static int -send_packets_using_sendmmsg (const struct lsquic_out_spec *specs, - unsigned count) -{ -#ifndef NDEBUG - { - /* This only works for a single port! If the specs contain more - * than one socket, this function does *NOT* work. We check it - * here just in case: - */ - void *ctx; - unsigned i; - for (i = 1, ctx = specs[i].peer_ctx; - i < count; - ctx = specs[i].peer_ctx, ++i) - assert(ctx == specs[i - 1].peer_ctx); - } -#endif - - const struct service_port *const sport = specs[0].peer_ctx; - const int fd = sport->fd; - enum ctl_what cw; - unsigned i; - int s, saved_errno; - uintptr_t ancil_key, prev_ancil_key; - struct mmsghdr mmsgs[1024]; - union { - /* cmsg(3) recommends union for proper alignment */ - unsigned char buf[ CMSG_SPACE( - MAX( -#if __linux__ - sizeof(struct in_pktinfo) -#else - sizeof(struct in_addr) -#endif - , sizeof(struct in6_pktinfo)) - ) -#if ECN_SUPPORTED - + CMSG_SPACE(sizeof(int)) -#endif - ]; - struct cmsghdr cmsg; - } ancil [ sizeof(mmsgs) / sizeof(mmsgs[0]) ]; - - prev_ancil_key = 0; - for (i = 0; i < count && i < sizeof(mmsgs) / sizeof(mmsgs[0]); ++i) - { - mmsgs[i].msg_hdr.msg_name = (void *) specs[i].dest_sa; - mmsgs[i].msg_hdr.msg_namelen = (AF_INET == specs[i].dest_sa->sa_family ? - sizeof(struct sockaddr_in) : - sizeof(struct sockaddr_in6)), - mmsgs[i].msg_hdr.msg_iov = specs[i].iov; - mmsgs[i].msg_hdr.msg_iovlen = specs[i].iovlen; - mmsgs[i].msg_hdr.msg_flags = 0; - if ((sport->sp_flags & SPORT_SERVER) && specs[i].local_sa->sa_family) - { - cw = CW_SENDADDR; - ancil_key = (uintptr_t) specs[i].local_sa; - assert(0 == (ancil_key & 3)); - } - else - { - cw = 0; - ancil_key = 0; - } -#if ECN_SUPPORTED - if (sport->sp_prog->prog_api.ea_settings->es_ecn && specs[i].ecn) - { - cw |= CW_ECN; - ancil_key |= specs[i].ecn; - } -#endif - if (cw && prev_ancil_key == ancil_key) - { - /* Reuse previous ancillary message */ - assert(i > 0); -#ifndef WIN32 - mmsgs[i].msg_hdr.msg_control = mmsgs[i - 1].msg_hdr.msg_control; - mmsgs[i].msg_hdr.msg_controllen = mmsgs[i - 1].msg_hdr.msg_controllen; -#else - mmsgs[i].msg_hdr.Control.buf = mmsgs[i - 1].msg_hdr.Control.buf; - mmsgs[i].msg_hdr.Control.len = mmsgs[i - 1].msg_hdr.Control.len; -#endif - } - else if (cw) - { - prev_ancil_key = ancil_key; - setup_control_msg(&mmsgs[i].msg_hdr, cw, &specs[i], ancil[i].buf, - sizeof(ancil[i].buf)); - } - else - { - prev_ancil_key = 0; -#ifndef WIN32 - mmsgs[i].msg_hdr.msg_control = NULL; - mmsgs[i].msg_hdr.msg_controllen = 0; -#else - mmsgs[i].msg_hdr.Control.buf = NULL; - mmsgs[i].msg_hdr.Control.len = 0; -#endif - } - } - - s = sendmmsg(fd, mmsgs, count, 0); - if (s < (int) count) - { - saved_errno = errno; - prog_sport_cant_send(sport->sp_prog, sport->fd); - if (s < 0) - { - LSQ_WARN("sendmmsg failed: %s", strerror(saved_errno)); - errno = saved_errno; - } - else if (s > 0) - errno = EAGAIN; - else - errno = saved_errno; - } - - return s; -} - - -#endif - - -static const struct service_port * -find_sport (struct prog *prog, const struct sockaddr *local_sa) -{ - const struct service_port *sport; - const struct sockaddr *addr; - size_t len; - - TAILQ_FOREACH(sport, prog->prog_sports, next_sport) - { - addr = (struct sockaddr *) &sport->sp_local_addr; - if (addr->sa_family == local_sa->sa_family) - { - len = addr->sa_family == AF_INET ? sizeof(struct sockaddr_in) - : sizeof(struct sockaddr_in6); - if (0 == memcmp(addr, local_sa, len)) - return sport; - if (((struct sockaddr_in *)addr)->sin_port == - ((struct sockaddr_in *)local_sa)->sin_port) - { - if ((addr->sa_family == AF_INET - && ((struct sockaddr_in *)addr)->sin_addr.s_addr - == INADDR_ANY) - ||(addr->sa_family == AF_INET6 - && (IN6_IS_ADDR_UNSPECIFIED( - &((struct sockaddr_in6 *)addr)->sin6_addr)))) - return sport; - } - } - } - - assert(0); - return NULL; -} - - -static int -send_packets_one_by_one (const struct lsquic_out_spec *specs, unsigned count) -{ - const struct service_port *sport; - enum ctl_what cw; - unsigned n; - int s = 0; -#ifndef WIN32 - struct msghdr msg; -#else - DWORD bytes; - WSAMSG msg; - LPWSABUF pWsaBuf = NULL; -#endif - union { - /* cmsg(3) recommends union for proper alignment */ -#if __linux__ || WIN32 -# define SIZE1 sizeof(struct in_pktinfo) -#else -# define SIZE1 sizeof(struct in_addr) -#endif - unsigned char buf[ - CMSG_SPACE(MAX(SIZE1, sizeof(struct in6_pktinfo))) -#if ECN_SUPPORTED - + CMSG_SPACE(sizeof(int)) -#endif - ]; - struct cmsghdr cmsg; - } ancil; - uintptr_t ancil_key, prev_ancil_key; - - if (0 == count) - return 0; - - const unsigned orig_count = count; - const unsigned out_limit = packet_out_limit(); - if (out_limit && count > out_limit) - count = out_limit; -#if LSQUIC_RANDOM_SEND_FAILURE - { - const char *freq_str = getenv("LSQUIC_RANDOM_SEND_FAILURE"); - int freq; - if (freq_str) - freq = atoi(freq_str); - else - freq = 10; - if (rand() % freq == 0) - { - assert(count > 0); - sport = specs[0].peer_ctx; - LSQ_NOTICE("sending \"randomly\" fails"); - prog_sport_cant_send(sport->sp_prog, sport->fd); - goto random_send_failure; - } - } -#endif - - n = 0; - prev_ancil_key = 0; -#ifdef WIN32 - #define MAX_OUT_BATCH_SIZE 1024 - pWsaBuf = malloc(sizeof(*pWsaBuf)*MAX_OUT_BATCH_SIZE*2); - if (NULL == pWsaBuf) { - return -1; - } -#endif - - do - { - sport = specs[n].peer_ctx; - if (sport->sp_prog->prog_flags & PROG_SEARCH_ADDRS) - sport = find_sport(sport->sp_prog, specs[n].local_sa); -#ifndef WIN32 - msg.msg_name = (void *) specs[n].dest_sa; - msg.msg_namelen = (AF_INET == specs[n].dest_sa->sa_family ? - sizeof(struct sockaddr_in) : - sizeof(struct sockaddr_in6)), - msg.msg_iov = specs[n].iov; - msg.msg_iovlen = specs[n].iovlen; - msg.msg_flags = 0; -#else - for (int i = 0; i < specs[n].iovlen; i++) - { - pWsaBuf[i].buf = specs[n].iov[i].iov_base; - pWsaBuf[i].len = specs[n].iov[i].iov_len; - } - msg.name = (void *) specs[n].dest_sa; - msg.namelen = (AF_INET == specs[n].dest_sa->sa_family ? - sizeof(struct sockaddr_in) : - sizeof(struct sockaddr_in6)); - msg.dwBufferCount = specs[n].iovlen; - msg.lpBuffers = pWsaBuf; - msg.dwFlags = 0; -#endif - if ((sport->sp_flags & SPORT_SERVER) && specs[n].local_sa->sa_family) - { - cw = CW_SENDADDR; - ancil_key = (uintptr_t) specs[n].local_sa; - assert(0 == (ancil_key & 3)); - } - else - { - cw = 0; - ancil_key = 0; - } -#if ECN_SUPPORTED - if (sport->sp_prog->prog_api.ea_settings->es_ecn && specs[n].ecn) - { - cw |= CW_ECN; - ancil_key |= specs[n].ecn; - } -#endif - if (cw && prev_ancil_key == ancil_key) - { - /* Reuse previous ancillary message */ - ; - } - else if (cw) - { - prev_ancil_key = ancil_key; - setup_control_msg(&msg, cw, &specs[n], ancil.buf, sizeof(ancil.buf)); - } - else - { - prev_ancil_key = 0; -#ifndef WIN32 - msg.msg_control = NULL; - msg.msg_controllen = 0; -#else - msg.Control.buf = NULL; - msg.Control.len = 0; -#endif - } -#ifndef WIN32 - s = sendmsg(sport->fd, &msg, 0); -#else - s = pfnWSASendMsg(sport->fd, &msg, 0, &bytes, NULL, NULL); -#endif - if (s < 0) - { -#ifndef WIN32 - LSQ_INFO("sendto failed: %s", strerror(errno)); -#else - LSQ_INFO("sendto failed: %s", WSAGetLastError()); -#endif - break; - } - char localaddr_str[80]; - char remoteaddr_str[80]; - LSQ_DEBUG("[%s] TX packet %d bytes to: %s", - sockaddr2str((struct sockaddr *)&sport->sp_local_addr, - localaddr_str, sizeof(localaddr_str)), - s, sockaddr2str(specs[n].dest_sa, - remoteaddr_str, sizeof(remoteaddr_str))); - - ++n; - } - while (n < count); - - if (n < orig_count) - prog_sport_cant_send(sport->sp_prog, sport->fd); - -#ifdef WIN32 - if (NULL != pWsaBuf) { - free(pWsaBuf); - pWsaBuf = NULL; - } -#endif - - if (n > 0) - { - if (n < orig_count && out_limit) - errno = EAGAIN; - return n; - } - else - { - assert(s < 0); -#if LSQUIC_RANDOM_SEND_FAILURE - random_send_failure: -#endif - return -1; - } -} - - -int -sport_packets_out (void *ctx, const struct lsquic_out_spec *specs, - unsigned count) -{ -#if HAVE_SENDMMSG - const struct prog *prog = ctx; - if (prog->prog_use_sendmmsg) - return send_packets_using_sendmmsg(specs, count); - else -#endif - return send_packets_one_by_one(specs, count); -} - - -int -set_perferred_address(uint8_t *addr, uint16_t *port, const char *s, int family) -{ - char addr_buf[1024]; - const char *colon; - if (s && strlen(s) < sizeof(addr_buf) && (colon = strrchr(s, ':'))) - { - strncpy(addr_buf, s, colon - s); - addr_buf[colon - s] = '\0'; - if (inet_pton(family, addr_buf, addr)) - { - *port = atoi(colon + 1); - //params.tp_set |= 1 << TPI_PREFERRED_ADDRESS; - return 1; - } - else - { - struct addrinfo hints, *res = NULL; - int ret; - memset(&hints, 0, sizeof(hints)); - hints.ai_flags = AI_NUMERICSERV; - hints.ai_family = family; - ret = getaddrinfo(addr_buf, colon + 1, &hints, &res); - if (ret != 0) - { - LSQ_ERROR("could not resolve %s:%s: %s", addr_buf, colon + 1, - gai_strerror(ret)); - return 0; - } - if (family == AF_INET) - memcpy(addr, &((struct sockaddr_in *)res->ai_addr)->sin_addr.s_addr, 4); - else - memcpy(addr, &((struct sockaddr_in6 *)res->ai_addr)->sin6_addr, 16); - *port = atoi(colon + 1); - return 1; - } - } - return 0; -} - - -int -set_engine_option (struct lsquic_engine_settings *settings, - int *version_cleared, const char *name) -{ - int len; - const char *val = strchr(name, '='); - if (!val) - return -1; - len = val - name; - ++val; - - switch (len) - { - case 2: - if (0 == strncmp(name, "ua", 2)) - { - settings->es_ua = val; - return 0; - } - break; - case 3: - if (0 == strncmp(name, "ecn", 1)) - { - settings->es_ecn = atoi(val); -#if !ECN_SUPPORTED - if (settings->es_ecn) - { - LSQ_ERROR("ECN is not supported on this platform"); - break; - } -#endif - return 0; - } - break; - case 4: - if (0 == strncmp(name, "cfcw", 4)) - { - settings->es_cfcw = atoi(val); - return 0; - } - if (0 == strncmp(name, "sfcw", 4)) - { - settings->es_sfcw = atoi(val); - return 0; - } - if (0 == strncmp(name, "spin", 4)) - { - settings->es_spin = atoi(val); - return 0; - } - if (0 == strncmp(name, "srej", 4)) - { - settings->es_support_srej = atoi(val); - return 0; - } - break; - case 7: - if (0 == strncmp(name, "version", 7)) - { - if (!*version_cleared) - { - *version_cleared = 1; - settings->es_versions = 0; - } - enum lsquic_version ver = lsquic_str2ver(val, strlen(val)); - if ((unsigned) ver < N_LSQVER) - { - settings->es_versions |= 1 << ver; - return 0; - } - ver = lsquic_alpn2ver(val, strlen(val)); - if ((unsigned) ver < N_LSQVER) - { - settings->es_versions |= 1 << ver; - return 0; - } - } - else if (0 == strncmp(name, "rw_once", 7)) - { - settings->es_rw_once = atoi(val); - return 0; - } - else if (0 == strncmp(name, "cc_algo", 7)) - { - settings->es_cc_algo = atoi(val); - return 0; - } - else if (0 == strncmp(name, "ql_bits", 7)) - { - settings->es_ql_bits = atoi(val); - return 0; - } - break; - case 8: - if (0 == strncmp(name, "max_cfcw", 8)) - { - settings->es_max_cfcw = atoi(val); - return 0; - } - if (0 == strncmp(name, "max_sfcw", 8)) - { - settings->es_max_sfcw = atoi(val); - return 0; - } - if (0 == strncmp(name, "scid_len", 8)) - { - settings->es_scid_len = atoi(val); - return 0; - } - if (0 == strncmp(name, "dplpmtud", 8)) - { - settings->es_dplpmtud = atoi(val); - return 0; - } - break; - case 9: - if (0 == strncmp(name, "send_prst", 9)) - { - settings->es_send_prst = atoi(val); - return 0; - } - break; - case 10: - if (0 == strncmp(name, "honor_prst", 10)) - { - settings->es_honor_prst = atoi(val); - return 0; - } - if (0 == strncmp(name, "timestamps", 10)) - { - settings->es_timestamps = atoi(val); - return 0; - } - if (0 == strncmp(name, "max_plpmtu", 10)) - { - settings->es_max_plpmtu = atoi(val); - return 0; - } - break; - case 11: - if (0 == strncmp(name, "ping_period", 11)) - { - settings->es_ping_period = atoi(val); - return 0; - } - if (0 == strncmp(name, "base_plpmtu", 11)) - { - settings->es_base_plpmtu = atoi(val); - return 0; - } - if (0 == strncmp(name, "ptpc_target", 11)) - { - settings->es_ptpc_target = atof(val); - return 0; - } - break; - case 12: - if (0 == strncmp(name, "idle_conn_to", 12)) - { - settings->es_idle_conn_to = atoi(val); - return 0; - } - if (0 == strncmp(name, "idle_timeout", 12)) - { - settings->es_idle_timeout = atoi(val); - return 0; - } - if (0 == strncmp(name, "silent_close", 12)) - { - settings->es_silent_close = atoi(val); - return 0; - } - if (0 == strncmp(name, "support_push", 12)) - { - settings->es_support_push = atoi(val); - return 0; - } - if (0 == strncmp(name, "support_nstp", 12)) - { - settings->es_support_nstp = atoi(val); - return 0; - } - if (0 == strncmp(name, "pace_packets", 12)) - { - settings->es_pace_packets = atoi(val); - return 0; - } - if (0 == strncmp(name, "handshake_to", 12)) - { - settings->es_handshake_to = atoi(val); - return 0; - } - if (0 == strncmp(name, "support_srej", 12)) - { - settings->es_support_srej = atoi(val); - return 0; - } - if (0 == strncmp(name, "delayed_acks", 12)) - { - settings->es_delayed_acks = atoi(val); - return 0; - } - if (0 == strncmp(name, "preferred_v4", 12)) - { - set_perferred_address(settings->es_preferred_address, - (uint16_t *)&settings->es_preferred_address[4], val, AF_INET); - return 0; - } - if (0 == strncmp(name, "preferred_v6", 12)) - { - set_perferred_address(&settings->es_preferred_address[6], - (uint16_t *)&settings->es_preferred_address[22], - val, AF_INET6); - return 0; - } - - break; - case 13: - if (0 == strncmp(name, "support_tcid0", 13)) - { - settings->es_support_tcid0 = atoi(val); - return 0; - } - if (0 == strncmp(name, "init_max_data", 13)) - { - settings->es_init_max_data = atoi(val); - return 0; - } - if (0 == strncmp(name, "scid_iss_rate", 13)) - { - settings->es_scid_iss_rate = atoi(val); - return 0; - } - if (0 == strncmp(name, "ext_http_prio", 13)) - { - settings->es_ext_http_prio = atoi(val); - return 0; - } - if (0 == strncmp(name, "ptpc_int_gain", 13)) - { - settings->es_ptpc_int_gain = atof(val); - return 0; - } - if (0 == strncmp(name, "delay_onclose", 13)) - { - settings->es_delay_onclose = atoi(val); - return 0; - } - break; - case 14: - if (0 == strncmp(name, "max_streams_in", 14)) - { - settings->es_max_streams_in = atoi(val); - return 0; - } - if (0 == strncmp(name, "progress_check", 14)) - { - settings->es_progress_check = atoi(val); - return 0; - } - if (0 == strncmp(name, "ptpc_prop_gain", 14)) - { - settings->es_ptpc_prop_gain = atof(val); - return 0; - } - if (0 == strncmp(name, "max_batch_size", 14)) - { - settings->es_max_batch_size = atoi(val); - return 0; - } - break; - case 15: - if (0 == strncmp(name, "allow_migration", 15)) - { - settings->es_allow_migration = atoi(val); - return 0; - } - if (0 == strncmp(name, "grease_quic_bit", 15)) - { - settings->es_grease_quic_bit = atoi(val); - return 0; - } - if (0 == strncmp(name, "ptpc_dyn_target", 15)) - { - settings->es_ptpc_dyn_target = atoi(val); - return 0; - } - if (0 == strncmp(name, "ptpc_err_thresh", 15)) - { - settings->es_ptpc_err_thresh = atof(val); - return 0; - } - break; - case 16: - if (0 == strncmp(name, "proc_time_thresh", 16)) - { - settings->es_proc_time_thresh = atoi(val); - return 0; - } - if (0 == strncmp(name, "qpack_experiment", 16)) - { - settings->es_qpack_experiment = atoi(val); - return 0; - } - if (0 == strncmp(name, "ptpc_periodicity", 16)) - { - settings->es_ptpc_periodicity = atoi(val); - return 0; - } - if (0 == strncmp(name, "ptpc_max_packtol", 16)) - { - settings->es_ptpc_max_packtol = atoi(val); - return 0; - } - if (0 == strncmp(name, "ptpc_err_divisor", 16)) - { - settings->es_ptpc_err_divisor = atof(val); - return 0; - } - break; - case 18: - if (0 == strncmp(name, "qpack_enc_max_size", 18)) - { - settings->es_qpack_enc_max_size = atoi(val); - return 0; - } - if (0 == strncmp(name, "qpack_dec_max_size", 18)) - { - settings->es_qpack_dec_max_size = atoi(val); - return 0; - } - if (0 == strncmp(name, "noprogress_timeout", 18)) - { - settings->es_noprogress_timeout = atoi(val); - return 0; - } - break; - case 20: - if (0 == strncmp(name, "max_header_list_size", 20)) - { - settings->es_max_header_list_size = atoi(val); - return 0; - } - if (0 == strncmp(name, "init_max_streams_uni", 20)) - { - settings->es_init_max_streams_uni = atoi(val); - return 0; - } - break; - case 21: - if (0 == strncmp(name, "qpack_enc_max_blocked", 21)) - { - settings->es_qpack_enc_max_blocked = atoi(val); - return 0; - } - if (0 == strncmp(name, "qpack_dec_max_blocked", 21)) - { - settings->es_qpack_dec_max_blocked = atoi(val); - return 0; - } - if (0 == strncmp(name, "init_max_streams_bidi", 21)) - { - settings->es_init_max_streams_bidi = atoi(val); - return 0; - } - break; - case 23: - if (0 == strncmp(name, "max_udp_payload_size_rx", 23)) - { - settings->es_max_udp_payload_size_rx = atoi(val); - return 0; - } - break; - case 24: - if (0 == strncmp(name, "init_max_stream_data_uni", 24)) - { - settings->es_init_max_stream_data_uni = atoi(val); - return 0; - } - break; - case 31: - if (0 == strncmp(name, "init_max_stream_data_bidi_local", 31)) - { - settings->es_init_max_stream_data_bidi_local = atoi(val); - return 0; - } - break; - case 32: - if (0 == strncmp(name, "init_max_stream_data_bidi_remote", 32)) - { - settings->es_init_max_stream_data_bidi_remote = atoi(val); - return 0; - } - break; - } - - return -1; -} - - -/* So that largest allocation in PBA fits in 4KB */ -#define PBA_SIZE_MAX 0x1000 -#define PBA_SIZE_THRESH (PBA_SIZE_MAX - sizeof(uintptr_t)) - -struct packout_buf -{ - SLIST_ENTRY(packout_buf) next_free_pb; -}; - - -void -pba_init (struct packout_buf_allocator *pba, unsigned max) -{ - SLIST_INIT(&pba->free_packout_bufs); - pba->max = max; - pba->n_out = 0; -} - - -void * -pba_allocate (void *packout_buf_allocator, void *peer_ctx, - lsquic_conn_ctx_t *conn_ctx, unsigned short size, char is_ipv6) -{ - struct packout_buf_allocator *const pba = packout_buf_allocator; - struct packout_buf *pb; - - if (pba->max && pba->n_out >= pba->max) - { - LSQ_DEBUG("# outstanding packout bufs reached the limit of %u, " - "returning NULL", pba->max); - return NULL; - } - -#if LSQUIC_USE_POOLS - pb = SLIST_FIRST(&pba->free_packout_bufs); - if (pb && size <= PBA_SIZE_THRESH) - SLIST_REMOVE_HEAD(&pba->free_packout_bufs, next_free_pb); - else if (size <= PBA_SIZE_THRESH) - pb = malloc(PBA_SIZE_MAX); - else - pb = malloc(sizeof(uintptr_t) + size); -#else - pb = malloc(sizeof(uintptr_t) + size); -#endif - - if (pb) - { - * (uintptr_t *) pb = size; - ++pba->n_out; - return (uintptr_t *) pb + 1; - } - else - return NULL; -} - - -void -pba_release (void *packout_buf_allocator, void *peer_ctx, void *obj, char ipv6) -{ - struct packout_buf_allocator *const pba = packout_buf_allocator; - obj = (uintptr_t *) obj - 1; -#if LSQUIC_USE_POOLS - if (* (uintptr_t *) obj <= PBA_SIZE_THRESH) - { - struct packout_buf *const pb = obj; - SLIST_INSERT_HEAD(&pba->free_packout_bufs, pb, next_free_pb); - } - else -#endif - free(obj); - --pba->n_out; -} - - -void -pba_cleanup (struct packout_buf_allocator *pba) -{ -#if LSQUIC_USE_POOLS - unsigned n = 0; - struct packout_buf *pb; -#endif - - if (pba->n_out) - LSQ_WARN("%u packout bufs outstanding at deinit", pba->n_out); - -#if LSQUIC_USE_POOLS - while ((pb = SLIST_FIRST(&pba->free_packout_bufs))) - { - SLIST_REMOVE_HEAD(&pba->free_packout_bufs, next_free_pb); - free(pb); - ++n; - } - - LSQ_INFO("pba deinitialized, freed %u packout bufs", n); -#endif -} - - -void -print_conn_info (const lsquic_conn_t *conn) -{ - const char *cipher; - - cipher = lsquic_conn_crypto_cipher(conn); - - LSQ_INFO("Connection info: version: %u; cipher: %s; key size: %d, alg key size: %d", - lsquic_conn_quic_version(conn), - cipher ? cipher : "", - lsquic_conn_crypto_keysize(conn), - lsquic_conn_crypto_alg_keysize(conn) - ); -} - - -struct reader_ctx -{ - size_t file_size; - size_t nread; - int fd; -}; - - -size_t -test_reader_size (void *void_ctx) -{ - struct reader_ctx *const ctx = void_ctx; - return ctx->file_size - ctx->nread; -} - - -size_t -test_reader_read (void *void_ctx, void *buf, size_t count) -{ - struct reader_ctx *const ctx = void_ctx; - ssize_t nread; - - if (count > test_reader_size(ctx)) - count = test_reader_size(ctx); - -#ifndef WIN32 - nread = read(ctx->fd, buf, count); -#else - nread = _read(ctx->fd, buf, count); -#endif - if (nread >= 0) - { - ctx->nread += nread; - return nread; - } - else - { - LSQ_WARN("%s: error reading from file: %s", __func__, strerror(errno)); - ctx->nread = ctx->file_size = 0; - return 0; - } -} - - -struct reader_ctx * -create_lsquic_reader_ctx (const char *filename) -{ - int fd; - struct stat st; - -#ifndef WIN32 - fd = open(filename, O_RDONLY); -#else - fd = _open(filename, _O_RDONLY); -#endif - if (fd < 0) - { - LSQ_ERROR("cannot open %s for reading: %s", filename, strerror(errno)); - return NULL; - } - - if (0 != fstat(fd, &st)) - { - LSQ_ERROR("cannot fstat(%s) failed: %s", filename, strerror(errno)); - (void) close(fd); - return NULL; - } - struct reader_ctx *ctx = malloc(sizeof(*ctx)); - ctx->file_size = st.st_size; - ctx->nread = 0; - ctx->fd = fd; - return ctx; -} - - -void -destroy_lsquic_reader_ctx (struct reader_ctx *ctx) -{ - (void) close(ctx->fd); - free(ctx); -} - - -int -sport_set_token (struct service_port *sport, const char *token_str) -{ - static const unsigned char c2b[0x100] = - { - [(int)'0'] = 0, - [(int)'1'] = 1, - [(int)'2'] = 2, - [(int)'3'] = 3, - [(int)'4'] = 4, - [(int)'5'] = 5, - [(int)'6'] = 6, - [(int)'7'] = 7, - [(int)'8'] = 8, - [(int)'9'] = 9, - [(int)'A'] = 0xA, - [(int)'B'] = 0xB, - [(int)'C'] = 0xC, - [(int)'D'] = 0xD, - [(int)'E'] = 0xE, - [(int)'F'] = 0xF, - [(int)'a'] = 0xA, - [(int)'b'] = 0xB, - [(int)'c'] = 0xC, - [(int)'d'] = 0xD, - [(int)'e'] = 0xE, - [(int)'f'] = 0xF, - }; - unsigned char *token; - int len, i; - - len = strlen(token_str); - token = malloc(len / 2); - if (!token) - return -1; - for (i = 0; i < len / 2; ++i) - token[i] = (c2b[ (int) token_str[i * 2] ] << 4) - | c2b[ (int) token_str[i * 2 + 1] ]; - - free(sport->sp_token_buf); - sport->sp_token_buf = token; - sport->sp_token_sz = len / 2; - return 0; -} - - -int -header_set_ptr (struct lsxpack_header *hdr, struct header_buf *header_buf, - const char *name, size_t name_len, - const char *val, size_t val_len) -{ - if (header_buf->off + name_len + val_len <= sizeof(header_buf->buf)) - { - memcpy(header_buf->buf + header_buf->off, name, name_len); - memcpy(header_buf->buf + header_buf->off + name_len, val, val_len); - lsxpack_header_set_offset2(hdr, header_buf->buf + header_buf->off, - 0, name_len, name_len, val_len); - header_buf->off += name_len + val_len; - return 0; - } - else - return -1; -} diff --git a/external/lsquic/bin/test_common.h b/external/lsquic/bin/test_common.h deleted file mode 100644 index 60fb5f3..0000000 --- a/external/lsquic/bin/test_common.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * Test client's and server's common components. - */ - -#ifndef TEST_COMMON_H -#define TEST_COMMON_H 1 - -#if __linux__ -# include /* For IFNAMSIZ */ -#endif - -#ifdef WIN32 -#include -#include -#endif - -struct lsquic_engine; -struct lsquic_engine_settings; -struct lsquic_out_spec; -struct event_base; -struct event; -struct packets_in; -struct lsquic_conn; -struct prog; -struct reader_ctx; -struct lsxpack_header; - -#ifndef WIN32 -# define SOCKOPT_VAL int -# define SOCKET_TYPE int -# define CLOSE_SOCKET close -# define CHAR_CAST -#else -# define SOCKOPT_VAL DWORD -# define SOCKET_TYPE SOCKET -# define CLOSE_SOCKET closesocket -# define CHAR_CAST (char *) -#endif - -enum sport_flags -{ -#if LSQUIC_DONTFRAG_SUPPORTED - SPORT_FRAGMENT_OK = (1 << 0), -#endif - SPORT_SET_SNDBUF = (1 << 1), /* SO_SNDBUF */ - SPORT_SET_RCVBUF = (1 << 2), /* SO_RCVBUF */ - SPORT_SERVER = (1 << 3), - SPORT_CONNECT = (1 << 4), -}; - -struct service_port { - TAILQ_ENTRY(service_port) next_sport; -#ifndef WIN32 - int fd; -#else - SOCKET fd; -#endif -#if __linux__ - uint32_t n_dropped; - int drop_init; - char if_name[IFNAMSIZ]; -#endif - struct event *ev; - struct lsquic_engine *engine; - void *conn_ctx; - char host[80]; - struct sockaddr_storage sas; - struct sockaddr_storage sp_local_addr; - struct packets_in *packs_in; - enum sport_flags sp_flags; - SOCKOPT_VAL sp_sndbuf; /* If SPORT_SET_SNDBUF is set */ - SOCKOPT_VAL sp_rcvbuf; /* If SPORT_SET_RCVBUF is set */ - struct prog *sp_prog; - unsigned char *sp_token_buf; - size_t sp_token_sz; -}; - -TAILQ_HEAD(sport_head, service_port); - -struct service_port * -sport_new (const char *optarg, struct prog *); - -void -sport_destroy (struct service_port *); - -int -sport_init_server (struct service_port *, struct lsquic_engine *, - struct event_base *); - -int -sport_init_client (struct service_port *, struct lsquic_engine *, - struct event_base *); - -int -sport_packets_out (void *ctx, const struct lsquic_out_spec *, unsigned count); - -int -sport_set_token (struct service_port *, const char *); - -int -set_engine_option (struct lsquic_engine_settings *, - int *version_cleared, const char *name_value); - -struct packout_buf; - -struct packout_buf_allocator -{ - unsigned n_out, /* Number of buffers outstanding */ - max; /* Maximum outstanding. Zero mean no limit */ - SLIST_HEAD(, packout_buf) free_packout_bufs; -}; - -void -pba_init (struct packout_buf_allocator *, unsigned max); - -void * -pba_allocate (void *packout_buf_allocator, void*, lsquic_conn_ctx_t *, unsigned short, char); - -void -pba_release (void *packout_buf_allocator, void *, void *obj, char); - -void -pba_cleanup (struct packout_buf_allocator *); - -void -print_conn_info (const struct lsquic_conn *conn); - -size_t -test_reader_size (void *void_ctx); - -size_t -test_reader_read (void *void_ctx, void *buf, size_t count); - -struct reader_ctx * -create_lsquic_reader_ctx (const char *filename); - -void -destroy_lsquic_reader_ctx (struct reader_ctx *ctx); - -#define LITESPEED_ID "lsquic/" LSQUIC_VERSION_STR - -struct header_buf -{ - unsigned off; - char buf[UINT16_MAX]; -}; - -int -header_set_ptr (struct lsxpack_header *hdr, struct header_buf *header_buf, - const char *name, size_t name_len, - const char *val, size_t val_len); - -#endif diff --git a/external/lsquic/bin/test_config.h.in b/external/lsquic/bin/test_config.h.in deleted file mode 100644 index 1c2ffba..0000000 --- a/external/lsquic/bin/test_config.h.in +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef LSQUIC_CONFIG_H -#define LSQUIC_CONFIG_H - -#cmakedefine HAVE_SENDMMSG 1 -#cmakedefine HAVE_RECVMMSG 1 -#cmakedefine HAVE_OPEN_MEMSTREAM 1 -#cmakedefine HAVE_IP_DONTFRAG 1 -#cmakedefine HAVE_IP_MTU_DISCOVER 1 -#cmakedefine HAVE_REGEX 1 -#cmakedefine HAVE_PREADV 1 - -#define LSQUIC_DONTFRAG_SUPPORTED (HAVE_IP_DONTFRAG || HAVE_IP_MTU_DISCOVER || HAVE_IPV6_MTU_DISCOVER) - -/* TODO: presumably it's the same on FreeBSD, test it. - * See https://github.com/quicwg/base-drafts/wiki/ECN-in-QUIC - */ -#if __linux__ || defined(__FreeBSD__) -#define ECN_SUPPORTED 1 -#else -#define ECN_SUPPORTED 0 -#endif - -#endif diff --git a/external/lsquic/docs/apiref.rst b/external/lsquic/docs/apiref.rst deleted file mode 100644 index 8453086..0000000 --- a/external/lsquic/docs/apiref.rst +++ /dev/null @@ -1,2368 +0,0 @@ -API Reference -============= - -.. highlight:: c - -Preliminaries -------------- - -All declarations are in :file:`lsquic.h`, so it is enough to - -:: - - #include - -in each source file. - - -Library Version ---------------- - -LSQUIC follows the following versioning model. The version number -has the form MAJOR.MINOR.PATCH, where - -- MAJOR changes when a large redesign occurs; -- MINOR changes when an API change or another significant change occurs; and -- PATCH changes when a bug is fixed or another small, API-compatible change occurs. - -QUIC Versions -------------- - -LSQUIC supports two types of QUIC protocol: Google QUIC and IETF QUIC. The -former will at some point become obsolete, while the latter is still being -developed by the IETF. Both types are included in a single enum: - -.. type:: enum lsquic_version - - .. member:: LSQVER_043 - - Google QUIC version Q043 - - .. member:: LSQVER_046 - - Google QUIC version Q046 - - .. member:: LSQVER_050 - - Google QUIC version Q050 - - .. member:: LSQVER_ID27 - - IETF QUIC version ID (Internet-Draft) 27; this version is deprecated. - - .. member:: LSQVER_ID29 - - IETF QUIC version ID 29 - - .. member:: LSQVER_ID34 - - IETF QUIC version ID 34 - - .. member:: LSQVER_I001 - - IETF QUIC version 1. (This version is disabled by default until - the QUIC RFC is released). - - .. member:: N_LSQVER - - Special value indicating the number of versions in the enum. It - may be used as argument to :func:`lsquic_engine_connect()`. - -Several version lists (as bitmasks) are defined in :file:`lsquic.h`: - -.. macro:: LSQUIC_SUPPORTED_VERSIONS - -List of all supported versions. - -.. macro:: LSQUIC_FORCED_TCID0_VERSIONS - -List of versions in which the server never includes CID in short packets. - -.. macro:: LSQUIC_EXPERIMENTAL_VERSIONS - -Experimental versions. - -.. macro:: LSQUIC_DEPRECATED_VERSIONS - -Deprecated versions. - -.. macro:: LSQUIC_GQUIC_HEADER_VERSIONS - -Versions that have Google QUIC-like headers. Only Q043 remains in this -list. - -.. macro:: LSQUIC_IETF_VERSIONS - -IETF QUIC versions. - -.. macro:: LSQUIC_IETF_DRAFT_VERSIONS - -IETF QUIC *draft* versions. When IETF QUIC v1 is released, it will not -be included in this list. - -LSQUIC Types ------------- - -LSQUIC declares several types used by many of its public functions. They are: - -.. type:: lsquic_engine_t - - Instance of LSQUIC engine. - -.. type:: lsquic_conn_t - - QUIC connection. - -.. type:: lsquic_stream_t - - QUIC stream. - -.. type:: lsquic_stream_id_t - - Stream ID. - -.. type:: lsquic_conn_ctx_t - - Connection context. This is the return value of :member:`lsquic_stream_if.on_new_conn`. - To LSQUIC, this is just an opaque pointer. User code is expected to - use it for its own purposes. - -.. type:: lsquic_stream_ctx_t - - Stream context. This is the return value of :func:`on_new_stream()`. - To LSQUIC, this is just an opaque pointer. User code is expected to - use it for its own purposes. - -.. type:: lsquic_http_headers_t - - HTTP headers - -Library Initialization ----------------------- - -Before using the library, internal structures must be initialized using -the global initialization function: - -:: - - if (0 == lsquic_global_init(LSQUIC_GLOBAL_CLIENT|LSQUIC_GLOBAL_SERVER)) - /* OK, do something useful */ - ; - -This call only needs to be made once. Afterwards, any number of LSQUIC -engines may be instantiated. - -After a process is done using LSQUIC, it should clean up: - -:: - - lsquic_global_cleanup(); - -Logging -------- - -.. type:: struct lsquic_logger_if - - .. member:: int (*log_buf)(void *logger_ctx, const char *buf, size_t len) - -.. function:: void lsquic_logger_init (const struct lsquic_logger_if *logger_if, void *logger_ctx, enum lsquic_logger_timestamp_style) - - Call this if you want to do something with LSQUIC log messages, as they are thrown out by default. - -.. function:: int lsquic_set_log_level (const char *log_level) - - Set log level for all LSQUIC modules. - - :param log_level: Acceptable values are debug, info, notice, warning, error, alert, emerg, crit (case-insensitive). - :return: 0 on success or -1 on failure (invalid log level). - -.. function:: int lsquic_logger_lopt (const char *log_specs) - - Set log level for a particular module or several modules. - - :param log_specs: - - One or more "module=level" specifications serapated by comma. - For example, "event=debug,engine=info". See `List of Log Modules`_ - -Engine Instantiation and Destruction ------------------------------------- - -To use the library, an instance of the ``struct lsquic_engine`` needs to be -created: - -.. function:: lsquic_engine_t *lsquic_engine_new (unsigned flags, const struct lsquic_engine_api *api) - - Create a new engine. - - :param flags: This is is a bitmask of :macro:`LSENG_SERVER` and - :macro:`LSENG_HTTP`. - :param api: Pointer to an initialized :type:`lsquic_engine_api`. - - The engine can be instantiated either in server mode (when ``LSENG_SERVER`` - is set) or client mode. If you need both server and client in your program, - create two engines (or as many as you'd like). - - Specifying ``LSENG_HTTP`` flag enables the HTTP functionality: HTTP/2-like - for Google QUIC connections and HTTP/3 functionality for IETF QUIC - connections. - -.. macro:: LSENG_SERVER - - One of possible bitmask values passed as first argument to - :type:`lsquic_engine_new`. When set, the engine instance - will be in the server mode. - -.. macro:: LSENG_HTTP - - One of possible bitmask values passed as first argument to - :type:`lsquic_engine_new`. When set, the engine instance - will enable HTTP functionality. - -.. function:: void lsquic_engine_cooldown (lsquic_engine_t *engine) - - This function closes all mini connections and marks all full connections - as going away. In server mode, this also causes the engine to stop - creating new connections. - -.. function:: void lsquic_engine_destroy (lsquic_engine_t *engine) - - Destroy engine and all its resources. - -Engine Callbacks ----------------- - -``struct lsquic_engine_api`` contains a few mandatory members and several -optional members. - -.. type:: struct lsquic_engine_api - - .. member:: const struct lsquic_stream_if *ea_stream_if - .. member:: void *ea_stream_if_ctx - - ``ea_stream_if`` is mandatory. This structure contains pointers - to callbacks that handle connections and stream events. - - .. member:: lsquic_packets_out_f ea_packets_out - .. member:: void *ea_packets_out_ctx - - ``ea_packets_out`` is used by the engine to send packets. - - .. member:: const struct lsquic_engine_settings *ea_settings - - If ``ea_settings`` is set to NULL, the engine uses default settings - (see :func:`lsquic_engine_init_settings()`) - - .. member:: lsquic_lookup_cert_f ea_lookup_cert - .. member:: void *ea_cert_lu_ctx - - Look up certificate. Mandatory in server mode. - - .. member:: struct ssl_ctx_st * (*ea_get_ssl_ctx)(void *peer_ctx, const struct sockaddr *local) - - Get SSL_CTX associated with a peer context. Mandatory in server - mode. This is used for default values for SSL instantiation. - - .. member:: const struct lsquic_hset_if *ea_hsi_if - .. member:: void *ea_hsi_ctx - - Optional header set interface. If not specified, the incoming headers - are converted to HTTP/1.x format and are read from stream and have to - be parsed again. - - .. member:: const struct lsquic_shared_hash_if *ea_shi - .. member:: void *ea_shi_ctx - - Shared hash interface can be used to share state between several - processes of a single QUIC server. - - .. member:: const struct lsquic_packout_mem_if *ea_pmi - .. member:: void *ea_pmi_ctx - - Optional set of functions to manage memory allocation for outgoing - packets. - - .. member:: lsquic_cids_update_f ea_new_scids - .. member:: lsquic_cids_update_f ea_live_scids - .. member:: lsquic_cids_update_f ea_old_scids - .. member:: void *ea_cids_update_ctx - - In a multi-process setup, it may be useful to observe the CID - lifecycle. This optional set of callbacks makes it possible. - - .. member:: const char *ea_alpn - - The optional ALPN string is used by the client if :macro:`LSENG_HTTP` - is not set. - - .. member:: void (*ea_generate_scid)(lsquic_conn_t *, lsquic_cid_t *, unsigned) - - Optional interface to control the creation of connection IDs. - -.. _apiref-engine-settings: - -Engine Settings ---------------- - -Engine behavior can be controlled by several settings specified in the -settings structure: - -.. type:: struct lsquic_engine_settings - - .. member:: unsigned es_versions - - This is a bit mask wherein each bit corresponds to a value in - :type:`lsquic_version`. Client starts negotiating with the highest - version and goes down. Server supports either of the versions - specified here. This setting applies to both Google and IETF QUIC. - - The default value is :macro:`LSQUIC_DF_VERSIONS`. - - .. member:: unsigned es_cfcw - - Initial default connection flow control window. - - In server mode, per-connection values may be set lower than - this if resources are scarce. - - Do not set es_cfcw and es_sfcw lower than :macro:`LSQUIC_MIN_FCW`. - - .. member:: unsigned es_sfcw - - Initial default stream flow control window. - - In server mode, per-connection values may be set lower than - this if resources are scarce. - - Do not set es_cfcw and es_sfcw lower than :macro:`LSQUIC_MIN_FCW`. - - .. member:: unsigned es_max_cfcw - - This value is used to specify maximum allowed value CFCW is allowed - to reach due to window auto-tuning. By default, this value is zero, - which means that CFCW is not allowed to increase from its initial - value. - - This setting is applicable to both gQUIC and IETF QUIC. - - See :member:`lsquic_engine_settings.es_cfcw`, - :member:`lsquic_engine_settings.es_init_max_data`. - - .. member:: unsigned es_max_sfcw - - This value is used to specify the maximum value stream flow control - window is allowed to reach due to auto-tuning. By default, this - value is zero, meaning that auto-tuning is turned off. - - This setting is applicable to both gQUIC and IETF QUIC. - - See :member:`lsquic_engine_settings.es_sfcw`, - :member:`lsquic_engine_settings.es_init_max_stream_data_bidi_local`, - :member:`lsquic_engine_settings.es_init_max_stream_data_bidi_remote`. - - .. member:: unsigned es_max_streams_in - - Maximum incoming streams, a.k.a. MIDS. - - Google QUIC only. - - .. member:: unsigned long es_handshake_to - - Handshake timeout in microseconds. - - For client, this can be set to an arbitrary value (zero turns the - timeout off). - - For server, this value is limited to about 16 seconds. Do not set - it to zero. - - Defaults to :macro:`LSQUIC_DF_HANDSHAKE_TO`. - - .. member:: unsigned long es_idle_conn_to - - Idle connection timeout, a.k.a ICSL, in microseconds; GQUIC only. - - Defaults to :macro:`LSQUIC_DF_IDLE_CONN_TO` - - .. member:: int es_silent_close - - When true, ``CONNECTION_CLOSE`` is not sent when connection times out. - The server will also not send a reply to client's ``CONNECTION_CLOSE``. - - Corresponds to SCLS (silent close) gQUIC option. - - .. member:: unsigned es_max_header_list_size - - This corresponds to SETTINGS_MAX_HEADER_LIST_SIZE - (:rfc:`7540#section-6.5.2`). 0 means no limit. Defaults - to :func:`LSQUIC_DF_MAX_HEADER_LIST_SIZE`. - - .. member:: const char *es_ua - - UAID -- User-Agent ID. Defaults to :macro:`LSQUIC_DF_UA`. - - Google QUIC only. - - - More parameters for server - - .. member:: unsigned es_max_inchoate - - Maximum number of incoming connections in inchoate state. (In - other words, maximum number of mini connections.) - - This is only applicable in server mode. - - Defaults to :macro:`LSQUIC_DF_MAX_INCHOATE`. - - .. member:: int es_support_push - - Setting this value to 0 means that - - For client: - - 1. we send a SETTINGS frame to indicate that we do not support server - push; and - 2. all incoming pushed streams get reset immediately. - - (For maximum effect, set es_max_streams_in to 0.) - - For server: - - 1. :func:`lsquic_conn_push_stream()` will return -1. - - .. member:: int es_support_tcid0 - - If set to true value, the server will not include connection ID in - outgoing packets if client's CHLO specifies TCID=0. - - For client, this means including TCID=0 into CHLO message. Note that - in this case, the engine tracks connections by the - (source-addr, dest-addr) tuple, thereby making it necessary to create - a socket for each connection. - - This option has no effect in Q046 and Q050, as the server never includes - CIDs in the short packets. - - This setting is applicable to gQUIC only. - - The default is :func:`LSQUIC_DF_SUPPORT_TCID0`. - - .. member:: int es_support_nstp - - Q037 and higher support "No STOP_WAITING frame" mode. When set, the - client will send NSTP option in its Client Hello message and will not - sent STOP_WAITING frames, while ignoring incoming STOP_WAITING frames, - if any. Note that if the version negotiation happens to downgrade the - client below Q037, this mode will *not* be used. - - This option does not affect the server, as it must support NSTP mode - if it was specified by the client. - - Defaults to :macro:`LSQUIC_DF_SUPPORT_NSTP`. - - .. member:: int es_honor_prst - - If set to true value, the library will drop connections when it - receives corresponding Public Reset packet. The default is to - ignore these packets. - - The default is :macro:`LSQUIC_DF_HONOR_PRST`. - - .. member:: int es_send_prst - - If set to true value, the library will send Public Reset packets - in response to incoming packets with unknown Connection IDs. - - The default is :macro:`LSQUIC_DF_SEND_PRST`. - - .. member:: unsigned es_progress_check - - A non-zero value enables internal checks that identify suspected - infinite loops in user `on_read` and `on_write` callbacks - and break them. An infinite loop may occur if user code keeps - on performing the same operation without checking status, e.g. - reading from a closed stream etc. - - The value of this parameter is as follows: should a callback return - this number of times in a row without making progress (that is, - reading, writing, or changing stream state), loop break will occur. - - The defaut value is :macro:`LSQUIC_DF_PROGRESS_CHECK`. - - .. member:: int es_rw_once - - A non-zero value make stream dispatch its read-write events once - per call. - - When zero, read and write events are dispatched until the stream - is no longer readable or writeable, respectively, or until the - user signals unwillingness to read or write using - :func:`lsquic_stream_wantread()` or :func:`lsquic_stream_wantwrite()` - or shuts down the stream. - - The default value is :macro:`LSQUIC_DF_RW_ONCE`. - - .. member:: unsigned es_proc_time_thresh - - If set, this value specifies the number of microseconds that - :func:`lsquic_engine_process_conns()` and - :func:`lsquic_engine_send_unsent_packets()` are allowed to spend - before returning. - - This is not an exact science and the connections must make - progress, so the deadline is checked after all connections get - a chance to tick (in the case of :func:`lsquic_engine_process_conns())` - and at least one batch of packets is sent out. - - When processing function runs out of its time slice, immediate - calls to :func:`lsquic_engine_has_unsent_packets()` return false. - - The default value is :func:`LSQUIC_DF_PROC_TIME_THRESH`. - - .. member:: int es_pace_packets - - If set to true, packet pacing is implemented per connection. - - The default value is :func:`LSQUIC_DF_PACE_PACKETS`. - - .. member:: unsigned es_clock_granularity - - Clock granularity information is used by the pacer. The value - is in microseconds; default is :func:`LSQUIC_DF_CLOCK_GRANULARITY`. - - .. member:: unsigned es_init_max_data - - Initial max data. - - This is a transport parameter. - - Depending on the engine mode, the default value is either - :macro:`LSQUIC_DF_INIT_MAX_DATA_CLIENT` or - :macro:`LSQUIC_DF_INIT_MAX_DATA_SERVER`. - - IETF QUIC only. - - .. member:: unsigned es_init_max_stream_data_bidi_remote - - Initial max stream data. - - This is a transport parameter. - - Depending on the engine mode, the default value is either - :macro:`LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_REMOTE_CLIENT` or - :macro:`LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_REMOTE_SERVER`. - - IETF QUIC only. - - .. member:: unsigned es_init_max_stream_data_bidi_local - - Initial max stream data. - - This is a transport parameter. - - Depending on the engine mode, the default value is either - :macro:`LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_LOCAL_CLIENT` or - :macro:`LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_LOCAL_SERVER`. - - IETF QUIC only. - - .. member:: unsigned es_init_max_stream_data_uni - - Initial max stream data for unidirectional streams initiated - by remote endpoint. - - This is a transport parameter. - - Depending on the engine mode, the default value is either - :macro:`LSQUIC_DF_INIT_MAX_STREAM_DATA_UNI_CLIENT` or - :macro:`LSQUIC_DF_INIT_MAX_STREAM_DATA_UNI_SERVER`. - - IETF QUIC only. - - .. member:: unsigned es_init_max_streams_bidi - - Maximum initial number of bidirectional stream. - - This is a transport parameter. - - Default value is :macro:`LSQUIC_DF_INIT_MAX_STREAMS_BIDI`. - - IETF QUIC only. - - .. member:: unsigned es_init_max_streams_uni - - Maximum initial number of unidirectional stream. - - This is a transport parameter. - - Default value is :macro:`LSQUIC_DF_INIT_MAX_STREAMS_UNI_CLIENT` or - :macro:`LSQUIC_DF_INIT_MAX_STREAM_DATA_UNI_SERVER`. - - IETF QUIC only. - - .. member:: unsigned es_idle_timeout - - Idle connection timeout. - - This is a transport parameter. - - (Note: `es_idle_conn_to` is not reused because it is in microseconds, - which, I now realize, was not a good choice. Since it will be - obsoleted some time after the switchover to IETF QUIC, we do not - have to keep on using strange units.) - - Default value is :macro:`LSQUIC_DF_IDLE_TIMEOUT`. - - Maximum value is 600 seconds. - - IETF QUIC only. - - .. member:: unsigned es_ping_period - - Ping period. If set to non-zero value, the connection will generate and - send PING frames in the absence of other activity. - - By default, the server does not send PINGs and the period is set to zero. - The client's defaut value is :macro:`LSQUIC_DF_PING_PERIOD`. - - IETF QUIC only. - - .. member:: unsigned es_scid_len - - Source Connection ID length. Valid values are 0 through 20, inclusive. - - Default value is :macro:`LSQUIC_DF_SCID_LEN`. - - IETF QUIC only. - - .. member:: unsigned es_scid_iss_rate - - Source Connection ID issuance rate. This field is measured in CIDs - per minute. Using value 0 indicates that there is no rate limit for - CID issuance. - - Default value is :macro:`LSQUIC_DF_SCID_ISS_RATE`. - - IETF QUIC only. - - .. member:: unsigned es_qpack_dec_max_size - - Maximum size of the QPACK dynamic table that the QPACK decoder will - use. - - The default is :macro:`LSQUIC_DF_QPACK_DEC_MAX_SIZE`. - - IETF QUIC only. - - .. member:: unsigned es_qpack_dec_max_blocked - - Maximum number of blocked streams that the QPACK decoder is willing - to tolerate. - - The default is :macro:`LSQUIC_DF_QPACK_DEC_MAX_BLOCKED`. - - IETF QUIC only. - - .. member:: unsigned es_qpack_enc_max_size - - Maximum size of the dynamic table that the encoder is willing to use. - The actual size of the dynamic table will not exceed the minimum of - this value and the value advertized by peer. - - The default is :macro:`LSQUIC_DF_QPACK_ENC_MAX_SIZE`. - - IETF QUIC only. - - .. member:: unsigned es_qpack_enc_max_blocked - - Maximum number of blocked streams that the QPACK encoder is willing - to risk. The actual number of blocked streams will not exceed the - minimum of this value and the value advertized by peer. - - The default is :macro:`LSQUIC_DF_QPACK_ENC_MAX_BLOCKED`. - - IETF QUIC only. - - .. member:: int es_ecn - - Enable ECN support. - - The default is :macro:`LSQUIC_DF_ECN` - - IETF QUIC only. - - .. member:: int es_allow_migration - - Allow peer to migrate connection. - - The default is :macro:`LSQUIC_DF_ALLOW_MIGRATION` - - IETF QUIC only. - - .. member:: unsigned es_cc_algo - - Congestion control algorithm to use. - - - 0: Use default (:macro:`LSQUIC_DF_CC_ALGO`) - - 1: Cubic - - 2: BBRv1 - - 3: Adaptive congestion control. - - Adaptive congestion control adapts to the environment. It figures - out whether to use Cubic or BBRv1 based on the RTT. - - .. member:: unsigned es_cc_rtt_thresh - - Congestion controller RTT threshold in microseconds. - - Adaptive congestion control uses BBRv1 until RTT is determined. At - that point a permanent choice of congestion controller is made. If - RTT is smaller than or equal to - :member:`lsquic_engine_settings.es_cc_rtt_thresh`, congestion - controller is switched to Cubic; otherwise, BBRv1 is picked. - - The default value is :macro:`LSQUIC_DF_CC_RTT_THRESH` - - .. member:: int es_ql_bits - - Use QL loss bits. Allowed values are: - - - 0: Do not use loss bits - - 1: Allow loss bits - - 2: Allow and send loss bits - - Default value is :macro:`LSQUIC_DF_QL_BITS` - - .. member:: int es_spin - - Enable spin bit. Allowed values are 0 and 1. - - Default value is :macro:`LSQUIC_DF_SPIN` - - .. member:: int es_delayed_acks - - Enable delayed ACKs extension. Allowed values are 0 and 1. - - Default value is :macro:`LSQUIC_DF_DELAYED_ACKS` - - .. member:: int es_timestamps - - Enable timestamps extension. Allowed values are 0 and 1. - - Default value is @ref LSQUIC_DF_TIMESTAMPS - - .. member:: unsigned short es_max_udp_payload_size_rx - - Maximum packet size we are willing to receive. This is sent to - peer in transport parameters: the library does not enforce this - limit for incoming packets. - - If set to zero, limit is not set. - - Default value is :macro:`LSQUIC_DF_MAX_UDP_PAYLOAD_SIZE_RX` - - .. member:: int es_dplpmtud - - If set to true value, enable DPLPMTUD -- Datagram Packetization - Layer Path MTU Discovery. - - Default value is :macro:`LSQUIC_DF_DPLPMTUD` - - .. member:: unsigned short es_base_plpmtu - - PLPMTU size expected to work for most paths. - - If set to zero, this value is calculated based on QUIC and IP versions. - - Default value is :macro:`LSQUIC_DF_BASE_PLPMTU` - - .. member:: unsigned short es_max_plpmtu - - Largest PLPMTU size the engine will try. - - If set to zero, picking this value is left to the engine. - - Default value is :macro:`LSQUIC_DF_MAX_PLPMTU` - - .. member:: unsigned es_mtu_probe_timer - - This value specifies how long the DPLPMTUD probe timer is, in - milliseconds. :rfc:`8899` says: - - PROBE_TIMER: The PROBE_TIMER is configured to expire after a period - longer than the maximum time to receive an acknowledgment to a - probe packet. This value MUST NOT be smaller than 1 second, and - SHOULD be larger than 15 seconds. Guidance on selection of the - timer value are provided in section 3.1.1 of the UDP Usage - Guidelines :rfc:`8085#section-3.1`. - - If set to zero, the default is used. - - Default value is :macro:`LSQUIC_DF_MTU_PROBE_TIMER` - - .. member:: unsigned es_noprogress_timeout - - No progress timeout. - - If connection does not make progress for this number of seconds, the - connection is dropped. Here, progress is defined as user streams - being written to or read from. - - If this value is zero, this timeout is disabled. - - Default value is :macro:`LSQUIC_DF_NOPROGRESS_TIMEOUT_SERVER` in server - mode and :macro:`LSQUIC_DF_NOPROGRESS_TIMEOUT_CLIENT` in client mode. - - .. member:: int es_grease_quic_bit - - Enable the "QUIC bit grease" extension. When set to a true value, - lsquic will grease the QUIC bit on the outgoing QUIC packets if - the peer sent the "grease_quic_bit" transport parameter. - - Default value is :macro:`LSQUIC_DF_GREASE_QUIC_BIT` - - .. member:: int es_datagrams - - Enable datagrams extension. Allowed values are 0 and 1. - - Default value is :macro:`LSQUIC_DF_DATAGRAMS` - - .. member:: int es_optimistic_nat - - If set to true, changes in peer port are assumed to be due to a - benign NAT rebinding and path characteristics -- MTU, RTT, and - CC state -- are not reset. - - Default value is :macro:`LSQUIC_DF_OPTIMISTIC_NAT` - - .. member:: int es_ext_http_prio - - If set to true, Extensible HTTP Priorities are enabled. This - is HTTP/3-only setting. - - Default value is :macro:`LSQUIC_DF_EXT_HTTP_PRIO` - - .. member:: int es_qpack_experiment - - If set to 1, QPACK statistics are logged per connection. - - If set to 2, QPACK experiments are run. In this mode, encoder - and decoder setting values are randomly selected (from the range - [0, whatever is specified in es_qpack_(enc|dec)_*]) and these - values along with compression ratio and user agent are logged at - NOTICE level when connection is destroyed. The purpose of these - experiments is to use compression performance statistics to figure - out a good set of default values. - - Default value is :macro:`LSQUIC_DF_QPACK_EXPERIMENT` - - .. member:: int es_delay_onclose - - When set to true, :member:`lsquic_stream_if.on_close` will be delayed until the - peer acknowledges all data sent on the stream. (Or until the connection - is destroyed in some manner -- either explicitly closed by the user or - as a result of an engine shutdown.) To find out whether all data written - to peer has been acknowledged, use `lsquic_stream_has_unacked_data()`. - - Default value is :macro:`LSQUIC_DF_DELAY_ONCLOSE` - - .. member:: int es_max_batch_size - - If set to a non-zero value, specifies maximum batch size. (The - batch of packets passed to :member:`lsquic_engine_api.ea_packets_out`). - Must be no larger than 1024. - - Default value is :macro:`LSQUIC_DF_MAX_BATCH_SIZE` - - .. member:: int es_check_tp_sanity - - When true, sanity checks are performed on peer's transport parameter - values. If some limits are set suspiciously low, the connection won't - be established. - - Default value is :macro:`LSQUIC_DF_CHECK_TP_SANITY` - -To initialize the settings structure to library defaults, use the following -convenience function: - -.. function:: lsquic_engine_init_settings (struct lsquic_engine_settings *, unsigned flags) - - ``flags`` is a bitmask of ``LSENG_SERVER`` and ``LSENG_HTTP`` - -After doing this, change just the settings you'd like. To check whether -the values are correct, another convenience function is provided: - -.. function:: lsquic_engine_check_settings (const struct lsquic_engine_settings *, unsigned flags, char *err_buf, size_t err_buf_sz) - - Check settings for errors. Return 0 if settings are OK, -1 otherwise. - - If `err_buf` and `err_buf_sz` are set, an error string is written to the - buffers. - -The following macros in :file:`lsquic.h` specify default values: - -*Note that, despite our best efforts, documentation may accidentally get -out of date. Please check your :file:`lsquic.h` for actual values.* - -.. macro:: LSQUIC_MIN_FCW - - Minimum flow control window is set to 16 KB for both client and server. - This means we can send up to this amount of data before handshake gets - completed. - -.. macro:: LSQUIC_DF_VERSIONS - - By default, deprecated and experimental versions are not included. - -.. macro:: LSQUIC_DF_CFCW_SERVER -.. macro:: LSQUIC_DF_CFCW_CLIENT -.. macro:: LSQUIC_DF_SFCW_SERVER -.. macro:: LSQUIC_DF_SFCW_CLIENT -.. macro:: LSQUIC_DF_MAX_STREAMS_IN - -.. macro:: LSQUIC_DF_INIT_MAX_DATA_SERVER -.. macro:: LSQUIC_DF_INIT_MAX_DATA_CLIENT -.. macro:: LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_REMOTE_SERVER -.. macro:: LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_LOCAL_SERVER -.. macro:: LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_REMOTE_CLIENT -.. macro:: LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_LOCAL_CLIENT -.. macro:: LSQUIC_DF_INIT_MAX_STREAMS_BIDI -.. macro:: LSQUIC_DF_INIT_MAX_STREAMS_UNI_CLIENT -.. macro:: LSQUIC_DF_INIT_MAX_STREAMS_UNI_SERVER -.. macro:: LSQUIC_DF_INIT_MAX_STREAM_DATA_UNI_CLIENT -.. macro:: LSQUIC_DF_INIT_MAX_STREAM_DATA_UNI_SERVER - -.. macro:: LSQUIC_DF_IDLE_TIMEOUT - - Default idle connection timeout is 30 seconds. - -.. macro:: LSQUIC_DF_PING_PERIOD - - Default ping period is 15 seconds. - -.. macro:: LSQUIC_DF_HANDSHAKE_TO - - Default handshake timeout is 10,000,000 microseconds (10 seconds). - -.. macro:: LSQUIC_DF_IDLE_CONN_TO - - Default idle connection timeout is 30,000,000 microseconds. - -.. macro:: LSQUIC_DF_SILENT_CLOSE - - By default, connections are closed silenty when they time out (no - ``CONNECTION_CLOSE`` frame is sent) and the server does not reply with - own ``CONNECTION_CLOSE`` after it receives one. - -.. macro:: LSQUIC_DF_MAX_HEADER_LIST_SIZE - - Default value of maximum header list size. If set to non-zero value, - SETTINGS_MAX_HEADER_LIST_SIZE will be sent to peer after handshake is - completed (assuming the peer supports this setting frame type). - -.. macro:: LSQUIC_DF_UA - - Default value of UAID (user-agent ID). - -.. macro:: LSQUIC_DF_MAX_INCHOATE - - Default is 1,000,000. - -.. macro:: LSQUIC_DF_SUPPORT_NSTP - - NSTP is not used by default. - -.. macro:: LSQUIC_DF_SUPPORT_PUSH - - Push promises are supported by default. - -.. macro:: LSQUIC_DF_SUPPORT_TCID0 - - Support for TCID=0 is enabled by default. - -.. macro:: LSQUIC_DF_HONOR_PRST - - By default, LSQUIC ignores Public Reset packets. - -.. macro:: LSQUIC_DF_SEND_PRST - - By default, LSQUIC will not send Public Reset packets in response to - packets that specify unknown connections. - -.. macro:: LSQUIC_DF_PROGRESS_CHECK - - By default, infinite loop checks are turned on. - -.. macro:: LSQUIC_DF_RW_ONCE - - By default, read/write events are dispatched in a loop. - -.. macro:: LSQUIC_DF_PROC_TIME_THRESH - - By default, the threshold is not enabled. - -.. macro:: LSQUIC_DF_PACE_PACKETS - - By default, packets are paced - -.. macro:: LSQUIC_DF_CLOCK_GRANULARITY - - Default clock granularity is 1000 microseconds. - -.. macro:: LSQUIC_DF_SCID_LEN - - The default value is 8 for simplicity and speed. - -.. macro:: LSQUIC_DF_SCID_ISS_RATE - - The default value is 60 CIDs per minute. - -.. macro:: LSQUIC_DF_QPACK_DEC_MAX_BLOCKED - - Default value is 100. - -.. macro:: LSQUIC_DF_QPACK_DEC_MAX_SIZE - - Default value is 4,096 bytes. - -.. macro:: LSQUIC_DF_QPACK_ENC_MAX_BLOCKED - - Default value is 100. - -.. macro:: LSQUIC_DF_QPACK_ENC_MAX_SIZE - - Default value is 4,096 bytes. - -.. macro:: LSQUIC_DF_ECN - - ECN is disabled by default. - -.. macro:: LSQUIC_DF_ALLOW_MIGRATION - - Allow migration by default. - -.. macro:: LSQUIC_DF_QL_BITS - - Use QL loss bits by default. - -.. macro:: LSQUIC_DF_SPIN - - Turn spin bit on by default. - -.. macro:: LSQUIC_DF_CC_ALGO - - Use Adaptive Congestion Controller by default. - -.. macro:: LSQUIC_DF_CC_RTT_THRESH - - Default value of the CC RTT threshold is 1500 microseconds - -.. macro:: LSQUIC_DF_DELAYED_ACKS - - The Delayed ACKs extension is on by default. - -.. macro:: LSQUIC_DF_MAX_UDP_PAYLOAD_SIZE_RX - - By default, incoming packet size is not limited. - -.. macro:: LSQUIC_DF_DPLPMTUD - - By default, DPLPMTUD is enabled - -.. macro:: LSQUIC_DF_BASE_PLPMTU - - By default, this value is left up to the engine. - -.. macro:: LSQUIC_DF_MAX_PLPMTU - - By default, this value is left up to the engine. - -.. macro:: LSQUIC_DF_MTU_PROBE_TIMER - - By default, we use the minimum timer of 1000 milliseconds. - -.. macro:: LSQUIC_DF_NOPROGRESS_TIMEOUT_SERVER - - By default, drop no-progress connections after 60 seconds on the server. - -.. macro:: LSQUIC_DF_NOPROGRESS_TIMEOUT_CLIENT - - By default, do not use no-progress timeout on the client. - -.. macro:: LSQUIC_DF_GREASE_QUIC_BIT - - By default, greasing the QUIC bit is enabled (if peer sent - the "grease_quic_bit" transport parameter). - -.. macro:: LSQUIC_DF_TIMESTAMPS - - Timestamps are on by default. - -.. macro:: LSQUIC_DF_DATAGRAMS - - Datagrams are off by default. - -.. macro:: LSQUIC_DF_OPTIMISTIC_NAT - - Assume optimistic NAT by default. - -.. macro:: LSQUIC_DF_EXT_HTTP_PRIO - - Turn on Extensible HTTP Priorities by default. - -.. macro:: LSQUIC_DF_QPACK_EXPERIMENT - - By default, QPACK experiments are turned off. - -.. macro:: LSQUIC_DF_DELAY_ONCLOSE - - By default, calling :member:`lsquic_stream_if.on_close()` is not delayed. - -.. macro:: LSQUIC_DF_MAX_BATCH_SIZE - - By default, maximum batch size is not specified, leaving it up to the - library. - -.. macro:: LSQUIC_DF_CHECK_TP_SANITY - - Transport parameter sanity checks are performed by default. - -Receiving Packets ------------------ - -Incoming packets are supplied to the engine using :func:`lsquic_engine_packet_in()`. -It is up to the engine to decide what do to with the packet. It can find an existing -connection and dispatch the packet there, create a new connection (in server mode), or -schedule a version negotiation or stateless reset packet. - -.. function:: int lsquic_engine_packet_in (lsquic_engine_t *engine, const unsigned char *data, size_t size, const struct sockaddr *local, const struct sockaddr *peer, void *peer_ctx, int ecn) - - Pass incoming packet to the QUIC engine. This function can be called - more than once in a row. After you add one or more packets, call - :func:`lsquic_engine_process_conns()` to schedule outgoing packets, if any. - - :param engine: Engine instance. - :param data: Pointer to UDP datagram payload. - :param size: Size of UDP datagram. - :param local: Local address. - :param peer: Peer address. - :param peer_ctx: Peer context. - :param ecn: ECN marking associated with this UDP datagram. - - :return: - - - ``0``: Packet was processed by a real connection. - - ``1``: Packet was handled successfully, but not by a connection. - This may happen with version negotiation and public reset - packets as well as some packets that may be ignored. - - ``-1``: Some error occurred. Possible reasons are invalid packet - size or failure to allocate memory. - -.. function:: int lsquic_engine_earliest_adv_tick (lsquic_engine_t *engine, int *diff) - - Returns true if there are connections to be processed, false otherwise. - - :param engine: - - Engine instance. - - :param diff: - - If the function returns a true value, the pointed to integer is set to the - difference between the earliest advisory tick time and now. - If the former is in the past, this difference is negative. - - :return: - - True if there are connections to be processed, false otherwise. - -Sending Packets ---------------- - -User specifies a callback :type:`lsquic_packets_out_f` in :type:`lsquic_engine_api` -that the library uses to send packets. - -.. type:: struct lsquic_out_spec - - This structure describes an outgoing packet. - - .. member:: struct iovec *iov - - A vector with payload. - - .. member:: size_t iovlen - - Vector length. - - .. member:: const struct sockaddr *local_sa - - Local address. - - .. member:: const struct sockaddr *dest_sa - - Destination address. - - .. member:: void *peer_ctx - - Peer context associated with the local address. - - .. member:: int ecn - - ECN: Valid values are 0 - 3. See :rfc:`3168`. - - ECN may be set by IETF QUIC connections if ``es_ecn`` is set. - -.. type:: typedef int (*lsquic_packets_out_f)(void *packets_out_ctx, const struct lsquic_out_spec *out_spec, unsigned n_packets_out) - - Returns number of packets successfully sent out or -1 on error. -1 should - only be returned if no packets were sent out. If -1 is returned or if the - return value is smaller than ``n_packets_out``, this indicates that sending - of packets is not possible. - - If not all packets could be sent out, then: - - - errno is examined. If it is not EAGAIN or EWOULDBLOCK, the connection - whose packet caused the error is closed forthwith. - - No packets are attempted to be sent out until :func:`lsquic_engine_send_unsent_packets()` - is called. - -.. function:: void lsquic_engine_process_conns (lsquic_engine_t *engine) - - Process tickable connections. This function must be called often enough so - that packets and connections do not expire. The preferred method of doing - so is by using :func:`lsquic_engine_earliest_adv_tick()`. - -.. function:: int lsquic_engine_has_unsent_packets (lsquic_engine_t *engine) - - Returns true if engine has some unsent packets. This happens if - :member:`lsquic_engine_api.ea_packets_out` could not send everything out - or if processing deadline was exceeded (see - :member:`lsquic_engine_settings.es_proc_time_thresh`). - -.. function:: void lsquic_engine_send_unsent_packets (lsquic_engine_t *engine) - - Send out as many unsent packets as possibe: until we are out of unsent - packets or until ``ea_packets_out()`` fails. - - If ``ea_packets_out()`` cannot send all packets, this function must be - called to signify that sending of packets is possible again. - -Stream Callback Interface -------------------------- - -The stream callback interface structure lists the callbacks used by -the engine to communicate with the user code: - -.. type:: struct lsquic_stream_if - - .. member:: lsquic_conn_ctx_t *(*on_new_conn)(void *stream_if_ctx, lsquic_conn_t *) - - Called when a new connection has been created. In server mode, - this means that the handshake has been successful. In client mode, - on the other hand, this callback is called as soon as connection - object is created inside the engine, but before the handshake is - done. - - The return value is the connection context associated with this - connection. Use :func:`lsquic_conn_get_ctx()` to get back this - context. It is OK for this function to return NULL. - - This callback is mandatory. - - .. member:: void (*on_conn_closed)(lsquic_conn_t *) - - Connection is closed. - - This callback is mandatory. - - .. member:: lsquic_stream_ctx_t * (*on_new_stream)(void *stream_if_ctx, lsquic_stream_t *) - - If you need to initiate a connection, call lsquic_conn_make_stream(). - This will cause `on_new_stream` callback to be called when appropriate - (this operation is delayed when maximum number of outgoing streams is - reached). - - If connection is going away, this callback may be called with the - second parameter set to NULL. - - The return value is the stream context associated with the stream. - A pointer to it is passed to `on_read()`, `on_write()`, and `on_close()` - callbacks. It is OK for this function to return NULL. - - This callback is mandatory. - - .. member:: void (*on_read) (lsquic_stream_t *s, lsquic_stream_ctx_t *h) - - Stream is readable: either there are bytes to be read or an error - is ready to be collected. - - This callback is mandatory. - - .. member:: void (*on_write) (lsquic_stream_t *s, lsquic_stream_ctx_t *h) - - Stream is writeable. - - This callback is mandatory. - - .. member:: void (*on_close) (lsquic_stream_t *s, lsquic_stream_ctx_t *h) - - After this callback returns, the stream is no longer accessible. This is - a good time to clean up the stream context. - - This callback is mandatory. - - .. member:: void (*on_reset) (lsquic_stream_t *s, lsquic_stream_ctx_t *h, int how) - - This callback is called as soon as the peer resets a stream. - The argument `how` is either 0, 1, or 2, meaning "read", "write", and - "read and write", respectively (just like in ``shutdown(2)``). This - signals the user to stop reading, writing, or both. - - Note that resets differ in gQUIC and IETF QUIC. In gQUIC, `how` is - always 2; in IETF QUIC, `how` is either 0 or 1 because one can reset - just one direction in IETF QUIC. - - This callback is optional. The reset error can still be collected - during next "on read" or "on write" event. - - .. member:: void (*on_hsk_done)(lsquic_conn_t *c, enum lsquic_hsk_status s) - - When handshake is completed, this callback is called. - - This callback is optional. - - .. member:: void (*on_goaway_received)(lsquic_conn_t *) - - This is called when our side received GOAWAY frame. After this, - new streams should not be created. - - This callback is optional. - - .. member:: void (*on_new_token)(lsquic_conn_t *c, const unsigned char *token, size_t token_size) - - When client receives a token in NEW_TOKEN frame, this callback is called. - - This callback is optional. - - .. member:: void (*on_sess_resume_info)(lsquic_conn_t *c, const unsigned char *, size_t) - - This callback lets client record information needed to - perform session resumption next time around. - - For IETF QUIC, this is called only if :member:`lsquic_engine_api.ea_get_ssl_ctx_st` - is *not* set, in which case the library creates its own SSL_CTX. - - Note: this callback will be deprecated when gQUIC support is removed. - - This callback is optional. - - .. member:: ssize_t (*on_dg_write)(lsquic_conn_t *c, void *buf, size_t buf_sz) - - Called when datagram is ready to be written. Write at most - ``buf_sz`` bytes to ``buf`` and return number of bytes - written. - - .. member:: void (*on_datagram)(lsquic_conn_t *c, const void *buf, size_t sz) - - Called when datagram is read from a packet. This callback is - required when :member:`lsquic_engine_settings.es_datagrams` is true. - Take care to process it quickly, as this is called during - :func:`lsquic_engine_packet_in()`. - -Creating Connections --------------------- - -In server mode, the connections are created by the library based on incoming -packets. After handshake is completed, the library calls :member:`lsquic_stream_if.on_new_conn` -callback. - -In client mode, a new connection is created by - -.. function:: lsquic_conn_t * lsquic_engine_connect (lsquic_engine_t *engine, enum lsquic_version version, const struct sockaddr *local_sa, const struct sockaddr *peer_sa, void *peer_ctx, lsquic_conn_ctx_t *conn_ctx, const char *sni, unsigned short base_plpmtu, const unsigned char *sess_resume, size_t sess_resume_len, const unsigned char *token, size_t token_sz) - - :param engine: Engine to use. - - :param version: - - To let the engine specify QUIC version, use N_LSQVER. If session resumption - information is supplied, version is picked from there instead. - - :param local_sa: - - Local address. - - :param peer_sa: - - Address of the server. - - :param peer_ctx: - - Context associated with the peer. This is what gets passed to TODO. - - :param conn_ctx: - - Connection context can be set early using this parameter. Useful if - you need the connection context to be available in `on_conn_new()`. - Note that that callback's return value replaces the connection - context set here. - - :param sni: - - The SNI is required for Google QUIC connections; it is optional for - IETF QUIC and may be set to NULL. - - :param base_plpmtu: - - Base PLPMTU. If set to zero, it is selected based on the - engine settings (see - :member:`lsquic_engine_settings.es_base_plpmtu`), - QUIC version, and IP version. - - :param sess_resume: - - Pointer to previously saved session resumption data needed for - TLS resumption. May be NULL. - - :param sess_resume_len: - - Size of session resumption data. - - :param token: - - Pointer to previously received token to include in the Initial - packet. Tokens are used by IETF QUIC to pre-validate client - connections, potentially avoiding a retry. - - See :member:`lsquic_stream_if.on_new_token` callback. - - May be NULL. - - :param token_sz: - - Size of data pointed to by ``token``. - -Closing Connections -------------------- - -.. function:: void lsquic_conn_going_away (lsquic_conn_t *conn) - - Mark connection as going away: send GOAWAY frame and do not accept - any more incoming streams, nor generate streams of our own. - - Only applicable to HTTP/3 and GQUIC connections. Otherwise a no-op. - -.. function:: void lsquic_conn_close (lsquic_conn_t *conn) - - This closes the connection. :member:`lsquic_stream_if.on_conn_closed` - and :member:`lsquic_stream_if.on_close` callbacks will be called. - -.. function:: void lsquic_conn_abort (lsquic_conn_t *conn) - - This aborts the connection. The connection and all associated objects - will be destroyed (with necessary callbacks called) during the next time - :func:`lsquic_engine_process_conns()` is invoked. - -Creating Streams ----------------- - -Similar to connections, streams are created by the library in server mode; they -correspond to requests. In client mode, a new stream is created by - -.. function:: void lsquic_conn_make_stream (lsquic_conn_t *) - - Create a new request stream. This causes :member:`on_new_stream()` callback - to be called. If creating more requests is not permitted at the moment - (due to number of concurrent streams limit), stream creation is registered - as "pending" and the stream is created later when number of streams dips - under the limit again. Any number of pending streams can be created. - Use :func:`lsquic_conn_n_pending_streams()` and - :func:`lsquic_conn_cancel_pending_streams()` to manage pending streams. - - If connection is going away, :func:`on_new_stream()` is called with the - stream parameter set to NULL. - -Stream Events -------------- - -To register or unregister an interest in a read or write event, use the -following functions: - -.. function:: int lsquic_stream_wantread (lsquic_stream_t *stream, int want) - - :param stream: Stream to read from. - :param want: Boolean value indicating whether the caller wants to read - from stream. - :return: Previous value of ``want`` or ``-1`` if the stream has already - been closed for reading. - - A stream becomes readable if there is was an error: for example, the - peer may have reset the stream. In this case, reading from the stream - will return an error. - -.. function:: int lsquic_stream_wantwrite (lsquic_stream_t *stream, int want) - - :param stream: Stream to write to. - :param want: Boolean value indicating whether the caller wants to write - to stream. - :return: Previous value of ``want`` or ``-1`` if the stream has already - been closed for writing. - -Reading From Streams --------------------- - -.. function:: ssize_t lsquic_stream_read (lsquic_stream_t *stream, unsigned char *buf, size_t sz) - - :param stream: Stream to read from. - :param buf: Buffer to copy data to. - :param sz: Size of the buffer. - :return: Number of bytes read, zero if EOS has been reached, or -1 on error. - - Read up to ``sz`` bytes from ``stream`` into buffer ``buf``. - - ``-1`` is returned on error, in which case ``errno`` is set: - - - ``EBADF``: The stream is closed. - - ``ECONNRESET``: The stream has been reset. - - ``EWOULDBLOCK``: There is no data to be read. - -.. function:: ssize_t lsquic_stream_readv (lsquic_stream_t *stream, const struct iovec *vec, int iovcnt) - - :param stream: Stream to read from. - :param vec: Array of ``iovec`` structures. - :param iovcnt: Number of elements in ``vec``. - :return: Number of bytes read, zero if EOS has been reached, or -1 on error. - - Similar to :func:`lsquic_stream_read()`, but reads data into a vector. - -.. function:: ssize_t lsquic_stream_readf (lsquic_stream_t *stream, size_t (*readf)(void *ctx, const unsigned char *buf, size_t len, int fin), void *ctx) - - :param stream: Stream to read from. - - :param readf: - - The callback takes four parameters: - - - Pointer to user-supplied context; - - Pointer to the data; - - Data size (can be zero); and - - Indicator whether the FIN follows the data. - - The callback returns number of bytes processed. If this number is zero - or is smaller than ``len``, reading from stream stops. - - :param ctx: Context pointer passed to ``readf``. - - This function allows user-supplied callback to read the stream contents. - It is meant to be used for zero-copy stream processing. - - Return value and errors are same as in :func:`lsquic_stream_read()`. - -Writing To Streams ------------------- - -.. function:: ssize_t lsquic_stream_write (lsquic_stream_t *stream, const void *buf, size_t len) - - :param stream: Stream to write to. - :param buf: Buffer to copy data from. - :param len: Number of bytes to copy. - :return: Number of bytes written -- which may be smaller than ``len`` -- or a negative - value when an error occurs. - - Write ``len`` bytes to the stream. Returns number of bytes written, which - may be smaller that ``len``. - - A negative return value indicates a serious error (the library is likely - to have aborted the connection because of it). - -.. function:: ssize_t lsquic_stream_writev (lsquic_stream_t *s, const struct iovec *vec, int count) - - Like :func:`lsquic_stream_write()`, but read data from a vector. - -.. type:: struct lsquic_reader - - Used as argument to :func:`lsquic_stream_writef()`. - - .. member:: size_t (*lsqr_read) (void *lsqr_ctx, void *buf, size_t count) - - :param lsqr_ctx: Pointer to user-specified context. - :param buf: Memory location to write to. - :param count: Size of available memory pointed to by ``buf``. - :return: - - Number of bytes written. This is not a ``ssize_t`` because - the read function is not supposed to return an error. If an error - occurs in the read function (for example, when reading from a file - fails), it is supposed to deal with the error itself. - - .. member:: size_t (*lsqr_size) (void *lsqr_ctx) - - Return number of bytes remaining in the reader. - - .. member:: void *lsqr_ctx - - Context pointer passed both to ``lsqr_read()`` and to ``lsqr_size()``. - -.. function:: ssize_t lsquic_stream_writef (lsquic_stream_t *stream, struct lsquic_reader *reader) - - :param stream: Stream to write to. - :param reader: Reader to read from. - :return: Number of bytes written or -1 on error. - - Write to stream using :type:`lsquic_reader`. This is the most generic of - the write functions -- :func:`lsquic_stream_write()` and - :func:`lsquic_stream_writev()` utilize the same mechanism. - -.. function:: ssize_t lsquic_stream_pwritev (struct lsquic_stream *stream, ssize_t (*preadv)(void *user_data, const struct iovec *iov, int iovcnt), void *user_data, size_t n_to_write) - - :param stream: Stream to write to. - :param preadv: Pointer to a custom ``preadv(2)``-like function. - :param user_data: Data to pass to ``preadv`` function. - :param n_to_write: Number of bytes to write. - :return: Number of bytes written or -1 on error. - - Write to stream using user-supplied ``preadv()`` function. - The stream allocates one or more packets and calls ``preadv()``, - which then fills the array of buffers. This is a good way to - minimize the number of ``read(2)`` system calls; the user can call - ``preadv(2)`` instead. - - The number of bytes available in the ``iov`` vector passed back to - the user callback may be smaller than ``n_to_write``. The expected - use pattern is to pass the number of bytes remaining in the file - and keep on calling ``preadv(2)``. - - Note that, unlike other stream-writing functions above, - ``lsquic_stream_pwritev()`` does *not* buffer bytes inside the - stream; it only writes to packets. That means the caller must be - prepared for this function to return 0 even inside the "on write" - stream callback. In that case, the caller should fall back to using - another write function. - - It is OK for the ``preadv`` callback to write fewer bytes that - ``n_to_write``. (This can happen if the underlying data source - is truncated.) - -:: - - /* - * For example, the return value of zero can be handled as follows: - */ - nw = lsquic_stream_pwritev(stream, my_readv, some_ctx, n_to_write); - if (nw == 0) - nw = lsquic_stream_write(stream, rem_bytes_buf, rem_bytes_len); - -.. function:: int lsquic_stream_flush (lsquic_stream_t *stream) - - :param stream: Stream to flush. - :return: 0 on success and -1 on failure. - - Flush any buffered data. This triggers packetizing even a single byte - into a separate frame. Flushing a closed stream is an error. - -Closing Streams ---------------- - -Streams can be closed for reading, writing, or both. -``on_close()`` callback is called at some point after a stream is closed -for both reading and writing, - -.. function:: int lsquic_stream_shutdown (lsquic_stream_t *stream, int how) - - :param stream: Stream to shut down. - :param how: - - This parameter specifies what do to. Allowed values are: - - - 0: Stop reading. - - 1: Stop writing. - - 2: Stop both reading and writing. - - :return: 0 on success or -1 on failure. - -.. function:: int lsquic_stream_close (lsquic_stream_t *stream) - - :param stream: Stream to close. - :return: 0 on success or -1 on failure. - -Sending HTTP Headers --------------------- - -.. type:: struct lsxpack_header - -This type is defined in _lsxpack_header.h_. See that header file for -more information. - - .. member:: char *buf - - the buffer for headers - - .. member:: uint32_t name_hash - - hash value for name - - .. member:: uint32_t nameval_hash - - hash value for name + value - - .. member:: lsxpack_strlen_t name_offset - - the offset for name in the buffer - - .. member:: lsxpack_strlen_t name_len - - the length of name - - .. member:: lsxpack_strlen_t val_offset - - the offset for value in the buffer - - .. member:: lsxpack_strlen_t val_len - - the length of value - - .. member:: uint16_t chain_next_idx - - mainly for cookie value chain - - .. member:: uint8_t hpack_index - - HPACK static table index - - .. member:: uint8_t qpack_index - - QPACK static table index - - .. member:: uint8_t app_index - - APP header index - - .. member:: enum lsxpack_flag flags:8 - - combination of lsxpack_flag - - .. member:: uint8_t indexed_type - - control to disable index or not - - .. member:: uint8_t dec_overhead - - num of extra bytes written to decoded buffer - -.. type:: lsquic_http_headers_t - - .. member:: int count - - Number of headers in ``headers``. - - .. member:: struct lsxpack_header *headers - - Pointer to an array of HTTP headers. - - HTTP header list structure. Contains a list of HTTP headers. - -.. function:: int lsquic_stream_send_headers (lsquic_stream_t *stream, const lsquic_http_headers_t *headers, int eos) - - :param stream: - - Stream to send headers on. - - :param headers: - - Headers to send. - - :param eos: - - Boolean value to indicate whether these headers constitute the whole - HTTP message. - - :return: - - 0 on success or -1 on error. - -Receiving HTTP Headers ----------------------- - -If ``ea_hsi_if`` is not set in :type:`lsquic_engine_api`, the library will translate -HPACK- and QPACK-encoded headers into HTTP/1.x-like headers and prepend them to the -stream. To the stream-reading function, it will look as if a standard HTTP/1.x -message. - -Alternatively, you can specify header-processing set of functions and manage header -fields yourself. In that case, the header set must be "read" from the stream via -:func:`lsquic_stream_get_hset()`. - -.. type:: struct lsquic_hset_if - - .. member:: void * (*hsi_create_header_set)(void *hsi_ctx, lsquic_stream_t *stream, int is_push_promise) - - :param hsi_ctx: User context. This is the pointer specifed in ``ea_hsi_ctx``. - :param stream: Stream with which the header set is associated. May be set - to NULL in server mode. - :param is_push_promise: Boolean value indicating whether this header set is - for a push promise. - :return: Pointer to user-defined header set object. - - Create a new header set. This object is (and must be) fetched from a - stream by calling :func:`lsquic_stream_get_hset()` before the stream can - be read. - - .. member:: struct lsxpack_header * (*hsi_prepare_decode)(void *hdr_set, struct lsxpack_header *hdr, size_t space) - - Return a header set prepared for decoding. If ``hdr`` is NULL, this - means return a new structure with at least ``space`` bytes available - in the decoder buffer. On success, a newly prepared header is - returned. - - If ``hdr`` is not NULL, it means there was not enough decoder buffer - and it must be increased to at least ``space`` bytes. ``buf``, ``val_len``, - and ``name_offset`` member of the ``hdr`` structure may change. On - success, the return value is the same as ``hdr``. - - If NULL is returned, the space cannot be allocated. - - .. member:: int (*hsi_process_header)(void *hdr_set, struct lsxpack_header *hdr) - - Process new header. - - :param hdr_set: - - Header set to add the new header field to. This is the object - returned by ``hsi_create_header_set()``. - - :param hdr: - - The header returned by @ref ``hsi_prepare_decode()``. - - :return: - - Return 0 on success, a positive value if a header error occured, - or a negative value on any other error. A positive return value - will result in cancellation of associated stream. A negative return - value will result in connection being aborted. - - .. member:: void (*hsi_discard_header_set)(void *hdr_set) - - :param hdr_set: Header set to discard. - - Discard header set. This is called for unclaimed header sets and - header sets that had an error. - - .. member:: enum lsquic_hsi_flag hsi_flags - - These flags specify properties of decoded headers passed to - ``hsi_process_header()``. This is only applicable to QPACK headers; - HPACK library header properties are based on compilation, not - run-time, options. - -.. function:: void * lsquic_stream_get_hset (lsquic_stream_t *stream) - - :param stream: Stream to fetch header set from. - - :return: Header set associated with the stream. - - Get header set associated with the stream. The header set is created by - ``hsi_create_header_set()`` callback. After this call, the ownership of - the header set is transferred to the caller. - - This call must precede calls to :func:`lsquic_stream_read()`, - :func:`lsquic_stream_readv()`, and :func:`lsquic_stream_readf()`. - - If the optional header set interface is not specified, - this function returns NULL. - -Push Promises -------------- - -.. function:: int lsquic_conn_push_stream (lsquic_conn_t *conn, void *hdr_set, lsquic_stream_t *stream, const lsquic_http_headers_t *headers) - - :return: - - - 0: Stream pushed successfully. - - 1: Stream push failed because it is disabled or because we hit - stream limit or connection is going away. - - -1: Stream push failed because of an internal error. - - A server may push a stream. This call creates a new stream in reference - to stream ``stream``. It will behave as if the client made a request: it will - trigger ``on_new_stream()`` event and it can be used as a regular client-initiated stream. - - ``hdr_set`` must be set. It is passed as-is to :func:`lsquic_stream_get_hset()`. - -.. function:: int lsquic_conn_is_push_enabled (lsquic_conn_t *conn) - - :return: Boolean value indicating whether push promises are enabled. - - Only makes sense in server mode: the client cannot push a stream and this - function always returns false in client mode. - -.. function:: int lsquic_stream_is_pushed (const lsquic_stream_t *stream) - - :return: Boolean value indicating whether this is a pushed stream. - -.. function:: int lsquic_stream_refuse_push (lsquic_stream_t *stream) - - Refuse pushed stream. Call it from ``on_new_stream()``. No need to - call :func:`lsquic_stream_close()` after this. ``on_close()`` will be called. - -.. function:: int lsquic_stream_push_info (const lsquic_stream_t *stream, lsquic_stream_id_t *ref_stream_id, void **hdr_set) - - Get information associated with pushed stream - - :param ref_stream_id: Stream ID in response to which push promise was sent. - :param hdr_set: Header set. This object was passed to or generated by :func:`lsquic_conn_push_stream()`. - - :return: 0 on success and -1 if this is not a pushed stream. - -Stream Priorities ------------------ - -.. function:: unsigned lsquic_stream_priority (const lsquic_stream_t *stream) - - Return current priority of the stream. - -.. function:: int lsquic_stream_set_priority (lsquic_stream_t *stream, unsigned priority) - - Set stream priority. Valid priority values are 1 through 256, inclusive. - Lower value means higher priority. - - :return: 0 on success of -1 on failure (this happens if priority value is invalid). - -Miscellaneous Engine Functions ------------------------------- - -.. function:: unsigned lsquic_engine_quic_versions (const lsquic_engine_t *engine) - - Return the list of QUIC versions (as bitmask) this engine instance supports. - -.. function:: unsigned lsquic_engine_count_attq (lsquic_engine_t *engine, int from_now) - - Return number of connections whose advisory tick time is before current - time plus ``from_now`` microseconds from now. ``from_now`` can be negative. - -Miscellaneous Connection Functions ----------------------------------- - -.. function:: enum lsquic_version lsquic_conn_quic_version (const lsquic_conn_t *conn) - - Get QUIC version used by the connection. - - If version has not yet been negotiated (can happen in client mode), ``-1`` is - returned. - -.. function:: const lsquic_cid_t * lsquic_conn_id (const lsquic_conn_t *conn) - - Get connection ID. - -.. function:: lsquic_engine_t * lsquic_conn_get_engine (lsquic_conn_t *conn) - - Get pointer to the engine. - -.. function:: int lsquic_conn_get_sockaddr (lsquic_conn_t *conn, const struct sockaddr **local, const struct sockaddr **peer) - - Get current (last used) addresses associated with the current path - used by the connection. - -.. function:: struct stack_st_X509 * lsquic_conn_get_server_cert_chain (lsquic_conn_t *conn) - - Get certificate chain returned by the server. This can be used for - server certificate verification. - - The caller releases the stack using sk_X509_free(). - -.. function:: lsquic_conn_ctx_t * lsquic_conn_get_ctx (const lsquic_conn_t *conn) - - Get user-supplied context associated with the connection. - -.. function:: void lsquic_conn_set_ctx (lsquic_conn_t *conn, lsquic_conn_ctx_t *ctx) - - Set user-supplied context associated with the connection. - -.. function:: void * lsquic_conn_get_peer_ctx (lsquic_conn_t *conn, const struct sockaddr *local_sa) - - Get peer context associated with the connection and local address. - -.. function:: const char * lsquic_conn_get_sni (lsquic_conn_t *conn) - - Get SNI sent by the client. - -.. function:: enum LSQUIC_CONN_STATUS lsquic_conn_status (lsquic_conn_t *conn, char *errbuf, size_t bufsz) - - Get connection status. - -Miscellaneous Stream Functions ------------------------------- - -.. function:: unsigned lsquic_conn_n_avail_streams (const lsquic_conn_t *conn) - - Return max allowed outbound streams less current outbound streams. - -.. function:: unsigned lsquic_conn_n_pending_streams (const lsquic_conn_t *conn) - - Return number of delayed streams currently pending. - -.. function:: unsigned lsquic_conn_cancel_pending_streams (lsquic_conn_t *, unsigned n) - - Cancel ``n`` pending streams. Returns new number of pending streams. - -.. function:: lsquic_conn_t * lsquic_stream_conn (const lsquic_stream_t *stream) - - Get a pointer to the connection object. Use it with connection functions. - -.. function:: int lsquic_stream_is_rejected (const lsquic_stream_t *stream) - - Returns true if this stream was rejected, false otherwise. Use this as - an aid to distinguish between errors. - -.. function:: int lsquic_stream_has_unacked_data (const lsquic_stream_t *stream) - - Return true if peer has not ACKed all data written to the stream. This - includes both packetized and buffered data. - -Other Functions ---------------- - -.. function:: lsquic_conn_t lsquic_ssl_to_conn (const SSL *) - - Get connection associated with this SSL object. - -.. function:: enum lsquic_version lsquic_str2ver (const char *str, size_t len) - - Translate string QUIC version to LSQUIC QUIC version representation. - -.. function:: enum lsquic_version lsquic_alpn2ver (const char *alpn, size_t len) - - Translate ALPN (e.g. "h3", "h3-23", "h3-Q046") to LSQUIC enum. - -Miscellaneous Types -------------------- - -.. type:: struct lsquic_shared_hash_if - - The shared hash interface is used to share data between multiple LSQUIC instances. - - .. member:: int (*shi_insert)(void *shi_ctx, void *key, unsigned key_sz, void *data, unsigned data_sz, time_t expiry) - - :param shi_ctx: - - Shared memory context pointer - - :param key: - - Key data. - - :param key_sz: - - Key size. - - :param data: - - Pointer to the data to store. - - :param data_sz: - - Data size. - - :param expiry: When this item expires. If you want your item to never expire, set this to zero. - - :return: 0 on success, -1 on failure. - - If inserted successfully, ``free()`` will be called on ``data`` and ``key`` - pointer when the element is deleted, whether due to expiration - or explicit deletion. - - .. member:: int (*shi_delete)(void *shi_ctx, const void *key, unsigned key_sz) - - Delete item from shared hash - - :return: 0 on success, -1 on failure. - - .. member:: int (*shi_lookup)(void *shi_ctx, const void *key, unsigned key_sz, void **data, unsigned *data_sz) - - :param shi_ctx: - - Shared memory context pointer - - :param key: - - Key data. - - :param key_sz: - - Key size. - - :param data: - - Pointer to set to the result. - - :param data_sz: - - Pointer to the data size. - - :return: - - - ``1``: found. - - ``0``: not found. - - ``-1``: error (perhaps not enough room in ``data`` if copy was attempted). - - The implementation may choose to copy the object into buffer pointed - to by ``data``, so you should have it ready. - -.. type:: struct lsquic_packout_mem_if - - The packet out memory interface is used by LSQUIC to get buffers to - which outgoing packets will be written before they are passed to - :member:`lsquic_engine_api.ea_packets_out` callback. - - If not specified, malloc() and free() are used. - - .. member:: void * (*pmi_allocate) (void *pmi_ctx, void *peer_ctx, lsquic_conn_get_ctx *conn_ctx, unsigned short sz, char is_ipv6) - - Allocate buffer for sending. - - .. member:: void (*pmi_release) (void *pmi_ctx, void *peer_ctx, void *buf, char is_ipv6) - - This function is used to release the allocated buffer after it is - sent via ``ea_packets_out()``. - - .. member:: void (*pmi_return) (void *pmi_ctx, void *peer_ctx, void *buf, char is_ipv6) - - If allocated buffer is not going to be sent, return it to the - caller using this function. - -.. type:: typedef void (*lsquic_cids_update_f)(void *ctx, void **peer_ctx, const lsquic_cid_t *cids, unsigned n_cids) - - :param ctx: - - Context associated with the CID lifecycle callbacks (ea_cids_update_ctx). - - :param peer_ctx: - - Array of peer context pointers. - - :param cids: - - Array of connection IDs. - - :param n_cids: - - Number of elements in the peer context pointer and connection ID arrays. - -.. type:: enum lsquic_logger_timestamp_style - - Enumerate timestamp styles supported by LSQUIC logger mechanism. - - .. member:: LLTS_NONE - - No timestamp is generated. - - .. member:: LLTS_HHMMSSMS - - The timestamp consists of 24 hours, minutes, seconds, and milliseconds. Example: 13:43:46.671 - - .. member:: LLTS_YYYYMMDD_HHMMSSMS - - Like above, plus date, e.g: 2017-03-21 13:43:46.671 - - .. member:: LLTS_CHROMELIKE - - This is Chrome-like timestamp used by proto-quic. The timestamp - includes month, date, hours, minutes, seconds, and microseconds. - - Example: 1223/104613.946956 (instead of 12/23 10:46:13.946956). - - This is to facilitate reading two logs side-by-side. - - .. member:: LLTS_HHMMSSUS - - The timestamp consists of 24 hours, minutes, seconds, and microseconds. Example: 13:43:46.671123 - - .. member:: LLTS_YYYYMMDD_HHMMSSUS - - Date and time using microsecond resolution, e.g: 2017-03-21 13:43:46.671123 - -.. type:: enum LSQUIC_CONN_STATUS - - .. member:: LSCONN_ST_HSK_IN_PROGRESS - .. member:: LSCONN_ST_CONNECTED - .. member:: LSCONN_ST_HSK_FAILURE - .. member:: LSCONN_ST_GOING_AWAY - .. member:: LSCONN_ST_TIMED_OUT - .. member:: LSCONN_ST_RESET - - If es_honor_prst is not set, the connection will never get public - reset packets and this flag will not be set. - - .. member:: LSCONN_ST_USER_ABORTED - .. member:: LSCONN_ST_ERROR - .. member:: LSCONN_ST_CLOSED - .. member:: LSCONN_ST_PEER_GOING_AWAY - -.. type:: enum lsquic_hsi_flag - - These flags are ORed together to specify properties of - :type:`lsxpack_header` passed to :member:`lsquic_hset_if.hsi_process_header`. - - .. member:: LSQUIC_HSI_HTTP1X - - Turn HTTP/1.x mode on or off. In this mode, decoded name and value - pair are separated by ``": "`` and ``"\r\n"`` is appended to the end - of the string. By default, this mode is off. - - .. member:: LSQUIC_HSI_HASH_NAME - - Include name hash into lsxpack_header. - - .. member:: LSQUIC_HSI_HASH_NAMEVAL - - Include nameval hash into lsxpack_header. - -Global Variables ----------------- - -.. var:: const char *const lsquic_ver2str[N_LSQVER] - - Convert LSQUIC version to human-readable string - -List of Log Modules -------------------- - -The following log modules are defined: - -- *alarmset*: Alarm processing. -- *bbr*: BBRv1 congestion controller. -- *bw-sampler*: Bandwidth sampler (used by BBR). -- *cfcw*: Connection flow control window. -- *conn*: Connection. -- *crypto*: Low-level Google QUIC cryptography tracing. -- *cubic*: Cubic congestion controller. -- *di*: "Data In" handler (storing incoming data before it is read). -- *eng-hist*: Engine history. -- *engine*: Engine. -- *event*: Cross-module significant events. -- *frame-reader*: Reader of the HEADERS stream in Google QUIC. -- *frame-writer*: Writer of the HEADERS stream in Google QUIC. -- *handshake*: Handshake and packet encryption and decryption. -- *hcsi-reader*: Reader of the HTTP/3 control stream. -- *hcso-writer*: Writer of the HTTP/3 control stream. -- *headers*: HEADERS stream (Google QUIC). -- *hsk-adapter*: -- *http1x*: Header conversion to HTTP/1.x. -- *logger*: Logger. -- *mini-conn*: Mini connection. -- *pacer*: Pacer. -- *parse*: Parsing. -- *prq*: PRQ stands for Packet Request Queue. This logs scheduling - and sending packets not associated with a connection: version - negotiation and stateless resets. -- *purga*: CID purgatory. -- *qdec-hdl*: QPACK decoder stream handler. -- *qenc-hdl*: QPACK encoder stream handler. -- *qlog*: QLOG output. At the moment, it is out of date. -- *qpack-dec*: QPACK decoder. -- *qpack-enc*: QPACK encoder. -- *sendctl*: Send controller. -- *sfcw*: Stream flow control window. -- *spi*: Stream priority iterator. -- *stream*: Stream operation. -- *tokgen*: Token generation and validation. -- *trapa*: Transport parameter processing. - -.. _extensible-http-priorities: - -Extensible HTTP Priorities --------------------------- - -lsquic supports the -`Extensible HTTP Priorities Extension `_. -It is enabled by default when HTTP/3 is used. The "urgency" and "incremental" -parameters are included into a dedicated type: - -.. type:: struct lsquic_ext_http_prio - - .. member:: unsigned char urgency - - This value's range is [0, 7], where 0 is the highest and 7 is - the lowest urgency. - - .. member:: signed char incremental - - This is a boolean value. The valid range is [0, 1]. - -Some useful macros are also available: - -.. macro:: LSQUIC_MAX_HTTP_URGENCY - -The maximum value of the "urgency" parameter is 7. - -.. macro:: LSQUIC_DEF_HTTP_URGENCY - -The default value of the "urgency" parameter is 3. - -.. macro:: LSQUIC_DEF_HTTP_INCREMENTAL - -The default value of the "incremental" parameter is 0. - -There are two functions to -manage a stream's priority: - -.. function:: int lsquic_stream_get_http_prio (lsquic_stream_t \*stream, struct lsquic_ext_http_prio \*ehp) - - Get a stream's priority information. - - :param stream: The stream whose priority informaion we want. - - :param ehp: Structure that is to be populated with the stream's - priority information. - - :return: Returns zero on success of a negative value on failure. - A failure occurs if this is not an HTTP/3 stream or if - Extensible HTTP Priorities have not been enabled. - See :member:`lsquic_engine_settings.es_ext_http_prio`. - -.. function:: int lsquic_stream_set_http_prio (lsquic_stream_t \*stream, const struct lsquic_ext_http_prio \*ehp) - - Set a stream's priority information. - - :param stream: The stream whose priority we want to set. - - :param ehp: Structure containing the stream's new priority information. - - :return: Returns zero on success of a negative value on failure. - A failure occurs if some internal error occured or if this - is not an HTTP/3 stream or if Extensible HTTP Priorities - haven't been enabled. - See :member:`lsquic_engine_settings.es_ext_http_prio`. - -.. _apiref-datagrams: - -Datagrams ---------- - -lsquic supports the -`Unreliable Datagram Extension `_. -To enable datagrams, set :member:`lsquic_engine_settings.es_datagrams` to -true and specify -:member:`lsquic_stream_if.on_datagram` -and -:member:`lsquic_stream_if.on_dg_write` callbacks. - -.. function:: int lsquic_conn_want_datagram_write (lsquic_conn_t *conn, int want) - - Indicate desire (or lack thereof) to write a datagram. - - :param conn: Connection on which to send a datagram. - :param want: Boolean value indicating whether the caller wants to write - a datagram. - :return: Previous value of ``want`` or ``-1`` if the datagrams cannot be - written. - -.. function:: size_t lsquic_conn_get_min_datagram_size (lsquic_conn_t *conn) - - Get minimum datagram size. By default, this value is zero. - -.. function:: int lsquic_conn_set_min_datagram_size (lsquic_conn_t *conn, size_t sz) - - Set minimum datagram size. This is the minumum value of the buffer - passed to the :member:`lsquic_stream_if.on_dg_write` callback. - Returns 0 on success and -1 on error. diff --git a/external/lsquic/docs/conf.py b/external/lsquic/docs/conf.py deleted file mode 100644 index 2af051a..0000000 --- a/external/lsquic/docs/conf.py +++ /dev/null @@ -1,184 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Configuration file for the Sphinx documentation builder. -# -# This file does only contain a selection of the most common options. For a -# full list see the documentation: -# http://www.sphinx-doc.org/en/master/config - -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -# import os -# import sys -# sys.path.insert(0, os.path.abspath('.')) - - -# -- Project information ----------------------------------------------------- - -project = u'lsquic' -copyright = u'2023, LiteSpeed Technologies' -author = u'LiteSpeed Technologies' - -# The short X.Y version -version = u'4.3' -# The full version, including alpha/beta/rc tags -release = u'4.3.1' - - -# -- General configuration --------------------------------------------------- - -# If your documentation needs a minimal Sphinx version, state it here. -# -# needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ -# To make ours look like readthedocs.io, change theme to "sphinx_rtd_theme", -# pip install sphinx_rtd_theme, and uncomment extensions: - "sphinx_rtd_theme", -# "sphinx.ext.intersphinx", -# "sphinx.ext.autodoc", -# "sphinx.ext.mathjax", -# "sphinx.ext.viewcode", -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# -# source_suffix = ['.rst', '.md'] -source_suffix = '.rst' - -# The master toctree document. -master_doc = 'index' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = None - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. -exclude_patterns = [u'_build', 'Thumbs.db', '.DS_Store'] - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = None - -default_role = 'c:func' -primary_domain = 'c' - - -# -- Options for HTML output ------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = "sphinx_rtd_theme" -#html_style = '/default.css' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -# -# html_theme_options = {} - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# Custom sidebar templates, must be a dictionary that maps document names -# to template names. -# -# The default sidebars (for documents that don't match any pattern) are -# defined by theme itself. Builtin themes are using these templates by -# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', -# 'searchbox.html']``. -# -# html_sidebars = {} - - -# -- Options for HTMLHelp output --------------------------------------------- - -# Output file base name for HTML help builder. -htmlhelp_basename = 'lsquicdoc' - - -# -- Options for LaTeX output ------------------------------------------------ - -latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - # - # 'papersize': 'letterpaper', - - # The font size ('10pt', '11pt' or '12pt'). - # - # 'pointsize': '10pt', - - # Additional stuff for the LaTeX preamble. - # - # 'preamble': '', - - # Latex figure (float) alignment - # - # 'figure_align': 'htbp', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - (master_doc, 'lsquic.tex', u'lsquic Documentation', - u'LiteSpeed Technologies', 'manual'), -] - - -# -- Options for manual page output ------------------------------------------ - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'lsquic', u'lsquic Documentation', - [author], 1) -] - - -# -- Options for Texinfo output ---------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - (master_doc, 'lsquic', u'lsquic Documentation', - author, 'lsquic', 'One line description of project.', - 'Miscellaneous'), -] - - -# -- Options for Epub output ------------------------------------------------- - -# Bibliographic Dublin Core info. -epub_title = project - -# The unique identifier of the text. This can be a ISBN number -# or the project homepage. -# -# epub_identifier = '' - -# A unique identification for the text. -# -# epub_uid = '' - -# A list of files that should not be packed into the epub file. -epub_exclude_files = ['search.html'] diff --git a/external/lsquic/docs/devel.rst b/external/lsquic/docs/devel.rst deleted file mode 100644 index f351d0f..0000000 --- a/external/lsquic/docs/devel.rst +++ /dev/null @@ -1,37 +0,0 @@ -Developing lsquic -================= - -Generating Tags ---------------- - -Over the years, we have developed a wrapper around `Universal Ctags`_ -to generate convenient tags so that, for example, ``ci_packet_in`` will -be able to take you to any of its implementations such as -``full_conn_ci_packet_in()``, ``evanescent_conn_ci_packet_in()``, and -others. - -_Exuberant_ Ctags will work, too, but the more recent and maintained fork -of it, the _Universal_ Ctags, is preferred. (If you are on Ubuntu, you -should clone Universal Ctags from GitHub and compiled it yourself. The -version that comes in the Ubuntu package -- at the time of this writing --- is so slow as to be considered broken). - -The wrapper is ``tools/gen-tags.pl``. Run it in the source directory: - -.. highlight:: bash - -:: - - sh$ cd lsquic - sh$ ./tools/gen-tags.pl - -Maintaining Documentation -------------------------- - -Documentation -- the ``*.rst`` files under ``docs/`` should be kept up-to-date -with changes in the API in ``include/lsquic.h``. - -For convenience, tags for the documentation files can be generated by passing -the ``--docs`` argument to ``tools/gen-tags.pl``. - -.. _`Universal Ctags`: https://ctags.io/ diff --git a/external/lsquic/docs/faq.rst b/external/lsquic/docs/faq.rst deleted file mode 100644 index d1075ad..0000000 --- a/external/lsquic/docs/faq.rst +++ /dev/null @@ -1,47 +0,0 @@ -************************** -Frequently Asked Questions -************************** - -API/Design -========== - -*Why have a separate engine for server and client? Surely traffic -could be differentiated as much as it needs to be internally in one -engine?* - -The traffic *cannot* be differentiated for gQUIC versions Q046 and Q050. -This is because in these versions, the server never includes a connection -ID into the packets it sends to the client. To have more than one -connection, then, the client must open a socket per connection: otherwise, -the engine would not be able to dispatch incoming packets to correct -connections. - -To aid development, there is a :macro:`LSQUIC_FORCED_TCID0_VERSIONS` that -specifies the list of versions with 0-sized connections. (If you, for -example, want to turn them off.) - -Once gQUIC becomes deprecated in the future, there will remain no technical -reason why a single engine instance could not be used both for client and -server connections. It will be just work. For example, the single -engine settings :type:`lsquic_engine_settings` will have to be separated -into client and server settings, as the two usually do need to have -separate settings. - -Example Programs -================ - -*http_client does not work with www.google.com, www.facebook.com, etc.* - -Check the version. By defaut, ``http_client`` will use the latest supported -version (at the time of this writing, "h3-31"), while the server may be using -an older version, such as "h3-29". Adding ``-o version=h3-29`` to the -command line may well solve your issue. - -There is an `outstanding bug`_ where lsquic client does not perform version -negotiation correctly for HTTP/3. We do not expect this to be fixed, because -a) this version negotiation mechanism is likely to become defunct when QUIC v1 -is released and b) version negotiation is not necessary for an HTTP/3 client, -because the other side's version is communicated to it via the ``Alt-Svc`` HTTP -header. - -.. _`outstanding bug`: https://github.com/litespeedtech/lsquic/issues/180 diff --git a/external/lsquic/docs/gettingstarted.rst b/external/lsquic/docs/gettingstarted.rst deleted file mode 100644 index aba5fe5..0000000 --- a/external/lsquic/docs/gettingstarted.rst +++ /dev/null @@ -1,78 +0,0 @@ -Getting Started -=============== - -Supported Platforms -------------------- - -LSQUIC compiles and runs on Linux, Windows, FreeBSD, Mac OS, and Android. -It has been tested on i386, x86_64, and ARM (Raspberry Pi and Android). - -Dependencies ------------- - -LSQUIC library uses: - -- zlib_; -- BoringSSL_; and -- `ls-hpack`_ (as a Git submodule). -- `ls-qpack`_ (as a Git submodule). - -The accompanying demo command-line tools use libevent_. - -What's in the box ------------------ - -- ``src/liblsquic`` -- the library -- ``bin`` -- demo client and server programs -- ``tests`` -- unit tests - -Building --------- - -To build the library, follow instructions in the README_ file. - -Demo Examples -------------- - -Fetch Google home page: - -:: - - ./http_client -s www.google.com -p / -o version=h3-29 - -Run your own server (it does not touch the filesystem, don't worry): - -:: - - ./http_server -c www.example.com,fullchain.pem,privkey.pem -s 0.0.0.0:4433 - -Grab a page from your server: - -:: - - ./http_client -H www.example.com -s 127.0.0.1:4433 -p / - -You can play with various options, of which there are many. Use -the ``-h`` command-line flag to see them. - -More about LSQUIC ------------------ - -You may be also interested in this presentation_ about LSQUIC. -Slides are available `here `_. - -Next steps ----------- - -If you want to use LSQUIC in your program, check out the :doc:`tutorial` and -the :doc:`apiref`. - -:doc:`internals` covers some library internals. - -.. _zlib: https://www.zlib.net/ -.. _BoringSSL: https://boringssl.googlesource.com/boringssl/ -.. _`ls-hpack`: https://github.com/litespeedtech/ls-hpack -.. _`ls-qpack`: https://github.com/litespeedtech/ls-qpack -.. _libevent: https://libevent.org/ -.. _README: https://github.com/litespeedtech/lsquic/blob/master/README.md -.. _presentation: https://www.youtube.com/watch?v=kDwyGNsQXds diff --git a/external/lsquic/docs/index.rst b/external/lsquic/docs/index.rst deleted file mode 100644 index 626dfc7..0000000 --- a/external/lsquic/docs/index.rst +++ /dev/null @@ -1,75 +0,0 @@ -LSQUIC Documentation -==================== - -This is the documentation for LSQUIC_ |release|, last updated |today|. - -LiteSpeed QUIC (LSQUIC) Library is an open-source implementation of QUIC -and HTTP/3 functionality for servers and clients. LSQUIC is: - -- fast; - -- flexible; and - -- production-ready. - -Most of the code in this distribution has been used in our own products --- `LiteSpeed Web Server`_, `LiteSpeed Web ADC`_, and OpenLiteSpeed_ -- -since 2017. - -Currently supported QUIC versions are v1, Internet-Draft versions 29, and 27; -and the older "Google" QUIC versions Q043, Q046, an Q050. - -LSQUIC is licensed under the `MIT License`_; see LICENSE in the source -distribution for details. - -Features --------- - -LSQUIC supports nearly all QUIC and HTTP/3 features, including - -- DPLPMTUD -- ECN -- Spin bits (allowing network observer to calculate a connection's RTT) -- Path migration -- NAT rebinding -- Push promises -- TLS Key updates -- Extensions: - - - :ref:`extensible-http-priorities` - - :ref:`apiref-datagrams` - - Loss bits extension (allowing network observer to locate source of packet loss) - - Timestamps extension (allowing for one-way delay calculation, improving performance of some congestion controllers) - - Delayed ACKs (this reduces number of ACK frames sent and processed, improving throughput) - - QUIC grease bit to reduce ossification opportunities - -Architecture ------------- - -The LSQUIC library does not use sockets to receive and send packets; that is handled by the user-supplied callbacks. The library also does not mandate the use of any particular event loop. Instead, it has functions to help the user schedule events. (Thus, using an event loop is not even strictly necessary.) The various callbacks and settings are supplied to the engine constructor. -LSQUIC keeps QUIC connections in several data structures in order to process them efficiently. Connections that need processing are kept in two priority queues: one holds connections that are ready to be processed (or "ticked") and the other orders connections by their next timer value. As a result, no connection is processed needlessly. - -.. _LSQUIC: https://github.com/litespeedtech/lsquic -.. _`MIT License`: http://www.opensource.org/licenses/mit-license.php -.. _`LiteSpeed Web Server`: https://www.litespeedtech.com/products/litespeed-web-server/ -.. _`LiteSpeed Web ADC`: https://www.litespeedtech.com/products/litespeed-web-adc/ -.. _OpenLiteSpeed: https://openlitespeed.org/ - -Contents --------- - -.. toctree:: - :maxdepth: 2 - - gettingstarted - tutorial - apiref - devel - internals - faq - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`search` diff --git a/external/lsquic/docs/internals.rst b/external/lsquic/docs/internals.rst deleted file mode 100644 index be218c4..0000000 --- a/external/lsquic/docs/internals.rst +++ /dev/null @@ -1,3706 +0,0 @@ -############ -Library Guts -############ - -.. highlight:: c - -Introduction -************ - - -lsquic inception dates back to the fall of 2016. Since that time, lsquic -underwent several major changes. Some of those had to do with making the -library more performant; others were needed to add important new -functionality (for example, IETF QUIC and HTTP/3). Throughout this time, -one of the main principles we embraced is that **performance trumps -everything else**, including code readability and maintainability. This -focus drove code design decisions again and again and it explains some -of the hairiness that we will come across in this document. - -Code Version -============ - -The code version under discussion is v2.29.6. - -Coding Style -************ - -Spacing and Cuddling -==================== - -lsquic follows the LiteSpeed spacing and cuddling conventions: - -- Two empty lines between function definitions - -- Four-space indentation - -- Ifs and elses are not cuddled - -Function Name Alignment -======================= - -In function definitions, the name is always left-aligned, for example: - -:: - - static void - check_flush_threshold (lsquic_stream_t *stream) - - -Naming Conventions -================== - -- Struct members usually have prefixes derived from the struct name. - For example members of ``struct qpack_dec_hdl`` begin with ``qdh_``, - members of ``struct cid_update_batch`` begin with ``cub_``, and so on. - This is done to reduce the need to memorize struct member names as - vim's autocomplete (Ctrl-P) functionality makes it easy to fill in - the needed identifier. - -- Non-static functions all begin with ``lsquic_``. - -- Functions usually begin with a module name (e.g. ``lsquic_engine_`` or - ``stream_``) which is then followed by a verb (e.g. - ``lsquic_engine_connect`` or ``stream_activate_hq_frame``). If a - function does not begin with a module name, it begins with a verb - (e.g. ``check_flush_threshold`` or ``maybe_remove_from_write_q``). - -- Underscores are used to separate words (as opposed to, for example, - theCamelCase). - -Typedefs -======== - -Outside of user-facing API, structs, unions, and enums are not -typedefed. On the other hand, some integral types are typedefed. - -List of Common Terms -******************** - -- **gQUIC** Google QUIC. The original lsquic supported only Google - QUIC. gQUIC is going to become obsolete. (Hopefully soon). - -- **HQ** This stands for "HTTP-over-QUIC", the original name of HTTP/3. - The code predates the official renaming to HTTP/3 and thus there - are many types and names with some variation of ``HQ`` in them. - -- **iQUIC** This stands for IETF QUIC. To differentiate between gQUIC - and IETF QUIC, we use ``iquic`` in some names and types. - -- **Public Reset** In the IETF QUIC parlance, this is called the *stateless* - reset. Because gQUIC was first to be implemented, this name is still - used in the code, even when the IETF QUIC stateless reset is meant. - You will see names that contain strings like "prst" and "pubres". - -High-Level Structure -******************** - -At a high level, the lsquic library can be used to instantiate an engine -(or several engines). An engine manages connections; each connection has -streams. Engine, connection, and stream objects are exposed to the user -who interacts with them using the API (see :doc:`apiref`). All other data -structures are internal and are hanging off, in one way or another, from -the engine, connection, or stream objects. - -Engine -****** - -*Files: lsquic_engine.c, lsquic_engine_public.h, lsquic.h* - -Data Structures -=============== - -out_batch ---------- - -:: - - /* The batch of outgoing packets grows and shrinks dynamically */ - /* Batch sizes do not have to be powers of two */ - #define MAX_OUT_BATCH_SIZE 1024 - #define MIN_OUT_BATCH_SIZE 4 - #define INITIAL_OUT_BATCH_SIZE 32 - - struct out_batch - { - lsquic_conn_t *conns [MAX_OUT_BATCH_SIZE]; - struct lsquic_out_spec outs [MAX_OUT_BATCH_SIZE]; - unsigned pack_off[MAX_OUT_BATCH_SIZE]; - lsquic_packet_out_t *packets[MAX_OUT_BATCH_SIZE * 2]; - struct iovec iov [MAX_OUT_BATCH_SIZE * 2]; - }; - -The array of struct lsquic_out_specs -- outs above -- is what gets -passed to the user callback ``ea_packets_out()``. ``conns`` array corresponds -to the spec elements one to one. - -``pack_off`` records which packet in ``packets`` corresponds to which -connection in ``conns``. Because of coalescing, an element in ``outs`` can -correspond (logically) to more than one packet. (See how the batch is -constructed in `Batching packets`_.) On the -other hand, ``packets`` and ``iov`` arrays have one-to-one correspondence. - -There is one instance of this structure per engine: the whole thing is -allocated as part of `struct lsquic_engine <#lsquic-engine>`__. - - -cid_update_batch ----------------- - -:: - - struct cid_update_batch - { - lsquic_cids_update_f cub_update_cids; - void *cub_update_ctx; - unsigned cub_count; - lsquic_cid_t cub_cids[20]; - void *cub_peer_ctxs[20]; - }; - -This struct is used to batch CID updates. - -There are three user-defined CID liveness callbacks: ``ea_new_scids``, -``ea_live_scids``, and ``ea_old_scids``. These functions all have the same -signature, ``lsquic_cids_update_f``. When the batch reaches the count of -20 (kept in ``cub_count``), the callback is called. - -The new SCIDs batch is kept in `struct -lsquic_engine <#lsquic-engine>`__. Other batches are allocated on the -stack in different functions as necessary. - -20 is an arbitrary number. - -lsquic_engine_public --------------------- - -This struct, defined in lsquic_engine_public.h, is the "public" -interface to the engine. ("Public" here means accessible by other -modules inside lsquic, not that it's a public interface like the -:doc:`apiref`.) Because there are many things in the engine object that -are accessed by other modules, this struct is used to expose those -(``public``) parts of the engine. - -``lsquic_engine_struct`` is the first member of -`lsquic_engine <#lsquic-engine>`__. The functions declared in -lsquic_engine_public.h take a pointer to lsquic_engine_public as the -first argument, which is then case to lsquic_engine. - -This is somewhat ugly, but it's not too bad, as long as one remembers -that the two pointers are interchangeable. - -lsquic_engine -------------- - -This is the central data structure. The engine instance is the root of -all other data structures. It contains: - -- Pointers to connections in several lists and hashes (see `Connection Management <#connection-management>`__) - -- Memory manager - -- Engine settings - -- Token generator - -- CID Purgatory - -- Server certificate cache - -- Transport parameter cache - -- Packet request queue - -- `Outgoing packet batch <#out-batch>`__ - -- And several other things - -Some of the members above are stored in the ``pub`` member of type -`lsquic_engine_public <#lsquic-engine-public>`__. These are accessed -directly from other parts of lsquic. - -The engine is instantiated via ``lsquic_engine_new()`` and destroyed via -``lsquic_engine_destroy()`` - -Connection Management -===================== - -Lifetime --------- - -There are several `connection types`_. All types of -connections begin their life inside the engine module, where their -constructors are called. They all also end their life here as well: this -is where the destructors are called. - -The connection constructors are all different function calls: - -- lsquic_ietf_full_conn_client_new - -- lsquic_gquic_full_conn_client_new - -- lsquic_ietf_full_conn_server_new - -- lsquic_gquic_full_conn_server_new - -- lsquic_mini_conn_ietf_new - -- lsquic_mini_conn_new - -- lsquic_prq_new_req - -- lsquic_prq_new_req_ext - -(See `Evanescent Connection`_ for information about the last two.) - -After a connection is instantiated, all further interactions with it, -including destruction, are done via the `Common Connection Interface`_. - -Refcounting Model ------------------ - -Each connection is referenced by at least one of the following data -structures: - -1. CID-to-connection hash. This hash is used to find connections in - order to dispatch an incoming packet. Connections can be hashed by - CIDs or by address. In the former case, each connection has one or - more mappings in the hash table. IETF QUIC connections have up to - eight (in our implementation) source CIDs and each of those would - have a mapping. In client mode, depending on QUIC versions and - options selected, it is may be necessary to hash connections by - address, in which case incoming packets are delivered to - connections based on the address. - -2. Outgoing queue. This queue holds connections that have packets to - send. - -3. `Tickable Queue`_. This queue holds connections - that `can be ticked now <#tickability>`__. - -4. `Advisory Tick Time Queue`_. - -5. Closing connections queue. This is a transient queue -- it only - exists for the duration of - `process_connections() <#processing-connections>`__ function call. - -6. Ticked connections queue. Another transient queue, similar to the - above. - -The idea is to destroy the connection when it is no longer referenced. -For example, a connection tick may return TICK_SEND|TICK_CLOSE. In that -case, the connection is referenced from two places: (2) and (5). After -its packets are sent, it is only referenced in (5), and at the end of -the function call, when it is removed from (5), reference count goes to -zero and the connection is destroyed. (See function ``destroy_conn``.) If -not all packets can be sent, at the end of the function call, the -connection is referenced by (2) and will only be removed once all -outgoing packets have been sent. - -.. image:: lsquic-engine-conns.png - -In the diagram above, you can see that the CID-to-connection hash has -several links to the same connection. This is because an IETF QUIC -connection has more than one Source Connection IDs (SCIDs), any of which -can be included by the peer into the packet. See ``insert_conn_into_hash`` -for more details. - -References from each of these data structures are tracked inside the -connection object by bit flags: - -:: - - #define CONN_REF_FLAGS (LSCONN_HASHED \ - |LSCONN_HAS_OUTGOING \ - |LSCONN_TICKABLE \ - |LSCONN_TICKED \ - |LSCONN_CLOSING \ - |LSCONN_ATTQ) - -Functions ``engine_incref_conn`` and ``engine_decref_conn`` manage setting -and unsetting of these flags. - - -Notable Code -============ - -Handling incoming packets -------------------------- - -Incoming UDP datagrams are handed off to the lsquic library using the -function ``lsquic_engine_packet_in``. Depending on the engine mode -- -client or server -- the appropriate `packet -parsing <#parsing-packets>`__ function is selected. - -Because a UDP datagram can contain more than one QUIC packet, the -parsing is done in a loop. If the first part of packet parsing is -successful, the internal ``process_packet_in`` function is called. - -There, most complexity is contained in ``find_or_create_conn``, which gets -called for the server side. Here, parsing of the packet is finished, now -via the version-specific call to ``pf_parse_packet_in_finish``. If -connection is not found, it may need to be created. Before that, the -following steps are performed: - -- Check that engine is not in the cooldown mode - -- Check that the maximum number of mini connections is not exceeded - -- Check that the (D)CID specified in the packet is not in the `CID Purgatory`_ - -- Check that the packet can be used to create a mini conn: it contains - version information and the version is supported - -- Depending on QUIC version, perform token verification, if necessary - -Only then does the mini connection constructor is called and the -connection is inserted into appropriate structures. - -Processing connections ----------------------- - -Connections are processed in the internal function -``process_connections``. There is the main connection processing loop and -logic. - -All connections that the iterator passed to this function returns are -processed in the first while loop. The ``ci_tick()`` call is what causes -the underlying connection to do all it needs to (most importantly, -dispatch user events and generate outgoing packets). The return value -dictates what lists -- global and local to the function -- the -connection will be placed upon. - -Note that mini connection promotion happens inside this loop. Newly -created full connections are processed inside the same while loop. For a -short time, a mini and a full connection object exist that are -associated with the same logical connection. - -After all connections are ticked, outgoing packets, if there are any, -`are sent out <#batching-packets>`__. - -Then, connections that were closed by the first while loop above are -finally closed. - -Connections that were ticked (and not closed) are either: - -- Put back onto the ``tickable`` queue; - -- Added to the `Advisory Tick Time Queue`_; or - -- Left unqueued. This can happen when both idle and ping timer are - turned off. (This should not happen for the connections that we - expect to process, though.) - -And lastly, CID liveness updates are reported to the user via the -optional SCIDs callbacks: ``ea_new_scids`` etc. - -Tickable Queue Cycle --------------------- - -When a connection is ticked, it is removed from the `Tickable -Queue <#tickable-queue>`__ and placed onto the transient Ticked Queue. -After outgoing packets are sent and some connections are closed, the -Ticked Queue is examined: the engine queries each remaining connection -again whether it's tickable. If it is, back onto the Tickable Queue it -goes. This should not happen often, however. It may occur when RTT is -low and there are many connections to process. In that case, once all -connections have been processed, the pacer now allows to send another -packet because some time has passed. - -Batching packets ----------------- - -Packet-sending entry point is the function ``send_packets_out``. The main -idea here is as follows: - -Iterate over connections that have packets to send (those are on the -Outgoing queue in the engine). For each connection, ask it for the next -outgoing packet, encrypt it, and place it into the batch. When the batch -is full, `send the batch <#sending-a-batch>`__. - -The outgoing packets from all connections are interleaved. For example, -if connections A, B, and C are on the Outgoing queue, the batch will -contain packets A1, B1, C1, A2, B2, C2, A3, B3, C3, … and so on. This is -done to ensure fairness. When a connection runs out of packets to send, -it returns NULL and is removed from the iterator. - -The idea is simple, but the devil is in the details. The code may be -difficult to read. There are several things going on: - -Conns Out Iterator -^^^^^^^^^^^^^^^^^^ - -This iterator, ``conns_out_iter``, sends packets from connections on the -Outgoing queue and packets on the Packet Request queue. (The latter -masquerade as `Evanescent Connections <#evanescent-connection>`__ so that they -are simple to use.) First, the Outgoing queue (which is a min-heap) is -drained. Then, packets from the Packet Request queue are sent, if there -are any. Then, remaining connections from the first pass are returned in -the round-robin fashion. - -After sending is completed, the connections that still have outgoing -packets to send are placed back onto the Outgoing queue. - - -Packet Coalescing -^^^^^^^^^^^^^^^^^ - -Some IETF QUIC packets can be coalesced. This reduces the number of UDP -datagrams that need to be sent during the handshake. To support this, if -a packet matches some parameters, the same connection is queried for -another packet, which, if it returns, is added to the current batch -slot's iov. - -:: - - if ((conn->cn_flags & LSCONN_IETF) - && ((1 << packet_out->po_header_type) - & ((1 << HETY_INITIAL)|(1 << HETY_HANDSHAKE)|(1 << HETY_0RTT))) - && (engine->flags & ENG_COALESCE) - && iov < batch->iov + sizeof(batch->iov) / sizeof(batch->iov[0])) - { - const struct to_coal to_coal = { - .prev_packet = packet_out, - .prev_sz_sum = iov_size(packet_iov, iov), - }; - packet_out = conn->cn_if->ci_next_packet_to_send(conn, &to_coal); - if (packet_out) - goto next_coa; - } - batch->outs [n].iovlen = iov - packet_iov; - -*With some debug code removed for simplicity* - -Also see the description of the batch in `out_batch`_. - -Note that packet coalescing is only done during the handshake of an IETF -QUIC connection. Non-handshake and gQUIC packets cannot be coalesced. - -Sending and Refilling the Batch -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -When the batch is sent inside the while loop, and the whole batch was -sent successfully, the batch pointers are reset, the batch potentially -grows larger, and the while loop continues. - -Batch Resizing -^^^^^^^^^^^^^^ - -When all datagrams in the batch are sent successfully, the batch may -grow -- up to the hardcoded maximum value of ``MAX_OUT_BATCH_SIZE``. When -not all datagrams are sent, the batch shrinks. The batch size survives -the call into the library: when packets are sent again, the same batch -size is used to begin the sending. - -Deadline Checking -^^^^^^^^^^^^^^^^^ - -This is a rather old safety check dating back to the summer of 2017, -when we first shipped QUIC support. The way we send packets has changed -since then -- there is high possibility that this code can be removed -with no ill effect. - -Sending a batch ---------------- - -When the batch is filled, it is handed off to the function ``send_batch``, -which calls the user-supplied callback to send packets out. The -high-level logic is as follows: - -- Update each packet's ``sent`` time - -- Call the "send packets out" callback - -- For packets that were sent successfully, call ``ci_packet_sent`` - -- For packets that were not sent, call ``ci_packet_not_sent``. This is - important: all packets returned by ``ci_next_packet_to_send`` must - be returned to the connection via either these two calls above or - via ``ci_packet_too_large`` (see below). - -- Return the number of packets sent - -Because of support for coalescing, we have to map from outgoing spec to -packets via ``batch->pack_off``. This is done in several places in this -function. - -To handle the case when a PMTU probe is too large (stuff happens!), the -code checks for EMSGSIZE and returns the packet back to the connection -via ``ci_packet_too_large``. Because this error is of our own making, this -does not count as inability to send. The too-large packet is skipped and -sending of the datagrams in the batch continues. - -Growing min-heaps ------------------ - -The Outgoing and Tickable connection queues are actually min-heaps. The -number of elements in these min-heaps never exceeds the number of -connections. As optimization, allocation of the underlying arrays is -done not in the min-heap module itself but in the engine module in the -function ``maybe_grow_conn_heaps``. The engine knows how many connections -there are and it grows the arrays as necessary. - -As an additional optimization, the two arrays use a single memory region -which is allocated once. - -The min-heap arrays are never shrunk. - -Connection -********** - -*Files: lsquic_conn.h, lsquic_conn.c -- others are covered in dedicated -chapters* - -The connection represents the QUIC connection. Connections are `managed -by the engine <#connection-management>`__. A connection, in turn, -manages `streams <#stream>`__. - -Connection Types -================ - -lsquic supports two different QUIC protocols: Google QUIC and IETF QUIC. -Each of these has a separate implementation, which includes connection -logic, parsing/generating mechanism, and encryption. - -Each of the QUIC connection types on the server begin their life as a -``mini`` connection. This connection type is used while handshake is -proceeding. Once the handshake has completed, the mini connection is -``promoted`` to a ``full`` connection. (See `Mini vs Full -Connection <#mini-vs-full-connections>`__ for more.) - -In addition to the above, an "evanescent" connection type is used to -manage replies to incoming packets that do not result in connection -creation. These include version negotiation, stateless retry, and -stateless reset packets. - -Each of the five connection types above are covered in their own -dedicated chapters elsewhere in this document: - -- `Mini gQUIC Connection <#mini-gquic-connection>`__ - -- `Full gQUIC Connection <#full-gquic-connection>`__ - -- `Mini IETF QUIC Connection <#mini-ietf-connection>`__ - -- `Full IETF QUIC Connection <#full-ietf-connection>`__ - -- `Evanescent Connection <#evanescent-connection>`__ - -lsquic_conn -=========== - -All connection types expose the same connection interface via a pointer -to ``struct lsquic_conn``. (This is the same type pointer to which is -exposed to the user, but the user can only treat the connection as an -opaque pointer.) - -This structure contains the following elements: - -Pointers to Crypto Implementation ---------------------------------- - -The crypto session pointer, ``cn_enc_session``, points to a type-specific -(gQUIC or iQUIC) instance of the encryption session. This session -survives `connection promotion <#connection-promotion>`__. - -The two types of crypto session have a set of common functionality; it -is pointed to by ``cn_esf_c`` (where ``c`` stands for ``common``). Each of -them also has its own, type-specific functionality, which is pointed to -by ``cn_esf.g`` and ``cn_esf.i`` - -Pointer to Common Connection Interface --------------------------------------- - -``cn_if`` points to the set of functions that implement the Common -Connection Interface (`see below <#common-connection-interface>`__). - -Pointer to Parsing Interface ----------------------------- - -The parsing interface is version-specific. It is pointed to by ``cn_pf``. - -Various list and heap connectors --------------------------------- - -A connection may be pointed to by one or several queues and heaps (see -"\ `Connection Management <#connection-management>`__\ "). There are -several struct members that make it possible: \*TAILQ_ENTRYs, -``cn_attq_elem``, and ``cn_cert_susp_head``. - -Version -------- - -``cn_version`` is used to make some decisions in several parts of the -code. - -Flags ------ - -The flags in ``cn_flags`` specify which lists the connection is on and -some other properties of the connection which need to be accessible by -other modules. - -Stats ------ - -``cn_last_sent`` and ``cn_last_ticked`` are used to determine the -connection's place on the outgoing queue (see `Batching -Packets <#batching-packets>`__) and on the `Advisory Tick Time -Queue <#alarm-set>`__. - -List of SCIDs -------------- - -IETF QUIC connections have one or more SCIDs (Source Connection IDs), -any one of which can be used by the peer as the DCID (Destination CID) -in the packets it sends. Each of the SCIDs is used to hash the -connection so it can be found. ``cn_cces`` points to an array of size -``cn_n_cces`` which is allocated internally inside each connection type. - -Google QUIC connections use only one CID (same for source and -destination). In order not to modify old code, the macro ``cn_cid`` is -used. - -Common Connection Interface -=========================== - -The struct ``conn_iface`` defines the common connection interface. All -connection types implement all or some of these functions. - -Some of these functions are used by the engine; others by other modules -(for example, to abort a connection); yet others are for use by the -user, e.g. ``lsquic_conn_close`` and others in lsquic.h. In that case, -these calls are wrapped in lsquic_conn.c. - -Tickability -=========== - -A connection is processed when it is tickable. More precisely, the -connection is placed onto the `Tickable Queue <#tickable-queue>`__, -which is iterated over when `connections are -processed <#processing-connections>`__. A connection reports its own -tickability via the ``ci_is_tickable`` method. - -In general, a connection is tickable if it has productive user callbacks -to dispatch (that is, user wants to read and there is data to read or -user wants to write and writing is possible), if there are packets to -send or generate, or if its advisory tick time is in the past. (The -latter is handled in ``lsquic_engine_process_conns()`` when expired -connections from the `Advisory Tick Time Queue`_ are added -to the Tickable Queue.) - -Stream -****** - -*Files: lsquic_stream.h, lsquic_stream.c* - -Overview -======== - -The lsquic stream is the conduit for data. This object is accessible by -the user via any of the ``lsquic_stream_*`` functions declared in -lsquic.h. The stream is bidirectional; in our user code, it represents -the HTTP request and response. The client writes its request to the -stream and the server reads the request in its corresponding instance of -the stream. The server sends its response using the same stream, which -the client reads from the stream. - -Besides streams exposed to the application, connections use streams -internally: - -- gQUIC has the HANDSHAKE and HEADERS streams - -- IETF QUIC has up to four HANDSHAKE streams - -- HTTP/3 has at least three unidirectional streams: - - - Settings stream - - - QPACK encoder stream - - - QPACK decoder stream - -In addition, HTTP/3 push promises use unidirectional streams. In the -code, we make a unidirectional stream simply by closing one end in the -constructor. - -All of the use cases above are handled by the single module, -lsquic_stream. The differences in behavior -- gQUIC vs IETF QUIC, HTTP -vs non-HTTP -- are handled either by explicit conditionals or via -function pointers. - -The streams hang off full connections via stream ID-to-stream hashes and -in various queues. This is similar to the way the connections hang off -the engine. - -Streams are only used in the full connections; mini connections use -their own, minimalistic, code to handle streams. - -.. _data-structures-1: - -Data Structures -=============== - -stream_hq_frame ---------------- - -This structure is used to keep information about an HTTP/3 frame that is -being, or is about to be, written. In our implementation, frame headers -can be two or three bytes long: one byte is HTTP/3 frame type and the -frame length is encoded in 1 or 2 bytes, giving us the maximum payload -size of 2\ :sup:`14` - 1 bytes. You will find literal ``2`` or ``3`` values -in code that deals with writing HQ frames. - -If the HQ frame's size is known in advance (SHF_FIXED_SIZE) -- which is -the case for HEADERS and PUSH_PROMISE frames -- then the HQ header -contents are written immediately. Otherwise, ``shf_frame_ptr`` points to -the bytes in the packet where the HQ header was written, to be filled in -later. - -See `Writing HTTP/3 Streams`_ for more information. - -hq_filter ---------- - -This structure is used to read HTTP/3 streams. A single instance of it -is stored in the stream in ``sm_hq_filter``. The framing is removed -transparently (see `Reading HTTP/3 Streams`_). - -Frame type and length are read into ``hqfi_vint2_state``. Due to greasing, -the reader must be able to support arbitrary frame types and so the code -is pretty generic: varints of any size are supported. - -``hqfi_flags`` and ``hqfi_state`` contain information needed to resume -parsing the frame header, as only partial data may have arrived. - -``hqfi_hist_buf`` and ``hqfi_hist_idx`` are used to record the last few -incoming headers. This information is used to check for validity, as -some sequences of HTTP/3 frames are invalid. - -stream_filter_if ----------------- - -This struct is used to specify functionality required to strip arbitrary -framing when reading from the stream. At the moment (and for the -foreseeable future) only one mechanism is used: that to strip the HTTP/3 -framing. At the time the code was written, however, the idea was to -future-proof it in case we needed to support more than one framing format -at a time. - -lsquic_stream -------------- - -This struct is the stream object. It contains many members that deal -with - -- Reading data - -- Writing data - -- Maintaining stream list memberships - -- Enforcing flow control - -- Dispatching read and write events - -- Calling various user callbacks - -- Interacting with HEADERS streams - -The stream has an ID (``id``). It is used to hash the stream. - -A stream can be on one or more lists: see ``next_send_stream``, -``next_read_stream``, and so on. - -Incoming data is stored in ``data_in``. Outgoing data is packetized -immediately or buffered in ``sm_buf``. - -HTTP/3 frames that are being actively written are on the ``sm_hq_frames`` -list. - -A note on naming: newer members of the stream begin with ``sm_`` for -simplicity. Originally, the structure members lacked a prefix. - -progress --------- - -This structure is used to determine whether the user callback has made -any progress during an ``on_write`` or ``on_read`` event loop. If progress -is not made for a number of calls, the callback is interrupted, breaking -out of a suspected infinite loop. (See ``es_progress_check`` setting.) - - -frame_gen_ctx -------------- - -This structure holds function pointers to get user data and write it to -packets. ``fgc_size``, ``fgc_fin``, and ``fgc_read`` are set based on framing -requirements. This is a nice abstraction that gets passed to several -packetization functions and allows them not to care about how or whether -framing is performed. - -pwritev_ctx ------------ - -Used to aid ``lsquic_stream_pwritev``. ``hq_arr`` is used to roll back -HTTP/3 framing if necessary. (The rollback is the most complicated part -of the ``pwritev`` functionality). - -Event Dispatch -============== - -The "on stream read" and "on stream write" callbacks are part of the -lsquic API. These callbacks are called when the user has registered -interest in reading from or writing to the stream and reading or writing -is possible. - -Calling ``lsquic_stream_wantwrite`` and ``lsquic_stream_wantread`` places -the stream on the corresponding "want to write" and "want to read" list. -These lists are processed by a connection when it's ticked. For each -stream on the list, the internal function -``lsquic_stream_dispatch_read_events`` or -``lsquic_stream_dispatch_write_events``, whichever may be the case. - -Dispatching read events is simple. When ``es_rw_once`` is set, the "on -stream read" callback is called once -- if the stream is readable. -Otherwise, the callback is called in a loop as long as: - -- The stream is readable; - -- The user wants to read from it; and - -- Progress is being made - -Dispatching write events is more complicated due to the following -factors: - -- In addition to calling the "on stream write" callback, the flushing - mechanism also works by using the "want to write" list. - -- When writing occurs, the stream's position on the list may change - -STREAM frames in -================ - -The data gets in from the transport into the stream via -``lsquic_stream_frame_in`` function. The connection calls this function -after parsing a STREAM frame. - -The data from the STREAM frame is stored in one of the two "data in" -modules: ``di_nocopy`` and ``di_hash``. The two are abstracted out behind -``stream->data_in``. - -The "data in" module is used to store incoming stream data. The data is -read from this module using the ``di_get_frame`` function. See the next -section. - -Reading Data -============ - -There are three user-facing stream-reading functions; two of them are -just wrappers around ``"lsquic_stream_readf``. This function performs some -checks (we will cover HTTP mode separately) and calls -``lsquic_stream_readf``, which also performs some checks and calls -``read_data_frames``. This is the only function in the stream module where -data is actually read from the "data in" module. - -Writing Data -============ - -There are four user-facing functions to write to stream, and all of them -are wrappers around ``stream_write``. (``lsquic_stream_pwritev`` is a bit -more involved than the other three, but it's pretty well-commented -- -and the complexity is in the rollback, not writing itself.) - -Small writes get buffered. If the write size plus whatever is buffered -already exceeds the threshold -- which is the size of the largest STREAM -frame that could be fit into a single outgoing packet -- the data is -packetized instead by calling ``stream_write_to_packets``. See the next -section. - -Packetization -============= - -``stream_write_to_packets`` is the only function through which user data -makes it into outgoing packets. There are three ways to write STREAM -frames: - -1. ``stream_write_to_packet_hsk`` - -2. ``stream_write_to_packet_std`` - -3. ``stream_write_to_packet_crypto`` - -The particular function is selected based on connection and stream type -when the stream is first created. - -stream_write_to_packets ------------------------ - -Depending on the need to frame data, a reader is selected. The job of -the reader is to copy user data into the outgoing STREAM frame. In -HTTP/3 mode, HTTP/3 framing is added transparently -- see `Writing -HTTP/3 Streams`_ for more information. - -The while loop is entered if there is user data to be copied or if the -end of the stream has been reached and FIN needs to be written. Note the -threshold check: when writing data from a user call, the threshold is -set and frames smaller than the full packet are not generated. This is -to allow for usage like "write 8KB", "write 8KB", "write 8KB" not to -produce jagged STREAM frames. This way, we utilize the bandwidth most -effectively. When flushing data, the threshold is not set, so even a -1-byte data gets packetized. - -The call ``stream->sm_write_to_packet`` writes data to a single packet. -This packet is allocated by the `Send Controller <#send-controller>`__. -(Depending on when writing is performed, the returned packet may be -placed onto the scheduled queue immediately or it may be a "buffered" -packet. The stream code is oblivious to that.) If the send controller -does not give us a packet, STOP is returned and the while loop exits. An -ERROR should never happen -- this indicates a bug or maybe failure to -allocate memory -- and so the connection is aborted in that case. If -everything is OK, the while loop goes on. - -The ``seen_ok`` check is used to place the connection on the tickable list -on the first successfully packetized STREAM frame. This is so that if -the packet is buffered (meaning that the writing is occurring outside of -the callback mechanism), the connection will be processed (ticked) and -the packets will be scheduled and sent out. - -After the while loop, we conditionally close an outstanding HTTP/3 -frame, save any leftover data, schedule STREAM_BLOCKED or BLOCKED frames -to be sent out if needed, and return the number of user-provided bytes -that were copied into the outgoing packets and into the internal stream -buffer (leftovers). - -Write a single STREAM frame ---------------------------- - -We will examine ``stream_write_to_packet_std`` as it is the most -complicated of these three functions. - -First, we flush the headers stream if necessary -- this is because we -want the HTTP (gQUIC or HTTP/3) headers to be sent before the payload. - -Then, the number of bytes needed to generate a STREAM frame is -calculated. This value depends on the QUIC version, whether we need to -generate HTTP/3 framing, and whether the data to write exists (or we -just need to write an empty STREAM frame with the FIN bit set). - -(Note that the framing check is made to overshoot the estimate for -simplicity. For one, we might not need 3 bytes for the DATA frame, but -only 2. Secondly, there may already be an open HTTP/3 frame in one of -the previous packets and so we don't need to write it at all.) - -Then, a packet is allocated and ``write_stream_frame`` is called. It is in -this function that we finally make the call to generate the STREAM frame -and to copy the data from the user. The function ``pf_gen_stream_frame`` -returns the number of bytes actually written to the packet: this -includes both the STREAM frame header and the payload (which may also -include HTTP/3 frame). - -The fact that this frame type has been written is added to -``po_frame_types`` and the STREAM frame location, type, and size are -recorded. This information is necessary to be able to elide the frame -from the packet in case the stream is reset. - -``PO_STREAM_END`` is set if the STREAM frame extends to the end of the -packet. This is done to prevent this packet from being used again to -append frames to it (after, for example, some preceding frames are -elided from it). This is because both in gQUIC and IETF QUIC the STREAM -frame header is likely to omit the ``length`` field and instead use the -"extends to the end of the packet" field. If frames are shifted, the -packet cannot be appended to because it will lead to data loss and -corruption. - -Writing HTTP/3 Streams -====================== - -HTTP/3 streams use framing. In most cases, a single HEADERS frame is -followed by zero or more DATA frames. The user code does not know this: -both gQUIC and IETF QUIC streams appear to behave in exactly the same -manner. This makes lsquic simple to use. - -The drawback is internal complexity. To make the code both easy to use -and performant, HTTP/3 framing is generated on-the-fly, as data is being -written to packets (as opposed to being buffered and then written). (OK, -*mostly* on-the-fly: the HEADERS frame payload is generated and then -copied.) - -On the high level, the way it works is as follows: - -- When a write call is made, a variable-size (that is, unknown size; - it's called variable-size because the size of the DATA header may - be 2 or 3 bytes; it's not the best name in the world) frame is - opened/activated. - -- When data is written to stream, the DATA header placeholder bytes are - written to the stream transparently and a pointer is saved to this - location. - -- The active frame header is closed when - - - It reaches its maximum size; or - - - The data we are writing runs out. - -- When the header is closed, the number of bytes that follows is now - written to the location we saved when the header was activated. - -This mechanism allows us to create a DATA frame that spans several -packets before we know how many packets there will be in a single write. -(As outgoing packet allocation is governed by the `Send Controller`_.) -This is done to minimize the goodput overhead incurred by the DATA frame header. - -.. image:: stream-http3-framing.png - -There are a couple of things that do not fit into this model: - -1. The HEADERS frame is fixed size [1]_. It is generated separately - (written by QPACK encoder into a buffer on the stack) and later - copied into the stream. (See the ``send_headers_ietf`` function.) It - can happen that the whole buffer cannot be written. In that case, - a rather complicated dance of buffering the unwritten HEADERS - frame bytes is performed. Here, the "on stream write" callback is - replaced with an internal callback (see the ``select_on_write`` - function) and user interaction is prohibited until the whole of - the HEADERS frame is written to the stream. - -2. Push promise streams are even weirder. In addition to the HEADERS - handling above, the push promise stream must begin with a - variable-integer Push ID. To make this fit into the framed stream - model, the code makes up the concept of a "phantom" HTTP/3 frame. - This type of frame's header is not written. This allows us to - treat the Push ID as the payload of a regular HTTP/3 frame. - -The framing code has had its share of bugs. Because of that, there is a -dedicated unit test program just for the framing code, -*tests/test_h3_framing.c*. In addition to manually-written tests, the -program has a "fuzzer driver" mode, in which the American Fuzzy Lop -fuzzer drives the testing of the HTTP/3 framing mechanism. The advantage -of this approach is that AFL tries to explore all the code paths. - - -Debates regarding DATA framing raged in 2018 on the QUIC mailing list. -Some of the discussion is quite interesting: for example, the debate about -"optimizing" DATA frames and `calculations of the header -cost `__. - -Reading HTTP/3 Streams -====================== - -HTTP/3 frame headers are stripped out transparently -- they are never -seen by the user. From the user's perspective, the lsquic stream -represents the payload of HTTP message; a dedicated call is made first -to get at the HTTP headers. - -To accomplish this, the stream implements a generic deframing mechanism. -The `stream_filter_if`_ interface allows one to -specify functions to a) check whether the stream is readable, b) strip -header bytes from a data frame fetched from "data in" module; and c) -update byte count in the filter once bytes have been read: - -hq_filter_readable ------------------- - -This function tests for availability of non-frame-header data, stripping -frame headers from the stream transparently. Note how it calls -``read_data_frames`` with its own callback, ``hq_read``. It is inside this -callback that the HEADERS frame is fed to the QPACK decoder. - -hq_filter_df ------------- - -This function's job is to strip framing from data frames returned by the -"data in" module inside the ``read_data_frames`` function. It, too, calls -the ``hq_read`` function. This allows the two functions that read from -stream (this one) and the readability-checking function -(``hq_filter_readable``) to share the same state. This is crucial: -Otherwise this approach is not likely to work well. - -hq_decr_left ------------- - -This function is needed to update the filter state. Once all payload -bytes from the frame have been consumed, the filter is readied to strip -the next frame header again. - -.. _notable-code-1: - -Notable Code -============ - -frame_hq_gen_read ------------------ - -This is where HTTP/3 frame headers are generated. Note the use of -``shf_frame_ptr`` to record the memory location to which the correct frame -size will be written by a different function. - -Parsing -******* - -*Files: lsquic_parse.h, lsquic_parse_ietf_v1.c, lsquic_parse_Q050.c, lsquic_parse_Q046.c, -lsquic_parse_gquic_be.c, lsquic_parse_common.c, and others* - -Overview -======== - -The two types of QUIC -- gQUIC and IETF QUIC -- have different packet and -frame formats. In addition, different gQUIC version are different among -themselves. Functions to parse and generate packets and frames of each -type are abstracted out behind the rather large ``struct parse_funcs``. -When a connection is created, its ``cn_pf`` member is set to point to -the correct set of function pointers via the ``select_pf_by_ver()`` macro. - -Parsing Packets -=============== - -Before settling on a particular set of parsing function for a connection, -the server needs to determine the connection's version. It does so using -the function ``lsquic_parse_packet_in_server_begin()``. - -This function figures out whether the packet has a long or a short header, -and which QUIC version it is. Because the server deals with fewer packet -types than the client (no version negotiation or stateless retry packets), -it can determine the necessary parsing function from the first byte of the -incoming packet. - -The "begin" in the name of the function refers to the fact that packet -parsing is a two-step process [3]_. In the first step, the packet version, -CID, and some other parameters are parsed out; in the second step, -version-specific ``pf_parse_packet_in_finish()`` is called to parse out -the packet number. Between the two calls, the state is saved in -``struct packin_parse_state``. - -Generating Packets -================== - -Packets are generated during encryption using the ``pf_gen_reg_pkt_header()`` -function. The generated header is encrypted together with the `packet payload`_ -and this becomes the QUIC packet that is sent out. (Most of the time, the -QUIC packet corresponds to the UDP datagram, but sometimes packets are -`coalesced <#packet-coalescing>`__. - -Parsing Frames -============== - -There is a parsing function for each frame type. These function generally -have names that begin with "pf_parse\_" and follow a similar pattern: - -- The first argument is the buffer to be parsed; - -- The second argument is its size; - -- Any additional arguments are outputs: the parsed out values from the frame; - -- Number of bytes consumed is returned or a negative value is returned - if a parsing error occurred. - -For example: - -:: - - int - (*pf_parse_stream_frame) (const unsigned char *buf, size_t rem_packet_sz, - struct stream_frame *); - - int - (*pf_parse_max_data) (const unsigned char *, size_t, uint64_t *); - -Generating Frames -================= - -Functions that generate frames begin with "pf_gen\_" and also follow a -pattern: - -- First argument is the buffer to be written to; - -- The second argument is the buffer size; - -- Any additional arguments specify the values to include in the frame; - -- The size of the resulting frame is returned or a negative value if - an error occurred. - -For example: - -:: - - int - (*pf_gen_path_chal_frame) (unsigned char *, size_t, uint64_t chal); - - int - (*pf_gen_stream_frame) (unsigned char *buf, size_t bufsz, - lsquic_stream_id_t stream_id, uint64_t offset, - int fin, size_t size, gsf_read_f, void *stream); - -Frame Types -=========== - -Frame types are listed in ``enum quic_frame_type``. When frames are parsed, -the on-the-wire frame type is translated to the enum value; when frames are -generated, the enum is converted to the on-the-wire format. This indirection -is convenient, as it limits the range of possible QUIC frame values, making -it possible to store a list of frame types as a bitmask. Examples include -``po_frame_types`` and ``sc_retx_frames``. - -Some frame types, such as ACK and STREAM, are common to both Google and IETF -QUIC. Others, such as STOP_WAITING and RETIRE_CONNECTION_ID, are only used -in one of the protocols. The third type is frames that are used by IETF -QUIC extensions, such as TIMESTAMP and ACK_FREQUENCY. - -Parsing IETF QUIC Frame Types ------------------------------ - -Most IETF frame types are encoded as a single by on the wire (and all Google -QUIC frames are). Some of them are encoded using multiple bytes. This is -because, like the vast majority of all integral values in IETF QUIC, the frame -type is encoded as a varint. Unlike the other integral values, however, the -frame type has the unique property is that it must be encoded using the -*minimal representation*: that is, the encoding must use the minimum number -of bytes possible. For example, encoding the value 200 must use the two-byte -varint, not four- or eight-byte version. This makes it possible to parse -frame types once without having to reparse the frame type again in individual -frame-parsing routines. - -Frame type is parsed out in ``ietf_v1_parse_frame_type()``. Because of the -minimal encoding requirement, the corresponding frame-parsing functions know -the number of bytes to skip for type, for example: - - -:: - - static int - ietf_v1_parse_frame_with_varints (const unsigned char *buf, size_t len, - const uint64_t frame_type, unsigned count, uint64_t *vals[]) - { - /* --- 8< --- code removed */ - vbits = vint_val2bits(frame_type); - p += 1 << vbits; // <=== SKIP FRAME TYPE - /* --- 8< --- code removed */ - } - - static int - ietf_v1_parse_timestamp_frame (const unsigned char *buf, - size_t buf_len, uint64_t *timestamp) - { - return ietf_v1_parse_frame_with_varints(buf, buf_len, - FRAME_TYPE_TIMESTAMP, 1, (uint64_t *[]) { timestamp }); - } - - -Mini vs Full Connections -************************ - -Mini Purpose -============ - -The reason for having a mini connection is to conserve resources: a mini -connection allocates a much smaller amount of memory. This protects the -server from a potential DoS attack. The mini connection's job is to get -the handshake to succeed, after which the connection is -`promoted <#connection-promotion>`__. - -Mini/Full Differences -===================== - -Besides their size, the two connection types differ in the following -ways: - -Mini connections' lifespan is limited. If the handshake does not succeed -within 10 seconds (configurable), the mini connection is destroyed. - -A mini connection is only `tickable <#tickability>`__ if it has unsent -packets. - -Mini connections do not process packets that carry application (as -opposed to handshake) data. The 0-RTT packet processing is deferred; -these packets are stashed and handed over to the full connection during -promotion. - -Connection Promotion -==================== - -A mini connection is promoted when the handshake succeeds. The mini -connection reports this via the return status of ``ci_tick`` by setting -the ``TICK_PROMOTE`` bit. The engine creates a new connection object and -calls the corresponding server constructor. The latter copies all the -relevant state information from mini to full connection. - -For a time, two connection objects -- one mini and one full -- exist at -the same state. Most of the time, the mini connection is destroyed -within the same function call to ``process_connections()``. If, however, -the mini connection has unsent packets, it will remain live until those -packets are sent successfully. Because the mini connection is by then -removed from the CID-to-connection hash (``engine->conns_hash``), it will -not receive any more incoming packets. - -Also see `Connection Processing <#processing-connections>`__. - -Mini gQUIC Connection -********************* - -*Files: lsquic_mini_conn.h, lsquic_mini_conn.c* - -.. _overview-1: - -Overview -======== - -The original version of ``struct mini_conn`` fit into paltry 128 bytes. -The desire to fit into 128 bytes [2]_ led to, for example, -``mc_largest_recv`` -- in effect, a 3-byte integer! Since that time, -the mini conn has grown to over 512 bytes. - -Looking at the struct, we can see that a lot of other data structures -are squeezed into small fields: - -Received and sent packet history is each packed into a 64-bit integer, -``mc_received_packnos`` and ``mc_sent_packnos``, respectively. The HEADERS -stream offsets are handled by the two two-byte integers ``mc_read_off`` -and ``mc_write_off``. - -.. _notable-code-2: - -Notable Code -============ - -continue_handshake ------------------- - -This function constructs a contiguous buffer with all the HANDSHAKE -stream chunks in order and passes it to ``esf_handle_chlo()``. This is -done because the gQUIC crypto module does not buffer anything: it's all -or nothing. - -The code has been written in a generic way, so that even -many small packets can be reconstructed into a CHLO. The lsquic client -can be made to split the CHLO by setting the max packet size -sufficiently low. - -sent/unsent packets -------------------- - -To conserve space, only a single outgoing packet header exists in the -mini connection struct, ``mc_packets_out``. To differentiate between -packets that are to be sent and those that have already been sent, the -``PO_SENT`` flag is used. - -Mini IETF Connection -******************** - -*Files: lsquic_mini_conn_ietf.h, lsquic_mini_conn_ietf.c* - -.. _overview-2: - -Overview -======== - -The IETF QUIC mini connection has the same idea as the gQUIC mini -connection: use as little memory as possible. This is more difficult to -do with the IETF QUIC, however, as there are more moving parts in this -version of the protocol. - -.. _data-structures-2: - -Data Structures -=============== - -mini_crypto_stream ------------------- - -This structure is a minimal representation of a stream. The IETF QUIC -protocol uses up to four HANDSHAKE streams (one for each encryption -level) during the handshake and we need to keep track of them. Even a -basic event dispatch mechanism is supported. - -packno_set_t ------------- - -This bitmask is used to keep track of sent, received, and acknowledged -packet numbers. It can support up to 64 packet numbers: 0 through 63. We -assume that the server will not need to send more than 64 packets to -complete the handshake. - -imc_recvd_packnos ------------------ - -Because the client is allowed to start its packet number sequence with -any number in the [0, 2\ :sup:`32`-1] range, the received packet history -must be able to accommodate numbers larger than 63. To do that, the -receive history is a union. If all received packet numbers are 63 or -smaller, the packno_set_t bitmask is used. Otherwise, the receive -history is kept in `Tiny Receive History <#tiny-receive-history>`__ -(trechist). The flag ``IMC_TRECHIST`` indicates which data structure is -used. - -ietf_mini_conn --------------- - -This structure is similar to the gQUIC mini conn. It is larger, though, -as it needs to keep track of several instances of things based on -encryption level or packet number space. - -``imc_cces`` can hold up to three SCIDs: one for the original DCID from -the client, one for SCID generated by the server, and one for when -preferred address transport parameter is used. (The preferred address -functionality is not compiled by default.) - -ietf_mini_rechist ------------------ - -The receive history is in the header file because, in addition to -generating the ACK frames in the IETF mini conn, it is used to migrate -the receive history during promotion. - -.. _notable-code-3: - -Notable Code -============ - -Switching to trechist ---------------------- - -The switch to the Tiny Receive History happens when the incoming packet -number does not fit into the bitmask anymore -- see -``imico_switch_to_trechist()``. To keep the trechist code exercised, about -one in every 16 mini connection uses trechist unconditionally -- see -``lsquic_mini_conn_ietf_new()``. - -crypto_stream_if ----------------- - -A set of functions to drive reading and writing CRYPTO frames to move -the handshake along is specified. It is passed to the crypto session. -After promotion, the full connection installs its own function pointers. - -imico_read_chlo_size --------------------- - -This function reads the first few bytes of the first CRYPTO frame on the -first HANDSHAKE stream to figure out the size of ClientHello. The -transport parameters will not be read until the full ClientHello is -available. - - -Duplicated Code ---------------- - -Some code has been copied from gQUIC mini connection. This was done on -purpose, with the expectation that gQUIC is going away. - -ECN Blackhole Detection ------------------------ - -ECN blackhole at the beginning of connection is guessed at when none of -packets sent in the initial batch were acknowledged. This is done by -``imico_get_ecn()``. ``lsquic_mini_conn_ietf_ecn_ok()`` is also used during -promotion to check whether to use ECN. - -Connection Public Interface -*************************** - -*Files: lsquic_conn_public.h* - -TODO - -Full gQUIC Connection -********************* - -*Files: lsquic_full_conn.h, lsquic_full_conn.c* - -.. _overview-3: - -Overview -======== - -The full gQUIC connection implements the Google QUIC protocol, both -server and client side. This is where a large part of the gQUIC protocol -logic is contained and where everything -- engine, streams, sending, -event dispatch -- is tied together. - -Components -========== - -In this section, each member of the ``full_conn`` structure is documented. - -fc_conn -------- - -The first member of the struct is the common connection object, -`lsquic_conn`_. - -It must be first in the struct because the two pointer are cast to each -other, depending on circumstances. - -fc_cces -------- - -This array holds two connection CID elements. - -The reason for having two elements in this array instead of one (even -though gQUIC only uses one CID) is for the benefit of the client: In -some circumstances, the client connections are hashed by the port -number, in which case the second element is used to hash the port value. -The relevant code is in lsquic_engine.c - -fc_rechist ----------- - -This member holds the `packet receive history <#receive-history>`__. It -is used to generate ACK frames. - -fc_stream_ifs -------------- - -This three-element array holds pointers to stream callbacks and the -stream callback contexts. - -From the perspective of lsquic, Google QUIC has three stream types: - -1. HANDSHAKE stream; - -2. HEADERS stream; and - -3. Regular (message, or request/response) streams. - -The user provides stream callbacks and the context for the regular -streams (3) in ``ea_stream_if`` and ``ea_stream_if_ctx``. - -The other two stream types are internal. The full connection specifies -internal callbacks for those streams. One set handles the handshake and -the other handles reading and writing of HTTP/2 frames: SETTINGS, -HEADERS, and so on. - -fc_send_ctl ------------ - -This is the `Send Controller <#send-controller>`__. It is used to -allocate outgoing packets, control sending rate, and process -acknowledgements. - -fc_pub ------- - -This member holds the `Connection Public -Interface <#connection-public-interface>`__. - -fc_alset --------- - -This is the `Alarm Set <#alarm-set>`__. It is used to set various timers -in the connection and the send controller. - -fc_closed_stream_ids --------------------- - -The two sets in this array hold the IDs of closed streams. - -There are two of them because of the uneven distribution of stream IDs. -It is more efficient to hold even and odd stream IDs in separate -structures. - -fc_settings ------------ - -Pointer to the engine settings. - -This member is superfluous -- the settings can be fetched from -``fc_enpub->enp_settings``. - -fc_enpub --------- - -This points to the `engine's public interface <#lsquic-engine-public>`__. - -fc_max_ack_packno ------------------ - -Recording the maximum packet number that contained an ACK allows us to -ignore old ACKs. - -fc_max_swf_packno ------------------ - -This is the maximum packet number that contained a STOP_WAITING frame. -It is used to ignore old STOP_WAITING frames. - -fc_mem_logged_last ------------------- - -This timestamp is used to limit logging the amount of memory used to -most once per second. - -fc_cfg ------- - -This structure holds a few important configuration parameters. (Looks -like ``max_conn_send`` is no longer used…) - -fc_flags --------- - -The flags hold various boolean indicators associated with the full -connections. Some of them, such as ``FC_SERVER``, never change, while -others change all the time. - -fc_n_slack_akbl ---------------- - -This is the number of ackable (or, in the new parlance, *ack-eliciting*) -packets received since the last ACK was sent. - -This counter is used to decide whether an ACK should be sent (or, more -precisely, queued to be sent) immediately or whether to wait. - -fc_n_delayed_streams --------------------- - -Count how many streams have been delayed. - -When ``lsquic_conn_make_stream()`` is called, a stream may not be created -immediately. It is delayed if creating a stream would go over the -maximum number of stream allowed by peer. - -fc_n_cons_unretx ----------------- - -Counts how many consecutive unretransmittable packets have been sent. - - -fc_last_stream_id ------------------ - -ID of the last created stream. - -Used to assign ID to streams created by this side of the connection. -Clients create odd-numbered streams, while servers initiate -even-numbered streams (push promises). - -fc_max_peer_stream_id ---------------------- - -Maximum value of stream ID created by peer. - -fc_goaway_stream_id -------------------- - -Stream ID received in the GOAWAY frame. - -This ID is used to reset locally-initiated streams with ID larger than -this. - -fc_ver_neg ----------- - -This structure holds the version negotiation state. - -This is used by the client to negotiate with the server. - - -With gQUIC going away, it is probably not very important anymore. - -fc_hsk_ctx ----------- - -Handshake context for the HANDSHAKE stream. - -Client and server have different HANDSHAKE stream handlers -- and -therefore different contexts. - -fc_stats --------- - -Connection stats - -fc_last_stats -------------- - -Snapshot of connection stats - -This is used to log the changes in counters between calls to -``ci_log_stats()``. The calculation is straightforward in -``lsquic_conn_stats_diff()``. - -fc_stream_histories and fc_stream_hist_idx ------------------------------------------- - -Rolling log of histories of closed streams - - -fc_errmsg ---------- - -Error message associated with connection termination - -This is set when the connection is aborted for some reason. This error -message is only set once. It is used only to set the error message in -the call to ``ci_status()`` - -fc_recent_packets ------------------ - -Dual ring-buffer log of packet history - -The first element is for incoming packets, the second is for outgoing -packets. Each entry holds received or sent time and frame information. - -This can be used for debugging. It is only compiled into debug builds. - -fc_stream_ids_to_reset ----------------------- - -List of stream ID to send STREAM_RESET for - -These STREAM_RESET frames are associated with streams that are not -allowed to be created because we sent a GOAWAY frame. (There is a period -when GOAWAY is in transit, but the peer keeps on creating streams). To -queue the reset frames for such a stream, an element is added to this -list. - -fc_saved_ack_received ---------------------- - -Timestamp of the last received ACK. - -This is used for `ACK merging <#ack-merging>`__. - -fc_path -------- - -The network path -- Google QUIC only has one network path. - -fc_orig_versions ----------------- - -List (as bitmask) of original versions supplied to the client -constructor. - -Used for version negotiation. See `fc_ver_neg`_ for more -coverage of this topic. - -fc_crypto_enc_level -------------------- - -Latest crypto level - -This is for Q050 only, which does away with the HANDSHAKE stream and -uses CRYPTO frames instead. (This was part of Google's plan to move -Google QUIC protocol closer to IETF QUIC.) - -fc_ack ------- - -Saved ACK -- latest or merged - -This ACK structure is used in `ACK merging <#ack-merging>`__. - -Instantiation -============= - -The largest difference between the server and client mode of the full -connection is in the way it is created. The client creates a brand-new -connection, performs version negotiation, and runs the handshake before -dispatching user events. The server connection, on the other hand, gets -created from a mini connection during `connection -promotion <#connection-promotion>`__. By that time, both version -negotiation and handshake have already completed. - -Common Initialization ---------------------- - -The ``new_conn_common()`` function contains initialization common to both -server and client. Most full connection's internal data structures are -initialized or allocated here, among them `Send -Controller <#send-controller>`__, `Receive -History <#receive-history>`__, and `Alarm Set <#alarm-set>`__. - -The HEADERS stream is created here, if necessary. (Throughout the code, -you can see checks whether the connection is in HTTP mode or not. Even -though gQUIC means that HTTP is used, our library supports a non-HTTP -mode, in which there is no HEADERS stream. This was done for testing -purposes and made possible the echo and md5 client and server programs.) - -Server ------- - -After initializing the common structures in ``new_conn_common()``, -server-specific initialization continues in -``lsquic_gquic_full_conn_server_new()``. - -The HANDSHAKE stream is created. The handler (see -``lsquic_server_hsk_stream_if``) simply throws out data that it reads from -the client. - -Outgoing packets are inherited -- they will be sent during the next tick --- and deferred incoming packets are processed. - -Client ------- - -The client's initialization takes place in -``lsquic_gquic_full_conn_client_new()``. Crypto session is created and the -HANDSHAKE stream is initialized. The handlers in -``lsquic_client_hsk_stream_if`` drive the handshake process. - -Incoming Packets -================ - -The entry point for incoming packets is ``ci_packet_in()``, which is -implemented by ``full_conn_ci_packet_in``. Receiving a packet restarts the -idle timer. - -The function ``process_incoming_packet`` contains some client-only logic -for processing version negotiation and stateless retry packets. In the -normal case, ``process_regular_packet()`` is called. This is where the -incoming packet is decrypted, the `Receive -History <#receive-history>`__ is updated, ``parse_regular_packet()`` is -called, and some post-processing takes place (most importantly, -scheduling an ACK to be sent). - -The function ``parse_regular_packet`` is simple: It iterates over the -whole decrypted payload of the incoming packet and parses out frames one -by one. An error aborts the connection. - -ACK Merging -=========== - -Processing ACKs is `expensive <#handling-acks>`__. When sending data, a -batch of incoming packets is likely to contain an ACK frame each. The -ACK frame handler, ``process_ack_frame()``, merges consecutive ACK frames -and stores the result in `fc_ack`_. The ACK is processed -during the `next tick <#ticking>`__. If the two ACK cannot be merged -(which is unlikely), the cached ACK is processed immediately and the new -ACK is cached. - -Caching an ACK has a non-trivial memory cost: the 4KB-plus data -structure ``ack_info`` accounts for more than half of the size of the -``full_conn`` struct. Nevertheless, the tradeoff is well worth it. ACK -merging reduces the number of calls to ``lsquic_send_ctl_got_ack()`` by a -factor of 10 or 20 in some high-throughput scenarios. - -Ticking -======= - -When a `connection is processed by the -engine <#processing-connections>`__, the engine calls the connection's -``ci_tick()`` method. This is where most of the connection logic is -exercised. In the full gQUIC connection, this method is implemented by -``full_conn_ci_tick()``. - -The following steps are performed: - -- A cached ACK, if it exists, is processed - -- Expired alarms are rung - -- Stream read events are dispatched - -- An ACK frame is generated if necessary - -- Other control frames are generated if necessary - -- Lost packets are rescheduled - -- More control frames and stream resets are generated if necessary - -- HEADERS stream is flushed - -- Outgoing packets that carry stream data are scheduled in four steps: - - a. High-priority `buffered packets <#buffered-queue>`__ are scheduled - - b. Write events are dispatched for high-priority streams - - c. Non-high-priority buffered packets are scheduled - - d. Write events are dispatched for non-high-priority streams - -- Connection close or PING frames are generated if necessary - -- Streams are serviced (closed, freed, created) - -Full IETF Connection -******************** - -*Files: lsquic_full_conn_ietf.h, lsquic_full_conn_ietf.c* - -Overview -======== - -This module implements IETF QUIC -`Transport `_ -and -`HTTP/3 `_ logic, -plus several QUIC extensions. To attain an overall grasp of the code, -at least some familiarity with these protocols is required. To understand -the code in detail, especially *why* some things are done, a closer reading -of the specification may be in order. - -In some places, the code contains comments with references to the -specification, e.g. - -:: - - if (conn->ifc_flags & IFC_SERVER) - { /* [draft-ietf-quic-transport-34] Section 19.7 */ - ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, - "received unexpected NEW_TOKEN frame"); - return 0; - } - -(A search for "[draft-ietf" will reveal over one hundred places in the -code thus commented.) - -The Full IETF Connection module is similar in structure to the `Full gQUIC -Connection`_ module, from which it originated. Some code is quite similar -as well, including logic for `ACK Merging`_ and `Ticking`_. - -Components -========== - -In this section, each member of ``ietf_full_conn`` is documented. - -ifc_conn --------- - -The first member of the struct is the common connection object, -`lsquic_conn`_. - -It must be first in the struct because the two pointer are cast to each -other, depending on circumstances. - -ifc_cces --------- - -This array holds eight connection CID elements. -See `Managing SCIDs`_. - -ifc_rechist ------------ - -This member holds the `packet receive history <#receive-history>`__. -The receive history is used to generate ACK frames. - -ifc_max_ackable_packno_in -------------------------- - -This value is used to detect holes in incoming packet number sequence. -This information is used to queue ACK frames. - -ifc_send_ctl ------------- - -This is the `Send Controller`_. It is used to -allocate outgoing packets, control sending rate, and process -acknowledgements. - -ifc_pub -------- - -This member holds the `Connection Public Interface`_ - -ifc_alset ---------- - -This is the `Alarm Set`_. It is used to set various timers -in the connection and the send controller. - -ifc_closed_stream_ids ---------------------- - -The two sets in this array hold the IDs of closed streams. - -There are two of them because of the uneven distribution of stream IDs. -The set data structure is meant to hold sequences without gaps. -It is more efficient to hold stream IDs for each stream type in -separate structures. - -ifc_n_created_streams ---------------------- - -Counters for locally initiated streams. Used to generate next -stream ID. - -ifc_max_allowed_stream_id -------------------------- - -Maximum allowed stream ID for each of the four (``N_SITS``) stream types. -This is used all over the place. - -ifc_closed_peer_streams ------------------------ - -Counts how many remotely-initiated streams have been closed. Because the -protocol mandates that the stream IDs be assigned in order, this allows us -to make some logical inferences in the code. - -ifc_max_streams_in ------------------- - -Maximum number of open streams the peer is allowed to initiate. - -ifc_max_stream_data_uni ------------------------ - -Initial value of the maximum amount of data locally-initiated unidirectional -stream is allowed to send. - -ifc_flags ---------- - -All kinds of flags. - -ifc_mflags ----------- - -More flags! - -ifc_send_flags --------------- - -The send flags keep track of which control frames are queued to be sent. - -ifc_delayed_send ----------------- - -Some send flags are delayed. - -We stop issuing streams credits if peer stops opening QPACK decoder window. -This addresses a potential attack whereby client can cause the server to keep -allocating memory. See `Security Considerations in the QPACK Internet-Draft -`__. - -ifc_send --------- - -This is the `Send Controller`_. It is used to allocate outgoing packets, -control sending rate, and process acknowledgements. - -ifc_error ---------- - -This struct records which type of error has occurred (transport or application)' -and the error code. - -ifc_n_delayed_streams ---------------------- - -Count how many streams have been delayed. - -When ``lsquic_conn_make_stream()`` is called, a stream may not be created -immediately. It is delayed if creating a stream would go over the -maximum number of stream allowed by peer. - -ifc_n_cons_unretx ------------------ - -Counts how many consecutive unretransmittable packets have been sent. - -Enough unretransittable sent packets in a row causes a PING frame to -be sent. This forces the peer to send an ACK. - -ifc_pii -------- - -Points to the selected priority iterator. - -The IETF Full Connection supports two priority mechanisms: the original -Google QUIC priority mechanism and the `HTTP/3 Extensible Priorities -`__. - -ifc_errmsg ----------- - -Holds dynamically generated error message string. - -Once set, the error string does not change until the connection is -destroyed. - -ifc_enpub ---------- - -This points to the `engine's public interface <#lsquic-engine-public>`__. - -ifc_settings ------------- - -Pointer to the engine settings. - -This member is superfluous -- the settings can be fetched from -``ifc_enpub->enp_settings``. - -ifc_stream_ids_to_ss --------------------- - -Holds a queue of STOP_SENDING frames to send as response to remotely -initiated streams that came in after we sent a GOAWAY frame. - -ifc_created ------------ - -Time when the connection was created. This is used for the Timestamp -and Delayed ACKs extensions. - -ifc_saved_ack_received ----------------------- - -Time when cached ACK frame was received. See `ACK Merging`_. - -ifc_max_ack_packno ------------------- - -Holding the maximum packet number containing an ACK frame allows us -to ignore old ACK frames. One value per Packet Number Space is kept. - -ifc_max_non_probing -------------------- - -Maximum packet number of a received non-probing packets. This is used -for path migration. - -ifc_cfg -------- - -Local copy of a couple of transport parameters. We could get at them -with a function call, but these are used often enough to optimize -fetching them. - -ifc_process_incoming_packet ---------------------------- - -The client goes through version negotiation and the switches to the -fast function. The server begins to use the fast function immediately. - -ifc_n_slack_akbl ----------------- - -Number ackable packets received since last ACK was sent. A count is -kept for each Packet Number Space. - -ifc_n_slack_all ---------------- - -Count of all packets received since last ACK was sent. This is only -used in the Application PNS (Packet Number Space). (This is regular -PNS after the handshake completes). - -ifc_max_retx_since_last_ack ---------------------------- - -This number is the maximum number of ack-eliciting packets to receive -before an ACK must be sent. - -The default value is 2. When the Delayed ACKs extension is used, this -value gets modified by peer's ACK_FREQUENCY frames. - -ifc_max_ack_delay ------------------ - -Maximum amount of allowed after before an ACK is sent if the threshold -defined by ifc_max_retx_since_last_ack_ has not yet been reached. - -The default value is 25 ms. When the Delayed ACKs extension is used, this -value gets modified by peer's ACK_FREQUENCY frames. - -ifc_ecn_counts_in ------------------ - -Incoming ECN counts in each of the Packet Number Spaces. These counts -are used to generate ACK frames. - -ifc_max_req_id --------------- - -Keeps track of the maximum ID of bidirectional stream ID initiated by the -peers. It is used to construct the GOAWAY frame. - -ifc_hcso --------- - -State for outgoing HTTP/3 control stream. - -ifc_hcsi --------- - -State for incoming HTTP/3 control stream. - -ifc_qeh -------- - -QPACK encoder streams handler. - -The handler owns two unidirectional streams: a) locally-initiated QPACK -encoder stream, to which it writes; and b) peer-initiated QPACK decoder -stream, from which it reads. - -ifc_qdh -------- - -QPACK decoder streams handler. - -The handler owns two unidirectional streams: a) peer-initiated QPACK -encoder stream, from which it reads; and b) locally-initiated QPACK -decoder stream, to which it writes. - -ifc_peer_hq_settings --------------------- - -Peer's HTTP/3 settings. - -ifc_dces --------- - -List of destination connection ID elements (DCEs). Each holds a DCID -and the associated stateless reset token. When lsquic uses a DCID, it -inserts the stateless reset token into a hash so that stateless resets -can be found. - -Outside of the initial migration, the lsquic client code does not switch -DCIDs. One idea (suggested in the drafts somewhere) is to switch DCIDs -after a period of inactivity. - -ifc_to_retire -------------- - -List of DCIDs to retire. - -ifc_scid_seqno --------------- - -Sequence generator for SCIDs generated by the endpoint. - -ifc_scid_timestamp ------------------- - -List of timestamps for the generated SCIDs. - -This list is used in the SCID rate-limiting mechanism. - - -ifc_incoming_ecn ----------------- - -History indicating presence of ECN markings on most recent incoming packets. - -ifc_cur_path_id ---------------- - -Current path ID -- indexes `ifc_paths`_. - -ifc_used_paths --------------- - -Bitmask of which paths in `ifc_paths`_ are being used. - -ifc_mig_path_id ---------------- - -Path ID of the path being migrated to. - -ifc_active_cids_limit ---------------------- - -This is the maximum number of CIDs at any one time this -endpoint is allowed to issue to peer. If the TP value exceeds ``cn_n_cces``, -it is reduced to it. - -ifc_active_cids_count ---------------------- - -This value tracks how many CIDs have been issued. It is decremented -each time a CID is retired. - -ifc_first_active_cid_seqno --------------------------- - -Another piece of the SCID rate-limiting mechanism. - -ifc_ping_unretx_thresh ----------------------- - -Once the number consecutively sent non-ack-elicing packets -(`ifc_n_cons_unretx`_) exceeds this value, this endpoint will send -a PING frame to force the peer to respond with an ACK. - -The threshold begins at 20 and then made to fluctuate randomly between -12 and 27. - -ifc_last_retire_prior_to ------------------------- - -Records the maximum value of ``Retire Prior To`` value of the -`NEW_CONNECTION_ID frame -`_. - -ifc_ack_freq_seqno ------------------- - -Sequence number generator for ACK_FREQUENCY frames generated by this -endpoint. - -ifc_last_pack_tol ------------------ - -Last value of the ``Packet Tolerance`` field sent in the last -``ACK_FREQUENCY`` frame generated by this endpoint. - -ifc_last_calc_pack_tol ----------------------- - -Last *calculated* value of the ``Packet Tolerance`` field. - -ifc_min_pack_tol_sent ---------------------- - -Minimum value of the ``Packet Tolerance`` field sent. Only used for -statistics display. - -ifc_max_pack_tol_sent ---------------------- - -Maximum value of the ``Packet Tolerance`` field sent. Only used for -statistics display. - -ifc_max_ack_freq_seqno ----------------------- - -Maximum seen sequence number of incoming ``ACK_FREQUENCY`` frame. Used -to discard old frames. - -ifc_max_udp_payload -------------------- - -Maximum UDP payload. This is the cached value of the transport parameter. - -ifc_last_live_update --------------------- - -Last time ``ea_live_scids()`` was called. - -ifc_paths ---------- - -Array of connection paths. Most of the time, only one path is used; more -are used during `migration <#path-migration>`__. The array has four -elements as a safe upper limit. - -The elements are of type ``struct conn_path``. Besides the network path, -which stores socket addresses and is associated with each outgoing packet -(via ``po_path``), the connection path keeps track of the following -information: - -- Outgoing path challenges. See `Sending Path Challenges`_. - -- Incoming path challenge. - -- Spin bit (``cop_max_packno``, ``cop_spin_bit``, and ``COP_SPIN_BIT``). - -- DPLPMTUD state. - -ifc_u.cli ---------- - -Client-specific state. This is where pointers to "crypto streams" are -stored; they are not in the ``ifc_pub.all_streams`` hash. - -ifc_u.ser ---------- - -The server-specific state is only about push promises. - -ifc_idle_to ------------ - -Idle timeout. - -ifc_ping_period ---------------- - -Ping period. - -ifc_bpus --------- - -A hash of buffered priority updates. It is used when a priority update -(part of the Extensible HTTP Priorities extension) arrives before the -stream it is prioritizing. - -ifc_last_max_data_off_sent --------------------------- - -Value of the last MAX_DATA frame sent. This is used to limit the number -of times we send the MAX_DATA frame in response to a DATA_BLOCKED frame. - -ifc_min_dg_sz -------------- - -Minimum size of the DATAGRAM frame. Used by the eponymous extension. - -ifc_max_dg_sz -------------- - -Maximum size of the DATAGRAM frame. Used by the eponymous extension. - -ifc_pts -------- - -PTS stands for "Packet Tolerance Stats". Information collected here -is used to calculate updates to the packet tolerance advertised to the -peer via ACK_FREQUENCY frames. Part of the Delayed ACKs extension. - -ifc_stats ---------- - -Cumulative connection stats. - -ifc_last_stats --------------- - -Copy of `ifc_stats`_ last time ``ci_log_stats()`` was called. Used -to calculate the difference. - -ifc_ack -------- - -One or more cached incoming ACK frames. Used for `ACK merging`_. - -Managing SCIDs -============== - -Source Connection IDs -- or SCIDs for short -- are stored in the `ifc_cces`_ -array. - -Each of ``struct conn_cid_elem`` contains the CID itself, the CID's port or -sequence number, and flags: - -- ``CCE_USED`` means that this Connection ID has been used by the peer. This - information is used to check whether the peer's incoming packet is using - a new DCID or reusing an old one when the packet's DCID does not match - this path's current DCID. - -- ``CCE_REG`` signifies that the CID has been registered with the user-defined - ``ea_new_scids()`` callback. - -- ``CCE_SEQNO`` means that the connection has been issued by this endpoint - and ``cce_seqno`` contains a valid value. Most of SCIDs are issued by - either endpoint, with one exception: The DCID included in the first few - packets sent by the client becomes an interim SCID for the server and it - does not have a sequence number. This "original" SCID gets retired 2 - seconds after the handshake succeeds, see the ``AL_RET_CIDS`` alarm. - -- ``CCE_PORT`` is used to mark the special case of hashing connections by - port number. In client mode, the lsquic engine may, under some circumstances, - hash the connections by local port number instead of connection ID. - In that case, ``cce_port`` contains the port number used to hash the - connection. - -Each CIDs is hashed in the of the "CID-to-connection" mapping that the engine -maintains. If it is not in the hash, incoming packets that use this CID as -DCID will not be dispatched to the connection (because the connection will not -be found). - -Path Migration -============== - -What follows assumes familiarity with `Section 9 -`__ -of the Transport I-D. - -Server ------- - -The server handles two types of path migration. In the first type, the -client performs probing by sending path challenges; in the second type, -the migration is due to a NAT rebinding. - -The connection keeps track of different paths in `ifc_paths`_. Path -objects are allocated out of the ``ifc_paths`` array. They are of type -``struct conn_path``; one of the members is ``cop_path``, which is the -network path object used to send packets (via ``po_path``). - -Each incoming packet is fed to the engine using the -``lsquic_engine_packet_in()`` function. Along with the UDP datagram, -the local and peer socket addresses are passed to it. These addresses are -eventually passed to the connection via the ``ci_record_addrs()`` call. -The first of these calls -- for the first incoming packet -- determines the -*current path*. When the address pair, which is a four-tuple of local -and remote IP addresses and port numbers, does not match that of the -current path, a new path object is created, triggering migration logic. - -``ci_record_addrs()`` returns a *path ID*, which is simply the index of -the corresponding element in the ``ifc_paths`` array. The current path -ID is stored in ``ifc_cur_path_id``. The engine assigns this value to -the newly created incoming packet (in ``pi_path_id``). The packet is -then passed to ``ci_packet_in()``. - -The first part of the path-switching logic is in ``process_regular_packet()``: - -:: - - case REC_ST_OK: - /* --- 8< --- some code elided... */ - saved_path_id = conn->ifc_cur_path_id; - parse_regular_packet(conn, packet_in); - if (saved_path_id == conn->ifc_cur_path_id) - { - if (conn->ifc_cur_path_id != packet_in->pi_path_id) - { - if (0 != on_new_or_unconfirmed_path(conn, packet_in)) - { - LSQ_DEBUG("path %hhu invalid, cancel any path response " - "on it", packet_in->pi_path_id); - conn->ifc_send_flags &= ~(SF_SEND_PATH_RESP - << packet_in->pi_path_id); - } - -The above means: if the current path has not changed after the packet -was processed, but the packet came in on a different path, then invoke -the "on new or unconfirmed path" logic. This is done this way because -the current path may be have been already changed if the packet contained -a PATH_RESPONSE frame. - -First time a packet is received on a new path, a PATH_CHALLENGE frame is -scheduled. - -If more than one packet received on the new path contain non-probing frames, -the current path is switched: it is assumed that the path change is due to -NAT rebinding. - -Client ------- - -Path migration is controlled by the client. When the client receives -a packet from an unknown server address, it drops the packet on the -floor (per spec). This code is in ``process_regular_packet()``. - -The client can migrate if ``es_allow_migration`` is on (it is in the default -configuration) and the server provides the "preferred_address" transport -parameter. The migration process begins once the handshake is confirmed; -see the ``maybe_start_migration()`` function. The SCID provided by the -server as part of the "preferred_address" transport parameter is used as the -destination CID and path #1 is picked: - - -:: - - copath = &conn->ifc_paths[1]; - migra_begin(conn, copath, dce, (struct sockaddr *) &sockaddr, params); - return BM_MIGRATING; - -In ``migra_begin``, migration state is initiated and sending of a -PATH_CHALLENGE frame is scheduled: - -:: - - conn->ifc_mig_path_id = copath - conn->ifc_paths; - conn->ifc_used_paths |= 1 << conn->ifc_mig_path_id; - conn->ifc_send_flags |= SF_SEND_PATH_CHAL << conn->ifc_mig_path_id; - LSQ_DEBUG("Schedule migration to path %hhu: will send PATH_CHALLENGE", - conn->ifc_mig_path_id); - -Sending Path Challenges ------------------------ - -To send a path challenge, a packet is allocated to be sent on that path, -a new challenge is generated, the PATH_CHALLENGE is written to the -packet, and the packet is scheduled. All this happens in the -``generate_path_chal_frame()`` function. - -:: - - need = conn->ifc_conn.cn_pf->pf_path_chal_frame_size(); - packet_out = get_writeable_packet_on_path(conn, need, &copath->cop_path, 1); - /* --- 8< --- some code elided... */ - w = conn->ifc_conn.cn_pf->pf_gen_path_chal_frame( - packet_out->po_data + packet_out->po_data_sz, - lsquic_packet_out_avail(packet_out), - copath->cop_path_chals[copath->cop_n_chals]); - /* --- 8< --- some code elided... */ - lsquic_alarmset_set(&conn->ifc_alset, AL_PATH_CHAL + path_id, - now + (INITIAL_CHAL_TIMEOUT << (copath->cop_n_chals - 1))); - -If the path response is not received before a timeout, another path challenge -is sent, up to the number of elements in ``cop_path_chals``. The timeout -uses exponential back-off; it is not based on RTT, because the RTT of the -new path is unknown. - -Receiving Path Responses ------------------------- - -When a PATH_RESPONSE frame is received, the path on which the corresponding -challenge was sent may become the new current path. See -``process_path_response_frame()``. - -Note that the path ID of the incoming packet with the PATH_RESPONSE frame is -not taken into account. This is by design: see -`Section 8.2.2 of the Transport I-D -`__. - -Stream Priority Iterators -========================= - -Creating Streams on the Server -============================== - -Calculating Packet Tolerance -============================ - -When the Delayed ACKs extension is used, we advertise our ``Packet Tolerance`` -to peer. This is the number of packets the peer can receive before having to -send an acknowledgement. By default -- without the extension -- the packet -tolerance is 2. - -Because we `merge ACKs <#ack-merging>`__, receiving more than one ACK between -ticks is wasteful. Another consideration is that a packet is not declared -lost until at least one RTT passes -- the time to send a packet and receive -the acknowledgement from peer. - -To calculate the packet tolerance, we use a feedback mechanism: when number -of ACKs per RTT is too high, we increase packet tolerance; when number of -ACKs per RTT is too low, we decrease packet tolerance. The feedback is -implemented with a `PID Controller `__: -the target is the number of ACKs per RTT, normalized to 1.0. - -See the function ``packet_tolerance_alarm_expired()`` as well as comments -in ``lsquic.h`` that explain the normalization as well as the knobs available -for tuning. - -The pre-normalized target is a function of RTT. It was obtained -empirically using netem. This function together with the default -PID controller parameters give good performance in the lab and in -some limited interop testing. - -Anatomy of Outgoing Packet -************************** - -Overview -======== - -The outgoing packet is represented by ``struct lsquic_packet_out``. An -outgoing packet always lives on one -- and only one -- of the -`Send Controller`_'s `Packet Queues`_. For that, ``po_next`` is used. - -Beyond the packet number, stored in ``po_packno``, the packet has several -properties: sent time (``po_sent``), frame information, encryption -level, network path, and others. Several properties are encoded into -one or more bits in the bitmasks ``po_flags`` and ``po_lflags``. -Multibit properties are usually accessed and modified by a special -macro. - -The packet has a pointer to the packetized data in ``po_data``. -If the packet has been encrypted but not yet sent, the encrypted -buffer is pointed to ``po_enc_data``. - -Packet Payload -============== - -The payload consists of the various frames -- STREAM, ACK, and others -- -written, one after another, to ``po_data``. The header, consisting of -the type byte, (optional) connection ID, and the packet number is constructed -when the packet is just about to be sent, during encryption. This -buffer -- header and the encrypted payload are stored in a buffer -pointed to by ``po_enc_data``. - -Because stream data is written directly to the outgoing packet, the -packet is not destroyed when it is declared lost by the `loss detection -logic <#loss-detection-and-retransmission>`__. Instead, it is repackaged -and sent out again as a new packet. Besides assigning the packet a -new number, packet retransmission involves removing non-retransmittable -frames from the packet. (See ``lsquic_packet_out_chop_regen()``.) - -Historically, some places in the code assumed that the frames to be -dropped are always located at the beginning of the ``po_data`` buffer. -(This was before a `frame record <#frame-records>`__ was created for -each frame). The cumulative size of the frames to be removed is in -``po_regen_sz``; this size can be zero. Code that generates -non-retransmittable frames still writes them only to the beginning -of the packet. - -The goal is to drop ``po_regen_sz`` and to begin to write ACK and -other non-retransmittable frames anywhere. This should be possible -to do now (see ``lsquic_packet_out_chop_regen()``, which can support -such use after removing the assertion), but we haven't pulled the -trigger on it yet. Making this change will allow other code to become -simpler: for example, the opportunistic ACKs logic. - -Frame Records -============= - -Each frame written to ``po_data`` has an associated *frame record* stored -in ``po_frecs``: - -:: - - struct frame_rec { - union { - struct lsquic_stream *stream; - uintptr_t data; - } fe_u; - unsigned short fe_off, - fe_len; - enum quic_frame_type fe_frame_type; - }; - -Frame records are primarily used to keep track of the number of unacknowledged -stream frames for a stream. When a packet is acknowledged, the frame records -are iterated over and ``lsquic_stream_acked()`` is called. The second purpose -is to speed up packet resizing, as frame records record the type, position, -and size of a frame. - -Most of the time, a packet will contain a single frame: STREAM on the sender -of data and ACK on the receiver. This use case is optimized: ``po_frecs`` is -a union and when there is only one frame per packets, the frame record is -stored in the packet struct directly. - -Evanescent Connection -********************* - -*Files: lsquic_pr_queue.h, lsquic_pr_queue.c* - -"PR Queue" stands for "Packet Request Queue." This and the Evanescent -Connection object types are explaned below in this section. - -Overview -======== - -Some packets need to be replied to outside of context of existing -mini or full connections: - -1. A version negotiation packet needs to be sent when a packet - arrives that specifies QUIC version that we do not support. - -2. A stateless reset packet needs to be sent when we receive a - packet that does not belong to a known QUIC connection. - - -The replies cannot be sent immediately. They share outgoing -socket with existing connections and must be scheduled according -to prioritization rules. - -The information needed to generate reply packet -- connection ID, -connection context, and the peer address -- is saved in the Packet -Request Queue. - -When it is time to send packets, the connection iterator knows to -call prq_next_conn() when appropriate. What is returned is an -evanescent connection object that disappears as soon as the reply -packet is successfully sent out. - -There are two limits associated with Packet Request Queue: - -1. Maximum number of packet requests that are allowed to be - pending at any one time. This is simply to prevent memory - blowout. - -2. Maximum verneg connection objects to be allocated at any one - time. This number is the same as the maximum batch size in - the engine, because the packet (and, therefore, the connection) - is returned to the Packet Request Queue when it could not be - sent. - -We call this a "request" queue because it describes what we do with -QUIC packets whose version we do not support or those packets that -do not belong to an existing connection: we send a reply for each of -these packets, which effectively makes them "requests." - -Packet Requests -=============== - -When an incoming packet requires a non-connection response, it is added -to the Packet Request Queue. There is a single ``struct pr_queue`` per -engine -- it is instantiated if the engine is in the server mode. - -The packet request is recorded in ``struct packet_req``, which are kept -inside a hash in the PR Queue. The reason for keeping the requests in -a hash is to minimize duplicate responses: If a client hello message -is spread over several incoming packets, only one response carrying the -version negotiation packet (for example) will be sent. - -:: - - struct packet_req - { - struct lsquic_hash_elem pr_hash_el; - lsquic_cid_t pr_scid; - lsquic_cid_t pr_dcid; - enum packet_req_type pr_type; - enum pr_flags { - PR_GQUIC = 1 << 0, - } pr_flags; - enum lsquic_version pr_version; - unsigned pr_rst_sz; - struct network_path pr_path; - }; - -Responses are created on demand. Until that time, everything that is -necessary to generate the response is stored in ``packet_req``. - -Sending Responses -================= - -To make these packets fit into the usual packet-sending loop, -each response is made to resemble a packet -sent by a connecteion. For that, the PR Queue creates a connection -object that only lives for the duration of batching of the packet. -(Hence the connection's name: *evanescent* connection.) This connection -is returned by the ``lsquic_prq_next_conn()`` by the connection iterator -during the `batching process <#batching-packets>`__ - -For simplicity, the response packet is generated in this function as well. -The call to ``ci_next_packet_to_send()`` only returns the pointer to it. - -Send Controller -*************** - -*Files: lsquic_send_ctl.h, lsquic_send_ctl.c* - -.. _overview-4: - -Overview -======== - -The Send Controller manages outgoing packets and the sending rate: - -- It decides whether packets can be sent - -- It figures out what the congestion window is - -- It processes acknowledgements and detects packet losses - -- It allocates packets - -- It maintains sent packet history - -The controller allocates, manages, splits, coalesces, and destroys -outgoing packets. It owns these packets. - -The send controller services two modules: - -- Full connection. gQUIC and IETF full connections use the send - controller to allocate packets and delegate packet-sending - decisions to it. - -- Stream. The stream uses the stream controller as the source of - outgoing packets to write STREAM frames to. - -Packet Life Cycle -================= - -A new outgoing packet is allocated and returned to the connection or the -stream. Around this time (just before or just after, depending on the -particular function call to get the packet), the packet is placed on the -Scheduled Queue. - -When the engine is creating a batch of packets to send, it calls -``ci_next_packet_to_send()``. The connection removes the next packet from -its Scheduled Queue and returns it. The engine now owns the outgoing -packet, but only while the batch is being sent. The engine *always -returns the packet* after it tries to send it. - -If the packet was sent successfully, it is returned via the -``ci_packet_sent`` call, after which it is appended to the Unacked Queue. -If the packet could not be sent, ``ci_packet_not_sent()`` is called, at -which point it is prepended back to the Schedule Queue to be tried -later. - -There are two ways to get off the Unacked Queue: being acknowledged or -being lost. When a packet is acknowledged, it is destroyed. On the other -hand, if it is deemed lost, it is placed onto the Lost Queue, where it -will await being rescheduled. - -Packet Queues -============= - -.. image:: lsquic-packet-queues.png - -Buffered Queue --------------- - -The Buffered Queue is a special case. When writing to the stream occurs -outside of the event dispatch loop, new outgoing packets begin their -life in the Buffered Queue. They get scheduled during a connection tick, -making their way onto the Scheduled Queue. - -There are two buffered queues: one for packets holding STREAM frames -from the highest-priority streams and one for packets for streams with -lower priority. - -Scheduled Queue ---------------- - -Packets on the Scheduled Queue have packet numbers assigned to them. In -rare cases, packets may be removed from this queue before being sent -out. (For example, a stream may be cancelled, in which case packets that -carry its STREAM frames may end up empty.) In that case, they are marked -with a special flag to generate the packet number just before they are -sent. - -Unacked Queue -------------- - -This queue holds packets that have been sent but are yet to be -acknowledged. When a packet on this queue is acknowledged, it is -destroyed. - -The loss detection code runs on this queue when ACKs are received or -when the retransmission timer expires. - -This queue is actually three queues: one for each of the IETF QUIC's -Packet Number Spaces, or PNSs. The PNS_APP queue is what is used by -gQUIC and IETF QUIC server code. PNS_INIT and PNS_HSK are only used by -the IETF QUIC client. (IETF QUIC server handles those packet number -spaces in its mini conn module.) - -In addition to regular packets, the Unacked Queue holds `loss -records <#loss-records>`__ and `poisoned packets <#poisoned-packets>`__. - -Lost Queue ----------- - -This queue holds lost packets. These packets are removed from the -Unacked Queue when it is decided that they have been lost. Packets on -this queue get rescheduled after connection schedules a packet with -control frames, as those have higher priority. - -0-RTT Stash Queue ------------------ - -This queue is used by the client to retransmit packets that carry 0-RTT -data. - -Handling ACKs -============= - -Acknowledgements are processed in the function -``lsquic_send_ctl_got_ack``. - -One of the first things that is done is ACK validation. We confirm that -the ACK does not contain any packet numbers that we did not send. -Because of the way we `generate packet numbers <#packet-numbers>`__, -this check is a simple comparison. - -The nested loops work as follows. The outer loop iterates over the -packets in the Unacked Queue in order -- meaning packet numbers -increase. In other words, older packets are examined first. The inner -loop processes ACK ranges in the ACK *backwards*, meaning that both -loops follow packets in increasing packet number order. It is done this -way as an optimization. The (previous) alternative design of looking -up a packet number in the ACK frame, even if using binary search, is -slower. - -The code is optimized: the inner loop has a minimum possible number of -branches. These optimizations predate the more-recent, higher-level -optimization. The latest ACK-handling optimization added to the code -combines incoming ACKs into a single ACK (at the connection level), thus -reducing the number of times this loop needs to be used by a lot, -sometimes by a significant factor (when lots of data is being sent). -This makes some of the code-level optimizations, such as the use of -``__builtin_prefetch``, an overkill. - -Loss Records -============ - -A loss record is a special type of outgoing packet. It marks a place in -the Unacked Queue where a lost packet had been -- the lost packet itself -having since moved on to the Lost Queue or further. The loss record and -the lost packet form a circular linked list called the "loss chain." -This list contains one real packet and zero or more loss records. The -real packet can move from the Unacked Queue to the Lost Queue to the -Scheduled Queue and back to the Unacked Queue; its loss records live -only on the Unacked Queue. - -We need loss records to be able to handle late acknowledgements -- those -that acknowledge a packet *after* it has been deemed lost. When an -acknowledgment for any of the packet numbers associated with this packet -comes in, the packet is acknowledged and the whole loss chain is -destroyed. - -Poisoned Packets -================ - -A poisoned packet is used to thwart opportunistic ACK attacks. The -opportunistic ACK attack works as follows: - -- The client requests a large resource - -- The server begins sending the response - -- The client sends ACKs for packet number before it sees these packets, - tricking the server into sending packets faster than it would - otherwise - -The poisoned packet is placed onto the Unacked Queue. If the peer lies -about packet numbers it received, it will acknowledge the poisoned -packet, in which case it will be discovered during ACK processing. - -Poisoned packets cycle in and out of the Unacked Queue. A maximum of one -poisoned packet is outstanding at any one time for simplicity. (And we -don't need more). - -Packet Numbers -============== - -The Send Controller aims to send out packets without any gaps in the -packet number sequence. (The only exception to this rule is the handling -of poisoned packets, where the gap is what we want.) Not having gaps in -the packet number sequence is beneficial: - -- ACK verification is cheap - -- Send history updates are fast - -- Send history uses very little memory - -The downside is code complexity and having to renumber packets when they -are removed from the Scheduled Queue (due to, for example, STREAM frame -elision or loss chain destruction) or resized (due to a path or MTU -change, for instance). - -Some scenarios when gaps can be produced inadvertently are difficult to -test or foresee. To cope with that, a special warning in the send -history code is added when the next packet produces a gap. This warning -is limited to once per connection. Having a gap does not break -functionality other than ACK verification, but that's minor. On the -other hand, we want to fix such bugs when they crop up -- that's why the -warning is there. - -Loss Detection and Retransmission -================================= - -The loss detection and retransmission logic in the Send Controller was -taken from the Chromium code in the fall of 2016, in the beginning of -the lsquic project. This logic has not changed much since then -- only -some bugs have been fixed here and there. The code bears no resemblance -to what is described in the QUIC Recovery Internet Draft. Instead, `the -much earlier -document `__, -describing gQUIC, could be looked to for reference. - -Congestions Controllers -======================= - -The Send Controller has a choice of two congestion controllers: Cubic -and BBRv1. The latter was translated from Chromium into C. BBRv1 does -not work well for very small RTTs. - -To cope with that, lsquic puts the Send Controller into the "adaptive CC" -mode by default. The CC is selected after RTT is determined: below a -certain threshold (configurable; 1.5 ms by default), Cubic is used. -Until Cubic or BBRv1 is selected, *both* CC controllers are used -- -because we won't have the necessary state to instantiate a controller -when the decision is made. - -Buffered Packet Handling -======================== - -Buffered packets require quite a bit of special handling. Because they -are created outside of the regular event dispatch, a lot of things are -unknown: - -- Congestion window - -- Whether more incoming packets will arrive before the next tick - -- The optimal packet number size - -The Send Controller tries its best to accommodate the buffered packets -usage scenario. - -ACKs ----- - -When buffered packets are created, we want to generate an ACK, if -possible. This can be seen in ``send_ctl_get_buffered_packet``, which -calls ``ci_write_ack()`` - -This ACK should be in the first buffered packet to be scheduled. Because -the Send Controller does not dictate the order of buffered packet -creation -- high-priority versus low-priority -- it may need to move (or -steal) the ACK frame from a packet on the low-priority queue to a packet -on the high-priority queue. - -When buffered packets are finally scheduled, we have to remove ACKs from -them if another ACK has already been sent. This is because Chrome errors -out if out-of-order ACKs come in. - -Flushing QPACK Decoder ----------------------- - -The priority-based write events dispatch is emulated when the first -buffered packet is allocated: the QPACK decoder is flushed. Without it, -QPACK updates are delayed, which may negatively affect compression -ratio. - -Snapshot and Rollback -===================== - -The Send Controller snapshot and rollback functionality was implemented -exclusively for the benefit of the optimized ``lsquic_stream_pwritev`` -call. - -Complexity Woes -=============== - -The Send Controller is complicated. Because we write stream data to -packets directly and packets need to be resized, a lot of complexity -resides in the code to resize packets, be it due to repathing, STREAM -frame elision, or MTU changes. This is the price to be paid for -efficiency in the normal case. - - -Alarm Set -********* - -*Files: lsquic_alarmset.h, lsquic_alarmset.c, test_alarmset.c* - -The alarm set, ``struct lsquic_alarmset``, is an array of callbacks and -expiry times. To speed up operations, setting and unsetting alarms is -done via macros. - -The functions to ring [4]_ the alarms and to calculate the next alarm -time use a loop. It would be possible to maintain a different data -structure, such as a min-heap, to keep the alarm, and that would obviate -the need to loop in ``lsquic_alarmset_mintime()``. It is not worth it: -the function is not called often and a speed win here would be offset -by the necessity to maintain the min-heap ordering. - -Tickable Queue -************** - -*Files: lsquic_engine.c, lsquic_min_heap.h, lsquic_min_heap.c* - -The Tickable Queue is a min-heap used as a priority queue. Connections -on this queue are in line to be processed. Connections that were last -ticked a longer time ago have higher priority than those ticked -recently. (``cn_last_ticked`` is used for ordering.) This is intended to -prevent starvation as multiple connections vye for the ability to send -packets. - -The way the min-heap grows is described in `Growing -Min-Heaps <#growing-min-heaps>`__. - -Advisory Tick Time Queue -************************ - -*Files: lsquic_attq.h, lsquic_attq.c* - -This data structure is a mini-heap. Connections are ordered by the value -of the next time they should be processed (ticked). (Because this is not -a hard limit, this value is advisory -- hence its name.) - -This particular min-heap implementation has two properties worth -highlighting: - -Removal of Arbitrary Elements -============================= - -When a connection's next tick time is updated (or when the connection is -destroyed), the connection is removed from the ATTQ. At that time, it -may be at any position in the min-heap. The position is recorded in the -heap element, ``attq_elem->ae_heap_idx`` and is updated when elements are -swapped. This makes it unnecessary to search for the entry in the -min-heap. - -Swapping Speed -============== - -To make swapping faster, the array that underlies the min-heap is an -array of *pointers* to ``attq_elem``. This makes it unnecessary to update -each connection's ``cn_attq_elem`` as array elements are swapped: the -memory that stores ``attq_elem`` stays put. This is why there are both -``aq_elem_malo`` and ``aq_heap``. - -CID Purgatory -************* - -*Files: lsquic_purga.h, lsquic_purga.c* - -Overview -======== - -This module keeps a set of CIDs that should be ignored for a period -of time. It is used when a connection is closed: this way, late -packets will not create a new connection. - -A connection may have been deleted, retired, or closed. In the latter -case, it enters the `Draining State `__. -In this state, the connection is to ignore incoming packets. - -Structure -========= - -The purgatory keeps a list of 16-KB pages. A page looks like this: - -:: - - #define PURGA_ELS_PER_PAGE 273 - - struct purga_page - { - TAILQ_ENTRY(purga_page) pupa_next; - lsquic_time_t pupa_last; - unsigned pupa_count; - bloom_mask_el_t pupa_mask[BLOOM_N_MASK_ELS]; - lsquic_cid_t pupa_cids[PURGA_ELS_PER_PAGE]; - void * pupa_peer_ctx[PURGA_ELS_PER_PAGE]; - struct purga_el pupa_els[PURGA_ELS_PER_PAGE]; - }; - -The reason for having CIDs and peer contexts in separate arrays is to be -able to call the ``ea_old_scids()`` callback when a page expires. A page -is expired when it is full and the last added element is more than -``pur_min_life`` microseconds ago. The minimum CID life is hardcoded as -30 seconds in lsquic_engine.c (see the ``lsquic_purga_new()`` call). - -To avoid scannig the whole array of CIDs in ``lsquic_purga_contains()``, -we use a Bloom filter. - -The Bloom filter is constructed using a 8192-bit bit field and 6 hash -functions. With 273 elements per page, this gives us 0.004% possibility -of a false positive. In other words, when we do have to search a page -for a particular CID, the chance of finding the CID is 99.99%. - -Quick calculation: - -.. code-block:: text - - perl -E '$k=6;$m=1<<13;$n=273;printf("%f\n", (1-exp(1)**-($k*$n/$m))**$k)' - -To extract 6 13-bit values from a 64-bit integer, they are overlapped: - -.. code-block:: text - - 0 10 20 30 40 50 60 - +----------------------------------------------------------------+ - | | - +----------------------------------------------------------------+ - 1111111111111 - 2222222222222 - 3333333333333 - 4444444444444 - 5555555555555 - 6666666666666 - -This is not 100% kosher, but having 6 functions gives a better guarantee -and it happens to work in practice. - -Memory Manager -************** - -*Files: lsquic_mm.h, lsquic_mm.c* - -The memory manager allocates several types of objects that are used by -different parts of the library: - -- Incoming packet objects and associated buffers - -- Outgoing packet objects and associated buffers - -- Stream frames - -- Frame records - -- Mini connections, both Google and IETF QUIC - -- DCID elements - -- HTTP/3 (a.k.a. "HQ") frames - -- Four- and sixteen-kilobyte pages - -These objects are either stored on linked list or in `malo <#malo-allocator>`__ -pools and are shared among all connections. (Full connections allocate outgoing -packets from per-connection malo allocators: this is done to speed up `ACK -processing <#handling-acks>`__.) - -The list of cached outgoing packet buffers is shrunk once in a while (see -the "poolst\_*" functions). Other object types are kept in the cache -until the engine is destroyed. One Memory Manager object is allocated per -engine instance. - -Malo Allocator -************** - -*Files: lsquic_malo.h, lsquic_malo.c* - -Overview -======== - -The malo allocator is a pool of objects of fixed size. It tries to -allocate and deallocate objects as fast as possible. To do so, it -does the following: - -1. Allocations occur 4 KB at a time. - -2. No division or multiplication operations are performed for - appropriately sized objects. (More on this below.) - -(In recent testing, malo was about 2.7 times faster than malloc for -64-byte objects.) - -Besides speed, the allocator provides a convenient API: -To free (put) an object, one does not need a pointer to the malo -object. - -To gain all these advantages, there are trade-offs: - -1. There are two memory penalties: - - a. Per object overhead. If an object is at least ROUNDUP_THRESH in - size as the next power of two, the allocator uses that power of - two value as the object size. This is done to avoid using - division and multiplication. For example, a 104-byte object - will have a 24-byte overhead. - - b. Per page overhead. Page links occupy some bytes in the - page. To keep things fast, at least one slot per page is - always occupied, independent of object size. Thus, for a - 1 KB object size, 25% of the page is used for the page - header. - -2. 4 KB pages are not freed until the malo allocator is destroyed. - This is something to keep in mind. - -Internal Structure -================== - -The malo allocator allocates objects out of 4 KB pages. Each page is -aligned on a 4-KB memory boundary. This makes it possible for the -``lsquic_malo_put()`` function only to take on argument -- the object -to free -- and to find the malo allocator object itself. - -Each page begins with a header followed by a number of slots -- up to -the 4-KB limit. Two lists of pages are maintained: all pages and free -pages. A "free" page is a page with at least one free slot in it. - -The malo allocator (``struct malo``) stores itself in the first page, -occupying some slots. - -Receive History -*************** - -*Files: lsquic_rechist.h, lsquic_rechist.c, test_rechist.c* - -.. _overview-5: - -Overview -======== - -The reason for keeping the history of received packets is to generate -ACK frames. The Receive History module provides functionality to add -packet numbers, truncate history, and iterate over the received packet -number ranges. - -.. _data-structures-3: - -Data Structures -=============== - -.. _overview-6: - -Overview --------- - -The receive history is a singly-linked list of packet number ranges, -ordered from high to low: - -.. image:: rechist-linked-list.png - -The ordering is maintained as an invariant with each addition to the -list and each truncation. This makes it trivial to iterate over the -ranges. - -To limit the amount of memory this data structure can allocate, the -maximum number of elements is specified when Receive History is -initialized. In the unlikely case that that number is reached, new -elements will push out the elements at the tail of the linked list. - -Memory Layout -------------- - -In memory, the linked list elements are stored in an array. Placing them -into contiguous memory achieves three goals: - -- Receive history manipulation is fast because the elements are all - close together. - -- Memory usage is reduced because each element does not use pointers to - other memory locations. - -- Memory fragmentation is reduced. - -The array grows as necessary as the number of elements increases. - -The elements are allocated from and returned to the array with the aid -of an auxiliary data structure. An array of bitmasks is kept where each -bit corresponds to an array element. A set bit means that the element is -allocated; a cleared bit indicates that the corresponding element is -free. - -To take memory savings and speed further, the element array and the -array of bitmasks are allocated in a single span of memory. - -.. image:: rechist-memory-layout.png - -rechist_elem ------------- - -``re_low`` and ``re_count`` define the packet range. To save memory, we -assume that the range will not contain more than 4 billion entries and -use a four-byte integer instead of a second ``lsquic_packno_t``. - -``re_next`` is the index of the next element. Again, we assume that there -will be no more than 4 billion elements. The NULL pointer is represented -by ``UINT_MAX``. - -This struct is just 16 bytes in size, which is a nice number. - -lsquic_rechist --------------- - -``rh_elems`` and ``rh_masks`` are the element array and the bitmask array, -respectively, as described above. The two use the same memory chunk. - -``rh_head`` is the index of the first element of the linked list. - -The iterator state, ``rh_iter``, is embedded into the main object itself, -as there is no expectation that more than one iterations will need to be -active at once. - -.. _notable-code-5: - -Notable Code -============ - -Inserting Elements ------------------- - -Elements may be inserted into the list when a new packet number is added -to history via ``lsquic_rechist_received()``. If the new packet number -requires a new range (e.g. it does not expand one of the existing -ranges), a new element is allocated and linked. - -There are four cases to consider: - -1. Inserting the new element at the head of the list, with it becoming - the new head. (This is the most common scenario.) The code that - does it is labeled ``first_elem``. - -2. Appending the new element to the list, with it becoming the new tail. - This code is located right after the ``while`` loop. - -3. Inserting the new element between two existing elements. This code is - labeled ``insert_before``. - -4. Like (3), but when the insertion is between the last and the - next-to-last elements and the maximum number of elements has been - reached. In this case, the last element's packet number - information can simply be replaced. This code is labeled - ``replace_last_el``. - -Growing the Array ------------------ - -When all allocated elements in ``rh_elems`` are in use -(``rh_n_used >= rh_n_alloced``), the element array needs to be expanded. -This is handled by the function ``rechist_grow``. - -Note how, after realloc, the bitmask array is moved to its new location -on the right side of the array. - -Handling Element Overflow -------------------------- - -When the array has grown to its maximum allowed size, allocating a new -element occurs via reusing the last element on the list, effectively -pushing it out. This happens in ``rechist_reuse_last_elem``. - -The first loop finds the last linked list element: that's the element -whose ``re_next`` is equal to ``UINT_MAX``. - -Then, the second loop finds the element that points to the last element. -This is the next-to-last (penultimate) element. This element's next -pointer will now be set to NULL, effectively dropping the last element, -which can now be reused. - -Iterating Over Ranges ---------------------- - -Iteration is performed by the ``lsquic_rechist_first`` and -``lsquic_rechist_next`` pair of functions. The former resets the internal -iterator. Only one iteration at a time is possible. - -These functions have a specific signature: they and the pointer to the -receive history are passed to the ``pf_gen_ack_frame`` function, which -generates an ACK frame. - -Clone Functionality -------------------- - -The Receive History can be initialized from another instance of a -receive history. This is done by ``lsquic_rechist_copy_ranges``. This -functionality is used during connection promotion, when `Tiny Receive -History <#tiny-receive-history>`__ that is used by the `IETF mini -connection <#mini-ietf-connection>`__ is converted to Receive History. - -Tiny Receive History -******************** - -*Files: lsquic_trechist.h, lsquic_trechist.c, test_trechist.c* - -.. _overview-7: - -Overview -======== - -The Tiny Receive History is similar to `Receive -History <#receive-history>`__, but it is even more frugal with memory. -It is used in the `IETF mini connection <#mini-ietf-connection>`__ as a -more costly `alternative to using bare bitmasks <#imc-recvd-packnos>`__. - -Because it is so similar to Receive History, only differences are -covered in this section. - -Less Memory -=========== - -No Trechist Type ----------------- - -There is no ``lsquic_trechist``. The history is just a single 32-bit -bitmask and a pointer to the array of elements. The bitmask and the -pointer are passed to all ``lsquic_trechist_*`` functions. - -This gives the user of Tiny Receive History some flexibility and saves -memory. - -Element -------- - -The linked list element, ``trechist_elem``, is just 6 bytes in size. The -assumptions are: - -- No packet number is larger than 2\ :sup:`32` - 1 - -- No packet range contains more than 255 packets - -- Linked list is limited to 256 elements - -Head Does Not Move -================== - -Because of memory optimizations described above, the head element is -always at index 0. The NULL pointer ``te_next`` is indicated by the value -0 (because nothing points to the first element). - -Array Does Not Grow -=================== - -The size of the element array is limited by the 32-bit bitmask. As a -further optimization, the number of ranges is limited to 16 via the -``TRECHIST_MAX_RANGES`` macro. - -Insertion Range Check -===================== - -A packet range spanning more than 255 (UCHAR_MAX) packets cannot be -represented. This will cause a failure, as it is checked for in the -code. - -This many packets are unlikely to even be required to complete the -handshake. If this limit is hit, it is perhaps good to abort the mini -connection. - -Set64 -***** - -*Files: lsquic_set.h, lsquic_set.h, test_set.c* - -This data structure (along with *Set32*, which is not currently used -anywhere in the code) is meant to keep track of a set of numbers that -are always increasing and are not expected to contain many gaps. -Stream IDs fit that description, and ``lsquic_set64`` is used in both -gQUIC and IETF QUIC full connections. - -Because one or two low bits in stream IDs contain stream type, the -stream IDs of different types are stored in different set structures; -otherwise, there would be gaps. For example, see the -``conn_is_stream_closed()`` functions (there is one in each gQUIC and -IETF QUIC full connection code). - -Appendix A: List of Data Structures -*********************************** - -The majority of data structures employed by lsquic are linked lists and, -to a lesser extent, arrays. This makes the code simple and fast -(assuming a smart memory layout). - -Nevertheless, a few places in the code called for more involved and, at -times, customized data structures. This appendix catalogues them. - -This is the list of non-trivial data structures implemented in lsquic: - -Ring Buffer Linked Lists -======================== - -- `Receive History <#receive-history>`__ - -- `Tiny Receive History <#tiny-receive-history>`__ - -Hashes -====== - -- lsquic_hash - -- hash_data_in - -Min-heaps -========= - -- `Advisory Tick Time Queue <#advisory-tick-time-queue>`__ - -- lsquic_min_heap - -Bloom Filters -============= - -- CID Purgatory - - -Appendix B: Obsolete and Defunct Code -************************************* - -Mem Used -======== - -Engine History -============== - -QLOG -==== - - -.. [1] - This is due to the limitation of the QPACK library: the decoder can - read input one byte at a time, but the encoder cannot write output - one byte at a time. It could be made to do that, but the effort is - not worth it. - -.. [2] - Mini conn structs are allocated out of the `Malo - Allocator <#malo-allocator>`__, which used to be limited to objects - whose size is a power of two, so it was either fitting it into 128 - bytes or effectively doubling the mini conn size. - -.. [3] - This two-step packet parsing mechanism is left over from the - little-endian to big-endian switch in gQUIC several years ago: - Before parsing out the packet number, it was necessary to know - whether it is little- or big-endian. It should be possible to - do away with this, especially once gQUIC is gone. - -.. [4] - This term was picked consciously: alarms *ring*, while timers do - other things, such as "fire" and so on. diff --git a/external/lsquic/docs/lsquic-engine-conns.drawio b/external/lsquic/docs/lsquic-engine-conns.drawio deleted file mode 100644 index a5ad8ed..0000000 --- a/external/lsquic/docs/lsquic-engine-conns.drawio +++ /dev/null @@ -1 +0,0 @@ -7Vzrc5s4EP9rPPcpHj14+WPjpNfeXB83baftRxlkYIKRD3Bi968/CRAGGTuyyyN1L5NJpEUvdn8r7a4kJni+2v6ZkHXwjnk0miDgbSf4boIQNBCaiF/g7QqKbeGC4CehVxbaEz6FP2hJBCV1E3o0bRTMGIuycN0kuiyOqZs1aCRJ2FOz2JJFzV7XxKcHhE8uiQ6pX0MvCwqqg+w9/Q0N/UD2DK1Z8WRFZOHyTdKAeOypRsL3EzxPGMuK1Go7p5FgnuRLUe/1kafVwBIaZzoVtttv+C//zp/fsS/hvft2zbbuDXaKZh5JtCnfuBxttpMscDfJIxWNwAm+pbH3SrCVZ92IpGnocmKQraLyeZol7IHOWcSSvDa2XIculqKmxxlbtsqSLGA+i0l0v6fytrNk963qiGe+8wyYIlPm7wSuQJXbydw2zKp6PF1UM8vcvpLIyDrFQKVMMacswyiqDdwj1FmKtysYIoZ/lPMlKWWbxKUn2I1KcGQk8Wl2Si6wQghXLcpWlL8vr/i0x6BZ4iqowU/SEhqRLHxsDpiUquBXzVU9fGQhfxUEtgq8S6U1bLPZRPGiZa065pSGIITNlhAAzZYKThy0xDFGdrVia1EgPTVi0OgHmubJganlLdOpl+eJYgQyVxPCnpQr2BnKZqK+lW1m2ZhY5ykbmFp7BSs0B2CsqXGgS42j0DOpLfv6SJOQc5wmZfUO1dCwNNXQMMZUQ2w3QWpjNAVKK7qaaCNnCoxGc9h2tHSxM/jDlwl/07Lr8IdnwL/TBWc4+Bu68LdGhT9owt8wlLVDF/vmTFkcLGU56xn4dgvurYgz69YLH3nSF8l5YcCGLOZFX8kCvL9amQN1Sdgm9nJ9ERB5CsKMflqTXPhP3B5vqks5CppkdHsaQ4cSl5x0mpyUkq4BAqIWRFjguPAb3D6XtYfm6/wt/ytnyUtZpZqCJnU8o23GcdACW1Y/zIVQk7u4L+7Ozgbu7QsFrqVMAZVXNhpypXCfYW6OZtQHV0fB+IEcnLExDk1tObx2a1BvF8hBxYCkgSQvErXgLy9PaD27IKBh1cpqEafC1jQga5GMwvihycO9Vdh0iC4LQKDTBuH5AlsQ98HPQfFhk/HR0+5tQ6kOz9qGTjsuBjINlWnEgBeahpVNKX0iFZg9m4awzTYcCa7XjFYIJiPC1cCKZTe7MJ5mQmX5hMN6MrAtXHzaIpy/UItQtbarmWA8i1DP3M4tQnw1FsShSzm2RYjOsMyN65UDHl0ObfHCI3Iwr1cO1uhyQPpysK5XDrPR5YD15WBfrRws3chNf3IwWuQwmM0OprY01L/XTPirNNpn7cgYyMdUQhtVHONso13dxzCHNdpRW4RrQLz+LnCtneoZA66mAlf1pIV2SGSmLnwDw3XUCN5vBNdRjxhB5QAORmh6YVAEKRO1DW21qb4h20sUT/vYWy3SfPWgRaPOscpKXrX7s2FnyxgYsBrHPv8HbCeAxaPOssoJMnypUYCVwLM1tFHQFhvt0peVh32Pn1+edO/LQt2Yc2++rGz4dEzhPd0KLHwOV1RgnuVp90F7E/xdGN+8oVwEo2yEDyJadSPc0A2f9radgDWOW758vh6Ef3SPnPWnMuga+KoexMGjHzbDGmGK4a+iDLCzPspNFCnG5w2YUYNw8NhuyNlOorIFb6onRno2YLCGi/jLoLvTWx+9oFteFXz2ntWo/uSNErMzLzXPkeJPIqRnnp97zUo9f2JZp69ZqeUxapTv55qVobFAj6Bq08YtkxswBX3EJPXVre9bJtJOel4HR42bQ2VhsNXdGe2YjhLRNJxhVxh5q+e0Kyf8NrKIhB/3niNe14P7Z0N5o304ayzOpAa1RHuqO1HH73pNunfetPeYe3PeDI1NkJ9xMobh60G8wx7byTAPleQN7wSBD5vM55rp8+RH4j5QsQqCEvUd8n25pJbb6tx59mwBQD94tkfHs6l3By5iaS6DsWclj6RBZR70IBBH95BjfwLROskrVgvOh4vk0W+Qr3cJ6V5M6k1ClpbKfA5CMVN5IfETshIMDcQ3T/gYxeoOaOyL/Q/xOZKY+DTVECUgUejHeYfWvxvxdZLbiC6zfU7W2t+GSqecRlZCRPEiXedlwIe8X5eIQ+ApzQPHAcnyf3Qnn3Q3mgXNbcEl5RJ3BWbBMmE5Q8JtzqBl/kgMYB1xVOVj7qz3rwEV77lnyR9pfTj5o03euc+6lUIejf9BE/5vLiAl+iggQcUas6Pe9GKNzETc/4QrFDOxt9ZY40qSHL3LOS6ci1uhnKFLolflg4ytjyh5cxpo6HluLBafCIJOma8toSD/EZwiCxrdssSjiTKulPclVhh8h/a5vwVji+6KmtX+oVK7g3nGULaQnZa4a3WbqT7PwAtsIp7df1+o8DP2X2nC9/8B \ No newline at end of file diff --git a/external/lsquic/docs/lsquic-engine-conns.png b/external/lsquic/docs/lsquic-engine-conns.png deleted file mode 100644 index 1852d4e9fb0a556c31b6387bac9ddec39148d5c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97346 zcmd42dpy(q|37|Rmqn5kA%_$e9ptdtX62A!<}l~OoR71yqYc}r)JlaMMk$icO3L|6 zhjoy1q~sKe&j@$tMr?vMN9u|y{aYw0!0YySA- z4`~~mrOO|G{FU{`A7XK<#le-8fc`gs{2@h;vLZy$xMAT`;vd`K7QdfugXxnQ?5J&U z%WW_ihr`hgWd(6`!x`WexJ6@xhKGd{Lx10f>BIDQ>%(@#4BTM)+u-I1BzQ1H>LTF! z-oM`;L?Y7vZVS(d4X09rw!yFnU478hcF%BnD1*ZWPaWLAgMmJ{499?H;0Dt0_fzhF zp0Hv-(~IGC_uC9$x+q<^=my*hEJ$d05Q!B;1FeVuJz>&rf;+~M z9?98lPt^w~FtA5B*fOo$V?yah zEL4yo#g-lpnt;V1y(u^XCxTAVr-fURf?dN5gBdo?4j7A|a4cwogmR9w3np4y7+Mg? z9^Bv{t5_t~2}ZWXSa=v%!5R9&E^c^hn`mB$gFYoXoaY$n%{B4Nok#PQrh?aYae zJf;iV9&Q!Ob+X1s+Zk9hP)r1tM2~i{cPE0+7*K-3JUAGeAn#a)M^sc)3~15}WW4KXKOguZpGR)S7>*>HT2m6Cz2IJta zEDH~BG|Yx+O=pDA?3`Ia_B^6DgNm}jIeLb;y2e-r!3Z`X(bPyg8kb8Aj$%i;+FJuN zz=Z2l^<$7>yeO6f1&xG9hFgO{VvIOEFB_^84aISdcD5x1^FleWSUV=t32WevH;M^~ zVcOg9ELm7*I}bcQD1^=7g-2S3av}_{G`lDs+slRl&H$F`gs0khdIodt-03hI1G^Aw zXNr+073La_0*!LvMrh6?vc?L zLac{7I?URc9L9CGiXufCxgy;Sg6*BWU7W1Ly@T|T2&SvGjg6ZFm27Sv>+NOdM&{{r zEwR?2ERXOY11pk~n@705BMC=~4z?u)(W&;Kj!Y_;Dbd!8~V0qE7pjL@Cvc8ws-W#5{xJoG4|*nnzMs}Ybc3^rrV;eTrda=wjDl< z8tF!GB0Iq`h?qzU8)3m@QbKX;AZNo6S1N+5Ph;}jDUpU4^GF+D+YzK_C-Y#qC6W;3 z6-GmXQE;Nb122lsbC2?7dPiE=(%p?1Ft~L{sJVrwffu+LYvbWeK}8#aDPd5Kv83Q= zlrtO4iuAyndwUQZ$V?uSU=il!iFEXia>jY+hXL@z*jRK(gndoq{Z3C>uKr*&u`&X%!S^VG!X=3PM=pIWgg6UWg;wBb2Nk zZeeKeY-j0)iN+z!scdJo5zfgu3`?efvEf_*NMaCC&Pa-5EIQKKErK15iLh~?deW^( z7-A5a>EU2U&=1FYlh8E7AWp0sSkoXBAp+}VV;k;dVGv?r=j}#B;cXE#XBq)P#ycSK zEb}M=E;h)9$pbyO+eA4>1qZQcp5{j329{26ykV3xonwGyyOLdFX)qVB2uC)a=YT}G zTjHqtj=^C#3mdo%hh-4rXb?^2IXf|VY&!(OlI7%r@Uk>Ocw)j>E*v&IgzOLo-sc(Z z%%S1+9hodIeFKrz5Zs)?Sq=_NIx2+Z#lwfXJCmb4aE=aah58oIEY z?PI~*?dcX#bRxss9EqfvQ^O3HHXblnYgd{*ony&?6WlEv5HT2sP?rcU8G~>(cXXkV zkzO9=R(39q29};MgUDb*GEATC4ty6j#>LFL?p_ui9DBS$6c*-g1bAMNX|Swg4MVMB$xfmAcJ?@qqlbYDz*G+=S|5wD0&nJqS_4GJ7%@CJRty-= z%93Xr6zb{}qHhihL$iWHNtT|Do+yM-3>j$^26uI$J9*Oa(InuKF?I|h7jGSbiw(B4 zrdit=imruQ+FQgrv6&873%WIe1M_nCa^M&_kfV7HR7VEO1{;iI&|T;Zn3uhUHSkH; z2z!QojGHHL!Wc9I8%4wtVqx?sPm!mNc6G2~;bZM%2~HHEt&>fp3!TnHqhj3|=rEYA zHxr5WjwHHsgP3kH2t=d@BN%HQfy6}W8+k=hxNHuF0JpMrB6zTf=wRC@TSp?*5a(hD z3wDNikl7A|P-`O0D}rqA;$X`KzK)ED1VbR|+wsDT99VWXWUzQxI6d5fXkh4s^451i zFyQ)zLA+Q;rg@No3obg+(Ex`-!I=)x^e|$S6VZzZcOqKa7&uUD(Of(un2gl7HsWwm z!8|u}Co0j|0r&)rB_aloK(Ls=Ut?Twh7ky7wsWL~Rg8P65gmqL+6D(Bqqqn(je~Kv zL>op?!f9qmTb=uY6Q{+ zI2+kU#YSSNpl1pR?}ahodN_JSpdw@8ERK~23Pq*!T+qxgw+IA7A5M%80SzOm?l#1T zFf>MFy@(k5aC7i!OgM?;9O53tMmiDE)^-lDR&L zx}lsn=22`LCMq;cbWRyYmQFANjBX*KL`E1u8^QnoFvnjs61@JKTEneMA!mty{IT^9 z8%uLHZtlnPy#2oJ-&fMi( zyf!vWpl$5P@Ew)ePUh>$TI)Z;7SJ|3D%h?&wTZ z#w-g?^(}%2e&}0SmXzLF*GphUo-XPoz}nJ#=S}T5{QtSh^ox!>79!*M zR0Qwrrym!Bw3Ple;Wd(r%Jt_NI~@HlN={)j95sa7`i->PKIP1-4NOa{4N)2xI=(}L zpF)hj-n~1MqH*QJAX~-rvqm-Gy?D z;>v1&#X-mc%!#`@e%LE@R?qi*5bf?z!^EoS*)N&mzU&rL*Ts8bWj*ficKtZIo;N%J zp4|R$^Hhsc>uTAv)GwcWuiJF=jD0kFexL;mV%t9lA+}53Gswa{-v7Y8TGcj!ZUZ-H z2$BC0zU`@R(Vee##_T;_yQn&~T6Z5fb1ze-;wmB?obnnrO6IxcHK<4`80Md6NJl?q zg?6~<|6>i_-p?s}dg|`t+0vJUHMby%o&+q7s&IU<#KMQ~i*CZ(}fOtOjzx>5f}H^hS} z(B;jErEB|-e8@Had3AZhzK>+Pa__^_!f8})kVXB>n}nam8<6zZcT2K_i!m|n%z#U& zmoCqgPL8$|3+U-ZcXAFqQOmYVZOdjou3896IuRJ+wYj9Utr*j7lreGQ{HE5DNGa?e z63ICa$90zKgfA866Sl~J!BSSe9L!EVuhd%lzWnD3yX*zQVd!;JZh;0hZcF}&)yS+D zf2y<|-loNU1T((JBC$6~P|Wtfe|_NV#EY~6f`Z3S-dD|M8<1HcFGxRD-i8(?8a;~) z)?kk`;6 zMeNw(9xxZ1q<C27 zEQ&s8bg6iQZ*_S&8&g~l|1TQdJkH(&dwS)f7*(1omC+?FWB+diip2(3l+8OHJxL5!R`8a^}U0 z7he}vy;Q!*D502wf$jYyWj4gP_fvdxsp{>!=YQ((i+8O0@3BvS9FQtH_k9PH>mJwP zRW%*2juD_ELpuo9Z#0Ho6|j2u$Hc_Us|bOaEF=`05QaO7l%}NKOpcF_->s{wQ@;Xi zP30pg@=KTX!dLJEx<3tFr}*DN2R?GiEH{(=a#4bEEcuF^r1khoVp0V4uTgg+Z=*r> zU!$JAiU*C|h677unC-&FHTSfrI!|sEr-KfR+1^P;zW+t$H4_94p|RnNa_qX^SeafW zF-?&@?LclbKv|>^)`fjZHC>#%3qBaB()u8RP9J*b+w#kTca2S6NmILcz4y1>+UXWO zd+r`zcSA;U(U))XVBw-2e4TS%gOy5l&MxEO2lQ;^@j|veHx4*4HPACCbM3etv#k zqs-qOeq;3wk~5B)M*{a3Md&U|?^l%S?#!H<(i4@(bc($CaOWpt;C zPjzF}yy`ed5`#*bd6>Q!=h$|Q5W~PrQ5igd0n}$3N8Whw<7D;Kat=7M8YIyTc zpYf@O`2;cbvDV`8tNoAOjNKMG3`N$H4qD1Z?ck^A3eP+|fPa@GL*W<73-RQLyDmu! zM}s$5j^miX_}Uyw{^5Nu4Xf)(Gh~c zbIA324+aj&gDn&n{sToTd@Qo>-#1Eqv~?XKr@4_e`LbAiH0y zI;X!Te=5@|)~@8iSdrzQYBe;$z1^Y29wFYFL2f)65S z@%LW%KU8X6{_*U7Ep8@5YvRiTQ~azdl)Ea$IOMP4HCobOtr7ol7}s7YcR<9$T*fX> z0cZLyt-&$xpo{-THJ#a@5Hyc+wb5m@x^lVm=gqj;HJlf@uV$xxCY+!((k3+#hYJP{ zJQ!N9r4E{u|3{M|@)Tj%Shk{u=)gd^_HwG8z1LUkTJp7{`q4qbLmRYE;1kCG{)CRG zt5b(VHVPl+M!^w^a9paSgLHNew0jzd;g@8E=N1Bz5K|APSUXCFOx|t*4<50l&k$| zyJVIxuB9^T-=5KW^R*>gsKI{QEY+x*t&-Z7eBvK|M?@fVwudNPG||qNrg}n2GBwrR z>#bylFk)=2Sw!n*&evW|Hk5E*z;pgzebYeSe|bKf5NtgHDfH#vnO!W(ykNnPCg;9L zc?F-(n|!IuF@jx)`u8FQZ)#nR>&u+b6ei<3!o{Z96P~ydccpJurT+H@vwhZQQ&QV# zf&XH(N#UZI;`a_egK&26Ti0B9h2=BIe6uT&x}3P+dIeYOZTAJW^8fJcB7}4=O(Cuv z_+-9I*7$PM_s{p^hQiG=(jqj|b|+-n9@3o42>MqywnWekMun#%Yn%l2S@UBf+6>FL zt~hL2@WpM7YPO>MKaBntE`DPn-HBmb8rM3il6{lhR7!;jYx zI!gW6csLpIG^GD~tu*b$gTbQkkkq!)`uRs|lK$JF%(x-mnc-x$I2+%66ExO1o`@SQPvBG`hhWL%R8ROUt z{*!hS#D#sVp?zYvkZ`6lg)DS!dE;RL~#fI>Tdjtb+KiCN>-_(E5#Pe zy6uNL#otrOA;ITvIjS4PkG{~B z*88k!ZF^{1TOYwA25kLKaVT$eD_eHOMN)jNWFFRW*?^my^5}K++vZbvztL@|{-vGy zq%Y^<-=eQ?6`n^%8(=O<;Bhl2H72h9c>s!#HBQFnQ7u&9EUi7T3nw1?QgwFKgLq&5 zVcFi1^SD_nJkz4HrzU26BYtKJ6gTi3>7Sl!fe@aXY(BP`w%&@rLgtT(mI$XWCD}7x z$(vO+oZat}b5^InNmDSU1?`)P!4GU3yx#O(S60OTe4fe0o!OnzHrbTc_O@IzwXM6h zX;39Tw4<@CEIDPHtMlZGSsZji8qW;t%s1xklx@f_@aPBKRz&K)fH2-iy}Et`X;tDZ z*DxmgF$gTEIsc^X^x66|e)<~Kh-;L)fv$?0M?ch0?;EX97ye9e-B?$bf5&fwjupSX z<+<9Oa*BRtW+`?&C->(Qx$N@NTOWbs;ij6CI~>9P^qMQ*>{U>Hju{_*qxk&Ci-)Zr z4oD*wp6}N{Y1DV*7kz#Mq77UL!kFP0r>`g(OMM?4b8)S`1^>D{dQR$xA=<1tCD<nku>9lH_sV*>j!Pm+)h$~QKH9cV#@{7RuDpQO zu$?uo*}QAE-?;Zsb>#Qf&8`Mx{Ce{%tJxD zt3_+C1Gr`X{ar2WFbFN_kFNXoI-B6XENTV?<@SHQe$VH`viqCjaIuBn9;8}@;E9HC zoT(yfNa43q!-K`2e9Drzco;Eho~A`wVP4Q8#X~2}#VCWP_lxh}W?(L;jh=&N{cml; z;mE|%4>JYF7w~rx=rR3|GjxO2HHFQ;$DFXu0K`M?B@5|4bfD4^&g;rd)@+>4qe>wRRE2 z^9_u>Ys)9r5_OKuUn+Xom=UC9Fcl3qy&>tpkEOP{e|*8{0Hlb| z|DCx?EUOYZQ_MmJO||r!82niI*m)5zFb2EQ_x$lkRbT-YV(}P$>VwT|d~+fJChqQU zdcKs`Z5C>$>AD}QEHVsL>Qzx>wdr&y(DsN)T1M+kxJr_`lKttSyJe~7j#Yi&bafty z6XdQyoI`bGSE^?NljB~Ul`GJveOTK(ug8Q^jfW(IAcla_oE0(~7ohZ=y6a;c1q zC~~XS8^?&zQ(p^=ah+F;&#D;Hz5m=|#lM~67Iy;g*VZ{%F?Rskduw%;!-t&t`36(| zmGqH=h7RYzxh}aT*kSThP%9{GeL+w&{W@bl@$27RU|*^)R9i3k9|t2iC5dBYYH{Ib zect(_Mvnk@ho8y!X;g`v(D$&!^-nc8Epe z(o44|EB$E~8$6AX$x;{INy?o*_G3_&qX@me*@nJmntI<&=52(Ic7*%4!0}U}{?vP= z1G>fiUy4ty={FQc;%0KSYTEOwK3|qxJ_%Xz5YJ!JwI%W1Nyq`>9b9wf#FYu(%$L{_ z1Xa1FjK{{`nkani1Kf2IZL8wd!^Ra#pFiIy3K#==kB>dq5F%+? z=@u%k-XM4vxviV2jZ;lSxS2BK%$}Hs6A4X^#~>@t5XQ)Rst@{dQ|&6rynQSOxyxp< z@sg5N+r^&r0$bc@E-R_qLYW(T1^h8BJQ$nyi!4dwM#783hM5=aX0itjB}Q}V9Q&U& zZQSy=r@v{*n{|V7WhLqBz{X@JjVv>LY6SyEKjonlZ&%ftb@aKv=@7%sc1h6>$@KOZ zDGcWI7U5=2*^(yG*Qg%_G$VaPuyv8tB4NnXm2EKWO1EB4VfCoC);1Ml8!Gv%my*V)^Wn`j;`}%QmB?s>aeo zW2!eL{V_8B7{`MEo>RJ~yC4klVM;Ba_hRXRKlbyV0x-|*ZsjfhrFj&_T&v8*WtP_f z>NjTrR*{f3h&v5!rv$VpN3~!lyJ<#7|cUpToreOSp$OQbMH4y1Rxja(qDeb?x z%*pkb%ux!9E{(Nf8GQfQazy&AvCCy+o|Nntjpi8j7|S>P?4BzU_^Pid^3WP|gP$9{ z@^ehJj~bv7@PnO3X4Ya)cl}je;wV^Bik(qaw)RSIv2Q11{E&YQf&(lwE3Trf|rn;IV4xb8PqUYjXqf|iq82t7OIaq>X9fHrGfSYhf@JWU-essny;Nb|G~*qvW=LC{c4gh zT*=LuO^#p2Cei~pE0dx_7Ea!wg@WQJ zZTX`(L!lke#dcWIN29O-+|b%K1p21=KiKr8ok>sb+xp=NyGwV-i6}heC47pY7ZRk z-H@m$+_Le{egJIgfeNy>+5vtd$YbBD3=JMz{acv;gI4K3dnxGeMT^079R2AdcgqE; zC?!a4mNq^LIZtkxOY;CEK`dkNYTbF)qfOX1Nr4+=jjwpLUJ)%OF5Nl&hLjqmI4l5K zdwYl9+$ykQZ(f5C%^h;@B_y5>{f4b67R9>=Au(x0*D!jx;+jBd_1}gKhxD^MFr&U{ zP!xc;t|J~_Ms`Abk2Zd<1$%DJo6X7<>>t|JyX(Xw73th$hzwGM0ANY8us2O0l2vuD z;AXNFJ7mT+%+v6G_MgKIXOcg@F`V#BH~_>U+>A!7ajc1RTOIS^a_Kgckh~`?zoGTv zS}|q)q%nqIWLO9&%fvb;;SfkmUGVYKg$TGEzWE7YA$MgYcNv`-04uo>JtqhqnzsQ^ zLT+Kd*b8SVi@>9>m)0T#>e{?AfZ%!75{=Kfp)Kv-| z*tHnhrRS<7G%3SrBl0hg2qQ~tl|FDJJ3tQdhKtRcB_txMVdKL!c8VYu{{3;1C{l)=_w*;g^u{nQb66h0Ew<9aY6r!o?s@2WQwQAb3wDK!z zUd`I|-xr5YcrPqYK6wCERZ(zJ(S-22=*IV>V6ywbWQ8`nN-d|W1pn>)C|Og_D&rII zy(5D(sD7Qw!4$~Ct_-ts&;vN$;U}(~d6joPel$uf5=tO}33o!ysGGCnEiQ1+Y4o=F zbh;^$RTI>VQN4ExfJ>b*&TnPseF@!~HTg60we!K!4JQN3e)}zbO=uTl!Gs(LkL~!5 zn`sd_A_KInB|^CCtF-g1Ey5fiU8`gzrB%QgUyrd$C+9ZjJY zFxY2T*4kT%fp~nIt}yQ50o@m>mvBS3QyMB>x6JyKAeBy3eOr);@i=%YU++J)0AHNM zGygu6N~?gzBN)lXI_4D{_inXBYQ2PT)X`tf0V6QxB|BJbmNmZEgx+!D5r`ck#GV2L zu>!2b#mI{@D-szE7y*1ZORG_t;hOhff$6e@;-$mKfqYCov5O?GQmNYUKU2P9sYJHS zcp1UU+NHO*+C_y|Fgqp-o!rL~r}i56Noss~%^=`xa{k;~1g%_&=w zDyc?B{TXOv&J5*BV%s1=gH4CN{(yTBun`~He>t&@*mZPR$>v)jxYGD`fAU}xTnKOC7D5q&q5g)p&ivJdW z61rdS*_!}W+9wmeoEeg(Ph9+ZO7nh$sO2EPCPz8zljW-=tdR6YX_@ zEC{R@*)bNZqE2x-!*EvLM_HR+w@QVRriI*Z`mF5r@lu81#BKXGDyI=3=be2SK58AsdIVM*LSK^>@Vw$jRN;OGs zu%HS3s;aSzpJ%+qgopR{iAlcZ1rU6``Bi-}Ib%W;jX7A$_yg|O--&bywu>D?loNjj zl^)%aqP1jKu9qrM zRpa(SN(BOL)}Mpc>wk~3^j^YU-NwdJou_wnSuIC)S!G|*Ozw%Nj9(rq?(m-6vaz1| z^Pu49O0qz?Wh74Iw&d~O4zT4=_pa;KMlO)&zHTX`_$@T|W~i9$r8tl8>gs8GEwG&a zEKo3$wF%A9xV`+g%W}G(P`L7voV@Y?7thh$oxK~N7oxOhsIK>N^o2?u1J-tw-&iXy zZAhH(Xi-ov6X8jvUGrZ0VL7&p5cuTe33lUXD@`IZoWA; zyo^AZrUBFJUwv=_^;q_9YUSYlE7|tE(W2Y04w4=qI}}< zA33Y<-jYP_ti z-B{x*ZST>*8PhCZIhqcqv8_jC-N`EYAu@%rGiT<4@_1g&E&wokRbyDS=Fk>7Ji^SJ zFY#(h3FLdv4AOaj$XW_=Ros>HHH3C=6}CtSzAa5P{fV1F;X54pxQ58DZ98x?4If_Y ze^S-aH3Eo-75}=Ma=tjNCDUvl-&#aed!IMjt5qDvLb+H0+a+jA#&g_^jxukS8$gE7mbhYst*gx-LEc@jbI=Z}ieCLf-=|r}`<`!LjMaC?RpSd9Uv_SXRRG-Tn&+ zVCXtIO}9>HEyaIYy4yUcjQ>XD85_91-6~28aQbRbKU36D%#7oLyczb$88kXO|8r-6H z;?e0pE%|0+077X%90mN*8^n=2D`btTf3{^c(kFa?mYgZ|k~4g`G2DU=*qrn0yWxJ_ zLq)5zG=yQOPy6F7e{PFX8{I_MYG;xx0 z``nhI7FgDw-GfDbfVPa`9^3=&rFweo;Ew|p2zJfxl(q2SlI!zKD7SV;J?G7EXHzEI z;QMe+Px~^nGt6g#yjtUP?xi-e%(%FKTeW4GKb9-H+JtxSH8rbPLlCg{$PQ9LG>3K; z&sP_A$EM4j17fW?U;DJS-s);=**i~2p7o1Q*TG@$tidX>d|vGN@Id-U+G8hiQ9xW4 zuJf=h{3|DUTkO-5T1yfV^(z{Z@zJ*)uhh}bgUUJ(UQe1k(&=wK@EyxI<_6iNj;|4S zk3f80eL3ma*MnB(x2`!q@uHZb;8B0;I-wh=@%s=JFuE6d^w=q?^Tgr!pP-%rCz`LrC4@BRTK>p zwjD&qmNbeS3p( zOqKCpsvdj8_pjrv`!xcfb3XE3DxOH)vAHc!HxU`IVlber6!u4*#JojDabVp%)37r! z&-a8$<#7uCjIZm04W9WmkRX!3}^ISx%#u^et0I57UK7}e98(~qwyJ=VFoHp{8mnI05Nd+JIDq= zwz{7+7jl6W7aZcBd*4j~uJ{%BkV!vqFJSU zg8tOPv8ehs+i=Y4jhf*qYqO~nkBId!W-0Cbm48R!*{Y!n=fBj)RO$Kay#CO1`D@%R zNB=_*#|YLz7p^qEW9eg6h<#athy`)$OMR9 z>2{zVA%qtanrN3DI;p>ocqCAj`Tjt!Sf4mCzwl$1^27vSu;QPZH^#cGN|OT-I!GYO zPX#o&Nx%n|R$8V^(7g)Vvd>*k{CZvSV9L3eyJ?Vf^1^2#lv0~&J?|cGrhL8q>#H)Q zE6#8a z|CB1OwzGQfCfKjyV^1}O=W-$rZt6GsInaOq-XNm#hiJb*8AJNWi+qsSy||lG*C|TB zUDJN{-Wqu7-D1l(ps~d#b^Oi7v=;wgO7k;NOEfqg%*s4@eNnA`I=pDjZ5Ar)&#s=e zmJ+Ipef7vP^3S2FN`sS~5EXCmLMMMAF*kTI}Gr}*w~DlgTZ z>B9|zx|y;8;294=%F_dB{^zud%{8A^0|8~TKw-tYRAHscJh-H?92_2G4&{vYB84@SIRfoBln8)!89)7{T^-@7VV zRo~~z8&?}rNQC9_#bSnrcj^KPxd_0)9Cn_o!eF&m-`dHma>3qbz zRmMQhGekg1LGli@a@|>(q^kLKurydXI;UwV>ekC>QC$;p`gjT+60mLoWc*BX2Vy>I z86pCdRyfYThXxH%0?vgbQ#QS=zvrorT zwxYf5ygw|s2u{Br03|3_65oyj2Yv_0My!^liaLanUDevG_-Z2cXW}GaU}pVq^i)ID z-o|U}z9Tn(7^iZ>f{#kiU3_2)y{-UK{bHXJWACsIfq>9+o2ZKCgl>!KW_+kxE9%Vh z&gu_${iu|Xo137#-5FP&BBSdyg%4Zq8{$hgq`n??jh^>X_}RWiduc3X zu)qPe_3(92?+OA~At^m@x9nL~&N{f7NP~C3DJuLB@#2lNubywMNAIB8sa|^@S0VFl zMU`U^litgcsV(id_Y1#9#28VYubrP(7fL0>@7IE_Dtx54onJVo5h>Q%X+-m| zN|lB7Ud5^18!csTmu(mUT(cVh_Wnm%OW`lc52jT^L*_n&Ro>e2!nmdMka))nh~B$S z=gWWgiESK_fBT|sd)2yuUse?gw$3KBLyxPMUM;8VT~&$pASH2^R;iGr7aRf2D#v^9|Spqu9QSGrtDF;od%N2>U1D!_-70%YZ zvMVS&^=n+>B5UvJk#;KSWKg2I7PqWjIla~ul0JgMF>U6DXT70>^q-6v`S8v#&$mrG z2-}veXn}hHFbQg4`tp+gOv(AO+tF9a{MOm|O`raeI6QfnOqp&lpTE-3nXhHo@nF!u z;EDYF4!)FNMDl!$L&>Gvy}t&a@M{1bD>dZH93SD$&jG!_vH{aogicg^9JJ*^BqKVH z?7lhheF(kF@dpFSwRCMilxeKB>wDoNb$;Xb5F^=_;vE)$J-ylFJW_NEgaZELj|D$s zL3x52z(tVC#&!%oir#V(xi}Fx1(yC9}?d#TiW^(_Y2GTUh*=Gt*aJOF0&8YIy00YT-o2DDd0^QfxYg9mBE-8vU$5M` z@8%!yvX1VuJ3YK+_W44%rk;CV!vHANc>oMMPB0>C$V{_+=w>IYt@>+VVWNSBJy>xw z6ntl!8=3~{A|7ts{7I-MxW8I(&gWh8hld8WTD(-<-ikPwT=#wonQnS5a|O2yYA`HDZNILv!DgioJU=+V@7!>DXFV#Y@v=_X`Uu6MSMZz}&+#pfCs*M8 z8Q;wY`my}_%j0sB!ZpzUvu+RM4lJzGvNT2MikmM8Yt$h+vkND*Vj1mmGTs$;uS!9b zuw>Re5D%(1Ystyt-x8%{0Rs(d?Be=}waP~;6~IJ6d$M!b=%H9rhWkWYOCNV64x zxYr%c>I9ig?c!!i>y(L6YnGPQ1rV{;gV>XMxWLynbz*Vn)5LH-D5&`eYQ)x?|0)Ee zlFzOFg+S#Z1j<%i+yZDTXPj~M?p^Bq^{|}~fCl?AI3R_rWwgeGt6LxOTpgTmtXc}> zDI(_S_GGgRU_YzXHwy7NW3yXjIeHhC>Cl=00XxI*nx=&0l$$?(McWaS+nj_HXLZ{y z*lrW4H(*fM!v(5L2M)R`G(rZ$Un_fS=h9{i$AjxY-CLwb+Js4v4fT5w?dy5hgK*CG ziGeo-44vBn%U9;PPo8FcZPje%KB@im*^OOx37&oOx~@&5>pjOFP83vSPkqMc=Ql%* zi5XuvQ!+ohX(>6<>>FL8bEH8Gu*YIZo_`g%h@h2So?E57bY-z$8VE_(hL+0CF4W87Vl_E#=DYLF2{FJUokI=u%Ii~ zbo3{#3}kpH%tFAcD46ze*cNx-to4=?Qe%ec4zCYTRHvK{6lUlr{3u9Qn^%S%GX${ zvC>tWr8zn#3oS&iE4`6Eu)M`5R=q>0d*yeFzh}(-=pbB$w4lC&zTzltFpC9^BU{0G7 zK^-*${mLAgcVOM%p*(8Ib=FvoNvWS;q+q5;@1H7z2Mq*7?|AuTFXFe>HLaYa`Dt$B z#XOm6Ro-*2$N$3Oy-;I$yB>~z`YlJl((@KG(ZwIS6;W3Y4tflC zb$VP_q?M_^ICqX?lrOmZSSsra!hdfeBgp0Wzy*3CIBg#;Ke`QU;jPrc_>S{5>CN;q zb%b_b`kp&?F3o+LKlYrH@j10vXYbtmp9+s%<7$dl*7=wzihKt6+Lf$N!|MvZ%mX_b zCHUrAJTnvNq;2^tp$pO-uSdS2fCK5euMEu7!5`|tRFwtQBYmZjbpq1G$f*(l-&@hU zw6y6{PFqmOj682II4^j6n9|aeW=Am zK0tvUBhAq>0Cd`$xjVZR9CtI)uICKA*<7x-XJyt^WktWxC$2L7{Pc?hdv9I)KhtMl z;Yw@%o`ZJ(`xV$ql-i2UK+f5nmlH=?aWnapFjeT$^*GiwjT&WXV}p3&*u8REhb{49 zSJ5+pLDSC9RxO#;BHzQVi)_p8D6@nUg?*0zYCAgI7SH?*l zzlGszu|LQ9HeaA7bC#h>)5gFIf0`;y*KEu7TMZZQ?)~f?*D$9?`?|SsV6>pBYVo<= zz=yrptK0n!K7UqQ@YK(g^n(8IohUaqnEN(BeqJ4YU0s+A^0&!z-JACQPOMMm;tJy< zhs59SUQVNe4O#sqa9zfigvqq@Ev`_{2)+6>eWJuo>p z4pWPN0F7Va#{qSrF%+j*ajo@TQwvKYVAD|7|n( z{nGrg)J(7gGIz^fw=CdKHNM^_#x?{2>sFWE>$r{{$iV4|N4D2U+kY45sOE@t^JJ~1 z>zFMWtzo2%`F}CHN&DAIE*GR213FW2IN);R@`0Dxc+RHb7(-Et2DY&TgrE z$yu)3oj05Dxg-9h#@&OuUc;qTCPM;T<6g?ZxF5Xo0R83FzT+=|B=SrgxfT6VVM-=> zZ2tzy*sde;Q%N6xlB9my|8Z>~99L~UtfYTFAt*^a|7~;9$iW3uj-p68aNiS`8@S^2 zqOZm->#>byg1{)F0YnF@fMVG0l?MHAd$sDe|4KYUWJMVENt@L&YBtTP)z_q-0{u|D z92;jG9TR6U(E<)_h$ccn`<$vcFuM5zAOHz~IcQh5e_C`ixcemdP^0stkPRw{LDB!= zWbwQw6?1Hr{-b~tz5@;@)Y1pG>0tc1?3sHEA30a6i;?}Eq3y}_K>UDm!Iy@lVqGNF zEnVxzAA->DeN4-nM*=2v=v2}75{+IyWMwMtQMq6ic_vIX*z?^?jbC?+Ip6w}cKrH^ z0z-SCc8e;Qkd>$5l~Rm;ct(@4YV7Ep1JKV4&(NL+(41NOy4$9e(ML4}dfP^Kn0Z}@ zuo3wP5zt=yrk0!tn6#*9$@dNTqRHTdOZ$eT5jt(`nzU!0cUg_8D5Oh8JbzLAfJ~=JtK`v1)>0Y%+;+CFoxW;z9VArFU zCgNHB?_Hm!1{$>A%akrq0e?M!n-wTNITK&?eAs7)Gf0=>Om7s7A5SmKlR8Wl-@s;@x^L!DoHy5l^qWQWmLD-|Odo0tLj zJ+L*Jk;JWspa`4HXqMhx zxmr+F>vsX*38MMfb9dV3=W-9zura336sBt$Zr=@AWQ^;sG_+5*D(v}`3skY~d?|@9 z8&r?00Z-yZ*lF?`L{d`;l<}ht3-vu;ulED@y1{F7wg1c}lUi>cGme|OMVVBov2X7h zYipxl;nTNdtqCA0bAD#8B#5g$YeWn4S_FcD{{N4wuked{>-IkCh>U>fprn)xCEX1I z3L`B@cXvzIaVY8T5)qJQh@l2>=q{yO1w>MikbF0u`<&J#o>rogg#Y4L- zBL{kz=nSG(f=CLt&SzCNc8MA!R<<5fX15_QaW;gKHymlOhR8LuI&EZO#uy(py6}}5 z4VD$Il`*;6YdfOQqFBsG7uVUmh?mjlnlT|N@GfbFphyCsqN%FKlyN|Xy>d<~zK`_2 zxR##zX*4ip^kYNk=YJw{E8oM|yms|RpE_PIR&DrevDrxr43T zq%XFhym#p4TG{dX=Cch$=z`XoexB9X$|**Gqz)9`WU$qELc+32>oPl(!38tg>D0}*~NO{xL5 zlx7+EXOlJMbpWG(o%vFAUSN2QQ>d&LBM3Lyk-RykyWaP|t( zy}8PFzJ1-w!qMbm4y+m;#I85pIMt(|yH`FOV(Jv4X7=bp3kC{RTbzgi;>^0o!!NVvYYGO@t2R$5tU&Jh zz7QjTH_rieeHX_#JEGBB)2(K?wjF$p==@$oH}OSl1dxAipVJEvSX^dJicac1a1t7~Bmr%$K68O?Y7c4TY%G#{G!~sndTX zuB0G()Jl$3OyMg1hRCJhXVKDpOZNqlCiC-&k&N$-b|9Kn6DRwqR}rDqG`q4Ib^rf( zi{|pC^!Fk)R<}b1ygtW6-=Hm2bB~@aqNxh{Kp+HUOm4;SVJk*I5*hF3L;a(^#Zm^- z6>`Fc(b&B3rRAlcH}!X~tzZ}Vu+Hu;qaP|dk->P61b&6pF(U_8Dop}dS?v*7QwEC- z-l<{d0_HJVn7y|^|BBx&BKpK}v}k|o^TAzj(eD;{ApvxoV=mB5XR@Y_1(^@zKSdGW zvpFz~q;dH313i(&;g^BJeHk{Q=E6T5Bt28N=9Us@lUjigjt~NT@Ax*BGDeo*I8RgM z`AIOaf*6rV&mVKbhn=<4r+)4>T!~)v%|#V%Z%Af5^78fEwrco9+gH2~mEmY+xjZ*Z9%@1ADU^ljH)~cm&M_*C;g2xnOk(MMtUkvVHdqe9f z2Si@?@jJ@K@N!H#aHZ*hL=NKhj1{Onr*ChapLkW$RsdbhCRSo2&@MLJcw_3!VdXpT8_-KE%wC`EJE~!i6uBaD+B25aJp`Y%Is2`@Ex&alA zT~fwQSPt}%nbpM0vZaX{O;hdwSF_tA^U1316>qo!X2_Jw38^-=XQ*kh{ok?SZ`lMG z_ltHl1QX)0kDQCkaC$`}8M9~Puq)W~;Wip4qO>pA%x?_^Za+Q| z>ae4pN;35_VW{O_!xx;f|a_OHhHc+75c|>9B(n)P{HTHuOSlZRC8-5+af_dgJryxe7+a%VBGQ{2!r56gQo0>V@SVUDvMYKPG~`y3hW$oo}zCfiS4(stkLQyL$UTA^~(2vL`k4uAR|GgA2cQ4Y8a= z`0;kKE+-zF!@zDJ5VJHMDTor)@Y;J`=X3J@!c31e438EBklu7@Q;HfG{cx8>cE9p= zar~MG1%sg7tL}IQJdrGrYW_eZ-38c%N6_XK|q zRST;`Mvf;)Mm`}4=FLyv28R7SSN5Y_Up44A1u18e7ohh+gSo3{ckH{M*Ppylgy!Q? z54jpCLjtk65NK*6;gH$H*B6Ee-ssyo9OBw!m2$prTR&$$y8p6K-gLy{k7#9Y(mpeL zb`Ku6^bW(XybzTw>TGGK#yazblF@8tO&#C+bk9mO zFmVGCE4t+NJUw%Lt!(z+j~5R;En87`BCfw*03OPoZQG0A^>=VggmZ zMNi+4&vG@=g5tepC#BX(%QmI%Z*e)EQ`m=v85zw*Ia|UoHeXlk zJpCMHWD>Pq`}zKtnD?_u2K}`L8>4o4G+1FckM3A7k%&Ix_>KIB;V$99PbzKuYN{=c zp5SZI>GTUwFi_5hSn@Dc6Q0gR#7c4#{**Ddrb%NFLdnlhelj~}w`%Vn%vyC`!6>nk zN{A9Guzqh>Xn9~8uB@rq!7M;zksqTHV6L2ca73$kHX4avI^?|g4MLf@l*|l~csX0} z-gogXq+bYY&$K~!BxhQSDvhSp4g5*4Pws=CFTay2e^g!Huv;pzgh2UqZLYaM-^7=(`zO!5)soYT_2Qe^ zeVr~Nb6tY*!@4TJ2IDL>6#XWtfmS-@#+GT^c$k7vW~;u?Se3;loe2#$xwrvg_*5i6o>y+!%m4w~bfFf8az-NOTp=WW z=g7_1&PBEr?~WCk?JVw9$(U_}{}LT<`t6VQoN-G^d?Ap_$9mP|(8kz-{*n?0r(bcf zfb02Q734&a{x~BYw{e0y@KilPuiH@7P7OikBrnCEhIKa+l(?j)i4}y)6nm>fDloiV z!|r#6D2RAVbUDuJ2x#B$Jb~AfLG9d}|7z#Nk68M9LAcx{y>yX5(?CbiYndczcufTC zc_jXstH5T$qV4*_ovWn_r*S1??1`RSr_^mAgA&)HR>!{{KA|vJ5UUexfkR(RQ6X*GCzV}auFMj~ZY+RTwll(}MV?veB{~HTIghF}dFCQ`{1f z{QCJ))~YpPlgxJfrs1K?`bS=m^zK{&4#P(q9?qs>hUnEk)o4coc8Pavsr9)rRDC^| zf|YDm6iKS|AI{5ejoUN)3e{%axX>e-vt9n5RQ|McAS*3R4C%xrp^2nM=XS8fW zZZoDb<0gOLf*&g{n~~HkGte$`Ts4;4YG2sI*3V-af_{6Q#(CX}*Vgn4&L36VAk2nk ztyavDDr2FDUF7(KDeZX=2diFjlo6(^B3=@de~ae1N362G+4;7YDNFl2pMIa5ntpxI z;@cp`ks(8-kDU0@u{)E9UBSBPhwYr`{U-+FRcEIW`L~ z6`7*QzY)kUl0alP5OHr{6~YDjnKlt@@eLn+o8K=L_koDzj+b&A3@g97r+U&WK+g_sPISg(vDl6y91MC09hATW0!aT02Mc&-pL2YESX&e$aT@Gp- zE=+f_@Yzf)H}{nZ)|^ksb&=Ygb@C<7yPMAk zmcDh(E^@9VK_cCsZc=wWQ)KrAxgz15#Wl&wXLmDHrWkO^M?#cev^@pYjyyE_@|XGE zkOT&tJOdwU#hY9;sLzQvB8-%4rZbQ~qCHHds?>sm!0qH}I+$g8B!$#$Fk|$2R09bo zQL?-vcRZq_UROs!1P%|}vx?qrl%#~+<*!vpiXR8DLU}6sl?wwbJ8dgB)2EX!hBl2_ z`T1`fZ=t6F9YtyuNQuo_s=*#pP>ZC{#yF!S&6Z7u{AcGB8$Kp_u`_y3^=VxuM4&nmySdLQODKrOL~lT|(;CZ{OBR?YQ^i%k zTt0x*6`j(i8N*$j4;~yU+A=vb7;?KFpG9i%vGW{NJ*%kUr&j>o+(DWS_R6cQTH^Y> zLftf|_=2ridK})&rX1X}TC0~0zV8C}Y|?JaX&%vFUlm}Jc*>Pb=v`I_!5oUG-!`!_ zEn;T0k`|Gx=Hrmr<)~SH!Pgb0_>4m1rKbM+FD`jsyJ3?1dhfPb-pmK1q2roq!)Hr- zJSMr{3fjVi*zh=7W#9kUo0wSTw|lbQylN5|A-LGf^2R@DU$KJET85u#BcKmTbr&*8 zY(bh1^?!uB{S`9#Ao&|Pa|iNgd(!Y(^9|}{q5p1Q!h&#khDw!$g(<}6Hk7(ZUYtC{ z7`*Kvxtc$&sZH)zO1}^c$#`+%pB^>6i3>mO(XsbdJ#xM(%rb1p!7~eQ5&ML43AE-B zgVN@&xl>M%Cl)BJt*v{kN)z9rz|56MevBJcz&jGc1QX3KCr`GgBbGs02ALIl=h_R_ z@O8z!6hHFt`ajDfkU0R}wJ8~VS=U4%Ju7ezD*gh`LswvYD+*EpH7D!Q$%{!mzBOkN zLy@L8YCf7^uw9OBL92Y>c!s~SVXyep+f9OYx(KnGntMN721zXGWM9ii7$osU^uqv- zL^s&2(PzV!uf+m8+Jfyf2NnS=wvzsgXD^*!YrW1T_xjf?j(D5vzq?fgvC4R8?q5tn ze@X$vM9x+elj>>u&!&-g*_hJ>@XUf%OTQ_!#oW5u8NkBiB zR+mEno&xIn!NM8^s#@R?wgmG@bT&#m>uXCGghRdR7J4iG+k!o|qpA$wT-zGxlfzhab^{But?+{piP%gDV3Cle|zxh^snrCl-|CU&#iSO?n@z>;}iP5!=o7#{K{cA#!t zl>s>*L4*CuGm(81>|*;S_zOulGAss9VP$qd{R{nYx{USpI$B5Tr*L#?f>7<8cPJ8U zV$K#Sv!TVpHpoVX@K2kuE|&qXMpXxXMlS^8XwXUul!xs2tj@f8u7#I(23b%#;1pp$Vsohqy8Ty4^vw#!!m|xB^Mw>N~^4i7SrCd ztG7g2CW#{}Sh$m2ut;c_BmSW;Vx-gF>Xo6g_O&Kj?Cju653>ed!kYoSe&O5{XF?pc zR%kJmwx^Q2VKi1uc3(RfaFJ|t{5K4&DBhrr&dgRCD!cyo<)WB>FP{s41l-R`89_IaHeC<47f~x>l#! zLQR9U0Dq0MX|u#%#p1sa`LsV+`wFmhLkd@4q*$ut{vo#V^{i8#@b3{${2RTZ5a<|_ zad7RUqZ`%4Z-V1nUu56=KewJ@ep+MIatYJ27yGh+L#cq`1v8^o;dZ}0KV{gwieFOx zi&x3@1Uv772s7wKx}tQ^J4}hYx%EXCP0|fYrycoCwKzlqcJuON9Q`h-R@E${7L#k8 zxD$_FGj{gmo-a_Ijs7~Fo?ePO$Ue-rLEEdOKeYFZBAP9Je2uYErEP<0FkRb%cOp?# z-AgGl2&VsU*LoSa@cfZ-QD;~~(22>-?zklj+QEpD3Kydj=FAJoj8ki4MeN;<>tFS5 z?+1oen_@dkigWGo=(nxy<*0aeNAm+AN3OFeS-wFFGe^}r{eg=C)x#(-cY zZ{EXfB#{b$jg=oC9b;xJ;&wchDqkSn6+c}6T69ZZm&vP9)!~B$Nw&(rz@?brS9Cegz%97(;|>G`TENJ@ez^6--3wvz&;V30u$P za0i+4eAV}#16X0&otjnUZQm7a7IqO`0=cjfPLdDwNXggK$YTcm4qy~#$<+$HSx~!j zo>GHdo|2`^&gG{VD*}dOucG{?|Ls`}Qf*>$L;3NA<+jJ*Nu6j2N3khO27M%$fGATZ zYTb+)yI9Y2I+@K}(pFm4cEF_la3_HokoCap_!;~k;4xgN8$Hg6432+r-u4B;1y9W) zsh*apnNCZ>l=lT`d-zN1w{dY=p0|uQqGi->KQhk-0NE8;g0`VMrkvS*C|CVR;xBnx zV!biYXjI`l-21hNWVJw5;9FQFpRRb;SDqghv=rgRyf3?q}GU_owF4D@dNf+$c}CG zZXL~t2_wvlv^fEo2EpEcAZWo14b}{P_DEE9{_+f|Tri z8OscW;EhjVRQ9@2Mqh@mtNrf67@c8kzI#Y=53hCXO_0b?%rpcc_{w);1Sh{SY<=gg zFF-G&9a&)*#y9#pQw%+rN)K*B^&L|;>q)fAyN2{hsz?7;x97F^=WQXa-#Wc<`dS^! zhVrAHk!*tZh+Vh?Uic;5_@pVP_o{7PN=jv(1iHOuW?)4+ZL;>eIZ-hz39wPI;&UqR znlzS%y=T+2BKt0`gxt$jD zU8IuS+e9&}Xr=t&3*&z)>F4#0g2v{!C3}`69(J*Hb2J$=TfJN3@O}Jp*t$S_3g*SE zfM0$`aL_H4w$S7)k-jJad3XGo)myG*Hz{r_n(H#HKTo43DM{Fhf#`Ph&5_VD?zgpl zIb5;O>-eoyUN`1d7(Y2?)u-sV5;};m&^M-tpALdh<3SISCPs-B2Kor{!jwP!I_UfR z-wHB#{Y@li*3Q%)pMegm#x#f_kH}mqZflIFl`>>@rlqBa&wcHhkqXNh&J@{-vX0>B zCF?U93k!xxd}#SmwthZac-y2%?#{Da*-TVl2W9bRH{Nu)*JB=njP;6lS##p|R?33- zf|o*(OT>~R#%|H47Wup#$grDzgzAR*N9!7e=xTn2SbW9wf@ zFxlD7Z)QW`eDoA^w=RD@OR=yRN=vr3mAe?1AMAXBoSlEwY)l#w+X7-95#wnYcIrxJ z_bja^v_i5}=*x3QU*2HPC4(BMmPpmpZ~^c0gPUppbJoO2mX+R%mtnSvY2g_ej5)qz ze1c@{oZP3|O^%%vLRtmuCDpl%ZI7X0j7j-k8($)7rMn?-o7Ae7YrvL?XlER~n4bU2{J?r0(4(OG_W- zHGTIj-8TNkqRykyIcus=evEIJ>PZ+;Q;k!Xf5Wcq*f6tLvP5wQA8)!1EnMVYn7tJD zZ0Q}AisI{x`y_~6+?f&aLYCcW7lXQ5=7t%+mH|RGiL%VK^1BcC_{)ve6m{g~$f*UBo93?FcCK zKJsUC0Y}5}O0sQv4{yb;<*L57egRt|#?9c<-g$$4b`&I|SbfZr6ZGdA+6rPSMt72U zFMpwmPj}bF5nM?XN&9o;QJPxO2V{vBEU+`_yP5CNQR}4DVvMPwkeIN<-z6^k)oiK9 zx`&~*oIm>kn8*w#&+t2%7x*+brpjAR&L+Ly>-yDU*x1j{4?QTR8DQTzq&+3_0bNva zH1DzaPAoZaTobYU`?0+l-YZ+)g|URk+>Sjl*z1x`IW$_?Bz1#i7#aNCq3%~#+0@bho12v^9cu_$ac z?%GOKLF%R{iKE0+?W=LYP^X|=J&|U6OsH#?7Uxf+2`!~aYGKiF^<0yJEbwGTE3UJYxPmhF;`Yu!;dqz$1mEt;OdDjkc%W|831Z{Uhpg4ZnbN$%cB zX&5(#q@4m7_amIE_6cjM7N_g>XNCUS0OzQc2-H%Q8bngo(R-7wX8PXt#UMmNl49XO z$=lUruKWKL9IO*z*#Be!h+v|+sS6a3FAygydNC^@J1Ji?!LA_3Ac?!isM~m%q|!*j zAYKl3cRS_}{n(+L`-_gAHYHM>QHlX#$(@l4;Lv7TTU(Q%QLJ-1Iyxr`l1JvOp~a4G zTLXO-I{ zp>mEZ0U7tK!0Z8~N?nA7kW%@hv0sw^5(1aIl}t@meQDD#b*+;28{z^-bWX zmSC>8Qo^)tuZJ_2jKXAN=vUm?dDc#N5sX)gCIoQGI?^%%4)ET$sNjV`y z*3{!3zl$2_(>qBo^feya*nyL%QM7K-9A@LQT)L49USM}E77Gk^9)0SSO!(Dj^28&k}154IQgY6iyvGZ#j~pcg@q8113@%d!x(mYQhxqI_CCv#|5JL-6T= zx?tAq=A9a2IpY`xnC(~Cs^(WQd>p0KmvFQohedk`wqO&#o%1@+q@OY~&o71Pr#8HF zciA_TWRTs0SWI*@*KCRXJIlQ<5--xr{LYsmK?RtvX#di1dr3&~FBP;Q10A@rW9f7G z$H~~Gn>EJ4mD&qaqHv&3c+wx#C>R`fYB4#h`74`OHMg3c$c4FH$AgY#PC*0~M%AAD zHdaVm)A%8V{{TMK5tfzhV-E%v96vOd=ihxJ9H0`p66+(zmp*?drla!5+^S7Xdt6kmO=#$ozBR*AXL=U#R6`;GjPP9AiHJvd-h?LRaj) z_$(j>@!*?^2!ue`f}8tpEXN23s88I=dEuT*K8X7t-(z&9ZroaX5L71aphw zcG~>_jJHi_@V}_5Rte=InmM3t)qWf9shPF=$f5WWJdZXD5P_x=fxTjHy9u^~2t?nR zwOw8x`m230n{dvUkE?49>Q_OsuK6(CLN4jRt$J~|yWGK*0R)=-Y-zSgDqIngmr{i? zJgO++ZodSgSGY*sg1cub_8IYeetCs9ICCLY7fwKK{;k+g_##`L&^yn2#BDm>&N0FVWRU@Y<_KMhxjBDCg|cB@&s72XfO~i=DMU85at6Fp`@d3P zYaPkCy!+lev2P18to6Y%wCc4k`42CWzzrE*W>=C-)N2E$JpLG>xeS8*+e0B*1V@egQeixJs*BV>=~yH<@CDeJ4Vj?Q_6bSj;~+l~KmlElTt8iRT9g%% z1nP&ev_a(5m$sR_&Pvubp1$Kg{F=qn-+j#ERxrDM*Is^$(Y{`vM)ghzjflWOCs4F+Hv5?NB!CIQ!17GM{nQUOmOpR zPQ-S|qn`H~r(rHszv#6&0_V|2Uj)AID_O~v&}*l87P&BTDlmLue}&4tyCbQl7oCYL z&d+a!qaHGU#qyFXOF~niNRJ@yxKZ<&v51uL@q@IU0VjaQ^tOUqX#XpwBd$Y2Pf^F{{`hQX=W0=d4L$1Uvz$Lb+Wm6-1mk@wFSaQK5U)5NlLp+1$RZQC=8UB z6WQt=77F?LTi85GO+z1lDJ+Xd8U9qY4Et{>#aH5r$3QMs@op<`C?@2YJp>aB(PbS# zJO&A(M@&L1l}D8CYl3<6S`JvQl29#tU7G)QLE?&`2!p~boEnxhU>-NiSsY?7k6 zVgtVLe@`4;)B>`NqxgVm)PjTtdoCpvMAT2A8^-_iMcbI_&^)mM`(rId#&Kh}O|9)C z&X24=rGtXlQptT%XS?V@+SE}C;*+e~@AL$D+OXA6ZlDk)h7T40E?+1SZ;+N%PvkaK zlnomBuMrWuRVX}lo?JmeqwDYC``=E%Bf&%T8KzA6SR4F*yQRz{tM>be7RHX#Qt;HM zj*Dm*!)jexfUJmw27)!Qo-5#;lJ5)pnx{Cn9=L zM*4{V! zOYgcXz5faW>M|J@+c)P=8c18aRQx*luZBVQ0KR`0-b0fXTF({79S{sNcw!wbjZ_46 z>`=WQJ5_*?{i^iC%OtmB?2J6=XRF3fF+i&7CL+(}hP58=*E!7A@O=f(MeJO4i19JO zyBeBCmT=G4g)U-r0NB%D)ikV$dR^6 zaU-U9SQ^+78;%!_wAd)AHk^`#ak=FG)r;`!wEqe_*Neo@H`5;nLzlM1xd;OY=SZpG7nxDbb?XNY|_+B11QPo5k23}G6=v% z9{H7Bhp?3EJ0gJZKVzTnbr{If9@MPECqKG~<;TD;89xoj9A;;* zj7m-vGj^G?7Ho}6u3#z*sA2}+*+Ry94?#@IB!A}#up=>dp$-E0?YpuMRU=o@{BoY> zjV8*mrg{$fMGxY2Ra@M%cc+J8!pyP_J@MncgkYF?*5%=G^^DGci+A)dWh^QDSo7QA z-0^dVjBD)1H|nOn=0arWQAzf>-!{KTA}sp$x)e6vo2N|_9B;M^>xrFY(J!cbkivY0 z=~qr)&svmOFak|~B0Q7qfE=D02`NHq-G(xp(yc3oqeKT;qR0oW9uX^G*2w#V6G;4D z*h_0)swwUMO;eAicY9%=%Y#*hVErZWdMDwKZZ<3$qJ53b@`8{~Bb1>JFw zuBLG%t}_nPIrEjFuqfcjI#aIrMVz@ot;pH!t-IJnU9#LySq2 zANp|09am~snPSwklmnQ57EzM;6F@Hp>CYHulZ!9QY4!sxW<6dWj1z~-zj;frwQYMD zNpSj2j=)V~BcDIYqGp6x$G_5qm73Bj;J;>1Wr5@WSUoqfH#CYZ+w^b#{ErlAQS+K# zF9i1fw2|+AoyEXfT1okZErT#!ymgE7S;m!~Gw05}JdD`wxdNHZFED)P#7d0E;ITQr zbBkkDhk!*b_`ZSTXNRb9E(=+>XZY;qeSoAwtWLg{q9V&H$g;?R$rE1reBN|Q}p+%-naO~@tq)#uP-91Gl?} z*4|!w_fN&P_eADwJ=9zEk;(g+42;Kto=7KvET+^7tC(A6fVD!e7XlfJHzg#7TmrH5 zi_LKh%`pdX*F5_6*E#4N@&`c7wmZ4B-~aEMSRnlGCGu5f2!!viZ~Zw7T=y)&oU)hW-HkSsIaODKMJ!*?$_lMcHzY zc_s^H{LTM<+*I(|yPyZ->N5fePI1qJ__ZXrwv7>s$-L6$3M59 zYwrRy6s66~Hhv|e+@Q%9>1%gRg&`o7v(0w*`Q$()Ym|jnjeh)`h$DS?M2ct#`gaW? z&9eSfL6>J+1hFd)RwQ=yp#di#gRAd&N!0ayslh3iH4(V4J?7Hw-nee;?#M)Snau+T4JU>`olKD@%|c7s@r~EISM~0 zD-RTTJwX&=WTh6I^!H=L3UjfF!J#m7eTJl2yE`yZ_MS60V+t6E&L|g~590)ad&*~n zFBv>4!T#Aww16!YBT3ei9Tprv9ZCgLkcK{Y3rJjjR6`qHvV02S{*=1b`M%&WvlyFv z{%?O*ci12LB<^;YnNRa8MbcvD!A;dc?VQ~|bUQ}ar^y+h`$Ps$CXkFm0p0qbVNL(6 z!zIV?{Qytwl9!UxxQ0EXRhlAO+Iom|)2kNsa9+0pH2`Uw4^3QC0$=l%Ej2aC@^N5) z9XAWpbeUDP^R{h2*->le(sL!Z!n{HDC&1g5$+(=Rhh>@;clALR=6!2oy)h{mr(}D>Rp;jdob-1=j6nlYTxI;6 zpQhEBqc1=nWPmerYt9{RRg~X~0_@WYk3MIxppB8?sQg>4cL*WY2hhr3d*lG#Xo$xP zspmv*YOWS)NK3f7FM!d8_W=V)C^8Sf?EVvt zP|hPO0(<8%Z@HNHu_}wjPwWpjgu_Z}aqp@PA;MI+=k}(l@`NAR@xS?E{HcZV6I@(8Wa8GH)5@(Y_@Kh?tFVH6AgkB5f zsAmUItMAW9NmY92ooMik#tksQkF_Y>YYxO`w4zrP*HONxDvx(EYBD+$A}vIC3i6-bj@4FDi4tHCCrXYH0X#XLQbu*YrBIx_o}6eYBs7EsU8mQCj_MvjO_#qb;J8?N#whoeUU< z`soQ!L|l=x5bR!?UC(_a^=+gsL^5<-XgfofvLtHd!@_;jv@}lJEXFkMC<~QWyzZNy zXAEK=mfYN4x2Tb7j6`N()m49p@dMiLoN^ep-rV=BVQlF#iVZ^*EU zFs(9y?c0Lxn00lf-|3ZS0G|9TFSt60W5jZ2dSp0>hpG{=n@7bO|gfa1FiWN4!{^<2Lw&Oz);3{lJ0A62W7N;< zH21}U&il+(?dhRER8*d;bw_4x&d$OJE9*qN!4=2CTMmxhaV^aB_b z=_f9W(`AEzdT=%E%&!?ZoK~&6o(%5NJG6g7E_sZPkiL0e(KmQ|C;R18G~}qHi2EO= zU5R^G8uHIF17;m*KJL$S2a>{xLy!5JUxCGr$n4@8^nynOvsrw5AKuG#}y zL#YyUI}d#}n`K|P3YlI+4xktxW_TF1bBYEGxAP?vEN{;i`w`mk(sQ+1|E2~0GhL^a zfo8cYU0Mp=>oTCQiY{a@tUUV9ECe{c&hI^yxp5MAX`v;Bui6P99&P3w%itYrDTG=FFHWishztvJD73q`s zD^H=rtUx%2_I(ojB{pcSTmd);7u3L*KL4m^g?5998N< zc=@LU2;7lcW&8~je~Rq&`gw24bUnT6BGQ1ltLkO@cXE}A#Uswh6_(EApW{|GNVJMc zOZxR361n8&?Du~tA0b<9idp_J3w=kB1GGghz{F;DnP)cNxNMNI=D+V~ z7}UT+wh}))@^Gjw^S;*~CXsHCNoh*9;N*|;D=q&xgxI|fg1zAjY9OWHmZk`ZyfkZS z{h%Mi5Mfu$zK*h?7R&U7Rr?=L294URC`7$9ZRlR`xgSN6K5WvQM`sMMf>Jp- z;>Zz$xy6?*IwJ+;325jt>-5Hr``B$?&nS^BpMYl_y^<&au#_)i^*q`9Tsi+$Qr{D1 zXWQVN%h)A#TRxFd`<<+`bLN5{cS;h=Ll8#?eWkl)a`E*vX=|<~9xI)8Ru#duLwxBv zbi@jxS(J_o^}j$$oebAFgM%~U=9{ptt#)Y(llXY=Tl2Ep zCw!G%&FJ&&v`nD|F-z7=>cCozfMRsVOstWle^Z0{KOK`OfprZz+;IAKunUR|C#byh zG;@6WhK29@)0&IJXWW`D=4@ZAtNcN5dSz9q+QP?-mz={2kAc5wxXaz@^6aCmC*jQI z^>)%UvE-PRUx?KyqG&do<7lzvse#DfJUDz^RT8GcDvlOqj^G#Va776E1pCudW8O}8 zp}Jmel7j!}alzhpv0fb`{b{1Gske<|`W%}`5X6Hdy6h>k3AE1fktyo@L0D)*Fi}h_ zO?I8X2iecirpbE3ROfqZn&(@yB5>n~#tBZweJOZ-Gi-)8J+7xV#obr&_vm@!q&H4K zf-iX`{ei(iW-@n(>w7yyEcEF_&U=NKxsgjsVD1CX$y{LV4*!ct~{eDy*hZ^zb{!Drxc1vS7 zKf7$a=$<*w8~S+zL@W~GXu!121Es%4tkCK@j9rB4kt^+B3t8#LwTf5A=5chpt19k$ z7!$~QP=qz7AYy+GPgTZ@nf^wS9Hq%56EHiz?rBUw=`9I;Uz&sD#CT#I2*{_+?(**ND)ZpCFYym>=)qJGsl#|C z1}Y|UzTEK*43~md%pT{6fQ|;kvah=KSAE7nTpz`Lay^ia$?a} z@_-i+TJUND;T?ShZ@PUjsEK^;3*T^1KM_~lp#MNixWuKTT!>HGR-LC0gjb&D*X_+; zMX)RQoGHlT-s(mbS?^_|l44P+4X7l5b?78<@`v{gtw675LyCdy8N2HNUE#0N&}=Xy z#2ktf06%|!>Qof7u(zceQ!U)J`39owoRJmpC&4Uu4QfycG8HM(SG&_&vNc;%inSFB zd`8hf+T74}H3^c${n~O$p3{~$P)h#@UAW} zra>P9b31xDqSyhSl9E@patdLWP~3)fO@wl-gG1l= zXH%&Ir!#3Z?)=ZDOikaUBTvcNuFb~2i(2`kTd2*i``|gp&y$uFYfUrl?k3jR^{hDP`aH2^m%Ep)mKKA*Qb(DR60i`#!OrR~PR9 z54nQiw6C8$lFgc|T95VGXc3BP)s1908A3750YJvj*XL6R$r*f>7Dq8 zLw2;P#6|8@HGC2!pcl0-Yh3D=ZbkzJw<)g2+W&iC?b9O1u!qm)xj*fU||i=0e9$;&ex zI7AMF0*`J^i)VZ*njgc^_`~0URLqnmc)-w6Z_0?c3-h+7ZGBS}{$2G*(t2pABbi_& zJ$c1f=6SHMD15p64lvn~-bb|n&Vs-z%gQO%X{cm060VaG@598?CTq5AeRY;Kj99Bz zR>|M3$NwO;<&_35R6V2ZW9cxZii1St+s3cpgn-cnfiC-fyTn~9A0OrPOroa7N=r2` zo>sSSYQU)?H+LoFARO8aZ^y9cbyeN(sujL0A?^1F&1+8k5&aZdcjbh+G`>ZR;M(%$ zrD=Vt%5!n^C(6DwqP%@oEoC3I7E-rRk>Eup)pCpbfcO?NH78MbGq9eQPo~S=1bVTY zYb_WwWv=3V+bm{+=l1-y+b3;c6qE`$xaG~<$Km{(+e6?2?^ z>8a-XlsIeRN@XZUJ)~Y2XFH;drMf4*z)Kei<~DT>b4eBKvVj|(GnpQ8dxpUYK&0-e zBqnWs#b^lL?LlpnRxL9e-MhTS)R_GfJ7z634D&4t8= z&hl{&ko>IAtcO%grP>BX#}gRpK#9Z-0G9O+E22{I!M|#8o+PJaFpPCs@vKOba^Ka2 zi`{emU!AYZxg1s->E=S^XwunrmF+9AesmR~Nq?+vy~zcVh^|yr@G4H88Yp>)4 zAGIiRQ?o(M`=&yr&`k0{4IoC`k~w+1FIB2e;!8#^ns=C}NG}L1*u24L&d3E+62EUT z7>y`sqyw@kP$@rf9PddDn7Q?*?PwqY=n6 zU&9K%Bs`^6@Ebnb{b{LekD}2~rsbjkN7PrwMZJArUjwB}8tIadkOlz}B!`fpyL0I7 z3zAaO4I(AoT~Z?5Fhfd-$iPq%QqRHrdp`dc>Pyd@v(MgZueJ91BJE!6K1}zvaiz;M zBr2FHQv%@um?4)6T+3peYySe*FTne)F+y~LsK zxohzxwzOzH>Z7Iq9aRWQo!DRgC$9!udWtd`H;l&Hebq*W;5Z}Y`n5kbOdO+8^4jk`IF-iiJz{7hN-lw{(u-v}Ta=X4tc`a02?r(c1h@l!kGO=#mCuUp z7LqdH%iqrVf8>*X+P1V%k%W2-C_i|oKNtxFvkGphm%0=&^L@;oeu9EY&kpOgM81x% zRIhHP=skXlIZgUE(M)IyNIw-7WVG!i@9lcPzxWai80VXEXo0~RwT~g9vp(4X=A10DpK6AX%^pUq&PtY=&B$OPt3^|JSK=cM{G|Teq7ULa*jq2ICIh4Q&r)pAOJ?lz+*p%no-d-~J)%ILn)I z6Tz#M-iLtC`{zw2Nple8#`7oVZC<)cDV~y_e~y=T#9OhvQ~oKR{FNY^?d;DgsgENY z*aRC1Mb`%84lokDBS>3u@=ubQX^(B|b?jDZ{tnq7+i@mOyb(sF@%v24Zym|xoFtn3 z5gJt7{HNTE=dTRtO)i5`8g8z3~d1dzikwJayVv;Q*;;Ii>(8-z6lAKxf(ZZ zZ|g=U=Ex*oaG_Bvq#4?k^69@;m21|C$>X#7n5~$YKl-&~gUk1fJUoe}OaOFz6}Wb? z!15zHS{}JeHGfW+irnmRebi%<;``Cf$bfYZhzX2djWuQ?$`06nt^5iG(EJjC8dds? z%RK5XxSiNd#KvZTP?2D&E%#scmB7r~^3<0W8NEn?&U$AqL-+2eoiAoLB>-P9Zok-{o<}!q`%8-D zN@U<}Qa@XEWh>1Flb<7;UJ`eLx8_kRg;E0;W^cTNWYa)y0LuGC_A9IVY4c;~T@JFh z;IMMP)#gb#)4Um*iBA|H)ElSo3~X@{$g6y~?&LK&oy1x4tj0Cr^kKN~5*Znm2UGwmpu{j9OR;69n-;Wa+#UZdNl9*avz*pu1B)W4TUq=s(b1MbCa+AdR(tcb4 z>P$8(5OgNR*96;d0{bqSC0uo^{|m{yyLQYP-LosJgGTq}v|`Plf^U)NnBvLft@(0@ zkFLys;{O~kOJhoIHin`O;00AF)#XD62)_O>#*dPLPopGxAuSq7nX)CU&R|B}y7$_) zyvfQV8vqO13|y_Yk&yqy_18Zvw_RUwNe3^MIs3;H5!Qz$3|NJepgqxB9yVjJ>wE!t zawpo_wSreOEnjFnZr0=6n*Q{Tu>~^vr%L>Kxr*=Hh;9B4dj}f*nCMMJqW9*-XbvT9 zhsL-z;6ESii*W~7o~_MZ%vj5yRdkBh}R0OvbHx82_v!;QW%f`@o5)>9|u7TKr~-r@4%h2?CWYZeDB^$zHGRgUQ1Ju*1%Q1(*I+IQhV8s(1VK#d7i` zr_)U?X)fI;dI5j)RdoBxko<7$Z(Zo~FBlw*u7wm&2!E8Z@AG-i(trufJ5szOEb~qc z&G69xmGy74GI+%TjC+D}5cf7Lj4DXlw7c)A387A)4}Swg_g<+E>69leA*@COaWgxU zH;Ek<`F4Bwcl>_tMgGn!+Fu;j=%SvN3}b=A)<=d%vQuXl47i~An0f`*`5q_adTnAQ zBh^O`B=@H_%(``uW`}wnf4}n^&CU%}iqXGSB17E5PssnZ6raBvt>3Z9P5RiqC;4M5 zK~85Eg%k>BVzy?&txcw1U*IcojjTLbbL&#PXUC^ALmp+{9a3!JYKz0@+MzmE@6bi+ z@yhgW2KC43y+D)JM(y&9Byq*8>}QPa39GzzIsAFa$jBi;jHFnvnz!qS(!rffdLHnPOv z$JvMPX6zO>-(vn!<5i`W*o7_Vtapx@=1T5aeI*5@$g`7?*M^6ShjllnIhWkzq$}0o zZ!N$O(ZYwO*BJjz9W;P3JcIkLt>U5%mVeL#`^a|z^}3^E(j`o`A>{ny&#j@z@1l|9 zXS|6;t51)^vt6$ze@mQ=yWx_JwJ!Ji7`4V0t|;)O;JhuSO9gzh5keHoyWYY~w#q)2 zbk3+}RKZ#~Z_Rn1ux!!iNHHK|=@(fY!_ZYtvTN)8+^vUrt{8!ppO#*N-~rVFJT^i{ zXASuCLGwmvm(y1_H<*#vio&$0=5JPqI_UpBM?iK$F+ibI0t}IH6d*hKTB+d`ogHp~ z+c;0N(>X`u%p8qZtYV$kx?cv^=onZ@UZkSu@t^(YK z34xRr5omcf2uhqKZNiH7>#Bk$5d~aW(sMLA$~eIGa5PyjU3mxf*e&l^iTecG8fSHC zf@XX3W&W!+wppQxP@`xta9}~>kteN@vP-E%+r124E-*SP82sP3E3o>2nKob*^9yXgJPQ)`)P%jz21 z%ZU4G*{OeVi8FY3NHstbynT=pkM7YE7yn%5lKs;q2NuAstG&|Spl+hmlvb7TcbsThM@!$7Y*=a?~QvUk+4S!C~kl@7sE(Y0u z=*ALu$)KDnk>K!DqPJv0y0y{R^xb7UfQMJLy7Lu8e~;DC4B>C*aesW|_khM_=kyG> zeIAoh9NLrH(NQ%>&Net%@a_pC=5$?Ok6byeQs-}Ah3qAi{84WElcOLh$!na{X?`QB24T2EIDvlRUObFf zG}@pTbHmE7%{XV9g@f5x;sf?xM1!gPX7RCKvnRr2TSi~aM9DK*wjK`1#^XdCr8Q#o0 z$s@cr)&fLHb%>r3<~+#f9cwa}Tc}$K>4G4D2hOt;~(9qgHqICCl_@Lrq=J9A7&3 zXP10=6AXzIx5Qy#2baX2JsCq7lgD>lWUv8d_63nkq><-5GIoUCj3sJ~6QY0m2C_!Z zo0pX;u41Io$yIbfvOlsvmx9?*=BENN;mvh2SG~}Om`Ig0pa)CV`H>TxqF&SZv6-mQ zMj7zC9xnLz%n6fC%3Tsx)*-U0f1`(~Y|)=;?5F!O!Ng4R5ip-q*X}m^pX9;vDtv@( zta^r@#p*fP5|e)@+xtS+oZqpL77hFonQ=75bewm8mX0k#ShYd`^?pF3R|17&K;i#B zQFz804HkeQO3XrOxixaBw?h!r-~R$CM8UVqiZtU*1S-f3UrZl-mwH)th`hi%nT z)xr?0_x)q~jxI_4Xs$qO61}jDc4+UMkp8Cz9*IN(!)Xs6xX;60E6eFtsTM0#uE{P& zroxn~=IQl;NY5Mtdb+heav}>pv>>X2t2b@l=eCu|lWbIGG@9BQ&n3Y6vS;AI+*=_M z==m2nc0A=clcsec$l3!}3q<$DJWhsRs!*-=gC?_<_Y(7Nd7OdaPoOQcPT#}SY{yn8 zMJ^2YezO~MLDsTGbPZ?d=YzkO(60zn9HO|4RUKaUm4(SP%EBpR75E5!89MekJ6?)c zdTODySf_Z(dr+Oshg7h@)Y~oxmbQBynCudSK7=mVvZG%Pre2-)vj!|6U|KeEMT< zc@!)n8avsm$?7#1hle-Zr>DsFE$UvD$%Px(V!A1j;=ONRC*_dvYJMdT?&S1Aa>J6- zSe5UwM_4Xnu4}l+&99mi>N=LKE%Gl4>Gud_N%WEpU;SttT}@b3Y+rdU(N}PQ;V~TW zfx0)=@4m;{-o;rGO3!u~o?O)*>t{7a7Rm|9E1l7O*ely`O>^9E_+sCoM_e<~2oGy+ zpRn<3&4e12Xw0qya{?0!*&}h1zwJG=4RmP@C2qPNsMtRw2vnryf4ZOxY%_}b35pSq`^72lt7AOgv*W=ljxkkb8Iy zUxi$=90&Sd`zNkreKZb{X5dM6?Tvm zWZfqbds%c-%}Bh@#3`RpP?gci?y=SaR-ZMJrg!)pvSxrxq0+M5dldT2<4D&^?ScUL zjTDQ4I^=~vuJ9}hR`tK$Y&7%bU;K@8f%Oi_0H-l9Xn9>HC zG(2o1wfn1k9^WZ`h@4%)o_au2ZNurQ6iAx06RgM})^_u$T1Yy9pP(O}=mG0KheWW% ze8JF*-aV~<+i{>R1)5{|xp40$zc>JcHM?RoFri?1<(t=&QRjTSztZcVG zyUUx85MmOeC8@UF{3do3DzrT}S>BGY+W`=a5H?+U`(^!s@IsT_^wOEhBUc>E@t@^K zSUWt(Z^`gv)W*2o&(`x}co54uTp?Q{;2zZLKJ;9vl)RzY>DWC%6 zp>Qg%@+28&3P^IYU)DCUL%#z&NbBPD@8IvRa5^sOh80i7Pfve@RaB_gkHucU$C7Gg zfr$lor(4t+#P?IL=ggn6BljIcE9~0y2yVy9=YtG{PO!TR=qMs9#+tt{)D-1ep$9*L zZqXr!QVWe(mN$=vWs0w&+K+9y(Q;{c3Gus?_qA1NdsfCRLny6?kW7X`idWo_ysA#A zvA$t)&a4nt7^k~s;|d*31goEAE5h{nkp^c!(Ojz9fcirMfd>SqhBgVc>2HZvL$b7+yCF&(o~*Wh zy;q_pPLrlSXx^EDvGo$!Gwt(omsureQKE6mZ8J?Wk4G+sSZT$xnXEaLsl)A$0MADPM@ByMFvLkumR2PS9n9L6>~~+r$p*U5Xr1 zg{yf`V&CC5~^mkVIO9BWAyZSMUH(V@qQ2r8VHB6a%>K8YiNd> zOqgKq;*{!VOg7dcL2=^kkTyYsq9s=wG4vP?Dvg=Mm8P84RX2pbQDi*z@}cT9O!B5o z{aCb8r_r-AsyIiWMEppS0cpD**v<*gns7qRf1t_Ll-+JI4pT3YmK4(6&$-!`K~8iN z_C!apg;731d04rRXl2WcT}d~9zUY9nYgY&IVQ&NZY0WCS_sVcRfv;Lo-$-mjF|7yd zk;d52FHPJpL@NW4AKN~Q6Y?zJGM5a*le)eN38X8jjl~(>`D%^wOBj;8U zZkNqmM$`8En%;??2m0L-Mo%l+txgl!rr3uPaPHOm$M}v{;(_gZC~aq^=^<%{0+;8b zL=m)+rf5jiFI)E7;eu>B^z3(EH27N9?(2up^g}avyxsA@`_QjV^L5(FtEl+qJ|!)2 zN+|prrCW2pU#sLAO7bT)b}w2m)wh!O#;O;RkYq)L3X2zc0yVtxqd8-jP5~r39aiAV z!al_}(l`+d=b-Dw(JCg-`bJxBGwz(w_2g9PzHCu6BF3sHIV0pGN1cMhzh9)I*XYVe zxR?;RTN0Daf5IV2Muu_z;^*bhD zv^0!UkMNS8BeA5$bFP-S+x7@K8Llet?j|$wgQY1{O9SF4U1`|}LvK|&@4eUdL4!3Y zHRx&9_Lo~(ms@#Y;g1HKHYL(3mqy}DNcEAMt%J~-WR=63Becmb?-1I|*{uMf z%PQMO8to;NG$Tdi^Pzxl$LZcV-r2X$t7L|w3Z+B*%Mk%@;0w$Y$(m>KOTItDD`fGx zC*_bABc__m0%ic}a?>6DqN>4Cq2Pol#xX5#9ym~inq9a;MPaCen&ejKDHLG8i!yfC zrS1GT3@aE}lvis(W0Y@Gygpr_L)M^TZ&MK0GpH1muSACPTIMm+YR0WD*rK)Z0R~jL zjSNNAlLbx+tnLtV^{C|}EA`We<(wO72K(%thVwAF%Zs}z@tFjAjG0rMyGZ` zVlv&MKO2p>9{Y0o>tPIbX>7YkZbnu@N6Y;aV)|~Fm&TZSPNp(N$wg~P1|h82*3wuB zKbxwlKJ0CizI4RXoA+X(i0t@qksz^q`Yt?&?iq8&mPSd4*nHPX@>zs}&lnCkVHv%d zI*F!xhcHk{?oFvZxn$SEzkUzSI4o}Mb@tAWy?j^lF|Zzp&3d9|qo(bk zs?DcK6|s9SiUXzfE?X2c_1qf25QtaZXps5T|gArH`PY@R=wpiglls<)@H-XzcRetO-_;2f!#z-WSr zmqzumz-X7qqlYMGy>3JCUQu=T$DM@)4bd{2=nxf|^e&lB3{S;4(j>pPygp zr0LQ_s7-T9gT%-~e8T9&DW;D&A1}BiAwKO`#RSzc;^2)}KEJ)e9ol{POJviCJod^lyGMD42Xb#K6&YUu zfo9ox%vRHyHG#^G;WoM(kOCCyOtV$#{lT>beku~!XOn9^6o5nd?lT3$prtP5J_ zr(+lJ%54Obz`RbjE-0Xz`ex61vQP97c@ zzc)|@yIt22SmcN81v5r?;aSdM5-{_6TSxY>3FoV+cjbl{W8#^~=HvuqzX-lDYu+mU zk!zsJPr}>ewpd8)txp( zGdFp}F!0HY(fI#ZmCf1Zta93Qql`0?n{d#}tAC1z_aY_=8WTbDNBt@WNh=M0h4x5u?sHgCRc13FpgS0P#!_o%T?Ye*3L$tzL7)1FfV=p@%bpwbTX^RqN z&!I@~s^~yEm{MU;d!C)j=;_!*gca=~N;;&2CyA~^7um&T5^L$Lp=;J8_a*%w+8+IV zl&2-APH$*+>yXwC_b#Q0q;uQT)H?~Gh3{zCH}BT_!r;Oj@MSc5HjG07v8*tG?Al<_ zc(y|l=P19o3OCU+Ob*SjjudZ=0X@~MTANWmDDvqj{OZ!2@gsd#=nwPz1gBC-(Bi2; z{1i0;sIbDPIx`lh-6M&fxhH(QnXO%);#Z)m`GSuLs&EKy2ThPNr#2xSaU6{l2qasK z7fZ;sFS-nFtxi_dFpbBj&&E%uDIy!3&?X%*01DLR4poNG6)P137}=irGG>P@)hq)% z$-t@~WMH9`XUEV(jk}(?4Qf1VOd!watVmQ=Vly%d>@AKgb$x?5Pj{u?bC1oeO(sYl z7W6Y)a+n&=9rbrUqAU$RroZ%s0i;_e+McZRY7E6#W zV)z!r6?7Gvd;7t+x8PAadgR;)DO#oyz{$qZKYjc}#cgE!4j};}%5WN}7aoh{6{A=Y zRA{c?z#(tM5waz*1s+jjyTyQ}jmOzwAy$^wZ_@*?7W1?-WPcIP+kiqeM3dow=uSTt zO`7Ho4ag1;ehBq~I}LFTwJVPZ-G{!kNm&>p5^UKddfZ=Z9@WW zenE}q$v05sZO-Xj_n`E+4Flu{6SmtD_`)N44HZ{2_jaFw6Ectg2pGPHF$(bImaqT* z{0zkgx6L)3>#A-Mm&Qj%$a-|QQ@^44EKMOwNh?w-*TwFJir{pW0QvfquBVZ9y-GHu z!Bz?Kma;t`e6hG9Op`Y4Cv6nJxfJCU;*PM3Pm$Ae{GsQ}NCG0{qgxu0gTRq44T(!4 zs8{3|TiavX92?Uyfz@xE!!~K?mXzCY0Ob5JEOFPq7K+{Z6>#|!3V05R!-wz-S3tf1Sofg^YY$IaBGEO zO2Jc;6YhuGJfVTd&f%Ua` z;75kCw%e)+F^LtmZG{_S((Gbvg-cqG$f9OEz7h$LV|)uq2dw}WWKBm*+`diC8vTAU zH}AN;w+1|e8B4J=HG8;Xl;fN4PHX4yk^Zy2cQ6zS_$4xp5|0Vy-h*36fRdMn%jUnJ zP8?ADW@(3SqV($g=|?nBk*9>Uv)WX@P7-9q%bPwHCM+w8%wOUhAS zS}XF-*8QOvDw(XPgc->0ChqZ_^NtiX#q@lW!s+|39@%~O<5(fZm-nWR6xq_LKBlR& zT1P*+S2V=*D4Ax2+|}5Im3KBOQig13bmTWFo|q!H{wMw#ZylAXqql(*JyYT0#R8{( z&^q{}ZoX&E+@=;?CO>WFbFIYdTG<3XURBN0wutjUDH6R(LQ74=O@BszY$fw<=si|4 zk_az^gFQ*zU93NtT!2#|`pYVe;$hu0UjV#H>~RSw|Bwmj#GRq!RAj7ySM2K63@h?& zgV%2sL}<6DnA2UJ2Eox~B?vT#cdyMRba~J6hZNooX%!h6t!W~|sJt2~rGz`xDc%R! z*60U4>B{`%17i>Go<;4pSjYzGy2+ukhxL8Ri zyeekadNWoF-y~2b1po}As)cfF1hUU%>i9SJ3QhOs>xQ%p|GD;*I|wWfsK0esWFCA2 zY<@_TAd(_tXSv`euzjh(mIh%Z$!G^^ToW= z8a8CD(EISF%M8EZPc_TYSHiTOEVZS;@=d1QcFmP9xEOlVUM8($9-sC5I^RI%YT(x{N#mU&aeanD!7_~g3j}psS(l`;v`JxK(!9%~qCO9ReM^=G? zYU}-W_NYplAFE!lAijqq%C|7xz52VY`s&7oCgwq!96buvMucqD^lZx z5D)H9Hc0pO0A|Y|@3v_5dMmM({&?UA1J`+C19;FMwV%lalg)iw3s=FYAGF{{82`sM zwcHNXzT*iUKf%5DqGm&e^Uaj>C~$X3=5(=|pZJ0Hp9$qH90T7^VJp{c8LfB~F!O=Z z6wg)#cvST@5|(Ps^WT>?ZQL+@M_PXWX{uf2L;U(*W7rv+lB-A2k?#~KdbG?Onw3BT8gFdb zx!{?MB5+rzMGt=YHJLV@q{YJ;T55^TXmH|X8Xwof17C=mq^wq0Cl)Q0UD8qtIeR~sNoMid}t3B2-NGnTsk!>Vx{#vu1 zl`*%(i#~WxY|$w%60=HUJ~;O zQMRu4tnEFi+wvY!@e;jM2OU?(4MqHv08Mx%Fv?rL7RG^kb*L{}$bdSpm9!Vb+FrT( zJU5G4@$@uI1xUdJ_lA=hS!c(Wf(jAwofX)nFSWNduL5*mc8*4hENadp8mmw8#+9Zw z7IzK@8mBWvn{q4bs800YxU=Thu^*?iIURof@w33X44%9CGFAs`EEB2n^{nt-PPGzn z541?>aNx41TlD?0-f#&hrOsK%fNvu~+zgkrMxYpa#Bmqllskar zmXdDQf-?C~%cbm^>_t>-O2hrkFI_?JT~e^E-%zvd1%AlwDD2nG`^q}|3o8bSNU?Oo z+*IiWW_8olSKL5D$?f-#ow&=4a*Ct1Si*wmKy)IAmiVQgW~u6>W;MR2yTVU&#s90y^BkgkPv{XrAXTF zb&#H=TLwis5c!mSk z(0wrpP93G;b-L3Tf@K+~3z}L))VCwUxri?yI0+f>ZWhQ}%Ba3Gn+&99D zhIZXiaxmomEfXH9w;;Y-{B_^$GYdxlX!Og62xOu;WceJ<`sDGhl)T`n9h=EGUC&J< zdK(@hpje?@ls{^@K&KO2Co1{?etKA#LOT{4hG@mmFX5unASyK_aO?C64Ei!{H!dyA zRu?6nedR|BKE$;JpS-(~@G-dC0)Q|2|?qbqQfk1FpkV#4TNIJKkFt*^{o){+lTD#bDU& zgXcQ}0eA!`DrvahH%rHl=GQ#{BV?*o91E0&h!qo}$jvWRY(m6>&=>zjztpN-$-5Pl zzIxnX-i>r;GchdHQ(&RdibVI-Yk%n(V5LGkBBDAy zV^8a|0Q+=?57#7xFX!u&Gj?-tt9%)hI%v$SNkm(xEW@=HIv(fm`kqN)&HE{3&v*FR zOU-W|FZV)2tr*+2BBfXp)iyNxRyb$AtG z5Emi)Ve9z}IxqjaQ5pELwl%~2J@nxBmiEsmM6pIxlLH7`RgZ8?e5F5+ARAXEG<$7`0u^{ zmcqVoE%p|Kg=OLFWlW2+{~vdDtIn6(MVYuch?#5RyL_A%zxNhgj}p_)HcAfdw&ASM zGyj^}Q2%==;`LB)cZ3YAM6E}&7wy2G-9KiFcRBwKWIR?(4Nz9;S5%G~Xi67&-WgMQ zW?!-UXHLy%RZ}F?pF8xq5D&wXMH?XtQoz)OU-&7i-R_In=HDLQ85Tg>b)0@av~Zda ziWh!T@Q}={?2_*B{9Vd?r3e&f{o?E>AP^XShM5@M$&{n8qrd{)j^eVAYjKN_5!pVY z3=XdKGoa|kMl|uXND(#i%-_oGn|nLb_ZULRYXW6MD(2C5H8ETh4kKr2yZ!oN{#_HYujd%og%Qv{P2b8ZAcwIJPCQNQ#{GHE42~Q_>jC zPKP;-9+gd@3U_)m;6c9UXQa?ATSy+GL&qesa=36BTiNkfl8o4=)^-Z}h8jB=AJhLo zJ>DEhSO0bYR&g(*D7WeYK(FY~!g#nOg6qZ}D5|ow&xkX&s8TMTGOU2Hegf>oxrME8 z^X2b*G=eiL;w6fj|23p(RG$z?^HIw#4f`$`rWJZ~-zK`u3Yor3%G&D~@E-p5)Bww% zG`=H4Eh7I}x^b;8z*iXnW`PD9MpH)8)*e`{ede4o>nnZ7$G@mCoeqv7?p4Z}V$P1?_gLT{~0 zY}#U@mRopXV)=z2*fQ^~TtW_%FG^`XLPAgnyxTa%aY`x;SB&t=eF!504Y&B~L7_&R zi0Vsx6Ha*;iaXYd^?OQDWWgg>aRtT6;MT_fp^=g@#nUDo9cQTFI z^C~to^#!|C{?F?q;zl=U9^YqM+t|C}sd-CWL_EH0WV=Ei_gm|)yHgFlfrk#Hh(Amx z@l3n_;@J{qy`j8hRbHjw9Q zARf^b`bW_0&erC#N$)V`BSlNDTk&mEL@iND*c@dey${MkBdUXjb~ra>iTp5?zGv=} zxo_<{dDLKn5GB3|Hd7RlU`dK66a7tL=~g!2CQMpJPqVGt!c9!oz+>4Z>}E@L0-4Du z=Iw6v77Ec8QHLU|d1E%uq}Qm=`s z)9#HGAo5E4BuEK7(CAl2L3pY67;*(qo>SAWB(j-M(<5=sFR(zfSXz&`DBZi&2KlpS zZmGq8qH9B4+U{4Y$h9ZXvy=gjHev;i1z5>$xlrrGQ{*>KN+PGRw6YUQtoJ}Ux%~5| z@dfM4;1U;kA4qZaV~@2ry`j9pb9Svqh)1C;h2l14CuBv{ch1R)Ga2)}GnboriVo#QIEVc4Egext_IfE5-;9S9SZzS5cwEKVOi8&SR;aY`aD z!a`G&o?#j43^wqJkE@swEea%VJNUFS6x8&DN+YFN&*N#)LFK-t`LFg2qJT&PFJ&Ws z|M`#nnM4j>iO%7(72KgL?*h6K=xEca0w*;qLh5JwG%e?TW;DJB!t=w#a9|=T%fdOx zy*q}#JntCJ&8c-&KELOFIRWb7tZAKEN8oLc%>4M7zcgHezh_^jkAcEOuE9q|7Es?} zH*k;st7WwQ2MA;-P%GAbSNIH=iizTOdMd)O3MTXu*^13DtAPF+hGk`}b)iD_{MKh; zL3V>s@Ux#qz&f@^@}qY{!}k-?B~fgvPoVG-R4IkJI4Km4KO;8FjCyu+>-NLc1EzXL zc)|ii)pWyR#|VzgF0kB(g#~v!Hs|)*?BB%$)p{L!*ra9Jt;2Dbt?Z0!_7s4seteU- zxTSwja^EIKaw|o6C2K^@UzYHXG+OWnM>{GiqPnT23x%E7a~+oXJg$!089~Z( zGSsg6|GfaARu>SboYytLbX3((gvoqMlnKHo@z0lj&XLhB+#&_<54wqGnqQng3R*=E zHIb{QllEQXo3OW#6>mu{NvWp&_|?cD95?m#@2VeBAgI&f{ym0wSO;B~p{AHO`>Ab8 zw$9J2yTka)A(s;npgQA|b|=w&aS49d3g~@YxalulKEB=&SAogmwa*_URC(6L`|Kq}oXRlKN5Ri8pFj^DJjwVZ{?_AJ(NQ?? zni&09!T9`z?@Ww_eK73a4kYk4uD`v}*!oj^TBiI`i9;sO33iaN3(v4+n~O)-PZ9nc zo0z_gDXh6qWtvNc1df%Kb-v+d(xrXA_d!=?`&<39(#qRbYSP0vC_YF!yyMbAxE$~x zVl)rB`C|ifuRAjwk&7w2lC1cXwrY75{nLi^+ehAKG@*)1PHT@KTbjU?ia&rm^SDGK zL2d1RY*r#uG^?8lrpAL&atzxiqP#4PwS$++JeBNZ;vjQe?zsExAh$06+hg712coW` zDJa0QbE9Kb=^idL6fJ7iefAYs+#=K$Oe(Z3hGjrgi)c7H!)$Y&xHO>up9D+&|4FG;4}Sk2|M zJK+l|(IznXJ$)A;%Qx)njxKd{Z`2a26kW6;qtEl{pP}HANA$4gO?tw{XXzrP`qrvm z`far!?UvVNAWjD3jI-5$MHev5j}6L@nm&QFlhO zf=z*1+ZxbuQKeYL(^~v z1-d37O1(jnXoEuI0wB0H=m#FG;)qGnrujj-LifHP*luz3#*<_~Hz3y_ef9YRk8oLD z8%h^>YVc0fwr7qlO^7j-2|z_UKi=;qs{B3xVUvi+Hoo-U&0ZKw>tO~~B#ZsUysR+R zm%yPEBXpzF&_3MUb$H1ueH@hF8Wk{%3!FTOkacCHwr2y(X$g#!PUapQ64+p|1*Mah zL6$WZ50J{8q&C`ZK9d^kQ>($bSb9~)ra=kUv(Q!Qj+HzsM)}sLttJwunm~ARU<@ma z?Atldv!7|fyffPP(O;PyDub_U9-wC5ej~ykh`nNftTA*zG3u-N|Bubzc@?_zSc(CO z!TA=ouwFuhotpCP=(zb$av;#6U*VIqjx}z<(&9kVQ8TB@%NRSO)nbWz+9hkv2bgL70na3}LH9pI)wO;Wc*@7rv z=CfrfCo2NCikwy_nP52QUf`>W(6M9dVC_Cxi~Ourmx*wZD9p0EkFn__dY*S-H!bo#%9!*f3Ka(Fi31)(K2{j@XX#kUf4i&!k2xVmi z|4NO{a-g^as8}8G3;TO$n?_WTg?~43YJR?nm~{G92h5o8-{Dc%?bgfGv(*oKc-o>> zg++U<= zjWR-oCsc5^m5o=Plv!g;@ae@Wjsa<)xLikCkIy@{RLlLg{~0u;#GR_W2OBHWyIg%g zP@p{k^v>uo^Io3=@G-u^XP#a^v~PCbNd%;XE}##SyA(@wSCXYh?IQc;tgwfFH5#S9 zE(6avEZoE$D?n#)#q6vhm`#*K6c-@WgdL9jxY0=4jv88AzwjG07m;N=>O?&=SVxPt zc*mv$e|!I0O=~{yX&jZ8d#7HF-f8DiavB@^}Bz6UJh9*29`7tYXQA41C5{i z*x_N$^=VXFR;G^)zb)z{j<(kd3%g?WX;Q?x;Cig}|B*&$y)WU)eM_udJajLu=dpXG zAH)aZITZVq^Gd7ONmW%B>YOuvWY6^11Y0eSn)&1Y;B_AgpDC<|MVB%&+5KJ9GMIV@ zqJ_D2z7jcX3aPN_$pct78r_WIaGdSLb=FeQoLAslN!RS`7RbLg1=}3bWPm<@45J~9 zseeAsp&bwZ5Oft>f&*+^4xiC7iTnJqF{2=*92<9H&G8RoV2C=SblrR<5h1%vsA6F$ zF%p-~DGec=dsL_a`gPGGv@iyV1YQ}F8cDjLIF0AJuCHQA3-Ua>Xx%X$74Z}5_3mju z($zMiO+$}JiGA~r4n(CRQuxsij?BHx`NPfm5^cqlg^roWZ4O{khP}>s_A4&V6)6Ek zTQyPQIoHy9EG^1PZEHO2fx@5P!43b9s;>@t6TTPbpUR!C^LAy66D8 zENIS8$i%WzB(O@l-Xg^^vJbf#bdFo8N2o}gh@;iZ6oSJ-WkO;$QnCh_(x{I|#9u{H zikMON(y$qrd)UiVx4Yi6@mY1h@N@nCF$Yjk@9Yln!5N2u;;T$%qAsQG!Xe_+jHbH| zHeKWmNN|U~4sW;8*{-pv3HchsI$B>DPU^UbEp_8E`A|ho^J<_v7H=gGW`-yhJtl5e;IhE=o5gM{i`?Yw)!F0UdQYZ9$5vj3II~4}PvQqmx zcs<*}_N_Yu7qA+wnqa3A2+LpzO@h98nCG!nU_-~%BRgihHCAbMN!evm*^Feg-lhM{ zY!C=nkmC?`3-(X)GLcW@D9%4jz=`w1Wi(vxq2Cl+1BGZBPheS)$i9 z_^rh3IOtn(Wz%~g6QFMnP`}BH5XD+w-7`+bzwcPNp|(=1fSkx+FiF^LEcgcXH;i6S z`NJvIgGwzH=@^2DR?5zgB>5V?EBdRL*^KBG4&Zy6MYZg##u|+B)dZC|gH*1j1)Be= zPp-cqpKK*i1?sCSWN5Fs&O)B zr%J1a`ZbRK_mD9pf6n+iL)p%$FPb3Qf7W*C<+iw$3Q#^z21~h>VA5E<=1Bjn~2Lr8Ax3#4#}n2C?`D39!R9p3ZbZO zcShw?|BOVUhh73%oRc|T0HLCL!V^nf>wk2W-Y1_6cI#=)A{0A)UiO|p#!ffiPGxf1 zkCR7ZV&W&chqZ32&&%d8wE6=XYpgokG>K-4$VJdS-@L3!90x4;+7;W{J=#LP)tawf zPq3g+kiVl*-;9KYtH6@-kDOvxduo7XC3KYl<#gx7^E19ONkMkzqD7Rwp{Cnp1f`4t1!dAM(p=9Z%^JIUS^;ca=VFRAvM&W8g$xBc@ZzC>?- z_YrF#0^ZR7p$;y&r79Cc|B`N-w?TgvH$(;gtWy8hJL{XI867qvPit_+9b2}e)sDKK zfS^2Ur6V2CPyL!VT&(YdHj#fE8>|IF_{4X4m$>5ajYFMs+M}RvzsMCe5JB*E_12rb zMh(@l4jTQxTZFWx_0aFUZNGKFO^++f+eNlBAA1q*2?h}#rG0m0e_y6WGQK!n@xqWQ z=W$_HS^TaZ>$d-Xlx5l1nbj^Jl!^tz1ARv}Kv-gc*#uONGd*^s94Wj5A}#M~FDrw9 z05zd2ppu)M4eU={7yDh6Bu6AOy}z}h#c!Sj%$~%S36IR)VAb}1(bxZ6fsm~ElIjNP zLfmjB*2jnvN7sI!kdno`J5xd4XKNyNF`44EOvUhlErA-ez=d`_FnK3Uz7V6wOzQKT zY)xfR0twAc?gAcS6G2|GOyF`MWe+}A16u`65K!&VBR}BRa{0zGmtVU6YOrv0$ZkUd zj%EotO|^7=J#K_4|3FpXEiUJA&ZH*t@*&L3T-ib z_*R`nFYO+aq~8M3UYZVjnQ^1^9=hq!G8PvFfZ{EZ`6~b`SX#DRc%mbU3O5t>jcIdElFSc{77?9Z zgy6RmC%$19_4tI3Lhm$L3C_%Rky*m2knHNo&*my{_}{`-2f9fqr$T46*sY*%&ijLYP+l&4d(EN!DU3n+dKB=zpBF zjpa=?#Al_yON8Rfe`()T`=$#-)nKxNk+|Gj)4DHvROERuOp+z9ku&0~Dz*!Ktk8boT)00T;3y)tCu z3gU=mRlA#^9P?@ye|%T<8t~%50-q3Ct|`(eow7%vNzU!!Sn>0=euhFOi4<0Je-bA6 ztMy#mzspE!alupdrvec`4Epu&UhkfK4S`*QMnK}*FK%eh`W>6`4Zq`~=PrN($~{x5 zViE_;6R|L=z)1**_Klk}VD}|GsHQuD*>y?yaAz`z3Ikw6pSFSYL=A(=!c!htRQ^GI84L`2$1NO|UDZD|Li*0G8wAr^Hc0 zcMnEE<|Q{zTW4K0c$~Iq#D*hvO$g=>+0=Budf{reui&fMw!B3+wtwsGccxUNo5)9MnF4PNW1qS#Q%Y@;&b`zf2kfP}04OxD7`br3xs~Y+YI#zUG z@Qp>$#3S}|c!)#>7%~AL$?A|xljp8f>I*4qjjX?`TuqCS8p8{NI7nUJ$u14qr44-4 zwJV!1BBYMfkNO*xg+;A(+FHLH1l)~VKH5YpfG6HP z?uk6$xtEkVuZ*5kX9TH2$m9adE06-YqQn|`EOh4G`6Y!spqg6VDYmyix9y*8BmrP( zNPJkhB9$vh?iKCyB(up6F;M#7QIdCJ1sYjChy6GKba#ZfgnIhsPL-{TOmJyqj_%nD z^4KF>*z##c^UgI9ZTJdl+}x{*@4~FsHf`CUPzYhU?61$EeI#uCv`cUzXcYwMCJ%~( z5>7yoqM_v~Q$!Al9;x}9I&snO?$n-x6n_XKWqM_V1WIv>wTUc(sBt>R65(|*FJIHz zAy4V3pNG0d(u+Q}h*sUcE%iQKN_E=AXPko)at&r?V#AOpG}ztJzTnaX?@wToA-MF! zFv@OZU(yKjt;rSx+ZL4DufYIMHG){dUR@kNXAe7~GLA~2Pfn_job{HoIW4eNFQ z=;~c=)wW&J|6T#Nc1%{_<@7cS zh2!C?)r7CD-4XRm^jpo^TmHgIK=SsO8>@W#F|Xx63OW!xpNg6)EGx-M7#k6Vz+X?Z zYh!yG{X$;hrWcPLgyCEU>TeDtiQ%Ysq?1qZ_7A@{Hu%xht%6xpHbT(EmBmaxv$pUS zAO|g)ekMY#n#tE6O$^ywsur{onoWn}L=IO^F=1NSdj-A#@UFM68>ZmPg}oNa*F zuMGr`M1g2f^HXKm4P0|Ox2Dk78P0%%asxql#(pQl+V0J<$Nn@-h)P-APGNcIXw!q> zK{L?y2`~Ni-bq}-K$8{`#%;UzdJ9}xfQNw;1{X#+r8^1SZ*h#FYA%Ja=XvV-_4BX_ zSnvyrTiY1;Q>cgPWHFfaY=eCPGjn&YcuEXtT;qiACGjw(g2IQ4Bjp|Fs607}%ySHp zM&ap3UTn=GdoOqR^V zKBHcH_;o^Mve3Rsmlz&BaH?MR{vqUrWEsh{JZUL(Aw)_x({E*UV90sndVxqk=%Oshelx}n}Bl#Cxqz?gph?; zOTCIpzj(Tv(U7^#Is$!6N>>Bb^9suGD$r7h1Y@*ke;l5-sge>9E!U-mwIzTCr&5T{ za$`yjhjswV)1W@7K)z*24;{D_gV=RR_I|;}X*rmFi|~G&dH;F(Q^qTr1Y`3`I|q{? z%RmFc&W8r-L{VMH9V(jU9o7N0$_q-IB5K+ z)kKfX&{p2pnju>zO4`5`WZ{K>Mv8leYikv(b7d0RN1uvXeGzi`J%RZ7GPv;gYZzzH zdnwPN59^O)b?JdA%HSFlO-35{2L1Eeh)lG=e_>Yp+ovtbR;Fc~lU)+91X%Rnn8QIA zXmaYVt0O>@UkusiSB%)u zlHZH2j8ov)+sRoo15j%%9`_spGw}a6U^FHmCYTx34*FO%DX=bW? zqJ}w|DeJ>_VT2YsG><)v=AsZZeR^=q7h5^efN7KQNuWd=7Fy(vh;zw9P~)p2!7e;H zm;~fNBR%d8bGogpDU;jpjge+`O9s*S3EG2N5aa#onm<}foOO772x4<4SXfy ztF}uN*`ItE;#Ve#ZGHkKfF3h)To{`61YyRm)OKQl8%fSUX7PVdQBye~1PtSUlf74( zX2WjZ2q;T3yMk(d%KLDu7X4GL@~k|2;u;sCaLsBxErm-R0}O&8*j-e^F71TppCbtf zz_T`68ZUUi z?!4|bh4L;mX$>TlPh_(0n~qn8f;mOy)wkpk6cd0_jl~7jskUsK8H^hjQE(Ji#LLW^ zRE*D7*@viYMbOP#fZKb{D*%(mbAs*5&rUg?t*$8tZc2(1p2AdiA97wU3v-G31LOZV z*IewnOQB)LNh%i^Tq!M@AkZLDZ0MB+7j`iDwAuv$A0kms1TPao)0y3(%3mIRMmJ4o z-RloYU>$M(kw3$AM$^KQ%r!tR-PNkv*xjz$xB1~APz{Y*Oop_L31&C16Zl#@-J9`$ zy7gI8_R8AD=Wu$^GjpJXRV^NFaE?E@!Y>&`&SDfABe%MPpzC| zn)ilVheGu)l`2NE*y28ZQIgxV(%C}TAHHmkVBeRn6}tU_n!1CvAlNz-@|A61o{C4s zr!LzoyDmqVPe-t6wdUc`dj9lo4^N)QYMN8OiyxzrXhC{O#T!%TCymk~YS@CxW&Zk8 zI`du05xjTdCd|Cc^;)gV3 zwYZElwhqH)m5b*LN!@LX_~H!s;Q1T%RqSbk2BqW1$BlTZ3{GEB^@FBQRa@_2Aq$=%(w&VPSp{-9$dVEFKZcyMpU^87O%x(D)b>N`w}|#o8ehkQ8nTPJdaOq z0%=6POmbGhh0rog6XwP&ExGiQ@|=ty8e_{dK|b1lm%XN-vf41SJ6&~00@uqi6nbMHLEmIa@(}^aDoV&UJU<SC5D||%f=}g*as8lmsUki zvJu1Ea5~x$_PKr=r`2rvHH>yHtTeLio+BB9N_VcZ)&eX;jAY{Ga82JgI2cnGxGpcK zjYx#D$;iaJetP*z;08{SK;3>u3P|Q1RpMFwHA^Vyx8Z3<((SlG( z?nY>o2XQ=(pieQPg=M}7@5z5n>vh7+$jwC7w~5y>NliAXx;{j=U8WUDzCM>R)unbiC3AHS|BJYptp`6UKdTS%rIjwMlDy{%`=&R-3L|`y zEj33uSQO5hc+5u^WXWX)Ww{HN2|s`|=(u-jIUGnH?K$Znr` zJ{7bh)MdZ*tkp$2(%WQ(XL-r9gWunzi<)Je!>BFVbwQC|ec03&zN-c?0QNnsJ_!HqTym*?+se?Gr3S`vHMX;YiDq zcp>W3t#6Nwj6t4K{p5x#U!2bklg{(g;JY=lxAQP{hgj3c*b}`7-(sEYu(jdge)tMI z$DQs#k$<`a=2T#9>`5D9-5q{fxr-DM7TlHpSNilR70-rFa=lGouPk-FRkf2ixPFhf9~WQt(`$89S3d8v30p)yZwx}qz?7x2wz zKrCZLztnnQ3!ORT6O2xrA?m;6jH%vlecdehGE&&=#e&vL!RQF^LRwodtg`)iLq>z7DWrN}fU(=N{kUlZ z=^VJ|9B6h1!qCyC)`I~&-R-shswYYB?WrZ*KwJCj0k&t$&3YY$nBd)@3& z+H24K6;%j-)c4ZHVU?+9-{#S+>yu}^xTMdMBTG}GaI!nwtYl_mo767(B;7wb4JXcZ z2|%G{<`@riF{ldj`Y@FizM`I{A;^W!LTF~PGnhS3a{AA3CEZ_?wZ>ZI#b%Vhk=nm? zQnAr9^9X7o3?CdS{BkXaFA*2 zde3%zX1|B!Po4YpDj6HaK5Hw~QP-p=ls36{G~+zXWR;~%F(Y`xaU)17W5yGxW%-jt z1;6}+W+V6+lH0lCRb}eMUxHi&^hP8rT&HS*hp-fT-48gc7J@q>{1b0QoTRiwoSa(i zD?4CDQuuv*U;`stQ|CKFwuZpb=aKi9R=zmCHQ7;F)mBvre67Sl=p}+od06f}cc2?Ma28@2fnOnfD53|ZQ8A)nE2GWNT~hmSN#nj* zdOagom%@}LXATakC5*n7u8#c+PYGW3d+$cwiGB2%@wXNT75DICneM zVV)yahYuufzq5rl>0?CgS=cnZPO2xCtcWYw_u;(frq^O+Ejb+Az{O@#{_(Uhuqqd=?HhqhAY?!^c zo>rd5LLzqC#o2YF5m?33d2-Phd&;AEaW^{eP#TdOI`UQI+qyG0Y*Z7#7oJ7Vu1C;$ zGa?azdE5OiRcC@H`piWIqh@bk|L4mzWQpAe$!?Y373{rn#W7VMouBhq`~54lrD^S!Wns*9$qHXjZymka@C%5`=Wt$fsD+Y8IXM$ydO z-n^n-XO8g9mwzc_!rMWT;W(JtG^%=U{^-{PEci>O2HcCfU2 zAY=3p&NuTmNDczQ#X3@>^*)Bvq@+5w{2hBWRUL}5)gG#fP9YMge=Y?@<*5#Aq2T-v z_ud0Os7NA>NKZ~DG=s+4Ox3_93s$Nlg~-lZQDWIQmk(WbQxakztK;ChGrO*QY?a@DGU8xRQqDw3_Kn{sf&J(nP3KN(c)rYAWZ{eL%o>>?FEGZarK!)1cRS%b)BbR48j>l8?&FRE$LOS=UQzRokPgdE)C4g{zms7Z=p%oajAWo*2e+5BpAg6vA1K`et4x zf+3yKO^r85Q57!dtx%U@O5;F%=Qlf$c) z^f^kKwjrH$>~k*}WXy!hS}95ZJL}e=GDJ=n(=<%L0-#gyBW~EeLHm-$Vbb2VclS%r z$2d}&SKLUA-ApNe}njo}mdG&9<4fP%P`gY6y6Z2nO8m>tmF!Q3Oxt3!}jWECe2UJOS0 zengvfLPVAy1elL8y9tYtMp2_o)5D+7LE*rviL)9u!`Ld-Ab<=&SdVZeWl%f}2xmYP ze46YPH^k`AO->R=Arlzh9D;zRSXil4)|w^MybCrrjdCZ}}#3L}P(&O*>m- zVYyNLiKMzZTPmr{AQ^GEYL}>z-L&z3pZ`RX5Xx0s1tW*TtS58M)UlEq`QPpyugmjC);escs4tM zBXhp+I8vzFoAJ^!zP+1WOA=^=i6An@HRw@=J`6>kUP9=`?+KQHeL`&{y=BSy(bgE_ z>xCz$9EaGixIQ)9^qH={b6oW+j(u?Co@vec#$Yh`5&bPF6ZM)^)aR%Jrb;+6Y)2sH+20N|VWqFtEDU9|_&vu(WopnJFD{=Hh8<+MRdN zi9j6nca~tDUr3*qlsK!o3nIVH>`E4)aRTP##Bsr;Ac`c`D?wM8CZCteHm$*b9TAdh(7NzHYY*Mq3Nug1%#c{$ktaOfr z4e+a``cq?UWUt6`20lKGdyCT+OWb@_kA;2zj0V?x%>eTv78|*s0?g8qt10SJ!$U=>+u(oy+}pvy;^|LJ(ry2c8{S&n zg~pjAGX3V2;Hz=j#Q@mL$Hx2H{4Gh`?B^bvgJumd>|C(Rz3Vh}@LCk>=?36h4Q+k+ zC7cY`Y^E(fqE#&y)d__()+MS&(fxoMF?Z7|xGK8f3XB&nJxd00k>)?hhdF7l>SZDt zvXyvA_AZ%<)EILAGvyj{YBMh7LjPamHWunh^#lRip_st#KlY8`?W{y-GnA9`*)`PC zw+x1*GUz(U%)o0Ca74XjCDpreSJW~G`@#A%u-mGf3)Tea@dE?!g8R1@L4m4v1a5jBurrODnR)cylD`wYAgyhi5?&z6 zEClO0A&W!Z`fJ#p-Kg!^b6vX2l*zs7THh(LxDCiT35J^`+`0BdNc74cwpSZk>c_tF z7`O;2;M8)_xPMopa^wth^XkXSdjMnobD1bG=8Z6JI9@MLamG#VJrKSXQ^@04MC+WJwQ+$HJe1QvCh3#07EbJKv{c4sY8IOCI`$f3!k zlFFFL1wm{S$Ef1GR&gY{klI;FUBC1)k_!RV4=2GzBF^LURTE~uc;WWf<`~j9(yu_V z-h=O_5wITcZ^Zyx=}Q*>F4~^<#633Lq#8s5|Be<&wQkjyLrg;qH;Z-eB=4n*HjZ93 ztxoH_FdA*e;=7X_$17AF)4nRXCR;2HKhIY}YH^-$K}A?g5bGGQJ^txG-hUL9?>xIl z>jmnZGa{)ZhU)|x5!HaZ2mg6zfVH)7;HH5``mP)|+yJ=eecGs`wCk6%Ftt&fndk_~ ziV*N*dgA7y9=Il!A^%Jl1W_>}D)KeDp|1ccV|@{Hb49w1FD@xrZDu(?aC7*=?ka|~ zuKr+P0DMJK>Q!U!xN80;pqaGJ?F4-&Oz5Wd%3t1-Vpm#7!eJv0o%NQLS~DW*VRws+ z2KC3VV*NLtBB8Ql10s>}Xn3PI%;LZ8y(_qr@;$3rImj;Ncf`YOF{mt$(fGg|oKZap zm{Omcy(yXAnCwjqzl}xJ`(ZRpU$qXmVU^dP)-EevhX_kG#na48zgsA2nD~JgA#Vjg zU36S!5%g<1Wq|D!+X_%DAwhX&icuAAF!kSyz7t=Q;7@70gMKJF`QWxFUTB^e@{4@V zVR%AVlzG&IjjC`|yYrqOK`^4afg#;X>cR8D`e{}5!=SJPbGjE78Lls$*!Kjmkf^4))#9~?k!C~+J*N_!hpNav{x=Tsc7*h(q##6c_IfXs7$ZJJ{_VSiVK~!* zyTTLbfBwl3WUt(-1+~OGyL%OJ5a8bwC>zs|d1lur>!&AmH~dBr+`W7KwEZ=$li`5p zbLpxWPx`!snlFYcwWdWB`|+U4SiA?&?!IuXN{-7D*dB8_Bh~#`c(xUW--4SyPaq@A zJ|{o_X0b_^Kc&51{8FeYqV`b(W5n=y3%%)gHV|PBc{LXVK)P7Ld3`TlSYA4UpSb5B zU4>&upE*@!BMtvQz72=lEhW?Xsoq0P`L&K^$2x}0mAYbtHYv%3sJYy2iI4Zl%*9eP z_WHCz6>TdkwSF76=O!j6wm{D83ZM{4=qxtM?b?d&)tK;I8`TA*d>oIT4QUS4j0^DL z3APf#k{uswbF|T%nHfgZezJf0zm=torQrX}e9}J6CEaKn$)0{6tV3PMYn$G#LWwIK zTl1j=Zd^vjQ)Q`66uR=K`;KdSm~P8M{0Pes!1Oh-4_YhJRCryVR9PG-vbqx(T+euQ z3nss@Cg$Y6f?fhSgWJW5?q?c$wuJv!Qs!U?#e`^+W}*j^xo8GG$)+fh4?Y`O!)`8m zTjK2l$!gV>=K)y&*4i#Q!EMD-GEO-F(Ln1Rk#TA()wGlqx>S7#yHHS76Y~04P(sAA zpApw~!3PzZjp%K7Al8PPHfp^uwcMwSIZGsGDxGxV@w>RzdjQ^ZVH$$@& zID0$8zQs6;)G8WZttgv{Gtke)+C23K()r^X1B{0*wxQb^dD;Foc*kZKC1uWKRnt0U zNpH+B+~9&Q|K&OqsNIC5oca;Tzm`DYBxVMA@&LWzqu(Km~j)N zM(->RTB~PdI+IWh+o)&Yv>DSKR$eHiO~sQT63;n(_@)^+bhmcJ^D@d40Q>?DP>hGJ z#e&kAbb29(6f>j$9;;x#@updWtUOI2=B?-WiZUvXCtyqx_r*_hjP5IBsXE%p$*yy? zsLzag;LrF|1RD4$pltJNYGEHw2Sk&d11DRYo!CB)Hsf-Wj?X(?|LlE4(yV1!yFQ?3 zi}P*8h8m-Y&zN-K<`1+h@?M-ygY3nI-$ams-%${?)l5ONAAKF z>`46E+K)grgST4x>HTC-L=xH;BB~ORx3#}VJ$ny&$cl&A^DJ+-Tzy` zj9-S}kFS~sdWHWq3&o(E?3h7iH4F31V*h&bz!vk(O>KXsnet_w^Z9hY7iq<2Om{uc9p4=^ZPaQm! zaU7;Mr0ALYGvGu`u&gzcxEV@uH7qVL)G+rG@RmKcLeFt;gVbg=^ZuZ1WyVOV&abt` zYV_$WQPiN#snk7wFD7&BtZORX^C@voq6nepIBWxh4BOK%+c5D%J?O8TZ?ec^lT~(4 zP4CPVeXMHb0xLE%AzAR-zgF;hddL}OPex_Li~|KuTgITzJja3IPfgZ0KYQ<~c}sq17g-G5@EA>S432by-+!^6~n$-{;?P ziMRvjniBxmBZeQ%K-SPJ45YyKaC!%|LnPQ=_9`t@mMcj*I7ndA=&T^Z>3Z07dm#Ik z^YzIq$z_ij2zk&A6i_iQ(zWwspIn9t4};JvZHUWj`N$OC~X_B)*=>Oy*`l`9HKgqQV{Wh{P_jgXT(Y_BwOh{aa+fh0EDUX6oovtx$*^8-2Qc9Bl8f+ z?c($+|AAr(U^fTD(lsl)z6>>@4ASPgS>G z*AP2gzgFBdbo>3#5VY(8Ax~$LCiWJa0`(NO7dVY%&O2)UY;x#`RdUMyzXjZMq?50B zyB-M#hrUMkl-2MwkN5*?#lDY3I$u2r7(;@^Bzu;y?GqegpbBE?S2nLl4VhcPeAx++_G;vCcB-c1P9I_Fo$8ftW&s)trfXxWKwUuM9Pe`}jGTk~iX?8Fvz{?~hm~D(BHlN|EAEA**qv zkb1M7d`>wF6W`CX8WlWm0JW!S*lPGoJzzmv_-lof)RRnm)YkQ6nm> z=X|X9l{)^dQuq6n9`>21Y*pJRxp&E*WRQU&j~oXD2S4wRuB(`kK*v*R$M=viezP^7 z%k=rmqe1D5eD&rj*UsciCY-T=;#`jsD~Q?)H7cTC%M>Ghu5^-`2I%D-TC&K+tI>4( zNTS;kYu{Gvxbyiy%cR{q6Z!JLZNDE4l?U;51{E$V$dpU0&LNWSx>V+rV@Y5aduO7} z+p8T+LyCG}T4z>??3LV*a21&%r3I|vRqx=8queyOFA6#G3lW8}@>A&Sh|GrO+1pGx z9*(tg7-3j|%X#T2uCg5Z`!5$yM3eOf3A#Ab7hOIetgV*<%c6yuQoyfA)kKY-o}IU;6E{~tbP}@&QH&$m!$p1_@W+8 z@oFXh(ktKT$O|-ul1qvLDc#cnaA47WF2!qwxyY|6{bUvoMi!R3k8=i9SoW3nrr z>X9reFL7Ty)yGJ7AtN|((F3#rXP_78z0#u!d&ECgJ>Urg_)$SYYtn$v2bhXD8j@O8 zjIuHS1OP-=5i~vadM7{Se4=3X56iN6Kx_Q1lGE8}*N(a6#N=9pCB&+Ntv*5UC)t~- zp98P+PWFX5)cHAh9?!d*iw(#4FoVeO1uC7|EJ{Cq51s#iDB?XB!J9K4U)4G^w@7Ht z=`^7mUe1cef1`!);0@%b$nqb3L6ISM*oKY^`!%kIYR-XG0Ne(W8NuBNB;BQ}lEikK ze1i-ryOX;(7)E!RUg46Cs~_AQpolw0KulS$OqD*7LTRZ@iKl%NOG>_|O1jYGCE)Eo zv1=n&zIr5qi;`$JMRYKdKara=HRkBu#q3Yh@}#U*l2YG^vS?Ii7;%qxFS`*lZ3*hR zn;iA?S^q^X!Qr2M>e@Say63#jV$`z0L`GZ6LN2<*=^0uz;G(p? zy&}8Z-5odAAD0yMi=664zKk@JEk-(?uesq84i|k<^|VM;f8rB+AKZ*REPP2Xwqq_=D9i?5A3Cec&6}#LYYCQboDyxmm&_kkEBJWo-@9i3ThOcU zUB8)`@UC0N>VfN;x^_qF436Xl)qU&5i+Try0BBU>5RJ3i=bg>KBls)6Z_h4?LE@#n zeN zV-BOVZ@muz5B`FNJ%nBF$2GApBX|pjyo8%0B~+Q(&SP{;MKWQdR86ISG^Qb1ujQ_3 zQfrD+1kuq9d?(yMwXu?$8+TGivO1>)hBw?zr&#c@8l+oTX(~+zpyFo-=itVL0s?L} zUK|bafK9rd^fS(dge<&&10@!l{!!F;|NhL=g*yE`IHqB!_A-ALpZ|%=a zPM)=A5qB^y;swBy&}3;uh_&%_0|Yul@{{`ZXUtl&EJnxP!QV{8A{jdlrsMnI1r|hMKDr7nt{vX15BDbt2BP4{A@m!;}0*Y!X^<3mtcu zej5WHZO!0<4yD~(+@Pgg&J+7MrXPush?2=SM{(dWP1^e-Ut;DblE!ka*I+YuE0 zlc_W_1r8N)Xvq}J{)yyzp=J3fEyElkpKwfQ;--+DO7Y^<>tdcfy^Y?Wp&RZ%HH})2 zR(^)x)Ez$~AZHdv)j8@>!xEeK89L4LBeW3Y6*?F|8wjdf$55W-x)%@&tBwx`!+!A!i}s!88f-P0gSw#j)5owd z4IvbT5;tR;LIrTbG#2Etc1R*Dl@>Y^Jj|82=J(PGF>!3H*yZyZ;wl9z_5 zPV-4|G!gU%FYx6+f~hkIA7E@ZZ*@QDo_@r18_e`mD~hx&>A zV~bMBs5R~RS*TP~KyIk9>b(bN~)et1v}K99+=Zwzsvv}3I^%v*0;jiJTPB0Ecnw7*~0 zYCuK>G)7(kb%@ZyS|}vy&OQw8Qs>j=CCr^wiIx>#yhSGgbI8(*W0n&GAL;o!No2b< z6m#vMrCOLh%$6uG<&Yg&+Q7-!JK~LSBw+`($>XP~&l;y|)OrT0E}Sfnp!7eJ6WNj8 zh~MF>mD=X8(i`HJAbDH_NFmbeclr4>H}}yII3mdUsh=y=#A7|TIlsi&1rssekG>rc z_eRjJSME#^YGy@uFd*u^*00}YBHqf>FD7;1U%#Fp zq2|p?R#1MRyLk~Wtwe-_rtz-Z!4u(2XAM-S@Z~UxO&W~P`=DDJe(|kQe{|utWOb0A z9-stdHdzygfwuG84@)!9hJSfVEm@sDIYctL27%*`53}Fs|WuF>iJlHX%v=q26ds*)e%zs(V6NDDt^jCi>}Q$MH90eEV{ zP!DT{LkoCJHNnrP7WzWH zLs^FNK@(aL6qU}(gvFoqEF82ZV^kl^GoF%$CsNv zXpZr=Vz9OGR84k^Zh#ZaFeSsC(9Z_JduEP3sw(zv=xnO1Pwv-y3@8-lKGtz`-RQ`& zZks+oADcPAQdcv4U-;Ah9~`cL_$Iw&Wo%Sq(T+@^#+XasbZ9O;0o7$f-R`6p zR?*-y%B?;-qccnQ%R zX^AB|j$?bfT!GWX&tosn{aws_!f8Z0b2_`*X*?@-gngd8Eb* zRqinm9wvfD1rd94yw=_YmhO6JHe>Z}ycgVE(T7<#Q)57pIA8`=r+Ux!Z&r$e;Q~j0 z>Lt}2H4nsEO0F447)duMdRwp;%~!aEn35jdeizQ5=(hA?MY~vg^(*j@BtX>CxOq=r z{t7kjsjS+pdy1)pJ$GW$zFA}(C1AovmEn~tJ4z=_mr zS4J9;;xmGb@`dELpw>9Sx6MjG=zzVj8ZXmtO4e{Z0ofE|AwQ$ z(8A~aUxipdB2p~P0K^Q~fKtC*MR!?>-Up7hdVjA8{s`ZD61XpDqM=o9y2!e%2P;jm zzZ)`N!J{mQE~5c9Xi>0P4)C_gni{WtEb0D%<}!amwA0*<%8oS_!8hj;m%^a?pcV&a z+p>EngKHY+Om0yNF^p~y_9&$>w|VEgT8p{f0jey5G3AaM>;K#LA7A(<(B}HDZr-Shdv`M%b<&PfO_$AeoCooX9;p(ES*k%*b#8&^fp0aJ*T97kw zgYXsl=?I#IsAb!g{y*m4JE+O7dmBYXL1~H#7K$P~sD$3T4G~aKM0)SNL+B_7NEd|A zJBXCfJA?>GlisBT5lN(%2qBc@?7;KBzd2{lnREX5=FH~|;~31ocUk3HYh7#KwPweW z-ndOWDVOj9Y_X_d#Hs>5hbax@ydJ3tn42SR^jL1h9UppPS1{IKV;A zUniMx+1**z88DvrGr%(h&ed*NWj+0QeGC5)ytdH(RbhX>q?%KDlW8-qvm3cPSaxPvP!C z36=B;T(BpI&};n+{hF%aRkp78(4W==YcWmDNB?~S0x$8|E+nqOe(8ZJu7&VvxWN9o z-kem-?WS))?To(EZ1eiqEw=s@XC0oXl}gjB6LYwqgRWle)xgGi1l~|W={DpH%fJ?s z%~>3^tF;=xWBCP(3YUp-f*SDGzaniR zR)B4D#-}q(q|H+bm{tfBy_28yRP&?RQpYF>Uebp1d-k zH*!dTR4~w2{(l-Q45X7J`?p~KE+KfN7v$sh*L@pkxO-vtzet75ygy0R`>#PxLb@PP zytc;K3EZlj(i40SWW<^Ch}^`Yf*1c?#S0zdm5Dl8cMyaO@I2J$J-nA7QgMPg=@m?s ze=E-weBtGI{EYuSzF8Bd@`*905wRf%#{T5MRrT{bRjE1U*%u#$-%m;?>TnIQQ<|uR zembt~i#LaUs}uwyzkawf$?+#_H@&@jLG!pibt3`R&mH32u}x51e?ubL_-m9ek&AYS ze7#LQ&n)wzf8^?m7e5a+X?K1}lkhI!{s11dBC`=Z*wKokp(C08B-U~E88H`|_?@AU zG@iM$O3$8yhO8%6avWP1r}=2NVziV#O^OPMTp$7WuIC52ErL+}Ey`BsJe&(yLjLBV z1C|pH~z;7s>J8?SBd?Iz3BprO}Ioy2=vG(i^03^v2D}E|16$ z)3A*_%{-hS6@4#Eo#ESRtB_{}0!IZ#E*(_+?6;VqRGsYi)z-s`&_SZf`DWrNsOLFI z`O@s7sW`C{5VycM`NN$O7sBI)nACEW^GWS_>Y(WK*@DhJ9=2K{GapfJg#>l;Euwht~eHO#BofOpWt zz`YVh<9kfdyz*%S^rgEK>H<0q$+scJPc($@IR$^rxwQVOd*EU@_TxgoSHI?W08d8W z=NgybSO(W@lrJ2k-$+|i??!#@f1I^1Ec`Vl89}IX}Y57uM;pAr2@!Sr)r%nv`B+Cm=s7h zsqL*+8&DnZPG5wF`-NKLdS8eOhY33Csm~A+otKT5iRZ`WH*jCg?dEz22t9y$NFoTf zhpB7yy!elT$;3qVGV3cu#o&?PR8>JiiDH&wSD-!j206%>JSm#@iP5>YXH$)3&#^(K zsr4c`uL?q!%o2X{tc^Q&Yc4;*`34)yR?fF7V%|&)Oo1)`KB3+ZVqn0}8yn`Up7H$t z-)9j%K-^?{qywEZe^CUES1HAS;p#goEYOAjx}eKi5@nLm{eH=@-XUhCv^cfi+U=b= z8`QXH)nOWFQ}XR+yw-}8ym+5ye#ma?TJYv+1D&M~(pCaCgYtjPQHZVSKz{~ZI^wpa zbR&~OyAMhb7FO?YY*u~1@pt%^)ppdr`0^XY({9Uc=~I%czm$yF6+5m5t&+Hnvo^vv z{c@%^^R0!JYg}2{fZ-se{`128E=9urs}Hw31^M=xWgjZIrEvT`SCvs@wvn=An%kX1~U8>2|0o_)&qx+n{d@6k-bFwyKW>&6gC+y-{5X#+K1BP zugnmQ*9-G><4Kr?|JVT#HUwbto|h86kyd~X3LuwmRh28`@g5`Kq|knzCFbeRNtLg9 zDt;y{%kyJ7lL1Jgdo**&iCnKr*Ne)FX^!@$!)h+Gk_-tO6F}4$$3}tIc_m8yy1oxo z`8Ob9I30e*Xc1)8V8_dbm}slrO(D;EzW3N9QXA{?UHz{YMdD@Ux8gkR-0XQFDS{?{ zxJjzM1S4ueL^9($fYNbHlT=P|x9+Y7Wh2@~nLnioq#EbV{x1Qi;@NRJd; zJVDh;UMM|Mpi47~Rh!WQ86%t8;z^QPc0Ejq^j+cu(G5D1hR++Sw@!xWl>3Yj{h+pM zRzWGQy}BAzxMD?_$9fZopg(NHT3Z4Y$sb2+LMaZ+$ga=LeE+z~O%HkGpEOw+2c_xG zM4D(DnC5uW?*Kk2j{b|zSc=~>pv+1;L;gnK-_VR9vh=_4MldTVKCrm^-T{<`g%FXp zp?XaJM&Nj*5=dP||72OMJ@X5lE$&E)DvcSAbD7IOHjygtxI1!j6MFzdYw;M`G zE2i-BR8rJhH&@rN1H0pk@?bWFbW#AqUyl!r98gsa29wfZzw_Rn%q2HXv{ z73GxdC_mjo-9l1|`_ zp6=KGFv81SZSHUtltVCBKwC5c3=GSS~&VRT7g75tcL6%xlCFe$u z_Sywrb7hTujjL5WVf~@1jkmL{wHeH5e-8hwCw2Q}3a?eL$5(%aYwjLb?>5VR2iSmU z#1EYvVRK(+1)oH1^!Avn_+EDFc>6*o)R!4_zuDexbp7%wlEZ;#_LUWDkMZYWhks^= zKJ3JkPRp51GQ>u(N(QKpP&)vM68#8 zjSLx})pIe|{7F+mz1x%qTS|dju^m-%RkT+hqnAPpjpE`rTRuGOVQ}4Z^ZSzMSbSk z5|x&PwtQyBr_E0mDt{|DM>DTTlNXS4JL&8M=$u;2#wm4z%?A|F6B_bFd4XH&Gu#O~ z=Q_k$sxeLwmT(rBcFya$`x>=!J*TC?84noDXPv2Yjo8y(z1T(fz zGg`?KqG|Pr@M`W6d`wOp09cOhn zM_x)yA6wHh{YpUPzuxK)u3rVdhP63ubs=YRKqhq6_{oyBQ6-ao4DES7_b52juVW?x?ne9N0FrR_n z?jJ9@Z98#sYG%UPU`3yL{t~dbLq4!Q6OepkzPVi;FCmhac}J>E^yx?eU5?Tv_bH%N)8|9EhA5FuE#KV)~W^2H^RizZ=_dv}OS^VlQDfB$!z1k5XXXXt9o)GJ zD*6{lS0&WB-+JSadYy~9-R3aGHjx7bvIks7_6IoJ?-aCE%sjm zXi?OFYRrCS`<<6HPtep{1IV7LuOu`*U4zW})B$sUUP6(R&%iDZ7JM1BtGELG9=Xw= z<}fAh+JOq^tMkq?T0LWSydc5eGSAW|QfEBreavyX#tKrUb1&|r;WDrB?g_(^mC5)E z!|G4bU$j@a6KHRK7Kmd}OSAH>;}7Nw#1H?D{|ebM_6G?z>eVd#8G|=D54m7QS;EbB zr->ofHYD_xOc|AHY`*Oa@yS3RRwInJWCmRd2d+YjgKEy+VE8d3IK zYu(sOG;gWCvy%-m=@+Wxu+!|N7Y5uy&`1E~0dC2-U(+5?Vdryn_`$1N#7MsI7$~%q zOPTxS>+m~lC4Gn5INeW3?IMF#nHX^YjXE3b$k_I|68NRkKo$P?7`68cg-I%F88xhc zz`i&2JxiSUZ@QpAug{SMV_oBawTh)xUX|a$-TxgVrP|z?grF&d*DW{7T$(?H)jI_Z zLmj!%4ll$E7S*p4w8OqmL8_5t^Hpr{`j4s7(FN=jHRpoePX${pFU5iW;H;{c z+o?UBLhl;^cVf{cAn*2<85;rEZPMn`2HEwb>Y8Q=uEud0GXV~eB;pe^yP)kj+i|oM zl^3OaAH8ezSzzjB5eD;=zCWO;+?8PzTlrm1e#!rOs}1uR?m2f8W~-$GkR;|HrQ6|I ze_ub$)SEYAJszLaHP$r=ihBIqQ3(xGLP6vCeXO zwop4{*9J9IV29A;3>u80?AuuJiS~5BRJVe>>qr3T_+JJ4aRh4nDaaG~^7j0`C4NAt8x$rdC!Fo?%GKe((L zSetVv0=NRWc}Prz*?mjtZXU0D8?KU>Duuv-RF1H8k34r>;NP?rOSIXVTY>J8|70)}5vGv{4Sq*3YD znb_s$HCF;0plwB~|ChQ1vlHR`WloQYrS9vFih@*PWGL71sum)%cKK1*po@J71K>Fn-KS8op> z_&3HhOaAYvYqWwD$4}n! z{${f?p#7^rN8@4@my_5U5ea%I6mBSUr+)JYvMAU8?%~Q-&h44vysUO#IPIYqxD4bP zIIZ_jg<+tCaJL~$4AA6emj4!3MC92h9|aE~ME{h=L@e%sw3L}{@WN-HZ)QM}^P8^r zxV+9dX4uD9N;RNE+NUT$yTwjV=X?u=bE?hF*siAm;|mr%trOQ;rvZI$wIf)03@-`V zd=j1t!AiCkG`N)X1VP980>P6M`ha>xs-)dif&TrbABaf4F3oWYPmp(cIH!2$U?fxc zlGz|Uai9VDo?$>p_BzR-e9tH4qZ{K;@p8*|S=ZIQ{F$qoRYAPSu$~ZfwJP2C&)q&# zkt#){CsmmcSxbYG5hVaR;{GDKNwrkpV8u^X+)x&t8{m!h$R=;de*TvcjG01)@VO{0(H#nSNb8lOM|xNW3E5`EP_ z0VZ#3$I=1ZL@_JT6wxiKdKtL---f4F`>_%b>zd2Cz^@rx)v3nxzgD{V}iW3&~HHS8sI+;yjUJ3>JP@z?#1-xybZgBxGg%eJt7m`U1d>JVTahCQEa= zZJi*VRaXOLg}B&q_ApRSt)5Zdv;m2~D_N2-=K*pazC?xgzkUz(oYt?hg4g`9*XkEZ z!jdniS_j+$lp8O#!=Ho5`Gm04WEUHaMo*u?8(bW*j`TCUQ2>D6lcP|~7kGa#1}HL6 z6L4t-NQ@Hu#H#0{e^6*VhP7MPNc*n(NQa*;79UjD2_d z5f$+=xCD%A(wW{F`JUHQLjkuC`YY6HL}>+j{Q#1i zp*un6)$e2*UPVbp{|3Dd0pm~NS_TWv%4x_BJwnyF&Sw+;zF6}H1+M<}U;Eu&cVG>` z6})(8Q_M+XA{1wy+6H&cP{6H(61h=dA^hm(bP}=pMyoVvUi={qx{yH|TvXb#8N7Q- z<*gWL(317!Y+SjuLQy>VD|uM0-cI?6cTr))<8X#h2*)|Nlf@i_AsEqdg) zu9PG8abU!vhbcNXWjBEaljox{y*fi0QPp@Xmb9BsA(6$CjXM1CxyCY@y)WJGp}CEw z7xjQ(KabTZ|3j;-A`bZzNC)bzfFeS40ipUk(0(BEf(JBox5;#Asz;}G=_e3tGZ6kw zEE|e(3Na_^=8ug?3UQZz-J@8u8QpVgz9y2M|KR1mxKzX~RtgIlS6Umbgv z^G<$H)`WcMj5Om zN8YmixUIpg>pZ9WVCC=+XVbyt?*Yf9m z6}=S$&X7<(-rAbgAFp^8D|55UXde&*Dx!KSE?Dqzzs|JX9uG-7>nIqW^YQJkKVNd{ zB-SCGU;oa8#ogL2ljfpiIR7r2k-fa~TkMrTpK>bX5}lj!Kk&f5TxgGclt8bgK8!a( zdt-YmRiLucNUsLWQK8p`Iuv2cRb^n;A|wA`Nqf&zBhhx;oiLEeK=>Ug4<$T8xp5aN z=3rHcZuS&5o)etmP~vcql14gmbLpKG!rnQ+te&c6cP;e*wb4QMa=$8=>?bb-L7pqJ-(hZvZF+{71->Q+-Y(-k8;{ZO!*t5{%|}YCedh&! zA3XE67vA6h9**qEZB2B+@E@Oc(m7n;!7%` z-lLV@ew8;$Y>^8|6KK7;ibC6UB(~odmXhY51of@h-!jnl#KvQIeacYL`W8$&FXC%!OQeXq>clz5Y&zdv#89cg8u$IzF2&;{)b_ zrW!4(IVQEXl!x4hUXL;l@#bqw2iTI0CU4Us7q7A)6XeAWI?Qss2nmq~_YFMDChx6>Yf{1%dB~M=t@ORn1GVGRbk)}L`o9bh#y0bAR&Ta& zvK}}Zb-YNWut`ay+tm@5kj;SlK7Dw6KIyLWhzu{gymDe`#48p*hn=H?xld5U)05L{ z&C{~;cPP3+@BoK5k;^x^DwByd5w%t!E;g-D*H-tnRi1&vQbH`SB_n0Wlj!+$KQfT< zTr*PVz+ZGjA~M2IYyDB#`wv~aL2DXwn&4{Mhj0Y*Xlp4u@|-IsA!RHLYA@Sxpn)wB zJuDWHke#E0rO~1FGK{W@Yc_8NA)Y;1k84z(bNgk%>tn?0wOET3#v;p0~hr&mPOVI8r-7=5Vdg`d|(0vSkqiA^$zkx-7Nz zybFBC5iD*l9*T&W)ixofzq_q?BLm;xv?3IdeXb{Ez?Ypq<`3G1^*ZJI8$5a~!?eNB zv}P_5-Q>loNSiZR)z5+qCp9K#koMB2^m`hWO&%X_XMY0cM4Kpi^)7Kn+reL?{*AyP z9J~$nWn~Ta%ucP$jsaTFA)=&W44>;1v#*KTx&HK3AdriVu)>XEiTpXA^*j14s%-`R zmo^9G?ajt^g&QoYGp zV>54z+UeMX+xza*1mdijo5X=8zWHWYkTqlrk4WLXr@8z$cSmhbYsY#l6^wsHYj#;m zc<=}@Rv!aR>xeo&El9%8p|KG0guz@1Iv7G-R0p!QznL*c{DNTq?pf+pOlksZTIZ0E#{v^fDD z-JoS-F5|M%ucAu~JvO2xa!};f`V21KP&^fAckxbP2QaTz#wSAf>qm3h(ek+0o~ZWN zZexJFR51_jju$n^ZZ88bs6Lh;q%dFSLbm^k}c&lkfVWtq3to! zq`%hxfYVM|FOQh+*w&f*J@Yi?yVSWJ`5OKG@#?3Tkw6uHR^7fv{ma7LhWPzPWyuf) zk0ZVOoHj=Ns3+`RyJ(m49$9Z}{j(?8;GWPhS64KFk3$1XC)y>meE!^ks?Xi(fyd+C9orv1r?M2A1$hf@a;`2 z3q@aAoOM-#IM2%aUc9^E%b~enWV<$}XXWZ=Qg+aYEooX2b{erPe}2JR!3-9VhhS=< z*P8jVo^GcOMNI*xa_dVlFEACNQVrEPK#Zoxy*zT>OygVVqz+?b6L5Z+*T!$~`qp~# zdpj0k13f3YA$qq} zB6yRyG*K=%#L&uy1hX$bzVxYzt_@9ZDR)={3as7{V*&o{X(!0@b$Q=)+Not&H^F`( zy>Uaj+;_JB@`Uz~G;~g>3=-poz!n1AxN*T+k}+UPxk!u3fHt<{qtvS@Btvm+pgFgX z%gV6eTsn@BSvOuoD-t>J?WhCafgx(5+!SB`HdMH+S@_*NUqK%*~zWhs(jL73s+y)(qa7Aej(78wyU$PoYi5Iw{64F+wsB zcwN_lSsW^9juuwp#!UJ@zC%lBzh>}t$)1alaEnI5q0O;&+W6)V7YE6v?Rq_t$1A?H zk)6|aFtCEx5?glfh$4kId>?u0evu_61KGX0a2hJOA(3|*c>OqOO_?97hgw)}%~_pS zyF|B`br+U!ElOC)I1)%uv*0Xkyn9b}y`M%=?zz?~yX35atB}66#Gb}om5H6zKFoTR zD`_@=LT%uZ2idq}dWgmJPBnN}a`Ac-|CcpgOLb_8aFHY{mGwMhWl-0y1F%)Hbk=K~ zfjhf%M@v0x4n5w;mwq-nX|>w3PO`Dkv{;hberJMkZEQ3FCx6H~eiX;*TQ-RY9@1{v zTv*c&94#%m(g7y=4XdnEbl7!BpB=|prN%n#i|v$!;KS(k`UBKEiNgu{eP%Bw0<+9Y`HK-JJ>Sn@}Kb+)_M_XBG3g`PW zz3F~WgiuDmdP$XI&V4A_;b z)NtuSmIBUg*{6iFV{OUYCjUCS9!_%^*~jqQg-8ioaPnPCa;Vowc-G)8_k7{j2N~qm zX`MRNW!Fbrqt8`uQUS-dTsB|+h6*`e7?eRb-bP1Jy}JNh-iztzb;4Nwa+Ar;_RX$w zr8#XYS3;oEDXFgi%$2++WbU9qR>NwQ7%{6@Uo+;pyxn1e6yMliv{w(vBj~Ub3LLSg zZqj@j_FkU0j~B|gP+NNmr&hN@P}C?p+~zWHb00`q5x~^eO7>-ig|R?nU6+z%$F%2; z98wa}36kJkZ)wu8+NeX*DaYF^fQ!QRY44@LpR4F~(h3nG)!i@#XRFg@Gi$Kx=5Cmf zbX~f+2cjb1jqQrCwdZ)>AM`b?n3B+N+-=Pgdlo5mu!64_;)&(MVte3PJrTjrmmv4> z@jySOcQ6K(M_qjmvn4_POWixWI3Zr?BWS>KKR%P88Jw+6-*SJvI=7F1(YRkBkhMoI zsptZ&JtV&b5pjRsIsH79JO|Xkzy=Jyaa6Fb=aGLWj+0uRUCHbsDRs z`n1D^!g*QR@ita_cO#8c58Xu zLMDSB&~=~tnsl-=g+a1grf!%lbGWZR={cO^vfBojBfT@`4*}?VJ>I^Rf!5=c1L)8o3HWW2>X#H#{4CH0)t6KT)Z@pvwHqi!F4)Yr zpQ;C?4zdl6WxhrS!k+%oZ`ri$n0)Lv6}FT)HY7rU3DFO`0@0|Ia3~UzAfin(rS`lQ zeR)erqdz5${?72)*;$^o(sQ#$9?jqYGHl1DWLb-AWk-wGgtP%pI6Jl(V<>$%Z*GU7 zNY_MqZjcbZ<#P2_%DPits&hPhSHFO+Msj2zS;c<*>%7~ z;W)e)IpF7#=d}6jYr9JkwnS=0&B`^KxK>O2s5%@gtZAJI&Zzm-fhtC)zD@v>QLhqnoWup=Hk-4-CN z+4t-FDgY-CKfS6Iod6=SBOHYmx~)qOITcY{;kIdnJ>57Zwl|}_(7usw%}fc)<8f*c z5P3;EsqJZWprMZ#_tiPhgCd=@o4ayQH|)=HE4vIZRbz^txCcp7+V$=T@YW8v z3Now0)3JG2tWM2}>9E&22V0a*M}KrM)^}v+=0bE(CiJEY%AJQPI24u7HC$%As8_1@ z_dLw0=W5nP$SKoTR;vciReyXMhWC1*%6`-2Jpzn0F#UHGIt0gRr_C6}92bz!AYy=b zxD0+O!H*~qKceXLCZuzu5QmqS*I@`;p3x71jQpJ4Y1$2Zw?~qA#{*g0k+m zIFB+Y>7jUlD`xeoZ;C$OLjRS02NmvGyrKFxVC9d@T!{Nq z=$6Mt8{S*~bxm874(Z?U=T*Sc4gAbDS$ZrSWEiEL;KCQhMot^+hGWW3b|AtSzV!=Q zDzYn!sr%yZO&849{nF zE${Rfjo(O91lCj0R%rxH;Ih%7XtBVF65NxGY;ICWgva+CLDg@hsleSjshO4)=9=2*IEaP?LWU(G5_4Z{hpn})og^*Z zT7_r-iB>CdTi3H&C0arqcLHT^X{uJ7Q_4H_NxdiF7I*}Z+23o2f&)Gyk5ecdbf;IF zs)1oNAZ1yA18(`Qj>!Q)unkN&ulgy*hJE)0+Tye1sz_^hm-Zz z(`0W8NYVw4p6u)B$%%lmtp7bTGCtuG@%djrT(ZJBrAwhxa2)k>$-^HZY%yC7m9t(d z>}=5Q9Sd}x+@ewYGlWG9+oe!i+1;#}K=u}TGP2*FsasSZFRmH**&9wXvex*xx!^MH zj>3U?Dj#-cC@0j_)0MpZbD_klMZoF^ z7z?tO9-ilvj{G$!D<|Ur3QoBDY?SA=g9jQuH@~f!%>9;rq=69{ZT45kPbDbDjh{6+ zX;d2KWF-FYw=F%PK{kn_p4C?esr9vEJ3^}(`_`Nwefa}x`Q>g62o{Y^moZMIvgbM{ z%V2Ooh4PkovxQgr9gEQY05fFbg0}T_3!7iL6DnooWMuUu+x`DRT#}v6DLFMY3^6GQ z*pySe9H{8!n-&aVr|J8w{yQg;am2G-_i?4LvHqy)-N3@K;HvZSZi#)O zg`tJ8#I*^&WbTxk(Xv(t-q+ydlCuliW_`U!BiNx->A~*TdS7xt{H*QvaGO`g4!GCwHH^5u{DPiTCH~ zK>CcKN=lEu3Y^Jpem$LTpAgx}DpAhkt*>Euv$|cN;D5%28(PirCXG8=@aD`eNJy6i z@!w%zr zxL;rK31K}L{OZ2SvtH*7aZ53N-xV}cDmm0@MbN=OXYW{#Tg07=^YZiL)e<9BuZKO< zZ*J^YB|cPooOt9IE{fw<;`X0b^vaeN7$a_>TA1fk5 zLu*fDi6hXO7oHZZ&()n|{^+q=Z(*0AEjyr#jj0{b#H^2B)LkvtM`9la)@r8#6 z1(=G`|4b!|t7+!X1@PfW-2dZ5u4Hi??ygOHl^U|M4YjtmhGsCcutYTxUXAk?9e?-r z<-WZ($&io`&PQ_{9UWVxk*XdwXR8&J99l8_O%=2 zvS|bQ{rVvwgXDIX|8zm{fEF#xHRuk7xAEbrgqJ)xv?x(Fbi=2uVnTLl?dp(z>6KS8 zD>CPq=$=1EO>)A5n{t1mF9e|v!IWM#&MNC_3`_L-+t`@F_WRy?>2orm$17aVBr(t= zzZ3Q?7nNJf(;`BCk{~ig$w*xTi5=lK)C^~cS(Fv6M3}pdf3iQdiw`DmVYkh zua146VdX?hvrR9wwKN-ZGTR{!@filn;N^mA)zpm zZz4V!n}wZZbe2s0;2JIW^NaV)HkyAhJQH!qEuZ$>OLz5XdgsUIu5Mp<<})#bvj(~T z&wK4yZptmmq;yPDD#qIhXZ`*$ z^H%7^>%MzD$@pEmdt7n;!s*>@pmd43vj$(dZKkH^C%73kEL@HhIv)^k4Z5^6by-`E zdRAT4bdc>*9ndOn4Ci5dhFsJOuPI(>cnU|Z9Ad>;`|uT`6K1Ix+Zi93gZaj0Nat%E z=Cy@v%=^h-elrJ9@qpaNsL6c3RZ+6;h+6gCQ5WgPxAUwh1uCzp_&hU>8Ah^C`iDNt z^Mw;yOR_u7Tt^4Ft1z{R<_4a(PK*tL!wB$}hcT_jnGx6oRn`ijsVcm1vORy^PVQWr z&Wu;@l0xU#k_?u|E(dIZj98QFhiz@gr;n?1`{(K`>dTIbB++L)BM)p}dS#m*Z?K*L zY$3^Aw-*(C$7Daobs$DHsP{jnGq_%~!0_Jiky#U4py&~&UYGoNSVOVC$LS^L!jg}| z!Ls-52{&uYsrYr7&(&g~5eyKyhIw19bF2^ebo@J*`&|tNc54c7oXcC%T=8-6uTHU`S~l77Y*f$N*aPzPf3JlINrmfC?vBUsU_?D@HKJ9c3Q2({;zS}I208-^afVAEVa zYnW(cv1;_xwLW*v%8@@rRG`tQZ*kQ#Are2#^VaKKIZi1(%pR@vJ-hHW}wJh7~_*mxuI*oy@ZkN~owLj)=V{y^q zzv=bnJqOG0Ro9(Uk!K|-(x>GMqP%-kkA5F863xWLAGl2I_L}_-{VDj11v1U@(o^n` z_cvNB9ewu2S_mUQlt z_i9h^&VU!eObe-UY>|M)ji``G6J7HNtD|^^w1)TWWC!Uf_$4=(V_xE`~h-Xd+Pr5%Rs6qKrutZ8Gjeh-B;(Ec$Zm zIGuFhyPyr`8?0YKdE(0Rz@EGk@`zrXpEnw{ucbI`q5UAjW{b(ao-LD$3E+~~sL9S0 zyxJakp;AszP|&j{=Nj_*{8tXqh}eBWn%o;|A$lcb%k^nm09UO4X7&+qiZr?RbfOCH zB6;iS(9e-s^IOdB^{2n697O=cg)MldH?MF(gnV#x@G9-|(d$dJ_O{#CBbq3c6`*2Q zT`pQpydCHo5bBqm5ZNxI3cGc`t4;D+)aE8FpTfTS?bp|NK3n7wy&8&!{UaCOn0OVS zuBg5o5hLnOcNOv64ftTFWeq&RKi#-&9rk^hb)8=Jdv^FI&tuE z1SO5&oDHw^e6G78JHgYr@ZR%j%&t8&hH#K}#w6L{$jvijfwgw6Zs6MtMI+T*i9Bq7 z%11U3g3%gZh;b+2S2d=b!lpaemt)YH+6y7Va@G-r}^?}?KG+I^>QF6 z$%p-Q+RI)2PpuqzK6FSg>X4FmuHbm?@3f&H%Fd%eOd#@Mt?o{(^_l1o_FimYKcf1G zXs$$LAC%oaDlwAObH!@u6J#}ruU zye%k{&&gb*CGLQJifWpF}XCYkS0xzbk@%;%euSY3k> zZtBfL3F;oJF2U_uebtKD3hI5O4H;S9@IKV@k-fY$W~I=Op>pfUUPbcO z9+N{t)xfP4Pm$iOi`~0lBWxN5oRYt_Nw%e5p32FBM@+S+jnc>{VfuVNfQDnTT(%i)u_v1$(^4~;vm$=G?=m?^TF`In3kl&_vjO!C;oxz^;A$DWU{fflNmC?;;OJL0|ct1 z)(IL!=iM?)LFc1wHXO07R_E~H8v5a#jDaVZ$@ov)b-TX43$&DIl0fBv4V-V&h5h>w zA+q!sf>@D)`BBroyr#;N=qR}UGHx?U|Dq2Iihu4We?M^d{@XLnZ&$TP^thqgvU+o0 z=r*WFenBCeI?!Gd$@|Qm+s`T@O_sb{cBBbBRv8MqD+$W1@((tTs4G$}fDAj;(l3(P|$n9(xk zz;iX2u}g`cB%XA~{N;6>TCQVTYNJ_G*mrzv#R#GC?Hp!Zei99zyt?jnLnhn^)wJ-R zse}ff^}c%xjukr{uwn6WN9rcpV=vXeIaWom5`R|c^EBf&A! zd-W^KBMETN(@t~?q%9Eem>;GJla@*Ex1h7NAK!@k`#4))O_%YS%ZwEEw8b{UFfG2N zrGBR_sndPb@ZK*!jXgL@NP|loMpd%01ywkB{wu1QP@dz)%5iJY=bX029M(2*Vcwfi z|M`H0b3&v;k1@s;pi0diXQ~zmkmcJavdjYl*RV%Aw>i4~;55Lw8 z{Tl}>KI%+xm9`AL9{WF$>a{b7e77I-Nqiih6#o+fhq_?;rLVeeR2JhJUfj793PSDY zynBC1p9U#U3!wWt6>vnZ!fOT$$x*lJ`+g6DtB(k@W@j z_j7b)Z?CJqr|L9Inq|ng+CERi#3gIhIqb$%UF{4bWmoEl)vs4hJ7_e_`qh{%HK+Hb z4&=){*YR}KYBalRm1aJXbF@6tjyjY$f~8Wcc@HD_mVM+q_A4RCVIB2}`Gy}n+B>r@ z#RC>8Y_qlTOxLlNqPD7*A0*YSI={*gnmY{@8sP3|0(mSd7W%n1f;M|iA|2h#bHhzg z?<(@*nhT`QzcDIDuOhXLEytI_6`zNaS#fIQ2z00}UrD?|x#R8s=3K3f|Hj(RAMVrg z;07b<-Xj4F71P0D<;E`VzP&eCpdqnhJbbg9nh-F-z_fNlcbVH{fU!1m0VUz8HRqNd z@ApS9#_t1PTSqMQIT37j<%CYgxzCHYVY18dW;V@cCe0j66z8O)yjn)Xt2aadva9Ns zN9=H%?Wr@l3Z?E{vrOALy)F@q7I*GR{G3tbmu|(aTN~k))RTleH`Sto>meMDtaJXA zhM{+LJBO%$h7S{;`yv^0e876{IAs{@vYy}XR2;?)y%UJBpMjnujpu5jO5iA;-n>)i*J@_C#T5VGS9AYenfVFY zMYh?pkGp)4*PloI{_VN)%Nw$`hIb9J5D$?*qWyy#t!71UgIMi`>!)U%L`Dg*`0ryg zRcYOoOH1ckOqN3QGkgs$;czOCCCCgrzE$rh8p-?Dr@%$cx%#&*PIpx(AF!3qvpYhH zxL-_pRd90h{>kAf9qD5zse(z&*)7XWHG71Aqj>#V_f`e&ww2`mBxqG|>Y0W=wQ70V zwhKqqECgiPNKf4_o-MM{`>7SR$k!s!BQCWJy|wNwp;#7ifSR7(Iq&#?RCeZJNu~W8 zXQt9J&9dCLNlRRPVHBlrbQ)GnH_c+bG^VjcsuiroX!NuWv&Uv2e`F`*FbDwi~Ny{sf6HP)%URe3Y zNIDTmYK>fqQtrF`>|K8!`Doc8c_7f+VoztCmqJrB1T)~%)rrcdDN%?4x|}HE+}MSB zu_0e=geHCO-sI3XKcuWKpBE(CQ=J@k{2&{u4Ej0`X z3C*3qZ%KH)BNr@9{_wEHXdbEp0$KdzQmGYx^+8eQ3;NN?)Z(+-PoF=a5ucEV#`))w z`VzL{^v38I@5YKc9`yiBFko`!a-FL!sze!#=^uBeY+}mccw&wvVdWmzPspXQlDt!k zg~A*Q1|+CYwzJE|&k!)xCrr#Pd6NA$r_bGTZY-0$v@r3Kz`d|12P$c7W_DwHB#a_u z2jv6uAj?(;m_fk7wvuj(97MYdU-`x?3l@s zd0O#^x^~89zaexxsP*^um%brW8V;EC++46oq&~m9QnusjmJx0Se3}e#{4*MSy^BI#KGJGFHtp zY++$>PJ;OJ-Nt6fSW-{xsOsVoNd(g` zH{t9AP}BTo#QQMhr%_v6FtdX?)u%H|qAMJ!>FOFL{|Zu}1BNQy!c0-a&a4@|PgJEaW0tc$5blK|$z@^wMaIALyFajA`&9=lStb zRRL06tJjNKMz@-H3>J9@jXF@}FQFH_t9UTEqtC#)s-z^D#53%Yo{tV586N6DVv{(B zS507&o7(AbKZ5v2n_Wk#wi?GLd~BGF9hkdQm2Kw*_v1I_>x%*|XzCO7ut^j*aj?>d zhc?j^K&@~C3l?rhtY*)tPeNq^#(MqZ0FFgw%WW9rpbI#aV;fx1bOStqZf|K*(wpvo zl<15Ws}(>~T6R0QLv9sHRu-pikp;=?t77`UFb0s<;*}pkW+9thZZ7?})!BK}8nApp zw=e!<(f)tjVtrZ1=&zU6d33$sQ;b~qjn!Ye`Q^6|o&KJWf`wDxxVs_p7-l~>so#YG zg*I4Ymcf})vCJhmpwTNf_?FtS#21Wy9()NDdC!-_OUj87NxkaC8#t^F;cw7w<`s2- zTg`wY(*Nr3j_A*4wi07aM@O8IvUI1$3fwZ~)vcZ=A-7(O_IoV#voXK^=DagyiV5dp zrzLP4va=%@~fpO+s_h^lrWm6Y(sfzGG~bH01kgIQr#c9<%S> zRA?1EC%c=?c^tVq=d16bC9o3=sW#cU3n`M}+4wV}HSRY!(V60a$hFKARzHhi!~G)d zokk)NgotUtg1vAz0ZUTvMy>KtGd<>639kDB8tE-fc7!68sS6CD z)g3V$oCjz4FL44tip>t_kl!hxc{j9|s9(VW#%EN1fSd0yahdgOQQLQs->H8YV>05V zyF{uQ^<4-0JTtU;Q)q9@r?L!Eua1akZa@BY=OVv~{UF(z*dL^G_I1XGy7iz$2XTPA zMAgC8D>QS7Sf!&-%v(+pqyT!Xg|$$k!h^hU%uAOfQWnPXM~&VklzulhR zI6ps5Tyox$*UZ8|47b^o6_g*vV5Pjp2X*2NBM3=pNJdLOA*+A4Dz;BDJYCR$;I8gm zuzgH@TwnYE_2oOAFv~rB^WbV{x#}oFy*YSxOK-FPspzlmp+F+M?(So3a%KQSk~F`- zyu6vURLrqD{96NS(#OLdU+xeWd26B5B$fux{U-1;>GY4c9L z4m%JQ;mx8iys$*rUxBxpZz3X0xk$$`lKMkeiTBJ`T6A?kgH2q!o{dboY$rg~eQUt= zX@Hr_h<&SxKW`JUYf7Z^8NvmvxCeLwuo&^qDirF0?dAUC&H-l)0r#Y%Y${{Ba%s<^0}!RU_2|QzNI4JtDi+He_yN8 z?;ggfh)40uU2FhCj#i&tr{w$6a6y-PQpHhH0N`~#Bs@4;DP@zpt#aag#iE* z$1^;Jk#9K4cJu!H*$M0YaW}ZwYdeTz%u;UzVnq zlcB)tj=44JB>qIx+J<+PXb1?z?lEP%w+l-)kuFBU&uMR7Ok+|5BJ#w08`fqo9!j2X z6w?g1hK7}`(xf>BNoB|(e|13hB?P97P;HklG)>Ck^i~b&bD3PC<*L&eKi9bo!fDLa z?r)m{@c!y3;t-+O*yPDf(61>bL^{nbD=Akyj@>fuJQ$QAIW8f@;8yEaUP9-dssi2W zyy8xU&}=zel!#sT&vLBz$5JjCJ3&;byU;~P82h)JI2TzkShc4wAolZkX8JZ9&nouF zeI(y6ysx!Pk%p(11P@hbXlevizQ0Bcj5cvzKZ*WePQVo0Ez-5?%XrF2*Br@S8czqZ zIx$x@Ut7PojKvy1FTY6NBCUy0a6}H$f`;AeAMJ+^+w*4@e5!a0!xwXFfug;Hw^wRN z=i882#VIrLn&3Fi%tM^QFnd0qp=M4$x0K6cqz=p~sHh zKJ_P@a}qhR`(Hja(z2=XJrE9?bh@-Hm3HXrMdstc{AZh8?q{bFnq*)k+4DO(Ajc&@ zFVOR5`;2iE#WTSjD~q+(J!#goX>KlWe60CN$p?#&#%iJaqI!qj!O;d8@?Fj2+z($L zkv^BP`<00BG&Gw~BV23zg9xqUHGtug*c#68u+Jy?|Dth=p-fClooa7C2^f{n4%{ldbLY;?L}%uvwy(hFKxd|^ z5KO78+<7@X{FM71hq-v^8MQl7@B69y5#yk1HUV~KWn#^Iv16b!;M(Q^IW2{I%ZH8v z$$a99CBBigf6I0punho1%fPG)jbX_T_8a^p{Fwa)=(=weUiS}KgO{?Afr0u~u|Vt* z1k!rTQhuxgj^wsrN)zFw`C^}v%Pw-PUtr(SZrN`@E4NOms){OoFaYldUeRcHVcH_4 zWN+)hXZxGCx7U{e`K&3(CJrzb;!|#;u z7R)g5i@iEqzuhKZMC6f1$!^iBEz%=l2AJOK4gb~NX1U~Zgkv&9@f9i9IwBiR5!&@@ z^n3c>1{f*+C7NTX##2(A&Azlhb{F{UMADY78-LaR$_(KlSpyQceh!^Wa-%xK&4-2Z zS&4?VHU#wp>CZ1}S-hOF&92*b15Y-Il|JgS!xd4W^+oGzmk6jk>{k?*a>r4-c@d9o ziDL%NqEQVE2<_1kk-8R4y!fVCQE#n#bE{clDx^6rya-<*d%#LzJ33(S+>=-TZW_sN z0gr9}R<$pq-s1I2U$vg$riU`;5R@G`;jb>*PXa>JeO9$w-YDpf$aHyauBO0g-D@`g zRPU;5H8?H6O+1aOOCDr9AAVx2zF7Q0KSEbrlqlba9uoP^Dl3$_bRE^_Cv!?_SV=9? zkBP1zd86-5(tSl+t&p9Sz9aohC9)I3oY=It?!xsx(U4#;p-&X%@*t!@bYYU*eO`d1 z*!=3rNPAZmsH5P|TY83%n-eADigk#X_mx-QKAe9+U`_Y@Q7_}e{J{CjI}{?_S?@Mz z{)5>|y|^2KohN(%ulJ^-=aFb7)faH%l#%KjzjCuw3$6mmUx@^tXn}f7qhl- zF<&4CpwmE1V4=FIYS(a_a(i(Wx_?@gm#zH*+wP5%wTty@3OhV!=Nhw0#J!37KtD_@ zZO<)Ex%e!-Ng1{yZ)8f)*!>PpNv|j>6nuH^2(PTQ&)3#*%Vg1OKX^eG_eY`9O6Ssq zzzG#Lr)8<$&yH+1mxa{Jp2Sg?m?t#)`#9mkjh3z@58E=-@ zq|?%N$i6;LjRF=>jQ;lD$8-Qf+}qgO8Wjm9<_&uf|k<8BO_yJnF>e(+@=B zkBaK+3b1P!Y}DBc0yNwh6CZr#Ltu`iQ{Ax=o-?1!zHake9GB1(9v&|L8t%TeO=;!bb_upX zE5b>)`ipjdw~kDYiH1h4$Tb5yFrNMy=jwT__dHbLY)Bw%OO^5Bqk--T+d1R|~p0EF05O8(0{? zL^YoSz1aGHL7hSX>e$#At)3|B%UnbTHVQ$X`k`NL|ANYUxG6&T=8ebeqSlWWC;@3x z2l=w4MJ#jAuva!_4J_Jp@_7rmVCYd4g1P*0f>@=`oE;zOE+S%Tk}rLX8Td(KaB8kb zaoK9}E)Y{zI{`qW%>Mz600Q>N`*;FE1r^-(DL8DhGValihVjmeUmr$E~ft zYN6`=(Bty2Ye1U#*!Z|MsIx>IyTf*$(zTGkjZBc4F%no@#~Ry#Jmul3zwrx@+kyUf zuLJ@*yT5aVjeM1!4(Fid#-9O)erKT@NtnMj(C?h=yW#+p;-bFrCPPqgy^Ra;Db*Yakn%_2*emkhd@{|FoWxsIe!{?+bt9 j+tBDBMG)vXcU|#7G0W!``Ul+&Cl%&!<`nUyf9ih#)SDA& diff --git a/external/lsquic/docs/lsquic-packet-queues.png b/external/lsquic/docs/lsquic-packet-queues.png deleted file mode 100644 index 8cda9240528d8ea99b07f4ce25e70db686838d03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25056 zcmdSAXIN9+);6kws1y-V=^&t>Af3>QB?2l%iXzfm00W_fUPZd}9y$goVki%g zV<@3Y??~@_3*CD^&%5{gzSsBTT-Q10CyT5#=bCfOdyH}4_X>KcEKfm7PkQd$If`cr zV6}7SEhSX^;W7bA#S{?J{c!&rMp3V$A|61?T;UG zXs@9WH`yWlAE>C2IS7Gt1ibz|75@k1Z7wV}SbTMiVio&!b?mU>bkuD()yqQ}o|xDt zE%XYcE-fv+Hs>;ChE?&)|01J1m$$Z`s-B?8ffnn&{_Oef#jtCSFSDx6TGc!Z49r=* z%<6mX=|hTqg^$1gp-S98@$vKjA20Ws+nC+xrt+2u(9AubbWviIFXU0iL#w05;Z5E< zoeo+xI^~D z{z@@hH=p-vr%CAW&xfZp=E@w<9k9e-cOyy~DvMrwzrOT#B9`-07G%Xs@KsU?4Uq?Z zPK9PQG~LVe-K`(ooV_`cz>52>D`eF1nBWay9MC~VY9eVGbJO&v38*V%LLA-E36?QS zJr5ZQ?(cRCuX?Yxp+K5UM7n9MuwAwEDSS*rsP{=#)=~OPj8E6ZUbE}W)zVX$=+OL< z4wDK6H~%7To77z ziTuu7ggNWnJ9~4j;m@j0zCb`sM#}kUx1jQ<=QAF5<-3G?ABcBHCZGh^3PNE`w$QjW z+WAv5`?|y#L}HCek&CqP>>l-#~HaTk#kPE?iJnkYs-v?i$4Ky>NS!T3YXOT+F; zTC_-rSCUcZ{+P_$lgYdW)GkB5HIZn#WL89=)Y@d; z0p3WT3Gt?rVaBb%#bZ3tl(zl!s{LaQH=P0E1FwXmK!dk`n{)7aR#M-($GaB~xVmKp zp%m9SR@OlUO!m^s+M9`t-)wwypK(;AQ6-c>LUXP+LDEXT4jrGww8~X6A{fba+d*qz z7fDi5TA87y~NZhIMb|{wpZ1uv0>2=0YpU_0xR|{_Ni$#Z;j3&3{pLQuaO7E$2NPZ~3h5(UM zsoqu8Ug{Ry*`8Bu?DAxbmgWdy)-c6qnH8n!(uIIc^)t>!R~H(ZH`se~Ewbv#*`Gp! zL#I9CsW2V3Af^i*ajmIk1A;@my%fuFjjVqgojh=yV$tV*Lm*Cn(=}UBq-Yj5JT5qt zT>97m&;JPAANawrn-M%U&n1=n9Vg`Ch=FKA}YENxOh{CyMIs z_r3jQZxRS;QVEd|w1a*&She`1wB_ki;>E;k^PP&N74gOdSVvLuvy9*1QO_PqLPMmM zqSX+QOy{bi%%JX;Trn%{Lo^>n{)Cxc+-x!#WJd@T4%OZCe3w3M#>Fw&HzUR!&E$M8 zWZoWQD`Q{gnbMl5Ao}!D^Zq*y=(=Z8D?R(|qQ=wbPMJPkPLR-KaTzl8IfIwyPiY_# zN0O!475&~?4v^4QZ6suJe_@Yhuv(wvuqHr0E6S{lE1HQ|mHcl7#(r?RxeEOHW!=KDp=qrz(o9 z{!O90+jUaEhWLPO3jbz&hx3$%;P|#8SNf`)vC(A#vq~ojMMJqnbc$J+DiXD+!2#XV z8Q>{M==4=!h+g-M*Mj2t3&9KmUyfK9^0nf-Zl7M=45YhrVTiLEIHJE^;XQN+e-CK! zFQ}xRZ>H(HLPI7laxYS^&!Zk{`s3?jjya-NO7HZRb|l&vca)lo%9w@wCeYsLy63+X-m(VYimPCcnHt@IKhcc`g0Yik2ZHK9RGMs^u;a9YV>u|c$ILo26*k171@ud+ucdIAIYXav%`M*ItCpA&H zTuF4u9_>a#LAP_-nc!05;yKhj+c19egv*de``Arrx9%cjX~ps2NyW~J{*~$mhhshv z3Fyo3`vVnvNy@a#m>Jw%#!Lr}-F`ULOeb9UvgI&0MRwX#>T#$d)Jmb<`x{mQY42Fr zNIET!%xqptbDJ8kJ|D3dzv}8f=~W6HpL}&n7N!vO=ZA>zFq@>%Gi_ zFIJ9&GXaW4jHQEr^3|^(!bI4Jc}o_{9!0f=*VC&6xhEo+@lz!GwX)ymnC-kR!w7>l zb~h;em_$Ff#&uKl)Q|)wJgt2i9QJVJ&p^cAt!(0}cels;FTRD)i#bQ99q~zAuwD9H zQ(V9Hwa%*db1P}hr})Jh5=y2M{Szl9?>B!Y&>Hw-q74(nSM zY9M5u$G@S-$GvrV4p9OU^P`NE`Sa*{q;YC4Od|$HLY|=hoO>~)_!`qV~%GvrM z(S*LvBnv&A>fr}E--Z>d4C2HOqrT!Q^iM(7$HMkA9lL{FJMHaH1);#x!3)>F)`c45 zo7OzuTZ|zy7sk->uj03{2?jKfei7piN&O>n>*Ka!g0GL_VOR=oP~FHj_+`C1Ipjyirt+4^4N#jrlST;tI; zcOQwz0Uh&=E+|sF&JdBU=f-DUC43kCI^u7Of$v9siqsAj2w?O;dK_=K=_8`EQmtQm z?#GX8TuRe^*IBVFap<~HOomcr%WZNEP)@Y$7@llSF`AWGFV>w4)j#cYj9m4YFog8R zSlq;NuX!BYgl}6>BDCPE!iP#y!%|yEYT73wNh}G^qO*ssI>o%=T$Z9`HN=_@X(}OC zWfqCy6I9I!`+Rv3THK1LKRayl{hbZe2>;q+HyE=rX{PiQpVyHR&R1+oS+njB(#Ij! z@C`ZJOog93bW^n4RvN4o!zo;oc;u|jvbwNi^hKpB!%3WaS{7xp9tWn5`v=ml2`i4n zKSu0M)$xJ0SRr3Rik$Yx?vm?jlT4pH_{L56kPVx$#HBOx2wBj>Jl;A9b)Z zH*x@OFJ&pK@Cem{4%;(rF6I{4wTm)gGC>Zj(u5rr;lX6r)w?^=1>v&CBO`WBA%aks z@43GZr-Iz?{Un&|DKI>R8)=x$@h&ACb1D}t_4lK!q%4Jm?9n`y{T)H~7<yjdA(3`eMQBJ$>5#+vqs?zb)=mV##B1s8D_? zlwK5OId-z8aKKr+YvPvv5{pw}Sti4qVk}s${HHGbe%TB&IgtDp{Rfg2F%D*0z z-G3)KcIfM|k_5u)6N;_Oc&iuVNC_jq27_n4&EgTeHT$h$uT!LVt4E4Ef+WIl&d(r{05B`5M}ys-va)4gH z7^kLN>hp?VlB#tZN3oLJ=U+=oIw6Yor;|M0V6bZs`dqcOIydXHb_xqib@#W!lTv^E z14ne<=ts&SJZQ*EZ)%R9`vUdqrpX}VQjiX8KSqcz#1h|a(Z^TPQ@Fz|b7Tdclx&GcN5d?*WN&T{i;@(vM++?|cb_xtVG5qN`Y-Qbt)?`U2aX0#% zr5@j5f9=E2jB2C`k1_HT7JV+9Kc8!IXtS#Az-AU^#pRZG;gB?(jmPY7r=ADR@gwj5 z63PUjGxrlfXIaud=-)9g={qX#XoGKd*oAVaSwaZ_GR)kU_)UD|;_JU*7Zi^`l|ISt zbVL$#cSgD_#UYo_oe~|m^^UUK_5KTAV0Y0R0IJ6D0&6A)u{vpA8*GJ9%C6p!q)g=2 zFaAj_WV6n(Gr1r&);g}tRsGkzfw%s3;~cZ-Oe*=cTj8!hEr zuI-eNa{XAdAn33B z0n2K*rwS!*#oz&&y-X%1p0pDjUBBGK}<%;368y#095kPir47=wr zY}syQImXcbRR}5-k<#_G@HnTZGzl-8?|<*F4VME!bJpHdbbN~Dn2Tj+9#j^c72r&> z7^e}09+SXggrG`E`Nr(VhG@Ue6qiulFfD?|xDU7Gc*XepWUU6VA}=quvdT~YWif{> z<~oX9puw7+knw_p9Wx=oTTro>F>qr)YS_ZgO90oP+ zNE49^J1v_i%N+hJY4_PBi$fI=gxM;tBpIfS?Gb)GhX zw+GUZnDit}MnF`BQ1qilRNJ~NdbIjkUzSL3)5JwHeBh!|qSTLK%O7otPiMW7oN+g_ zS6SdsVsME-FQDpQq3$6wB>ITSHdM~VE_92-zuB`4G#X-lIVZCkpWQ>e_&nyizRcT_kF0yN$+Vs z`?Y@}={uXJY8qz=HIOZxMDxzm-v!yd3;*w4e#t-qBRrG`S&wZ5;jM-}`#%|HQ)c$6 z9bRSf8ZFhWDAO)}=isugyS-jh>)S6kdS4{?7|#AG{}#_%-d`#P4#nm}u3u_cz7$G0 ztQPgkda2G2e%X{fss3F5ZV0>0aI#O0lu?T&DYKYr3gufJG#%wrNpw9K=;AxvJC!+F zkqyyE{9R092`mQ#6Q9^Umu1b@+3R)(dQTr4t3_kgIfdW#n`6B6KDU+Vl`-od&J{}F z*Ls#Dy=2u4DMl@Wy$S;X|-Wfpo;Fh%X`efI{lU z7$um?O4s#Rst-8REUw%1{avR<#u3G<{d9uRUw6=P`6l?@cwFK=nkeD&lq3<|xhl6* zcP*M3S5z|%pQy(H<v6f|NVa(=ch5=}^+6p$frM*aPj{+WqC zKmNDD${{QM70g0U&r8U64#xC68pR8I3W3gF+igP^dqaz z%TN2tpHahm`!_p|$@I_?J27a*ZiBbfa|QYe9f=^(vXN5_Jr}i6kXPiD6N=3-QLlFG zS!m;&?4ZM%_WHZAqI+)-dUhS%Qm;?&af4b>&;0%#OnHucb(lJt;Q&jR)qqVrDP4GXTL3ngqQJH)RAXVNoyhM~dQ_o6psK~cY^;#OZ*|xw;o>b%# zE@k$Cta4!x6KpY*8%u}zK?}8ind7{&pW9CNnK*}M0td3F%FLFm$Y5YIjzC=NPEw1PS4U(N&ripsxO(CjJD0gw9Eu>_|-T_vJN{ z;48P5M+c;i>KPpO8#PC-3tt}1ORyv0y!M$kTY{~J2M{GM@~e2tLRJPZsq$ilTfG|A zF*CGvK%z`qT6O+D;yxaYS2Ro>v9p^Ql*!l1Sc>k#9)F|ZI`U$mB;XXqHy;x&wqqG9 zw0Dk*!cFnd$^Y|smP0xQs0&cS?4^Ul^rGZFw%MsxA`Bo2YiUm0u#)!zsWl6u|B76S z%c#^LHlnj~@41i%emkp~q>6jlx-RNf5N`NM7hlIAdG?h6#)NjiP59!xV5}B5(|-n9 zMj{A%KPbH;)lGj)P|lB}qR8h0P+1ry!Efm)J7p%V*0WI1i$Ir??$M{sc#&Y2{Rvjg z+U3jNo>~`xp!&z=`s2sne~xTmD5Z3}QPTU16+0zqUUT5oWJzAloz(%a65U!sXyy}u zUUYq={JCIw@9Kg~8fY%8aw7++JMNO3)tWZJLH%Q(YA2QjiyNY}tvBpoWKTd*uU@;*wl z*=`(Vi((WaR5%17f1UOywcC*>T&8Pz$eeW*AUt2oWcD+TI|1^>P-NUyo13j> z3Dt*Vl->`i+@88j{m5gpJtNS)Rhz|?qd@8bc7gy@cD%_R>V9^1A{bkV#m{|8X(v9* z_pH1KZ882@##}5UN9CKruG=ft)~I(9oUHp_6)C6VH932^b3d+2+FJc2>EUaB4-i^) zxbj(irRl5tJm@BYtAjREq;m*w74pK3fl&7Rin``G-M)-Ksp<8J!pCpRjY?J=Sa%0w zZBw#N)aCamU;?g^lIFM>0Zq<-Arc7rGGxPYG%Ih&W%r7s2B)~5@Ee$sj%T3a%p+sL zmHPIMNAk?pd|bSuC@yr<;gpK(K)%=DH_oIpYAJL$$Es--Y1N$O7{(OwkjVCoDal{j zZAk#dtrg9A;!SM5=k{oEwZM{oTa6VRHx8YVxx@s!1STJ{|6KK+9~(QPIbvTXJr>lg z_-(Y}NaZ6c_LgeLuum6H-b>}_fVC*|!Wt!wAKy``*4#qS{vVrsHFb#>7hMNY0&f#5 zl?DnU-CEZK-lZtEqxPEuPrc7eAb7lv#h$;z=VP}$p|B%6PS}OAaTigje*+{msTj^z zg->-NHwRixFWwh&O_!25!laOi2vC0fs{|0zTPIk&*$^#PjCf=|*~JKQb#tTsxt0NB z%73P#YdxHv=>duot%3Qmv9e~eB5)Gj5gBn~=5u1`CIDe}Wf=}nANN&=*SspnYHiL^;^a3(G zh3({1ow2%Uu)DI1r?o-_+EXol#OUWYdeS8GZvg4>l_`V*{X|@)b^?f7)mQYlkgu|n zh1kn@XH&2(IVR+iL@)2{cF;Q**96HER_(_0g%2TpUfl)^b)%2~T}$1}qwZ(XD~?2$ ztkwAQ-XG8jAM6aaT%t%S+2pP0OiW)tAgmNa{VvIHas(UswjpWq^17%#cqEX# z!^`3+Ocx7x5hTs1+D}V4e zqP~@N@yR-6W$;MQq75~j2oxbE7Z}~w=Jc`+61qeu%1B=QQ(6?4{G^jlGzF|T>JYj5 zJil?olDhGytG~c@2mN+1d@;Xyq@Vw1sss*WKTcM2o}8v8)@IFz+Ugu60V*!qZHR7i z=s(pjKM@2))uaLS%I~TMU>>6v15EHmTqbz)+Q69J!NO#BdZaqJBI|*~Sp#1&3R1*1 z2I#r&!lA_cj3Z#*4tjqi(2Bz4Qga?qFsc&6&hgvXU+OV0x|-$7sL0{C6E6N>9A(Jw zm}K+P&tX2S{>}m6mfANQ{oKb*uqgXlkdfg9ek*`l$_%aUJ8l$2F5$i^d`{YY1ZF0Z zV~!PqBB0P1q9;uvwEW0}Gpes6=@a$ZbEtUTQ1?L95EV zFYkJpC{L&0q65M;K+C}gQ$AEH1~=|Fpyemm97Iv6es94fS*X3;)4>Ti?0w*#MF4!y z@LIR>)Qu6#b=_C-N%Kh{eRp|xW#_Q=+&gHFHoreqa;{sK-YI$Y*j<5bxOb7-K>W!m za~v>1_SB`1{1AJA>mUOrHWAn&oo`S2;cSyzT45-idZlk#Rvk8+PcKyn3U(H_E^Gi} zQhY5Y5x@`S)lJWZbr-s$<-RAt4%a2Xi-B+VfyE&>GM(s5Fuwi*%s6D<)IqlQFMehgV}H>zxkS#+Hq9Fhhbe?O`KvPI*Bp3O|Cqd3V&m};5K z=oGjrM-rilcThC}^RiZvbfOGD49P}5ExS5?Wt+#HF^QbTLW!y1>k^4WZX4>Cc7uk{ zg>n7Y313v6dsZs(^rfgAVk!}OF%tH@!>6$C z{Boh&4WoxRP>Y~`A1}6^SLGd^Ln-xL(^`p_pF?0SlY9Ra7hpl&MuLzJR*#T2x#wLE zws)<-5%cW(2KMSkwQv0Ir)&3)^VOp+1{jFU_Z8HiN&{5kW+x9)yE~x@%MZ1X!_O}| z&c!PTPzjeMpC(8s`%?Ec?jw1PXGfAF{Wf}&wWj1Q0Ae`2Jy53zM`OYMpx}#E21D}r z`N+vO$hmuW{(=6c_%?MxsMgIzlI^E7cm0F&+2g-HF$smyVFveBf#~ z#WXfSC*z4mgLO-NALAVm6mbd3FzKMsDFaYazh4K^u|`4>ETu+HEN;nb9nNb2@CP@d zeCWq!4B>t|hBbdp2YsBvQ0i6MLr&dNq`1#AQPF^g>GYzNEB&J3> zRC}^-Wj6QM+@^t6QRuW=PiABP^-9iwu-(`Wn)$E1IQnMB98^}N4j=F5 zfZz`d%6zf@0GuNYKdIXFS!i%%dEcgKQQ~|=#KO$~{!982N#7h+Vu*9}+2nBq%Z=0% zKe?FWgC&8L3v%AyZBF0RBLy054rZ1Mx;?+D(?ckX=}jdVNFX-2WWwWdGI6g5lqzA1 zNb^s&65o#^g?oG}lLe@p49Q zK9MH(;^TP;*r4uuEsWpXEgzC`r$Lwnz5n&Ll~{4=YC zX-NW7o@LH4MpU*<+h5hVGwpGE?sX>}99m=4T|G9aqBYS{KR-$`L2^Y>`| zu*=!eeG{{fjfmrA8_!|5r0&+{byc^7-|j&i#o8!SVyI50)9%z@eYK)uD8-f$q=W!! za|Wyl{y(^Y90&#c>2ydy@?m?j^9}OWyvqDeROGJQ`BdTg}L9IM4^AZIBYfOG+H_faihfVaTQUcv%&f#^3 zsqbzGvt<5bttYVni>UB-n&)>b!0O*x!Mg1yY&m@o-Rv1K2r$wh{~u0baO zpV=&Xikf24Jfk!JFO#*5c{39R zUdbGSx;}1pFk>u$Y{F>Pff2Hny#IT@{-cjJK4B)O^SO*L4iNu{Fo~Qy7P!LRrC|@J zX9DyBN96M|p3QlHk-lSwcciV!UfHnUyvxdQ*R)7cPbk57@0-MQmVk7i5ERw^IUVM9 z5;kP(o=J3@KJmX!OUcS6Y)@PL2TI)HBR@AMMTJ*)gTe9->`{FqKc z$;N*ZT7Q`9e>;;_HZ&LCvc;z8;l6XiM(_3sQavwZ=O+JvlspV z{7jXFK}VJTfAk&pQ&e1XIhhP&wQET**e$@Q2(Nbg9iF z%E(2??XAIDFAns+-AM!nK|Bn-T|f@xXZoc);TQKO}f> zfccQ5x8o*_MnlBIHOLJ^>c@dae_WBuSn?JVih+k-kHAgDuJ>OWdwByy`hnkXlS|6h zd~_>)$zzO#ZTao)`<|cv_AmSSnAWhZk?;Bu?;#16CvQdn-01V?MtcN{d9wZ+qNYpO zM!p-sOub(Indu=T^}Iw);VozBmnt-FYNbbkFZ>`j`Gp z{~ZlSG1C$a{(9&I9?JeE{o8=nxb-EL#Hqq|iX?1&>Ahq?DDAe==_7{I;$MYSYF8{K zige*k*t5L5o#gQYhsrkef;>$;&?kypl?#;x00h$7qGa}!0XSHm2JY3^V9cWATc$3DD zDx>tIaXen*P1WJmBb=<)j~<6(W|o7)NG{F3tfk7uw1!1m5u?qTy~9XSXsy2wkoWFd z*oZEP+BA$;Z8oND(tCY5`J$P2{;OcC-C$IIio{)hX#4SL4XXuU@jVB)aTK?3xdAz2|n&R>HK_<_sA#U zWce@hA9d!_aarvM-)K9V;UBC!_Ae(dAbExstp(LW8O>qs+`DJ92c8%ITOv498q|~l@2JWd ze~CI;Y_8lW{8yek6F`8cDz!a>A)e+_ z8=koWT$WyO^itl++q+Xx$y)-@@5aZJhG(1B-!aTkbCNR2y5>h;eddE<_M8l@+z_@O z|Df3cW$}#GOx1Ae&^I|1t*Mj&X8N^}TUMy<9i%Rbaw9G_l(BRz>ja@ceeqKCJB(|reg;(v8aI#WyDInd?cWwJRe1k9&`(p zUZ=^eJR`V=Y+4F|8T7l1=FfgiTI~enktU_Y!P5@Dg03j7_S{biCB`b^?ISzuXqOpa zwSVsvQ1}5SQTtN}RBrq{Lt@ocu?N;3`oQVF1n*Mkn*+u)!9NGK=L)c4?5}|Y@~#0D zx#Z9t*-S9A?DUveAZ>@0FA2csKex`-vWE$Yj_;b}yYHLHBH(6v#vF`xpA&>l6I~z+ z0WODmWUAqSI{}CjU>klbF&|Cw-9SSA`cip~YQV>XQo0S7>Xx=YaacpJ%NNQ{b$bSr zR_r}k;&vCosqycjDc(vag?`EHywn6IL_npCoY&KEtS+uTl%v};77 zvvm!;UY^V$15)+hrDZCxw_^pN;zmDG)Y7vcp$9|x9+%uyQ(fyG^nHWVz&D0y2&Os; zZh+X&H%*Janj%4vXfIl6UV$~O76o9o4qSHX30NiVGYiMuO3fhK?wLbwvn}Nx=YcEh zw>zN&k|9SJ7#KS#wD^H70fFcAT=S|#Y|u?bHlp(*muLn>J~}RZ;IW`s>>8v9+*?I()WKbGWns5a=N%FSwWOaI6DdimYiY zN4)TXTun_6(=*;}8QwiPd(>{t?<2ze4zTv{qF*Dq=+I5XDJW6E-2w?ezFN|hqeO7T zeC$ATx8~6mPB!8D4HM722acn2wIe5i_AmF90df+G&v734RQSLW&+n%3R*_~6LwzPs z4O!JcnvH=&euH&`=s1@daY4#%#F;g1r_)z1&Z<=@LJJL8#WEi%;pkh-bQl|YiYwCI zST50vhxAkNe(u*STOP~S|5os&ptJlF;KC~eBnUZO^S(&!;W@v98Gv3tgN%Y=+*?58 zwsP||*DPg3`&e=7ynR$qeVj*SN8rEg&EUaiYKV6H*}veJ9^SsfA@=^+6ljHNC5mv# z$^wwJtZ29(JYpJ~E%m0DnKOxI?A}IVDHmhR?Y8F9k#xh`tp)J*@>_;mK%lALHN%gL z68}_w&q7p?<}szYQ`h&~7$z=z3rSy@)oYZ_th@CZCVn%yf>BQr?Fi7{go-3T?$>kp zDcZeH0N2nmirp=C600;jUJsv%J4`ET=0Zb)UO7GY2B_uLH($&qTewGWB0!3=G!uaL zkKl>{x{@~;YuE?n8K&BHZ^I-Own!aH@*6{yO?^E65k}A3QHG^EGVA=@Yyg*3DHT8V zp0({pdDzyfXsz4?KxaFcXIy@{4Djqba$!*Nfw)@Yp?uuBj0l}fZ?e$lVzL&Qet7AS zA&na&d5$q%kGoTd+p27jp3mU;j^rA|ExP`2rOzuJ_ckaO)-n7mdw89v0B|d=V=^%_ zqNBT?t%w^4HfE1CIa$Zg2nO9}F~%rB$c^2lQ$D%|cwWDIl6*4MR2KFX4D(yP&l$q1 zDmh@&<+YzOB69S8FR~S-_0I!lI=SkEG#^od|C*7;SZI##ykAkvCi_74Svx+77%Nzw zZWo~BnRH6$@TuLpvR&`!*zO++t>#-u-b>M(zPISo+{gQXT{K~+Y$QpPKIZm$tE45? z;dcb4fy5Hfz%5Rs6?i#W3ohylXb)I%EjhR55c1zf>EIpQ~#0#LQ>Rm z;7#`1TO{FdDRK19-p?7#47kvo*rmh$r3UZg^18+jMu4R&RReaqX&;TE+mvm%f|djO zR0K0KY;`KVs zO%0?&d$33M&SC(Zy`XZRnISW?+LnsK$*ouS`R9St5bU+S`3RDUc=msw?P5KO6=^=F z>!`b0)$Wv~3y|x>^sZ4Ou1-=rNRUM(ht0$W?wU)!j`d(QpvNq2V;#ycqcA$vnlq=? z0Q=6fTJ}o)VeN#HUVuAZnc1x_j9maIxDM^6(ep%CoB=y3JN=`^t6j0PZO%#=3cKp% zy+$_#94eboRMNK>y|o(VRh6gO&AN4O%7`%6ZEh{C5uSH!6bdwm9hlDC22yjf7QuF) ziVNX{6@Sxtj%e|>%S!YLIokxNofoqs!l0Cq?9DauuzRLekT+^N+UA#u%>`X%-n6_M z;Eaj*Pk<08E>rjJCU`&qlXWtYTF$oZy`XTkvA8vBeZoG_a`Sp5DgEOOZHoubQfx3m zpfjFjq)l=DNCY-Ah_A`bvIt_M`DVzEs6k2C>NW=M&6oo=@}esC>LaR=`Sp1+f51$njlYQW9TcbEBXWv5V;#h0tN357@&QrsTW5^VQ;Bnc?S^ONbbi zC7X9-44HMA#kNy!q@_5e8Ss`HDcc;g82YdP8CGm8#3|*rbxJCk*JwFX5;5|qrcxqO z<&9SO<;a(vptJ@FLa;ToE`NEt2&JB)m4WQLj3pyJ zO!pe)$^MB^<*PKazu%gguNH8L)`n51d_;&U=-$iogPdy%U1nPpvh-!iER<<=@sIME z{)Hz1kwPUHFU%PCV)!Yzk2XwYSG=Hspl)r^f?>T(S=T(>=U|w?*_Hny z(o)A9IaiFM7llp^jnfrB3VSCeD;yM+2&(4JC-THlQ&x>z|LhUDk_^4rtX|%}#9$_Nh?Yc!g_ngXTosH=L)5j}QWVN-1T&>Yl%`=|ogbjpEMwE;%2bHe_mZP{g z4%s(yI#D1E+g<&8i-0fKOJ{be4B^U=D2$Qa1R4am2bhPYa)IoD{!3T1>6yYIH`&B%b9*|Kkk|u$qNF5NV56e`X ztR@SBchs$0(VX-P7nBS`>8m{a#JR;^;~3Bv_JEnG;u8CM!@Z!?#kMVz!7#>O4@%Y* zl=YJtch;0$8EtGeJI>!2Tafz$_^4U+V=hYF9gkGD@K`4a}fw-i9E0Uy`Ounf9kt(h(T0C(K0 z321fOol5O~;kN@kf_n%<5{d;EF`m3tzOKp>{yA&|#J!s3F2)H$P-6RXxtCq{=Sci{ z4YNoyu0{{YchUQ_At(z}P9HhyJ(qPLjeK73z^&6nk$x(BM^&{WQDb;<3_T$0Q{ePW z@mMDv)xVv2TJvJ)NDbNK>GB^s7%vKUeg=!6BH}IY#!9}%y4UXu;b?wXPsr_nFp`t2 z7kMXWMPZkL@5T&lXqK@(d#Cd2H6YQpBX0+^)L99$iisq4 z?(`9Y9<8C^J9jl_@Snbh`S(?EMm3}Mc-K(CD4b!zt}o4BzEyLW@82&t+5f6+HC%ce zeb#b=U?YemY~|*gSabN%v9F(2hGypvL*#26B7Vh@LV@-0q~i5?_mCKdh)24V*{>o9 zofM1(0NV{k5Mo`I@SkKhC7njQk6t@>Q81i+X4trHxK&OCh{1Q=uSQw`PzzAlc4{U{ zMkgFK5As^*`>1^{+3;UuPbTr6huqPO2&AVm=b+0>o`yR0Z2M_7+$Ii)OyZ^zXt{#E zb)pzG9K`Xh5=fLxBKPSgTO`yE4g8NBrnov<=zAXS))?_)8k{JuAZfhwpDS`h=!n|H z;c)w&q=~hG1W>1d>hr7|oA#Ea25>-^K#%YM=td*THhF4yShk>&L(PN-%m3)}t)5sV zra8$5VSzUv>&U>FK{^7*^3D~-Y*27#{dUlKy~&Zcu*0ZkEpN+1 z7H*ZpcLzeh3U?%qQ_$an%L}IasJ02)ldq?Ln)JFG&j;vj8EYxYTI|@?Xg-BNr*{5B z@Y2!d5Kzti6?AhscU>ck41M zpjyl21uxzgCCX=r(NQG1WrPn5F>K*tXlWD-;XLIYUCmF1-qzjqWOAfB1*Z2CF0L7v z!zfqKZAohjP_;7vrQ72%AsXWVgzXzT>sl&`fFv&OgaORG3e!91q9q&O``UEUk7B_@ z&K-dgv*mU^q}SN%F$SB7m#L#a95jF67a7Sk*3hAI8ivvPCg$Yh=-G*n;R>D1q3oE4 z)0=)QU*#T)>Z$=>Te9(kIYu)gY0GEi8G;blo*)FqW+0c(?t*yNG{t`VJGO+9MZZ=9 zQmPQLNJ}r6Dkt(AIiCF;7>sv#g!j`jo_M$?`a(Dqrk2$;AuXPeug&ty&4&6{MKTDc zjQL`mNZl56Az&`;iG3y(18T*fEWb!v2Ar%hfO~Wy$mGrHG+FZZ#h5hE*SCt zy9Jvit+42u_X->tO9`vq{vr8HdWRX0#A(0}7p^)`-r}VH*u(xUDW5~M*2g7#J~7X7 zRhUgQmTopNry5XKgK-KGcl5)(Sx1q>PYNGNdLWrBnA&4MHlOyCKI0`2>8S zoWW67aJrye{03F%6&K#hEP*?!sg*ZyG~vg#OSaPWIZ+wcSI2CPw4=iJrDnA^HAG)5Whus`4r529nKe7%X48kT(KC-2+2r0=qHk#aASnuatKETuAJCQ-%!P>N?cA^00WJ{7d4&YT{GoE($=d8=( zHTbxfzrV7seVc|{U2ZyLRf^5JQr>+I;YgBK-cxOX0C|3mokDpj6wDe-W zCk_N;e0mzKRU{qkMHo>AsGKl!6&VAuv7QIWsE@&PG?#f1!i=lD(JUg9UTlJjtkh%v z!8c{q@Vj&VM!sxW?@d=%$qg?fq#~O_J+SjWhdR6{z(&RU*mwVUBeCtYQW%$5{MsS` zWRV9*n8L&0+IcL`Rz>r<^=haNRLXaWmG>BF9?jA>+Y5)J&k9+@3#{8;Vuo)d;4332<+f6jZnC8# zL=zg$p%oQR#8EJ={w^Sd}BOrQ+!NxGJ5cIFTRG zh2#!%!0-!#K3JzF2PQ|r!5Tpo&)M*ktjo`yYQ7RH`e*-24+-sQu^$pVh`mQ%V~V@l z&i_gZ6Hpp{-`rWrDJ8huV7;988r4tN#{+bc9fevA!c@m>Tqf+gb=FBse|RPTqJ7D)#8eJD_EACX0Ntx496fxH>Po{y42Brf zI+fM=v|&&*tJOhU^9RMp5##GrqN$UrQQ(Dr_k8IQVIx7U@O<^*=g1THs{~c$F@}LF z8)G{oUP!AlQ-B%=>{Qji)~Af!sf=dA-VcylJ5ZK7ARqJ7Trc?Y`RJUv*q4}*jtJbM z+yj9O{@DAK(l=wiYv~#H@14JPo>kMw)KY(*N|Hhqh#(+AX-v+oT}&EE`nXP<5hL(C zBKW50)f3NhMAUcsPN#=D2CX~|*QlPtXQVmrXZi|36;+=U^Bf5?A#G@7 zoG2a_`+-;A=*4O^+%bB9(X&-=4doPdh1HwewP32L9!()e4XE4ZFJ!)m*HOK|xh2NG z?i(470J)y0HDLp&eKk=iEr>ixe-+#kcgF%7l`8~w{4O^!-$4D7>Y4HP%V)|vjs<*? zLS?pD>yGIWwu6tsm z-9v{+DJv&=%LLJ{75cr9o}Mm@0$d>#7Q1?XF??e0!Y*@k!=GHGT_J^hXUY4_1@u zE--ugGX~Y;d{wRnS>p$3M(<6^)7lEDC1_3Y%19xvPth`mrD`yGITvaE73q_$8VeX! z%Fs%FMLMCA0G64jVF_;J*ZUHDt#ivu`8W6hOVHbE@Ig!}3!C|gg4Kma6@#bN$uSaI=sr-EG!C zyQ^VNv(I&Bm2sp}0{G%nHw9QtIwmym!5h&ecuK1U^=rQq^~-pjg?&=PJZsgT10Z+Y z(f;KTR3~%wjW;gd*@=GBF1X6OP-NhG1$&!L=V2#32POKcs4NX+RRc4RG2=XdP}n}Y zqeffzeW>Q!X37H( z3{T#KFA;AtW`P_6ieCd1AlFT&!^u`U3loKpS&Ha$~6yRbS(m^TN}{r&@Y7Z6`;_H_9hY8a+p zsz+Kb&r(JI`I3hlaCOhG6NQU)p6Ce(@HYA{U98b=3v!NZmg8rWs*om{DNnT_lD`V7 zF&k!$@9vTqS*KEkM_;CPXa)~mDRd%8?wVW%7pInXc8skBL$9<8yjApEQjz^`*5lD0 z%4Q|3DuuOPaQF%54+gJTs4vVIaZ%>S!m6c#Fpb4(J<%}2MxK43{u)w`DtC=4w_VTo zp1jIB=mCQmh%yukK{e#CilZS-I7ElwPMzB-`QTV+*r#49R$HJlV=0}Jj~YFpEd4~L za&<5QDCflu6-Vz`{&fUC_w3DVYatYoZn*kd3I?mY9K8;~f)DGIsC}Q2U3v|4=4T8< z@N@nvutLnu=$}zf$?iQoR8 zw$3~rs_*~fg~pzwvJ;B3FCohyP2^)wWlORqgM94SGM3_#Aqhi5^pVO|WM9g@8)0Ps zNX9z$eJsCoXVj_jX@LkU)H!9{)$$E zI~ysI!f`cW*O;55#ytJ4_9RWjug{6hthX4w2bR_52K;(~^_t0$mP~K>ug3H~Nxtwk zk}az)2nG~Z!;iWnn^^9qQBX3l9cj69P99Z6DjDkr-PHQ%+04UF$vq9EdVT-2X_(S? z>%rKE({PqLvdLv~Sm|kML|9`nItkOkY=w;l+FD}d)F=7YI+*52{IB%!4T(lOh&#`^qVqQqsH}LiD6y3CvROb%0|CZ!VcCow{+Og z9}5>Mki-Vf9-2UW+ib0fYP%9~&*sO)!4~KNLFr)G^P>2h*2nK1JaAiFdPG-_vgLCv z-^3Kk42@9q!9w za22+5u0$J&Z+9_zNz&~}pBDXJw^_B=6kxJbP}CT?VjWU5wG?De7pz~)Q`xN&ll7eI znUJX5UTqi2)BbdSbnH!h&Y(Y}nV9M+ZT;h+~M?5}$|j3);fj9TvEN zK1gSgd--wk?(WsN_lB{8691#knDw09J3J{$28B4Dv(E|bSHjk!U_|L*fvl0$ONm`GqJP#hQ5(b9VAj@+=3$qCi3VZP_Fm8i@k0|Ey7Sl@eJFJjF}YM$>IB**LcIh3!R{M(a~NL`XprTz+urKUIBEftHdA+S!hsku|YPlk7y z`l~J+@#Vu>pzNs>Rbtzt2Zaq%)!JolxIaw0M7~uz`Bs5gc&w~PIZRPFR@NCY&cj%E z2K!D2H&n?!)vr_38t0h_^A*LOMQPZ5#OK;+0Etl7fyyZmJFIvH`%R67a+qssO|97W z<8U5EDbiw7qDwyBW>JsM!$h!r7pul;3(UYhY-I7&1k=|2Xkr*2Th4$`EV_aK=vea| zps|B+)F~=6j_|{xZ6`xZZLoDOk+@gpUa4&ZE~YS92xvxDEOkqojIs6{f{Cos7Cx|d zE}pAL;bFe~v4p?Qc1Gp)*C&1|_0qiiv8zmloiEfOhztt4$5z3dm1t=~rAR$+0Xv`Q zv@sKh;%T;><<78Tr)>?Qi)T(mCJgHUjTaNSnv5Yz()~LH*D{<1m0W|*Yl}0kdI%~l zuf0+evi%slO~;2YC7YYySh<>|UEZxZo*5v>i558C*nL`@rsr)92M}3x{;cvhDXeI9 zKF=j%;o&!I7x_Z75`NapgK;&|(u5uEw_y$^Nr|3c@K_Ps_X|sB5i3A!PBDbQ~_Kh@PVKxHUT~!BMwnD}nh7}pSe^xL}ZYC;=7s10^ z78redG+=Y^A=_Ku0}ru24IiChEX@1P3SKNel3i(j+%Ls!M}A-ZOk5_uy5c)gN-5HO zAWMq{Ut#SzDi5Z9l{mDmh?TG*W4Nf_CxuRf%;c6me0 zXKgTE%sk+Pe}cu1ggn32Y*g06#WR$6jrXS#KY?X1i#p=0R)|u*bGg_1guvBd)!ir2 z*Q-4SFL&;Jd*?Ygxl3{zM`fiZW197J%*CXUU0~)54gX^fRt!@0c`8*tTTFXln(tCM zN_#Q9!FirR`*6+EUc=05@y-+$v#h7o?ZtqoHuRVw#2(_Vs>j_YvU0!On<-P`kqVLT zUzH>Kf(2$IxGBVz>FLR1ka~C)pbSlp>@}_MZjs9OGF8cOGI1}(?O)M6?E2)+|p&d-*O95J1<~U_jclQ9cd&#MLR|180&UZ_7$*0c8p(` z4C}x)Ty6&%lV`@aIm>|l!v4LpcbiDUGhi7;*giUuDH*Za+)~-%9T1XF#*gkz zt=M-dr4IDXz;b}9A|ia1b`@jE25>b8U9R^ZT)e5xa|ht$U1^cJ!xEinonZ&%aX5+? zw^wB#c~0rZw6WW4b9OHfgCP)Xw+tq10G{fgTLJQrbK)lvmogo6Plnr}lomA07?fJUtD&b>5z;HwP9f_0Gbt*t2W_tbl>yg7U3 zB++_5@PTgK-l<%Zm&Q?$Ba37eHRibiC@-u#kio~N z2}I}Rw*w2bH8t1bcBo88K|{xA9;rjYijQ#2vnqn+t&lE!bZ@=ZaU|Vtk*Lyhn{sDu z++ibtNv<))?dI(Vp4J@=EN}EWMKtN-{qL9+Iofs0)J(YZ-n!#QZ8CqK^iTixukoc%q8Ecy0|-e;APy*C zcK_GdsPwH_!n@3MT{rW_EDpbA$2+*e;5Gvs6-^HhpV9BI+sq)*lgs= z-TsN8E4=V6hHmfAk21Zh595PsquwrFr_k_?8nDlPSr$S+4Tvchz$j5K?zdGb;RGm! zzSxrhq((tm!5 zlTV5RR^nD5R6*7&$mGcZB#MJeIp;z^P2kbY#p%A$V!K<~ULyg)(@C1u< z@#BINhLDiy!E7Cn_x~INbl<6h;aJLnWlFXh8`G1$ggCCllGkiR_;BeyvMAHSrxg8e z!EegYi#^8MWj?&krUw!Y-tqB%1im;%Tf%JfrMPo~DIw|e5G7?o^f!)=%<9g*WABCJYKO2ja#&J%`iu{Jj=caV5lVFv!s`pG=h1 zijiez#hcBJv#LLD;@G<9$LoXX4P=QfYG|Ga;fwq>M4du{UqKQr+>n%&Tq~P{M;+~( z2?DDX4ib1Vo@8+>Uq;@4_)YH}L4}1Gjl^Y_TJY3oSC-9)_zfX&WozHkZfd-2IT+r_ z^7sf$GOI(dC5>U5*(>1H(un51Th3vckX!&HcAbfzmi!3!%P;IYAG1e0^h4mcqclFV zeMMX{k0J!rCtJnxTC!vIizYDKZC*+Q$C0h?opLS3ttmt(De?2OCL7WC1O=};IWu2 zs--HU8SX8H-)VpKP*e}G3F$B^_Qs0WcWs`G6d5XLWDsW?fLV;xoet#r;abINott3> zMg{A8@~V(?SrXbtFP+$XGuNaGgB@e9^@(|*A%CVdB63N`YQ6DezNrm7v+v@@S0up? zx6uDSS^)sMoaRkIFhfX=5-lJ9z)FI8y*}UVCZPRtK5+T$U|7pkkE?=3vCbT~To9Dz z0?`3Ls708Tuf4kK*6lM_GJD&r3Ep{ltuJ;4tnv5{i|kSW;epiIPB8Dp8}posk<6Sp zUF_7*>rM#Q(;0zM^a(QcOe{79{xe4k+yrErb;|*bz>WAN^aGcGrZIj(e#9>C3dCb5 z-Kr9DpZ&nV(s*WMkA-$~N1c-H+oOQTZ(tE%bp@g#690mOwZLLS0qeyoIhSI!K2++~ z*T(H~@s-Itb1-R8iPH5nOJsLsYaxGCKFT!XMNnhmQ|;s8cQ3+Mc%3iUcK@e}M}=q&BQf?6DRbxpe$`0BS<1nr1p zljhBKSuxtN(>t@T2LwOFq_K6N{4}t7FfOR;rd6rz_}3cyrz;!hS?)bM-8MHaIw>Vd z@=c4`$8>sciA3V9A1y=J2$taKC<69v!AqrPGNmdeh>;Th-zK5^8$){AcM?XM&GB^x zTbBi2+FBZeG+RI|#=^BenXZ-kzO-_&?hSiqp!gruY+dyKvbe77pi-fGIle9Fs@k}k z$d3ANVGBSQNF|A|%-}^|L$a=I2wkes`lp?YFrdK(!DB5Q0wSslu&!yrfzF4@zX3OT`8)k*A;m zyEC*tx@!#_1-9)2Pg)D?of~9}2V8pdZ;f!+w|l-#huC&NO+#o#3g%}!5g&mtI_4=S z1^OuK@6j1}w^E6A0Q=|`s{vNi-e;I4d4#&(?5imq7HrjUmcel;-g9#qgvgH^qJxYa zY^v+-ARG{$OQn|U1XAJvxZ8UveE2x{zB7n%1SzDy21Gqk{$q>~4PbZeDEb5lu@w;t z;>$u;)bFp{1~;<1od;n=KW^D0+98!QvdL#oJ6}Wz^|yI~VMcbN%r<^VW|V>ZLuo*f zrAyG4Rc(UP*pHkTrpH}oK(kufl~Qr{k$YQTayf6YQHZ4TRiB{4(XUIv)avEOBU8I` zAM!bS50M`*CxGMLI{jOaH;$1-T#xLpj(F{ieUnO(ml@UiGZU;~uDJ27z%~=TLi9Oy zefT$<>dV49!Hk#bM)JGP3xRuQw&EG7VM73?G z?EW#bBu8rZ4@T)6~n_WMupsr9!2u=!Hv(iT?! z&rjsBHXX*rHs!SOdmu>0jv^SRPEKk4zdtUln+{Lt(_vTm-%%zpc&w-dWKHXi<_YES#se}rr2@o$Uo5HiC<-(fhDon z!QoCgN^Xf>J4lyu_&Y0DO$S^eL*W+{q=B)?iZ)*}Z5rC9=wUq|#HWrVVlNMCho46Y zZUZxtp(S~3EkO4{+Q|0-(p{!M*WllUHFH>r64szPKk9*)0X^hv`c-+pqf8!2mL`o^ zxpaIpvSr~B06!nD4wm7;mL`uGXgsQ+Eu1x4a;ws%eazI{!DTKAVp>inxZM?I1c%HX8Mu&)BGVm_bqT84J3X!z>P*zV+imJp=~p@5Hp#|%N) z{BJY%bV=wW&QcKOejWl_HQAOJeldz1hMp$K&jrq1o=!eLpX{$py~+Sp7#zEP^Z~MR zx8{Vyvu2H6Ga@~y7-C|M*&*H%L%~AXzDT|+qIdE1+DQ~{iM5Acm$EXp%Yz$SFZ5Uh zhG$9*c+C=zPjMYw5@A!Rar+S3TV9kr1OOV^60@bc+h=6wDDXK|24~r&3QR__C~)3UKQ|oGx}t~3RlgJbfA+Sei~s-t diff --git a/external/lsquic/docs/rechist-linked-list.png b/external/lsquic/docs/rechist-linked-list.png deleted file mode 100644 index a49a751b8f858f4e484a494f5a7f53f44053ae1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8854 zcmdsdXH=8h)~*yOQiUzOSg4yWy#)jmQ7MWFNbe#LN+5s&p$7yh7K)UBh^R=1gx;%x zfb>v9@6AvWLiqxmZ``x*81DQ3{>jM5yJlN!zH`m_Jc%;U)26$`ap}T^3v@bnwH{r# zKnfs!x2K{Ye(KIG7hkw=-CRfO)?;6b^>oTI?kDI7{ZYDW)H+n$VZG!JLqqyr(cHe3 zBm6{N>$1~zs>r_{USz}P_sqNT$O1lXZ?2i znkmDP=&K!h2rEtUtCM%=a?nN>D&r`{r8M6MN5Jt59D>mEMm4G@M?)oQ-_O+D(1*TZ zSKh}i zx7TQSh@NO^?N!|F0+l);MF~B-!&C02gzWo7T}j?CKuZf>KWcpNOfL2~w^ zeJ2@}jd#Y-yq2eHK2zM@A4(kCJp55>68-WTE^A(U!s1L=nY%5S$J zk&^d^RPAHSDO^2bVOU3$LUgNC?$nv^r#gz)&F{pqV;|++dBZupk2w87_n=K;J8sB^ z&xe_%JCtE4nFl%e@H0)|vrv(rAFlOL=;wD{ng7YS90D7{yq~8xIJ5Rr)JQu)9Opz= zAY>GAms6!&!05e*=9!dXqO$s#zstpD+_$SRxv~|X%-FBHZVh}idsskwCZ%Vxap5fD zFYTV*f1Rm*?P(ub)@bPLdAsta)~S?&eI?mn|Gzra0K~5Z#5q=P)dsZhn(*V-LpevJuIWh74-?4U?PJd z>IudOIzT|bD|#R&*KxLO*B${m5k}NHp-y%dOY|)Ww@;P%l(p>`|GToA#u&2pw8QE6 z#V&ob4R~XXAcVDO*}kjxL?_9i5}RP@Fm*B*EnX{Lx7*uO0)^r8?iXIFPuR{G{@27< zO9Ya_n0r*@=M?d4G^2ez#FE;(+ahNikngP#9dmTtJ#}aSAKX)R%x;gN#tZ0ue9w(T zWtTz&@fwf}O33!20aVy9H(VuKI}Rm>_N-ou_5lpQ3x{2+?BU&d)!`?+0l!VM?r#iL z*KPhBCp7rjNe}t^flqpl83B;R_WJI<@y&Rb&M4;QW2eSZ;G(<(h!+<{*f22JQjX!P zRC?{zsPF84n#-e@Z?cuAZ@}r6rE@}TN=C{>32TwchicJsd6 zm_z&8C+9lGDj4qM>%;7lI5RJM2%t{0sCezShy$<6;ybiGjBpP=d<>1)WQvSmOt3r= z8?&i4xhAQE;noh{klnjwAnW%{7;RK{WPEb`+SVUfc@$g()11QA!IgSm{oY42F(-C8 ztk)Ug4lz9^@AC;icbk)QZp11pR?jTBg;j}`j$cAw5~&xhUMzMT_h7iV(zkGLbACmr z@1k0M<7p{y3e6pwJAGfzV*KezIU**tW#XK^JL=$dS*B~;J=^7wiCIGuv?lDh4}q!& z@4S(l`jU@~JgMK?O?9}hZz)%XiHDDwPI6FaLzXvq%RW@^##Tq{yy89a1~*=j4_B($ z|13TFdwe?-=Ey9li-J#i#~sTkSNPSYaN3C!)V!d|uo*RBHRIXyS>6RTE$+j%x3?4f0pHFj)w6k(V9QS&!p{{PbKu^=U@%YZ$f33>ZIig!pEf?CsPTcr9h6t}V zWN-dsifEpjLlOS3)<8jHJ_&SklPWQt#RQ?>6EGFt-=htb;7Qv}mv6#`n)@8my-OcO zVrf2!#1yN5VYgk;$H$L$g{^0>%Q>^PJqKDBhrdX*dOVLwDYd%v;`?ZwmL zYW}*$y65Ns``f2!w`U=EhRmOP%hWWKctth<*@d>QjhH~1-!$*-2Q1khEj#wqUH=?_ zYtpaYl)V2s)izDHl|wy-P>cs)@r6(it(c=}KFrKRxE>=bQ)IA_38p#7X{Gt^A5ShncHB&`ulk#k@6x8kRF{br~fDb9v-lhjm=9X}S0}K^_ zReaHY)US1>mg(H6gZatOPElj)Vs6gJcDFcr+RT#%sM_T{Bwg%N^a12V?1|k8`83ax zQ*!PdAxU{jWmbyzL@cgUjj@v{2BgeuWSXUsKMHfEYwrR;SH~Tu)>(`aMY6?ls%$p5 z*!T9A{=&5oE|)@PRU@|3$-g4=i{2vD(t>-SfIuAuN*4Yt6YP8;)$Y{u(tH9oFmS_1 zbCkomaP_yy7Q6Arg=+iE21?)G3lt5^$HVpev+>~lY<+01%<)pRzPZ_wCALbpDQLPd zU|;*%n{8!(xW0y2*NDXI%Nfi<07IaoDbF!mMSPbrX#KdXqyd^4$r6s!ZltTMP^AZc zk^P#im;QC^i>d2WBH*!5cK3%#n~?Fb=x{Tws1#=!X#cR) zIJvZH(|El4UL^bPCxHwbm(5DIg}(f%>H(~2cDmovZ!?_=)PhVPNntmiqo+4Rtm-Q= zxL0S3VKY-r?!}p?=r`vVAwx?+{tWYwj$;OEU&Ru(MRVtV*gcNT{@3`Xe$X+W7Lq|9 zOwK>P)}d|0;TJh#%RzG4@459%n9YLGHlGBIKPJ6B@Txy7RY=gmgHue^ADVkd{GN&| z&rz_nW*#Zt)j;mC5G0HLhDJfGX1IqXvarH)jJCQX2X^#GVXp$k%qk0j9AGV-kv_xO z^_O_oe3lZXr2&`k_U72_cm7Zd`JwQ&mY%9(MDW%X{Uxvd4;KOC(&W2x>4JW-A}D|z zI()`MTLGpxwF*qg{2}L)hy3vHio>Jd^2kWZVme@z zZ}Z7AeMqSQ4NXa`o)iPCy10zYegc$*|7WSb*MqoRwc*4@Lj^o_(3+f8rYs5i?>rP0 zVUe`e_-$1Pk5&EojoVCO>nF5YgDhl#*+%Q2UrdtgOO0fPNBXw{2kx%@JsULzT0>${VJ4%k%C+UluP2WwG=nq~6FLTYh~c^sS%BSSjaAy-kt_~nQHc## zO1uatW5V{fgqlCd7D+xN@a|>6YX&}Ss~^Ig8U3m%e=%I#Gnc8LAZ~I~v*V#Em5q>X z(NriXqe>*BWYQbuAD3)(sYhn~+K&oT8=wSH20!vcFsH2< z`=?t+%L_TjGIvM(y&K$I>Hab4{NM~BIT&)5ol0gt%U9rn-fKG*f zKre4(UJ2v8Ix$Gz7UL(hKsRwcU{=#eghc8VWut+M6puK?CI2PV?BTSTbtglWm2dK= zE0LK!3vohQPPtZ;gJ@&>f-0wEG3i`i}036RC1)?pPZNo|D|v zkWCiY!429pM^m(j!OAB?40GyKG>yeg@!$>lK3mrI)G4q#?r>c&W4(ewndkeZp)sW* z`+-jNU($?eH~Xte4?oEfgOdKTyge#a$_f=#mj_47@rVBoR6QwStI9=X@r@Y14EOX;2Vn$P#5hW;ea43wYfVn$jjXcAUxih7+N zHurxf;PxtvgFd4sdrjTviZ@n~G#`%W-Lo>4Lr>bnCD*UoD9j!rm4MMjcLfT0g-e7a zVC#S3+^4g4gQKtLo746>Mlkp}<-ZmK(1O3j+S9nTZPb;xYK9+O>CV4Z5TitF52iy< zY`h$w$}5(;!Q8|Hq4f4fi&1OYy0SXMbi&Mae&6_Dmr8S>8G7Q z&;MZ_MEF4XxGctRQw|*8e~!i7{fa*i4JMhFx$MxXcwloo4;Pz z_2;RZ+y*(vpSF|4BDEHe`l!37ENb5%M{yUMav`;oQI5BF=5AiJZroOwYY)Q^TPa@Y zm+)4Uv-*d1=c2@W7XjJC6ssgr3e&rj~mGlc1Mwtr$( zd@G}bUCVgLg)>S_5gwJY`|7Ua0xfKL#>%p_wdQ&kqa8(tZs9w!F*hGS8@lH@HD2>ysjBdp zigf9>HEpvX0A!oY0gTcYliBo?x>^*O51>`D>y-{Qi4HaLlMxeO<0-aZtZb$dcA(Vq=5WN9>_ zp^Xjm$!(PyM$bKNAr&rUT)kPh5tb=WL~x)PEoKq~R4 z`pTgf0UiPH68;<4Rrr2gX~U%@w@vXt3LB%}lKk?PGR8FT2IrV44F-cUu<6j68RHCv zJlVR?67dno>RQdAA8C}HJScRhi}Qp30^7L$jw!c>kUexk)viQOUFv@|8v-O2pw21< z!%NSw(Q~#)l+=hJlDt-?!Xh3|ABr6hVICia`DM!DT%7{$44Q{)f&r0jNAb|2{ zVV$X4tuP!9%qzk86d0aYE$aZDr*@9Y8U3!e4Z83)j`-Fmo+dK!peS)I0QP&T9?2bU z;yWDFsz~jrkZU59QJ{;ud?-Po$#R~^lJqg_9#*f|%K%vUj%Es5C*vP15>x^>LK%M5 zuBZVDDz9MjWB&oU=#zRyH@4DWPEs1ATo#)R z{dA$4itQ2D2o~$_{<#kB6#S*XB@KtZvFiS^moUC~u9{f66ms5NAZMMQjMJ)iSaCOnLySn?GBc<-|(+&@kxV&dnrp;YL zC%*b#lOS-3P8s|M`dqOiwjCZ}E{J88p=#@Gv#J^e81B`2S&x$SkhO^wR~CP&irhq# zVjE+SFI`r254e1ogb39-_a>)lf&yV6Ac|={6{=61X2SQ4wvR?0Pf@pt#Y@xyGfgYv zf2kV4?@r86)W`iBzE*KZYWL_%TCOKtaxCIDQBw}FM*yVL4Gce{_$5v-!t^u$5xr2M z9aUXKr=b;RyWr2}>5EKVFq%QOjs~<8<`>crtg5N~jU`cEK1lUdBNg;!?-%|NR@#z` zVz&Z$)}@xdML$g?&I6}TA6 zts}uH-E<&9OYc0Ri(pwX+Op&8_#*;tJ@7T{9Vi2d{^^o;x;Ok3fCrR(TbatyXvGJ= z_~R>Ae_4k6gJT#BlT12dy=9(vS01(%M#zd%g(N3v@(dX(Y;EmFY!=(R;QHJKpf*cx zymj?b*kWa&0Nmm}r*pvU+ zIf^n{=i`RO8|x9@&p|osry5e}taS+}&N93U8SH)`j2SRyV)0S)E(jbS<0f39f@O#uLH`0lpRyI5F> zB?2ol>Z^DxIb?;{IUL6pZ|2SQqB|U)5Va*4C8y- zC8%dZ*;uuBp8kpvQ%@&_b;HrW1}~mMt{pwT>1;T!XYf=+kn|U5c%SiM42zJ3u_IRY zqPO|;&dB(@?7OEx{27}En4kGJHrQlm0& z1VTMjDeJIH@tb8Jae62F;2t8XF}B@3SYsNVVs!{9Y7nez0PYPU!i*S-{42Wq`3CII zN8&%w0Q+~z)gE{|<}6-Aa$6y2Ww)Xv-l{CVbsnwrLFEibcuiV$E$UBf&2Oa`F}0{b zxxF>+Mw8{<*zWG~$lN8~(7{7H_DKw-9m%?Pknc{-$#UG(nENAw%uw!yit~&`a8`Xd z#l>D=nyUav@p_x37dB=LhJ${FHzk` zOQQtE7IP|fa${ytB%2C-Y2^=Ie*3S+><>)C z7S%wpq7S;|=Ku177T*iq4yR19t9&eEEI58j z5D1t}!f89tIeVcr6`><^Pyd%DJ>^jO#NH;49{W2VN9!v8{09?zd&o~Q3ElGP9~|p5 zyX|{46iS6ad98m?u`+z=8K5`1G5?@zo$lK3J6bpv$4&(OLkUNT-p|TOf$RU_T-nZO z;Rs?;kysG5m9O{*#j9hqm}bR1@eiK&v#w`gqV)IVr8BBH>-p<5`nPMac4?pU)Z2d=3=J*vs5nn+?1jI{0}7LTxS{K zoYQ_&CF|&RJbUi^1n*h&F9z5Z9k+SU{dCtnw@qoB?*Dt^3DQTcQ-%{VHNT}_lv22 diff --git a/external/lsquic/docs/rechist-memory-layout.png b/external/lsquic/docs/rechist-memory-layout.png deleted file mode 100644 index cdde72a1000b0b347da3cc3ab4c4cbbe308fd410..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12524 zcmeIZWmME{_cp8uf;0{x4FduyA<``{l#(JbloCVdAYDoi>3|H~Qi8N}O1G3WL(Blu z-SG_f{lBm4e%5-{y8a*E5AT;*Gr!+??!C|2=dq8y2d1v7K!i_&f9K8}A|*x8n>%-~ zL@?hy@$O?j4QphA@7#G_p#+kC>u$7_ikmBjG((1e)$pB$w&V#@@ zwul72tQssf!u$lBdnPY&u$41_p&k=-zf0@4i=ABNE_dv2jCzQgD>BtxL}QkI1(D(!u;R=M|S8ZIDc+ z`WOL!g~1S%5fC0v%f(pXJ>HImYG&J3G^+Ie*`C_z4sfGX&}Xn-QpF;E{#p!wvXhfB zwSVONYGA}?%K<7jV}mhlNWaN=$@DxLt%lf1sxi&xtFM73Gb3#D1O<+$wp1?b?aY@B zB!2Ec0^As#h9Wnd0B)BKNjX^yer%Mam#*_w8Rhd4y;}=8Y&vuc4!-(B^!;!ATASD= zZq915u(DDgoG>Rg*e?vSod`z@)UG|Ho1{umLu}VRHBAkXHc_6lw6;Qn zoL4HuLVG9n)=SHa2^9E2GH~FUK~<&r)V^n59;ct_nM2=+@@%b2sdz`bf5?3=foh0T zz(H2*OwT?Q!c=+o!7#Ir_0qvI&uX8C^YsUR36;IfI9RleexJ|4$l#fFUx$6-Yq~g+?M)Q6-&7CHbD53+(Jo3k9Wlrr67M)r~rwe?gcGoAf)t@(8;^+ec z+#+tuFTKz=Jc+s==8czB_dtF3`bXB@>SS}^?0)_=)9x$wtKGLf9Z$nMI(<*b_r?O# zRtMqakyH#2i^@=P%x8PnZU)uvvx4ZxK511IhmQcvx{gP@PT!W(= z7j{f28=EcvAzr**K}Gxk9%x;>s>8X%>trSOD`=&;ve`N5o7wi?S8`caw(*58!mYq%U3Ik8<6b^9O{VNI zbS#kmFa+0)onLIaSjh;wP)lb+wd=*tb|p_D3J_Mp73f~ubG!=61i^tvKFc5pxy3ar z6J~#1@AmeM8qz`bsZ(hHyX!+D)6kOK=Dlx-kOX0HLcs}M?la}tOv^6{8k-9=5Crgq z0InQt5;vIcePbv^>cm_|bsZ zQTEz*h+Ef#emVF(c!OIxnUd~1FEgc3rRnlx!kRH$wCf$MKH1BV5}Jb5`L$_ zt`g-2!3WE$VH9n8Y^vo=)BDr_h2~QgvR|P@zvmXKiwhE-kQW&`C&EG=bWa(}4{*!p zIXrts5X#7a_2{>W4>M5eU4k%F$!J=Djq=1s=eN$7PNntuaiI41naj#6Zm;W$MGFLW zY8~{<`$!0>5FgRJ_ijtf^}1LoHh1>rkxSJb5kXe$hZ-3y@~Ab!{GYArWSR?I3Bs-W zUKm3jjfjo5pW*c-lf|)lCb;`Bm!;dL7aUfqXFHe5LcQ1^7Yyfs+xT z4Pnm{t+yfLDk-wg;V^)ol`@$Sp)9kjrQ>UyMrH5W{*RfaHNV$&F9`oO>U z!2w7V;S{@@*W=wMZvklL_V0v)Ro*4I3*t4?KbShgVSULrKs78j-VRH{m-E5$kSvmQ ziH98!g6}3}>NDuQouv}dtF#?o4*TY^gG`QyAK;qtaaBkeAgXKsp_ihv^N4(Ovw z7-vUI0He*-=a7Ok>yE%M?eC08kLaswHZcff>mVPXaMdU$hZE`dg#VH?rCgV;mMT6$ zI3^pfwT>=g=HP7?e%p|Kn%yfgYaLo9kwkC)V6^UM_00Ssrh>!<2DX%4$ADAg`&6$b zILc+f;3;04?~Q{)qM$fp`^$)9ql|YGbikU?BGZ&e1*2MKCJ!bbsW~J7X z1b2-#D>eqi2zCdlvV_8BDHHPqLPi5QJiY%OP_oc33k*-+9~7Y!e)~0)lIy9SuN$%- zN7|yONNiqgxi(*`@HcV_*=!)nYWke8;|qjxB&+TBXB)g2y9Y{s#!E+nkD`XzfBbxD z7INgX&HMB|1re?|>kB)dI@r5hvBCB}5XU-=O466~>Z4zVzKGP)^6gsmXZoAra)?cg zd-&ZzaN?5=az||-+pElO95TH5l8#?}R=J1!-@Js~}3EQad zao5sA!zq4*QBrUulg2G7@|x#cp33(LiE56ORH7DFsrVwbI5w(sImjZ%?aJ?j z#XG9_L;9P<^NI)@mJ%Tv-nab9y9@1D=_Sd+y#@J@B4okAH$Ql4$qV|JCaUm?N8q=^WST^Gh`){w(z^i z*<~oj?!P8xaQZ0)S=Gmb$s~yHIQkpbedT=G(MQjp+yb1uXT*^(x3 zB4Kvwr&n#SvL>lgO2b=G@4j&uoTW?_kf_m60_$iYcOfvRE*HNmqrf7HxvhX5m0}GJ zuaRUrnw2)l#T=NM3W?~v%$nR_Fs%ba>hpDfx^2HxUX2rmMuW2jX0iJ-=B*|aA^`iu zhc17niOS&j*Iw3mH1RskM*^`Q`1i*w1^L!>8+&F*uSO1YW|pY)oBi4@O<*HaP5q?~ zsI;2d)-86(z@;yJyBlyr72-GQ+=kTlbB#$x`DK!ov_!k_YGP(p~y^@$Arr zwFj{Vsm?t0q8zfPDFU7;ETaXGTJ|otGnZJyz_oAsdGg^>_#w@@NQhcqGxfvJX`Huw|2K?j~B|#`D94teOZj+s1(RpNZnlxaj7BaxU+i=tlgnEF~ZlQJ{1CR(Q}yyIoYybvhnD%ob4XbnHqmDo-!!>U!hA_aS}_O>+IE z;;Jk!4Ip4O!f*Y%L9Wtz!oGO^siAgw?vTELR!DrP>z}H+XB*{uC;5;Y1$XO=l$SjnE=u8rx=9`NiJ;`OzPGC6}OT<%XXXK(Rx?y>nU2ZEqiK8BhKUmNClp zWgJGA#lW}HOdVP0SOlO=)!ACNZSwBhat-V4OO{)%bs7|lfwGh8rgL+Y2# z#b&SF<}O;kZNWM#?MDUIM;+$Y26%2Ba-AMIWJjfH!|J}zXTLfn9T&NzVz0OBQf+9o z_EUl%jCj41!+2MaY{*ue^QKzU=`(ioD3LSHlf-=0@UXCaWF0N2f~rx+#g{IYf{lAA zcGeftQ?^oL&%)Duw@gnw7R>eKF*j-$!h7FNwef(vnT@7yBW?Jyx;b>PW(~huDvPT}6feWb z=KEIr=jxvJ<+)>tNjWnk?~@a)s%3@L9nc_vr(sKy@x>CT+Ap{|=3+Hry2^&puJLM6 z>&%a+#V>SlxS(O+{R&G(KjT@5i&7*{1Na3YjBTFrI znu?qNbfdk$#Ig}BHq`FCvl>5*Ch!JdCrXZ!bVy$^IgrY+;dy5(r=LoPkv>uU$^~ZY zQ27Q_Al88^_KAuRD$Sj@#EL-hGJAQ75uwDvv8R6Nvcb5>WLAHWJ&CWqG?}{6bw;3B4FZTqx(9OpKMe?o2k<3m@g6v|>WNnWBP<2RUG!EpQM0VK0*NR z1q@{jZDT?otghm_71`=+9^&NukE=VRh z^c>ox?JdI#7DMryx%@3pu83WZw0COFD_b)LW`B{JtTiPPd|QufJ~OfiVWs6O46{2w ze8=N?{e7r#U5g!>(5vbb7#l&;>fEX9*wv*@c_ubDvG!-Z;9DaYB6K6v5RW~s=1A&2 zLunmYO772ODnx&feOnZoLe8pmZd}kvEG{m3F|y~eQHI6)jD5#%a(K8^fu7OOW7)9P zy0d?JNf%XhtxIZG-XDA9ta}n-3b{{R_>3wB_bo>wpEj0-E+$^f@&mK{vptZlVKGyj zRz2Yc%Zj{Gi=cnll=HoyOxk8vtZjNCoUV_#C zslCcmV91F?+0~&(ctANT_)mgogTgBWS9G-ah4o>JCJ)Z>Ic8|+k3!+iz(~2ke^?mu zxNeU>jU}@-bTK;_PXjg65*RUXV64$q8Zj>9X~Buh#~BUp1j;xX9l=YkS1v5qV+m&K zC*0$cIERvmI!Hc;FkQCP@0fvq|LqIYv%Av#=H|ruHkxh1|Jx^Pz*6GSUkmtVueDIZ zA4)GPV1VdwidGK_S_>Y}p~iFBX#(_j5^?J9BM^Zd9t9(;i>3Nzl6CWrH@j`4B|e)* zqrk18{V5?ym!0z0=f>G8RgNWYaF+@bw9}Jvg@t4jmaQ)7w&=c#-mGahWZ532{_3pQ zJ;7<=q>9t4412qn9r#~9DYmYA5w>1=z!R-1ax#)q9o{w}bx~2Vcb)h3Dzi2`i;w#{ zCw$ky^N6c>aUY__yUT6r5Y;bBCeQJp1#f*wPxrG{-&?w4lh?;)=@v;My z$6?NXbuQo>Tt0MMlx$V;xv6QlO;m9CWR(2Q^bF$%G<&KK zOseJSxlkaBJqCEyW^y*$VIbEwPLl79gZFjzj5$&^8tOo@>bK6~dYUe;kv7z#f~zp6 zy#qf{LAj{xL_ik6eLi2yx=B-X%F5V)tD&Z9PQEel*TqNjku(%4Hs+3S!?1p z-B8V17~MrsbIRH#Xa*$+{%qP)D@G1x-c>2%<$|}hQ6u^G`@^A|4H+~S?e)31Gh>uf z&3_&1bY2_b;Y)Wbaj_n)NbINXu`IW5`0k@tI)zS|}KWyT< zyM+t{Jf=C>^9AV}?6fSS)saSwBDVULWNaI(9;KbA~zCE3*R$12`JZbx3vZ@1{GH1+$6zvIbdY7Jr$(w4}z?Wy+1^9ka zUM&H&{=D_$&>6$a81Y+N?EGbT=FGuwaohNkv%1Hh&UAY#vm5V|!#9>KJRdxg7nKSI ztFmr$qmfwMbrI?jwJX0ZXXssBj@&2Xu`VVxhnyz(uU?Nt<+n(p_g3fd6w`e->NbMB zcE=8QoLy>~3Y_QB6WGYc^2?4V7WF%cyf=|_Vs_HY<>fR)%skQFCI7vi#A@nF7epuG zOPfu5F~C*CMY?0UnuLS$perklTGD=k4d+>k8j49Zbm^A{TXl!h_nAr;({S%&VBYKM z@qq4rZZGcSM~6p8ImfonV7rWFxycJ8*wr@kQ!-o-)$8prVaHccbOxJuUF4mOkOHtFd^hYDg5z@N z_a#D2FtdGmALbZC-12VI8bkXsMf0E0$AG+D=bini=nX5>q~f#Sm%h^i zH!l^q^}7ZO?_YeJ)xo2;D&d0qz6n&62HN$!cw+yCLga;lu?G+ry13bd%q(X4CQf>? z?96;BikWh?Ykh}iXGhM@>~iaXrzgOWU$sRc2|p9BvmP6$&7lBR(}#oI0mler@)F}W zEX;n-rV=3xXWhc15S83{S4=Ca{j&wiD9IDh{?5TvF^u?!8}eEekHz1t+)EN(@j~3K zUu)ZQ`A?)NO7wuNy9k`m*wEeMCgsF4!n7|1JLTWkM;9oJMf$KFEbh|s{j&T(U1zR8 zC65A#1U#SY+sj+ddsmKf(BP?c(kVGF83wv9^7&^Hs9TD;n^L%r_Pjeg5nzPNk0`3F_8;~1;Y}HU=i`T=S5l6Kuj^k zf;rkC6bf(!g8fN9O&`NM?g=PwU}VbjS9FG6D5QH081C41eWk6vNeZQtm%*dimAaZ& zIgwlsB=HZ)xFho6+BkaoTk#c3jArVcZ$$sSnZoo?pDO|YW}$u(e#K}KG+9EsqwGSsjr;@C9OupSV)YjXSHa;$^X5LSaJHw zzjiNLg?Mg|O!HeRiYvTxaUMJdp-Jm(<9S}_PyxFXMAy6_|1%@32MOY_z%Jwv;Z+Y3 zIf~p!Ba|JPtf24dh298|iSSROkV;~x^WhY_pqC5D>!IB})pXcf!Bir6WXDQhLG!q2 zc+se1!kP2gG*lq%P*P|L1#{a?rPkR#E}0!DH>a_x`@e9`6KnW#2#xE^$$O#Vo$6)S zLos@a^s88LwcZFdlLHT0*39#6f>c7;cauGOT~*@ndrHqu&2{(1Dze;yTU-&0V8Iw1 zxv+(X{W5iUn=S1+I{Xy1{PW~yAz0C!hWW79G0yKNCd1M#?G3p5#dQtawb=!;dYGjT z3ZrAd%a7+-ij77olO1JhIx3}9X~cQpV8$rfCGCpm>#C(f=~bixjrfmW>5>5vUlEZ# z6p^hK1#&2=u6Vj-6GhV2H~cb7tpr6ewtn8qN;i~~dRkq;wcq%+W5BHC%iIf-Y|U)u z&2l}r6OpNfa(Xq}INWt8cPSs|N7=RZNd$2)0sGWl3Lw;dB##*O{_Klg(&3kt1%4LQNj(I)6_=8FzCs6cbUx534ZzQM(J2FpiYLJQzE??J-~)h7Ghu zpHTi}7Ta1W7Mpr``hy+e@;#?V=1M)k`xBnRzAfrAHzwat5<5(j3$J(=Q=#N(#*vT+ zR$`3dfcc?LC}j}v_cxqaNtLlfA*rFIvup%V&esk^a>01sn)Ddr(h1UB)cTepXyit6w_NA^ z#ld_9LUjuRyJ2*qS$plg;sqXJnr=$2 zC=-*^yCN+2hJU)TSwt$1fSs<*di%;N|D*L^nk4;H=eY0XkuZ? zU?ZziQiFY({;;5PV>wV%I?W&W~Wga|`?m3$7+u_3&J@zi%_fcAdOtTb1vsE4xGK_DF8g`VTyQOvZ#sX*C@c6Nb zPKZxt8?Rv^@)s=hPO>u1DWRyymn3YcFIx#6*Z^H9#OP z(B$gdcp4$m@JIE*Lx`we@VCoSHrAxBM|_zOo(!v(-o>FLLM7dzA{b)urIvpKd*nS? zn{sbcVP9_9YpogPSGs^e)lY+WX@3R>BYaMEc**Nj ziBS)d=<-ozpM{@L;q}MFb>(z3U_h#ACJ^^U&!>&lE3X)2PXGy;&}LYbSNSm&K7{_s z`o$qWCCy{&NW1akxs>nRzk5Cv@vk})B2Beez;R6t?0O!Vit2-sz9^@?^Fty)^vWO@V#TVG73G4MIa z>2jC-XQ=2T`uI$7@WBjUc&k(y1%Tk_-iiOEoj4iUnapa6*v8rdF3lq9dC3iZES3V| zadsK%F4O0R=dE4iXJw*L!c%7Ct0^$xKjhk5h2oCY`E$YH zh(N~@M~PLNp>MqpMTC{p7L9udfbuW%HFbElzS5)T7i&fpCt67Ub|7z2oB_(Rs|^ph zR&2T}GTh{0|3v*fg(9TqQ#)**CiW*iZsdDK_y6RH75@r1HQ<^ihl3nW*sD3p>FXg& zOunCmLV*D6CXHOROQyeemb{!Q3(u$j8ltGM=f$R$)}cI_c4s*D^grupGs${x1SD|f9HRS zFZ&Dg9>YsVVJQ1}&Je|HpcY}7w+0PG*!_qhE-$6*tmoMD#kbV!pGR_RHM9Fqt=@jc z_r2-+s*!2gl3*dCOhXaGyyh5($%H6&alB|1MKo8~auSdid_-QIAg&;vWQITT&hG=Q z-jWArv}xV$aQf_SLP9Y8yV7Ww-@E+`a{P{R>8}Tx0HjbD)~)KClzLR# z+BnjiandIFR9aMCgP(~E5p{|O&d4W=D!+_Hzckk2ARjjcV7h>kC~%n890|~Ws3Kfa z5B|ks772R|du=E9I`vLTPlfFthoptk2-(xAU^1ra+B2wxpm*dQK`vZUWeu(6Fb>V4 zM+r|}^z5?$N?w0e=g=nXN~n=oXC)wK_9w1Z|7`(x#uS5ORc%ez`xJC*yv<5Q+X70m zM`gb}!N2!#*A%2f09N4#I(!LbOlr*CJ)_IS16}W^-tGDn2S2LyASy#K&Pe zE0zLxMA*{MjxmtzSra*d1viuX6wNc>xO579xq;`M`-a&&KlIpc^|Hwge(6e&R(<3m z{Q(mU$lqRXhn-YXI7jiAd>y~*lHG79+yc~<>TC4jz$Y5lg-K>P*oy(CD!%-4Ep%Bm z@|K2No2MSaIa+6)x${9E42F(_r!v@}-TaL9fl#Dn?OT9yiI$5}*Pc z_llDW-1NS-i9-`*B8w@cq0~F3fMCkd%-<)5OX=CO6Oi-XTIUI`*otbKMUK~%ko~Y9 z{e9JpDcJ!z_@2dotHY$D>z=W9K``YR@)+L3<>)ac1hv-ZLN{zfaH|{7{lSn z-!iGz^I1QA7<_+Pi6EnEtj6*+#=f~E=ihvc%*s{i%O0qnmn0RjFoNb(q)Hu6FVL}) zX;;tQ1YX>v@B-eVI1o5lqU;GZpN#if#-ZV~;&qAcpQL=#mm``;lr!_65%TU?FR~NV z{~Yu0{)5RnTTWy0Ws!-BGlX*;Q#-z!)D~V_6^vN|o<~ulA2toNNQ@-TuJenOV%J(& zqQ94Kl~3Fqbj2idzS;6L9MoHGxlFhn2kqRnPUVX8A|IrDuR@CG9U61Sm^WV9kJ%kD zeClS#2fbZsN_@tqjj;|NyM*QaRoD(^iC~>Bl}U6Q_)NmRu)c{wHZ$Mrkl!h4FdI>b zq7=ZKBKyokpv7UJlE`uLw$IoU54B(HMgJ~EI#0v?`FqB;V-b$0JPwqNm#yiutC&D< z5Z&JGN$5}(&2HpA<0Jow8M@N2FRj{GXrD?Gni7{2M%RJ=(`_56KW|Pm|BGkP?%HKOWEe2l3;5N=dT3>H z`K($pnoUZ0^g*_4Gy}EER#k9eS1A>m(8D;kt8!tYSqq-sO+(MgBe*v$s;1BIeyKB0 z(*Hp87p5SrWX=f=xk#bGB;xH#YgTX(B-HfsCAHn~io&nm(zCm@7*5U5NL6xP(5|ZR zb<8fNmSbD&Dql`cj^D9@E1T%P9fAdVn;{#^yYX!0l?IAGg_6tN!M=lKkp{zQ`GE*< zw*JB`Ofnd9kYuxzC;z)ygM+-|(+a{=MLZi$ok?_jO^C^cgY&zYjT46YlIK9%QEEo! zcoB58?>Zwmj~C^LAM_NuZc%QUE?)S3IKr%17@>p;-P~Cm+JUR2Vz%>(YFnEVw1G~j zYskYs~Ms7GH7Q$r{BE+wpJKo`MbMzb~@b zRFdTH-M3$otmq_?RoSo;=J33YydwpiFHc@d$y%@cbekQ6u1lW$w$Q>L$8b+2IG@#e zgyqmZ;&3*#WQvrw@_dXBz)DE`QGy;|W01Y+*$4OSvH3ngPUmjt8C5)IRBH3mkK%Lk zCCUn3UaUFhs}n7g(O`TDLdYpoo10G&AUyI<{%1-)fegB{Tj#CfxHVR_>g#U6fYpMI z9j$Seuz*zNXHaMNA6Qs_PBm7=E;^R&i@tf?vf_ipg#f<(4)Oy`sK`nx@~m7{H3qZf z)OUExve6z0K4m(S>uU4`B3j=F;!%ut?AualAT=I(wLcAGouqQ@j-?F`Dx+UM04O&! zpC~u@rR|?eF#mPI-j<4UytxB6g1UsR z#nfw-{C$sON~|*#$@-g2LQ|%6kIen0|H364w-v9D=Vo&A3>zDtOWHie9!LHKBrx^P z_;T{^bIi1r%@L2Eal~`}bxYssBBu@*@Asgh1TehXIpQBksyPIN5S&3h5h`mA6K99dUE;MSVzs~-T(CqK%=#d19YsONL6~esJ!3y&)hC51fs-R+- H_x}F}j5BpC diff --git a/external/lsquic/docs/requirements.txt b/external/lsquic/docs/requirements.txt deleted file mode 100644 index 6c5d5d4..0000000 --- a/external/lsquic/docs/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -sphinx-rtd-theme diff --git a/external/lsquic/docs/stream-http3-framing.png b/external/lsquic/docs/stream-http3-framing.png deleted file mode 100644 index e315dc269bb9b0bdde62bf4bb58b2d60db0834ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22699 zcmaI7by!s2_XaAWfP{4D(4ch3NK3bblz^llJ%k8DD-DtoLrY3`Gk~eh8T5GSp_PgI5sr^Wq2>&krwQJXiR8t+(|KziYrm94FL)72_D64d~b)GMnx`IUgkvS=`Y3t$>9&tBSLRg*3xWnj4&cUpgIQONr z7(#~T>LZm#?MA2RyOf*br*3m6&bP_s=Sk$LswgJzik!CSPhG4aI_ZA5ljGowF_{R{ zyr}*56&h}zyKRp~vE&&q+ja^&j1`q1gINJ-c&Ze~oa5!^pu0^UZ(y^pf+EH!zSL3Y)kH%6DTOtSq~Qq$P0XZq2POerWG zCIUYFdn-8M0C!F&<8;?AHQ8aoK-8`*MF!@atUP^XuTuO`ztD1-57Ei-dx&$zM(?GO zCKRP#if@S{;fGhdefQ$MhWOIK12>fm1T#z>N-)|4wXm#pK$#DBRp~(9^-A1#r~wG_G7X{ z)5o`bohq9XTHF%8$kCC?+6jk<&;i~DGc5X@X&A-uMQhrvm!5PIs{5J3J)`uGfPkSM zdr9wF|6K8}h6%7HMK<0jzncV+yP(Dee?L_{$QRRkkl>fmsmilZ{ODulVKG2n+^sQ% zXlZOfUIR!_?!{fPVL)DCnI8GuCaER6k*L3VGYde34rvXPoOVlwE*eWD=qZ61)1Kwx zmE>sEf^n9LI&j{7`Gd1)N4j9fO=IB>Mz5gECF9U)rZV_q*;gxzr&Pq{{zkn6S3hKK z5yH@J`?h!*URXTU7%b>A18>-nG2(u(A@n+0>#0tHjMFS~_KfAZzHjnLjKWYr@Y#;n z@iE)8oSM@1<)1HfN_8p!voc!(3|uUGI-F-wW0hy$WM=gZe$Q%g*S9B^E-c0%%&{NU zWA*v9O`cI&tyN#&<{-QakxN%p;@%!sDibEgHQ~&tiIPp|aEWHut*wV0f7G!#!KdV7 z>X)w9zaw7nh%qS8vlnn&5NIGGPp#5sYS;op_73QIL$vE|IVt5!O{F$|G1t(Turb1vDWubsakU~foTqWIvsgYz3Tyw3k2kZZ=;Ed z2%Y)$Le-P>W@nzoKwax}w^E!HQw7KsR!5f=%PxY?M#e<^b$ijydp*92ub36jM#OBl z?k8|*(Tg~lz@3hRjtpz%6#tJkU;;E?Ul0{P1-q`Eb58+M!mr;g(|>q&E|^U**Q#$q zl-Z%dq@F59-0O&dv~3bQEMho+8)**Wf9|G@30oCL&aO>>6fU|IuV<5|`~FNyuX-LB zNF!bNXARksOOWy!0d!vi;Z4x zyHRq`w(K!Y#2!Ov(*IAd!HXrylg3CJ^|!XAPvWEpuN`zcehA|;FFUmKWJegDA7<(K zvSY$5HJw-nCtv==qtwsvU8@%~<&QLa5wtkneNX)u2{NnGoj=*2;ePR1N9Oc(XwkfH znY0w!ND@v>q}`W_R0n0fO1pKzyxC?B2N(J`41eZnVxkHnW3u^RR$*b?L%)D9f%jCJ zTQn#Q)Nv-;;QjC@e78rG*+P5*Px$%et%<;IbN4t8B3#Vf(WU9?VDCkIfz=PH4PUXg zyt8xF4N7wL6b|-17X2-xv!v-g=6}NT4JyE>1=$H{Hw>?cjLRo`^AKL+{}M_zMdDrF z2D6Rk@lRwcTmjGT0-5Z;SCbSe=^UQ28`a|vOB{5?s)d9Sz=Irr0--nROqbY5dTg?< z)p1hee;LOLi`m(*P#h-lf1c&#CXGW&bkMQd3RWm>Tl}}@TisSS>dXt|jN|PkjwEJ! z>`QnwBQyTXW#wNUZ=~z#dni8u5`xignvh{-(Dx=4qA&30=E@5y<9Ry|lMQ;Ei0{Fq zvI2UY|I3{QFqQ^I&i5@WEX*PhC;Ub!FKETM6L5K zC=#8=$>iHb)UxYb-(Sgdl6u0Olzqs)zm#8u)-Q_akWZMcNw@u{52DuCA$OXFV>BHM zZ88>XQK&TMd!yb5g0EkqGGBspZ#e|sW6oK98J_Rsa@Woexh)Y`Ekpj z{>78gW_9ALj56x6^g@3Ei}H@PF2TTu8!7DOviH96nCGX+L_%Kvm+TYVbH;C%+(O49 zNJ^kXK%QRX_j^M&Xpl?eZ@hEi5ZL7QR)5cA;&RDT-`^5Q38govIPb2lt_!=Dr*q+A z!qjdR3(WX;>opK75mVl={jqy*MUj;_6rB+7^|f{)@8ytaY5RG#&W5)W%k|W>#VPNI zKZ{I4t)@f7H0(*O6{@#Oz#N5 zdhcqE>6vpY(EzK}1~w*q&8)qVZk&WC&vgy^AVX|nH-PNF85eS0L@g(2&~ZB=Oa%d= zH2$*+-|7=6IkB~_|6f^f1AG0UEi9%c=wH#$TTnD^UngMjzcw(_6i!Rge*Aw01c}7D zE;+K_=znEI9tWpqpVJ$W|CJ%>?FO_4sp|%?S$yx!M7{gUWkUp?1ubP8HH0K>z?uddQuoXZdE6M z`X{Tm?OlL9)Bo#9#(1L7S0{}d|8(BHAE%-(3?i4U5wscBbDaBulPp5XXTFxhk9F=02I0#M-i4{ls%)QyEnM{WLMCNS6z#bX9MWEIm3@Nd|+iicPtQ z(~n%9{Z79tQl{-^5#xAu30JjRNHci>E{BEa@6wUvC_#Cn;IDkuz>*h#8@-j+4gD)s z+FdnE^gpQ*>x?2j|D*=%iRAyT07IIS>TI$9Q%$juUgU4{JDeh4|2Ds&)5QEwe{Kb> zE0q&j8JGHxU9QH&q$)>Tviq-rW1&M@%w^K-t1d&dRzrWqKNt}N8`}N$AQQfOQK1~eM;2+ znf-C$%snB}9hnBw|sA83z|NVfE?VpYQRN8Wh5&pWN{~Uu>Y2g1GPwV$Z zP=6g$P(ObAuVYfjY~@)AX(xB4$e+JC7igQPgwA&&LG#PXeD)7hZ95CJ(#~0uYkUqF z_9CI%_d#OrD_@cpT^KFsdRVw3l?M$odPTL zp4-zqQkc12viAksLLeclZ`D|rzYZatWYZNdk(=jJmnUllKNG`VKz0{$F1BTE038w2 zo)}{0G)3Lf2 zuWZLTdzLL>W>ul5Str0^hpN>Qh5%WJr!f!e(PW3R;z|d54Q-+;s>a#>f8QsKyZryX zC(0B73BE@2oGM_bTK*IJzh3-qZbZXk7T-aKq(|Y3yy;C}qtM9tJZN-<9cqpz9XxcG zXJW*OP?;U`^5TSJv{k+=KG7U!KwuPDtMT9KfgvV`F0Ot9Ka8ubDwkn)3K+Btvm;w8UZ~l>m7u)CiM`RuRSN zJ)7PnG4hFne#zCHv%|(^Soxm;VBAnnc!1hCi$itJmsF!Qj=rP96_G|QmMz|!byKwG zR!r$&&P?5TxNK7goP&O*L#f_jO0M2zLD%VP!z1`5ayB-gh6I_>wsI4L^VEMa5B9(V zF6iDfaGP>9Tau&WVrVrsVD!JvY95znPSZrWqLG!e=AAsEKm4?x>XCdwxw)3*YyBS6 zCj#JIMotGO{nu&@VaT-Jiw%@cX0vC_nzcWK2dv&x_63Te-y>rP3^a*ZVx$Q=hUBxwYLhm<3465g z>z9oukKn9)r8Tjcw{UKNOW7R8D=Q6J+r2mMDCf9t2vw(kg|1lw zLi>i`PyM`8))q=4^XG|xST!wiK^sE_IfyD;G z8nNsqkS^()Cm3kV2S2UP=cC}m9G-hfC~k4u^sPx(^tGl1pS9Nd$L2%w6oE+w#1zs@ zvS*jBu596(bgcCcx$i_cE;DnVuojw#JN>6dsjp@@+yaG9$@~4m$X4sG{U-wg#t}*^ z&7a$~rh+hZTn)&MtI$)#yo@_b;X6rT0yKIq<6kT{mb-trS|t%%v$@t6jAdTxoz`@D z+;wX=rzuWsrlAAsU=n1X4^@9u*a|&e1Mi4+SiiKPh@3t7s5IaegXVz(!F-5jt9mf( z(I$O4PX~0n8@8AKW#@g2oEJQ=(5}sHpomreSIsE%G_t?$?m9E z6Yc4b!E)&7`H*iP8rq|fymzlJYY0Sps(F64M8De~nY^?Bp(DLK+_oIJ_(6g+`L5=P zp;DVNZ!0qRMg$W2S~D_Ub@?+g{dv?2={v}``G4&2dOdn!LC51;dV?LA=w8vmb`?rn zY_a2P`Mo8k`znNlA+O$j>GrN0WhKKLBF#IsOYmEdw(jqtkz76pJ4}zvh;mxL1w$5e zS{4VBxLB0lfbOHKVEMZAeg~`H$aPpmAXW4xOiG6i_x4tiEGPAla%Q_lX2|E-NPork zrO;&QmR6l4zNZ>~0nT;#=G^-~Uz09Pw&3<5AD1b%=qf5=eDwRgMx4C%gY8hvsi_DM zuZ7XiG1iJ2cGH4*8X@}v?-L{&?fDO%!-`GLT+#dfRr9sFNUtjADhn zX)*T~5g_-r3U9l}R`&5qL-n+paEAFGYt$M>0!VHKl;J}*}h@fJ7E3x^Hh6G)aBkGMz`%f)hgex6Q+TItqa<1}+S#6;PA zjbVqDDg%9+vH~tNcJ2$Ly#|7$&TKK9~eyU&YIyV>TVs6ESs8*k=DaoHkE zz3SVUqv* zpzGDTMt~+Fptzkq|32}2znc=D_=%*cgk=iRKHY3$m%fk zPYz^rEV!Ey^AboALRy(5g+nO@pU85&kE0xVT~y35fbC2x*>~L~m(TZIN$fOuFxfo_IPj z+Y)Z(g&C0w1iR#zzYnu>G~gwF`O))oa98aT?y1+lDg!@@5Okk6p77ca6|_bfIDKU@ zJ6>xGYP2@YArI%BbKQ?Iz#Wm|u;qJ_U+;Qwzvlego!!Z*fSt7?^mCaKX^7v6^@nAP z){B0+iPhty4!t-?;HlvNCiHP>2AGDo0QX6~dxtmXZK^(qdH#;#T)oBq&ni*K*GDm?$U`Oyv_`)TbYh|Us zcg}k5LF}6Dk|8tR3hJIBlq7NyAap6y zm$2GLH%+SO{i9EP5Y7}8uJW)LN(i*6w=;$4)M&Vk=4)cRy~MoOJzN(d z1|2)SGiUbZ?e2(UW*=n~rz(K=CPh8nFDsSK3ZJ=sl;eOWYAXjz_C8ck)EO7qR%1&Oa9cYl=!Pi;5mW5!z*RScKAmowM^H^>>A!DR$G9Z!gv7 z^A{L(@}Akd0nv?ho>J*+l*C~u%Wc#mE7h3M)R@&8?L(At!r+Jzg$`SJB2KcxX{$hw zfYpefC->#NF=u+U)w!-nDw`0x;(6zGX=aKjq&U>L!%FO+UFcLUk{{Bimb8D_=~$?h z#$wBDyuJpi*k%xTRKGdb6WHOoJ!+W5`S{TtK3|z1J;zP%%e)6)T~NmLTkMy-Jm+x@ zP>_gQm^e<@XTN!GpuFJm-?I~`z+n+o=B3r1f~g=uRKgaXA}%j1Q2YxXi`banZwXf! z0_b*@IE%7E;)Q4Z>c<3m_~ECc*h9PhZNoqVF8Al$eh;(C$e;6&C6^jd2P?&r=bW8s z1$IivoXP7|8ptP=X{*u&i?%_BGWa@A+6Nj%0gPo+^EgU>d>8FFATJE*5@XgMbQ%v4 zgcvvDS@6nz(!DqCcLR~%HTa+|hXY~w;i>+%WQ$^#+)e$_tu%u7Vkh>YLJ$&kgH)qO zWz-wWkEzPzCB~27?$27H5NZCJTc(m~6o?$d@1L^NDR`3173VL0ZAdH2NE*hd6$TIM zoK7_nb6}3j*cu-kPRE&x*#xakROY519ionLC*bgf_WFTQ>Zk^&#N~blr^DgNdzl;i zzIz98y%%*_Hx#yAQzIg#7o)Wzn*z_ngD!pvju_X9zjGelK<3#;i()y8Y>rd6#hQ^& za_W;ZT<-5+osyi>NILjE1O?!!rSkB-q!;76E38WJH8lZP`0Xvbu*j0BI1Ch!D_!Hk zu4UWx)$w>9-`&xJB^?kL7d7ul9tc=J1Xpu>Mc+y(#<08h^odq)U__H;q=4$nSmk>Qv_=SNK?4ln>0a*cU!>=XHO~ko~SAE zy2@MAlk)+kw`|V&Swi~4tuccFJ4>BHV;i^gi2>U4*S8*fyJl~C(0AdK%ZZ%Ix(GlX z1iE#Yd!ubXK+vZP=bABjj6R3EahF9i{Nk@X=ogswn`GXLLLSI?g7Q8!Kl&lzk6Z}b zdNhApyfd)D<4di6xQDBg=9}J zKIo@FPy;|2&Dh-YspU3wNhr=!<4JOI+?U#SzqX{Yo75J2+f7<1Us`n2wjc48KMuom zqGYzeR#B>BCVjv0k3Rp5C*X+^q`ddp{BU<{l`CJ^{*c)dw@7~Rsm}qmCrFf3)41Ni z%j$5I$QI?|e@>mi^8C@IB9&5&F;d*2&2o%tL(XxB0RdkOzcC6VruO|g6RgvoPh4nC zf-oX9K|_e;lJ@HO4|0vBfb*g#HAXVa?Ybc%bVWYAn2=W5K+)QA!%hCxVeb0dacHCm z)o2JyYPP{v#f+E1=v=>j#hJ5l7XsvB1;oV)L!Qjbl_#E+R&72NtxMkj^H!);7|M>TJXbMV9S->s_HUUWAade2L=uPIe%C5 zW$mR~lQec;QM>X)i+P)w{D3ckE$Zh93>5^Tf>%N{B!R8tU4;d;^cY56j4gEsd$H{E zMtRtnEgDtBRR=}I4-n}H)jcKXfx%2{8#`Zkr?E7d6hKiH``PoIMwzBE`sWSC^e$B7_ zaRYNU#NuYS__nBba-q?`%&mKyOB|$W8>gK76^I^BpW+BXelblquNKerW0tpv{bIED z(yt74o4@>7<8pT>1@j^Wr;O>#46p+A-go3GLwc{|gG`g=^$(h1^p#zjauuyaY_l8Ze(?6xCxe>LlzKabSpjl7S`yvo+g(^IvRnI~#-eqrK0K zfL*(AL*dJ`7{(-M&rc$Vc<`f-3++;gIOOpSlkJ^=RI!w1Tqv`zpQPkr&I{jIgUkv^|pM_~Qtthw0V{`-Gn8SCdLS8Tz z%ba~a6xk3!ljq{&J1D0Q$O5Yw%%dpZ-Z-BPsfTf_Zg-tf0?KJwolZB8iLhu2USpb~ z@l{9TjN2QTeSJ63M5H$`p6>t!SE*wAys&1QNtSS~ubQW3pDS$7L9Z9lz|cg|j;@Pa z65a*kI64vCiczJ-5yvMr0O9}|*2xmbFLB`?G2ZDpxMws&Oi?zq>Nl~WKTd(|WGz6; z$;K9S(@f(oynXR-B+HC@tv__oh?&%0rVNvN3 ztP+tyKhIA&2uGUi#;?h|sGsRS!dj5cY$I`r+Lz`TgEP&{MKX z9jd!dhZE^UXoGUyt!BfiFl|V@pg|Y+1LAK4jr>eU0sg@?7E7#o~BebHb74o zkDof^hE7utzJaPc&Z8KxKFfW7XkJ|%b=&I&8@;dW9U(te%i$j~_kS@#*MlMBq9&W^aiIgGj#%`+dWvVo%Sf#=aJHf)<0?av(THkSM_evfN{Hh z=uE%gsBWS9$q^HNf)11$;U({)=nIO4Zo~`#b(#VUOgLoys}B|C@vUp?bfP6f4A#u? zz~}f*!`Ex0rseLzHDAt2b3e4iIK#l1VD#ogK!-_XtO6EcR->`}hsirkV7EHfIsm*E*bUO4#QXs2AhYdce8tI?k^E zOAtm}U_>*g?HAF2Z%x&;rVOx%$h#L$L`+NLy5b#2m+sM4kvopUL)mgD0!Z9vLCZEM z?H6A)9tVXI!!jKXL%Y+OOvOBYt>)Y$CrpH9P8K@X(I)T_KDT0eHBF5f)2>+@sgl|F z8m?cul|D|vV1DZ<5=*|BE`5UPa&J=B22~xj`0CSn@-a|prU^i3c)L?~=VGSx6|U)s zD0F5+PdzAaeIS`wSzR#jU*$D_FSqlH^kJK*y^&=&J8q*8urs3B;QQISg*%>VT-6xN z)SEgJK!|3{jeGRoA{`9(;x4LY2qq9g)2CH20D#sa5@b-CjtQ9YbRZYhGG#`9!d5oH z4n<*dZo}RC-(H7;@Du{wbUr7vaCoE?+hOOCH@{oM0~rWzg5uvGK(SM++`PsS-_~1T zup|3N9Vm~p+9<)b$mN%qFwycxp)o$jd%@XYYAwKEV2Fy1O#mDJJvP1UW*|1^A}sXT zif&4tZdZ-B#HjFvZPqZ9VMyKNWfYcN1G?T>3ecdhv&a!zhk|a;6)Rhzezrwp=)kJK zZoiXxL#1Rt{_}lJJRz9-m-A%Y7Mci?ONu3IPT;Zqy6|CSp&d%FsA1g9S00W4k%cj9 z&Fw=UkMnbOe}jdbd?McYz2i192-9rf53F!$aOXtg=GhfD2Gz3|l{g$KIuH|ZQyrAud^(M9(+^)%$HNXMz(w;izINN#O+7m$ZGXs0 za7yAiR+drCeococWa)HH#uV;-$~6(oe&@}*V{wu^%fnoQkdfW9ui*?dh)sUO)5Y^H z602A;dKPeIHu=$9g?ZVhbsx%PDh;+gCR_1vi##X+1SPujq^cty_A_P&^aeylopxSN zW{LWF8S{~fkXD0?_t{}?;G87mMvy=M3ApoDmcsy?mPSN_l7`>ujrYMYL{EZh!PI{@ zW!aMv9($fiCuo~@dHQO3m+rHNOoMCwD@srCo5NxA%4Z1{2;#oe1}(C1SNV{muyt&- zZvMz_kVL4#J^xGD5t!PVNdL5asE z(X}I&Zh>3_^nr-CgG<~7*TowF?J@qfRiCp13wxbGoE1k7<{O%Vc+uhphwX#~ykT#W zP8Im>fJ&0L8yoXjx|iPck%pzgR3;)78f*qXcypo~o0C%Mt{uwdm8g#iGcNo%V%s9|n;srv%hs)Ld}f5$9IY@Z)Eb7zR& zl-6BnZnN z^3he~dD{l!ZSmVFPd?I306$H`62JINL0Kad_v#AC0+zJ<7R#rhP>GLm#htz%?=k>{ zmow4RBO;vb9>{{{72Y++Qw0MTba#oxe!Divzu`f@QY#1~hfiH_hf^^ICwJ|I+eOa1A--)$m1ROk(r#TS#@v`aQQ~Bw3+s;i4e5(5h89*u+`fM64@Y1rG zBC@`w8+2zi;U~rA7x=yRd#ilE(xDfu`K1$;hlS8>`zz#pS+a@C)J3~IkJqH*jj?5v zLi;c9^I_Uj@yO}li0xfb)gI)rYDteSL1C#et7I-SWHE#plZ%gVJlI%}_s7zb2{6^j zka$uk^U$PvPU>oRvrN#YH%R>bk>gl%Sb7tcLql;1#>6)22}^5fA2!XQ0*LvU${k<| z#DApbQWr2MQiqr6vlk{F=JigtJ)aUknLSu6JXl)ykEXrCr~zzQYLDvCN4dZsUzn8J zp0ZQ!Uw|QHQG^n=UG#NsA$;Xu`PA|KK7?Tc+8NmepM}}BQ7O3rsKP_%o@UFaYn7@V zsYn3mx^k?^cb+&st`eRU$g35nA){xi+hoIVrbQ+yI*Z&_W@1rLC;N(wGF?{Nz&8FT zcN;cPCqG0yNo7G_LKqq1rm2CDv}o0y#J3mUH*G*r6v;GLmVOmqFoe;UDe5HA6Oe1m zcKsk|a4?$hWXH0p5Pv^G8R&1_>Akt{knBp0Sw&daSMEH07xqM}JSTBcQWDrRx&yd% z4-#2?i$$;g?gEcgAa2&t*M*yb>d#|Bw z0MtKPt?Do0Cw_Hsaakk;?bjwWAU~4yF#$mEg z_nzhfGXN-pO(prqq1&I{S{)_OIsC%>TItzXdVLcw*C58h@;c}C8xmB%DLumc!?N}P zm3$f)FBBy(muApe8U)$~KA1CW=&c1t1#4`t0;Qu&&sFIT5<7v2*}IZEo!` zjKShi?xrjXHz^Jt)QOP_*h0nGjE^Ct~? z`_B=ttS0l;IiIRb+|}=!pyuTyr*TM^1M-l8gO$DzSt#>-kpBTlu*JHNLznBFM!ea* z_o2eKx;EmJn9E~(qNFq5KQOOx80lcB3jLmMXy!My5T;-BaWr(FsMSs?WTL`oG3G)A z6XbM&-t3bHutT1if)bT!kDa;rRcjVc=b$vlul274Uji{x?R|U9jox=R(b!qse)5Lf zHv~(bej8P6hqfegwx(>PB)QONJx(&nr>~vL;4Smz-7gaBqTfyB(^)eOjTD_L9s0%I zd~riNDl)U$4;;tc=;RXp@w17g0?(k!ieZm>DeE;Q!pDaNINe@ujEz(rL z2}&5j=NTR@fXqk&tBw(K6wixKh<`^tO5oJ9&t&|b0rxTBU0#Ea5~0yI+_k!X&SEOp zug^5gK76X|Py6N0yU7yXm6SVO#mVeXW&*8W(Hg7dTkHfUi4||>B0*o)zvYGQgZW=J z8+Fw$wuKOIt9j)zsEsmVw;!kP#se#af!=1R6uV$t`gAjvEXB+ZkVb@{wJ>SLw40YR?Y)p0IszGgkFcTHT9^GpCzp00V8#RX%t@?aY?>DH++a6$AZp zrlR0{ISlOg{w^3&f}(a2{%IDEk9+I2&W73)rVkk{1+WfO|~iMt(Un z(5b&*UXX{M3=%fBu|Nq=6l5oD*wy>K)kYH~T$4JxZn=KgLEc7pE=b19sjU=R3#^~U zG_4^5-DlwMdZ*|T=UC|?iz01nifDSd6}Mmu5`h7tXxhD%Pdt+v48=3P4UTJ7*(8s= z>BGFLye342?9ddhi3a$yCpENBiVJR-u#1xD@SRlFgF$x-NKlZ7B>AT>#J{2Qt7`^n% zsM3pfNDwn+>oe*QzbD0&L2Hb_AG%K(q)$Z6h3ElzXl%B*Yv*%eR=$?f$(fhexD~xZ zQ3EMqk#`!HCcxig)Ax)mflbRS@R2%ev67XkUe73+s1x}sW^#bBH8kUyQ@#%o{t(Ma z1|=pe!}j|`uPB0M*hArq#Z0{Xqa*o5r*W$OQ-x2w{=wH5?-PtF`0@HadY~7Im+ZxB ztZ0Y2hVG<`zw5I7lNQ);Xmz+xjPfP%TekWxxN!F2ZDcMjg}~h+IAK@7JGf1{t&zhC z%5685IGU%@b>?u79X(`evv!64t-TM$qcz9~%UGb&P*Hw8739{Vy%`Ai8t)_yBPD$x z+2j%(4jt=G?qD~thy6LplyK2c-riJ zum=7pGZ*YZL#c#1MOR?~@Xx0h-|cxPV9Gchg!4%k<}m~2H`tX%PDO^pZBhK+BgJxT zb6n-NKQs4571xWy%wt&Fa}8_;hTv)4En(k>zxG4JFhrvk3XSzp`8{{v8`S!eh*G*y z!VI|x*PbM%!8i7N>^-6E>6Jmjc9~~8I-lltrQ{Xy{JC8^bck-|+|-eukLA4mq@_q9 zPXh)3C)C;1?2>>L) zp{7O28?VJ<@o?q!IoAL#EZ5@X+md`KA0fR#LLSk8CjI#6D7D-jZW_MtDe_4!r+En* z%^h@ix$^A}n>OE5zbwl&sFO;n9fC8xem8`dmbRqRc+(us1W*biZt&L9ocNqnjL=d) zmQ+&ORYDpUm;Y*|8?aiqtxLzv=vFpkDGE-3on8Ovl^=;!8rzT$1XX`!=DkjF8cpKqirJ&N#7olx|H{cQlgeD=+ zI)?h*GUA;76}xXJK@mNA!T(2Mt4i)TC?q`=Ru@UYG;Dave3PPCxtD}m-#3Ir2Y(!2 z)SQnVDD33*Z(t;{jmfwM@wTNTKw3IgOpp>0UbLh?&WVfFyLT?|b=@$0d= zrqHduaHp{BhleETXt!qAxmZscIH~l@YG);uQ|h^I$dugvo!N-iMKE3G)-N-w83L5= zmJiW{DcGN|gZfv;H*w225-XRwfJ!5-Xf)A}gbf!_pV!*xt@bLEuDvYcP({RMSV6y3 zIiqPL;6yt;X!1!E+_I1(aV33A_QFVpn68t_~W1L>@cX`WAH8;}A;OW5Pn^j4XaL zM1G(1HCKOKg3tEQX8RJZxJYB^qFx7*t(L;o+^V zMX3WmrDY}bb(VQykfsI`K@iJH@R}9hwC}K$yqdqlqPaz*&k9l@GVkBaC@;+KWq@zs zp3E)G0w-+mp*^%}nL>v%Eii)TG7BW@-4QpG#Cbb^#-@jtXi^zGv(7HOaz~SEHwGZ- zEeF0??T3pf#MBrYkM#987`Dgbl6LE792GnJ;Sg3?nQ=0IH@a7rLqPiC^hhivsvEwN z)XJ_uGMBIi94*>9k0J0EowzS~b!wYA>q1*@J;}nPfVFs)GpG!Lm}@GhU8oaJ^4?ID z3Njj+WRY;(I2ev$sVis(}VeDI?|vyOSr zuB&{}H;j|uqj;SDds~?b0GOh=pGnO=921J)9MolM$$&OklI;0Os_T>Kv$PUqUFU#m zl=jgja_;`Hz7{eMv!4#vbnB9f!d18_U>Zen-^Ya{EQY@z^wq8p(k1`hb9 z9W!hdx#*4aI3q2FK}83Qo+`x?(*QZ^LHPFpy~oNwLYKBMV5ZY*j*y%9G&Mm?-H;No zvow87QKyHunF2PKLFI<|haitO#~rK<(|$SHxuATy$5#9~cfgYN6|<+*EsBluN}%bY;axDDCx7ZA+{&-7SE??%e8=4(Tf`0row9pMK>2 zMBtIvxjheyi0Fv0w|sDoOT9+B3l+O|BabqovDf+$KqKmx+sBHI`spvqSn#8oI=P7eGYDWPG~$ZxW;8-P-~EM7r%yN6 zKp|UWp!boNaDT)owGVK-8OZY(Zm4jqZI7kXMJu*V4zP1PX|emp;DzY`dyJ$+wDY;~ zrdPQqtu=L`rL}a)vA?zR*!LtuM24__tjALV`FvnGk=os(tg%};188N?1w?>0fMZgE z`aZy4wdm#}`jhTuLgkSUFjnu9M;#s)aD2!NIp#tu*q}((Uz6g$cZH&=h*q~k4b@YivLOhffY2rQzRArP@2oD3Uxz{&; z^f*kEc(C21mB*xHMkPS8i@UW)oitPdQ_P*iwi5752(&i_oQMmx(LBbM4eNs(z~wxb zE9MxG`=f2YQczNM-{TMgc#1C2KDdqNR|>_o0ZmP>`fz|r(ncwdF^~ml?XX0^k4O_~ ziSJLf`2l*MrOLqtFY-S@0Pa~OjqMw`SruA^Yft@~R!3zP0dLqESMobg{V5U%oTtoH z(4>Q_=l0}I;sH&{O61~waf=||sxO$evL#D@Rr{Ou92hcq0M?&@TN+V>F6KtrM3qr6 z%C|NBY_hZ|hHCt!{`v1`9F4<8>ZCH`f3kgm#>)gskGA@&2ZEBaO5}>mffENF zz3c0)GrmsmFXwp8@|x3Aon;nuv}Pr7uBd@lPAF};&E2-kB3^(26EYJeE*v9Ku(&R- z&^Jgqes=f!l)$O{N0El}4=M5ZB5_OrgXx@LQ%`q6+vngb{(wLv)gR^^4pS~K`kLkG zWGYzkbl6#chM0AhNR&0I7~5bbl-xlEI6nJBr3JZ2^Mj4q68r6l!!C8i7JHLfVlO@; zwah&;mtRVGU{nVLuIPxA))*WgH6CHm<0xR;MV^(Aas#x_ zibl&HB(Q%gw*p!%=Uco9qqaP8xUQfG}ORUKeQ;pvHYt4hh_9 zBbRFiQBwmK_<$=}zX@9ig1#hdCv$)x%x;)l9>}owLW|5#Bu(_f|8)PCt4>#hk+ghsu!?NTM-FsvS(rLEkNx$(!UQXx# zbTf{X4Ny>L`a1yv?a!SaO^OZdjQ@=(1e9cm3Vh_Z*K^8=fAqs-O8=C)vy)}ekee;r zXW4B);5XZsQW-NT>rgWdBLh}Yc9Ac&&gsQEZLLwYS*N-+IdW8d7=1PLu$G`yT=}EY|gS+5?NLCAIts zyIChD5g=jxN0DVLAb_3~4qXg<4fr*Rlr=O|{_VzLwDarnYjpzax1OV}ZY6PM0txZz zhu07nnn&k%z&N4y)Ut#?Z|T#Uevktb;vcE~563;K4vL*o0NgxLB|@4UMgsY46y9g> zhj{69m2d8SfKS8&cTesE7mudd0F)U3`AzZt-vO5d^xR(sHWt6EYnJXwml@O@dU^!DEKzGnFR3=Rdk;lD zPgP5DUua3CoG3N9Fce%c>$ACnKi!BfNC)oW6p%GzF5j;VJ$gFwRXGCG%yMv9P?QEV zcjr{+N$vhAW}qsX=p$SDx}E%!Fn@<5aQ{R17OSYAL1{6C+)U4PFY?5#@syL`6$!&z zsxJpsk*Tfh4Np0FT)~l~&w(2xxfMN zH4x8fE`5+LvAWV+!)u7TpU-BSk+rKp9eLI8I=;GQz2DnaVinJZ2a(bVgb8<@M9C62 z^b&pKN()zvj1x89jlDG-{5D4<&!p@$BI(<&;WZ{TjW z6DzB%aJ?V6h~}x0?Xkh!+wZGM(+?x2WN#(16>b0?|HPWbZSHO-M|SJWXnCDq7|}{n zDem@tj%&bOA=wWhPyNJ{U=nzdB#1(|t(!iLDxuMfP&Gk*ClEKvuSi@a{>_ra=YWHP~JX7*ycKfdaKrhnSPf+>E3vSk*E`Mda!t(9xR1@%_wHftg#k`j|@= zuUcLsoxhU;NnWEbX?)cdsr)dqogR418XuLyClufa*aqigXUNiMNN*Ig?%RT4la3Ak zr`(g|2jWi)`>(Euv9UXcMDJ+;4ZXTJZCL$>p97Kc)q9uV*}KTM`BZFCZ_9&q{Z$NKeA!EW*t)PcFHC0j+KxMsn_Ny1>pl)k79Lvx zIgy6c#tK>D9e4GEI=_B~0|jN{ayB()?E5(+iK^O3tM#;^m9n0_nL@molICM_ z2q63tsV6iOdHRG`7D{^9_7&O1M(i3 z$R8Vp+$bzs$-oUy6z_eCsP-ehn`l~J>(?^}%jP#Jeeumj&MNA^;V^Y^f;Ce5)xb-) zwezXCZmYU~Hgbqw0ep$iMu`nb1pn9bCz59_%Dq804Ykw-98f_Q1E8hqa!0>vdDtg6?GQbS_W=Gn9VV8 z$jFK1zD2sE^jAT$Wo~mpos@|vK9#wX<`wlkjoNUF1BF{|5~JyNSR<5F8&8x@H8xRR z7BPD1&I}Jx-7Q{CHJky(&N(>KgjQJ=k~1Uf5zjyHlivS4#qSjl+pX5atxM>o8iyNd!d-nJ$CTt5s=t@<(lL=dt4!v(o=hHRt`-RIj2W$N5S2I97;rBSH zzJNv0s(mI6Gdc@j1u<&J|9J;pQSIKFqNFiR(;=iM=*4(&X;8K3kfW9fvQ@!08fGP zsPCJwXeGolL6PyY9G$N5P>xPF`YkTNV}rP}LyN5!^d0e^j1^TO@ZysBlAGI+?o#!1 zJrjevi4Jz=Bmh>4@{kEkG0r){1+#D$wFMM|G8>bnZ6x6;W(nTfF&C^b+F2JkSdvNv zTDqb3*6&^}=Jlgz^d{pbTzNg-`}Nmw#U zK6hFa;(~*2Uj$2}?)~c?XRmp^QD{%O{IlpADaj_qZU`35!g~8O&n+1`Dnk68bvSJp zfYUtD-fQoxkf{>xSF~=_Phm#g99Z3?sfKiLrgiU`aUh+wfWu(zEyBU!RgV z<)O*pHy2_qpKYEJQDbzCfc8j)s;TeJ%E=I_fyA>H6?Y%LP@0=kihwyXS4wwcu2(m0 zCl~rC7eD-LrlRig+py%maoPGCtdQ>e0Ry|lZ>f3uDJG62(1ZfUgyOv$znzkI1~#!Z z4;2`-q$1XXO(V<)E%S4RSb;^tt#ZC3?mpcs$mt9UF^UL=xCyAg%m5+Gsf5?B6J81| zEc90UxsG`}tOiX!rh9e!C*I-{+98?lVQH+Fc*Go>{EoEJZ zaX8<9KdBLD!$1NpI|M1=bzqE1(Tk-p;y3bvoh9w)QKpD=zJzqk?;YpCHa(0R)K_~SN_88#tVIoRMgo2V2>Dq7?TA0$&PU#~ zqTP|423vXrk^-LR?LKSp$pI&Dwoz0G=w4kb%fC|V_py_eJ_nV$XgD?*e^pz{A$I1=OFR>>0ZAr>?vY+Z*dit>yW83g~?0jrkxro-$QE$bJTlakYI zNDJ@QbMp+a$1?_ItjO!1_U+y@igp$q|HZ)Z ztT4aqJcB&Mn0vrCPO7`)tC&lkazCApb++ij1DD@mGxgQ1s>h8RLe9-7%a+x;W3!fQ zPd%ezq4lU65*2Zow@JjB)a67Y<5hHh++ZbOKBHZ}zpLS<@$qZ2vXkbYb^J3mX---w zPV0O%@vMO@=c#DK60c#*vFJnGxxmW;9n-TjZxL?&$!-3}!I` z_iV!^#!VV*C)?`CH&TinRv%D)Pe?#8jp2&r?BLF$nD%H(Z9+krnYihPjL$=arSOdZAw1H(~w8N3B=pbF)db9{BM*~+bi+^-|E=&uxQ{Clx6l{`Zk zv4-M10awj%-F!HYg7rWsc9OJ?O5;F^$(_jC2tksGbDfpB)_LfTui z9!j2Qs&vx2WbR0sRJ9PE`|hB~Z5e#zNblE$x<1?t<{0uN$%y2bU&cSiz~xs~dU zrl!fU-sXk6@MD9pgFg-aM$E|cKC4A-^dw?`HQ`eA@T|uo2eVq+j~+`tFIW>_)?4)d zF~XrluJyiHh&vHHX?Z^M^)JYVAb^c{dyd94Oe436O1vD-T@xpYKkxaHLb-HHEjtT= ztHt|G47H8>5MtnCofBac^4Yq z(G_(prVw{dg{TGt4pjix3cdaZrvt$06v+;atH8M!aGpYmO;);IZZ-hz2b}zWVm{L| zk-vy%1+JSnVHc+l2KuijDUwKUV``$@*19S!2JyMG>u_>YMIWONVUVx&5*E2+8w=(0 zCr94$B)C8Dm2lthG-{zVyJ{-8_xb>u{`lL0i*Cc^quNy)19~8?+gbqj4+D-z)Xa(= z>@%u})RVqF$$8Z0AG7;X!FwI1^WM!^+I3583lBlLuXzSBWg=CgGQm^*SHjJHZ9dca z$!lnLizo|K%j~2Wz^%FdtO^dSl;$FfZ(MhFjZ%icaR5Py$F}QV|I;nk8!@w?O{B|moHulb+#Y1WGm+fL5y+g01!xjjh?3t&Qi49)xwM28mph?V$m~a zY|%L`DK=nK;kmi}w!W1HWV~ z!P09|!v>3F;{f z+nl+qw@}m=w4b?%jWqq}B2J8I4?_#+h7%^-)`S7s4q<>-)x0cb3Qe=bc{Hhnw1#aB z>Z1-H7mpNOGx1yk^a<<=G;>Lwltbr}$t(2^BE3G_y!&&R*qXMAEp~)9ZgYtI9Tk3W z8@+z;Ac~lgn9uCQrrM_IhGQ3SRvo;KaZG))ADtoIeD1|?j^l%Bz5_h@yYmXN>BD_5 zsSW=f8$dYA1s@SQv>VgB2t6pT=fPGY=Fe9Epl@~bo_>Xk!A{y5QtRH<` zi~Vm6NiZg&HMYRaV`%e<{Ur@HdetgPn{v~xywv7`uuMs_N?4i+9rGNiUc6bcqdc?q}NwkIs1oXwg=)1)X}s=VW{LmM(Of-x>v2F&k%`u(hOdnIcDy zS%G)mX3t|39Ay6m2Q&?|c%IMbz6mzq_HS`$2XBpZVX1DiUDs2q zR@@A7IU9c+PF831TxmCXaO0k&N%h7W{LIqYQhQeyp^FX}N_JTXZu4XdSuIt;*V#j&G7fv&|j-r5$?B zDf?fcaNsl_5hbQyJj;O=F;D&B51m1P5Q^ZW&@gsQwkQVlKKKbkBB3HWgk}li+sP&8 zX45e8RdDghwH4vPUOv7wO-l%SA$>?or~zQo*lv zJ$VgX7r=QD4V+YMuCtteSvr?&ibiFp#RvQmVR{*lKpEqU46{UmbPV6BKEIcLPj&OA z#5hMeK2MWRz#nLbzej$w-sSJrXFq+IExyS1bQ{3}v_XCcaqvQP1klSk zu1wk9xjAhAi{@Ph#eQPQt~EYUv67X0wk;eB-Y`1;Z%t&{4VHrL*mk=|fC%v!4VV_R ITm=#M9|uRWA^-pY diff --git a/external/lsquic/docs/tutorial.rst b/external/lsquic/docs/tutorial.rst deleted file mode 100644 index 1bcba03..0000000 --- a/external/lsquic/docs/tutorial.rst +++ /dev/null @@ -1,1207 +0,0 @@ -******** -Tutorial -******** - -Code for this tutorial is available on `GitHub `_. - -.. highlight:: c - -Introduction -============ - -The LSQUIC library provides facilities for operating a QUIC (Google QUIC -or IETF QUIC) server or client with optional HTTP (or HTTP/3) functionality. -To do that, it specifies an application programming interface (API) and -exposes several basic object types to operate upon: - -- engine; -- connection; and -- stream. - -Engine ------- - -An engine manages connections, processes incoming packets, and schedules outgoing packets. It can be instantiated in either server or client mode. If your program needs to have both QUIC client and server functionality, instantiate two engines. (This is what we do in our LiteSpeed ADC server.) -In addition, HTTP mode can be turned on for gQUIC and HTTP/3 support. - -Connection ----------- - -A connection carries one or more streams, ensures reliable data delivery, and handles the protocol details. -In client mode, a connection is created using a function call, which we will cover later in the tutorial. -In server mode, by the time the user code gets a hold of the connection object, the handshake has already been completed successfully. This is not the case in client mode. - -Stream ------- - -A connection can have several streams in parallel and many streams during its lifetime. -Streams do not exist by themselves; they belong to a connection. Streams are bidirectional and usually correspond to a request/response exchange - depending on the application protocol. -Application data is transmitted over streams. - -HTTP Mode ---------- - -The HTTP support is included directly into LSQUIC. The library hides the interaction between the HTTP application layer and the QUIC transport layer and presents a simple, unified way of sending and receiving HTTP messages. (By "unified way," we mean between Google QUIC and HTTP/3). Behind the scenes, the library will compress and decompress HTTP headers, add and remove HTTP/3 stream framing, and operate the necessary control streams. - -In the following sections, we will describe how to: - -- initialize the library; -- configure and instantiate an engine object; -- send and receive packets; and -- work with connections and streams. - -Include Files -------------- - -In your source files, you need to include a single header, "lsquic.h". -It pulls in an auxiliary file "lsquic_types.h". - -:: - - #include "lsquic.h" - -Library Initialization -====================== - -Before the first engine object is instantiated, the library must be -initialized using :func:`lsquic_global_init()`: - -:: - - if (0 != lsquic_global_init(LSQUIC_GLOBAL_CLIENT|LSQUIC_GLOBAL_SERVER)) - { - exit(EXIT_FAILURE); - } - /* OK, do something useful */ - -This will initialize the crypto library, gQUIC server certificate cache, and, depending on the platform, monotonic timers. -If you plan to instantiate engines only in a single mode, client or server, -you can omit the appropriate flag. - -After all engines have been destroyed and the LSQUIC library is no longer -going to be used, the global initialization can be undone: - -:: - - lsquic_global_cleanup(); - exit(EXIT_SUCCESS); - -Engine Instantiation -==================== - -Engine instantiation is performed by :func:`lsquic_engine_new()`: - -:: - - /* Create an engine in server mode with HTTP behavior: */ - lsquic_engine_t *engine - = lsquic_engine_new(LSENG_SERVER|LSENG_HTTP, &engine_api); - -The engine mode is selected by using the :macro:`LSENG_SERVER` flag. -If present, the engine will be in server mode; if not, the engine will -be in client mode. If you need both server and client functionality -in your program, instantiate two engines (or as many as you like). - -Using the :macro:`LSENG_HTTP` flag enables the HTTP behavior: The library -hides the interaction between the HTTP application layer and the QUIC -transport layer and presents a simple, unified (between Google QUIC and -HTTP/3) way of sending and receiving HTTP messages. Behind the scenes, -the library will compress and uncompress HTTP headers, add and remove -HTTP/3 stream framing, and operate the necessary control streams. - -Engine Configuration --------------------- - -The second argument to :func:`lsquic_engine_new()` is a pointer to -a struct of type :type:`lsquic_engine_api`. This structure lists -several user-specified function pointers that the engine is to use -to perform various functions. Mandatory among these are: - -- function to send packets out, :member:`lsquic_engine_api.ea_packets_out`; -- functions linked to connection and stream events, - :member:`lsquic_engine_api.ea_stream_if`; -- function to look up certificate to use, :member:`lsquic_engine_api.ea_lookup_cert` (in server mode); and -- function to fetch SSL context, :member:`lsquic_engine_api.ea_get_ssl_ctx` (optional in client mode). - -The minimal structure for a client will look like this: - -:: - - lsquic_engine_api engine_api = { - .ea_packets_out = send_packets_out, - .ea_packets_out_ctx = (void *) sockfd, /* For example */ - .ea_stream_if = &stream_callbacks, - .ea_stream_if_ctx = &some_context, - }; - -Engine Settings ---------------- - -Engine settings can be changed by specifying -:member:`lsquic_engine_api.ea_settings`. There are **many** parameters -to tweak: supported QUIC versions, amount of memory dedicated to connections -and streams, various timeout values, and so on. See -:ref:`apiref-engine-settings` for full details. If ``ea_settings`` is set -to ``NULL``, the engine will use the defaults, which should be OK. - - -Receiving Packets -================= - -UDP datagrams are passed to the engine using the :func:`lsquic_engine_packet_in()` function. This is the only way to do so. -A pointer to the UDP payload is passed along with the size of the payload. -Local and peer socket addresses are passed in as well. -The void "peer ctx" pointer is associated with the peer address. It gets passed to the function that sends outgoing packets and to a few other callbacks. In a standard setup, this is most likely the socket file descriptor, but it could be pointing to something else. -The ECN value is in the range of 0 through 3, as in RFC 3168. - -:: - - /* 0: processed by real connection - * 1: handled - * -1: error: invalid arguments, malloc failure - */ - int - lsquic_engine_packet_in (lsquic_engine_t *, - const unsigned char *udp_payload, size_t sz, - const struct sockaddr *sa_local, - const struct sockaddr *sa_peer, - void *peer_ctx, int ecn); - -Why specify local address -------------------------- - -The local address is necessary because it becomes the source address of the outgoing packets. This is important in a multihomed configuration, when packets arriving at a socket can have different destination addresses. Changes in local and peer addresses are also used to detect changes in paths, such as path migration during the classic "parking lot" scenario or NAT rebinding. When path change is detected, QUIC connection performs special steps to validate the new path. - -Sending Packets -=============== - -The :member:`lsquic_engine_api.ea_packets_out` is the function that gets -called when an engine instance has packets to send. It could look like -this: - -:: - - /* Return number of packets sent or -1 on error */ - static int - send_packets_out (void *ctx, const struct lsquic_out_spec *specs, - unsigned n_specs) - { - struct msghdr msg; - int sockfd; - unsigned n; - - memset(&msg, 0, sizeof(msg)); - sockfd = (int) (uintptr_t) ctx; - - for (n = 0; n < n_specs; ++n) - { - msg.msg_name = (void *) specs[n].dest_sa; - msg.msg_namelen = sizeof(struct sockaddr_in); - msg.msg_iov = specs[n].iov; - msg.msg_iovlen = specs[n].iovlen; - if (sendmsg(sockfd, &msg, 0) < 0) - break; - } - - return (int) n; - } - -Note that the version above is very simple: it does not use local -address and ECN value specified in :type:`lsquic_out_spec`. -These can be set using ancillary data in a platform-dependent way. - -When an error occurs --------------------- - -When an error occurs, the value of ``errno`` is examined: - -- ``EAGAIN`` (or ``EWOULDBLOCK``) means that the packets could not be sent and to retry later. It is up to the caller to call :func:`lsquic_engine_send_unsent_packets()` when sending can resume. -- ``EMSGSIZE`` means that a packet was too large. This occurs when lsquic send MTU probes. In that case, the engine will retry sending without the offending packet immediately. -- Any other error causes the connection whose packet could not be sent to be terminated. - -Outgoing Packet Specification ------------------------------ - -:: - - struct lsquic_out_spec - { - struct iovec *iov; - size_t iovlen; - const struct sockaddr *local_sa; - const struct sockaddr *dest_sa; - void *peer_ctx; - int ecn; /* 0 - 3; see RFC 3168 */ - }; - - -Each packet specification in the array given to the "packets out" function looks like this. In addition to the packet payload, specified via an iovec, the specification contains local and remote addresses, the peer context associated with the connection (which is just a file descriptor in tut.c), and ECN. -The reason for using iovec in the specification is that a UDP datagram may contain several QUIC packets. QUIC packets with long headers, which are used during QUIC handshake, can be coalesced and lsquic tries to do that to reduce the number of datagrams needed to be sent. On the incoming side, :func:`lsquic_engine_packet_in()` takes care of splitting incoming UDP datagrams into individual packets. - -When to process connections -=========================== - -Now that we covered how to initialize the library, instantiate an engine, and send and receive packets, it is time to see how to make the engine tick. "LSQUIC" has the concept of "tick," which is a way to describe a connection doing something productive. Other verbs could have been "kick," "prod," "poke," and so on, but we settled on "tick." - -There are several ways for a connection to do something productive. When a connection can do any of these things, it is "tickable:" - -- There are incoming packets to process -- A user wants to read from a stream and there is data that can be read -- A user wants to write to a stream and the stream is writeable -- A stream has buffered packets generated when a user has written to stream outside of the regular callback mechanism. (This is allowed as an optimization: sometimes data becomes available and it's faster to just write to stream than to buffer it in the user code and wait for the "on write" callback.) -- Internal QUIC protocol or LSQUIC maintenance actions need to be taken, such as sending out a control frame or recycling a stream. - -:: - - /* Returns true if there are connections to be processed, in - * which case `diff' is set to microseconds from current time. - */ - int - lsquic_engine_earliest_adv_tick (lsquic_engine_t *, int *diff); - -There is a single function, -:func:`lsquic_engine_earliest_adv_tick()`, that can tell the user whether and when there is at least one connection managed by an engine that needs to be ticked. "Adv" in the name of the function stands for "advisory," meaning that you do not have to process connections at that exact moment; it is simply recommended. If there is a connection to be ticked, the function will return a true value and ``diff`` will be set to a relative time to when the connection is to be ticked. This value may be negative, which means that the best time to tick the connection has passed. -The engine keeps all connections in several data structures. It tracks each connection's timers and knows when it needs to fire. - -Example with libev ------------------- - -:: - - void - process_conns (struct tut *tut) - { - ev_tstamp timeout; - int diff; - ev_timer_stop(); - lsquic_engine_process_conns(engine); - if (lsquic_engine_earliest_adv_tick(engine, &diff) { - if (diff > 0) - timeout = (ev_tstamp) diff / 1000000; /* To seconds */ - else - timeout = 0.; - ev_timer_init(timeout) - ev_timer_start(); - } - } - -Here is a simple example that uses the libev library. First, we stop the timer and process connections. Then, we query the engine to tell us when the next advisory tick time is. Based on that, we calculate the timeout to reinitialize the timer with and start the timer. -If ``diff`` is negative, we set timeout to zero. -When the timer expires (not shown here), it simply calls this ``process_conns()`` again. - -Note that one could ignore the advisory tick time and simply process connections every few milliseconds and it will still work. This, however, will result in worse performance. - -Processing Connections ----------------------- - -Recap: -To process connections, call :func:`lsquic_engine_process_conns()`. -This will call necessary callbacks to read from and write to streams -and send packets out. Call `lsquic_engine_process_conns()` when advised -by `lsquic_engine_earliest_adv_tick()`. - -Do not call `lsquic_engine_process_conns()` from inside callbacks, for -this function is not reentrant. - -Another function that sends packets is -:func:`lsquic_engine_send_unsent_packets()`. Call it if there was a -previous failure to send out all packets - -Required Engine Callbacks -========================= - -Now we continue to initialize our engine instance. We have covered the callback to send out packets. This is one of the required engine callbacks. -Other required engine callbacks are a set of stream and connection callbacks that get called on various events in then connections and stream lifecycles and a callback to get the default TLS context. - -:: - - struct lsquic_engine_api engine_api = { - /* --- 8< --- snip --- 8< --- */ - .ea_stream_if = &stream_callbacks, - .ea_stream_if_ctx = &some_context, - .ea_get_ssl_ctx = get_ssl_ctx, - }; - - -Optional Callbacks ------------------- - -Here we mention some optional callbacks. While they are not covered by -this tutorial, it is good to know that they are available. - -- Looking up certificate and TLS context by SNI. -- Callbacks to control memory allocation for outgoing packets. These are useful when sending packets using a custom library. For example, when all packets must be in contiguous memory. -- Callbacks to observe connection ID lifecycle. These are useful in multi-process applications. -- Callbacks that provide access to a shared-memory hash. This is also used in multi-process applications. -- HTTP header set processing. These callbacks may be used in HTTP mode for HTTP/3 and Google QUIC. - -Please refer to :ref:`apiref-engine-settings` for details. - -Stream and connection callbacks -=============================== - -Stream and connection callbacks are the way that the library communicates with user code. Some of these callbacks are mandatory; others are optional. -They are all collected in :type:`lsquic_stream_if` ("if" here stands -for "interface"). -The mandatory callbacks include calls when connections and streams are created and destroyed and callbacks when streams can be read from or written to. -The optional callbacks are used to observe some events in the connection lifecycle, such as being informed when handshake has succeeded (or failed) or when a goaway signal is received from peer. - -:: - - struct lsquic_stream_if - { - /* Mandatory callbacks: */ - lsquic_conn_ctx_t *(*on_new_conn)(void *stream_if_ctx, - lsquic_conn_t *c); - void (*on_conn_closed)(lsquic_conn_t *c); - lsquic_stream_ctx_t * - (*on_new_stream)(void *stream_if_ctx, lsquic_stream_t *s); - void (*on_read) (lsquic_stream_t *s, lsquic_stream_ctx_t *h); - void (*on_write) (lsquic_stream_t *s, lsquic_stream_ctx_t *h); - void (*on_close) (lsquic_stream_t *s, lsquic_stream_ctx_t *h); - - /* Optional callbacks: */ - void (*on_goaway_received)(lsquic_conn_t *c); - void (*on_hsk_done)(lsquic_conn_t *c, enum lsquic_hsk_status s); - void (*on_new_token)(lsquic_conn_t *c, const unsigned char *token, - void (*on_sess_resume_info)(lsquic_conn_t *c, const unsigned char *, size_t); - }; - -On new connection ------------------ - -When a connection object is created, the "on new connection" callback is called. In server mode, the handshake is already known to have succeeded; in client mode, the connection object is created before the handshake is attempted. The client can tell when handshake succeeds or fails by relying on the optional "handshake is done" callback or the "on connection close" callback. - -:: - - /* Return pointer to per-connection context. OK to return NULL. */ - static lsquic_conn_ctx_t * - my_on_new_conn (void *ea_stream_if_ctx, lsquic_conn_t *conn) - { - struct some_context *ctx = ea_stream_if_ctx; - struct my_conn_ctx *my_ctx = my_ctx_new(ctx); - if (ctx->is_client) - /* Need a stream to send request */ - lsquic_conn_make_stream(conn); - return (void *) my_ctx; - } - -In the made-up example above, a new per-connection context is allocated and returned. This context is then associated with the connection and can be retrieved using a dedicated function. Note that it is OK to return a ``NULL`` pointer. -Note that in client mode, this is a good place to request that the connection make a new stream by calling :func:`lsquic_conn_make_stream()`. The connection will create a new stream when handshake succeeds. - -On new stream -------------- - -QUIC allows either endpoint to create streams and send and receive data on them. There are unidirectional and bidirectional streams. Thus, there are four stream types. In our tutorial, however, we use the familiar paradigm of the client sending requests to the server using bidirectional stream. - -On the server, new streams are created when client requests arrive. On the client, streams are created when possible after the user code has requested stream creation by calling :func:`lsquic_conn_make_stream()`. - -:: - - /* Return pointer to per-connection context. OK to return NULL. */ - static lsquic_stream_ctx_t * - my_on_new_stream (void *ea_stream_if_ctx, lsquic_stream_t *stream) { - struct some_context *ctx = ea_stream_if_ctx; - /* Associate some data with this stream: */ - struct my_stream_ctx *stream_ctx - = my_stream_ctx_new(ea_stream_if_ctx); - stream_ctx->stream = stream; - if (ctx->is_client) - lsquic_stream_wantwrite(stream, 1); - return (void *) stream_ctx; - } - -In a pattern similar to the "on new connection" callback, a per-stream context can be created at this time. The function returns this context and other stream callbacks - "on read," "on write," and "on close" - will be passed a pointer to it. As before, it is OK to return ``NULL``. -You can register an interest in reading from or writing to the stream by using a "want read" or "want write" function. Alternatively, you can simply read or write; be prepared that this may fail and you have to try again in the "regular way." We talk about that next. - -On read -------- - -When the "on read" callback is called, there is data to be read from stream, end-of-stream has been reached, or there is an error. - -:: - - static void - my_on_read (lsquic_stream_t *stream, lsquic_stream_ctx_t *h) { - struct my_stream_ctx *my_stream_ctx = (void *) h; - unsigned char buf[BUFSZ]; - - ssize_t nr = lsquic_stream_read(stream, buf, sizeof(buf)); - /* Do something with the data.... */ - if (nr == 0) /* EOF */ { - lsquic_stream_shutdown(stream, 0); - lsquic_stream_wantwrite(stream, 1); /* Want to reply */ - } - } - -To read the data or to collect the error, call :func:`lsquic_stream_read`. If a negative value is returned, examine ``errno``. If it is not ``EWOULDBLOCK``, then an error has occurred, and you should close the stream. Here, an error means an application error, such as peer resetting the stream. A protocol error or an internal library error (such as memory allocation failure) lead to the connection being closed outright. -To reiterate, the "on read" callback is called only when the user has registered interest in reading from the stream. - -On write --------- - -The "on write" callback is called when the stream can be written to. At this point, you should be able to write at least a byte to the stream. -As with the "on read" callback, for this callback to be called, the user must have registered interest in writing to stream using :func:`lsquic_stream_wantwrite()`. - - -:: - - static void - my_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *h) { - struct my_stream_ctx *my_stream_ctx = (void *) h; - ssize_t nw = lsquic_stream_write(stream, - my_stream_ctx->resp, my_stream_ctx->resp_sz); - if (nw == my_stream_ctx->resp_sz) - lsquic_stream_close(stream); - } - -By default, "on read" and "on write" callbacks will be called in a loop as long as there is data to read or the stream can be written to. If you are done reading from or writing to stream, you should either shut down the appropriate end, close the stream, or unregister your interest. The library implements a circuit breaker to stop would-be infinite loops when no reading or writing progress is made. Both loop dispatch and the circuit breaker are configurable (see :member:`lsquic_engine_settings.es_progress_check` and :member:`lsquic_engine_settings.es_rw_once`). - -On stream close ---------------- - -When reading and writing ends of the stream have been closed, the "on close" callback is called. After this function returns, pointers to the stream become invalid. (The library destroys the stream object when it deems proper.) -This is a good place to perform necessary cleanup. - -:: - - static void - my_on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *h) { - lsquic_conn_t *conn = lsquic_stream_conn(stream); - struct my_conn_ctx *my_ctx = lsquic_conn_get_ctx(conn); - if (!has_more_reqs_to_send(my_ctx)) /* For example */ - lsquic_conn_close(conn); - free(h); - } - -In the made-up example above, we free the per-stream context allocated in the "on new stream" callback and we may close the connection. - -On connection close -------------------- - -When either :func:`lsquic_conn_close()` has been called; or the peer has closed the connection; or an error has occurred, the "on connection close" callback is called. At this point, it is time to free the per-connection context, if any. - -:: - - static void - my_on_conn_closed (lsquic_conn_t *conn) { - struct my_conn_ctx *my_ctx = lsquic_conn_get_ctx(conn); - struct some_context *ctx = my_ctx->some_context; - - --ctx->n_conns; - if (0 == ctx->n_conn && (ctx->flags & CLOSING)) - exit_event_loop(ctx); - - free(my_ctx); - } - -In the example above, you see the call to :func:`lsquic_conn_get_ctx()`. This returns the pointer returned by the "on new connection" callback. - -Using Streams -============= - -To reduce buffering, most of the time bytes written to stream are written into packets directly. Bytes are buffered in the stream until a full packet can be created. Alternatively, one could flush the data by calling :func:`lsquic_stream_flush`. -It is impossible to write more data than the congestion window. This prevents excessive buffering inside the library. -Inside the "on read" and "on write" callbacks, reading and writing should succeed. The exception is error collection inside the "on read" callback. -Outside of the callbacks, be ready to handle errors. For reading, it is -1 with ``EWOULDBLOCK`` errno. For writing, it is the return value of 0. - -More stream functions ---------------------- - -Here are a few more useful stream functions. - -:: - - /* Flush any buffered data. This triggers packetizing even a single - * byte into a separate frame. - */ - int - lsquic_stream_flush (lsquic_stream_t *); - - /* Possible values for how are 0, 1, and 2. See shutdown(2). */ - int - lsquic_stream_shutdown (lsquic_stream_t *, int how); - - int - lsquic_stream_close (lsquic_stream_t *); - -As mentioned before, calling :func:`lsquic_stream_flush()` will cause the stream to packetize the buffered data. Note that it may not happen immediately, as there may be higher-priority writes pending or there may not be sufficient congestion window to do so. Calling "flush" only schedules writing to packets. - -:func:`lsquic_stream_shutdown()` and :func:`lsquic_stream_close()` mimic the interface of the "shutdown" and "close" socket functions. After both read and write ends of a stream are closed, the "on stream close" callback will soon be called. - -Stream return values --------------------- - -The stream read and write functions are modeled on the standard UNIX read and write functions, including the use of the ``errno``. The most important of these error codes are ``EWOULDBLOCK`` and ``ECONNRESET`` because you may encounter these even if you structure your code correctly. Other errors typically occur when the user code does something unexpected. - -Return value of 0 is different for reads and writes. For reads, it means that EOF has been reached and you need to stop reading from the stream. For writes, it means that you should try writing later. - -If writing to stream returns an error, it may mean an internal error. If the error is not recoverable, the library will abort the connection; if it is recoverable (the only recoverable error is failure to allocate memory), attempting to write later may succeed. - -Scatter/gather stream functions -------------------------------- - -There is the scatter/gather way to read from and write to stream and the interface is similar to the usual "readv" and "writev" functions. All return values and error codes are the same as in the stream read and write functions we have just discussed. Those are actually just wrappers around the scatter/gather versions. - -:: - - ssize_t - lsquic_stream_readv (lsquic_stream_t *, const struct iovec *, - int iovcnt); - ssize_t - lsquic_stream_writev (lsquic_stream_t *, const struct iovec *, - int count); - -Read using a callback ---------------------- - -The scatter/gather functions themselves are also wrappers. LSQUIC provides stream functions that skip intermediate buffering. They are used for zero-copy stream processing. - -:: - - ssize_t - lsquic_stream_readf (lsquic_stream_t *, - size_t (*readf)(void *ctx, const unsigned char *, size_t len, int fin), - void *ctx); - - -The second argument to :func:`lsquic_stream_readf()` is a callback that -returns the number of bytes processed. The callback is passed: - -- Pointer to user-supplied context; -- Pointer to the data; -- Data size (can be zero); and -- Indicator whether the FIN follows the data. - -If callback returns 0 or value smaller than `len`, reading stops. - -Read with callback: Example 1 ------------------------------ - -Here is the first example of reading from stream using a callback. Now the process of reading from stream -is split into two functions. - -:: - - static void - tut_client_on_read_v1 (lsquic_stream_t *stream, lsquic_stream_ctx_t *h) - { - struct tut *tut = (struct tut *) h; - size_t nread = lsquic_stream_readf(stream, tut_client_readf_v1, NULL); - if (nread == 0) - { - LOG("read to end-of-stream: close and read from stdin again"); - lsquic_stream_shutdown(stream, 0); - ev_io_start(tut->tut_loop, &tut->tut_u.c.stdin_w); - } - /* ... */ - } - -Here, we see the :func:`lsquic_stream_readf()` call. The return value is the same as the other read functions. -Because in this example there is no extra information to pass to the callback (we simply print data to stdout), -the third argument is NULL. - -:: - - static size_t - tut_client_readf_v1 (void *ctx, const unsigned char *data, - size_t len, int fin) - { - if (len) - { - fwrite(data, 1, len, stdout); - fflush(stdout); - } - return len; - } - -Here is the callback itself. You can see it is very simple. If there is data to be processed, -it is printed to stdout. - -Note that the data size (``len`` above) can be anything. It is not limited by UDP datagram size. This is because when incoming STREAM frames pass some fragmentation threshold, LSQUIC begins to copy incoming STREAM data to a data structure that is impervious to stream fragmentation attacks. Thus, it is possible for the callback to pass a pointer to data that is over 3KB in size. The implementation may change, so again, no guarantees. -When the fourth argument, ``fin``, is true, this indicates that the incoming data ends after ``len`` bytes have been read. - -Read with callback: Example 2: Use FIN --------------------------------------- - -The FIN indicator passed to the callback gives us yet another way to detect end-of-stream. -The previous version checked the return value of :func:`lsquic_stream_readf()` to check for EOS. -Instead, we can use ``fin`` in the callback. - -The second zero-copy read example is a little more efficient as it saves us -an extra call to ``tut_client_on_read_v2``. -Here, we package pointers to the tut struct and stream into a special struct and pass it to -``lsquic_stream_readf()``. - -:: - - struct client_read_v2_ctx { struct tut *tut; lsquic_stream_t *stream; }; - - static void - tut_client_on_read_v2 (lsquic_stream_t *stream, - lsquic_stream_ctx_t *h) - { - struct tut *tut = (struct tut *) h; - struct client_read_v2_ctx v2ctx = { tut, stream, }; - ssize_t nread = lsquic_stream_readf(stream, tut_client_readf_v2, - &v2ctx); - if (nread < 0) - /* ERROR */ - } - -Now the callback becomes more complicated, as we moved the logic to stop reading from stream into it. We need pointer to both stream and user context when "fin" is true. In that case, we call :func:`lsquic_stream_shutdown()` and begin reading from stdin again to grab the next line of input. - -:: - - static size_t - tut_client_readf_v2 (void *ctx, const unsigned char *data, - size_t len, int fin) - { - struct client_read_v2_ctx *v2ctx = ctx; - if (len) - fwrite(data, 1, len, stdout); - if (fin) - { - fflush(stdout); - LOG("read to end-of-stream: close and read from stdin again"); - lsquic_stream_shutdown(v2ctx->stream, 0); - ev_io_start(v2ctx->tut->tut_loop, &v2ctx->tut->tut_u.c.stdin_w); - } - return len; - } - -Writing to stream: Example 1 ----------------------------- - -Now let's consider writing to stream. - -:: - - static void - tut_server_on_write_v0 (lsquic_stream_t *stream, lsquic_stream_ctx_t *h) - { - struct tut_server_stream_ctx *const tssc = (void *) h; - ssize_t nw = lsquic_stream_write(stream, - tssc->tssc_buf + tssc->tssc_off, tssc->tssc_sz - tssc->tssc_off); - if (nw > 0) - { - tssc->tssc_off += nw; - if (tssc->tssc_off == tssc->tssc_sz) - lsquic_stream_close(stream); - /* ... */ - } - -Here, we call :func:`lsquic_stream_write()` directly. If writing succeeds and we reached the -end of the buffer we wanted to write, we close the stream. - -Write using callbacks ---------------------- - -To write using a callback, we need to use :func:`lsquic_stream_writef()`. - -:: - - struct lsquic_reader { - /* Return number of bytes written to buf */ - size_t (*lsqr_read) (void *lsqr_ctx, void *buf, size_t count); - /* Return number of bytes remaining in the reader. */ - size_t (*lsqr_size) (void *lsqr_ctx); - void *lsqr_ctx; - }; - - /* Return umber of bytes written or -1 on error. */ - ssize_t - lsquic_stream_writef (lsquic_stream_t *, struct lsquic_reader *); - -We must specify not only the function that will perform the copy, but also the function that will return the number of bytes remaining. This is useful in situations where the size of the data source may change. For example, an underlying file may change size. -The :member:`lsquic_reader.lsqr_read` callback will be called in a loop until stream can write no more or until :member:`lsquic_reader.lsqr_size` returns zero. -The return value of ``lsquic_stream_writef`` is the same as :func:`lsquic_stream_write()` and :func:`lsquic_stream_writev()`, which are just wrappers around the "writef" version. - -Writing to stream: Example 2 ----------------------------- - -Here is the second version of the "on write" callback. It uses :func:`lsquic_stream_writef()`. - -:: - - static void - tut_server_on_write_v1 (lsquic_stream_t *stream, lsquic_stream_ctx_t *h) - { - struct tut_server_stream_ctx *const tssc = (void *) h; - struct lsquic_reader reader = { tssc_read, tssc_size, tssc, }; - ssize_t nw = lsquic_stream_writef(stream, &reader); - if (nw > 0 && tssc->tssc_off == tssc->tssc_sz) - lsquic_stream_close(stream); - /* ... */ - } - - -The reader struct is initialized with pointers to read and size functions and this struct is passed -to the "writef" function. - -:: - - static size_t - tssc_size (void *ctx) - { - struct tut_server_stream_ctx *tssc = ctx; - return tssc->tssc_sz - tssc->tssc_off; - } - - -The size callback simply returns the number of bytes left. - -:: - - static size_t - tssc_read (void *ctx, void *buf, size_t count) - { - struct tut_server_stream_ctx *tssc = ctx; - - if (count > tssc->tssc_sz - tssc->tssc_off) - count = tssc->tssc_sz - tssc->tssc_off; - memcpy(buf, tssc->tssc_buf + tssc->tssc_off, count); - tssc->tssc_off += count; - return count; - } - - -The read callback (so called because you *read* data from the source) writes no more than ``count`` bytes -to memory location pointed by ``buf`` and returns the number of bytes copied. -In our case, ``count`` is never larger than the number of bytes still left to write. -This is because the caller - the LSQUIC library - gets the value of ``count`` from the ``lsqr_size()`` callback. When reading from a file descriptor, on the other hand, this can very well happen that you don't have as much data to write as you thought you had. - -Client: making connection -========================= - -We now switch our attention to making a QUIC connection. The function :func:`lsquic_engine_connect()` does that. This function has twelve arguments. (These arguments have accreted over time.) - -:: - - lsquic_conn_t * - lsquic_engine_connect (lsquic_engine_t *, - enum lsquic_version, /* Set to N_LSQVER for default */ - const struct sockaddr *local_sa, - const struct sockaddr *peer_sa, - void *peer_ctx, - lsquic_conn_ctx_t *conn_ctx, - const char *hostname, /* Used for SNI */ - unsigned short base_plpmtu, /* 0 means default */ - const unsigned char *sess_resume, size_t sess_resume_len, - const unsigned char *token, size_t token_sz); - -- The first argument is the pointer to the engine instance. -- The second argument is the QUIC version to use. -- The third and fourth arguments specify local and destination addresses, respectively. -- The fifth argument is the so-called "peer context." -- The sixth argument is the connection context. This is used if you need to pass a pointer to the "on new connection" callback. This context is overwritten by the return value of the "on new connection" callback. -- The argument "hostname," which is the seventh argument, is used for SNI. This argument is optional, just as the rest of the arguments that follow. -- The eighth argument is the initial maximum size of the UDP payload. This will be the base PLPMTU if DPLPMTUD is enabled. Specifying zero, or default, is the safe way to go: lsquic will pick a good starting value. -- The next two arguments allow one to specify a session resumption information to establish a connection faster. In the case of IETF QUIC, this is the TLS Session Ticket. To get this ticket, specify the :member:`lsquic_stream_if.on_sess_resume_info` callback. -- The last pair of arguments is for specifying a token to try to prevent a potential stateless retry from the server. The token is learned in a previous session. See the optional callback :member:`lsquic_stream_if.on_new_token`. - -:: - - tut.tut_u.c.conn = lsquic_engine_connect( - tut.tut_engine, N_LSQVER, - (struct sockaddr *) &tut.tut_local_sas, &addr.sa, - (void *) (uintptr_t) tut.tut_sock_fd, /* Peer ctx */ - NULL, NULL, 0, NULL, 0, NULL, 0); - if (!tut.tut_u.c.conn) - { - LOG("cannot create connection"); - exit(EXIT_FAILURE); - } - tut_process_conns(&tut); - -Here is an example from a tutorial program. The connect call is a lot less intimidating in real life, as half the arguments are set to zero. -We pass a pointer to the engine instance, N_LSQVER to let the engine pick the version to use and the two socket addresses. -The peer context is simply the socket file descriptor cast to a pointer. -This is what is passed to the "send packets out" callback. - -Specifying QUIC version -======================= - -QUIC versions in LSQUIC are gathered in an enum, :type:`lsquic_version`, and have an arbitrary value. - -:: - - enum lsquic_version { - LSQVER_043, LSQVER_046, LSQVER_050, /* Google QUIC */ - LSQVER_ID27, LSQVER_ID28, LSQVER_ID29, /* IETF QUIC */ - /* ...some special entries skipped */ - N_LSQVER /* <====================== Special value */ - }; - -The special value "N_LSQVER" is used to let the engine pick the QUIC version. -It picks the latest non-experimental version, so in this case it picks ID-29. -(Experimental from the point of view of the library.) - -Because version enum values are small -- and that is by design -- a list of -versions can be passed around as bitmasks. - -:: - - /* This allows list of versions to be specified as bitmask: */ - es_versions = (1 << LSQVER_ID28) | (1 << LSQVER_ID29); - -This is done, for example, when -specifying list of versions to enable in engine settings using :member:`lsquic_engine_api.ea_versions`. -There are a couple of more places in the API where this technique is used. - -Server callbacks -================ - -The server requires SSL callbacks to be present. The basic required callback is :member:`lsquic_engine_api.ea_get_ssl_ctx`. It is used to get a pointer to an initialized ``SSL_CTX``. - -:: - - typedef struct ssl_ctx_st * (*lsquic_lookup_cert_f)( - void *lsquic_cert_lookup_ctx, const struct sockaddr *local, - const char *sni); - - struct lsquic_engine_api { - lsquic_lookup_cert_f ea_lookup_cert; - void *ea_cert_lu_ctx; - struct ssl_ctx_st * (*ea_get_ssl_ctx)(void *peer_ctx, - const struct sockaddr *local); - /* (Other members of the struct are not shown) */ - }; - -In case SNI is used, LSQUIC will call :member:`lsquic_engine_api.ea_lookup_cert`. -For example, SNI is required in HTTP/3. -In `our web server`_, each virtual host has its own SSL context. Note that besides the SNI string, the callback is also given the local socket address. This makes it possible to implement a flexible lookup mechanism. - -Engine settings -=============== - -Besides the engine API struct passed to the engine constructor, there is also an engine settings struct, :type:`lsquic_engine_settings`. :member:`lsquic_engine_api.ea_settings` in the engine API struct -can be pointed to a custom settings struct. By default, this pointer is ``NULL``. -In that case, the engine uses default settings. - -There are many settings, controlling everything from flow control windows to the number of times an "on read" callback can be called in a loop before it is deemed an infinite loop and the circuit breaker is tripped. To make changing default settings values easier, the library provides functions to initialize the settings struct to defaults and then to check these values for sanity. - -Settings helper functions -------------------------- - -:: - - /* Initialize `settings' to default values */ - void - lsquic_engine_init_settings (struct lsquic_engine_settings *, - /* Bitmask of LSENG_SERVER and LSENG_HTTP */ - unsigned lsquic_engine_flags); - - /* Check settings for errors, return 0 on success, -1 on failure. */ - int - lsquic_engine_check_settings (const struct lsquic_engine_settings *, - unsigned lsquic_engine_flags, - /* Optional, can be NULL: */ - char *err_buf, size_t err_buf_sz); - -The first function is :func:`lsquic_engine_init_settings()`, which does just that. -The second argument is a bitmask to specify whether the engine is in server mode -and whether HTTP mode is turned on. These should be the same flags as those -passed to the engine constructor. - -Once you have initialized the settings struct in this manner, change the setting -or settings you want and then call :func:`lsquic_engine_check_settings()`. The -first two arguments are the same as in the initializer. The third and fourth -argument are used to pass a pointer to a buffer into which a human-readable error -string can be placed. - -The checker function does only the basic sanity checks. If you really set out -to misconfigure LSQUIC, you can. On the bright side, each setting is clearly -documented (see :ref:`apiref-engine-settings`). Most settings are standalone; -when there is interplay between them, it is also documented. -Test before deploying! - -Settings example ----------------- - -The example is adapted from a tutorial program. Here, command-line options -are processed and appropriate options is set. The first time the ``-o`` -flag is encountered, the settings struct is initialized. Then the argument -is parsed to see which setting to alter. - -:: - - while (/* getopt */) - { - case 'o': /* For example: -o version=h3-27 -o cc_algo=2 */ - if (!settings_initialized) { - lsquic_engine_init_settings(&settings, - cert_file || key_file ? LSENG_SERVER : 0); - settings_initialized = 1; - } - /* ... */ - else if (0 == strncmp(optarg, "cc_algo=", val - optarg)) - settings.es_cc_algo = atoi(val); - /* ... */ - } - - /* Check settings */ - if (0 != lsquic_engine_check_settings(&settings, - tut.tut_flags & TUT_SERVER ? LSENG_SERVER : 0, - errbuf, sizeof(errbuf))) - { - LOG("invalid settings: %s", errbuf); - exit(EXIT_FAILURE); - } - - /* ... */ - eapi.ea_settings = &settings; - -After option processing is completed, the settings are checked. The error -buffer is used to log a configuration error. - -Finally, the settings struct is pointed to by the engine API struct before -the engine constructor is called. - -Logging -======= - -LSQUIC provides a simple logging interface using a single callback function. -By default, no messages are logged. This can be changed by calling :func:`lsquic_logger_init()`. -This will set a library-wide logger callback function. - -:: - - void lsquic_logger_init(const struct lsquic_logger_if *, - void *logger_ctx, enum lsquic_logger_timestamp_style); - - struct lsquic_logger_if { - int (*log_buf)(void *logger_ctx, const char *buf, size_t len); - }; - - enum lsquic_logger_timestamp_style { LLTS_NONE, LLTS_HHMMSSMS, - LLTS_YYYYMMDD_HHMMSSMS, LLTS_CHROMELIKE, LLTS_HHMMSSUS, - LLTS_YYYYMMDD_HHMMSSUS, N_LLTS }; - -You can instruct the library to generate a timestamp and include it as part of the message. -Several timestamp formats are available. Some display microseconds, some do not; some -display the date, some do not. One of the most useful formats is "chromelike," -which matches the somewhat weird timestamp format used by Chromium. This makes it easy to -compare the two logs side by side. - -There are eight log levels in LSQUIC: debug, info, notice, warning, error, alert, emerg, -and crit. -These correspond to the usual log levels. (For example, see ``syslog(3)``). Of these, only five are used: debug, info, notice, warning, and error. Usually, warning and error messages are printed when there is a bug in the library or something very unusual has occurred. Memory allocation failures might elicit a warning as well, to give the operator a heads up. - -LSQUIC possesses about 40 logging modules. Each module usually corresponds to a single piece -of functionality in the library. The exception is the "event" module, which logs events of note in many modules. -There are two functions to manipulate which log messages will be generated. - -:: - - /* Set log level for all modules */ - int - lsquic_set_log_level (const char *log_level); - - /* Set log level per module "event=debug" */ - int - lsquic_logger_lopt (const char *optarg); - -The first is :func:`lsquic_set_log_level()`. It sets the same log level for each module. -The second is :func:`lsquic_logger_lopt()`. This function takes a comma-separated list of name-value pairs. For example, "event=debug." - -Logging Example ---------------- - -The following example is adapted from a tutorial program. In the program, log messages -are written to a file handle. By default, this is the standard error. One can change -that by using the "-f" command-line option and specify the log file. - -:: - - static int - tut_log_buf (void *ctx, const char *buf, size_t len) { - FILE *out = ctx; - fwrite(buf, 1, len, out); - fflush(out); - return 0; - } - static const struct lsquic_logger_if logger_if = { tut_log_buf, }; - - lsquic_logger_init(&logger_if, s_log_fh, LLTS_HHMMSSUS); - - -``tut_log_buf()`` returns 0, but the truth is that the return value is ignored. -There is just nothing for the library to do when the user-supplied log function fails! - -:: - - case 'l': /* e.g. -l event=debug,cubic=info */ - if (0 != lsquic_logger_lopt(optarg)) { - fprintf(stderr, "error processing -l option\n"); - exit(EXIT_FAILURE); - } - break; - case 'L': /* e.g. -L debug */ - if (0 != lsquic_set_log_level(optarg)) { - fprintf(stderr, "error processing -L option\n"); - exit(EXIT_FAILURE); - } - break; - -Here you can see how we use ``-l`` and ``-L`` command-line options to call one of -the two log level functions. These functions can fail if the incorrect log level -or module name is passed. Both log level and module name are treated in case-insensitive manner. - -Sample log messages -------------------- - -When log messages are turned on, you may see something like this in your log file (timestamps and -log levels are elided for brevity): - -.. code-block:: text - - [QUIC:B508E8AA234E0421] event: generated STREAM frame: stream 0, offset: 0, size: 3, fin: 1 - [QUIC:B508E8AA234E0421-0] stream: flushed to or past required offset 3 - [QUIC:B508E8AA234E0421] event: sent packet 13, type Short, crypto: forw-secure, size 32, frame types: STREAM, ecn: 0, spin: 0; kp: 0, path: 0, flags: 9470472 - [QUIC:B508E8AA234E0421] event: packet in: 15, type: Short, size: 44; ecn: 0, spin: 0; path: 0 - [QUIC:B508E8AA234E0421] rechist: received 15 - [QUIC:B508E8AA234E0421] event: ACK frame in: [13-9] - [QUIC:B508E8AA234E0421] conn: about to process QUIC_FRAME_STREAM frame - [QUIC:B508E8AA234E0421] event: STREAM frame in: stream 0; offset 0; size 3; fin: 1 - [QUIC:B508E8AA234E0421-0] stream: received stream frame, offset 0x0, len 3; fin: 1 - [QUIC:B508E8AA234E0421-0] di: FIN set at 3 - -Here we see the connection ID, ``B508E8AA234E0421``, and logging for modules "event", "stream", "rechist" -(that stands for "receive history"), "conn", and "di" (the "data in" module). When the connection ID is -followed by a dash and that number, the number is the stream ID. Note that stream ID is logged not just -for the stream, but for some other modules as well. - -Key logging and Wireshark -========================= - -`Wireshark`_ supports IETF QUIC. The developers have been very good at keeping up with latest versions. -You will need version 3.3 of Wireshark to support Internet-Draft 29. Support for HTTP/3 is in progress. - -To export TLS secrets, use BoringSSL's ``SSL_CTX_set_keylog_callback()``. -Use `lsquic_ssl_to_conn()` to get the connection associated -with the SSL object. - -Key logging example -------------------- - -:: - - static void * - keylog_open_file (const SSL *ssl) - { - const lsquic_conn_t *conn; - const lsquic_cid_t *cid; - FILE *fh; - int sz; - unsigned i; - char id_str[MAX_CID_LEN * 2 + 1]; - char path[PATH_MAX]; - static const char b2c[16] = "0123456789ABCDEF"; - - conn = lsquic_ssl_to_conn(ssl); - cid = lsquic_conn_id(conn); - for (i = 0; i < cid->len; ++i) - { - id_str[i * 2 + 0] = b2c[ cid->idbuf[i] >> 4 ]; - id_str[i * 2 + 1] = b2c[ cid->idbuf[i] & 0xF ]; - } - id_str[i * 2] = '\0'; - sz = snprintf(path, sizeof(path), "/secret_dir/%s.keys", id_str); - if ((size_t) sz >= sizeof(path)) - { - LOG("WARN: %s: file too long", __func__); - return NULL; - } - fh = fopen(path, "ab"); - if (!fh) - LOG("WARN: could not open %s for appending: %s", path, strerror(errno)); - return fh; - } - - static void - keylog_log_line (const SSL *ssl, const char *line) - { - file = keylog_open_file(ssl); - if (file) - { - fputs(line, file); - fputs("\n", file); - fclose(file); - } - } - - /* ... */ - - SSL_CTX_set_keylog_callback(ssl, keylog_log_line); - -The most involved part of this is opening the necessary file, creating it if necessary. -The connection can be used to generate a filename based on the connection ID. -We see that the line logger simply writes the passed C string to the filehandle and appends a newline. - -Wireshark screenshot --------------------- - -After jumping through those hoops, our reward is a decoded QUIC trace in Wireshark! - -.. image:: wireshark-screenshot.png - -Here, we highlighted the STREAM frame payload. -Other frames in view are ACK and TIMESTAMP frames. -In the top panel with the packet list, you can see that frames are listed after the packet number. -Another interesting item is the DCID. This stands for "Destination Connection ID," and you can -see that there are two different values there. This is because the two peers of the QUIC connection -place different connection IDs in the packets! - -Connection IDs -============== - -A QUIC connection has two sets of connection IDs: source connection IDs and destination connection IDs. The source connection IDs set is what the peer uses to place in QUIC packets; the destination connection IDs is what this endpoint uses to include in the packets it sends to the peer. One's source CIDs is the other's destination CIDs and vice versa. -What interesting is that either side of the QUIC connection may change the DCID. Use CIDs with care. - -:: - - #define MAX_CID_LEN 20 - - typedef struct lsquic_cid - { - uint_fast8_t len; - union { - uint8_t buf[MAX_CID_LEN]; - uint64_t id; - } u_cid; - #define idbuf u_cid.buf - } lsquic_cid_t; - - #define LSQUIC_CIDS_EQ(a, b) ((a)->len == 8 ? \ - (b)->len == 8 && (a)->u_cid.id == (b)->u_cid.id : \ - (a)->len == (b)->len && 0 == memcmp((a)->idbuf, (b)->idbuf, (a)->len)) - -The LSQUIC representation of a CID is the struct above. The CID can be up to 20 bytes in length. -By default, LSQUIC uses 8-byte CIDs to speed up comparisons. - -Get this-and-that API -===================== - -Here are a few functions to get different LSQUIC objects from other objects. - -:: - - const lsquic_cid_t * - lsquic_conn_id (const lsquic_conn_t *); - - lsquic_conn_t * - lsquic_stream_conn (const lsquic_stream_t *); - - lsquic_engine_t * - lsquic_conn_get_engine (lsquic_conn_t *); - - int lsquic_conn_get_sockaddr (lsquic_conn_t *, - const struct sockaddr **local, const struct sockaddr **peer); - -The CID returned by :func:`lsquic_conn_id()` is that used for logging: server and client should return the same CID. As noted earlier, you should not rely on this value to identify a connection! -You can get a pointer to the connection from a stream and a pointer to the engine from a connection. -Calling :func:`lsquic_conn_get_sockaddr()` will point ``local`` and ``peer`` to the socket addressess of the current path. QUIC supports multiple paths during migration, but access to those paths has not been exposed via an API yet. This may change when or if QUIC adds true multipath support. - -.. _`our web server`: https://www.litespeedtech.com/products -.. _`Wireshark`: https://www.wireshark.org/ diff --git a/external/lsquic/docs/wireshark-screenshot.png b/external/lsquic/docs/wireshark-screenshot.png deleted file mode 100644 index 350091a7c39edd124ce345a459ef3265bb5d3577..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40852 zcmbrGc{r5)|Mqovm%4>^Wi1kAnUH-;wqy%QmNAtr+1D``Dn*ig8OoAm&q%V4F^L)s z218>TlNf`+*v2wrW}d10zQ4=w_x(N3@f^QD9M{ZP4(9q?pX)r|uk#dt!@`*N55YgU zxVU&tt{GT!aqWG@#kHsZz<$mv0I#Sl&S6iGweeLhc%Se*=gIFLdggjuTs6r&yLb0- zo*(qTW*@}G#n=AxV-MP|%$4)v*09%HK6H(7PGtyu^h1pTk2(BG@appR)$1!z+S)kWWnI)oV9ChrN65 zYB==p;3N)A7oLGznnj>L%`u;@YJ~B zK?_y-Qt(#JI)yl&Ut`I1MoMu094@Zo_umzbM2o2t*{m(nl3z4}`2_hnK$_1jho~oq zi1|Rs<-BXcd~{9bE8=cRZdvXJmoz47k-hilH{Uq**!<`5%G3dsJwG2jl^FT`=ka*b zont?bH`F*^pe8+rQB-g8)?M5i8Zovxea)w@dt@a0w7cq(8W-35YQq?Fg8vQBOgg5p zq}^BL{N_!^EGcBH8TC@rdw+xOJ7P8Ddt0ZTU`<@{Hc8=~gd6<$eeFX$hH@SP1{mL4 z`{kRFBPgrt+AS#(iX1+|^a9G*gkI+28o|?*US+;CdsmQJgs%s5O=RIy z=07f2mk$*ev#VmOz8H>N+fT>h^+f{R38>paI4QO9wD zB6AiSXMYg8RN1;RwJLix5T{-B5s6#ZPMeFiy+%q;#ga1KZI{1j4C>d_ndQ&uTy@AI zjrJ24uGDLyw0(`|vq$%{Hs8oqKY{uIEXM*KTym@IqbaQqdiR;yCsN!Q5^jsUth&SY zM&Qwdm{s>{TJ-@KVu%gS+H3im%m?$rrA5N#By@P+VFuV?404(^o-2;2MN51DOdbZo z%G-oX^P%CpsBB&2?T%HGiIdQElPa5A#T97El612-7uTn29lEvZb>h6`o0kP!0K4(A zU>M4lnDt=!)|WlsCbCwQ^GIb~4`?r*vHfsic(;!dJOtUn7w-yccs&o@xnAN`fA_RH zIxsh;!m357itX%SvC;de;#nSuU&h9GB|Foi^9kR}v_8Ax6kR3V!slH=#O(fP$F!!p zGt;OLD*KK=NigO%FTqO>UFSHdrZkCql=)E@U1NTmZa?@v|JzC%!lTA zN$vs%A@;6NiW=4hquLyW8*i7Dn%zDDiM$6>mXw*AJntywTHgPGvr>!FwjaMPUoTvY zD?uof0~qTnZ8tTPB{GM3htH|syQma+-D9GAx?=Shy&>PdIehet34ev&(B;JNLk}K& zQBf;ZZTT>i*ri3jGe<3kT78q;u-EKH%X$(+Ean)#N z`z+hwQ7*2BsV0Y1LcoZ+oDlow`??ZB!v_?>M1=lzeGy+9nTkU~)5V_)?*~_>ZiJmUaoEuj}+S| zN@%0Wogzx(+JSoeEKC^i?&xn?{iQK|Swk}8fuoitd}%bA68kz)VIG)78CeEZ15^; zM|40@F$Pk;fBzdH;`s3ELm{!=<{p_x`}Fdj;;}xXDBW76)D*+@d{rK?g3(?H|DK!e z6VyL6RO+Rt<=CYXM>m1Wvu>^4=u9`LyZLNze_1!AO~;giI(0skH6DKlnd)*BksITL zQmfZ)sm73=piFfE-15nt3V7AuxV5pvL<-p(v*{Po;Hc^Ldi~QES5yet8CexG@lNZ{ zUmJ7Vc&k+7O)Hy8#f%eKp^SqOPp5APcPpY|96}Kv2(M}t>lNhk&OX-Y<7}3E+{`>y zuV0jn#Z8M*g)VEwS6mN^?kjB^JLf`oYjWk^!}aOm&&?Ft?DxbXBIht?bN%gq+GKqf z*FcR#BSx{5js$p;d4$0^t6W_E89-m>8J~|oA3sFuz5n&1v~b&b&aw}s1vF8iJRjV2 zm+PzICNHQWu|g+7A0!eog4i3OiLMc!H|hzDMyEQlfRq;L1Vbm)r_RyUU1TaRyp)k2 z)|F|r#Q3D6g~}~$pb94$Q^gfaddrk6@w=oE4OU%St+4>wYrq7 zY9OTEg{SJ^Bb=WsWVLOTqjI0CM@_j{Wmw57b=~iFTXP|%!BA^&a}fhcBiwME0GO6^ za`)%nPy@d^cdJovDHpBf;q>VdWZ-73v1>^g^>Zt|M)z4fN>n&RKh}+}$2J*JLLxc2 z->?M7WltAk}G6ML9a^&n{O=KIsnj(sur%r{U}dZ zp7v4qVn;EfQjK-#ZXpdo`uU0iAxuS(K>P-P0{2%o+xM+pIxraN%uO)K1yipdHbD#;=`j zN~|19&YYR*pq758^E@7S8)#CkdtUdXHYhIC<*@fVA~A~_!Rv%qUakL`wSq{ zY)xL9oMqX8}1!<)qd7(Q~jg)c};8NIcyZq6oiN1V*XT_E0#$t@tzFG6yhfh!g{5Hq>*fIi=3 zko>$)U&os4RZH!u1XPkQtX3@2NC)OWvHQV71MazBb6FnHy>2%I?&*C%oH-3CcO<(b zzFJcbFTQMN^vn+1k)A&|0A#pT2lltWW-jy+Di?g>L9xhtLgGj26*Z=TXQmJ?%|~BC zmP6I;PBg7KWG&r1QA+@56T`8FuvWP^{WXQ>S#_q9)0ZYz$D^e&Wq6P+?;i;BR<1t&$!fWP7D!KB|h`heTLhFGiFgk0OOw8$sd)AHi@j z_}F(n)ib)gFD5n(BaAhJjoBjv(2eO9S#XNps-MvuVnXlhRU#C2wz=7pgMx1&~yvRri+0+YnuGWK``!15)?y z_)Ql(v4m?|9nOV;T@KO05$vVF53AlaiILM9O`H3vpfAAbHpPe-&FGcKd$u4V{=?Hu zTpB#?E*>_dvie($rPS}zmR&K;tpgMra*oy}LV;3C*4xsQUD~~g^HFbJs9aG*Hed13 z98Rl<8XXBV@eDc-^U%AuV2KY2PHa92*V27%{O&`8fHiXCozu>D?x7H9-o&on{N!A3 zaH3ne{(CRJEuP2D5Ci$n(xs=&vWb)%dS9%i7GBgQSZ3o7tjiq1Es2-#+!-X~`%1nQ z^u><_%m*8x;p^Ux?#jTf z^47izzBQdNAWNIC)w@&~BMOZhyL|aGxu{odYjS{EBos46LsE0Ke5B_0r}0JY_dU~; zHJa`t^rFaVsBWRklsDD8S1!;?dL54G%2eMd&hi+f$ByY%ox{f_gCWcPJ@D65C-F>(h1s1X+zoF`{#&nISVJQzQMX3d|jiQ0o*Z~zQa<-0d*CRdY zgv^vS3WLv7TUTkwE{Xc(cDzqtF3t2Jp7y;t={Pjc^lC%kxSWcm(Iv}>v-$Marj?8d z|2(k8oRHxtf>pAp8A_PqQ?WH%@A4&)phrqot{unOe%5-GLG4R#iWp-&4Yk!RIEoy1 zY4*6>*Y$MTa?C@(Ii2d9y8I<`w6~#a{t2Le#7F)2T(oq_JK&mV+~*{sXp!vnyljaR zM0t%=Qk&Nv`6!1e+vvrD&(Alz=0CDYtQ>*gPSUt=T@LHFlGyCEGhFXvO*}{-mp{Kv zmd^4#mx)Pmwrjs}QZctGM{8Pl{B12y@y0v%i(7OfeJUe8a6Aayv0?Na07F*mKBk=j zC&q2IWsdd)@-;84?xAcK;yw2H90Qc~qp{=FH(<0EfRWSny(jHJBnS6C6^|%59Ty@3 zIqxUeRpbR2vD|lR!zoaKs9I>&*gD`A;rkZkGS5gNgoMSIL$^$?@}3Pj;&lJ5?)!H# zr-Gzp${*K&AwcLTtyUTqp6{kO9ZucM{zHB!voknmJ7q#+j&LrB8^9VZZ}d^08%(nD zwrBiE0%c9#n2BT@aLehr9Q(N~!+{+Wg-5waDp#Q}_ZI3R*6r7Yzr}E`@eVkY>A5Qk z9}KA|vJlKtmrv{$*=cPiP@+cg`y2~gOxkMZ$W{RLd@`n{r&Iln;E4i0 zf}ms3LK=<%F%INo6}w70zx|N4#M5IZb@9Ci^7i3!3N=3fsrC!}y^EG+Mj@TeZj`ek zXGUo!f)kCi=DWQ$uwKcPqRBs3Sgcb4b~mwH;>~I7H5d);k{`XOULXH!Yt^RNKG3|B zRNI?#3neYF6J^?zw9yn!It}?2wb_k&& z{*sL+4|NSAHITLT^(>72moKE10c^V!lJPX85Qd7G~s!zBq~*I~Kj`gl@B0 zjD)*5UhY;@C46$E-vH-Ks*GwFm^0qa?{_cF@t6#+1`?1xfN_7-En`yfmVB$|k9_c0 z9DP&Wsg%y}j=Pq3^HPx0b!|7Xs&VsJOJ&73q)Kc}Klrg|bIvg+M;~lm-)=NO4D+`1 zT!RqK64fh-{c7jx%m`nGiCa8qu{p<*u3K808M&>>kpw!CM*$ySsRiWR5ZP~lQPca} zUghUqtJb|-y+`QS6Urw8CJ`5-)n4)&{4`QtIh#7_d*?^ZfS8 z?Bd%}dc}3=qoeED+?{!(1n;6yg&vqy-kFfODVGj;Ky`oxGV5`T0d?^iu9zUOt@>&m`UKS>+K+c=O_3j){?t ze7YDTt7SJ+iZqcJ+M)9rwI!Nitgjm}c%K8=SEda8CH>Y$ zY3ygWOM_QF|5M1{Abg8hOlbTjjy`+4Bsyt>Z&HVrWxBC#n2Zn&hu5~QS@ksb2Yx1< z9t0I!fCrV&g?ox={zL04fL^NtUS2dy zGqR!RCcf_6+MR~9uJ>jk;#e)aG+ZjwfALlR=9KYFtR$ipFe#6X8bRH0S{FGEhx%uD zz+K=?-8i>rJE2Rbtg?1!zPP=Cq)4;&BCOnpez{uy(eS%g=X)`-Bl$9#$q!+&1U9-}kUDN&}=}J=>wbxSXR$AP#Xog}V>+x4d>!!DOv2-y^ zxP^Q0KQw;gt$%9#X7@ieK4eVSD11(Pv&QEv?9fu>?~}c-#+^YJgjQGI$%`&-C^I`8 zTsWj1%kesXMB;H7Q|%)`B7`vOnI-|nOdAylC7PQ6XRRm&jtel|D%$b^9Qk$ieg2Kp zzw5D0)IG=vno+4imm--L9I*|giNU?8YXfM;TMelK<_Cd?&dfkZ-?ID+nd+y%4UW*g z`4@_z3lF(pHUH@Qb^}50@R*rjFt%oGYV1^@V~$ZrLL^h|#@3pdxpNO3yDne71qea;2R6|kYcZbF1GRqFl^4^Nf@f0vBCpGD zgJXJETY$czGmXNGhZCXGk~>MvL1jW}{sH0%KB$TD@=0!RHd1pE+*wrpOba?$Ao}2; zWDhxElD7Fxbx5%tce7|ZO+-5-J8%_$!nt6yFWWn!L_R7Bdd;Cgp@Zd9r7a%F9{nCs zi~gohp6O;<8rA-OcPg;!X7q&k)?6&vVb%VL3pm=LZ-*SMhYxej@wD#qD&XAXUY!JM zpW64X8f5L*`G;HI;~))^rgzGEt&rAv0Irf}@`6%wxukO6=+Y{N^wWgBsn=EiWG0Ih z-xxa9x=oo2RcEw$%mf`o_W~$yr^l)v(xVNMknB+PoPPNH)*G#8L!YhQ3fV7y?T%u* z&n7l2_^yD`VM9X^N#m=xyrK1I+F(?mLH_8+%uhLO7o&r=E(#koU(R2;C0z2jj=emL zFsl~d-nf!TS^+8pA-!5)L~iBv4SCFw)W{bf#MWC#kddUlZl`JV$_l-^4PD^g)%3vm zVd|J=j1oviHETwYvGaXFTPk?(l4IcJux3l_(0T)JlpP3c9wGU1AB3)+YB{Fa&u_N` z`{;WmmKqkfJQo3OLCS*tx5iMX3#p3Sr+J`uPFHidpp%BRR==!61oeUL87bPF9xcOE zO=5ZpfxoXEx@CM-RsDp}MlLUSHDOxXQqB|FzEtpFNZF#>hiW;ZGCVSj79Z5Eu`6@> z@J*~_>NFiL-xm_N#5;+4j`$kmwz(h7`o3@P^18|9etn0{=O$3!e_XdQZy=RnVYDZ&_D;FcPuI~HfBA+cdWDnKo^N%a&EKrG zpZIN@`*#xoy7|!N3X@0~L9UsIJb~Vp^Lw`3sd3=NxtNUa!i)CxfACdDuIzn)s7`;S zd&*U@P6&=L^yO?_u>8g|L@RdE^J?s7tMiy{lEHiR5rVQQnCu_AdXRGmwAE?GB!JhV zuKL1oq1Fae#oEY1jbIr-h!w~SEpj2rC4-zzmc!}?2uqtDdd<##7Ag{XyU)%0OqtPJ zc5!vBAn1jAxn%*bpsdE+0GMp`gcDGOh1Ks$b<)oaCt%aMGGF^3rE+RJ=QLGE<5H0wA{{lcc z4P7%G81s>YfH=Y<3`Nqhp)nbEE{$F!|K-<&@%qa&$ewuAQb|M+vG`J*-0|+?Qm!lX z)^=;GB|+w^FLt!Pr^8K9gqTqCm(|kIxu_Z(^W)#W#+LcGh(?W_UO@{D<*3@o{;ssJ zT?XxG=`nRqshEYVbnk_#9u+6tw*^j}$Qg^{u`GW*sL36|H3u$MR?Y8iOw(dycUIMq z(ry-r{0R5tiqjowsbE-nV7j->><;4CT8zBX*ZeyTGqqF!+tbFDEiAWisnGrt5<})P zq{oT`jiE?^BwbI&d(?R%@(s0RhR1t*f}RUCD2W!Rxz4; zYYTD^8;dppWCKgQ-n#Jf2Vs(-xP?FR8&2=kR?-8whqo7XENwe9jBCs!%AK4yngwG& zq)d7D&YWi3OXS&JEcQ^gX~L@th7$`i#`6&pB|QF-O^ZI+3(>^hgra{MmUPC4%IE9T1Fhq$m=}|zgkaplq$fwwe7(^<8CJJBde>$L;EVo_W_fi4s=V(9Qw$TPbkNK@Ac>ny3H^8y#Xs(aIEm_ z%dV)6;Q5Qs@FeMAV`pV=K-u)scbLB&OMK!9X3u~mI!H-9>$JLY3-#$4o}Bax_=oBz zH;J)*wNA;}*SNY8`g9u%CVzP!(uyH*_+mu%~HTl?+a zbBNZ*@YPO5V2(K%vJ@~py^0gYx2I6nb5IIc8t=%-g}j*>;?)NNw$*WQupAn99u&(;ip{2bkA%-3{yEe9 zWnp5MySxFLi{Ql#f*MfdDdL#{fDgxwNUrEyrm)X@hir1l=Z)AgTye-B2A+UL$bYz5gYscdHx$u{e z*{UtUAp&Oi0}XK>0%DaSz^k;wTP--9%wUU+%($pq6uy)j`2RY3Nl_)CbLg{ZXORoxB zyr2&C+CH^IwEAyWg_TycLDydw%uvv4$|4BJ55WugN{up25jB%1=t+NwIo82DsF%n)^J3hZbE=*6@gEK)=@)A)pLR=H zbC=)&O?_=$mkD>-7HZrzzUp z{}X9&alQ8cor9=fjPd7Zuu02oVC!8D-0*w1%btNFkW-+Xk*~zn$=flTW3aCT4kZCHYlgGUU;2<^k zoVCR+VqWTRU9NGWIi;}zFV1d1O@1n({PDLe&u((aPOpE?7eU*m`$f`1GV82;Q7apM zn7zbT2ch73XtX`69(5?fLPUvCU@d=vT+lRoPG9Iu0tbhX9d7)n4lpL9+|5}H@Al@B zD323Hw>7m+GO@Uld2Q~vchx;RJ5TM3D8X{LFHO;qMmRS*YChXo4aRbeK+L!Je=N zZ9(GA172S#g{ah8fI6kA1&sxWXF-6++f*}vu*Jp*C*cPQwpPkLKZvi=%Yd564?VG2cCX*5Bv>nbax^d^-UNb+Z2i}L_QW=dAD%K#jAuN34vAqO6L%KA=mToZvKs$aYcbU( z>&mp^TFeRPSwj=3|AG<*uW!iBJTi`ft9q!-m7~KX&a}yqIh>Rna zH&`yPzA98sUWK#uHCroPu!woXDE1y>z%;t$4?A5<3)t(uU(-=Jmk@!7ht zSehiiF@@OLs?u{=A^Dqg55pG@f_6hLUqC@{Sz0;4PK!-5T6W@2==(Q`1JSbV`4HP! zsx?Dy$|YrqZdwHj9UY(4zJT{g;^m-hgs0I(B5u#z7Ksv=KC#NDIeEPjY)m?=TU#zP z7<~@4gH)$}W{;V#J@th(cy9oIJ7^~>&t4_@>UUnYUP48DkyEPQb8Hp8HX~rL%n~aS zu%t)EfjF!NP^;#CdehW0`jO7c+S>`H5Qn`Sm!L*6PH=oz3>7K(;1FbTGiiD)k4hq* z$CWiLzwA`x&v+6JPnq6I1e8CNf2kck<(3-#fV#-q^c(s5+PD8H_1rI~m4?)uYXjaz z6&6ulxpN|+4fY(Tg(M6hrX~}!cQJ>Sb6O-!$xq8aAHR$HIcPTYw1m#dYEP&{SaROU782on?^?Et}0B0v3AcObWB zomM($D#7wZ&n*4&SMUPEaN~*7Gddt^EUE#iUq!2k)b&g7uP$?0!!B(>!w!5`=pok{xjr3O&}p=XU*^Rkq)<3;gK z_!x?Y^+t&NK_Fzw%mv0d8f+et1z@o4rQg5(f!3D~ipUb`RU`oViv(UK7)` zH6AA=?vC0L_E{*KF+G0#VgDED5sM%&uG)9{pC<#^MeIY#%ZdK7+Lbxo$ku^=MyqTl zjC`+|3k}0e;>FtNoT-66Bjx3&*`>~%a>SF+@gqA)j4SA~Ev;wAyyRo>cJ~C=!e82b zEnHq#d3ep6($pPpz#zkQf%sH1kg9&(au-oOYRUcV0`|tNCGk)VQe&_hwGr5b(Nx{9 zUe7UDP-r=X<(9P+uowYrQYY1sgCU1-LY2~SYPIE0f4dZfzrfrl)jZ{+sAZy8h#ZGG zbwz{nqh!aVG(vK+Op3NPrnjsq%kQiwBIE2GAQ~9iMQ~g&83DCHZ|+G>HogQVd^cl0{danQeRmf)@(@ zVBZpfz4qN|7TXM&8XnIcIna;2iChTd%n%hN$j|JYW3+ImFpU@$`A4^ zQL+Hn$lp8c^WijJWHempZSz(iwX+7$Sk@v(WXl%%7^`8G&~=K}v=2KMD1=4GG1Rl`TAyzUCIlBy-LoPUFu_?N-K@kJ zh8#&_ki0-~9Q-JT2;D)1_R}Cpg%;Tw-8s>y5HCTR`c9I8xpDVe$LzAe1-Nf(FpciV}7z7eg{`0&&`T9!OQ%cFV9NzMIN$?oqwDN; zo;la4;z_{1J7T!RgigOt%QhuerJ%B-_}ilU@F9!J8|Q+i1*ONVbhx*0tzv7_H~f(i z22mczxQv$YBr$fa3xRt_Lbq+tqD)2MTcx9g0y0aEC6tk2AjKL^yd=2wMhR*MLiM=m zG7tThlvNbTw_FO&#*{j@OHZ zmriWx_}z}|N|LqiW8%h@)0Ph6#zU#ofx}T9dTVcFPX-WGba`DxDX)*_c3t*jVbaULI?CZ z=F3BpBPMs87%f!$-`C0KJ&8MHbatW`2zgN`%?E~ zMC1N)NrqNNH9hBwF2K5yp{CBP?)1QABh7najr0!S+H0+gJgVbI+==@5=SWry)AE9V z9W!9jSv{g%Lh+b7D6Zd5ce4TTw@2C=G&~LWgs8(#5AhSu&W6neiDyg2+-xvRg6<*1tNkMOcHwV- zZgs&5uiUXIxQUWkE6)bpfIiL>fQ;PQ4*}Xx&xo>9NntEpWzmT z9N&28q+U?05R@Prj9Jv*)Bt9fD4AzA(eL4T7hij$&Y(ihz%6Y>r^1b?plPK-z_u2; z4IrlMDo-r>ejp=(F3RX|k%Vl!G>jZUKBfQ;7^Qa?Z#gXeN{Z=#c>MoCk^Vg?W;}4K z^L-DFr7);Zt+9Lbr6)*IJ+Fx`ATq9a#kaMi7uMQSSzTx7t0s>$bo-6OQ@pGYxw9I< zV3pjqUx?49%zaH4$0Ae8a}~RWC;Qz0hwRu@{iQ#N&&AchiH|y#MVV<3<-f>s!Dkvc zdtxY?LE_}*4}kTBV+E1@A;&;{!_uE7EO_NFS2mUJ%!Z!D5m1GU6c{HE_Fac6fa{L%;hD)hNE1}=Ua{EVh(Ku<5 zyC4-SDXfZmm!9NR;Iy

zqNZE~93@8g4bY4>?_3Go!3!Nb0|Z#$pf)?k~ss(!)1i zhj&Znrmk)hygrH|7!m{f^LR{Gani@UjCc(zk6d8n)emq?jTu?w)8vjKoU_5S zpYem7pNl$Owtu58)afMTUqfRjR?N~K7>tE4p3fWJzIRzOobG+NXW_Lmu~3CKab@Se zQXdk$!I=AcCk#r}6nJnL(q@?@bnyt>ZPRsp|Nn;UwC8<9SpH3RP7D1z*-@?B^-(3* zFyVa*!Z@^?`lSPIHAfZ0pv1f7aARe3E1}{{dh5iSe^8r`A?h%Q ztuEqdG+M#4bqE?HyMC$DF+adeHRr2(lmD&><4~8^8bM~TY9?(a&kt4jUn68s5w0R? z+CW&3l7B@&=Ew<|V|7}N$-gYcu&J^R0&8=krq4 zygqN=dvlqV7(2NoMXDz+Kb!we7$hG7ivFD6rQxvA_bi4?X8s zwjTch-ECq15n_)GQXlRBq%(?~ZF!|zuG$v+qvEHz@L2nnrq#Up zn0Yz3WogM^mT^AgAYQfE8=JV{B?~3iAo#$lWAe5+&nBzyo1XLahFZ2Y zCAyzV2fuq;LIc~s@b=4nh2bPn17SH%n9t)(Z>;9IS8u z2a{>5i4vuyO+#9RF)wl@oVAxC-DP?HON5M*Dy{+kV5nnob*+V4*vz{__LuTFKW&_r zU(D+7VRc-79QV$#UUYCz8W8jgufuyv)>}3?fu(KFB+A`R+D;EK+oQGUuMk=D{Fd-| z2lc&PpJnPJK8V(>wDyiUqC8aJ(O|+2EWuBI zrWj81YY6#<`?@xN-TzKMWjvn94qfp76l0FULN`dflkvqC+Yw75N0gbG9udx#BIt=k z+;FN!d~f6w31Y@(>Li5}%i(TagMzv8){7S%2mcmRw{}+%h9`T*d6w3C@^NdsW=)Jl6)|ern z6BCN^-+k2T_R{-{i)GimV>`Zzop&TC(up+hK)k^aSXvVTNRMwU8iX?oA-p5mXPmgt zFR=4PXHKh}@b8@qDW7VS(ZG?bu_1|wh5eENoZ;!Z1BZ{r#)B65wUm(Hke)LPRK@WP_~j_}>>ZIjkfwQN)NNwMhn~ z3}(jSv*4nA4_kawpZd?1ZY5oQ?^m{;uv01yxHZ;bHd~JL0(R5JEvB7QiV$WCW)ixo z50QZ*SUtEx%INQ0-ybUZ-Sc^tdy}`hRoH(uOJ*IdI*agdP7Y6mHcWXa@~{~{-wuT zJORpiOGYtUqlZWb*_~5_~w?NvAHK$5jXP`5(;>c}rrBbEJ5rvDVP3p~TjH zf+stv9v0uIFA6oBnP2}4H-I*L8yi{+vrgxi2u8vd=N|ooHhgs*k3q2c{%d+Ga^Y{) zUU;R}`0w^db0Oky*?uc=v2^CKJmnYmujQz7akLgGH~B!_iCi==9&u|w9F3rGN-O-- zO8dU0z}lQ_YqV5e44i&3MDy5~w`a(md-jOU>NDE3Cjgd4Gq5je<@AozU_cEyZQUte zx+G5_`w3L7lUNfsQW);OzTo9^#PLXW^!Rf#yXQ(+f;_oG+|C(uJ3wZNRQy0|+~+_} zY!><@G5c=*icKyyu}G|b|kwVl4V)QHKT;%7nLx`nbu&e68Y zj*BWg|0>$8g8mfk!p7PHol&g@Ex~&Gf(N|kaM<|B!O6U+#s@+%9N;qLF;frVQ078S zIwvgnSddHr>MnW6H7B021w^Sew!^8urqah=V-a%%|LR8>(K+D`Y7uJ>bBF#7AB+&h z<~_H=6XCUBkcaU(|G)SF)ezDeVC@?b{kgvUD_rMfL5NSpudLRef<3SOOOpj0*~YL7 zz=yr>nLP7V?D3uN7a%J;x2I_3RsQU*)uDX__r+UE~q5<)lSw>-BqTp z)+Z-ExFNt?(?HlQOR6?)%c%>Rv?P@wIoP<+l+xBG@RJ81OgxUZo=qE)OPk zqyO-{^CF%wbqKbeix>8J+OaOnbTHB3God7eLOH20n(O?r#=f>gG~30{3g)-zd*j}4 zHw}yinN=JJ}?8FT8b$+SiAF<;zeDB%JpTkSq)F!0Y{`9ddv~@YZ;xfi5G;Dl>^CZhNBVX=zVrSf*u}%&oFFUA3(T2$>S| zJVVM$TtQi*woKU@n?2VjgWR%zE#JS&9D`^2NBcSe)I&W{CkLP2_v^q1g}zbwzH<~Z zd*6UihzJ%?8@@y)h>`#Yz>m0Ewb zby}xC;6QbCDWwR~x|wO5hJd(d+yqJbmA0fTYt-gr}jVkw+4p; zQ(Uz`8GBdz_K>5(mRVyyj~W*CI1G4JA6#pzzx!B2UT;gGnsFB-;0;ZZR9V?jvV{p_ z*GaeCXM|U~Wjgstt{Uj>dy?1*je-*fv{ujz<&tEQ=%|4`w`82Pip zk@Ir&&_OCb!AL^6dzjNms5hr=sVm9b~Y3ucgz6}+}GwwNkA1p>u zsgbB+Cu6!3a_xndmu~2Z7P;2ky{Ww{sSOv|= ziDJ`(bGexHY}PFFW^qt8dkfqN?u(K^j=!6AA|`B(#?B>Nc!OK?FFZ#fJnvUtdhNd$ zF{bc=xA<+(_1#rdUAyOb*bwgoBm3DBp)gai1$o@~`G~FCoQ6i!=ra`ZA40qAXY?uI z&*)Ph?Qm4=16|W{vUMNqbN00L!Ue`05Sl(^!~5?3&O(rxZp17#MzC4iY$L#m7b7z@ zeH6NThagYfF~;@rrS?N4_{o!G8wN%9shEJBb1rK6KNhK?;8_ zMNybj(0Fb5cR?fJXF)?N%+TZGF0Bb3U`Kd;PF~5pj4yc+LCM`}_`)|;|9D-ClkR{| ze|H9b)EUO!rQ<&qC4uvQ-i*d~1_3@f_6xr$8*E~`gZSK!dfTx>-X@Vo)10hH8p3FW z>s}uB^_L>3f2xA7@@&IW7q$q+)H2d&xrHIId5lX~na;DI6bQAvvUkx`!_@zgXw9~;$}XeEk~}Nc)1mEb#;7DSI!|P=j?8TE1X6m z#6iCVET(M&tk1Wl%#V=eYA4+CrYCw5KlI3P{wV~BvKD{Y8Trq;b@hOMd-QuK!39Y+ zoKZc>t`GCvIR?|z^EzsdPXXONZ1FsEJ)+&7yHswy zm}lV~^vXBXo9c2u!{`UnPWvU0ZBxyn!uV7|>zOO^6}~}3Z1rTTidN{sbD(Gw8jsOD zrvtDs!wPfk8{_%2RJ{zEpueR9Q!RPdNDB`6F*-DAT6V$b+MH6)~SF_nT24ypY80| zQC1vNhK~FnH z>s@+zQyz(b5Y1HBsae@^cqkNe$A!tN*BbHZX#V?xld{v!MRq35F?2iT^~C!zUoy4oXm6IJcb1mN!I?Ar%^O+E3Z%&#Q&CJ=&_+E|YL zhk|T@bUsV$6OS`p^AQxFr`zslbgin)g2ZaHq4sp#`1J;3(}-?q4x8QZ6P^FD8hiiR zy3f+`hVW5A_GUNUrs2-OM3>us`j7zU01%@0e?^`<{Zx+G$~_of!|*2CoZKL?oOa-} z_h`fC04a^?JcB(Z92##rx1hb>cm(S@WR7M45*pn0<`cidu8q{x3LpD6uZ zK4IP)T!d;T7%cxJrOl#vHoEGTVm6e8X;yxhUuOd4*QegwJ@DRQsv-v-#IH<+92D0y zB(=D^4*Q>fKY6ClwZuQ@byv0GKaqJ8h7y@?g&dr4&t5Nj|Bs5X)89W43sND7l z?*~_R1=MUc|4Z0&nFW9(@y4G1n}y#C zewkzHn&M^LntXR_F97JcUaWr|o$f80d_kiqTRnjZj*dG|5t&757ctz)h#}J(;MFw)hT2UO&6y`Qie!V`T zCXxHAd2akyKiuD3|Fraf)$#mWorJ(vyMx@FPi376k~{wP5rNhEbyUH#}vo*D}#c@BKj+5;6oPKKk zWld5lx}EVUQn=M+xA|{Jr49=M+RJ`ts*Qjsb$s{q%9HP<2dCny*jaWy2AL%?7uLMU zf|`mQq!0<$W$C8BAz5QdyZBrP=7W3i>fBJoz}8 zx2pau%+oo|%x8YaugSR9?Vj`1-GSvn$&KYBaWv?5~H1`XUaG&JMBI)@Dhd97yEPVIXp`mroy+NgoY zLjuYd?aHC<4yrkQf&^{U$j7RW@n6%Acdyi{3QLp-K^2ak!#R-^^HoOgZ;U^Z-(3H= zS-)8~?z>ueKq{<$nQ^_LveN2+KUR$}k`Sh&lW8eGG?T)HEEnkTz;XmfoN;h0=N?OS!OB@gLy|CgL3=KvS+2c8HYFZUDIh=}hSk8z&b zwK9YV!t<&Hb6GXE+s_A}x{(2Ss)S21ChATmOqE27(St<&nDE!{+_@ZQfoqy;gb{RY zfCD%XW0;2{kBe}Nf$aP~)a~E#eg8lol@;d_1hGE$ZvG%=kx%^{# zG7Go*;wHna<6k4Xa64`)x~T@`0t@LRgxZHNt$fQc8x6+BW0Axw10KNQY6#kR3_%T9 zCdUdHM{dWzUUKQ!W2&kDUeP@A^#d8Bqpf`yAJf~ehI)C_U@S<5@Itvr+*T;jABqr# zT9n-aWu~l_3ZMd2<1~$u86`Pp)|s?kHn?8P(0_E2lT_*1ia1)cQIJC0`x)d=>$=X# zp^ROR+Ytk2pFqavOwmWroH|w+znqi#CSSb2aeeTLU$;c#;>JK}_nnwzDFHRf(K+x7 zPrsxMC_%r;Y%md(mvf)i7HCt4SJb?_zM351s#ZO&qLOKu(H9XPwc{Fv?3KlEhj)%c zoHtvV^%&UQcJo+vdkaeWZH#hqwV7N4QqOXHDJTiOpsPA;;%uxjVjnPCq3<=e=ws{~ zE0*}FbpIY+bNFdhAx)W{L~>UU^4&WP%7mvm19k+aGpT&Q2>bv!sP_aTYpW0wSzWr< zICS2=o9_aQRD1a1M+R?pfa`}rr>o87(RntUI(h!jW1acpqc2)7y$x}ko`-8031Ln7 ze>5w=ymIv**HB8W)VGkoK0vE!xC zn4eD!z6-DJJ^d+_av;gTi-EWJ&3;*P^qrWTvu^@Lv@fVIN{x-=YUwQG40|MKEo|?$ zVUbMb&3j%OQ^M_irBG;UDnEIOSt&y)2#m6HE#k83Fi{t0lQT#Dz*53HP z?t3i>bhz1W*^z*A+TOsybSL-E&)fWf$}1>as}HT=ytgj-JlUcBoLhGCIH0lfm3~y@ z-Z)?3OcHG;B`ygrYl){QI~w(U$hnAm2;auDAVOD8Qr<9KPw*Asl0XB@KL+!NSpz;e zr|{pYx3|4fGwsDDUfA4CeG^n$o$0=3tOZtk4i@?h1Dw)$>G=bc_(wf(NUOs2j>-+XDBX)*f+7SHq5CmJXQ-d8T9lX$79s+ezG-o$c0&gbuVS=kBFnhcrn?$0L|MAbofMVzqjGmKz@ z_diaNFvRXuY@vk(6oY!7r@ucR&g38Y?~e6Zw^XlJ&@w+Me{xcvK`gt$sC;_uVtaJU zlG#IjeRTg12M?;avd)gxl=qyPU+m{hGGOSj3Ym8uLV$aE>@yzAQevppn)bts;z}>D z`>CBSw9RBSbS4zY`xg&7hlxnmX&FV*g0$ep<>?b8t0FeHBCGT8^KB2+c$VAz8ambG z(wM1(V^vm#dVgj*TjDy|wPVJ#6YKah%9hsnio?fs&9Tys%F3h$9gsv7(<>K=o;>B$ zntFBkREh__K}!`E8L*6`XolXiRmdrm?_|DNo}9h2{h)S8R=LNbjc*; z1vbeS&HvRE)NEO4LnGUmbfW*pRh6E4-Z5^?+#TGt+#HRUD{jp=W0(de-3qtzJ?H&w zZ9cDiZwCIhT}O+}W72H6s39uwto-ir)EMEtc)n0q|Kg2iXX~LWem5$G@6wcIESA=K zft-FC5z1dyy+3ThO~`z#?C7*Sv+#Z7wcBTYN1JBqlF}nj9rbPZH_k?t<^90A$d(G+UDz8fGCjU!go{h z-qcKxe5(kPkzl3#wP8Mb~z|2Ek{AbH~6VI}y*0wg4sZKU_BW%X{q@9RgJBpSm zujrV3QMT|b8SCUCDEo?hoCI&V(z>9%dhk`PTlAj5OwWoR<1%%Vk*i^aWcu)6iR6To z=vA)(2U6|(%Qa&$8-7XU#>OaRq{QfOzvWdtC~8OiQ`A63Zj;0`5E*X3bG1N(-ho8* zdp?qvEa~y9vEVkI_z&-hIf&4)S%uaLXqos;(`WsYn{z53YR$W}U^ZU18H%;;u2-0w z?sa%xGsboDl&FeCTS$IVJ`jG(m5K>3k&x3Cbg@jC+x7f87S?HT0zA(U{S2>o~FkjlbGIrn!( zCGdv+2ctzimh8jsfaqiay7wwl4j#!o11`fu=)b4|*6Hm7u{IW#*vrcrV5kd1f4^|h zG^(9fHpxUo@KsdUGn;hwcy$#L10ce+63~d*pBr2L>8;MM;*(7YOvM(@fFtq2$ZS#4 ztp!H8mthC-E%&mOy)S~A>Y{7D=tfsWkn^Q)wz}iG41|YiQw41b))bVpaG8o^M2^6Sch4`VXTrbZJ zI1wFlWyUeUm#QN^G3Vz)c(<6E0NX`!9dll-9vMy6Lz8pRe0+F5#e4$W1A!kCrlE}H zh3jzlF*LMBi2W|V$GGkK#bFU9;BJlIT)+6^%XtL~I=-A0u;F&^g>ll)m2eM|a&%kb zzgf9RX!heuWk*Mz=y`Q;?gd%8o5r}5o|A)C4+T;8Xv-9~1gPdm-w<(xf%zKkx^O9Z z&L@cPwn3QVFyQJ`Z*aXAz-k#9uY(6QlVG5icj6roONzJy>xLL%2|f%&fG(`g7B_?Z zY;yHMCi=!!?m0lhu_`A#+W`YIM;cq0*cwhbuSm> zZamGexganyuEhW7=w1V1z`YCzhFd2e?4(PV^N znm1@^2xrL5NFRzrr^})(gi>DO)1Sk1xbW?tUY$!qi&~Ze`HYRt32AKhrYI-RA-S?F zV5h?SlBSZ(CiCcE8;{in~Ijzv~gPDI4KTRSe1N{BQ2sK%l=R1J}m z{vs_WeusxB-X7F_H^;XGfi@T)!gMmQP@Tff7ZmO~uq`*=4^vHvu{-{VRdpyv$ZVs9 zFJw3!Mm(#krqQ;yXERxUMI(}6XvNlPQ+(|;umx*;%BOD`SoF@U;uh0il%HPn z%6zqF3(U3Rb2_eC$w#W=71OKOfufrjrStIZT2<1@ilwXJZ5mq;_FJ-~^v7{rw7BZn z<`-xS^u>O6`)&_-xeU&y{q^gIL1mM!F%v5@V{}Gdhy2hsuNX?<^kB%6Irxm=1?K))8QeL}Y8vAtwfO**KHQzSX zO$7y0l8jvK`~qd@SEi5_tBw~0+=O1mLf<(!-Djqbl5>y9RvMiBPp&gEpwn&5qL6j* z2STkmr2glsHw=x=9B=B2;~j`8na+gAJ1qL60Pmmd5BuPpWLOGAdE^b|Sjp!7 zPK>n9;{(S``xlgrB<>}D|CAJHE5jh>YzSl)AzsCrLc5)?T>eO6ZQOjD+fvquQ9-4>81SOQZq(QWf<+oqnk@IK~^qSn1!P5OnM;>JX=}0`6BpvV@lP)Sq zjI5P7eM3*V36SrZSZ8*r)Rl1S&C2=x0Vv#mR%AsHE%Qy!R)3D+wQO`ME<1Fw5x}K% zeP}ru4sFS?!8Nv+JIm8_LaOdyUyZ*FD=RIw)}e9wj)-&y8i20{eo!EC|MXX%^*Ta3>xjO zF3dSyy}%#;EBC#ygzSyLpZXLo`Idjm%~vrO3R|$ zUXc=zBTL{J_%{YqeFW_MkGTbKuOmO6VJ(3BF%sQrH`;ylk*>o1k*{&A;rAF+Pkqh{ z0v8O(=zRpajmL?MiB)|qXFuM%AARJ;!L>4&6L4v>uPYa#wuC5asfeWw!CfY=uqM#x z_W8Xk;g`I%dilUsWLsNZ@xNsqUZy_{Bjv5w%F_r^)_PP$ZIt26 z9%iOTf-WGNp+V}x(tXOHPBS!R$ccf5Vrd8ZVdy&5g3@1@?4 zg?$A>|IM8rNRb0eCi0Zn@A!R<%kOZhi{!E5kBXcb+|`+@4*wD4Y6aA~T2oA{xyEEZk=bYfnrVAy^Dn z9;pXL+$gR30lm1NHyWh|iXxU*<7i5e%5%RJwB`ymV5ih<2hzkFEHkqolva=9qe#};*+BC@j(F$s zu#-NR_yEPSw|0fHu2Yl*Wkb$`85pG4Eg(oz6dld4>Le77KKxlBLA7du0n!H=^Eb+$ zUjsOny&i|Un{7X)#mc}Ct(UEDkS?@zUco{bTEBSGW{~V5tVsjs#BpCNOO;OMwRJcC z>-$<3fQSr@%?mgJfXI5Z;k{OPk(<4;{@!$T5&KM-Oem#ltWlvz{J7~Uos(kyET%t& z5k1z`9RWf`5{&>Uv|TnwIBBc+vEX29t;dUJ1>)&gkUeQF){jgiuurQx}qr2RGXiMjdnQ2SY%H*-i$~#zE+rP%`~^oK}`QTE-$?`Zs?C(P^XcWjMeyAo56IYHC^NZ zqcw1Is?SUdbHen3HWDBRgY_$KL-~e57yH`C-R8%XZ#M*lVn^6xONw)Rf?qwLY^fm@ z)P{J5o?B`*MO&JstLqTMFA7XDSpaJaD@nll4>Z`tvD6||kn#Y`b7oX#!@qQbWe+2L6VY2St?L@cm zXG$iTBza2mVb$!XKbB*C4)@5XfzkTz!+taoyL}EEw>K&p_{{c62GFNZlUbgV4u=!h zw^Y#lm@|JC8^Nd-sb@L&eH~#ij=!wxztN(K ze8eT_?`HfM*a|T=HvP!DzHFL1sL43kK4VvYPm3}|Z>`P*`LLD$i(a4yda#v}7e|dh zZo?k8;QqP(hTjcV&7EVj8s016CbYsvl4`4m={nOT_XUJl=|4ZN?zO{b3kt?hnv{!R z`DgNEb9Mq}0Hjja!ymzk}t#mQ0TBkZ0NxkZS>|!9ylL zCb}vUKNdsl#B&c=cf^^-d-VJFlXy1omEh*P;Ed7PQh0E4u*zuH!9I(y)xenEZ_dKd zlI_%1JL@ojkJed_59-~%%Ocy_{f1aD=M3SpJ#P`a~X6Ve*q?Hk=+s;Y53We z+T-*4S7ST7vetGuJ0m$8QiFV2Z?#Wlg(GFXxI@S5|E!k6$cg$&cKR}4P*4fTBxrp4QwP(xQ^R>y2lW}o7nS0 z;oCgKRg%a6-_fkDBRh>@h4f4hCS9oMOne8sz3$FVfA{v1O>o?Bm_=bhG=sBu0Y6OU z4e-!5m;e~BKiytDuIwjE^hD`%{ZASX<`xIiVp=V$IM7hSfr+T>rFOsb3Hu~yiBs5; zi)qX4Hjb_i2hMQD_JMR{AbyFg>;V0b3o@(dAp$YqULAi&1eMMu38W0o#J*a^{TIS- zC;nsrVHBnzLXXhXnz}qPXMqeYbiALzAffj9gQHOsKD6)M*)U?r+~*~D4{lX0Y%r&; z%TMC=ctqTA(}MPfIORvs`vEiwGqrJVqner#B@TEak4Kr4^5i(#pO!q4WiJtLVDFc( z1=7*=Us0tb?+q2Wq95qYmZ~ zGA&Px*L_}N7>3d5{c0e_o`JHXq!Om|%f>N=Vd|+F9nF%H z;mYTHFJROZ?vVJ^;RC$)kl%vkM z>HJzf1(ebxj$At7Ttf_qP|pHc7(M$AX!Cr%Ld`*FHH=8pD6q&I6G-e0fdHN z&U47#0o=9a8Sttgq{-KNg8w5yRY)YBZ;C0x-7)>#+bAFkiPZ~!TJ17a8)O`XB;es- z1^hManq5B8z19w`fa-x{J~tTceS21T?cOt~=qE|71`Te6RgM@4@z-^w?2d{umiMfl5!)+O=3 zu87MgPs7W()__I7=T4MZQeEf(@d@3(`e{~4^X@D6Swq)^R~|RKO(`b+sp?^<&Eiy2 zKcww9YXcuZagKkOzbV8&a)+2{xJDBzrvGz(!Bwl}w8sYE&dd*!Sjfpqi8oDxYdg=J z4s!QgD%YiZoCv)v+wjz_to%U|;1e$J`r%KgH{8@|Py$+Ly>@qP4@<`0-?($%>+{6^ zE1ck3U=Xvm^tJA`XJWC~iC9$V&|_NQET(_*D%ihvGXo66|3r3!f)DmT7vGz>2<&78 zY&9p=*97x)7b3zzEtU?2-lCsRm5(FeJ*q@P622bF7H;bB9$Z|dza5KhT5E@v8N^he znqJto4w5t`IZ|pknLG%p^1Kc_(IVokNk%2FVhJ1BUg!I7GHR`(c$Nt5pYs#{PUg)$6n3ru8WVg z*~{aNg?di!3RQ!7#0EAr;);$yUXata+;1tAO`@8P5Bp&BQd%7lcVvKGLIniRA6B7Xu9vg7eMi1a z^reNG-+KYU6VfQV$D?mioHv+W`5+sSxSutPSB_?_RB z?><~w?+Zit+i@11e(t#OD7#yFkvPMO8x(U&|J5*E2V}$caP{?hVZQ03nQ%GO9BU=f z*m3!Gh9Fbl`yezK&ei_z>{;iRWu22J!DtVmSO}88{RNhz{~Ir{s2gEt*JcBiSAD1l zR|m>X$xw(f?Xp?pqQ8t;XlMVaCv3nI^8J1Z!Lj0_&%X04VXe_tS>JG{N@*-#j}B7( zIiThf31G|VgRSJ9NVW5KZ4O)RCq4n<5yO7ZA)R2eYlSNK-PQ9C$Gy~CoSI##@H}p& z{pWYoipE77qb%+CfU?T{z=Kyx&NbI#1eS$||4e6Km#n%km(osrro}9sXE}n*AISVS za`f*`C4YK6{!eTvFnj>fAR888)~=_p?|P>IfM!TAMOJdHbq}9cd60G$SY_A3@0Ce= zL>t?U{Zfu1e`UP3I~Av&hbNdz?>2NgNC?hSLduQ40_xaMnS;s~YpHCJiTjIimmme7 zq3PkFp~dL)2)SWYPblFE3RuWj8JTMvpXtEZr|;gmhI(~^8Z~$JCm4?3QvC3&<#iNx znD(b))uT;;!QbH=_s`*`!y)5#^{cOM{NyRkGv56GKXizi9e8i5aKwK^EV>gU7jZY9 zN3T*$%jv#0e|+NM-s}pn1*1{@&R}83r%w+>rv?rSWfp#+`Avj;(8{7ua0^2HD}JXy zd8!zt^eR5d0!qr1Do~WAINmi(S^E(Ery5B^ML5vs_iifdM*^2*m|??6e5RMX5jS_z zlZLrq>%S8zIN~vyXsMEqvpe{pD`*1XGd^sFpc2!rgiC|Fw}8+NOwHpV+1m9skAW?y zYNM&jr#OJ8+XPhhmjrx0se7L?71y+ww&KKY%m7B#_hGQq$lhzSt&{F^$!~ttEqkFv zr}lCic5>~KvReiC`C}T!_<-51Z4EF9-Y#Pi!DJ?J5ocvxdI%88VIUtctgOD}GbyUL zZF|Z4ud%sMu@h;`bAW2Y+EGrQ$5|Z3atMTUHuZW0MQi*nVQQt;5N9)Jr*o0|HY)Q1 zGaM=&q1H77Tu~p`7=p*1xjpFQ*!1X|(tVW(td!23MY)5OAR7T-+d$+^xowYyg@OqL z`jAk^S5e(65XiJ5C$=n|Rr_PjA z?R1!SSM%5D@hLj^l9QmOX=0d%nl?7i8(f(#nl|)vh^d2AUGu7-W3S6kRD*&y-w}9X zkAT~GV7>*Fa|7hiFhhSCUDrN~tb6smMGZR*j0GsMD&C!9Dwh&{96zMJ$zGj&8xi=? zO?}bB9SG{o8^+2QspozB=)`|BnBh3pGav-3mW>skLwLyM#AH^Rp!GG_8Yzg9 zc)y@N-jWiSku8_QyWZ}YSQ|;2b`?9>7!T>O`&7RLduyEH{N!S?XqU?RsV13aMNdmM za`b@S@y7TzW#-hC+csqoPseSJyC%*XN?Ii`5l_a`W{b>1vjuSUt@p9n*w;1* zAV@VAAmOW?e`$S!dOW|3&>uM@T!Q2v1I+WA_rBMzVc6?T$JLzdYoUoxk%4Gc?%OL@ zRf(!!uaA*e5Jv%ES{sXy6IYjZ0twZ1Icl(TJ}E8{SbifSHOvSbiN@O51WzC%PR1a5 zeFYwAHGMOz`)i&#`U@^=dt9JSw!xV5Yh<~mMBo4|Y^)^j))@hxoJt`Doql4oASe?t zZPMUX2I1itlgJ9fRLVxf5eAI@{F&TE5M$Pr$6_@m2_6^>D(ICZr$(XCRuTk{{N+)+ z5eIi?jW{v_HLziSeDd1CfIm>A_>-{<*qc#z+Ewq090A`3iX}q1j_4{wjldC0fmudN zi?NWa(TDwP(7~w-L$*SCIZYE@9C~V#kRB8x{+Y6VC(C{EhCxO8#JPmJ&er1is(Ezx zk0%)yESc%Y?RqST+xR#E=8oGa_v#K+0Ua4z8+7)Yn+cLjB`-J4A$TrvHi_;bIEkqn zTRZ!Ovr7YbOpC4nhec7>0AT)u(>%XkVg*_KM|2?p^{;oxfoDAK@vbO#gR)VsOgp`BK=%ie)$08t`HjL zTqLR}^1*1L_P^-|Z(vU_A`bRuWzZ;}-LaLyLT|k*SFTha%RKPehlDmb&41jk$piF- z?QbbLxkcc9l5hpIBL4`&vReQw|3UM8V1WPv66@C;{qi>RyP9Fu@r8Pf7#Vu}t*Ve- zVoUh|i%rIQ;JEuJx*}b>H?{U2IZ#qaE4OW9CaCxIC>pd%-}m-W3^yl#H||vf-*4@q z__rhNp<#74gYy!QZPRH2b}K|;a8Ba+!A{{}^{QmUs$@Lfi>VXD!^1J3T~t{2;eNxR z>n?hpS!6!z0Y?-@ztB~;Gi8^UlRWh6P*-EM#ofOlNWZQxJIme1<3;*J_E^J0K`Mi( z=}Psq$bf@CvS)2)&BJg5%iN!B@CfODeR|)^-29jV+Sv+WKp+tDa2+mv zK#Owo-^U^JbG<7hMAoFxW!3y88Q2>(Rs;Ib&l$2A`UsaVmWrejpxMuD{5C6Qh^dxX zn-^N~NJJAUuLjq5v204z*bmk{J=ejQ3a~vxSbp%!OdU6XOK5*6YEj9(DoHa=j@Smd zcr~K}muxCC478R6S^?vaSHV(@KL;?eXbB18ckZlDW@B!IXRF0Uf7F?lbg*|e1c;en|*QD&hJv(QQkr+_0mKpNqR^EwDyF%sN zxFn_yZn2WoV7sIN`l3<+T)AD(&T6pUVCGY`cBgzM5`Rw0^vtNd&ypjoz04diWcLq-eN17_5j`F6K2!@GlV~Q!F15+F|(>smvh^{2b3g8%+bN! z%YaOY0G9%|i8KPEv}NY30Z(}IuPCo8WqhV3yoOc``$bl7f2&D>sm3|+^1{D?nFaTN zqx?#Uc_Tyg9 zzc&ga?rGZ?JdSTh4lyU26FjRlD|wLK_Xs>Dux|+GN-6v-q+i4lX{$yW8=N9n7HmhC z%Vex8$H2Pgf8>b*BYCKMVqej*?ga-jhX1}aMJZ`&MPK{iw%dI0^Cjnk1 zxY@I3GLJ_XV;@xvdn&29n$!s_D~&~sKqX$87JR4MUu_}FY3g4`)$9w=pvy$(w(A&g zuJcVIKEIJHOS5Kjl`jM>oxIm8M1#aaP;=P*nyu+2i3_R=ql4C5!|$7E{D7g9u=F3M zG8>4^IbCtEH#Ri-23HpaggtT@o8P*t7Cnh@<29NHPRXsc^-|91{O{GVK>BqJcDkO0 zPxz0H^6JO=t{Of)?=Ngo-k*QkAYW2gj2rAn`8eb#AMXrspFMjn)y!ewgUtb4-`)+; z<$)@ixdmM6pN1u$!hl{Uz@PtKuJAAC^Q9@nht3fZB-#Q@E~?%0O&q5N0LFCRk*9`! z%3X&1*L4_F;ClzfSGc%+28tFAD9pRBp!W{-i4nm0JZ3`Wzl-C-bv=atXdq|%n?$l$0pw96$IwZuV*I%3drCAhMWhbwd^!52>@539e>$_ z2>j3~!5brA<^bR@mqqiW+)zPrnY>kfzIc1olYFJmX0quf@i=AP3uxq zoEcS%8#~|6V+hyY-2&2_a$~TG#aPJ;m}v|wPDq50LKl!bz`!X~HG$@i)PPSTH|zvI zi%}_F=ohHzg|wG+=DuzBiE?l~UT%7zQMC95X^;81>KwLRQjxy^a?U1jd5kIpy7RN$ zX_WVOnn}is@;BB03dN@!_}}9UU=w+U@SjWZCNnKfikp} z8zYbC;?pJBONKsrG>1q8jp7_&-Vd1x?D%BWeBre6YR<=B{DC}e-bunn6Q}zd!lBe2 zP_U9kX+O2Kqp5W5ZRKNE4O-}i-H;C%3dH6gg;YB#gq5Ya7Jq zCjdXL(VQ~R)5Qs-Q}>z#b?JsE1oJUdQMddYji(~>E@6D3Dn6l8XT`OwHo!S8=_xyZMUG&-IF#hAbp$-w} z!r~m|$aiM+LRnY@<=7A*KfKm+X@Al8*8DYfononN2z51;d~pH$&<8O3@Ta=6zrMSO zO_6BJl^vcv#1lj<MYtsx_8{xyu)TtqBY2 zh_A(XWPfIYf`AGjt2l4$!gse^-$aI9*}asYin$m7W%Nyb*~t--0VJk_73rkKnw&{P z9wDv9*jE(z-_Ynr4`4AH!(?If3Nc;AcB;GGp@6`sZ{hx8?f^}j4Jj!501|P_Oq9ay zFFI1T&;Ty^srPT$`hVJU99UDQCd1`-pwlCMFYR|%%GiD z(@gygby@iKLyMpAcX7jCVp+a*5?yu$_=*VD4 z2r=P6BCiM#A-ODB)Svm+&D8{N-rccKqwkElQ6T!49T4n5B5g#U6y#`};Eva{9gnJy z_O`iW;Qpw(H^*XRoHdq91R!u@T%2OUmL!3Thg|c+vu8Oy`{X2GLa9x8Bt{W~-Rm{D ziiiI28z%u-1Pi8}ZMMl_s;9Gq&tf(!u(kZ4{98gcIzmV@;mZvB zChFrSom0M{1NlMwdlpt6-6*&^MwBX&ymkO*#s@~*^oKd{$9cW`Xa)&9Wa(DxD!oa&2cWFS4m2-S#6&!>7BLIClMlr2ZQ<9@iu;1DXs6Zpl z<|#frQYo`vy9uL+@BZ!#lv`RJK7dfnc(q&e@Y4)SRiwMoo{TWWM)0pA#U}JG zL30_M`W5L*GVG%{xkV15Wz8z8L^?|q36W~UNJ;`!@4N-21TbPR&VWCw>X+OC3=Y9X zk~J%EZotW*(I$#*#F*5M2pJ*fd7mmfq7^85%6%HRsVI5}ee^inD35bl!#}zrPd*VB zCxN<7D)kAUf!_z{5~)BY!-7eXilfSu&7dsi1~F5Emt#eHiT8WQo%fe&lF{gvBe=v-IRM#J$U(#qNC}bSxWiB_Y-Rs z9Nh2=zCj^1sC>h2{;ie%{~mVIx@NSMI>37^rl7YBNhiC1DO z1g32=XYi`^2Zf9?Du?}kdqeh;N3pK_D|1lTInK!ncDNiwcKh_V#^-w1>uaafb{lL~ z?y?z`bQ|StA2gLqZ81nD#&9fW<1!DllnS;LjBJcmuD=Lvi$6p+e9hPVS;0M%@iYs(KWY+Ew zLRO3%t}l;vpSY1rdH&|209mx%6|&dvNh*0-5(;P@Z|khQJj~{zYv?|eErHvfi!-*! zTzY4Ko|(23q1^8)9_q{1iBgU$mBU8jv-Y;UD@J~LoS zQ_H(T+h5c3Z7<4j6Yc@SqS--nz5+n*_=RIs2u=a~sXP~~fcUE(6KxSVhf_=L`-32K<){9^y=)VE3GxVlsMpLVN|&Q zr4;vVP=6m$MJQ+6hE~#)u5K1{jvKc?uN}D9z>UsP{G6EC|6!DrLd!i^3e@Ir;Shj5 zcbBFMxd4xPNV}hauoh!VpIvQzlR3YxmNSDV{R+pG z02DOGF`{mak0gdA~(FrJb2vka>iX*iEL9 zh;;X`9YdeSS@P%Th`RWqF%sLGAKNc_y{_%QXm`@A$|p(-OuGbS@=hmPa8XJPF=09$ zCyA2)okUYgiN;H~SvK6#uFC*}Hva;6GDu9gNc>Zt+*9rv2JL-cqnsp6Gx*vRAD>8} z)FQ?@+YIal)OU%UWRi*x{%CXY3s5ZZUtI&%;NM(>TW$&GyO8M@N((AuGQ%!cnk?CE z`^Tq1T9hQ5YT?Ucfg+$Ck!nT-orH>w%O|@+S}WF7Yl*A5?`68@X8XVUc_5F_!Ln#` zqtkP&kP$A=Rir9VgYXSeFp+T-KK4nQ$$RYq!}k?dxQ`{!K7kFT=drAvkV-T#I#cqb z+8*U0PfC*0Pq#S{Qe2#~bNMgtQ-!~)p--7HVD8Q59Yu?%h6X zZ5aDw(tI$J;E~w_DjtRKh3WC$)jq?4;NkC^`OcA!)=ZkCcq9W z-p|K04@uH8HBE)*9s=di@)Oe(D|z|VzZ{kJ10c`~NJw5gC1YV#qq5WeHYbanc&Yg& z;HEq;x&Y;fzJMebo5I{0o3W%#o^?aWFa=9+;cV z-KC5i zS5CyLG{fV-aOXztaBF&>w0wc5hb4$id>rixZ_))}HF?Jm53o+ku-m!`M?5-PDs|WP z8uo)4CR9?99V5^Yk?Fo66!R;{$#$vUSn+f^ka|5sx0g;_<;Y z>1yV(5PrX(Nz6N1`5p>ohvYSi^hRFP=AO?&U}tK8a-9Vnw7Nabv+j|}Q5IsVO3~_ncD7bpSa4WObi7|P@kMBE(1^q3CvkW;PFQUoQ{fsfOIUy2 zHB8ECERa-t?bdX_aNn$3O1hPEYTpFdOW(Q{+Du^gj{z=7o z{?GP{um9IX4v-8|&eRn9m*G3Q)N7XC9ZM!D-%?$EwkUA8B5?M%VDoj#|Fg&t^`|$< zQe$oK2BXg}MsfqylsU`p9Dpfpn9go`Hy_X_C`~wiSUpK4c;+9G&c6z)FT5=0)d*=H zi3XZT072?yR7Hn}4y+Y6c$o48^-`sjXESfR>7Kd5lPxwBgjM$i7d}u^Umk<{P4c-zwo`U`&!O* z&bd@|YCL<<|E6wJzp?xiWf?<7-OA2s8Jw}@1>OlijmH-BD_zj~=irxJqv&f?`<|~l z_Nc+VaPJ8`ty=)5FgtPI?J;5cUPP}AM1&^v41lp2_tkH<@bwoqB$tjNL^t_;C?QKW zYm#W6P;XBqo)A1+xJ%zh~Z zWJIZhwY$rMP$+V`%M&>>*QS3Q8`5u#O_d2Zi;}W+;G-R30sNd&E0LiBQ$hW}pMpmK zRH@t>k_Q}s=*{A+mGCb*{Q!N}wQ+`Q+PK7{vhU9#UE$MKZfIa8v#(%>Z)$G2=7vRqL8GE3%sl z8kYVBhW?Q}m+YOi{Np{7qxUy#R{yCrqF|fPt{CUe6BRY{7jtK^KGO~XN@jX!E{l zjL6(8nq%KPs$9EfT5yCQP*Vv9{zjh{!gh@qyJ>aokBrwG;{Ji&cORLM2&UFbtA_ZN z7Hvh*2N}Bm?bq7kc*1Wp7(X>EzS*c*_@>obT`kPpvvkq;kAKAN6CT{XjC~~Y9W~LW zmPbZb194SLYEN9>eVDVS`+-5`mDxI8&vG5JmqadpmS!#nJ%Ck0$#a*r`?j+2V5NAc zn{^8}ebx=KdbZxi+j;iWX3_J&P_V_1pm6{$L*RVTq_wfcr`*kQhcF>0EK+AIHp+a% z1nrBGi^e&ag0h0dG}%N*f&A(y?6PnWua}GKSJDH-Sy|&^LG^_4g55||+Z@^)ad7)< z2!DdVf|d4DGUnWC$?dK**I<2nlGS>Fh7s(1)B-2Amed<)_n;Wu-vp!5s3w+eVu%i_ zBZLHsdy9^;NZ+NXk+nJV?pXPX348!R7bDq;9*z!{*X0zBEjE73=*I%cuSx<$A4g!; zhGJU$zJ(1_I?pop7_k{Sz=XF8cDJ(}Y`ooVv(Uw0N9G(cbMKD<&pbUZ_Bz+x^TV&z zM3H%%tf>PXKw*U*uVI`w3L{t}>LaN%Z5-j0z|-%%WGP(WY6>wjS9z}1HK@&bX_M|+ zSog{7I4P3=XcB&Vt#unX$I9hd5uwpewOw$QCbB_V*LRxd1^@k9%IdyTP!?A{s}jkw zjq~`Uc_=^dFYsjJsd!z=Iz~srPK#d@?Z#_a;YCNAcmTx=1TqYkCt_pi@N+1fwUj~M zKl9F+!Cg!GqJ5NQn&}%!2+aM52kSEd@L(bFPGq+HjY6*nn6}K5xm)_`B2BZp59ux; zs2s!kF|UU65wXv=Ls7iM%HhNce|YUftAabTG`C+I^A>G)m4O1U0%tV|sKajis$nIf zh~w$1s|R*I4)wdBTShNCnR=7C5~|`&AP6jYMj26KrrLg0JMJ<1tbv!Hzf7s!$|{6e ze<+op<_vfQt{G&EKdwo}OChIdvFyP#v{yCw4^ChaROs?x~OS$ftd!J!wxR71$k}>eC@RKrb4kD^OX@lvN5X#mAAne6PSW3PI> zQw%JxN2N5C#nx^ir zZY08SJhb{~NC3^-d{FUJM0QITG>ib&v&suWcJy#}X z$?QsNC1l9dIz)D`FXqsxok0fbzcWJK6d1|u<}#vg+2(!TEvt}N>F4bNy*b<&dbqSL zPSENu?r?u4`z9{I24UaiKEHp*=lP!KUBPW2kbDMP&SI-cQU2G^s?l;NB^(iU8QwdO zk~>pO1dMC``rp`yMYrl+<2ynn}eW6Kq1?q3$X;(;u0q$(M zbhr8IlAhg9c|CH%%>3Il$^Pj@R!y<-Tnx|9yjD06acQm!7A=$VHF~BYh|Cg!4#f>Q zOPtP7NTrIQk;N$pNnx@%&udeYB!KX+nf=fhWI3w_($4u%V_+})OE8IC1gtzA7O2&| zV8kyPKkx$ffb?%;XcZp=#T3i1-*Ww3l-+VABy!@yrvSb^bQ|bJ#BYW~)Y9iSM&}ta4&B>U=mNc#yPaP)9u1k+=Te2mLH18pd(pFY03$vy#2M$R}RMq0X zVWajA0}X+i;(!M~39(Vw4QC!T#fWGBtgZRGPS8z)-HYKWAb?ozfs<)SmKJ*NIX6+= z6hr=3>h2eN)YU4x1@XzBFH(+Ggu6U8zg}VzmdolkEz|_F%NUYfItZC0FR%)ct#C+K zuP4a_ZaxYqnBD;=oDh3goJ-E9&^DXaDiAp$^8JVSar)@UF>$O@`%2oAnElRnp!0vV z>N2&g9z{7WD~|jLBb=ca_c0O~Ai|R==3P>1GX3Uvx^SC5REGT!s*1T;7 z?%iu^xN5XqpQ^SwU-4U-+1E|)x+>60i~^@%r)RpRS*@{G4f0@O@s*bM(?}A{b!8y; zSL3q-q2MYFYA3nva-bN!`E#|oD~4}})4M5D4gTP)r<*5+WA_Oi5gYvFRpR2aUAin0 z=9I(=k>k9%IJfX4E6Zl@qQR5NHLP^poro@!@vkj~6k{{9WC@ozgR9|mgV)shw+&)Q z9SL+L&K;Na@W{5O`yEPJ3!Zb3%#=E7s2YHZK;{Mlq?Hj=o8Xj|IX9Cp!dcqN(~sE9 z2+n~a<9^^ggaJbQ(oFx+;e|?U2A?9b2V!egK{EM;=q*in1gpWkdk?JR-v0C$z(BFZvDPS)DKLY4My11!d=6LMuGAR+n$A42k}wyI)2k&EzMSkw zuj|>d7#bT(4NSv#2)QdS5lLSjEGJlc!;2BIzc+uBmJ7J+d_-oBi!^Z}g0Z#}w3ATyh3v`S*sLU*8Bw;e!my!Gjc0&(+P32Xd);p3|cXXtiehHHQWMf5S+7R>_$ zIuNNBn;P7u%=P diff --git a/external/lsquic/qir/run_endpoint.sh b/external/lsquic/qir/run_endpoint.sh deleted file mode 100644 index c16d575..0000000 --- a/external/lsquic/qir/run_endpoint.sh +++ /dev/null @@ -1,146 +0,0 @@ -#!/bin/bash -# -# run_endpoint.sh -- QUIC Interop Runner script for lsquic -# - -/setup.sh - -if [ "$ROLE" == "client" ]; then - # Wait for the simulator to start up. - /wait-for-it.sh sim:57832 -s -t 30 -fi - -echo TEST_PARAMS: $TEST_PARAMS -echo REQUESTS: "'$REQUESTS'" -eval $(perl <<'PERL' - @paths = split /\s+/, $ENV{REQUESTS}; - s~^https?://[^/]+~-p ~ for @paths; - print "PATHS='@paths'\n"; - $server = $ENV{REQUESTS}; - $server =~ s~^https?://~~; - $server =~ s~/.*~~; - ($server, $port) = split /:/, $server; - print "SERVER=$server\n"; - print "PORT=$port\n"; - print "N_REQS=", scalar(@paths), "\n"; - print "N_reqs=", scalar(@paths), "\n"; - if (@paths > 100) { - print "W=100\n"; - } else { - print "W=1\n"; - } -PERL -) -echo paths: $PATHS -echo server: $SERVER -echo port: $PORT - -# lsquic command-line tools create one file per connection when -G option -# is used. Here we make a copy and give it required name. -# -function maybe_create_keylog() { - local NAME=/logs/keys.log - if ls /logs/*.keys; then - # There may be more than one of these, as one file is created per - # connection. - cat /logs/*.keys > $NAME - fi - if [ -f $NAME ]; then - echo $NAME exists - else - echo $NAME does not exit - fi -} - -if [ "$ROLE" = server ]; then - if [ ! -z "$TESTCASE" ]; then - case "$TESTCASE" in - http3) - VERSIONS='-o version=h3-29 -o version=h3' - ;; - v2) - VERSIONS='-o version=h3-v2 -o version=h3 -Q hq-interop' - ;; - handshake|transfer|longrtt|resumption|blackhole|multiconnect|chacha20|zerortt) - VERSIONS='-o version=h3-29 -o version=h3 -o scid_iss_rate=0 -Q hq-interop' - ;; - connectionmigration) - VERSIONS='-o version=h3-29 -o version=h3 -o scid_iss_rate=0 -o preferred_v4=server4:4433 -o preferred_v6=server6:4433 -Q hq-interop' - ;; - retry) - VERSIONS='-o version=h3-29 -o version=h3 -o srej=1 -Q hq-interop' - FORCE_RETRY=1 - ;; - ecn) - VERSIONS='-o version=h3-29 -o version=h3 -Q hq-interop' - ECN='-o ecn=1' - ;; - *) exit 127 ;; - esac - fi - echo SERVER_PARAMS: $SERVER_PARAMS - exec env LSQUIC_FORCE_RETRY=$FORCE_RETRY /usr/bin/http_server $VERSIONS $ECN \ - -c server,/certs/cert.pem,/certs/priv.key \ - -c server4,/certs/cert.pem,/certs/priv.key \ - -c server6,/certs/cert.pem,/certs/priv.key \ - -c server46,/certs/cert.pem,/certs/priv.key \ - -s ::0:443 -s 0.0.0.0:443 -s ::0:4433 -s 0.0.0.0:4433 -s 193.167.100.100:12345 \ - -r /www -L debug 2>/logs/$TESTCASE.out -elif [ "$ROLE" = debug-server ]; then - exec /usr/bin/http_server $SERVER_PARAMS -elif [ "$ROLE" = client ]; then - if [ ! -z "$TESTCASE" ]; then - case "$TESTCASE" in - http3) - VERSIONS='-o version=h3' - ;; - v2) - VERSIONS='-o version=h3-v2 -o version=h3 -Q hq-interop' - ;; - handshake|transfer|longrtt|retry|multiplexing|blackhole|connectionmigration) - VERSIONS='-o version=h3 -Q hq-interop' - ;; - chacha20) - VERSIONS='-o version=h3 -Q hq-interop' - export OPENSSL_ia32cap=~0x200000200000000 - ;; - multiconnect) - VERSIONS='-o version=h3 -Q hq-interop' - N_REQS=1 - ;; - ecn) - VERSIONS='-o version=h3 -Q hq-interop' - ECN='-o ecn=1' - ;; - resumption) - VERSIONS='-o version=h3 -Q hq-interop' - RESUME='-0 /logs/resume.file' - ;; - *) exit 127 ;; - esac - fi - echo CLIENT_PARAMS: $CLIENT_PARAMS - if [ "$TESTCASE" = resumption ]; then - # Fetch first file: - /usr/bin/http_client $VERSIONS -s $SERVER:$PORT $PATHS \ - -r 1 -R 1 $RESUME \ - -B -7 /downloads -G /logs \ - -L debug 2>/logs/$TESTCASE-req1.out || exit $? - PATHS=`echo "$PATHS" | sed 's~-p /[^ ]* ~~'` - N_REQS=1 - N_reqs=1 - W=1 - echo "first request successful, new args: $N_REQS; $N_reqs; $PATHS" - fi - /usr/bin/http_client $VERSIONS -s $SERVER:$PORT $PATHS \ - -r $N_reqs -R $N_REQS -w $W $ECN $RESUME \ - -B -7 /downloads -G /logs \ - -L debug 2>/logs/$TESTCASE.out - EXIT_CODE=$? - maybe_create_keylog - sync - exit $EXIT_CODE -else - echo hi - exit 127 -fi diff --git a/external/lsquic/src/CMakeLists.txt b/external/lsquic/src/CMakeLists.txt deleted file mode 100644 index 5494fea..0000000 --- a/external/lsquic/src/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. -cmake_minimum_required(VERSION 3.0...3.23) - -add_subdirectory(liblsquic) diff --git a/external/lsquic/src/liblsquic/CMakeLists.txt b/external/lsquic/src/liblsquic/CMakeLists.txt deleted file mode 100644 index fe6307e..0000000 --- a/external/lsquic/src/liblsquic/CMakeLists.txt +++ /dev/null @@ -1,162 +0,0 @@ -# Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. -SET(lsquic_STAT_SRCS - ls-qpack/lsqpack.c - lsquic_adaptive_cc.c - lsquic_alarmset.c - lsquic_arr.c - lsquic_attq.c - lsquic_bbr.c - lsquic_bw_sampler.c - lsquic_cfcw.c - lsquic_chsk_stream.c - lsquic_conn.c - lsquic_crand.c - lsquic_crt_compress.c - lsquic_crypto.c - lsquic_cubic.c - lsquic_di_error.c - lsquic_di_hash.c - lsquic_di_nocopy.c - lsquic_enc_sess_common.c - lsquic_enc_sess_ietf.c - lsquic_eng_hist.c - lsquic_engine.c - lsquic_ev_log.c - lsquic_frab_list.c - lsquic_frame_common.c - lsquic_frame_reader.c - lsquic_frame_writer.c - lsquic_full_conn.c - lsquic_full_conn_ietf.c - lsquic_global.c - lsquic_handshake.c - lsquic_hash.c - lsquic_hcsi_reader.c - lsquic_hcso_writer.c - lsquic_headers_stream.c - lsquic_hkdf.c - lsquic_hpi.c - lsquic_hspack_valid.c - lsquic_http.c - lsquic_http1x_if.c - lsquic_logger.c - lsquic_malo.c - lsquic_min_heap.c - lsquic_mini_conn.c - lsquic_mini_conn_ietf.c - lsquic_minmax.c - lsquic_mm.c - lsquic_pacer.c - lsquic_packet_common.c - lsquic_packet_gquic.c - lsquic_packet_in.c - lsquic_packet_out.c - lsquic_packet_resize.c - lsquic_parse_Q046.c - lsquic_parse_Q050.c - lsquic_parse_common.c - lsquic_parse_gquic_be.c - lsquic_parse_gquic_common.c - lsquic_parse_ietf_v1.c - lsquic_parse_iquic_common.c - lsquic_pr_queue.c - lsquic_purga.c - lsquic_qdec_hdl.c - lsquic_qenc_hdl.c - lsquic_qlog.c - lsquic_qpack_exp.c - lsquic_rechist.c - lsquic_rtt.c - lsquic_send_ctl.c - lsquic_senhist.c - lsquic_set.c - lsquic_sfcw.c - lsquic_shsk_stream.c - lsquic_spi.c - lsquic_stock_shi.c - lsquic_str.c - lsquic_stream.c - lsquic_tokgen.c - lsquic_trans_params.c - lsquic_trechist.c - lsquic_util.c - lsquic_varint.c - lsquic_version.c -) - -IF(NOT MSVC) - SET(QPACK_FLAGS "-Wno-uninitialized") - INCLUDE(CheckCCompilerFlag) - CHECK_C_COMPILER_FLAG(-Wno-implicit-fallthrough HAS_NO_IMPLICIT_FALLTHROUGH) - IF (HAS_NO_IMPLICIT_FALLTHROUGH) - SET(QPACK_FLAGS "${QPACK_FLAGS} -Wno-implicit-fallthrough") - ENDIF() -set_source_files_properties(ls-qpack/lsqpack.c PROPERTIES COMPILE_FLAGS ${QPACK_FLAGS}) -ENDIF() - -include_directories(ls-qpack) - -IF(PROJECT_NAME STREQUAL "openlitespeed") - INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src/spdy) -ELSE() - INCLUDE_DIRECTORIES(../lshpack) - SET(lsquic_STAT_SRCS ${lsquic_STAT_SRCS} - lsquic_xxhash.c - ../lshpack/lshpack.c - ) -ENDIF() - -ADD_CUSTOM_COMMAND( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lsquic_versions_to_string.c - COMMAND ${PERL_EXECUTABLE} - ARGS ${CMAKE_CURRENT_SOURCE_DIR}/gen-verstrs.pl ${CMAKE_CURRENT_SOURCE_DIR}/../../include/lsquic.h ${CMAKE_CURRENT_BINARY_DIR}/lsquic_versions_to_string.c - DEPENDS ./gen-verstrs.pl ${CMAKE_CURRENT_SOURCE_DIR}/../../include/lsquic.h -) -SET(lsquic_STAT_SRCS ${lsquic_STAT_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/lsquic_versions_to_string.c) -SET(lsquic_STAT_SRCS ${lsquic_STAT_SRCS} ls-sfparser.c) - -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DXXH_HEADER_NAME=\\\"lsquic_xxhash.h\\\"") -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLSQPACK_ENC_LOGGER_HEADER=\\\"lsquic_qpack_enc_logger.h\\\"") -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLSQPACK_DEC_LOGGER_HEADER=\\\"lsquic_qpack_dec_logger.h\\\"") - -if(NEED_LIBRT_FOR_clock_getres) - target_link_libraries(lsquic PRIVATE ${RT_LIBRARY}) -endif() - -IF(LSQUIC_SHARED_LIB) - add_library(lsquic SHARED ${lsquic_STAT_SRCS}) - TARGET_LINK_LIBRARIES(lsquic PRIVATE ${BORINGSSL_LIB_ssl} ${BORINGSSL_LIB_crypto} ${ZLIB_LIB}) - IF(MSVC) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLSQUIC_EXPORTS") - TARGET_LINK_LIBRARIES(lsquic PRIVATE ws2_32.lib) - ENDIF() -ELSE() - add_library(lsquic STATIC ${lsquic_STAT_SRCS}) -ENDIF() - -target_include_directories( - lsquic PUBLIC $) - -install(TARGETS lsquic - EXPORT lsquic-targets - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} -) - -include(CMakePackageConfigHelpers) -configure_package_config_file( - lsquic-config.cmake ${CMAKE_CURRENT_BINARY_DIR}/lsquic-config.cmake - INSTALL_DESTINATION share/lsquic - NO_CHECK_REQUIRED_COMPONENTS_MACRO - PATH_VARS CMAKE_INSTALL_INCLUDEDIR) - -install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/lsquic-config.cmake - DESTINATION share/lsquic) - -install( - EXPORT lsquic-targets - DESTINATION share/lsquic - NAMESPACE lsquic:: - FILE lsquic-targets.cmake) - diff --git a/external/lsquic/src/liblsquic/Makefile.am b/external/lsquic/src/liblsquic/Makefile.am deleted file mode 100644 index 3491482..0000000 --- a/external/lsquic/src/liblsquic/Makefile.am +++ /dev/null @@ -1,96 +0,0 @@ -noinst_LIBRARIES = liblsquic.a - -AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/src -I$(top_srcdir)/src/lsr -I$(top_srcdir)/src/liblsquic/ls-qpack -I$(top_srcdir)/src/spdy/ - - -liblsquic_a_METASOURCES = AUTO - -liblsquic_a_SOURCES = \ - ls-qpack/lsqpack.c \ - lsquic_adaptive_cc.c \ - lsquic_alarmset.c \ - lsquic_arr.c \ - lsquic_attq.c \ - lsquic_bbr.c \ - lsquic_bw_sampler.c \ - lsquic_cfcw.c \ - lsquic_chsk_stream.c \ - lsquic_conn.c \ - lsquic_crand.c \ - lsquic_crt_compress.c \ - lsquic_crypto.c \ - lsquic_cubic.c \ - lsquic_di_error.c \ - lsquic_di_hash.c \ - lsquic_di_nocopy.c \ - lsquic_enc_sess_common.c \ - lsquic_enc_sess_ietf.c \ - lsquic_eng_hist.c \ - lsquic_engine.c \ - lsquic_ev_log.c \ - lsquic_frab_list.c \ - lsquic_frame_common.c \ - lsquic_frame_reader.c \ - lsquic_frame_writer.c \ - lsquic_full_conn.c \ - lsquic_full_conn_ietf.c \ - lsquic_global.c \ - lsquic_handshake.c \ - lsquic_hash.c \ - lsquic_hcsi_reader.c \ - lsquic_hcso_writer.c \ - lsquic_headers_stream.c \ - lsquic_hkdf.c \ - lsquic_hpi.c \ - lsquic_hspack_valid.c \ - lsquic_http.c \ - lsquic_http1x_if.c \ - lsquic_logger.c \ - lsquic_malo.c \ - lsquic_min_heap.c \ - lsquic_mini_conn.c \ - lsquic_mini_conn_ietf.c \ - lsquic_minmax.c \ - lsquic_mm.c \ - lsquic_pacer.c \ - lsquic_packet_common.c \ - lsquic_packet_gquic.c \ - lsquic_packet_in.c \ - lsquic_packet_out.c \ - lsquic_packet_resize.c \ - lsquic_parse_Q046.c \ - lsquic_parse_Q050.c \ - lsquic_parse_common.c \ - lsquic_parse_gquic_be.c \ - lsquic_parse_gquic_common.c \ - lsquic_parse_ietf_v1.c \ - lsquic_parse_iquic_common.c \ - lsquic_pr_queue.c \ - lsquic_purga.c \ - lsquic_qdec_hdl.c \ - lsquic_qenc_hdl.c \ - lsquic_qlog.c \ - lsquic_qpack_exp.c \ - lsquic_rechist.c \ - lsquic_rtt.c \ - lsquic_send_ctl.c \ - lsquic_senhist.c \ - lsquic_set.c \ - lsquic_sfcw.c \ - lsquic_shsk_stream.c \ - lsquic_spi.c \ - lsquic_stock_shi.c \ - lsquic_str.c \ - lsquic_stream.c \ - lsquic_tokgen.c \ - lsquic_trans_params.c \ - lsquic_trechist.c \ - lsquic_util.c \ - lsquic_varint.c \ - lsquic_version.c \ - lsquic_xxhash.c \ - lsquic_versions_to_string.c \ - ls-sfparser.c - -lsquic_versions_to_string.c: gen-verstrs.pl - $(top_srcdir)/src/liblsquic/gen-verstrs.pl $(top_srcdir)/include/lsquic.h lsquic_versions_to_string.c diff --git a/external/lsquic/src/liblsquic/gen-verstrs.pl b/external/lsquic/src/liblsquic/gen-verstrs.pl deleted file mode 100755 index 0aea696..0000000 --- a/external/lsquic/src/liblsquic/gen-verstrs.pl +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/env perl -# -# Generate C file that contains version strings - -($header # This is lsquic.h that contains version enum which we parse - , $outfile # This is destination C file - ) = @ARGV; - -open HEADER, $header - or die "cannot open $header for reading: $!"; -open OUT, ">$outfile" - or die "cannot open $outfile for writing: $!"; - -while (

) { - if (/^enum lsquic_version$/ .. /^}/) { - if (/^\s*(LSQVER_0*(\d+)),\s*$/ && $1 ne 'LSQVER_098') { - if ($2 < 50) { - push @enums, $1; - push @versions, $2; - } - push @all_versions, $1; - push @all_alpns, "h3-Q0$2"; - } - if (/^\s*(LSQVER_ID(\d+))\b/) { - push @draft_versions, $2; - push @all_versions, $1; - push @all_alpns, "h3-$2"; - } - if (/^\s*(LSQVER_I(\d{3}))\b/) { - push @all_versions, $1; - if (not grep 'h3' eq $_, @all_alpns) { - push @all_alpns, "h3"; - } - } - } -} - -close HEADER; - -$timestamp = localtime; - -print OUT < -#include - -#include "lsquic.h" - -struct lsquic_engine; - -static const char *const versions_to_string[ 1 << N_LSQVER ] = { -C_CODE - -$max_mask = (1 << @versions) - 1; - -for ($mask = 0; $mask <= $max_mask; ++$mask) { - my @indexes; - for ($i = 0; $i < @versions; ++$i) { - if ($mask & (1 << $i)) { - push @indexes, $i; - } - } - print OUT " [", - join('|', map "(1<<$_)", @enums[@indexes]) || 0, - "] = \"", - join(',', @versions[@indexes]), - "\",\n"; -} - -$enums = join '|', map "(1<<$_)", sort @enums; - -print OUT <<"C_CODE"; -}; - - -const char * -lsquic_get_alt_svc_versions (unsigned versions) -{ - /* Limit to versions in versions_to_string: */ - versions &= ($enums); - return versions_to_string[ versions ]; -} - -C_CODE - - -$all_version_count_and_null = scalar(@all_versions) + 1; - -print OUT <<"C_CODE"; -static const struct { - unsigned versions; - const char *h3_alpns[$all_version_count_and_null]; -} vers_2_h3_alnps[] = { - { 0, { NULL }}, -C_CODE - -for ($i = 0; $i < (1 << @all_versions); ++$i) -{ - my (@vers, @alpns); - for ($j = 0; $j < @all_versions; ++$j) - { - if ($i & (1 << $j)) - { - push @vers, $all_versions[$j]; - push @alpns, $all_alpns[$j]; - } - } - if (@vers) { - print OUT " {", join("|", map "(1<<$_)", @vers), ", ", - "{ ", join(", ", (map qq("$_"), @alpns), "NULL"), " }},\n"; - } -} - -$all_versions = join "|", map "(1<<$_)", @all_versions; - -print OUT <<"C_CODE"; -}; - -const char *const * -lsquic_get_h3_alpns (unsigned versions) -{ - unsigned i; - - versions &= ($all_versions); - - for (i = 0; i < sizeof(vers_2_h3_alnps) / sizeof(vers_2_h3_alnps[0]); ++i) - if (versions == vers_2_h3_alnps[i].versions) - return vers_2_h3_alnps[i].h3_alpns; - - assert(0); - return vers_2_h3_alnps[0].h3_alpns; -} -C_CODE - - -print OUT <<'C_CODE'; - -enum lsquic_version -lsquic_alpn2ver (const char *alpn, size_t len) -{ - static const struct el { - size_t len; - char alpn[10]; - enum lsquic_version version; - } map[] = { -C_CODE - -for ($i = 0; $i < @all_alpns; ++$i) { - print OUT " {sizeof(\"$all_alpns[$i]\")-1,\"$all_alpns[$i]\", $all_versions[$i]},\n"; -} - -print OUT <<'C_CODE'; - }; - const struct el *el; - - if (alpn) - for (el = map; el < map + sizeof(map) / sizeof(map[0]); ++el) - if (el->len == len && 0 == strncmp(el->alpn, alpn, len)) - return el->version; - - return -1; -} -C_CODE - -close OUT; diff --git a/external/lsquic/src/liblsquic/ls-qpack/.appveyor.yml b/external/lsquic/src/liblsquic/ls-qpack/.appveyor.yml deleted file mode 100644 index e2bf22a..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/.appveyor.yml +++ /dev/null @@ -1,46 +0,0 @@ -version: 1.0.{build} - -image: Visual Studio 2017 - -cache: -- c:\tools\vcpkg\installed - -environment: - matrix: - - job_name: "Internal xxhash" - LSQPACK_XXH: ON - XXH_CMAKE: UNUSED - - job_name: "External xxhash (CMake)" - LSQPACK_XXH: OFF - XXH_CMAKE: REQUIRE - - job_name: "External xxhash (pkgconfig)" - LSQPACK_XXH: OFF - XXH_CMAKE: DISABLE - -before_build: - - git -C c:\tools\vcpkg\ fetch - - git -C c:\tools\vcpkg\ checkout 2024.08.23 - - c:\tools\vcpkg\bootstrap-vcpkg.bat - - vcpkg x-set-installed getopt:x64-windows xxhash:x64-windows pkgconf:x64-windows - - cmake . - -DCMAKE_TOOLCHAIN_FILE=c:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake - -DVCPKG_INSTALLED_DIR=c:/tools/vcpkg/installed - -DVCPKG_TARGET_TRIPLET=x64-windows - -DPKG_CONFIG_EXECUTABLE=c:/tools/vcpkg/installed/x64-windows/tools/pkgconf/pkgconf.exe - -DCMAKE_BUILD_TYPE=Debug - -DCMAKE_GENERATOR_PLATFORM=x64 - -DLSQPACK_TESTS=ON - -DLSQPACK_XXH=%LSQPACK_XXH% - -DCMAKE_%XXH_CMAKE%_FIND_PACKAGE_xxHash=ON - -DGETOPT_INCLUDE_DIR=c:/tools/vcpkg/installed/x64-windows/include - -DGETOPT_LIB=c:/tools/vcpkg/installed/x64-windows/lib/getopt.lib - -build_script: - - cmake --build . - -before_test: - - set PATH=%PATH%;c:\projects\ls-qpack\bin\Debug - -test_script: - - dir - - msbuild RUN_TESTS.vcxproj diff --git a/external/lsquic/src/liblsquic/ls-qpack/.cirrus.yml b/external/lsquic/src/liblsquic/ls-qpack/.cirrus.yml deleted file mode 100644 index bb66d70..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/.cirrus.yml +++ /dev/null @@ -1,6 +0,0 @@ -freebsd_instance: - image: freebsd-13-3-release-amd64 - -task: - install_script: pkg install -y cmake bash perl5 p5-PkgConfig-LibPkgConf devel/xxhash - script: cmake -DLSQPACK_TESTS=ON -DLSQPACK_XXH=OFF . && make && make test diff --git a/external/lsquic/src/liblsquic/ls-qpack/.travis.yml b/external/lsquic/src/liblsquic/ls-qpack/.travis.yml deleted file mode 100644 index 8dcea9f..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/.travis.yml +++ /dev/null @@ -1,32 +0,0 @@ -language: c -sudo: false -addons: - apt: -matrix: - include: - - name: Linux (gcc-8) - os: linux - dist: xenial - compiler: gcc-8 - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: g++-8 - - name: Linux (clang) - os: linux - dist: xenial - compiler: clang - - name: macOS (xcode) - os: osx - - name: macOS (xcode 10.1) - os: osx - image: xcode10.1 -before_install: - - $CC --version - - cmake --version -before_script: - - cmake -DLSQPACK_TESTS=ON . -script: - - make - - make test diff --git a/external/lsquic/src/liblsquic/ls-qpack/CMakeLists.txt b/external/lsquic/src/liblsquic/ls-qpack/CMakeLists.txt deleted file mode 100644 index 1163249..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/CMakeLists.txt +++ /dev/null @@ -1,160 +0,0 @@ -# The following variable can be defined on the command line: -# -# BUILD_SHARED_LIBS -# -# The following environment variables will be taken into account when running -# cmake for the first time: -# -# CFLAGS -# LDFLAGS - -cmake_minimum_required(VERSION 3.1) -project(ls-qpack - LANGUAGES C - HOMEPAGE_URL "https://github.com/litespeedtech/ls-qpack" - DESCRIPTION "QPACK compression library for use with HTTP/3" - VERSION 2.6.1) - -option(LSQPACK_TESTS "Build tests") -option(LSQPACK_BIN "Build binaries" ON) -option(LSQPACK_XXH "Include XXH" ON) -option(BUILD_SHARED_LIBS OFF) - -# Use `cmake -DBUILD_SHARED_LIBS=OFF` to build a static library. -add_library(ls-qpack "") -add_library(ls-qpack::ls-qpack ALIAS ls-qpack) -set_target_properties(ls-qpack PROPERTIES - VERSION ${PROJECT_VERSION} - SOVERSION ${PROJECT_VERSION_MAJOR}) -target_include_directories(ls-qpack PUBLIC - $ - $ -) -target_sources(ls-qpack PRIVATE lsqpack.c) - -if(LSQPACK_XXH) - target_include_directories(ls-qpack PRIVATE deps/xxhash/) - target_sources(ls-qpack PRIVATE deps/xxhash/xxhash.c) - set(LSQPACK_DEPENDS "") -else() - find_package(xxHash CONFIG) - if(NOT xxHash_FOUND) - find_package(PkgConfig REQUIRED) - pkg_check_modules(LS_QPACK_XXH REQUIRED IMPORTED_TARGET libxxhash GLOBAL) - add_library(xxHash::xxhash ALIAS PkgConfig::LS_QPACK_XXH) - endif() - target_link_libraries(ls-qpack PRIVATE xxHash::xxhash) - set(LSQPACK_DEPENDS "libxxhash") -endif() - -if(WIN32 OR EMSCRIPTEN) - target_include_directories(ls-qpack PUBLIC - $ - $ - ) -endif() - -if(MSVC) - target_compile_options(ls-qpack PRIVATE - /Wall - /wd4100 # unreffed parameter - /wd4200 # zero-sized array - # Apparently this C99 construct is not supported properly by VS: - # https://stackoverflow.com/questions/1064930/struct-initializer-typedef-with-visual-studio - /wd4204 # non-constant aggregate initializer - /wd4255 # no function prototype (getopt) - /wd4334 # result of 32-bit shift implicitly converted to 64 bits - /wd4820 # padding - /wd4668 # undefined macro - /wd4710 # not inlined by default - /wd4996 # unsafe function - /wd4061 # enum is not explicitly handled by a case - /wd5045 # Compiler will insert Spectre mitigation for memory load - ) -else() - target_compile_options(ls-qpack PRIVATE - -Wall - -Wextra - -Wno-unused-parameter - -fno-omit-frame-pointer - ) -endif() - -IF (CMAKE_SYSTEM_NAME STREQUAL Windows) - IF (LSQPACK_TESTS OR LSQPACK_BIN) - FIND_PATH(GETOPT_INCLUDE_DIR NAMES getopt.h) - IF (GETOPT_INCLUDE_DIR) - INCLUDE_DIRECTORIES(${GETOPT_INCLUDE_DIR}) - ELSE() - MESSAGE(FATAL_ERROR "getopt.h was not found") - ENDIF() - FIND_LIBRARY(GETOPT_LIB getopt) - IF(GETOPT_LIB) - MESSAGE(STATUS "Found getopt: ${GETOPT_LIB}") - ELSE() - MESSAGE(STATUS "getopt not found") - ENDIF() - ENDIF() -ENDIF() - -IF(DEFINED LSXPACK_MAX_STRLEN) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLSXPACK_MAX_STRLEN=${LSXPACK_MAX_STRLEN}") -ENDIF() - -IF (CMAKE_BUILD_TYPE STREQUAL MinSizeRel) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLS_QPACK_USE_LARGE_TABLES=0") -ENDIF() - -IF(LSQPACK_TESTS) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLSQPACK_DEVEL_MODE=1") -ENDIF() - -INCLUDE(CheckCCompilerFlag) -CHECK_C_COMPILER_FLAG(-Wno-implicit-fallthrough HAS_NO_IMPLICIT_FALLTHROUGH) -IF (HAS_NO_IMPLICIT_FALLTHROUGH) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-implicit-fallthrough") -ENDIF() - -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} $ENV{EXTRA_CFLAGS}") -MESSAGE(STATUS "Compiler flags: ${CMAKE_C_FLAGS}") - -if(LSQPACK_TESTS) - enable_testing() - add_subdirectory(test) -endif() - -if(LSQPACK_BIN) - add_subdirectory(bin) -endif() - -include(GNUInstallDirs) -configure_file(lsqpack.pc.in lsqpack.pc @ONLY) -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/lsqpack.pc" - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - -configure_file(ls-qpack-config.cmake.in ls-qpack-config.cmake @ONLY) -install(TARGETS ls-qpack EXPORT ls-qpack-config - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ls-qpack-config.cmake" - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ls-qpack) -install( - EXPORT ls-qpack-config - FILE ls-qpack-targets.cmake - NAMESPACE ls-qpack:: - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ls-qpack -) -install(FILES lsqpack.h lsxpack_header.h - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - -if(LSQPACK_BIN) - install(TARGETS - encode-int - fuzz-decode - interop-decode - interop-encode - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -endif() - -if(WIN32 OR EMSCRIPTEN) - install(DIRECTORY wincompat/sys DESTINATION include) -endif() diff --git a/external/lsquic/src/liblsquic/ls-qpack/LICENSE b/external/lsquic/src/liblsquic/ls-qpack/LICENSE deleted file mode 100644 index 4b3c1fd..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2018 - 2022 LiteSpeed Technologies Inc - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/external/lsquic/src/liblsquic/ls-qpack/README.md b/external/lsquic/src/liblsquic/ls-qpack/README.md deleted file mode 100644 index 23bda58..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/README.md +++ /dev/null @@ -1,69 +0,0 @@ -[![Build Status](https://travis-ci.org/litespeedtech/ls-qpack.svg?branch=master)](https://travis-ci.org/litespeedtech/ls-qpack) -[![Build status](https://ci.appveyor.com/api/projects/status/kat31lt42ds0rmom?svg=true)](https://ci.appveyor.com/project/litespeedtech/ls-qpack) -[![Build Status](https://api.cirrus-ci.com/github/litespeedtech/ls-qpack.svg)](https://cirrus-ci.com/github/litespeedtech/ls-qpack) - -# ls-qpack -QPACK compression library for use with HTTP/3 - -## Introduction - -QPACK is the compression mechanism used by -[HTTP/3](https://en.wikipedia.org/wiki/HTTP/3) to compress HTTP headers. -It is in the process of being standardazed by the QUIC Working Group. The -[QPACK Internet-Draft](https://tools.ietf.org/html/draft-ietf-quic-qpack-11) -is has been stable for some time and we don't expect functional changes to -it before the final RFC is released. - -## Functionality - -ls-qpack is a full-featured, tested, and fast QPACK library. The QPACK encoder -produces excellent compression results based on an [innovative mnemonic technique](https://blog.litespeedtech.com/2021/04/05/qpack-mnemonic-technique/). It boasts the fastest Huffman -[encoder](https://blog.litespeedtech.com/2019/10/03/fast-huffman-encoder/) and -[decoder](https://blog.litespeedtech.com/2019/09/16/fast-huffman-decoder/). - -The library is production quality. It is used in -[OpenLiteSpeed](https://openlitespeed.org/), -LiteSpeed [Web Server](https://www.litespeedtech.com/products#lsws), -and LiteSpeed [Web ADC](https://www.litespeedtech.com/products#wadc). - -The library is robust: -1. The encoder does not assume anything about usual HTTP headers such as `Server` - or `User-Agent`. Instead, it uses its mnemonic compression technique to - achieve good compression results for any input. -1. The decoder uses modulo arithmetic to track dynamic table insertions. This is - in contrast to all other QPACK implementations, which use an integer counter, - meaning that at some point, the decoder will break. -1. The decoder processes input in streaming fashion. The caller does not have to - buffer the contents of HTTP/3 `HEADERS` frame. Instead, the decoder can be - supplied input byte-by-byte. - -## Other Languages - -The ls-qpack library is implemented in vanilla C99. It makes it a good candidate -for wrapping into a library for a higher-level language. As of this writing, we -know of the following wrappers: -- Go: [ls-qpack-go](https://github.com/mpiraux/ls-qpack-go) -- Python: [pylsqpack](https://github.com/aiortc/pylsqpack) -- Rust: [ls-qpack-rs](https://github.com/BiagioFesta/ls-qpack-rs) -- TypeScript: [quicker](https://github.com/rmarx/quicker/tree/draft-20/lib/ls-qpack) -- Ruby: [lsqpack-ruby](https://github.com/unasuke/lsqpack-ruby) - -## Versioning - -Before the QPACK RFC is released, the three parts of the version are: -- MAJOR: set to zero; -- MINOR: set to the number of QPACK Internet-Draft the lirbary supports; and -- PATCH: set to the patch number - -Once the RFC is released, MAJOR will be set to 1 and the version will follow -the usual MAJOR.MINOR.PATCH pattern. - -## API - -The API is documented in the header file, [lsqpack.h](lsqpack.h). -One example how it is used in real code can be seen in -[lsquic](https://github.com/litespeedtech/lsquic), a QUIC and HTTP/3 library -developed by LiteSpeed Technologies. - -A different API, without the use of `struct lsxpack_header`, is available -on branch-v1. diff --git a/external/lsquic/src/liblsquic/ls-qpack/bin/CMakeLists.txt b/external/lsquic/src/liblsquic/ls-qpack/bin/CMakeLists.txt deleted file mode 100644 index 4663c43..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/bin/CMakeLists.txt +++ /dev/null @@ -1,26 +0,0 @@ -function(lsqpack_add_executable TARGET) - add_executable(${TARGET} "") - target_link_libraries(${TARGET} PRIVATE ls-qpack) - - if(LSQPACK_XXH) - target_sources(${TARGET} PRIVATE ${TARGET}.c ../deps/xxhash/xxhash.c) - target_include_directories(${TARGET} PRIVATE ../deps/xxhash) - else() - target_sources(${TARGET} PRIVATE ${TARGET}.c) - target_link_libraries(${TARGET} PUBLIC xxHash::xxhash) - endif() - - if(WIN32) - target_include_directories(${TARGET} PRIVATE ../wincompat) - target_link_libraries(${TARGET} PRIVATE ${GETOPT_LIB}) - else() - target_link_libraries(${TARGET} PRIVATE m) - endif() -endfunction() - -lsqpack_add_executable(interop-encode) -lsqpack_add_executable(interop-decode) -lsqpack_add_executable(encode-int) -lsqpack_add_executable(fuzz-decode) - -target_include_directories(interop-decode PRIVATE ../test) diff --git a/external/lsquic/src/liblsquic/ls-qpack/bin/encode-int.c b/external/lsquic/src/liblsquic/ls-qpack/bin/encode-int.c deleted file mode 100644 index 6c4d94c..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/bin/encode-int.c +++ /dev/null @@ -1,87 +0,0 @@ -/* encode-int: encode an integer into HPACK varint. */ - -#include -#include -#include -#include - - -static unsigned char * -enc_int (unsigned char *dst, unsigned char *const end, uint64_t value, - unsigned prefix_bits) -{ - unsigned char *const dst_orig = dst; - - /* This function assumes that at least one byte is available */ - assert(dst < end); - if (value < (1u << prefix_bits) - 1) - *dst++ |= value; - else - { - *dst++ |= (1 << prefix_bits) - 1; - value -= (1 << prefix_bits) - 1; - while (value >= 128) - { - if (dst < end) - { - *dst++ = 0x80 | (unsigned char) value; - value >>= 7; - } - else - return dst_orig; - } - if (dst < end) - *dst++ = (unsigned char) value; - else - return dst_orig; - } - return dst; -} - -static unsigned -lsqpack_val2len (uint64_t value, unsigned prefix_bits) -{ - uint64_t mask = (1ULL << prefix_bits) - 1; - return 1 - + (value >= mask ) - + (value >= ((1ULL << 7) + mask)) - + (value >= ((1ULL << 14) + mask)) - + (value >= ((1ULL << 21) + mask)) - + (value >= ((1ULL << 28) + mask)) - + (value >= ((1ULL << 35) + mask)) - + (value >= ((1ULL << 42) + mask)) - + (value >= ((1ULL << 49) + mask)) - + (value >= ((1ULL << 56) + mask)) - + (value >= ((1ULL << 63) + mask)) - ; -} - -int -main (int argc, char **argv) -{ - unsigned long long val; - unsigned char *p; - unsigned prefix_bits; - unsigned char buf[20]; - - if (argc != 3) - { - fprintf(stderr, "Usage: %s prefix_bits value\n", argv[0]); - exit(EXIT_FAILURE); - } - - prefix_bits = atoi(argv[1]); - val = strtoull(argv[2], NULL, 10); - - fprintf(stderr, "expected size: %u\n", lsqpack_val2len(val, prefix_bits)); - buf[0] = 0; - p = enc_int(buf, buf + sizeof(buf), val, prefix_bits); - - if (p > buf) - { - fwrite(buf, 1, p - buf, stdout); - exit(EXIT_SUCCESS); - } - else - exit(EXIT_FAILURE); -} diff --git a/external/lsquic/src/liblsquic/ls-qpack/bin/fuzz-decode.c b/external/lsquic/src/liblsquic/ls-qpack/bin/fuzz-decode.c deleted file mode 100644 index 2c50655..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/bin/fuzz-decode.c +++ /dev/null @@ -1,317 +0,0 @@ -/* - * fuzz-decode: special program for fuzzing. It still reads encoded - * files just like interop-decode, but tries to do it faster and - * forgoes several advanced options. - */ - -#ifdef WIN32 - -#include - -int -main (int argc, char **argv) -{ - fprintf(stderr, "%s is not supported on Windows: need mmap(2)\n", argv[0]); - return 1; -} - -#else - -#include - -#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) -#include -#define bswap_16 bswap16 -#define bswap_32 bswap32 -#define bswap_64 bswap64 -#elif defined(__OpenBSD__) -#define bswap_16 swap16 -#define bswap_32 swap32 -#define bswap_64 swap64 -#elif defined(__APPLE__) -#include -#define bswap_16 OSSwapInt16 -#define bswap_32 OSSwapInt32 -#define bswap_64 OSSwapInt64 -#elif defined(WIN32) -#define bswap_16 _byteswap_ushort -#define bswap_32 _byteswap_ulong -#define bswap_64 _byteswap_uint64 -#else -#include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "lsqpack.h" -#include "lsxpack_header.h" - -#define MIN(a, b) ((a) < (b) ? (a) : (b)) - -static void -usage (const char *name) -{ - fprintf(stderr, -"Usage: %s [options] [-i input] [-o output]\n" -"\n" -"Options:\n" -" -i FILE Input file.\n" -" -f FILE Fuzz file: this is the stuff the fuzzer will change.\n" -" -s NUMBER Maximum number of risked streams. Defaults to %u.\n" -" -t NUMBER Dynamic table size. Defaults to %u.\n" -"\n" -" -h Print this help screen and exit\n" - , name, LSQPACK_DEF_MAX_RISKED_STREAMS, LSQPACK_DEF_DYN_TABLE_SIZE); -} - - -static void -hblock_unblocked (void *buf_p) -{ - exit(1); -} - - -struct header -{ - LIST_ENTRY(header) next_header; - struct lsxpack_header xhdr; - char buf[0x10000]; -}; - - -LIST_HEAD(, header) s_headers; - - -static struct lsxpack_header * -prepare_decode (void *hblock_ctx, struct lsxpack_header *xhdr, size_t space) -{ - struct header *header; - - if (xhdr) - { - /* If the original buffer is not enough, we don't reallocate */ - header = (struct header *) ((char *) xhdr - - offsetof(struct header, xhdr)); - LIST_REMOVE(header, next_header); - free(header); - return NULL; - } - else if (space <= LSXPACK_MAX_STRLEN) - { - header = malloc(sizeof(*header)); - if (!header) - return NULL; - LIST_INSERT_HEAD(&s_headers, header, next_header); - lsxpack_header_prepare_decode(&header->xhdr, header->buf, - 0, sizeof(header->buf)); - return &header->xhdr; - } - else - return NULL; -} - - -static int -process_header (void *hblock_ctx, struct lsxpack_header *xhdr) -{ - struct header *header; - - header = (struct header *) ((char *) xhdr - offsetof(struct header, xhdr)); - LIST_REMOVE(header, next_header); - free(header); - return 0; -} - - -static const struct lsqpack_dec_hset_if hset_if = { - .dhi_unblocked = hblock_unblocked, - .dhi_prepare_decode = prepare_decode, - .dhi_process_header = process_header, -}; - - -int -main (int argc, char **argv) -{ - int in_fd = -1, fuzz_fd = STDIN_FILENO; - int opt; - unsigned dyn_table_size = LSQPACK_DEF_DYN_TABLE_SIZE, - max_risked_streams = LSQPACK_DEF_MAX_RISKED_STREAMS; - struct lsqpack_dec decoder; - const unsigned char *p, *end; - unsigned char *begin; - struct stat st; - uint64_t stream_id; - uint32_t size; - int r; - struct header *header; - - while (-1 != (opt = getopt(argc, argv, "i:f:s:t:h"))) - { - switch (opt) - { - case 'i': - in_fd = open(optarg, O_RDONLY); - if (in_fd < 0) - { - fprintf(stderr, "cannot open `%s' for reading: %s\n", - optarg, strerror(errno)); - exit(EXIT_FAILURE); - } - break; - case 'f': - fuzz_fd = open(optarg, O_RDONLY); - if (fuzz_fd < 0) - { - fprintf(stderr, "cannot open `%s' for reading: %s\n", - optarg, strerror(errno)); - exit(EXIT_FAILURE); - } - break; - case 's': - max_risked_streams = atoi(optarg); - break; - case 't': - dyn_table_size = atoi(optarg); - break; - case 'h': - usage(argv[0]); - exit(EXIT_SUCCESS); - default: - exit(EXIT_FAILURE); - } - } - - LIST_INIT(&s_headers); - lsqpack_dec_init(&decoder, NULL, dyn_table_size, max_risked_streams, - &hset_if, 0 /* TODO: add command-line option */); - - if (in_fd < 0) - { - fprintf(stderr, "Specify input using `-i' option\n"); - exit(1); - } - - if (0 != fstat(in_fd, &st)) - { - perror("fstat"); - exit(1); - } - - begin = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, in_fd, 0); - if (!begin) - { - perror("mmap"); - exit(1); - } - - p = begin; - end = begin + st.st_size; - while (p + sizeof(stream_id) + sizeof(size) < end) - { - stream_id = * (uint64_t *) p; - p += sizeof(uint64_t); - size = * (uint32_t *) p; - p += sizeof(uint32_t); -#if __BYTE_ORDER == __LITTLE_ENDIAN - stream_id = bswap_64(stream_id); - size = bswap_32(size); -#endif - if (p + size > end) - { - fprintf(stderr, "truncated input at offset %u", - (unsigned) (p - begin)); - abort(); - } - if (stream_id == 0) - { - r = lsqpack_dec_enc_in(&decoder, p, size); - if (r != 0) - abort(); - } - else - { - const unsigned char *cur = p; - enum lsqpack_read_header_status rhs; - rhs = lsqpack_dec_header_in(&decoder, NULL, stream_id, - size, &cur, size, NULL, NULL); - if (rhs != LQRHS_DONE || (uint32_t) (cur - p) != size) - abort(); - } - p += size; - } - - munmap(begin, st.st_size); - (void) close(in_fd); - - /* Now let's read the fuzzed part */ - - if (0 != fstat(fuzz_fd, &st)) - { - perror("fstat"); - exit(1); - } - - begin = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fuzz_fd, 0); - if (!begin) - { - perror("mmap"); - exit(1); - } - - p = begin; - end = begin + st.st_size; - while (p + sizeof(stream_id) + sizeof(size) < end) - { - stream_id = * (uint64_t *) p; - p += sizeof(uint64_t); - size = * (uint32_t *) p; - p += sizeof(uint32_t); -#if __BYTE_ORDER == __LITTLE_ENDIAN - stream_id = bswap_64(stream_id); - size = bswap_32(size); -#endif - if (stream_id == 0) - { - r = lsqpack_dec_enc_in(&decoder, p, MIN(size, (uint32_t) (end - p))); - (void) r; - } - else - { - const unsigned char *cur = p; - enum lsqpack_read_header_status rhs; - size = MIN(size, (uint32_t) (end - p)); - rhs = lsqpack_dec_header_in(&decoder, NULL, stream_id, - size, &cur, size, NULL, NULL); - (void) rhs; - } - break; - } - - munmap(begin, st.st_size); - (void) close(fuzz_fd); - - lsqpack_dec_cleanup(&decoder); - while (!LIST_EMPTY(&s_headers)) - { - header = LIST_FIRST(&s_headers); - LIST_REMOVE(header, next_header); - free(header); - } - - exit(0); -} - -#endif diff --git a/external/lsquic/src/liblsquic/ls-qpack/bin/interop-decode.c b/external/lsquic/src/liblsquic/ls-qpack/bin/interop-decode.c deleted file mode 100644 index 68cf00b..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/bin/interop-decode.c +++ /dev/null @@ -1,728 +0,0 @@ -/* - * QPACK Interop -- decode from intermediate format and output QIF - * - * https://github.com/quicwg/base-drafts/wiki/QPACK-Offline-Interop - */ - -#include - -#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) -#include -#define bswap_16 bswap16 -#define bswap_32 bswap32 -#define bswap_64 bswap64 -#elif defined(__OpenBSD__) -#define bswap_16 swap16 -#define bswap_32 swap32 -#define bswap_64 swap64 -#elif defined(__APPLE__) -#include -#define bswap_16 OSSwapInt16 -#define bswap_32 OSSwapInt32 -#define bswap_64 OSSwapInt64 -#elif defined(WIN32) -#define bswap_16 _byteswap_ushort -#define bswap_32 _byteswap_ulong -#define bswap_64 _byteswap_uint64 -#else -#include -#endif - -#include -#include -#include -#include -#include -#ifdef WIN32 -#include -#else -#include -#endif -#include -#include -#include -#include - -#include "lsqpack.h" -#include "lsxpack_header.h" -#include "xxhash.h" -#ifndef DEBUG -#include "lsqpack-test.h" -#endif - -#ifndef NDEBUG -struct static_table_entry -{ - const char *name; - const char *val; - unsigned name_len; - unsigned val_len; -}; - -/* [draft-ietf-quic-qpack-03] Appendix A */ -static const struct static_table_entry static_table[] = -{ - {":authority", "", 10, 0,}, - {":path", "/", 5, 1,}, - {"age", "0", 3, 1,}, - {"content-disposition", "", 19, 0,}, - {"content-length", "0", 14, 1,}, - {"cookie", "", 6, 0,}, - {"date", "", 4, 0,}, - {"etag", "", 4, 0,}, - {"if-modified-since", "", 17, 0,}, - {"if-none-match", "", 13, 0,}, - {"last-modified", "", 13, 0,}, - {"link", "", 4, 0,}, - {"location", "", 8, 0,}, - {"referer", "", 7, 0,}, - {"set-cookie", "", 10, 0,}, - {":method", "CONNECT", 7, 7,}, - {":method", "DELETE", 7, 6,}, - {":method", "GET", 7, 3,}, - {":method", "HEAD", 7, 4,}, - {":method", "OPTIONS", 7, 7,}, - {":method", "POST", 7, 4,}, - {":method", "PUT", 7, 3,}, - {":scheme", "http", 7, 4,}, - {":scheme", "https", 7, 5,}, - {":status", "103", 7, 3,}, - {":status", "200", 7, 3,}, - {":status", "304", 7, 3,}, - {":status", "404", 7, 3,}, - {":status", "503", 7, 3,}, - {"accept", "*/*", 6, 3,}, - {"accept", "application/dns-message", 6, 23,}, - {"accept-encoding", "gzip, deflate, br", 15, 17,}, - {"accept-ranges", "bytes", 13, 5,}, - {"access-control-allow-headers", "cache-control", 28, 13,}, - {"access-control-allow-headers", "content-type", 28, 12,}, - {"access-control-allow-origin", "*", 27, 1,}, - {"cache-control", "max-age=0", 13, 9,}, - {"cache-control", "max-age=2592000", 13, 15,}, - {"cache-control", "max-age=604800", 13, 14,}, - {"cache-control", "no-cache", 13, 8,}, - {"cache-control", "no-store", 13, 8,}, - {"cache-control", "public, max-age=31536000", 13, 24,}, - {"content-encoding", "br", 16, 2,}, - {"content-encoding", "gzip", 16, 4,}, - {"content-type", "application/dns-message", 12, 23,}, - {"content-type", "application/javascript", 12, 22,}, - {"content-type", "application/json", 12, 16,}, - {"content-type", "application/x-www-form-urlencoded", 12, 33,}, - {"content-type", "image/gif", 12, 9,}, - {"content-type", "image/jpeg", 12, 10,}, - {"content-type", "image/png", 12, 9,}, - {"content-type", "text/css", 12, 8,}, - {"content-type", "text/html; charset=utf-8", 12, 24,}, - {"content-type", "text/plain", 12, 10,}, - {"content-type", "text/plain;charset=utf-8", 12, 24,}, - {"range", "bytes=0-", 5, 8,}, - {"strict-transport-security", "max-age=31536000", 25, 16,}, - {"strict-transport-security", "max-age=31536000; includesubdomains", - 25, 35,}, - {"strict-transport-security", - "max-age=31536000; includesubdomains; preload", 25, 44,}, - {"vary", "accept-encoding", 4, 15,}, - {"vary", "origin", 4, 6,}, - {"x-content-type-options", "nosniff", 22, 7,}, - {"x-xss-protection", "1; mode=block", 16, 13,}, - {":status", "100", 7, 3,}, - {":status", "204", 7, 3,}, - {":status", "206", 7, 3,}, - {":status", "302", 7, 3,}, - {":status", "400", 7, 3,}, - {":status", "403", 7, 3,}, - {":status", "421", 7, 3,}, - {":status", "425", 7, 3,}, - {":status", "500", 7, 3,}, - {"accept-language", "", 15, 0,}, - {"access-control-allow-credentials", "FALSE", 32, 5,}, - {"access-control-allow-credentials", "TRUE", 32, 4,}, - {"access-control-allow-headers", "*", 28, 1,}, - {"access-control-allow-methods", "get", 28, 3,}, - {"access-control-allow-methods", "get, post, options", 28, 18,}, - {"access-control-allow-methods", "options", 28, 7,}, - {"access-control-expose-headers", "content-length", 29, 14,}, - {"access-control-request-headers", "content-type", 30, 12,}, - {"access-control-request-method", "get", 29, 3,}, - {"access-control-request-method", "post", 29, 4,}, - {"alt-svc", "clear", 7, 5,}, - {"authorization", "", 13, 0,}, - {"content-security-policy", - "script-src 'none'; object-src 'none'; base-uri 'none'", 23, 53,}, - {"early-data", "1", 10, 1,}, - {"expect-ct", "", 9, 0,}, - {"forwarded", "", 9, 0,}, - {"if-range", "", 8, 0,}, - {"origin", "", 6, 0,}, - {"purpose", "prefetch", 7, 8,}, - {"server", "", 6, 0,}, - {"timing-allow-origin", "*", 19, 1,}, - {"upgrade-insecure-requests", "1", 25, 1,}, - {"user-agent", "", 10, 0,}, - {"x-forwarded-for", "", 15, 0,}, - {"x-frame-options", "deny", 15, 4,}, - {"x-frame-options", "sameorigin", 15, 10,}, -}; -#endif - -static size_t s_max_read_size = SIZE_MAX; - -static int s_verbose; -static enum lsqpack_dec_opts s_dec_opts = LSQPACK_DEC_OPT_HASH_NAME - | LSQPACK_DEC_OPT_HASH_NAMEVAL; - -static int s_check_unset_qpack_idx = 1; - -static FILE *s_out; - -#define MIN(a, b) ((a) < (b) ? (a) : (b)) - -static void -usage (const char *name) -{ - fprintf(stderr, -"Usage: %s [options] [-i input] [-o output]\n" -"\n" -"Options:\n" -" -i FILE Input file. If not specified or set to `-', the input is\n" -" read from stdin.\n" -" -o FILE Output file. If not spepcified or set to `-', the output\n" -" is written to stdout.\n" -" -r FILE Recipe file. Without a recipe, buffers are processed in\n" -" order.\n" -" -s NUMBER Maximum number of risked streams. Defaults to %u.\n" -" -t NUMBER Dynamic table size. Defaults to %u.\n" -" -m NUMBER Maximum read size. Defaults to %zu.\n" -" -H [0|1] Use HTTP/1.x mode and test each header (defaults to `off').\n" -" -v Verbose: print headers and table state to stderr.\n" -" -S Don't swap encoder stream and header blocks.\n" -" -Q Don't check static table when LSXPACK_QPACK_IDX is not set.\n" -"\n" -" -h Print this help screen and exit\n" - , name, LSQPACK_DEF_MAX_RISKED_STREAMS, LSQPACK_DEF_DYN_TABLE_SIZE, SIZE_MAX); -} - - -struct buf -{ - TAILQ_ENTRY(buf) next_buf; - struct lsqpack_dec *dec; - uint64_t stream_id; /* Zero means encoder stream */ - size_t size; - size_t off; - size_t file_off; - - /* A single header name/value pair is stored in xhdr_buf. When the - * header is done, the whole buffer can be used again for the next - * header. - */ - struct lsxpack_header xhdr; - unsigned xhdr_off; /* Used in xhdr_buf */ - unsigned xhdr_nalloc; /* Number of bytes allocated */ /* TODO: use it */ - - /* Output is written to out_buf out header at a time and the printed all - * at once. This logic is not very important and we use a reasonably - * large fixed-size buffer. - */ - unsigned out_off; - char out_buf[0x1000]; - - unsigned char buf[0]; -}; - - -TAILQ_HEAD(, buf) bufs = TAILQ_HEAD_INITIALIZER(bufs); - -static void -hblock_unblocked (void *buf_p) -{ - struct buf *buf = buf_p; - TAILQ_INSERT_HEAD(&bufs, buf, next_buf); -} - - -static struct lsxpack_header * -prepare_decode (void *hblock_ctx, struct lsxpack_header *xhdr, size_t space) -{ - struct buf *const buf = hblock_ctx; - char *new; - - if (space > LSXPACK_MAX_STRLEN) - return NULL; - - if (xhdr) - { - assert(xhdr == &buf->xhdr); - assert(space > xhdr->val_len); - new = realloc(xhdr->buf, space); - if (!new) - return NULL; - xhdr->buf = new; - xhdr->val_len = space; - return xhdr; - } - else - { - xhdr = &buf->xhdr; - new = malloc(space); - if (!new) - return NULL; - lsxpack_header_prepare_decode(xhdr, new, 0, space); - return xhdr; - } -} - - -static int -process_header (void *hblock_ctx, struct lsxpack_header *xhdr) -{ - struct buf *const buf = hblock_ctx; - const char *p; - const uint32_t seed = 39378473; - uint32_t hash, name_hash; - int nw; - - if (s_dec_opts & LSQPACK_DEC_OPT_HTTP1X) - { - p = lsxpack_header_get_name(xhdr) + xhdr->name_len; - assert(0 == memcmp(p, ": ", 2)); - p += 2 + xhdr->val_len; - assert(0 == memcmp(p, "\r\n", 2)); - assert(xhdr->dec_overhead == 4); - } - else - assert(xhdr->dec_overhead == 0); - - if (s_dec_opts & LSQPACK_DEC_OPT_HASH_NAME) - { - assert(xhdr->flags & LSXPACK_NAME_HASH); - hash = XXH32(lsxpack_header_get_name(xhdr), xhdr->name_len, seed); - assert(hash == xhdr->name_hash); - } - - if (s_dec_opts & LSQPACK_DEC_OPT_HASH_NAME) - assert(xhdr->flags & LSXPACK_NAME_HASH); - - if (xhdr->flags & LSXPACK_NAME_HASH) - { - name_hash = XXH32(lsxpack_header_get_name(xhdr), xhdr->name_len, seed); - assert(hash == xhdr->name_hash); - } -#ifndef NDEBUG - else if (!(xhdr->flags & LSXPACK_QPACK_IDX)) - /* Calculate for upcoming "not in static table check" */ - name_hash = XXH32(lsxpack_header_get_name(xhdr), xhdr->name_len, seed); -#endif - - if (s_dec_opts & LSQPACK_DEC_OPT_HASH_NAMEVAL) - { - /* This is not required by the API, but internally, if the library - * calculates nameval hash, it should also set the name hash. - */ - assert(xhdr->flags & LSXPACK_NAME_HASH); - assert(xhdr->flags & LSXPACK_NAMEVAL_HASH); - } - - if (xhdr->flags & LSXPACK_NAMEVAL_HASH) - { - hash = XXH32(lsxpack_header_get_name(xhdr), xhdr->name_len, seed); - hash = XXH32(lsxpack_header_get_value(xhdr), xhdr->val_len, hash); - assert(hash == xhdr->nameval_hash); - } - -#ifndef NDEBUG - if (xhdr->flags & LSXPACK_QPACK_IDX) - { - assert(xhdr->qpack_index < - sizeof(static_table) / sizeof(static_table[0])); - assert(static_table[xhdr->qpack_index].name_len == xhdr->name_len); - assert(0 == memcmp(lsxpack_header_get_name(xhdr), - static_table[xhdr->qpack_index].name, xhdr->name_len)); - } - else if (s_check_unset_qpack_idx) - { - /* The decoder does best effort: if the encoder did not use the - * static table, QPACK index is not set. However, since we are - * testing our decoder, we assume that the encoder always uses - * the static table when it can. - */ - int idx = lsqpack_find_in_static_headers(name_hash, - lsxpack_header_get_name(xhdr), xhdr->name_len); - assert(idx < 0); - } -#endif - - nw = snprintf(buf->out_buf + buf->out_off, - sizeof(buf->out_buf) - buf->out_off, - "%.*s\t%.*s\n", - (int) xhdr->name_len, lsxpack_header_get_name(xhdr), - (int) xhdr->val_len, lsxpack_header_get_value(xhdr)); - free(buf->xhdr.buf); - memset(&buf->xhdr, 0, sizeof(buf->xhdr)); - if (nw > 0 && (size_t) nw <= sizeof(buf->out_buf) - buf->out_off) - { - buf->out_off += (unsigned) nw; - return 0; - } - else - { - fprintf(stderr, "header list too long\n"); - return -1; - } -} - - -static const struct lsqpack_dec_hset_if hset_if = { - .dhi_unblocked = hblock_unblocked, - .dhi_prepare_decode = prepare_decode, - .dhi_process_header = process_header, -}; - - -static void -header_block_done (const struct buf *buf) -{ - fprintf(s_out, "# stream %"PRIu64"\n", buf->stream_id); - fprintf(s_out, "# (stream ID above is used for sorting)\n"); - fprintf(s_out, "%.*s\n", (int) buf->out_off, buf->out_buf); -} - - -int -main (int argc, char **argv) -{ - FILE *in = stdin; - FILE *recipe = NULL; - int opt; - unsigned dyn_table_size = LSQPACK_DEF_DYN_TABLE_SIZE, - max_risked_streams = LSQPACK_DEF_MAX_RISKED_STREAMS; - struct lsqpack_dec decoder; - const struct lsqpack_dec_err *err; - const unsigned char *p; - ssize_t nr; - int r; - uint64_t stream_id; - uint32_t size; - size_t off; /* For debugging */ - size_t file_off; - struct buf *buf; - unsigned lineno; - char *line, *end; - enum lsqpack_read_header_status rhs; - int do_swap = 1; - char command[0x100]; - char line_buf[0x100]; - - while (-1 != (opt = getopt(argc, argv, "i:o:r:s:t:m:hvH:SQ"))) - { - switch (opt) - { - case 'i': - if (0 != strcmp(optarg, "-")) - { - in = fopen(optarg, "rb"); - if (!in) - { - fprintf(stderr, "cannot open `%s' for reading: %s\n", - optarg, strerror(errno)); - exit(EXIT_FAILURE); - } - } - break; - case 'o': - if (0 != strcmp(optarg, "-")) - { - s_out = fopen(optarg, "w"); - if (!s_out) - { - fprintf(stderr, "cannot open `%s' for writing: %s\n", - optarg, strerror(errno)); - exit(EXIT_FAILURE); - } - } - break; - case 'r': - if (0 == strcmp(optarg, "-")) - recipe = stdin; - else - { - recipe = fopen(optarg, "r"); - if (!recipe) - { - fprintf(stderr, "cannot open `%s' for reading: %s\n", - optarg, strerror(errno)); - exit(EXIT_FAILURE); - } - } - break; - case 's': - max_risked_streams = atoi(optarg); - break; - case 't': - dyn_table_size = atoi(optarg); - break; - case 'm': - s_max_read_size = atoi(optarg); - break; - case 'h': - usage(argv[0]); - exit(EXIT_SUCCESS); - case 'v': - ++s_verbose; - break; - case 'S': - do_swap = 0; - break; - case 'H': - if (atoi(optarg)) - s_dec_opts |= LSQPACK_DEC_OPT_HTTP1X; - else - s_dec_opts &= ~LSQPACK_DEC_OPT_HTTP1X; - break; - case 'Q': - s_check_unset_qpack_idx = 0; - break; - default: - exit(EXIT_FAILURE); - } - } - - if (!s_out) - s_out = stdout; - - lsqpack_dec_init(&decoder, s_verbose ? stderr : NULL, dyn_table_size, - max_risked_streams, &hset_if, s_dec_opts); - - off = 0; - while (1) - { - file_off = off; - nr = fread(&stream_id, 1, sizeof(stream_id), in); - if (nr == 0) - break; - if (nr != sizeof(stream_id)) - { - fprintf(stderr, "could not read %zu bytes (stream id) at " - "offset %zu: %s\n", sizeof(stream_id), off, strerror(errno)); - goto read_err; - } - off += nr; - nr = fread(&size, 1, sizeof(size), in); - if (nr != sizeof(size)) - { - fprintf(stderr, "could not read %zu bytes (size) at " - "offset %zu: %s\n", sizeof(size), off, strerror(errno)); - goto read_err; - } - off += nr; -#if __BYTE_ORDER == __LITTLE_ENDIAN - stream_id = bswap_64(stream_id); - size = bswap_32(size); -#endif - if (stream_id == 0 && size == 0) - continue; - buf = malloc(sizeof(*buf) + size); - if (!buf) - { - perror("malloc"); - exit(EXIT_FAILURE); - } - memset(buf, 0, sizeof(*buf)); - nr = fread(buf->buf, 1, size, in); - if (nr != (ssize_t) size) - { - fprintf(stderr, "could not read %"PRIu32" bytes (buffer) at " - "offset %zu: %s\n", size, off, strerror(errno)); - goto read_err; - } - off += nr; - buf->dec = &decoder; - buf->stream_id = stream_id; - buf->size = size; - buf->file_off = file_off; - if (buf->size == 0) - exit(EXIT_FAILURE); - TAILQ_INSERT_TAIL(&bufs, buf, next_buf); - } - (void) fclose(in); - in = NULL; - - if (recipe) - { - lineno = 0; - while (line = fgets(line_buf, sizeof(line_buf), recipe), line != NULL) - { - ++lineno; - end = strchr(line, '\n'); - if (!end) - { - fprintf(stderr, "no newline on line %u\n", lineno); - exit(EXIT_FAILURE); - } - *end = '\0'; - - if (*line == '#') - continue; - - if (3 == sscanf(line, " %[s] %"PRIu64" %"PRIu32" ", command, &stream_id, &size)) - { - TAILQ_FOREACH(buf, &bufs, next_buf) - if (stream_id == buf->stream_id) - break; - if (!buf) - { - fprintf(stderr, "stream %"PRIu64" not found (recipe line %u)\n", - stream_id, lineno); - exit(EXIT_FAILURE); - } - p = buf->buf; - rhs = lsqpack_dec_header_in(&decoder, buf, stream_id, - buf->size, &p, - buf->size /* FIXME: this should be `size' */, - NULL, NULL); - switch (rhs) - { - case LQRHS_DONE: - assert(p == buf->buf + buf->size); - header_block_done(buf); - if (s_verbose) - fprintf(stderr, "compression ratio: %.3f\n", - lsqpack_dec_ratio(&decoder)); - TAILQ_REMOVE(&bufs, buf, next_buf); - free(buf); - break; - case LQRHS_BLOCKED: - buf->off += (unsigned) (p - buf->buf); - TAILQ_REMOVE(&bufs, buf, next_buf); - break; - case LQRHS_NEED: - buf->off += (unsigned) (p - buf->buf); - break; - default: - assert(rhs == LQRHS_ERROR); - fprintf(stderr, "recipe line %u: stream %"PRIu64": " - "header_in error\n", lineno, stream_id); - exit(EXIT_FAILURE); - } - } - else if (2 == sscanf(line, " %[z] %u ", command, &size)) - { - s_max_read_size = size; - } - else - { - perror("sscanf"); - exit(EXIT_FAILURE); - } - } - fclose(recipe); - } - else if (do_swap && max_risked_streams && dyn_table_size - && TAILQ_FIRST(&bufs) && TAILQ_FIRST(&bufs)->stream_id) - { - /* Swap header blocks and encoder stream bufs to exercise blocked - * header blocks logic. - */ - struct buf *saved_hblock = NULL, *next; - for (buf = TAILQ_FIRST(&bufs); buf; buf = next) - { - next = TAILQ_NEXT(buf, next_buf); - if (buf->stream_id) - continue; - if (saved_hblock) - TAILQ_INSERT_BEFORE(buf, saved_hblock, next_buf); - saved_hblock = buf; - TAILQ_REMOVE(&bufs, buf, next_buf); - } - TAILQ_INSERT_TAIL(&bufs, saved_hblock, next_buf); - } - - while (buf = TAILQ_FIRST(&bufs), buf != NULL) - { - TAILQ_REMOVE(&bufs, buf, next_buf); - if (buf->stream_id == 0) - { - r = lsqpack_dec_enc_in(&decoder, buf->buf, buf->size - buf->off); - if (r != 0) - { - err = lsqpack_dec_get_err_info(buf->dec); - fprintf(stderr, "encoder_in error; off %"PRIu64", line %d\n", - err->off, err->line); - exit(EXIT_FAILURE); - } - if (s_verbose) - lsqpack_dec_print_table(&decoder, stderr); - free(buf); - } - else - { - dec_header: - p = buf->buf + buf->off; - if (buf->off == 0) - rhs = lsqpack_dec_header_in(&decoder, buf, buf->stream_id, - buf->size, &p, MIN(s_max_read_size, buf->size), - NULL, NULL); - else - rhs = lsqpack_dec_header_read(buf->dec, buf, &p, - MIN(s_max_read_size, (buf->size - buf->off)), - NULL, NULL); - switch (rhs) - { - case LQRHS_DONE: - assert(p == buf->buf + buf->size); - header_block_done(buf); - if (s_verbose) - fprintf(stderr, "compression ratio: %.3f\n", - lsqpack_dec_ratio(&decoder)); - free(buf); - break; - case LQRHS_BLOCKED: - buf->off = (unsigned) (p - buf->buf); - break; - case LQRHS_NEED: - buf->off = (unsigned) (p - buf->buf); - goto dec_header; - default: - assert(rhs == LQRHS_ERROR); - fprintf(stderr, "stream %"PRIu64": header block error " - "starting at off %zu\n", buf->stream_id, buf->off); - err = lsqpack_dec_get_err_info(&decoder); - fprintf(stderr, "encoder_in error; off %"PRIu64", line %d\n", - err->off, err->line); - exit(EXIT_FAILURE); - } - } - } - - if (!TAILQ_EMPTY(&bufs)) - { - fprintf(stderr, "some streams reamain\n"); - exit(EXIT_FAILURE); - } - /* TODO: check if decoder has any stream references. That would be - * an error. - */ - - if (s_verbose) - lsqpack_dec_print_table(&decoder, stderr); - - lsqpack_dec_cleanup(&decoder); - - assert(TAILQ_EMPTY(&bufs)); - - if (s_out) - (void) fclose(s_out); - - exit(EXIT_SUCCESS); - - read_err: - if (nr < 0) - perror("read"); - else if (nr == 0) - fprintf(stderr, "unexpected EOF\n"); - else - fprintf(stderr, "not enough bytes read (%zu)\n", (size_t) nr); - exit(EXIT_FAILURE); -} diff --git a/external/lsquic/src/liblsquic/ls-qpack/bin/interop-encode.c b/external/lsquic/src/liblsquic/ls-qpack/bin/interop-encode.c deleted file mode 100644 index 152a151..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/bin/interop-encode.c +++ /dev/null @@ -1,561 +0,0 @@ -/* - * QPACK Interop -- encode to intermediate format - * - * https://github.com/quicwg/base-drafts/wiki/QPACK-Offline-Interop - */ - -#include - -#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) -#include -#define bswap_16 bswap16 -#define bswap_32 bswap32 -#define bswap_64 bswap64 -#elif defined(__OpenBSD__) -#define bswap_16 swap16 -#define bswap_32 swap32 -#define bswap_64 swap64 -#elif defined(__APPLE__) -#include -#define bswap_16 OSSwapInt16 -#define bswap_32 OSSwapInt32 -#define bswap_64 OSSwapInt64 -#elif defined(WIN32) -#define bswap_16 _byteswap_ushort -#define bswap_32 _byteswap_ulong -#define bswap_64 _byteswap_uint64 -#else -#include -#endif - -#include -#include -#include -#include -#ifdef WIN32 -#include -#else -#include -#endif -#include -#include -#include -#include - -#include "lsqpack.h" -#include "lsxpack_header.h" - -static int s_verbose; - -unsigned char * -lsqpack_enc_int (unsigned char *dst, unsigned char *const end, uint64_t value, - unsigned prefix_bits); - -static void -usage (const char *name) -{ - fprintf(stderr, -"Usage: %s [options] [-i input] [-o output]\n" -"\n" -"Options:\n" -" -i FILE Input file. If not specified or set to `-', the input is\n" -" read from stdin.\n" -" -o FILE Output file. If not spepcified or set to `-', the output\n" -" is written to stdout.\n" -" -s NUMBER Maximum number of risked streams. Defaults to %u.\n" -" -t NUMBER Dynamic table size. Defaults to %u.\n" -" -a MODE Header acknowledgement mode. 0 means headers are never\n" -" acknowledged, non-zero means header blocks are acknowledged\n" -" immediately. Default value is 0.\n" -" -n Process annotations.\n" -" -S Server mode.\n" -" -D Do not emit \"Duplicate\" instructions.\n" -" -A Aggressive indexing.\n" -" -M Turn off memory guard.\n" -" -f Fast: use maximum output buffers.\n" -" -v Verbose: print various messages to stderr.\n" -"\n" -" -h Print this help screen and exit\n" - , name, LSQPACK_DEF_MAX_RISKED_STREAMS, LSQPACK_DEF_DYN_TABLE_SIZE); -} - - -static void -write_enc_stream (FILE *out, const unsigned char *enc_buf, size_t enc_sz) -{ - uint64_t stream_id_enc; - uint32_t length_enc; - size_t written; - - if (enc_sz <= 0) - return; - stream_id_enc = 0; - length_enc = enc_sz; -#if __BYTE_ORDER == __LITTLE_ENDIAN - stream_id_enc = bswap_64(stream_id_enc); - length_enc = bswap_32(length_enc); -#endif - written = fwrite(&stream_id_enc, 1, sizeof(stream_id_enc), out); - if (written != sizeof(stream_id_enc)) - { - perror("fwrite"); - exit(EXIT_FAILURE); - } - written = fwrite(&length_enc, 1, sizeof(length_enc), out); - if (written != sizeof(length_enc)) - { - perror("fwrite"); - exit(EXIT_FAILURE); - } - written = fwrite(enc_buf, 1, enc_sz, out); - if (written != enc_sz) - { - perror("fwrite"); - exit(EXIT_FAILURE); - } -} - - -static void -write_enc_and_header_streams (FILE *out, unsigned stream_id, - const unsigned char *enc_buf, size_t enc_sz, - const unsigned char *pref_buf, size_t pref_sz, - const unsigned char *hea_buf, size_t hea_sz) -{ - uint64_t stream_id_enc; - uint32_t length_enc; - size_t written; - - if (s_verbose) - fprintf(stderr, "%s: stream %"PRIu32"\n", __func__, stream_id); - - if (enc_sz) - { - stream_id_enc = 0; - length_enc = enc_sz; -#if __BYTE_ORDER == __LITTLE_ENDIAN - stream_id_enc = bswap_64(stream_id_enc); - length_enc = bswap_32(length_enc); -#endif - written = fwrite(&stream_id_enc, 1, sizeof(stream_id_enc), out); - if (written != sizeof(stream_id_enc)) - goto write_err; - written = fwrite(&length_enc, 1, sizeof(length_enc), out); - if (written != sizeof(length_enc)) - goto write_err; - written = fwrite(enc_buf, 1, enc_sz, out); - if (written != enc_sz) - goto write_err; - } - - stream_id_enc = stream_id; - length_enc = pref_sz + hea_sz; -#if __BYTE_ORDER == __LITTLE_ENDIAN - stream_id_enc = bswap_64(stream_id_enc); - length_enc = bswap_32(length_enc); -#endif - written = fwrite(&stream_id_enc, 1, sizeof(stream_id_enc), out); - if (written != sizeof(stream_id_enc)) - goto write_err; - written = fwrite(&length_enc, 1, sizeof(length_enc), out); - if (written != sizeof(length_enc)) - goto write_err; - written = fwrite(pref_buf, 1, pref_sz, out); - if (written != pref_sz) - goto write_err; - written = fwrite(hea_buf, 1, hea_sz, out); - if (written != hea_sz) - goto write_err; - return; - - write_err: - perror("fwrite"); - exit(EXIT_FAILURE); -} - - -static unsigned s_saved_ins_count; -static int -ack_last_entry_id (struct lsqpack_enc *encoder) -{ - unsigned char *end_cmd; - unsigned char cmd[80]; - unsigned val; - - if (s_verbose) - fprintf(stderr, "ACK entry ID %u\n", encoder->qpe_ins_count); - - cmd[0] = 0x00; - val = encoder->qpe_ins_count - s_saved_ins_count; - s_saved_ins_count = encoder->qpe_ins_count; - end_cmd = lsqpack_enc_int(cmd, cmd + sizeof(cmd), val, 6); - assert(end_cmd > cmd); - return lsqpack_enc_decoder_in(encoder, cmd, end_cmd - cmd); -} - - -static int -ack_stream (struct lsqpack_enc *encoder, uint64_t stream_id) -{ - unsigned char *end_cmd; - unsigned char cmd[80]; - - if (s_verbose) - fprintf(stderr, "ACK stream ID %"PRIu64"\n", stream_id); - - cmd[0] = 0x80; - end_cmd = lsqpack_enc_int(cmd, cmd + sizeof(cmd), stream_id, 7); - assert(end_cmd > cmd); - return lsqpack_enc_decoder_in(encoder, cmd, end_cmd - cmd); -} - - -static int -sync_table (struct lsqpack_enc *encoder, uint64_t num_inserts) -{ - unsigned char *end_cmd; - unsigned char cmd[80]; - - if (s_verbose) - fprintf(stderr, "Sync table num inserts %"PRIu64"\n", num_inserts); - - cmd[0] = 0x00; - end_cmd = lsqpack_enc_int(cmd, cmd + sizeof(cmd), num_inserts, 6); - assert(end_cmd > cmd); - return lsqpack_enc_decoder_in(encoder, cmd, end_cmd - cmd); -} - - -static int -cancel_stream (struct lsqpack_enc *encoder, uint64_t stream_id) -{ - unsigned char *end_cmd; - unsigned char cmd[80]; - - if (s_verbose) - fprintf(stderr, "Cancel stream ID %"PRIu64"\n", stream_id); - - cmd[0] = 0x40; - end_cmd = lsqpack_enc_int(cmd, cmd + sizeof(cmd), stream_id, 6); - assert(end_cmd > cmd); - return lsqpack_enc_decoder_in(encoder, cmd, end_cmd - cmd); -} - - -int -main (int argc, char **argv) -{ - FILE *in = stdin; - FILE *out = stdout; - int opt; - unsigned dyn_table_size = LSQPACK_DEF_DYN_TABLE_SIZE, - max_risked_streams = LSQPACK_DEF_MAX_RISKED_STREAMS; - unsigned lineno, stream_id; - struct lsqpack_enc encoder; - char *line, *end, *tab; - ssize_t pref_sz; - enum lsqpack_enc_status st; - enum lsqpack_enc_opts enc_opts = 0; - size_t enc_sz, hea_sz, enc_off, hea_off; - int header_opened, r; - unsigned arg; - enum { ACK_NEVER, ACK_IMMEDIATE, } ack_mode = ACK_NEVER; - int process_annotations = 0; - char line_buf[0x1000]; - unsigned char tsu_buf[LSQPACK_LONGEST_SDTC]; - size_t tsu_buf_sz; - enum lsqpack_enc_header_flags hflags; - int fast = 0; - struct lsxpack_header xhdr; - unsigned char enc_buf[0x1000], hea_buf[0x1000], pref_buf[0x20]; - - while (-1 != (opt = getopt(argc, argv, "ADMSa:i:no:s:t:hvf"))) - { - switch (opt) - { - case 'S': - enc_opts |= LSQPACK_ENC_OPT_SERVER; - break; - case 'D': - enc_opts |= LSQPACK_ENC_OPT_NO_DUP; - break; - case 'A': - enc_opts |= LSQPACK_ENC_OPT_IX_AGGR; - break; - case 'M': - enc_opts |= LSQPACK_ENC_OPT_NO_MEM_GUARD; - break; - case 'n': - ++process_annotations; - break; - case 'a': - ack_mode = atoi(optarg) ? ACK_IMMEDIATE : ACK_NEVER; - break; - case 'i': - if (0 != strcmp(optarg, "-")) - { - in = fopen(optarg, "r"); - if (!in) - { - fprintf(stderr, "cannot open `%s' for reading: %s\n", - optarg, strerror(errno)); - exit(EXIT_FAILURE); - } - } - break; - case 'o': - if (0 != strcmp(optarg, "-")) - { - out = fopen(optarg, "wb"); - if (!out) - { - fprintf(stderr, "cannot open `%s' for writing: %s\n", - optarg, strerror(errno)); - exit(EXIT_FAILURE); - } - } - break; - case 's': - max_risked_streams = atoi(optarg); - break; - case 't': - dyn_table_size = atoi(optarg); - break; - case 'h': - usage(argv[0]); - exit(EXIT_SUCCESS); - case 'f': - fast = 1; - break; - case 'v': - ++s_verbose; - break; - default: - exit(EXIT_FAILURE); - } - } - - tsu_buf_sz = sizeof(tsu_buf); - if (0 != lsqpack_enc_init(&encoder, s_verbose ? stderr : NULL, dyn_table_size, - dyn_table_size, max_risked_streams, enc_opts, tsu_buf, - &tsu_buf_sz)) - { - perror("lsqpack_enc_init"); - exit(EXIT_FAILURE); - } - - lineno = 0; - stream_id = 0; - enc_off = 0; - hea_off = 0; - header_opened = 0; - - while (line = fgets(line_buf, sizeof(line_buf), in), line != NULL) - { - ++lineno; - end = strchr(line, '\n'); - if (!end) - { - fprintf(stderr, "no newline on line %u\n", lineno); - exit(EXIT_FAILURE); - } - *end = '\0'; - - if (end == line) - { - if (header_opened) - { - size_t sz, pref_max = sizeof(pref_buf); - for (sz = (fast ? pref_max : 0); sz <= pref_max; sz++) - { - pref_sz = lsqpack_enc_end_header(&encoder, pref_buf, sz, &hflags); - if (pref_sz > 0) - { - if (max_risked_streams == 0) - assert(!(hflags & LSQECH_REF_AT_RISK)); - break; - } - } - assert(pref_sz <= lsqpack_enc_header_block_prefix_size(&encoder)); - if (pref_sz < 0) - { - fprintf(stderr, "end_header failed: %s", strerror(errno)); - exit(EXIT_FAILURE); - } - if (ack_mode == ACK_IMMEDIATE) - { - if (!(2 == pref_sz && pref_buf[0] == 0 && pref_buf[1] == 0)) - r = ack_stream(&encoder, stream_id); - else - r = 0; - if (r == 0 && encoder.qpe_ins_count > s_saved_ins_count) - r = ack_last_entry_id(&encoder); - else - r = 0; - if (r != 0) - { - fprintf(stderr, "acking stream %u failed: %s", stream_id, - strerror(errno)); - exit(EXIT_FAILURE); - } - } - if (s_verbose) - fprintf(stderr, "compression ratio: %.3f\n", - lsqpack_enc_ratio(&encoder)); - write_enc_and_header_streams(out, stream_id, enc_buf, enc_off, - pref_buf, pref_sz, hea_buf, hea_off); - enc_off = 0; - hea_off = 0; - header_opened = 0; - } - continue; - } - - if (*line == '#') - { - if (!process_annotations) - continue; - - /* Lines starting with ## are potential annotations */ - if (ack_mode != ACK_IMMEDIATE - /* Ignore ACK annotations in immediate ACK mode, as we do - * not tolerate duplicate ACKs. - */ - && 1 == sscanf(line, "## %*[a] %u ", &arg)) - { - if (0 != ack_stream(&encoder, arg)) - { - fprintf(stderr, "ACKing stream ID %u failed\n", arg); - exit(EXIT_FAILURE); - } - } - else if (1 == sscanf(line, "## %*[s] %u", &arg)) - sync_table(&encoder, arg); - else if (1 == sscanf(line, "## %*[c] %u", &arg)) - cancel_stream(&encoder, arg); - else if (1 == sscanf(line, "## %*[t] %u", &arg)) - { - tsu_buf_sz = sizeof(tsu_buf); - if (0 != lsqpack_enc_set_max_capacity(&encoder, arg, tsu_buf, - &tsu_buf_sz)) - { - fprintf(stderr, "cannot set capacity to %u: %s\n", arg, - strerror(errno)); - exit(EXIT_FAILURE); - } - write_enc_stream(out, tsu_buf, tsu_buf_sz); - } - continue; - } - - tab = strchr(line, '\t'); - if (!tab) - { - fprintf(stderr, "no TAB on line %u\n", lineno); - exit(EXIT_FAILURE); - } - - if (!header_opened) - { - ++stream_id; - if (0 != lsqpack_enc_start_header(&encoder, stream_id, 0)) - { - fprintf(stderr, "start_header failed: %s\n", strerror(errno)); - exit(EXIT_FAILURE); - } - header_opened = 1; - } - if (fast) - { - enc_sz = sizeof(enc_buf) - enc_off; - hea_sz = sizeof(hea_buf) - hea_off; - } - else - { - /* Increase buffers one by one to exercise error conditions */ - enc_sz = 0; - hea_sz = 0; - } - while (1) - { - lsxpack_header_set_offset2(&xhdr, line, 0, tab - line, - tab + 1 - line, end - tab - 1); - st = lsqpack_enc_encode(&encoder, enc_buf + enc_off, &enc_sz, - hea_buf + hea_off, &hea_sz, &xhdr, 0); - switch (st) - { - case LQES_NOBUF_ENC: - if (enc_sz < sizeof(enc_buf) - enc_off) - ++enc_sz; - else - assert(0); - break; - case LQES_NOBUF_HEAD: - if (hea_sz < sizeof(hea_buf) - hea_off) - ++hea_sz; - else - assert(0); - break; - default: - assert(st == LQES_OK); - goto end_encode_one_header; - } - } - if (st != LQES_OK) - { - /* It could only run of of output space, so it's not really an - * error, but we make no provision in the interop encoder to - * grow the buffers. - */ - fprintf(stderr, "Could not encode header on line %u: %u\n", - lineno, st); - exit(EXIT_FAILURE); - } - end_encode_one_header: - enc_off += enc_sz; - hea_off += hea_sz; - } - - if (s_verbose) - fprintf(stderr, "exited while loop\n"); - - (void) fclose(in); - - if (header_opened) - { - if (s_verbose) - fprintf(stderr, "close opened header\n"); - pref_sz = lsqpack_enc_end_header(&encoder, pref_buf, sizeof(pref_buf), - &hflags); - if (pref_sz < 0) - { - fprintf(stderr, "end_header failed: %s", strerror(errno)); - exit(EXIT_FAILURE); - } - if (max_risked_streams == 0) - assert(!(hflags & LSQECH_REF_AT_RISK)); - if (ack_mode == ACK_IMMEDIATE - && !(2 == pref_sz && pref_buf[0] == 0 && pref_buf[1] == 0) - && 0 != ack_stream(&encoder, stream_id)) - { - fprintf(stderr, "acking stream %u failed: %s", stream_id, - strerror(errno)); - exit(EXIT_FAILURE); - } - if (s_verbose) - fprintf(stderr, "compression ratio: %.3f\n", - lsqpack_enc_ratio(&encoder)); - write_enc_and_header_streams(out, stream_id, enc_buf, enc_off, pref_buf, - pref_sz, hea_buf, hea_off); - } - - lsqpack_enc_cleanup(&encoder); - - if (0 != fclose(out)) - { - perror("fclose(out)"); - exit(EXIT_FAILURE); - } - - exit(EXIT_SUCCESS); -} diff --git a/external/lsquic/src/liblsquic/ls-qpack/deps/xxhash/xxhash.c b/external/lsquic/src/liblsquic/ls-qpack/deps/xxhash/xxhash.c deleted file mode 100644 index 3023948..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/deps/xxhash/xxhash.c +++ /dev/null @@ -1,941 +0,0 @@ -/* -xxHash - Fast Hash algorithm -Copyright (C) 2012-2014, Yann Collet. -BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -You can contact the author at : -- xxHash source repository : http://code.google.com/p/xxhash/ -- public discussion board : https://groups.google.com/forum/#!forum/lz4c -*/ - - -//************************************** -// Tuning parameters -//************************************** -// Unaligned memory access is automatically enabled for "common" CPU, such as x86. -// For others CPU, the compiler will be more cautious, and insert extra code to ensure aligned access is respected. -// If you know your target CPU supports unaligned memory access, you want to force this option manually to improve performance. -// You can also enable this parameter if you know your input data will always be aligned (boundaries of 4, for U32). -#if defined(__ARM_FEATURE_UNALIGNED) || defined(__i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64) -# define XXH_USE_UNALIGNED_ACCESS 1 -#endif - -// XXH_ACCEPT_NULL_INPUT_POINTER : -// If the input pointer is a null pointer, xxHash default behavior is to trigger a memory access error, since it is a bad pointer. -// When this option is enabled, xxHash output for null input pointers will be the same as a null-length input. -// This option has a very small performance cost (only measurable on small inputs). -// By default, this option is disabled. To enable it, uncomment below define : -// #define XXH_ACCEPT_NULL_INPUT_POINTER 1 - -// XXH_FORCE_NATIVE_FORMAT : -// By default, xxHash library provides endian-independant Hash values, based on little-endian convention. -// Results are therefore identical for little-endian and big-endian CPU. -// This comes at a performance cost for big-endian CPU, since some swapping is required to emulate little-endian format. -// Should endian-independance be of no importance for your application, you may set the #define below to 1. -// It will improve speed for Big-endian CPU. -// This option has no impact on Little_Endian CPU. -#define XXH_FORCE_NATIVE_FORMAT 0 - -//************************************** -// Compiler Specific Options -//************************************** -// Disable some Visual warning messages -#ifdef _MSC_VER // Visual Studio -# pragma warning(disable : 4127) // disable: C4127: conditional expression is constant -#endif - -#ifdef _MSC_VER // Visual Studio -# define FORCE_INLINE static __forceinline -#else -# ifdef __GNUC__ -# define FORCE_INLINE static inline __attribute__((always_inline)) -# else -# define FORCE_INLINE static inline -# endif -#endif - -//************************************** -// Includes & Memory related functions -//************************************** -#include "xxhash.h" -// Modify the local functions below should you wish to use some other memory routines -// for malloc(), free() -#include -static void *XXH_malloc(size_t s) { return malloc(s); } -static void XXH_free(void *p) { free(p); } -// for memcpy() -#include -static void *XXH_memcpy(void *dest, const void *src, size_t size) -{ - return memcpy(dest, src, size); -} - - -//************************************** -// Basic Types -//************************************** -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L // C99 -# include -typedef uint8_t BYTE; -typedef uint16_t U16; -typedef uint32_t U32; -typedef int32_t S32; -typedef uint64_t U64; -#else -typedef unsigned char BYTE; -typedef unsigned short U16; -typedef unsigned int U32; -typedef signed int S32; -typedef unsigned long long U64; -#endif - -#if defined(__GNUC__) && !defined(XXH_USE_UNALIGNED_ACCESS) -# define _PACKED __attribute__ ((packed)) -#else -# define _PACKED -#endif - -#if !defined(XXH_USE_UNALIGNED_ACCESS) && !defined(__GNUC__) -# ifdef __IBMC__ -# pragma pack(1) -# else -# pragma pack(push, 1) -# endif -#endif - -typedef struct _U32_S -{ - U32 v; -} _PACKED U32_S; -typedef struct _U64_S -{ - U64 v; -} _PACKED U64_S; - -#if !defined(XXH_USE_UNALIGNED_ACCESS) && !defined(__GNUC__) -# pragma pack(pop) -#endif - -#define A32(x) (((U32_S *)(x))->v) -#define A64(x) (((U64_S *)(x))->v) - - -//*************************************** -// Compiler-specific Functions and Macros -//*************************************** -#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) - -// Note : although _rotl exists for minGW (GCC under windows), performance seems poor -#if defined(_MSC_VER) -# define XXH_rotl32(x,r) _rotl(x,r) -# define XXH_rotl64(x,r) _rotl64(x,r) -#else -# define XXH_rotl32(x,r) ((x << r) | (x >> (32 - r))) -# define XXH_rotl64(x,r) ((x << r) | (x >> (64 - r))) -#endif - -#if defined(_MSC_VER) // Visual Studio -# define XXH_swap32 _byteswap_ulong -# define XXH_swap64 _byteswap_uint64 -#elif GCC_VERSION >= 403 -# define XXH_swap32 __builtin_bswap32 -# define XXH_swap64 __builtin_bswap64 -#else -static inline U32 XXH_swap32(U32 x) -{ - return ((x << 24) & 0xff000000) | - ((x << 8) & 0x00ff0000) | - ((x >> 8) & 0x0000ff00) | - ((x >> 24) & 0x000000ff); -} -static inline U64 XXH_swap64(U64 x) -{ - return ((x << 56) & 0xff00000000000000ULL) | - ((x << 40) & 0x00ff000000000000ULL) | - ((x << 24) & 0x0000ff0000000000ULL) | - ((x << 8) & 0x000000ff00000000ULL) | - ((x >> 8) & 0x00000000ff000000ULL) | - ((x >> 24) & 0x0000000000ff0000ULL) | - ((x >> 40) & 0x000000000000ff00ULL) | - ((x >> 56) & 0x00000000000000ffULL); -} -#endif - - -//************************************** -// Constants -//************************************** -#define PRIME32_1 2654435761U -#define PRIME32_2 2246822519U -#define PRIME32_3 3266489917U -#define PRIME32_4 668265263U -#define PRIME32_5 374761393U - -#define PRIME64_1 11400714785074694791ULL -#define PRIME64_2 14029467366897019727ULL -#define PRIME64_3 1609587929392839161ULL -#define PRIME64_4 9650029242287828579ULL -#define PRIME64_5 2870177450012600261ULL - -//************************************** -// Architecture Macros -//************************************** -typedef enum { XXH_bigEndian = 0, XXH_littleEndian = 1 } XXH_endianess; -#ifndef XXH_CPU_LITTLE_ENDIAN // It is possible to define XXH_CPU_LITTLE_ENDIAN externally, for example using a compiler switch -static const int one = 1; -# define XXH_CPU_LITTLE_ENDIAN (*(char*)(&one)) -#endif - - -//************************************** -// Macros -//************************************** -#define XXH_STATIC_ASSERT(c) { enum { XXH_static_assert = 1/(!!(c)) }; } // use only *after* variable declarations - - -//**************************** -// Memory reads -//**************************** -typedef enum { XXH_aligned, XXH_unaligned } XXH_alignment; - -FORCE_INLINE U32 XXH_readLE32_align(const void *ptr, XXH_endianess endian, - XXH_alignment align) -{ - if (align == XXH_unaligned) - return endian == XXH_littleEndian ? A32(ptr) : XXH_swap32(A32(ptr)); - else - return endian == XXH_littleEndian ? *(U32 *)ptr : XXH_swap32(*(U32 *)ptr); -} - -FORCE_INLINE U32 XXH_readLE32(const void *ptr, XXH_endianess endian) -{ - return XXH_readLE32_align(ptr, endian, XXH_unaligned); -} - -FORCE_INLINE U64 XXH_readLE64_align(const void *ptr, XXH_endianess endian, - XXH_alignment align) -{ - if (align == XXH_unaligned) - return endian == XXH_littleEndian ? A64(ptr) : XXH_swap64(A64(ptr)); - else - return endian == XXH_littleEndian ? *(U64 *)ptr : XXH_swap64(*(U64 *)ptr); -} - -FORCE_INLINE U64 XXH_readLE64(const void *ptr, XXH_endianess endian) -{ - return XXH_readLE64_align(ptr, endian, XXH_unaligned); -} - - -//**************************** -// Simple Hash Functions -//**************************** -FORCE_INLINE U32 XXH32_endian_align(const void *input, size_t len, - U32 seed, XXH_endianess endian, XXH_alignment align) -{ - const BYTE *p = (const BYTE *)input; - const BYTE *bEnd = p + len; - U32 h32; -#define XXH_get32bits(p) XXH_readLE32_align(p, endian, align) - -#ifdef XXH_ACCEPT_NULL_INPUT_POINTER - if (p == NULL) - { - len = 0; - bEnd = p = (const BYTE *)(size_t)16; - } -#endif - - if (len >= 16) - { - const BYTE *const limit = bEnd - 16; - U32 v1 = seed + PRIME32_1 + PRIME32_2; - U32 v2 = seed + PRIME32_2; - U32 v3 = seed + 0; - U32 v4 = seed - PRIME32_1; - - do - { - v1 += XXH_get32bits(p) * PRIME32_2; - v1 = XXH_rotl32(v1, 13); - v1 *= PRIME32_1; - p += 4; - v2 += XXH_get32bits(p) * PRIME32_2; - v2 = XXH_rotl32(v2, 13); - v2 *= PRIME32_1; - p += 4; - v3 += XXH_get32bits(p) * PRIME32_2; - v3 = XXH_rotl32(v3, 13); - v3 *= PRIME32_1; - p += 4; - v4 += XXH_get32bits(p) * PRIME32_2; - v4 = XXH_rotl32(v4, 13); - v4 *= PRIME32_1; - p += 4; - } - while (p <= limit); - - h32 = XXH_rotl32(v1, 1) + XXH_rotl32(v2, 7) + XXH_rotl32(v3, - 12) + XXH_rotl32(v4, 18); - } - else - h32 = seed + PRIME32_5; - - h32 += (U32) len; - - while (p + 4 <= bEnd) - { - h32 += XXH_get32bits(p) * PRIME32_3; - h32 = XXH_rotl32(h32, 17) * PRIME32_4 ; - p += 4; - } - - while (p < bEnd) - { - h32 += (*p) * PRIME32_5; - h32 = XXH_rotl32(h32, 11) * PRIME32_1 ; - p++; - } - - h32 ^= h32 >> 15; - h32 *= PRIME32_2; - h32 ^= h32 >> 13; - h32 *= PRIME32_3; - h32 ^= h32 >> 16; - - return h32; -} - - -unsigned int XXH32(const void *input, size_t len, unsigned seed) -{ -#if 0 - // Simple version, good for code maintenance, but unfortunately slow for small inputs - XXH32_state_t state; - XXH32_reset(&state, seed); - XXH32_update(&state, input, len); - return XXH32_digest(&state); -#else - XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; - -# if !defined(XXH_USE_UNALIGNED_ACCESS) - if ((((size_t)input) & 3) == - 0) // Input is aligned, let's leverage the speed advantage - { - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH32_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned); - else - return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned); - } -# endif - - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH32_endian_align(input, len, seed, XXH_littleEndian, - XXH_unaligned); - else - return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned); -#endif -} - -FORCE_INLINE U64 XXH64_endian_align(const void *input, size_t len, - U64 seed, XXH_endianess endian, XXH_alignment align) -{ - const BYTE *p = (const BYTE *)input; - const BYTE *bEnd = p + len; - U64 h64; -#define XXH_get64bits(p) XXH_readLE64_align(p, endian, align) - -#ifdef XXH_ACCEPT_NULL_INPUT_POINTER - if (p == NULL) - { - len = 0; - bEnd = p = (const BYTE *)(size_t)32; - } -#endif - - if (len >= 32) - { - const BYTE *const limit = bEnd - 32; - U64 v1 = seed + PRIME64_1 + PRIME64_2; - U64 v2 = seed + PRIME64_2; - U64 v3 = seed + 0; - U64 v4 = seed - PRIME64_1; - - do - { - v1 += XXH_get64bits(p) * PRIME64_2; - p += 8; - v1 = XXH_rotl64(v1, 31); - v1 *= PRIME64_1; - v2 += XXH_get64bits(p) * PRIME64_2; - p += 8; - v2 = XXH_rotl64(v2, 31); - v2 *= PRIME64_1; - v3 += XXH_get64bits(p) * PRIME64_2; - p += 8; - v3 = XXH_rotl64(v3, 31); - v3 *= PRIME64_1; - v4 += XXH_get64bits(p) * PRIME64_2; - p += 8; - v4 = XXH_rotl64(v4, 31); - v4 *= PRIME64_1; - } - while (p <= limit); - - h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, - 12) + XXH_rotl64(v4, 18); - - v1 *= PRIME64_2; - v1 = XXH_rotl64(v1, 31); - v1 *= PRIME64_1; - h64 ^= v1; - h64 = h64 * PRIME64_1 + PRIME64_4; - - v2 *= PRIME64_2; - v2 = XXH_rotl64(v2, 31); - v2 *= PRIME64_1; - h64 ^= v2; - h64 = h64 * PRIME64_1 + PRIME64_4; - - v3 *= PRIME64_2; - v3 = XXH_rotl64(v3, 31); - v3 *= PRIME64_1; - h64 ^= v3; - h64 = h64 * PRIME64_1 + PRIME64_4; - - v4 *= PRIME64_2; - v4 = XXH_rotl64(v4, 31); - v4 *= PRIME64_1; - h64 ^= v4; - h64 = h64 * PRIME64_1 + PRIME64_4; - } - else - h64 = seed + PRIME64_5; - - h64 += (U64) len; - - while (p + 8 <= bEnd) - { - U64 k1 = XXH_get64bits(p); - k1 *= PRIME64_2; - k1 = XXH_rotl64(k1, 31); - k1 *= PRIME64_1; - h64 ^= k1; - h64 = XXH_rotl64(h64, 27) * PRIME64_1 + PRIME64_4; - p += 8; - } - - if (p + 4 <= bEnd) - { - h64 ^= (U64)(XXH_get32bits(p)) * PRIME64_1; - h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3; - p += 4; - } - - while (p < bEnd) - { - h64 ^= (*p) * PRIME64_5; - h64 = XXH_rotl64(h64, 11) * PRIME64_1; - p++; - } - - h64 ^= h64 >> 33; - h64 *= PRIME64_2; - h64 ^= h64 >> 29; - h64 *= PRIME64_3; - h64 ^= h64 >> 32; - - return h64; -} - - -unsigned long long XXH64(const void *input, size_t len, - unsigned long long seed) -{ -#if 0 - // Simple version, good for code maintenance, but unfortunately slow for small inputs - XXH64_state_t state; - XXH64_reset(&state, seed); - XXH64_update(&state, input, len); - return XXH64_digest(&state); -#else - XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; - -# if !defined(XXH_USE_UNALIGNED_ACCESS) - if ((((size_t)input) & 7) == - 0) // Input is aligned, let's leverage the speed advantage - { - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH64_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned); - else - return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned); - } -# endif - - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH64_endian_align(input, len, seed, XXH_littleEndian, - XXH_unaligned); - else - return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned); -#endif -} - -/**************************************************** - * Advanced Hash Functions -****************************************************/ - -/*** Allocation ***/ -typedef struct -{ - U64 total_len; - U32 seed; - U32 v1; - U32 v2; - U32 v3; - U32 v4; - U32 mem32[4]; /* defined as U32 for alignment */ - U32 memsize; -} XXH_istate32_t; - -typedef struct -{ - U64 total_len; - U64 seed; - U64 v1; - U64 v2; - U64 v3; - U64 v4; - U64 mem64[4]; /* defined as U64 for alignment */ - U32 memsize; -} XXH_istate64_t; - - -XXH32_state_t *XXH32_createState(void) -{ - XXH_STATIC_ASSERT(sizeof(XXH32_state_t) >= sizeof( - XXH_istate32_t)); // A compilation error here means XXH32_state_t is not large enough - return (XXH32_state_t *)XXH_malloc(sizeof(XXH32_state_t)); -} -XXH_errorcode XXH32_freeState(XXH32_state_t *statePtr) -{ - XXH_free(statePtr); - return XXH_OK; -}; - -XXH64_state_t *XXH64_createState(void) -{ - XXH_STATIC_ASSERT(sizeof(XXH64_state_t) >= sizeof( - XXH_istate64_t)); // A compilation error here means XXH64_state_t is not large enough - return (XXH64_state_t *)XXH_malloc(sizeof(XXH64_state_t)); -} -XXH_errorcode XXH64_freeState(XXH64_state_t *statePtr) -{ - XXH_free(statePtr); - return XXH_OK; -}; - - -/*** Hash feed ***/ - -XXH_errorcode XXH32_reset(XXH32_state_t *state_in, U32 seed) -{ - XXH_istate32_t *state = (XXH_istate32_t *) state_in; - state->seed = seed; - state->v1 = seed + PRIME32_1 + PRIME32_2; - state->v2 = seed + PRIME32_2; - state->v3 = seed + 0; - state->v4 = seed - PRIME32_1; - state->total_len = 0; - state->memsize = 0; - return XXH_OK; -} - -XXH_errorcode XXH64_reset(XXH64_state_t *state_in, unsigned long long seed) -{ - XXH_istate64_t *state = (XXH_istate64_t *) state_in; - state->seed = seed; - state->v1 = seed + PRIME64_1 + PRIME64_2; - state->v2 = seed + PRIME64_2; - state->v3 = seed + 0; - state->v4 = seed - PRIME64_1; - state->total_len = 0; - state->memsize = 0; - return XXH_OK; -} - - -FORCE_INLINE XXH_errorcode XXH32_update_endian(XXH32_state_t *state_in, - const void *input, size_t len, XXH_endianess endian) -{ - XXH_istate32_t *state = (XXH_istate32_t *) state_in; - const BYTE *p = (const BYTE *)input; - const BYTE *const bEnd = p + len; - -#ifdef XXH_ACCEPT_NULL_INPUT_POINTER - if (input == NULL) return XXH_ERROR; -#endif - - state->total_len += len; - - if (state->memsize + len < 16) // fill in tmp buffer - { - XXH_memcpy((BYTE *)(state->mem32) + state->memsize, input, len); - state->memsize += (U32)len; - return XXH_OK; - } - - if (state->memsize) // some data left from previous update - { - XXH_memcpy((BYTE *)(state->mem32) + state->memsize, input, - 16 - state->memsize); - { - const U32 *p32 = state->mem32; - state->v1 += XXH_readLE32(p32, endian) * PRIME32_2; - state->v1 = XXH_rotl32(state->v1, 13); - state->v1 *= PRIME32_1; - p32++; - state->v2 += XXH_readLE32(p32, endian) * PRIME32_2; - state->v2 = XXH_rotl32(state->v2, 13); - state->v2 *= PRIME32_1; - p32++; - state->v3 += XXH_readLE32(p32, endian) * PRIME32_2; - state->v3 = XXH_rotl32(state->v3, 13); - state->v3 *= PRIME32_1; - p32++; - state->v4 += XXH_readLE32(p32, endian) * PRIME32_2; - state->v4 = XXH_rotl32(state->v4, 13); - state->v4 *= PRIME32_1; - p32++; - } - p += 16 - state->memsize; - state->memsize = 0; - } - - if (p <= bEnd - 16) - { - const BYTE *const limit = bEnd - 16; - U32 v1 = state->v1; - U32 v2 = state->v2; - U32 v3 = state->v3; - U32 v4 = state->v4; - - do - { - v1 += XXH_readLE32(p, endian) * PRIME32_2; - v1 = XXH_rotl32(v1, 13); - v1 *= PRIME32_1; - p += 4; - v2 += XXH_readLE32(p, endian) * PRIME32_2; - v2 = XXH_rotl32(v2, 13); - v2 *= PRIME32_1; - p += 4; - v3 += XXH_readLE32(p, endian) * PRIME32_2; - v3 = XXH_rotl32(v3, 13); - v3 *= PRIME32_1; - p += 4; - v4 += XXH_readLE32(p, endian) * PRIME32_2; - v4 = XXH_rotl32(v4, 13); - v4 *= PRIME32_1; - p += 4; - } - while (p <= limit); - - state->v1 = v1; - state->v2 = v2; - state->v3 = v3; - state->v4 = v4; - } - - if (p < bEnd) - { - XXH_memcpy(state->mem32, p, bEnd - p); - state->memsize = (int)(bEnd - p); - } - - return XXH_OK; -} - -XXH_errorcode XXH32_update(XXH32_state_t *state_in, const void *input, - size_t len) -{ - XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; - - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH32_update_endian(state_in, input, len, XXH_littleEndian); - else - return XXH32_update_endian(state_in, input, len, XXH_bigEndian); -} - - - -FORCE_INLINE U32 XXH32_digest_endian(const XXH32_state_t *state_in, - XXH_endianess endian) -{ - XXH_istate32_t *state = (XXH_istate32_t *) state_in; - const BYTE *p = (const BYTE *)state->mem32; - BYTE *bEnd = (BYTE *)(state->mem32) + state->memsize; - U32 h32; - - if (state->total_len >= 16) - h32 = XXH_rotl32(state->v1, 1) + XXH_rotl32(state->v2, - 7) + XXH_rotl32(state->v3, 12) + XXH_rotl32(state->v4, 18); - else - h32 = state->seed + PRIME32_5; - - h32 += (U32) state->total_len; - - while (p + 4 <= bEnd) - { - h32 += XXH_readLE32(p, endian) * PRIME32_3; - h32 = XXH_rotl32(h32, 17) * PRIME32_4; - p += 4; - } - - while (p < bEnd) - { - h32 += (*p) * PRIME32_5; - h32 = XXH_rotl32(h32, 11) * PRIME32_1; - p++; - } - - h32 ^= h32 >> 15; - h32 *= PRIME32_2; - h32 ^= h32 >> 13; - h32 *= PRIME32_3; - h32 ^= h32 >> 16; - - return h32; -} - - -U32 XXH32_digest(const XXH32_state_t *state_in) -{ - XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; - - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH32_digest_endian(state_in, XXH_littleEndian); - else - return XXH32_digest_endian(state_in, XXH_bigEndian); -} - - -FORCE_INLINE XXH_errorcode XXH64_update_endian(XXH64_state_t *state_in, - const void *input, size_t len, XXH_endianess endian) -{ - XXH_istate64_t *state = (XXH_istate64_t *) state_in; - const BYTE *p = (const BYTE *)input; - const BYTE *const bEnd = p + len; - -#ifdef XXH_ACCEPT_NULL_INPUT_POINTER - if (input == NULL) return XXH_ERROR; -#endif - - state->total_len += len; - - if (state->memsize + len < 32) // fill in tmp buffer - { - XXH_memcpy(((BYTE *)state->mem64) + state->memsize, input, len); - state->memsize += (U32)len; - return XXH_OK; - } - - if (state->memsize) // some data left from previous update - { - XXH_memcpy(((BYTE *)state->mem64) + state->memsize, input, - 32 - state->memsize); - { - const U64 *p64 = state->mem64; - state->v1 += XXH_readLE64(p64, endian) * PRIME64_2; - state->v1 = XXH_rotl64(state->v1, 31); - state->v1 *= PRIME64_1; - p64++; - state->v2 += XXH_readLE64(p64, endian) * PRIME64_2; - state->v2 = XXH_rotl64(state->v2, 31); - state->v2 *= PRIME64_1; - p64++; - state->v3 += XXH_readLE64(p64, endian) * PRIME64_2; - state->v3 = XXH_rotl64(state->v3, 31); - state->v3 *= PRIME64_1; - p64++; - state->v4 += XXH_readLE64(p64, endian) * PRIME64_2; - state->v4 = XXH_rotl64(state->v4, 31); - state->v4 *= PRIME64_1; - p64++; - } - p += 32 - state->memsize; - state->memsize = 0; - } - - if (p + 32 <= bEnd) - { - const BYTE *const limit = bEnd - 32; - U64 v1 = state->v1; - U64 v2 = state->v2; - U64 v3 = state->v3; - U64 v4 = state->v4; - - do - { - v1 += XXH_readLE64(p, endian) * PRIME64_2; - v1 = XXH_rotl64(v1, 31); - v1 *= PRIME64_1; - p += 8; - v2 += XXH_readLE64(p, endian) * PRIME64_2; - v2 = XXH_rotl64(v2, 31); - v2 *= PRIME64_1; - p += 8; - v3 += XXH_readLE64(p, endian) * PRIME64_2; - v3 = XXH_rotl64(v3, 31); - v3 *= PRIME64_1; - p += 8; - v4 += XXH_readLE64(p, endian) * PRIME64_2; - v4 = XXH_rotl64(v4, 31); - v4 *= PRIME64_1; - p += 8; - } - while (p <= limit); - - state->v1 = v1; - state->v2 = v2; - state->v3 = v3; - state->v4 = v4; - } - - if (p < bEnd) - { - XXH_memcpy(state->mem64, p, bEnd - p); - state->memsize = (int)(bEnd - p); - } - - return XXH_OK; -} - -XXH_errorcode XXH64_update(XXH64_state_t *state_in, const void *input, - size_t len) -{ - XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; - - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH64_update_endian(state_in, input, len, XXH_littleEndian); - else - return XXH64_update_endian(state_in, input, len, XXH_bigEndian); -} - - - -FORCE_INLINE U64 XXH64_digest_endian(const XXH64_state_t *state_in, - XXH_endianess endian) -{ - XXH_istate64_t *state = (XXH_istate64_t *) state_in; - const BYTE *p = (const BYTE *)state->mem64; - BYTE *bEnd = (BYTE *)state->mem64 + state->memsize; - U64 h64; - - if (state->total_len >= 32) - { - U64 v1 = state->v1; - U64 v2 = state->v2; - U64 v3 = state->v3; - U64 v4 = state->v4; - - h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, - 12) + XXH_rotl64(v4, 18); - - v1 *= PRIME64_2; - v1 = XXH_rotl64(v1, 31); - v1 *= PRIME64_1; - h64 ^= v1; - h64 = h64 * PRIME64_1 + PRIME64_4; - - v2 *= PRIME64_2; - v2 = XXH_rotl64(v2, 31); - v2 *= PRIME64_1; - h64 ^= v2; - h64 = h64 * PRIME64_1 + PRIME64_4; - - v3 *= PRIME64_2; - v3 = XXH_rotl64(v3, 31); - v3 *= PRIME64_1; - h64 ^= v3; - h64 = h64 * PRIME64_1 + PRIME64_4; - - v4 *= PRIME64_2; - v4 = XXH_rotl64(v4, 31); - v4 *= PRIME64_1; - h64 ^= v4; - h64 = h64 * PRIME64_1 + PRIME64_4; - } - else - h64 = state->seed + PRIME64_5; - - h64 += (U64) state->total_len; - - while (p + 8 <= bEnd) - { - U64 k1 = XXH_readLE64(p, endian); - k1 *= PRIME64_2; - k1 = XXH_rotl64(k1, 31); - k1 *= PRIME64_1; - h64 ^= k1; - h64 = XXH_rotl64(h64, 27) * PRIME64_1 + PRIME64_4; - p += 8; - } - - if (p + 4 <= bEnd) - { - h64 ^= (U64)(XXH_readLE32(p, endian)) * PRIME64_1; - h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3; - p += 4; - } - - while (p < bEnd) - { - h64 ^= (*p) * PRIME64_5; - h64 = XXH_rotl64(h64, 11) * PRIME64_1; - p++; - } - - h64 ^= h64 >> 33; - h64 *= PRIME64_2; - h64 ^= h64 >> 29; - h64 *= PRIME64_3; - h64 ^= h64 >> 32; - - return h64; -} - - -unsigned long long XXH64_digest(const XXH64_state_t *state_in) -{ - XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; - - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH64_digest_endian(state_in, XXH_littleEndian); - else - return XXH64_digest_endian(state_in, XXH_bigEndian); -} - - diff --git a/external/lsquic/src/liblsquic/ls-qpack/deps/xxhash/xxhash.h b/external/lsquic/src/liblsquic/ls-qpack/deps/xxhash/xxhash.h deleted file mode 100644 index 45ecc9d..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/deps/xxhash/xxhash.h +++ /dev/null @@ -1,160 +0,0 @@ -/* - xxHash - Extremely Fast Hash algorithm - Header File - Copyright (C) 2012-2014, Yann Collet. - BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following disclaimer - in the documentation and/or other materials provided with the - distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - You can contact the author at : - - xxHash source repository : http://code.google.com/p/xxhash/ -*/ - -/* Notice extracted from xxHash homepage : - -xxHash is an extremely fast Hash algorithm, running at RAM speed limits. -It also successfully passes all tests from the SMHasher suite. - -Comparison (single thread, Windows Seven 32 bits, using SMHasher on a Core 2 Duo @3GHz) - -Name Speed Q.Score Author -xxHash 5.4 GB/s 10 -CrapWow 3.2 GB/s 2 Andrew -MumurHash 3a 2.7 GB/s 10 Austin Appleby -SpookyHash 2.0 GB/s 10 Bob Jenkins -SBox 1.4 GB/s 9 Bret Mulvey -Lookup3 1.2 GB/s 9 Bob Jenkins -SuperFastHash 1.2 GB/s 1 Paul Hsieh -CityHash64 1.05 GB/s 10 Pike & Alakuijala -FNV 0.55 GB/s 5 Fowler, Noll, Vo -CRC32 0.43 GB/s 9 -MD5-32 0.33 GB/s 10 Ronald L. Rivest -SHA1-32 0.28 GB/s 10 - -Q.Score is a measure of quality of the hash function. -It depends on successfully passing SMHasher test set. -10 is a perfect score. -*/ - -#pragma once - -#if defined (__cplusplus) -extern "C" { -#endif - - -/***************************** - Includes -*****************************/ -#include /* size_t */ - - -/***************************** - Type -*****************************/ -typedef enum { XXH_OK = 0, XXH_ERROR } XXH_errorcode; - - - -/***************************** - Simple Hash Functions -*****************************/ - -unsigned int XXH32(const void *input, size_t length, unsigned seed); -unsigned long long XXH64(const void *input, size_t length, - unsigned long long seed); - -/* -XXH32() : - Calculate the 32-bits hash of sequence "length" bytes stored at memory address "input". - The memory between input & input+length must be valid (allocated and read-accessible). - "seed" can be used to alter the result predictably. - This function successfully passes all SMHasher tests. - Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark) : 5.4 GB/s -XXH64() : - Calculate the 64-bits hash of sequence of length "len" stored at memory address "input". -*/ - - - -/***************************** - Advanced Hash Functions -*****************************/ -typedef struct { long long ll[ 6]; } XXH32_state_t; -typedef struct { long long ll[11]; } XXH64_state_t; - -/* -These structures allow static allocation of XXH states. -States must then be initialized using XXHnn_reset() before first use. - -If you prefer dynamic allocation, please refer to functions below. -*/ - -XXH32_state_t *XXH32_createState(void); -XXH_errorcode XXH32_freeState(XXH32_state_t *statePtr); - -XXH64_state_t *XXH64_createState(void); -XXH_errorcode XXH64_freeState(XXH64_state_t *statePtr); - -/* -These functions create and release memory for XXH state. -States must then be initialized using XXHnn_reset() before first use. -*/ - - -XXH_errorcode XXH32_reset(XXH32_state_t *statePtr, unsigned seed); -XXH_errorcode XXH32_update(XXH32_state_t *statePtr, const void *input, - size_t length); -unsigned int XXH32_digest(const XXH32_state_t *statePtr); - -XXH_errorcode XXH64_reset(XXH64_state_t *statePtr, - unsigned long long seed); -XXH_errorcode XXH64_update(XXH64_state_t *statePtr, const void *input, - size_t length); -unsigned long long XXH64_digest(const XXH64_state_t *statePtr); - -/* -These functions calculate the xxHash of an input provided in multiple smaller packets, -as opposed to an input provided as a single block. - -XXH state space must first be allocated, using either static or dynamic method provided above. - -Start a new hash by initializing state with a seed, using XXHnn_reset(). - -Then, feed the hash state by calling XXHnn_update() as many times as necessary. -Obviously, input must be valid, meaning allocated and read accessible. -The function returns an error code, with 0 meaning OK, and any other value meaning there is an error. - -Finally, you can produce a hash anytime, by using XXHnn_digest(). -This function returns the final nn-bits hash. -You can nonetheless continue feeding the hash state with more input, -and therefore get some new hashes, by calling again XXHnn_digest(). - -When you are done, don't forget to free XXH state space, using typically XXHnn_freeState(). -*/ - - -#if defined (__cplusplus) -} -#endif diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/README b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/README deleted file mode 100644 index 198f141..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/README +++ /dev/null @@ -1,3 +0,0 @@ -These are based on a first couple of blocks of encoded netbsd.qif - -Table size: 256 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/preamble b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/preamble deleted file mode 100644 index 580de759dcd5268fe863adf304e0617256107eef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 317 zcmZQz00TxK`ICV`pYhX{jcXN?x8tqZqbIl8!B$H{GWV3Ppjr^oT4GuGXBVQ9Bfermg6 zLW=ID2Mqj+gMC-Zl!(V$HTzDR{$DPnSzu0mygs9WuKujEiGg4vg|#y6OIaB9EO0H* cyTg4d>EeD!7=THg3|I&-oWkMm44AVS0N2@$*#H0l diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000000,sig_06,src_000390,op_havoc,rep_4 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000000,sig_06,src_000390,op_havoc,rep_4 deleted file mode 100644 index b001720e639e5839c548f09d49ec2b3fc7ccaead..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 xcmZQzfB+^22KlgQ3=E<`2E!Q^t19ND_3ew#L+JkyfJNv(!{V!8(8O@;6adslBvAkW diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000000,sig_06,src_000579,op_flip1,pos_14 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000000,sig_06,src_000579,op_flip1,pos_14 deleted file mode 100644 index e64ddbff74b15c20db459bf6d012e9efc5eab85e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 vcmZRw|F8I;kNppm{l5l=JLdm^K)oJF+!1*G{P|@d27~(lPe3yN|1$sp)4(C? diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000000,src_000000,op_flip2,pos_12 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000000,src_000000,op_flip2,pos_12 deleted file mode 100644 index 2db588ae51db1a16b176c24690593f9c908eee86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 136 zcmZQzfC454hJ-ULO$^7*o1DmJNO|+FzVzeCnKO+ub{m{7*}g+)k^0}>1(vxp^9vQ% zJP1&?s$yPR-@aJ=yZ=Uv|=>2u|^6H8v{=b4ulQjyn<(-_lYi9QE no&F;vs_Za}eAu+ZiTkE7gzO8_P++~vpxtX-xIN_P;(8qb(T+L# diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000001,sig_11,src_000579,op_havoc,rep_4 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000001,sig_11,src_000579,op_havoc,rep_4 deleted file mode 100644 index 1f0db89be417b582e1dc63d7d2396b6970fa99f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmZRw|F8I;kNppm{l5l=JLdm^K)wF|e*q9!|NoA_^XJbm1Mzd9*#G+fPkk)b4>Uks9RSN59e@A; diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000002,src_000000,op_havoc,rep_8 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000002,src_000000,op_havoc,rep_8 deleted file mode 100644 index 13524068a421de7bb07634cd060ef4289394fd88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmZQzfC46l3^-s&U^v6l#Bl7q$%%Z1lppWvOFy2RIny{}x54R>?K^}PssHU=V3|8J zzpw$QS>39Nd1-z7M)BWmHf5WS8dsdX$ZoxP+KZz1Z`I4IE1LNK3NlUBxQ@gw%$9d@ g=B}C9zjykNkf^dC4F%S#4BEZch1)}pF0R)B0A{{C6951J diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000006,src_000285,op_flip2,pos_14 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000006,src_000285,op_flip2,pos_14 deleted file mode 100644 index 458ee506aa96ac5a467fe08aefd69647b43183a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 VcmZQzfB**|<-m{t;hbS<0ssxh0y6*r diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000008,src_000285,op_flip2,pos_20 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000008,src_000285,op_flip2,pos_20 deleted file mode 100644 index 002e7e43f505355e072a271acd69f11895a682b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 UcmZQzfB**|1;QYZaE7G`01Ji!GXMYp diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000010,src_000306,op_flip2,pos_75 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000010,src_000306,op_flip2,pos_75 deleted file mode 100644 index 62572c80feca850bb6098dd0a918b701378a39b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77 zcmZQzfP(*T8O|^?Ffg1qIZ>_N>=iXLzff__+yK`qY3Zf)?Tf{Kw^?I|plVGx4*=5z B8u9=D diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000011,src_000344,op_havoc,rep_2 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000011,src_000344,op_havoc,rep_2 deleted file mode 100644 index f97d9f72e9b141f7f1bd52111360b5dcd6597754..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31 dcmZQzfC8q5pZ^&efE=a-Akpw22#%dM0RUW738DZ1 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000014,src_000366,op_flip2,pos_28 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/a/test-cases/id_000014,src_000366,op_flip2,pos_28 deleted file mode 100644 index a71313e4cff591204cc86b55dddbf672b84760b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32 ScmZQzfC76Az?8tia0UQEu?3v~ diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/README b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/README deleted file mode 100644 index 7036633..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/README +++ /dev/null @@ -1 +0,0 @@ -Table size: 4096 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/preamble b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/preamble deleted file mode 100644 index 295dfa6ebf3bf2dcc04e89a288b4131efdb9f8cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27492 zcmeIb2|SeD`#(N*HDr)|-z%gfBv~eFkyK|NH-5uh0Fwrss;qL*L|+{Il*Aqivs*P z4TBk`*wmY7PNbvu7B}T26 z=`4-oUM=xwLT7q=dh>ne+A7zWcGo zN9P1>_>T4?d7XQ2u2s6^%F1=c~SEAI|3eh;B}uRToDxunS!{Dr!jS(D3( zsov07XZLW(Mfm4Oj7yx>?=yVs4NXo?%XSXIzbt98NbWW?rIJ>GRiWz*g&!Ghb`@_q zJ2A6aC-1FB5@ojrUBAOSUo^sRz#ys}`7W@%w3Z6=7Qu-UW14H1XJ?P-^{GDy>L5kp{D=zhM>chyPE^w#UGH0J_;)t^wg!qMp1y~}E3uCgnk zQiAV&U(fKlhY@Jna9$PTmzc=Q!MRt(tM?6^edi>G8>iJuVISL<>n5kteK{)snEl+= z#_N^uXIi+>-#YaC%7TTI+3WT^-1vylZMcToOJ=Yvx7aT^*XGc`8Rz z(EeTxN8fz7sPWmXDC!<33m@Sywv_wVVdnIHi;+rgXg~h}1TzckW;S*XPNUFYysS?A z9(N50)<*;MXF#)ocvdTrGHLkrVYJ#uFWvK`WtOVt!MJtfT@@V`K45Wu-S1Mq5rm?l zp4r$yfW&naE$Ap6Cg4^dVLK{xQZYCN7%ll zw%;NU|HGaqFElQ)w2?(?B>F|CRcvAgEAmXf>da>2Oq3b|Mro&4K9R37UnLysO7~&Q zo$tps)yc=@wSU?i@VIvQ!*+pv*M{XCxgMUsGI*}#Bx}_4m&uvO-C8bznwtb9Px&@h zBHz}rTBc9$J|`dd3(e(KCIYui)0jQuYyIO=o9eZ}JqzDYk432%*GP3OeLXd8H+!X& z>ZPyzliJoJ^PQuoD|=PhGTx+5A008c{H3q`hgpaAm5#xeGRHiwH$e`z-C$<3VFH*6 z*z5vNDqgax%H4sky~@uu2l?hHB9F@!L*$CJDIHM-)yx{<)RoDoO9A^E@qv*1%&%P!02xE;IVT-a^I&hZ7T=j>{vij~2RCSm>^5E&^9?S?!x6NBITBHxX zXPo8M0K=G~sJ5t&G66j>HQ0t&*@=RZ#SinkKNIfnt(Z~!_0vz4S@SI14n#@f8Z8Co zom1C7Yzcw+qQkEZgb}Jts4+dL@fA?xvEQpO{II#of1(;2KsCHUH9q}bH8$P-KJ-I( zdjFfa1w9rp#a;Bew9{+Nl>f}&&13ZebU5AA8!&n$51R|p!zg6ME!^K_cv&)QC{q1} zKA^$D)=F+XL3hBl5qv}tejQzrYldo`Nu#$}4(+kw&ab;a%2gw-VIPLU;9!)=GEo>} z(#X3*c+&&1Z>ic^Za<}yw`IQNxIFyUF8I;^E8bC|-cZYgYG$)h9OLEp0|7tt>U?QA zFP}yOf51`6P%=-s=!+dU#%e7Feln%l5Jr=CLve5UN|YlGLorj#al2=ruSE=m6U>uf zosbgQFg#@39!|Xs;9H#8k2t_Am^7&?I{va`puDuKYdjhO73~*AD3TFK7*R8JbVU;j z-AyVAd*%MHX`|=)auAhT6#vVh{msk6H7a4&?N|3SJ^ysZ+`uQPOPDzlSEWthTb>za zm}+zT&g-N=-RL8nVzkn_HWh|@`3=sRU_=X=sr=9pky8WL2rce9MkTjX?hUR4Ch#o` zN(g}lL+CHe`lkcoPW$jrLqZ#B@z3IlK!EQ-7C*#_s72oT`GMof*#n%YV*cw!3iGm} zO*va%2Bo(hHgekROQ@C6UE2pCp45$DyY7W9A-Bm*zj)WSXV=Wjbc?=^U8i+(4$SN? zwxkF#imk%v$hTZo*mvf|bL&@w{i91peFN`QI50cEdBQJrEYA&Lyrh>FY+FB}oaaa!s5pAslrnhBDrHojE& z^ZW9WZm!sq?Gs;ot}mC{u`@|Ifldh5e_=fZy4 zt}bZ-Hhxi-I^(2V?$ds%eEB<-+RtWV(C51Y`3sk^;|!Inpq8uP^BZqLWvcy}bz?-3phb)$}L^If54Wj5z#2Wj(9y|%0vmPw?xJ~w+m z-HB;Z<<-L2%#|ipmAs{yrWf5bDVVgEgAC~|7l%BeKXxhZ$+6`2%9~5o{_yDM^}&r^ zVN-k+p8PFlTc$ks_5^>9mc0xGQN5c&_Zij8gl0uN1QA27DECZV1_?KX_!`}91rqpR8}E-gpue3aye z^Z9Ds`Gd{B>loTn%Int;KlsxK!Vm?a8^MJ@-Re5*(5j&h57MQ>7YL-JMcgfBn1k;r$EBeGFQkf7Lj7pYNFI?PSfT&2jlPCmp);GiC(q z$BLv*;na+m`H79YQV=w}-2Ri2E}Xazbn@S~xe7maLSg4VrBf|+mnPqw25(A`=l~HU=Q>fBK5K_){i6Le zIoo-XCVsx{9vFx?uUxHxtu3)A7Z4Q(s6K_h1#MrQAG z!D&SPfyeOOy^HboKe3X;t>OccYjt^=r>c`bqJe?^ewnlF*0r{1VKS-}0-|eGFP&$AoX(0#*bkA?HgeGEe=+^~o(w3Egqbz`$GihnJh()_N0rOZFx<*LIV_Lwj~}<9Ap@Bjut@xia4$9{ zdc}JMAwa~rd*^QAAWE#3sG!!rDguiPgNcG~9v**0DEdbH)BtlFzT{v~uKW%{xnkJI zVE*Cggv6-ZIo?oLvPEszCvNztsM( zqxKFHoOANz?rcVVRZM;jR@##ZZV76c;K1Lk=0gvGO9FhvdHoDyt=>f0+zObJ*4_+Ys*}~-`GAeFnnZ5$=9O%R(zlanK6*e(@$eoiHUkX$cOkZ00V8o4)lrmv6v zF_cJITPdma5;-PCVZ(_`+k`u_`Eo(%L?R)*UgAM_QIy4{d{qC=We@lDwc5U30=Ulz z9rmiq%OYaRSYudQD;XeR3Uo`95X$8&iU_J!O%YkTQZI?C)!)3-b#UU$L)YNsH4)pC zKJF2u>S}-N03a6u$XnZr4I76{7>p(Qzac36H^eB<7S^)|a9DbbX$UIM`?ItJ}kM}&KsR+W1;Z6i&aNn zzG92DdrjrA;HhnipH86Pj|C{CU$DAijj)J)XYV~kGlP16P%xNb-4^W zDcL{LkI?vCq-f&i-#B=z)ZMd@EpF5lPK_zvO~}q@xe2!oL$aOD^!mXG$@DO~4-b6e zTbKDS(=QbS$436J;8fdcVITWKr`KtGnCJDQ>GL)H3O%e*6(neK0L>1xtsB?2i6Q_;vu3A5PuI_(0mJ2JH`RIXKhGJ_l>VDcoY6iQSd z(O0TTcB(1kuz?rQB&v1RIJF0Vw6POr)u$*mcZw+eV{qQAcG=cZ(<1{iO0P{%y(~%46iLv8 zGAl+i%WHyWC#%MV=_&iH>^~w~0vr$RMWlNF7+@__8W(WLHm5d{dHtlit_^1Eqs_y7 zLU7}8J2zC&@w*O9+>&kK^2^w^O+TBjCPCW+(AJoV2TGFls|P&{0KTHRrO|!DyGVY~ zv3OYhym$~oc~QD#=%oEzntd})m$32<0ZBuYy2>Kb2dTti>ZvPs%D7e%O((@z=ZTPm zlj>3l;F$rldQviM)= zB+_u|NceN9DKv;=o;^OmTPQ1k4KjXVwvY8_l2+{{(IKwKWV=s#-_qbfwsXU!N;(bX z`VCYjrsxeqWoWw6Se>8Zjj=DfxTUB?q^)=|s_bQ4>vfR8yQfWyo+RKNzs%6 zniXi%8@wA?8E0zl?KE9B?lD13Ds*bolyt)M0#2Fbg7QOtvtLz)-EeM|p;Eg}(9$c& zb$cVr4Yi132C)kiLIT)f_E2uLi&TI60G2htBJtsJ>`1!)(Cz+X{Pv}21Rs4ysNe+| zxy48ng<@Z{EFInyd8kCs8tN$a$0juIs2rzcsiN(5FY>R3OtI?Ako6@JHL3tGTL9Lz zwqZyQ6mr&(rc}UHMs`?;Dzb9qkaCN@f5NlofZ0q|$0v9_vTG<`_>F|wXXw<*#Wc5|{X@#)R!#Gb$ekp4guE6ZV)SPlgI=EE8qeFHmXb9Gi8)wx1TXmX~B?T`cgXdnni7nAm zn-_5(YFY8d_NbdAXzG7~R^DfY$b!2B2|4{pVI6||he}sU^s&ASl2)29C?2=Lc@WV^ zlzDt&(8Q?wM_Z@t-cu&e+MmsD5U~UX`D__c4zDIbLy{;G=lJz0nu6$TfD3W-FNJkx zd8uC%1nEepA^G`}@JyK6OMKIcBHtI&@m&yskHlv-FLs17M9{?caAQq!T7_eP1Z+P5 zvj;}fgP&+T8YNk!7vPZ(#e&MBe7F7~J4f47~Iwkgd-w)_>Dx0`Qg_IcDX4Zgd#IA&;Lzi_8K3!8}Pq!ckRrTe|0XFK9vv}XpsSV zY0~)8PmA{92d6tSP*nc+ARS4#@K4imu_$?|7o`N=4pu?5*MoqlH1g9_73bpTwk$R% zR{jkTaxvyAhz zy=aAjrE>Z-7yN710q~eOGXwEE2uPMRc{!K9t-f@5^1v@C#= zwtMeP&hDQgq!N1TB?|OR>eKxB^#(mz-Ov50O)8-egHf}wz;Ttgz+}<<#oH_VYcVrL zt)fH^{OitTh7gc9OJckDISbKzo&WwlS(YpNwh3)}xh>Rk5v+xldKhkC@7dC9WL|kc zD0fHBz^KMn+OT28$ynnl@R;Na@W95nIJY-;M{+O4BjQi7K@VO#m2_V>`q+^h#hOl9 z2l5AxA&(u8cm9^e?3G>HAozMWuCOm}p}(Zk9?H(KU-=311zRk10~7}&IBa#We}T#X z%dgJg@&}D7UW6W~a0d?#jN%?!`B4Yu5FV8DT_dp1dLvE$TOcByZB5D8dqToJ+1prb-?Dfc8xg~<+yn|EE&;0NF(l=0maJ{PBv>SPUp@Mm z7Nk~^W*vC6aeX%kGph*Z|X zu(<&$>5_K-_4iq_R*ZsJ8ycdb7sZ9mZJ2C`f5r9UDa5uf-w91CK!YMfEkRE0bA>M^ z9N3UAet<(X650=rvj;Ma;#PBTZ=TMnmhSQOH7Z+^zS~7DGt-putMo?1=M)FWKTd6N z8SJWEa%$hC`sJE;>%yV;TGZc^RaNtSsL)2szq7DirMuW98E;py+^Cw-)-`u} zoS{6qL0SI%!j%S}lorO1(+=pL3)3B*?9vtDW74w=1(g=1)9)>Bt#yHQ9wjCTn;Sdf?cN>ruCb<8dAgJSb`|*MQXX%(`(m zPV%fQ@K9MRc8a(*D!*wfZ7i;^gLt)9+Xhv{h<4WpguTU+#muzzjfzfFdba~ zTnwsBdXwznWyAUAzbSd+UZ(dnVKhhv&n!8hR?=pz`gp><`$1~Woo(fBqM65@9Z&Z} zZf0)YD&lA$&$hN&prn=gh_p!c!-4$wBZbNN2Qo!$h}}@6G@s$!F59P1LDKTSgh1WC zSn>}Ycu;dtcbb<$)i{?^w%^LEMrbi`vE-*9A(5h;EPaS8WOSXo!~eJozOO)n@+UL_ zVLkw-*N0hxYzV`0+>T;iKz$+aEnsdjWiGut+rk2odzeOM9e48N&QU!6-lE-fPVZ0& z_k-%Wew1KSE@p+kmDAe3trZ=b^_Zp@<_BXHw(qiVm}{8XydTO5O5|i-z#klIxLGYvA?4*^_3|H!p>_oQ^CYM+i18N&GtBGFr=Nw)9ydb${Vo7iTtU zz9p8*D=n^{K1{_w+?yQR`{{*S<>K4Hm&1ql9lzOjS(PT)ZID0pedyNKx_?DbyP*EL zK)gygT((9aG%GLWT+^mWj<=_H=6BT9sbC;N;t&zdu$YK{xMfH`;cXW-FCMmo=3yvP zS!dpoCSpX75d^;&f#eWER0xp}39+*Q@I6wT8;B#$LVV^4{wVr5PuG`R^An-kG3c9V zVX+wmxx+wiD>I^_D}z{+Y#J{uHU{!=;4%cC^+IHGhO0tHfDlOy^QCaPF;(~RFUg5T zQg0?==}BvNbiLf2B3$P5{XGsx(Ycmmnq*pbY`q*I8|soT+cx}aPrfWz879RuS}#}l z4#(~1X+RgUA8l3q4sv*;a>ncB^6>53IT{#+d;*X=a3BCLuxTtO?SL;VU^b zYf1V2_WQ3NGWvD;R<*OY5=E8r~$<4c|PDUTr0r|9rs%n&58 z^Fc;UlR zfpEGmbaUUm{&aQ?h!p^_;iFz%{O`W`O`_ilX~(2IF+-CX+%@RYLC>TjsL}VTY#cVt z>yT(+KR3XDUuU(9IPYK9{M^)|HbD2J_YEJ?U_ zUPG~58O;%1qaIrTauTTL^~$o26yl)&MZXF)8MV z?HQIIIHXKQ?lh2-1~b^Ii)kYG&wb9rAp$a%#TLS395#@H$+iCLlrh;+011NY4ETr( z`wYS{?`Jy-U*iTdVs&IX00~oGT4D*1Z*2_p@o}l(&rkn&vOF7|mVWhb zhW}gqjxmnFg~^#z=X?CX%V!eC%2@zn$wy<@i8DRpcI6UUYW8G1B(*xs+);>C$Rnn_ zGaziJYPOcD_QLjJ3gs4jmU0u!Pjb6_cTIE6NB~uXLsCx+jie2=FLvoZw=2aLs$E<# z0qPupvI0=JrF*FrsCJ7p$cuu0YIZWgi5afyRE71kdcm1Wol&8i{JYFu@mLfhFPr~# zKDecU$2QKm?*fd$&n_>>+80{icCmo_RghpglEvaMXVu>*ZsyjM!s=8$9HqpW;_z;e z)dptnQOfT&bQPCt^hbqu=qNrH`NBM>_Oei`dEk`xNzP$TA83tq-1X!IRT3;GfMpBX zgnpYxl+#(dH{FE4YQSY}RXIbsET|@n>1-W7*+%Rad8N`>%&rxNT}v;l z98M(dG#3&@GT*H!Q=@qX+i9Z4Bn0DxPgS+J(NlU1Db7Yxpv;_wWLu>DSMyaHc+Uu* z+NmSopP#5a&eTqL~or^ zd(n*?x40ZpEg2c0W#|1``DHbfCRl6>q$fo?zXr{OK~SHnIfaVyj6qrZe#8koM#YH; z{}?3+O;(vI+J5+}l9ugd9Lb0*d{ScT2A(*DEd$<3ecqqUF3au`4Wg>&Ovk1P3N0!; zF(hsK1E8G(HqwjF6I|BA14;$g>_VsshII`(3OcmQif6$iP@S)oCtjiYqKX9-@cAT# zkqgd^!(W;?>m-kCE~->`F)VXn!sXzKomkf(d`S>5kZ&K=dq?STFuLtKSuFm$UTZ^Bpj5GJzf)zWn2!Se;vxBAH3r)lsORdg(6aZDx{`}zv3}ESF&>bm z)fJ0;sLi7uqn@DFXhsYvGRZM-7&Aj4hi7nc z2jh!bYlk1E43WkC#af@V6!vc!jbV}>!sd~t@lD09ZNH#!ZCP(u?&V9!G(WRuMU`6c!|;vdfZc+P)pdO)!iiJ^r9QW zy83Qi?srJT+J!KuGfLI7Qwduh!i zK4#Yy9F97orJd@f?!{a-SyVEAwL@dF5F+frC(&+0q#nzM9F~AXVg>^UL+lgN-BC4* zneJujm(>s%P9HPuOVeR$^mvYmE{`5+_S;o0%Yibp>{TsaWA_^k#>en7xSh{EtGZa+q|Ts+MI{bS9xOWa4T zZ$B2(UT!^d(E4!Pb2j6JYfrAd7g+LBrHvzAL=wBGCJ+ls{ms{rRNVVWP$1Y|Kqa?J z5x=>?tDbU**2JML)V`{( zO?heRQrLmj3voq*f#`OCw)!&fl=rNY{}GOT9WwJ|imMBL#q1X|Dd<%oDGnrwUdQua zn$(wnQvJ#^KdN+mJepJ@WL-7S-2b)8^!`+8I!}4>iEu9&rG%~%J=Z_(5PcNKGH$K? zI@P5mwe*3Ea>CZv6YMC9THfuTmGI|_WzC-=r1cC35@MibNraV=rowkpHnL^OuTxO1 z9zLO@0@r|m18@=pxCj6tbOK)X`m0=n^X}2cBvxUETZ)_kL+0?d%3*7_A-O-*9c9W8 zN(ld0IYEjseAvMwx^L;%p!0JIMW z%A9bV@~d1$X*?F3^8{}p>M&|Pl}g6HF?>;NOWZc4+~0=v==D+J89stl92(83R0id+l95C5eKLx4u;Izz>GIhrycd=` zen7UF>!f2K@WrTSf+e$#@wZ|Vv2p73`21 z8~7&$OiU@w!{$vLnNVAB4w6Dv!B%j@Ju!{G?~H8obJ55#9uc>&`^(T9&BUz=Z!`%c zv;un;^y47jct{|XhlLpcq#q@{rBkE1cT!NdsiRE!gp2HAVKE&yep(ZGUB1|c>ex6D z6`#GIH@}qUwX$p}=WT3H7NFj-`;wpnP}sKC-&w7xhg>4`IJjbAFsgJ>u)`^sb|n?| zlc|Nm;hrT`p-OkEM~!0bgMw$bX!q&)1`2)F^}2^Svk!%+Uh>bbqJ_2t8!R{CQ)CmE zm~BG7UvL>LbGzF@*en+|Lxs4*EfFzX4DwdEM3Tm~1G-IyvDl2cLGf-G5wp2$hrIZKp*q`b!kFjYs=ms`>6KX+7;}B<% zg|-p+0;@?LLb{&GDTrK#A0jG{q_TyeJUp3H8BT4cmRisV?~gZ9LyIo9Z(+tdd85D4qSZ%VrHx_N6^k;Y~ZYR=kv0+TkN=+br9bsf`bn5|WP&^rjO-yw7e)C;y;~=9VBz^C0 zwF~c!h+iGjYnz2*1<5m{=^uN6YiTc*pF_w~Yiw`C6IqA{14v7LUNvQ0UKtVV*vYnG z=jSjw)H60vnYHQWP_pco+Ygr!Mr+3xp^w%Uv6?9VnFo|XdXsFrndUc3hVtn)|17(V zkd>SL`dFmiV>*5;Jtmm?{6?KV)>bmaB=Xk%pC3T^_XqN&{y(4x>F7-AX`t%)8_4MT zr68c_;QC5K%%TcPhgZ*o!Fv%bwv#t*ql6dQ>N%eYiSzrxy1I&=Ww&A-1;n2^hU|;N za`84U-Z z*0nB(*g+BQ8Pfa5-pg=*z%SAkRH*!C&=!%HBU;_*j-U@nT?pCe;Ga$3tir4|?lUTj znf9m@Dw38H{546fgPpX#IQ&EJ^KWrmklHpjVkp5MWOQw8O^GGdVU+@+u0gZ08|0=`R%@z! zRA;OFIPZU_)YV~x^}vY#PN{4B0+BPsdME7Y3;nlZ(*I7W|7uE&2Lm-rgksH<%1}9L zP`Nm@A;HqVkx~C5L?X6b!cC#-UmgZyMi_TbV~^|b{XsbP#d68t5RN&EC58(L_la>q z9B>>VJy@_q`7~b~aAEj~^2m`xN)h2kxK~eT5?+Zy!;d8BcqB~X%#UP7p_wg>_@)gb2uu6C<}oae^^`aPGpgCH<@OWWu*Qy%BZ-8c>Tl&?>V&=CpkK7zYsT!Jn3~~ zZ)ET5fB5G8?@Zl6K~eSf2OZTXiK~R|A7~wf1{?4~>V{aGpFvCm2hpiFcu$plLEgAc z9q(M=F32H7KkGTl(q+(l72fvO1c^+`7!X=x=I;m3KuhuKr&MT_eGfhWhSrs6phYHV z$0l?oKoPMRIQ)<}A_hs@mY2m6gD`%Nz@rwyfa{xt!7VDa14H*+pwjok?mNl&6%n@c zbNC-Z5|6qtg8yY=B=>5;a0UL;h1XfEu}o3899Sy$Ay`1 z69`Yq0K`ZP_CHJ;u5St9MIDq6Q?31PH4vDA z(`{%-mp@+nH^C!3B2+ilKLWPs2w%cK1_-VcdHnRa$1E_1{)(ZguQbo+@uR-)6-6U% zS&*_|;282@aSnFxp1vG*iW4$7yv`OJzp};UVF{yHoG>_I1qn^*_k#$L(*Y<<$>Lak z3$4z91vAtES!f|{WvSV4V{wnp_-+d@P2)GVtXqyScU#$%MfEq<_0GyicmHVFw!HAve&t|3$CV)`!n?RnyQ@ zBa3vQDxHmnj#pBZSajulM$<~izby1!zbrZ6m6Y3hi4QI13vI31{utkHpm$+)L>sCI zt!ntkt!ntc*(#_V;7SK4#fyRyaxvjlE2$$hhpw85HkA0F>n7qYqXgS>xC;drh8ue$ zlJcZ-u=d0joarDH3!RP$&dVcnkltUdQ~xh5<$>LO9}Z07kLIfp@c&aFrPb61I^I`k zDc$L+h`Y~_eASaP^Isgo-US*dEH5V1bAI>zhTRJC*tDF+wBnx~#>`)IrFOhBZ{$)m z`jr%C@ZB~qrG*ly`AMI2)O6)@S8ahjzFi#kOQP>{dNs=~Rqh{_puXZ+NdNxw>&q3R zwHHqxjUId1#c;@KDs;!fWb>B`ql$yxpQlc_-Q&-hyT0$!R6FOy#-t_eF_5{t_DwE7 zaG@SdKmUWt)Z$xPo}$b~RnF}hx4z6kC&rfWAv|-#zI7-BD+;&Rp<^`A+no9R)v5JjFOlO$uZ@_$QDKR5P482bUgr{BP)gfEuH?KmkuFFw*Hp->!HvNdLCRk;3FmPpF+0c zKw}^|i9d)vA@bU4b}|>pnM!S3!*QB4dG^Pr)2bgodl@xACy#|+OZl6K@C{zGjGr~; zf3(YM6@#q=Yme4nwfQ^%X{F$|);K7Kt=vC?BV`a89F}L0tdW(?Hm-sW@8#Rm?LP+1 z^Sa>=R-z4RKgp@nOu<>RrEaT$owQarY=MtA1L7b5pe@`J2vrubdR$#Tz&fh{Tcvd9 z7XTLbb_7NEGZ=IN(Qnen4=lNqz+N0H8Vp)DJi!$;Hch2om6A$L(dEvEUGxhm|n@Y%}-i$E;rg6}hVK5Q zB5E6_u0glww6YA*D$TZ%f@kGVo@QGrOHKR8^2+enZL0kSnf#-H7TW67I(C){*s z4&YGhv!>5*d)MQZl;S;>ae<+nBY+N#P~*fAX6S;()x_;#J)*Xr+NpLdRYHm!c9&&Y zu~b?IR6i35*h2tj1Hf>Ud?{lDRkIo`^=}SyrzVS2$GP2`dN1gefqyb+*dx(SFx_Ja zOJAI*^-}O9K`UB|#;`(@_w#QIkl+q$x_Lo}wUA;=gU-gO@q|NmuLCO0`=iG26rSM9 zHjkzcpN!tP$1?sCpZon@x2z_SJk&gv3p8)$b-bDct(ZiSIJB~Eeuo$hc5|n97T~}( zaWj~(#~39?{ctVZX~U4pY!Qwp3={bZ6OI35AD`XtcCYWU`W8xgw3jUQAT=2kx|^g; zdqfJxK{2u&oSK)N?zpL*gL=Z|G6hwnT+8(T+ zS-&cco1QV0T~u>4kXuxvPl3Nu!t+jP)8O__-^zw-n01B=v_-SdYh{SoxML5cgLj!Z zy%Zn;d`#MLE3Kos$7P>w1NT3}gp%m9Qv;`FwWvD{l?+Fh(e_XY!rgGKqZGXZqaAU( zsxa)TSJ_fnHhq$lpT}|KOuEAT7Yr~YXefYY1)4|LZiD4q|E5h|U?~%dabiwZmvTmI YV!n05iSf1kdu=THzvrp{1Oe;+09e77V*mgE diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/test-cases/seed b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/b/test-cases/seed deleted file mode 100644 index c26505c0200f5ff224f0b611e26b138cb805ca3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108 zcmZQz0E6v7GQpf7@JjM-POb+LI$D KXLiG^>lXoy%r52t diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/c/setup.sh b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/c/setup.sh deleted file mode 100644 index 7ecfba6..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/c/setup.sh +++ /dev/null @@ -1,3 +0,0 @@ -# Source this file -export USE_QPACK_05=1 -ARGS='interop-decode -i @@ -o /dev/null -s 100 -t 256' diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/c/test-cases/fb-req.qif.proxygen.out.256.100.0-chopped b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/c/test-cases/fb-req.qif.proxygen.out.256.100.0-chopped deleted file mode 100644 index 1ce5358fd2308f5d1cde04e0a8f4261ec3d701ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269 zcmZQz00TxKxq_ux;J#pdz>N#_X^R>++q*uU`xedRRgFv!eg{unRk(hu&5rBe zmY805tQ503=FPk5)tep5zs{EXEBSBAg1cVJlqRqIzg6Eq@ufDO(GKwxpMAR*1Q$G& zZA;u18#~=zD0cH)&9&kZiJVeCu77^UMVwUiz7n!ANk{4H`Dodj$=AMVB*?pLc;PHm z{pVk#+nM9(!Wv@&xEnZ2G@dU PySjZ5KYzbv5U&ORDGhss diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/d/preamble b/external/lsquic/src/liblsquic/ls-qpack/fuzz/decode/d/preamble deleted file mode 100644 index 0c4985ae6c68225876bb83c0e969ea722d1e799c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59117 zcmeHw2{_bi`~O5msW_=b89EgyOP0u!g@4KlcX|a^Gk|jj4WgmNz8OxDm zU&lV#X6$1d{@)SD=vDE)o!>d!f^K)oZysJ?fCd;*nQ(dY>%bs zbg%V*(wl&Y5Q&ibS>Dq1O!zB)pX_sdK+45JJ~W`6pwV|^EuaXFJ+oZvet5!5e)*b& zf0mXTi!anio(A*Sez|T+d52FU-9q?O}a!tM#C)kTa&7ja0?g%X8;1feiTXDDfpA z%J>RRK-zs6sMTQ6vuC_|nMX@3)8N}fS@G^6f=16w%=X2!oM#oXCw~QX4Wpa7Ct{sc zz-wDtzDGF8?~6IMhSkQw_73$5ZovDHnE}(uQ&f)6JhT1Bm9JRmuV-5B0+d&O0s1(m zm0kcj2t;lK0zuBs4v;-g^r+vS$o_lqVM#uZwkMx#F-{?V49PK%C?ku9++5tyJ?Yfa z!ADBy4@B8N^c7R_(Pq~bzu0qFc|t=g=;r3PJ&a(l>-)^Xz^^a{w0d6-^~v^DDn|`v zAw?>80)I@#szTPHCLpFfp}sSaC8UFq>hVb9gcAO$A_d!}W6BJnv#-RfQkczsuj3e* zx}~&Ep7s7sGfpflTqo!Z@F{*gQi_F=pRaQ;BZWs>a8LbXLFt4yAyssEw&Af;RTm_EpJ?uw z(75n8;RRl0U$^4I|0s3ZX&vz8x}do5&9lz{-#j!aymBw>r8zht_^{*R!3OTCX?ps0 z(o@lwRn7fQ-lzJJ8#lW_2<)|$r1WN?*Mbx$J46XzTunbjPvT1oi>RcU>nn*@`wxux zg~zk&c@}qw9=1J$*bQ6?ZQ!Q#p>RvE@I%Kqsl&%4CA;2Q#+~{cIVqv%k3S^UCwlO5 zj^dTaT2*HE_8;$f8u{f4>+>iIz7flyQ`s}h|7rBe70`Z5XR1yvvznfJ+LG+x@jiN`md*0nRR{dk0;^##_tt-#fm7CzI zaJUHd>v4U2vni|j$fg1bhZ&)DH?X0>azak_gBbhW%n-%(r_ac%E+_Q_*h3_v!ksVe zEx5%zsrbIyVS7p{19g{WM5Y_Jrh({#lS7DfYMBkgs*+v@J<$+0udjcXBenJx$SF$Q zC8XUOB1)lfURg>(UJ1hJC*}Cc1BT(-o_{GgWz+FK38f8DzPh=P9bSQKv2?q&ke*b< zJiB;<-*kwILr(ZkU)@?2?VX$4WO&xltc1bbT(-q_#KO1y{dNO1Ha?ZHAdFhA9@ZAgYfPb_GOZ9Lbf7Be1Oa|i$~;u4jSe8C_plk@Qj5bPh3$&1_=spXGgEXoW+XebWd%+R6hG85P=VwvQ=-Alu4qDSui z$pdL)-a3NOWX2baR-dkK zWf7INyBad(zW!}hWdBKdVH)MUn>SRkD{+sBykhOm^Iq|7vk*1%!;4<=MgSs~B#5j{ zh%8`W)wT(VLS1UQv^z--DZtM0VCy9E&My60CYym9ox%+nWY{TR6q~MwO{Q5R1QA#k zqLOCKd4c<7s^gwGmf%?%?0wVD59`T|(?ek2GftwWAf;XIv%l0U{2`qFHs6o}z@G{U zeuMaHlL?>14emcvQ2nX}{LLd`s#*{-_3&1Ckd za*5mE9MYjQA5uk)h0?v=WcKCVhC8(zBxgq4q5ii*&XXt^WQVv#O&ops5u&ekY>wgQ zPf)!9sW8}oO+n3vUz8+>k;1RZqf)n(jkK%Btlb9j|{jfI%!O^h=XKqDa~rQ?=w z5h^!3%QmFu+f>Hv$`GM&YE9KagX8E;5lA}PECpT|{Gr|ZDtewHec+F!JB-!CTpG>m!HnZ&ya|2I z^6%v*1|16ghp9v;i(Z=#U)I(sb+);{w-zC`83ZD0BQ9Sc1sH1rTAXsm49Y!`@?PO- z@T*fVWZO((B@t&$ZnXP|7-ObCQ%W=rROP>LQy*>^9#G`2d;3;FC3)t#aIHBmGA1|f z@%cQ871S?$8u_i#8U&^)n(8Bt#Po)W9Runf%Y?D1K12nKfuDz{Kq&%EDn)d!g$e|r zSVtvcKvb)0GJ;5N=;RB|xC7ESe*#`>yy+FU9%|laqXGTHT~X1f(EV?5?PpQt0#lRE?S@=kjh|(f2fod% zypw=;K_3ZHFABD}J^GpPvBdvnjPy?{R&4?7OxYarB1o$FpI;?*n(e_8WxC^UIPPz+ zLG;I+>jm%a6W&t^v}i13`G9VTTV+c#-G#4ec+1j){cjkxBPyK~uUNBq42#Z;P~a*D zCTw)m9)$}eS+w60IPp!Kb%Q#?)#-h9+!&Bhl0dr@k`)<|RIL2wUW92ohQ}-yvSKvc=>rsF4GP>no zO&?Wd94v{=b^9c-j0^RW?a|rUg(tScCKy95aU#1)=&M=M1VjFCG2Oonu&d@IyGpXF ztFo&F2gcMh`(tZ=djy9XrmER!vfpWZ+;XnZXEu>RfU0-f=Q57zV-ASz6c*;0!MfJ# zhqX1sEQa#y82g_)T|VGF_DQKln3SVjGn*kJzb z^_^A^`I0=VEINloi%b=b!4y2XVUBvWGKearSnD+R-k7jhI=kaFw{5p#h1ep>O8*dz zKD6&giT|wxo3jRLZ8QMTzDH66tco`8(7$n3u)roWzw&n5*bOFX*bsUZU>~O zDRtD^z~65m&^lRS{~IxU$t^}o*ixm(Z4|Oi#Z}Z*+dBJsQUAt|GwjwGo320#F%P?D zoq|v^9ju&V!?`!s)ny5#DWLC7ylJoA+u!?)MWS(VJyY-Undb#B`aitvg&Y4_AE_76 zNBW>bj_Kxhv)Vfm+x85^;8xcsFxRH8Q7PtiF=JD-xLkdj(`!_Fr+(Z3S>SXEs&=fA zDP3g3z>CCb4Peli|<6l=t?nNH}mvS^+ z= zIHGEM{i8>JZ~mLc=lA`g&1b1*FfZ9J%#_qSYD|7^)5BI|9sLIZ;~5;(NPBZJ?Ya{H z1`vIcEXLZl7(Ti(dQlI*r0GLZ5R~Yqls}$~-=SVahLiu*rN}78!Q$;j?K7Qm&!!xP zOK?`IBBD2fY)cZy;^`-(YfiKj$ONTeT00U-_%G#^q%=*Bbx|1Fry^Z~n>jyqZMg!8 zd<4a+_~o}zivP2W2G7u<(bz>Y8YH6u%(1)YO!K{c5U$P9;Wg`7GEG$hloc1TVX2U| z6dTAf@U9VaL#}K3bVFLS!+xJ^p!klCu`mxSFK2hel9Av*%O+051~~NZ5c+_nq-q(1DSgM zzgvtS&fBa!;_xTbv;Q1lgTO0P7;ea35m*4pZU7_(JkWgdAEX@Fu_dOs3NV?eGEe_(H>-G(W~oxSvDH~MKGD;KKTrYJd;*^8? zSSf7JS@EbA%{KJGv{%&~_LpL0sk=p1g*ZXvZUI(=9Ee3o7+KpG@eXf_^%=QtZK5`z zvF*78R~MFs$luc5H^-Gjgb*C7duaE^EHJ7$Kr2Aw4O>+vXUI%T{qSJsMNW)c?ckH< zkC?~!309qE)ikHcfNQ%JAjdm6d7adY=y}p*io33(yMA+-ko3kamXX${UV@oDM^10lH@o=+Wt-+~lD7>+o$D+bWmGs&WwX~0_tBxz zW@^;-)DWt-G@(7>>UgPS=0GZ@xyIfyNWLvD279AhE#1rLWp~Ezf2O7;u)0tYwRtm= zQb(kmDv(pfXKOgUw1wNYh2h7;&hQHq^*>&8X71kbhtMrm`pAYyW5Kxd$;MDNt5#~) z395q_0XbNnkOfo)J>@buG^RoETX*(FwPv(6y+#)028Y7`Bg9}C?x&=)kv6^q4XyO!C7!2Ya4+@%Dy-e!=$#~d@tkC5(hrv zBO>~PZ&J1K-Kj=wzo2mam)H*%Q%*JQ&5Mms`$!-mfdufezBJFO<-L#dF3Cs9i{FW~ zk=7wD&r#CTh<^hT{HJ$3>6OrIHUk>b%);@^%5k2y>`UE|#vfr3MwbS+%;2seyPMt1 zx*kMd&u(v$x3=?`?QclS7t0&2HxlI5s%#c|0`LU=ugRys1SAl6Lk+{`#k}h8B+7+< z6G*X6tu@#%=GRGFo#p)5(2kOHJuKy;!e9Z zCPDF!6m5e3*RNWPANB+KpR{v=G;+DhofDCqPW)yrA|J_mp9X0lH;fE8ffyVtPwBGaP{P^A5cog8m7mh!mJB_FmcKJ%h`qh zX*50u0N?@pCrE+&S`6G5qL1b0VhQ%>I|N#Vy{WiZm#0oo3u=Qh5uMte15Lv(lKMR} z`HTYAIa+CX;Oo@$WABt871Bjp%l>GxDXl?(b&5KH~w;RV?05=FkZpQ+2n=(;PiD&6?)zh`E(85V%K(s>tjD%+*=_AeCtu zR&gH+p@6fFfj;AxSP4t2H}7P^#bde2&e9kP!{ANubM?EKmzjf}Q-BK^dIbz$Bon^& zOgO-ndY5vq(_B)0e(;vCWs&yb{1z7%vovFVqW)f1fLVhN@b;Etv>>Jjq-M-vFXoIb zndprZxEa1XHkfF}hKr2dd*^jja99ym%9Xedv)5n@FUi7Me+X^ItSHKMDyZ3lf3f8>~ z4$VC7ATU*+bKSXb8G2<=)Bi$qkQ(*=6^(iT-pP6SkIi}JUsstfZB+)9BJL2iDzgD% zyM)LR*{yz{)+rrS7O9z3DV~<`Sc*$j7;anAmw^fsR>f)-%h^VIyKZ@E2TkTy;7~Cz z)hO}QO}J3|VbE=Kq(o78#Fa@_$#6xxOns{Elz(y03dZu<9*KJ~qSq=APxGHdma7-m zxhvq~{pJd2*uwFZG-N|}w&n?&`4b`bFo4(&V#F5hLVr}Xh30%}s;-u|kFRP+VTESv zZEZvA#%EMZ`ve8jz5E(&U}AyR0|Ucxa|Ja-RGbh$RuC?^`Q`=;Yi2$BE>92_ZVC8f6@R z&ti?>2q5o0#PW{JsgYyJ*p`F}!?&FlhZnY!4^Gq|Gt+|xHyu^qpVQhZQ;%-?awRTt z{7QEF#=~|twrY~-z%82%>eX5XuH?Op-KD%$&~ass?X~W6m+eqRC9Y4(oVm{zB`?SR zzk0-z9NRVN*pl-eIsw}KiJ@}?h*WllWbb~p#T!&p-sb^!&ai?6X_4t?j5Wu6c#eab-IvPmamct_b)(bXSw5WG-Ix&vFwF&TgWsEdxrbzu*Q)$X}DlzeBT! zSnBnieQ4jz1Ah;k1+y+?5%`<{@W+YGU13#@+EW?dkH^vzMn>B!%JfAA-o708$SyFT z9#dCvr*~>rs54SOy;B#07Dpug?w3+l*GOk`9b9DQe^jKoCLpHXR*}iZ*I89{ClM;AF*)fE z3itHKH3ypOvC1~v6y+!C%|avm#&E1`ubW)rgv`tHH7+|@=jVt$8!Y#dAG1nx@F{ds z=LrMmF;{X2Nx|u&+zv**Q}O&JDkCNt&A=QS3Hs$XW$hoQQ%gVjWQ$>A{w(|u8ouiR zw5Fc6=T6Kc%5az@hK-TJqb<0n{;{BR!kdsPIy~F(*r}=ulD6H7&ymWnv)x6i8E?n6;MV9BfOTA zhsf*_xK)382&y+Xe^;g<>$$V@U5cq3@#cn~9O8u?iil5-_N)7o5dt%nZ!{w6p5Xb} zAqYu9njLfZXmujV%r9<30iZ)yb`#oLvbcy2L3I~H;a9QKyq^h zhbWj&B62oT36OmTe5e&3Lemg3e+WVhw$7K!=ON`fs}mdBIn_Wui&?^BKRX0Ltatf* z6-=^H1k99-Ah0Vu1SS=Ab^ZqdR{P%TlT_hcPt)4@Mni0 zNYtj$W4|2+BuZj)iw2yP@D*0}IB1#w)Dv^*|AnW@2>(s(M(3ipB=oaG5H#kW%4!3U z{Qg9csFfW;oAY)qkzoD_QR^0%={kaZ10PO!2?IYrlnKJ)pt?Ed@MVOMoB0{@5Goie zI|Nl8&4OSO-iEg4&$o%dtS3Cxxg&r;B0oC>;U1}^PZ<`^J&tyTMk9jPxxz!7aEhP5 z3BrZaEQpr4SwtMq4ngUYqj(6gg8)Qx z&7KgcZ86{wwm-6>gqzUb{MCTnb_N7<*NO!bW)&j5j7Z$xiBN@uh|VDXvx^`oOq!^< z6mQS14e#!?%w@S(_B1HTHbR#>gn7HM+6|&rf+v1<2!fJXH#%=RnBg>yH&*;KU{2Mi zzMf&OinYmi{$04#wCU*eiD;@Me)cp7QvIjSCu;%2S$tNCP?#CcWtoe(W#2*%XC=G~ z@Y#gdN#N&)09{gu<5Hs%SWn>gUD?y1D!aX4$cdHqiEO}p(LP)R=&7F_f?&QD><(zp zZR?gjtFWObofcHpoE2PfX|}%0GvkpYEyDnn!bzQql%vgqVL(B5CDC1zi7vW^1tk&q z)K=@mh&ZN(W!Z}3oWs2!04wNKAb9#_=w>2MpYR-(Y$Ky2lE||_gd0p8I9eEVKWG@SygSu@ub`32@9-#hTdWM`E(}1Mi<)R1>!8&wH@1zw|?{ z|2?U(mUsG0{Us|5Z~MVr=Cc`K>M16%%#I_1>bgMT=X(*yDlP!XY>`T?|CW*~jON5# zbN)PB=Ul9Z^9iZB4hte`^K*cxh7gNtVW@F6racrhBb=aWgLnTUV|;RbIqw4U4U^fg+fD(27a9`}Y)b*KAZ=eH%_6OG7RgIEw5aCb3+sV<>UlND z?fdcXYwkI-`YsVrM>CAn?!Ov=Hl!T*85}onW zg7&g6iRpG=dfVpeql;zq3vIg7QTQ_AtGqN7-9q(cE^C(>vCDpQa>4%_NIi2}Zo@SUS zml|ZR!qjKGx0m@!Z+6T;9?=FR8n6K&6j;OvBBse& zK;2X&OCdr? zt1hzr1NBuSLgD{w_z#i;AVS)6y+$FjkgQ(y>^Bl>?I~zJ)SCX#EVHQ1RD4bW8Qjk~rr$##R0RGYmUL0v3GpYYgNdeV^|F1!bSl@Va&&i_T ztC=RHHTX~`fcB~vb9o3mozmSXFKl+6tw2D*mgDm?o1!Pr5A03kR-hk;Jr@$Td|^3R z4$duA-7?JDZ@=sq@~;NtU$l<-f7zaX8@}CzHv{Tjf_>B)_enn z@7EzaAFD&mpv{E!Yq!W2ljsTnh)GMH*QgO)^fP_Fj14%eN2*hhHyv|kb-rYIjW}IF z&Mi1M!A0a~`bIDnp*?jHW`^%|{$Ud6PaD4ATO z?9N_va1J$fs2=k|Y@`gkQ4_E*v1P^ZnPVwPq(L~cLt)M{Xv&) zhjOD8sT`8zirvDhI-AADROM$f^!1rA$d|hEu(xRWZhXM-j$3}ypH{PuOH*~g z6aqg{tBw+Y3u+QB);cbH{LanlBv_}4 zRz@Q7Gwl##z*OrhNQ8emGQQpH+@Qi>Mbt8{3_xQW2^wo28vZE($e0{)!`PhTLIzQ7 zZ4E$lyl68hgTASS7W!S*+}dQVTM=^4LL>cUbhy8@-CNl&`2iQ#qn#SfMQ6sSUj&H0 z3QWUi>UuV-R-D>iT;n{!<9+F!PA|7%yFU{|ObUk2Usb8+mqTM|m%we)ZED)mi!&4# zNys2Y;J{LarrI2F(R1<|tkl*Kcj+zKGM6@Z@_v(=DlD~gXKc>Q$eQUYjd=ZDHpyAn zUe27sKjC^^s;Jo8lK08B#k>>IXWzHSn;aH*)ZAy&m3xLybJnn9Th8S~xoGmPRGsF! zHcIio(`YP31_WNALcB@g5`YX+=QAk;KZglSuCn|r8Z;zigsNcKA_jD~EZPjS>TlwV zg56h5MERY^Gg||8gWWhNlY{+4ynnmrB4s*Skf~i0W5ANBTRkIr)*V7Q3lCi00tw%XrjJjx)OQL z=8y#vom)`^5Lzw5!jzg~Y4}~3Uo#wcs4gzL9&BCM?|rFEzP%uAxJFuUL_OB{Wslxd zC&3%9?%H|!IbVP8AZU{PAUpjazI7r=qRdt>qpcu=G5HfloU`=rb)~)z<}P%Tu>3OM;n2% z$SK5+AsHYliYy*-b8$oW08B=~M@r}qMA<*|6;tuiX4e(J*mGEULPIO)=H|COj9{

?>uP_F*dS4Fp$@W$%M-62mMJjg!e@w=zLe`=tAf`N_zB7;|q=S*_@krx@68@?p z1>2=#$_$~iuf(fTn9Y5!;~1H`rL<0-_5MvWPAn{3C+H0DDSkXsiiMJ&uX8Zut2v#M zEERb~cyoBgi8VCa_Y1r1n_ObX4jLHpc)vOp+P=khu+{GDNrc6yn(M1Ozo+yDDqg_0xbSVmvfnzHnLZNA6yd_ z8{p^{Fmt>=w8y3xWj;`MP#h~iw(s+0CF{6U>ozrVtry1~E$fdQF31fM8P!_d+QPp) ztX5E?db1c-Ujd*)Pf9qg`GgY`pQQ{#wa(teU67e+@V;o*MI1b6Q@ehH3~J^b^p0bp z4%u)SkuUg0*~Z)kg=-Dti2K;7h7N(4vPb2ZqQ|oWc+VbaoMn?M zEUht7l+O1d0pUFQra9tpmPX7ZexLBiUzw^hjt@c;#N$OLK5Q@L|Wr?8U%cHBC?7 zPI@Z(vZ}e?$@^44a^q$<2!Xw}l9b*o^jeVOWQQmrJEEo^q9^esg+){n2*xE|?LRQ$ z7aq^9=ULn#df4_1VmFXEp$*)WJ``>V7Jld$Cw2Ikq-57y%eYgYBPS*F{PDjqNq{0y z2^~B3-31J1Oy$+6h*UHLkpCr{h6?e6@9K0gQXTl9%<mdT@~u`*k-Qt;8D5x_9cAaA#~mZ#k5^cW6|X>;8mN3DkoF(6%ek(%uCDscGU@ z9rM6_yB}DkshwSZ)6ijdzt>?>`*#7bWTbW*H93Hms& zWEq=;CS0qTz=pSV1ZAuP{@pT6m8;c)B#x1PhpYOFjXzAk>p79-`-VplSU^HVwV?$V wpXF(Ci7X#Txmd`D1~dfFHGq+ov_gKyCC|&^+VDzNZc>tBksMI!UAAz>3yn8E zudjrx{Iut|%@t9gFq3*X(}NguyO5u;qI1<2Jdx#|@a4|W;J?v9?3!VwAySL}FSWnA zRiS8V(sx<;m!8Q^Zj%KQ*V!#zk~Ys3Xv;Js&!7_?my&d)4#(8Gdz`iD1{uENvcrYu zi&;KZ6M&8bxmi=;l66=860y$u>$ikoH340}q}k)0rYw8kqxr9HO|bOZxN5;w@xPj% zzd2tG^q4v^QRHV_;Dn8H{)Q{Q41QXftTI(UFbL-1y{G_NT2@Zz#sVae|F#1`b=n9KzkjxV;V*?PpZ zFLhk1tny{rlJz*c(ra9>u*Dk+!#J-HjK9_WF!KZEF>ix8l`QP2e9jVV)j`z)4pZ52fZSQG)_dlnP zv#+h6u+Lt=F+PaJ#nmq|Y}(<(eNz}h_62DuuwG@*?zJs&2o~%8AMdepNnM!C(FTQI zL5HqY3vJyd#s92i+3p_0#BAG6r%%Ur@_Vy>j`WzM+W$OWa{*Xw4cdjQ*NuvY*8 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/input/256.100.1/fb-req.out.256.100.1 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/input/256.100.1/fb-req.out.256.100.1 deleted file mode 100644 index 5546ec5e6a8b5ee14425f09a5db4083d6283a347..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4319 zcmeHKc~H|=9uH?gR^&#MtFc@q7KOrUg#?gb5m<;2L}&;%$kC!M$Poya%4N7#L|hI7 zise?yrJQoa0|<9Oj$jB-IV1rS2;^vBoi5#Www<=lbf&&P-kW*9nctiD{aoJ%0PGAt z-b@7m;5qIcjb^X~GALozL>5C;_lTgQ#4_gLJzIAHeG8Q7CY)AVr z-nf{mm(zBe6u%;9yjF2|4FB|&U3$rd${NFZBBMy3Xc8u8*k!r*;lfgVG5xkOTY>Yh zg2~hOK$+igYjkYfUTcf%*2{ZZH9sz}3z}8B>Q;+H-h`sW^Yjm8mxY3Z*$2|Q9e_x? z$n6yp)$GXJS_a5RAggn=%H{XFi5{?mv6wE7&(ti3>>s#;L3Dz%(wN5xL(^5otm?ay zQW31qxRBFF14bJpQf;xO=9!Wh$k{Aii!*dtD6#)PSKpaot^f12=eHd3?uY!m6)h0c zPn3Y)`foi;9UmmCWI!G9(!`FYU~9?uSioHuJI@u}jT%?=y`lE*Pyqmd|4X45I5&mQ zH4-?R*cE@ne@_zO%pN?`f>Ilc+k3a*{LuxoxeBK5XM@GD)}|0p(vaL!Ud^l$Zz6+> zN%9?VaR3V@lUEWm>OFwSQ39noG;D;cqiHjp%An2gfaBDSwOOAda>`Hi&<8Ywn9h0} zeX?A|{v6hNOsVPcRC$WQ3y)Wj!FCpOeV*R!VW)@cW`9$m~W?>(DJNb_CG zK5j()XlpaP(ou0%qfv$_Jq3;!vE8Cy6MA)OMre=)lfAMm*dhs2aNXAdclbho=30o@ zLiJwOez#Zom=3t33srY;T5OpGlhW3QpA$F?0W_03;Gk-ROpy8uzeSqN7iGg{+5Dqs zz=`uC7?OnKB=YtSYd!F(V$XHu^zut6Mqo_BA~3e^V>M6iPr5u#O&FyU{0yiPlBu|DZM{?|uJ>&BiJfVw29^uvG$65zSXAyA|zKV#EiIBq96>rtvY|i~mfU`*S*7eT`B#HOvGJg!A|B@_5B(N2w1C_(>+Wb79g?OBH0Y>kR z;|j22C!0Lm5@nSa?t;QWQI;7$u@fjMT4EBJ`ICJx=KqG@4>A(w$!J1^C!^{e86_-1 z<7Jb|aS3VZMWsX|4CTfcAWFUJp93dAZ=5AOh6TMeRc znJ;bXTMnhkI26Nu0`GmnKhw1SDOH{MjwwTL=_Zj3=gThEz|!C9Zimr&XKp**S`#U^xlypQ43 ze=4GXs$0iCEEB)&;(azW8F&^iZ)82=T#j9KZ7w}RYP+heu)ZAtE4yr6Hf@*RpW+Xw zt!R-nOX{(=h&~)|9NCrY^FeEW&cyg7tpNc5zG+b&>7};&mH5rF!haX0$IFCBg{Ucr z?O$@&%hj}wD^Fduv&|UeR$*58h^UTxchsu6Zd{5i)}3|QPs$m}(BYWqU#o3Nv^KT$ z;f!%9Qlsv}YQm;bBHn>J&yG7ox*vz_r;xWyby%`Oa zg!zei^5RV0>_x?+!IfmP<~0CjN6vpl*YLq)ciM!V=?AwH;kn(uJ<;&_Ux&Mxtuy5J zq4^<<|CBA|FBya=&mii=qT#Q99Z$sX(x({~)RRLQOe-l~Lmz^^d=&ko2hJ0lp&FA( nQW9`wh}Yz4+d8X?0Qhv(k-;PRXq2ScF@X=d|2KTfU diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/input/256.100.1/fb-resp.out.256.100.1 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/input/256.100.1/fb-resp.out.256.100.1 deleted file mode 100644 index 7cfab171fd43d84889b14258d20832b4b6a5cf31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4846 zcmZQz00TxK`ICV`pYhX{jcXN?x8tqZqbIl8!B$H{GWV3Ppjr^oT4GuGXBVQ9Bfermg6 zLW=ID2Mqj+gMC-Zl!(V$HTzDR{$DPnSzu0mygs9WuKujEiGg4vg|#y6OIaB9EO0H* zyTg4d>EeD!7=THg3|I&-oWkMm44AWF+L(ZhGb~LE$IhFa$Y)4-^RB-1DbV2l$7lfcFEaxJ zb23|Fyxac|OcOTs-4fcQqcmU3!=&%g#0wSgY8OnC+OnpbWBI91J*_>@U+v`gny-CY zQe|aT*HpXkDJeSX_Mxw|LVm_2&&%T4@Jd#0Qj%hk98l_Aws6J^jW<58uY|1pwCA|Z z6;YrtlX^JQgBWwWke{)lbJZ3+k>#H7<<8IGztKVLnqj6PQj7jCwZFPmp=fH-cUk$D zp2<#blLZsk*)3j@HqRAk%QPd;pc5XKl60jG$JDxeoVDo&8NTDP!-eLHSw2-0fQ|#X zSySPXbyxiovCjJIw}f9c0bReO+2ft2EPLOh`LAwGu=LuvYQa_UznY)FIbRL*m^v|0 z;=s$NnEVFQU|EtzvXrY=w?Q$`{mK zckryo|F#vc1ybhhM-(H+&Xjm={$9UcLfzco)_qFq$?orMlV5&U&oq5%A7Fcd@#6k; z-=F%It3&Ijy=tG3b$8D_ZO)^P)&Hy*Q{OL|?`u_C_3>SmghG4}i;JsYB(^L7DiY#7 zRxYUvlR4U;@GI!hwQ8ZQ+obrPl`PxcW0;t2+v)V_*iL?L*3Xe1lT`bk$7@c4sMXze zqk*AzWo+w$$CKl2+5H1TJpKKG<7KCL)-3I7erF1; z>K@Uo^7L2G;x#Sv4*k{iUEy_2e8&ruX3u&^2?Z&Zrrt66tHH2xN~wkd0~doh19t<{ zj4k=F;sr=6{)PnlZ{#pfMGkVPVisWDbmnXt&6^`JZ#D`DHV7f*y|q?3ZaIagrHYDt z9#niOo_g_+Q1$k}sUCbYItNGD#<2-i%@IU@5tyHegnljxGKZOc-c9!r5BQT z)ogt#qZj<{W!Z3b`CBJHYk`o1S*elliD@V3`hxboeFcjAxDJ-;A)dzoIK;lgb-((Bab|1W>vQSkH#3v=Gi1{E;Tg?kBQlpYHVB~BFUO^CnD6wxwmbIV{lxo;9hY}~t~Tbg zl}oO6D*Wg6Efqo;e@(*^(Seif;2U;e#%XT89YZMJzKXQ+18mLFbs9Cclz=3-eL%38GWXK5s#*eOg diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/input/256.100.1/netbsd.out.256.100.1 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/input/256.100.1/netbsd.out.256.100.1 deleted file mode 100644 index 7e4918fec579069562c6e8f9b798c513c553d35d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2409 zcmZQz00TxKd4Pf8;n#-#i znI8NOp17)T{Z^YD*KbWL-*NkN^Y36m&ns^@7#WxtR<>Ld3;vn7eL8zQ-v-Z`rJa|3 z<(=2<;&EJZd}Y7!vRU@`XJ!17ExnM$t7hv{xvYQR1;+A!`yzh+e#;s@g7 zOVqyK4y?E11-fS6T>UG^>9oV8czp)NS1Xoy_J?=83c9x8g?Z8c|MI%)4xaV+-?rkl zK+2r`&mmp`limlA{qbLc5^q3_WdhRq%#9bX2?TZ|W${bAi0N<_jOXhEda+4SK3=Eh z@3#i-c03-4oj6x>-D94Lj}NQ5W?WQyzA4Qf(@!{k#0ZKa5MT!4c$Nl)JK`7FH{7L} zy?p;Uk)s6c1O^5cARWO9bVNg7Uy}0`lNnzXJNX0OIQU;P4HCN?DO*i(I`U>1_poOh$KwIq&&K9|?JYKUC&k*;u{$7vMw{6JgN1i(Sx56x)ZnLUT& zmloI4Bd7&{)`v5KgSr=z%-vcpz69nm8U?Z-(7seAa3D{Cq_p;XFWy9DvnzH7VGZRO z=vAlMf{%TzCtB)Bs6hqO(HjszSAc*J5GOD -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef LSXPACK_MAX_STRLEN -#define LSXPACK_MAX_STRLEN UINT16_MAX -#endif - -typedef int32_t lsxpack_offset_t; -#if LSXPACK_MAX_STRLEN == UINT16_MAX -typedef uint16_t lsxpack_strlen_t; -#elif LSXPACK_MAX_STRLEN == UINT32_MAX -typedef uint32_t lsxpack_strlen_t; -#else -#error unexpected LSXPACK_MAX_STRLEN -#endif - -#define LSXPACK_DEL ((char *)NULL) - -enum lsxpack_flag -{ - LSXPACK_HPACK_VAL_MATCHED = 1, - LSXPACK_QPACK_IDX = 2, - LSXPACK_APP_IDX = 4, - LSXPACK_NAME_HASH = 8, - LSXPACK_NAMEVAL_HASH = 16, - LSXPACK_VAL_MATCHED = 32, - LSXPACK_NEVER_INDEX = 64, -}; - -/** - * When header are decoded, it should be stored to @buf starting from @name_offset, - * : \r\n - * So, it can be used directly as HTTP/1.1 header. there are 4 extra characters - * added. - * - * limitation: we currently does not support total header size > 64KB. - */ - -struct lsxpack_header -{ - char *buf; /* the buffer for headers */ - uint32_t name_hash; /* hash value for name */ - uint32_t nameval_hash; /* hash value for name + value */ - lsxpack_offset_t name_offset; /* the offset for name in the buffer */ - lsxpack_offset_t val_offset; /* the offset for value in the buffer */ - lsxpack_strlen_t name_len; /* the length of name */ - lsxpack_strlen_t val_len; /* the length of value */ - uint16_t chain_next_idx; /* mainly for cookie value chain */ - uint8_t hpack_index; /* HPACK static table index */ - uint8_t qpack_index; /* QPACK static table index */ - uint8_t app_index; /* APP header index */ - enum lsxpack_flag flags:8; /* combination of lsxpack_flag */ - uint8_t indexed_type; /* control to disable index or not */ - uint8_t dec_overhead; /* num of extra bytes written to decoded buffer */ -}; - -typedef struct lsxpack_header lsxpack_header_t; - - -static inline void -lsxpack_header_set_idx(lsxpack_header_t *hdr, int hpack_idx, - const char *val, size_t val_len) -{ - memset(hdr, 0, sizeof(*hdr)); - hdr->buf = (char *)val; - hdr->hpack_index = (uint8_t)hpack_idx; - assert(hpack_idx != 0); - assert(val_len <= LSXPACK_MAX_STRLEN); - hdr->val_len = (lsxpack_strlen_t)val_len; -} - - -static inline void -lsxpack_header_set_qpack_idx(lsxpack_header_t *hdr, int qpack_idx, - const char *val, size_t val_len) -{ - memset(hdr, 0, sizeof(*hdr)); - hdr->buf = (char *)val; - hdr->qpack_index = (uint8_t)qpack_idx; - assert(qpack_idx != -1); - hdr->flags = LSXPACK_QPACK_IDX; - assert(val_len <= LSXPACK_MAX_STRLEN); - hdr->val_len = (lsxpack_strlen_t)val_len; -} - - -static inline void -lsxpack_header_set_offset(lsxpack_header_t *hdr, const char *buf, - size_t name_offset, size_t name_len, - size_t val_len) -{ - memset(hdr, 0, sizeof(*hdr)); - hdr->buf = (char *)buf; - hdr->name_offset = (lsxpack_offset_t)name_offset; - assert(name_len <= LSXPACK_MAX_STRLEN); - hdr->name_len = (lsxpack_strlen_t)name_len; - assert(name_offset + name_len + 2 <= LSXPACK_MAX_STRLEN); - hdr->val_offset = (lsxpack_offset_t)(name_offset + name_len + 2); - assert(val_len <= LSXPACK_MAX_STRLEN); - hdr->val_len = (lsxpack_strlen_t)val_len; -} - - -static inline void -lsxpack_header_set_offset2(lsxpack_header_t *hdr, const char *buf, - size_t name_offset, size_t name_len, - size_t val_offset, size_t val_len) -{ - memset(hdr, 0, sizeof(*hdr)); - hdr->buf = (char *)buf; - hdr->name_offset = (lsxpack_offset_t)name_offset; - assert(name_len <= LSXPACK_MAX_STRLEN); - hdr->name_len = (lsxpack_strlen_t)name_len; - assert(val_offset <= LSXPACK_MAX_STRLEN); - hdr->val_offset = (lsxpack_offset_t)val_offset; - assert(val_len <= LSXPACK_MAX_STRLEN); - hdr->val_len = (lsxpack_strlen_t)val_len; -} - - -static inline void -lsxpack_header_prepare_decode(lsxpack_header_t *hdr, - char *out, size_t offset, size_t len) -{ - memset(hdr, 0, sizeof(*hdr)); - hdr->buf = out; - assert(offset <= LSXPACK_MAX_STRLEN); - hdr->name_offset = (lsxpack_offset_t)offset; - if (len > LSXPACK_MAX_STRLEN) - hdr->val_len = LSXPACK_MAX_STRLEN; - else - hdr->val_len = (lsxpack_strlen_t)len; -} - - -static inline const char * -lsxpack_header_get_name(const lsxpack_header_t *hdr) -{ - return (hdr->name_len)? hdr->buf + hdr->name_offset : NULL; -} - - -static inline const char * -lsxpack_header_get_value(const lsxpack_header_t *hdr) -{ return hdr->buf + hdr->val_offset; } - -static inline size_t -lsxpack_header_get_dec_size(const lsxpack_header_t *hdr) -{ return hdr->name_len + hdr->val_len + hdr->dec_overhead; } - -static inline void -lsxpack_header_mark_val_changed(lsxpack_header_t *hdr) -{ - hdr->flags = (enum lsxpack_flag)(hdr->flags & - ~(LSXPACK_HPACK_VAL_MATCHED|LSXPACK_VAL_MATCHED|LSXPACK_NAMEVAL_HASH)); -} -#ifdef __cplusplus -} -#endif - -#endif //LSXPACK_HEADER_H_v208 diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/CMakeLists.txt b/external/lsquic/src/liblsquic/ls-qpack/test/CMakeLists.txt deleted file mode 100644 index 8c0346a..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/CMakeLists.txt +++ /dev/null @@ -1,75 +0,0 @@ -function(lsqpack_add_test TARGET) - add_executable(test_${TARGET} "") - target_sources(test_${TARGET} PRIVATE test_${TARGET}.c) - target_link_libraries(test_${TARGET} ls-qpack) - - if(WIN32) - target_include_directories(test_${TARGET} PRIVATE ../wincompat) - target_link_libraries(test_${TARGET} ${GETOPT_LIB}) - else() - target_link_libraries(test_${TARGET} m) - endif() - - add_test(${TARGET} test_${TARGET}) -endfunction() - -lsqpack_add_test(int) -lsqpack_add_test(enc_str) -lsqpack_add_test(huff_dec) -lsqpack_add_test(read_enc_stream) -lsqpack_add_test(qpack) -lsqpack_add_test(circ_list) -lsqpack_add_test(dec_crash_case) -lsqpack_add_test(dyn_table_cap_mismatch) - -if(WIN32) - message(WARNING "Scenario tests are disabled on Windows (TODO)") -else() - file(GLOB SCENARIOS scenarios/*.sce) - foreach(SCENARIO ${SCENARIOS}) - get_filename_component(TEST_NAME ${SCENARIO} NAME) - add_test( - NAME scenario-${TEST_NAME} - COMMAND bash run-scenario.sh ${SCENARIO} - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/test - ) - set_tests_properties(scenario-${TEST_NAME} PROPERTIES - ENVIRONMENT "PATH=$ENV{PATH}:${PROJECT_BINARY_DIR}/bin:${PROJECT_SOURCE_DIR}/tools" - ) - endforeach() -endif() - -find_package(Perl) - -if(PERL_FOUND) - message(STATUS "Found Perl interpreter: ${PERL_EXECUTABLE}") - file(GLOB QIFS qifs/*.qif) - - foreach(QIF ${QIFS}) - get_filename_component(FILE_NAME ${QIF} NAME) - - foreach(TABLE_SIZE 0 256 512 1024 4096) - foreach(RISKED_STREAMS 0 100) - foreach(IMMEDIATE_ACK 0 1) - foreach(AGGRESSIVE 0 1) - set(TEST_NAME qif-${FILE_NAME}-t${TABLE_SIZE}-s${RISKED_STREAMS}-a${IMMEDIATE_ACK}-A${AGGRESSIVE}) - - add_test( - NAME ${TEST_NAME} - COMMAND ${PERL_EXECUTABLE} run-qif.pl --table-size ${TABLE_SIZE} --risked-streams ${RISKED_STREAMS} --immed-ack ${IMMEDIATE_ACK} --aggressive ${AGGRESSIVE} ${QIF} - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/test - ) - - if(NOT WIN32) - set_tests_properties(${TEST_NAME} PROPERTIES - ENVIRONMENT "PATH=$ENV{PATH}:${PROJECT_BINARY_DIR}/bin:${PROJECT_SOURCE_DIR}/tools" - ) - endif() - endforeach() - endforeach() - endforeach() - endforeach() - endforeach() -else() - message(WARNING "Perl not found: QIF tests won't be run") -endif() diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/lsqpack-test.h b/external/lsquic/src/liblsquic/ls-qpack/test/lsqpack-test.h deleted file mode 100644 index 59e6090..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/lsqpack-test.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef LITESPEED_QPACK_TEST_H -#define LITESPEED_QPACK_TEST_H 1 - -#ifndef LS_QPACK_USE_LARGE_TABLES -#define LS_QPACK_USE_LARGE_TABLES 1 -#endif - -#if !LS_QPACK_USE_LARGE_TABLES -#define lsqpack_huff_decode_full lsqpack_huff_decode -#endif - -int -lsqpack_enc_enc_str (unsigned prefix_bits, unsigned char *const dst, - size_t dst_len, const unsigned char *str, unsigned str_len); - -unsigned char * -lsqpack_enc_int (unsigned char *dst, unsigned char *const end, uint64_t value, - unsigned prefix_bits); - -int -lsqpack_dec_int (const unsigned char **src_p, const unsigned char *src_end, - unsigned prefix_bits, uint64_t *value_p, - struct lsqpack_dec_int_state *state); - -struct huff_decode_retval -{ - enum - { - HUFF_DEC_OK, - HUFF_DEC_END_SRC, - HUFF_DEC_END_DST, - HUFF_DEC_ERROR, - } status; - unsigned n_dst; - unsigned n_src; -}; - -struct huff_decode_retval -lsqpack_huff_decode_full (const unsigned char *src, int src_len, - unsigned char *dst, int dst_len, - struct lsqpack_huff_decode_state *state, int final); - -int -lsqpack_find_in_static_headers (uint32_t name_hash, const char *name, - unsigned name_len); - -#endif diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/qifs/fb-req.qif b/external/lsquic/src/liblsquic/ls-qpack/test/qifs/fb-req.qif deleted file mode 100644 index 50843f0..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/qifs/fb-req.qif +++ /dev/null @@ -1,4917 +0,0 @@ -:path /rsrc.php/v3/yn/r/rIPZ9Qkrdd9.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://static.xx.fbcdn.net/rsrc.php/v3/yT/l/0,cross/dzXGESIlGQQ.css -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yu/r/r9dbyHa_8D2.png -referer https://static.xx.fbcdn.net/rsrc.php/v3/yT/l/0,cross/dzXGESIlGQQ.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 - -:path /ajax/haste-response/?modules=RelationshipDelightUtils&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6Xolg9obHGbGey8gFLFwxx-6EeAq2i5U4e1Fx-K9wPG2OUG4XzE4u14DBwJx62i2O7EO0Bp8S2m4o9Ef8oC-Ueovwb6u7oeo4S6pHxx0MxK1IzUcovy8nyE6WdzEmx28wr8yJ1zyFEC2bwEBo&__req=f&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/?sk=welcome -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie Za=aWaEgdyK -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -:scheme https -:method GET - -:path /ajax/haste-response/?modules=AsyncDOM&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEKEW8zKC-C267Uqzob4q2i5U4e1Fx-K9wPG2OUG4XzE4u3ucDBwJx62i2PxOcxu1ZAzo9ohwCwYxyrXwVx-E2KDxS3C1dxCqUogoxu6U6OfwNx-8xuawpoydzEmx28wqqyaQu4eaCyo8K2ylxdw&__req=g&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/?sk=welcome -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=gRaLgft -:scheme https -:method GET - -:path /rsrc.php/v3/yV/r/DT2WTTIIxjC.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /ajax/browse/null_state.php?dpr=1&grammar_version=bee09f93fa732cfa59a1cb6d9f450d3892424e49&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEKEW8zKC-C267Uqzob4q2i5U4e1Fx-K9wPG2OUG4XzE4u3ucDBwJx62i2PxOcxu1ZAzo9ohwCwYxyrXwVx-E2KDxS3C1dxCqUogoxu6U6OfwNx-8xuawpoydzEmx28wqqyaQu4eaCyo8K2ylxdw&__req=h&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/?sk=welcome -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=gRaLgft -:scheme https -:method GET - -:path /ajax/typeahead/search/facebar/bootstrap/?filter[0]=app&filter[1]=page&filter[2]=group&filter[3]=friendlist&context=facebar&viewer=100023237774992&token=v7&lazy=1&__user=100023237774992&__a=1 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/?sk=welcome -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=gRaLgft -:scheme https -:method GET - -:path /ajax/typeahead/search/facebar/bootstrap/?filter[0]=user&context=facebar&viewer=100023237774992&token=v7&lazy=1&__user=100023237774992&__a=1 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/?sk=welcome -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=gRaLgft -:scheme https -:method GET - -:path /ajax/typeahead/search/facebar/bootstrap/?filter[0]=keyword&context=facebar&viewer=100023237774992&token=v7&lazy=1&__user=100023237774992&__a=1 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/?sk=welcome -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=gRaLgft -:scheme https -:method GET - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yk/r/LOOn0JtHNzb.gif -referer https://www.facebook.com/ -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 - -:path /ajax/haste-response/?modules=ContextualLayerInlineTabOrder&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEKEW8zKC-C267Uqzob4q2i5U4e1Fx-K9wPG2OUG4XzE4u3ucDBwJx62i2PxOcxu1ZAzo9ohwCwYxyrXwVx-E2KDxS3C1dxCqUogoxu6U6OfwNx-8xuawpoydzEmx28wqqyaQu4eaCyo8K2ylxdw&__req=i&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/?sk=welcome -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=gRaLgft -:scheme https -:method GET - -:path /rsrc.php/v3/yv/r/7_pYemBB-zb.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/y-/r/hoo-FbAtjWB.png -referer https://static.xx.fbcdn.net/rsrc.php/v3/yg/l/0,cross/YbW8fl-NvjH.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 - -:path /notifications/client/push/xout/?dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/?sk=welcome -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=gRaLgft -:scheme https -content-length 414 -:method POST - -:path /ajax/bz -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/?sk=welcome -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=gRaLgft -:scheme https -content-length 1548 -:method POST - -:path /ajax/bz -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/upcoming?action_history=null -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=gRaLgft -cookie /kiaC=tbsdLtVawA2lNUJ4QxILVKtWv5Y4q7cOdpGAQfw1A -cookie D9j=RfFb6yMJ3eAL5RLeX -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCvev8oQJ0V3sCirda1S/X9tdg18NOhb*jCYozhP8wZHxVA199nL8Dyy+wdOIuIBPqDQe5 -:scheme https -content-length 1447 -:method POST - -:path /events/upcoming?ref=46&action_history=null&dpr=1&ajaxpipe=1&ajaxpipe_token=AXhgQic5nZEiPkJl&no_script_path=1&quickling[version]=3490195%3B0%3B&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEKEW8zKC-C267Uqzob4q2i5U4e1Fx-K9wPG2OUG4XzE4u3ucDBwJx62i2PxOcxu1ZAzo9ohwCwYxyrXwVx-E2KDxS3C1dxCqUogoxu6U6OfwNx-8xuawpoydzEmx28wqqyaQu4eaCyo8K2ylxdw&__req=jsonp_2&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473&__adt=2 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -upgrade-insecure-requests 1 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 -referer https://www.facebook.com/?sk=welcome -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=gRaLgft -cookie /kiaC=tbsdLtVawA2lNUJ4QxILVKtWv5Y4q7cOdpGAQfw1A -cookie D9j=RfFb6yMJ3eAL5RLeX -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCvev8oQJ0V3sCirda1S/X9tdg18NOhb*jCYozhP8wZHxVA199nL8Dyy+wdOIuIBPqDQe5 -:scheme https -:method GET - -:path /events/?acontext=%7B%22ref%22%3A46%2C%22action_history%22%3A%22null%22%7D&dpr=1&ajaxpipe=1&ajaxpipe_token=AXhgQic5nZEiPkJl&quickling[version]=3490195%3B0%3B&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEKEW8zKC-C267Uqzob4q2i5U4e1Fx-K9wPG2OUG4XzE4u3ucDBwJx62i2PxOcxu1ZAzo9ohwCwYxyrXwVx-E2KDxS3C1dxCqUogoxu6U6OfwNx-8xuawpoydzEmx28wqqyaQu4eaCyo8K2ylxdw&__req=jsonp_3&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473&__adt=3 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -upgrade-insecure-requests 1 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 -referer https://www.facebook.com/events/upcoming?action_history=null -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=gRaLgft -cookie D9j=RfFb6yMJ3eAL5RLeX -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCvev8oQJ0V3sCirda1S/X9tdg18NOhb*jCYozhP8wZHxVA6Z57FAsgTZmGqrFmUtE -:scheme https -:method GET - -:path /rsrc.php/v3/yi/l/0,cross/_uhSHi9KOQ7.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yc/l/0,cross/dmkj-sQ6P5a.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yh/l/0,cross/iydtwz40Qb-.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yM/l/0,cross/MLNfP69EIl8.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3iMNe4/yl/l/en_US/hmNgJUSZglL.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3iZuA4/y5/l/en_US/kZ4Bb7SHad8.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yL/r/3PEMXDGr71J.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yb/r/2fU7CG5VIac.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yO/l/0,cross/z3VOxP2h9AS.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3i_Fa4/yT/l/en_US/gOfYHmtTve-.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3i65D4/yi/l/en_US/R-NYdLckvX6.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3iuOT4/y0/l/en_US/5b9pzBWrOTW.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/y2/l/0,cross/kJRH5O9nuWN.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3iZ034/yQ/l/en_US/xvUyTVeK1AH.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3ifa-4/yQ/l/en_US/LCoD89fJZjs.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3i_bh4/yA/l/en_US/MYZh4Q7nLBF.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /api/graphql/ -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=gRaLgft -cookie D9j=RfFb6yMJ3eAL5RLeX -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCvev8oQJ0V3sCirda1S/X9tdg18NOhb*jCYozhP8wZHxVA6Z57FAsgTZmGqrFmUtE -:scheme https -content-length 515 -:method POST - -:path /api/graphql/ -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=gRaLgft -cookie D9j=RfFb6yMJ3eAL5RLeX -:scheme https -content-length 605 -:method POST - -:path /api/graphql/ -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=gRaLgft -cookie D9j=RfFb6yMJ3eAL5RLeX -:scheme https -content-length 556 -:method POST - -:path /rsrc.php/v3/yz/r/rrHnvxbchFb.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://static.xx.fbcdn.net/rsrc.php/v3/ye/l/0,cross/ya-hd-SVG3N.css -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /images/events/cake.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/events/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=gRaLgft -cookie D9j=RfFb6yMJ3eAL5RLeX -:scheme https -:method GET - -:path /rsrc.php/v3/yt/r/-5sIZS6lfho.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/y0/r/9Jm0JLAi9mx.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yi/r/COUYNvaZbXr.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yk/r/z8ih6LHuqGP.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/ym/r/hbfFWl_NNAR.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yh/r/WkT-RuFbXx7.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yb/r/Gs2PkVUsImY.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yr/r/IcDhxlbX8wA.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://static.xx.fbcdn.net/rsrc.php/v3/yc/l/0,cross/dmkj-sQ6P5a.css -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p296x100/22308879_1411798872208920_5876700806437739971_n.jpg?oh=cda1bc0abd0fdb2141fcb05b9ecb6a5f&oe=5A9A6409 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/s403x403/22519103_1163170473783106_7250901061438777066_n.jpg?oh=c80391171aa943272399478c8fb4ccfc&oe=5AA0178F -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p296x100/23794992_1692047667507240_4078474635176186303_n.jpg?oh=b887a0fa1217d73f98019a56eef6fc40&oe=5ACCBAB2 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p235x165/21743135_10156449671468475_2803456225134310009_n.jpg?oh=c9f713aa937a102f733afcb458bba8f3&oe=5AD32677 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/q81/p235x165/23622205_1563296600422609_3507363186110296752_n.jpg?oh=4111ce30a15bb61afc3fc201acf66497&oe=5A8A9CD6 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p296x100/22406131_904554576366867_6162233972946541710_n.jpg?oh=33eb2bc2f39b38dd58274d82d40902de&oe=5A9539C2 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/s370x247/23561617_1761370480571183_3122440575531372893_n.jpg?oh=f92f43f1e2b1fadb985852d70cd9a5b6&oe=5A991885 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p296x100/22894328_10156032914788606_3572024669336895726_n.jpg?oh=9605b64a17a4f4a588aa6e208aa52e83&oe=5A9078D2 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/s417x417/22893970_10155038313625267_259957278770944350_n.jpg?oh=1b9d652e6c0ee7d6542e8f4664e892b5&oe=5A99FA92 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/q85/p296x100/22886142_516952595336416_421089354618398736_n.jpg?oh=174c9e4b5c299429dc71738ddf3f50f8&oe=5ACA040D -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t34.0-0/p296x100/22657120_1454103711376475_190201580_n.jpg?oh=440362b1c280be0a92d704f97af83a4e&oe=5A22C525 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p296x100/23518942_171404133444845_8979822921817872578_n.jpg?oh=569337bfd8937d763dfa4f46442a74fc&oe=5AD52388 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p235x165/20770177_731108907080106_1095417205620896965_n.jpg?oh=38c91d199cc617b1ee20beda1e701cc9&oe=5A8E46B9 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p296x100/24131096_1708683599207129_1071849655026568306_n.jpg?oh=503c4f2dab6d35ca187011e905475a05&oe=5AD7C0F7 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p235x165/22853184_1569618363106586_6834503513218702536_n.jpg?oh=132a77ed752a9d6f8595d2f49b3849ce&oe=5A8DFA5E -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/s403x403/23380390_1922521571121214_2529692598990745872_n.jpg?oh=340d42cb18e95640937d315afcc38f13&oe=5A94EBB3 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p235x165/23316481_10154888378776356_4415156987236226005_n.jpg?oh=d1eec323e307de199e4db4c3090b781f&oe=5AD33546 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p235x165/23755022_1591115944290161_1582952831147749371_n.jpg?oh=db535f38279e783b54543fb14a190cd4&oe=5A9F170B -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p235x165/24068207_10155305604729217_1826758059181700103_n.jpg?oh=fba8a306771a19cf41d98b203a0ed7d4&oe=5A9E9197 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/q86/p235x165/24232418_1600544116680677_1180505039722384115_n.jpg?oh=dff561b053aa737482d88e3197fe5bb8&oe=5A938D33 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p235x165/22539694_1555677141167375_5802479455001750344_n.jpg?oh=7f25aa39560b19df18603728f767d8a5&oe=5A9D4A22 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yI/r/Fu0zZblKVo_.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://static.xx.fbcdn.net/rsrc.php/v3/yt/l/0,cross/hbQYnUNOKQY.css -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yK/r/QI0sE4FG54s.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://static.xx.fbcdn.net/rsrc.php/v3/yi/l/0,cross/_uhSHi9KOQ7.css -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yb/r/TtvTAbvOLMA.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://static.xx.fbcdn.net/rsrc.php/v3/yc/l/0,cross/dmkj-sQ6P5a.css -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yf/l/0,cross/izMNbQ9lrF5.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /ajax/bz -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=gRaLgft -cookie D9j=RfFb6yMJ3eAL5RLeX -:scheme https -content-length 1275 -:method POST - -:path /rsrc.php/v3/yv/r/vH75k5zBVQt.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yA/r/xBj7g-EvVnb.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yW/r/dq0bIKxjcSp.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /ajax/bz -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1973120626293196/?acontext=%7B%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22dashboard%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22suggestion_feed_unit%5C%22%2C%5C%22extra_data%5C%22%3A%7B%5C%22tracking%5C%22%3A[%5C%22%7B%5C%5C%5C%22qid%5C%5C%5C%22%3A%5C%5C%5C%22%7B%5C%5C%5C%5C%5C%5C%5C%22suggestion_source%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22browse%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22suggestion_type%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%220%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22browse_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22c1d48974d8c891e888dce0bd2db52851%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22unique_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22start_cursor%5C%5C%5C%5C%5C%5C%5C%22%3A0%7D%5C%5C%5C%22%7D%5C%22]%7D%7D]%22%7D -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMJ4fvS9RLeZ -cookie /kiaC=tbsdLtVawA2lK119VHL+5Jc3Oggfr6QGADCPU9H5l0V+/uzgXmS2b0tWoA*Z4X0z -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVJ6nIB+aa*XZ9SLj0JO3GhArW*8wpy4JAC5ENTZ9oFlCA/uBdS6uxXPpGqTUUTWo0QzX3M3ec5RKfH9nrCL88VE*DbNwMw3S4He4 -:scheme https -content-length 1481 -:method POST - -:path /events/1973120626293196/?acontext=%7B%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22dashboard%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22suggestion_feed_unit%5C%22%2C%5C%22extra_data%5C%22%3A%7B%5C%22tracking%5C%22%3A[%5C%22%7B%5C%5C%5C%22qid%5C%5C%5C%22%3A%5C%5C%5C%22%7B%5C%5C%5C%5C%5C%5C%5C%22suggestion_source%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22browse%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22suggestion_type%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%220%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22browse_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22c1d48974d8c891e888dce0bd2db52851%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22unique_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22start_cursor%5C%5C%5C%5C%5C%5C%5C%22%3A0%7D%5C%5C%5C%22%7D%5C%22]%7D%7D]%22%7D&dpr=1&ajaxpipe=1&ajaxpipe_token=AXhgQic5nZEiPkJl&quickling[version]=3490195%3B0%3B&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEKEW8zKC-C267Uqzob4q2i5U4e1Fx-K9wPG2OUG4XzE4u3ucDBwJx62i2PxOcxu1Pyp8S2m4o9Ef8oC-UjwBx-E7K3au7oeoa898pCK6468nxK8woU-367Uy5UG1tKUydzEmx28wqqyaQu4eaCyo8K2ylxdw&__req=jsonp_4&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473&__adt=4 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -upgrade-insecure-requests 1 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 -referer https://www.facebook.com/events/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMJ4fvS9RLeZ -cookie /kiaC=tbsdLtVawA2lK119VHL+5Jc3Oggfr6QGADCPU9H5l0V+/uzgXmS2b0tWoA*Z4X0z -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVJ6nIB+aa*XZ9SLj0JO3GhArW*8wpy4JAC5ENTZ9oFlCA/uBdS6uxXPpGqTUUTWo0QzX3M3ec5RKfH9nrCL88VE*DbNwMw3S4He4 -:scheme https -:method GET - -:path /rsrc.php/v3/yy/l/0,cross/eQVk65Pz4u5.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yM/l/0,cross/MLNfP69EIl8.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yh/l/0,cross/iydtwz40Qb-.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:path /rsrc.php/v3/yN/l/0,cross/ZPMqK38G-4h.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yt/l/0,cross/UNGqFczWO_e.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yc/l/0,cross/5kmfhwxHgui.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yZ/l/0,cross/T2vkV3tYtHO.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yF/l/0,cross/mvAtuJCE1vS.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yl/l/0,cross/iYeZGLkjeBf.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yO/l/0,cross/z3VOxP2h9AS.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:path /rsrc.php/v3/yW/l/0,cross/se9Vsw3bxIQ.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3iWeD4/ye/l/en_US/t-5ciJs6ghe.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3iqMw4/yu/l/en_US/d4aCxA1cCvV.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3iPZS4/yy/l/en_US/CYLb8vdfk69.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yz/r/0Mbun6Ga0m3.png -referer https://static.xx.fbcdn.net/rsrc.php/v3/yg/l/0,cross/4AOTCcAHW9N.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 - -:path /rsrc.php/v3/y7/r/YmJVIBP8IMt.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://static.xx.fbcdn.net/rsrc.php/v3/yy/l/0,cross/eQVk65Pz4u5.css -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yA/r/D65GjQgjhh7.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://static.xx.fbcdn.net/rsrc.php/v3/yG/l/0,cross/FFxQ1nfdvDo.css -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p526x296/22308879_1411798872208920_5876700806437739971_n.jpg?oh=19baf05bc3e386a0df895f12ecb55e65&oe=5A895F80 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /api/graphql/ -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1973120626293196/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMJ4fvS9RLeZ -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVJ6nIB+aa*XZ9SLj0JO3GhArW*8wpy4JAC5ENTZ9oFlCA/uBdS6uxXPpGqTUUTWo0QzX3M3ec5RKfH9nrCL88VE*DbNwMw3S4He4 -:scheme https -content-length 556 -:method POST - -:path /rsrc.php/v3/yu/r/wjTohGoIEYr.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://static.xx.fbcdn.net/rsrc.php/v3/yt/l/0,cross/UNGqFczWO_e.css -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/c2.0.40.40/p40x40/199935_202880686405345_2333506_n.jpg?oh=fbdd058135b9014aa7c9db08b06ba259&oe=5AD35D33 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /static_map.php?v=29&osm_provider=2&size=240x132¢er=40.6141099%2C-75.36751&zoom=15&markers=40.61410990%2C-75.36751000&language=en_US -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority external-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yu/l/0,cross/5Wr55_OaqyB.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yD/l/0,cross/C1XzobiRO68.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yF/l/0,cross/ySVFHWyZdBc.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yT/r/GPk4x6oLlPy.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://static.xx.fbcdn.net/rsrc.php/v3/yG/l/0,cross/FFxQ1nfdvDo.css -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yk/r/MiXXTBbOQzg.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://static.xx.fbcdn.net/rsrc.php/v3/yD/l/0,cross/C1XzobiRO68.css -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p40x40/21433220_10155112318317462_819881081717302833_n.jpg?oh=60c0e3655a03a06d208e43b3d0ee520b&oe=5AD4CC49 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p40x40/24174227_10203191389621079_8431407467207077561_n.jpg?oh=1c83d8b6ffa2b5adf557001d03e31a19&oe=5ACB160B -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p40x40/21752442_346684255766671_4475825201585686811_n.jpg?oh=54c4ecabcd94c9703f8b3a73d78aaba1&oe=5A8AEC71 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/c34.0.100.100/p100x100/551881_390358547686296_1337547316_n.jpg?oh=de7dd82b1f07da953051f50dd9f637ea&oe=5AD0E226 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/s480x480/20430157_1832319653461432_144634970797686187_n.jpg?oh=9b2c1f7093307b48fbb2ac86947ded4c&oe=5ACD866B -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/c4.0.100.100/p100x100/199935_202880686405345_2333506_n.jpg?oh=170d64123b2da56fdd8076b03912cc60&oe=5ACB6B7C -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p240x240/20430157_1832319653461432_144634970797686187_n.jpg?oh=53491e7c666b56f783cf7f85fdbe94a7&oe=5A8B4298 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-9/s851x315/24129785_10212718030500006_4344740758820241108_n.jpg?oh=c3df13d1f5117178c39f650d3d97c83f&oe=5A9890F2 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/s240x240/24296411_1630467630307272_3990561874337618322_n.jpg?oh=deccb6d5fa793b598f481d3ddc08ca28&oe=5A8CBBCD -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/q82/s240x240/24131603_10212798510470324_1635486878755673205_n.jpg?oh=a9d7a7b695d1b1f4deeb8a9e638f758f&oe=5ACCFE10 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/s240x240/20915152_10203724694594356_7586465478410040631_n.jpg?oh=853a44e422970bda5bdc95a0585a8640&oe=5AC98F34 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/21433220_10155112318317462_819881081717302833_n.jpg?oh=62681ffd35b5843e9b6c94656401bade&oe=5ACEF55B -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/24174227_10203191389621079_8431407467207077561_n.jpg?oh=4fac1ddfb50bb41d21fd1be22caaff89&oe=5ACAB767 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/21752442_346684255766671_4475825201585686811_n.jpg?oh=7e66ed0f8d6d8d7e30f3345afdd64601&oe=5A9C23E8 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/22549961_10214243638827626_6082608412287421169_n.jpg?oh=5f85149331d535fdb7eaa71fafd08562&oe=5A904050 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/23472762_10215332481572389_3932192919870560156_n.jpg?oh=86fef791c1a88470740fbfa5aafb5f52&oe=5ACD1028 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/24176963_1713484802048172_1296505962786038189_n.jpg?oh=99a013a1d617ad9eb27e7d9ce779595a&oe=5ACF8E23 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/c0.0.32.32/p32x32/10429467_1381070958854215_7766823409719163443_n.jpg?oh=894e34ca611fae67d286013d913d75cb&oe=5A8DABF0 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/c0.0.32.32/p32x32/189742_139772619424310_1137586_n.jpg?oh=7cbdab709a81244bfbd2c9cccf42f3b1&oe=5AC994EF -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/23472490_10212815541656182_202861534108775907_n.jpg?oh=1cdabbfcbc8592190b67fb492a4e27f8&oe=5A93D681 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/943891_10153388755097075_8820229584935880100_n.jpg?oh=fcb43589f1d31716f18c6d1992eb7e72&oe=5AD6E4FD -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yx/r/ogYrclupeJV.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://static.xx.fbcdn.net/rsrc.php/v3/yG/l/0,cross/FFxQ1nfdvDo.css -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /events/updatesettings/?attributes[interested_nux_views]=1&id=100023237774992&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1973120626293196/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMJ4fvS9RLeZ -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVJ6nIB+aa*XZ9SLj0JO3GhArW*8wpy4JAC5ENTZ9oFlCA/uBdS6uxXPpGqTUUTWo0QzX3M3ec5RKfH9nrCL88VE*DbNwMw3S4He4 -:scheme https -content-length 438 -:method POST - -:path /rsrc.php/v3isDj4/ym/l/en_US/QOgA6JICAWb.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3iT2E4/y6/l/en_US/ZazZ0DwrfSu.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yM/r/NODUWTXPD_e.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3i6Zg4/ye/l/en_US/XU6qcEKrGJD.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3iR3A4/yL/l/en_US/AX5hCi76eCP.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yS/r/fPmoZFDHfot.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3i_lZ4/y5/l/en_US/jRPoU0fkI_R.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3iCYl4/yg/l/en_US/KU8v9plGLY_.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/y-/r/vwONsN5Nf9I.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yZ/r/be6thttnRgC.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/c11.0.64.64/p64x64/23244261_1615189865168048_1519610711032420088_n.jpg?oh=5ed187cb38f4b966db80c9b25dfc5553&oe=5AD794C1 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/c33.0.64.64/p64x64/22281632_1451041288313512_907991076376584768_n.jpg?oh=a90c31096a0fe6ed10f9d8acba922c80&oe=5A9FA902 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p64x64/22554758_1706285579381477_1345535597699777482_n.jpg?oh=eb16af95e15925039064e944ed3dda2a&oe=5A9B5068 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/c16.0.64.64/p64x64/22552499_1917232504970146_6553860606931917898_n.jpg?oh=4e7eaed1f85caab70551214853e4ac37&oe=5A91FE74 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/c17.0.64.64/p64x64/21616530_1605822352814903_1798790091350952_n.jpg?oh=23a7bcad73871a541fd3cdb865c5b24b&oe=5A8B1BD7 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/c17.0.64.64/p64x64/21686321_1605002119563593_2513519775839793064_n.jpg?oh=c8f798954ce767e431bf55b8d8ae5b2b&oe=5A8B54F3 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /events/ajax/1447907895258606/impression/?acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22dashboard%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22suggestion_feed_unit%5C%22%2C%5C%22extra_data%5C%22%3A%7B%5C%22tracking%5C%22%3A[%5C%22%7B%5C%5C%5C%22qid%5C%5C%5C%22%3A%5C%5C%5C%22%7B%5C%5C%5C%5C%5C%5C%5C%22suggestion_source%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22browse%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22suggestion_type%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%220%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22browse_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22c1d48974d8c891e888dce0bd2db52851%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22unique_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22start_cursor%5C%5C%5C%5C%5C%5C%5C%22%3A0%7D%5C%5C%5C%22%7D%5C%22]%7D%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1973120626293196/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMJ4fvS9RLeZ -:scheme https -content-length 438 -:method POST - -:path /events/ajax/121794298541978/impression/?acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22dashboard%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22suggestion_feed_unit%5C%22%2C%5C%22extra_data%5C%22%3A%7B%5C%22tracking%5C%22%3A[%5C%22%7B%5C%5C%5C%22qid%5C%5C%5C%22%3A%5C%5C%5C%22%7B%5C%5C%5C%5C%5C%5C%5C%22suggestion_source%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22browse%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22suggestion_type%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%220%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22browse_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22c1d48974d8c891e888dce0bd2db52851%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22unique_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22start_cursor%5C%5C%5C%5C%5C%5C%5C%22%3A0%7D%5C%5C%5C%22%7D%5C%22]%7D%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1973120626293196/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMJ4fvS9RLeZ -:scheme https -content-length 438 -:method POST - -:path /events/ajax/1852209518426798/impression/?acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22dashboard%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22suggestion_feed_unit%5C%22%2C%5C%22extra_data%5C%22%3A%7B%5C%22tracking%5C%22%3A[%5C%22%7B%5C%5C%5C%22qid%5C%5C%5C%22%3A%5C%5C%5C%22%7B%5C%5C%5C%5C%5C%5C%5C%22suggestion_source%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22browse%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22suggestion_type%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%220%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22browse_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22c1d48974d8c891e888dce0bd2db52851%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22unique_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22start_cursor%5C%5C%5C%5C%5C%5C%5C%22%3A0%7D%5C%5C%5C%22%7D%5C%22]%7D%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1973120626293196/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMJ4fvS9RLeZ -:scheme https -content-length 438 -:method POST - -:path /events/ajax/125107554845706/impression/?acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22dashboard%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22suggestion_feed_unit%5C%22%2C%5C%22extra_data%5C%22%3A%7B%5C%22tracking%5C%22%3A[%5C%22%7B%5C%5C%5C%22qid%5C%5C%5C%22%3A%5C%5C%5C%22%7B%5C%5C%5C%5C%5C%5C%5C%22suggestion_source%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22browse%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22suggestion_type%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%220%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22browse_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22c1d48974d8c891e888dce0bd2db52851%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22unique_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22start_cursor%5C%5C%5C%5C%5C%5C%5C%22%3A0%7D%5C%5C%5C%22%7D%5C%22]%7D%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1973120626293196/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMJ4fvS9RLeZ -:scheme https -content-length 438 -:method POST - -:path /events/ajax/388498998233936/impression/?acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22dashboard%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22suggestion_feed_unit%5C%22%2C%5C%22extra_data%5C%22%3A%7B%5C%22tracking%5C%22%3A[%5C%22%7B%5C%5C%5C%22qid%5C%5C%5C%22%3A%5C%5C%5C%22%7B%5C%5C%5C%5C%5C%5C%5C%22suggestion_source%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22browse%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22suggestion_type%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%220%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22browse_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22c1d48974d8c891e888dce0bd2db52851%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22unique_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22start_cursor%5C%5C%5C%5C%5C%5C%5C%22%3A0%7D%5C%5C%5C%22%7D%5C%22]%7D%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1973120626293196/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMJ4fvS9RLeZ -:scheme https -content-length 439 -:method POST - -:path /events/ajax/1304638332980088/impression/?acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22dashboard%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22suggestion_feed_unit%5C%22%2C%5C%22extra_data%5C%22%3A%7B%5C%22tracking%5C%22%3A[%5C%22%7B%5C%5C%5C%22qid%5C%5C%5C%22%3A%5C%5C%5C%22%7B%5C%5C%5C%5C%5C%5C%5C%22suggestion_source%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22browse%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22suggestion_type%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%220%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22browse_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22c1d48974d8c891e888dce0bd2db52851%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22unique_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22start_cursor%5C%5C%5C%5C%5C%5C%5C%22%3A0%7D%5C%5C%5C%22%7D%5C%22]%7D%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1973120626293196/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMJ4fvS9RLeZ -:scheme https -content-length 439 -:method POST - -:path /api/graphql/ -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1973120626293196/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMJ4fvS9RLeZ -:scheme https -content-length 569 -:method POST - -:path /rsrc.php/v3/yt/r/Yhv-ka5xV9_.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://static.xx.fbcdn.net/rsrc.php/v3/y2/l/0,cross/kJRH5O9nuWN.css -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /events/updatesettings/?attributes[interested_nux_views]=1&id=100023237774992&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1973120626293196/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMJ4fvS9RLeZ -:scheme https -content-length 439 -:method POST - -:path /events/updatesettings/?attributes[interested_nux_views]=1&id=100023237774992&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1973120626293196/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMJ4fvS9RLeZ -:scheme https -content-length 439 -:method POST - -:path /events/updatesettings/?attributes[interested_nux_views]=1&id=100023237774992&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1973120626293196/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMJ4fvS9RLeZ -:scheme https -content-length 439 -:method POST - -:path /ajax/bz -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1973120626293196/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMJ4fvS9RLeZ -:scheme https -content-length 1327 -:method POST - -:path /ajax/bz -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1447907895258606/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKY9CP9RLe+ -cookie /kiaC=tbsdLtVawA2lKZ+d0FS0cIc*Tl7fr6QGADCPU9HOE13J9xoeKEYfs* -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztVf2Q8Y3MtcdMZJh59lqXqW5EpSDcGpKBHBx/ -:scheme https -content-length 1374 -:method POST - -:path /events/1447907895258606/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D&dpr=1&ajaxpipe=1&ajaxpipe_token=AXhgQic5nZEiPkJl&quickling[version]=3490195%3B0%3B&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEyGzEyeWrWo8ovxGEG2N6zUkxu13wqojyRUC3eEbbyEjKewhUdUOum2SaCwAwIUsz8nwsUCidwBx62q3O69LK4UG6EvG1Axq3au7oeoa898pCK6468nCxi8y8Z0io-2mbx-8xuawnrK8zoym5Egy86CEyJ7x3yFEC2bwEBojouw&__req=jsonp_5&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473&__adt=5 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -upgrade-insecure-requests 1 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 -referer https://www.facebook.com/events/1973120626293196/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKY9CP9RLe+ -cookie /kiaC=tbsdLtVawA2lKZ+d0FS0cIc*Tl7fr6QGADCPU9HOE13J9xoeKEYfs* -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztVf2Q8Y3MtcdMZJh59lqXqW5EpSDcGpKBHBx/ -:scheme https -:method GET - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yM/l/0,cross/MLNfP69EIl8.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yh/l/0,cross/iydtwz40Qb-.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yN/l/0,cross/ZPMqK38G-4h.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yt/l/0,cross/UNGqFczWO_e.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yl/l/0,cross/iYeZGLkjeBf.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yO/l/0,cross/z3VOxP2h9AS.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:path /v/t1.0-0/p526x296/21686321_1605002119563593_2513519775839793064_n.jpg?oh=15d81e2c23b4a5dd9d4b05892b349caa&oe=5ACF538A -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /api/graphql/ -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1447907895258606/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKY9CP9RLe+ -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztVf2Q8Y3MtcdMZJh59lqXqW5EpSDcGpKBHBx/ -:scheme https -content-length 569 -:method POST - -:path /v/t1.0-1/p40x40/22007495_1611206598943145_2152306483017499597_n.jpg?oh=e2bffc4570db5b1eabdb02dde44876a4&oe=5AD0369F -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yD/l/0,cross/C1XzobiRO68.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yF/l/0,cross/ySVFHWyZdBc.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:path /api/graphql/ -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1447907895258606/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKY9CP9RLe+ -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztVf2Q8Y3MtcdMZJh59lqXqW5EpSDcGpKBHBx/ -:scheme https -content-length 569 -:method POST - -:path /rsrc.php/v3/yT/r/tLN3LXSmwnV.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://static.xx.fbcdn.net/rsrc.php/v3/yh/l/0,cross/iydtwz40Qb-.css -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p40x40/16507849_10212179422265831_6104825428384290663_n.jpg?oh=42418a1c300ba02b1fc9314b5009c7ad&oe=5A8E4C6E -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/c25.0.100.100/p100x100/20430157_1832319653461432_144634970797686187_n.jpg?oh=f9b9401f3292f2ae642c2e288dd9bf2f&oe=5A96F807 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/q82/c25.0.100.100/p100x100/23517646_10155180104347914_975567954750306920_n.jpg?oh=b2579866daacac8931be304b383dc1bd&oe=5ACF7F16 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/s480x480/13934646_1170551129675363_4988970371810992101_n.jpg?oh=8271023f0a3cba8d8530f922617d81dc&oe=5A945561 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p100x100/22007495_1611206598943145_2152306483017499597_n.jpg?oh=56773f6476947236ae619b837dc28880&oe=5ACC191B -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p240x240/10641264_686711278087207_5636445445479832699_n.jpg?oh=e9b912e7d82bf9f8d774b464ebd7359a&oe=5A9A492C -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p240x240/16508430_1355737407823400_8861192681154280987_n.jpg?oh=0c9601cf8fff4566495821e01a5991f3&oe=5A890869 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p160x160/22448507_1627528010644337_7425627241276681838_n.jpg?oh=93e05e7318701a87879ff1d3ef1d99a8&oe=5A916AA1 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/q83/p240x240/21743176_1599591296771342_3940528494012418670_n.jpg?oh=4715e59e66802ec676bdf26d49c52740&oe=5A8B456E -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/p160x160/21463343_1614095295320942_3415814669605303015_n.jpg?oh=2cfc00a6bb1b9b62383796818a08a533&oe=5ACCAB29 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/22007495_1611206598943145_2152306483017499597_n.jpg?oh=70f62aca4c3f0fb6c06c4aea4a7c56ea&oe=5AD3CE8D -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/16507849_10212179422265831_6104825428384290663_n.jpg?oh=9f1c27c56c259fcf256f94c2c8457139&oe=5A96D902 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/24131174_10100140179052244_3448886053937871882_n.jpg?oh=6aa7571dbef1d6a95670073db569650b&oe=5A9CBF6D -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/23843246_10210959762897574_4628662270655170535_n.jpg?oh=dbc96548f3e1e6f2b55753d3b6b681b0&oe=5ACAD742 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/r90/c0.3.32.32/p32x32/24131485_2157837947575814_8677764744906557849_n.jpg?oh=0ff978ee020cf5fd8e63bb1ee5b0f25e&oe=5AD25AC7 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/18700351_10154577137876570_4526906903143473570_n.jpg?oh=0c9e13a4efcfdc256b48fee5235fd35a&oe=5A9142AC -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/24177184_10157380155928644_1449375182569260563_n.jpg?oh=11b9ea44cddb22d4321f22131cc5c595&oe=5A8A02AF -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/20479443_10154909543732615_4366010947884980165_n.jpg?oh=bf3eb73aa771969b7743ebc05aa97687&oe=5A8B360F -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/11012734_10208529519822446_5388612684387214640_n.jpg?oh=940eb16e5e471f3ad387a46c447da986&oe=5AD097F9 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/23755108_10155844518204210_4569362422329145344_n.jpg?oh=50696db1a8beb7697ee00623fcaf4b71&oe=5AA0ED31 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/c17.0.64.64/p64x64/21766488_1611228475607624_8874848206202749685_n.jpg?oh=3531efdab51624d662e54c5ce7342990&oe=5AD22506 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/c17.0.64.64/p64x64/21766441_1611246572272481_2554154972748677040_n.jpg?oh=bd053306b5bba87d0ea2dbb32569f175&oe=5A897D6E -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/c17.0.64.64/p64x64/21616465_1605831249480680_1208363931993874862_n.jpg?oh=b7b9d41bf356733e9c448c6536b5d084&oe=5AD791F5 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/c17.0.64.64/p64x64/22046029_1611235688940236_6270057556382781739_n.jpg?oh=e1e10a5a289aa9c286ec937bf13784c4&oe=5ACC2FB8 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/c17.0.64.64/p64x64/23795396_1668704973193307_442162647813589977_n.jpg?oh=53f2410828e1df53658ce94d3729c856&oe=5A924A87 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /events/ajax/1991086554439899/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1447907895258606/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKY9CP9RLe+ -:scheme https -content-length 439 -:method POST - -:path /events/ajax/1709687889338572/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1447907895258606/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKY9CP9RLe+ -:scheme https -content-length 439 -:method POST - -:path /events/ajax/1911851189079234/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1447907895258606/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKY9CP9RLe+ -:scheme https -content-length 439 -:method POST - -:path /events/ajax/733393743524215/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1447907895258606/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKY9CP9RLe+ -:scheme https -content-length 439 -:method POST - -:path /events/ajax/121794298541978/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1447907895258606/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKY9CP9RLe+ -:scheme https -content-length 439 -:method POST - -:path /events/ajax/313616719041832/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1447907895258606/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKY9CP9RLe+ -:scheme https -content-length 439 -:method POST - -:path /ajax/bz -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1447907895258606/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKY9CP9RLe+ -:scheme https -content-length 1245 -:method POST - -:path /ajax/bz -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1709687889338572/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYdyL1RLe0 -cookie /kiaC=tbsdLtVawA2lK*Xf/NS0bMd/Tkebr6QGADCPU9HOE13J9xoeKEYfs* -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ -:scheme https -content-length 1374 -:method POST - -:path /events/1709687889338572/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D&dpr=1&ajaxpipe=1&ajaxpipe_token=AXhgQic5nZEiPkJl&quickling[version]=3490195%3B0%3B&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEyGzEyeWrWo8ovxGEG2N6zUkxu13wqojyRUC3eEbbyEjKewhUdUOum2SaCwAwIUsz8nwsUCidwBx62q3O69LK4UG6EvG1Axq3au7oeoa898pCK6468nCxi8y8Z0io-2mbx-8xuawnrK8zoym5Egy86CEyJ7x3yFEC2bwEBojouw&__req=jsonp_6&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473&__adt=6 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -upgrade-insecure-requests 1 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 -referer https://www.facebook.com/events/1447907895258606/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYdyL1RLe0 -cookie /kiaC=tbsdLtVawA2lK*Xf/NS0bMd/Tkebr6QGADCPU9HOE13J9xoeKEYfs* -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ -:scheme https -:method GET - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yy/l/0,cross/eQVk65Pz4u5.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yM/l/0,cross/MLNfP69EIl8.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yh/l/0,cross/iydtwz40Qb-.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yN/l/0,cross/ZPMqK38G-4h.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yt/l/0,cross/UNGqFczWO_e.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yl/l/0,cross/iYeZGLkjeBf.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yZ/l/0,cross/T2vkV3tYtHO.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yO/l/0,cross/z3VOxP2h9AS.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/y7/r/YmJVIBP8IMt.png -referer https://static.xx.fbcdn.net/rsrc.php/v3/yy/l/0,cross/eQVk65Pz4u5.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 - -:path /v/t1.0-0/p526x296/22046029_1611235688940236_6270057556382781739_n.jpg?oh=b6cab8dddcc20e8bf3c5d6102c63f298&oe=5AC9A2C1 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /api/graphql/ -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1709687889338572/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYdyL1RLe0 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ -:scheme https -content-length 569 -:method POST - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yu/l/0,cross/5Wr55_OaqyB.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yD/l/0,cross/C1XzobiRO68.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yF/l/0,cross/ySVFHWyZdBc.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:path /api/graphql/ -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1709687889338572/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYdyL1RLe0 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ -:scheme https -content-length 569 -:method POST - -:path /v/t1.0-1/p40x40/22405450_1474525099303608_7382850054991762247_n.jpg?oh=2d0f8815a16149f988803daaade5d1cc&oe=5A997673 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/c24.0.100.100/p100x100/15439912_1251006534937837_8742195435936088695_n.jpg?oh=c5f73929ed33b8e0807624fd80b50d86&oe=5A95546D -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/22405450_1474525099303608_7382850054991762247_n.jpg?oh=9486ebd4220c196dfd9a3f50da38f905&oe=5AC95A61 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/c17.0.64.64/p64x64/21559086_1605828752814263_2926060938812406268_n.jpg?oh=1a7659aab9bbadfb2343118393758f89&oe=5ACD9B0C -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/c53.0.64.64/p64x64/23031225_10155102304774677_1465748209322455093_n.jpg?oh=505da30a5bed9b6ee85d69e7847fb722&oe=5AA1313F -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /events/ajax/363814037411265/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1709687889338572/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYdyL1RLe0 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ -:scheme https -content-length 439 -:method POST - -:path /events/ajax/1746931315609833/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1709687889338572/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYdyL1RLe0 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ -:scheme https -content-length 439 -:method POST - -:path /events/ajax/121794298541978/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1709687889338572/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYdyL1RLe0 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ -:scheme https -content-length 439 -:method POST - -:path /events/ajax/1991086554439899/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1709687889338572/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYdyL1RLe0 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ -:scheme https -content-length 439 -:method POST - -:path /events/ajax/733393743524215/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1709687889338572/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYdyL1RLe0 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ -:scheme https -content-length 439 -:method POST - -:path /events/ajax/1911851189079234/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1709687889338572/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYdyL1RLe0 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ -:scheme https -content-length 439 -:method POST - -:path /ajax/bz -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/1709687889338572/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYdyL1RLe0 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ -:scheme https -content-length 1247 -:method POST - -:path /ajax/bz -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/121794298541978/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYgAT9RLe2 -cookie /kiaC=tbsdLtVawA2lKXYd0JN1bIeYUmf+EqjYM8Ty0fm4r8V*Xwjk+n4lr -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf -:scheme https -content-length 1373 -:method POST - -:path /events/121794298541978/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D&dpr=1&ajaxpipe=1&ajaxpipe_token=AXhgQic5nZEiPkJl&quickling[version]=3490195%3B0%3B&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEyGzEyeWrWo8ovxGEG2N6zUkxu13wqojyRUC3eEbbyEjKewhUdUOum2SaCwAwIUsz8nwsUCidwBx62q3O69LK4UG6EvG1Axq3au7oeoa898pCK6468nCxi8y8Z0io-2mbx-8xuawnrK8zoym5Egy86CEyJ7x3yFEC2bwEBojouw&__req=jsonp_7&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473&__adt=7 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -upgrade-insecure-requests 1 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 -referer https://www.facebook.com/events/1709687889338572/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYgAT9RLe2 -cookie /kiaC=tbsdLtVawA2lKXYd0JN1bIeYUmf+EqjYM8Ty0fm4r8V*Xwjk+n4lr -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf -:scheme https -:method GET - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yy/l/0,cross/eQVk65Pz4u5.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yM/l/0,cross/MLNfP69EIl8.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yh/l/0,cross/iydtwz40Qb-.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yN/l/0,cross/ZPMqK38G-4h.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yt/l/0,cross/UNGqFczWO_e.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yl/l/0,cross/iYeZGLkjeBf.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yO/l/0,cross/z3VOxP2h9AS.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yZ/l/0,cross/T2vkV3tYtHO.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:path /v/t1.0-0/p526x296/21616530_1605822352814903_1798790091350952_n.jpg?oh=5731464e5cf5efecb8c8c8d767fc502f&oe=5ACBA2F0 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /api/graphql/ -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/121794298541978/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYgAT9RLe2 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf -:scheme https -content-length 568 -:method POST - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yu/l/0,cross/5Wr55_OaqyB.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yD/l/0,cross/C1XzobiRO68.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yF/l/0,cross/ySVFHWyZdBc.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:path /api/graphql/ -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/121794298541978/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYgAT9RLe2 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf -:scheme https -content-length 568 -:method POST - -:path /v/t1.0-1/p40x40/24232121_1531597353561011_3121094620124891272_n.jpg?oh=bac81874c0af4c34cff0deb63276809f&oe=5ACA83B1 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p40x40/12928337_182175672167795_8082301682234772028_n.jpg?oh=e703c94de0c0c7de7372658bfec8e8bc&oe=5A9ED69C -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p40x40/13226897_1190272007672233_391504603337286643_n.jpg?oh=bcbdde3f56518c36412170d1c7ed3997&oe=5AD603F6 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/24232121_1531597353561011_3121094620124891272_n.jpg?oh=89e7d525ee67b599afaa5eb9a46d0516&oe=5A9576A3 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/12928337_182175672167795_8082301682234772028_n.jpg?oh=71916fe8ef5bb2f8194c8cb72e51a8a6&oe=5A8F1F05 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/13226897_1190272007672233_391504603337286643_n.jpg?oh=df2ff8f8ec916bea727a34d241054347&oe=5ACB516F -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/18697989_10203479437103357_786844211730674814_n.jpg?oh=dadd6796ea9b5e3eb3253f0a6f83ba3f&oe=5AA145F2 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/22196236_10212100499366199_2256862503609744121_n.jpg?oh=c1fbc9404b3f4f8c9bb8061e84e8d6f7&oe=5A98F452 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/16388430_123334868182006_7904865424458126619_n.jpg?oh=6d38ff44a808e5f40b921b6d57b055b0&oe=5AD415B7 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/14639879_699270873574358_1379733909601947956_n.jpg?oh=ac5d1ef3c0cdfec30adad3d5d253d4c3&oe=5A9E167A -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/23722208_940207266129332_3105091050549347593_n.jpg?oh=b0b0c9e1c34a1f19748ba956b6e674a6&oe=5A8FC07E -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/19060008_10209829588558627_4792308750847464570_n.jpg?oh=69cff08a5a55f5e66b391ef7e85b233d&oe=5A98C41B -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/c4.0.32.32/p32x32/580320_4555543723098_1383629766_n.jpg?oh=cae783722049b6a068f9c372c9781db9&oe=5ACDA87E -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/c11.0.64.64/p64x64/22405523_10155333936377415_1438051142295122957_n.jpg?oh=879ecc0b58955512495d76aed6919e2e&oe=5A9A42E1 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /events/ajax/1441469165967314/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/121794298541978/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYgAT9RLe2 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf -:scheme https -content-length 439 -:method POST - -:path /events/ajax/733393743524215/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/121794298541978/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYgAT9RLe2 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf -:scheme https -content-length 439 -:method POST - -:path /events/ajax/1709687889338572/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/121794298541978/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYgAT9RLe2 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf -:scheme https -content-length 439 -:method POST - -:path /events/ajax/313616719041832/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/121794298541978/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYgAT9RLe2 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf -:scheme https -content-length 439 -:method POST - -:path /events/ajax/1447907895258606/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/121794298541978/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYgAT9RLe2 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf -:scheme https -content-length 439 -:method POST - -:path /events/ajax/1911851189079234/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/121794298541978/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYgAT9RLe2 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf -:scheme https -content-length 439 -:method POST - -:path /ajax/bz -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/121794298541978/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKYgAT9RLe2 -:scheme https -content-length 1243 -:method POST - -:path /ajax/bz -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/313616719041832/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZ9xR1RLeY6 -cookie /kiaC=tbsdLtVawA2lMW/cVLSWcDeYTi9+EqjYM8Ty0fm4r8V*Xwjk+n4lr -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf -:scheme https -content-length 1373 -:method POST - -:path /events/313616719041832/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D&dpr=1&ajaxpipe=1&ajaxpipe_token=AXhgQic5nZEiPkJl&quickling[version]=3490195%3B0%3B&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEyGzEyeWrWo8ovxGEG2N6zUkxu13wqojyRUC3eEbbyEjKewhUdUOum2SaCwAwIUsz8nwsUCidwBx62q3O69LK4UG6EvG1Axq3au7oeoa898pCK6468nCxi8y8Z0io-2mbx-8xuawnrK8zoym5Egy86CEyJ7x3yFEC2bwEBojouw&__req=jsonp_8&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473&__adt=8 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -upgrade-insecure-requests 1 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 -referer https://www.facebook.com/events/121794298541978/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZ9xR1RLeY6 -cookie /kiaC=tbsdLtVawA2lMW/cVLSWcDeYTi9+EqjYM8Ty0fm4r8V*Xwjk+n4lr -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf -:scheme https -:method GET - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yM/l/0,cross/MLNfP69EIl8.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yh/l/0,cross/iydtwz40Qb-.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yN/l/0,cross/ZPMqK38G-4h.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yt/l/0,cross/UNGqFczWO_e.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yl/l/0,cross/iYeZGLkjeBf.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yO/l/0,cross/z3VOxP2h9AS.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:path /v/t1.0-0/p526x296/21766488_1611228475607624_8874848206202749685_n.jpg?oh=6ce39257a4ef730d2d0eeeb168dc1f0d&oe=5ACE0A7F -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /api/graphql/ -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/313616719041832/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZ9xR1RLeY6 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf -:scheme https -content-length 568 -:method POST - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yD/l/0,cross/C1XzobiRO68.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yF/l/0,cross/ySVFHWyZdBc.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:path /api/graphql/ -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/313616719041832/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZ9xR1RLeY6 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf -:scheme https -content-length 568 -:method POST - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yT/r/tLN3LXSmwnV.png -referer https://static.xx.fbcdn.net/rsrc.php/v3/yh/l/0,cross/iydtwz40Qb-.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 - -:path /v/t1.0-1/p40x40/531591_269299136538659_782478448_n.jpg?oh=bb514c0d27a597ef3b9d5d76e1d9199c&oe=5A8DFCB6 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /images/emoji.php/v9/f4f/1/16/1f447.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p32x32/531591_269299136538659_782478448_n.jpg?oh=e8ecbe66f9733f1234b9121acfbd8eb4&oe=5A908605 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/c0.0.64.64/p64x64/23472342_10155097611883059_8103458094928848063_n.jpg?oh=8d03fcefc394baf5e1d9615a8d866af5&oe=5A97AB98 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /events/ajax/140000083281755/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/313616719041832/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZ9xR1RLeY6 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf -:scheme https -content-length 439 -:method POST - -:path /events/ajax/1709687889338572/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/313616719041832/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZ9xR1RLeY6 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf -:scheme https -content-length 439 -:method POST - -:path /events/ajax/1911851189079234/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/313616719041832/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZ9xR1RLeY6 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf -:scheme https -content-length 439 -:method POST - -:path /events/ajax/733393743524215/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/313616719041832/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZ9xR1RLeY6 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf -:scheme https -content-length 439 -:method POST - -:path /events/ajax/121794298541978/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/313616719041832/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZ9xR1RLeY6 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf -:scheme https -content-length 439 -:method POST - -:path /events/ajax/1447907895258606/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/313616719041832/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZ9xR1RLeY6 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf -:scheme https -content-length 439 -:method POST - -:path /ajax/bz -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/313616719041832/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZ9xR1RLeY6 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf -:scheme https -content-length 1223 -:method POST - -:path /ajax/bz -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/733393743524215/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZcBU1RLeY8 -cookie /kiaC=tbsdLtVawA2lQY/90ISZ6Ic+Ngc+EqjYM8Ty0fm4r8V*Xwjk+n4lr -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf -:scheme https -content-length 1373 -:method POST - -:path /events/733393743524215/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D&dpr=1&ajaxpipe=1&ajaxpipe_token=AXhgQic5nZEiPkJl&quickling[version]=3490195%3B0%3B&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEyGzEyeWrWo8ovxGEG2N6zUkxu13wqojyRUC3eEbbyEjKewhUdUOum2SaCwAwIUsz8nwsUCidwBx62q3O69LK4UG6EvG1Axq3au7oeoa898pCK6468nCxi8y8Z0io-2mbx-8xuawnrK8zoym5Egy86CEyJ7x3yFEC2bwEBojouw&__req=jsonp_9&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473&__adt=9 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -upgrade-insecure-requests 1 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 -referer https://www.facebook.com/events/313616719041832/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZcBU1RLeY8 -cookie /kiaC=tbsdLtVawA2lQY/90ISZ6Ic+Ngc+EqjYM8Ty0fm4r8V*Xwjk+n4lr -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf -:scheme https -:method GET - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yy/l/0,cross/eQVk65Pz4u5.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yM/l/0,cross/MLNfP69EIl8.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yh/l/0,cross/iydtwz40Qb-.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yN/l/0,cross/ZPMqK38G-4h.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yt/l/0,cross/UNGqFczWO_e.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yl/l/0,cross/iYeZGLkjeBf.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yZ/l/0,cross/T2vkV3tYtHO.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yO/l/0,cross/z3VOxP2h9AS.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/y7/r/YmJVIBP8IMt.png -referer https://static.xx.fbcdn.net/rsrc.php/v3/yy/l/0,cross/eQVk65Pz4u5.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 - -:path /v/t1.0-0/p526x296/21766441_1611246572272481_2554154972748677040_n.jpg?oh=9bc3309e4930db9870d335e9724632b6&oe=5A9EBB17 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yu/l/0,cross/5Wr55_OaqyB.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yD/l/0,cross/C1XzobiRO68.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:path /api/graphql/ -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/733393743524215/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZcBU1RLeY8 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf -:scheme https -content-length 568 -:method POST - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yF/l/0,cross/ySVFHWyZdBc.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -referer https://www.facebook.com/ -origin https://www.facebook.com - -:path /api/graphql/ -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/733393743524215/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZcBU1RLeY8 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf -:scheme https -content-length 568 -:method POST - -:path /v/t1.0-0/c17.0.64.64/p64x64/23319034_1654531557943982_6407898304503772728_n.jpg?oh=3bb54623c4841feb1552521ddf3383cd&oe=5ACB1BED -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-0/c17.0.64.64/p64x64/23658495_1668707769859694_6242239439867805870_n.jpg?oh=293821a99ebd2c90f6ef022d3173491c&oe=5AC9CBFF -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /events/ajax/313616719041832/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/733393743524215/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZcBU1RLeY8 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf -:scheme https -content-length 439 -:method POST - -:path /events/ajax/933722390110301/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/733393743524215/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZcBU1RLeY8 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf -:scheme https -content-length 439 -:method POST - -:path /events/ajax/121794298541978/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/733393743524215/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZcBU1RLeY8 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf -:scheme https -content-length 439 -:method POST - -:path /events/ajax/255990421592930/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/733393743524215/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZcBU1RLeY8 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf -:scheme https -content-length 439 -:method POST - -:path /events/ajax/1991086554439899/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/733393743524215/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZcBU1RLeY8 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf -:scheme https -content-length 439 -:method POST - -:path /events/ajax/1709687889338572/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/733393743524215/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZcBU1RLeY8 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf -:scheme https -content-length 439 -:method POST - -:path /ajax/bz -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/events/733393743524215/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZcBU1RLeY8 -:scheme https -content-length 1249 -:method POST - -:path /ajax/haste-response/?modules=Hovercard&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEyGzEyeWrWo8ovxGEG2N6zUkxu13wqojyRUC3eEbbyEjKewhUdUOum2SaCwAwIUsz8nwsUCidwBx62q3O69LK4UG6EvG1Axq3au7oeoa898pCK6468nCxi8y8Z0io-2mbx-8xuawnrK8zoym5Egy86CEyJ7x3yFEC2bwEBojouw&__req=2q&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/events/733393743524215/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMKZcBU1RLeY8 -:scheme https -:method GET - -:path /rsrc.php/v3/yS/l/0,cross/crBpd5oCqXt.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3i8ma4/yj/l/en_US/WHDOHrV-tta.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /ajax/bz -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMK/7vP5RLeYa -cookie /kiaC=tbseNYXUkzYQMDI1YtwF4 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOKuulQfpIcKKxo4E+ -:scheme https -content-length 1065 -:method POST - -:path /?ref=tn_tnmn&dpr=1&ajaxpipe=1&ajaxpipe_token=AXhgQic5nZEiPkJl&quickling[version]=3490195%3B0%3B&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEyGzEyeWrWo8ovxGEG2N6zUkxu13wqojyRUC3eEbbyEjKewhUdUOum2SaCwAwIUsz8nwsUCidwBx62q3O69LK4UG6EvG1Axq3au7oeoa898pCK6468nCxi8y8Z0io-2mbx-8xuawnrK8zoym5Egy86CEyJ7x3yFEC2bwEBojouw&__req=jsonp_10&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473&__adt=10 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -upgrade-insecure-requests 1 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 -referer https://www.facebook.com/events/733393743524215/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMK/7vP5RLeYa -cookie /kiaC=tbseNYXUkzYQMDI1YtwF4 -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOKuulQfpIcKKxo4E+ -:scheme https -:method GET - -:path /security/hsts-pixel.gif?c=3.2.5 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMK/7vP5RLeYa -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOKuulQfpIcKKxo4E+ -:scheme https -:method GET - -:path /v/t1.0-1/c12.0.40.40/p40x40/10354686_10150004552801856_220367501106153455_n.jpg?oh=069c328c92d62cf2e0fb83dacee97793&oe=5AD268F8 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yp/r/2iAVm2uUcKs.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://static.xx.fbcdn.net/rsrc.php/v3/yG/l/0,cross/FFxQ1nfdvDo.css -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yH/r/yNvz5xtKREW.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://static.xx.fbcdn.net/rsrc.php/v3/yg/l/0,cross/YbW8fl-NvjH.css -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:method GET -:scheme https -:authority scontent-lga3-1.xx.fbcdn.net -:path /v/t1.0-1/c7.0.24.24/p24x24/10354686_10150004552801856_220367501106153455_n.jpg?oh=11dc236df7f15b2a8fa8e661eb564a3b&oe=5AD4C3DE -referer https://www.facebook.com/ -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 - -:path /v/t1.0-1/p240x240/21314782_10159200963225705_3770109417540733549_n.jpg?oh=844e26db3b2922946c6a091a68fabe50&oe=5AD21213 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/c57.17.207.207/p240x240/384257_10150422357102608_685874301_n.jpg?oh=f73d75ea1540089d4f3b901515edbe1b&oe=5AD20BF2 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p240x240/23622157_10154982307517109_7020846265266810616_n.jpg?oh=7525e9288157b1a12edab419d051e2a5&oe=5ACA40BD -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p240x240/10917418_10152508827966783_6460127938302821830_n.jpg?oh=e4b01f9b00ee0a8ffb669d7835b9308a&oe=5A8D8986 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p240x240/12308614_10154628563364068_8875599992824207714_n.jpg?oh=a03c6994e3435deee2f4fbea058ca6d2&oe=5A89A0B1 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p240x240/12294662_10100410348016388_513443314251208893_n.jpg?oh=1ad39710e20db647ea5c84386f056e31&oe=5A945706 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p240x240/23316654_10155867279909706_6995451216203233898_n.jpg?oh=b8657d968c2ae00ad0a577aeae39a92c&oe=5A91A3AC -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/c0.0.240.240/p240x240/14370286_10210498302074996_8991438214434252196_n.jpg?oh=eaef8f22170f296e5ba8fb0fc39719ea&oe=5A98211D -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/c25.0.150.150/1800231_10152231321132863_1628260586_n.jpg?oh=f9f86bc542c811e31a541008dd3bbdfb&oe=5AD7B7CD -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/c61.0.240.240/p240x240/21463409_10155683084304518_3841025447444460378_n.jpg?oh=269cdf1a295d1046aa52f43ff412c3cd&oe=5A8AE873 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/c12.0.240.240/p240x240/10409688_10152783847736779_6268986375408484346_n.jpg?oh=ee881d2b3406bf50d97114bfb4e14cc3&oe=5A8B44F3 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p240x240/18447416_10207602672823510_1911267733018824475_n.jpg?oh=1e5b0c1555b4c2321e0cc0418398d25d&oe=5A9EAF53 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p240x240/12742261_10154082158422446_7574676053979317307_n.jpg?oh=b7c3832555786791f56f8c1f0a3073ae&oe=5A98FB2E -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p240x240/22222073_509333842746953_1966313970212218380_n.jpg?oh=2bc63776ed8cd00386bcb96488889904&oe=5ACEBCA6 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/c0.0.240.240/p240x240/22222015_706363442903720_8773664824394405283_n.jpg?oh=de4e4011db36c058643e6ca21f4d3cc3&oe=5A9410F5 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/c25.0.150.150/1779756_10152203522202708_181885041_n.jpg?oh=56a25255e5643d7130895a4caa38ecd0&oe=5A97D546 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p240x240/21106729_10155772970802376_2191527012650361108_n.jpg?oh=5fddf5855adfcffca60520dbaf587775&oe=5A97E2E1 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p240x240/15037258_330583707313103_2099110538176613591_n.jpg?oh=eab1eda25bcd5fec3bcdf4e0bd4e263f&oe=5ACA4410 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /v/t1.0-1/p240x240/19399403_1179174878854637_5920687472359406282_n.jpg?oh=43b6931332f058c8e5f4a7d44b7169dc&oe=5A8D362E -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yb/r/GsNJNwuI-UM.gif -referer https://www.facebook.com/ -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/y4/r/-PAXP-deijE.gif -referer https://www.facebook.com/ -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 - -:method GET -:scheme https -:authority scontent-lga3-1.xx.fbcdn.net -:path /v/t1.0-1/c170.50.621.621/s50x50/384257_10150422357102608_685874301_n.jpg?oh=28aabe0172a1e888f353e0079b0bb7ec&oe=5A8C9EAD -referer https://www.facebook.com/ -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 - -:method GET -:scheme https -:authority scontent-lga3-1.xx.fbcdn.net -:path /v/t1.0-1/p50x50/23622157_10154982307517109_7020846265266810616_n.jpg?oh=1f6f0d07ac8c542a51e0857d05c1d7c9&oe=5A8F88A5 -referer https://www.facebook.com/ -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 - -:method GET -:scheme https -:authority scontent-lga3-1.xx.fbcdn.net -:path /v/t1.0-1/p50x50/21314782_10159200963225705_3770109417540733549_n.jpg?oh=2c5c202c6c079bb25f05d5fd618ec007&oe=5AD5A70B -referer https://www.facebook.com/ -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 - -:path /v/t1.0-1/c13.0.50.50/p50x50/21463409_10155683084304518_3841025447444460378_n.jpg?oh=af1bc75737851eef6723c2f460dc0b6b&oe=5A90178B -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:method GET -:scheme https -:authority scontent-lga3-1.xx.fbcdn.net -:path /v/t1.0-1/p50x50/10917418_10152508827966783_6460127938302821830_n.jpg?oh=ec2613409f72dd0e5ffeff430b3f2e96&oe=5AD1399E -referer https://www.facebook.com/ -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 - -:method GET -:scheme https -:authority scontent-lga3-1.xx.fbcdn.net -:path /v/t1.0-1/p50x50/12308614_10154628563364068_8875599992824207714_n.jpg?oh=cd44e652f95ebde8f70a187c3d886033&oe=5AD5BAA9 -referer https://www.facebook.com/ -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 - -:path /rsrc.php/v3/y3/r/e_5DLKXq3R7.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://static.xx.fbcdn.net/rsrc.php/v3/yG/l/0,cross/FFxQ1nfdvDo.css -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:method GET -:scheme https -:authority static.xx.fbcdn.net -:path /rsrc.php/v3/yR/r/ZWvcrvmVGoU.png -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 - -:path /rsrc.php/v3/y7/r/6UFmXXnPEE7.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /security/hsts-pixel.gif?c=2.5 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority fbcdn.net -:scheme https -:method GET - -:path /security/hsts-pixel.gif?c=5 -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority fbsbx.com -:scheme https -:method GET - -:path /v/t1.0-1/c15.0.50.50/p50x50/10354686_10150004552801856_220367501106153455_n.jpg?oh=24b240ba2dc60ad31b4319fbab9bb9e2&oe=5A9CD62F -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent-lga3-1.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/y-/l/0,cross/pcrxJyVZ216.css -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept text/css,*/*;q=0.1 -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /security/hsts-pixel.gif -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority connect.facebook.net -:scheme https -:method GET - -:path /rsrc.php/v3/yS/r/AxHb977uNzV.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yd/r/EKiUOMkHrSd.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /sketch_results/?dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMK/7vP5RLeYa -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOKuulQfpIcKKxo4E+ -:scheme https -content-length 982 -:method POST - -:path /ego/feed/logging/impression/?ego_id=701635704&qid=6494405107505770635&mf_story_key=5879921190707205369&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMK/7vP5RLeYa -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOKuulQfpIcKKxo4E+ -:scheme https -content-length 441 -:method POST - -:path /ego/feed/logging/impression/?ego_id=504037607&qid=6494405107505770635&mf_story_key=5879921190707205369&dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMK/7vP5RLeYa -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOKuulQfpIcKKxo4E+ -:scheme https -content-length 441 -:method POST - -:path /rsrc.php/v3i80M4/yS/l/en_US/F5e4a3f9Rw-.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yG/r/ou6JZKTYK7C.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3ixvC4/yS/l/en_US/9vXQc1VGj6K.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yB/r/PMBnY-MweDn.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yt/r/D2QZcdoavWS.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /rsrc.php/v3/yW/r/HAHWNXx6C5M.js -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority static.xx.fbcdn.net -:scheme https -:method GET - -:path /ajax/bz -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMK/7vP5RLeYa -cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOKuulQfpIcKKxo4E+ -:scheme https -content-length 1067 -:method POST - -:path /hads-ak-prn2/1487645_6012475414660_1439393861_n.png -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept image/webp,image/apng,image/*,*/*;q=0.8 -referer https://www.facebook.com/ -:authority scontent.xx.fbcdn.net -:scheme https -:method GET - -:path /ajax/bz -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMK/7vP5RLeYa -:scheme https -content-length 1742 -:method POST - -:method GET -:scheme https -:authority 2-edge-chat.facebook.com -:path /pull?channel=p_100023237774992&seq=1&partition=-2&clientid=6b07434c&cb=jyk0&idle=4&qp=y&cap=8&tur=994&qpmade=1512096477150&pws=fresh&isq=1&msgs_recv=1&uid=100023237774992&viewer_uid=100023237774992&sticky_token=125&sticky_pool=atn1c08_chat-proxy&state=active -referer https://www.facebook.com/ -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 - -:path /pull?channel=p_100023237774992&seq=1&partition=-2&clientid=6b07434c&cb=jyk0&idle=4&qp=y&cap=8&tur=994&qpmade=1512096477150&pws=fresh&isq=1&msgs_recv=1&uid=100023237774992&viewer_uid=100023237774992&sticky_token=125&sticky_pool=atn1c08_chat-proxy&state=active -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -accept */* -referer https://www.facebook.com/ -:authority 2-edge-chat.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll -cookie Za=iViLgft -cookie D9j=RfFb6yMK/7vP5RLeYa -:scheme https -:method GET - -:method GET -:scheme https -:authority 2-edge-chat.facebook.com -:path /pull?channel=p_100023237774992&seq=2&partition=-2&clientid=6b07434c&cb=fhdu&idle=4&qp=y&cap=8&pws=fresh&isq=1&msgs_recv=2&uid=100023237774992&viewer_uid=100023237774992&sticky_token=125&sticky_pool=atn1c08_chat-proxy&state=active -referer https://www.facebook.com/ -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 - -:path /ascend_mr_no/?dpr=1 -origin https://www.facebook.com -accept-encoding gzip, deflate, br -accept-language en-US,en;q=0.9 -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 -content-type application/x-www-form-urlencoded -accept */* -referer https://www.facebook.com/ -:authority www.facebook.com -cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n -cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf -cookie F5kbEb=a6pGH+9xS76N138 -cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe -cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn -cookie Si=6 -cookie Za=iViLgft -cookie D9j=RfFb6yMK/7vP5RLeYa -cookie So4bE7q/=K/KhaPOVYxeYbVHL19Ic03j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+kxx763NZ/mXvJKR/*S5OL2HV2/I/YYEll -:scheme https -content-length 19401 -:method POST - diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/qifs/fb-resp.qif b/external/lsquic/src/liblsquic/ls-qpack/test/qifs/fb-resp.qif deleted file mode 100644 index 20311ad..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/qifs/fb-resp.qif +++ /dev/null @@ -1,5982 +0,0 @@ -x-fb-debug SASLTVtJVp+AQ2p1v8FGiCfzyMTFyXtCl4jQU8bx3HFHBGi+S6Zr8HVwyMV1Bd7ZtMUXkBC1tOmBil21liPXLg== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 P0d0dMxGy+82XtBefaBmPA== -date Fri, 01 Dec 2017 02:47:59 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -content-length 2269 -x-xss-protection 0 -expires Fri, 23 Nov 2018 12:17:18 GMT - -x-fb-debug Lggs5E1dq7LzpVIK3dKMBgaeBeCUcnct+a406urJCVcirUe0tLtj0jpXolG+AbHu3VtgwKjsQv3JB1JTPdv7qw== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 e1GPajcAA5W3bvrDUnemRA== -date Fri, 01 Dec 2017 02:47:57 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -content-length 4969 -x-xss-protection 0 -expires Fri, 23 Nov 2018 12:17:18 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug KosdQZTywEhijxkaJaeIGZUNoNzdqdPJok08j01MTQjTIDmCOpXuOAW1nSTiwp1o2levX702JvMmy47oPPHS8A== -x-frame-options DENY -date Fri, 01 Dec 2017 02:47:59 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug ptNrsKHbfbtIWth08olYf7aA1cPYzkz/7GMFkKO1wn6KS0jyDwhOtMdOLmEAZnhxA/VxToSA1nNDhaAc7FJz6A== -x-frame-options DENY -date Fri, 01 Dec 2017 02:47:59 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 xdldqlFln8zS76EEVDcuqQ== -status 200 -content-length 447 -x-xss-protection 0 -x-fb-debug mEO7bfwFStBMwJWfW4pmg2XL25AswjrVlfcfYbxkcS2ssduZmiKoipMH9XwoTGkb+Qnq9bcjwWbwDQzsea/vMQ== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:47:59 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 20:40:03 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug TvOROrieggVKWF52s5yHEA3mQ1zDEJWh8Sj0B+f7xt3PL8qVSeX47LM2CSqeJ2/M53wikG49+DD2aAJG0s0RPg== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:00 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -x-fb-debug a8ET6mB4qBEvQo9//btSC5QKabMxb8MtHXb9aU75HeJCFQVaZ7yfdC9BZT7JXs/fr8uHnYcnnvQEE5AzH4qfSg== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:00 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control public,max-age=86400 -access-control-allow-credentials true -expires Sat, 02 Dec 2017 02:48:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -x-fb-debug QSl55Hc1TFfrfgICO0WEXX1p2DjkXC5w7eAbe7nWYEuuAByf/eplw1TCa5i5haOUJFb/V6tT283E+moKlFxXvw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:00 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control public,max-age=86400 -access-control-allow-credentials true -expires Sat, 02 Dec 2017 02:48:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -x-fb-debug 4J9GGju98yXnIbDBCHsnWWyhyJ7lbZo/orq4ea6BlUBHfu1UvVhg7bQ9dq2tThGzGJXF3Uc3il6C4Fd3rPxSlg== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:00 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control public,max-age=86400 -access-control-allow-credentials true -expires Sat, 02 Dec 2017 02:48:00 GMT - -x-fb-debug iVSC5UoRzQPMHwjjfteCUuZL23G6caJNd3CJVJ1VBSXN0A0voAnUYd/BxqXX2d/q51/cyCNZibCFJvmkfZ7c2A== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 Sa3P5qK+Nv7nge73PlbVnw== -date Fri, 01 Dec 2017 02:47:54 GMT -status 200 -content-type image/gif -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -timing-allow-origin * -content-length 1414 -x-xss-protection 0 -expires Sun, 18 Nov 2018 20:51:24 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug IJJryxSHYHK02N5zoW/V4t6vGZUfS5wp1zyCZ2c7AvVlRZ25ZZtmYWAUqjKvlL519kc2r9QeYf6x7ILS61yjAQ== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:00 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -content-encoding br -x-content-type-options nosniff -content-md5 pQpUbVkwSR6byHFL/7b8mg== -status 200 -content-length 2203 -x-xss-protection 0 -x-fb-debug m76LhRYx7f58ob4bktemQtlvg8+M1ZyhAx7Qz8eN1CKYVE1MUC/yHSby13Bm34Xj9pNsES6xHQEv/YmXEftDXw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:00 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 23:02:23 GMT - -x-fb-debug 40OavfgvR11mfIGZzV/fvZTP90MhAEH0zHvea72NjcWQvD/1AnMvEUYzzxcDxZbToU6hYqcsKrIzbDGUPlkI+A== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 409MdgQ0fyFgmOuNysvTVg== -date Fri, 01 Dec 2017 02:47:42 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -content-length 5189 -x-xss-protection 0 -expires Fri, 23 Nov 2018 12:17:06 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug chrBBz4SEsGv1ZrufHBAed2St1EsZdm+cib6eyFRehfDFnzH1c1S5f7LQv/285c/4iYx/8I7qKhOEddZu0mw1Q== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:00 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 3/GPqjBaqhuenuhKPMcWB/lN3HyphJxaSt62dSaE6J9MTbsQcCiOn74quVCB3sklBW64w2w1CxMmmrXS/8OJ0A== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:04 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug wU4xeFXoTvB3fz0bx2X0xWazFtL/F3YoeVYJYDQKNsbGxw2ZWte7ucnB8hyQPofyRdGFEjFzwN7J5s3YN3+b5g== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:09 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -x-fb-debug xnMJ/dh5lpylLnD1J8ahro3au8Krhu0Qvwr7plcpt9I7Mpg+q8T+dcWvuYDrl1QT1OShxUTgnVkAL5Pgtiso6w== -content-encoding gzip -vary Origin -vary Accept-Encoding -status 200 -date Fri, 01 Dec 2017 02:48:09 GMT -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/html; charset=UTF-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -access-control-allow-credentials true -set-cookie oNcnS=gpojSOS; 5X9e44v=0mTWPDQ8REZIxx5UsR6m77F2nLLDx; KAhjk6h=qwU+4DYhv*7; gAdd=f; 4O66Yd=zifBOQBN5pG/H -content-length 341 - -content-security-policy frame-ancestors 'self'; -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug lVC6OYTyhZd8fitFRTviZIIyNQHSdjdA1iAbCPBw6VdJ0DZvTpDDbEaMryxyoVDgwS9G6HDo5uPatqo2FNrcsw== -date Fri, 01 Dec 2017 02:48:09 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/html; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 8YsseCeaO76dz82KH/3OQw== -status 200 -content-length 4559 -x-xss-protection 0 -x-fb-debug DIZNq+5PMTDoSqZobDpWGk/qY97FvNkRjxK3ezlYd8CVpOOG9IVeabusQW5I4cjro2y9nvZtdw8tYVq65QuDjw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:54:46 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 GLLPFim1kqAn/ld55Vtg8g== -status 200 -content-length 3727 -x-xss-protection 0 -x-fb-debug WDGyD3lG2B1RDnrEtu1VfNsQu5d5SDBuJuNqGWNpHDXf4JUGLsv5PFOuIOct7+I/e+Bst/l+eqhGzkm6tlvjvA== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 23:01:25 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 3N5sn/pluRe+kZxjcR6Ibw== -status 200 -content-length 9375 -x-xss-protection 0 -x-fb-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:54:38 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 b5vUN/sgd315IdDwXDUejw== -status 200 -content-length 7295 -x-xss-protection 0 -x-fb-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Sat, 01 Dec 2018 00:00:37 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 ch5t0W/qVcr8tgf9lHrm6g== -status 200 -content-length 4294 -x-xss-protection 0 -x-fb-debug gINc0A5Ml/TSiyh3e5F/jai6YIYOktCYw+ejxBPpLS7V0YC0PnDXPs7bmPqg+zZj8+e1r3bNOSfa2XiKvDkP+g== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:44:43 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 Lr3llzp8MBSCZviFiNjCFA== -status 200 -content-length 13834 -x-xss-protection 0 -x-fb-debug LdlmyGrbdzwX3QUNWK7h9sr6vcH7X0DjSu1+PrhcjJLoNQikEEv2Jh6X0Zo/i0tw+mwZv9Ir4cq1pJEnVEcVnw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 20:56:43 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 6H33LVIrHNhmJguTYOcJEg== -status 200 -content-length 11360 -x-xss-protection 0 -x-fb-debug ToJIaRvJ9nrellzwPpqq82nJcFBoJAPTr5622w7O6R7JgbvLbL9WuAqgfRh/csaYPznd+1o0vAaBtdrW9ZD30Q== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Sat, 01 Dec 2018 00:14:30 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 miqufolG7gyYWC1Nm0fXSw== -status 200 -content-length 3115 -x-xss-protection 0 -x-fb-debug zdwR2jYpEz9TtubgPOlmOSJO1ZER89b7nm7SbiHHc7q7SdovWtQRWKSeX+swwajutCA0LfLunpSP0es/ewL6nw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:37:52 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -content-encoding br -x-content-type-options nosniff -content-md5 FWVLk47e/1NAPOLzKy9mZQ== -status 200 -content-length 9648 -x-xss-protection 0 -x-fb-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:40:41 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -content-encoding br -x-content-type-options nosniff -content-md5 V2Rmpzgc121NGDtYMM8xZw== -status 200 -content-length 27484 -x-xss-protection 0 -x-fb-debug X0KfGOd7zGSXTEAE0avvVqm56bFnBHduvLoCVTzyC2ax5Z85/wjJDHim2vUuBRqBjjhdv2pnL8JjpfKtiR1jSA== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 20:40:16 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 ZCpLR18eFVGl+wlMmr5W8Q== -status 200 -content-length 33792 -x-xss-protection 0 -x-fb-debug RGZm+n2MS9JePF1w9W2ICVBiEwcjY9OX+A9aWzeUo2omCnnWp7dj4nGTiwPtSF61Rq4gRV7fCwq2vhbK/vahhQ== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 23:01:10 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 XdnKwn0shujNUYDDAyjffw== -status 200 -content-length 11980 -x-xss-protection 0 -x-fb-debug OuaGOMU1KwUx/Ex//TRoNPL06S9nVTeTSDyuSNY3sefgNbJaXbf8up2zNF1HI6sVgh/oHjNdpNLy6rj7bm3cNA== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:28:13 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 GVRGBE6tqdWWzWbk78Fxvg== -status 200 -content-length 10062 -x-xss-protection 0 -x-fb-debug MR+rHN55opINt4Y19y5GgTjlPjNVRpdKqMXehDtOqh6hcNE1zNHi+7J2Oe9qkma00plaiQOxdn4vvlgPM+nZrQ== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:54:38 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 CwKxN/dW03qpAvjXFgY+wg== -status 200 -content-length 2928 -x-xss-protection 0 -x-fb-debug TQ2kO1lJKcLy2YWu6fKnPhoSHHuWZumqqF5u9Ltx4npSchUPPfx1BDcetQ+pAIgvpfCKAQpobtwOp3dZjRgNtw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:16:30 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 j5TyY0UnjhfUzjVX2mSjmg== -status 200 -content-length 10320 -x-xss-protection 0 -x-fb-debug ZM/0J6kaZjm4G0z7WoGvn90JGCnSgh5rjamgOuV1hzSEHy7j5hxlgp/pTaSmL3YaDZBBD1hQaYRiNIGHO5Hnsg== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:58:41 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -content-encoding br -x-content-type-options nosniff -content-md5 hpNuuubgPaKdlqsCKTL5Jg== -status 200 -content-length 19798 -x-xss-protection 0 -x-fb-debug BImBNjsL7v4p4LqYNDHRVSrQGgu5C/xDjtk9ZYafHIsbt/6klWR/Si/9j6CCvoZP2NuJ60+Q3M3zSldRO/RQaQ== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:16:47 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug mkuTkeR6tImD79ZzK5oJpf1AsHI4i54PdVIEe/kcG0tORygDBaC2k3igFhgw5rmn4YXROaHK8PEmRBqJKuTMSQ== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:10 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug kRCyQegaq/Gqcyvb6pcbXivLoehRbv3lRgEewk/VTSJ7FP/efVNzdzFLYikTgjz+GLeayqPDRK9EAzAVNYaOjw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:10 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug SUGs1jQXVY8psVrTPnd9PcQy5gDB+MU+CL/gXaLGmpy/Goy580zMG2WVuvFUrAeJYO7KkbiCcG6dtSgLd8JvAA== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:10 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -x-fb-debug wkdZu+E1GYNYZCdr/DMkGZt3sb0tvJ9ZfgiBweAyl9UhuW5YB0ebUhsQj2xeGlEUvWjf15AhzOsATVd+BnHXIQ== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 i9OGnguZlXf7E7rhFiUbqA== -date Fri, 01 Dec 2017 02:48:10 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -timing-allow-origin * -content-length 10695 -x-xss-protection 0 -expires Mon, 26 Nov 2018 22:57:53 GMT - -strict-transport-security max-age=15552000; preload -x-content-type-options nosniff -content-md5 1VRwrJ2k5fXykH7nm0Guhw== -status 200 -edge-control cache-maxage=86400s -content-length 1173 -x-xss-protection 0 -x-fb-debug e2XB4MQd6UbCpZGC79bENZbmWBE+t+NfI1xvndjJ/TDxZHJ/vc1v7lEmPHFcRUnllmY9nv1QFrwSr5fYGQCPAA== -date Thu, 30 Nov 2017 07:44:03 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -content-type image/png -access-control-allow-origin * -cache-control public,max-age=86400 -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 01 Dec 2017 07:44:03 GMT - -x-fb-debug 1odBdxCcB2hCiTjxdoz/DUfQdbtWewW/PXS9Fb/TMyF2Vno6sSz+VkM0qjnDF60t+YECJWi/CIXiBOnnIunFFg== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 aAGL4zVC4U+rUzi+GrKcZQ== -date Fri, 01 Dec 2017 02:48:10 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -timing-allow-origin * -content-length 365 -x-xss-protection 0 -expires Sat, 01 Dec 2018 00:03:41 GMT - -x-fb-debug jpmcQoRI03y7AryAZCkc2teYNSUwJzeP9lL4LCFJcPGpdUUIFW+s/mWOBp62zeHQz2lqicwHopjJnsvjAHjGgQ== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 OEuaMb5I+K5EppmLlMUgyw== -date Fri, 01 Dec 2017 02:48:10 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -content-length 343 -x-xss-protection 0 -expires Sat, 10 Nov 2018 21:27:37 GMT - -x-fb-debug 2S9oefU+qABP4IYODnwzZYp+tUwluhVXrY8FIT6Im567U3y77CaFYK4RF+MKWtQOW4kgKGk/jPtdNQbUlMR2aw== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 yDsFax6LZEwnoTGKzzBlpw== -date Fri, 01 Dec 2017 02:48:10 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -timing-allow-origin * -content-length 178 -x-xss-protection 0 -expires Sun, 18 Nov 2018 16:12:57 GMT - -x-fb-debug D4jNiB0khDl+GsAZHc6/awXkwzBK8wAcEBc7zAUm8PhSy2OB3914CwEGmWv82Vc6xM/2gCN6U814EM4Mrn0NJw== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 /otskAYDIWUxahDb2l3iMw== -date Fri, 01 Dec 2017 02:48:10 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -timing-allow-origin * -content-length 306 -x-xss-protection 0 -expires Thu, 22 Nov 2018 07:16:30 GMT - -x-fb-debug Gzj3nTalJTpUrAKk99whIFyhC+ZeNJEHqM1innIgc+k9BTeAYWeW3YWN91XUw6jsdvWQ//PVxRFoAbgH0xhfiw== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 rAdlQ1LbnW1QjQqWUwF39A== -date Fri, 01 Dec 2017 02:48:10 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -content-length 292 -x-xss-protection 0 -expires Thu, 22 Nov 2018 07:15:55 GMT - -x-fb-debug Z6uygUU8dCe3t7kuXUZQ17hu+1qttHRZd2ZJCMWa882YOUsiqdV20ukSGIoOsCVM0D7o+7SW3eg4zYGDm18IUg== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 2kBldm4nnJvd/9LvBMD/Lg== -date Fri, 01 Dec 2017 02:48:10 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -timing-allow-origin * -content-length 205 -x-xss-protection 0 -expires Tue, 27 Nov 2018 05:25:05 GMT - -x-fb-debug OTfIFeJ6Vp6Q9tkVjxqdy5Qe1w3GFDEBpiL2EB9TXkJmRiYJ3PXYX4Ksm4Phq7EBSGaQfHeK0xCPSnCirMSvAQ== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 /KS74gUMZ8HPciHDq8I4Iw== -date Fri, 01 Dec 2017 02:48:10 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -content-length 237 -x-xss-protection 0 -expires Thu, 22 Nov 2018 07:15:55 GMT - -x-fb-debug IuU4lC4Bf1/J727PkKcW0TupujkIMcjKxTdUqtl+ZifCT6heilSF4VNJlUPJAyqFTbjLHlIdvrkuT6mdoOjJsQ== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 rYzdy/CRrpzpKKyDMTB5Sw== -date Fri, 01 Dec 2017 02:48:10 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -timing-allow-origin * -content-length 2668 -x-xss-protection 0 -expires Sat, 24 Nov 2018 04:15:05 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Tue, 10 Oct 2017 04:05:57 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 21105 -expires Mon, 27 Nov 2017 07:50:35 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Tue, 17 Oct 2017 22:14:24 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 22687 -expires Fri, 24 Nov 2017 21:27:57 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Mon, 20 Nov 2017 13:34:16 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 30382 -expires Fri, 15 Dec 2017 02:14:52 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Thu, 14 Sep 2017 20:21:56 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 14176 -expires Wed, 06 Dec 2017 08:54:27 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Thu, 16 Nov 2017 17:13:14 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 15152 -expires Sun, 03 Dec 2017 01:36:02 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Sat, 14 Oct 2017 13:41:02 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 19757 -expires Wed, 22 Nov 2017 19:14:01 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Fri, 17 Nov 2017 21:37:58 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 18041 -expires Fri, 01 Dec 2017 21:55:27 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Thu, 02 Nov 2017 22:03:18 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 17665 -expires Thu, 14 Dec 2017 20:15:25 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Wed, 01 Nov 2017 16:34:01 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 16062 -expires Mon, 04 Dec 2017 05:06:50 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Sun, 29 Oct 2017 22:18:29 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 23087 -expires Mon, 27 Nov 2017 07:12:38 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Tue, 17 Oct 2017 20:44:41 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 31705 -expires Wed, 06 Dec 2017 07:21:01 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Wed, 15 Nov 2017 01:33:33 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 18120 -expires Wed, 29 Nov 2017 01:45:11 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Mon, 14 Aug 2017 22:49:55 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 14094 -expires Tue, 21 Nov 2017 09:44:39 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Tue, 28 Nov 2017 21:59:23 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 31910 -expires Tue, 12 Dec 2017 21:59:32 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Mon, 30 Oct 2017 19:18:15 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 7407 -expires Wed, 06 Dec 2017 12:33:00 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Sat, 11 Nov 2017 00:11:21 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 10103 -expires Wed, 06 Dec 2017 16:56:34 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Thu, 09 Nov 2017 10:11:33 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 9731 -expires Thu, 23 Nov 2017 18:30:34 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Wed, 22 Nov 2017 00:08:24 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 6982 -expires Wed, 06 Dec 2017 08:03:28 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Thu, 30 Nov 2017 18:13:26 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 18906 -expires Thu, 14 Dec 2017 18:14:26 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Fri, 01 Dec 2017 01:17:05 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 14295 -expires Fri, 15 Dec 2017 01:17:30 GMT - -date Fri, 01 Dec 2017 02:48:11 GMT -last-modified Mon, 16 Oct 2017 12:48:31 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 9144 -expires Wed, 13 Dec 2017 00:30:04 GMT - -x-fb-debug UclWhesg0zkbSvbdWdzbSgwvuxwHhdYdv1KxJXSGpdTe+b+MkLG/P3r7cc5cQW1GDH2P0Q0PE2NjcKNRtACwMw== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 Suq9hPdRy1h3AUHG8A+u6g== -date Fri, 01 Dec 2017 02:48:11 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -content-length 6898 -x-xss-protection 0 -expires Fri, 23 Nov 2018 12:17:12 GMT - -x-fb-debug abP3zeasO2mLS8i9zOhtYhotcrbh1TGId94OFJlc8p04m4ySyehIHPFAt2npARTREGt1qY6t9JUIhREEid9qWQ== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 qbS3J+l81+aYkTde3J73Hw== -date Fri, 01 Dec 2017 02:48:11 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -timing-allow-origin * -content-length 2108 -x-xss-protection 0 -expires Mon, 26 Nov 2018 22:57:56 GMT - -x-fb-debug lgquSVMBTVSGrB+a6JPVy0foXmN38vYoIF3631Kl53msBWBXp74UHLdYdGhvRLweaxBXEPWUqhmcb10d+GM3XA== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 aHgJp6IEm6tq2dAoAm23tw== -date Fri, 01 Dec 2017 02:48:11 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -timing-allow-origin * -content-length 851 -x-xss-protection 0 -expires Thu, 22 Nov 2018 07:17:44 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 I4g49yWUVm92l2Ht21aO6Q== -status 200 -content-length 741 -x-xss-protection 0 -x-fb-debug i01I8lFh4FinQMpRDovii+lwSptMoKN4Xt3aP41os020+jBkBcOECNAtFfjv2P85TTlMTnlM3BZDlQua1wa39g== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:11 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:31:38 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug dbB2IkIrVRUAfS1PVGsbZF4w3zGCiIvWefwaVnzd3c6v4HzmnqkqOwCJdpNBhRH131pDszBP07t5zePbfprY1Q== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:11 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 m0y3PkO3SpJQhvvw6CdJ1w== -status 200 -content-length 4065 -x-xss-protection 0 -x-fb-debug wimV44qs1JLjex37mZjNXwEiFP2C6tTEz/Bzm/9N/uk4jLhGBsvpRN4kIhEXPKEhhT1jqST3fu7CCDHnaruarQ== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:11 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 21:18:12 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 AVo/NKwEE+aE6kd14kT4LA== -status 200 -content-length 2084 -x-xss-protection 0 -x-fb-debug pikQ5ppTqIictrwIvdl2Qk6xbFcE9bPc4Z5ohK/rfc4qKnwbgweERUZlqfSb5S3wb4P6zUymCloWDaFoSveX8g== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:11 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Thu, 29 Nov 2018 04:05:16 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 fkU/RbZeOahtbH6TD3swSg== -status 200 -content-length 726 -x-xss-protection 0 -x-fb-debug vlySAYwP80vWQwCf3dAcUg1d8vckh+ib+/bnK8Kn79SGDBsoWWEtedSpacOaHyww0V7/Le8GBCmruXAqaTtIXA== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:11 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 20:03:56 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 9SMxJJWUS/mH7v8aS5amn3RGUmMcHXgxT7/GhUohYTS26mbSGoNnIaV22B91jjWh4XqlbW5dSpQVGxUqHF50lw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:19 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy frame-ancestors 'self'; -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 0gVna42ILP7RDgk+shTzSEkzfbJTXu8h6tHuGl2h2gjzEuNtfTdI3ldafd/mVhV0Ysj7BcVNyMbPXOIi83oqCA== -date Fri, 01 Dec 2017 02:48:19 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/html; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -set-cookie oNcnS=gpojSOS; 5X9e44v=0mTWPDQ8REZIxx5UsR6m77F2nLLDx; KAhjk6h=qwU+4DYhv07; gAdd=f; 4O66Yd=zifBOQBN5pG/H -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 j8T0XBmPlo08jOXtTJ3MEw== -status 200 -content-length 198 -x-xss-protection 0 -x-fb-debug f4/9IxVq4HZYZ8dV9P6xeLypQNS2qEx/kNF3NoX9D8Z0nshFfF6M7lqeabFqQD5b50R/Iekbf9xeyr56aEUi7g== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Sat, 24 Nov 2018 12:25:27 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 b5vUN/sgd315IdDwXDUejw== -status 200 -content-length 7295 -x-xss-protection 0 -x-fb-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Sat, 01 Dec 2018 00:00:37 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 3N5sn/pluRe+kZxjcR6Ibw== -status 200 -content-length 9375 -x-xss-protection 0 -x-fb-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:54:38 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 i4f5LnfeTwjEpPYLvEw9sg== -status 200 -content-length 3785 -x-xss-protection 0 -x-fb-debug HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 20:34:54 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 fd9ZgENjjqTO/InJ/yzr9A== -status 200 -content-length 18878 -x-xss-protection 0 -x-fb-debug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:54:47 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 fqrTaPewZrp5VEjPn8eGRg== -status 200 -content-length 1284 -x-xss-protection 0 -x-fb-debug ffAA1BPrLNMci6PPgAnjdBQxr23MFKOlcYD7Hd8+QaYdQzt3RDz7rwZWLtl/ff4vvIJcOQ0KkgerVJHkxxcE+A== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 20:06:32 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 SqewXybmJVo1v4gA0JLGBQ== -status 200 -content-length 738 -x-xss-protection 0 -x-fb-debug KC/Mv8BSpLzgKNnb1cJgXL8dPdim8GGQRbNyFfUpswJaoxnMQeHpRWlZwFceTKDlmlF+3I1PWGIgOE9iug58Qw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:44:41 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 sZNRmnBid8LCsjRTjIEFyg== -status 200 -content-length 6745 -x-xss-protection 0 -x-fb-debug a155LmrZwBw3r/aMF42emoWHIgc/3y8J6ALVXYdQ7H8vUuz1/i1dvM0G4i1MutN2PnGhQoHaxJ36iCIkr5peiQ== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Thu, 29 Nov 2018 21:37:18 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 mgTL4W9gmblv6l6wXzZodA== -status 200 -content-length 6081 -x-xss-protection 0 -x-fb-debug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Thu, 29 Nov 2018 13:44:43 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -content-encoding br -x-content-type-options nosniff -content-md5 FWVLk47e/1NAPOLzKy9mZQ== -status 200 -content-length 9648 -x-xss-protection 0 -x-fb-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:40:41 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm;report-uri https://www.facebook.com/csp.php -content-encoding br -x-content-type-options nosniff -content-md5 CdqtZjHkFWKj84Z+4+xIEg== -status 200 -content-length 2577 -x-xss-protection 0 -x-fb-debug 4qp1PxAGHtbHXLi9rxxdHyNY/8PMkrRxemDwVRlBtTf5veUQdm+NT/ANeAtBnkrqVeEa/YAFwjR2rnGTYHLnHw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 20:28:17 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 9+8et0zXoZnznee+5dOpLg== -status 200 -content-length 3091 -x-xss-protection 0 -x-fb-debug 1W0e0JxqlhBqUfhhsZScKW+48ERX/MbDzRx1CrLGyoB3PQR87HvCU1tXurEDpq9MxYtpZtH8nZHhZUliTWX9/Q== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:30:49 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 U89oUM0w4qxDV5VnRrMHfQ== -status 200 -content-length 17087 -x-xss-protection 0 -x-fb-debug 3hIM02yGLUEVYmBtXw7ckOZdTFjZlDVy71lqb79ycltwQUOiGU27m0HJTjseI5O9aQgJhz0cyZFD440wNkJ1hg== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:23:57 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 63uZSWh0PAGVT5ELQlmxDA== -status 200 -content-length 1308 -x-xss-protection 0 -x-fb-debug RqCyrQLJGw/D0xpLqWnbzLkRPUbfwsbwfo84PPL8UED96IA/gBJzDEf6yj2+HHIdQp4xPXpSRuNZDI2H/CvkxQ== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 20:01:34 GMT - -x-fb-debug ARChj0NUebWygPU0nCoGIW//E1naOtcmUw17w+RMEyLdGcIfa62y4DtKGsmphLZFvp0ao5tg1e1UH82enSyOww== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 QfBfkVWIvbQAgYByciJpJw== -date Fri, 01 Dec 2017 02:47:55 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -timing-allow-origin * -content-length 1176 -x-xss-protection 0 -expires Mon, 26 Nov 2018 12:37:33 GMT - -x-fb-debug ivI86tTrFwX9U5sLjaxj7fvac7JDJwsEi9Eja2Z4Oy4C7nmZIF2IkB8o8XqfevLcTTOzzEMMwFDwypn5k6bIXw== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 IHh5jFrVTE8LJvIHfLuDPA== -date Fri, 01 Dec 2017 02:48:20 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -timing-allow-origin * -content-length 556 -x-xss-protection 0 -expires Thu, 22 Nov 2018 12:26:14 GMT - -x-fb-debug ZwUiJgvchdZhpDH+73u0Fw+G6hyUoqJHmUotkSBkDnzNjGiL0mAn7qTX5J46rH70Lo1AsDbhfk3JwbWmWTwV5w== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 GKqP6Z59i1aSEGcB576sOw== -date Fri, 01 Dec 2017 02:48:20 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -content-length 5488 -x-xss-protection 0 -expires Fri, 23 Nov 2018 12:17:06 GMT - -date Fri, 01 Dec 2017 02:48:20 GMT -last-modified Tue, 10 Oct 2017 04:05:57 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 59308 -expires Wed, 06 Dec 2017 11:00:57 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug bMcE+8Z/jUikxlpX0iz9TFqnf5QVShzAXQoprrbxgHYC5ZGhZDIINLMlIeZEY6QwKjH1oEqfOzC36WG4mjuX7Q== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:20 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -x-fb-debug WVz6Y2MrSiV1cDtEzzSX+eY8rw7ZosNRZER/iJKgrqXplP4gjrRV9RmMxu/RCpkyHjYn9jGkggKJ6AKwOG63Iw== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 8IPH6Tlp2EPXzjh2WtkM0w== -date Fri, 01 Dec 2017 02:48:20 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -timing-allow-origin * -content-length 4844 -x-xss-protection 0 -expires Thu, 22 Nov 2018 07:15:56 GMT - -date Fri, 01 Dec 2017 02:48:20 GMT -last-modified Tue, 01 Jan 2008 00:00:00 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1348 -expires Wed, 06 Dec 2017 10:43:21 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm;report-uri https://www.facebook.com/csp.php -x-content-type-options nosniff -status 200 -x-fb-config-version-olb-prod 202 -vary Origin -content-length 4904 -x-xss-protection 0 -pragma public -x-fb-debug HunPYuqy69WzGGSQH0RYo+XndQiTMqACderbXYV/Hd6VXq0oSQhZBlV1fY0tbHmnCKZPaQ5ffj9xfVEyPXA9aw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:20 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=31536000; preload; includeSubDomains -content-type image/png -access-control-allow-origin * -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control public, max-age=86400 -access-control-allow-credentials true -timing-allow-origin * -access-control-allow-method OPTIONS -expires Tue, 14 Nov 2017 17:33:13 +0000 - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 YZP/0rJ9pw2vE+OCDm8w5Q== -status 200 -content-length 2031 -x-xss-protection 0 -x-fb-debug NNF+j6+XOFrfdhzYpIcXN8eoCwGFoh5LQhEtfDyAVBLtSL4n56dyb+kUyPAOLL4HokctaJ9bHKv6JsDRAvFzpQ== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:54:56 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 2nocW+0AmN98W+9vj2rtAA== -status 200 -content-length 1755 -x-xss-protection 0 -x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:27:38 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 V/4SheZbR98CwCYd4h3cAg== -status 200 -content-length 2174 -x-xss-protection 0 -x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:21 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 21:03:33 GMT - -x-fb-debug /ENpputLKNa/2mZiu6JTE+h6mzrx8TmybF+DsyGWGtA7Pr1/Nz9w87TOZ/bXeGIN/nSpsf8Vp73Vj/UbdMJwow== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 5JlE2ZDOPpF6hew83L0Xyw== -date Fri, 01 Dec 2017 02:48:20 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -content-length 6645 -x-xss-protection 0 -expires Fri, 23 Nov 2018 12:17:12 GMT - -x-fb-debug Os2JJOoXBZqJj78nRJJPGsd36A2+yIhTGyueb3jZakVmvYckOoqMBatPDrEtiquf+QLqhyFhY9tAUaiEU+rMAw== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 C05mvm8+C03B8R2M8wXU6g== -date Fri, 01 Dec 2017 02:48:20 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -timing-allow-origin * -content-length 102 -x-xss-protection 0 -expires Sat, 10 Nov 2018 21:27:14 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Wed, 06 Sep 2017 21:55:05 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1196 -expires Wed, 06 Dec 2017 13:32:44 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Thu, 30 Nov 2017 21:59:43 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1329 -expires Thu, 14 Dec 2017 22:01:20 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Thu, 21 Sep 2017 22:04:42 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1446 -expires Sun, 26 Nov 2017 16:35:57 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Mon, 13 Aug 2012 00:00:00 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 5176 -expires Wed, 06 Dec 2017 10:35:29 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Thu, 27 Jul 2017 15:41:54 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 49345 -expires Wed, 06 Dec 2017 14:02:03 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Tue, 01 Jan 2008 00:00:00 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 3742 -expires Wed, 06 Dec 2017 07:23:17 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Thu, 27 Jul 2017 15:41:54 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 29919 -expires Wed, 06 Dec 2017 16:56:20 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Sun, 26 Nov 2017 20:59:49 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -x-fb-edge-debug qV2cgVRRpGEnTN92wP3bEefpIlNqOBDmaYDo0o9w9T9AtQphKbXLleYJZI_vyWjKt4bko2I1lo8TCezyPLIohA -timing-allow-origin * -content-length 21135 -expires Fri, 15 Dec 2017 02:48:21 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Thu, 30 Nov 2017 15:33:29 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 8892 -expires Thu, 14 Dec 2017 21:49:28 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Thu, 30 Nov 2017 19:06:48 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 12724 -expires Thu, 14 Dec 2017 19:10:30 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Mon, 21 Aug 2017 00:14:21 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 13189 -expires Thu, 14 Dec 2017 19:10:30 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Wed, 06 Sep 2017 21:55:05 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1048 -expires Wed, 06 Dec 2017 12:06:56 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Thu, 30 Nov 2017 21:59:43 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1118 -expires Thu, 14 Dec 2017 22:01:20 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Thu, 21 Sep 2017 22:04:42 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1178 -expires Sat, 09 Dec 2017 03:11:47 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Fri, 20 Oct 2017 12:36:36 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1134 -expires Wed, 06 Dec 2017 08:10:57 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Sun, 12 Nov 2017 02:14:13 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1248 -expires Wed, 06 Dec 2017 16:04:04 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Thu, 30 Nov 2017 02:19:51 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1273 -expires Thu, 14 Dec 2017 02:20:59 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Thu, 04 Dec 2014 22:01:42 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1152 -expires Tue, 21 Nov 2017 16:33:08 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Tue, 01 Jan 2008 00:00:00 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1066 -expires Thu, 16 Nov 2017 01:54:04 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Tue, 14 Nov 2017 11:42:42 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1110 -expires Wed, 06 Dec 2017 09:30:22 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Fri, 01 Jan 2016 19:53:47 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1150 -expires Wed, 06 Dec 2017 11:14:35 GMT - -x-fb-debug fVIW99YerkUzwlc7SROvz5XsM1XbNmRMGijJJ13tYsvnMaY84LnQ1ZA7+apDieuNVB46ZnUnVHMhZ76uwLgrhg== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 RVFApVCDqLOU4DKrH5xHcg== -date Fri, 01 Dec 2017 02:48:21 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -timing-allow-origin * -content-length 281 -x-xss-protection 0 -expires Sat, 10 Nov 2018 18:13:58 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug +R3NCXIBasGiGQdX/uKvTgwIShwCbAlh0vnBu05LFeHCTJhBA1YqB3QzG3LxYcUEHJJqVaY58p02qO1yVeVxsw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:21 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 bV/DKwx1FIfSczGr8wmjTA== -status 200 -content-length 19285 -x-xss-protection 0 -x-fb-debug fbuGUlmmttu8N2glWUmqgrF9qAJghz+TR9dvFY1UxQUeWfBVTg5g0EKXcY7zJhKiVlgAm+yxP2X5A/Dqe3G+EA== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:21 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 21:14:20 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -content-encoding br -x-content-type-options nosniff -content-md5 OBHD6lmfEEisuhcWKyESIw== -status 200 -content-length 19037 -x-xss-protection 0 -x-fb-debug drj2Ft2eAD7NQ6lmjscA+rt9I3/b1iHnGgaxytUir51DI4ILBqGwUA2paJjEA2pvOVn4gRvl1zY6CgGTl4fLXg== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:21 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 13:56:42 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 6O43UwtSHtYxrHYf4JWpTw== -status 200 -content-length 272 -x-xss-protection 0 -x-fb-debug FGR0zi+JxHm7My4h2/7+wcFU4LP1hHO3PFzJKhZjk6dDiTLxykDa6JPsIDNvXtlWfTE9qPu1r1ogOTgfVaLitA== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:21 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 21:29:05 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 LPtJbeThMXUens/Nm5VZeQ== -status 200 -content-length 39529 -x-xss-protection 0 -x-fb-debug bAWClI/0uVFeLXq6GIy1TXonNhgjjE+WwKoSZsSxQkEIlL665l8U/wmyKTGtTkrbwVUzymlgRhgHP6l/sZ89TA== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:21 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:16:42 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -content-encoding br -x-content-type-options nosniff -content-md5 UTnFKQ/1xPYzMBTzlDFnQg== -status 200 -content-length 36628 -x-xss-protection 0 -x-fb-debug XwHAYpS/JLC309mN4e1ZrMvAYSnhufav6nr5ltJ6ScnYGAS1huRaIMhFGS+2BwCQ5lyNrVZt8RfNfy5Y2CANQQ== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:21 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:40:53 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 wvmmFr+hyE8nerTr2rsQvw== -status 200 -content-length 1966 -x-xss-protection 0 -x-fb-debug gJE2qAHfDDEx/K+nICc73NSl6EqnW0SxxQrHBCFxwsbg2kuQYyFj3MQv8EfLjq88ZmmyYHY93J9ur/WLZWopEQ== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:21 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 21:47:10 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -content-encoding br -x-content-type-options nosniff -content-md5 JZM7FEcMrVikARx2gpFWUw== -status 200 -content-length 52237 -x-xss-protection 0 -x-fb-debug fc9A8OFybDetesoi0CY7xjJ/276Si33Xehez93z8H63FVgo7DqHWHSvfQMrcMgsM3swgR9cRo89ZLhE+FBbNJA== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:21 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 20:50:54 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 D6t0N9WzwW0eLRo10Yq6ng== -status 200 -content-length 33446 -x-xss-protection 0 -x-fb-debug h6xjG80emSAtsK+erM7liY8pREgTA0vGwYMIZCjP9n6GVcN7vX0eh4t4xndGqYXPP5ih8NyaQcmTn8+dQtlhyw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:21 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 20:50:57 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 1AoLUq6toOaueD0vKkvMAA== -status 200 -content-length 3012 -x-xss-protection 0 -x-fb-debug Ow7Yvuq4jUPfhFbMusIFf7YeUZpBcdrSzO/FVUTZhqEWPOHYOJeYbHRAiBFmmPM1POVX8/Ixm2fpQtDVx2rUQA== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:21 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 20:15:36 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 G6Y6kaO1Adi/IBwW11Elug== -status 200 -content-length 3226 -x-xss-protection 0 -x-fb-debug m2oB/65sg2vFQOIebkxGuLC4OOPg2oUNvCSp7WZN3OGVbF19LVyoTBPcBkvZXOoewtdThbXo+FkeBaKeAPgHSQ== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:21 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:32:07 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Tue, 07 Nov 2017 19:25:49 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 2192 -expires Wed, 06 Dec 2017 11:00:58 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Wed, 04 Oct 2017 18:27:15 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 2200 -expires Wed, 06 Dec 2017 12:50:41 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Mon, 23 Oct 2017 14:19:14 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1468 -expires Wed, 06 Dec 2017 10:03:40 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Wed, 18 Oct 2017 17:19:21 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1997 -expires Mon, 20 Nov 2017 10:27:33 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Wed, 20 Sep 2017 12:43:30 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 2317 -expires Wed, 06 Dec 2017 11:07:13 GMT - -date Fri, 01 Dec 2017 02:48:21 GMT -last-modified Tue, 19 Sep 2017 18:11:55 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 2397 -expires Wed, 06 Dec 2017 11:07:13 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug Cnh9p8D5Li6w23D82Jd7RsrvreYSXZEQFE29Y9Nocj7iJPiMp31vPv/WZZdRfE6AhgaCQQNb4vWYjLchZzPCug== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:21 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 9VKUrgNslD/nY0eEgp7tZZdRCfrJEY1FkHDje4EmpYkrC2pvW1uvmwGOoPskTvUh3bW+HDmwZYMLZM7hY0gMhw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:21 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug aauRok2xnDPv3VQSul9bMO0nErR48gOCdAk3xyg8vKkSz2RBIEQlMGcnB85NP8GVA0+i76LCjKBu6aWEFxFt9A== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:21 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug X/tm4dxchrSM76dISf4rVU6n4RLg6R/bt79D245UBcPTSAHkuaLb0EqyaK5CGnVWVk42+bIKLymZ1XiauXdXxA== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:21 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug RKPmsAWm1LtFpbD4Qj2ucPdH6i8nI7lLgcorK6l44F9hPN8qd4THZEgj8Tu9/JFoPrMJ2hqPlcFfLb6FgRnmFQ== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:21 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug fTUQ/Z5rF8Mye/5u0N8qOfqBaZqt9Ldfc/0uCcHi9NPvscv1XYi3DKCfdi4Imcw1RqYGlciZe3vAeg2ko3hGYQ== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:21 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug yqWCZpVJmrj1JJlW4rgUKR/fNz/y7Cr3i44mszTHCHWPdt+io4AcLv6pCieI9/O8xkQVVohG9fkYQ9bpkVC59Q== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:21 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -x-fb-debug C5M3rAUlWTo+Nh2NEbNsOrcs3a7fQJAIZeaHzaZdKXUHzTmldfJBIjGjCwFkJ+V8wQrbwKiECC1XoG5whuC7Bw== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 bvfxjp/FBtYcD+rWTyphIQ== -date Fri, 01 Dec 2017 02:48:21 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -timing-allow-origin * -content-length 7560 -x-xss-protection 0 -expires Mon, 26 Nov 2018 22:58:44 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 3OvLOqpHlGzVdjqkOPLSQIPwJgAz9t3Aya9pJmdr3lklW5dSIp7GYNvtTO2MEjvbdLuBi0Uh7PDjkQlh5//UtQ== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:22 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug Nuhm0tM4MJBbZq1HgFjDge2VPFh7VrJgIHRzB0KNCs7RlBQQP9+DpBTJ8pmO2jbolFlG8hGTR/TgYeDYwBxNgw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:22 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug g2tZWi2xLSq9OlUfaXi3bbQf0RQz2MhBLGX9Wo+JK+LiZI4fQpReMcPKjtBzzEcRhj3OSzxdy8+GDxC3QADAFA== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:22 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug QivysyDdWiY3SVK7Tw7M8lIZkPvuaiDpxR+vOd42Xk2O7AqqjNP751kafm3a5xn+UHN3xOSGYtl5aKvzK7wuqQ== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:22 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug hpypdhhlU0HhLkfxRLQVQ4bfjMWTleA2Zt1W7KGwGbml43hGQeijYw1s/bZdpx2hUdkK2YQZSr+DBoMZFWLeOw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:24 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy frame-ancestors 'self'; -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug ltkjHYfAgLloDoLMZNYHBi8RY5+q8Ym7wNGcqhzBVzEdqbWwEa1hhMFFDvL+5p1vIgsWhtVayXlPoxb6AT6MaQ== -date Fri, 01 Dec 2017 02:48:24 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/html; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -set-cookie oNcnS=gpojSOS; 5X9e44v=0mTWPDQ8REZIxx5UsR6m77F2nLLDx; KAhjk6h=qwU+4DYhwU2; gAdd=f; 4O66Yd=zifBOQBN5pG/H -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 b5vUN/sgd315IdDwXDUejw== -status 200 -content-length 7295 -x-xss-protection 0 -x-fb-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Sat, 01 Dec 2018 00:00:37 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 3N5sn/pluRe+kZxjcR6Ibw== -status 200 -content-length 9375 -x-xss-protection 0 -x-fb-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:54:38 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 i4f5LnfeTwjEpPYLvEw9sg== -status 200 -content-length 3785 -x-xss-protection 0 -x-fb-debug HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 20:34:54 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 fd9ZgENjjqTO/InJ/yzr9A== -status 200 -content-length 18878 -x-xss-protection 0 -x-fb-debug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:54:47 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 mgTL4W9gmblv6l6wXzZodA== -status 200 -content-length 6081 -x-xss-protection 0 -x-fb-debug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Thu, 29 Nov 2018 13:44:43 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -content-encoding br -x-content-type-options nosniff -content-md5 FWVLk47e/1NAPOLzKy9mZQ== -status 200 -content-length 9648 -x-xss-protection 0 -x-fb-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:40:41 GMT - -date Fri, 01 Dec 2017 02:48:24 GMT -last-modified Tue, 19 Sep 2017 18:11:55 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 42942 -expires Mon, 27 Nov 2017 13:59:22 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug Cz64N9bQ0dvmaJ50abk2u7SSKJqHL9DM7QKR54mUh8+ILRME5kPyNoW4nG1k/px1ECvAPU1ahdC3RZ4sOrWm1A== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:25 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Mon, 25 Sep 2017 18:52:11 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1373 -expires Fri, 15 Dec 2017 02:38:11 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 2nocW+0AmN98W+9vj2rtAA== -status 200 -content-length 1755 -x-xss-protection 0 -x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:27:38 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 V/4SheZbR98CwCYd4h3cAg== -status 200 -content-length 2174 -x-xss-protection 0 -x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:21 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 21:03:33 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug Ike4iQwO65fGXWaMw0t4UbHoC9PEkEE1XAsaJt5EfgWfAJ5fvCUjZUEjFgydEjKHyU1FsHqjEeJZxGRemCQWOg== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:25 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -x-fb-debug ORWOg2jR1rbO1ILKezoBrqCYFwqccLo76Z0yTAXhy9kK94PkFLtETQ8IkakHHwtfpp/aE1Wu7v6o+RRvhVTCTg== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 aceXgUioFutSxdIu20vnQQ== -date Fri, 01 Dec 2017 02:48:25 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -timing-allow-origin * -content-length 157 -x-xss-protection 0 -expires Thu, 22 Nov 2018 07:15:53 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Mon, 06 Feb 2017 22:10:30 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1012 -expires Mon, 27 Nov 2017 16:06:54 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Thu, 27 Jul 2017 15:41:54 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 5041 -expires Fri, 08 Dec 2017 00:16:48 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Wed, 15 Nov 2017 19:06:49 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 4201 -expires Wed, 06 Dec 2017 14:48:13 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Thu, 18 Aug 2016 15:34:20 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 41643 -expires Fri, 10 Nov 2017 13:42:18 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Mon, 25 Sep 2017 18:52:11 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 4069 -expires Wed, 06 Dec 2017 11:36:55 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Sat, 06 Sep 2014 02:51:49 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -x-fb-edge-debug EwpFEjBY0hb_kwY2v8FLmVmymqWy5KGGTaPrVX5Ttv20vsZIEjUwDkVNbjYKcDY0_J9_d31bELPU561OltRd7w -timing-allow-origin * -content-length 11115 -expires Fri, 15 Dec 2017 02:48:25 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Thu, 09 Feb 2017 22:19:39 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 13981 -expires Mon, 11 Dec 2017 06:02:35 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Wed, 11 Oct 2017 18:36:08 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -x-fb-edge-debug BGdL2CHidm-Nlh_FAILf2lY1so5a6Q3rLP0A1pHzwniYyU89EhOQJpIFQ3_jI6QK3b9kfNHNWi-FMucQ3ZAKzA -timing-allow-origin * -content-length 10559 -expires Fri, 15 Dec 2017 02:48:25 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Thu, 14 Sep 2017 15:43:13 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 16520 -expires Fri, 24 Nov 2017 23:58:36 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Thu, 28 Sep 2017 14:22:13 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 13762 -expires Mon, 27 Nov 2017 16:56:47 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Mon, 25 Sep 2017 18:52:11 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1123 -expires Mon, 27 Nov 2017 13:59:23 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Mon, 06 Feb 2017 22:10:30 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 934 -expires Fri, 10 Nov 2017 10:56:02 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Sun, 26 Nov 2017 21:58:17 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1091 -expires Sun, 10 Dec 2017 21:58:36 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Thu, 23 Nov 2017 15:19:01 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1259 -expires Thu, 07 Dec 2017 16:49:23 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Mon, 27 Nov 2017 21:52:16 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 997 -expires Wed, 13 Dec 2017 13:04:41 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Tue, 30 May 2017 19:09:51 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1042 -expires Sat, 25 Nov 2017 00:19:18 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Fri, 01 Dec 2017 01:47:57 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1198 -expires Fri, 15 Dec 2017 01:48:10 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Sun, 30 Jul 2017 16:46:18 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1024 -expires Mon, 20 Nov 2017 09:54:46 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Mon, 07 Dec 2015 00:43:01 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1142 -expires Wed, 06 Dec 2017 10:29:30 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Thu, 23 Nov 2017 14:22:23 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1229 -expires Thu, 07 Dec 2017 14:23:39 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Mon, 25 Sep 2017 19:20:09 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 2115 -expires Wed, 06 Dec 2017 13:38:40 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Mon, 25 Sep 2017 19:44:15 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 2142 -expires Wed, 22 Nov 2017 19:52:55 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Wed, 20 Sep 2017 12:54:59 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 2050 -expires Wed, 06 Dec 2017 23:59:18 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Mon, 25 Sep 2017 19:30:38 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 2151 -expires Fri, 24 Nov 2017 23:35:52 GMT - -date Fri, 01 Dec 2017 02:48:25 GMT -last-modified Mon, 20 Nov 2017 15:41:19 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1535 -expires Wed, 06 Dec 2017 16:02:29 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug uf9WOnMihZGLrDWfdIk9TrGKmQdtGnccdlEOgrUgRfR67yT4gvj2C/49TAesR/+odr8hrXU4Vg0DFyUPGkOeTw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:25 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug tIRZNsTYzfKz2QPP0hEw0uwLco/KnyV40BfCRHvyZo3O2w3IE/7j6rOlozmmjypKoXRvlgKVMuIGL3ZuEdjAAQ== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:25 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug OQYWiTlxlsPzC92Mp1YXK8ApFdCAQIOUkhAPB1+xkHJQqfjDZygDfN99ACweeDUbG7x6QNWU0mxdBR8J2FPA6g== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:25 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug p0HFP+Jnpspb11zeyEYgxlr105OmdSqx4tkl8eaAR1N0lXl6XQbTO8UKDKDqEjxLThcca3J6qxoRUWgG0odnVQ== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:25 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug XRw0F7BRogkNZr1CMVwhEDJOLbqv9n1OtLwJw0zkKgcYejKC2R09TmAWffUhhcjnDKU4HH7FLnPS6NAJpBbE9A== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:25 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 6zfb4OjE4hNPBJHQlT5E/kHSCZJRtXHvWfBGAo8YtCn7L8CbZWgGBF7L4upWO3dP+QSgARyqFvmBNPegcE15jw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:25 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug fjB1x1MwVhv6sJanSzu8Ldr8d8qlnz+F6BRtgygmyfyiVs2rtvg5D/Kmp7sLpAMIaFSdxEQjTiNKUNoUw3r06w== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:25 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug mNPFkDjNtW61hg2fQZ8FvxVi0b0gjAVneqQ+7T609e0f6ciStxGg5PLLAaCQunaPEc2v57mC+UH2ta2EwA0G8A== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:27 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy frame-ancestors 'self'; -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug rSVyfIy0pUEIG4N41LAFP91i7oMPswW6ZRUF1Z7E1hamyGD3fVkpkkg2+3GR96pariwqrCpVr9nVYTqxkbATNA== -date Fri, 01 Dec 2017 02:48:27 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/html; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -set-cookie oNcnS=gpojSOS; 5X9e44v=0mTWPDQ8REZIxx5UsR6m77F2nLLDx; KAhjk6h=qwU+4DYhwU5; gAdd=f; 4O66Yd=zifBOQBN5pG/H -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 j8T0XBmPlo08jOXtTJ3MEw== -status 200 -content-length 198 -x-xss-protection 0 -x-fb-debug f4/9IxVq4HZYZ8dV9P6xeLypQNS2qEx/kNF3NoX9D8Z0nshFfF6M7lqeabFqQD5b50R/Iekbf9xeyr56aEUi7g== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Sat, 24 Nov 2018 12:25:27 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 b5vUN/sgd315IdDwXDUejw== -status 200 -content-length 7295 -x-xss-protection 0 -x-fb-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Sat, 01 Dec 2018 00:00:37 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 3N5sn/pluRe+kZxjcR6Ibw== -status 200 -content-length 9375 -x-xss-protection 0 -x-fb-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:54:38 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 i4f5LnfeTwjEpPYLvEw9sg== -status 200 -content-length 3785 -x-xss-protection 0 -x-fb-debug HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 20:34:54 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 fd9ZgENjjqTO/InJ/yzr9A== -status 200 -content-length 18878 -x-xss-protection 0 -x-fb-debug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:54:47 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 mgTL4W9gmblv6l6wXzZodA== -status 200 -content-length 6081 -x-xss-protection 0 -x-fb-debug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Thu, 29 Nov 2018 13:44:43 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 SqewXybmJVo1v4gA0JLGBQ== -status 200 -content-length 738 -x-xss-protection 0 -x-fb-debug KC/Mv8BSpLzgKNnb1cJgXL8dPdim8GGQRbNyFfUpswJaoxnMQeHpRWlZwFceTKDlmlF+3I1PWGIgOE9iug58Qw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:44:41 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -content-encoding br -x-content-type-options nosniff -content-md5 FWVLk47e/1NAPOLzKy9mZQ== -status 200 -content-length 9648 -x-xss-protection 0 -x-fb-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:40:41 GMT - -x-fb-debug ivI86tTrFwX9U5sLjaxj7fvac7JDJwsEi9Eja2Z4Oy4C7nmZIF2IkB8o8XqfevLcTTOzzEMMwFDwypn5k6bIXw== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 IHh5jFrVTE8LJvIHfLuDPA== -date Fri, 01 Dec 2017 02:48:20 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -timing-allow-origin * -content-length 556 -x-xss-protection 0 -expires Thu, 22 Nov 2018 12:26:14 GMT - -date Fri, 01 Dec 2017 02:48:28 GMT -last-modified Mon, 25 Sep 2017 19:30:38 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 34712 -expires Thu, 14 Dec 2017 20:19:27 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 81n69Z2aIc9QZjTP3RqALLOhQMWgAFje+H3x7d+XQhHdAQs8mLv+6FDvDhBgiGdjfLJADt8Lr8zzmSPholcHCg== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:28 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 YZP/0rJ9pw2vE+OCDm8w5Q== -status 200 -content-length 2031 -x-xss-protection 0 -x-fb-debug NNF+j6+XOFrfdhzYpIcXN8eoCwGFoh5LQhEtfDyAVBLtSL4n56dyb+kUyPAOLL4HokctaJ9bHKv6JsDRAvFzpQ== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:54:56 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 2nocW+0AmN98W+9vj2rtAA== -status 200 -content-length 1755 -x-xss-protection 0 -x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:27:38 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 V/4SheZbR98CwCYd4h3cAg== -status 200 -content-length 2174 -x-xss-protection 0 -x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:21 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 21:03:33 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 80lq+gj7IZbnwQOAsGA0x/F6Fyx0fmRFIjbi5VF+mwwF8GmHiNvnuajfF1nPUiDbR4xm4QfRZzO2dmW5phYHdw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:28 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -date Fri, 01 Dec 2017 02:48:28 GMT -last-modified Sat, 14 Oct 2017 08:52:18 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1346 -expires Mon, 27 Nov 2017 20:07:46 GMT - -date Fri, 01 Dec 2017 02:48:28 GMT -last-modified Fri, 16 Dec 2016 14:22:45 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 5378 -expires Mon, 20 Nov 2017 13:25:34 GMT - -date Fri, 01 Dec 2017 02:48:28 GMT -last-modified Sat, 14 Oct 2017 08:52:18 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1099 -expires Wed, 06 Dec 2017 08:24:14 GMT - -date Fri, 01 Dec 2017 02:48:28 GMT -last-modified Wed, 20 Sep 2017 12:52:11 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1813 -expires Sat, 09 Dec 2017 03:54:42 GMT - -date Fri, 01 Dec 2017 02:48:28 GMT -last-modified Thu, 02 Nov 2017 15:14:40 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 2231 -expires Mon, 11 Dec 2017 14:36:10 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 0p+00EWDce62x0+DsI9H4aEJhyeSi3JPlTdaS5BHMXBW7IgnSx2/iIb/I6SJfBtMfsdXxAUQmZIk60dobz61cw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:28 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 1LWgD23lNKFTlwMtU9MYIrDqQodqZNpYVpJEdY85kjF19Zriwcv3LL1TKf1a2M1e8KZbFzbeZt/tDNluh5KMfg== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:28 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug QT70qYi7OceDc1J6xNZPxbWA6J74A7vI4w5yDKqMT0zydKcu4gufbgfyUV5pp8KYHNnOjprXdLmV8sxjhVZmrg== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:28 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 7fkJBsAPVJFq2FTZol9AA+/QkBHqy/UnLVOh6jnwcLsgOCgwov2UoJDyuCQsyL7daXfPhVbq9gXbFdcBEnK9eA== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:28 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug amapPP5iPcmJFn0h4ov4yHD4j6Y4lq0t+cOKNHf48NaI2q8h3fx5pUQfXiPMFfyl2VO049uOPkR9LryO0fT9kw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:28 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug t32y8Hm6r7S1o8WqMv2HtbAPZfK3hSQRgIu9njyHN86UXFWWcJLwQi/+hCFvNFTTecEMdi999zchr89VUjejSg== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:29 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug qZ9fNZULFiTcas1J8eLDJiyuDBAlrghkM3olJD9oi7TW7eJusL3bRMUZuBsYIwdsF0mjAIVE02udnrfdN/++Tg== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:29 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug YgKVIynAZNUPEjV90atEpD0KJwQ2ChoxXcj4Oh3iH4ZLkrFVlNq6JTCjEUmj68QSuJH2JDqgk2lWW4pjbuEIUw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:31 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy frame-ancestors 'self'; -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 7rhC62iO+Rts/b+n+IFvEXeifr57brMaYkWLW76OXJzkEpiVAq78Tsy/RQCQ8N5hDrDXI87nuaRetJUM5huJuQ== -date Fri, 01 Dec 2017 02:48:31 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/html; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -set-cookie oNcnS=gpojSOS; 5X9e44v=0mTWPDQ8REZIxx5UsR6m77F2nLLDx; KAhjk6h=qwU+4DYhwV*; gAdd=f; 4O66Yd=zifBOQBN5pG/H -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 j8T0XBmPlo08jOXtTJ3MEw== -status 200 -content-length 198 -x-xss-protection 0 -x-fb-debug f4/9IxVq4HZYZ8dV9P6xeLypQNS2qEx/kNF3NoX9D8Z0nshFfF6M7lqeabFqQD5b50R/Iekbf9xeyr56aEUi7g== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Sat, 24 Nov 2018 12:25:27 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 b5vUN/sgd315IdDwXDUejw== -status 200 -content-length 7295 -x-xss-protection 0 -x-fb-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Sat, 01 Dec 2018 00:00:37 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 3N5sn/pluRe+kZxjcR6Ibw== -status 200 -content-length 9375 -x-xss-protection 0 -x-fb-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:54:38 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 i4f5LnfeTwjEpPYLvEw9sg== -status 200 -content-length 3785 -x-xss-protection 0 -x-fb-debug HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 20:34:54 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 fd9ZgENjjqTO/InJ/yzr9A== -status 200 -content-length 18878 -x-xss-protection 0 -x-fb-debug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:54:47 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 mgTL4W9gmblv6l6wXzZodA== -status 200 -content-length 6081 -x-xss-protection 0 -x-fb-debug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Thu, 29 Nov 2018 13:44:43 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -content-encoding br -x-content-type-options nosniff -content-md5 FWVLk47e/1NAPOLzKy9mZQ== -status 200 -content-length 9648 -x-xss-protection 0 -x-fb-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:40:41 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 SqewXybmJVo1v4gA0JLGBQ== -status 200 -content-length 738 -x-xss-protection 0 -x-fb-debug KC/Mv8BSpLzgKNnb1cJgXL8dPdim8GGQRbNyFfUpswJaoxnMQeHpRWlZwFceTKDlmlF+3I1PWGIgOE9iug58Qw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:44:41 GMT - -date Fri, 01 Dec 2017 02:48:31 GMT -last-modified Wed, 20 Sep 2017 12:43:30 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 40454 -expires Sat, 09 Dec 2017 14:44:15 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 7UJtDxiFPBYY1sVqvgsQp/byh+wO4VmQtzoGR1YpqwdzSX5TZPcZawYCUsAlp1SXS9x7ed5apoBsdWrWAqD2zA== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:31 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 YZP/0rJ9pw2vE+OCDm8w5Q== -status 200 -content-length 2031 -x-xss-protection 0 -x-fb-debug NNF+j6+XOFrfdhzYpIcXN8eoCwGFoh5LQhEtfDyAVBLtSL4n56dyb+kUyPAOLL4HokctaJ9bHKv6JsDRAvFzpQ== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:54:56 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 2nocW+0AmN98W+9vj2rtAA== -status 200 -content-length 1755 -x-xss-protection 0 -x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:27:38 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 V/4SheZbR98CwCYd4h3cAg== -status 200 -content-length 2174 -x-xss-protection 0 -x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:21 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 21:03:33 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug hdieTRvwlm1ekAKUz+PCErUI8L1SH+WbBkLwZ0ikBiUAMOZiHdLsiZRRjlQJUj4F5byiz3iFAA4uT16arnRd7A== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:32 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -date Fri, 01 Dec 2017 02:48:32 GMT -last-modified Wed, 29 Nov 2017 18:14:21 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1263 -expires Wed, 13 Dec 2017 18:14:25 GMT - -date Fri, 01 Dec 2017 02:48:32 GMT -last-modified Sun, 27 Mar 2016 20:43:37 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1435 -expires Wed, 13 Dec 2017 23:44:52 GMT - -date Fri, 01 Dec 2017 02:48:32 GMT -last-modified Mon, 16 May 2016 00:17:40 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1384 -expires Sat, 09 Dec 2017 21:01:34 GMT - -date Fri, 01 Dec 2017 02:48:32 GMT -last-modified Wed, 29 Nov 2017 18:14:21 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1096 -expires Wed, 13 Dec 2017 18:14:25 GMT - -date Fri, 01 Dec 2017 02:48:32 GMT -last-modified Sun, 27 Mar 2016 20:43:37 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1201 -expires Mon, 11 Dec 2017 05:20:17 GMT - -date Fri, 01 Dec 2017 02:48:32 GMT -last-modified Mon, 16 May 2016 00:17:40 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1180 -expires Mon, 20 Nov 2017 11:42:06 GMT - -date Fri, 01 Dec 2017 02:48:32 GMT -last-modified Thu, 25 May 2017 00:58:58 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1131 -expires Wed, 06 Dec 2017 07:19:13 GMT - -date Fri, 01 Dec 2017 02:48:32 GMT -last-modified Fri, 06 Oct 2017 04:13:23 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1076 -expires Tue, 14 Nov 2017 04:25:30 GMT - -date Fri, 01 Dec 2017 02:48:32 GMT -last-modified Sat, 04 Feb 2017 21:06:34 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1196 -expires Wed, 06 Dec 2017 08:11:30 GMT - -date Fri, 01 Dec 2017 02:48:32 GMT -last-modified Mon, 31 Oct 2016 17:48:54 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1214 -expires Thu, 14 Dec 2017 01:18:17 GMT - -date Fri, 01 Dec 2017 02:48:32 GMT -last-modified Sat, 18 Nov 2017 22:32:51 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1186 -expires Sat, 02 Dec 2017 22:47:49 GMT - -date Fri, 01 Dec 2017 02:48:32 GMT -last-modified Wed, 14 Jun 2017 21:09:19 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1116 -expires Wed, 06 Dec 2017 14:17:44 GMT - -date Fri, 01 Dec 2017 02:48:32 GMT -last-modified Thu, 28 Mar 2013 11:15:38 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1194 -expires Wed, 06 Dec 2017 13:19:14 GMT - -date Fri, 01 Dec 2017 02:48:32 GMT -last-modified Wed, 11 Oct 2017 14:19:22 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 2561 -expires Wed, 06 Dec 2017 13:00:04 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug ntagBSAy0N7B+W6cCPjMym9uojb63DTPZNd4qbWeU9JEJ6GsZJR28NdGWJF+2pYGdhqvJfCRNFKO6Wsu1DKrmg== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:32 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug TCx1S56tLRACSgQRetHn9/G9virSjj5p6TxjI/yO0SEMxskavAh/jzrW0NZ+RNisDLmq+h5pEXwheYm1KHgGYg== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:32 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug cGQeVJ0yynZitbvpqOoVWwcFWA4pbNMPbxm6kLd93D/Rp06syo3Bkb/25dSHIqthI8YpFt8lKO44Fiv9coRFbA== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:32 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug a2F7U2gfSNAOvmMj4SX8IrUAXTpRFoWi2AcWDEjjqhG9GTfSb5SwxWntbCrDLW/li49tn5FlrOqSyiHVsfLPBw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:32 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug lhhyzZ7f6JtEJ7VfB6YZb9/Th4Qw82KjrOLwWrOTfWj6pR9sEHf1/5EFp4m9+DyKlrZmgVPJW+FCXiPu+QylAg== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:32 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug fCePEei9uCqVXIV1xs2fa3gT/rg6BP9CrjdWzCNIC/B++asjzJ1FFbKdnp5xmO83iisvuRwos6qCfE9dhXKoAg== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:32 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug iRBn/XnVBDIWIxUBLMtLtAj5omaH7A7p11UT1D1afbZD+Ry0sthN9v9zHvAN00k4d067alZKMaUr47kiDHm4gQ== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:32 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug FQ8b5JXye5XlhBtjejvj/jR27KuuDITP3T6WgnIs5B7RbHbAdw0inziQZI5IrMN31Aa8W5FCh8PoudsQRbMSwQ== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:33 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy frame-ancestors 'self'; -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug hqV/b79Rwe4YgV9N2BognvCfbV2jZ/JfYpAS855sX5nmytN/L7TSs02ZXnccyQqjrtrmzz2zYfNXoheYKc50Tw== -date Fri, 01 Dec 2017 02:48:33 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/html; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -set-cookie oNcnS=gpojSOS; 5X9e44v=0mTWPDQ8REZIxx5UsR6m77F2nLLDx; KAhjk6h=qwU+4DYhwV1; gAdd=f; 4O66Yd=zifBOQBN5pG/H -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 b5vUN/sgd315IdDwXDUejw== -status 200 -content-length 7295 -x-xss-protection 0 -x-fb-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Sat, 01 Dec 2018 00:00:37 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 3N5sn/pluRe+kZxjcR6Ibw== -status 200 -content-length 9375 -x-xss-protection 0 -x-fb-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:54:38 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 i4f5LnfeTwjEpPYLvEw9sg== -status 200 -content-length 3785 -x-xss-protection 0 -x-fb-debug HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 20:34:54 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 fd9ZgENjjqTO/InJ/yzr9A== -status 200 -content-length 18878 -x-xss-protection 0 -x-fb-debug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:54:47 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 mgTL4W9gmblv6l6wXzZodA== -status 200 -content-length 6081 -x-xss-protection 0 -x-fb-debug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Thu, 29 Nov 2018 13:44:43 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -content-encoding br -x-content-type-options nosniff -content-md5 FWVLk47e/1NAPOLzKy9mZQ== -status 200 -content-length 9648 -x-xss-protection 0 -x-fb-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:40:41 GMT - -date Fri, 01 Dec 2017 02:48:34 GMT -last-modified Mon, 25 Sep 2017 19:20:09 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 37398 -expires Tue, 12 Dec 2017 03:27:30 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug T2Fb6tov4j/VU2CcWE1iGbdCVWGl3zikBGu30FonV6DpxMLxgWwyWIo0r27g0TL65MZ7X4i2ohsyr74hTG3jKQ== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:34 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 2nocW+0AmN98W+9vj2rtAA== -status 200 -content-length 1755 -x-xss-protection 0 -x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:27:38 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 V/4SheZbR98CwCYd4h3cAg== -status 200 -content-length 2174 -x-xss-protection 0 -x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:21 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 21:03:33 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug CmCWPlmqCm/uFgOIozX0baTftxZ3VhE4LyBiaS1Ba8d/f9IdOfG/DxhxqHc3JdaUlawX18BM8DURXwNblLHteA== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:34 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -x-fb-debug ORWOg2jR1rbO1ILKezoBrqCYFwqccLo76Z0yTAXhy9kK94PkFLtETQ8IkakHHwtfpp/aE1Wu7v6o+RRvhVTCTg== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 aceXgUioFutSxdIu20vnQQ== -date Fri, 01 Dec 2017 02:48:25 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -timing-allow-origin * -content-length 157 -x-xss-protection 0 -expires Thu, 22 Nov 2018 07:15:53 GMT - -date Fri, 01 Dec 2017 02:48:34 GMT -last-modified Wed, 20 Mar 2013 18:57:05 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1066 -expires Wed, 13 Dec 2017 17:53:06 GMT - -x-fb-debug hmeONhxlOikUn5JWEr5LODXNSDoQrK4Al9oZByowJnsG768Yr9lqfAocuoDG3ET6GHtZCGyboYlfXgcsNxzXsg== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 W6cjFtLyG3NmnM599q2XQw== -status 200 -date Fri, 01 Dec 2017 02:48:34 GMT -strict-transport-security max-age=31536000; preload; includeSubDomains -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -content-length 407 -x-xss-protection 0 -expires Sat, 17 Nov 2018 10:25:51 GMT - -date Fri, 01 Dec 2017 02:48:34 GMT -last-modified Wed, 20 Mar 2013 18:57:05 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 948 -expires Wed, 13 Dec 2017 01:05:18 GMT - -date Fri, 01 Dec 2017 02:48:34 GMT -last-modified Mon, 13 Nov 2017 17:28:09 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 2152 -expires Mon, 27 Nov 2017 17:43:16 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug UVv0oe/+es+7dgoQWv9n0RgnGfm+xsnA/Iq5fD3aHwBMr11k5BvSh+BzI6zihX5/h/8orIE/QfjkWLvg8Be9Og== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:34 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug JbOY87U1He0j0KzsfkkstH/yjYU1mBIa9guTiQhk/yd0UeMIEA6Nrxy8BZZzquA0hE2FkL4XzPXf0zZa4TUDSQ== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:34 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug i6EVcXfsFOTqpkGOYUS2B1wz2AQjlNYFkAtor8A5wVeRimZnRcztk9OElPuLHrD4MkKr9qlhAx6UM6Me6xVkNg== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:34 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 3saA1PCrN28LM0iyAb4VugAJLlHFaIR1k8aghHr7PrEqKeJRk3tHffLkr9mi+Wc0QCEUGnrswKLaGF2/wbNqPw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:34 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug nWHIgMSJK2w22Lxm4mwfyGWKtZteyQUVxZ4I/tLBFIv3MOEk3LNRFfzXe0ZjEYzrAWFdqdetH7nzOVqGJn2ojA== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:34 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug LX9x0T+zbHhQlpqjecnJ8AnoHt9JkvRR8x4Txp5TKgBpzroSrNl/WZWaFwaYCbTheV8/ffnTZDPExwCCCAttUQ== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:34 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug BJo0rSTzS5YBo+ZS+O0KsUb5qSihZkY0n4ER+ShvqBvLv6Lcym3PqqRD1uXBJu0fB2XxA87MBhGyxQszl8BtLQ== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:35 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug WiJG+zsrWf46xpzJ42rgkAuaSJ3ZsbG257drL8mGDBzGlHg3r+P7YelbWUqw+R7V9m5K3s8UdpvC7mr9QsYUhg== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:37 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy frame-ancestors 'self'; -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 11y9sN7qtzOoijlRDs+7xfzoE+Sj910j9prMSJfaLU4LFTjH9AcRVglyp0yFirQRX9DQgZ3Ab1YD4XhJsB0u5Q== -date Fri, 01 Dec 2017 02:48:37 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/html; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -set-cookie oNcnS=gpojSOS; 5X9e44v=0mTWPDQ8REZIxx5UsR6m77F2nLLDx; KAhjk6h=qwU+4DYhwV5; gAdd=f; 4O66Yd=zifBOQBN5pG/H -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 j8T0XBmPlo08jOXtTJ3MEw== -status 200 -content-length 198 -x-xss-protection 0 -x-fb-debug f4/9IxVq4HZYZ8dV9P6xeLypQNS2qEx/kNF3NoX9D8Z0nshFfF6M7lqeabFqQD5b50R/Iekbf9xeyr56aEUi7g== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Sat, 24 Nov 2018 12:25:27 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 b5vUN/sgd315IdDwXDUejw== -status 200 -content-length 7295 -x-xss-protection 0 -x-fb-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Sat, 01 Dec 2018 00:00:37 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 3N5sn/pluRe+kZxjcR6Ibw== -status 200 -content-length 9375 -x-xss-protection 0 -x-fb-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:54:38 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 i4f5LnfeTwjEpPYLvEw9sg== -status 200 -content-length 3785 -x-xss-protection 0 -x-fb-debug HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 20:34:54 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 fd9ZgENjjqTO/InJ/yzr9A== -status 200 -content-length 18878 -x-xss-protection 0 -x-fb-debug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:54:47 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 mgTL4W9gmblv6l6wXzZodA== -status 200 -content-length 6081 -x-xss-protection 0 -x-fb-debug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Thu, 29 Nov 2018 13:44:43 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 SqewXybmJVo1v4gA0JLGBQ== -status 200 -content-length 738 -x-xss-protection 0 -x-fb-debug KC/Mv8BSpLzgKNnb1cJgXL8dPdim8GGQRbNyFfUpswJaoxnMQeHpRWlZwFceTKDlmlF+3I1PWGIgOE9iug58Qw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:44:41 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -content-encoding br -x-content-type-options nosniff -content-md5 FWVLk47e/1NAPOLzKy9mZQ== -status 200 -content-length 9648 -x-xss-protection 0 -x-fb-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:09 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:40:41 GMT - -x-fb-debug ivI86tTrFwX9U5sLjaxj7fvac7JDJwsEi9Eja2Z4Oy4C7nmZIF2IkB8o8XqfevLcTTOzzEMMwFDwypn5k6bIXw== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 IHh5jFrVTE8LJvIHfLuDPA== -date Fri, 01 Dec 2017 02:48:20 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -timing-allow-origin * -content-length 556 -x-xss-protection 0 -expires Thu, 22 Nov 2018 12:26:14 GMT - -date Fri, 01 Dec 2017 02:48:37 GMT -last-modified Mon, 25 Sep 2017 19:44:15 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 36920 -expires Fri, 01 Dec 2017 16:06:40 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 YZP/0rJ9pw2vE+OCDm8w5Q== -status 200 -content-length 2031 -x-xss-protection 0 -x-fb-debug NNF+j6+XOFrfdhzYpIcXN8eoCwGFoh5LQhEtfDyAVBLtSL4n56dyb+kUyPAOLL4HokctaJ9bHKv6JsDRAvFzpQ== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:54:56 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 2nocW+0AmN98W+9vj2rtAA== -status 200 -content-length 1755 -x-xss-protection 0 -x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:20 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:27:38 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug VJPPpdIunoa0PsAOJTkd+NZrSo/smOqSCe00kT70yq1W+3WFV69RoCGxXDwfGHAHkOIzx3H6IQBmGV+mRQbwNw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:37 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 V/4SheZbR98CwCYd4h3cAg== -status 200 -content-length 2174 -x-xss-protection 0 -x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:21 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 21:03:33 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug hCRcDm8RuOwYbYu/YuM824iQWjlZblcAbg7abvZgYrLW6oe/CKJVOFVJx6FJ/h7LJRDOvvNoBYzvo1Pv0pH2AA== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:38 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -date Fri, 01 Dec 2017 02:48:38 GMT -last-modified Mon, 06 Nov 2017 19:16:05 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -x-fb-edge-debug ETqCNIawZjlBn_-DsYnz8Eke5UQ5XSMbncc1bgHpZPgcb9aHXXEgTr2zbPLCcUAYd63x6e7HEZvELIF5ZU-YwQ -timing-allow-origin * -content-length 2354 -expires Fri, 15 Dec 2017 02:48:38 GMT - -date Fri, 01 Dec 2017 02:48:38 GMT -last-modified Mon, 20 Nov 2017 15:44:29 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 2083 -expires Wed, 06 Dec 2017 15:30:15 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 0LaxLj167sUn/Smj88vRmssRRg01q+EcQbQOHpjOzYjB2fYy7BDvq2qHg4YXAAPpKAlfBymVLBwrd/9GCs/GwA== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:38 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm;report-uri https://www.facebook.com/csp.php -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug sv6s4cVWgre7iG2N4AjtMoA/v9Hp+fLNOn5AUHBBip02YKfnHaZG2RNsYjT/cqmrRHRg1gt2EAVSqdfO2bJHsw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:38 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug +qvKJUxHytS9y2J3fUAg4/Oe6iQG4N4f5I7mhclUiM6QFJWTvkxEY0hvcHqpio5YDc1+2TNGs0uks5n8EDpJZQ== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:38 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug Ialaex2lAp8FVggaIlNE5V7+ntPp38j2nvicXP83MHQYhvD8m5MkH1zdjj/g0Rfh5Q1WuX366h6aKxfsp0Mhhg== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:38 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug lKraYNnYGgMz6gqiG0m9WXRreHg9Z5n/9tEbyJCs0FFsF0LmdR73aEDUXTqdAG7VhKrQnFfHXjxEZ0N7yAbR+Q== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:38 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 24u4W9n6RfnFkdHetRHiq9arEYTTBhydET+2+9970OPxlY7VyTnD/VI4cQo9cCSqv1ame8zmVUAAP2e3WPhOBw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:38 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug cQfzBLtGIzv/gkJzRKFpBvCukbwBy9Ah3X5IL7msjOIgPkYdJ/gEoZadKNsvWNd+P+p81Xr4hiTsWnYvbq4ogw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:38 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 3XiBcZLt5O/nvcBdB9Jd5ZGyMv62DXvOyccJN3hr1h5otKloXez8tKF3KxDMfS+cTEa2SDzAiGGl/301LcAzaw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:40 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type text/javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 jfOCzN9x/2cFBFpAlRbWwg== -status 200 -content-length 1705 -x-xss-protection 0 -x-fb-debug BQ8sB5VGbkE9woIwdpfAlv07SQw0nettHRumTeoilCBIwoxdYeSIBMm/4h9s7+C0D6XkdIKHy/6fGQuTh85Wuw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:39 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 22:30:41 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 b6p/+eUCIEnbvgKixESeog== -status 200 -content-length 6467 -x-xss-protection 0 -x-fb-debug INVr1RX5JQw1VVmAPTvFz1qBToUvwVtUnqIvtA5sR/dBPk40sgDomfGCk0MDEv0N4BSAMMXBCgpKfxeyPmplMw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:39 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 21:46:38 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug CF8moTgH2QAU0n0gAY0VDcCm9pVaY1l2x4Edbu82ixEfNAZC/tg99GFN/c1HBwhkVVAEMhtBw5DovuzHpvrHBA== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:41 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -pragma no-cache -x-fb-debug ej9iz3s/lmrV13M3tvaaFzBfi+OmflI2x7D5HU5K40Xv7pKgzVDs7ivV6BgaxxQhxC13o8FVsjAMAEtwd0kSmw== -content-encoding br -x-content-type-options nosniff -date Fri, 01 Dec 2017 02:48:41 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -content-type text/html; charset=utf-8 -status 200 -cache-control private, no-cache, no-store, must-revalidate -content-security-policy frame-ancestors 'self'; -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -set-cookie oNcnS=gpojSOS; 5X9e44v=0mTWPDQ8REZIxx5UsR6m77F2nLLDx; KAhjk6h=qwU+4DYhwW*; gAdd=f; 4O66Yd=zifBOQBN5pG/H -vary Accept-Encoding -x-xss-protection 0 -expires Sat, 01 Jan 2000 00:00:00 GMT - -x-fb-debug OxKw8TR8lbzIJU+2fUvDIwKqRu/aMmeaOMRtwmLh4Usz2Qm21k8r5zxc8oTr2aXdC9pMjy3vHyhEGZkmA4A2MQ== -vary Origin -status 302 -location https://fbcdn.net/security/hsts-pixel.gif?c=2.5 -date Fri, 01 Dec 2017 02:48:42 GMT -strict-transport-security max-age=15552000; includeSubDomains -access-control-allow-methods OPTIONS -content-type text/html; charset=UTF-8 -access-control-allow-origin * -access-control-expose-headers X-FB-Debug, X-Loader-Length -access-control-allow-credentials true -content-length 0 - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Tue, 04 Nov 2014 18:31:29 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 934 -expires Wed, 06 Dec 2017 11:00:08 GMT - -x-fb-debug o+N7DXgGFIjeSrKe/AohasMYqi2mPJg+GXV9UxT8GGN7MMYLeCmO40rnnsGT54Y1TB/8g/NR024/bZ4IRdnm3Q== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 WFuqLsaU44qDUAslAtUA0A== -date Fri, 01 Dec 2017 02:48:42 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -timing-allow-origin * -content-length 5305 -x-xss-protection 0 -expires Mon, 26 Nov 2018 22:57:54 GMT - -x-fb-debug o32lUy/wzCjBV96zWB7ERnzoHuO6hu+jP+qq0+qnUvrj7P+U/PUk+WdH6fu/zpCUA0hVmdttY0PuhlmnLvQVyw== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 /cHO8B3YAO/ChHs9p9JPDw== -date Fri, 01 Dec 2017 02:48:42 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -timing-allow-origin * -content-length 548 -x-xss-protection 0 -expires Thu, 22 Nov 2018 20:02:53 GMT - -date Fri, 01 Dec 2017 02:47:54 GMT -last-modified Tue, 04 Nov 2014 18:31:29 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 836 -expires Fri, 24 Nov 2017 14:06:38 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Wed, 06 Sep 2017 14:56:02 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 13307 -expires Fri, 24 Nov 2017 14:49:36 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Tue, 01 Jan 2008 00:00:00 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -x-fb-edge-debug RvuYQEJ3w9ho3lEjUWNiGa6vY4riNY5COqj9W1GIY8dvqMsqbJwLNzgg4Q3wN7_LgSuzb3WoVJu6ZS_9unt0jw -timing-allow-origin * -content-length 12342 -expires Fri, 15 Dec 2017 02:48:42 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Sun, 19 Nov 2017 22:20:21 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 16229 -expires Mon, 04 Dec 2017 00:43:50 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Thu, 22 Jan 2015 22:37:58 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -x-fb-edge-debug cXG-MBMAdvKTcjt8OJCXjW48y-yxYO1g1CVtvfNzkBXgpPTuh7Kt8VxpPK8-jYiCYHxzLag3SkUTBT31s68wsw -timing-allow-origin * -content-length 11954 -expires Fri, 15 Dec 2017 02:48:42 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Sat, 26 Mar 2016 20:29:36 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -x-fb-edge-debug KSsp6SxoFvwd9tK658jJkNtmglqlI7glK9X2WngFYEoWOhqBo6BHZsXmbCZIyYK-5tLNFV4fHJ8qx71J9WwwHw -timing-allow-origin * -content-length 12295 -expires Fri, 15 Dec 2017 02:48:42 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Mon, 23 Nov 2015 02:24:38 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -x-fb-edge-debug _pXCFVcHx2fhuNlZSvAWPJsJVj16r5LMNG_mKNFSEtAL2qIEp4aevBFIdeHONrP6EbUo-YdkPyl2ibPHEtO06g -timing-allow-origin * -content-length 16518 -expires Fri, 15 Dec 2017 02:48:42 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Wed, 08 Nov 2017 13:08:22 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 16676 -expires Sat, 25 Nov 2017 12:32:13 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Thu, 15 Sep 2016 00:29:42 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -x-fb-edge-debug 4QKv42fPsuZz_RHbzHsxSZw28FjNk43GtJKIyZ3KQR_2dPR4-n8GP6PxVcoWVWXuO6zkNYudqf92qu6wmbYZag -timing-allow-origin * -content-length 9346 -expires Fri, 15 Dec 2017 02:48:42 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Thu, 20 Feb 2014 19:51:36 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 6669 -expires Fri, 10 Nov 2017 09:21:32 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Mon, 11 Sep 2017 19:21:07 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -x-fb-edge-debug OcdlCYVtclhoanH3vEUkcgp5xdsSJSXMxlEhJ4bO7qyasGUPhnVWXtNyeZvMeI_pD-VInWssMGo8yegAx2KtJA -timing-allow-origin * -content-length 10193 -expires Fri, 15 Dec 2017 02:48:42 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Sun, 05 Oct 2014 04:06:58 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -x-fb-edge-debug SQiVqS4015WAz4E9qhwJNtBwWENBziYq0Q3GD4sOYsLuZyU_yZchRLWo4Tok6AHP1SVJKWf-ELFcOxWYmF7Q3A -timing-allow-origin * -content-length 10226 -expires Fri, 15 Dec 2017 02:48:42 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Mon, 15 May 2017 03:07:22 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -x-fb-edge-debug lQRqvNCns5jAwUvHJx-aRiKhxS87KyomZNM8op0uc6T4Q-Kzir7UvfG0Cfqbm9jrsxx-whuTMw56_4y6nfIyPg -timing-allow-origin * -content-length 13412 -expires Fri, 15 Dec 2017 02:48:42 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Tue, 23 Feb 2016 15:12:45 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -x-fb-edge-debug iSX08DnUOAjuXq5615qrlzXjQHn56Eobci-Mkig918wUVNb2Bkc8fFuOkhjoBymu98kH0dk4PURTTWQzo2xqeA -timing-allow-origin * -content-length 13991 -expires Fri, 15 Dec 2017 02:48:42 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Sat, 07 Oct 2017 02:36:41 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -x-fb-edge-debug mFDVT8NJPWXtJAmYZED_iPs8jxXpC-j42LvTd-1oOAWjynfv6Un-JSL7wbb5wR6rJ3PbMj4-z-ha1JenE6t53A -timing-allow-origin * -content-length 14750 -expires Fri, 15 Dec 2017 02:48:42 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Fri, 06 Oct 2017 12:59:13 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -x-fb-edge-debug PKKgGhRqXZAPB-HTyUnisy5_eWZwRugxTDE0o1atSNZSu_vR_JNdyMjEkgnjm4BA07CkM-sPtAdewpiDmaULZw -timing-allow-origin * -content-length 12667 -expires Fri, 15 Dec 2017 02:48:42 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Tue, 25 Feb 2014 19:54:14 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 9461 -expires Fri, 24 Nov 2017 19:31:38 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Sat, 26 Aug 2017 19:54:52 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -x-fb-edge-debug SVE5wbBMq6nBPMdvWHwzhufMGUFZZwXUxfOdpvBQ2vvv15fP6Kdqc2voex9W0q728GbaAlIVivUbEHR5ZjO8Xg -timing-allow-origin * -content-length 14253 -expires Fri, 15 Dec 2017 02:48:42 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Wed, 09 Nov 2016 10:43:36 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -x-fb-edge-debug zGqgelCYFB0BiS6uYzD96dNa4BhiBfcQVtVD687YRc3V0Fq25BG83jav2srswSCAzcZj3v-vcBN5nEGpiQLayg -timing-allow-origin * -content-length 9867 -expires Fri, 15 Dec 2017 02:48:42 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Tue, 20 Jun 2017 05:10:00 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -x-fb-edge-debug szdnBjD8T5IeEDrB7fAzeFse03nIrEhE30CecCV1x9mdMZrm5_w-dSBLJIqwF1nL3vyADJy5fJ1pqT4w0vNfQA -timing-allow-origin * -content-length 9161 -expires Fri, 15 Dec 2017 02:48:42 GMT - -x-fb-debug SphHt6X8aaC4O7OrE5YStS9cLlGtO84gPXoWYeEUx8YETGBAUpAb6kZ1M9K2kqvkOImJHKdLcDwtsWAkzbU3Fw== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 cH2zTAVPHVXw/aQfDhS/Bg== -date Fri, 01 Dec 2017 02:47:42 GMT -status 200 -content-type image/gif -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -timing-allow-origin * -content-length 522 -x-xss-protection 0 -expires Sun, 18 Nov 2018 20:51:23 GMT - -x-fb-debug 8Y7xmhHv+dUABQ5G/C/MNsrpA0Kqadd59S8IxcuvsypxKRmzuNfxuKGmHTjx2N7B/96SvyBm4CHcdpmHrM5G6A== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 YRyRbJo4R7CNEE1X8k7Jfg== -date Fri, 01 Dec 2017 02:47:43 GMT -status 200 -content-type image/gif -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -timing-allow-origin * -content-length 43 -x-xss-protection 0 -expires Thu, 22 Nov 2018 20:02:46 GMT - -date Fri, 01 Dec 2017 02:47:55 GMT -last-modified Tue, 01 Jan 2008 00:00:00 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1769 -expires Fri, 24 Nov 2017 19:52:06 GMT - -date Fri, 01 Dec 2017 02:47:55 GMT -last-modified Sun, 19 Nov 2017 22:20:21 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1986 -expires Wed, 06 Dec 2017 07:57:09 GMT - -date Fri, 01 Dec 2017 02:47:55 GMT -last-modified Wed, 06 Sep 2017 14:56:02 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1897 -expires Mon, 20 Nov 2017 14:10:12 GMT - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Mon, 11 Sep 2017 19:21:07 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1649 -expires Thu, 14 Dec 2017 20:31:27 GMT - -date Fri, 01 Dec 2017 02:47:55 GMT -last-modified Thu, 22 Jan 2015 22:37:58 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1704 -expires Sat, 18 Nov 2017 14:39:23 GMT - -date Fri, 01 Dec 2017 02:47:55 GMT -last-modified Sat, 26 Mar 2016 20:29:36 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1764 -expires Fri, 15 Dec 2017 02:46:11 GMT - -x-fb-debug jLVtRmmf8FlBFmmvs77zLZ5kxGJFK0IqAKFtWQ76Z2EgBlPqA+zVbftdXn/CG4btJFwbOvIwfVg1THxtuM9XrQ== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 P3oj2EL6pHt7tkWGA5Yf5A== -date Fri, 01 Dec 2017 02:48:42 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -timing-allow-origin * -content-length 1425 -x-xss-protection 0 -expires Mon, 26 Nov 2018 22:57:53 GMT - -x-fb-debug zgiRiFCyGejMO+S8ItrjPiYsRyk+QRGBIPYFs1MUy8X3dP0Sv34P8iBvmFNGm64hI5o1LgAyFWCvpGoEWSI6Dw== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 3T8z1xV6w0Ytr6bG8xDapg== -date Fri, 01 Dec 2017 02:47:55 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -timing-allow-origin * -content-length 1446 -x-xss-protection 0 -expires Sun, 25 Nov 2018 12:39:28 GMT - -x-fb-debug YwWjkdpYzNYMlNNJD9CuSWSTbH0EI2+Dpe3Jq9nSVy1M3G/WtFrs8I+Gd/IIh5BxeJRXv40dMxgjDqM8rJkLJg== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 hel74bGLstl9qZYs0X9wiw== -date Fri, 01 Dec 2017 02:48:42 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -timing-allow-origin * -content-length 3146 -x-xss-protection 0 -expires Mon, 12 Nov 2018 12:35:17 GMT - -x-fb-debug fYuO1K2+pP/a0ojdgA4UMJftmsZbp94jLX+EinKxh1uYpvdASqcNKLddBYWslALDzhbQsQ4IT6GNBwRpfYZdGQ== -vary Origin -status 302 -location https://fbsbx.com/security/hsts-pixel.gif?c=5 -date Fri, 01 Dec 2017 02:48:42 GMT -strict-transport-security max-age=31536000; preload; includeSubDomains -access-control-allow-methods OPTIONS -content-type text/html; charset=UTF-8 -access-control-allow-origin * -access-control-expose-headers X-FB-Debug, X-Loader-Length -access-control-allow-credentials true -content-length 0 - -x-fb-debug D2C3KCUrNX0IcbEFFd98z4RNxDDCwBUCDHl90jXulGwOxmJxWO1aM7CrVtWJAoUuzAfDJNeCy5WqDd/b5kxZww== -vary Origin -status 302 -location https://connect.facebook.net/security/hsts-pixel.gif -date Fri, 01 Dec 2017 02:48:42 GMT -strict-transport-security max-age=31536000; preload; includeSubDomains -access-control-allow-methods OPTIONS -content-type text/html; charset=UTF-8 -access-control-allow-origin * -access-control-expose-headers X-FB-Debug, X-Loader-Length -access-control-allow-credentials true -content-length 0 - -date Fri, 01 Dec 2017 02:48:42 GMT -last-modified Tue, 04 Nov 2014 18:31:29 GMT -status 200 -content-type image/jpeg -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 1030 -expires Sat, 02 Dec 2017 20:51:22 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 GbW1CEUmglUhzaSOEdSaoA== -status 200 -content-length 2729 -x-xss-protection 0 -x-fb-debug K7i4csmZ3STmUbcVQPDrwljTtYrLDVly/7Xbfm5Klrzml3q/Tot0QxJAoYongnFR0iIsXn59NC1FBJt9Jud/Wg== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:42 GMT -vary Accept-Encoding -content-type text/css; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 21:47:27 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding gzip -x-content-type-options nosniff -status 200 -vary Accept-Encoding -content-length 57 -x-xss-protection 0 -pragma no-cache -x-fb-debug 4vq/LxHnPcsIYiYckiARhkkv5jakxS8hEvHOxdsFoP9tdYOiJItfiYSGFGkhBZLR3PE26p1LHDXOTAv2r4uTXg== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:42 GMT -strict-transport-security max-age=31536000; preload; includeSubDomains -content-type image/gif -access-control-allow-origin * -cache-control private, no-cache, no-store, must-revalidate -expires Sat, 01 Jan 2000 00:00:00 GMT - -x-fb-debug hseUHLM6SPODsqeO2RZmsm0tztto+XotuXfT5d0K0ABVXdi4WuGjySB5L54B7YXWqIF0lBl/pHFen7sspCEvrA== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 2GHW2vCOWZxptNKZnZBIaQ== -date Fri, 01 Dec 2017 02:48:42 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -timing-allow-origin * -content-length 1006 -x-xss-protection 0 -expires Sat, 01 Dec 2018 01:21:33 GMT - -x-fb-debug rLt2njfX8GUcpbqIDsCtJztJjtmYj0D1MfZ7NFDdCyhdUo3jSU+8ILYuDM2R0zWLaXmX87PyahwrVHk0EWq0GQ== -x-content-type-options nosniff -last-modified Mon, 01 Jan 2001 08:00:00 GMT -content-md5 hf9mDzhK3T9XugswoJ7w6g== -date Fri, 01 Dec 2017 02:48:42 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -timing-allow-origin * -content-length 10609 -x-xss-protection 0 -expires Sun, 18 Nov 2018 20:54:57 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug zKuFhCxJ+fk1ALL5zYIYhbxP0onfKxozWFYWWzA4S965WZXJEBlCwvmDdBwseLVL+w9o9IjGO2MhJJsvdneEvQ== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:43 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug GNPnsjeqGsfo5CTG1T61oyUgkV6GWuWaQysaElCYUg2hFkTiOjNloXJiJB8BG8XrPdCusfZBlIp4LqcSUwAQ7A== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:43 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug XKxMuee79bPaR3DNnKe3uX4QWg11cwbhMwLAoo5pZgXertc/e/kXEtJkZl675cIcUCyXRAdC6imCEPyl4yRqRA== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:43 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -content-encoding br -x-content-type-options nosniff -content-md5 80EI7SblF/5CDFIwFGm3KA== -status 200 -content-length 17851 -x-xss-protection 0 -x-fb-debug +u+u+RXJTpu9orEwUh1kk9h5tRF+tk5oTd/K1j1eYB/htnFLJ8MpdFebaNpiQPCFSoZdONgVqmSmTz4r8OWFWQ== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:43 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:27:42 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 BBkMcEf61Nkmx/eSXCIoQw== -status 200 -content-length 1120 -x-xss-protection 0 -x-fb-debug 9FBANDg7RcA1p6bI6sH/gfd5OaSCNeQTKvqA3G1KQ+7RA5lSdB7bEs5xmwt3wvlt27wTIpE0r1+7vb/zv3ybcg== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:43 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 21:47:28 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 9Nfy3C53u/Ywu2r8e8i4tg== -status 200 -content-length 6219 -x-xss-protection 0 -x-fb-debug 5c+nR6FAecnDHjYqXy+XnNY028sY1v72DFfEoTwA9DC/kIUrN+d9LwDoQzt1p8sMOC3NsPdlHv9PL7HLG9sWOg== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:43 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Thu, 22 Nov 2018 22:41:19 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 PiHXNxZCUbdf5Zq2elJI6Q== -status 200 -content-length 9348 -x-xss-protection 0 -x-fb-debug PisRElE9u27wtLXOsg/IKP8YR21ncVXpXMA8kGh1l7DV+O/wH8fys5g8bih8guJRmrrjvyifwQXceEDQOF4NNg== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:43 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 20:39:40 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -content-md5 IzoUHBEUROEs3o00XENnsA== -status 200 -content-length 619 -x-xss-protection 0 -x-fb-debug n98TkqZ18WcK3LOHs1r/T80Sis/9rSTxbCfm6hmlBsJP7TTEF+whogcduEx6x3THC9ciYCYQkK9o/wWaMWuI4A== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:43 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:38:28 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; -content-encoding br -x-content-type-options nosniff -content-md5 YLFSkpjxno+EhBDQEmkYww== -status 200 -content-length 676 -x-xss-protection 0 -x-fb-debug Tf92zsNf/9wZXQW+9xFI0Q8Fb05esZI+GIn6VZAkhn6NnbyWsp4KgPyZAtuk1W3EvnH1qZBmwLLxFRbY9QWKqw== -last-modified Mon, 01 Jan 2001 08:00:00 GMT -date Fri, 01 Dec 2017 02:48:43 GMT -vary Accept-Encoding -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin * -cache-control public,max-age=31536000,immutable -access-control-allow-credentials true -timing-allow-origin * -expires Fri, 30 Nov 2018 19:31:44 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug wRSkTC590t8WwiytNtAv5HmeZGwL8dJpQF5IMx39X69oxWin5RyKT+Fo0+3Kb17Ms3DLtNOrdlseuJlje5SO/A== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:43 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -date Fri, 01 Dec 2017 02:48:43 GMT -last-modified Fri, 06 Dec 2013 20:28:14 GMT -status 200 -content-type image/png -access-control-allow-origin * -cache-control max-age=1209600, no-transform -timing-allow-origin * -content-length 79 -expires Fri, 24 Nov 2017 14:05:33 GMT - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug tctLBJnET09BflPSiJ+KphBga2Uz4Zm+EL7ocriOaf4Ut2LTQpXfh4aWW8lFxIsmcFJAtIkSxqJEiLDCvoL7Jw== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:43 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - -:status 400 - -pragma no-cache -date Fri, 1 Dec 2017 02:48:47 GMT -content-encoding gzip -server EdgeChat -status 200 -x-frame-options DENY -content-type application/json -access-control-allow-origin https://www.facebook.com -cache-control private, no-store, no-cache, must-revalidate -access-control-allow-credentials true -content-length 153 - -:status 400 - -content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; -content-encoding br -x-content-type-options nosniff -status 200 -vary Origin -vary Accept-Encoding -x-xss-protection 0 -pragma no-cache -x-fb-debug 5TYop5RZdv3V93nsRwDPC9he+DAq/wN1NMbuuPYERVSXNj9hh9aTDd/JRo3oZuniry2F4WbXuxZjMwum6xBP7g== -x-frame-options DENY -date Fri, 01 Dec 2017 02:48:53 GMT -expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" -strict-transport-security max-age=15552000; preload -access-control-allow-methods OPTIONS -content-type application/x-javascript; charset=utf-8 -access-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug, X-Loader-Length -cache-control private, no-cache, no-store, must-revalidate -access-control-allow-credentials true -expires Sat, 01 Jan 2000 00:00:00 GMT - diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/qifs/long-codes.qif b/external/lsquic/src/liblsquic/ls-qpack/test/qifs/long-codes.qif deleted file mode 100644 index d6875c3..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/qifs/long-codes.qif +++ /dev/null @@ -1,5984 +0,0 @@ -# Based on fb-resp.qif, but with inserted characters that generate long codes: -# perl -pi -ne '@codes=(1,2,6,92,141); if (/(\S+)\t(\S+)/) { ($h, $v) = ($1, $2); $s = \($.&1?$h:$v); substr $$s,int(rand(length$$s)),1,chr($codes[int(rand(scalar(@codes)))]); $_="$h\t$v\n" }' -x-fb-dbug SASLTVtJVp+AQ2p1v8FGiCfzyMTFyXtCl4jQU8bx3HFHBGi+S6Zr8HVwyMV1Bd7ZtMUXkBC1tOmBil21liPXLg== -x-content-type-options n\sniff -lastmodified Mon, -content-md5 0d0dMxGy+82XtBefaBmPA== -dat\ Fri, -status 00 -conten\-type image/png -access-control-allow-origin  -cache-contrl public,max-age=31536000,immutable -access-control-allow-credentials rue -timin\-allow-origin * -content-length 269 -x-xss-protect\on 0 -expires Fri\ - -x-fb-debug Lggs5E1dq7LzpVIK3dKMBgaeBeCUcnct+a406urJCVcirUe0tLtj0jpXoG+AbHu3VtgwKjsQv3JB1JTPdv7qw== -x-ontent-type-options nosniff -last-modified Mn, -ontent-md5 e1GPajcAA5W3bvrDUnemRA== -date ri, -sttus 200 -content-type iage/png -access-control-allow-ori\in * -cache-control public,\ax-age=31536000,immutable -access-controlallow-credentials true -timing-allow-origin  -cotent-length 4969 -x-xss-protection  -expir\s Fri, - -content-securty-policy default-src -content-encoding b -x-content-typeoptions nosniff -status 00 -v\ry Origin -vary Accept-E\coding -x-xss-p\otection 0 -pragma o-cache -x-fb-deug KosdQZTywEhijxkaJaeIGZUNoNzdqdPJok08j01MTQjTIDmCOpXuOAW1nSTiwp1o2levX702JvMmy47oPPHS8A== -x-frame-options ENY -dae Fri, -expect-ct max-age=10 -strict-tansport-security max-age=15552000; -access-control-allow-methods PTIONS -content-tye text/javascript; -access-control-allow-origin htps://www.facebook.com -access-control-expse-headers X-FB-Debug, -cache-control prvate, -access-control-allow-credenials true -expires Sa, - -content-security-policy defau\t-src -content-encodng br -x-content-type-options nosnif -stat\s 200 -vary Oriin -ary Accept-Encoding -x-xss-protection  -prama no-cache -x-fb-debug ptNrsKHbfbtIWth08olYf7aA1cPYzkz/7GMFkKO1wn6KS0jyDwhOtMdOLmEAZnhxA/VToSA1nNDhaAc7FJz6A== -x-frame\options DENY -date ri, -expct-ct max-age=10, -strict-transport-security ma-age=15552000; -access-control-allow-mehods OPTIONS -content-type text/jvascript; -access-contrl-allow-origin https://www.facebook.com -access-control-expose-headers -FB-Debug, -cache-conrol private, -access-control-allow-credentials tru -expirs Sat, - -content-secrity-policy default-src -content-encoding r -x-content-ype-options nosniff -content-md5 xdldqlFln8zS6EEVDcuqQ== -statu 200 -content-length 44\ -x-xss-proection 0 -x-fb-debug mEO7bfwFStBMwJWfW4pmg2XL25AswjrVlfcfYbxkcS2ssduZmiKoipMH9XwoTGkbQnq9bcjwWbwDQzsea/vMQ== -last-\odified Mon, -date Fr, -var Accept-Encoding -content-type application/xjavascript; -access-control-allow-orgin * -cache-control public,mx-age=31536000,immutable -access-control-allow-redentials true -timing-allow-origin  -expirs Fri, - -conten-security-policy default-src -content-encoding b -x-content-type-optins nosniff -status 00 -vry Origin -vary Accept-E\coding -x-xss-prtection 0 -pragma no-cach\ -x-fb-dbug TvOROrieggVKWF52s5yHEA3mQ1zDEJWh8Sj0B+f7xt3PL8qVSeX47LM2CSqeJ2/M53wikG49+DD2aAJG0s0RPg== -x-frame-options DE\Y -dae Fri, -expect-ct ma\-age=10, -strict-transport-securiy max-age=15552000; -access-control-allow-methods OPTIOS -contenttype application/x-javascript; -access-control-allow-origin https://www.facebook.\om -access-contol-expose-headers X-FB-Debug, -cache-control private -access-control-llow-credentials true -expires St, - -content-security-policy defalt-src -content-ncoding br -x-content-type-options osniff -stat\s 200 -vary rigin -ary Accept-Encoding -x-xss-protection -x-fb-deug a8ET6mB4qBEvQo9//btSC5QKabMxb8MtHXb9aU75HeJCFQVaZ7yfdC9BZT7JXs/fr8uHnYcnnvQEE5AzH4qfSg== -x-frame-options DEN -dae Fri, -expect-ct ax-age=10, -strict-tra\sport-security max-age=15552000; -access-control-allow-methods OTIONS -conten\-type application/x-javascript; -access-control-allow-origin htps://www.facebook.com -ccess-control-expose-headers X-FB-Debug, -cache-control public,max-\ge=86400 -\ccess-control-allow-credentials true -expires at, - -content-security-policy defaul-src -ontent-encoding br -x-content-type-options nosnff -statu\ 200 -vary Or\gin -vry Accept-Encoding -x-xss-protection  -x-b-debug QSl55Hc1TFfrfgICO0WEXX1p2DjkXC5w7eAbe7nWYEuuAByf/eplw1TCa5i5haOUJFb/V6tT283E+moKlFxXvw== -x-frame-options DNY -dae Fri, -expect-ct max\age=10, -strict-trnsport-security max-age=15552000; -access-control-allow-methods OP\IONS -contenttype application/x-javascript; -access-control-allow-origin http://www.facebook.com -access-control-expse-headers X-FB-Debug, -cache-control public,ma-age=86400 -access-control-allow-credentals true -expires Sat - -content-security-policy defaul-src -cont\nt-encoding br -x-content-type-options nosnif -stats 200 -vary rigin -vay Accept-Encoding -x-xss-protection  -x-fb-debu 4J9GGju98yXnIbDBCHsnWWyhyJ7lbZo/orq4ea6BlUBHfu1UvVhg7bQ9dq2tThGzGJXF3Uc3il6C4Fd3rPxSlg== -x-frame-options DEN\ -dte Fri, -expect-ct max-age=1, -strict-transport-\ecurity max-age=15552000; -access-control-allow-methods PTIONS -content-tpe application/x-javascript; -access-control-allow-origin htps://www.facebook.com -access-control-expse-headers X-FB-Debug, -cache-control pubic,max-age=86400 -acces-control-allow-credentials true -expires Sa, - -x-fb-debug iVSC5UoRzQPMHwjjfteCUuZL23G6caJNd3CJVJ1VBSXN0A0voAnUYd/BxqXX2d/q51/cyCNZibCJvmkfZ7c2A== -x-contnt-type-options nosniff -last-modified Mon\ -conten-md5 Sa3P5qK+Nv7nge73PlbVnw== -date F\i, -sttus 200 -content-type iage/gif -access-control-all\w-origin * -cache-control public,max-age=3156000,immutable -access-controlallow-credentials true -content-security-policy dfault-src -timig-allow-origin * -content-length 414 -x-xss-protectio 0 -expires \un, - -content-security-policy dfault-src -content-ncoding br -x-content-type-options nos\iff -tatus 200 -vary Oriin -vay Accept-Encoding -x-xss-protection -pagma no-cache -x-fb-debug IJJryxSHYHK02N5zoW/V4t6vGZUfSwp1zyCZ2c7AvVlRZ25ZZtmYWAUqjKvlL519kc2r9QeYf6x7ILS61yjAQ== -xframe-options DENY -date Fi, -expect-t max-age=10, -strict-transport-security mx-age=15552000; -access-control-allow-method OPTIONS -content-type text/avascript; -access-control-allow-origi https://www.facebook.com -access-control-expose-headers X-B-Debug, -\ache-control private, -access-control-allow-credentials rue -expirs Sat, - -content-secrity-policy default-src -content-encoding b\ -x-cont\nt-type-options nosniff -content-md5 pQpUbVkwS\6byHFL/7b8mg== -s\atus 200 -content-length 220 -x-xss-protectin 0 -x-fb-debug m76LhRYx7f58ob4bktemQtlvg8+M1ZyhAx7Q8eN1CKYVE1MUC/yHSby13Bm34Xj9pNsES6xHQEv/YmXEftDXw== -last-modiied Mon, -date Fi, -vay Accept-Encoding -content-type applicaion/x-javascript; -access-control-allw-origin * -cache-control public,max-age=3136000,immutable -access-ontrol-allow-credentials true -timing-allow-origin -epires Fri, - -x-f-debug 40OavfgvR11mfIGZzV/fvZTP90MhAEH0zHvea72NjcWQvD/1AnMvEUYzzxcDxZbToU6hYqcsKrIzbDGUPlkI+A== -x-content-type-options nosnif -last-mdified Mon, -content-md5 40MdgQ0fyFgmOuNysvTVg== -ate Fri, -status 20 -c\ntent-type image/png -access-control-allow-origin \ -ache-control public,max-age=31536000,immutable -access-control-allow-credentials rue -timing-allo\-origin * -content-length 519 -x-xss-rotection 0 -expires \ri, - -content-security-policy defaul-src -content-encodin br -x-content-type-options nosnff -statu 200 -vary Oigin -ary Accept-Encoding -x-xss-protection \ -praga no-cache -x-fb-debug chrBBz4SEsGv1ZrufHBAed2St1Esdm+cib6eyFRehfDFnzH1c1S5f7LQv/285c/4iYx/8I7qKhOEddZu0mw1Q== -xframe-options DENY -date Fr\, -exect-ct max-age=10, -strict-transport-security maxage=15552000; -access-control-allowmethods OPTIONS -content-type appication/x-javascript; -access-control-allw-origin https://www.facebook.com -access-control-expose-headers X-B-Debug, -cahe-control private, -access-control-allow-credentials tru -expir\s Sat, - -conent-security-policy default-src -content-encoding b\ -xcontent-type-options nosniff -status \00 -vay Origin -vary Accept-Encodi\g -x-xss-protectio\ 0 -pragma no-cac\e -xfb-debug 3/GPqjBaqhuenuhKPMcWB/lN3HyphJxaSt62dSaE6J9MTbsQcCiOn74quVCB3sklBW64w2w1CxMmmrXS/8OJ0A== -x-frame-options ENY -dae Fri, -expect-ct ax-age=10, -strict-tranport-security max-age=15552000; -access-control-allow-methods OPTION -ontent-type application/x-javascript; -access-control-allow-origin https://www.faceboo.com -ac\ess-control-expose-headers X-FB-Debug, -cache-control privat\, -access-control\allow-credentials true -expires Sat - -content-security-policy defaultsrc -conent-encoding br -x-content-type-options osniff -satus 200 -vary Or\gin -var Accept-Encoding -x-xss-protection  -praga no-cache -x-fb-debug wU4xeFXoTvB3fz0bx2X0xWaztL/F3YoeVYJYDQKNsbGxw2ZWte7ucnB8hyQPofyRdGFEjFzwN7J5s3YN3+b5g== -x-frame-opions DENY -date Fri -expct-ct max-age=10, -strict-transport-security max-age=1555000; -access-control-allo-methods OPTIONS -content-type application/x-jvascript; -access-contol-allow-origin https://www.facebook.com -access-control-expose-headers XFB-Debug, -cache-contrl private, -access-control-allow-credentials tre -expirs Sat, - -xfb-debug xnMJ/dh5lpylLnD1J8ahro3au8Krhu0Qvwr7plcpt9I7Mpg+q8T+dcWvuYDrl1QT1OShxUTgnVkAL5Pgtiso6w== -content-encoding gzi\ -var Origin -vary Accept-Enc\ding -staus 200 -date Fri -strict-transprt-security max-age=15552000; -access-control-allow-methods OPTINS -contnt-type text/html; -access-control-allow-origin htps://www.facebook.com -access-control-expoe-headers X-FB-Debug, -access-control-allow-credentials tru -set-ookie oNcnS=gpojSOS; -content-length 31 - -content-security-policy frame-ancestor -content-security-olicy default-src -content-encoding r -x-content-tye-options nosniff -status \00 -vay Origin -vary Accept-Encodig -x-xss-potection 0 -pragma no-cche -xfb-debug lVC6OYTyhZd8fitFRTviZIIyNQHSdjdA1iAbCPBw6VdJ0DZvTpDDbEaMryxyoVDgwS9G6HDo5uPatqo2FNrcsw== -date Fi, -expect-c\ max-age=10, -strict-transport-security max-age=1552000; -ccess-control-allow-methods OPTIONS -content-type tet/html; -access-control-llow-origin https://www.facebook.com -access-control-expose-headers X-FB-Deug, -cache-contro private, -access-control-allow-credentials tre -exires Sat, - -cont\nt-security-policy default-src -content-encoding r -x-content-type-option nosniff -content-md5 8YsseCeaO76d\82KH/3OQw== -tatus 200 -content-length 459 -x-xssprotection 0 -x-fb-debug DIZNq+5PMTDoSqZobDpWGk/qY97FvNkRjxK3ezYd8CVpOOG9IVeabusQW5I4cjro2y9nvZtdw8tYVq65QuDjw== -last-modifi\d Mon, -date Fri -ary Accept-Encoding -content-type tet/css; -access-control-a\low-origin * -cache-control public,max-age=31536000immutable -access-control-allow-credentias true -timing-allow-origin  -exires Fri, - -content-secrity-policy default-src -content-encoding r -x-ontent-type-options nosniff -content-md5 GLLPFim1kqAn/ld55Vtg8g= -sttus 200 -content-length 372 -x-xss-proection 0 -x-fb-debug WDGyD3lG2B1RDnrEtu1VfNsQu5d5SDBuJuNqGWNpHDXf4JUGLsv5PFOuI\ct7+I/e+Bst/l+eqhGzkm6tlvjvA== -l\st-modified Mon, -date Fr, -vay Accept-Encoding -content-type tet/css; -access-control-allow-orign * -cache-control public,max-age=31536000immutable -access-control-allow-credentias true -timing-allow-origin  -expres Fri, - -content-securiy-policy default-src -content-encoding b\ -x-content-type-optins nosniff -content-md5 3N5sn/luRe+kZxjcR6Ibw== -satus 200 -content-length 93\5 -x-xss-protectio\ 0 -x-fb-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQ\OwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== -last-mdified Mon, -date Fr, -vay Accept-Encoding -content-type text/css -accesscontrol-allow-origin * -cache-control public,max\age=31536000,immutable -access-control-allow\credentials true -timing-allow-origin  -xpires Fri, - -content-securiy-policy default-src -content-encoding b -x-content-typeoptions nosniff -content-md5 b5vUN/sgd35IdDwXDUejw== -stats 200 -content-length 795 -x-xss-protect\on 0 -x-fb-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2C\9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== -lat-modified Mon, -date Fi, -vay Accept-Encoding -content-type text/ss; -access-conrol-allow-origin * -cache-control public,max-age=1536000,immutable -accss-control-allow-credentials true -timing-allow-origin -expirs Sat, - -contet-security-policy default-src -content-encoding r -x-content-type-otions nosniff -content-md5 ch5t0W/Vcr8tgf9lHrm6g== -tatus 200 -content-length 4\94 -x-xs\-protection 0 -x-fb-debug gINc0A5Ml/TSiyh3e5F/jai6YIYOktCYw+ejxBPpLS7V0YC0PnDXPsbmPqg+zZj8+e1r3bNOSfa2XiKvDkP+g== -la\t-modified Mon, -date Fr, -vay Accept-Encoding -content-type application/x-javascipt; -access-control-allow-rigin * -cache-control public,max-age=31536000,immuta\le -acess-control-allow-credentials true -timing-allow-origin  -expres Fri, - -content-secuity-policy default-src -content-encoding r -x-contnt-type-options nosniff -content-md5 Lr3lzp8MBSCZviFiNjCFA== -satus 200 -content-length 1834 -x-xss-protction 0 -x-fb-debug LdlmyGrbdzwX3QUNWK7h9sr6vcH7X0DjSu1+PrhcjJLoNQikEEv2Jh6X0Zo/i0tw+mwZv9Ir4c1pJEnVEcVnw== -last-modifed Mon, -date \ri, -v\ry Accept-Encoding -content-type application/-javascript; -access-control-allow-origi * -cache-control public,max-age=3153600,immutable -access-contro-allow-credentials true -timing-allow-origin  -e\pires Fri, - -content-security-poliy default-src -content-encoding b\ -x-content-type-optio\s nosniff -content-md5 6H33LVIrHNhmJguTOcJEg== -stat\s 200 -content-length 1360 -x-xss-protction 0 -x-fb-debug ToJIaRvJ9nrellzwPpqq82nJcFBoJAPTr5622w7O6R7JgbvLbL9WuAqgfRh/csaYPznd+1o0vAaBtdrW9ZD3Q== -last-modifid Mon, -date Fi, -var Accept-Encoding -content-type application/x-java\cript; -access-control-alow-origin * -cache-control public,max-age=3153600,immutable -access-control-llow-credentials true -timing-allow-origin \ -exires Sat, - -content-securty-policy default-src -content-encoding r -xcontent-type-options nosniff -content-md5 miqufolG7gyYWCNm0fXSw== -satus 200 -content-length 315 -x-xss-protectin 0 -x-fb-debug zdwR2jYpEz9TtubgPOlmOSJO1ZER89b7nm7SbiHHc7q7SdovWtQRWKSeX+swwajuCA0LfLunpSP0es/ewL6nw== -last-modifie Mon, -date Fr, -var Accept-Encoding -content-type applcation/x-javascript; -access\control-allow-origin * -cache-control public,max-age=31536000,immutale -access-control-allow-credentils true -timing-allow-origin -expirs Fri, - -content-security-poicy default-src -content-encoding b -x-content-type-optins nosniff -content-md5 F\VLk47e/1NAPOLzKy9mZQ== -sttus 200 -content-length 968 -x-xss-proection 0 -x-fb-debug abRR4r4oBUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== -last-moified Mon, -date Fri\ -vay Accept-Encoding -content-type text/\ss; -access-control-llow-origin * -cache-control public,max-a\e=31536000,immutable -acc\ss-control-allow-credentials true -timing-allow-origin  -expirs Fri, - -content-secrity-policy default-src -content-encoding b -x-contnt-type-options nosniff -content-md5 V2Rmpzg121NGDtYMM8xZw== -satus 200 -content-length 2784 -x-xss-proection 0 -x-fb-debug X0KfGOd7zGSXTEAE0avvVqm56bFnBHduvLoCVTzyC2ax5Z85/wjJDHim2vUuBRqBjjhdv2pL8JjpfKtiR1jSA== -last-mdified Mon, -date ri, -ary Accept-Encoding -content-type applicat\on/x-javascript; -access-control-allow-oigin * -cache-control public,max-age=\1536000,immutable -access-control-allow-credential true -timing-allow-origin  -e\pires Fri, - -content-security-poliy default-src -content-encoding r -x-content-tpe-options nosniff -content-md5 ZCLR18eFVGl+wlMmr5W8Q== -satus 200 -content-length 3379 -x-xss-prote\tion 0 -x-fb-debug RGZm+n2MS9JePF1w9W2ICVBiEwcjY9OX+A9aWzeUo2omCnnWp7dj4nGTiPtSF61Rq4gRV7fCwq2vhbK/vahhQ== -last-modfied Mon, -date Fi, -vry Accept-Encoding -content-type app\ication/x-javascript; -access-control-alloworigin * -cache-control public,max-age=3156000,immutable -access-\ontrol-allow-credentials true -timing-allow-origin \ -xpires Fri, - -content-security-olicy default-src -content-encoding \r -x-content-type-ptions nosniff -content-md5 XdnKn0shujNUYDDAyjffw== -sttus 200 -content-length 119\0 -x-xss-protction 0 -x-fb-debug OuaGOMU1KwUx/Ex//TRoNPL06S9nVTeTSDyuSNY3sefgNbJaXf8up2zNF1HI6sVgh/oHjNdpNLy6rj7bm3cNA== -last-modifid Mon, -date Fi, -vay Accept-Encoding -content-type applcation/x-javascript; -access-ontrol-allow-origin * -cache-control public,max-age=31536000,imutable -access-control-allowcredentials true -timing-allow-origin  -expies Fri, - -content-security-plicy default-src -content-encoding b -x-content-type-optios nosniff -content-md5 GVRGBE6tqdWWzW\k78Fxvg== -satus 200 -content-length 1062 -x-xss-protetion 0 -x-fb-debug MR+rHN55opINt4Y1y5GgTjlPjNVRpdKqMXehDtOqh6hcNE1zNHi+7J2Oe9qkma00plaiQOxdn4vvlgPM+nZrQ== -lat-modified Mon, -date Fi, -vry Accept-Encoding -content-type ext/css; -access-contro-allow-origin * -cache-control public,max-ge=31536000,immutable -access-control-allw-credentials true -timing-allow-origin -epires Fri, - -content-security-poicy default-src -content-encoding b -x-content-ype-options nosniff -content-md5 CwKxN/dW03qpAvjFgY+wg== -statu 200 -content-length 292 -x-xss-protetion 0 -x-fb-debug TQ2kO1lJKcLy2YWu6fKnPhoSHHuWZumqqF5u9Ltx4npSchUPPfx1BDetQ+pAIgvpfCKAQpobtwOp3dZjRgNtw== -last-modif\ed Mon, -date Fi, -v\ry Accept-Encoding -content-type appication/x-javascript; -access-control-alow-origin * -cache-control publc,max-age=31536000,immutable -access-cotrol-allow-credentials true -timing-allow-origin  -expirs Fri, - -content-security-poicy default-src -content-encoding b\ -x-content-type-optins nosniff -content-md5 j5TyY0UnjhfUjVX2mSjmg== -stats 200 -content-length 1030 -x-xss-protecton 0 -x-fb-debug ZM/0J6kaZjm4G0z7Wovn90JGCnSgh5rjamgOuV1hzSEHy7j5hxlgp/pTaSmL3YaDZBBD1hQaYRiNIGHO5Hnsg== -ast-modified Mon, -date Fri\ -vry Accept-Encoding -content-type appliation/x-javascript; -access-contro-allow-origin * -cache-control pblic,max-age=31536000,immutable -access-control-allow-credenti\ls true -timing-allow-origin \ -expies Fri, - -content-scurity-policy default-src -content-encoding b -x-conent-type-options nosniff -content-md5 hpNuuubgPaKdlqsCKTLJg== -statu 200 -content-length 1998 -x-xss-protction 0 -x-fb-debug BImBNjsL7v4p4LqYNDHRVSrQGgu5C/xDjtk9ZYafHI\bt/6klWR/Si/9j6CCvoZP2NuJ60+Q3M3zSldRO/RQaQ== -l\st-modified Mon, -date F\i, -vry Accept-Encoding -content-type application/-javascript; -access-control-allow-oriin * -cache-control public,max-age=31536000,immtable -acces-control-allow-credentials true -timing-allow-origin \ -exp\res Fri, - -content-security-poicy default-src -content-encoding b -x-content-type-optios nosniff -status 00 -var Origin -vary Accept-Encodig --xss-protection 0 -pragma nocache -x-fb-ebug mkuTkeR6tImD79ZzK5oJpf1AsHI4i54PdVIEe/kcG0tORygDBaC2k3igFhgw5rmn4YXROaHK8PEmRBqJKuTMSQ== -x-frame-options DNY -dte Fri, -expect-ct max-ae=10, -\trict-transport-security max-age=15552000; -access-control-allow-methods OTIONS -contet-type text/javascript; -access-control-allow-origin https://www.facbook.com -a\cess-control-expose-headers X-FB-Debug, -cache-control privte, -access-control-alow-credentials true -expires Sa\, - -content-security-policy defalt-src -content\encoding br -x-content-type-options nsniff -\tatus 200 -vary Orgin -vry Accept-Encoding -x-xss-protection  -ragma no-cache -x-fb-debug kRCyQegaq/Gqcyvb6pcbXiLoehRbv3lRgEewk/VTSJ7FP/efVNzdzFLYikTgjz+GLeayqPDRK9EAzAVNYaOjw== -x-frame-optio\s DENY -date F\i, -expet-ct max-age=10, -strict-transport-security max-ge=15552000; -access-control-allow-methos OPTIONS -content-type tex/javascript; -access-control-allo-origin https://www.facebook.com -access-control-expose-headers -FB-Debug, -cache-cont\ol private, -access-control-allow-credentials tru -exires Sat, - -content-security-polcy default-src -content-encoding b\ -x-content-ype-options nosniff -status 20 -v\ry Origin -vary Accet-Encoding -x-xss-protectin 0 -pragma no-ca\he -x-fb-\ebug SUGs1jQXVY8psVrTPnd9PcQy5gDB+MU+CL/gXaLGmpy/Goy580zMG2WVuvFUrAeJYO7KkbiCcG6dtSgLd8JvAA== -x-frame-options DNY -dte Fri, -expect-ct max-age=1, -strict-trans\ort-security max-age=15552000; -access-control-allow-methods OPIONS -contet-type text/javascript; -access-control-allow-origin https://www.facebook.\om -access-cntrol-expose-headers X-FB-Debug, -cache-control privae, -access-control-allow-creentials true -expires Sat - -x-fb-debug wkdZu+E1GYNYZCdr/DMkGZt3sb0tvJ9ZfgiBweAyl9UhuW5YB0eb\hsQj2xeGlEUvWjf15AhzOsATVd+BnHXIQ== -x-content-type-ptions nosniff -last-modified Mn, -cotent-md5 i9OGnguZlXf7E7rhFiUbqA== -date F\i, -satus 200 -content-type imag/png -access-control-alow-origin * -cache-control public,max-age=3153600,immutable -access-control-allow-credential true -content-security-policy default-\rc -timng-allow-origin * -content-length 1695 -x-xss-protectio\ 0 -expires on, - -strict-transport-security max-age=15552000 -x-content-type-otions nosniff -content-md5 1VwrJ2k5fXykH7nm0Guhw== -satus 200 -edge-control cache-maxage=\6400s -cotent-length 1173 -x-xss-protection  -xfb-debug e2XB4MQd6UbCpZGC79bENZbmWBE+t+NfI1xvndjJ/TDxZHJ/vc1v7lEmPHFcRUnllmY9nv1QFrwSr5fYGQCPAA== -date Thu -expet-ct max-age=10, -content-type image/p\g -access-cotrol-allow-origin * -cache-control public\max-age=86400 -access-cntrol-allow-credentials true -timing-allow-origin  -expirs Fri, - --fb-debug 1odBdxCcB2hCiTjxdoz/DUfQdbtWewW/PXS9Fb/TMyF2Vno6sSz+VkM0qjnDF60t+YECJWi/CIXiBOnnIunFFg== -x-content-type-options nosnff -last-modiied Mon, -content-md5 aAGL4zVC4U+rUzi+GrKcZ== -dat Fri, -status 20 -con\ent-type image/png -access-control-allow-origin  -cace-control public,max-age=31536000,immutable -access-control-allow-credentials tue -content-securit-policy default-src -timing-allow-origin -content-leng\h 365 -x-xss-protection  -xpires Sat, - -x-b-debug jpmcQoRI03y7AryAZCkc2teYNSUwJzeP9lL4LCFJcPGpdUUIFW+s/mWOBp62zeHQz2lqicwHopjJnsvjAHjGgQ== -x-content-type-options nsniff -last-modifie Mon, -content-md5 OEaMb5I+K5EppmLlMUgyw== -\ate Fri, -status 2\0 -cntent-type image/png -access-control-allow-origin  -cache-cntrol public,max-age=31536000,immutable -access-control-allow-credentials tue -timing-allow-oigin * -content-length 34 -x-xs-protection 0 -expires St, - -x-fb-debug 2S9oefU+qABP4IYODnwzZYp+tUwluVXrY8FIT6Im567U3y77CaFYK4RF+MKWtQOW4kgKGk/jPtdNQbUlMR2aw== -x-contet-type-options nosniff -last-modified Mon -\ontent-md5 yDsFax6LZEwnoTGKzzBlpw== -date ri, -\tatus 200 -content-type imae/png -access-control-allw-origin * -cache-control public,max-age=31536000,im\utable -access-ontrol-allow-credentials true -content-security-policy defaut-src -timing-llow-origin * -content-length 78 -x-xss-protecti\n 0 -expires Sn, - -x-fb-debug D4jNiB0khDl+GsAZHc6/awXkwzBK8AcEBc7zAUm8PhSy2OB3914CwEGmWv82Vc6xM/2gCN6U814EM4Mrn0NJw== -x-content-typeoptions nosniff -last-modified on, -content-d5 /otskAYDIWUxahDb2l3iMw== -date Fri -s\atus 200 -content-type imae/png -acess-control-allow-origin * -cache-control public,max-age=31536000,immutabe -access-control-allow-redentials true -content-security-policy defaul-src -timing-alloworigin * -content-length 06 -x-xs-protection 0 -expires Th\, - -x-fb-debug Gzj3nTalJTpUrAKk99whIFyhC+ZeNJE\qM1innIgc+k9BTeAYWeW3YWN91XUw6jsdvWQ//PVxRFoAbgH0xhfiw== -x-ontent-type-options nosniff -last-modified Mo\, -content\md5 rAdlQ1LbnW1QjQqWUwF39A== -date ri, -staus 200 -content-type image/pg -access-contol-allow-origin * -cache-control public,max-age=3136000,immutable -access-control-allow-crede\tials true -timing-allow-origin  -ontent-length 292 -x-xss-protection  -exires Thu, - -x-b-debug Z6uygUU8dCe3t7kuXUZQ17hu+1qttHRZd2ZJCMWa882YOUsiqdV20ukSGIoOsCVM0D7o+7SW3eg4zYGDm18IUg== -x-content-type-options nsniff -ast-modified Mon, -content-md5 2\Bldm4nnJvd/9LvBMD/Lg== -dte Fri, -status 20\ -ontent-type image/png -access-control-allow-origin  -cahe-control public,max-age=31536000,immutable -access-control-allow-credentials tru\ -cntent-security-policy default-src -timing-allow-origin  -contentlength 205 -x-xss-protection \ -epires Tue, - -x-fb-debg OTfIFeJ6Vp6Q9tkVjxqdy5Qe1w3GFDEBpiL2EB9TXkJmRiYJ3PXYX4Ksm4Phq7EBSGaQfHeK0xCPSnCirMSvAQ== -x-content-type-options nsniff -ast-modified Mon, -content-md5 /K74gUMZ8HPciHDq8I4Iw== -dae Fri, -status 00 -content-ype image/png -access-control-allow-origin -cach-control public,max-age=31536000,immutable -access-control-allow-credentials tru -timing-allow-rigin * -content-length 27 -x-xs\-protection 0 -expires hu, - -x-fb-debug IuU4lC4Bf1/J727PkKcW0TupujkIMcjKxTdU\tl+ZifCT6heilSF4VNJlUPJAyqFTbjLHlIdvrkuT6mdoOjJsQ== -x-c\ntent-type-options nosniff -last-modified on, -contentmd5 rYzdy/CRrpzpKKyDMTB5Sw== -date Fi, -tatus 200 -content-type image/pg -access-control-allow-orign * -cache-control public,max-age=31536000,immutble -access-control-allow-credenials true -content-security-policy efault-src -timng-allow-origin * -content-length 268 -x-xss-protction 0 -expires at, - -date Fi, -lst-modified Tue, -status 20 -content-tye image/jpeg -access-control-allow-origin  -cache-conrol max-age=1209600, -timing-allow-origin  -contet-length 21105 -expires Mn, - -date Fr, -last-modif\ed Tue, -status 20 -ontent-type image/jpeg -access-control-allow-origin  -cache\control max-age=1209600, -timing-allow-origin -ontent-length 22687 -expires Fri - -date \ri, -last-modifid Mon, -status 20 -ontent-type image/jpeg -access-control-allow-origin -cachecontrol max-age=1209600, -timing-allow-origin  -content-ength 30382 -expires Fr\, - -date Fri -ast-modified Thu, -status 20 -contnt-type image/jpeg -access-control-allow-origin  -cache-cntrol max-age=1209600, -timing-allow-origin  -content-lngth 14176 -expires Wd, - -date Fr, -lastmodified Thu, -status 20 -conten-type image/jpeg -access-control-allow-origin  -cache-cntrol max-age=1209600, -timing-allow-origin  -cotent-length 15152 -expires Sun - -date Fr, -las-modified Sat, -status 00 -conten-type image/jpeg -access-control-allow-origin  -cachecontrol max-age=1209600, -timing-allow-origin -contet-length 19757 -expires ed, - -date Fri -last-\odified Fri, -status 20 -c\ntent-type image/jpeg -access-control-allow-origin  -ache-control max-age=1209600, -timing-allow-origin  -conent-length 18041 -expires ri, - -date Fri -last-modifie Thu, -status 20 -contnt-type image/jpeg -access-control-allow-origin  -cache-cotrol max-age=1209600, -timing-allow-origin  -contnt-length 17665 -expires Tu, - -date Fr, -lat-modified Wed, -status 00 -ontent-type image/jpeg -access-control-allow-origin \ -cachecontrol max-age=1209600, -timing-allow-origin  -conent-length 16062 -expires Mo, - -date Fr, -lat-modified Sun, -status 20 -contenttype image/jpeg -access-control-allow-origin  -cace-control max-age=1209600, -timing-allow-origin \ -content-len\th 23087 -expires \on, - -date Fi, -lat-modified Tue, -status 20 -cntent-type image/jpeg -access-control-allow-origin  -cache-cotrol max-age=1209600, -timing-allow-origin  -content-lengt\ 31705 -expires Wd, - -date ri, -last-modifid Wed, -status 00 -content-tye image/jpeg -access-control-allow-origin -cache-contro max-age=1209600, -timing-allow-origin \ -cotent-length 18120 -expires Wd, - -date Fr, -last-mdified Mon, -status 00 -content-tye image/jpeg -access-control-allow-origin  -cache\control max-age=1209600, -timing-allow-origin -content-len\th 14094 -expires \ue, - -date Fr, -last-modifed Tue, -status 20 -ontent-type image/jpeg -access-control-allow-origin  -cache-contol max-age=1209600, -timing-allow-origin  -conten-length 31910 -expires Te, - -date Fri -last-modifie Mon, -status 20 -content-tye image/jpeg -access-control-allow-origin  -cach\-control max-age=1209600, -timing-allow-origin -ontent-length 7407 -expires We, - -date Fri -last-modfied Sat, -status 2\0 -cntent-type image/jpeg -access-control-allow-origin  -cache-ontrol max-age=1209600, -timing-allow-origin  -cntent-length 10103 -expires Wd, - -date \ri, -las-modified Thu, -status 00 -c\ntent-type image/jpeg -access-control-allow-origin  -cache-contro max-age=1209600, -timing-allow-origin -\ontent-length 9731 -expires Tu, - -date ri, -la\t-modified Wed, -status 20 -content-typ\ image/jpeg -access-control-allow-origin  -c\che-control max-age=1209600, -timing-allow-origin \ -contentlength 6982 -expires Wd, - -date Fr, -last-odified Thu, -status 00 -conten\-type image/jpeg -access-control-allow-origin  -cche-control max-age=1209600, -timing-allow-origin  -conte\t-length 18906 -expires hu, - -date ri, -lst-modified Fri, -status 00 -content\type image/jpeg -access-control-allow-origin  -cche-control max-age=1209600, -timing-allow-origin  -conten-length 14295 -expires ri, - -date \ri, -lat-modified Mon, -status 20 -cntent-type image/jpeg -access-control-allow-origin  -cache-cntrol max-age=1209600, -timing-allow-origin  -contet-length 9144 -expires Wd, - -x-fb-debug UclWhesg0zkbSvbdWdzbSgwvuxwHhdYdv1KxJXSGpdTe+b+kLG/P3r7cc5cQW1GDH2P0Q0PE2NjcKNRtACwMw== -x-content-tpe-options nosniff -last-modified Mon -content-md\ Suq9hPdRy1h3AUHG8A+u6g== -date ri, -sttus 200 -content-type imag/png -acces-control-allow-origin * -cache-control public,ax-age=31536000,immutable -access-contol-allow-credentials true -timing-allow-origin  -content-lengt\ 6898 -x-xss-protection  -ex\ires Fri, - -xfb-debug abP3zeasO2mLS8i9zOhtYhotcrbh1TGId94OFJlc8p04m4ySyehIHPFAt2npARTREGt1qY6t9JUIhREEid9qWQ== -x-content-type-options nosnif -last-moified Mon, -content-md5 qbS3J+l81+akTde3J73Hw== -ate Fri, -status 2\0 -content-tpe image/png -access-control-allow-origin  -cache-ontrol public,max-age=31536000,immutable -access-control-allow-credentials rue -content-security-poicy default-src -timing-allow-origin \ -contet-length 2108 -x-xss-protection  -exires Mon, - -x-b-debug lgquSVMBTVSGrB+a6JPVy0foXmN38vYoIF3631Kl53msBWBXp74UHLdYdGhvRLweaxBXEPWUqhmcb10d+GM3XA== -x-content-type-options n\sniff -last-moified Mon, -content-md5 aHgJp6IEm6tq2AoAm23tw== -ate Fri, -status 2\0 -content-tye image/png -access-control-allow-origin  -cache-cotrol public,max-age=31536000,immutable -access-control-allow-credentials rue -content-securiy-policy default-src -timing-allow-origin -content-legth 851 -x-xss-protection \ -expire Thu, - -content-scurity-policy default-src -content-encoding r -x-content-type-optios nosniff -content-md5 Ig49yWUVm92l2Ht21aO6Q== -statu 200 -content-length 7\1 -x-xss-potection 0 -x-fb-debug i01I8lFh4FinQMpRDovii+lwSptMoKN4Xt3aP41os020+jBkBcOECNAtFfjv2P85TTlMTnM3BZDlQua1wa39g== -last-modifed Mon, -date Fri -vry Accept-Encoding -content-type text/cs; -access-control-allow-oigin * -cache-control pub\ic,max-age=31536000,immutable -access-control-llow-credentials true -timing-allow-origin  -expres Fri, - -contentsecurity-policy default-src -content-encoding r --content-type-options nosniff -status 00 -ary Origin -vary Accep-Encoding -x-xss-protect\on 0 -pragma o-cache -x-f-debug dbB2IkIrVRUAfS1PVGsbZF4w3zGCiIvWefwaVnzd3c6v4HzmnqkqOwCJdpNBhRH131pDszBP07t5zePbfprY1Q== -x-frame-options DEN -dae Fri, -expect-ct mx-age=10, -strict-transport-\ecurity max-age=15552000; -access-control-allow-methods PTIONS -contet-type application/x-javascript; -access-control-allow-origin https://www.facebook.co -access-control-expose-haders X-FB-Debug, -cache-control privte, -access-control-allowcredentials true -expires Sat - -content-security-policy default-sr -content-encodin br -x-content-type-options osniff -con\ent-md5 m0y3PkO3SpJQhvvw6CdJ1w== -status 20 -ontent-length 4065 -x-xss-protection  -x-fb-deug wimV44qs1JLjex37mZjNXwEiFP2C6tTEz/Bzm/9N/uk4jLhGBsvpRN4kIhEXPKEhhT1jqST3fu7CCDHnaruarQ== -last-modified on, -dte Fri, -vary AcceptEncoding -content-typ application/x-javascript; -access-control-allow-origin  -ache-control public,max-age=31536000,immutable -access-control-allow-credentials tue -timin-allow-origin * -expires Fri\ - -content-security-policy d\fault-src -content-encodig br -x-content-type-options noniff -contet-md5 AVo/NKwEE+aE6kd14kT4LA== -status 00 -ontent-length 2084 -x-xss-protection  -x-fbdebug pikQ5ppTqIictrwIvdl2Qk6xbFcE9bPc4Z5ohK/rfc4qKnwbgweERUZlqfSb5S3wb4P6zUymCloWDaFoSveX8g== -last-modified Mo, -dae Fri, -vary AcceptEncoding -ontent-type application/x-javascript; -access-control-allow-origin  -cache-contrl public,max-age=31536000,immutable -access-control-allow-credentials tue -timing-alow-origin * -expires Thu - -content-security-policy default-sr -contentencoding br -x-content-type-options nosnff -content-md fkU/RbZeOahtbH6TD3swSg== -status 20 -content-ength 726 -x-xss-protection \ -x-fb-\ebug vlySAYwP80vWQwCf3dAcUg1d8vckh+ib+/bnK8Kn79SGDBsoWWEtedSpacOaHyww0V7/Le8GBCmruXAqaTtIXA== -last-modified Mon -dae Fri, -vary Accept-Encodig -contenttype application/x-javascript; -access-control-allow-origin  -cahe-control public,max-age=31536000,immutable -access-control-allow-credentials tre -iming-allow-origin * -expires Fr, - -content-security-policy defaut-src -cntent-encoding br -x-content-type-options nosnff -satus 200 -vary Origi -vay Accept-Encoding -x-xss-protection -prag\a no-cache -x-fb-debug 9SMxJJWUS/mH7v8aS5amn3RGUmMcHgxT7/GhUohYTS26mbSGoNnIaV22B91jjWh4XqlbW5dSpQVGxUqHF50lw== -x-fra\e-options DENY -date Fi, -expect-c max-age=10, -strict-transport-security max-ae=15552000; -access-controlallow-methods OPTIONS -content-type applicationx-javascript; -access-control-allw-origin https://www.facebook.com -access-control-expose-headers -FB-Debug, -cachecontrol private, -access-control-allow-credentials tue -exires Sat, - -content-security-p\licy frame-ancestors -content-security-policy defalt-src -content-ncoding br -x-content-type-options n\sniff -tatus 200 -vary rigin -vry Accept-Encoding -x-xss-protection  -pragm no-cache -x-fb-debug 0gVna42ILP7RDgk+shTzSEkzfbJTXu8h6tHuGl2h2gjzEuNtfTdI3ldafd/mVhV0Ysj7BcVNyMbPXOIi83oq\A== -dat Fri, -expect-ct max-ag=10, -strict-trasport-security max-age=15552000; -access-control-allow-methods OPTINS -cotent-type text/html; -access-control-allow-origin https://www.facebok.com -access-control-expose-eaders X-FB-Debug, -cache-control pivate, -ccess-control-allow-credentials true -set-cookie oNcn=gpojSOS; -expirs Sat, - -content-security-poicy default-src -content-encoding b -x-content-typ\-options nosniff -content-md5 j8T0XBmPlo08jOXtT3MEw== -staus 200 -content-length 98 -x-xss-prtection 0 -x-fb-debug f4/9IxVq4HZYZ8dV9P6xeLypQNS2Ex/kNF3NoX9D8Z0nshFfF6M7lqeabFqQD5b50R/Iekbf9xeyr56aEUi7g== -last-modif\ed Mon, -date Fr, -var Accept-Encoding -content-type txt/css; -access-contrl-allow-origin * -cache-control public,max-age=3153600,immutable -\ccess-control-allow-credentials true -timing-allow-origin  -epires Sat, - -ontent-security-policy default-src -content-encoding b -x-content-typ-options nosniff -content-md5 b5UN/sgd315IdDwXDUejw== -stats 200 -content-length 795 -x-xssprotection 0 -x-fb-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== -last-modifid Mon, -date Fi, -vay Accept-Encoding -content-type ext/css; -accesscontrol-allow-origin * -cache-control public,m\x-age=31536000,immutable -access-control-alow-credentials true -timing-allow-origin  -expies Sat, - -cotent-security-policy default-src -content-encoding r -x-contenttype-options nosniff -content-md5 35sn/pluRe+kZxjcR6Ibw== -stat\s 200 -content-length \375 -x-xss-proection 0 -x-fb-debug zEkvlyy\DCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== -ast-modified Mon, -date Fi, -vry Accept-Encoding -content-type \ext/css; -access-control-allow-origi * -cache-control ublic,max-age=31536000,immutable -access-controlallow-credentials true -timing-allow-origin  -expres Fri, - -content-se\urity-policy default-src -content-encoding b\ -x-content-type-ptions nosniff -content-md5 i4f5LnfewjEpPYLvEw9sg== -stats 200 -content-length 375 -x-xss-protec\ion 0 -x-fb-debug HFxhYohULlb8E3s/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== -last-moified Mon, -date ri, -vay Accept-Encoding -content-type text\css; -access-control-allow-or\gin * -cache-control public,mx-age=31536000,immutable -access-control-allow-credentias true -timing-allow-origin  -expire Fri, - -contnt-security-policy default-src -content-encoding r -x-content-tpe-options nosniff -content-md5 fd9ZgENjjqTO/InJ/zr9A== -stats 200 -content-length 8878 -xxss-protection 0 -x-fb-debug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdDz2OGqubSmtwQo7C65Qw== -last-odified Mon, -date Fri -var Accept-Encoding -content-type text/cs\; -accss-control-allow-origin * -cache-control public,ax-age=31536000,immutable -access-c\ntrol-allow-credentials true -timing-allow-origin \ -epires Fri, - -content-security-polic default-src -content-encoding b -x-co\tent-type-options nosniff -content-md5 fqrTaPewZp5VEjPn8eGRg== -s\atus 200 -content-length 124 -x-xs-protection 0 -x-fb-debug ffAA1BPrLNMci6PPgAnjdBQxr23MFKOlcYD7Hd8+QaYdQzt3RDz7rwZWLtl/ff4vvIJcOQKkgerVJHkxxcE+A== -last-modifid Mon, -date Fi, -var Accept-Encoding -content-type text/ss; -access-control-alloworigin * -cache-control public,max-age=31536000,immutble -access-control-allow-creentials true -timing-allow-origin -expire Fri, - -content-securitypolicy default-src -content-encoding \r -x-contet-type-options nosniff -content-md5 SqewXybJVo1v4gA0JLGBQ== -statu\ 200 -content-length \38 -x-xss-protecion 0 -x-fb-debug KC/Mv8BSpLzgKNnb1cJgXL8dPdim8GGQRbNyFfUpswJaoxnMQeHpRlZwFceTKDlmlF+3I1PWGIgOE9iug58Qw== -lst-modified Mon, -date Fri -var Accept-Encoding -content-type text/cs; -access-control-allw-origin * -cache-control public,max-ge=31536000,immutable -access-control-allow-credentals true -timing-allow-origin  -expir\s Fri, - -content-secur\ty-policy default-src -content-encoding b -x-content-typ-options nosniff -content-md5 sZNRmnBid8CsjRTjIEFyg== -stats 200 -content-length 674 -x-xss-protec\ion 0 -x-fb-debug a155LmrZwBw3/aMF42emoWHIgc/3y8J6ALVXYdQ7H8vUuz1/i1dvM0G4i1MutN2PnGhQoHaxJ36iCIkr5peiQ== -lastmodified Mon, -date Fri -vay Accept-Encoding -content-type text/c\s; -\ccess-control-allow-origin * -cache-control public,max-ae=31536000,immutable -access-control-allow-credenials true -timing-allow-origin  -expire\ Thu, - -content-security-poli\y default-src -content-encoding r -x-contenttype-options nosniff -content-md5 mgTL4W9gmblvl6wXzZodA== -tatus 200 -content-length 601 -x-xss-protectin 0 -x-fb-debug FkXkGb3\nCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== -last-moified Mon, -date Fri\ -va\y Accept-Encoding -content-type tex\/css; -access-control-llow-origin * -cache-control public,max-age31536000,immutable -access-control-allow-crdentials true -timing-allow-origin  -expies Thu, - -conent-security-policy default-src -content-encoding r -x-content-tpe-options nosniff -content-md5 FWVLk47e/1NAOLzKy9mZQ== -stats 200 -content-length 96\8 -x-xss-prtection 0 -x-fb-debug abRR44oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== -last-modifed Mon, -date Fr, -ary Accept-Encoding -content-type txt/css; -accesscontrol-allow-origin * -cache-control public,max-age=3153600,immutable -a\cess-control-allow-credentials true -timing-allow-origin  -e\pires Fri, - -content-securty-policy default-src -content-encoding \r -x-content-tpe-options nosniff -content-md5 CdqtZjHkFWKj84Z+4+xI\g== -tatus 200 -content-length 277 -x-xss-protectio 0 -x-fb-debug 4qp1PxAGHtbHXi9rxxdHyNY/8PMkrRxemDwVRlBtTf5veUQdm+NT/ANeAtBnkrqVeEa/YAFwjR2rnGTYHLnHw== -\ast-modified Mon, -date Fi, -var Accept-Encoding -content-type text/cs; -access-control-allow-orign * -cache-control public,max-\ge=31536000,immutable -access-control-allw-credentials true -timing-allow-origin  -expies Fri, - -cntent-security-policy default-src -content-encoding r -x-content-type-optios nosniff -content-md5 9+8et0zXoZnznee+5dOLg== -tatus 200 -content-length 30\1 -x-xss-\rotection 0 -x-fb-debug 1W0e0\xqlhBqUfhhsZScKW+48ERX/MbDzRx1CrLGyoB3PQR87HvCU1tXurEDpq9MxYtpZtH8nZHhZUliTWX9/Q== -last-modifid Mon, -date ri, -vay Accept-Encoding -content-type application/x-jaascript; -access-control-alow-origin * -cache-control public,max-age=31536000,immutabl -accss-control-allow-credentials true -timing-allow-origin -expies Fri, - -content-securit-policy default-src -content-encoding r -x-content-type-opions nosniff -content-md5 U89oUM0w4qxD5VnRrMHfQ== -satus 200 -content-length 170\7 -x-xss-protecton 0 -x-fb-debug 3hIM02GLUEVYmBtXw7ckOZdTFjZlDVy71lqb79ycltwQUOiGU27m0HJTjseI5O9aQgJhz0cyZFD440wNkJ1hg== -last-modfied Mon, -date Fr, -var Accept-Encoding -content-type applicatin/x-javascript; -\ccess-control-allow-origin * -cache-control public,max-age=31536000,immutale -access-contr\l-allow-credentials true -timing-allow-origin -xpires Fri, - -content-secrity-policy default-src -content-encoding \r -xcontent-type-options nosniff -content-md5 63uZSWh0PAGVT5ELQlmDA== -stat\s 200 -content-length \308 -x-xss-protectio 0 -x-fb-debug RqCyrQLJGw/D0xpqWnbzLkRPUbfwsbwfo84PPL8UED96IA/gBJzDEf6yj2+HHIdQp4xPXpSRuNZDI2H/CvkxQ== -ast-modified Mon, -date Fri -vay Accept-Encoding -content-type application/x-jaascript; -acces-control-allow-origin * -cache-control publi,max-age=31536000,immutable -access-contro-allow-credentials true -timing-allow-origin  -epires Fri, - -x-\b-debug ARChj0NUebWygPU0nCoGIW//E1naOtcmUw17w+RMEyLdGcIfa62y4DtKGsmphLZFvp0ao5tg1e1UH82enSyOww== -x-content-type-options nosnif\ -last-odified Mon, -content-md5 QfBfkVWIvQAgYByciJpJw== -ate Fri, -status 20 -content-ype image/png -access-control-allow-origin  -cache-ontrol public,max-age=31536000,immutable -access-control-allow-credentials tru -contentsecurity-policy default-src -timing-allow-origin \ -content-lengt\ 1176 -x-xss-protection  -expres Mon, - -x-fbdebug ivI86tTrFwX9U5sLjaxj7fvac7JDJwsEi9Eja2Z4Oy4C7nmZIF2IkB8o8XqfevLcTTOzzEMMwFDwypn5k6bIXw== -x-content-type-options nosiff -last-modfied Mon, -content-md5 IHh5jFrVTE8LJv\HfLuDPA== -ate Fri, -status 20 -content-\ype image/png -access-control-allow-origin -cac\e-control public,max-age=31536000,immutable -access-control-allow-credentials tr\e -content-security-plicy default-src -timing-allow-origin  -content-lenth 556 -x-xss-protection  -exp\res Thu, - --fb-debug ZwUiJgvchdZhpDH+73u0Fw+G6hyUoqJHmUotkSBkDnzNjGiL0mAn7qTX5J46rH70Lo1AsDbhfk3JwbWmWTwV5w== -x-content-type-options osniff -las\-modified Mon, -content-md5 GKqP6Z59i1aSEGcB57sOw== -dat Fri, -status 20 -contet-type image/png -access-control-allow-origin  -cach\-control public,max-age=31536000,immutable -access-control-allow-credentials tue -timing-allow\origin * -content-length 548 -x-xss-protecion 0 -expires Fr\, - -date Fi, -last-mo\ified Tue, -status 20 -content-ype image/jpeg -access-control-allow-origin  -cachecontrol max-age=1209600, -timing-allow-origin \ -content-ength 59308 -expires Wed\ - -content-security-policy efault-src -contentencoding br -x-content-type-options nosnff -staus 200 -vary Oigin -var Accept-Encoding -x-xss-protection  -prama no-cache -x-fb-debug bMcE+8Z/jUikxlpX0iz9TFqnf5QVShzAQoprrbxgHYC5ZGhZDIINLMlIeZEY6QwKjH1oEqfOzC36WG4mjuX7Q== -x-frame-optons DENY -date Fr, -expectct max-age=10, -strict-transport-security ma-age=15552000; -acces-control-allow-methods OPTIONS -content-type text/javascrip; -access-control-allw-origin https://www.facebook.com -access-control-expose-headers X-FB-ebug, -cach-control private, -access-control-allow-credentials tue -exires Sat, - --fb-debug WVz6Y2MrSiV1cDtEzzSX+eY8rw7ZosNRZER/iJKgrqXplP4gjrRV9RmMxu/RCpkyHjYn9jGkggKJ6AKwOG63Iw== -x-content-type-options nosnif -last-modif\ed Mon, -content-md5 8IPH6Tlp2EPXzjh2Wtk0w== -dae Fri, -status 00 -contenttype image/png -access-control-allow-origin  -ache-control public,max-age=31536000,immutable -access-control-allow-credentials tre -content-security-poicy default-src -timing-allow-origin -conten-length 4844 -x-xss-protection  -xpires Thu, - -dte Fri, -last-modified ue, -satus 200 -content-type image/peg -ccess-control-allow-origin * -cache-control max-age=109600, -iming-allow-origin * -content-length 148 -epires Wed, - -content-secur\ty-policy default-src -x-content-type-options nsniff -satus 200 -x-fb-config-version-olb-prod 22 -var Origin -content-length 904 -x-xss-p\otection 0 -pragma p\blic -x-fb-debg HunPYuqy69WzGGSQH0RYo+XndQiTMqACderbXYV/Hd6VXq0oSQhZBlV1fY0tbHmnCKZPaQ5ffj9xfVEyPXA9aw== -x-frame-options ENY -dat\ Fri, -expect-ct max-age=0, -strict-transport-secuity max-age=31536000; -content-type image/pg -accss-control-allow-origin * -access-control-expose-headers XFB-Debug, -cache-con\rol public, -access-control-allow-credentials rue -timing-all\w-origin * -access-control-allow-method OTIONS -expirs Tue, - -conten-security-policy default-src -content-encoding r -x-content-ype-options nosniff -content-md5 YZP/0rJpw2vE+OCDm8w5Q== -sttus 200 -content-length 203 -x-xss\protection 0 -x-fb-debug NNF+j6+XOFrfdhzYpIcXN8eoCwGFoh5LQhEtfDyAVBLtSL4n56yb+kUyPAOLL4HokctaJ9bHKv6JsDRAvFzpQ== -last-mdified Mon, -date Fri -ary Accept-Encoding -content-type textcss; -access-control\allow-origin * -cache-control public,max-age=31536000,immutabe -access-control-all\w-credentials true -timing-allow-origin \ -expies Fri, - -content-ecurity-policy default-src -content-encoding r -x-content-type-option nosniff -content-md5 2nocW+0AmN98W\9vj2rtAA== -staus 200 -content-length 1\55 -x-xs-protection 0 -x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDeOTcN21RDx5hRnvNFGykEOE4GYKgA== -last-moified Mon, -date ri, -ary Accept-Encoding -content-type tet/css; -accss-control-allow-origin * -cache-control public,max-age=31536000,immuable -access-control-allow-credetials true -timing-allow-origin  -expire Fri, - -cntent-security-policy default-src -content-encoding r -x-content\type-options nosniff -content-md5 /4SheZbR98CwCYd4h3cAg== -\tatus 200 -content-length 217 -x-xss-prtection 0 -x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhX\Xs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== -las-modified Mon, -date Fi, -vay Accept-Encoding -content-type txt/css; -access-contol-allow-origin * -cache-control public,max-age=31536000,immutabl -access-control-allow-credentils true -timing-allow-origin \ -exires Fri, - -x-b-debug /ENpputLKNa/2mZiu6JTE+h6mzrx8TmybF+DsyGWGtA7Pr1/Nz9w87TOZ/bXeGIN/nSpsf8Vp73Vj/UbdMJwow== -x-content-type-options nosni\f -ast-modified Mon, -content-md5 5JlE2ZDOPpF6hew83LXyw== -ate Fri, -status 20 -cotent-type image/png -access-control-allow-origin -cache-contro public,max-age=31536000,immutable -access-control-allow-credentials tr\e -timing-allow-origi\ * -content-length 66\5 -x-xss-protectio 0 -expires Fr\, - -x-fb-debug Os2JJOoXBZqJj78nRJJPGsd36A2+yIhTGyue3jZakVmvYckOoqMBatPDrEtiquf+QLqhyFhY9tAUaiEU+rMAw== --content-type-options nosniff -last-modified on, -cotent-md5 C05mvm8+C03B8R2M8wXU6g== -date ri, -sttus 200 -content-type image/ng -access-control-allow-rigin * -cache-control publi\,max-age=31536000,immutable -access-contro\-allow-credentials true -content-security-policy \efault-src -timing-allw-origin * -content-length 02 -x-xss-pro\ection 0 -expires Sa, - -date Fr, -last-modifed Wed, -status 20 -content-tye image/jpeg -access-control-allow-origin -cache-contol max-age=1209600, -timing-allow-origin \ -cntent-length 1196 -expires Wd, - -date ri, -last-modifed Thu, -status 20 -conent-type image/jpeg -access-control-allow-origin \ -cache-cntrol max-age=1209600, -timing-allow-origin  -content-lngth 1329 -expires T\u, - -date Fi, -last-odified Thu, -status 20 -contet-type image/jpeg -access-control-allow-origin  -cac\e-control max-age=1209600, -timing-allow-origin -content-legth 1446 -expires un, - -date \ri, -last-modifid Mon, -status 20 -contenttype image/jpeg -access-control-allow-origin  -cache-contrl max-age=1209600, -timing-allow-origin  -cotent-length 5176 -expires We, - -date Fri -last-odified Thu, -status 20 -c\ntent-type image/jpeg -access-control-allow-origin  -cache-cotrol max-age=1209600, -timing-allow-origin  -content-legth 49345 -expires Wd, - -date Fri -lastmodified Tue, -status 20 -contenttype image/jpeg -access-control-allow-origin -cache-cotrol max-age=1209600, -timing-allow-origin \ -ontent-length 3742 -expires ed, - -date Fi, -l\st-modified Thu, -status 00 -content-tye image/jpeg -access-control-allow-origin  -c\che-control max-age=1209600, -timing-allow-origin  -ontent-length 29919 -expires We\, - -date Fri -last-mdified Sun, -status 20 -contnt-type image/jpeg -access-control-allow-origin \ -cache-\ontrol max-age=1209600, -x-fb-edge-debug qV2gVRRpGEnTN92wP3bEefpIlNqOBDmaYDo0o9w9T9AtQphKbXLleYJZI_vyWjKt4bko2I1lo8TCezyPLIohA -tiing-allow-origin * -content-length 211\5 -expirs Fri, - -dae Fri, -last-modified Th, -tatus 200 -content-type image/peg -access-ontrol-allow-origin * -cache-control max-age=129600, -timing-alow-origin * -content-length 892 -epires Thu, - -dae Fri, -last-modified Thu -tatus 200 -content-type image/jpe -access-control-allow-orign * -cache-control max-age=1209600\ -timing-allw-origin * -content-length 1272 -expirs Thu, - -dte Fri, -last-modified on, -stats 200 -content-type image/jpg -access-conrol-allow-origin * -cache-control max-age1209600, -tiing-allow-origin * -content-length 1189 -exires Thu, - -dat Fri, -last-modified We, -staus 200 -content-type imge/jpeg -access-contro-allow-origin * -cache-control maxage=1209600, -tiing-allow-origin * -content-length 104 -expres Wed, - -dat Fri, -last-modified Thu -sta\us 200 -content-type image/j\eg -acess-control-allow-origin * -cache-control max-age=120600, -timing-allo-origin * -content-length 111 -expirs Thu, - -dae Fri, -last-modified Tu, -sttus 200 -content-type imagejpeg -access-control-allw-origin * -cache-control max-age=12\9600, -timing-allow-origi * -content-length 117 -expres Sat, - -dat Fri, -last-modified ri, -staus 200 -content-type imag/jpeg -access-control-allow-orgin * -cache-control ax-age=1209600, -timing-allow-origi * -content-length 134 -expir\s Wed, - -ate Fri, -last-modified Su, -satus 200 -content-type imae/jpeg -access\control-allow-origin * -cache-control max-age=\209600, -timing-allo-origin * -content-length 248 -expir\s Wed, - -dat Fri, -last-modified Th, -stats 200 -content-type image/peg -access-control-allo-origin * -cache-control max-age=120600, -timing-alow-origin * -content-length 173 -xpires Thu, - -dte Fri, -last-modified \hu, -statu 200 -content-type image/jpg -access-control-allow-ori\in * -cache-control max-age=120600, -timingallow-origin * -content-length \152 -expi\es Tue, - -dat Fri, -last-modified Tu\, -s\atus 200 -content-type image/jpe -acess-control-allow-origin * -cache-control max-age1209600, -iming-allow-origin * -content-length 106 -xpires Thu, - -dat Fri, -last-modified ue, -tatus 200 -content-type iage/jpeg -accesscontrol-allow-origin * -cache-control maxage=1209600, -timing-al\ow-origin * -content-length 111 -expire Wed, - -da\e Fri, -last-modified Fi, -staus 200 -content-type imge/jpeg -access-control-allow-orgin * -cache-control max-age=120960, -timing-allw-origin * -content-length 150 -expres Wed, - -x-fb-deug fVIW99YerkUzwlc7SROvz5XsM1XbNmRMGijJJ13tYsvnMaY84LnQ1ZA7+apDieuNVB46ZnUnVHMhZ76uwLgrhg== -x-content-type-options no\niff -last-modiied Mon, -content-md5 RVFApVCDqLOU4DKrHxHcg== -da\e Fri, -status 00 -conent-type image/png -access-control-allow-origin  -ache-control public,max-age=31536000,immutable -access-control-allow-credentials tru -content-security-poicy default-src -timing-allow-origin \ -c\ntent-length 281 -x-xss-protection  -epires Sat, - -content-scurity-policy default-src -content-encoding b -x-content-typeoptions nosniff -status 20 -vry Origin -vary Accept-Enoding -x-xss-proection 0 -pragma nocache -x-fb-debu\ +R3NCXIBasGiGQdX/uKvTgwIShwCbAlh0vnBu05LFeHCTJhBA1YqB3QzG3LxYcUEHJJqVaY58p02qO1yVeVxsw== -x-frame-options DEN -d\te Fri, -expect-ct \ax-age=10, -strict-trnsport-security max-age=15552000; -access-control-allow-methods OPTION\ -content-t\pe application/x-javascript; -access-control-allow-origin https://www.faebook.com -access-control-exose-headers X-FB-Debug, -cache-control privte, -access-control-allow-credenials true -expires at, - -content-security-policy default-sr -cont\nt-encoding br -x-content-type-options nosni\f -ontent-md5 bV/DKwx1FIfSczGr8wmjTA== -status 20 -content-lengt\ 19285 -x-xss-protection  --fb-debug fbuGUlmmttu8N2glWUmqgrF9qAJghz+TR9dvFY1UxQUeWfBVTg5g0EKXcY7zJhKiVlgAm+yxP2X5A/Dqe3G+EA== -last-modified Mon\ -dte Fri, -vary Accpt-Encoding -content-tye application/x-javascript; -access-control-allow-origin  -cahe-control public,max-age=31536000,immutable -access-control-allow-credentials tue -timing-allow-oriin * -expires \ri, - -content-security-policy efault-src -content-encodin br -x-content-type-options osniff -ontent-md5 OBHD6lmfEEisuhcWKyESIw== -status \00 -content-ength 19037 -x-xss-protection  -x-fb-d\bug drj2Ft2eAD7NQ6lmjscA+rt9I3/b1iHnGgaxytUir51DI4ILBqGwUA2paJjEA2pvOVn4gRvl1zY6CgGTl4fLXg== -last-modified Mo\, -dte Fri, -vary Accept-Encodin -cotent-type application/x-javascript; -access-control-allow-origin \ -cache-contro public,max-age=31536000,immutable -access-control-allow-credentials rue -timing-allow-origi * -expires Fi, - -content-security-policy dfault-src -conten\-encoding br -x-content-type-options nosn\ff -conent-md5 6O43UwtSHtYxrHYf4JWpTw== -status 20 -content-legth 272 -x-xss-protection  -x-f-debug FGR0zi+JxHm7My4h2/7+wcFU4LP1hHO3PFzJKhZjk6dDiTLxykDa6JPsIDNvXtlWfTE9qPu1r1ogOTgfVaLitA== -last-modified M\n, -d\te Fri, -vary ccept-Encoding -cntent-type application/x-javascript; -access-control-allow-origin -cache-cntrol public,max-age=31536000,immutable -access-control-allow-credentials tue -tming-allow-origin * -expires Fi, - -content-security-policy efault-src -contnt-encoding br -x-content-type-options noniff -content-md\ LPtJbeThMXUens/Nm5VZeQ== -status 2\0 -cntent-length 39529 -x-xss-protection  -x-fb-\ebug bAWClI/0uVFeLXq6GIy1TXonNhgjjE+WwKoSZsSxQkEIlL665l8U/wmyKTGtTkrbwVUzymlgRhgHP6l/sZ89TA== -last-modified Mo, -da\e Fri, -vary Accept-ncoding -conent-type application/x-javascript; -access-control-allow-origin  -cahe-control public,max-age=31536000,immutable -access-control-allow-credentials t\ue -timing-allow\origin * -expires Fr, - -content-security-policy defult-src -contet-encoding br -x-content-type-options nosiff -contnt-md5 UTnFKQ/1xPYzMBTzlDFnQg== -status 20\ -content-ength 36628 -x-xss-protection -x-fb-d\bug XwHAYpS/JLC309mN4e1ZrMvAYSnhufav6nr5ltJ6ScnYGAS1huRaIMhFGS+2BwCQ5lyNrVZt8RfNfy5Y2CANQQ== -last-modified on, -dat Fri, -vary Accpt-Encoding -content-tpe application/x-javascript; -access-control-allow-origin  -cahe-control public,max-age=31536000,immutable -access-control-allow-credentials tru -timing-allow-origi * -expires Fri - -content-security-policy default-rc -conten-encoding br -x-content-type-options nosn\ff -contentmd5 wvmmFr+hyE8nerTr2rsQvw== -status 00 -content-lengh 1966 -x-xss-protection  -x-fb\debug gJE2qAHfDDEx/K+nICc73NSl6EqnW0SxxQrHBCFxwsbg2kuQYyFj3MQv8EfLjq88ZmmyYHY93J9ur/WLZWopEQ== -last-modified Mo\, -ate Fri, -vary ccept-Encoding -content-tpe application/x-javascript; -access-control-allow-origin \ -cache-cotrol public,max-age=31536000,immutable -access-control-allow-credentials tru -timin-allow-origin * -expires Fi, - -content-security-policy defaultsrc -content-encod\ng br -x-content-type-options osniff -conten-md5 JZM7FEcMrVikARx2gpFWUw== -status 2\0 -conent-length 52237 -x-xss-protection  -x-fb-debg fc9A8OFybDetesoi0CY7xjJ/276Si33Xehez93z8H63FVgo7DqHWHSvfQMrcMgsM3swgR9cRo89ZLhE+FBbNJA== -last-modified Mo, -ate Fri, -vary Accept-Encding -c\ntent-type application/x-javascript; -access-control-allow-origin  -cache-cntrol public,max-age=31536000,immutable -access-control-allow-credentials tre -timing-alow-origin * -expires Fr, - -content-security-policy default-sr -content-encodin br -x-content-type-options nosnff -content-\d5 D6t0N9WzwW0eLRo10Yq6ng== -status 20 -ontent-length 33446 -x-xss-protection  -x-f-debug h6xjG80emSAtsK+erM7liY8pREgTA0vGwYMIZCjP9n6GVcN7vX0eh4t4xndGqYXPP5ih8NyaQcmTn8+dQtlhyw== -last-modified on, -dae Fri, -vary Accep\-Encoding -contnt-type application/x-javascript; -access-control-allow-origin  -ache-control public,max-age=31536000,immutable -access-control-allow-credentials tue -timing-llow-origin * -expires Fri - -content-security-policy defaultsrc -co\tent-encoding br -x-content-type-options osniff -con\ent-md5 1AoLUq6toOaueD0vKkvMAA== -status 00 -content-l\ngth 3012 -x-xss-protection  -x-fb-dbug Ow7Yvuq4jUPfhFbMusIFf7YeUZpBcdrSzO/FVUTZhqEWPOHYOJeYbHRAiBFmmPM1POVX8/Ixm2fpQtDVx2rUQA== -last-modified \on, -d\te Fri, -vary Acept-Encoding -contnt-type application/x-javascript; -access-control-allow-origin  -cache-cntrol public,max-age=31536000,immutable -access-control-allow-credentials tre -timingallow-origin * -expires Fr, - -content-security-policy defult-src -co\tent-encoding br -x-content-type-options nosnff -conten-md5 G6Y6kaO1Adi/IBwW11Elug== -status 2\0 -ontent-length 3226 -x-xss-protection  -x-\b-debug m2oB/65sg2vFQOIebkxGuLC4OOPg2oUNvCSp7WZN3OGVbF19LVyoTBPcBkvZXOoewtdThbXo+FkeBaKeAPgHSQ== -last-modified Mo, -dat Fri, -vary Accept-ncoding -contet-type application/x-javascript; -access-control-allow-origin \ -cahe-control public,max-age=31536000,immutable -access-control-allow-credentials tue -timing-allo-origin * -expires ri, - -date ri, -last\modified Tue, -status 00 -contet-type image/jpeg -access-control-allow-origin  -cachecontrol max-age=1209600, -timing-allow-origin -content-lngth 2192 -expires W\d, - -date Fr, -last-modiied Wed, -status 2\0 -cntent-type image/jpeg -access-control-allow-origin  -ache-control max-age=1209600, -timing-allow-origin -contentlength 2200 -expires \ed, - -date Fri -lat-modified Mon, -status \00 -contet-type image/jpeg -access-control-allow-origin  -cahe-control max-age=1209600, -timing-allow-origin \ -content-ength 1468 -expires Wed - -date Fr, -last-moified Wed, -status 20 -conent-type image/jpeg -access-control-allow-origin \ -cach-control max-age=1209600, -timing-allow-origin  -content-lngth 1997 -expires on, - -date ri, -\ast-modified Wed, -status \00 -contenttype image/jpeg -access-control-allow-origin \ -cach\-control max-age=1209600, -timing-allow-origin -content-lngth 2317 -expires We\, - -date Fr, -last-modifid Tue, -status 20 -conten-type image/jpeg -access-control-allow-origin -cace-control max-age=1209600, -timing-allow-origin -content\length 2397 -expires We, - -content-security-policy default-sc -content-ecoding br -x-content-type-options osniff -stat\s 200 -vary rigin -ary Accept-Encoding -x-xss-protection  -pr\gma no-cache -x-fb-debug Cnh9p8D5Li6w23D82Jd7RsrvreYSXZEQFE29Y9Nocj7iJPiMp31vPv/WZZdRE6AhgaCQQNb4vWYjLchZzPCug== -x-frame-otions DENY -date Fr\, -expectct max-age=10, -strict-transport-security max-age=15552000 -access-control-allow-mehods OPTIONS -content-type application/x-jaascript; -access-control-allow-origi https://www.facebook.com -access-control-expose-headers X-FB-De\ug, -cache-cotrol private, -access-control-allow-credentials tru -expire\ Sat, - -content-securitypolicy default-src -content-encoding b -x-content-\ype-options nosniff -status 20 -var Origin -vary ccept-Encoding -x-xss-potection 0 -pragma nocache -x-fb-deug 9VKUrgNslD/nY0eEgp7tZZdRCfrJEY1FkHDje4EmpYkrC2pvW1uvmwGOoPskTvUh3bW+HDmwZYMLZM7hY0gMhw== -x-frame-options DEY -dte Fri, -expect-ct max-ag\=10, -stict-transport-security max-age=15552000; -access-control-allow-methods OPTION -conten-type application/x-javascript; -access-control-allow-origin https//www.facebook.com -access-contrl-expose-headers X-FB-Debug, -cache-control \rivate, -access-control-allow-credenials true -expires \at, - -content-security-policy default-sr -content-enco\ing br -x-content-type-options nos\iff -staus 200 -vary Orign -ary Accept-Encoding -x-xss-protection -pragm no-cache -x-fb-debug aauRok2xnDPv3VQSul9bMO0nErR48gOCdAk3xg8vKkSz2RBIEQlMGcnB85NP8GVA0+i76LCjKBu6aWEFxFt9A== -x-f\ame-options DENY -date ri, -expec-ct max-age=10, -strict-transport-security max-\ge=15552000; -access-conrol-allow-methods OPTIONS -content-type application/x-javacript; -acc\ss-control-allow-origin https://www.facebook.com -access-control-expose-headers X-F\-Debug, -cac\e-control private, -access-control-allow-credentials tru -expirs Sat, - -content-se\urity-policy default-src -content-encoding r -x-content-typeoptions nosniff -status 20 -ary Origin -vary Accept-Ecoding -x-xssprotection 0 -pragma no\cache -x-fb-ebug X/tm4dxchrSM76dISf4rVU6n4RLg6R/bt79D245UBcPTSAHkuaLb0EqyaK5CGnVWVk42+bIKLymZ1XiauXdXxA== -x-frame-options DEY -dte Fri, -expect-ct max-ae=10, -strict-transport-secu\ity max-age=15552000; -access-control-allow-methods OPTONS -content-typ application/x-javascript; -access-control-allow-origin https://www.faceook.com -access-control-expose\headers X-FB-Debug, -cache-control private\ -access-control-allow-credential true -expires at, - -content-security-policy defaut-src -contnt-encoding br -x-content-type-options osniff -sttus 200 -vary \rigin -vry Accept-Encoding -x-xss-protection  -prag\a no-cache -x-fb-debug RKPmsAWm1tFpbD4Qj2ucPdH6i8nI7lLgcorK6l44F9hPN8qd4THZEgj8Tu9/JFoPrMJ2hqPlcFfLb6FgRnmFQ== -x-frame-optins DENY -date ri, -xpect-ct max-age=10, -strict-transport-security ma-age=15552000; -access-control-allow-mehods OPTIONS -content-type aplication/x-javascript; -acces-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debg, -cachecontrol private, -access-control-allow-credentials tue -exires Sat, - -contet-security-policy default-src -content-encoding b -x-content-type-option nosniff -status \00 -vay Origin -vary Accept-Encoing -xxss-protection 0 -pragma no-cach -x-fb-ebug fTUQ/Z5rF8Mye/5u0N8qOfqBaZqt9Ldfc/0uCcHi9NPvscv1XYi3DKCfdi4Imcw1RqYGlciZe3vAeg2ko3hGYQ== -x-frame-options DEY -dte Fri, -expect-ct max-ge=10, -strict-transport-securi\y max-age=15552000; -access-control-allow-methods PTIONS -co\tent-type application/x-javascript; -access-control-allow-origin https:/\www.facebook.com -access-control-expose-heders X-FB-Debug, -cache-control \rivate, -access-control-allow-crdentials true -expires at, - -content-security-policy defult-src -content-enoding br -x-content-type-options osniff -s\atus 200 -vary Oriin -va\y Accept-Encoding -x-xss-protection  -prama no-cache -x-fb-debug yqWCZpVJmrj1JJlW4rgUKR/fNz/y7Cr3i44mszTHCHWPdt+io4AcLv6pCieI\/O8xkQVVohG9fkYQ9bpkVC59Q== -x-frame-optins DENY -date ri, -expect-c max-age=10, -strict-transport-security ma-age=15552000; -accesscontrol-allow-methods OPTIONS -content-type text/javascrip; -accss-control-allow-origin https://www.facebook.com -access-control-expose-headers -FB-Debug, -cache\control private, -access-control-allow-credentials tre -epires Sat, - -x-fb-d\bug C5M3rAUlWTo+Nh2NEbNsOrcs3a7fQJAIZeaHzaZdKXUHzTmldfJBIjGjCwFkJ+V8wQrbwKiECC1XoG5whuC7Bw== -x-content-type-options nosnif -last-modifid Mon, -content-md5 bvfxjp/FtYcD+rWTyphIQ== -dte Fri, -status 20 -content-tye image/png -access-control-allow-origin \ -cche-control public,max-age=31536000,immutable -access-control-allow-credentials tru -contentsecurity-policy default-src -timing-allow-origin  -\ontent-length 7560 -x-xss-protection  -e\pires Mon, - -content-security-polcy default-src -content-encoding b\ -x-content-type-option nosniff -status 00 -ary Origin -vary Accept-Encodig -x-xss-protectin 0 -pragma no-cace -x-f-debug 3OvLOqpHlGzVdjqkOPLSQIPwJgAz9t3Aya9pJmdr3lklW5dSIp7GYNvtTO2MEjvbdLuBi0Uh7PDjkQlh5//UtQ== -x-frame-options DNY -dte Fri, -expect-ct maxage=10, -strct-transport-security max-age=15552000; -access-control-allow-methods PTIONS -content-tpe application/x-javascript; -access-control-allow-origin ht\ps://www.facebook.com -access-cotrol-expose-headers X-FB-Debug, -cache-control pri\ate, -access-controlallow-credentials true -expires Sat\ - -content-security-policy deault-src -cotent-encoding br -x-content-type-options nosnif -statu 200 -vary rigin -vry Accept-Encoding -x-xss-protection \ -prama no-cache -x-fb-debug Nuhm0tM4MJBbZq1HgFjDge2VPFh7VrJgIHzB0KNCs7RlBQQP9+DpBTJ8pmO2jbolFlG8hGTR/TgYeDYwBxNgw== -x-f\ame-options DENY -date ri, -exect-ct max-age=10, -strict-transport-security max-age15552000; -access-control-all\w-methods OPTIONS -content-type application/x-\avascript; -access-control-llow-origin https://www.facebook.com -access-control-expose-headers XFB-Debug, -cache-contro private, -access-control-allow-credentials tre -expire Sat, - -content-securty-policy default-src -content-encoding b -x-conent-type-options nosniff -status 2\0 -v\ry Origin -vary Accept-Ecoding -x-xs\-protection 0 -pragma no-cche -x-fb-ebug g2tZWi2xLSq9OlUfaXi3bbQf0RQz2MhBLGX9Wo+JK+LiZI4fQpReMcPKjtBzzEcRhj3OSzxdy8+GDxC3QADAFA== -x-frame-options DNY -d\te Fri, -expect-ct ma-age=10, -srict-transport-security max-age=15552000; -access-control-allow-methods OPIONS -content-typ\ application/x-javascript; -access-control-allow-origin https:/www.facebook.com -access-control-e\pose-headers X-FB-Debug, -cache-control pri\ate, -access-control-allow-credenials true -expires St, - -content-security-policy defalt-src -cotent-encoding br -x-content-type-options nsniff -st\tus 200 -vary Origi -vay Accept-Encoding -x-xss-protection  -ragma no-cache -x-fb-debug ivysyDdWiY3SVK7Tw7M8lIZkPvuaiDpxR+vOd42Xk2O7AqqjNP751kafm3a5xn+UHN3xOSGYtl5aKvzK7wuqQ== -x-fame-options DENY -date Fi, -ex\ect-ct max-age=10, -strict-transport-security max-age=15552000 -access-conrol-allow-methods OPTIONS -content-type applcation/x-javascript; -access-control-allow-rigin https://www.facebook.com -access-control-expose-headers X-FB\Debug, -cache-ontrol private, -access-control-allow-credentials t\ue -expres Sat, - -content-security-plicy default-src -content-encoding b\ -x-content-type-optios nosniff -status 20 -vry Origin -vary Accept-Encoing --xss-protection 0 -pragma o-cache -x-fb-dbug hpypdhhlU0HhLkfxRLQVQ4bfjMWTleA2Zt1W7KGwGbml43hGQeijYw1s/bZdpx2hUdkK2YQZSr+DBoMZFWLeOw== -x-frame-options \ENY -dae Fri, -expect-ct max-age=1\, -strict-tra\sport-security max-age=15552000; -access-control-allow-methods OPTINS -co\tent-type application/x-javascript; -access-control-allow-origin https:/www.facebook.com -access-control-expose-heders X-FB-Debug, -cache-control privat, -access-control-allow-cedentials true -expires Sat - -content-security-policy frame-ancestos -ontent-security-policy default-src -content-encoding b -xcontent-type-options nosniff -status 00 -vay Origin -vary Accept-Encodig -x-xss-protction 0 -pragma n\-cache -x-fb-deug ltkjHYfAgLloDoLMZNYHBi8RY5+q8Ym7wNGcqhzBVzEdqbWwEa1hhMFFDvL+5p1vIgsWhtVayXlPoxb6AT6MaQ== -date ri, -expect-t max-age=10, -strict-transport-security max\age=15552000; -access-control-allow-mthods OPTIONS -content-type texthtml; -access-control-llow-origin https://www.facebook.com -access-control-expose-headers X-FBDebug, -cche-control private, -access-control-allow-credentials rue -set-cooki oNcnS=gpojSOS; -expires at, - -content-security-policy default-sc -contet-encoding br -x-content-type-options nsniff -c\ntent-md5 b5vUN/sgd315IdDwXDUejw== -status 00 -content-legth 7295 -x-xss-protection  -x-fb-ebug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== -last-modified Mon -ate Fri, -vary Accept-Encding -c\ntent-type text/css; -access-control-allow-origin  -ca\he-control public,max-age=31536000,immutable -access-control-allow-credentials rue -timing\allow-origin * -expires St, - -content-security-policy default-sc -cntent-encoding br -x-content-type-options no\niff -cntent-md5 3N5sn/pluRe+kZxjcR6Ibw== -status 20 -conent-length 9375 -x-xss-protection  -x-fb-dbug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== -last-modified Mon -dat Fri, -vary A\cept-Encoding -content-ype text/css; -access-control-allow-origin \ -cachecontrol public,max-age=31536000,immutable -access-control-allow-credentials tru -timing-allow-origi * -expires Fi, - -content-security-policy defaultsrc -content-enco\ing br -x-content-type-options nos\iff -contentmd5 i4f5LnfeTwjEpPYLvEw9sg== -status 20 -content-lngth 3785 -x-xss-protection  -x-fb-debu HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== -last-modified M\n, -ate Fri, -vary Ac\ept-Encoding -co\tent-type text/css; -access-control-allow-origin  -ache-control public,max-age=31536000,immutable -access-control-allow-credentials rue -timing-allow-origi\ * -expires Fri\ - -content-security-policy default-sc -contet-encoding br -x-content-type-options noniff -content-d5 fd9ZgENjjqTO/InJ/yzr9A== -status 20 -cont\nt-length 18878 -x-xss-protection \ -x-fbdebug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== -last-modified Mn, -dat Fri, -vary Acept-Encoding -content-ype text/css; -access-control-allow-origin  -cahe-control public,max-age=31536000,immutable -access-control-allow-credentials \rue -timing-allow-origi * -expires Fri\ - -content-security-policy deault-src -content-ncoding br -x-content-type-options nosiff -contentmd5 mgTL4W9gmblv6l6wXzZodA== -status \00 -contentlength 6081 -x-xss-protection  -x-fbdebug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== -last-modified on, -ate Fri, -vary Accept-ncoding -cntent-type text/css; -access-control-allow-origin  -ache-control public,max-age=31536000,immutable -access-control-allow-credentials tr\e -\iming-allow-origin * -expires Th, - -content-security-policy defaul-src -contentencoding br -x-content-type-options n\sniff -co\tent-md5 FWVLk47e/1NAPOLzKy9mZQ== -status 20 -conent-length 9648 -x-xss-protection  -x-fb-deug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== -last-modified Mo, -dat Fri, -vary Acept-Encoding -conte\t-type text/css; -access-control-allow-origin \ -ache-control public,max-age=31536000,immutable -access-control-allow-credentials tre -\iming-allow-origin * -expires Fi, - -date Fi, -\ast-modified Tue, -status \00 -contnt-type image/jpeg -access-control-allow-origin  -cachecontrol max-age=1209600, -timing-allow-origin -content-lengh 42942 -expires Mo, - -content-security-policy defult-src -content\encoding br -x-content-type-options osniff -statu 200 -vary rigin -va\y Accept-Encoding -x-xss-protection \ -ragma no-cache -x-fb-debug Cz64N9bQ0dvmaJ50abk2u7SSKJqHL9DM7QKR54mUh8+ILRME5kPyNoW4nG1k/p1ECvAPU1ahdC3RZ4sOrWm1A== -x-frame-op\ions DENY -date F\i, -e\pect-ct max-age=10, -strict-transport-security max-a\e=15552000; -access-ontrol-allow-methods OPTIONS -content-type text/javascript -access-control-allow-oriin https://www.facebook.com -access-control-expose-headers X-FBDebug, -cahe-control private, -access-control-allow-credentials tru -expres Sat, - -dae Fri, -last-modified Mon -\tatus 200 -content-type imae/jpeg -access-contol-allow-origin * -cache-control max-age=120900, -timingallow-origin * -content-length 173 -expire Fri, - -content-ecurity-policy default-src -content-encoding \r -x-content-type-ptions nosniff -content-md5 2noW+0AmN98W+9vj2rtAA== -satus 200 -content-length 755 -x-xs-protection 0 -x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaugK4alKpRqBm4+CZcI8lem0tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== -lastmodified Mon, -date Fr, -vay Accept-Encoding -content-type txt/css; -access-control-allw-origin * -cache-control \ublic,max-age=31536000,immutable -access-control-allow-credentils true -timing-allow-origin  -epires Fri, - -content-se\urity-policy default-src -content-encoding \r -x-cotent-type-options nosniff -content-md5 V/4SheZbR98CwCYd4h3Ag== -staus 200 -content-length 217 -x-\ss-protection 0 -x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNXeXs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== -las\-modified Mon, -date ri, -var Accept-Encoding -content-type ext/css; -access-conrol-allow-origin * -cache-control public,max-age=3153000,immutable -access-control-allow-credential\ true -timing-allow-origin -expi\es Fri, - -contentsecurity-policy default-src -content-encoding r -x-content-typeoptions nosniff -status 00 -var\ Origin -vary Acept-Encoding -x-xss-prtection 0 -pragma no-cach\ -x-fbdebug Ike4iQwO65fGXWaMw0t4UbHoC9PEkEE1XAsaJt5EfgWfAJ5fvCUjZUEjFgydEjKHyU1FsHqjEeJZxGRemCQWOg== -x-frame-options DEN -dat Fri, -expect-ct maxage=10, -strict-transpor-security max-age=15552000; -access-control-allow-methods OPTONS -content-tye text/javascript; -access-control-allow-origin https://www.facebook.co -accesscontrol-expose-headers X-FB-Debug, -cache-control privte, -access-contol-allow-credentials true -expires Sa, - -x-fb-debug ORWOg2jR1rbO1ILKezoBrqCYFwqccLo76Z0yTAXhy9kK94PkFLtEQ8IkakHHwtfpp/aE1Wu7v6o+RRvhVTCTg== -x-content-type-opions nosniff -last-modified Mo, -conten\-md5 aceXgUioFutSxdIu20vnQQ== -date Fr, -statu 200 -content-type imagepng -access-control-alloworigin * -cache-control public,ma-age=31536000,immutable -access-control-llow-credentials true -content-security-policy d\fault-src -timing-alow-origin * -content-length \57 -x-xssprotection 0 -expires hu, - -date F\i, -last-modiied Mon, -status 20 -conent-type image/jpeg -access-control-allow-origin  -cache-c\ntrol max-age=1209600, -timing-allow-origin  -c\ntent-length 1012 -expires Mn, - -date Fi, -lastmodified Thu, -status 20 -content-ype image/jpeg -access-control-allow-origin  -ache-control max-age=1209600, -timing-allow-origin -conent-length 5041 -expires F\i, - -date Fr\, -lst-modified Wed, -status 20 -content-tye image/jpeg -access-control-allow-origin -\ache-control max-age=1209600, -timing-allow-origin \ -content-l\ngth 4201 -expires Wd, - -date Fi, -last-mdified Thu, -status 20 -conent-type image/jpeg -access-control-allow-origin -cache-co\trol max-age=1209600, -timing-allow-origin  -conent-length 41643 -expires Fr, - -date Fi, -last-modifid Mon, -status 2\0 -cont\nt-type image/jpeg -access-control-allow-origin  -cache-contrl max-age=1209600, -timing-allow-origin -conent-length 4069 -expires Wd, - -date Fr, -last-modifed Sat, -status 20 -content-typ image/jpeg -access-control-allow-origin -cache-cotrol max-age=1209600, -x-fb-edge-debug EwpFEjBY0hb_kwY2v8FLmVmymqWy5KGGTaPrVXTtv20vsZIEjUwDkVNbjYKcDY0_J9_d31bELPU561OltRd7w -timingallow-origin * -content-length 1\115 -expirs Fri, - -dte Fri, -last-modified Th, -stats 200 -content-type \mage/jpeg -access-cotrol-allow-origin * -cache-control max-age=209600, -timing\allow-origin * -content-length 1398 -expirs Mon, - -dte Fri, -last-modified ed, -staus 200 -content-type image/peg -acces-control-allow-origin * -cache-control max-age=120960, -x-fb-dge-debug BGdL2CHidm-Nlh_FAILf2lY1so5a6Q3rLP0A1pHzwniYyU89EhOQJpIFQ3_jI6QK3b9kfNHNWi-FMucQ3ZAKzA -timing-allow-origin  -contnt-length 10559 -expires ri, - -date ri, -last-modiied Thu, -status 20 -content-tpe image/jpeg -access-control-allow-origin  -cache-cotrol max-age=1209600, -timing-allow-origin \ -content-lenth 16520 -expires Fi, - -date ri, -last-\odified Thu, -status 20 -content-typ\ image/jpeg -access-control-allow-origin  -cachecontrol max-age=1209600, -timing-allow-origin  -content-lenth 13762 -expires Mo, - -date Fri -lst-modified Mon, -status 20 -contenttype image/jpeg -access-control-allow-origin  -cache-cntrol max-age=1209600, -timing-allow-origin  -content-lengt 1123 -expires Mon - -date Fri -last-modifie Mon, -status 20 -content-tpe image/jpeg -access-control-allow-origin  -cache-contro\ max-age=1209600, -timing-allow-origin -contet-length 934 -expires ri, - -date Fr, -last-modifid Sun, -status 20 -c\ntent-type image/jpeg -access-control-allow-origin  -cache-contrl max-age=1209600, -timing-allow-origin  -contentlength 1091 -expires un, - -date F\i, -lst-modified Thu, -status 00 -cotent-type image/jpeg -access-control-allow-origin  -cachecontrol max-age=1209600, -timing-allow-origin \ -content-lngth 1259 -expires Th\, - -date \ri, -last-mdified Mon, -status 20 -cntent-type image/jpeg -access-control-allow-origin  -ache-control max-age=1209600, -timing-allow-origin -content-lenth 997 -expires Wed - -date Fri -last-modfied Tue, -status 20 -content-ty\e image/jpeg -access-control-allow-origin -cache-contol max-age=1209600, -timing-allow-origin  -c\ntent-length 1042 -expires \at, - -date Fri -las-modified Fri, -status 20 -cntent-type image/jpeg -access-control-allow-origin  -cache-ontrol max-age=1209600, -timing-allow-origin  -content-lengh 1198 -expires Fr, - -date F\i, -ast-modified Sun, -status 20 -conent-type image/jpeg -access-control-allow-origin -cache-cotrol max-age=1209600, -timing-allow-origin \ -content-lengh 1024 -expires on, - -date Fi, -last-modiied Mon, -status 00 -content-ype image/jpeg -access-control-allow-origin \ -cace-control max-age=1209600, -timing-allow-origin  -cntent-length 1142 -expires Wed - -date \ri, -last-modifid Thu, -status 20 -contet-type image/jpeg -access-control-allow-origin  -cache-conrol max-age=1209600, -timing-allow-origin  -conent-length 1229 -expires hu, - -date Fi, -las-modified Mon, -status 00 -con\ent-type image/jpeg -access-control-allow-origin -cahe-control max-age=1209600, -timing-allow-origin  -content-lngth 2115 -expires Wed - -date Fri -last-modiied Mon, -status \00 -content-ype image/jpeg -access-control-allow-origin  -cach-control max-age=1209600, -timing-allow-origin  -content-lengt 2142 -expires Wed - -date Fr, -last-odified Wed, -status 2\0 -content-tye image/jpeg -access-control-allow-origin \ -cche-control max-age=1209600, -timing-allow-origin -content-lengh 2050 -expires ed, - -date Fr, -ast-modified Mon, -status 20 -contenttype image/jpeg -access-control-allow-origin -cache-conrol max-age=1209600, -timing-allow-origin  -c\ntent-length 2151 -expires Fri - -date ri, -last-modif\ed Mon, -status 20 -conent-type image/jpeg -access-control-allow-origin  -cache-contol max-age=1209600, -timing-allow-origin  -content-legth 1535 -expires Wd, - -content-security-policy defa\lt-src -ontent-encoding br -x-content-type-options osniff -sttus 200 -vary Orign -ary Accept-Encoding -x-xss-protection \ -prama no-cache -x-fb-debug uf9WOnMihZGLrDWfdIk9TrGKmQdtGnccdlEOgrUgRfR67yT4gvj2C/49TAesR/+odr8hrXU4Vg0DFyUPG\OeTw== -x-rame-options DENY -date Fri -expect-c max-age=10, -strict-transport-security m\x-age=15552000; -access-control-allow-mthods OPTIONS -content-type aplication/x-javascript; -acces-control-allow-origin https://www.facebook.com -access-control-expose-headers \-FB-Debug, -cache-cntrol private, -access-control-allow-credentials tre -expi\es Sat, - -co\tent-security-policy default-src -content-encoding b -x-content-type-optons nosniff -status 00 -ary Origin -vary Accet-Encoding -x-xss-prtection 0 -pragma no-cach -x-fb-debg tIRZNsTYzfKz2QPP0hEw0uwLco/KnyV40BfCRHvyZo3O2w3IE/7j6rOlozmmjypKoXRvlgKVMuIGL3ZuEdjAAQ== -x-frame-options DEN -\ate Fri, -expect-ct ax-age=10, -strict-tansport-security max-age=15552000; -access-control-allow-methods OPTINS -content-tpe application/x-javascript; -access-control-allow-origin https://www.facebook.co -access-contol-expose-headers X-FB-Debug, -cache-control privae, -access-control-allow-cedentials true -expires Sa, - -content-security-policy efault-src -content-encoing br -x-content-type-options osniff -satus 200 -vary Origi -var Accept-Encoding -x-xss-protection  -praga no-cache -x-fb-debug OQYWiTlxlszC92Mp1YXK8ApFdCAQIOUkhAPB1+xkHJQqfjDZygDfN99ACweeDUbG7x6QNWU0mxdBR8J2FPA6g== -x-frame-optins DENY -date Fi, -expect-\t max-age=10, -strict-transport-security max-ge=15552000; -access-contrl-allow-methods OPTIONS -content-type application/x-javasript; -acess-control-allow-origin https://www.facebook.com -access-control-expose-headers X-B-Debug, -cche-control private, -access-control-allow-credentials \rue -exires Sat, - -contet-security-policy default-src -content-encoding b -x-content-type-otions nosniff -status 00 -v\ry Origin -vary Accept-Encoing -x-xss-protetion 0 -pragma no-cahe -x-fb-ebug p0HFP+Jnpspb11zeyEYgxlr105OmdSqx4tkl8eaAR1N0lXl6XQbTO8UKDKDqEjxLThcca3J6qxoRUWgG0odnVQ== -x-frame-options \ENY -dat\ Fri, -expect-ct maxage=10, -strict-trnsport-security max-age=15552000; -access-control-allow-methods OPTIO\S -content-typ application/x-javascript; -access-control-allow-origin https://www.fcebook.com -access-control-exose-headers X-FB-Debug, -cache-control private -access-conrol-allow-credentials true -expires St, - -content-security-policy default-sr -cotent-encoding br -x-content-type-options \osniff -sttus 200 -vary Oigin -var Accept-Encoding -x-xss-protection  -prgma no-cache -x-fb-debug XRw0F7BRogkNZr1CMVwhEDJOLbqv9n1OtLwJw0zkKgcYejKC2R09TmAWffUhhcjnDKU4HH7F\nPS6NAJpBbE9A== -x-frame-option DENY -date Fi, -expct-ct max-age=10, -strict-transport-security max-age=1552000; -access-control-allow-ethods OPTIONS -content-type aplication/x-javascript; -acces-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debg, -cachecontrol private, -access-control-allow-credentials t\ue -expres Sat, - -contet-security-policy default-src -content-encoding r -x-content-tye-options nosniff -status 2\0 -ary Origin -vary Accept-Encodng -x-xssprotection 0 -pragma no-cace -x-\b-debug 6zfb4OjE4hNPBJHQlT5E/kHSCZJRtXHvWfBGAo8YtCn7L8CbZWgGBF7L4upWO3dP+QSgARyqFvmBNPegcE15jw== -x-frame-options DNY -ate Fri, -expect-ct mx-age=10, -strict-tranport-security max-age=15552000; -access-control-allow-methods PTIONS -content-tpe application/x-javascript; -access-control-allow-origin https//www.facebook.com -access-control-expose-heade\s X-FB-Debug, -cache-control prvate, -access-contro-allow-credentials true -expires \at, - -content-security-policy deault-src -cotent-encoding br -x-content-type-options noniff -stats 200 -vary Orign -va\y Accept-Encoding -x-xss-protection  -prgma no-cache -x-fb-debug fjB1x1MwVhv6JanSzu8Ldr8d8qlnz+F6BRtgygmyfyiVs2rtvg5D/Kmp7sLpAMIaFSdxEQjTiNKUNoUw3r06w== -x-rame-options DENY -date Fri -expct-ct max-age=10, -strict-transport-security max-age=155\2000; -access-ontrol-allow-methods OPTIONS -content-type appliction/x-javascript; -access-control-allow-oigin https://www.facebook.com -access-control-expose-headers X-B-Debug, -cach\-control private, -access-control-allow-credentials \rue -exires Sat, - -contnt-security-policy default-src -content-encoding b\ -\-content-type-options nosniff -status 20 -va\y Origin -vary Accep-Encoding -x-ss-protection 0 -pragma nocache -x-fb-ebug mNPFkDjNtW61hg2fQZ8FvxVi0b0gjAVneqQ+7T609e0f6ciStxGg5PLLAaCQunaPEc2v57mC+UH2ta2EwA0G8A== -x-frame-options DEY -dte Fri, -expect-ct max-ag=10, -strict-tranport-security max-age=15552000; -access-control-allow-methods OPTONS -cotent-type application/x-javascript; -access-control-allow-origin https://ww.facebook.com -access-control-expose-eaders X-FB-Debug, -cache-control pivate, -accesscontrol-allow-credentials true -expires St, - -content-security-policy frae-ancestors -content-securi\y-policy default-src -content-encoding r -x-ontent-type-options nosniff -status 20 -var\ Origin -vary Acept-Encoding -x-xss-protectin 0 -pragma no-cach -x-b-debug rSVyfIy0pUEIG4N41LAFP91i7oMPswW6ZRUF1Z7E1hamyGD3fVkpkkg2+3GR96pariwqrCpVr9nVYTqxkbATNA== -date Fr, -ex\ect-ct max-age=10, -strict-transport-security max-age=1555200; -access-control-allo-methods OPTIONS -content-type tex\/html; -access-control-alow-origin https://www.facebook.com -access-control-expose-headers XFB-Debug, -ache-control private, -access-control-allow-credentials t\ue -se-cookie oNcnS=gpojSOS; -expires at, - -content-security-policy efault-src -content-encodig br -x-content-type-options nosnif -cont\nt-md5 j8T0XBmPlo08jOXtTJ3MEw== -status 00 -content-lngth 198 -x-xss-protection  -xfb-debug f4/9IxVq4HZYZ8dV9P6xeLypQNS2qEx/kNF3NoX9D8Z0nshFfF6M7lqeabFqQD5b50R/Iekbf9xeyr56aEUi7g== -last-modified Mn, -dae Fri, -vary Accept-Enoding -content-\ype text/css; -access-control-allow-origin  -cahe-control public,max-age=31536000,immutable -access-control-allow-credentials rue -timin-allow-origin * -expires \at, - -content-security-policy default-sr -contet-encoding br -x-content-type-options osniff -\ontent-md5 b5vUN/sgd315IdDwXDUejw== -status 20\ -contentlength 7295 -x-xss-protection  -x-fb-ebug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== -last-modified Mo, -dte Fri, -vary Accept-E\coding -content-tye text/css; -access-control-allow-origin -cace-control public,max-age=31536000,immutable -access-control-allow-credentials \rue -ti\ing-allow-origin * -expires Sa, - -content-security-policy dfault-src -conten-encoding br -x-content-type-options nosnif -contnt-md5 3N5sn/pluRe+kZxjcR6Ibw== -status \00 -contnt-length 9375 -x-xss-protection  -x-f-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== -last-modified on, -dae Fri, -vary Accept-Enoding -content-tpe text/css; -access-control-allow-origin  -cach-control public,max-age=31536000,immutable -access-control-allow-credentials t\ue -timingallow-origin * -expires F\i, - -content-security-policy defaul-src -content-ecoding br -x-content-type-options nosnif -cntent-md5 i4f5LnfeTwjEpPYLvEw9sg== -status 20 -contentlength 3785 -x-xss-protection  -x-f\-debug HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== -last-modified Mon\ -dat\ Fri, -vary Accpt-Encoding -con\ent-type text/css; -access-control-allow-origin  -cache-c\ntrol public,max-age=31536000,immutable -access-control-allow-credentials tre -timingallow-origin * -expires ri, - -content-security-policy default-rc -conten-encoding br -x-content-type-options osniff -ontent-md5 fd9ZgENjjqTO/InJ/yzr9A== -status \00 -contentlength 18878 -x-xss-protection  -xfb-debug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== -last-modified Mon -dae Fri, -vary Accept-Enco\ing -content\type text/css; -access-control-allow-origin  -ache-control public,max-age=31536000,immutable -access-control-allow-credentials tru -timing-allow-rigin * -expires ri, - -content-security-policy deault-src -conent-encoding br -x-content-type-options nosnif\ -content-\d5 mgTL4W9gmblv6l6wXzZodA== -status 00 -contet-length 6081 -x-xss-protection  -x-fb-ebug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== -last-modified on, -dte Fri, -vary Accept-Encodng -ontent-type text/css; -access-control-allow-origin  -cache-conrol public,max-age=31536000,immutable -access-control-allow-credentials rue -timin-allow-origin * -expires Thu - -content-security-policy dfault-src -content-encoing br -x-content-type-options nsniff -contentmd5 SqewXybmJVo1v4gA0JLGBQ== -status \00 -ontent-length 738 -x-xss-protection -x-fb-ebug KC/Mv8BSpLzgKNnb1cJgXL8dPdim8GGQRbNyFfUpswJaoxnMQeHpRWlZwFceTKDlmlF+3I1PWGIgOE9iug58Qw== -last-modified Mon -dae Fri, -vary Acept-Encoding -contenttype text/css; -access-control-allow-origin  -cache-contro public,max-age=31536000,immutable -access-control-allow-credentials tre -timing-allow-o\igin * -expires \ri, - -content-security-policy defult-src -conten\-encoding br -x-content-type-options nosni\f -con\ent-md5 FWVLk47e/1NAPOLzKy9mZQ== -status 2\0 -content-lengt 9648 -x-xss-protection  -x-b-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== -last-modified on, -dat Fri, -vary Accpt-Encoding -content-tpe text/css; -access-control-allow-origin -ca\he-control public,max-age=31536000,immutable -access-control-allow-credentials tre -timi\g-allow-origin * -expires Fri - -x-fb-debug ivI86tTrFwX9U5sLjaxj7fvac7JDJwsEi9Eja2Z4Oy4C7nmZIF2IkB8o8XqfevLcTTOzzEMMwFDwypn5k6IXw== -x-cont\nt-type-options nosniff -last-modified M\n, -cntent-md5 IHh5jFrVTE8LJvIHfLuDPA== -date ri, -s\atus 200 -content-type \mage/png -access-control-llow-origin * -cache-control publi,max-age=31536000,immutable -accesscontrol-allow-credentials true -content-security-policy dfault-src -timing-allow-oriin * -content-length 56 --xss-protection 0 -expires Thu - -date Fi, -lst-modified Mon, -status 2\0 -conten-type image/jpeg -access-control-allow-origin  -cache-cotrol max-age=1209600, -timing-allow-origin  -contentlength 34712 -expires hu, - -content-security-policy defult-src -contentencoding br -x-content-type-options n\sniff -\tatus 200 -vary Oigin -ary Accept-Encoding -x-xss-protection -pragm no-cache -x-fb-debug 81n69Z2aI9QZjTP3RqALLOhQMWgAFje+H3x7d+XQhHdAQs8mLv+6FDvDhBgiGdjfLJADt8Lr8zzmSPholcHCg== --frame-options DENY -date Fr, -expect-t max-age=10, -strict-transport-security max-ag=15552000; -access-control-alow-methods OPTIONS -content-type text/jaascript; -acess-control-allow-origin https://www.facebook.com -access-control-expose-headers -FB-Debug, -cache-con\rol private, -access-control-allow-credentials tue -ex\ires Sat, - -content-security-olicy default-src -content-encoding b -x-content-type-option nosniff -content-md5 YP/0rJ9pw2vE+OCDm8w5Q== -statu\ 200 -content-length \031 -x-xss-rotection 0 -x-fb-debug NNF+j6+XOFrfdhzYpIcXN8eoCwGFh5LQhEtfDyAVBLtSL4n56dyb+kUyPAOLL4HokctaJ9bHKv6JsDRAvFzpQ== -last-odified Mon, -date Fri -ary Accept-Encoding -content-type ext/css; -access-control-allow-oigin * -cache-control public,max-age=315360\0,immutable -access-control-allow-credentias true -timing-allow-origin  -expire Fri, - -cntent-security-policy default-src -content-encoding b -x-conten-type-options nosniff -content-md5 2nocW+0AN98W+9vj2rtAA== -st\tus 200 -content-length 755 -x-xs-protection 0 -x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDe\TcN241RDx5hRnvNFGykEOE4GYKgA== -last-modiied Mon, -date \ri, -vry Accept-Encoding -content-type text/\ss; -acces-control-allow-origin * -cache-control public,max-age=1536000,immutable -access-control-allow-credentals true -timing-allow-origin \ -expies Fri, - -content-security-polcy default-src -content-encoding b -x-content-typeoptions nosniff -content-md5 V/4SheZbR98CwCYd4h3cA\== -stats 200 -content-length 21\4 -x-x\s-protection 0 -x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9g/utEBUOY7EejJPR3dY3IKLRtdSZOhWsixw== -last-moified Mon, -date Fri -vry Accept-Encoding -content-type ext/css; -access-control-\llow-origin * -cache-control public,max-age=3156000,immutable -access-control-alow-credentials true -timing-allow-origin  -expir\s Fri, - -content-security\policy default-src -content-encoding b\ --content-type-options nosniff -status 00 -var\ Origin -vary Accet-Encoding -x-xss-p\otection 0 -pragma n-cache -x\fb-debug 80lq+gj7IZbnwQOAsGA0x/F6Fyx0fmRFIjbi5VF+mwwF8GmHiNvnuajfF1nPUiDbR4xm4QfRZzO2dmW5phYHdw== -x-frame-options DNY -dte Fri, -expect-ct max-ag=10, -strict-transprt-security max-age=15552000; -access-control-allow-methods OPTINS -c\ntent-type text/javascript; -access-control-allow-origin https://w\w.facebook.com -acess-control-expose-headers X-FB-Debug, -cache-control private -access-control-allow-credetials true -expires Sat - -date ri, -last-mdified Sat, -status 20 -content-ype image/jpeg -access-control-allow-origin -cache-contrl max-age=1209600, -timing-allow-origin  -content-lenth 1346 -expires Mon\ - -date Fr, -last-modfied Fri, -status 20 -conten-type image/jpeg -access-control-allow-origin -cache-cntrol max-age=1209600, -timing-allow-origin  -contentlength 5378 -expires Mon - -date Fr\, -last-modifid Sat, -status 2\0 -cotent-type image/jpeg -access-control-allow-origin  -cache-cotrol max-age=1209600, -timing-allow-origin  -content-ength 1099 -expires Wed - -date Fi, -last-mdified Wed, -status 20 -co\tent-type image/jpeg -access-control-allow-origin -cache-con\rol max-age=1209600, -timing-allow-origin \ -content-lenth 1813 -expires St, - -date Fi, -last-moified Thu, -status 20 -content-\ype image/jpeg -access-control-allow-origin -cac\e-control max-age=1209600, -timing-allow-origin  -content-lenth 2231 -expires Mn, - -content-security-policy defalt-src -contnt-encoding br -x-content-type-options nsniff -statu 200 -vary Oigin -vry Accept-Encoding -x-xss-protection -pagma no-cache -x-fb-debug 0p+00EWDce62x0+DsI9H4aEJhyeSi3JPlTdaS5BHMXBW7IgnSx2/ib/I6SJfBtMfsdXxAUQmZIk60dobz61cw== -x-fame-options DENY -date ri, -expect-c max-age=10, -strict-transport-security maxage=15552000; -access-control-allow-ethods OPTIONS -content-type application/x-javascrit; -ccess-control-allow-origin https://www.facebook.com -access-control-expose-headers X-\B-Debug, -cache-ontrol private, -access-control-allow-credentials \rue -exires Sat, - -content-secrity-policy default-src -content-encoding r -x-content-type-option nosniff -status 00 -ary Origin -vary Accept\Encoding -x-xs-protection 0 -pragma no-\ache -x-b-debug 1LWgD23lNKFTlwMtU9MYIrDqQodqZNpYVpJEdY85kjF19Zriwcv3LL1TKf1a2M1e8KZbFzbeZt/tDNluh5KMfg== -x-frame-options DNY -dae Fri, -expect-ct max-ag=10, -strict-transport-secuity max-age=15552000; -access-control-allow-methods OPTION\ -conte\t-type application/x-javascript; -access-control-allow-origin https://www.fa\ebook.com -access-control-expose-heaers X-FB-Debug, -cache-control rivate, -access-control-allow-credenials true -expires at, - -content-security-policy defaut-src -cotent-encoding br -x-content-type-options nosnif -sta\us 200 -vary Orign -ary Accept-Encoding -x-xss-protection  -pra\ma no-cache -x-fb-debug QT70qYi7OceDc1J6xNZPxbWA6J74A7vI4w5yDKqMT0zydKcu4gufbgfyUV5pp8KYHNnOjprXdLV8sxjhVZmrg== --frame-options DENY -date ri, -exect-ct max-age=10, -strict-transport-security ma-age=15552000; -ccess-control-allow-methods OPTIONS -content-type applicat\on/x-javascript; -access-control-alloworigin https://www.facebook.com -access-control-expose-headers X-FB-Debu, -cache-conrol private, -access-control-allow-credentials tue -epires Sat, - -conent-security-policy default-src -content-encoding b\ -x-content-type-opions nosniff -status 20 -va\y Origin -vary Accep\-Encoding --xss-protection 0 -pragma no-cach -x-f-debug 7fkJBsAPVJFq2FTZol9AA+/QkBHqy/UnLVOh6jnwcLsgOCgwov2UoJDyuCQsyL7daXfPhVbq9gXbFdcBEnK9eA== -x-frame-options DNY -ate Fri, -expect-ct max-age=0, -strict-ransport-security max-age=15552000; -access-control-allow-methods OPTION -content-ype application/x-javascript; -access-control-allow-origin https://www.facebok.com -access-controlexpose-headers X-FB-Debug, -cache-control privae, -access-control-allow-credentals true -expires S\t, - -content-security-policy defaultsrc -cntent-encoding br -x-content-type-options nosiff -staus 200 -vary Origi -var Accept-Encoding -x-xss-protection  -pagma no-cache -x-fb-debug amapPP5iPcmJFn0h4ov4yHD4j6Y4lq0t+cOKNHf48NaI2q8h3fx5pUQfXiPMFfyl2VO049uOPkR9LryO0T9kw== -x-frame-optios DENY -date ri, -expec-ct max-age=10, -strict-transport-security maxage=15552000; -access-cotrol-allow-methods OPTIONS -content-type appliation/x-javascript; -access-control-allw-origin https://www.facebook.com -access-control-expose-headers X-FBDebug, -cache-contrl private, -access-control-allow-credentials rue -expire\ Sat, - -content-seurity-policy default-src -content-encoding b -x-content-ty\e-options nosniff -status 00 -vry Origin -vary Accept-Enc\ding -x-xss-protecton 0 -pragma no-cach\ -x-f-debug t32y8Hm6r7S1o8WqMv2HtbAPZfK3hSQRgIu9njyHN86UXFWWcJLwQi/+hCFvNFTTecEMdi999zchr89VUjejSg== -x-frame-options DEY -ate Fri, -expect-ct max-age=1, -strct-transport-security max-age=15552000; -access-control-allow-methods OPTINS -content-ty\e application/x-javascript; -access-control-allow-origin https://www.facebook.om -access-conrol-expose-headers X-FB-Debug, -cache-control prvate, -access-conrol-allow-credentials true -expires at, - -content-security-policy default-sc -contentencoding br -x-content-type-options nosiff -tatus 200 -vary Orgin -vry Accept-Encoding -x-xss-protection  -prag\a no-cache -x-fb-debug qZ9fNZULFiTcas1J8eLDJiyuDBAlrghkM3olJD9oi7T7eJusL3bRMUZuBsYIwdsF0mjAIVE02udnrfdN/++Tg== -x-\rame-options DENY -date \ri, -xpect-ct max-age=10, -strict-transport-security max-age=1555200; -access-control-allow-mehods OPTIONS -content-type application/x-jaascript; -access-cntrol-allow-origin https://www.facebook.com -access-control-expose-headers X-F\-Debug, -cache-ontrol private, -access-control-allow-credentials tru -expire\ Sat, - -content-securitypolicy default-src -content-encoding \r -x-contnt-type-options nosniff -status 20 -var Origin -vary Accept-Enoding -x-xss-protecion 0 -pragma no-cac\e -x-b-debug YgKVIynAZNUPEjV90atEpD0KJwQ2ChoxXcj4Oh3iH4ZLkrFVlNq6JTCjEUmj68QSuJH2JDqgk2lWW4pjbuEIUw== -x-frame-options DNY -ate Fri, -expect-ct max-\ge=10, -strict-trans\ort-security max-age=15552000; -access-control-allow-methods OPTION\ -content-\ype application/x-javascript; -access-control-allow-origin https:\/www.facebook.com -ccess-control-expose-headers X-FB-Debug, -cache-control priate, -access-control-allow-creentials true -expires St, - -content-security-policy frame-anestors -contentsecurity-policy default-src -content-encoding \r -x-content-\ype-options nosniff -status 20 -vay Origin -vary Accept-Encodin -x-xss-protectin 0 -pragma no-cach -xfb-debug 7rhC62iO+Rts/b+n+IFvEXeifr57brMaYkWLW76OXJzkEpiVAq78Tsy/RQCQ8N5hDrDXI87nuaRetJUM5huJuQ== -date \ri, -epect-ct max-age=10, -strict-transport-security max-age=155520\0; -access-control-allowmethods OPTIONS -content-type texthtml; -accss-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug -cache-cotrol private, -access-control-allow-credentials tre -setcookie oNcnS=gpojSOS; -expires St, - -content-security-policy defalt-src -cont\nt-encoding br -x-content-type-options noniff -cntent-md5 j8T0XBmPlo08jOXtTJ3MEw== -status 00 -content-lengt 198 -x-xss-protection  -x-fb-deug f4/9IxVq4HZYZ8dV9P6xeLypQNS2qEx/kNF3NoX9D8Z0nshFfF6M7lqeabFqQD5b50R/Iekbf9xeyr56aEUi7g== -last-modified Mn, -dat Fri, -vary AcceptEncoding -content-tpe text/css; -access-control-allow-origin -cache-conrol public,max-age=31536000,immutable -access-control-allow-credentials \rue -timing-allw-origin * -expires Sa\, - -content-security-policy defult-src -content-\ncoding br -x-content-type-options osniff -contnt-md5 b5vUN/sgd315IdDwXDUejw== -status 20 -content-legth 7295 -x-xss-protection  -x-b-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== -last-modified Mo\, -ate Fri, -vary Accet-Encoding -contet-type text/css; -access-control-allow-origin  -cahe-control public,max-age=31536000,immutable -access-control-allow-credentials tre -ti\ing-allow-origin * -expires Sa, - -content-security-policy defult-src -conent-encoding br -x-content-type-options noniff -co\tent-md5 3N5sn/pluRe+kZxjcR6Ibw== -status 20 -ontent-length 9375 -x-xss-protection  --fb-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== -last-modified Mn, -ate Fri, -vary Acc\pt-Encoding -contet-type text/css; -access-control-allow-origin  -cache-cotrol public,max-age=31536000,immutable -access-control-allow-credentials tre -timing-allow-oigin * -expires Fri - -content-security-policy defaut-src -conent-encoding br -x-content-type-options nosnif\ -content-\d5 i4f5LnfeTwjEpPYLvEw9sg== -status 20 -contet-length 3785 -x-xss-protection  -x-fb-deug HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== -last-modified on, -ate Fri, -vary Accpt-Encoding -cotent-type text/css; -access-control-allow-origin  -cache-cntrol public,max-age=31536000,immutable -access-control-allow-credentials tru\ -timing-allow-ori\in * -expires Fi, - -content-security-policy default-rc -content-encodin br -x-content-type-options nosiff -content-d5 fd9ZgENjjqTO/InJ/yzr9A== -status 00 -content-lengh 18878 -x-xss-protection -x-fbdebug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== -last-modified Mon -dae Fri, -vary Acept-Encoding -content-typ text/css; -access-control-allow-origin  -ache-control public,max-age=31536000,immutable -access-control-allow-credentials rue -timing-alow-origin * -expires Fi, - -content-security-policy defaul\-src -content\encoding br -x-content-type-options nosnif -content-m5 mgTL4W9gmblv6l6wXzZodA== -status 00 -content-lngth 6081 -x-xss-protection \ -x-fbdebug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== -last-modified Mo, -ate Fri, -vary Accept-ncoding -cntent-type text/css; -access-control-allow-origin \ -cachecontrol public,max-age=31536000,immutable -access-control-allow-credentials tue -timing-allow-orign * -expires T\u, - -content-security-policy default-sr\ -content-encodig br -x-content-type-options nsniff -cntent-md5 FWVLk47e/1NAPOLzKy9mZQ== -status 00 -conten-length 9648 -x-xss-protection  --fb-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== -last-modified Mo, -dte Fri, -vary ccept-Encoding -ontent-type text/css; -access-control-allow-origin  -cach\-control public,max-age=31536000,immutable -access-control-allow-credentials tre -timing-allow-orign * -expires Fr, - -content-security-policy defaul-src -conten-encoding br -x-content-type-options osniff -content-md SqewXybmJVo1v4gA0JLGBQ== -status 20 -contnt-length 738 -x-xss-protection -x-fb-ebug KC/Mv8BSpLzgKNnb1cJgXL8dPdim8GGQRbNyFfUpswJaoxnMQeHpRWlZwFceTKDlmlF+3I1PWGIgOE9iug58Qw== -last-modified Mon -dat Fri, -vary Accept-Enoding -conte\t-type text/css; -access-control-allow-origin -cachecontrol public,max-age=31536000,immutable -access-control-allow-credentials tru -timing-alow-origin * -expires Fr\, - -date \ri, -ast-modified Wed, -status 00 -conten\-type image/jpeg -access-control-allow-origin \ -cache-cntrol max-age=1209600, -timing-allow-origin  -content\length 40454 -expires Sa, - -content-security-policy defaultsrc -content-encodin br -x-content-type-options nosiff -tatus 200 -vary Oigin -var Accept-Encoding -x-xss-protection  -praga no-cache -x-fb-debug 7UJtDxiFPBYY1sVqvsQp/byh+wO4VmQtzoGR1YpqwdzSX5TZPcZawYCUsAlp1SXS9x7ed5apoBsdWrWAqD2zA== -xframe-options DENY -date Fri -expect-c max-age=10, -strict-transport-security max-age=15552\00; -access-conrol-allow-methods OPTIONS -content-type text/javscript; -access-ontrol-allow-origin https://www.facebook.com -access-control-expose-headers X-FBDebug, -cache-contro private, -access-control-allow-credentials rue -exires Sat, - -content-seurity-policy default-src -content-encoding r -x-content-type-optios nosniff -content-md5 YZP/0J9pw2vE+OCDm8w5Q== -statu 200 -content-length 231 -x-xss-protecion 0 -x-fb-debug NNF+j6+XOFrfdhzYpIcXN8eoCwGFoh5LQhEtfDyAVBLtSLn56dyb+kUyPAOLL4HokctaJ9bHKv6JsDRAvFzpQ== -last-mo\ified Mon, -date ri, -vry Accept-Encoding -content-type txt/css; -acess-control-allow-origin * -cache-control public,max-age=31536000,immutabl -accss-control-allow-credentials true -timing-allow-origin  -\xpires Fri, - -content-security-olicy default-src -content-encoding b -x-content-type-optio\s nosniff -content-md5 2nocW+0Am98W+9vj2rtAA== -statu 200 -content-length 755 -x-ss-protection 0 -x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem\tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== -last-moified Mon, -date Fri -vay Accept-Encoding -content-type tex/css; -acces\-control-allow-origin * -cache-control public,max-age=3153600,immutable -access-control-\llow-credentials true -timing-allow-origin \ -xpires Fri, - -content-secuity-policy default-src -content-encoding b\ -x-content-type-op\ions nosniff -content-md5 V/4Sh\ZbR98CwCYd4h3cAg== -sttus 200 -content-length 274 -x-xss-rotection 0 -x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== -last-mod\fied Mon, -date Fi, -var Accept-Encoding -content-type txt/css; -access-conrol-allow-origin * -cache-control public,max-ae=31536000,immutable -access-control-allow-credenials true -timing-allow-origin  -expirs Fri, - -content-securiy-policy default-src -content-encoding \r -x-contnt-type-options nosniff -status 20 -vry Origin -vary Accept-Encding -x-xss-protction 0 -pragma n-cache -x-fbdebug hdieTRvwlm1ekAKUz+PCErUI8L1SH+WbBkLwZ0ikBiUAMOZiHdLsiZRRjlQJUj4F5byiz3iFAA4uT16arnRd7A== -x-frame-options DNY -dte Fri, -expect-ct max-ag\=10, -strict-tansport-security max-age=15552000; -access-control-allow-methods OPTIO\S -content-tpe text/javascript; -access-control-allow-origin https://\ww.facebook.com -accss-control-expose-headers X-FB-Debug, -cache-control privae, -access-control\allow-credentials true -expires St, - -date Fr, -last-modfied Wed, -status 00 -conten\-type image/jpeg -access-control-allow-origin -cache-cotrol max-age=1209600, -timing-allow-origin  -content-lenth 1263 -expires We\, - -date \ri, -las-modified Sun, -status 20 -conent-type image/jpeg -access-control-allow-origin -cache-contro\ max-age=1209600, -timing-allow-origin  -content-le\gth 1435 -expires Wed - -date \ri, -last-mdified Mon, -status 00 -conten-type image/jpeg -access-control-allow-origin \ -cace-control max-age=1209600, -timing-allow-origin  -contnt-length 1384 -expires St, - -date F\i, -last-moified Wed, -status 00 -conent-type image/jpeg -access-control-allow-origin  -cache-contro\ max-age=1209600, -timing-allow-origin -content-lngth 1096 -expires We, - -date Fr, -last-modifie Sun, -status 20 -contenttype image/jpeg -access-control-allow-origin  -cache-c\ntrol max-age=1209600, -timing-allow-origin  -content-lenth 1201 -expires Mon\ - -date Fri -last-modifed Mon, -status 2\0 -content-tpe image/jpeg -access-control-allow-origin  -cache-cotrol max-age=1209600, -timing-allow-origin  -ontent-length 1180 -expires Mo, - -date Fi, -last-modifid Thu, -status 00 -contnt-type image/jpeg -access-control-allow-origin  -cache-contrl max-age=1209600, -timing-allow-origin -cont\nt-length 1131 -expires We\, - -date Fr\, -lastmodified Fri, -status 20 -ontent-type image/jpeg -access-control-allow-origin  -ache-control max-age=1209600, -timing-allow-origin  -contnt-length 1076 -expires Tu\, - -date Fi, -last-modifed Sat, -status 20 -contenttype image/jpeg -access-control-allow-origin  -cache-contrl max-age=1209600, -timing-allow-origin  -content-lengt 1196 -expires We, - -date Fri -last-moified Mon, -status 20 -contnt-type image/jpeg -access-control-allow-origin  -cache-cotrol max-age=1209600, -timing-allow-origin  -content-leng\h 1214 -expires Tu, - -date Fr\, -la\t-modified Sat, -status 20 -contet-type image/jpeg -access-control-allow-origin -cche-control max-age=1209600, -timing-allow-origin \ -content-legth 1186 -expires Sat - -date Fri -last-mdified Wed, -status 00 -content-tpe image/jpeg -access-control-allow-origin -cache-contrl max-age=1209600, -timing-allow-origin  -contentlength 1116 -expires We, - -date Fr, -last-modiied Thu, -status \00 -cntent-type image/jpeg -access-control-allow-origin  -ache-control max-age=1209600, -timing-allow-origin  -content-le\gth 1194 -expires ed, - -date Fr, -last-modifed Wed, -status 00 -content-t\pe image/jpeg -access-control-allow-origin  -cach-control max-age=1209600, -timing-allow-origin  -cotent-length 2561 -expires We, - -content-security-policy defau\t-src -conent-encoding br -x-content-type-options nosni\f -\tatus 200 -vary Orig\n -vay Accept-Encoding -x-xss-protection  -prag\a no-cache -x-fb-debug ntagBSAy0N7B+W6cCPMym9uojb63DTPZNd4qbWeU9JEJ6GsZJR28NdGWJF+2pYGdhqvJfCRNFKO6Wsu1DKrmg== -x-frameoptions DENY -date ri, -expect-c\ max-age=10, -strict-transport-security ax-age=15552000; -access-contro-allow-methods OPTIONS -content-type appliation/x-javascript; -access-conrol-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debu, -cache-cotrol private, -access-control-allow-credentials tue -expies Sat, - -content\security-policy default-src -content-encoding \r -x-content-type-otions nosniff -status 20 -var Origin -vary Accept-Ecoding -x-xss-protectio 0 -pragma no-cche -x-fb-debu TCx1S56tLRACSgQRetHn9/G9virSjj5p6TxjI/yO0SEMxskavAh/jzrW0NZ+RNisDLmq+h5pEXwheYm1KHgGYg== -x-frame-options DEN -dae Fri, -expect-ct ma-age=10, -stict-transport-security max-age=15552000; -access-control-allow-methods OPIONS -contenttype application/x-javascript; -access-control-allow-origin https:/www.facebook.com -access-control-expose-heders X-FB-Debug, -cache-control pivate, -access-control-allowcredentials true -expires Sat - -content-security-policy defalt-src -conten-encoding br -x-content-type-options nsniff -satus 200 -vary Origi -var Accept-Encoding -x-xss-protection \ -pragm no-cache -x-fb-debug cGQeVJ0yynZitbvpqOoVWwcFWA4pbNMbxm6kLd93D/Rp06syo3Bkb/25dSHIqthI8YpFt8lKO44Fiv9coRFbA== -x-frame\options DENY -date ri, -expectct max-age=10, -strict-transport-security max-age=5552000; -access-control-allo-methods OPTIONS -content-type applicationx-javascript; -access-control-allo-origin https://www.facebook.com -access-control-expose-headers X-FB-Dbug, -cach-control private, -access-control-allow-credentials tru -epires Sat, - -content-secrity-policy default-src -content-encoding r -x-content-type-opti\ns nosniff -status 20 -vry Origin -vary Accept-Encodin -x\xss-protection 0 -pragma no-cahe -x-b-debug a2F7U2gfSNAOvmMj4SX8IrUAXTpRFoWi2AcWDEjjqhG9GTfSb5SwxWntbCrDLW/li49tn5FlrOqSyiHVsfLPBw== -x-frame-options ENY -dae Fri, -expect-ct ax-age=10, -strict-ransport-security max-age=15552000; -access-control-allow-methods OPT\ONS -content-tpe application/x-javascript; -access-control-allow-origin https://wwwfacebook.com -access-control-exose-headers X-FB-Debug, -cache-control privat, -access-ontrol-allow-credentials true -expires St, - -content-security-policy default\src -content-encodng br -x-content-type-options nosnif -stats 200 -vary Orign -vay Accept-Encoding -x-xss-protection  -prama no-cache -x-fb-debug lhhyzZ7f6JtEJ7VfB6YZb9/Th4Qw82KjrOLwWrOTfW6pR9sEHf1/5EFp4m9+DyKlrZmgVPJW+FCXiPu+QylAg== -x-frae-options DENY -date Fri\ -exect-ct max-age=10, -strict-transport-security max-age=1555200; -access-control-all\w-methods OPTIONS -content-type application/x-javascript -access-contrl-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debu, -cche-control private, -access-control-allow-credentials rue -exp\res Sat, - -content-se\urity-policy default-src -content-encoding b\ -x-content-type-optios nosniff -status 00 -vry Origin -vary Accpt-Encoding -x-xss-protecton 0 -pragma no-cac\e -x-b-debug fCePEei9uCqVXIV1xs2fa3gT/rg6BP9CrjdWzCNIC/B++asjzJ1FFbKdnp5xmO83iisvuRwos6qCfE9dhXKoAg== -x-frame-options ENY -ate Fri, -expect-ct max-ae=10, -strict-transport-scurity max-age=15552000; -access-control-allow-methods OPTION -contnt-type application/x-javascript; -access-control-allow-origin https:/www.facebook.com -access-control-expose-hea\ers X-FB-Debug, -cache-control priate, -access-control-allow-cedentials true -expires \at, - -content-security-policy dfault-src -content-encoing br -x-content-type-options nosnif -staus 200 -vary Oriin -var Accept-Encoding -x-xss-protection  -pragm no-cache -x-fb-debug iRBn/XnVBDIWIxUBLMtLtj5omaH7A7p11UT1D1afbZD+Ry0sthN9v9zHvAN00k4d067alZKMaUr47kiDHm4gQ== -x-frame-o\tions DENY -date Fr, -e\pect-ct max-age=10, -strict-transport-security max-age=1555200; -access-control-allow-mthods OPTIONS -content-type application/x-jvascript; -access-cotrol-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug -cache-conrol private, -access-control-allow-credentials tru -expres Sat, - -content-seurity-policy default-src -content-encoding b -x-content-tye-options nosniff -status 20 -var Origin -vary Accept-Encodng -x-xss-proection 0 -pragma n-cache --fb-debug FQ8b5JXye5XlhBtjejvj/jR27KuuDITP3T6WgnIs5B7RbHbAdw0inziQZI5IrMN31Aa8W5FCh8PoudsQRbMSwQ== -x-frame-options ENY -dte Fri, -expect-ct max-ae=10, -strict-transport-scurity max-age=15552000; -access-control-allow-methods OPIONS -con\ent-type application/x-javascript; -access-control-allow-origin http://www.facebook.com -access-cntrol-expose-headers X-FB-Debug, -cache-control private -acess-control-allow-credentials true -expires Sat\ - -content-security-policy frame-ancestor -conent-security-policy default-src -content-encoding r -x-content-type-option\ nosniff -status 2\0 -vry Origin -vary AcceptEncoding -xxss-protection 0 -pragma no-cche -\-fb-debug hqV/b79Rwe4YgV9N2BognvCfbV2jZ/JfYpAS855sX5nmytN/L7TSs02ZXnccyQqjrtrmzz2zYfNXoheYKc50Tw== -date Fr, -xpect-ct max-age=10, -strict-transport-security max-age=1555200; -access-control-allw-methods OPTIONS -content-type text\html; -accesscontrol-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-De\ug, -cache-cntrol private, -access-control-allow-credentials tru -set-cooki oNcnS=gpojSOS; -expires Sa, - -content-security-policy default-rc -content-encoing br -x-content-type-options n\sniff -conten-md5 b5vUN/sgd315IdDwXDUejw== -status 00 -content-lengh 7295 -x-xss-protection \ -x-f-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== -last-modified Mn, -dte Fri, -vary Accept-Encoing -cotent-type text/css; -access-control-allow-origin \ -cache-conrol public,max-age=31536000,immutable -access-control-allow-credentials tue -timing-allow-o\igin * -expires S\t, - -content-security-policy default-sr -cotent-encoding br -x-content-type-options nsniff -contet-md5 3N5sn/pluRe+kZxjcR6Ibw== -status 20 -content-lenth 9375 -x-xss-protection  -x-f-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== -last-modified on, -dat\ Fri, -vary Accpt-Encoding -content-tye text/css; -access-control-allow-origin  -cache-contrl public,max-age=31536000,immutable -access-control-allow-credentials rue -timing-llow-origin * -expires ri, - -content-security-policy dfault-src -contnt-encoding br -x-content-type-options osniff -c\ntent-md5 i4f5LnfeTwjEpPYLvEw9sg== -status 2\0 -ontent-length 3785 -x-xss-protection  -x-fb-debg HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== -last-modified Mo, -ate Fri, -vary Accept\Encoding -cont\nt-type text/css; -access-control-allow-origin  -cache-conrol public,max-age=31536000,immutable -access-control-allow-credentials rue -iming-allow-origin * -expires Fr, - -content-security-policy defalt-src -cntent-encoding br -x-content-type-options noniff -content-m5 fd9ZgENjjqTO/InJ/yzr9A== -status 20 -ontent-length 18878 -x-xss-protection  -x-fb-de\ug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== -last-modified Mon\ -dae Fri, -vary Accet-Encoding -contnt-type text/css; -access-control-allow-origin \ -cahe-control public,max-age=31536000,immutable -access-control-allow-credentials tre -timng-allow-origin * -expires Fi, - -content-security-policy default-rc -conten-encoding br -x-content-type-options noniff -content-md mgTL4W9gmblv6l6wXzZodA== -status 20 -conten-length 6081 -x-xss-protection  -x-fb-d\bug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== -last-modified Mo, -dae Fri, -vary Accpt-Encoding -content-typ text/css; -access-control-allow-origin  -cache-contr\l public,max-age=31536000,immutable -access-control-allow-credentials tru -tiing-allow-origin * -expires Tu, - -content-security-policy dfault-src -ontent-encoding br -x-content-type-options osniff -contet-md5 FWVLk47e/1NAPOLzKy9mZQ== -status 2\0 -content\length 9648 -x-xss-protection -x-fb-d\bug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== -last-modified Mn, -da\e Fri, -vary Accet-Encoding -conent-type text/css; -access-control-allow-origin  -cache-contro public,max-age=31536000,immutable -access-control-allow-credentials tue -tming-allow-origin * -expires Fr, - -date Fri -last-odified Mon, -status 20 -c\ntent-type image/jpeg -access-control-allow-origin -cache-ontrol max-age=1209600, -timing-allow-origin -ontent-length 37398 -expires Tu, - -content-security-policy defaul-src -content-encoing br -x-content-type-options osniff -tatus 200 -vary Orign -vry Accept-Encoding -x-xss-protection  -pagma no-cache -x-fb-debug T2Fb6tov4/VU2CcWE1iGbdCVWGl3zikBGu30FonV6DpxMLxgWwyWIo0r27g0TL65MZ7X4i2ohsyr74hTG3jKQ== -x-frame-opions DENY -date F\i, -exect-ct max-age=10, -strict-transport-security max-age=15552\00; -acces-control-allow-methods OPTIONS -content-type te\t/javascript; -access-contro-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-ebug, -cache\control private, -access-control-allow-credentials tre -exp\res Sat, - -content-security-plicy default-src -content-encoding b -x-content-ype-options nosniff -content-md5 2nocW0AmN98W+9vj2rtAA== -sttus 200 -content-length 1\55 -x-xss-protectin 0 -x-fb-debug J95hDW9snSIZlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== -las-modified Mon, -date Fi, -\ary Accept-Encoding -content-type tex/css; -access-control-alloworigin * -cache-control public,max-age=3153000,immutable -access-control\allow-credentials true -timing-allow-origin  -ex\ires Fri, - -contentsecurity-policy default-src -content-encoding r -x-contenttype-options nosniff -content-md5 V/4SheZbR98CCYd4h3cAg== -statu 200 -content-length 174 -x-xssprotection 0 -x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3ILRtdSZOhWsixw== -last-moified Mon, -date Fri -ary Accept-Encoding -content-type txt/css; -access-control-allow-oigin * -cache-control public,max-age=31536000,immutabl -acces-control-allow-credentials true -timing-allow-origin -epires Fri, - -content-security-poicy default-src -content-encoding b -x-conten-type-options nosniff -status 00 -ary Origin -vary Accept-Encoing -x-xss-protectin 0 -pragma n-cache -x-fb-ebug CmCWPlmqCm/uFgOIozX0baTftxZ3VhE4LyBiaS1Ba8d/f9IdOfG/DxhxqHc3JdaUlawX18BM8DURXwNblLHteA== -x-frame-options DEN -dat Fri, -expect-ct max-age10, -strit-transport-security max-age=15552000; -access-control-allow-methods OPTI\NS -content-tpe text/javascript; -access-control-allow-origin https://ww.facebook.com -access-control-expose-heders X-FB-Debug, -cache-control pr\vate, -access-control-allowcredentials true -expires St, - -x-fb-debug ORWOg2jR1rbO1ILKezoBrqCYFwqccLo76Z0yTAXhy9kK94PkFLtETQ8IkakHHwtfpp/aE1Wu7v6o+RRvhVTCT== -x-content-typ\-options nosniff -last-modified Mo, -content-m5 aceXgUioFutSxdIu20vnQQ== -date ri, -staus 200 -content-type imge/png -access-control-allow-\rigin * -cache-control public,max-age=3153600,immutable -acess-control-allow-credentials true -content-security-policy \efault-src -timing-allo-origin * -content-length 1\7 -x-xss-protectin 0 -expires hu, - -date Fri -last-mdified Wed, -status 00 -contenttype image/jpeg -access-control-allow-origin -cche-control max-age=1209600, -timing-allow-origin  -contet-length 1066 -expires \ed, - -x-fb-debug hmeONhxlOikUn5JWEr5LODXNSDoQr4Al9oZByowJnsG768Yr9lqfAocuoDG3ET6GHtZCGyboYlfXgcsNxzXsg== -x-content-type-ptions nosniff -last-modified \on, -contnt-md5 W6cjFtLyG3NmnM599q2XQw== -status 20 -ate Fri, -strict-transport-security max-age=315\6000; -content-\ype image/png -access-control-allow-origin -cache-cotrol public,max-age=31536000,immutable -access-control-allow-credentials t\ue -timin\-allow-origin * -content-length 07 -x-xss-p\otection 0 -expires St, - -date Fi, -last-odified Wed, -status 20 -contenttype image/jpeg -access-control-allow-origin  -ache-control max-age=1209600, -timing-allow-origin  -content-lengh 948 -expires Wed - -date Fi, -las\-modified Mon, -status 20 -c\ntent-type image/jpeg -access-control-allow-origin \ -cache-conrol max-age=1209600, -timing-allow-origin -cntent-length 2152 -expires Mo, - -content-security-policy default-sc -content-e\coding br -x-content-type-options nosnif -sta\us 200 -vary Oigin -v\ry Accept-Encoding -x-xss-protection  -pagma no-cache -x-fb-debug UVv0oe/+es+7dgoQWv9n0RgnGfm+xsnA/Iq5fD3aHwBMr11k5BvSh+BzI6zihX5/h/8orIE/QfjkWLv8Be9Og== -x-fram-options DENY -date \ri, -xpect-ct max-age=10, -strict-transport-security max-age=1555200; -ccess-control-allow-methods OPTIONS -content-type application/x-javacript; -access-control-llow-origin https://www.facebook.com -access-control-expose-headers X-FB-Dbug, -cache\control private, -access-control-allow-credentials tre -exires Sat, - -contet-security-policy default-src -content-encoding \r -x\content-type-options nosniff -status 20 -var Origin -vary Accept-Encoing -x-xss-protction 0 -pragma no-cahe -x-fb-debg JbOY87U1He0j0KzsfkkstH/yjYU1mBIa9guTiQhk/yd0UeMIEA6Nrxy8BZZzquA0hE2FkL4XzPXf0zZa4TUDSQ== -x-frame-options DEY -dte Fri, -expect-ct mx-age=10, -strct-transport-security max-age=15552000; -access-control-allow-methods OPTINS -contenttype application/x-javascript; -access-control-allow-origin htps://www.facebook.com -acces-control-expose-headers X-FB-Debug, -cache-control pivate, -access-control-allow-credentals true -expires Sa, - -content-security-policy default-rc -content-encding br -x-content-type-options osniff -sttus 200 -vary Orign -vay Accept-Encoding -x-xss-protection  -pragm no-cache -x-fb-debug i6EVcXfsFOTqpkGOYUS2B1wz2AQjlNYF\Ator8A5wVeRimZnRcztk9OElPuLHrD4MkKr9qlhAx6UM6Me6xVkNg== -x-frame-optins DENY -date Fr\, -expect-c max-age=10, -strict-transport-security max-age=1552000; -acess-control-allow-methods OPTIONS -content-type applicaion/x-javascript; -access-control-allw-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug\ -cace-control private, -access-control-allow-credentials tru\ -expirs Sat, - -content-security-polic\ default-src -content-encoding r -x-content-\ype-options nosniff -status 00 -vry Origin -vary \ccept-Encoding -x-xss-protectin 0 -pragma o-cache -x-f-debug 3saA1PCrN28LM0iyAb4VugAJLlHFaIR1k8aghHr7PrEqKeJRk3tHffLkr9mi+Wc0QCEUGnrswKLaGF2/wbNqPw== -x-frame-options DEN -dat Fri, -expect-ct max-ae=10, -strict-transport-scurity max-age=15552000; -access-control-allow-methods OPTIOS -\ontent-type application/x-javascript; -access-control-allow-origin htts://www.facebook.com -access-control-expose-header X-FB-Debug, -cache-control privat, -access-control-allow-credntials true -expires Sat - -content-security-policy de\ault-src -content-encodin br -x-content-type-options no\niff -staus 200 -vary Oigin -vry Accept-Encoding -x-xss-protection  -prama no-cache -x-fb-debug nWHIgMSJK2w22Lxm4mwfyGWKtZteyQUVxZ4I/tLBFIv3MOEk3LNRFfzXe0ZjEYzrAWFdq\etH7nzOVqGJn2ojA== -xframe-options DENY -date Fri\ -expect-c max-age=10, -strict-transport-security max-age=1555200; -access-control-allow-mehods OPTIONS -content-type application/x-javascrip; -access-con\rol-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-De\ug, -cache-conrol private, -access-control-allow-credentials \rue -xpires Sat, - -content-security-pol\cy default-src -content-encoding b -x-content-tye-options nosniff -status 00 -var\ Origin -vary Accept-Ecoding -x-\ss-protection 0 -pragma nocache -x-fb-ebug LX9x0T+zbHhQlpqjecnJ8AnoHt9JkvRR8x4Txp5TKgBpzroSrNl/WZWaFwaYCbTheV8/ffnTZDPExwCCCAttUQ== -x-frame-options \ENY -dae Fri, -expect-ct max-\ge=10, -strit-transport-security max-age=15552000; -access-control-allow-methods PTIONS -content-ty\e application/x-javascript; -access-control-allow-origin https://www.faebook.com -access-control-expose-header X-FB-Debug, -cache-control rivate, -access-controlallow-credentials true -expires Sa\, - -content-security-policy defult-src -content-encodng br -x-content-type-options noniff -staus 200 -vary Origi -var Accept-Encoding -x-xss-protection \ -pr\gma no-cache -x-fb-debug BJo0rSTzS5YBo+ZS+O0KsUb5qSihZkY0n4ER+ShvqBv\v6Lcym3PqqRD1uXBJu0fB2XxA87MBhGyxQszl8BtLQ== -x-\rame-options DENY -date Fr, -expect-\t max-age=10, -strict-transport-security max-ag=15552000; -access-control-allow-ethods OPTIONS -content-type application/xjavascript; -access-control-allow-oigin https://www.facebook.com -access-control-expose-headers X-FB-Debug -cachecontrol private, -access-control-allow-credentials tru -exires Sat, - -contentsecurity-policy default-src -content-encoding b\ -x-content-type-optons nosniff -status 20 -ary Origin -vary Accept-Enoding -x-xs-protection 0 -pragma no-cahe -x-fb-ebug WiJG+zsrWf46xpzJ42rgkAuaSJ3ZsbG257drL8mGDBzGlHg3r+P7YelbWUqw+R7V9m5K3s8UdpvC7mr9QsYUhg== -x-frame-options DEY -dat Fri, -expect-ct ma\-age=10, -strict-transp\rt-security max-age=15552000; -access-control-allow-methods OPTINS -cotent-type application/x-javascript; -access-control-allow-origin https://www.faceook.com -ccess-control-expose-headers X-FB-Debug, -cache-control rivate, -access-control-allow-credentils true -expires Sat - -content-security-policy frame-ancstors -content-security-plicy default-src -content-encoding b --content-type-options nosniff -status 00 -vay Origin -vary Accept-ncoding -x-xss-potection 0 -pragma no-\ache -x-fbdebug 11y9sN7qtzOoijlRDs+7xfzoE+Sj910j9prMSJfaLU4LFTjH9AcRVglyp0yFirQRX9DQgZ3Ab1YD4XhJsB0u5Q== -date ri, -\xpect-ct max-age=10, -strict-transport-security max-age\15552000; -access-control-allow-method OPTIONS -content-type text/html -access-control-allow-origi https://www.facebook.com -access-control-expose-headers X-FB-Debg, -cche-control private, -access-control-allow-credentials rue -et-cookie oNcnS=gpojSOS; -expires at, - -content-security-policy defaul\-src -content-encodin br -x-content-type-options nosnff -cont\nt-md5 j8T0XBmPlo08jOXtTJ3MEw== -status 20 -ontent-length 198 -x-xss-protection \ -xfb-debug f4/9IxVq4HZYZ8dV9P6xeLypQNS2qEx/kNF3NoX9D8Z0nshFfF6M7lqeabFqQD5b50R/Iekbf9xeyr56aEUi7g== -last-modified Mo, -\ate Fri, -vary Accpt-Encoding -contet-type text/css; -access-control-allow-origin  -ache-control public,max-age=31536000,immutable -access-control-allow-credentials \rue -timin-allow-origin * -expires Sat - -content-security-policy default-rc -conten-encoding br -x-content-type-options nosnff -conent-md5 b5vUN/sgd315IdDwXDUejw== -status 00 -content-lngth 7295 -x-xss-protection  -x-fb-ebug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== -last-modified Mn, -dae Fri, -vary Accept-Encodin -cotent-type text/css; -access-control-allow-origin -c\che-control public,max-age=31536000,immutable -access-control-allow-credentials tru -timing-allow-oriin * -expires St, - -content-security-policy defalt-src -ontent-encoding br -x-content-type-options \osniff -contentmd5 3N5sn/pluRe+kZxjcR6Ibw== -status 00 -conten-length 9375 -x-xss-protection -x-fb-debu zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== -last-modified Mon -dae Fri, -vary Acept-Encoding -cotent-type text/css; -access-control-allow-origin  -cachecontrol public,max-age=31536000,immutable -access-control-allow-credentials \rue -timing-llow-origin * -expires Fr, - -content-security-policy defult-src -content-encod\ng br -x-content-type-options nosnff -content-md\ i4f5LnfeTwjEpPYLvEw9sg== -status 00 -contet-length 3785 -x-xss-protection  -x-fbdebug HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== -last-modified M\n, -dte Fri, -vary Accep-Encoding -content-ype text/css; -access-control-allow-origin -cache-conrol public,max-age=31536000,immutable -access-control-allow-credentials tre -tming-allow-origin * -expires Fr, - -content-security-policy deault-src -content-enoding br -x-content-type-options nosiff -contentmd5 fd9ZgENjjqTO/InJ/yzr9A== -status 2\0 -content-\ength 18878 -x-xss-protection  -x-fb-debg elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== -last-modified Mn, -dae Fri, -vary Accept-Encodin\ -conten\-type text/css; -access-control-allow-origin  -cace-control public,max-age=31536000,immutable -access-control-allow-credentials tue -timing-allow-rigin * -expires Fi, - -content-security-policy defult-src -content-enoding br -x-content-type-options nosnif\ -content-md\ mgTL4W9gmblv6l6wXzZodA== -status 20 -content-lengt 6081 -x-xss-protection  -x-fb-deug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== -last-modified \on, -dte Fri, -vary Accept-Enco\ing -cotent-type text/css; -access-control-allow-origin \ -cache-cntrol public,max-age=31536000,immutable -access-control-allow-credentials rue -iming-allow-origin * -expires Tu, - -content-security-policy de\ault-src -content-encodin br -x-content-type-options nosnff -cotent-md5 SqewXybmJVo1v4gA0JLGBQ== -status 20 -cntent-length 738 -x-xss-protection  -x-fb-debg KC/Mv8BSpLzgKNnb1cJgXL8dPdim8GGQRbNyFfUpswJaoxnMQeHpRWlZwFceTKDlmlF+3I1PWGIgOE9iug58Qw== -last-modified \on, -ate Fri, -vary Accept-Enoding -contet-type text/css; -access-control-allow-origin  -cace-control public,max-age=31536000,immutable -access-control-allow-credentials tre -tim\ng-allow-origin * -expires ri, - -content-security-policy defaul-src -ontent-encoding br -x-content-type-options nosnif -content-md FWVLk47e/1NAPOLzKy9mZQ== -status 20 -content-lngth 9648 -x-xss-protection  -x-f-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== -last-modified Mo, -dte Fri, -vary Accept-ncoding -contnt-type text/css; -access-control-allow-origin  -cace-control public,max-age=31536000,immutable -access-control-allow-credentials tre -timing-allow-rigin * -expires Fri - -x-fb-debug ivI86tTrFwX9U5sLjaxj7fvac7JDJwsEi9Eja2Z4Oy4C7nmZIF2IkB8o8XqfevLcTTOzzMMwFDwypn5k6bIXw== -x-contet-type-options nosniff -last-modified Mo, -content-m5 IHh5jFrVTE8LJvIHfLuDPA== -date Fri -sttus 200 -content-type imae/png -accss-control-allow-origin * -cache-control public,max-age=31536000,immutble -access-cotrol-allow-credentials true -content-security-policy defaut-src -timing-llow-origin * -content-length \56 -x-xss-rotection 0 -expires hu, - -date ri, -last-modfied Mon, -status 20\ -conte\t-type image/jpeg -access-control-allow-origin  -cache-cntrol max-age=1209600, -timing-allow-origin \ -cotent-length 36920 -expires Fr, - -content-security-policy default\src -content-ecoding br -x-content-type-options nosnff -contentmd5 YZP/0rJ9pw2vE+OCDm8w5Q== -status 20 -content-leng\h 2031 -x-xss-protection  -x-b-debug NNF+j6+XOFrfdhzYpIcXN8eoCwGFoh5LQhEtfDyAVBLtSL4n56dyb+kUyPAOLL4HokctaJ9bHKv6JsDRAvFzpQ== -last-modified Mon\ -dte Fri, -vary Accept-Encoing -contenttype text/css; -access-control-allow-origin  -cache-ontrol public,max-age=31536000,immutable -access-control-allow-credentials tru -tming-allow-origin * -expires \ri, - -content-security-policy default-rc -cotent-encoding br -x-content-type-options nosnff -content-d5 2nocW+0AmN98W+9vj2rtAA== -status 00 -content-ength 1755 -x-xss-protection -x-fbdebug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== -last-modified Mon -dat Fri, -vary ccept-Encoding -cntent-type text/css; -access-control-allow-origin  -cache-con\rol public,max-age=31536000,immutable -access-control-allow-credentials tru -timingallow-origin * -expires ri, - -content-security-policy deault-src -content-enoding br -x-content-type-options nosnif -statu 200 -vary Orign -ary Accept-Encoding -x-xss-protection  -pra\ma no-cache -x-fb-debug VJPPpdIuna0PsAOJTkd+NZrSo/smOqSCe00kT70yq1W+3WFV69RoCGxXDwfGHAHkOIzx3H6IQBmGV+mRQbwNw== -xframe-options DENY -date Fi, -expct-ct max-age=10, -strict-transport-security max-age=15552000 -access-control-allw-methods OPTIONS -content-type textjavascript; -acces-control-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-ebug, -cache-cotrol private, -access-control-allow-credentials tru\ -expirs Sat, - -content-security-poli\y default-src -content-encoding r -xcontent-type-options nosniff -content-md5 V/4SheZbR98CwCYd4h3cAg= -s\atus 200 -content-length 214 -x-xss-potection 0 -x-fb-debug QLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== -lst-modified Mon, -date Fri -v\ry Accept-Encoding -content-type tex/css; -access-control-allow-ori\in * -cache-control public,max-age=3153600,immutable -access-control-allow-credentias true -timing-allow-origin  -expire Fri, - -conte\t-security-policy default-src -content-encoding r -x-conte\t-type-options nosniff -status 00 -vay Origin -vary Accept-Enc\ding -x-xss-protecion 0 -pragma no-c\che -x-fb-\ebug hCRcDm8RuOwYbYu/YuM824iQWjlZblcAbg7abvZgYrLW6oe/CKJVOFVJx6FJ/h7LJRDOvvNoBYzvo1Pv0pH2AA== -x-frame-options DEN -dte Fri, -expect-ct \ax-age=10, -strict-tranport-security max-age=15552000; -access-control-allow-methods PTIONS -ontent-type text/javascript; -access-control-allow-origin htps://www.facebook.com -access-contol-expose-headers X-FB-Debug, -cache-control private -access-control-allow-credentia\s true -expires \at, - -date Fi, -last-\odified Mon, -status 20 -content-ty\e image/jpeg -access-control-allow-origin  -cace-control max-age=1209600, -x-fb-edge-debug ETqCNIawZjlBn_-DsYnz8Eke5UQ5XSMbncc1bgHpZPgcb9aHXXEgTr2zbPLCc\AYd63x6e7HEZvELIF5ZU-YwQ -timing-allow-oriin * -content-length 2\54 -expirs Fri, - -dte Fri, -last-modified Mn, -sta\us 200 -content-type i\age/jpeg -access-ontrol-allow-origin * -cache-control maxage=1209600, -timing-llow-origin * -content-length 283 -expir\s Wed, - -conten\-security-policy default-src -content-encoding r -x-content-typ-options nosniff -status 20 -ary Origin -vary Accet-Encoding -x-xs-protection 0 -pragma no-cche -xfb-debug 0LaxLj167sUn/Smj88vRmssRRg01q+EcQbQOHpjOzYjB2fYy7BDvq2qHg4YXAAPpKAlfBymVLBwrd/9GCs/GwA== -x-frame-options ENY -dte Fri, -expect-ct max-ag=10, -strict-trnsport-security max-age=15552000; -access-control-allow-methods OPTI\NS -content-tpe application/x-javascript; -access-control-allow-origin https//www.facebook.com -access-control-expose-header X-FB-Debug, -cache-control privat, -acess-control-allow-credentials true -expires Sa, - -content-security-policy default-sc -content-encoing br -x-content-type-options nsniff -tatus 200 -vary Oriin -vay Accept-Encoding -x-xss-protection  -ragma no-cache -x-fb-debug sv6s4cVWgre7iG2N4AjtMoA/v9Hp+fLNOn5AUHBBip02YKfnHaZG2RNsYjT/cqmrRHRg1g\2EAVSqdfO2bJHsw== -x-fame-options DENY -date Fi, -ex\ect-ct max-age=10, -strict-transport-security max-age=1555000; -acess-control-allow-methods OPTIONS -content-type application/x-javas\ript; -access-cont\ol-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-ebug, -cache-ontrol private, -access-control-allow-credentials tr\e -expres Sat, - -content-securi\y-policy default-src -content-encoding r -x-content-type-option\ nosniff -status 00 -var Origin -vary Accpt-Encoding -x-xss-protectin 0 -pragma no-cach\ -x-f-debug +qvKJUxHytS9y2J3fUAg4/Oe6iQG4N4f5I7mhclUiM6QFJWTvkxEY0hvcHqpio5YDc1+2TNGs0uks5n8EDpJZQ== -x-frame-options ENY -ate Fri, -expect-ct max-age=0, -strict-transport-securi\y max-age=15552000; -access-control-allow-methods OTIONS -content-ype application/x-javascript; -access-control-allow-origin https://www.fcebook.com -access-control-expse-headers X-FB-Debug, -cache-control privte, -access-control-allow-creentials true -expires S\t, - -content-security-policy defult-src -content-encodig br -x-content-type-options osniff -\tatus 200 -vary Orgin -vay Accept-Encoding -x-xss-protection  -pr\gma no-cache -x-fb-debug Ialaex2lAp8FVggaIlNE5V7+ntPp38j2nvicX\83MHQYhvD8m5MkH1zdjj/g0Rfh5Q1WuX366h6aKxfsp0Mhhg== -x-frame-opions DENY -date ri, -epect-ct max-age=10, -strict-transport-security ma\-age=15552000; -access-contol-allow-methods OPTIONS -content-type applicatin/x-javascript; -access-control-allow-o\igin https://www.facebook.com -access-control-expose-headers X-FB-Debg, -cache-contrl private, -access-control-allow-credentials tre -ex\ires Sat, - -content-securty-policy default-src -content-encoding b -x-cotent-type-options nosniff -status \00 -vay Origin -vary Accet-Encoding -x-xss-protecion 0 -pragma no-ache -xfb-debug lKraYNnYGgMz6gqiG0m9WXRreHg9Z5n/9tEbyJCs0FFsF0LmdR73aEDUXTqdAG7VhKrQnFfHXjxEZ0N7yAbR+Q== -x-frame-options DEY -dae Fri, -expect-ct ax-age=10, -strict-transport-securiy max-age=15552000; -access-control-allow-methods PTIONS -cotent-type application/x-javascript; -access-control-allow-origin http://www.facebook.com -acces\-control-expose-headers X-FB-Debug, -cache-control privte, -access-cotrol-allow-credentials true -expires Sa, - -content-security-policy defult-src -ontent-encoding br -x-content-type-options nosnif -st\tus 200 -vary Orgin -vry Accept-Encoding -x-xss-protection  -pagma no-cache -x-fb-debug 24u4W9n6RfnFkdHetRHiq9arEYTTBhydET+2+9970OPxlY7VyTnD/VI4cQo9cCSqv1ame8zmVAAP2e3WPhOBw== -x-rame-options DENY -date Fri -expect-c max-age=10, -strict-transport-security max\age=15552000; -access-controlallow-methods OPTIONS -content-type application/x-javascrpt; -access-control-allw-origin https://www.facebook.com -access-control-expose-headers X-FB-Debug -cache-contrl private, -access-control-allow-credentials tue -expire Sat, - -content-securit\-policy default-src -content-encoding b -x-content-type-optios nosniff -status 20\ -ary Origin -vary Accept-Encodng -x-xss-potection 0 -pragma no-ca\he -x-fb-debg cQfzBLtGIzv/gkJzRKFpBvCukbwBy9Ah3X5IL7msjOIgPkYdJ/gEoZadKNsvWNd+P+p81Xr4hiTsWnYvbq4ogw== -x-frame-options DEN -dae Fri, -expect-ct ma\-age=10, -strict-transport-scurity max-age=15552000; -access-control-allow-methods OPTION\ -content-tpe application/x-javascript; -access-control-allow-origin https://www\facebook.com -access-ontrol-expose-headers X-FB-Debug, -cache-control privte, -access-contr\l-allow-credentials true -expires St, - -content-security-policy deault-src -content-encodng br -x-content-type-options nsniff -statu 200 -vary Oriin -var Accept-Encoding -x-xss-protection  -pra\ma no-cache -x-fb-debug 3XiBcZLt5O/nvcB\B9Jd5ZGyMv62DXvOyccJN3hr1h5otKloXez8tKF3KxDMfS+cTEa2SDzAiGGl/301LcAzaw== -x-frame-opions DENY -date Fi, -expect-c max-age=10, -strict-transport-security max-age=155520\0; -access-ontrol-allow-methods OPTIONS -content-type text/javascript -access-c\ntrol-allow-origin https://www.facebook.com -access-control-expose-headers X-FB-Debu, -cache-contol private, -access-control-allow-credentials \rue -expirs Sat, - -content-security-polcy default-src -content-encoding r -x-conte\t-type-options nosniff -content-md5 jfOCzNx/2cFBFpAlRbWwg== -tatus 200 -content-length 705 -x-xssprotection 0 -x-fb-debug BQ8sB5VGbkE9woIwdpfAlv07SQw0nettHRumToilCBIwoxdYeSIBMm/4h9s7+C0D6XkdIKHy/6fGQuTh85Wuw== -last-odified Mon, -date Fi, -var Accept-Encoding -content-type textcss; -ccess-control-allow-origin * -cache-control public,max-age=1536000,immutable -access-cotrol-allow-credentials true -timing-allow-origin  -exires Fri, - -content-s\curity-policy default-src -content-encoding b -x-conten-type-options nosniff -content-md5 b6p/+eUIEnbvgKixESeog== -\tatus 200 -content-length 467 -x-xss-protectio 0 -x-fb-debug \NVr1RX5JQw1VVmAPTvFz1qBToUvwVtUnqIvtA5sR/dBPk40sgDomfGCk0MDEv0N4BSAMMXBCgpKfxeyPmplMw== -lst-modified Mon, -date Fi, -v\ry Accept-Encoding -content-type applcation/x-javascript; -access-contol-allow-origin * -cache-control public,\ax-age=31536000,immutable -access-control-allow-credetials true -timing-allow-origin  -xpires Fri, - -content-security-olicy default-src -content-encoding b -x-conten-type-options nosniff -status 20 -var Origin -vary Accpt-Encoding -x-x\s-protection 0 -pragma no-cahe -x-fb-dbug CF8moTgH2QAU0n0gAY0VDcCm9pVaY1l2x4Edbu82ixEfNAZC/tg99GFN/c1HBwhkVVAEMhtBw5DovuzHpvrHBA== -x-frame-options ENY -dte Fri, -expect-ct maxage=10, -strict-transort-security max-age=15552000; -access-control-allow-methods OPIONS -content\type application/x-javascript; -access-control-allow-origin https://www.facebook.co\ -acess-control-expose-headers X-FB-Debug, -cache-control rivate, -acces-control-allow-credentials true -expires Sat - -pragma no-cche -x\fb-debug ej9iz3s/lmrV13M3tvaaFzBfi+OmflI2x7D5HU5K40Xv7pKgzVDs7ivV6BgaxxQhxC13o8FVsjAMAEtwd0kSmw== -content-encoding r -x-co\tent-type-options nosniff -date Fi, -epect-ct max-age=10, -strict-transport-security max-age=5552000; -ontent-type text/html; -status 20 -cache-co\trol private, -content-security-policy frame-ncestors -content-securiy-policy default-src -set-cookie oNcnSgpojSOS; -var Accept-Encoding -x-xss-protection  -exires Sat, - -x-fb-deug OxKw8TR8lbzIJU+2fUvDIwKqRu/aMmeaOMRtwmLh4Usz2Qm21k8r5zxc8oTr2aXdC9pMjy3vHyhEGZkmA4A2MQ== -vary Oigin -staus 302 -location https://fbcdn.n\t/security/hsts-pixel.gif?c=2.5 -dat Fri, -strict-transport-security max-age=1555200; -access-control-allw-methods OPTIONS -content-type text/html -access-control-allow-oigin * -access-control-expose-headers X-FB-Debu, -access-control-allowcredentials true -content-length  - -date ri, -last-modifed Tue, -status 2\0 -content-tye image/jpeg -access-control-allow-origin  -cache-contol max-age=1209600, -timing-allow-origin  -cotent-length 934 -expires Wed - -x-fb-debug o+N7DXgGFIjeSrKe/AohasMYqi2mPJg+GXV9UxT8GGN7MMYLeCm40rnnsGT54Y1TB/8g/NR024/bZ4IRdnm3Q== -x-content-type\options nosniff -last-modified Mon -contentmd5 WFuqLsaU44qDUAslAtUA0A== -date Fri -sttus 200 -content-type iage/png -access-control-alow-origin * -cache-control public,max-age=31536000,immuable -access-control-allow-creentials true -content-security-policy dfault-src -timing-allow-oigin * -content-length 535 -x\xss-protection 0 -expires Mo\, - -x-fb-debug o32lUy/wzCjBV96zWB7ERnzoHuO6hu+jP+qq0+qnUvrj7P+U/PUk+WdH6fu/zpCUA0VmdttY0PuhlmnLvQVyw== -x-conte\t-type-options nosniff -last-modified Mo\, -cntent-md5 /cHO8B3YAO/ChHs9p9JPDw== -date Fri -stats 200 -content-type image/pg -access-control-a\low-origin * -cache-control public,max-age=31536000,immutale -access-control-allow-creentials true -content-security-policy defalt-src -timingallow-origin * -content-length 5\8 -x-xss-protectin 0 -expires Thu - -date ri, -last-modif\ed Tue, -status 20 -cotent-type image/jpeg -access-control-allow-origin  -cache-contol max-age=1209600, -timing-allow-origin -content-lenth 836 -expires F\i, - -date Fr, -last-mdified Wed, -status 20 -contet-type image/jpeg -access-control-allow-origin \ -cache-cotrol max-age=1209600, -timing-allow-origin  -content-lenth 13307 -expires Fi, - -date Fri -last-\odified Tue, -status \00 -content-tpe image/jpeg -access-control-allow-origin  -cache-contol max-age=1209600, -x-fb-edge-debug RvuYQEJ3w9ho3lEjUWNiGa6vY4riNY5COqj9W1GIY8dvqMsqbJwLNzgg4Q3wN7_LgSuzb3WoJu6ZS_9unt0jw -tiing-allow-origin * -content-length 1342 -expire Fri, - -ate Fri, -last-modified Su\, -tatus 200 -content-type mage/jpeg -access-control-llow-origin * -cache-control max-ag=1209600, -timing-alloworigin * -content-length 1629 -e\pires Mon, - -dat Fri, -last-modified Tu, -sttus 200 -content-type imagejpeg -access-\ontrol-allow-origin * -cache-control max-ae=1209600, -x-fb-edge-dbug cXG-MBMAdvKTcjt8OJCXjW48y-yxYO1g1CVtvfNzkBXgpPTuh7Kt8VxpPK8-jYiCYHxzLag3SkUTBT31s68wsw -timing-allow-origin  -content-lengt 11954 -expires Fr, - -date Fi, -last-modfied Sat, -status 00 -contet-type image/jpeg -access-control-allow-origin  -cace-control max-age=1209600, -x-fb-edge-debug KSsp6S\oFvwd9tK658jJkNtmglqlI7glK9X2WngFYEoWOhqBo6BHZsXmbCZIyYK-5tLNFV4fHJ8qx71J9WwwHw -timing-allow-orign * -content-length 1225 -expres Fri, - -dat\ Fri, -last-modified Mo\, -satus 200 -content-type imag\/jpeg -access-controlallow-origin * -cache-control max-age=120600, -x-fb-edge-debu _pXCFVcHx2fhuNlZSvAWPJsJVj16r5LMNG_mKNFSEtAL2qIEp4aevBFIdeHONrP6EbUo-YdkPyl2ibPHEtO06g -timing-allow-origin  -cotent-length 16518 -expires ri, - -date Fi, -last-moified Wed, -status 20 -contet-type image/jpeg -access-control-allow-origin \ -cace-control max-age=1209600, -timing-allow-origin -content-ength 16676 -expires Sat - -date F\i, -las-modified Thu, -status 2\0 -content-tpe image/jpeg -access-control-allow-origin \ -cache-cotrol max-age=1209600, -x-fb-edge-debug 4QKv42fPsuZz_RHbzHsxSZw28FjNk43GtJKIyZ3KQR_2dPR4-n8GP6PxVcoWVWXuO6zkNYudqf92qu6wbYZag -timng-allow-origin * -content-length 9\46 -expi\es Fri, - -dae Fri, -last-modified hu, -statu 200 -content-type imge/jpeg -access-control-allow-rigin * -cache-control max-age=120600, -timig-allow-origin * -content-length 669 -expres Fri, - -dat Fri, -last-modified on, -tatus 200 -content-type imagejpeg -ac\ess-control-allow-origin * -cache-control max-ge=1209600, -x-b-edge-debug OcdlCYVtclhoanH3vEUkcgp5xdsSJSXMxlEhJ4bO7qyasGUPhnVWXtNyeZvMeI_pD-VInWssMGo8yegAx2KtJA -timing-allow-origin \ -cotent-length 10193 -expires Fr, - -date Fr, -last-modiied Sun, -status 20 -content-typ image/jpeg -access-control-allow-origin  -cache-ontrol max-age=1209600, -x-fb-edge-debug SQiVqS4015WAz4E9qhwJNtBwWENBziYq0Q3GD4sOYsLuZyU_yZchRLWo4Tok6HP1SVJKWf-ELFcOxWYmF7Q3A -timing-alloworigin * -content-length 0226 -expies Fri, - -ate Fri, -last-modified Mo, -st\tus 200 -content-type image/jpg -access-control-allow-rigin * -cache-control max-age1209600, -x-fb-edge-de\ug lQRqvNCns5jAwUvHJx-aRiKhxS87KyomZNM8op0uc6T4Q-Kzir7UvfG0Cfqbm9jrsxx-whuTMw56_4y6nfIyPg -timing-allow-origin \ -content-\ength 13412 -expires Fri - -date Fri\ -last-modifed Tue, -status 2\0 -ontent-type image/jpeg -access-control-allow-origin -cache-cntrol max-age=1209600, -x-fb-edge-debug iSX08DnUOAjuXq5615qrlzXjQHn56Eobci-Mkig918wUVNb2Bkc8fFuOhjoBymu98kH0dk4PURTTWQzo2xqeA -timng-allow-origin * -content-length 1399 -expire Fri, - -dae Fri, -last-modified Sat\ -tatus 200 -content-type imae/jpeg -access-contro\-allow-origin * -cache-control max-age=129600, -x-fb-edge-debu\ mFDVT8NJPWXtJAmYZED_iPs8jxXpC-j42LvTd-1oOAWjynfv6Un-JSL7wbb5wR6rJ3PbMj4-z-ha1JenE6t53A -timing-allow-origin  -content-legth 14750 -expires Fr\, - -date Fri -lastmodified Fri, -status 20 -content-ype image/jpeg -access-control-allow-origin  -cache-conrol max-age=1209600, -x-fb-edge-debug PKKgGhRqXZAPB-HTyUnisy5_eWZwRugxTDE0o1atSNZSu_vR_JNdyMjEkgnjm4BA07Ck-sPtAdewpiDmaULZw -timig-allow-origin * -content-length 1266\ -expi\es Fri, - -dte Fri, -last-modified Tue -tatus 200 -content-type image/jeg -access-controlallow-origin * -cache-control max-age=120960, -timing-allow-orgin * -content-length 946 -expi\es Fri, - -dte Fri, -last-modified St, -stats 200 -content-type i\age/jpeg -access-cntrol-allow-origin * -cache-control max-age1209600, -x-fbedge-debug SVE5wbBMq6nBPMdvWHwzhufMGUFZZwXUxfOdpvBQ2vvv15fP6Kdqc2voex9W0q728GbaAlIVivUbEHR5ZjO8Xg -timing-allow-origin  -content-le\gth 14253 -expires Fri - -date Fri -lst-modified Wed, -status 20 -content-tye image/jpeg -access-control-allow-origin  -cace-control max-age=1209600, -x-fb-edge-debug \GqgelCYFB0BiS6uYzD96dNa4BhiBfcQVtVD687YRc3V0Fq25BG83jav2srswSCAzcZj3v-vcBN5nEGpiQLayg -timing-allow-origi * -content-length 967 -epires Fri, - -ate Fri, -last-modified Tu, -statu 200 -content-type imagejpeg -access-control-llow-origin * -cache-control max-age=120960, -x-fb-ege-debug szdnBjD8T5IeEDrB7fAzeFse03nIrEhE30CecCV1x9mdMZrm5_w-dSBLJIqwF1nL3vyADJy5fJ1pqT4w0vNfQA -timing-allow-origin \ -cntent-length 9161 -expires Fri - -x-fb-debug SphHt6X8aaC4O7OrE5YStS9cLlGtO84gPXoWYeEUx8YETGBAUpAb6kZ1M9K2qvkOImJHKdLcDwtsWAkzbU3Fw== -x-content-tye-options nosniff -last-modified Mo, -c\ntent-md5 cH2zTAVPHVXw/aQfDhS/Bg== -date Fr\, -satus 200 -content-type mage/gif -access-control-allow-orign * -cache-control public,max-ag=31536000,immutable -access-control-allow-credentils true -content-security-policy defaut-src -timing-allow-orgin * -content-length 52 -x-xss-protectio 0 -expires S\n, - -x-fb-debug 8Y7xmhHv+dUABQ5G/C/MNsrpA0Kqadd59S8IxcuvsypxKRmzuNfxuGmHTjx2N7B/96SvyBm4CHcdpmHrM5G6A== -x-content-type-otions nosniff -last-modified Mo, -cotent-md5 YRyRbJo4R7CNEE1X8k7Jfg== -date F\i, -tatus 200 -content-type iage/gif -access-control-allow-oigin * -cache-control public,ax-age=31536000,immutable -access-control-allow-cr\dentials true -content-security-policy deault-src -timing-allow-ori\in * -content-length 4\ -x-x\s-protection 0 -expires T\u, - -date \ri, -last-modifie\ Tue, -status 20 -ontent-type image/jpeg -access-control-allow-origin  -cace-control max-age=1209600, -timing-allow-origin  -co\tent-length 1769 -expires Fr, - -date Fi, -last-modifid Sun, -status 20 -contenttype image/jpeg -access-control-allow-origin  -cach-control max-age=1209600, -timing-allow-origin \ -c\ntent-length 1986 -expires Wed - -date \ri, -last-modiied Wed, -status 20\ -conten-type image/jpeg -access-control-allow-origin \ -ca\he-control max-age=1209600, -timing-allow-origin  -content-lenth 1897 -expires Mo, - -date Fri -ast-modified Mon, -status \00 -ontent-type image/jpeg -access-control-allow-origin \ -cache-contrl max-age=1209600, -timing-allow-origin  -content-lengh 1649 -expires hu, - -date ri, -last-modi\ied Thu, -status 20 -co\tent-type image/jpeg -access-control-allow-origin \ -cache-ontrol max-age=1209600, -timing-allow-origin  -contentlength 1704 -expires St, - -date ri, -last-modifed Sat, -status 00 -\ontent-type image/jpeg -access-control-allow-origin -cache-contol max-age=1209600, -timing-allow-origin  -ontent-length 1764 -expires ri, - -x-fb-debug jLVtRmmf8FlBFmmvs77zLZ5kxGJFK0IqAKFtWQ76Z2EgBlPqA+zVbftdXn/CG4btJFwOvIwfVg1THxtuM9XrQ== -x-content-typeoptions nosniff -last-modified Mo, -cotent-md5 P3oj2EL6pHt7tkWGA5Yf5A== -date Fr, -tatus 200 -content-type image/pg -access-control-allow-orign * -cache-control public,ma-age=31536000,immutable -access-control-allowcredentials true -content-security-policy default-sr -timing-allow-oriin * -content-length 425 -x-xss-pr\tection 0 -expires Mn, - -x-fb-debug zgiRiFCyGejMO+S8ItrjPiYsRyk+QRGBIPYFs1MUy8X3d0Sv34P8iBvmFNGm64hI5o1LgAyFWCvpGoEWSI6Dw== -x-content-type-ptions nosniff -last-modified Mon -content-\d5 3T8z1xV6w0Ytr6bG8xDapg== -date Fri -s\atus 200 -content-type imge/png -acce\s-control-allow-origin * -cache-control public,max-age=31\36000,immutable -acces-control-allow-credentials true -content-security-policy defaut-src -timing-all\w-origin * -content-length \446 -x-xss-potection 0 -expires un, - -x-fb-debug YwWjkdpYzNYMlNNJD9CuSWSTbH0EI2+Dpe3Jq9nSVy1M3G/WtFrs8I+Gd/IIh5BxeJRXv40dMxgDqM8rJkLJg== -x-content-type-optios nosniff -last-modified \on, -contet-md5 hel74bGLstl9qZYs0X9wiw== -date Fi, -tatus 200 -content-type imag/png -access-control-a\low-origin * -cache-control public,max-ag\=31536000,immutable -acess-control-allow-credentials true -content-security-policy default-\rc -timing-allow-ori\in * -content-length 146 -x-xs-protection 0 -expires on, - -x-fb-debug fYuO1K2+pP/a0ojdgA4UMJftmsZbp94jLX+EinKxh1YpvdASqcNKLddBYWslALDzhbQsQ4IT6GNBwRpfYZdGQ== -ary Origin -status 02 -locatin https://fbsbx.com/security/hsts-pixel.gif?c=5 -date F\i, -strict-transport-secrity max-age=31536000; -access-control-allow-methods OPTION -c\ntent-type text/html; -access-control-allow-origin -access-control-expos\-headers X-FB-Debug, -access-control-allow-credentials tru -ontent-length 0 - -x-f\-debug D2C3KCUrNX0IcbEFFd98z4RNxDDCwBUCDHl90jXulGwOxmJxWO1aM7CrVtWJAoUuzAfDJNeCy5WqDd/b5kxZww== -vary Or\gin -satus 302 -location https://conect.facebook.net/security/hsts-pixel.gif -dat Fri, -strict-transport-security max-ge=31536000; -acess-control-allow-methods OPTIONS -content-type ext/html; -acess-control-allow-origin * -access-control-expose-headers X-F\-Debug, -access-co\trol-allow-credentials true -content-length - -date ri, -ast-modified Tue, -status 00 -content-typ image/jpeg -access-control-allow-origin \ -cachecontrol max-age=1209600, -timing-allow-origin  -content-l\ngth 1030 -expires at, - -content-security-policy defaul-src -contentencoding br -x-content-type-options nosnif -cont\nt-md5 GbW1CEUmglUhzaSOEdSaoA== -status 20 -content-ength 2729 -x-xss-protection  -x-fb-debg K7i4csmZ3STmUbcVQPDrwljTtYrLDVly/7Xbfm5Klrzml3q/Tot0QxJAoYongnFR0iIsXn59NC1FBJt9Jud/Wg== -last-modified on, -dae Fri, -vary Accet-Encoding -content-tpe text/css; -access-control-allow-origin  -cache-contro public,max-age=31536000,immutable -access-control-allow-credentials \rue -timing-llow-origin * -expires Fi, - -content-security-policy defult-src -content\encoding gzip -x-content-type-options nosnif -statu\ 200 -vary ccept-Encoding -content-lengh 57 -x-xss-protection -pra\ma no-cache -x-fb-debug 4vq/LxHnPcsIYiYckiARhkkv5jakxS8hEvHOxdsFoP9tdYOiJItfiYSGFGkhBZ\R3PE26p1LHDXOTAv2r4uTXg== -x-f\ame-options DENY -date Fri -strct-transport-security max-age=31536000; -content-type imag/gif -ac\ess-control-allow-origin * -cache-control priate, -exires Sat, - -x-fb-deug hseUHLM6SPODsqeO2RZmsm0tztto+XotuXfT5d0K0ABVXdi4WuGjySB5L54B7YXWqIF0lBl/pHFen7sspCEvrA== -x-content-type-options nsniff -last-odified Mon, -content-md5 2\HW2vCOWZxptNKZnZBIaQ== -dte Fri, -status 00 -ontent-type image/png -access-control-allow-origin  -\ache-control public,max-age=31536000,immutable -access-control-allow-credentials tru\ -contet-security-policy default-src -timing-allow-origin  -content-lenth 1006 -x-xss-protection \ -expres Sat, - -x-b-debug rLt2njfX8GUcpbqIDsCtJztJjtmYj0D1MfZ7NFDdCyhdUo3jSU+8ILYuDM2R0zWLaXmX87PyahwrVHk0EWq0GQ== -x-content-type-options nosnff -last-\odified Mon, -content-md5 hf9mDzhK3T9XugswoJ7w6== -dat Fri, -status 20 -conent-type image/png -access-control-allow-origin  -ache-control public,max-age=31536000,immutable -access-control-allow-credentials tue -content-security-poliy default-src -timing-allow-origin  -content-lenth 10609 -x-xss-protection  -expres Sun, - -content-security-\olicy default-src -content-encoding r -x-content-type-optins nosniff -status 20 -ary Origin -vary Accept-Encodin -x-xss-prtection 0 -pragma no-c\che -x-fb-dbug zKuFhCxJ+fk1ALL5zYIYhbxP0onfKxozWFYWWzA4S965WZXJEBlCwvmDdBwseLVL+w9o9IjGO2MhJJsvdneEvQ== -x-frame-options DEY -dat Fri, -expect-ct max-age=\0, -strit-transport-security max-age=15552000; -access-control-allow-methods OPIONS -cotent-type application/x-javascript; -access-control-allow-origin https://www.faebook.com -acess-control-expose-headers X-FB-Debug, -cache-control prvate, -access-control-allow-credentals true -expires Sa, - -content-security-policy dfault-src -contnt-encoding br -x-content-type-options nosnif -sttus 200 -vary Ori\in -ary Accept-Encoding -x-xss-protection  -pagma no-cache -x-fb-debug GNPnsjeqGsfo5CTG1T61oyUgkV6GWuWaQysaElCUg2hFkTiOjNloXJiJB8BG8XrPdCusfZBlIp4LqcSUwAQ7A== -x-frame-optons DENY -date Fi, -exp\ct-ct max-age=10, -strict-transport-security ma-age=15552000; -acces\-control-allow-methods OPTIONS -content-type pplication/x-javascript; -access-control-allow-orign https://www.facebook.com -access-control-expose-headers X-F-Debug, -cachecontrol private, -access-control-allow-credentials tre -expres Sat, - -conent-security-policy default-src -content-encoding b -x-contnt-type-options nosniff -status 20 -vry Origin -vary Accept-Encding -x-xss-protetion 0 -pragma no-ca\he -xfb-debug XKxMuee79bPaR3DNnKe3uX4QWg11cwbhMwLAoo5pZgXertc/e/kXEtJkZl675cIcUCyXRAdC6imCEPyl4yRqRA== -x-frame-options ENY -dae Fri, -expect-ct max-age=\0, -strict-transport-securiy max-age=15552000; -access-control-allow-methods OPTION\ -content-typ application/x-javascript; -access-control-allow-origin h\tps://www.facebook.com -access-contrl-expose-headers X-FB-Debug, -cache-control pivate, -access-control-allow-credential true -expires at, - -content-security-policy default-sc -content-encodng br -x-content-type-options n\sniff -cntent-md5 80EI7SblF/5CDFIwFGm3KA== -status 00 -content-l\ngth 17851 -x-xss-protection  -x-fb-debu +u+u+RXJTpu9orEwUh1kk9h5tRF+tk5oTd/K1j1eYB/htnFLJ8MpdFebaNpiQPCFSoZdONgVqmSmTz4r8OWFWQ== -last-modified Mn, -da\e Fri, -vary Accept-Encod\ng -contnt-type application/x-javascript; -access-control-allow-origin -cache-contol public,max-age=31536000,immutable -access-control-allow-credentials tue -timingallow-origin * -expires Fi, - -content-security-policy default\src -content-encoing br -x-content-type-options nsniff -content-d5 BBkMcEf61Nkmx/eSXCIoQw== -status 20 -content-ength 1120 -x-xss-protection  -xfb-debug 9FBANDg7RcA1p6bI6sH/gfd5OaSCNeQTKvqA3G1KQ+7RA5lSdB7bEs5xmwt3wvlt27wTIpE0r1+7vb/zv3ybcg== -last-modified Mo, -dat Fri, -vary Acept-Encoding -cotent-type application/x-javascript; -access-control-allow-origin  -cace-control public,max-age=31536000,immutable -access-control-allow-credentials tre -timing-allow-orgin * -expires \ri, - -content-security-policy defaul\-src -contnt-encoding br -x-content-type-options nsniff -contet-md5 9Nfy3C53u/Ywu2r8e8i4tg== -status 20 -cotent-length 6219 -x-xss-protection  -x-fbdebug 5c+nR6FAecnDHjYqXy+XnNY028sY1v72DFfEoTwA9DC/kIUrN+d9LwDoQzt1p8sMOC3NsPdlHv9PL7HLG9sWOg== -last-modified M\n, -dat Fri, -vary Accept-Encodin\ -contet-type application/x-javascript; -access-control-allow-origin  -cache-cotrol public,max-age=31536000,immutable -access-control-allow-credentials tue -timing-allw-origin * -expires Thu - -content-security-policy efault-src -cntent-encoding br -x-content-type-options \osniff -cntent-md5 PiHXNxZCUbdf5Zq2elJI6Q== -status 00 -co\tent-length 9348 -x-xss-protection \ -x-fb-ebug PisRElE9u27wtLXOsg/IKP8YR21ncVXpXMA8kGh1l7DV+O/wH8fys5g8bih8guJRmrrjvyifwQXceEDQOF4NNg== -last-modified on, -ate Fri, -vary Accept-Encding -conent-type application/x-javascript; -access-control-allow-origin -ache-control public,max-age=31536000,immutable -access-control-allow-credentials tr\e -timing-allow-oigin * -expires Fr, - -content-security-policy defaul-src -contet-encoding br -x-content-type-options osniff -contet-md5 IzoUHBEUROEs3o00XENnsA== -status 20 -content-lenth 619 -x-xss-protection -x-fb-debg n98TkqZ18WcK3LOHs1r/T80Sis/9rSTxbCfm6hmlBsJP7TTEF+whogcduEx6x3THC9ciYCYQkK9o/wWaMWuI4A== -last-modified Mon\ -dte Fri, -vary Accept-Encoing -content-tpe application/x-javascript; -access-control-allow-origin  -cche-control public,max-age=31536000,immutable -access-control-allow-credentials tue -timing-a\low-origin * -expires Fri - -content-security-policy default-rc -content-encodin\ br -x-content-type-options nosni\f -c\ntent-md5 YLFSkpjxno+EhBDQEmkYww== -status 20 -conte\t-length 676 -x-xss-protection  -xfb-debug Tf92zsNf/9wZXQW+9xFI0Q8Fb05esZI+GIn6VZAkhn6NnbyWsp4KgPyZAtuk1W3EvnH1qZBmwLLxFRbY9QWKqw== -last-modified Mn, -dae Fri, -vary Accept-Encodin\ -content-ype application/x-javascript; -access-control-allow-origin  -cachecontrol public,max-age=31536000,immutable -access-control-allow-credentials rue -timing-\llow-origin * -expires Fri - -content-security-policy defult-src -contnt-encoding br -x-content-type-options nsniff -stat\s 200 -vary Orign -var Accept-Encoding -x-xss-protection \ -pragm no-cache -x-fb-debug wRSkTC590t8WwiytNtAv5HmeZGwL8dJpQF5IMx39X69oxWin5RyKT+Fo0+3Kb17Ms3DLtNrdlseuJlje5SO/A== -x-frame-optios DENY -date \ri, -expect-c\ max-age=10, -strict-transport-security ax-age=15552000; -acces-control-allow-methods OPTIONS -content-type appication/x-javascript; -access-control-allow-rigin https://www.facebook.com -access-control-expose-headers X\FB-Debug, -cace-control private, -access-control-allow-credentials t\ue -e\pires Sat, - -da\e Fri, -last-modified ri, -statu 200 -content-type imagepng -access-control-all\w-origin * -cache-control max-age=129600, -timng-allow-origin * -content-length \9 -expirs Fri, - -content-security-olicy default-src -content-encoding \r -x-content-ype-options nosniff -status 20 -vry Origin -vary Accept-Ecoding -x-xss-prtection 0 -pragma \o-cache -x-fb-ebug tctLBJnET09BflPSiJ+KphBga2Uz4Zm+EL7ocriOaf4Ut2LTQpXfh4aWW8lFxIsmcFJAtIkSxqJEiLDCvoL7Jw== -x-frame-options ENY -d\te Fri, -expect-ct max-ae=10, -strict-ransport-security max-age=15552000; -access-control-allow-methods OPIONS -content-tpe application/x-javascript; -access-control-allow-origin ttps://www.facebook.com -access-contol-expose-headers X-FB-Debug, -cache-control pivate, -access-control-allow-credentals true -expires at, - -:status 00 - -pragma no-cach -\ate Fri, -content-encoding zip -srver EdgeChat -status 20 -x-frame-otions DENY -content-type appication/json -acc\ss-control-allow-origin https://www.facebook.com -cache-control privte, -acces-control-allow-credentials true -content-length 15 - -:status 40 - -content-security-policy defaultsrc -contnt-encoding br -x-content-type-options nsniff -stat\s 200 -vary Oriin -ary Accept-Encoding -x-xss-protection  -prgma no-cache -x-fb-debug 5TYop5RZdv3V93nsRwDPC9he+DAq/wN1NMbuuPYERVSXNj9hh9aTDd/JRo3oZuniry2F4WbXxZjMwum6xBP7g== -x-frame-optons DENY -date ri, -exect-ct max-age=10, -strict-transport-security max-ge=15552000; -access-control-al\ow-methods OPTIONS -content-type appliction/x-javascript; -access-control-allow-orig\n https://www.facebook.com -access-control-expose-headers X-FB-Debug -cache-contro\ private, -access-control-allow-credentials tru -xpires Sat, - diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/qifs/netbsd.qif b/external/lsquic/src/liblsquic/ls-qpack/test/qifs/netbsd.qif deleted file mode 100644 index b2bb8bc..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/qifs/netbsd.qif +++ /dev/null @@ -1,235 +0,0 @@ -:method GET -:scheme http -:authority www.netbsd.org -:path / -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 -accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 -accept-language en-US,en;q=0.5 -accept-encoding gzip, deflate -connection keep-alive -upgrade-insecure-requests 1 -pragma no-cache -cache-control no-cache - -:method GET -:scheme http -:authority www.netbsd.org -:path /global.css -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 -accept text/css,*/*;q=0.1 -accept-language en-US,en;q=0.5 -accept-encoding gzip, deflate -referer http://www.netbsd.org/ -connection keep-alive -pragma no-cache -cache-control no-cache - -:method GET -:scheme http -:authority www.netbsd.org -:path /global.js -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 -accept */* -accept-language en-US,en;q=0.5 -accept-encoding gzip, deflate -referer http://www.netbsd.org/ -connection keep-alive -pragma no-cache -cache-control no-cache - -:method GET -:scheme http -:authority www.netbsd.org -:path /donations/donors.js -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 -accept */* -accept-language en-US,en;q=0.5 -accept-encoding gzip, deflate -referer http://www.netbsd.org/ -connection keep-alive -pragma no-cache -cache-control no-cache - -:method GET -:scheme http -:authority www.netbsd.org -:path /images/NetBSD-smaller.png -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 -accept */* -accept-language en-US,en;q=0.5 -accept-encoding gzip, deflate -referer http://www.netbsd.org/ -connection keep-alive -pragma no-cache -cache-control no-cache - -:method GET -:scheme http -:authority www.netbsd.org -:path /images/download-icon-orange.png -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 -accept */* -accept-language en-US,en;q=0.5 -accept-encoding gzip, deflate -referer http://www.netbsd.org/ -connection keep-alive -pragma no-cache -cache-control no-cache - -:method GET -:scheme http -:authority www.netbsd.org -:path /images/support-icon-orange.png -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 -accept */* -accept-language en-US,en;q=0.5 -accept-encoding gzip, deflate -referer http://www.netbsd.org/ -connection keep-alive -pragma no-cache -cache-control no-cache - -:method GET -:scheme http -:authority www.netbsd.org -:path /images/community-icon-orange.png -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 -accept */* -accept-language en-US,en;q=0.5 -accept-encoding gzip, deflate -referer http://www.netbsd.org/ -connection keep-alive -pragma no-cache -cache-control no-cache - -:method GET -:scheme http -:authority www.netbsd.org -:path /images/develop-icon-orange.png -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 -accept */* -accept-language en-US,en;q=0.5 -accept-encoding gzip, deflate -referer http://www.netbsd.org/ -connection keep-alive -pragma no-cache -cache-control no-cache - -:method GET -:scheme http -:authority www.netbsd.org -:path /images/donate-icon-orange.png -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 -accept */* -accept-language en-US,en;q=0.5 -accept-encoding gzip, deflate -referer http://www.netbsd.org/ -connection keep-alive -pragma no-cache -cache-control no-cache - -:method GET -:scheme http -:authority www.netbsd.org -:path /images/links/paypal.gif -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 -accept */* -accept-language en-US,en;q=0.5 -accept-encoding gzip, deflate -referer http://www.netbsd.org/ -connection keep-alive -pragma no-cache -cache-control no-cache - -:method GET -:scheme http -:authority www.netbsd.org -:path /images/links/stripe-black-donate-small.png -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 -accept */* -accept-language en-US,en;q=0.5 -accept-encoding gzip, deflate -referer http://www.netbsd.org/ -connection keep-alive -pragma no-cache -cache-control no-cache - -:method GET -:scheme http -:authority www.netbsd.org -:path /images/links/cafepress.png -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 -accept */* -accept-language en-US,en;q=0.5 -accept-encoding gzip, deflate -referer http://www.netbsd.org/ -connection keep-alive -pragma no-cache -cache-control no-cache - -:method GET -:scheme http -:authority www.netbsd.org -:path /images/westernlogo_sm.png -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 -accept */* -accept-language en-US,en;q=0.5 -accept-encoding gzip, deflate -referer http://www.netbsd.org/ -connection keep-alive -pragma no-cache -cache-control no-cache - -:method GET -:scheme http -:authority www.netbsd.org -:path /images/columbia.jpg -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 -accept */* -accept-language en-US,en;q=0.5 -accept-encoding gzip, deflate -referer http://www.netbsd.org/ -connection keep-alive -pragma no-cache -cache-control no-cache - -:method GET -:scheme http -:authority www.netbsd.org -:path /images/fastly.png -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 -accept */* -accept-language en-US,en;q=0.5 -accept-encoding gzip, deflate -referer http://www.netbsd.org/ -connection keep-alive -pragma no-cache -cache-control no-cache - -:method GET -:scheme http -:authority www.netbsd.org -:path /images/navBar-gradient.png -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 -accept */* -accept-language en-US,en;q=0.5 -accept-encoding gzip, deflate -referer http://www.netbsd.org/global.css -connection keep-alive -pragma no-cache -cache-control no-cache - -:method GET -:scheme https -:authority www.paypalobjects.com -:path /en_US/i/btn/btn_subscribe_SM.gif -user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 -accept */* -accept-language en-US,en;q=0.5 -accept-encoding gzip, deflate, br -referer http://www.netbsd.org/ -cookie PYPF=CT-2 -connection keep-alive -pragma no-cache -cache-control no-cache - diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/run-qif.pl b/external/lsquic/src/liblsquic/ls-qpack/test/run-qif.pl deleted file mode 100755 index d829c00..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/run-qif.pl +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/perl -# -# Script to run a QIF file. - -use strict; -use warnings; - -use File::Compare qw(compare); -use File::Copy qw(copy); -use File::Path qw(remove_tree); -use File::Spec::Functions qw(catfile); -use Getopt::Long qw(GetOptions); - -my $cleanup = 1; - -GetOptions( - "aggressive=i" => \my $aggressive, - "table-size=i" => \my $table_size, - "immed-ack=i" => \my $immed_ack, - "risked-streams=i" => \my $risked_streams, - "no-cleanup" => sub { $cleanup = 0 }, -); - -# To reduce the number of tests from doubling, check HTTP/1.x mode in some -# input, but not others. The value of this setting is easy to determine. -my $http1x = ($aggressive + $table_size + $immed_ack + $risked_streams) & 1; - -my $dir = catfile(($ENV{TMP} || $ENV{TEMP} || "/tmp"), - "run-qif-out-" . rand . $$); -mkdir $dir or die "cannot create temp directory $dir"; -if (!$cleanup) -{ - print "created temp directory: $dir\n"; -} - -END { - if (defined($dir) && $cleanup) { - remove_tree($dir); - } -} - -my $encode_log = catfile($dir, "encode.log"); -my $qif_file = catfile($dir, "qif"); -my $bin_file = catfile($dir, "out"); -my $resulting_qif_file = catfile($dir, "qif-result"); - -my ($encode_args, $decode_args) = ('', ''); -if ($aggressive) { - $encode_args="$encode_args -A"; -} - -if ($immed_ack) { - $encode_args="$encode_args -a 1"; -} - -if (defined $risked_streams) { - $encode_args = "$encode_args -s $risked_streams"; - $decode_args = "$decode_args -s $risked_streams"; -} - -if (defined $table_size) { - $encode_args = "$encode_args -t $table_size"; - $decode_args = "$decode_args -t $table_size"; -} - -copy($ARGV[0], $qif_file) or die "cannot copy original $ARGV[0] to $qif_file"; - -if ($^O eq 'MSWin32') { - system('interop-encode', $encode_args, '-i', $qif_file, '-o', $bin_file) - and die "interop-encode failed"; - system('interop-decode', $decode_args, '-m', '1', '-i', $bin_file, '-o', $resulting_qif_file, '-H', $http1x) - and die "interop-decode failed"; -} else { - system("interop-encode $encode_args -i $qif_file -o $bin_file") - and die "interop-encode failed"; - system("interop-decode $decode_args -m 1 -i $bin_file -o $resulting_qif_file -H $http1x") - and die "interop-decode failed"; -} - -sub sort_qif { - no warnings 'uninitialized'; - my ($in, $out) = @_; - local $/ = "\n\n"; - open F, $in or die "cannot open $in for reading: $!"; - my @chunks = map $$_[1], - sort { $$a[0] <=> $$b[0] } - map { /^#\s*stream\s+(\d+)/; [ $1, $_ ] } - ; - close F; - for (@chunks) { - s/^#.*\n//mg; - } - open F, ">", $out or die "cannot open $out for writing: $!"; - print F @chunks; - close F; -} - -sort_qif($qif_file, "$qif_file.canonical"); -sort_qif($resulting_qif_file, "$resulting_qif_file.canonical"); - -exit compare "$qif_file.canonical", "$resulting_qif_file.canonical"; diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/run-scenario.sh b/external/lsquic/src/liblsquic/ls-qpack/test/run-scenario.sh deleted file mode 100755 index 2f3ee7a..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/run-scenario.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/bash -# -# Script to run a scenario file. A scenario file contains encoder parameters -# as well as a list of headers in QIF format. The headers are encoded and -# the output is then decoded and compared to the original. - -set -x -set -e - -for NEED in interop-encode interop-decode sort-qif.pl; do - type $NEED - if [ $? -ne 0 ]; then - echo $NEED is not in $PATH 1>&2 - exit 1 - fi -done - -function cleanup { - rm -vf $QIF_FILE - rm -vf $BIN_FILE - rm -vf $RESULTING_QIF_FILE - rm -vf $ENCODE_LOG - rmdir $DIR -} - -if [ -z "$DO_CLEANUP" -o "$DO_CLEANUP" != 0 ]; then - trap cleanup EXIT -fi - -RECIPE=$1 - -source $RECIPE - -DIR=/tmp/recipe-out-$$$RANDOM -ENCODE_LOG=$DIR/encode.log -QIF_FILE=$DIR/qif -BIN_FILE=$DIR/out -RESULTING_QIF_FILE=$DIR/qif-result -mkdir -p $DIR - -if [ "$AGGRESSIVE" = 1 ]; then - ENCODE_ARGS="$ENCODE_ARGS -A" -fi - -if [ "$IMMEDIATE_ACK" = 1 ]; then - ENCODE_ARGS="$ENCODE_ARGS -a 1" -fi - -if [ "$ANNOTATIONS" = 1 ]; then - ENCODE_ARGS="$ENCODE_ARGS -n" -fi - -if [ -n "$RISKED_STREAMS" ]; then - ENCODE_ARGS="$ENCODE_ARGS -s $RISKED_STREAMS" - DECODE_ARGS="$DECODE_ARGS -s $RISKED_STREAMS" -fi - -if [ -n "$TABLE_SIZE" ]; then - ENCODE_ARGS="$ENCODE_ARGS -t $TABLE_SIZE" - DECODE_ARGS="$DECODE_ARGS -t $TABLE_SIZE" -fi - -echo -e "$QIF"\\n > $QIF_FILE - -interop-encode $ENCODE_ARGS -i $QIF_FILE -o $BIN_FILE 2>$ENCODE_LOG -interop-decode $DECODE_ARGS -i $BIN_FILE -o $RESULTING_QIF_FILE -diff <(sort-qif.pl --strip $QIF_FILE) \ - <(sort-qif.pl --strip $RESULTING_QIF_FILE) diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/0.95-reset.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/0.95-reset.sce deleted file mode 100644 index 76796ee..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/0.95-reset.sce +++ /dev/null @@ -1,10 +0,0 @@ -TABLE_SIZE=256 -AGGRESSIVE=1 -RISKED_STREAMS=0 -QIF=$(cat<<'EOQ' -dude nude -dude nude -dude where is my car? - -EOQ -) diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/cancel-stream.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/cancel-stream.sce deleted file mode 100644 index f8d3efa..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/cancel-stream.sce +++ /dev/null @@ -1,22 +0,0 @@ -TABLE_SIZE=256 -ANNOTATIONS=1 -QIF=$(cat<<'EOQ' -dude nude -dude nude -## c 1 -dude where is my car? - -one fish -two fish -## c 2 -red fish -blue fish - -black fish -blue fish -## c 3 -old fish -new fish - -EOQ -) \ No newline at end of file diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/drain-2.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/drain-2.sce deleted file mode 100644 index 4e1c4ab..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/drain-2.sce +++ /dev/null @@ -1,37 +0,0 @@ -TABLE_SIZE=512 -ANNOTATIONS=1 -AGGRESSIVE=0 -RISKED_STREAMS=0 -IMMEDIATE_ACK=0 -QIF=$(cat<<'EOQ' -notre dame translates to our lady of paris -iconography poor peoples book -spire must be repaired -sainte-chapelle is known as the kingdom of light -notre dame translates our to lady of paris -iconography poor peoples book -## s 2 - -notre dame translates to our lady of paris -iconography poor peoples book - -victor hugo wrote the hunchback -archdiocese of paris -twelve million people visit annually -coronation of emperor napoleon -most famous gothic cathedral - -victor hugo wrote the hunchback -archdiocese of paris -twelve million people visit annually -coronation of emperor napoleon -most famous gothic cathedral - -notre dame translates to our lady of paris -iconography poor peoples book - -notre dame translates to our lady of paris -iconography poor peoples book - -EOQ -) \ No newline at end of file diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/drain.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/drain.sce deleted file mode 100644 index 20bea05..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/drain.sce +++ /dev/null @@ -1,37 +0,0 @@ -TABLE_SIZE=512 -ANNOTATIONS=1 -AGGRESSIVE=0 -RISKED_STREAMS=0 -IMMEDIATE_ACK=0 -QIF=$(cat<<'EOQ' -notre dame translates to our lady of paris -iconography poor peoples book -spire must be repaired -sainte-chapelle is known as the kingdom of light -notre dame translates to our lady of paris -iconography poor peoples book -## s 2 - -notre dame translates to our lady of paris -iconography poor peoples book - -victor hugo wrote the hunchback -archdiocese of paris -twelve million people visit annually -coronation of emperor napoleon -most famous gothic cathedral - -victor hugo wrote the hunchback -archdiocese of paris -twelve million people visit annually -coronation of emperor napoleon -most famous gothic cathedral - -notre dame translates to our lady of paris -iconography poor peoples book - -notre dame translates to our lady of paris -iconography poor peoples book - -EOQ -) \ No newline at end of file diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/end-dst-2.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/end-dst-2.sce deleted file mode 100644 index c48f464..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/end-dst-2.sce +++ /dev/null @@ -1,14 +0,0 @@ -# This scenario is designed to reach the 'case HUFF_DEC_END_DST' -# in lsqpack_dec_enc_in(). -TABLE_SIZE=256 -AGGRESSIVE=0 -RISKED_STREAMS=0 -QIF=$(cat<<'EOQ' -aaaaaaaaaaaaaaaaaaaaaaaaa aaaa -bbbbbbbbbbbbbbbbbbbbbbbbb bbbb - -aaaaaaaaaaaaaaaaaaaaaaaaa aaaa -bbbbbbbbbbbbbbbbbbbbbbbbb bbbb - -EOQ -) \ No newline at end of file diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/end-dst.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/end-dst.sce deleted file mode 100644 index bf14404..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/end-dst.sce +++ /dev/null @@ -1,14 +0,0 @@ -# This scenario is designed to reach the 'case HUFF_DEC_END_DST' -# in parse_header_data() when Huffman encoding is turned on. -TABLE_SIZE=256 -AGGRESSIVE=1 -RISKED_STREAMS=1 -QIF=$(cat<<'EOQ' -aaaa aaa -aaaa aaaaa -aaaa aaaaaaaa -aaaa aaaaaaaaaaaaa -aaaa aaaaaaaaaaaaaaaaaaaaa - -EOQ -) diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/incl-name.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/incl-name.sce deleted file mode 100644 index b91c164..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/incl-name.sce +++ /dev/null @@ -1,13 +0,0 @@ -# This scenario is designed to reach 'case DATA_STATE_READ_LFONR_NAME_PLAIN' -# in parse_header_data(). It contains header names that are be too small -# for Huffman coding. -TABLE_SIZE=256 -AGGRESSIVE=1 -RISKED_STREAMS=0 -QIF=$(cat<<'EOQ' -yo I -no do not -se know - -EOQ -) diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-1.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-1.sce deleted file mode 100644 index 34759a1..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-1.sce +++ /dev/null @@ -1,110 +0,0 @@ -# This scenario is designed to reach the `case EEA_INS_NAMEREF_DYNAMIC` -# in the `lsqpack_enc_encode` function. It is intended to fail the integer -# encoding due to buffer length. To trigger this case, many names must be -# inserted into the dynamic table so that the integer encoding requires -# more than one byte. -TABLE_SIZE=16384 -AGGRESSIVE=1 -IMMEDIATE_ACK=0 -RISKED_STREAMS=1000 -QIF=$(cat<<'EOQ' -aaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa -bbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbb -ccccccccccccc cccccccccccccccccccccccccc -ddddddddddddd dddddddddddddddddddddddddd -eeeeeeeeeeeee eeeeeeeeeeeeeeeeeeeeeeeeee -fffffffffffff ffffffffffffffffffffffffff -ggggggggggggg gggggggggggggggggggggggggg -aaaa oneeeeeeeee -bbbb oneeeeeeeee -cccc oneeeeeeeee -dddd oneeeeeeeee -eeee oneeeeeeeee -ffff oneeeeeeeee -gggg oneeeeeeeee -hhhh oneeeeeeeee -iiii oneeeeeeeee -jjjj oneeeeeeeee -kkkk oneeeeeeeee -llll oneeeeeeeee -mmmm oneeeeeeeee -nnnn oneeeeeeeee -oooo oneeeeeeeee -pppp oneeeeeeeee -qqqq oneeeeeeeee -rrrr oneeeeeeeee -ssss oneeeeeeeee -tttt oneeeeeeeee -uuuu oneeeeeeeee -vvvv oneeeeeeeee -wwww oneeeeeeeee -xxxx oneeeeeeeee -yyyy oneeeeeeeee -zzzz oneeeeeeeee -aabb oneeeeeeeee -bbcc oneeeeeeeee -ccdd oneeeeeeeee -ddee oneeeeeeeee -eeff oneeeeeeeee -ffgg oneeeeeeeee -gghh oneeeeeeeee -hhii oneeeeeeeee -iijj oneeeeeeeee -jjkk oneeeeeeeee -kkll oneeeeeeeee -llmm oneeeeeeeee -mmnn oneeeeeeeee -nnoo oneeeeeeeee -oopp oneeeeeeeee -ppqq oneeeeeeeee -qqrr oneeeeeeeee -rrss oneeeeeeeee -sstt oneeeeeeeee -ttuu oneeeeeeeee -uuvv oneeeeeeeee -vvww oneeeeeeeee -wwxx oneeeeeeeee -xxyy oneeeeeeeee -yyzz oneeeeeeeee - -bbbb two -cccc two -dddd two -eeee two -ffff two -gggg two -hhhh two -yyyy two -zzzz two -aabb two -bbcc two -ccdd two -ddee two -eeff two -ffgg two -gghh two -hhii two -iijj two -jjkk two -kkll two -llmm two -mmnn two -nnoo two -oopp two -ppqq two -qqrr two -rrss two -sstt two -ttuu two -uuvv two -vvww two -wwxx two -xxyy two -yyzz two -aaaa two - -aaaa three -bbbb three - -EOQ -) diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-2.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-2.sce deleted file mode 100644 index f70266b..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-2.sce +++ /dev/null @@ -1,161 +0,0 @@ -# This scenario is designed to reach the `case EHA_INDEXED_DYN` -# in the `lsqpack_enc_encode` function. It is intended to fail the integer -# encoding due to buffer length. To trigger this case, many names and values -# must be inserted into the dynamic table so that the integer encoding requires -# more than one byte. -TABLE_SIZE=16384 -AGGRESSIVE=1 -IMMEDIATE_ACK=0 -RISKED_STREAMS=1000 -QIF=$(cat<<'EOQ' -aaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa -bbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbb -ccccccccccccc cccccccccccccccccccccccccc -ddddddddddddd dddddddddddddddddddddddddd -eeeeeeeeeeeee eeeeeeeeeeeeeeeeeeeeeeeeee -fffffffffffff ffffffffffffffffffffffffff -ggggggggggggg gggggggggggggggggggggggggg -aaaa oneeeeeeeee -bbbb oneeeeeeeee -cccc oneeeeeeeee -dddd oneeeeeeeee -eeee oneeeeeeeee -ffff oneeeeeeeee -gggg oneeeeeeeee -hhhh oneeeeeeeee -iiii oneeeeeeeee -jjjj oneeeeeeeee -kkkk oneeeeeeeee -llll oneeeeeeeee -mmmm oneeeeeeeee -nnnn oneeeeeeeee -oooo oneeeeeeeee -pppp oneeeeeeeee -qqqq oneeeeeeeee -rrrr oneeeeeeeee -ssss oneeeeeeeee -tttt oneeeeeeeee -uuuu oneeeeeeeee -vvvv oneeeeeeeee -wwww oneeeeeeeee -xxxx oneeeeeeeee -yyyy oneeeeeeeee -zzzz oneeeeeeeee -aabb oneeeeeeeee -bbcc oneeeeeeeee -ccdd oneeeeeeeee -ddee oneeeeeeeee -eeff oneeeeeeeee -ffgg oneeeeeeeee -gghh oneeeeeeeee -hhii oneeeeeeeee -iijj oneeeeeeeee -jjkk oneeeeeeeee -kkll oneeeeeeeee -llmm oneeeeeeeee -mmnn oneeeeeeeee -nnoo oneeeeeeeee -oopp oneeeeeeeee -ppqq oneeeeeeeee -qqrr oneeeeeeeee -rrss oneeeeeeeee -sstt oneeeeeeeee -ttuu oneeeeeeeee -uuvv oneeeeeeeee -vvww oneeeeeeeee -wwxx oneeeeeeeee -xxyy oneeeeeeeee -yyzz oneeeeeeeee -abcd oneeeeeeeee -bcde oneeeeeeeee -cdef oneeeeeeeee -defg oneeeeeeeee -efgh oneeeeeeeee -fghi oneeeeeeeee -ghij oneeeeeeeee -hijk oneeeeeeeee -ijkl oneeeeeeeee -jklm oneeeeeeeee -klmn oneeeeeeeee -lmno oneeeeeeeee -mnop oneeeeeeeee -nopq oneeeeeeeee -opqr oneeeeeeeee -pqrs oneeeeeeeee -qrst oneeeeeeeee -rstu oneeeeeeeee - -aaaa oneeeeeeeee -bbbb oneeeeeeeee -cccc oneeeeeeeee -dddd oneeeeeeeee -eeee oneeeeeeeee -ffff oneeeeeeeee -gggg oneeeeeeeee -hhhh oneeeeeeeee -iiii oneeeeeeeee -jjjj oneeeeeeeee -kkkk oneeeeeeeee -llll oneeeeeeeee -mmmm oneeeeeeeee -nnnn oneeeeeeeee -oooo oneeeeeeeee -pppp oneeeeeeeee -qqqq oneeeeeeeee -rrrr oneeeeeeeee -ssss oneeeeeeeee -tttt oneeeeeeeee -uuuu oneeeeeeeee -vvvv oneeeeeeeee -wwww oneeeeeeeee -xxxx oneeeeeeeee -yyyy oneeeeeeeee -zzzz oneeeeeeeee -aabb oneeeeeeeee -bbcc oneeeeeeeee -ccdd oneeeeeeeee -ddee oneeeeeeeee -eeff oneeeeeeeee -ffgg oneeeeeeeee -gghh oneeeeeeeee -hhii oneeeeeeeee -iijj oneeeeeeeee -jjkk oneeeeeeeee -kkll oneeeeeeeee -llmm oneeeeeeeee -mmnn oneeeeeeeee -nnoo oneeeeeeeee -oopp oneeeeeeeee -ppqq oneeeeeeeee -qqrr oneeeeeeeee -rrss oneeeeeeeee -sstt oneeeeeeeee -ttuu oneeeeeeeee -uuvv oneeeeeeeee -vvww oneeeeeeeee -wwxx oneeeeeeeee -xxyy oneeeeeeeee -yyzz oneeeeeeeee -aaaa oneeeeeeeee -abcd oneeeeeeeee -bcde oneeeeeeeee -cdef oneeeeeeeee -defg oneeeeeeeee -efgh oneeeeeeeee -fghi oneeeeeeeee -ghij oneeeeeeeee -hijk oneeeeeeeee -ijkl oneeeeeeeee -jklm oneeeeeeeee -klmn oneeeeeeeee -lmno oneeeeeeeee -mnop oneeeeeeeee -nopq oneeeeeeeee -opqr oneeeeeeeee -pqrs oneeeeeeeee -qrst oneeeeeeeee -rstu oneeeeeeeee -aaaa oneeeeeeeee - -EOQ -) diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-1.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-1.sce deleted file mode 100644 index a8e1e45..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-1.sce +++ /dev/null @@ -1,10 +0,0 @@ -TABLE_SIZE=256 -AGGRESSIVE=1 -RISKED_STREAMS=1 -QIF=$(cat<<'EOQ' -dude nude -dude nude -dude where is my car? - -EOQ -) diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-2.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-2.sce deleted file mode 100644 index b04b535..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-2.sce +++ /dev/null @@ -1,13 +0,0 @@ -# This scenario is designed to reach 'case DATA_STATE_LFPBNR_READ_VAL_PLAIN' -# in parse_header_data(). It has a number of repeated names with values that -# would be too small for Huffman coding. -TABLE_SIZE=256 -AGGRESSIVE=1 -RISKED_STREAMS=1 -QIF=$(cat<<'EOQ' -dude n -dude nu -dude where is my car? - -EOQ -) diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-nr.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-nr.sce deleted file mode 100644 index 5f188db..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-nr.sce +++ /dev/null @@ -1,10 +0,0 @@ -TABLE_SIZE=256 -AGGRESSIVE=0 -RISKED_STREAMS=1 -QIF=$(cat<<'EOQ' -dude nude -dude nude -dude where is my car? - -EOQ -) diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/set-max-cap.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/set-max-cap.sce deleted file mode 100644 index 431cb5f..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/set-max-cap.sce +++ /dev/null @@ -1,15 +0,0 @@ -TABLE_SIZE=256 -ANNOTATIONS=1 -QIF=$(cat<<'EOQ' -dude nude -dude nude -dude where is my car? - -## t 0 -one fish -two fish -red fish -blue fish - -EOQ -) \ No newline at end of file diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/test_circ_list.c b/external/lsquic/src/liblsquic/ls-qpack/test/test_circ_list.c deleted file mode 100644 index 0e3e9cf..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/test_circ_list.c +++ /dev/null @@ -1,104 +0,0 @@ -/* Bug report and test case contributed by Guoye Zhang -- thanks! */ - -#include "lsxpack_header.h" -#include "lsqpack.h" - -static void _decoderUnblocked(void *context) { - -} - -static struct lsxpack_header *_decoderPrepareDecode(void *context, struct lsxpack_header *header, size_t space) { - - return NULL; - -} - -static int _decoderProcessHeader(void *context, struct lsxpack_header *header) { - - return 0; - -} - -int main(int argc, const char * argv[]) { - - struct lsqpack_enc qpackEncoder; - - struct lsqpack_dec qpackDecoder; - - static struct lsqpack_dec_hset_if callbacks = { - - .dhi_unblocked = _decoderUnblocked, - - .dhi_prepare_decode = _decoderPrepareDecode, - - .dhi_process_header = _decoderProcessHeader, - - }; - - uint8_t stdc[LSQPACK_LONGEST_SDTC]; - - size_t stdcSize = sizeof(stdc); - - lsqpack_enc_init(&qpackEncoder, NULL, 4096, 4096, 100, LSQPACK_ENC_OPT_SERVER, stdc, &stdcSize); - - lsqpack_dec_init(&qpackDecoder, stdout, 4096, 100, &callbacks, (enum lsqpack_dec_opts)0); - - lsqpack_dec_enc_in(&qpackDecoder, stdc, stdcSize); - - uint8_t iciBuffer[LSQPACK_LONGEST_ICI]; - - ssize_t iciSize = 0; - - for (unsigned i = 0; i < 6; i++) { - - uint8_t encoderBuffer[1024]; - - size_t usedEncoderSize = 0, encoderSize = sizeof(encoderBuffer); - - uint8_t headerBuffer[1024]; - - size_t usedHeaderSize = 0, headerSize = sizeof(headerBuffer); - - struct lsxpack_header header; - memset(&header, 0, sizeof(header)); - - const char *name, *value; - - lsqpack_enc_start_header(&qpackEncoder, 0, i); - - name = ":authority" "localhost"; - - lsxpack_header_set_offset2(&header, name, 0, strlen(":authority"), strlen(":authority"), strlen("localhost")); - - enum lsqpack_enc_status status = lsqpack_enc_encode(&qpackEncoder, &encoderBuffer[usedEncoderSize], &encoderSize, &headerBuffer[usedHeaderSize], &headerSize, &header, (enum lsqpack_enc_flags)0); - - assert(status == LQES_OK); - - usedEncoderSize += encoderSize; usedHeaderSize += headerSize; - - encoderSize = sizeof(encoderBuffer) - usedEncoderSize; headerSize = sizeof(headerBuffer) - usedHeaderSize; - - uint8_t prefixBuffer[22]; - - lsqpack_enc_end_header(&qpackEncoder, prefixBuffer, sizeof(prefixBuffer), NULL); - - if (usedEncoderSize > 0) { - - lsqpack_dec_enc_in(&qpackDecoder, encoderBuffer, usedEncoderSize); - - if (lsqpack_dec_ici_pending(&qpackDecoder)) { - - iciSize = lsqpack_dec_write_ici(&qpackDecoder, iciBuffer, sizeof(iciBuffer)); - - } - - } - - } - - lsqpack_enc_decoder_in(&qpackEncoder, iciBuffer, iciSize); - - return 0; - -} - diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/test_dec_crash_case.c b/external/lsquic/src/liblsquic/ls-qpack/test/test_dec_crash_case.c deleted file mode 100644 index e27b758..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/test_dec_crash_case.c +++ /dev/null @@ -1,50 +0,0 @@ -#include -#include -#include "lsqpack.h" -#include "lsxpack_header.h" - -static void _decoderUnblocked(void *context) { -} - -static struct lsxpack_header *_decoderPrepareDecode(void *context, struct lsxpack_header *header, size_t space) -{ - static struct lsxpack_header xpackHeader; - char *xpackHeaderBuffer = (char *)malloc(space); - lsxpack_header_prepare_decode(&xpackHeader, xpackHeaderBuffer, 0, space); - return &xpackHeader; -} - -static int _decoderProcessHeader(void *context, struct lsxpack_header *header) -{ - printf("Decode header %.*s: %.*s\n", header->name_len, &header->buf[header->name_offset], header->val_len, &header->buf[header->val_offset]); - return 0; -} - -int main(int argc, const char * argv[]) { - struct lsqpack_dec qpackDecoder; - - struct lsqpack_dec_hset_if callbacks = { - .dhi_unblocked = _decoderUnblocked, - .dhi_prepare_decode = _decoderPrepareDecode, - .dhi_process_header = _decoderProcessHeader, - }; - lsqpack_dec_init(&qpackDecoder, stderr, 16384, 100, &callbacks, (enum lsqpack_dec_opts)0); - - size_t size = 50; - uint8_t buffer[16384] = { - 0x01, 0x32, 0x00, 0x00, 0x50, 0x91, 0x19, 0x08, - 0x54, 0x21, 0x7a, 0x0e, 0x41, 0xd0, 0x92, 0xa1, - 0x2b, 0xd2, 0x5b, 0x8f, 0xbe, 0xd3, 0x3f, 0xd1, - 0x51, 0x85, 0x62, 0x53, 0x9d, 0x25, 0xb3, 0xd7, - 0x5f, 0x10, 0x83, 0x9b, 0xd9, 0xab, 0x5f, 0x50, - 0x8b, 0xed, 0x69, 0x88, 0xb4, 0xc7, 0x53, 0x1e, - 0xfd, 0xfa, - }; - uint8_t decoderBuffer[LSQPACK_LONGEST_HEADER_ACK]; - size_t decoderBufferSize = sizeof(decoderBuffer); - const uint8_t *bufferRef = buffer; - enum lsqpack_read_header_status status = lsqpack_dec_header_in(&qpackDecoder, NULL, 0, size, &bufferRef, size, decoderBuffer, &decoderBufferSize); - printf("Decode status %d\n", status); - - return 0; -} diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/test_dyn_table_cap_mismatch.c b/external/lsquic/src/liblsquic/ls-qpack/test/test_dyn_table_cap_mismatch.c deleted file mode 100644 index 71975d8..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/test_dyn_table_cap_mismatch.c +++ /dev/null @@ -1,56 +0,0 @@ -#include -#include -#include "lsqpack.h" -#include "lsxpack_header.h" - -static void _decoderUnblocked(void *context) { -} - -static struct lsxpack_header *_decoderPrepareDecode(void *context, struct lsxpack_header *header, size_t space) -{ - static struct lsxpack_header xpackHeader; - char *xpackHeaderBuffer = (char *)malloc(space); - lsxpack_header_prepare_decode(&xpackHeader, xpackHeaderBuffer, 0, space); - return &xpackHeader; -} - -static int _decoderProcessHeader(void *context, struct lsxpack_header *header) -{ - printf("Decode header %.*s: %.*s\n", header->name_len, &header->buf[header->name_offset], header->val_len, &header->buf[header->val_offset]); - return 0; -} - -int main(int argc, const char * argv[]) { - struct lsqpack_dec qpackDecoder; - - struct lsqpack_dec_hset_if callbacks = { - .dhi_unblocked = _decoderUnblocked, - .dhi_prepare_decode = _decoderPrepareDecode, - .dhi_process_header = _decoderProcessHeader, - }; - lsqpack_dec_init(&qpackDecoder, stderr, 16384, 100, &callbacks, (enum lsqpack_dec_opts)0); - - FILE *encoder_stream = fopen("testdata/encoder_stream", "r"); - FILE *response = fopen("testdata/response", "r"); - uint8_t buffer[16384]; - size_t size = 0; - if (!encoder_stream) - { - encoder_stream = fopen("../../test/testdata/encoder_stream", "r"); - response = fopen("../../test/testdata/response", "r"); - } - while ((size = fread(buffer, 1, sizeof(buffer), encoder_stream)) > 0) { - lsqpack_dec_enc_in(&qpackDecoder, buffer, size); - } - fclose(encoder_stream); - - size = fread(buffer, 1, sizeof(buffer), response); - uint8_t decoderBuffer[LSQPACK_LONGEST_HEADER_ACK]; - size_t decoderBufferSize = sizeof(decoderBuffer); - const uint8_t *bufferRef = buffer; - enum lsqpack_read_header_status status = lsqpack_dec_header_in(&qpackDecoder, NULL, 2092, size, &bufferRef, size, decoderBuffer, &decoderBufferSize); - printf("Decode status %d\n", status); - fclose(response); - - return 0; -} diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/test_enc_str.c b/external/lsquic/src/liblsquic/ls-qpack/test/test_enc_str.c deleted file mode 100644 index 38c5a99..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/test_enc_str.c +++ /dev/null @@ -1,139 +0,0 @@ -#include -#include -#include -#include - -#include "lsqpack.h" -#include "lsqpack-test.h" - - -struct str_test -{ - int strt_lineno; - unsigned strt_prefix_bits; - const unsigned char *strt_in_str; - unsigned strt_in_len; - const unsigned char *strt_out_buf; - int strt_retval; -}; - - -static const struct str_test tests[] = -{ - - { - __LINE__, - 3, - (unsigned char *) "", - 0, - (unsigned char *) "\x00", - 1, - }, - - { - __LINE__, - 3, - (unsigned char *) "a", - 1, - (unsigned char *) "\x01" "a", - 2, - }, - - { - __LINE__, - 3, - (unsigned char *) "aa", - 2, - (unsigned char *) "\x02" "aa", - 3, - }, - - { - __LINE__, - 3, - (unsigned char *) "aaa", - 3, - (unsigned char *) "\x0A\x18\xc7", - 3, - }, - - { - __LINE__, - 3, - (unsigned char *) "aaaaaaaaa", - 9, - (unsigned char *) "\x0E\x18\xc6\x31\x8c\x63\x1f", - 7, - }, - - { - __LINE__, - 3, - (unsigned char *) "aaaaaaaaaa", - 10, - (unsigned char *) "\x0F\x00\x18\xc6\x31\x8c\x63\x18\xff", - 9, - }, - - { - __LINE__, - 3, - (unsigned char *) "aaaaaaaaaabbb", - 13, - (unsigned char *) "\x0F\x02\x18\xc6\x31\x8c\x63\x18\xe3\x8e\x3f", - 11, - }, - - { - __LINE__, - 3, - (unsigned char *) "\x80\x90\xA0\xBA", - 4, - (unsigned char *) "\x04\x80\x90\xA0\xBA", - 5, - }, - - { - __LINE__, - 3, - (unsigned char *) "\x80\x90\xA0\xBA\x80\x90\xA0", - 7, - (unsigned char *) "\x07\x00\x80\x90\xA0\xBA\x80\x90\xA0", - 9, - }, - - { - __LINE__, - 3, - (unsigned char *) "\x80\x90\xA0\xBA\x80\x90\xA0" "foo", - 10, - (unsigned char *) "\x07\x03\x80\x90\xA0\xBA\x80\x90\xA0" "foo", - 12, - }, - -}; - - -int -main (void) -{ - const struct str_test *test; - int r; - unsigned char *out= malloc(0x1000); - - if (!out) - return 1; - - for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) - { - out[0] = 0; - r = lsqpack_enc_enc_str(test->strt_prefix_bits, out, 0x1000, - test->strt_in_str, test->strt_in_len); - assert(r == test->strt_retval); - if (r > 0) - assert(0 == memcmp(test->strt_out_buf, out, r)); - } - - free(out); - return 0; -} diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/test_huff_dec.c b/external/lsquic/src/liblsquic/ls-qpack/test/test_huff_dec.c deleted file mode 100644 index 91d6b6a..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/test_huff_dec.c +++ /dev/null @@ -1,399 +0,0 @@ -/* - * Usage: test_huff_dec [-v] [-e] - * - * -v Verbose - * -e Run expensive tests - */ - -#include -#include -#include -#include -#ifdef WIN32 -#include -#else -#include -#endif - -#include "lsqpack.h" -#include "lsqpack-test.h" - -#define MIN(a, b) ((a) < (b) ? (a) : (b)) - -static int verbose; - -struct test_huff_dec -{ - int lineno; - - /* Input */ - unsigned char *src; - size_t src_sz; - - /* Output */ - char *dst; - size_t dst_sz; -}; - -const struct test_huff_dec tests[] = -{ - { __LINE__, - (unsigned char *) - "\xbf\x6c\x85\xfa\x53\xc4\xe5\xb0\xaa\x19\x0a\x53\xe9\x42\x0e\xcf\xf3", - 17, - "Dude, where is my car?", - 22, - }, - { __LINE__, - (unsigned char *) - "\xd6\x32\x1a\xa9\x94\x8c\x64\xea\xa0\xea\x91\x49" - "\x4f\x62\x67\x51\x33\x95\x4a\x0b\x54\xc9\x9d\x43\xca\xa2\x67\x2a" - "\x93\x8d\x24\x9f\xc0\xfd\x21\x41\xd5\x22\x88\x1f\x71\xcc\x5a\x3d" - "\x28\x49\xcb\xe0\xd5\x4d\xff\xff\xff\xe2\x67\x2a\x85\xaa\x45\x0f" - "\x2a\x83\x50\x86\x98\x76\x7d\x29\xe0\x68\x51\x33\x95\x4a\x47\x52" - "\x9e\x27\x3a\x0a\xa1\x06\x8b\x47\x42\x93\x50\x3a\x88\x55\x27\x1c" - "\x8a\x58\x54\x12\xd2\xc8\xa5\x25\x52\x5b\x0f\x4f\xff\xff\xff\x89" - "\x9c\xaa\x20\xa3\x5d\x45\x31\x99\x0a\x4e\x53\x4d\x3a\x54\xf0\x34" - "\x29\x5d\x87\x8c\x71\xd1\xe9\x49\x4d\xdc\xaa\x4a\x52\xa5\x44\x96" - "\xa5\x0d\x51\x27\x2a\x3e\x94\x3d\x8a\x24\xb5\x28\x3a\xa4\x50\x7f" - "\xff\xff\xfe\x4e\x3a\x25\xfb\x52\x3b\x52\xa5\x3e\x94\x94\xd6\x21" - "\x2a\x1a\x9a\xec\x2a\x10\x63\xd5\xf4\xa1\xec\x52\x52\x96\x85\x0f" - "\x2a\x89\x9c\xaa\x52\x3a\xbe\x94\xf0\x34\x29\x51\xd2\xa1\xe5\x51" - "\x33\x99\x1f\x4a\x47\x6a\x7f\xff\xff\xfc\x3c\xaa\x4e\x64\x28\x84" - "\xd8\x5a\xa6\x4c\xeb\xa8\xa4\x35\x48\xa7\xa2\xa7\xe9\x4f\x13\x9a" - "\x82\xa9\x39\x54\xf0\x34\x28\x79\x54\xa4\x68\x41\xbb\x95\x48\xed" - "\x35\x12\x7d\x29\xe0\xc9\x9d\x48\xec\x38\xe4\xff\xff\xff\xf1\x13" - "\x9e\xda\x24\x2d\x88\x50\x75\x48\xa4\x85\x2d\x6a\x12\x72\xa1\x3f" - "\x4a\x64\x50\x87\xb6\x89\x14\xa8\xe9\x50\x93\x8e\xc1\x91\x25\xb0" - "\xde\xca\xa4\xe6\x42\x88\x4d\x85\xaa\x64\xce\xa0\xd1\xff\xff\xff" - "\xe5\x23\x42\x0d\xdc\xab\xa8\xa6\x44\xa9\xe0\x68\x53\xc4\xe3\x4a" - "\x94\x9a\x69\xd2\xa4\x65\x51\x25\xb2\x92\xc8\xa0\xd4\x41\xaa\x2f" - "\x8f\x5f\x4a\x75\xa8\xe9\x4f\xa5\x10\x9b\x0b\x54\xc9\x9f\xe9\x43" - "\xca\xa2\x67\x2f\xff\xff\xff\x9d\x4d\x54\x8a\x78\x2a\x83\x41\x2c" - "\x34\x65\x51\x27\x52\x82\x8e\xa5\x07\x54\x8a\x78\x35\x9e\x94\xa4" - "\xb5\x7d\x29\x1d\xa9\x53\xc4\xe6\x24\xff\x4a\x1a\xa5\x27\x35\x3f" - "\x4a\x46\x52\x0e\xd4\x15\x43\xca\xa4\xe6\x47\xff\xff\xff\x93\x94" - "\x7d\xfd\x29\x1d\xa6\xa2\x4f\xa5\x2b\x1d\x89\x39\xfa\xa9\x49\xec" - "\x2a\x87\x95\x44\xce\x55\x0b\x55\x03\xb2\x62\xc8\xa4\xc7\xb0\xd4" - "\x50\x35\x0f\x64\x85\xb1\x75\x14\xd2\x74\xa8\x99\xc6\x95\x0d\x57" - "\xff\xff\xff\x83\xae\xb2\x8e\xc1\xd4\x42\xa9\x39\x54\x41\x4b\x49" - "\x64\x50\xd5\x28\x99\xca\xa5\x05\x1a\x12\xa4\xc7\xb0\xd4\x50\x35" - "\xa8\x37\x52\xae\xa2\x9c\xa7\x1a\x54\xc8\xa0\xe9\x51\x09\xb0\xdd" - "\xcd\x54\xca\x24\xff\xff\xff\xfe\x17\xcd\x76\x15\x08\x50\xc8\x51" - "\x33\x99\x0a\x21\x36\x16\xa9\x93\x3a\x86\x4a\x0b\x44\xbf\x4a\x52" - "\x7b\x0a\xa0\xd0\xa0\xd4\x4c\xe6\xaa\x65\x07\x58\xec\x4a\x92\xd8" - "\x7a\x54\x9c\xc8\x52\xb9\xfd\x20\xc4\x1d\x1f\xff\xff\xfe\x20\xb4" - "\xc7\x40\xea\x21\x57\x51\x4c\x89\x53\xc0\xd0\xa0\xd4\x42\x6c\x2d" - "\x53\x26\x75\x3c\x15\x41\xd8\x55\x3c\x1e\xa4\xa8\x93\xa8\x34\x20" - "\xe4\x30\xd2\x55\x3c\x19\x33\xa8\x99\xcd\x54\xc8\xff\xff\xff\xf2" - "\xbb\x0d\x49\x92\x6e\xe5\xfa\x53\xc1\x93\x3a\x9e\x0d\x44\x8a\x0e" - "\xa3\x52\x3a\x11\xf4\xa0\xea\x91\x44\xce\x55\x09\x61\x46\x9b\x6c" - "\x2a\x14\xf0\x55\x0d\x48\xe6\x35\x45\x50\xf6\xd9\xff\xff\xff\xe2" - "\x6c\x29\x56\x93\xc1\x68\xa0\xd5\x4c\xa5\x76\x1d\x27\x4f\xaa\xca" - "\x85\x12\x75\x27\x1f\x72\xa9\x19\x4b\x57\xff\xf6\xff\xff\x37\xff" - "\xff\x70\xd4\x42\x6c\x2d\x53\x26\x75\x10\x3e\xe3\x98\xbf\x4a\x4a" - "\x5b\x0e\x43\x1e\xd4\x7d\x28\x3a\x0d\xdc\xbf\xff\xff\xfe\x1a\xa5" - "\x0c\x94\x16\x89\x7e\x94\x4c\xe5\x50\xa8\x41\x6a\x21\x54\x3c\xaa" - "\x50\x69\x4a\xa1\xaa\x51\x33\x8d\x2a\x19\x2a\x19\x0a\x26\x72\xa9" - "\x59\xd2\x5a\x89\xe9\x43\xca\xa5\x27\x49\x8f\x57\xd2\x89\x9c\xbf" - "\xff\xff\xfe\x16\x82\xd2\x5a\x92\x3a\x14\x42\x6d\x96\x55\x0c\x94" - "\x16\x89\x54\x3d\xa9\x50\xf2\xa9\xe2\x73\x12\x75\x13\x39\x54\xa4" - "\x75\x7a\x52\x53\xd9\x4a\x14\x3c\xaa\x50\x69\x4a\xa4\xe3\xee\x55" - "\x23\x29\x6a\xff\xff\xff\xf2\x93\xdb\x44\x85\x93\xed\x43\x54\xa2" - "\x27\x3d\x89\xfa\x51\x33\x8d\x2a\x78\x9c\xc4\x9d\x4f\x16\x19\x33" - "\x95\x0a\x1a\xa5\x13\x39\x54\x8c\xf2\x7a\x50\xf2\xa8\x35\x11\x50" - "\xfa\x95\x4f\x13\x96\xa5\x13\x39\x7f\xff\xff\xfc\x9c\xa3\x91\x43" - "\x21\x42\x5a\x95\x0f\x2c\xbf\x4a\x0e\xa9\x14\x4c\xe5\x51\x15\x0f" - "\xa9\x7e\x94\x1a\x14\x1a\x88\xa8\x7d\x4b\xf4\xa1\x90\xa4\x85\x1c" - "\x9f\x4a\x1e\xc5\x3c\x4e\x62\x4e\xa5\x06\xaa\x62\xd8\x85\x0d\x57" - "\xff\xff\xff\x89\x9c\xaa\x22\x71\xd6\x5a\x0a\x84\x29\x45\xb4\xd6" - "\xa1\xe5\x51\x36\xd8\x9a\x0a\xb5\x25\x1a\x54\x1d\x52\x29\x61\x48" - "\x73\x50\x85\x07\x54\x8a\x76\xb4\xdd\xcb\x62\x14\x96\xc3\xd2\xa2" - "\x67\x2a\x95\xd8\x79\x3f\xff\xff\xfc\x3c\xaa\x0d\x49\x4d\x54\xc5" - "\xb1\x7f\xff\xff\xff\x3f\xff\xff\xfc\xdd\x69\x27\x53\xc0\xd0\xa2" - "\x67\x2a\x86\xa6\xbb\x0a\x84\x18\xf5\x28\x79\x54\x42\x6c\x2d\x53" - "\x26\x75\x32\x29\x30\xd3\x39\x6c\x2c\x8a\x4b\x61\xe9\x51\x33\x99" - "\x0a\x52\x3a\x94\xf1\x39\xd4\xac\x64\x2c\x8a\x5b\x5f\xff\xff\xff" - "\x83\xaa\x45\x24\x3f\x8a\x97\x51\x4c\x65\x53\xc0\xd0\xa4\xa6\xb2" - "\x9a\x3d\x29\x5d\x03\xa9\x25\x91\x43\xd4\xa4\xe6\x42\x94\x16\x64" - "\x7d\xa9\x39\x90\xa4\xa5\x2a\x54\x42\x6c\xb4\x9d\x54\x4c\xe5\x52" - "\x42\x93\xaf\xff\xff\xff\x88\xed\x68\xec\x2d\x1e\x94\x1d\x52\x29" - "\xe0\xc9\x9d\x44\x5b\x61\x53\xeb\xed\x42\xf7\x2d\x9e\x94\xa4\xfd" - "\xcb\x49\x6a\x4a\x87\x95\x41\xa9\x4d\xa8\x25\x05\xfa\x52\x5b\x0f" - "\x4a\x89\x9c\xaa\x4e\x51\xf7\x2a\x87\x97\xff\xff\xff\xc4\xce\x55" - "\x11\x39\xed\xa2\x42\xd8\x85\x12\x75\x13\x39\x54\x49\xa6\x9d\x25" - "\xa8\xd5\x4c\xa1\xe5\x51\x33\x95\x4a\x0d\x5a\x14\x1c\x67\xb5\x2a" - "\x26\x72\xa8\x43\x4c\x3b\x3e\x94\xf0\x34\x7f\xff\xff\xf9\x21\x48" - "\x64\x1b\xb9\x7e\x94\x1d\x52\x28\x82\x96\x92\xc8\xa2\x4e\xa1\x0f" - "\x49\x54\x3d\xa9\x50\xf2\xa8\x35\x10\x9b\x0b\x54\xc9\x9d\x44\xce" - "\x34\xa9\xe0\x68\x50\xbe\x48\x54\x20\xdd\xca\xa0\xea\x93\xff\xff" - "\xff\xc3\xf7\x2d\x9e\x27\x2d\x14\x9a\xa9\x97\x51\x4c\x95\x29\x28" - "\xc8\x9f\xa5\x13\x39\xed\x9a\x75\x13\x39\x90\xa2\x13\x61\x6a\x99" - "\x33\xa9\x59\x6c\xee\x39\x0b\x22\x85\xee\x5b\x3d\x28\x32\x24\xc7" - "\xa9\x43\xcb\xff\xff\xff\xe4\xe6\x47\xd2\x86\x4a\x88\x29\x69\x2c" - "\x8a\x47\x6a\x54\x4c\xe5\x50\x72\x77\x2d\x89\x32\x0b\x49\x6a\x4a" - "\x87\x95\x41\xa9\x35\x85\x1a\x4b\x62\x88\x4d\x85\xaa\x64\xce\xa2" - "\x67\x1a\x54\xa2\xdb\x3a\x96\x4f\xff\xff\xff\x3c\x19\x33\x9a\xaf" - "\xa5\x13\x38\xd2\xa5\x03\xf4\xa4\x87\xb2\x91\xd4\x95\x07\x54\x8a" - "\x54\x75\x29\x3d\x85\x51\x33\x8e\xa5\x10\x93\x59\x61\x64\x52\x5b" - "\x0f\x4a\x89\x35\x25\x51\x27\x51\x26\xa4\xbf\x4a\x47\x6a\x7f\xff" - "\xff\xfc\xf1\x39\x89\x3a\x94\x9a\x69\xd2\xa0\xec\x3d\xa8\x2f\xd2" - "\x83\x4a\x83\xab\xd2\x94\x9e\x92\xd4\x9f\xa5\x12\x5b\x2c\x34\x74" - "\x15\x41\xd5\x22\x84\x3d\x35\x96\x8a\x0d\x54\xdf\x4a\x50\x6e\xa5" - "\x51\x33\x95\x4b\x07\x31\x7f\xff\xff\xfc\x3c\xaa\x0d\x4a\x0c\x7a" - "\x94\x3d\x8a\x26\x72\xa9\xe2\xc1\xa6\x75\x0f\x2a\x83\x51\x09\x3d" - "\x94\xaf\xff\xff\xff\xe7\xff\xff\xff\x9b\xe7\x2a\x84\x39\xfa\xa8" - "\x84\xda\x4e\xaa\x4e\x64\x29\x39\x47\x22\x87\xb5\x2a\x1e\x55\x13" - "\x39\x54\x98\x74\x50\x5f\x4a\x48\x73\xd8\xa0\xea\x91\x49\xac\x35" - "\x55\x16\x45\x0b\x51\x0f\x6d\x83\x98\xd5\x4d\x47\xaf\xff\xff\xff" - "\x06\x95\x29\x2f\xd2\x83\x4a\x89\x9c\xaa\x20\x74\x95\x44\x9a\x92" - "\xa9\xd0\xb6\x75\x35\x53\x29\x39\x90\xa2\x67\xb6\x98\xd4\x35\x4a" - "\x26\x72\xa9\x21\xac\x29\x12\x63\xd4\xa1\xe5\x51\x33\x95\x4a\x47" - "\x52\x9e\x27\x3f\xff\xff\xff\x95\x8c\x85\x91\x4b\x6b\x50\x75\x48" - "\xa4\x87\xf1\x52\x91\xfa\x51\x33\x95\x49\xc6\x92\x4f\xe0\x7e\x97" - "\x51\x4d\xf3\xda\x85\x32\x29\xe0\x68\x52\x63\x77\x2d\x4a\x24\xea" - "\x5b\x54\x85\xb1\x09\x1d\x52\x28\x99\xc6\x9f\xff\xff\xff\x27\x2a" - "\x9e\x06\x85\x13\x39\x54\x20\xeb\x48\xcd\x57\xd2\x89\x9c\xaa\x7f" - "\xff\x6f\xff\xf3\x7f\xff\xb3\xaa\x89\x14\xd0\x3a\xbe\xbf\xff\xb7" - "\xff\xf9\xbf\xff\xf3\x28\x6a\x94\x4c\xe5\x50\x87\x3f\x5f\xff\xed" - "\xff\xfe\x6f\xff\xee\x21\x4e\xe5\xb2\xa1\x92\xda\x07\x67\xd2\x89" - "\x9c\xbf\xff\xff\xfe\x1a\xa9\x0d\xdc\xd2\x5a\x3a\x14\xf1\x39\xe9" - "\x53\x22\x94\xda\x84\xa8\x6a\x92\x5b\x3b\x98\xbe\x14\x1d\x52\x29" - "\x5d\xa9\x51\x27\x51\x33\x95\x44\xd8\x7b\x63\xa0\xaa\x1e\x55\x10" - "\x7a\x4b\x39\xfc\x7f\xff\xff\xf9\x31\x52\x93\x55\x32\x94\x95\x41" - "\xa2\x73\xd8\x55\xd4\x53\x22\x93\x8e\x45\x27\x1d\x12\xa8\x84\x8e" - "\xc4\x96\x45\x25\x3d\x9e\x07\x64\x9f\x4a\x24\xea\x4c\x54\xa8\x7e" - "\xe5\xb1\x4f\x06\x4c\xea\x78\x9c\x69\x53\x27\xff\xff\xff\x9e\x06" - "\x85\x08\x5b\x12\x33\x54\xa7\x83\xdb\x44\x8a\x46\x55\x06\xa2\x12" - "\x7b\x29\xf4\xa4\xa6\xee\x55\x29\x35\x56\xa4\xa8\xfa\x53\xc4\xe5" - "\xa9\x41\xa9\x49\xec\x2a\x9d\xcc\x7a\x0b\x52\x7f\xff\xff\xfc\x45" - "\xb2\xca\x72\x0d\x26\xaa\x65\x2b\x1d\x87\xf3\xe9\x14\xa8\x82\x9b" - "\xd9\x64\x51\x33\x95\x4b\x6a\x94\xf6\x26\xda\x86\x92\xa9\x59\x6c" - "\x41\xea\x53\xc4\xe7\x53\xc0\xd0\xa5\x1e\x8d\x54\xca\x1e\xa5\x27" - "\x32\x3f\xff\xff\xfc\x8c\x64\xea\xba\x8a\x63\x2a\x9e\x2c\x2d\x44" - "\x9c\xb2\x28\x3a\xa4\x53\xc5\x86\x4c\xe5\x91\x41\xc6\x7b\x52\xa1" - "\x0f\x57\x7b\x68\x41\xbb\x96\x8f\x4b\xa8\xa6\xf9\xca\xa1\x27\x35" - "\x5f\x4a\x78\x32\x67\x51\x33\x97\xff\xff\xff\xc9\x07\x4d\x6a\x47" - "\x40\xc9\xd5\x48\xca\x3b\x24\xfa\x52\xb3\x9a\xa4\x96\x45\x27\x34" - "\xd3\x96\xc5\x0d\x52\x89\x9c\xaa\x0c\xd6\x28\x34\x28\x99\xca\xa4" - "\x63\x27\x55\x29\xb5\x04\xa0\xa8\x51\x09\x34\xb2\x96\xa2\xc9\xff" - "\xff\xff\xe0\xea\x91\x44\xce\x55\x09\x39\x50\x95\x11\xe0\xb4\x50" - "\x59\x14\x35\x4a\x0e\xa5\x2d\xa8\x87\xa9\x04\x31\xed\x42\x83\xaa" - "\x45\x0d\x52\x12\x6a\x88\x93\x77\x2a\x85\x96\x53\xd8\x95\x12\x75" - "\x26\x2a\x7f\xff\xff\xfc\xa4\xf6\x15\x41\x9a\xc5\xd4\x53\x85\x52" - "\x16\xc5\x13\x39\x54\xf1\x39\x91\xd4\xb6\x23\xe9\x41\xd5\x22\x83" - "\xa2\x85\x2d\xa9\x05\x2d\x5f\x4a\x64\x53\xad\x45\xf0\xa2\x67\x1a" - "\x54\x4c\xe5\x51\x1d\x4d\x52\x9e\x06\x8f\xff\xff\xff\x12\x3e\xa6" - "\xaa\x65\x0f\x52\x83\x52\xbb\x6c\xae\x83\x22\x75\x27\xb4\xab\xff" - "\xff\xff\xf9\xff\xff\xff\xe6\xf9\xca\xa1\x07\x5a\x46\x6a\xbe\x94" - "\x3d\x8a\x72\x3d\x12\xa9\x9c\x76\x20\xb5\x7d\x28\x34\x29\x49\x6a" - "\x50\x83\xa2\x82\xc8\xa4\xe6\xa7\xe9\x42\x14\x68\x2c\x8a\x56\x32" - "\x1a\xa9\x94\x1d\x52\x29\x30\xfd\x96\x4f\xff\xff\xff\x24\x3f\x8a" - "\x94\x1a\x54\x4c\xe5\x52\x4f\x46\xaa\x65\x29\x1d\x4b\xa8\xa6\xe3" - "\xa9\x29\x8b\x61\x0a\xa4\xe3\x91\x44\xce\x64\x29\x29\xaa\x1d\x0a" - "\x21\x36\x5b\x34\xd4\x15\x48\xca\x43\xd2\x55\x13\x38\xd2\xa2\x67" - "\x2f\xff\xff\xff\x88\x19\xa8\x3d\x8a\x56\x3b\x50\x59\x14\x35\x4a" - "\x26\x72\xa8\x32\x25\x43\xca\xa4\xb4\x1a\xa9\x8d\x54\xca\x52\x7b" - "\x0a\xa7\x81\xa4\xb6\x28\x7e\xe5\xb1\x49\xcd\x4a\x83\xaa\x45\x10" - "\x91\xd8\x59\x3f\xff\xff\xfc\x25\xb6\x18\xf6\xa2\x8f\x5f\x4a\x26" - "\x72\xa8\x41\xd5\xdc\x68\x52\x3b\x49\xd4\xa9\x52\xb1\xd8\x9a\x3d" - "\x28\x93\x50\x92\xc8\xa0\xea\x91\x49\x2c\x35\x75\x9a\xa9\x94\x32" - "\x50\xa1\x0f\x52\x4b\x52\x50\xa2\x4f\xff\xff\xff\xe2\x67\x2a\x92" - "\x14\x9d\x57\x51\x4d\xf3\x95\x49\x3d\x1a\xa9\x94\xa4\x75\x29\x19" - "\x46\x95\x06\xa2\x46\x94\x9c\xea\x1e\xa5\x13\x39\x54\x9c\x69\x24" - "\xea\x78\x32\x67\x52\x73\x21\x49\xca\x5a\x11\xf5\xff\xff\xff\xe2" - "\x13\x60\xcd\x34\xe9\x2d\x45\x91\x43\xda\x95\x27\x32\x14\xa0\xb3" - "\x23\xe9\x41\xd5\x22\x88\x49\xa5\x94\xb5\x16\x45\x0d\x52\x87\xa8" - "\xaa\x4d\x61\x46\x95\x12\x5a\x90\x55\x0b\x2c\xa7\xb1\x3f\x4a\x0e" - "\xa9\x3f\xff\xff\xfc\xb0\xf4\x50\x59\x14\x9c\xc8\x52\x72\x8e\x45" - "\x25\xb0\xf4\xa8\x83\x48\x55\x12\x75\x10\x69\x0a\xba\x8a\x6f\x9c" - "\xb5\x28\x99\xca\xa5\x36\xa0\x94\x15\x0a\x58\x5a\x07\xe4\xb2\x7d" - "\x28\x99\xca\xa4\xe5\x1c\x9f\xff\xff\xfe\x21\x27\xae\xb2\xc8\xa5" - "\x87\xa2\x83\x55\x37\xd2\x83\xaa\x45\x06\xa2\x0d\x34\xff\x4a\x0d" - "\x0a\x1e\x55\x2b\xb0\xf2\x9e\xda\xa4\x52\xc2\xd0\x62\xcb\xf4\xa4" - "\xb4\x1c\x69\x2c\x8a\x5b\x5f\x81\xd9\x22\x92\xd8\x7a\x7f\xff\xff" - "\xfc\x9c\xc8\x52\x83\x56\x85\xd4\x53\x7c\xe5\x53\xa0\xfc\x29\x25" - "\x87\xae\xb2\xc9\xf4\xa2\x67\x2a\x96\xd7\x59\x6c\x52\x83\x56\xa5" - "\x06\x95\x25\x93\xe9\x41\xd5\x22\x89\xf0\x75\x2c\x3f\x84\x28\x79" - "\x7f\xff\xff\xfc\x49\xe3\x19\x08\x75\xa4\x32\x08\x7a\x0f\x6d\x85" - "\x91\x44\x94\xa9\x9d\x41\xd7\x59\x47\x61\x64\x5d\x45\x32\x25\x44" - "\x14\xb4\x96\x45\x06\x85\x13\x39\xed\x9a\x75\x27\x32\x14\x94\xa3" - "\x4d\xb6\x15\x0a\x4e\x39\x3f\xff\xff\xfc\x96\xc3\xfb\x2d\x4a\x1a" - "\xa4\x9d\x41\xa9\x21\x87\x19\xe8\x31\x07\x42\x93\x58\x6a\x94\x1a" - "\x54\x4c\xe5\x53\xc1\xec\xa2\x45\x27\x2a\x93\x8e\x45\x28\x2c\xa9" - "\x50\x75\x48\xa1\xed\x4f\x83\x25\x25\x91\x7f", - 12 + 16 * 174 + 11, - "Pacing back and forth the length of the hatchways and savagely chewing\n" - "the end of a cigar, was the man whose casual glance had rescued me from\n" - "the sea. His height was probably five feet ten inches, or ten and a\n" - "half; but my first impression, or feel of the man, was not of this, but\n" - "of his strength. And yet, while he was of massive build, with broad\n" - "shoulders and deep chest, I could not characterize his strength as\n" - "massive. It was what might be termed a sinewy, knotty strength, of the\n" - "kind we ascribe to lean and wiry men, but which, in him, because of his\n" - "heavy build, partook more of the enlarged gorilla order. Not that in\n" - "appearance he seemed in the least gorilla-like. What I am striving to\n" - "express is this strength itself, more as a thing apart from his physical\n" - "semblance. It was a strength we are wont to associate with things\n" - "primitive, with wild animals, and the creatures we imagine our\n" - "tree-dwelling prototypes to have been—a strength savage, ferocious, alive\n" - "in itself, the essence of life in that it is the potency of motion, the\n" - "elemental stuff itself out of which the many forms of life have been\n" - "moulded; in short, that which writhes in the body of a snake when the\n" - "head is cut off, and the snake, as a snake, is dead, or which lingers in\n" - "the shapeless lump of turtle-meat and recoils and quivers from the prod\n" - "of a finger.\n" - "\n" - "Such was the impression of strength I gathered from this man who paced up\n" - "and down. He was firmly planted on his legs; his feet struck the deck\n" - "squarely and with surety; every movement of a muscle, from the heave of\n" - "the shoulders to the tightening of the lips about the cigar, was\n" - "decisive, and seemed to come out of a strength that was excessive and\n" - "overwhelming. In fact, though this strength pervaded every action of\n" - "his, it seemed but the advertisement of a greater strength that lurked\n" - "within, that lay dormant and no more than stirred from time to time, but\n" - "which might arouse, at any moment, terrible and compelling, like the rage\n" - "of a lion or the wrath of a storm.\n" - "\n" - "The cook stuck his head out of the galley door and grinned encouragingly\n" - "at me, at the same time jerking his thumb in the direction of the man who\n" - "paced up and down by the hatchway. Thus I was given to understand that\n" - "he was the captain, the “Old Man,†in the cook’s vernacular, the\n" - "individual whom I must interview and put to the trouble of somehow\n" - "getting me ashore. I had half started forward, to get over with what I\n" - "was certain would be a stormy five minutes, when a more violent\n" - "suffocating paroxysm seized the unfortunate person who was lying on his\n" - "back. He wrenched and writhed about convulsively. The chin, with the\n" - "damp black beard, pointed higher in the air as the back muscles stiffened\n" - "and the chest swelled in an unconscious and instinctive effort to get\n" - "more air. Under the whiskers, and all unseen, I knew that the skin was\n" - "taking on a purplish hue.\n" - "\n" - "The captain, or Wolf Larsen, as men called him, ceased pacing and gazed\n" - "down at the dying man. So fierce had this final struggle become that the\n" - "sailor paused in the act of flinging more water over him and stared\n" - "curiously, the canvas bucket partly tilted and dripping its contents to\n" - "the deck. The dying man beat a tattoo on the hatch with his heels,\n" - "straightened out his legs, and stiffened in one great tense effort, and\n" - "rolled his head from side to side. Then the muscles relaxed, the head\n" - "stopped rolling, and a sigh, as of profound relief, floated upward from\n" - "his lips. The jaw dropped, the upper lip lifted, and two rows of\n" - "tobacco-discoloured teeth appeared. It seemed as though his features had\n" - "frozen into a diabolical grin at the world he had left and outwitted.", - 3687, - }, - { __LINE__, - (unsigned char *) - "\xe5\x39\x6a\x50\xd5\x28\x99\xca\xa5\xe3\xdb\x62" - "\x0a\xa1\xe5\x52\x7b\x69\x1d\x4a\x17\xb9\x6a\x4a\x14\x32\x54\x8c" - "\xa4\x3d\x25\x42\x95\x14\x85\x42\x07\x67\xa5\x25\x3d\x8a\x1e\xa2" - "\xa9\x59\x4f\x5d\x05\x51\x27\x52\x43\x21\x07\xa3\xb9\x54\x4c\xe5" - "\x52\xb3\xd0\x64\x98\x83\xa1\x48\xc7\x54\x88\x53\xc4\xe6\x24\xea" - "\x4e\x3e\xe5\x50\x87\xaa\xa2\x91\x25\x91\x44\xce\x5a\x54\xf0\x64" - "\xce\xa0\xea\x3a\x67\x2d\x8a\x0e\xa9\x14\x49\xd4\x1a\x11\x6d\x25" - "\x50\x74\x9e\xa9\x94\x4c\xe5\x52\xb3\xf8\x2d\x88\x50\xf2\xa8\x99" - "\xca\xa1\x47\x62\x67\xfa\x51\x33\x95\x44\x16\xb1\xd8\x34\x95\x41" - "\xd5\x22\x85\xed\x68\xe8\x51\x09\x1a\x4c\x7a\x94\x49\xd4\xf1\x39" - "\x89\x3a\x89\x9c\xaa\x67\x1f\x84\x28\x79\x54\xd2\x34\xdb\x61\x54" - "\x1d\x52\x28\x79\x54\xd2\x34\xdb\x61\x7f\xd2\x14\xc4\x79\x14\x2d" - "\x49\x32\x68\x2a\x89\x9c\xb4\xfd\x28\x35\x24\x29\x0b\x52\x54\xb0" - "\xa8\xac\xa4\x4a\x89\x3a\x89\x9c\xaa\x1e\xb3\x54\x63\xd4\x85\x0f" - "\x2a\x94\x8e\xae\xa6\xaa\x45\x2c\x2f\x6b\x4d\x61\x50\xa2\x67\x1a" - "\x54\x4c\xe5\xf4\xa2\x27\x3d\xb4\x48\xa4\x85\x25\x03\xb0\xaa\x26" - "\x72\xa8\x41\xda\x82\xa1\x4f\x13\x98\x93\xa8\x6a\x6b\x2d\x0a\x26" - "\x72\xd2\xa2\x4e\xa2\x67\x2a\x88\x2d\x63\xb0\x69\x31\xea\x5f", - 12 + 16 * 16 + 15, - "When in the Course of human events it becomes necessary for one " - "people to dissolve the political bands which have connected them " - "with another and to assume among the powers of the earth, the " - "separate and equal station to which the Laws of Nature and of " - "Nature's God entitle them, a decent respect to the opinions of " - "mankind requires that they should declare the causes which impel " - "them to the separation.", - 404, - }, -}; - -void -run_test (const struct test_huff_dec *test) -{ - struct huff_decode_retval retval; - struct lsqpack_huff_decode_state state; - unsigned in_chunk_sz, out_chunk_sz, in_off, out_off, n_to_read, n_to_write; - char output[0x1000]; - - if (verbose) - fprintf(stderr, "Run test on line %u\n", test->lineno); - - for (in_chunk_sz = 1; in_chunk_sz <= test->src_sz; ++in_chunk_sz) - { - if (verbose) - fprintf(stderr, "chunk %u out of %zu\n", in_chunk_sz, test->src_sz); - for (out_chunk_sz = 1; out_chunk_sz <= test->dst_sz; ++out_chunk_sz) - { - in_off = 0; - out_off = 0; - state.resume = 0; - n_to_read = MIN(test->src_sz, in_chunk_sz); - n_to_write = MIN(test->dst_sz, out_chunk_sz); - - do - { - assert(in_off + n_to_read <= test->src_sz); /* self-test */ - retval = lsqpack_huff_decode_full(test->src + in_off, n_to_read, - (unsigned char *) output + out_off, n_to_write, &state, - test->src_sz == in_off + n_to_read); - switch (retval.status) - { - case HUFF_DEC_OK: - in_off += retval.n_src; - out_off += retval.n_dst; - assert(test->dst_sz == out_off); - assert(test->src_sz == in_off); - assert(0 == memcmp(test->dst, output, out_off)); - break; - case HUFF_DEC_END_SRC: - case HUFF_DEC_END_DST: - in_off += retval.n_src; - out_off += retval.n_dst; - n_to_write = MIN(sizeof(output) - out_off, out_chunk_sz); - n_to_read = MIN(test->src_sz - in_off, in_chunk_sz); - break; - default: - assert(retval.status == HUFF_DEC_ERROR); - assert(0); - } - } - while (in_off < test->src_sz); - assert(retval.status == HUFF_DEC_OK); - } - } -} - -int -main (int argc, char **argv) -{ - const struct test_huff_dec *test; - int opt, run_expensive = 0; - - while (-1 != (opt = getopt(argc, argv, "ve"))) - { - switch (opt) - { - case 'v': - verbose = 1; - break; - case 'e': - run_expensive = 1; - break; - default: - exit(EXIT_FAILURE); - } - } - - for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) - if (run_expensive || test->src_sz * test->dst_sz < 150000) - run_test(test); - - return 0; -} diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/test_int.c b/external/lsquic/src/liblsquic/ls-qpack/test/test_int.c deleted file mode 100644 index 94e3800..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/test_int.c +++ /dev/null @@ -1,220 +0,0 @@ -#include -#include -#include -#include - -#include "lsqpack.h" -#include "lsqpack-test.h" - -struct int_test -{ - int it_lineno; - unsigned it_prefix_bits; - unsigned char it_encoded[20]; - size_t it_enc_sz; - uint64_t it_decoded; - int it_dec_retval; -}; - -static const struct int_test tests[] = -{ - - { .it_lineno = __LINE__, - .it_prefix_bits = 7, - .it_encoded = { 0x7F, 0x02, }, - .it_enc_sz = 2, - .it_decoded = 0x81, - .it_dec_retval = 0, - }, - - /* RFC 7541, Appendinx C.1.1 */ - { .it_lineno = __LINE__, - .it_prefix_bits = 5, - .it_encoded = { 0b1010, 0x02, }, - .it_enc_sz = 1, - .it_decoded = 10, - .it_dec_retval = 0, - }, - - /* RFC 7541, Appendinx C.1.2 */ - { .it_lineno = __LINE__, - .it_prefix_bits = 5, - .it_encoded = { 0b11111, 0b10011010, 0b00001010, }, - .it_enc_sz = 3, - .it_decoded = 1337, - .it_dec_retval = 0, - }, - - /* RFC 7541, Appendinx C.1.3 */ - { .it_lineno = __LINE__, - .it_prefix_bits = 8, - .it_encoded = { 0b101010, }, - .it_enc_sz = 1, - .it_decoded = 42, - .it_dec_retval = 0, - }, - - { .it_lineno = __LINE__, - .it_prefix_bits = 7, - .it_encoded = { 0b01111111, 0b10000001, 0b10000010, 0b00000011, }, - .it_enc_sz = 4, - /* 01234560123456 */ - .it_decoded = 0b1100000100000001 + 0b1111111, - .it_dec_retval = 0, - }, - - { .it_lineno = __LINE__, - .it_prefix_bits = 7, - .it_encoded = { 0b01111111, 0b10000001, 0b10000010, 0b10000011, - 0b00000011, }, - .it_enc_sz = 5, - /* 012345601234560123456 */ - .it_decoded = 0b11000001100000100000001 + 0b1111111, - .it_dec_retval = 0, - }, - - { .it_lineno = __LINE__, - .it_prefix_bits = 7, - .it_encoded = { 0b01111111, 0b10000001, 0b10000010, 0b10000011, - 0b10000100, 0b10000101, 0b10000110, 0b10000111, - 0b10001000, - 0b00000011, }, - .it_enc_sz = 10, - /* 01234560123456012345601234560123456012345601234560123456 */ - .it_decoded = 0b1100010000000111000011000001010000100000001100000100000001 - + 0b1111111, - .it_dec_retval = 0, - }, - - { .it_lineno = __LINE__, - .it_prefix_bits = 7, - .it_encoded = { 0b01111111, 0b10000001, 0b10000010, 0b10000011, - 0b10000100, 0b10000101, 0b10000110, 0b10000111, - 0b10001000, 0b10001001, - 0b00000001, }, - .it_enc_sz = 11, - /* 012345601234560123456012345601234560123456012345601234560123456 */ - .it_decoded = 0b1000100100010000000111000011000001010000100000001100000100000001 - + 0b1111111, - .it_dec_retval = 0, - }, - - { .it_lineno = __LINE__, - .it_prefix_bits = 7, - .it_encoded = { 0b01111111, 0b10000000, 0b11111111, 0b11111111, - 0b11111111, 0b11111111, 0b11111111, 0b11111111, - 0b11111111, 0b11111111, - 0b00000001, }, - .it_enc_sz = 11, - .it_decoded = UINT64_MAX, - .it_dec_retval = 0, - }, - - { .it_lineno = __LINE__, - .it_prefix_bits = 7, - /* Same as above, but with extra bit that overflows it */ - /* ----v---- */ - .it_encoded = { 0b01111111, 0b10010000, 0b11111111, 0b11111111, - 0b11111111, 0b11111111, 0b11111111, 0b11111111, - 0b11111111, 0b11111111, - 0b00000001, }, - .it_enc_sz = 11, - .it_dec_retval = -2, - }, - - { .it_lineno = __LINE__, - .it_prefix_bits = 8, - .it_encoded = { 0b11111111, 0b10000001, 0b10000010, 0b10000011, - 0b10000100, 0b10000101, 0b10000110, 0b10000111, - 0b10001000, 0b10001001, 0b00000001, }, - .it_enc_sz = 11, - /* 012345601234560123456012345601234560123456012345601234560123456 */ - .it_decoded = 0b1000100100010000000111000011000001010000100000001100000100000001 - + 0b11111111, - .it_dec_retval = 0, - }, - - { .it_lineno = __LINE__, - .it_prefix_bits = 7, - .it_encoded = { 0b01111111, 0b11101111, 0b11111111, 0b11111111, - 0b11111111, 0b11111111, 0b11111111, 0b11111111, - 0b11111111, 0b11111111, - 0b00000001, }, - .it_enc_sz = 11, - .it_dec_retval = -2, - }, - - { .it_lineno = __LINE__, - .it_prefix_bits = 7, - .it_encoded = { 0b01111111, 0b10000001, 0b10000010, 0b10000011, - 0b10000100, 0b10000101, 0b10000110, 0b10000111, - 0b10001000, 0b10001001, - 0b00000011, }, - .it_enc_sz = 11, - .it_dec_retval = -2, - }, - - { .it_lineno = __LINE__, - .it_prefix_bits = 7, - .it_encoded = { 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, }, - .it_enc_sz = 11, - .it_dec_retval = -2, - }, - -}; - -int -main (void) -{ - const struct int_test *test; - const unsigned char *src; - unsigned char *dst; - unsigned char buf[ sizeof(((struct int_test *) NULL)->it_encoded) ]; - uint64_t val; - size_t sz; - int rv; - - /* Test the decoder */ - for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) - { - struct lsqpack_dec_int_state state; - state.resume = 0; - for (sz = 0; sz < test->it_enc_sz - 1; ++sz) - { - src = test->it_encoded + sz; - rv = lsqpack_dec_int(&src, src + 1, test->it_prefix_bits, - &val, &state); - assert(-1 == rv); - } - src = test->it_encoded + sz; - rv = lsqpack_dec_int(&src, src + 1, test->it_prefix_bits, - &val, &state); - assert(rv == test->it_dec_retval); - if (0 == rv) - assert(val == test->it_decoded); - } - - /* Test the encoder */ - for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) - { - if (test->it_dec_retval != 0) - continue; - for (sz = 1; sz < test->it_enc_sz; ++sz) - { - dst = lsqpack_enc_int(buf, buf + sz, test->it_decoded, - test->it_prefix_bits); - assert(dst == buf); /* Not enough room */ - } - for (; sz <= sizeof(buf); ++sz) - { - buf[0] = '\0'; - dst = lsqpack_enc_int(buf, buf + sz, test->it_decoded, - test->it_prefix_bits); - assert(dst - buf == (intptr_t) test->it_enc_sz); - assert(0 == memcmp(buf, test->it_encoded, test->it_enc_sz)); - } - } - - return 0; -} diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/test_qpack.c b/external/lsquic/src/liblsquic/ls-qpack/test/test_qpack.c deleted file mode 100644 index 0d882ed..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/test_qpack.c +++ /dev/null @@ -1,1125 +0,0 @@ -/* - * Test QPACK. - */ - -#include -#include -#include -#include -#include -#include - -#include "lsqpack.h" -#include "lsqpack-test.h" -#include "lsxpack_header.h" - -#define ENC_BUF_SZ 200 -#define HEADER_BUF_SZ 200 -#define PREFIX_BUF_SZ 10 - -static const struct qpack_header_block_test -{ - /* Identification: */ - int qhbt_lineno; - - /* Input: */ - unsigned qhbt_table_size; - unsigned qhbt_max_risked_streams; - unsigned qhbt_n_headers; - struct { - const char *name, *value; - enum lsqpack_enc_flags flags; - } qhbt_headers[10]; - - /* Output: */ - size_t qhbt_enc_sz; - unsigned char qhbt_enc_buf[ENC_BUF_SZ]; - - size_t qhbt_prefix_sz; - unsigned char qhbt_prefix_buf[PREFIX_BUF_SZ]; - - size_t qhbt_header_sz; - unsigned char qhbt_header_buf[HEADER_BUF_SZ]; -} header_block_tests[] = -{ - - { - .qhbt_lineno = __LINE__, - .qhbt_table_size = 0x1000, - .qhbt_max_risked_streams = 100, - .qhbt_n_headers = 1, - .qhbt_headers = { - { ":method", "GET", 0, }, - }, - .qhbt_enc_sz = 0, - .qhbt_prefix_sz = 2, - .qhbt_prefix_buf = "\x00\x00", - .qhbt_header_sz = 1, - .qhbt_header_buf = { - 0x80 | 0x40 | 17, - }, - }, - - { - .qhbt_lineno = __LINE__, - .qhbt_table_size = 0x1000, - .qhbt_max_risked_streams = 100, - .qhbt_n_headers = 1, - .qhbt_headers = { - { ":method", "method", LQEF_NEVER_INDEX, }, - }, - .qhbt_enc_sz = 0, - .qhbt_prefix_sz = 2, - .qhbt_prefix_buf = "\x00\x00", - .qhbt_header_sz = 8, - .qhbt_header_buf = { - 0x40 | 0x20 | 0x10 | 0x0F, 0x00, - 0x80 /* Huffman */ | 5 /* length */, - 0xa4, 0xa9, 0x9c, 0xf2, 0x7f, - }, - }, - - { - .qhbt_lineno = __LINE__, - .qhbt_table_size = 0x1000, - .qhbt_max_risked_streams = 0, - .qhbt_n_headers = 1, - .qhbt_headers = { - { ":method", "method", 0, }, - }, - .qhbt_enc_sz = 7, - .qhbt_enc_buf = { - 0x80 | 0x40 /* static */ | 15 /* name index */, - 0x80 /* Huffman */ | 5 /* length */, - 0xa4, 0xa9, 0x9c, 0xf2, 0x7f, - }, - .qhbt_prefix_sz = 2, - .qhbt_prefix_buf = "\x00\x00", - .qhbt_header_sz = 8, - .qhbt_header_buf = { - 0x40 | 0x10 /* Static */ | 15, 0x00, - 0x80 /* Huffman */ | 5 /* length */, - 0xa4, 0xa9, 0x9c, 0xf2, 0x7f, - }, - }, - - { - .qhbt_lineno = __LINE__, - .qhbt_table_size = 0x1000, - .qhbt_max_risked_streams = 0x1000, - .qhbt_n_headers = 1, - .qhbt_headers = { - { ":method", "method", 0, }, - }, - .qhbt_enc_sz = 7, - .qhbt_enc_buf = { - 0x80 | 0x40 /* static */ | 15 /* name index */, - 0x80 /* Huffman */ | 5 /* length */, - 0xa4, 0xa9, 0x9c, 0xf2, 0x7f, - }, - .qhbt_prefix_sz = 2, - .qhbt_prefix_buf = { 0x02, 0x80, }, - .qhbt_header_sz = 1, - .qhbt_header_buf = { - 0x10 | 0 /* Relative dynamic ID */, - }, - }, - - { - .qhbt_lineno = __LINE__, - .qhbt_table_size = 0x1000, - .qhbt_max_risked_streams = 0x1000, - .qhbt_n_headers = 1, - .qhbt_headers = { - { "dude", "where is my car?", LQEF_NEVER_INDEX, }, - }, - .qhbt_enc_sz = 0, - .qhbt_prefix_sz = 2, - .qhbt_prefix_buf = "\x00\x00", - .qhbt_header_sz = 17, - .qhbt_header_buf = { - 0x20 | 0x10 /* No index */ | 0x08 | 3, - 0x92, 0xd9, 0x0b, - 0x80 | 0xC, - 0xf1, 0x39, 0x6c, 0x2a, 0x86, 0x42, 0x94, 0xfa, - 0x50, 0x83, 0xb3, 0xfc, - }, - }, - - { - .qhbt_lineno = __LINE__, - .qhbt_table_size = 0x1000, - .qhbt_max_risked_streams = 0, - .qhbt_n_headers = 3, - .qhbt_headers = { - { "dude", "where is my car?", 0, }, - { ":method", "GET", 0, }, - /* The "aaa..." string triggers header_out_grow_buf() */ - { "aaaaaaaaaaaaaaaaaaaaaaaaaa", - "aaaaaaaaaaaaaaaaaaaaaaaaaa", 0, }, - }, - .qhbt_enc_sz = 53, - .qhbt_enc_buf = { - 0x40 | 0x20 | 3, - 0x92, 0xd9, 0x0b, - 0x80 | 0xC, - 0xf1, 0x39, 0x6c, 0x2a, 0x86, 0x42, 0x94, 0xfa, - 0x50, 0x83, 0xb3, 0xfc, - 0x40 /* Without name reference */ | 0x20 /* Huffman */ | 17 /* Length */, - 0x18, 0xc6, 0x31, 0x8c, 0x63, 0x18, 0xc6, 0x31, 0x8c, - 0x63, 0x18, 0xc6, 0x31, 0x8c, 0x63, 0x18, 0xff, - 0x80 /* Huffman */ | 17 /* length */, - 0x18, 0xc6, 0x31, 0x8c, 0x63, 0x18, 0xc6, 0x31, 0x8c, - 0x63, 0x18, 0xc6, 0x31, 0x8c, 0x63, 0x18, 0xff, - }, - .qhbt_prefix_sz = 2, - .qhbt_prefix_buf = "\x00\x00", - .qhbt_header_sz = 55, - .qhbt_header_buf = { - 0x20 | 0x08 | 3, - 0x92, 0xd9, 0x0b, - 0x80 | 0xC, - 0xf1, 0x39, 0x6c, 0x2a, 0x86, 0x42, 0x94, 0xfa, - 0x50, 0x83, 0xb3, 0xfc, - 0x80 | 0x40 | 17, - 0x20 /* Without name reference */ | 0x08 /* Huffman */ | 7 , 0x0A /* Length */, - 0x18, 0xc6, 0x31, 0x8c, 0x63, 0x18, 0xc6, 0x31, 0x8c, - 0x63, 0x18, 0xc6, 0x31, 0x8c, 0x63, 0x18, 0xff, - 0x80 /* Huffman */ | 17 /* length */, - 0x18, 0xc6, 0x31, 0x8c, 0x63, 0x18, 0xc6, 0x31, 0x8c, - 0x63, 0x18, 0xc6, 0x31, 0x8c, 0x63, 0x18, 0xff, - }, - }, - - { - .qhbt_lineno = __LINE__, - .qhbt_table_size = 0x1000, - .qhbt_max_risked_streams = 1, - .qhbt_n_headers = 1, - .qhbt_headers = { - { "dude", "where is my car?", 0, }, - }, - .qhbt_enc_sz = 17, - .qhbt_enc_buf = { - 0x40 | 0x20 | 3, - 0x92, 0xd9, 0x0b, - 0x80 | 0xC, - 0xf1, 0x39, 0x6c, 0x2a, 0x86, 0x42, 0x94, 0xfa, - 0x50, 0x83, 0xb3, 0xfc, - }, - .qhbt_prefix_sz = 2, - .qhbt_prefix_buf = { 0x02, 0x80, }, - .qhbt_header_sz = 1, - .qhbt_header_buf = { - 0x10 | 0 /* Relative dynamic ID */, - }, - }, - -}; - - -struct header_buf -{ - unsigned off; - char buf[UINT16_MAX]; -}; - - -int -header_set_ptr (struct lsxpack_header *hdr, struct header_buf *header_buf, - const char *name, size_t name_len, - const char *val, size_t val_len) -{ - if (header_buf->off + name_len + val_len <= sizeof(header_buf->buf)) - { - memcpy(header_buf->buf + header_buf->off, name, name_len); - memcpy(header_buf->buf + header_buf->off + name_len, val, val_len); - lsxpack_header_set_offset2(hdr, header_buf->buf + header_buf->off, - 0, name_len, name_len, val_len); - header_buf->off += name_len + val_len; - return 0; - } - else - return -1; -} - -static void -run_header_test (const struct qpack_header_block_test *test) -{ - unsigned char header_buf[HEADER_BUF_SZ], enc_buf[ENC_BUF_SZ], - prefix_buf[PREFIX_BUF_SZ]; - unsigned header_off, enc_off; - size_t header_sz, enc_sz, dec_sz; - struct lsqpack_enc enc; - unsigned i; - size_t nw; - int s; - enum lsqpack_enc_status enc_st; - float ratio; - unsigned char dec_buf[LSQPACK_LONGEST_SDTC]; - struct lsxpack_header xhdr; - struct header_buf hbuf; - - dec_sz = sizeof(dec_buf); - s = lsqpack_enc_init(&enc, stderr, test->qhbt_table_size, - test->qhbt_table_size, test->qhbt_max_risked_streams, - LSQPACK_ENC_OPT_IX_AGGR, dec_buf, &dec_sz); - assert(s == 0); - - s = lsqpack_enc_start_header(&enc, 0, 0); - assert(s == 0); - - header_off = 0, enc_off = 0; - for (i = 0; i < test->qhbt_n_headers; ++i) - { - /* Increase buffers one by one to exercise error conditions */ - enc_sz = 0; - header_sz = 0; - while (1) - { - hbuf.off = 0; - s = header_set_ptr(&xhdr, &hbuf, - test->qhbt_headers[i].name, - strlen(test->qhbt_headers[i].name), - test->qhbt_headers[i].value, - strlen(test->qhbt_headers[i].value)); - assert(s == 0); - enc_st = lsqpack_enc_encode(&enc, - enc_buf + enc_off, &enc_sz, - header_buf + header_off, &header_sz, - &xhdr, - test->qhbt_headers[i].flags); - switch (enc_st) - { - case LQES_NOBUF_ENC: - if (enc_sz < sizeof(enc_buf) - enc_off) - ++enc_sz; - else - assert(0); - break; - case LQES_NOBUF_HEAD: - if (header_sz < sizeof(header_buf) - header_off) - ++header_sz; - else - assert(0); - break; - default: - assert(enc_st == LQES_OK); - goto end_encode_one_header; - } - } - end_encode_one_header: - enc_off += enc_sz; - header_off += header_sz; - } - - nw = lsqpack_enc_end_header(&enc, prefix_buf, sizeof(prefix_buf), NULL); - assert(nw == test->qhbt_prefix_sz); - assert(0 == memcmp(test->qhbt_prefix_buf, prefix_buf, nw)); - assert(enc_off == test->qhbt_enc_sz); - assert(0 == memcmp(test->qhbt_enc_buf, enc_buf, enc_off)); - assert(header_off == test->qhbt_header_sz); - assert(0 == memcmp(test->qhbt_header_buf, header_buf, header_off)); - assert(lsqpack_enc_ratio(&enc) > 0.0); - - lsqpack_enc_cleanup(&enc); -} - - -struct dhte /* decoded header test ext */ -{ - struct lsxpack_header xhdr; - size_t buf_off; - char buf[0x1000]; -}; - - -static void -dht_unblocked (void *hblock_ctx_p) -{ - assert(0); /* Not expecting this to be called */ -} - - -static struct lsxpack_header * -dht_prepare_decode (void *hblock_ctx_p, struct lsxpack_header *xhdr, size_t space) -{ - struct dhte *const dhte = hblock_ctx_p; - size_t avail; - - if (space > LSXPACK_MAX_STRLEN) - return NULL; - - if (xhdr) - { - assert(xhdr == &dhte->xhdr); - assert(xhdr->val_len < space); - avail = sizeof(dhte->buf) - xhdr->name_offset - 1 /* NUL */; - if (avail < space) - return NULL; - xhdr->val_len = space; - } - else - { - avail = sizeof(dhte->buf) - dhte->buf_off - 1 /* NUL */; - if (avail < space) - return NULL; - lsxpack_header_prepare_decode(&dhte->xhdr, dhte->buf, dhte->buf_off, - space); - } - - return &dhte->xhdr; -} - - -static int -dht_process_header (void *hblock_ctx_p, struct lsxpack_header *xhdr) -{ - struct dhte *const dhte = hblock_ctx_p; - - assert(xhdr == &dhte->xhdr); - dhte->buf_off += lsxpack_header_get_dec_size(xhdr); - - return 0; -} - - -static void -run_decoded_headers_test_ext (const struct qpack_header_block_test *test, - const enum lsqpack_dec_opts opts, const size_t name_offset) -{ - struct lsqpack_dec dec; - char exp_hbuf[0x1000]; /* Large enough to hold all headers */ - struct dhte dhte; - size_t sz; - unsigned i; - int s; - enum lsqpack_read_header_status rhs; - const unsigned char *buf; - unsigned char dec_buf[LSQPACK_LONGEST_HEADER_ACK]; - size_t dec_sz; - const struct lsqpack_dec_hset_if dht_if = { - .dhi_unblocked = dht_unblocked, - .dhi_prepare_decode = dht_prepare_decode, - .dhi_process_header = dht_process_header, - }; - - /* Construct expected headers buffer: */ - sz = 0; - exp_hbuf[0] = '\0'; - for (i = 0; i < test->qhbt_n_headers; ++i) - { - strcpy(exp_hbuf + sz, test->qhbt_headers[i].name); - sz += strlen(test->qhbt_headers[i].name); - if (opts & LSQPACK_DEC_OPT_HTTP1X) - { - strcpy(exp_hbuf + sz, ": "); - sz += 2; - } - strcpy(exp_hbuf + sz, test->qhbt_headers[i].value); - sz += strlen(test->qhbt_headers[i].value); - if (opts & LSQPACK_DEC_OPT_HTTP1X) - { - strcpy(exp_hbuf + sz, "\r\n"); - sz += 2; - } - } - assert(sz < sizeof(exp_hbuf)); /* Self-check */ - - /* Decode headers into dhte buffer */ - dhte.buf_off = name_offset; - lsqpack_dec_init(&dec, NULL, test->qhbt_table_size, - test->qhbt_max_risked_streams, &dht_if, opts); - if (test->qhbt_enc_sz) - { - s = lsqpack_dec_enc_in(&dec, test->qhbt_enc_buf, test->qhbt_enc_sz); - assert(s == 0); - } - assert(test->qhbt_header_sz); /* Self-check */ - buf = test->qhbt_prefix_buf; - dec_sz = sizeof(dec_buf); - rhs = lsqpack_dec_header_in(&dec, &dhte, 0, - test->qhbt_prefix_sz + test->qhbt_header_sz, - &buf, test->qhbt_prefix_sz, - dec_buf, &dec_sz); - assert(rhs == LQRHS_NEED); - assert(buf == test->qhbt_prefix_buf + test->qhbt_prefix_sz); - buf = test->qhbt_header_buf; - dec_sz = sizeof(dec_buf); - rhs = lsqpack_dec_header_read(&dec, &dhte, - &buf, test->qhbt_header_sz, - dec_buf, &dec_sz); - assert(rhs == LQRHS_DONE); - assert(buf == test->qhbt_header_buf + test->qhbt_header_sz); - lsqpack_dec_cleanup(&dec); - - /* Now compare the buffers */ - dhte.buf[dhte.buf_off] = '\0'; - s = strcmp(dhte.buf + name_offset, exp_hbuf); - assert(s == 0); -} - - -static void -run_decoded_headers_test (const struct qpack_header_block_test *test) -{ - const enum lsqpack_dec_opts opts[] = { 0, LSQPACK_DEC_OPT_HTTP1X, }; - const size_t offs[] = { 0, 1, 20, }; - unsigned i, j; - - for (i = 0; i < sizeof(opts) / sizeof(opts[0]); ++i) - for (j = 0; j < sizeof(offs) / sizeof(offs[0]); ++j) - run_decoded_headers_test_ext(test, opts[i], offs[j]); -} - - -static void -run_header_cancellation_test(const struct qpack_header_block_test *test) { - unsigned char header_buf[HEADER_BUF_SZ]; - size_t header_sz, enc_sz; - struct lsqpack_enc enc; - int s; - enum lsqpack_enc_status enc_st; - struct lsxpack_header xhdr; - struct header_buf hbuf; - - s = lsqpack_enc_init(&enc, stderr, 0, 0, test->qhbt_max_risked_streams, - LSQPACK_ENC_OPT_IX_AGGR, NULL, NULL); - assert(s == 0); - - s = lsqpack_enc_start_header(&enc, 0, 0); - assert(s == 0); - - header_sz = HEADER_BUF_SZ; - enc_sz = 0; - - hbuf.off = 0; - header_set_ptr(&xhdr, &hbuf, - test->qhbt_headers[0].name, - strlen(test->qhbt_headers[0].name), - test->qhbt_headers[0].value, - strlen(test->qhbt_headers[0].value)); - enc_st = lsqpack_enc_encode(&enc, - NULL, &enc_sz, - header_buf, &header_sz, - &xhdr, - 0); - assert(enc_st == LQES_OK); - - s = lsqpack_enc_cancel_header(&enc); - assert(s == 0); - - /* Check that we can start again after cancelling. */ - s = lsqpack_enc_start_header(&enc, 0, 0); - assert(s == 0); - - lsqpack_enc_cleanup(&enc); -} - - -static void -test_enc_init (void) -{ - struct lsqpack_enc enc; - size_t dec_sz; - int s; - unsigned i; - const unsigned char *p; - uint64_t val; - struct lsqpack_dec_int_state state; - unsigned char dec_buf[LSQPACK_LONGEST_SDTC]; - - const struct { - unsigned peer_max_size; /* Value provided by peer */ - unsigned our_max_size; /* Value to use */ - int expected_tsu; /* Expecting TSU instruction? */ - } tests[] = { - { 0x1000, 0x1000, 1, }, - { 0x1000, 1, 1, }, - { 0x100, 0x100, 1, }, - { 0x1000, 0, 0, }, - }; - - for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) - { - dec_sz = sizeof(dec_buf); - s = lsqpack_enc_init(&enc, stderr, tests[i].peer_max_size, - tests[i].our_max_size, 0, 0, dec_buf, &dec_sz); - assert(s == 0); - if (tests[i].expected_tsu) - { - assert(dec_sz > 0); - assert((dec_buf[0] & 0xE0) == 0x20); - p = dec_buf; - state.resume = 0; - s = lsqpack_dec_int(&p, p + dec_sz, 5, &val, &state); - assert(s == 0); - assert(val == tests[i].our_max_size); - } - else - assert(dec_sz == 0); - lsqpack_enc_cleanup(&enc); - } -} - - -/* Test that push promise header does not use the dynamic table, nor does - * it update history. - */ -static void -test_push_promise (void) -{ - struct lsqpack_enc enc; - ssize_t nw; - enum lsqpack_enc_status enc_st; - int s; - unsigned i; - const unsigned char *p; - uint64_t val; - struct lsqpack_dec_int_state state; - unsigned char dec_buf[LSQPACK_LONGEST_SDTC]; - unsigned char header_buf[HEADER_BUF_SZ], enc_buf[ENC_BUF_SZ], - prefix_buf[PREFIX_BUF_SZ]; - size_t header_sz, enc_sz, dec_sz; - enum lsqpack_enc_header_flags hflags; - struct lsxpack_header xhdr; - struct header_buf hbuf; - - dec_sz = sizeof(dec_buf); - s = lsqpack_enc_init(&enc, stderr, 0x1000, 0x1000, 100, 0, dec_buf, &dec_sz); - assert(0 == s); - - (void) dec_sz; /* We don't care for this test */ - - s = lsqpack_enc_start_header(&enc, 0, 0); - assert(0 == s); - enc_sz = sizeof(enc_buf); - header_sz = sizeof(header_buf); - hbuf.off = 0; - header_set_ptr(&xhdr, &hbuf, ":method", 7, "dude!", 5); - enc_st = lsqpack_enc_encode(&enc, - enc_buf, &enc_sz, header_buf, &header_sz, - &xhdr, 0); - assert(LQES_OK == enc_st); - enc_sz = sizeof(enc_buf); - header_sz = sizeof(header_buf); - header_set_ptr(&xhdr, &hbuf, ":method", 7, "dude!", 5); - enc_st = lsqpack_enc_encode(&enc, - enc_buf, &enc_sz, header_buf, &header_sz, - &xhdr, 0); - assert(LQES_OK == enc_st); - nw = lsqpack_enc_end_header(&enc, prefix_buf, sizeof(prefix_buf), &hflags); - assert(2 == nw); - assert(!(prefix_buf[0] == 0 && prefix_buf[1] == 0)); /* Dynamic table used */ - assert(hflags & LSQECH_REF_NEW_ENTRIES); - assert(hflags & LSQECH_REF_AT_RISK); - - s = lsqpack_enc_start_header(&enc, 0, 0); - assert(0 == s); - enc_sz = sizeof(enc_buf); - header_sz = sizeof(header_buf); - header_set_ptr(&xhdr, &hbuf, ":method", 7, "dude!", 5); - enc_st = lsqpack_enc_encode(&enc, - enc_buf, &enc_sz, header_buf, &header_sz, - &xhdr, LQEF_NO_HIST_UPD|LQEF_NO_DYN); - assert(LQES_OK == enc_st); - enc_sz = sizeof(enc_buf); - header_sz = sizeof(header_buf); - header_set_ptr(&xhdr, &hbuf, ":method", 7, "where is my car?", 16); - enc_st = lsqpack_enc_encode(&enc, - enc_buf, &enc_sz, header_buf, &header_sz, - &xhdr, LQEF_NO_HIST_UPD|LQEF_NO_DYN); - nw = lsqpack_enc_end_header(&enc, prefix_buf, sizeof(prefix_buf), &hflags); - assert(2 == nw); - assert(prefix_buf[0] == 0 && prefix_buf[1] == 0); /* Dynamic table not used */ - assert(!(hflags & LSQECH_REF_NEW_ENTRIES)); - - /* Last check that history was not updated: */ - s = lsqpack_enc_start_header(&enc, 4, 0); - assert(0 == s); - enc_sz = sizeof(enc_buf); - header_sz = sizeof(header_buf); - header_set_ptr(&xhdr, &hbuf, ":method", 7, "where is my car?", 16); - enc_st = lsqpack_enc_encode(&enc, - enc_buf, &enc_sz, header_buf, &header_sz, - &xhdr, 0); - assert(enc_sz == 0); - assert(LQES_OK == enc_st); - nw = lsqpack_enc_end_header(&enc, prefix_buf, sizeof(prefix_buf), &hflags); - assert(2 == nw); - assert(prefix_buf[0] == 0 && prefix_buf[1] == 0); /* Dynamic table not used */ - assert(!(hflags & LSQECH_REF_AT_RISK)); - - lsqpack_enc_cleanup(&enc); -} - - -struct hblock_ctx -{ - unsigned n_headers; - int finished; - struct lsxpack_header xhdr; - char buf[0x10000]; -}; - - -static void -unblocked (void *hblock_ctx_p) -{ - assert(0); /* Not expecting this to be called */ -} - - -static struct lsxpack_header * -prepare_decode (void *hblock_ctx_p, struct lsxpack_header *xhdr, size_t space) -{ - struct hblock_ctx *const hctx = hblock_ctx_p; - - if (space > LSXPACK_MAX_STRLEN) - return NULL; - - if (xhdr) - return NULL; - - lsxpack_header_prepare_decode(&hctx->xhdr, hctx->buf, 0, sizeof(hctx->buf)); - return &hctx->xhdr; -} - - -static int -process_header (void *hblock_ctx_p, struct lsxpack_header *xhdr) -{ - struct hblock_ctx *const hctx = hblock_ctx_p; - - if (xhdr) - ++hctx->n_headers; - else - hctx->finished = 1; - return 0; -} - - -static const struct lsqpack_dec_hset_if hset_if = { - .dhi_unblocked = unblocked, - .dhi_prepare_decode = prepare_decode, - .dhi_process_header = process_header, -}; - - -static void -test_discard_header (int err) -{ - struct lsqpack_dec dec; - enum lsqpack_read_header_status rhs; - const unsigned char *buf; - unsigned char header_block[] = "\x00\x00\xC0\x80"; - struct hblock_ctx hctx = { .n_headers = 0, }; - - lsqpack_dec_init(&dec, NULL, 0, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); - - buf = header_block; - rhs = lsqpack_dec_header_in(&dec, &hctx, 0, 10, - &buf, 3 + !!err, NULL, NULL); - if (err) - { - assert(hctx.n_headers == 1); - assert(hctx.finished == 0); - assert(LQRHS_ERROR == rhs); - } - else - { - assert(hctx.n_headers == 1); - assert(hctx.finished == 0); - assert(3 == buf - header_block); - assert(LQRHS_NEED == rhs); - lsqpack_dec_cleanup(&dec); - } -} - - -static void -test_static_bounds_header_block (void) -{ - struct lsqpack_dec dec; - enum lsqpack_read_header_status rhs; - const unsigned char *buf; - /* Static table index 1000 */ - unsigned char header_block[] = "\x00\x00\xFF\xA9\x07"; - struct hblock_ctx hctx = { .n_headers = 0, }; - - lsqpack_dec_init(&dec, stderr, 0, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); - buf = header_block; - rhs = lsqpack_dec_header_in(&dec, &hctx, 0, 10, - &buf, 5, NULL, NULL); - assert(hctx.n_headers == 0); - assert(LQRHS_ERROR == rhs); - lsqpack_dec_cleanup(&dec); -} - - -static void -test_static_bounds_enc_stream (void) -{ - struct lsqpack_dec dec; - int r; - /* Static table index 1000 */ - unsigned char enc_stream[] = "\xFF\xA9\x07\x04" "dude"; - - lsqpack_dec_init(&dec, NULL, 0, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); - r = lsqpack_dec_enc_in(&dec, enc_stream, 8); - assert(r == -1); - lsqpack_dec_cleanup(&dec); -} - - -static void -test_wonr_name_too_large_huffman (void) -{ - struct lsqpack_dec dec; - int r; - /* Partial Insert Without Name Reference with Huffman-encoded name - * string that is larger than 4 x capacity (0x4001) - */ - unsigned char enc_stream[] = "\x7F\xE2\x7F"; - - lsqpack_dec_init(&dec, stderr, 0x1000, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); - r = lsqpack_dec_enc_in(&dec, enc_stream, 3); - assert(r == -1); - lsqpack_dec_cleanup(&dec); -} - - -static void -test_wonr_name_too_large_plain (void) -{ - struct lsqpack_dec dec; - int r; - /* Partial Insert Without Name Reference with plain-encoded name - * string that is larger than capacity (0x1001) - */ - unsigned char enc_stream[] = "\x5F\xE2\x1F"; - - lsqpack_dec_init(&dec, stderr, 0, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); - r = lsqpack_dec_enc_in(&dec, enc_stream, 3); - assert(r == -1); - lsqpack_dec_cleanup(&dec); -} - - -static void -test_wonr_value_too_large_huffman (void) -{ - struct lsqpack_dec dec; - int r; - /* Partial Insert Without Name Reference with Huffman-encoded value - * string that, together with name, is larger than 4 x capacity (0x3FFF) - */ - unsigned char enc_stream[] = "\x42OK\xFF\x80\x7F"; - - lsqpack_dec_init(&dec, stderr, 0, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); - r = lsqpack_dec_enc_in(&dec, enc_stream, 6); - assert(r == -1); - lsqpack_dec_cleanup(&dec); -} - - -static void -test_wonr_value_too_large_plain (void) -{ - struct lsqpack_dec dec; - int r; - /* Partial Insert Without Name Reference with plain-encoded value - * string that, together with name, is larger than capacity (0xFFF) - */ - unsigned char enc_stream[] = "\x42OK\x7F\x80\x1F"; - - lsqpack_dec_init(&dec, stderr, 0x1000, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); - r = lsqpack_dec_enc_in(&dec, enc_stream, 6); - assert(r == -1); - lsqpack_dec_cleanup(&dec); -} - - -static void -test_winr_value_too_large_huffman (void) -{ - struct lsqpack_dec dec; - int r; - /* Partial Insert With Name Reference with Huffman-encoded value - * string that, together with name, is larger than 4 x capacity (0x3FE4) - */ - /* Refer to static entry 79: access-control-refer-headers (length 28) */ - unsigned char enc_stream[] = "\xFF\x10\xFF\xE5\x7E"; - - lsqpack_dec_init(&dec, stderr, 0x1000, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); - r = lsqpack_dec_enc_in(&dec, enc_stream, 5); - assert(r == -1); - lsqpack_dec_cleanup(&dec); -} - - -static void -test_winr_value_too_large_plain (void) -{ - struct lsqpack_dec dec; - int r; - /* Partial Insert With Name Reference with plain-encoded value - * string that, together with name, is larger than capacity (0xFE4) - */ - /* Refer to static entry 79: access-control-refer-headers (length 28) */ - unsigned char enc_stream[] = "\xFF\x10\x7F\xE5\x1E"; - - lsqpack_dec_init(&dec, stderr, 0x1000, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); - r = lsqpack_dec_enc_in(&dec, enc_stream, 5); - assert(r == -1); - lsqpack_dec_cleanup(&dec); -} - - -/* This is an odd case, but if the first call should provide no input at all, - * the decoder should return LQRHS_NEED - */ -static void -test_dec_header_zero_in (void) -{ - struct lsqpack_dec dec; - enum lsqpack_read_header_status rhs; - const unsigned char *buf = (unsigned char *) ""; - struct hblock_ctx hctx = { .n_headers = 0, }; - - lsqpack_dec_init(&dec, stderr, 0x1000, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); - - rhs = lsqpack_dec_header_in(&dec, - &hctx /* hblock */, - 2 /* Stream ID */, - 100 /* How long the thing is */, - &buf, - 0 /* How many bytes are available */, - NULL, 0); - assert(LQRHS_NEED == rhs); - - lsqpack_dec_cleanup(&dec); -} - - -/* Header that's too should should return LQRHS_ERROR */ -static void -test_dec_header_too_short (size_t header_size) -{ - struct lsqpack_dec dec; - enum lsqpack_read_header_status rhs; - const unsigned char *buf = (unsigned char *) ""; - struct hblock_ctx hctx = { .n_headers = 0, }; - - lsqpack_dec_init(&dec, stderr, 0x1000, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); - - rhs = lsqpack_dec_header_in(&dec, - &hctx /* hblock */, - 2 /* Stream ID */, - header_size, - &buf, - 0 /* How many bytes are available */, - NULL, 0); - assert(LQRHS_ERROR == rhs); - - lsqpack_dec_cleanup(&dec); -} - - -static void -test_enc_risked_streams_test (const char *test) -{ - struct lsqpack_enc enc; - int s; - size_t sz; - ssize_t ssz; - long arg; - enum lsqpack_enc_status es; - unsigned n_seqnos = 0; - struct { - uint64_t stream_id; - unsigned seqno; - } seqnos[10], *seq_el; - unsigned char buf[0x100]; - unsigned char *end_cmd; - int expect_failure; - struct lsxpack_header xhdr; - struct header_buf hbuf; - - const struct { - const char *name; - unsigned name_len; - const char *value; - unsigned value_len; - } headers[] = { - { "some", 4, "header", 6, }, - { "another", 7, "header", 6, }, - { "and yet another", 15, "header, duh", 11, }, - }; - - fprintf(stderr, "BEGIN TEST %s\n", test); - lsqpack_enc_preinit(&enc, stderr); - hbuf.off = 0; - - while (1) - { - expect_failure = isupper(*test); - switch (*test++) - { - case 'i': - arg = strtol(test, (char**)&test, 10); - sz = sizeof(buf); - s = lsqpack_enc_init(&enc, stderr, 0x1000, 0x1000, - (unsigned) arg, 0, buf, &sz); - assert(s == 0); - break; - case 'r': - arg = strtol(test, (char**)&test, 10); - assert((unsigned) arg == enc.qpe_cur_streams_at_risk); - break; - case 's': /* Start header */ - arg = strtol(test, (char**)&test, 10); - for (seq_el = seqnos; seq_el < seqnos + n_seqnos; ++seq_el) - if (seq_el->stream_id == arg) - break; - assert(seq_el < seqnos + sizeof(seqnos) / sizeof(seqnos[0])); - if (seq_el == seqnos + n_seqnos) - { - ++n_seqnos; - seq_el->stream_id = arg; - seq_el->seqno = 0; - } - s = lsqpack_enc_start_header(&enc, arg, seq_el->seqno++); - assert(s == 0); - break; - case 'c': /* En*C*ode */ - arg = strtol(test, (char**)&test, 10); - sz = sizeof(buf); - /* We ignore the output */ - header_set_ptr(&xhdr, &hbuf, - headers[arg].name, headers[arg].name_len, - headers[arg].value, headers[arg].value_len); - es = lsqpack_enc_encode(&enc, buf, &sz, buf, &sz, &xhdr, 0); - assert(LQES_OK == es); - break; - case 'e': /* End header */ - ssz = lsqpack_enc_end_header(&enc, buf, sizeof(buf), NULL); - assert(ssz > 0); - break; - case 'a': /* ACK header */ - case 'A': - arg = strtol(test, (char**)&test, 10); - buf[0] = 0x80; - end_cmd = lsqpack_enc_int(buf, buf + sizeof(buf), arg, 7); - s = lsqpack_enc_decoder_in(&enc, buf, end_cmd - buf); - if (expect_failure) - assert(s < 0); - else - assert(s == 0); - break; - case 'L': /* Cancel header */ - case 'l': - arg = strtol(test, (char**)&test, 10); - buf[0] = 0x40; - end_cmd = lsqpack_enc_int(buf, buf + sizeof(buf), arg, 6); - s = lsqpack_enc_decoder_in(&enc, buf, end_cmd - buf); - if (expect_failure) - assert(s < 0); - else - assert(s == 0); - break; - case 'N': /* Insert Count Increment */ - case 'n': - arg = strtol(test, (char**)&test, 10); - buf[0] = 0x00; - end_cmd = lsqpack_enc_int(buf, buf + sizeof(buf), arg, 6); - s = lsqpack_enc_decoder_in(&enc, buf, end_cmd - buf); - if (expect_failure) - assert(s < 0); - else - assert(s == 0); - break; - break; - case '\0': - goto end; - default: - assert("unknown action"); - goto end; - } - } - - end: - lsqpack_enc_cleanup(&enc); -} - - -static void -test_enc_risked_streams (void) -{ - const char **test; - const char *tests[] = - { - "i0r0s1c0er0", - "i1r0s1c0er0s2c0er1A1r1a2r0", - "i1r0s1c0er0s2c0er1s2c0c1er1a2r0a2r0", - - "i1r0s1c0c1er0" - "s2c0er1" - "s2c0c1er1" - "a2r1" /* Ack first seqno, # of risked streams still 1 */ - "a2r0", - - "i1r0s1c0c1er0" - "s2c0er1" - "s2c0c1er1" - "l2r0" /* Cancel */ - , - - "i1r0s1c0c1er0" - "s2c0er1" - "s2c0c1er1" - "N3" - "n1r1" - "n1r0" - , - - NULL, - }; - - for (test = tests; *test; ++test) - test_enc_risked_streams_test(*test); -} - - -int -main (void) -{ - unsigned i; - - for (i = 0; i < sizeof(header_block_tests) - / sizeof(header_block_tests[0]); ++i) - { - run_header_test(&header_block_tests[i]); - run_decoded_headers_test(&header_block_tests[i]); - } - - run_header_cancellation_test(&header_block_tests[0]); - test_enc_init(); - test_push_promise(); - test_discard_header(0); - test_discard_header(1); - test_static_bounds_header_block(); - test_static_bounds_enc_stream(); - test_wonr_name_too_large_huffman(); - test_wonr_name_too_large_plain(); - test_wonr_value_too_large_huffman(); - test_wonr_value_too_large_plain(); - test_winr_value_too_large_huffman(); - test_winr_value_too_large_plain(); - test_dec_header_zero_in(); - test_dec_header_too_short(0); - test_dec_header_too_short(1); - test_enc_risked_streams(); - - return 0; -} diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/test_read_enc_stream.c b/external/lsquic/src/liblsquic/ls-qpack/test/test_read_enc_stream.c deleted file mode 100644 index 9d2d303..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/test_read_enc_stream.c +++ /dev/null @@ -1,258 +0,0 @@ -/* - * Read encoder stream - */ - -#include -#include -#include - -#include "lsqpack.h" - -#define MIN(a, b) ((a) < (b) ? (a) : (b)) - -/* Dynamic table entry: */ -struct lsqpack_dec_table_entry -{ - unsigned dte_name_len; - unsigned dte_val_len; - unsigned dte_refcnt; - unsigned dte_pad[4]; /* name hash, nameval hash, name idx, flags */ - char dte_buf[0]; /* Contains both name and value */ -}; - -#define DTE_NAME(dte) ((dte)->dte_buf) -#define DTE_VALUE(dte) (&(dte)->dte_buf[(dte)->dte_name_len]) - - -struct test_read_encoder_stream -{ - int lineno; - - /* Input */ - unsigned char input[0x100]; - size_t input_sz; - - /* Output */ - unsigned n_entries; - struct { - const char *name, *value; - } dyn_table[10]; -}; - - -static const struct test_read_encoder_stream tests[] = -{ - - { __LINE__, - "\xc0\x8b\xf1\xe3\xc2\xf5\x15\x31\xa2\x45\xcf\x64\xdf", - 13, - 1, - { - { ":authority", "www.netbsd.org", }, - }, - }, - - { __LINE__, - "\xc0\x00", - 2, - 1, - { - { ":authority", "", }, - }, - }, - - { __LINE__, - "\xc0\x8b\xf1\xe3\xc2\xf5\x15\x31\xa2\x45\xcf\x64\xdf\x00", - 14, - 2, - { - { ":authority", "www.netbsd.org", }, - { ":authority", "www.netbsd.org", }, - }, - }, - - { __LINE__, - "\xc0\x8b\xf1\xe3\xc2\xf5\x15\x31\xa2\x45\xcf\x64\xdf\x00\x20", - 15, - 0, - { - { NULL, NULL, }, - }, - }, - - { __LINE__, - "\xc0\x15" "Respect my authorata!", - 2 + sizeof("Respect my authorata!") - 1, - 1, - { - { ":authority", "Respect my authorata!", }, - }, - }, - - { __LINE__, - "\x63\x92\xd9\x0b\x8c\xe5\x39\x6c\x2a\x86\x42\x94\xfa\x50\x83\xb3" - "\xfc", - 17, - 1, - { - { "dude", "Where is my car?", }, - }, - }, - - { __LINE__, - "\x63\x92\xd9\x0b\x03\x61\x61\x7a", - 8, - 1, - { - { "dude", "aaz", }, - }, - }, - - { __LINE__, - "\x43\x7a\x7a\x7a\x88\xcc\x6a\x0d\x48\xea\xe8\x3b\x0f", - 13, - 1, - { - { "zzz", "Kilimanjaro", }, - }, - }, - - { __LINE__, - "\x43\x7a\x7a\x7a\x03\x61\x61\x7a", - 8, - 1, - { - { "zzz", "aaz", }, - }, - }, - - { __LINE__, - "\x43\x7a\x7a\x7a\x03\x61\x61\x61\x80\x03\x61\x61\x7a", - 13, - 2, - { - { "zzz", "aaa", }, - { "zzz", "aaz", }, - }, - }, - - { __LINE__, - "\x40\x88\xcc\x6a\x0d\x48\xea\xe8\x3b\x0f", - 10, - 1, - { - { "", "Kilimanjaro", }, - }, - }, - - { __LINE__, - "\x43\x7a\x7a\x7a\x00", - 5, - 1, - { - { "zzz", "", }, - }, - }, - - { __LINE__, - "\x40\x00", - 2, - 1, - { - { "", "", }, - }, - }, - -}; - - -struct ringbuf_iter -{ - const struct lsqpack_ringbuf *rbuf; - unsigned next, end; -}; - - -#if LSQPACK_DEVEL_MODE -unsigned -ringbuf_count (const struct lsqpack_ringbuf *rbuf); - -void * -ringbuf_iter_next (struct ringbuf_iter *iter); - -void * -ringbuf_iter_first (struct ringbuf_iter *iter, - const struct lsqpack_ringbuf *rbuf); - -static void -verify_dyn_table (const struct lsqpack_dec *dec, - const struct test_read_encoder_stream *test) -{ - const struct lsqpack_dec_table_entry *entry; - unsigned n; - struct ringbuf_iter riter; - - assert(ringbuf_count(&dec->qpd_dyn_table) == test->n_entries); - - for (n = 0; n < test->n_entries; ++n) - { - if (n == 0) - entry = ringbuf_iter_first(&riter, &dec->qpd_dyn_table); - else - entry = ringbuf_iter_next(&riter); - assert(entry); - assert(entry->dte_name_len == strlen(test->dyn_table[n].name)); - assert(entry->dte_val_len == strlen(test->dyn_table[n].value)); - assert(0 == memcmp(DTE_NAME(entry), test->dyn_table[n].name, entry->dte_name_len)); - assert(0 == memcmp(DTE_VALUE(entry), test->dyn_table[n].value, entry->dte_val_len)); - } -} -#else -static void -verify_dyn_table (const struct lsqpack_dec *dec, - const struct test_read_encoder_stream *test) -{ - fprintf(stderr, "LSQPACK_DEVEL_MODE is not compiled: cannot verify dynamic table\n"); -} -#endif - - -static void -run_test (const struct test_read_encoder_stream *test) -{ - struct lsqpack_dec dec; - size_t chunk_sz, off; - int r; - - for (chunk_sz = 1; chunk_sz <= test->input_sz; ++chunk_sz) - { - lsqpack_dec_init(&dec, NULL, 0x1000, 100, (void *) 1 /* hset */, - LSQPACK_DEC_OPT_HTTP1X); - - off = 0; - do - { - r = lsqpack_dec_enc_in(&dec, test->input + off, - MIN(chunk_sz, test->input_sz - off)); - assert(r == 0); - off += MIN(chunk_sz, test->input_sz - off); - } - while (off < test->input_sz); - - verify_dyn_table(&dec, test); - - lsqpack_dec_cleanup(&dec); - } -} - - -int -main (void) -{ - const struct test_read_encoder_stream *test; - - for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) - run_test(test); - - return 0; -} diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/testdata/encoder_stream b/external/lsquic/src/liblsquic/ls-qpack/test/testdata/encoder_stream deleted file mode 100644 index 5f305353a9f483dfd51413a624477b0106620842..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20594 zcmZvkZ%k9$yXSW)e>P_;^vwPRqNx0N0r@4ACRh<`Ew#hUiyLWQ%z49qHFSo~bVGNB z=F$uu+g`{|^0T{`+(7sb-UKp?esDg`FSZx1#5ak(W+FN0g@h-lO|x&7tXSK z_som^#CQ7jS?gJA?e%=tv!2za_&vRD>XCe&u^hz2E2@Hv1l5p|75vB5zg_xUO>~&e z|L@Mt@%pVx5bxy;`w&*9{Ts_Tk~nm8nxxWv5x;cn~Px9BHF^kH{v_g z;k$t*^cPP?4ra+OilYnUlfp6dKYCm0)9ZQ`*}O;vTY;|WGA=j?9eY%!KNdwh#C`t^ z$v6)PHFf&dy!@7U;7)w4KLmug|3iuMhpRcs9ba0bAMZkgIPu-akhgIx+-(WYSlD;O zy&pYQM5JuUVLhBRo-KT3WAJ&)u`;AKRT;wW8sxh<*c@9R)PrZ(c!&Nw(9)euOHQIi z^jtJ?(XzYWt0}g*=-=zpUww&wPwI;*x$~nTiru?J^eH2{k!7p`4GH;`Jyw^timQ5B z>O=czkQeH!KhVoFy~Tlu?k_gRax5>2;hpBOKta1@-sZwDTD`NDV_)c{J#K%944Bl0 z-Sw?$da1bpJ8A-Yb~n>AwB+{1FYk+bs)z;h3FLv1Ulutv=ZHF0O2?LLgtqSi2C2*> zxroPs(v5`OdeBDfG=@N7#-elJmOHdaELxt9E?fk1Yi`+|St?YEdMr@a9P0$nw7RiJ;w| z;@Fb341HI4dk-eAG(W8`&>TRHYYeR@B30xHBsy_?#jgVf%Q=JiaN?^wtyOK!kSm^isAV-j&Q(@#w>50T%xIjO0E3#0&PDCE_7<(h zUb#b3Pa0UzKgF9lgM&q?3ZKLu>Kh&N01M`)cq``#eb`DZH%pYEFKe++{{?8cjnhdw z42Sb#?eH0UbXp9JOgld^()+b&^r(}4Tyxw7*z4d%hFDd_G-M0f2n+`w#Pfi#lNahd zp(lmQ7s(BJA~*jYAneKro%HMa_>3h!a_|CE6$7$v&K^EHbjJT}YOsafE3=$H_H5h; z(g$xPmxxtm#9>}kLLNK#sbdLrcIPe8-Nyl!#ej6LXxtgJ;|HGBnhlbH@O z=BVvxigXZ^KjyMS12e_x2x;L-TaQ}L4u^Ic%K>}SyuF3oVr4?+ORdzWDGHZC5Rn0hi(NTkZ_JOXwn5L^41$tuF+_Rc^>HCJg4ie zQFecb(R2AeaF`NF{FmZ;5as!qZ+vS6P$Z&>$800#LfA?5aH%W11&QI-DEn50I> z?*Yw9Gv-|Qxn7wsA4O|NdZi)N4G8NvgT@?*I%(IBDUQ$4%ikeg#vnsQ-%(?}&?{Bx ztT`G3bTZDKd2^<>s<&8?*jB}CrI3#AU~b4}_I@xgy$Ds1Es!T_en$H9mb*-9^X^7T zt9~5n;Z1I&jaqrq6^Kt84%B-WfpC-1a5_VL4b5&$R(Se`TKX5DhqpM7d#ZYMs+uYN zI#$<^Yyxx{%tT>sZm?nyg~Uq2=|7%?biBu!qpsc-f6b(Mcba4%M>rmJO6JH_?95te zv#7Cj4zQ=?>=AXo)GOt2Iq}tpxs%<1kb^@PA#JF^64H@}^3rz8$umgEd5k-1I>jq% zsk%Ty+i(i#I67o3(N=o-qOmw{X`0%d1#}$Sx$xn%cJ$a6=^veFg&XEj%S9~cH#gEu zLt3qWI$U%Qu*k6%L-x5-NZZ|0q)fhqJjtR~Z6JT1K7Ffyu1tI+ps}I&Ny*t7PHOEZ z?+2xgNd{_}gDs~~WZkuu?u#G$F{}#cAjeux>(U47k~+oM&SGaFYdmW8=Fsd13p+)w ztc7I%0GQ)Y%Zbm5U6@WDq3j>)_XV=cCXD|^q}Z9!a6@QCo__2L%>zOaxAupA067YE zo3Vj2zH&g9!|4duDBETY=EhvUh*Y?1T{fNJSIj)|oQl4&csJtRgE@e`vwzMUod_*{ z6DzkIP8!DFn54pixokSi864CYMds(KRKL5V!_*BJEXo*UP;7|Y#pkR`F?#o{5GgL3 zia2}v=#=F!C$Zjh(=a|+0N5+$>`BTjPuURTFP$;(c0>Iu=IkM72X3M+Znk0b4MVSfd5 zTo_?2?0d1(BT;U3_uldejQJ_P990pflxbdHUr@@Vumr zdIspYFyg}7iQ9(gdun;s5_|z{Mwd->*#V4E<88zz@%liEUj`WD;|QTP)~P}=n^c+K z2EgiNlZ>;6caWdu)#~H!9-T5@xSL-#abbiZ9_g3n2hTQ&l-0HZNXJJJee|9FWaFDA zvaS!lffg1YMaYlDjy!gkUT}x{N1=tlMG+TaH#}XdUeBL3AHE~Dp_Rpj5f>r5e-lCA z)`x|0k0yQ}jJO>y-dhE|! z+NFw=vNbdKCGn1}_AkPA>9LGGlxkp)JFF9Ltz({=<`gi3^h4fY1xXD{8zPS+wpblx zaQv5l`KNn!#(MD9SnK&_OYV%Yt-v=zkN@Kjor`cbB2uvqxYs24N()|$;6*BI{cjZG&g=h?6OsgWnM_fcknQ$v>PqNp|d079l%J_6PXS& z`lYs>o3!^udSx_-l|%M2{c{dt;%#~Cv9J0)x!w=R7P#@lXQ`$2wA~P#mds&okS;SJ z4E1Y6b(f@zyh}~Anjm)ss%YQ;s;y|A#6?|h^ zYBjdhr&jB~Lc&ZZ8G5lk-rZYa)CQ8iU&4i06do zDRx#&1uEEd-*=#gEax&&N!&5V1Ch_82XhiTq|3O>;9b-@UgVF&4X2I@Xj!wI$HXIQ z`GR>_9d54f9#RALyno7kCi>Inbe%8uL=i(2_YTr={j&u3hcp94@{qJqVt)qdGW~N( zI*3K_HdcFIM7$y(8Q(pMtq?8eh#E`YTX%(to+~_TF@qZ7OGDz5IeNi*0-(Yb6USOE zJU97~`c)CCq+T~hR)rIH#l*u_?-_SZnb<}+DE5t6=*JZvwp{c{w;|d|2WN;|f!L04 z;;xuD+G2=R_FHq!zOgn?SvWBw@EGYbE5=1USPSjk$Mgr2J;kG^kU@^N&=%|t>FUvp z9JLNeRpo$14!2xHT^`%1U*0Dk4XLRp4emC#l+E;i>S05yfFkX^wfDuTaDd-xh!rSPD;wHCv()&zV$$OR=Z;2aLYyX zy9;82b!&<3#NnP9XmRnph4P1y z$L{J@^Md@iL%1tkG4Z@bxDZsNboCN{YSn)D9q^dvEj>GlBoVB+?2x-eJ6~uS4=!^ z87B4zitX&avC4ANCWM76CJwh;L?4@IVJq_{-ja8XI>_HFZ`B4ui$g8!(QtB|K7eM9 z<1NOdTT6eHht}!%+R>CSDqhLr*3d0aT4s-S8P!x=Aq)^#OgwH`yqD;)`p_#o+h*8= zJ~|$^2GvFsMe5V&ilbtv9GDOuw@f)CQ~0ascSY)zyZRoa<33`1o?7mp9ySz|8G^Z~ zeW8%&Ef=wZM#gYDtq-puo|%V)d?0D@q>XINdHq;pyc3ucp106PBHElC&^0Dx4JF;s zS4VTeSxW|1deO_Nla{G<gv_Hl$+G#8Y406E5&=cMI!>J(+b(&jk zJA`yx=)}v#+apgKQm+bsReTeY;}tqXTXx2B_|^~~op2=k?aR6QfW76+gfMixKJM4QPGgcKvRQUW%E&Lk77H8lE;Lw*z~cpOx`R$umHgg{>#{MbX3u z^WlvCH3lT2uFzT7l6m%WDp-jkp{Be-M!7=sutjK<$yNW)qUaRys&T6cXqkg8bUBFj z1EZErZr6W1-&+m|Gd?ptMV?fjePOM@mgtv*x{S*%!Wc-{^~-bE?4Z;ihJ5C63vb08 zdlzt9P3M3%Pz*He{e?Tdlv})5g+C+{McyeB==J?E(IXXuj*dniT&v?>O;a+q#%Ub4xH|AqsO3Efz*HX72gFI{D znu6x=q@LY3kLA4Bi5YZ~h1LOwS|}}^t5Xz|8P6)eIU`%-C zLO!{LcMMA1>D!jWbGW+n5}@O0i+C_{*o_S*w-u4QJ;E&Z)jw#fHgM$FDyJVRYnmgU z?*Rrm+G1$$deUx1+N~49TfeJ3YdJ}~___6To{*~cx`d}2B;&egIG7u%__2S? zS;Br{e7%~@Y+0VyCyi^dok02~y2%#0%YzoGxF9|kp3GY&x+T-%+mMdiq6t~vLf|;J zpc^kIq`*Su6I%!wMdQOEmoMe?r}}|x?Nyp5Eq(MuZ%boRtBBpDj)D20InrW`7Gvv+T8utiAA9Lf-Wu_uymQA~ zOQCO_Pivv{PHM+iVc30Zs-m7j*~Y7M2DKcFmDQyBN5k&OIyKH!R%pOi{5!s(lqxM;CHxhib-?}(Mgk{KX>bIruTmW#NH zwrRsjOk8O_v0?XsmbuIp(<`FK&>5l-rBmAV!c}<9#N!r$s^ZG=X%P=&@|Jzf4U{@vGjX_u^3H)u)mDc-tVE@l`B1}rYRgotN~_JmHgh;{qP-vJ zAfMX8+XgXf@S^xDt_>7i0CYTV;kHx-D%nK03=;pAaBsbqy-CF9_3IwYUGkp#SPzs9 zUNiBuW&TwZ?J}Rt=?~8n70_ChWoG07!Hll6N0$a z8z|&qYp@sRcYXlk<>}`$q6G@mFQI!!Z7V z)HQ~HvCiU_#8x5tSh%?!V)EF(3GHQZ3vU|`Sspf|f3rt7j+y`+f02j}e=9?$(&{O^ zOusn?=(xNVLu{*#yQq`7!Q#e{^DmH&+osXoQQCoPwkGM*Nua3VTJ|1sP$m!QRFM@o zCfa==q}6L#+QQEfHw{sB>NijF)-W*8S=ut}P8lop!FFrV5poE_2(riZujkBKQnwcG zFicEhUBK2sPh`RfL!V;DorYfv!|ZV<@g4A&hpj=GKURx&t+mLa!MhLXGV{xznw!J| zc?WMJRy;{)dilH-UN%%oYVD}>E%-rF2H4|hiy>Apsjmi0*?V=3HPHNWu;r9oAZ}wb zQ-QO-zz@DE?Yne}{O=mrkg#m;rZ9?3?mSruPeMh2~ z0nK|F30?$^AJ1Bb!;Ry)A#9+QjbH4A{NPy&pCbC}kLP-Cp}RK=aMyT^ze8m7-Vc^v zc z2^BvkT@A5U{v;^;Lj;;jN#u4hq;KCq=*{E1tmY&(501?WUvg^*!+&Jbq9=d2Hv$qiw< z*R!{XsKlz0RO^@CqLGOUKlba{k}bn>OfpH24@Xwn8jTESmqRVa8vS57{a_BZ_MY({ z3B&dEY{i!Ou+z$Z7|@LzqLbP^z#d0hjAh~iA+^aw+G^$` zSW2ge0{!DTi;CuybV}x}-cEelR1WC4D@4Y8+GRScOy04u`vbcF4e0o^7Ikcsu{HCS z;01&Cyztw+o=s~RPNsTqd46sv7!GaML;d41OV757pVPbD#7D!)zHl?Y&fg$1C|fl# zT=Irm51^v*CZK=Wtd?=)V`Iu8US-pDdC%_wLY}kmNxTbPmW5XQd$zr2kdB{_Nz$%A zS>Kx1KW$6_C&cU7J49mJU9CSH*w^{2meZ)A z4>rQKSX_TN2Mr9zSx)lKP>wa2lh#<5yP)~tC<|4sj7DE18C8CpQDgwBR<36;3-2(s z_)<1=6je2h2BDGWG0U?27Q1M9-k8+cpROGO1IXVX>W@bk*ifao|Grd-eFtpnutdt-&h%0==k8tjcSqB+rEH{()JO zq|}#U>PsDaj?zg$m#x?O(pV`^z8v|OTjUEv_IS+FPfSu17sdS}XlR}n1NQj)LpqvU zU`shiP(jbrQDEoDViw`_L~aEVD{M)Za=;S~w9unBMcSn*X&+RZA2w`3Epw!W zuEqT|^K{rA>>8*W34aGHa(OM3MG@`3!{^Xmp1L{Iat{#ltYsdbvqn4g4^>I@Mz9jl z@vNmkou@YE$hwi;7wNCUe9(2iW{bgF4PLBzed_|Ta$f^{b=kyLkB*If^_4iVhENMQ zdHfY3UPg^ii$4x%P<2c44$wb7uSFep8gtm_$~_=_W%F9r19U%Dh`y)Q#@J&o zWG_P=3}N*Ati%)r&8e3oyIp{eOKUk%4Slyce7{cgu<-C7AQ_Lo6_(T7NdJhp)56+h zfR4LAWGu_?hh&&`WOtU>DclEiJZTZPO?8U=b#(FeMOh*|0$r!Gq(%8+cTgrH(eF;# zEMFmm8GjKM4YlApPr*6!#FTXjT7vxbq27Ceu$zBXZgrAce>q@~&uLLhNZ?7VdgARv zmHm(|^NpZdBTu?7Z+zac+kAAv3c1XImecZDRnkFC*b;ZGQDMEsjVxzLH0hVVy(#e* zMd%Aqzi}g*(jvC;Dr52eVkM?ZN`;5q8$4&BqA5@MHoA+7qFR|q|962SH?m1BRM;vT ziJqfQ%g7B1$nf0AULfK*=)Eh()_frE4r+xLWk|=Z8FMtZWR}{TqMo{sa!;W|;|(sY z#63+)j#!5-YfL0m#{8zx2;y-is`;;=(=dO8?`0Pox z059KeWN8a+NY(F+QeVW$CO-nRcO!d^NH~4T&*%b}K$Q|U;Ba-r#Pe29ksB2?#@l;j zqUB2kKo@!5qSjeSW4bR;Fhfn`76Uq-w+4#?)o+J1MBJnuJ-i3#xU`lNCA@8=9i|*{ zi?2fXA>S}@xP>-WMGD1}#onUA-&K1}fIU8~)te)6M81d~)~Bhp5PBd@RMNpR{YOly z$p2s#euy{zNOP4DE2G|7iA|ChSG)r3bNGeQLk+1f^`+}a9b`-1Cgd2G=VFYv{AnAZ zHjK}hY6C*dxRJ##^3~ejaKgEkuL(KV%7KP?{OW1(gsQ|}{3)p-`4#$b_&k^K?8s>w zz1X;Qjy`n=0rrN8&vT)q%Yr|KYKry=^aOPtXqeA)Sx(*zR!ExDYNBQ2A>?pNW|2EB z?Dd&@6{vXlF$A$B91Cg8bXG{`fl}{p={UYY zH|3GK!st6I`vSW!gohh{5SR|rHb_*l$HO85xXQngO>~hffr42Qy*X?f$N`8G>3-qP z=BF=Gzu78HXYQjD7vu+jtw^AI7gSYuu%6ygrdRF(j${GsNcT2JCPf8whgJ>g9|p@w<> zB42tc8d4A3CGDiscM2HfFBYx4T_mL}eQQ`4jdlvt2RE|(Mc$OO8-jBK7^+Nwwy|uk zi`x7^I2&UNq)Uq5UEanwbl;zg+{$+%P9KnM9`mvvK}cL~Hzc3^c1EoMsJcA)u>LXuJ z7#}(9BEJH41WkWH7^>}w8C%v$y2+P7Y--9TyQqcwkQxD&!>|eE8k({UMo0rGn^@~k z>;z(!Kq|F~XE1b-k|#coKJ_R2(3=Rka1fC&6HHK;mFKHN=$QA!m)~X;#_cBlW|6_0 zLyxc-^b-X6^XAie!C)gDXAtkUuph*a?cNs=m+I&lAmkW~F|)J8N0fa^tI3zZCfvj$ z7^4q%SfkCcuYuAFbeI6_@fV9kr5OEKi+$okkIu6ttU_wa0vMiqe2I8OFQNN-(eL*F zdpv;Qx#`B7b<&aM)&mMw%xu%Yp~hIjUpY`ecQ8A23+Q8@yxws7&4LDQeuyNv=X3 zbI8S5#^F<}_6Ya|mL@*q#o%R@*M+}}jy;KwJwR1S6OUX@b8wE(3`u>VFLL0) zO;fgti;!Y6bVr){G^oLW)GX5R1Bia!!S0*uwDr{}7xNvkr_1z@!5t+?u$FX?kLZWO z16Na)xAaT5b|HEr9cK?cQ3>s=rO*#Y^tnshh3#g`xU7f6TiDi&shGul z-+*D^%eY+DXt)04Exp@C1v|w3pfIyhqX%*R5_OEKPkp2}JE83@3tae=;iDoQN2SX8 zgZIK9+mr<^i}x+LfF6IJsu6z_1D^1}h0o&WjUqJIy;5aN4e2r+bRq=K2|XEoo;Q{& zeFn)gfrKHR6N^K&z5-jw<*or1Lbi$vUEF;V8v`K$&o?czFlj2PBM$NuUVo)g->Ukv%1r7dS5{X~H^ zCT^i3K^9suT){jlB~(?vDA?C;zW8x9+yr!y$1S}Vi>(CGPIp@BKQ04wT*eEneUZ0| zKA5$R1tQxl^mS%aUUjJ8B(lS%(AB!pvkzJ1SD_5OH78$$OP|uP5*)6;bLvL~vCF-9s;Be}Qb3eOw`c diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/testdata/response b/external/lsquic/src/liblsquic/ls-qpack/test/testdata/response deleted file mode 100644 index 8a2b589..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/test/testdata/response +++ /dev/null @@ -1,2 +0,0 @@ - -Ù¿µ \ No newline at end of file diff --git a/external/lsquic/src/liblsquic/ls-qpack/tools/gen-enums.pl b/external/lsquic/src/liblsquic/ls-qpack/tools/gen-enums.pl deleted file mode 100755 index 37b2f9f..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/tools/gen-enums.pl +++ /dev/null @@ -1,123 +0,0 @@ -#!/usr/bin/perl -# Generate static table enums - -use strict; -use warnings; - -my @table = ( - ":authority", "", - ":path", "/", - "age", "0", - "content-disposition", "", - "content-length", "0", - "cookie", "", - "date", "", - "etag", "", - "if-modified-since", "", - "if-none-match", "", - "last-modified", "", - "link", "", - "location", "", - "referer", "", - "set-cookie", "", - ":method", "CONNECT", - ":method", "DELETE", - ":method", "GET", - ":method", "HEAD", - ":method", "OPTIONS", - ":method", "POST", - ":method", "PUT", - ":scheme", "http", - ":scheme", "https", - ":status", "103", - ":status", "200", - ":status", "304", - ":status", "404", - ":status", "503", - "accept", "*/*", - "accept", "application/dns-message", - "accept-encoding", "gzip, deflate, br", - "accept-ranges", "bytes", - "access-control-allow-headers", "cache-control", - "access-control-allow-headers", "content-type", - "access-control-allow-origin", "*", - "cache-control", "max-age=0", - "cache-control", "max-age=2592000", - "cache-control", "max-age=604800", - "cache-control", "no-cache", - "cache-control", "no-store", - "cache-control", "public, max-age=31536000", - "content-encoding", "br", - "content-encoding", "gzip", - "content-type", "application/dns-message", - "content-type", "application/javascript", - "content-type", "application/json", - "content-type", "application/x-www-form-urlencoded", - "content-type", "image/gif", - "content-type", "image/jpeg", - "content-type", "image/png", - "content-type", "text/css", - "content-type", "text/html; charset=utf-8", - "content-type", "text/plain", - "content-type", "text/plain;charset=utf-8", - "range", "bytes=0-", - "strict-transport-security", "max-age=31536000", - "strict-transport-security", "max-age=31536000; includesubdomains", - "strict-transport-security", "max-age=31536000; includesubdomains; preload", - "vary", "accept-encoding", - "vary", "origin", - "x-content-type-options", "nosniff", - "x-xss-protection", "1; mode=block", - ":status", "100", - ":status", "204", - ":status", "206", - ":status", "302", - ":status", "400", - ":status", "403", - ":status", "421", - ":status", "425", - ":status", "500", - "accept-language", "", - "access-control-allow-credentials", "FALSE", - "access-control-allow-credentials", "TRUE", - "access-control-allow-headers", "*", - "access-control-allow-methods", "get", - "access-control-allow-methods", "get, post, options", - "access-control-allow-methods", "options", - "access-control-expose-headers", "content-length", - "access-control-request-headers", "content-type", - "access-control-request-method", "get", - "access-control-request-method", "post", - "alt-svc", "clear", - "authorization", "", - "content-security-policy", "script-src 'none'; object-src 'none'; base-uri 'none'", - "early-data", "1", - "expect-ct", "", - "forwarded", "", - "if-range", "", - "origin", "", - "purpose", "prefetch", - "server", "", - "timing-allow-origin", "*", - "upgrade-insecure-requests", "1", - "user-agent", "", - "x-forwarded-for", "", - "x-frame-options", "deny", - "x-frame-options", "sameorigin", -); - - -my $idx = 0; -print "enum lsqpack_tnam {\n"; -while (my ($name, $value) = splice(@table, 0, 2)) { - my $enum = "$name-$value"; - $enum =~ tr/a-z/A-Z/; - $enum =~ tr/-/_/; - $enum =~ s~[^A-Z0-9_]~_~g; - $enum =~ s/_+/_/g; - $enum =~ s/_+$//; - $enum =~ s/^_+//; - print " LSQPACK_TNV_$enum = $idx, /* \"$name\" \"$value\" */\n"; - ++$idx; -} -print "};\n\n"; diff --git a/external/lsquic/src/liblsquic/ls-qpack/tools/har2qif.pl b/external/lsquic/src/liblsquic/ls-qpack/tools/har2qif.pl deleted file mode 100755 index 233b571..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/tools/har2qif.pl +++ /dev/null @@ -1,139 +0,0 @@ -#!/usr/bin/env perl -# -# har2qif.pl - Convert HAR file to a QIF file. -# -# QIF stands for "QPACK Interop Format." It is meant to be easy to parse, -# write, and compare. The idea is that the QIF input to an encoder can -# be compared to QIF output produced by the decoder using `diff(1)': -# -# sh$ har2qif -requests my.har > in.qif -# sh$ ./qpack-encoder-A in.qif > binary-format # See wiki -# sh$ ./qpack-decoder-B binary-format > out.qif -# sh$ diff in.qif out.qif && echo "Success!" -# -# The QIF format is plain text. Each header field in on a separate line, -# with name and value separated by the TAB character. An empty line -# signifies the end of a header set. Lines beginning with '#' are ignored. -# -# HTTP/2 header sets are left untouched, while non-HTTP/2 header sets are -# transformed to resemble HTTP/2: -# - Header names are lowercased -# - `Host' header name is removed from requests -# - Requests get :method, :scheme, :authority, and :path pseudo-headers -# - Responses get :status pseudo-headers - -use strict; -use warnings; - -use Getopt::Long; -use JSON qw(decode_json); -use URI; - -my $key = 'request'; -my ($limit, $split_cookie); - -GetOptions( "help" => sub { - print < file.qif - -Options: - -requests Print headers from requests. This is the default. - -responses Print headers from responses. - -split-cookie Split the Cookie: header. - -limit N Limit number of header sets to N. The default - is no limit. - -If file.har is not specified, the HAR is read from stdin -USAGE - - exit; -}, - "requests" => sub { $key = "request", }, - "responses" => sub { $key = "response", }, - "split-cookie" => \$split_cookie, - "limit=i" => \$limit, -); - -my $json = decode_json( do { undef $/; <> }); -my @messages = map $$_{$key}, @{ $json->{log}{entries} }; -if (defined($limit)) -{ - splice @messages, $limit; -} - -my @header_sets = do { - if ($key eq 'request') { - map req_header_set($_), @messages - } else { - map resp_header_set($_), @messages - } -}; - -for (@header_sets) { - no warnings 'uninitialized'; - print map "$$_[0]\t$$_[1]\n", @$_; - print "\n"; -} - -exit; - -# Looking at capitalization of the first header is a more reliable means -# of determining HTTP version than relying on httpVersion field. -# -sub is_http2 { - my $message = shift; - if (defined($$message{headers}[0]) - && defined($$message{headers}[0]{name})) { - return $$message{headers}[0]{name} =~ /^[a-z:]/; - } elsif (defined($$message{httpVersion})) { - return $$message{httpVersion} =~ m~HTTP/2~i; - } else { - return; - } -} - -sub req_header_set { - my $message = shift; - my @set; - if (!is_http2($message)) { - my @headers = map [ lc($$_{name}), $$_{value}, ], - grep $$_{name} ne 'Host', @{ $$message{headers} }; - my $uri = URI->new($$message{url}); - @set = ( - [ ':method', $$message{method}, ], - [ ':scheme', $uri->scheme, ], - [ ':authority', $uri->authority, ], - [ ':path', $uri->path_query, ], - @headers, - ); - } else { - @set = map [ $$_{name}, $$_{value}, ], @{ $$message{headers} }; - } - if ($split_cookie) { - return [ map { - if ('cookie' eq $$_[0]) { - map [ 'cookie', $_, ], split /;\s+/, $$_[1] - } else { - $_ - } - } @set ]; - } else { - return \@set; - } -} - -sub resp_header_set { - my $message = shift; - no warnings 'uninitialized'; - if (!is_http2($message)) { - my @headers = map [ lc($$_{name}), $$_{value}, ], - @{ $$message{headers} }; - my $uri = URI->new($$message{url}); - return [ - [ ':status', $$message{status}, ], - @headers, - ]; - } else { - return [ map [ $$_{name}, $$_{value}, ], @{ $$message{headers} } ] - } -} diff --git a/external/lsquic/src/liblsquic/ls-qpack/tools/randomize-cookies.pl b/external/lsquic/src/liblsquic/ls-qpack/tools/randomize-cookies.pl deleted file mode 100755 index ff86113..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/tools/randomize-cookies.pl +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env perl -# -# Given a QIF file, randomize cookie headers -# -# Usage: randomize-cookies.pl input.qif > output.qif - -@chars = ('0' .. '9', 'a' .. 'z', 'A' .. 'Z', split '', '/+*'); - -sub randomify { - $val = shift; - - if (exists($cached_vals{$val})) { - return $cached_vals{$val}; - } - - @val = split '', $val; - $seen_eq = 0; - for ($i = 0; $i < @val; ++$i) - { - if ($val[$i] ne '=' or $seen_eq++) - { - $rand = $rand[$i] //= int(rand(@chars)); - # Output is a function of both position and value: - $val[$i] = $chars[ ($rand + ord($val[$i])) % @chars ]; - } - } - - return $cached_vals{$val} = join '', @val; -} - -while (<>) { - chomp; - if (m/^cookie\t(.*)/) { - print "cookie\t", randomify($1), "\n"; - } elsif (m/^set-cookie\t(.*)/) { - print "set-cookie\t", join('; ', map randomify($_), - split /;\s+/, $1), "\n"; - } else { - print $_, "\n"; - } -} diff --git a/external/lsquic/src/liblsquic/ls-qpack/tools/sort-qif.pl b/external/lsquic/src/liblsquic/ls-qpack/tools/sort-qif.pl deleted file mode 100755 index 53a297e..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/tools/sort-qif.pl +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env perl -# -# sort-qif.pl -- sort QIF file -# -# Sort QIF file. This assumes that the header lists in the QIF file have a -# leading comment that looks like '# stream $number'. -# -# Usage: sort-qif.pl [--strip-comments] [files] [--output FILE] - -use Getopt::Long; - -GetOptions("strip-comments" => \$strip_comments, output => \$output); - -if (defined($output)) { - open STDOUT, ">", $output or die "cannot open $output for writing: $!"; -} - -$/ = "\n\n"; - -@chunks = map $$_[1], - sort { $$a[0] <=> $$b[0] } - map { /^*#\s*stream\s+(\d+)/; [ $1, $_ ] } - <>; - -if ($strip_comments) { - for (@chunks) { - s/^#.*\n//mg; - } -} - -print @chunks; diff --git a/external/lsquic/src/liblsquic/ls-qpack/wincompat/sys/queue.h b/external/lsquic/src/liblsquic/ls-qpack/wincompat/sys/queue.h deleted file mode 100644 index 7cdff45..0000000 --- a/external/lsquic/src/liblsquic/ls-qpack/wincompat/sys/queue.h +++ /dev/null @@ -1,859 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)queue.h 8.5 (Berkeley) 8/20/94 - * $FreeBSD$ - */ - -#ifndef _SYS_QUEUE_H_ -#define _SYS_QUEUE_H_ - - -/* - * This file defines four types of data structures: singly-linked lists, - * singly-linked tail queues, lists and tail queues. - * - * A singly-linked list is headed by a single forward pointer. The elements - * are singly linked for minimum space and pointer manipulation overhead at - * the expense of O(n) removal for arbitrary elements. New elements can be - * added to the list after an existing element or at the head of the list. - * Elements being removed from the head of the list should use the explicit - * macro for this purpose for optimum efficiency. A singly-linked list may - * only be traversed in the forward direction. Singly-linked lists are ideal - * for applications with large datasets and few or no removals or for - * implementing a LIFO queue. - * - * A singly-linked tail queue is headed by a pair of pointers, one to the - * head of the list and the other to the tail of the list. The elements are - * singly linked for minimum space and pointer manipulation overhead at the - * expense of O(n) removal for arbitrary elements. New elements can be added - * to the list after an existing element, at the head of the list, or at the - * end of the list. Elements being removed from the head of the tail queue - * should use the explicit macro for this purpose for optimum efficiency. - * A singly-linked tail queue may only be traversed in the forward direction. - * Singly-linked tail queues are ideal for applications with large datasets - * and few or no removals or for implementing a FIFO queue. - * - * A list is headed by a single forward pointer (or an array of forward - * pointers for a hash table header). The elements are doubly linked - * so that an arbitrary element can be removed without a need to - * traverse the list. New elements can be added to the list before - * or after an existing element or at the head of the list. A list - * may be traversed in either direction. - * - * A tail queue is headed by a pair of pointers, one to the head of the - * list and the other to the tail of the list. The elements are doubly - * linked so that an arbitrary element can be removed without a need to - * traverse the list. New elements can be added to the list before or - * after an existing element, at the head of the list, or at the end of - * the list. A tail queue may be traversed in either direction. - * - * For details on the use of these macros, see the queue(3) manual page. - * - * Below is a summary of implemented functions where: - * + means the macro is available - * - means the macro is not available - * s means the macro is available but is slow (runs in O(n) time) - * - * SLIST LIST STAILQ TAILQ - * _HEAD + + + + - * _CLASS_HEAD + + + + - * _HEAD_INITIALIZER + + + + - * _ENTRY + + + + - * _CLASS_ENTRY + + + + - * _INIT + + + + - * _EMPTY + + + + - * _FIRST + + + + - * _NEXT + + + + - * _PREV - + - + - * _LAST - - + + - * _FOREACH + + + + - * _FOREACH_FROM + + + + - * _FOREACH_SAFE + + + + - * _FOREACH_FROM_SAFE + + + + - * _FOREACH_REVERSE - - - + - * _FOREACH_REVERSE_FROM - - - + - * _FOREACH_REVERSE_SAFE - - - + - * _FOREACH_REVERSE_FROM_SAFE - - - + - * _INSERT_HEAD + + + + - * _INSERT_BEFORE - + - + - * _INSERT_AFTER + + + + - * _INSERT_TAIL - - + + - * _CONCAT s s + + - * _REMOVE_AFTER + - + - - * _REMOVE_HEAD + - + - - * _REMOVE s + s + - * _SWAP + + + + - * - */ -#ifdef QUEUE_MACRO_DEBUG -#warn Use QUEUE_MACRO_DEBUG_TRACE and/or QUEUE_MACRO_DEBUG_TRASH -#define QUEUE_MACRO_DEBUG_TRACE -#define QUEUE_MACRO_DEBUG_TRASH -#endif - -#ifdef QUEUE_MACRO_DEBUG_TRACE -/* Store the last 2 places the queue element or head was altered */ -struct qm_trace { - unsigned long lastline; - unsigned long prevline; - const char *lastfile; - const char *prevfile; -}; - -#define TRACEBUF struct qm_trace trace; -#define TRACEBUF_INITIALIZER { __LINE__, 0, __FILE__, NULL } , - -#define QMD_TRACE_HEAD(head) do { \ - (head)->trace.prevline = (head)->trace.lastline; \ - (head)->trace.prevfile = (head)->trace.lastfile; \ - (head)->trace.lastline = __LINE__; \ - (head)->trace.lastfile = __FILE__; \ -} while (0) - -#define QMD_TRACE_ELEM(elem) do { \ - (elem)->trace.prevline = (elem)->trace.lastline; \ - (elem)->trace.prevfile = (elem)->trace.lastfile; \ - (elem)->trace.lastline = __LINE__; \ - (elem)->trace.lastfile = __FILE__; \ -} while (0) - -#else /* !QUEUE_MACRO_DEBUG_TRACE */ -#define QMD_TRACE_ELEM(elem) -#define QMD_TRACE_HEAD(head) -#define TRACEBUF -#define TRACEBUF_INITIALIZER -#endif /* QUEUE_MACRO_DEBUG_TRACE */ - -#ifdef QUEUE_MACRO_DEBUG_TRASH -#define TRASHIT(x) do {(x) = (void *)-1;} while (0) -#define QMD_IS_TRASHED(x) ((x) == (void *)(intptr_t)-1) -#else /* !QUEUE_MACRO_DEBUG_TRASH */ -#define TRASHIT(x) -#define QMD_IS_TRASHED(x) 0 -#endif /* QUEUE_MACRO_DEBUG_TRASH */ - -#if defined(QUEUE_MACRO_DEBUG_TRACE) || defined(QUEUE_MACRO_DEBUG_TRASH) -#define QMD_SAVELINK(name, link) void **name = (void *)&(link) -#else /* !QUEUE_MACRO_DEBUG_TRACE && !QUEUE_MACRO_DEBUG_TRASH */ -#define QMD_SAVELINK(name, link) -#endif /* QUEUE_MACRO_DEBUG_TRACE || QUEUE_MACRO_DEBUG_TRASH */ - -#ifdef __cplusplus -/* - * In C++ there can be structure lists and class lists: - */ -#define QUEUE_TYPEOF(type) type -#else -#define QUEUE_TYPEOF(type) struct type -#endif - -/* - * Singly-linked List declarations. - */ -#define SLIST_HEAD(name, type) \ -struct name { \ - struct type *slh_first; /* first element */ \ -} - -#define SLIST_CLASS_HEAD(name, type) \ -struct name { \ - class type *slh_first; /* first element */ \ -} - -#define SLIST_HEAD_INITIALIZER(head) \ - { NULL } - -#define SLIST_ENTRY(type) \ -struct { \ - struct type *sle_next; /* next element */ \ -} - -#define SLIST_CLASS_ENTRY(type) \ -struct { \ - class type *sle_next; /* next element */ \ -} - -/* - * Singly-linked List functions. - */ -#if (defined(_KERNEL) && defined(INVARIANTS)) -#define QMD_SLIST_CHECK_PREVPTR(prevp, elm) do { \ - if (*(prevp) != (elm)) \ - panic("Bad prevptr *(%p) == %p != %p", \ - (prevp), *(prevp), (elm)); \ -} while (0) -#else -#define QMD_SLIST_CHECK_PREVPTR(prevp, elm) -#endif - -#define SLIST_CONCAT(head1, head2, type, field) do { \ - QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head1); \ - if (curelm == NULL) { \ - if ((SLIST_FIRST(head1) = SLIST_FIRST(head2)) != NULL) \ - SLIST_INIT(head2); \ - } else if (SLIST_FIRST(head2) != NULL) { \ - while (SLIST_NEXT(curelm, field) != NULL) \ - curelm = SLIST_NEXT(curelm, field); \ - SLIST_NEXT(curelm, field) = SLIST_FIRST(head2); \ - SLIST_INIT(head2); \ - } \ -} while (0) - -#define SLIST_EMPTY(head) ((head)->slh_first == NULL) - -#define SLIST_FIRST(head) ((head)->slh_first) - -#define SLIST_FOREACH(var, head, field) \ - for ((var) = SLIST_FIRST((head)); \ - (var); \ - (var) = SLIST_NEXT((var), field)) - -#define SLIST_FOREACH_FROM(var, head, field) \ - for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ - (var); \ - (var) = SLIST_NEXT((var), field)) - -#define SLIST_FOREACH_SAFE(var, head, field, tvar) \ - for ((var) = SLIST_FIRST((head)); \ - (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define SLIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ - for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ - (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \ - for ((varp) = &SLIST_FIRST((head)); \ - ((var) = *(varp)) != NULL; \ - (varp) = &SLIST_NEXT((var), field)) - -#define SLIST_INIT(head) do { \ - SLIST_FIRST((head)) = NULL; \ -} while (0) - -#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ - SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \ - SLIST_NEXT((slistelm), field) = (elm); \ -} while (0) - -#define SLIST_INSERT_HEAD(head, elm, field) do { \ - SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \ - SLIST_FIRST((head)) = (elm); \ -} while (0) - -#define SLIST_NEXT(elm, field) ((elm)->field.sle_next) - -#define SLIST_REMOVE(head, elm, type, field) do { \ - QMD_SAVELINK(oldnext, (elm)->field.sle_next); \ - if (SLIST_FIRST((head)) == (elm)) { \ - SLIST_REMOVE_HEAD((head), field); \ - } \ - else { \ - QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head); \ - while (SLIST_NEXT(curelm, field) != (elm)) \ - curelm = SLIST_NEXT(curelm, field); \ - SLIST_REMOVE_AFTER(curelm, field); \ - } \ - TRASHIT(*oldnext); \ -} while (0) - -#define SLIST_REMOVE_AFTER(elm, field) do { \ - SLIST_NEXT(elm, field) = \ - SLIST_NEXT(SLIST_NEXT(elm, field), field); \ -} while (0) - -#define SLIST_REMOVE_HEAD(head, field) do { \ - SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \ -} while (0) - -#define SLIST_REMOVE_PREVPTR(prevp, elm, field) do { \ - QMD_SLIST_CHECK_PREVPTR(prevp, elm); \ - *(prevp) = SLIST_NEXT(elm, field); \ - TRASHIT((elm)->field.sle_next); \ -} while (0) - -#define SLIST_SWAP(head1, head2, type) do { \ - QUEUE_TYPEOF(type) *swap_first = SLIST_FIRST(head1); \ - SLIST_FIRST(head1) = SLIST_FIRST(head2); \ - SLIST_FIRST(head2) = swap_first; \ -} while (0) - -/* - * Singly-linked Tail queue declarations. - */ -#define STAILQ_HEAD(name, type) \ -struct name { \ - struct type *stqh_first;/* first element */ \ - struct type **stqh_last;/* addr of last next element */ \ -} - -#define STAILQ_CLASS_HEAD(name, type) \ -struct name { \ - class type *stqh_first; /* first element */ \ - class type **stqh_last; /* addr of last next element */ \ -} - -#define STAILQ_HEAD_INITIALIZER(head) \ - { NULL, &(head).stqh_first } - -#define STAILQ_ENTRY(type) \ -struct { \ - struct type *stqe_next; /* next element */ \ -} - -#define STAILQ_CLASS_ENTRY(type) \ -struct { \ - class type *stqe_next; /* next element */ \ -} - -/* - * Singly-linked Tail queue functions. - */ -#define STAILQ_CONCAT(head1, head2) do { \ - if (!STAILQ_EMPTY((head2))) { \ - *(head1)->stqh_last = (head2)->stqh_first; \ - (head1)->stqh_last = (head2)->stqh_last; \ - STAILQ_INIT((head2)); \ - } \ -} while (0) - -#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL) - -#define STAILQ_FIRST(head) ((head)->stqh_first) - -#define STAILQ_FOREACH(var, head, field) \ - for((var) = STAILQ_FIRST((head)); \ - (var); \ - (var) = STAILQ_NEXT((var), field)) - -#define STAILQ_FOREACH_FROM(var, head, field) \ - for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ - (var); \ - (var) = STAILQ_NEXT((var), field)) - -#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ - for ((var) = STAILQ_FIRST((head)); \ - (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define STAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ - for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ - (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define STAILQ_INIT(head) do { \ - STAILQ_FIRST((head)) = NULL; \ - (head)->stqh_last = &STAILQ_FIRST((head)); \ -} while (0) - -#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \ - if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\ - (head)->stqh_last = &STAILQ_NEXT((elm), field); \ - STAILQ_NEXT((tqelm), field) = (elm); \ -} while (0) - -#define STAILQ_INSERT_HEAD(head, elm, field) do { \ - if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \ - (head)->stqh_last = &STAILQ_NEXT((elm), field); \ - STAILQ_FIRST((head)) = (elm); \ -} while (0) - -#define STAILQ_INSERT_TAIL(head, elm, field) do { \ - STAILQ_NEXT((elm), field) = NULL; \ - *(head)->stqh_last = (elm); \ - (head)->stqh_last = &STAILQ_NEXT((elm), field); \ -} while (0) - -#define STAILQ_LAST(head, type, field) \ - (STAILQ_EMPTY((head)) ? NULL : \ - __containerof((head)->stqh_last, \ - QUEUE_TYPEOF(type), field.stqe_next)) - -#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next) - -#define STAILQ_REMOVE(head, elm, type, field) do { \ - QMD_SAVELINK(oldnext, (elm)->field.stqe_next); \ - if (STAILQ_FIRST((head)) == (elm)) { \ - STAILQ_REMOVE_HEAD((head), field); \ - } \ - else { \ - QUEUE_TYPEOF(type) *curelm = STAILQ_FIRST(head); \ - while (STAILQ_NEXT(curelm, field) != (elm)) \ - curelm = STAILQ_NEXT(curelm, field); \ - STAILQ_REMOVE_AFTER(head, curelm, field); \ - } \ - TRASHIT(*oldnext); \ -} while (0) - -#define STAILQ_REMOVE_AFTER(head, elm, field) do { \ - if ((STAILQ_NEXT(elm, field) = \ - STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \ - (head)->stqh_last = &STAILQ_NEXT((elm), field); \ -} while (0) - -#define STAILQ_REMOVE_HEAD(head, field) do { \ - if ((STAILQ_FIRST((head)) = \ - STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \ - (head)->stqh_last = &STAILQ_FIRST((head)); \ -} while (0) - -#define STAILQ_SWAP(head1, head2, type) do { \ - QUEUE_TYPEOF(type) *swap_first = STAILQ_FIRST(head1); \ - QUEUE_TYPEOF(type) **swap_last = (head1)->stqh_last; \ - STAILQ_FIRST(head1) = STAILQ_FIRST(head2); \ - (head1)->stqh_last = (head2)->stqh_last; \ - STAILQ_FIRST(head2) = swap_first; \ - (head2)->stqh_last = swap_last; \ - if (STAILQ_EMPTY(head1)) \ - (head1)->stqh_last = &STAILQ_FIRST(head1); \ - if (STAILQ_EMPTY(head2)) \ - (head2)->stqh_last = &STAILQ_FIRST(head2); \ -} while (0) - - -/* - * List declarations. - */ -#define LIST_HEAD(name, type) \ -struct name { \ - struct type *lh_first; /* first element */ \ -} - -#define LIST_CLASS_HEAD(name, type) \ -struct name { \ - class type *lh_first; /* first element */ \ -} - -#define LIST_HEAD_INITIALIZER(head) \ - { NULL } - -#define LIST_ENTRY(type) \ -struct { \ - struct type *le_next; /* next element */ \ - struct type **le_prev; /* address of previous next element */ \ -} - -#define LIST_CLASS_ENTRY(type) \ -struct { \ - class type *le_next; /* next element */ \ - class type **le_prev; /* address of previous next element */ \ -} - -/* - * List functions. - */ - -#if (defined(_KERNEL) && defined(INVARIANTS)) -/* - * QMD_LIST_CHECK_HEAD(LIST_HEAD *head, LIST_ENTRY NAME) - * - * If the list is non-empty, validates that the first element of the list - * points back at 'head.' - */ -#define QMD_LIST_CHECK_HEAD(head, field) do { \ - if (LIST_FIRST((head)) != NULL && \ - LIST_FIRST((head))->field.le_prev != \ - &LIST_FIRST((head))) \ - panic("Bad list head %p first->prev != head", (head)); \ -} while (0) - -/* - * QMD_LIST_CHECK_NEXT(TYPE *elm, LIST_ENTRY NAME) - * - * If an element follows 'elm' in the list, validates that the next element - * points back at 'elm.' - */ -#define QMD_LIST_CHECK_NEXT(elm, field) do { \ - if (LIST_NEXT((elm), field) != NULL && \ - LIST_NEXT((elm), field)->field.le_prev != \ - &((elm)->field.le_next)) \ - panic("Bad link elm %p next->prev != elm", (elm)); \ -} while (0) - -/* - * QMD_LIST_CHECK_PREV(TYPE *elm, LIST_ENTRY NAME) - * - * Validates that the previous element (or head of the list) points to 'elm.' - */ -#define QMD_LIST_CHECK_PREV(elm, field) do { \ - if (*(elm)->field.le_prev != (elm)) \ - panic("Bad link elm %p prev->next != elm", (elm)); \ -} while (0) -#else -#define QMD_LIST_CHECK_HEAD(head, field) -#define QMD_LIST_CHECK_NEXT(elm, field) -#define QMD_LIST_CHECK_PREV(elm, field) -#endif /* (_KERNEL && INVARIANTS) */ - -#define LIST_CONCAT(head1, head2, type, field) do { \ - QUEUE_TYPEOF(type) *curelm = LIST_FIRST(head1); \ - if (curelm == NULL) { \ - if ((LIST_FIRST(head1) = LIST_FIRST(head2)) != NULL) { \ - LIST_FIRST(head2)->field.le_prev = \ - &LIST_FIRST((head1)); \ - LIST_INIT(head2); \ - } \ - } else if (LIST_FIRST(head2) != NULL) { \ - while (LIST_NEXT(curelm, field) != NULL) \ - curelm = LIST_NEXT(curelm, field); \ - LIST_NEXT(curelm, field) = LIST_FIRST(head2); \ - LIST_FIRST(head2)->field.le_prev = &LIST_NEXT(curelm, field); \ - LIST_INIT(head2); \ - } \ -} while (0) - -#define LIST_EMPTY(head) ((head)->lh_first == NULL) - -#define LIST_FIRST(head) ((head)->lh_first) - -#define LIST_FOREACH(var, head, field) \ - for ((var) = LIST_FIRST((head)); \ - (var); \ - (var) = LIST_NEXT((var), field)) - -#define LIST_FOREACH_FROM(var, head, field) \ - for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ - (var); \ - (var) = LIST_NEXT((var), field)) - -#define LIST_FOREACH_SAFE(var, head, field, tvar) \ - for ((var) = LIST_FIRST((head)); \ - (var) && ((tvar) = LIST_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define LIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ - for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ - (var) && ((tvar) = LIST_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define LIST_INIT(head) do { \ - LIST_FIRST((head)) = NULL; \ -} while (0) - -#define LIST_INSERT_AFTER(listelm, elm, field) do { \ - QMD_LIST_CHECK_NEXT(listelm, field); \ - if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\ - LIST_NEXT((listelm), field)->field.le_prev = \ - &LIST_NEXT((elm), field); \ - LIST_NEXT((listelm), field) = (elm); \ - (elm)->field.le_prev = &LIST_NEXT((listelm), field); \ -} while (0) - -#define LIST_INSERT_BEFORE(listelm, elm, field) do { \ - QMD_LIST_CHECK_PREV(listelm, field); \ - (elm)->field.le_prev = (listelm)->field.le_prev; \ - LIST_NEXT((elm), field) = (listelm); \ - *(listelm)->field.le_prev = (elm); \ - (listelm)->field.le_prev = &LIST_NEXT((elm), field); \ -} while (0) - -#define LIST_INSERT_HEAD(head, elm, field) do { \ - QMD_LIST_CHECK_HEAD((head), field); \ - if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \ - LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\ - LIST_FIRST((head)) = (elm); \ - (elm)->field.le_prev = &LIST_FIRST((head)); \ -} while (0) - -#define LIST_NEXT(elm, field) ((elm)->field.le_next) - -#define LIST_PREV(elm, head, type, field) \ - ((elm)->field.le_prev == &LIST_FIRST((head)) ? NULL : \ - __containerof((elm)->field.le_prev, \ - QUEUE_TYPEOF(type), field.le_next)) - -#define LIST_REMOVE(elm, field) do { \ - QMD_SAVELINK(oldnext, (elm)->field.le_next); \ - QMD_SAVELINK(oldprev, (elm)->field.le_prev); \ - QMD_LIST_CHECK_NEXT(elm, field); \ - QMD_LIST_CHECK_PREV(elm, field); \ - if (LIST_NEXT((elm), field) != NULL) \ - LIST_NEXT((elm), field)->field.le_prev = \ - (elm)->field.le_prev; \ - *(elm)->field.le_prev = LIST_NEXT((elm), field); \ - TRASHIT(*oldnext); \ - TRASHIT(*oldprev); \ -} while (0) - -#define LIST_SWAP(head1, head2, type, field) do { \ - QUEUE_TYPEOF(type) *swap_tmp = LIST_FIRST(head1); \ - LIST_FIRST((head1)) = LIST_FIRST((head2)); \ - LIST_FIRST((head2)) = swap_tmp; \ - if ((swap_tmp = LIST_FIRST((head1))) != NULL) \ - swap_tmp->field.le_prev = &LIST_FIRST((head1)); \ - if ((swap_tmp = LIST_FIRST((head2))) != NULL) \ - swap_tmp->field.le_prev = &LIST_FIRST((head2)); \ -} while (0) - -/* - * Tail queue declarations. - */ -#define TAILQ_HEAD(name, type) \ -struct name { \ - struct type *tqh_first; /* first element */ \ - struct type **tqh_last; /* addr of last next element */ \ - TRACEBUF \ -} - -#define TAILQ_CLASS_HEAD(name, type) \ -struct name { \ - class type *tqh_first; /* first element */ \ - class type **tqh_last; /* addr of last next element */ \ - TRACEBUF \ -} - -#define TAILQ_HEAD_INITIALIZER(head) \ - { NULL, &(head).tqh_first, TRACEBUF_INITIALIZER } - -#define TAILQ_ENTRY(type) \ -struct { \ - struct type *tqe_next; /* next element */ \ - struct type **tqe_prev; /* address of previous next element */ \ - TRACEBUF \ -} - -#define TAILQ_CLASS_ENTRY(type) \ -struct { \ - class type *tqe_next; /* next element */ \ - class type **tqe_prev; /* address of previous next element */ \ - TRACEBUF \ -} - -/* - * Tail queue functions. - */ -#if (defined(_KERNEL) && defined(INVARIANTS)) -/* - * QMD_TAILQ_CHECK_HEAD(TAILQ_HEAD *head, TAILQ_ENTRY NAME) - * - * If the tailq is non-empty, validates that the first element of the tailq - * points back at 'head.' - */ -#define QMD_TAILQ_CHECK_HEAD(head, field) do { \ - if (!TAILQ_EMPTY(head) && \ - TAILQ_FIRST((head))->field.tqe_prev != \ - &TAILQ_FIRST((head))) \ - panic("Bad tailq head %p first->prev != head", (head)); \ -} while (0) - -/* - * QMD_TAILQ_CHECK_TAIL(TAILQ_HEAD *head, TAILQ_ENTRY NAME) - * - * Validates that the tail of the tailq is a pointer to pointer to NULL. - */ -#define QMD_TAILQ_CHECK_TAIL(head, field) do { \ - if (*(head)->tqh_last != NULL) \ - panic("Bad tailq NEXT(%p->tqh_last) != NULL", (head)); \ -} while (0) - -/* - * QMD_TAILQ_CHECK_NEXT(TYPE *elm, TAILQ_ENTRY NAME) - * - * If an element follows 'elm' in the tailq, validates that the next element - * points back at 'elm.' - */ -#define QMD_TAILQ_CHECK_NEXT(elm, field) do { \ - if (TAILQ_NEXT((elm), field) != NULL && \ - TAILQ_NEXT((elm), field)->field.tqe_prev != \ - &((elm)->field.tqe_next)) \ - panic("Bad link elm %p next->prev != elm", (elm)); \ -} while (0) - -/* - * QMD_TAILQ_CHECK_PREV(TYPE *elm, TAILQ_ENTRY NAME) - * - * Validates that the previous element (or head of the tailq) points to 'elm.' - */ -#define QMD_TAILQ_CHECK_PREV(elm, field) do { \ - if (*(elm)->field.tqe_prev != (elm)) \ - panic("Bad link elm %p prev->next != elm", (elm)); \ -} while (0) -#else -#define QMD_TAILQ_CHECK_HEAD(head, field) -#define QMD_TAILQ_CHECK_TAIL(head, headname) -#define QMD_TAILQ_CHECK_NEXT(elm, field) -#define QMD_TAILQ_CHECK_PREV(elm, field) -#endif /* (_KERNEL && INVARIANTS) */ - -#define TAILQ_CONCAT(head1, head2, field) do { \ - if (!TAILQ_EMPTY(head2)) { \ - *(head1)->tqh_last = (head2)->tqh_first; \ - (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \ - (head1)->tqh_last = (head2)->tqh_last; \ - TAILQ_INIT((head2)); \ - QMD_TRACE_HEAD(head1); \ - QMD_TRACE_HEAD(head2); \ - } \ -} while (0) - -#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL) - -#define TAILQ_FIRST(head) ((head)->tqh_first) - -#define TAILQ_FOREACH(var, head, field) \ - for ((var) = TAILQ_FIRST((head)); \ - (var); \ - (var) = TAILQ_NEXT((var), field)) - -#define TAILQ_FOREACH_FROM(var, head, field) \ - for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ - (var); \ - (var) = TAILQ_NEXT((var), field)) - -#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ - for ((var) = TAILQ_FIRST((head)); \ - (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define TAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ - for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ - (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ - for ((var) = TAILQ_LAST((head), headname); \ - (var); \ - (var) = TAILQ_PREV((var), headname, field)) - -#define TAILQ_FOREACH_REVERSE_FROM(var, head, headname, field) \ - for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ - (var); \ - (var) = TAILQ_PREV((var), headname, field)) - -#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \ - for ((var) = TAILQ_LAST((head), headname); \ - (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ - (var) = (tvar)) - -#define TAILQ_FOREACH_REVERSE_FROM_SAFE(var, head, headname, field, tvar) \ - for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ - (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ - (var) = (tvar)) - -#define TAILQ_INIT(head) do { \ - TAILQ_FIRST((head)) = NULL; \ - (head)->tqh_last = &TAILQ_FIRST((head)); \ - QMD_TRACE_HEAD(head); \ -} while (0) - -#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ - QMD_TAILQ_CHECK_NEXT(listelm, field); \ - if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\ - TAILQ_NEXT((elm), field)->field.tqe_prev = \ - &TAILQ_NEXT((elm), field); \ - else { \ - (head)->tqh_last = &TAILQ_NEXT((elm), field); \ - QMD_TRACE_HEAD(head); \ - } \ - TAILQ_NEXT((listelm), field) = (elm); \ - (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \ - QMD_TRACE_ELEM(&(elm)->field); \ - QMD_TRACE_ELEM(&(listelm)->field); \ -} while (0) - -#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ - QMD_TAILQ_CHECK_PREV(listelm, field); \ - (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ - TAILQ_NEXT((elm), field) = (listelm); \ - *(listelm)->field.tqe_prev = (elm); \ - (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \ - QMD_TRACE_ELEM(&(elm)->field); \ - QMD_TRACE_ELEM(&(listelm)->field); \ -} while (0) - -#define TAILQ_INSERT_HEAD(head, elm, field) do { \ - QMD_TAILQ_CHECK_HEAD(head, field); \ - if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \ - TAILQ_FIRST((head))->field.tqe_prev = \ - &TAILQ_NEXT((elm), field); \ - else \ - (head)->tqh_last = &TAILQ_NEXT((elm), field); \ - TAILQ_FIRST((head)) = (elm); \ - (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \ - QMD_TRACE_HEAD(head); \ - QMD_TRACE_ELEM(&(elm)->field); \ -} while (0) - -#define TAILQ_INSERT_TAIL(head, elm, field) do { \ - QMD_TAILQ_CHECK_TAIL(head, field); \ - TAILQ_NEXT((elm), field) = NULL; \ - (elm)->field.tqe_prev = (head)->tqh_last; \ - *(head)->tqh_last = (elm); \ - (head)->tqh_last = &TAILQ_NEXT((elm), field); \ - QMD_TRACE_HEAD(head); \ - QMD_TRACE_ELEM(&(elm)->field); \ -} while (0) - -#define TAILQ_LAST(head, headname) \ - (*(((struct headname *)((head)->tqh_last))->tqh_last)) - -#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) - -#define TAILQ_PREV(elm, headname, field) \ - (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) - -#define TAILQ_REMOVE(head, elm, field) do { \ - QMD_SAVELINK(oldnext, (elm)->field.tqe_next); \ - QMD_SAVELINK(oldprev, (elm)->field.tqe_prev); \ - QMD_TAILQ_CHECK_NEXT(elm, field); \ - QMD_TAILQ_CHECK_PREV(elm, field); \ - if ((TAILQ_NEXT((elm), field)) != NULL) \ - TAILQ_NEXT((elm), field)->field.tqe_prev = \ - (elm)->field.tqe_prev; \ - else { \ - (head)->tqh_last = (elm)->field.tqe_prev; \ - QMD_TRACE_HEAD(head); \ - } \ - *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \ - TRASHIT(*oldnext); \ - TRASHIT(*oldprev); \ - QMD_TRACE_ELEM(&(elm)->field); \ -} while (0) - -#define TAILQ_SWAP(head1, head2, type, field) do { \ - QUEUE_TYPEOF(type) *swap_first = (head1)->tqh_first; \ - QUEUE_TYPEOF(type) **swap_last = (head1)->tqh_last; \ - (head1)->tqh_first = (head2)->tqh_first; \ - (head1)->tqh_last = (head2)->tqh_last; \ - (head2)->tqh_first = swap_first; \ - (head2)->tqh_last = swap_last; \ - if ((swap_first = (head1)->tqh_first) != NULL) \ - swap_first->field.tqe_prev = &(head1)->tqh_first; \ - else \ - (head1)->tqh_last = &(head1)->tqh_first; \ - if ((swap_first = (head2)->tqh_first) != NULL) \ - swap_first->field.tqe_prev = &(head2)->tqh_first; \ - else \ - (head2)->tqh_last = &(head2)->tqh_first; \ -} while (0) - -#endif /* !_SYS_QUEUE_H_ */ diff --git a/external/lsquic/src/liblsquic/lsquic-config.cmake b/external/lsquic/src/liblsquic/lsquic-config.cmake deleted file mode 100644 index d45b5bb..0000000 --- a/external/lsquic/src/liblsquic/lsquic-config.cmake +++ /dev/null @@ -1,4 +0,0 @@ -@PACKAGE_INIT@ - -set_and_check(lsquic_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") -include("${CMAKE_CURRENT_LIST_DIR}/lsquic-targets.cmake") diff --git a/external/lsquic/src/liblsquic/lsquic_qpack_dec_logger.h b/external/lsquic/src/liblsquic/lsquic_qpack_dec_logger.h deleted file mode 100644 index 0add551..0000000 --- a/external/lsquic/src/liblsquic/lsquic_qpack_dec_logger.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* This header file is included into lsqpack.c */ - -#include "lsquic.h" -#include "lsquic_int_types.h" -#include "lsquic_hash.h" -#include "lsquic_conn.h" - -#undef LSQUIC_LOGGER_MODULE -#undef LSQUIC_LOG_CONN_ID - -#define LSQUIC_LOGGER_MODULE LSQLM_QPACK_DEC -#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(dec->qpd_logger_ctx) -#include "lsquic_logger.h" - -#define D_DEBUG LSQ_DEBUG -#define D_INFO LSQ_INFO -#define D_WARN LSQ_WARN -#define D_ERROR LSQ_ERROR diff --git a/external/lsquic/src/liblsquic/lsquic_qpack_enc_logger.h b/external/lsquic/src/liblsquic/lsquic_qpack_enc_logger.h deleted file mode 100644 index ff4d48e..0000000 --- a/external/lsquic/src/liblsquic/lsquic_qpack_enc_logger.h +++ /dev/null @@ -1,16 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* This header file is included into lsqpack.c */ - -#include "lsquic.h" -#include "lsquic_int_types.h" -#include "lsquic_hash.h" -#include "lsquic_conn.h" - -#define LSQUIC_LOGGER_MODULE LSQLM_QPACK_ENC -#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(enc->qpe_logger_ctx) -#include "lsquic_logger.h" - -#define E_DEBUG LSQ_DEBUG -#define E_INFO LSQ_INFO -#define E_WARN LSQ_WARN -#define E_ERROR LSQ_ERROR diff --git a/external/lsquic/src/liblsquic/lsquic_xxhash.c b/external/lsquic/src/liblsquic/lsquic_xxhash.c deleted file mode 100644 index 3856882..0000000 --- a/external/lsquic/src/liblsquic/lsquic_xxhash.c +++ /dev/null @@ -1,942 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* -xxHash - Fast Hash algorithm -Copyright (C) 2012-2014, Yann Collet. -BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -You can contact the author at : -- xxHash source repository : http://code.google.com/p/xxhash/ -- public discussion board : https://groups.google.com/forum/#!forum/lz4c -*/ - - -//************************************** -// Tuning parameters -//************************************** -// Unaligned memory access is automatically enabled for "common" CPU, such as x86. -// For others CPU, the compiler will be more cautious, and insert extra code to ensure aligned access is respected. -// If you know your target CPU supports unaligned memory access, you want to force this option manually to improve performance. -// You can also enable this parameter if you know your input data will always be aligned (boundaries of 4, for U32). -#if defined(__ARM_FEATURE_UNALIGNED) || defined(__i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64) -# define XXH_USE_UNALIGNED_ACCESS 1 -#endif - -// XXH_ACCEPT_NULL_INPUT_POINTER : -// If the input pointer is a null pointer, xxHash default behavior is to trigger a memory access error, since it is a bad pointer. -// When this option is enabled, xxHash output for null input pointers will be the same as a null-length input. -// This option has a very small performance cost (only measurable on small inputs). -// By default, this option is disabled. To enable it, uncomment below define : -// #define XXH_ACCEPT_NULL_INPUT_POINTER 1 - -// XXH_FORCE_NATIVE_FORMAT : -// By default, xxHash library provides endian-independant Hash values, based on little-endian convention. -// Results are therefore identical for little-endian and big-endian CPU. -// This comes at a performance cost for big-endian CPU, since some swapping is required to emulate little-endian format. -// Should endian-independance be of no importance for your application, you may set the #define below to 1. -// It will improve speed for Big-endian CPU. -// This option has no impact on Little_Endian CPU. -#define XXH_FORCE_NATIVE_FORMAT 0 - -//************************************** -// Compiler Specific Options -//************************************** -// Disable some Visual warning messages -#ifdef _MSC_VER // Visual Studio -# pragma warning(disable : 4127) // disable: C4127: conditional expression is constant -#endif - -#ifdef _MSC_VER // Visual Studio -# define FORCE_INLINE static __forceinline -#else -# ifdef __GNUC__ -# define FORCE_INLINE static inline __attribute__((always_inline)) -# else -# define FORCE_INLINE static inline -# endif -#endif - -//************************************** -// Includes & Memory related functions -//************************************** -#include "lsquic_xxhash.h" -// Modify the local functions below should you wish to use some other memory routines -// for malloc(), free() -#include -static void *XXH_malloc(size_t s) { return malloc(s); } -static void XXH_free(void *p) { free(p); } -// for memcpy() -#include -static void *XXH_memcpy(void *dest, const void *src, size_t size) -{ - return memcpy(dest, src, size); -} - - -//************************************** -// Basic Types -//************************************** -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L // C99 -# include -typedef uint8_t BYTE; -typedef uint16_t U16; -typedef uint32_t U32; -typedef int32_t S32; -typedef uint64_t U64; -#else -typedef unsigned char BYTE; -typedef unsigned short U16; -typedef unsigned int U32; -typedef signed int S32; -typedef unsigned long long U64; -#endif - -#if defined(__GNUC__) && !defined(XXH_USE_UNALIGNED_ACCESS) -# define _PACKED __attribute__ ((packed)) -#else -# define _PACKED -#endif - -#if !defined(XXH_USE_UNALIGNED_ACCESS) && !defined(__GNUC__) -# ifdef __IBMC__ -# pragma pack(1) -# else -# pragma pack(push, 1) -# endif -#endif - -typedef struct _U32_S -{ - U32 v; -} _PACKED U32_S; -typedef struct _U64_S -{ - U64 v; -} _PACKED U64_S; - -#if !defined(XXH_USE_UNALIGNED_ACCESS) && !defined(__GNUC__) -# pragma pack(pop) -#endif - -#define A32(x) (((U32_S *)(x))->v) -#define A64(x) (((U64_S *)(x))->v) - - -//*************************************** -// Compiler-specific Functions and Macros -//*************************************** -#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) - -// Note : although _rotl exists for minGW (GCC under windows), performance seems poor -#if defined(_MSC_VER) -# define XXH_rotl32(x,r) _rotl(x,r) -# define XXH_rotl64(x,r) _rotl64(x,r) -#else -# define XXH_rotl32(x,r) ((x << r) | (x >> (32 - r))) -# define XXH_rotl64(x,r) ((x << r) | (x >> (64 - r))) -#endif - -#if defined(_MSC_VER) // Visual Studio -# define XXH_swap32 _byteswap_ulong -# define XXH_swap64 _byteswap_uint64 -#elif GCC_VERSION >= 403 -# define XXH_swap32 __builtin_bswap32 -# define XXH_swap64 __builtin_bswap64 -#else -static inline U32 XXH_swap32(U32 x) -{ - return ((x << 24) & 0xff000000) | - ((x << 8) & 0x00ff0000) | - ((x >> 8) & 0x0000ff00) | - ((x >> 24) & 0x000000ff); -} -static inline U64 XXH_swap64(U64 x) -{ - return ((x << 56) & 0xff00000000000000ULL) | - ((x << 40) & 0x00ff000000000000ULL) | - ((x << 24) & 0x0000ff0000000000ULL) | - ((x << 8) & 0x000000ff00000000ULL) | - ((x >> 8) & 0x00000000ff000000ULL) | - ((x >> 24) & 0x0000000000ff0000ULL) | - ((x >> 40) & 0x000000000000ff00ULL) | - ((x >> 56) & 0x00000000000000ffULL); -} -#endif - - -//************************************** -// Constants -//************************************** -#define PRIME32_1 2654435761U -#define PRIME32_2 2246822519U -#define PRIME32_3 3266489917U -#define PRIME32_4 668265263U -#define PRIME32_5 374761393U - -#define PRIME64_1 11400714785074694791ULL -#define PRIME64_2 14029467366897019727ULL -#define PRIME64_3 1609587929392839161ULL -#define PRIME64_4 9650029242287828579ULL -#define PRIME64_5 2870177450012600261ULL - -//************************************** -// Architecture Macros -//************************************** -typedef enum { XXH_bigEndian = 0, XXH_littleEndian = 1 } XXH_endianess; -#ifndef XXH_CPU_LITTLE_ENDIAN // It is possible to define XXH_CPU_LITTLE_ENDIAN externally, for example using a compiler switch -static const int one = 1; -# define XXH_CPU_LITTLE_ENDIAN (*(char*)(&one)) -#endif - - -//************************************** -// Macros -//************************************** -#define XXH_STATIC_ASSERT(c) { enum { XXH_static_assert = 1/(!!(c)) }; } // use only *after* variable declarations - - -//**************************** -// Memory reads -//**************************** -typedef enum { XXH_aligned, XXH_unaligned } XXH_alignment; - -FORCE_INLINE U32 XXH_readLE32_align(const void *ptr, XXH_endianess endian, - XXH_alignment align) -{ - if (align == XXH_unaligned) - return endian == XXH_littleEndian ? A32(ptr) : XXH_swap32(A32(ptr)); - else - return endian == XXH_littleEndian ? *(U32 *)ptr : XXH_swap32(*(U32 *)ptr); -} - -FORCE_INLINE U32 XXH_readLE32(const void *ptr, XXH_endianess endian) -{ - return XXH_readLE32_align(ptr, endian, XXH_unaligned); -} - -FORCE_INLINE U64 XXH_readLE64_align(const void *ptr, XXH_endianess endian, - XXH_alignment align) -{ - if (align == XXH_unaligned) - return endian == XXH_littleEndian ? A64(ptr) : XXH_swap64(A64(ptr)); - else - return endian == XXH_littleEndian ? *(U64 *)ptr : XXH_swap64(*(U64 *)ptr); -} - -FORCE_INLINE U64 XXH_readLE64(const void *ptr, XXH_endianess endian) -{ - return XXH_readLE64_align(ptr, endian, XXH_unaligned); -} - - -//**************************** -// Simple Hash Functions -//**************************** -FORCE_INLINE U32 XXH32_endian_align(const void *input, size_t len, - U32 seed, XXH_endianess endian, XXH_alignment align) -{ - const BYTE *p = (const BYTE *)input; - const BYTE *bEnd = p + len; - U32 h32; -#define XXH_get32bits(p) XXH_readLE32_align(p, endian, align) - -#ifdef XXH_ACCEPT_NULL_INPUT_POINTER - if (p == NULL) - { - len = 0; - bEnd = p = (const BYTE *)(size_t)16; - } -#endif - - if (len >= 16) - { - const BYTE *const limit = bEnd - 16; - U32 v1 = seed + PRIME32_1 + PRIME32_2; - U32 v2 = seed + PRIME32_2; - U32 v3 = seed + 0; - U32 v4 = seed - PRIME32_1; - - do - { - v1 += XXH_get32bits(p) * PRIME32_2; - v1 = XXH_rotl32(v1, 13); - v1 *= PRIME32_1; - p += 4; - v2 += XXH_get32bits(p) * PRIME32_2; - v2 = XXH_rotl32(v2, 13); - v2 *= PRIME32_1; - p += 4; - v3 += XXH_get32bits(p) * PRIME32_2; - v3 = XXH_rotl32(v3, 13); - v3 *= PRIME32_1; - p += 4; - v4 += XXH_get32bits(p) * PRIME32_2; - v4 = XXH_rotl32(v4, 13); - v4 *= PRIME32_1; - p += 4; - } - while (p <= limit); - - h32 = XXH_rotl32(v1, 1) + XXH_rotl32(v2, 7) + XXH_rotl32(v3, - 12) + XXH_rotl32(v4, 18); - } - else - h32 = seed + PRIME32_5; - - h32 += (U32) len; - - while (p + 4 <= bEnd) - { - h32 += XXH_get32bits(p) * PRIME32_3; - h32 = XXH_rotl32(h32, 17) * PRIME32_4 ; - p += 4; - } - - while (p < bEnd) - { - h32 += (*p) * PRIME32_5; - h32 = XXH_rotl32(h32, 11) * PRIME32_1 ; - p++; - } - - h32 ^= h32 >> 15; - h32 *= PRIME32_2; - h32 ^= h32 >> 13; - h32 *= PRIME32_3; - h32 ^= h32 >> 16; - - return h32; -} - - -unsigned int XXH32(const void *input, size_t len, unsigned seed) -{ -#if 0 - // Simple version, good for code maintenance, but unfortunately slow for small inputs - XXH32_state_t state; - XXH32_reset(&state, seed); - XXH32_update(&state, input, len); - return XXH32_digest(&state); -#else - XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; - -# if !defined(XXH_USE_UNALIGNED_ACCESS) - if ((((size_t)input) & 3) == - 0) // Input is aligned, let's leverage the speed advantage - { - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH32_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned); - else - return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned); - } -# endif - - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH32_endian_align(input, len, seed, XXH_littleEndian, - XXH_unaligned); - else - return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned); -#endif -} - -FORCE_INLINE U64 XXH64_endian_align(const void *input, size_t len, - U64 seed, XXH_endianess endian, XXH_alignment align) -{ - const BYTE *p = (const BYTE *)input; - const BYTE *bEnd = p + len; - U64 h64; -#define XXH_get64bits(p) XXH_readLE64_align(p, endian, align) - -#ifdef XXH_ACCEPT_NULL_INPUT_POINTER - if (p == NULL) - { - len = 0; - bEnd = p = (const BYTE *)(size_t)32; - } -#endif - - if (len >= 32) - { - const BYTE *const limit = bEnd - 32; - U64 v1 = seed + PRIME64_1 + PRIME64_2; - U64 v2 = seed + PRIME64_2; - U64 v3 = seed + 0; - U64 v4 = seed - PRIME64_1; - - do - { - v1 += XXH_get64bits(p) * PRIME64_2; - p += 8; - v1 = XXH_rotl64(v1, 31); - v1 *= PRIME64_1; - v2 += XXH_get64bits(p) * PRIME64_2; - p += 8; - v2 = XXH_rotl64(v2, 31); - v2 *= PRIME64_1; - v3 += XXH_get64bits(p) * PRIME64_2; - p += 8; - v3 = XXH_rotl64(v3, 31); - v3 *= PRIME64_1; - v4 += XXH_get64bits(p) * PRIME64_2; - p += 8; - v4 = XXH_rotl64(v4, 31); - v4 *= PRIME64_1; - } - while (p <= limit); - - h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, - 12) + XXH_rotl64(v4, 18); - - v1 *= PRIME64_2; - v1 = XXH_rotl64(v1, 31); - v1 *= PRIME64_1; - h64 ^= v1; - h64 = h64 * PRIME64_1 + PRIME64_4; - - v2 *= PRIME64_2; - v2 = XXH_rotl64(v2, 31); - v2 *= PRIME64_1; - h64 ^= v2; - h64 = h64 * PRIME64_1 + PRIME64_4; - - v3 *= PRIME64_2; - v3 = XXH_rotl64(v3, 31); - v3 *= PRIME64_1; - h64 ^= v3; - h64 = h64 * PRIME64_1 + PRIME64_4; - - v4 *= PRIME64_2; - v4 = XXH_rotl64(v4, 31); - v4 *= PRIME64_1; - h64 ^= v4; - h64 = h64 * PRIME64_1 + PRIME64_4; - } - else - h64 = seed + PRIME64_5; - - h64 += (U64) len; - - while (p + 8 <= bEnd) - { - U64 k1 = XXH_get64bits(p); - k1 *= PRIME64_2; - k1 = XXH_rotl64(k1, 31); - k1 *= PRIME64_1; - h64 ^= k1; - h64 = XXH_rotl64(h64, 27) * PRIME64_1 + PRIME64_4; - p += 8; - } - - if (p + 4 <= bEnd) - { - h64 ^= (U64)(XXH_get32bits(p)) * PRIME64_1; - h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3; - p += 4; - } - - while (p < bEnd) - { - h64 ^= (*p) * PRIME64_5; - h64 = XXH_rotl64(h64, 11) * PRIME64_1; - p++; - } - - h64 ^= h64 >> 33; - h64 *= PRIME64_2; - h64 ^= h64 >> 29; - h64 *= PRIME64_3; - h64 ^= h64 >> 32; - - return h64; -} - - -unsigned long long XXH64(const void *input, size_t len, - unsigned long long seed) -{ -#if 0 - // Simple version, good for code maintenance, but unfortunately slow for small inputs - XXH64_state_t state; - XXH64_reset(&state, seed); - XXH64_update(&state, input, len); - return XXH64_digest(&state); -#else - XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; - -# if !defined(XXH_USE_UNALIGNED_ACCESS) - if ((((size_t)input) & 7) == - 0) // Input is aligned, let's leverage the speed advantage - { - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH64_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned); - else - return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned); - } -# endif - - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH64_endian_align(input, len, seed, XXH_littleEndian, - XXH_unaligned); - else - return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned); -#endif -} - -/**************************************************** - * Advanced Hash Functions -****************************************************/ - -/*** Allocation ***/ -typedef struct -{ - U64 total_len; - U32 seed; - U32 v1; - U32 v2; - U32 v3; - U32 v4; - U32 mem32[4]; /* defined as U32 for alignment */ - U32 memsize; -} XXH_istate32_t; - -typedef struct -{ - U64 total_len; - U64 seed; - U64 v1; - U64 v2; - U64 v3; - U64 v4; - U64 mem64[4]; /* defined as U64 for alignment */ - U32 memsize; -} XXH_istate64_t; - - -XXH32_state_t *XXH32_createState(void) -{ - XXH_STATIC_ASSERT(sizeof(XXH32_state_t) >= sizeof( - XXH_istate32_t)); // A compilation error here means XXH32_state_t is not large enough - return (XXH32_state_t *)XXH_malloc(sizeof(XXH32_state_t)); -} -XXH_errorcode XXH32_freeState(XXH32_state_t *statePtr) -{ - XXH_free(statePtr); - return XXH_OK; -}; - -XXH64_state_t *XXH64_createState(void) -{ - XXH_STATIC_ASSERT(sizeof(XXH64_state_t) >= sizeof( - XXH_istate64_t)); // A compilation error here means XXH64_state_t is not large enough - return (XXH64_state_t *)XXH_malloc(sizeof(XXH64_state_t)); -} -XXH_errorcode XXH64_freeState(XXH64_state_t *statePtr) -{ - XXH_free(statePtr); - return XXH_OK; -}; - - -/*** Hash feed ***/ - -XXH_errorcode XXH32_reset(XXH32_state_t *state_in, U32 seed) -{ - XXH_istate32_t *state = (XXH_istate32_t *) state_in; - state->seed = seed; - state->v1 = seed + PRIME32_1 + PRIME32_2; - state->v2 = seed + PRIME32_2; - state->v3 = seed + 0; - state->v4 = seed - PRIME32_1; - state->total_len = 0; - state->memsize = 0; - return XXH_OK; -} - -XXH_errorcode XXH64_reset(XXH64_state_t *state_in, unsigned long long seed) -{ - XXH_istate64_t *state = (XXH_istate64_t *) state_in; - state->seed = seed; - state->v1 = seed + PRIME64_1 + PRIME64_2; - state->v2 = seed + PRIME64_2; - state->v3 = seed + 0; - state->v4 = seed - PRIME64_1; - state->total_len = 0; - state->memsize = 0; - return XXH_OK; -} - - -FORCE_INLINE XXH_errorcode XXH32_update_endian(XXH32_state_t *state_in, - const void *input, size_t len, XXH_endianess endian) -{ - XXH_istate32_t *state = (XXH_istate32_t *) state_in; - const BYTE *p = (const BYTE *)input; - const BYTE *const bEnd = p + len; - -#ifdef XXH_ACCEPT_NULL_INPUT_POINTER - if (input == NULL) return XXH_ERROR; -#endif - - state->total_len += len; - - if (state->memsize + len < 16) // fill in tmp buffer - { - XXH_memcpy((BYTE *)(state->mem32) + state->memsize, input, len); - state->memsize += (U32)len; - return XXH_OK; - } - - if (state->memsize) // some data left from previous update - { - XXH_memcpy((BYTE *)(state->mem32) + state->memsize, input, - 16 - state->memsize); - { - const U32 *p32 = state->mem32; - state->v1 += XXH_readLE32(p32, endian) * PRIME32_2; - state->v1 = XXH_rotl32(state->v1, 13); - state->v1 *= PRIME32_1; - p32++; - state->v2 += XXH_readLE32(p32, endian) * PRIME32_2; - state->v2 = XXH_rotl32(state->v2, 13); - state->v2 *= PRIME32_1; - p32++; - state->v3 += XXH_readLE32(p32, endian) * PRIME32_2; - state->v3 = XXH_rotl32(state->v3, 13); - state->v3 *= PRIME32_1; - p32++; - state->v4 += XXH_readLE32(p32, endian) * PRIME32_2; - state->v4 = XXH_rotl32(state->v4, 13); - state->v4 *= PRIME32_1; - p32++; - } - p += 16 - state->memsize; - state->memsize = 0; - } - - if (p <= bEnd - 16) - { - const BYTE *const limit = bEnd - 16; - U32 v1 = state->v1; - U32 v2 = state->v2; - U32 v3 = state->v3; - U32 v4 = state->v4; - - do - { - v1 += XXH_readLE32(p, endian) * PRIME32_2; - v1 = XXH_rotl32(v1, 13); - v1 *= PRIME32_1; - p += 4; - v2 += XXH_readLE32(p, endian) * PRIME32_2; - v2 = XXH_rotl32(v2, 13); - v2 *= PRIME32_1; - p += 4; - v3 += XXH_readLE32(p, endian) * PRIME32_2; - v3 = XXH_rotl32(v3, 13); - v3 *= PRIME32_1; - p += 4; - v4 += XXH_readLE32(p, endian) * PRIME32_2; - v4 = XXH_rotl32(v4, 13); - v4 *= PRIME32_1; - p += 4; - } - while (p <= limit); - - state->v1 = v1; - state->v2 = v2; - state->v3 = v3; - state->v4 = v4; - } - - if (p < bEnd) - { - XXH_memcpy(state->mem32, p, bEnd - p); - state->memsize = (int)(bEnd - p); - } - - return XXH_OK; -} - -XXH_errorcode XXH32_update(XXH32_state_t *state_in, const void *input, - size_t len) -{ - XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; - - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH32_update_endian(state_in, input, len, XXH_littleEndian); - else - return XXH32_update_endian(state_in, input, len, XXH_bigEndian); -} - - - -FORCE_INLINE U32 XXH32_digest_endian(const XXH32_state_t *state_in, - XXH_endianess endian) -{ - XXH_istate32_t *state = (XXH_istate32_t *) state_in; - const BYTE *p = (const BYTE *)state->mem32; - BYTE *bEnd = (BYTE *)(state->mem32) + state->memsize; - U32 h32; - - if (state->total_len >= 16) - h32 = XXH_rotl32(state->v1, 1) + XXH_rotl32(state->v2, - 7) + XXH_rotl32(state->v3, 12) + XXH_rotl32(state->v4, 18); - else - h32 = state->seed + PRIME32_5; - - h32 += (U32) state->total_len; - - while (p + 4 <= bEnd) - { - h32 += XXH_readLE32(p, endian) * PRIME32_3; - h32 = XXH_rotl32(h32, 17) * PRIME32_4; - p += 4; - } - - while (p < bEnd) - { - h32 += (*p) * PRIME32_5; - h32 = XXH_rotl32(h32, 11) * PRIME32_1; - p++; - } - - h32 ^= h32 >> 15; - h32 *= PRIME32_2; - h32 ^= h32 >> 13; - h32 *= PRIME32_3; - h32 ^= h32 >> 16; - - return h32; -} - - -U32 XXH32_digest(const XXH32_state_t *state_in) -{ - XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; - - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH32_digest_endian(state_in, XXH_littleEndian); - else - return XXH32_digest_endian(state_in, XXH_bigEndian); -} - - -FORCE_INLINE XXH_errorcode XXH64_update_endian(XXH64_state_t *state_in, - const void *input, size_t len, XXH_endianess endian) -{ - XXH_istate64_t *state = (XXH_istate64_t *) state_in; - const BYTE *p = (const BYTE *)input; - const BYTE *const bEnd = p + len; - -#ifdef XXH_ACCEPT_NULL_INPUT_POINTER - if (input == NULL) return XXH_ERROR; -#endif - - state->total_len += len; - - if (state->memsize + len < 32) // fill in tmp buffer - { - XXH_memcpy(((BYTE *)state->mem64) + state->memsize, input, len); - state->memsize += (U32)len; - return XXH_OK; - } - - if (state->memsize) // some data left from previous update - { - XXH_memcpy(((BYTE *)state->mem64) + state->memsize, input, - 32 - state->memsize); - { - const U64 *p64 = state->mem64; - state->v1 += XXH_readLE64(p64, endian) * PRIME64_2; - state->v1 = XXH_rotl64(state->v1, 31); - state->v1 *= PRIME64_1; - p64++; - state->v2 += XXH_readLE64(p64, endian) * PRIME64_2; - state->v2 = XXH_rotl64(state->v2, 31); - state->v2 *= PRIME64_1; - p64++; - state->v3 += XXH_readLE64(p64, endian) * PRIME64_2; - state->v3 = XXH_rotl64(state->v3, 31); - state->v3 *= PRIME64_1; - p64++; - state->v4 += XXH_readLE64(p64, endian) * PRIME64_2; - state->v4 = XXH_rotl64(state->v4, 31); - state->v4 *= PRIME64_1; - p64++; - } - p += 32 - state->memsize; - state->memsize = 0; - } - - if (p + 32 <= bEnd) - { - const BYTE *const limit = bEnd - 32; - U64 v1 = state->v1; - U64 v2 = state->v2; - U64 v3 = state->v3; - U64 v4 = state->v4; - - do - { - v1 += XXH_readLE64(p, endian) * PRIME64_2; - v1 = XXH_rotl64(v1, 31); - v1 *= PRIME64_1; - p += 8; - v2 += XXH_readLE64(p, endian) * PRIME64_2; - v2 = XXH_rotl64(v2, 31); - v2 *= PRIME64_1; - p += 8; - v3 += XXH_readLE64(p, endian) * PRIME64_2; - v3 = XXH_rotl64(v3, 31); - v3 *= PRIME64_1; - p += 8; - v4 += XXH_readLE64(p, endian) * PRIME64_2; - v4 = XXH_rotl64(v4, 31); - v4 *= PRIME64_1; - p += 8; - } - while (p <= limit); - - state->v1 = v1; - state->v2 = v2; - state->v3 = v3; - state->v4 = v4; - } - - if (p < bEnd) - { - XXH_memcpy(state->mem64, p, bEnd - p); - state->memsize = (int)(bEnd - p); - } - - return XXH_OK; -} - -XXH_errorcode XXH64_update(XXH64_state_t *state_in, const void *input, - size_t len) -{ - XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; - - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH64_update_endian(state_in, input, len, XXH_littleEndian); - else - return XXH64_update_endian(state_in, input, len, XXH_bigEndian); -} - - - -FORCE_INLINE U64 XXH64_digest_endian(const XXH64_state_t *state_in, - XXH_endianess endian) -{ - XXH_istate64_t *state = (XXH_istate64_t *) state_in; - const BYTE *p = (const BYTE *)state->mem64; - BYTE *bEnd = (BYTE *)state->mem64 + state->memsize; - U64 h64; - - if (state->total_len >= 32) - { - U64 v1 = state->v1; - U64 v2 = state->v2; - U64 v3 = state->v3; - U64 v4 = state->v4; - - h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, - 12) + XXH_rotl64(v4, 18); - - v1 *= PRIME64_2; - v1 = XXH_rotl64(v1, 31); - v1 *= PRIME64_1; - h64 ^= v1; - h64 = h64 * PRIME64_1 + PRIME64_4; - - v2 *= PRIME64_2; - v2 = XXH_rotl64(v2, 31); - v2 *= PRIME64_1; - h64 ^= v2; - h64 = h64 * PRIME64_1 + PRIME64_4; - - v3 *= PRIME64_2; - v3 = XXH_rotl64(v3, 31); - v3 *= PRIME64_1; - h64 ^= v3; - h64 = h64 * PRIME64_1 + PRIME64_4; - - v4 *= PRIME64_2; - v4 = XXH_rotl64(v4, 31); - v4 *= PRIME64_1; - h64 ^= v4; - h64 = h64 * PRIME64_1 + PRIME64_4; - } - else - h64 = state->seed + PRIME64_5; - - h64 += (U64) state->total_len; - - while (p + 8 <= bEnd) - { - U64 k1 = XXH_readLE64(p, endian); - k1 *= PRIME64_2; - k1 = XXH_rotl64(k1, 31); - k1 *= PRIME64_1; - h64 ^= k1; - h64 = XXH_rotl64(h64, 27) * PRIME64_1 + PRIME64_4; - p += 8; - } - - if (p + 4 <= bEnd) - { - h64 ^= (U64)(XXH_readLE32(p, endian)) * PRIME64_1; - h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3; - p += 4; - } - - while (p < bEnd) - { - h64 ^= (*p) * PRIME64_5; - h64 = XXH_rotl64(h64, 11) * PRIME64_1; - p++; - } - - h64 ^= h64 >> 33; - h64 *= PRIME64_2; - h64 ^= h64 >> 29; - h64 *= PRIME64_3; - h64 ^= h64 >> 32; - - return h64; -} - - -unsigned long long XXH64_digest(const XXH64_state_t *state_in) -{ - XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; - - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH64_digest_endian(state_in, XXH_littleEndian); - else - return XXH64_digest_endian(state_in, XXH_bigEndian); -} - - diff --git a/external/lsquic/src/lshpack/.appveyor.yml b/external/lsquic/src/lshpack/.appveyor.yml deleted file mode 100644 index 9bd32e5..0000000 --- a/external/lsquic/src/lshpack/.appveyor.yml +++ /dev/null @@ -1,14 +0,0 @@ -version: 1.0.{build} - -build_script: - -- cmd: >- - echo %path% - - cmake . - - msbuild ALL_BUILD.vcxproj - -test_script: - -- cmd: ctest diff --git a/external/lsquic/src/lshpack/.cirrus.yml b/external/lsquic/src/lshpack/.cirrus.yml deleted file mode 100644 index 703bbc7..0000000 --- a/external/lsquic/src/lshpack/.cirrus.yml +++ /dev/null @@ -1,6 +0,0 @@ -freebsd_instance: - image: freebsd-13-3-release-amd64 - -task: - install_script: pkg install -y cmake - script: cmake . && make && make test diff --git a/external/lsquic/src/lshpack/.travis.yml b/external/lsquic/src/lshpack/.travis.yml deleted file mode 100644 index 5a39fdc..0000000 --- a/external/lsquic/src/lshpack/.travis.yml +++ /dev/null @@ -1,27 +0,0 @@ -language: c -sudo: false -addons: - apt: -matrix: - include: - - name: Linux (gcc-8) - os: linux - dist: xenial - compiler: gcc-8 - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: g++-8 - - name: Linux (clang) - os: linux - dist: xenial - compiler: clang -before_install: - - $CC --version - - cmake --version -before_script: - - cmake . -script: - - make - - make test diff --git a/external/lsquic/src/lshpack/CMakeLists.txt b/external/lsquic/src/lshpack/CMakeLists.txt deleted file mode 100644 index a970b85..0000000 --- a/external/lsquic/src/lshpack/CMakeLists.txt +++ /dev/null @@ -1,90 +0,0 @@ -# The following variable can be defined on the command line: -# -# SHARED -# NDEBUG -# XXH_HEADER_NAME -# XXH_INCLUDE_DIR -# LSHPACK_XXH - -CMAKE_MINIMUM_REQUIRED(VERSION 2.8) -PROJECT(ls-hpack C) - -include(CheckIncludeFiles) - -IF (SHARED EQUAL 1) - ADD_LIBRARY(ls-hpack SHARED lshpack.c) -ELSE() - ADD_LIBRARY(ls-hpack STATIC lshpack.c) -ENDIF() -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}) - -IF (NOT DEFINED XXH_HEADER_NAME) - SET(XXH_HEADER_NAME "xxhash.h") -ENDIF() - -IF (DEFINED XXH_INCLUDE_DIR) - INCLUDE_DIRECTORIES("${XXH_INCLUDE_DIR}") -ELSE() - INCLUDE_DIRECTORIES(deps/xxhash) -ENDIF() - -IF (LSHPACK_XXH) - TARGET_SOURCES(ls-hpack PRIVATE deps/xxhash/xxhash.c) -ENDIF() - -check_include_files("sys/queue.h" HAVE_SYS_QUEUE_H) - -IF (NOT HAVE_SYS_QUEUE_H) - INCLUDE_DIRECTORIES(compat/queue) -ENDIF() - -IF (MSVC) - INCLUDE_DIRECTORIES(compat/windows) -ENDIF() - -IF (CMAKE_C_COMPILER_ID STREQUAL GNU - OR CMAKE_C_COMPILER_ID STREQUAL Clang) - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -Wall -Wextra -Wno-unused-parameter") - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -fno-omit-frame-pointer") - INCLUDE(CheckCCompilerFlag) - CHECK_C_COMPILER_FLAG(-Wno-implicit-fallthrough HAS_NO_IMPLICIT_FALLTHROUGH) - IF (HAS_NO_IMPLICIT_FALLTHROUGH) - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -Wno-implicit-fallthrough") - ENDIF() - IF (PROFILE EQUAL 1) - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -g -pg") - ENDIF() - IF (CMAKE_BUILD_TYPE STREQUAL Release) - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -g0 -O3") - ELSE() - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -g3 -O0 -fsanitize=address") - ENDIF() -ENDIF() - -IF (NOT CMAKE_BUILD_TYPE STREQUAL Release) - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLS_HPACK_EMIT_TEST_CODE=1") -ENDIF() - -IF (CMAKE_BUILD_TYPE STREQUAL MinSizeRel) - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLS_HPACK_USE_LARGE_TABLES=0") -ENDIF() - -IF (NDEBUG EQUAL 1) - SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DNDEBUG") -ENDIF() - -SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DXXH_HEADER_NAME=\\\"${XXH_HEADER_NAME}\\\"") - -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MY_CMAKE_FLAGS} $ENV{EXTRA_CFLAGS}") - -MESSAGE(STATUS "Compiler flags: ${CMAKE_C_FLAGS}") - -IF (NOT CMAKE_BUILD_TYPE STREQUAL Release) - ENABLE_TESTING() - INCLUDE_DIRECTORIES("test") - ADD_SUBDIRECTORY("test") -ENDIF() - -IF (CMAKE_SYSTEM_NAME STREQUAL Linux) - ADD_SUBDIRECTORY(bin) -ENDIF() diff --git a/external/lsquic/src/lshpack/LICENSE b/external/lsquic/src/lshpack/LICENSE deleted file mode 100644 index 3eb8520..0000000 --- a/external/lsquic/src/lshpack/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2018 - 2023 LiteSpeed Technologies Inc - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/external/lsquic/src/lshpack/README.md b/external/lsquic/src/lshpack/README.md deleted file mode 100644 index 28770c3..0000000 --- a/external/lsquic/src/lshpack/README.md +++ /dev/null @@ -1,33 +0,0 @@ -[![Build Status](https://travis-ci.com/litespeedtech/ls-hpack.svg?branch=master)](https://travis-ci.com/litespeedtech/ls-hpack) -[![Build Status](https://api.cirrus-ci.com/github/litespeedtech/ls-hpack.svg)](https://cirrus-ci.com/github/litespeedtech/ls-hpack) -[![Build status](https://ci.appveyor.com/api/projects/status/6ev71ecmm3j2u9o5?svg=true)](https://ci.appveyor.com/project/litespeedtech/ls-hpack) - -LS-HPACK: LiteSpeed HPACK Library -================================= - -Description ------------ - -LS-HPACK provides functionality to encode and decode HTTP headers using -HPACK compression mechanism specified in RFC 7541. - -Documentation -------------- - -The API is documented in include/lshpack.h. To see usage examples, -see the unit tests. - -Requirements ------------- - -To build LS-HPACK, you need CMake. The library uses XXHASH at runtime. - -Platforms ---------- - -The library has been tested on the following platforms: -- Linux -- FreeBSD -- Windows - -Copyright (c) 2018 - 2020 LiteSpeed Technologies Inc diff --git a/external/lsquic/src/lshpack/bin/CMakeLists.txt b/external/lsquic/src/lshpack/bin/CMakeLists.txt deleted file mode 100644 index 69b7b54..0000000 --- a/external/lsquic/src/lshpack/bin/CMakeLists.txt +++ /dev/null @@ -1,16 +0,0 @@ -add_executable(encode-qif encode-qif.c ../deps/xxhash/xxhash.c) -target_link_libraries(encode-qif PRIVATE ls-hpack) - -add_executable(gen-fast-dec-table gen-fast-dec-table.c) - -add_executable(gen-fast-enc-table gen-fast-enc-table.c) - -add_executable(huff-decode huff-decode.c ../deps/xxhash/xxhash.c) -target_link_libraries(huff-decode PRIVATE ls-hpack) - -add_executable(huff-encode huff-encode.c ../deps/xxhash/xxhash.c) -target_link_libraries(huff-encode PRIVATE ls-hpack) - -add_executable(calc-xxh calc-xxh.c ../deps/xxhash/xxhash.c) - -add_executable(find-xxh find-xxh.c ../deps/xxhash/xxhash.c) diff --git a/external/lsquic/src/lshpack/bin/calc-xxh.c b/external/lsquic/src/lshpack/bin/calc-xxh.c deleted file mode 100644 index 2a238e6..0000000 --- a/external/lsquic/src/lshpack/bin/calc-xxh.c +++ /dev/null @@ -1,69 +0,0 @@ -/* calc-xxh: calculate XXH32 hashes for name and value strings */ - -#include -#include -#include -#include -#include - -#include XXH_HEADER_NAME - -int -main (int argc, char **argv) -{ - uint32_t seed, name_hash, nameval_hash; - size_t name_len, value_len; - const char *name, *value; - XXH32_state_t hash_state; - int mode; - - if (argc != 5) - { - fprintf(stderr, -"Usage: %s mode seed name value\n" -"\n" -" mode is one of:\n" -" 0 Single seed, update\n" -" 1 Use name hash as seed for calculating nameval hash\n" -"\n" -" seed is the initial seed\n" -"\n", argv[0]); - return 0; - } - - mode = atoi(argv[1]); - if (!(mode == 0 || mode == 1)) - { - fprintf(stderr, "mode `%s' is invalid\n", argv[1]); - return 1; - } - - seed = atoi(argv[2]); - name = argv[3]; - value = argv[4]; - name_len = strlen(name); - value_len = strlen(value); - - switch (mode) - { - case 0: - XXH32_reset(&hash_state, seed); - XXH32_update(&hash_state, name, name_len); - name_hash = XXH32_digest(&hash_state); - XXH32_update(&hash_state, value, value_len); - nameval_hash = XXH32_digest(&hash_state); - break; - default: - name_hash = XXH32(name, name_len, seed); - nameval_hash = XXH32(value, value_len, name_hash); - break; - } - - printf( -"In mode %d, name: `%s', value: `%s' hash to:\n" -"name hash 0x%08"PRIX32"\n" -"nameval hash 0x%08"PRIX32"\n" - , mode, name, value, name_hash, nameval_hash); - - return 0; -} diff --git a/external/lsquic/src/lshpack/bin/encode-qif.c b/external/lsquic/src/lshpack/bin/encode-qif.c deleted file mode 100644 index ab6dd1e..0000000 --- a/external/lsquic/src/lshpack/bin/encode-qif.c +++ /dev/null @@ -1,263 +0,0 @@ -/* - * Read QIF and encode it using HPACK. Use for benchmarking. - * - * Based on ls-qpack's interop-encode. - * - * How it works: read in QIF into a list of header set objects and encode - * the list a number of times. - * - * QIF Format: - * https://github.com/quicwg/base-drafts/wiki/QPACK-Offline-Interop - */ - -#define _GNU_SOURCE /* for memmem */ -#include - -#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) -#include -#define bswap_16 bswap16 -#define bswap_32 bswap32 -#define bswap_64 bswap64 -#elif defined(__APPLE__) -#include -#define bswap_16 OSSwapInt16 -#define bswap_32 OSSwapInt32 -#define bswap_64 OSSwapInt64 -#elif defined(WIN32) -#error Not supported on Windows -#else -#include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "lshpack.h" - -static int s_verbose; - -#define TABLE_SIZE 4096 - -static void -usage (const char *name) -{ - fprintf(stderr, -"Usage: %s [options] [-i input] [-o output]\n" -"\n" -"Options:\n" -" -i FILE Input file.\n" -" -o FILE Output file. If not spepcified or set to `-', the output\n" -" is written to stdout.\n" -" -K Discard output: encoded output is discarded.\n" -" -H Do not use the history heuristic.\n" -" -n NUMBER Number of times to iterate over the header set list.\n" -" -t NUMBER Dynamic table size. Defaults to %u.\n" -" -v Verbose: print various messages to stderr.\n" -"\n" -" -h Print this help screen and exit\n" - , name, TABLE_SIZE); -} - - -struct header -{ - const char *name; - const char *val; - size_t name_len; - size_t val_len; -}; - - -#define MAX_HEADERS 32 - -struct header_set -{ - STAILQ_ENTRY(header_set) next; - unsigned n_headers; - struct header headers[MAX_HEADERS]; -}; - - -static inline void -lsxpack_header_set_ptr(lsxpack_header_t *hdr, - const char *name, size_t name_len, - const char *val, size_t val_len) -{ - static char buf[65536]; - memcpy(buf, name, name_len); - memcpy(&buf[name_len], val, val_len); - lsxpack_header_set_offset2(hdr, buf, 0, name_len, name_len, val_len); -} - - -int -main (int argc, char **argv) -{ - FILE *out = stdout; - int opt, qif_fd = -1; - int discard = 0, use_history = 1; - unsigned n_iters = 1, n, i; - unsigned dyn_table_size = TABLE_SIZE; - STAILQ_HEAD(, header_set) header_sets = STAILQ_HEAD_INITIALIZER(header_sets); - struct stat st; - const unsigned char *qif = NULL, *p, *tab, *nl, *nlnl; - unsigned char *s; - struct header *header; - struct header_set *hset; - struct lshpack_enc encoder; - unsigned char buf[0x2000]; - - while (-1 != (opt = getopt(argc, argv, "Hi:o:Kn:t:vh"))) - { - switch (opt) - { - case 'n': - n_iters = atoi(optarg); - break; - case 'i': - qif_fd = open(optarg, O_RDONLY); - if (qif_fd < 0) - { - perror("open"); - exit(EXIT_FAILURE); - } - if (0 != fstat(qif_fd, &st)) - { - perror("fstat"); - exit(EXIT_FAILURE); - } - qif = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, qif_fd, 0); - if (!qif) - { - perror("mmap"); - exit(EXIT_FAILURE); - } - break; - case 'o': - if (0 != strcmp(optarg, "-")) - { - out = fopen(optarg, "wb"); - if (!out) - { - fprintf(stderr, "cannot open `%s' for writing: %s\n", - optarg, strerror(errno)); - exit(EXIT_FAILURE); - } - } - break; - case 'K': - discard = 1; - break; - case 'H': - use_history = 0; - break; - case 't': - dyn_table_size = atoi(optarg); - break; - case 'h': - usage(argv[0]); - exit(EXIT_SUCCESS); - case 'v': - ++s_verbose; - break; - default: - exit(EXIT_FAILURE); - } - } - - if (!qif) - { - fprintf(stderr, "Please specify input QIF file using -i flag\n"); - exit(EXIT_FAILURE); - } - - const unsigned char *const begin = qif; - const unsigned char *const end = begin + st.st_size; - while (qif + 2 < end) - { - nlnl = memmem(qif, end - qif, "\n\n", 2); - if (!nlnl) - nlnl = end; - hset = calloc(1, sizeof(*hset)); - if (!hset) - { - perror("malloc"); - exit(EXIT_FAILURE); - } - STAILQ_INSERT_TAIL(&header_sets, hset, next); - p = qif; - while (p < nlnl) - { - if (hset->n_headers >= MAX_HEADERS) - { - fprintf(stderr, "max headers > 32, off: %u", - (unsigned) (p - begin)); - exit(EXIT_FAILURE); - } - tab = memmem(p, nlnl - p, "\t", 1); - if (!tab) - { - fprintf(stderr, "tab not found, off: %u", - (unsigned) (p - begin)); - exit(EXIT_FAILURE); - } - nl = memmem(tab + 1, nlnl - tab - 1, "\n", 1); - if (!nl) - nl = nlnl; - hset->headers[ hset->n_headers ] = (struct header) { - .name = (const char *) p, - .val = (const char *) tab + 1, - .name_len = tab - p, - .val_len = nl - tab - 1, - }; - ++hset->n_headers; - p = nl + 1; - } - qif = nlnl + 2; - } - - lsxpack_header_t hdr; - for (n = 0; n < n_iters; ++n) - { - if (0 != lshpack_enc_init(&encoder)) - { - perror("lshpack_enc_init"); - exit(EXIT_FAILURE); - } - (void) lshpack_enc_use_hist(&encoder, use_history); - - STAILQ_FOREACH(hset, &header_sets, next) - { - for (i = 0; i < hset->n_headers; ++i) - { - header = &hset->headers[i]; - lsxpack_header_set_ptr(&hdr, header->name, header->name_len, - header->val, header->val_len); - s = lshpack_enc_encode(&encoder, buf, buf + sizeof(buf), &hdr); - if (s <= buf) - { - fprintf(stderr, "cannot encode\n"); - exit(EXIT_FAILURE); - } - if (!discard) - (void) fwrite(buf, 1, s - buf, out); - } - } - - lshpack_enc_set_max_capacity(&encoder, dyn_table_size); - lshpack_enc_cleanup(&encoder); - } - - munmap((void *) begin, st.st_size); - if (qif_fd >= 0) - close(qif_fd); - exit(EXIT_SUCCESS); -} diff --git a/external/lsquic/src/lshpack/bin/find-xxh.c b/external/lsquic/src/lshpack/bin/find-xxh.c deleted file mode 100644 index b716e09..0000000 --- a/external/lsquic/src/lshpack/bin/find-xxh.c +++ /dev/null @@ -1,455 +0,0 @@ -/* find-xxh -- find XXH seed common for ls-hpack and ls-qpack - * - * To speed up decoding/encoding process in a proxy, we need to use the - * same name and nameval XXH hashes in ls-hpack and ls-qpack libraries. - * This program finds an XXH seed common to both and shifts and offsets - * for construction of name and nameval XXH tables in both libraries. - */ - -#include -#include -#include -#include -#include -#include -#include - -#include XXH_HEADER_NAME - -#define NAME_VAL(a, b) sizeof(a) - 1, sizeof(b) - 1, (a), (b) - -struct table_elem -{ - unsigned name_len; - unsigned val_len; - const char *name; - const char *val; -}; - - -static const struct table_elem hpack_table[] = -{ - { NAME_VAL(":authority", "") }, - { NAME_VAL(":method", "GET") }, - { NAME_VAL(":method", "POST") }, - { NAME_VAL(":path", "/") }, - { NAME_VAL(":path", "/index.html") }, - { NAME_VAL(":scheme", "http") }, - { NAME_VAL(":scheme", "https") }, - { NAME_VAL(":status", "200") }, - { NAME_VAL(":status", "204") }, - { NAME_VAL(":status", "206") }, - { NAME_VAL(":status", "304") }, - { NAME_VAL(":status", "400") }, - { NAME_VAL(":status", "404") }, - { NAME_VAL(":status", "500") }, - { NAME_VAL("accept-charset", "") }, - { NAME_VAL("accept-encoding", "gzip, deflate") }, - { NAME_VAL("accept-language", "") }, - { NAME_VAL("accept-ranges", "") }, - { NAME_VAL("accept", "") }, - { NAME_VAL("access-control-allow-origin", "") }, - { NAME_VAL("age", "") }, - { NAME_VAL("allow", "") }, - { NAME_VAL("authorization", "") }, - { NAME_VAL("cache-control", "") }, - { NAME_VAL("content-disposition", "") }, - { NAME_VAL("content-encoding", "") }, - { NAME_VAL("content-language", "") }, - { NAME_VAL("content-length", "") }, - { NAME_VAL("content-location", "") }, - { NAME_VAL("content-range", "") }, - { NAME_VAL("content-type", "") }, - { NAME_VAL("cookie", "") }, - { NAME_VAL("date", "") }, - { NAME_VAL("etag", "") }, - { NAME_VAL("expect", "") }, - { NAME_VAL("expires", "") }, - { NAME_VAL("from", "") }, - { NAME_VAL("host", "") }, - { NAME_VAL("if-match", "") }, - { NAME_VAL("if-modified-since", "") }, - { NAME_VAL("if-none-match", "") }, - { NAME_VAL("if-range", "") }, - { NAME_VAL("if-unmodified-since", "") }, - { NAME_VAL("last-modified", "") }, - { NAME_VAL("link", "") }, - { NAME_VAL("location", "") }, - { NAME_VAL("max-forwards", "") }, - { NAME_VAL("proxy-authenticate", "") }, - { NAME_VAL("proxy-authorization", "") }, - { NAME_VAL("range", "") }, - { NAME_VAL("referer", "") }, - { NAME_VAL("refresh", "") }, - { NAME_VAL("retry-after", "") }, - { NAME_VAL("server", "") }, - { NAME_VAL("set-cookie", "") }, - { NAME_VAL("strict-transport-security", "") }, - { NAME_VAL("transfer-encoding", "") }, - { NAME_VAL("user-agent", "") }, - { NAME_VAL("vary", "") }, - { NAME_VAL("via", "") }, - { NAME_VAL("www-authenticate", "") } -}; -#define HPACK_STATIC_TABLE_SIZE (sizeof(hpack_table) / sizeof(hpack_table[0])) - -static const unsigned hpack_name_indexes[] = { - 0, 1, 3, 5, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, -}; -#define HPACK_NAME_SIZE (sizeof(hpack_name_indexes) / sizeof(hpack_name_indexes[0])) - -/* [draft-ietf-quic-qpack-03] Appendix A */ -static const struct table_elem qpack_table[] = -{ - { NAME_VAL(":authority", "") }, - { NAME_VAL(":path", "/") }, - { NAME_VAL("age", "0") }, - { NAME_VAL("content-disposition", "") }, - { NAME_VAL("content-length", "0") }, - { NAME_VAL("cookie", "") }, - { NAME_VAL("date", "") }, - { NAME_VAL("etag", "") }, - { NAME_VAL("if-modified-since", "") }, - { NAME_VAL("if-none-match", "") }, - { NAME_VAL("last-modified", "") }, - { NAME_VAL("link", "") }, - { NAME_VAL("location", "") }, - { NAME_VAL("referer", "") }, - { NAME_VAL("set-cookie", "") }, - { NAME_VAL(":method", "CONNECT") }, - { NAME_VAL(":method", "DELETE") }, - { NAME_VAL(":method", "GET") }, - { NAME_VAL(":method", "HEAD") }, - { NAME_VAL(":method", "OPTIONS") }, - { NAME_VAL(":method", "POST") }, - { NAME_VAL(":method", "PUT") }, - { NAME_VAL(":scheme", "http") }, - { NAME_VAL(":scheme", "https") }, - { NAME_VAL(":status", "103") }, - { NAME_VAL(":status", "200") }, - { NAME_VAL(":status", "304") }, - { NAME_VAL(":status", "404") }, - { NAME_VAL(":status", "503") }, - { NAME_VAL("accept", "*/*") }, - { NAME_VAL("accept", "application/dns-message") }, - { NAME_VAL("accept-encoding", "gzip, deflate, br") }, - { NAME_VAL("accept-ranges", "bytes") }, - { NAME_VAL("access-control-allow-headers", "cache-control") }, - { NAME_VAL("access-control-allow-headers", "content-type") }, - { NAME_VAL("access-control-allow-origin", "*") }, - { NAME_VAL("cache-control", "max-age=0") }, - { NAME_VAL("cache-control", "max-age=2592000") }, - { NAME_VAL("cache-control", "max-age=604800") }, - { NAME_VAL("cache-control", "no-cache") }, - { NAME_VAL("cache-control", "no-store") }, - { NAME_VAL("cache-control", "public, max-age=31536000") }, - { NAME_VAL("content-encoding", "br") }, - { NAME_VAL("content-encoding", "gzip") }, - { NAME_VAL("content-type", "application/dns-message") }, - { NAME_VAL("content-type", "application/javascript") }, - { NAME_VAL("content-type", "application/json") }, - { NAME_VAL("content-type", "application/x-www-form-urlencoded") }, - { NAME_VAL("content-type", "image/gif") }, - { NAME_VAL("content-type", "image/jpeg") }, - { NAME_VAL("content-type", "image/png") }, - { NAME_VAL("content-type", "text/css") }, - { NAME_VAL("content-type", "text/html; charset=utf-8") }, - { NAME_VAL("content-type", "text/plain") }, - { NAME_VAL("content-type", "text/plain;charset=utf-8") }, - { NAME_VAL("range", "bytes=0-") }, - { NAME_VAL("strict-transport-security", "max-age=31536000") }, - { NAME_VAL("strict-transport-security", "max-age=31536000; includesubdomains") }, - { NAME_VAL("strict-transport-security", "max-age=31536000; includesubdomains; preload") }, - { NAME_VAL("vary", "accept-encoding") }, - { NAME_VAL("vary", "origin") }, - { NAME_VAL("x-content-type-options", "nosniff") }, - { NAME_VAL("x-xss-protection", "1; mode=block") }, - { NAME_VAL(":status", "100") }, - { NAME_VAL(":status", "204") }, - { NAME_VAL(":status", "206") }, - { NAME_VAL(":status", "302") }, - { NAME_VAL(":status", "400") }, - { NAME_VAL(":status", "403") }, - { NAME_VAL(":status", "421") }, - { NAME_VAL(":status", "425") }, - { NAME_VAL(":status", "500") }, - { NAME_VAL("accept-language", "") }, - { NAME_VAL("access-control-allow-credentials", "FALSE") }, - { NAME_VAL("access-control-allow-credentials", "TRUE") }, - { NAME_VAL("access-control-allow-headers", "*") }, - { NAME_VAL("access-control-allow-methods", "get") }, - { NAME_VAL("access-control-allow-methods", "get, post, options") }, - { NAME_VAL("access-control-allow-methods", "options") }, - { NAME_VAL("access-control-expose-headers", "content-length") }, - { NAME_VAL("access-control-request-headers", "content-type") }, - { NAME_VAL("access-control-request-method", "get") }, - { NAME_VAL("access-control-request-method", "post") }, - { NAME_VAL("alt-svc", "clear") }, - { NAME_VAL("authorization", "") }, - { NAME_VAL("content-security-policy", "script-src 'none'; object-src 'none'; base-uri 'none'") }, - { NAME_VAL("early-data", "1") }, - { NAME_VAL("expect-ct", "") }, - { NAME_VAL("forwarded", "") }, - { NAME_VAL("if-range", "") }, - { NAME_VAL("origin", "") }, - { NAME_VAL("purpose", "prefetch") }, - { NAME_VAL("server", "") }, - { NAME_VAL("timing-allow-origin", "*") }, - { NAME_VAL("upgrade-insecure-requests", "1") }, - { NAME_VAL("user-agent", "") }, - { NAME_VAL("x-forwarded-for", "") }, - { NAME_VAL("x-frame-options", "deny") }, - { NAME_VAL("x-frame-options", "sameorigin") }, -}; -#define QPACK_STATIC_TABLE_SIZE (sizeof(qpack_table) / sizeof(qpack_table[0])) - -/* This is calculated at runtime */ -static unsigned qpack_name_indexes[QPACK_STATIC_TABLE_SIZE]; -static unsigned n_qpack_name_indexes; - -/* QPACK static table has an interesting property that headers names are - * not all placed in contiguous sequences. For example, :status appears - * in two places in the table. - */ -static void -calculate_qpack_name_indexes (void) -{ - unsigned i, n; - - qpack_name_indexes[0] = 0; - n_qpack_name_indexes = 1; - for (n = 1; n < QPACK_STATIC_TABLE_SIZE; ++n) - { - for (i = 0; i < n - && !(qpack_table[i].name_len == qpack_table[n].name_len - && 0 == memcmp(qpack_table[i].name, - qpack_table[n].name, qpack_table[n].name_len)); ++i) - ; - if (i == n) - qpack_name_indexes[n_qpack_name_indexes++] = n; - } -} - - -/* Need to strike some balance here. A small start width will result in - * potentially long search time and -- more importantly -- in a hpack_table that - * is very small, which may require lookup code to perform more comparisons. - * On the other hand, a large width will result in a hpack_table that may be - * slower to use. - */ -static unsigned MIN_WIDTH = 9; -static unsigned MAX_WIDTH = 9; - -static unsigned MIN_SHIFT = 0; -static unsigned MAX_SHIFT = 31; - -/* Return true if acceptable shift and width were found, false otherwise */ -static int -find_shift_and_width (const uint32_t *hashes, const unsigned n_hashes, - unsigned *shift_p, unsigned *width_p) -{ - unsigned shift, width, hash, i, j; - - for (width = MIN_WIDTH; width <= MAX_WIDTH; ++width) - { - for (shift = MIN_SHIFT; shift <= MAX_SHIFT - && shift < 32 - width; ++shift) - { - for (i = 1; i < n_hashes; ++i) - { - hash = hashes[i] & (((1u << width) - 1) << shift); - for (j = 0; j < i; ++j) - if ((hashes[j] & (((1u << width) - 1) << shift)) == hash) - goto check; - } - check: if (i >= n_hashes) - { - *shift_p = shift; - *width_p = width; - return 1; - } - } - } - - return 0; -} - - -int -main (int argc, char **argv) -{ - uint32_t hpack_name_hashes[HPACK_NAME_SIZE]; - uint32_t hpack_nameval_hashes[HPACK_STATIC_TABLE_SIZE]; - uint32_t qpack_nameval_hashes[QPACK_STATIC_TABLE_SIZE]; - uint32_t qpack_name_hashes[QPACK_STATIC_TABLE_SIZE]; - uint32_t seed, init_seed = 0; - unsigned n, idx; - unsigned hpack_nameval_shift, hpack_name_width, hpack_nameval_width, - hpack_name_shift; - unsigned qpack_nameval_shift, qpack_name_width, qpack_nameval_width, - qpack_name_shift; - int opt, dont_stop = 0, print_tables = 0; - - while (-1 != (opt = getopt(argc, argv, "i:w:W:s:S:phN"))) - { - switch (opt) - { - case 'i': - init_seed = atoi(optarg); - break; - case 'w': - MIN_WIDTH = atoi(optarg); - break; - case 'W': - MAX_WIDTH = atoi(optarg); - break; - case 's': - MIN_SHIFT = atoi(optarg); - break; - case 'S': - MAX_SHIFT = atoi(optarg); - break; - case 'p': - print_tables = 1; - break; - case 'N': - dont_stop = 1; - break; - case 'h': printf( -"Usage: %s [options]\n" -"\n" -" -i seed Initial seed (defaults to 0)\n" -" -w width Minimum width (defaults to %u)\n" -" -W width Maximum width (defaults to %u)\n" -" -s shift Minimum shift (defaults to %u)\n" -" -S shift Maximum shift (defaults to %u)\n" -" -N Don't stop after finding a match, keep searching\n" -" -p Print resulting HPACK and QPACK tables\n" -" -h Print this help screen and exit\n" - , argv[0], MIN_WIDTH, MAX_WIDTH, MIN_SHIFT, MAX_SHIFT); - return 0; - } - } - - seed = init_seed; - calculate_qpack_name_indexes(); - - again: - for (n = 0; n < HPACK_NAME_SIZE; ++n) - { - idx = hpack_name_indexes[n]; - hpack_name_hashes[n] = XXH32(hpack_table[idx].name, - hpack_table[idx].name_len, seed); - } - if (!find_shift_and_width(hpack_name_hashes, HPACK_NAME_SIZE, - &hpack_name_shift, &hpack_name_width)) - goto incr_seed; - - for (n = 0; n < HPACK_STATIC_TABLE_SIZE; ++n) - { - hpack_nameval_hashes[n] = XXH32(hpack_table[n].name, - hpack_table[n].name_len, seed); - hpack_nameval_hashes[n] = XXH32(hpack_table[n].val, - hpack_table[n].val_len, hpack_nameval_hashes[n]); - } - if (!find_shift_and_width(hpack_nameval_hashes, HPACK_STATIC_TABLE_SIZE, - &hpack_nameval_shift, &hpack_nameval_width)) - goto incr_seed; - - for (n = 0; n < n_qpack_name_indexes; ++n) - { - idx = qpack_name_indexes[n]; - qpack_name_hashes[n] = XXH32(qpack_table[idx].name, - qpack_table[idx].name_len, seed); - } - if (!find_shift_and_width(qpack_name_hashes, n_qpack_name_indexes, - &qpack_name_shift, &qpack_name_width)) - goto incr_seed; - - for (n = 0; n < QPACK_STATIC_TABLE_SIZE; ++n) - { - qpack_nameval_hashes[n] = XXH32(qpack_table[n].name, - qpack_table[n].name_len, seed); - qpack_nameval_hashes[n] = XXH32(qpack_table[n].val, - qpack_table[n].val_len, qpack_nameval_hashes[n]); - } - if (!find_shift_and_width(qpack_nameval_hashes, QPACK_STATIC_TABLE_SIZE, - &qpack_nameval_shift, &qpack_nameval_width)) - goto incr_seed; - - printf("unique set: seed %u\n" - " hpack:\n" - " name shift: %u; width: %u\n" - " nameval shift: %u; width: %u\n" - " qpack:\n" - " name shift: %u; width: %u\n" - " nameval shift: %u; width: %u\n" - , seed - , hpack_name_shift, hpack_name_width - , hpack_nameval_shift, hpack_nameval_width - , qpack_name_shift, qpack_name_width - , qpack_nameval_shift, qpack_nameval_width - ); - - if (print_tables) - { - printf("#define XXH_SEED %"PRIu32"\n", seed); - - printf("#define XXH_HPACK_NAME_WIDTH %"PRIu32"\n", hpack_name_width); - printf("#define XXH_HPACK_NAME_SHIFT %"PRIu32"\n", hpack_name_shift); - printf("static const unsigned char hpack_name2id[ 1 << XXH_HPACK_NAME_WIDTH ] =\n{\n"); - for (n = 0; n < HPACK_NAME_SIZE; ++n) - printf("[%u] = %u, ", (hpack_name_hashes[n] >> hpack_name_shift) - & ((1 << hpack_name_width) - 1), hpack_name_indexes[n] + 1); - printf("\n};\n"); - - printf("#define XXH_HPACK_NAMEVAL_WIDTH %"PRIu32"\n", hpack_nameval_width); - printf("#define XXH_HPACK_NAMEVAL_SHIFT %"PRIu32"\n", hpack_nameval_shift); - printf("static const unsigned char hpack_nameval2id[ 1 << XXH_HPACK_NAMEVAL_WIDTH ] =\n{\n"); - for (n = 0; n < HPACK_STATIC_TABLE_SIZE; ++n) - printf("[%u] = %u, ", (hpack_nameval_hashes[n] >> hpack_nameval_shift) - & ((1 << hpack_nameval_width) - 1), n + 1); - printf("\n};\n"); - - printf("#define XXH_QPACK_NAME_WIDTH %"PRIu32"\n", qpack_name_width); - printf("#define XXH_QPACK_NAME_SHIFT %"PRIu32"\n", qpack_name_shift); - printf("static const unsigned char qpack_name2id[ 1 << XXH_QPACK_NAME_WIDTH ] =\n{\n"); - for (n = 0; n < n_qpack_name_indexes; ++n) - printf("[%u] = %u, ", (qpack_name_hashes[n] >> qpack_name_shift) - & ((1 << qpack_name_width) - 1), qpack_name_indexes[n] + 1); - printf("\n};\n"); - - printf("#define XXH_QPACK_NAMEVAL_WIDTH %"PRIu32"\n", qpack_nameval_width); - printf("#define XXH_QPACK_NAMEVAL_SHIFT %"PRIu32"\n", qpack_nameval_shift); - printf("static const unsigned char qpack_nameval2id[ 1 << XXH_QPACK_NAMEVAL_WIDTH ] =\n{\n"); - for (n = 0; n < QPACK_STATIC_TABLE_SIZE; ++n) - printf("[%u] = %u, ", (qpack_nameval_hashes[n] >> qpack_nameval_shift) - & ((1 << qpack_nameval_width) - 1), n + 1); - printf("\n};\n"); - } - - if (dont_stop) - { - fflush(stdout); - goto incr_seed; - } - -#if 0 /* TODO */ - for (i = 0; i < TABLE_SIZE; ++i) -#if NAMEVAL_SEARCH - printf("[%u] = %u,\n", (hashes[i] >> min_shift) & ((1 << min_width) - 1), nameval_indexes[i] + 1); -#else - printf("[%u] = %u,\n", (hashes[i] >> min_shift) & ((1 << min_width) - 1), name_indexes[i] + 1); -#endif -#endif - - return 0; - - incr_seed: - ++seed; - if ((seed - init_seed) % 100000 == 0) - fprintf(stderr, ".... seed: %u\n", seed); - goto again; -} diff --git a/external/lsquic/src/lshpack/bin/gen-fast-dec-table.c b/external/lsquic/src/lshpack/bin/gen-fast-dec-table.c deleted file mode 100644 index 9511d26..0000000 --- a/external/lsquic/src/lshpack/bin/gen-fast-dec-table.c +++ /dev/null @@ -1,175 +0,0 @@ -/* Generate table for fast Huffman decoding */ - -#include -#include -#include -#include - - -struct el -{ - uint16_t code; - unsigned bits; - uint8_t out; -}; - -static const struct el els[] = -{ - { 0x0, 5, 48, }, - { 0x1, 5, 49, }, - { 0x2, 5, 50, }, - { 0x3, 5, 97, }, - { 0x4, 5, 99, }, - { 0x5, 5, 101, }, - { 0x6, 5, 105, }, - { 0x7, 5, 111, }, - { 0x8, 5, 115, }, - { 0x9, 5, 116, }, - { 0x14, 6, 32, }, - { 0x15, 6, 37, }, - { 0x16, 6, 45, }, - { 0x17, 6, 46, }, - { 0x18, 6, 47, }, - { 0x19, 6, 51, }, - { 0x1a, 6, 52, }, - { 0x1b, 6, 53, }, - { 0x1c, 6, 54, }, - { 0x1d, 6, 55, }, - { 0x1e, 6, 56, }, - { 0x1f, 6, 57, }, - { 0x20, 6, 61, }, - { 0x21, 6, 65, }, - { 0x22, 6, 95, }, - { 0x23, 6, 98, }, - { 0x24, 6, 100, }, - { 0x25, 6, 102, }, - { 0x26, 6, 103, }, - { 0x27, 6, 104, }, - { 0x28, 6, 108, }, - { 0x29, 6, 109, }, - { 0x2a, 6, 110, }, - { 0x2b, 6, 112, }, - { 0x2c, 6, 114, }, - { 0x2d, 6, 117, }, - { 0x5c, 7, 58, }, - { 0x5d, 7, 66, }, - { 0x5e, 7, 67, }, - { 0x5f, 7, 68, }, - { 0x60, 7, 69, }, - { 0x61, 7, 70, }, - { 0x62, 7, 71, }, - { 0x63, 7, 72, }, - { 0x64, 7, 73, }, - { 0x65, 7, 74, }, - { 0x66, 7, 75, }, - { 0x67, 7, 76, }, - { 0x68, 7, 77, }, - { 0x69, 7, 78, }, - { 0x6a, 7, 79, }, - { 0x6b, 7, 80, }, - { 0x6c, 7, 81, }, - { 0x6d, 7, 82, }, - { 0x6e, 7, 83, }, - { 0x6f, 7, 84, }, - { 0x70, 7, 85, }, - { 0x71, 7, 86, }, - { 0x72, 7, 87, }, - { 0x73, 7, 89, }, - { 0x74, 7, 106, }, - { 0x75, 7, 107, }, - { 0x76, 7, 113, }, - { 0x77, 7, 118, }, - { 0x78, 7, 119, }, - { 0x79, 7, 120, }, - { 0x7a, 7, 121, }, - { 0x7b, 7, 122, }, - { 0xf8, 8, 38, }, - { 0xf9, 8, 42, }, - { 0xfa, 8, 44, }, - { 0xfb, 8, 59, }, - { 0xfc, 8, 88, }, - { 0xfd, 8, 90, }, - { 0x3f8, 10, 33, }, - { 0x3f9, 10, 34, }, - { 0x3fa, 10, 40, }, - { 0x3fb, 10, 41, }, - { 0x3fc, 10, 63, }, - { 0x7fa, 11, 39, }, - { 0x7fb, 11, 43, }, - { 0x7fc, 11, 124, }, - { 0xffa, 12, 35, }, - { 0xffb, 12, 62, }, - { 0x1ff8, 13, 0, }, - { 0x1ff9, 13, 36, }, - { 0x1ffa, 13, 64, }, - { 0x1ffb, 13, 91, }, - { 0x1ffc, 13, 93, }, - { 0x1ffd, 13, 126, }, - { 0x3ffc, 14, 94, }, - { 0x3ffd, 14, 125, }, - { 0x7ffc, 15, 60, }, - { 0x7ffd, 15, 96, }, - { 0x7ffe, 15, 123, }, -}; - - -static void -generate_entry (uint16_t idx) -{ - unsigned int bits_left, n_outs; - const struct el *el; - uint8_t outs[3]; - - bits_left = 16; - n_outs = 0; - do - { - for (el = els; el < els + sizeof(els) - / sizeof(els[0]) && el->bits <= bits_left; ++el) - if (el->code == (uint32_t) ((idx >> (bits_left - el->bits)) & ((1 << el->bits) - 1))) - break; - if (el >= els + sizeof(els) / sizeof(els[0]) || el->bits > bits_left) - break; - outs[n_outs++] = el->out; - bits_left -= el->bits; - } - while (bits_left >= 5 /* shortest code */); - - printf("/* %"PRIu16" */ ", idx); - if (n_outs) - { - printf("{(%u<<2)|%u,{", 16 - bits_left, n_outs); - switch (n_outs) - { - case 3: - printf("%u,%u,%u", outs[0], outs[1], outs[2]); - break; - case 2: - printf("%u,%u,0", outs[0], outs[1]); - break; - case 1: - printf("%u,0,0", outs[0]); - break; - default: exit(EXIT_FAILURE); - } - printf("}}"); - } - else - printf("{0,0,0,0,}"); - printf(",\n"); -} - - -int -main (void) -{ - unsigned idx; - - printf("static const struct hdec { uint8_t lens; uint8_t out[3]; } " - "hdecs[] =\n{\n"); - for (idx = 0; idx <= UINT16_MAX; ++idx) - generate_entry(idx); - printf("};\n"); - - return 0; -} diff --git a/external/lsquic/src/lshpack/bin/gen-fast-enc-table.c b/external/lsquic/src/lshpack/bin/gen-fast-enc-table.c deleted file mode 100644 index 6b5d745..0000000 --- a/external/lsquic/src/lshpack/bin/gen-fast-enc-table.c +++ /dev/null @@ -1,315 +0,0 @@ -/* Generate table for fast Huffman encoding */ - -#include -#include -#include -#include - -struct encode_el -{ - uint32_t code; - int bits; -}; - -static const struct encode_el encode_table[257] = -{ - { 0x1ff8, 13}, // ( 0) - { 0x7fffd8, 23}, // ( 1) - { 0xfffffe2, 28}, // ( 2) - { 0xfffffe3, 28}, // ( 3) - { 0xfffffe4, 28}, // ( 4) - { 0xfffffe5, 28}, // ( 5) - { 0xfffffe6, 28}, // ( 6) - { 0xfffffe7, 28}, // ( 7) - { 0xfffffe8, 28}, // ( 8) - { 0xffffea, 24}, // ( 9) - { 0x3ffffffc, 30}, // ( 10) - { 0xfffffe9, 28}, // ( 11) - { 0xfffffea, 28}, // ( 12) - { 0x3ffffffd, 30}, // ( 13) - { 0xfffffeb, 28}, // ( 14) - { 0xfffffec, 28}, // ( 15) - { 0xfffffed, 28}, // ( 16) - { 0xfffffee, 28}, // ( 17) - { 0xfffffef, 28}, // ( 18) - { 0xffffff0, 28}, // ( 19) - { 0xffffff1, 28}, // ( 20) - { 0xffffff2, 28}, // ( 21) - { 0x3ffffffe, 30}, // ( 22) - { 0xffffff3, 28}, // ( 23) - { 0xffffff4, 28}, // ( 24) - { 0xffffff5, 28}, // ( 25) - { 0xffffff6, 28}, // ( 26) - { 0xffffff7, 28}, // ( 27) - { 0xffffff8, 28}, // ( 28) - { 0xffffff9, 28}, // ( 29) - { 0xffffffa, 28}, // ( 30) - { 0xffffffb, 28}, // ( 31) - { 0x14, 6}, // ' ' ( 32) - { 0x3f8, 10}, // '!' ( 33) - { 0x3f9, 10}, // '"' ( 34) - { 0xffa, 12}, // '#' ( 35) - { 0x1ff9, 13}, // '$' ( 36) - { 0x15, 6}, // '%' ( 37) - { 0xf8, 8}, // '&' ( 38) - { 0x7fa, 11}, // ''' ( 39) - { 0x3fa, 10}, // '(' ( 40) - { 0x3fb, 10}, // ')' ( 41) - { 0xf9, 8}, // '*' ( 42) - { 0x7fb, 11}, // '+' ( 43) - { 0xfa, 8}, // ',' ( 44) - { 0x16, 6}, // '-' ( 45) - { 0x17, 6}, // '.' ( 46) - { 0x18, 6}, // '/' ( 47) - { 0x0, 5}, // '0' ( 48) - { 0x1, 5}, // '1' ( 49) - { 0x2, 5}, // '2' ( 50) - { 0x19, 6}, // '3' ( 51) - { 0x1a, 6}, // '4' ( 52) - { 0x1b, 6}, // '5' ( 53) - { 0x1c, 6}, // '6' ( 54) - { 0x1d, 6}, // '7' ( 55) - { 0x1e, 6}, // '8' ( 56) - { 0x1f, 6}, // '9' ( 57) - { 0x5c, 7}, // ':' ( 58) - { 0xfb, 8}, // ';' ( 59) - { 0x7ffc, 15}, // '<' ( 60) - { 0x20, 6}, // '=' ( 61) - { 0xffb, 12}, // '>' ( 62) - { 0x3fc, 10}, // '?' ( 63) - { 0x1ffa, 13}, // '@' ( 64) - { 0x21, 6}, // 'A' ( 65) - { 0x5d, 7}, // 'B' ( 66) - { 0x5e, 7}, // 'C' ( 67) - { 0x5f, 7}, // 'D' ( 68) - { 0x60, 7}, // 'E' ( 69) - { 0x61, 7}, // 'F' ( 70) - { 0x62, 7}, // 'G' ( 71) - { 0x63, 7}, // 'H' ( 72) - { 0x64, 7}, // 'I' ( 73) - { 0x65, 7}, // 'J' ( 74) - { 0x66, 7}, // 'K' ( 75) - { 0x67, 7}, // 'L' ( 76) - { 0x68, 7}, // 'M' ( 77) - { 0x69, 7}, // 'N' ( 78) - { 0x6a, 7}, // 'O' ( 79) - { 0x6b, 7}, // 'P' ( 80) - { 0x6c, 7}, // 'Q' ( 81) - { 0x6d, 7}, // 'R' ( 82) - { 0x6e, 7}, // 'S' ( 83) - { 0x6f, 7}, // 'T' ( 84) - { 0x70, 7}, // 'U' ( 85) - { 0x71, 7}, // 'V' ( 86) - { 0x72, 7}, // 'W' ( 87) - { 0xfc, 8}, // 'X' ( 88) - { 0x73, 7}, // 'Y' ( 89) - { 0xfd, 8}, // 'Z' ( 90) - { 0x1ffb, 13}, // '[' ( 91) - { 0x7fff0, 19}, // '\' ( 92) - { 0x1ffc, 13}, // ']' ( 93) - { 0x3ffc, 14}, // '^' ( 94) - { 0x22, 6}, // '_' ( 95) - { 0x7ffd, 15}, // '`' ( 96) - { 0x3, 5}, // 'a' ( 97) - { 0x23, 6}, // 'b' ( 98) - { 0x4, 5}, // 'c' ( 99) - { 0x24, 6}, // 'd' (100) - { 0x5, 5}, // 'e' (101) - { 0x25, 6}, // 'f' (102) - { 0x26, 6}, // 'g' (103) - { 0x27, 6}, // 'h' (104) - { 0x6, 5}, // 'i' (105) - { 0x74, 7}, // 'j' (106) - { 0x75, 7}, // 'k' (107) - { 0x28, 6}, // 'l' (108) - { 0x29, 6}, // 'm' (109) - { 0x2a, 6}, // 'n' (110) - { 0x7, 5}, // 'o' (111) - { 0x2b, 6}, // 'p' (112) - { 0x76, 7}, // 'q' (113) - { 0x2c, 6}, // 'r' (114) - { 0x8, 5}, // 's' (115) - { 0x9, 5}, // 't' (116) - { 0x2d, 6}, // 'u' (117) - { 0x77, 7}, // 'v' (118) - { 0x78, 7}, // 'w' (119) - { 0x79, 7}, // 'x' (120) - { 0x7a, 7}, // 'y' (121) - { 0x7b, 7}, // 'z' (122) - { 0x7ffe, 15}, // '{' (123) - { 0x7fc, 11}, // '|' (124) - { 0x3ffd, 14}, // '}' (125) - { 0x1ffd, 13}, // '~' (126) - { 0xffffffc, 28}, // (127) - { 0xfffe6, 20}, // (128) - { 0x3fffd2, 22}, // (129) - { 0xfffe7, 20}, // (130) - { 0xfffe8, 20}, // (131) - { 0x3fffd3, 22}, // (132) - { 0x3fffd4, 22}, // (133) - { 0x3fffd5, 22}, // (134) - { 0x7fffd9, 23}, // (135) - { 0x3fffd6, 22}, // (136) - { 0x7fffda, 23}, // (137) - { 0x7fffdb, 23}, // (138) - { 0x7fffdc, 23}, // (139) - { 0x7fffdd, 23}, // (140) - { 0x7fffde, 23}, // (141) - { 0xffffeb, 24}, // (142) - { 0x7fffdf, 23}, // (143) - { 0xffffec, 24}, // (144) - { 0xffffed, 24}, // (145) - { 0x3fffd7, 22}, // (146) - { 0x7fffe0, 23}, // (147) - { 0xffffee, 24}, // (148) - { 0x7fffe1, 23}, // (149) - { 0x7fffe2, 23}, // (150) - { 0x7fffe3, 23}, // (151) - { 0x7fffe4, 23}, // (152) - { 0x1fffdc, 21}, // (153) - { 0x3fffd8, 22}, // (154) - { 0x7fffe5, 23}, // (155) - { 0x3fffd9, 22}, // (156) - { 0x7fffe6, 23}, // (157) - { 0x7fffe7, 23}, // (158) - { 0xffffef, 24}, // (159) - { 0x3fffda, 22}, // (160) - { 0x1fffdd, 21}, // (161) - { 0xfffe9, 20}, // (162) - { 0x3fffdb, 22}, // (163) - { 0x3fffdc, 22}, // (164) - { 0x7fffe8, 23}, // (165) - { 0x7fffe9, 23}, // (166) - { 0x1fffde, 21}, // (167) - { 0x7fffea, 23}, // (168) - { 0x3fffdd, 22}, // (169) - { 0x3fffde, 22}, // (170) - { 0xfffff0, 24}, // (171) - { 0x1fffdf, 21}, // (172) - { 0x3fffdf, 22}, // (173) - { 0x7fffeb, 23}, // (174) - { 0x7fffec, 23}, // (175) - { 0x1fffe0, 21}, // (176) - { 0x1fffe1, 21}, // (177) - { 0x3fffe0, 22}, // (178) - { 0x1fffe2, 21}, // (179) - { 0x7fffed, 23}, // (180) - { 0x3fffe1, 22}, // (181) - { 0x7fffee, 23}, // (182) - { 0x7fffef, 23}, // (183) - { 0xfffea, 20}, // (184) - { 0x3fffe2, 22}, // (185) - { 0x3fffe3, 22}, // (186) - { 0x3fffe4, 22}, // (187) - { 0x7ffff0, 23}, // (188) - { 0x3fffe5, 22}, // (189) - { 0x3fffe6, 22}, // (190) - { 0x7ffff1, 23}, // (191) - { 0x3ffffe0, 26}, // (192) - { 0x3ffffe1, 26}, // (193) - { 0xfffeb, 20}, // (194) - { 0x7fff1, 19}, // (195) - { 0x3fffe7, 22}, // (196) - { 0x7ffff2, 23}, // (197) - { 0x3fffe8, 22}, // (198) - { 0x1ffffec, 25}, // (199) - { 0x3ffffe2, 26}, // (200) - { 0x3ffffe3, 26}, // (201) - { 0x3ffffe4, 26}, // (202) - { 0x7ffffde, 27}, // (203) - { 0x7ffffdf, 27}, // (204) - { 0x3ffffe5, 26}, // (205) - { 0xfffff1, 24}, // (206) - { 0x1ffffed, 25}, // (207) - { 0x7fff2, 19}, // (208) - { 0x1fffe3, 21}, // (209) - { 0x3ffffe6, 26}, // (210) - { 0x7ffffe0, 27}, // (211) - { 0x7ffffe1, 27}, // (212) - { 0x3ffffe7, 26}, // (213) - { 0x7ffffe2, 27}, // (214) - { 0xfffff2, 24}, // (215) - { 0x1fffe4, 21}, // (216) - { 0x1fffe5, 21}, // (217) - { 0x3ffffe8, 26}, // (218) - { 0x3ffffe9, 26}, // (219) - { 0xffffffd, 28}, // (220) - { 0x7ffffe3, 27}, // (221) - { 0x7ffffe4, 27}, // (222) - { 0x7ffffe5, 27}, // (223) - { 0xfffec, 20}, // (224) - { 0xfffff3, 24}, // (225) - { 0xfffed, 20}, // (226) - { 0x1fffe6, 21}, // (227) - { 0x3fffe9, 22}, // (228) - { 0x1fffe7, 21}, // (229) - { 0x1fffe8, 21}, // (230) - { 0x7ffff3, 23}, // (231) - { 0x3fffea, 22}, // (232) - { 0x3fffeb, 22}, // (233) - { 0x1ffffee, 25}, // (234) - { 0x1ffffef, 25}, // (235) - { 0xfffff4, 24}, // (236) - { 0xfffff5, 24}, // (237) - { 0x3ffffea, 26}, // (238) - { 0x7ffff4, 23}, // (239) - { 0x3ffffeb, 26}, // (240) - { 0x7ffffe6, 27}, // (241) - { 0x3ffffec, 26}, // (242) - { 0x3ffffed, 26}, // (243) - { 0x7ffffe7, 27}, // (244) - { 0x7ffffe8, 27}, // (245) - { 0x7ffffe9, 27}, // (246) - { 0x7ffffea, 27}, // (247) - { 0x7ffffeb, 27}, // (248) - { 0xffffffe, 28}, // (249) - { 0x7ffffec, 27}, // (250) - { 0x7ffffed, 27}, // (251) - { 0x7ffffee, 27}, // (252) - { 0x7ffffef, 27}, // (253) - { 0x7fffff0, 27}, // (254) - { 0x3ffffee, 26}, // (255) - { 0x3fffffff, 30} // EOS (256) -}; - - -static void -generate_entry (uint16_t idx) -{ - uint8_t i, j; - - j = idx >> 8; - i = idx; - - if (encode_table[i].bits + encode_table[j].bits <= 32) - printf(" [I(%hhu,%hhu)] = {%u,0x%X},\n", - i, j, - encode_table[i].bits + encode_table[j].bits, - (encode_table[i].code << encode_table[j].bits) - | encode_table[j].code); - else - printf(" [I(%hhu,%hhu)] = {64,0},\n", i, j); -} - - -int -main (void) -{ - unsigned idx; - - printf( - "#if __BYTE_ORDER == __LITTLE_ENDIAN\n" - "#define I(i,j) ((j<<8)|i)\n" - "#else\n" - "#define I(i,j) ((i<<8)|j)\n" - "#endif\n" - ); - printf("static const struct henc { unsigned lens; uint32_t code; } " - "hencs[] =\n{\n"); - for (idx = 0; idx <= UINT16_MAX; ++idx) - generate_entry(idx); - printf("};\n"); - printf("#undef I\n"); - - return 0; -} diff --git a/external/lsquic/src/lshpack/bin/huff-decode.c b/external/lsquic/src/lshpack/bin/huff-decode.c deleted file mode 100644 index a9414dd..0000000 --- a/external/lsquic/src/lshpack/bin/huff-decode.c +++ /dev/null @@ -1,99 +0,0 @@ -/* Decode Huffman string -- use for benchmarking - * - * Usage: huff-decode $file $count $mode - * - * $mode is either "fast" or "slow" - */ - -#include -#include -#include - -#ifndef LS_HPACK_USE_LARGE_TABLES -#define LS_HPACK_USE_LARGE_TABLES 1 -#endif - -#if LS_HPACK_USE_LARGE_TABLES -int -lshpack_dec_huff_decode_full (const unsigned char *src, int src_len, - unsigned char *dst, int dst_len); -#endif - -int -lshpack_dec_huff_decode (const unsigned char *src, int src_len, - unsigned char *dst, int dst_len); - -int -main (int argc, char **argv) -{ - size_t in_sz; - int count, i, rv; - FILE *in; - int (*decode)(const unsigned char *, int, unsigned char *, int); - unsigned char in_buf[0x1000]; - unsigned char out_buf[0x4000]; - - if (argc != 4) - { - fprintf(stderr, "Usage: %s $file $count $mode\n", argv[0]); - exit(EXIT_FAILURE); - } - - if (strcasecmp(argv[3], "slow") == 0) -#if LS_HPACK_USE_LARGE_TABLES - decode = lshpack_dec_huff_decode_full; -#else - decode = lshpack_dec_huff_decode; -#endif - else if (strcasecmp(argv[3], "fast") == 0) -#if LS_HPACK_USE_LARGE_TABLES - decode = lshpack_dec_huff_decode; -#else - { - fprintf(stderr, "support for fast decoder is compiled out\n"); - exit(EXIT_FAILURE); - } -#endif - else - { - fprintf(stderr, "Mode `%s' is invalid. Specify either `slow' or " - "`fast'.\n", argv[3]); - exit(EXIT_FAILURE); - } - - in = fopen(argv[1], "rb"); - if (!in) - { - perror("fopen"); - exit(EXIT_FAILURE); - } - - in_sz = fread(in_buf, 1, sizeof(in_buf), in); - if (in_sz == 0 || in_sz == sizeof(in_buf)) - { - fprintf(stderr, "input file is either too short or too long\n"); - exit(EXIT_FAILURE); - } - (void) fclose(in); - - count = atoi(argv[2]); - if (!count) - count = 1; - - /* TODO: validate against slow if fast is selected */ - - rv = decode(in_buf, in_sz, out_buf, sizeof(out_buf)); - if (rv < 0) - { - fprintf(stderr, "decode-%s returned %d\n", argv[3], rv); - exit(EXIT_FAILURE); - } - - for (i = 0; i < count; ++i) - { - rv = decode(in_buf, in_sz, out_buf, sizeof(out_buf)); - (void) rv; - } - - exit(EXIT_SUCCESS); -} diff --git a/external/lsquic/src/lshpack/bin/huff-encode.c b/external/lsquic/src/lshpack/bin/huff-encode.c deleted file mode 100644 index d96d62e..0000000 --- a/external/lsquic/src/lshpack/bin/huff-encode.c +++ /dev/null @@ -1,30 +0,0 @@ -/* huff-encode -- Huffman-encode string */ - -#include -#include -#include - -int -lshpack_enc_huff_encode (const unsigned char *src, - const unsigned char *const src_end, unsigned char *const dst, int dst_len); - -int -main (int argc, char **argv) -{ - unsigned char buf[0x1000]; - size_t len; - int sz; - - if (argc != 2) - { - fprintf(stderr, "Usage: %s string > output\n", argv[0]); - exit(EXIT_FAILURE); - } - - len = strlen(argv[1]); - sz = lshpack_enc_huff_encode((unsigned char *) argv[1], - (unsigned char *) argv[1] + len, buf, sizeof(buf)); - fwrite(buf, 1, sz, stdout); - - exit(EXIT_SUCCESS); -} diff --git a/external/lsquic/src/lshpack/compat/queue/sys/queue.h b/external/lsquic/src/lshpack/compat/queue/sys/queue.h deleted file mode 100644 index 7cdff45..0000000 --- a/external/lsquic/src/lshpack/compat/queue/sys/queue.h +++ /dev/null @@ -1,859 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)queue.h 8.5 (Berkeley) 8/20/94 - * $FreeBSD$ - */ - -#ifndef _SYS_QUEUE_H_ -#define _SYS_QUEUE_H_ - - -/* - * This file defines four types of data structures: singly-linked lists, - * singly-linked tail queues, lists and tail queues. - * - * A singly-linked list is headed by a single forward pointer. The elements - * are singly linked for minimum space and pointer manipulation overhead at - * the expense of O(n) removal for arbitrary elements. New elements can be - * added to the list after an existing element or at the head of the list. - * Elements being removed from the head of the list should use the explicit - * macro for this purpose for optimum efficiency. A singly-linked list may - * only be traversed in the forward direction. Singly-linked lists are ideal - * for applications with large datasets and few or no removals or for - * implementing a LIFO queue. - * - * A singly-linked tail queue is headed by a pair of pointers, one to the - * head of the list and the other to the tail of the list. The elements are - * singly linked for minimum space and pointer manipulation overhead at the - * expense of O(n) removal for arbitrary elements. New elements can be added - * to the list after an existing element, at the head of the list, or at the - * end of the list. Elements being removed from the head of the tail queue - * should use the explicit macro for this purpose for optimum efficiency. - * A singly-linked tail queue may only be traversed in the forward direction. - * Singly-linked tail queues are ideal for applications with large datasets - * and few or no removals or for implementing a FIFO queue. - * - * A list is headed by a single forward pointer (or an array of forward - * pointers for a hash table header). The elements are doubly linked - * so that an arbitrary element can be removed without a need to - * traverse the list. New elements can be added to the list before - * or after an existing element or at the head of the list. A list - * may be traversed in either direction. - * - * A tail queue is headed by a pair of pointers, one to the head of the - * list and the other to the tail of the list. The elements are doubly - * linked so that an arbitrary element can be removed without a need to - * traverse the list. New elements can be added to the list before or - * after an existing element, at the head of the list, or at the end of - * the list. A tail queue may be traversed in either direction. - * - * For details on the use of these macros, see the queue(3) manual page. - * - * Below is a summary of implemented functions where: - * + means the macro is available - * - means the macro is not available - * s means the macro is available but is slow (runs in O(n) time) - * - * SLIST LIST STAILQ TAILQ - * _HEAD + + + + - * _CLASS_HEAD + + + + - * _HEAD_INITIALIZER + + + + - * _ENTRY + + + + - * _CLASS_ENTRY + + + + - * _INIT + + + + - * _EMPTY + + + + - * _FIRST + + + + - * _NEXT + + + + - * _PREV - + - + - * _LAST - - + + - * _FOREACH + + + + - * _FOREACH_FROM + + + + - * _FOREACH_SAFE + + + + - * _FOREACH_FROM_SAFE + + + + - * _FOREACH_REVERSE - - - + - * _FOREACH_REVERSE_FROM - - - + - * _FOREACH_REVERSE_SAFE - - - + - * _FOREACH_REVERSE_FROM_SAFE - - - + - * _INSERT_HEAD + + + + - * _INSERT_BEFORE - + - + - * _INSERT_AFTER + + + + - * _INSERT_TAIL - - + + - * _CONCAT s s + + - * _REMOVE_AFTER + - + - - * _REMOVE_HEAD + - + - - * _REMOVE s + s + - * _SWAP + + + + - * - */ -#ifdef QUEUE_MACRO_DEBUG -#warn Use QUEUE_MACRO_DEBUG_TRACE and/or QUEUE_MACRO_DEBUG_TRASH -#define QUEUE_MACRO_DEBUG_TRACE -#define QUEUE_MACRO_DEBUG_TRASH -#endif - -#ifdef QUEUE_MACRO_DEBUG_TRACE -/* Store the last 2 places the queue element or head was altered */ -struct qm_trace { - unsigned long lastline; - unsigned long prevline; - const char *lastfile; - const char *prevfile; -}; - -#define TRACEBUF struct qm_trace trace; -#define TRACEBUF_INITIALIZER { __LINE__, 0, __FILE__, NULL } , - -#define QMD_TRACE_HEAD(head) do { \ - (head)->trace.prevline = (head)->trace.lastline; \ - (head)->trace.prevfile = (head)->trace.lastfile; \ - (head)->trace.lastline = __LINE__; \ - (head)->trace.lastfile = __FILE__; \ -} while (0) - -#define QMD_TRACE_ELEM(elem) do { \ - (elem)->trace.prevline = (elem)->trace.lastline; \ - (elem)->trace.prevfile = (elem)->trace.lastfile; \ - (elem)->trace.lastline = __LINE__; \ - (elem)->trace.lastfile = __FILE__; \ -} while (0) - -#else /* !QUEUE_MACRO_DEBUG_TRACE */ -#define QMD_TRACE_ELEM(elem) -#define QMD_TRACE_HEAD(head) -#define TRACEBUF -#define TRACEBUF_INITIALIZER -#endif /* QUEUE_MACRO_DEBUG_TRACE */ - -#ifdef QUEUE_MACRO_DEBUG_TRASH -#define TRASHIT(x) do {(x) = (void *)-1;} while (0) -#define QMD_IS_TRASHED(x) ((x) == (void *)(intptr_t)-1) -#else /* !QUEUE_MACRO_DEBUG_TRASH */ -#define TRASHIT(x) -#define QMD_IS_TRASHED(x) 0 -#endif /* QUEUE_MACRO_DEBUG_TRASH */ - -#if defined(QUEUE_MACRO_DEBUG_TRACE) || defined(QUEUE_MACRO_DEBUG_TRASH) -#define QMD_SAVELINK(name, link) void **name = (void *)&(link) -#else /* !QUEUE_MACRO_DEBUG_TRACE && !QUEUE_MACRO_DEBUG_TRASH */ -#define QMD_SAVELINK(name, link) -#endif /* QUEUE_MACRO_DEBUG_TRACE || QUEUE_MACRO_DEBUG_TRASH */ - -#ifdef __cplusplus -/* - * In C++ there can be structure lists and class lists: - */ -#define QUEUE_TYPEOF(type) type -#else -#define QUEUE_TYPEOF(type) struct type -#endif - -/* - * Singly-linked List declarations. - */ -#define SLIST_HEAD(name, type) \ -struct name { \ - struct type *slh_first; /* first element */ \ -} - -#define SLIST_CLASS_HEAD(name, type) \ -struct name { \ - class type *slh_first; /* first element */ \ -} - -#define SLIST_HEAD_INITIALIZER(head) \ - { NULL } - -#define SLIST_ENTRY(type) \ -struct { \ - struct type *sle_next; /* next element */ \ -} - -#define SLIST_CLASS_ENTRY(type) \ -struct { \ - class type *sle_next; /* next element */ \ -} - -/* - * Singly-linked List functions. - */ -#if (defined(_KERNEL) && defined(INVARIANTS)) -#define QMD_SLIST_CHECK_PREVPTR(prevp, elm) do { \ - if (*(prevp) != (elm)) \ - panic("Bad prevptr *(%p) == %p != %p", \ - (prevp), *(prevp), (elm)); \ -} while (0) -#else -#define QMD_SLIST_CHECK_PREVPTR(prevp, elm) -#endif - -#define SLIST_CONCAT(head1, head2, type, field) do { \ - QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head1); \ - if (curelm == NULL) { \ - if ((SLIST_FIRST(head1) = SLIST_FIRST(head2)) != NULL) \ - SLIST_INIT(head2); \ - } else if (SLIST_FIRST(head2) != NULL) { \ - while (SLIST_NEXT(curelm, field) != NULL) \ - curelm = SLIST_NEXT(curelm, field); \ - SLIST_NEXT(curelm, field) = SLIST_FIRST(head2); \ - SLIST_INIT(head2); \ - } \ -} while (0) - -#define SLIST_EMPTY(head) ((head)->slh_first == NULL) - -#define SLIST_FIRST(head) ((head)->slh_first) - -#define SLIST_FOREACH(var, head, field) \ - for ((var) = SLIST_FIRST((head)); \ - (var); \ - (var) = SLIST_NEXT((var), field)) - -#define SLIST_FOREACH_FROM(var, head, field) \ - for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ - (var); \ - (var) = SLIST_NEXT((var), field)) - -#define SLIST_FOREACH_SAFE(var, head, field, tvar) \ - for ((var) = SLIST_FIRST((head)); \ - (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define SLIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ - for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ - (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \ - for ((varp) = &SLIST_FIRST((head)); \ - ((var) = *(varp)) != NULL; \ - (varp) = &SLIST_NEXT((var), field)) - -#define SLIST_INIT(head) do { \ - SLIST_FIRST((head)) = NULL; \ -} while (0) - -#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ - SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \ - SLIST_NEXT((slistelm), field) = (elm); \ -} while (0) - -#define SLIST_INSERT_HEAD(head, elm, field) do { \ - SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \ - SLIST_FIRST((head)) = (elm); \ -} while (0) - -#define SLIST_NEXT(elm, field) ((elm)->field.sle_next) - -#define SLIST_REMOVE(head, elm, type, field) do { \ - QMD_SAVELINK(oldnext, (elm)->field.sle_next); \ - if (SLIST_FIRST((head)) == (elm)) { \ - SLIST_REMOVE_HEAD((head), field); \ - } \ - else { \ - QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head); \ - while (SLIST_NEXT(curelm, field) != (elm)) \ - curelm = SLIST_NEXT(curelm, field); \ - SLIST_REMOVE_AFTER(curelm, field); \ - } \ - TRASHIT(*oldnext); \ -} while (0) - -#define SLIST_REMOVE_AFTER(elm, field) do { \ - SLIST_NEXT(elm, field) = \ - SLIST_NEXT(SLIST_NEXT(elm, field), field); \ -} while (0) - -#define SLIST_REMOVE_HEAD(head, field) do { \ - SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \ -} while (0) - -#define SLIST_REMOVE_PREVPTR(prevp, elm, field) do { \ - QMD_SLIST_CHECK_PREVPTR(prevp, elm); \ - *(prevp) = SLIST_NEXT(elm, field); \ - TRASHIT((elm)->field.sle_next); \ -} while (0) - -#define SLIST_SWAP(head1, head2, type) do { \ - QUEUE_TYPEOF(type) *swap_first = SLIST_FIRST(head1); \ - SLIST_FIRST(head1) = SLIST_FIRST(head2); \ - SLIST_FIRST(head2) = swap_first; \ -} while (0) - -/* - * Singly-linked Tail queue declarations. - */ -#define STAILQ_HEAD(name, type) \ -struct name { \ - struct type *stqh_first;/* first element */ \ - struct type **stqh_last;/* addr of last next element */ \ -} - -#define STAILQ_CLASS_HEAD(name, type) \ -struct name { \ - class type *stqh_first; /* first element */ \ - class type **stqh_last; /* addr of last next element */ \ -} - -#define STAILQ_HEAD_INITIALIZER(head) \ - { NULL, &(head).stqh_first } - -#define STAILQ_ENTRY(type) \ -struct { \ - struct type *stqe_next; /* next element */ \ -} - -#define STAILQ_CLASS_ENTRY(type) \ -struct { \ - class type *stqe_next; /* next element */ \ -} - -/* - * Singly-linked Tail queue functions. - */ -#define STAILQ_CONCAT(head1, head2) do { \ - if (!STAILQ_EMPTY((head2))) { \ - *(head1)->stqh_last = (head2)->stqh_first; \ - (head1)->stqh_last = (head2)->stqh_last; \ - STAILQ_INIT((head2)); \ - } \ -} while (0) - -#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL) - -#define STAILQ_FIRST(head) ((head)->stqh_first) - -#define STAILQ_FOREACH(var, head, field) \ - for((var) = STAILQ_FIRST((head)); \ - (var); \ - (var) = STAILQ_NEXT((var), field)) - -#define STAILQ_FOREACH_FROM(var, head, field) \ - for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ - (var); \ - (var) = STAILQ_NEXT((var), field)) - -#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ - for ((var) = STAILQ_FIRST((head)); \ - (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define STAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ - for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ - (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define STAILQ_INIT(head) do { \ - STAILQ_FIRST((head)) = NULL; \ - (head)->stqh_last = &STAILQ_FIRST((head)); \ -} while (0) - -#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \ - if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\ - (head)->stqh_last = &STAILQ_NEXT((elm), field); \ - STAILQ_NEXT((tqelm), field) = (elm); \ -} while (0) - -#define STAILQ_INSERT_HEAD(head, elm, field) do { \ - if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \ - (head)->stqh_last = &STAILQ_NEXT((elm), field); \ - STAILQ_FIRST((head)) = (elm); \ -} while (0) - -#define STAILQ_INSERT_TAIL(head, elm, field) do { \ - STAILQ_NEXT((elm), field) = NULL; \ - *(head)->stqh_last = (elm); \ - (head)->stqh_last = &STAILQ_NEXT((elm), field); \ -} while (0) - -#define STAILQ_LAST(head, type, field) \ - (STAILQ_EMPTY((head)) ? NULL : \ - __containerof((head)->stqh_last, \ - QUEUE_TYPEOF(type), field.stqe_next)) - -#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next) - -#define STAILQ_REMOVE(head, elm, type, field) do { \ - QMD_SAVELINK(oldnext, (elm)->field.stqe_next); \ - if (STAILQ_FIRST((head)) == (elm)) { \ - STAILQ_REMOVE_HEAD((head), field); \ - } \ - else { \ - QUEUE_TYPEOF(type) *curelm = STAILQ_FIRST(head); \ - while (STAILQ_NEXT(curelm, field) != (elm)) \ - curelm = STAILQ_NEXT(curelm, field); \ - STAILQ_REMOVE_AFTER(head, curelm, field); \ - } \ - TRASHIT(*oldnext); \ -} while (0) - -#define STAILQ_REMOVE_AFTER(head, elm, field) do { \ - if ((STAILQ_NEXT(elm, field) = \ - STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \ - (head)->stqh_last = &STAILQ_NEXT((elm), field); \ -} while (0) - -#define STAILQ_REMOVE_HEAD(head, field) do { \ - if ((STAILQ_FIRST((head)) = \ - STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \ - (head)->stqh_last = &STAILQ_FIRST((head)); \ -} while (0) - -#define STAILQ_SWAP(head1, head2, type) do { \ - QUEUE_TYPEOF(type) *swap_first = STAILQ_FIRST(head1); \ - QUEUE_TYPEOF(type) **swap_last = (head1)->stqh_last; \ - STAILQ_FIRST(head1) = STAILQ_FIRST(head2); \ - (head1)->stqh_last = (head2)->stqh_last; \ - STAILQ_FIRST(head2) = swap_first; \ - (head2)->stqh_last = swap_last; \ - if (STAILQ_EMPTY(head1)) \ - (head1)->stqh_last = &STAILQ_FIRST(head1); \ - if (STAILQ_EMPTY(head2)) \ - (head2)->stqh_last = &STAILQ_FIRST(head2); \ -} while (0) - - -/* - * List declarations. - */ -#define LIST_HEAD(name, type) \ -struct name { \ - struct type *lh_first; /* first element */ \ -} - -#define LIST_CLASS_HEAD(name, type) \ -struct name { \ - class type *lh_first; /* first element */ \ -} - -#define LIST_HEAD_INITIALIZER(head) \ - { NULL } - -#define LIST_ENTRY(type) \ -struct { \ - struct type *le_next; /* next element */ \ - struct type **le_prev; /* address of previous next element */ \ -} - -#define LIST_CLASS_ENTRY(type) \ -struct { \ - class type *le_next; /* next element */ \ - class type **le_prev; /* address of previous next element */ \ -} - -/* - * List functions. - */ - -#if (defined(_KERNEL) && defined(INVARIANTS)) -/* - * QMD_LIST_CHECK_HEAD(LIST_HEAD *head, LIST_ENTRY NAME) - * - * If the list is non-empty, validates that the first element of the list - * points back at 'head.' - */ -#define QMD_LIST_CHECK_HEAD(head, field) do { \ - if (LIST_FIRST((head)) != NULL && \ - LIST_FIRST((head))->field.le_prev != \ - &LIST_FIRST((head))) \ - panic("Bad list head %p first->prev != head", (head)); \ -} while (0) - -/* - * QMD_LIST_CHECK_NEXT(TYPE *elm, LIST_ENTRY NAME) - * - * If an element follows 'elm' in the list, validates that the next element - * points back at 'elm.' - */ -#define QMD_LIST_CHECK_NEXT(elm, field) do { \ - if (LIST_NEXT((elm), field) != NULL && \ - LIST_NEXT((elm), field)->field.le_prev != \ - &((elm)->field.le_next)) \ - panic("Bad link elm %p next->prev != elm", (elm)); \ -} while (0) - -/* - * QMD_LIST_CHECK_PREV(TYPE *elm, LIST_ENTRY NAME) - * - * Validates that the previous element (or head of the list) points to 'elm.' - */ -#define QMD_LIST_CHECK_PREV(elm, field) do { \ - if (*(elm)->field.le_prev != (elm)) \ - panic("Bad link elm %p prev->next != elm", (elm)); \ -} while (0) -#else -#define QMD_LIST_CHECK_HEAD(head, field) -#define QMD_LIST_CHECK_NEXT(elm, field) -#define QMD_LIST_CHECK_PREV(elm, field) -#endif /* (_KERNEL && INVARIANTS) */ - -#define LIST_CONCAT(head1, head2, type, field) do { \ - QUEUE_TYPEOF(type) *curelm = LIST_FIRST(head1); \ - if (curelm == NULL) { \ - if ((LIST_FIRST(head1) = LIST_FIRST(head2)) != NULL) { \ - LIST_FIRST(head2)->field.le_prev = \ - &LIST_FIRST((head1)); \ - LIST_INIT(head2); \ - } \ - } else if (LIST_FIRST(head2) != NULL) { \ - while (LIST_NEXT(curelm, field) != NULL) \ - curelm = LIST_NEXT(curelm, field); \ - LIST_NEXT(curelm, field) = LIST_FIRST(head2); \ - LIST_FIRST(head2)->field.le_prev = &LIST_NEXT(curelm, field); \ - LIST_INIT(head2); \ - } \ -} while (0) - -#define LIST_EMPTY(head) ((head)->lh_first == NULL) - -#define LIST_FIRST(head) ((head)->lh_first) - -#define LIST_FOREACH(var, head, field) \ - for ((var) = LIST_FIRST((head)); \ - (var); \ - (var) = LIST_NEXT((var), field)) - -#define LIST_FOREACH_FROM(var, head, field) \ - for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ - (var); \ - (var) = LIST_NEXT((var), field)) - -#define LIST_FOREACH_SAFE(var, head, field, tvar) \ - for ((var) = LIST_FIRST((head)); \ - (var) && ((tvar) = LIST_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define LIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ - for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ - (var) && ((tvar) = LIST_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define LIST_INIT(head) do { \ - LIST_FIRST((head)) = NULL; \ -} while (0) - -#define LIST_INSERT_AFTER(listelm, elm, field) do { \ - QMD_LIST_CHECK_NEXT(listelm, field); \ - if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\ - LIST_NEXT((listelm), field)->field.le_prev = \ - &LIST_NEXT((elm), field); \ - LIST_NEXT((listelm), field) = (elm); \ - (elm)->field.le_prev = &LIST_NEXT((listelm), field); \ -} while (0) - -#define LIST_INSERT_BEFORE(listelm, elm, field) do { \ - QMD_LIST_CHECK_PREV(listelm, field); \ - (elm)->field.le_prev = (listelm)->field.le_prev; \ - LIST_NEXT((elm), field) = (listelm); \ - *(listelm)->field.le_prev = (elm); \ - (listelm)->field.le_prev = &LIST_NEXT((elm), field); \ -} while (0) - -#define LIST_INSERT_HEAD(head, elm, field) do { \ - QMD_LIST_CHECK_HEAD((head), field); \ - if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \ - LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\ - LIST_FIRST((head)) = (elm); \ - (elm)->field.le_prev = &LIST_FIRST((head)); \ -} while (0) - -#define LIST_NEXT(elm, field) ((elm)->field.le_next) - -#define LIST_PREV(elm, head, type, field) \ - ((elm)->field.le_prev == &LIST_FIRST((head)) ? NULL : \ - __containerof((elm)->field.le_prev, \ - QUEUE_TYPEOF(type), field.le_next)) - -#define LIST_REMOVE(elm, field) do { \ - QMD_SAVELINK(oldnext, (elm)->field.le_next); \ - QMD_SAVELINK(oldprev, (elm)->field.le_prev); \ - QMD_LIST_CHECK_NEXT(elm, field); \ - QMD_LIST_CHECK_PREV(elm, field); \ - if (LIST_NEXT((elm), field) != NULL) \ - LIST_NEXT((elm), field)->field.le_prev = \ - (elm)->field.le_prev; \ - *(elm)->field.le_prev = LIST_NEXT((elm), field); \ - TRASHIT(*oldnext); \ - TRASHIT(*oldprev); \ -} while (0) - -#define LIST_SWAP(head1, head2, type, field) do { \ - QUEUE_TYPEOF(type) *swap_tmp = LIST_FIRST(head1); \ - LIST_FIRST((head1)) = LIST_FIRST((head2)); \ - LIST_FIRST((head2)) = swap_tmp; \ - if ((swap_tmp = LIST_FIRST((head1))) != NULL) \ - swap_tmp->field.le_prev = &LIST_FIRST((head1)); \ - if ((swap_tmp = LIST_FIRST((head2))) != NULL) \ - swap_tmp->field.le_prev = &LIST_FIRST((head2)); \ -} while (0) - -/* - * Tail queue declarations. - */ -#define TAILQ_HEAD(name, type) \ -struct name { \ - struct type *tqh_first; /* first element */ \ - struct type **tqh_last; /* addr of last next element */ \ - TRACEBUF \ -} - -#define TAILQ_CLASS_HEAD(name, type) \ -struct name { \ - class type *tqh_first; /* first element */ \ - class type **tqh_last; /* addr of last next element */ \ - TRACEBUF \ -} - -#define TAILQ_HEAD_INITIALIZER(head) \ - { NULL, &(head).tqh_first, TRACEBUF_INITIALIZER } - -#define TAILQ_ENTRY(type) \ -struct { \ - struct type *tqe_next; /* next element */ \ - struct type **tqe_prev; /* address of previous next element */ \ - TRACEBUF \ -} - -#define TAILQ_CLASS_ENTRY(type) \ -struct { \ - class type *tqe_next; /* next element */ \ - class type **tqe_prev; /* address of previous next element */ \ - TRACEBUF \ -} - -/* - * Tail queue functions. - */ -#if (defined(_KERNEL) && defined(INVARIANTS)) -/* - * QMD_TAILQ_CHECK_HEAD(TAILQ_HEAD *head, TAILQ_ENTRY NAME) - * - * If the tailq is non-empty, validates that the first element of the tailq - * points back at 'head.' - */ -#define QMD_TAILQ_CHECK_HEAD(head, field) do { \ - if (!TAILQ_EMPTY(head) && \ - TAILQ_FIRST((head))->field.tqe_prev != \ - &TAILQ_FIRST((head))) \ - panic("Bad tailq head %p first->prev != head", (head)); \ -} while (0) - -/* - * QMD_TAILQ_CHECK_TAIL(TAILQ_HEAD *head, TAILQ_ENTRY NAME) - * - * Validates that the tail of the tailq is a pointer to pointer to NULL. - */ -#define QMD_TAILQ_CHECK_TAIL(head, field) do { \ - if (*(head)->tqh_last != NULL) \ - panic("Bad tailq NEXT(%p->tqh_last) != NULL", (head)); \ -} while (0) - -/* - * QMD_TAILQ_CHECK_NEXT(TYPE *elm, TAILQ_ENTRY NAME) - * - * If an element follows 'elm' in the tailq, validates that the next element - * points back at 'elm.' - */ -#define QMD_TAILQ_CHECK_NEXT(elm, field) do { \ - if (TAILQ_NEXT((elm), field) != NULL && \ - TAILQ_NEXT((elm), field)->field.tqe_prev != \ - &((elm)->field.tqe_next)) \ - panic("Bad link elm %p next->prev != elm", (elm)); \ -} while (0) - -/* - * QMD_TAILQ_CHECK_PREV(TYPE *elm, TAILQ_ENTRY NAME) - * - * Validates that the previous element (or head of the tailq) points to 'elm.' - */ -#define QMD_TAILQ_CHECK_PREV(elm, field) do { \ - if (*(elm)->field.tqe_prev != (elm)) \ - panic("Bad link elm %p prev->next != elm", (elm)); \ -} while (0) -#else -#define QMD_TAILQ_CHECK_HEAD(head, field) -#define QMD_TAILQ_CHECK_TAIL(head, headname) -#define QMD_TAILQ_CHECK_NEXT(elm, field) -#define QMD_TAILQ_CHECK_PREV(elm, field) -#endif /* (_KERNEL && INVARIANTS) */ - -#define TAILQ_CONCAT(head1, head2, field) do { \ - if (!TAILQ_EMPTY(head2)) { \ - *(head1)->tqh_last = (head2)->tqh_first; \ - (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \ - (head1)->tqh_last = (head2)->tqh_last; \ - TAILQ_INIT((head2)); \ - QMD_TRACE_HEAD(head1); \ - QMD_TRACE_HEAD(head2); \ - } \ -} while (0) - -#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL) - -#define TAILQ_FIRST(head) ((head)->tqh_first) - -#define TAILQ_FOREACH(var, head, field) \ - for ((var) = TAILQ_FIRST((head)); \ - (var); \ - (var) = TAILQ_NEXT((var), field)) - -#define TAILQ_FOREACH_FROM(var, head, field) \ - for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ - (var); \ - (var) = TAILQ_NEXT((var), field)) - -#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ - for ((var) = TAILQ_FIRST((head)); \ - (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define TAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ - for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ - (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ - for ((var) = TAILQ_LAST((head), headname); \ - (var); \ - (var) = TAILQ_PREV((var), headname, field)) - -#define TAILQ_FOREACH_REVERSE_FROM(var, head, headname, field) \ - for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ - (var); \ - (var) = TAILQ_PREV((var), headname, field)) - -#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \ - for ((var) = TAILQ_LAST((head), headname); \ - (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ - (var) = (tvar)) - -#define TAILQ_FOREACH_REVERSE_FROM_SAFE(var, head, headname, field, tvar) \ - for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ - (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ - (var) = (tvar)) - -#define TAILQ_INIT(head) do { \ - TAILQ_FIRST((head)) = NULL; \ - (head)->tqh_last = &TAILQ_FIRST((head)); \ - QMD_TRACE_HEAD(head); \ -} while (0) - -#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ - QMD_TAILQ_CHECK_NEXT(listelm, field); \ - if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\ - TAILQ_NEXT((elm), field)->field.tqe_prev = \ - &TAILQ_NEXT((elm), field); \ - else { \ - (head)->tqh_last = &TAILQ_NEXT((elm), field); \ - QMD_TRACE_HEAD(head); \ - } \ - TAILQ_NEXT((listelm), field) = (elm); \ - (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \ - QMD_TRACE_ELEM(&(elm)->field); \ - QMD_TRACE_ELEM(&(listelm)->field); \ -} while (0) - -#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ - QMD_TAILQ_CHECK_PREV(listelm, field); \ - (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ - TAILQ_NEXT((elm), field) = (listelm); \ - *(listelm)->field.tqe_prev = (elm); \ - (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \ - QMD_TRACE_ELEM(&(elm)->field); \ - QMD_TRACE_ELEM(&(listelm)->field); \ -} while (0) - -#define TAILQ_INSERT_HEAD(head, elm, field) do { \ - QMD_TAILQ_CHECK_HEAD(head, field); \ - if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \ - TAILQ_FIRST((head))->field.tqe_prev = \ - &TAILQ_NEXT((elm), field); \ - else \ - (head)->tqh_last = &TAILQ_NEXT((elm), field); \ - TAILQ_FIRST((head)) = (elm); \ - (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \ - QMD_TRACE_HEAD(head); \ - QMD_TRACE_ELEM(&(elm)->field); \ -} while (0) - -#define TAILQ_INSERT_TAIL(head, elm, field) do { \ - QMD_TAILQ_CHECK_TAIL(head, field); \ - TAILQ_NEXT((elm), field) = NULL; \ - (elm)->field.tqe_prev = (head)->tqh_last; \ - *(head)->tqh_last = (elm); \ - (head)->tqh_last = &TAILQ_NEXT((elm), field); \ - QMD_TRACE_HEAD(head); \ - QMD_TRACE_ELEM(&(elm)->field); \ -} while (0) - -#define TAILQ_LAST(head, headname) \ - (*(((struct headname *)((head)->tqh_last))->tqh_last)) - -#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) - -#define TAILQ_PREV(elm, headname, field) \ - (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) - -#define TAILQ_REMOVE(head, elm, field) do { \ - QMD_SAVELINK(oldnext, (elm)->field.tqe_next); \ - QMD_SAVELINK(oldprev, (elm)->field.tqe_prev); \ - QMD_TAILQ_CHECK_NEXT(elm, field); \ - QMD_TAILQ_CHECK_PREV(elm, field); \ - if ((TAILQ_NEXT((elm), field)) != NULL) \ - TAILQ_NEXT((elm), field)->field.tqe_prev = \ - (elm)->field.tqe_prev; \ - else { \ - (head)->tqh_last = (elm)->field.tqe_prev; \ - QMD_TRACE_HEAD(head); \ - } \ - *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \ - TRASHIT(*oldnext); \ - TRASHIT(*oldprev); \ - QMD_TRACE_ELEM(&(elm)->field); \ -} while (0) - -#define TAILQ_SWAP(head1, head2, type, field) do { \ - QUEUE_TYPEOF(type) *swap_first = (head1)->tqh_first; \ - QUEUE_TYPEOF(type) **swap_last = (head1)->tqh_last; \ - (head1)->tqh_first = (head2)->tqh_first; \ - (head1)->tqh_last = (head2)->tqh_last; \ - (head2)->tqh_first = swap_first; \ - (head2)->tqh_last = swap_last; \ - if ((swap_first = (head1)->tqh_first) != NULL) \ - swap_first->field.tqe_prev = &(head1)->tqh_first; \ - else \ - (head1)->tqh_last = &(head1)->tqh_first; \ - if ((swap_first = (head2)->tqh_first) != NULL) \ - swap_first->field.tqe_prev = &(head2)->tqh_first; \ - else \ - (head2)->tqh_last = &(head2)->tqh_first; \ -} while (0) - -#endif /* !_SYS_QUEUE_H_ */ diff --git a/external/lsquic/src/lshpack/compat/windows/sys/uio.h b/external/lsquic/src/lshpack/compat/windows/sys/uio.h deleted file mode 100644 index 308936d..0000000 --- a/external/lsquic/src/lshpack/compat/windows/sys/uio.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef WINCOMPAT_SYS_UIO_H -#define WINCOMPAT_SYS_UIO_H - -struct iovec -{ - void *iov_base; - size_t iov_len; -}; - -#endif diff --git a/external/lsquic/src/lshpack/deps/xxhash/xxhash.c b/external/lsquic/src/lshpack/deps/xxhash/xxhash.c deleted file mode 100644 index 3023948..0000000 --- a/external/lsquic/src/lshpack/deps/xxhash/xxhash.c +++ /dev/null @@ -1,941 +0,0 @@ -/* -xxHash - Fast Hash algorithm -Copyright (C) 2012-2014, Yann Collet. -BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -You can contact the author at : -- xxHash source repository : http://code.google.com/p/xxhash/ -- public discussion board : https://groups.google.com/forum/#!forum/lz4c -*/ - - -//************************************** -// Tuning parameters -//************************************** -// Unaligned memory access is automatically enabled for "common" CPU, such as x86. -// For others CPU, the compiler will be more cautious, and insert extra code to ensure aligned access is respected. -// If you know your target CPU supports unaligned memory access, you want to force this option manually to improve performance. -// You can also enable this parameter if you know your input data will always be aligned (boundaries of 4, for U32). -#if defined(__ARM_FEATURE_UNALIGNED) || defined(__i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64) -# define XXH_USE_UNALIGNED_ACCESS 1 -#endif - -// XXH_ACCEPT_NULL_INPUT_POINTER : -// If the input pointer is a null pointer, xxHash default behavior is to trigger a memory access error, since it is a bad pointer. -// When this option is enabled, xxHash output for null input pointers will be the same as a null-length input. -// This option has a very small performance cost (only measurable on small inputs). -// By default, this option is disabled. To enable it, uncomment below define : -// #define XXH_ACCEPT_NULL_INPUT_POINTER 1 - -// XXH_FORCE_NATIVE_FORMAT : -// By default, xxHash library provides endian-independant Hash values, based on little-endian convention. -// Results are therefore identical for little-endian and big-endian CPU. -// This comes at a performance cost for big-endian CPU, since some swapping is required to emulate little-endian format. -// Should endian-independance be of no importance for your application, you may set the #define below to 1. -// It will improve speed for Big-endian CPU. -// This option has no impact on Little_Endian CPU. -#define XXH_FORCE_NATIVE_FORMAT 0 - -//************************************** -// Compiler Specific Options -//************************************** -// Disable some Visual warning messages -#ifdef _MSC_VER // Visual Studio -# pragma warning(disable : 4127) // disable: C4127: conditional expression is constant -#endif - -#ifdef _MSC_VER // Visual Studio -# define FORCE_INLINE static __forceinline -#else -# ifdef __GNUC__ -# define FORCE_INLINE static inline __attribute__((always_inline)) -# else -# define FORCE_INLINE static inline -# endif -#endif - -//************************************** -// Includes & Memory related functions -//************************************** -#include "xxhash.h" -// Modify the local functions below should you wish to use some other memory routines -// for malloc(), free() -#include -static void *XXH_malloc(size_t s) { return malloc(s); } -static void XXH_free(void *p) { free(p); } -// for memcpy() -#include -static void *XXH_memcpy(void *dest, const void *src, size_t size) -{ - return memcpy(dest, src, size); -} - - -//************************************** -// Basic Types -//************************************** -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L // C99 -# include -typedef uint8_t BYTE; -typedef uint16_t U16; -typedef uint32_t U32; -typedef int32_t S32; -typedef uint64_t U64; -#else -typedef unsigned char BYTE; -typedef unsigned short U16; -typedef unsigned int U32; -typedef signed int S32; -typedef unsigned long long U64; -#endif - -#if defined(__GNUC__) && !defined(XXH_USE_UNALIGNED_ACCESS) -# define _PACKED __attribute__ ((packed)) -#else -# define _PACKED -#endif - -#if !defined(XXH_USE_UNALIGNED_ACCESS) && !defined(__GNUC__) -# ifdef __IBMC__ -# pragma pack(1) -# else -# pragma pack(push, 1) -# endif -#endif - -typedef struct _U32_S -{ - U32 v; -} _PACKED U32_S; -typedef struct _U64_S -{ - U64 v; -} _PACKED U64_S; - -#if !defined(XXH_USE_UNALIGNED_ACCESS) && !defined(__GNUC__) -# pragma pack(pop) -#endif - -#define A32(x) (((U32_S *)(x))->v) -#define A64(x) (((U64_S *)(x))->v) - - -//*************************************** -// Compiler-specific Functions and Macros -//*************************************** -#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) - -// Note : although _rotl exists for minGW (GCC under windows), performance seems poor -#if defined(_MSC_VER) -# define XXH_rotl32(x,r) _rotl(x,r) -# define XXH_rotl64(x,r) _rotl64(x,r) -#else -# define XXH_rotl32(x,r) ((x << r) | (x >> (32 - r))) -# define XXH_rotl64(x,r) ((x << r) | (x >> (64 - r))) -#endif - -#if defined(_MSC_VER) // Visual Studio -# define XXH_swap32 _byteswap_ulong -# define XXH_swap64 _byteswap_uint64 -#elif GCC_VERSION >= 403 -# define XXH_swap32 __builtin_bswap32 -# define XXH_swap64 __builtin_bswap64 -#else -static inline U32 XXH_swap32(U32 x) -{ - return ((x << 24) & 0xff000000) | - ((x << 8) & 0x00ff0000) | - ((x >> 8) & 0x0000ff00) | - ((x >> 24) & 0x000000ff); -} -static inline U64 XXH_swap64(U64 x) -{ - return ((x << 56) & 0xff00000000000000ULL) | - ((x << 40) & 0x00ff000000000000ULL) | - ((x << 24) & 0x0000ff0000000000ULL) | - ((x << 8) & 0x000000ff00000000ULL) | - ((x >> 8) & 0x00000000ff000000ULL) | - ((x >> 24) & 0x0000000000ff0000ULL) | - ((x >> 40) & 0x000000000000ff00ULL) | - ((x >> 56) & 0x00000000000000ffULL); -} -#endif - - -//************************************** -// Constants -//************************************** -#define PRIME32_1 2654435761U -#define PRIME32_2 2246822519U -#define PRIME32_3 3266489917U -#define PRIME32_4 668265263U -#define PRIME32_5 374761393U - -#define PRIME64_1 11400714785074694791ULL -#define PRIME64_2 14029467366897019727ULL -#define PRIME64_3 1609587929392839161ULL -#define PRIME64_4 9650029242287828579ULL -#define PRIME64_5 2870177450012600261ULL - -//************************************** -// Architecture Macros -//************************************** -typedef enum { XXH_bigEndian = 0, XXH_littleEndian = 1 } XXH_endianess; -#ifndef XXH_CPU_LITTLE_ENDIAN // It is possible to define XXH_CPU_LITTLE_ENDIAN externally, for example using a compiler switch -static const int one = 1; -# define XXH_CPU_LITTLE_ENDIAN (*(char*)(&one)) -#endif - - -//************************************** -// Macros -//************************************** -#define XXH_STATIC_ASSERT(c) { enum { XXH_static_assert = 1/(!!(c)) }; } // use only *after* variable declarations - - -//**************************** -// Memory reads -//**************************** -typedef enum { XXH_aligned, XXH_unaligned } XXH_alignment; - -FORCE_INLINE U32 XXH_readLE32_align(const void *ptr, XXH_endianess endian, - XXH_alignment align) -{ - if (align == XXH_unaligned) - return endian == XXH_littleEndian ? A32(ptr) : XXH_swap32(A32(ptr)); - else - return endian == XXH_littleEndian ? *(U32 *)ptr : XXH_swap32(*(U32 *)ptr); -} - -FORCE_INLINE U32 XXH_readLE32(const void *ptr, XXH_endianess endian) -{ - return XXH_readLE32_align(ptr, endian, XXH_unaligned); -} - -FORCE_INLINE U64 XXH_readLE64_align(const void *ptr, XXH_endianess endian, - XXH_alignment align) -{ - if (align == XXH_unaligned) - return endian == XXH_littleEndian ? A64(ptr) : XXH_swap64(A64(ptr)); - else - return endian == XXH_littleEndian ? *(U64 *)ptr : XXH_swap64(*(U64 *)ptr); -} - -FORCE_INLINE U64 XXH_readLE64(const void *ptr, XXH_endianess endian) -{ - return XXH_readLE64_align(ptr, endian, XXH_unaligned); -} - - -//**************************** -// Simple Hash Functions -//**************************** -FORCE_INLINE U32 XXH32_endian_align(const void *input, size_t len, - U32 seed, XXH_endianess endian, XXH_alignment align) -{ - const BYTE *p = (const BYTE *)input; - const BYTE *bEnd = p + len; - U32 h32; -#define XXH_get32bits(p) XXH_readLE32_align(p, endian, align) - -#ifdef XXH_ACCEPT_NULL_INPUT_POINTER - if (p == NULL) - { - len = 0; - bEnd = p = (const BYTE *)(size_t)16; - } -#endif - - if (len >= 16) - { - const BYTE *const limit = bEnd - 16; - U32 v1 = seed + PRIME32_1 + PRIME32_2; - U32 v2 = seed + PRIME32_2; - U32 v3 = seed + 0; - U32 v4 = seed - PRIME32_1; - - do - { - v1 += XXH_get32bits(p) * PRIME32_2; - v1 = XXH_rotl32(v1, 13); - v1 *= PRIME32_1; - p += 4; - v2 += XXH_get32bits(p) * PRIME32_2; - v2 = XXH_rotl32(v2, 13); - v2 *= PRIME32_1; - p += 4; - v3 += XXH_get32bits(p) * PRIME32_2; - v3 = XXH_rotl32(v3, 13); - v3 *= PRIME32_1; - p += 4; - v4 += XXH_get32bits(p) * PRIME32_2; - v4 = XXH_rotl32(v4, 13); - v4 *= PRIME32_1; - p += 4; - } - while (p <= limit); - - h32 = XXH_rotl32(v1, 1) + XXH_rotl32(v2, 7) + XXH_rotl32(v3, - 12) + XXH_rotl32(v4, 18); - } - else - h32 = seed + PRIME32_5; - - h32 += (U32) len; - - while (p + 4 <= bEnd) - { - h32 += XXH_get32bits(p) * PRIME32_3; - h32 = XXH_rotl32(h32, 17) * PRIME32_4 ; - p += 4; - } - - while (p < bEnd) - { - h32 += (*p) * PRIME32_5; - h32 = XXH_rotl32(h32, 11) * PRIME32_1 ; - p++; - } - - h32 ^= h32 >> 15; - h32 *= PRIME32_2; - h32 ^= h32 >> 13; - h32 *= PRIME32_3; - h32 ^= h32 >> 16; - - return h32; -} - - -unsigned int XXH32(const void *input, size_t len, unsigned seed) -{ -#if 0 - // Simple version, good for code maintenance, but unfortunately slow for small inputs - XXH32_state_t state; - XXH32_reset(&state, seed); - XXH32_update(&state, input, len); - return XXH32_digest(&state); -#else - XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; - -# if !defined(XXH_USE_UNALIGNED_ACCESS) - if ((((size_t)input) & 3) == - 0) // Input is aligned, let's leverage the speed advantage - { - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH32_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned); - else - return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned); - } -# endif - - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH32_endian_align(input, len, seed, XXH_littleEndian, - XXH_unaligned); - else - return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned); -#endif -} - -FORCE_INLINE U64 XXH64_endian_align(const void *input, size_t len, - U64 seed, XXH_endianess endian, XXH_alignment align) -{ - const BYTE *p = (const BYTE *)input; - const BYTE *bEnd = p + len; - U64 h64; -#define XXH_get64bits(p) XXH_readLE64_align(p, endian, align) - -#ifdef XXH_ACCEPT_NULL_INPUT_POINTER - if (p == NULL) - { - len = 0; - bEnd = p = (const BYTE *)(size_t)32; - } -#endif - - if (len >= 32) - { - const BYTE *const limit = bEnd - 32; - U64 v1 = seed + PRIME64_1 + PRIME64_2; - U64 v2 = seed + PRIME64_2; - U64 v3 = seed + 0; - U64 v4 = seed - PRIME64_1; - - do - { - v1 += XXH_get64bits(p) * PRIME64_2; - p += 8; - v1 = XXH_rotl64(v1, 31); - v1 *= PRIME64_1; - v2 += XXH_get64bits(p) * PRIME64_2; - p += 8; - v2 = XXH_rotl64(v2, 31); - v2 *= PRIME64_1; - v3 += XXH_get64bits(p) * PRIME64_2; - p += 8; - v3 = XXH_rotl64(v3, 31); - v3 *= PRIME64_1; - v4 += XXH_get64bits(p) * PRIME64_2; - p += 8; - v4 = XXH_rotl64(v4, 31); - v4 *= PRIME64_1; - } - while (p <= limit); - - h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, - 12) + XXH_rotl64(v4, 18); - - v1 *= PRIME64_2; - v1 = XXH_rotl64(v1, 31); - v1 *= PRIME64_1; - h64 ^= v1; - h64 = h64 * PRIME64_1 + PRIME64_4; - - v2 *= PRIME64_2; - v2 = XXH_rotl64(v2, 31); - v2 *= PRIME64_1; - h64 ^= v2; - h64 = h64 * PRIME64_1 + PRIME64_4; - - v3 *= PRIME64_2; - v3 = XXH_rotl64(v3, 31); - v3 *= PRIME64_1; - h64 ^= v3; - h64 = h64 * PRIME64_1 + PRIME64_4; - - v4 *= PRIME64_2; - v4 = XXH_rotl64(v4, 31); - v4 *= PRIME64_1; - h64 ^= v4; - h64 = h64 * PRIME64_1 + PRIME64_4; - } - else - h64 = seed + PRIME64_5; - - h64 += (U64) len; - - while (p + 8 <= bEnd) - { - U64 k1 = XXH_get64bits(p); - k1 *= PRIME64_2; - k1 = XXH_rotl64(k1, 31); - k1 *= PRIME64_1; - h64 ^= k1; - h64 = XXH_rotl64(h64, 27) * PRIME64_1 + PRIME64_4; - p += 8; - } - - if (p + 4 <= bEnd) - { - h64 ^= (U64)(XXH_get32bits(p)) * PRIME64_1; - h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3; - p += 4; - } - - while (p < bEnd) - { - h64 ^= (*p) * PRIME64_5; - h64 = XXH_rotl64(h64, 11) * PRIME64_1; - p++; - } - - h64 ^= h64 >> 33; - h64 *= PRIME64_2; - h64 ^= h64 >> 29; - h64 *= PRIME64_3; - h64 ^= h64 >> 32; - - return h64; -} - - -unsigned long long XXH64(const void *input, size_t len, - unsigned long long seed) -{ -#if 0 - // Simple version, good for code maintenance, but unfortunately slow for small inputs - XXH64_state_t state; - XXH64_reset(&state, seed); - XXH64_update(&state, input, len); - return XXH64_digest(&state); -#else - XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; - -# if !defined(XXH_USE_UNALIGNED_ACCESS) - if ((((size_t)input) & 7) == - 0) // Input is aligned, let's leverage the speed advantage - { - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH64_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned); - else - return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned); - } -# endif - - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH64_endian_align(input, len, seed, XXH_littleEndian, - XXH_unaligned); - else - return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned); -#endif -} - -/**************************************************** - * Advanced Hash Functions -****************************************************/ - -/*** Allocation ***/ -typedef struct -{ - U64 total_len; - U32 seed; - U32 v1; - U32 v2; - U32 v3; - U32 v4; - U32 mem32[4]; /* defined as U32 for alignment */ - U32 memsize; -} XXH_istate32_t; - -typedef struct -{ - U64 total_len; - U64 seed; - U64 v1; - U64 v2; - U64 v3; - U64 v4; - U64 mem64[4]; /* defined as U64 for alignment */ - U32 memsize; -} XXH_istate64_t; - - -XXH32_state_t *XXH32_createState(void) -{ - XXH_STATIC_ASSERT(sizeof(XXH32_state_t) >= sizeof( - XXH_istate32_t)); // A compilation error here means XXH32_state_t is not large enough - return (XXH32_state_t *)XXH_malloc(sizeof(XXH32_state_t)); -} -XXH_errorcode XXH32_freeState(XXH32_state_t *statePtr) -{ - XXH_free(statePtr); - return XXH_OK; -}; - -XXH64_state_t *XXH64_createState(void) -{ - XXH_STATIC_ASSERT(sizeof(XXH64_state_t) >= sizeof( - XXH_istate64_t)); // A compilation error here means XXH64_state_t is not large enough - return (XXH64_state_t *)XXH_malloc(sizeof(XXH64_state_t)); -} -XXH_errorcode XXH64_freeState(XXH64_state_t *statePtr) -{ - XXH_free(statePtr); - return XXH_OK; -}; - - -/*** Hash feed ***/ - -XXH_errorcode XXH32_reset(XXH32_state_t *state_in, U32 seed) -{ - XXH_istate32_t *state = (XXH_istate32_t *) state_in; - state->seed = seed; - state->v1 = seed + PRIME32_1 + PRIME32_2; - state->v2 = seed + PRIME32_2; - state->v3 = seed + 0; - state->v4 = seed - PRIME32_1; - state->total_len = 0; - state->memsize = 0; - return XXH_OK; -} - -XXH_errorcode XXH64_reset(XXH64_state_t *state_in, unsigned long long seed) -{ - XXH_istate64_t *state = (XXH_istate64_t *) state_in; - state->seed = seed; - state->v1 = seed + PRIME64_1 + PRIME64_2; - state->v2 = seed + PRIME64_2; - state->v3 = seed + 0; - state->v4 = seed - PRIME64_1; - state->total_len = 0; - state->memsize = 0; - return XXH_OK; -} - - -FORCE_INLINE XXH_errorcode XXH32_update_endian(XXH32_state_t *state_in, - const void *input, size_t len, XXH_endianess endian) -{ - XXH_istate32_t *state = (XXH_istate32_t *) state_in; - const BYTE *p = (const BYTE *)input; - const BYTE *const bEnd = p + len; - -#ifdef XXH_ACCEPT_NULL_INPUT_POINTER - if (input == NULL) return XXH_ERROR; -#endif - - state->total_len += len; - - if (state->memsize + len < 16) // fill in tmp buffer - { - XXH_memcpy((BYTE *)(state->mem32) + state->memsize, input, len); - state->memsize += (U32)len; - return XXH_OK; - } - - if (state->memsize) // some data left from previous update - { - XXH_memcpy((BYTE *)(state->mem32) + state->memsize, input, - 16 - state->memsize); - { - const U32 *p32 = state->mem32; - state->v1 += XXH_readLE32(p32, endian) * PRIME32_2; - state->v1 = XXH_rotl32(state->v1, 13); - state->v1 *= PRIME32_1; - p32++; - state->v2 += XXH_readLE32(p32, endian) * PRIME32_2; - state->v2 = XXH_rotl32(state->v2, 13); - state->v2 *= PRIME32_1; - p32++; - state->v3 += XXH_readLE32(p32, endian) * PRIME32_2; - state->v3 = XXH_rotl32(state->v3, 13); - state->v3 *= PRIME32_1; - p32++; - state->v4 += XXH_readLE32(p32, endian) * PRIME32_2; - state->v4 = XXH_rotl32(state->v4, 13); - state->v4 *= PRIME32_1; - p32++; - } - p += 16 - state->memsize; - state->memsize = 0; - } - - if (p <= bEnd - 16) - { - const BYTE *const limit = bEnd - 16; - U32 v1 = state->v1; - U32 v2 = state->v2; - U32 v3 = state->v3; - U32 v4 = state->v4; - - do - { - v1 += XXH_readLE32(p, endian) * PRIME32_2; - v1 = XXH_rotl32(v1, 13); - v1 *= PRIME32_1; - p += 4; - v2 += XXH_readLE32(p, endian) * PRIME32_2; - v2 = XXH_rotl32(v2, 13); - v2 *= PRIME32_1; - p += 4; - v3 += XXH_readLE32(p, endian) * PRIME32_2; - v3 = XXH_rotl32(v3, 13); - v3 *= PRIME32_1; - p += 4; - v4 += XXH_readLE32(p, endian) * PRIME32_2; - v4 = XXH_rotl32(v4, 13); - v4 *= PRIME32_1; - p += 4; - } - while (p <= limit); - - state->v1 = v1; - state->v2 = v2; - state->v3 = v3; - state->v4 = v4; - } - - if (p < bEnd) - { - XXH_memcpy(state->mem32, p, bEnd - p); - state->memsize = (int)(bEnd - p); - } - - return XXH_OK; -} - -XXH_errorcode XXH32_update(XXH32_state_t *state_in, const void *input, - size_t len) -{ - XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; - - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH32_update_endian(state_in, input, len, XXH_littleEndian); - else - return XXH32_update_endian(state_in, input, len, XXH_bigEndian); -} - - - -FORCE_INLINE U32 XXH32_digest_endian(const XXH32_state_t *state_in, - XXH_endianess endian) -{ - XXH_istate32_t *state = (XXH_istate32_t *) state_in; - const BYTE *p = (const BYTE *)state->mem32; - BYTE *bEnd = (BYTE *)(state->mem32) + state->memsize; - U32 h32; - - if (state->total_len >= 16) - h32 = XXH_rotl32(state->v1, 1) + XXH_rotl32(state->v2, - 7) + XXH_rotl32(state->v3, 12) + XXH_rotl32(state->v4, 18); - else - h32 = state->seed + PRIME32_5; - - h32 += (U32) state->total_len; - - while (p + 4 <= bEnd) - { - h32 += XXH_readLE32(p, endian) * PRIME32_3; - h32 = XXH_rotl32(h32, 17) * PRIME32_4; - p += 4; - } - - while (p < bEnd) - { - h32 += (*p) * PRIME32_5; - h32 = XXH_rotl32(h32, 11) * PRIME32_1; - p++; - } - - h32 ^= h32 >> 15; - h32 *= PRIME32_2; - h32 ^= h32 >> 13; - h32 *= PRIME32_3; - h32 ^= h32 >> 16; - - return h32; -} - - -U32 XXH32_digest(const XXH32_state_t *state_in) -{ - XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; - - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH32_digest_endian(state_in, XXH_littleEndian); - else - return XXH32_digest_endian(state_in, XXH_bigEndian); -} - - -FORCE_INLINE XXH_errorcode XXH64_update_endian(XXH64_state_t *state_in, - const void *input, size_t len, XXH_endianess endian) -{ - XXH_istate64_t *state = (XXH_istate64_t *) state_in; - const BYTE *p = (const BYTE *)input; - const BYTE *const bEnd = p + len; - -#ifdef XXH_ACCEPT_NULL_INPUT_POINTER - if (input == NULL) return XXH_ERROR; -#endif - - state->total_len += len; - - if (state->memsize + len < 32) // fill in tmp buffer - { - XXH_memcpy(((BYTE *)state->mem64) + state->memsize, input, len); - state->memsize += (U32)len; - return XXH_OK; - } - - if (state->memsize) // some data left from previous update - { - XXH_memcpy(((BYTE *)state->mem64) + state->memsize, input, - 32 - state->memsize); - { - const U64 *p64 = state->mem64; - state->v1 += XXH_readLE64(p64, endian) * PRIME64_2; - state->v1 = XXH_rotl64(state->v1, 31); - state->v1 *= PRIME64_1; - p64++; - state->v2 += XXH_readLE64(p64, endian) * PRIME64_2; - state->v2 = XXH_rotl64(state->v2, 31); - state->v2 *= PRIME64_1; - p64++; - state->v3 += XXH_readLE64(p64, endian) * PRIME64_2; - state->v3 = XXH_rotl64(state->v3, 31); - state->v3 *= PRIME64_1; - p64++; - state->v4 += XXH_readLE64(p64, endian) * PRIME64_2; - state->v4 = XXH_rotl64(state->v4, 31); - state->v4 *= PRIME64_1; - p64++; - } - p += 32 - state->memsize; - state->memsize = 0; - } - - if (p + 32 <= bEnd) - { - const BYTE *const limit = bEnd - 32; - U64 v1 = state->v1; - U64 v2 = state->v2; - U64 v3 = state->v3; - U64 v4 = state->v4; - - do - { - v1 += XXH_readLE64(p, endian) * PRIME64_2; - v1 = XXH_rotl64(v1, 31); - v1 *= PRIME64_1; - p += 8; - v2 += XXH_readLE64(p, endian) * PRIME64_2; - v2 = XXH_rotl64(v2, 31); - v2 *= PRIME64_1; - p += 8; - v3 += XXH_readLE64(p, endian) * PRIME64_2; - v3 = XXH_rotl64(v3, 31); - v3 *= PRIME64_1; - p += 8; - v4 += XXH_readLE64(p, endian) * PRIME64_2; - v4 = XXH_rotl64(v4, 31); - v4 *= PRIME64_1; - p += 8; - } - while (p <= limit); - - state->v1 = v1; - state->v2 = v2; - state->v3 = v3; - state->v4 = v4; - } - - if (p < bEnd) - { - XXH_memcpy(state->mem64, p, bEnd - p); - state->memsize = (int)(bEnd - p); - } - - return XXH_OK; -} - -XXH_errorcode XXH64_update(XXH64_state_t *state_in, const void *input, - size_t len) -{ - XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; - - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH64_update_endian(state_in, input, len, XXH_littleEndian); - else - return XXH64_update_endian(state_in, input, len, XXH_bigEndian); -} - - - -FORCE_INLINE U64 XXH64_digest_endian(const XXH64_state_t *state_in, - XXH_endianess endian) -{ - XXH_istate64_t *state = (XXH_istate64_t *) state_in; - const BYTE *p = (const BYTE *)state->mem64; - BYTE *bEnd = (BYTE *)state->mem64 + state->memsize; - U64 h64; - - if (state->total_len >= 32) - { - U64 v1 = state->v1; - U64 v2 = state->v2; - U64 v3 = state->v3; - U64 v4 = state->v4; - - h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, - 12) + XXH_rotl64(v4, 18); - - v1 *= PRIME64_2; - v1 = XXH_rotl64(v1, 31); - v1 *= PRIME64_1; - h64 ^= v1; - h64 = h64 * PRIME64_1 + PRIME64_4; - - v2 *= PRIME64_2; - v2 = XXH_rotl64(v2, 31); - v2 *= PRIME64_1; - h64 ^= v2; - h64 = h64 * PRIME64_1 + PRIME64_4; - - v3 *= PRIME64_2; - v3 = XXH_rotl64(v3, 31); - v3 *= PRIME64_1; - h64 ^= v3; - h64 = h64 * PRIME64_1 + PRIME64_4; - - v4 *= PRIME64_2; - v4 = XXH_rotl64(v4, 31); - v4 *= PRIME64_1; - h64 ^= v4; - h64 = h64 * PRIME64_1 + PRIME64_4; - } - else - h64 = state->seed + PRIME64_5; - - h64 += (U64) state->total_len; - - while (p + 8 <= bEnd) - { - U64 k1 = XXH_readLE64(p, endian); - k1 *= PRIME64_2; - k1 = XXH_rotl64(k1, 31); - k1 *= PRIME64_1; - h64 ^= k1; - h64 = XXH_rotl64(h64, 27) * PRIME64_1 + PRIME64_4; - p += 8; - } - - if (p + 4 <= bEnd) - { - h64 ^= (U64)(XXH_readLE32(p, endian)) * PRIME64_1; - h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3; - p += 4; - } - - while (p < bEnd) - { - h64 ^= (*p) * PRIME64_5; - h64 = XXH_rotl64(h64, 11) * PRIME64_1; - p++; - } - - h64 ^= h64 >> 33; - h64 *= PRIME64_2; - h64 ^= h64 >> 29; - h64 *= PRIME64_3; - h64 ^= h64 >> 32; - - return h64; -} - - -unsigned long long XXH64_digest(const XXH64_state_t *state_in) -{ - XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; - - if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) - return XXH64_digest_endian(state_in, XXH_littleEndian); - else - return XXH64_digest_endian(state_in, XXH_bigEndian); -} - - diff --git a/external/lsquic/src/lshpack/deps/xxhash/xxhash.h b/external/lsquic/src/lshpack/deps/xxhash/xxhash.h deleted file mode 100644 index 45ecc9d..0000000 --- a/external/lsquic/src/lshpack/deps/xxhash/xxhash.h +++ /dev/null @@ -1,160 +0,0 @@ -/* - xxHash - Extremely Fast Hash algorithm - Header File - Copyright (C) 2012-2014, Yann Collet. - BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following disclaimer - in the documentation and/or other materials provided with the - distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - You can contact the author at : - - xxHash source repository : http://code.google.com/p/xxhash/ -*/ - -/* Notice extracted from xxHash homepage : - -xxHash is an extremely fast Hash algorithm, running at RAM speed limits. -It also successfully passes all tests from the SMHasher suite. - -Comparison (single thread, Windows Seven 32 bits, using SMHasher on a Core 2 Duo @3GHz) - -Name Speed Q.Score Author -xxHash 5.4 GB/s 10 -CrapWow 3.2 GB/s 2 Andrew -MumurHash 3a 2.7 GB/s 10 Austin Appleby -SpookyHash 2.0 GB/s 10 Bob Jenkins -SBox 1.4 GB/s 9 Bret Mulvey -Lookup3 1.2 GB/s 9 Bob Jenkins -SuperFastHash 1.2 GB/s 1 Paul Hsieh -CityHash64 1.05 GB/s 10 Pike & Alakuijala -FNV 0.55 GB/s 5 Fowler, Noll, Vo -CRC32 0.43 GB/s 9 -MD5-32 0.33 GB/s 10 Ronald L. Rivest -SHA1-32 0.28 GB/s 10 - -Q.Score is a measure of quality of the hash function. -It depends on successfully passing SMHasher test set. -10 is a perfect score. -*/ - -#pragma once - -#if defined (__cplusplus) -extern "C" { -#endif - - -/***************************** - Includes -*****************************/ -#include /* size_t */ - - -/***************************** - Type -*****************************/ -typedef enum { XXH_OK = 0, XXH_ERROR } XXH_errorcode; - - - -/***************************** - Simple Hash Functions -*****************************/ - -unsigned int XXH32(const void *input, size_t length, unsigned seed); -unsigned long long XXH64(const void *input, size_t length, - unsigned long long seed); - -/* -XXH32() : - Calculate the 32-bits hash of sequence "length" bytes stored at memory address "input". - The memory between input & input+length must be valid (allocated and read-accessible). - "seed" can be used to alter the result predictably. - This function successfully passes all SMHasher tests. - Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark) : 5.4 GB/s -XXH64() : - Calculate the 64-bits hash of sequence of length "len" stored at memory address "input". -*/ - - - -/***************************** - Advanced Hash Functions -*****************************/ -typedef struct { long long ll[ 6]; } XXH32_state_t; -typedef struct { long long ll[11]; } XXH64_state_t; - -/* -These structures allow static allocation of XXH states. -States must then be initialized using XXHnn_reset() before first use. - -If you prefer dynamic allocation, please refer to functions below. -*/ - -XXH32_state_t *XXH32_createState(void); -XXH_errorcode XXH32_freeState(XXH32_state_t *statePtr); - -XXH64_state_t *XXH64_createState(void); -XXH_errorcode XXH64_freeState(XXH64_state_t *statePtr); - -/* -These functions create and release memory for XXH state. -States must then be initialized using XXHnn_reset() before first use. -*/ - - -XXH_errorcode XXH32_reset(XXH32_state_t *statePtr, unsigned seed); -XXH_errorcode XXH32_update(XXH32_state_t *statePtr, const void *input, - size_t length); -unsigned int XXH32_digest(const XXH32_state_t *statePtr); - -XXH_errorcode XXH64_reset(XXH64_state_t *statePtr, - unsigned long long seed); -XXH_errorcode XXH64_update(XXH64_state_t *statePtr, const void *input, - size_t length); -unsigned long long XXH64_digest(const XXH64_state_t *statePtr); - -/* -These functions calculate the xxHash of an input provided in multiple smaller packets, -as opposed to an input provided as a single block. - -XXH state space must first be allocated, using either static or dynamic method provided above. - -Start a new hash by initializing state with a seed, using XXHnn_reset(). - -Then, feed the hash state by calling XXHnn_update() as many times as necessary. -Obviously, input must be valid, meaning allocated and read accessible. -The function returns an error code, with 0 meaning OK, and any other value meaning there is an error. - -Finally, you can produce a hash anytime, by using XXHnn_digest(). -This function returns the final nn-bits hash. -You can nonetheless continue feeding the hash state with more input, -and therefore get some new hashes, by calling again XXHnn_digest(). - -When you are done, don't forget to free XXH state space, using typically XXHnn_freeState(). -*/ - - -#if defined (__cplusplus) -} -#endif diff --git a/external/lsquic/src/lshpack/lsxpack_header.h b/external/lsquic/src/lshpack/lsxpack_header.h deleted file mode 100644 index c33472e..0000000 --- a/external/lsquic/src/lshpack/lsxpack_header.h +++ /dev/null @@ -1,169 +0,0 @@ -#ifndef LSXPACK_HEADER_H_v208 -#define LSXPACK_HEADER_H_v208 - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef LSXPACK_MAX_STRLEN -#define LSXPACK_MAX_STRLEN UINT16_MAX -#endif - -typedef int32_t lsxpack_offset_t; -#if LSXPACK_MAX_STRLEN == UINT16_MAX -typedef uint16_t lsxpack_strlen_t; -#elif LSXPACK_MAX_STRLEN == UINT32_MAX -typedef uint32_t lsxpack_strlen_t; -#else -#error unexpected LSXPACK_MAX_STRLEN -#endif - -#define LSXPACK_DEL ((char *)NULL) - -enum lsxpack_flag -{ - LSXPACK_HPACK_VAL_MATCHED = 1, - LSXPACK_QPACK_IDX = 2, - LSXPACK_APP_IDX = 4, - LSXPACK_NAME_HASH = 8, - LSXPACK_NAMEVAL_HASH = 16, - LSXPACK_VAL_MATCHED = 32, - LSXPACK_NEVER_INDEX = 64, -}; - -/** - * When header are decoded, it should be stored to @buf starting from @name_offset, - * : \r\n - * So, it can be used directly as HTTP/1.1 header. there are 4 extra characters - * added. - * - * limitation: we currently does not support total header size > 64KB. - */ - -struct lsxpack_header -{ - char *buf; /* the buffer for headers */ - uint32_t name_hash; /* hash value for name */ - uint32_t nameval_hash; /* hash value for name + value */ - lsxpack_offset_t name_offset; /* the offset for name in the buffer */ - lsxpack_offset_t val_offset; /* the offset for value in the buffer */ - lsxpack_strlen_t name_len; /* the length of name */ - lsxpack_strlen_t val_len; /* the length of value */ - uint16_t chain_next_idx; /* mainly for cookie value chain */ - uint8_t hpack_index; /* HPACK static table index */ - uint8_t qpack_index; /* QPACK static table index */ - uint8_t app_index; /* APP header index */ - enum lsxpack_flag flags:8; /* combination of lsxpack_flag */ - uint8_t indexed_type; /* control to disable index or not */ - uint8_t dec_overhead; /* num of extra bytes written to decoded buffer */ -}; - -typedef struct lsxpack_header lsxpack_header_t; - - -static inline void -lsxpack_header_set_idx(lsxpack_header_t *hdr, int hpack_idx, - const char *val, size_t val_len) -{ - memset(hdr, 0, sizeof(*hdr)); - hdr->buf = (char *)val; - hdr->hpack_index = (uint8_t)hpack_idx; - assert(hpack_idx != 0); - assert(val_len <= LSXPACK_MAX_STRLEN); - hdr->val_len = (lsxpack_strlen_t)val_len; -} - - -static inline void -lsxpack_header_set_qpack_idx(lsxpack_header_t *hdr, int qpack_idx, - const char *val, size_t val_len) -{ - memset(hdr, 0, sizeof(*hdr)); - hdr->buf = (char *)val; - hdr->qpack_index = (uint8_t)qpack_idx; - assert(qpack_idx != -1); - hdr->flags = LSXPACK_QPACK_IDX; - assert(val_len <= LSXPACK_MAX_STRLEN); - hdr->val_len = (lsxpack_strlen_t)val_len; -} - - -static inline void -lsxpack_header_set_offset(lsxpack_header_t *hdr, const char *buf, - size_t name_offset, size_t name_len, - size_t val_len) -{ - memset(hdr, 0, sizeof(*hdr)); - hdr->buf = (char *)buf; - hdr->name_offset = (lsxpack_offset_t)name_offset; - assert(name_len <= LSXPACK_MAX_STRLEN); - hdr->name_len = (lsxpack_strlen_t)name_len; - assert(name_offset + name_len + 2 <= LSXPACK_MAX_STRLEN); - hdr->val_offset = (lsxpack_offset_t)(name_offset + name_len + 2); - assert(val_len <= LSXPACK_MAX_STRLEN); - hdr->val_len = (lsxpack_strlen_t)val_len; -} - - -static inline void -lsxpack_header_set_offset2(lsxpack_header_t *hdr, const char *buf, - size_t name_offset, size_t name_len, - size_t val_offset, size_t val_len) -{ - memset(hdr, 0, sizeof(*hdr)); - hdr->buf = (char *)buf; - hdr->name_offset = (lsxpack_offset_t)name_offset; - assert(name_len <= LSXPACK_MAX_STRLEN); - hdr->name_len = (lsxpack_strlen_t)name_len; - assert(val_offset <= LSXPACK_MAX_STRLEN); - hdr->val_offset = (lsxpack_offset_t)val_offset; - assert(val_len <= LSXPACK_MAX_STRLEN); - hdr->val_len = (lsxpack_strlen_t)val_len; -} - - -static inline void -lsxpack_header_prepare_decode(lsxpack_header_t *hdr, - char *out, size_t offset, size_t len) -{ - memset(hdr, 0, sizeof(*hdr)); - hdr->buf = out; - assert(offset <= LSXPACK_MAX_STRLEN); - hdr->name_offset = (lsxpack_offset_t)offset; - if (len > LSXPACK_MAX_STRLEN) - hdr->val_len = LSXPACK_MAX_STRLEN; - else - hdr->val_len = (lsxpack_strlen_t)len; -} - - -static inline const char * -lsxpack_header_get_name(const lsxpack_header_t *hdr) -{ - return (hdr->name_len)? hdr->buf + hdr->name_offset : NULL; -} - - -static inline const char * -lsxpack_header_get_value(const lsxpack_header_t *hdr) -{ return hdr->buf + hdr->val_offset; } - -static inline size_t -lsxpack_header_get_dec_size(const lsxpack_header_t *hdr) -{ return hdr->name_len + hdr->val_len + hdr->dec_overhead; } - -static inline void -lsxpack_header_mark_val_changed(lsxpack_header_t *hdr) -{ - hdr->flags = (enum lsxpack_flag)(hdr->flags & - ~(LSXPACK_HPACK_VAL_MATCHED|LSXPACK_VAL_MATCHED|LSXPACK_NAMEVAL_HASH)); -} -#ifdef __cplusplus -} -#endif - -#endif //LSXPACK_HEADER_H_v208 diff --git a/external/lsquic/src/lshpack/test/CMakeLists.txt b/external/lsquic/src/lshpack/test/CMakeLists.txt deleted file mode 100644 index d8e7f85..0000000 --- a/external/lsquic/src/lshpack/test/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -ENABLE_TESTING() - -FOREACH(HASH 0 1) - FOREACH(HTTP 0 1) - ADD_EXECUTABLE(test_hpack_hash${HASH}_http${HTTP} test_hpack.c ../lshpack.c ../deps/xxhash/xxhash.c) - SET_TARGET_PROPERTIES(test_hpack_hash${HASH}_http${HTTP} - PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLSHPACK_DEC_HTTP1X_OUTPUT=${HTTP} -DLSHPACK_DEC_CALC_HASH=${HASH}") - ADD_TEST(hpack-hash${HASH}-http${HTTP} test_hpack_hash${HASH}_http${HTTP}) - ENDFOREACH(HTTP) -ENDFOREACH(HASH) - -ADD_EXECUTABLE(test_int test_int.c ../deps/xxhash/xxhash.c) -TARGET_LINK_LIBRARIES(test_int ls-hpack) -ADD_TEST(int test_int) diff --git a/external/lsquic/src/lshpack/test/lshpack-test.h b/external/lsquic/src/lshpack/test/lshpack-test.h deleted file mode 100644 index 4c41cfa..0000000 --- a/external/lsquic/src/lshpack/test/lshpack-test.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef LITESPEED_HPACK_TEST_H -#define LITESPEED_HPACK_TEST_H 1 - -#define LSHPACK_XXH_SEED 39378473 - -struct lsxpack_header; - -struct enc_dyn_table_entry -{ - const char *name, /* Not NUL-terminated */ - *value; /* Not NUL-terminated */ - unsigned name_len, - value_len; - unsigned entry_id; -}; - -unsigned -lshpack_enc_get_static_name (const struct lsxpack_header *); - -unsigned -lshpack_enc_get_static_nameval (const struct lsxpack_header *); - -int -lshpack_enc_push_entry (struct lshpack_enc *enc, const struct lsxpack_header *); - -int -lshpack_enc_enc_str (unsigned char *const dst, size_t dst_len, - const unsigned char *str, unsigned str_len); - -typedef void * enc_iter_t; - -void -lshpack_enc_iter_init (struct lshpack_enc *enc, void **iter); - -/* Returns 0 if entry is found */ -int -lshpack_enc_iter_next (struct lshpack_enc *enc, void **iter, - struct enc_dyn_table_entry *); - -int -lshpack_dec_dec_int (const unsigned char **src, const unsigned char *src_end, - unsigned prefix_bits, uint32_t *value); -int -lshpack_dec_push_entry (struct lshpack_dec *dec, - const struct lsxpack_header *xhdr); - -unsigned char * -lshpack_enc_enc_int (unsigned char *dst, unsigned char *const end, uint32_t value, - uint8_t prefix_bits); - - - -#endif diff --git a/external/lsquic/src/lshpack/test/test_hpack.c b/external/lsquic/src/lshpack/test/test_hpack.c deleted file mode 100644 index 9d6d627..0000000 --- a/external/lsquic/src/lshpack/test/test_hpack.c +++ /dev/null @@ -1,11649 +0,0 @@ -/* - * Test hpack: encode a bunch of headers, decode and compare. - */ - -#include -#include -#include -#include -#include -#include -#include - -#include "lshpack.h" -#include "lshpack-test.h" -#include "xxhash.h" - -int -lshpack_dec_huff_decode (const unsigned char *src, int src_len, - unsigned char *dst, int dst_len); -#if LS_HPACK_USE_LARGE_TABLES -int -lshpack_dec_huff_decode_full (const unsigned char *src, int src_len, - unsigned char *dst, int dst_len); -#endif -int -lshpack_enc_huff_encode (const unsigned char *src, - const unsigned char *const src_end, unsigned char *const dst, - int dst_len); - -struct mod_iovec -{ - char iov_base[200]; - size_t iov_len; -}; - - -struct http_header -{ - struct mod_iovec name; - struct mod_iovec value; -}; - -#define N_HEADERS 10001 -static struct http_header header_arr[N_HEADERS]; - -#define STR_TO_IOVEC_TEST(a) ((char *)a), (sizeof(a) -1) - -#define STR_AND_LEN(a) (a), (sizeof(a) -1) - -#define IOV(v) { .iov_base = (v), .iov_len = sizeof(v) - 1, } - -struct table_elem -{ - const char *name; - unsigned name_len; - const char *val; - unsigned val_len; -}; - -static struct table_elem g_hpack_dyn_init_table_t[] = -{ - {STR_AND_LEN("content-length"), STR_AND_LEN("2145") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"1e0c-54feefd5-7bfd383f\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("31793") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"3235d-54feefd5-9d7c08af\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("407") }, - {STR_AND_LEN("content-type"), STR_AND_LEN("text/css") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"6bc-54feefd5-a7725cbd\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("1884") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"1b5a-54feefd5-b6a3dc2a\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("2308") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"1aee-54feefd5-1d91a5e4\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("702") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"5f8-54feefd5-197a93f1\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("556") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"52b-54feefd5-e6075901\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("6913") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"5767-54feefd5-4a868698\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("6724") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"64de-54feefd5-fb73534f\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("2568") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"2530-54feefd5-cccfff57\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("973") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"b00-54feefd5-e48546d\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("709") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"6a4-54feefd5-82d8609d\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("6520") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"5b0d-54feefd5-44735f27\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("3954") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"22ac-54feefd5-600b05fd\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("32825") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"16bb3-54feefd5-d669865d\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("1055") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"a37-54feefd5-59e4760e\"") }, - {STR_AND_LEN("date"), STR_AND_LEN("Tue, 10 Mar 2015 19:00:06 GMT") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("737") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"63d-54feefd5-c244a03a\"") }, - {STR_AND_LEN("expires"), STR_AND_LEN("Tue, 17 Mar 2015 19:00:06 GMT") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("3205") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"37cf-54feefd5-10e8e54\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("6336") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"58d9-54feefd5-f0d60c72\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("2707") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"285b-54feefd5-2e2834bf\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("9050") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"87ed-54feefd5-741b49ef\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("7562") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"795a-54feefd5-9e535995\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("8780") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"9759-54feefd5-6c09a64d\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("1842") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"1288-54feefd5-51ae6c5a\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("9153") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"a2af-54feefd5-83098d2b\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("437") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"2eb-54feefd5-26eef95\"") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("37451") }, - {STR_AND_LEN("content-type"), STR_AND_LEN("application/javascript") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"27df1-54feefd5-fe76c415\"") }, - {STR_AND_LEN("expires"), STR_AND_LEN("Tue, 17 Mar 2015 19:00:05 GMT") }, - {STR_AND_LEN("cache-control"), STR_AND_LEN("public, max-age=604800") }, - {STR_AND_LEN("server"), STR_AND_LEN("LiteSpeed") }, - {STR_AND_LEN("accept-ranges"), STR_AND_LEN("bytes") }, - {STR_AND_LEN("date"), STR_AND_LEN("Tue, 10 Mar 2015 19:00:05 GMT") }, - {STR_AND_LEN("vary"), STR_AND_LEN("Accept-Encoding") }, - {STR_AND_LEN("content-encoding"), STR_AND_LEN("gzip") }, - {STR_AND_LEN("content-length"), STR_AND_LEN("5298") }, - {STR_AND_LEN("content-type"), STR_AND_LEN("text/html") }, - {STR_AND_LEN("last-modified"), STR_AND_LEN("Tue, 10 Mar 2015 13:21:25 GMT") }, - {STR_AND_LEN("etag"), STR_AND_LEN("\"748f-54feefd5-dca65763\"") }, -}; - - -static struct table_elem g_HpackStaticTableTset[] = -{ - { STR_AND_LEN(":authority"), STR_AND_LEN("") }, - { STR_AND_LEN(":method"), STR_AND_LEN("GET") }, - { STR_AND_LEN(":method"), STR_AND_LEN("POST") }, - { STR_AND_LEN(":path"), STR_AND_LEN("/") }, - { STR_AND_LEN(":path"), STR_AND_LEN("/index.html") }, - { STR_AND_LEN(":scheme"), STR_AND_LEN("http") }, - { STR_AND_LEN(":scheme"), STR_AND_LEN("https") }, - { STR_AND_LEN(":status"), STR_AND_LEN("200") }, - { STR_AND_LEN(":status"), STR_AND_LEN("204") }, - { STR_AND_LEN(":status"), STR_AND_LEN("206") }, - { STR_AND_LEN(":status"), STR_AND_LEN("304") }, - { STR_AND_LEN(":status"), STR_AND_LEN("400") }, - { STR_AND_LEN(":status"), STR_AND_LEN("404") }, - { STR_AND_LEN(":status"), STR_AND_LEN("500") }, - { STR_AND_LEN("accept-charset"), STR_AND_LEN("") }, - { STR_AND_LEN("accept-encoding"), STR_AND_LEN("gzip, deflate") }, - { STR_AND_LEN("accept-language"), STR_AND_LEN("") }, - { STR_AND_LEN("accept-ranges"), STR_AND_LEN("") }, - { STR_AND_LEN("accept"), STR_AND_LEN("") }, - { STR_AND_LEN("access-control-allow-origin"), STR_AND_LEN("") }, - { STR_AND_LEN("age"), STR_AND_LEN("") }, - { STR_AND_LEN("allow"), STR_AND_LEN("") }, - { STR_AND_LEN("authorization"), STR_AND_LEN("") }, - { STR_AND_LEN("cache-control"), STR_AND_LEN("") }, - { STR_AND_LEN("content-disposition"), STR_AND_LEN("") }, - { STR_AND_LEN("content-encoding"), STR_AND_LEN("") }, - { STR_AND_LEN("content-language"), STR_AND_LEN("") }, - { STR_AND_LEN("content-length"), STR_AND_LEN("") }, - { STR_AND_LEN("content-location"), STR_AND_LEN("") }, - { STR_AND_LEN("content-range"), STR_AND_LEN("") }, - { STR_AND_LEN("content-type"), STR_AND_LEN("") }, - { STR_AND_LEN("cookie"), STR_AND_LEN("") }, - { STR_AND_LEN("date"), STR_AND_LEN("") }, - { STR_AND_LEN("etag"), STR_AND_LEN("") }, - { STR_AND_LEN("expect"), STR_AND_LEN("") }, - { STR_AND_LEN("expires"), STR_AND_LEN("") }, - { STR_AND_LEN("from"), STR_AND_LEN("") }, - { STR_AND_LEN("host"), STR_AND_LEN("") }, - { STR_AND_LEN("if-match"), STR_AND_LEN("") }, - { STR_AND_LEN("if-modified-since"), STR_AND_LEN("") }, - { STR_AND_LEN("if-none-match"), STR_AND_LEN("") }, - { STR_AND_LEN("if-range"), STR_AND_LEN("") }, - { STR_AND_LEN("if-unmodified-since"), STR_AND_LEN("") }, - { STR_AND_LEN("last-modified"), STR_AND_LEN("") }, - { STR_AND_LEN("link"), STR_AND_LEN("") }, - { STR_AND_LEN("location"), STR_AND_LEN("") }, - { STR_AND_LEN("max-forwards"), STR_AND_LEN("") }, - { STR_AND_LEN("proxy-authenticate"), STR_AND_LEN("") }, - { STR_AND_LEN("proxy-authorization"), STR_AND_LEN("") }, - { STR_AND_LEN("range"), STR_AND_LEN("") }, - { STR_AND_LEN("referer"), STR_AND_LEN("") }, - { STR_AND_LEN("refresh"), STR_AND_LEN("") }, - { STR_AND_LEN("retry-after"), STR_AND_LEN("") }, - { STR_AND_LEN("server"), STR_AND_LEN("") }, - { STR_AND_LEN("set-cookie"), STR_AND_LEN("") }, - { STR_AND_LEN("strict-transport-security"), STR_AND_LEN("") }, - { STR_AND_LEN("transfer-encoding"), STR_AND_LEN("") }, - { STR_AND_LEN("user-agent"), STR_AND_LEN("") }, - { STR_AND_LEN("vary"), STR_AND_LEN("") }, - { STR_AND_LEN("via"), STR_AND_LEN("") }, - { STR_AND_LEN("www-authenticate"), STR_AND_LEN("") } -}; - - -static int -decode_and_check_hashes (struct lshpack_dec *dec, - const unsigned char **src, const unsigned char *src_end, - struct lsxpack_header *xhdr) -{ - uint32_t hash; - int s; - - s = lshpack_dec_decode(dec, src, src_end, xhdr); - if (s == 0) - { -#if LSHPACK_DEC_CALC_HASH - assert(xhdr->flags & LSXPACK_NAME_HASH); -#endif - if (xhdr->flags & LSXPACK_NAME_HASH) - { - hash = XXH32(lsxpack_header_get_name(xhdr), xhdr->name_len, - LSHPACK_XXH_SEED); - assert(hash == xhdr->name_hash); - } - -#if LSHPACK_DEC_CALC_HASH - { - /* This is not required by the API, but internally, if the library - * calculates nameval hash, it should also set the name hash. - */ - assert(xhdr->flags & LSXPACK_NAME_HASH); - assert(xhdr->flags & LSXPACK_NAMEVAL_HASH); - } -#endif - - if (xhdr->flags & LSXPACK_NAMEVAL_HASH) - { - hash = XXH32(lsxpack_header_get_name(xhdr), xhdr->name_len, - LSHPACK_XXH_SEED); - hash = XXH32(lsxpack_header_get_value(xhdr), xhdr->val_len, hash); - assert(hash == xhdr->nameval_hash); - } - } - return s; -} - - -void displayHeader(unsigned char *buf, int len) -{ - int i; - for (i = 0; i < len / 16; ++i) - { - printf("%02x%02x %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x | \n", - buf[i * 16 + 0], buf[i * 16 + 1], buf[i * 16 + 2], buf[i * 16 + 3], - buf[i * 16 + 4], buf[i * 16 + 5], buf[i * 16 + 6], buf[i * 16 + 7], - buf[i * 16 + 8], buf[i * 16 + 9], buf[i * 16 + 10], buf[i * 16 + 11], - buf[i * 16 + 12], buf[i * 16 + 13], buf[i * 16 + 14], buf[i * 16 + 15]); - } - - i *= 16; - for (; i < len; ++i) - printf(((i % 2 == 0) ? "%02x" : "%02x "), buf[i]); - printf("\n"); - -} - - -static void -printTable (struct lshpack_enc *enc) -{ - struct enc_dyn_table_entry entry; - void *iter; - lshpack_enc_iter_init(enc, &iter); - printf("Dynamic Table : \n"); - while (0 == lshpack_enc_iter_next(enc, &iter, &entry)) - printf("[%d] `%.*s' = `%.*s'\n", - entry.entry_id, entry.name_len, entry.name, entry.value_len, entry.value); -} - - -static inline void -lsxpack_header_set_ptr(lsxpack_header_t *hdr, - const char *name, size_t name_len, - const char *val, size_t val_len) -{ - static char buf[65536]; /* XXX be careful */ - memcpy(buf, name, name_len); - memcpy(&buf[name_len], val, val_len); - lsxpack_header_set_offset2(hdr, buf, 0, name_len, name_len, val_len); -} - - -static unsigned -lookup_static_table (const char *name, unsigned name_len, - const char *val, unsigned val_len, int *val_matched) -{ - struct lsxpack_header xhdr; - unsigned id; - - lsxpack_header_set_ptr(&xhdr, name, name_len, val, val_len); - xhdr.name_hash = XXH32(name, name_len, LSHPACK_XXH_SEED); - xhdr.nameval_hash = XXH32(val, val_len, xhdr.name_hash); - xhdr.flags |= LSXPACK_NAMEVAL_HASH | LSXPACK_NAME_HASH; - - id = lshpack_enc_get_static_nameval(&xhdr); - if (id) - { - *val_matched = 1; - return id; - } - - id = lshpack_enc_get_static_name(&xhdr); - if (id) - { - *val_matched = 0; - return id; - } - - return 0; -} - - -void testNameValue(const char *name, const char *val, int result, - int val_match_result) -{ - int val_match; - int index = lookup_static_table((char *)name, (unsigned)strlen(name) , - (char *)val, (unsigned)strlen(val), &val_match); - printf("name: %s, val: %s, index = %d match = %d\n", name, val, index, - val_match); - assert(index == result); - if (index) - assert(val_match == val_match_result); -} - - -static void -test_static_table_search_simple (void) -{ - testNameValue(":authority", "www.example.com", 1, 0); - testNameValue(":authority1", "www.example.com", 0, 0); - testNameValue(":authority", "www.example.com", 1, 0); - testNameValue(":authority1", "www.example.com", 0, 0); - - testNameValue(":method", "GET", 2, 1); - testNameValue(":method", "gET", 2, 0); - testNameValue(":method", "PURGE", 2, 0); - testNameValue(":method", "POST", 3, 1); - - testNameValue(":scheme", "http", 6, 1); - testNameValue(":scheme", "HTTP", 6, 0); - testNameValue(":scheme", "https", 7, 1); - testNameValue(":scheme", "httPS", 6, 0); - - // testNameValue("scheme", "http", 0, 0); - // testNameValue("scheme", "https", 0, 0); - - testNameValue(":status", "200", 8, 1); - testNameValue(":status", "401", 8, 0); - testNameValue(":status", "500", 14, 1); - // testNameValue(":status-xxx", "200", 0, 0); - - testNameValue("accept-encoding", "gzip, deflate", 16, 1); - testNameValue("accept-encoding", "gzip", 16, 0); - - testNameValue("accept-charset", "en", 15, 0); - testNameValue("accept-charset", "EN", 15, 0); - - testNameValue("age", "100", 21, 0); - testNameValue("age", "10000", 21, 0); - - testNameValue("www-authenticate", "wwwewe", 61, 0); - testNameValue("www-authenticate-", "dtertete", 0, 0); -} - - -static void -test_hpack_test_RFC_Example (void) -{ - unsigned char respBuf[8192] = {0}; - unsigned char *respBufEnd = respBuf + 8192; - - struct lshpack_enc henc; - struct lshpack_dec hdec; - - lshpack_enc_init(&henc); - lshpack_enc_set_max_capacity(&henc, 256); - - lshpack_dec_init(&hdec); - lshpack_dec_set_max_capacity(&hdec, 256); - - unsigned char *pBuf = respBuf; - lsxpack_header_t hdr; - - lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST(":status"), - STR_TO_IOVEC_TEST("302")); - pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); - lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("cache-control"), - STR_TO_IOVEC_TEST("private")); - pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); - lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("date"), - STR_TO_IOVEC_TEST("Mon, 21 Oct 2013 20:13:21 GMT")); - pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); - lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("location"), - STR_TO_IOVEC_TEST("https://www.example.com")); - pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); - displayHeader(respBuf, pBuf - respBuf); - printTable(&henc); - char bufSample1[] = - "\x48\x82\x64\x02\x58\x85\xae\xc3\x77\x1a\x4b\x61\x96\xd0\x7a\xbe" - "\x94\x10\x54\xd4\x44\xa8\x20\x05\x95\x04\x0b\x81\x66\xe0\x82\xa6" - "\x2d\x1b\xff\x6e\x91\x9d\x29\xad\x17\x18\x63\xc7\x8f\x0b\x97\xc8" - "\xe9\xae\x82\xae\x43\xd3"; - assert(memcmp(bufSample1, respBuf, pBuf - respBuf) == 0); - - - pBuf = respBuf; - lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST(":status"), - STR_TO_IOVEC_TEST("307")); - pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); - printTable(&henc); - lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("cache-control"), - STR_TO_IOVEC_TEST("private")); - pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); - printTable(&henc); - lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("date"), - STR_TO_IOVEC_TEST("Mon, 21 Oct 2013 20:13:21 GMT")); - pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); - printTable(&henc); - lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("location"), - STR_TO_IOVEC_TEST("https://www.example.com")); - pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); - displayHeader(respBuf, pBuf - respBuf); - printTable(&henc); - char bufSample2[] = "\x48\x83\x64\x0e\xff\xc1\xc0\xbf"; - assert(memcmp(bufSample2, respBuf, pBuf - respBuf) == 0); - - pBuf = respBuf; - lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST(":status"), - STR_TO_IOVEC_TEST("200")); - pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); - printTable(&henc); - lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("cache-control"), - STR_TO_IOVEC_TEST("private")); - pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); - printTable(&henc); - lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("date"), - STR_TO_IOVEC_TEST("Mon, 21 Oct 2013 20:13:22 GMT")); - pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); - printTable(&henc); - lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("location"), - STR_TO_IOVEC_TEST("https://www.example.com")); - pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); - printTable(&henc); - lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("content-encoding"), - STR_TO_IOVEC_TEST("gzip")); - pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); - printTable(&henc); - lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("set-cookie"), - STR_TO_IOVEC_TEST("foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1")); - pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); - printTable(&henc); - displayHeader(respBuf, pBuf - respBuf); - - - char bufSample3[] = - "\x88\xc1\x61\x96\xd0\x7a\xbe\x94\x10\x54\xd4\x44\xa8\x20\x05\x95" - "\x04\x0b\x81\x66\xe0\x84\xa6\x2d\x1b\xff\xc0\x5a\x83\x9b\xd9\xab" - "\x77\xad\x94\xe7\x82\x1d\xd7\xf2\xe6\xc7\xb3\x35\xdf\xdf\xcd\x5b" - "\x39\x60\xd5\xaf\x27\x08\x7f\x36\x72\xc1\xab\x27\x0f\xb5\x29\x1f" - "\x95\x87\x31\x60\x65\xc0\x03\xed\x4e\xe5\xb1\x06\x3d\x50\x07"; - assert(memcmp(bufSample3, respBuf, pBuf - respBuf) == 0); - - - - /**************************** - * decHeader testing - * - ****************************/ - unsigned char *bufSamp4 = (unsigned char *) - "\x82\x86\x84\x41\x8c\xf1\xe3\xc2\xe5\xf2\x3a\x6b\xa0\xab\x90\xf4\xff"; - const unsigned char *pSrc = bufSamp4; - const unsigned char *bufEnd = bufSamp4 + strlen((const char *)bufSamp4); - int rc; - // AutoBuf autoBuf(2048); - // char name[1024]; - // char val[1024]; - char out[2048]; - while (pSrc < bufEnd) - { - lsxpack_header_prepare_decode(&hdr, out, 0, sizeof(out)); - rc = decode_and_check_hashes(&hdec, &pSrc, bufEnd, &hdr); - assert(rc == 0); - char *name = out; - char *val = hdr.buf + hdr.val_offset; - printf("%.*s: %.*s\n", hdr.name_len, name, hdr.val_len, val); - } - printTable(&henc); - - - unsigned char *bufSamp = (unsigned char *) - "\x82\x86\x84\xbe\x58\x86\xa8\xeb\x10\x64\x9c\xbf"; - pSrc = bufSamp; - bufEnd = bufSamp + strlen((const char *)bufSamp); - while (pSrc < bufEnd) - { - lsxpack_header_prepare_decode(&hdr, out, 0, sizeof(out)); - rc = decode_and_check_hashes(&hdec, &pSrc, bufEnd, &hdr); - assert(rc == 0); - char *name = out; - char *val = hdr.buf + hdr.val_offset; - printf("%.*s: %.*s\n", hdr.name_len, name, hdr.val_len, val); - } - - bufSamp = (unsigned char *) - "\x82\x87\x85\xbf\x40\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f\x89\x25\xa8\x49\xe9\x5b\xb8\xe8\xb4\xbf"; - pSrc = bufSamp; - bufEnd = bufSamp + strlen((const char *)bufSamp); - while (pSrc < bufEnd) - { - lsxpack_header_prepare_decode(&hdr, out, 0, sizeof(out)); - rc = decode_and_check_hashes(&hdec, &pSrc, bufEnd, &hdr); - assert(rc == 0); - char *name = out; - char *val = hdr.buf + hdr.val_offset; - printf("%.*s: %.*s\n", hdr.name_len, name, hdr.val_len, val); - } - - lshpack_enc_cleanup(&henc); - lshpack_dec_cleanup(&hdec); -} - - -static int -all_set_to (unsigned const char *buf, size_t bufsz, unsigned char val) -{ - unsigned n, count = 0; - for (n = 0; n < bufsz; ++n) - count += buf[n] == val; - return count == bufsz; -} - - -static unsigned char * -encode2_wrapper (struct lshpack_enc *enc, unsigned char *dst, - unsigned char *dst_end, const char *name, unsigned name_len, - const char *value, unsigned value_len, int indexed_type) -{ - struct lsxpack_header xhdr; - - lsxpack_header_set_ptr(&xhdr, name, name_len, value, value_len); - return lshpack_enc_encode(enc, dst, dst_end, &xhdr); -} - - -static void -test_decode_limits (void) -{ - unsigned char comp[0x100], *end; - const unsigned char *src; - char out[0x100]; - struct lshpack_enc henc; - struct lshpack_dec hdec; - int s; - unsigned enough[] = { 33, 34, 40, 50, 100, }; - unsigned not_enough[] = { 32, 31, 30, 10, 1, 0, }; - unsigned n; - struct lsxpack_header xhdr; - size_t written; - - lshpack_enc_init(&henc); - end = encode2_wrapper(&henc, comp, comp + sizeof(comp), - "some-header-name", 16, "some-header-value", 17, 0); - lshpack_enc_cleanup(&henc); - - lshpack_dec_init(&hdec); - - for (n = 0; n < sizeof(enough) / sizeof(enough[0]); ++n) - { - memset(out, 0xFA, sizeof(out)); - lsxpack_header_prepare_decode(&xhdr, out, 0, sizeof(out)); - src = comp; - s = decode_and_check_hashes(&hdec, &src, end, &xhdr); - assert(0 == s); - assert(src == end); - assert(16 == xhdr.name_len); - assert(17 == xhdr.val_len); - assert(0 == memcmp(lsxpack_header_get_name(&xhdr), "some-header-name", 16)); - assert(0 == memcmp(lsxpack_header_get_value(&xhdr), "some-header-value", 17)); - written = xhdr.name_len + xhdr.val_len + lshpack_dec_extra_bytes(&hdec); - assert(all_set_to((unsigned char *) out + written, - sizeof(out) - written, 0xFA)); - } - - for (n = 0; n < sizeof(not_enough) / sizeof(not_enough[0]); ++n) - { - memset(out, 0xFA, sizeof(out)); - lsxpack_header_prepare_decode(&xhdr, out, 0, not_enough[n]); - src = comp; - s = decode_and_check_hashes(&hdec, &src, end, &xhdr); - assert(s < 0); - assert(all_set_to((unsigned char *) out + not_enough[n], - sizeof(out) - not_enough[n], 0xFA)); - } - - lshpack_dec_cleanup(&hdec); -} - - -static void -test_hpack_self_enc_dec_test (void) -{ - unsigned char respBuf[8192] = {0}; - unsigned char *respBufEnd = respBuf + 8192; - struct lshpack_enc henc; - lshpack_enc_init(&henc); - struct lshpack_dec hdec; - lshpack_dec_init(&hdec); - const unsigned char *pSrc = respBuf; - const unsigned char *bufEnd; - int rc; - // AutoBuf autoBuf(2048); - // char name[1024]; - // char val[1024]; - char out[2048]; - struct lsxpack_header xhdr; - - lshpack_enc_set_max_capacity(&henc, 256); - lshpack_dec_set_max_capacity(&hdec, 256); - - unsigned char *pBuf = respBuf; - - //Reproduce bug with special charset - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, - STR_TO_IOVEC_TEST("content-disposition"), - STR_TO_IOVEC_TEST("inline; filename=\"Ekran Alıntısı.PNG\""), 0); - displayHeader(respBuf, pBuf - respBuf); - printTable(&henc); - - /**************************** - * decHeader testing - ****************************/ - pSrc = respBuf; - bufEnd = pBuf; - while (1) - { - lsxpack_header_prepare_decode(&xhdr, out, 0, sizeof(out)); - rc = decode_and_check_hashes(&hdec, &pSrc, bufEnd, &xhdr); - if (rc != 0) - break; - char *name = out + xhdr.name_offset; - char *val = out + xhdr.val_offset; - printf("%.*s: %.*s\n", (int) xhdr.name_len, name, - (int) xhdr.val_len, val); - } - printTable(&henc); - - - //1: - pBuf = respBuf; - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST(":status"), - STR_TO_IOVEC_TEST("200"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, - STR_TO_IOVEC_TEST("cache-control"), - STR_TO_IOVEC_TEST("public, max-age=1000"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("date"), - STR_TO_IOVEC_TEST("Mon, 21 Oct 2013 20:13:23 GMT"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("allow"), - STR_TO_IOVEC_TEST("*.*"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("location"), - STR_TO_IOVEC_TEST("https://www.example.com"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("my-test_key"), - STR_TO_IOVEC_TEST("my-test-values1111"), 0); - displayHeader(respBuf, pBuf - respBuf); - printTable(&henc); - - /**************************** - * decHeader testing - ****************************/ - pSrc = respBuf; - bufEnd = pBuf; - while (1) - { - lsxpack_header_prepare_decode(&xhdr, out, 0, sizeof(out)); - rc = decode_and_check_hashes(&hdec, &pSrc, bufEnd, &xhdr); - if (rc != 0) - break; - char *name = out + xhdr.name_offset; - char *val = out + xhdr.val_offset; - printf("%.*s: %.*s\n", (int) xhdr.name_len, name, - (int) xhdr.val_len, val); - } - printTable(&henc); - - //2: - pBuf = respBuf; - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST(":status"), - STR_TO_IOVEC_TEST("404"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, - STR_TO_IOVEC_TEST("cache-control"), - STR_TO_IOVEC_TEST("public, max-age=1000"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("allow"), - STR_TO_IOVEC_TEST("*.*"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("from"), - STR_TO_IOVEC_TEST("123456@mymail.com"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("host"), - STR_TO_IOVEC_TEST("www.host.com"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("vary"), - STR_TO_IOVEC_TEST("wsdsdsdfdsfues1111"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("via"), - STR_TO_IOVEC_TEST("m"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("range"), - STR_TO_IOVEC_TEST("1111"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("my-test_key2"), - STR_TO_IOVEC_TEST("my-test-values22222222222222"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, - STR_TO_IOVEC_TEST("my-test_key3333"), STR_TO_IOVEC_TEST("my-test-va3"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, - STR_TO_IOVEC_TEST("my-test_key44"), STR_TO_IOVEC_TEST("my-test-value444"), 0); - displayHeader(respBuf, pBuf - respBuf); - printTable(&henc); - - - /**************************** - * decHeader testing - ****************************/ - pSrc = respBuf; - bufEnd = pBuf; - while (1) - { - lsxpack_header_prepare_decode(&xhdr, out, 0, sizeof(out)); - rc = decode_and_check_hashes(&hdec, &pSrc, bufEnd, &xhdr); - if (rc != 0) - break; - char *name = out + xhdr.name_offset; - char *val = out + xhdr.val_offset; - printf("%.*s: %.*s\n", (int) xhdr.name_len, name, - (int) xhdr.val_len, val); - } - printTable(&henc); - - //3: - pBuf = respBuf; - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST(":status"), - STR_TO_IOVEC_TEST("307"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, - STR_TO_IOVEC_TEST("cache-control"), - STR_TO_IOVEC_TEST("public, max-age=1000"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("allow"), - STR_TO_IOVEC_TEST("*.*.*.*"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("from"), - STR_TO_IOVEC_TEST("123456@mymail.com"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("host"), - STR_TO_IOVEC_TEST("www.host.com"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, - STR_TO_IOVEC_TEST("my-test_key3333"), STR_TO_IOVEC_TEST("my-test-va3"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("vary"), - STR_TO_IOVEC_TEST("wsdsdsdfdsfues1111"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("via"), - STR_TO_IOVEC_TEST("mmmmm"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("my-test_key2"), - STR_TO_IOVEC_TEST("my-test-values22222222222222"), 0); - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, - STR_TO_IOVEC_TEST("my-test_key44"), STR_TO_IOVEC_TEST("my-test-value444"), 0); - displayHeader(respBuf, pBuf - respBuf); - printTable(&henc); - - /**************************** - * decHeader testing - ****************************/ - pSrc = respBuf; - bufEnd = pBuf; - while (1) - { - lsxpack_header_prepare_decode(&xhdr, out, 0, sizeof(out)); - rc = decode_and_check_hashes(&hdec, &pSrc, bufEnd, &xhdr); - if (rc != 0) - break; - char *name = out + xhdr.name_offset; - char *val = out + xhdr.val_offset; - printf("%.*s: %.*s\n", (int) xhdr.name_len, name, - (int) xhdr.val_len, val); - } - printTable(&henc); - - lshpack_enc_cleanup(&henc); - lshpack_dec_cleanup(&hdec); -} - - -static void -test_hpack_encode_and_decode (void) -{ - struct lshpack_enc henc; - lshpack_enc_init(&henc); - - struct lshpack_dec hdec; - lshpack_dec_init(&hdec); - - char out[1000]; - - unsigned char buf[0x100]; - unsigned char *const end = buf + sizeof(buf); - const unsigned char *dec = buf; - unsigned char *enc = buf; - - enc = encode2_wrapper(&henc, enc, end, - STR_TO_IOVEC_TEST(":authority"), - STR_TO_IOVEC_TEST("www.example.com"), 0); - assert(enc > buf); - - struct lsxpack_header xhdr; - lsxpack_header_prepare_decode(&xhdr, out, 0, sizeof(out)); - int rc = decode_and_check_hashes(&hdec, &dec, enc, &xhdr); - assert(rc == 0); - assert(xhdr.name_len == 10); - assert(xhdr.val_len == 15); - assert(dec == enc); - assert(0 == memcmp(lsxpack_header_get_name(&xhdr), ":authority", 10)); - assert(0 == memcmp(lsxpack_header_get_value(&xhdr), "www.example.com", 15)); - - lshpack_enc_cleanup(&henc); - lshpack_dec_cleanup(&hdec); -} - - -static void -test_hpack_self_enc_dec_test_firefox_error (void) -{ - unsigned char respBuf[8192] = {0}; - unsigned char *respBufEnd; - uint32_t name_hash, nameval_hash; - // Hpack hpack; - struct lshpack_enc henc; - lshpack_enc_init(&henc); - struct lshpack_dec hdec; - struct lsxpack_header xhdr; - lshpack_dec_init(&hdec); - int nCount = sizeof(g_hpack_dyn_init_table_t) / sizeof(struct table_elem); - int i; - for (i = nCount - 1; i >= 0; --i) - { - int val_match; - int staticTableIndex = lookup_static_table((char *) - g_hpack_dyn_init_table_t[i].name, - g_hpack_dyn_init_table_t[i].name_len, - (char *)g_hpack_dyn_init_table_t[i].val, - g_hpack_dyn_init_table_t[i].val_len, - &val_match); - - if (staticTableIndex <= 0) - printf("Error, not in static table. \n"); - - lsxpack_header_set_ptr(&xhdr, g_hpack_dyn_init_table_t[i].name, - g_hpack_dyn_init_table_t[i].name_len, g_hpack_dyn_init_table_t[i].val, - g_hpack_dyn_init_table_t[i].val_len); -#if LSHPACK_DEC_CALC_HASH - xhdr.name_hash = XXH32(g_hpack_dyn_init_table_t[i].name, - g_hpack_dyn_init_table_t[i].name_len, LSHPACK_XXH_SEED); - xhdr.flags |= LSXPACK_NAME_HASH; - xhdr.nameval_hash = XXH32(g_hpack_dyn_init_table_t[i].val, - g_hpack_dyn_init_table_t[i].val_len, xhdr.name_hash); - xhdr.flags |= LSXPACK_NAMEVAL_HASH; -#endif - lshpack_dec_push_entry(&hdec, &xhdr); - - name_hash = XXH32(g_hpack_dyn_init_table_t[i].name, - g_hpack_dyn_init_table_t[i].name_len, LSHPACK_XXH_SEED); - nameval_hash = XXH32(g_hpack_dyn_init_table_t[i].val, - g_hpack_dyn_init_table_t[i].val_len, name_hash); - - lsxpack_header_set_ptr(&xhdr, - (char *)g_hpack_dyn_init_table_t[i].name, - g_hpack_dyn_init_table_t[i].name_len, - (char *)g_hpack_dyn_init_table_t[i].val, - g_hpack_dyn_init_table_t[i].val_len); - xhdr.name_hash = name_hash; - xhdr.nameval_hash = nameval_hash; - xhdr.flags |= LSXPACK_NAMEVAL_HASH | LSXPACK_NAME_HASH; - lshpack_enc_push_entry(&henc, &xhdr); - - } - printTable(&henc); - - - char buf[] = - "\x88\xF9\x64\x96\xDF\x69\x7E\x94\x0B\xAA\x68\x1D\x8A\x08\x01\x6D" - "\x40\xBF\x70\x00\xB8\x07\x54\xC5\xA3\x7F\x62\x92\xFE\x42\x21\xBA" - "\xB3\x6D\x4A\x52\xCB\x23\x6B\x0D\xE1\x3E\x17\x05\x2F\xF3\xFF\x04" - "\x5F\x87\x35\x23\x98\xAC\x57\x54\xDF\x5C\x83\x69\xD7\x5B\x61\x96" - "\xDF\x69\x7E\x94\x08\x14\xD0\x3B\x14\x10\x02\xDA\x81\x7E\xE0\x01" - "\x70\x0E\xA9\x8B\x46\xFF\xFF\x01\xFF\x00"; - - int rc; - const unsigned char *pSrc = (unsigned char *)buf; - const unsigned char *bufEnd = (unsigned char *)buf + 90; - - //AutoBuf autoBuf(2048); - char out[2048]; - - unsigned char *pBuf = respBuf; - respBufEnd = respBuf + 8192; - - while (pSrc < bufEnd) - { - lsxpack_header_prepare_decode(&xhdr, out, 0, sizeof(out)); - rc = decode_and_check_hashes(&hdec, &pSrc, bufEnd, &xhdr); - assert(rc == 0); - - char *name = (char *) lsxpack_header_get_name(&xhdr); - char *val = (char *) lsxpack_header_get_value(&xhdr); - printf("%.*s: %.*s\n", (int) xhdr.name_len, name, (int) xhdr.val_len, val); - - pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, name, xhdr.name_len, - val, xhdr.val_len, 0); - } - - displayHeader(respBuf, pBuf - respBuf); - assert(memcmp(respBuf, buf, 90) == 0); - lshpack_enc_cleanup(&henc); - lshpack_dec_cleanup(&hdec); -} - - -static void -test_hdec_table_size_updates (void) -{ - const unsigned char *src; - struct lshpack_dec hdec; - char outbuf[0x100]; - struct lsxpack_header xhdr; - int s; - - /* Test 1: inline update of capacity larger than max results in an - * error. - */ - { - unsigned const char buf[] = { 0x20 | 0x1E, 0x88 }; - src = buf; - lshpack_dec_init(&hdec); - lshpack_dec_set_max_capacity(&hdec, 0x11); - lsxpack_header_prepare_decode(&xhdr, outbuf, 0, sizeof(outbuf)); - s = decode_and_check_hashes(&hdec, &src, src + sizeof(buf), &xhdr); - assert(s < 0); - assert(hdec.hpd_cur_max_capacity == 0x11); - lshpack_dec_cleanup(&hdec); - } - - /* Test 2: inline update of capacity smaller than max succeeds. - */ - { - unsigned const char buf[] = { 0x20 | 0x1E, 0x88 }; - src = buf; - lshpack_dec_init(&hdec); - lsxpack_header_prepare_decode(&xhdr, outbuf, 0, sizeof(outbuf)); - s = decode_and_check_hashes(&hdec, &src, src + sizeof(buf), &xhdr); - assert(s == 0); - assert(src == buf + sizeof(buf)); - assert(hdec.hpd_cur_max_capacity == 0x1E); - lshpack_dec_cleanup(&hdec); - } - - /* Test 3: Two consecutive inline size updates succeed. - * Just like in RFC 7541, section 4.1, we clear the table. - * - * " This mechanism can be used to completely clear entries from the - * " dynamic table by setting a maximum size of 0, which can subsequently - * " be restored. - */ - { - unsigned const char buf[] = { - 0x20 | 0x00, - 0x20 | 0x14, - 0x88, - }; - src = buf; - lshpack_dec_init(&hdec); - lsxpack_header_prepare_decode(&xhdr, outbuf, 0, sizeof(outbuf)); - s = decode_and_check_hashes(&hdec, &src, src + sizeof(buf), &xhdr); - assert(s == 0); - assert(src == buf + sizeof(buf)); - assert(hdec.hpd_cur_max_capacity == 0x14); - lshpack_dec_cleanup(&hdec); - } - - /* Test 4: header block with table update at the end fails. - */ - { - unsigned const char buf[] = { 0x20 | 0x1E, }; - src = buf; - lshpack_dec_init(&hdec); - lsxpack_header_prepare_decode(&xhdr, outbuf, 0, sizeof(outbuf)); - s = decode_and_check_hashes(&hdec, &src, src + sizeof(buf), &xhdr); - assert(s < 0); - lshpack_dec_cleanup(&hdec); - } - -} - - -/* Test that if empty buffer is given writing is not done */ -static void -test_henc_boundary1 (void) -{ - unsigned char *end; - struct lshpack_enc henc; - unsigned char outbuf[0x100]; - - lshpack_enc_init(&henc); - end = encode2_wrapper(&henc, outbuf, outbuf, - STR_AND_LEN("header"), STR_AND_LEN("value"), 0); - assert(end == outbuf); - lshpack_enc_cleanup(&henc); -} - - -/* Test that buffer boundaries are checked when integers are written. The - * way this is done is that we encode a bunch of entries and then encode - * a duplicate that refers to entry ID that, when encoded, is longer than - * one byte (ID >= 127). - */ -static void -test_henc_boundary2 (void) -{ - char buf[1]; - unsigned i; - unsigned char *end; - struct lshpack_enc henc; - unsigned char outbuf[0x100]; - - lshpack_enc_init(&henc); - - /* Generate entries 62 through 127: */ - for (i = 62; i <= 127; ++i) - { - buf[0] = i; - end = encode2_wrapper(&henc, outbuf, outbuf + sizeof(outbuf), - STR_AND_LEN("header"), buf, 1, 0); - assert(end > outbuf); - } - - /* Generate header/62 entry again, but only give one byte for output: */ - buf[0] = 62; - end = encode2_wrapper(&henc, outbuf, outbuf + 1, - STR_AND_LEN("header"), buf, 1, 0); - assert(end == outbuf); - - /* Try it again, this time giving full two bytes. This is a self-check, - * to make sure that the table ID is indeed two bytes long. - */ - buf[0] = 62; - end = encode2_wrapper(&henc, outbuf, outbuf + 2, - STR_AND_LEN("header"), buf, 1, 0); - assert(end == outbuf + 2); - - lshpack_enc_cleanup(&henc); -} - - -/* Test that non-ASCII values are compressed and uncompressed successfully. - * - * This tests the code to pick the non-compressed version over compressed - * version of the string if the compressed version is larger than the - * uncompressed version. - */ -static void -test_henc_nonascii (void) -{ - const char value[] = { 245, 246, 247, 248, 11, 255, }; - int s; - unsigned char *end; - const unsigned char *src; - struct lshpack_enc henc; - struct lshpack_dec hdec; - struct lsxpack_header xhdr; - unsigned char comp[0x100]; - char uncomp[0x100]; - - lshpack_enc_init(&henc); - end = encode2_wrapper(&henc, comp, comp + sizeof(comp), - STR_AND_LEN("header"), value, sizeof(value), 0); - assert(end > comp); - lshpack_enc_cleanup(&henc); - - lshpack_dec_init(&hdec); - src = comp; - lsxpack_header_prepare_decode(&xhdr, uncomp, 0, sizeof(uncomp)); - s = decode_and_check_hashes(&hdec, &src, end, &xhdr); - assert(s == 0); - assert(sizeof(value) == xhdr.val_len); - assert(0 == memcmp(value, lsxpack_header_get_value(&xhdr), xhdr.val_len)); - lshpack_dec_cleanup(&hdec); -} - - -/* Test encoding of string that compresses to a size of 127 bytes or more. - * This tests adjustment mechanism in lshpack_enc_huff_encode(). - */ -static void -test_henc_long_compressable (void) -{ - const char value[] = - "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - ; - int s; - unsigned char *end; - const unsigned char *src; - struct lshpack_enc henc; - struct lshpack_dec hdec; - struct lsxpack_header xhdr; - unsigned char comp[0x1000]; - char uncomp[0x1000]; - - lshpack_enc_init(&henc); - end = encode2_wrapper(&henc, comp, comp + sizeof(comp), - STR_AND_LEN("header"), value, sizeof(value), 0); - assert(end > comp); - lshpack_enc_cleanup(&henc); - - lshpack_dec_init(&hdec); - src = comp; - lsxpack_header_prepare_decode(&xhdr, uncomp, 0, sizeof(uncomp)); - s = decode_and_check_hashes(&hdec, &src, end, &xhdr); - assert(s == 0); - assert(sizeof(value) == xhdr.val_len); - assert(0 == memcmp(value, lsxpack_header_get_value(&xhdr), xhdr.val_len)); - lshpack_dec_cleanup(&hdec); -} - - -/* Test encoding of string that compresses to a size of 127 bytes or more. - * This tests adjustment mechanism in lshpack_enc_huff_encode(). - */ -static void -test_henc_long_uncompressable (void) -{ - const char value[] = { - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - }; - int s; - unsigned char *end; - const unsigned char *src; - struct lshpack_enc henc; - struct lshpack_dec hdec; - struct lsxpack_header xhdr; - unsigned char comp[0x1000]; - char uncomp[0x1000]; - - lshpack_enc_init(&henc); - end = encode2_wrapper(&henc, comp, comp + sizeof(comp), - STR_AND_LEN("header"), value, sizeof(value), 0); - assert(end > comp); - lshpack_enc_cleanup(&henc); - - lshpack_dec_init(&hdec); - src = comp; - lsxpack_header_prepare_decode(&xhdr, uncomp, 0, sizeof(uncomp)); - s = decode_and_check_hashes(&hdec, &src, end, &xhdr); - assert(s == 0); - assert(sizeof(value) == xhdr.val_len); - assert(0 == memcmp(value, lsxpack_header_get_value(&xhdr), xhdr.val_len)); - lshpack_dec_cleanup(&hdec); -} - - -static void -test_static_table_search_exhaustive (void) -{ - int i; - int count = sizeof(g_HpackStaticTableTset) / sizeof(struct table_elem); - assert(count == 61); - - int val_matched; - int id; - for (i = 0; i < count; ++i) - { - id = lookup_static_table((char *)g_HpackStaticTableTset[i].name, - g_HpackStaticTableTset[i].name_len, - (char *)g_HpackStaticTableTset[i].val, - g_HpackStaticTableTset[i].val_len, - &val_matched); - assert(id == i + 1); - assert(val_matched == 1); - } - - id = lookup_static_table((char *)":method", 7, (char *)"Get", 3, - &val_matched); - assert(id == 2); - assert(val_matched == 0); - - id = lookup_static_table((char *)":method", 7, (char *)"GGG", 3, - &val_matched); - assert(id == 2); - assert(val_matched == 0); - - id = lookup_static_table((char *)":method", 7, (char *)"gET", 3, - &val_matched); - assert(id == 2); - assert(val_matched == 0); - - id = lookup_static_table((char *)":method", 7, (char *)"GETsss", 6, - &val_matched); - assert(id == 2); - assert(val_matched == 0); - - id = lookup_static_table((char *)":method", 7, (char *)"GETsss", 3, - &val_matched); - assert(id == 2); - assert(val_matched == 1); - - id = lookup_static_table((char *)":method", 7, (char *)"POST", 4, - &val_matched); - assert(id == 3); - assert(val_matched == 1); - - id = lookup_static_table((char *)":status", 7, (char *)"POST", 4, - &val_matched); - assert(id == 8); - assert(val_matched == 0); - - id = lookup_static_table((char *)":status", 7, (char *)"2000", 4, - &val_matched); - assert(id == 8); - assert(val_matched == 0); - - printf("%s Done.\n", __func__); -} - - -static void -test_huffman_encoding_corner_cases (void) -{ - int s; - unsigned char buf[0x10]; - - memset(buf, 0, sizeof(buf)); - s = lshpack_enc_enc_str(buf, sizeof(buf), (unsigned char *) "a", 1); - assert(2 == s); - assert(0 == buf[2]); - - memset(buf, 0, sizeof(buf)); - s = lshpack_enc_enc_str(buf, 1, (unsigned char *) "a", 1); - assert(-1 == s); - assert(0 == buf[0]); - - memset(buf, 0, sizeof(buf)); - s = lshpack_enc_enc_str(buf, 1, (unsigned char *) "a", 0); - assert(1 == s); - assert(0 == buf[1]); - - memset(buf, 0, sizeof(buf)); - s = lshpack_enc_enc_str(buf, 0, (unsigned char *) "a", 1); - assert(-1 == s); - assert(0 == buf[0]); - - memset(buf, 0, sizeof(buf)); - s = lshpack_enc_enc_str(buf, 1, (unsigned char *) "a", 1000); - assert(-1 == s); - assert(0 == buf[1]); - - memset(buf, 0, sizeof(buf)); - s = lshpack_enc_enc_str(buf, 3, (unsigned char *) "zzz", 3); - assert(-1 == s); - - memset(buf, 0, sizeof(buf)); - s = lshpack_enc_enc_str(buf, 4, (unsigned char *) "zzz", 3); - assert(4 == s); -} - - -static void -test_header_arr (void) -{ - unsigned i; - struct { - unsigned char *buf; - unsigned sz, nalloc; - } compressed = { NULL, 0, 0, }; - unsigned char tmp_buf[0x100]; - const unsigned char *end, *comp; - struct lsxpack_header xhdr; - int s; - char out[0x1000]; - struct lshpack_dec hdec; - struct lshpack_enc henc; - lsxpack_header_t hdr; - - /* Compress headers, putting them into a single contiguous memory block */ - lshpack_enc_init(&henc); - for (i = 0; i < N_HEADERS; ++i) - { - lsxpack_header_set_ptr(&hdr, header_arr[i].name.iov_base, - (unsigned) header_arr[i].name.iov_len, - header_arr[i].value.iov_base, - (unsigned) header_arr[i].value.iov_len); - end = lshpack_enc_encode(&henc, tmp_buf, tmp_buf + sizeof(tmp_buf), - &hdr); - assert(end > tmp_buf); - if (end - tmp_buf > (intptr_t) compressed.nalloc - (intptr_t) compressed.sz) - { - if (compressed.nalloc) - compressed.nalloc *= 2; - else - compressed.nalloc = 0x400; - compressed.buf = realloc(compressed.buf, compressed.nalloc); - assert(end - tmp_buf <= (intptr_t) compressed.nalloc - (intptr_t) compressed.sz); - } - memcpy(compressed.buf + compressed.sz, tmp_buf, end - tmp_buf); - compressed.sz += end - tmp_buf; - } - lshpack_enc_cleanup(&henc); - - /* Now decompress them and compare with originals: */ - lshpack_dec_init(&hdec); - comp = compressed.buf; - end = compressed.buf + compressed.sz; - for (i = 0; comp < end; ++i) - { - const int dst_sizes[] = { 0, 1, 2, 3, 10, 15, 32, 64, 128, 512, - sizeof(out), }; - const int *size; - for (size = dst_sizes; size < dst_sizes + sizeof(dst_sizes) - / sizeof(dst_sizes[0]); ++size) - { - const unsigned char *const saved_comp = comp; - /* In case of failure, decoder advances the pointer anyway, so we - * need to save it. - */ - lsxpack_header_prepare_decode(&xhdr, out, 0, *size); - s = decode_and_check_hashes(&hdec, &comp, end, &xhdr); - if (s == 0) - break; - /* There is no return code consistency, unfortunately */ - assert(s < 0); - comp = saved_comp; - } - assert(size < dst_sizes + sizeof(dst_sizes) / sizeof(dst_sizes[0])); - assert(xhdr.name_len == header_arr[i].name.iov_len); - assert(0 == memcmp(header_arr[i].name.iov_base, lsxpack_header_get_name(&xhdr), xhdr.name_len)); - assert(xhdr.val_len == header_arr[i].value.iov_len); - assert(0 == memcmp(header_arr[i].value.iov_base, lsxpack_header_get_value(&xhdr), xhdr.val_len)); - } - free(compressed.buf); - lshpack_dec_cleanup(&hdec); -} - - -static void -insert_long_codes_into_header_arr (void) -{ - const char codes[] = "\\\x16\x7F\x06"; - unsigned code_count, i, name, pos, off; - char *dst; - size_t len; - - code_count = 0, name = 0, pos = 0; - for (i = 0; i < N_HEADERS; ++i) - { - if (name++ & 1) - { - dst = header_arr[i].name.iov_base; - len = header_arr[i].name.iov_len; - } - else - { - dst = header_arr[i].value.iov_base; - len = header_arr[i].value.iov_len; - } - switch (pos++ % 3) - { - case 0: - off = 0; - break; - case 1: - off = len / 2; - break; - case 2: - off = len - 1; - break; - } - if (off < len && len > 0) - dst[off] = codes[code_count++ & 3]; - } -} - - -static void -test_huff_dec_empty_string (void) -{ - int sz; - unsigned char dst[0x10]; - -#if LS_HPACK_USE_LARGE_TABLES - sz = lshpack_dec_huff_decode_full((unsigned char *) "", 0, - dst, (int) sizeof(dst)); - assert(sz == 0); -#endif - - sz = lshpack_dec_huff_decode((unsigned char *) "", 0, - dst, (int) sizeof(dst)); - assert(sz == 0); -} - - -static void -test_huff_dec_trailing_garbage (int full) -{ - int - (*decode) (const unsigned char *src, int src_len, - unsigned char *dst, int dst_len); - const unsigned char *src; - const char *strings[] = { - "Dude, where is my car?", - "Dude, where is my car\\", - "\x01\x02\x03Where is your\\ car, ,\\dude?", - }; - size_t len; - unsigned i; - int comp_sz, dec_sz; - unsigned char comp[0x100]; - char out[0x100]; - -#if LS_HPACK_USE_LARGE_TABLES - if (full) - decode = lshpack_dec_huff_decode_full; - else -#endif - decode = lshpack_dec_huff_decode; - - for (i = 0; i < sizeof(strings) / sizeof(strings[0]); ++i) - { - src = (unsigned char *) strings[i]; - len = strlen(strings[i]); - comp_sz = lshpack_enc_huff_encode(src, src + len, comp, sizeof(comp)); - assert(comp_sz > 0); - assert(comp_sz + 2 < (int) sizeof(comp)); - memset(comp + comp_sz, 0xFF, 2); - dec_sz = decode(comp, comp_sz, (unsigned char *) out, sizeof(out)); - assert(dec_sz == (int) len); - assert(0 == strncmp(out, strings[i], len)); - dec_sz = decode(comp, comp_sz + 1, (unsigned char *) out, sizeof(out)); - assert(dec_sz < 0); - dec_sz = decode(comp, comp_sz + 2, (unsigned char *) out, sizeof(out)); - assert(dec_sz < 0); - comp[comp_sz-1] &= ~1; /* Screw up EOF */ - dec_sz = decode(comp, comp_sz, (unsigned char *) out, sizeof(out)); - assert(dec_sz < 0); - } -} - - -static void -test_huff_dec_fallback (void) -{ - const unsigned char *src; - char input[] = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"; - unsigned i; - int comp_sz, dec_sz; - unsigned char comp[0x100]; - char out[0x100]; - - for (i = 0; i < sizeof(input); ++i) - { - input[i] = '\\'; /* Long code to cause fallback */ - src = (unsigned char *) input; - comp_sz = lshpack_enc_huff_encode(src, src + sizeof(input), - comp, sizeof(comp)); - assert(comp_sz > 0); - dec_sz = lshpack_dec_huff_decode(comp, comp_sz, (unsigned char *) out, - sizeof(out)); - assert(dec_sz == (int) sizeof(input)); - assert(0 == memcmp(out, input, sizeof(input))); - } -} - - -#if LS_HPACK_USE_LARGE_TABLES -static void -test_huff_dec_bad_eos (void) -{ - unsigned char input[] = { 0xce, 0x64, 0x97, 0x75, 0x65, 0x2c, 0x9f, }; - int dec_sz; - unsigned char out[9]; - - /* First, check with good EOS */ - dec_sz = lshpack_dec_huff_decode(input, (int) sizeof(input), out, - (int) sizeof(out)); - assert(9 == dec_sz); - assert(0 == strncmp((char *) out, "LiteSpeed", 9)); - - /* Now mangle EOS. Error should be returned. */ - input[ sizeof(input) - 1 ] &= ~1; - dec_sz = lshpack_dec_huff_decode(input, (int) sizeof(input), out, - (int) sizeof(out)); - assert(-1 == dec_sz); -} -#endif - - -static void -test_hdec_static_idx_0 (void) -{ - struct lshpack_dec dec; - int r; - const unsigned char *src; - struct lsxpack_header xhdr; - const unsigned char input[] = "\x80\x02""du\x02""de"; - char out[0x100]; - - lshpack_dec_init(&dec); - - src = input; - lsxpack_header_prepare_decode(&xhdr, out, 0, sizeof(out)); - r = decode_and_check_hashes(&dec, &src, src + sizeof(input), &xhdr); - assert(r == -1); - - lshpack_dec_cleanup(&dec); -} - - -/* Test that the decoder does not write past end of buffer */ -static void -test_hdec_boundary (void) -{ - struct lshpack_enc henc; - struct lshpack_dec hdec; - struct lsxpack_header xhdr; - const struct { - struct iovec name; - struct iovec value; - } headers[] = { - { .name = IOV("dude"), .value = IOV("where is my car?"), }, - { .name = IOV(":path"), .value = IOV("FINDER!"), }, - { .name = IOV("cheese"), .value = IOV("puffs"), }, - { .name = IOV(":status"), .value = IOV("200"), }, - }, *header; - size_t enc_sz, sz, out_sz; - unsigned n; - int rc; - const unsigned char *p, *orig_p; - unsigned char encbuf[0x100]; - char out[0x100]; - - lshpack_enc_init(&henc); - enc_sz = 0; - for (header = headers; header < headers + sizeof(headers) - / sizeof(headers[0]); ++header) - { - lsxpack_header_set_ptr(&xhdr, - header->name.iov_base, header->name.iov_len, - header->value.iov_base, header->value.iov_len); - p = lshpack_enc_encode(&henc, encbuf + enc_sz, - encbuf + sizeof(encbuf), &xhdr); - assert(p > encbuf + enc_sz); - enc_sz = p - encbuf; - } - lshpack_enc_cleanup(&henc); - - lshpack_dec_init(&hdec); - p = encbuf; - for (n = 0; n < sizeof(headers) / sizeof(headers[0]); ++n) - { - out_sz = headers[n].name.iov_len + headers[n].value.iov_len - + lshpack_dec_extra_bytes(headers[n]); - /* Inside this loop, there is not enough room for output, should - * return an error: - */ - for (sz = 0; sz < out_sz; ++sz) - { - lsxpack_header_prepare_decode(&xhdr, out, 0, sz); - orig_p = p; - rc = decode_and_check_hashes(&hdec, &p, encbuf + enc_sz, &xhdr); - assert(rc < 0); - p = orig_p; - } - lsxpack_header_prepare_decode(&xhdr, out, 0, sz); - rc = decode_and_check_hashes(&hdec, &p, encbuf + enc_sz, &xhdr); - assert(rc == 0); - assert(xhdr.name_len == headers[n].name.iov_len); - assert(xhdr.val_len == headers[n].value.iov_len); - assert(0 == memcmp(headers[n].name.iov_base, - lsxpack_header_get_name(&xhdr), xhdr.name_len)); - assert(0 == memcmp(headers[n].value.iov_base, - lsxpack_header_get_value(&xhdr), xhdr.val_len)); - } - lshpack_dec_cleanup(&hdec); -} - - -int -main (int argc, char **argv) -{ - test_header_arr(); - - /* Now do the same thing, but with longer codes to exercise the fallback - * mechanism. - */ - insert_long_codes_into_header_arr(); - test_header_arr(); - - test_decode_limits(); - test_static_table_search_simple(); - test_static_table_search_exhaustive(); - test_hpack_test_RFC_Example(); - test_hpack_self_enc_dec_test(); - test_hpack_encode_and_decode(); - test_hpack_self_enc_dec_test_firefox_error(); - test_hdec_table_size_updates(); - test_henc_boundary1(); - test_henc_boundary2(); - test_henc_nonascii(); - test_henc_long_compressable(); - test_henc_long_uncompressable(); - test_huffman_encoding_corner_cases(); - - test_huff_dec_empty_string(); - test_huff_dec_trailing_garbage(1); - test_huff_dec_trailing_garbage(0); - test_huff_dec_fallback(); -#if LS_HPACK_USE_LARGE_TABLES - test_huff_dec_bad_eos(); -#endif - test_hdec_static_idx_0(); - test_hdec_boundary(); - - return 0; -} - - -/* This list is hardcoded to make the test deterministic */ -static struct http_header header_arr[N_HEADERS] = -{ - { .name = IOV(":status"), .value = IOV("200"), }, - /* Generated using tools/generate-headers.pl */ - { .name = IOV("a"), .value = IOV("Fv"), }, - { .name = IOV("JwFgRXwWLGXK"), .value = IOV("tVoAUIJANdnIXvqcLOHBgiDaNkFlTbtwwrJbnqPSM"), }, - { .name = IOV("NOZwn"), .value = IOV("PLvXBHdzgTxVNxHGVD"), }, - { .name = IOV("kIXXrjDKZTOUVl"), .value = IOV("SMRwVKJkYvPNZISQQI"), }, - { .name = IOV("jFNYmJcccNrXASWc"), .value = IOV("SQwkiHAIMrrOHQwIauZqbUtmoXzsXQCqWBcBOxXkSIcQQCbtHqctWkpEWhlYWUMtzFWOqnkoGzvL"), }, - { .name = IOV("fsokRyUwcIrnWa"), .value = IOV("hsZveHerAFgMSQPklcOlqmetjIGlVcYtTqZWadpLaKss"), }, - { .name = IOV("iLDCDoMl"), .value = IOV("czrUShQL"), }, - { .name = IOV("bOMRHltgvWCxggP"), .value = IOV("hRIY"), }, - { .name = IOV("UswJMcnEJgComGRCHLOE"), .value = IOV("AKDeVINsfggLfyLsOduXrP"), }, - { .name = IOV("rPX"), .value = IOV("pFTzuQXxrlFeDQXZnYpMZDamKKJWVpqjgJtN"), }, - { .name = IOV("ooUcpbffAsJU"), .value = IOV("EP"), }, - { .name = IOV("coSElJCqNlkFEreA"), .value = IOV("PrjIaXCaZBMCpFzpmSJjaHvGCCRsYoPzSGUQgUtK"), }, - { .name = IOV("wMMGBskgkmjZ"), .value = IOV("gIS"), }, - { .name = IOV("ikmnlQg"), .value = IOV("fsBOEejxktYebN"), }, - { .name = IOV("wXZrTTaTcbJJcMDZTX"), .value = IOV("EWFrgVw"), }, - { .name = IOV("JibiGghpNjIFKefgXrgO"), .value = IOV("onujtLRvOEIPZtFJBsmohvNkvfEouJZRJyUoxUUjQFvA"), }, - { .name = IOV("fqKvDXNNbyaJs"), .value = IOV("QtrUzVQZBsgTKMiVUansPcLvWkkCnafnxoFQvTBxpZcjuidQgbIZwSXAeO"), }, - { .name = IOV("QiyihCTufCwOXynHJWz"), .value = IOV("iegCbvHkeo"), }, - { .name = IOV("d"), .value = IOV("fKbBzxCBWPJLzpPHISuMTwoZHFtyiRpzlyXRlgHACMarnboPAQMp"), }, - { .name = IOV("CRVCG"), .value = IOV("tYAQQRvbwemzItfohlzqq"), }, - { .name = IOV("YF"), .value = IOV("SHiJIobvtGrJVZdwwVUvukFSpKE"), }, - { .name = IOV("vjMNnPijHhDtRisnZ"), .value = IOV("bUDtxTfKzZipbafXGUprYElYfShmvkzlWaGMtWPjPniCPMarWwyaTQldvSeWwVNDE"), }, - { .name = IOV("BwSWBHTFTzQeE"), .value = IOV("EKHLAVPOjwNcMMX"), }, - { .name = IOV("U"), .value = IOV("EAtoQWetslSrVTeVJTIzXbmwVYUtAYYaObEOARSJKERNLuDHGKdOBsMzyaNTVItnWKgW"), }, - { .name = IOV("KxvErvxETMysJCpcsQP"), .value = IOV("nOtKFxnHPSNaDWLojeQiYkJNgSCwGkfFaHIfuVdVPr"), }, - { .name = IOV("XBWGtmuOZnllaPZAj"), .value = IOV("vvqlYHnwZZHIAIaeweEhechJMGcqTwTOhkeGmKcXucSpgPRxvydm"), }, - { .name = IOV("AwHlzHgKLPxqjQ"), .value = IOV("XNEkYXFOmj"), }, - { .name = IOV("fqFsuhroPAUU"), .value = IOV("TqoAFegeY"), }, - { .name = IOV("DjgCKfmMYG"), .value = IOV("hVbmbsyawdK"), }, - { .name = IOV("Trmvf"), .value = IOV("eZXQfrWYssiJSviraCdgHJxnQNZdBTbkvqNObubYXHbAgEbYqgsQhdImYuXIxoHVWHpdwVaFK"), }, - { .name = IOV("YzATDLJ"), .value = IOV("bwZKJi"), }, - { .name = IOV("sRqsqrWoBXgmd"), .value = IOV("uZH"), }, - { .name = IOV("fVRueYSqUQGwvBo"), .value = IOV("YxMHTlsf"), }, - { .name = IOV("ab"), .value = IOV("XtpTxRnzHVhLZhPQsfHiSfQsxWoRWsRpEHjXjcFcRQHzysvMVyVIu"), }, - { .name = IOV("ApjyCgLorwLueNpIy"), .value = IOV("OvEKJhywkUXSNgNikHijjLeSpKPixICfFNvHEJctZttJeghRtSwCaAKMdEHaAb"), }, - { .name = IOV("qxklmfZOXK"), .value = IOV("gGAgeeRuBaNYYBZpLxfVrVqsotCWpljSMBRlWgoZjZCLdLq"), }, - { .name = IOV("sYsecB"), .value = IOV("KneinITgCFRBdfGCitwGYVGWzDPJkhFCdJaRUKXVdzTtzKpCgXb"), }, - { .name = IOV("xWn"), .value = IOV("TkaUBBWsJRSXtFOlmVEplIPQfRrzrFdqkgzZDaCZwrcMXufnLKmbEKyDTcOAofXUD"), }, - { .name = IOV("MDaLNxPv"), .value = IOV("vnCfFo"), }, - { .name = IOV("VpFvlKoDOsUNUi"), .value = IOV("xQxrvDHmsfcposZDivxiyhBClmcmBgSCEkaCumYvhBxJeSQPWBgZs"), }, - { .name = IOV("PHzSkahGwpWCTUDudK"), .value = IOV("uMyjPWZQjOjItzXbtalNXlTnh"), }, - { .name = IOV("iQkBvWUtZvTXLPzObhX"), .value = IOV("gZOzjZfNVGfJJfePdMlddzIAYwrUfcxKxyBgfdyIMwAknADEIByNxSRcrOPURvNKdsvHDzaZl"), }, - { .name = IOV("cJfAdYhPSHP"), .value = IOV("lCoAXdHT"), }, - { .name = IOV("qffCwLZRaNTvlH"), .value = IOV("gplMDEYgvOXGwkqD"), }, - { .name = IOV("vOWtuIfcSrR"), .value = IOV("dOLiwrfveWeXuRvRMBtuJocxRadeZQMckJBwWcWViOcxQf"), }, - { .name = IOV("lTvWXQGZiFvfwwRuPJ"), .value = IOV("wWFfEKEtPZhvRlHNGuFvEYzETO"), }, - { .name = IOV("lGYkFYoEgywElmNMK"), .value = IOV("gVuHvUZlfsCOZsvdfKYnWDocojREJmBzSfRCuyfNBtXXfGPfQNJcbckkJKr"), }, - { .name = IOV("IaNjS"), .value = IOV("XZnCGEKTBNkbTdcMrdEGcqxZyVGrJVkEymVxzsi"), }, - { .name = IOV("XKKhqxwqcvlUWSZ"), .value = IOV("NxIZeewUfDiSiD"), }, - { .name = IOV("MlTmIXJ"), .value = IOV("AncPKVLzUchKoKLSFyCop"), }, - { .name = IOV("TkgzTWKbsdOxrohnWNmq"), .value = IOV("XRfzukuHYD"), }, - { .name = IOV("nRx"), .value = IOV("dDWMrNUMwCSsvOw"), }, - { .name = IOV("FAubvNO"), .value = IOV("RcqaiSjrxRJgjPAGHxbdOyRVGlpFaIsbyCwCdkouQYuPUDOrBFcyeCLVlwzEcraWdyQ"), }, - { .name = IOV("RBUCgU"), .value = IOV("cktucIrsNANCanonVPwVZAZLDwpovifsenoaDVyjdSDVcaGKidpuEfr"), }, - { .name = IOV("VMpRnqzHTciNA"), .value = IOV("cAZTtjsaxmfcwbjWeQyeACrdJFCbKOuYMtRprGVweBBDEIBnecroFVGRdbkMwDiUevfZRHtQsHUuZwXi"), }, - { .name = IOV("WLZfjUDHgmhabHCDYWuN"), .value = IOV("hyJMsJUEHfeQyVLDVFoBnxqjQXwtc"), }, - { .name = IOV("udfYi"), .value = IOV("autGUVfpsCZICUQOyTFkcssjURUFvsNTsRpduCizBoZLG"), }, - { .name = IOV("EOCDyfAYZVOfEs"), .value = IOV("wSxNqBvLryBGcNxmXHpKMozIrVmjztcDymlCIyUwdCgVkGgk"), }, - { .name = IOV("QCwdLlognwWEAKv"), .value = IOV("LhOiOxJwYve"), }, - { .name = IOV("jjz"), .value = IOV("NaCGdOodBGYXXlJmFOJjmvvtNbXXZLfWxwdCbHoKNeXhwnXTlXbedsWOhYLtRmEKfaKCKtqc"), }, - { .name = IOV("tkEjGyxDSimN"), .value = IOV("igfTEPPlHFMgtWIQMElRBEoLwlahmKnRouiVDGIktcCFvzMKnM"), }, - { .name = IOV("nQJfMRa"), .value = IOV("pyUXfaafdHHxCYCriwWQNjtRmuXmFmhYmogMhoZUkxRdGNTcIuf"), }, - { .name = IOV("bUMr"), .value = IOV("pQVxPKkcuZVjAfvrZaNPuYyTxei"), }, - { .name = IOV("yxKyuraVwOWfPsOtsAO"), .value = IOV("XeGUmAddSWSnuXbTjS"), }, - { .name = IOV("ogJvsGo"), .value = IOV("oirQCiiNqSChgMzwkDSsyrTkbjkKpIXyzybazCauGIuaw"), }, - { .name = IOV("MtXVStjBGyMgsOHVygI"), .value = IOV("sERlIUZMPxqGjWyIWtCtCcGgnIkpbpuHoorgnEYLzmklZQpdhrQSdQYGlX"), }, - { .name = IOV("EjsmEaVQYwbVIZvLVyD"), .value = IOV("iK"), }, - { .name = IOV("eITWAMw"), .value = IOV("anAHAgmoWJrIDAgcMIWHrnQRZeiaQg"), }, - { .name = IOV("QTU"), .value = IOV("KdlzoMxxeIZqIwudosadAgQyUDscmBvZExFtukiMCpBTgcMAXPJnvOtkzvAYLHJQoEZixnjBVoQ"), }, - { .name = IOV("XwZsjF"), .value = IOV("zPeEApsMZDjxuMqHfmvRkkJLNcrHMIybOjNrBdzBqg"), }, - { .name = IOV("wYF"), .value = IOV("ahUCoivUrHgcjsdyhSCoogklZffxdFFXBRBsGrrqZMidcvcu"), }, - { .name = IOV("gVviJkhVSl"), .value = IOV("xDDAqvMlyCbHEXWxEZUHwEgvWkPtXyiEyjdwhapOQtyFQwMoU"), }, - { .name = IOV("UijgJXIjyxpEKTOQWd"), .value = IOV("POTha"), }, - { .name = IOV("UIdSSNAnLYxZznS"), .value = IOV("ODvezqwvHsHrjdrlMdclZBefSBFinwkyvYWfvLxaEswxgZnQmCBmC"), }, - { .name = IOV("bv"), .value = IOV("WUYOGCyLOPgZFKpvtYSKAmNWqHUbZeZlpxSgZeMmewEyPnFtzFnzNRqhxMbtgoIpeDIvT"), }, - { .name = IOV("RCvtifVnBFrzwsN"), .value = IOV("HWgAOYKAYMyGkPkmkqLfwUHQoHlOoXwMfplHrMjBvlaLAqdAYnozkiOplrDyyQuaPKLXEwpyrZ"), }, - { .name = IOV("EUcjPsrKdvTDjU"), .value = IOV("waXsyzKzyAeeTFlJlZiTWMoXqQIcIEsumPZshHRzWniDKJXMIJdxlgpdhygywat"), }, - { .name = IOV("rluwiiInIm"), .value = IOV("xmmhNiyIRZGfCTJqYShqtwlcKUgAYpRhQzLpphYPqEtLUFvUFwbFKVLOGLbhhYMXuFsdLGHNWIkpfcvq"), }, - { .name = IOV("CxtGakJnszPBMHR"), .value = IOV("DOBvUnTgaXPgePVXUGnoGbLUPdusotheRNsbtzhUMizukWGsexAnYXYXRxzqftzUWtamX"), }, - { .name = IOV("hrxU"), .value = IOV("eSYXicRILNtmOucqCxYiJSnas"), }, - { .name = IOV("hwXTB"), .value = IOV("nENDaICzxxTdGfStCjxBnPCXErglMHncPptgqKQApRHPHgHXbRRLarLUcaOHRS"), }, - { .name = IOV("qecJryTMSxk"), .value = IOV("okOFRwOhlYbhqzLLyLOR"), }, - { .name = IOV("tMrtUvH"), .value = IOV("eCqwBoWaALxkrHGtMmggzaPqUwdGMztrcBZmWcXcnjIySGzZVBcpoewvRrO"), }, - { .name = IOV("UFbpaDoHZdvGpgfFjQa"), .value = IOV("nITdQrwEhuPGhnIJLpdOgzjNBDTOPKinQpNtVyVsSLNBKmHYQyyuUx"), }, - { .name = IOV("UXOL"), .value = IOV("NOwKNkVIAMxwCCUSWMfuwQvmYSHyQUpzjzkxujGcOGVPUCJsnocHefHSLCJzNOfjs"), }, - { .name = IOV("XfiBDPdmC"), .value = IOV("AXMqhobsCYYnysgg"), }, - { .name = IOV("r"), .value = IOV("CLOqTHNnUj"), }, - { .name = IOV("kiLzzLMiQik"), .value = IOV("bcnHGGbuPGyqOuCLui"), }, - { .name = IOV("iQqsZT"), .value = IOV("SZukuowHIesKYC"), }, - { .name = IOV("txHZZgduulxyeT"), .value = IOV("GEDNIQcCUpFNvDtZ"), }, - { .name = IOV("PbIHD"), .value = IOV("xCQHqmFsxbzWpuPOTBFgLUpYzdgJtyPBkEYHVRODlLRoXHQoWmDvMNBq"), }, - { .name = IOV("ncaasdySEY"), .value = IOV("SmixDbQXHMkJOujGzjyWkm"), }, - { .name = IOV("BvGcmWnwbwFBRNcqSG"), .value = IOV("mLjpHRXUyklruCrY"), }, - { .name = IOV("xDddcTrDv"), .value = IOV("eWtEJLhrmYgrSHEZiunrMVMLxHcYBjMfmdzIeHKhptBdZmKFOEkHfIDg"), }, - { .name = IOV("iosEO"), .value = IOV("jyvYgOqCauYdvpYTGxPalaASrVUsKkYRwLAzbdCohEn"), }, - { .name = IOV("TbqkulxviCgYOrOtgeuY"), .value = IOV("zFCiDjetrVK"), }, - { .name = IOV("oRceIHETaOqDqRPl"), .value = IOV("BIjGGLreOSDXqkVYVoaupQxXmkhYAUnRosolhUvF"), }, - { .name = IOV("tkEXneuwlwkTO"), .value = IOV("jAmbLURPmEMYousdrVcNdeyxxRIZq"), }, - { .name = IOV("DMYEIRHtU"), .value = IOV("JDaULQUqQkvOzEpPKIWouWMEuxTNyRiFevh"), }, - { .name = IOV("dI"), .value = IOV("AecJgvXAT"), }, - { .name = IOV("MQBZYEDyzRPbGrSl"), .value = IOV("VZzydvYbYXVnYOBHoWTBBLfUZMKuOpztzemMBFqNgzpMOAqQEVKMKGdWB"), }, - { .name = IOV("bzlqHfxYviUAxOSIUDQ"), .value = IOV("foUjCUhNZSDAqLWgVMqdnprkLsZNhBdmrzXPJsXxuU"), }, - { .name = IOV("zMunPNwxETjsFTvpO"), .value = IOV("eDHwaGgNEz"), }, - { .name = IOV("aByN"), .value = IOV("nsRKRzDjCYvLuQNbKuWgWtAHDJuCJALAQPofQqpRSzStVjwSEyporbjMnnPMIlH"), }, - { .name = IOV("RfwokjPIjqdslu"), .value = IOV("BoaxDwAvoorhJRjCI"), }, - { .name = IOV("nBpHDIgpkAJry"), .value = IOV("YeXHMKPAfJYqkSoQbmapFIPnjPcSqJkYOxQEKOOqBecfYbUFpKXOKdTvjytCa"), }, - { .name = IOV("LTApcdtACDM"), .value = IOV("kkvUBOnBuEArmUweYcUbNRNyZzMPkEsaXSEdsfCkPEFWE"), }, - { .name = IOV("sWe"), .value = IOV("mMEQvujpOLJdSQbOLTqTOcEdpyFcLICqlJJpRHKhqs"), }, - { .name = IOV("PxRPQhkCRYO"), .value = IOV("CLqaYWCQjlQnmiIGQUTTkWtVEONdUNZVvywShCnanbtGJDIqnOwGLutYmGyNlPCmPHjfvrn"), }, - { .name = IOV("jMJazyjgEqrVAOCaoxUc"), .value = IOV("dFjAvsTJqJKBknyLRlLtcEXHKUqGvdPStFjcRnFoOxkkpFHLDxw"), }, - { .name = IOV("bFILAkfOqRq"), .value = IOV("DiHFtXTmcQZZCfUkbPVcwBFzhSTWTLQEkDxpEByxAoVyOAvQUiMfiKBmdtlLNLVcEjtuAHPLxRmfZR"), }, - { .name = IOV("KIOF"), .value = IOV("YdqRfXmxswrglyjJnVFJaVyNkHCbbNgQGqDaIhMTZgOHHZKMqPjMgyiKdnrmrrrS"), }, - { .name = IOV("RTqPDPlTDhCgwG"), .value = IOV("VkNJxHEDWGphtXEcMQjlJ"), }, - { .name = IOV("rhfxNxzfnn"), .value = IOV("xowlQuPzarHsbVjzLDsrCIeKjqdDxclUpIypebbalSbAizqEkIMdWdw"), }, - { .name = IOV("qBjdivJblschpR"), .value = IOV("gTRiBzTSYuuYxBryNefUriTUaJAWoJAJhdkRzcsedPZTArxoWbviXWRORyGKlfYcejSSyitKH"), }, - { .name = IOV("NPlfPrfF"), .value = IOV("zkFjnIfFMxIVHcVZAIePhmMmHHvLaskTLBGbDvCwRThJhpGZNvsAQwciYGBXJV"), }, - { .name = IOV("VHVmn"), .value = IOV("vBmqJTKMVTOEyDLXN"), }, - { .name = IOV("cyEbzpDSmsJvpdzV"), .value = IOV("WnhrmYkHrqUHHqAEcWlCIhEYitrpCNsYrliIiniygKSRrVpLPjghdNcvWQPsYsMWXtrodHAHe"), }, - { .name = IOV("Zwok"), .value = IOV("BXoHFLSEOhOZKkdUVjJYPkWRdXULrzzBIkbyTNzfOSJUogRgFWizxorgdrAhyFBSWJULyZrkHMzDszX"), }, - { .name = IOV("Q"), .value = IOV("eaAtxYzmdcUhkhfsARRGtEWJTOjEyhXrIpGmUztxnIQP"), }, - { .name = IOV("NXZhbOLzxulGnfInBWsr"), .value = IOV("dExcZgETTboatzXcxlaYuKyPuZnzdUFbYSNNEjNdVN"), }, - { .name = IOV("uvtURMPvOIXSEyUOW"), .value = IOV("lYIpQDB"), }, - { .name = IOV("ryQCkixF"), .value = IOV("fGnJENfnWWHZhcrwexVPMhdohatQFSHMmVzvVWelmNJyRdGbMTyOxLUWnQgNRhZyikpIYg"), }, - { .name = IOV("EXquePdkNajUtrisN"), .value = IOV("ntqsxPnrhkUoldcV"), }, - { .name = IOV("nszZfgPCdbV"), .value = IOV("fGVtdENzyLXcZKbWIIwYYOynkpWldRhpwagfQCeZZLlJPUtpq"), }, - { .name = IOV("kHyDsPQzqFvdLfKx"), .value = IOV("TXjPxRkwYbWpPIqanigQbuvlrdbnlSnRSFPvwPrTnJVKPlFdXtABbxuRCAmWKXAQIK"), }, - { .name = IOV("fcMrsJTPFbwOgyXC"), .value = IOV("HrKnmIPDOBcbKmICogZDctLQZdSqRJoqyqAKvTvKnuhjbuAbFkYlDpyghpGBoNBjHofLGt"), }, - { .name = IOV("DsmQNMGzvpQUAbfyiA"), .value = IOV("DwDnbnTxmnyjruISXCYwHQHLAFCeFQbRDjnJtLTQQHueVrWoGfsGS"), }, - { .name = IOV("wbjMqThdeF"), .value = IOV("rMlAwIBbMXsmyBEqPfFbSnQrx"), }, - { .name = IOV("EXVIfJnBbmiZT"), .value = IOV("U"), }, - { .name = IOV("DnTAvNKs"), .value = IOV("rIrdRaSFbLRoDhfbrwLZdfWqKNtgGNTITESnAVHhZaSvAsemeS"), }, - { .name = IOV("o"), .value = IOV("ZhzCRteLLESjeBYPcNprCWzEyqIGtOzWWbawtxbAL"), }, - { .name = IOV("DwBuZnphTZcHdtuIxOTs"), .value = IOV("gfleeyOPENAyiSrorleyWFzBCjLYWilBrCcztaVRuecBYcymReNYcKOsWuneRLmDdqARGTGlZiZTEFW"), }, - { .name = IOV("WyMxYWmFeAtqZWwpxh"), .value = IOV("BVEjjhnFgRWPiFPxVLxyKeMTcBCxociXVKNFalOhF"), }, - { .name = IOV("wXcMYvh"), .value = IOV("EGuKlhPOfEyy"), }, - { .name = IOV("gBUAujWqTBnHyaqnTpQ"), .value = IOV("o"), }, - { .name = IOV("yE"), .value = IOV("sthvbpytXfSPzEvzCizJXHjRPtmfOJfWMURdrKawBxPUeIuqUVVoxRcOOEQFp"), }, - { .name = IOV("gshDJqAlLfsUfDlqaP"), .value = IOV("vagEuPwWwLkJruVOJNmNUBgxTrjhXoZqIPNEbbYwdkimYGgzWsRqqazypjgJlawPJQSmMCAsvwMyU"), }, - { .name = IOV("iOtOydILydxuWwzU"), .value = IOV("y"), }, - { .name = IOV("IeiAZxAfdAjW"), .value = IOV("VbWrafZwoCdjbnZpVGXEhFqsIpAWnyMcuMMLzrNv"), }, - { .name = IOV("cH"), .value = IOV("uOAtUsxZdDfCpAVSpwFGwkDoQNwVPcoxQhVJLHWwYzuYcdzgfipzggPu"), }, - { .name = IOV("CGNMtcMFMiLrPNTe"), .value = IOV("SeaVyhuzOjDtDlpbuMYbuQRGkOuoGcaXoZsGtpKClAceJVlMXgWWdOMXAGBlnjpqLavnc"), }, - { .name = IOV("EDHGGG"), .value = IOV("MugWswitOBpamaigqKKhoby"), }, - { .name = IOV("eMSzSlLhKT"), .value = IOV("zcqJdtWiEbYrYXGdOPZAMVEdmBdBgIwIfPeqLitDPNOzOPMGeCOPIoOX"), }, - { .name = IOV("CRpbzCaDymJKEQopoen"), .value = IOV("dodwdskMMZCIhCkgTZhXDbszdihZsSEuSFKremTMEPDsNbizJLOqMuErTFwFyPJDPeSvGIWwMTo"), }, - { .name = IOV("jBHzYqLEPjQZxSQZuMSN"), .value = IOV("BgSbZFlfVEIbXIVGjbZJmJNGKzPrDbLYMdRHljMyrFrBaPinZfsBLfBntQyoUpagHGezOAsFpjlKWQ"), }, - { .name = IOV("hiwZtQiQGAdvtbsLG"), .value = IOV("WIjqnNIpQarNrvjRD"), }, - { .name = IOV("Ctf"), .value = IOV("MDIvJKeKIreWpXMqYlJaTQW"), }, - { .name = IOV("LDrqJsQnWGCgVb"), .value = IOV("BePauQrBGeWbLeSKrsyoKOvYQIwjcIVTbgWwgRnBK"), }, - { .name = IOV("HCZ"), .value = IOV("wpymhFgtgJRKNmHjjz"), }, - { .name = IOV("reTHeYCHuGclLSuiW"), .value = IOV("QoZZLiUDeGtvrbvEMKYL"), }, - { .name = IOV("rnqdHuIabJmUYwun"), .value = IOV("iVXxpnbzMNEzzuVmM"), }, - { .name = IOV("yGiLdGRCelTCBm"), .value = IOV("GkmsgeygvBOEXZLDwkXplTKXtdxAlIpwqRygfFNhRRFuaaBTR"), }, - { .name = IOV("HpZHcSOhFp"), .value = IOV("eejlKtIKcTkRzFcEqwn"), }, - { .name = IOV("vzOKgnytLDobV"), .value = IOV("WF"), }, - { .name = IOV("yXZOOHbinGBiAvgLq"), .value = IOV("tgiWBUgUYAbPiIthmbTUtkQcYYvuIOwgRfGxIDmQcnFIVvVFDzuROaHTnQVf"), }, - { .name = IOV("eUk"), .value = IOV("HNbxdIyoAUUZctZuCTWuvZOlTo"), }, - { .name = IOV("kYkcEmwXZdlz"), .value = IOV("FuDdIVebUuLXHhfUdZEJZXAzJeOCVNKKKrvIDyDHZJbqktisAk"), }, - { .name = IOV("wsCXSNfEFSrain"), .value = IOV("cWuDFJNYDHmTsmrFRifzo"), }, - { .name = IOV("jYFICqzgXgEkYvZ"), .value = IOV("VPyaOazRcipXPadxLhejwjdTHzMbFGipOxgmqKpXMSGoISwiPvEltmpyfBDRJj"), }, - { .name = IOV("GDjvmTnpLtfJcq"), .value = IOV("ZwplKmLjyGlJCtkdDBFjOnEhMQbOIdaBWZuLVPAqTvntgJr"), }, - { .name = IOV("XfU"), .value = IOV("SyJDmvxdOsKWGCqAsVSraYQEaGWCcCNMTS"), }, - { .name = IOV("bAp"), .value = IOV("OZVordXvlZTMbOjTeCmiLOnXXvoDVTnNxDqLceBVrS"), }, - { .name = IOV("ERMxEKvHhkgSwpFWn"), .value = IOV("ptZiD"), }, - { .name = IOV("tDZJTiOZeOHwu"), .value = IOV("BDjlJRVpJutiNKQV"), }, - { .name = IOV("sn"), .value = IOV("zswqsvMIBladiYJsl"), }, - { .name = IOV("XsAJJrygddXfu"), .value = IOV("QsfCetKI"), }, - { .name = IOV("vtHQYKscro"), .value = IOV("tExiChTEiarsrcHVlpRJXHgtTbEsnLXtL"), }, - { .name = IOV("QycSzfh"), .value = IOV("kopPVoKmyCqcuSEPCeRseyoJbUcBWYlpmCdyequbybwdtMBTgChM"), }, - { .name = IOV("UZWD"), .value = IOV("OajMzZeXvehMNVLJQBsczGx"), }, - { .name = IOV("GDD"), .value = IOV("JMNpBzzbGRgWZzOIPcWtenMFFMtipVZnGzagGTXWRWCstNAeuASRiRjAFPZ"), }, - { .name = IOV("IkBeufnqUPqysxjsr"), .value = IOV("hskUPcFhplixqvVuDGTPxHpOg"), }, - { .name = IOV("BxREgvTYDBDXWGrnvUjQ"), .value = IOV("fTMhBwUGAhzDHjwNmfKjEvHbmhqQlvJwOOrQk"), }, - { .name = IOV("WUmyxelGaDiupfgxl"), .value = IOV("ShBbGhPawS"), }, - { .name = IOV("lXgJeCgGPkyMpAR"), .value = IOV("rzyTVyCqiRGXgMfkjPfBUbntbHhKXYEiXZJDKhxHfvamZoWZfOfsZvDCNQYlIHQRTgaEQlx"), }, - { .name = IOV("XHJicTpNoW"), .value = IOV("obuvpjfoReBNIX"), }, - { .name = IOV("jtEVPWCwsk"), .value = IOV("bHVemoFZVBkmrssQOafrwGkRDgAcOpKIJPMrVBQBQGDvHuTJMdtEfeKmZwOlRBORG"), }, - { .name = IOV("EYBMRtObwQTqOmKbFoNk"), .value = IOV("FThuoUlAjqEGISHBRYTmYA"), }, - { .name = IOV("cGxeGJ"), .value = IOV("DYpwAydJzXnIgMZDOaCStqbIYwdyD"), }, - { .name = IOV("dyetDzqTtULuYYgTK"), .value = IOV("KXReaziMoos"), }, - { .name = IOV("nGKDFU"), .value = IOV("K"), }, - { .name = IOV("sIGjWGJINZi"), .value = IOV("PoUXACXNuYVaPAMtsvhfeZhRUcdYcWgvgtMOjTCW"), }, - { .name = IOV("IKZH"), .value = IOV("VLSjRsktLMYuDXmgZFJXfVHbeQTLxeAjcLWLzyGHFYxewnC"), }, - { .name = IOV("vmVWZPCGisMy"), .value = IOV("vTbgqxX"), }, - { .name = IOV("PTlE"), .value = IOV("LGQwNdJKM"), }, - { .name = IOV("HG"), .value = IOV("cYxBOZGHzVWKRtFNOCvYgXYXrWqDBAfxlRyGxBnqHpNTEunKfDUDAhRlyETZTT"), }, - { .name = IOV("VjVkCsG"), .value = IOV("MTjhsfopnB"), }, - { .name = IOV("Hee"), .value = IOV("GfQaTFgIWpRltXCledjVzRuaYtmSmzPZeg"), }, - { .name = IOV("GmAsIyjKoogwY"), .value = IOV("vyCpAXvvhSvDejVsMrvCAQSIjXbrDnnoXRzUXhcCchXBJXeG"), }, - { .name = IOV("zofOzgWrAduC"), .value = IOV("BoKOSgcGaKljRknepviLbjJQXctApFomLOTkyLMMQudiGzkIpiHsBKpXKkgOOGve"), }, - { .name = IOV("L"), .value = IOV("KwLIaTKVEii"), }, - { .name = IOV("rPotNZLjvdPXwHbm"), .value = IOV("lqhspDQumXhsgDRoFqRRvAfOAi"), }, - { .name = IOV("htETmtDRUhOTeUlZD"), .value = IOV("LtZZrKDc"), }, - { .name = IOV("kdxrEhALMCcTnLIsNj"), .value = IOV("hjUTWlFzSZxrxjULRUzlzYMATvZcsCkklgLXPIJgRofKM"), }, - { .name = IOV("STulJLnbooVwvZTDfP"), .value = IOV("eMzSibzbtLwWHtXLEByPhwKsUQftmTrGasKvfIJENbUwNcZfTVjjSsTzJOOz"), }, - { .name = IOV("ZC"), .value = IOV("ZCaotQadYAxToDpATgiVfTKGR"), }, - { .name = IOV("L"), .value = IOV("TCTkEIsvpocbLO"), }, - { .name = IOV("DGmBglwE"), .value = IOV("EyVFAObJjqBUFRqHlEtgahCWdltzvMOHxStWawWgYQhjQZTr"), }, - { .name = IOV("PPRwdWgBD"), .value = IOV("WxvJOnuEFlQBxrdzzbubYVljtWUENcOyHnUxGVRIEuHFsLECApNYNg"), }, - { .name = IOV("TnuOJhLZxFiXGs"), .value = IOV("sxjNRxcrFuJyXqiUTQmqJtHkYfFrUTiVgaYyLjzmNLwMmIEofLfrdpu"), }, - { .name = IOV("ISLutXyexUqmwvDt"), .value = IOV("yvEfoIvlqgoYwsUKGhMLpzBlWHThQnpglDQFjWwXLUEcCTHykbspTWOmhtzZROpqLkRwriugwkb"), }, - { .name = IOV("pn"), .value = IOV("brLFxQbMxVLtmFNZAhUingVlrXiVvnxWBqNVPfwTmmVUdZscYwxgabOGuXzKwmRf"), }, - { .name = IOV("uZAZfQODCTzBv"), .value = IOV("XirwLqLXhncGXnFvMGJIifKYUjsjUZPAvjNeNXascOjkxAHVQ"), }, - { .name = IOV("YhBCS"), .value = IOV("ZaZHUxGcJuDLjvCkASpjVBnQSpWCl"), }, - { .name = IOV("DIhYoEPEWUOL"), .value = IOV("qFwlbxuVuMBDVMLSrasAoweuQjJyudBdTWNrmOOYLvhLu"), }, - { .name = IOV("iPBLGfxFMece"), .value = IOV("fpmCn"), }, - { .name = IOV("OxdpgtLVUpMITFf"), .value = IOV("UiAOuMYDEYVMpZtLYxecYXcZNlPSPIuloNQQHoYK"), }, - { .name = IOV("ZZSILzVXcYSGDHeuRlD"), .value = IOV("WGyBZlGIteRkXZRVMqplVzkwvmUsOrpHByYadfcRZsnk"), }, - { .name = IOV("jAdAgXhTK"), .value = IOV("DjUHhhuMKiUulzrYnhDLQN"), }, - { .name = IOV("iVq"), .value = IOV("xjSwoSE"), }, - { .name = IOV("vv"), .value = IOV("pdTvkRzccpjdcZbyhgqpXfsKFxJgUWdqbbTGfVwUyYsrvTvfHYEMXSCgZJBFtdTybDUxHOMoyxWKSxm"), }, - { .name = IOV("IYCD"), .value = IOV("eftknguulFyzpVpENvk"), }, - { .name = IOV("xaEKjAyLTHK"), .value = IOV("kvgvxPganJrN"), }, - { .name = IOV("qLFyPnrkNMgJa"), .value = IOV("LgjTpfXFGoGoKSZXvGAwEslJncPRogHQalXLaAxqGESgLliZsbtLfbJRJxeNGgeeeotNtjvpRW"), }, - { .name = IOV("rg"), .value = IOV("cGICkeJNXHchilhzXWxknpBaDZLwLivEMTtczdnTzA"), }, - { .name = IOV("WfrpZfQIKTeiUJdG"), .value = IOV("jFLWDNcVJaElosYVHLaKGSkGxVMXCtUtxOEHUWrEpxQGlZXhXGXwdxFhogZNizmBnqqAPnjaqLcGdnct"), }, - { .name = IOV("MGuWAxitHPnQASJlXwuT"), .value = IOV("lvJUkiPWcCXmhTIDFIBVqQYsOHxCSIrfGWWSdDwCVBRJuMqt"), }, - { .name = IOV("gnRKRuBBvqyP"), .value = IOV("KUmEUOwLsXthxZhnwEbucFGZYzCgbtbZjfmhP"), }, - { .name = IOV("qZNzwIDBdlZFxz"), .value = IOV("BSlmLeMUHzaJrTmfBnldBmgaqEAznaWywNvVIiW"), }, - { .name = IOV("lC"), .value = IOV("dKWvYdBmnTfmyUVqpmtKwsF"), }, - { .name = IOV("VqlX"), .value = IOV("djuCTiztFzJ"), }, - { .name = IOV("DjIBOl"), .value = IOV("EdHSMuVUdlsCsS"), }, - { .name = IOV("aqzRQvYzzxOG"), .value = IOV("fcrpbvWFavlTPZDZzpordNiPOODdRHTfWzqgKBrGAEhjSHShpxvihMJnK"), }, - { .name = IOV("OBh"), .value = IOV("OuKVREmnyGlgcEBo"), }, - { .name = IOV("jTYydxMqOyziL"), .value = IOV("JvzKKMQIYwzXLYxQfoSCsFtSOOUgeOFjywwohYvGFGvrvblhpzUBrgkb"), }, - { .name = IOV("LXBRXUPDN"), .value = IOV("HABWtqXSHWpnLAtwCZEeaodgYGiCELiPMuyPmzSpCEfjMQgVeLMtfh"), }, - { .name = IOV("RkhdssFxICwoRmNT"), .value = IOV("QLGzdzFXpDrmEp"), }, - { .name = IOV("YzHWajPfbalaAroVN"), .value = IOV("xfJRbDKUeEnqECAhqBzFYDMTFWASDUiQorMIaMbHSHbzAvUEkEKOJf"), }, - { .name = IOV("TmmpA"), .value = IOV("xgKNLeCmuctGjPZGSRbPyHifvgAxZNLTdUQcBRERZdBkRmJYNA"), }, - { .name = IOV("UCEpHjfDhuodMlmOTGlA"), .value = IOV("leiKacyWcfXpZEyUzEomcQjwEdQwOIsHhQFSuRsaVpmgOnUoKglGPtHL"), }, - { .name = IOV("aoftiQHYxuUScc"), .value = IOV("fnslWBXpmKYUqoQnvfOQunucfom"), }, - { .name = IOV("TJwXsbWHvJpO"), .value = IOV("YYpiwXjKelHCuNpq"), }, - { .name = IOV("dOXiJosZUGCvtapj"), .value = IOV("UmkyEyEkXLeEbGMzvKzBajsokvhzaYTfqsQnFgEO"), }, - { .name = IOV("kINrRpt"), .value = IOV("EbVqNfncJKGYrfyoqOYwntLpZFpKpfDJFsFgzlnpVtCGRiOdjLzsrxFppvyAQcGw"), }, - { .name = IOV("IYOFREefkz"), .value = IOV("tSDSaxoBHPiZZfzeMyusFjJLZWO"), }, - { .name = IOV("hsdzByVHugam"), .value = IOV("vlnRLvuQHrnlpbsQoGwFEJeyzaKeiGubsNKxMiukYBGBFoDYLSEPl"), }, - { .name = IOV("QrlSTDd"), .value = IOV("I"), }, - { .name = IOV("GBtdvdviLtYBhekjSPss"), .value = IOV("VVlMWYcRfPDrAcqTbtkSoHCpyFVqrtsaUBepatkgOvXTrDahwBbHuSidZuPxCKFcFRBPfNY"), }, - { .name = IOV("qRbbZu"), .value = IOV("EvaAObJUoTLdHccIJDLNvyDHaGeTlO"), }, - { .name = IOV("XXXiclvIRjPbZ"), .value = IOV("hDXWokhxnxvgLqHWyMwFwtyxXo"), }, - { .name = IOV("eGXIaGhzDLA"), .value = IOV("cRzxrFntYQCTRRJfaEUqqWomDtpGxnYlnHlOeoXepII"), }, - { .name = IOV("u"), .value = IOV("VwuNWmQkhoyYimzyUz"), }, - { .name = IOV("PZSjEGb"), .value = IOV("KcbIoCk"), }, - { .name = IOV("UCEiDhWyueWgerf"), .value = IOV("SJLDFIWXJFqKBNAfXUfPECiIlaHpmtYQvFVDtksjZcZnkteokOrAbLCwAyUHoaJXTYXyr"), }, - { .name = IOV("uAysQPuDnchSvfty"), .value = IOV("UDxQtvMguVFAK"), }, - { .name = IOV("aidpb"), .value = IOV("cMStWAMwkEVzEgXPZPJsTrWndrqPXcToIjHxwtMQtpmwT"), }, - { .name = IOV("FlGbZvywsNytnf"), .value = IOV("HrebbyAWIsNLPDxltddcABjpjHKySpcAoopNcOwRQvWga"), }, - { .name = IOV("rBls"), .value = IOV("hqVSaYqganXHoEFBboTTzekfhFGQFTYgpxTFDvjibcYDiLljmN"), }, - { .name = IOV("vWqfTmWayoCbeKmRUPT"), .value = IOV("ShyIDUcS"), }, - { .name = IOV("ethU"), .value = IOV("uO"), }, - { .name = IOV("CgO"), .value = IOV("aoqsHtAPHiBglQzdqlQTFKRhjxfMUjOxAjuMKcKEduqlgZKBuOP"), }, - { .name = IOV("UNWbzKvbrcnrR"), .value = IOV("VmHHCijXVFCNPibTEzsvEOQLlEnCxmFYlvRfTufqMhtwdBPMZMnUqEdLihBSthntIJarB"), }, - { .name = IOV("slyZuQwxkxtjWYdyMzOB"), .value = IOV("jodWslRbRuAzqQOlVUPuWayWXivuwDBGqwYpuQGvEQrtLSUsPNNNLYDkEPRS"), }, - { .name = IOV("iXRH"), .value = IOV("hbNDPAzwHmTCCzsUOKBRTdbLVTNyVtPtzvzxUvlhoqoCikmNXeCXyDQDBCPIVNpNFyufInJzR"), }, - { .name = IOV("DFyIgqDeAuZGDBmyQ"), .value = IOV("YSSgTLeenKFwrcvPHRoRzUviLnuvxGbzmOIziFzfZuaowriqraDcfIrbvdFvvRu"), }, - { .name = IOV("TCtQvi"), .value = IOV("OSKM"), }, - { .name = IOV("E"), .value = IOV("olb"), }, - { .name = IOV("WKyVsugRnsw"), .value = IOV("UkDoWJYRVvFMMbwOGOuYtLvhRzdapxBBPXVVBWlfDlKmEWYTBsWgwsbMUDtpbkfJezPcTzPRRKMSLWc"), }, - { .name = IOV("qLTjtazizjkKTgYiv"), .value = IOV("LuHmRlsoHANwVNxJzQCvItmGeEljIQvaSNaitkSiBZLTzGwPXPjewQ"), }, - { .name = IOV("JucIm"), .value = IOV("bjNkiAqrOxHqypamPmOAhbnrZPWpxhZuDqIEDcVisjpPDUuabCVfDuTujVjcMIG"), }, - { .name = IOV("dcbgzIFrCSHjR"), .value = IOV("rIHCTHmIduNHAtZvoxLPgNVskeFoXWOuWiUuUsf"), }, - { .name = IOV("zpPKfSWJQXW"), .value = IOV("cGpYNkpnxsGTLdDqHUAQujkykImngFpELrKTdPBCLjwBrAOBomhaakztYfrGvDiGhYaKyjrB"), }, - { .name = IOV("OALNgSdvlk"), .value = IOV("OGkrphPwElStwkAhZaEsCfgRAlQpfbdEzdQrRZzwTttJyYqEZghpkkKjTTpeOAKTLZs"), }, - { .name = IOV("qDnHwZGjQrHHkXw"), .value = IOV("zoGKyoRRlrhNbgAgqTgQ"), }, - { .name = IOV("bHvKQBSrwsbN"), .value = IOV("kRXcIhAQBCLbxBIuUnxLopytsqlvJlSpv"), }, - { .name = IOV("KSoWZVPbIIRMYTWOFPxm"), .value = IOV("nCOoxhEMyylkpYmUWdcLpsPHOQHGCobedazSCZPBaIZQ"), }, - { .name = IOV("eVl"), .value = IOV("POgjgrgwEcicMmeGknMgXmYTiGarUDtaogLMZoqCGrX"), }, - { .name = IOV("ymKvUqDXTD"), .value = IOV("UpTVFnTmYbdVBLzRRbawBNubTIqMgbMUiEDKQbQzWNuFBHtACOdssXZQzSYVroYaXuUWHjkOD"), }, - { .name = IOV("UwFRzCNeyzoJIGIIZE"), .value = IOV("XxkCnbLihBvyaJvhByVxQSaIYwYfNANsAfZBQpKAFSSDYsVkaweGxXEcmRHKODEyZWrSEMUvOeE"), }, - { .name = IOV("ADIFqlkPIOBtqUdI"), .value = IOV("uiapyeEdkmQKogWWoxHfUyRjceypoKgIqLvGmSrVQfvWGPiHPHvCMNHPoQyImUjILrXcxSlvXz"), }, - { .name = IOV("kDtuXD"), .value = IOV("okOTTjecInfPowWvKkKpQRFgm"), }, - { .name = IOV("wj"), .value = IOV("CYgPjIlBMAFPgtJzWitKSZMsqwpLhEcbezPTj"), }, - { .name = IOV("YSQq"), .value = IOV("gQsEsCeFDYLabCRIVBCUMDjIoSpHzxGaaDxZnFyvCwaeIXYHDhTMmnWxaiyJHRjUdxyabGryLp"), }, - { .name = IOV("kLTPoOswJHPtTvCOKaZM"), .value = IOV("BxRoqTqfNJnASmkdihthPolfjuEkOyytLJer"), }, - { .name = IOV("AdbkOBVyv"), .value = IOV("DjxXcEHjyFeRDpnZaPmXSHpwoVgtAiOsBMOUhoJHtWykYRDXQWzZnoRBaHZ"), }, - { .name = IOV("jDrNYkkQJmMmsVaSx"), .value = IOV("HlxuTOkhxRWBVanbuKlsDPsHizWqLsaxmHMhdwuyDk"), }, - { .name = IOV("taQSZNebbxqfpg"), .value = IOV("dblDBypTpDMUwMKAtcPDLcI"), }, - { .name = IOV("osdPhgW"), .value = IOV("MGWrTjjrvvKBTEeDyFCEogIwyTQmxCsPSPwdMkoxMaGxlKvfLVGQanSauBXTJzkhFpkLiGbXuN"), }, - { .name = IOV("sV"), .value = IOV("ymthSFFz"), }, - { .name = IOV("KkYwrPxMK"), .value = IOV("LhXuMnGJOhGNjghCYRYTEYHiFYeG"), }, - { .name = IOV("LRl"), .value = IOV("jNdCgZsTDDiLYjQmrDgLsEpt"), }, - { .name = IOV("HVeCLEuwYnlyC"), .value = IOV("GmlgeqnUfuaIDlDyGcsYbHoufvXrFuweUjqOBW"), }, - { .name = IOV("qTnLsjtBePYbu"), .value = IOV("FFlXlLCnEQDueBPdhPvjShtqEpAFjmtsorclgSwZCIQEogvYHkQyrbbheE"), }, - { .name = IOV("SDULFGdBwCcVyaeOfz"), .value = IOV("AVFHQiOHUNJEVXvHNQGBVsb"), }, - { .name = IOV("BBUJF"), .value = IOV("UUaFEDlgdcVdJhCrwRufTxqNLPONrLovqalcOpDAoQLfYEvuHzqTzUjbCtZWnFHojKwjUWph"), }, - { .name = IOV("jnqdrzqOJxncfE"), .value = IOV("TzkGMjeXVG"), }, - { .name = IOV("BkVOVqMEavX"), .value = IOV("SSIZxiGmVoGHwwutohaUfgeGdauCyzwQ"), }, - { .name = IOV("ntJcKOHvdZM"), .value = IOV("tGqIhrixrpWFPKqtkMNVAmbSPPNHErCuSYJUyiCbiExHoMSIIREJaRpkzIqyq"), }, - { .name = IOV("kyRfipPNDrTePZiF"), .value = IOV("TFWYodQROiJsFFSFAQ"), }, - { .name = IOV("qVjDTzliDKW"), .value = IOV("AQoWUReVzHCPSjfxaEpnEreFaCIHVLaCiibjkGcrjPwanrpWCaLlflDIkbEKhDhxkaVrDXLTzUYFKniu"), }, - { .name = IOV("XZPK"), .value = IOV("mYTxgbXZPJRLBbJDcTxWzIsRcqRkiZpMKhpMMERDhtTSVJZJMRNtADvKjJuNzpQNqEjHZPTpPT"), }, - { .name = IOV("TdufiXsDhEwqiAR"), .value = IOV("qaDEzJzTSYBftgxXabbEuxpxyCDilfEpJ"), }, - { .name = IOV("kPNL"), .value = IOV("yhcRdHpJJHBXBbJTNEYQ"), }, - { .name = IOV("VXjwRRnXhNkKmIL"), .value = IOV("mSDNdywqqCpusPMtX"), }, - { .name = IOV("iU"), .value = IOV("jGJUmHWkcnlHbZKXQFpOVxPJg"), }, - { .name = IOV("qHqwRKqIexdPrWvodpsn"), .value = IOV("IjPFWZKtXttHmMTGkhhbinkSckKrndlWIgLRDrZnezXFplg"), }, - { .name = IOV("a"), .value = IOV("ZonwWcaEplDwjbOmcsIuLFldnRMSAHdyRlkYLfcfVREXUJSLz"), }, - { .name = IOV("bsjsgEPrJD"), .value = IOV("roKqYmpNMOQngRGkwuOtvPxOwHSlzJZUThDJUPldTYNG"), }, - { .name = IOV("XwO"), .value = IOV("FBDkxnBMEVah"), }, - { .name = IOV("FhYN"), .value = IOV("EDHVCdyGbtfbQiqOXgM"), }, - { .name = IOV("tZMOyELeiRsEYdWf"), .value = IOV("UDXAmhPggwmqstxkuMwXqnppoHOtFDhTOXPURLtqQmBLep"), }, - { .name = IOV("uqKmOWMqnphDHBGoE"), .value = IOV("rVIMixzEfNpJRlNknjtLjcuxG"), }, - { .name = IOV("ut"), .value = IOV("HnIxGDfAVOaiXAxAmqpldWNuDqVyLewJryL"), }, - { .name = IOV("cYgoKbyOXAdUxua"), .value = IOV("W"), }, - { .name = IOV("yblAvHGo"), .value = IOV("SOAhtTyJmJmxXxwfvuTCrYNycoMgIBOILEggoZszpuzISJJjCaSwtunkyd"), }, - { .name = IOV("KRsoFRDngehDrZ"), .value = IOV("dBiUwrudmnfiVoeASJcwtiANJTsmgPSjcItGYVSryTFffpEAIGJWYLGzxUvWW"), }, - { .name = IOV("gGWk"), .value = IOV("TjKz"), }, - { .name = IOV("uPeSPzUFUK"), .value = IOV("qSfULfySxbjurtaNYXHHVOYAJkrLDIDDbIuiyDdFaXrDskGFjjfdIypLdKZpvKIJrRleFPworxbRQR"), }, - { .name = IOV("UepbDqgogbm"), .value = IOV("cbCnurwSREhPyNqDHjhgKDe"), }, - { .name = IOV("POwN"), .value = IOV("VFALtiLxfriyUMihTplKmSjalhrdtjQIxuUSkHUYBzRcPYSfMBNqQlTvLtOZhMseJGyYt"), }, - { .name = IOV("F"), .value = IOV("pEpDMSWwDgQqDZToF"), }, - { .name = IOV("HLLMsNPZRb"), .value = IOV("hXrAIjBTzdfdnUYTsbuFhdBYhYoKGi"), }, - { .name = IOV("otIAlwpCFlydvbHSma"), .value = IOV("tTxlvsuiAmfbCCJZhqoPlSXKcfkjCwztqSlsfSwcuUIpfq"), }, - { .name = IOV("tmP"), .value = IOV("gxTTlbaiucyANDKmfkQbBPFvBeFgTAmlYxmVhjAstgjLBDEFFRkw"), }, - { .name = IOV("lusvTuVZnqcwuhNBdLl"), .value = IOV("yswsmvNgybkpvPhEcIMhbugXlacRquvqGZKxZuVbBYvzfEVloAqbbh"), }, - { .name = IOV("loOkM"), .value = IOV("uRsSKuIzgTaknZhzTAEMevHdqdGQkeydOCMWErgdCuSdMxAGLLeNPvE"), }, - { .name = IOV("GiJ"), .value = IOV("PJUzgbZOPOZ"), }, - { .name = IOV("XeUkQnKihnJCuysW"), .value = IOV("kKNAeupvmvcEKAlE"), }, - { .name = IOV("iWWbjGYByfRXmgDBZhjG"), .value = IOV("RneYsgDnUNCzUuNZkIVXmFbeHLXUQrXqOEEuJKcOvZ"), }, - { .name = IOV("jsuhtYdYbyIA"), .value = IOV("YcQctxiznOZnrManjHtHWTRKLJfdGMULUjjzxXgjiBJGbkwNalMsuYCbiXqnDGNmuvOZilvUsXWzEROp"), }, - { .name = IOV("Da"), .value = IOV("VcPUXPSRgzfbwARhtWHyhJuNNKjIVYFJtWJhRpbEFlK"), }, - { .name = IOV("eFyVQmVCXG"), .value = IOV("eIJgYMlicZQcGgYLuARYZCDGZwUpzVHjmogTaRHOhKOdLsCNCfAWUTwHFdqsPl"), }, - { .name = IOV("rKHzqfuPxUbMa"), .value = IOV("aYDaOWMcpalNNxohTVyEoVBWWgVqRaVBOGNIRbqQoBgXAHbQcQCUGGofdvMFtctjUbOBeZOC"), }, - { .name = IOV("uzdsMQEpXa"), .value = IOV("ADUAKOkRrStSbDQSUKPLhPckJQuqzstyBHRwVwctiKpxgMDlYxSrcJHnqdYG"), }, - { .name = IOV("sjOpmDYImmqnPOXCmx"), .value = IOV("HgucXRtcOEhYHZBNmINF"), }, - { .name = IOV("iZU"), .value = IOV("tQAEmHLSyOHvDbiBrAMvIutlhiFsficajuGzmhnJftjTuxsmmqvsaeGrNwhtPBqwxlk"), }, - { .name = IOV("esGykszndKZlKh"), .value = IOV("oQWKRbNcPuYgReXKonUYnzONcNIGxJAZyySGkxPjFlFuy"), }, - { .name = IOV("svtCFNkKmEglmAqyEYD"), .value = IOV("AOmxdIxPkpyKZrrZWPQighlqpDRM"), }, - { .name = IOV("xyxF"), .value = IOV("xnudGQhbrohSQPASuPjMINmUfhmJFUWyMaInKQIirdXebHOpRvqqPrThZRphiLJKEJE"), }, - { .name = IOV("zGW"), .value = IOV("XINcAIevSouOaThxRUmsrCrYACGMHJJpmPTnzypFVtVMQasFkIlPXAaCUmiOdZaQm"), }, - { .name = IOV("tGQNQs"), .value = IOV("jQZVAhMXtZFbbpjjsHjCftwqEgFVriOeYDMDTbYmwRf"), }, - { .name = IOV("zJBPdXcMLWFbGiXQGpVy"), .value = IOV("MbLAXijjcsmSrlFDwwQolnlWztzAKuwQQadllKodTULXPoamxCHaRO"), }, - { .name = IOV("DTnVKzHPFqfitxyn"), .value = IOV("YGuZDoRZtJahdfBnzAnKQxWGV"), }, - { .name = IOV("dFFhSCOU"), .value = IOV("KBbQqWt"), }, - { .name = IOV("GeSplrbeGDfRFR"), .value = IOV("LhdNJxHclBNIzfxFkRcjueW"), }, - { .name = IOV("osBz"), .value = IOV("KhQleFXTnyOwFPxmLghURmdDncwjzBtgWytPMDUUEKx"), }, - { .name = IOV("sigktsHCeP"), .value = IOV("DEKxlTAjoLoNwYZZrYNdTQfmFAxWlJNSUluZrjiaJgITqlITFEoTPtfDhXblBuv"), }, - { .name = IOV("sS"), .value = IOV("uLiHArSnDCdSArptbRqqZHGhFjIrnQRqSiW"), }, - { .name = IOV("eoGep"), .value = IOV("HROwadHcPHANdclgMzMDuVmRSpdyYjrsdQQQKMFWBfieRyRH"), }, - { .name = IOV("KvDwmYwkjDxvymHeJ"), .value = IOV("YJAWFcBDluNfjMbosvuUgXycipAYChrToEJRPdvnGRubPbWBdYiwGLYh"), }, - { .name = IOV("AsYMdcTHprhJqBxcu"), .value = IOV("EvYykVrIJqueFffDrsmxMFAzGsWsndDlMvTwujCeDHOhFdLXsJMlk"), }, - { .name = IOV("hTCajb"), .value = IOV("JXvLvByNmeardMOBHPiUbIMkcspTASnsGSKqkO"), }, - { .name = IOV("OtL"), .value = IOV("PG"), }, - { .name = IOV("lozIYmsxgqD"), .value = IOV("PfgByoECgMOnQKNDTockUdJnLvSStMwaLI"), }, - { .name = IOV("aTJmpDJtUlLysHSPh"), .value = IOV("iCmazGpSAfakFaJMnyONWumBuRWzbfaQiJqocoAGEGiMZHWGyHhJbcgAcYdtFhanwS"), }, - { .name = IOV("lSpQfMs"), .value = IOV("eGTPTURtvSfDllQgIcTSsMgGjDrQBqsvMtAEbCdkBjykrtbmzddIzpa"), }, - { .name = IOV("OUI"), .value = IOV("lgOcKdUrHPinFRzoJjjHPItLHtZGGTpeMreBbeBIjccREfyIQyWUHtklFgTpeQ"), }, - { .name = IOV("e"), .value = IOV("jNGMEWsrWTrTHZLOHYBnrjUdjFVJQCBPTugrqtqxpXkUoNLMhhPQmSqgqPbQUqKokdJKeWmJN"), }, - { .name = IOV("GypXAFuKWhEmBX"), .value = IOV("OODlQqyjsuLRnGbkiirIhxgTUfjoVmnItRnGzcG"), }, - { .name = IOV("DnsJEgEYMvjUBsTTs"), .value = IOV("ZBgNaCeWZdDX"), }, - { .name = IOV("omLLmSWPs"), .value = IOV("QweNIhoPQJabvXLoxaeUQhTNQfdLEmbOSmJWzZShRYqpupzyIajGLjLPFJxSHZTTYrPBZsVER"), }, - { .name = IOV("SzpKIaowQmI"), .value = IOV("gHwWTAsvaIWmMpJZmKHeVIZZTccSRfHqqacunUNgSoehmVpjjjbtGRrnuxxwSacBwtLGTWI"), }, - { .name = IOV("YBERbickzFQRaFPAm"), .value = IOV("DoTDwMBZDaCzQciurvpUnIEZIkWaGuyfjWLyCMZzhRqVaGFwQI"), }, - { .name = IOV("YpKNCIuTeZp"), .value = IOV("ePVbyRCMCJfTtvaApZVxjrvmzYarfoiXFcoUzdiOREIAwLvSUcuHcjThsUmQqOnTOGcnO"), }, - { .name = IOV("CkKdR"), .value = IOV("BARJRaJBIOSAYhtlbFjaFyAzWLfAjNJYJzTotubuDhTifQEqXGHwDtDNVrNLyyKAZ"), }, - { .name = IOV("vkYrtidKfHtwqtnYZZSL"), .value = IOV("KQlgCeYkWzfRPlPUVrTsOuvJLfuOXR"), }, - { .name = IOV("QSzoqnYjWR"), .value = IOV("yVIUcBgtEMjUqbluN"), }, - { .name = IOV("wpSaZkcmbbMYestL"), .value = IOV("PpIPVaMLmqsjyoBBuhXhHLzfIGeVEzjcNAOsjsLXUKisegI"), }, - { .name = IOV("BTAoCpxMx"), .value = IOV("OVVqosfAKrqFxdwrmgKEGbcFPuYwLoZwOhMOoxAmx"), }, - { .name = IOV("rHqsmJZDMbOOZeGMg"), .value = IOV("utTWMdYNQMWrNvdAKbREgCATLVzlMZemHoWJdvGScdnGgkDHmQCNlKLFhIqtJXhOODPboIiVEMZWPpHR"), }, - { .name = IOV("nLAxXfJxtgWbbW"), .value = IOV("NcdMdovUJEA"), }, - { .name = IOV("mXoJbLDsUdHeXv"), .value = IOV("j"), }, - { .name = IOV("RuTkNjNyZxQxCZ"), .value = IOV("mZYJPzmtwJRrddFZjKXUWvHfqMwSAEmuPZKZFPB"), }, - { .name = IOV("OWt"), .value = IOV("SazOQVNwq"), }, - { .name = IOV("OXOCJKFijqFsj"), .value = IOV("vyoeAPAsUaXfIISFyK"), }, - { .name = IOV("htPNfnprIEu"), .value = IOV("splWaAvNWLttxjtIGCjAPhDJYnFJYLgBLGCnhnwXQJhUFTWxzjOwLoJkpEse"), }, - { .name = IOV("SmiiuhSKdOc"), .value = IOV("ZRKTDoNSFmIpoVvDgvAxDqbxurfXHJUxHiHgUUrXRdzXMBX"), }, - { .name = IOV("wxBOCmfCQbWVTTE"), .value = IOV("LHHPuzvrhwzEzLJ"), }, - { .name = IOV("WjLwaObTbM"), .value = IOV("DUXvJqaDBOAvIPcSrZcqSejORFJmEFNGLgMOibYTXQMlgPndoSEmOkHdsTAXGdVmt"), }, - { .name = IOV("JoiuKXrUDkc"), .value = IOV("WQdlHfEAnwxxbySFbVQCqqdqQNkalpPERjNtdSYkqxcbpbiGsnjNBUBNMGgddBQkCYleq"), }, - { .name = IOV("bfvQibqut"), .value = IOV("ZUcJDireURbRCOoTYsYpZPOJ"), }, - { .name = IOV("HBcm"), .value = IOV("UZKNxWdGwUsyUtbcAbyMDzkROgolPxUiFfJVTzlIqGTyhHTIjpwTrxoxfKgex"), }, - { .name = IOV("baOTRPxroomMt"), .value = IOV("dbXsrgBfJKwEtdMajMQPBjvhcOJXjraWvqqQheyfSjMsoYxZGFubNpLXRKSTsZpZ"), }, - { .name = IOV("NNWOtDkQf"), .value = IOV("lkWLYjgOKiDwzAWmvUZQwfKCmDHHoNltoxBAAVAneIAfveBkafVgobZUEvjyvBpHvVWAbsNgVJ"), }, - { .name = IOV("ByPpj"), .value = IOV("uwcMlhOHBoShbYJOuKTtJYqGacQYrGqfoGmJMwstuPmmBSsbsaPJKoUWhRfUTVfhVwcQksRj"), }, - { .name = IOV("FnxaxRtnHGjskoEGdMez"), .value = IOV("vaDfWvclVlnguGJGmsRLZhbGXV"), }, - { .name = IOV("bPaYCZMS"), .value = IOV("kMSxFCisEmPRGNAXaqViNJLGYyutTHqxsaiNLxQyNguyYQshYPBfNoZxYQvvpGebJ"), }, - { .name = IOV("s"), .value = IOV("InsPvxoSAzfhdByPLEBZzSPHAcETymlTZFaqcFGHrIlwf"), }, - { .name = IOV("EdmXCBYYvlQjtzUGs"), .value = IOV("igMJKOmHjUyPTKAoGnslzpHtfHxZhgScgAeAfDFHIgWhoYtfdYZaXbse"), }, - { .name = IOV("PsLmZZbeIKsTfvkFPI"), .value = IOV("Sf"), }, - { .name = IOV("hbHUhPEdcMzrBodQULQ"), .value = IOV("hodbtJJnpzXiFLJIVxaJTEDPzbsjcpnZzguHOBTyKnExR"), }, - { .name = IOV("OhxguOyoF"), .value = IOV("eNAjFblgqgD"), }, - { .name = IOV("GIDozG"), .value = IOV("aYrisJccqopZgSwnwaQiTlrJsQINARdKlnXR"), }, - { .name = IOV("hpTvtRbgMI"), .value = IOV("kEXnTvomiTvZtmMIepxAJFyvgNhMTJpggCftIpYFijiGlR"), }, - { .name = IOV("VOoPnpPhloiSHmrIrWSD"), .value = IOV("VwIxCTrtsJDFTzQdkBxQMWcVQnEYAyChdAYKxKmPpFROVsyHdwiuAVulxLOTPpTOv"), }, - { .name = IOV("zEdQAklJPBTSJgV"), .value = IOV("iXtYyDVbvICJLEFmOBlfMBTChGRqxOyCNJyfOWwblLSAMcxVQCXOvJjMQXBxjhFYYqAuG"), }, - { .name = IOV("bMefJiTredlAapgjrRFk"), .value = IOV("dKDPGNfynulAVJvgCxWOXNZzLjHFIIH"), }, - { .name = IOV("wWbksnlSSo"), .value = IOV("KxwGxagRMFRyhhOyfOxwzTpGIhdSPTlGRCkhhMsKWMoPaPlFKCiumEtlIflnwwktfIARQhSIWqLBJU"), }, - { .name = IOV("mhuSqjcvIuHekxQJvkit"), .value = IOV("fovCxETttpADNURFrEmbAkpAGcnenkHxuGUcgfwHHbzfexzuXVaiAgllI"), }, - { .name = IOV("CNRXtZSKuF"), .value = IOV("nByRlRVtmChzwqMxkVLNfuxfmUCAsOuo"), }, - { .name = IOV("HSJasDrUrchiTh"), .value = IOV("vZnrPZgbkRiQMjOcfGvDVqlhAwRAaPPHDagpyYyakPbakYratiOrGEWIT"), }, - { .name = IOV("I"), .value = IOV("YuJp"), }, - { .name = IOV("AWebjligyhSPXZB"), .value = IOV("jLCWKpyAfyxmQNgflQNHfUnJArVRUFVnMWdNzQvQaBuMKCnpIAfNZXNcBiZuHsuBiHGj"), }, - { .name = IOV("FRdUVLQuI"), .value = IOV("gCqljwrHCwtwQybRrjQqRZyjfkdZvHZRNUjqXyTpENNNt"), }, - { .name = IOV("KOlsSoyAfTxu"), .value = IOV("IVioVCXsnuoOtpUOcXJ"), }, - { .name = IOV("jOOdyGYdzZtYkenH"), .value = IOV("YAqSSsCIOArHNVFBJGbciOJrlYuAoYuQvrUhoadoPiqZSzalIzAIv"), }, - { .name = IOV("JzVPJyfIEeZhb"), .value = IOV("rtdmnABdEDtKPsvGaNCsjcqwUfnjHSyfJITidNE"), }, - { .name = IOV("ayBZknSaEWcGXSCYog"), .value = IOV("DbLuLFSyvNUWBvjNKGCFIohZYFqLRlJYCarMhOPOyAWbFXRKgcnhXYqaSUdazfdgFYGt"), }, - { .name = IOV("HyxU"), .value = IOV("WHLgOWhrkVqiXNhZsKsezStqYpNMGKlishHrP"), }, - { .name = IOV("YnOotjn"), .value = IOV("ZsfJKKFJWlZwZvtCvgPgKPwZBgbkniVsCOADBZWcvXvIkHtxhAnTsTPsMPdhRSvGflQB"), }, - { .name = IOV("FSHwCFutcgCeP"), .value = IOV("mAZtazzHsGZXdvXlLaJeDlERHPHWKflFrJUXslJiLukOdOZhWjfChrQTFMwFhOfJHZjm"), }, - { .name = IOV("ZbZbIYnGSvMT"), .value = IOV("SbxjiFSGAGbNvGSevZgEehOCaGCDRURpQmBiQYXqUeKvSqqPyDuCieBWTYccnhUolvsCfQE"), }, - { .name = IOV("xvwUDdLuY"), .value = IOV("iGrBelMWlDxwKEUx"), }, - { .name = IOV("YeupEQkqzE"), .value = IOV("xHDEiZ"), }, - { .name = IOV("ojGsYkKIJpOr"), .value = IOV("fSRuNKPvKoYJyRsflDwOMuWSRfTTPsCSkqaTFgyQAgTyzaaoOzuKeT"), }, - { .name = IOV("jZc"), .value = IOV("APbswRAzpmfOeHNiBayjVYrfFmcLozL"), }, - { .name = IOV("NPHrAllKeTsJzLc"), .value = IOV("zyNEEOxaCZvVfIUpYkXshfJTZ"), }, - { .name = IOV("uAVkyzjupIh"), .value = IOV("WeyUtEVzuL"), }, - { .name = IOV("FWtveaowg"), .value = IOV("eANfdoDphZVTUOmSfsUlLTGD"), }, - { .name = IOV("vyMgpWstDMLyilUZO"), .value = IOV("gIywippHYmtmDONpEPzEYNeJuUBdRwpgo"), }, - { .name = IOV("zyldFPhtglIuWklFM"), .value = IOV("ENpFCkWnTGRMtyoTGmsGXvJSEdDrjjBKlnBIfRdnWvDIJpXtEUPSNzpZmpIygHLKrpxWgAjGotAEfA"), }, - { .name = IOV("lTbJtkOpYt"), .value = IOV("wbShkVZjREIVoUrJzEWiliIcEqIJAVmoxIntLlpKAtbNSnl"), }, - { .name = IOV("zbzdMZyk"), .value = IOV("HgZvtUoTciQEIwPd"), }, - { .name = IOV("GLMXlUqqHBNGr"), .value = IOV("ZYQJGuSwqyAkyuwsJ"), }, - { .name = IOV("YJhEF"), .value = IOV("CDVtrRVgWZrgCIehirzkSaMuylIfcvkpzDrrTbwFsLTNWsxeWYdLxvBrgGUF"), }, - { .name = IOV("MmCyzeRIFZ"), .value = IOV("OwhZtJSViAyvrqzRZsVlexDOSDMPJiUWyIJiIdrEjjacYTLAALFCtSjEOfIJGpsP"), }, - { .name = IOV("JgLxsrDuSUXna"), .value = IOV("sccyilHtAQwVfgzQHlnvUtmeiywkVKoebaHh"), }, - { .name = IOV("iEmILU"), .value = IOV("BXDpDxukNDnZpxUuhOVqJBfgjeGRcVRtRTzlMPa"), }, - { .name = IOV("FziStNvOpVBWoSTfw"), .value = IOV("UOnmfYUTGOJIDIwQKlDRflzSmbkXfeIvMrJhUGkXXbxThaPZWOQwGIuAPVjSTu"), }, - { .name = IOV("atUcmTQxPlZwMuYzUBFO"), .value = IOV("HjnuMGKeKkogbdDdskzYBSloQaLlgYUnWVxphAPUgXkcbo"), }, - { .name = IOV("ZbYVLWzt"), .value = IOV("NbKXeGQBmOdZta"), }, - { .name = IOV("eA"), .value = IOV("FRKInXYZIzwbLKtfPKhbsQnUItLEoRbcQAWJbNmJiqMuUCDOU"), }, - { .name = IOV("aSXFZyuMqqe"), .value = IOV("PZRrEvuynPvJyamQVeYhbaWglkW"), }, - { .name = IOV("qpLwxKJuoAHbHLlvJN"), .value = IOV("DtXymDErsDKQjAOcqHJPEbzIrngmooWvDdTfzyMeXtPQxiTJvlmwAlDElmitOziKd"), }, - { .name = IOV("W"), .value = IOV("dTNKrpatagiQJcTlPZwauSqQLLvWIhqIjDNDaZxqq"), }, - { .name = IOV("Bpioasd"), .value = IOV("HPCqjneazQsUkDbbFwachFTIhfawInTrfiRcOQDPIOBwquDhPinyOQUokHigThAwdJUoMlEDNBu"), }, - { .name = IOV("VWiwvDXtTOe"), .value = IOV("loBhMkXyDoQLEIhwQCjJiBFarMzIqsxdtpkrHBYPbaldJtYeaDVhdxgW"), }, - { .name = IOV("SbplzFEX"), .value = IOV("dpxEtdyUhzrRBVwgKdjcOIBAhKQbfYneBhLCwgPwjaETl"), }, - { .name = IOV("hUQCEEJCNwK"), .value = IOV("rBOwyAHfdsNpHlsTfkGkyyJezotjkEvTbQbQhiJPffCEuqnKUXQdEBorxNkahbNowSHFIYd"), }, - { .name = IOV("vveNEXMUJ"), .value = IOV("HRnQbbhKQtqMHYwBaxzHEG"), }, - { .name = IOV("xxySgWAo"), .value = IOV("qAgMNhvavBaVGQibamnYfsYwZGAeYWepMNQceyycyjBwNGwYbFOoDsCvBuBrrbnukSMG"), }, - { .name = IOV("SDY"), .value = IOV("UsfVnUByYHhCytPstQHJhogVKAkXeK"), }, - { .name = IOV("ndephMCtXHwS"), .value = IOV("TomsRsPlwdFQiFaFzMUbcKtzMoDBBRFTUjTHYygNkwU"), }, - { .name = IOV("QzUKL"), .value = IOV("LjZRFruXTQrrmcWoqdOGUZvXZMFPkDSxSzNhMzlgySPWTR"), }, - { .name = IOV("FOJPVrscFgmxtrLoTi"), .value = IOV("zNjVhyTdvpddwTuMI"), }, - { .name = IOV("jfEIpazTwKhfCwUROpl"), .value = IOV("mVTWQEyfhaXTDMZSvnAITPBlxshwsEvHVCtbgqMbsnEObqSWtrmsSUreVzbTFEtMzPELaQ"), }, - { .name = IOV("XSlHMiABRlvPnlw"), .value = IOV("llMhYjqleqrdsAXmyPpRmoNLjnpovCpDx"), }, - { .name = IOV("wThCVJxsgpqpLRejZFyJ"), .value = IOV("DRgQDiVBKzWHvdSwHpgumHpDuadACzVUoYTwjQrtvpNFXHWUeExDWuHIlQGEkDJEuUby"), }, - { .name = IOV("vz"), .value = IOV("SVdkOvxhYHa"), }, - { .name = IOV("Ga"), .value = IOV("aKtjgFJPzDO"), }, - { .name = IOV("BishdMPTbxiS"), .value = IOV("HEteZieprmyfRIMPzMERvuXIlxWVsqZYgtDRniqD"), }, - { .name = IOV("xKX"), .value = IOV("nHvBIXraWAdZwBIrRxyYHGhgkgKFBtcIJEQDhvQKEWPQIcOkAGJCaRiyuYoSWWdanGxxhJeogJ"), }, - { .name = IOV("piWaALzwdmEO"), .value = IOV("RnTlVmetGTDILbEigRruEHshopqZcUVnkWDXXtF"), }, - { .name = IOV("nCKyFveq"), .value = IOV("mDoBUYi"), }, - { .name = IOV("GcliqSHRgyWAMX"), .value = IOV("zwPDiDiUounJRAocRvCTMWIn"), }, - { .name = IOV("hHyxRLqtgWYVbHOP"), .value = IOV("DDMuVKxwVlBUTXjbdGncVjoaCATMVUyTfcXdVdWVpJqBCiHTdKSYdiZEMiOOAmamNfAxGoKS"), }, - { .name = IOV("QujQelQPKgQA"), .value = IOV("skVbMVFjTOppVMrxKEBKmajFBnhXxIyEXSdzQhqerUvKaYIFULTgJePUmBAqAFijaMfikEzwnIIKg"), }, - { .name = IOV("nPysdXoSIe"), .value = IOV("RBqaYpsDlXMUMgwZeIXegMZtNserqjwqGejTEwzhS"), }, - { .name = IOV("FbOFepqqvCKKKQu"), .value = IOV("TJMemovHOtpxrFdQGmuoWkTrctTicYIpDCUrzFPkONdDtyekDInkYNcHHsLnsvXoKEFp"), }, - { .name = IOV("smWtokdzrvWeCJrLcki"), .value = IOV("TENOCMxLXaFyZmAYTYUsJjOqwfdtnuHpZAz"), }, - { .name = IOV("HErfmQgoENyWwilFgEe"), .value = IOV("KePjzrsKBeUQfSazAlR"), }, - { .name = IOV("GkoZykxdrnKlOpJa"), .value = IOV("ZwjAOTgUFUQI"), }, - { .name = IOV("kt"), .value = IOV("LbfCiGqdG"), }, - { .name = IOV("EtWeHYWgsKO"), .value = IOV("WaBMjmYKKkWJwzvfHoKzsXsXCTEhOzBBMYqeywwkiQFcMWNaIGecXOCMbGucRCUeRuuCuqcqItzCffh"), }, - { .name = IOV("wbPIPTOvCCTMgcTg"), .value = IOV("wXZGDQzwZTgSSSGGOmwfJadWMoUuaSLj"), }, - { .name = IOV("gakEeDdnXUZAMAqHOETu"), .value = IOV("mJdtfFVhFQAOifAvHSQZoaueNXoThRZqbFOLqVZvXSfOWHjaOBexWHYeambNsTwvFr"), }, - { .name = IOV("hbxOSvQDavGQVcir"), .value = IOV("RUoTQINIdFMhiPcOsQjtKwPevhkAWPippVfOBAMPXzaHuAijaWBWLK"), }, - { .name = IOV("hNeYBWsMptDKTRI"), .value = IOV("nTbYHgEAolNSSecuMxAMHvVPfAIvwOHJkhmkPaF"), }, - { .name = IOV("ykzCRgbbUJc"), .value = IOV("xwAlfwRDuBWuHLdjVs"), }, - { .name = IOV("I"), .value = IOV("COqboqlEdaiephhEbuab"), }, - { .name = IOV("DutInPMAnnpwQ"), .value = IOV("ZvrEslKWT"), }, - { .name = IOV("gqJUYPMl"), .value = IOV("QJdHxSjUjuKOJdFKGmwugUYituKppOzFbWXnqpPaNPUbYBwiKRNrfNVXwBQlnKlwPcUwBkfZerCmQ"), }, - { .name = IOV("WhjZLwL"), .value = IOV("vYjYFQzNMxzduRFjSIHBezCncMqMkoPsjfdyKJtTVQplfQpOsrGCtgCQDTbobXXA"), }, - { .name = IOV("BEXsAGqehsSlfEEHSJha"), .value = IOV("zcoUK"), }, - { .name = IOV("SeYrWBn"), .value = IOV("xNIFLnuRfmzeFRZqaciWBxaqomWqXUFHurSFEYrLahnfMewFfpQYaNniqSxxNMSkU"), }, - { .name = IOV("iAP"), .value = IOV("NuPODfgkArrOfqgalWalvwZAnkAubQAIbFZtfdgAnKrFuSjLIDZtoSfclgazWRwqtWIPXnWaFm"), }, - { .name = IOV("WhfPxRdCfJmArTAWaKb"), .value = IOV("eIzKjDtiGfCqddehDlwYhPzVduJZUcYsytmhgxQAbasWNEBVJIgBRoiclDQnUYTIkhAsaaoA"), }, - { .name = IOV("lNpYIy"), .value = IOV("Qxm"), }, - { .name = IOV("ggnCOfkUfvKYqfulZt"), .value = IOV("vYnIuIPmKoKamLbWKcydBIxexNlDkpfHXFWXQhhFRxbsFoMwOPvfIqFgtVybcRxHvipgBqUGmhn"), }, - { .name = IOV("jTmKoOewvBzbz"), .value = IOV("WuGLQrDOrXKQswnMODvCfQSaAfEeffeHHWzKXBQTCcAzGUtqkqnjtSYVQEnHviapAipDMRkwEI"), }, - { .name = IOV("mdywgPravpf"), .value = IOV("RXFotSxQFZriFm"), }, - { .name = IOV("zbXqZDvxd"), .value = IOV("WWxzlHAUoDuOhSJXtdSxKodSaWkoFSLfImIwUPheqYpXORFElHnGvHLlSDZTxFpZiyVPyv"), }, - { .name = IOV("sJEtLb"), .value = IOV("SStuCgDAJkIQZncWHTcASPdFBVVmKTAcChcQGOSw"), }, - { .name = IOV("WWcSUJh"), .value = IOV("iZfhcafjaSJyjtfYkzKrNmDaVctQqOMwmbnGisdWanuSqWacuQfUKrQPzUffZyddNalfdrcGLTtnPaYB"), }, - { .name = IOV("mglbq"), .value = IOV("XzlMngLWtlXZkbfJOlFNdKNNsSykVMFYVCpM"), }, - { .name = IOV("RIzPRRBsEGWYuEMsdM"), .value = IOV("KQUMrSluVBiFxpSuAQkXbLBjQrZMXfvanNJGqjXPZOiiqHlGaiW"), }, - { .name = IOV("nKgoLw"), .value = IOV("xDBEOjuIrGtUtPUoNBpTEBDjBziljhfmIESnGiyrkBTjHOwCFeRhsAPvi"), }, - { .name = IOV("cRNhndLOs"), .value = IOV("YtWrPVVVjflqZevVddBu"), }, - { .name = IOV("QLMyGvbmxZFsgeYS"), .value = IOV("XSuUzF"), }, - { .name = IOV("GwGusyrkDdtPDV"), .value = IOV("lnUElPoXYMErLuLt"), }, - { .name = IOV("jLya"), .value = IOV("sOa"), }, - { .name = IOV("sxDMxYnHnjvNwp"), .value = IOV("TTINpeMjWZtdpTLALdptJHXzoMFkFRjDIcUTYbnOESZsrNrjmUxIXaeRfVFnfpPjfLfQcbdb"), }, - { .name = IOV("kS"), .value = IOV("OTaPEoInyQBBkmWvEqCagxUHKGdmKpZMaeaQymJVZJWlNWDYnlWQXNAP"), }, - { .name = IOV("fBrJSJxAu"), .value = IOV("EkQXtcWEJoGCumPZNyEkzpjaezapCfmMNctHKYYUfuGjGggIBLjhgetOTXSVW"), }, - { .name = IOV("qPdWEt"), .value = IOV("CmvKnXvnkhKKiqEhHsAU"), }, - { .name = IOV("bA"), .value = IOV("sSUPWQNyKHQrgiDSTMNLjiINSdEUMSRihy"), }, - { .name = IOV("lsCO"), .value = IOV("RAuSyUoxQAdXtlqt"), }, - { .name = IOV("zMNBehRIRS"), .value = IOV("UQxQhSvlovRYnhgufhTIkMadiytMNHceWxLTAydoaKJPcnfJMAUqvnYPdJQjRg"), }, - { .name = IOV("uUwYzfrCFDpCNjmD"), .value = IOV("luBHAPrMT"), }, - { .name = IOV("UEzDmHztPUBqylwnJ"), .value = IOV("HXUBrhkMUuVkDGPfftWHLZxCqHFMaZOx"), }, - { .name = IOV("NkpLKunryHnuNQp"), .value = IOV("DqXmqTTvGYgBCoIALyRb"), }, - { .name = IOV("PPfqkEQ"), .value = IOV("YYqqQilEZBdXnpsswSYgDrIGbOGypEAEDilYkEyiLomyzkpCuioTPEWhrXcQyA"), }, - { .name = IOV("axMb"), .value = IOV("VbXiE"), }, - { .name = IOV("DlxIdxJArO"), .value = IOV("qKyDtkVYDLjJMpwldJMMSfZdklgKApKdkmvLfxFFUAlRljxzBBaebmgygrRtlzysyTd"), }, - { .name = IOV("fYMVpMryaDyXL"), .value = IOV("GJktTPOJmbiIDrRlUObZILf"), }, - { .name = IOV("CAklNxhfoE"), .value = IOV("OLvgYDxbEZFVQAYgmyQRLklDRssynPVdzI"), }, - { .name = IOV("DPwqJl"), .value = IOV("lTyLReffFaukxTCSkRZwRvksAEaCmevglIOgqvRpK"), }, - { .name = IOV("WGZ"), .value = IOV("LWcVhCvXzSsXopaCzxYBzZhcAXlSfnxsRiiW"), }, - { .name = IOV("sKqPlEdNHeoftXjO"), .value = IOV("YblUyjbQXkYIqtjDaWVngZUQVVSQQWw"), }, - { .name = IOV("rXroaneGOBRNGHyQ"), .value = IOV("lUKfihAVmmGkRFyNbUiGqGPvamquGdmXRRRisOvIjwPzpehGxyXbQWjcpgtXSi"), }, - { .name = IOV("TXLizpsja"), .value = IOV("uCxaWcnMPEZhH"), }, - { .name = IOV("SYHqlErFzr"), .value = IOV("y"), }, - { .name = IOV("jxH"), .value = IOV("qcgXtlOPEQUtGrqWmEnWuKkhTlpGkDmbrnRuY"), }, - { .name = IOV("lZUGSuIkKnQjrX"), .value = IOV("gNwwXnzwuyUpxqEieugDdFjnYf"), }, - { .name = IOV("cnKWcJBOQnJoYPzZHPa"), .value = IOV("nOmkJSmETHcawFj"), }, - { .name = IOV("qLqLHQyzRhigbE"), .value = IOV("sViRVdDeVGUNNpMlXrloviqZLNacfkICugoC"), }, - { .name = IOV("lRhPrwDsqYzhd"), .value = IOV("cZcUfytIDjbeSurkihXeusCkpcTmQkhCUTiUKKfiotFU"), }, - { .name = IOV("qJxQnHrigZLmTx"), .value = IOV("vmwLPQcZmwqxMhajgVbBcLaowNTZMtkSOetakSGUY"), }, - { .name = IOV("RfwqZlXlnOFKuEiz"), .value = IOV("llklFJXYChQaJKJYloEGLbbkzyYPmSlYmJKFtpbCQd"), }, - { .name = IOV("vDmKy"), .value = IOV("YXquUpiIiSyiUUdn"), }, - { .name = IOV("IkqhxxtT"), .value = IOV("IaOXNGAsaVMoLrIEXDugjnjUPZDgZpsmWwxCMTGngqBt"), }, - { .name = IOV("H"), .value = IOV("ALkagStdVzKAKwUqonumFABKScRWckihDutpgOjQFwwPgpUQgWZiRpSiOLdPceEvNkvgGlzDyjRBh"), }, - { .name = IOV("YuYdnifJyKb"), .value = IOV("UktCjnGlTdfgN"), }, - { .name = IOV("XDsWiFpZsEqAgfbJDBh"), .value = IOV("feXTyygpnEjnjUjFiOQmPCDChMNKtm"), }, - { .name = IOV("cKqQJxRy"), .value = IOV("EYvkUGWciwzrTIbsgErxQgUauCVVRFIdBxRVlgbRnsvhvbITYbDuqjs"), }, - { .name = IOV("zWXLpLNlgFGNVPU"), .value = IOV("ZpAMkfrMCNDdPtIooyQxtQCnpFfgLItEPvtecZvHnNBclFUlmYQoSDJhLorshbnWpUJKuuY"), }, - { .name = IOV("AQQ"), .value = IOV("ARaareClfFLkGLBaLSrVkmrAhSEV"), }, - { .name = IOV("zcBlsGRPCv"), .value = IOV("FocHUjViaMPvWdtUJNrWwYabICitmVXPYbdaeYBgv"), }, - { .name = IOV("rBLBMQyjzvTGCmtaSQbX"), .value = IOV("zzGaTXZhZvBVkAtRapiAmWmWTOFkUWmBVzmnkkhAKGVBXcWBbcYq"), }, - { .name = IOV("KPrWZbTdZ"), .value = IOV("UiQiwAfUyJeOctcthxUKkKsoNTpLfRcCoWQoMHfOvbxn"), }, - { .name = IOV("tcgXkVqEdFUkbbB"), .value = IOV("YJDqNOiiDuXIjqxQhmkmvazZZZgIXdeZZHyUMOecCAOnlt"), }, - { .name = IOV("rGDKbQH"), .value = IOV("hNzTKvtNXUSJAHOttrOqCLZVyaOnlVfzOkzoBtREFDcRfGvUuVWdkeqOazWFBzBSUGsyUvZ"), }, - { .name = IOV("HSUDYUSijxxeAYX"), .value = IOV("EjVqZwHQDOQzpptfdycbvMFHqggFFtmguqhGFxwxIsrqiVcGshsBqxQhFYvUKwMg"), }, - { .name = IOV("tNeDumuAvDfowoWKsCU"), .value = IOV("zfUURQKCjOSKz"), }, - { .name = IOV("AmwLLjxXQdpHZuaOiI"), .value = IOV("SPQuqcPkguQHwgMahTDOAIelpmw"), }, - { .name = IOV("Uu"), .value = IOV("xFOUZGvyHpDiEJOJYhFQ"), }, - { .name = IOV("mzcyYvOj"), .value = IOV("iAumUuPCrCIARsMqSlOEgjnPGhysSYmxGXmmswroseXavn"), }, - { .name = IOV("QVxQrOslyhMeAuKdt"), .value = IOV("jnKdfiDEcqeQrpMtxKrcNEuMelbdRNvJwapfIVcJIuBNCcM"), }, - { .name = IOV("kFrunDIpPAVCrVcn"), .value = IOV("KoGNsuDBkDodCSsQgvKrxRKchZErKHbtPgNRZAqoZBnFhBmCScnxwKhBRoRGNIhefvYvDEZVUSpD"), }, - { .name = IOV("jm"), .value = IOV("TRVFVGHYlwKVovzlupsIgvAI"), }, - { .name = IOV("VCtMuKNQuizgrkbACLqI"), .value = IOV("sCljrOdlCJUsYcPEQDzypvWNPGWUyOPINJvdzNEYzdYpGuqZlXPNkLzFQAMOzag"), }, - { .name = IOV("DOZFTnmpUgeuIHKO"), .value = IOV("eMkyCkLWIFbeDWkUrzgUAWoBwXSQdMEsrAhqkmdHGJiAGYDaUzmBVQaoyOAeqTYxw"), }, - { .name = IOV("AGiyAY"), .value = IOV("cSBuegKHTwkdSZkQSKxqXvP"), }, - { .name = IOV("fxF"), .value = IOV("gWUpaxYOrcgjgzgDnmxPwhzXmiDIIVLrqb"), }, - { .name = IOV("ydyijyOZnyaHsoQ"), .value = IOV("fjBjitklgIyYmXIBBXKrfQqvi"), }, - { .name = IOV("vmGWJAoTSbXSbACnCbPY"), .value = IOV("XjBRsYDhzhJIjedglWXHSsibnnPHoqgxrFyeUuEFWpydnSCPoAMgnghcVekuWn"), }, - { .name = IOV("CWOB"), .value = IOV("RVperRXcuERIMTZBirsbmbYcUQeos"), }, - { .name = IOV("RQrsLA"), .value = IOV("uhmBLuSytpCZWEZNIjRHXvVIindui"), }, - { .name = IOV("APgmTQKUBP"), .value = IOV("kzDgftdKiwrDakvuvCtQuuXNNYFJOisOCTdzwtfMqdgxtuxowimecKRMmIzjT"), }, - { .name = IOV("KuIGQjDruTKJHKP"), .value = IOV("UuZOzhPlDxKkYCtYbvyWeDAEnwZxwhhlBvmfuTMDLTzUfqihuxjkndNSQDWZbVOcPFNLxPlKONKEi"), }, - { .name = IOV("bWYfeqtFvpbBtygX"), .value = IOV("sIBCCknpmHCrtYYGDlgiOHTvXZPGOxUhmfnHrYnExjZJuVtckyxnMZCiQtPYExhoyIPK"), }, - { .name = IOV("BTmFclvJWsIetuoa"), .value = IOV("PxieFayaWEpqdjDxikQLAYyGaGlSQFnWokhphcQJVYtFiAcmLNweUkpewHquecPVdtw"), }, - { .name = IOV("Agk"), .value = IOV("wNmjZVVwIgJhcHKZDGRrHdbpRvujTtMyBZEppmppnuXdgeQIEsKYquRItIXsWPAAFq"), }, - { .name = IOV("io"), .value = IOV("ivdKyMhpvVHDfwqpNMkDUFSXYujglSJiYhFCtuZITdmAVmDVOdAPTYSUnmivFskxzUNxyqYRp"), }, - { .name = IOV("LZIlAkIdjdPOTC"), .value = IOV("SjZkMUbmUqJdrSnvSbhApeTFpDCoWSzvLBpXFIMLCoetsuK"), }, - { .name = IOV("EwittGRSY"), .value = IOV("uKmqrBIiyFVuawwoSZArDJEEyCyESVkk"), }, - { .name = IOV("gPCmEkoRQO"), .value = IOV("aOPNTeDgpCIjdiRnzfnPgitvOPfEhrnl"), }, - { .name = IOV("HnABTMEIgjiPelTbFi"), .value = IOV("JhRFhgrnWzoyzGCzmNBwEMzNSEILyJexxcISyqlvfWompCNEL"), }, - { .name = IOV("GYJgvdjyNwEilU"), .value = IOV("PpWFTrpxGKG"), }, - { .name = IOV("mVDfKKdfuJjPwzr"), .value = IOV("chPodVigujg"), }, - { .name = IOV("ZwA"), .value = IOV("RXnLyoPGvUsaviXZkljIdLjRlPAtKMyRydGrWFGUXXocJAElwtTljKIWtcXMJjCksrgB"), }, - { .name = IOV("tqcsMUdunMwciW"), .value = IOV("jpHUDiaByUygFAQtWqwrZrsUNmgbOLqLUoORySrd"), }, - { .name = IOV("XHSXwWMjpVNyDgKVPvao"), .value = IOV("mPCNdTZOzjIylIdeZyNjtrYqPyzmyXkjeASxJSVJIuZGObVoCLRsSArHVhsVyGoE"), }, - { .name = IOV("tUnZz"), .value = IOV("HbwgZLwbvIpqNACzvDiUezqBgtkRZeXsmkqUnnid"), }, - { .name = IOV("gwjHckDSujqxiaJPMK"), .value = IOV("Dd"), }, - { .name = IOV("GkXZHRCBtKpocOwbpN"), .value = IOV("xridGhURkJgsVvEwdjmspnfPBUTLezpUqAmRRm"), }, - { .name = IOV("jENLtBKwTj"), .value = IOV("jeIbLCmVYmHqygHEOYTgEcRRnQJHfwZmBHoxCNuuMbSFBxRYNDnGFvj"), }, - { .name = IOV("ddxJHZrXHUlPV"), .value = IOV("IgdDOQjJT"), }, - { .name = IOV("TjykgP"), .value = IOV("OdtJELFuqjwWCexBgBYzPhETYXHiOXZUPuzIvYbiEjALa"), }, - { .name = IOV("LMySiFGGsmZJ"), .value = IOV("yUUNMcMrHlsMGFndJCNgzMcrFmXjnubAPeQdxjFNkBMkZbEekSSeqffKg"), }, - { .name = IOV("zQGxeLxEs"), .value = IOV("kmCzFALgoJbIwYEXrWZBdcPcT"), }, - { .name = IOV("OEHZjDwYoJEn"), .value = IOV("DOghTGmSTtQkttULFqPjrfQOBKvDxZpphTfwSJzJFDxZRcRTIWyegiyjvmkwCWeyRHBgxezXmAOV"), }, - { .name = IOV("qrLkJKrJ"), .value = IOV("zGLlKNooABTDrMZYRHWomckqvjPJgqzyZRhPPoRJvWbcbyOIRI"), }, - { .name = IOV("EwlAkJVpty"), .value = IOV("WiyooOhkmCvnkkUwAvblbNTcaLGuIjwhBlMYfipakUvOvrXsGBGVqLXcCRCPP"), }, - { .name = IOV("LyYeyysRIY"), .value = IOV("DsFWJKzyHHjxbiErbGSfBYpmIrwQwIFJxenXQzUsBTFcUDLkScWWqJFFFenfdosMZAQswMNAVEzNWkgp"), }, - { .name = IOV("UofqwWvNraCpOLSIlWOI"), .value = IOV("pUXfqumhNXcJvxlcBshZmgx"), }, - { .name = IOV("hOiAUpYHXBaEonwqKwU"), .value = IOV("uooxguKKMDsMKXyMYKdhjbyqspaMOgWARXyFRtfGKEmkSQZWmiAydeuqjenfDWieCplxhrTuHBW"), }, - { .name = IOV("eRUwVILdPypXbTm"), .value = IOV("WLqNzPUMDFAetSluRFMAhgaOGWXPYnqYUhtcWVbyYdYAjwboHiiuzLIHmqygUEjltIGidsyLNYjLhbp"), }, - { .name = IOV("StxYF"), .value = IOV("dDbYndXvViaITTLAeYwvLwaUTsKariCBtzNNYZjvFXYoJywOuZHy"), }, - { .name = IOV("hIcohdc"), .value = IOV("upbYEQszgJxSwIBuvukLdRUPKeukBKYUexPSjREuldhWK"), }, - { .name = IOV("wnaVqR"), .value = IOV("tBvQgLjbEHq"), }, - { .name = IOV("sjKmkuw"), .value = IOV("WELzmDadsRauhkfKDuASJQyyCdBhsbrBsRjqKapdbtOhRzcQXMDQdblrXrCtzqotHCCLGtbadmVUyQI"), }, - { .name = IOV("HEqqaoPcvfaIRfF"), .value = IOV("Uq"), }, - { .name = IOV("elyGmgaBQyAdBqtovdw"), .value = IOV("shcWmgXjRZiQhlRXKrPHgTYueVLmhpfdQKaOiIqAQpQSqogGyUWTFtslEPMtXfAPtNyYcLXfkPcHAsLR"), }, - { .name = IOV("lpLpQtGnVv"), .value = IOV("FZDkFAYGZgBLqaSHFlSONQxhIukDAeaIfGWYPKEgNRjOxkJnOSCMDZHKaQUpzFltbtEWo"), }, - { .name = IOV("qVlLLoCwatevBpVqXsDJ"), .value = IOV("XWIaEUZOzetHaZmdBGAGLPUSEiRQAclOibjLmXh"), }, - { .name = IOV("EwgcfrmIyc"), .value = IOV("pbkPVtS"), }, - { .name = IOV("EVwXgZHUNIxMXCFx"), .value = IOV("VFkCouqaPhcxjbxMEQIXgZvhPKjUTaAyJhhtIaXHOPKcxQGuw"), }, - { .name = IOV("MQnXUFGF"), .value = IOV("owGWqGItfebXrpvHiydAvGGKiSgFIzdfQaWkYjbWISsfcglCZwRzRjqjCvnKj"), }, - { .name = IOV("HzrdbTxyCiKEczuDxKf"), .value = IOV("oZQbRAGRNTZIpopamQcpBfqDJWAOzKpHcGiwwfpjuPdMvUlmOxuF"), }, - { .name = IOV("Ny"), .value = IOV("kBXyEqRkZrrXTyUfRrKhsVORYwwAFdgUsdUKrHoAqgkqQNgxYMAEPAulyHlGPLqtUEsYAzMumEjOsPJ"), }, - { .name = IOV("ENYuy"), .value = IOV("BNtvNillmvL"), }, - { .name = IOV("IpGvkQWcBnGuoDHMOvJC"), .value = IOV("lYiBnorRErolGwNKhzdmFDFevLuwvzrsuisyYuoFkf"), }, - { .name = IOV("bY"), .value = IOV("LlEPYUGM"), }, - { .name = IOV("k"), .value = IOV("JHnh"), }, - { .name = IOV("MUzgnCwSoWg"), .value = IOV("XXZglZmEhflkhadIIlnEJCgYgSDtVoejXQTHVpqKAnttZeszxYQeKEzqZ"), }, - { .name = IOV("aYdSgohd"), .value = IOV("AXZE"), }, - { .name = IOV("sjnqSvcErsRIiHhlwDm"), .value = IOV("urhuTOtXLwqzVvIux"), }, - { .name = IOV("ZhMyolGfFAu"), .value = IOV("vfwgAesbmNnImTcdfpttthijqYRtQNxBHFSNzTFCodNstgAarABmTqnZLTvTi"), }, - { .name = IOV("XliLQkJcoGrSf"), .value = IOV("MArKwSWbWTQiEeMmQQLlaMwLmqriQUQsgAPZBBhzzviGJomLgZFZZYbyWDKasAGDFyzafjojuEwQL"), }, - { .name = IOV("MuNfofIUcPuYfN"), .value = IOV("KbqiuRPhfarIOBsXEZXzvAPAnyTsMYZuYrwdoGwUjNbkYAeUMLRCorJwRAapkKSNQqdv"), }, - { .name = IOV("NDVGwkFncKVehYDvF"), .value = IOV("tgunRtYnAMNRmHVGCCHoSrFWGvwbulngTQXnygKvXPiTWIxMGULkcgBvecghbdcqOejqVBJNt"), }, - { .name = IOV("eomghEuaD"), .value = IOV("cZbe"), }, - { .name = IOV("hfgVRUYqNhCMgjLIBh"), .value = IOV("JsmfWURcnjcbXnfeCcCtEgjFSwCwgEpNaDvHbMdLhcTkqceYBI"), }, - { .name = IOV("Mz"), .value = IOV("RfCmykSteELcPPnwkUZiOxFAapPJlgHiOiERxwbtvKFnpdFHIzVsfhLyJZAxFqxtmBQUatSOLtIU"), }, - { .name = IOV("rR"), .value = IOV("VePXDJcKCNMaDipEZwNLMJyBgBNteiepWCuLcBUeXtTZdJZLpGLRAozDiJqEncTEnspsw"), }, - { .name = IOV("skGvkwkkpZolhJCfzvlS"), .value = IOV("lpvSBxBiviEHviXEWgkecSOKeuWKDcA"), }, - { .name = IOV("jKLOpiSNLCvv"), .value = IOV("AdJQAWuIjwDveXsUfcEj"), }, - { .name = IOV("SApEKOSmYiM"), .value = IOV("dXvyKgOSYASTUFqbJCsAbteQnNQMcBwEwmyfpEepdeAkDhiGLJYzHGJKcisPuMBvPqOoTc"), }, - { .name = IOV("DKeyQSSsffkysOQwyy"), .value = IOV("JFPWSTwQLhYLCS"), }, - { .name = IOV("ORqNxiLXdlpMYMo"), .value = IOV("masypIGyVDLbzDImwjUUnOAruuUYmgUPoorFVLlWGkoeNATpYLMjkSadGuMMqmoVw"), }, - { .name = IOV("rEtitTPS"), .value = IOV("UltxpufTTBDlqQFkU"), }, - { .name = IOV("OHYXeFGugDfWAlK"), .value = IOV("dLGDqpjAPehRmQkbbrqvJuqujhFKyOISqBigGEfzaEtiPWgsMuxdmOESQoaW"), }, - { .name = IOV("E"), .value = IOV("ZtwTrnqGCNTSuwYBcvzjRFzxSzbvNoUxMBzbCSfXpiLEcsvaaENwZbZspNqliDnBXlaC"), }, - { .name = IOV("oHUfxbUTNMEsECf"), .value = IOV("CalmfhHlGGQjXKYEbgAdpmlDOIXBAgMNUTvQyUbPFbqJWiEzqGUjpQdUfuSs"), }, - { .name = IOV("X"), .value = IOV("LgijZYpscVhHQtBgqAarKlwBlvzpOcAFKHIYkEXbwKeYaFqKecAIuvBTErySAAmOIROkWhIUy"), }, - { .name = IOV("loLTjjjeJaStQaFaBlXH"), .value = IOV("dGlfeZhkEmyQHVrIYMVAcJHBVyDcaOXwedfAKSZXbyXtIjC"), }, - { .name = IOV("xQf"), .value = IOV("TWYsHXVqEIh"), }, - { .name = IOV("ZOsiJZXmoxdbYdIQyzZy"), .value = IOV("orkOveWwOykvltokpNQxLdQvqNboYZbVpoLwHMqKkhjxHabEcweo"), }, - { .name = IOV("qejmNaCRoAKjOFafj"), .value = IOV("TGRdcJMYkyozyFgWjXMhzp"), }, - { .name = IOV("t"), .value = IOV("zNKi"), }, - { .name = IOV("WgyFK"), .value = IOV("BBODMRcxCnX"), }, - { .name = IOV("ejme"), .value = IOV("aH"), }, - { .name = IOV("mDTmaMYLSd"), .value = IOV("DtNBxlGTKZGTFZHBrFNtPDFgNvDQEyjjDqNTKhKOkBSIjBYoAXIKitJlsgiiFrzxT"), }, - { .name = IOV("rGiCLSMaNYEgq"), .value = IOV("GrfcYTPJWLCBNXMDKDZoy"), }, - { .name = IOV("sOOiwHnAOwOhyOfipt"), .value = IOV("VngNAxHuRqmbPnmtI"), }, - { .name = IOV("VWurhemwYu"), .value = IOV("RsHYWFalwQepWpevvRPtvvaBzFddqbMEBrRawzhudoTRJozJjTuJuNblqOGqhsYTVbEndOehyZAilruu"), }, - { .name = IOV("uQniosU"), .value = IOV("zFfUopXHTSwEphweBFXehagodIJjJIRfbOalrkMQZbVj"), }, - { .name = IOV("bDTv"), .value = IOV("YvGvWceKhKtNGmwDzslormaHfsXbHJ"), }, - { .name = IOV("ybj"), .value = IOV("bHFyJJPGpOupmsPgwGiRkLNQzcJjYCtugbDRKltGcFcoicaOqkNqIgYEenRBbMGBUvgzgpHMintqA"), }, - { .name = IOV("yLSbzdBjUrTbPBKOi"), .value = IOV("HnAtjsaDjFNGdVvEjnEeSxJPpvYyPhSMAhJYzzKEfzirvtOkzxOymVGSiImviG"), }, - { .name = IOV("u"), .value = IOV("MCBbhfspeHXpZcjztFMqRkEclSCjNZ"), }, - { .name = IOV("hqkYyOLG"), .value = IOV("UDwyWpvLjiympoqadVoFtjjS"), }, - { .name = IOV("sQzZji"), .value = IOV("MlewxdwxQNwgWBBleFkLUoYvHLfHXlxptYc"), }, - { .name = IOV("pgxaEfYjMxvQrurLvF"), .value = IOV("lXbEAbYkqfOLbIE"), }, - { .name = IOV("Rec"), .value = IOV("uLXmxkiakaTsis"), }, - { .name = IOV("UH"), .value = IOV("IRuZyIAyQYIIPcsJGxnryKYkxTGEPiAJQGjihwprWaWvYqGgwaKuTbJafcPrZrZSl"), }, - { .name = IOV("JuVhhimgCHmuoAxaDm"), .value = IOV("PQtzZsUuhYxBiGvNKbRtOVkzptYbPcfoCNEPYrYVDdFNbzAUQhaal"), }, - { .name = IOV("hzrUiCfoVJUynCyEF"), .value = IOV("PoEmBJbZwRPWGWRlaXeLvJJradTeyRtAAmIBepYVmkdZGplUoggQgFsXRTelVIQvaTRCzywHzBd"), }, - { .name = IOV("OzhsHJwWobO"), .value = IOV("qaAnyRXyOZiaaaAsNwzvAFLDMlMWsiBWFFtpznXBPmfTPAWRFRNrIwzSrZevuzlEhMJ"), }, - { .name = IOV("c"), .value = IOV("kEp"), }, - { .name = IOV("bncBBGHVqjgtQctCfg"), .value = IOV("irQLHjErEsTmkomNiJXFoG"), }, - { .name = IOV("QzevrDFMOJc"), .value = IOV("MvETXrNXrwddpurNbVSHDYbqUbrhZehxjjMwdDPEGymmIr"), }, - { .name = IOV("J"), .value = IOV("yIb"), }, - { .name = IOV("GokQyEatwNS"), .value = IOV("OjSSSOCKkTTqVFvGwDPJzNgpKhECpLmoexQSzKiItqnRAUphwe"), }, - { .name = IOV("xcLwmKzMKFYVMc"), .value = IOV("ArDyWppGsmbXZpAVvwUylMJTqaTOlYuURRgaPpXOYHXzVlqnDQmJEdHrvMPloBBDYyUV"), }, - { .name = IOV("YHGZyMGi"), .value = IOV("UJrKyUupdYwZPYnvQgEHcZcthMaXluemumRiSmANMyPWjswiSvByKiZvDFr"), }, - { .name = IOV("mISteRDIDnrVAyBtbBSI"), .value = IOV("qjulAOVwiaJSIsbhrulbAmBNvsFTnAewjlNxBsNE"), }, - { .name = IOV("WkWLeCxlQLrIn"), .value = IOV("LuRzUgpJbxeENzmrAqMLstgDPUcKv"), }, - { .name = IOV("HIgcRKYiFMrReMinG"), .value = IOV("jXCJekKqUmyRuWmAhasdFIRJZBLEeBAhtlJczsAPWCYFdN"), }, - { .name = IOV("qOshPjsyZrfdVU"), .value = IOV("LhOwUIYcuPdprzVVlYZRnIOdMOwIljlXfPEEIhIhqVwApqcqsMnMQAzgkGtkfTapnFYHR"), }, - { .name = IOV("qbVAtC"), .value = IOV("CsJAvvGvQ"), }, - { .name = IOV("uJOQB"), .value = IOV("w"), }, - { .name = IOV("UORVUAM"), .value = IOV("kvFKjYdnbZztJUxmabhDcakcZuOIbVHxalFjOpgdafqsDDJWPIgjDNMGTmXGMjJZwnNcfUEKz"), }, - { .name = IOV("eWSDZw"), .value = IOV("NxBeWAwmvqBtBLuSklJzdAxFCZoShxXfWdReIkrswmtnrmqSKuvYsZL"), }, - { .name = IOV("EJnmi"), .value = IOV("LpDMwRnyFMyDEChsyijwBpDjZXUMkyfpFNusIBAngOmvMkZoMIZKr"), }, - { .name = IOV("U"), .value = IOV("NzACTHmmkMJJTyXKdLNAiuBXFaeGNsadBAIDNkgqTctCjBk"), }, - { .name = IOV("MVkaVBWir"), .value = IOV("jDZPHWhPeEIwDFdzExBDsKBoeZbcwjvxwnHUHfMgoRRTZVgcnUCd"), }, - { .name = IOV("oxoLZGosol"), .value = IOV("DdQLGqqkuxxSBufunQKZbguUFnOqyWNpBOTlxdVAFviXn"), }, - { .name = IOV("ptRczBYt"), .value = IOV("veZagdOTlDydBXRkhrJqChLPkUJzgdnyoTGAscGKQUFPbmxXsOTrniEwNlvGQVnvqOTiBSVnOLtPxd"), }, - { .name = IOV("yqeJBWDfENNWnuHRzh"), .value = IOV("AMPWIATXpWLOXJnpicbPmwUclNnyYJumjVvOCceeZaRmWbJNtfowfBxkzAoGgi"), }, - { .name = IOV("IANKj"), .value = IOV("fsWkVsvQomrpzgDbtlywIfJRbHeXOhpzgCFXhgQpexmismyZtAisYHQfenkGRwFi"), }, - { .name = IOV("egvAMOhnuygHK"), .value = IOV("ogQGfDMrYcMVivvPEPDhbLTwSDrGbRrogrZJklxSVUEIztPMznLcuCDK"), }, - { .name = IOV("nbpHIrKhqjQvWmGnQeBT"), .value = IOV("ihkwAsuqhQrnRxcdahFoNQZIaNEAgOTlzrHuRDgsjLmohbwikDCWhexIvnUPPCFjEQ"), }, - { .name = IOV("TbaKiBGYIQtGneSnD"), .value = IOV("LQGwv"), }, - { .name = IOV("pSikgtoWqxMIdrOyn"), .value = IOV("JpKGVRJNerxGPUkKWmbCaStQMinelCLjhlhfagSEcaiEAoGAPYkIvuZTHJjW"), }, - { .name = IOV("bXvkUcYWmySwZVkey"), .value = IOV("yfcUdjTaTzzOoTJcmzbMkVgHkBJZoOTkVaXPkLwEFOAJQrrtCCCXgnuiqi"), }, - { .name = IOV("IGR"), .value = IOV("vRGsloNTaXV"), }, - { .name = IOV("A"), .value = IOV("CAMgcTDPwcfeRsRIsGxF"), }, - { .name = IOV("mUGVWbNfJxcnRvy"), .value = IOV("yUiAcphuTnYirkBPsdveaBAxIgLkVGSMfFOJHBxNYPYDGxSCUAhcc"), }, - { .name = IOV("NmmfKZqrXDZpWk"), .value = IOV("ohpswvcHlMLpLkJtReYJPOQMQLlsRilLxGA"), }, - { .name = IOV("u"), .value = IOV("OlTKkhQgySyAqoWEvJ"), }, - { .name = IOV("GbAdatFyVQLgrZhRKqW"), .value = IOV("uKlDZFQiHRMZVhHCLt"), }, - { .name = IOV("NphEoHzMOAqjwUuakQ"), .value = IOV("nltDngVY"), }, - { .name = IOV("kqVKfWEUbIyknWgaK"), .value = IOV("HmhqKlIOLMgKDOWRNqkaqGREBYkuMLugqiWPkfdmjCSrooODJmtf"), }, - { .name = IOV("j"), .value = IOV("ApQ"), }, - { .name = IOV("tkxNrmDhjZuHTdoEGi"), .value = IOV("UMcjdINDTAlHUQdsdPlarpPkHVsYfWcaUBKbAXLxBeBBCLSfKDjbsagKGM"), }, - { .name = IOV("SPCBjPgTRQkVlzRf"), .value = IOV("sVtokkAan"), }, - { .name = IOV("euealMnDNqynTVnrESGg"), .value = IOV("jPiDigcECRIzvuDosUhTnLphSeflbeqddJTnzKSDMGlCDxJ"), }, - { .name = IOV("uPLTKxCaCIjeMyneArE"), .value = IOV("muPMjBZnIzcvyKWTMikrvBKqr"), }, - { .name = IOV("DfAuqOpcFSpQvS"), .value = IOV("eqZURndLmwhxYbisphAdFgTUVrCyYsGbIkfKSoldQvCdiJVn"), }, - { .name = IOV("JDjUFePbnK"), .value = IOV("xaFkDfKMuPjEcrAlUOuKlelCNvtOJoQUJV"), }, - { .name = IOV("XXrDkEdWGeyRyD"), .value = IOV("QzqrtRoiCTtAxzksnHlCXFQMoFbLEclHmDnKbZDRuhlcSfqyghAl"), }, - { .name = IOV("rqgRGrOabbOva"), .value = IOV("yvQmiOXnoytxvTWLTWhkyZlLBLajBDiOKJuQJpPWHeloxqNytxojalyviOcqav"), }, - { .name = IOV("YQEqbEsIpteYWPUI"), .value = IOV("xBqoAzFBbSNKMmoIHjicdriILazpbGOeOuSVCWvfAhQHYmLlMEwRBoNVQyENjoXuHKPXVNxmk"), }, - { .name = IOV("fqPuvJYoxzTIqaAgDJ"), .value = IOV("VinLfGfFEerKVYDxeSPpDbDzdNTTriKEDPYHsTdXohKjsKeLBYzOHzSuLr"), }, - { .name = IOV("qy"), .value = IOV("RWytgyHZezyRIhUJwSMTkaMVANcLDaLFrytyHUmurXMWQdtLMPGbcPGdfkPGFQIv"), }, - { .name = IOV("T"), .value = IOV("GfHoREfoweibCczMhPyDnOhw"), }, - { .name = IOV("jeKdpDJnvleLxlBLY"), .value = IOV("PbjUOcIns"), }, - { .name = IOV("zbGztoVPyyk"), .value = IOV("XWjUGjOOajtRSTBJxmMMPQhcRddewWdliJUfSDAVmlCyapPVCZBRp"), }, - { .name = IOV("qiDIXLUPf"), .value = IOV("rQLuISRJieYQjlQveMgURSCbMvsfMoaOiBkOSGFrJ"), }, - { .name = IOV("ZtUIuWoLFtwSkQbBEsv"), .value = IOV("xYtOKaZvHjgWlENojBRwVvDdxyeSRk"), }, - { .name = IOV("lWZwzHsdILMRKzbeQFEh"), .value = IOV("gUalVmOFBxQo"), }, - { .name = IOV("KJdY"), .value = IOV("rlcUOQtVBtZpin"), }, - { .name = IOV("kev"), .value = IOV("nsPV"), }, - { .name = IOV("pSzKaQ"), .value = IOV("MHCYcKhTUVVATRUKRIVETWDjmxtZnDqRCOeuLjZvvMKuWxsnwzHnNrKfEWRrW"), }, - { .name = IOV("sjtturYawxFD"), .value = IOV("JUCVzTdBawGUkKSKaForeFTKvMKpWdgQPRKVkuskOiEwTGXRBikUlSgeSB"), }, - { .name = IOV("VovWTVFOedkHZK"), .value = IOV("CRSJffalYqwDdwytrSDTDxzcBuBsvJVrefMvRijGIZyADtlVQCHjAGAvxyDKHrDRiQOCmmEXujJ"), }, - { .name = IOV("rXSoUwMSEsYya"), .value = IOV("RgfIQMgXJdqCExmcrcGkuEn"), }, - { .name = IOV("OodqVaaAdjyYxfy"), .value = IOV("TNXOyUnOHXSreTOUZMJLkntoyRNFCLuFGwfaAdfxKZeiGouMMKbXidQmpHEaLXbZFRGWaZAPnGHUPAle"), }, - { .name = IOV("YtWfmeAggwNVAyujAusU"), .value = IOV("xVYsmidxMRMnYSZXsTKuJQfkHLwtCibWiQbuwFXsAYS"), }, - { .name = IOV("X"), .value = IOV("pGlRVIZuKeDAOYunGxQNWFaoIAWdRlplaIHP"), }, - { .name = IOV("OCMqXXACrjTqgLI"), .value = IOV("NEoQcFriquLHGMOXRlhEbgkQdhYEB"), }, - { .name = IOV("fYiUlvXlaRFx"), .value = IOV("ojnGIBfSxQOgLFNfJaxpRCUkPQtqv"), }, - { .name = IOV("eiAjSXNUXYRoJBYgdhL"), .value = IOV("MTjZOeKwFgQmHvvtnBpVKTBaGbTQKZYQLgzxKHszKRglhmgyzykvRwI"), }, - { .name = IOV("rFAnQfnj"), .value = IOV("rSngmSlkk"), }, - { .name = IOV("jb"), .value = IOV("BuKoKUASbBDyhFqDvtOKcZsFlHSoeZZRDajQhlinHdqrIcRhCYKOOzBXahDmGAijCnkBQQJ"), }, - { .name = IOV("nId"), .value = IOV("SUElVoFOjGSRRaYpSFOdhDKiPKvnuOiPyXKJAD"), }, - { .name = IOV("POPiiLitLcgWGGRt"), .value = IOV("KRguHvuuuNbiTyFXElEdfjbeHamXmDOICuGMuhDQFxCfVfpnBiCDuELvofWYXTl"), }, - { .name = IOV("cuZUV"), .value = IOV("znAnJWPTVGkIJCtzTJlmOWqzolXmSeTZCbqCDNNTFsbrjjqrPpDsFfJCXOm"), }, - { .name = IOV("MvYWpKGqjbqhczN"), .value = IOV("mQBlAJrfTCDygHcSOAVjTrCmnEBpQOUOJoYcOYgyCvmMgspdlQUZmSY"), }, - { .name = IOV("FSItLjxZIDaQ"), .value = IOV("djiXFLTFhJtQmFvYOuhDdUmyktYcBYFjpXhYmMfpxNVQZyGabTbFgOilZbipxlDoxhRutlsSZrvhJG"), }, - { .name = IOV("REhnLECjgdXLqK"), .value = IOV("Jaw"), }, - { .name = IOV("AHNSGDIVJdSjIbERhwf"), .value = IOV("jtXbxgDZzftWTSgCaEvXmmjayyRyuxGGN"), }, - { .name = IOV("AdrxcJBntjkfqdgmJ"), .value = IOV("RABJmAMDcJMKYkARaDkqDFbPeNbRRcQknGHlTEKYJEpOjPqncPcgfmmfgEwjp"), }, - { .name = IOV("eiQClybE"), .value = IOV("elXJdWMQlItsZeOgfmicNuujTOK"), }, - { .name = IOV("ltUZMwOfgDzgozDs"), .value = IOV("YctxGlSkwwGGYzhkMrFsdgC"), }, - { .name = IOV("TRhYXgZGcdclM"), .value = IOV("rHTbPGTbnwBOEfkycbvAnKqRqVQNCOmmElLPGcYHIcBcQJpJQoYLlOKvinQBqQDfMQjAgSOOBST"), }, - { .name = IOV("lw"), .value = IOV("BBvlWOeIaakBPYggspYf"), }, - { .name = IOV("zWHvjAlKYQLTocuyVSax"), .value = IOV("eLldMctEkytcWhuqIlBiSUGaeWxJVSWLKRibdVblpRZQxjy"), }, - { .name = IOV("uMjtZyXhrSmEOKu"), .value = IOV("zcJgXJULlPCkJWCYkpjGtEcKuDzDEIITfJJnVOPhMplnKAsXvcMGstUsdEi"), }, - { .name = IOV("EiVTYPdcTsPUfMOaqtHD"), .value = IOV("YjWHQNJlncMRJNREjtHfMcYibGqLmwiHTwkVBPZvKTUwQReeaYIlUdSmvmuQSUTuEeYRlXtiXVksg"), }, - { .name = IOV("vBo"), .value = IOV("gUlTqQicRmGaIZugxXlbdDKNSeqrU"), }, - { .name = IOV("tzBAybPoSmre"), .value = IOV("MyQPDWDWYxTzPW"), }, - { .name = IOV("XEPutvnTouBTUzbqNYOh"), .value = IOV("BhfHUbXRHZlvdiOvESubYJDAmDvfbAQClkmlpZSSbpKsgfYxQWbHElooVoYuse"), }, - { .name = IOV("muJnYTqWOhrrhSbouWvt"), .value = IOV("WHgeqroGILJmRHHgdMoJoSzbDwzgqkrdeeQDvsuooQwpBUUxcBrfcRhTCFpTX"), }, - { .name = IOV("DdLX"), .value = IOV("vfiBkNYQpKZMzDPmbHsNhfAQKanlQXd"), }, - { .name = IOV("DfGlUGeXwGpSsJt"), .value = IOV("HRrdnyzAYdVFvSDcK"), }, - { .name = IOV("jFnlLRsISnfth"), .value = IOV("waWCswLkEozGDyfJFduROPvQQUGCDfICfScPqWXaAN"), }, - { .name = IOV("zxJSOje"), .value = IOV("pJayqLtEaUiavdyHHQwWMTbJydudTXajeMqR"), }, - { .name = IOV("yeuT"), .value = IOV("fN"), }, - { .name = IOV("u"), .value = IOV("ghVMgkjkGamHIoWWCBlSfvKHBwjJRsurllMEWKhjkhtGkQlaqGkyMMgXJQ"), }, - { .name = IOV("FFe"), .value = IOV("LqpEEsExLoryjPgjBtfjjBBbJAAnMjvRaaBkUceysFfxkPmEzCyVUNkJykFKMYxYNhdxwU"), }, - { .name = IOV("lRBdsTJLhkekAWSdoBT"), .value = IOV("QtBCSvnTiKZzPQvPcqeyWxToQouqhOqbKyMlDalEthZJvHMwSLgH"), }, - { .name = IOV("dJpCuDsBxICJw"), .value = IOV("VhyDWMgclwMcRIUwOMneqZTfDWMMPnRerMRSisvdPtZArSkGeMHkdTrgrOOumd"), }, - { .name = IOV("PlbKi"), .value = IOV("MxyDQG"), }, - { .name = IOV("UiMle"), .value = IOV("LFSJsRzRhzsENazPMYwmSqDflhYIqNYbdVnS"), }, - { .name = IOV("fhnYVLyKPgMBLyX"), .value = IOV("cuHbqbcHdDeDwLHU"), }, - { .name = IOV("CMBlcvcDrjkKA"), .value = IOV("utTmNMWkRcLSpQqlYifRCjjZXFoBConLUaagFtiVlGDtaFdOyHTHxFSDOlBsxlHDYtMWXueGxhcRYl"), }, - { .name = IOV("VqfRCnWUdhYUhate"), .value = IOV("PklAjVLOJWvZEIBVwrZEYoDlsoSJTxfgpkSAbtvATmeKsPwQWTXWKZjNGd"), }, - { .name = IOV("RvZzYwJVrprRofCutvwX"), .value = IOV("sTkgBr"), }, - { .name = IOV("glcGkSnMiZJufDb"), .value = IOV("oivOBsEeY"), }, - { .name = IOV("sonbQosmSaBM"), .value = IOV("hWjhwvcnWLLLDUnfxlgSOXUroBQWwPsbaUJVGqBYBWkFxjqeXZ"), }, - { .name = IOV("Ta"), .value = IOV("dNLJSukPggaERkRlMHQnpEAhHGtbknhxIvvpsnkrrJHaZhxJCOtWCCMdsL"), }, - { .name = IOV("ANlsuihpDohZbXgcbhC"), .value = IOV("rvxJEpVsZmglBnGJWPyDvFiKovjEYghbocwUvxfGbSDxMVeNNddrnnWvYXMWSnATqhifzORJ"), }, - { .name = IOV("QAPZBVUutLXu"), .value = IOV("nbiBtJIjjqjLZfJhORCkko"), }, - { .name = IOV("vnwYEnCFwvVabzmezwqP"), .value = IOV("glUoYPFOXRlhlULLIKdHyQWbRzYJezWtSgOuCzoMWPPhEZfETSk"), }, - { .name = IOV("MGbKApgNSvZzCMmsReo"), .value = IOV("mJbUHTwzrdEXengEfXWkkzZBGLAoQWJhluYaIUXYcpTBmPVcuF"), }, - { .name = IOV("Jb"), .value = IOV("dtgkajHrVHrClxGhWuVaunVwlstldnL"), }, - { .name = IOV("lpbIoQPWNujKZo"), .value = IOV("iSUtFzPpMdkrOmKIpbXXreDAXhjJjD"), }, - { .name = IOV("nmTRDzVQUnwtQhzj"), .value = IOV("LBiDDqBfAoxzZWCib"), }, - { .name = IOV("QxsYKHJMnkSEOdsWuOm"), .value = IOV("EoxnczkaNAtigYibOwt"), }, - { .name = IOV("wdYZjbIdEIHtoLqDA"), .value = IOV("vPCaLgEIusXaXCqIlriIKIInTAxVVMRhTnAESixBmLPe"), }, - { .name = IOV("XSHIZuYYjOQRggsSjRv"), .value = IOV("nlA"), }, - { .name = IOV("oCcvwJibGtDQxHCK"), .value = IOV("NJONHfpTzKmHTDoyJgqyLehhJFzXKVJzicGml"), }, - { .name = IOV("MFUWmqIDXwGRslnIEg"), .value = IOV("hVDVgpkLvNXNLfUuLsgtnAvddgjdmTYWeWXzHcRkhLQsM"), }, - { .name = IOV("hhQI"), .value = IOV("FwbrtdMNShdx"), }, - { .name = IOV("FXim"), .value = IOV("DRBtVLqyvoMoYOkKfalaiatwPWNpfYnfSErqgTiHsYdheeAxOLqJxtxqzLlyIobJLCG"), }, - { .name = IOV("oYRepkqj"), .value = IOV("oDiYU"), }, - { .name = IOV("vFGMGgZny"), .value = IOV("IezqzanLXVtqESdooiilBocJySzqDCTdkQUWjjkTpWiqTKkHNmrlvivmReHtKxA"), }, - { .name = IOV("dRJrYhgbINENMvlpAi"), .value = IOV("nPjCPJXxcSVsmkLwCgCSsuFkpLIyTYyRvVWCJEjvVEt"), }, - { .name = IOV("BB"), .value = IOV("GpKqjHYwqqUtQXHOKUIoXGanLFNJIMvNFLyVfyFBI"), }, - { .name = IOV("pYKCW"), .value = IOV("OQxkYWZNXMqgCsVrxNoTgEjPXRwWtTMmCscRcGYTp"), }, - { .name = IOV("hpvEGreqtlbmD"), .value = IOV("jFGmflJiRjDKzaJGKehbyTAHftiMnQFLeHFnXmLdcrIZIimxRkEcZzudrcnbaTUmxITwuPSdt"), }, - { .name = IOV("baOAkThAKUN"), .value = IOV("cGOUGkABSDQvsuWToExBoWRfrIZQpvvlcpvXjCgp"), }, - { .name = IOV("KfInptePWsvsSgsB"), .value = IOV("XKHstiROGvaKSnJsEtDugZZOAtirrOCNczxGjBWSkLuQB"), }, - { .name = IOV("MpglTpdgNUdfxr"), .value = IOV("ApBvTwEWeHixISrZmItWZAkYDLSldTUp"), }, - { .name = IOV("xIkyJgeODaLQYrxhCH"), .value = IOV("HmShZgZwBRZJDbxKlHmCWViQvtq"), }, - { .name = IOV("hWAM"), .value = IOV("AaWEvpZThvkeLXfHZPNAQPUQFCPiCGxNLgwnBLLZyeZmsGyYjELwhojifSxwtutqXJj"), }, - { .name = IOV("dUGnNisdwzaxlcWxagI"), .value = IOV("XXDZAicCZVvvblvpOdISivaHSQsNBqAjUoatcCBVABFfCYoyvwpYeCBqNnrJVxQtdnnqTReZfseTeQm"), }, - { .name = IOV("yZJEy"), .value = IOV("bQnLR"), }, - { .name = IOV("PaFVrQsTaNSypTKXxDZA"), .value = IOV("gyHfqjLtFJurmMpBdlLmaxnsVwRrodfcrWGnmGjQCzzKBdanRCSFjFBFwVCwzqohFoMB"), }, - { .name = IOV("oDVofg"), .value = IOV("HBfQOzeedwkhtbqGraObPmkcHARnoeiRAGaAuLakjKvZDGHHREJOZkYGKePYCmWpyZggehbWjgbe"), }, - { .name = IOV("wWFWMdMPOTdvTlZQpS"), .value = IOV("gEpMGhEnhoypmPVQvyvsbilzuqdmNELzZQXtEQCehgtmukdSCgxRWjcRGXilEqceyHQ"), }, - { .name = IOV("wpJSaPjXlDlc"), .value = IOV("VHUQhHsxEnjSxcPPymDTyWrGvzPnpBfQlfnn"), }, - { .name = IOV("GGzrHMgZObn"), .value = IOV("lKHepIwYxctnuZvQNCHjacpnGWTGDjjlQoJrYdyzNSeAPtVyuNnEzhovl"), }, - { .name = IOV("khyzTD"), .value = IOV("DM"), }, - { .name = IOV("RxaDXSsEYor"), .value = IOV("STlFqLj"), }, - { .name = IOV("EpouXFGb"), .value = IOV("yrrpAAUuASuMzXdOEVhsrLFpWtVZJbDske"), }, - { .name = IOV("LhkKSfgCZ"), .value = IOV("SxDjdyFTKqbRlVXCyelDAyduuOzhsG"), }, - { .name = IOV("KYQuGxYskjzlQ"), .value = IOV("bTOAFExjGAxfNAarvkrEPayfoeJHHzcCLVEeSNLlKVMMSlfLshlZOO"), }, - { .name = IOV("mwWH"), .value = IOV("vqQrjHkpHuupKWHVWDNtPuzdMhjEXzthldDGWBhbbVsWVdRH"), }, - { .name = IOV("wtMkmlWGmlI"), .value = IOV("mambeRexAPaSFcotaHowytmmBclJ"), }, - { .name = IOV("rZIac"), .value = IOV("zmicHcnCYqZiiPImtUYdPxUmjfMbLCDCIyvRllzMBPkJMbXpQmtQcG"), }, - { .name = IOV("FAzabuDwjVQJRBMucBp"), .value = IOV("doZvKMnMsuPCtngjAPERKEuIGpwnuMwKccBSZzUUWZvZaaBoSwCfDfKOYARlQsQ"), }, - { .name = IOV("GjnuLryi"), .value = IOV("EiEMSymGDuETHYNLrnitvsMDxQAiztwCPOBFRcF"), }, - { .name = IOV("uoXlPPDqTuQY"), .value = IOV("plibHBondtFjFdUPFafYTQZBRtRsoVxG"), }, - { .name = IOV("SsLWqcEQoQBv"), .value = IOV("USNtyaihLdNGdigDJomMhkPTCFkvlCHWGzWmwITGMoOrzKDuRZZVhFJEg"), }, - { .name = IOV("riVpmqpegSRbdirLPe"), .value = IOV("rtwMGIEEgVZHZkunHQqXEdaKBPmQWvvLffHKCVWxpacOfmoELJPiBcWNDceLJQLF"), }, - { .name = IOV("hrkhAHWYoozCL"), .value = IOV("tpwhDbDEaCnDsDsFcewWJJoVtEvTXrbFFZPSuoKnKaEpYUXOzVSChiWaLTT"), }, - { .name = IOV("l"), .value = IOV("lht"), }, - { .name = IOV("WsgQzWTcHLzvvHDzqS"), .value = IOV("vxpNUQTLSkUvqRbZTAnbnVKalBaoTAKJbnXWEPITOwSzalZlefUsktHwNnCN"), }, - { .name = IOV("gQVjNVlszWkgAd"), .value = IOV("dheqPmqgjehfURPsXoNaqXQPIVqhSEQIDeGhIhmuprWxSeQubLZinPqRWIBNYdj"), }, - { .name = IOV("qrQDVGkjXEz"), .value = IOV("irSfGFRQvlSovoJLlEtjhjUCgEcQSKxEKPloTrWZwJRWAAb"), }, - { .name = IOV("iCVBJwaN"), .value = IOV("erhdFGCjvEEWZyILNHTRXbwNmbByYoSzafvGMsrSltYTbQTEYGMRvEiStmUJZqJutJKq"), }, - { .name = IOV("eDmAqfDcxbgYlYzBMd"), .value = IOV("eAEqYVoSbOWKEVMcLkv"), }, - { .name = IOV("acEzwgxQFTZaZDOquou"), .value = IOV("kCQCpKZPbfoMPDlhnQLtBQFYplUxjVZmIEbhIDMSVKBqDkHIYBBtqjnVlhuMrdLB"), }, - { .name = IOV("ukeadotNpSAMkPpHzUN"), .value = IOV("TMAaHtcZS"), }, - { .name = IOV("dhyNuuC"), .value = IOV("IRkhYVIyDDlEQkUQdXsweKukvUVcBGlh"), }, - { .name = IOV("dCzhp"), .value = IOV("ZP"), }, - { .name = IOV("JKaXXcKphgnPwfql"), .value = IOV("So"), }, - { .name = IOV("xXgL"), .value = IOV("olNISLyzbynbTUYCUEMeARlcwOVnxmKsxxnthqSoSFOaSNeQHzBkfE"), }, - { .name = IOV("kGGLNMJEyDMZM"), .value = IOV("NWTJSOdPxp"), }, - { .name = IOV("pw"), .value = IOV("PyrsJBIBXlKtxEnoxTGVMKAMlPoUiaJLvRkPneybjdrusyTrbgoxKSZTsIhRmeEBw"), }, - { .name = IOV("mLofHmzOHGi"), .value = IOV("uBqgXvS"), }, - { .name = IOV("P"), .value = IOV("OYBrrNpSjesHeTjfjJm"), }, - { .name = IOV("nGLPK"), .value = IOV("VmAXmYaXNgVMLeaURyTFhzKpxuZwRxsODYSdzibVbwhBHjBZOignQUgwyzThKAuJzUHoAJfG"), }, - { .name = IOV("DvuhFBrTSykQnYTOV"), .value = IOV("HOebknKzKmOJfjPorsxRdTBteAfBCbwqngVJaDwofILhvfTybP"), }, - { .name = IOV("NTpTpAQmNarR"), .value = IOV("YEXPZSPhwhayVaHISIzkrBzVoaydaBbDjkihLovCee"), }, - { .name = IOV("urqeWLt"), .value = IOV("NUfErGQmFJwylUgTaalqamrBTOcbZfCeaHWbPlEDfWoZrXVddDkwVQLFFLuZSb"), }, - { .name = IOV("QmfUUctKvIzdWNitmHoq"), .value = IOV("PLBynGB"), }, - { .name = IOV("msXPmUq"), .value = IOV("cmbJgrzikhBZZVMSWFeEELxOcqhwDjMgHphnIREAHDjiRozltMj"), }, - { .name = IOV("AMYHQEfuFiPitdiPhL"), .value = IOV("XiwzRnTENhJMam"), }, - { .name = IOV("HdGw"), .value = IOV("tCOhQFMothjTMIarOJexpYYfoSCNwfXXufzoCIvVPYtEmEjy"), }, - { .name = IOV("KvflyUMzTHtTG"), .value = IOV("Vi"), }, - { .name = IOV("HewVMTTu"), .value = IOV("ZOXSJMlcNCqXkNghswNiLvCqtaTjfD"), }, - { .name = IOV("Rtq"), .value = IOV("uQVtwbmuiunEsdsHfTUyCOWADusxZnurxKLPnhSrnyYvnfDNflvnJw"), }, - { .name = IOV("eEFUYyyfWeSMNAFhGN"), .value = IOV("zjavJPsGhetGJdJhR"), }, - { .name = IOV("bYfzeddpWjQcqDcnSR"), .value = IOV("OKGOYjNgsQezhCoYiWZjBjMGivIQWsOFgdqWAQrVJXuBzIkL"), }, - { .name = IOV("EDWiCoCHfWTMuQt"), .value = IOV("FgxREGEayGESkBzizA"), }, - { .name = IOV("vkawjBqeEDcolhV"), .value = IOV("wwcqd"), }, - { .name = IOV("XsmkgPDwv"), .value = IOV("wjzwFIQcbJpQALfUebnxHPwWJObQsDkUKWYkJmzuvtGDCtSOPsTcdwhpEfWFASKB"), }, - { .name = IOV("zET"), .value = IOV("dlIaVktwgMbSHakLJbczS"), }, - { .name = IOV("UlRKr"), .value = IOV("aXZhtzAxRvsIhpbL"), }, - { .name = IOV("nPHKcniqvX"), .value = IOV("yfbDyOJQMcIZMfYMhRFovP"), }, - { .name = IOV("ZxomMNXBarPWLvDrY"), .value = IOV("IjWYJMfYySKTDPlECOoYJRadaWgPQjFjCRtUgeISTQRnRdXDZmgNmkALOUytNJttdrvdhGDfHsfD"), }, - { .name = IOV("SmspLHQIrNEnadibs"), .value = IOV("wnHHMruLAoaXmCnfyXzYFfbJ"), }, - { .name = IOV("rjjxi"), .value = IOV("owzSoDCCETPXSuTxLWpXqZWODNwmAqEDJsbAvEbmADaSQoOdJGLFQmWHVMyeRgvBLrJpV"), }, - { .name = IOV("IBg"), .value = IOV("qe"), }, - { .name = IOV("KwHAsohOdh"), .value = IOV("YhkOEmzZCcriHwbvMNsGBW"), }, - { .name = IOV("jwjnR"), .value = IOV("KUcNlEMAeucUNIXgSCfTcVniHWRJPHOLyKXdUKpFZxVkDKpvTwgJxYLu"), }, - { .name = IOV("nVWkSwAzO"), .value = IOV("ocraulRROizhQROLAe"), }, - { .name = IOV("ygLAWgpgjWFgOpcJ"), .value = IOV("vi"), }, - { .name = IOV("GVFAB"), .value = IOV("oxmEnlDAazzX"), }, - { .name = IOV("hF"), .value = IOV("YyWmYwnbFQvvuaPadcODofGSBMYwqmvQHTRCuhADdQQW"), }, - { .name = IOV("yIkHN"), .value = IOV("KYLFLDACgeWkFelEzqNxIkrvLAiiWrNjsI"), }, - { .name = IOV("KZIRvSCPQdwEb"), .value = IOV("SDHWnSMooInMaqFiHgKAvXkyAuKQsZlDtmnXQRvsUnSzFORy"), }, - { .name = IOV("KBz"), .value = IOV("AHRmRrmgwqJbtVvolUSjGgsUiAxUlDDqnoPaQuRiUEJhXvPLUp"), }, - { .name = IOV("KkaBrkvokiByJTfJZ"), .value = IOV("esmpSVmAgaHZuipdsLWjvWKiNmWLkENPMUjIKNhztFcrHfWRM"), }, - { .name = IOV("bk"), .value = IOV("gQCcjTUjbWgyanLDptit"), }, - { .name = IOV("Cw"), .value = IOV("IDkvIEUNJefFupEZa"), }, - { .name = IOV("axeZoSPHlFUvubniYPw"), .value = IOV("erdWKboqDXcBPRAWboeHGzUAUNxRgsXrIvCtZEDHDqxBrufFbfTIiMBqrUxiJxmH"), }, - { .name = IOV("rhzqjyrbOhzuABPBYJjO"), .value = IOV("tLte"), }, - { .name = IOV("jDQGwBAy"), .value = IOV("CToCyaVrMCJIZZroYPBNbdqLBcdLhojjJNkSWOJonitCKShSxhmAAgrwPD"), }, - { .name = IOV("JRnCKjFllCekTnIZoL"), .value = IOV("GXycuLjSfgXzCMbvJtvvuMmtgePzCbGHAPPiftjzPfBlczwjbVaPccYfpKmBMIFwqejLPEvVyBtiJXv"), }, - { .name = IOV("aViAsFnA"), .value = IOV("GCAxLaUllgMljXhGjpgbvRfEcCWFyGHVKrHLqCeRBHPhRTGlgTfHgYWe"), }, - { .name = IOV("Jhsu"), .value = IOV("XUkkdtPxAybRPcSLWdkYtKiLcMhYokZA"), }, - { .name = IOV("EoOKi"), .value = IOV("istn"), }, - { .name = IOV("qtZowzMpB"), .value = IOV("fWvjKmEtzScDbxQOMCJyBfpyvGwiJdod"), }, - { .name = IOV("vMANNiFpO"), .value = IOV("nvBHtGfGasKtXjuAWjyomArxuxwXoEgBihUCMpZCMgtyYpjci"), }, - { .name = IOV("KmCMhkHRN"), .value = IOV("fnlYPygzLYOndhFmOlpbVETRIVemoPmYcJIlUDmOQbahGXctjNGoyTsvNtJwjnp"), }, - { .name = IOV("OAoUe"), .value = IOV("TqOsOoR"), }, - { .name = IOV("mqCUFVYwdkcJLMt"), .value = IOV("iTiGJHVISGVMQEbgBEKMEvAY"), }, - { .name = IOV("lXNKyGDzSR"), .value = IOV("fzuGctVbKauxaPLLjjWSaKpsVtsbfgQDdYkStTFyEzzUymeSXmlaiqaP"), }, - { .name = IOV("knFQB"), .value = IOV("uGkEOiSdQdmNgveaxZwTFMFBQTZnhNTMevpwzMtIBAHvolpiFalxTKKvrhYHPDHujyVudgUyRD"), }, - { .name = IOV("ZnXxvjynoi"), .value = IOV("ENXtNWgsLdqskpZrELThUCVHZCVQ"), }, - { .name = IOV("CYoVDfysczUZDtaFJ"), .value = IOV("yNzCCBznkajziKfIGuzirKAcDzFthzWoBytKcwSZZHuXSZNNWkOUHMwvxwBGdkGxb"), }, - { .name = IOV("SLnxNYbk"), .value = IOV("eJieKWcImJnlOJFohwmIvrDsqEfwIpKzbVhQZymQxqcgAPbsyjlngNWs"), }, - { .name = IOV("JASLGuQSSZblsAi"), .value = IOV("qicjbuVftca"), }, - { .name = IOV("qcmdhOGMRB"), .value = IOV("ZjglNqWBrLfIdOpXRyHOWPeXUwmrJHacs"), }, - { .name = IOV("uQkJQiz"), .value = IOV("AMFITgIaAWRlMoEdgvPxHDHJGGVvaqxeOqXofVSqewtQU"), }, - { .name = IOV("qvH"), .value = IOV("DOnBCUMDSwbqZnjXErGDzJfoqBjpGecBCznUAVIiCubgqNePJUeqjqE"), }, - { .name = IOV("GCOzmthHpGdUkNGVbo"), .value = IOV("szpwOVGbvpZeBh"), }, - { .name = IOV("YHr"), .value = IOV("TdRgucVJDROsqmooxKUnytprngGWVweymDWIfbdNrc"), }, - { .name = IOV("MTsYLsUr"), .value = IOV("LeLQSPELvueShYVoJcjlUXfVhrVvkytGhkgEhLgDFTvllkru"), }, - { .name = IOV("WjojWrXHlFU"), .value = IOV("VOpjkHIxdppXCTWTJdm"), }, - { .name = IOV("i"), .value = IOV("KTYQxfPKGqwcEbXNlvYVLidCilsnUsLCNsrTwKCUZCWzjRPyjmJFvAseERYIOzMbKYCKIMnWPqeujDi"), }, - { .name = IOV("LHdACkXjIxhBxB"), .value = IOV("IhIToMsxXoAENLhPZcfamYPTKDRSAnkgmlJRcnBzVcHLfmCsUNTOVTSeXsAaBetYovVFHJo"), }, - { .name = IOV("S"), .value = IOV("UzmkbMjYACjmrTNoCXsmKaRMHaPgcstWdmXRmQLMNR"), }, - { .name = IOV("qTwgCefp"), .value = IOV("wYFqmCOrOUqPeGaaGNEfldRYRCOrsXOetbXEZffxoleSxmRkHPyQvcYcz"), }, - { .name = IOV("PbXpLQLhMhNQXbpX"), .value = IOV("piBwKlNDBXgxYoymYzwhgmkCJUcWuuyRPLrlMfPCTwZEOKsCqsWQWTGeAIDDxtzwCyNacvY"), }, - { .name = IOV("tRLI"), .value = IOV("SWDcDNZO"), }, - { .name = IOV("yqvWhJEqFgfLOoegQBKz"), .value = IOV("XwTLY"), }, - { .name = IOV("FHRT"), .value = IOV("wXwVZlyUUaIAHMHCBW"), }, - { .name = IOV("ONluugbiBEbc"), .value = IOV("WIpCEFRnTVRJbkKnQhxjMerusMMRgmnMHAyKuZw"), }, - { .name = IOV("kfdhD"), .value = IOV("sxGmPcplGWmIxQ"), }, - { .name = IOV("qxwMtJtNpyzEVawrMQK"), .value = IOV("kKgGgPtQuDEVYUrkUoAtvWvLdeBjgAsDIAuYJmCOSwhBIsmnISZlmaAp"), }, - { .name = IOV("lUFaeLGyxrnS"), .value = IOV("jXMoKC"), }, - { .name = IOV("KpXbMbBxAsQzDXLR"), .value = IOV("drISwspxAzkDoxNyGmSzwYWiTZnDl"), }, - { .name = IOV("omDmaumgcdplzvScD"), .value = IOV("PKXrhoBjQkzQVLGdypEMWUOKECfbGuHfmDuDNQdpxXJzi"), }, - { .name = IOV("gzzKTsZmxkEPbkvYt"), .value = IOV("qZuCCHImPWgzDODCgfSZapxFHEoVIsnzGwBsSnRwRAsbjTdGovpphVQfSOPvuaQw"), }, - { .name = IOV("mmPbjcilYyfEvhpbu"), .value = IOV("WYUIyAFnSknVMZKyMpaaNdChnwF"), }, - { .name = IOV("YoaYpDRDWemEVN"), .value = IOV("IqhqlcWcQWcsbWpqoAfrronwBdcrtSPfyXkYucmsTpDq"), }, - { .name = IOV("oRcyEGTVLH"), .value = IOV("mM"), }, - { .name = IOV("nUrbsTbiBCMqr"), .value = IOV("gFmWsZxHvZcakLeNwCJMvwdaTdWK"), }, - { .name = IOV("LEYj"), .value = IOV("vIdRzHCSxCKGdAVyKQqlaIRYfGFrlpPOEVUjQX"), }, - { .name = IOV("VdDlEPmqzK"), .value = IOV("SuiFzPNBgMvzRLkGyFFchHpfUIpwkx"), }, - { .name = IOV("WKmLLsazT"), .value = IOV("mQoDuodMyNqgFFcCqRojyBwWAXvgRaAvsKUICsSrFJtYuFgPqdidGgbIjANYSt"), }, - { .name = IOV("AVgcrjbfCEALllVBoDJJ"), .value = IOV("fMLLCCWFNHPeajdLzFzIApVwapbrBgxiLaekweWkeuptlI"), }, - { .name = IOV("iYEejrlapZj"), .value = IOV("cxsjUDQgIWVERGmqUShuIbTRCjTUbWGHnFujvhFKrYaHYwxkSkeWFVtUgnHEPikZjKPQ"), }, - { .name = IOV("QuWEsAxxEoCQDVbLCV"), .value = IOV("EsPLsuneFvskumD"), }, - { .name = IOV("yORCjJSRWcGAcEJviXT"), .value = IOV("VtzFgjgXdXoVfjoKTUwWwobWDQdzC"), }, - { .name = IOV("qbdIKwJEmSNRnNJ"), .value = IOV("mPeWXrnPyaSQYOKvcBrVofZtPRbMwLVCmjCvCFBNgfejLlmdqKaRHAJLJsFBcm"), }, - { .name = IOV("KaWlao"), .value = IOV("eCKlbObXyyLtJDAsTuCFqEJBurjKwsZYufSD"), }, - { .name = IOV("MbNSIVkRlOx"), .value = IOV("ounDzfhiYvtpuSNIYiaBDAYaWIjQLCilwIrRtueoY"), }, - { .name = IOV("L"), .value = IOV("DGANQFwgGBOQURelTMMuLSniRdTztdHfNwtkT"), }, - { .name = IOV("AWVQgRNr"), .value = IOV("UhAOrFtDhDTRBNniRgWpYFdzdprmArWUySjQwusmRGnpcFQggTzJwqccsckpUpzTu"), }, - { .name = IOV("CnUKQovE"), .value = IOV("KkxivJrbcZjBmhYcleYLdwKNPLpfUWrMKlprCprPTQaANCaGSFtIMI"), }, - { .name = IOV("V"), .value = IOV("NArDJkNmEMXh"), }, - { .name = IOV("Wtyx"), .value = IOV("CYUfhapIBsmuOBPWspObPzonmqwzCDEevwVKcBmhroEAYDOrVyuWbXCssEZOflkNFvLxhaGflGxpN"), }, - { .name = IOV("AOIbsVlRTOVXLY"), .value = IOV("avYHhW"), }, - { .name = IOV("qOicYwZkWTMCED"), .value = IOV("hyZggoitpoLHxnmEPfJeN"), }, - { .name = IOV("iKLRApewllROB"), .value = IOV("dGFiIlyfKyNvHOJkX"), }, - { .name = IOV("hEyRhE"), .value = IOV("zleaTTryYWIOuiWRtmJQxLemaCmHQRDq"), }, - { .name = IOV("GvaUfiesybIRFrZJx"), .value = IOV("RKutYdDKQIylyjJHHlKtbieGzanVgKtzobxE"), }, - { .name = IOV("cXahpuiFCsDiS"), .value = IOV("A"), }, - { .name = IOV("ZhnfBoF"), .value = IOV("QFzTXCzIhrQmVHGpvCTPxyUHJLhkJJESJrawwBBp"), }, - { .name = IOV("JPUAplqsJxkBxg"), .value = IOV("PLcTFGuXYGMPKPvSYlTxN"), }, - { .name = IOV("cUY"), .value = IOV("PGyJEzfYvXUPJwyltIBQAXMgeMIyua"), }, - { .name = IOV("GupBhkBJUKpoUMdFUr"), .value = IOV("ZZHtmsenMxKKVwHOslgyUr"), }, - { .name = IOV("YIFYnABxtFIMpMqebkH"), .value = IOV("UZOP"), }, - { .name = IOV("N"), .value = IOV("mwTbxEDqwEMLXzQYpSFKXhYPnIu"), }, - { .name = IOV("RVwlbFglpxs"), .value = IOV("DtOpqxfXTSDhIJwrVVrVxjyddlgasjxhEoqqvlhzsYGHYUmmqidlAQ"), }, - { .name = IOV("WUuswDDw"), .value = IOV("UJiMLZxxhmaxopmYCVQiVqcreamvOmpVuBMb"), }, - { .name = IOV("AHnIYIxFehwdZ"), .value = IOV("lAeAUrwPPryaINIXNvIgfpAEmlihLZcqsbMLGIfSqKPLQep"), }, - { .name = IOV("BXDtJRRrRSwVkVo"), .value = IOV("ECuII"), }, - { .name = IOV("NqJydga"), .value = IOV("FubBoMwSqvkSPIaOpxbhzOJcMpYkYIRhnjSwFhlDlLGcijVsifKVqycOrVqDaLwowcjHaTalLF"), }, - { .name = IOV("feJIxLWenSICsdYfKUF"), .value = IOV("BwWUozsuuwrsjHnJfJSuEMBdRlaJm"), }, - { .name = IOV("kwa"), .value = IOV("wogQobhbngzIASjlSPDIMhchxKSZFxgkF"), }, - { .name = IOV("kdeOvOVwYMvIHOq"), .value = IOV("GQuhCUQOfdFVjOpDDcFqoLTVJqiVmIvuLGBrLTudDmsVIyNzZtEZkYcqqExEfsAGXXOUKSbMTAXOW"), }, - { .name = IOV("qHycukISzuW"), .value = IOV("eXeNMNZjbCcYIuARkqClvmyiEgeMKwdeEXxLmUopjnZxDflGBkWCKlfq"), }, - { .name = IOV("AKvbBBUkBtTO"), .value = IOV("gwoVWKnDFhhImeGcfZpQdhUzpZKMVGSmqlASmShCsIudMTfIbMcInoGKuFVYvsiVJMExrUZCvAKMKvwW"), }, - { .name = IOV("YdDWvNYGYfEMxOn"), .value = IOV("khFijXWgKrIKWAHuAaLGBLjJIzLkbHovlAjTExahKWDkwemUFCcAIr"), }, - { .name = IOV("tFSgFckxWlAcX"), .value = IOV("KLmFWKWrHCQSpuTyLhNZHodIdVmzpJTjdoeCBcoLtmOvFW"), }, - { .name = IOV("ERBbFpXREK"), .value = IOV("uIcVbNWwMuPvzcQyCIlnuwkmnTTDZDUnqFCQDKECkQkMcSuaqHAT"), }, - { .name = IOV("WXTEMEyGjlXQUKqiA"), .value = IOV("zL"), }, - { .name = IOV("nIFRKQUTXnXxg"), .value = IOV("ULmomeMarpZJBrJ"), }, - { .name = IOV("qtfGA"), .value = IOV("vx"), }, - { .name = IOV("UtwflekfKdMEEJ"), .value = IOV("PQcYSYroujJEHNassmFXPEKUxOKebdVcgxKTBoNOLqeTZAdGMMtPteOYUXIZjKWOgj"), }, - { .name = IOV("gAxyorpGvqsvdbYWCoSK"), .value = IOV("iVQRDyuRyQxVsMoyCfgJYtLxncthWNjhvlWBMJKSHUQVrwlDLWMRUkrSisIcuPfGnGvogqMUnZp"), }, - { .name = IOV("nX"), .value = IOV("JsXATvboxOYzi"), }, - { .name = IOV("izivYTisabKZpPKFWKFW"), .value = IOV("WsqOzovDUFbxlMKwRMCNKzNIypSpBsDkbPPJYRerLBuUOVmxDPFDcDTtBHcmzK"), }, - { .name = IOV("PNSxAuGT"), .value = IOV("aeDiOErukoYD"), }, - { .name = IOV("nbEtXZFClImd"), .value = IOV("YiDVZXrzaKXvNNqmvgOFFauvLtAwnnqgyCHkxnhmzFKJhWdaMIqoPEUCsiPBtkFnenTHb"), }, - { .name = IOV("G"), .value = IOV("BuipkOttjgbcgjWnFCxoPfOlgpgfxGxxPNizNYiIDhvNudZjPOjRKJSNYz"), }, - { .name = IOV("McETRU"), .value = IOV("pLgIvJgtHINelNCKqeCdpggkZrnprCxGIzufF"), }, - { .name = IOV("pvKpHGJjr"), .value = IOV("OOucLW"), }, - { .name = IOV("MteNvTGnZqfk"), .value = IOV("QBIo"), }, - { .name = IOV("r"), .value = IOV("NoAXsocdZHSLKlNlBaFampCOqjWtgyaExVTpLIelMO"), }, - { .name = IOV("ZbrZzhwbqZs"), .value = IOV("SZiOiPNIUgufEcLjkdoycUURgDsgBSvEzLYNfSjsZpIrXoVUYnHmcNZ"), }, - { .name = IOV("HdwRvURNUWOdMOZJr"), .value = IOV("BeMbCNEfEsmISMjLXDNArtFG"), }, - { .name = IOV("GXP"), .value = IOV("GdEXmZhfTagtJBOuGXDfKHIfgwOCBklvtpthxAhKkpguGObyWuPsRCKELrVavslvQtFgm"), }, - { .name = IOV("XJjZezICKbswiBymbDO"), .value = IOV("uxkrBbinYjhzcTeYYTZjKHRYNNsCveRmzHWHiOZlZPOHyhIVYUKuMqebL"), }, - { .name = IOV("BYBFeDNMcgHLEErWBG"), .value = IOV("C"), }, - { .name = IOV("xwMSXhNkILh"), .value = IOV("crOVwmgFCJaEwuqBofCOEqguhJcjAFBXmoFWwLPULPavURzFWHoDLzdYnGjkwOoqjtAckaBPfY"), }, - { .name = IOV("vDriDLCNhpEEZfK"), .value = IOV("azPjVDlvcxxlvXtMKAcBjMKloXKUhlEhmrbkJsraqNWdWREyXBvLonwLEbqtskfaAoFnvCUuZ"), }, - { .name = IOV("gvbrVG"), .value = IOV("YkrIqvSzggVRHiKoxGHHVbqkqauCrXnuIIIJSlLhhmJna"), }, - { .name = IOV("nrgdEb"), .value = IOV("bPqBlEiRUNqKVZNqPbsXjcKtedbWaSyarpixWjImVzVexcQGSvjujXXGlLhnUSUNVpsbvr"), }, - { .name = IOV("pD"), .value = IOV("fePtfHblOUcvSoCDJFZsGRTxBCgZnALaIAqfDMqoykjubzokeXHWmLucLnFOKHoexBiODUnd"), }, - { .name = IOV("ZVnLA"), .value = IOV("uvmjhyYHgGJgrlOdzewAoiSobmwzAoMxgiVohkDqRcvLixeTRBaOaPVTgUdpUAgoLf"), }, - { .name = IOV("qj"), .value = IOV("gaHiJccpdCbYNrpyNWCUvTcXdFFabkEDxiAazsceCwYOOYIlMU"), }, - { .name = IOV("HhrXSwYnBMVVWYdPt"), .value = IOV("AVDOsdHDZHvvcXVynmwEXyrrSxkgRMzPffOPUjQpbybBJSPMVaPwNtnrxSmoJUdlFvQTdu"), }, - { .name = IOV("ygPgodcsHcln"), .value = IOV("NZPnCochTVkGwYnppaIA"), }, - { .name = IOV("CgOGIyMcNQJJPMG"), .value = IOV("wNEemAapWEnSFhTQLjdJc"), }, - { .name = IOV("jYTmnPgasxtyJvqf"), .value = IOV("wDqTCndkjOVxkXQThNKfR"), }, - { .name = IOV("bLMeAaeY"), .value = IOV("cWaeCTJGJEQjZBmUTDSGOVXsiEMwlpZCyiAvxxNhPfcSCPkrfjFOtUQJ"), }, - { .name = IOV("AaUtUpt"), .value = IOV("fbCcUQAbExYiupFMKhReTACHjsgMgBsyZQNhYsuqWQSCWACZCAETGSQHlm"), }, - { .name = IOV("HwjsJYUQlDatRaUKwJ"), .value = IOV("GVCiXLGgERCghRgXvbtYuHOiLCBqxetoRPmxLrnJOcXulvFTpwgBxlPjUKPfEUTjBPmTJdbWi"), }, - { .name = IOV("UkvjyyiKcKKYZVBcrVT"), .value = IOV("EWMfigDHcMKrsgTNseFnfBdGHnubPJhfXVFoBNraxRqLbkHi"), }, - { .name = IOV("kkDkeYhipnaraD"), .value = IOV("dami"), }, - { .name = IOV("nNghfJ"), .value = IOV("BUU"), }, - { .name = IOV("mfXmvwoADFq"), .value = IOV("TvFERrJdqYwbpQTrUpjJraCljuWgFvGIGdkUZqpsJQZ"), }, - { .name = IOV("jdNtLfTOFEJmjKEJ"), .value = IOV("hXBFoHQbPqtGLKyGHoypmVKwekIeuRgZljPxnXXmEKUr"), }, - { .name = IOV("sIgOUasOOBKPxku"), .value = IOV("mymKaVxAIWObnKKYdYkQRQCuMJeHqrbYYRWipp"), }, - { .name = IOV("rRAd"), .value = IOV("dTFtNrJniNxWzQaBQifGMiwmyKhJTAehgcrrjpJMUGreOCRbDDnr"), }, - { .name = IOV("gPSiOlUCOKnzvTlGCj"), .value = IOV("UZzMudsmJVOWDdlPwSycWvDJsiFjYpZgzJsFkNHrqGSVusEBtERKOYVrQBucPtUsF"), }, - { .name = IOV("pzlnTn"), .value = IOV("BPRoaoLciknDjRhrqGgBkgHmwbnqGRtjvBoNUjXYqgqcsIjThyWDoDXtFPHubHCsyWpzHiWeG"), }, - { .name = IOV("EvexVbO"), .value = IOV("HqhfVstFZQPGT"), }, - { .name = IOV("yulBxkVZzSqRSHgN"), .value = IOV("EHxnbPvVrYpZEKdOHfYkEBiaDWfzQZ"), }, - { .name = IOV("d"), .value = IOV("YzQhFZJtUsdGSFKHdHR"), }, - { .name = IOV("kXWNEpKtkx"), .value = IOV("KsltrNaJFqZnKJyuXBTshLWIczcFYJGJMoBGdVVinopwKyAPgIvWsJzeXPuAGvnpcE"), }, - { .name = IOV("epPbPNwMxFwOwdyBl"), .value = IOV("RCHogUXgtWCgcjRhkmtDPOukSWSRfPRBklkhMfzePHlGLTMUikbFIqEewMIGDPldNEcxqDji"), }, - { .name = IOV("lTQEhWXGbcU"), .value = IOV("dwjrSVBdkaKTcrfqEaPtgWaRqdSChkUmbTxoChAISQqCZENUPmaZxCjXGvBUAHjzZ"), }, - { .name = IOV("YKVVwbkOaADuDZDiIf"), .value = IOV("loKGiwtanGs"), }, - { .name = IOV("qaSUukTvylrtoxAjJ"), .value = IOV("srgFWCIdxNuJYRTNhEmgeAygHTUbnXwTnju"), }, - { .name = IOV("UHCNTkZ"), .value = IOV("IpdU"), }, - { .name = IOV("UW"), .value = IOV("oYhXWuiTUDCFhwVMHZuqxBtqoqNhERqxNZDjTsBbJR"), }, - { .name = IOV("qabrhwLTWYBSPSYyzocy"), .value = IOV("hPBeqUzvsOMjACgDgUZMYpUYxUAgDLFkttygoxqmHyrXmpaCBCWyhtOtdTtCultGKSkIdDvmuiOBjhsF"), }, - { .name = IOV("ELEoiQkrDQ"), .value = IOV("sAMYxLlXIK"), }, - { .name = IOV("JSjfShMpeA"), .value = IOV("ZEgboXjNAUtoldbGTzTunVkqrGCgVMVVaTMVkZ"), }, - { .name = IOV("XETFXbPrZNdwxOGwWrzH"), .value = IOV("EkpOVKyUouqqImxmVFkmzpxjOltnTBeiyYqUdVxPXq"), }, - { .name = IOV("uhM"), .value = IOV("gPcETtjYdqiqpabHFNJPGvYDyemzBKQeNyA"), }, - { .name = IOV("LTUouqNtiY"), .value = IOV("ZbXGOicCkMMohycRtHcbw"), }, - { .name = IOV("oQwfrETzmIKiNfRCJD"), .value = IOV("xHEc"), }, - { .name = IOV("BDNKdzOHz"), .value = IOV("uIUnBFcibqEIBHzIigTyKcirBgUzaqxyJyBUEPVdQJJcNKDlMOrPDjWcChA"), }, - { .name = IOV("NJBajjJG"), .value = IOV("ZrRMuqt"), }, - { .name = IOV("gPCw"), .value = IOV("CWopizZpsWHNaQtdXBhXywAdLZxpdZXMaTQINtTAyzSFNvMfvTougBQCvmXCmUrkafB"), }, - { .name = IOV("uxYYB"), .value = IOV("rtrFBqHRLTmVROUrMbtTAEiJibwDJvFIBVRJbTpQdwlhJxsaEjijkZZOHQrQQYNZbBTakOjWjs"), }, - { .name = IOV("rudXIsjRkdELcHyMMGv"), .value = IOV("XfJCxmiMUQNQNAQViaaVyGPnudRgNDZqUZtKkCpkOmoCmaoBRTPxEGCdbTmLnYRlaCziaDiFujA"), }, - { .name = IOV("juCyHVtAuHEDw"), .value = IOV("wNrEVsaERCFRNsqRLLDFpCpSnySHiwodvxqsBOiFjNOhaSGgeXQUccWLh"), }, - { .name = IOV("ltWWLmUXX"), .value = IOV("roclUkvJrAmYsRzcBgADysGqoPnpiQCXbXMWJLsvNSeUdmaFqpSaFAvLPOeMIRC"), }, - { .name = IOV("mFFUdo"), .value = IOV("zSjNGbRKtpUocPE"), }, - { .name = IOV("kjAjXxhnWSGtYtd"), .value = IOV("MjbXczOedaDpJgsvybNXQxrreShqisVzowsIeDTtCHzbGjVJNlhlXNzaOMifHDYv"), }, - { .name = IOV("FPXqM"), .value = IOV("OThKEAgdeDZIqJxHBD"), }, - { .name = IOV("rQSbfCyqP"), .value = IOV("taGUUIWbfBCPUJVvJCGoRIF"), }, - { .name = IOV("WUhTxLDnjpcUjQskDo"), .value = IOV("PntzBL"), }, - { .name = IOV("GydRaSnxBGHVAf"), .value = IOV("QxJCAxZpfxxJEFqvXEcLRSuOxepXSRPYqlIXxmAgaKTPITGtEhFvUVSqkJqdycHs"), }, - { .name = IOV("AjruJSscMzmQ"), .value = IOV("fSiRvVGAzZvJI"), }, - { .name = IOV("mdtUyWHOzLj"), .value = IOV("bXTKyNFQJhIkWLInLsfzUtzZSJReIEclWeoQnqKkhsFMlwfHrgqtHTOBrsSzyLcaSvYgjnV"), }, - { .name = IOV("xaFrWdJmuYuilnjmuyvT"), .value = IOV("LxbUMnVKfceXXF"), }, - { .name = IOV("rwkF"), .value = IOV("iIjDCfTnCstAsMqpHNDMSoBjebrUwfqNpTGZSHfMoDJggfBnb"), }, - { .name = IOV("IKvaBFNYFzhNmxzLdf"), .value = IOV("ifnNSjWWwFPPeNMNMHWfDkRlnYsNBGcVFZuENDq"), }, - { .name = IOV("vOwLQSIhPBfTTqUd"), .value = IOV("wZitFGhFonrbGEkCaVxtSPBTtqsIFLEGWQwprxfDqhOFUvDvRWQTdKsABBdtqGBUUKXseeMjj"), }, - { .name = IOV("YxazQBSzbTidyOKwojPE"), .value = IOV("qLFbEgSmKtUylXeMdLjAO"), }, - { .name = IOV("YVAxYSikTsmNiNjg"), .value = IOV("JSaFwsQGvouyzhqyJiZYfDRvGkcfHnaxqCXUW"), }, - { .name = IOV("uINoCK"), .value = IOV("HHKOoGlJOTCQwfenybeIZkSgfWkEtNqlyhWCBPQMdTPzQcYpziwhRvrFhIWPBPlecJdLKVHd"), }, - { .name = IOV("vFaYgDlBWVM"), .value = IOV("EhHgUzVnzepFXEovjmhyBfADLZQMFJVITnWnUiYHFOOOvkftsJTyFrjIOghmgG"), }, - { .name = IOV("Keu"), .value = IOV("tWlOCBlqysaVvrxFtDDVkHRQboElMNDDVlSVLzotRxZMMUNaLxFOKOQclZGsOAmdhMlSefQZ"), }, - { .name = IOV("aa"), .value = IOV("JUPjxsbFxawgylqobBwGfOaSufRuRpZcVTzPIMuJAFhLutDDzmfh"), }, - { .name = IOV("XOizLPpOQcZlhm"), .value = IOV("QYNbZOsob"), }, - { .name = IOV("t"), .value = IOV("IHXsLY"), }, - { .name = IOV("XQwVGukLszEQZEaqgJ"), .value = IOV("xMYlvfvwoEWQaxRVaGrBugVprjFMsvIixtDFTFVVVWZCqesLSubvXxM"), }, - { .name = IOV("HbuIBbLIMOWMz"), .value = IOV("RzaP"), }, - { .name = IOV("plEHzQWUdQAA"), .value = IOV("eGSQbeStVfemvOGVXFiNjeFVYTXRjYhZAjeIjglHYFfHfHdeWXqGbKkzMwoLnobSWDJ"), }, - { .name = IOV("qnBuhmK"), .value = IOV("jIRLTbtYu"), }, - { .name = IOV("borNJWpzqaWqcrMD"), .value = IOV("GFVX"), }, - { .name = IOV("dBnYrERjy"), .value = IOV("Ttg"), }, - { .name = IOV("MKNWzFZArOfPZzIh"), .value = IOV("RUyBasRWrOmqcHrRGXngZQNIOaRqzYHodUErsIkimqoHrlhBHLiknBDPBexOJwktk"), }, - { .name = IOV("RkHF"), .value = IOV("FXzYmqpUvmMqPTKNdgWaWnUgRKmbYBEInLrtYDBPvD"), }, - { .name = IOV("UNDSTOiMtXdImiunq"), .value = IOV("dRQxZBkhOhEHHOAQrlxYoCFmbmlTgrykpfVWTOiFWmohLEvVzkxbhOvouZLnbUvDtdoFmFKoElaXhY"), }, - { .name = IOV("EChhydyFcMOvfWxvxt"), .value = IOV("PAymcOCwRcrFQbmLDVcZXLmdrcFsyfWmMCY"), }, - { .name = IOV("HQ"), .value = IOV("BrFvqKAlkIAjYYDcbqFVoFcizxywbBCMyqnRcrjUNRgNnbEIdFkUuxvVTLAQx"), }, - { .name = IOV("CYnCLXHwdv"), .value = IOV("lB"), }, - { .name = IOV("vMVbbsnvymuenwYgHvi"), .value = IOV("GbqlfMamisdeEVTHKPHeGMtkfGggLjgiGfAArAq"), }, - { .name = IOV("EGOAz"), .value = IOV("LuASmuKJXzZlBYqAlmXgLRQKIlYXfre"), }, - { .name = IOV("PLKiR"), .value = IOV("FxNojdsysnlOrholIEsqdDVOPiArSeHw"), }, - { .name = IOV("bbloUEMloPza"), .value = IOV("YjncOtMMTBLLM"), }, - { .name = IOV("lgHvMhjXAMuocMg"), .value = IOV("tuslJlxmaClenHeVlVkbINObkeBmvYNYBiNiQ"), }, - { .name = IOV("CdWXPmIxuxh"), .value = IOV("AKlJZKQeKuiiyDAqMoDAnMEBqAEPhqOAriVjJnpdnHrupuugvyOIHMuQIiAhxUwmlSk"), }, - { .name = IOV("Z"), .value = IOV("NMsp"), }, - { .name = IOV("Is"), .value = IOV("odcYkumJrjuyjEmBvdnplVsUzAhoBlUCiNHnlUjvfgnxXMLvBECOJIQlNCqGfpDgyRPBGWejKuQajY"), }, - { .name = IOV("tx"), .value = IOV("eLlKMsuhWZDiaAaOxhcXASKylzrBruNhZBEREFtr"), }, - { .name = IOV("LwlPTCaUJNusYPggXTes"), .value = IOV("zIjjocFywRYUlYaLvwsltFnSwoVELiBgECnmbYqKDz"), }, - { .name = IOV("OwyAqEfafWFYqOjs"), .value = IOV("EGlgyYUJMfrTwFiAuPLqSHTHbxYKfKwlNvlrbkAfnLkRTgkwlB"), }, - { .name = IOV("ZhS"), .value = IOV("uHVfEsFSGTraBwbtKCKMCmLnjqUuuOglkDhYscYKbhPJnPGWIQYgULwoOXVEHPvTRDSKUMS"), }, - { .name = IOV("uSXfMqMwWNz"), .value = IOV("PLtBKYwNJFakpiKwQyVUU"), }, - { .name = IOV("zPKWxmTA"), .value = IOV("BsbjeFKNAtorcGsglkhdlvRMZzgTAAyPtqdmxh"), }, - { .name = IOV("uEjACddpGWZMYEQy"), .value = IOV("JZxPQIaGDyeLbZDtTyCxzHKdzqqHTDLGvdYkkMtRlClCOgD"), }, - { .name = IOV("iybnSmZvmugHoPhoNzuP"), .value = IOV("qYbvQIZDtuQkBEbBdJfvDGeKviLSPTynsbwLs"), }, - { .name = IOV("UdJmyFqptSab"), .value = IOV("hjNxsIoOTTpNPqWmSapRhg"), }, - { .name = IOV("dRKygeoSyhGpa"), .value = IOV("SeFGpAbimMdLVcFqZyVAZKZTbuhDDJsPbyDIkOvAbRR"), }, - { .name = IOV("cNqoy"), .value = IOV("tRfrTvabQpHeskyAuqnKZUHOJJMlLBlZAzZdxZpmnknPDsOVPDeXfbNfrneiFl"), }, - { .name = IOV("VKFebAzddIUa"), .value = IOV("sZVpV"), }, - { .name = IOV("LoyZHCxkRLZK"), .value = IOV("UXXkXHBZXqScIShhJmLgZWePzbROtNmMeSXrYzHhloGZmGRWRqlZSNYZGshbGTAnGiOzWBKwmD"), }, - { .name = IOV("MwacSTkk"), .value = IOV("qJEHmqklezWVGOvJRVxpIaSJXePpuTzNpLCZDzvmieJrUXwGJwZYqPNCLtWysQRDfqsxBdatfBlzi"), }, - { .name = IOV("bpOE"), .value = IOV("cvnwRJXwjneJtgCXISNW"), }, - { .name = IOV("FQRncp"), .value = IOV("mvWwbferLaAFMS"), }, - { .name = IOV("wYSjPcsvbw"), .value = IOV("WPhULYaFmDDyhGqyJdQCTUALJdNNcitXdWmlErUBOaJ"), }, - { .name = IOV("uDEvssdaIGVzcIbyslu"), .value = IOV("jPeqGIDZmPKZficlcqjXokhqRTnWCjhjIcdnJTHwkuksjXHcLlSmWND"), }, - { .name = IOV("KGldjgZCMBcD"), .value = IOV("BIgVYGHWEoAHLjXfQKLtFNjbdASILyrmUANvWZkQLrQHrdTiyACtwxzJBXAJLBRC"), }, - { .name = IOV("VkEdzCUlqzUW"), .value = IOV("fgStFgdeAwpPzcUhEjnALqNSVpyEQLBCPhLanKaLqutntzQXVjMPAOQzRDBOtZFuMoXMEjrdsM"), }, - { .name = IOV("KGXwlJwPKE"), .value = IOV("uqmyEQhYiron"), }, - { .name = IOV("PgbR"), .value = IOV("NQwuliMNAjZLCgHHAywIzbsfOrxCZkJOlandOhXOKXqclUq"), }, - { .name = IOV("KLfkfqPI"), .value = IOV("AYOhkyqHqLorIPzLgVNLXevoPDMjAgrUDMWDSHPqMMwSRnqoVvedwZnZgZJXcfXbACsGqpmTwvxk"), }, - { .name = IOV("fBvC"), .value = IOV("owSSSFJzz"), }, - { .name = IOV("pxRUKEIxzSJzKxY"), .value = IOV("goQzAkTDFcUQqiCvPnQnDaIEzJXjHVlqeVWgBjdXfizEHpViiXtgkHCvVPJyHCjIEELqVMDv"), }, - { .name = IOV("cZnm"), .value = IOV("yEudljmsBvuifYqnmwYtXyCSDBWPPjHPDSbszRQqSxbvhtCfdIjgJhnBdtqWiawiesn"), }, - { .name = IOV("jTveJMiSAS"), .value = IOV("LnMcwseTHxcNzeKpWSfmJMQtmPGRCDCSYUSNTduxMyDvriskZyTLrD"), }, - { .name = IOV("BcDQPsnoCdHMZkhiDr"), .value = IOV("HVyBxutFbuYVYUmjiqnuAcVPDOBYdoykLzyOXBcKeOkLhMZmGpTCIQ"), }, - { .name = IOV("yBsEM"), .value = IOV("KAUTAoxOMBXQLwlVbrWXtXZzuGOXnInORyaYzPPHPBTxleZqIphLtkbTWHxKaWOAP"), }, - { .name = IOV("QDVSmhEldpU"), .value = IOV("hUEMWebt"), }, - { .name = IOV("TKkQaZZQdWvCsuTcc"), .value = IOV("qnhQDoPbXfjZbueBTBktdPrBpKNtflfJcyAyCBRzkkNROKsHSPFhSfNLNvgIctLoVMjUkIHztqpAU"), }, - { .name = IOV("wWjYQtkDOWfPjV"), .value = IOV("FblpSSDYUMJEdoGoCkGuJAPhmYuOqcorGwjQBeieYLTcxavHfCcRsSGabhxYuWbFV"), }, - { .name = IOV("D"), .value = IOV("FfInZrzJXxuwhmkVNed"), }, - { .name = IOV("HUyac"), .value = IOV("yjkNabbELOuRIdsRBFbOrasPbvgpZCBqUHuLOeVPWJJWhndeAonhAquXnuYaYSjdbyMZJQjMrux"), }, - { .name = IOV("MWflnm"), .value = IOV("ZfUCcPnIqfdXQefBPNxxPUpZAJtFUntchDblLumcIbDkBWeQ"), }, - { .name = IOV("RJk"), .value = IOV("cVlGJBxvZSvjrMuSGFRD"), }, - { .name = IOV("rIVnZJBsNimXuhT"), .value = IOV("ZbztlGhbxqmUFKssoSCZgeoBoTMRUPFspaosBPxaOKtiqZSnUHDxraCFxgsGEy"), }, - { .name = IOV("NLOgWWWXJEhFD"), .value = IOV("sQyqEKUmKlYCEdPnWwSNjeSFrXazeFYMPYmQuWRIVAICJEQHLkBc"), }, - { .name = IOV("vfUPSAszXLPdJCS"), .value = IOV("TBBdoSVoTswfsZeeuvYLaspNWaHPzQIjtAZShUWKC"), }, - { .name = IOV("EXBtad"), .value = IOV("pWIkgGlSAPOPbxStroJvHJGdQLDnaXBmTbbCIoCGgujRVWzBWcXeykesHpQXkQFFHItUAhm"), }, - { .name = IOV("vVYtFrrlu"), .value = IOV("qzHtdwiWZOPFAXRCuJRwfLYtPFuIKYwwBgrYpFMxeVUYusemUie"), }, - { .name = IOV("DBhTV"), .value = IOV("OnUuAIzZYqOrfiYBqxVbOcYLe"), }, - { .name = IOV("fdIudHAtCtHLrmksUK"), .value = IOV("QMjsXQhlibtkeJEwPHudjmBjFfMCvXNqb"), }, - { .name = IOV("oIB"), .value = IOV("tppmocCBWkYleltQUzviEZAgAxJXLzJarbGNIXrbGea"), }, - { .name = IOV("PSUjvst"), .value = IOV("cKjd"), }, - { .name = IOV("XpeeemNJcuFqbI"), .value = IOV("ibOHcUj"), }, - { .name = IOV("ErinYUXkncaExDkM"), .value = IOV("GWYgGprXwaWgnP"), }, - { .name = IOV("pUYd"), .value = IOV("GdNCXOTFZCyzRejsiDpzRSrpULHdrHVhZEwBNRUxYilhikmXIQAtJKCv"), }, - { .name = IOV("kXVzAsvTFcVKFcClWsmA"), .value = IOV("RwyDRsNPwEreyezpdM"), }, - { .name = IOV("yifyh"), .value = IOV("DRsvJcfZaJiQgzXKuiWB"), }, - { .name = IOV("viLhM"), .value = IOV("vmFoDmnnGSplnhUckudebXfePclvEKytHDoCUTPJLRt"), }, - { .name = IOV("HQsVG"), .value = IOV("ufdINwBrgXFoqXHOQUpMEVYIYKHExEXYPkcNJZlTNLIBPZIYTTkozQWsFmdIqDPV"), }, - { .name = IOV("oIxpCajzlWvwb"), .value = IOV("AvrqQZAtnAdetfuAgDcjaAEADrvjCizqAZHJuUxyKDKSHuRuaZljEcQTDHgxMWgFjnEM"), }, - { .name = IOV("gTYEpEwQGFCNG"), .value = IOV("kUxuUyksefFRwGrZnsOrbEFVZyogaIlYdFeSoQkmAXyT"), }, - { .name = IOV("BetNwbjdENtnIbecN"), .value = IOV("ZvGzjCQflsesYmNLKsWCFQOccudEvmvqaykPbFfQBsbcvgRoY"), }, - { .name = IOV("bRPrkbomxNVhGwz"), .value = IOV("xOLy"), }, - { .name = IOV("oVExAUnHic"), .value = IOV("YosQiVCNyTpkJtqXYdcHOykMWVIsOmNLxZEFGmRBsnztTZRwZSQtVubbTAEsCoKRUdwyhQN"), }, - { .name = IOV("CIOtBUpz"), .value = IOV("WrvRgwO"), }, - { .name = IOV("obaPgeuKmAZJtNey"), .value = IOV("PHVcxVSiAdFDzNHLdtBEZsKBCt"), }, - { .name = IOV("Tlk"), .value = IOV("QGqDhiTCiWxMbc"), }, - { .name = IOV("LwpLtiFkYp"), .value = IOV("wKbSiBdIxZYMJrLFasSrSxiWUrPOyYICCwKctRkOzAsxrzfHAHoBQUiRxf"), }, - { .name = IOV("fRZQyRSlcQWxjtBExB"), .value = IOV("mzajTFLwpWAfYXHtRZGodMDJXLvOORvaQsxJwiMVXbHUABbavG"), }, - { .name = IOV("IhDNJTbUVMR"), .value = IOV("KmbnqlAOnKCtpbMygiaFiQxdvaJbTyhhaxNxKJFLtBVOdVhgnWGRKSwIQExETRyFKGSMw"), }, - { .name = IOV("YvjdkZQiCcbpBx"), .value = IOV("HGQncEKTgolRQfrfZvuKEFKZqasEPHcTmuriOd"), }, - { .name = IOV("UznYtWEiABE"), .value = IOV("EbgFHERBzTzJiMHNJNmkwHRHIsyqYHjynErLKhogiVqwWtIgfM"), }, - { .name = IOV("YjhQtFoaTmRouxkJ"), .value = IOV("YHWxUoMXdEwyCDMIaOPGngbPyaITKoShsPwMnUksiEoQOYWdhgS"), }, - { .name = IOV("MUmMtFuvyIOfmuq"), .value = IOV("mnxraQWXmqrethFKOoNJBFlnCIWsjJagFBsXFVSzcYHQSELhhbiQSHcAq"), }, - { .name = IOV("EbPyWdQySxzeSrzoWr"), .value = IOV("xEhfGnEGkDDbhhXsCUNPAXgiAkIEAiAMkCHeqmkVrQltBFwnluZAOpFtyXPoxfZHWpGkBVI"), }, - { .name = IOV("K"), .value = IOV("cgUShvWzSeomPegZVuYVtPdYMlZQxRYFjjSLULKz"), }, - { .name = IOV("OIjnhhTy"), .value = IOV("egAtjBbOYoxePgtbBFBNdzTunJqLdTwsizAwxTZQmjpUgSyFHbBYynPs"), }, - { .name = IOV("izvuKBEdBmalJp"), .value = IOV("aKYbapfFcEYyRHiyrzlteLijlctxafqoGzASG"), }, - { .name = IOV("bcAaEgYzJZHbTPBsPGhF"), .value = IOV("xL"), }, - { .name = IOV("eqjnGXtqqSvNneUZ"), .value = IOV("BuplDTdZCVTCwfqxYHhmFVBAMVKwRWszCNIlBaDShEmFGGMKQcBTBRfCor"), }, - { .name = IOV("VjQHT"), .value = IOV("wbsyAZjCWqK"), }, - { .name = IOV("nNpXIYUG"), .value = IOV("cvNmtQFAIOKHaBSziJansReJwAjdLYCa"), }, - { .name = IOV("Gq"), .value = IOV("RVLNeZWChAGtfimPMUyKilZtKAmEEkLaubCQQYEhbHZAhLHCsznFdAQhEqpZkPbhywrQyeCCfiSgP"), }, - { .name = IOV("IZdqfsJGEil"), .value = IOV("rQZbgiWJBlVgclWaonDpHLZiwXfXALFMgKraIKvPLZVmvAaoAfLkbHZMl"), }, - { .name = IOV("uBOTEy"), .value = IOV("dkuNTUIoXcODdkXirLENDa"), }, - { .name = IOV("JNDDMdRlcsljSbkGc"), .value = IOV("SfSMFDUTKaSkzfNhDQLFmbrnPpAhzzqOjrDjgYlyGkTiMVGTOyGJySbDnRghhMULS"), }, - { .name = IOV("ZvZV"), .value = IOV("aDrXUojMKFCsAoSaDRylAnnhXyFdIEtyuDetCMJLIAtwbjNRzJDzGBnyOCDeTkwhl"), }, - { .name = IOV("eqzskdeKikRH"), .value = IOV("mwWYYchHEoMHC"), }, - { .name = IOV("fcfgDBVSTmCmSjUl"), .value = IOV("QKdFZCZHFpkFP"), }, - { .name = IOV("JIWIUoqsikTVaorrkJ"), .value = IOV("XWIVCLVnEGjRdNuRVpkNwWqDDOKfQNyeGWoDZePbLU"), }, - { .name = IOV("yzwFU"), .value = IOV("zpPmDhrIcPfCEK"), }, - { .name = IOV("AcEeUViXAulHRyrZ"), .value = IOV("bzjVnroHiVOPObuQayMkxnTWoMgncfNEIoRMYiPGmNLmRStjOwNgaRLMgDeTFVcyKeESBNwvZhgaXSCz"), }, - { .name = IOV("vVoZCRztZ"), .value = IOV("ZzUWzcnBRajzZsPIpKAJBKEgQOaIytbOPAJUtmwcMmdTAmsuYWFGGNWFZAoHcGwVoThmhNjp"), }, - { .name = IOV("aXEJncLnwsPWalooKrW"), .value = IOV("sYNaLDxxCrwvoEOpjIxkLSLiJEsEpQxmmKbqXupLJkoccgqsCkoMbc"), }, - { .name = IOV("zyv"), .value = IOV("zEUubbtZefGnikCSe"), }, - { .name = IOV("TdVeNYWr"), .value = IOV("RtDJVvEaGEhZZWsBKEoLfIbOHriMdhnuczFZjdCcxZgrAgGhtctnJIcXHDBOumdKYBBthtgBeLAcHNY"), }, - { .name = IOV("qNLT"), .value = IOV("zltsGMNMRtvAiVNKIOxoNqCiJQDooedClDmeHkgAOgsJMMMmvxbnFeHW"), }, - { .name = IOV("ynWpksIkbYSPRKEL"), .value = IOV("zaZNCIoUwdKEXRTIVWBEeNRtPDrMvYJEBChWUGDvmyVQWjerXjoIaAkW"), }, - { .name = IOV("MUwnkFfOP"), .value = IOV("TonciiYxXRHMDqhbe"), }, - { .name = IOV("CKqVapGnY"), .value = IOV("uPklfbeqRoIFAfAQNNINaSlCCXeXnqCKzYUwoSzngCXjrYFUNQhTLHDMpXOTsxCEuAACB"), }, - { .name = IOV("m"), .value = IOV("pcqIZlzAtgYpXBoCmaEjhj"), }, - { .name = IOV("zjBeuoOvLpRXPluqLxx"), .value = IOV("D"), }, - { .name = IOV("QCFnqNVHiEWUSCe"), .value = IOV("foLvlKetpmxQZtAVyHGBFnEXIuFjOAOtVJUCwGsSiBFiCWYOYhKevdaZAmAMaUMKJIlffjsBNwC"), }, - { .name = IOV("wjJCQgKlspbysPyy"), .value = IOV("dfThbyrXbCliCmVtkkXApEMMYPvMCgckyehNCvucbPYXWpqGxWkdMYyWXttQLPYHTmPgfyQHroJCNmq"), }, - { .name = IOV("ivXfxctVCJyGrVMJD"), .value = IOV("aldZjTqyRdtYmOh"), }, - { .name = IOV("YIFcK"), .value = IOV("BPQeezuIsoyYpPGsywohVcPEVVMmCXYpkJnDntUIukaJeoxNfkinljMo"), }, - { .name = IOV("XzwincMXrNqdsql"), .value = IOV("IdYTEJrlFMavGEvLGrckYryAGdldmWWPdvsZCIlTTzY"), }, - { .name = IOV("uWWLVRWNePrfKHmmr"), .value = IOV("DhYmpZMHVVcfvBTSMAGffLGuwabjIuttRvMUlbjuvlXGFdcpLLU"), }, - { .name = IOV("TpnqztplLw"), .value = IOV("XFZWVJadMxjVHcd"), }, - { .name = IOV("vtLxU"), .value = IOV("SAKULlQpwDvBjXzFGsnGQpFpUzAiRjDcMmtLmNltWuufVKBJfrNwaCdEhwjTyMxCvpfPjYBZJmMZVvUR"), }, - { .name = IOV("bi"), .value = IOV("CjghrPNhQgzKdTYDoBGoQYmIYutTWTqVdmUrpTgrdxoZKwmAlxMCAMqkSaThwncoZHZyOtoK"), }, - { .name = IOV("AcREd"), .value = IOV("HWRuHVnvGWMlyPktkogiqPOlzSAWohlXrmzyGeiCsMjjXRaTBfYVzokiqhpFArISiyCTeqQvdl"), }, - { .name = IOV("jVaeM"), .value = IOV("FsowmUOnKTiqefmhx"), }, - { .name = IOV("L"), .value = IOV("BjIJRzuoLqlojBDjub"), }, - { .name = IOV("QsCvccIYyueOa"), .value = IOV("lQZqrZpVwLmhAmZsrGQotHMYgryC"), }, - { .name = IOV("ypoqjtGpAGQbAWNSue"), .value = IOV("UNJJQrzWHjnLmcxrYeYiXfZKvbkx"), }, - { .name = IOV("vfORaq"), .value = IOV("zBb"), }, - { .name = IOV("XFHLulPjwQoxt"), .value = IOV("mdOVPfDAgUVxKFxGFTERsiOpBMxvLbnGVzBIvbqooaMVSWxYWYfakokWRqBsVXxzG"), }, - { .name = IOV("QKYMQqwjEBoQGOy"), .value = IOV("XJTeuUDTpfpCJabdSdamCkB"), }, - { .name = IOV("ZrgEmfNLqUVFyK"), .value = IOV("gRmMApaLWYWjxSICfixrbhi"), }, - { .name = IOV("IhaKiuVNXc"), .value = IOV("jWhoJrovBpyLWPPwDLUOZOEQqyzLfWIFwjQWpiQMzinTlZbvjKFZlBIwhVqnGuuuTEGtakTWvGRVUX"), }, - { .name = IOV("bvPPZ"), .value = IOV("jKPsnHcLwZlcXdBIjlDhWsKWhzTSWKrgKnTLkQwKxsDJQUO"), }, - { .name = IOV("KuFtFJsk"), .value = IOV("rWgiqQRghBCdujxpcndyOabbsfmykIeYRwgGbQjhR"), }, - { .name = IOV("ajlyryEGVBxsu"), .value = IOV("KWyngGezwpcLrKmBqgSCZpwmdJV"), }, - { .name = IOV("EPELuX"), .value = IOV("poBLXeqiGisrJLMehGtmwWxNugTLTWZXJznlEhAUBkTRqzEHVxdvwFMTZHIxgdVtWyGIGBdkL"), }, - { .name = IOV("hurohEuznHoYIFWDQAd"), .value = IOV("KbVnuUfGcPPCJmMGhUIwrliYZoqxvtsxbBsAwUOzzCSMMvoIQHzvzWf"), }, - { .name = IOV("kvADgHepr"), .value = IOV("NtRnRSpMQqiAVrTHRCJGMPrOFzCeAzDFJrpeSqOKFxFsROfMseHiob"), }, - { .name = IOV("oOv"), .value = IOV("gzmadtqnQrsJiFjXOMlAPtNzsCfscmmmNNfSFcb"), }, - { .name = IOV("LEaSVkDMjU"), .value = IOV("gcIvAdiZvlDnpqTnYinAtOPVqgNdBgbqCYInhvDvbHWvySWlKc"), }, - { .name = IOV("CCFIODZGsAhulcAvvVP"), .value = IOV("pSgbHsGVRCKGatVaSOJyWEMSYCSAmBIVizgxeziyYWYvpMapviJFrRyUqEkHHYrgd"), }, - { .name = IOV("HysXerUEWwFvQsjoXXPs"), .value = IOV("gSMElrLAOAozxcDUzYWsdgWVDjUCEEKuDYYOMfZGSUPpElGaBOIxNewpI"), }, - { .name = IOV("N"), .value = IOV("XMKQxgWAXXahAeDLKCclpUIzJJCJWfMytnJkq"), }, - { .name = IOV("wUqADUssoBCdtHZfN"), .value = IOV("OwwMsTWqMZYbpgxiudeHhtSKxZEbbtJWIhXxEBprkdKBzOMGsKnoMRt"), }, - { .name = IOV("NKTOhlpfLQUmp"), .value = IOV("fQbnPcqcEyFlBJTXQ"), }, - { .name = IOV("oGMEdGto"), .value = IOV("QSvBRNJ"), }, - { .name = IOV("HBjp"), .value = IOV("rGAkftoFnAiHfhvyxRWXfUwEOwvdGFZYjlhJCmctzddekGOYTezIowkroMRQaRXuFykfeyTiwFPu"), }, - { .name = IOV("riqYjZacAzn"), .value = IOV("uZlbEujvSzbYJpUzkdzWmPdsoRdwUXInZLAdTL"), }, - { .name = IOV("vihtOzJ"), .value = IOV("KbHZOQoIyqOaFsjcXdgubbvKUqDOwdUTPcsXpgReQfEVgPl"), }, - { .name = IOV("PB"), .value = IOV("ZgrjMqy"), }, - { .name = IOV("JeuWfcWEQoGccXOj"), .value = IOV("NkEQlqEUwnebcvNxSKwazZBpeLcJgznUklFydumLiZelwpirTULoSLouoAEQfbaDPwveuaVR"), }, - { .name = IOV("ihHjUMmUJiXQp"), .value = IOV("plJLKXBmZxRpdGbEAIKhQS"), }, - { .name = IOV("OOUIdE"), .value = IOV("YRDsLtTuLVpwBEKcUZuqr"), }, - { .name = IOV("I"), .value = IOV("HLZCfOlkuPhNlHRKaNpANUUHwOrCIUaIRzSrEGcTRADaFQHyuDYTedLFGRveZJwuRBcciDrCB"), }, - { .name = IOV("fVRuEjdgpOpjpAzDJa"), .value = IOV("cPvgxZWmPpVVAImPgGTWZtoEZMhdRlxdrZM"), }, - { .name = IOV("cHQmosfKmEDAzgRSjuGT"), .value = IOV("iQndArxRiBNSXZeUoEkeFRtYcLBMqxwSfvWVJRlPYSSdRLEolqwWCfzhnKzZmaDZZPbZXYtUNc"), }, - { .name = IOV("J"), .value = IOV("SLkcJbHOjMMWwALVKdpGhBoDswxiVPcpfPEDJXCVpXVDCauPTuJdCSFnyifIDjHASLPYssX"), }, - { .name = IOV("JjiNykV"), .value = IOV("bCLuJSiegbprmuvjlTRnXazmJRANPwqnF"), }, - { .name = IOV("ARneznFZ"), .value = IOV("LAZUsJMfsVnMNOJbegPktCoAXKUaNHMvWHSfdJTgdMek"), }, - { .name = IOV("IR"), .value = IOV("RXSIfmQdSMhJRcL"), }, - { .name = IOV("x"), .value = IOV("KdyYAIIOJvJrDmibmZGhYrHnnKvyhwjZwHDTsVvTgCRWLtLCSOCYvYgWYgvCPAzZ"), }, - { .name = IOV("l"), .value = IOV("jreMPygQPpjWYQWwuXJmjUnHlpBqejtReremNidElH"), }, - { .name = IOV("ZaqmouZdamv"), .value = IOV("eEHzdHFdlJPwtFFcmGahnqcCsKBMODmIlOGwgIVloGHwhalkQPYohLGzsivOEmfMQufaDa"), }, - { .name = IOV("JgIFiyJWWz"), .value = IOV("wpMLpSzORwNDzVbIeTMQuxBrzkWqwiJvmhSIOyUJehEyxNXlQDlpYy"), }, - { .name = IOV("bkzqKRARwDAAyRsnQPwz"), .value = IOV("i"), }, - { .name = IOV("OCeIDTUN"), .value = IOV("tnfkDxIoxgqhR"), }, - { .name = IOV("hNwwRpXZcipVfa"), .value = IOV("WdHCOzVR"), }, - { .name = IOV("mQ"), .value = IOV("SafFUtdFtzyfauet"), }, - { .name = IOV("aIOnadBqq"), .value = IOV("kajseSgDmdMHjVttBEFNhfYaXTXnQoMIfTfsuCvPvCmLpZKTjVkxkEkeJHOfmtYF"), }, - { .name = IOV("plxbJVckHcawTUQrq"), .value = IOV("drxgJrLpaZlFzorSzNPXWjtvinrkYmtTKZCyiwxgxJYOMhTvPizRpXKlAWLsBGcKMKYIi"), }, - { .name = IOV("ajgWbLCD"), .value = IOV("IyVRuLyaJNAsFWLXPpgNlwvXwvQrUBXyGffDoBSWPmmY"), }, - { .name = IOV("vLD"), .value = IOV("YPHBvUNTcQKkByHOsFKolaJvKcyeplkiWFtxtMBOLNxfKGiTPuCdJNBCmMJdedWNuSlq"), }, - { .name = IOV("xhYxwP"), .value = IOV("EuPLJwpBAFtHtdccUcEXmkcImn"), }, - { .name = IOV("kz"), .value = IOV("ygmJCvgLqjXUhKuePKJByemeCzHWVmNzLENlWPYlPkfCkuYsjtWcYRwafiTOrvQ"), }, - { .name = IOV("uKIordM"), .value = IOV("uCJjCXNsepZNqASqDTOnDOqcRcku"), }, - { .name = IOV("yKgGRZhkA"), .value = IOV("VJDtGcKEYYMINhmPJFPXmHHKWgiROTheNHpnaSJoKgubUbPtQpENhbNkrSEISRXWYmAGgkhPbRxTdw"), }, - { .name = IOV("buYgEaoQCeAweh"), .value = IOV("nENVjWcoHrVteLpxpOgyEu"), }, - { .name = IOV("InzoWVOVYCcaippGtRhw"), .value = IOV("PjhcKPhPAOZRESVRoBPdAf"), }, - { .name = IOV("kgcqMMt"), .value = IOV("mnqhgWIpDfdzOCjPMtQvkqKwpLvhElZSpexnWKCDuQnNMZZUVkkvfVlzD"), }, - { .name = IOV("vhWDSlcPNtflmJBO"), .value = IOV("llCVRkBjXDpJPCTLZXEeTiYJjOFv"), }, - { .name = IOV("PDpTQE"), .value = IOV("JX"), }, - { .name = IOV("NMRYcwR"), .value = IOV("BXEjYqugrOEewswHUakdGWgkrUMtWkIztOhXQiztvXBlzQSiezDDNRkvnaYbCPxDmrFkgYHKjiFIl"), }, - { .name = IOV("TKvAZetzXue"), .value = IOV("yhvgqqPFbotaBEkYCVTtMLVpnmsxlzxLh"), }, - { .name = IOV("EfrlQUyvEpLStoNQG"), .value = IOV("oQkCKrlLhUIXXKnZViKBtekDpEr"), }, - { .name = IOV("xGpHblIA"), .value = IOV("ZXLRYPsZxmdGXgcUtUeMuyTuAuYRbiZMXKByLvdAkPRuiHIuNixgMXHV"), }, - { .name = IOV("SErZ"), .value = IOV("GzfuNtKORUUnqCdyuZNapEUyPLARnCXxbhChidbQWzGGfEuyxymMPiDoqSoImGKTIEfrybuPwv"), }, - { .name = IOV("bETXoVCyiStBXqp"), .value = IOV("WJgpGmfanVXQiYtUbX"), }, - { .name = IOV("plsNLswUjmXCf"), .value = IOV("JfqypkgjVKrXchmQHMgTTyQDWykGZldJkzAGfeYtyStsQpiMENOFatYYb"), }, - { .name = IOV("TNBjUbroJabHkPTo"), .value = IOV("cvGfYbMnXexWBMiuA"), }, - { .name = IOV("OUlYzagByoAQnCPGuM"), .value = IOV("XpwEDfsAyAodwvUozntws"), }, - { .name = IOV("TjQHhX"), .value = IOV("NQqkBVpHRfnCrvsKfogvKLeYUfgz"), }, - { .name = IOV("kQTiAGQoPNcNSfMbgNzr"), .value = IOV("DyHnGpxqFDeVVzmMbskEGFlZoexhIwIVIQrtFcSnNYLGomU"), }, - { .name = IOV("bLyaaSjFsEDJqTJ"), .value = IOV("VYmSoQdtEdkrICwrRljGPcFPWlyerqLka"), }, - { .name = IOV("bziUI"), .value = IOV("mRWCInootOYRslAblWeIshWCoXvZZQWPUbFPrIrCrzvvDUjtRCIUmpKStLfnWEYgBZJCUxaHQw"), }, - { .name = IOV("K"), .value = IOV("KapgMOoQlUfGgY"), }, - { .name = IOV("oxlWIU"), .value = IOV("dQbTwCMiQClGPEiIbJIPdEEDLJpDFGmXckuvZPocSlFencGhxc"), }, - { .name = IOV("wwThplzn"), .value = IOV("OcgniIxBnIuNUwFAbIPHUydsYmvIxGuXAJxRrEUmTwIEG"), }, - { .name = IOV("spEMLvW"), .value = IOV("wkgwBVTlRgztQkbPzYCiYMVGRcRKeVU"), }, - { .name = IOV("wuYuwsEWHiGSKnxegIE"), .value = IOV("oeMMHCWaTcVUrSnERFTSAbYdOyzIQlDcNnuRRXhVhJbvSIVeXHWvSmJVOZ"), }, - { .name = IOV("epYPSYlW"), .value = IOV("jhpsklTdaPxq"), }, - { .name = IOV("aSOGpFCqvESUc"), .value = IOV("tzFMgTHuMxcGUwrZxIttlorVyySldHtEthWyHokFNkwnAajjXWD"), }, - { .name = IOV("mQjygSeqNKbgtkTjWOpU"), .value = IOV("QpoUgOFFlCMZWRNcnsQQqGwWZsgVsrdb"), }, - { .name = IOV("hMGgEAbxTnyGsblVYU"), .value = IOV("ApkiBEgRwRQzPvgGzWWcWXDwYwMHTOzIGrYXOceZEgWwmfcBqTgIdsQnVrpGQTCOppjFrSBKjf"), }, - { .name = IOV("lQotzkrU"), .value = IOV("ktDVWtKrkjXoEAKOhoTUgIVRTXHTloUYLhUZYVacT"), }, - { .name = IOV("fjAopsnnqBVqyYyHmhD"), .value = IOV("INxbIWWxUncnBKCJaMRZkWtqJYbJCsYBSrlEkIwDrhsCtr"), }, - { .name = IOV("zI"), .value = IOV("pcpnLZIAjbRUBVKOmpoAnqqVsuRAjlkEVqQHyTQeMExH"), }, - { .name = IOV("EMyErtZLlGzhKdJDBK"), .value = IOV("vGwMOlatv"), }, - { .name = IOV("UXHZeCCRicT"), .value = IOV("eFBbtsMFTiemFQiPQGpnvkhbbqKQYzjazrp"), }, - { .name = IOV("ik"), .value = IOV("syqTTupkCSerUxXxBMnvszPphulemPIGjuqA"), }, - { .name = IOV("ZRRxAUVGwDrNvZ"), .value = IOV("uOuBOICpOZdJBmRLPuOpkYwzohJBOgtPakjckvsFCcBfbPeELLWQPxoJdgTpPmlxg"), }, - { .name = IOV("QJhGDuBvfiIS"), .value = IOV("QsPKFhhhrgTxaxRUKdZubxItMa"), }, - { .name = IOV("uhOdjYAJWKjNRxXMYSyw"), .value = IOV("pE"), }, - { .name = IOV("OBJVapOOzzKjfFc"), .value = IOV("DxLjTJJyAtYMmxswGliyfKDjGTPdhczkzsXWSfgBNYUYotTIiX"), }, - { .name = IOV("UOgTXncLm"), .value = IOV("obTOcEgPgVHAibVmsfvtZiPCRFUVJpWuxIgrEcfJySoeiLLIVnZcQkvAhYFfVSrCxmPBDbImYs"), }, - { .name = IOV("JKVbCvkClVqPDR"), .value = IOV("yDw"), }, - { .name = IOV("mfyvzQsUPbSxJDkL"), .value = IOV("Mzpy"), }, - { .name = IOV("YJVwTMwVZqA"), .value = IOV("mLOfElX"), }, - { .name = IOV("BCBZLpkfUHmUIC"), .value = IOV("ywpRDmzBTtXStygeSqClS"), }, - { .name = IOV("yGnjxfudLmq"), .value = IOV("AOcTuKCbalsPexVducAcjpesIMtQdDbE"), }, - { .name = IOV("IbdnWEZZKXRkuHRf"), .value = IOV("UfEZqtjAikhDPogScWUrlEd"), }, - { .name = IOV("Vgp"), .value = IOV("zgdoWqmTyAuvQCUILspDdcqvtRouRQRPVTuBpz"), }, - { .name = IOV("aQCsxPCpzwOTNtzyZOT"), .value = IOV("DVSHIwHYyPpvarBUxNLavzfcgyHdsMOCqxacdmqtLTaapAqzYhNYetAPaAESO"), }, - { .name = IOV("pvMkkykqZRiGLeZk"), .value = IOV("HRhBHZnzvMkmrEASdzstfMaUoOtiaGcBDYYBrIEexppijAoCj"), }, - { .name = IOV("RsxVM"), .value = IOV("bXjmwN"), }, - { .name = IOV("RnDuUGxIqlN"), .value = IOV("KMjMKuiHCGdFJicoVMmgGeqIpUbBhXEZqlUXdOF"), }, - { .name = IOV("yoKSQhEPSUlhxUrbC"), .value = IOV("yLdOAwNiocQrAcZRpiDVNKrnkVXfgHgGliOGNFBzUPvovJVcgzVTlpyvRKEOsLKXDbnQZuU"), }, - { .name = IOV("MwkgFnsgTgaSSv"), .value = IOV("zBFZqSXqUGLmvdXySffHNJyudnYwSBtSdVKYcbDGukSZyaOmKUpPrWxDlKJVrfvinOjH"), }, - { .name = IOV("wZlnDkAUv"), .value = IOV("gtWuWlxyoNhKFWgeiQjKBrDfQBqLJfHnYsHWvNjaGqEWSuyuUBZwIK"), }, - { .name = IOV("aFz"), .value = IOV("rkvEeikfQgZeraz"), }, - { .name = IOV("PMpvOIurlOGX"), .value = IOV("ajxYZfSKLljERnSsJQhFaINeVQMhuMdldKYqzdLgKbnIzrDWLZjTv"), }, - { .name = IOV("GRFrvC"), .value = IOV("YXAYpFNNEIhxjkeEDkPQdk"), }, - { .name = IOV("muzmWEDOEIwd"), .value = IOV("ELfbqxnbzVhNsrMEOfuXklmpblTIKDx"), }, - { .name = IOV("JqcEOavEgCkSEOAJPf"), .value = IOV("oMEJQaInAXVLMEDxGIkMWbL"), }, - { .name = IOV("almDQcCquA"), .value = IOV("eeqCoMOrBkuTzIqsGyKvdRCDawPoTHxJHJHBT"), }, - { .name = IOV("mAztQxGkGrXTR"), .value = IOV("dvEDKqCvoxIgSGKboBoLKEHExFMdRDseFKijQBHNROLPtNxsEgmvsBxjWCOMNiuFmEl"), }, - { .name = IOV("uaSWbPzGyqRGoZRv"), .value = IOV("jFrPiAudCPDl"), }, - { .name = IOV("EPnv"), .value = IOV("CKsHGaBKlxZtIWoJSafBtjWECUbSYJGpUiJStPrEhgPcEfbUgMRXgxi"), }, - { .name = IOV("vVZSHopjuASEBktRiwP"), .value = IOV("bjVjbeCDPekSACnnXURnZklJiplRThQQtdWzYEVtousNpQhIeoeQqZrOjtZr"), }, - { .name = IOV("rbgNpAw"), .value = IOV("WcTJxPef"), }, - { .name = IOV("zvIOxJjkEtTZeI"), .value = IOV("dCkJAtEEGYObkOSlhAQIolrnKFYEFPPuwZtUNdZsbBEpWgVwpLuthrqgZRCs"), }, - { .name = IOV("ljoGXlSLCDcPDbfBzIr"), .value = IOV("TBXvzXxmJQBcWhNLgZREbuKqLxTGbnZGnEVYRFNeWpljdpAjgthpQlCkBKZxnKaaBlYGzBpvLrwZpMHE"), }, - { .name = IOV("th"), .value = IOV("MLzZoyp"), }, - { .name = IOV("fRoxyfQWfpPsXld"), .value = IOV("MgdFYoDGJtOidZzhtKhcDvGZBatVguIOHqQKiEArtxvJyUdQzBeyeIlhqDXJzNeXJgvtAiplyAWxHLY"), }, - { .name = IOV("AeFHKWoFa"), .value = IOV("JtmgnZnpBcMUIJUTTQMyubJcEDsFkfdVUqfdTUwzIluDXyMQg"), }, - { .name = IOV("wd"), .value = IOV("PMXLmMbIwKFlNpyOGKIfsPWVpsIYpVRMMpcQVUupWaIZkxKSzswVSFSfnZzgPrb"), }, - { .name = IOV("KNVr"), .value = IOV("ykgBsuWVFkrKVQsSvw"), }, - { .name = IOV("FSfqq"), .value = IOV("oru"), }, - { .name = IOV("fRfUiotELXBtRdS"), .value = IOV("UanWdVOrhZEYhiFNXROwBnPBTKraYaXFTGokCsWcUxEqGoDzOdaJh"), }, - { .name = IOV("PLzNICFdQnBwxfOFBJR"), .value = IOV("vNICCfEyR"), }, - { .name = IOV("ZhBWNsDLxUQfPdXCw"), .value = IOV("XQeYHfBBrVqpTtWGGvDZgvsHKtEchxjwbjjOraEJnGEzuBZNGyKosBvMjLIOQKZqQihDDLTzT"), }, - { .name = IOV("pEgKdytvcLzYiSPUGcB"), .value = IOV("AkDrnqIAgtPSYorcNvuJGguzPBYMCZfXXVpdixPnCCmoYIVjGItxjwLmcplML"), }, - { .name = IOV("ViAOezOzQcGCs"), .value = IOV("imjdjlRHP"), }, - { .name = IOV("SH"), .value = IOV("qTVSv"), }, - { .name = IOV("GSCcIQpv"), .value = IOV("ogBXjB"), }, - { .name = IOV("XIJcnlgeEGOMe"), .value = IOV("CeerGuKklzWhNTiPvehlnUXygyDgiRvlBpfaqUrcOWkZLjNsndgKDEqMkBxRSpRyBCHLJ"), }, - { .name = IOV("zrVinFjGAmW"), .value = IOV("zhWLIWcJaxyAxFSaLhlInhxicgwEoEtONyWjESEdMITxIkFQtjaoGwQSqlj"), }, - { .name = IOV("hG"), .value = IOV("QoUSBRBmllMgOqizhwlHxPixSWy"), }, - { .name = IOV("ZeNMHBjeeIbE"), .value = IOV("LaWMBhHxHLDEvHQNajsQzioFWVVMraTTskTxLCXEepuBzPyvaaIlJZeCllZfSaNhdKheXtiPXD"), }, - { .name = IOV("IZQhqpadvqnbUgE"), .value = IOV("rWgiSpBVwwuwPDaWyD"), }, - { .name = IOV("ppmyOfSAasDBp"), .value = IOV("XJjHkxmutwPQRNseRFFLKy"), }, - { .name = IOV("mBPJyh"), .value = IOV("AzArdbNCLRbYcsQFCkpHMzJAFHTdEVtjukOVxRsfBwdFEnWHYUJiDBfzdLddrBdNtxN"), }, - { .name = IOV("D"), .value = IOV("rbmIcjBAbpJeEptznRdBCGAeqnrnWZCzUngduBUZsWtPZtmCqqXsfaUDzMUFRHYLbZjzrSerhQGwUAW"), }, - { .name = IOV("QjVinzHzd"), .value = IOV("HKYowUSUzEqbrEoQrGGLbuIJffpOELMMlYCzeXVYGzChBTDkvfoepwnORrOI"), }, - { .name = IOV("pyAvKtEyRz"), .value = IOV("fwYmYiRvHdNyrtTXKedkxcSDCICsTieJYOgmFJfRUBUqHqutSau"), }, - { .name = IOV("K"), .value = IOV("jTMoEBHQaoyaM"), }, - { .name = IOV("FhxtoqXNNjjupoBzfeLP"), .value = IOV("VZGpvUYUVkvMxpLlPwXVtthIGgRXnbpNFsuxQxMtWxkhLMhsKQcKmLxgkHZcJpdTdmJTDpWTHfiNg"), }, - { .name = IOV("vkhjsHIEnCDUIIHJK"), .value = IOV("WeVkiMtrsQ"), }, - { .name = IOV("eex"), .value = IOV("cgoWcKjwkseqpH"), }, - { .name = IOV("TdbrTBJmKWSOia"), .value = IOV("kopSTiDkJorbAHeSDGbXjCXbOPsIgZJJByvWwfpqKmEtJOdjFVKYIOeAKXrrcYtsQAG"), }, - { .name = IOV("DBPNvLSMJWgd"), .value = IOV("heRaJtaPSVumMSgrbrOuGQKWCujAlaiSnUVHEAC"), }, - { .name = IOV("duTVyZiAxnuw"), .value = IOV("dPAxdmoAZeAThLwt"), }, - { .name = IOV("OrlrQsdccOani"), .value = IOV("EszATNyfELQZKNkxYDwtzTzCuZvnS"), }, - { .name = IOV("BvBqmfMOLHIfPpCsQ"), .value = IOV("mLuWE"), }, - { .name = IOV("MQcCgmNfRZPeH"), .value = IOV("hSxRAALZUEFGAtJXcXTOucWxRInucJCNBbXWQBKoDkoiIOjGEwgQnZnMneuJEoJYFkLMmcSnDqgaPuY"), }, - { .name = IOV("JVNLQjpDQhxuQ"), .value = IOV("ysOCFWEwxJgpTDpaFpnSRQiepXLThMnvyORiCERA"), }, - { .name = IOV("csL"), .value = IOV("uHkFGHKGfbaRUjDkMamIgBVPZezYxblaWGxuXVnEEfsHZvXgBxQlogRsd"), }, - { .name = IOV("XlUGEkoHvsM"), .value = IOV("kBnZSHowmzNYRBrdJYgeJnolOJPcqMGfHFECBQUoQWcZWdrZautuIlocUrKZkQhTIAfSlFjBcxB"), }, - { .name = IOV("FtwxkI"), .value = IOV("lzhXeHhG"), }, - { .name = IOV("RkDsECWuJrOKoYabtpfA"), .value = IOV("MYpmATUxQiXAemCDoNeWxchoLcDgnGVvQjFPmoy"), }, - { .name = IOV("lq"), .value = IOV("eYDBfFyalDOGRCmoxjhrMxFbyuNWMQAmmbYEHQJuvviLKtSTkBNLVoJChQxHPOpiFHRnkkSyFFPHTFKI"), }, - { .name = IOV("TazgFL"), .value = IOV("LkNrIqdjmLhsieXWFknahsTPpolbwkXIfkFLtKDKccYOaSeQ"), }, - { .name = IOV("HaRTiUUF"), .value = IOV("gFYBryxUxeLNJUOGRcClZPdjgX"), }, - { .name = IOV("FXfFdeKPi"), .value = IOV("dapCrAIPxv"), }, - { .name = IOV("ULFluUEiFUHHEod"), .value = IOV("cDdGerfnhgMNXhlWnwlIlJsWIGDIwAgyVLjqUYTsRvPwrKtIg"), }, - { .name = IOV("XWOBFRPUFPw"), .value = IOV("eZBoaNZveoYVDURvTdbINMrWFU"), }, - { .name = IOV("Z"), .value = IOV("GnfdCidOblAGdepHkLirlWgPaItxrkoHKMQnawDagtphVue"), }, - { .name = IOV("xibDAA"), .value = IOV("lyyMzxpxsLtbBvExFocHwQxkDqGYFSeEIVlpEevnQgZzPmrixzjMTSMzucewqjGJOCVGoeVJsyF"), }, - { .name = IOV("VbJqLTECkx"), .value = IOV("KBpdPQJehLAptWudVWJLCPjtAfhVzERmxCGDJtiMzDHUgoSTFVgGpHOyzxfHnfWcJObRtNxXIYjH"), }, - { .name = IOV("dteFspNLavaL"), .value = IOV("iyErZfjmXQREOSONVGPriXMAQFQsCljiWRfvLSxGqfgmLBkTefHvFwhgdWeYitjNQDHoBaHaACEm"), }, - { .name = IOV("baRMxT"), .value = IOV("NbtRce"), }, - { .name = IOV("KzHcHXgqMLcRDyjsufOT"), .value = IOV("yjPtNWjfONqDZUqCoiFhGKuHkzYURoNZhOEWVZpMpgNHaeDuXihWbBTXUcyXqite"), }, - { .name = IOV("awxVzGOcj"), .value = IOV("qTlqxJpEhJXVTeClSYfknjghzVDWrcCLFmyRFvgsEtnGbnYntoAirHRlj"), }, - { .name = IOV("kunJFavsQCldeZGL"), .value = IOV("ffiwOkdgjvwYzkQIFrULXVXasQnkhYqiqHZZNskFhrPkYaBlkseUhYXuupLXqmJBXEDxHLk"), }, - { .name = IOV("vkPFmw"), .value = IOV("OdRbpjXMxRUBSdDwyKbEy"), }, - { .name = IOV("FdNj"), .value = IOV("KwrhDMqvWrNQuknLmpbPjiFITEYqm"), }, - { .name = IOV("kPQFtBMrcVvi"), .value = IOV("gCNkBt"), }, - { .name = IOV("xWcSBI"), .value = IOV("CLWoBeghSTMVCN"), }, - { .name = IOV("lUDfoeEhf"), .value = IOV("kOUGDvPLOGiefFJVusqLKBibodpZSMIoAeuzdujCpx"), }, - { .name = IOV("WCIwfF"), .value = IOV("JhNzjTGQrUabodvEmkivYohRHdzrbJLHkufDQByaRLBxPyYETvVGaKbjfTBi"), }, - { .name = IOV("bMDODzNyntEzdpwP"), .value = IOV("fiiXrUhbyOPwhxDPqgOyHQLFqzcujARHnieZJlHcjtdbhAtHaArdCQBabXwmKRawrGUrGbBebnvymY"), }, - { .name = IOV("yrZvqjkuwk"), .value = IOV("mkkQSvlMfLWGhEyQhhlMtGVMOQJuFEdnCdHFeqEajjqyvmOJ"), }, - { .name = IOV("PH"), .value = IOV("UQHTKwkXcPfjMaWMyirbZAuzzPwzRcDBEeqsMiiayRPoXIWDDeevNOdpdBzWaBDhh"), }, - { .name = IOV("UtHHkHiklTKmPMgDBa"), .value = IOV("VcBalgGsMWtVwpcBStLPNpOzVrBHXbkWrDYOaarEJk"), }, - { .name = IOV("ckgcGSxwe"), .value = IOV("lzaEGCjQsjMLBPezdRfZMdKLhqAXfJzGeeJAShEjtKzICKrSSiGYKlrdKUF"), }, - { .name = IOV("CFE"), .value = IOV("NAalsTmKUSOLKfptxGviisAuyJVFUkYnlhHTGoEUMUZcZeFHZfJKWeaeGClXXO"), }, - { .name = IOV("d"), .value = IOV("mQvUoLdLwxLDLztDgwoqbQmGldkKVSCuOupW"), }, - { .name = IOV("cADcwITsUXk"), .value = IOV("BWHuPEj"), }, - { .name = IOV("td"), .value = IOV("nwQYAvzKD"), }, - { .name = IOV("wVSUquwnAapsQgtF"), .value = IOV("npEIXtDiFoslD"), }, - { .name = IOV("QoDeQRbxVfSgaCKyTva"), .value = IOV("zyoJOgaKTNeVU"), }, - { .name = IOV("TjpPxvefQLWEu"), .value = IOV("zRhFehFPGCOeiaxmpaytkYmhkOpoBjLrCDGwTQjbfiPGRpAQoiWlnFasurfoCXP"), }, - { .name = IOV("c"), .value = IOV("rrcMEdLiSUDNwXsTtatpuWXNDZuCptDyhCxHNUoxHIdaYLxtXbqlbpfvH"), }, - { .name = IOV("OlG"), .value = IOV("MavMSOCazaaVRwraKhhUTbZfZMpJsrpFKIphUUMMqUyntOMCcVMMdDhnIjVhNEJE"), }, - { .name = IOV("mUlYJVhqixhnu"), .value = IOV("FPqpvVEKxJgytdoQYvPGCrNgFLDUxPcsLZX"), }, - { .name = IOV("ZChildfgFQTrYsHHLh"), .value = IOV("YoKGLCvrLhQguoFsihOSqKdpvkBNqKCvaZmYFVUEMnMOfLRwcqegHHX"), }, - { .name = IOV("pWV"), .value = IOV("HVLfGUfVFlpEkHIsTvdAiqfLbAozLFDw"), }, - { .name = IOV("z"), .value = IOV("aEXNmfYxzNmUKIixRRjRzDERtWLPpLiwHJYYjCDxPDihUqcU"), }, - { .name = IOV("VuVW"), .value = IOV("MysvjkQLSZTAFAUuhu"), }, - { .name = IOV("yhkkWTcJ"), .value = IOV("kUgmjYZTZqVxhqYcSnixsbfMLBWMaSUkOxRJyggoeducHNXvFyGpKPYdvlrRhBAlimGsl"), }, - { .name = IOV("cfaV"), .value = IOV("sVGnBEuoqTzBvngCsoKnxXxgZpzFIfQIIMEHLlewKHx"), }, - { .name = IOV("sovrERJnAwBaAXyKvV"), .value = IOV("RZgqCueEZgRBWR"), }, - { .name = IOV("y"), .value = IOV("vNwRWmHcoVZafEqYeYTIJpkcpPrxk"), }, - { .name = IOV("QNRZcCiTJmFJqSBw"), .value = IOV("JnwiRZqrhjPvgYVWdvwLrLgjWSaIjjCnIDQqsKOlyqmGog"), }, - { .name = IOV("mhs"), .value = IOV("atWtlTLPGVO"), }, - { .name = IOV("YeqcvIQpSCEzjOG"), .value = IOV("sJzGzbOLlekmdfMcVuunVeTpCSSbOyOJbcFXYsN"), }, - { .name = IOV("V"), .value = IOV("GnwZJkUrlfGyWCrvQfWnPs"), }, - { .name = IOV("eCVtYlsNALu"), .value = IOV("BnNfIpYjfN"), }, - { .name = IOV("Jb"), .value = IOV("YUDhLFUGyJmvXPGUFQcWchhr"), }, - { .name = IOV("WY"), .value = IOV("NNBhwKobpTt"), }, - { .name = IOV("DakukCDzJVvQFMlEH"), .value = IOV("rAajeQUvwLYfJ"), }, - { .name = IOV("tanQWwGEGtfe"), .value = IOV("fBslEGjuaVyZUhXgwPLkQPbymRMxBIhbBHozDOflNwPaYHqmzJxKLFJXFY"), }, - { .name = IOV("RrIfsDiKaCmEtSdj"), .value = IOV("mjV"), }, - { .name = IOV("jFzDupiZLrvNEFfl"), .value = IOV("FXzXTWzQprFAUXvDXbYmzACnamcjcHw"), }, - { .name = IOV("ndhClpbwngP"), .value = IOV("IHFLxLCdPjbtYlyHBLslCHgLpBpcxXTOPdBpWauOxDjWGMEPgLDSGcvmfXCx"), }, - { .name = IOV("JcNkynrIqhp"), .value = IOV("wfrtBChtLBDZqXoUOVctXhOSbovuKfoEH"), }, - { .name = IOV("MEdgMxnpWcV"), .value = IOV("nAQxVBlLfJVASxCrHGRFIoQqAkhUodAhgX"), }, - { .name = IOV("y"), .value = IOV("LpnSPPHkFHESHzgQGhtibPJyGGzdfGXlUlLmbRQQBvXbwZfjxqkfOQInYAyYEOlt"), }, - { .name = IOV("nJaTQK"), .value = IOV("IOkeBnUnXXgVBVWkxJYjbMvYoAAIvnAIYWYuTmSfcDQykyChvWpTFwjfhomMr"), }, - { .name = IOV("WjKSEgdsXaM"), .value = IOV("cchiQfEVjGXFLHKOmBuDbfFluCDYrGZkAIU"), }, - { .name = IOV("LDre"), .value = IOV("NstBZUFCWcqUDnhXLsUspYbNVhtLAKZDUnsDpeDPjDpJkNeC"), }, - { .name = IOV("beQyYjSOsu"), .value = IOV("wemWgcjuLvjjvjGeKyPBMtMiCMLOIwtXFcsSzqLUqWLmKYBxVvvqXHEONOj"), }, - { .name = IOV("LXtfAtwdj"), .value = IOV("rOKInwQ"), }, - { .name = IOV("sauuOakTzyOcINlLlTaT"), .value = IOV("euinLBvmDEMwbJUPREoZFUufUulLuYLfVynSxMNnQFDoGcmWIDzBdrtSyJRQnJPf"), }, - { .name = IOV("rPixBjQTVdiEBzgRleO"), .value = IOV("HlWQ"), }, - { .name = IOV("WGcX"), .value = IOV("kKBQyhXzxlKmeNTLkSYBOrjZVEQKe"), }, - { .name = IOV("tzaoUcHVIYrtHAgtJEsC"), .value = IOV("PHvqjMVGbqKDNMOuHTTZMR"), }, - { .name = IOV("vwuSkFZ"), .value = IOV("nGEsrXKEMMBDQLeWSVCxNmVnfDkCb"), }, - { .name = IOV("YD"), .value = IOV("FkCicUwMrfbOtvLpknIBBkhrpQ"), }, - { .name = IOV("fmcpzmahwrADVzb"), .value = IOV("VmrYZZSzbQVtguyzynTuHaWERxCDorAvZqYKGuirQaDkoFhMgFcdojUCWGLqM"), }, - { .name = IOV("Wj"), .value = IOV("BlEieZsnoBcDTwKzxkNJmYNXjzZeWqUSmVZACyLJUPurFnFSwBdFdBip"), }, - { .name = IOV("FXc"), .value = IOV("zshoANq"), }, - { .name = IOV("yUsiGSQalcAkbb"), .value = IOV("tTYXQm"), }, - { .name = IOV("gRWTXzABIPdOdz"), .value = IOV("CdpAtahrmShYbEEADqRujyBAPiinNqpFSjEqfFlfmoWrXpxnhltZIjRYL"), }, - { .name = IOV("VGTyfeCbUVXuzv"), .value = IOV("cBozJQcnSqRzpiNtNnYoLYQNtIlCYRljftlCNNKDoxLEFuaNFZJBLhpTQjgaGJBLoqv"), }, - { .name = IOV("OQZkclvVAmJ"), .value = IOV("zflrAZTFREiejPObxhNmdtaDwjJvTeyQfVZbOLHvyihUlkgzzDbrxexfBpiaJuJbZjuJTqllQanm"), }, - { .name = IOV("dFXPedRrkaOReilv"), .value = IOV("rNPwiOEUulBNRRYbRBxGHDDJRYLsZCgshDHOfeAWoAWgHpimVEHqXJEYZaIwSyhnZYmUv"), }, - { .name = IOV("wLBGBXfnzjAg"), .value = IOV("IZkGQZfUiD"), }, - { .name = IOV("c"), .value = IOV("VliAvbNTcnVtapBoraPZJFlXztSzbssAFBY"), }, - { .name = IOV("jvjcjvHsfVPSIiwDkXg"), .value = IOV("pNceqTaYCesmkQWvogIiztDdsnheyUCDZkRawSlQXFhvTyFAIMdUySUaqJM"), }, - { .name = IOV("kfhWBba"), .value = IOV("uTyAnNugVOPIBXziLqTFpXpjSYmmaHtEBugNsYmGIQdTHXsTXFZ"), }, - { .name = IOV("YD"), .value = IOV("LjtuZFvMHqBJbAkZaxOwiToDDisqZhtuCwEWyFcsWCTqhTaW"), }, - { .name = IOV("OTNWtIDLQfulekvuK"), .value = IOV("DlvZDfLwqtQLiarbncBkQRKkPYhZcNRrBLZrRCZBZDPOxZHZt"), }, - { .name = IOV("rsefmuoJrDAlyU"), .value = IOV("fdTfMpdtIYkYtjduhTmQzxpjMPmyIecUToCwGgFwrvraIjmqImYBIozZZQRPt"), }, - { .name = IOV("qYvzek"), .value = IOV("jOggkEKCpdiCNRdoUzEVYHWBTONIHJQqZELyTzDpyUSQrORVeBPTFEmZTUdWZZFMsap"), }, - { .name = IOV("LjFLpXrX"), .value = IOV("IGDiLMRtfvwCLLDCSEiAyrcEDLKdEejQiCtTOFIraLABVnRezBPzMxVFlvOnVlCWEJYHfNgfyCYT"), }, - { .name = IOV("RsCrLVxpSzEbNKc"), .value = IOV("KTSvfkNhsnLEjXwGduRBmRapGNIRtscZUzTGNmPlhuJqMiwJHNhqXFoMwj"), }, - { .name = IOV("AvomVzxQGmdATAEPtst"), .value = IOV("fNIOQDvlqnxcUlLiNOiViPtnJWogcHFcChpNCnGEIQSDwnUmQI"), }, - { .name = IOV("dPoewCwCoZXTH"), .value = IOV("xIwlYwXXsnLcDQzkBZGIQcjVjPvmNSAnQPhCNn"), }, - { .name = IOV("IKGsBjeJbQJahAX"), .value = IOV("ZCHdtU"), }, - { .name = IOV("WEtoTcSqrQGBrfFdI"), .value = IOV("GWQmFjMmMNfewiFgEiWYOpYUqaruWNhYXIjsmqUafTOI"), }, - { .name = IOV("GEgTbOjtIxkXnq"), .value = IOV("xdqbICCSNTeegGpsZsqxnajrKVFbzxIGVCIfhiaexqKyebbdyHZM"), }, - { .name = IOV("VzxEUVCxdMrjUVY"), .value = IOV("IoATBsHOzNsgZupwuDWJJPyRgrPzmgmltZGQCwjUmFUYcghmbDaXmauCwcfRsxhtaB"), }, - { .name = IOV("lZFCspnFNWDGyCQr"), .value = IOV("jNHKUammELVmjY"), }, - { .name = IOV("bsLAnQrNzDnyBN"), .value = IOV("eiTQYYLbRcaY"), }, - { .name = IOV("mAJkuskvJANlk"), .value = IOV("CuIFfqVFjaiaNZBsnRqCcaxAiE"), }, - { .name = IOV("MkQSAMfGNKHFZXqwM"), .value = IOV("vXteqejjEQEFCu"), }, - { .name = IOV("MSF"), .value = IOV("yInMuwBOQWsVNfYehkEQrLCyvEtmRPsrHjfyLIZjrQHSgVAKOtwpzF"), }, - { .name = IOV("IfPGQwZehSU"), .value = IOV("QVRSluQTqutjAKVsoPBYvnGUgGfOJqYdEqNfspxSLYNaAsVrAVbWGHGMDnLsiTi"), }, - { .name = IOV("QWQMNvKDpiNTLtDjqBgq"), .value = IOV("wzJhRofMPFaVNPCuPIYHKOHmDCgehjBevbMyhJSpULklwgPeszgmXyBPnl"), }, - { .name = IOV("icDvufPeFn"), .value = IOV("urcfvWZlnXfSVSBqxhcAMZiwLxvRPEAuIPApgtgzTQLHeVvxXhLFHtDOQ"), }, - { .name = IOV("WKabP"), .value = IOV("FhxJwfcKFfogmeOUspZXqnxzapMGCbnbNgKecZqFtFywIsjTYoeAWLJpeOrHfuaDGhX"), }, - { .name = IOV("FSnvLEryUARzZgs"), .value = IOV("WSBSHZzUOdMhBiQMnBTIQGxNSNBgW"), }, - { .name = IOV("ujhCEBktdaGlI"), .value = IOV("BdzawhdpDWoOuepsWtPuOEJMnprdcBqpJVyMkdFMSmhvHuW"), }, - { .name = IOV("mshMVIa"), .value = IOV("DsDqeAwmllCiQnsmIfHNLrwMvnAWtuWZXlsQOMnLvyYapJfyKakZlwQDCXFgy"), }, - { .name = IOV("yAWZmnqazeAbpQJ"), .value = IOV("PhTNoKcpkVBnzkjPvvCjhGuvZEThGIHWSSIPzbEa"), }, - { .name = IOV("lzTHSktPCJ"), .value = IOV("bgDPNOjMtdvbEMqZDoVLAhbdKxtKMocvezNYxgQTFhnLztXqhnmErnCZCBB"), }, - { .name = IOV("wMXoAjJUivhWPaM"), .value = IOV("VErazZqWKbziXGVrShyBbeaeMrxTRAvstqNLZqoCxoqJNgTHiqBtMzSn"), }, - { .name = IOV("hiEXupoE"), .value = IOV("rY"), }, - { .name = IOV("oCJReEuxUBZTQ"), .value = IOV("zZctwdLMGrfmOxtGHkDHalZWWqqcIDcqXpfwtzZXEETaDSJGZzoPwnUQfhEbiUUtI"), }, - { .name = IOV("ALSsIYHmH"), .value = IOV("loAZsjlIUoqZyfYeqFmtqwVKwwiLHIJxBiSK"), }, - { .name = IOV("FXXPuKyknCYx"), .value = IOV("MimpFUZnnczCurWsZYjIJQrRMvPEEsaWqWigeBXGEUNxCkmcrGeRptsXwBhKZhzoTOUWnEe"), }, - { .name = IOV("tqhAqpJQBmljNi"), .value = IOV("dzCYGjnYJpJdjuhdNQbkbdIYVZPHFNSDSjHamEvqTIqGKIhyQSXVYCwdGpMuPFGSUROD"), }, - { .name = IOV("jPZWmzDOOCB"), .value = IOV("bFhQbtGdlRgQtmfxweGHvpGOIMVgpVmLuunG"), }, - { .name = IOV("aVPsuHF"), .value = IOV("DBWOfVreHUXnlbiYxUnbabK"), }, - { .name = IOV("zzLTBhL"), .value = IOV("GpdsWyRYaRflpekGvunhoquJoFYXIuAcwrJTpBt"), }, - { .name = IOV("yHemUOsgNaR"), .value = IOV("XaukBdMUSEYbKMoxREcDXKqjqYbeftQdZJnEflDaBEXxXadwYVgNQGIdtNm"), }, - { .name = IOV("CUoRPb"), .value = IOV("HzrijvxyVzbaUcujvjzlWnOFwqPehaykZoqzqNkdcTNhQjAjzxJEJLIXsftCaNLajTiqQKWSuiKVVsTE"), }, - { .name = IOV("yjMWkUqACrxlzIyac"), .value = IOV("MnJIpLEnZfeTDEFQYOvqEhjiXEtXkMwXLSEKUflzUJAQWSZNLjYTkZKYPxHImsvdOqT"), }, - { .name = IOV("z"), .value = IOV("SedZXlsFbZvkHGZiMgzcodlVIGKrlUIRXJahSBsRPhhdMVOzlApErL"), }, - { .name = IOV("NEixuKgaSnETtgu"), .value = IOV("PZYaIew"), }, - { .name = IOV("tpkxBUdsc"), .value = IOV("LILEYHhaZDyhFWJIxJpiSCOGqjgDcnNkGmGXxjDxfokPzwklNUVCAdGvCnYxzZDgXzMDKVyrryuIet"), }, - { .name = IOV("bFrhQowXyAglWZYDJr"), .value = IOV("MGyScLosijPqbdkhiSSGtMHVXIwHOcMnkeFHprlPaDMSpwwTEZOVrjduRzWJVBwcHCVMuMi"), }, - { .name = IOV("dDIpTQZMZkuCSKu"), .value = IOV("wwttjtojrCvZIpeIQCNrGczOmhthOWTNmPzJIZQNAeDAjHwA"), }, - { .name = IOV("eDNRbdZwJuLmQlNdSTuX"), .value = IOV("HQkFXaVZcrWECSHzxZqrEjOxchRUYmOGuyyhQwzQWJSHvJbLsgvUYRjXYO"), }, - { .name = IOV("rfipjvvciXFDT"), .value = IOV("DFjRnvjERWKcVCPkWNuLahTPXuKOuZBJhGtBEXkkVffzTEwieiowonaqMhZBRUQkiWEajNVTLRs"), }, - { .name = IOV("utDParC"), .value = IOV("IcWHWcIRWrGnUjsVkooF"), }, - { .name = IOV("aTCRJS"), .value = IOV("QvJArOAtWquzgQxaVWBQfcYXbjkDGHCJng"), }, - { .name = IOV("bylB"), .value = IOV("NtWpKMFvxilmLBUwDQiOVszBEcBzBB"), }, - { .name = IOV("NdL"), .value = IOV("uQmPmDLWeUnyzYCPxVeKcIUXdnLYsjgMphTTSLoqoEhUKkdqUGseKBpPQnMlBXx"), }, - { .name = IOV("KILTrckTwhRAWoRmwv"), .value = IOV("ujryFMolfTuKmdoWpuPasmQUnkGKriDKZZaehSkdOS"), }, - { .name = IOV("u"), .value = IOV("vTEPfrcvTASJpYWvksbSVZJQeFFszxnnsWdYjqvxkE"), }, - { .name = IOV("uxCsrRIfDM"), .value = IOV("AioKMggjsYuAVFOCmYYeJPoAgblmhLUuFMcqdFsJ"), }, - { .name = IOV("d"), .value = IOV("hUkwUorPWypzLMhJViYNaDXasaUduLeASLDfUNDe"), }, - { .name = IOV("DpxDtMUcUslsr"), .value = IOV("OnTEFIVKpLwTgPzQmXxDTJTMbjnyXnZUlUVqgaIYxCmHIAVfnRGwhqpQPwHWjshKKCpJYhutzmkVlZHD"), }, - { .name = IOV("qzIDsscDIHP"), .value = IOV("QDKAnjMorCQYggGDzSjfEnKmRmKzHnrfhFMeqEdEzzATgCeSrZbaibdENcAIEQLDZwLGbxoQIklyNS"), }, - { .name = IOV("DGLocsJIHao"), .value = IOV("GzLvphtfCLtfajnMicqbeayLVpyLhiqtXxZAOpVxgZKUFsATLqAkJrwJwjZYvrVGzdEhiZUsehkUAG"), }, - { .name = IOV("AHFzDs"), .value = IOV("gIBVEqVSYzcFKXhertxacHCuaCdERjqCfqoroVSKlWeFNw"), }, - { .name = IOV("xujLvp"), .value = IOV("MnCdLpbWPLMgszKlmXUGutwdJlpYkgBghZVnGTsanMRyVmNEyiM"), }, - { .name = IOV("P"), .value = IOV("nEIIBflbiStRDEIsWmpMLIAaqUcKARsZxTjkbbNZAl"), }, - { .name = IOV("qMVKUztdngAj"), .value = IOV("pJVJDgCvlZzasqjgOrpbITYBfPrRkmFSSvXXSZTMiSNriiW"), }, - { .name = IOV("lMaLgKRt"), .value = IOV("sArEtbsXYhGhSCgqgGRIVDNsnSjHxazBNITvODPUCKJEoAwrDQyHIigoSPYIVaFLnEAmyxGuLbdzyE"), }, - { .name = IOV("ONNSpzUCPuyC"), .value = IOV("eeQIAHmqWanARKX"), }, - { .name = IOV("KhWsjDUzHm"), .value = IOV("iaOGLgzuiTPhygfw"), }, - { .name = IOV("crQxTO"), .value = IOV("nvKiodjuJWggQMRgEBHVAXDXWgXZfGqgVCzSnBZlTqCKQSZsGlar"), }, - { .name = IOV("kXeQmIllrD"), .value = IOV("TdRWLSEcdKfeHzYxQ"), }, - { .name = IOV("fqaNGxghF"), .value = IOV("GmreAOSgMoaKKlZBBTpCFzBNBELAlfArOfBBxfZtq"), }, - { .name = IOV("QFbHNAalTbgwS"), .value = IOV("iITgAxaPdhUCBDNjRzIrDluEWEs"), }, - { .name = IOV("Pbf"), .value = IOV("H"), }, - { .name = IOV("oeKe"), .value = IOV("PPKMejGroDZRpCtLdccyzlzidlDlJjOXHJODGiglMTpxSfsj"), }, - { .name = IOV("oxS"), .value = IOV("AuPEhsVlMRoouqxPLPQyHUOyHaWTjpszcahMqxGBLmX"), }, - { .name = IOV("ZRYRAirpz"), .value = IOV("UzNYRkzDSWWdjOQCHnIZyxiLSYnGAsZELKxsvuvwMCzWotWt"), }, - { .name = IOV("AjE"), .value = IOV("bLBUYsXcLxaqBsJdNddGZdQnSbdwHJdsCtmRxRWAUeMcYVCpjy"), }, - { .name = IOV("BGyFPNkcKk"), .value = IOV("bBAVDEmuvTtBSZnIGmespIqGKVMsmLKrewzfWdMWBXLDUisjtgcdsuqRsDcjrcHezddv"), }, - { .name = IOV("mfvjlHcmaxacIp"), .value = IOV("bdwxdTUnNeOqQNySivqhLkGydPOKsLxgJZcdEiGkJMbLbafvYGsfkENvUiB"), }, - { .name = IOV("ySQDKTbRtbdrTp"), .value = IOV("pcVLrpzmtaygUPQZBineZWVtBzJZETvQRzOFfsNaEbrpDFqHVMWqtEYimqJmpwar"), }, - { .name = IOV("owwPIVZcDwJjZQWjBH"), .value = IOV("gJalBbxokPUBCeRSKtSjQNnzVdPdeENrGYWdqYkwgzgjYDBfCxfpzSRFGt"), }, - { .name = IOV("jvBWTl"), .value = IOV("UHBlXmKqYAGBljVVhdKKTgzSBBsHPCvfGleFFQfnVriWqZhQkenqF"), }, - { .name = IOV("lkkLHngHrvaDdiAqiHw"), .value = IOV("kCAlFxQcRMRkcDMjwxxRZmGPwTqNksKIFPsVvgjvESBGyjxvrLMu"), }, - { .name = IOV("poTv"), .value = IOV("gcdpckJySiHvRXDEEgLrTiWTLFzpSAgMlacisOX"), }, - { .name = IOV("jz"), .value = IOV("hZHZwzNtBWRVluLiYiQIvSTcqpTQlsAiOXxxzisWIBxhkOiGKI"), }, - { .name = IOV("B"), .value = IOV("HTwWsRJoPUFCwwONCroLPXitAWeJKhqTncilPeizOUTbTNZZzgIuO"), }, - { .name = IOV("PD"), .value = IOV("wLKipEdCXafgpFieyFuEeRLoQbfUeIegasPehKiKTVsIALknjOlWJyZGyQfLpeNKTRIOzbbZVwaHnE"), }, - { .name = IOV("sQTtgHhlHaRCmrteLFU"), .value = IOV("KzRjuwCGyLMfFVb"), }, - { .name = IOV("JhlEBVCoy"), .value = IOV("xWNLpYdXqEQFwEtPFvAddrBhGLLpWaowSamsppdnGJqjyfolZRzTg"), }, - { .name = IOV("zLKcgfBl"), .value = IOV("JYkFuvQRvbvLvvEkHaOLvUCGUHpWtRgfiGqhSEHdNgLsePEMLcZjbpnjJXHIzmUuZBUgiywuGmL"), }, - { .name = IOV("mWZgcl"), .value = IOV("wbhlCDSlcZCKXiLsNgtItQQAzLqLMLYHwFlXUNGBtovTvNcFhjSFjbZJFzhobuEckgLNex"), }, - { .name = IOV("WyfpnpsnCCLsfbk"), .value = IOV("vDPDgXrmWxBRtul"), }, - { .name = IOV("dYFDqnejFCHrCRZ"), .value = IOV("kWTcSVOjdRwHmRJoeMnHCWXsSPRrjTCLnZSjX"), }, - { .name = IOV("PhwZAhQgNJApFPHCyXaT"), .value = IOV("mNSpIHFaZHLxrZPDsNrvNq"), }, - { .name = IOV("vIy"), .value = IOV("uaFhiEMT"), }, - { .name = IOV("PSqGFujDLfrExwPFE"), .value = IOV("ydmfMEnkcUsuOjsfrZaKpwZwaxgUuetjptigxFlHsruFvWvDrDWIxnXSDoRhcKnGfjNdp"), }, - { .name = IOV("bHxpCUFPOFL"), .value = IOV("YMSLoNQgawQboHQSGzhjKhzzLoCMlSiEVkGVRdyhzmULiMJYFRhCZiaJrdzYTFweYZUMGGnIMwlpXo"), }, - { .name = IOV("sJ"), .value = IOV("vHKceTgIbOZYEDCiGXLhsFwxCFAWrKoWmvptiwAnGrF"), }, - { .name = IOV("sNtjX"), .value = IOV("UsBBgzlMMzCSTtWULQNTF"), }, - { .name = IOV("aqSsVBkKPbw"), .value = IOV("oCxejJXhupCqdPyUCYAezTrcmIzMoUbRMbwmKuGZXeQFCZHF"), }, - { .name = IOV("I"), .value = IOV("snZlOgymGcdRhHgeniOBnGCUGbGQiZV"), }, - { .name = IOV("W"), .value = IOV("HpJJVMEXmLBUdreHYnzRZHMaecHtqJzhoDuabPCAuLftnslKyU"), }, - { .name = IOV("ijMtERSWAdN"), .value = IOV("pFoIMWOTjqxSkjRoPMrHnKwIOIRTzADvtfdbwZxzJxVIoicZWBHizzGHjhYeNUQjBXInsLbehLPJwOFd"), }, - { .name = IOV("ctXYQirfZMUKxmnlqkks"), .value = IOV("ndaoKVFndoiFbernZrFyAXBYzyvCGIBfRJKpViODwusDXkxyzEys"), }, - { .name = IOV("KUYKNdjvTaTWq"), .value = IOV("PceZrfEtlUfqEYozbRoYnFJnNFuNFzFS"), }, - { .name = IOV("OSzfxg"), .value = IOV("XYbMDGQZVBdKUxeijufpfLcB"), }, - { .name = IOV("oAUDFWXQmAlVO"), .value = IOV("fYTCBfAZFweYLywjILPJRCwSvGKgXgKtIgvFJjEG"), }, - { .name = IOV("vd"), .value = IOV("zSwiIkppfOIVKVFoflOWoiLmUeYDulDPodPoviYlbgwQrUcptLKStGawVWodDPDT"), }, - { .name = IOV("rCbVRahdTNlwTI"), .value = IOV("GDoCAkLnIPmWjaPpIAhDREvPGBXJyURuRfl"), }, - { .name = IOV("edIcrKBHRuHMqx"), .value = IOV("XMTmDsmHomcaDotsCKRELoKpoRPkrXwxiREMRG"), }, - { .name = IOV("LvfcWgMjTClGwdj"), .value = IOV("IxWMliGFCRvAopSwjRwJsjGZTwRCSWhrkloHM"), }, - { .name = IOV("ivAnPwjhoYdMlZmOQG"), .value = IOV("rnaIzKJleGfeerVDViPAyHnKKBgFvyLAebxHHhRVLBXPXkaQzaBlIVJzddpXy"), }, - { .name = IOV("JlAk"), .value = IOV("UkUzzXMpNyWijOQvIEezOVvJCFaxaR"), }, - { .name = IOV("CCoBlrgawEiUAMyMzP"), .value = IOV("WTtMzYUmILbGWbTCIfMNwzkEXZNZv"), }, - { .name = IOV("OTrdvMnS"), .value = IOV("MoPBOWiTZFUaHFNTAJkhmZl"), }, - { .name = IOV("FVmE"), .value = IOV("ifCjqeqzxmpBhqOrRfgWTexnSSIzeMhyJvvKJsynzAfdtQIVsPoFJUGnRZKIRbYzmHNdzBdOpnDQT"), }, - { .name = IOV("gUyT"), .value = IOV("zfXAUbgUuGdKmVWFTdkoKJCDLCYOdLHIRZOCunXkeFU"), }, - { .name = IOV("YGVVVgMTdPJEtWQIGKy"), .value = IOV("qUUaETYsGNVY"), }, - { .name = IOV("AedJKIHNhvvwBnX"), .value = IOV("onlyylWVRUhUMgBwgFTAcrYqmynIWuDuDSelRnItblpkcrqWnIHxMGgcEkRKDetKvULwCU"), }, - { .name = IOV("eGds"), .value = IOV("OZgnBhXdzLlHPSUVJBePwoCTtSXTszLJwek"), }, - { .name = IOV("YwcY"), .value = IOV("oCQwoxrYUqwhYnZSXzJprADuySBfKjoPNBCfLLPUlGJdrnfENCNfpEdFurNsCpnCjh"), }, - { .name = IOV("zhADpWolyqEnq"), .value = IOV("hLKwvbMyc"), }, - { .name = IOV("LWyEjFvhA"), .value = IOV("orCvrOJnpqwjUAbqhgHOcSYLCImNJVfBRqRtGAwvWecsviLoACmtMTsVJcGihTTdAgdrlB"), }, - { .name = IOV("NuUNcq"), .value = IOV("WYEHQgaIDbRkPvWlogSBMWI"), }, - { .name = IOV("Fi"), .value = IOV("gvFAUICjhGM"), }, - { .name = IOV("nVcnDhuMX"), .value = IOV("HjQBhGkpbuHLdWyqlZoSjbPGssyHSqLAHqBWIDf"), }, - { .name = IOV("TNd"), .value = IOV("aRUBAxAfseotbeiDKWlDivJOMKlJmwfkkCIwGtrfftUkzinMDRaUTO"), }, - { .name = IOV("GSiMtMtskxqgO"), .value = IOV("kyUyBjFuURtIO"), }, - { .name = IOV("GBxhLsJ"), .value = IOV("WCMdlWMQzDhfrrZAjMbzJEriRorGZWcjddtVscWTulOPZoSxxnqOGE"), }, - { .name = IOV("tWfBhUonHLgUIO"), .value = IOV("ZfeXMkzOroSXjmlGTZQkIqJGSbFAXgtFkwchKtgM"), }, - { .name = IOV("FGcLqu"), .value = IOV("GDHSroEJoljabZXDDdaRzlTjioBJGgRnvGYF"), }, - { .name = IOV("vXIkeSSsIjYS"), .value = IOV("xMHrXAhGQYXCFlQWgmDJSZZOHPndVgVjjIQQyKKJKJxSFDOqpUMtJOlOyWJut"), }, - { .name = IOV("iEJPNKmkRezDB"), .value = IOV("RKDXuCl"), }, - { .name = IOV("pCGZz"), .value = IOV("nPRooCRvAKESgGkFEeyOSxQZzyaoGDuPxHPYtQGhq"), }, - { .name = IOV("ckPZoVLPoI"), .value = IOV("DsDLYaWSRFLquRaCWekBmMDitMWIzyybQkMmaSSFGGxjANrDupWgaNsBVqZCOp"), }, - { .name = IOV("tUsXaRKMUSInRwbuVGg"), .value = IOV("McKJXKJlljCLSlACNCPsSWUVAbvWIsVWTaNNxlaJTTSYkEOEQaPHNYiJrbswKuFmjVZxrAdzilsLXn"), }, - { .name = IOV("ZEZDUq"), .value = IOV("dwNRgxqovLnNPvjKm"), }, - { .name = IOV("UOtaGSXafBhUGgrnsL"), .value = IOV("IfvcYscqzhKPdqwxBrqQZVYONYLsegpOJGeIGCZExDOPQPXxeoK"), }, - { .name = IOV("hbtiHAXtE"), .value = IOV("xlOWZiBXzIWUvkvAFIfIVEdSHLPlBXxkSgrhMjNqXDOPeMnCdRILNbMdAtXzzmmroTWpwhPJOk"), }, - { .name = IOV("oRsFMNFdlneRNK"), .value = IOV("mqwOLKNEhjdRByJcdwwqcDglnFHfKvSENuZRJVsNbATgtySPmwgsGaKq"), }, - { .name = IOV("RCcsNtNXmIUuVjmiQfoz"), .value = IOV("HQaOiatG"), }, - { .name = IOV("MXB"), .value = IOV("wDAQLVGCfGenfOGRyTNsDugUXx"), }, - { .name = IOV("XENVCxo"), .value = IOV("ZTXbhFuwfLIBhqoayPRoDZdtIwdMDvrtOPjVGpswBKTwvgwoXMyGLJGmVGxfrtDewJhNhqLNopsIeoPA"), }, - { .name = IOV("b"), .value = IOV("tKLitDe"), }, - { .name = IOV("OK"), .value = IOV("ndaqnRJpTYAtxzszFQbSIzrtHNSqsVtOhtGUHfP"), }, - { .name = IOV("Uq"), .value = IOV("ZijyhFvLiuCwSKtVNjgrmcpwELmEEGXPWTBFopwJYIkLE"), }, - { .name = IOV("VZBz"), .value = IOV("sslvaElFgSaSUQhrcBHnhxoFDtVXoTOZQqtltfVqctnbJ"), }, - { .name = IOV("fbQj"), .value = IOV("QUzEyZOMLKIqbTLqmtBLoNAhzFYpUPRUpMXcgBYwjggAkcaFCNFw"), }, - { .name = IOV("fVDXoHvtyj"), .value = IOV("YUSaaBZOHAPpWUeIPFddSCxKUvnpeDTImZsUtbFYOFZWhU"), }, - { .name = IOV("RxWFRwgzpTsHADxnbX"), .value = IOV("NzsswMiCczDyfWwKtwnexkfnQHRWJUmGkPkeDervyxrxTYdUupPdIvhDqXDfKBzlxa"), }, - { .name = IOV("G"), .value = IOV("FbFdZhuOcCbRKnNKjkbdanoJVjptQypusXiiABAyzEWtbSHWxswVAFSjACXwcbtE"), }, - { .name = IOV("VKJXtUrCLMf"), .value = IOV("DYhIzFWRzjZrknWEwsvDVIzVWlfVYbcpHRKSTafXrYpMKXnDu"), }, - { .name = IOV("VKgsoQjzRhEklWzaZVu"), .value = IOV("rhCYbmyAYaFPswTPoHQXRYECAcw"), }, - { .name = IOV("QUVImllKxNoKygVKzPOI"), .value = IOV("HJsHYJasiLmJSVURKNIuHhfZtQegucuyEtAoMavcHDqJcPmZnZskNTedlvopRzQvoJRAuWhOaA"), }, - { .name = IOV("zrEJ"), .value = IOV("reZVcMIpBxLeFPyjRKCMjVYKPvFtMlXjVeXbVYUSJXfPggxIkmhHcZDjxiEro"), }, - { .name = IOV("WyaPeCBkQvXVqw"), .value = IOV("vLaajnGTggeXtYm"), }, - { .name = IOV("QukLopQwbGpIS"), .value = IOV("tZLmfSDEBFCUrPbxHxBVZgxHDRwlZPHot"), }, - { .name = IOV("izZXljabMvRqWXxQmw"), .value = IOV("QTHLSTnevCOFPkzQzo"), }, - { .name = IOV("fnQljtjQjAooTcJiNT"), .value = IOV("aipQPbBPjUOUIoDbhQpgOFFbME"), }, - { .name = IOV("OHYxKBYWyrgKKdItP"), .value = IOV("YIBrBXfCZNWUjlJJNVmhXGSlBEDMoJyOLXyhVrzeWZPsKJoHkVfhrtOSZtu"), }, - { .name = IOV("bzwwNtqmqPUFm"), .value = IOV("qIrpjzSGntZgYuVkFOMKlBCBHeGygDLiyvzplsQS"), }, - { .name = IOV("YDsmhQ"), .value = IOV("ndCsjppCNhJyTFZeMiZDsEcdNH"), }, - { .name = IOV("Pj"), .value = IOV("IdIYYmmvOQmjhnbkDOBJkLawYgNJYylOiPsDcTNW"), }, - { .name = IOV("UQFDbPhnE"), .value = IOV("pQbmVTNQugNDwCmxLWWbLmDMmtgcyLk"), }, - { .name = IOV("vNtqgqVryDr"), .value = IOV("bqglLkMjNmQdgGpblWzDoOAEbbkUicGniTmmqbW"), }, - { .name = IOV("StvvuwTZst"), .value = IOV("gscVQbXCWiITuUYRCgGSjcKGCiZDHDlNUIwpGyFNuqgSokMtFxoisDVqrvpRVqabBNSLBlTcHrMWHOfh"), }, - { .name = IOV("RV"), .value = IOV("OmflOevtTOFgSQpYdqMXxmmigQKqzURfHETZKRl"), }, - { .name = IOV("ancZhTdBuLVnXcnG"), .value = IOV("VgJPUTIZzOlQepfwShIzDHAreyNWzbezTMYDzRKzkhOuRJueaJcOjqecqMmDZucwaPSs"), }, - { .name = IOV("xHwesgKgSu"), .value = IOV("QzSDexGfNPvKysrxYn"), }, - { .name = IOV("tsvpRuoSVf"), .value = IOV("yHgdwosJafSRquyJVgjEINlSbLqOCvmmlnNgZRdBsZoflfkgohZE"), }, - { .name = IOV("uMMWcRejfISrY"), .value = IOV("OtmIcvxUaogUOfpfeEoeQBIjyqVCIkiAcZBhgZFcMPQtlHwWD"), }, - { .name = IOV("UbRtpYOsrp"), .value = IOV("aWVEoBMIMICfRIYIUdpQRCmKSizBrRbq"), }, - { .name = IOV("hAvexybQ"), .value = IOV("OQyPJOEXQuXpFTvAkzhV"), }, - { .name = IOV("N"), .value = IOV("VAz"), }, - { .name = IOV("bRYxJQsDAL"), .value = IOV("flRlOiPIfaRZraSzuAcePfIUHkKsZBqHWyaRoAXyWfVuGOcDymcaajuVFxJSkwFxiEoXIjDywu"), }, - { .name = IOV("nUB"), .value = IOV("xGIebbIcXoPPHwHUiHqLDaZuPapQzioIbmApDTzTNVVrzjDeqcKKtFhiaclIeAPByeycTpKTVujASr"), }, - { .name = IOV("gFmPPQtpobav"), .value = IOV("XgAebFkMjtbJlvXhkyPkNQNjnMitTBUXr"), }, - { .name = IOV("vUKeqiXPiwJFzR"), .value = IOV("lECdJtJikwMugPBsBVZdlr"), }, - { .name = IOV("PPBbBVMNEKCLgMr"), .value = IOV("VJzKnqingsRZGKSVFTlwDsEQnjisKQFJSEyTSo"), }, - { .name = IOV("MCfyVcsgPmPhTHWLsJYm"), .value = IOV("hjOsoqZmgDwPAmYSSqqDrXaZYMGpZTsWJMcDdMmoLORUemYdDChmNQrZMn"), }, - { .name = IOV("hiasWRTXGGnNEgdYP"), .value = IOV("BpfVJopCUIpsjldGGJBHCRkAnVLfTppXGWknuuJQc"), }, - { .name = IOV("yCrHVwVJYYPWicJ"), .value = IOV("cHQlVoBYuxhybnjJEibexwWdSsQfH"), }, - { .name = IOV("viOGHJtMH"), .value = IOV("OLilUpyVJHYqpfZBBDikKgPTyUcGpqABfXDhB"), }, - { .name = IOV("JNFiIfrfh"), .value = IOV("IqPvvCvaSqjJIfrIdQxaFFGXWGrAWdJSZd"), }, - { .name = IOV("lXIsSUAUsE"), .value = IOV("PIVrgcJjN"), }, - { .name = IOV("RtXrviKCvYfX"), .value = IOV("MrYYodWwXxJPolzJEccBVaqqxoNvIMxgXVzEvnVmKiEyWjLVDPb"), }, - { .name = IOV("wtJud"), .value = IOV("FWWMmusgOjRWpJwAOEPrdmqOppOsc"), }, - { .name = IOV("nOYDMeeSBIViaCyT"), .value = IOV("zuyGAURiyqxQZfRzhIBTBAIrmqJxvRNOzazqrxVabCOZyiHAWqJtZWAaKJBHGCPeAORoNkmrvhfYeELH"), }, - { .name = IOV("NrVFEkLzuXrQday"), .value = IOV("jWEEAziZzLajYadHZGIEpsAwxxqXOmpbanAflsuvcUPImSLanFqlKCADXyPebOvqeQaErJgZcV"), }, - { .name = IOV("AJAsrm"), .value = IOV("ToIrOFUebSGranhWzjGj"), }, - { .name = IOV("KUdvzVj"), .value = IOV("ydLMpmkzqjXFouLjLGR"), }, - { .name = IOV("ClHYXhPRHxiAH"), .value = IOV("jwVxnqfiGEwLMduwAlsLnxGRlaUaGXbqJFtYvU"), }, - { .name = IOV("MUKKCpuFlwSZkXcED"), .value = IOV("aozCOZeedcrJHtaBNJPXJCdwVcdFHDeVnUjVARPBDBnGfBkSiwMiNErxdXAHSyihPXW"), }, - { .name = IOV("zlUCQzQH"), .value = IOV("ZzzshayKQgsJCBXDPpcfbWijnIKIaEsHydThoEvXRWCtQcpnIbxXFGydaykudtGdNSuFdn"), }, - { .name = IOV("HMVzTzfmGXlUBIVSWhUm"), .value = IOV("erTGjLJpwiYqTyqKZa"), }, - { .name = IOV("OpMGQdQVLiafLDlk"), .value = IOV("ROOVCWSovGNqYoMWUaiRxCILpGDpbQrQqprGuczpbJaclRMSkJkmHYlQYDCCxYEZjL"), }, - { .name = IOV("lQkZwKME"), .value = IOV("kXqhoOHUVYYyjVuTsFXGSouHeDfzAKlIHVLHBJwFJSgpErGwCiql"), }, - { .name = IOV("WrYsEOS"), .value = IOV("gxSbimYPkEYNtTEQIdWtZBFtrtNpdaaskYUYBKPHQrimaAyzhUsYe"), }, - { .name = IOV("rXrcWXCVmvYMTzuLFr"), .value = IOV("Bxthx"), }, - { .name = IOV("ovjSPmZHrsIuAvlmLgk"), .value = IOV("kupXltbGQDlJtDIPRZUQUCWfSQbqbYQfvSLGZgoURYFJqPJyiwIGxIdlhnLIQiXvqeeOlijSTRtJT"), }, - { .name = IOV("BbAVW"), .value = IOV("UvgUENmHwMmzamqbIqOXjnssonehuiZgLNduUkWglNdwvYkdXJBTLbgFRjKl"), }, - { .name = IOV("jmfjlcSAJyGkMNqKAGlL"), .value = IOV("oEeWakMjGWUFC"), }, - { .name = IOV("WjFcY"), .value = IOV("shKbzTZpdqexJlQdGJQDntZURzheAUscsWbAMeqyvdaNKEHwSNuohRhFFrfunlGEwH"), }, - { .name = IOV("emCzEpfJgFkKoOY"), .value = IOV("AWqsfngFgFbZtzy"), }, - { .name = IOV("GezFAOedsnCYbNdFHvC"), .value = IOV("grHRC"), }, - { .name = IOV("plY"), .value = IOV("SjHeitRtfWawFnWkAamfImMNm"), }, - { .name = IOV("dmvtgUvcbpkCJ"), .value = IOV("bzGSpsYEmAKSmVHhajCKJxqGxRVdXHltoTNYWIFZ"), }, - { .name = IOV("zdWuKvSD"), .value = IOV("pjLRdsGtClQyiwmPViigVTQhgZKOJfAGhJkDQwZeKcyIqLo"), }, - { .name = IOV("zGCpGqOhztsAlyT"), .value = IOV("tgsbbwnZIamTanFR"), }, - { .name = IOV("vmnfuvqU"), .value = IOV("YmAMYzFdn"), }, - { .name = IOV("PG"), .value = IOV("ZfNgDSLieinIewPsZfifRlBOwCmyIcywlYCTLIuROoXxELpTgyojaleWOikCXsKUwrw"), }, - { .name = IOV("ooFl"), .value = IOV("Yp"), }, - { .name = IOV("JsGSBUzoDFGXdJINfh"), .value = IOV("LOnPfCENppyuBOR"), }, - { .name = IOV("hVqdCd"), .value = IOV("ULpyYfntcaKACtpBtaLyXZuCZGIbJLSuDwF"), }, - { .name = IOV("ZDCN"), .value = IOV("cjwPiOchonTETT"), }, - { .name = IOV("NpFxDKUjTVuo"), .value = IOV("GljtliHaGJlZ"), }, - { .name = IOV("xGTionGSBgMyoBBikksC"), .value = IOV("ADgiOHXHoLGrQKmizMHFSuSqZYMngMVdYNzngyhXTfYIkRqtaRxTalqlxXaayqiIH"), }, - { .name = IOV("kunrvd"), .value = IOV("FAfNvDmSHVHsEGvertvvLIUEasNjcO"), }, - { .name = IOV("dtcwx"), .value = IOV("IZcXwgLiwbaoKMcImXaTQyQRyRrazovWXwljAozDDmIGMfjvDREa"), }, - { .name = IOV("Mdya"), .value = IOV("cgFnqqddHhItCEUxjUwPhXU"), }, - { .name = IOV("GzVil"), .value = IOV("FPklVoOgTpjTNCPWdYyZWbmy"), }, - { .name = IOV("GzDYAqhDgp"), .value = IOV("ApTUJWJnwnGakUhjEyluwnnvUHeHSomltXRTHFp"), }, - { .name = IOV("SOporpgYqvEdAZWVzro"), .value = IOV("NyMxjgJu"), }, - { .name = IOV("bGZdpCJWS"), .value = IOV("XPcajNUtoSAyQAFPrIFgPgpxhQvTKpJbsHDOCvFtFurNWAqmDRxAbCfIEzQl"), }, - { .name = IOV("ZjbXrdXmJQkAXYg"), .value = IOV("wOTgLrQdHWnfoTPdHkUQCLntlHXjlnOvDZlsYFKCdhCmnCLSUiunAquOVJHgGkbdKo"), }, - { .name = IOV("awUHrlTvhsXdfweZFCuS"), .value = IOV("XgMmSZeqJNLgWEqXQIosnWBnVuKzZjrfRxkqhDegDVwXenIHwVZsd"), }, - { .name = IOV("jFctAFjtm"), .value = IOV("xLhqTqlYvcvOxERGhGvIOYC"), }, - { .name = IOV("Qpe"), .value = IOV("KwNjPrSPVdYIJeOIxlCZfVcLzQmZCSrfhTukGqKWMkoeqeu"), }, - { .name = IOV("DbCN"), .value = IOV("WJsxeeqRwuyOvDHgaUoSoMiwiBYDcVstDMYQPgNoYzVKliaCgnjdvJGDfRIIgc"), }, - { .name = IOV("rMLAyoIqXLgwZjsX"), .value = IOV("qMdeAxTIofWjpAmrrSBJoyjMyVXevIfLdimWgoVKCncbMNvhHVljEDqtWgFyDKv"), }, - { .name = IOV("vyGfCqJihN"), .value = IOV("XhPwFChwFaWCHbXX"), }, - { .name = IOV("o"), .value = IOV("JCyYsJZHdMMKxycvtfpyJyZPzdhAaZjUHOcfobeiCpsRHltLIcGIjRTnYBXsqeL"), }, - { .name = IOV("h"), .value = IOV("YfdItJAxFzRqDxSeYUOhtjqEnYECcIeBpnDDaVhuMNIeNMxKplPxJDYvwvrNL"), }, - { .name = IOV("sHbCD"), .value = IOV("OxXXQXwPFHQRGBOVSRiUIlGjoPQrf"), }, - { .name = IOV("wdRWyeOXNtcscpl"), .value = IOV("oJbQnueIRTKaXdABmNKnyxeCHzrxLJMAAXFrUBGmFiNOgXufSoyDDKhpjgEa"), }, - { .name = IOV("jAfDAH"), .value = IOV("SMIzPlGOkJbnWVzXQrJlhZmEEkLOEHzELPGhDEw"), }, - { .name = IOV("f"), .value = IOV("lBheeRGcMMqzWYjVvNgOiqsgfsyzngVTkENZKBjyrceWMZpYIFUxrcbedxNwMrNnoF"), }, - { .name = IOV("nfQKlmwPwhXSKXLM"), .value = IOV("dezcKSE"), }, - { .name = IOV("GoKFFJt"), .value = IOV("AYXQmXRdfPdJqesqaeFygsATnzP"), }, - { .name = IOV("CYhUGyMlEbPgYGCIc"), .value = IOV("eVrDXJMyTKTCnPQBlpwoQevWHQEPnCrdTWhEcJPywIQlOAQHloX"), }, - { .name = IOV("gzCxMRzIBEc"), .value = IOV("TAqIwOhkSJKTxWghoAwSoXjsQ"), }, - { .name = IOV("awNLqCKTVzfuKJbArWg"), .value = IOV("fXTvUrwPlkDeiiMjFpbnVxZXyHQhtIVPvMsgccfqhAcwvCCxCPkyRXAjivLGqnymZ"), }, - { .name = IOV("zJKDk"), .value = IOV("tPMKPOCRaSXAsAAjpofbjBvYpeYWVbrNfAVPaLELXufXFFpecTiMKDtBfggISpDSwFZcYPaWRtMKg"), }, - { .name = IOV("BDbEICAXnE"), .value = IOV("QoHzOqBwtOulvoXrMVgetfCXRSVHXDeeDdVQcgtqjAUrIIzL"), }, - { .name = IOV("NeHFhxZzvCcvlVWfJfzh"), .value = IOV("vHrPohLgwSrXWwnYWdzuDQyheaFZQDDRGFSqZTMpPbImhVnWyqzsEOrEUHFYcgikjmzsZaJJki"), }, - { .name = IOV("rbVFJzGFhbTfISftEAUv"), .value = IOV("hXylmmjTuiHOSPAISYsrCwTpQbrGzztgdLHATbDggsotxTaCUfZDnX"), }, - { .name = IOV("gnlgsC"), .value = IOV("whROob"), }, - { .name = IOV("g"), .value = IOV("LojkrPulkgjzJcJlatIiIU"), }, - { .name = IOV("QDVpSwDhX"), .value = IOV("khJkgbWKkOcGodlvoHCNLxgJRmjXIK"), }, - { .name = IOV("tJJXtUB"), .value = IOV("CLwEBZictmeoxaxwWFEiKeBlfkyyuCAFVTFOWdWFGivcbACYeQuntvnNDmPKUuFXw"), }, - { .name = IOV("kRjTyslLRppFwxIlFn"), .value = IOV("fbKkxflMtmIZmKUWWAtTQETITyIXqIxMsUGIaIIIeAFZdRcPCmDpldaShWGBzdFnQlyaYHunPAT"), }, - { .name = IOV("WlsYaZTDxBvCtDZx"), .value = IOV("AAQTqJlHXBsBkO"), }, - { .name = IOV("PAlzykBDco"), .value = IOV("QmnRFQBNQXCXqONjqirMOhhspDPwYtMuutmZPSslfeMEktLOslhIwXKuqzfeZyLeSqgHTyIIy"), }, - { .name = IOV("BXxKJLEusGk"), .value = IOV("AHFc"), }, - { .name = IOV("wxRsFgyzORS"), .value = IOV("VzPXNcuAMcVbsUdIbOcSYlTiBKWddPHbCBH"), }, - { .name = IOV("X"), .value = IOV("eXppadJguhkFSOMfkoNIASLvTnhqyBoFSNaeOviZUoAXPNr"), }, - { .name = IOV("HzKNdtawMbGK"), .value = IOV("XznjknDsIMxtcxRHDXmrIHYzDrPigIADtiocp"), }, - { .name = IOV("JPgPE"), .value = IOV("ikvSrfJRaXqXtfAKPqDUHcrkIFNgcyEnfJqWusDqCdTQFhtLpIYk"), }, - { .name = IOV("wVmeaRFKqNI"), .value = IOV("ELBvLlkwCkPuAVfHyrUEarXxoYYvxWOGcUMAfGZTUqOsHTvamuQfVZJiECGOUTQVnveL"), }, - { .name = IOV("bjtnHYZhs"), .value = IOV("aaDOHZmDqwOOpgoGSHSJnJuysLDsAJHyydkvIdxUpAJNtwDuainbiQgeVbidUc"), }, - { .name = IOV("WQWlVHB"), .value = IOV("DKkTTaicdVYSjTAenucpshueiwyFMIvWDnlrCxrjgFmPsbILNaZUqGqRzfhhYUSSgSwbzZ"), }, - { .name = IOV("PVC"), .value = IOV("bZsWoMbJSdcxwKhAmXmTGLRGACuJkEEffnHVsCngPWmRNEwaUATBgM"), }, - { .name = IOV("wAOpmgpR"), .value = IOV("sYPsmMnzQayzMvGDMsnYxafwgxgDhEigOaibiSMAIGONwrTRocFqLaUCbtaXBnBwteLJA"), }, - { .name = IOV("qPYQRglbaO"), .value = IOV("DAQXOOIifbybIcJldJCQYdChEFdtqzioIfRgNfvuyHGgYYvY"), }, - { .name = IOV("ZMHPgypSvnpuh"), .value = IOV("gNsrwjPsYWGHsPZMhwBOZuLizMmKsnLUINWXFsViGuJNSxYdHMcvRVYBRxfZgYAzqpsLv"), }, - { .name = IOV("IXyYZawAFquVad"), .value = IOV("tKAvApSShcBbSz"), }, - { .name = IOV("qXvDTOLA"), .value = IOV("vmJLnCtlBOsROtGdWklgzvlkO"), }, - { .name = IOV("rqW"), .value = IOV("cGI"), }, - { .name = IOV("HoJHjEAJnJPFDzKRisKG"), .value = IOV("xfsdtGwOMBDSiGtZwjdMgDJsUJITIKYeTXtJqiVkjPMYrKzVqnmPxGBLsVSFCUUbZoFThFlFn"), }, - { .name = IOV("PrieLdiEicsriBipqBKB"), .value = IOV("StUOwvgRqMgNrxQczTvcshHUKtXOSnMZgmNTxYDuSpmVZ"), }, - { .name = IOV("LoMRaZ"), .value = IOV("ctrjKLAaniyNYXhIfvksEMoxMgNLptNNhITiudFeXxPqbzw"), }, - { .name = IOV("GGfmx"), .value = IOV("KiROZUzkrfezX"), }, - { .name = IOV("pYvd"), .value = IOV("CcBRQwBFhFAybUQBiBMgCRfeiovxaWWqVQIVjvbHvfaEDbuHQOFtQmTBfEgHSeNIgGrbBVBd"), }, - { .name = IOV("xjWKjePRli"), .value = IOV("xyqQsikLseXBuXbKzLyRkQDhaWzMkNcqZds"), }, - { .name = IOV("Xtda"), .value = IOV("HbJtncEKXmTWJOuRVhbCgYVZewfBIWHpqQihQuortaB"), }, - { .name = IOV("YyGAMRrA"), .value = IOV("pggJIBArKAc"), }, - { .name = IOV("TwwMYWOonXmSKCE"), .value = IOV("SmjqhtbT"), }, - { .name = IOV("PWS"), .value = IOV("oKtAjYaCEvQaflCozKmMIrBfXwUMqZqNIaZnbddsKzEDjTn"), }, - { .name = IOV("yEgMJKvXcRBRYuMXw"), .value = IOV("udspTVWgPffRNKCtJDFcTnMKUmsjCTKkbYPEQOlvSSwWQQHiUKYoWGInSuSLlJfVVsNlnGzGmS"), }, - { .name = IOV("bZyprlEnLqmHhOBPTV"), .value = IOV("RRiOUpDaiEaAVHXBdbbMvVAAITinOYdhvUjgIf"), }, - { .name = IOV("hiBGHQGXexNnnlwy"), .value = IOV("VgomgKPCdamBFZnIGlmutvIXdtVHkUkOVGXhIJgsjANyChiKuHVHFWKATlXIqwKNwSBIsEYIj"), }, - { .name = IOV("TyQRLUIFlkuAvyEP"), .value = IOV("coIYvfyqmREmQYIpoywUBNzpzBdsLUTZdkGbAhuiajeffXHkYlpBzqlrbzDjQFIDjAbckaNvegyBi"), }, - { .name = IOV("HlGcgEnOl"), .value = IOV("EybTmZfVgWawVbgquoafFJsTyXLvUzyAWxdxj"), }, - { .name = IOV("josBm"), .value = IOV("CQrSOJFboxgiMhEQdiyakLAqTlWQjmTveJOaFwXvYXGILGHkTILTfZVtvqlAzAcBATltJOrMCAamvmPf"), }, - { .name = IOV("doAbXpFBNqhcjigLew"), .value = IOV("KcZG"), }, - { .name = IOV("yumNNhjqGTcF"), .value = IOV("IIpNHnQXKUgLoPbfbQAtSjGxEZtdwLZhvgGKSdKaLYEuDAY"), }, - { .name = IOV("tfWCrurXxthohfyLyO"), .value = IOV("DGpylbvUmpflemgHRvkqpglDBUZZxUWMBSLJwqajrPIgiaurqVazcEKZlrWiLAhxUpe"), }, - { .name = IOV("lFHflTW"), .value = IOV("CgTwYoSeavwxDDZKeLvclKbMvqnHLOROTyWCSUeQNjIdqzgLlmFuZIAMCZWEELaQLiNNuPxHKTAD"), }, - { .name = IOV("ombszR"), .value = IOV("kKnlluLUFCQcmtsSuoBphfpXFlkelFFhEORHplNBxXCnrVdvZCZmGsqYUJTZHqxISaLtXzQDBeM"), }, - { .name = IOV("eZXONfeJJbfF"), .value = IOV("KJTIZyUujYLFmqzhCUweujYLQjIPpAlxPjoxwkRWfPLvikBnBS"), }, - { .name = IOV("BpdrHeDSGpDneHR"), .value = IOV("tOfhVPYYxjhAtVmImpuSKsOlOmKQxVjldqQYN"), }, - { .name = IOV("NmbIXcyIUFIggHLe"), .value = IOV("EEuplsTHNOaZuEOQCkFEHJPgWHPSHLChjNtVPUTbRveuVfdhOpBqtPJcqTrxoBztWWnYKlLPOKgO"), }, - { .name = IOV("PuMH"), .value = IOV("rGoBazMQvQKKGboVKgEHFGAlrbUcWyfrXekObZaTlhBnCncdirnEqdSzkVluENojKcMxvLfvhdXJmM"), }, - { .name = IOV("bofShIzPujVfE"), .value = IOV("fzQLvqvAiUXoiNirPXyjacOHWCsjyjMGFPwQLYBrfYQVMYTqpMZCphQbTSXOkuOAnLgQkctQhnFgRS"), }, - { .name = IOV("LAqbV"), .value = IOV("I"), }, - { .name = IOV("mY"), .value = IOV("bCAnAggNUpgKfVBJkortecjXzwGYYTxGnWhc"), }, - { .name = IOV("MFX"), .value = IOV("IcqXQDAUUDljHHXoTrNqVnfCjrkdsUqabqJPaqSE"), }, - { .name = IOV("pqmaaN"), .value = IOV("VMijkReBhNaMeAcRaIeEDNXsqDzNHzxwykhbHanvxnHsbhNzyUkHjwvmBpoETJSwrhN"), }, - { .name = IOV("GzBVT"), .value = IOV("ochABjoHYOxxkaVivgzjnuvFUnUZQXzBEAguVKT"), }, - { .name = IOV("DXUTyUCu"), .value = IOV("j"), }, - { .name = IOV("MoJwGFEOTanYqBMTK"), .value = IOV("qZqngBRtGGYhIDGMTNCbmZRnSXyjeRZYzaNjjrxavUjxTfDGsnPYIn"), }, - { .name = IOV("SEQXC"), .value = IOV("oqrUFfaKkUbnDFFbxRdr"), }, - { .name = IOV("aUcEwfKWLnQrDmbw"), .value = IOV("FJGvBnLQKIWYLmHCrKaxSJEMAmRIzBCSzGhUTfdCommyKVifWRaWYddWWvNYbcFitduUnKtDEDxxqISc"), }, - { .name = IOV("kAYwyNmNNRRLqC"), .value = IOV("TTwhgAYmgtqwDHhPHvLThRcIzbXkRqqxKEQmvCiPSQAZXtSWD"), }, - { .name = IOV("nFxzkWEIUvWi"), .value = IOV("ugxWfRlgvMhlQgVoxnlBAQPbEMEz"), }, - { .name = IOV("wljTChEeIncSiIv"), .value = IOV("KdiweoMRLLGBOrtBAbNTkIZHJbnPTZTkWjfcUJVkHFFT"), }, - { .name = IOV("sPJTSrFjzTjiItjC"), .value = IOV("BrM"), }, - { .name = IOV("axTouFoDsDGwBOTnpzL"), .value = IOV("oCPwXTiqZXrSooHawTIhGiKkariunjFUTWvOsOvWqfpXRokQCcAZXMepFSKnyywGXpcSYfX"), }, - { .name = IOV("cuFYmUnaFbaHreObBIFw"), .value = IOV("EpMyYGDNWoxJnGZejEziewBSNIQREiawIyiejuLOhGVJViLmcHStCYZvSPk"), }, - { .name = IOV("DGWDWi"), .value = IOV("jguRqmWPKYxMBrgmrAtEyqiXtxztlRmsqBJlqHbx"), }, - { .name = IOV("i"), .value = IOV("PeXujKWceRfafUvSmOfTSrBMoAZDOkUzZWJBJNHHvijgObqxKQeXYLl"), }, - { .name = IOV("eXhkXFdQsG"), .value = IOV("ezIAJwabtMcIAeCphhNqqvWVjouqrtevNlHnxxGncPVmQnAqfwXBmYupcNrMHjgCpcFdUQEiLWCu"), }, - { .name = IOV("PHjodgHmLRNoFrCangu"), .value = IOV("SbITusmjsm"), }, - { .name = IOV("wpnuQIgY"), .value = IOV("mWkhvJXdpnXOAaqrivLIdOmSyKHXphLJjqPzspDZKTgnhAmVwymnwyGAeKGTpkrGXCXEfpbo"), }, - { .name = IOV("LhJi"), .value = IOV("ZwxqfHsetmwUGlUXWKmmiwi"), }, - { .name = IOV("wlAjpCVjTF"), .value = IOV("EcQvJYgkPHvItPkznHcLMfQzrLUqmldRnzpyjKHHIQfHAPmvskpvisrSbuHUxvcMenv"), }, - { .name = IOV("GnOuIpiOd"), .value = IOV("VuEiDCyAKIH"), }, - { .name = IOV("qscgYJ"), .value = IOV("QRsVvLKmLRCnZBtlNBXoXfpepYldSAmGWtLmYiYFjlJcPGIfERfR"), }, - { .name = IOV("sWaEdiuIEgW"), .value = IOV("VjlMbVEHSHywZrQrKhFKmJOnjObTpuPqIqDbKvGbyXCYAsiQHajKLlvM"), }, - { .name = IOV("AaexYb"), .value = IOV("ERvVbmdCebgpcrvkYxh"), }, - { .name = IOV("TFlkoMcQVgZaZp"), .value = IOV("eAZHR"), }, - { .name = IOV("rxboY"), .value = IOV("xAppjKQJVAAsaFrMtFoK"), }, - { .name = IOV("GQiAfSemCN"), .value = IOV("ZavKizgJxezQeqCtervQDwDlMxhmLffVQ"), }, - { .name = IOV("iDtOlYLTdoeAnfXB"), .value = IOV("SLCxVnVXncxYxvbFFKkSiPxWxeaiVTrHDghoKrDKnZCKbxGHOKFoPmqXSxZmtDBDnCttjqYgwTFuKkj"), }, - { .name = IOV("YUJWc"), .value = IOV("YZbYWVADwNhdcObVPMnvNESHNFxVUOvUAHvaIJOFnPfrtpWoDFMHqCgvcwvuYSFCreTpBP"), }, - { .name = IOV("RQLYAa"), .value = IOV("MRCwSLHLwqVbgAYVqjlfaANccq"), }, - { .name = IOV("WrSEmHn"), .value = IOV("ZQSexaSACHnoMHirswgkmTIdbJDhXmtbhBTRJGhS"), }, - { .name = IOV("tSMqdwQDqeR"), .value = IOV("gYKItbxJkT"), }, - { .name = IOV("RZDl"), .value = IOV("JURVoeqJTrjpApgogTxktTFUmBoDbmgQFUIOdadhuVBdnuBEPgQefcYOGUacedeShuZsufzcgEiQaU"), }, - { .name = IOV("DXgvrCuLGs"), .value = IOV("lcgLhRMehKdIeFAyiAdvtFGiMGfbxUWXrBLFCycYmTLkOFlbBED"), }, - { .name = IOV("l"), .value = IOV("ABgZIDcFtqifszpFAQwDfNddFnhhTdMgaSsQjXoemKfILNvLSzWulQzdgvz"), }, - { .name = IOV("GtYpoMFCcD"), .value = IOV("USezumCWlVTiAPIQieZMzHLuLDtQGJGXZQBBkpNcwlNJXQvyUziKxJXKJLvnNkvalswy"), }, - { .name = IOV("YSoWgwrlCYMlvf"), .value = IOV("TRlJOKvxDyxHEFjecoAqEHFBgEYsvlOPwRNWtOxPCYOzTOACkSdUsshwxjHDx"), }, - { .name = IOV("f"), .value = IOV("jgdRzzHKWkvtinBOoZGq"), }, - { .name = IOV("bKzWPigy"), .value = IOV("DpMKoIIGtuvLDoBLlNvwXZWOaejHGIOwBjN"), }, - { .name = IOV("xUMtswRqo"), .value = IOV("KfJMplvCPRNqJmGmoWwIzyaxCRRAAvtkbIYoDyqlsXAZjqtriv"), }, - { .name = IOV("Ae"), .value = IOV("SolwzhZprdlKtbpAxgfzWyuEXnIffMAzcIvULEaYgrCDGBczyufpuI"), }, - { .name = IOV("RWBMuo"), .value = IOV("rnffAkGyNENUKqvHfJjuVbgJNUAENjwokKAJlScXUyxUdBMiAdKFvJeU"), }, - { .name = IOV("pAaIwOPM"), .value = IOV("kiAoFtxVYqXUIRY"), }, - { .name = IOV("LncErcjkTaPjR"), .value = IOV("YKojZtRZOupsTTYIGSJpbyCGPBOCLffdaRQBLDeWWmKGZkcJUmtHeoLCyeeXtwO"), }, - { .name = IOV("FXPCXFAjuRXDuQUSJrr"), .value = IOV("lPqNHBLWkUKqNHdVPaAGYbCrzhSQbUxaTWPqpONRmJDnuDhdAsPvW"), }, - { .name = IOV("m"), .value = IOV("ePCdBXRBhiWuMWXlJtJBXyrGfgolslOdEyvDALAKBvaLp"), }, - { .name = IOV("htefACmQwAsGCQTKdl"), .value = IOV("CyUlrYorizpvFTZSjJkoBxUHXkIiAmuRGSjmEWuIpGIoWQKuWVebIhKHMfTEePHhSq"), }, - { .name = IOV("ED"), .value = IOV("AzBFGVcVLQwPucZUoffeBqOJs"), }, - { .name = IOV("jtoZkEUsEBZ"), .value = IOV("MmpkGqkUtvJoCvRfOJftUaQRMtTDywSRYjDoSdUveCymfOqyTlNhIKmltqXCdhvpuPSUaB"), }, - { .name = IOV("KnYYzqbN"), .value = IOV("byaSsCaGEanbjdXSowPbCrMMFwrydpwXGgilszfTItWFnUrykgOSelRfshjLLgfjXfrsiqgChqpwHkWN"), }, - { .name = IOV("fCJhX"), .value = IOV("oHTdMwjbhdSNkaoasdFxUeaTS"), }, - { .name = IOV("zZYXFhoeoxPIQidPEjCx"), .value = IOV("QiLTzjESvIWJsfHgAaDQMGiqtcSjNUBChiZ"), }, - { .name = IOV("vaNbMMKq"), .value = IOV("sflyNO"), }, - { .name = IOV("LUADRYdoXmECF"), .value = IOV("aPqEXKLCVwFPq"), }, - { .name = IOV("VgwfKdNsd"), .value = IOV("jSRPeTKNyPnfyjkypWFcLEtcMZENsLVggQAOaSzBwMHhmjZY"), }, - { .name = IOV("qgG"), .value = IOV("CdlcZzguUkdFnZaNwTjDjaIqhFOB"), }, - { .name = IOV("gwZaGsNrGpxBwaI"), .value = IOV("UK"), }, - { .name = IOV("KHTmygwsI"), .value = IOV("ddpNGvsjmJVhzJXBKtwAisVlgieDSUBSBAjhdqyLSSqzNLgpDAINnPUFiDhRqZFiPtOQSBoIdVgJYTFH"), }, - { .name = IOV("usJFEibewCPeNKykNsrc"), .value = IOV("cFyIdhGGKNVBezwGnEHjCbefPUzoxTDcVOWAMSIKYZaAACqBFOHmWmIQBltiSUeoRQlIykRC"), }, - { .name = IOV("TPIm"), .value = IOV("KUEVjnKYKrJvAIkfkXOaxxPDikKXiwtcYaEUMmMjIINexIimvzzobUIEkoymD"), }, - { .name = IOV("QC"), .value = IOV("UucJUtaQoxTqnqVzTqHtKuewGxTqbNODQBrYfrXhPUfZXEGAPPwiofDsSxyNzzRZqERv"), }, - { .name = IOV("MrKGOIZSHBmi"), .value = IOV("RvjeDWEFqurSWxFNBltMnchrjg"), }, - { .name = IOV("btkGvTMDuxMjyagPf"), .value = IOV("CvpvYxintPlTjMvEVBIQyXvQYqe"), }, - { .name = IOV("KRtRstkZoVkB"), .value = IOV("OmmdyhdDcawcEqifrCAk"), }, - { .name = IOV("rpCNYkzrHHKauZldhjR"), .value = IOV("ItaIPopqIyHWCFBZQDhsrVXHxJxy"), }, - { .name = IOV("oKFqsbKYGMbhfOAbrXz"), .value = IOV("aKwvzXsjARkBrCPBGIqGpWlppGvDJdoFAThcqauMSUeCYK"), }, - { .name = IOV("vwdMoDHMqu"), .value = IOV("XdFuLTJqwIcXxpZmUDCPzvVml"), }, - { .name = IOV("tUPkcFuzRaBj"), .value = IOV("UoMkgFuYWVVnEXgJyFjzuHKJQFiRKfJEZuOloOlmbIOvDX"), }, - { .name = IOV("OfnZPMSDtUbrKlZ"), .value = IOV("PVMhBiiOhhEndb"), }, - { .name = IOV("fZIL"), .value = IOV("WyGAqEOsAhXmEVmXjOOHxfYygLEbqYN"), }, - { .name = IOV("Qt"), .value = IOV("gUPxIKJcwJurMarZBMyUNZEEcmQfvUrGZHhvYqHCyaNH"), }, - { .name = IOV("boGa"), .value = IOV("tzURfeUYUDkHnvHLxFLpbwuBwCIVsTGVWdqlHUwcvtzZgJsxbMRaRDwevUNnmFyqfGEwyvqCPEg"), }, - { .name = IOV("GEadjhowrvad"), .value = IOV("APiTKXzrpGpSmdgvJnTrey"), }, - { .name = IOV("YeRUtaGH"), .value = IOV("beYkO"), }, - { .name = IOV("qgmzInhtrKbrKoiBK"), .value = IOV("wPTDgvCKpqDiPbaFHArgIQYsmsdQWuERcrhJyRWtnKrFhgsDbxw"), }, - { .name = IOV("Un"), .value = IOV("XfSxIJMKTRrdUhstNwkyXKccZYyoCPrFLTkc"), }, - { .name = IOV("iCrTYsjqFXTHCLEgdwZV"), .value = IOV("eexUOiCamxzgqGQAhLDMXOPJozMZZSNqBATQKwoWMInHWmXFVefpuLyXDBAmFcy"), }, - { .name = IOV("uFGU"), .value = IOV("mpGVlLVkobDDQPjTLEenJdynfcxnKVHmvzowPVljDCpvCOc"), }, - { .name = IOV("nNvzdwXJiS"), .value = IOV("LpRcSb"), }, - { .name = IOV("sPBOYfjYAXqmYDHknMpE"), .value = IOV("pcaHfWCuMquKxiXtoXaOhjnSlyraC"), }, - { .name = IOV("FdjqCCerGBZflCsquBM"), .value = IOV("bxfkhMWlUIuGxfJOiPbaIcTwFxizuTslTNLJOBqn"), }, - { .name = IOV("z"), .value = IOV("HitjogxDLOGYjWIiBDrJdSONdFwdrLWMsvcnRb"), }, - { .name = IOV("cAvLsDdQSItoR"), .value = IOV("njiZsomdyNsJsgIpg"), }, - { .name = IOV("I"), .value = IOV("vkRpcvQOVfLuXmuRE"), }, - { .name = IOV("Vgq"), .value = IOV("uguNLdYsjrqqQhgDFszCYifUUQGgYxIzIGqsk"), }, - { .name = IOV("twS"), .value = IOV("iLPQJMOnDBsdxwYcegkeinczBypIsvgxfejImGPXMMalAwS"), }, - { .name = IOV("rWUmEs"), .value = IOV("YCgdppB"), }, - { .name = IOV("grrGeXKPUqVltjkr"), .value = IOV("WQdhMUzePROAWCzCMiPjdpmGJBryznPKufhScbfVtWSJErBnnSOHhcSfmYPNYQFuNC"), }, - { .name = IOV("BMFrnU"), .value = IOV("KLufLbmiionOhJCQwcVZcZeMRpGIOhHKjWBbfKrJERrLqoePeFnLMqvQIgiPACwnUDpGuqvZ"), }, - { .name = IOV("vBXzhZ"), .value = IOV("AfHfoSrNasgxriWcaGwROAgqQySzLFstApQYIgpCUyNQZmWAjwjEzZGmLKUFGmWvfzaSIBm"), }, - { .name = IOV("ioPPGJUQsI"), .value = IOV("bJcTMXDbrbCdeGJUvOylUiyFMfJwRunXA"), }, - { .name = IOV("W"), .value = IOV("dhOVlhijj"), }, - { .name = IOV("zkpIhKQiUjAgRlpmCX"), .value = IOV("TlYtUJYjEViYmYIROPxVVMfFiMSZDbylQPqXNtJFgTBdM"), }, - { .name = IOV("vPzlTyvqi"), .value = IOV("NbEfmGJEVgYglSwdEyHReaPDWATUcLcxQSJxBIvxBisZugde"), }, - { .name = IOV("IOWofBioxlKpstzNyZG"), .value = IOV("awgyfHHMQdmDIRHLLpdBECFhnaLEzOOzdyIboaqAqpwPUpvUcCnYTLlZBqeriFnZoFZnSHXlDJFr"), }, - { .name = IOV("cNaDeKqCbhT"), .value = IOV("fGrEktjxGZZHJO"), }, - { .name = IOV("bwqjviNoLgILkAi"), .value = IOV("htNZnmbahCWpZYnzccBagRpnGHOvqQgcSZbtwtraWTJ"), }, - { .name = IOV("DXsBDMlLNrIoQ"), .value = IOV("QnabNNfhVHeHiwRpBqMfaDeLMuQcsuDSoKTEeiXYzBKCFAuYERFjop"), }, - { .name = IOV("XptEFSE"), .value = IOV("AQiYgYRVDtPaYDeejRvThlqMiCCjphvxCuhvPIp"), }, - { .name = IOV("wC"), .value = IOV("MzwlxKWvEnzpGoWFUEurwtouKscVwWGtdNNuqzrcalejJl"), }, - { .name = IOV("ZdpOym"), .value = IOV("GLrTPwylNMlqbCVfxPZPumnBxbfgIJSEfRUYyhmowTLpFRexdmWlLia"), }, - { .name = IOV("mtCVIlPsKbOBAQlG"), .value = IOV("ZRKycpl"), }, - { .name = IOV("dsLRpeYVhRXaG"), .value = IOV("WrZiksNUWOcKBuUQFfWBOoghAMlxSIAdhyafkeCZUtQztRWHTsjMI"), }, - { .name = IOV("UHLcjixs"), .value = IOV("RUQOqhHSLvZCscikKhnOCwppjpcQWtkcIWXFa"), }, - { .name = IOV("VLjW"), .value = IOV("QAHKOHSBlJvUuUAfXqzFmveXJeT"), }, - { .name = IOV("HwjdVwhPZMWdXdl"), .value = IOV("dpvhknoKzILYrNLrZKmlrl"), }, - { .name = IOV("AWnsYMsfi"), .value = IOV("lEkqGrQsZcXjcViSvtRFoMGQrEtRrHmaxmoMOzNTQkdWZYqWSxauSvBL"), }, - { .name = IOV("zNxIfiWMKJEPs"), .value = IOV("MkcfnKOCUb"), }, - { .name = IOV("YXpasGAcuHhufy"), .value = IOV("kPjnOwOiPKjksJPTJXOxtebpmIcWwuGinTzJrLbVsyxXXaOsYkDkRaEOGtbkNQ"), }, - { .name = IOV("UpwGaIo"), .value = IOV("ExYDrfDUeIMCsYRXUw"), }, - { .name = IOV("XDwJFGalp"), .value = IOV("LYbXGJRLVBdiQnyyJqcfXGRQsuqfzglZTTeCMEVCgpnxOOGFHDOgLqmpOmPeFXZSlBxWF"), }, - { .name = IOV("VH"), .value = IOV("PEhrCKjrmtKAebsgBCPvetUKOYidhtmSuIPYT"), }, - { .name = IOV("IlUfhajraswuzWf"), .value = IOV("hmidzefZzkiYyIeMBoTddzBtxFmwniucQCyyutESqIIAAaoCCJdlewbETYdVuFLkYRkWFcVEW"), }, - { .name = IOV("qvQuqNatHlQU"), .value = IOV("OtTxaUFTrVCSQHRYoNnDqmXXhRvlZCrwGqVUFyfRseUZWnhmYUWailOaxGrucOPirvWFChnykYEjdwWz"), }, - { .name = IOV("CSlVPeDEuiKG"), .value = IOV("SYuTOhoZdpFkmIJpqAVfUmJuScPYWZi"), }, - { .name = IOV("GAjxyKfXVy"), .value = IOV("NdWDBRGyRDBQhDXTYqNtES"), }, - { .name = IOV("oybLrG"), .value = IOV("qLxhdyJOiPAmUkaoebNdFOOJjzxMjLFRKlxcUHeTLVX"), }, - { .name = IOV("oKsOjBusdIdAzEzL"), .value = IOV("NSGwabebEKkuyKLIPyYuQnOtFbNlYeVFWwvpwwJDyowMAmDPGqaihEZnCjdiLmKTmrtW"), }, - { .name = IOV("KRVOiTwCrmrsMnMw"), .value = IOV("bJLudqgmrSFNZGNlJKqZUhoKdMsMFCDJDrrVMcqAurDCGnEubWJpOYlgDdKIDKCHrUjBjFHStlWVrKJ"), }, - { .name = IOV("iWReoFOcjqbHZtBVZ"), .value = IOV("XCSIPWKcngUcfOaVFKHeYU"), }, - { .name = IOV("jj"), .value = IOV("iqSICxRjQfstpemuGKOhnelzLNGMs"), }, - { .name = IOV("he"), .value = IOV("gKVwprFYNhrflTLYeeGjMaXdpsbKpjjVvLLThwjtxOLxtFczgyOvjjfqp"), }, - { .name = IOV("kdvJVEtkXuKAA"), .value = IOV("cjOmSioKHyuJoF"), }, - { .name = IOV("gMjs"), .value = IOV("IosRASdiIdGJNiyQeCFAmJacqflgEPKijIVRuAJz"), }, - { .name = IOV("Ultf"), .value = IOV("aauyMejbCyVfAhPwpGypXbTQGztKpZUG"), }, - { .name = IOV("feuPQfdU"), .value = IOV("xWEEIqgZJQkkQAEGomjIYrYXIpPtaVVQHtkaBzRrcSmkyCTVs"), }, - { .name = IOV("lRG"), .value = IOV("fmmcqacyGlHaGMsBIbowurqebKdXxlaAMKftfRC"), }, - { .name = IOV("clLhXhxewoehDhlgE"), .value = IOV("KWOwvFfDGzdtSfAfzaQkXzwFvGMRVRqIjW"), }, - { .name = IOV("uUAVhEEpC"), .value = IOV("YSyKwtmYDZg"), }, - { .name = IOV("lTW"), .value = IOV("lVVbdxIgZWpmDKhoUOjHZzcrKpTYHRvGOHSlnVTS"), }, - { .name = IOV("qZDdtMTdJeCciYfSmo"), .value = IOV("mM"), }, - { .name = IOV("wInroMOAtJNKzorh"), .value = IOV("nUuMbVofgUQdKcRqpKpEQsSnThZAleGGPpatXDaacIWvHlxyQKGZbHStVJLwRUxi"), }, - { .name = IOV("ewIxlhySyseWg"), .value = IOV("IrUZHZDidlKZxGfgETRmNLXkHT"), }, - { .name = IOV("iMasHhrL"), .value = IOV("aKVFFeAKUbTOaVhzRciBpEwyjvfZwOIKljWQpKCjTn"), }, - { .name = IOV("npUEhBxPQRLHQwn"), .value = IOV("vsdwpGQhhcEjvihrPTx"), }, - { .name = IOV("bXBc"), .value = IOV("xujNvqoIdhUPjXK"), }, - { .name = IOV("Z"), .value = IOV("YoUrxFbQKYNFBdekTHbAdrGvZIeNqYKAGvQVS"), }, - { .name = IOV("bjZYozoJKeMlkE"), .value = IOV("JvwUwul"), }, - { .name = IOV("UAmiAvxBYuV"), .value = IOV("zpKWEZXTiNmWhrJewJDyohSueWaywjqtiDJLSRFNsmrcoKrvZSKpsrywAYtKuSmldawenEIShIcv"), }, - { .name = IOV("Th"), .value = IOV("IZfJsmhIPxCWOduhHdFcsjXcLYmyMXITNjMp"), }, - { .name = IOV("lGDeBryAblDmNOTtFNQz"), .value = IOV("vbKrypeBvmtbwwyNTiPvGfLFpvtAbMSslujqWcQilwMmOgmXanZysEVjTZ"), }, - { .name = IOV("fpmThxhyQhHupd"), .value = IOV("vUxZfwDaxyMnRgtJVnJKJMkyyctPjOQTxHLfw"), }, - { .name = IOV("buLxtHOmfyPpaOtQXPqB"), .value = IOV("FsxkBKecHSwKmzalIOvwcMgxaqXRayta"), }, - { .name = IOV("pBTE"), .value = IOV("NgzFWJUPOjKEZQmEXQKhJzagxu"), }, - { .name = IOV("Arpd"), .value = IOV("oWImpvNIzVYYzazwKiHDJP"), }, - { .name = IOV("QgKLNuSAvZZGDp"), .value = IOV("pVjnEVqKVzRfhwjHrKbspPXbELFDDyRGfeBNGd"), }, - { .name = IOV("CoDIi"), .value = IOV("JjvKYPTZTCwIPqQAQhJpWSLgnwVYuXIYCItVGrPiowsEnOsAoPfiUId"), }, - { .name = IOV("hFtGwQNsdxaCnnzutYn"), .value = IOV("UBrHnBNGUhIRrntIkHNORsVCePdBMZZjVBhbPhKjhnJMvDhWyLMCdznUkQlEzwdzUVGIxmU"), }, - { .name = IOV("NjmCfqcJQnEY"), .value = IOV("knyjbqZYrrYZqSe"), }, - { .name = IOV("SYZMMbmYLDmmrgzB"), .value = IOV("bNIZdUFOohPYx"), }, - { .name = IOV("bdHqkEQelL"), .value = IOV("JXLP"), }, - { .name = IOV("rlmcpytPrR"), .value = IOV("qJmxifjwx"), }, - { .name = IOV("xc"), .value = IOV("hAgMTmdr"), }, - { .name = IOV("whoKkUq"), .value = IOV("dHtMWNZXBoSWrYfaznAeggClSCahjFvFRIXdifQrsJrfygxXaTfeFUlmuvgQeXFCt"), }, - { .name = IOV("OYFRLhgOhhRdUskUfIN"), .value = IOV("ZQOvRUtrNjMC"), }, - { .name = IOV("pMtPKBeXnJTF"), .value = IOV("WSJZsEznVqKPBNPXydiEVfearL"), }, - { .name = IOV("YcIxiQhhxSzMx"), .value = IOV("gx"), }, - { .name = IOV("OeMkTXkKBWM"), .value = IOV("xfmFoeJDQqyTwlRiXjNVTDlFeZVJRRtAaUIrJkSBBSgTYqbuThfhLwFkpeSRqdyPFAQIjrUvRbflH"), }, - { .name = IOV("oIsbMbEiVMDaRrtlXm"), .value = IOV("BFJuVHuixdmikGcEhObREJMKnRMhtAHORfXkxBKIIZgVPgAKprMIbqODRLEJeKxjmLHmLuh"), }, - { .name = IOV("QrRuDCGGHrONQENZ"), .value = IOV("JX"), }, - { .name = IOV("HZnuFAhSeaEBAL"), .value = IOV("PvmDpKpwpwPbyxVhxnlgrkSwyTGzoLhDltQ"), }, - { .name = IOV("CGRv"), .value = IOV("DQePABJxTEOrroHBcmvTzzfkbHDJMZSBYyeECaDnrIRUvNDPMLKtVyjUwHJen"), }, - { .name = IOV("yJnWIdWVmV"), .value = IOV("xFQq"), }, - { .name = IOV("hp"), .value = IOV("TYpefrvClILObrEiBRVGsfWDIsBaK"), }, - { .name = IOV("hhTlYHUVbFWKPOEgjhRA"), .value = IOV("xwBYAfyXEGdIWtHddNLovuhMgUvgOpVmQQPKOoGqUtnChPtssjQdwDoLnBKXdUgQakxqSYIvljvJ"), }, - { .name = IOV("vWXvzPUwKNf"), .value = IOV("xeiZnZ"), }, - { .name = IOV("HsQvPtT"), .value = IOV("JZikbGFaVHGIDnDGCKmcavaJFcmqb"), }, - { .name = IOV("JIXyUEZEzZdwLGTVOwP"), .value = IOV("l"), }, - { .name = IOV("yCntxorXQS"), .value = IOV("TSFwQxAXCukemiQoHskDwyLKveALqZKqBzBhBrWyOwGfJpxazPlrZDYJlSHpis"), }, - { .name = IOV("MeNPibwelrIGQ"), .value = IOV("jOVFoebK"), }, - { .name = IOV("cmUxefJbcYvGQhWFhkQ"), .value = IOV("MfvMcTeHEAJmMvoSVUvYMbBYsnOZNpdZyp"), }, - { .name = IOV("iETu"), .value = IOV("TBXqRouQJeyFJqlFemzHlHDMpCge"), }, - { .name = IOV("xpPGCiLaJbijUBTkkRL"), .value = IOV("HXfYwnLjdweWYLTsrTeefxoUENto"), }, - { .name = IOV("h"), .value = IOV("fMOFkn"), }, - { .name = IOV("JZvsuKCqLS"), .value = IOV("RLcIiqyiXDSBbZbpjcwJxEdffKGsJcvjiXAYMDVkQMAuwRJAiFkkUzPvhjzu"), }, - { .name = IOV("e"), .value = IOV("s"), }, - { .name = IOV("MwGaCVCTguoZQ"), .value = IOV("mJLFWHZeBaHpjwynEntyEnykulOIEjmvtugruamTELPaicsTlFfvviVjqAtnZlvYsnevkb"), }, - { .name = IOV("sNnFzNyOCeWhOIkvLM"), .value = IOV("pqImTwJQPKHtwUEFpSjDZSJeHvheVkVfkPTkILVsdQtqapIsBpXRTpktpSyCzxnUCoTRQKt"), }, - { .name = IOV("eWkLXEajBGEF"), .value = IOV("uImPeotGwbTYtPojdvuPMkhwZcYtQYJUyfVesaZTLuYiSaiwwydudcbekaYdUvSCwuJFsAwxfiK"), }, - { .name = IOV("NLNtDxhgB"), .value = IOV("SuopmTlaX"), }, - { .name = IOV("wpoJLuuxR"), .value = IOV("kvqhgvRJJIhzymKMxJnoLCSujRBLUQx"), }, - { .name = IOV("edudnmDXsxM"), .value = IOV("xp"), }, - { .name = IOV("zasrYsf"), .value = IOV("HOKYJwyzRkACDxbhsLnqzytP"), }, - { .name = IOV("jEWoXcONeuvPFuZ"), .value = IOV("yFlx"), }, - { .name = IOV("DJUdjBR"), .value = IOV("dCmswlOYznrwPJMuXlKEvgZaHPEHmQxAcENzEgJNU"), }, - { .name = IOV("ViyvfYSlJPBMs"), .value = IOV("tYVeAPSmJhdNNLbDqYmDJeUNzPzYMwasAZEBiezosKFRFeggcz"), }, - { .name = IOV("PHLlnRbpqldHmt"), .value = IOV("iNaPlcYijVMwS"), }, - { .name = IOV("dIqxSMVkEhgY"), .value = IOV("lQDPrxMdcpCsrnECMibpnxNF"), }, - { .name = IOV("bqjWqDxKhFSvwMhfJIA"), .value = IOV("oOfTSapzbHKepmzRBuRnfsPVYYWHrlOxyoJLpTWHmSezJZUrgFEgRFZOpYEVK"), }, - { .name = IOV("uIDoUqmtWLtnxftkJ"), .value = IOV("iufsorCyQsiAcKVuHeIzglYoPFkgkDzwBNBZyUehSYyeVdOVDMDosJFQl"), }, - { .name = IOV("JxOVqNXvCXDzTV"), .value = IOV("bCbECQEQZpgfxHUURWIqVkElghYzO"), }, - { .name = IOV("EoPL"), .value = IOV("EsieWdDKnwvvsLM"), }, - { .name = IOV("BHz"), .value = IOV("tnDBFAFXhPoCFkLBbTGvDGtyrMnQIMgCZeFPYRHlLRjtYjKOnYNSknWqZysWnqHgBpVACUDslctX"), }, - { .name = IOV("KiQhdfYEM"), .value = IOV("QlUmoPDMyoJEPLIgSMQtI"), }, - { .name = IOV("kpTjvUdXOd"), .value = IOV("OWcVpNCsQEaaeotTQbjpnIHpfpZwwvTysEBZXcIbnsEckpvlhWDfHBVXoEKdGNZ"), }, - { .name = IOV("CGo"), .value = IOV("rZKLFaJldubWcspVawtukhwSxaaGX"), }, - { .name = IOV("PVJHKja"), .value = IOV("zIBXZGAcOuuLrSUtdHVlmaDQhiKtRDafftwgElaCHFZveGgRjkaYswICufkLRtfsuzOUFxNWJFwE"), }, - { .name = IOV("ZrSaScn"), .value = IOV("LfkyExCUQhtoBrzzQQjRj"), }, - { .name = IOV("fd"), .value = IOV("iAUSKNhIMOggxpmlIyIOHNjmIyyWfvqNSFmi"), }, - { .name = IOV("Euw"), .value = IOV("maLBQfRJgMAlbYpFbLkZLIqJWNoseXtALZbjWxJiAk"), }, - { .name = IOV("UbbHVhBphY"), .value = IOV("dltppwWBrKcPjWB"), }, - { .name = IOV("BkzinrXqe"), .value = IOV("wrVcqlgmDfVOzqbiZlHEfKTgThvXcfaPxZFHbTQXhwOIrrZnSMTubiRSrjMkS"), }, - { .name = IOV("ekUGWgQDONBcLpEQCLr"), .value = IOV("gQlZhKzBZpvQrjhnTfEIObaWmLE"), }, - { .name = IOV("iYjRdDLjrBDLib"), .value = IOV("szzuidNWLjpndnjLXeEHljpMJTJoAZVLQorWieFVoiIrYZrEs"), }, - { .name = IOV("VJwFJPMGIjMTBf"), .value = IOV("axGgozKzDEZLRUkOoGuEmAHlEDgAILOhEcYhbcfFtMCGNlNldZOcRyKOxiAqMkVpCIBNzDrYdrZlDhg"), }, - { .name = IOV("gbJgOb"), .value = IOV("doXMXfVeIbunnzEYgNDsnywTyZwaIJyAqNfTjFMtkZgwhyKrRVwIeSKHiSNMeNEeZZggWQnPK"), }, - { .name = IOV("yXPccfVL"), .value = IOV("boB"), }, - { .name = IOV("a"), .value = IOV("Hf"), }, - { .name = IOV("aD"), .value = IOV("GhoGerKRSIxbrTYadmsyqMWhRZWyXasToBHadwELYXqJYdqIQRXsbSfaTlIoVfzRzpKtEwXOt"), }, - { .name = IOV("ThDytZNnJQ"), .value = IOV("htqelIcCFGMHMejVABmYEfZpYvfjkixYgUp"), }, - { .name = IOV("mJbu"), .value = IOV("PVZthmUfcjDqvUdNmbsCTQMAWjKbuQwGuuEkxrIVyShHTxDiCJjxXJFGYpAyhXsirunmwqQkT"), }, - { .name = IOV("BAKvZAyaLPIvpDMQW"), .value = IOV("yEmuuqLlNQqVDZRMKMzRFQXpYmoPZytvmgczjKKOW"), }, - { .name = IOV("jmvPI"), .value = IOV("zkzjbzzgotCwJqBdUSzYrGetJEpuebAUFpoZGNcjyeAZAjqbgCKXofpgxCYSWZWPZMRkODu"), }, - { .name = IOV("BZWKh"), .value = IOV("ougqIzmRzkKpvdCjnMZZiFEGQSYpUzLUCrcWLJRchZwFnqPlMwbzLMbAanCY"), }, - { .name = IOV("RZyqZBXTWKni"), .value = IOV("sJRicBwShlSeDFgihSiZtAHseLVFcIlkvtxfrgsu"), }, - { .name = IOV("OsBmfHYmCIertBi"), .value = IOV("XSLYudYUfsiSr"), }, - { .name = IOV("njwafvvdYBFhSc"), .value = IOV("ExEGydcByKPViIpgjmpQaUcWdNBfWXEyldFen"), }, - { .name = IOV("XjccCdVpGYm"), .value = IOV("tutgTbVafbKzGBZkQCgAcPeDKGEdPfnHlfacduoMwtqxfgHJ"), }, - { .name = IOV("OXgXRkgH"), .value = IOV("cWNerFRyaBAMawDAWCWeHiVFxEQxZrllyVwZSpTGwlUIJNxXRAPkptHTkJxuSKugyWhalYWhYjKoh"), }, - { .name = IOV("kToIsonYBFvt"), .value = IOV("PJPSEpAMslPgDIEPRFuPgxOpNKqgrmkWUIwCsXLtLLzF"), }, - { .name = IOV("FJsHzHsLFyiz"), .value = IOV("fGikfVtoGpc"), }, - { .name = IOV("atMbsJQzDiXqA"), .value = IOV("juwXpuPAqIYsfuzJnakphDUNQHSOubyk"), }, - { .name = IOV("rnqgQDwwFW"), .value = IOV("ROJmWWWigiGMrVcmzAmThWLsorJlHzTtrpPlxXKMBJJzKpOlCyxWHfqQS"), }, - { .name = IOV("BpBHPwFoKksqbW"), .value = IOV("oMLZsUgOzdpUsKiUCWGPARXExmsEUEUKVwKNdvxPAVTrqRIsfxzjqeqvwRwDcOPdHgIRLxcY"), }, - { .name = IOV("mxmmgbWxhQ"), .value = IOV("hNmEELDWdaSjRDbBbPrEaTzojip"), }, - { .name = IOV("KcElxORhLGKz"), .value = IOV("VKPLqYIDgRhATyCUnpDBiYCqNIorQzuubBYdhUfrVRyzlcILyCxeGfSsKaKmtTHkCczhlk"), }, - { .name = IOV("ae"), .value = IOV("SuOKukmKVMsLfUtgyJxZxlTIkKfVWITVfynoASamcjXRnUmXioIsLJAvesQH"), }, - { .name = IOV("FiJqCiQybXLdnFEfz"), .value = IOV("LQySwHBFnpXBwOMxIBoApyGxfdysOwQnndJArsHZeRsoYDbgxjLxSAOOwWbSHbrZwSyStjcR"), }, - { .name = IOV("hwz"), .value = IOV("eiMFCaNKJAzWAtXpUKooRRNP"), }, - { .name = IOV("QSjRioFGFQ"), .value = IOV("VttDExkybjbmFjgnDysnPZQJuVD"), }, - { .name = IOV("CmwDKuXXgOazyXpUY"), .value = IOV("QluppySnnUdwWskOJwQQDGvOhWBCRYiK"), }, - { .name = IOV("XMaGRKQkQDDqlSVPA"), .value = IOV("XSdnYaMtiGdAjDFBwsZdjWanvNdUHsMTPVyLboY"), }, - { .name = IOV("dJTWqoYGrpKQGXRWu"), .value = IOV("BdTPxdzEzrFrCnuBBYPHXxelroka"), }, - { .name = IOV("qDhj"), .value = IOV("jgITntPOL"), }, - { .name = IOV("aJj"), .value = IOV("KkIkzOBQhw"), }, - { .name = IOV("YijYIIkJIil"), .value = IOV("XlKeYdyDaFqZdKCLbGDmHjCmmmuhrjD"), }, - { .name = IOV("MfapywUpx"), .value = IOV("iAuLZcCLDlHPwcbBzoeOOyFkOweCEWQVgRDvwJVWzMIDkZ"), }, - { .name = IOV("UjKb"), .value = IOV("e"), }, - { .name = IOV("AiD"), .value = IOV("coWOCmLgLGBtOxpdNFirqdEJyjMwbYrHUxycfJLKKnnKrGKAAZUKaLxyoLtqnYyxZNN"), }, - { .name = IOV("oFMzyx"), .value = IOV("ZdZRrsDIAXRGNLrjXtEnNiyNzIWxVbEmLMLebxBrMNYTnyPngnRWzd"), }, - { .name = IOV("vT"), .value = IOV("aiZvZdDzIYBitANeUewSlRtvKqhGCtWtWnFJYyWuHVNZ"), }, - { .name = IOV("FZFXWwpuQfR"), .value = IOV("rGUECp"), }, - { .name = IOV("JROvyhbydcilafPZRr"), .value = IOV("bVSWWaCpfuCtSOCWktWdAjqVGvIypcFjGEJhYolLkAiIjUNWSM"), }, - { .name = IOV("xacS"), .value = IOV("PLgUmPVgLzRgoTzAwhQGyurwBBRUEGiqJjjBkJoA"), }, - { .name = IOV("UZcOUGDENvSldh"), .value = IOV("DvXUjWUKHvxxZHEaoiVw"), }, - { .name = IOV("cg"), .value = IOV("ZhDfEKzJoMhfeqU"), }, - { .name = IOV("CUZeKDRAwynXrO"), .value = IOV("oAgEygUrluagUGvhrfoFeQoCLBGttuCqUkoCSVaslqJqnkoWTv"), }, - { .name = IOV("cAZjGIpKUzzXpJsgaHH"), .value = IOV("BZAvSGGdTaHC"), }, - { .name = IOV("vdBwRKsJYHOzCkPN"), .value = IOV("qLHGALydfkaPliInHvcX"), }, - { .name = IOV("bmzZVLsSANKzrylbXg"), .value = IOV("iYNvVUGYKnZlqlMOPVNADiOeKkyaOlBdgHdkudYejqKcZGHMbvNXlyvLUMTyHwJ"), }, - { .name = IOV("b"), .value = IOV("xIyKiEeJnIofABUthzsPQknbIFuuVmDzhSH"), }, - { .name = IOV("KlkbXaEvISos"), .value = IOV("btjWV"), }, - { .name = IOV("ItFgZwZBlDAJpJkDJCZ"), .value = IOV("PiitSmsfqIHXszJzdjivHLaxDr"), }, - { .name = IOV("OcB"), .value = IOV("vXVqboafFBWJEoRgMFTlpYQnaMqmNFpeFUyFOoaXaXuqgErLTa"), }, - { .name = IOV("CaegO"), .value = IOV("ZSyzijHRnQpXOknRdCUrHF"), }, - { .name = IOV("LgpyjEWWcIiL"), .value = IOV("xzivWvSDwzbwBFdFsVNbnvtcFkJdSPDZqCJSvAitIKtViUOHvZUnkkqmDRZWsfUIicbrHwLZMzkmyMuO"), }, - { .name = IOV("cwWrzQjJArRfL"), .value = IOV("nWKghOUpYlRxHdhGWUMvlxtGiPzlbJawvjzbElZTcy"), }, - { .name = IOV("wTNxfjJdea"), .value = IOV("sRzMYdIWvVSmAKMOEXYBcfYgOaGlFJGIjwjCXzP"), }, - { .name = IOV("yc"), .value = IOV("vCLLajbTfTOcZbsSlaypKRhAIVnWAsWdsowLHjGdVMpDrcjCjQJFffhrGjvFIqTTBYmOrNto"), }, - { .name = IOV("R"), .value = IOV("rQvGYslIKLsmxMxoIvVhSMikbsWJ"), }, - { .name = IOV("sqAkRJumJttH"), .value = IOV("zfKnfCmjUuXKCSRIuuAqEpZdLZvMAtDfnLNPJOpDkgQUUuAXCiXsDbsHBjI"), }, - { .name = IOV("xhIHBLKnFJvJCKprTJ"), .value = IOV("ahNqYlfXlqwzAlBqcygxoavGDrVuwDWtbqYsAZttuvMLaJunbsEFfFZh"), }, - { .name = IOV("U"), .value = IOV("PjpFPxiGppaiidbsHyAAshDiumNtyLIkAkSwLxBfHMTfYvfadanNIwz"), }, - { .name = IOV("zKKANKvoUXPFhJcsz"), .value = IOV("neOplhuXGvcS"), }, - { .name = IOV("BDQvDpnXmUwHuuYuBgl"), .value = IOV("OFQubZEDIyXXaGkdq"), }, - { .name = IOV("ymbtzkVrpOFGzvyt"), .value = IOV("oWAegObfBkDtKbSTBjTIFneCRlbxgbHNgcudoDYVRLhsNqSbUGrOcvGPtitIw"), }, - { .name = IOV("NiEzgBzMrxESQNQUloik"), .value = IOV("kkOJHTLfpkaK"), }, - { .name = IOV("FRdKoMUSQcQpGSAHd"), .value = IOV("SGkTOxQwBYhyMorYrkgWlEhIwVLmzhPCYVKOUnIfFJEieAbcVl"), }, - { .name = IOV("baZIJgO"), .value = IOV("xfYcSIeNuKldhWUzrwOWztjeqia"), }, - { .name = IOV("xTuALLweOxMqc"), .value = IOV("LolwOP"), }, - { .name = IOV("amZPj"), .value = IOV("GrzFuWvWmpVwdIPKNBBioYuIQUWdbPEVNwhAcIOwIOeRgvWuILmv"), }, - { .name = IOV("cUk"), .value = IOV("yHmPsfbPWdVIsPDmrtQLCMgQCTTUDGCTKibyQZ"), }, - { .name = IOV("ylMxxPIODYT"), .value = IOV("DeSoxzIocTZRzgijkwYLhKemfeh"), }, - { .name = IOV("SpJDivrFBTdoTCmak"), .value = IOV("idBbvoHlHjUYISPwqGjWBQUCjBJxXrCnyqtmsXDwNkAVkaCiLuFjrUIFtzLGUyEBjMo"), }, - { .name = IOV("qmvaMGNANvWCENGpuaJ"), .value = IOV("kLfOTTvISzClIigMRqcejwVGrxoYX"), }, - { .name = IOV("EuaLZXVLHcIOTq"), .value = IOV("XNxupNmhbSPQwcAUPGlPWDTwIKfG"), }, - { .name = IOV("fEThOwSxiaPZWrdTEqF"), .value = IOV("kTRdwFIv"), }, - { .name = IOV("RJQ"), .value = IOV("YjbzlaKZGXVjrxGMGJitdZoOqGUeSqvWafitmpQshLgkJBadWZUyvCjtOSkwZLpRx"), }, - { .name = IOV("nqZYFrUnQgBAIejoOTx"), .value = IOV("LfBQrhxncZSVEyJgrfXqRFjENKkhoQiwXybTKvYenWeEVyurL"), }, - { .name = IOV("YFkYXBnGScIAlZpyOcv"), .value = IOV("EpOYYYdIbrhBdLbfzJOXGdKvDZekJusVoZCu"), }, - { .name = IOV("z"), .value = IOV("yQmQHCPOVcHClwhjSMVTlxnrJAQFrdstPsSAlvYh"), }, - { .name = IOV("ofEs"), .value = IOV("HikzaRharLGIKzkNJHgGKuOMzAOqROBjKlbnaMeiBgEsXOHlmzBSrjTFNKKM"), }, - { .name = IOV("BJu"), .value = IOV("RumDELqsWnHFidtIcJDkVJ"), }, - { .name = IOV("uypWEDwVOVQzmNjwyua"), .value = IOV("huXtuCKmHPamgvdGNqNCCtpVnMfBlshwtcwcoMSEOOowjflVtOGeKbHOHrp"), }, - { .name = IOV("kacSeKYGP"), .value = IOV("khrsUKzBDgRlqfyHpZFVBQMtJbpaUUcphzrT"), }, - { .name = IOV("fSSISdErAuxMkC"), .value = IOV("XhifvZFgHMKWSXPgIYTweKfsIOpvjkTjKIOIzEWqXSzjzMkCV"), }, - { .name = IOV("gV"), .value = IOV("gJRTHHFBBJxf"), }, - { .name = IOV("cgOmMfWvIEOjGMQvu"), .value = IOV("Pjx"), }, - { .name = IOV("uPEHEYPFczy"), .value = IOV("xcZkKdXAZLOSaWECrE"), }, - { .name = IOV("HfHRlxXyPPhDa"), .value = IOV("BsBEHRxaQZZFndMzBlUnLDDbOLcuWZrkZyvhoyThcPVpmBjcYLpnZnpxKhOjEzJtEisvzaFcSHBEjDgP"), }, - { .name = IOV("tUbvPwLpsMZdWQMYhzI"), .value = IOV("bGdptGWVLWccBOYFnUpgIHzYxNqGupQyMEWVxAelNfTecpzhYIWtXLkC"), }, - { .name = IOV("MOxjOP"), .value = IOV("ZlgQMHJIlmGRBySrU"), }, - { .name = IOV("eHVdYq"), .value = IOV("YhpGaieHAuAJlbbbanOqjjEIEgTdnbUjSWpZuSYRURYUBatHeSpVtdYnbRPwMNktGtTMizLCakIe"), }, - { .name = IOV("FcaaHNQK"), .value = IOV("dNvTRmgdJaRtiYpuHgGSyKkpFxhsquLmpifd"), }, - { .name = IOV("CDBXeFnMqptbjOI"), .value = IOV("AAzZNvbosJAgSXwaTGfJttKWxXvlHptbiGysHmnMysiSg"), }, - { .name = IOV("qKuuVXLYoHVxsm"), .value = IOV("anJLYB"), }, - { .name = IOV("nOzO"), .value = IOV("xagwZFYQHoOsahoQkPbWdMoXLMgBhAXVAQeFewTjsmwyfGgTA"), }, - { .name = IOV("ZPFSMRHnelcT"), .value = IOV("nVouQjsuxkMiPdMFEclJXgmYlFInUsqBsPAHEbiWvrBNKKDfHw"), }, - { .name = IOV("hejDfskUvAh"), .value = IOV("IecLOrGDmNrRRQnLTImsxeDimGYwuvzWdotsVpcbDTfLJjyKIRvbVhDtXGuRWAvmLbrqjIpbwXnfqJEm"), }, - { .name = IOV("qggnDouCTwogDDBo"), .value = IOV("xVTnrjlgvgWjWjDSMWoPzIJmrGqrLYSotNIzdNFcNXGSxqfoG"), }, - { .name = IOV("zPoLNBZTwT"), .value = IOV("PzsZmiDHhDlIfvtBTzbzmAAhKYifypnGuvvMkBuIDqZLmCleWpOPjWEgKLeFAChPUZNKbutEVQnC"), }, - { .name = IOV("NYqHabN"), .value = IOV("exKUUuxNPTNZcNdaSbiMoNhtdIlFtC"), }, - { .name = IOV("tdBZuCHHK"), .value = IOV("VdJ"), }, - { .name = IOV("mdMIcrf"), .value = IOV("lexjUgFTESRbnlfSmFsgXEgQatOeByfYVhxeZUWcLXhCqnSZBLXzKlytlHUMpZRlhS"), }, - { .name = IOV("kcTSIGrUPYBvraKPMWH"), .value = IOV("wWLPfc"), }, - { .name = IOV("znuPwNH"), .value = IOV("GePOKOlnSUwvGWRqrSthRrqumFuBhn"), }, - { .name = IOV("KEAsVPobanOunRsNM"), .value = IOV("SAXyqQpEIS"), }, - { .name = IOV("fOUHTxLMHJRkJuZC"), .value = IOV("fYSFhjciosAaAnELtrKcfqeEXEXxBzhhgEvdemUnjiiVqmerKEFJtOIuB"), }, - { .name = IOV("WIqOFPBZHhUZBI"), .value = IOV("AsDBVtmWhQkBUDugSWDqYOhZTPhmMHLRVELWWzchlhNkDziuyK"), }, - { .name = IOV("jXll"), .value = IOV("ocNztwKJruZktnWnLlkqIoAHqcRvdSMnE"), }, - { .name = IOV("QziOfgUOvdBRLqxnYZiJ"), .value = IOV("LcbPLGxfcleDXArxPdFWfUnYIvHqJZQxBsSJwrWJrudOpWhuIVmToxbcosvcXwkzSOjiNFeuNMbs"), }, - { .name = IOV("hSbl"), .value = IOV("JLYGGHHpnSuGpEOTgYVlYCHgpwVRgqzFYBSMPsHqyWWKrlvxirwDeShSKXyUZGypzPkuceDtDoN"), }, - { .name = IOV("VgTVMcWTJo"), .value = IOV("MoALPMlBhibZXReytGr"), }, - { .name = IOV("tZhyJp"), .value = IOV("dIMxfXwJlCnVjSQuAQKgCboy"), }, - { .name = IOV("BePmUiplouWAIcWexW"), .value = IOV("LMDMRiLCfZxmwisdTozJqnolIEHCgphknLuvYHVqAHKqcyO"), }, - { .name = IOV("SULzCGtcBUyuKn"), .value = IOV("gfNJEVziUSlCtrzcJPdgymQihoFRSUDNBeDdAkwRsBEhAKBNGeaFJcEyqnAuFyL"), }, - { .name = IOV("qSfVAoYcApiHBQzkWNP"), .value = IOV("kORzG"), }, - { .name = IOV("TSoMoUZIs"), .value = IOV("GNmuJztPCjRofzQNUFNfVcJMgfShKqukukJfVYrgOcBW"), }, - { .name = IOV("kDjvjGWojqMk"), .value = IOV("nycYShDZUIqTbGihjgxrktHJnmXFfwfaktbndSuNmdUrzWsYreSlHMnXIlZTxjaikqrUVGVQkqZVSOQ"), }, - { .name = IOV("wwIUoWMhlOdgAYtvzEKP"), .value = IOV("IAiXEHckjUWqujRvGySJ"), }, - { .name = IOV("rCUOVTf"), .value = IOV("aJaIigIoyVrXxxjiSIRWVyOmXWgRFEXWufXqnZ"), }, - { .name = IOV("YwMjsaTMVw"), .value = IOV("TtnxxYcvoBLyPDDZxhiemVkSnoIasTkoH"), }, - { .name = IOV("rxWiIzpIo"), .value = IOV("KeVAEgmYGzhsdSNSovXLKiPLgFXnKjVkSsBXOOOYwgioloXIoQJ"), }, - { .name = IOV("X"), .value = IOV("aouktGTtlIKQvxnXoSaproOVjdjjvHmIzfxnOBVMkqPPrpYe"), }, - { .name = IOV("OUUqminKXjEqEdY"), .value = IOV("Q"), }, - { .name = IOV("rqJfLequFiPnbzgD"), .value = IOV("tvDkWPCMBBoHXNyJCFq"), }, - { .name = IOV("zVRGJbELLndYiKrQt"), .value = IOV("sEGBBNbomThIQYXSyzteABLgxaJnEqXGNtPGZaZSFLWjQWb"), }, - { .name = IOV("nEkKtdonsCDDfkThWU"), .value = IOV("YUqVrEiiPGwCloGVxDRmcdDFpvFAJcSrTgRamVbRcBbylriMmxNdnJzjLNRHEMtKBFLDPBhqWkpDN"), }, - { .name = IOV("brHNrtnMNXajhZcDA"), .value = IOV("ZBSCuHcleGfdpDKRFUpcGkTcsScDEAJWWdjsEcVtySNrUnNMPQvlkB"), }, - { .name = IOV("UcwUf"), .value = IOV("MZSCOjiCcggGylFFYZdLhaAUYmiiaeuvpJEdAUCeHZKBQoFKdscrLRnSRLLwyDGaCokGgg"), }, - { .name = IOV("rdVWVItrGwD"), .value = IOV("rHUzHu"), }, - { .name = IOV("ngOJZkfwIDfaD"), .value = IOV("ePezmeVZ"), }, - { .name = IOV("eFVIfCdmrnoBPj"), .value = IOV("MldEPwKgcJWcZvdxAcbmnHnimINkrAoVCCfghxkcqDcZyGlCl"), }, - { .name = IOV("qCUUjLmDzEkwYaroWv"), .value = IOV("NQFCQjMMUgnaqJsvHmAajDWExeYiS"), }, - { .name = IOV("zwtpEqgf"), .value = IOV("BzLONNvzodPyYxKPWLimwuUMHjRjQAwWrRdWEeCiMhdECMLnGfJRTEFTxn"), }, - { .name = IOV("RmGHPudwuWERsEQlOGCZ"), .value = IOV("QhQlBXp"), }, - { .name = IOV("q"), .value = IOV("LTzyyeuEyDIRReNSeNR"), }, - { .name = IOV("sifzenOBXjXBLxjzZ"), .value = IOV("gFIMYKfCesOXwMGGAsZHKpEGirJzhKKgLwMqWdHzWFYyhZfLpfdvJcqZVyvRfBBSUyoFRBwhwF"), }, - { .name = IOV("nqFfhjcfPIoghy"), .value = IOV("TKRzUtZyAQIfVGWqFjsuHkllFkxQNVZyjvVoMBJlbpUQRKVegrEefQVRoHbDe"), }, - { .name = IOV("Jhg"), .value = IOV("SDoXcvdSCbJbkrpJEDHqeuRhz"), }, - { .name = IOV("UqXbaUpenThqhbgisO"), .value = IOV("nitaTJHLzsIhzjMiBhJQDNkhRgryVveHNexYtGalmbtVfwZPrxsESsYNNuICuZVthq"), }, - { .name = IOV("HXJ"), .value = IOV("YlXaKPzyPvNpWJBDELRwSmQPKrBxSonpEdrEjGxcrRndXErgIETQaGVTPWQjIakm"), }, - { .name = IOV("PuQSsdsXBSz"), .value = IOV("JRCHaYc"), }, - { .name = IOV("O"), .value = IOV("UFtyZdUECtfoFmYVPOVPMFumUARFDvJdBPokKMMebkENXVAwQNIKjMXbfDJ"), }, - { .name = IOV("TjAhTWoeEGq"), .value = IOV("MZbIffIHnohtghStFBzQNtvfBUFaFMIBKdqoh"), }, - { .name = IOV("R"), .value = IOV("hFVeFRgQfdUpoVOYYjukMpPxfmMDFCYTvYjaNSLdsoLAeOXeySJUm"), }, - { .name = IOV("cBwNgRYmznvb"), .value = IOV("GBiEWfRxgErCLjnheRjPiULvHLkavZIisIHQOYSwduAsXXlARiRZkrTBpMjqRlfQPsUDNA"), }, - { .name = IOV("VyDcKhkFkX"), .value = IOV("GJQIAINFKXNIakatfbHksbdrIwYGowJqdRrTyLjX"), }, - { .name = IOV("FkIhEGLkA"), .value = IOV("KEAlCTrBZbuwHZPwuekKOmCLzSiRpdHZaKEAdLRLQkAX"), }, - { .name = IOV("sAgvAZ"), .value = IOV("TZOeZiTBvXcwLfybbsnWqvUJVATmpAypdtagwMMRegVvtBeeskxbcxfTTTIR"), }, - { .name = IOV("gAri"), .value = IOV("cxLTfZZMOvWXqLRhRwVLUCUupCCTMMRVWSpRMYEISOhzfVVwTphsMGaHyRez"), }, - { .name = IOV("UIFsVPBTKKcMkUIocPco"), .value = IOV("RoKiQgBQvYseCoGgTUJzLUrPkOBoSGumoemRQAKoiVXjBLwTLsguiDMhbHMSEcKLPTnumeVcHimf"), }, - { .name = IOV("HWrMzrSvv"), .value = IOV("DTLMRGmaxCOdyUorczejiycSJxsfhDtwhmnEzhKQtKDJoyvFvaHItzsDUPLITmLPFGXSZXzONFVXNXJF"), }, - { .name = IOV("HUGsrAqqiaA"), .value = IOV("yHaAIKEesQWZuJaDrgYclPpzPCdkoFyTTmPVWArzll"), }, - { .name = IOV("DXKzHcpUk"), .value = IOV("VzXBOsXumnjDXGemMcJlmWrTch"), }, - { .name = IOV("sWkYXxLVPeVPIDK"), .value = IOV("yumzAvUpa"), }, - { .name = IOV("rrntGHpwdfiZyLdmja"), .value = IOV("MJeULWUncmYQkXxAFggKg"), }, - { .name = IOV("sjBNJZzyPXMQMgWU"), .value = IOV("IsvMTWcOUnFWbjezXhMPVvykgBCsklzrZEEXkoGeGfEniakZ"), }, - { .name = IOV("VSlrPxMZ"), .value = IOV("avWvfoXKwPuwHEgPmhMLFxqWgDubNmfxJOJXwQqkddFGDurgAFuv"), }, - { .name = IOV("WSWZhuhEWz"), .value = IOV("UzFpqykMF"), }, - { .name = IOV("LsTKPiiEXTFEYWrlHs"), .value = IOV("dSHXtObyxWzasTseSJvmucNcJNzdDdrMZRzXaFawwBiHzn"), }, - { .name = IOV("EmhvGjUaFnsCP"), .value = IOV("MAwcTuQhrgZlDVZWgrgCOrGQSkiPWjDkrylMmMGrwsZWTPoGcMImTTEHvOlittLjDwRiYZunftEiAi"), }, - { .name = IOV("I"), .value = IOV("YABFHGyYwcFsShLcXADdhkcJwOxEGIQpVBfPBvSVAXojsvaEjSvTYBumOHXuQdTlDv"), }, - { .name = IOV("EXTLLWcJbbyn"), .value = IOV("RTXhLkOTyFrtYZcyjZwrPEMYtkHmIUVugAzqFpnrGvMqfIesIdcd"), }, - { .name = IOV("B"), .value = IOV("GvNbvzkZ"), }, - { .name = IOV("invITAvctm"), .value = IOV("zcjvFNQgdxWdEfmyEeoWVhSI"), }, - { .name = IOV("Eyzte"), .value = IOV("hbgXbfLNpZhCXBuQOlqYIBhsvmFbdWzvQfIeumvhxqwMM"), }, - { .name = IOV("uvinYUmJNUuSeJMFmA"), .value = IOV("BgRFXhaSfdojfWNyCaHUpFrAfpbLQAcDZjQgtYMlPqtPxplPHFMfLjHlZhySJvFERlyeaxdsvWAs"), }, - { .name = IOV("VZzSHuloWXA"), .value = IOV("sjoSgtewTmdPiMbGVhKDqTkqnJowMPuNeNTwQWidgVswFGpujJFCdJiTKLJHukFZvilzTrwvnRS"), }, - { .name = IOV("vVxhuRXWNZuyQM"), .value = IOV("LVKRmdcyKGkkHthsdTPundHoBEuaGRxZFuYuItWkRgdQaWSysGnfWoVrpe"), }, - { .name = IOV("xeCRcUK"), .value = IOV("IkktgmAfhXHkVzIrXCulpbZlvugdlRDEbMfKLvQ"), }, - { .name = IOV("aCCBsNtiy"), .value = IOV("kxdLirgevGGkTVhBBXHziHvZtJFbNdEZEUPAnzYq"), }, - { .name = IOV("rXjZavjojPsR"), .value = IOV("ZXcOXNHdmdiKWLPcVdlrTCKusewEAvXfjCG"), }, - { .name = IOV("sKIiwVNfnf"), .value = IOV("hdnNoTaIXVfZFYKM"), }, - { .name = IOV("jhTUIDE"), .value = IOV("KFFowjLbkvcPfNMBZfunXPIrAuiGXdDFaudRO"), }, - { .name = IOV("CnaeQPmcHUKdz"), .value = IOV("dlcOtodKLhTvXotlsNfVITPJjFZLEFWkSxAbCTXDzFTsstTCgvjw"), }, - { .name = IOV("IuyaUuvqKPIuZJzOBW"), .value = IOV("CgB"), }, - { .name = IOV("kdxSxXEz"), .value = IOV("OydTeznSkOVkbyBhJCJNBNSbVstMOugRlUFfdgN"), }, - { .name = IOV("MFiVVNV"), .value = IOV("bbLLS"), }, - { .name = IOV("lAIPMuUAVUoDUTVApdv"), .value = IOV("LFQQMESkRoSvpxzXVCWDiSagxidvMfnIQulWfHvo"), }, - { .name = IOV("qbEevyXcce"), .value = IOV("uVJVPZPznloKqmYQoIjPyGOQYNWedODpVKOCZpqEuqQZZcNqyfJWVChDAQLmVIv"), }, - { .name = IOV("jPgUxQfAJk"), .value = IOV("TQPRU"), }, - { .name = IOV("FoLkGHGpXYGElnIRvtZs"), .value = IOV("K"), }, - { .name = IOV("wPLoyxiUl"), .value = IOV("LHyzFJydBEFBLoDxSxAKfLkdtNQWGTxDgpWkXyStZARzY"), }, - { .name = IOV("oipaHZJT"), .value = IOV("RurSCCswwsnPsYNGLgEKPkKDPouVuvWADvjVRrwmvMbpUdlOenJCvzizLOhGEsqhebNs"), }, - { .name = IOV("HomFrIdZwTxnLMykTYEI"), .value = IOV("EvvLWljqModVbPRQpSfIShHgZsQhjdROPZxaZPtJLPGJhc"), }, - { .name = IOV("PXOOXcDAZAbBiOnj"), .value = IOV("yVvbCsR"), }, - { .name = IOV("J"), .value = IOV("EDPbFFXLZOpwMFqgdCgvXiuCypRHtGsyxgUsOFbdrPMiebqFFZBlKqZVADLd"), }, - { .name = IOV("tFkAXXyayyWWHs"), .value = IOV("mjPKelM"), }, - { .name = IOV("j"), .value = IOV("MeeWAbljdsmbSHOifxRojdayltjqrkHTLEifdVRKlHeRnIbHQVWEFFnZnVoDlCWyYcEt"), }, - { .name = IOV("MaBGazd"), .value = IOV("jwdjyzELobkJXihpNxjejuEOdmZVnHIQAMfEXZQlOjZGPMeSAzvAVRNQSZteysLZypssxPmjcjLoHexK"), }, - { .name = IOV("DcJk"), .value = IOV("ZNjOA"), }, - { .name = IOV("Eyh"), .value = IOV("yjCrVXoKIoIMfARQrvKlftMHZcOpfiJlLIACcUPqObuEDMdT"), }, - { .name = IOV("dMInzagKbONpSvZKy"), .value = IOV("kUtrPGmLtZthoFXnRV"), }, - { .name = IOV("qTWWOfKPuMPnRNho"), .value = IOV("HAZuUxtBXUZyIzSLlojxykvtaMcKQCVzcupqzdKEOCUnIRdKHraRqVKdsWpTUPdH"), }, - { .name = IOV("SQYPmmMFxy"), .value = IOV("VHdDKRrhnrHLqWDMqXLfGZpkMCFgOOTCyaLplguhkJSjBJOzLlwFngIorlvJfvMjLujQxAk"), }, - { .name = IOV("BTcNMvoPUo"), .value = IOV("qkXmvqTrKDrclJdCxfHKPKqFlIRPPJiGOkyMxEdM"), }, - { .name = IOV("ci"), .value = IOV("TqJwyFxpBioBLdVgcXpnlhT"), }, - { .name = IOV("UnYRqVQwPfhqTcjYcL"), .value = IOV("ZpFDe"), }, - { .name = IOV("x"), .value = IOV("mRZMcganloLNRWVrTZdsedmDhiQQuLPSXpZZMvUSnGyqfEfVrTVzQ"), }, - { .name = IOV("uZIF"), .value = IOV("wQXIzckTgOsEwwKYgndcpDYnWbTxGjanCgtVh"), }, - { .name = IOV("fosjeTQYoqCFD"), .value = IOV("EdCS"), }, - { .name = IOV("DumTWIJxzxlbN"), .value = IOV("e"), }, - { .name = IOV("WbnvPXQvS"), .value = IOV("hweawBFlm"), }, - { .name = IOV("zotLSPHoZHEHfpfC"), .value = IOV("aKBnFYlvsrvjLpEaI"), }, - { .name = IOV("zkED"), .value = IOV("OYojrbogCFyNYtprfOXaLGVGfhOAIMvqMTLjERvImSBNDJxVVZclUtowMbSzPtKZeguAk"), }, - { .name = IOV("SaCSA"), .value = IOV("Jooz"), }, - { .name = IOV("UYuUjBNFf"), .value = IOV("WnnepQYVtqTKZBDFygdeghzaZeKnhKYWqVcSmV"), }, - { .name = IOV("MyFNaiFWSnXXHgpZhEsQ"), .value = IOV("mTTVHJFIPRTUEidrcZpGBuwQeAPXRCBreltzALwyCvvuGIqMdwAsLlbJyUzOYu"), }, - { .name = IOV("QdIkfqA"), .value = IOV("PrsusBjZeOFSOleBJHnWlRNhqOZJllyLhRqKAIoiBkmzYple"), }, - { .name = IOV("UsTGuW"), .value = IOV("CPkaBVoZHjnMnFRVxWspYxfcmlUcKZPcChjBmw"), }, - { .name = IOV("YvGGvKbGDYtaEvzIW"), .value = IOV("eFGLeoivGYmHLhyFfQWpNYQRaiajqJHjgIgeGLheeAWrdsJcMtgDLvZhDxUWfCyDgYgt"), }, - { .name = IOV("XprMekygXFov"), .value = IOV("ByrYLfxdRYRIwpcrBrQZiToNxqjjAizTePaDUweKHVDkPwrVCJnSTLzIdQOlGszeBi"), }, - { .name = IOV("mujBDvWgw"), .value = IOV("KQthBknixjANJGUJQXZtc"), }, - { .name = IOV("UXldacpQvQ"), .value = IOV("vYMKaRQKpZktJVJWFJzmgXubrlJiK"), }, - { .name = IOV("ixgAQb"), .value = IOV("tFPsgvDQKxxzOjalHCmcuUjrLthZkTmOuYtgKQCBQo"), }, - { .name = IOV("YeDyPOVlPnOSCAS"), .value = IOV("vyvIxKopeSRTSVlWCuCrvVzIg"), }, - { .name = IOV("AcZoqjykNPkjAaoPEiOU"), .value = IOV("EXoKErzLZDjkuDWzndDBrbCTibyIJNDW"), }, - { .name = IOV("mjRufWI"), .value = IOV("YtePWwTkhOUEthrHQTVqwlSaUftwEYaaYRLyxDxqCWA"), }, - { .name = IOV("ZyZvRlXcpLQplzhY"), .value = IOV("GvcCwNNKPGwXafiMMkjjDyzOGeVTkaWGkFBNAdYLJfU"), }, - { .name = IOV("iuWRAIlWqsFFRa"), .value = IOV("HxXzcMFMjAcWMnNBORwQlKvVddnporlzJRMjfgOnPfuJPEbysFYCMWUnQfmAKlRwh"), }, - { .name = IOV("NyfJ"), .value = IOV("DIdMALgAgnWwzHSMHwxIhMERmmiKmQStATQdRbhZZVRQVAJtF"), }, - { .name = IOV("csrMXioOSRhHFC"), .value = IOV("ExVIuVEDktDbYrEoepdJkUYtHiUXdeyaeFh"), }, - { .name = IOV("nBgadbnGNkJBDhSMIO"), .value = IOV("YLkFhqBXfZQKYQySJuqpvnTNUWaAfDxZzOwsoZSdSFLXKiQSIEpCzqh"), }, - { .name = IOV("BFWQmtkxVFwAjFNSmDXi"), .value = IOV("IztTMYxANBvnpwGJGbFrTFJGrxqUMNkRFQWijBxSZuPu"), }, - { .name = IOV("ZisOBCViohRWOycLybW"), .value = IOV("nFtMQRRtAyFNJIDhafYENFHyHKiaK"), }, - { .name = IOV("AE"), .value = IOV("QWvyLAKhIULNkobP"), }, - { .name = IOV("AojdkEVPWRnNJIUQdUd"), .value = IOV("QoqVwUndOvFXgghXeCeKHOsRQ"), }, - { .name = IOV("qhKOmjYVfOWHuJlrh"), .value = IOV("PwUrDyNUmPWiqosgdyJQdSjMUEpYDPzETKoSbXdCrVcscj"), }, - { .name = IOV("r"), .value = IOV("uiYnQcaHJJaWNCozdevgMdoyKPHkNoTkVRacPISespjRPDtrofjrfysCQxlP"), }, - { .name = IOV("eaYeAcZZS"), .value = IOV("dQGnOtedCkbgvMgCniCXxtu"), }, - { .name = IOV("ZDEYFBrTg"), .value = IOV("SpekZabBAipvTwrFPTlkVtFzBQiGVaXMJnIYVpPibZGaxIIqtsOEHsYAUnViVZQbNhpAzaYYdu"), }, - { .name = IOV("gOrGmfBmBnKBc"), .value = IOV("jySnudwsIlpiuzdXwamsKvHERhdksc"), }, - { .name = IOV("MhKLgtKxso"), .value = IOV("FTyBAdYJlZZNlBOesBPsafBUZauUMqrrIotLzQd"), }, - { .name = IOV("APAQSSxkYZPeyaUT"), .value = IOV("kysEwsnLShgcNUMAcrHIWLOdjKSGERQMLXLVKAlbzeQlJogMptjOQxwEmfgsKZcqVzF"), }, - { .name = IOV("vDHeNvCOSWhaaxu"), .value = IOV("tbErfDIlHVALkXZzzWTrzz"), }, - { .name = IOV("NYz"), .value = IOV("HODbgNFaaOmOAiuxfPWaEDjMgAxHha"), }, - { .name = IOV("G"), .value = IOV("dMNDQxxBMAyJOvVoiUSkowJdouULOJlkLUuKMPJAYpfbHShRHAKpuhPDMLnHxuxvHGqKUisLpcPTc"), }, - { .name = IOV("zp"), .value = IOV("LatlNwbuvMoIToHVpYzOSpQsIgLKpgJGXzcPMNXdoPjFaqOpipM"), }, - { .name = IOV("LiPjzVOfmzBaOynzrxp"), .value = IOV("aVfoxxLPlPIwdWUoqQjQBfSonDLMrwfszWoRRzJZHQlYhVczMQLlhIYAr"), }, - { .name = IOV("EvCpdcgvLH"), .value = IOV("DKkgqbFxnUbrLqQgMkClyUeLzbsTVVkGQbyGNQlGjzvZBONbdYvSWPtZPRruCSCYbLz"), }, - { .name = IOV("DAv"), .value = IOV("TmTGJvHDXkpgrYaMKGrRieyapfcRLdLbNPnAqddjPSTpwVJhpuuOaiyGNxRfYqY"), }, - { .name = IOV("ZKVVdjECZSTp"), .value = IOV("ECgzLMOdxpfzuyk"), }, - { .name = IOV("mVfYAlA"), .value = IOV("APcHMtZHENnVyIdDWmXjRTIZ"), }, - { .name = IOV("MiBJZqNAOi"), .value = IOV("XTejqAOLftskpLZmugkLWuQGxNRYnpSsSFnePwBAerEhLIsBpwKzSvzQrmgbuozrjFNDDycNeDaHPa"), }, - { .name = IOV("ZEuuWhFxgrupKNFrw"), .value = IOV("tjHjUvLnrTFshnwbIianhyxmpRlmAVVBgWTOivKhSOErBX"), }, - { .name = IOV("infEqnECgjlowoNKBpvq"), .value = IOV("FvOTwAVBhwPBsUIGnyCKPThbsyHKfLVQdxYSGsiufmKYbqowFRizOKtRmuMllSQp"), }, - { .name = IOV("LMKpJIiHLCB"), .value = IOV("RZVFrHysxvtxy"), }, - { .name = IOV("FFA"), .value = IOV("KpTddnrGpvUFhmquyLFhIWkbjFLSpzhSAEEPViNVVQoajkCiFDvDxpJ"), }, - { .name = IOV("oUVtoUCwDbEuw"), .value = IOV("NLFRtaGqaTPLFiJUhAOxnVUVkQJyDdlLK"), }, - { .name = IOV("jDCeCQrocfWSVsgJPCPA"), .value = IOV("JyeoHwETEVlytAVUTObiMrCwAeuNCzXFMFXixEteriM"), }, - { .name = IOV("QnmhIotULW"), .value = IOV("BRRYpyyEScVWfWRcTOwRsVWtrHOrcTHKwkStofUz"), }, - { .name = IOV("GMAJRCIwFqkXXgIFBqz"), .value = IOV("lzgGVxu"), }, - { .name = IOV("AVAYEm"), .value = IOV("emlHqLwuXMRriCraUocNJuOeXAGbNuIbn"), }, - { .name = IOV("JcDpCNTuyDtJyC"), .value = IOV("sbSzcNmoQjsLOqBHWmTibnbzpRyJquJEIesFgvp"), }, - { .name = IOV("GQrtSOabgWUra"), .value = IOV("gfcaDMPZPBOPFLCwOtHRQHKZSEnXnXSda"), }, - { .name = IOV("jr"), .value = IOV("MavBjThOrPo"), }, - { .name = IOV("dMSfOWP"), .value = IOV("IoIrkETMKsAyayNgqxcPEBkRoCZlCJLqC"), }, - { .name = IOV("UWDcxylhYxhvyTRrnkw"), .value = IOV("dMaSoibUtTZmncwOHLrKXcmPdRNoPJKKcaMgVoogZLJZOpf"), }, - { .name = IOV("yasOuhMpKnJKIBUWqef"), .value = IOV("NmjSOexxGHOLYGjcDnqRchdYnFNpIlhlELQjjCBSYsLlPD"), }, - { .name = IOV("OLHTxyRjMmAFfhkjS"), .value = IOV("SzE"), }, - { .name = IOV("oRDULvmpkRQT"), .value = IOV("DrLrvavCRqnEuLMGpZuknLbIXYAmopJmH"), }, - { .name = IOV("fIrgOFp"), .value = IOV("MeKMKbOINyILMHTprdFDJepfVFQXPLHdAufzoddu"), }, - { .name = IOV("bdgcSGaR"), .value = IOV("JgqUAExoytCYXmcxcqstcHhMuaHVaDU"), }, - { .name = IOV("OlNICuM"), .value = IOV("kWGGkQKzXwQYgSTUKFYuBFEHmRwZmWZCMRdWizEYohBxZHMRHJatvYIgqcxFOBs"), }, - { .name = IOV("AhoIQtMtgJ"), .value = IOV("oRyaANpgEEIUrqSMfGcacsZzhoBWTUlFGPWqcYAiZwHkruulUavhINEiFCBSSrpSp"), }, - { .name = IOV("jowJITPrUxMMXpP"), .value = IOV("EBIjAgzehBuLCRejhrlJZVXooQNoXMfHwiiYQWoaduB"), }, - { .name = IOV("BsOaZSkChueSN"), .value = IOV("vJtpETkGekrLGABJwpPWbJseRqGDOfCJHjOYiHidCmZnFBcpEgmDIIBztuHHWHdnAzDkCYKU"), }, - { .name = IOV("TIEBFfxpdJjg"), .value = IOV("NdqznhOoSnxwcAFTAmrCWPPKuyICxyxFyNljXpZwOltWIjt"), }, - { .name = IOV("XArtzFZKqK"), .value = IOV("tTcFypEGXYXKbfYQHqFmoHyrQAEuBKfYmfxreuFuJR"), }, - { .name = IOV("TtuzKHeZsvlEUDCm"), .value = IOV("boGE"), }, - { .name = IOV("rJTN"), .value = IOV("LhQVtIjZhQvoAYFuUtDQbdFJHrumQZiHETwNveLyyfZqvycvgWn"), }, - { .name = IOV("LwlkvzbOqTaqI"), .value = IOV("iCRmmugyfAYPkOkflRRzTUbyuxEYPkouZfdyrervERhQsbmOemYBzbvnYXhzZzDPRheZMZMuWKejfTfj"), }, - { .name = IOV("yIyLkFz"), .value = IOV("vrSBVPrZkNQ"), }, - { .name = IOV("GP"), .value = IOV("ZzCTHJbflegnWzwhKzTbybxAyARZNnWUqWuGvVYLpTHrOFQmIAuKqRAYjMnvUBEyUFv"), }, - { .name = IOV("vCLAxmMlDe"), .value = IOV("DqpkDuOLaQRrTODJivscwRzRQejmKWz"), }, - { .name = IOV("NOeC"), .value = IOV("SReWUsWMCZYxU"), }, - { .name = IOV("XNREBJgnqawaZngNPR"), .value = IOV("EcNmgETKHiKZdBPFpCCzEqxrHzRXdxvRBOTNvUj"), }, - { .name = IOV("yBwPfMOtXe"), .value = IOV("FFz"), }, - { .name = IOV("TUXoEkcAtrS"), .value = IOV("EvzrimilxkrlzPndtSBVFCuUoEeqHvSyDhziuPkLaylusGcmSwbWFWkhmoqXzawGiKxokbQzlpe"), }, - { .name = IOV("veatZGFHkGWFumOpku"), .value = IOV("GAZSrbpxTGEyOUgJrqS"), }, - { .name = IOV("RHWRcdiznnX"), .value = IOV("veNevTOtDs"), }, - { .name = IOV("GbQdjKztTcCaENCkqEBs"), .value = IOV("VziSkWiOxzGKyVpjqoPhlipOGaJJoZfxIOyplBPAwkNFXzyvtoXDWNlHSUhVywRLoWAn"), }, - { .name = IOV("OpQZwDzfGKsGYIsGG"), .value = IOV("xnqwqaejNrSjAtZEHELjluIzPCcOweSBBFhMTQIvfcFFdXEzitTSBkxgLFr"), }, - { .name = IOV("EJEqW"), .value = IOV("OudlWFJu"), }, - { .name = IOV("oy"), .value = IOV("gLHfElpXuLonImjiPLesCkhsNXxbQemlQjxuLUaC"), }, - { .name = IOV("ZiinpWCdjDTENrZYQ"), .value = IOV("HHlV"), }, - { .name = IOV("eOQWVGeWacnqLQmIv"), .value = IOV("pxgxUnjaffVkBKXegLHOOxEOAuLEZQHexGdIxWbDOWSEHNEmNVefLHNUKvPpo"), }, - { .name = IOV("rTjqLSEGaYQPNI"), .value = IOV("NONrZlFMCFfSxHCWEtfAalGpgFYypRISUFirDJOCoLoMRXyOnfrJBGdnAQqgwZePZSAYXLa"), }, - { .name = IOV("zJPbfOtrgHlguVvA"), .value = IOV("bMOLCiCUJ"), }, - { .name = IOV("X"), .value = IOV("anIWqHipklqMnFFOzVXLoLBcOzbElOzcDjWlcEftzWQgAjSxVLmahxzSgsjtlD"), }, - { .name = IOV("CUAKroATyoEBZfsMueQ"), .value = IOV("ZFXaiDMvRqdUsbfSoayFFzxVlRimjECWjSaqgxnLYxooC"), }, - { .name = IOV("VUIVXPlHcIovSWrZn"), .value = IOV("cQFDnFYfUfVdHhdDDYGzhnSNLVyXdnZiMzbwgUiPTApxHwHXsvASIUtmcmEFjxYjObsVSWQHTGj"), }, - { .name = IOV("ZvktI"), .value = IOV("wWEWZmydVeKCTfrHOWewqrvjhRXCJYapsvQAGuUvxxwRdfCqneJAHOdEIUjd"), }, - { .name = IOV("ashSHpTUaol"), .value = IOV("aTQzJxlbUSSTraHaytmKVLfuDWwVpAWf"), }, - { .name = IOV("MYySXuGhHkmA"), .value = IOV("sOKceaCsHPcyUuMfRaBpDgaPJvtRuiPoAgmXzmTqKMnZGGnkqDLLZfpjORMbI"), }, - { .name = IOV("PhMVeQvGBt"), .value = IOV("sxihIBlXmizSalLFVRuzdgAhxrLmTVVZGStTRGDpTGSDjbiPHRxTMmdwKOcuHaQTnOzUlnuRN"), }, - { .name = IOV("ckvXzGRxSTzpqCQFH"), .value = IOV("zbArsQpAqjTVjQCBOLXkvocKXXqGyutJnMSyboaiSRsXmHNWdSLKLPoLePwTRGMMcFPiKKwkQjVTtAah"), }, - { .name = IOV("SwQvAfo"), .value = IOV("QXehRZdCUgepQlbwaUzibTTL"), }, - { .name = IOV("TRoGwMCeVUIS"), .value = IOV("lqSjLvrOdDmRoKWGqrniGzOlnYUClmmwsenFsZnjabJtfoevwQcyrwlZnSkmcnqiBdKinh"), }, - { .name = IOV("dgQzt"), .value = IOV("OMBiNAtojJkByVSZaDmXwtJMJYmwsmKZjjKdOgzXIKovfIpYmZjkzMUsxmeGqNPPUKqYI"), }, - { .name = IOV("hlVuBMViBTm"), .value = IOV("DvmBwcyHalyuqaiQJgTuTgtLBpSfcpghewJHVygL"), }, - { .name = IOV("DdDSsPkom"), .value = IOV("EJsaNdHQiPislYbstZhOvOSEcEqpKGlaG"), }, - { .name = IOV("puhkqTNEGslUHItT"), .value = IOV("NxoBwgvjss"), }, - { .name = IOV("ZEjUa"), .value = IOV("mAKJoTDasHTvAlVFiSJnDwcQfcG"), }, - { .name = IOV("ZCHseXc"), .value = IOV("XKLAQKSsxjFHoESsUZISAWIbOslTKbQuGuhQRMZ"), }, - { .name = IOV("OzZdwmRkgpND"), .value = IOV("RftDSjRoBaGqIrCXAyheKZMIrILDzx"), }, - { .name = IOV("YbWTijPyiHrZyQEcVN"), .value = IOV("CAjKK"), }, - { .name = IOV("jbQvxNBOW"), .value = IOV("xFeYBWLOJOYRHsOrpxydgNevfwpzXmrCECMhiWcMUAXUWDnNIaqQj"), }, - { .name = IOV("hVTTEiJjigbkpQhY"), .value = IOV("kcaGnoWfvZKuEvBWXOWcZTjGbtSoxzNopoKeohzwDFddANhMaYEArvhMdXGSGS"), }, - { .name = IOV("wpQLLj"), .value = IOV("rzbp"), }, - { .name = IOV("XLn"), .value = IOV("HREWQvGlAKHqiaxxLaBbHUGXYdddteeIYuEwCNJhQbKCNeBUNYsJbUoFkiLiGKJgbWTwEDLH"), }, - { .name = IOV("rStoubRoZulwr"), .value = IOV("VVRJHoV"), }, - { .name = IOV("ssHTHKGRSyBGCKzCO"), .value = IOV("ZEwbWOibkHOlbNpFoPqXXDNEcanduTg"), }, - { .name = IOV("R"), .value = IOV("jJkGkLUsiBlJsByznfnGxXfHPgDxXMQUyZtJRPDqXsGScAmTAh"), }, - { .name = IOV("dosVPzBFj"), .value = IOV("zsSmctoQpILvdYxUtYZeGA"), }, - { .name = IOV("WDZShuHuCLpQtGtviVZy"), .value = IOV("fPgjGOMjkbEIxhBdgFDZXCIyxvOywfUAlhFoTmcyaCLTvdww"), }, - { .name = IOV("ItWbDPEuFkwwjez"), .value = IOV("PbQXijBAjihyWjealvvheWpy"), }, - { .name = IOV("rumAeIjYuZEiOrJ"), .value = IOV("nNnvbrBRsvtukMOCHbbutJnzIkoNvvwbbuuJZLwMexdmeMHLBhMSVMaMFZdnuLoaGJpsBTVpmo"), }, - { .name = IOV("Ide"), .value = IOV("lGrMcTYbbuefjFFscpWnodoOL"), }, - { .name = IOV("NlatoPCxCuHIvFe"), .value = IOV("RnDywMfOskbmPClSpAYTyYctIJGZhBhFYMHIbWV"), }, - { .name = IOV("KfYr"), .value = IOV("IHNKojnWyYrhImnHFYTuuymbKdnxKO"), }, - { .name = IOV("gjI"), .value = IOV("cEmSAXQ"), }, - { .name = IOV("hNm"), .value = IOV("elsQYLAntwJlfGUqVrJu"), }, - { .name = IOV("q"), .value = IOV("sNtyhotgokZSgHUqnmnMWrYfasrQXjWcMuziWXSWjEfHZHyofYHfJpubPQmZhUyttTNJZh"), }, - { .name = IOV("wbhSAd"), .value = IOV("fKOzaklqrZkphglHMSaWhOPzBxgUNkfpgEzPIqyjcMroacOOrmNbRsLwpeiIAgBdQ"), }, - { .name = IOV("WKEwTkwpspYBVgyUUY"), .value = IOV("FFOAvrCJHaqOFcUoGUvTTyPxrvxgVAejciVnZvvoCVAahGfYXnpjeoSeUwRNfiykyT"), }, - { .name = IOV("ftyToyWRGPUr"), .value = IOV("NeVkOhnejYWYJtOiNRiojCEJnnyTBqyELQFFxMgtgSpILbfiQcCCCMjFLziFavUBgrOAtA"), }, - { .name = IOV("dNtbzE"), .value = IOV("AsZIEMMGRsphvfUMBGYECgbzbMVxCozuyuUNkVrMwCNWZpiLCoyX"), }, - { .name = IOV("EnYaRttiLGA"), .value = IOV("tNZNwdXXbKgzwfJVlsTaJStMiXcxTGrLgYIzyJEZbunQebCtfP"), }, - { .name = IOV("scV"), .value = IOV("DrAQzTZoqYkWWQdOJBCubrCnVrbrGIorJEnwhayNgUVn"), }, - { .name = IOV("SNGGmKiBE"), .value = IOV("KqYzlVpRFLwiWWCtfpkiWPMHnYWGpxgPBhTUWFrZJQdlvYANvKxbcWaFMDadAFmOnKc"), }, - { .name = IOV("mROaQvYbLVTTJ"), .value = IOV("cjxFlxQuaXurjIxEcfYQAnJ"), }, - { .name = IOV("NZE"), .value = IOV("wghtXfcgSgJVaLFZLFfjLFKcxNxGBPLMLcBFiHitHKAPUUGGwxbJXRvlBAtrzZXswalirOrERbNARhp"), }, - { .name = IOV("zHgNgmfpsweqJgvLVk"), .value = IOV("EZlfzbBRpfrNtnsHVvqHtqYGWtWEVuElJbYejYOsaNMzjWTZ"), }, - { .name = IOV("molaPm"), .value = IOV("BZSkvRiEgTGqxMqOtGgewtnRwgahsYQwtWCKjkhUbPSIRghPfWaUkWfazmKmnMaXWdTw"), }, - { .name = IOV("CCFQyEXozXtyS"), .value = IOV("vEgMfdVfJRnuxGudVsSEtKXPcOzjhjssIPNzfROHsoxdEJoaKxlEUz"), }, - { .name = IOV("Cg"), .value = IOV("vwjhnLkQflcAxuMuLJTTlxgvPpKWNNBYojueogkN"), }, - { .name = IOV("OZhvHezSyoETtqOzC"), .value = IOV("HnZTgFKmbmVdXQCTPcfXmLhxCbmrJydAkeOHJQcQhMglGYzPNnNiVtUeDNw"), }, - { .name = IOV("ioRcMyXTByNXxUww"), .value = IOV("LIZZIogVVJOACDEKlAYXqUnBGTDAsZgBsmu"), }, - { .name = IOV("hxyQCRfNbQMlngLZKDhY"), .value = IOV("lEVhnAv"), }, - { .name = IOV("SjxmlAWWVEQ"), .value = IOV("unyoDdMzdfAcPBKzlBwivSDAtocftrKSVNpxKDMyNZRaLnICH"), }, - { .name = IOV("KPmJjqQXrPg"), .value = IOV("rOg"), }, - { .name = IOV("kpYsOFrCWcAxwj"), .value = IOV("dFQLnQICHeDNQsEQAIcLrPIBpAomJHLZfdnvByiQHILhZZXpGvsVSz"), }, - { .name = IOV("C"), .value = IOV("bGoEIcyCmuQydqeYVwRNskUVKdxRNuxSiHZmfPWcJNnyXruxqjUKKAKHgQ"), }, - { .name = IOV("wTm"), .value = IOV("TRkhJRGxlynfCAIjGJTHWGsRwGTDsDltiqaOTGvEjACGYRFxfdaoGeyFhEwGbdGQw"), }, - { .name = IOV("hzARnrDWS"), .value = IOV("g"), }, - { .name = IOV("uFEny"), .value = IOV("AuRtckSNVvwLUmBcPLvBI"), }, - { .name = IOV("G"), .value = IOV("sxzUbQErdWlqUwiYsmWfZqpLEjiJdr"), }, - { .name = IOV("mHmzD"), .value = IOV("sOAzZRRpowUqhVehCUcdQOXtdcEKgUiJQFHujsVUKGBUkpwU"), }, - { .name = IOV("AOouKvQOLxWSH"), .value = IOV("cblOwcnfRFjZATALbXWmGvQkG"), }, - { .name = IOV("VBXnzAEuuskAu"), .value = IOV("nMZTfwaCkjzZNxyXMpxqYbdNVRXmrNtOUJrMkVBFxr"), }, - { .name = IOV("GBGxgdiWHJVt"), .value = IOV("aXNJCmOOF"), }, - { .name = IOV("mVGuLjAYr"), .value = IOV("WlC"), }, - { .name = IOV("xxooHIggAriUG"), .value = IOV("KBolBjJXEHib"), }, - { .name = IOV("PsNJhnokvdGtduNVp"), .value = IOV("khRyqwvkZcaUrpvGLqCxNsLTFuoKMkRTnfRxzKETsCYbpmqqkjUalQaahzaIKXJMHkKfFvKCNLTglw"), }, - { .name = IOV("MDCi"), .value = IOV("pBAsuAgXULuPwlRaioGMVUODnC"), }, - { .name = IOV("JxHP"), .value = IOV("bzdkedhDPPLcbocBLBojabZGBZgvdZcSFRkFetqYXrZVFdyjqLTQJnmQNtV"), }, - { .name = IOV("jHlMZ"), .value = IOV("AjgFvHRtkegDm"), }, - { .name = IOV("QMjEMmwzMuabqRN"), .value = IOV("UveutFTuQjksuUYQGksglgEoQBcdsMRWTziLMNXZEnmgUIYllcRZA"), }, - { .name = IOV("GMq"), .value = IOV("CeoAnBBWFg"), }, - { .name = IOV("foNFGFCsuBXzEjQXJpc"), .value = IOV("nCBvhCUPw"), }, - { .name = IOV("huyLYMIYssZLMqDctIm"), .value = IOV("iSneQVwDsJUWVTKHxeWOhYUJZfoItrxFCBUpIVqcfKGLqYLwMX"), }, - { .name = IOV("oWHfr"), .value = IOV("XYBTlUkhuiVmKItpqtONSOWWlCrsirIJMAMDYdJSPMNHxwfDHsiQnBFSKSPcUVEHeDshzHDhXnneJzKQ"), }, - { .name = IOV("HiVnNJT"), .value = IOV("jrRRNEKOlJXARFligVrlNixObgQKXPiRFgzbzCopoEnqumVJhKYXoUJgsbUVUiCyzbJL"), }, - { .name = IOV("XNuXdEsThlRCUaw"), .value = IOV("sDaYYiZjRGepqcQwQLoAKcfWbpSJCINdcXdUibhGEDbQEoMyhyMlTkB"), }, - { .name = IOV("hJL"), .value = IOV("EVpPieRovwIGTWgdYMAwZpgEvIlrwxSssQMqIrLfNg"), }, - { .name = IOV("mt"), .value = IOV("XqtisNlhiCWbcacCtyUDQNawsoATYmOFM"), }, - { .name = IOV("LI"), .value = IOV("lFuAbkWebLjpINOCbrPRdl"), }, - { .name = IOV("fKZugpolFKCmEEpBgEC"), .value = IOV("DSmgfxmBDVRDhjctcvzcXUPabLiHvomGxXFKGcZsTEVYeRO"), }, - { .name = IOV("dvrYyycvQbdvRrA"), .value = IOV("xZsLzpvodHZSPCIOmoMOdRbCTFavLQZmWpnXnFjiJxTLsnLCarTDxE"), }, - { .name = IOV("erCaPXnAcbEu"), .value = IOV("neLhNprUMDwZsvYobFdOKxr"), }, - { .name = IOV("NvUFRiMSjGRyh"), .value = IOV("DRjyAtCFaFXHfL"), }, - { .name = IOV("OYrvedfXykhzI"), .value = IOV("nVzaIRVwWt"), }, - { .name = IOV("NGlteLZoAzNyrKmI"), .value = IOV("WDCiYZOcIDTAbAsOKYJXF"), }, - { .name = IOV("yOxZspxMKTULhzF"), .value = IOV("dfdmqOLHusfkLCdgikStxZRrshncdNeXiuaYztZJquhWgkaQfuzKoagFLtxqxBXhWltVuJguMuW"), }, - { .name = IOV("ikOPPyTcifcso"), .value = IOV("DAqTFOlgkarfPmukXyphsPVAAsgYSwhvpucpLbYiQoNEAIVWVEfNVWutrpquyRSJDdRek"), }, - { .name = IOV("ouhjByEIPOH"), .value = IOV("WuVhSstybiXofqvLbEMTwTBjtNYrznnXWjREmxLfLtrkwIIlmUwaXsaW"), }, - { .name = IOV("mKHxkHftNgBP"), .value = IOV("zQYGfmHcTjKocVtPKjgcGCuQIHrbqGJvIrOtMLvucNATwvjOEnavyBWPYGtTXoyUn"), }, - { .name = IOV("ZAIelDWgjm"), .value = IOV("symYUMQkncdlFBAgJMOOZRRwAOhcKFUfPOyPWvj"), }, - { .name = IOV("W"), .value = IOV("GTRhZPkwcttUjwbILmBqygvbjfOOlbgQwSbYxFTambSThSrzXSMmUykbKJDR"), }, - { .name = IOV("MUcFaorFEPBylTr"), .value = IOV("XUuiJrKyKmlmRfeLXDMGOQKDNYFzhGJLNGUspGWEeLVlnFAdORpZTXb"), }, - { .name = IOV("vpaXGnZd"), .value = IOV("kjcpoODvnITffpTTjsgtsJaUQGMZYsqMbCEaitFbeqFkMb"), }, - { .name = IOV("PsJZuegOAa"), .value = IOV("FdCaAYSlUOLdzxRhVtCOmloYVn"), }, - { .name = IOV("grVHanmSFhV"), .value = IOV("iONeaQVjyTYuNJixPHuidcPpAalWDRBBzHiIpKGXIouoIKSNaFzYrByrG"), }, - { .name = IOV("kYZtwO"), .value = IOV("HiBLZiiysaIJezPYRLAblfOrTHCspjFQwdkUilwJZ"), }, - { .name = IOV("lXmoODnwhsWRUbqayFiG"), .value = IOV("wnvweDJCoNqsmECjcZVMxKhQOChnEZ"), }, - { .name = IOV("OCghFrihLqjjvlHyqDG"), .value = IOV("LnNkpFjNyzMqOJgDxENGKSFkoKoGMMpIdpmuIKWppoZEDmEQ"), }, - { .name = IOV("qFGYuTVTrVHExDBePqnk"), .value = IOV("YkJnqGkMBNZgZzBxOsWzLojVodNviKJTLIZDnxZR"), }, - { .name = IOV("cfvxSzSgpQTlHXjtOrt"), .value = IOV("WUsuhKWMaeLgZxZqvwxvcoblSLOVJAjBct"), }, - { .name = IOV("AFjvYPV"), .value = IOV("vobVMzwtRpACOlVOhecnBAfWFzDPVYGZOQTPxNxdZNPGzirheCZtApHiTBEqaRGH"), }, - { .name = IOV("AbqvOoni"), .value = IOV("zYbuQvFuthbUVyTcHKHlB"), }, - { .name = IOV("FK"), .value = IOV("TNZQEJSVMAxmXjNQmfymwxcRFXnssRDZgjuOmmloyIHr"), }, - { .name = IOV("IjhddcGB"), .value = IOV("kgHgHFygTQNEKANcKByLNFfYcDbaZJuanyvjEYiOJfG"), }, - { .name = IOV("DGWzPbbhQKCnFjsgXdm"), .value = IOV("TMMOwLhvTSgWVryOURlnlBzONmxPxbWtUJwGZAPgFVhvXGzspRApyjMneUnvENE"), }, - { .name = IOV("TvpBWLnCPMmJdB"), .value = IOV("SOxNNWoqTdRInwtoxaQttDuPyxNlKGecRyjqkZiWNvlXcSQtiWOLaoVuEBOTzZQWYp"), }, - { .name = IOV("cTOHetjsjGlZdgVd"), .value = IOV("eHbQxbbknmrtnNhncsbhsWHjidjHTi"), }, - { .name = IOV("vrJ"), .value = IOV("XOFcOE"), }, - { .name = IOV("laWwqxhokKYhhh"), .value = IOV("nkgmAnMNpwncZxzCJMEcypBWzqZGctiRXJwboPgXVuTjsuDUVGebatHZzwwJcTlLNnMBQmBGh"), }, - { .name = IOV("vazVFmUZVt"), .value = IOV("qloFbBJz"), }, - { .name = IOV("zpRKx"), .value = IOV("oQYheEVXVFngHCpqoIekWvMUOCjTDLDNWJpovacNpaBeOLGnSqPFFXlIcwTCow"), }, - { .name = IOV("JNzSzGShktgxBYU"), .value = IOV("MGbrPUyiWSjlGrVYVaZHlkAVDpmwxlmcG"), }, - { .name = IOV("ayHkdAJ"), .value = IOV("CphqdzHsieSrowcoojNVCyv"), }, - { .name = IOV("yan"), .value = IOV("IcUfKxamUjnSdkAbPkcOWdylotsPL"), }, - { .name = IOV("cldaRMGifZQGyuAJyKF"), .value = IOV("OUcgsnpWxpCJNcLkBxvDeNyMUBYkHJhYVaNEVhDzJaKvktKTaXrGBOsijIEgIQ"), }, - { .name = IOV("bwooLHLrkMH"), .value = IOV("pyYygK"), }, - { .name = IOV("LC"), .value = IOV("vwiqgljRkyYjoeEBncGTpaDcOdMbrxHNCzflBYkkdwX"), }, - { .name = IOV("cYJEta"), .value = IOV("CMd"), }, - { .name = IOV("AeEXVfHiXeYsXjgthZXC"), .value = IOV("FQbpgzgPkIJiGdITjcuMsGWQtuJwGFSYVggKiwayvofRgbwwmfcTPZUwNFGtmWtI"), }, - { .name = IOV("zPuovEZComsCSQTjX"), .value = IOV("JXHuBhecVKPZlajaArMNbaIMzNSHcJPlSGanSyIDJfFjbNm"), }, - { .name = IOV("KyqJJyAnDF"), .value = IOV("tMEAdCiv"), }, - { .name = IOV("FHyQPxQFUstTzWTsp"), .value = IOV("yqcADGQvsXUlzNDUaOdnJYQLznAUhEbeqNquYeLcXDwrZAnUulhrgJjShKPlWvczqagJZMCz"), }, - { .name = IOV("hMUueSmhIBNqepQL"), .value = IOV("bvYHDqztDeDRNGQkyiqlQiRsrGgQVnrRQCFhSmGmLXEgLJS"), }, - { .name = IOV("VvIHFyTJxe"), .value = IOV("wppIFHfcEaqKYzTsRSGTFNKhdUFyGdWvDjjuOEgLrwQDpKWtQGmRIaUfdDpqbpjJZZbUWfeTANU"), }, - { .name = IOV("uhzwjUcCOEgFDEOFr"), .value = IOV("cTZGpaLMQjCzOfunPkTMmJBUYcNdWYrTBDmJSxIWXRZiNo"), }, - { .name = IOV("JEWICXz"), .value = IOV("MDjeslAiNPFvnb"), }, - { .name = IOV("WDxPjHrSYsihtVlkBO"), .value = IOV("WCasHiugswjPpKEoFSecmtprvPOecmDpjh"), }, - { .name = IOV("obegHEMQ"), .value = IOV("LKpzjZJbeEPmtVGrfOkLNenKlUiiarVIFcXnhmzRFRfULixKReLoODyLkPheSRaSLsWgpCcOMRzuYY"), }, - { .name = IOV("mZNBVpYTg"), .value = IOV("uLaSjNlfoeJCPCiNojhotzRoVLkGvbVcdNwh"), }, - { .name = IOV("UXhPebnrEqe"), .value = IOV("nPnbW"), }, - { .name = IOV("cUk"), .value = IOV("sjoxyOcuWNULUifjGnQgXmpmqdVXIRww"), }, - { .name = IOV("zcvQhgRXdtlgQ"), .value = IOV("PCyaRQtFxmgqLdSVgiIpQBC"), }, - { .name = IOV("BLdKpJCDnmNpFemtejTH"), .value = IOV("yTaMLZGureyupgKShlhKxBxxQLyIsAxHGqEynRktpPXYTq"), }, - { .name = IOV("c"), .value = IOV("jJHqhwsihiBJAFVOZVrGqIXaTHQYhKAwdUxTqVrpRDuxJmtFarQAyLnuMSXqhhpMSr"), }, - { .name = IOV("EB"), .value = IOV("cVbaIlrKOCofieiYKQtsOvHKiydSCHmCSNhciYJSHwZEeTINgqDqRCoFoxs"), }, - { .name = IOV("PPCnsnuagtFZDGIsj"), .value = IOV("PMZImyfPCqndJJjJpSDAWvTyIwQkcAFXPtnKvblgMqHNSkRMwszAcxMOU"), }, - { .name = IOV("qnCcbChrt"), .value = IOV("vBcAbyrEZinKBlomVD"), }, - { .name = IOV("HcE"), .value = IOV("QYSAPOSSdJDznXFaUfJbCDSzNzjO"), }, - { .name = IOV("TllWGrC"), .value = IOV("BAsFTDtiQXFjETNnKQ"), }, - { .name = IOV("TjLOHMYw"), .value = IOV("lhzRznMJCmHXNLTfZteecafKQVWNrKAmeUGMOaWPYkQGFqRwCZrOdKpYIxqZVWxWRdyizccKPntfu"), }, - { .name = IOV("xhpioWbByfemwUYhyrib"), .value = IOV("YGrOwJUNDPUxeRtcjIjnpzQxM"), }, - { .name = IOV("tVAhZgXVwG"), .value = IOV("OomnZPyFX"), }, - { .name = IOV("SoYFfakCxpc"), .value = IOV("LprImJhQeGrEibEeZdOZBvFuxk"), }, - { .name = IOV("PacKLO"), .value = IOV("aHuVUguRQYrmdoQ"), }, - { .name = IOV("Mfdj"), .value = IOV("qEoVhxGlwOxGjyijJARBzKvfeCXYtpBNlhbymEZUkWeQKDNIPPHFcco"), }, - { .name = IOV("kZaSFOaeWp"), .value = IOV("rGoFlkoKcrMPmHuVrfjEVDTroEpPIsorahtqqDmhWOQbEHOofvbmylxVEfEOYaBrvWDiK"), }, - { .name = IOV("vgfuuYHj"), .value = IOV("vEElpQQpOkoNkGIolytcCfTVWgoXSYURxzEFleF"), }, - { .name = IOV("hg"), .value = IOV("YuTafOQZEQbQXJTCSQGXlcHnkWNenMwakejTcTJPaWtjgljxMRpwgRCx"), }, - { .name = IOV("PimhA"), .value = IOV("DBofYOdUBlLddVAQVIVayJzo"), }, - { .name = IOV("ogfPbGUSiJ"), .value = IOV("nmwnjIoFJOSHHCcInghdgsEoJfFlIRxYL"), }, - { .name = IOV("UHg"), .value = IOV("MLQLqmUICzkMxRLvSmazkBrkHlYQdPHkpWiLzGBirBhsfNht"), }, - { .name = IOV("GnGdryKgmkU"), .value = IOV("JCYNapRIFiGgrheSHNPjcqEznpOMMlPsUJybKAksYWXNHAGZlbbx"), }, - { .name = IOV("wShswexiXjBBjs"), .value = IOV("ffJnyiXgqnJxGucC"), }, - { .name = IOV("tPW"), .value = IOV("znrBZoPNltCrLyxGJqvmLllnNTqD"), }, - { .name = IOV("oXPUPXAZamlHISgglr"), .value = IOV("eGZBRGBphNTYJMbsbPXKQNLSbiYmYQUnJnvDtGltWeOLjcG"), }, - { .name = IOV("gkjJrkxhZsvXWBZnEpzY"), .value = IOV("vYTvYTvhgGloDSoaGoXnrLpdMzhzmiAdoIFPCzSyfZiyLjFHIhrvPhinHQbBliyy"), }, - { .name = IOV("MIWzuOFttX"), .value = IOV("IIjUXWmyzVmcqHrRxRDlINANdGvnMTgkZIxBKjpKooWHC"), }, - { .name = IOV("lcNdOKv"), .value = IOV("YhYFajmAtwdVLAAUWEIiCcVAXBcigvMbAbbJfICo"), }, - { .name = IOV("KBN"), .value = IOV("mTukF"), }, - { .name = IOV("uG"), .value = IOV("fhbbPtZqKRwFHRFhPVqvcbiwfbUwKAzCjoULUw"), }, - { .name = IOV("vetHczTddiCAbGEAj"), .value = IOV("yJbAWLVvMatJuneMrPrlQvuxQVJNEMRYWHkeKwGgSJmuNsZxS"), }, - { .name = IOV("iD"), .value = IOV("UfnjMxMbBhtZKaKNEVcKhSSLwupRZDoCkMfxOnYHJZMpD"), }, - { .name = IOV("FrKJKHmJBqO"), .value = IOV("DWKgaDbRlyPsJODwtTyIvCmBiIijlzmXUqWXJertDmbKlEIKovwsWZHunZigWozxMoTOxjw"), }, - { .name = IOV("ZPQwB"), .value = IOV("aZTdyANmagKGRbwSv"), }, - { .name = IOV("wpz"), .value = IOV("KwWzsZeOhVwrfhdEvymHNWxMcFqkPgmbpcrUURoinLOIrARUsjXQevnwgjMCQJSwyNvcwCNkX"), }, - { .name = IOV("OSSszzMQiOu"), .value = IOV("tJEyDzqajAvinVRbTErSZNbvbOKCPcUvqqAtxQOGLLGMkTtBCQtmBWdSwLsfwY"), }, - { .name = IOV("BfQHogGqaFYrpkmrrilf"), .value = IOV("GFzEBNMTekcGylbDLIjsgAppNcNvkWLoelkZlrwenvNjMxhEZplUdXacRTYzHAz"), }, - { .name = IOV("klq"), .value = IOV("cmMaHQYONsxZFhMslZgxPuQSCRfvazZvepTBHmqKCPLsnfqSwAl"), }, - { .name = IOV("WOJytMbhq"), .value = IOV("AiTdudmKqZaUfeanIAtvTBM"), }, - { .name = IOV("jDLgeVgR"), .value = IOV("KRXoMyXIemfwSmi"), }, - { .name = IOV("DKbEopOgVJNVcDF"), .value = IOV("pwhkWxzJswCtVfNdqzyWBBfhoJPGQGwLkXbHbHBjCRWUwNBRxyRQhbXofwKanKajVfAaMYy"), }, - { .name = IOV("nnBNVeQzJOqTC"), .value = IOV("OZE"), }, - { .name = IOV("QZDigFdK"), .value = IOV("IuXopaDsXExViJTRCYWtGeXCnNbTUWwDXSVzfzRnEdfPs"), }, - { .name = IOV("PSmViBxZuFMvAu"), .value = IOV("RIXjAcZrryinXnfK"), }, - { .name = IOV("i"), .value = IOV("yswqHiwUGBJCuYtEBQDsVWUwPBbbbBDOCNVygGKAefZdlbepUXQoNboihFgEXHwYn"), }, - { .name = IOV("MZL"), .value = IOV("xXLlILsDW"), }, - { .name = IOV("SolDgWLXwk"), .value = IOV("tyVbgowOvJhbVyGvqvXLBuISqHdCUSBXzVBYFmteXVunIfQcaZHaKCtIxqngZovLRtBlbKN"), }, - { .name = IOV("fqjSfRyhYFzUpN"), .value = IOV("sGoaZDQwPOxwhkYcGfrnRjanbEHjyJjRYCzvkdrmljwC"), }, - { .name = IOV("xNYQTcdrQupNqZECRtfq"), .value = IOV("hxjhtIsKUDC"), }, - { .name = IOV("ibXcmyHkIgkLmEj"), .value = IOV("MVRBdOPXvYTADQGNAYEyUvmdyikPSlwcDZPuhzwTEEHsRUCjUaHLhNrbsAOyPgzcROiruGSwYrPYsYr"), }, - { .name = IOV("bX"), .value = IOV("cLzovQKXILVVrnTGxVNSNxZXMpunQJIrsTMAyrsgmdRipoLrItkBRsuCVPaNMOlPMPppTAYbhRKRO"), }, - { .name = IOV("YDHuNG"), .value = IOV("nUgSaPUhkSfYGLgKYCVwaSwpaaEYKWaZUuceohaMgxBZknQECmqnjeHGUiFsUCsljEWg"), }, - { .name = IOV("k"), .value = IOV("GYYSAeqTNZsVZmbupjcLMvaWGiWEnMLLuKvGquHQm"), }, - { .name = IOV("bvqExEjTTBVTCGm"), .value = IOV("OOfDHrZnrFQQWFZnlqfKQXkyFcX"), }, - { .name = IOV("OStomZiBEIvXxry"), .value = IOV("vbgDZ"), }, - { .name = IOV("hYkJUjpsVygUvmLse"), .value = IOV("DUFuNNIZGrkivEJbNJzNAAXdkKWrdrJrrTMqPjjvoDymKnFYXizMmtJUae"), }, - { .name = IOV("z"), .value = IOV("IIHvhklrSusqulsQxioiZCXyiszmzpokvRNKzVOuebRaGfgBoLPWHrQgGZAcpXkNOxyeERXzozBnYB"), }, - { .name = IOV("jvMeshclQubhRT"), .value = IOV("kVlLRTaAVkaVLXKjgqpYOjaduaVTmJvkmulwSsNamkzDxGGqxzdZhBbjDPZuLRRFxjfZxmjqkWfRGVNw"), }, - { .name = IOV("nWceQVULVFSwWsm"), .value = IOV("jfChoohuIrEiBvGMypHcW"), }, - { .name = IOV("gkcBClLlqtAUEJBey"), .value = IOV("tPgefXsSvbzNOtAdvdcgqEbMpNiiPdpbXHsOkZSnxQcBSkbonJVMoX"), }, - { .name = IOV("hWyqy"), .value = IOV("ovYkdUgCoVwObEsY"), }, - { .name = IOV("CCzPKmdaoh"), .value = IOV("dvPMXdLijgNsayjwNPZWJDHGCNvLsrPAT"), }, - { .name = IOV("mDIW"), .value = IOV("m"), }, - { .name = IOV("lGOsLxiydclEChqGqGN"), .value = IOV("KrLnYR"), }, - { .name = IOV("MkHGFsUXZumSDwfvjl"), .value = IOV("piZpJKPHqnIRoMygLimvNPnreYYLuyvPm"), }, - { .name = IOV("mnZLwe"), .value = IOV("SVZu"), }, - { .name = IOV("ABdjyTWkXapLPf"), .value = IOV("YxfckXTHwqSOcJyaihQioiHICYlCafMYgKTHDkWxsTBgVTqvUNJDDtAIXGNdHXDgDRjwO"), }, - { .name = IOV("NLdixXGZQ"), .value = IOV("aDVdQotzVgXVxYykXjDTJgaqrmJDsEOdPGtiXzLtrkCbjpQ"), }, - { .name = IOV("htNjXzrFVgqEVkdx"), .value = IOV("mvmNABxFywFeTJZAZMvX"), }, - { .name = IOV("zmHUmRsgBwEeFeEKBwra"), .value = IOV("cvtktHuVBTnaCHbMiSRbsgDejquAGrfEXq"), }, - { .name = IOV("ewIjhWLSYnonEF"), .value = IOV("kUxhnrKdOdZCcrxSTxoLIaaCgd"), }, - { .name = IOV("GemvEmdMz"), .value = IOV("rHYuJYCGzKLnDKQlXjskyiTFuuMRQFXpmyYAAkgyTBa"), }, - { .name = IOV("KWyIeG"), .value = IOV("qoil"), }, - { .name = IOV("hFDveYlxKDxUMdRMjFKg"), .value = IOV("paCNLZYOsBCbPFmuPcAonGwcBkEdDJTcIA"), }, - { .name = IOV("rUUEB"), .value = IOV("eMwWAXlTKrVOYTxTpHXpSeLLEZNriYToyTVGCmPYDRuaOmAagiInwYoihXxy"), }, - { .name = IOV("eIywKAlzPO"), .value = IOV("sghjIreWyaGgkbVzAnDxeXRXQSWQTyPKHaoMwYllvYimxrNHMrQQbpdczpCoD"), }, - { .name = IOV("wFdyIQoCfo"), .value = IOV("tjCAkdwJEsdTAxUfhCjcCqKJcRwBrgCdqCSzcq"), }, - { .name = IOV("XEocDnMVmYbPkPK"), .value = IOV("lNhwBwaBEpuiAnKzFazMvigsLZszhxRUVrdaIEXAVIkpjsBm"), }, - { .name = IOV("tsHxzVAkVbKpKB"), .value = IOV("rUUjoLdSFkQEFWZPugjPOPbdXHdHEostjKgIsoICqJgVBbRmqXZCAixCEFRxcLaq"), }, - { .name = IOV("DKInRYhCLNfqyca"), .value = IOV("SwOMlEbZWCmcdvaWYysrIsRkyrLLLXIWKaWXfMxFkuYbLfzH"), }, - { .name = IOV("s"), .value = IOV("yKpjkhgPBGleJFtoEgjHunpoLcyVEBFFjadFfWIscPCXnLIdyQjzqdELieUhAcjfNTYyOLeQrUaIIIH"), }, - { .name = IOV("kZhIMcmKczwYuLEht"), .value = IOV("lwMFGZrrhZDDY"), }, - { .name = IOV("m"), .value = IOV("veZVQqrPfgoDPHABKXWRuhPkTI"), }, - { .name = IOV("kdgCp"), .value = IOV("eiBEoQgOpknPsqzXbGEIMrnnxvxcKAoJXTFFrmOHuLCMOpAUTiWmSeZSqQkmvFoQrm"), }, - { .name = IOV("OxBdZHeVxZeWd"), .value = IOV("dLBo"), }, - { .name = IOV("OcpmMFYAShY"), .value = IOV("WlUPVttiNgimYNyTGvsNIhRFzyHWzwhDHgdPUSunINGkkuApfeAhKHxZKxCVnQjcHNDgtfVp"), }, - { .name = IOV("jocdwmxDvqy"), .value = IOV("lokiCSJogzQcSzvEZMfFwTJarTYRkQynPf"), }, - { .name = IOV("qOFQYIVNtzCjK"), .value = IOV("hy"), }, - { .name = IOV("fLJWrpBRojGwEDnSO"), .value = IOV("ZniMBBuFMxCKhBAQWKYbRWWnsymADzytlZbXTcPPXaKTbAlyTFVDmQDlPGQWoixmhgBzmIn"), }, - { .name = IOV("KTRkArjGKGeICbj"), .value = IOV("VeAKbGLPeRhhAUghuhU"), }, - { .name = IOV("bA"), .value = IOV("RfPynZrBhaUeqaMtRqCFKSQFGzfZjvNzBfgCDxzCcHwqUootOaKitMkOLSUsEOftHcZEIZQhEMG"), }, - { .name = IOV("mOYXIudcosXHLuflFB"), .value = IOV("MxvBqTUUWzGtuyaorvdBkqXRQrxfIpRSttf"), }, - { .name = IOV("LpDfSTVuKm"), .value = IOV("BPYHaiDrXaVxXAZgtUJoOmUameIfCMlUczBxnyPFa"), }, - { .name = IOV("GVrnDeMXk"), .value = IOV("naRWAiCweaHpGzOzVdxQrVOzJGzWAnOCpgbhASNjTYQvKpmJMnXYiLtRRDpmR"), }, - { .name = IOV("MrMW"), .value = IOV("tDllVsxxilbyfLFpWixHfovpRCeSNCprgKQVVp"), }, - { .name = IOV("boIRbEuueXHhqekOQpld"), .value = IOV("TpMMvnKpYHbQPrlqclhsVhSaDEUCbwvDbK"), }, - { .name = IOV("NCeiBNSNykZUhFGIf"), .value = IOV("AuGmcVFjLvdZfzvlAbqpIfcszzbSPRkUAFGNocaTGeCjEdFwxITZuYqrcGFglEeKdPvXhLBy"), }, - { .name = IOV("wvoRpJPDsPuYtsGKj"), .value = IOV("FfbEbHFeiPQBXAb"), }, - { .name = IOV("WpahPMnMeyNYEuvz"), .value = IOV("mNHRFhOI"), }, - { .name = IOV("HOwHwxfCXXxEKXBPDl"), .value = IOV("fEZKTVDVXBCgyDHuhRAnMRBGnAmLhWGCawPOVPoTciCkbMhecQCD"), }, - { .name = IOV("BmmITx"), .value = IOV("AXMZocoXiASjezNlaEzqiEkOgkVSKfvFrhtwtwwghgwLtsjdvnvtibEWMhoVplMjyC"), }, - { .name = IOV("VdKRHRztpX"), .value = IOV("qbjXZHXNWrfLTJYJBxdv"), }, - { .name = IOV("wQDmcKIqmvo"), .value = IOV("VxhnexEkhLAsPeuYlMgdtmzjerrGegPifHIlmeLQHYgbRqdVpWSipFACEMhMzQ"), }, - { .name = IOV("Y"), .value = IOV("tLwMsK"), }, - { .name = IOV("fLTPUaRtr"), .value = IOV("PqbXwMxuDLtqPrfmTb"), }, - { .name = IOV("dS"), .value = IOV("dDIeaIo"), }, - { .name = IOV("ugFBmHLLp"), .value = IOV("VVWKSvXvKuSUGOOXaoFqcYMVyf"), }, - { .name = IOV("JqOufSpUhaqoFbLnEZ"), .value = IOV("vippxyDsaQnvadQBfbbntnXShyssjMhjGvYPTegNGRtICtuirC"), }, - { .name = IOV("WLyMrrBFtXjrhqmgD"), .value = IOV("FFZPGSDYcpSXcPFjhceLNZDYBiEwN"), }, - { .name = IOV("yqpIJCRRSJimq"), .value = IOV("zlLuZTXcgdzGYmOHcIfRHWV"), }, - { .name = IOV("zVkmOHuYQsehxy"), .value = IOV("pZLRNvHALJLreIlWrgqLnEkUIggJmmtLQJJnUnhMTuIidpHbucsYdjeKWZvTgeacRGsolTSbhV"), }, - { .name = IOV("abxFvnLwHYOZ"), .value = IOV("gMKCgzzOWMFpUTempaGWQhrCDMiNVpxUgegUcmxCItG"), }, - { .name = IOV("OIVWeMZ"), .value = IOV("lwYHanTmlmeWCvCVHFlOrxzYBgdgTl"), }, - { .name = IOV("fDrrqmpgHLJv"), .value = IOV("zFzpGPNVSeKfVOoaJLljMXbwIwqURlcqvJjwCb"), }, - { .name = IOV("Fs"), .value = IOV("HXNbnJBgfkpbgvYSmgGmVuLZicCHfOMKUQYKkYnHPbfnnwNMrkrmJEKtMZYGzcfu"), }, - { .name = IOV("bazuLgff"), .value = IOV("rAeVfIiNJCwQdOjDwtJzRFDFWBpfizKipdaghGoUuACaSRQekREZzBvGOScYnFqelktbQyUaCOLCZVE"), }, - { .name = IOV("J"), .value = IOV("fiRktEIupFUGxyLfRmdfZIwPxThlNtAhSAsoaDhSNIDTEMFDjtogeUtoUKlmgsxNSddFQdVTyWNh"), }, - { .name = IOV("CctlnkKCRkvekmeHpJxw"), .value = IOV("pJOUgonOSuNlSvgDvVAfIBnrMnwXJhfpTRQeWEwwSkYMqbzRuwZAywZMRXdRtjBqazjQLcAATlFwg"), }, - { .name = IOV("ebtSCpyigug"), .value = IOV("mfQMHG"), }, - { .name = IOV("OmwYxtpHFtLfwk"), .value = IOV("KOclsbGkaZQwOcRyQDhAHIJVMJeBUpVnZkzyXWhJxbaxGgiIURMGMwPYLRpyJmFYSOolIeBqpTqhzSKg"), }, - { .name = IOV("MsVxcmbu"), .value = IOV("TxFIWFRENDGxnJCCKLecTjsHXjiCvUYJTsIkmMhRamYe"), }, - { .name = IOV("mMaKFZebAPx"), .value = IOV("mdVxAhvcaHvfzyDmwBoKIWBRJdkfSRjvkLJSUjYWqmfCNRUBLIdslrhsaOBYlIEvnqy"), }, - { .name = IOV("YJhXyEXRkUAtkDG"), .value = IOV("MPdQwtrxdVabcYQxO"), }, - { .name = IOV("yLUVaVTkvNLUhDWnRzO"), .value = IOV("se"), }, - { .name = IOV("xbFhwAwJQrygmrmbXam"), .value = IOV("QTpPbNyUXuWa"), }, - { .name = IOV("Jn"), .value = IOV("oDJyOvOLhna"), }, - { .name = IOV("DZeJdfTHnfLvJKZVYP"), .value = IOV("KeerdUWbSVvPqjYjOPYvPdmVBAkGhaGOPfDYyZjBYPECEBDiyQvGxRXwqGG"), }, - { .name = IOV("BDxHOlVxbXBtppVm"), .value = IOV("QESWISNtiYAsdi"), }, - { .name = IOV("lQWAQW"), .value = IOV("uGCZiLCzxVAovrJqqLzJuaTgxdsOmPkQFdUccEhOcEgAaMhVaKNkojkpwlQDWavjfRqUz"), }, - { .name = IOV("oE"), .value = IOV("GFdfyNcIihvSbQfAddGCNmVrGEpZEidltDBBfAxSHhowffBJlGMZHSlAuGZFGJU"), }, - { .name = IOV("vLZnAyJDqmb"), .value = IOV("OhTvHnqMuASAqEHwTBOyvsNxijBsawgellnhhEffLuJhsXHZ"), }, - { .name = IOV("UpkmO"), .value = IOV("YWCOTxbVcEIRsPAiluoLwwghQgWegTpfrHERE"), }, - { .name = IOV("dAIVd"), .value = IOV("ljjpYhlAviXLSXbTzfGlkjeMDRAPBVQqMQAKRPVaMeQucAKiFdMdYIl"), }, - { .name = IOV("g"), .value = IOV("tPmSAPHovhKfvMUEHmPFNeEeRmnYMcnl"), }, - { .name = IOV("GMjMJuDl"), .value = IOV("uXoCmmznIZmXsFWEhFbmHkfHNVDSKsQoohfDJUXeKeBjCrUwOJyUwQWJffufbOosDGENbepNrhNibFw"), }, - { .name = IOV("tZLwNugpA"), .value = IOV("sLOGRQQsSKfounNpeuESJchtOVAZCTUZnCvpCZWxwaGxhsJXjuYuYDiSbZRHbJQOFJhnrzwcsSFxfc"), }, - { .name = IOV("GTpknMEximfbHlGzlqK"), .value = IOV("hKAqBcrJKmr"), }, - { .name = IOV("uLSjx"), .value = IOV("ZNIXXHd"), }, - { .name = IOV("vFBXUlBV"), .value = IOV("gupIVKeJESBmZrGpuvXZzdLjJjSUCtbkyuUuGOZFAnGoKoiFYaazAKa"), }, - { .name = IOV("ffUmzWjazCFATIjn"), .value = IOV("GBxjVDSBchNquDttHRutlyRObtJSucCUbgtcpuDuZrkrbTmksBEesSDQIExkYmsUo"), }, - { .name = IOV("BJOjoHLEGSUppveoyxC"), .value = IOV("MwyWRVHRnbBjFuPgKrdQrTXiYrtXDKeUJDXiMiJplgvrRQlprxJdcdGehggdkspFSOmqBdQXbYT"), }, - { .name = IOV("VeenDJ"), .value = IOV("pfAGZpLxDVNRKIBXgIarGBZJkLrQfz"), }, - { .name = IOV("MGsirYvPyl"), .value = IOV("xulkTvekhskctwCEvnaTiqPkyHTtqBRxHMmQzKLdmePFLsitwM"), }, - { .name = IOV("cZ"), .value = IOV("vsaxPhV"), }, - { .name = IOV("fWXYCpJyuA"), .value = IOV("mHpfCuIzEj"), }, - { .name = IOV("HjAfnPFmZXuUrYtifT"), .value = IOV("NWrUwUflTsGfhUMfKuxpTWibhWytsrNqiwwWRRABKbckGtbadDd"), }, - { .name = IOV("VJEachyB"), .value = IOV("XvYiHtEXQerWplyWOPHJTTckbRRWTodTncyJCMZigJ"), }, - { .name = IOV("UfW"), .value = IOV("yrlDwEUjKogZODGpOUVIZEnnLhomENpzNNYxkrgKdYWvCeJoJUDkpLRQcJYnGSSUATprdENAdxZiBi"), }, - { .name = IOV("uRdey"), .value = IOV("aeDIMV"), }, - { .name = IOV("eRyhOYvNTAJ"), .value = IOV("NTRObNiDoBbeGcBHsQzFMPrKZUVzihvpwxVufoTNpYMmBWohhOwVhrBOhtMilTPLCKThVdXM"), }, - { .name = IOV("q"), .value = IOV("ZbiqpqjxsulcSKsNMGxPplpvXcTzofBLJtbtGtjyUiqvpXMeEdhSICUqvpzIdmMbvrQlMZSyxo"), }, - { .name = IOV("MLOlAppWxAsglJuWv"), .value = IOV("qMywvNQSVjgzTWTbPbByIuHASpRKRCxNSeCVLFKcVxQaqDSYxovnzdcHqQuQvgiLba"), }, - { .name = IOV("hUltC"), .value = IOV("lDqmNPacR"), }, - { .name = IOV("VcAMZxf"), .value = IOV("omEiJQpaaVcfygMobKSePPIsbKiYDcDVjlDEcGwhsGbOk"), }, - { .name = IOV("TXmQaxB"), .value = IOV("ZRJl"), }, - { .name = IOV("RzSG"), .value = IOV("KXbTmijOjITeOprVndXKYIPwqIHEXrlPpvsIbPCaCYJQOZ"), }, - { .name = IOV("woO"), .value = IOV("chjGipwKBeQOSgZILLhkjfuGxSoJvAaHbLNrfnDXRWavLLMfSSZjSEiqSksleiOgaeVsUmxYEKAkHcf"), }, - { .name = IOV("FIhlmhq"), .value = IOV("kJJstbMpAcxETQDjNQvyDPGRLBMOajgRKOtqiUbSPtJXmDGrJZCTOdoOusYXUH"), }, - { .name = IOV("OpZzeieYfmfHBBAo"), .value = IOV("STTaakLtqZKRxlZlSKbIOellFvTXtXPqbccVRfnSKuBQBWxfHoE"), }, - { .name = IOV("sOWUEDQBnZQJ"), .value = IOV("JxmFJHiOUyCmtOxjcNnfyUTzkWSbbsIM"), }, - { .name = IOV("tvMCUunmBt"), .value = IOV("EiKfprA"), }, - { .name = IOV("PoMzRpPrBJKsbeZccnp"), .value = IOV("peVsefKSbcsrSyhzejopiGYUvTkt"), }, - { .name = IOV("mHeQaGCUIlYmHzCiX"), .value = IOV("BKebHWhptxBQwyWFiQuPKLnNAAiueldGICXANwyqLXiyz"), }, - { .name = IOV("nzpCmyXGyn"), .value = IOV("ewAOPVVwOUTYFdWDIwUzVeAlXbBsXCFGJrgsZJaGzYsMRlqeBSNuZvylEenBhThhNpwqooFwYNbMhK"), }, - { .name = IOV("kCXfYY"), .value = IOV("AyGpzgtU"), }, - { .name = IOV("gbZxHvhmzVc"), .value = IOV("cNMolVWSFwvSmfLFzbsU"), }, - { .name = IOV("aEDKl"), .value = IOV("GjiQILLYyEdbiLQKlVeClqDB"), }, - { .name = IOV("XDJtBluzBqJGMRNJdDKV"), .value = IOV("jyBYXQRaCVMsQlkxPdJhgMRukOVGQIPTypMNXNBNdivxxSesSEhORIDPuVnHDAEdPC"), }, - { .name = IOV("RstUAKMmFXeXWC"), .value = IOV("TMgiGlOKTcxtYXqofNCo"), }, - { .name = IOV("VpBoGFuHiNMpfNhzIOjo"), .value = IOV("iNAAh"), }, - { .name = IOV("JdcFyFGhSmTufe"), .value = IOV("YbgFXCaNcZDFWPeRwdUxSFioKzesFvGMbwPRpWVoQeCAwYHSSsANqo"), }, - { .name = IOV("eZquM"), .value = IOV("BifNvRnflOMghGZdHyIPdiuZYesqXqCkoazqPxZOTqyrljmVSfRnRD"), }, - { .name = IOV("YMoRVU"), .value = IOV("FcBaadPYpIoDSKECbKISMaDPqzmYznBiIqnzbboeSFOfaniTqnEvmGoFWncNzkjqvexQQR"), }, - { .name = IOV("VYwNzNnNQvJ"), .value = IOV("lXOzHJkJsLkwausUCakaHnvkmrUSOCPFQESfKaVK"), }, - { .name = IOV("BYpLaievZZNhfby"), .value = IOV("dAtEpnkTOMcMffzKmSwgOGuuGMUTWKsKfjRlrecwcbpeTlpqRSUrwvsJOTxrPLCphIvUJP"), }, - { .name = IOV("pvJnfGFfBRZzoW"), .value = IOV("lwxhVmgKBwTWJMQYHHnxfhAYXtgVTOnYMtvaPkRUGpNTbrerko"), }, - { .name = IOV("wGnfcxqKKdtp"), .value = IOV("aJDkMkCzzseFOjicYGZhVIkdveFkeaTvFvYdVRMzhf"), }, - { .name = IOV("DK"), .value = IOV("BujuYApSCLpEhpWhrkFLOmBBzppNocqsapQqxxsrxweqt"), }, - { .name = IOV("hrLCFseZdwE"), .value = IOV("GCgQEueDxodtinSvbRVoOceMBC"), }, - { .name = IOV("aimktTF"), .value = IOV("MyExVVzCYNBohxrWFAKCCttOUtFlkXk"), }, - { .name = IOV("Ox"), .value = IOV("oAGnCGJnUoiSTZkbBrEfzfQbIVOJAbVPTAReEJLqDUEJPeBJnaCkkTutdokyxZ"), }, - { .name = IOV("QhCfBEHGkbWFOvyvbBIH"), .value = IOV("TjbnkXHaKWBMzBlVgxcIUHdpmLkSiDzuhWEIhXQMKrG"), }, - { .name = IOV("nmQdXt"), .value = IOV("KCTyElFQbhZVKGMbKXXfVwRxvINjwfARb"), }, - { .name = IOV("ZWvMIpin"), .value = IOV("vVAMkNCbcSjRpaflRHQEFjzBzAtktWGXiZXCECdohkTNjRTuZ"), }, - { .name = IOV("CVdUqvQzEPlhgsFQfRMv"), .value = IOV("KCPhbGwEbXnkAvXkylSV"), }, - { .name = IOV("lFLvS"), .value = IOV("cKirvXerYHkZMdaWHMxGJgPCs"), }, - { .name = IOV("WHXqGHRxFdAqMhxrSVC"), .value = IOV("pqziBiBDIddgn"), }, - { .name = IOV("DQJeuy"), .value = IOV("cwGUvnbGelnU"), }, - { .name = IOV("mScTRcmpFWljl"), .value = IOV("ShrDACGHRgErGBubrixbRLtSbQilceYJPSCdrLthiInUhaoWcYfNUI"), }, - { .name = IOV("tWcwmPvmRkX"), .value = IOV("exBNvznHKRiSWzRYreQoBxuldzewJrKQKMXEVZSQQvfIAlHBBfBPyRjf"), }, - { .name = IOV("iWLrZuNudLVk"), .value = IOV("WoCkUXRvojfaUkobHQxLTMbLQXxjalaqpSqqbWSBCWzvzzWQdmEnEZvXk"), }, - { .name = IOV("ewBeqwIqcqWQyVIzyLH"), .value = IOV("UTUtrwzAWoJSAlWhdzPvBV"), }, - { .name = IOV("RGo"), .value = IOV("DDdsJATmqIfAJbsMPBgRGXRKLMeSCTHqWjdOZXPlxkKQuyGtvgqZaPXePYo"), }, - { .name = IOV("QdfizJyImVtocfUpA"), .value = IOV("VJoYraBaKUbNdsjODklrRZbWRcxIQklPV"), }, - { .name = IOV("bTvMAssdSMrPIgb"), .value = IOV("kDMylTtRyGplXxNtOaDi"), }, - { .name = IOV("DWRSDXraQLxAqyUAqUD"), .value = IOV("kzvfSDzuXIp"), }, - { .name = IOV("Of"), .value = IOV("Qny"), }, - { .name = IOV("SEkHWgnctazjZHsu"), .value = IOV("OdYnKDTVsEJAwkjpezU"), }, - { .name = IOV("OLaebqSpmQZe"), .value = IOV("g"), }, - { .name = IOV("Dm"), .value = IOV("SFNqmdUdhUPbAMUdqxCCYvEhZkOzabPnBBoKWdJU"), }, - { .name = IOV("bYwVqJ"), .value = IOV("bEGMqLKeMtHpmZxWONdPuBWIeqElvjHqhtZWZTfecemUxFTdSAyVdbCzSpkdIfbEdcGTNFaxksDuhNEO"), }, - { .name = IOV("U"), .value = IOV("SDfgevnQOiAgvczmEctnECzVyN"), }, - { .name = IOV("ONpjbFEXIKrlnMbMaQX"), .value = IOV("AxlNytNMyYHWSYMaGhSBksjJMicJjxlLkXnoGvHBlRtSTsttxAoRpYVmrnpYvPJdeuXEdSKJt"), }, - { .name = IOV("XRqsuhYHxyvQd"), .value = IOV("KSeaaTRaQyDoVaVdmFwMQluKiGlxonmbSSYnUERIwUiTREzrJlrTdkkcpYTCJgOaJLVoOKNibDiys"), }, - { .name = IOV("cTiFyaGHDJVsCQkH"), .value = IOV("PYYFZHCViThHFtTvSHflYmzdXtlLgnzdarNPfDQgfTZbKuJLhpFtGzyUBAPlLpmmiMWqY"), }, - { .name = IOV("TUqvsPMLxHRWxzRble"), .value = IOV("fxoJAgtyXcgDzJztZzXWJXDFKbuWIgWMryRwj"), }, - { .name = IOV("VucgbJWgmMfIH"), .value = IOV("wszRbsVPZdEuHFQbtakdbSYge"), }, - { .name = IOV("OlCE"), .value = IOV("kijyulXkXwMWxibYGFNLZOyGAPUVXgruZNRNennqFEkjUbFXwnwulOiWKeLPtGDWDGGiDhjiYmGWO"), }, - { .name = IOV("FBBVzDlhXafyYKrEEVt"), .value = IOV("ZvxidlHFvPdKtwgioTaeopehQjKAgWurLOPrMHrJXLMfQDOSXHDxmhwUPrXDKeMfECLCwruIqaAzkMae"), }, - { .name = IOV("gHPuDkxhia"), .value = IOV("GsWWVTrZdtKjMXBQUHOaAroXFyiazGbNfGeaLpTmcijWTp"), }, - { .name = IOV("euEEIJkpRkPJiSQIgZ"), .value = IOV("eKIMfFGmTVbpYYHFnKrjstIrIwbnxAoitKCmSiOJBifBUY"), }, - { .name = IOV("qLsgvNtmXqdjprw"), .value = IOV("dwYNYbdChLetm"), }, - { .name = IOV("XQjTUTVw"), .value = IOV("uigfDiAdvqwShgzEcAHhlIWcsHWgYrjxaIbXstbxuQAOSiHnMkotzLDBQVOYmb"), }, - { .name = IOV("MJFSVLgDwjuhJMOTzgqh"), .value = IOV("WJByljnyxhqIRHGOQiIsDvuTodcHYirIkpaznLYxfnjBcugOSNTNkrViTetfMyXTaPr"), }, - { .name = IOV("WiWUd"), .value = IOV("pWJZIJPURbakvQbQUoDhaaKwAnxxUCmGLpYtqLFevFaiEQIOqsHOTBgTkdnfQoFONLCZGUrjd"), }, - { .name = IOV("XnAjxSZYxMQWeUghqPmc"), .value = IOV("exyzjgdFaYwlqzWcOcTDCWgYiHcsJ"), }, - { .name = IOV("r"), .value = IOV("PvlmDUXBAaymHlRoOiUTUxtrBaUpZeAxztXljMPzokmpAmVtkEMcVpiykzxOjl"), }, - { .name = IOV("DZGqHrRivTRNnNE"), .value = IOV("mqCYvedEPtfQbROTZFpBZZYLvjqlZDfZHEeHJlztzcJRjNeeWBEvqKps"), }, - { .name = IOV("knxamJtIojGme"), .value = IOV("RQYjSKWZffzNoGlJcDZuzTIrumlCbkMNVCLDwcCfjVMkahLFR"), }, - { .name = IOV("L"), .value = IOV("JnKbEHbCAnaHpYXVkuDRlSekzdzDjQBWpVUWZTUQs"), }, - { .name = IOV("IFYTgOJlRbrAGMPpdY"), .value = IOV("DdITasMamXhCPMFvHZFWAczONgvAEIiKUdKhDYCeJLONfiNGiPNBBUKGnwpTmYadoLg"), }, - { .name = IOV("j"), .value = IOV("QStxmgESdCXZxaICGsPejjvscKBBRzXtDxKuWNtqSpkBhDLhXBMFRgJPiuNHTojJltq"), }, - { .name = IOV("pxBdY"), .value = IOV("UneGVsVoTNnlBHwpbNiwqxEJAAcxoDjjLspvQrVQWdv"), }, - { .name = IOV("tTPvp"), .value = IOV("jKNbEHJmGAtHyiVnsCftVHvJAcMdTrYmPPMgdMirjPVYbyTBfOQqvkjCINcPvMQijybNvkayGg"), }, - { .name = IOV("iiBmoUzOiD"), .value = IOV("h"), }, - { .name = IOV("P"), .value = IOV("WUmFqXWxfCmOqGYjEHBAMhSA"), }, - { .name = IOV("CsJAIyvgFqr"), .value = IOV("MjpHHKeybbb"), }, - { .name = IOV("CsnwvjKcD"), .value = IOV("LpNmFMGbWEzXSrhlkMTaoBpMMSukCWhGDblpzRXMNcRybtSFUbsNIHM"), }, - { .name = IOV("TupA"), .value = IOV("VdVYUWhdlJTRvAPPSVBXUGLfjeZJeZpzjxwG"), }, - { .name = IOV("NfWnIcQ"), .value = IOV("coJjtFpHRIkqkPISvnahJQBurccZvllqmyB"), }, - { .name = IOV("HfTnlr"), .value = IOV("yIvsIUhavsIVpWuCUHlPODTEFFIMTCZbqhtkbCwIbvLfAqRKDwvAHBXaskXJGRHXwyLTBjpSjnGR"), }, - { .name = IOV("KivBRAUehKloUrGotssl"), .value = IOV("JaDAalIrrwtRMLSWVPXPkxpBWLolEZhmvkVrNTUNovjJJTRUtT"), }, - { .name = IOV("pwIHnekURqDqWJjgOz"), .value = IOV("LtjaRYuTXGQCvG"), }, - { .name = IOV("gUCAVHUGNWVu"), .value = IOV("fGbvHYxgJht"), }, - { .name = IOV("grxqLJyDSFpHPnc"), .value = IOV("puLMDQUOXMygerWLqEGlFisywaTquiFFZInPGRIVlemgrA"), }, - { .name = IOV("SckGcLkaXDZok"), .value = IOV("QUkZPlegxVHMGhfDdyKXCitDkDnsaeZFOkIFdWNylNOspQAGNnAHyaLTnDfTUlplfpHz"), }, - { .name = IOV("ISwZSfhqNXTOs"), .value = IOV("axYXblgoOAClPyeBvSOvLIXBqNscrIjGPEtxrPkxiDEMeCxuCsZCGZ"), }, - { .name = IOV("LGOlJsfRId"), .value = IOV("KQVNgcPUnLqIsQqEBNsgBcHcmXGgerzbyzUHaiGmWCDneRDXMcCPMtx"), }, - { .name = IOV("T"), .value = IOV("tJCKceVzgguVxRzSBRNCJPlcttRqiIHghZmSWUyzuMMeonZXttnjFQumOKaQYDQJSvnVJsdlAiu"), }, - { .name = IOV("cMwWBZ"), .value = IOV("DalbtZXUioTeuDdxLpekhEKribAPsWfsiCtJJsVOEDUAEgErgXqQplBp"), }, - { .name = IOV("rSMGxe"), .value = IOV("zPsuyvopzESCptjzeVcaHdaLcvBFCwadaKMqrzmrlydJ"), }, - { .name = IOV("cCkWQxy"), .value = IOV("gVmsHTxWYTmIFssTyjwCxaGPMUAuIAQrxCLhRXQhfAQECCYUYJxEfiyxNhJUAZKUGQ"), }, - { .name = IOV("WJFBxtMGyaYlPDMCoBcC"), .value = IOV("RbYpKIHFJtlJNktnPNsYFoueSoyMPWDAPxSaFJLbHuNRDyJlX"), }, - { .name = IOV("FDapSisAEEjsh"), .value = IOV("oMFOtAgcLLNktmizLFHZRDVD"), }, - { .name = IOV("CQJOGFaamD"), .value = IOV("ONsWVBnjmFGc"), }, - { .name = IOV("us"), .value = IOV("YFvKXJHJIDSSSKNBvAvVwndjwUXdDVYrcXiPBPhqUZNfXDascYFUyocYCukAV"), }, - { .name = IOV("nWuJpgsVjpn"), .value = IOV("XyDJWFtxqILE"), }, - { .name = IOV("rhpm"), .value = IOV("Mf"), }, - { .name = IOV("KPWmJ"), .value = IOV("OUFUgwLolxHVTxfvygINISrPjnHdntjjDmtPBztMeFqpzMZUaBfyQUfV"), }, - { .name = IOV("hQwtWisADhRFHJoyqKh"), .value = IOV("PMVHOmNyyjIomshSwACOyppfFXHimtIHiTrCztPwhuQDQZqHCdMNfLcMag"), }, - { .name = IOV("jbfYPnBfFLpgDKsTVD"), .value = IOV("UaGQfXhWmpCnfaHoDpKgrjaSJxQOrQjGy"), }, - { .name = IOV("dTsMpg"), .value = IOV("IPlhSWNYVlVHtUVvBNTrXfXcGOlecMynqdRFmwWkgfSrrHKaEmmMLfNJoJQnqhTpetOHitFwQuymPnC"), }, - { .name = IOV("sHDb"), .value = IOV("MSTItJcHbZdUNUtCWEvkjCjNInByyOlpjRvNrazsNaHWAHEaZMhe"), }, - { .name = IOV("av"), .value = IOV("qAGoqDKjYdJBvGqVJpPcSFbQjXOuxi"), }, - { .name = IOV("GEuFUrNIbRABMbYUao"), .value = IOV("pvGngoKLTiJVxgVwaevbCdNwJCu"), }, - { .name = IOV("PncGojQhonDMUXztA"), .value = IOV("bcevZdglDhJHxNgpRzDqzrPuRbqoXSCbxvpWDy"), }, - { .name = IOV("BhmSKsiAnerPu"), .value = IOV("TsaMAalzTQNmqwNsFgmoLkBOWWBxjrwZUgaoOgwE"), }, - { .name = IOV("eri"), .value = IOV("NqGakXkWesfkpjFcDhuOCGIknkUfQpNyWz"), }, - { .name = IOV("n"), .value = IOV("KSLWXZCAUqqMqpzyMTMnKnRscaoejjlvEyIafJEmPinXfhBprxGgyLCjfGyzvXptnbYGFJCggArekg"), }, - { .name = IOV("ukKBERMgARMAXPh"), .value = IOV("HvkkPQOWxyP"), }, - { .name = IOV("IENLdlIoWfFNljNcu"), .value = IOV("TjRCPhpLCTtNisWjvcIkuQtXaDwoDMoPrMoFnBmLvYoPvWvwRHocvMYPXq"), }, - { .name = IOV("apSOmcNOFQga"), .value = IOV("nHIHoHDPgFFAsAZSWTL"), }, - { .name = IOV("NwiK"), .value = IOV("rDpvWDEMdgEqHXmMakxCPHDiokbeHKcHPDwiXpSNFUQMsHFuKiFkzDSngjHnPJBMyNtJLbZY"), }, - { .name = IOV("RaAXVCIPwnpUAxRy"), .value = IOV("QqwDKjTMufHuKBTtABCdlQfyOWTUAvSXkXZKxsWFOKcSWvPn"), }, - { .name = IOV("ShuReppFMHifxpslZu"), .value = IOV("wwrWkobORxUeBsuiAdXTMrVifgtLBvuDRXjaODRpIMUuSHfofToRcImFpitRBSppypqnDcBviJ"), }, - { .name = IOV("PqJcdOHCkjDZKc"), .value = IOV("vyrVYvx"), }, - { .name = IOV("UM"), .value = IOV("OrYHFuaxsqbxWTDbowVaNEQZdiNpxNMkQpOCRnljaBqTGipJHHOlYhvdmXBJ"), }, - { .name = IOV("tXxBEVxM"), .value = IOV("nLrhuOhDpafDfdP"), }, - { .name = IOV("rWIrAOqmQcSnhxwdEL"), .value = IOV("sYrHBQJabojUGrjUuvHKcoVSa"), }, - { .name = IOV("DpYxbThrsIgpacqA"), .value = IOV("OqyjyMwalDvzohydGIkjakzyRDTZBkqjFfgvvWwrCoIFidgYvzAyd"), }, - { .name = IOV("MzZvpySHFaUOQElwpM"), .value = IOV("uZeAJgvevAhwerqfVbqIYXgybwzUQpmKISoseJXjfPtJdKvT"), }, - { .name = IOV("kB"), .value = IOV("IWUTwsUo"), }, - { .name = IOV("oKNwiRaaskyaqERzJkp"), .value = IOV("ue"), }, - { .name = IOV("NotTNZSopfj"), .value = IOV("OEoCXBYHXIDvUoDdvebLODBDKJwgdMboCDXmwkGFRNrw"), }, - { .name = IOV("ik"), .value = IOV("WUGuOrUaFNyrbnUtWspxeGohHwpXxDjPjdKxKRa"), }, - { .name = IOV("tfYcWavTOHQVCiOBeaI"), .value = IOV("uwncuyxWIjTscFSmdlhwDkJgrWMZKNmpLXvjgvLCIlWBqxMTnKxJtkXdrzdYVXOIUCUuEKUehK"), }, - { .name = IOV("QWcTLZxZOBkTyRYcX"), .value = IOV("HhhpdgkDwMYBhjhcFetorZKdpVAWZMBhMJtSJfMW"), }, - { .name = IOV("HeCkAmLSPXnmZhrUI"), .value = IOV("FKCvcQMCmbOxVWGbZUmpxVOSrVGEfJUDaRtjTkmJQrbNWDuVElYSIFgWUIQVNCoxjQJGsqbOeYze"), }, - { .name = IOV("GzUPT"), .value = IOV("mqLIqXeONfgTKQdFQlDYRLMdSVPfFvNhQbtcSJtFjGSLYWxVWcnHDqQqZcjUpXKWWJ"), }, - { .name = IOV("rSjMdBQbLUOwvYh"), .value = IOV("PpApugaUKcUVYkHOVuyMKQ"), }, - { .name = IOV("gO"), .value = IOV("lnmSyZCtWrYvJymoCDBEDxDlkCrUucAwwfu"), }, - { .name = IOV("SaLJjJ"), .value = IOV("pvLtEQuZxhz"), }, - { .name = IOV("MoHpMmUvLVtaHpcequ"), .value = IOV("CAuabkYztjrNXCWkRUjQxzXwcpBpmmyqYlUNYnOyLQT"), }, - { .name = IOV("rQVuPCv"), .value = IOV("ZXgWsimgXXoAIweL"), }, - { .name = IOV("MSuuXTEQz"), .value = IOV("EaFcaqDrYDX"), }, - { .name = IOV("OYYybvCswNHNmXrVAwM"), .value = IOV("vJDZVxIoSoCDpYJCCMApcaWmNFJJxQuLKIFmHrEawOWaymPHLGUNvmDrmnAcpEBmezCNwZgAEvz"), }, - { .name = IOV("BRpUILgqlcLLlMZXZOew"), .value = IOV("hOSvvzscmEiIovcavnAkxvSJtrBbemdPSuBFXqlZAfxmDAXFDw"), }, - { .name = IOV("GInDdfNpxZcitNHA"), .value = IOV("hayQL"), }, - { .name = IOV("jLB"), .value = IOV("RiRiSBIXCezECuQlDhRzbwvmHRqAviSkyZZscTaTqJfXFQMsKDVSsFaPcbVFkRUxaWoKIbvGGBHqN"), }, - { .name = IOV("xtXQBpTLDbRucRgvYzvd"), .value = IOV("Q"), }, - { .name = IOV("RpqvurFn"), .value = IOV("lvPPuYdkcPIYpDhcfSszGyFNQXVnX"), }, - { .name = IOV("qcPF"), .value = IOV("YeZtRbHUgjRHHfQgmogSpbVzKjBioLg"), }, - { .name = IOV("hXVkCTkWrvYAGLlbSA"), .value = IOV("yhrSUaSuoenWcRBkatoQILrJlsNsLlkxAmVcehnGjcIrGBggZDfIByZSzj"), }, - { .name = IOV("yKhOEbYtVwGj"), .value = IOV("olfqMpKwLYqOtEkcpDmHZVFGggzJNcDxyhhAHGccGDaGzVlyhywIOKZGF"), }, - { .name = IOV("HPggcExFHRJdpjtvwXEK"), .value = IOV("xdhVwuDQBcsRdhWeKuKJIqLPDLSFDdciQjHvpaPINCZvWA"), }, - { .name = IOV("JJgRpzGCwL"), .value = IOV("vPPtXsZwyuyJcnxlYWyQjYpQLMCZebgzjmdUlcyhGxqcQYnYpglofKUrhXpq"), }, - { .name = IOV("wjhIpoVDfPVvkSlrRLiB"), .value = IOV("kwcSZkSTivnilugmAVyREHQiFOM"), }, - { .name = IOV("ByJQ"), .value = IOV("NuAURooqUhQZWtolUAlOIpfHktAplYxbdMDscgaxuPwpqelcqfPzkuoSnHmbKNTnGnLQDIGazsXnn"), }, - { .name = IOV("zaLyNV"), .value = IOV("NtBKcFQYpeEVVUMDlRlMutLbJDePwyLENekmq"), }, - { .name = IOV("PORBoo"), .value = IOV("WvOEbHlFMFRmiGpVOgfRFKFgwlWgcngsNRBNHuulucSmpRZLRiojrsXMmilnVwWVZhEwCU"), }, - { .name = IOV("YyEjya"), .value = IOV("asmhaNJNnZETdZjnZUGiBYrvUDKGFBekiAMyf"), }, - { .name = IOV("OXfWkVkPsQjBtqbz"), .value = IOV("WuprBNRKqJjhqAffZsfEKbLQ"), }, - { .name = IOV("FZbnGIabFApPWBSia"), .value = IOV("FQnIbqCThFlpQgLrMRbeJPVSHdm"), }, - { .name = IOV("sowNMKzwvf"), .value = IOV("RjtbwmWfnuGngMhPyrBaHKHIZqPDDdTfplZOtEiNbnBkbkVBRpNdVpVACvClOcqavWQYNs"), }, - { .name = IOV("XwuPUOjALLGMmXmBHx"), .value = IOV("HSqgxVWImPxSbuDzDVXjWPZlwp"), }, - { .name = IOV("juPMVPqcP"), .value = IOV("FodUPoOCkekMbahuoQhngzUTHUHINVlydIiLGJFYJzfBaVbVB"), }, - { .name = IOV("sczPd"), .value = IOV("gtsWkDxJHBBwgrWDBDTQuhFHGZesqtPFNTsTIMZmPPPZuPtVPvMWJwL"), }, - { .name = IOV("dNDQkLcdsAd"), .value = IOV("mUILxMtuhXGXsiDIoGQqzrBZQuaDOLLdVVnMUyyBfIWGSZaYnoALACLBb"), }, - { .name = IOV("emgoKhI"), .value = IOV("gTybqrLeORNpxHWSdFrizPkgSHfBOTnfTHzpIYRkchOqOEkxNyBXThUyDW"), }, - { .name = IOV("OUhBrfkoCnNfpF"), .value = IOV("kT"), }, - { .name = IOV("GaqT"), .value = IOV("EFevb"), }, - { .name = IOV("pzCUpIuMFXpsqnwGyOyG"), .value = IOV("GwwgaxiEOvsEEAiOxueYhnIVuVCxeJCwYcQAxouzrdlMLSPv"), }, - { .name = IOV("BjNldnJu"), .value = IOV("SexJnBvQMTZKd"), }, - { .name = IOV("KJhbQGxrUFu"), .value = IOV("JOAgFpbkjCgPuYNWBebzVMwFkDMHbitBzoenZGeWaOtaBYKEkGrmeGWlkfLzhcj"), }, - { .name = IOV("YjwLQDb"), .value = IOV("JrlYJgygvrddGMQgJToYzTCQwQzkjSGFBSImKrvZpLpQhzDtpONtXeYKGcBxquaUmT"), }, - { .name = IOV("dvrQWD"), .value = IOV("KnJdjPIGarAcxcSoVLzieGBwFCktbfYkoecmvWjfQVtaUedomkNENxOMEXJouiifKuLgReskNViXvtZg"), }, - { .name = IOV("hvxUInpnlimHl"), .value = IOV("PWMbIvrjhRhWGsUirOBpGPzVRXTCtzsydrxWlaSXKmbLBj"), }, - { .name = IOV("kXcetKqPhqENhh"), .value = IOV("IZNdUbZxVcjelBXrluZpDFrTMTriMbyImDzVKnnspqzjrXYFyOFZIhTMIAWkWzkgsWlBXJMFHmmOTr"), }, - { .name = IOV("KqVZMAJZQAReXzE"), .value = IOV("MwdLhEaGJRQOwnxsCTBEvktruIJNUrgTjpDMzAtMzxqaQVRsbQyMDKYnjtBH"), }, - { .name = IOV("exoDjkmWEvexyGD"), .value = IOV("HxHiaYSIPJCRrDDGnRYyOBcRIOyYEPPfZjWTlBDdLnovLjCLVYfIMKlNpDTkpnlEOGUpCoXtAG"), }, - { .name = IOV("IRVSCeoYwngZDx"), .value = IOV("EemdVMMIFwAIvTq"), }, - { .name = IOV("VwWFdiITCq"), .value = IOV("fohGWcMtOjUvtNjAegaaztsrcYPMEGEgLBMmMPjCGqNZHjBjnia"), }, - { .name = IOV("n"), .value = IOV("CvGvYqHwuXishjKOqJfw"), }, - { .name = IOV("mitsKjMzNDiY"), .value = IOV("rNMwDjveESDxWStHHpYvCYqMMJGBMQI"), }, - { .name = IOV("r"), .value = IOV("dWmozRAJQHESwwSaYgHpdpLSJXDUItqKainYipzIeiMVikELcmlSbn"), }, - { .name = IOV("QZPCXJKmTyOvZiI"), .value = IOV("EzDhwRFHsk"), }, - { .name = IOV("RsUJhiFGVOkqsZo"), .value = IOV("KHajIuJVTfwYqlWtyHgZBEGGCtOzpwxqZiqXoLiZZPcNGLvXJtfTjkAFrpjM"), }, - { .name = IOV("vqIADrLNGJarBQo"), .value = IOV("SyMTJDrEXsAZpHleJsjEuRbAzfptkhctWSVanOgf"), }, - { .name = IOV("beorg"), .value = IOV("KoWtaRiRRniTUoMOXWmITMweCadNdaQGcKPMgVKnOJJAXiOBbnzCvuNgiGvdTyVChTWTfv"), }, - { .name = IOV("VXZHSRWD"), .value = IOV("JbMVgZKPtQrNPOzSYNfAlhcfLvvARPBLFKIFFDIyGLI"), }, - { .name = IOV("TsZOhFHFmH"), .value = IOV("JtDdrrDAhFuHEYwsA"), }, - { .name = IOV("tRTGShwDtTTZqtv"), .value = IOV("qsQQEupIufTCViJtpnrebMaJ"), }, - { .name = IOV("dzIEROLyqUDCNU"), .value = IOV("yExszJNydibnDJSHwyD"), }, - { .name = IOV("Wk"), .value = IOV("NVJuanFpfqlAUFQpjGOXwIXSUcMGnDXbfBJZtBjXmPUCPRUHUHhmmuZMXHfmKQioprCVCbJltpESIRvh"), }, - { .name = IOV("TfKpW"), .value = IOV("QtxBDAZqdWuadlcthHYNXPAUvCKSAGwdnlfurNPpzfogaIbKLNfHnkboZPVN"), }, - { .name = IOV("urPgnDbGRNn"), .value = IOV("ebsfnjNhsgGRsjucMOcHlMJBMnwiCUaAYdZeXVUqabLqtrdrwsPDHwwo"), }, - { .name = IOV("EjRXWlAOfnBmOkf"), .value = IOV("sQQQUmpmaXbCyEemjq"), }, - { .name = IOV("WZXXiKdV"), .value = IOV("WrzmAqnZrLwelxhEEhmUFQLuuoemgvpwUldHJs"), }, - { .name = IOV("NYPhtNMQv"), .value = IOV("lojZoxRRPAZQFIObgTbfCHBYDJMTseZsuKzQFIjXEOTDIWmyNxwaibagGCWZySjbKHsCeJZw"), }, - { .name = IOV("UZZ"), .value = IOV("IzpCUKLWsaSThdqQuBFQjHeErvWKObEfoHAYIIDrLUWRIa"), }, - { .name = IOV("eixcIHlRkMqbTFA"), .value = IOV("uLYILCfarHpGAuBXwhnRzGlAbDElGVmYXIMFxFzwRRtoklmZJBvVMObiOvVYIHBDkf"), }, - { .name = IOV("rtrhqKwOVFIGWoWI"), .value = IOV("fBzsokRCGAduyHhumSzpurunPBVbBRHqoEbFFDpkiJvmxZJFKQVLAnvEmQALwXCCrjbBGTv"), }, - { .name = IOV("RtjBpxYzcxLBKwfZBQgj"), .value = IOV("BVktoeDNJNQMdhEZKZYdLfZwBcoTDzPNYqRvtVqvZtMtGUtnJStwKqoYVayEBKmVDdPZwBImEEAd"), }, - { .name = IOV("KOBDhgiHoxulFeI"), .value = IOV("rlku"), }, - { .name = IOV("YmiAmWIpxchYd"), .value = IOV("Ldw"), }, - { .name = IOV("zlrTydegU"), .value = IOV("VIjvxZYytysjabDrjwzAtRvvLgTsxcpxmmIAjknsDGFqAASxEQgzSEQmpWRhzqvkqFaQjKslpyUSz"), }, - { .name = IOV("OPkDTgArN"), .value = IOV("lBKYTUrqeUJiOhOJjOiaovIphqLHyjGyTTrFpkxcKUsOGdhPTsQdnmeLuTdMA"), }, - { .name = IOV("KHivOqtUsEaqPHuxWbFW"), .value = IOV("OoiKVYbXORODNjAgkxSSSWMSbiMENoYDJFbTkhqnCapNGmTrQesjYTXiQmRkgNfObZXGd"), }, - { .name = IOV("JP"), .value = IOV("dp"), }, - { .name = IOV("XYCYMYWMsGojkHNi"), .value = IOV("ARNLdyWCRUrAtuLgwglRaVBJqywdiRmcsSCRaxIlPki"), }, - { .name = IOV("zsDkieGPoI"), .value = IOV("rVTDMWJIaRpTiHsNVHtyBSkHgIxMeyxNQQUjyTCzkBUMsCqbPuOtRVCRNvNiUeypcDwpogK"), }, - { .name = IOV("veZdKGiubfqfFVhl"), .value = IOV("JoDlFiLglBQVMFjbFMFJlWzQpYBMneVfJFjhokcpQTfZnNOKjQcb"), }, - { .name = IOV("UgVjENtDusXQww"), .value = IOV("PPiXipNqjSHrvIrOgwtJnaQVqlkUBvTdRAVqFJIsUCwbZehLoRQOfkWxzQfEtwIarCKrXI"), }, - { .name = IOV("sByVIqDNb"), .value = IOV("YBocmxdSfEozBPUWnZWwRLeskYfaDgRavXqXalxYWSpmdPWwkoJSNvbKGQyvAgwZkUpfOXmoBAX"), }, - { .name = IOV("jGufWPKx"), .value = IOV("txDlwzsxAjLPkSo"), }, - { .name = IOV("qbhGzwZARyLFzDNb"), .value = IOV("LezfURnZXefYUIbHDoQHgDKZFjyALsZOHhLzJbjFdALYXDzejLmDwVQRmtTdo"), }, - { .name = IOV("XZcHLEmiFYAXPvcOzgC"), .value = IOV("dVRynjsYVKqItSDQWtiYqQZUolasoPsWkeBrLEZxgObbYjgiVnk"), }, - { .name = IOV("pLNDezk"), .value = IOV("uagUzAuAKpJTIQYxGzPcUdKCOsuoJKdXBLcAvevfYZSoXSBlhnqZQOzNPeKnSDyAlI"), }, - { .name = IOV("jwefIp"), .value = IOV("ULAYUrDPQVyUVfobVBxCHpQqvKSAqAKLFVmdoOKOvUfzDS"), }, - { .name = IOV("odDHVOurAPUc"), .value = IOV("ncYBymSOFxXLvlChaVXtKVRVZjopSWIkLlPVgwWFwHfbhwK"), }, - { .name = IOV("FZtOXpmvIKd"), .value = IOV("RGshzbjfPMYmykEWBRDeUsrdc"), }, - { .name = IOV("cHJkDC"), .value = IOV("GYSiXnPSGdgfnzasOKgabEsKKOZOcV"), }, - { .name = IOV("VGU"), .value = IOV("bDEyqYJdKybPgwjjAjBzqyPEXQUsnwVrsyIkAVXjUXXG"), }, - { .name = IOV("TSqGGHnCrHlair"), .value = IOV("FOLAJYliNfgYyTnQxlrGnnKHbUnXkuMFpNVmGNS"), }, - { .name = IOV("HCHEuTeuAeuwf"), .value = IOV("cth"), }, - { .name = IOV("CfM"), .value = IOV("IwpaEKILpQNnQzozLjDktZYxGlkAFmLqEGVpmJwycmLzpIplFNyxrmAyN"), }, - { .name = IOV("mcNH"), .value = IOV("VLajYpJVdPHLUbTEGHEWxIkQMPbfYdivXm"), }, - { .name = IOV("d"), .value = IOV("PpoHZEMmXHHitZUcLSpoquWAhWblWxjHttCSrPMQrpOXAtBOjUHFxBbdgnsMx"), }, - { .name = IOV("GlESHxYPKQFomttvUV"), .value = IOV("dkgDeMBYWOhIoeYCLGCrpdjwnnVUQZHGKGJfQwnLCTkRUMucuqvdE"), }, - { .name = IOV("mO"), .value = IOV("K"), }, - { .name = IOV("njCJ"), .value = IOV("FovSURVypqaLChrGxfGrbHVjt"), }, - { .name = IOV("xJgjDhTJmFtNBfLeuy"), .value = IOV("GztOaSmFuYnsmmTtcILXPv"), }, - { .name = IOV("jjAlP"), .value = IOV("qqOZzKWghJfQjbmBYliDKVA"), }, - { .name = IOV("hLdBJmyOWnZzHYl"), .value = IOV("EuJLTDGshOSNCUBUxcbbhjHjouSRBBrxAqqCsz"), }, - { .name = IOV("qgUSlMhPzjHSQF"), .value = IOV("GoYbxvRG"), }, - { .name = IOV("UDBQxKnhpTvHUxW"), .value = IOV("vBRaqsqFEDWtQklemGYeGfbdCnNpDuj"), }, - { .name = IOV("xntnJlTTFeiqcLOuU"), .value = IOV("bXkeDVdrCQxQLHkYkjxVmZRwPgLChBcmztrHenvbwjTDJIYhsGsbmqJdHepED"), }, - { .name = IOV("bsYonabcSrHueUQx"), .value = IOV("EpQvCNqsXGVTJfPaxzfi"), }, - { .name = IOV("spbxEinz"), .value = IOV("UHFGeAKVWsBYsILOiSOHoVpTTKrVhCDltwOr"), }, - { .name = IOV("PxRjFcBoPQatBkIVRPUX"), .value = IOV("UFQfKwmdBAgeUQIwKXNoKaEmDeSYshXTtiCzeowsiqlLIldsdlddDxJngGIcEDvlUaTRO"), }, - { .name = IOV("kUhFOPbWqMjcwllt"), .value = IOV("SZDctExyspIAbrIQHqjPXqXoymy"), }, - { .name = IOV("HHwFvSgn"), .value = IOV("MXcHzeYudCvy"), }, - { .name = IOV("cPCCszslKrfpqjoOCn"), .value = IOV("IJmYNmMuj"), }, - { .name = IOV("nOhFAfFwBCpadzJ"), .value = IOV("OtTNHkwrBVoQsCqcsRXpXIrTPasnKznLPEazatybJRMXeDgRYwreSGVAsYBBZnzRxjVQaIPMrUas"), }, - { .name = IOV("aAWcpiwWRY"), .value = IOV("EdkYPDQNXAcWGSdgmSTlHVdEfEzFRoHLbeEUqtjfJSeldSVMkLaMnY"), }, - { .name = IOV("ilAgh"), .value = IOV("yVpdiYARu"), }, - { .name = IOV("qOMFdeWBQxTmp"), .value = IOV("UrBhzpSPbbarDdHsbTfYDwqIUmDNkOXJdPiiHsjnNuprhEZvoV"), }, - { .name = IOV("js"), .value = IOV("oJXwuNMkDusVWALtZmWGIRpAFIExlXaXfZNlqzySjIDMJ"), }, - { .name = IOV("ab"), .value = IOV("aztanLiXPAlqBuSpYmAvOFkhINVVgpcKxQgTZAmnbyufASypkndEXSTsghMbnSxbiBCU"), }, - { .name = IOV("JndkFPCeOUitJf"), .value = IOV("tslrAOtTWJdXkSU"), }, - { .name = IOV("bksI"), .value = IOV("ykloFQmguTtkdaUoMjYUPePZaUcdrZkAneMany"), }, - { .name = IOV("pmhr"), .value = IOV("wgvxknYxTjhNlLtSYV"), }, - { .name = IOV("vQSqwZwwTcZz"), .value = IOV("CAOsZiQCHDRpKBDdNTOpJoCbUDXaLMhFycgOaIdFRqsfjTmzxPuEhCnVCUeObLDmjHSn"), }, - { .name = IOV("Z"), .value = IOV("nsdwTGViJkEtrhvJINHaLDMDuCtMFJsQQnLXxougEOPBLEdeRFbYCNPzleKoOwuLLbDXcYpe"), }, - { .name = IOV("vBwMxFbFkJ"), .value = IOV("DFKXsHVbYUBbxvBpYSDlHJehj"), }, - { .name = IOV("ZOzJFA"), .value = IOV("WVnWSxqUrnbNHEfEmokeEIbMaFlXxSzJxnqpDBOvmNlnsCXQUQxfaiNySpJUpk"), }, - { .name = IOV("YQHxXKwrfUXgK"), .value = IOV("XQRCNzXHSrroUnNnPnpKJXaPLxFwqDupmTrSGxjyffyisWSDDmZCZTkojBzUPbsrdabsiDrCddihn"), }, - { .name = IOV("MCoo"), .value = IOV("yHmiUJZsFFWvvZcEfSP"), }, - { .name = IOV("i"), .value = IOV("wzoSfXMmwbQysofGwtKmcfIkUWnKGFJHTknFjYCQOFXcYTWBfPWZmHFImbppF"), }, - { .name = IOV("ERz"), .value = IOV("XePzXoMLFWsTohOfEfZDmmpNjjCNDkCQwpyVCNPBAwNcqQCSwKfSQrdEjyjSFEhHruN"), }, - { .name = IOV("DSTackVASU"), .value = IOV("t"), }, - { .name = IOV("pm"), .value = IOV("XxzkKQtfi"), }, - { .name = IOV("uRSTiBwcDMpJtN"), .value = IOV("jRZijKatpsSFEfzIINeOYbCEAhTofCcgM"), }, - { .name = IOV("basSZ"), .value = IOV("LaSLvQtmMOrDTCVXAndZTroGwkfv"), }, - { .name = IOV("uJrIFNUAnxj"), .value = IOV("VZeSwhONzhOQWTRLPLwvjHmVQSsOmSiITgylcVjjFNbhXstLGOzkfdkqcBKkzL"), }, - { .name = IOV("gNUsgRPsDc"), .value = IOV("uwGodcVfNzyPMz"), }, - { .name = IOV("cuNcRaZMhzLPQwzSXW"), .value = IOV("TPscrMvjepBQmjcEbverYEqAIhZdcRbbMphUsCulNkCyNrUnGpTWJqkG"), }, - { .name = IOV("lw"), .value = IOV("BbyBntTZu"), }, - { .name = IOV("dDEVnQqfCSNdu"), .value = IOV("WoTXdpaW"), }, - { .name = IOV("AmyUfn"), .value = IOV("zvtLX"), }, - { .name = IOV("yxHtgVTfD"), .value = IOV("xdSYKhznQamqbstLJNIGWFUgSqYkOkTDMmHZmzvdmaDXOozbXyqTcVQkPYiVq"), }, - { .name = IOV("LFsJs"), .value = IOV("pqDUvlHMeXcjYIdCAKm"), }, - { .name = IOV("ViTlCZwOJK"), .value = IOV("RJpqQzJiygnCqoiKkfAebMZmmtuQOnkGDWLzscHKCNQDGtlVziueIgopOVF"), }, - { .name = IOV("OpLpwoub"), .value = IOV("LHgTDdFkdrpZyhGUbSuzPXzROSteDWilmckpwUdpYDDkgnvCvigkafyRQUZyhXjJmzWEggMuhVWJqQ"), }, - { .name = IOV("nDJSkS"), .value = IOV("wmoKOXXXdpszoZFyzzNaClgdKBhxPHkRdVCzwTF"), }, - { .name = IOV("GXqKkpvEAhfvynUSEVD"), .value = IOV("xQQNbgCyMXBEBBpSXfcBcMMlcuMdTgUUswtZTfG"), }, - { .name = IOV("OpthMuEIHYPH"), .value = IOV("sqIPkywULXHt"), }, - { .name = IOV("DQxcBjiTZWqhTlP"), .value = IOV("kobnsKRfZHxTqcyyqPUuyFYIxEcnifCxtPzEABQBQepdqaSQEeRcrHtBgtyTgpeuY"), }, - { .name = IOV("O"), .value = IOV("jAqrljXhAFypKxwjiSxheYtpAwEuAADxxGJluXuGcILnviSkHRwQPgUXXqjeEj"), }, - { .name = IOV("N"), .value = IOV("mXojdGEwTFsskcLMsZZAlaOkpvoKOaeoZYPkUrAq"), }, - { .name = IOV("FtP"), .value = IOV("pj"), }, - { .name = IOV("hTUfLPpnpTTHr"), .value = IOV("lPjNdujuBRvAySNXcFkoxYKusJDzhsIOLsdUz"), }, - { .name = IOV("DKYc"), .value = IOV("iyuQelIMYZgdAvxyxSJsZZBQmNOuXOriZOjVCWofTPCevUwjHAhjhqnpNovWHSiItwOzRMUq"), }, - { .name = IOV("AGDVyCYF"), .value = IOV("CeRMxBxFyzkHGGcDOyqlrgmhrtMZDzTZmhlBdZJnGSpBpVkgLF"), }, - { .name = IOV("eiopehMq"), .value = IOV("nNbbJBKofDrAYjcmesdKRpUtGKOBUUjPMQxiXyVITuEtWGMyjgBNm"), }, - { .name = IOV("irOXUdfDulLoiiHV"), .value = IOV("DrntRwDiVFKufNOqoMXrkTVDdkphJBBdiGaxiLS"), }, - { .name = IOV("DXFJq"), .value = IOV("NIEjBZXcHGaTqRCukWiIwrutJne"), }, - { .name = IOV("cCYuNmOkPlXgH"), .value = IOV("DpSVBiYShckJZbxMDJsyrrAFEYrDxDqiyWSwFPFCYVkAIwqAmyXNJUIkumKekaKtFWEH"), }, - { .name = IOV("ywqcbXrWHpBogCt"), .value = IOV("EVxDwEeLXgVoDDTtNZangTVpAkjkTNiplmGgnKl"), }, - { .name = IOV("qsSEomhXiR"), .value = IOV("agtfAnlZSPuGgolEuzmQHoSqcPnMARAHPNhbXjnHHQo"), }, - { .name = IOV("yprVfMNs"), .value = IOV("qMFxrkXAPUeGmiuvIWHkNBQlHwElumccMEMMrlqyjVCyaIAgjpvSCPJwIjywSfBHqrDpnkWSd"), }, - { .name = IOV("k"), .value = IOV("OfYPNqIZznfxpkuOdiryiAmhDvQaqtJWBFvFvRMLWeGuuoWPvHw"), }, - { .name = IOV("eqJeZaeWqZm"), .value = IOV("SuFCIHaJcdUbVJSJIkZcNUoANVOTXDdGoLyPVhgfbWjcggteGSKFjIcebJRQpjFVTTGrLeAf"), }, - { .name = IOV("SWbVqkvhZ"), .value = IOV("InzYCFDNRsauYODKFnMvlRVpWFSFmUZmnPYRmVFjyDfcpmukzxpyeUrgBroJ"), }, - { .name = IOV("VSz"), .value = IOV("hXtEWZrPHDJUtSnqnPPzunIOKPjXNOpeKJHAEvwEOqsfxoNhQbwuQjKCVnDbF"), }, - { .name = IOV("FiKf"), .value = IOV("iLIm"), }, - { .name = IOV("rwEZpBZ"), .value = IOV("IhuAepJuvrggWewRwlyvzpBAWOMxqqMDJkkQArZmXwNxZly"), }, - { .name = IOV("ZlArvQzAJMwZzzQssRv"), .value = IOV("jNMafejrzUGxyWYyCFV"), }, - { .name = IOV("tu"), .value = IOV("dDMESCfkEvkKLFOYVWipwrftKecLCCEYmsirYLc"), }, - { .name = IOV("KEJP"), .value = IOV("bnaHsMHpXydrpHUXo"), }, - { .name = IOV("zBETNDQ"), .value = IOV("YdFqcJjiMExmUFYXcORtRwZkxOdEmBkyjNuaJJeoQGbdSTDwccoKpJDUMUm"), }, - { .name = IOV("PLadBuD"), .value = IOV("enxcGBYFleCTrkhnBgdJxAOrDSkwGFgHdsSKjLyhXxLuLGFugBpsGOJJAJqUXwpyqnrEOiRerGqHK"), }, - { .name = IOV("jcqWlDBKmeV"), .value = IOV("hteutfLCQqjMwWopWWYXTkLjPlJgrFGVMywJ"), }, - { .name = IOV("FyPSB"), .value = IOV("UovipqNfvCQiyLwhPMFMiTKLpeIBBWDJISBfVFfxPpmfUyEzPVRYIyXktTQouWptbuHBTJct"), }, - { .name = IOV("bmZjTeMXHqCmtHNKph"), .value = IOV("ZqiTKDCtCPjEicvyTYUpfynoViBCGC"), }, - { .name = IOV("gvDmbAJyGnt"), .value = IOV("SBYboMjSSPilJIXRhFzVWZrWmEpbEhAuQTTDcNzUILE"), }, - { .name = IOV("NssAOUTczgATOQtMfpK"), .value = IOV("kEPNAHSF"), }, - { .name = IOV("TNcqJZBnfTtnRazfV"), .value = IOV("qYndnetaljErPoJXbMiZOfKmgVzZsDxiyHzCwECiJYRHxFZ"), }, - { .name = IOV("GpxLYmtHv"), .value = IOV("KHjaYOxUzLVESnlFPLNnVgmANBOVAWCIYhuinigZWESYF"), }, - { .name = IOV("xLSBdNsgxrkrHYuUppr"), .value = IOV("DsNEGzYKPNDuVbJVDuIFtiVfMUugMLyuAjLDCynpbOXJZQAnzkj"), }, - { .name = IOV("wtIy"), .value = IOV("oMOKCYnwjpoaGlnFxrNsZRABWzcjJmetvSEScuKuteNSiWKPMCOhoYiHufbFPbyoLapalYPulgkLZik"), }, - { .name = IOV("ziXRgbN"), .value = IOV("rqQtigLaBZaqXykJrXMnpjXaaeXjjrznafkGHwAHUY"), }, - { .name = IOV("ytTMIuJiEAvUB"), .value = IOV("VYjhLKEAPNffGhcFjrIosqzznewnDNiBj"), }, - { .name = IOV("XC"), .value = IOV("rhffjnNgATakyhlWJfORKysnWBLpAKlyEmkYnuVFKIcbBHQDdjuttlazLgGPfvl"), }, - { .name = IOV("wzVBgNuXBXOMqiX"), .value = IOV("PtKgPseCbZlSIKWyVPFaAfzimRttxEPGRwcEKxxqsjVcqPu"), }, - { .name = IOV("JZuJcvLfBZAovfNqNAr"), .value = IOV("tfBJGxHZOpQWFtpzZVufczCRecVxgrIOHjrvYtuYSAidUkYHgwpCwyGwEbveyjDRgSWyZiL"), }, - { .name = IOV("CpnfGrFpNTY"), .value = IOV("KeAtWHufNdKqjYoJaYOXyaFfIHbtRGBpjqVGSROXqYioMeCQIUpVsssuAsL"), }, - { .name = IOV("sAhqmWhMltBrEVkiKX"), .value = IOV("kFqhYxMrFtMjRTG"), }, - { .name = IOV("m"), .value = IOV("hLjqUiGQLlWUwKzEcJXbPqxRCWUOZPhdOtMtiBUKHZDVpOjv"), }, - { .name = IOV("zaFUuozXGrfHNnpDz"), .value = IOV("RejXauBjvMPjCHZwCNUxGzZHiNmoUXyAebZTaafpWbEhCpznFGyEVrbcAFaHYNuNGTAT"), }, - { .name = IOV("WtQoSSVTZuqGB"), .value = IOV("ENnvGhMxGzSElTwvsMbXYhPKuZyxFQSTKBWXBkWlzQLTOvqHjNQbSZmfq"), }, - { .name = IOV("aqFyVwBw"), .value = IOV("NFnJOZClAVmivrhtYZhSnHdOuTqHLmPMiszXXpRxMXHoXGZjXmhGVXpSoPl"), }, - { .name = IOV("CYZlx"), .value = IOV("dPTuluGhaDhdSbMeQIHbmtifcXQtOqqMEBSpMuCAhXUfzGwZckXTeNoswrzvyCyjKTNKPzfoI"), }, - { .name = IOV("AQD"), .value = IOV("NVicullBUZRgWSdxKWWJhH"), }, - { .name = IOV("BfSEB"), .value = IOV("nLRilzLElNpHwbAiwAOWwEFbwSYBhGoXWrIsawIh"), }, - { .name = IOV("buhcOIqsSgOMjvBHTOA"), .value = IOV("VxpkaVwKYCDJ"), }, - { .name = IOV("a"), .value = IOV("RKPyqPfZZChqWnp"), }, - { .name = IOV("fNsRFQTZwAYAmc"), .value = IOV("LyEXKLZXQzAdNqUGNKahZHMoQkMuVqocsoJURIFKRIaabLTWBySImgkwkUeZVcCkfTmHmcaVRBYOg"), }, - { .name = IOV("TT"), .value = IOV("aRbacwSuZUqgKlBthFKFSqFmvEeqjgDJrB"), }, - { .name = IOV("BdZxYr"), .value = IOV("UMtZMZpctGorbxVppWyGmwPabUoxrbLZazerJuJGgvcomKLRcpsbHNNXVQlDHTzk"), }, - { .name = IOV("FIlxRfitGmnaLwFRyztT"), .value = IOV("efEdpEYWsFtUgWLhmQfLGOdUgmUzfzYprXWfMYUfXhwnSrjPmFNsbYdWNOuYTvPgHTSRolqCEvjDDm"), }, - { .name = IOV("SNZFLDColFNGAKQPr"), .value = IOV("kkchcHIEEVOcqovFa"), }, - { .name = IOV("POxXDfegLqcqnXqGPxxF"), .value = IOV("oumuuVvriwcTg"), }, - { .name = IOV("bGyf"), .value = IOV("CwTcZWxKBxWyDVUHjnzAWpEu"), }, - { .name = IOV("fpJLKXzXZZJkCvBwLp"), .value = IOV("xrmCkdDvqtrlsocGfuWVyyqLwWUuZnnftKoQxbBNAmhwWYYYrmLHvD"), }, - { .name = IOV("ObDFcBAqFMeUCjTh"), .value = IOV("VISozMphNKIvwbBInHXoYGFkpkqmqhCFBmbpzeN"), }, - { .name = IOV("pX"), .value = IOV("UDMlgRGVFdkttHQCDyiDYbMSfgKmNdCnRaLODoehRCrerQyvmPBPttSuFGkgFRr"), }, - { .name = IOV("kuzyCuYQgJkSp"), .value = IOV("QQyQxYLsHGiCTVSVcGysYRhnkmHsjmpkgM"), }, - { .name = IOV("wPvJjJXkqkkMiClT"), .value = IOV("XyqVREhWNLbKJnoCNDVaUXuWAVKfGTgrVUJxMRjHIjCEmlYHSCFAjrTNsbMVBHbjpxpurWX"), }, - { .name = IOV("oNbg"), .value = IOV("afwDbAyLxoMSwmKMqEdARJwWQbJYabkyYDAoilidTdJMpidQxWVcbO"), }, - { .name = IOV("WrqcTqsWb"), .value = IOV("gWerPY"), }, - { .name = IOV("dGIFXQLNCFVLThOB"), .value = IOV("gtbtgKERWRGCUSacOJamBrbgxu"), }, - { .name = IOV("Ye"), .value = IOV("uQDjkqBIynLwj"), }, - { .name = IOV("SOc"), .value = IOV("vCdgerRYFVhzyksPBiXwYZbnnEqDWajvyyVWuXdBHclBkTqUVi"), }, - { .name = IOV("jnzgJDODItOHeYJY"), .value = IOV("fkIBKiUaGuAvjgMYVjVpSyUoUyQcOLBEqTgKJsqjFemGAfoXHqlnNWsYnJvahAWFrLPQFe"), }, - { .name = IOV("hFKRbwePpJffTm"), .value = IOV("BxslPBMlOwJWDxx"), }, - { .name = IOV("sVhZWMrvhNHGtyYS"), .value = IOV("lkcwzhOIlblApSPmEzLlezRIrzOQtheeuUlml"), }, - { .name = IOV("gB"), .value = IOV("QZMoFqvDEnfPHRixXWZIckFgarFQ"), }, - { .name = IOV("YowcfeOKjcZazaV"), .value = IOV("JwDfreouGpayxDMfMDanCsEKSBbk"), }, - { .name = IOV("XJRuSHVGb"), .value = IOV("NAOZkQNjAhpxpBdIOOMPoINGFZqg"), }, - { .name = IOV("PzELgeWuFLu"), .value = IOV("nSCvyVXMoDjYzvfLyEbTcdcxUSIedgIXbPFCCPVdZczhGZPRQiMF"), }, - { .name = IOV("GGZBNNCgOjjVbnZu"), .value = IOV("VPtdFILcgpTWtirlKpszHHlVMQCUipcwztewUtFYpmWQQSVLKkityjtyQHHIDBcsPcoQhIrlI"), }, - { .name = IOV("EoK"), .value = IOV("sZOPfDxHDhrJdiHVdWkfydxcsNTAGFrzh"), }, - { .name = IOV("YVERvsFzLoSFUN"), .value = IOV("dVVcDh"), }, - { .name = IOV("LUKfkGHJ"), .value = IOV("glgSxwhgKONbvEGMBWHBRvZpoKfVWbdvozXZKelslUU"), }, - { .name = IOV("vMibW"), .value = IOV("HygmLHRKCCIDTufWDGICcOKmVEbxdPjDU"), }, - { .name = IOV("W"), .value = IOV("DomfCVmLjHiwiutyInlLytQRNqLCSnxbkCx"), }, - { .name = IOV("NmBLWGHrCFEguduZr"), .value = IOV("BfrhGpoVPHBGmyGshaBqH"), }, - { .name = IOV("VBjmRyqZEUhkzEr"), .value = IOV("IorrLroFbzMxojblHcIGgvpksyAshRrjGkLstwlviHQeee"), }, - { .name = IOV("iZsqcT"), .value = IOV("KpTIMrgMnbOobwjorDxMgtGSfcUqzGiB"), }, - { .name = IOV("NdHKmfWVGnJZMh"), .value = IOV("cmNSJXMOV"), }, - { .name = IOV("LSkwyKoveVzVIZ"), .value = IOV("NaFpNWWRJyCmfDXkRlVGvyJttpGbBi"), }, - { .name = IOV("PvmaWksvIYjoNWFLtOf"), .value = IOV("CXKMSSVrbDkuBSYuGKJIcGFTUowLyzsJmPmrsMRTSqgvafsRnshRbIMzyzKFKFWFpk"), }, - { .name = IOV("NQelp"), .value = IOV("mUWYHfVPLFmHlBbgHqJxvAVncOWUmvXkppbmBimRgeSYJSq"), }, - { .name = IOV("ZssxEYFlGVjMRKHny"), .value = IOV("EcIMfCNLRnwKbICtYRVLPGzaHQtkDgmhxucmuSGhKogWTpbeVFfZkcjyVrHdK"), }, - { .name = IOV("EQGbKyHMtehnxuRIxT"), .value = IOV("BXwaUzcqQvyJaCkgYSnvodLEYYDCcaveVnIVTIXKpaZtdSTktgakeCnHo"), }, - { .name = IOV("kBfd"), .value = IOV("OXdjJcFgPYg"), }, - { .name = IOV("jEZSfKZspYzAdPDuKl"), .value = IOV("CONHhQcBWkHdvDAbcMSxKxJa"), }, - { .name = IOV("FDLpyBwh"), .value = IOV("EHGDBZRtIEhyMklKEvwhXUIMcQKhMWySsUpBrVplAlDwvSksKSnaJtzyCJzPOSUSNrS"), }, - { .name = IOV("czAEmJKFG"), .value = IOV("likJcSZtvpxzAngqcVwHGDSzuTMUVwpJrKcSSeTQIjNCZTKRD"), }, - { .name = IOV("RXFUvKRewQyaBJBvdx"), .value = IOV("jdkILQctskMRIDRVKIeXhsvuBtpngtsmxPsfMjtsKMjjWWOJihcAuNRadUo"), }, - { .name = IOV("lmmcZVZjOCbP"), .value = IOV("TDenxsjzPwZNmtTFsRHXvAEQmXsMmfMQQPoRDYCQuK"), }, - { .name = IOV("oBtHTFn"), .value = IOV("mjGaNxyXLy"), }, - { .name = IOV("E"), .value = IOV("bS"), }, - { .name = IOV("MRMXrmkqgaMhreoexUO"), .value = IOV("rbSCFxiez"), }, - { .name = IOV("BEuVdzlDwGzVEBtvhmR"), .value = IOV("eMgTovUlQIyiJZLQNLNYv"), }, - { .name = IOV("NcWkcOMGLU"), .value = IOV("PBYidKgFgDQHvbNvsTomOfImUOQOibsWuTDvxzqyhwpteccRGvD"), }, - { .name = IOV("tuIbFrwecluAshO"), .value = IOV("tLvqEzdAfNTIOvkOHIjiseurRDpqLBZelDqxUhhlmPiAmSmyCWx"), }, - { .name = IOV("sSnfsHGFEvxfyAL"), .value = IOV("MyufBfxtfxCoZMpHBLNVxpRGsmCvjTnzjZAtXoaSQhuFuACmMtgpwKJsMtegwMpv"), }, - { .name = IOV("eY"), .value = IOV("TAvpI"), }, - { .name = IOV("vQSlahXljymas"), .value = IOV("hhqsGnzVaiYXKltLxGoc"), }, - { .name = IOV("Dme"), .value = IOV("tDZqbxqgfeEKvZuuUWIgfYTYycuRIyunBeXqr"), }, - { .name = IOV("QInYuEttk"), .value = IOV("XLvJfkXMg"), }, - { .name = IOV("vYpIagkNonjOgz"), .value = IOV("bpmcklVIhN"), }, - { .name = IOV("VpwAujtgwtzDjpjkaSHu"), .value = IOV("ETPJEPQBOpUEbcJBJxDVYGbSkapttDoZQywulKUwHhWljFwl"), }, - { .name = IOV("BYlLGDNnsV"), .value = IOV("pzLZqaYNuCMLvWohHaPCgYRUpUGWUsdgRdBoszixzGpcJxRkHnABAhFCJJuPDGFn"), }, - { .name = IOV("jwmFiSuRBgNN"), .value = IOV("rfZwFORlaJILpSbcEGqPFlFzsBwQRbBXoohQZzvPQLQmDN"), }, - { .name = IOV("TbJuP"), .value = IOV("ycu"), }, - { .name = IOV("qxDFMDQQvPhWu"), .value = IOV("ThQCNGvnIZBgUQTNkRMvAivzxHDPRJjwkegrMkfPknLKmUqEfDMkJvOj"), }, - { .name = IOV("iXgbye"), .value = IOV("BHvppPeLbFjliYVQdvMaRtirGmCDmYQujsKvSlIFJhxmXqKGmpwRzwZqIPigNxn"), }, - { .name = IOV("Au"), .value = IOV("aTkSlApkuhDinDpyDJRDJxCDbHamUxTtTFlLsyNbHGSdIYMTpXHvtIAbSBJMNEWKN"), }, - { .name = IOV("antanMBszfTGAWMbZP"), .value = IOV("ebouerBUJWewNEHBoKyKKRZdvmzXWTxyGrr"), }, - { .name = IOV("IfHEddeEvxG"), .value = IOV("BDcwRUViLsxzOWaLPTAVdDUEDOasAJLSLfzwmUYwhwhBafrRaEyEfYXffcMICScaxSFIoJTAwuCvovz"), }, - { .name = IOV("kvqMxXspM"), .value = IOV("bloyfqYGBpwgsmSAwzM"), }, - { .name = IOV("h"), .value = IOV("pCtZdUVIgmJnTXvgxaOWYmYkqSFihcmzWzKGriXllLBaSrndAaRytrFJuMnOXfllejzssRQvEWXVgpL"), }, - { .name = IOV("bbzoFHvrPopUcGMh"), .value = IOV("cpnV"), }, - { .name = IOV("oNLsyOgzYqNTwgMMT"), .value = IOV("agFFEvcXzMTZdcYJWWkxlcduHHAeAeuzSXwAPEMrOdfppkTD"), }, - { .name = IOV("ZJXwLZcfXXY"), .value = IOV("NdhMwEGzmuuNSSsEvFZSNJiNsNOFskYOlfHRUNNFkAgIJkZsUmiVOjSCgFkNgidVbiJotNqKERlk"), }, - { .name = IOV("MsKMoxSoLAegbsM"), .value = IOV("DfkTFDfuOZnDodhtbIuwdwyrDxdpROGoABBRgyPhJJR"), }, - { .name = IOV("us"), .value = IOV("OUjYVkmviTxeKsNSclGoUCAdYdKXACcKCeGTVkGgdJzOfJwcdnsUKWqseJcPfsbljUICVVhES"), }, - { .name = IOV("azNFoaZICHCyzPAfApYW"), .value = IOV("gAMDyMYKiJmgonSVZYGLZgrpkMZpHdOEgebxrtuIPyHGYWkWaTnnAduM"), }, - { .name = IOV("hqTYGUHAmejGr"), .value = IOV("tKqEyvABUBHJdfNKuJYVjVjEmuMXUxVEgVfxglyPOPRpELTRJDXcUVoyPCliySVm"), }, - { .name = IOV("YxMswLeNt"), .value = IOV("zzKMnpdCAaTidDGfBngwVUecaZyrOepzo"), }, - { .name = IOV("ZoHSXwHDBki"), .value = IOV("RoVNScqnpfXxczNDKOzoumI"), }, - { .name = IOV("QrBvAMyczUWV"), .value = IOV("UxgoxyvORQlEJeovoYnschCcWgcrkCbeuROcHPiLsktSOfRmoDgoIxeNMcofIePrfHKj"), }, - { .name = IOV("KPItDrIJwuA"), .value = IOV("oZqgufzZCvUDXXioOroePgTASqBLLNqWMFYQSXSdm"), }, - { .name = IOV("dHZLU"), .value = IOV("UrfJnjsLvJRoHlNCuQNcAQKshHVrcDVjphsWF"), }, - { .name = IOV("YeiUSPlvAjAb"), .value = IOV("lUcIowaYsDOqDOfthUwfVtrCI"), }, - { .name = IOV("ESblgrrZmMRphzAtdqu"), .value = IOV("QkrLODruSSgmDgnKlhRgPUScRmfDLDyjePNbNFwneMWNFojKBaUwJLjKjHZyGlwPgAdJXzknk"), }, - { .name = IOV("cjdiBsiHumYn"), .value = IOV("wxfTCeOXYqDYMQzfoYAvintzUrwlXctCqGeOKPcOhihEEQjFiMSAmDBZstOMdyjIKEJukEVBIYk"), }, - { .name = IOV("Kchp"), .value = IOV("xVQkQNlQmcNxPUmjYmpSARvrETESNaVXLflZOeLDECZJpePXIs"), }, - { .name = IOV("kJiA"), .value = IOV("QSlgaU"), }, - { .name = IOV("Ly"), .value = IOV("UZPaNhWQvdYxpAtLbjzdKrhjCjndPsBtvaYMcIfdFHbnXCHnkMxVdPTWknuaPTcPmAXhdhuUybaYymV"), }, - { .name = IOV("kT"), .value = IOV("BhVGAKNqPERpGjknkmcsCksMjCPkTVoOfBvt"), }, - { .name = IOV("rkXlTDGrbotNctIJ"), .value = IOV("kWQTpMZdUOwrVOKiSuPSIJuNBSqoWHvayEzBRhXCUjp"), }, - { .name = IOV("Y"), .value = IOV("TjhAvNWnZVCrxlHigGjXxGcKNXbeVoGKEuwuahlc"), }, - { .name = IOV("mwZeGautyyqv"), .value = IOV("McEEaliMHeUmtkVsZiGzECTggGCppiESffikKCNVzwXSkgceBJwdiKdlWwMuxX"), }, - { .name = IOV("W"), .value = IOV("lJBsdpceNAMgCRJhQNnlfLfgvnYj"), }, - { .name = IOV("bsMuXiYpTVGL"), .value = IOV("UVMQJiCdHuqMJZfGblqguNNCVCfVCnvZHRTFxiZXc"), }, - { .name = IOV("tNjxNps"), .value = IOV("uBqfhpxYTNyDQpWKJyTkaTQlWYWfhYmzeAqwbOCGuCiEhtjrxqneJuLiMRRnNfJjDXxMlaxojG"), }, - { .name = IOV("Dt"), .value = IOV("RZHuqIYwGnGstewuyECSpfrtbkPpBCiHrqNptmopLZRcIGtBPczYG"), }, - { .name = IOV("ETttrBJ"), .value = IOV("eLJsaJzXkBGPwdNIMvveKogrOmDBaaJTvvJTZpatfFWoBBXTGmDRcfQJidIENsaqdtERtN"), }, - { .name = IOV("YANAomilfaXavoCEwHT"), .value = IOV("aZaWkDDvqFELheYJSrsJwHEjyUKkMCOUtYpZCNiStuhTmTSFnducPylvbMZUkNpAW"), }, - { .name = IOV("YNnxFwwCdPLXhAhk"), .value = IOV("qZjtyaXLYQvMlCOwChjlzGRKYWTbPtanAmCnbcJBXCoqstjvtxsbQKPsEequPIHTqxwA"), }, - { .name = IOV("lSpESEyajt"), .value = IOV("TmQaORXYvONAIXnRaOWIJcXKeruLuxjqjiTCQZaaWBzltyjTNbAPvwK"), }, - { .name = IOV("YLvBxKfbptyklbNjM"), .value = IOV("FgqAOFdIAQSbjaClKeLLlxMmKlGwaFsNQsScFqxBLfGy"), }, - { .name = IOV("QwSgzASgbpOwKqja"), .value = IOV("IRLIJUxfyjdJUxrLkRmpMZTObrWvTyvNqoQUObIeYaALbqELIwJZZecVebGnYQBYwBLIfxv"), }, - { .name = IOV("ThLwJotpMnSOiSB"), .value = IOV("SvmNmoIwyunDVpqolFsUKWZudnZoWWCNdVGQhCxEon"), }, - { .name = IOV("VuLFIZlkiROzGVbhO"), .value = IOV("AfxGYFStrwUQvByWdFPjGbMKevQMaUvoySDuPzFQ"), }, - { .name = IOV("ZBoBJwxfhqmaI"), .value = IOV("RRAvVrhfognxn"), }, - { .name = IOV("XPsyXjasYEcDoMVg"), .value = IOV("umhjfCOkfoTiiZhVjde"), }, - { .name = IOV("GLrziMmrZMiE"), .value = IOV("wIDCtVLjLFqwnrJfnqtxQeTWacAobxQmXVZEpnUZL"), }, - { .name = IOV("OCxaRYAu"), .value = IOV("NUSaNnYVEBpfzHZaRGBor"), }, - { .name = IOV("C"), .value = IOV("rhqx"), }, - { .name = IOV("TZdvBMi"), .value = IOV("nOxGQiPIBSPLLwUoKaxKdWNCk"), }, - { .name = IOV("X"), .value = IOV("HPMXiOQOPOhbHXQuRBADgkJCfyzqa"), }, - { .name = IOV("o"), .value = IOV("kzIgjOWfpeFNFAJxJFkSwiXpJvUcaEWExhVyFxqEAVUDdgcuZmvvoa"), }, - { .name = IOV("VvpbdOh"), .value = IOV("DxTeRwKTqVHdERgjQNIaytVykEwVtrzdqIkPqO"), }, - { .name = IOV("UlmTVhYiuHXRZd"), .value = IOV("lIqdqZUbDrZfXjiRVYULpgvmISIVCuqJkRMtNwwma"), }, - { .name = IOV("rjOOOV"), .value = IOV("LIO"), }, - { .name = IOV("lplJFHYZ"), .value = IOV("advooiVPeUtLTOpejYjcUMvKuOWYQxa"), }, - { .name = IOV("ODlNFaMYEyZmgTEHqCbU"), .value = IOV("SvFqQRhLtbylBjwODTOYRuGRRcqUVNSvLmgspZCouKfomOtzwzEMWzhLLtX"), }, - { .name = IOV("JebOJdfRX"), .value = IOV("hLdWsbtFAipoIZrZZbTqBmtEcygwxXAUISRpVXWfhPPzpUKvatsly"), }, - { .name = IOV("aroHLhrBkQkvwCuDWBxn"), .value = IOV("uiKuKtGwSzkdSvooAvdxCVXOfcLyCqIEDbJFejrEGHpaXpFGAbEHrwIwoGYxDozyOo"), }, - { .name = IOV("I"), .value = IOV("fDUcpsh"), }, - { .name = IOV("BROkocWjIdMvmLyG"), .value = IOV("RkotrqRctuimJrZkHEXSAmWoqGMBy"), }, - { .name = IOV("qmUAgRtlMFJdPz"), .value = IOV("gHHdDtVTWyLZJmfYOreU"), }, - { .name = IOV("gprKoAy"), .value = IOV("xWXNxRXVD"), }, - { .name = IOV("EySUphSsgAzukJNKgOOy"), .value = IOV("FpuFVXuSnJUSEQsAjjPq"), }, - { .name = IOV("CwY"), .value = IOV("DvClZKQOsccloJGExMmxKkZlMnIgyCobrvYxUEwLeXcjfncUUHrIJagzpmmTLvwKGZuXVpIqkOUkkmb"), }, - { .name = IOV("kjDdCryUbjc"), .value = IOV("HfPpsYdhLIbcIbfTeZzmRHfJazgSibXDeOgkuLmIGIantyyr"), }, - { .name = IOV("Qjlwm"), .value = IOV("rJpFBvdQboRWUOEbEzcaVptAcyhlufOCKyzAgmIYWHMRbcBXyyybiih"), }, - { .name = IOV("eI"), .value = IOV("nrFKzTjanLlalZKRmCuGoKAbKqOECYMbD"), }, - { .name = IOV("LMGfTBkgPrgaQqJVsb"), .value = IOV("JztbGPAayszKodnPilXQMlJNSjqJdzVJpk"), }, - { .name = IOV("Ffj"), .value = IOV("iuQZfPiKMvmhCScOkblVdOXzAleZzaOVn"), }, - { .name = IOV("utdcgGBS"), .value = IOV("FkGtJBgLBODTiSDAkjvwJAkLTnoqEmMJpaFFzA"), }, - { .name = IOV("kjKwjMoeuBBvMLzhnwf"), .value = IOV("PmswyIBMktRDrZVqjFJWxdPUlmzg"), }, - { .name = IOV("OnzaxPfMTcPndqmD"), .value = IOV("moNvGlYBwCLZvyZunbVSPvNgVonXPqDQXzwYhZdffbLkUWGXLrpXiAPGbsooN"), }, - { .name = IOV("dDRLX"), .value = IOV("XOrgIjtjfJzHVOuhRocJOQgVlZexbuMJsWvhswJjxHekGgXzgNCsmYSbgsUO"), }, - { .name = IOV("PMjwFNPZfqhzdP"), .value = IOV("ZVTexJSskiCKNtLEISxnOZfQflloshFmUCfOHcPq"), }, - { .name = IOV("mh"), .value = IOV("cUFNUIYroehjbiovzcBjEmeBZKJuGALFqbHohPsdWlMUgkfzXc"), }, - { .name = IOV("uKZpxtgXsC"), .value = IOV("csQswyFSARVZqVPNIUeiIzGFCKFZezRQYXGtR"), }, - { .name = IOV("pljaFTeIpf"), .value = IOV("xJKYU"), }, - { .name = IOV("JsOpRXFddS"), .value = IOV("tHKnfGhUSXhaEnzGwCkXtZELWRWadtJvlYPGhCHHbqhUYoPxmDaBbcORMm"), }, - { .name = IOV("U"), .value = IOV("kNQRAQesZEZKGWnbuQRsnVHiTCzmNZOALsOzVyCwvcRflDUaEsDiKQIUSmmWmFJXNbf"), }, - { .name = IOV("QMAPb"), .value = IOV("gKpquwifEhuYeCQl"), }, - { .name = IOV("lLXXMaQfNALBXWlZMj"), .value = IOV("hyFVkrJaPCNxSrHSlsBiuBmqZZDiycNzMllW"), }, - { .name = IOV("aKjxoIc"), .value = IOV("OBrcLcQwJtIHlxyoSRXVbgTReHPzbQCtqqZXlQlvWKwkKDsCiyJZUplNTsulMKedvifz"), }, - { .name = IOV("abFqEyqwoGqpOHQSIR"), .value = IOV("rCDIbLfAeWjQXjsxsyoevaYAzYTsjjuROoytcSeRxhTh"), }, - { .name = IOV("XnlnKaNivERqb"), .value = IOV("gkDIVdQGbqmWgnFJRmsMmiYuQBFeJpA"), }, - { .name = IOV("qGemsZTgLwikmVUnfa"), .value = IOV("DTlOuSXnLLfnZXLfusZhmVwXgrKNnmzExRnXKofqvvWexRMJRTYVLrkVwoLgTCfEWUmu"), }, - { .name = IOV("rDpTXKOowVYVB"), .value = IOV("CTiCjBkIiUJrfQamMAGWxwgmxUWYqmQhZmivCDhobpKyCjXOOvHntstsMBKqIPKYIMvF"), }, - { .name = IOV("pgtHJv"), .value = IOV("PQObzUeiRQDiGLcIklos"), }, - { .name = IOV("D"), .value = IOV("JScKGSUUwCJfrpZNbLltMzJzdmywZwBCNazRunXDwpYhDXoZTwfzLEKKbKGdfuxSJ"), }, - { .name = IOV("M"), .value = IOV("iFDMoyoCPNWLnhDFAWFdeTbSoNAzcoKSaUUrCikfQnkfibEuhc"), }, - { .name = IOV("x"), .value = IOV("mcfpgyBMVcvoXrwsWdYbvDuCAfrSUyJLEsBEKJhmfXLMJaXPvkbd"), }, - { .name = IOV("ims"), .value = IOV("wErNVFuUSpNWnwtdcOoDJikPlOSlOPjhiAOutuN"), }, - { .name = IOV("OONwFZSxVdGiWdlTfw"), .value = IOV("fBFbomzzVjAvcAJfKDdaaBLkzhKYccSftSUptUlvhLljFETxwkMqJvbLbKcaXgiDvVMNtBodJ"), }, - { .name = IOV("HHlHMnPp"), .value = IOV("fUeejYbpjZByebSRnYysCrOJipcBydBPhlmXCnVtwuQIOLiXZI"), }, - { .name = IOV("UqcpusGIolLdstK"), .value = IOV("aOqATEANwgrSuikHEwNFusyYIdTszrDMAFXLzSmecklXoTJ"), }, - { .name = IOV("GhaMZiYcf"), .value = IOV("npGnEMDVnXuuPbvAJTGMWDDQXefnoZnVrAkLBSbCnDgpSQlsfpmzL"), }, - { .name = IOV("wfqcSkudfAW"), .value = IOV("TTCfJGqxyJgOLJlJKvbNolRwVhDsKLKAxEZtzkzEPpltsRhoQ"), }, - { .name = IOV("laSrjFbPwqSqNUS"), .value = IOV("MQjAEDpeadhAEboKZwPCCFFVYvjMR"), }, - { .name = IOV("nMkLybeTqmK"), .value = IOV("VzHMQcmJKdghFGMYnUfrVLXImaJANNEihYZjJKRbnPsszutOxVpNf"), }, - { .name = IOV("AUu"), .value = IOV("qkTnivUxzAtWfrTkgGWQUiipGCru"), }, - { .name = IOV("ZrboTAl"), .value = IOV("BjfsDPbscXjcnpTAm"), }, - { .name = IOV("HPjEuAozqOXkwxx"), .value = IOV("UEENidjpcFJkVXRdAvLjbQXtpltsosMzdXKQSrXSquetNeEbMcCTLYjovaFHFCOEDxSyHeCZaqY"), }, - { .name = IOV("Ccl"), .value = IOV("wwdDVCUnDUzFQIgWCdAEovFlUcthHKSzockzJrxFPtPWAutoZiQxoRVb"), }, - { .name = IOV("WahzU"), .value = IOV("JKdoNSUlTnFFMEshevdGRUNLF"), }, - { .name = IOV("wRDCJmqH"), .value = IOV("wJQVATstBzeLAGGvNKqGjzbbuKkuDfsqydLvms"), }, - { .name = IOV("odZUzNEEoZG"), .value = IOV("vIbhomu"), }, - { .name = IOV("ioPJbFHBto"), .value = IOV("ksUiDUlCtXbdJOYVETmGXvKRCknteoKMEKlLOObGjhfeREzvGOcMTYFIiqFytPOHAJgQ"), }, - { .name = IOV("hvvk"), .value = IOV("GmMeqNQPsaZtTsLAmJvMfWclbBMKrcVPvSKrmmZMOidzRfhVGozUpFtAboxquihhbhq"), }, - { .name = IOV("pDiYGZaCMRLE"), .value = IOV("XnfHlmOsgHUmtJkIkKxyBUAcdjKIEHgINNAHlRXFFXyXFzxruQBUF"), }, - { .name = IOV("gB"), .value = IOV("KDZ"), }, - { .name = IOV("iVmPNYQdefvuN"), .value = IOV("IjDUg"), }, - { .name = IOV("EcaBhlVNmxrYfXGlaoG"), .value = IOV("rycJRydRuRBhPUQUzwpgUCKgzDAdEzCOTTZiAOUgQLUFp"), }, - { .name = IOV("DTfKwzckfqnieLY"), .value = IOV("ocoqTUfCehDOef"), }, - { .name = IOV("RhcjDDVSWypG"), .value = IOV("IaIcfhQNxUPBRGsKdHDQGWpaLdkCFEuTtDBUugTEskSotaCoPUo"), }, - { .name = IOV("RYIKnjczqZbq"), .value = IOV("DNfolkbBcmhIltWhWmEwEqFcHgbGiwqtJmczsniksPaJsUhTzatradeMMdTSLbIaoSjM"), }, - { .name = IOV("bqrnVNT"), .value = IOV("mWSrpMyaJfgvtueRsskxVSaPUjBzf"), }, - { .name = IOV("dPkojsYVIqSJM"), .value = IOV("fgykKZXcXgmFyByzegOIFdcLRwJdEOAjKfJBmGUSyj"), }, - { .name = IOV("dBVPAHdRLeovbTSmQmC"), .value = IOV("zpHohdSzQdFmhX"), }, - { .name = IOV("YxjeGOwTcyRk"), .value = IOV("MpGxOynewaCxzukSdSQYGAmZjAbpnWdfxXoysJJFruoJtFYAtQofoDZrZxKqSVacZWDKPXfASwu"), }, - { .name = IOV("Fnnvkr"), .value = IOV("XKcVUJHbbVqdusPauGsuiOLQmAPrkLzpcmnFsGzARUQjNdyCLy"), }, - { .name = IOV("ofmCvsEflplDIHkk"), .value = IOV("IAImKwmfGJPOFEyMwUESKpzZatKbgMwaqAfXrfQZBRcoWYMRTNGgJkRt"), }, - { .name = IOV("SJIO"), .value = IOV("tGqqcELTqIEvLaSTGwhNnxMOkSJDQEKBMreTnmwJYmyABSyPInbdVQsLzngNMtKdyZZfiGyA"), }, - { .name = IOV("RyLcEcBojOWiU"), .value = IOV("RxvKQnHqsCiShpRRGnOhFpVWBRan"), }, - { .name = IOV("THDlDPqoerxCRhH"), .value = IOV("BMxwaOTZUssuRNFysoulgNoHnHRzcjbCOHdsyGqfqRCKrlzW"), }, - { .name = IOV("hLvOxFZlY"), .value = IOV("tFihYsAyszXCxSVHbqSYFHruZvYHtQujlOZqEMBzFo"), }, - { .name = IOV("VrszfVWd"), .value = IOV("rTyFWD"), }, - { .name = IOV("qjRWyGzWennxFY"), .value = IOV("NKpJUOnibUAuLncQHtrXIXPnrleXdxGDSaABsFiVsSRYNYBW"), }, - { .name = IOV("aMyVGUeigsebymKeQfF"), .value = IOV("meHEUKXGpf"), }, - { .name = IOV("nkioFEW"), .value = IOV("qAnFFKGddSWoQhJzpOdcRFrwfIEllKqDtnCvTPNiYEfUDgfZkwMaqFJaRkEmlMx"), }, - { .name = IOV("mjmwmwil"), .value = IOV("jXikWOkNwyeSUWO"), }, - { .name = IOV("goibXxPhIzMEzhMAwB"), .value = IOV("bSBAMnnwznBSdwXem"), }, - { .name = IOV("HcOuRtftYnzA"), .value = IOV("qWOhKZdzgoXhVBTNmSSRgMOyDGbgTFsRgE"), }, - { .name = IOV("VrXsr"), .value = IOV("dJlLicNgzQzgfoRizMALwAtVmYuLEPcYJINJEgfXnIdiPs"), }, - { .name = IOV("mvJoxJRIfDXbIM"), .value = IOV("lxbnbGaIQHAKVpYmbChraqmJgZjpQrVZneOUDHPbDSTlOOkvUgfOvKw"), }, - { .name = IOV("nSqQEy"), .value = IOV("DTDLpcnPwTHBpwZnuvGjFTjBXrBScwyRbtVSiAsvRkxYBPEKw"), }, - { .name = IOV("cmBukCl"), .value = IOV("bYLNtywtCkhxQvlCLRacTBTdBzIQsXRYIesZHHifillmIDWMOqVmHwAyIMBooCjlQeOiHpWgn"), }, - { .name = IOV("p"), .value = IOV("YYjxrFyQbpDErOrxSENhpeYFYiPVJfmQvdSNqYBIRk"), }, - { .name = IOV("BGTnRchyBp"), .value = IOV("EMHTg"), }, - { .name = IOV("dpilHsApQ"), .value = IOV("AeYCLnECCJjRwZTCVtsqSVnKYKpnJlitYnrZczxefTtlJltnMyEYzvNXowrOLIAxzNOlUzorfxp"), }, - { .name = IOV("SvYOscHALYz"), .value = IOV("qahqFlnLnuAJqoMMVpyHTqNFeCMYubLjuEjmuJWeUeEhZrWoAFFzZRPfWOwtiMxRe"), }, - { .name = IOV("INagFZsUfHTNiAtJHnVZ"), .value = IOV("LLPOWCwHgd"), }, - { .name = IOV("YerQAbxkhMGbRqdr"), .value = IOV("WFpsRpwTBCDONZIDMujHOOuFhCJaIuXDWIjCzpmuXQGANWMsRTMiMjBfto"), }, - { .name = IOV("OBpeDpYGkcAhtmQocab"), .value = IOV("QSiogqSYMvWqpExyOKyvBGsUmHuodZFXsLhYAnSLEbYalApVOJ"), }, - { .name = IOV("tFStMeqYPBN"), .value = IOV("eqCKxP"), }, - { .name = IOV("ruSLjtAtNKWZrnWnSWZb"), .value = IOV("PJbYSMSPZTzs"), }, - { .name = IOV("eIFXBVHFBGLXyjY"), .value = IOV("RKsHjMvvfVDyoPpjB"), }, - { .name = IOV("kEaeaaPfHkfZJEuFH"), .value = IOV("ogyDmvONZAEBxBYhWkXBAXaIPYWedqAgUHGTwun"), }, - { .name = IOV("T"), .value = IOV("kMtlCVYzKiKDkUlDCUnXYbRzOLEsLBOaewJIVbTLRoGs"), }, - { .name = IOV("mdojVxeXaMRIHLCj"), .value = IOV("UEHaaihJxqEvsDqwU"), }, - { .name = IOV("SYcbHTAMFdxZG"), .value = IOV("fFrCuMTaeyvaoPCuBPPqkOicvvO"), }, - { .name = IOV("ekizRisfC"), .value = IOV("bpulFZAwCSkXXSMhaSmiwwlMUjLkptyR"), }, - { .name = IOV("vyagWvsxhSTqN"), .value = IOV("eAOmxpWXJJrONuhdhgLsWSnwKNyBkiuZSdZpPJcaYfqDPnJeYOjSeHyIdbztrjnysTCG"), }, - { .name = IOV("DYurvAyoSlQFeeasXeB"), .value = IOV("wgLVhPhleWiXCMZExBixTKyy"), }, - { .name = IOV("bivRFlNv"), .value = IOV("aONjCqpyDjbzoIJdLmWqAYfdPdkPqNRrELXcAnNZpIusRJTqvyuBhENQghnDXf"), }, - { .name = IOV("zAWbXbXqkpISgRfE"), .value = IOV("gQymkvosLf"), }, - { .name = IOV("tfyBANqSyQVYqRUJjwF"), .value = IOV("aDXpIwrQIcKSyTiBYi"), }, - { .name = IOV("RmT"), .value = IOV("WMjxbmCCFWPdjXblzvPeXABSKHunBXKFaBiazbFGJYuxfabIiIOvWccGPvRmG"), }, - { .name = IOV("KDRzZ"), .value = IOV("FvYyWVULbyvcSCKYFYgvLUSDQMWxcOombfWA"), }, - { .name = IOV("OZsYZRYxdPIUdu"), .value = IOV("tazJjcxmPKmmRoknYOUHmIeEzmjJeEPBFVGmLdPYGgqpIgMXIBsoYRWWKimEqrvrQAxHrvtTU"), }, - { .name = IOV("dGjDKoVSbnV"), .value = IOV("Tsa"), }, - { .name = IOV("GPQTyRahzTqT"), .value = IOV("njtTjajgFvtAiLxwTqnvmstxAuuFnJStyuRnnet"), }, - { .name = IOV("YSceZ"), .value = IOV("MQHpbglYDhBTMGSbOhYGbFNzPO"), }, - { .name = IOV("cGxjeLwFtOIzWUU"), .value = IOV("BAZvhNIEpPVyIJYYPDTTgVrQAHYSAAQSiMfckhDLhXDLbTmNazFMHDHFSwvlohmqkcBNNfKW"), }, - { .name = IOV("AmmDXQBTTv"), .value = IOV("TKYLpixZYJJ"), }, - { .name = IOV("NVnnvaynhM"), .value = IOV("OXOwHAGANyJQqMgY"), }, - { .name = IOV("fL"), .value = IOV("DOIebUwKbwXlrQsaFBogbTsbzrFcCdoJBYYrtGWnBhVVgdHudrmFSGTdjwA"), }, - { .name = IOV("pQtNdXRCBZxijbvoiIYc"), .value = IOV("EWVVwVOCfdfCfFCPJGATmMAwmiKfhbuXVkEEBZhKVYdc"), }, - { .name = IOV("rdE"), .value = IOV("kLdTlkyyorlXlpFbUyePhHPSK"), }, - { .name = IOV("SAMBDLGARgWrXXWjA"), .value = IOV("OgzdHcTcFDDMpQYvcBCeloMoBYCmybZTNdufHiubXSiTfzUIQNwfjrJuACFUyihXgodTOlfQnXsRk"), }, - { .name = IOV("lLurvEJxrd"), .value = IOV("eWmjAwsscvBOQTNLlpXMeWPlCTwgvKXysBZaBzTcqIUIVHQkqrGTdwvZbavebvkhQkdZpWhPhbtg"), }, - { .name = IOV("zoiEoNX"), .value = IOV("RYllDZuKAydKxorSlKUzwJtSFhmREvXZwNR"), }, - { .name = IOV("rsUPpAxaqae"), .value = IOV("owwbIhRDEXJexlcRqkCbkx"), }, - { .name = IOV("HlxUbBrUL"), .value = IOV("xliDCrbMeTNueIywC"), }, - { .name = IOV("RoUiYckDJZFINgdeN"), .value = IOV("ecuJNLSKQBhnWGECRsFogLePvQaXMUlrvbBOtKCTTjyPkYwDdmY"), }, - { .name = IOV("ryKnpeuqnzaUB"), .value = IOV("dixlKwfFzf"), }, - { .name = IOV("oIYjUP"), .value = IOV("IWwaPEVVTBawhNxQQbwQDvWjmuDWmpew"), }, - { .name = IOV("VPrbnFeNKOyJTk"), .value = IOV("CZkWWdwuNreAiwopIxtIqQNtmZmEWUkccTWQSLao"), }, - { .name = IOV("DApjwKibldL"), .value = IOV("HyXCobTcSVDaKGWaZxPVRyHdapILDqOkKBNWqrvhhUPCWXGaoTXGztfpdUD"), }, - { .name = IOV("uvGDypbzFxCRpIYlzge"), .value = IOV("hpeEGEoQjvDFoBcqjBuKQVwilkLbgSOJpxqKInJIuolAqKiHQFaKjzmgAwYFiuTCwvIh"), }, - { .name = IOV("DDUxcYwlAygnTcw"), .value = IOV("DxJOjoVgVAeQHupLQVfqNuZCthMkpHpSgdhaIGoCZncLOehprfavLcvYVKcIxVJt"), }, - { .name = IOV("iwGvksdOuCMPEKxOcspm"), .value = IOV("CMIKtOKMgrVxfQdk"), }, - { .name = IOV("um"), .value = IOV("HSRacjsJsdduJCdYMKyfeUdcEjBHwcNLqbXNVMQxduxoqYYnbEKPsUlJjtKUwBMnWXRrvlauz"), }, - { .name = IOV("WhtaWLW"), .value = IOV("OmzBFktdNkeHijaevttINxKQy"), }, - { .name = IOV("fAUSIgMAtvXGNOSXY"), .value = IOV("TSIUoAkkdQudVXCqXuRMTMXqXYHadBezIKlvliUYrczZEqhcUs"), }, - { .name = IOV("guoLuSNNwOOQ"), .value = IOV("DNwjNmqRBFOoYV"), }, - { .name = IOV("x"), .value = IOV("snJopNBhwIX"), }, - { .name = IOV("DIwAHBVO"), .value = IOV("s"), }, - { .name = IOV("XqVysNgnjKWWrBKffbd"), .value = IOV("yLTJLgHWUuydFkZOnl"), }, - { .name = IOV("amocVTj"), .value = IOV("yfhHklXZkAZAW"), }, - { .name = IOV("d"), .value = IOV("dnhQihDjSvkgfPYDXDxsPAoMCYWVgGZoJYWlkNAmeUHtIHUiEktEeuRvrRnEAcZBPpeofWWoSwfBljQ"), }, - { .name = IOV("XXJlsVujxSthM"), .value = IOV("PDaklTy"), }, - { .name = IOV("xbrWDZ"), .value = IOV("hHKT"), }, - { .name = IOV("H"), .value = IOV("TdLcsOakhAYqvscIqRsneozCrj"), }, - { .name = IOV("pav"), .value = IOV("VPDBxZWiHIGPZaBglmqqxSTvTEUccutPyPXcenQIGJtJpiPRQoZxxnV"), }, - { .name = IOV("DqLzeMbXxuqGYecFBoeP"), .value = IOV("GKhtQsdPSXHoAHCymIXdzPEIfvLOfNIjMhHfqBCaFAINJuXPgnzeXMVtaZZTgDhZksmtekq"), }, - { .name = IOV("PVIqQodEoAGI"), .value = IOV("eIppovbSHsfVKmgNEciNVNFoKhVIZeBPK"), }, - { .name = IOV("vcHiULbGxscFWIU"), .value = IOV("jkFgkeyHcdzWTRdGpjMAuBmIICQpMwFSyZxFYODgvUaiqkZydGZLdfiiusCzDPydpzPQYP"), }, - { .name = IOV("VsvixF"), .value = IOV("ZGJcyBRThJeFghyqVqCKSOQdVbmLOVvkXjnqhpgWwgvCNyFvxxiKMxFUZWrgpsKZzzjn"), }, - { .name = IOV("YNjOKNiCT"), .value = IOV("xxeRdEBRgpsXNZnctBhJCdpaICRwQXYmXVgWnFcBhPaTYcbFYyeAAWfUOiPKTlYzlTDLanAmbhtkDMg"), }, - { .name = IOV("Nqxuqm"), .value = IOV("bnuUaWNmxqwjFHvSkMsEmacscyYIZHoIt"), }, - { .name = IOV("BYgwUKIOuYwyJFjc"), .value = IOV("ECe"), }, - { .name = IOV("RkmZNIChXkGpmKgvxJE"), .value = IOV("lTNBBKGMuEniOkvuJoxpdiPrCxbeBknskpEKwjMJGxyWVsegCoTMVVvClyltlzppvvy"), }, - { .name = IOV("zfSl"), .value = IOV("mKYRuieNyOqQGnOjyUmHuSeJlWHhntCp"), }, - { .name = IOV("wWCqeERGRNPH"), .value = IOV("yiwxpcfEgEsysYFKWkEkrmVeYTsbraKsgPACFOnPPSkVHLSjpTomKSUSPrsYCWEWkxGcLixzbFerZRR"), }, - { .name = IOV("kibmn"), .value = IOV("twERdKznXHunikCErwaKYpAHJbhMtP"), }, - { .name = IOV("zrykcrsLotOMPriqbW"), .value = IOV("ljgRkGsgTBeuImgCpeMrKTYejLrHy"), }, - { .name = IOV("NxQkDvduSEil"), .value = IOV("LIIfp"), }, - { .name = IOV("PwUKLoAVRIRxELs"), .value = IOV("GxEevDdLVLocyYfNGIGJgaeqHJJxUmtRBqGnoTCrqVLpxEOL"), }, - { .name = IOV("Bvn"), .value = IOV("bpmpUXSLlCYeaPwhgSsGBGIpjTJjDRbTTXNbuPaCVKUkHNdwfPzMQpEbtYwRRdLpabQZGy"), }, - { .name = IOV("SsfZruYEnuhbnH"), .value = IOV("yvGzPQiyIDbCLXabmPprNKNSQuZtbNuntUyovWMoglTQWyPSRAVUqHJqGntjGkpwgzu"), }, - { .name = IOV("CWcHjajeqNmfPj"), .value = IOV("RtodSrW"), }, - { .name = IOV("BvhymrwzxBBq"), .value = IOV("PlrOcClAXofzKmhhmSPOHSsSpZuymtjtVJaQbQawgxtEvCOu"), }, - { .name = IOV("DadyWOoyOwRQKy"), .value = IOV("qLRaNuKaSBOhyTlUu"), }, - { .name = IOV("LbHsEhkscyBuVG"), .value = IOV("JOtToRAfIzcmPUUxwUvvNBsuwABIuqLAiYljfvbfMjRyhCfBzCGuABEeLfytSKpBjOAngkipGegl"), }, - { .name = IOV("FPOLbDNncES"), .value = IOV("fXuQdxxYuxReCqLahgmHRisIoymuUFUTXOpGLwGRBxDeXcMEQWq"), }, - { .name = IOV("ihBJ"), .value = IOV("cqw"), }, - { .name = IOV("IAzPP"), .value = IOV("EPARPIiEkcbgUdUfbjUw"), }, - { .name = IOV("nknQfUIB"), .value = IOV("AIBIxilmiyquiNFcJQqRpHFllrlqNiuuHYeexzdFxWI"), }, - { .name = IOV("tqZyDbzscgBQMia"), .value = IOV("rERIjTQBjPxMNVCaE"), }, - { .name = IOV("ISvRDKBjtXpxZfwPblNe"), .value = IOV("oelFOGzHLKDYfTdanYrKETTRCMqhEnfSMRZgzjhIqvmRaLxvXrXEJxqTUcgTTytlEjS"), }, - { .name = IOV("WQJPgILoAPBDQLfL"), .value = IOV("BnmtzvcCnMQWQLuhdmykS"), }, - { .name = IOV("nV"), .value = IOV("CzxPWDrmLyUiNqPPgWAEBDE"), }, - { .name = IOV("NygszfPXpnmwVzH"), .value = IOV("FIUwsytdJHWTxoZWFFoJfRVzsgl"), }, - { .name = IOV("HKS"), .value = IOV("WDucJruCLBGspndCJsXbrlYuhuAHwNYTfNRgvVEHjsjEnvYFYVGWkm"), }, - { .name = IOV("DufFVSYPKePsn"), .value = IOV("QDNw"), }, - { .name = IOV("uUanSkNxEMg"), .value = IOV("BxaBADBoiIvhAmpPxVMtjTqPKPv"), }, - { .name = IOV("RoSmgmWhhUFeOCjtwhR"), .value = IOV("wkSnjiQWMJGTSbUoqhhUAeNaAFFYfjscINyxsXBYXfUBYWLjVZsIdEfXXjxbgWcss"), }, - { .name = IOV("QmJHsgJlVAr"), .value = IOV("lsHBsXXoaQOdDXsVIVVCvyeABsmfOeuDePWBEUmzNWTPRXmVHksYPZO"), }, - { .name = IOV("mmxXKmQAHSEYHfiStZ"), .value = IOV("ZBBwdKcUJvNabOVIPMKgxPApvtBKegqqOLFyXIlHQJNkZ"), }, - { .name = IOV("OdaVS"), .value = IOV("VttGCEOKLLbWaWrhtcVDzaCDyeYdnYEbNoQODjMGvsBIRkLYNpRBIaPitLsUQFQCmWhKyVNXknPCRx"), }, - { .name = IOV("iyoFqJMQhntyAxZUf"), .value = IOV("uxqQbFRTyNINjPoQUJzB"), }, - { .name = IOV("gGcRpoZeQRS"), .value = IOV("OOZbwONULRMvthqgggZvPyUaPGLKeWgRqv"), }, - { .name = IOV("oMQFAGelnGuSCAvaFVG"), .value = IOV("zaACHaDQxsJxLpqoRsXBmmOqiJHspd"), }, - { .name = IOV("jxVFF"), .value = IOV("qCdlIaJcluHyipgRKyPNKKYTuJqBuqST"), }, - { .name = IOV("cnvKkmSJtcJwDtlN"), .value = IOV("IyPrjDimViSzdDQkLVAAsHJVRjaJhWAj"), }, - { .name = IOV("mhHDxhnUsFoCkipJCu"), .value = IOV("hftTRLcRfrpOvJAwpUPdgFcHeUnIGFkbwXGcDiqsPyJhGuSYNBYUMRtmNdBVxagt"), }, - { .name = IOV("MgfSDCXazlgA"), .value = IOV("UeZOHFnnTAYxPxxMtZASIfpxUOWwUa"), }, - { .name = IOV("NNhnMibM"), .value = IOV("EzzKHThEsAj"), }, - { .name = IOV("p"), .value = IOV("jiHPkoigUkhjCpKuBqHOGzsEKvhQystXQkJcBaOkUVXeRKAMXUy"), }, - { .name = IOV("buPzpBsw"), .value = IOV("EVJIgKczPvmOuUInhGlLKbZpThyF"), }, - { .name = IOV("fbPRBrrITS"), .value = IOV("dCJUsGseQEfzCRBIMoDhqEOhhrWcwsC"), }, - { .name = IOV("Pzqe"), .value = IOV("SZuPDU"), }, - { .name = IOV("dTA"), .value = IOV("wtjrVyNnzzpeLhKcURaNuWZGzIVanigsJmcFaQWlxyttFKdZQmHAWDRLaeoHALUgArT"), }, - { .name = IOV("jHIyboUme"), .value = IOV("lMbJCEqTJfDaEtuXiicXgQiZr"), }, - { .name = IOV("OwcQNfaCndQPEeb"), .value = IOV("FwJohplQbEBpOQqpCRajsSZdFX"), }, - { .name = IOV("MF"), .value = IOV("bWmKtAbDcfVbdTBArrtjuRbwdA"), }, - { .name = IOV("cGAMcd"), .value = IOV("rYoFjwSLxAQzcDekExckVexTHPutjQwk"), }, - { .name = IOV("ukTljtbNeevdMKT"), .value = IOV("BwquwWAQXdMSOUGoVZQOjXrqcy"), }, - { .name = IOV("lmhetxxbXdm"), .value = IOV("VFFlExebaMgcMhhpQbkuNpNtYLNrTKboSTBrWgzXgsBNLtzHMMCCrdKBVfLuwzPePYf"), }, - { .name = IOV("MwXaoeOYiPJ"), .value = IOV("HqpLoSiUdKkWdRflKaCcGdns"), }, - { .name = IOV("KxF"), .value = IOV("piEwVrPhYKCxwXuUtMoxdrkjrKMVdNOqwVm"), }, - { .name = IOV("yXYLHa"), .value = IOV("BXVutcGUcympvawcPR"), }, - { .name = IOV("twzJKoiMrSQINXfYcPi"), .value = IOV("LsjtedRNuRBKPZtSALZETQIDqBkrCscvycwXYsgCtACf"), }, - { .name = IOV("KhXZHHdP"), .value = IOV("rtrkXHiqHFXYEdCrvmsDugaVZFOkxizMdPcrlytsBtmJbeiwhjdGODdJPLauWjnPBS"), }, - { .name = IOV("pysiYsMGCnBWTUeQJ"), .value = IOV("vnvnYvvjuGQUThFfrRt"), }, - { .name = IOV("ynBQxZxSWwlA"), .value = IOV("RNLyFDuHiSrMCwSYfHHkgRKqMtOgNyifFSZlsdRCHPcAChFNW"), }, - { .name = IOV("MAoPu"), .value = IOV("eGxsMfCvMrPzhXloWQNCtQYsxfnlHHFVjmaUmlQfeTO"), }, - { .name = IOV("GMxCMQeNPRqdOd"), .value = IOV("zkDbwMffgrReWATJiHajbnlEfwqntpktjOuCbSTrSvxReJCjRbpUyobJMLDlEENzvsxHEnMRcYvRUM"), }, - { .name = IOV("H"), .value = IOV("WcNTITnfXJKehiUOHJHmPiDDFpEhGcpEYrbvkDrwPiDIGAldHBAyTRBrbXLJk"), }, - { .name = IOV("TZWnGsHcRzuPab"), .value = IOV("mNyaxgllNCnubfOXtzJADZdZnXqfyBSlgLqMqtNyBXTNQYJEwIJJryRZHvqveq"), }, - { .name = IOV("xWsCEWAfCQD"), .value = IOV("EIEZkAsCsetDGMNCfLqJETwPGwFGmNoEDSYhpwMeDdrbWzMzzaStwJxvjCBERglJ"), }, - { .name = IOV("oOxFXnlryu"), .value = IOV("KoMbwuDiJNjSiUbuEEZnmYhlJfaahMXgGXhOWReITPaTVnacpUQGoQFPFJtQlsqtYd"), }, - { .name = IOV("UTxlhuHEYIntfN"), .value = IOV("UuKMkoqwOhkHUkrNIXAMTUVlCXOyrkZenZbazmUpvFpledhIwNRWm"), }, - { .name = IOV("jndBBecguzB"), .value = IOV("PyJxNsDbBWHvaJHabHY"), }, - { .name = IOV("IjPaaZS"), .value = IOV("GndHxxWgHMDkZWPpWICJJOPvnHhezggy"), }, - { .name = IOV("DJw"), .value = IOV("uEvuBj"), }, - { .name = IOV("WxkxVwHXPIK"), .value = IOV("LevKDGNlMQAUmJYEqlqrErgZuLTMMiGefbCOooRWOeccZiuyBihpCPkPPHkF"), }, - { .name = IOV("VTAbEzSVQq"), .value = IOV("ReuTGUGHKBFkovEptNLvqPYlemoQZGJNUabcVErQTolUcy"), }, - { .name = IOV("fSiGFxGiBaznHycuy"), .value = IOV("rycantdDMBTNPRUvvbIXdnEcUGJtsEGWwiwHEQhfevKyKLwuAXtEuhHYrsnptEQRlLfe"), }, - { .name = IOV("InvvjaAvEMM"), .value = IOV("aJdTLiGMpnrrHMybnUHyguRMVvcDzoJOlPHreJSfaiqSKVvyigZUeASMbEob"), }, - { .name = IOV("EkQNLVsmUnSF"), .value = IOV("sybJjMaIU"), }, - { .name = IOV("QHjHGhac"), .value = IOV("jBMHEXbtTMvpAYrOvdLPOUgMTtldCxAumKUFzH"), }, - { .name = IOV("ZgAgezillUyoDvajqEw"), .value = IOV("NMLNNLHfZ"), }, - { .name = IOV("a"), .value = IOV("BkKRQnqALTiMPeIUuWnzRWyojglZRfIGklYrgGspwuXLkljIiWNUBdYx"), }, - { .name = IOV("Ov"), .value = IOV("zZIYkmzoNWuTBziPbiXuH"), }, - { .name = IOV("l"), .value = IOV("uRlIjSHzOkjrToKHepBir"), }, - { .name = IOV("I"), .value = IOV("XBosKKlkBmldgdasGoPnXXbRiJJtaenqHqshTioFHFAWoqienGXppuPdKjgSZnT"), }, - { .name = IOV("roxqJgYWQc"), .value = IOV("AXVbnSeoIpxfhqLVwZvvOlyaktBQSVYrFqmjBMIoiJfQ"), }, - { .name = IOV("sHUZENJQANogngigiP"), .value = IOV("BCFWeVSDzbgqSxeVdBIGSPKnxGEsYILyWvDjZAtlANZwaVpeWbRxlUcsgiKatH"), }, - { .name = IOV("TyeevgnVSLbnr"), .value = IOV("HDUtBjrTw"), }, - { .name = IOV("jag"), .value = IOV("iRArlLCbJOpsgQuLRAMsmWxKcnKHLBpXDEmQUEIDoPbzclAycJbRUmFGm"), }, - { .name = IOV("UyaCMtBwa"), .value = IOV("woBXGucFFLAmkhbJrxspCATuaLdJOhnsCPpcjwuShhkTVdmZBpeejnHLGWfAiUoWOIatSFQH"), }, - { .name = IOV("rmFntjTkH"), .value = IOV("ebPLKxrXGiQmHkxjVaSmzW"), }, - { .name = IOV("WocafZcqK"), .value = IOV("zxZsaNIWprCRrocrXbkYSMHYcVXWLVCcVQJEm"), }, - { .name = IOV("dxtRfBCjc"), .value = IOV("yiswjowXSzksfxrtwRHwmFXeVRpGrDEDmSPNtAHjSmFIvtrdJiSfJLOKwhUyDzdUUqPW"), }, - { .name = IOV("AviyYbczF"), .value = IOV("RUEpHVSrcCryAkdsghIYKphHtjeeHQPjAJGShCYXJiePwXNtaHJYVRBrXmCfgSkgUwkMYekSCtosj"), }, - { .name = IOV("gLKRShWXyoUQKMWry"), .value = IOV("mmIUnKVSSrOiDlNSLTWGQvXhsAnQWzRKWyGWvhbFYJuqsdcVQtTJH"), }, - { .name = IOV("JEEEcHaXgIZnecXZSu"), .value = IOV("RfFwBWPgtgsHzmpYgTFZdsFMQEEOIZtANMPAHBPvdkqyFUs"), }, - { .name = IOV("BeERzvhDVgCnQSDOJYVE"), .value = IOV("mWoNajktlcrnsAsnerzsuONMYwAQdFUafGLydWElnVszAycxaRLvTYWZzpODaGWOKtFTHzJnfEdYIwZ"), }, - { .name = IOV("IY"), .value = IOV("eJXozZKmmspOPFqsDQhRERunZYdRTqpVSMgEHusVlAdnBtTKDpjt"), }, - { .name = IOV("qUbmUuTnal"), .value = IOV("rJhiOPcPkGdYlnfFxrmpGsMKYZPxlQHTBmPkMjAOkbRJctqlytbQWEx"), }, - { .name = IOV("JY"), .value = IOV("KvdbkjExVmnTnqYFDW"), }, - { .name = IOV("ctLIYPXEgRM"), .value = IOV("IGfFmSahErPahefBHrjuEf"), }, - { .name = IOV("tZJOMc"), .value = IOV("KSwJAVrPqiKRyvfhMVvXaUXtcrTLeueFycehjOaQBMqiVZEqXWJvFnudckcTbvDhOcjtGpKlVMwu"), }, - { .name = IOV("dcwUqdoyrviYq"), .value = IOV("rTygueqtUbaGnohcrmWujxypYiQLkfsvm"), }, - { .name = IOV("hWSBZHXBouWn"), .value = IOV("gOeXeFFkhTQlaGnpJfuHLGqFJkksTzFoCoTsLbOYPfEfjfJNTMQUkuEmsiAjkPDOHOA"), }, - { .name = IOV("GBVNjOQFzIFypkcIoya"), .value = IOV("WuDswVMLKKfIfOsCIqwLVXqizcGzFGuSJFLRvxbdXVdiBFEmpEqKKxUPOkeCzAlpiHZsPL"), }, - { .name = IOV("ClFKxScJQfhy"), .value = IOV("wXfsSDtsD"), }, - { .name = IOV("YPhbaNkwzeKXG"), .value = IOV("DpyfHMcoVag"), }, - { .name = IOV("nbnEdsPgYee"), .value = IOV("yPSHjxmumEDmqUAmckBb"), }, - { .name = IOV("afOEcF"), .value = IOV("CaZsnljmsre"), }, - { .name = IOV("KOYkTtwoZcNvvDgG"), .value = IOV("aTwZGryvTxRkfPQbKbYikrjmxm"), }, - { .name = IOV("aECcZYbOEudLTqIPy"), .value = IOV("keylLRUEx"), }, - { .name = IOV("jUvjTsVo"), .value = IOV("OsmBHwKLRZCoDkugiXmyUqbBwsICmQkfyRGwzNHBCqXUtZZXgfFsLfDehKrIVatbsxSqEWDEyPnYDSq"), }, - { .name = IOV("sSOVmMvoNurkj"), .value = IOV("dCCophecSNhcbD"), }, - { .name = IOV("XeiLFz"), .value = IOV("OhZRnWEhheDxQQysMadAtWHRjntEAfuNisyGpUHfqYNlNKOKfLTwweMqRT"), }, - { .name = IOV("AMwgqUKUhjPrRAIBa"), .value = IOV("fVQsEiMXAoMZXVFeHyZEbGKOFOGfPLKbuDkIOLiTekOlmxCbCYgNbDbjsYZGbOtGtajjK"), }, - { .name = IOV("ZvNyJAZvMQDfCIpJspt"), .value = IOV("zCoOgqZPdwveWJEzscgCFCNNBszoesOxGvfiirDowufQgkfSBHcZVoaTkzSShvzQfBYZkvoABb"), }, - { .name = IOV("hdYAkMQNMHuyf"), .value = IOV("zTHWqXb"), }, - { .name = IOV("UHlsxLLAdm"), .value = IOV("YfKioZPjyPFDuRRUwLoZMICEAiZlqNmIaJKlyhwdoDD"), }, - { .name = IOV("fVbcNkCXhJnBjFYg"), .value = IOV("Sxzgo"), }, - { .name = IOV("oQWTnjDgL"), .value = IOV("edomCyEXrktcJhCFFcVdBTXLwPsMsdycDolZaNBWWrkoAQKJcjHXFeEPEPCeZqdpihIo"), }, - { .name = IOV("mlZxkbfwqhnvPb"), .value = IOV("TQgIhRqKqBExEEsuOfjNYiWWEFiLRJbAdeYKYlstyXYDfcbsd"), }, - { .name = IOV("VGXRTsWMMO"), .value = IOV("SgQEjegzVBWIDhNyMlcr"), }, - { .name = IOV("eUaKnEfhxi"), .value = IOV("RNKAvXEKfSpPDzeVxDEuLttHMUDqeYVfgNVEjsmeLNLzwVwKt"), }, - { .name = IOV("OKmntyhPwfeIyaB"), .value = IOV("LVcIZWuZuMWWlLwUVdQVqRK"), }, - { .name = IOV("kSNQd"), .value = IOV("paXJYWXImKxVG"), }, - { .name = IOV("GLOEJiEQ"), .value = IOV("IEjDNttWqxLRIEwhChrhtrTtessUzlfBKiwDglDwFvvzECbGoWIzAciCzCgESllnECoUh"), }, - { .name = IOV("OfSMjq"), .value = IOV("ecH"), }, - { .name = IOV("C"), .value = IOV("djQhrLaNKwMFKXXGEYUKbicGfeDVjBqSpXjDLHCNdyHVbLPOHCFErnkCftiqItqhUryUUqeiq"), }, - { .name = IOV("yHqzDnBlWNwsFNMJf"), .value = IOV("frKENbHrWgQttuykSMtFFkCidxS"), }, - { .name = IOV("BuOknexdmf"), .value = IOV("kJJPciDVhHFpQoUufKmohmybLdFgYOMXKjuGffNdco"), }, - { .name = IOV("ijv"), .value = IOV("kTUkXxHbSSNIYQwrkHqfKNMZDPhVGwXYZm"), }, - { .name = IOV("ZAiLUlDyLNjNBOdnxFY"), .value = IOV("PtOrZcCmYayyMVcVoeYevogmjXkObcbJbaZDowIexDMdZItUHNlVAgvKeZeqlp"), }, - { .name = IOV("WysKwt"), .value = IOV("VtyGfMXstmQdmrpwCvLMEaVZaehjzFrDZtUHTRtufVHBKwAlAAaEpCYkLvexRSKRjnmbGMT"), }, - { .name = IOV("rtKg"), .value = IOV("rmRyXTLBNrspTilqzxjyTcYEcRwfwiZtTgnpHmgtlfaFrqpdKe"), }, - { .name = IOV("qhRPGeTqFrtAnNb"), .value = IOV("MJoMBOvBrJBIeJXypSzUvSSJDjJCuniWHZtQSWgwGFEuIoFeHIXQYcGiGStPZuIfiotyQftEgPNOK"), }, - { .name = IOV("CAPChNbdtxxbojJMd"), .value = IOV("ZpCGwRNnOxUUiPuKYkNQbIcPQKphtnhknvMRwMAMcxjscNWJeKpJxONdGyP"), }, - { .name = IOV("Ge"), .value = IOV("iSDuOJytbRMDGGVWuBgOQtWLKlTnvAVSCksFEQyoZYqPAlecKoEc"), }, - { .name = IOV("F"), .value = IOV("aTtVnfBxmGuJiEmIRHjFVelqPKPDp"), }, - { .name = IOV("luomZ"), .value = IOV("gamEzwbBFlrbHXMnFWMNlMdtSICBLUbRp"), }, - { .name = IOV("XiPjjkpaUuDMvWOo"), .value = IOV("tECmwTvfa"), }, - { .name = IOV("I"), .value = IOV("y"), }, - { .name = IOV("LA"), .value = IOV("wKjHYjsvOiNsXqmTOdbQzGtyjYaDIuezjGxyGDQGdWqODKwoZvP"), }, - { .name = IOV("LVFVrpLGuZXOqm"), .value = IOV("RJiqDRsQisYnYVwsUvKgXIIXkEILfArrclQekcmdbRlgnpEyHxqQNQKKGFgIEEmPjeNmlmisjtOst"), }, - { .name = IOV("gmptIdwuhewancewCnG"), .value = IOV("feMxbmQHdtgaNqMUKOUMXtkJebf"), }, - { .name = IOV("TwMxs"), .value = IOV("XVdMJRuwQlRTaBzvFVbpHPuFvLYiYNbbwwXnatGGaOREvzks"), }, - { .name = IOV("TZDXJn"), .value = IOV("bpakXtHeIXxYHpHrtkwvXeQMyhAzyOohgxbPRAiRardWQiDcyAYflP"), }, - { .name = IOV("JFdafTLbPuleXnel"), .value = IOV("fDiCfNhIFMqOEMcpyvUpHvSXlcBZDJuNzlqWiiAZIT"), }, - { .name = IOV("prgQgUczYrJlexaubMC"), .value = IOV("r"), }, - { .name = IOV("ZDDIqWWtKJRobRfp"), .value = IOV("yooEEnlZgHAeQ"), }, - { .name = IOV("IuKrfkKWSGFc"), .value = IOV("GgKWSDlLhtZxmp"), }, - { .name = IOV("aIxgJMkOaCRqC"), .value = IOV("ETNmjlRPtKuXPYTzEfEfHUSIJnSgLmENUGavkmcAnWqFMafYBJXlgbLpmmSSAUhj"), }, - { .name = IOV("JMmHBNjzVjRHgPi"), .value = IOV("fqkFC"), }, - { .name = IOV("GGIWdNVo"), .value = IOV("HB"), }, - { .name = IOV("q"), .value = IOV("VGMvZnyabbvmmyL"), }, - { .name = IOV("d"), .value = IOV("pTcsfYnuuMWrB"), }, - { .name = IOV("cFVs"), .value = IOV("cEkJrXxikarHu"), }, - { .name = IOV("ptcYXuadnISZNOBf"), .value = IOV("ggafIqbbcbJxTuhjH"), }, - { .name = IOV("HRaHEuEyrtpopsRQdIL"), .value = IOV("xrlsulwkWLXfvUMsaqgXSHKJB"), }, - { .name = IOV("gzfuLvIYROFb"), .value = IOV("MWMieasCDSmlbceynvkAbUYaeylznXtLiBRCjmvpERlZikhn"), }, - { .name = IOV("KxlOoQDgsDBuGbsWuu"), .value = IOV("bgyehiJLipqAFPrNbyTVMjGBbEVwgTUysgHiABuHejJtJGdekkemOFANvPmiuEEPfKGCBzaSITBQlc"), }, - { .name = IOV("rurzPq"), .value = IOV("QFEFBqibtlinhRskDDtX"), }, - { .name = IOV("qiQjgNDwksERaOlaF"), .value = IOV("AcznRCJDLVCTwWSlBJGcvbiCdUsuLhgEDMXFkWuO"), }, - { .name = IOV("MnFTbFNhHeBX"), .value = IOV("HoAfKIt"), }, - { .name = IOV("GaMNMTsiQ"), .value = IOV("XuiG"), }, - { .name = IOV("eeGHVNo"), .value = IOV("yq"), }, - { .name = IOV("YEmEb"), .value = IOV("SiFyLYAMAza"), }, - { .name = IOV("xrtTCQQailAUPzjq"), .value = IOV("GZUJmEXHiXQlAZIuomirgeDqzVYmWhOstvasGapBaYHHvzcUobctLgeZzgKzYXczmIftdSMSL"), }, - { .name = IOV("vElpjaFGmhQc"), .value = IOV("AkbXkVipvRXZduYMa"), }, - { .name = IOV("OAXkdu"), .value = IOV("gVMufiMqToAPTeZPuGReuMDSPJePjAOgqNNYuLicjSsXVFSNdGPiHKXfQFwQuhyOeDTKlF"), }, - { .name = IOV("tSaqWevTp"), .value = IOV("fUbnOmoDQCkoJeXUFvpKXPeYhtoaqrzNXdPwxIebxskSafrXlZDsjoKoOpUPOoPvst"), }, - { .name = IOV("McEhEFTDR"), .value = IOV("KtEAMNWuDqwyCYxVGXZoFIoODQNNnxgrfIkhAKhOPjrHEpxMIYMaVWqDiYNrUoErLcLublLl"), }, - { .name = IOV("cKRYavAZCGSUU"), .value = IOV("dNpOiJZfYksHxWp"), }, - { .name = IOV("UngQBZzr"), .value = IOV("LXmDxTgBpvpjDliLuXHdaDoaWoxSlNqaBLyYLYglBsonXDmMpUSgdyfnk"), }, - { .name = IOV("WSfOvLODnfbOxGgdhz"), .value = IOV("hcZMUAVkNLNLhrdvaFoomcBBkoMyOVvBnpnmRphGPNENhiwmRlQzvfdmBOAWkOHHPQky"), }, - { .name = IOV("JOctAp"), .value = IOV("hxPQyNvXOOFpfCWKwPNGHvlX"), }, - { .name = IOV("egqaK"), .value = IOV("QWBzuRUBazfYWevcbzSmQYYnoigJ"), }, - { .name = IOV("BSTIYAQ"), .value = IOV("kuUchQrquMvsUZLSqsKKnNNSBnTUPymwduOoo"), }, - { .name = IOV("CsEJv"), .value = IOV("KTzBIxTiIQcjCqcTGdpiSvtsgBbQUtUyhcttAeTImpqqPWdjVxazT"), }, - { .name = IOV("yXngLJW"), .value = IOV("LgRsojxhVipHvTxZetfIYQwKHoFrycVRkXFYwljxXMJNtK"), }, - { .name = IOV("V"), .value = IOV("eBKhEgpupZeUwajMYQOizXVWrWrQOclkRrEoTgaglxTKESSwSvqpK"), }, - { .name = IOV("oIOY"), .value = IOV("EQyTJfuwNKSSkFbTlueQDVsTji"), }, - { .name = IOV("WSNALfzSAfTRCQBr"), .value = IOV("sxXpTKUqFXUCsuHMMldsteVEFXOrXkcXFpMIJMRToLgdMRGJuEG"), }, - { .name = IOV("e"), .value = IOV("ZUbChknaYjVdzTuqilnxuLDcRBBVrzQVW"), }, - { .name = IOV("QrnksEvwxe"), .value = IOV("YXShgKSelSkABGEBVIxMANFXcpvkvAkpTzUZX"), }, - { .name = IOV("jstWbcWKOebm"), .value = IOV("JkvbGeaqDRr"), }, - { .name = IOV("RUEKtWIjNDzAKl"), .value = IOV("lAsBemJoyHtZDrjnEEJNLAJHARBHtMmDgwiFxGVdUAbOfSLRNqaSDmirMlRLfyQUnCbBe"), }, - { .name = IOV("nchjQRVfvmWdgwu"), .value = IOV("mQyJriDkRMATtorMeLNgaWcQLCynAhWXECIZQUCkgArZCWQapDlBadXvNcCV"), }, - { .name = IOV("SZaGXCveHdXhLfNaAR"), .value = IOV("DauTu"), }, - { .name = IOV("vmGQilYfh"), .value = IOV("uXQIhDEKdqGbrwzqBroGOVFPvqwQUWU"), }, - { .name = IOV("MdSXQUwQPNJIl"), .value = IOV("XkVMBNVkfurzqPZrdnwo"), }, - { .name = IOV("mGLTjEPyHZPL"), .value = IOV("zzHaRIEAVJWYQOTfzisOMitVRhYkPjPzU"), }, - { .name = IOV("aTodTORIOQyHXizPpR"), .value = IOV("bQonqjTRXWzSuTmopXDYETVNhcCuPpQCAMpQyrZQUCRqUHRFPrhqREMorkFFT"), }, - { .name = IOV("yQZoPo"), .value = IOV("oNWvLVSQPlEjxYEpVcNrtAFkfEPElfCGYUQXnjgv"), }, - { .name = IOV("fuTGuCatsuBYxySAkqUr"), .value = IOV("DqqjuQepxfgYsitvPVQDHMzkhDOMzhUGCSbGtUiZGTyS"), }, - { .name = IOV("pjS"), .value = IOV("OtepKYgtJAYHBbGCWqBiTPjLGbEvQzeFSUzlHceQXqplhtgcbIbGECZgLBzhpbJgVqGXjPGKhL"), }, - { .name = IOV("UySfWlCZFw"), .value = IOV("SGzhshVnWhsPbzchLWSs"), }, - { .name = IOV("bwrs"), .value = IOV("bxPNbOyILuYeHJLAnAdjlVbpTkIPoPwrGrIUKydPxVpbpqZpsAk"), }, - { .name = IOV("iMtWUWd"), .value = IOV("qlfqsTzHrHxgxyLMKIIPvQfGwJwFIJJielJMccAanUfWhRQBPnckEFMtxNnPZoJwyvwegiB"), }, - { .name = IOV("XxAjTsXAYXceHyG"), .value = IOV("KfBeInOpRbCivKKHyOYbyuJdDFCtWMeadgsgmDApYRFiltLhlqsBTuqFjvHNaDKABjNQoEmAOqsTcSW"), }, - { .name = IOV("rShrVixDYQU"), .value = IOV("buQSbyVpRcVsDpPLFIXsXovqGxHnlTehglecBFLrqLxXTQXbrJlqLbarFPEtrJqMeTppMVJm"), }, - { .name = IOV("DWZAGbhUbCDGO"), .value = IOV("HfCdLNXeMkvYjnEUQuUsybfamYIzBueDQlaWldtxJaEvplsDhcFqcJBlqruVKqYadvPqaqTfluBhYq"), }, - { .name = IOV("s"), .value = IOV("yOcxCdJCGCovDlZvNPQlQethMBQFHOlZFCztYlwMGf"), }, - { .name = IOV("KE"), .value = IOV("XDkPLFGBOBrfGVDYSHSNKmOBrEFzXrdztmZHOJbukuTbiaxTRiimsLoem"), }, - { .name = IOV("QjOpwXsVMdQPSM"), .value = IOV("joNHpJfBTjMIBjiOTXDOquGpEVyDHtZqdzNObrGkEPMXIRpBoqMghICgSuL"), }, - { .name = IOV("NxHTHnSZcNpL"), .value = IOV("XXSjwJzFKtJNnvSgWlYGGviSmXAJQAaUQNbtwYakXuaYGG"), }, - { .name = IOV("K"), .value = IOV("qqoQyunIZRz"), }, - { .name = IOV("XSeiwoYpkvxdTCy"), .value = IOV("sPvouL"), }, - { .name = IOV("VdyKZSGRGvWVVqQ"), .value = IOV("BPzGjEKxNQ"), }, - { .name = IOV("iCLdGINhwx"), .value = IOV("OYQnzBMaHlFrTFfwateNfxLjLYgR"), }, - { .name = IOV("bbnCMnTz"), .value = IOV("QrhdEMpEcLwpiPREMPzloQbLenBYUtCtFOZyEkIDXvwhKQLIADvRJbTFLgMJtJhtWudb"), }, - { .name = IOV("ZxHyNusigYzoD"), .value = IOV("UNojknjQYXigCd"), }, - { .name = IOV("cLAn"), .value = IOV("sWQIUefAhAVEfFFzNNuPMFfJzuMVmherKfwKJEVTSAGBbCUcJU"), }, - { .name = IOV("utizjdFVPSDD"), .value = IOV("GggrPfoEYOCoXNUhLXCyZWbeArDgccLCYNskrssTzVKiCAdVheXjU"), }, - { .name = IOV("qUPzxw"), .value = IOV("HYyPIRgvPdKY"), }, - { .name = IOV("YjD"), .value = IOV("LUwCIJEwIcBqkiYhqLqxpMlchqNjHmSehlVvWBPcLmMVXcivEYvFQcoJveHbvaUPTuWei"), }, - { .name = IOV("YOnbjQstHhDKsrqzaI"), .value = IOV("kpMsIwGaLftpiR"), }, - { .name = IOV("vl"), .value = IOV("VNnyvLxTuYdHyYwocztpEPz"), }, - { .name = IOV("bUNDGSjaCTnYTsTMnACO"), .value = IOV("BWKMWKWfZGEfvodUeCONwWZqBullnSFTPeyb"), }, - { .name = IOV("KJJiXluaSeqSrsIYC"), .value = IOV("UdhmkKdiCxkkiHJkXTjZsPGlzJasMIgWSHesWROnMqDMVvYVa"), }, - { .name = IOV("rukrMlnfMOkB"), .value = IOV("qUYppfwvYSsfthXLTmtyeKfsePDpmGamwQkQxcyrtuAtAGaVOuW"), }, - { .name = IOV("cnygFZlAFIRAGEebi"), .value = IOV("VGcLHylARPZdJwqdgulAaMmdNwymWhBYoCfnsUlqqSbEuayEzmYneXXVjCQSYOOuiITLQDBD"), }, - { .name = IOV("XjpfLtmQcho"), .value = IOV("vZgdkMUEBxHH"), }, - { .name = IOV("NELQPUYoEJIaYtWGq"), .value = IOV("CLZOE"), }, - { .name = IOV("AOLjqKJBFpVroePMWmjX"), .value = IOV("FcGWtXpFowqYWHhalucDsCdvjcDzfUHKwQAiQnyTSjInbbWBpbPYXywPxStrsqQGV"), }, - { .name = IOV("NAHO"), .value = IOV("EyrXyWlbrknMnYCHmVcvtsXFAmavYdMHrZrYSUmPkkcVVjfPmtymxEMFVkzoIt"), }, - { .name = IOV("QCebObnrCGCOQHiBP"), .value = IOV("SHyqdsIQSPjFVkGEuFqf"), }, - { .name = IOV("VDwWZCRQexI"), .value = IOV("IKwCdSvPuQWoXgdQcVQwUZJIebanbypQLTxQknuleOXzNhdLa"), }, - { .name = IOV("pHyRUl"), .value = IOV("sPZYElmaNzNljixCwpvYYDabqZf"), }, - { .name = IOV("Qvvz"), .value = IOV("bONuqlrfWusqIuJQxgbkZNBilZXGAEdzNdNbjLeNgEU"), }, - { .name = IOV("zGwuq"), .value = IOV("SZPqVs"), }, - { .name = IOV("bgwUkBZEkfOaVwBOYK"), .value = IOV("fwmiSCQdxaWNqlmjPiRRoPzRSZNCRCgJtvBOALBFMRDYNMqbgtZANcO"), }, - { .name = IOV("WIHyZlQ"), .value = IOV("atzTWokHFQ"), }, - { .name = IOV("cuJJuSXbXxkRWXPSd"), .value = IOV("amHGzNtzGZCimeFUoseATdxWwsZJR"), }, - { .name = IOV("wxqBwLRm"), .value = IOV("LqMYlENZKKvACITqmoAfSHMLtdRcIPZYcBMTkAccCpCDpXJmjabDyBsqaxHprZXjMeZcsndZWBqusMz"), }, - { .name = IOV("vEdEC"), .value = IOV("YxXJoAbyZckbuDslrDHWqsNOzMNvxbYDHGgZtGjAYQIDsWvdtKsYhgieIuHHGUMicIlfjozg"), }, - { .name = IOV("bGDdARTtwzoistmz"), .value = IOV("slkJvEz"), }, - { .name = IOV("KgHCFEpkOaZqHNB"), .value = IOV("uMMCzvbXeQrhPPsDSzvIUDQZENdqotWhEcIlHkKwaUEymGfhWnWgfREcfwjAffakziHKZqbIRnPC"), }, - { .name = IOV("SDWPbspRWWlhmUKn"), .value = IOV("zZteaduUTWCRxCHUBujLCARNKXHPLyBJhmvERuIMqSbCAnQppguXQvntZ"), }, - { .name = IOV("lFygy"), .value = IOV("QDlwaHbpviaLDRHKYrWwTsBEwbebQGlymOWWQQzDkfQvOfDOyNPnMhwBaFseNwjUAyzBOHoRoBylVnj"), }, - { .name = IOV("axcLdvxzsHwc"), .value = IOV("QOrvBJAWCiDEFzgmqj"), }, - { .name = IOV("wiYWwulHJnACWrZATtS"), .value = IOV("ngaWOBiPzPFVtxfKPJkFfdAlFzspedrhQQdCUyzTKocppelmLoPbNMphwZsKItrGQ"), }, - { .name = IOV("TFPFOk"), .value = IOV("dosOYGGVfnjYNpxSDsXFtWxsTFOCxSzoODnAAT"), }, - { .name = IOV("EFnqFjj"), .value = IOV("fUpyl"), }, - { .name = IOV("PoHGQ"), .value = IOV("xwpPheEZqEMSyxfUffAidyxmWADyEOMHtPXC"), }, - { .name = IOV("gTYtTRbgMFwaz"), .value = IOV("hwbBMUGmlZqQeCxvtYkezQLWp"), }, - { .name = IOV("blgLAQ"), .value = IOV("wwRxMMkzbsJAAApzDIByMELAQVWIVWGUBGizSvKfqGJKJGVPIvVwPgFYxTjKPl"), }, - { .name = IOV("wdIBGLUgquba"), .value = IOV("v"), }, - { .name = IOV("kYTxSoQabNHNfJ"), .value = IOV("zeVnfGjpXzOpWqisCLlwRBiwhpCGDJHPGqqhhUANbeFUfVonliJMqqGCvHmMBaMQN"), }, - { .name = IOV("MvCTamBDELDzmXwYZu"), .value = IOV("CFOfqfBYiPFVeDmKhoBVpweTIOuNxelboFptOyNpqfEgqPtNXEopKeCaTBSgVqWXaBkcCiHltFSYdj"), }, - { .name = IOV("cGIsbjzjxhmPiVJxG"), .value = IOV("RMMEmOySfSKXjRyxWeSRHPRXxBTBi"), }, - { .name = IOV("PXkHBWouoy"), .value = IOV("REnWSPMxzpQEsSvnphpCnglAqiCeXXFeMc"), }, - { .name = IOV("GrcayjbYMigCAxnp"), .value = IOV("vqmSmwORKFivhURQyHAswgJQBASS"), }, - { .name = IOV("NZZZutUKQO"), .value = IOV("RJDVvnOrESUzmmhgHXFqBTtHpCkgfpsqJxhRRWMkWzTmU"), }, - { .name = IOV("jvpRYMKfOe"), .value = IOV("GYnZVbIdPuDndGZTcwfQgAQIzkIvzhXXqbMmeGRkHTLBzDsCoRyhocTsRU"), }, - { .name = IOV("r"), .value = IOV("srEYETxjitnSkRrtFVbrPgyFbLuclzZNXIfymjDFygzWyUbpJbZKobMVSbd"), }, - { .name = IOV("VbGmsiglW"), .value = IOV("npMHbp"), }, - { .name = IOV("RaWMwNtuGeqrxG"), .value = IOV("ByspxYtVajvPyMklNIXozv"), }, - { .name = IOV("ReXRThBDnrsXDIly"), .value = IOV("YwHpqBxsxvfIjNWsMp"), }, - { .name = IOV("qOvefhnjplytj"), .value = IOV("IOoCNVbPKTkgtZWOIFmWGaEGHiLXbhhmlwxiJDZFpJhaLJWJqBRaibADcQxM"), }, - { .name = IOV("zxTJVOXUdwd"), .value = IOV("xCnMxapNgjUDrLwDyEHFYzUQGLikrjCfNUgOtUJBuzuWFOexxYQFzU"), }, - { .name = IOV("cSxSdmvFYGmgOlbB"), .value = IOV("MMNXykgzURLnjgTzmnerKyhmJGCWCByAEtSELuFXdwCYGRdjDIuzmJAAhRuOfJNPfEeSp"), }, - { .name = IOV("QYgCuQUcDvkYJWOXx"), .value = IOV("YwdzotTzxeAKfFiIyGCimVgRVSDXCobnbwHNK"), }, - { .name = IOV("Q"), .value = IOV("bLDfJFiILquVKriaPQSJpqVtsTaUcWZOnr"), }, - { .name = IOV("PLD"), .value = IOV("vfaLApaN"), }, - { .name = IOV("CPDpnyDrnv"), .value = IOV("uaHroAAZfMPGLyKuzioolb"), }, - { .name = IOV("eRahmgFgNVFAosJZn"), .value = IOV("HLsqXDwTtFsLbuaeUcDUWTGYbkLCdWpVwcayWtIZMKlgKTJbEUaRSYUmRRr"), }, - { .name = IOV("tqgVbPCNL"), .value = IOV("IRClvfMRtoaBwWCXjDICwlkeaBqUtCyWKprUuwtzud"), }, - { .name = IOV("yKleZyuHBwJDEYkMz"), .value = IOV("uuM"), }, - { .name = IOV("GlCNrAaDktayPT"), .value = IOV("yt"), }, - { .name = IOV("XRkXREGAvvJxg"), .value = IOV("jBOWpbgTDLuJKgcZxJiquOFzIKQPzIkFMEPIMGVMlBMTCxBmYsrGRmxEcCFaq"), }, - { .name = IOV("DKiDUd"), .value = IOV("yvnxomQFcstdrLAkYNMgzOXvhRRTqgtzazgzFgeM"), }, - { .name = IOV("MgsWgXCHpvNKwsYLODg"), .value = IOV("GRutOjZoGjkNMKweXgnZaBXqAbztEVTAbKwvIWlQCA"), }, - { .name = IOV("uaHKZpEanFZpCzabu"), .value = IOV("f"), }, - { .name = IOV("EKAnqeYQhAwfditnko"), .value = IOV("HRpRByrzKuSsqVCYZCvAAQXizUuBFLYbGZyuwyTh"), }, - { .name = IOV("vhmPLQPUPbhPZDT"), .value = IOV("jFnoNomCIPufXtLhqbqqPfcMsVPUlTaKwkcKhAEtlXHKsrkOTwHSIE"), }, - { .name = IOV("ScC"), .value = IOV("QQmZCKyOgisSRYJAnVgawqtJBFGJULznwJoULFeMcpfbYmbFbfNxDE"), }, - { .name = IOV("dGUUBr"), .value = IOV("xSNqtvMGxcPgigUVTyMqrGBRYpmWdqXBRnuYRNWpnyWDRbLSoipY"), }, - { .name = IOV("XSIXghCwlsSt"), .value = IOV("sTaKsYQvIdufUfoWmUboQZeDILlSILxGUIjfIoyxkpxPVVqAGjAUSzZOjcigxbFq"), }, - { .name = IOV("aHteOVoWybdwiOLnXNro"), .value = IOV("GmFOFalVszZJKLiyVdyKLvSsJXjtITqWIIxZEOLfSLNuLMyTNrEBsFskNcTtdQryduuuSFIc"), }, - { .name = IOV("Z"), .value = IOV("wqEexmcZiUkgzmeqaEtAixDPtNi"), }, - { .name = IOV("kFliyphA"), .value = IOV("nueMQNnEhpNmtpdVsPQpdrIuCqQWMhbjZLyNGDYAGlQoRRmgewutUTPAvvJevNPnMjxlUueowXPL"), }, - { .name = IOV("OSq"), .value = IOV("uKWIGtKkTZrONudiIlaYXnraXDgHaEqqJMpTolNFMCQAqsJZ"), }, - { .name = IOV("uABjuglbSfmfgfhrUpUH"), .value = IOV("OcywLftxghDLVJepCgdqzWJQzY"), }, - { .name = IOV("hMVpmA"), .value = IOV("mWDOKQVyksuuLIHLbzjhRzldaxCkVzeSMVZdDNBJrhkRzkPzIRUxRBQvNlxLYpSeSFmXqtreBAIsGlH"), }, - { .name = IOV("WwcmbpOpreECPQ"), .value = IOV("wPAgSHJtsutSDiplaFhpsMcg"), }, - { .name = IOV("wslj"), .value = IOV("ugomdPdDDAlDHwHTqMBuTzJSzOngfKwGjcWOpMXkqHhsiThJbnGblbPGiBZNsWqPn"), }, - { .name = IOV("xdTItQj"), .value = IOV("VtmLJnEPiZIzpvE"), }, - { .name = IOV("qwaBjooIIALLPBznQBp"), .value = IOV("srPLxrMjawWlQGOOpYRonWfHXjaMrGBuXZqtHbcrfMEQSrrOHQg"), }, - { .name = IOV("t"), .value = IOV("KotVpKpAzxXKrbVpjeuMYzqjYRAlwddKvVvQITELPHkuAgXWSphbZDMHoUbxTYBesifjvBCGWBBpiOsu"), }, - { .name = IOV("hgLf"), .value = IOV("EwyyEpagVKgzBbaq"), }, - { .name = IOV("RCVMUBkiWYtj"), .value = IOV("IMrmHBmkLYEPBgvPkCIvQ"), }, - { .name = IOV("KrzLC"), .value = IOV("ebQLlQYqfPMnQLbJENQYAfuSSbUvsKYarvXxaatvlFcFgMV"), }, - { .name = IOV("JWpJ"), .value = IOV("ew"), }, - { .name = IOV("W"), .value = IOV("PIyKITREsUZmpzhnvKitWYcGhbDWEbzVrjDFaATGWqHigOhE"), }, - { .name = IOV("muFBBfgAVCZMURGJ"), .value = IOV("ZiLWYOrpgSnGRyfuwQSNCBkYDIgzgvUXRwcPKjaKfkuGYoKmFAromHFKGpbcyBdLHvTbbptlRrhLhoCb"), }, - { .name = IOV("MBfUqmZtkEt"), .value = IOV("KlBno"), }, - { .name = IOV("t"), .value = IOV("jIsTSSvdgRGctPuDaygXFEAqPNlkErVgIUaYgIVNffooLk"), }, - { .name = IOV("HzDYtCcZUAMedrP"), .value = IOV("Zszx"), }, - { .name = IOV("FDmIXeWtrrjfVJ"), .value = IOV("JUMCiBpqDwwFLycVbnkip"), }, - { .name = IOV("jxHTQIiHNaD"), .value = IOV("VVRbEUtIITJEOCcRWAClRDE"), }, - { .name = IOV("bmbkUzoPwdeLpVB"), .value = IOV("dEPbZ"), }, - { .name = IOV("uk"), .value = IOV("JOgKDGLbpjqkRTiORjGZpSp"), }, - { .name = IOV("rzsJfEqXySMPaA"), .value = IOV("RkaoRgFnIPyPwyqVehfdnNihQhyxiYHYrmPUOtWzqBsmxidnsqAwKQCu"), }, - { .name = IOV("kCggMRVZBpSaHNtel"), .value = IOV("HhbtRbZRODcZJSwLBfGgYadhgobCiJywsBMLLhGHF"), }, - { .name = IOV("ZRErtK"), .value = IOV("KMirBNIgFlHtbDhvprpMolrmMvQxYCrqdQnrdt"), }, - { .name = IOV("jxRtxVrEGIraQvEAbFy"), .value = IOV("dDqPOIhRSUhwyBuBUToFSAxiGjqpRWQGraQYCNuXHXhQAbqHGseg"), }, - { .name = IOV("DhTmBlFvQoZKoJrjMpxu"), .value = IOV("vwRyrFYFA"), }, - { .name = IOV("ARtzILdeec"), .value = IOV("LUNkVTZFczqnDFkKMCmIEK"), }, - { .name = IOV("kqBCyorIVMeCVih"), .value = IOV("TUGYXJjUAzmepujdsxlUmkKIiuZPdggjfZTgixoYEpbtDYYwxLrysyWDvxsFMNNgVdLXkGwKKgxetczv"), }, - { .name = IOV("AuipWFpSCKc"), .value = IOV("rUX"), }, - { .name = IOV("KbOThRSI"), .value = IOV("GTQehfSPifqdxmQaJHNGdKMLNUHtHcdlewjUFKafmmjf"), }, - { .name = IOV("J"), .value = IOV("tJAlJvXfXPPMpmTlnguWFeUblIJuzXRuEFmlntVuYoRi"), }, - { .name = IOV("ynMZw"), .value = IOV("qkcVsBVEYSdnVKV"), }, - { .name = IOV("tEbjkP"), .value = IOV("qQtrMFTyljEVEMGZLOrBhLfzmPfCZbeIKGDivVUyt"), }, - { .name = IOV("kR"), .value = IOV("YRCyGOd"), }, - { .name = IOV("KQdtJsCFE"), .value = IOV("HBHqFAQfTuCrMqHUyyBOFJiHQajRyugGCcHGnLtez"), }, - { .name = IOV("XnxwgFNKej"), .value = IOV("zFrQiJlndTDfQGExeo"), }, - { .name = IOV("n"), .value = IOV("BrZBOKRAKZnmKakcbr"), }, - { .name = IOV("RVDZKbGJKtmQrnHu"), .value = IOV("UvtwpTqedKmuYummzPJFgOFHgrFixLFdgAAGBTUMgBAinLOILOqxyfjfMaMbUvrUSeugvFVmNDFQLgOP"), }, - { .name = IOV("FfaLCyGsqxWHTLzFs"), .value = IOV("YXcmtxcrLIMIXJuEztReLMscAcRPIkMpTGEXp"), }, - { .name = IOV("mMhTieeQqykXbXIGWKFn"), .value = IOV("hPHCDxrawRAnHjDuYdhDNhsKwTZRrEuETuvbTgUTrOribObWfDMcUfNoZRHHFjdGgjFNQtFGyZVmQVa"), }, - { .name = IOV("mvhIqcdowOyxygRh"), .value = IOV("jbdpYPosFJKDnVNCNXpeiWNJRD"), }, - { .name = IOV("GhdgwvuHqrOVMgjKm"), .value = IOV("WoodzIuWcJTSGtLEsYvtwUHMUQDFAXtcDTQrxdmzNMXssInhuNRkPziluxNbYAhINPJs"), }, - { .name = IOV("JyxvgKNDSrJHxJSiNI"), .value = IOV("niNlrICnCPQzGGLFIuYzvoMCMzibzvU"), }, - { .name = IOV("OKljdHBkwXeTtmFMqs"), .value = IOV("lNioPinauCmiYAFovEYyFjlKDKZCfvlYsAfSMDIoixqazVGwMqNp"), }, - { .name = IOV("uWLReBkPTpoEJEU"), .value = IOV("nGhasuAeSZGZBzZJMELWwUh"), }, - { .name = IOV("bwG"), .value = IOV("UTwAQNlOEjJGtmtSYnbOEcNDeTLyo"), }, - { .name = IOV("BPGpMrUJaxr"), .value = IOV("VjxjjYIKJLQPlfSgAsRexm"), }, - { .name = IOV("yyGIqwAUNnU"), .value = IOV("mJNgfVeTqfIGgYwhuMMYtVqhOZXmYUWgEqqfMsyakchqiASTynALoksTJkNQGGnXOlYOV"), }, - { .name = IOV("RoFLyoPIywaBukejNUaO"), .value = IOV("KrqCkZFYzgYuSQejPRBFiLlscfEwqyYrmvyYzblTWYh"), }, - { .name = IOV("cFrZw"), .value = IOV("TjEBknfNhL"), }, - { .name = IOV("BoTZMYHJAZVfH"), .value = IOV("cVSduAEnZmNQQpZRlKrxZzhFdrWOEFboGFRcB"), }, - { .name = IOV("WHshBidBTvZpH"), .value = IOV("dAvUxxIbcmWXPrvKgGHQGTbeUXzoDrRYcXDfQEcQZtpQLbuLATieUJdMLENAzsVFzkNyoou"), }, - { .name = IOV("GECIrCbjuGfwTTkAF"), .value = IOV("FEQNDlmVOOrvU"), }, - { .name = IOV("VMpHJEM"), .value = IOV("FpmiBxuVteBYMzaPc"), }, - { .name = IOV("iSqCBEnJUEp"), .value = IOV("tTAwtuXXkqSZrcnKlrwSPrpdoLbXHwxzniFiTDWBOruditJxdZSAOaRwdoixEuNNLPcndhZXtLS"), }, - { .name = IOV("pWtRrZhwLOggBTwshi"), .value = IOV("oqdhZugAfdRemJMTYsTBBFPOEAxIRWKuaLgSiwhrqsiWFKdCVxObPxOxcspQTuigtiFCBEtZ"), }, - { .name = IOV("odfSfA"), .value = IOV("ZdRlgZXPtKSDZgnzEWoAgtPVKeAiyavPdOFpMVoWTeRYbFEuroGOVYcqNcjdCfHpFNVUtKBHbzSYe"), }, - { .name = IOV("kqwuIpOOe"), .value = IOV("aiztLEc"), }, - { .name = IOV("srWcTUuoiBbNSWI"), .value = IOV("aclIgeKvigRNVYmFgbiYpXA"), }, - { .name = IOV("SdVaWUcuzcZwGSmCKYR"), .value = IOV("DGYzPQuMHkMBNPfipLjqQVNzItPBhKyTgJlNuvg"), }, - { .name = IOV("c"), .value = IOV("pKMlbKEjwNRfynLmYDzAiWBesAnwSIfJaGnCzdyAuGpOhGxYTHcM"), }, - { .name = IOV("kZuGyFBXUWDeCfu"), .value = IOV("MhJUejgPLUTFjCyslcdHvqXlqSzSYQCdpBHmrVBgEdWZfLIzMWolCuUxjxt"), }, - { .name = IOV("pRexn"), .value = IOV("PXZqAGMxDqzXiKMmEZLJCEgxNzAIVaWUdcA"), }, - { .name = IOV("go"), .value = IOV("ePzJBMKuTWuwqMxrmfMzeOVxPdFfLIUGoiLGFRrAiAPCrnhqoyNKvBXqviUBuUgzUdVIOwOwBVCcXS"), }, - { .name = IOV("osG"), .value = IOV("YhDvghxIsSsYPvIuwCxMpVRIzazGzsDGIDValJIhrryXHyqpvlpXjRDnJYnYATHqnAJOkQdkVP"), }, - { .name = IOV("khMuwKguIvezZ"), .value = IOV("VLvmythDtAUhNdeeTUFOKtEXTZfnTRraeLjXJOdzRsoTgevrmXlOnINkMRFmhhRMJKAfFlJpLfoXd"), }, - { .name = IOV("S"), .value = IOV("GicOLGscgyMwRymhZAibsbuMDFNSqWLaAUpAIlsVpkCopfCtJJZNymkqwADHwqGNenkX"), }, - { .name = IOV("RnbEhTjNXdMmU"), .value = IOV("igMwFpCtYNHYOiMYvgiakzKOtaEJCtXKutGbNPENBHIhilzZJsmaCSOXuimShxfLCZaTVyeN"), }, - { .name = IOV("CfVzyCauJSjBdKDci"), .value = IOV("DghJbByWJVrvHyYjonjhZybknQZkSnCXcdamvvNN"), }, - { .name = IOV("iDlLbjWpDeyTwqRSIV"), .value = IOV("ABHejHlXiPWLdPOKmDiUaUwnajipVZWWDZzGTUpywGJVxUpbtaswlMpahAbWLGxEo"), }, - { .name = IOV("pUcW"), .value = IOV("bwkMwUbqGuYzwJEYRbByEshGweESxFzxkryhXVSYz"), }, - { .name = IOV("jYVNVTZCFdafiwqvkE"), .value = IOV("hJjZVExBpbgGRVmhqPVhATRMfacxkTGM"), }, - { .name = IOV("CELMIKKkjw"), .value = IOV("wNB"), }, - { .name = IOV("vEBQbmCwnxeNhOiNEhx"), .value = IOV("tmrUPtjOjhrvxBmtOfuivEdWgiCjUWuZfXhlwjDNndwLyDvjucYlwIshzGCnkPpHwTNvtu"), }, - { .name = IOV("Bxm"), .value = IOV("dWcUyKbX"), }, - { .name = IOV("jusGkmgeUI"), .value = IOV("FmeqkflITxHatSlyalKuedgwdiSikmqDNSRRUZhLrYAcqlbanLNRfLDclioqhGskxGjDsLpmUVFNM"), }, - { .name = IOV("sSK"), .value = IOV("fwGhAmrHzaETUVwrzk"), }, - { .name = IOV("xiYI"), .value = IOV("cYILKAObzE"), }, - { .name = IOV("xSQtGQYGa"), .value = IOV("LAoFTlbKWtpBarahMjtOuowOd"), }, - { .name = IOV("QONrsYDlWkyMvZqUb"), .value = IOV("XmFESZWCsKugnnThZBTJChOhcjBhgbuBNdACtrEtosurQw"), }, - { .name = IOV("nCFedv"), .value = IOV("Q"), }, - { .name = IOV("iAUYbCxBuFedCKDjPv"), .value = IOV("zvMjkmpuxOOwOpJPZfTErIFj"), }, - { .name = IOV("cnvseY"), .value = IOV("FkdMJznXKvQJVCvc"), }, - { .name = IOV("QOZdupJgVxa"), .value = IOV("LGElzgYSnUibITXrSPbIwFNVrFmmNiXzZTISoIj"), }, - { .name = IOV("RPfITnWHDOTWxV"), .value = IOV("mcA"), }, - { .name = IOV("rPrWnnckpDCm"), .value = IOV("IagqhbcGbTNDCd"), }, - { .name = IOV("SzqnVF"), .value = IOV("oG"), }, - { .name = IOV("VnbJBeEtVKBE"), .value = IOV("SMTqHGBRHXRngjoJaYLavlbKHjzsxnLyDMAHXZKhnqCpemJJuTZhJntKmzTTOORbIdGxvxsGyIyaI"), }, - { .name = IOV("N"), .value = IOV("sEoYyZtOqlqibaEJMCNxmveSkyZVzGzyTkfWndtpAEFifvLGoKUMaPCQqDUKWK"), }, - { .name = IOV("uCWG"), .value = IOV("dnS"), }, - { .name = IOV("EwJmmY"), .value = IOV("tHHOLzaiKLJrrVdAKO"), }, - { .name = IOV("QwFGoGSZgVohG"), .value = IOV("mYlZjaQMyDrVilTFDJvSxpsGfMmdTOMHamiNFvsk"), }, - { .name = IOV("OCTptDZFHQPx"), .value = IOV("cZzFglvcEcYtOxxNnqRHVhPemufXycKG"), }, - { .name = IOV("DaeyBvjsmHoLyLWKhmtl"), .value = IOV("MseiNDisooKXDsZhEKZF"), }, - { .name = IOV("NBjGqwlsEtwkwYNBmIv"), .value = IOV("VgQXvfvWcnUJHOTrNdFHnabSVhOGTspgqdSYlyTMtdcZCYA"), }, - { .name = IOV("cLf"), .value = IOV("SqOYNV"), }, - { .name = IOV("yTPImNNJVzrT"), .value = IOV("cPdgysioGrAmuMYPfZOrVbnTqCGPRKPpqLNaZLSTzIyCQsSdKQKfuFkpyaeMMWz"), }, - { .name = IOV("kl"), .value = IOV("BOLQZuoWWjpeanLCtACiMyZQNlGpeeQyReXwaIlSrRdISgRwRuOzsZbroeucyOmOhXSD"), }, - { .name = IOV("mdWJRpBmUKrxhgnSPp"), .value = IOV("djUsEfeuvrDnd"), }, - { .name = IOV("txcJqTj"), .value = IOV("mBRxvANLaWPbXsNklRJLzJoqGWgPXJhKOGXwzvbZegzSUIFnwzhRcrbioF"), }, - { .name = IOV("BSjchvTPNdskCF"), .value = IOV("lFhHeTodUUTHZdjHWFbMGULiZkxUVEdJMrfLhdsbCJuNZQKgCwsnVlcGHMrTdgilwqqSfCXapyMP"), }, - { .name = IOV("JZ"), .value = IOV("rlKjrBTHLTmx"), }, - { .name = IOV("OffTLs"), .value = IOV("CMMrgGhhbsjJEmfIThKssFcPwYkSeLwIiQiskXDuWSQrjFEPcVbhwBDXL"), }, - { .name = IOV("Un"), .value = IOV("cwzSLN"), }, - { .name = IOV("bRlsUvMGwIZDUasqaIj"), .value = IOV("lcPVwpWXTjjNZUdTyrnJNWwCZwRSmktkNCOPwsBduzhQeb"), }, - { .name = IOV("OBJhCshKmpy"), .value = IOV("dZswGBGoOLLcoQAdJGHVqOggWBXpfgimamTAqdhfcLXonLvHXdcOAqrDdj"), }, - { .name = IOV("OzkFViFcUVtME"), .value = IOV("DhkPCCkCuCNkPPDD"), }, - { .name = IOV("euOT"), .value = IOV("bKNXQnKWxFKIvYNePgatJZeWCjzyKfSZPZtmTiUfPgNVMsURlnZfyzteI"), }, - { .name = IOV("EtFwcWkZ"), .value = IOV("PzMQwk"), }, - { .name = IOV("rfEdORZDilJBZdmXwGWN"), .value = IOV("ypWIypsHLMlkzSSsPcRLJHOFfFJCw"), }, - { .name = IOV("OzEzOIC"), .value = IOV("gumdXeqXUDgXscFYhNkSIpf"), }, - { .name = IOV("LPDVy"), .value = IOV("SyWZuNmiATOYbqnahnRpSWCTghLbQgUNPLXvKxShjrqtiROarVelqpC"), }, - { .name = IOV("xZOQOjVXi"), .value = IOV("PIbFROqIhmdSPlePvObt"), }, - { .name = IOV("iuLyAMhE"), .value = IOV("PxohigVkTbxYBnogkCNHIrSxgzbk"), }, - { .name = IOV("ChpdzIVtVLArz"), .value = IOV("vcKqIbvjYXDRuLVwpaFEHmkLPjnSnUaIAYjAsdoEhKsWshRXu"), }, - { .name = IOV("njMeHdOEc"), .value = IOV("qTorYXcaQbuaCUmPrSQzKhdK"), }, - { .name = IOV("csriCVKVClxbXWrf"), .value = IOV("caKUCfxGnNfsWjLThHaUyTGEnIvXJqUzbyHEISaWKzgTeRtpy"), }, - { .name = IOV("fIR"), .value = IOV("IvEsCfMycjhHLUtLvVrpTcXfxQbEQDETbBYUiVGcChwEyY"), }, - { .name = IOV("Xvo"), .value = IOV("GScRgNfsqzPbuKToUQFonGDuKZWotvOdDKaavxjEADRHzXdNUYvTWYB"), }, - { .name = IOV("xlcdEMbFRNHSLQuCVbGW"), .value = IOV("EWQRawTLESzCVxOpDVMmZxWTWqlMMvBnONyqnIDigsCByYSUTDrMLGjRsZCGnkquxZEvlO"), }, - { .name = IOV("jgFGMVKdERfyM"), .value = IOV("rdPhSxLmTHylNPpZcsvjwDawTEzboKAmBSlglXaKmlpfWvrNcSNcxnBvdGHJXOUaJPtGw"), }, - { .name = IOV("EjBQHZIkEDXXyLMKYqul"), .value = IOV("EJndIByxlwSrzAypMkljmgVzfyAzrnMBRWTWBfstFGKFunEAXWXMmQbgoEzaDAxoMW"), }, - { .name = IOV("KZjAiybkAmcJ"), .value = IOV("HcTjcQdfHwjVFdPido"), }, - { .name = IOV("MFPUPqtodbmxwzyvucqZ"), .value = IOV("owoENHgSRPKFDbEvBdoqkggvycih"), }, - { .name = IOV("QUPrEoulsOnfeZVFuB"), .value = IOV("mfdqQGmShhhXyzWoYwyPOAsvlftfjjlWhUkKEcvgAXoNGKpcirw"), }, - { .name = IOV("MrlXsr"), .value = IOV("TEmgMDclzRNiYmtAqVbZAyIqAjkkmlxGvTthFrXstIpSInE"), }, - { .name = IOV("CfdsGy"), .value = IOV("OmLnNlHdrxqXtxzMOZQArfRmwIuYxBBsggbfUsCkxehZWZEiydYKGGwndSHlcpGCDIjOMQeXofBkjXvy"), }, - { .name = IOV("GmSTWuaRroncPz"), .value = IOV("RMdkNDLGXEKrQfnqbvwvqpTmoqlENrtwhiyvNhcnYbPEpXzNtTnOUMIhSQIPGJrFJOoGPNYy"), }, - { .name = IOV("PsckOhefyEs"), .value = IOV("NeAPHQPOCKsjFcIjokTohjeVYLgbggSnRNVAKRWLesQoHNpkBkFyCNxGMUHqFsz"), }, - { .name = IOV("MQnNsOCmOHOydM"), .value = IOV("aBpGOAbGrYzaxDAUrTqThJbxwsqjONEe"), }, - { .name = IOV("sZFKUO"), .value = IOV("j"), }, - { .name = IOV("QqUMSPuGXWaum"), .value = IOV("mlsKOyHhTSFWIMRScmmhHljSZ"), }, - { .name = IOV("RFAJKDMelxS"), .value = IOV("lXAWXWyhxBiOwxjCEyQKHqNhXvcWfiAvmJpGCETVwnduxUydCyZRguCanReDCN"), }, - { .name = IOV("cAgYQAB"), .value = IOV("qXLnKCmoblVbmmEJCicIfoozvpBnzIUAyy"), }, - { .name = IOV("UOiDNKN"), .value = IOV("DfxuTXkzQurWmycPBsmpJQSbZHempsJ"), }, - { .name = IOV("jbUpJFHaAFIKjhD"), .value = IOV("RHOYwFekQDCoBaZFjRFACjlHnyPDfEWqnIisbqkZMKntEO"), }, - { .name = IOV("qIHXHSB"), .value = IOV("VibwmSLkisqtrnQQxdxBntWLQLcljyXPKIssKugujjTPwVMQwPxPvMWE"), }, - { .name = IOV("INLqfCBIV"), .value = IOV("grdgpUAusR"), }, - { .name = IOV("QeWbLtiPe"), .value = IOV("oHLXPMyWQxWYsPNHNNOwvnJEgSCeapimjoiFeMCBeWvIl"), }, - { .name = IOV("wRaxTEGvqSUvNQ"), .value = IOV("YTxuLJWceQeDLAUJrkitRCwcXaYMKPBiVcGXkCyWTOHsZBEMuPGQlWCxyrnRYhjL"), }, - { .name = IOV("OP"), .value = IOV("LzCCDbBRjpLlBnOsrBBWNTSVateMElmOqkCwWEROBdgnKxehmEWDsjniEVnw"), }, - { .name = IOV("rrESwTE"), .value = IOV("uNNnaIwWbWkCqxKnOJOGqculyGptxiBzXugZXCPtnEAfmdjFyPge"), }, - { .name = IOV("ZXmLkKbFEcgrntVa"), .value = IOV("CQuilxgGAhbEFVmmMAdyHOLaMWnRDjOUEyZiZtICOWwKvcvXSqAawvIeJSkOEGTVJnUZlrvoLOu"), }, - { .name = IOV("xtnF"), .value = IOV("UlVysSPlUQdSWFMGsgcFRSFuatMLnUtWnWpEaNCmGuWfBUzYnDSCLEM"), }, - { .name = IOV("bjBXNcPWehmoSiYhyIR"), .value = IOV("eYxJevLSAzAjwfFyIupRwZtNGbqrFIqAqKXstswqykXgMFEnvMQROHoUnMKwMLHfMpByfOwFW"), }, - { .name = IOV("qSMiWGsMrbQK"), .value = IOV("IHoHkXPegdLljszjYjnqijNWqz"), }, - { .name = IOV("iegxEaGwlpRjfIr"), .value = IOV("m"), }, - { .name = IOV("zQ"), .value = IOV("pHxNcqQPwEUXgHhGjothFfiQByoIwirfaONIzvKTtojJAbDfRVomiCrTogcBGJzNnZbwbbzgaJtLRDzU"), }, - { .name = IOV("b"), .value = IOV("BAGWUvEWdVnqQayDIiFjaxfSgy"), }, - { .name = IOV("JPaCWEoPbCPD"), .value = IOV("ioMbGtdihXigZeZoloeFpIqqIZZoYGZnbSbmMTSAnWWFXvMl"), }, - { .name = IOV("dAsQfykRqMqfa"), .value = IOV("EfqeDDYaxKradDEHqTVqjLFPXKtZhMHiL"), }, - { .name = IOV("ENNunH"), .value = IOV("DRWADERrCEbHlstneeXVIplUiJOVsXBeNHxHTlwRGHXPoLUoHHbVTdXRJvMjUX"), }, - { .name = IOV("RTZgIJDLK"), .value = IOV("AkREZTQyqxJsZLhUFhDdkHkbGABvaHrpMFdSehhdgXIrDFIclmstDtYPYbuKZCFWFSsEJHncFVS"), }, - { .name = IOV("JVLBluvjI"), .value = IOV("lGUsjfeaxvjhfPQFkcqVvUVNtyLleZjDjkhJdUNZAUawSaBPXvLuFoxpZsrnvcVADTQtLDOf"), }, - { .name = IOV("evnUqezyfJOQuQqWxczy"), .value = IOV("dmcFey"), }, - { .name = IOV("Wh"), .value = IOV("TiLiQwubAtOkKBKrbuMJeqXhKfBDUuQNphziYENRgz"), }, - { .name = IOV("PTuB"), .value = IOV("eWa"), }, - { .name = IOV("uMdOx"), .value = IOV("LrrzXXgDcqZAgopDuBXjCOjoZjCdXwoVqpwYXXUOokduKlsmFzbIlVXDpKHlSccqrwAheV"), }, - { .name = IOV("ftrGOKduSlZcoWpsQa"), .value = IOV("pRjbEAkbAuORueDTgMgWTTPnTboqGQioFyCFlyKimsJsvZOJaJoROcMWjkly"), }, - { .name = IOV("FNeq"), .value = IOV("xNoyPGDGGXyfdIjQEnnLJAmRtK"), }, - { .name = IOV("gx"), .value = IOV("ArS"), }, - { .name = IOV("N"), .value = IOV("BwCPYMztRiHmkdRUIvVcRgZTQcbVobrEuJtWcTsX"), }, - { .name = IOV("ITJGORcNsZruSKBrJz"), .value = IOV("EdIBkhyAUvmXlwcSQ"), }, - { .name = IOV("fmfbrOm"), .value = IOV("vDLPZNlHofninGkVxrAxJIMxwMkERLUPo"), }, - { .name = IOV("ViamQRXQec"), .value = IOV("MrxwzQeVGycfBybCDEQoXmzlPDNFeoqKUNldlecpgNklsXJfXKEuuSETOrUE"), }, - { .name = IOV("PubzSbkhpWgipW"), .value = IOV("LlQGHmOjalPmiknBgOUdgTcI"), }, - { .name = IOV("dswHLFoHYVlSZJCqS"), .value = IOV("kXTLmzTYgwDaRQHAduqsqwYcRHlrRNSCVXKfTnGtKoCojQhWthHPtlIdmDqztFkpILjnxxSVfj"), }, - { .name = IOV("CZXHiuUnEeTSFh"), .value = IOV("MTchqLWbQktgCQgBdlHJOD"), }, - { .name = IOV("baCRbftPUBNepVXw"), .value = IOV("PUgiCrmwcVYQDoPzLRFLcNVskPFkMUrmatcvMGKoWJaDaSlkcNPEqCnbpO"), }, - { .name = IOV("RBlMSxrpztKtuqAJKolu"), .value = IOV("cUHeeOsWZPIwtPzNvHXAKLorNlofFswj"), }, - { .name = IOV("QdQ"), .value = IOV("zgvzsTAmACqAMRvWTrAHtVqtCRjtHDZRLkPrrqxdngRXKhwq"), }, - { .name = IOV("oLJXNLgefwQjzWfohsAk"), .value = IOV("IjUJvNdDdzUqnPfljSiGLDwiWvOem"), }, - { .name = IOV("rTSoPFJKSbmVn"), .value = IOV("oYczeTZZFporqStnJywbvSAgfxiwYkC"), }, - { .name = IOV("fI"), .value = IOV("fYmDcheGRWAvCnZunydtypznZquvOVytpIkZArzxUuvYfomsyRHypwy"), }, - { .name = IOV("IJUsICt"), .value = IOV("nBqmgSITBHWteqLBKConuJZKOpXdRudkRSWYq"), }, - { .name = IOV("NgenCfOpXAfPabYtQfn"), .value = IOV("DsShuriSLvGxfAP"), }, - { .name = IOV("gteGeUDWHmFDEQKn"), .value = IOV("zJaOZTfjDpdBgMNplxAdVolD"), }, - { .name = IOV("IcvTAqiG"), .value = IOV("LnSfxokRlppmCioLGapxfYwAdTwirqZYUqYltV"), }, - { .name = IOV("moSUEpkBE"), .value = IOV("GNwdDlTMOuedfhixhEtWGTjGHojQmGSPlqzUMZijvOXuquCORjEUiCPhREAz"), }, - { .name = IOV("dzQaSIjRdhAGYddMz"), .value = IOV("UXzQPfrwjBfzUZePPwsTqjSvPvwVhvrZsgKEaEbhUqPLrsEXIFyDFAhNYrWeVN"), }, - { .name = IOV("wexyEU"), .value = IOV("eYGluPeodggClPYpEZWaUyUZCPILolykYZgghLBLZUHIVT"), }, - { .name = IOV("EylmNPsRFaUvNJiqipfW"), .value = IOV("uQoCgAIAdEGQPuUFoVgPBJLDcwTsJiyF"), }, - { .name = IOV("GMTGmoRSmJu"), .value = IOV("vXkdhMhGXnvhlnCyaWeceMZIrbLrLogIGnBhRXKxYBQFatZeJsXXothDlew"), }, - { .name = IOV("EQcPxruXEMBjSF"), .value = IOV("VTtvsHsaeOohjNoOZjHwwZuRUSMwsBlOqGCetqRAZLaLZKsechsJasPBrgsBcGBkrgRDtmGFCVFGATJz"), }, - { .name = IOV("LoqpeGlDeKyNDoOqNDaH"), .value = IOV("YfncFImTMXwHXEPbJefoDVSYpcrhdQwKtEtHUiulZfYULgHjwlQOXDVRDmLYydSihRsSWplwOjXPK"), }, - { .name = IOV("buRxyYMyBiQvbn"), .value = IOV("QYLmIzdNUtzFM"), }, - { .name = IOV("kslMXYAVf"), .value = IOV("aErwvVobuGNVZOFuZHqoCEDlrCffqPxoClBhrMshQFRHmTYjWSBxj"), }, - { .name = IOV("xvUyhcvOPMqU"), .value = IOV("RuGSCSCxUltmmmj"), }, - { .name = IOV("RuvTjY"), .value = IOV("aytEQNbBsE"), }, - { .name = IOV("QdVWLYg"), .value = IOV("fdcbxzFRlegozpYEzyHrmtlcZAjhqmacRRefaRlsjDEbRmpRYLwKvtOtzp"), }, - { .name = IOV("BOQJYrHK"), .value = IOV("DvGVlAjiTeTioGUCzdFTUYFnlrXBEJH"), }, - { .name = IOV("jQVvuThreJEGIrYpLJ"), .value = IOV("WWdTlpWIiAKFAkSQbDlYstgToVTKVboyYbJDLJI"), }, - { .name = IOV("ODKZcLXOjfaWQTkPZBa"), .value = IOV("mcBdWSnRhbKIlfXVA"), }, - { .name = IOV("TPE"), .value = IOV("TGAtgcvuzZFVdXXgWbhQxFpJorfDCkkHIJHGyBzBatwkqQppJWGkDNNaOugdvOVwCMbhoebfv"), }, - { .name = IOV("Dqnr"), .value = IOV("AllZxnqljswFGtLUHZGzcbhjvgLLAIwYsJFpaxeba"), }, - { .name = IOV("eywVrRD"), .value = IOV("nNaLpbByABzbwaW"), }, - { .name = IOV("zmfDhKfwjwCxVzrMWD"), .value = IOV("YxeycbxKdVaVCJCKE"), }, - { .name = IOV("tJLOnYxOZD"), .value = IOV("EVMaKtpNtniPkdDZAVhYLfhXnPFzKQhbpmqpYhknDsClOdXRhxgEnMcWOLRZWyUNZmejyZwucMlIlTn"), }, - { .name = IOV("ffxaetS"), .value = IOV("FNzkNXzqzq"), }, - { .name = IOV("WNnQFefowaWmmRAOFB"), .value = IOV("egQvED"), }, - { .name = IOV("NApDK"), .value = IOV("MDUSBD"), }, - { .name = IOV("hzplTHlXJKCF"), .value = IOV("gvjFkciZHjLqgZvbVyRlIHSwyRGDKDJvSHoqtCXNjHpnhHBhvVtdzboGyQKEE"), }, - { .name = IOV("tzCHpElyAZVb"), .value = IOV("nirMDOW"), }, - { .name = IOV("QxXbFYEO"), .value = IOV("ZTcJMnakxWKacPBQtnACazgCkUHP"), }, - { .name = IOV("BvpOrCmUdPp"), .value = IOV("RvyFksBUYMGOHp"), }, - { .name = IOV("itDyGdWwIwBx"), .value = IOV("YaPjSONOwgvPjwoFJnMTljvnYKeQAqGUzTrUYjfTdiV"), }, - { .name = IOV("tjFaqOmJFzyYjX"), .value = IOV("mJCZNIquwaEWSOj"), }, - { .name = IOV("ibVQVFSkRQfYBdqYDLsT"), .value = IOV("dtJnmsjEKtZernYdkkuJeyBAyjVJ"), }, - { .name = IOV("laFzHgAFQvD"), .value = IOV("KwUMB"), }, - { .name = IOV("KPspPp"), .value = IOV("jMxkhIBKCDPyQMgNNoEECjXKsMzEXWxpFoHexSnSvKdXsVpWbqfEZRytwziP"), }, - { .name = IOV("vTMmEMrlLPeEjAUBvy"), .value = IOV("rWOMZzYXDhM"), }, - { .name = IOV("vTqcLR"), .value = IOV("zhPtKbuIADfKdOvM"), }, - { .name = IOV("cpcPQGQuxvuVSOR"), .value = IOV("fiZkroxxxjWpjXoQeJoMZdmFstQqVNmPzKLZkWBgXcqMqiwAlWljTjGrBKuHudkUYfccJzSp"), }, - { .name = IOV("EqXmZaYoxZRfNrLDIH"), .value = IOV("NqrzUHWSALcZsukqJrJyZSlaRSYBrvzOobLIZWSpqGEJkV"), }, - { .name = IOV("CMEXuGTUbDRvo"), .value = IOV("gCpzCrPWnbBQxILEYggHjKmBMtaFtpMfGqkdAJskrwCsUFRThhYlaSpllY"), }, - { .name = IOV("ApqU"), .value = IOV("MsrApiCYTkQBYYWHLtrYEKKiY"), }, - { .name = IOV("fuGxBO"), .value = IOV("hFZVOjmuMshRbNhzKfSnhDghJzHcgAzfhFkUurWQbddwhcTVwOVOJAZCOW"), }, - { .name = IOV("rmhJvlyJrjrBXEOd"), .value = IOV("yAxrCvLtnhIRsrTaveFAEHCdJRuZJgAJynL"), }, - { .name = IOV("sUbiGbuJepos"), .value = IOV("mXSquZXMgxQWfdqSaitJki"), }, - { .name = IOV("GyhMZDJLQhN"), .value = IOV("VQdopxQHEICXoSyrFtzLzvHdjR"), }, - { .name = IOV("CJnZOuhreNMnVS"), .value = IOV("wMvOzQyYPIhuMBlNiZIsuvRNWf"), }, - { .name = IOV("lAnSLIYLrmFrKKfMcBc"), .value = IOV("btouKWQJuReltmFyVs"), }, - { .name = IOV("pNjrNSGM"), .value = IOV("uYDtDtNFGufYcweTSSexgOGyiRfKWsOjspwuQZmXzNcoRVATALmObRVYiSWOJLgZkbMQENp"), }, - { .name = IOV("rnsfHGkktjukBzOT"), .value = IOV("uXOmVzHNrsAYSLXEcORXUwiXZteqtPjZTOHVWtPqnwguLnCtuYn"), }, - { .name = IOV("oxPbPxAFn"), .value = IOV("RmeJznwojUsAhHfoqAFWHAbloYj"), }, - { .name = IOV("gSuJfjTEJdD"), .value = IOV("nPghlhANaeLloQdlwOpfYKOrHUQgXD"), }, - { .name = IOV("ICyFNiahLDPejWG"), .value = IOV("RvREirsbFISEzRKqYlYSdQgKFMIRjGtMZrZMSuztAHyIlBtTWSHBYpi"), }, - { .name = IOV("HXdAADBh"), .value = IOV("bEyIKRZCLUNS"), }, - { .name = IOV("VacCx"), .value = IOV("OpzOZSyXZJgfAXtUTANXApErzdJcMlZoWadpZwgwucjWIlWpBDcaHGWal"), }, - { .name = IOV("gIGVYnFo"), .value = IOV("cmpiWFQnRnuCNWjQpAXljNhRssglIx"), }, - { .name = IOV("rJNqCyvSxmAHiO"), .value = IOV("jbGSqDimrtloEKYiLKNXwckXzJCRQMjNdbChXijjRmgThWCbcUBl"), }, - { .name = IOV("MOJUusMV"), .value = IOV("yKWJYmjzVEhPWtWGnrYFxpNxevzBpHCRRvPGKE"), }, - { .name = IOV("m"), .value = IOV("tzosPRhyNrmfGQmwHQmmsqkQOCfsIvRhNWKaQKxXCbrKHdxpsFhpVxRgQpPoWSoVZSFz"), }, - { .name = IOV("bTQpTibUwPaqXBhG"), .value = IOV("jpRBsZUTUKilXdtbvFxOESqHWLjroHUtvEEtXpTYz"), }, - { .name = IOV("BHt"), .value = IOV("MwMuYquGnRxLYkcTZPZPCWukPcY"), }, - { .name = IOV("rvLkvLRX"), .value = IOV("JQpNTHwuYvLuhQugDuwFQSowAnxilLyDRKFwdrPEiyiJC"), }, - { .name = IOV("dooIUmCbCjlTXlsW"), .value = IOV("FpKLPaQbeYDvCAXmRkczYidHlhOpGwboEXjTbjIWSbzlTCpZbSGZjcKjynx"), }, - { .name = IOV("yhYwbTSpk"), .value = IOV("OayxfUJEQmSRFfPKaSaijoDCfRevZCYbZOaxfDJJjfKenCbkMGBWUdcReWUlZoXTXN"), }, - { .name = IOV("XyKqeuLLQHGThTjgIGwY"), .value = IOV("HoOKQlk"), }, - { .name = IOV("RgQZ"), .value = IOV("tGYUHxrmCEwhxeSonDTVsitVFrletocYRxvZ"), }, - { .name = IOV("Pf"), .value = IOV("yCbYWlcoCTERGUzHgqHAxRyxTHpwZtQbqjNGipRAS"), }, - { .name = IOV("SUHLrSpWMbJwMtDrvTh"), .value = IOV("IprsNQYWlZQuoMBvnYJCHkougLQzPWhtRUZkYJoXLsxBrNzHZwd"), }, - { .name = IOV("VDWOpUtKpBZ"), .value = IOV("XQeZzXlTuPteTbxqmloZYpWVFBptlPalp"), }, - { .name = IOV("aueVDMovUxqyByX"), .value = IOV("itVeeZTzBjRo"), }, - { .name = IOV("XVJguJYff"), .value = IOV("uxIoTZqDnlbpaTaJTPSHRMbsPcqQUQMWBRBWNhQlvjViwknQ"), }, - { .name = IOV("MCzYRx"), .value = IOV("rldwfLhtKKRTjCIIvcbTRDysfvRxRBZvkUGLFELXBbMLAxPJKCqjneWsvDbrOBkQbFZOJAlzZ"), }, - { .name = IOV("hZitVBZrwETsni"), .value = IOV("CcznuougrbSzdrdvaTCrdmuOMvnLiOwwFiCYvrqsbivvwMldEmBgJxCvPAvMKptiyFFmA"), }, - { .name = IOV("ExkTo"), .value = IOV("gZrbwJWJB"), }, - { .name = IOV("HlDpQRUb"), .value = IOV("MEMhGkVPo"), }, - { .name = IOV("WbG"), .value = IOV("YhNpTJkaKRvIJsfVYTjFUnUCTdxGOufFenSHawhRkYLCIsDxagdOjtNpIwcVJM"), }, - { .name = IOV("dmEAsNPSxyrC"), .value = IOV("tCDxXynGJANqzu"), }, - { .name = IOV("KiGzErzePkrg"), .value = IOV("Z"), }, - { .name = IOV("KCy"), .value = IOV("AHOjhxIWeNLQYDKsfEpRSn"), }, - { .name = IOV("RBPmFIuZlP"), .value = IOV("JKPfwo"), }, - { .name = IOV("HeidhGtwUlm"), .value = IOV("PhMVJZxjOCIuTACGIXoqofxzPRaTqxMRFYapgVWFlaBLARLYobLetsvMrxDAvUWWwPT"), }, - { .name = IOV("yJbUokjfftkcIkQFKhB"), .value = IOV("ZdEvFGBjLQkkN"), }, - { .name = IOV("szAqTnNiHbCXOYC"), .value = IOV("OREwjIKtobiTcvgWDmmSpkWhGefSGzYiabrjH"), }, - { .name = IOV("jlOZk"), .value = IOV("QKsLpuXSzwTuuooscRdMzndTmehDNakJUcNKxKCcKJOquJCGPT"), }, - { .name = IOV("xSqUPxJXlGCsrFtkjSXE"), .value = IOV("anOgVuxEhhyXhFfqGeAcuaqXVt"), }, - { .name = IOV("gzHaXvAgBwZlyzLKFO"), .value = IOV("rrsXZMqhajpZaCUXrgYEIocYoHbpzWdXWdcJqOfEKoBbjXMQ"), }, - { .name = IOV("zOfNqdPlC"), .value = IOV("ASuS"), }, - { .name = IOV("EjErahDwsDkDTDEAk"), .value = IOV("UJsxUqUgNPvGWKOzawKyiUePrqHWkwTJsTMoLYsYYHvgMVUINKnVOQBIIZ"), }, - { .name = IOV("ZhLAzHXyCdbUGCjRSWhA"), .value = IOV("fJKmWaddKdwWFZEdUdeXBTwyKjzyYDQEGZuxIokAvXPpnPBKABnrwBGyrFpfCLuuwXHuVBNouDNy"), }, - { .name = IOV("px"), .value = IOV("QHLdbPRlewpCThMRUvZaInlMRlnFQMCIYFvzfjDKBjZcPVDMtzWBXAEKLbkaQxPgEReKMirBysyOU"), }, - { .name = IOV("ZjEPaxpkKowFpvVASEeR"), .value = IOV("xgB"), }, - { .name = IOV("xUKJkeAPCsYVMxupJ"), .value = IOV("cgvqJcwPYqWElQZYsIXzeBEJjjYjXTySRQyIRAdu"), }, - { .name = IOV("ypbDbToNffHeXdtteE"), .value = IOV("LUMGwApYrFghbJnePNlEzq"), }, - { .name = IOV("aRpDSuGrRyC"), .value = IOV("bQrYJSywKDpLbBWgtAmE"), }, - { .name = IOV("RAbLvIvjfyUoTTOvnZ"), .value = IOV("tmXnZeOQCQLphNgpCijBSLEBCBsRUsXBmdWv"), }, - { .name = IOV("FN"), .value = IOV("LukDqqPJnvPybZsoTnETwiRCEgrydYKKSXrbmmbYOUHGzkbkBPZTqDhXG"), }, - { .name = IOV("zCUZeDFhmvgAYmsDUE"), .value = IOV("MqPrlnWGyvrPMsHkpEyfdqKxQSLWBqszlhSWvdFUq"), }, - { .name = IOV("bi"), .value = IOV("SoUixuzoFioVuzvuqyrPqEOWEWykJcPcnaIFjmFSsNIhbjCgzRvklSgxVojpopdHKFDCRDhFkpx"), }, - { .name = IOV("XHMIMIXdn"), .value = IOV("wkqTuiDmdLvcIdJCJcMGgiODLo"), }, - { .name = IOV("onotSaysmspPXipfD"), .value = IOV("GqJJYJcmMtCWJYprksRdiwS"), }, - { .name = IOV("ghk"), .value = IOV("citnIAKpYFHYBgsUtePWEXAngJhOhWuacrJxrvSzfxTDkbnvvqnYWpBsRNqbkIItjSUpBCjOuC"), }, - { .name = IOV("i"), .value = IOV("bjXlxsK"), }, - { .name = IOV("CvagEE"), .value = IOV("dvdngfpzYkrjFnSRKstElJKQlEGuXDBzqhTlHckPJBtaLtjlaRWILFWmsZCUvQykqQOtMS"), }, - { .name = IOV("zaX"), .value = IOV("MMbJlcIn"), }, - { .name = IOV("vIKwfHwXJsSbQuMVgo"), .value = IOV("BWNGLomvrkbmkVxdJPsfGrwNQvYHSdAJBfeGarhSgNpvkpXhtjUPVtJqwwbxPBZtNdXxbZ"), }, - { .name = IOV("jqfZeqYEYnjxgYDpsH"), .value = IOV("uuyNywTbIpshRhSUNJhzOzWpdGLvuMKrBMylggtkwbpog"), }, - { .name = IOV("ZQsk"), .value = IOV("wlACHWKQVxEZi"), }, - { .name = IOV("UPTHhyobJnUl"), .value = IOV("HsVOdGHXEo"), }, - { .name = IOV("NFFsVIH"), .value = IOV("VYwSehCFToeVQtMFSmyMqjiTxKBMZNXuiGzVnOepuESAHSpJgFxZHLRyeGegaRrefIaWpsnyWptfF"), }, - { .name = IOV("qO"), .value = IOV("owe"), }, - { .name = IOV("BQCnJIdxpc"), .value = IOV("vjUAsrrJZS"), }, - { .name = IOV("dwRPQz"), .value = IOV("cNAbPokHMYIRkKPtfljEGMPXGVcdEeRHuNZwybhBKvnO"), }, - { .name = IOV("HDwmCuwex"), .value = IOV("ehYFHXTUvFlLgkFamPUJeqMQSCMOKzPfVQuePaEaZXhHJvEbFyLLOtRtQGxUOodxObxHcNOR"), }, - { .name = IOV("orlHONqK"), .value = IOV("fohyeNMhafqUpuawtznAAPNhbXMAIikYOxzgLKeoHPYPLeubuHJW"), }, - { .name = IOV("euVb"), .value = IOV("jUfrffnrNVbDxzyRkdJbyYtpwhizGrbPbTwyD"), }, - { .name = IOV("LSYlDIOiwOBsCUSbzF"), .value = IOV("vnMMyUpMMQJhkLuRxdoBWs"), }, - { .name = IOV("AjxIy"), .value = IOV("WMQXAVBGzgLYXTEASGRm"), }, - { .name = IOV("BJhgrrIWxeVPApa"), .value = IOV("oYNJOZfhCCqdUP"), }, - { .name = IOV("lnLGktxZJOtoo"), .value = IOV("sKplJk"), }, - { .name = IOV("AAxIngLbVeFNU"), .value = IOV("EzqoyVrqFDIPitIiEMQksFuEHNGckHorCsUXDDbZLYVxDCkWsMnynLZnjuJHHVzplyxgWA"), }, - { .name = IOV("wuEMsS"), .value = IOV("sReXpLcMzrtnG"), }, - { .name = IOV("QxemgjtNzfMxfKsq"), .value = IOV("mywnWjfv"), }, - { .name = IOV("ThZEEzSKCLnqaXPrtGX"), .value = IOV("MXSsHyTqTrFRyQYhcXiQNCJUHOAifteyKMDlpxyScPYBlgsyHBkat"), }, - { .name = IOV("QGFNgSWEn"), .value = IOV("ohgpWuaVgICgUiLJyOIspkfZ"), }, - { .name = IOV("ghiVDnVDvAuzoREt"), .value = IOV("ADnipsyQnzPbdhL"), }, - { .name = IOV("emiDCgdo"), .value = IOV("QofbgpZOanjFCuZGRCLAsrOCynitNIjlEdIFkmbleXVVyIekzAbdDIUCdo"), }, - { .name = IOV("jUKK"), .value = IOV("yhNxfhlnSehnPaMKiYXthZyjseZUyhEI"), }, - { .name = IOV("oYSDz"), .value = IOV("bTRYuibebbFFLyAFTfHcwSfOAYuPtAVhPIxMtjlJfySpHwpOderbdr"), }, - { .name = IOV("htkMPh"), .value = IOV("UnhxVLcJpSPXfZ"), }, - { .name = IOV("RPdQURU"), .value = IOV("ZDALoHdvuRY"), }, - { .name = IOV("FvjC"), .value = IOV("QiXvtkXoQNunjrnwLwpslGV"), }, - { .name = IOV("sPqVNBKZlBkJcUWBLlO"), .value = IOV("BmqweypYJYRzFaFJTRtHcQMuXYaYAxbcbHsGj"), }, - { .name = IOV("qYb"), .value = IOV("sUwijtRBmnDrttHrsLQbzbsZptzXMKqZXFsLfIVIaevrdoRSxBytCaAChKeHGXQlvkEC"), }, - { .name = IOV("OibSNHVtgeOwEDIS"), .value = IOV("fmzBJoFisuQvEXDFcDWEDyMpVqLFMqsYIhXLozZwSzRmSmHCaKhRlbWzBQ"), }, - { .name = IOV("UgSRooRGlIGcTmctJyQE"), .value = IOV("bCqAGqWh"), }, - { .name = IOV("nrDzefzVBwfnqDOm"), .value = IOV("yQvwtxmxtYvmjHnVwRLSIiryhYUdQuPFfVwHVRUuwDJV"), }, - { .name = IOV("hpcKLMryJKemRIUo"), .value = IOV("frVtSKWTgFAvNAEVJApudAuhVzKAN"), }, - { .name = IOV("lEeCVTANijvP"), .value = IOV("PDXeYpXogmkBDEePhfTWsBNHKKeXOjibJYyEnpNOLllHaGNuVoErnpAQzuacYsDrRPQssfNqdobfrzZ"), }, - { .name = IOV("PhWoDym"), .value = IOV("HdAgNMcc"), }, - { .name = IOV("sSC"), .value = IOV("nlLTozbWPgUbOTCeRWbPfwnpxGfuVVeyUyWkpAWpayJBfImzvwYqJvdgpDx"), }, - { .name = IOV("seRZywkVmrq"), .value = IOV("DSjEfrTvCUmxunfgdNYdUgndYcNIzuXWXPzjQDUUjd"), }, - { .name = IOV("fBlxdVuYOp"), .value = IOV("jRngPLxsKwtRlhHmGHTSMNSfbcxn"), }, - { .name = IOV("aKcAeMbzvtjtnPij"), .value = IOV("VuIvkRTzjidpLkV"), }, - { .name = IOV("DHJpWGNjumbwafiyNTP"), .value = IOV("xYPGpZjfbDzjLkXzqwzBUbPrix"), }, - { .name = IOV("uHwdMfczOvIjDD"), .value = IOV("WJSllYmnjRPuPBLdgFNHwvuc"), }, - { .name = IOV("gQzSYCbdaO"), .value = IOV("UpffJplNCoSKqzrCJdSlegOVsRJywSbv"), }, - { .name = IOV("ZJgTnkaoYxwxBiYZ"), .value = IOV("MR"), }, - { .name = IOV("ZiWOlZPhUOWgHKswDi"), .value = IOV("BMcAXPiowsA"), }, - { .name = IOV("EnJMGGyRutespWazDR"), .value = IOV("RFaizHMCxCEnx"), }, - { .name = IOV("CknQGvVYfyS"), .value = IOV("Myjle"), }, - { .name = IOV("YiblpppkkmeR"), .value = IOV("zcakTpgbLFQTOptugYqkTNaWWKDQpzCgUlFfPprcwIhdoplMT"), }, - { .name = IOV("bAHYfByVCxrTDIyl"), .value = IOV("RTbjKPBpicyTMlAGbGPVDmjKCr"), }, - { .name = IOV("mBDArCZBdX"), .value = IOV("vDdRGOvdqBX"), }, - { .name = IOV("qokNcjcQeFg"), .value = IOV("NywzzvybFEGsAXwjdEa"), }, - { .name = IOV("d"), .value = IOV("oOulVaViyZaHFByqlxeuLRvDVgkTUUlBGuoRMhOZKYbXmjCyyfzwRlSgmKtVqeoPiPLsoqEeswZtLyJX"), }, - { .name = IOV("waSSakDJfL"), .value = IOV("SPVjpaclbmckEZlZZsO"), }, - { .name = IOV("f"), .value = IOV("lZhRwaveIDncChYCcFIGrJZflfWCVidteZUSlmMIFYibAeiwgHxDZzLWXHpOEDI"), }, - { .name = IOV("wRLJTnVGn"), .value = IOV("loDPUAchxEirbszFtDKXRkpzgvxqpxkrBqlPKvngdDS"), }, - { .name = IOV("cFPnutbTbAO"), .value = IOV("FHTqJOxkPotjAYXzquEEVNcISrvwJfyLnmgwuvJEtZ"), }, - { .name = IOV("ekIJAMedDPHttmZd"), .value = IOV("tPydgLyigyrlqYNQTLzyzllSrAZVPjIdpGqK"), }, - { .name = IOV("nEFED"), .value = IOV("trWYFwReNvPfzsbjKGJDahlbNbNbNRneYBneVgaawiQAyceXUFVlbpNZjfYwEhGUbjPLEBUdjc"), }, - { .name = IOV("kfeTtUWsRvwAqbciviA"), .value = IOV("aBwQqpeTVFrIWaMgdwd"), }, - { .name = IOV("VqzHdCfQhycnNPofX"), .value = IOV("zmEecpUMRwXhCOeBXm"), }, - { .name = IOV("ocMcrAdfFgn"), .value = IOV("vmFvVFXlJs"), }, - { .name = IOV("peipLLHfMmHIi"), .value = IOV("cJgfzYRlYlPrFbaPNxEisBrD"), }, - { .name = IOV("XDiKAmpDoiBOjQYyuQ"), .value = IOV("CjXnCrJUOGwWmUXXIuTtswmAFfXRwdfeOlPGVuAyCnrPmPUydKNrYtuJsbF"), }, - { .name = IOV("LDDgQvXwsoCIoFZ"), .value = IOV("ZgLOiITjohBqrTIANtwBciGMXLNKqpVwEifLEjrZDAMGQDnUYSaFsmGPBdYKkIZXRYtRluPIGUdTML"), }, - { .name = IOV("ZiSbpemQtDS"), .value = IOV("dpaJuYCLdZFZRtxwQtBvIKhMouUJfduJGxisyPEdSYR"), }, - { .name = IOV("TyrZegZKDStvKTlNM"), .value = IOV("GfDAIGRQgXtNUNxGxLYNVzwcoKOGTplvaYkkBAVTOhubjSWocNCwvRiAJVAmhHhtcgxCLKWLgpWFRTE"), }, - { .name = IOV("JTBYLnExVrmxJ"), .value = IOV("GPhEa"), }, - { .name = IOV("rOc"), .value = IOV("otRzJrOfiAxsaoOduJenFfTlSQbQuWYFSXcDHDBpFccghpFjGXIVjEgtvBMrBOxDmwJ"), }, - { .name = IOV("zsoU"), .value = IOV("AMjRczBZOLlIQdVqszpmCGhUoavYDYMezzYYEGeVDGMYEvubkLfRmcwkKcnTEtdvJf"), }, - { .name = IOV("Qi"), .value = IOV("pVTpXigjjTApplyAuvRjsWvQjnSJZyNrZxImAHJSJgXSSogHkZjtVIIblHAuSuTyoztyQBjwv"), }, - { .name = IOV("CK"), .value = IOV("XfaGZwtVCqyiXWTlKyxDsxOjC"), }, - { .name = IOV("vyJH"), .value = IOV("yGOJWfOzBErQklQKDHdosuHCycUwCUQJn"), }, - { .name = IOV("pDz"), .value = IOV("xxcuhqaIqKPyZciUSoADGdd"), }, - { .name = IOV("ALYDHCqP"), .value = IOV("PPTbGPLMsJKTYoJHAGzffjmmElowGJlBoGxIsuwCSgwwOKfpnhpnkLQQAebiXpsITubndT"), }, - { .name = IOV("wwXX"), .value = IOV("pOOJq"), }, - { .name = IOV("cPW"), .value = IOV("LoImOiWXuvPbnchsVAlsvqnayAEMACxwQZeKSmlCeXhHLrbuIKwnYIrPXxBoJfIcLJwAbVFEQ"), }, - { .name = IOV("fq"), .value = IOV("LiwHefYSuEgVMJAQWLdiTjFEnHKNEWKJkDQw"), }, - { .name = IOV("NReNiTweGUF"), .value = IOV("smIggeXV"), }, - { .name = IOV("TZLpKkddQfN"), .value = IOV("UMGpdeoaUIaulnSIqFDGIFvHHcE"), }, - { .name = IOV("XmIFujluAquBVkWQzlPD"), .value = IOV("MBtPDZgbYCDqVulyAAxSQZMAzOVBqvPyXSNhGPviSwc"), }, - { .name = IOV("WmbaglLnWHxhiXd"), .value = IOV("zZxWTFkcgSnwnJnPXlrfwGWDTsLylnCeMIjWPFbEFOLpL"), }, - { .name = IOV("wZqxmBdbA"), .value = IOV("pkrljiRQsoDLmonFBFnjNqUMJbaPhulWbGENXntiMZRYvdidAkvuZabPzIsnq"), }, - { .name = IOV("MmAhHgkHsrMNqLVYyFQr"), .value = IOV("InSSEtiNhwhcWikqWUzEorcAOlpsHbodBUsSGYPHePSLVWnZrcPSxVTSIUrmFcnLxeJQzwkADm"), }, - { .name = IOV("TVvRlBUa"), .value = IOV("ttYsniAkRoosUhXEkwpZUcgxfJGqTavCQApZfZqhBZKOTkKMtJlGJb"), }, - { .name = IOV("wrraEjiR"), .value = IOV("rdQJYqLQtaCVIEcEr"), }, - { .name = IOV("OIPpwpBJKcZlQJzw"), .value = IOV("kygrAlFhsYHbca"), }, - { .name = IOV("laoTjmTePrEH"), .value = IOV("JHEqgvNDtoRNodqHYHKyWXyUuWXIFBmXsFBpdDSz"), }, - { .name = IOV("ddzG"), .value = IOV("hdgzRvFWpkyCMgMMVoTzUOZ"), }, - { .name = IOV("xIdQugAWEOh"), .value = IOV("XwjZNHeOJyBKTjyGZEMJOMioNflbZLXVrFlSnBsildFbWeUTdsP"), }, - { .name = IOV("PcplAUqXZ"), .value = IOV("lXMKsaiOXZSGoMKJeIVagzGxnvIXKniWjnfsBIzwVIGB"), }, - { .name = IOV("AGmmAzkv"), .value = IOV("hPLpJHtrKQtxARiKXUgxshCWqmmbRTsmycTxdvJkQwkDMktvbHH"), }, - { .name = IOV("rsIoQudNFbnbebntk"), .value = IOV("SdmOVAVfZ"), }, - { .name = IOV("HJqxZ"), .value = IOV("JssAIvkZCdhZYPzNbPNMMwWWBnvgrybW"), }, - { .name = IOV("CdeVpeJFOcjvLQoW"), .value = IOV("IBlbXDhbdfgTLETFhlNRSHOGfczVVyIqzvxEvGwHLrghu"), }, - { .name = IOV("hEE"), .value = IOV("TLMzJTrYmFfjQMFXLQAmmuFbe"), }, - { .name = IOV("BqayHGkOZmZlOT"), .value = IOV("ZhXIfkF"), }, - { .name = IOV("WioNURWFIWgQaUSinZDe"), .value = IOV("IQkeVZDFZTBDcKRQEIvJkQVVLoFLjKQPklQOAMIzqNZqFNmijWcdHObZBLIAihXoCXwx"), }, - { .name = IOV("GRdSigDQuYNAoeiZalh"), .value = IOV("ROUOILDXSrOTRASYIW"), }, - { .name = IOV("YdQfVWdSbVRRbSzTO"), .value = IOV("TTKpyWUDnpHzKgSRtGrEOZmNzrwuYDmjArsUfHMtdjcKwzYMRlr"), }, - { .name = IOV("qWzz"), .value = IOV("mSqpIdlyBhLPXinyVIDhNSDMePRHAhTemGPQqcp"), }, - { .name = IOV("lLZMJv"), .value = IOV("uEjruPDUaReQmUxAkejoaPcSLcRCdSXaMASVVPCYzJKOieo"), }, - { .name = IOV("Od"), .value = IOV("ylcArjqCERheghnmTnHDMJQFyeOQdsFPBjHwIGMwzEYCncLSfNULVMGYtAhxtBpQoaTaMhxbKBLbfh"), }, - { .name = IOV("CrQcYiVaqfAJkJ"), .value = IOV("kZMxWarxQCLUOUKdvvONhskJajokQJPyzjNKiDkNzKpqABbrWLIGJLQLJqqIilMXtBVsCWwAlVmQ"), }, - { .name = IOV("XMfWQPTaSijq"), .value = IOV("mQgrYgyEBRaEbHnanquUARxShKdhwJV"), }, - { .name = IOV("PxfkWZlZkhiQPBk"), .value = IOV("xBcXHYRjhXLAFpqJIZlBqZiDcmNVDPlXNtaylsTUsWxXEHrguRtrYFGzHaMZumsKbZA"), }, - { .name = IOV("KhvCBSYK"), .value = IOV("qicJKaNpFRkzLRentKIlbQDnSjobYtBBbBbKlNCMBxvsRNd"), }, - { .name = IOV("KB"), .value = IOV("cKZLperzOXIbWQjdjJZKaCXFZVaUEJFeJXDGMsjmDxjShWewZLmAjJdTOnoBYbOWnDQuMedzZnskSeOW"), }, - { .name = IOV("ouWRsPe"), .value = IOV("AChurkXesUHMgfTAWQz"), }, - { .name = IOV("jlyHBUU"), .value = IOV("lPamhCr"), }, - { .name = IOV("aXOfxarghxsEkNvTXth"), .value = IOV("ib"), }, - { .name = IOV("uzLsGbHFOsbiT"), .value = IOV("nVpczI"), }, - { .name = IOV("gbKhfKlE"), .value = IOV("QlDPjXGK"), }, - { .name = IOV("cuojVRsKhixs"), .value = IOV("Wc"), }, - { .name = IOV("FjdLxbVxiXeIzs"), .value = IOV("bEVcSEpEaTUlxWFmiIxonsilAhuaDMuMszXKwamYsP"), }, - { .name = IOV("qwSPilDAU"), .value = IOV("ufJamqeWMsQsXaHbhQrSvbVWVPXaZyWuYszhVRYlCYiRoIlYSYtkBuBcJGsERSmYCoWTFNAdOzkstN"), }, - { .name = IOV("wzpwgbDBPoezhSRXP"), .value = IOV("DREjvuzfkNGUsRhQBLlgdUJBPlDyXphYnETWWKZsRhAgWdTI"), }, - { .name = IOV("pkor"), .value = IOV("kcRZEduqTlbXEVcLovrnEyRciDzTuhMhaZTIJhbcrrnILVNIvgHyryYPdZRe"), }, - { .name = IOV("BCImLVHkHRvzzDqNrCLL"), .value = IOV("WBUJJwIvEIHZnJUQy"), }, - { .name = IOV("gYyLyHTswmaXxJbycd"), .value = IOV("rYkS"), }, - { .name = IOV("ryMEM"), .value = IOV("WNknXOuOBFAutrlJphnWrgBHeJoMU"), }, - { .name = IOV("dDjcsKFWkqvaK"), .value = IOV("mprhIQcPChNMrfvRKJrYJbQrTwKyeAyuCsJObisHGPRjwFTmrOyTpPziGhIhwUB"), }, - { .name = IOV("EKFZvoUxrlYYv"), .value = IOV("aJMPWNkYonVuPKkSKjSUThOfJexGeudAhsSskuLzNlztA"), }, - { .name = IOV("FXzikjfHHseoobEZNfB"), .value = IOV("AOgWKkbfnZTkgoAolJ"), }, - { .name = IOV("wougO"), .value = IOV("LPnBDsCRzRicNARqtYBmasJSXPvvvAkk"), }, - { .name = IOV("trWeUSARqJlRkhe"), .value = IOV("TmDAZOlCTRpmHwPLjHQcLLDDzAXhtoNtQiM"), }, - { .name = IOV("VbmyCsUxSsT"), .value = IOV("ekjvyCwgPMvyLcbkaamPlicxJaQHdWwGiZZummiepvkPbGFvHWsqjHJPxWwUSHubnnKlMnTx"), }, - { .name = IOV("ICfNuIxiIz"), .value = IOV("LjHETpnhvtcTGdaJKmQFsxFuzJzrHgbRRDOvTIBDtlr"), }, - { .name = IOV("AXYB"), .value = IOV("KgEofPH"), }, - { .name = IOV("FqlBlU"), .value = IOV("jmgTJUUPJnuMVkStWlsZgcfcLibRMKggqGQeEfFlGbLZpwih"), }, - { .name = IOV("cRQRWmYScewmuwqPAGvc"), .value = IOV("myleQTEDUgqQXaVfiQplYWRPUBZZCkqKiADURddckGxtqPMlAdxX"), }, - { .name = IOV("KasWnhFBywI"), .value = IOV("LrFLkyOwaDVbWGEukGdSG"), }, - { .name = IOV("fPyChmUf"), .value = IOV("URmjtxfcqDotBMBqdsCKWCPGMsOvmPdYmLTDpbOOGaOSILRKxZedHRqsZnmyuAY"), }, - { .name = IOV("Yubomeudu"), .value = IOV("eqCpHlhkebfOJQHBlNFFMGNCuFzqNXBEGfYeccirITSxUauqvgsnORUZSR"), }, - { .name = IOV("mXFgajhmbiKvJJdG"), .value = IOV("GmZsmabRxMcOmujrsvAIWcRkojVfNTQVjIklQfgYowBrHhNsmChTxJTL"), }, - { .name = IOV("zsztqGHPcikjTX"), .value = IOV("NvGgfcIDmMOQvXanMspyhYhLEDYYuLRWznjqQBsD"), }, - { .name = IOV("HOYckC"), .value = IOV("EgThAjBAjkim"), }, - { .name = IOV("JomkwGNMrIc"), .value = IOV("IoJJvmFYCXJtzCwHETIKCdccGXKfbOkDsPTsQPVTiRlZbxJgKTQqFIsqgWMb"), }, - { .name = IOV("VTrQEDORZeMMmo"), .value = IOV("ySPdvUWNpqWeOAElCtFRisDchokoQkZbFeeUljhCQrIhQxbbiIQeFuDDfsY"), }, - { .name = IOV("hjMbqi"), .value = IOV("fxgJiZSjrELFeKbSoVxcPkXgIylLC"), }, - { .name = IOV("hWCbMdkyE"), .value = IOV("S"), }, - { .name = IOV("NHhITmEMzIcIOFhRFNh"), .value = IOV("cgfFGdvoNazNkoyPIlGBvjDPZjdinSzkfhuailevnDbaMfoJPPsGpyprgof"), }, - { .name = IOV("HQ"), .value = IOV("HUzmyfOuekZKboIUkiSEYOBHuSiOjPwkuwIcfjYYgOFwjPnS"), }, - { .name = IOV("KypkFJlhkYIyvqrtuJOp"), .value = IOV("xtzdiBRonLMvQwcwIaoPfPTOOfbqyCJNsdCGTXGReYy"), }, - { .name = IOV("qRMPpsQJfzgwvBcKUdnA"), .value = IOV("WRKsafViyFHnVrgKbVPywXayHUTzOjlccnVMQPXMArtzuKRcFMccYVzgfPWKgDbdsdXMXs"), }, - { .name = IOV("AnZYoumesNLumMaBwPC"), .value = IOV("fCktKnbtUeprSnYOQgxbQilKLDgHOBPubnsG"), }, - { .name = IOV("wCIGX"), .value = IOV("hPRSuZOoKJZfCvmSWX"), }, - { .name = IOV("bJHkwKvoQQuMlKY"), .value = IOV("dawyRxLRSfC"), }, - { .name = IOV("XywIcLXUhAkqFI"), .value = IOV("yOFymGHGnqlfNoirifVpaPzuSKyvJsSzSWq"), }, - { .name = IOV("HUZEkpwpSTpzJuB"), .value = IOV("dsgQRBiIipvTsYbsHNKNYYSiVfgrpHCOboTjBwPxLyNprt"), }, - { .name = IOV("GBKUTa"), .value = IOV("qUSDNwqgpdiuZRfCyDAIDBOeytLssj"), }, - { .name = IOV("EObDNsooDsRTEjmZ"), .value = IOV("SqnDLoWYCafYUBlN"), }, - { .name = IOV("uQcbIsjNmRROvmXEJ"), .value = IOV("TiNBrrkLNYwvRvVhMFNmlaoqywdJAnpMIjyEWBrsCcDAfBUJAXixGQdlBQo"), }, - { .name = IOV("KWeDyNDkBgHeHKstD"), .value = IOV("biaagrUpKTmKaVSZAonHMmYNLtqeCqhmJUr"), }, - { .name = IOV("GqMwhAmZ"), .value = IOV("lcBAgEHaaoViEYxdtYVAyvWA"), }, - { .name = IOV("WNkNF"), .value = IOV("EMPbsUg"), }, - { .name = IOV("SPFijmMLbd"), .value = IOV("jOuVVdTMOWnNhqOdDSCuQRFraynFkaVEPARxjLhreJIuWkwE"), }, - { .name = IOV("Wshx"), .value = IOV("bRYjMQ"), }, - { .name = IOV("XdYPJ"), .value = IOV("eftLfZdqjblTNir"), }, - { .name = IOV("xskGXZZbeeqEVaGYHXXH"), .value = IOV("KpBSWyJOUDOzJbIezhMZokWpLWLxWAMROUeOVxcZhLPrPuMzHuMGTWEtD"), }, - { .name = IOV("oc"), .value = IOV("LFk"), }, - { .name = IOV("OeyeOoVHRgrgUuMN"), .value = IOV("YrpRZvrQxkzKibprkfFWvXfVkrOSigmgzXlxfwlBUKKZOLKqYmtVbCxnKG"), }, - { .name = IOV("uTTSNuSNy"), .value = IOV("bjPCigYDmaOkejxiejSDqbrVOSWQNosUyfDxi"), }, - { .name = IOV("MGqWvjlgxokjFd"), .value = IOV("LVPHwvLtrshIUotgAXbBLTNTSBtmUSYkgUAUxsSj"), }, - { .name = IOV("VdoZFjjvGT"), .value = IOV("GpEWdTLesTjDFXtMuRKbbdQNzyttoqnICFsfUHgetbaWqfnShMouIyKkQtibjmKLm"), }, - { .name = IOV("ENbtGPDrMYueqByd"), .value = IOV("UkdZjNnzCHjpIvLWsYBOOIdYJgxCMztMqxJowqLHklVgUNsruijmOLHBxdmNfWrjAGYYH"), }, - { .name = IOV("YFCUhEFkeTHYAVDl"), .value = IOV("fnBNburQzHKUnXGicaEkQYJMeeYYdtvmj"), }, - { .name = IOV("UCgVjgppdbMTZtmK"), .value = IOV("bUyNilBkGjHtzjGnjpLIDhhBBkjNgcGHpFdoXDABHDOoisrHLKGXPGpuE"), }, - { .name = IOV("GcRvoIYJSUldDktghjr"), .value = IOV("UpgKsRcWklQnxkAslyOHJTWnuXNCegUQKpCyogywtxpJTnAEfBTKtNojAIWKkfHipMHyucEXB"), }, - { .name = IOV("dctrwuNGeOxDFz"), .value = IOV("EoqtL"), }, - { .name = IOV("kJ"), .value = IOV("NsIHLIGT"), }, - { .name = IOV("mpxLvQwbmK"), .value = IOV("lxVVetpmkeMQYaAXYPoYhRrqBnSUMYqpQlVIUxkEecVFw"), }, - { .name = IOV("IxGdGNqqptlU"), .value = IOV("SWGEoIXrcecFsxPnluCpLaxnklNsKVGrouuNcpmJgwIxaRBRaNQGsgNxjONmfakelWeBAzO"), }, - { .name = IOV("z"), .value = IOV("QxcJnZ"), }, - { .name = IOV("WQgwtzCJHwbDs"), .value = IOV("TdrTZZSfJRQavrXrzO"), }, - { .name = IOV("pnoUzMDssckxqdAC"), .value = IOV("CoaTXByEdqLJp"), }, - { .name = IOV("OuebUaDwKpjt"), .value = IOV("ggWJeAAEqEYXuWC"), }, - { .name = IOV("HDsp"), .value = IOV("wPrKoKyvNJejMfawlXyjugAFwdPRbvZ"), }, - { .name = IOV("nfNPXqQlcRlfkyKN"), .value = IOV("UePsJdhgbSlmdkcCiFzRtmkoAycNWcyolTTdvopviVKqLentfealgQPzDcLhqlE"), }, - { .name = IOV("PjKVobdEVLLqCcTqE"), .value = IOV("ghXuzujFvuvPaQpeZkRMrqxk"), }, - { .name = IOV("NRgVZt"), .value = IOV("jtCeekXeVbpSiibSCbIsvSOX"), }, - { .name = IOV("C"), .value = IOV("HJNuvrlINrNScUpzuyRljhfaLUtpNDotKUiICC"), }, - { .name = IOV("j"), .value = IOV("CkhCVyLNhaeWpxqMLWwCHFXSuakJfAswaNKRdIhQoaEbDQmsoSkFgjXVagWMOAQxLsBoBMQjsAT"), }, - { .name = IOV("iqRfEwYjXYL"), .value = IOV("fFdAAFbNqrQWCGJRMJtcBeskNcKWtcP"), }, - { .name = IOV("nKqPh"), .value = IOV("zsdXZAzJQXVAkoKcdCuPMWLoJATHXJFfYMddtVmL"), }, - { .name = IOV("wgdw"), .value = IOV("LGEnARCCGbLbNhbJUEb"), }, - { .name = IOV("AbhLRFm"), .value = IOV("KsDVNzcfnmOQZQzQaEIpNOUIRHUTPRotHfdqjBbxdogJdtKJNjICf"), }, - { .name = IOV("jdMpofSBNWgLaFzn"), .value = IOV("dKDRVzbcEhIDzcWtTXtSFyifUnDrApZanPCgWgWeYlRLkOSht"), }, - { .name = IOV("uZnoEggVo"), .value = IOV("oZYRDKbWjYAwlPDpwdgEVMcFbfADOKJlldrXINfwAaKSdsRHnxAfRVEJyNuNx"), }, - { .name = IOV("UXStZ"), .value = IOV("WgiUZftHgcxTFScpUeewTrVTDpgKmKhtmMgrMHKfzHO"), }, - { .name = IOV("ZzDZoSIm"), .value = IOV("zwFqZtvGUEeuaUCpyGiqCeZsjIbbeTUGkvjSKCGi"), }, - { .name = IOV("gIFgUQDi"), .value = IOV("ZyVYPaWqGTLSsMrZiPLFtfCUhiVTsZNZYtJrIJYGCCfrvGShKdOwxbveZoOXFLvO"), }, - { .name = IOV("NzyHduTHgHfhY"), .value = IOV("PfVgwTHjuuOIWhAjRMJfRYggUCOdTlFFESyGXfjpsufj"), }, - { .name = IOV("DzxCpcCAEqnutpKAsg"), .value = IOV("BZnxUxwzFkxlUgKnBjRuXimuKJyUtsoj"), }, - { .name = IOV("vNuf"), .value = IOV("pBzzTkgIYyegzRYSnUgJVJxHuUcbPWGwlgoneYLpXJRQreaXWMJIvlHdqkhmQOCXOn"), }, - { .name = IOV("DasOVFMxrvhJC"), .value = IOV("EGdjjxDTuVPfvbvuMAYhdGSCEIS"), }, - { .name = IOV("JhrKlSpCZtA"), .value = IOV("ZxkYbDMmrFAZiQOHbYvgKagevSpHszbRJUBJpKZeaabaiPdnXitQXNvPkkTNqcahGlEA"), }, - { .name = IOV("exJlTLxqhVoBVYO"), .value = IOV("ugaxIuaMexQTeoFKcOKjQvBsfnmtTNdZcsjDRFQAWvPgnvImEltNkCpQLgDkhAXNHPNZjJkwm"), }, - { .name = IOV("CYNu"), .value = IOV("OgNCIazL"), }, - { .name = IOV("ggVmxtWD"), .value = IOV("TpFSutvC"), }, - { .name = IOV("aTKO"), .value = IOV("zPvxvNmDQIch"), }, - { .name = IOV("jsVsLnSEhFfyTprVbiA"), .value = IOV("UGVaWvVavrvwtLTidJPqTChCnAkcSsdVBCoVtLsiubXtztpaDLrch"), }, - { .name = IOV("ZW"), .value = IOV("ukVOJXywIgbtOYNlicXfbejHkfvfaLXKqLpXCErKcs"), }, - { .name = IOV("HxxZSq"), .value = IOV("FgrAQYNsEwNUrZGLdYowhNNhoqBSRfLqtfpoeNAKylpULSfVtmcEu"), }, - { .name = IOV("lLFAIoL"), .value = IOV("kbR"), }, - { .name = IOV("wf"), .value = IOV("CkeEZPpZUOpeBRMjEEiJIfttafWxzLgLuQLdzOqLztqWdhRZiHOFf"), }, - { .name = IOV("F"), .value = IOV("RZdwadAEtjTKYlhpORtxFPEgCiH"), }, - { .name = IOV("RnMEYxaBFL"), .value = IOV("SAVDnmfoEKpazdwFcoLQsCDUlpfIobBOtN"), }, - { .name = IOV("ImijnVro"), .value = IOV("Ihe"), }, - { .name = IOV("zFzrXDvtOsPsGF"), .value = IOV("MDMefwwUUXOAbsxoyGmHYPWYUHjm"), }, - { .name = IOV("vyJBwWzhG"), .value = IOV("MiQjnjyOArglhBVFGBGCLka"), }, - { .name = IOV("UdueRgIMratj"), .value = IOV("aYGgJgoBIMX"), }, - { .name = IOV("fShcpuxdTnE"), .value = IOV("JXz"), }, - { .name = IOV("DN"), .value = IOV("txhdvtgpriuETLXVkqIhaEGEBtvkuClLylwVsHTSDCNDtKXQZKirRIjajJnvJsFkFmmWxk"), }, - { .name = IOV("H"), .value = IOV("uxZmNxqiDsHyUOMwtpAlb"), }, - { .name = IOV("bGjJlITt"), .value = IOV("IblGPBgEbtZdXxtutHrrZrIBPiuoPnxUha"), }, - { .name = IOV("ljufYJXdmM"), .value = IOV("RleuyOXWJgVrgHgW"), }, - { .name = IOV("qfDUmtaPDTRDtHpyEt"), .value = IOV("pNkYwRLCCYvEcZDaVvU"), }, - { .name = IOV("rgKSpesCtclpYGwAOIq"), .value = IOV("QvdRDdNzXnkxCKbyvNvJvifpq"), }, - { .name = IOV("UoZoAn"), .value = IOV("cQOZkBtZDZddStaWEvXiJzweRMqWUIrYnxvnpuU"), }, - { .name = IOV("BNxOyzqIcBZfHCVygn"), .value = IOV("aDZJufOaFgcWGrs"), }, - { .name = IOV("BzKMskIAjQgAtRTQiKd"), .value = IOV("robgBQqFzvWISKjvjPRosJaxHLnxgfIVba"), }, - { .name = IOV("mMpJEBClCSPk"), .value = IOV("ZglOFlwWtBeUduVCEEiSoenuEZRZcxJgvNrYEvXbRJ"), }, - { .name = IOV("fIztBPqjzaHiW"), .value = IOV("JOPiKwhkOxeqtRoFatfizQVIYqjfsPBtunXGQLpWgGIrzB"), }, - { .name = IOV("J"), .value = IOV("NEcuiSaWyuASUjLTblCtAzKeLKpHVZBAtNQWIklHOUMiEgjdnONZVmoCdJSGvWlGi"), }, - { .name = IOV("IvoWIUlPiO"), .value = IOV("RQSAXfXKSQxKToYEXnegwcndKApJIShfMCfqkLzmOWhv"), }, - { .name = IOV("eJEETcO"), .value = IOV("TnJBaLSMZoLElpkCaMbhrTdqyPCizPLkve"), }, - { .name = IOV("pAoheZAjxmjyOtYGUg"), .value = IOV("eBUdHCpIfhnPjA"), }, - { .name = IOV("uNeFSTrB"), .value = IOV("RmefUxjlVBqjrfzGjWCahKggql"), }, - { .name = IOV("MFXcTAiH"), .value = IOV("YNBINbCljlDCDzGBdvVnYDOxpJOmdJfFtfwMvByUMdqGPSPhMCUmWwwuWUVuXnA"), }, - { .name = IOV("lGYgGlDgRUjEiroVrZ"), .value = IOV("vsjmnHFkIOdhfNewNPQbTohptBAuHIoFjBPAtdhejewpmheMOaRDvVZHuStwMxblsHGUWLaARQ"), }, - { .name = IOV("zrFqLAE"), .value = IOV("VYebPzJNBCeqtQdQBURDvoOr"), }, - { .name = IOV("wKNQEFOSEiVvqYY"), .value = IOV("TCWMtPIHxDzppRIGsxcKxIeJTVyjKWiZWvAHfD"), }, - { .name = IOV("aLEzOvdMBmiNPbw"), .value = IOV("pmaJGwvuGIwCAFdFoQNC"), }, - { .name = IOV("AysgNWHCJ"), .value = IOV("tBoDKbTBEQlEfQXQUUjydCxyXvgegcznJaanTUvoVFikUZycxhiTIiESknoQxOpmorw"), }, - { .name = IOV("HAJcvRL"), .value = IOV("UUmvQSdLcoxjkxGmHA"), }, - { .name = IOV("hCQ"), .value = IOV("qwJ"), }, - { .name = IOV("c"), .value = IOV("LFyvctGpXiorewVLtUQXTAyBsKVRRptQIbZK"), }, - { .name = IOV("WTOyOyqnjNYq"), .value = IOV("EFjXjTSPe"), }, - { .name = IOV("XE"), .value = IOV("sSawXbGzWdGdKIDKTbAKUySskNHwTOhpKAYHZDEBLRKUoJW"), }, - { .name = IOV("LMUdgjojgjCv"), .value = IOV("YCIuARdfnGGMSuwhWonmRhrTTtxzKgPQtjaPLixPVrD"), }, - { .name = IOV("YCOGEnOiwfbvesdO"), .value = IOV("ghjtwlVHZCJEpqQrCe"), }, - { .name = IOV("ihisC"), .value = IOV("jeqhODBQmVJoxhSYoaYLKSZmekFeqN"), }, - { .name = IOV("eyDqYL"), .value = IOV("VLFzdGasYcfHrRgsdIbecqZdFMaSwrcRjTiuIJHaBCUHqibxdkLBLXXJggBD"), }, - { .name = IOV("C"), .value = IOV("qQvOGWOQEiNSduAtotFEGhdBXfVVBYzcobUjAhTGeSVeFbILJzCyF"), }, - { .name = IOV("vPk"), .value = IOV("ydhbLVgSBURDLBQAMgwIYIgKpJuBKFkZsLHMVppMhzpfMMjrpeHlFFZZyM"), }, - { .name = IOV("noTzNMyPle"), .value = IOV("SEeYAIpzUTzVkHGShoUpCKGJGBOtiQBfyBVuhdaYcLNfwPQoRPxPRYDaShgIkHoufbTCF"), }, - { .name = IOV("eLNEEKvqfNbj"), .value = IOV("nXcJvNMVSnZOGYJrgWYSPw"), }, - { .name = IOV("idzWpJE"), .value = IOV("nNi"), }, - { .name = IOV("LLpQVHLbIrsSGmo"), .value = IOV("KCbIkUZIqldLllLgOEstkgbyZoNjnXocRcAzJnNcSJpQjKwlijKgNKnQCUQIE"), }, - { .name = IOV("qxgqNSjrgvrSvlZX"), .value = IOV("xFoifZzJSNDyMByacchwxsKLUIGkoGYMeYeGhlOttVaZdkNkpVr"), }, - { .name = IOV("pQ"), .value = IOV("JnxOFcGYEtVleWHgVqNTpbpjbRAFhiBJpLHEzSNXMHMGJNHihVFWcfudazhC"), }, - { .name = IOV("ScyfYh"), .value = IOV("ZwGVKlKzoUnOxdKJfdSrkaPJCImiAJAvQAFRAhDkmgVXUAjRLpOXuGbWcORRJvdKvrKZUQTrSaqZZc"), }, - { .name = IOV("bdBYNYavRDmXI"), .value = IOV("AfVDI"), }, - { .name = IOV("HshAciI"), .value = IOV("DyKbOuZwBRbSuPlqhheMXXVzadbcvDwQiqUsmZpVlNfSKdPucmhhDzHIwEoqNFVdge"), }, - { .name = IOV("yqvPugagbkR"), .value = IOV("dyeMhExsbWsOKjTXEpDioHPqmYSogWZEkqiulAtzKlioNmVd"), }, - { .name = IOV("qWKqsfGhOxDIUS"), .value = IOV("PyWJxBURcFpmy"), }, - { .name = IOV("HKHXMralA"), .value = IOV("iDpEoFmJMngdlRfbZH"), }, - { .name = IOV("WepOGxlijMF"), .value = IOV("yxvHIsJczJasZHtdGGRsgLtGOwSECm"), }, - { .name = IOV("MJYnrsoEYLhthQaQf"), .value = IOV("HgiMtnFOcnWRPLEEbcPzKgwIcsGWNWvBgCFzyEtejh"), }, - { .name = IOV("acctsbpnjPCg"), .value = IOV("PsCrnHCgbCiBbVGFJLvQmICspDNLHcFPuJdHrgjznxGHrFh"), }, - { .name = IOV("Yw"), .value = IOV("ZIZovKeidMPqFqbTSBBSQsOWWfPJoWAsJHsYRqSPFacrZBMWUcgPDDEQmdwmWlLGFr"), }, - { .name = IOV("dWORdQsOXbQ"), .value = IOV("HvBPVrRGXxXiJXSMzlgqyNJcFPNkyskXwuLKyeYCPMXzfidOzHszGwWgMnUZTpohRzMBKzRYUzrIhjMj"), }, - { .name = IOV("J"), .value = IOV("wQCfRlxxaLLJycdvTgWJEeiP"), }, - { .name = IOV("dUStITvcvuQpCqSm"), .value = IOV("drtcUYrGoxeWeRLJc"), }, - { .name = IOV("AVpElljSiCeVds"), .value = IOV("TSdMXJyutihUVoYZsxTKEvBarQJhNmZbYCKxxCdHprpaFb"), }, - { .name = IOV("CuFEpVYSysOA"), .value = IOV("fJepwEtaCxxUBPzUBBeeOMFQHtRONjTvMkSyukwdfoGEudkdqnUTgNzQdVlhUkZgHvMDq"), }, - { .name = IOV("wMbOp"), .value = IOV("fUlhsIgnaBYOcuMBFfWPHEDRmwRahciuDJPExktuzArdP"), }, - { .name = IOV("lmae"), .value = IOV("DgDuR"), }, - { .name = IOV("hRGzWjvkJrv"), .value = IOV("vlqsEqWbxLnXpvdRouoeqouVvAhWcGpFWafQLaKJgORZIV"), }, - { .name = IOV("nXscdlcmWiFnizMiF"), .value = IOV("hxainAPtQzzxqQdDZUUvkWPeaCDigrvvKFgpcwnXCExXplFTtcdHgMnJaVqOHuQNGTwSrdHWXEkjV"), }, - { .name = IOV("UCNX"), .value = IOV("NxcNcKXG"), }, - { .name = IOV("A"), .value = IOV("pmhnFXVPdigEbDFxTXtQzIGDYEPbNBcCVbRQqzQh"), }, - { .name = IOV("pG"), .value = IOV("pckNITfEZQaYJjxGDJOWTHWiWpBcy"), }, - { .name = IOV("pPlMyyjzqKdiDtIEKk"), .value = IOV("LkqiqkIAEVkraXlxRnbDwhtAWUxrTDnIOkLpPdGXqWlQVDGslnbIShKyauPMXppNWjHGJwwrOcWlnV"), }, - { .name = IOV("kiJfpzxuVrurfxRNcK"), .value = IOV("faqDCGcsyRBamWZJkv"), }, - { .name = IOV("PmvaogH"), .value = IOV("fFAOPvVaPwlIAEaLotNvU"), }, - { .name = IOV("KrNMTnTA"), .value = IOV("HIDonRNMcstkttGhZOjFjomJXUzEcNbzAafdZfUSTMlrQrOKHJyOBHNatFpb"), }, - { .name = IOV("AwDhlB"), .value = IOV("tRnIfzeGtybnZONYPRLQfpqXPPDNuPnACewsMzPNettEFXaLEuJEKFTvyFSmaNIiQWWUh"), }, - { .name = IOV("iDMHHyNCYGV"), .value = IOV("WzEbuHYmxohemBqEsypqbNhKLTyfWloEKQlSiudvmKf"), }, - { .name = IOV("X"), .value = IOV("oUVmPhavLTreNQQTWhsGfCAamSpDPOQNKEiJhHpnmjgRBzV"), }, - { .name = IOV("kOpsfUEUbOBqeFRxZu"), .value = IOV("eGibuGvysLjcKyXJInQyZxpOiQHAzMEWFLHCLpvzWYpcYGdqNrRuVhNFTQeB"), }, - { .name = IOV("WmIY"), .value = IOV("GxatmOZzsUPFtSkxuO"), }, - { .name = IOV("nfQQlbyptZMtdthkN"), .value = IOV("stzhMbtpspuLrWJqwnsAShepNBqlNJMpsChvhCQouJvCBaVdJbuWShGYRFTlzumMZSqhbXTdeK"), }, - { .name = IOV("JuGfoBh"), .value = IOV("dDMLcJnQVDpOFfSQzgDrLcuGRvEvzWFkAnWdNsbWn"), }, - { .name = IOV("bIaCraZTm"), .value = IOV("LDhdjbjkDAjhGkCWxFsaXBuTyiKZLsahGJSnLnAXSyHvBrWhdhQjNz"), }, - { .name = IOV("zUpAAxcS"), .value = IOV("YJcNnbtVUeZGzdiLcuFVWuzObVKclpegGqnk"), }, - { .name = IOV("CajzNmvASKQrC"), .value = IOV("ryTjZUemEkbgMvxsUskCPWhLMVSGKddunolUfTUvexx"), }, - { .name = IOV("lBoxjnduXwwUwibCyrG"), .value = IOV("BrlkqMfxdqpAgrwLSfUBguGpLSrkNbPBcQdzYllHaMQISmf"), }, - { .name = IOV("Ah"), .value = IOV("ybJROFkzVfljMcTiGXCdWnZmgjLCvBmAeilxaYXyvUznimPLaSWjl"), }, - { .name = IOV("rNouOIYlYzQkBwf"), .value = IOV("nNIyBPpfEtC"), }, - { .name = IOV("sYTMarmAY"), .value = IOV("ZtVdirrIfGRGotigYVXNrTlZKQySAwmAoikkdaNW"), }, - { .name = IOV("UFbKNPvgQNWzwCAD"), .value = IOV("bTiahvHz"), }, - { .name = IOV("gCCcHn"), .value = IOV("CiSgpULwaXrfkVGpJhaCoIpTTSlFKQmpsOBkhsUeNNUNpKYWtzKgqHvowTzRIPAWtjXplXUZmKFqc"), }, - { .name = IOV("IspeltNlrLGse"), .value = IOV("lflvmaQIcsFfPmstMKkLunUfYgcXugJhaFLtSDjphQIxyXMReIUkBoKpwoVcWo"), }, - { .name = IOV("vdPEcgoWrTgzZmL"), .value = IOV("eXdNisjsnGgMHCejxcTbAWnlNpMinjlNLs"), }, - { .name = IOV("ESPBjjOlby"), .value = IOV("ofmEIdXeEZqiNALRpZHNQwNQLMhTRsAkZSkqqJmDP"), }, - { .name = IOV("nxVRWUL"), .value = IOV("iupc"), }, - { .name = IOV("vLkAnGbjITsS"), .value = IOV("lyFJZReVIuXtRbieMVhDdcagVQqvXFPHGzpzhcPApAZcRImfCmlnQdoGLuhugjAQ"), }, - { .name = IOV("FueQoti"), .value = IOV("sIwPedxRRoRFsMHnNahhlAACkJfFrSlvIOzgOKgxLdvA"), }, - { .name = IOV("WhPLB"), .value = IOV("wwoMXQwRTQFlhBAiKIcVZcVNISSTUyODruCOfYaTlKxAvtBdjTmjPTJLGvHMyHthebtQSbBvdvPJCuyS"), }, - { .name = IOV("rhWdlYvWSSoXmIJ"), .value = IOV("nzCljpLmPzBbsaOgVPZdcFqXfQBbbphgueJlBmAIa"), }, - { .name = IOV("oTq"), .value = IOV("VnSqPyROJiKOdPxUhHOOxqEXQYhkopSfCifueOQlAujYpivYmn"), }, - { .name = IOV("mC"), .value = IOV("ZTTWnfDoKjmufpiXNKOMJbwwZRupNHYyCdGJjfpPAxeGXTjZIlGxoxlbWSIqtZMOshlDJxqgaAIeyAYU"), }, - { .name = IOV("qqLwDRsKZSWiiGDRgb"), .value = IOV("zdOkFEdT"), }, - { .name = IOV("EkRddioJAOOEkO"), .value = IOV("bzbLXJhbCBD"), }, - { .name = IOV("jOkhtCatLhpl"), .value = IOV("GtyjXjrlIEf"), }, - { .name = IOV("nzpL"), .value = IOV("VcFfBHXFYvzQJglEFSimqMfSjJ"), }, - { .name = IOV("k"), .value = IOV("ocIWxOWZcAjivyYXEEzJhwkSHzqzuazQkrczSNnDIPPrwalnUqqDGlaMYvkjqqBsFGYcanaQXLLHbka"), }, - { .name = IOV("XhuPZexO"), .value = IOV("oU"), }, - { .name = IOV("XurW"), .value = IOV("LrJsfLkwKprxKX"), }, - { .name = IOV("qhJppUer"), .value = IOV("NseSfeBTHwhgjZrpzvnpQiugdUKsFfArWcLAULtyonj"), }, - { .name = IOV("FD"), .value = IOV("mfXFXFlzAcMvVCXUsVbpupuCSqcLimdeJgDQkjLndBDFgaUhoayXxwycafqzf"), }, - { .name = IOV("rCbjJJ"), .value = IOV("IDjMnBAQHAQhttdGWbnXNuxNnrbrRVZuGNgRnhJhqIWWUIDPWbNdlsBlshr"), }, - { .name = IOV("MTccVQXKxtkS"), .value = IOV("RiEOHrIRyUayuwdJyQQoxaGQsyPkAfYNUblBIAcUrlxKGyeaUzXlDAHPSqowUPapVABolQlBzKESqHiZ"), }, - { .name = IOV("YrvzEiavrjDYJy"), .value = IOV("uyjJmOLxvJARLORzeXbbbziKnkgxSMbwEMGoQ"), }, - { .name = IOV("zRPol"), .value = IOV("b"), }, - { .name = IOV("HOUfjEALityUmE"), .value = IOV("LfKrQMkimRmhyOLfGVYgFXynYuxYYlvxFkVRobyWRrAYuvUyIYjGowASdzkg"), }, - { .name = IOV("aJYonVYGHT"), .value = IOV("RNvkKFW"), }, - { .name = IOV("dimEtsStEVcEbQD"), .value = IOV("BsDuDJbJvduqcWBAwMAPbMkbEREhPpu"), }, - { .name = IOV("leUoMiqdeVorqJ"), .value = IOV("RAHppplpOFcUTumnPcWKFLBdEeHXCvGSRedyvBsZORSOZK"), }, - { .name = IOV("qNRjJUC"), .value = IOV("DbDciKuxVhHlsNCOiBGURPeLcJdjFzDnwbNIenatyqGKQtT"), }, - { .name = IOV("ddORDj"), .value = IOV("skoPpRAvWKzgWLcznWnUpCaWXRFbmgaeCZfSAqeSiIBHrqNy"), }, - { .name = IOV("x"), .value = IOV("Wig"), }, - { .name = IOV("OYCqhnbMkOcKuT"), .value = IOV("RGfeMQTyiBBfnxuYTATZekxsxfuBaHbLZNliDbzwpNdIfXQnhnSTwepSZLMyDlrAhJUI"), }, - { .name = IOV("VRyQG"), .value = IOV("WFvrIsNLtExOVlXcYvfALoAANGrHvpbaCGj"), }, - { .name = IOV("mApGDgcf"), .value = IOV("VIJWujJbUwodWhjttjMnoSRKKHOkwDeYhEskxowUBxOvnAxFfnGPYtwEroXkFIIHTbBHWWJiGbdRJ"), }, - { .name = IOV("FfGuOhkmQK"), .value = IOV("gKMczcBxwmrYOthmmwjJwskPCKIoAGqXKYyJHbWuhL"), }, - { .name = IOV("jGrDN"), .value = IOV("XeNugcEXsSD"), }, - { .name = IOV("YfNgtJtwObbfYijE"), .value = IOV("QnrByyRuVnwUSJXCxDzJOfwiqJulniYKroiNtOSKDQQyztDctzH"), }, - { .name = IOV("mMIPBLttAF"), .value = IOV("UWPKnyDnvQHDUmkYtWtFuOvHSnbHhgDaVqFsVNNvGRlagFVBhMp"), }, - { .name = IOV("KzdHpdPsfZG"), .value = IOV("NMvMAYwx"), }, - { .name = IOV("WzTIftsqD"), .value = IOV("ZJrMnISDWQpGdoQTInkBgyoCYJCxISLbmsdzwSVXQtUyyKAtHNnFTssPU"), }, - { .name = IOV("rCW"), .value = IOV("PHFNZkZgBcxS"), }, - { .name = IOV("VxpxvWimMQbJwoQ"), .value = IOV("RMEFRyyvlEMwOhcHCvTAmKlwtxKrMURlrGNzdLjvUUhelLOEMjpJreOxqkpndDUisft"), }, - { .name = IOV("yfRCgi"), .value = IOV("xJOXNrqVpLiiNPLVSxM"), }, - { .name = IOV("bWjgkvRkMmOW"), .value = IOV("dZIlfMZqiIMpAjLPeiENTMBzktEjrarpawuOLIcoKgHDUeIbxH"), }, - { .name = IOV("dKVQwxb"), .value = IOV("UTHiEGafof"), }, - { .name = IOV("gzlF"), .value = IOV("PmiNTRhbOkIuovBhPT"), }, - { .name = IOV("fXSEhRF"), .value = IOV("BzKPlegrAlWVtLseXlElbtktJvSUzoYGGYeKdwkzGjgpqgOuwKMkzxElZlNqUpNvhFqZ"), }, - { .name = IOV("izQPTu"), .value = IOV("iZRmMODeJqgazEQrujQGFuThXXnUdlKtZyBVxPezFwTiwOXEDctefjhNkJRTQ"), }, - { .name = IOV("Y"), .value = IOV("vLvVGwnTwYErfwifryJEouJXLzzdKTOlrx"), }, - { .name = IOV("lPswTZszUFVSvaIokmSy"), .value = IOV("iuqsgqADBRqgAqIKtqyuBSMJNkQkIKEzjXFJzgMrToGTlENxoeldq"), }, - { .name = IOV("ecGgwhbA"), .value = IOV("ZWPKWnDMotACaLZpaQkYRpdBjmGtnoeqYCCxCBlhJixGnMxqcfjWomRfGh"), }, - { .name = IOV("gg"), .value = IOV("dkhYtGBFUxGZBGkpKVPWcAHYGUGYMfENfXAJL"), }, - { .name = IOV("bWZEQLJJgYIHHBgsmITa"), .value = IOV("dKARLsQvTOqdCFiqUZHiqZomJzMTWKYrxryxUUYzCjmCGfjeTyfuttcRrzOMViuZJzxKcagbXvPLRrfd"), }, - { .name = IOV("BXECwtbCQS"), .value = IOV("lBpDyfZXUwt"), }, - { .name = IOV("rSXSz"), .value = IOV("or"), }, - { .name = IOV("mmSR"), .value = IOV("EJZnGXRvuU"), }, - { .name = IOV("oNZXmbfCtBm"), .value = IOV("x"), }, - { .name = IOV("AAyh"), .value = IOV("GmZoqSXzOgRErlQURTiJQSzlWPAAoVhqyoSyxOQzWJdjdvypYXbTZyshyRWMq"), }, - { .name = IOV("eNDTickm"), .value = IOV("VXueNsUAMukeJSAQiQbXGwZsRSuFFrWQdeatlrNXAKZddsaZUmKjEJmUpDijfNsFs"), }, - { .name = IOV("Caz"), .value = IOV("xgUQkEkHsBZvYiXSEieZMPL"), }, - { .name = IOV("IiY"), .value = IOV("hBxNHnwqHLmJmOgOVrSuWylFHrKlejkJquCwxCmmzYaeZNpfeLxqDVUWoVhCOmMbDUDqX"), }, - { .name = IOV("M"), .value = IOV("ZuldxUKrnzrSFhjnNziUyRxppwPMhdUceXxzkHiCAvzSjFgXdvAXOakWWXnNaIzqClJqwUSkqtpaefE"), }, - { .name = IOV("gDEwWnovjDpkknNTpGP"), .value = IOV("UjKHttXSeUCLmENqbaHeJJQrQokIHTKtUOiMkTkzIjqBxbxwBrO"), }, - { .name = IOV("wAgJMmR"), .value = IOV("JPIfduFSvEtoEgWZnzjmnRszWev"), }, - { .name = IOV("VsLRFTUneXT"), .value = IOV("VBFbRfDbowzdZQuxQSOoheQdqBtsnDiJLGCnlLqmnrWmpmENAZnomaflOFxj"), }, - { .name = IOV("NHJykeCWLzds"), .value = IOV("JaczWoxXeclQNZaldwgVtxQJkTvUKUVTEqgJyCxgmhXZf"), }, - { .name = IOV("HQmQH"), .value = IOV("khGAoQzXBjhoAywHu"), }, - { .name = IOV("lLAjCMHd"), .value = IOV("eJspyxqXQehCwOxorjPYppbBsMedtcWmPokrIXIQAqjRBGc"), }, - { .name = IOV("BhkNOYFEijbVzB"), .value = IOV("PIeNAhw"), }, - { .name = IOV("thpnVdhfnotL"), .value = IOV("ZcRisLjVQHXUJYWCWgdpcTtbBopAhiCPRidAhGaDZtTFhMLUbecSPduUclKl"), }, - { .name = IOV("vGXbbBqWQJHHARHdWZqN"), .value = IOV("yHjKyYIkwvOJqoVgvAZgEXPldxLxJJg"), }, - { .name = IOV("iEaan"), .value = IOV("qGvqWG"), }, - { .name = IOV("oYxVcHVFDsh"), .value = IOV("ywsvARKdFJhrytTroTD"), }, - { .name = IOV("S"), .value = IOV("rhiwEGphmyyvEMZcVoZFHrMSntSHLyySkuvorHmAmAibSMNPBpapNMKPbNJMaZVtvrBzqJMK"), }, - { .name = IOV("WVsiVpu"), .value = IOV("bMxwtuDLgrDbZjDiqLjPjbXPDQJRaW"), }, - { .name = IOV("oaylUramVTrJFHsbgK"), .value = IOV("ALfBqEjqVvdYvORHqZGHEDrKActLJeZonAUjoLQFrbULMyuyhuXwBYzMIPGJtqNDdjqBGkXLyJBEOvjU"), }, - { .name = IOV("KVQYZgcaTRCgOIofEIA"), .value = IOV("qdah"), }, - { .name = IOV("CGR"), .value = IOV("mGUNbahONjsuZDBvgPnpjWOmiFNAMepjBQPowKRxAVrTCYyxpiIngGneihqyAewwKgocnG"), }, - { .name = IOV("cNFRLwtuxdasQkFg"), .value = IOV("EEdbCJHnCDMHkOfczOiwuCUOgMdNrRUJhlkdhYUwsgAfrlZcsvqIahtt"), }, - { .name = IOV("QWzmUc"), .value = IOV("FKXHlTzYKWBUsQnEsnjJAKSiZbeMdKadGtJMKNdvkKnZcp"), }, - { .name = IOV("pJDE"), .value = IOV("RGoQDPKWWRYPMIKZwgkbVobpfb"), }, - { .name = IOV("zwzERjDXdQvtyigR"), .value = IOV("uHKKUjcewGPvmqEwqZfNBna"), }, - { .name = IOV("yrLKx"), .value = IOV("ALmJeaADGWKYpIznTFyXpVQCvZ"), }, - { .name = IOV("eGKeEVnqekC"), .value = IOV("HZtHnwsXpkidkwrKRJWfSyDXcGbmlsnUmmHrTkDIlGpJhewEDd"), }, - { .name = IOV("CamM"), .value = IOV("USxhuKBkUpOkJYUTObSfCPoAATohj"), }, - { .name = IOV("yvkqRopCZvAByld"), .value = IOV("UyZrOcEOokSVfBwVmtpSWBtMkfefPUl"), }, - { .name = IOV("VSFsNEJteglYxzrF"), .value = IOV("MyusLITOgivANCLEiPkJiOqIlRLjmljsK"), }, - { .name = IOV("GXsrAjXZU"), .value = IOV("SeJTjGOotLxzgNfHpCzxDfDdPMRaKmtzbkLFzckKzdxPBWDOBEtRHfOkVlr"), }, - { .name = IOV("pZtG"), .value = IOV("oEEhQHvMHjhYzQMWfLqJdmPlrLUSjtewKRnXBjJZX"), }, - { .name = IOV("wVZMcNIFOCFDcl"), .value = IOV("zsWMQRFRTYZMUAIkVpKwNKAxBwQizUHQbihKlycIQHraoVTyEaTGufoKFBybHiuKLTWJqGLmtMpno"), }, - { .name = IOV("CX"), .value = IOV("tD"), }, - { .name = IOV("kpe"), .value = IOV("sWPJAuGDLDylkGCRtxBUDOIWwbgRLjJzsakcPlbmJIKDkKkcyoWstOQxECMYeUkMPUihwhAEWVxOYMrt"), }, - { .name = IOV("xsSCAXNjA"), .value = IOV("CtGwTOKjIwvYOKAHrcGTWAopIFOKSXombeiqKYVMnsXoxUwSiETKzEeyAXwICDUylveikjNiY"), }, - { .name = IOV("mnNaSiAVwP"), .value = IOV("pCEwwyCNledjTrdhmLKdKlQujwtjUSwhUvTXXawLAqYGTUcAXYCebkmtURewNEgkgnECavA"), }, - { .name = IOV("GJnFXod"), .value = IOV("gePwRHwPjdFshCyiSrFATJaeyWUGDZiWOyLdTWtCLhRZrVIeMnxcNHbfIXKMGxGhziMLOmFOOx"), }, - { .name = IOV("PldEFzt"), .value = IOV("qHGZTnydwRocoQwLqCjUqutPEXDrKQJYKAYtRccRvwbycYMaPtJVepbXW"), }, - { .name = IOV("VizNTZdQOhLffZ"), .value = IOV("TZCXsnWjAzaMBisHRP"), }, - { .name = IOV("CSWSNRpcK"), .value = IOV("EbBYJIVGeOhBKnrPktJpUMjMXvjtrupXPWGcARaAQrKDbonIFDnkfQVzyOIciV"), }, - { .name = IOV("aZakJQgY"), .value = IOV("PguUaypwgSnzOeDBxCrLbFJUdiaEtSGuZPLEYhLQImsWXUtJSAuVHVHORMbSfPlbeCYB"), }, - { .name = IOV("HnP"), .value = IOV("rtlcnehnmNiohHZOcqzvPEsEFmwhUDnZsnETLVcMSgLgYOUhMSzKsnRdHdiTzRfyYrJjHcBmd"), }, - { .name = IOV("eoNruyGMsXqBqtZk"), .value = IOV("TJAKRHqHMudabHFbtvtOqVPQdeofHdSsLYkSlPtKSkbbHRoXyHkUqnCFzQTJij"), }, - { .name = IOV("lXjE"), .value = IOV("nxbVsLxpYBtdahTGmhDiYKYhoSUgFtyUMNlrhoVrQmEiYmCY"), }, - { .name = IOV("owJusmWOGIran"), .value = IOV("GKWfsibDhCRjALTZUvZPqWwNdoKVQaNpOCcaHXBoNnbpPAMMfWRFAGQDEdqhNbTHMC"), }, - { .name = IOV("ZxvJGdMF"), .value = IOV("wLuhhDFSEh"), }, - { .name = IOV("lnTGehkmmlxtUJq"), .value = IOV("TP"), }, - { .name = IOV("JmAdmaCxxipfSHKhaM"), .value = IOV("QyccmPegAebmgJX"), }, - { .name = IOV("wyoxUTbEmEPMe"), .value = IOV("epCYUufmNSjfAKuzhpkiBRVyzrLplKaURrX"), }, - { .name = IOV("nxWDUlYkQGbtgAwOUT"), .value = IOV("aabsYzSjLabPgqldegwUodInrWShdSNmbcdZPKtOPJWQZUnCnRVXIWIlWqTXQXWYYdc"), }, - { .name = IOV("XzgoDY"), .value = IOV("BhFjHtIxniNVCMpLijhNyrrBuTaajtoBIwbVqtspxCVRYDePHtBEJKlNQjFjGknWP"), }, - { .name = IOV("r"), .value = IOV("uFcTzoRplEDOvRoAqNNidDtlRiKSwBBjXJCUpkbVixLfcVCwKeglgaeCaLjjxsCtxoKctUnZIlR"), }, - { .name = IOV("dyRTfLeE"), .value = IOV("OLGmUjRUSNxpnLLsXTHwimJgkHTrCfByWJpNhwadYpovPwrDK"), }, - { .name = IOV("wkFVMJdgcoxMbyWa"), .value = IOV("iRgsfHwfmUuMGVnqnnVYCksMUGRxRLrrKpREPE"), }, - { .name = IOV("zMncV"), .value = IOV("XrQmrSRRDyhGYkRkvGAFqzfXQJwDEIPmapVwsXTksNkkYaJLcXmznUZPOANLuDvkHBgm"), }, - { .name = IOV("HcmuaxRHBgVUqPHsVia"), .value = IOV("KDOdaUSxCSdGxfTuoWtAz"), }, - { .name = IOV("tTVorWDHrCOIxwaccxs"), .value = IOV("AuOrbEnBILGNQUxsCjJavVzYxOoFf"), }, - { .name = IOV("RGutGk"), .value = IOV("jPBSVzEZkFEInGwhCxlndmtfANkOYqcwZZL"), }, - { .name = IOV("VcjpesOHBUHW"), .value = IOV("UYHUSSArUVvdfwSWZdKnk"), }, - { .name = IOV("AQUSJIvth"), .value = IOV("EESdBQyuXxCOSVRDUBvKDmrCjntPljQdSDFNkUuuuWgp"), }, - { .name = IOV("cDUhhZFOxxEtiTJaThHH"), .value = IOV("GygDqxatidEkNOXVEXlSdBIHlibROXaCQADyrBedKsmzkyPUt"), }, - { .name = IOV("G"), .value = IOV("OqWhIKCLngFChmycWmdCzRCMdgodbUOsFzd"), }, - { .name = IOV("mWFrmsQgVZtD"), .value = IOV("NjOERflYsoxzuArGLBPfSIJYOntjolDQZGREzoyvrOZUY"), }, - { .name = IOV("BBVPAQMK"), .value = IOV("MntarEziVXMTWBmEsxDGWGoqIfJGkqPzmASMWIfidzNEJaVwoAhmzYzgedvNVywPqQpmOm"), }, - { .name = IOV("OZATuGpTkYjM"), .value = IOV("VZIgesH"), }, - { .name = IOV("c"), .value = IOV("ZjvCYRkkgGjAKgBfvOTRhXuewEJOlvvCGjrsCrwtYqvdiHVcTmYJIPjAYLITdiyaLGwfGHgfMUTiIF"), }, - { .name = IOV("cpDkWhSmWTCBHVNj"), .value = IOV("BjgnIcdlFBCyLpSiIkDVOWkusdfILYOtueIUPsZbHMpPVSUulWvvUjAKgwPRXLqJXYCzj"), }, - { .name = IOV("KRxhqmmwJNrJMO"), .value = IOV("ZoRlQMUCldYdcTVaeotxyyWbLYawJctFFoPIwHvbRbdHrEycWxYVcwSMFo"), }, - { .name = IOV("vipcyjTfyoyUdlXq"), .value = IOV("mAniVgJZgYDzBjwDPMJYizbjYUVqxpXT"), }, - { .name = IOV("kb"), .value = IOV("ZpXMDnMuRvEMALFVGWEHDc"), }, - { .name = IOV("IrW"), .value = IOV("BbjFSYOxBSOIBOfpugIyLapvZwIiOIyHklPCCSznSfGJWDlMeFZtMWNBZomCIeRapWCzHYDitvDYenF"), }, - { .name = IOV("K"), .value = IOV("HqkruZTmusuFqyJZYVMUXmGtwwvLa"), }, - { .name = IOV("rElnLzwk"), .value = IOV("jESxDCtgzjhMYWxSgdXnj"), }, - { .name = IOV("BMNLkcUKuHeINJRu"), .value = IOV("aBOfHOazNCIPbWBmjXKdkadjiqmoLTkYupYwXkPJoVMiLJoFVIJApSwso"), }, - { .name = IOV("h"), .value = IOV("VjuSpkquQwqqeHzgwdTgRGJTdLmUBxRimZezDqCiOwjJuJLIFHKxaANKoAKcYktLCe"), }, - { .name = IOV("LYZWfAkMuTcWbkFzsZh"), .value = IOV("zqeMAhGTgUfZCEzhxSpaIVVZREEuwwGQBPqZINhuDnbLhLjQqESaFPwdMPJjuwPZ"), }, - { .name = IOV("mvrwZtzKNzkIBAFEgn"), .value = IOV("HyCQwgaCbeyQPvbiLNTyGoOVpkyiyWxTTkAYofyBIWbdAyjWdr"), }, - { .name = IOV("fdkmIiapYcNmMGau"), .value = IOV("LeOqyqRdqRHPtuIMCoESZoVCOXwMsXvmRZRVnRcKbdTwXmEHimlOlPJy"), }, - { .name = IOV("XpfpHR"), .value = IOV("kAZuizfzQmWHRh"), }, - { .name = IOV("JBjnuWCRt"), .value = IOV("nvAyUhTXAiiZpnOmtJEmraUyeWvBgaiZdHCPqpnhKSOAJb"), }, - { .name = IOV("iOjQ"), .value = IOV("roBunISAlbKSwiDzDdmlAdVsfKVjvXZSjsATedybncIlQQcgpfpPyaMWNAtytaGwtMKLoXgIyD"), }, - { .name = IOV("lr"), .value = IOV("zTMW"), }, - { .name = IOV("zPtO"), .value = IOV("piRHYbBswKWcEqHLJzJFkthcPLLBPYdhHPpddyelkCgh"), }, - { .name = IOV("xxYhrhdHaRbeewQSf"), .value = IOV("VavmMrqqfViXqpeObIY"), }, - { .name = IOV("buacDBuuDVGLNPNUu"), .value = IOV("lUzSqzINQtNMXgeUfnoZUQJiRjvHLGWwJGLVylXauO"), }, - { .name = IOV("ICG"), .value = IOV("uBDanrxWJGdRRPCLhgrQBgljSkkhGgakjNjXrCkpkBE"), }, - { .name = IOV("DBhihmLNOLEHZQuw"), .value = IOV("gVCwQBDkmJgoOUqXnrlLDEWF"), }, - { .name = IOV("cwsOxFEYY"), .value = IOV("jssMsaiCzsSxqLblYMXDCFNYxWJdpnaWiEQCGFpIvwFWMdNCsBNOji"), }, - { .name = IOV("qmGFstulyCWr"), .value = IOV("JngxLXUunywDMItLmnZRBfIodOCHJGdNRFMANMoUXNNeDQxMIqSAQLhLfZhxMjOhpKu"), }, - { .name = IOV("YiEYejcP"), .value = IOV("NYiXnRkEp"), }, - { .name = IOV("bJwlzL"), .value = IOV("DXZGYHMXtKiqhCSGqpLx"), }, - { .name = IOV("nzsyMgaxPWes"), .value = IOV("MafUerbYcIhmrbpexjbMTmFMIeWHpspeUpPePJGfQWujNoZSxJgtwzAJaH"), }, - { .name = IOV("TcYsCZ"), .value = IOV("nZnywKudaQZ"), }, - { .name = IOV("PaLDCBjJQztWr"), .value = IOV("MGnTcyGfYuruAkSyVqoIQRTxItshmKOLgBBqdUTwEcKtgjbiFZ"), }, - { .name = IOV("wWPbZwmOpvtsJ"), .value = IOV("AkyfGtSLfVazzVNKJDrnQNiLuoKepRbwubfvQOvMLOUOBXuwlDTrPMkPvBvGifXBmozvxFbXxHku"), }, - { .name = IOV("wPpvkJsnguta"), .value = IOV("KGROfwttxGAitWtzlGTmyuNsxHZLbDLIwuAVjXhroTLaWrSEknAZhoQDqDTO"), }, - { .name = IOV("hsv"), .value = IOV("HjGeNESjmqSoMtmEqsCIKnoSBXnmmKWkWtJaLBguftcKVdYtQPYuMJdsxIaPcUpboSRoGOgaasw"), }, - { .name = IOV("oUUPIvhLNMUoikjBXF"), .value = IOV("LhVdATSXtLUSVPUEQcLWqOu"), }, - { .name = IOV("AoMOajrKPuGGC"), .value = IOV("EtpSd"), }, - { .name = IOV("NIVvvDlaadmsMKahQxN"), .value = IOV("SWmgqkqBMXTAmtkEhPbJMNZtLElNbXSZRKflj"), }, - { .name = IOV("SndYAGclI"), .value = IOV("FtNttJvL"), }, - { .name = IOV("ZvHWCDOXhwuOuej"), .value = IOV("EUsCziBAWNsxMRLZoSmvCyJNabEcLNEnSzHBGjgsnMPRcsdhZTppHBLJBjqa"), }, - { .name = IOV("JiXGLgeJBUDxEOJLxbr"), .value = IOV("F"), }, - { .name = IOV("VK"), .value = IOV("METfoykwqAerpnQUNscgHjrUVDcTRJVncOQbsYuBQ"), }, - { .name = IOV("jTkZmUFAzOuVb"), .value = IOV("qLxnMIJnOkuFGkyKPViWAtkKENgimj"), }, - { .name = IOV("IlGQMCReEBsalhLvpXK"), .value = IOV("KiMXSOdgIMoVqypcOivrYnJJUdfgzijtgpYpcIeOBoWEYPnjyZrBaHcJYEeTPrpnlvuXnkXolvjhfD"), }, - { .name = IOV("fd"), .value = IOV("ZWWnWjpVabWMlpjCHyUEsPmphgMvNINJNvlqVqoAjlB"), }, - { .name = IOV("QOLTRzsoFRfZwRQJIu"), .value = IOV("viVmCuprfQOtaODYxbjozCqatUiKXTDWfTLHjbWlUMFqkrgNltaDdgdeJIplyinthomJXpgivWEPOo"), }, - { .name = IOV("XqsjdmaIgzpmpmmfdn"), .value = IOV("lVkZUBoCPnNJqzurDADpIdmkKMsKdcjKLQVVFpTMkq"), }, - { .name = IOV("eKHmeLdzzbQKvr"), .value = IOV("dNwhIumHXuPjRHhBrEYfwDHDytxmWYeuYqaFJpLsmgSAuDpfXpVjLkGwSaRPYhoAewcFYxRLbIDDI"), }, - { .name = IOV("proc"), .value = IOV("IVtRNdeSGZnBMydBEwnYDmtGcHPSxrDzKvFxW"), }, - { .name = IOV("ISVYr"), .value = IOV("XnElflmxdPZGJpQiatCsvOjjBQIhhfbhijmnoMoJmbIqekid"), }, - { .name = IOV("Nv"), .value = IOV("BtDQQNLeRRNVVztGNlryCnCoP"), }, - { .name = IOV("KPkGdDwndR"), .value = IOV("fRi"), }, - { .name = IOV("dXymWc"), .value = IOV("toMa"), }, - { .name = IOV("VSwautIEIXjGM"), .value = IOV("vITCkPaLv"), }, - { .name = IOV("sagVHsip"), .value = IOV("WzmianlJ"), }, - { .name = IOV("YlLGplKuUu"), .value = IOV("hMBzWZYyvARfIkyUfEUTpCuBBkDOWKmhibTnBWclaRyhYNwTDBmoqdpf"), }, - { .name = IOV("PGdlAKIovHLUEPmjo"), .value = IOV("XLNpDRFqMAEugwMEgbOwkdAP"), }, - { .name = IOV("UhklvnXFvrerYtDrP"), .value = IOV("wDzDfzYvARyQEMPaLLwAGfwrnPzeOWSnrHK"), }, - { .name = IOV("mMlSqbpIvJE"), .value = IOV("jvkgAUgYRerlkdLPYRahauAVUzOQBKoSwCMQJjXfEITzbRJWaslNcAPRZYC"), }, - { .name = IOV("CDwZAyAAnJUMZKHdv"), .value = IOV("UkjkhiuvOOfcFSvuIxqLeUSOSctrHsAiFATEIhZXQerAoglsdvweRUsVZBMXErdH"), }, - { .name = IOV("bTrMTonFnMmViFVLCpvY"), .value = IOV("FwXvNUpTyWcpocTlZhLYEQRMSoYbLRrRGYl"), }, - { .name = IOV("PxnkSJ"), .value = IOV("DDKmUAVoRsTeNOIOhzLLJqfuGuBHGrMfRUsBLvrvipoIISetLVVAVnPudFJFFUY"), }, - { .name = IOV("BAz"), .value = IOV("AKlPJdvINNUrJjLtBqEdrdTtDkiOlxTYmFRLuyZkPqjqqPANMOhGeEhQzJWhhjxLIDezdDXWOYJRarH"), }, - { .name = IOV("jyhLMMUwNBlFOLvl"), .value = IOV("oGxdLjrCglMSQMghKGcKQvvQiYVMvKRksEXUHESv"), }, - { .name = IOV("NOAWcWpdUeLUz"), .value = IOV("grVxRXfqghoVktaaDgNLFxMiNnuJFuUxzlnCfgtzCkArDg"), }, - { .name = IOV("xCIezyOoHJ"), .value = IOV("RRKdqFFmojBQS"), }, - { .name = IOV("O"), .value = IOV("azDhwnXBrSwLdnGndHtbXlLBKhIPMWMgiaNylvFNrVlVmMnaTfSqACQucanKmJwMiEZMyp"), }, - { .name = IOV("SVnXqZuqZHe"), .value = IOV("RWaPifeZsDWNqqJwKRqwidnXruATXRXhxlqdeLJcuanXU"), }, - { .name = IOV("dYGVvrZTVTUSsqD"), .value = IOV("LqwvaWIzxNnVffBwIayNnIHJeSnQnXLSIibmIzgXSetKfLgulcZFnZcbegToofY"), }, - { .name = IOV("p"), .value = IOV("mNGtkISiTWwEWpseB"), }, - { .name = IOV("zoKJc"), .value = IOV("CtutRZ"), }, - { .name = IOV("KJARgLQLqkAPf"), .value = IOV("uqWOpIPsVGUBmJ"), }, - { .name = IOV("uUvbS"), .value = IOV("YSZhvBehXraHgXpOgyXdhAklqSmMLpUmBBiPPJNzDDzkEVVYScaAeWtDgkJFDRQhAqhhXfg"), }, - { .name = IOV("mUllQNoFrbYnlgYeF"), .value = IOV("FSPRKVbTCyjFgOwJkWSXDKugMhxCdRSTvZKFTUhGycFpGJQrObgUFMfqweBCwnhfOvKOhUc"), }, - { .name = IOV("FkKWNBsiqIKPfpx"), .value = IOV("AxrHzHpKnWxHeNuVQVyVgOoOKQfdFSrCVWBZNtAoOhjHDKKbKJRMojtIdSUJbrZCMptcyRsKzVQs"), }, - { .name = IOV("UUvsIOyLxO"), .value = IOV("DTWCpAmRDEucYwaWHYsGvCRhvxUtEFsqBhNDQjAy"), }, - { .name = IOV("WZv"), .value = IOV("kKpEChnbXgB"), }, - { .name = IOV("BITelbqbXWOEoC"), .value = IOV("HCKwfuUmUUoRcdRUPFwzCBUDxyRVTJTmyCdYxtHILiUYTxwUkijpRdx"), }, - { .name = IOV("Rtx"), .value = IOV("UeXUzUAvyMKLbYNVfgNjOJparGVtIRCboIQSN"), }, - { .name = IOV("NMQWjtvBuxlkvPJoRGyw"), .value = IOV("BRhOzGAHuUMIEfforqKySNaMOPrhWjqsSNVRdeRFoLUWISpfmumOfj"), }, - { .name = IOV("lhFVq"), .value = IOV("OQOwEUVrLpGBGSsKxohQTBqeEPzpuUuu"), }, - { .name = IOV("hZlDbxVXqOqUakPAPfaf"), .value = IOV("ejlbmMuOZKcPpptYLmCQuOgGZSmAcrYLZNvbnBfVOrpcsCPu"), }, - { .name = IOV("j"), .value = IOV("knDMrbLSRFqtstcGtpNjbHPyYsnYIGFmsjOFhjXHVRvCw"), }, - { .name = IOV("DEWZxpPgKiBlgGGyhb"), .value = IOV("CFCjjCXCUemZXLEuEvRGcMJIsWRYeBh"), }, - { .name = IOV("SoJdsNnzVg"), .value = IOV("YaElSsDtwMDeTtfFormCcgLaWnolicfQCPmZAiJNlsECgCEpzpGsEAJWpXNjV"), }, - { .name = IOV("KvHnnfWLOL"), .value = IOV("LeBwGwzBinrkVXRYkpOabydrZutzPbpTaeccXsHusXHQL"), }, - { .name = IOV("Qbvbi"), .value = IOV("oxlvGPchBGrngsjqltmrORJoidacmDLhUbZSuGQJZmBxiTqgLQKH"), }, - { .name = IOV("GdfgSVzB"), .value = IOV("aFsYamsONjFPHRgRzKGtlqYg"), }, - { .name = IOV("mzYh"), .value = IOV("TJxwUOxyKouyjLEmDRddGPCAmKcqGSFEQVRYdXGhUJNbzPziKUO"), }, - { .name = IOV("xzRnnycytbxykmWHI"), .value = IOV("ZxHcKhnMgMvFfKOzAsfmDpANePuXaefZXSlcpycpAqHZTcU"), }, - { .name = IOV("ARNSdsVWISeZBAEgauGH"), .value = IOV("UqjXPJDoAKJvIJbyjGQvtnKEbZdwzUMAUCtYzYhfEFFMKJgysYXTBoGlLwGGTtJEcDvbWHQyhGtdju"), }, - { .name = IOV("PVWGiivxOa"), .value = IOV("yHCVDBkMYTYGIEcxtNydMuzFPGFHtzPOAsUhhEGGwMYDHeCUDaBWJxXouZyZcHRiRimMdaWnNpqkkE"), }, - { .name = IOV("lIJccnQOuPsTBQlDwee"), .value = IOV("JybcbqoSKdCYQoAWbzjTGDALjtflHI"), }, - { .name = IOV("LINKjfZTmSu"), .value = IOV("uCGUvBTVOq"), }, - { .name = IOV("uIvAkYaMJQBx"), .value = IOV("nTQtQHLhxIXPlBlineUKqGZCPoMJOGTORVuhCwPhpwFeAsgDmRGgYtnlCY"), }, - { .name = IOV("JYwBVVqoEKV"), .value = IOV("mAYXBbFbqiIeFTLQIFwjpczXqlqzFGvTkCjQJFKIWqvpxTnrmQsvYCfPBXKUWgLc"), }, - { .name = IOV("XsGusyOwXDg"), .value = IOV("EJMwPcyS"), }, - { .name = IOV("MxzbG"), .value = IOV("fiBIAGsbMdNsMnwKfuSjZIRbjdajMqgTBvekHJtbhzDjFqmovTcEWzdSyGIILwg"), }, - { .name = IOV("sXJtuIQ"), .value = IOV("jCHHFKUMpFMgSyGIIGGMvahqfDVYeNBaGCKYIjNAQtGihZSXuCHgfEWIBrjUxinAaABZUeK"), }, - { .name = IOV("VugnjbOyCXmNsNc"), .value = IOV("BkHEkBAXAknYJLqmPYvRivjHtgscgiiZdbzvXWcqcgeTdvviSTvRQwzwd"), }, - { .name = IOV("mqBlNPWKoJMJYXalpLjX"), .value = IOV("CjsZfFojkHQMLwnpyoCZyhdrPNxfVkfgSshaQbVLiuCtBypDtvtESaYBOLdVIOdfqPDdz"), }, - { .name = IOV("NEQWqS"), .value = IOV("uefmpzEJaWOFrLwmItLnFUFhbblRUSkPsdsPghaFzYFTBlaBIR"), }, - { .name = IOV("gXoQfgikqsRWgPFGxQx"), .value = IOV("ArevoeffimBkdMmRjCI"), }, - { .name = IOV("dLqJPjFMRkAtitSlAfP"), .value = IOV("mheJ"), }, - { .name = IOV("spBnINHTMdKDoiNuJIa"), .value = IOV("RAiDhwPZoMsdJdLIotgxeVcRPsdUXChUqJc"), }, - { .name = IOV("QJGoRLFXyevEeiUrMVi"), .value = IOV("eqOopPbOLjwPhxummbOjFbcUvLRILhmBWAIrKUzyYqIwfEcMigvBxCAyoeDILIPxcYPtHOkn"), }, - { .name = IOV("WDBhbZB"), .value = IOV("xYSFWjvuVfjEkOksQqjVYUMPhPMVRoTJSxlcmfjRDnZCjkqPpHcSYggklYJRueCszNJBiVI"), }, - { .name = IOV("K"), .value = IOV("EywkAKURBYLcTlfybZrWNOTAAgUkPfcCksyBHUhdLDsFckYLqoP"), }, - { .name = IOV("hVbfiCHiGjjihwP"), .value = IOV("yzukzaYERMkisFRvlKnUbM"), }, - { .name = IOV("eTxOWCAklzswVQPiM"), .value = IOV("gFTCKUDPXDDJH"), }, - { .name = IOV("JMQbBhX"), .value = IOV("MXMKcNunmeCDDTIMINLZHcaaZorbICvHaVejqrLBofofGSGxurmKnofyPUQueJehEuJc"), }, - { .name = IOV("yWbsuaFa"), .value = IOV("VenMaJVnaejhj"), }, - { .name = IOV("OyvLVyTvgoSGNF"), .value = IOV("YKnGiDuUsFPBnvdomqpbWYJWKFBuzKQIFJdyVFBNMugMvKzIuTCXEUtTGEwxfNLPEPtazm"), }, - { .name = IOV("hlTYZDkPjKgf"), .value = IOV("PItKCJZBkFuMIkfzJDdBIiptztOaaZhLBYjxHrg"), }, - { .name = IOV("byRNmSHPhTP"), .value = IOV("gVdUevlSbyOFGIlzOKkMWDsGVsTpZkDZIOqRJsejkMBlNHcZImUJPFfIxSibMvQBdOkSrgGDfFNaYL"), }, - { .name = IOV("bChloopMTijyKNIJ"), .value = IOV("xyICeeoHIvbQLzSOzaxRyZTmWfuLUOpsTHTuuRlGjwJzyhsxAWYtUHbfFHAxfbAkpQPxJk"), }, - { .name = IOV("JWjvUImW"), .value = IOV("XvgMozSMcACZIXxjrLujJQjIzIOCAFqtJFefbIiGEwKlxRuGxvSoPX"), }, - { .name = IOV("TTRhe"), .value = IOV("lrLZPFnlnaXKmUCqqJGbCPxqWqOkFFamzxOUTLlAsBMUAhtJRAcKd"), }, - { .name = IOV("KMzS"), .value = IOV("dQCAcnYqhFYc"), }, - { .name = IOV("rgMdMSzPg"), .value = IOV("OFjmCypHsWCggKpGExougKa"), }, - { .name = IOV("Iibm"), .value = IOV("zCSDfVrjBUPmJXkJlE"), }, - { .name = IOV("flZrUPvUZwnqMdqliE"), .value = IOV("DXRnlbLASfnvTLVFZTZOvrLuSyAFIslgvKAQeLfURbSHtdIhHaxYdzBWNYvU"), }, - { .name = IOV("YqhsxCdbcjwKtbymFhOp"), .value = IOV("lngiCoqNTsNdrHrvpiryALTVqyfQ"), }, - { .name = IOV("TXbKwloTfwRRpMzvY"), .value = IOV("eOKEKljrhxuwfrjTBLKwlwQsRWBvx"), }, - { .name = IOV("MVI"), .value = IOV("CyLOutOHggNlRGJcOh"), }, - { .name = IOV("ktSJhg"), .value = IOV("aCIaNVRcsdvUwfomQzJUFodEnUXwKpvrosKRCwpEDQlLxsnpKPAhgmoOAjHPwA"), }, - { .name = IOV("SLVMihzvjHQBEDINFmn"), .value = IOV("SEzIZxvPffacXvjGFqDyljYPzJDWOSGsAJCjIWLgXXPzYkkQfuOSqHBtmCtOvLeDqI"), }, - { .name = IOV("EJnlRqkMS"), .value = IOV("nnZunKnllQZCXnQVieJtJtiObeqlHWhIPEMyoflvbclsSrmKaJDPFAWAiOzdgIWHrx"), }, - { .name = IOV("YJyxyfs"), .value = IOV("xCRvodpTcReUexrJvvJWNXkUccOHXhXjCeJERKNvu"), }, - { .name = IOV("KSpLwzdbgUmI"), .value = IOV("TjnAuiPdGcQZJXsLeIiHlUfSwOcOVDAARyknW"), }, - { .name = IOV("pudeFXMAxu"), .value = IOV("OYMGTOaFIURnuISuVpETopQFrRMWmAcCTd"), }, - { .name = IOV("JqOegXPAQiQdIHI"), .value = IOV("LXlysmMOfmXQilKmLnXDRPsmjNTwJOTaBfKhnIbPUqZtKzDPHcrwboZrlGWpZQgNeaqIckTABwYGm"), }, - { .name = IOV("WF"), .value = IOV("PtDbMjGyetPOmSoxmcCZZxZbyeFcEeJMWbjtNCqxeWdfTSocANvwVA"), }, - { .name = IOV("CFpKxwgJkMUgxqH"), .value = IOV("vZGmjfb"), }, - { .name = IOV("OGrkD"), .value = IOV("TpjpMdQLenZfUBkOZKLLsOrcvxHtQBfviFCNmomaiOInUIstwzuXtWAJdkyIcolRBLsrOwiBo"), }, - { .name = IOV("UnpSqmpeA"), .value = IOV("OnTIWNcBshtqHgKvQzroXcpforSvGunKUrirStpwPmqzNKUUuPAxWqikPqHGEXLVGyVowccqsdozVdA"), }, - { .name = IOV("gOTfjwWyOrS"), .value = IOV("ytpdKLygZzLePkaVkIMgQkjNuQQIjeJTVR"), }, - { .name = IOV("YNXXBKLWJAljplCyiHt"), .value = IOV("rcEjLaLhNlldXveXQEObnryKKZTeq"), }, - { .name = IOV("mUdnB"), .value = IOV("ljZfjaklQymiWp"), }, - { .name = IOV("qfQDiW"), .value = IOV("PSThgWRgnAzHwAArQTGThRemcBIp"), }, - { .name = IOV("IuvlA"), .value = IOV("dGFWtsOOMwvHhjLLNDdyxpFhHHFltgKUTJDC"), }, - { .name = IOV("UCyHdEiEhlBLWXqkWM"), .value = IOV("yoeRCFCqpdttfBRjGAcUa"), }, - { .name = IOV("eOUzQJgdeftQaGFbDP"), .value = IOV("oeSEGuhLMHKZmqyeqFEDPPEpTEVEydWoYAkemUCXOxNRWwVLbJKuxQxPElWnVLHiNOgPBVpCjn"), }, - { .name = IOV("R"), .value = IOV("PNtWgiNYygPkASTIQEEsIgWTu"), }, - { .name = IOV("mbhKSqNSWPSCN"), .value = IOV("vSJdkySuyxYfuDyzGWdjsLkXruBjjgP"), }, - { .name = IOV("AIKYNFxRarPlijC"), .value = IOV("JChNJ"), }, - { .name = IOV("jqNYxA"), .value = IOV("QPcevDTtEIQJcwY"), }, - { .name = IOV("bfNnQEtV"), .value = IOV("kqvepEIIZfNOJQJXHbkoyyPpFAVXJCt"), }, - { .name = IOV("zI"), .value = IOV("ILiZgZXiTJHRFFnJQA"), }, - { .name = IOV("kaQInnhBF"), .value = IOV("mvjIMjPxBgxRAdlwxjtWFFMKQxhZo"), }, - { .name = IOV("YnLUkANbBGaPpzpDetr"), .value = IOV("lcHbSKCaYKNRNaRFtmcqsCryBEvlJwCZRmTfaPeqLacBDHFVdRusAJYgROKSlhVHkWYarAExghBHahJ"), }, - { .name = IOV("pMQkHZM"), .value = IOV("SqFQxoYYSTixqXxoThksItZceBxlcZdxdzEAYUbwFLBSstROhqfvPGr"), }, - { .name = IOV("rbliCeVkwCTsF"), .value = IOV("gsJECSyibWIsAGWu"), }, - { .name = IOV("xXjSUDivEax"), .value = IOV("eRoxDLnTggFxuG"), }, - { .name = IOV("bXMlToCxvbTKVNp"), .value = IOV("HUUFNJQwdHZiGNbJYofEOMgSrakMuWGRBGZXUKHFUqiGGDYCdSEKTPAULzSamBWzigWNvDGZy"), }, - { .name = IOV("FDUlKUpcxgrHKUqqDHZ"), .value = IOV("qjXjGFBMabUrsZEOVJFxyqvMcpVNystIyivZvHRSkZJugIOfukcPlmtwHDtUBHLzbedaOAHzUjUQl"), }, - { .name = IOV("smgIywIsi"), .value = IOV("fnQgtNuJHMiUBbUSwgaIoOfVzpjKquJHulnranMhJEVUDfIIdCmdlprkSDlPi"), }, - { .name = IOV("vMzDI"), .value = IOV("JoHaaQnjasBXsgXxTKWltAKzdqGbNGQWXJNUDshP"), }, - { .name = IOV("kczjsYMrTdWqVZp"), .value = IOV("nmHWaCzAeukb"), }, - { .name = IOV("uJnhwPf"), .value = IOV("kuSNbUluKoAiCLtxddYPMthyWIkUDUbGUpRtqNBofcEkel"), }, - { .name = IOV("AOvLQYmZjJryhzfcJ"), .value = IOV("OQtFSegjfoimUZcecRXHMswqHhFvLufanJGm"), }, - { .name = IOV("xolyFrekuZfrDmHD"), .value = IOV("WMKRYKGuPgUoTGjSF"), }, - { .name = IOV("pXPLmDAWsY"), .value = IOV("QIYAPpgpLgraVkSbkliwDkRieFxtUdAALPRKlvq"), }, - { .name = IOV("hNZMluB"), .value = IOV("yKrFckIrHYtrmQBDKHsnZrELWekDNKnXDQvpMHaZBzsIsgQYPmGoMxXnPbXugjNNLHEqw"), }, - { .name = IOV("hdwHxAmc"), .value = IOV("WHCpnPyCHsrFOIQZcupoMiMcksiELbHtgxfqHNGEJvXhDyeBKmHIaxPKAJXyPf"), }, - { .name = IOV("BjtroGyBpVfuJbBDvKXi"), .value = IOV("vmkoNGhgCmkooBovuCCZHgIhGdgNdCVrfMtWltypaUSkmoqgyYERkdaRLhIAcVFEAauYz"), }, - { .name = IOV("aEQoGIhcfGMK"), .value = IOV("dRWzFpVVcatQupwcgvuwtaEgJHfbdWifTdUpiAZOYvABtHWPyteMAHTYWvxedisJyeKjNpL"), }, - { .name = IOV("CA"), .value = IOV("zRhgPqEOwYDNRPJUitCwnafJnnNpyQvgZi"), }, - { .name = IOV("KvhXmniYhCLMzCWVIxsL"), .value = IOV("XgTcdr"), }, - { .name = IOV("T"), .value = IOV("HKhUsKUdOlczywcjiYjtwByUEyTYOAEHkxueleRFVOyNArJoIHTgXOCTLHSBjRVUEEaCxH"), }, - { .name = IOV("DtMhfnF"), .value = IOV("qWWDfrm"), }, - { .name = IOV("A"), .value = IOV("ukOYhBFsHuQUhdxPdnxFnRdYMnURdatoIgvOIfatijJhTaLbNyxKdRZmSmkyVgYHLlQIvaqmtXcb"), }, - { .name = IOV("Qe"), .value = IOV("AAq"), }, - { .name = IOV("xVmzGrFgCcZNN"), .value = IOV("RoxRRaaYTuyHwcXmmpZkmHCuoOiOTGcvEkTCdUWwYdnEyWPTebBvzGBhQhUMO"), }, - { .name = IOV("VUolBl"), .value = IOV("vLSSbklG"), }, - { .name = IOV("N"), .value = IOV("jDkwzUpgYqddEhCiQoRmCtuaISlRsiuWs"), }, - { .name = IOV("JDSuhCODjZO"), .value = IOV("ZqQlGTtrPTUqYWXFyQ"), }, - { .name = IOV("XYKtiRmDYbYcyndv"), .value = IOV("HrITopprWgrVjIoqcFESBGzKSvpXbcrVhAvxYyIVEpDxSgysYGDNAidPtTcUQOWKvQIWslE"), }, - { .name = IOV("nnNCAorUVFCvr"), .value = IOV("D"), }, - { .name = IOV("slvrvuxmR"), .value = IOV("dNDopYECOFkqmrcxdbPWpOoruHneiPUyxTNduolZhXItnOuBzYbP"), }, - { .name = IOV("UNsXkl"), .value = IOV("ZqXeGisEJCAjYIckkdQVnBJzKOGvVGsmoeGfnItUOOyPOXWeRUAbnAzOqNLfGA"), }, - { .name = IOV("pMLJhuAGanpUKGUoGE"), .value = IOV("YmqDkmuNdpKNd"), }, - { .name = IOV("osTvRvdbqIU"), .value = IOV("tlRZWdjaPxVXFePERFHAkqn"), }, - { .name = IOV("gMsEgXKgKIzeVxiR"), .value = IOV("Xusw"), }, - { .name = IOV("CodtmLcJizPoikPg"), .value = IOV("vFnSTKdqbOWMTBIZyEUhiLQYiHrUATMAlBBmjbAiMqdgYHNEzapmRVeWxInHeMhiUUVObAIZwOQXa"), }, - { .name = IOV("iDmaZJftz"), .value = IOV("qqWGMPKluqzyzrTMAaWarRvLWRaRiCq"), }, - { .name = IOV("mcVtwMQg"), .value = IOV("TQmLotUQJjXotpujmJDUUPpLDJuenkXpdxjLuBHWV"), }, - { .name = IOV("wcvpfiJagrrGWDf"), .value = IOV("JODoYaloyOhBhvuNoJeUmaOdcwolXzFlLPbUXoZHLhojDccAeKnWyPgnVwikjQhJJmrLI"), }, - { .name = IOV("nlvkAhZNPWgkHxCzqRR"), .value = IOV("RTlicDDlMgGqwRvchgXncZEhinORVTcJmvxKVUURF"), }, - { .name = IOV("fGIjBHxQMHgLO"), .value = IOV("PWQFFAcHtpJRQGmcgmWHTKFWbVRHVUMFtQNLENsLKhUQUy"), }, - { .name = IOV("LCWyjRuWeSgHuzXneZ"), .value = IOV("nhmEtUaHyzyjjQLpHFbA"), }, - { .name = IOV("NrbnasNnLrEGYzO"), .value = IOV("ktJrAcMpp"), }, - { .name = IOV("BFqxYbfNLZAarBwt"), .value = IOV("moWVhOMrrBIWsGBTePkbHriypOyBixUogyQAUrLnLYqSaSZgZYHwnLhZafDihFCxrGCIIFUSTKMS"), }, - { .name = IOV("iohuUHwWBohxDH"), .value = IOV("ENoFjwpN"), }, - { .name = IOV("mVYncrUTvAwtDnXCBM"), .value = IOV("lvqJIRdn"), }, - { .name = IOV("mPOa"), .value = IOV("jUffUXGHeVrSOTdYshzkHeTiiKZHILKvRQitBQvQRgiQOCJbTpZLiaSskDABQfKvLMlDoa"), }, - { .name = IOV("kXpILSORkP"), .value = IOV("SdcVqNXFVbjEFQLOSRUcekWxRtWQOqCkcJNMnEOmFarDgHBSHlyMrzFhyDlxmXbEHQABnuUtA"), }, - { .name = IOV("NLlrSRthdyxPu"), .value = IOV("JANwngIwiIYzirwOUaSWwZeKmromH"), }, - { .name = IOV("dcTcksPCQOTECPPXUNOt"), .value = IOV("CjbLAbRDSgdAzfBpcfObctJcabRhiNUDEwppWXxGyYcDvhedVdjbxBwBeVSP"), }, - { .name = IOV("jNkhxWIAzsXfVdBB"), .value = IOV("rpaLHBTxLYuimXYNJfHczFLxISqYglNjMxjAJhbFVmjL"), }, - { .name = IOV("Fvw"), .value = IOV("rarbUqfuqAyQIotyhiROMKEnjLHk"), }, - { .name = IOV("WZcmzmvrnigBEZNpKHXv"), .value = IOV("uCnRzBHucHkrCxwTMAsnTihCjyZxxnJXsPJwxcwRxVFavsPkB"), }, - { .name = IOV("ackknDMmegeISKCVra"), .value = IOV("phSiYHbcSpbCUkagVIwkzbdvsHFKYaNpeZvYhbsvSHTbGOgbfsDjf"), }, - { .name = IOV("gBNgxquRldytVxLPwDSV"), .value = IOV("sOZcBzwISQRTLCaMsJmRyWcqBJWniRdiWdTxUE"), }, - { .name = IOV("lSfDUzMOXTSvxZ"), .value = IOV("IYWPBbqTAzETIuAVJSxmUkDGRfCbv"), }, - { .name = IOV("prcxfBZxZ"), .value = IOV("pWfQaSMtzykCA"), }, - { .name = IOV("INnirwdL"), .value = IOV("kwwlSXRBzAKmUEnUdnXervTkKoGrHSkpIgLhCPiiJiFTwYgtcegSBIKZlleoXLkmGFtXHwLlcpgP"), }, - { .name = IOV("ZSKfNPAZFFLO"), .value = IOV("LPVsiQwpZCYXvhzfWyIceSeKySgeKgBNiIrxmokXrzHfCzNiaycUxdJQNVtIvgiGNHtuFhjO"), }, - { .name = IOV("CiJsaCkWU"), .value = IOV("oWnoLyRfQypVoBabCBolnqKslRauoyGrVuaqzaIrZvKbKVSlQcSgmdenEsnVxzf"), }, - { .name = IOV("ULlkeDAoVXUslJjl"), .value = IOV("GkdDsAcHchsRYwnpkNkPvZAyRcfxgQtFEIYYmaXFXtofpanxcLkDFyAoXavUyqJ"), }, - { .name = IOV("eZJDITTvem"), .value = IOV("AZVxJUPhtnLJpspyiyzvYwGTdFMuoUmdmuwMPwBqCmsJ"), }, - { .name = IOV("aEXcSn"), .value = IOV("RGVvdmNeYTxuhfeIBvlquZTSjyOkAFXhKKHOPyVJfIxcoSMCgxfNyfsAgMCyYYAg"), }, - { .name = IOV("IhOtFD"), .value = IOV("gnWXIcvvQaePwfpJFvcwmHle"), }, - { .name = IOV("jUrutaaceMYCWDXv"), .value = IOV("duImmdDXaoaunGvqLlNnLMdKuWrsAMlcfnBBBu"), }, - { .name = IOV("myjdiz"), .value = IOV("gdhyDYyw"), }, - { .name = IOV("pPjCZlEzYIna"), .value = IOV("QaCFwHANxsdmtIxCfwfvaMhXeqkYDUFbRUIsGxFgQqMEkRuSxlEllAXgvNdK"), }, - { .name = IOV("ePLRvsLqglLsOYOHz"), .value = IOV("ntrgIUOAjkKJBvJZaIgeAvXCpUNeQlJYiceHNcIRNfAsuUkX"), }, - { .name = IOV("ryVhYRodFYPVaQwX"), .value = IOV("waRJxnZFaKoMOqzkHPgOdNeESC"), }, - { .name = IOV("ED"), .value = IOV("WAXoRxBxBvNFPMbdgcoOWWvqLpQaCaNUIGQncJoMyDIzqssEtkywakFDfxmsMVMncISiDhloH"), }, - { .name = IOV("XRwZRqPykl"), .value = IOV("kQGMHyNVgcpcvNPOcrtzKyMmOtDVhlJBeDimSyGEVbpkygCMQ"), }, - { .name = IOV("uLioti"), .value = IOV("BOTMXMamzauHZlnYrzyDXgPnamKoZhxpaqBEymcvYkqqpNMiqtnBMcMmrKgQcxvZ"), }, - { .name = IOV("ekwdMSGhjopAyaLQY"), .value = IOV("SfLvWPeODcdBxVfMMoWLZMuQtnXHjVqSgcEUEtEJHaJSRAunYeqTfytbuGf"), }, - { .name = IOV("HTv"), .value = IOV("eJEXNIASIDMeIfAxrhlEEcISDKatKsefrHMhhSIWIXklOuabOyhZiLvuowmYDQXz"), }, - { .name = IOV("isOnsorKqHdNIxMaPJGK"), .value = IOV("oFKQClWAPOzEeNduTIAddUGGrbXOcqFboMGKIzdnUSdttnTOACkdFXPCZhpKDMUbxKqblvWLmDPNbz"), }, - { .name = IOV("kIMqxsHcULAsS"), .value = IOV("kNbrdDxFXJReElVfgAQKBstKypfXFYyOQLKdd"), }, - { .name = IOV("pnyxzEnCOTBB"), .value = IOV("mbbfUUGItBqrFixsIakBUzNPMTYfLKNDQYRmaaYFmMhTBshfHXf"), }, - { .name = IOV("sSaQqVPEQzsaQsm"), .value = IOV("bweHznDKEWUZQOfCBEgLAXuUXNzjojMlHRgTZUPSrwEPGmvo"), }, - { .name = IOV("mCTEiUlviz"), .value = IOV("aQLhAGUnPKDzERTY"), }, - { .name = IOV("nkrJeJiohZc"), .value = IOV("bVEObskNSgBByOhgsFlVVpDiWZufSzoLdoiCLRoakbpcxIlyAmkaYnLTisH"), }, - { .name = IOV("OwdsspheITzdOxg"), .value = IOV("eyP"), }, - { .name = IOV("WNBTHOwxDB"), .value = IOV("tSubsMYnsypRPHAIDhALbOzBjlC"), }, - { .name = IOV("zAbFKlsFmiIGlY"), .value = IOV("JSrZygLIfQAUUNaxUrJosVtzSWFtHqMULoYQibLzZVKQmudmdeHzMueKbzyampn"), }, - { .name = IOV("fuGuokEGvoQOnvfQqd"), .value = IOV("JPyqahkSFOCWgIVUrGxgDCgflBpnRrZQAosBFhfhwDMTAskbNitcrGeMXVIXR"), }, - { .name = IOV("yXyJYwAIMNyRieOrj"), .value = IOV("hkrifPrfYzYyAgRmibJkXsDQyYXWYrDGaqcuxGuCAmqbBdJhE"), }, - { .name = IOV("IttAYt"), .value = IOV("VbGBkPncbmHnPUdmhngtWnAHeJZPfxXPSHXZekRkNWnNniRWmnHLGlbyjFAQWVmac"), }, - { .name = IOV("jaPaTYvIrqOMhTvDjfLS"), .value = IOV("ybrpfEGJQcFJUyRGoHVdA"), }, - { .name = IOV("AzDyHSxf"), .value = IOV("sXjyzym"), }, - { .name = IOV("ecCzqzYZX"), .value = IOV("PRuFTS"), }, - { .name = IOV("adDlggVoedmQf"), .value = IOV("rKpErnUmzxwGStKxJRdKwpRWPvwFTOBLRUglZtDzkMZwwQlyDGWJlQwhTHUGQjbGFAc"), }, - { .name = IOV("osDqPDqrUMc"), .value = IOV("wfnYQaLvVDaJboy"), }, - { .name = IOV("tYYwZelesXGzUAcF"), .value = IOV("WpZLYMJZ"), }, - { .name = IOV("IooHxSSUk"), .value = IOV("quJUzVTcPMkQnKGPAwPebHzoNxoLCbBiMVKfBxzKwZtKalTpSLRJHFiS"), }, - { .name = IOV("iwLvaHqTiZ"), .value = IOV("GLPKWTcBktojWJOkPsBTMvVWvZDHGkKdIguMRwgMBVWVln"), }, - { .name = IOV("QbPICbGfnPrlPOinihi"), .value = IOV("ejXVwoLMxxWwsnjkYRiWnFeUdRsxVYxsQBvunbZwYVTWIociJMhcpjKrGsYIp"), }, - { .name = IOV("CoJnL"), .value = IOV("UMZVpiekkywHxNlsMGnJXUPHaKbbKjhsPwMQyQYTgNLj"), }, - { .name = IOV("wRYEvcb"), .value = IOV("QMTOEybsqZCjvfwVWZpooyaycyYyQcgYOrBpATrEXhpuMZRKqcyPyhRMlCIh"), }, - { .name = IOV("oAGwjyZHXvbLNGA"), .value = IOV("SnDECYhuqOwieFMWxmAbgzzrxWlCalOovQSgp"), }, - { .name = IOV("PjV"), .value = IOV("WDsznnEgLAyyDIklMBjqVtBwrBpZRPweqWZUAPchAfH"), }, - { .name = IOV("EhZnsgWPopcUvgUVkvi"), .value = IOV("iWwSLvZKTADunbgGmbouPSDhesnwwoOEf"), }, - { .name = IOV("ieonl"), .value = IOV("xUhmQAOpTXVllLpyImgeZymCGFMv"), }, - { .name = IOV("LiQfglEOcxmvpm"), .value = IOV("RBGeMXVGVndoHOsFYGWWLElnnQCyyRjrLpIGmhkMmjtYruBMZhvWGIfKxhnArDvrB"), }, - { .name = IOV("WLKxCtVtRHzu"), .value = IOV("KbTnCiIFMtGeAVvKOZQEREabBXwwXmCEsKyokejQravQkLVzILCCoMctjuwUaWMmSYFKsSrpn"), }, - { .name = IOV("PBQi"), .value = IOV("gjsJVIvmGaGKWTINFdsvkIPioMhJhVBvbtfHzCMjnvDKaq"), }, - { .name = IOV("L"), .value = IOV("tYWz"), }, - { .name = IOV("YWiXkCTelgHwLWAofrSM"), .value = IOV("jxmZuWyXVrEo"), }, - { .name = IOV("uvSMLKzvElfxumfNW"), .value = IOV("CcEgOawFFOeecbqeZHysQXLiflEHWrYHQibmwezMVYIVtGQHba"), }, - { .name = IOV("MAzD"), .value = IOV("tRlmKQUFcuzMGAUqXpcgK"), }, - { .name = IOV("q"), .value = IOV("YAeKrdYsOoSubhiFILQIszYKvR"), }, - { .name = IOV("YN"), .value = IOV("JOiPlUhplchygfrVGTozwWIbRwgJeCmYZPpZHzFNMwRnuxThgSSMdYzsnfStARXsaEGqAfJaM"), }, - { .name = IOV("uRGhmDGHIZHntKWQf"), .value = IOV("yiQQQeRoNdJjZzsLvMHXvOygoEOPdiKGuXpyiaEbjimpEINmtudYffyxTXQCBZpYzMTstMRmqP"), }, - { .name = IOV("aWirPhKFmFjhDCe"), .value = IOV("NbtDNtMGFKeJiPaKBkpy"), }, - { .name = IOV("AzRFnoSEpNYaw"), .value = IOV("BwvVQmlThpxNTAdmVpFWkGPrypvpzYLDue"), }, - { .name = IOV("OvulrfL"), .value = IOV("vizLUbXMufGYmgCdXURNsFewmJrUYHAcpTvsWMQC"), }, - { .name = IOV("bVVfhCRFNkgeysWNFtBr"), .value = IOV("m"), }, - { .name = IOV("ykVGeIZRLW"), .value = IOV("vdkDTIRPWhvZfHpnpXZeonrQeNSXazON"), }, - { .name = IOV("WEhYoCIHmYEpajLDGYFU"), .value = IOV("SaxAVJPpIkCPPbtNQSazDUSazlpEyWwePIPnDGghrpcuV"), }, - { .name = IOV("awntFnH"), .value = IOV("BFLPetwXzDWWyBydXC"), }, - { .name = IOV("DIps"), .value = IOV("vlODSXBKTbNdEVpEhBOXfzCYlXpCtvqxpCnhTACMmbDDKDBGMfSomYKTXqllSINwXlCtbDbqguYG"), }, - { .name = IOV("YtGoZZwVmRuWWYYC"), .value = IOV("oGsBHPvheYyOJWFRSbG"), }, - { .name = IOV("zjflwLCuzNn"), .value = IOV("srnTvtsMQxMdzlIcaOsbeTpLGHyKoYzdCebIKAFgqlfcLTeEoOPObkjViNLAoAFvthjgThOyx"), }, - { .name = IOV("Yy"), .value = IOV("FXyYeURvjBnktdwCzylyjYWQKxHaoSmvqvZMroQYJZ"), }, - { .name = IOV("ihCQGYW"), .value = IOV("rXFYJWtMCJSUrSaN"), }, - { .name = IOV("cCfWbRkVdZ"), .value = IOV("HWKhqfBBMOvGJhnyiVQhACLHrqc"), }, - { .name = IOV("mwMjqlQrl"), .value = IOV("ragdHhhmMALSXhQtiFwSCFeFlzjnRYKPMSUjYVgkUscTJyOuQIkBzoJafcGWriKxhcCHhVwbgQwNcX"), }, - { .name = IOV("OgsUTSmbaPxwu"), .value = IOV("otkuUjEkRfYKXWmdxBciyKTsDVu"), }, - { .name = IOV("TGThUUajermZFZz"), .value = IOV("NMSrSIlyexPjzYdSHVVQEoJDSPDPdBSVcVqtGBehGbteQN"), }, - { .name = IOV("izKpjHLLUNMnzbeJf"), .value = IOV("aFqApRaYS"), }, - { .name = IOV("NNkyJ"), .value = IOV("LLXvNPlTsmkDGuNIcrrLJdjVIgrLjjZjKezGnqIEIFIqLjYBwZn"), }, - { .name = IOV("WGvOVrj"), .value = IOV("JdyaHtKqdhiqswgZDzULlvlfHonHTgVMDeHDteEruRRqDDMkXWwaid"), }, - { .name = IOV("DEKtViuU"), .value = IOV("ioqPjwUphJjVORgemgJhtKtDDNFuqucaHgalktTSPhkKIerM"), }, - { .name = IOV("xxDM"), .value = IOV("wOrSFn"), }, - { .name = IOV("oaZvykVb"), .value = IOV("vwFhAybKFIjgacVXPikDOUepUrCLTxpomDAOiiEDZSkSF"), }, - { .name = IOV("XNgZIQFRWBwz"), .value = IOV("tLIgOLPdLyHbyaAdvinucpzooLeVkpJhVxQRmEmopyvKQjAFUMXtRhwOYkK"), }, - { .name = IOV("CQbXTlHWuDAdwgJ"), .value = IOV("VoKelfbxdBfYQxKGnOKMHfogGJOgZfhDFUEvanBTvojPhPP"), }, - { .name = IOV("NNMDEmcJftmxUSysyj"), .value = IOV("NRTeYwFlOvIMPCOEPfuuPIhooBNaQLBdXFMfBtrQaGyjtBbrysGsWVNeJndMuoLD"), }, - { .name = IOV("pQ"), .value = IOV("CqLIHVNzSsilgyqUsPMmnjnPfZQugd"), }, - { .name = IOV("eePtsNkUMtjPdzhI"), .value = IOV("FXTyQMusdaAhJUXRhwkghncGgUb"), }, - { .name = IOV("NRDRdWfsev"), .value = IOV("YuPooLAcIKbDmmdptc"), }, - { .name = IOV("FQJsfTNoDEQBjkTZi"), .value = IOV("wSvGaSFzlrpHucEVQfJmTYGafTcrzKHxgRDWPmsooAgCJHmEjcymmtaUJzBTisLxlGGJTqtHRVvyEAB"), }, - { .name = IOV("fohXvmPswpZ"), .value = IOV("RqPZmTuQBlihglVehPgwMeMfmtxkEgnPVPIhZvIGvEsvjVyuOgxWuzgvPYZqneiFyBOE"), }, - { .name = IOV("rOmVlRPtRYekS"), .value = IOV("AAcZudXMnNoeYlYnKdrHOTiWKWbSnqyIHkilXmvuTMQrQvTdraGiiqieCcpxkKdDKpxfYuVxfkDMg"), }, - { .name = IOV("WqFRaUcpgaSuVPsOgQi"), .value = IOV("kSyivcceZjZclmFMEQFmfVMdWlV"), }, - { .name = IOV("uODTdy"), .value = IOV("EdyslYCaIhPqAlTfuchdCFApDVNWlx"), }, - { .name = IOV("JGIGQadiaIIkVZ"), .value = IOV("cGRhfywwxDbzVQnbYpYVlStkSZRfDesGQoCSdSGffCbRXcxfTsOTwZVEYnkIHP"), }, - { .name = IOV("lyVUiUrdt"), .value = IOV("CprLUkezLBAXEPxJXGeLaMbPuWiROYCaXAflcwGOlTIuBbVjFXBMEBkxrcFNmatwUIuphthAwLDAP"), }, - { .name = IOV("EpykYRQJsrMtvep"), .value = IOV("JQYYSpsTbBTZbuvsrtDMbnmkhQEEId"), }, - { .name = IOV("CdsOsjWShahEPkth"), .value = IOV("kYrLeYjcLdYdbsFariLfLuKtgkKRs"), }, - { .name = IOV("nkYDMmhcvddCZtudcftI"), .value = IOV("ZNruHQjCkKUAWsvVAulsrXomvoxIoJKVArFlHvazxRLtFRGocTapbHt"), }, - { .name = IOV("haODMs"), .value = IOV("cGWLdVcTyklCCabpiTHnrkdaPpDJrpMtZMT"), }, - { .name = IOV("NRPoQQRkcbafRBw"), .value = IOV("dsJwEzKmoMCmbgqmaEvjuJeOiUgUKnlfktZlHiECSWkQDSTqiQbUrVJRiKxWUUwCZQdPLrJOQw"), }, - { .name = IOV("xPSRTV"), .value = IOV("YtarcN"), }, - { .name = IOV("GrRbIXAHxjlIutq"), .value = IOV("AtkbfsOEPLdDaLGIZIBUwqRAMewIWAsRviEMFNREDq"), }, - { .name = IOV("R"), .value = IOV("CxYfSkpAkejMQpFaYlHTDgzT"), }, - { .name = IOV("lFyNb"), .value = IOV("aBOJ"), }, - { .name = IOV("YZhFlrIPEiIsAAJHr"), .value = IOV("y"), }, - { .name = IOV("IRRV"), .value = IOV("rDsHWQDsgZZDiERrVaKPJOKyUUXMjPzBJKuteu"), }, - { .name = IOV("dgrQsZJTRSeCLIOHad"), .value = IOV("oUEpdFYcC"), }, - { .name = IOV("EU"), .value = IOV("JJfnYyKTsH"), }, - { .name = IOV("WkghbcwVCAu"), .value = IOV("GaCGbepRztydFljThEwCbfOMGUfWnQ"), }, - { .name = IOV("wvLuHKGpZPGyiyPPBdNi"), .value = IOV("edznCwYnUFNmVueiAViaiRUtDNOoyXRYSBpiqFMHaLDoUHOOLcWxIr"), }, - { .name = IOV("CvnhgnX"), .value = IOV("bLbrTGsapAFG"), }, - { .name = IOV("foDIWObalKCRkuYAqHB"), .value = IOV("dVHXxqMBYKjNxhdZ"), }, - { .name = IOV("RMTyoltrDe"), .value = IOV("azjUDAxZICGxhFAGzCVNlwb"), }, - { .name = IOV("sICqBLMMcDAemYzy"), .value = IOV("ffvzKDbEQYVZpcqnNoYjTsscwYTtWOulBWZoPzRHhvyTMvyEGcDPIErdDPtoXGIwZzJxZzDaDfhSefgT"), }, - { .name = IOV("iHhaDvCTy"), .value = IOV("BKVsSIvlqJHflWIyzieWKWSQHoGJNAFzr"), }, - { .name = IOV("dVzhCbShRFhCbEtD"), .value = IOV("ClQBGCmybJQfRtFUCltStCtxnBdAiFrgGLKxXQdvnxpjTLNNNnFbB"), }, - { .name = IOV("OdKHlMjBvpxaVhVaC"), .value = IOV("QaaBjaEcovNINnmGIcTfujGboalqvlePQOSGwGHoVXVeqnVCjEVx"), }, - { .name = IOV("HJCZWmytilcQVSHhC"), .value = IOV("sUA"), }, - { .name = IOV("ipHdT"), .value = IOV("ZYMAEXFGwodhjwulRCtmRtHa"), }, - { .name = IOV("ZLaWKefw"), .value = IOV("bKdYurjuKOUwyvxehkqIQCuJcALkjAgLSHQNTupWRHljyJnAMlnYTfJaTbbxTfNtgUbxHkrLwhDkgYp"), }, - { .name = IOV("VrQjgSGYOQbn"), .value = IOV("pYUqqeqwGAFKcdzYhobNZmAzvfNAxxFMNS"), }, - { .name = IOV("VjNicaplxSpcldhLz"), .value = IOV("UiZtTPhhnqsAcDWlvhYiVxGNZdRXjulZEDChqGKXfhYJdvZRgoPoyJvxUYItpCkYEoKymUkt"), }, - { .name = IOV("mzBsjpNRarVV"), .value = IOV("tYnNCQXPdUyIcEfePmXYkWe"), }, - { .name = IOV("cW"), .value = IOV("CBmCIdhpjzVjnKMbhmIqEXxVjEFhPnZidbfwDUR"), }, - { .name = IOV("ZXnGVhRjzuxtFfaPDtE"), .value = IOV("hbaDUFOyRtpTmnrEjrQrMIjgRzEWIDkhctVrOHmXiRATPAwA"), }, - { .name = IOV("TRsNlCoBVvhmCDElEto"), .value = IOV("WlsntsUxYosXBnLIizLstlcxEhPQlBrNjSXbrMhngYshNdNGhyutUtNEqyLGpwdzMwzuTAx"), }, - { .name = IOV("NQflb"), .value = IOV("DfmNJwdEXdlpUALqBsBiDFgzpomPoikTd"), }, - { .name = IOV("xuuDB"), .value = IOV("IiWchzWIQyylmsCcgsMLHSmTvZmzaTPjiaCuJLgcWzaAtpLYuotOEwwmFUeHu"), }, - { .name = IOV("iGjKxxzzPEWaaatvTT"), .value = IOV("DDRQRdIFAaBhvtTjgDlUPloHXRGHCeQQklUCEXPnhRpNaqkhgnRTppYOpYJAwDz"), }, - { .name = IOV("cCYp"), .value = IOV("RRNKWnocFUEgdTgURoFPBeIj"), }, - { .name = IOV("LMaUOdMZ"), .value = IOV("MsfnWTQBZWkwODupfOzPlqYWvJsuTwwiUAeZbYHoyyxwxdJbC"), }, - { .name = IOV("jrXUy"), .value = IOV("xdYlWmAvCBDbdOudRujGuHsIIPZRnNKlFWpAobZMxTMNeBOFoCkOnLnyqBpTi"), }, - { .name = IOV("jrOqhFypz"), .value = IOV("yWngaTAYdYnDQIzCuDzYlVwWiNuvXmIlPlcjyxuPIRkLtpljprwYn"), }, - { .name = IOV("q"), .value = IOV("NYhkCOonVqnFygejVKGRjQioEZTVGdYXlpXeXQzuWjfMJwooL"), }, - { .name = IOV("tukQhjgtRRxIIrL"), .value = IOV("PVZzUFUiVVywQpLwrwjayyQRHbqGpKRaCofuFPtycixT"), }, - { .name = IOV("xkFKpXNLZaeYQdIdDNAF"), .value = IOV("ulhBYncbcXSxEqCbQBjHfcNMjmHvRcIZYiMPphFh"), }, - { .name = IOV("LuBYjwpG"), .value = IOV("fgnKsgGXGnBpdJphjRFzLHkSGJkCUxniNnhvSioubIBNMrHIWTeZOrhOhyiWchWDGQDObAySwiSna"), }, - { .name = IOV("yeZMZUSdiXxTnZtozTO"), .value = IOV("dwGacYQqaAmAoWuaVlTyMbQRtDNGxlovokArFExshJU"), }, - { .name = IOV("jdlAqJX"), .value = IOV("xUvvXSyqywZmmzwKMqLCyHjjxVRzKzEVgJzKxaAxryZLBdHFbD"), }, - { .name = IOV("tsRSwcIVwjFysxV"), .value = IOV("xstbVleoPtgpNptWmTULWbZPYrYHnWbYXIXBVpSJcyFIbtHnyMOsJhQum"), }, - { .name = IOV("jFgrGUwpNrBL"), .value = IOV("JPWPaypkDATPmhm"), }, - { .name = IOV("EaVvrJVccjhAbkvANOv"), .value = IOV("zvYmxsFluEoMCYmQTHAVbkbASdpexQLJBMkHq"), }, - { .name = IOV("AtXTUCDalTvY"), .value = IOV("qNnuTsZFEufsbpdpHYgRoJKqqqJHWcUfKrBQyzUPcGnMPJmWrtSJVEHVWzVEATGhgRZkUmKioOk"), }, - { .name = IOV("oGGETksu"), .value = IOV("qpjncefjtMhIaWYMTdtncSuxaQBPIsLPNfmAawhlGJacyzU"), }, - { .name = IOV("HJwIyyUGcPd"), .value = IOV("OMRTyemMWGlVzZuUKESJHSypxPKOXfmdifszjHNtIYGdqPdcqLbUEdcFSeoKWUB"), }, - { .name = IOV("LMZECxTKvA"), .value = IOV("iKspCsmmwEnQXTOeKrwNlIlOCLfGLUUqOkYGL"), }, - { .name = IOV("HKZkKYATihDNFW"), .value = IOV("IDJvDGQzPpkbltBTBiDgsYWPmwgaSWLzHOEWobO"), }, - { .name = IOV("SIaNrEgcUM"), .value = IOV("XeZjuSolAEiKOiIQRzIZ"), }, - { .name = IOV("ln"), .value = IOV("ovzFNbYEwMFRWsfJPhYxswqnfxqQaNQzAiTfQNaZcWTXZnNypMxeAaCL"), }, - { .name = IOV("CkfxWLbxpSnOdggXkbdX"), .value = IOV("MrZSLbfLqkNAYWWKmw"), }, - { .name = IOV("yLgcJJmdXFJw"), .value = IOV("nuu"), }, - { .name = IOV("URgXtHJhyqBOnW"), .value = IOV("gjFBUfmmqZLSg"), }, - { .name = IOV("se"), .value = IOV("gywgiQwAholAFEQsZKEqNYfnofkbfLIFvyZdqxjaXWMVRVAWfKafNBidoqtZZBBbaqyhfUKTxyEc"), }, - { .name = IOV("YMNC"), .value = IOV("RzBpxCAylrbqHWOWpfDPhkdGyvonDyLdNqMLjDNgbBt"), }, - { .name = IOV("SvqZtIqrT"), .value = IOV("xtfZcukUqWCTmgxwLDPqyzCvlidzZqjWpo"), }, - { .name = IOV("e"), .value = IOV("HkZINgwiAhFZryOSCTXpyR"), }, - { .name = IOV("WVPAicCksAprFLfiUV"), .value = IOV("vEmeUhBDswVGcAQmC"), }, - { .name = IOV("KVNLMliiIEWF"), .value = IOV("zdbqcijhBmwrIVRJDWTFbxlovnNSmrFkYLIIkyQppmoeIUh"), }, - { .name = IOV("xIAziEreBR"), .value = IOV("tnvHjyPEYklyDXTzvTOucciRGsgXLRascEQxtQraXxHwvFuDBRDImlGfeYwXArkLVzGEpCKfCvu"), }, - { .name = IOV("Z"), .value = IOV("hxbOeUGbBtaHixbxquuUAKaVlfZJousBdfQC"), }, - { .name = IOV("Gpypkzs"), .value = IOV("XOBdNLsZYVmjoGiolZyGmqkcahCpYCJZqPZcAdkjufpRTDeNdaEPWugG"), }, - { .name = IOV("PRZSOJoMMuhpfqy"), .value = IOV("PZKTnnVIKYFGuZpcyVbCoBShDWpaAZFPhgUdJayKwnOSYbWRKjuVzFnrSwRtktW"), }, - { .name = IOV("wL"), .value = IOV("EDuzKi"), }, - { .name = IOV("ta"), .value = IOV("iMUgHeTcVcmMEzncWaRHGrUkjFtNOPglCRgQvgLMPtIBXYhIHkZCSMqtXmb"), }, - { .name = IOV("TChY"), .value = IOV("JxTRpclRpLOfUvHZSJQfHSJfkuDfiFADpUKQjhryuxswLOHSvcQ"), }, - { .name = IOV("KlaAHkAtphxtlHHVoTtC"), .value = IOV("HFctsYBQGCtlTyRsOohcUlIjQjoXwiBDAMNqOWnUigPUNEMoePttEXdBfIdNZVW"), }, - { .name = IOV("qcoVQZYtFpnFcNLhWs"), .value = IOV("aUWxhpAKsYRscsKaqGIIvfTZiXuSGPKRzxDKuBUZMdMxEqc"), }, - { .name = IOV("mDFuqfELfHStKi"), .value = IOV("vLEniAsYEuonVpETVbUVKKCekKuJyQRPUOpSVRNGCxvZgXUoOcHcuLlleC"), }, - { .name = IOV("hMFzleaFyNwGZ"), .value = IOV("aeBRJySKaCQE"), }, - { .name = IOV("rUgmFhpR"), .value = IOV("EyPGBoOBuAiLFmFSgQCvIxrjiTiMe"), }, - { .name = IOV("yMnxCpD"), .value = IOV("YKpHfSkdiTLmZBEXefMpiFLjggKudRvjTPkjZDbmIHfDueFywIseoMdIelTXlwbCGCWxTrGx"), }, - { .name = IOV("WlWDdaMQuFz"), .value = IOV("tsiIlTwMxYNxZPxsJVkUBcdWSzCEcVF"), }, - { .name = IOV("uoxjUAzByTHicctDD"), .value = IOV("TKFmRtnsXmdUxSzxPv"), }, - { .name = IOV("MzucfIjuYIy"), .value = IOV("LqkvpScqlgzjtnmTQxhoiVnphtPJBOsdosjSgDcxSFqmkGCyvVhlyxGMTMWPENlQUSnldsavWsWqGfaK"), }, - { .name = IOV("xKQlEfCkdnJQlgzJ"), .value = IOV("cbnkKKtnFYJgTfxOsvUEGBrpFrxcxjim"), }, - { .name = IOV("lFrEwBYmicr"), .value = IOV("oGfxIFWjLEiEFyGAFXZXIuokkE"), }, - { .name = IOV("eCojxbJSJTiGXyxRHXk"), .value = IOV("rPV"), }, - { .name = IOV("qfjcnNUCM"), .value = IOV("zKivqFKzPVidhvIJdDqQaWwtrxSQOE"), }, - { .name = IOV("pnUbBMKJ"), .value = IOV("iExJmkRcHbcokwKaSujEVJehUAzZkqmTxnena"), }, - { .name = IOV("IESi"), .value = IOV("HEL"), }, - { .name = IOV("qBcuMcovLPUs"), .value = IOV("rTpdcnLCCqqgAwYwGvxHJMwobtDuscPfjOWBYHmR"), }, - { .name = IOV("whjIdbrQKRzteuZFgjRk"), .value = IOV("kHXjOMVzqxyZZvhaRnKAIwGCjVGlLZOEQqcBUTMPkoozuIlGSEZAFVQplHmsEMpBPPCyKmjE"), }, - { .name = IOV("NPLCgnjlsuKpCaKumYC"), .value = IOV("DAdCwbsrmjnCRibrsWtJEhZQpaHfxbBiNZd"), }, - { .name = IOV("JdWwrpagHZBHLOcU"), .value = IOV("MSFSipGBkXazVfBiMGBbZsXvSBOVcEWdcDglXCnVMfcaSdJsnS"), }, - { .name = IOV("vucrQSdRJPSHqFT"), .value = IOV("HFcGfKrdLzrntjbetIyyXCaWSWbhmShyxiab"), }, - { .name = IOV("NmKXLkqNCkTB"), .value = IOV("APZKzsgAZIMbvyJcZybjERaYccvjAAXhFaUZTCXQcBmaYctLpIcTaUxPuaZLr"), }, - { .name = IOV("LuamVLEzPBGGXBShGZi"), .value = IOV("POrjpRcXHXtVYUbjW"), }, - { .name = IOV("SYqjoXUJCzguCsgEZlb"), .value = IOV("dRhzDNykiuQertkTqCxclGwHixkprsrbJbvW"), }, - { .name = IOV("BivncfQXEjeHmPvRU"), .value = IOV("QVXd"), }, - { .name = IOV("eChfYvhUjlEa"), .value = IOV("JNRCkx"), }, - { .name = IOV("aUjJdrarDliLcJV"), .value = IOV("oTdVDCitWDMrYrKvMNtavJlFdOVCPzkGhMZOBxJDceldH"), }, - { .name = IOV("hCvjxhnGSOgqPEDLvJrs"), .value = IOV("vJDIXUUFWb"), }, - { .name = IOV("wNhHpMWNygJHl"), .value = IOV("cJSoxADYPwmQyXFvbgZeKxvJkgJEctPkLshGgCbkVsirzsarWNGJihpAlOPJQw"), }, - { .name = IOV("tP"), .value = IOV("hRoMHwYsdc"), }, - { .name = IOV("bcsEWsRSdnyaGVqNEJ"), .value = IOV("GOGsqhImexsfIujYlhwqjQMDLsqfozyioDYNGuYgnccuYRTIctICKnQ"), }, - { .name = IOV("pzvK"), .value = IOV("xgeNYImQOQMIPiEDextgmSsDXXDGCOIdQbTgvZ"), }, - { .name = IOV("Alskodd"), .value = IOV("vEOOYjwfPvEkHwJhZBDYi"), }, - { .name = IOV("SFVtC"), .value = IOV("RuxFTFJFSxBPPtelFgmnzdLPmQwdQiergwoiUtGitqkOrJOIRdREHbqnerUlXMg"), }, - { .name = IOV("XkrJgkTocQpWF"), .value = IOV("zACcSNgRyirVdixzxTZrZRFQdKjSZoIGWYSDJPTyEbfz"), }, - { .name = IOV("y"), .value = IOV("yGhcaJLxMHyKBORuAOGSYroLotVjsExvkTvyA"), }, - { .name = IOV("SQfprfvgF"), .value = IOV("ZwRoIwUjIzFufdSCUsqygfSmOqNUjpPmCseVjWSkaoRyvawccofjx"), }, - { .name = IOV("RbYkDoCSxXBzKwiMaBf"), .value = IOV("SiihZTaaXRvwMm"), }, - { .name = IOV("LCSKjvVZ"), .value = IOV("lOHBgagIaVuCGgRbzqqESWApzttdtRxMlYCGOKucMCHRlqhfVkpurCn"), }, - { .name = IOV("NZp"), .value = IOV("nFmNNopYwJEKCMhGihwedsRGjXFxTjszJhWokTFjqI"), }, - { .name = IOV("nAoXuagWgbF"), .value = IOV("QLgHWsVXz"), }, - { .name = IOV("qnPh"), .value = IOV("HMiGPBzoafFjlAtmxDZRdmFRFRHWqYAaahWSKkskCpRLPABYLiIfKGHKDUdyjYXCGQllzTeTVSdTNjf"), }, - { .name = IOV("riADNRnFznQ"), .value = IOV("hgvRMlfvqFqvTazwQgyLjvqmZutDUTvfyYOTHPViLUeZJBAACSMeK"), }, - { .name = IOV("bnzezPkbwacTeJ"), .value = IOV("kmJBrtxjPykFLwjualLnWPjrkuMXP"), }, - { .name = IOV("VmYXslEJL"), .value = IOV("FqIknfNwRpWLPaQQABOnswubeKpMWyZBILlEYIYKoCfytkrTdNUp"), }, - { .name = IOV("NbrTODnXhQGmOTK"), .value = IOV("zCzEZThytpTpyLYYjeblwOrtuAlRZmPmyaGWFHeHj"), }, - { .name = IOV("nRXmatcSMtDIQUMmMqpS"), .value = IOV("JPRHpyDIItvzHHOdcbvSSzcGmYKUTagxYzBsSCNGTTHLJSEONyYy"), }, - { .name = IOV("poWfYkBtJtbaVxu"), .value = IOV("DQeXdbqVBjQoqPVSazflRrhe"), }, - { .name = IOV("g"), .value = IOV("rpgClxNvoMSjYtuSJYEJyHCGSNcrWzgRZZTkfdYNSnJwdNgzxCzmLvf"), }, - { .name = IOV("bjjiyNUdlttOvVEbsk"), .value = IOV("vEhQesKSwUVshAHwJIVbiNuFYseCMtqVIqgrrpzziSRZwlorRhTJUBDpKvlIyHCjFV"), }, - { .name = IOV("S"), .value = IOV("HtbLmBnqXiMJEejslXedWJbkT"), }, - { .name = IOV("oVNSIxrDsYPYA"), .value = IOV("EjMOzkLb"), }, - { .name = IOV("yIV"), .value = IOV("VhcwRLGSwMEoVAIvOFOpaWEGbTyYRYIVMffqZoYmubxOwKZXeDyyOXcDkbZUudygXWKp"), }, - { .name = IOV("auJbvTkLQnRiHKFGhLVu"), .value = IOV("JwDsJwaafAuAXigSVUVFiPdjHyzhLkhMArqtpiqcrJXyoJThSd"), }, - { .name = IOV("PkcTiLpTpfTNHxQRXCF"), .value = IOV("gGTbmxJrAvdPMIRYEemduYJQmSCxuJbelFUaMz"), }, - { .name = IOV("hZWM"), .value = IOV("qahyXyWsXxUhJjZMSEuBUvmFYqGLfOdpmRpGCCLXkmTLSGDUTZvhtxGgcblFKKFPtSDLlMJ"), }, - { .name = IOV("MPsPgcvjFJB"), .value = IOV("VddNrYVOKHJqxUZwRKzTmMEBJHYushMkuVIEOIE"), }, - { .name = IOV("opmqXSZJAkNY"), .value = IOV("IhhhvbEQUtpscMSkFNwLicowqrBrIzHvnpNFqOuKMxZidVSWREEZ"), }, - { .name = IOV("mENbw"), .value = IOV("mrYZoZnWTBdFTmGPFLpckCrYoVHiTCG"), }, - { .name = IOV("Cel"), .value = IOV("faZROfAaLiIPMzKPhllVcqRiTxADWAkAJMSgldTMeRTRdT"), }, - { .name = IOV("uZGgj"), .value = IOV("jiMiVyqsIfdKYqjfmBygnTmXEoXizIuQUYSTU"), }, - { .name = IOV("enMsTL"), .value = IOV("UsNIIClSwZupGLlTvARoVk"), }, - { .name = IOV("EXLBuKrueOiNKHKa"), .value = IOV("biezBmlvadHxmzperHaffXxZGfQcvITrcMNNMNNgNqBrqTZMPQiyAyXvOQnLlWKDVXVgcQcfgWkxy"), }, - { .name = IOV("GgAMtRgB"), .value = IOV("PQAoCpO"), }, - { .name = IOV("TNFdrNiXzdcjMq"), .value = IOV("AHmdapELEgDJQPMtCDGaXrslTGaXCt"), }, - { .name = IOV("SHEOed"), .value = IOV("cpHJ"), }, - { .name = IOV("zCATqx"), .value = IOV("JFvDQypHgYuAABRpWUkoIbQRujWTIYOBxzXGxMPKkr"), }, - { .name = IOV("PVMPlwcanTUOKh"), .value = IOV("Bzg"), }, - { .name = IOV("inDWOmGRxShRu"), .value = IOV("jExNxzirbQEzwYllRqkOTsLLDfoTwcWiwKpJ"), }, - { .name = IOV("ogzZqCIgGY"), .value = IOV("woiZfNwmLSsNZsmVgtCZWlZEZkkvKoaEs"), }, - { .name = IOV("qUzaQhngLJ"), .value = IOV("GpkkxOrldZfByEyRJWdtwoEtA"), }, - { .name = IOV("fBQxATBhsI"), .value = IOV("QEsaYXOYItYUCPIWZjFpRIgEwuuiisdKFfVGWhEXRqGJzcnwyaeaMQQfpJTJCpx"), }, - { .name = IOV("IdejlNad"), .value = IOV("JWrJAXmvYawaoznZASDZXFSfLybPievUvTXyiONYAyedcdHY"), }, - { .name = IOV("RahYdliwSCmUQAQE"), .value = IOV("rMgLpnBdOTD"), }, - { .name = IOV("SeYjUWZVDGMYJdLREnVR"), .value = IOV("CRlPmrMxZvfCmordTOXSKjUiTuxpadVFBjJveaYHmxcxjWnwBMeqtCdlcsNgxxRdObXPfTbYn"), }, - { .name = IOV("CoEZ"), .value = IOV("ORzK"), }, - { .name = IOV("NmFxoVVQ"), .value = IOV("DOINJPrcjNsNjrnpgbWqrTiDqnkHZMrEJbQy"), }, - { .name = IOV("faeypMrCZGzbgfaR"), .value = IOV("YBQcqGMlYXybjIa"), }, - { .name = IOV("PSfUqMXAbSOMPBi"), .value = IOV("FCaHKVzghRmXfvnTEHhNODsgrqdQwxTEAYtyRQakiUBZtLPqkK"), }, - { .name = IOV("YULsUqxeUqCzzej"), .value = IOV("weClAzhAjotKczHnNDAbxWUWBUBiqS"), }, - { .name = IOV("krIoouL"), .value = IOV("McMVpFpkuVnyurwbIvhVRpqCAtvocTBnSIWSWkoKWzVGEZZbJLrrytiIsNZBquVquDaYNPyDBIQrS"), }, - { .name = IOV("aotaAf"), .value = IOV("rtwGFjXklUCMlaYSfWTlmVdjXUixmBeZeYDAXMeBoCSmeqaoIZ"), }, - { .name = IOV("WVFJJPzRmdqKqjah"), .value = IOV("QYSprcliubNzKwdzdnqAqIuWiAhcdVCRHhteQsHdGPs"), }, - { .name = IOV("xHjwZXKXSELDwAfS"), .value = IOV("fwcCGqJTcJewPIW"), }, - { .name = IOV("YlxxzKtLSB"), .value = IOV("qivOMsGBMEVzPuftygIhsFvKHUEUrblxpFeOK"), }, - { .name = IOV("lSwxiMz"), .value = IOV("iAEjhULrWkncYCjUZOMpRajDnswMkkSPbqYEoarymertCUnffkPuemZaaqlSmIFGKvFjO"), }, - { .name = IOV("twWS"), .value = IOV("wsPGNuYEGgzgWuGLjtKHfieLoQhOLmxtSlqOLiJAn"), }, - { .name = IOV("fGWPEgXxNXhjCqwFzmBl"), .value = IOV("ICyWxaKjjlTrozUqgwgFsSVkZCYLwj"), }, - { .name = IOV("RtcIweeeBSmVy"), .value = IOV("N"), }, - { .name = IOV("PzDvhMKoOiLmmJJdJfS"), .value = IOV("XIpRrvkRJQNbFMYWmrtsxsIKxa"), }, - { .name = IOV("TmUDpiRewFMAuNTNn"), .value = IOV("ltJKPgyXp"), }, - { .name = IOV("FGGQSF"), .value = IOV("WuIlmvKmEuJnOBCsSCpeTFIFUAhoNHCiLHOEhghwvxfpFpCCcCCmksAmgbw"), }, - { .name = IOV("GMSBeZRIzzGzwH"), .value = IOV("wsAZhlDQxLlhTFduyHp"), }, - { .name = IOV("qZpEg"), .value = IOV("i"), }, - { .name = IOV("IszOffPaqutzCpEG"), .value = IOV("E"), }, - { .name = IOV("xBemfanIjhDUDyqySH"), .value = IOV("YSlsyudecbePdGRoxLfmXFawKfuaMFfMyCJKaea"), }, - { .name = IOV("MwyIHrdrjUlZgoKJi"), .value = IOV("xiisiVrzPPPKeJkdGNpsyvmuauwUHmKxKznaHXJWhIANdV"), }, - { .name = IOV("SpJtzSHOHc"), .value = IOV("GKeSWbIpzMZGszoRDgeWsDfecFBXhxbE"), }, - { .name = IOV("FnHk"), .value = IOV("oKVRFzyyqiztsQh"), }, - { .name = IOV("AdpDJOgPdMXuTmwtKQ"), .value = IOV("AbIkDTdXSnkoKLQGQxhdzdjuPKiPDkgscHPOgHAncMsVPPIcdNBzKnylvdokvLPVul"), }, - { .name = IOV("OrzqWXvEYyanILuuiJh"), .value = IOV("ojrpVKYBJcWIMIusxnuOxIQiuBYqtvbdKymHspdkTHvfEYUBpUoSLSXqkxBVuruonW"), }, - { .name = IOV("WWxRlzkiW"), .value = IOV("kqdQwgKDNKZgbrVWFnMgygBHeGIScfJiB"), }, - { .name = IOV("ovdmpXidbBe"), .value = IOV("XdmkJdcFWkuiiOpiPReAmqXUpbmJQDhToNAqcKjRNdkpkJbwo"), }, - { .name = IOV("yKgkgeEcKvq"), .value = IOV("fQfSbyEtyZpKLIaccoWFXCA"), }, - { .name = IOV("KNPxeuyvDa"), .value = IOV("nXp"), }, - { .name = IOV("xA"), .value = IOV("bMpNwajFjzKZseuIlnLjPtjbVYEWmwTICHjsRlxDyaaUFQlGbrGxdCGEeqdHEkeLzaCQsCRpehvsSa"), }, - { .name = IOV("GzdRJARQNPwajkMPou"), .value = IOV("WrSUmTJNIuIQXhHnIKHjdJPvHhoaZeWWZYhHgCkTRbDMbuAhEyAjOeUzhuOyDXLvELaqliAVsoQVsM"), }, - { .name = IOV("pP"), .value = IOV("ywlaXVteFqHmVbnpsZcMAuio"), }, - { .name = IOV("MzGoCETOYWSZMQXz"), .value = IOV("xDkLZcoLArTHFoWSuLZtuvPhGbwGCJxtKRsjvznOdYpdDQyIICScuQesNqaizhgHRHHuoa"), }, - { .name = IOV("lbum"), .value = IOV("sSJjioicIatEYRTDXOsiWbmTmlERFzZHKTGlBnaDyALLdPzlYJAxDVEwjwGFjQmqFbUiCQofvfjcACHd"), }, - { .name = IOV("QfrgIHENrphEebpvDWcH"), .value = IOV("VpeMOVTMkvoMGUjXlSEyNOaKutefeObAfBJQITIfccfQaSEtcQcOZsqEFwkEHmM"), }, - { .name = IOV("AJsKHb"), .value = IOV("GoYDtWTvNUZodwTzJZvCQndOieEIFZHWlSCrkBxJlLuTxTkvgyLDEowmJEcqx"), }, - { .name = IOV("kKDlQCYVZCCfdLGdeKZc"), .value = IOV("VMVLZpUlorFLYDcDseELSG"), }, - { .name = IOV("lOPyaPwboCYY"), .value = IOV("MijuxYPOgODdSvzpJIRkatopLSgK"), }, - { .name = IOV("zRAwwMZChUZtJfyytUKJ"), .value = IOV("kZznbHWPYHJQTVLFhVSJangsBJFOZiCXchaKkqVOcbeGNaJHcJZZAtuclxepIzHFbObErVyeN"), }, - { .name = IOV("AuB"), .value = IOV("SPjsYnrvVZMtGeyizmHVGBzkeqLPxKNKuyYYzshdGlY"), }, - { .name = IOV("UIvBMUjcTziNHbG"), .value = IOV("jhiosNJHlKSuzWlPRpwfbbPoaEYb"), }, - { .name = IOV("h"), .value = IOV("MnKLNxWXruuIYrVSMaMiuCcQYRXPpBZxBfNi"), }, - { .name = IOV("ED"), .value = IOV("WVaKayWztFqbbsGrFtuaJSwkT"), }, - { .name = IOV("BkkSrShd"), .value = IOV("KXLfpYDrTDxKXDeUiPZZjqydnJzmqPhecXArMZXBJtEpRUwFyf"), }, - { .name = IOV("SWbPjtrxeaMmYLiwCVK"), .value = IOV("sgtSXUUJZcwcYgLlaOooTpQZT"), }, - { .name = IOV("kAgUd"), .value = IOV("EPFpSahisdJsvFihXCjZitJpqGaeeeFSiFJa"), }, - { .name = IOV("lDKbqOS"), .value = IOV("yalzyGVnvsfMq"), }, - { .name = IOV("suT"), .value = IOV("hxJTrsuWYcTTqzbpwHDKfLnJvpQehjvyhyDjFbYuUfroaUBIKqLfXwQAujOgbpNMqOScRl"), }, - { .name = IOV("Vpck"), .value = IOV("cKTOdQwabzAmlgEzAiZrDmiZa"), }, - { .name = IOV("sytSnuqJj"), .value = IOV("ZDXmYJaxYKyqLlaTXuB"), }, - { .name = IOV("rnMmhWpSeclALklrZZew"), .value = IOV("iSWEByJoTfEFcRNyOjnAwNpyYopCMmUwYPet"), }, - { .name = IOV("qkitZYMSElzowxqimEcE"), .value = IOV("OUPWuJXSFPRhrrJAQASgbpFdloWCjMJBrzoZWrjjcNUlRLbwIemWEjVLfyAhrR"), }, - { .name = IOV("grCMt"), .value = IOV("gq"), }, - { .name = IOV("OWNhzDWyysIxOF"), .value = IOV("dtMuEogtrqqBOYXPQmkKTtLpxOsChMRzKXqvgmbfWtyqUNsBiNNw"), }, - { .name = IOV("xUWLXwnLD"), .value = IOV("EwSYiiV"), }, - { .name = IOV("DFWorfm"), .value = IOV("rHtjEMNilsJBvbsMhrYlUHnbRrB"), }, - { .name = IOV("iQzWQr"), .value = IOV("fvPBiOxeHikHUhns"), }, - { .name = IOV("JHwd"), .value = IOV("eGHdSAaIyAZDDDwQWHho"), }, - { .name = IOV("lbPRBA"), .value = IOV("ekXYHKZbcuzLuDpzKQBvUFcYRdvWTlmOixfZF"), }, - { .name = IOV("HCqCnBSOeFtUXULi"), .value = IOV("VzmonOHrCpjrQKInFxtRSnYaWMgl"), }, - { .name = IOV("gwbjdrPDNuvYyXxUM"), .value = IOV("aIBFnXfW"), }, - { .name = IOV("qhfCeNizYdbWoQkcz"), .value = IOV("aRddOcWJsrAvfwnosVQOYXRgwbErMelaMsbmOuEQJGPFQZiDUXnZDzUUthnIjrrzDcMGWjOE"), }, - { .name = IOV("wwBaRLGHd"), .value = IOV("gSdkzwxOiloLSxuUcBbZJA"), }, - { .name = IOV("ISxPUGlkyzUf"), .value = IOV("KiLeUyMIdGBkrXIDazLTTcn"), }, - { .name = IOV("ItHJZkpMIoMuBPftkXJT"), .value = IOV("TvToINGIwQclDrdOileLynDcXYeFOiCshUvDxmzTiSjgLZJwvJfBqYXsEaSAHqwBjBBthAzvemwFyw"), }, - { .name = IOV("AALbnakjr"), .value = IOV("OJfNOrncqvzaGJWReyzCwpkJQZTHlJlwTApvOTBOyrwPJWiWZNvuBkqXlhHz"), }, - { .name = IOV("kXpZmPTrJHl"), .value = IOV("pQBeidtvnQLZNnNuIuHGPoaaJifFTPDBbbNXyMflBFHiGpZShQwwUpgpCRBPJdzVkZhFGePupMmcXkfn"), }, - { .name = IOV("bEPllk"), .value = IOV("wAPnlDXqippmAfNVBxQdjsSGbPpzEtTMaBPbqMxZOrkAUlhOUBoXcbco"), }, - { .name = IOV("wCoSjdLvBVDDjqPQL"), .value = IOV("AdYejLltjXlJEHCbVwQPGg"), }, - { .name = IOV("OylxWxlRveVrU"), .value = IOV("uckgxFxy"), }, - { .name = IOV("TsuVNamMmbOyFA"), .value = IOV("wLNMEQKMnvnZkkCRAdsQHDoaqtSOKMAZfdXkn"), }, - { .name = IOV("oVbYxXgExMJxWPsvsAwT"), .value = IOV("tsEzwl"), }, - { .name = IOV("gefkHYfPZgWifAFmkO"), .value = IOV("tQ"), }, - { .name = IOV("nrvUgepOV"), .value = IOV("rBdVdCryGYlhnboY"), }, - { .name = IOV("GHiTbZ"), .value = IOV("MnhMWtvJOGJIcsSxVxZuA"), }, - { .name = IOV("uqPxsOoGOCa"), .value = IOV("JOIgSfboVtDABydMvGjfzLPyZvUwarfXyzZNdGa"), }, - { .name = IOV("DIVaHCztdWHtA"), .value = IOV("RAsIlRPo"), }, - { .name = IOV("caDDriYFgjZ"), .value = IOV("EPejVjmDYeKdrwuWTbPetlCmbaDGXGTNyJZq"), }, - { .name = IOV("CpLua"), .value = IOV("KTtGgfJhKXlEartdWSAratLIdoPgfzksHVQENoewMdxxszaYagrdXdJlxytjEm"), }, - { .name = IOV("PYfZPsKlUjOFu"), .value = IOV("TlHHejqHEZnHOHGZZAlvxuE"), }, - { .name = IOV("ZAz"), .value = IOV("xhBhBkzSTtrFFXganghFOJMEoFvyAHyZGb"), }, - { .name = IOV("KgojEDMT"), .value = IOV("gLrvvRBuZGOSFmqmsPwHiecIjULcNLtXfvvleeFaTRIXkonocOTwcGZtZSWHMEhmzXTCwkpZwL"), }, - { .name = IOV("RKRxzIFq"), .value = IOV("RnIJMtxdpYrtigPmeVozyirlwjFvavJExxFmwgjYjt"), }, - { .name = IOV("sr"), .value = IOV("whJzPXfxDIdsEVGTSCfmcxQnNvcGaeQEscALgwshvGRuDzuuIxeMuXqzPkfSwRCfMRqKgYndD"), }, - { .name = IOV("aKGBhV"), .value = IOV("HIYWzzQMxnutWvrhEChwzZuGLBQOmGiWPNvGzUswNWXgpduuCD"), }, - { .name = IOV("KCQcovgNNBhlOSPiXP"), .value = IOV("LquyUhzWVanqHUKzJErcfhwwROmANUlYwzjgKQAzDODZbQviAfWrsClBpXVpH"), }, - { .name = IOV("AbkBE"), .value = IOV("BVyAPMEiZpMYjXHdTYaVJTQpmKWLitYoVaNIgvRRmROmDDEYustfSsUUEQnaqsScInkgVueglftb"), }, - { .name = IOV("xdidCPLGLmLoiQHWMDTx"), .value = IOV("zzDpAIiBdBYxIyeofdilLZCXqDlyMsbmGHiVzNDCnBTrPwkwQcMUoOIFPMHiHotIRd"), }, - { .name = IOV("MmLWEqPOQOLSf"), .value = IOV("ZjKrSoYuPaOaPrcnboXheQQUKsFPMoZPIuVivYNPuZhYKdSqhSqPKYOhBOzua"), }, - { .name = IOV("wqstrrKbZuHmhwl"), .value = IOV("fHUYZN"), }, - { .name = IOV("EXqSQLpeAPOFxXvIxua"), .value = IOV("fjekTTSGkbmVteelkRhgsuluCBiWoSDdYKVswgTmoKmvFLKpqEradaTUpiOXfQqgPtCITJY"), }, - { .name = IOV("RHihftgdPmWV"), .value = IOV("nRdxHvRSBzOe"), }, - { .name = IOV("deHAwfEVJOrSz"), .value = IOV("UKxqj"), }, - { .name = IOV("Bqrvw"), .value = IOV("sAsZvlCboSnmPwkZbsUIxSugcIcldpBBGPm"), }, - { .name = IOV("MquBOF"), .value = IOV("xjKXWBYzJ"), }, - { .name = IOV("R"), .value = IOV("CUvnYzOvcQWlieCxhIzgyygXshZldjZtPrdGPzcGuswPGhrLqcfhweWbOPeqRETjArpE"), }, - { .name = IOV("XJGaWGtv"), .value = IOV("ORXHlKsufYdlAvMJZ"), }, - { .name = IOV("eEgaZTCMWXuwvs"), .value = IOV("goiUAsHioFl"), }, - { .name = IOV("NDfBjRyCcWxiLQwCDh"), .value = IOV("rBPyDjdHXZrcBeZfUBm"), }, - { .name = IOV("VJnGsUcBtTN"), .value = IOV("fWIXEAhCdxxghbLLcQTDNNemETT"), }, - { .name = IOV("QptubakEiawrhPdW"), .value = IOV("YTORcuehvcaTQQniBmscjzLApOhQraULxGDjMxDiucVueqOh"), }, - { .name = IOV("PJjQVGAkEXbzyltuPYM"), .value = IOV("yXuLGMSrJjhuHDQNzXTRV"), }, - { .name = IOV("ySxOsiMgOVWNi"), .value = IOV("jwLTJQRjkrTcylyiSmS"), }, - { .name = IOV("km"), .value = IOV("fUVMiBXjstNSdSbIZZpIWltSxFqibYjH"), }, - { .name = IOV("vcEkocT"), .value = IOV("GBJPhlrTbWTeBeHCqRRbYBRJKKxXSKOmnCNog"), }, - { .name = IOV("RkqTgIx"), .value = IOV("kLosbZEURrQgqBixvXYnoYKZmXcEFxATcTiskMhHkEdTYXcOjfOlLWhXSaIYLYTXUyYz"), }, - { .name = IOV("bjmRKLqDaCYyjbvk"), .value = IOV("RuuOIPVMOCJaCQLnsHeYocMLyCdWcrsEiqsKblxAbXdoUhQflW"), }, - { .name = IOV("eMFqKbCoBfWCnU"), .value = IOV("wpjZPUHnUqVaThZMzDfzcmVNYLSaUzTWjUaNHPGToXgWCzYlzXXPsqRoVtZmgcblGkVyRnHfEaMw"), }, - { .name = IOV("dEzMwsE"), .value = IOV("SBQFGmhQXPemkQyPEXZXtGeURUoOhetVNJowEOEsKUMSHzwSaojRzOBJjaevUlbexbbEjcYGYBVPjyj"), }, - { .name = IOV("Va"), .value = IOV("cLCvdJtSwMeVKhxFJAhVZKRhcYApVSPPOlu"), }, - { .name = IOV("eXlfgC"), .value = IOV("NyZcoqQYSQcHEMNDCyUScgJFuRMOOMjKZ"), }, - { .name = IOV("TEGHzaCW"), .value = IOV("VnDOqnASpfHCjKdkXsKdhFZjRLdKIupuySwRopeeaJwgY"), }, - { .name = IOV("KfNdFnTnPaQ"), .value = IOV("OPFogKshipkjZHgOgcShSOQCrdZyQvmcyKmFOjxNArAIKxMyyUiSOEGuTFFo"), }, - { .name = IOV("mROOqOeNTDYWGEnM"), .value = IOV("zfUWqlpGQqtC"), }, - { .name = IOV("NZPK"), .value = IOV("gMVCLmzGhqxfEPAyGaualbWDZqXqEcFihmmoUymBOcTeLnomE"), }, - { .name = IOV("yijYAKDkhoDjAzrY"), .value = IOV("hkVJsvzmkEALpj"), }, - { .name = IOV("hKcoYdCqVEqtxpXTPt"), .value = IOV("uhiIdVSANkKLBicPMrFuQldOUVDcpXesgpTcRUVxgXiCbitFTZUqqXhntNWVgTffXmUKPxyVwhngKnIB"), }, - { .name = IOV("ZF"), .value = IOV("IOqdNmmJTcoRPXWrEJcveBqHRdsHnooCLkfvUelocKRawxMhWqdZzOQCS"), }, - { .name = IOV("vkAODELghiqE"), .value = IOV("vYSrHveZmvtRYMlIKKWgMOpfsOxUaFYkmfpBunHaGZZDKOvPvrTAnyTHhNsOjRHTgKoqfW"), }, - { .name = IOV("VUibYJhOhuLoeE"), .value = IOV("qTJOAUpuXnhSqcaxtgKnEqWKgHYjjyMPhenXRsRUMyUiLRnUdYthA"), }, - { .name = IOV("jh"), .value = IOV("USGMmBpsuxNbniFmPeypqyuYOPjMUaseDFzHHaovQUJRaKRbZpzCrqLwptPwuLajyGTLVhjPWLovH"), }, - { .name = IOV("PTBupkcMUleViitWl"), .value = IOV("FxLGirbwyiBvmeKeycjKIxvYoHlVtivdKUDaChGEzMvMrOVHmXmJJuP"), }, - { .name = IOV("VffGErb"), .value = IOV("UjCg"), }, - { .name = IOV("dRBHRlFdFXfYBMOUvL"), .value = IOV("eoWIeny"), }, - { .name = IOV("FsjPVMtpGYd"), .value = IOV("tJGpzaXkmSSVTpclZyiKkgMuiaQvxfEWCJtWdcyXUkG"), }, - { .name = IOV("wmgDzAqNDMHh"), .value = IOV("uraLXecjbuOFJorGQdaGPTLaCMzJHzPLICRmmxQFwBuBXJQLNTpIoqDnuYQvOUMxJdwnRTDlG"), }, - { .name = IOV("DVqNItsRPznHANC"), .value = IOV("rWGNXaijAZToKLgAddCMMYHzmfhmJLqsMx"), }, - { .name = IOV("XRWVES"), .value = IOV("hBXfyStxoBmwqIgfpfzOxWIouhfFisMUpHhYPesnTMToCiQWYDoEECcJXFxOqOLAZ"), }, - { .name = IOV("PYRazdRLQi"), .value = IOV("xavFM"), }, - { .name = IOV("xX"), .value = IOV("DmOKOZ"), }, - { .name = IOV("f"), .value = IOV("wVMNsbievsdxfmeCuYVjNLonTSiOzEzUbBbYhmROJFgBYJxZPXfFAIyhvwoDywKf"), }, - { .name = IOV("DaZvFsTawefVmpY"), .value = IOV("FYBQ"), }, - { .name = IOV("YfJ"), .value = IOV("VWyxXOdSWKGQNpwHLbxBGsUlxZfIJdtxZrAXMcvhlXztCOfqhFKhhHwKLmNQGwEuZAxFCGDoClvy"), }, - { .name = IOV("Bn"), .value = IOV("CvjiwKGQbBeIGCekRGfgYkodHCFdRVzXHSNPEJaVNHYB"), }, - { .name = IOV("tmFrwNPB"), .value = IOV("iUcNDsUztQdOcYqQXrnIBNhoqsPjDIikNOsYgMJRecqWNvPUXwfEuaEUHXB"), }, - { .name = IOV("Yv"), .value = IOV("c"), }, - { .name = IOV("Vs"), .value = IOV("EwqSuoQuwMuJdoagfp"), }, - { .name = IOV("z"), .value = IOV("paUzUtFhfJoXmJjJACKcKSunTgAYHcuekdsfroQhnIFidZkTKcplqCWNignjGyTJKiWcDPVvbisDIal"), }, - { .name = IOV("Vtqr"), .value = IOV("kuHyHcsnKXzrfXKJdHhJVJlWWiPZFgXyDnbPrGkaBFUrvcrNKFbRcdFAQu"), }, - { .name = IOV("QyAaER"), .value = IOV("QzyISgbvKrxraTORtvGLgfIegZggigHtW"), }, - { .name = IOV("QjUjsGhgpmeRGoXqE"), .value = IOV("RSdRdRldOJhyaYfHJ"), }, - { .name = IOV("gOYvrPYNE"), .value = IOV("toDjlAzKmLvAlLkdNIDHDmAiDHpSroTVDGNihRrwsgLjP"), }, - { .name = IOV("VHEDq"), .value = IOV("qFImttLlcaPRhceOHAioKThcbTPyrpcqrqUEMyUiiQttkjpZfzhVXaNzsbOmuRM"), }, - { .name = IOV("wzGtFCYKJGm"), .value = IOV("oHhymPEViGLPuuuLMSPmpES"), }, - { .name = IOV("hHpKWIansL"), .value = IOV("rxKurjInkenHFvBIsbXtOTOWJVECzGKCKVBZaEIAkqqRLeaMJGYSn"), }, - { .name = IOV("aFdUlpQQzXeBZKPQstBY"), .value = IOV("mjQwsfmMkZlfotqytNfnwXcKohNy"), }, - { .name = IOV("LtEm"), .value = IOV("HPJZOiydhbsBAuoRuiSNhEWUbnvkyNhwwhIxgG"), }, - { .name = IOV("ABqaFV"), .value = IOV("HBKLcCuRCdaMsbrJMprLcRzBMACkzSKpzlBZrOvXuTXvtQtyoBQtAaouuwkmfMxgXDRkPKYOXbcs"), }, - { .name = IOV("UGnIjbHVhSVAK"), .value = IOV("GtXfKglUnmjZeoeeomisqNdArpYBXVncTy"), }, - { .name = IOV("dNlUVvL"), .value = IOV("tVPstlIqCbwKqpHKqHmuSXbxRcmgrUERffTflATnafZZztGhiAzE"), }, - { .name = IOV("zZqR"), .value = IOV("jUdXyHoySiFFBTBDHAbjdFHChkHeTiBKsxrKnSr"), }, - { .name = IOV("HyWaCU"), .value = IOV("QeQYYmgurLpDjzuJkoUrrlUmnVxlLyobyshiBioSfIvqNehGDiMNvsBWTrGKbHFYsv"), }, - { .name = IOV("UjN"), .value = IOV("cvlSKNYSPAvtTiByGuMyCwPAyt"), }, - { .name = IOV("MGuleDd"), .value = IOV("KPqvfUjFOKgQDyaHIbbvgvHzhvG"), }, - { .name = IOV("AFTkwHg"), .value = IOV("TNNYDDjidYHYgaoZzQBjiRPuGBkLetSfbcUlZNUqsPdKLKVBeIUhVdcTuXYsdhlrTYYlxOxmM"), }, - { .name = IOV("GTyOjtqkY"), .value = IOV("oIlrzjMoruDfbRpGavFvNcfjamSJjMdQmOuFkMoTshgalPPDrB"), }, - { .name = IOV("EzACOgYOd"), .value = IOV("trth"), }, - { .name = IOV("y"), .value = IOV("VYZeyrqEAlasGKcUWjIGmJVyzNQhtLsMYjVoXtfNwvsYbGgbTkWsNpgsdNzPGQnZObSLNcvJAUJVXk"), }, - { .name = IOV("zAMXWlSO"), .value = IOV("yKuXBdFHMuSjLnUILXpDZvJblhfwhNQT"), }, - { .name = IOV("YXRcgazqBdI"), .value = IOV("qPtsWgcLhFrZFefjetJdCalYtxsSFdJJTwYNMoFWxdQliiqAjkcHZnzlQeZhwUnuEsPBUTsaXGZzyIf"), }, - { .name = IOV("wymxsDiwKDlE"), .value = IOV("cVCruQFcuLCHbOhaTmJQzaaeJfTPrlSKmosevINXVcgQ"), }, - { .name = IOV("AUxh"), .value = IOV("mqaSDuuPmjXVPmGnuzPxaSjkAzwbbwxbezPlIfsIfOXKpwmweaLcxvDZKLpEifygxiQGoWtNIZW"), }, - { .name = IOV("MfyNOe"), .value = IOV("xXZHPMJIEYtKfkQfIcQnQ"), }, - { .name = IOV("ziJEfqt"), .value = IOV("duppyRbhCYiEJXtkHJorjiAmilAbBypMwkzoyGFbXwTDByTy"), }, - { .name = IOV("lqDNGdlOtKCda"), .value = IOV("BrunfgQBkCUPHHWCgqMlXmNIqKizxWfkEPjaRhumGbNBPf"), }, - { .name = IOV("oNbr"), .value = IOV("VokEohaOXlashjYObAvkWeJT"), }, - { .name = IOV("ZQJbkXoFfWjlfi"), .value = IOV("oNxtueOxFyAmtcjsbPOKnYPXtBTWcZYmBqAMREGyQmtfPwjJQHnyDzmGndfgQrKfuqlc"), }, - { .name = IOV("yB"), .value = IOV("pNXOYcoInfUVUgIHubgam"), }, - { .name = IOV("hTbZTtLf"), .value = IOV("EBqzZeegrtPGwxheRVJVhSaMePCFZFeGTcsvDxPvFKOgBlNjbinPhOg"), }, - { .name = IOV("PJe"), .value = IOV("ZdHPpsVbTAhZSvBrsQlzHNfzuMtZhOBYmCHbQwtXeYVJhBHMBYKkxWxWAPy"), }, - { .name = IOV("WaAmusojR"), .value = IOV("OCLjZgCKZKPhiqWxguwmOtLviBmMZAEKBSUQcnUWEEhNeEUNH"), }, - { .name = IOV("pQYForSsOgiV"), .value = IOV("eGOJGneIVTfHueBPNvQNdUyepeCWnYbEplHxH"), }, - { .name = IOV("wsQiROBtfJkh"), .value = IOV("XbDeTajQxQYnmETWmpWooXpmQHNlyMJQZYsfcAYDyMvNZIUCXemgQgucOxITbUw"), }, - { .name = IOV("ynThGhLqBuMo"), .value = IOV("VGhPiWQsIWKqYEeqkSajNxqTP"), }, - { .name = IOV("RPEFGgIczvyxsfXyp"), .value = IOV("FNrzxD"), }, - { .name = IOV("kTip"), .value = IOV("oVfKcCVSYXkCCHJmNvHrK"), }, - { .name = IOV("e"), .value = IOV("sKiyWdFD"), }, - { .name = IOV("kWO"), .value = IOV("OWdkfLCFwrCRNoPHQHdZPCdyEVmtFNYwsXrqpAwvWbkWWULOcqyPBtXnbnjnmUTLlzY"), }, - { .name = IOV("uIFM"), .value = IOV("wtMZcQlItoRTHiezIVtuTeOhaCQosBErPrmldMy"), }, - { .name = IOV("VGrsN"), .value = IOV("OCdFVBkwIoHI"), }, - { .name = IOV("vpSiaRNgusVwbY"), .value = IOV("n"), }, - { .name = IOV("MvQxFYlzGHuCd"), .value = IOV("zFsABxKJRDmclAGFZeUv"), }, - { .name = IOV("o"), .value = IOV("yPXSUbPUaRyqdcPhIYUMwutIbhWFQLoQFqakoDNVFFsiCiIjISpDOXSiPHhJAuMPtmgcZxPwACfIj"), }, - { .name = IOV("QqO"), .value = IOV("gcYHMzkJXuAOIdWNUfwZsmOjxAn"), }, - { .name = IOV("U"), .value = IOV("HAsw"), }, - { .name = IOV("Hvr"), .value = IOV("bmuBaMBoOeDnKsnJOKhdBByohedSA"), }, - { .name = IOV("tBwSvLPVtEQagqnxdytu"), .value = IOV("gHDnQElCb"), }, - { .name = IOV("txqsWWAMglkvd"), .value = IOV("AXOrCBVVpRhLCbaIoBqESdyizbBlYgrQgrrGeVhAVnBsva"), }, - { .name = IOV("c"), .value = IOV("wKSMYgYDseXnMKKDnZdGMWkRtWxtsQAoYqfhXrjVZmdthP"), }, - { .name = IOV("QlFanEf"), .value = IOV("FFlfXSaSJYVgCtrNqlOhIEpSunjWWCr"), }, - { .name = IOV("rZTn"), .value = IOV("ShSHfXLObNqugsePuAeGrHSoUNPreUyawa"), }, - { .name = IOV("ytNwNKhRM"), .value = IOV("IksBjommLCsPgckYoinzFPVQRqCmnLGgpZezwHotWxGCLYOlWnZICnhUwPYwY"), }, - { .name = IOV("yazGZlwnoqSoNiwLjv"), .value = IOV("lvVpEQrFZRfRHdXDrWYYXHMOzofCeImnUoTONNMKlPjiliahramGYmQvCskMSfn"), }, - { .name = IOV("GlFmLoIxsgViVdgLB"), .value = IOV("IafnhnLvMxBDXcBKBZCKtuyUZgCVFBeERDGDoQQND"), }, - { .name = IOV("wRVxyggzF"), .value = IOV("bkVYKzepcYVvpqmzdinVptCaYJwbBkAPpXzgXrDOJZHqsnpHlJnqCiDwpPSJbcUb"), }, - { .name = IOV("cYkCe"), .value = IOV("RygBvpcRCTyOrXIxKZSIZDgYkXROY"), }, - { .name = IOV("CuXmbNscpn"), .value = IOV("uBkqNLTxhWIxPBjAAJntkMgsWHPeWFYCgkQdcdifCfPmLglxBHOKMfRMyAvdHUZvtPalNinDSqZro"), }, - { .name = IOV("iKUnIgoiRvaFl"), .value = IOV("GLlWorqWlZSpPxlVzRsHnvGzrwLJnLmhIfFvitXPtQbcRLnhEezvbOOIXhaKPRQIDNzeziBPOVZW"), }, - { .name = IOV("tgREkTKpXekRrPRE"), .value = IOV("JdpnoZrFcAfntcOoQolTXjFAH"), }, - { .name = IOV("ABqOESvBnkoJQeE"), .value = IOV("tiCFHLtWJyDWCpcBVGfGqkrQOttWesseVR"), }, - { .name = IOV("fpElFxNisbacn"), .value = IOV("rdIVUvUaURPcaqzQWxtzOYuzrRrxxrkZKkVAMfkW"), }, - { .name = IOV("TUwrrmgco"), .value = IOV("LnfnZKh"), }, - { .name = IOV("MVBLtcuVMI"), .value = IOV("F"), }, - { .name = IOV("ApyfQzkxsEhm"), .value = IOV("EbloHwmfWeIkqlwwvaHamlgpLplSv"), }, - { .name = IOV("mPzrPisrDcyzqY"), .value = IOV("bnkvPqRb"), }, - { .name = IOV("trcsyEVnDLs"), .value = IOV("xkVYsAEvOkOWaVGDDnuyeWqDmatgzutfLFJvQhMSIiByc"), }, - { .name = IOV("KYBZhH"), .value = IOV("ARctasIPdASSNhLxNQpcQMiZDMoihfNmYpUEiHVzNITOgVSsjrLfXbNZaRLLyp"), }, - { .name = IOV("xScEtqoHpJdMzSxvLr"), .value = IOV("TsyRpjxqKOPADKf"), }, - { .name = IOV("FfIGNsDXAnWdqr"), .value = IOV("DTYH"), }, - { .name = IOV("TT"), .value = IOV("VcNFSdsraOCrkmAPIWeivizyIBGxTAWgHImplQWOXUPLzuaypOuPGATcxKFqwEZuHANhxZYTYRFFRd"), }, - { .name = IOV("QzFwaBIXdyELVINajKDG"), .value = IOV("pdQeiLucOGvkUxzNPODSowzBpUfZKDMdafzPuIsHsBfuoMkPUFvGJCeWDwtRmRSNGePSaXfGnXVqXfjR"), }, - { .name = IOV("cOUxIeFNwgC"), .value = IOV("LjdbYxJvOFCMuObGLFDWOEMUiyJAESuTtCpAHuhsQfkquloFOQiUTheifkTLEZKvZvAnLd"), }, - { .name = IOV("lxqwdTeeXpysbFEbLok"), .value = IOV("rMeEjoX"), }, - { .name = IOV("uYQYFpwMNEDPvNtOLinQ"), .value = IOV("vecuGlHNOgPKMfhqrLuvImYXaHgLoPgm"), }, - { .name = IOV("Y"), .value = IOV("ygzDCvTPctKAxW"), }, - { .name = IOV("ZrpjMYLQaqxhzwny"), .value = IOV("VrONKVmYJzWB"), }, - { .name = IOV("BouuhqdApYllkNIfjSGJ"), .value = IOV("YrBvGdRoONvsLEvTbEKhneNRjCUATtyoHURbbAyJWOcokFocUDQcUxi"), }, - { .name = IOV("COtd"), .value = IOV("xiBhxEBpUowWtangeUIKGXWDPjruPycZo"), }, - { .name = IOV("uptbxvQIhZAeusWOME"), .value = IOV("lRYrPtMufJczeyMaxPeaUIigGTqSMbvTcMzDpDqQbsnhxoQmtZMBbhaeVOvqfnaGkcawkvJPedMNSVr"), }, - { .name = IOV("FlBnKKJOLrjLYRpoHQ"), .value = IOV("qffUrURbPmKOUpmlfbXFmFEXPJSBxtYa"), }, - { .name = IOV("SEBlwreT"), .value = IOV("ZprbmKprEoIyhIKzhFUxQTLbEDoguKHsonwSCzIXoXJZGRJkllT"), }, - { .name = IOV("ZTbsBSzEcGVTbEjV"), .value = IOV("LnbzEhyhpdfXiTUsjdwttCcdlAIBGvcRGaLcEKkunEAjarZNbZLLCSYCPwXysVeWZkdMZniDYL"), }, - { .name = IOV("KXFnDkFvjYYaXTMHswvX"), .value = IOV("XFcEzY"), }, - { .name = IOV("etQHZWHwqVAybVOehn"), .value = IOV("ikoVOjDJXfGezsFgUbBSVKyNVkoCrDLm"), }, - { .name = IOV("MVKJKjHwhemiBTQaPATW"), .value = IOV("GJSysJlC"), }, - { .name = IOV("oiVWTLLlvn"), .value = IOV("xTdkhZumBkazvOdllSUOfScjZsDgowGFYnzzZUqLliosVwu"), }, - { .name = IOV("fgNySeyKUtQmNVEVsPvA"), .value = IOV("aucVziTQtSzLOmVbFDnHELnzmlTRvsWluQXhWasrQPIkQCzOikUSlWgSvwlDyvUQDbpmyPAbPZt"), }, - { .name = IOV("GCC"), .value = IOV("hWMbwfNiUMCYzUyGcDOIHiInzGunGJQTUiLcfocarH"), }, - { .name = IOV("mGJYaKV"), .value = IOV("MIbMEImL"), }, - { .name = IOV("XBYuFNiFGZbKMmeSIy"), .value = IOV("ZSPzzlsfNjKGqyYdwTIRvdTDLXgyCVhurQCQOjxfOCThmmcFehwRQPOxNSAcKmZ"), }, - { .name = IOV("p"), .value = IOV("gaDaGFqJEyOxBLCFhhKEPcWw"), }, - { .name = IOV("S"), .value = IOV("upgOvWjFQfdvEiGBmkTQasURdQmuwLZPHDoQtuPaABJDppZuiNPFS"), }, - { .name = IOV("MjdBTuOgASH"), .value = IOV("CTStQwqJc"), }, - { .name = IOV("vrnQYTWDrxMzdVSOuH"), .value = IOV("HIsoEmDXisEXHAvBErqrgtqKkIVgTNpLCJZnxaDRIUeGpEZNLRgElP"), }, - { .name = IOV("BWuDQbfYUa"), .value = IOV("BSWRXrfuMgxR"), }, - { .name = IOV("mFkjV"), .value = IOV("cSwwECKmgksTGDvsVREvkghqEMYSzZaKPvzOqdePZ"), }, - { .name = IOV("apZUvWLqk"), .value = IOV("ludvXoqDKieGfQPQZeSCbwSGjAButISnjAtEgInkdVIoEhR"), }, - { .name = IOV("RRClIbQcRPVsIxZPwkpe"), .value = IOV("kEnJuTtKfRcxLffQdWblEBFQDmpCgBcULWlSfFAtNGbQjqDmHxsajkctdDwvEhvIHEZEseH"), }, - { .name = IOV("YbqfoFwtynYfnP"), .value = IOV("tkVtlBDbcbwVrGDHWHRljVubphEcHsXMFafiTgDdmBZYnbMCJCkIihpjNhZOekVoqJ"), }, - { .name = IOV("mFIUMmGzM"), .value = IOV("IrYoZPicWzPZhOZWhsgSRFmXHrfBFOZxjrksXwhBPbDZnCOhlZQC"), }, - { .name = IOV("mOKZNW"), .value = IOV("fwEJdxuGrhmMrlTAHxIuvFLsVCYalTXVhzBiiizXzcsbsBErCEViArXDhTxtMIEoyFtieemzEafFLkS"), }, - { .name = IOV("MIsXCLszteZPSHacIi"), .value = IOV("jJSVfzSJwQxUaPupIoAyzAePIOcvDqToOxnmfgFzRI"), }, - { .name = IOV("yQs"), .value = IOV("UzzGILdSgDMYrCZCpbbfRVygQrEQVsgwLIWvhyZmMbOoTdknHkFiZlkSuAHXObgNVEjgpbQDd"), }, - { .name = IOV("kUDdbcXwQWhHZd"), .value = IOV("NwRdwAnjmxeNmlRoMBXdtRFTRmUvQHBpgYMjDoFDGbGNJoMmXecRLtUtpNnQTKc"), }, - { .name = IOV("GknCGyCdfQreHEdn"), .value = IOV("TkyvczIUetDyQoRelktK"), }, - { .name = IOV("PYQLTBt"), .value = IOV("oybIpzbinGgrMblSncatAD"), }, - { .name = IOV("aEszBHO"), .value = IOV("LiKMtUqLRlFyWvNGHtCEKXbsMROWjdOwHevvWOtGeoeaknmvkaHDBUmSdHmZEsZfigeWPhgUOpXiR"), }, - { .name = IOV("sijaQo"), .value = IOV("InvPmnGXzUwIGocFGScEfXivHFegAotzcUjiNbYwygrHZvjrgsuLRIHOgQngthoxPcYtEm"), }, - { .name = IOV("BWQSIHaRAgzQeBOLP"), .value = IOV("EPkvXRvsaXXvQdHlFiERaMLZHGEBJMqlzDVcOuGqQzOVMzDhtKvwJsE"), }, - { .name = IOV("BCnFEBkMT"), .value = IOV("iFQGGsHwLCSIywlQmRJr"), }, - { .name = IOV("VbCHECIPMINmBvJO"), .value = IOV("mBdYYaALbLCPywktH"), }, - { .name = IOV("YhLXObupyXfpzsFECVX"), .value = IOV("adNrgkkZcZXOtwlaYHKIcJQARJryuyJlvm"), }, - { .name = IOV("WVJlpNMVBZmPnTkBRfL"), .value = IOV("ft"), }, - { .name = IOV("MkZRrIaboCxfdbgpwhH"), .value = IOV("VBPLvxeOmhEYTEMsNnOOwyAXxcVzRvfCknDBxdTZf"), }, - { .name = IOV("SIcuKoeOlezAMIEiVeY"), .value = IOV("bvIaZfAIaQhNfUWyTFfZFnKksmCzQQqMDVfaHdxlrUzASTqCuXHmLbOmOEmPywAd"), }, - { .name = IOV("KZEcxoSAwB"), .value = IOV("PfLxDaKvwriobyKIkebDPbri"), }, - { .name = IOV("xFn"), .value = IOV("VEfXMWwdcuLaPuInNHVlgmFJGslgAImfLJFbWIFXqcAGMAJVqszyWUWEAGkTqOIwTITy"), }, - { .name = IOV("rDgwR"), .value = IOV("RKPjDBf"), }, - { .name = IOV("wlvafao"), .value = IOV("o"), }, - { .name = IOV("qmwwvmVSIqKLneI"), .value = IOV("QEdjwBvIVMxSfqLoxeeZW"), }, - { .name = IOV("uWlbcXOKUEBXZdNUUO"), .value = IOV("qd"), }, - { .name = IOV("EwmKqLZOpoJBw"), .value = IOV("aumUWASQiqESBQnoEUSZlwkIWGryNYZhOQrL"), }, - { .name = IOV("GQoQJTbqO"), .value = IOV("tNswFUSZAhFmtScWsFzhxNUNCJdzkLiKmjxAOWjGqAzwEledEDYvNuKORzjhhmt"), }, - { .name = IOV("Kdvrbp"), .value = IOV("WrHdLIykypwkwBQQUrvxDAeJnOXtgAMIF"), }, - { .name = IOV("aHJgmySiz"), .value = IOV("ZAWKYJkUBRhqnMPMIYVJJjBObBuwZJilhtKiZsjWRycfeTNMzBAYanERMGD"), }, - { .name = IOV("QjIAGeKr"), .value = IOV("JxTRssWHmlsCWYBEMoXnjZPxOTqichwAOSBdENvJeO"), }, - { .name = IOV("sbPJW"), .value = IOV("nTvXDzlPizfODOPuWNlOYUCBwbcbfSkoGg"), }, - { .name = IOV("mpIniquehLoJAcim"), .value = IOV("KOopJVAzfiCswltvFjmNSfPOWQPcmWyMpiWDIoDYVIKsaTiLF"), }, - { .name = IOV("eEhf"), .value = IOV("jlTrRXIQnBKwXhlbzcwdALJBIFJkUTHYWgqpfEF"), }, - { .name = IOV("USouzIbcnCqQnSJJex"), .value = IOV("eAvrzmffhgwOtxlsbuFdetkGabEqq"), }, - { .name = IOV("Zaitii"), .value = IOV("ReBcgCpkINgGe"), }, - { .name = IOV("eeZFnQxXNCyKGxD"), .value = IOV("EHJzCRQGXaJyntCqschWZnbqmEaUsLqnZZhPPaViASgTBVeGAM"), }, - { .name = IOV("FLtgSQiTnaeNKCW"), .value = IOV("hr"), }, - { .name = IOV("SpeYkeJMCNnHMLhcpTvq"), .value = IOV("lXwgzjuMvfmPwFCwUxzJgXhSCxjWIOvmJvbEaLzmpRnb"), }, - { .name = IOV("SXCTFVhBTKJaM"), .value = IOV("yFku"), }, - { .name = IOV("R"), .value = IOV("yMBsjkSaNoLca"), }, - { .name = IOV("WRPFwEnHNcsb"), .value = IOV("vBMxaNpoqJJhcSAjm"), }, - { .name = IOV("XulYl"), .value = IOV("QisatHWMxbuHfXyrHJvsIUWNPYieDJYKhQJXPseDjhBno"), }, - { .name = IOV("y"), .value = IOV("wevOtIhMUfWxKltmgOFbiVlMTzrRvxMqdPzBlMwKZzYqUmGBbGbNJWBnNelrUrADkEnhGVMynCIvgnil"), }, - { .name = IOV("fsslqtZBWXBYlITiVFv"), .value = IOV("UWxTtKNONFVgFOpNHNeOdnOpayjemxBgeKhtGjqoEXqKwqj"), }, - { .name = IOV("FORJhZwirYDM"), .value = IOV("UNsALnXdjBmpVjimLknatNS"), }, - { .name = IOV("Ho"), .value = IOV("vAelcIbtctORgxTFdtxjxUatEyhEOUfwQW"), }, - { .name = IOV("xg"), .value = IOV("ZNBZIyFAexMMXxhXpkZNBMYnmLIyriGpxCtwHVRUyPlLxJvjDQqf"), }, - { .name = IOV("EjXCAnYfkFXgfezbRMT"), .value = IOV("XfLpPGdLFawzWhhLPtbrJxYuJfExQSFLTJRnXvfTl"), }, - { .name = IOV("SZNJsrLfrRh"), .value = IOV("QlzAHlDcGUkdwgcBGbTrNRrRnQhRztXmuBMvIVkqOsjSmv"), }, - { .name = IOV("pLkDZPWfzmMTuZvfhNjX"), .value = IOV("xJyGJRpMjQyoSRuIRInpdYCpYnYuookVOtfispRQCSunsoXTlrtacTqYILhtyG"), }, - { .name = IOV("dOdfAoaLbfPeIFDQIQJ"), .value = IOV("vR"), }, - { .name = IOV("HCnjcLEIXPTPs"), .value = IOV("YhoybSJABYQMBRrdxmGjltoJkVmafKpBuiaqXkeEPFSUFdJCEKkfYu"), }, - { .name = IOV("FZWohpq"), .value = IOV("okGqZFw"), }, - { .name = IOV("wLa"), .value = IOV("GNRYjWKbTmjHtnZbNAiDOaCujCjmHsipEaBpHlBezyNHzDcjSI"), }, - { .name = IOV("tWFbvSIEiomNEBxTIG"), .value = IOV("bARmqoaEYsKiiaBEGwZEHzrwqcKhqtzRPkwNopZPRxcYbzZbjrCDFTrgMyWOmMIzwX"), }, - { .name = IOV("LCYPrHXNIVhjVCBi"), .value = IOV("DlplxubsxVrrVcevKWVAQrXUfCDrXCmlkdsARpgHpjZIhCVniuBedWaTPoY"), }, - { .name = IOV("IZWxh"), .value = IOV("ncuUqCfxLwDWRzIGptWbdiRGcSMnHYEmgmHbdvuWWTZzfCFQdoIDsvlUUppCvCLAPa"), }, - { .name = IOV("JMSXDFyjAnpbmrX"), .value = IOV("xiwKkvdwvXMGBlEmZzSIgFmuXZWKKCuNZBgIxdpVMGDoQzCgzgeCGxEBPIpPM"), }, - { .name = IOV("ZQszIyLPeRp"), .value = IOV("GCkZypuFPqUomzkxgJPoiMPszRWVJdwfpBBfCwUrabqoUZm"), }, - { .name = IOV("wZvU"), .value = IOV("xoAQivgapKTBhlckVReSJsfWEgtfvZScMlvQysyXyPultllwvhOFxTaPiykDKyVgcXWhsdtaR"), }, - { .name = IOV("eQSSlTjnBBF"), .value = IOV("iDUTBrJTvmUFVGNIPHVwCrKVYLikaqDYQt"), }, - { .name = IOV("aQ"), .value = IOV("SEXahhhIEeqZAkOJpNMoZyCwEg"), }, - { .name = IOV("sQXmQwhnLozl"), .value = IOV("TVPjljXfWHhHF"), }, - { .name = IOV("TCetWKZGtzK"), .value = IOV("fjsOdddAWCmyTbl"), }, - { .name = IOV("IM"), .value = IOV("o"), }, - { .name = IOV("stU"), .value = IOV("HWMmRyjZwSKJERJpsCerqXowmnZYxKIwCcWlsDXyxshufXTuMzARFnUuTioSUeMdbWotNJoGUdPm"), }, - { .name = IOV("OjQQIgvoGZ"), .value = IOV("xnYCeQLJbVVeWFaHqbWirxyylTRxJqeLzdVAJiBdVOEIxokNMvyZKMgZ"), }, - { .name = IOV("uRbtNpJHOUpzAQZEo"), .value = IOV("GidplNMqLduXjLYrNweeQgtEmzCvrpUsZDswAtKG"), }, - { .name = IOV("nYKyFAaJpGgxTvvhO"), .value = IOV("zQmVBNahttpWDQGWaKIAPamNnJVPPhWIZgwUXkKgzojocUjmrKOVYhQFPQtGrKljIHtFmyJ"), }, - { .name = IOV("IkbKUQBFxgKxM"), .value = IOV("xbmacJQqOrMlnaQWsakEzSYixHFeuzMYhBHXuPLIjL"), }, - { .name = IOV("LSYNmfMjewyTGfgBcTSq"), .value = IOV("jxJIEorbZjbUMNnyfWmwHSziFDDfvsoeamHclLTNvydfsbKEuAQVITFToGYsIqbyAQnOEZFgc"), }, - { .name = IOV("hJ"), .value = IOV("VpedWTKxOCXjZzduFnGnGWFfSQFVcoRDQrqFIOrMfmyt"), }, - { .name = IOV("ChvRoQYPSwgKJBYSf"), .value = IOV("MJYwFXZXRaWuoEGkFCHtlbiyKrnPxMXww"), }, - { .name = IOV("qttxqBEJWyd"), .value = IOV("EeEbIoxTOkvOabOVrNGdGlnSurJILHBOQcLkVYZzEsulMWbA"), }, - { .name = IOV("KBXLSAyimHtbKJOI"), .value = IOV("gdkTFMeFEYeWevnVIFNrYVoVgTPXHiyTBgCBVgtDKGdaBxFwVpfGGzqaJThJVves"), }, - { .name = IOV("GbwJRmScGX"), .value = IOV("WSguypTVCjdeOnLDPdMCbqPrrJmjamWSGzCR"), }, - { .name = IOV("wtSbOyyDDpKheABe"), .value = IOV("ciAtMQqoPjyvryY"), }, - { .name = IOV("TowrrBETdKvWwMBJW"), .value = IOV("HAlmzkScZnbaOWRhAaFwnLTbbTXUouZovcxgSUMkyZaHKRDHalintPL"), }, - { .name = IOV("QiOmIpwEFNrwcpZGp"), .value = IOV("tsdhSQbLsiiZLvYWMcfPuuDTqBWewmiEgxmQnekkHKDg"), }, - { .name = IOV("wXsgaIkWGee"), .value = IOV("vEbjeIxBKEfVffnBOJfFpEyYagHKkArrcPzDGKORRWTPPBHEreJbAZiphyrpvTPOQW"), }, - { .name = IOV("AhzcIwRWPNrd"), .value = IOV("LIvjVllveSroYhdtwJPayGEizabLyzqIu"), }, - { .name = IOV("Nlinl"), .value = IOV("HnM"), }, - { .name = IOV("aiEDHeUQqgukwtjx"), .value = IOV("KcUJCOdmZuffmJVJxPCFzJnGKvRGKAyLqBCEwpmCvKrQTFsSBpAXqcHiWd"), }, - { .name = IOV("gvlkQm"), .value = IOV("RLXDSKBYKOMBVAuKeuFXkRVurSQFfYrABtKmEkZTS"), }, - { .name = IOV("eQBrAgmvkkzaBEXO"), .value = IOV("asSfTPFxdjZTkZoTEZsYQhsaUkjMXrzww"), }, - { .name = IOV("lTkzJQv"), .value = IOV("TEMhlHMOTvQmSYfrlMQlDQJgmJLhwBeulPlMlOERUJSbaDctQRCqUZlycSBE"), }, - { .name = IOV("QVIkKdKtRGEWS"), .value = IOV("HDEUUXEquCvKjNgqqyYJhmoiKMlIJEhkOpHVfRIMunuLj"), }, - { .name = IOV("JptP"), .value = IOV("WlujGREUNSdxe"), }, - { .name = IOV("IpZF"), .value = IOV("ODgevKn"), }, - { .name = IOV("jMpqtts"), .value = IOV("kpVWPV"), }, - { .name = IOV("YjL"), .value = IOV("hapSCEyvCHSYJuohGwQ"), }, - { .name = IOV("HqOQVQAeubhRPZvJXQa"), .value = IOV("vsuDrYlcgFvGfpCpwqruBVBzzPDiQmGuJzJgxBuS"), }, - { .name = IOV("JcYeaDzzkZBWeTbCap"), .value = IOV("SeAgmZKujmzrxAtuAAkwuyVAZljovZ"), }, - { .name = IOV("QZNdYADc"), .value = IOV("tZmfdcWdHknJbAmZtSoAYuFdQFsrlNcPHEcVTCZWppTEBTWihtplCTElXMlPTmDDYGdQzwknFYdbsdVS"), }, - { .name = IOV("x"), .value = IOV("fCXkzmWuLSLSOUyljpFolICPcEgLxWRzhOZqveZvHXSlJpPHGicxqdemWwtBXRAEbfxMljZzxzMxEB"), }, - { .name = IOV("MgL"), .value = IOV("RicvjK"), }, - { .name = IOV("tapprChivUShnOZKsyp"), .value = IOV("aKKhyBmpBVnbRRCTVCvxwjrHn"), }, - { .name = IOV("NMZlUwZPaiwdsGfNAJb"), .value = IOV("xjbiMaUedAagaDxssjxQMtWSqTuzQLngMYVTfgIlsqSswe"), }, - { .name = IOV("sNsMTKGSs"), .value = IOV("mWsSVDcWIxarBTSQOJOOGoDyhaAnHnsGkaMhmCPNbLXKbAvrMcXcyfvnbCHEeRaDPTJrNEReqjW"), }, - { .name = IOV("T"), .value = IOV("FycwJiDuXtuzydPaLynscrR"), }, - { .name = IOV("uzCtVhkt"), .value = IOV("qBORVLOkoYcYVF"), }, - { .name = IOV("FsKrRy"), .value = IOV("cChVbAsiRcKPiAqs"), }, - { .name = IOV("csZlfnRRvEDimlvp"), .value = IOV("TiuFeG"), }, - { .name = IOV("WZNNYGFJoAAJASj"), .value = IOV("PgMKNcaIoopvCkHmrSsTbZcfi"), }, - { .name = IOV("MVvOlzkCTYVwuvNlcSdd"), .value = IOV("GQuUy"), }, - { .name = IOV("FxhBOtrtvZcqBCARdAwm"), .value = IOV("EciZgFcBMybBthMKYSrwpptkTIDojWnmEsjrewWFFLwlCPvMcEsMaHfULiFuAfroB"), }, - { .name = IOV("AHwkoXNMRTggxWNsz"), .value = IOV("uelZqRJbtiVHoLVmgTqDpkiURQCtNqumQBwnFHTYYZeolPJRMmNLoSkTWCverwvFCRrkMxmUSUPkuTn"), }, - { .name = IOV("QUdHAawNQaoTef"), .value = IOV("pgvtcVxPELpJbXUNGLUmOhEkjqgLqEmpA"), }, - { .name = IOV("q"), .value = IOV("GpDlWuRRaYVmSudzDzmxBaPTuzebMjPXOiXvdVKvavlAwamHnWvoQT"), }, - { .name = IOV("gXS"), .value = IOV("rTRBXCbqOrbmdqvzMuiKaucwSEDrzVIMPMosbUoiBuP"), }, - { .name = IOV("ibfnBSWBFjuYsyN"), .value = IOV("wzruGTUsyrAnClzGncVwXJsyFfelRoLMhC"), }, - { .name = IOV("FVfPFXAHpkCW"), .value = IOV("HcLnYQnzAVfAsulZYoIZGYFsZsVcqYcVZBptayfAljF"), }, - { .name = IOV("LAvngKeWOwSseARRH"), .value = IOV("dVUlLfUdeKRoiiWdTBZyotbSBSmWmoQBAMTzcWQGusuXFFDDgwEuIBurUFCLMymtdYjVQuJpEgqpe"), }, - { .name = IOV("XF"), .value = IOV("eSDITMQtaDUQARgwVcpBOooFhnMeEeFWySeRXcZfTe"), }, - { .name = IOV("qTXGvvQHjBFYc"), .value = IOV("yRemKkXQpt"), }, - { .name = IOV("njreaYcKF"), .value = IOV("jKrVCGsDkqaPlzbrtwTBmDtMKfjTdQiMnGYmpyVPZvxWfjlkPXh"), }, - { .name = IOV("xcnht"), .value = IOV("QXOyQuDpafMvwSmrUwjixlpEgQOANUvRItnxeovRAhNZNILixdWZKRsIJfpCwtNheITV"), }, - { .name = IOV("UmtOoooirYyMs"), .value = IOV("kLIQxqeqjouEftwiyTrNWVQkD"), }, - { .name = IOV("FbRVmFsw"), .value = IOV("QSBcSXaojWMsebTxpWQeP"), }, - { .name = IOV("xwGs"), .value = IOV("AHBANWaisjRZOmIQvuMOskVpPmFKNSYVqYRPjGXORlwgcoOTuhfForJCVFdveYGFYxiWhUic"), }, - { .name = IOV("C"), .value = IOV("GNYELBAuCWKOyqdjfdXfHqYGThhlkJzyGHpgiJBYNhguGSxVcvqhtuvSANnjvjuEGRyPe"), }, - { .name = IOV("dDxjtBvY"), .value = IOV("aOzWRUQtJpchnqvvMIQWwxzCsemSGlCBz"), }, - { .name = IOV("KHVOoRrJdjuBsXBnbdx"), .value = IOV("QghufyDWsVDuJNogxdAtuPKEWRQBjGnQpHmgEsVoZNOxapqRXeV"), }, - { .name = IOV("uaIqOnynD"), .value = IOV("bucNyAgKGBjtyabeVjOEDbGMhV"), }, - { .name = IOV("fXwbuEfgPMyhimznzRi"), .value = IOV("yXzPBNvRZqDTGRfzIBrYJkkoMRfHDkg"), }, - { .name = IOV("Dr"), .value = IOV("HaHhMvryLukAdOvP"), }, - { .name = IOV("lEdyBhAgQONzXLPLA"), .value = IOV("EPuSBSkdEIdpEKfXXBfxcmJXhtkBOTsIffLLCAiiodFwRdAcZjRuWXvzBtkESPXCTedgFt"), }, - { .name = IOV("YF"), .value = IOV("nOFBJePfaPmHLQZqDbbfdzDxRaXPpvVdyZrZNLfxJEaJvfhIoITcZEveYfwLcaNqsmASDydIBHosh"), }, - { .name = IOV("ELQUZ"), .value = IOV("Qn"), }, - { .name = IOV("tnudxDKFjv"), .value = IOV("rGZlnImZZlgB"), }, - { .name = IOV("x"), .value = IOV("kWyxYfdlvncIpIDohSIDowNsTUxjxeCckAECIyPNYqKpMfPhjMpgi"), }, - { .name = IOV("MmVQdPHAeC"), .value = IOV("bhulFUhGwyCSQwiKMbLdfFvtHQfPa"), }, - { .name = IOV("hM"), .value = IOV("ZKNpZMIRgJaw"), }, - { .name = IOV("O"), .value = IOV("SoKYAJUNsDlgBpdGXiqVzVxPUvrlXu"), }, - { .name = IOV("YYWomdcjSzYxhylLJnS"), .value = IOV("UHsvwYrefQdLEtSlwLAzchbqfGjTCFDpJFfRtifOnfwrpIDXORSnSPjqfrSQMDBwQnRkcm"), }, - { .name = IOV("rrzAgByNxGM"), .value = IOV("rgfUsuKPUsqLtASBDkvsXtqA"), }, - { .name = IOV("ZmHLDamhfrzAbCPNQwN"), .value = IOV("jgonbpXsXDfiHykRbtYzvgbqskTYgLLltZXGTPNWKRnyTmvvMdFmSybUvGVzhwP"), }, - { .name = IOV("eghlanPx"), .value = IOV("kRrKVyyzKpIIxIlhig"), }, - { .name = IOV("CmdcUPP"), .value = IOV("thPAQqXRKdlZnw"), }, - { .name = IOV("ZFAKLipnEBvwKHCE"), .value = IOV("vGNaweQhodaBcayRlpWqZDuCKZETcVqpQQDuCBGDgbQrkU"), }, - { .name = IOV("huMITjudNlsPcXLIprlZ"), .value = IOV("xoKJWPeuzHinGDDINQbcCfSKfEYxBPAsbcIjcswUMUoSkrnoDSFDiIkKUfqhMcOoqKjOrZVKm"), }, - { .name = IOV("FoZYPIzzymCFu"), .value = IOV("GzgGxdxXgwsFdZleDkrNhlrhDvWjvxSqINshgncfDFTcYjyDBvF"), }, - { .name = IOV("xsQtsqJp"), .value = IOV("yACBBUDKpXmVATMqSVaizkMkfqJYOVJEjqgBShVkwIU"), }, - { .name = IOV("tii"), .value = IOV("EpQYcqIUxrFlHgPORwBtlwTqERWIUCuEwauwaFarvkTCsVRVoTPJJMZUxRWpw"), }, - { .name = IOV("mfVIrASVGYFq"), .value = IOV("ODfxbRLbBwnHwKZERYmtJxdUIHx"), }, - { .name = IOV("zHytqGuI"), .value = IOV("fClHlpGEpunbbkhgRcBuqQowEWjKdHyTFKHTrVFDxxrxPbYaYnyDZAfViUuSVP"), }, - { .name = IOV("qIJeD"), .value = IOV("YnFiVYrGKyXGEhttiWyJzwEQhLLkwSDzWkmk"), }, - { .name = IOV("JAkEyIqjJbuYEN"), .value = IOV("pqKdpQxwQDJRYAQGhDceoUhesSqfmNMcjHxBmeoOPddpYl"), }, - { .name = IOV("icMUwACrAgZMQB"), .value = IOV("mnUCCsreoGXaojOnJiJILejdFIurUNntvKEjhvdSlgKjCLmwgVfnTmnnJJcKSdcIPMklv"), }, - { .name = IOV("jNX"), .value = IOV("QaveKWuVZYXMrFkdxqsfMhPXNZgZdsrrIgqghJUSIXRrJPUsGabmJtudxDMNTMiCHJYSMovGuyMih"), }, - { .name = IOV("WH"), .value = IOV("MTiAMjJHCEbJKONCPOzlZiPfUuUmpFkpJgjBVDPSJABtv"), }, - { .name = IOV("YOeyBcdYMPqyBj"), .value = IOV("WMyfVyMPkWwlIWHXFoFptRpiL"), }, - { .name = IOV("cjafYNR"), .value = IOV("zMmoWZItpnHpIwXIPBsHInEaScbbqvDV"), }, - { .name = IOV("fmpMsKtGXemsGJLmZSU"), .value = IOV("yZHc"), }, - { .name = IOV("eFmlsyUOsjsAFhRIMr"), .value = IOV("NhLbHrdpwmUJFFOKNenikjksgJaOBtQcasyZxxTWIAVhMmTQhrxRaETpIkqwfEMggc"), }, - { .name = IOV("DfYQrUXpwGekL"), .value = IOV("pFVrmklVWilM"), }, - { .name = IOV("NKw"), .value = IOV("PyWuYFjrVHarPJXSF"), }, - { .name = IOV("uyXvrlj"), .value = IOV("EgZWDzcaeqVZNEUwwiEHCfOLGnCBmIvcwZAoVdGhVnxCKaTYRLBZeWJZOsGMqtn"), }, - { .name = IOV("bTfgbiecrRjGDofjVvyT"), .value = IOV("QGZpQkwpTJgGUDlkVopvJymPCHNKSPZoGIzGZKG"), }, - { .name = IOV("TaQQHTQTGSyJtXxAqF"), .value = IOV("SnKurFzAzfxuCNHSXHGwRbgYL"), }, - { .name = IOV("M"), .value = IOV("ZS"), }, - { .name = IOV("Q"), .value = IOV("vycUuKKymhKdyPVQFPkOdWuLLrPQTPGyOigNlVjplNTfGbsFZqXzpzPxgYBXkvedUXBIctzLXXgE"), }, - { .name = IOV("vAsJLQVgqjFEmsMvK"), .value = IOV("ndjBmawVjGTCyqlbKUYfzRYWHzHKbhIVXuFeDMoUctytYgzNIkxacEwXUzbbPHmVtBWTSePUD"), }, - { .name = IOV("FtEZmKfcTaUQvkzssW"), .value = IOV("AjdbNLbUyJsBhnN"), }, - { .name = IOV("ILTgf"), .value = IOV("hViCIMUVPtRuPTOPxpVvcFGpqcYIsiRYDMSJIzbvqQTsovVCcMFKwlqxdGSYDXUXvoKUF"), }, - { .name = IOV("tOuOiCVYisYZS"), .value = IOV("KtaXaFMrYQWfKJFHlslmYtXjCEyEkGLxAPSiE"), }, - { .name = IOV("wCDjnrcKhzeSmShL"), .value = IOV("jvdFqGjQWEjXccJjxtMbbgnWnShERCyEcPBBibsPIYFikrSHIzg"), }, - { .name = IOV("U"), .value = IOV("MNjU"), }, - { .name = IOV("dSYQVvlwGyOhNdibflw"), .value = IOV("gHt"), }, - { .name = IOV("csFylKppvtPMWGVSrfk"), .value = IOV("BvzPXhEobrGSyqfB"), }, - { .name = IOV("zBCxfIlwmtOc"), .value = IOV("VQzgBhvOtJLPjX"), }, - { .name = IOV("rjKXXPOpKVSNt"), .value = IOV("RfRFnUjGSyxxtvRMmsvMtWPSSqCkeAwyQRNFFQmkLmMlpuqMfKbiFlFzowizwubwACDsgffKsOcc"), }, - { .name = IOV("mBHJIrCtYnh"), .value = IOV("ESdZBwXJFiRbD"), }, - { .name = IOV("HVPzYkJhDpts"), .value = IOV("N"), }, - { .name = IOV("bcStJBN"), .value = IOV("IPrPZbRIBSRvZBvGwljRmwsIG"), }, - { .name = IOV("dqlilnADHdWYUaRsd"), .value = IOV("nncpszUqohdNCnEaMBLohUraezULLrgnxMFVHyQtqgaRPbMtBrQTUV"), }, - { .name = IOV("gPlfpZTuBA"), .value = IOV("OJKMRugidRZzgRrpPBSDDiuENJcjNJbSsMZvPTzP"), }, - { .name = IOV("YkbMtbiDsZbZDMsxHW"), .value = IOV("XaWcJnuencsqtJttHeOkdb"), }, - { .name = IOV("cHofAgdZKWfrHzDfm"), .value = IOV("bqhalKBfYNSmVbeUbfAddGjpUVFnfWsBSKTEQMVXu"), }, - { .name = IOV("VYtIPgHSFRk"), .value = IOV("atIIkzNBgdkqwKvujhEIJjWeOyEjHMnwDoJmgUWzNS"), }, - { .name = IOV("XN"), .value = IOV("VVOkCFdxozifJDolkvBOXoAyTCrbYdXGazJgnxjsrqLUVudfUfJKHOwfVXY"), }, - { .name = IOV("FbUS"), .value = IOV("lOwcHPCcapjdCZyRqudpndCRAl"), }, - { .name = IOV("ESRKI"), .value = IOV("EVDvEjY"), }, - { .name = IOV("gW"), .value = IOV("iUsotFaUldSIinhLdURfwKBZPNfaqTUsLPivwTngmujxwaECVhyoEvYSBQSwygydNxtZwSzYps"), }, - { .name = IOV("FcnfNPq"), .value = IOV("ganwcuowwnLVOAXIOIPgpRYyLKAVhhTliFJczDJEgd"), }, - { .name = IOV("hwJpneEYDa"), .value = IOV("PNdhICDIOpoAyzTwrhiiD"), }, - { .name = IOV("uwbrgOzaHMUyuOTZtOyu"), .value = IOV("YynlqyRysANGUIjpndJzsIMScploXtERvdgBIkbYobuEZStHjVLZzOYodvxCpStOeUq"), }, - { .name = IOV("LanZnvgcvjkEvoVfSBAu"), .value = IOV("kHwVvFoXqNyFxphuW"), }, - { .name = IOV("vm"), .value = IOV("GnJCuQUpsEKQCHHCusfhhKappv"), }, - { .name = IOV("lbSaIPoAmYYYPUCrLI"), .value = IOV("mkBRwfaxebhoJUrqRnpSBuoBPUlfNRRZlWZcQEFDYGQaKGzDGVRYslwsUKALa"), }, - { .name = IOV("wEWEqHfZYPLwuSewboNK"), .value = IOV("HwUEBEZHxNIaQXjEBMgDybn"), }, - { .name = IOV("PgNYuyyeYUbzKufmxIT"), .value = IOV("UpnIhHvfJqRJnAsarMtqRWMwNmFCb"), }, - { .name = IOV("ZKquMzuUiHuIRBZmYY"), .value = IOV("JRUMgdCFXYaocJMXujgEEjUvmbqVPxVmzyyJLLDXVoKjXZKUZDFaXjsHupEbUiWyuVtPDsktc"), }, - { .name = IOV("CcpjwTpTwgOiaDEkEjG"), .value = IOV("qFGuhxeUquErcEDM"), }, - { .name = IOV("JTLldzJBuRaQvVaGdR"), .value = IOV("ADTNzHCOggBGWMmYNIJbyRwLoLLyasZUnSQRTJdtjT"), }, - { .name = IOV("kuriTmXcsplN"), .value = IOV("kvCrcWqudpYffsSGcjAEXDlkf"), }, - { .name = IOV("JMjWrHqpUZKe"), .value = IOV("PYGdmIWpYmEMmJSyKruLrzCGeev"), }, - { .name = IOV("GNwXZW"), .value = IOV("IKaTYZmfnkyXOqzfIlikuVO"), }, - { .name = IOV("zlSEYquQOl"), .value = IOV("hIGWlJTrWRlsCbgIxeAnkUXueBw"), }, - { .name = IOV("HrJxLXSHPblBv"), .value = IOV("mXmcWtVN"), }, - { .name = IOV("qFbMQMChRnkZO"), .value = IOV("XdNKdWZPqhORQzKYUFjRxKSxBMvoDAVZZzMBOWWfHOmadeWAlQgYwtayrqnVFGKKfIMYctwrbfhFyp"), }, - { .name = IOV("uuysESpiOottBUw"), .value = IOV("evcJiAbdvQqvrmCQ"), }, - { .name = IOV("INWWvvTJxPHkiLlHkZV"), .value = IOV("WGSgMLMAjSugEfBg"), }, - { .name = IOV("VNJMtxFYl"), .value = IOV("ikyLJpcVidJHzbABNvaiHOxgaYzUQIKSCaQYyeNuEzBlcxMzERrxGPmtOFnpGVgJfobakVJLqCovCaz"), }, - { .name = IOV("wH"), .value = IOV("YsaLgxSx"), }, - { .name = IOV("DfrwtlJdlpdq"), .value = IOV("AuheabKtchetXgsIiFD"), }, - { .name = IOV("MsWCNCrB"), .value = IOV("voEdxJmqKCcnHRiflGEnrQXewXVFnmkKYTTrScWUHGOONvgcu"), }, - { .name = IOV("HXWbuJJQGjBZJ"), .value = IOV("BHp"), }, - { .name = IOV("FXxyIknczqxKyTy"), .value = IOV("RgXdDFFzBJvrSlDi"), }, - { .name = IOV("vObckZpkrpjjhIxyzhdl"), .value = IOV("rEaFrInlpbVochcJBqQWUVefBxjbbsdaXkvbslOzKDslrAaDeIQ"), }, - { .name = IOV("jBHDiDThOjQZhtKe"), .value = IOV("YtSvcHUxGJIoqVUAIWFnvBZRnnHUdrDkbUWUpswhccoiXFoQUYcmFhZnxJuWYdTclU"), }, - { .name = IOV("bxbseRNANQI"), .value = IOV("zvoUxJjHotBcOziuorCTQzEiQByRSvIScjCLDviAqVgJWqlySidUPdZksuJZxIea"), }, - { .name = IOV("HyA"), .value = IOV("KwefEWiyoamctwYeaLQhAqNZGIwqoVxaGAfQnDsNSiGYaGEdkxQMcZ"), }, - { .name = IOV("O"), .value = IOV("uvtyxeruBCRqekHchBeWYXrgAMbMcaJSNyejQ"), }, - { .name = IOV("Y"), .value = IOV("aGmJGszPyTbWnhIHHdXtdyabCFzgyVrNKtOihADWoIGESuNrXWjPRHFodgBg"), }, - { .name = IOV("HWMEsPGAwoqfmYvM"), .value = IOV("NoxyzdZkaedppxHPwJQcvCnUPIbDgeXYIEWYgrUarffGIqWKyoLdDThvcUjLna"), }, - { .name = IOV("qwuoV"), .value = IOV("QobxsIfwflRtYWGePcYzKFAhbyLvFRopthVfmFSSZvBvLDEPHFxkFAggiMphSBxgrzJci"), }, - { .name = IOV("UkXowNpx"), .value = IOV("MyBaFOQgDToNFCJDxShlOaElAFCkLWKxreslITcoFlCvjfFFXCwSAgzhWhKwfZCXgPhPIHs"), }, - { .name = IOV("bzgxUpBvCiFUlDO"), .value = IOV("YsJCNGEojIOeTUaOFErIeUyyVbmKJPiRgSoftrhSfAgZDXgXTsxSwFVOXdHGoylGRVemhh"), }, - { .name = IOV("AHSaYvN"), .value = IOV("TembtVXFupPdzlMZpHbyiWkbCpVexJFisGQLAkwReVnTXELbvqxfapcAGrROL"), }, - { .name = IOV("HcVgYIlbhjwmNyrxVBVR"), .value = IOV("oqQcKMWbRcrhvIwxAHOIySMROZt"), }, - { .name = IOV("rXRFbfimaFyZbpbfEmIu"), .value = IOV("NpiTklnWdTawKtMFhmclqUoyIpDiZuzpNWW"), }, - { .name = IOV("cejChzekGjIJU"), .value = IOV("IzUqpssFEdBYAmzQgMNbSjqJGYPGKWBLRRCmhMqNlstWTKyRuZSHfjZVUtMLEAy"), }, - { .name = IOV("IWgcGMJxxTDNee"), .value = IOV("wotEGOLyfCDLIwAfuDEyGnEKwftFPRDQXeVAFdLxRUlpCdHgFJ"), }, - { .name = IOV("YfiNMpfZc"), .value = IOV("gudYAdKzAcWQpPyEfAjFslzoJbXWraodXtW"), }, - { .name = IOV("uiMOE"), .value = IOV("vhXhHfUsmJZJGgqUYUdSnkAbGFERDxyYvVeXGojKJNJyrevlz"), }, - { .name = IOV("OgInQUB"), .value = IOV("XpTpHBwrsBgbcrMOvelwmCCYvWfkWabzBRquyZsiutgHFkFyuzfWgPtiomxVIKTj"), }, - { .name = IOV("oSFEnHCgZMZHaP"), .value = IOV("YwiNAdcxnzapwxyxBZxszKGJZllOdCzPHyQsrwKxDQeAKdDaqXUxEUdJJYcYDTYgEFHLyrCMIzeSyUYd"), }, - { .name = IOV("BOCHrEcrLKKanVpKV"), .value = IOV("tyNteZQrDvzKxXTvfdvYwrmzvuEEwVBrNhjYIUPJHzIMVgUuhZpdlFuzbXfpZyHmDGraCiDq"), }, - { .name = IOV("QaT"), .value = IOV("iVFuUiStFLdKoaAFMGampDMnTErqIOFiUDuHXrpsiskkHz"), }, - { .name = IOV("rygzgfmHUVAGcVsu"), .value = IOV("fifxtIxYvlsG"), }, - { .name = IOV("bXknlcUaCJITVkbOOpr"), .value = IOV("merbmbPIgpLwTlYoNSoNUiMAZEbETfHZwMdHzArbwxCeSrHJGsnOrBFwtfpMgTjpWVwoWIlJu"), }, - { .name = IOV("sznYg"), .value = IOV("snzSnafpisMJsJbGnXknkwjUVQgDDSAIQUjzIDBAIaDICkpCBvMxVnjMXYVN"), }, - { .name = IOV("AOIFlZGjzkpm"), .value = IOV("hNhDcsiwCZDYbExtoaKaYUiXCBDVKLyiwjWhtodAFtASxeYOzucrTbcOvIFzgRhHhIh"), }, - { .name = IOV("iikDYSuD"), .value = IOV("lD"), }, - { .name = IOV("sHhmYMdYHBYdcqGDmi"), .value = IOV("fcTyeSPtkFEJeFMSrDGBJFpCCKMkTimsk"), }, - { .name = IOV("BMDZBHvVmFNeQMRTlfOE"), .value = IOV("LBwxrwTGzs"), }, - { .name = IOV("sSimoFRQvSRNaqaELQGI"), .value = IOV("tDQSBkivspLXNyjgiWcGdcopbOleZLVWVYgZvsOGXqeHktCogfWEFYhFoNoReoRnNoGihbimSWxYVxb"), }, - { .name = IOV("BaiyiupiCUG"), .value = IOV("wKkpKXDgBIMLighYMvkYoXLDndRUXxoVoOvgrlIQtGOvECll"), }, - { .name = IOV("GG"), .value = IOV("oNmAoMtpkAzGxRQKXlxxpzbLmszOD"), }, - { .name = IOV("DXjBiLxXXVccj"), .value = IOV("YjYVtibnINhXweUPcHDqYtWryWJwmyrYtUdnAMRwXd"), }, - { .name = IOV("iaeHciuDhDdPvtP"), .value = IOV("CVVr"), }, - { .name = IOV("aw"), .value = IOV("iFPJMyTfdNIsEBeYGFYpRnkKbfgfoZXobmZOBqFYpgOQjwaOPENvihA"), }, - { .name = IOV("ilBHaykOnQieFrCwe"), .value = IOV("wTekudFBSUMvsLcRISeTQilgHaElaCetDaDmiBZZMwexJMKhhFzgys"), }, - { .name = IOV("dtDEYbDTLOArmoqMe"), .value = IOV("aEHahTQKimXUlCPrUzelEZkkjkVnqwFxmnoU"), }, - { .name = IOV("EFINwfyHMaOpyWL"), .value = IOV("BMvqpzukoILpsGeRqPDKMoixWlORUQFEcfBiUKsfWcJdCWAdwVUrxyqpYayNCMHE"), }, - { .name = IOV("CVHGpjYdrRgPPaRvHR"), .value = IOV("CmvwuIiEvRBKftDpXNgAhjpqtjQbvHVNcjKYDzGlGFmFQgoytkGWKdVjnTIZbR"), }, - { .name = IOV("SKT"), .value = IOV("xiXLhXAxoRQcYRBdOQCDTpKIUTqtFssKtbikxMxYGGYUelRuwKKLXEjUEuL"), }, - { .name = IOV("CMRfgSBLtIWEEJjwQyj"), .value = IOV("JOPWJeOEpIywyynbILpXsoEgfuAnWbZcfB"), }, - { .name = IOV("rbHeurrQu"), .value = IOV("SsPUzQKUmAlPUaJTaQNXHzPBMgTOdayvmHonfovIqhbqWvyyCZXpBjlmsGXFwd"), }, - { .name = IOV("rD"), .value = IOV("IrGZHobMOtTaYDMNxJmgNfbin"), }, - { .name = IOV("KkRLVRRpMPLovr"), .value = IOV("KWxJMkniUPskokuEYSbYSbPrhoqNgvSsxiVLBTTHoVu"), }, - { .name = IOV("e"), .value = IOV("syfVcUFgEYLOVqlanFEwoniqUpniqTru"), }, - { .name = IOV("TkeKeaqtKYhi"), .value = IOV("vUMbKTUEoNKbttMcgqVrxPmesNYrCyfExVSdYyGiqzrPvHZMoBUjX"), }, - { .name = IOV("NTZlgSFQV"), .value = IOV("bLFLqZsmPfGvlCexHIJaMeEocyhBeaKvFBINNdJDkgzsxWSeLKtpKgCkCptWOuJmtTZRlRrEVqd"), }, - { .name = IOV("UWicUquGWYcVgfbrn"), .value = IOV("fIviJLftGNEzTH"), }, - { .name = IOV("XRwDy"), .value = IOV("vwcYyYdNItbpoZzklJYwpLaPNBO"), }, - { .name = IOV("quMYvSMtzBo"), .value = IOV("pUfgFbYTEdgDlHMiolNuEGJHBzPdlKMhAHfVNIzRqblCDzLFaCpyJcaLKtdHkYuhmDwFphe"), }, - { .name = IOV("znHdVqZZQhYUKYmXNSSG"), .value = IOV("wLMYvKimGwJBIXteFYkjQezWjlStugpmNOlO"), }, - { .name = IOV("ksujuP"), .value = IOV("gYuJyFVgGYeOiEvZoQTLPpwiuqavbARcrILrSApYIM"), }, - { .name = IOV("hFLXIPFc"), .value = IOV("wCpPcwBVWkwVgQtBmSKrkkQBSWzmmWThoVYnveZIOe"), }, - { .name = IOV("J"), .value = IOV("RrdbQezfdxiawnxXkFrJrNqDUvRtmTtBgZpOlNBZpwNsVzTkOLewD"), }, - { .name = IOV("OdIXwiiVWTTcF"), .value = IOV("TLNOYQhmIBRLiCDPxxNEnCmRVDUpPKtcp"), }, - { .name = IOV("wB"), .value = IOV("WHHDUmBq"), }, - { .name = IOV("tDZDkZqXDprIa"), .value = IOV("CfgUlrGpqsluexqTQkMirAOURqguNCqrepsJDWq"), }, - { .name = IOV("dAeOMNfeyu"), .value = IOV("ztcYFgXojIOFKyAvjfiPQlHMjKkPBAswhgCYxuSxKYeYZUDZszCjgO"), }, - { .name = IOV("HtQYnOLO"), .value = IOV("uWxxAwxnyxoqoXWQwgRjOwpdUyvGcWKkktjjGWypOutiGkhp"), }, - { .name = IOV("kjBnEensr"), .value = IOV("cbUevkbiusWeFSANsjbEPUVeBYgvoOhYFyyRe"), }, - { .name = IOV("JOWL"), .value = IOV("csmNffAIHVTroLZntvACEmCR"), }, - { .name = IOV("VanFwylHlfiMeMqsn"), .value = IOV("iIhSRw"), }, - { .name = IOV("y"), .value = IOV("UjY"), }, - { .name = IOV("xUVWtTDgHFjxOaIb"), .value = IOV("QvZhtznkNIodSNcmXkOYKJAlGwdCDfPetVVregHdNOJyaOMC"), }, - { .name = IOV("M"), .value = IOV("DJXuPzZQwuX"), }, - { .name = IOV("dVmtKqRvU"), .value = IOV("OANoxGjttXZCcoMnaj"), }, - { .name = IOV("vpMXvbwxv"), .value = IOV("JIc"), }, - { .name = IOV("MHmDVlCF"), .value = IOV("C"), }, - { .name = IOV("VfOVYjTltWfgXu"), .value = IOV("mcSJijcGxrY"), }, - { .name = IOV("Cphc"), .value = IOV("WpiInNqzUPXrsZsYxTKrYMczegBPfIKZvNHswjUIMcUWyygGGNKOfjwuFQyViydlU"), }, - { .name = IOV("utAMZmIBQrVCPpRAOw"), .value = IOV("sfigFizHQPBLMvRERGPCPf"), }, - { .name = IOV("ladSiavKuQeFAAgLXvu"), .value = IOV("JinRfGhSlEQboMDJWfsxlUbQY"), }, - { .name = IOV("oNiIwWpT"), .value = IOV("AWQFjkgyG"), }, - { .name = IOV("rgdIkV"), .value = IOV("hzBHLxGlIlfNyiVOrjvKevDwXTAiaJNNTJQbhcXDSXJhsvmF"), }, - { .name = IOV("KgwZMRWhIE"), .value = IOV("aamtiOXCLWWtKpShqmdmkJsCAlOdMQGrVGTdxka"), }, - { .name = IOV("aJQCExUmziNRZjl"), .value = IOV("cGEgMTGKcumuIMaweZDplohbVLuGqYHnxFdF"), }, - { .name = IOV("iBdfuFvrFtyUVqi"), .value = IOV("WNlJMBKyGGqbsWpjYXHEamII"), }, - { .name = IOV("RNPeHZyfPASnbnq"), .value = IOV("QmBkhC"), }, - { .name = IOV("HwCFCJIIiFByApJXL"), .value = IOV("ZMJzoyLhQWUGvhIJoKYuLBbopgeePkyZqq"), }, - { .name = IOV("SpNMsxFxMBnbyLtpd"), .value = IOV("UpsOFSsmOzqAOVVIrwYrGKpREpLYirxYtkiRhTmLGGHGNvnHyLgdSpqhEECtwfYIdHygPNxwjtbQe"), }, - { .name = IOV("Qji"), .value = IOV("dsZGwGyRCXyzmZOFrvTBxkdOwcvqZkNSyYncbTXWzWoaZrrGxVPmjMnLOBKtvkZVivo"), }, - { .name = IOV("kWuoJuJMdJgEYkYknikj"), .value = IOV("rVrhVGlcrwzysmMrleVTmajaWRyROUzjBGKXQtcYorHfjGjUFDYfZFrhsIjsTqQEsgu"), }, - { .name = IOV("NCreMPOWebjOPOCdVQc"), .value = IOV("nGVAhBrXlcOmqspGEqwKDwGMdyihdgKmR"), }, - { .name = IOV("ZXTCOJLXsocRGbeU"), .value = IOV("tDeZrpzvQPaDqlRKebBMCYcbkECZAHFUQarOpDEqUvxgTIwTFtGifOVJWsVrQkRJlSJimxFzlEdj"), }, - { .name = IOV("CkFYQkl"), .value = IOV("FwSGvzzgxTkYEFWliNlFzAPTVGEFIDgoiuuCUJBEGfIlnCDAVFGZVTDAB"), }, - { .name = IOV("KcJ"), .value = IOV("XixQjsxpasYBqAEkzCmYnRXYkiGwpVyORCXCfOnzAJhoGfJepzLKascysLosKDbSIYubpAzBzZM"), }, - { .name = IOV("yJwilwkB"), .value = IOV("SDTwtifyXHNdyHcBpNgIDILSqhmmMVWYbFJXN"), }, - { .name = IOV("XUfUG"), .value = IOV("npLNmVsUtIuNNnRoURGipCgKzQJUMtOHEjyJDNvwnEWrnQwfVmwdcFc"), }, - { .name = IOV("JQrjFNZMJiMu"), .value = IOV("sRKxaelyerzTxYUejDicJDUwFIxzer"), }, - { .name = IOV("YGywxItUqYLcvamNx"), .value = IOV("NRvqGLtcHtrCxFKOIEYRHUBlKGuWpZBxgWqPCQXRPFoisEBhoZMRAtrgzwMnWodBdkldghFC"), }, - { .name = IOV("FGN"), .value = IOV("GdHXxWsLpCdjRizSjPmmuVwYQUWmRYfUrjQgtzHHVWwObYwYAaLPgrZRrmr"), }, - { .name = IOV("BGeXltsFs"), .value = IOV("VrgWPsZdkpkyxDQAOkQNuorxGKVO"), }, - { .name = IOV("bvuVaCfQHR"), .value = IOV("mLTAuicuGvllCcktcXcygEpnWViqbtpo"), }, - { .name = IOV("jDJVXY"), .value = IOV("PrMpPiDvJWzpTqxRaZNWUZaPFfbtCSVnsvUGrIEWXHeRIQwSoNycEqjsbTICWvrBojdrxYCSZqKgKRJZ"), }, - { .name = IOV("dDbLdZCjRHmqQ"), .value = IOV("youHwjiRWhAPuMNCbMKRlMSzTEkDQKZrxquCDtXmxQLevqHPFYdNGVjFSKngZisTVcmvFwZzOFFxQu"), }, - { .name = IOV("eWUyHBjNklREtj"), .value = IOV("bVMOZkNyUqBYRMSWwSSANUkgttfgfFIJUzLoOtuhKEzfAhoRNBOmfTrvgZtRGNGVolipbCpXVdeiikFW"), }, - { .name = IOV("psUoRLqq"), .value = IOV("MvDfrUhJwUAOThYlRdxuzoSYvjZgciFwzEdrHviPIrChJevFesoDAyRFtfpplKLcDdndAgOOxXRgO"), }, - { .name = IOV("tSNLPco"), .value = IOV("lhvXMliWoOiUmSyvcPMBPnFemqcLqaDrBqXZE"), }, - { .name = IOV("N"), .value = IOV("IHKYOlYzDtFFnBDqsbCK"), }, - { .name = IOV("bhJl"), .value = IOV("clbORMvAoGaxSYd"), }, - { .name = IOV("qKafqnFUBGq"), .value = IOV("HbDzjtbthqHJCsSAGUlylpZqHeS"), }, - { .name = IOV("onPQHdgsk"), .value = IOV("hdrXdEZFuAcfbnTRAvVOYLayTQwhdBDuYVgOVxROYxvgvThrSWcnbNzGUUlcOow"), }, - { .name = IOV("cIrBncmnydAAnAZScmL"), .value = IOV("DgAjlFHUXguRoxYYVAhAgwKsdTkFo"), }, - { .name = IOV("nYPhQbyMpIEUMCTydUqj"), .value = IOV("BpVZIxfKRPMI"), }, - { .name = IOV("RUaPSAdQVnvei"), .value = IOV("jbiuueVB"), }, - { .name = IOV("ZlWAGLLXdjykkomB"), .value = IOV("jHCogHdhdraodTKeMlYlvBnyWgQawBxbotYfUZcllKQjRzCiHltlSFpw"), }, - { .name = IOV("qgqlMKMoxskkW"), .value = IOV("aRxVBECMShIZDzZhaCzinLnfhzSHUKbptZpdHNQJSjitnphLgK"), }, - { .name = IOV("NUKyItmepU"), .value = IOV("vkxsjupRZvvDhQduIcFuVupgywpOYZHKzMqlRETRvPqRbTgIeScnGunoCotBiTEdEGMMBAzSpmEx"), }, - { .name = IOV("dsQpglle"), .value = IOV("cEUpRNkbqTLrCuEotwiZnvvHpCOOyxBmluZkpo"), }, - { .name = IOV("CfhGWZwLhNUIVwELC"), .value = IOV("SyZgyOOHjedEENStgxsuFqsDDXJtiFkDQKYFkCzlAWmkHIKvkCKHiuNVljQfrqfiwFwqb"), }, - { .name = IOV("RhuJnrKOyxuV"), .value = IOV("iY"), }, - { .name = IOV("YoSCHOgXvDyYPe"), .value = IOV("yRQryAgpvWLGAeNPrdJkpMWqwmkALPkllLAegP"), }, - { .name = IOV("lItDhMIdJguFITFMrFQj"), .value = IOV("SfMwxcFAJDCpjvOwvyKzNhHNqQitztbKzdgXEJtyWmjSsAgFbhZPwqGAAbeWrSkElBgIXJJ"), }, - { .name = IOV("Z"), .value = IOV("WtGcyrYqLWgutszsUWmfMlRlpovzctwNPSOvyfHnzsisnkWnfsjoLXgHw"), }, - { .name = IOV("dnqVjukwPsPleFVBg"), .value = IOV("whUBgTtAUDiHwbnzo"), }, - { .name = IOV("ZvcVyFtoAc"), .value = IOV("DzfJNaJcooAKtiC"), }, - { .name = IOV("IwCeCAKbfSXCISxTzOZ"), .value = IOV("LmBxHIwOCPTpRKiDnOGaPpsZVLwEsWlCPRGbzcIwggTihUvX"), }, - { .name = IOV("HzFUildKpWxlyMdYVjN"), .value = IOV("iUHtRwKtPLOAnUNMjLFlwCPDKWmHrfFTRY"), }, - { .name = IOV("sS"), .value = IOV("oHILtRYdMpahzHqKCyULlHGrFzRdwnccKMQTqdOphbvlqQJNkaHRNCdEHpiMactF"), }, - { .name = IOV("jg"), .value = IOV("ZYCaBvjGvsetqcuzkTwszMpkCYihcohXqPCCnQzzHApKpKDdQoCdCDZzlqNLUZPBbWXzWUq"), }, - { .name = IOV("ElmJ"), .value = IOV("ZduuQfJWpSVbUtvQyzhhRUO"), }, - { .name = IOV("YCETqCjyMGg"), .value = IOV("TN"), }, - { .name = IOV("NCrgYm"), .value = IOV("aeELGXaiGpgzwHEfMEAapwdWzqnRNSkdSxkskleLbtrdvUeha"), }, - { .name = IOV("FgcOKk"), .value = IOV("HUiLzDhJwjhtUTxnNgnXauZWSfrZeUleJIfcHoSSRjLfbTiVy"), }, - { .name = IOV("VuSPEncUD"), .value = IOV("saAcaEvqJBUxeJEensDQTUaiZZRRVHUkHOMVkC"), }, - { .name = IOV("yyNKTNYotczGczyRN"), .value = IOV("NBbwDPzrRGXHnFgmTZqDovEFDppGbOBAKFfAWfVNWIAYZIjWbNlcNjQUimhwatmsMF"), }, - { .name = IOV("qy"), .value = IOV("viymzEqxZz"), }, - { .name = IOV("jfDJHSso"), .value = IOV("NJGlgxOF"), }, - { .name = IOV("kfRosHdeIPQGoALwR"), .value = IOV("ydSWIIYLZeATrzyGVvxlahDSWhGNtbjQoKHOaMRrSmwsnOFhjizWfbTzNRGguiWRMBhbprfSGdRtvnB"), }, - { .name = IOV("d"), .value = IOV("cIdaVrxnUAjivHgMWdfmNSyANBYCiXrDHUVYACaLAKKEEDHPFZYmJIcNZSAgrDcAmpjW"), }, - { .name = IOV("rBhzTPARTFZKSKUy"), .value = IOV("YaTRpvVSnADxhNKohIpuhQvONavDSCGkXTDTZpEoRSVqnIwVzczfYSKtIrzNYv"), }, - { .name = IOV("nOROybHJsKJNkXOXd"), .value = IOV("iYZFumtcpceYcKmCZoIfypaTSpGczgXkEtGAaoVjVSCGcEJzFeRcJfPnTichzasDLYhjKWRBMhoM"), }, - { .name = IOV("FtpskhcRxhLJieXPl"), .value = IOV("ywMNIZqndlavNEAbHUFBNBEntOxerAdHhWfdsyUaqqRkZhMGwNougGjtk"), }, - { .name = IOV("wZTopqCC"), .value = IOV("zGjTouklYDngaeZfRQpSmQAXRlETHbNLCDvIcKpnAaSRWC"), }, - { .name = IOV("KCNumLFYq"), .value = IOV("QGQsBbEiLsnVDrlorbxdLFHRnhoJzVXtvdGnydZcTiUEIPtWbJQu"), }, - { .name = IOV("vQyZxWnabfRJGHxLpQP"), .value = IOV("PCJsqFIufupf"), }, - { .name = IOV("EMMhhDuTdfK"), .value = IOV("adrwzocxEqGDUaQauvgjoJNZhPkHOTB"), }, - { .name = IOV("urlkJPDy"), .value = IOV("emZDuvMAQZKKopJqbdXJXCJSvPkmPLCzFofGdFPxvcFrRNhwThlrSJXFPFUlgLdyDX"), }, - { .name = IOV("UaxYqbpxGLdla"), .value = IOV("KuICbFSzyMEbYXNzTaWzpTOEpwdRbnTEpBgxcNHvGyDKHSYGujbfw"), }, - { .name = IOV("ZNsAA"), .value = IOV("SuNEgUpDSYFPIWNwapaWHvFgNpNWVpzetCwppaBfRTOGDBGwjJZdDoPbFgwIRtGSqIW"), }, - { .name = IOV("IEp"), .value = IOV("LTTRWfuZlCtpAaNfDhGy"), }, - { .name = IOV("CR"), .value = IOV("mUxDkLJLTQTCCEktbQWIbTKIxmhiB"), }, - { .name = IOV("OAOmRQds"), .value = IOV("SqOjdUXuTtvcYcUjQTxJKpqQxkrUmO"), }, - { .name = IOV("fLFbaiee"), .value = IOV("ETGKZuFXcuEtVwfEbIfOuzQeZjPDdlSdwgcWyGfSdCuYxMPyV"), }, - { .name = IOV("WhZOyUfaZXbZLaDoX"), .value = IOV("zjmxIhHNTxzPButjwNzQWMZEZawzuOaFCWcJIFQeQUYvEJjENOzmxOdNVQplXtXJTWo"), }, - { .name = IOV("IOH"), .value = IOV("Dctf"), }, - { .name = IOV("QfBzpuD"), .value = IOV("KdKmlrfnpryLHqBeTTrwouJnJrPn"), }, - { .name = IOV("y"), .value = IOV("poTBVocEGMafJvaGGEiRFKDlPdATrydTUFpJwEoHeAgnZrVzzRaY"), }, - { .name = IOV("gjwHVJSYfvEtHUwRxlV"), .value = IOV("bFFerGhSERAhHXJTqZoZsEnIKFADDpgwIcHPNtxWSlWPMbDLdRaqySrVqUkQfp"), }, - { .name = IOV("MzjdeKGBnfATTb"), .value = IOV("ETufNPOXyrbbpvKtqzdxnllyOVAxCkQvyNlxaJXHetKc"), }, - { .name = IOV("VHHrS"), .value = IOV("dUKSUizhaOhsHjmSlOdLBCmKqKqfhtGlvTztZwZqsPwIWShxIorwUZSvkfmtLfR"), }, - { .name = IOV("NQVVGsWm"), .value = IOV("cnxZdOyxxskOcXFTudqYDbZkPJbQiWFkAofDNMMBisHLRENewswfWhurSLm"), }, - { .name = IOV("MemViONxZuuvQ"), .value = IOV("fGTbgUPcpkBJeZEKylcPFhaRzfjgAThWIxrXZwQVufE"), }, - { .name = IOV("ezwoFlCBAYreIJNEYYV"), .value = IOV("uWhWtLnNLPCETNcyTzoyXHbxpHovJwIkHjCzdvqNYyhTNBVXfPnGMiqSCjdlzyxnvothrDixDaljqApw"), }, - { .name = IOV("l"), .value = IOV("yrmMcZCPpZZfqPKSmCyFPrmwfrVeRIwdGcRnRjBXVbcTODVcHJtGeTAq"), }, - { .name = IOV("G"), .value = IOV("snkNCSovfEduLnCUeGK"), }, - { .name = IOV("oQqVRGaGjtMK"), .value = IOV("ftlPccKraGRYgKkPlkemDwWizOFRVQFNRwSXwwUAODAlfFQUrOEqBFlDgFnWaDBFobUBJzTzFfJGGd"), }, - { .name = IOV("IOzCegtRTRTwQsb"), .value = IOV("yxXTMrXcDjAwRLMMplerCNFBGKAaFrbTmPL"), }, - { .name = IOV("jqXDBKRdxxVeBlfv"), .value = IOV("IjKwwERaAnGioTrYMbHnrRRTgZjAFqfvWCwOtpRikaQDCpMsV"), }, - { .name = IOV("ZHNhkhRIMJAfxuwOc"), .value = IOV("pmdEqoQFfhtJMZQouBGgKCMzObdULtZzLbXVRIqdJSFUenXRAJSWecsWVKkoNaxUPTBvUb"), }, - { .name = IOV("pNhuLplE"), .value = IOV("NTlNMAOvumEwsHvxtDFGKkgfQI"), }, - { .name = IOV("hJrZiU"), .value = IOV("cKglGWzWesxtWoPEaqEKmGbjrVPZC"), }, - { .name = IOV("loziYwx"), .value = IOV("reUEEtEkIxRE"), }, - { .name = IOV("PxpeFlnSxDodsvCywc"), .value = IOV("hTmoHOyZyiXrQeULLfbrBtkSPKx"), }, - { .name = IOV("oT"), .value = IOV("MKWXRdSTepepQANagQdvatDVNDDYpgPBqktWlrJnKjNBFOQIk"), }, - { .name = IOV("MqVVqibuATFIQJiE"), .value = IOV("GLSacsFiyDShgynEBhgkHMtnTuD"), }, - { .name = IOV("sZqwFfN"), .value = IOV("B"), }, - { .name = IOV("aVuvTtNGZLFFrTtVI"), .value = IOV("MVkaiuuNacmNJGIrfahkZxPDphqzgSDxoWhLhzzMFeWVcIIqODHovbMbF"), }, - { .name = IOV("gpKuQxXGTiAUXhHL"), .value = IOV("OECbiOqbdamlUqXAAcjGgsqFQGjoqDOxEGuith"), }, - { .name = IOV("lMT"), .value = IOV("tUismcayuTYWtUzkdtPavzGIvjWQhXvbDNqFUahheunalGQDFTQJtvjWRavgi"), }, - { .name = IOV("Rdv"), .value = IOV("vUBkBCwMELvnSrwmHDAjNGSwZBVYQcWnujqWlHgp"), }, - { .name = IOV("qzuwVts"), .value = IOV("vfcNBVgFLroCNLgULecEQqDaXPDIejoLSgFnBXfMUHmeZDkyUOiEewKCcQBonuZphJlaSNgWGZDyL"), }, - { .name = IOV("qBnUIhhoYnrUdIbxW"), .value = IOV("lpEnJxubLStsylhWxXCCasFqZkqKLWCGPaeOoArHFEvLtOpozNB"), }, - { .name = IOV("DAaIGakngdbEr"), .value = IOV("cEwfLJBSYnWPNIQanqNnEsqBQAgpegEkT"), }, - { .name = IOV("ZU"), .value = IOV("XzadfjTnvCCcPUrMFnueHtuXIDtjIuIkKWDB"), }, - { .name = IOV("fyiYRkbwgAaKa"), .value = IOV("AXBARKEoIeZZMwhAfunbFMQmhaRYADlVtjqfZUMeYWMljEwH"), }, - { .name = IOV("WZfaisUjgBDKA"), .value = IOV("zYuGzqUQhyQGDVyW"), }, - { .name = IOV("pofOfyxvmrPhFRRtPTE"), .value = IOV("UIrRSlbRpdt"), }, - { .name = IOV("JeLiFmcwexHxFGu"), .value = IOV("vzsaKFvJIzvV"), }, - { .name = IOV("oeR"), .value = IOV("GGvshMDci"), }, - { .name = IOV("GiajaWvq"), .value = IOV("mQaVMIZlBblbhgQBbc"), }, - { .name = IOV("PRjKTNwV"), .value = IOV("JDsOygbkyDpeDfCHkMTqVnfOJmpiFDZGsYgiHjSdgGLVKGcqxsyxBuNNuonDqfjrwlVYquFiRVUuSij"), }, - { .name = IOV("kyqpaXmHUlVPsjanWx"), .value = IOV("VuV"), }, - { .name = IOV("LbgCfNlNYVqATdeYOy"), .value = IOV("bHVgCKFkgMoyrZFgCJuzaaHNKmbFlFoT"), }, - { .name = IOV("GS"), .value = IOV("xcFB"), }, - { .name = IOV("fkBoaRBuyJyvZaiWGCG"), .value = IOV("OLiKZPAtMZA"), }, - { .name = IOV("etQtJ"), .value = IOV("mEhZGWDXxRIcPyNGhCJ"), }, - { .name = IOV("vx"), .value = IOV("xvjeRf"), }, - { .name = IOV("qSGlcYdOP"), .value = IOV("UgRbtbOCJfJCeOVrOmJUaCFRGRhBxKiFeEJFVhQrKBbJOkgIHfdmLGcXOHseF"), }, - { .name = IOV("EuKbHmj"), .value = IOV("gBbEzSivWsURSbyHnrdzAbyhvFWRSBkhoPSJeeTwKMtw"), }, - { .name = IOV("ANsOwKXCyqPCIghjEuRN"), .value = IOV("iqJFVdopSAKnBN"), }, - { .name = IOV("odTc"), .value = IOV("sviWHCxEtBFEHqLzZ"), }, - { .name = IOV("QXzbt"), .value = IOV("ZQTNnCDUbYmnsTWxfMAiIK"), }, - { .name = IOV("eulEU"), .value = IOV("Umgwr"), }, - { .name = IOV("xLweNIUHtWU"), .value = IOV("pxBXbGuOBqQycgiREGRjhjucugjRoQDURULcOAj"), }, - { .name = IOV("f"), .value = IOV("cQJSzMDRbrPlQUyqVydpZxPQ"), }, - { .name = IOV("mMYNxMfKfylKJTaJyE"), .value = IOV("hxxnsEd"), }, - { .name = IOV("gQziUnjfOahWvv"), .value = IOV("PvfQiwhpNGFuZifoobqcCrHiEQwugFJZmMcpJcyiDNAqYhKcMivLtuqKbcHzLMnoTHDDZbSGmw"), }, - { .name = IOV("D"), .value = IOV("LBWKRJsYsK"), }, - { .name = IOV("iUedIfhoVrBbOrlyXgYz"), .value = IOV("wPdTEBXLDcFOkyQtQskwsCrXwaqwStIwTxhQGrXClsRgSQDCTRLoabXTVgiLcgtHFFUwpT"), }, - { .name = IOV("ugj"), .value = IOV("zhfqIiHxuzRfFMfxEoJ"), }, - { .name = IOV("InUaKodSoR"), .value = IOV("LHLWvkLcgqJTWnkknNkxNdYJkRttRxYbXBSgtqLvPVNbiQurtJKSCqh"), }, - { .name = IOV("D"), .value = IOV("aPeWvMBLhQdEALTCywbJLsZuOs"), }, - { .name = IOV("DEImhvrfW"), .value = IOV("ZtXRFtTZTaiJgtibCSLOiISFEGIeCVVTuGeVStPFCHlxTU"), }, - { .name = IOV("KNmcdBRfjmNKtKTU"), .value = IOV("KcgIoVmNfyAayvNKoxveWZfljdsskQOqLsIp"), }, - { .name = IOV("sOPBUvckhh"), .value = IOV("gUEazvoniXHQderecSyLXpNlihUpWzltsbgHzRlaZdlwao"), }, - { .name = IOV("jbyzOmlWI"), .value = IOV("HbZIUAvNOtKtUqfXFVXJseisBKdeovnAOsTnkZFvHVOqJVPjTWWQnclYaUdeOnbNXCjVQfZOwxwFY"), }, - { .name = IOV("NbeFSTnxFxYPKc"), .value = IOV("qUGpcUOLOzVIcbBBfLdlhstCJyDleXeYNlWqahlopvwhgFJNeVSsqPXGlsiKFwyvvpUBl"), }, - { .name = IOV("hqWocFDCuGLDqQn"), .value = IOV("GGZYvJLwcPsriLNipnAOvw"), }, - { .name = IOV("GGpbnLIaOzzTEnVIgtBH"), .value = IOV("PeKJheyZrZsIZhpAXiAOHvsnYzZGqIbBXZxXsEpRsq"), }, - { .name = IOV("cJcTzeGiqPWHLFk"), .value = IOV("qcMxzmHtLTIsLWIXwZznGNYgmuInESXKUdFFiPxNeNuNu"), }, - { .name = IOV("PIurJLGraZUoj"), .value = IOV("ZgxjFllEtkmkMEDXcYznZyquQaWQgfoMJuXSSpZjeVdvQIbhOrvzUBqIvLMUDzY"), }, - { .name = IOV("FRDCmECBJd"), .value = IOV("nRayPXxpeGYlmGGnlpIdpTsJqwgsiZ"), }, - { .name = IOV("vejVRPPy"), .value = IOV("cvFPCKpBafsIsYgoROPhkZOvfdJHdbaacuzqZpkuPvtJZnWxLikBkdhVAJCVr"), }, - { .name = IOV("ZAGbQlFmJpgPxfJ"), .value = IOV("UxuwmCUThLtjmVNezxLULlLVVzGFTSGlXXORAVHaUmbUNONHUucEVXhoRmGGsBehLSSvyJ"), }, - { .name = IOV("CkNTjJmjWzbpzxaHMi"), .value = IOV("lxvMzptCKswkgfDNLhoYwhHbzGymkUexXPenulIUITeWfzRsYcJwZPNoTFvSMzUENhpOcgbYTPSiuNv"), }, - { .name = IOV("ceGMY"), .value = IOV("MofsXryXsFEM"), }, - { .name = IOV("UGRiV"), .value = IOV("ULMifbanEUpHqfYfpVAbcDCCYEzeIGoUOQNxcqGfHaStn"), }, - { .name = IOV("FLJ"), .value = IOV("WzMhMMCXusPDXzBKjBrNxUfiXkHGyFWoIGMRiIXgOZSXWJciySOpUtWijBPNJ"), }, - { .name = IOV("syGdhSqJ"), .value = IOV("BKXdMYoXUeacSVhhRPErpALukgwbUvTRIqspsmdrEar"), }, - { .name = IOV("iJERxNFXIfY"), .value = IOV("FZKnJoaxFtVasAUaSkzln"), }, - { .name = IOV("Bfnr"), .value = IOV("HHeUZzLmiAqSlxqOmAZtARcJnYX"), }, - { .name = IOV("v"), .value = IOV("I"), }, - { .name = IOV("sLzGOrbwhlEUVF"), .value = IOV("wjBGwRmJWdkGlckCKdiZDfTjRYLdFfSvVWuszPquSOwKhCOtiLKtnHgEwVXNwSYBaU"), }, - { .name = IOV("DYqREoDoG"), .value = IOV("lMxRaZGsYqgmZOFeytSThBdZBLtmOqJhaMhNeBizdYJNcARskpXKA"), }, - { .name = IOV("XxYgvGysoDxxrPQ"), .value = IOV("guGxp"), }, - { .name = IOV("tnnoSd"), .value = IOV("KQxQJRfrrbLZHvTqqPlxdDqwAgHMJCLzaHmvJsNpXMpVZUZnXOeMbqhotReThJXkmmuT"), }, - { .name = IOV("gFHOn"), .value = IOV("SXZBbPHslApKCNIeHBXUTJaLJnAobghJOWWlpKWurMYFfCRdZpwTlklwcmlAEIwolEyhxAtlx"), }, - { .name = IOV("n"), .value = IOV("jsWwBsZoCXj"), }, - { .name = IOV("F"), .value = IOV("xSzEDbJtmBGZwgpjWwwNsaoCCqYAHANokRbowrBWDLuvfFyHYYCmDbpPhhxcO"), }, - { .name = IOV("vKsxiBdRv"), .value = IOV("tAgnLzGMghOvZtxRqKMR"), }, - { .name = IOV("BBbDM"), .value = IOV("wBdSuJJVOUR"), }, - { .name = IOV("BoRkLBgHpVfPTlyM"), .value = IOV("gqwFdOxjhTUGGEldmQaiWPdwyGUvDVFvNltUhgeybPxgygPGgSuPgmepGPZGHHPTQtoyUDOnvGO"), }, - { .name = IOV("QBZpbqYVQXwEFUhsKPEJ"), .value = IOV("VDubyFsNGenyfxKUNgvNjdiEIbLjXesVTNzEEngOttgNKsLvebqoSCqSeuUXNMcVgnZoU"), }, - { .name = IOV("D"), .value = IOV("TXLHCoInIkQyZRBnazCPOCrXIJXlwXjWjhAjGYiVvdSutPXXDNe"), }, - { .name = IOV("lOm"), .value = IOV("LvGuMqprnfuABqdxv"), }, - { .name = IOV("ZpwJYydxoKMkntaxibn"), .value = IOV("SPmLMMfyKAoygjsaOlgPAhRTpkeIcPaYZoFzvhIdmDUXOjsPdbneHElRvIFw"), }, - { .name = IOV("KOTskILnmnXVJfFdal"), .value = IOV("mlhF"), }, - { .name = IOV("ebKxOHRz"), .value = IOV("CPxfaloqGIvHeIECPHZSiowNLhzENdGjKFXvCnTBpdZEHOacKEurmTJCjYTujkRWEzsBudlN"), }, - { .name = IOV("U"), .value = IOV("erUsWQDqnyvGbWVAeLvfaKGJQiKJh"), }, - { .name = IOV("LPzCRdjnYICoMp"), .value = IOV("NjTYBdKpCRkcvmUQwmFsXNsBrwFZzylnDuBzgFuZQrCLrywSiuEWLkhHclvshlYpAiOPjILQ"), }, - { .name = IOV("GWptklDkVRaWWgOZsIZY"), .value = IOV("w"), }, - { .name = IOV("bCdJWrFHKwp"), .value = IOV("VYiV"), }, - { .name = IOV("tVOe"), .value = IOV("GJwJuYMKedjmCzdobBRdSzoTxkbjGaxZIELMFJiA"), }, - { .name = IOV("LbCWNzJILshHGubT"), .value = IOV("DlyisjQK"), }, - { .name = IOV("BfMFqUQKlpBrSiiQzDd"), .value = IOV("oMQWClWpdLEfdJHHFAAmiQuslBRhbpPRUNwBNgy"), }, - { .name = IOV("McRUjzthaHmoyUke"), .value = IOV("jqFSxqGjFBdUzNsTHFyFsVTPBad"), }, - { .name = IOV("rhgjAvnxntYuPOSn"), .value = IOV("vLQFGIDNclyvRSNnBuwDTFSokliRchZhQVNfjGTasMU"), }, - { .name = IOV("wb"), .value = IOV("HYSLZPKoxzO"), }, - { .name = IOV("YU"), .value = IOV("qlPgjVKIRevUMRRyTMuyZmOCkD"), }, - { .name = IOV("aMws"), .value = IOV("XaGRjltsfrBsIZKuBVOYTKSdneTGDBEgZczulLeYhfFalVtKxGgJzBPwJL"), }, - { .name = IOV("stsiOhu"), .value = IOV("WsTAHw"), }, - { .name = IOV("i"), .value = IOV("CrTkZoQBHQwpKVRjKgQiJPxQqjuLTRVzRfuuUzNhwsQyJZzhqqPrbzHvjwjUkVtrPPEXqv"), }, - { .name = IOV("DwH"), .value = IOV("EhvkuldDwIjapXpNApxjTN"), }, - { .name = IOV("rJDNeRjnktIuLEw"), .value = IOV("Lp"), }, - { .name = IOV("hRyFzDHlsrPVluT"), .value = IOV("FvaledTcqRZRjYzfEtnBcFeOTlkxLQmxKuruaIMrFOQHerF"), }, - { .name = IOV("ccmIBYKgzKEdvbdQ"), .value = IOV("ipOidedozSkyfGdcBRvGSrtnxUOprbbCsfTSPquYZhqApReFr"), }, - { .name = IOV("RhskEknPapDa"), .value = IOV("ZLnkjlVxLcPYDSUAOeqkWnyAgVYEnUpTbCXHnFX"), }, - { .name = IOV("KYAvrAKgwhcX"), .value = IOV("QnhujuEGTvILSL"), }, - { .name = IOV("oBGTNo"), .value = IOV("pynjEPOQoxXzZtvBnXBbLdneFjPFDkVhlTfBwShBPufcyylGeMFFa"), }, - { .name = IOV("EnafVrqVPtGTMtNPpHou"), .value = IOV("TmQZBNouFzCwOmfBqfbmpPzmFkLSFfmVPMw"), }, - { .name = IOV("TvtXKs"), .value = IOV("vAzScgFwPergyMEkNGSqxBRQEIQdfZyyrlZrkRWwsy"), }, - { .name = IOV("KiEkRGuItr"), .value = IOV("wtPLWtEmMkdJuvuYsrNTxpfoLTEezXPbklbGqELrHztyTINpNXTShNtnrNcSiJR"), }, - { .name = IOV("WmrCIDdDswcN"), .value = IOV("mrXYaCRxriCuuVeB"), }, - { .name = IOV("bHDiDevCDwGjIrmc"), .value = IOV("nHehQqRRbCHUpgWZeCGYCOHnAmXgGmoQpo"), }, - { .name = IOV("GlvYkUlCclAHZD"), .value = IOV("xsS"), }, - { .name = IOV("DyBhbFrDBcATLjwZA"), .value = IOV("fNZBSEXyYJsotZierhAhiYacyMrbsHVvfhIpHhFfg"), }, - { .name = IOV("h"), .value = IOV("anzWUeRpwLXkgXFNPsiaAvajB"), }, - { .name = IOV("CSJo"), .value = IOV("JSHacsElpZIYSLSOxpLWWiExZiwwkGxmkVElGmhyyKT"), }, - { .name = IOV("bqM"), .value = IOV("MofOGHIARgLxhrOODqvHjZWEzgNxIbVCIJbbIEMmLowpJdCnCnpIHiiBhDxWcm"), }, - { .name = IOV("E"), .value = IOV("cXOoElLhWyobwbQVezbkiQnEN"), }, - { .name = IOV("tmQvhYrmamHDzXrvyjLL"), .value = IOV("UtXVgGheuqFIJBblQIFHzKIqESvIsBmCujiXsvNeo"), }, - { .name = IOV("jQvtXshvunvMbTH"), .value = IOV("ujRLuXzeADZfBevermdwQidnMSQtTITLdHssZaOCIxGmRzwyxVnDIwRyoyFFbHiIfKNOVlXYLmFbPQnW"), }, - { .name = IOV("yfpBVwOwsdMqIRpttudl"), .value = IOV("qnkvcLQcvkkvfvOTGsBDoQpzCZNIAgwWxSSuTDcEfblVBjjEOjUXFIfTtOCcdxdDNorJytr"), }, - { .name = IOV("jMygHK"), .value = IOV("BWyZLdWNHNfppAYlcnxGxzGUKwifYUlAiqmpCDVdVwBnbVvqmoizdpoAOYvYpEnzuTnEoZrWpNo"), }, - { .name = IOV("yYgJqxv"), .value = IOV("dxbGHLztkieBiLFJtduqsGIymXuSeRmQYPuJFYAkYWjPeNzAtqYKkRU"), }, - { .name = IOV("NpqkmIJ"), .value = IOV("LQcFFqFiacNIMKqclpuYVQeS"), }, - { .name = IOV("daKOUqXtlvLuPqhBmxe"), .value = IOV("tkEHJrHmTjsQakrnCyLENgXfxKPQPtUyrALtMpzVPJMwPkQJFlcLnGQZsKrdJjxU"), }, - { .name = IOV("UsGeGvVnMiYLpp"), .value = IOV("bGEAQSveFdVlVyoOtFCQggTozyIBGAeleQRtvZehItfLbkgTGVMzlDIURgfKFBsiyfntvkBWk"), }, - { .name = IOV("qZAORNYzAVqhRtTYJVN"), .value = IOV("qTAWYNJAljZEnxayDXobHxgQYDEoLXCnCiDzhLHabgsvXocGqvrHrgMOfSdqOQt"), }, - { .name = IOV("I"), .value = IOV("qNumgTeYuRzCKfsQpAVGK"), }, - { .name = IOV("AnodkDVKflmOxmO"), .value = IOV("ATXKhnNHejVqLSrklNqbbiUuvqVcWGP"), }, - { .name = IOV("Zb"), .value = IOV("KaoUmwnxgfBDsSaNOAJEALPRFKbXBpagKozpwdlyLuFDEUligfxhFXVI"), }, - { .name = IOV("qxDNDeBohrArPDGbdkQr"), .value = IOV("JEHzOIhdMeyNLWjHrLHQFhmXLLdMrPbVunRptlsSEqieRTBvbcmapqDFDHvRWXcUSPwMDzfDaVF"), }, - { .name = IOV("GVeYmkAlsI"), .value = IOV("ebOSBLxRkxHjTiLw"), }, - { .name = IOV("zjwyh"), .value = IOV("EpziBtsyfyvktwxoZblqcOJSsoAEiRrLZigRHfTWzPPlXXZSLKrEMh"), }, - { .name = IOV("vXXzXQktINA"), .value = IOV("ihynSWPmXgdFiclOCMRoHoUrnreqwKlcPvzcBgcGtPSgpyKSNIXVpvFnzLpYBYyqmHgGirnJHt"), }, - { .name = IOV("POSVekP"), .value = IOV("rSDfwEvfWaGIlcQgD"), }, - { .name = IOV("eGMbllv"), .value = IOV("EkSIfrNnoylIdhdGBjbngOfvPQVoCezHNnRLeBncyxHMWOhDcrTZeDgmkKFQhcdLBIQoHsqfPcsU"), }, - { .name = IOV("QeHJslxP"), .value = IOV("lEQpSrPhRzOcnQJwDSknPBiHUcQeFJEqpxYrgdIngzRZGXluvspDvDmgFvUksb"), }, - { .name = IOV("oReyuCbGOcrLl"), .value = IOV("PPiZYLSgUTZnAlRxfpawUwOghoXEMOODFeBPfCUQFBoYffPBwrYGIVejJvbnEiBpXbRQiGjbDk"), }, - { .name = IOV("FmCZQHJkpsWFBBaOLh"), .value = IOV("JFingtSPHGOpmgLQnjnWSdENwsOZoiVqAawhgpJrxVbZLzweOUPux"), }, - { .name = IOV("WS"), .value = IOV("JeyPQtkkVeXSYBdGwqlZGuQcaSA"), }, - { .name = IOV("PnXLuFicCjTuDNYDRH"), .value = IOV("gvJiXYCVnEybricNfKnMjxkhIJxwQnFNrPKjSrseGWTmaMtokhqbXj"), }, - { .name = IOV("EZurnF"), .value = IOV("XrmUsz"), }, - { .name = IOV("gNQmigqxEeoUjSNmrzt"), .value = IOV("dZgaSKCXLLf"), }, - { .name = IOV("V"), .value = IOV("QYilcTYysbfxvmNKLiXyqWBtgSYVEhkFRzYIkPcaqRaoM"), }, - { .name = IOV("XYgDCUTPn"), .value = IOV("qszRcBECTrDkBCZTmZGWUjwssTxTGokUYRDmbQjuZbnZGhODUgqZzldKFWwMDuiEGDKHBdquopli"), }, - { .name = IOV("eTYcqyCPeRPWqynvVsw"), .value = IOV("NdwWsFWxvNGYAedgMVLxcTLSVCUSdcaktGRjClLjcpbMVgoQDQbAHTnUlWCpiCztpMmIzKW"), }, - { .name = IOV("iOwcgGHbhjwpuCsFs"), .value = IOV("goAGxRiJjBCDbWSfweITIPtwJvJsXibwxfbOeZEvNJvFSnbzaFheyPWuSoeVDCulRFZJhvbq"), }, - { .name = IOV("kRcvYwQOftbpoSMcx"), .value = IOV("hzPlaPLCEp"), }, - { .name = IOV("tsXicQbiycAhRoweeMI"), .value = IOV("kBDRkV"), }, - { .name = IOV("vlDlmbT"), .value = IOV("SntjJAiYrsMBWOyikwERMDJDDP"), }, - { .name = IOV("QwGTm"), .value = IOV("zexlcqXReLxXaRueYfCTzs"), }, - { .name = IOV("zrPHMIpHrzhSQfPy"), .value = IOV("kgzJUGhVIOPkmeQsjYdVTpgYGkoLOKttUMTDRdhkG"), }, - { .name = IOV("dvLlSey"), .value = IOV("SPgYTfFxViZbjDQVStxkaQJUOmPJstAMIfHlxeEIkwTTnUMRQQXJEpOiruvFmcZNC"), }, - { .name = IOV("xEQDfMpHeoJMnCjyF"), .value = IOV("sRGEJNjhQPosxbJbQsFZnQOmGaFAiphdugjvowOIvlPNyfMsgEgwM"), }, - { .name = IOV("rXF"), .value = IOV("dNwGTOwbEPjGebWxjALHLkVMSWLDwZGBfKMKVrqUMIVKMqnUcmgOAbNcUHqyNEDpaxoIsHNQ"), }, - { .name = IOV("giAFgOXK"), .value = IOV("HRzEEnqtkFldcWKTdhbTtEPwGlENxVHCDLJxvAQlnkBBUwFcehIIZultnKJfjXt"), }, - { .name = IOV("xlZGQdQsufxK"), .value = IOV("eYqoDqXuxFxnljomTDPaAHc"), }, - { .name = IOV("YyMHJZspHtHsZNfoewl"), .value = IOV("Idbtp"), }, - { .name = IOV("bvsjFAJPBpbC"), .value = IOV("znnTnDKTPQfwMmLQaGPLURVLIUEjQiRGzaXjqZFtKsX"), }, - { .name = IOV("ENROhJpjmGegcX"), .value = IOV("QSuFVpwzIfyEeDhZRTzFFqeuyfZMkqXAEYebHKMTcfmUUKWyGQIcU"), }, - { .name = IOV("smQOlgmARtxxZl"), .value = IOV("BLroQzrQBmUdynKsYpcRxOVDYJGAgKoalzYEXkxljmU"), }, - { .name = IOV("qnABFewVbqXiqIpbkZA"), .value = IOV("BhBbjnhGORV"), }, - { .name = IOV("SQtyPEHvBVexnPTKKs"), .value = IOV("IqQbcoECICahPljTxOVwrLzSxjtDnDJDEFHxKXLdFFuvUnDwo"), }, - { .name = IOV("euiyslSNSvaNQ"), .value = IOV("mOgnUQyRfSs"), }, - { .name = IOV("ioQAsi"), .value = IOV("wCrCxNVJjLvjvNYtbnqXryodcIjYFBFHTnLryXsWZAYwkMGTRUHEomyeeZRvfwgjEPH"), }, - { .name = IOV("SHUG"), .value = IOV("TzcTSleSaDFUgAcXIRBlKTGchAeitrVoAWlKNhsFowEorbVVSLRHgFZMopUSg"), }, - { .name = IOV("IbU"), .value = IOV("ZgqQZzZXqmtPeoKVpzDPBdjgeVwHvDeTXQP"), }, - { .name = IOV("amgOjbtoYhOmsVhuylnZ"), .value = IOV("dtzFjiDECNcMfBZAzWnmcEOdGMmFOsmxscjYxa"), }, - { .name = IOV("zOPTtJFYXvhgBANR"), .value = IOV("yrdCHFoYWXsfUPuauJcFqeMvIJIVa"), }, - { .name = IOV("F"), .value = IOV("QuxJxvTyNuLHLakZnXPtvjQHcynjJw"), }, - { .name = IOV("iYrXfnNnxluN"), .value = IOV("oYyYJtiertFrnfEkcHnmvolnqeWIYwYNRctrUWTCVjeoKKTnjGadtFlJSfafDjXzM"), }, - { .name = IOV("ZsgDCoLjhbgbq"), .value = IOV("FDZFydrOjvTHAKUePLedfgJFKBFfmVzXFvObWFwJlOxU"), }, - { .name = IOV("Z"), .value = IOV("zhlUUKNfrNJzegadzxSIMuNnkryNFYzohlYqQIko"), }, - { .name = IOV("joTTuqELGFU"), .value = IOV("RFsGzpoAfDrLwunzXqtWRQsNnGXVMANuWDWRMqwQEZDPIaJUDZJyEhPeEnVpgxMdSuENJktckdcIH"), }, - { .name = IOV("InWeAZ"), .value = IOV("VftxbpboBnztUcuxd"), }, - { .name = IOV("hW"), .value = IOV("UfjCyyECVqbNTrqfeAiRINxcMfDQuQfAildAB"), }, - { .name = IOV("kJIGmArJdG"), .value = IOV("gXuUbeGurorRNguvuhmNWiDoGmgSZsSaCZVeYOsyTXPeAOnGbLgfOkzhwCjVXbyed"), }, - { .name = IOV("QdfFDrKZbmbS"), .value = IOV("TJssMypQNKTVzcgQCBcNcIbxNlnSZIvLwRaiVRjNhBTeMxY"), }, - { .name = IOV("p"), .value = IOV("SCwbkxSldVgsayyhsMxYTiNbPkYodiaGJxAheLz"), }, - { .name = IOV("Vks"), .value = IOV("FLjoLPnuwxqQhweoUkBlKPspdGsXWr"), }, - { .name = IOV("NHPfaZGd"), .value = IOV("kyeRQRpJNzVpYpXMrWgGAoEiWi"), }, - { .name = IOV("mKsSROXhJcJDaJ"), .value = IOV("rGKqWWODzYSeGhHRrZnXRFQdicITNbyJhgVrtQKJUkKoduHfRWUCZRQdNmjQeYoB"), }, - { .name = IOV("ShJPA"), .value = IOV("uCLkucacFRNqsWfxqCqlnOQMcvGQgCPfYXzmZqzHLbLQS"), }, - { .name = IOV("ZGadECeGQuGoKrj"), .value = IOV("QzBLCsKHQZYqAUPHOruExZSXtvGNvXKuKWjZmyqzOPWuALgUkeCUliXvwxWvFvagAn"), }, - { .name = IOV("HiWIbcVZnRYyANvwe"), .value = IOV("SIpqMWAEsVM"), }, - { .name = IOV("kYATmAtvZCOncyAgd"), .value = IOV("eOUhEEzJwuyQLQdNsADPlMvgGeVZTrPOnybmWfQLvxdRnzqNlcsuqwVuEAsgBTOTGlbijrNTjs"), }, - { .name = IOV("jiIcarC"), .value = IOV("AwcplhwUlHVtLLHqCOZqfXvzGKyejIaMRxFXfkDZD"), }, - { .name = IOV("cZZKbQlXa"), .value = IOV("UQeuRGKlpMZnNFCDWwNVizBBlKODPEjwZeeXwqnIktXGeeKEZkxcmcZfEyHEP"), }, - { .name = IOV("uEzrAMgUBkoYyMJmD"), .value = IOV("GstaJdfXYp"), }, - { .name = IOV("OrgZIbKLOENFjvVuxW"), .value = IOV("IMxhmHbpXFoKqcfjppdOBgGeqBFXOnJdEqnh"), }, - { .name = IOV("sbEMSZErpL"), .value = IOV("oWEuScWllSyNWBAMOexpRyzUeUBHYYALEtNxEsfMLYmnvUABRQpUzmruDyvgpKTZUaJHpEOmuY"), }, - { .name = IOV("N"), .value = IOV("gXWhTDQyEBtEOxBcaCANWECWSRfnurTobJzDJdyRJgojuNLFvOXoJAGic"), }, - { .name = IOV("bOrpKLCpqrAlrnF"), .value = IOV("tzvIrJZAVvwyzNdEWesKLjdvAEdqyBIVMefFrTFjpcraAt"), }, - { .name = IOV("Kw"), .value = IOV("kJkSpDqrbOdE"), }, - { .name = IOV("jOxEpw"), .value = IOV("rUEGofLFPOhlSdwHVdaXKcGwiVXaiIshFOjSJtXooEFzprKEGjuULEVHpkwYwSPsDVGHVUueZYsw"), }, - { .name = IOV("bzQS"), .value = IOV("prrzqENgDjljwmgpYpAdsBSPbNIqZhPrAOpdwzHl"), }, - { .name = IOV("vcygn"), .value = IOV("uYUiluZIRMJFkMIGKMErzxKXprroOmgTJtYBoGqbISYbrKIWLdFcIYFihlkWGAI"), }, - { .name = IOV("fp"), .value = IOV("KaDyjlgHYGppexqDBcyhObhKjGvDflFXFBYKauSIaTIqukcLjSiNBKwFikpRmdXKXroJUEnuQ"), }, - { .name = IOV("YHorkueHWGqXy"), .value = IOV("yFRbNZgukAdqefLcrC"), }, - { .name = IOV("Uh"), .value = IOV("qAzbToEPNrkXpxVhgOeBgyKGyHpeCsopvTsBNgljsqqfbMFKnvdlxofCfoeUCUj"), }, - { .name = IOV("MxMwFfrfv"), .value = IOV("VqbzqZmVusXyljwScFNWHDLXy"), }, - { .name = IOV("ugJirUIUeNDto"), .value = IOV("grepbgmTogUFNqQpucbUMpGAGbDIJaKDNDfsZoqWACSiFizFlzhVibneQjMovDhKKR"), }, - { .name = IOV("RgCnOsN"), .value = IOV("hZSjjbpzb"), }, - { .name = IOV("piwna"), .value = IOV("hF"), }, - { .name = IOV("JBCWsaFeUmuUK"), .value = IOV("QLLVMSLsofTZZnziNXeHXRXjJpITtaJCorDImYeTOQFsEfwA"), }, - { .name = IOV("PEDxDewhddNhBdGW"), .value = IOV("jmgnKsKgPXEIfwrUraAMJBpBEjdvxlNgJNXVSLTPIfbpTfFZBVDoUDIYPlykYssDK"), }, - { .name = IOV("lrbfEkjursTuEO"), .value = IOV("WzF"), }, - { .name = IOV("CWjjINBXYMCXDK"), .value = IOV("YYgVsDxjQvHhUTEBQxEzgnUqkqDJBcFRVStywqnrOiLspiFLvvxbRfLkXeYbHemwvjDoZnqVIVJeVS"), }, - { .name = IOV("OHdMBUcUoNRTnQDHhL"), .value = IOV("nIgRVlTEAkqEIEYIipAmAnoZESqISDbjaMZxuTJcviHbVWAaKfIQpBeaJhFDFDMqD"), }, - { .name = IOV("CZLInMAIniSnjAW"), .value = IOV("PivCVJbNriPfEJOMWbpAbvtcIEOdZxVenVlNkNIGSyYriMvKfFqvrxCaCxsSJ"), }, - { .name = IOV("SCkBCGP"), .value = IOV("DdOVwfpRKsRuuhiuaSHOGrOheEjPUfdiQUiiuXPoTAn"), }, - { .name = IOV("XlmXcTgphd"), .value = IOV("QtYzczSuPLihWsnAsoFHLeotMYzuECxyhkg"), }, - { .name = IOV("nqvfupyQiCiDLkM"), .value = IOV("wsqdvVZRyutKkAIhHCBtvtbLftUEGfbcxcdKMPoYxHOyeAHnvYXTOIIr"), }, - { .name = IOV("wDTCNUaGxx"), .value = IOV("BAeMSYwRXZDhAVPjnBdlOrfjmGBwZZWYsLPenoDZ"), }, - { .name = IOV("lZIleX"), .value = IOV("AjjpIktQMfczaEeDqxmWbrPkClCEXvUzTWdErxmFHbxmPAI"), }, - { .name = IOV("RWSFK"), .value = IOV("woYFrgGgukPjEnfCkxRTVMCUOhsNxluSgZSOaRWkkORjDiiOBFkzRvAozjfusJ"), }, - { .name = IOV("djSQkgLY"), .value = IOV("sBKmEqXqBSaSOovqtJSPitKzlSSBvuUZLslaraWXbksGejvvInAvYwziqRTqvsJ"), }, - { .name = IOV("XngB"), .value = IOV("LZnVbHHlKINvZTAaZYsZxydVjVpIIrSnFZmSXfgLgridCoEURRAtNnfOURZazxhmdoIelpQX"), }, - { .name = IOV("AgP"), .value = IOV("GQQuFOaVPqCVjcvQCHlFeKAvLQxvwPnkwsynFdmZOn"), }, - { .name = IOV("IaVpirpRZoC"), .value = IOV("hxxcgyRyPiARhMtWSyxrVIxCtGQCYqMHNMNCpELIaAkKzSy"), }, - { .name = IOV("rDJuCsnfDrv"), .value = IOV("ixrrjLYqTGJuUkajuZGBupZUYZetwaFyypSZOhMrXPWXpyvOdkSuQK"), }, - { .name = IOV("bWFH"), .value = IOV("THhcMzeheglfApOBEnRERmsLHllhFIlCOIGXdLFzaUXgvWJUaaP"), }, - { .name = IOV("RfTlAFcKzFwLZxsfanBF"), .value = IOV("KMiQVQZPeTvIQTYmyRqCxuUETHIYWUMpEbhUMqkZaQNvRwn"), }, - { .name = IOV("kcnNQNZVTugQZDNsyR"), .value = IOV("dffxOjoOWWcTnVPorfnGfBHsJXvMrwfardzRJuZdHIlXoHsEAUJ"), }, - { .name = IOV("MPzOLaFZWxDodnxrQ"), .value = IOV("shdlMewPyVwmNOJAeqtKxLMAshgrCuVYzbnWZssGAZPOspJshTdRVrQDUCzhldrZQZJ"), }, - { .name = IOV("trCdboArMgwxnwvT"), .value = IOV("tikLMgqgRbSXLCtSjskbZRmNpqbJKnjSeIsIKwLGJv"), }, - { .name = IOV("OHeFclbkmTdFokAenvrq"), .value = IOV("pNXONXbiyiQGrNmWYkQCLQ"), }, - { .name = IOV("oWArezyttReGR"), .value = IOV("zqkdWOWmsIcyNUSrvihFuPkgiJNITkYkzeZhYgKydGnMSntiIForEn"), }, - { .name = IOV("toDMXtJfPZKOljGNqB"), .value = IOV("efmoyInkIQZFiVeVmhaEfRKfJMsCYNNvPcoxvOLoRKRgXabouPw"), }, - { .name = IOV("NF"), .value = IOV("TPJeLblWhYwVIrbiMnAqlcISeRdYzZQFzSSHCEOGkLmjzcwCsKEJcdXs"), }, - { .name = IOV("ysJUYYfvRxjgSBAOz"), .value = IOV("HcmFLcdLqPyBjEVVsKuXAtvMTRobF"), }, - { .name = IOV("TBUwwWQzhLjg"), .value = IOV("rzRsJzAwj"), }, - { .name = IOV("oBtgXDJJItPusj"), .value = IOV("dMccrDDadiIXkspUHRPFyeHwQGCDTlbZrGDMAleJCUObIwjuoQGJpRCuRonhqntORIgdfq"), }, - { .name = IOV("bZQgZmn"), .value = IOV("KSAtXaYNPIMtUiLtOuPMEpWSLHyXUnwTbHHrsAwmk"), }, - { .name = IOV("tYjHUotfCZeZhgOnHsN"), .value = IOV("kmQEhctrscOnFTJPzdYPOorUYzudEHNfisL"), }, - { .name = IOV("gJPjeIJXX"), .value = IOV("yZnfDmmszZKDIePkRGTtWmLkBaTtUeyVzOIahrScnTWEZQHdOANjFiyeTBnHAHHkrPRCGRLtXDUtaTcQ"), }, - { .name = IOV("JtyJHTnNGxZbIJspb"), .value = IOV("aUnddyUMWDtvUBDXALkhzDQxTbYbejsT"), }, - { .name = IOV("tKlRFQUC"), .value = IOV("GoUAEaQdWlekvjsJwrQ"), }, - { .name = IOV("MvqTjhuydzDEAKdL"), .value = IOV("vcOnaQxawxLdkXKvyNCjWJonfzbWaRjEJVuovEp"), }, - { .name = IOV("z"), .value = IOV("tBCHYssnWrcUGOqARbSDqIrAaZXbfscmsNXBbrytlakmdFSuGvPrMeMxrzPHYdqEnmxOsgiwQ"), }, - { .name = IOV("XWXDYItBUCnqdwW"), .value = IOV("QdaeaYhx"), }, - { .name = IOV("odZuI"), .value = IOV("VcaNr"), }, - { .name = IOV("hQdRnMtbguRrioY"), .value = IOV("fIYSYpKKlcxjszqVlooVHjYuplEPIZDKomSFMEiVJybHLaVwUHsvrdldwgBpS"), }, - { .name = IOV("uVNRZfgvAdmOEwvmdXA"), .value = IOV("kUETwyiBTYtKOsTxHyyamWcmW"), }, - { .name = IOV("uNrTlsZqMokuxsfhcTtZ"), .value = IOV("ngBzpckEyIrEFS"), }, - { .name = IOV("JNF"), .value = IOV("ZSiPtpOoRCcvgmESJdCHYFZoMgSC"), }, - { .name = IOV("foeMoLA"), .value = IOV("lqkVajtJIUQBbeISwROFJvFwOlgAvMWaEiApMafIXPbGpVXyvhHnozVuqYahVRbyMBSJqtwYAZutT"), }, - { .name = IOV("SRjr"), .value = IOV("hqBVSShDmLeNlSbOvESxwnsdKfQLmqRedmqHjHOrcBOqzfwflQAaecfSiSb"), }, - { .name = IOV("WlDsLWLMLzBjVbUwRQ"), .value = IOV("aniQmYVZMnUQMayjEwnFUhXtqrvt"), }, - { .name = IOV("g"), .value = IOV("UClyIrvcrKhHihLBdyWwtSSTNBMvejFseXGfQzOMpIwxgRnEABcwRJXXDJRwLuGlxpkqiUDVPNudyKvc"), }, - { .name = IOV("qtMucECTM"), .value = IOV("vEJP"), }, - { .name = IOV("gAIBegPTLtDB"), .value = IOV("lYiaxWQxkCuiIdfxLsUPjELoiKbCFCPxftWXch"), }, - { .name = IOV("VW"), .value = IOV("voPvLZFdxKpVfCDbXaHLTBqXaJTzOUevBwngEIsbl"), }, - { .name = IOV("mNdEluLuQxhn"), .value = IOV("PqQeWjvhMOhNTTsPxvgcVoTt"), }, - { .name = IOV("uYjZJxcYE"), .value = IOV("CTMSphWELAOkkaKzIaXwTBwdOxNcpfODVfsoHEXtWIrr"), }, - { .name = IOV("onHUw"), .value = IOV("IgMtjgCTmlUZpRDbVSjGNmDTXDe"), }, - { .name = IOV("qIoAzlf"), .value = IOV("BrecvbqJlUjhrbQjOlKhdWcBLhcpip"), }, - { .name = IOV("rSTwcKLtEunb"), .value = IOV("mkWjcSPWHXQUTwdskttolUOdKqysCXlrxgJgthrGDbIJuNlwYcHPjSTxJpEjteQDECayXKLT"), }, - { .name = IOV("RElTBThZksDxTSwZ"), .value = IOV("xRJyEyUJozzoNBsddbOwUTyxfGgHIGP"), }, - { .name = IOV("gXkQFMBPqV"), .value = IOV("wRGPUFOgWBrJBUcOgvgcOWNYKSHodMYWSEshJqCKNASELXPPMGXNfZC"), }, - { .name = IOV("WdSpmDkaUC"), .value = IOV("yjufkoDbpwLAzwLFrHJxbmfwEtFwxyOPbuhhgcWYMXQSrbHvDFjGHxWdwATvcAsh"), }, - { .name = IOV("vQslrkijsOJNeXN"), .value = IOV("qeqdQoqMOzmFoMGJKVcuMoBdYTUTvBNUVPTEgKokVjUaxgaB"), }, - { .name = IOV("sHihDblD"), .value = IOV("mUmZEscTzAxbdiadcEpJMdwADAXV"), }, - { .name = IOV("xg"), .value = IOV("qxKJKGhCbltECzZbJCmHWXeYenuAZonYCGIoaIIiLRFCFLljFFWpyhtSYUqNnGnURWLdjoUZUDOX"), }, - { .name = IOV("SDjXOcuQvjzQbgwqNm"), .value = IOV("MaOPsZRKyERTZSfmapTAgXbrLmmQWpfAHyPsfdCwKCChwoBkOuAHlobguPnY"), }, - { .name = IOV("KtDMR"), .value = IOV("hYYFvtNDsLbf"), }, - { .name = IOV("ygNPZRNVFdWznApXUotg"), .value = IOV("XafE"), }, - { .name = IOV("witoVqpGNBOVJFzPMwk"), .value = IOV("CtfpqQFjkfPweqlwZnUftmuJvnaUSPwtLTIFBPPYEvtyvw"), }, - { .name = IOV("uRca"), .value = IOV("wJUlKjIQKAKBCbFpXvzsdAKxXdGMOucEBEbqhQJwhqj"), }, - { .name = IOV("AuGZeXahMBxUJWZdXz"), .value = IOV("GiSQzDqYMnFdZjdEkapUxdDVK"), }, - { .name = IOV("SwHvxlEN"), .value = IOV("zZhIhWcb"), }, - { .name = IOV("HYHSII"), .value = IOV("oBzkAsKzgBFoTeSxpcb"), }, - { .name = IOV("LrLqZXCj"), .value = IOV("oRqXlgWtnl"), }, - { .name = IOV("iuOVYJebbmm"), .value = IOV("zBLXAyTysLFsmOdVhRqakCTaCDDhWVpJvAMyppusPLCUxbXKOgUSZrSuStyMCzpjvrT"), }, - { .name = IOV("GWTEPbciiRkB"), .value = IOV("UiEfoXkTeUZWVGnJhaSOfokUffuqMcwDXKXghSEdUFoMaYHlWImMtcizemIDUzyW"), }, - { .name = IOV("rZrgxltD"), .value = IOV("NIai"), }, - { .name = IOV("nyoptgEfeDGWdexYjv"), .value = IOV("jtHjNcpIDPSrZWtOyShonDfgqTPNRgJTcyEaan"), }, - { .name = IOV("wpePejEqKxAZnIoEEVbr"), .value = IOV("sttZWxiWSpzjTdmkyPlTXUmvUeFRNmBhARIAidcdbz"), }, - { .name = IOV("UJSzTPJnZofxQ"), .value = IOV("SxkKjNzLcOMsnccvayamnWnuXegvwsfWUnDeFUPYBTYlMplkcSbbHcHlFchEcgRycZUYfvLhWhBoDzj"), }, - { .name = IOV("ASgFZPtuhbZIp"), .value = IOV("mN"), }, - { .name = IOV("QFjBLNw"), .value = IOV("dTuSWQuOSkRoTTcsqXykmMmHBLDeAUCRSsviJKRXMfnCVBaheJOBYDhAnJeWKeqPS"), }, - { .name = IOV("r"), .value = IOV("vTRwGDcOJZCzOhlBrOrBSZLlvkHP"), }, - { .name = IOV("TXrcm"), .value = IOV("HSZOxWHGMpWyd"), }, - { .name = IOV("cMADjFCYcrH"), .value = IOV("CqcatrpoQOkXiyNjZyHBEGGjVIqdRLKfSUIjpJNcQDJBjtT"), }, - { .name = IOV("CWZF"), .value = IOV("cmiaeIsmSdUMzyli"), }, - { .name = IOV("JMFQvzWdPuDNfdINzI"), .value = IOV("bjcfGjIHKyaWXOqEVXsJCuQhxpPlHlAUASlLGqCNzDkHuorbOvEErACTyCWUHNlJueNJcOCBThQ"), }, - { .name = IOV("gYQtRiUkyWViXUVfZTP"), .value = IOV("QHaBlUP"), }, - { .name = IOV("VDlMQ"), .value = IOV("yeJatHCJIPTweoTRlfcxXgcpjjInhfgC"), }, - { .name = IOV("VCnZVb"), .value = IOV("XxXBWRvCiIzkrTFLUdGixzeowpHSeIupvQHZIUqhWFdWAJPtpTR"), }, - { .name = IOV("GaSzfleYSVBygx"), .value = IOV("nMdyiJHPyePiyDQyHQgwpnDUzDQpXeJwKVoyIMtJHwqEATWAuKTNRiPtyDLrNRA"), }, - { .name = IOV("bVHBgoPDYyuKoUAqW"), .value = IOV("LtzEQSnIrrnqjIWzixoNvNEgXgffhAEkvRoCEKpiYUicHAGtBvS"), }, - { .name = IOV("tstCRYdvGSkZlPLjCaXo"), .value = IOV("ogDrDdlstgKbHyPeaQRGMPpyTFtQWEmmIoZlLYyQvtYlSrFOezxaWbjkiXbaxXHXlqVaLdNIY"), }, - { .name = IOV("ElHtBz"), .value = IOV("neRV"), }, - { .name = IOV("rEsQBAPcPes"), .value = IOV("LuJMDDJfWpAQiYqOIelzSVWrDywSNmfre"), }, - { .name = IOV("fTkvxyDltst"), .value = IOV("BUUXBXmmUjMhnhzdwshvRkkRcSREIivhRKdjBAmQCVVhY"), }, - { .name = IOV("rSvIHtEGQvm"), .value = IOV("DPOskubftoeaZxublinjkEmhXVtWiyYqevMBxXYNUGXmdcsIq"), }, - { .name = IOV("y"), .value = IOV("xRuULWxofVIwLanvJApEgkEGLBcAnuWERYlVNlZeOjyKfDNJmmpDlCObTAqba"), }, - { .name = IOV("OAOmOzhxVkwoCoCo"), .value = IOV("APCVdLgjpcXZDMixjIrsWvVZcn"), }, - { .name = IOV("tdldfbgTF"), .value = IOV("fYNipIGKRcfrcmfCuVeLKeTNdvc"), }, - { .name = IOV("rKdGQiPaRQwLXqqsWgvN"), .value = IOV("OykDdHRbegtVYcoipQJFstLlrJrUbWmtTZBJSwaWDXfUYVglVkkpfXNV"), }, - { .name = IOV("qdSh"), .value = IOV("QxOUfqJzakKTQMVjegUMDzfKJe"), }, - { .name = IOV("NhHaOtPWXdNUpPuoJ"), .value = IOV("SoThiOQoCLqauvBwPncii"), }, - { .name = IOV("OXKXIxlbppyWl"), .value = IOV("XevhcBcttJwCbyyBfegNBUCqLzsjMKHbXBbRjrmkGyONRJvSVfmlsurfkkRvDACpVscMgWKA"), }, - { .name = IOV("jEjpZfeBYMAEdp"), .value = IOV("xIRWsndDNqwGiYJMIknGMDmANmjvuqH"), }, - { .name = IOV("QZSzoB"), .value = IOV("qhJSBSuGMTCembaNyTqXBGYyhZnmEw"), }, - { .name = IOV("DCTorjlDHJmseolwoK"), .value = IOV("kWn"), }, - { .name = IOV("qW"), .value = IOV("OiQXOYCYmmQMvRubDRTaBBGpIkKUoKFNDEPViSaouqdShzBVKcPQOQGjMMwYJmlYIXKFbnC"), }, - { .name = IOV("sRdc"), .value = IOV("AGeligyegCvXcAhwaIGQNzOWKNWb"), }, - { .name = IOV("ONDOl"), .value = IOV("BrbeMNsTvMxJhyRu"), }, - { .name = IOV("OxglgPoIb"), .value = IOV("lwKyoSfpuKPuNICVVPTdKlJrqqjtKJUVlzxpQ"), }, - { .name = IOV("Qd"), .value = IOV("GqlCsiQnZSPiKCTeUFjFaBtYfIsCSLYpAaNrrjHdgFEyM"), }, - { .name = IOV("DsCESmV"), .value = IOV("EQ"), }, - { .name = IOV("nLPNhyUwHihfVrf"), .value = IOV("GGvPgIRYdTGsKyhqMeQjrpavKmJJALWQzJ"), }, - { .name = IOV("iFdZfjcz"), .value = IOV("WgacpKeyJrnqQCUDjAPgMFZdOjATZFFYnLheUhvHVQIbyUouEVMOWfrsgIXYYSc"), }, - { .name = IOV("KDidvVgeuOIrAPW"), .value = IOV("fPkNajgNKtDxnCOAPEDvrkXDwxQTcTydMtuADPHBxEhIgiDFFOsEJgWrrIYsA"), }, - { .name = IOV("M"), .value = IOV("DFKHCpygNjCAAnSiPncSBVsHCIaQazAEDBszTWcbYeRzJPvkHksTfXPIhHbGAl"), }, - { .name = IOV("sYiktllJVEBIyzs"), .value = IOV("mswzsnYfcHdoPQnUBhlUKRqjpMfrpxiRtTPXcGbyyRkgRdw"), }, - { .name = IOV("KXv"), .value = IOV("ZlwLOVijxLvYncwvkmxPNX"), }, - { .name = IOV("MV"), .value = IOV("AVbAjCDZZZAGMUjJbn"), }, - { .name = IOV("YynxvVR"), .value = IOV("xTDZZE"), }, - { .name = IOV("VDTcMXhrgKNN"), .value = IOV("wWzdkCFrEmYncZeLoYxNw"), }, - { .name = IOV("YKcPhAJdyfHc"), .value = IOV("xfPUJAqXOAzXHGmOmiivLRPuZIgzwKuJskGbXaVfqDipxhMhkrcrIFQmEuKlZkULsEeYIwy"), }, - { .name = IOV("LeTRQrRhMTv"), .value = IOV("BrIxtSNliSxHplUakNPVhgEbYXDFjFLCQugKcdwiDPXpoBbwibQeSjZFDUaBfmwgCPXPEQH"), }, - { .name = IOV("ejmDjeD"), .value = IOV("mnjVOABjDCkdFbINXPZWOKDnNOVVJyLAuKwgIBjnnfEkdq"), }, - { .name = IOV("JKXeh"), .value = IOV("trHIzxUCQLfEGXjH"), }, - { .name = IOV("HZJgf"), .value = IOV("CCEBTRvRzcZEVhSPXNoMOrHoILaaCgWCovAEENxnRkNhwdGEMkP"), }, - { .name = IOV("OpuwddD"), .value = IOV("SLASwlMLnuCEYCyzrogpGgZaasCujKWLyaeTncZGAGnGm"), }, - { .name = IOV("mJkv"), .value = IOV("iCvBphyQjmjiiuGylFyXKZRYbgZuoUBQqIu"), }, - { .name = IOV("EbEXkEKJKjcETYDr"), .value = IOV("BKvwehVTluZNfsyYXRPDWkYEsityhGkPmftmcgTnLVEWcIYBsZBOrVOLeSQP"), }, - { .name = IOV("taeolCkFvAnZwEIdTO"), .value = IOV("FaNRMNxgksLdNDhZuYtvARbWkmCoDAiRCgDShpTxCDPrqweeJXSzybSEXAqaUcqyjhmBfhEICl"), }, - { .name = IOV("lLdWByGVFnBAnqKKYAAb"), .value = IOV("RFRFBlSUgdpVKXulQibEjkVctXFLIYwtcAQOSnVqUOJRLuafVMiIJxxKUzoh"), }, - { .name = IOV("kLMjZm"), .value = IOV("AdVmkutGYkRE"), }, - { .name = IOV("dzCQCp"), .value = IOV("EzQnaEeKTYzOATprz"), }, - { .name = IOV("QOgmq"), .value = IOV("VWdNCbrGRAILoNhiw"), }, - { .name = IOV("xnCRVnmXCVONBzkY"), .value = IOV("WBxJobttRpWLmXK"), }, - { .name = IOV("Ua"), .value = IOV("WuGqhijBQucBnmRmxfGvnJBVWiwpknplMTyBfOTbKswEeGVEdPifonL"), }, - { .name = IOV("oJelzcJBVZrvsml"), .value = IOV("DgvRFrNlshTYSzrVdZZIUpYqRlYlGEDgOwxLKECgCnsQZmYajLvViAsSSPvQwpucjAkJqKZBN"), }, - { .name = IOV("ffmbBvNpgShjQH"), .value = IOV("VaAVRqAGzCJezYZyuaUAVngjwwRnOPIAtORAPWHHmDzBbRUDELKonKlXSqUpY"), }, - { .name = IOV("qSIdWOtuoq"), .value = IOV("RALCfZszVZSCxUXcocxSJQSznEIyYdVsNykYImgTBInbTmKNCTqChgnoAIITDKCxozM"), }, - { .name = IOV("XPJTeIEC"), .value = IOV("YBInkbXyrrdIWyLRSOjyigiFXUmDiTnKsWe"), }, - { .name = IOV("krPXajR"), .value = IOV("eFdoiztHSMlliNGIWcUwEQjoGLhSzTInAqhwncIsjtHxshMmkrtozJQfwhTejvl"), }, - { .name = IOV("GmyFlQNEICfaTsdMOp"), .value = IOV("NxIERNWV"), }, - { .name = IOV("LBFT"), .value = IOV("Pci"), }, - { .name = IOV("LZiSvTDdUPucci"), .value = IOV("TxRlpjCKCSJpVaSjKXpWEgESPmroZFpnTiGoQsZcHwIRaApStCYUgmnPwgOrXEfqrfMMqsv"), }, - { .name = IOV("dWmKRWgKmdMc"), .value = IOV("RBzZpYFLagepqLwNLpgDcqaaS"), }, - { .name = IOV("IpNVSXZe"), .value = IOV("RAJba"), }, - { .name = IOV("cOkQIbgvwbQPkzAlDEzd"), .value = IOV("XcqBzAYcmQZWERQfqyUtpLIHUfwJESxoQLHEBkeJHjmHzdssnNaOxIk"), }, - { .name = IOV("nDLCxPtNAW"), .value = IOV("twxnNwMltoqiljjbQeKiIPPqimWTefH"), }, - { .name = IOV("XmpPpmfgdaahRpB"), .value = IOV("HrVUFqjQphfZNqkhfNXLKXxzrauYvQireiviuUwRgTmESjulQHZGgyoayuJvlEJvdyNOyGuGGpVOxq"), }, - { .name = IOV("aQoDr"), .value = IOV("CwmWwYHMfKHCpIrsCQAlIwKkGbYFehatmWxvtZOaMkYfzrVIfJyxBVvqiDrSjqMDYqFOKS"), }, - { .name = IOV("NkG"), .value = IOV("RuhTieopSDOCcTM"), }, - { .name = IOV("RvODQStrxxQwaOMmY"), .value = IOV("YCT"), }, - { .name = IOV("SZ"), .value = IOV("kixjZcbujivEepsAzOaetMYmXKjAJQWMiEfZYLvCLvHgnFecmktEm"), }, - { .name = IOV("evDDRXfmISw"), .value = IOV("JrptUcMXJbhnyAgxWJOIZHCHZsHFNKIYHdNBTpn"), }, - { .name = IOV("ZzGeAvvxuqAnpCf"), .value = IOV("cQ"), }, - { .name = IOV("AYVXCAECRUthwrDPIYd"), .value = IOV("afhxCvzTGApJMDNgPEGhBehqWEmDBAiJIyMqUXKLDjZne"), }, - { .name = IOV("BCCRszxXEN"), .value = IOV("ErLHpcGOiEvwvdJwWtQgSwcbLJOIUdexeLlEBfkWEGVjRJKWvstBHFKefnsX"), }, - { .name = IOV("o"), .value = IOV("iykdtBAXfpDkjSgnqmQgNpqfbEnSyPMkbvhBGfVfzDPdOC"), }, - { .name = IOV("BNPFKAHMYBdYBNkJRFxD"), .value = IOV("nJvhACKjnYDZuitemsYiyhhkqNumXVkWXfsvnHzYUpyAIwoVdEqWesNe"), }, - { .name = IOV("tsEC"), .value = IOV("tnxWeSlwDeCYzmp"), }, - { .name = IOV("WsrTDmETH"), .value = IOV("SuWqiUlGIyIauQvezisdtNBXCjKpUQkWPaXyWgKmwgySMOSNKnGxnjfriBP"), }, - { .name = IOV("GSISlmcTBNQlL"), .value = IOV("RdamcIITHkCoOyIlYTKIQraaBuLQtKCYDdQMMnxIIDjWmxlIvxaRY"), }, - { .name = IOV("sTN"), .value = IOV("qRIMjRrDnZltlKN"), }, - { .name = IOV("fSNPiaewhonv"), .value = IOV("qnzdzMpctlOFoFgpUkCkrDZ"), }, - { .name = IOV("fUnmjwZoORMatzlgUkI"), .value = IOV("ZPlvFyWtDwDTAspttqyURMgurRSkgedgIQSDzLqpEJKvsWTas"), }, - { .name = IOV("obBAHanqzD"), .value = IOV("JtGpMKfHcHobGgioCTnOQzodrdXbgmGPYBSoaNxMVRrQWhthgUQlmBIBFIuqAiepLElyvkZJJtagOz"), }, - { .name = IOV("rhOShVia"), .value = IOV("BWthovcQokLRuZDdiyjVwztbBOESxoqiaeTddvSvAbnsdIlpieJZDbZdFWbpLOfuPaFUp"), }, - { .name = IOV("UOSnDyOCzsGlzkPmyy"), .value = IOV("MsVIRlJgUHnSRtWRs"), }, - { .name = IOV("GBkWPsVamtWAj"), .value = IOV("gxkTqX"), }, - { .name = IOV("tcbVp"), .value = IOV("VJGsbXRbeyZFdgGzTpPEmDQEOmPjawqWsebQK"), }, - { .name = IOV("RIr"), .value = IOV("BLLFksqebHXHYaAyZiTbksCFFvoyxcZXrJwTeYhaprMJxrtSLXLsgtaPlG"), }, - { .name = IOV("WKVkwDI"), .value = IOV("tQwCXQyksHHsbxbQAvVLdIDTLXJNGhDyaXDhefTilmdCVapIkiOazevJMsXzfnabAAiNuwkrUyZZbmgV"), }, - { .name = IOV("reOHsyNqwjzmTfZMPIPJ"), .value = IOV("dtSHikdfTSNPLt"), }, - { .name = IOV("kPc"), .value = IOV("tZWKzkBsXfqshBMQProjdYNILkGvpMZLPioKMfNPzMSePYQVTIZtPyN"), }, - { .name = IOV("ZR"), .value = IOV("qBwRwGcSewNgqNPLTDohnPGZKiVOSIiW"), }, - { .name = IOV("XiDbRDzmMtp"), .value = IOV("COpQTvJBiUmFGbNjZeqbemgHtBlAEDZZljHXqwfKRCIeODai"), }, - { .name = IOV("ZGgnEqzwvErCDgtA"), .value = IOV("gkEKwagqQSyQYmqWOmridzVIXouMazqcqICHxYZeSyVGVrcbYHXsQmcwLICncETVExEJCDEEzvwPkOf"), }, - { .name = IOV("YISyJxzNWiQlhiYgwZNp"), .value = IOV("EbltfnaydoTxBF"), }, - { .name = IOV("DZlZlkwuWKUHQK"), .value = IOV("YAexZqUUrnpzuPBcmigdWgHfsLouovGgQciqTZbzcJsvhRepiJoaTqBRyZTXRdOkCay"), }, - { .name = IOV("yCThzcNBPdrQHtcnLVVC"), .value = IOV("JuexItHiOsrlofHghOGIXmzowjPmacHhjqjHEvsxvQhZlTKxxgxOXpYnqrrNSxpqNCPHLIdPUOeeNlZ"), }, - { .name = IOV("moRZoDfp"), .value = IOV("oCohQtdOrAWsikSGpAIkBNscNxAIDTjFoqEtuYzFWPzzHPeWneHpOSRSUypJEXVgrUvGtmHNzduLOO"), }, - { .name = IOV("SdaSrI"), .value = IOV("ILSFprbztHXXaMKPpMPNkLkoFMyuzHwXNFvyNKBoMaNdCmPshilKEhzpfgByknODHYSuAP"), }, - { .name = IOV("YahTL"), .value = IOV("nQmgDAvTiPvsMITOvcQbHlLi"), }, - { .name = IOV("ZznGrV"), .value = IOV("kTieuKQPxAOBzNBpexQphMWbhSqgMscFIEVBPZLdQCnc"), }, - { .name = IOV("VMiZDgYwRbgCX"), .value = IOV("bAgDyPOmQFLMonIQpVdTsSbOQwsnkQMfPMOBEbxHuYogEGAaT"), }, - { .name = IOV("juL"), .value = IOV("AP"), }, - { .name = IOV("E"), .value = IOV("fhIDGKlbjurRvwudWJOvNipXXRv"), }, - { .name = IOV("gkaPjNf"), .value = IOV("PVjBwOKRCBoyeFnokqpaLAWEYJBVbuqJlbrEqSpzXSQURNIZVuDbohNMlXulcsdfCExclVJRxqH"), }, - { .name = IOV("VmUfpJQqRwQItfMi"), .value = IOV("TnenIgIkeRLikCCKosVkypzOzYGHVtSKjKEjNdUodjgENeTbCnMxGZYbFOKCIooqrnznEyaOJxxitrD"), }, - { .name = IOV("zFVitKGcxxjbXsNeB"), .value = IOV("dYfdJGyxizIpKKDPc"), }, - { .name = IOV("bwdlVeit"), .value = IOV("atSOUQSEkTJdSyYaKSblFvROZgfkBIQoFrfSIcVYBnaJOBjk"), }, - { .name = IOV("liYrIWLj"), .value = IOV("WmIWnXv"), }, - { .name = IOV("rUaYYRToqpvIyWmhs"), .value = IOV("hQBJTzXldmUGbvlYWAZOtmdeUKAEe"), }, - { .name = IOV("W"), .value = IOV("EscRAaFDLpkVwSxsSmrxvaknSafqoniUG"), }, - { .name = IOV("fShGdEfOhTkjDHHU"), .value = IOV("JrJayyTWeZbJwBbfBWBobMAONLFYUgnpyOfRGlMCTqbrJkDjewNkByfIzPMUlLTTmwcmXWltpiL"), }, - { .name = IOV("rVcNCwhXJ"), .value = IOV("LgWMppmYa"), }, - { .name = IOV("WsuLFBRePHDwoHIR"), .value = IOV("XlnBvhICKVEuTkRHrvxjDkrDZKCjeIZOYewoyFXlkmWRWFBi"), }, - { .name = IOV("WgYRCHABfCDSpjK"), .value = IOV("NcPmvjqns"), }, - { .name = IOV("iCNZoZXJQrvNl"), .value = IOV("LhhuYuwqlQJQrckKsAuEqKvLdOMsZIsypCYmWntxubFXfDkKwqqRLuSbOdEQeVonYOl"), }, - { .name = IOV("LHKbXezQXgETMqqhBy"), .value = IOV("ACohJEoNyJWvwfDgjDDXPmUpPJuLpoZgpCazmaK"), }, - { .name = IOV("RFlGow"), .value = IOV("YkuuvzibWfkTnGpvbaeAaIyHYHSkNYitPeaRUaLbkfmsnvQEfgeTHsiBfYFbDiuiAWyBzQzED"), }, - { .name = IOV("sdtjdTjpGZXHBRERU"), .value = IOV("SrCjcNWghrPgRF"), }, - { .name = IOV("WcDqTRGVtrRohB"), .value = IOV("JyJzEhetvftqOxymuE"), }, - { .name = IOV("yjXVZfLFHIluneqSVuz"), .value = IOV("MykUjCfIpgEtQbcPZCcIQuMMgavztzXHcwIJOkGAIcfEqCdBn"), }, - { .name = IOV("gPZFMlxAS"), .value = IOV("jKkOlnfWSSChsBPNieovMwIlLCywxDMqeWuTpdvxqEp"), }, - { .name = IOV("NYlKgJJQWsSKeLAYCdG"), .value = IOV("ekFRbrdaYwPtqkzgGnmzpjGxpGZwfqmRdw"), }, - { .name = IOV("xKvcchbEiNsiAfV"), .value = IOV("YxTinNk"), }, - { .name = IOV("mhvWpJOvQuK"), .value = IOV("vpjpaGJqTsgttRBDbyukxJrz"), }, - { .name = IOV("hjtltOuTur"), .value = IOV("MEttbLMevfEZla"), }, - { .name = IOV("WzUbmQVEQJeDRLTl"), .value = IOV("xvNYzTlRExLsxt"), }, - { .name = IOV("DihRYWQAcjOryKAnFl"), .value = IOV("IpjycKKfLaDUYpSCDlnuMxaNKLwyTrqzNrDkWyEzCYakClDvtMjkjbmNCxYOIACLvRnitxIzYyFfxccp"), }, - { .name = IOV("yikvOndR"), .value = IOV("lKvbbFifdcQUYizvVmNTtcFqhWDRPrPfsoVCrflPiXsBWNNOSQwrdGpmPK"), }, - { .name = IOV("qMOqIgQMQat"), .value = IOV("wPrgXJjldNixvOBzitrFixyRmcoaiKAbXepc"), }, - { .name = IOV("K"), .value = IOV("vTdgZtyFZABjSaXCyOzggBTjOYmdBmKZrkfGYDBwhsAlxjjLqsUMOieaQgZXoRkIBbFLECvZLsCVHV"), }, - { .name = IOV("CPSYbX"), .value = IOV("MQedxqheQXoLwereufNSZBWSUowqTdCsSOuFgfnyAVyD"), }, - { .name = IOV("UsBWDkKYPrlgeRDmVfb"), .value = IOV("kTsuxRIJUDjrSFcSxyYpmrkppvygCQNuAMLbMDDYqofoxONZTZJFnRmOxZwTKkctEssvN"), }, - { .name = IOV("nYpgTvCkJbAlg"), .value = IOV("xdIdduYgtrfPbuNDtlhMqNYXI"), }, - { .name = IOV("WOBKzIsQJWtNg"), .value = IOV("mZtCdBFZjGnmIPEoYEGarzrcLNVkNvtjIpCHlfcrTcDtcOPtyXWcFTxwB"), }, - { .name = IOV("tVlkZeVdUDtPNs"), .value = IOV("SwdeHNPmXLBwiGmHILLjFwgWQIZdNp"), }, - { .name = IOV("uvgLVyL"), .value = IOV("GdYvZaYOwPvtMnxMunEdeBtOUGJSCSlYEfmcQjzIMhiAbTnsHGJNjHoLn"), }, - { .name = IOV("QvnlHUlzKlNMSfLYOXlE"), .value = IOV("UWmnSlahXTcbPsuaVpuSgrloozFcAcEFYffUmuPIhDUUKUBdxySNvvDIWGJgXNfHe"), }, - { .name = IOV("Rz"), .value = IOV("VpuVNMxNPOoegZKhMxmJMvKfQCxqEDyTCLiYiqIJTtzkHiBGYxmtYeSIOV"), }, - { .name = IOV("fYtWDIe"), .value = IOV("Vl"), }, - { .name = IOV("eBkbgectBcdWRlsQKCw"), .value = IOV("TKODutQtRWoQQQqZntLTaLrlZeInfmdBPbJTsJjMriGBiIeFeb"), }, - { .name = IOV("alDjOoBkHLhif"), .value = IOV("omQKXYmNcmvk"), }, - { .name = IOV("ZFIopjGUeflONhlpVkB"), .value = IOV("GjXDVpgnxXZrInzGSUQxP"), }, - { .name = IOV("qbvDKJNTwAcWVaRVKgJj"), .value = IOV("LDwKUDFqehowhiScZnxQURiOcVowacEUsjsUgbVFIVaFFtuHJUubfZpUxjwmf"), }, - { .name = IOV("zPokjukwQsngH"), .value = IOV("DTeGUGEWEIA"), }, - { .name = IOV("mjouOWzsDgwg"), .value = IOV("EZRRlVadZIHSdFpEAtGJZUcSoSjnUFgDeCkZJpGcWruyURO"), }, - { .name = IOV("qyojEvRkUr"), .value = IOV("rrVILZAKTdmmPYAjAnRxySFEY"), }, - { .name = IOV("GQRwSugjjFFdv"), .value = IOV("YjljHocYYHQNwEFkUOWVKJmpdtLWXhdAzUCVCjOodxnGVJOmzGzgoWZqCNRaAfGshWWaUaAHibL"), }, - { .name = IOV("bPPXDGmedsjEXVRwYw"), .value = IOV("ybBRcjBbWEuORdGwHYOAH"), }, - { .name = IOV("JiwVfSxA"), .value = IOV("VMNgcPXQPgpzZuHYGtiFqyLSpJfdiZmjNAQTftCJLesmnXPInBPlOGDmpSCtSxprDZqzXLeLyIvP"), }, - { .name = IOV("Hjk"), .value = IOV("riKzQttdveaJgjtUxHEoWyNVUPSjGLPWzpUhyMAhcTpcprQhKOvrfscawSjUKjFyDtbnrmqbsBcKmep"), }, - { .name = IOV("wno"), .value = IOV("QkFagHbnOrSZxreYsgxhZQiQTstucRcYqAGdXcV"), }, - { .name = IOV("anImmPtVLFPzEHho"), .value = IOV("AxfMqLwnSXVRnjFcCIivawPwPJpsAWTwVpUHEPIbmqpcAaFBHFqxF"), }, - { .name = IOV("BzriIu"), .value = IOV("FHNIUapQGfVpgnssjVLwuMxPXokpSpigvdRVLLBsaAEGImSfkrMT"), }, - { .name = IOV("zviuOIgtLiKJVCsUorpA"), .value = IOV("zjVdySvdRhnxUTDuZzhrkL"), }, - { .name = IOV("J"), .value = IOV("sLGCRXwINUEiGkvyot"), }, - { .name = IOV("F"), .value = IOV("XqCrEKVzxkS"), }, - { .name = IOV("wqXKWvqBz"), .value = IOV("SdnSugpoQBEQZHRtreKjPrRmNwZToMfCXw"), }, - { .name = IOV("ngw"), .value = IOV("wktQCctgfzXjflsmTjqYYbigaNaFZfIBSPhNJoVmxxcXoPvMFsWbOVTQFpItLGsIxAyCWftcsHXqxQml"), }, - { .name = IOV("aO"), .value = IOV("pRKlFciKzfDuPSepylWUqpSyNYghdHopXXdGwpstCgebrRbTFAVLjDPU"), }, - { .name = IOV("VlbXWpucyJx"), .value = IOV("mnsdffnBLhqkdGWtTVHPCKblpMkwuDgiDZdWxfFWxqYRWejUVYvoNDKBIcmPuTMK"), }, - { .name = IOV("la"), .value = IOV("JoumnXySSxNMTNDwZjelZpDoLUnMIqmmZNFrDflb"), }, - { .name = IOV("VctRSjwvvcRykvkS"), .value = IOV("tCkWuiVqehmWSfyHUKzmk"), }, - { .name = IOV("JrufjhGiaKJZrqtybKJl"), .value = IOV("VkdDcRDEtagqDlVNDleIBTEbetnlpWSqlgkeboprYMIOWhYQQkRcPD"), }, - { .name = IOV("E"), .value = IOV("rLXUuryRYTnFISonXDRqcMeDFEwwKsdTcqsnFolaTiLKzpQevszaufrUGcAKxBMGjmdX"), }, - { .name = IOV("FsFjheszGpWeAroelmZ"), .value = IOV("ItJEhnKgFUqFxni"), }, - { .name = IOV("hqEkChlN"), .value = IOV("pyUmANWXyMCdYScVvlemU"), }, - { .name = IOV("JNvWSUTseADr"), .value = IOV("vhSPuLKSgJYOBIhvSdVoEZsRNispKOCdFFYYLNFmwyBkuqnJDqJJkgrChqVgKxYwjhBETnVeJEEuWM"), }, - { .name = IOV("TAZZidSbAqekLrMX"), .value = IOV("cnmtqAmLjOXaVOBTpLBwuqEJNoRgfuNJseEgbXRTTzWNKsCbBbUUXfjONVxHWBDqbVAJVYsaVBh"), }, - { .name = IOV("JZ"), .value = IOV("WeiGxxgAOIFZhUjPuXPtoOMwWvJbyxvlz"), }, - { .name = IOV("xbvymnGIw"), .value = IOV("ugoGhWloyMpChJRxMXpWuEDpsneJWmqlMSQmFgNoytEJAHVUuEWGceyEchvScyQUycLVoGWpTaQsJKp"), }, - { .name = IOV("sVdgxyhdEJbYot"), .value = IOV("ILTwyYkZThbPrVSphJHZkRnqylOrroFglCdUmvnTukkyOxoUsdkSVVrkIgMXZNnWPDmhnOfjxLSC"), }, - { .name = IOV("XD"), .value = IOV("aPIMjcRjIbmzvgblXHZfilonCVzsXtcxg"), }, - { .name = IOV("Jsmqk"), .value = IOV("kntdfIOJVpbvjmhlQETKJmkAuTjNFILkSEgPtuKaKbfhVUMmpTGUfTwgKPOJBmwJg"), }, - { .name = IOV("x"), .value = IOV("MtywDyTDlfOLjvxURcoGnsbIXNeDyJuZsvRxu"), }, - { .name = IOV("bNKSJvPO"), .value = IOV("MIlonOZGAUVFuoXJYbXSewATDOxVczRWPJxKfrTRWNLSHVT"), }, - { .name = IOV("gpGGPodU"), .value = IOV("AZOlFUUyRoSwqdHlENKOHNZxlfKLyoTZNLkwRizLfQraXqrZHZydKUOrOlcXeNxglwIBOThcjCcQ"), }, - { .name = IOV("bw"), .value = IOV("asWpkPsvjJBXgOUuYfRtmBlrTAjMnjsBC"), }, - { .name = IOV("phnuBchcKWtcNwsUSs"), .value = IOV("gJVImQKtcuQMBvfmYUbbypFcsRLSbssIlDQrcDKAlJghKupcjzFCMWLGnTilyOS"), }, - { .name = IOV("IdLUUsgvrRCydOIGg"), .value = IOV("wppBGRQAjuZWIjmXh"), }, - { .name = IOV("spQpv"), .value = IOV("eHkcGRKXRzyYBDFoUVTgDOzvCOZIefrrFNoJCKSDidkAfhhMmhKIKCeCDEYDdZzzxKd"), }, - { .name = IOV("RgulAgqyb"), .value = IOV("pMSPiBPPjcdYYzDxlYmUPpBVbAVDbOQZhXSSm"), }, - { .name = IOV("QWBAppl"), .value = IOV("iKwyxHWepPEDuPshqYVaLg"), }, - { .name = IOV("CXzgbazesxFnkAwPwl"), .value = IOV("DgCRkYKvHQcVOooBUrFBRteSXzaZvLAMagO"), }, - { .name = IOV("ZYuPwByiSSx"), .value = IOV("dIEwNkQDQsdnGPryVMrRPLSlHkIxoEJLGuXApAApWJEiBGvY"), }, - { .name = IOV("Rypx"), .value = IOV("yMByKmSeTuNvjaxHdJcvAohKTaStuCMcFhYx"), }, - { .name = IOV("HAHEeVMMX"), .value = IOV("bGFuCruqvAuoVRQpcpDGKbxBNgXz"), }, - { .name = IOV("yAuwJAP"), .value = IOV("xOYgxJYGCJtMXf"), }, - { .name = IOV("d"), .value = IOV("LXhUgNaYiMgArSSscLdRdoqEswsRDvMlNVgZLCoOvxgVgXuCTpvaZAHkoonfRVigGe"), }, - { .name = IOV("kSgEPFR"), .value = IOV("QtbEpcIcTbfCITAuhMlJvNJHEsYkmzOScsvtWJ"), }, - { .name = IOV("OzoAHKnFzKCXwS"), .value = IOV("zPDLVHOFfxLEApmDAUuoEzKMunaSQHmBuLOvogpWPWaLj"), }, - { .name = IOV("K"), .value = IOV("HqszZLAdJJOQw"), }, - { .name = IOV("ioGNfJKzx"), .value = IOV("lViJdCMdFVLjVndQBbfjdHPuCPxu"), }, - { .name = IOV("PgylRgdWtv"), .value = IOV("sAiZNgEBUQqrohTLDWthitmzyRovVNjxlglVrEHExVFtSJiYiEcpgDKFKBgORqRcKKYQ"), }, - { .name = IOV("LkgvNbiFqKWMjRWcjM"), .value = IOV("pxbYpltHHCbqVEezQFUPnccyvKsbXYlqRtNkWRFRxYOgNDhdzeZiPqZkripNLZxRDZ"), }, - { .name = IOV("vrtjC"), .value = IOV("HaZQEcHzVEUYXGkCuGtwvnVoRbDErziSfTausTolRiBcV"), }, - { .name = IOV("hQrxo"), .value = IOV("nHjAmMtAkDpHdazFtUEZKMVZsKvgDLgSweDC"), }, - { .name = IOV("fTdptpTmuFiCGmIhRN"), .value = IOV("IHjwASnvRJlMtRKkrZcBHqZUGAEeYwTBailviNstBpTAGLZtenwuKjsbZtsXkhnNkQpEjaksXSZ"), }, - { .name = IOV("ZqfOZVSGuaqEyR"), .value = IOV("O"), }, - { .name = IOV("QhWEcd"), .value = IOV("GWhHfVcMoPpMXMihAcucptemRGmnyQQcYxroNfWdDM"), }, - { .name = IOV("nasH"), .value = IOV("eRzDaulxtDioQhbfLutuNWrsVMoSAlABPAlaxSiOVtGpZwXyPAgkjEdTRajHSF"), }, - { .name = IOV("OHeQoyhkfjzObMTfFMRu"), .value = IOV("OWMWJDUUjBjiYNESAmcDmXaCjpHWRDqacBhrOuCCHWDOZINvZBGEyAAXFxRFcuGMRZYNtvDYonBue"), }, - { .name = IOV("PwVlJ"), .value = IOV("WmmyoDdEHSNQvjssFZZnRmLgVqALyWMyhXlHHfdOdyNmdU"), }, - { .name = IOV("aomLJyAyAqUsl"), .value = IOV("GapqwrwiBLvihRCombd"), }, - { .name = IOV("wsY"), .value = IOV("KysXFymQgmlYluMRogxJ"), }, - { .name = IOV("enFEIQjGxNNkgkIKI"), .value = IOV("DTa"), }, - { .name = IOV("ez"), .value = IOV("yDMxqjiPLrqQJslXrABoXHo"), }, - { .name = IOV("cfueX"), .value = IOV("FoOtrNj"), }, - { .name = IOV("fVtSPkyqJkAqplXqtWJ"), .value = IOV("KzCLCATHqTxdPBDlOWEkbVYFpom"), }, - { .name = IOV("sBBvhUsvDU"), .value = IOV("bWWRisUWnihdySytXzaTcyQmpGhZsEnuFr"), }, - { .name = IOV("HUI"), .value = IOV("uPQMJKzqXcDOGnbiXJjzTePDZxEgfJHjuKXJZXBftOyfEgoRDZZixKlGyJK"), }, - { .name = IOV("peGePKDbnexIJJ"), .value = IOV("UTxhRYVCfVtMLiPGUGwqAnGabbzUdIqosRmVQbNryatWBOvlGBBdoYM"), }, - { .name = IOV("DnmQvQRF"), .value = IOV("RcXISNjlWCpnuCqFZdkmnGhhsxBJWDVaOnXGuRngpCbmcbKSvzTFUZrgtRGqKcyX"), }, - { .name = IOV("rJeuo"), .value = IOV("OArikvFlAsmmWYJkhKpJVHMSLoycPTKpnqNl"), }, - { .name = IOV("jJ"), .value = IOV("afaIIDg"), }, - { .name = IOV("SbYASpQATM"), .value = IOV("FrsmFOPhqBXIYZZkza"), }, - { .name = IOV("eHHwdvLO"), .value = IOV("RHguGdiAoVxWEcg"), }, - { .name = IOV("jKIBViHGwzbYuUeNdWlv"), .value = IOV("JGXSU"), }, - { .name = IOV("jGeNbiqAXByirdw"), .value = IOV("aTNDvIODWgSGxJuMEHfqfiiIpOFbNXYAQynIcUKHabEDFpwtTMeag"), }, - { .name = IOV("biauqOOvTokYpgCBcMp"), .value = IOV("rSOBNxuNwBucQoEmEWASghXWQhLVVjfRqkcIsEfhBQpEuDQU"), }, - { .name = IOV("ftlIUBniNBGkNP"), .value = IOV("EAKoAQXOXwuZOf"), }, - { .name = IOV("o"), .value = IOV("n"), }, - { .name = IOV("VTHeD"), .value = IOV("fCghKJasMLkNYvwWPwfxOsAhXeyHMKHhuYihhieZjPeJcKWnQAntNipUJdyRdgYBWlrxSvAtOygwZp"), }, - { .name = IOV("RVxaUKyrbQo"), .value = IOV("cd"), }, - { .name = IOV("EfqCUVtwVQBsdK"), .value = IOV("sWIbdlKgQHWVUKXPhZeOhXDprrJJPiNvzCZbjSxLSszZYuCG"), }, - { .name = IOV("GDn"), .value = IOV("xblBvH"), }, - { .name = IOV("sK"), .value = IOV("intz"), }, - { .name = IOV("wgBWsZQxSmWTCeUlnaD"), .value = IOV("NXHknwUTglzHQYnZjoWeIWfDbYfGISUBYsEqmtHtktLMXuWqwdFPIihCXBrmWdKrDeAvlHbX"), }, - { .name = IOV("NqWLw"), .value = IOV("jVJPysBFKZoJEvDdlhrHqgQXZywNEsgiOtMGmreswOwjsBzBFGIBNKriigL"), }, - { .name = IOV("KcWs"), .value = IOV("dtMbgUrpXZeaqqPjPjXRpQYCeEGQCqSdtTGz"), }, - { .name = IOV("WYhvuxIfwABZiEEFUwFz"), .value = IOV("VSlkztqPlojvIVxFJeoSBwiTMWQTSbpRhXPCxGrNLSVLEobUtOelGbGrLIfUCORDVMFZFsvELGDgd"), }, - { .name = IOV("DmeHxOnKeCQlWlJ"), .value = IOV("qHIIVSvJopxUK"), }, - { .name = IOV("x"), .value = IOV("HfzpKAXnjDggwkEjVwdPqBX"), }, - { .name = IOV("twNnTiYy"), .value = IOV("hVcXGosWhJRSEobxaNejvheASfeKEYnQfMwTQPJXkWFNrnNrBMNPiMqXOeu"), }, - { .name = IOV("pHAzBR"), .value = IOV("MdlwzaQNyCZhlvwtGJktjvjGaDOXDYInSoURRCIHqGvjdBtWmzHjmOgimTjzsZf"), }, - { .name = IOV("WXRzOXq"), .value = IOV("XyIiZquAvFGfNcgyBElpSozPMFGkTntqVMKnBTCiMUPywjaYjdQjvPHStiNJm"), }, - { .name = IOV("Uw"), .value = IOV("RGfGQFnGgJseyqLsGSbLKzMqMzrybyfDRUYcwhcGhdRGuRmypKTk"), }, - { .name = IOV("gitcbWisEFonV"), .value = IOV("EulIlaJFAfpgu"), }, - { .name = IOV("sGdJixFQi"), .value = IOV("YE"), }, - { .name = IOV("BUCADIOsanCeb"), .value = IOV("CnPaXpS"), }, - { .name = IOV("SXTHD"), .value = IOV("tSOiBldnIkkBskSoOogpbobWUXzINEqNKlUqmstUOsMDIIIwpUNALTFLAmhPKEShyMKKqaPhjcswD"), }, - { .name = IOV("LBn"), .value = IOV("UYqvzcIUPQhztyUJGhlscWXqgbmf"), }, - { .name = IOV("sSFRDYVEEHjAGd"), .value = IOV("ev"), }, - { .name = IOV("mrOHxb"), .value = IOV("PVEUZQNFQPKqRvdCyCrJwrsHNHXOgv"), }, - { .name = IOV("zpp"), .value = IOV("rtWfYDBagSZPtImxjKwtbhtgAeeFDrGgUlpRQOUFZXIxlBgNDkXLiMJwXJLIDjMOMEw"), }, - { .name = IOV("F"), .value = IOV("lkJMNSLPhMOEfFTzvFDWgTmyvTuncIELLEQsorAqIszysThqrqOKfgPKDupztgXLcdwZJ"), }, - { .name = IOV("EY"), .value = IOV("JGQUPRvyNCckQT"), }, - { .name = IOV("KOnx"), .value = IOV("eZwhcuiimQEOxrkBCgWlZpEwnYeoPSFkaphi"), }, - { .name = IOV("iyLhrsjmsxBzJ"), .value = IOV("CjxdBKwFzltHAgEPMtnnsBf"), }, - { .name = IOV("djNxsBegJprnpLOx"), .value = IOV("jiDkSXTqWGdkGdBDukoVHofvNFunXVcZyosQQpDVXZPKMHIRWaVsGvKFxsHOi"), }, - { .name = IOV("nsxBppzyMYr"), .value = IOV("zAwTEAJFNNnTWNRuEiAKksoAyMlFyunNjOgkaUGERqAvOFzfqdoBQvTcTM"), }, - { .name = IOV("rbaRhdxJNVWwr"), .value = IOV("dVLGEAfQwIZNvxlTYJYwQocYSBkTicDDXqcnDzRTtnMAqMveogAhDkxQvBJyOltuPbVSPmkJH"), }, - { .name = IOV("kjAvxfrwpIkIrwpvSqfX"), .value = IOV("zAdbiBvowajqMvanZvNszapaWTivGfEUTAMqPYOLjkCgMXCJoNYF"), }, - { .name = IOV("tXEMMNJSK"), .value = IOV("LsgvjULzGWcRqgRRfdgfGVeLMgTdiyObwpnJ"), }, - { .name = IOV("FgUYPBLLxtrnKXNais"), .value = IOV("pYMEqeISJmpEnZjxWvMuxqpOUnDuDYKPuqsJHzQYYWPqpesc"), }, - { .name = IOV("mSi"), .value = IOV("avVMPpBqiTwUSdQJTOlGbPUnVSWAOOpsJmlZQpbtNfvBSDpXJRKNsSvKTMDiWDlnVrNSZotwELlGW"), }, - { .name = IOV("AoBLQUDkSjNoT"), .value = IOV("DdqPjmnxwyiHDCJnYgePXLothUGZATSBNnsZiyieRLsWvaGyTYouERBzqcNh"), }, - { .name = IOV("BMjFaAEDErPCGORd"), .value = IOV("dYyfDUTDDbUaGXbMrjyUyKghgvOiDyjLZRhuzR"), }, - { .name = IOV("pScMuFLTEomMkRRjPDf"), .value = IOV("fePswGDMKrIJUDXubicLtZxVVeHzjLIDkDamcyteUyIwxAlDVKqagKNmAafKMV"), }, - { .name = IOV("VtxFDEMVUYiwgZrj"), .value = IOV("WIfdEclxKTL"), }, - { .name = IOV("RfnfXsmzOamHpBzZor"), .value = IOV("HLPxLTmpuwSQLghGolntGaeFpujsClblmDPDbPNpZRfyYpaqzQdjZRcdVDwL"), }, - { .name = IOV("lhlsaZtPI"), .value = IOV("TSsTtrZRgfzmOPMoGjcmxxKBQawFKEdDmmLXsQVzmelffAMZSakjqqTKBAMaJBoJLdIAVoJRwUfMf"), }, - { .name = IOV("EH"), .value = IOV("HiMGHPndDYCqvFu"), }, - { .name = IOV("ts"), .value = IOV("npLPASzqirorshTFvcbmEsg"), }, - { .name = IOV("MvRQt"), .value = IOV("NvzosTRKAzfwEkpTtxcOWvqi"), }, - { .name = IOV("yXknHmxWlVNhdEVGwd"), .value = IOV("XAoWY"), }, - { .name = IOV("NGmZTopcHk"), .value = IOV("hKZHCuVtxStCljFxYFEDzXpsCwXKnNFkjXtEqzUVyWsQmYnOAiELIrpbV"), }, - { .name = IOV("JcvpffzcZCSPX"), .value = IOV("MRgcyRXysSJiQhalFaY"), }, - { .name = IOV("znFlSsaCIsjCsfOSYsOd"), .value = IOV("dNUFYkuyvTbwZSKWpdlqQadVAfLSAGuMKqGUJgHlVtfBsbrSbKkVsYnqgydQghFffEblcKyG"), }, - { .name = IOV("ebOvMbFDYYiL"), .value = IOV("BFeuhtFfzZBYjCQAmoeTWeqpYFcGfRRHlDgLxLskzvEcPTxfIjciKyIioLlXOScf"), }, - { .name = IOV("tdjeORZmf"), .value = IOV("YQnldRPzErwGWzRWasldEDOljbdJOsyhzELjsufVkZviOnloHbbExLtnN"), }, - { .name = IOV("xhVVslBArAq"), .value = IOV("YwV"), }, - { .name = IOV("mNw"), .value = IOV("VLJTUYFyqpHEwuRqKsEunFXHFCqaAoXiRzzgN"), }, - { .name = IOV("kmxmFsIxecEeS"), .value = IOV("AjrXvePlmssnzzXJpUFqNDrWIztpTpmWgFYOJHwvSUteCNxWyYZEYusGJa"), }, - { .name = IOV("OOJDekdNTmncyq"), .value = IOV("dWkwrUGvuyDmQLtoZVMNddimuJNDBCyeRSDasxSK"), }, - { .name = IOV("cylUTZdNklkL"), .value = IOV("WAFnYqdkoJjRxtEfUqNmVqrsQrHOXnSqLDRYGgJLmZEEyflMkUXVJBHwPCTZrtORXsg"), }, - { .name = IOV("IOrbFBMA"), .value = IOV("uaWEUGkUFulOHRMmLAT"), }, - { .name = IOV("kJJsZ"), .value = IOV("KVHVvspAidtwGiBNTBQROyYryaMUKAeWpJsirTNVOpqLGTiBhZcPK"), }, - { .name = IOV("bEXVXcqLbBzpfwpLP"), .value = IOV("MgXGLq"), }, - { .name = IOV("wOmsAJwOVQ"), .value = IOV("tDRyCCDkouLXguYOEosgQsgCQfxgpTwfMqBLzyCPUDWihMSlLuqpIltALuWHvBlhYImxoTTlQZoMYuaf"), }, - { .name = IOV("MHaRoMKA"), .value = IOV("TBLDdf"), }, - { .name = IOV("mIuU"), .value = IOV("HpKfXygfoSOaDDlkARppWGJjumCkcBZsidSMRhlVgqsOTvTWfdWbrOuBOjjTxRAVOluJVLknjKaGxj"), }, - { .name = IOV("ciQZBRpxYAlQq"), .value = IOV("TuTIXslWgkCgZLtkL"), }, - { .name = IOV("SzOgukVcAjN"), .value = IOV("qunuDSUkiJRDKNCqQapUZ"), }, - { .name = IOV("dxpVVsKweRDmaotx"), .value = IOV("kJBwRmxrSdmNRmrXexKwtOqAHpvUCUFpvCKSMgNrUFLTCYpPZuMNsO"), }, - { .name = IOV("xRoRkaGjqwNw"), .value = IOV("cswxwkABXsTloBhtFkYFegnMWPYVgqGXJsAHVAcPlFHrnimBGafXmodwrkfNV"), }, - { .name = IOV("jySVL"), .value = IOV("HFXbIKyRz"), }, - { .name = IOV("pMzNuTlHUbiERhaTI"), .value = IOV("iTdjwdxZueiwcbZYQTKRNGKGv"), }, - { .name = IOV("dkjNPqWcIJgqFDRpuW"), .value = IOV("kfoOEKeNqcdQlGeoiNrjxJKzswclnDbdxtWJOCEBtIuRsUJlAjdEFpTytXALMwgGnLVPAVp"), }, - { .name = IOV("SnpiKkPuGTRZvkwcYX"), .value = IOV("TSoCSXwkgnBQCKSZrhDCTcZnBXTmNPTUzgPForOiZZgqKHIMeao"), }, - { .name = IOV("Ot"), .value = IOV("NvKihJwh"), }, - { .name = IOV("Ob"), .value = IOV("NrXKwcICeOdvZtOMbsFcomigApWXWDevSwzOAomLHcPQjoHecOCkiFzNjyVbuXVKVBXoFDf"), }, - { .name = IOV("KkfDBiPcJLSbJmzXsY"), .value = IOV("yfrOPzVPJxddIQtKniJqalPRBDhCzacIQfQZvlKactpJ"), }, - { .name = IOV("usG"), .value = IOV("etYdBEKfXPGzwBzUXyANtxZXgdkdzuuIQhfcfVXqsBrJxcwjpBNUuCwocYScDHPsYwwBlFUEV"), }, - { .name = IOV("cEIBRTOeosFjGiOQJIS"), .value = IOV("ZFSjSDsAGwTgKMQhSbYUuYG"), }, - { .name = IOV("vytpQexwpKzpGCwf"), .value = IOV("mpAZcriRrqkoRmWYOaNzOtGyqIXqUYzKBJyinESMlthmDIUIevtJGSHTq"), }, - { .name = IOV("gzTyx"), .value = IOV("FvcNhJ"), }, - { .name = IOV("xhnHNfvOjgA"), .value = IOV("gtqaSvPqveDAaTXOLymMNTsXGIqmUwcoasXUGD"), }, - { .name = IOV("HsWNnpZlM"), .value = IOV("SEWyVlDGaSdumTttxfry"), }, - { .name = IOV("pXVWzzImQFXrPtEqDgIZ"), .value = IOV("oDGQCbCARAgbHHgEbvYgseQrCahsJPhXVNgmSnKuKGSIKukXoDCvTBDYab"), }, - { .name = IOV("sWcKg"), .value = IOV("kLu"), }, - { .name = IOV("LVGxcELRsLbN"), .value = IOV("utdrtYxEGyjuzudcmibRsBhtsUbanHKNmafZEqovKdyFiepXGaShSJyxBUoitDiYNajUsZu"), }, - { .name = IOV("SZkIhoaPQrypu"), .value = IOV("UGVfCoOyMDEDgXkBDpkjOSqY"), }, - { .name = IOV("uYnaenLKrCllLarwu"), .value = IOV("PZNlyu"), }, - { .name = IOV("Waz"), .value = IOV("nzvATrDbvqVDnjPwPaXEPuLMjQnrzg"), }, - { .name = IOV("fRy"), .value = IOV("yRzMJNoZlyIFfNxbCyHEHniRVsbUvOUBqzObApDPhNdjqXIrXTFXjMUMmFHMEbUqPpLii"), }, - { .name = IOV("EundTmCJJooTE"), .value = IOV("elfHNpHhxXbVmajiTcLPZUaRCeUiSvpxZTBvkLOaCseBDHXxgtKnftCvNfemQwybegoTVnLxqea"), }, - { .name = IOV("UcjetGfzlbRS"), .value = IOV("XxoyzbZwFxICposHhEtEErTkwodR"), }, - { .name = IOV("qUKicGENE"), .value = IOV("UoIwZinqWRYVFBbfBetzhpABJnYDhbDmgRwsGvx"), }, - { .name = IOV("HvBIpyLtQMJ"), .value = IOV("kGEtLElXKliYTEwbTNsQNjOBHzMYzCE"), }, - { .name = IOV("ip"), .value = IOV("lcaUHIfPT"), }, - { .name = IOV("JwZBhWq"), .value = IOV("SqGBcDiKzWIIHdtnR"), }, - { .name = IOV("dOwFWj"), .value = IOV("zAgSjLqGfyTTdsbKdsfNOdHWxSWSfRlmyNOmXBHvWZdwNtnU"), }, - { .name = IOV("yWTGAD"), .value = IOV("uezcTEYijsuUwQZIKILYyddezIyUs"), }, - { .name = IOV("rcAR"), .value = IOV("tJSDRYqvzQGlDlMKAAQuC"), }, - { .name = IOV("UgoJfoZPAK"), .value = IOV("aQGIqsrJWAhyRyopJkJpCDBkhipeTrwUrtIauBxXMiIKebewCZfk"), }, - { .name = IOV("KMNyZBIyMkxwpkrJztEG"), .value = IOV("oVmKcGHqMAkOkCZzKWIjks"), }, - { .name = IOV("tHtTQGMiRM"), .value = IOV("kGflRjPYmkUhautThFnUXAzkVjKRvDMNXN"), }, - { .name = IOV("H"), .value = IOV("ZKwonOEBIbaUdOgsfHUBTgOkuxfsGZRRGmVttG"), }, - { .name = IOV("baYvZxuQalQIOCa"), .value = IOV("bAtgKZeMMxHtmueCLlSEapP"), }, - { .name = IOV("ZbwvetctvcOFCOseSJLj"), .value = IOV("GypWNJZqGXgwTRYdpkPjfJjvvtJxKJImLRs"), }, - { .name = IOV("ridcZimcKnCE"), .value = IOV("USaJgHhFdLcrzNpRT"), }, - { .name = IOV("TVqgMYmjCbLOxvbMpdgX"), .value = IOV("CrbEHznyGgWcMfKFZGmpDxFTCw"), }, - { .name = IOV("eGcbnRqbrGnDyTVNQWsE"), .value = IOV("lKKCChLheOLMsuwhLEvCGiDIBuPiWrhIsbyrEmenhFCqHC"), }, - { .name = IOV("YKjCaOSRhcJWKZ"), .value = IOV("OgihGuBFiTKtFPmMphrsbGlnHYbzSHeimfdEYQ"), }, - { .name = IOV("hBGDeTvS"), .value = IOV("GgnukRMztOJQCxeNWnMcUIrMKeltUOjCrPCaFLehAVJXAwboBrpOTEke"), }, - { .name = IOV("QSYbNMPQYrIJRFKh"), .value = IOV("nOrGZguunkdhyPSzYlmGBRCFoRAlsFQN"), }, - { .name = IOV("VNPMGYgFSWAxu"), .value = IOV("YGGZJNXttRKhvrcjgPCoGjgWLFYtGQkCZUUcCOODDphjlaGJfQIJn"), }, - { .name = IOV("QcDiTMeZgsW"), .value = IOV("ZqjWBORlBvlf"), }, - { .name = IOV("fNJmIIlMuKXlm"), .value = IOV("y"), }, - { .name = IOV("pj"), .value = IOV("qcqZzfEFDSVIAPGjrEwAWKpMDfbJIevSLEKnIKSmjQJpxZCbTjMzPIgAbFecXmcTrUbpdIWj"), }, - { .name = IOV("lEhUfqFJuPdr"), .value = IOV("NvdkHPhlbWipgnYwmXaQDRiGlexSpLQ"), }, - { .name = IOV("Z"), .value = IOV("IjaYWEWZCqSOWzaRyANTImQlFHNFRAFHuNoMXhuWqzcDPBbWsNTsPkBzfMvOVt"), }, - { .name = IOV("qlPmOYm"), .value = IOV("KNspArTvshjXamEdwEqUsZimQxcFVPsFEsCUDZDyeJWer"), }, - { .name = IOV("qDSndVCQiFlaxq"), .value = IOV("DwITvRxYizmaJsAAhoXpSCnRdqFQgcSunIFQkw"), }, - { .name = IOV("LnBHZQOvEmMqm"), .value = IOV("kLXCoywxyRqtZiRsiNAYizdPMbbfHxDqo"), }, - { .name = IOV("eYQCv"), .value = IOV("FBKITneyatiPQAxGMraswuIQzgtNjZldZCxqZqq"), }, - { .name = IOV("PosTWREhYzSCKhTSbeoy"), .value = IOV("YIRXpUnOKaDJyrWBWCdCcksuUST"), }, - { .name = IOV("D"), .value = IOV("gtXBLEXISHNQwhxosYjONNOJarEowFPNsZ"), }, - { .name = IOV("dvsPD"), .value = IOV("kaolqKyBGMUlKsTJnsgtaxrVqoPpjFElRXZeQrJw"), }, - { .name = IOV("TOTqTeYDMSG"), .value = IOV("hXKphnOwMHcDaNauTnBpDxQFxZhRBMmopHfveiZnPMpjhxxIrwulZuBSzVUoHBwY"), }, - { .name = IOV("hTqFOOkQVDyQqqyGJf"), .value = IOV("FyfcZqUyPeOfhLmJrLFLyTBuIQgeEdJjpIhllwdMMDvRTsJdgrsYhVxaueCfNmSEnYOikjbvN"), }, - { .name = IOV("ctlt"), .value = IOV("LUITYmMnLtVfYCPblGsWfGoUmoSQ"), }, - { .name = IOV("qIJUo"), .value = IOV("ZhOblfImvqalMayDjngJDnP"), }, - { .name = IOV("mPQnOH"), .value = IOV("cvoRYmTvnqcuThtBSTVrrxmSLHOYpiOkFgTKt"), }, - { .name = IOV("WfKeZdTAeCOqkaIHe"), .value = IOV("YSPpZUkYCFvGosdlWrNJhQCNSdnmyRgyweMpLBJxovDCaIGMigGLUHAvfNvaaeuLjf"), }, - { .name = IOV("YlfCFTyBRJm"), .value = IOV("MuCjjSkxYuCivQSSKbjxYzqlOPXObVptQdANDURgnRcBrhSDhOm"), }, - { .name = IOV("egjiKjXcZKLXWqtfPu"), .value = IOV("VRVvsjjORqrJOmWprafZeeqFEPBhTraplXGyGzDmh"), }, - { .name = IOV("LfTjJaefRkMmWZEcCSr"), .value = IOV("EjonKeeHRxY"), }, - { .name = IOV("ha"), .value = IOV("xXXNgUSYxjDKcAAcZYNrQGiXN"), }, - { .name = IOV("IBjMPDDHr"), .value = IOV("v"), }, - { .name = IOV("WKnCMgmAtko"), .value = IOV("fhTFSXqCEjOFjWDuZiPbXgqfgXLEixjs"), }, - { .name = IOV("QBrz"), .value = IOV("qGMlHBDB"), }, - { .name = IOV("g"), .value = IOV("LQvZhwBzjdbRUqkPrWQPeZLvSEvmgqMjpknlRrpolnASWymXPwhgUhzLNBWvPylGCB"), }, - { .name = IOV("jb"), .value = IOV("QKGtiNTKawekjKFXYwSAylDkVEHhmOTQTCkSjaXwLOmQhSuvcKCKYomhlqfzDNh"), }, - { .name = IOV("JnnkNQhdI"), .value = IOV("BqzzmtPBCqxOvfBPhuML"), }, - { .name = IOV("xDRxMo"), .value = IOV("JobASkiulZrpXVbldUivXVn"), }, - { .name = IOV("huknhklXUXDvnmK"), .value = IOV("oZIplBzBiSlHkleqNfYacPVDxzEnXCaW"), }, - { .name = IOV("Z"), .value = IOV("mspwRRcuaIUezCWNpb"), }, - { .name = IOV("DrztXejwtMbfGMNYJSns"), .value = IOV("XZpWseBIHISKgtXHXvwkUMXhnzOWXqxwaIwUyycwIQCjxcXlYIuTeOptCrjJ"), }, - { .name = IOV("mPNZOiOQUuUDqlWghQSA"), .value = IOV("jScITAXVPtGJMGsvHYsKCYbzzjtNeTPBHwlqKbmOybDhskFNDlDrgoofFQwmI"), }, - { .name = IOV("UtE"), .value = IOV("cIaPXLmJrcbOEOiZiaTJaGdwvvlPRcGRGdUayNMJGtwqhUazPdvu"), }, - { .name = IOV("WBsvYnxgpV"), .value = IOV("fMBnyDDYyfEmzOXZwoNWdPyIorYwTAPzpEeUcyVtKkzKbyFcgTnRsHHFWhvTudcKSUQFXWpdd"), }, - { .name = IOV("ih"), .value = IOV("rhRQ"), }, - { .name = IOV("WRhtUDxzjKuuKF"), .value = IOV("NqpMBoXMscAdtmItXHevr"), }, - { .name = IOV("oGAwiTDaHfLgaDHjJX"), .value = IOV("FeeCtMMPhBEhFZrNMPVOIaxyULtcnJewxMxntZrI"), }, - { .name = IOV("uNuTdUtiYad"), .value = IOV("eTFcXKpAQOULETcjixDBCbNirQjmZWdwXXzVycbz"), }, - { .name = IOV("SHGBwOcaPGileMgvlF"), .value = IOV("jOEIKMyySTZFYcWPuOKJSnSHeqIxVDySjpaSVgIrSSbfGzpekzllWUhnUfUESbMibGZq"), }, - { .name = IOV("xAWZPUHjZsEOw"), .value = IOV("FpcMcnpQPzFFYJnRxo"), }, - { .name = IOV("bRC"), .value = IOV("WrWKjVnHxJQJeLDUnsTKpJqsKVz"), }, - { .name = IOV("OPZ"), .value = IOV("IpxSasmRvzjZLTfcrkjdiVWAPuTtZnDQiobxDzAJoFkdLKHSodpRJcNEuOKLgEZBeGDXvIa"), }, - { .name = IOV("grFyzM"), .value = IOV("IyniUjzipRZFnjqCwbXUtkYVpiBqVZXdtLzVyWbpN"), }, - { .name = IOV("VjbKzx"), .value = IOV("eKZZRarESmSWErQ"), }, - { .name = IOV("yLXf"), .value = IOV("YkJCAtVNzNWrHfqRuteiVRFjuhoWANpZtHIHsrPMvHwxSWUdXDzRAqhNdmaDNynggAfvinkkhkvmv"), }, - { .name = IOV("QKHFAjYMKkZedKhoGc"), .value = IOV("TfPENWMPqaoEzVkoGbjNBi"), }, - { .name = IOV("Zn"), .value = IOV("VgSzEMEiouWhpiGHxUAqTtvNpjDTZvcOznGeBKCOcFsGhnfNIyGUiBFgvxpPLUsHCJ"), }, - { .name = IOV("TeBKdvmwiIzsyvJhpYO"), .value = IOV("wDFIPSCRByezhLCMwfpiipqjKMusKrPYovoBSHDtwlWtarXQcKYlmoTnPrmDBeiQqHZg"), }, - { .name = IOV("IfbhfsLikGuLCBdx"), .value = IOV("IVdUUkZESJHyoEOVlBNxlJyBJyGstlmXoRJxjKjLVBazHMrZBYMFbZvLdifusTrVzjm"), }, - { .name = IOV("SfuzPip"), .value = IOV("YWoUGEgrzLbTFsIWMnbddtfKrvWQUYvJgpXVgJDAbEKlPYhDtNOqUFXJTfssXkfBQUxUISeJoBFkHM"), }, - { .name = IOV("EQGTQhaP"), .value = IOV("jqYsnHqqMloTumQDcXWSeKtXulNhSlKiufARXKMqWRUdeEuhWkmZlggFzDlnpUK"), }, - { .name = IOV("hzTyhqqviDujBmGaqvRG"), .value = IOV("osfsliAetALlMvYEjxlexrxGHmaimwwuvcMnJugRqHOVTBhEfQZPajWzHBNCeVquQZmxyBlyM"), }, - { .name = IOV("JsdRLkQySvpwuwIPLa"), .value = IOV("EfkfSEflobzKGmHXeTKkzMChETUrRMQdmwiwBtBzzgCNY"), }, - { .name = IOV("JOUDOkkhjijwewywET"), .value = IOV("GqbSsjLliWcbnJYuXEMQjXVsKtZOOFMiOoCHGNTCBomcVIcIKzrx"), }, - { .name = IOV("htKGUc"), .value = IOV("HvDkKZakZsjBykkxiXrGGLgZrOqHHlxArMaEbFoVTAOShgmifyQrTecUdRUVNKXWlEDE"), }, - { .name = IOV("hCxpkEgZ"), .value = IOV("txHvAH"), }, - { .name = IOV("Vbmp"), .value = IOV("YOjoChvJZXOSjzyAQFZqfkHHdWnzpEIj"), }, - { .name = IOV("uMgbgxBDIzXOfIrihZY"), .value = IOV("MSLkeElPfGLuhm"), }, - { .name = IOV("uWvjTLej"), .value = IOV("bzmYnOvWakzAnuWAKmDtPuFlByZDddQeeyJSVoAv"), }, - { .name = IOV("uXRVPhjeL"), .value = IOV("wpolNxwCQedtQPVGbuwbgTZpNrnHhxPfldoVrVMZYvQlelkVGppDBFPebyoKD"), }, - { .name = IOV("lbqPhdgbHBEeYKjrRV"), .value = IOV("ETamjUKLcfQWSXh"), }, - { .name = IOV("ofKjwAxGaCBf"), .value = IOV("ollBqQXnMftjHFQzfGeyhxOnDWl"), }, - { .name = IOV("w"), .value = IOV("jpNDKCeC"), }, - { .name = IOV("dwnjP"), .value = IOV("ZwjgHoNONvvSGFTiKoDzirZzjUlPndTFPXBwaS"), }, - { .name = IOV("Xsr"), .value = IOV("ddksBjqaLqyJrTBAFgkDiGQnayPtVpOAi"), }, - { .name = IOV("ubriwiuC"), .value = IOV("KUthFZVLywRNjfPnNJEmuusAOtphVBgJHSXcTIIAHMSSrhpmntKFiJhUuyJMQe"), }, - { .name = IOV("mPUnsPoxCtA"), .value = IOV("qjMDLxEwRjm"), }, - { .name = IOV("T"), .value = IOV("OxaaZuKuADKDAAJdKJlZRvOfEKYmzYVwRJuHMfkJXghcaYSgr"), }, - { .name = IOV("ch"), .value = IOV("fewVYTAmXmcVlwgjgDoUEMaktAPdjXutXnXZggkjvjTzuLAPUldsPIXSPtTFDymgSRbIzUWytFejDVd"), }, - { .name = IOV("cCGBZlmkWkj"), .value = IOV("goQryXhLxHTWAoLxIZFQ"), }, - { .name = IOV("OfHNytTQp"), .value = IOV("YJpYysFKpWgFfiFjCHoFjqWbSrzoFqtHsPIqqBNHvMVCUcVHA"), }, - { .name = IOV("jhJGBIrGDbTlxbFsXpj"), .value = IOV("UBjLywqfI"), }, - { .name = IOV("L"), .value = IOV("caDsAbhuxeZTaeSdYN"), }, - { .name = IOV("zzrIKhGZskAsIYoq"), .value = IOV("CqiDiMEDVNNkWzzYYKqgSBBDwoyBgKodvDuSmkoAEhfKfdlRADLUjOYoMy"), }, - { .name = IOV("jZjKiNgDQaoKOft"), .value = IOV("CLWCSmArFNKPrbeSLTfhkJOljOiqq"), }, - { .name = IOV("gXKGIvB"), .value = IOV("EvKfBgPYNPcQKeEpKuMzmdaV"), }, - { .name = IOV("zpl"), .value = IOV("DUCyKIaCBKthBGjXBkXHAVnSUYfpms"), }, - { .name = IOV("grOv"), .value = IOV("IOiwXIJIFmgj"), }, - { .name = IOV("OXpBONtAr"), .value = IOV("TUOMNDebEoOSuvVROXqbFZfdSgKTnbmWWZQXAMVpvpuJQyHwrEBjKgzIwcFzmVciIleA"), }, - { .name = IOV("odfXFmTCMet"), .value = IOV("JOiLdLSgbHYxuCCcvXhfLXDtcLHKOXpbpKRFSXDxvsuGPjSgKDIxyJwqIxtuXrpZHzZnwahxCNyIibB"), }, - { .name = IOV("DcpStpuhwLHYlE"), .value = IOV("UdsvlcFrlJvlFXhQCMyhZTpSJJbDjmsw"), }, - { .name = IOV("hUEiJba"), .value = IOV("WRvTUFpAyHwgiPIjlBPPFMSXfOxpGBZM"), }, - { .name = IOV("PgJjiAkkBaFUJpZ"), .value = IOV("yiqyvUURKGUtkyVgxTyTBLKKnIqQDyBqBFbibhzLhSxrETSEBJnEhTKVs"), }, - { .name = IOV("eXVsezbhyBzpcDaXaS"), .value = IOV("dBQlckBVKNTYlAjYUftLJFQvywQOgahEcBXaQjInbcArOUChrlWRUZihxczkXVbjbPNwEro"), }, - { .name = IOV("RbuCMsInvMQzRIkHn"), .value = IOV("MUdccXXvmLzJK"), }, - { .name = IOV("ZCW"), .value = IOV("bPdPfsnisXnkUrsOFDJFzcoMqkvtkfdZbkNv"), }, - { .name = IOV("cOWj"), .value = IOV("ROlbi"), }, - { .name = IOV("JVssKIJLB"), .value = IOV("RlvgOqWJURuSVQOgnxsrhnPPcshTemXRweHDNjlicaVl"), }, - { .name = IOV("YvjlOByk"), .value = IOV("EGQSzhIwBzBiSePlxgTOsZLlIUDjQxLIRfbFRnqQsWzNCXUGyrlCRAyAAmbWuajnLbwfvvIAToFNDDMu"), }, - { .name = IOV("qgvgs"), .value = IOV("njJYYJfmBsKnUQiRCOekmrZQREjgTAOCMKapMxOO"), }, - { .name = IOV("uNUPFRcCXIZR"), .value = IOV("JAoYFYYKOJcaOoToDLJHEEKReNIFlCGTUaXUPblDFZnmN"), }, - { .name = IOV("DrISEcgVJgxQwyI"), .value = IOV("mlE"), }, - { .name = IOV("lDqMNeiVqBrPthDnYYFx"), .value = IOV("PbnvfnkOWYiRBQAokEzWgwzrXHyLrDqROHflXBRYGqIAfShuCtEFgGfdjDyZuYzFCMFBDjZVULowYLLq"), }, - { .name = IOV("xlBxZbPHBeGEkA"), .value = IOV("NDESTFQvIUxfFMmJH"), }, - { .name = IOV("L"), .value = IOV("SUjruJGFIE"), }, - { .name = IOV("PeA"), .value = IOV("GK"), }, - { .name = IOV("GLa"), .value = IOV("jnMjHNqQETcxVrhcJPkWmzawFeosXLjGMZQSzONHwEdcyLDrZOzL"), }, - { .name = IOV("DQDdoRQV"), .value = IOV("eBjoxZRLsSJLbqEBOsnzCQGVASfaPhZmbMOvKchduvocFWbdQzeVVQNE"), }, - { .name = IOV("gXUzpQSydYiT"), .value = IOV("shCuSLqvxADirNZxvuZzGEcTUbokhI"), }, - { .name = IOV("nqTKiRRTvKIMKEfpmRhm"), .value = IOV("qyiBCVOFnHNRPVFSOyljWzXInyaQauqxXgyeaKsRLKknI"), }, - { .name = IOV("ZuYloXmgTkXlJsdhnrv"), .value = IOV("dVutwwoZQFTsfauGCOyZIyxBPJRHkNdPnnxyMJGJltN"), }, - { .name = IOV("WjBeGCJhONC"), .value = IOV("NIyhrsZUCBectHxY"), }, - { .name = IOV("SVDoHUilUeNDs"), .value = IOV("FhbwdemqNDvHALBGdPpaUXPoEMABPk"), }, - { .name = IOV("oQAzYUBBCvbyYI"), .value = IOV("STNtLIhSiKdH"), }, - { .name = IOV("UTMJuBvAIrDR"), .value = IOV("ffYotBQIJzLpWabGzMeUNlyyJaSFMjXEHvDFayEDlOaUWHbntgyPuKWcWtUzTDDhyNNtXB"), }, - { .name = IOV("mRWPeejqptLLaHu"), .value = IOV("yxpxvnPxGOEltQdAXsQJrVxhihEYSmPhFmJdnavMkCJtLxWyTcLAaULZSz"), }, - { .name = IOV("RtSXMjiApESmr"), .value = IOV("AYqDYaQFlJgznFRlCjwpmBxekUqeitkxfwOwJAYGSZhZReQKccfOuOfAtmaYcBNBDrhd"), }, - { .name = IOV("dfTgGEAFf"), .value = IOV("uRaTYIuliOVtQfYDoeChRHLGxjxLVwXlSBjNZaQDwJRvpkQ"), }, - { .name = IOV("btXxiydpTZCJXPpcEXzl"), .value = IOV("bwNOmyjtGkw"), }, - { .name = IOV("nREtZxJIVOPAUQa"), .value = IOV("HfskuVD"), }, - { .name = IOV("YExxFJzRfhGnNgMH"), .value = IOV("WUdXfgJqUtUieXfWKRBcjRtWyUgWowBREYGVPy"), }, - { .name = IOV("hChbXNPBGYlzX"), .value = IOV("sW"), }, - { .name = IOV("KRSaAtywbXLnWHw"), .value = IOV("jCFsgwufbYLZbfyIYwiKYevYRdCmAH"), }, - { .name = IOV("bqCjwotfga"), .value = IOV("DsFZB"), }, - { .name = IOV("WcM"), .value = IOV("SlBzgFqnbitkmnuYYMtcfmvvcVwLaHHbRpEsYXxWVZAmfqjvomTfSOCAOniyVslaER"), }, - { .name = IOV("nT"), .value = IOV("fEViIkzzyaeZGypjzSiFwnVMRXtzVLtdJJcnCFXzwAbutMpbqkmcQTvanUfTSdCfHkWhqRFIooVAzilk"), }, - { .name = IOV("BMtUkuLoyRVXaahZJvOy"), .value = IOV("jb"), }, - { .name = IOV("hXVehjBlBchMUPUeijx"), .value = IOV("seukNLwXpUMRBIYXTCWdxyVeGLkGUeakYZqBWXbftyzut"), }, - { .name = IOV("ooPVTKEOiTFoYeNH"), .value = IOV("fiKDbeWYkEXxmaMHYteLlIJRGXmHaqxVXaxJUtvUVrQibcvfMJeMbruMxRJBWURkTMvyv"), }, - { .name = IOV("gXSGQBjk"), .value = IOV("WbYhzLtCHepcaMAlQNbPmsiiUbtjKOTqvstjYDLjQpswyDXndkToyfFYDceiUMIxg"), }, - { .name = IOV("fKsZTvuKeUqWmLLs"), .value = IOV("Xml"), }, - { .name = IOV("gZflecyEjlZURAcEat"), .value = IOV("nWlboYhwNrfYpGJdUHPiFpAhTnNxxPdELf"), }, - { .name = IOV("RkUOOgPixjpzT"), .value = IOV("tJJbcFhHaZKZnsusZQbZyQWaWjWyQUAFKcZblAFaSyXjVri"), }, - { .name = IOV("lBRONmCKiSCm"), .value = IOV("rhVjKggYdEmefSRE"), }, - { .name = IOV("Uglx"), .value = IOV("VxRlWlVdTgEfJtWbIRvGuATa"), }, - { .name = IOV("hMGxszKWbI"), .value = IOV("ZoWIGtnxMNOSwnSMYvTAVPuuYdyUCPGumUyctuZwmswQXKXxfLpIQjhbV"), }, - { .name = IOV("zw"), .value = IOV("AWVgjNKHPradJWcVRYWchfullretmgVjLKTNpINNXxLYsgXlnyioJHMWSCZmzSQA"), }, - { .name = IOV("x"), .value = IOV("FdggVYubFZHEinvpPRicqOFyIOcdwovsCFZnFQZdlRyElgkVjxYjFQikkZtXCIAYXNEHiABbuBp"), }, - { .name = IOV("EzE"), .value = IOV("OgK"), }, - { .name = IOV("SoBrynAQZSYiv"), .value = IOV("QTGzZKqSvoTGLsGmkxYkMEIpIKbOlhXBYqStWSkxNGzCz"), }, - { .name = IOV("IzeqoutB"), .value = IOV("nlNORkMrvUFXEkHktcdmyNECXpmiRypvJVzs"), }, - { .name = IOV("PvsfCPw"), .value = IOV("aVtbrZMUIyMsKt"), }, - { .name = IOV("DMJQmFPudqIDeSbgb"), .value = IOV("BpEILPRqYagwvXiUWdhMdjFwieHGvahPEJOVdHbmwpQkeZHa"), }, - { .name = IOV("rjxStnVQkqnvMcKDCc"), .value = IOV("uTEPBjTGrSsUSmWbrYDdyPeegKBBcFIpKnTaDAdrvyqFCRNyM"), }, - { .name = IOV("Qz"), .value = IOV("LIUQgsIHToWpxNI"), }, - { .name = IOV("rBjsPcYZl"), .value = IOV("ZzPVeNbRuUNsEkQJSqKcPcjzPblHzmfdmMMYflnbVvbakyHNRVitjIbmvPzJiGulBttNTa"), }, - { .name = IOV("oTkJCWVJAy"), .value = IOV("ulApkeQEaYFTgXNCsOsiahZpAXgWGxckyuwkNHDCCYeKGnPfwwLugPnyeCGAswLUmJmEEQCpw"), }, - { .name = IOV("yKDnnjZwppSrj"), .value = IOV("DaCscXUjkYFhqiLFiBQgVxaYjCLUosNVFXnzMSbHxsJYMwRIZHIlYQNFTcKD"), }, - { .name = IOV("VnVhXhaXlMqZC"), .value = IOV("nGiYvCANwhmCzhqShkbvXscZyoIEykPOtXuaKyMCSUCqDtqqA"), }, - { .name = IOV("VFy"), .value = IOV("rloXslMSRAN"), }, - { .name = IOV("NsbdqStCpVpgrxJf"), .value = IOV("JXaJGCwcgGWIGejbhiJMNbjnByksIRAADVdJVm"), }, - { .name = IOV("xnjqmscegNQoLq"), .value = IOV("UXjHmqiiaCNhebCHbUbIGnHmZfznoXGpiXggNtfvXybsyMJesYaiBYkuXt"), }, - { .name = IOV("cmcVnicrS"), .value = IOV("qaliJHie"), }, - { .name = IOV("ovUPMuAYSWtdtW"), .value = IOV("gQcnncwdRWxEQLMxggRQriYIHgCGpRycAD"), }, - { .name = IOV("OKQdVqZqByRNL"), .value = IOV("ZEVpGYxchTWIHlKqGPrNEdKxBbbqLSxrKarvcSYeQuzeOoROpmjooEVPHuxdmiPs"), }, - { .name = IOV("EAsihC"), .value = IOV("ZDgdXiPqLPJFQBZvZHiGDoeVbEoNJXGdiDhcUoWO"), }, - { .name = IOV("xmMwRykesYBGDBSnmp"), .value = IOV("BLqxOlQsaRqfhNSyspvMKskFkdmKub"), }, - { .name = IOV("oZfHvYxD"), .value = IOV("LJsvwehUQknkOlQvJOnVGhCbTRcMGYOIS"), }, - { .name = IOV("GtYiApuncrQdRlfmBwHY"), .value = IOV("WNaXDLmWECLWmiwHMabswQfbrjTliCwJmVXrjiWLDy"), }, - { .name = IOV("VRzbTujFz"), .value = IOV("gPYtuurannICwy"), }, - { .name = IOV("WFycsoOcMvVIXJi"), .value = IOV("pIurKmdywSIU"), }, - { .name = IOV("ssGxJhiWE"), .value = IOV("ioHPXlAlAVoTgQpMsIEZgAgCpjERfSjWeRfjvfYiQxrtilGDJWufEcGnPGgMjFTdBUu"), }, - { .name = IOV("IuHuoNwWAxI"), .value = IOV("NoovpUuLpnoAlQFgkVFrlDUDkhlAk"), }, - { .name = IOV("lgfnyz"), .value = IOV("YBTxtPFbNdoxFzAeOBFLxjNmfvALwgUEvcCUkdCTfIHPrqOztjmHBlpSbtncKIViTG"), }, - { .name = IOV("RLRqlzONUBfOdwYYb"), .value = IOV("eEXqrVNw"), }, - { .name = IOV("GJUMOUtXAPMrzHAy"), .value = IOV("dFnjbmgsYMytqse"), }, - { .name = IOV("gKaGd"), .value = IOV("LvYxrxCmZKLDbxOGtMQYKxnuiobDPwunVRPGadCFEJytbCgkhMLDTXllFyTO"), }, - { .name = IOV("tTotjqEjcDg"), .value = IOV("CWFvKwmdgBknyGCJFAWVS"), }, - { .name = IOV("fLLlTXaC"), .value = IOV("btZrMHgKPzTrWHyaDwWXaNRKbNHLEJPhoMtcOWx"), }, - { .name = IOV("T"), .value = IOV("ZespsSqkpAlZzCxVdo"), }, - { .name = IOV("PIOUiuebtJbyjNbcLi"), .value = IOV("xTEqfvvOtMeFYDgBiGBEIFFgjTYrpICUsBGgpMtZxzXpCRvKRUtKzOEtzzePhVYvZ"), }, - { .name = IOV("XCxEztWcjVHF"), .value = IOV("VJkkuovbbfuTqkpEVNiKepmVWBdPnaKGV"), }, - { .name = IOV("RSNoZcjBLpLlBtAbYray"), .value = IOV("pWXePpyIiFOcBWuCKQBeQqTTklJaLUmpNmwnvSlFy"), }, - { .name = IOV("KLz"), .value = IOV("OWZdovZVQRbGITXHzCDVlbOmnYeSKmphiliZBhViiiDKjEmeDtagGetLYRFoscCWNvTp"), }, - { .name = IOV("jmtnP"), .value = IOV("WhgMwaLqZnITIyKATrPzLrtovPPYRruOPkISDSAlUkNHbPyPWg"), }, - { .name = IOV("kvYaFfoAlVIw"), .value = IOV("GYqbmxHCWUBuMVgYgbbZPOKHthXgFSXHyUiWUQKHUQKDuxsGqvVsnHbaIiEgOuhHuNZUPMAImX"), }, - { .name = IOV("NBjuUv"), .value = IOV("CORgUSlpkenupDHaiPZHvNOcQRSloGwbRBArgtcNsqKmmrpwtbnjpghFFIIatnYHheGNelULbt"), }, - { .name = IOV("bOPPsdfyxXeSZ"), .value = IOV("ZqWxA"), }, - { .name = IOV("NHBuZmFuOW"), .value = IOV("OQNWVZzfNihnGfCUgORSRRhZMZJNWajSuPtQKSDlagXCUvRaaUnIvhPechWAUbFhpVO"), }, - { .name = IOV("L"), .value = IOV("mFnYbyUCFOKfJgPNYjhBqoIkwHaoSlJzJzqjNfVhMnvkkYdGTukTyefOupAMWgsCZ"), }, - { .name = IOV("cNAXlErqDEuHMUbbi"), .value = IOV("dWIGCidLfAUiMXomXMIYfzsrdPishsbGiwfGhhKW"), }, - { .name = IOV("EHnYvnfhyRtMYKFHsUf"), .value = IOV("UVOcMwOvtPodtRmlUHuFfdSTslTzoKeIyhtOwLGcrnWqXAtLNHGpdapiMJWrQiDb"), }, - { .name = IOV("zbJoDDAQvwis"), .value = IOV("bOtRb"), }, - { .name = IOV("dFpYLFDTMTpFRoHvtlF"), .value = IOV("baJBBDpveohFVo"), }, - { .name = IOV("CKNjCUWPmefC"), .value = IOV("NGRRKiHlDGZYfvPEEQTUSARWfjRXUmmoxQPYXarkmoHkaZZtKRRkMXiZZuf"), }, - { .name = IOV("MTc"), .value = IOV("zsarmBFNEEpwELaghOyPYyV"), }, - { .name = IOV("boVVRQnUnDAxoAGJrV"), .value = IOV("DaoTiwWUQEOnSctgqPhwACEfFLTkOOxAmtSXWCpTllUYPn"), }, - { .name = IOV("CfhmqlIHFffDEKLN"), .value = IOV("EvfKiYKSjyUnnIzDCbdWdMBWiPfiSIFFxNNQnqrckZjfddYEkxROOfpuMnolrYoeejCxXgxaDNCI"), }, - { .name = IOV("BfufCFeg"), .value = IOV("LEeQgKbxLneEMKwiAtHfEASArPwrRnfIFdTfUyWNqwjRbqsc"), }, - { .name = IOV("DNbFIkcB"), .value = IOV("JmQutBzgbcgDLeereteMCtpeFTsjtTJhtNVYQckEWNeFLhKIcKygHUwicXsDLIeWCSrWKhFEvUdmVr"), }, - { .name = IOV("NHbQ"), .value = IOV("lEDJMFZGssBquMrJGlnGJRsIhlbKPvVVaDstjAlrttldElkM"), }, - { .name = IOV("nlVBywApAMt"), .value = IOV("BUiGQuMgdXVPHGQcZYcMdadRcPZNPdQOErUkXjN"), }, - { .name = IOV("lfZCThEjPIaFkTcKyPa"), .value = IOV("gRHZICyPIU"), }, - { .name = IOV("CtaTMWPmPtdDHGyohRez"), .value = IOV("hCVdSHEAnQWEUrZgjRJk"), }, - { .name = IOV("HmznOnO"), .value = IOV("aawcsTGmbhpQJCmSjokVNYGmvcAPmYNkfNliehjcdgTETsP"), }, - { .name = IOV("DpgcObblENLYBce"), .value = IOV("ySwvuwCrDOUQnxxPzqmYjfqDXDkSnvGYFxyFvQbKDauTVf"), }, - { .name = IOV("XYhDGwSoZFoz"), .value = IOV("CmuBoRLrmNSGJZIYMxiLdafSKwNRRUKRaEYIdTBQTDkPQXbWLHKXOUKHjt"), }, - { .name = IOV("tzLHceC"), .value = IOV("phQLqkVygFsrKZeIzoOxthF"), }, - { .name = IOV("gApGwWUPFSKxhFuJeZu"), .value = IOV("TXfyEagcprTHCWtvnTaTdegwjcmfrbLRYNSuDgiLjSGKCHXnEntfyIxOEjyjsIXgMeExZXkgz"), }, - { .name = IOV("DksMGmuFhm"), .value = IOV("jGJs"), }, - { .name = IOV("IFXNcelVDu"), .value = IOV("DIDgdmGTFVcuopOOcpUfxSYUrYkoxSJqsnOESiRAXComXyWBitvpglULVHXEMJVbdIJNFAMYLCDcU"), }, - { .name = IOV("By"), .value = IOV("lAkwKpmlCGjJqbpyqjZRyEGfPaUYDqODmvlztiMthTFTYHd"), }, - { .name = IOV("HcODNSscVgXz"), .value = IOV("ZhdhKqqIigQCwtscUhEGucwcnMpeqlAaTdUVlawyGgxTdoHoOLuNizAKCJdAkzSJXVthKh"), }, - { .name = IOV("XsqIQIOqbWKtjlgaCngM"), .value = IOV("ipSZQZliizIaDfPMABYpFnKvDrOKNasWHXPmFuvOIbkFojhaD"), }, - { .name = IOV("hJaBChuRWMuI"), .value = IOV("SHkBdAnVsYVITalNQ"), }, - { .name = IOV("A"), .value = IOV("HwDc"), }, - { .name = IOV("gpvLHCIYuuzvg"), .value = IOV("hRJxkZliKfOBkpcPHlaJnEpXgRakxAeAHdkBNLBnTpwBI"), }, - { .name = IOV("g"), .value = IOV("jadwvAHviSccyhyFeaeamPVeCVPhmvQQZSnjvRCsJfYhshzsMlqMxqvnB"), }, - { .name = IOV("lLphchPEXmEbvtvLf"), .value = IOV("igewkkXvKpjfForTHthWEcYkuSP"), }, - { .name = IOV("adlDoGLEjMhcvbXPQMBz"), .value = IOV("ppBHzCKeyruJYZwiHFNbJWQoXBvKDYXHaJQwxTItBIGNdBOTTPyAu"), }, - { .name = IOV("AMsqLBl"), .value = IOV("jassyEUeGh"), }, - { .name = IOV("xWnpJtDAcgVlxwztM"), .value = IOV("xBRuOZgPPUNIajAsRvmFJfyfKXTxyhVxMRitAzfrTAYorRgTHMnGIbKWKkQvirGClBzuCXIND"), }, - { .name = IOV("BSyrBFzZqFagZDKprL"), .value = IOV("lQIpFuoMGjqHXVXDxTtsqwHYldAxXhQUjlfARjaqZdBdjsOlIOdUYUcayBAjxyFLZjQNjUMveJIuVTR"), }, - { .name = IOV("f"), .value = IOV("AyCBDEBtJPZNdPUqbxokZtjGnaQnKgVvcWeoraxkOhwSh"), }, - { .name = IOV("KWKiXvZBN"), .value = IOV("uNbWHZFTpjSINOUoWlivxkGtZEkIRsHInCkWTMipvXUEuJycuAcdHzozfltyQJOQiishsCvygNjit"), }, - { .name = IOV("KmWhnaskLLa"), .value = IOV("CqoSEkaYFegLUMeghGxxqsAdSL"), }, - { .name = IOV("rlAJmvYLmIq"), .value = IOV("eNSjWlOaaPlTJRroLKzIsLjkEpTQsLJumMMJiu"), }, - { .name = IOV("EhfAUZYiW"), .value = IOV("PMiDyzQFjOfRvZrlQ"), }, - { .name = IOV("R"), .value = IOV("ZbUbskZjzCRkTduvAmiBcqGnZqiYOrBDlFLTbrkAYOTnMGwuXtMUxzEaGoCjRhxhaItkpWFMPv"), }, - { .name = IOV("JJbqgdRmXIFs"), .value = IOV("wpRLzbgg"), }, - { .name = IOV("hAgoafGtvpfgmdnpZ"), .value = IOV("hhSmyhHQqhZzLJBGuqpiBlbYWbjVfRgSpRTSyoCBrHrkmGgDSMNLdaaVFX"), }, - { .name = IOV("FEknz"), .value = IOV("ycRcsoTLFYHMFqBzoijsdfuYIVejjUEOHZmlACsPKXdtWlZmcYciMQk"), }, - { .name = IOV("jezEQGujUOAuN"), .value = IOV("EGBDJWQigfnAd"), }, - { .name = IOV("RLpJJGqWPASZKlnsATa"), .value = IOV("LQQaJHVrtlGxrorwVcGArqjUAahxTZFaCdatzHlGVKkxyUTkeIi"), }, - { .name = IOV("yaBfSbFp"), .value = IOV("LQjFyi"), }, - { .name = IOV("W"), .value = IOV("ZODVgxBTvNylVVHkTYacUmVfqsfwCqFTttYnkuZOWWHLPNrnsLaCbrknkgtKidUjiXMSMGibJnh"), }, - { .name = IOV("JCqCrWpv"), .value = IOV("r"), }, - { .name = IOV("TPRIHueaa"), .value = IOV("fjGyFuwkxZVgLLUSEQjprJOxfboBEdjYknIRcauUczKHkZptlLwmINNIvxguZhP"), }, - { .name = IOV("oqdHGcIJZrFmvAvbxa"), .value = IOV("BDSNcJogWHKMbiSETrfjNwSiIbWfwHNHZzlBTRPtjXOIINvpJnTeNStciLUVlBANgtiO"), }, - { .name = IOV("UIIp"), .value = IOV("AeQtiyGUeZTabmNeyXBOsXKvtxxdgdyyFKWwGEbpaJokDwZIsZNiuCGfClNkYqChCRPfvaEpeGNPtSuV"), }, - { .name = IOV("qMhHoDkWkEE"), .value = IOV("hMmWlquPjpMCjBMQKHGnxYYMfkdV"), }, - { .name = IOV("hLxe"), .value = IOV("gxUGDslIZCwjXTydsrzLrumkgHagGivSTdsUQEeccLZSEDItuoTRvZnJDIDPuswTwS"), }, - { .name = IOV("iymenBFKqOyJsNSuw"), .value = IOV("ZyFhsafQEfDEVYSBVPlGOFojaMMDsUYpuxCqMwzsmWmYevZiwoDvgcAH"), }, - { .name = IOV("vcmfLm"), .value = IOV("oFwyRLQbKakcKVylvRzNFYxeapwkiHLKcTrhLNWQqDePfscEPVQnmhCLuqAhAdObwYZaEyOsY"), }, - { .name = IOV("FiqhYqHLIFb"), .value = IOV("TNlftPHDqrpBqKljNDPKiTIwrnbAhJzhNZwWDBmmQfWSIpLOQDtmyKLtYZCMULKGrNsiZ"), }, - { .name = IOV("rufwJlPCoHzf"), .value = IOV("DsmRKLmDbvMBvImnbdcerPWtxWkMeHHpGDwjkoDZbegPxEhUMUPCgJVDEDGHQcEaFugCglsucmLts"), }, - { .name = IOV("iHXKU"), .value = IOV("dmEtoCVDKMCXYPFwZHqhBOJoyqdVFINDcbINsPwjzpFdbKGKnkjMUuJ"), }, - { .name = IOV("WjOwJ"), .value = IOV("VnvrvaGhnNhEvW"), }, - { .name = IOV("OEzYKUexSUzrN"), .value = IOV("jDWxzXDFtldy"), }, - { .name = IOV("O"), .value = IOV("HmIGukwAaWpzfyibQrPuimPqXhyTghHTRTyiMnGWPHHsgUUZEAoLcXqoVOUdaXfz"), }, - { .name = IOV("fMNz"), .value = IOV("VerLZXQMhiGivvSsSbitAwoDSpwJEuhhvKiECFyoTXzumdjUDGtnrfQrgNhgXDWlANwIPflCikGuK"), }, - { .name = IOV("ShSMVtruRWuKJoowQiMk"), .value = IOV("oivqyEcHUgQPbzEFcDyLBAqFHzxG"), }, - { .name = IOV("lkRU"), .value = IOV("NLXwodYUbtluIYVrtkjLEdomgYPVfEE"), }, - { .name = IOV("zgRBpIlNdocSkQah"), .value = IOV("BjKyoezLMvdvnQjJvzDgaUeLHTLsxYaseEtJnIfsBTZMcEKZElUBYtpSIRl"), }, - { .name = IOV("pOBhUkIB"), .value = IOV("DocARNavRkLcwZHdJJFFntqxUxgQMY"), }, - { .name = IOV("VbcQIekodGk"), .value = IOV("AyzJSrCZhjuYMiwLWiNmHXjhJOTkhraUhnGMtfdAHaxrjMAQBXKIroOPCwpFpYomqOohuoZJNA"), }, - { .name = IOV("rhXNtxkwmnWGgVQN"), .value = IOV("BAwPDsUtWjwvsBgLFdnobAYQFNUCxgFJPq"), }, - { .name = IOV("qmnOnE"), .value = IOV("RiuqbHZyPmYMlHZsLkGDcpswJtfaVTf"), }, - { .name = IOV("LkGWEouZU"), .value = IOV("ni"), }, - { .name = IOV("XQidQMCrZlpiphKBwAwT"), .value = IOV("PpxgOyAqobAUCTfbSbuSBgWMxETCsryJrIvCCfdBaWEhoBptcRfkDmqtirlmHWgQazcNXAkItrkKPu"), }, - { .name = IOV("KqDHDevxvc"), .value = IOV("SxrcAgJKWyapwPdhdodPYzIsTEVatvKP"), }, - { .name = IOV("Ze"), .value = IOV("LEjGdLScKVzRvWpQFFPfWhEZKUsHJBdyOuqcQJfkb"), }, - { .name = IOV("IHrtYZAtLCH"), .value = IOV("HYuRMCIUSOQsyMONqhCqQool"), }, - { .name = IOV("whqSFptFfXQVgSDthEbX"), .value = IOV("KjjEIC"), }, - { .name = IOV("RImEOU"), .value = IOV("CgzPoBpesIBubIOopfqHhaDALGXrgenbasLiKbzYDR"), }, - { .name = IOV("AXUamJhwB"), .value = IOV("DcHXDqJlwdWTdMvpqtKAJp"), }, - { .name = IOV("VEZ"), .value = IOV("OofTbWyMcW"), }, - { .name = IOV("AT"), .value = IOV("aBws"), }, - { .name = IOV("cglVMuXhrDCTZMwcUHhQ"), .value = IOV("NIRLnUUDllfIqTWyRjbqjcmBCDhNwwQgPFqcZaTbGwvwrnyQm"), }, - { .name = IOV("AxJL"), .value = IOV("pusPYfXINO"), }, - { .name = IOV("lLuNtTzGLIsfdMERr"), .value = IOV("HclsEDVxbFlucIwqepegJrADijKyABHsRimykmHPcM"), }, - { .name = IOV("oOxbPqkVUnmlaKdRJrGu"), .value = IOV("wNrNEfjHlRMGWCmBZHfhapvKeqsowCWjLJEgGFnvRkZbxQrdZXuh"), }, - { .name = IOV("LTxWrSMhoasuIuqr"), .value = IOV("wh"), }, - { .name = IOV("GylVfROrRKyNAcnkVC"), .value = IOV("BKUQHBBowtFRiwLmxPCocTiptjPrJJvlzITgNCSfwejWBLhxO"), }, - { .name = IOV("VTrtGXrmqpegStCMC"), .value = IOV("NCbjtMxpeNFJGsuGavnReeEzBiIIYpsiyhMdsF"), }, - { .name = IOV("xHUIBiTkMdIfjZfg"), .value = IOV("xcALtFptquvzJULDTkxNbDHFyA"), }, - { .name = IOV("mvqPJewnfppFRVa"), .value = IOV("eGmrzxghAFrcvQnNeNwYvQdeDDKvFubMQYXgJmnxNjDpSpNEkMGiVIewCkgaDmZn"), }, - { .name = IOV("MglAi"), .value = IOV("FYIdknOjcXtSHrhDt"), }, - { .name = IOV("qHLbwAqrsYGLWzgbNB"), .value = IOV("XrJbZZTyKdnpSObPRHKqAuDQPTenRBJQBXYWtyTHmBdIJWvnrtDAPKlpDuYMYpXbIDotTeaireaEOJS"), }, - { .name = IOV("BLLmHztrvYGxg"), .value = IOV("ux"), }, - { .name = IOV("xDyTJk"), .value = IOV("YIgz"), }, - { .name = IOV("quGp"), .value = IOV("JYPslniMvvNSZzlwQIMkVwMljNdqmYaezDhSBcidnixDeRsgVboYAHvfFuFaaAUgOcf"), }, - { .name = IOV("IhVtUuGysduXsgkgEkm"), .value = IOV("mHFpSJHBLvaRZwGOJXbBfulNsHnWqSqWeTFbBe"), }, - { .name = IOV("osAvSTj"), .value = IOV("fYWtyPSGNUnYIzouzbcRleFLOpKCdWjbvuGgUzKSBVEtkKhnFD"), }, - { .name = IOV("cMEbsdYKwzXalKt"), .value = IOV("rAzlCQgRLVwXwsxEgMNVhsxiAENDRiqFmFsEfMBHd"), }, - { .name = IOV("kaevxaCoJ"), .value = IOV("DeMCyaBVMRUQNE"), }, - { .name = IOV("YfZDzDexsXHSOT"), .value = IOV("tdsCaKUoeCmaTygSCcgrQvNm"), }, - { .name = IOV("biEcknRGp"), .value = IOV("KcJoqeuBszKbdVjocXKIdYVLioMWFtRgNdrLsRW"), }, - { .name = IOV("OIcxCPliqFBVmJni"), .value = IOV("faHszcmeJIQMBDpwbLEOhrUNMnJIOcHUgfYILIrkTBIdLVurnxc"), }, - { .name = IOV("RLuUDVB"), .value = IOV("lDkILBVTDQpykogrZfcIanAsfOygYkYEuyPAVIbGQjrNUKrFLREzub"), }, - { .name = IOV("utvjsmeZgbhNT"), .value = IOV("cgzCqsWpZHreJYzpmiILHlhWWsuouaGrbNkAfqhjZywfdZWPeDKd"), }, - { .name = IOV("OxirYnrNqVZcsmRcipv"), .value = IOV("QbXymwWloEaXFBFZxKYAMdzhzPznapYrFLxqaVzufxSJwEbSFmgJTIBMgstpxASRLSzdOwjIj"), }, - { .name = IOV("C"), .value = IOV("i"), }, - { .name = IOV("YBcXojetVxt"), .value = IOV("VU"), }, - { .name = IOV("FKTcceQcaLldO"), .value = IOV("oVHt"), }, - { .name = IOV("hucAvAVZ"), .value = IOV("ClmllYodPQDsENBlkhyKUMTzdIimVNaszhrcW"), }, - { .name = IOV("duDuIGSgtUmB"), .value = IOV("gvchmyhhhCFPgPDWTZmztUfXZesaFcKtHAIwjWSxgxlfkFYKs"), }, - { .name = IOV("VdsUPmngp"), .value = IOV("lyHFnHFkuvjQpTQmRPYUvJoxxiyFzsuJoeHrJGiUSWghTnBerJTevtPVrHmEwBsnTaoyMJXokU"), }, - { .name = IOV("qDPwrmmEcvAchIrqtw"), .value = IOV("fPqsGSFXmYbANdsRkTMYGQSzuAPMFmsiKpjXx"), }, - { .name = IOV("PHEHfUWscGr"), .value = IOV("njgrv"), }, - { .name = IOV("SmSTnUQJOnKogBDk"), .value = IOV("dxqOrueoeFdia"), }, - { .name = IOV("ZPVYolD"), .value = IOV("qtmtVaumbIFDnICNfHhpUmEMvwwL"), }, - { .name = IOV("vxiVe"), .value = IOV("aoMCkutMsGlZkZzshoJAQBsRbIPVyehKXOShkbmhbHDrBlOWjFwnBJdFiaigl"), }, - { .name = IOV("oInxAJHkveeNZb"), .value = IOV("MDBFkXPBatJWFdVfouYMcYKEqcLaYMHhpVNQUdCsPZlCAdcTvbpVWjpjPAsMBBneSMvHvWyI"), }, - { .name = IOV("ILRKujEiPrBzuMPKg"), .value = IOV("pOaWFtGUKXUPTbuXhmIiRWrbuTrBmDcRpldnLKIEPKFMLQBTWDKYgOCJJlhWZsspF"), }, - { .name = IOV("MJRjpHx"), .value = IOV("WPmnUC"), }, - { .name = IOV("kgDrWhDxtBfntJR"), .value = IOV("jPAPoyDuofmRePbNvoDPpukXtWxgTGsbGUeBOGqKpLeEMeihWTYgt"), }, - { .name = IOV("FIOhquMWfUyFwhdgz"), .value = IOV("tZhHcXwLU"), }, - { .name = IOV("Z"), .value = IOV("bfPHVZaiyQZGHyWvCtQpZOOWdjcRdlUeTSCIcVNHBCSlnbqQKNWoeWBbrhm"), }, - { .name = IOV("keCvTIYdOhw"), .value = IOV("VpdtVKZN"), }, - { .name = IOV("oNZtziBfxWoAtI"), .value = IOV("wiMvawBkqRdPJHfwHbxEtzPyADccMCcFKaUxnzNLokuorGQAbrvTttzxEJNzCBAXrwz"), }, - { .name = IOV("KVSRcgfycJBMHbI"), .value = IOV("zlJxsNHPpVRXzFaTlJqP"), }, - { .name = IOV("UQ"), .value = IOV("gQdCZwPUTFkLIcUSAEIGLSkNF"), }, - { .name = IOV("QkggKGgZFQbqquc"), .value = IOV("mgjnbwCEIQDxCltklonnTCjgZCrnbLYmRDgCau"), }, - { .name = IOV("pPbdccZZQAt"), .value = IOV("NNhEGtDVMQhKPhmztKFpEnWYeeoxrsBQZJbECseSqOquBynDEqDZtfbJwMgK"), }, - { .name = IOV("PpaAaAtXIXuQgLiqvTv"), .value = IOV("iaopEFmrqbumfWurBWvytQHrxtROeftUrYeQpOZEinSpCogbbkGxrcmKzwLGMBkXMRwpQoZPF"), }, - { .name = IOV("DvytcABMgaauDSn"), .value = IOV("QDhaybjWwzpXrgzslgiXUhZyWRDwKOovCYzxVx"), }, - { .name = IOV("vFDqKTENItlu"), .value = IOV("WSdmWjFzWjjlXmlm"), }, - { .name = IOV("shqcDO"), .value = IOV("FLDohERfrhYj"), }, - { .name = IOV("jV"), .value = IOV("WOxbuNgXNkXfmVt"), }, - { .name = IOV("PfrppapEbyEkPEzoa"), .value = IOV("qMqCZGgUBKbWHUSpstUtzvYTJoBUNmOKgnXmnVKrNApqxedezSVYRrUUMstLCdDwqpnN"), }, - { .name = IOV("DLMksfFL"), .value = IOV("mHPeekAvsYxLYyyhcwkcHwoNZmoEDjFPRiQSvHpNuTJWXOAFAKdoiMhBst"), }, - { .name = IOV("EcHbmdUdyFvbQVUPba"), .value = IOV("gdAeUnmwElChpvfjCajqQhwgeH"), }, - { .name = IOV("mcsDCCYoxgTyrjtCey"), .value = IOV("ycRRYzYtXWUzisWdddlcgJlbGdPjMZoLNOtYQIEhVVAXIygDzszD"), }, - { .name = IOV("wPUPziSWcMKGuyaMpYP"), .value = IOV("JgBPIapzIwUCPapWKsXgCXbiQjwqPWCfFwMEaEMDpZMtWI"), }, - { .name = IOV("uKyayPiut"), .value = IOV("UXiXPzmZkHdMAOcJnFRRV"), }, - { .name = IOV("qrJKNeYTskeSiN"), .value = IOV("hFFtIJgEAbSTfWPipvVfpLPohYUYDOxkheyWUSYzRztWZBiQsbWGdntzVZRVpPiKW"), }, - { .name = IOV("ZPFgcnYCGAqlsYs"), .value = IOV("EDREXajpdgNhJseTiUEuHKDEjFILTyGmedobPqLMxGfVigDnCDEWhCGENiGlzoMlPGojxVQaDSjcEK"), }, - { .name = IOV("THEpyKYiRPhMytlfO"), .value = IOV("jiDiDVBQetGZqSgyagXRdKXeXiyggpNhLoEyBReEXfTZiZmKkFcovdFEZpMdRpFBYLWOWXhKGvBwQM"), }, - { .name = IOV("ZHHrfthGnCqeYLB"), .value = IOV("HIsjotPNSmZKviqJPWTtlQDxREZNEwrCLVOcHKSmtjBmpnqhnmqQqeexQJFimO"), }, - { .name = IOV("jlRGfIIAVpq"), .value = IOV("IjXWyxwaoYUDtZfbYyCExjuVtuicbMaivwjrZJqlEDTGUlaGobEpvnlThZgQCDFMNCiN"), }, - { .name = IOV("SfYmQ"), .value = IOV("DmuDofuqCFciKPqdvqikbdh"), }, - { .name = IOV("dlsGgB"), .value = IOV("FofRhIevgiWWGPcfmkoHWuJpGtBSvlpLzQHNhhnxKMqSpeNPwGGm"), }, - { .name = IOV("gULkEcqAEqSsnyCgs"), .value = IOV("gxQaceHBjBUobXBbzwTEwgVnZlOyJhjUuSTFVijJVBOPXgSme"), }, - { .name = IOV("El"), .value = IOV("pnpOVIyxHxXg"), }, - { .name = IOV("xMDcFrtMoTarMyjlsYUk"), .value = IOV("VRLUTwhZXnPcTPQhCmmlEbSlOrZgyXnNnfvCjDLmHmNGFeomBVNrEjreMiJLNz"), }, - { .name = IOV("sTlHtfsyzjlsf"), .value = IOV("szrVbAEMEnUlNAYaVQEQngYglTAjjYUgfathTAjIwrxVCEJgAWJ"), }, - { .name = IOV("eQrQ"), .value = IOV("tjtyKIfHBTWAgjiaRiHHzCrX"), }, - { .name = IOV("IhfVkWxmN"), .value = IOV("LGTTcuhNiKpZHlflyECaUMwVVubDteYlaXLettnPCQDt"), }, - { .name = IOV("qA"), .value = IOV("tnSwYLwZDacSYvjzhDPeLOFhBmMgJSFiGIalTtvdwZzoZQYKIBvyxXrxA"), }, - { .name = IOV("rpaxOAExLc"), .value = IOV("pcXPJGFpmRxYPrVsckQvTLdITwzQIDa"), }, - { .name = IOV("LWeIbl"), .value = IOV("yKIXqKqZUkyrpHvpFLPjnRYVXvwxkZHOQYSEUSjbyVeCrlMUOaydAeoEjiyjtItet"), }, - { .name = IOV("wPCCZPVaKO"), .value = IOV("xYciBlNcvejJmtZiUkGKxxoZJfDhoNejqdCl"), }, - { .name = IOV("cEiJXBztndpKlLof"), .value = IOV("OnqMaQRcTvxyADhSKxyFCyllYkTjBlWpRiBb"), }, - { .name = IOV("bQnhgwaB"), .value = IOV("kUssjhOqPFrEdryJTViQezCKYlZcbnogNgroPOx"), }, - { .name = IOV("PdAxjDDRyrTnzwqWc"), .value = IOV("kACdDZdmsOZoNNmZpBKTsOeGKnFLjfgbQcSHLFObyecZKfPObCaFtcM"), }, - { .name = IOV("cPrAkQNVeAOyAhfKdU"), .value = IOV("KeULukxOtBdvdlkwJUNPoWKLujYPAYKhGDaHeBXWcbHQCOsVIfDftVCtBLxVYHuFcktFmK"), }, - { .name = IOV("XvNZHmxpSCMkIjOBew"), .value = IOV("FSnAfXghCFKyNWaxBmOqDlZMqujw"), }, - { .name = IOV("hpdpa"), .value = IOV("pWJkPvNEbMVxccNsmyNsShFSkvFkuKSKHLpucodJuRIPVhbTCsvFpwA"), }, - { .name = IOV("cViqRVizgX"), .value = IOV("NehOeZKKGtgSWfrZupPWGujiaePsifHbylCmvkyyFRqgC"), }, - { .name = IOV("KvKXJUPTM"), .value = IOV("jQsoBBivRpiAxp"), }, - { .name = IOV("mAEp"), .value = IOV("mWKal"), }, - { .name = IOV("DodCiYXLDtv"), .value = IOV("tCnepqgftHXNLGydzLKYmXRSTtnxmCVAOoZukRekmiMCRW"), }, - { .name = IOV("lYcXyutQtovmKzmCHyQ"), .value = IOV("XWSERRCrLCscFosxpzUzFspFLvmOHppCiqJWpYeVsfBvJdRwwwjJjRmkLMBMgGADGvylfgxhNz"), }, - { .name = IOV("RGcJDpFOxHeElE"), .value = IOV("AlYRlZvcoIEaUaOroYMQkNAdgtzAmYKmelGqKa"), }, - { .name = IOV("GnpjgP"), .value = IOV("HSBXsQshZOSLNvEToeqvsTMOxYIaRqkWdEwkkvyhFOKyfOUuoSHSafVDDERtz"), }, - { .name = IOV("dZeJsduGofM"), .value = IOV("DYJgqcRLjlAaz"), }, - { .name = IOV("EuwkpPRB"), .value = IOV("DjHRJiwGfJyLteMMJXrxNsLejdoCzeUBtrWHNYvWfzKiMifxhZXDVrqNiLYXZKRvyVMlLGzOqCxe"), }, - { .name = IOV("QqEAUv"), .value = IOV("AIsWzpSLzkgEJTsyLHgtLiEiQlEPsb"), }, - { .name = IOV("LXWvkHwHLsde"), .value = IOV("bCYpTPPJoYdQRwXiPqCZxdrCGzvlUiNVRVaLFtZbkhlpDZMerzXcvIXvS"), }, - { .name = IOV("wPaYzQmoeJwl"), .value = IOV("EALiGeWtFTSAvjKxYAKgoQqoObHCMslwbqvFxBNVekXERJxzdNcuIJD"), }, - { .name = IOV("QoOJrvgdCIwHvwPDN"), .value = IOV("pXQLyCgMxPnpRtgApMJaCcnqfaWgltdrpsWVouDcMSGiytYmrCyktFJDj"), }, - { .name = IOV("tQnoi"), .value = IOV("YawGSOvPrZlQyP"), }, - { .name = IOV("arrv"), .value = IOV("mRQJudJRAlnWOIxvKEgHKfPZWhNFNVJEDelhFav"), }, - { .name = IOV("ksliVKtfqMwbfDRmA"), .value = IOV("rqPElkneJiRcQmjEuPvPGaFYAOVsYHswmarTbXdfUxmBNpiQVtbHYd"), }, - { .name = IOV("zpncZQJdXaVDcVpi"), .value = IOV("JWIxqJLgGmDydNppSObE"), }, - { .name = IOV("jZ"), .value = IOV("UMiFOgbvVDmLjCaFevTwnkoEbVsTL"), }, - { .name = IOV("sSQuimET"), .value = IOV("LJeERl"), }, - { .name = IOV("HzxRPjYQxFfvyMyKN"), .value = IOV("AcRFZVsksacBMyRpM"), }, - { .name = IOV("YmWULlNNSXLctOnNVOpC"), .value = IOV("iYrISKRgmwTfmQxzYRHryGUsSllVIWZEOmIYiHkEPwdvwIw"), }, - { .name = IOV("uNYNClyxjnjAxnsrdZF"), .value = IOV("G"), }, - { .name = IOV("FqmdYgkeMOJlDkF"), .value = IOV("blVbWytVTalNSWCoAvILaVePymIyQLodyAH"), }, - { .name = IOV("KgcXJ"), .value = IOV("tClhpLzQiZGpefDhhfufjuKGDvOgPjscDWIGZLpGFzAlXpt"), }, - { .name = IOV("mTnRStZsjEOtgCf"), .value = IOV("apvLPMMEHhzdcqvOVYwiBuAmmlbiqmZQbtCOekEbrQfyTliwYiXeIEFVnQdfoNMQTX"), }, - { .name = IOV("b"), .value = IOV("DMogRuBmojJgmMxpNskhTRXSpZeFviPdkCvLRLFEsUK"), }, - { .name = IOV("FPVapvxpAJB"), .value = IOV("LCVnDA"), }, - { .name = IOV("ricMCKAGZfQDw"), .value = IOV("kMKKo"), }, - { .name = IOV("OuFrbntTrzAdz"), .value = IOV("XsbcCnrMsBOwEkoMTOSiBZfPEsaExtPnjhPUoeunOYWBfBR"), }, - { .name = IOV("nzYF"), .value = IOV("YlBPmaZjqVzFkBLnfDBWtSHKPLJrNPHAJZzDP"), }, - { .name = IOV("ioNKqGCNSsWbhiZ"), .value = IOV("Q"), }, - { .name = IOV("BBB"), .value = IOV("DgYTJBEiahI"), }, - { .name = IOV("ebx"), .value = IOV("wwKnnTXMXkNboyoGobiEqnMVXmRpMhtrlfGyETj"), }, - { .name = IOV("clHVxRiRlegJYiuHU"), .value = IOV("clHSgxeQnvZnIc"), }, - { .name = IOV("krBpvpfPjRss"), .value = IOV("jPahPWvjXDAIjnHxrIsO"), }, - { .name = IOV("QFYPIhHjQqfeNjFLP"), .value = IOV("NmeFfxTPCsUu"), }, - { .name = IOV("IKZ"), .value = IOV("mxgmhKCFxo"), }, - { .name = IOV("nIFILpqY"), .value = IOV("jvvegtLgDjdQtMMzQmQikGflgolrDWTCAjBlxYpWCnJjuVCcTHtbLORUvhUPLEscBxSnCJjG"), }, - { .name = IOV("nJRxLPw"), .value = IOV("PwOsTiYDKTYMzxiEKZqkQKZjO"), }, - { .name = IOV("AIBwaiVwMPAXL"), .value = IOV("RnoVkjhEMaFKyjRctGOzcyH"), }, - { .name = IOV("Smea"), .value = IOV("YBfPWmNtfMKmCJagNBkJROWyciSVUFPSEXHVdDQSoUUlrqIxzgw"), }, - { .name = IOV("V"), .value = IOV("qkFTWhsXpxodxwIiaCHjcTjwXxQDwPeLESYZui"), }, - { .name = IOV("gMbQByLBgLxUTuuGLOl"), .value = IOV("HAFYRDefgGUnimuWNvTzgQdThsgLKEggXHtPCpnvvDAfZDTyHTfmkUjErbGGQMhkCNbleKM"), }, - { .name = IOV("UAhdNlz"), .value = IOV("lLumFZRUQKonGcnKOqgNYivouROMcreDiIBkUILyWlEBhUbxCqi"), }, - { .name = IOV("uEjkuEfPPx"), .value = IOV("dZgfRBMPKdxeZAm"), }, - { .name = IOV("buKctpf"), .value = IOV("iIXnySoDytjBbyeoVmscXtAneFyrHXXjLCmhFVgKApFfcIR"), }, - { .name = IOV("KwFgu"), .value = IOV("BJjuxqfkOcubYeAvdaBDSotaJHmbgSLmuIqXygbjPvJMChofpgJmgNEoYsDhCpeLxxdwh"), }, - { .name = IOV("PTZwdDXlOYgrwA"), .value = IOV("MRzMmUbmkCue"), }, - { .name = IOV("nytxB"), .value = IOV("tFDevniaWYkYlowgxqZkqwdrMLSVLdRtApsZDeUbGtWyOvVYPgsVFfbwHodpSA"), }, - { .name = IOV("mlRbebbA"), .value = IOV("lqkpoJuJfgKiaLMLMVtvaTfpUySSLsOGhPsOQpkVXinwej"), }, - { .name = IOV("BYF"), .value = IOV("zGZAqqEtBrejZEoCALMXypfBj"), }, - { .name = IOV("lvUxenyjtDGikTPQ"), .value = IOV("uSBssRkdSIOCSan"), }, - { .name = IOV("URhIaqlBKDXhA"), .value = IOV("kMogNmguGxrUBBBPhnpRyCSDGISEKoEhMoeMpqvRkGltoCFpCxrRHpFbR"), }, - { .name = IOV("GPOoJNRAO"), .value = IOV("XAAEzCSeVvq"), }, - { .name = IOV("kWjPBQHHMmkkzPAs"), .value = IOV("rOZmWVYgOWYjzimBeALKQFjSglVIriDvOefufRfvsvihJEsnKXKsbBFpcEU"), }, - { .name = IOV("aKZCdrKzOmgjXFxXv"), .value = IOV("oEYXqyEonlxAShuaLmSPZdPXeoVxHGyQoMOggzPzmXZvsSHTNGQzbPvcpaEgecpZOMJ"), }, - { .name = IOV("fGVrO"), .value = IOV("fmMZvArIObOHCJausThTPv"), }, - { .name = IOV("SnyhxPihNjlBO"), .value = IOV("SKghdJdMdJBrRQWvSNMfDWemGTpojNJLPXvCUfOYDQruzqktUIljPXWMaebwQcpXQsOAenvWBiPbYP"), }, - { .name = IOV("lRubbwLja"), .value = IOV("qRZVkuhKzDwHfElJFVnEfAOyLnyzktRzErtIIIzWDifivfGgDYBe"), }, - { .name = IOV("eNzkOOcjlYMfHsMuLkDg"), .value = IOV("vrQteOrFNIfBLPKCKuPDcGPCVGBelHEcOCZlcnElkWOnbTykpQSH"), }, - { .name = IOV("WtMxhGRgZAGORHpFXdG"), .value = IOV("FpjNcHIqeYUJKJilBHkHhLNHGRlqZYRpdZEKzAauKyLEUFsWqgCy"), }, - { .name = IOV("DjI"), .value = IOV("npdEKVgVcmeeAiFiEfiNpxBNymsTiLiOQSlrbRNV"), }, - { .name = IOV("pVrojMpgHLSCquygN"), .value = IOV("SSMsbSjZKESTtjiGhownYrGyMAlxjmQMtpmisilkLmyjQiBhVQkVrLGdjXIaXwrPCe"), }, - { .name = IOV("TuNfDpZXR"), .value = IOV("EsAysUpFoeNaMcNmvRRxWzwaWiwNmoZFlylmyuWBSkgrqwSYtEHHZKThwh"), }, - { .name = IOV("jsm"), .value = IOV("pMxBveGkeAhlZkEhuxLDtdRolSVupWnWnpEVkjYWZpwzINEyaIFKLXhgQhsmLFOdkQ"), }, - { .name = IOV("L"), .value = IOV("EWnUhCqdjlzH"), }, - { .name = IOV("kFLvCgsSCCYrOTVqXE"), .value = IOV("fWxWooxDXhDCMFkPXbIwAOIewTVcLwxbTujKGucSJXkFykTGfQPBRNnHxXsReaMQXOG"), }, - { .name = IOV("UvimTyCFyaOORN"), .value = IOV("GNSXtWzKlLcIHkecoeLIBrAYxPAJUclMinecxPhKmURItunmemVMvCeUdrwIeJOxiajibMgZbXCHGFbt"), }, - { .name = IOV("pDFzOBwXnMrFGTsSF"), .value = IOV("XvYGCJrLcuRE"), }, - { .name = IOV("jLHtJFWveVNObNmchJ"), .value = IOV("DgmREdAGSXPVzwSHxSArWyGoJUYuBImmtZUrciuEYHnLz"), }, - { .name = IOV("rEOPbwrgCrHuBoYcfuod"), .value = IOV("qzMEVrjkgiLXwHuBxWbqumqHdXcIlWXfbMnpaCHFZjndiKQj"), }, - { .name = IOV("DoDSIO"), .value = IOV("jBXZMWKWgSiVcjgpTAWsUNolgEnRrnqRsOeD"), }, - { .name = IOV("pNmPFlPzbf"), .value = IOV("UfOLnFmipcDCqfQkHAopxSHKsxkyeeWmPegQLJdVzmxceSScyNDu"), }, - { .name = IOV("iM"), .value = IOV("CwDWkLnbpPtYKvHyesBXlDZxMWImVPWHviMukl"), }, - { .name = IOV("BoGZeDNb"), .value = IOV("yGCYlOPcFImCtZegWKnbcxBHJJrLsYcEWSJNKYlepTJldmWbcWsoDup"), }, - { .name = IOV("XQDZrcHFphWGhHaPx"), .value = IOV("UOUpzQBvIhrtSyPMRGKvJGXQMNHadKBevlUAEWLLezvpBSGocRMoMtopEfBpPUTOG"), }, - { .name = IOV("nxDAshFXhBJAFA"), .value = IOV("NeVcnQnNZTCyzLAttrfSohbzXDmNsKTXtOXuzXaqrGfKcQEwxtYKdrOdhNgOQT"), }, - { .name = IOV("xdLmYOOcCdMHbjfJ"), .value = IOV("aHspjhpccYWXrnkQbNrnpXuF"), }, - { .name = IOV("m"), .value = IOV("DnpgXajxTwifRfOvHRzcEslrzAUazNSKnmrWAIPkYvGVHSHG"), }, - { .name = IOV("YjyfQiAMksrDOVlJ"), .value = IOV("rezmSCYTCVdIPbikgx"), }, - { .name = IOV("VjbKCbcEamY"), .value = IOV("LjyKIloApamxCQwwigedWiHHmAslFgPcyCgvzFmfEujavfsJwBcMFElcwllzklYenViKG"), }, - { .name = IOV("DMLVYhqbIJlGBARrkV"), .value = IOV("PwgcwlCmlwEwTbEYfIn"), }, - { .name = IOV("ZJNCn"), .value = IOV("XxiegQzmyWOzFDSlNBsprCcBuuludAEsRANkGQQl"), }, - { .name = IOV("PCLdbLkegFcffLNs"), .value = IOV("CHziAvtzJoHPnsMrMfqtIJpNzjCUkwiZNaDHsoUDfiAIZzDKrUdFJATeYVapxlUEhvDyLxRwpKO"), }, - { .name = IOV("XIGlyuGHPIDddzoE"), .value = IOV("QPfwknHPNwFOCcFFKPMcZ"), }, - { .name = IOV("asSkDlHiQNca"), .value = IOV("olSWxWDkrvuNTrbpaKZcAzXMNYuwvfWVwLrrJFrNkj"), }, - { .name = IOV("fXZfkveepNGllL"), .value = IOV("KLJjmLbGyTWnUOUKwvdLZatJqYlmjAwtiNDyL"), }, - { .name = IOV("HzCazXiysWXPjz"), .value = IOV("EFZXgNZJUkgSPOofYQNAIKnyrt"), }, - { .name = IOV("KJCrKi"), .value = IOV("EOnjgRMFYcNDNpYQxtmcBbrDqUwHyxVwxNfrmDn"), }, - { .name = IOV("dQOJdubArVpQCDwPBCT"), .value = IOV("ZgZfLyHHgsoiOYVVBNWcusQBjCCUUpJAQVniuAINhjjpfzGkm"), }, - { .name = IOV("HiVZaaJnmMfVZPmSw"), .value = IOV("zSjtLkKvzOOLwejVgFMftbFktxevWmcNvXcOzpgqMrLIqYotXvIbly"), }, - { .name = IOV("nzVxn"), .value = IOV("EuLOSjAIYinaSiyPBFLAttdVXPyHdYpzHVhCgnNaunWvjJoGgGQjlgNOLsLDtygzo"), }, - { .name = IOV("yS"), .value = IOV("bSbNGLrfQfymHeRwbsbCjrFyjNylZTWmZzMIIjXyQuiUpgubhxESWduDUKbffMkuGgGWkJDXgr"), }, - { .name = IOV("NcbXqNqOYGPccpTYvjO"), .value = IOV("N"), }, - { .name = IOV("rsV"), .value = IOV("AgmjyxzK"), }, - { .name = IOV("lFckuoCPjZBAwa"), .value = IOV("iyKPMwZRSrOojAsZBvzMtRArfnSuHCoeexLyxSoTxlfGsXuSbuEfnbVIbgPnGSbBuXPhHAL"), }, - { .name = IOV("nCyUmWc"), .value = IOV("XxoE"), }, - { .name = IOV("csCLKaux"), .value = IOV("yIXZtxHECJxLCrGQnxvjidWUgodshtTtyPRVEdCZJo"), }, - { .name = IOV("FASzZzfXLUUMR"), .value = IOV("mfakkTYMQcLYuRtOhZmuysVijaiwPHNmLZASaGvHJxkxXmxNNkKUGceocrqkTwmyPNFmIrF"), }, - { .name = IOV("JiUXjV"), .value = IOV("kjVLCedVbrUvKcCHCyVCAIqhwxuhSPtxlPQyqACNexUngAemVkjGJFkTKfppXHlCr"), }, - { .name = IOV("VZqSWtEWaOKxb"), .value = IOV("oSpnZfFzNGM"), }, - { .name = IOV("WnrOqYSoHsEEtFHirxP"), .value = IOV("YWOVqhUBFCXTaTsiMstddSSeidiSR"), }, - { .name = IOV("nLeFGcMBDVgLaTde"), .value = IOV("petikGQyauAQCPCDya"), }, - { .name = IOV("w"), .value = IOV("aVzSBAbiSZKtbxuUUDaEfKlaFxqoFGgoZrfcXITkbCsOqBLGMXiOuixGfsbgYARWgVducxjSkKaYmRqM"), }, - { .name = IOV("URcQi"), .value = IOV("iORJLHPopWgYdEtQuYUyRkzKqYiHuSQvONDHi"), }, - { .name = IOV("KQoEUTjGGkgO"), .value = IOV("eGnbifuRYdLSzuEvRcy"), }, - { .name = IOV("kXYAjdIUcrDKj"), .value = IOV("degmhdOHKksYsuaQUKxpkqlociyzDTkOOiTnyMcTHCtdRjkjIZrmMRYMCwvLuaqftsBNBrkAdvvrUEAQ"), }, - { .name = IOV("GPWVatKoyJmOaUhqnp"), .value = IOV("VIWqslmkWJMfhSBVqGhoCrUNDUdPpcJW"), }, - { .name = IOV("GjmqxDELFkCogCpCjnq"), .value = IOV("NdtLJxRRbAmlwtfRqzPuJMZPabKldVwLAIzfGKZ"), }, - { .name = IOV("BJdXwxGuuzSQnB"), .value = IOV("fuUDDSZqCRyVLXgE"), }, - { .name = IOV("JDZwpblmBLtKbtoRcfJ"), .value = IOV("byUVxKwflc"), }, - { .name = IOV("gzwjuvrdDXYGjH"), .value = IOV("nzZcIvrBtjajSNYQkOII"), }, - { .name = IOV("XlLNxbELdhLkyjWqav"), .value = IOV("NreNSMlb"), }, - { .name = IOV("CWXUl"), .value = IOV("XRAuxXVzjmaIfYaTNhazMIXmnZqtlTjZVHcPBdbegfvepNPRoXhlFEEZiNBZUwuxnfODaWyc"), }, - { .name = IOV("yRHBELDObFECgU"), .value = IOV("hUhbuDBevmtZdqaElmGCQObJuglhIeCplBRzcNLKXPFFUvXBSFmAYgbEhTLDrL"), }, - { .name = IOV("Aofu"), .value = IOV("fHVDgxCCqLoydMpnbLuqNG"), }, - { .name = IOV("RJ"), .value = IOV("GcdVDzbkxFUDcOlVfKdqToqCSWHGMAkQBQiPihbqVV"), }, - { .name = IOV("LPQWgTYI"), .value = IOV("LmSlqFsOoAHinnVvSaReDjmdZpQarBpdLwaSt"), }, - { .name = IOV("gTMOznmBEqkKiu"), .value = IOV("zcD"), }, - { .name = IOV("xbNkEgsALmglJwP"), .value = IOV("ivDMwJWYcGcCSNVZO"), }, - { .name = IOV("yApoaEeg"), .value = IOV("iamkckUvSYHNdqTupwvBuYqdGLLxyILUaKwOUdcmZbFukmHlMrxcuWQY"), }, - { .name = IOV("iXcpgnICAgPrTvPI"), .value = IOV("BZOOgmEWCWsQHMjjtsaMgwxDFq"), }, - { .name = IOV("Jf"), .value = IOV("umpCZQCVabmuDBcOrD"), }, - { .name = IOV("HfmklLfVVZaVcpEEFAON"), .value = IOV("zzGZWdfyHQmxHpZDKYGhqgVmiaMavKRtFDjJEDIcsVTvYMunkocKoJlFTgADxsWJbOGxsZt"), }, - { .name = IOV("DhZjRfUFrZDL"), .value = IOV("naILrRCQaDTpELzZKqckvgls"), }, - { .name = IOV("Qypwsblcqbl"), .value = IOV("qgrDUIPxpSmtRJNCZSiqgMJsVOfGEswMXNMIufIQlIRaVdmiMALqChblHwZpVoZczuSINPRttXloI"), }, - { .name = IOV("KQUJdfjvqtXgIv"), .value = IOV("GDfVMfnSISsQRgTuklYirVlbFYldpjIwzHwKnexnibcXzZlZvXQjpBSckQztAz"), }, - { .name = IOV("EBKimFrKX"), .value = IOV("qnCsmlDAOHjnzXPbKSXDTlnuaEAHBoXYznmju"), }, - { .name = IOV("kdLKxCnW"), .value = IOV("snVyIyUoZpseYrMPlbrCpVVnshimjLswspXDMFKZQzHrVv"), }, - { .name = IOV("GtezRZmxiwMYT"), .value = IOV("knQwAwykMICnlgOfSmbUQkKUjAMbouSDOctyoH"), }, - { .name = IOV("GosfbmTCqRn"), .value = IOV("mRZhVJwaWy"), }, - { .name = IOV("yAfrBaSwy"), .value = IOV("pOXPQXUjkDEjaBvbOjsCgPqKlveywPwWyIMGTvCgUmtpqqtnJJ"), }, - { .name = IOV("JBIfc"), .value = IOV("uqnzCbKMVkDkNQfuxtTlMLhJTsTcHOvOTnXhIRRYsQqqPryWtBJYWJYKqoE"), }, - { .name = IOV("eotyMsPcWEPNwPsK"), .value = IOV("fyceSyHHEtZR"), }, - { .name = IOV("LoqS"), .value = IOV("npwHLImwmfANNVNfGA"), }, - { .name = IOV("BjRMwHiOklMfI"), .value = IOV("XUsTjEWiELgaJeisRXxmGyQVmKGfKDLSPOvcCEpjLqliYkWjCnfhcjllWPEzowJyI"), }, - { .name = IOV("gnoRrlZRyfSelesRy"), .value = IOV("UgghiaSMxpEDIgmJOOedcEhCIyjDVCKOEXPattoBukzVIZLXCsSd"), }, - { .name = IOV("xVZ"), .value = IOV("rrIv"), }, - { .name = IOV("hbKuxNjAnHzAXFpPTgLV"), .value = IOV("wntQTqzFCY"), }, - { .name = IOV("GFZDFxL"), .value = IOV("uwrahaJlNEbLGMOUzShOxCdHoARbpzMCuksD"), }, - { .name = IOV("mHVdDmfnqrnfszVaAAaS"), .value = IOV("GPCaDihffB"), }, - { .name = IOV("GSpgvCDkr"), .value = IOV("tBQLsXvDldKqloSeYe"), }, - { .name = IOV("MUVOSEFqJZnOXwFUfvyz"), .value = IOV("GvIbCglJDlREpF"), }, - { .name = IOV("ipTrvZOzZC"), .value = IOV("sbikKHKKmdysvTDSkaUhzcaeFrsgGOYJGIfcVjOLxAIO"), }, - { .name = IOV("CKkB"), .value = IOV("ZNaFfvSWvpyGUskznzkuNCdPeMWIELkpxdXLSqmQBJRofqnhazQ"), }, - { .name = IOV("XtKAeSlZ"), .value = IOV("ulPfKcDhAIyNFDkuDPZjnHJCtzfViPNBRPiIuuLvBbhBgUFdHzZlGvZird"), }, - { .name = IOV("UTYU"), .value = IOV("lOPLUhoAuAvxxossxY"), }, - { .name = IOV("MHUEzKDN"), .value = IOV("ZjaFfskZtdeLgJXfeDlHdAGqnoOAOIHaSdRpamjIKh"), }, - { .name = IOV("TAKvSVQiuWhV"), .value = IOV("OWKbzqcpatNqaahYhXOTTVBdDiIqDokAZfvFyYmDcApHyw"), }, - { .name = IOV("XozBaogDGZbLrxFiR"), .value = IOV("KslYolihoasPlbcsudxnJvjorTQoAMBxMQVWeuNdILkvJZUECsuHMkBRQCUJqfHpocrKXx"), }, - { .name = IOV("pQPL"), .value = IOV("FCScjUUhEpnunIiCEzCNAFRlaGBfTSWnpWRMpGdfibkInIXkizYhf"), }, - { .name = IOV("RBMZutgzOREN"), .value = IOV("OJIxGHeFrZAUYaGGhLZvpONiDbMwLmwvZeHQ"), }, - { .name = IOV("KUuOmyy"), .value = IOV("mXUGRnLFIfTvsDFxefvYtjfmeqDbhBwWWgcW"), }, - { .name = IOV("eSFuIJEKnUX"), .value = IOV("SqQMObcMFAIEYypScCxOgWfngOSBOIXukWEGWaqINzqLLUkeUnNPvTivD"), }, - { .name = IOV("HNvtEsQtRLX"), .value = IOV("pmregoGHHGUKZFpjrLMHczMGvDxXZBAWEapOzrEaRM"), }, - { .name = IOV("VKgLp"), .value = IOV("FGEjBegQqrDyihcokFAcBNZCsQDXlJUGipaOjDnJiyjcqrghsarszMozjtWgYfeIbznstWT"), }, - { .name = IOV("gNVJAtnqxEzhEJ"), .value = IOV("AVcGcXScem"), }, - { .name = IOV("YluRbLQhBLLoBwDhor"), .value = IOV("ZzIjBuyRQSGmbYTjFJdCZyRDkiUjRlAofebyMSkWoLCOSvxzDYrtadLKYYjMSkIwG"), }, - { .name = IOV("VVcBdowxYO"), .value = IOV("USWVEmZrkFGUUNlpaMZzgsZpeQTIKEgGYgXjRyEWl"), }, - { .name = IOV("YgYSSED"), .value = IOV("ZTSIdkxSkCdEWSPQeExQZfNPQeteJYTiYLRDVQHo"), }, - { .name = IOV("ISsOYnLGyQjrnzQSO"), .value = IOV("mmITFlIEydjlJjEDeOgskokXKWEvrkbkQUTldEwpUgZrSBIkIY"), }, - { .name = IOV("fxIBmGMe"), .value = IOV("tsYlRdb"), }, - { .name = IOV("WIeuQGGPdkcmrGzb"), .value = IOV("mnUWarhhZNvP"), }, - { .name = IOV("byghDkjZDLGoATPsjNOE"), .value = IOV("edAAJEvknAzRbIABiLvypQfxg"), }, - { .name = IOV("qgWbwJclroPWD"), .value = IOV("xsxKyAoBfTP"), }, - { .name = IOV("lBvXRZFKkoFRGxjzj"), .value = IOV("dqNFbZvxYvTurhsBbclrhWdtxjhyYDwDUwqeABIrZgsNAQZClejTCPiKwHwIY"), }, - { .name = IOV("Kk"), .value = IOV("NxXpGpztJLnJsFIGpmoMindREypCFvHLaYPiFFcujDEJxXxxrqMSPdsekn"), }, - { .name = IOV("akFhJYW"), .value = IOV("SsjGAbjBUTfQyavaaimLTuEngJNIsJfRTBzffQTtKrctjrwABiRaTFglNGpTqbmWBXDYIDu"), }, - { .name = IOV("IaCcUsH"), .value = IOV("liNcUrFXUPlvkWWDsykJJuFtyzUKjWrKHao"), }, - { .name = IOV("uFROz"), .value = IOV("gWljUbJlgBVCc"), }, - { .name = IOV("wBZXZAgBuLUnLE"), .value = IOV("ryoKX"), }, - { .name = IOV("yiFiZFzfUagTTu"), .value = IOV("cgAyZcbRcfreIReILChNcfckuVKNYelsBCMCbrzQioIABxlIkpVFoeHrHZClVghKphtqNQyoL"), }, - { .name = IOV("jZq"), .value = IOV("zWxHSsCcJPYxgkFQDaFdhZZdlLyigFLDvXeytYhbElnUcaCJKtRBP"), }, - { .name = IOV("tLGcZCOOfIeFlQfDFv"), .value = IOV("EkafPodOFBAntsZDTXpifRdcUhLLWbQxbaZV"), }, - { .name = IOV("XVPEE"), .value = IOV("NVSaYItKMnjnaUVSpaqsRSpYsxweLyCUrNyPJfPawnkcTm"), }, - { .name = IOV("PB"), .value = IOV("No"), }, - { .name = IOV("TrsEfUcMubwSFoehF"), .value = IOV("BhyEpHJRCSIEWbRMcLrSArwkgZLeCrnmMkVoTLJvMTjBznQgPaeQNpboUthHtvxBW"), }, - { .name = IOV("RbZHdSssFB"), .value = IOV("qUJoHrvleFpUedFjwYAmGuJpUsNQoYvrASGidw"), }, - { .name = IOV("SHO"), .value = IOV("JcjmKPwuLgJOG"), }, - { .name = IOV("oXrEqscXcpVILFOJOi"), .value = IOV("QQElGFdOiPlDLGSgsgoieRqBEQJqudHTzwWDXAMCsleZD"), }, - { .name = IOV("lACKHNcCRCSt"), .value = IOV("SDriCgvA"), }, - { .name = IOV("vdOxxtTvYxZH"), .value = IOV("QKPVybYggfCIRNysHfsbXzDJFk"), }, - { .name = IOV("toYDfCH"), .value = IOV("EscydTkHqVZjliMURgaGoKWhkwchoivQwtvqBdT"), }, - { .name = IOV("soY"), .value = IOV("jEvNtElvzzKcNGqtnXthRnqJUFXcctIKBTOSTFL"), }, - { .name = IOV("RRVETYNIANbQrmxY"), .value = IOV("RGmPUeARKRtKAPtXRLHlxbKHYEVUQQaexYJOwzHPYOVjOBVsrwGeWPRxVCmySXBwPBoic"), }, - { .name = IOV("lpIAorhQio"), .value = IOV("TpLxHRNSVLtuUItqAfBfXStAokzV"), }, - { .name = IOV("IuOcWWXQJYfiQTuM"), .value = IOV("gIhsvhcvtUUkFtuYEMhpxLYVlbgszDgnkOSxGqmtYNkMNeuRwFvXpgCrjLGNlUQe"), }, - { .name = IOV("mfBgQqDJ"), .value = IOV("XCktgOEmmWRqWxARXdGpYOswdtmPhuuUfSCUbppYfhCmyApdIJsjhGQqe"), }, - { .name = IOV("IMzWAwnGnZfxeh"), .value = IOV("CtQmwdPkeqqKUBJMeivXJLTJTNueDwhhGUjNfOiXbFryNBSUeotqDfPozRoCmyhN"), }, - { .name = IOV("kwQZusGpOAvuCiWTyRW"), .value = IOV("GMzaDtnMqVJdkcllYnCrWdUUMFDDvvDfmajRNsqDqBhQjccrOTdSWkQeLXETNyuNdZZDGMlxNWu"), }, - { .name = IOV("xojoHaQMnwuK"), .value = IOV("hFCWtfxniiJf"), }, - { .name = IOV("ALwDStPhvrwlv"), .value = IOV("PGeGXbQ"), }, - { .name = IOV("avCesLwwsB"), .value = IOV("WhItzAUfDNadSnitEHUuDfkGVrHwOvtBIukmClydtuEeTGXCTMTicTcXV"), }, - { .name = IOV("UGhWVrbKqSPFTEgSsOZ"), .value = IOV("bKnkSGAYGDmIrDYubZsgNWJmCqYXRKNsJuwdyucMlCewhbswmHqOk"), }, - { .name = IOV("gBALUtCOwRWmXMZomK"), .value = IOV("diuUSqzFEpiifWfYTegzIDEPkrsPhIsHTSGRbhKFnQKEsGkBxzPrEn"), }, - { .name = IOV("fppk"), .value = IOV("mvYCZwTuUwJjDyVzgDzJKLjWWi"), }, - { .name = IOV("BfY"), .value = IOV("qzQUOyxEnxmBHBkpFFjQaOJzAqjcpamAunkUCCWjdzVCTNvSXSLWhskVThtcFPZVFRmyIQYE"), }, - { .name = IOV("sslHBMCiJ"), .value = IOV("uyGCyclaKiMtcPIVMzPdTzOmHRCECmuDgnfKceXXBnyxNpWTgrDQwaRBwGIhJIIQNLICkoBA"), }, - { .name = IOV("ydjnytY"), .value = IOV("pIyVQDSYHTimidauzdTioNCzPuZWnmFhAiFcPGtbglxmaztsYcgHP"), }, - { .name = IOV("MXuHPpaJDMbV"), .value = IOV("XubuUVCT"), }, - { .name = IOV("OyrkMZ"), .value = IOV("MlFjgWzeeaDbEAEcuxJxQFzfqqLkAwDQQIjpwT"), }, - { .name = IOV("AD"), .value = IOV("losAnxOHzngcSokYAZXrKYugvTMADyRuRKdBwtFrbYHDqj"), }, - { .name = IOV("itf"), .value = IOV("YSIRVKBszVMXPdinFMRgaFxe"), }, - { .name = IOV("jPWfEInGbx"), .value = IOV("puualBJMzmAQXkQmVbOwtPRQiULrmhJ"), }, - { .name = IOV("U"), .value = IOV("awRUmuMpBfOVmFxKIySepyFmPZVxqPe"), }, - { .name = IOV("jALNzNCqVgNuaYu"), .value = IOV("usLPhMmRxUQaUoHqhLZHfDzsuvxudYUwyeOFoYkPB"), }, - { .name = IOV("XVU"), .value = IOV("VAoSHEptFKTTp"), }, - { .name = IOV("EAvHpnf"), .value = IOV("gBeKlnMDnUsUQDtICLdHLFLslEgFYQCQRkWrjavvcdOVMRoDKYRHWvMlGLHzfDKzbHHemqoNhwMIsjkQ"), }, - { .name = IOV("gWKwJo"), .value = IOV("wj"), }, - { .name = IOV("DfpMlwqTXxAFGdQGI"), .value = IOV("hXkIgNyKzpAWFMOoPYjamNWQmV"), }, - { .name = IOV("O"), .value = IOV("sVrssjhcgikIbPaTXvdusCVHXWvKVcSUlDOEdCWhnIvEXndCWsEkJETeThbBEcHOcvWzqYeK"), }, - { .name = IOV("FTQVJpnWVXO"), .value = IOV("TDnjQtfXysPuQflfPuooPslQyHM"), }, - { .name = IOV("SWQnjTfCJtmbyNsdvP"), .value = IOV("DQkntMPMBuPnlhOZoxkTtfXhDB"), }, - { .name = IOV("qNBrU"), .value = IOV("jkuynTQtfgwDrdROeBOsXCqATLyVGQVdqfHixzuxyMpZGtalVIFhxWE"), }, - { .name = IOV("NBm"), .value = IOV("BNBuetWezTHRslnHwktEIjgVHPZMWHsnPZAXOIiLcJdiIFQOBzmfRqsfIqZzhSnzNtf"), }, - { .name = IOV("CjjjugRkSWS"), .value = IOV("UxQngRBfYMroNkTREQwMkOhJBxdufcoAsrDZdY"), }, - { .name = IOV("UkyETnRKv"), .value = IOV("jLwzWHdXFwylaaKFGKIbLdqoOSWnknoNNTxGDlWCcRdRDFB"), }, - { .name = IOV("FyvfGQmQFSOKxgeW"), .value = IOV("mJt"), }, - { .name = IOV("VgSkrElcuBUzuz"), .value = IOV("UUneDnMdFsVOATmzNzwWdxGAOeMJzVLnofqxVKiZsjtpdSiDleLVgFeuXZgtIAcPU"), }, - { .name = IOV("wEoYhlUCLcihFokopb"), .value = IOV("nEqkmWIuISSVZxcrkXlBNjrUBRhkaA"), }, - { .name = IOV("HdmyNwLNmHWxQH"), .value = IOV("ELRqCwRwMTcfYjBYhgPrhfetCFvAydYozQCGnODHcZCWuuKIzWGnXRe"), }, - { .name = IOV("TEtGEABVtrCKxgEyBNnh"), .value = IOV("ONZXqUocKGErE"), }, - { .name = IOV("fSgMR"), .value = IOV("hZhHZcFfNwuNXFKgHczHmKyQoNDDbsmbBlcEACrZnWyLYxFKAiZPC"), }, - { .name = IOV("mrQPlLjWuuXWO"), .value = IOV("WhnxreyXZthZnDQcDHTjJdWPHilloWbzEWXMeqihX"), }, - { .name = IOV("EfGY"), .value = IOV("WmDMjsvjRjPORHuZZZibVHgKsljJCGopbcUSXxjXusjQfEWGLjEQXZRmGcpXYSFqSnTiqY"), }, - { .name = IOV("UQoTwJ"), .value = IOV("FlieSOkTFZGgdFURoSuzkywcDKCjmrAheyTyYFfxR"), }, - { .name = IOV("UZLHNWQokx"), .value = IOV("QUXaKQvwCFjhhsYHheaOdFdMzEvyBTvojVKjME"), }, - { .name = IOV("pGIkwaHHRRl"), .value = IOV("BXGNKylwqrRktRxmGbowOqJaeNSIkjNLohx"), }, - { .name = IOV("hLKCSCIeYzquvEUNRx"), .value = IOV("qXFwzsFTjTYrjHZTFapgAVXiauxrMSuYPxEujpp"), }, - { .name = IOV("DPeDtKrzpDojAV"), .value = IOV("dKjkWwmAtwWDvnGGAMvXnXEVsTNzLCMYwbvmOxWGX"), }, - { .name = IOV("fGCOsmbxgJwMgWXkE"), .value = IOV("z"), }, - { .name = IOV("MB"), .value = IOV("ZFCvpfkhxcT"), }, - { .name = IOV("mAanKPJg"), .value = IOV("fjjOVkLUwDOjQLGnUFVbjvPYVdqNbjNiTSrOggsTyVpmzPnPuzaldSnMqmAMI"), }, - { .name = IOV("xKXaaTzs"), .value = IOV("TmzZ"), }, - { .name = IOV("CaNrWH"), .value = IOV("xocTrXHsP"), }, - { .name = IOV("fzZJRDulUdnMeApv"), .value = IOV("NcJZdpxCaxxYbYypHbFABXMNVgcPwdERlncXAKZeFZVJndZGsSw"), }, - { .name = IOV("z"), .value = IOV("esJTdVTTxtRMejaRCXFBddRDvdOkuJnCkCU"), }, - { .name = IOV("wLGqXdGDBKU"), .value = IOV("fHhHFsoFtYyygnAhDtDvkghaIdclDsVvRFZdlpXIqlUFlqVhM"), }, - { .name = IOV("ubgETfkwAikOI"), .value = IOV("zrIGYKinVCMDovHPpPKOOgtOIdOSwUBsFnGauvWA"), }, - { .name = IOV("fHhgKXbokRBsasTbcS"), .value = IOV("UAyDpowtIsGzaaTSseLJQeTOgOSjizIChIDdNWUKOUeCEFddGJkxDULzxRBqhrIBdHIGwj"), }, - { .name = IOV("NuazVDusqKjLczcFsKEB"), .value = IOV("buuFnSuTUee"), }, - { .name = IOV("YDFCuPVtOkkFNktvX"), .value = IOV("WbYarnTmJhpLJYTzmFonltZOOuTUhVoOEVLAAMPUXTKlztdTfwWWi"), }, - { .name = IOV("VcUrgFhVHgpW"), .value = IOV("UWTnFSUOfoZxscWcsKMROmUSYdhypvSYnKAJLToCCLiMtK"), }, - { .name = IOV("jllZiYClD"), .value = IOV("tsZAipwMeMdWnpwdfPsonhIW"), }, - { .name = IOV("WSzzsOdZJaOk"), .value = IOV("QVoNCnXLpdpnqCPDzfbvMgThOxupkfO"), }, - { .name = IOV("KjwzbOjYUjkDdJ"), .value = IOV("HsSAZgjWnMoimuHNwGcOAOhKey"), }, - { .name = IOV("ZKNyOELKacrpouR"), .value = IOV("ePYBTNKPIJHgqzZSJorlTXQUFfzmdVWsdONGQUKtZdLKswA"), }, - { .name = IOV("YPXfrfwGoqKHrBzXuVnv"), .value = IOV("jXRJIAZwuZQOzxqvodhusfFoXnZjYGZzJVEgmmmWiwEBvvldHEyZryvFEdmdQMjFIh"), }, - { .name = IOV("mdobKydzoN"), .value = IOV("EpxEMVVXPZhvMQeZGZwDFpZBxLEKxeSuxUjqMCIDTUTeAiFgbmexCCVIkttDDZJcSIYLFhtezY"), }, - { .name = IOV("r"), .value = IOV("TfCKpDMhhmdkTCldEUjwCPsSGgGgmmJeLbZTnLhOMDLnysHiftZLJuoQEFkVXa"), }, - { .name = IOV("zSEtsIFqVVUAqtRVYqp"), .value = IOV("gZjKttaInDghptkbWNXAvbMDBzLsrYUBSOawSkioBvpBenkfNFnkFBpi"), }, - { .name = IOV("iPitBzhWIYtqwdqy"), .value = IOV("xvmGHtNXUnCseGSHXOddfuKbEOqyJBXMwjEpGigKHokeEVmXlJQJaJzZdWkebirWpHsLNHxHCeo"), }, - { .name = IOV("OFdCaTyVVvSGTQWLEiBY"), .value = IOV("TLcZxq"), }, - { .name = IOV("FsELbOEMyQz"), .value = IOV("sEIWfLDx"), }, - { .name = IOV("CpFooTViqTguwPTc"), .value = IOV("upUMopod"), }, - { .name = IOV("JJjGJeSjmwyRIpBtst"), .value = IOV("hUx"), }, - { .name = IOV("ZNUIekpRmOXKA"), .value = IOV("cQcAjZSGyvHIBBqhFwoFouvtuOjLUFOihjjMGrtdIFlGlQuQGwKpwbeWIkxXimdsnBAz"), }, - { .name = IOV("y"), .value = IOV("BqTQplWVpPghUpkTtlxndazmL"), }, - { .name = IOV("GZTNexs"), .value = IOV("qnnCnaMRIXjwjdhYkUJveWIkhoXUgHgwVHClPeQcSkKvOSWiRPMtfrB"), }, - { .name = IOV("kQRRVFfcAbvlqhiajsK"), .value = IOV("XfzmfGXVIGQgm"), }, - { .name = IOV("ULOaTbUwATrJXF"), .value = IOV("YxNOAgeapbrKjybwUMomUOwUvHBX"), }, - { .name = IOV("qUeEuBKsFssNVpGiNc"), .value = IOV("waLQprUwkWxCBZsspaqVGpAKASWYCWtmmQeTVVkBalVauvTaCPexfkFUC"), }, - { .name = IOV("OjyPTJKQ"), .value = IOV("cWyuIdoMeaMOwP"), }, - { .name = IOV("iyUgTgqHeG"), .value = IOV("ZWquKGbgZmI"), }, - { .name = IOV("TrY"), .value = IOV("aXcmzmntgMr"), }, - { .name = IOV("WngLvF"), .value = IOV("UqUHkSEKmlprZUeMtialTSzyGrEgTRGwjZ"), }, - { .name = IOV("MzfDQUgpD"), .value = IOV("NWQquWNAJuzkfnjRhnCfQNpvmRfoHMtgMzyhUppKYaAsGTK"), }, - { .name = IOV("qYEQ"), .value = IOV("bDRqdYeCnoLsFvuqPoegPWQ"), }, - { .name = IOV("CCxBDGwpqAfXCtBRMp"), .value = IOV("uIaDFYYtJjtcRkSlOhEtInYFHBjRZwnAexNQvm"), }, - { .name = IOV("EBZWl"), .value = IOV("UxUrsuLlOfDnzCvYrHSKneKXYCRdbruZNioBVleBzMQuuwdSmROtjxdAVgdQeSDHRPJpxiKJrN"), }, - { .name = IOV("zztGb"), .value = IOV("DPqDeWCQvGYVxVkrfaOXkgiqdzKcBryZrFtJJGLuygZHfQdSqWEZrlMQXCtsPRnbew"), }, - { .name = IOV("QOdwRoGwygDGMDEdQnO"), .value = IOV("AZOLkIxebrcbWBPwloKOnrlroRhzNHOaKlitZxRLsW"), }, - { .name = IOV("OsZUlW"), .value = IOV("UpJnYvXAiHSXnMhcoGqEwsApdhwDgxZBjPkbmdTNQTzGGmylvTpPVZOqcppgWQuRfpKntGdzFvhcO"), }, - { .name = IOV("zqZiUMioENZLAMrXh"), .value = IOV("KfzRcJTSoUEZJafAepPvCBNygwVujfElilovlypHkzPuFwgvOnyNJBbBSRmpggEaxiTVzJnlJcTGVLP"), }, - { .name = IOV("QzwDYTBaN"), .value = IOV("vTvNJbosRc"), }, - { .name = IOV("SBarLxblW"), .value = IOV("sWDeHiUPbvertgjIsdSOJvqlDqvTCUMe"), }, - { .name = IOV("Dga"), .value = IOV("iZpApgFGyeUvnCKsuqDgidfJDZhfJPlDDHHeQnIkkvxqCTQIjoTMel"), }, - { .name = IOV("Ab"), .value = IOV("bpBxCcPtGKKKRjNvgYybEOFbHbDGW"), }, - { .name = IOV("IpKbSbte"), .value = IOV("QATWJLaSGeRfumMtPptqzILgIPxBctnHtXiuaJYRjynSPqXCPQNOkMeIPtMJlrrbg"), }, - { .name = IOV("HXHQvivLy"), .value = IOV("QVzTbNdSjpmOXwdAJVniyiHHqUWohkxqYQHPwLziQHOLYLUcLLgIjZpCeqLZSSaxWsafxkz"), }, - { .name = IOV("sCRBR"), .value = IOV("MnWqjSczCGhDyQZLqvFohyvEPslFPa"), }, - { .name = IOV("LwFOPcZaRXFJwNiH"), .value = IOV("CEofICRYX"), }, - { .name = IOV("mIHXdzW"), .value = IOV("rcvwJooAgGAGbZAlGLNUpWTRdVJPSoHwSKlqMxCZZqZrCpUkMqtBlUgYGczMpUAz"), }, - { .name = IOV("Acwf"), .value = IOV("TSdzYcqZZueHHtvRWWoVyTnysHIcLeODenxkRJ"), }, - { .name = IOV("rIwG"), .value = IOV("bknufjvvMbkCcJLQxYweKinbuqQNN"), }, - { .name = IOV("fQySnMSJecXa"), .value = IOV("ujGnNTmPwgtQUdUMnrRMmjQMeGqzLXucJCVLqksTsILfNPOdoRerRC"), }, - { .name = IOV("HFlUoX"), .value = IOV("nXoddbzIMxyceMNWHMIbTMqSouyCGpvTxxPgLXJttaXvLV"), }, - { .name = IOV("lQVxKvN"), .value = IOV("PlTPuIwkoETxwkGeSXYDVriEIyOQgmOzVUcWIfpGaGUGhnkHoyFQVCXdsxibERLNcJgZcK"), }, - { .name = IOV("UsPOD"), .value = IOV("BLxDfpfGVbuvHlq"), }, - { .name = IOV("q"), .value = IOV("TqqPaHtXiyzSXiftZeYChtzPlJiOKHTiEyyEteZalWdEKgNIEiUlxuakAEgiehTeXVYHRriVAd"), }, - { .name = IOV("HiucL"), .value = IOV("tZHVkwUPSfwXwUtjbXKDBGBhwdRtXZDNuAUHuoKTtNBByVtinurXnHGoEwbYQaYsTsSKq"), }, - { .name = IOV("pHu"), .value = IOV("QYtuLblPzzeTuptqVZagGlKQHpNbfGwPBcB"), }, - { .name = IOV("pUhrmttcSynPa"), .value = IOV("nqfLveGLQpsnVeCOcDCZMVlBwcGdRHoBSEDRTSVQLMqXbHkKqFGyNKjjb"), }, - { .name = IOV("nCHRD"), .value = IOV("bPMPjTxjKBKkrhtaQEImGAtVXHnfxlgDYlFlUyzQdJvejOynRYTmOQ"), }, - { .name = IOV("oJ"), .value = IOV("OokRqcdlVUmYPMaTkXmwScSmcyzyPqzR"), }, - { .name = IOV("hhkyK"), .value = IOV("DqabpeOTZYLqeioBkISUbIosxYRHnrTqXhfm"), }, - { .name = IOV("vdcgW"), .value = IOV("NiaptRRwgghIFZvefsUPjjd"), }, - { .name = IOV("aaZuQxyW"), .value = IOV("mBJlYuXkrcgxiUJBzHVmymUsy"), }, - { .name = IOV("gNnXozuSfrGFmZFsTMo"), .value = IOV("KUUEXLxvTXJiMpQSPGCNvjDtrrsioKupkPFIqSmBfIaPtdqrg"), }, - { .name = IOV("uoYHOiGaOEBZkLcpmcpu"), .value = IOV("euvErNcUNcxPaxBnehlysJv"), }, - { .name = IOV("G"), .value = IOV("JKFyNLpczAcZIyDdStLKfuu"), }, - { .name = IOV("VTXtvF"), .value = IOV("AJjleoYTAtfJTJiyLsIBVLhujZ"), }, - { .name = IOV("CHIOriNa"), .value = IOV("rHJxXlf"), }, - { .name = IOV("IxyrNRlidIcCnSjr"), .value = IOV("TfUTxrvuDyXbiUwXHfzfXaaGAgmzcVfwUEtExCxXWQtHoHGoDuXjTERlqhmKcpLZCx"), }, - { .name = IOV("S"), .value = IOV("JChQjzNsxZdfhjfGPoRZewnIYIwgGnoSfxkIAiuttnloWFtopaKUGJFZihZHpeZCUPvbruCIIbX"), }, - { .name = IOV("OmJWjd"), .value = IOV("XATUCTkKbzCkTfPRJXbjYHo"), }, - { .name = IOV("XqCVyfWAy"), .value = IOV("kBuocMWscSkYFlmtrCaVgIn"), }, - { .name = IOV("bXE"), .value = IOV("QwyiNqPPYiArMsBRTNbtZcbguxWNeALPjXFDFBkUlWVW"), }, - { .name = IOV("riQ"), .value = IOV("ZHmfQTjwAOalCCHNdQfoJcEqBABAFVeBC"), }, - { .name = IOV("JMZZKIZyfcYPf"), .value = IOV("iYxVoIKAGgKXkEgWhSldeZCJnDHMmSxXQyWAhYOOBSGMCfAUmhjLKe"), }, - { .name = IOV("DxxbOZGPeuIYW"), .value = IOV("zUHFRYxIiyRdwOdNhTABKHkaSNunzpuaUSO"), }, - { .name = IOV("NMIgmLrmP"), .value = IOV("UiKuIsIsGxamIFGuZAeDvbWazkDmzlKOunrOOArFZADevQhHlaLKuNWeO"), }, - { .name = IOV("DNdUnbDlKEIDbFo"), .value = IOV("qMCiItJkjvkoZQiOAYfzLVeCcQDTGqr"), }, - { .name = IOV("adrNlibiAxnUESp"), .value = IOV("kdBXeHPrYsPLrbFMJXFsjWvjCECdHVhJgTAWGxySZXVVVjWQGdLLPrhReIMlzgKSKSnCLrVG"), }, - { .name = IOV("WDgeGxWsJS"), .value = IOV("mxKHfOkRqBoz"), }, - { .name = IOV("GHhcZSTmod"), .value = IOV("kZWjIJcUjRYn"), }, - { .name = IOV("JTsJcL"), .value = IOV("PjfAR"), }, - { .name = IOV("ETIEIkayuYfOxpXYVl"), .value = IOV("LksbeBsmLxTvfnQCQTCRTdMEtecXTIBoHenuYgAGjFNU"), }, - { .name = IOV("ORtsJjQMrOxS"), .value = IOV("sx"), }, - { .name = IOV("YjNrEALgCGldwXbnmtdD"), .value = IOV("kwzmCwoMfeUeQIgkbAgyNcWyjCJJRsXoBLXNEUsT"), }, - { .name = IOV("KIkiNWPGrTgHbWubd"), .value = IOV("aESgKTdCfGJSrtCXNkudcWKOSSCOunBDhpfUuLkbaTcqccprwsflFYYHTbzRHUej"), }, - { .name = IOV("vzAGKA"), .value = IOV("daAVFENdZJAbYdisHeoUygOGEW"), }, - { .name = IOV("KSUFGEcyucKNfOfLFt"), .value = IOV("PGtqrkDwJjHoHgzCZAxau"), }, - { .name = IOV("ddhpCcmxRXDmhvYxT"), .value = IOV("UBCZqSkBkmnkWaAoJrlUXCjwfkTGoCeespQgEynJbJZVOXejJSTbnoiNEmTEKvHd"), }, - { .name = IOV("PYayomqWgXtMDay"), .value = IOV("hTVXBnUZfDZwoUpcOfgpeviLzBMlBmfKWEeZcoSkpHVqCNAvdxzCCuRWFvToZHnykkPWouit"), }, - { .name = IOV("R"), .value = IOV("C"), }, - { .name = IOV("ODPtqT"), .value = IOV("mWIhDVmzyAKDKYAtgccJfJCYjjovjAykWTZudLSNIjSk"), }, - { .name = IOV("DDyXSP"), .value = IOV("fSmF"), }, - { .name = IOV("AvMSHuUDdk"), .value = IOV("GnsmOOQBMIsOnDXmVPpkwuXYxt"), }, - { .name = IOV("ZccYaaljGTMI"), .value = IOV("CXJWDCRDyjtSTtqMEIDuUDuJKsJNSYKFYYyXfTSiNh"), }, - { .name = IOV("KMlPNWOtXJcywFsJpCGH"), .value = IOV("ZxQqKMghmNuXLZwODjTvxRcsGvtTuMKGVNsyonXNsonyetEXyDwmwBcXgCFKGFPFAASoNWyQFLrvP"), }, - { .name = IOV("llXLV"), .value = IOV("RXiuJYftnopEdzovDPSKBtUpRxuaALo"), }, - { .name = IOV("lJYIjGWYuiAL"), .value = IOV("kcTSDOzrxvwnKjeuJRtrUokJdAv"), }, - { .name = IOV("loRIInAkrxFPWIiF"), .value = IOV("ixGwYKSuXJtVHzKgIhMRFpUEiTrMCLwNLPTBiHwEtkeQJsi"), }, - { .name = IOV("dtuGfiPneoSEfrLe"), .value = IOV("uYrIHUfoFMurlIOOBrbpJAgTUEfeNcPutWIFBocXfDXbOsRzeVkTfbXXmHMTjWQLvZSaACsSpaNEx"), }, - { .name = IOV("yJ"), .value = IOV("tpzdltSlsBRnKNaZucdMvCzuFVpIVtlApmNcvCE"), }, - { .name = IOV("UWHvohOs"), .value = IOV("BnSaeizYmSPHYhFpLwOORlnzoqSvfXRIzMXKi"), }, - { .name = IOV("FVX"), .value = IOV("epYjjGDLvXOWrHxpOUujQtNJCGiMvgXBuVuexhXGYPMjkldpeHRDcqXJhAxHRaALQptAxsMP"), }, - { .name = IOV("rwcgcGWlXR"), .value = IOV("ECJoGjTqqYcEkVtYdFyEuLLi"), }, - { .name = IOV("uyFxRPfKc"), .value = IOV("BomCCYPmuwSrkoAMAMiBsBRMzvnpnPqsGHCydqJWJKXkOGvbTxWKiltoEETyhlVVFeWqCbmFXD"), }, - { .name = IOV("ZGibYEGZpiYwBywECYkk"), .value = IOV("ffzdlyRYjRQxRLWvoDdmuxgdEAJxLp"), }, - { .name = IOV("kooUnzOkRwabEZmXnqHx"), .value = IOV("bjFmVMAdjQeH"), }, - { .name = IOV("JPNeEj"), .value = IOV("MabKixgsoFOMdUiE"), }, - { .name = IOV("kTNS"), .value = IOV("lkeQ"), }, - { .name = IOV("itsoBDekjlxmYhNOrA"), .value = IOV("tpTOKbCYMaFRieFoatUICFacCSQRCrIAQCIqDF"), }, - { .name = IOV("gTq"), .value = IOV("EAjHEQruUWQhPHafRiouDDOIU"), }, - { .name = IOV("CRLNmSOuQOIBeODgPx"), .value = IOV("UHlSSJhhVkMrdSvDdgomeyFlHgLYNPVWjMjjYphOulFknaSM"), }, - { .name = IOV("szgamcxn"), .value = IOV("PTHehtwSAWDmIriiYKWcROHeYqvBZvXTeBDdrsNNBcLZgTATEbafZvfxwiCkkCLKdcfXh"), }, - { .name = IOV("cNEEHuzSFlE"), .value = IOV("fRUu"), }, - { .name = IOV("BE"), .value = IOV("ybQfHITjGhZfwKXDguzMQJFxwZZEePYw"), }, - { .name = IOV("JqEEfzDTfan"), .value = IOV("zYsJuJkOHsUFCQwRKdKRhruXkhDiGbFQzDxfNfvAeKfncc"), }, - { .name = IOV("vvmkJDQBDrbTXlhGzVS"), .value = IOV("MTuaqVrPMHFZKCJcwSwSfMJxukbaEtUPddkrnvcqigJlRCrvnYiXqOydjKOtwrwefuBgTDwtWLcg"), }, - { .name = IOV("LPyoqrsmpwMLoToqmV"), .value = IOV("wTaQTtuvAaVLRNOvWPdxX"), }, - { .name = IOV("NqWwBweUZhNeKD"), .value = IOV("qNEEynM"), }, - { .name = IOV("rwFGzPgVx"), .value = IOV("BrKkUmDlBqsSScPGpBhOUvWYnxUksi"), }, - { .name = IOV("stN"), .value = IOV("PnhUXnpSjdhRYznc"), }, - { .name = IOV("Thrgy"), .value = IOV("bT"), }, - { .name = IOV("QbsLTffVDLpI"), .value = IOV("GogpGLpyFkmosnSzTfVUHqSEQrNczxqcHyycwsKfNLT"), }, - { .name = IOV("gSoUoRdUv"), .value = IOV("qSjeipaVqvpGiunSoooVBzmkw"), }, - { .name = IOV("BE"), .value = IOV("keEVxQtQuUMMwqIYVVdfAL"), }, - { .name = IOV("QhepTqbjHfR"), .value = IOV("gsRoYOmIkgmMZNXLTquPiLpfoKAiurwlafsyXTufKJNzwkNEQegOMaQbsUVaKL"), }, - { .name = IOV("EYQrCbQfkGMYNrKpiwh"), .value = IOV("sTOKCPzsQyfQkQRXbUZQySbkNdfxBrLACJKQeKlNLdObEHrxeeqvyFfMyRFiGAlOBGCnuGYzCXvV"), }, - { .name = IOV("dlduiW"), .value = IOV("xqViMWJfHfipUTuRGFJIOcilWDWsDpZRnxsuDZRWYDIJMLWQWlPxwVkzhlvDucGm"), }, - { .name = IOV("sHRVqxffBNU"), .value = IOV("PzQ"), }, - { .name = IOV("cGCiUJMEpEidoC"), .value = IOV("CwpVFXGglJR"), }, - { .name = IOV("qkXmETKjNwkOlcPTLcY"), .value = IOV("xnFErP"), }, - { .name = IOV("UWtXdh"), .value = IOV("PisyhGhFZrZFGafmkeDfLEUiMazwZZUYERYmFZqRANpjnobPTnjwbzGGOVMTMlcgiuLAwHCBU"), }, - { .name = IOV("jsajNTcHprhaMb"), .value = IOV("jdzSIFIeyfwFbtiRfRwvgWfDHJjnvCwYKayIHzZySRNDQdukENTm"), }, - { .name = IOV("aaijNdn"), .value = IOV("kOSKxKkrGSAdoJvqFCLgJgYOiLoSiHDfZZxdXlQaiPOOXwAcaHGGPLDsMu"), }, - { .name = IOV("fgxukPAGQtDuKYN"), .value = IOV("MdBGnGUswTsXNrrKLGZBzNbXCqxxNwzOHiRDGGOmxkZJnz"), }, - { .name = IOV("EwfCS"), .value = IOV("jEbQGYwZwdyvMvkFDNpuKGuNzG"), }, - { .name = IOV("EoUrKF"), .value = IOV("eRZGAxQjzEgXZrluXAknFXdLTvhSRcZg"), }, - { .name = IOV("zOsYb"), .value = IOV("GOYhddasjXARutPccvWZyLieKJteKgrZFirhpFJMMhZTIjPABwrlJEjMRbMqiJgsVtJRUWToNyZuc"), }, - { .name = IOV("UMqWAKRwkggnjXmePbBj"), .value = IOV("vgOqorNdBrjRRiXafZpTukVxMNlHjjTVBLsDOXRCyaQGIQJBXWsbnGXvRRDcRlknEHESf"), }, - { .name = IOV("njsRgKVlflwyuTtMLGit"), .value = IOV("PMAqZPSeLzHlyOixBsPVIcGKUypSUnoNyU"), }, - { .name = IOV("hEMsTRQYmzDEAWY"), .value = IOV("elQtKSonQyhJsXxDYwUnIUEYEZF"), }, - { .name = IOV("YjtACvVIY"), .value = IOV("ukPFAaOfcvFFFQogRZjJLZduGMcSiyRRsP"), }, - { .name = IOV("KzQ"), .value = IOV("NaTynabluquxScQmVGpEsNQQw"), }, - { .name = IOV("ujCvGgIpxHvWwa"), .value = IOV("VgIBfooZmvVTPNDjn"), }, - { .name = IOV("UyTFFEkf"), .value = IOV("QHlCyPZedvrRIPKWosRjbNkIcTunfUCtRUdWwnvhyyBiIjWUejJkaDHiQaVQvwhqAn"), }, - { .name = IOV("EfdRcWFeSbBXLRL"), .value = IOV("bSfvNVnHNxmMLSRSxIIKXAYmqGwVMdCCFfyDuA"), }, - { .name = IOV("e"), .value = IOV("xFjEjnFtjBVHZMtMLJniLd"), }, - { .name = IOV("nAarqMbJXBxG"), .value = IOV("kYuQIQaIckIVQA"), }, - { .name = IOV("qbqC"), .value = IOV("voCfGJkhMXJzsbAeuhWZqYAAJnT"), }, - { .name = IOV("yflZOcQETsUGdai"), .value = IOV("roseFhkhcAoacLjvEVsiTmdLxQcHqBwZYzzVqKVWErbudNdyRwkpJCFeXnqqQVC"), }, - { .name = IOV("BsIBIUMxFAaxGaEA"), .value = IOV("sOOyutpKMIhhVnXqJTZlAIxCLEtjkQQvdNVAuetTpKlBLpeAbEQwiLNUqUtcKtAtlLRDYxEDXrwWlU"), }, - { .name = IOV("LI"), .value = IOV("RrWKdzjejDAWrhkHci"), }, - { .name = IOV("BOkPFb"), .value = IOV("yeGZIHpxHKgKKkHOrcAueipxNspWvThwTlVsVUnGOyKPgExAEknDEfJZaulVmkTGKiiYqKuuYX"), }, - { .name = IOV("tbIAcqmTKN"), .value = IOV("ag"), }, - { .name = IOV("EURSwSgFddkupWnCKMN"), .value = IOV("veTKBvaropuqRQwmLMTUjgajPeyTJlodCbDWcLYCbEuXpUBuqfIuGXj"), }, - { .name = IOV("KrTmmGNFTeXupRNWRI"), .value = IOV("QXgSuBvShFqZOAyqdpkXvDVotDCxJPqhXvZXABWufUvirVuQUyUdnBpulGDbkGSKwwG"), }, - { .name = IOV("LeKbdLfROBlKVn"), .value = IOV("xeNXZbjATTUEXcMiye"), }, - { .name = IOV("c"), .value = IOV("NtYHzUsdP"), }, - { .name = IOV("CdOLxlsyOvWRvaW"), .value = IOV("SiQZyDLrTPJecDbclrejBgYHhRVclSndUmTihwgEZZZ"), }, - { .name = IOV("JfAqpa"), .value = IOV("rJeSkWDVaXYiffMwCRGzkjfJLPKtylMqcnGneXKmeutubyUarSWRwqmUOd"), }, - { .name = IOV("LhrMWCoKR"), .value = IOV("BrOwRHwZoeisgxnTFihzbRnCditOLFEfzwQpB"), }, - { .name = IOV("ajHbhKwgcdrLMYdTKiRG"), .value = IOV("LszaFWbEkQGIKcYYFwEExJZoB"), }, - { .name = IOV("SCYp"), .value = IOV("JovmkeWFikJsvCzzWpoFRXKxxv"), }, - { .name = IOV("tfKFWjViJECmIeonBop"), .value = IOV("bYuEuJLGFBuOhLtDqNscXlQSTPxXFwLFOCchpNyrLfOtrMsnaqniCFNqqFfmxBNPXVKihalSmdAK"), }, - { .name = IOV("DhpPGaPZrhANXpX"), .value = IOV("tUoWlHXpdurgmDXNDhWaAKSGoxXwUvswZJZWWDGtKzFXFLFOQv"), }, - { .name = IOV("C"), .value = IOV("ycdUatpAsEnNTOxKqCniWbLbwmBEkaAmPpBJkjmYrZCAErgGGKyIGSsAgGLvwqunpsomWiFaIN"), }, - { .name = IOV("YnmilMYKNU"), .value = IOV("XnAxLmBMRxlCY"), }, - { .name = IOV("zyvFFF"), .value = IOV("CYCNkLgyFeGKXqsdeeaLjeJpzybPfozFUGkcOUWPPEO"), }, - { .name = IOV("fEmwABMKj"), .value = IOV("LavsYYyYwkpvrdfUCkxJphBDZlbIZeVfVKNguNfbOBchoniMnuHJDQJLJlGGjpYRIiRssVMa"), }, - { .name = IOV("RVqRIIJF"), .value = IOV("cTsrfGTvcAIEycQywKMSGKjzMIrWvVTFjRR"), }, - { .name = IOV("lAFhmFryVOGHJDqfidR"), .value = IOV("u"), }, - { .name = IOV("XjsKsZsrkKwgc"), .value = IOV("fzEhgiXUozlW"), }, - { .name = IOV("RHCxJZevyRlDfl"), .value = IOV("jwqeLEBYXFfPobhLeZtEeAVpjVaGSPYWXrFfWFzOUTWLBdrLfVjOquFR"), }, - { .name = IOV("duHyZzNQTiplLwdM"), .value = IOV("KgTNpmlOZTMOQXTQcnzTLqBtiXWb"), }, - { .name = IOV("cAXBuaXzea"), .value = IOV("HygLmbAEgkYTRKmwXBgznjghqaTvVMQsoKYbgxXpEdODpqYZcpynCyVsywMaFQbKFqzfxrUFNSiQElY"), }, - { .name = IOV("MXsii"), .value = IOV("ZshkUxYoUezJHYlFFNbxxLOQNOGxjBifYRlVhnUMKDNAXOnZaysMBfKmrEOa"), }, - { .name = IOV("jytvapKmjYBlgrt"), .value = IOV("pelMEhipPKJAKsTLCufijyeZcshBWDMMgojYorDgTH"), }, - { .name = IOV("SXurJYcf"), .value = IOV("dJxIiTSjvDxy"), }, - { .name = IOV("qAYaCzVAdGvXPJvdA"), .value = IOV("AdvZZFrolYcePzETxJldmfoGpDUhFgsWclCzpocgABZPeOkAfmiJrjnVcRStPPiQTJboUiuKGoPAZZ"), }, - { .name = IOV("GNTVhDQFNDEqMC"), .value = IOV("ZuRxvjdTSLsMxezFzHLkZjfgCOldXPoxKcacZiwrIrTwmmJbJznbhbfdPUF"), }, - { .name = IOV("HMhjIlaGJBC"), .value = IOV("gVVOu"), }, - { .name = IOV("KjI"), .value = IOV("RXySiGKVABBTHQDQYvWBDLHTGVjLtDitiTFXMOyKDGFKoTXJwWwvGtqvozgj"), }, - { .name = IOV("dPIOaWxPmzGm"), .value = IOV("wOBaNTIjUpVNoqOtAFOaEVLcEFxUmPEIclNcwiXxGcqvFBfGU"), }, - { .name = IOV("riScvKpdwzjBAFXVaV"), .value = IOV("PCQejwPdUobncakCWUCBqlDIJQjqLFhwZsEsO"), }, - { .name = IOV("nHFZTRbe"), .value = IOV("VZquKjisHXsNJyCfZUVhUAyyKelmTsf"), }, - { .name = IOV("PmLyULgpbMapw"), .value = IOV("QXoLFgoSAKqZRFHiJbGyGTVUhvQdOIczFClvaVfvVoNgiFMJNWJatBTkxrksGYUsOLVwxIUtHJrFfs"), }, - { .name = IOV("wzeUxDUbdrEyAyYY"), .value = IOV("KEscMyqjJvHwRaUhrNjRFiLRrnvSeWsJpUpQfgipCZKEKLSCatAB"), }, - { .name = IOV("bLkgGngJ"), .value = IOV("fKYBgDvWPasYYFTeegcGHyMVJiCYMKhYVsXSTzoptKLtRCVWsBoJGZaybobBJxfSiCBrZQR"), }, - { .name = IOV("QpfXxb"), .value = IOV("UcTEnoiqkRsvTSsoWAbFYBEmOltrHWqmh"), }, - { .name = IOV("SxketSxX"), .value = IOV("sVLheNTXkhbVKYOuJRituTamIdNRWXpeOZHoXeXgmYJAvhmDNVNbSeWKUXDZrzOjKjt"), }, - { .name = IOV("LjHusoGaOXVfLG"), .value = IOV("ZhavOjXdOTfvdBLKTfkljZxBgVopWYbRls"), }, - { .name = IOV("erWFHpRzMXhKnXmMJ"), .value = IOV("oNdjdJVxleYVpla"), }, - { .name = IOV("m"), .value = IOV("BIaCWfpJkFnNbEyMNaIeFYAsQvJSpCgrUqu"), }, - { .name = IOV("AoeYMgSDJpZSiujOYKq"), .value = IOV("ZZRcdjAXeUYhIpCWVyDtJrqXraxrJwAIbPxoazZjfDEc"), }, - { .name = IOV("p"), .value = IOV("ucIinbrLkhKiTU"), }, - { .name = IOV("vqBdIVKgs"), .value = IOV("QYxdiySqCGnHhlXoEiwSQeewxmtBiBjIJskIattP"), }, - { .name = IOV("KIafKcIVLgsom"), .value = IOV("WCZnUJAHIKuTtVXtjrppdugNFCHSRFTSqRzVbLnHBJx"), }, - { .name = IOV("UevAhtCvvnsQXIvj"), .value = IOV("NWZbtOvQsrjdLFrTzxJnMaqoVOnoHjWGUdQPYIvsNftLcbXKHhJ"), }, - { .name = IOV("BKSShpWXxHviUlPh"), .value = IOV("uwpchobemIkluNRKYOFHzMktGfzPQvnwZjwZD"), }, - { .name = IOV("U"), .value = IOV("FRlEfVPpLHvDFiGcHnOuLYWG"), }, - { .name = IOV("ZvbzJNKPeTpniNJrL"), .value = IOV("YtbiCMyQiaVgvQekqFUylfubmsQDzpWcIQMTq"), }, - { .name = IOV("KwCqyXbyBEoxKnSycQx"), .value = IOV("dfN"), }, - { .name = IOV("J"), .value = IOV("eHDtDnyAciWsRMjpNuPdTssKFwHnOQWMElXDTXAYiJiaWVfScI"), }, - { .name = IOV("Nef"), .value = IOV("hlcbdDiZjDnKocpQGM"), }, - { .name = IOV("mLmMjEjIhDGddyHgQ"), .value = IOV("LQTyNPyaNuigyBfYzvSbXZqhkBT"), }, - { .name = IOV("ja"), .value = IOV("hknTakToJFRLnJdnnTnzyMBcPxCUPgQFGTVgoEEmCNcDTrMKlyPqdHT"), }, - { .name = IOV("ZGhAYCk"), .value = IOV("EgXbOeQtZbFrKbkCtKoetwKawFoFxsDvGkZQGIsBDKqfXtETX"), }, - { .name = IOV("PgwWXOKRdKeVC"), .value = IOV("rNopXVEwSEhxSfWkAqCNFcup"), }, - { .name = IOV("TmKyxEESRAalJZIWXLdG"), .value = IOV("JLLTZoWEVU"), }, - { .name = IOV("JAqFoGeuYBdFuAWFf"), .value = IOV("vSszrmcBxupFE"), }, - { .name = IOV("UaJTHLFaVqTPj"), .value = IOV("mcaVXm"), }, - { .name = IOV("tSMWvCGvel"), .value = IOV("FbjxfbDqjMHkdeSWrSsWtnjNTFSMGWkJdsJQHQgWfthIkXtrHHunQkoajtTgOEwhvCX"), }, - { .name = IOV("r"), .value = IOV("vQyakNrnNbdn"), }, - { .name = IOV("tBzjwhdeOUXNT"), .value = IOV("OXKyikanvolQudsZBfzNKGdDDdnRmXsJzEvgYHmsQWwWEzswRCmJBf"), }, - { .name = IOV("JkYRHpZnIqrSLgLaLj"), .value = IOV("sShFxfAAVhJej"), }, - { .name = IOV("QnggPgwMBgNkSezbLup"), .value = IOV("zLPZbijIJLtAtvkiYEQmeaGBdMYktwPpuvVCfB"), }, - { .name = IOV("OLgtTGX"), .value = IOV("MDaBNdgcweWRkILWQaciiLLmTifhPPeeZsRRvFoYfdLvjPhlGoJECH"), }, - { .name = IOV("ahoWdSXDgiaVvDX"), .value = IOV("JkRitLISZLUNvmlVApIqYUTtbVDzSIsYtaYVDliwJjMqVcFeivODMWnOSPUOKHAyNJFTGRMvpCZWkK"), }, - { .name = IOV("Sevt"), .value = IOV("rygUpSjDubzfBHRccoOlhDyhepuJwrklSjHEFtAZsgsTewvjB"), }, - { .name = IOV("XFHTLRXYTBpya"), .value = IOV("mohIelIbiWOgrSYFdSdpxsiqwypQMBtIgDspmRXDGpWqFy"), }, - { .name = IOV("fCmAfaLWk"), .value = IOV("aqefglSbTsuRkwxezBXFBXaskvBsbXXkLIqbkSnAsRMSenufUaiKfrnWPSajuvPgIdwDjmKMuWYLBtO"), }, - { .name = IOV("KDaFEXaR"), .value = IOV("GCViqiAtqiXAjUZirn"), }, - { .name = IOV("DpWLe"), .value = IOV("LTTgGPPBVyHUcXTnEMgkgDOgeDqABRZoRokoeYduvfYUiussjWr"), }, - { .name = IOV("GpLyuIyrSKr"), .value = IOV("gycdbEeAhblSlsnxHXBnqzeHrPhUiIeXvIYIXvggIJVR"), }, - { .name = IOV("ZYovmGsSlzxnqE"), .value = IOV("mugWuRXSRAqCmRdDmycqqTazgsgxtNCRIj"), }, - { .name = IOV("cJVudElWIpJoMp"), .value = IOV("TOGtJTOjpodDjnlwkzTGVhfuFKNCKYgbczvNANycrMvrGruaxrgalnuTYXhTwgzPjirfDQcbSuCZcOTY"), }, - { .name = IOV("UsnkdxeiZzAgkihEB"), .value = IOV("LbITYWgXITMoxDdrMvDUcmXVkjYuafcknUMYLsItHXEAbKqDpFXWiLtQUrMncOCXztTsOohL"), }, - { .name = IOV("KggNY"), .value = IOV("OQRGBPUaZOFtMMBPPeRDNXVCvKvQDbwuaBw"), }, - { .name = IOV("vuF"), .value = IOV("XttgkaPlTjsIvrxcZjsrmSLxiOpJtDeIQbTuokfzQVTbqqeAhvakwllRIlSLEUhymHgoQVHlTFcEz"), }, - { .name = IOV("JWRtLpOSKsIZZYBKgSB"), .value = IOV("WrdasnHcugMkSGvidcv"), }, - { .name = IOV("hZsKQhRRWw"), .value = IOV("EPmQGEWEAzJxQfOzALzANfbelJgbTaTtKWIPpldhIqIURTukYMDV"), }, - { .name = IOV("FptNvz"), .value = IOV("SUwbuXOjWtUGqCCyQNwkFmSWWhBbwgDrwFxvJXrikLIMgin"), }, - { .name = IOV("XVKglzbZDGT"), .value = IOV("vuKdgurBhjjKBerRZWeiwDQBRTKdLNbZjKHRsHwkuXpyDZNOAmwxgRkNkp"), }, - { .name = IOV("privDoEkOtEKypwN"), .value = IOV("slcJiJdQYHisRlfRR"), }, - { .name = IOV("wiuxgjjSDWVi"), .value = IOV("JSyxd"), }, - { .name = IOV("cRZjOwfg"), .value = IOV("NpbBAIzAoHGw"), }, - { .name = IOV("GIDvkauZDGpcc"), .value = IOV("PaEYxYEMOxpiWrajaHRlvoCsrZHRzWkc"), }, - { .name = IOV("PFkuNkSrklQsoZwCvF"), .value = IOV("IoJybLRJvVHqaLopzZzmDPWAowyQwvOOlWbGpHYHVPggtbg"), }, - { .name = IOV("TjgkYKokZkWLEFNKRhq"), .value = IOV("dQSDANFwceNYrOlspxuMhzODDFYXoTYkAahYqwGNIrjQSuYesQnXJpX"), }, - { .name = IOV("HuzfgJSjSBeCr"), .value = IOV("CpozhOOuMAoGVDebVWOJqhXadAN"), }, - { .name = IOV("YnbBdgo"), .value = IOV("UBWnxXGkYXslfXCurjEhESfucmbMlzTWdUkWyQGNNhE"), }, - { .name = IOV("OnMPEvBacdpC"), .value = IOV("WSTmQOQetcgZoYtWkK"), }, - { .name = IOV("GOohBNz"), .value = IOV("PxMOeUfWucjLHWQAHQvlfvyqmQglEdxXWSoaNxFoGNVwLvEFDBlMoVehJfFcLZarDpgDiCLrTtnbMra"), }, - { .name = IOV("nifuYJYXwz"), .value = IOV("dmfnRfncclbKJspHqjpEfyCIvFXIDuhbuJzyyjOvCZEXBYBSZtOXNipuwOSbRhIWWrpQsSJ"), }, - { .name = IOV("YPCd"), .value = IOV("jmfdQA"), }, - { .name = IOV("rsQWFupGUwhP"), .value = IOV("byBNaLpIjJJqWIATBhCHRRCCYSBgaClLmZmvLXUwWCwJTaDzXNIcsjvqXsXupzSQYf"), }, - { .name = IOV("TcEvl"), .value = IOV("qsdUNUFcvEHcjnKfXKCgGixcczQUKNjWbAQXUaPQJFROFMpufjjiQY"), }, - { .name = IOV("NhlCaavHS"), .value = IOV("jeWCwwWfcL"), }, - { .name = IOV("FYjctmCN"), .value = IOV("VnbctPXdzieufdeIQQZMBIIlfRkuYhItDMZOFeFstiyzwEtSnYOKRKEWSwuRxKlfrIeDJPL"), }, - { .name = IOV("GoegJwyRMcxD"), .value = IOV("GTlLWNZORigxRCwQWwaTnXSe"), }, - { .name = IOV("WmwABEYWdty"), .value = IOV("bhloHxJhzUMtyxnOdNQmwWEToNXHpDICxC"), }, - { .name = IOV("adecljEcDQJDxxKe"), .value = IOV("XowcuRUuryMyuoJKOOE"), }, - { .name = IOV("QaCuZeQKDQCKvQTVKldt"), .value = IOV("gfXSK"), }, - { .name = IOV("DpDoXjbpnH"), .value = IOV("O"), }, - { .name = IOV("MyYHEISjZIBiEkKeMo"), .value = IOV("UhXlhqMemmkefzMnOpLhVvuOzPkakZuAUtBZOOaOfkKgNjiIuoXuKJfM"), }, - { .name = IOV("o"), .value = IOV("oxCpQgoSLOghWbkTwGpptUhTjyfjIQCqLTgxFySFXVpDmWLeVBVChastWswTQqJmLtObFoqFUHubp"), }, - { .name = IOV("HAIy"), .value = IOV("djnNnLeYczAflhjytahV"), }, - { .name = IOV("zNAjTWHkJpQp"), .value = IOV("jWwIiKADFYDHkrWSAbiiVkWuPtANOPZxHmWlAS"), }, - { .name = IOV("nZfYdBA"), .value = IOV("UnfJVdhCBBwYOwtRfCJrRFJhbXTIVDGAzcObLlbZXyuCDbWIZnvmFaLDFIugjTpqo"), }, - { .name = IOV("ZvLDoAfaOlynCDM"), .value = IOV("ldqucsoPDvSiwPSrdrcYpooUTNCsTaeltLnbpPbvskUbXYaBLRwQYiZOMwnjQvk"), }, - { .name = IOV("UNKCXpGHzgj"), .value = IOV("GFgnhiyTlwRWlrXqTvmkhdmcWTvzQVrfPkeWTRyrdOWtoRtRJbbYSfaCgagS"), }, - { .name = IOV("SSjSzVS"), .value = IOV("ZmMNDVQkexevUlpGGPHIlDPlUiYrtjzpdokwoukvvHmqaCbFXJHdmmdnuevwuclTBGBZrBJGicBGKkmT"), }, - { .name = IOV("SHKqYmlYzHOwGFwaYY"), .value = IOV("fwjVwPAFim"), }, - { .name = IOV("Wepyzj"), .value = IOV("wgFwjHUDndQuIEnKrjVpQPdpOzvuQIQjuOmgfcpEprqWOFfGjAHGkxUeaXhoJbBAubuYaKh"), }, - { .name = IOV("gsyzGySiNhRZkkq"), .value = IOV("ntSWFbgzCjBIWZjgbNDiwfEyMndAGPNxxr"), }, - { .name = IOV("pXgS"), .value = IOV("ELYuTfuDewQUiJwCyMCdXkCLJKuRrIZDAKjPcigZb"), }, - { .name = IOV("L"), .value = IOV("XsZpOfZssLAjqTUQLnvvckWvOqfdwrJcIZhxXNveJAuSK"), }, - { .name = IOV("CD"), .value = IOV("AsrTtnkXTIoLjJUfIxt"), }, - { .name = IOV("uChagYDdRWEiozGKpxW"), .value = IOV("kYjDvuZfhyyuFBaLRAwfbCeObeZJSIYqKHoxaZOvBXjIexyWL"), }, - { .name = IOV("AJFrN"), .value = IOV("UrwJ"), }, - { .name = IOV("BbNcVRlDolONqL"), .value = IOV("y"), }, - { .name = IOV("PIppyNBc"), .value = IOV("tjodRNZEeujSyDccqyybiVsW"), }, - { .name = IOV("PSYDC"), .value = IOV("MXFUObmwuZlmRufCOjFM"), }, - { .name = IOV("nI"), .value = IOV("FPpZucbMrNuZLGgUkHYIUe"), }, - { .name = IOV("eBoySaY"), .value = IOV("thGxWsULRGoGmJf"), }, - { .name = IOV("YRnZHgvmXMODrjsS"), .value = IOV("LYmiZUvMNEbjkxgDhuffkjqRoQsHptG"), }, - { .name = IOV("KegoeI"), .value = IOV("FfuZnwtPfZNzplFUblrumjmBoJyMCjsQSdzWQHegxPwONyYVmCOtYevHIfZ"), }, - { .name = IOV("NncyjHchBfdMV"), .value = IOV("ElSIDqlMQlmPShjwSFaFFbtoUoufLVoAKjTFRorkgpSESBed"), }, - { .name = IOV("YkrukXAD"), .value = IOV("DGlYYfuAAQxtxmgUoipBnrloUyGTTbfIAOPfsXhNRpIHXZevICRfSGMTgtWqOszTTdyhQirucUkR"), }, - { .name = IOV("taDWiKsrsiw"), .value = IOV("LtpNALBVCDcbHkNCOoxhs"), }, - { .name = IOV("zsgszhFrtQiKDaUtIAZo"), .value = IOV("RKUsdwvZzGiRcJjqrcfkEEgSjqgJEMrGvJJIUVhXWhqhdjwtoGrjStFyMrkoHLQrAgjj"), }, - { .name = IOV("HkRee"), .value = IOV("ZfuiOqmjHfoixfNzlhjLJxTJlIvpWlnMof"), }, - { .name = IOV("NdrxijhMofUABGQ"), .value = IOV("XSRTETKNaWdmCCtgoMgHcmIaJoFsOBItgthVTDDBGKRPGMKRzhpHjbqznHagmfRHzFjRKYTVcMCOOoT"), }, - { .name = IOV("OYQjuClVcGFgNxfIaeX"), .value = IOV("bzIKrAgtKYhSlYwhqbLzcpEejxztduzUwaqSNRwTjmrgE"), }, - { .name = IOV("wvUpZ"), .value = IOV("EwFZxrpjiXixPmSKGVwJUePLtGtWmIO"), }, - { .name = IOV("PkJFmCvBmHa"), .value = IOV("tsZlaG"), }, - { .name = IOV("S"), .value = IOV("AVLDDvKNGNVzMPgtUTwzXEeInMUFGioGIzJKGwooAwcKnnYUnQDUMalAfJLdGswqpVhBDdgnKvW"), }, - { .name = IOV("wwiowYgGhfm"), .value = IOV("u"), }, - { .name = IOV("IBQIfcTbupnunzc"), .value = IOV("TpEcRjPmwAIvgYwMRzJPkIhbfSmcxoMRMFcyNoZMMUfNUQptOPZzEfJmnjAoHu"), }, - { .name = IOV("tUJcTqWw"), .value = IOV("YAQnArfaOhnpQPCGWYEEVTyxeucpwSKmnhihIcYTtupBFO"), }, - { .name = IOV("tKMiMppXinhwwjxz"), .value = IOV("AzjTrWheCHkCpYJwXvUOJADHHJhYyElwIXsS"), }, - { .name = IOV("NcpgAsXXplvk"), .value = IOV("vKwqV"), }, - { .name = IOV("mZKffJcPwqgLvVLy"), .value = IOV("SADeFBojafTCcIWXuCzhRzHVMDEUFtnepwNBtZHumtTteziIiRLnFNEvVTtEQvAQQHwfpdspxygYW"), }, - { .name = IOV("FOHuIdZTtfMGMJv"), .value = IOV("TYiWjmEXPlbQggxqTMMkVZuiWxBDAezIYLLNvuiSzTY"), }, - { .name = IOV("mGCgTMwEnorc"), .value = IOV("EPTEHjRPQNxyEJjUlFlXCwxNSadNiCsitBmvIJEGvuAiGsROPt"), }, - { .name = IOV("ZoMTmCsDq"), .value = IOV("bfskfmzJcYpBONMwBCvCENOxELtHJNzTeQCgRm"), }, - { .name = IOV("bXyCNOpgRsx"), .value = IOV("ZoWrSOFLDJi"), }, - { .name = IOV("xYYrtWZPtFdx"), .value = IOV("SZ"), }, - { .name = IOV("kYFeYMUsFPUX"), .value = IOV("EagaGnVEk"), }, - { .name = IOV("g"), .value = IOV("AGNXNbjbyzZrFDdzRDRmcgtXHdbdQCOmcsHsbWrKJPoCpDVEhMleBpEiufjkGgNNFh"), }, - { .name = IOV("vAWOnzAWrsGQALzHsEZ"), .value = IOV("moBLgGkCvyrVqtAaFIxNOZFlKRGxznxoNykjRZeTyG"), }, - { .name = IOV("shbOLWLsz"), .value = IOV("BVqtUHZZMDSJwwMckPOTBYXfdGWvRuepbHVaJCwCPxMukQKWgZmmsLYovQAgNCVf"), }, - { .name = IOV("mjbzYhKOgs"), .value = IOV("KOZq"), }, - { .name = IOV("hHVmfLDhcTnoEkLu"), .value = IOV("LwEQLNXBIzaTLVUaybbaHwCIrrzMSgurVHhpWdpR"), }, - { .name = IOV("EYAXkwX"), .value = IOV("KGYvicfqmcsDkYnyHlrLd"), }, - { .name = IOV("ek"), .value = IOV("ttdQFoOpqvAjPqRlPXswVcoLfBbdxKhvctEmYOTQJzcBk"), }, - { .name = IOV("VmgoXBzBq"), .value = IOV("dsdxdCUwZjklQcqeTYZuJjtQJCR"), }, - { .name = IOV("vVAeYaNGwEcvfpNGWd"), .value = IOV("AkDmldvofbqkGGsMQMvlP"), }, - { .name = IOV("BuqZiphYXdSHHLIi"), .value = IOV("zrsDLTxXtSDMEUSfnhykdKkamxHxrGvdcdhWCNVRtbEB"), }, - { .name = IOV("qLXaoDZpBQa"), .value = IOV("VTFXu"), }, - { .name = IOV("PsnhHFQlZuxDVGJbb"), .value = IOV("hOaJofFsSpriNaiLnCOVrDozuAGeCfHUYnimhFpxgfLjejLYhrWLYHMNMGBqfOmS"), }, - { .name = IOV("ItEjOnsdVBzDSgareteE"), .value = IOV("FEqZoyCJXpPspOrygnMJpKdPqaA"), }, - { .name = IOV("ljsgCZCIuavhS"), .value = IOV("qvbtCYrLZyuiIzvRoUvHfzCoKAFgneiciOMPdBAdGrfrKABSGXEyvCCArrkkNzFKdIRznpnKBWyL"), }, - { .name = IOV("pqMsQFHkjySazuO"), .value = IOV("rKYHILkJMIaRoJhbMeem"), }, - { .name = IOV("TMJy"), .value = IOV("SlOPRDGbjgxWdwfyQYnQgGMrqfkqclcNDESaDEnrdycsdmbMVmtMsNEVZhjpqxIxJsYilaFSdtz"), }, - { .name = IOV("kzSiqvKlHfvzJpxHVrM"), .value = IOV("lxOjtdzHVKc"), }, - { .name = IOV("wXVFzwcDwjJ"), .value = IOV("TSNaPsXynrVRbOZskUKgVhYymIBQzRDcuiVqjZNjWy"), }, - { .name = IOV("EwMax"), .value = IOV("HuFMOKMGiZqlOkREAgwpFQmwryndFbxTDqytBhdoukBlFOFFJoHeJvinWeTTOsCWtgbp"), }, - { .name = IOV("RYgcDpzRInggnSCKXqY"), .value = IOV("FgLBRduMkboQuOJOX"), }, - { .name = IOV("uj"), .value = IOV("ugkinfqVKgvmKbxcBiNGvHtEHwmsDodNLwXxgXcgklJPXMvNzUmzCozckSNaxyPPscaRK"), }, - { .name = IOV("GMrnVTqL"), .value = IOV("ZYZwNCZoTJMnHEsbBxlnlngPEfVdNTpGeiDHxovYDDgVrcLSh"), }, - { .name = IOV("CkmClzAvcQgfEcv"), .value = IOV("WoxnqLWOuYtyUqlhZjNHSjSSWIsLkbUBSNEi"), }, - { .name = IOV("mmcQTUSEzeFyoU"), .value = IOV("xHMbHCPzOSqfpYtFKWGOuDHSgZibbZHnIewpwYTtzomvhwYebcUAUCdfePpJtYOYFpeWzKIOWFTmoZUx"), }, - { .name = IOV("ouzwjIgfeJGwaHvl"), .value = IOV("sTbBvpf"), }, - { .name = IOV("pFxTB"), .value = IOV("FjYBxvGtihWSRrgHxLeCbelrHITDACvgLgqqxTVTZX"), }, - { .name = IOV("tCeGdxfRaA"), .value = IOV("ErZLjknSGwbZTEXfCahtHWkOCXtsNiSuIRoGOqMgLxfTmDQyyEsvkJKyZwuG"), }, - { .name = IOV("NuzUrBDAqzJnkVBFtQr"), .value = IOV("UGWOjayCUqjyGfsbHmPShSdOVqAQfHnfkaKkfGLLYkxrPBXWgeHfoTFc"), }, - { .name = IOV("MgTWYCdU"), .value = IOV("NlcBSATCVbf"), }, - { .name = IOV("lilJcDbtNiefxPLGU"), .value = IOV("VXkMbOFDpGMOunvPFNLMHFcQKktnbTQEiIojPuoKsApdjyeRCBAWCoXiOnGZtZacFCM"), }, - { .name = IOV("PVCBOPMLTcSdtP"), .value = IOV("zDardxBPiptDHxQNekDJuOjJJfOAMJOjanhTvhUZzYalEJ"), }, - { .name = IOV("bUMQnMIlUyKMFCRtyNIo"), .value = IOV("XoIyscXIaUBQOBvPmNCSnvOowrLplnIfzRCzDDbKjyWQWoVgUtgOIygdDJsAWVSIeLBKtvSqE"), }, - { .name = IOV("ogXksbxohK"), .value = IOV("LkJbFBBPNDoaXQwLaaruIJZCEXICMxHWFBBInpwNjyqdH"), }, - { .name = IOV("TxPlHcUhAWLK"), .value = IOV("EmPJIMYmkJZqhoTVsUeaecZlWcizEUaaNOMSeZDUY"), }, - { .name = IOV("jd"), .value = IOV("SYpynnEVlfJP"), }, - { .name = IOV("XbdkGSGxenEbxGLrEqu"), .value = IOV("vNmtMBqMPUwFxwOrvuqhXakwBdFVQIgtUuQdFGBuPSr"), }, - { .name = IOV("nChxs"), .value = IOV("vxdiWuuEzebZsUbttEoJOaSMjJBEMrsUnvXlEcbWcbfSzzsXb"), }, - { .name = IOV("NDVmoIjH"), .value = IOV("BlrqXioGfBeDMqLYljhEdA"), }, - { .name = IOV("laFrIvDireXZVlOS"), .value = IOV("o"), }, - { .name = IOV("aKuFEnyMVO"), .value = IOV("YIFtJdOFgPnglMoPfbnMKuYpd"), }, - { .name = IOV("DFBFbFPLWwhEUFjkQPEG"), .value = IOV("RYJIlheTnoCzLJhJxsOjhMITOZKTDJkxzJXEiElStxtNREzUEuoUJiAIofhZtLOvWiV"), }, - { .name = IOV("YjYX"), .value = IOV("HIdqbnJRQKvmmDjgLpUjVrJQcLcACiqOzcnANvDbaOSSszoFfaclzyZGvXWahXoDcVfJRmwN"), }, - { .name = IOV("xUovn"), .value = IOV("dxjZQUL"), }, - { .name = IOV("SXOfvrKcuWoYliooblv"), .value = IOV("WCDXpIOetFqFS"), }, - { .name = IOV("SpknpzdXGvnvP"), .value = IOV("fzRxhAGiMRJJVYCZZfOAKOwaQBILkDyFkM"), }, - { .name = IOV("BqhpqkHgOMwsQ"), .value = IOV("wVGZkIrncbYTTZeYgVUSxHAjWTiROmvJrNTiJXTwUtYIiWUPAj"), }, - { .name = IOV("pROneafRshMTfdHAUS"), .value = IOV("RjYbffLXsoCysahwMzFEytDIGHahQl"), }, - { .name = IOV("CLDYStIZj"), .value = IOV("aIufNqhxTAOwWBqxOCOgujojwKNbhopitvktjPkHuXSJBCkrCoivDNyoiDEPkPttzrBBlRll"), }, - { .name = IOV("PcyeFudDSzEXh"), .value = IOV("EgyDHxbDjljXIpcvcfdEEIKylYOPRkihMkYmhHvCOKNxmvHhfHbJ"), }, - { .name = IOV("SiaNwHWQZEm"), .value = IOV("WBi"), }, - { .name = IOV("awAyZDBMdaUmer"), .value = IOV("BGIVShTHCZDbdTlPVzMJQuMAskNgaTlPLLtDNpMmsooaSJfFhDMOV"), }, - { .name = IOV("XA"), .value = IOV("AoXuhxBuAaaPcedRBhrKDGjEdUIaivOsgIowzHxlYGXXPqIuJAUovENEuvSwb"), }, - { .name = IOV("sPeUJytSdnKt"), .value = IOV("eKKHEhznRmoOsEKxhriEEXLrLCODCpjrMsHxRuM"), }, - { .name = IOV("AdMdjmLlnjFjLY"), .value = IOV("mwVHQXRMvTOLPhrXZaGhjuKKHPgXjZJRUwTzo"), }, - { .name = IOV("CvyU"), .value = IOV("rxmTBTGoTShIhZMccIUuMsXmJKOxnZoseOMmobPZmfGtwtdXIOsFu"), }, - { .name = IOV("nMZgKLqiWWOPxcH"), .value = IOV("ODLBdfIQYvoYTgjbtEIHMjGEIbYMODyPYPwFDcXszfYIvIzslQtKEEcRpWYnukJqrQMOrJecd"), }, - { .name = IOV("lTaOqkZjeOKVvVkEkM"), .value = IOV("FYrRX"), }, - { .name = IOV("w"), .value = IOV("WGitGnSAnrcmJtvXNqPTHoQbjJvclZJCQRKoDmgn"), }, - { .name = IOV("wdiVqlrMemGZ"), .value = IOV("MeCUwKebeFJgYfwPGrVTPeWiYVphNLQzsyVnRpjllocjKVmlftaQaKBJwDweoVosSAhPV"), }, - { .name = IOV("tdmiNkcHsIcGTOKJ"), .value = IOV("nbajyQYgSN"), }, - { .name = IOV("NmuhLtyWfSPdaEmhLHlB"), .value = IOV("KyER"), }, - { .name = IOV("HtogxwylmiC"), .value = IOV("OjKYPtqRjCeXXMBjptbxTUuokCqkOuvDwTrwaQhHlzkiFGffMIIUbOICLQUeiBErEcog"), }, - { .name = IOV("inwZxfSLl"), .value = IOV("FeBbDTUZHJnNaYaAfDURpBQIKCBzlPBB"), }, - { .name = IOV("txIZfdbVWOCcSs"), .value = IOV("aIMpzdYSbxGirTtCJdNeXJSDpQQkYVNAEFACMdE"), }, - { .name = IOV("QY"), .value = IOV("uPfkuRNoskHKwNhTEgUhIDQ"), }, - { .name = IOV("FZmnuZSfIxqzMlzqYME"), .value = IOV("VWTyTDMvThkJeHvsDZhqHpMPWcEe"), }, - { .name = IOV("EhFBeTdudZLsQjqL"), .value = IOV("IGfkPBblOTIjkaDbtMnAcgxwmMubcKMSSqUuNUSmfUBhqUftyQNufehjceVRLQRIjcV"), }, - { .name = IOV("xfNLoWALvzMjKGJaL"), .value = IOV("lbRxrYD"), }, - { .name = IOV("Gzy"), .value = IOV("sBLY"), }, - { .name = IOV("LjAmoUP"), .value = IOV("PwMWIVGpizHcNKCMOUtcCjnWoPZrTwTJmEZClNP"), }, - { .name = IOV("OpaaDLyncLZ"), .value = IOV("TLoXwBCiGHcFoYoSdzJjoDresQafnhggNIwFZJrlFQZbMRLYVDuBmzEwpAJuWNmi"), }, - { .name = IOV("GFHqnaf"), .value = IOV("CqnpTAdimiuMvqTd"), }, - { .name = IOV("lHuCIYuEg"), .value = IOV("BMvKfBFytgwBBoicCrVrwJntbKflLGRDIyBwBDTijCxhctqGheCp"), }, - { .name = IOV("VaHFL"), .value = IOV("TIhbarWmpcVJTsWeVhXKVmBZqPQzFsecEm"), }, - { .name = IOV("sadlo"), .value = IOV("ykOvQBSniJOSMArDmdIHgNfWBoFnrVdOJHDllPwDLAmnnpWuuVjJTgJXxMAKCXVeoTPmFmbfHq"), }, - { .name = IOV("jQkVRUNsvLlkXLIv"), .value = IOV("XvcxDWubBfwF"), }, - { .name = IOV("vuirJIErjCHUKPnDD"), .value = IOV("RZsdkucvtHeeSBbJlpVVqKVXFPtJWPjxakRgvsDUbEmgfJsxGGwIpDeZNUFFhwflZOHGxNCmbn"), }, - { .name = IOV("AFEINpmQInbfw"), .value = IOV("qTqipGFkikgqaEleGfHtF"), }, - { .name = IOV("zjyMNBvvYzcACasd"), .value = IOV("kfkJPKoDMIhHxmwKFdVshOOAcQoNPsbYFLhloiXmt"), }, - { .name = IOV("zR"), .value = IOV("qSmpmDypGFIGDnlsrNznkNDyQbkVYxbnCDWtRVZKIlGHjteZY"), }, - { .name = IOV("BtswWNFX"), .value = IOV("NpIfPWNMJrCwDKeEcvCFjertbWVbkrKCftUiRSMWncOiZekQHUQSOd"), }, - { .name = IOV("pClGXWKnCjsEMVGI"), .value = IOV("KFDaNIMlAHJjKFadXEOQOEEWdEEd"), }, - { .name = IOV("TJkyoIzMOKWR"), .value = IOV("rnYsgPUVGFKggSsxnPJseyXCbrJO"), }, - { .name = IOV("UFsXICkzR"), .value = IOV("YbrNOcmEIZMfWLseEDlNYTsylzHnGFLWjfwaBkypXh"), }, - { .name = IOV("DaicZTuoCUurc"), .value = IOV("TCcMLGQHjNGZxIWRIeXAOMwivndenepatoFmUPJXmhzLQouiSziTBgruUDtyMajXjCHmRiJCalXwlRrR"), }, - { .name = IOV("HrwDik"), .value = IOV("R"), }, - { .name = IOV("UOpxpNjSSkXBYjEUxDLp"), .value = IOV("hzjgGviSpzmGuSopNYcR"), }, - { .name = IOV("wrPqpbaoiOoVVgJu"), .value = IOV("sKaQNQEKFymvAEsTWFzJCJWqpgALSIABZzgDSKSVGBPlFAlFDEM"), }, - { .name = IOV("DcGufxDpiNusoCxEnOCm"), .value = IOV("VWNWpidhJZcieeXYJWCsbcGLzeJZRVjauPWkrHCXmnhUNonwmkXJnVcQEhkZJTVMoOC"), }, - { .name = IOV("JLGrhDAg"), .value = IOV("puvXCiJYAxRgBCQxVJmgYaKqkHUjpJbFhszOlyQLbZwynwaHDLNfbhcHYPvnWj"), }, - { .name = IOV("kSUFWcSTRZ"), .value = IOV("kJsKTkSt"), }, - { .name = IOV("bAuzJMBfO"), .value = IOV("ZRtpCtPzDaUkwgjKoGjLLqoAJDrSOeahnakVrhfhuXnXZAHRsXkOTOnHfUWXgdhAaEvtFbUY"), }, - { .name = IOV("OFHa"), .value = IOV("DVGmnxcgNHQzjcrAObRpyquDLcRosuOUgBJntwjHXfRibVieUHtrkYtwvGzeUPaHJIAzq"), }, - { .name = IOV("knPvdMIvY"), .value = IOV("KkQCUPgMfYmegarLFGiVsnNPQlY"), }, - { .name = IOV("GDtNgakFXSJgBeQmWhB"), .value = IOV("JUDvfvMUEMNhAYpvcWNSSeAePxUiybANTqrHpHVSewrnBCJKuCNMxXBoVygTIHoPPRVHNjCUOyPwLsoc"), }, - { .name = IOV("G"), .value = IOV("mOtPRotWbFuDBnKJJjlokRoJuYoegAnBRle"), }, - { .name = IOV("TDTz"), .value = IOV("wRXnNtkclCNJSkNaCBlfFIZhaOsmgsXhOncXaHPYoNLSMZxRtpxpRCsFjd"), }, - { .name = IOV("HoxmbSWHrJ"), .value = IOV("TANGekGJdXvdGTIlqZbSIdrmVylPOiff"), }, - { .name = IOV("RXsSbxMOjjJozqdLGs"), .value = IOV("zERFYhjXuaheNcRBfLSKntFfRetAHdQFCkicrkoofGfDpEeLS"), }, - { .name = IOV("pxFQTkruSUVtMLSY"), .value = IOV("CJhoXqGNmRemePXASAJoqBtSjxIBDJNUYGVYoADvTLJuEfqrrSPRrDkdUBHGeXD"), }, - { .name = IOV("DLRheNdtu"), .value = IOV("bsYgAAGdXtgvicTKytktgdONLBrtyMheGRzWGdnjZcsuwJUskXscQPWfPrxDhMdkeQbbC"), }, - { .name = IOV("jMlmkFVcq"), .value = IOV("lQAFDWslWwHYeOchFRDmsuwLtfLsipIZXBRfwthoWpUe"), }, - { .name = IOV("agstRK"), .value = IOV("DQUiaYtVbLnMyYW"), }, - { .name = IOV("eEdLF"), .value = IOV("iSvfsgXjBokXhUojCGZteTNOKSrciSMEiZnCiYeSCTKqrLtFjnrRDNTkDuiwwwmNTqiC"), }, - { .name = IOV("cjYnNhZPYbSv"), .value = IOV("hDpzSdLlhnQXAaJkQggzrLVIZyaADYBwVwhNyhwGyondWksiqxdU"), }, - { .name = IOV("hgxQyVPnzT"), .value = IOV("VIRuMNssWqWLgdGnuPN"), }, - { .name = IOV("xJwdyQehlYcJOt"), .value = IOV("WpLhwRRzpWJCTXAieHxWLUpYdDLghuZrSzAUEwaHyodxsOZetuAfZgqT"), }, - { .name = IOV("wytrETZtKSRiUplaG"), .value = IOV("QOAIQgnIXZpFSFcsNNnOrApOfWnpPSOwBPRNtdIxReV"), }, - { .name = IOV("ufwu"), .value = IOV("SUFabKksOkHUZBClEZqkCsIfFtXVTXkkkg"), }, - { .name = IOV("vh"), .value = IOV("ITLCxMzqlZLtYARli"), }, - { .name = IOV("pWKpSXMNEECGMNxUIZK"), .value = IOV("DKQfpG"), }, - { .name = IOV("JDHmRmvZZTEYRRFF"), .value = IOV("mSRrvNriHsZdWCcGThDkRMisKWdDlSuIjapEBQScCmwRfPcMfxXbCMaTIPIvTkjYQrWb"), }, - { .name = IOV("UxpkRphmMZPUuSct"), .value = IOV("hVzKJSzEsbEXMPZbVXsZvUOeEVnlZrAbUAEFfeTVfrReZyotacvCLvqPghJKrkBYmB"), }, - { .name = IOV("DsoQZneeAOcTCn"), .value = IOV("Hdd"), }, - { .name = IOV("HLm"), .value = IOV("BLCAciQqMUmnnLc"), }, - { .name = IOV("aqWKuBnz"), .value = IOV("cbdsfekVdrQczCeYGrTItRJtsAsKmVVViNsaTZokFghRqUWlkiVjSXLynwsceEhnnsf"), }, - { .name = IOV("NC"), .value = IOV("GGkQiEKvCQXNWcDkXOlYlRxHxZUdWhTIgKQcVXEaglpKGLtFcKxNGSfMRNGY"), }, - { .name = IOV("wHmhy"), .value = IOV("zAHcSlGmISSzyPtlOrUCMwgXEOfLBmSgwdrXzOzg"), }, - { .name = IOV("OYAhmAGyK"), .value = IOV("GEQGsuigFlmXycjPWZNPTvjBeuikMEPfvfrdhlfUbnDMoputdWmimFIQotNKHMaRs"), }, - { .name = IOV("enmjqrGk"), .value = IOV("u"), }, - { .name = IOV("xvuNuwvsswWLNOD"), .value = IOV("tiSqLIxTYeOPCseKneBQhYjBnSmLPuMNjTwxXbtZMJXOtiLwpKJWHOIJQxATddN"), }, - { .name = IOV("JIXgLH"), .value = IOV("RitgoACiJtBkVkPFLiNTUJJjWDdNDBvVpVmDchhfxjJDJmaEzOzIsccMGzLUhpRBiGDsZsx"), }, - { .name = IOV("wHjbwgjec"), .value = IOV("RQcYcwWEuCKhUOpjcgpRYcqOSTQbXD"), }, - { .name = IOV("QmhMSvft"), .value = IOV("gLONOAQUEwPaIyZswwtYykAqnIUONscMYyisWoaqDYbTqQDnjMZxSHRPTVhsgZZUdrWTqQrQH"), }, - { .name = IOV("gnnqTOgtr"), .value = IOV("bFKSPTDHegbuoeVnuXlJufJZZstYbktdimJumHD"), }, - { .name = IOV("Nul"), .value = IOV("cuszmbNnfssujAuECV"), }, - { .name = IOV("NtJgQzYfVHAZgSg"), .value = IOV("IKGyzBHyWArvYsgLmHmEPNbsFVbO"), }, - { .name = IOV("NeNwT"), .value = IOV("OpUtpYZuBbW"), }, - { .name = IOV("nDdEDNek"), .value = IOV("AtUsHiyYDcXAGMDxKYzUVkqHNKfejbTMYkmxHvu"), }, - { .name = IOV("nomrbdToN"), .value = IOV("BxkXYNmMHDjGUufU"), }, - { .name = IOV("OyzGSWWJAiLSTXdXe"), .value = IOV("paraXtFcjYlRApIuUFbenFNPpeUWlgQmsRpUJKirVmLpwpznvh"), }, - { .name = IOV("UWTlscIlYSlLgu"), .value = IOV("rhcxULTgKdYnEqsDyZcnMRzbYe"), }, - { .name = IOV("YwFizr"), .value = IOV("SHLZJmFlXoBDOtyQGQBZrdyEXbJHbFLIQyFdv"), }, - { .name = IOV("celUXMTNJw"), .value = IOV("vAuABGRHAQoqPIiavkXVMqElwstnolNjrXPbHycfGPZKOvkDGjzqfDcFunODJtiPc"), }, - { .name = IOV("ZHvaKZhdJRAZHqg"), .value = IOV("yfyHMMVmoVCMRyQUvaUWkScNrTBRyIDchdLtaDAtBL"), }, - { .name = IOV("bRoiUfwukPwbDwOS"), .value = IOV("cMcRlhwbTalpRmuVXgastqDGUpTkdn"), }, - { .name = IOV("KuiVvZRZuQyb"), .value = IOV("RAcRdtSEFEUOWHLDTPPGfGfbnuHMMaDHOfIkzytHEHuNZHYWTKGkZbxtH"), }, - { .name = IOV("crxkEkSpDfAZ"), .value = IOV("VnZYalWOSLVhdEswAyddvravaDscyMOtJUQWZDfMiHMxpliVUhSoHlROFaPeYderMjnbSosvlVrbocZ"), }, - { .name = IOV("hNL"), .value = IOV("RawdBhnPWERi"), }, - { .name = IOV("uyQnTMJxiyuZr"), .value = IOV("TRv"), }, - { .name = IOV("omFSN"), .value = IOV("aramrpqXcBtUDKGIXTGXM"), }, - { .name = IOV("gSvhXOmTI"), .value = IOV("XyxGEKDCOCqgSyAFaeihXPnTFxVUsfmXTtgOtDHJFhkmXuaEcJpnD"), }, - { .name = IOV("CArefTrs"), .value = IOV("IjjZPcMhLurpXmrFg"), }, - { .name = IOV("gGr"), .value = IOV("KGH"), }, - { .name = IOV("ZuAaOP"), .value = IOV("kWHVzMeAOXHzrcvMsEhjoyjaPCwGCrLUpzhODTHKmdyMyBVJDykGIpnCrrB"), }, - { .name = IOV("fAkA"), .value = IOV("QWNby"), }, - { .name = IOV("UQhUnzUBrEPb"), .value = IOV("LOiOLyrBjDIPOYYaOeKZQVeyfVmjkxPpTINXsmIfwCbrMiLvFQtVqAhRYUYuzNuaKCYVxIKAz"), }, - { .name = IOV("PjIIrl"), .value = IOV("qKUNVWrVshOjFEZCyMBVjLGdfhNTIz"), }, - { .name = IOV("mOeiFPEM"), .value = IOV("laCrqSuLhXTycQqjiLKqhLFHpWAvcIFKrYBImuwvdLVzPyfGSKRMHmlQIKHsTo"), }, - { .name = IOV("WUX"), .value = IOV("FTyIkmIiXiqjMhRd"), }, - { .name = IOV("iuwbaeuNJHvNhFCXtZ"), .value = IOV("jQABqiKDvZQsnIzDVXVYYPYCkTaEHdDaUpKtpOsFxnRiecmfrfFCFBflEYQFFhrqDKzMJBaAc"), }, - { .name = IOV("zNotjtzhoMtkmPyxQjuF"), .value = IOV("cypOBcR"), }, - { .name = IOV("MaPTQdgkvImroQUjSfFh"), .value = IOV("LgvoykAlumSevYuYHcjvqeOARdbSzj"), }, - { .name = IOV("mjvSBIcuW"), .value = IOV("vURMNfeLehTppBzDn"), }, - { .name = IOV("VEMKEibYHm"), .value = IOV("NFzZSyQoKuoLbU"), }, - { .name = IOV("AFXlvhKiXw"), .value = IOV("qdMiIAOuokqvdFPdT"), }, - { .name = IOV("KDsB"), .value = IOV("VaaxPEbpMvcXfvKatmsuAywiZhRTynnxSBDAgAjQDTwYRUcgCHdjsXkBxAbrPEBAZGzzUohPZdNKJIU"), }, - { .name = IOV("uv"), .value = IOV("rGggEyiwFsirwGvVuFLQNwbnlIpvqLDRCPvhtdWPMdtBLraoJjymdgvroMiuGRFQfWdLWj"), }, - { .name = IOV("IAqczrCsQ"), .value = IOV("TcTWyzo"), }, - { .name = IOV("ZxSgNzqXYwlu"), .value = IOV("WmHMRhIVJlaZKEmCQkWCela"), }, - { .name = IOV("YcKlLsCWgEtpLJEbusH"), .value = IOV("FfDDPjAvjgqfyAgLthl"), }, - { .name = IOV("jLkqDyqXVbwIrfxczwYQ"), .value = IOV("eHGoBVSIQlJY"), }, - { .name = IOV("RqNeF"), .value = IOV("yGQlLeU"), }, - { .name = IOV("mSxGPacb"), .value = IOV("uCtJBBmXazciRAtEsUIADKppRtbVYqsHeHbmTytoakmvqgYyuQaRxuL"), }, - { .name = IOV("JanejOMFzGBhrCuJgs"), .value = IOV("PLuVkQHBDDco"), }, - { .name = IOV("ROvfdUCmCDC"), .value = IOV("pthNmNZljhCwYFmSnnvac"), }, - { .name = IOV("hMuUZHSRNxiz"), .value = IOV("zPCjYEeQB"), }, - { .name = IOV("s"), .value = IOV("itslftswvQdWuLwbfMnJuYfgHYcGHLnSDMXfPVonDUYHEsC"), }, - { .name = IOV("AmqMZNBdRpwkKf"), .value = IOV("YNEiIwSXKOgRZDWo"), }, - { .name = IOV("VOFueclcyBwyKaKw"), .value = IOV("joBzcmdzzbVuFFGIWuSRDwiapjZBZJhpzelpfGykgPDRGZPzJikyccIDokLdyRe"), }, - { .name = IOV("EdGXQQhbxtje"), .value = IOV("CqtlazNuJgd"), }, - { .name = IOV("DRB"), .value = IOV("chToziZnVBxWVyMXxcg"), }, - { .name = IOV("KIUKZMNlQYf"), .value = IOV("ttXQcsVuCGaApgJwkBwimuYanhjIwbMHMxDFGnXpTPYMMzrGTGLbUHaAxCnkbNqwZbcRDpALBEVIssa"), }, - { .name = IOV("SKICgadPxsWL"), .value = IOV("uWHQZByYSFBkIEiBkkwoBURSCVjCAgguKbKjNucEq"), }, - { .name = IOV("rnwtdqnq"), .value = IOV("OwNGAtfSvTxXDvXERuylLpvrCCCQSiGX"), }, - { .name = IOV("ENAPpok"), .value = IOV("YaaMIvnhXJRnNaUYtDvALrldWpsLbtrEhdFVtBgfA"), }, - { .name = IOV("Iukc"), .value = IOV("qPShmohAsmVgNSxpfrOkGxUGJxbybKALfXJxTcbMSTKUgwWiisPKufULlvwBmvOiuQL"), }, - { .name = IOV("slxNJuvJDNh"), .value = IOV("ghuaEQjOpzvP"), }, - { .name = IOV("DMJs"), .value = IOV("CkYyAyadNRxVBcLSMjJuxcJnfBRcIPvtuHkgoEwNtgHVXEnRWfeVuMDRxjQGeOGV"), }, - { .name = IOV("gLMRVyPreDkCmnfHhz"), .value = IOV("MHaPChvQovfniWIjSVGjMRNUvdRXcmUaMpMquKidPsTEUVlwzXYiXqWrrMNLojRTEQWTm"), }, - { .name = IOV("Ij"), .value = IOV("JYgHFiBkGZKPKrJTJX"), }, - { .name = IOV("fEumeFytDSfoTJ"), .value = IOV("YlbgDsHkENYPjXBGAbrCwyRSmEVXQLOfEqGL"), }, - { .name = IOV("qU"), .value = IOV("sAVZYnxmtLwqERTICUNJJcUdEgomoiSifXCOMjXMQTwoIprHIfebQNNwEpdRIRzXmUKCMR"), }, - { .name = IOV("BDySMEdtKEcDdgHJm"), .value = IOV("RHtNCpkMBnfbcQhPWdVrlZDoQLiWSocdrJeYFjRsMuGeGwoaaFVtqETukfNiI"), }, - { .name = IOV("SlHPFPkSmcEgByDURQR"), .value = IOV("gjVuDeNgkLBCUKjOQfQfrKzMfubgHubmGoqNOjTWktVjtyMtHpayymiPBvCze"), }, - { .name = IOV("Ayg"), .value = IOV("RpMUZkjSQBEgaoffRNFMAHfOKiCKvYtNyPtEDEqzyMbuzKyXvdkVzEUebbnzBgTvdWep"), }, - { .name = IOV("EqirJmmfYSUUR"), .value = IOV("awVfIKQAnQZQYyjTuTfTVGxuNNIhm"), }, - { .name = IOV("iHHiubfvWsnGprfMzdnB"), .value = IOV("cDyaYRDHSmjsVYVymPSdZYhIhLxBfYbFmhjzolzoUPm"), }, - { .name = IOV("cBARNwFwfrGFWgnXJzy"), .value = IOV("bqsvgwoLtwtVEnzHcrvGWFfDJrLEticSOBpxaYsxKDARNpWLWisvYIfvKfppdlXqXoT"), }, - { .name = IOV("wLHoFwGKX"), .value = IOV("TSpmZiyFdBDUNFBbtQCiOGRXSjTIeTyDoZNYyPbjAicVEtPtpsBmisgw"), }, - { .name = IOV("HP"), .value = IOV("ylNpnxcYFVQVjaVDIMulBJphyENqIcVoYgJUMrDF"), }, - { .name = IOV("WiJFkjB"), .value = IOV("rySGkpzJOmUxNvZeSNBgPjugqCjHUczBaqteZEdXdDnrVDcKb"), }, - { .name = IOV("CeJiBvEPdIQmzp"), .value = IOV("XShWx"), }, - { .name = IOV("rSVfhbBN"), .value = IOV("flgeKVXUealtkXzrkeNbdmLBWeTmTmvvF"), }, - { .name = IOV("B"), .value = IOV("jUMVJKvzDOcePkZWPVdAZHwaKyKHkxdfZJZGzcFNtlyYkaqhKecvDIzGyEBoHvjUdVVdeaqMeDxQnZr"), }, - { .name = IOV("HRgw"), .value = IOV("rBEgzKCxiEXvsAAQXHTIWHCEpRQiTtjxbfekogavbCsCcCjjWUkbYQaCSNwvllvRhcNrbHeboYR"), }, - { .name = IOV("cIhLDKJfxTrIvbl"), .value = IOV("xUwWjgmimQQzOrtiqSVrsPSfcPWbuyvHGKXPnyn"), }, - { .name = IOV("bpUTOud"), .value = IOV("eOKrvUNvcprUkfCLmqQsQuBbRFwRbyPDHIQNLEARhuqFMUIPrDlxWbfqjqmgFiREvbJsXjapnSTBAXC"), }, - { .name = IOV("ZjrL"), .value = IOV("sApFIAhEbEuuTMZvAlWvpVkoMPMJVzcxbuXDQcmlFvqePkKbSQJAxrNZhkOhXZsFEfMdn"), }, - { .name = IOV("PeVee"), .value = IOV("tFyoAeNyxBwHpUZpgWBKAubLTicqKcnDQNlsxwtXQXl"), }, - { .name = IOV("QzrAfEgDufNc"), .value = IOV("imeDzqyXxxxEfgnOczYcacdrQBIeJkBfPFytrQICz"), }, - { .name = IOV("cxJ"), .value = IOV("SXjKAh"), }, - { .name = IOV("yTJWfCwbKFqUyLdrJJJf"), .value = IOV("BnypmvaotBgagumEvaRlliHuwnJrzMYfzSPxorO"), }, - { .name = IOV("ygWdltvfV"), .value = IOV("ysTfFMFyqQRsDVNwbqQRiWKpppjROCjHefCBV"), }, - { .name = IOV("oObEYtfblHydvYzVr"), .value = IOV("lQiTRHiFmCitqpYmROMrdsQxYwYDvtAuYNfsOpQXuSoLAbOHncqHSTxOVlqkjTQDQi"), }, - { .name = IOV("qMTSOqvif"), .value = IOV("lkbBUVDMKvrPZhWdppQEXJoxJxwOoVCBJgUEVucmaqSPIJqGqsFpxEdLsDji"), }, - { .name = IOV("DYuSDbVRRclCtDu"), .value = IOV("zdfoavCKPAIMnjLXHRcvHsrdUSRnGhCuseAFhwopivNZTHNsmSNloVIxwsXA"), }, - { .name = IOV("qsluZlNXkWHCDePqd"), .value = IOV("MEpahDNEQrNFaSIJiYbnjEVAxyQsEBoHJKuErRjwYTyDkUyQzmXzeRutKrTQIlAZlqEAUyhDrbpC"), }, - { .name = IOV("Vl"), .value = IOV("uYDdVveMSHtwrrTi"), }, - { .name = IOV("bUupFqcBPiNyRBagyV"), .value = IOV("HXESyLERLbVoIxMoKmXIjMjsESmrgfTJfHYchmRQNzZVNzvuiCLROntDHqQPQnjzPK"), }, - { .name = IOV("NyguSZmTZPPuWxyCOCzp"), .value = IOV("zWEjjlizRHzotSHxZcdUYuUzVxYW"), }, - { .name = IOV("qBMDarOlrbVpLC"), .value = IOV("QsyyJigJjvHnISyEsZzrNquYBqdLxAISReiRxKcTAUxXZevVAgBCXtMXizIVCGeCRQympuMzSjiS"), }, - { .name = IOV("dHeyzAuQOq"), .value = IOV("ZPrhtJdIrKeJAUecqd"), }, - { .name = IOV("JkOSGjLTdIyyAqihnuWy"), .value = IOV("dQuzxYGsgAGnttWVtRZFpPUSecPJiOEyEfmZMVwYthLGqOKew"), }, - { .name = IOV("QWppaFToU"), .value = IOV("UJDmFVQjBvThFqnnfBCeDnfbFIKckjCFNOnoUcyfcEOISaiLGenegIliQrMvPMfd"), }, - { .name = IOV("UTXAJljLuiSkjxCMZTM"), .value = IOV("viWgbRoZfqLdpGfcCWpwYLfDgRUrNMyMaYacHQYzxYofDGKmzKDVN"), }, - { .name = IOV("TZBuyRNISQMFi"), .value = IOV("POkbPpYNncbFaApIryNIFOkboGqoRxNU"), }, - { .name = IOV("rTDqayaZcBZUDbRq"), .value = IOV("EavNiBuWuhAIgAFosJQUllOAtlRC"), }, - { .name = IOV("BREJBQSkHU"), .value = IOV("NrbRvKaxTcHKbvrwimBwCUIIUYesbxcB"), }, - { .name = IOV("QCnGJcXrifqXkynrY"), .value = IOV("ROBvygIFCIKoDNLxCZoHuYmPebiBQkfkNEqzHIoNIvDdjStHtDqFKcIjR"), }, - { .name = IOV("CkpjTSw"), .value = IOV("NLtY"), }, - { .name = IOV("hBolsjDPewAGHR"), .value = IOV("poAFtaGLhwYFqxJrLKdlyfbuQKwNrHRNwbHhadhHUPiwsWGrxqKvuDReyCdxovfzCwNugeHoWGqMXpA"), }, - { .name = IOV("EnkfrQeYnxxwkEZncF"), .value = IOV("kNgGjXejIoMqcyjMsweEp"), }, - { .name = IOV("z"), .value = IOV("YEaMTNRCxcnOnpo"), }, - { .name = IOV("Jmi"), .value = IOV("ofqZOSItGEWbWJyjjRGGHXsReVaiXAvTFcHWTYlNoHNkxUpqyvKOaKcdbZtRuGbBifqT"), }, - { .name = IOV("shkgUqsUwXxslNABXbBl"), .value = IOV("GsGDFwIS"), }, - { .name = IOV("Dtm"), .value = IOV("SduFQQR"), }, - { .name = IOV("SmEgqradpNRwAw"), .value = IOV("AOflZzHXPheThRfyevUeIYozqYIDXDjvwLHIxyWL"), }, - { .name = IOV("HrtHsbQdPckPRJ"), .value = IOV("TvNNxXmfhqHxxTZkzhHqoMzoQQjpJbOUWGWizPkvJTImlkBSTRDdoYemPE"), }, - { .name = IOV("JJJmiIXX"), .value = IOV("RrnmVVYUyYpEBXzNnhDdjJyxIMelzhzyTmDNsQJEyfrLkOGqCJhN"), }, - { .name = IOV("AkZGnGPt"), .value = IOV("scQFE"), }, - { .name = IOV("ZGeMJRiWgWl"), .value = IOV("ERnTUPtBKtVUlcaiOBZaxHSvwIoaVedfqVHeNgIMxXl"), }, - { .name = IOV("uQyaf"), .value = IOV("LoOoFDrUkkGUHxIgSR"), }, - { .name = IOV("vOXoeazJHojgESXxnQJ"), .value = IOV("mjYOiMSxmGLflOTRqDgAygMFhVHiIDOwTJbv"), }, - { .name = IOV("xydB"), .value = IOV("feIBzbWwxOXoHLjTohmOpyIQEKFQXYOvrWlBVuPgrXgUWvTOARr"), }, - { .name = IOV("mTgolhtW"), .value = IOV("tRpnF"), }, - { .name = IOV("nX"), .value = IOV("dLiFkdFzsbRcimVqToPFMzyuUamnmNdrhmeNHJElqhkLeSdreOwPKppqshIjNuqagbIezeTVfoiqdOQ"), }, - { .name = IOV("EnKrcjIRVSoDlaxvEGc"), .value = IOV("wwJ"), }, - { .name = IOV("cYUXWqZI"), .value = IOV("HytzwMinsrksgklXmQwbyPUjFXhiERfJBeOHnMaVjMffAGdKxbdJYZEqgfnePb"), }, - { .name = IOV("S"), .value = IOV("VQXrDscmUeGSIN"), }, - { .name = IOV("YQTAJvqJTGbMFt"), .value = IOV("oQXdKPpnFDHZRsdgofuLdXFUQlbwRxlKjzYSPsTNuYRhZtQMchhCSnGbihWjVvGsZtBYOkeu"), }, - { .name = IOV("XzHXYL"), .value = IOV("SypqUZNiQdOUgBbY"), }, - { .name = IOV("hIF"), .value = IOV("WsRXLcwBQAqHgEuTloZDYhvdiQKFZaujRCiPinjqQ"), }, - { .name = IOV("kc"), .value = IOV("wzxbUBcCKreosZCZQLIvyZidCXhOaVPAGkmuioajjdJNljThad"), }, - { .name = IOV("zoLHmx"), .value = IOV("YIWpSczACUWnWSuvSTE"), }, - { .name = IOV("FpKlVPkwHClXhSQ"), .value = IOV("tkHNvzaksREsIWVdWjEq"), }, - { .name = IOV("HzwjVBwITarTsKqo"), .value = IOV("SOAkUzMXQfhudZOAFUBXFSaOfUbzvVbuAVOkcwcFoHhDMTjPtj"), }, - { .name = IOV("SWiUxnqNDptMAcvB"), .value = IOV("jXEpddZKlc"), }, - { .name = IOV("RhqFnEhFFIIoDYbYj"), .value = IOV("CbkXjtovhYCTjFgIjNsWWmdPwoISoglJfrINxrbXgFvkrGeeXCHLyneMDZ"), }, - { .name = IOV("keeEnQikmyJVQu"), .value = IOV("cKKOVrELzjyIxyJmBlMmzqSAGKIVMzfixPqwneVekR"), }, - { .name = IOV("InDJJsR"), .value = IOV("wLOLIJsnuKLplJsKsSHmwVViXhzhYBYqHlkiJiSgsgjcTAqKTblip"), }, - { .name = IOV("wKKASrw"), .value = IOV("jgHIXQOTRwLzxgajNdqYUbNxgMTBEsfXkVzUIke"), }, - { .name = IOV("tiHsATaiiDSAtM"), .value = IOV("qWESANVdoNJbbs"), }, - { .name = IOV("SGoaTQJYZjEUF"), .value = IOV("AQvceACWMRTWvNAsKVSfBtSI"), }, - { .name = IOV("nsyXbBGnbQJgJKT"), .value = IOV("O"), }, - { .name = IOV("efWz"), .value = IOV("AzMuXGBdqomffqwKprWRoqJKXcQNyEFsmaFzHiWL"), }, - { .name = IOV("DwedPfp"), .value = IOV("hZJzDySmJWWJSBrIFNQBVmAjyvjsoOzSxdtAzjonFUjOgKtJQpukLVW"), }, - { .name = IOV("tnUBTeYSfP"), .value = IOV("ClKkSIejIuJftHgsKLdbJIlVvsKftKj"), }, - { .name = IOV("oXQ"), .value = IOV("ZEPhGRMTQNnLtiKXkPfdhV"), }, - { .name = IOV("ERhkei"), .value = IOV("hVPOVPvzpjCJTygAqoxXFFdAMPGdjmvuSMtnAMVafDKUGVBblSKZnzqibrPEexbwVnRnm"), }, - { .name = IOV("UHZDtRDDGxtsoWdkji"), .value = IOV("ljWvIbTgRjacndOiaeJShfenzudL"), }, - { .name = IOV("I"), .value = IOV("nami"), }, - { .name = IOV("gDWqqh"), .value = IOV("iSUgfdKAsaXHhOoKBIXZnWXrbl"), }, - { .name = IOV("QwUvIMhTdGa"), .value = IOV("cIWRdEZP"), }, - { .name = IOV("OpyBY"), .value = IOV("mmMHdiHNsXsyUKhGSDlmMRsxzctObIT"), }, - { .name = IOV("Cxpcj"), .value = IOV("JRSMcDqiTIwQZcnXqBaTezWZGAHedAiYRYlRvlctAsxMVovVXqbLgotignZJoyjDjeTFXsBJ"), }, - { .name = IOV("zeyyqmyujlJJsHoJVa"), .value = IOV("eBWeWrWQJKKRGpDffwsgvQwUvyVhxlBUjFLPNSYPXlsaecHmXOrKX"), }, - { .name = IOV("UvlFa"), .value = IOV("wnBYfHlorXlqaFYBulycqkXyNWIJpjMITcDzlg"), }, - { .name = IOV("wNtCDhlAnasUuLplA"), .value = IOV("CZZDYwdFZEAtQwTfpKVgFXRfbmZUBPlTlvWahxcCgMxxvBuCOUS"), }, - { .name = IOV("QrOGPmTagV"), .value = IOV("mDqosSVQzWIOItaFWzjyVMqrFCJqpkvMVoxWYzLhwuhmGMj"), }, - { .name = IOV("WolpAKlelXHb"), .value = IOV("xDFdlUGYccaSmZcllmRmzurlUczQzDDzEWxevwFeNlIwIHPmgwAYpjxezpPlZXvGlYuLubPfwT"), }, - { .name = IOV("aLlTF"), .value = IOV("mdJPRUNJBztOXRLDpeHzOPhVFUCfuLSLvMxnaZIhbfJTCVtxHENyStutFnRyI"), }, - { .name = IOV("UjENlXtmuPuHWbEw"), .value = IOV("MxrbgXUILZIziAUEjcefRsiPNKpzLaSbdgRXhNbxKg"), }, - { .name = IOV("BaRKQUwMaD"), .value = IOV("V"), }, - { .name = IOV("fxUVTvBUawBeUHRrzw"), .value = IOV("uEggUGJtQDuUSqkGADeTMScDXwVV"), }, - { .name = IOV("KRsqGKDOzITjvOfvLL"), .value = IOV("LbPvRGdrQVLsQkdRQGGlHwakPsMJzDvJctvqJPXCcVgxNEcMpjooaBzLQfkUsQVYRqFBQwlW"), }, - { .name = IOV("Mel"), .value = IOV("fHlcOdlrIjdmNtIQwsWHOZsSHETrqYshrwCTToddddkmsHMzirNVSwlBOWzoiEuPEzLGxbULCl"), }, - { .name = IOV("tfeJPItlrbqiLn"), .value = IOV("cgmdJcDk"), }, - { .name = IOV("axqELxRPPSnaPyRUKD"), .value = IOV("ARGdFudLfDzNqdeBBzgDBcHRXmqgGqOXiSZHuynHBA"), }, - { .name = IOV("LSKfrgEQGrVelTmx"), .value = IOV("JtLLdXdObyUivYUvqVxqTsweOTNEVMENdNLOuYyDKbfyEZ"), }, - { .name = IOV("gV"), .value = IOV("AzighmrnuDLvbiyrZqLcszetMxmtglaZlqxqIhnb"), }, - { .name = IOV("xHIRuvBHdrJvimnTgYU"), .value = IOV("XRwHwvpjWljcIZASwfeiteqbodiJOS"), }, - { .name = IOV("oGVMvcmJWSrOxqREur"), .value = IOV("rsFhCCtxGMetV"), }, - { .name = IOV("HFugyqSNZWPmvcIGGyo"), .value = IOV("nGgwwfAhDKoovyTgwxDQkfgeagrwSGdGHduzoh"), }, - { .name = IOV("TOozLlTOp"), .value = IOV("PIieVJc"), }, - { .name = IOV("BvxQsNYIC"), .value = IOV("sokxGfzpRkvHFsyuSeZAROoYvXoiDeAtJyuAHpUXNHmhCFFSAFxrqrdiJYbmHybabmt"), }, - { .name = IOV("BDivYxRX"), .value = IOV("TkLsobUohlBqTfghcAHJaPrgSnSPEFhpjMQJQQn"), }, - { .name = IOV("KU"), .value = IOV("RStseADroionkaAokkPxxcybctGQBsMb"), }, - { .name = IOV("pvj"), .value = IOV("rNYliByuQJUqObdYDMATqZkJGgXobbMgwlXaTZfMpXmBeVFSvLcLzIalgG"), }, - { .name = IOV("gHMHulm"), .value = IOV("qcN"), }, - { .name = IOV("OJY"), .value = IOV("ahTwxPsUiMVvasSyasSMHufnVbXPksKfQw"), }, - { .name = IOV("LfRMikoFysJQBlEOtLSU"), .value = IOV("CGqbGCivYggqFMbdfIagPdZzsLnLHSezujpYLpfVDNIX"), }, - { .name = IOV("CIwJcRgjPIRLPTWsNVJR"), .value = IOV("ABuiCGBfLIvQTHIUOiEEcefssaLhqGOctmF"), }, - { .name = IOV("tRESyLDUwtajIlm"), .value = IOV("vbGyUfIIxQygtXTpPWgKhWsMNwpZRXPAbROpphSypDNjxQQ"), }, - { .name = IOV("Y"), .value = IOV("OfbtqFWCwTmYHjhETWwNfAwcLdZmXSbKCHlbkNKttXfGeMH"), }, - { .name = IOV("lRkqecJeKS"), .value = IOV("fzmDeAcELH"), }, - { .name = IOV("uCwUNjwIudphOIv"), .value = IOV("dBIsiPCJkMBHewSUzIOtoxUATYXCpKcMzyDveMaUxDkJBAJNWDDvaMIpYZExwFulC"), }, - { .name = IOV("YpEjRcVqIEDF"), .value = IOV("JGgTCABryPxiEFrcpkCmeATZrhAAnwmsUDqGF"), }, - { .name = IOV("z"), .value = IOV("hKGxDgriSrZ"), }, - { .name = IOV("Fz"), .value = IOV("MMsaOtOyzXpXDctMnfBVdlJthMsVMeYBPcwkdGCJBHDyYrxLqYQThH"), }, - { .name = IOV("crDnqFtW"), .value = IOV("yXwUEZNHcaYBKAfREtFNVEeXcoSqijWAgBavvZoVthprZAQgaiCwRAdYUldsmsMNoSORKbJnlXPJ"), }, - { .name = IOV("YUXFzNHjQVASSeS"), .value = IOV("BHkYgXSffTAVHbbxFHrSBzlQVgnoYlwGeCpnPgkdOeyCqLaH"), }, - { .name = IOV("exHpn"), .value = IOV("bixITNuaOg"), }, - { .name = IOV("MnkXcEriPjpbZiTEf"), .value = IOV("FfHeZufCXxZRZwMywFnJFxiDWuBWluwRqWFRPCwSEsGMqiAIYyTezCsuIQXVutqCfohvUBAkrJkYY"), }, - { .name = IOV("YrorOMY"), .value = IOV("KDcLHjTIgOYpTBsmJxxJHsDHLyCrNVnOwfbpBlZPBGMqgqNqSCzkAbHWAgOPnmoHm"), }, - { .name = IOV("uqFfiRywTL"), .value = IOV("VgcUmtOJNGFDkBBjgJrTVRTXOtJpDoeSIPfHFyLxGxUqaRwRxuCWYuQtWH"), }, - { .name = IOV("BizInF"), .value = IOV("ctVWmnYPrtAUHYFtxNjUzwYaODSMsVmOCGgVJQNjH"), }, - { .name = IOV("OnSlNuLgNkn"), .value = IOV("EFChbJsxElnGVoOYnBSpYDUhgrzENrNS"), }, - { .name = IOV("GmXYEJJ"), .value = IOV("IGgc"), }, - { .name = IOV("U"), .value = IOV("VGZUCDJjZtriUYZUahKdQgqQkYkKBovZSjVdKbnlkOwmjSRWJksxowLjHzTFeWihsDKsLOe"), }, - { .name = IOV("yZ"), .value = IOV("EeTwRtEqtjnzrAzNWiVTNXlmYswPJkn"), }, - { .name = IOV("thPymWSfx"), .value = IOV("jvimFRzFhGbKUtrBFSXRNRyHKBM"), }, - { .name = IOV("tzHzVLZwr"), .value = IOV("TJYwbStgemHoMJZOHtLdRpMaKHjwqMcToNyReOgGWNoFeKUG"), }, - { .name = IOV("Ye"), .value = IOV("UEKrkbwMgETlBscGXvtgOJTZrcBkVuSmOQVrqyOpZskdSScxnKeAKyFFRtnpvJBjpyfnNUwsYkliPIG"), }, - { .name = IOV("OFguMmWssCgShQ"), .value = IOV("aBHoPZOCkUEKCbXEcCgRcrjQEcRRXmyYLItHosaAcNxiniLCNbrrEqe"), }, - { .name = IOV("kuXxyvuwVCyWlZmji"), .value = IOV("BI"), }, - { .name = IOV("NagRWUoUyFGEsCnGvls"), .value = IOV("UnbsOoAKuRbcHHMPxTWggfTPzinuARICdWlf"), }, - { .name = IOV("hBMDYbENjzVYFphL"), .value = IOV("EvqyJSwmxFNRwknOzWyTpVbsdsldyihtjmcsjPla"), }, - { .name = IOV("gwcgNvAwUogWiDcOXi"), .value = IOV("ZIhfOMgnEoqihkNZjzPhsmfNtIrDDSYjDdirWTkmAvvKUXmdeiRBvVaHahGDQpZQBfgXwkuOLYSNz"), }, - { .name = IOV("tNpwfRJOfHvxbSZsY"), .value = IOV("wsrdBeoShINCvNUvmIUBLYK"), }, - { .name = IOV("hdNJePlyp"), .value = IOV("DlkiC"), }, - { .name = IOV("ETgbPdtfScwBDCaO"), .value = IOV("KhcPzfXjnEDWPplACjNXYygGRMxtZfUOgmUykbykjFpwaZPuAhryxPihxjSuBzqnQo"), }, - { .name = IOV("WfPvw"), .value = IOV("XgalcejRNlKsYNgijuYxxHsWWUPtAzbkHaLDikzL"), }, - { .name = IOV("QrbgxL"), .value = IOV("nFoRxmhykrudZ"), }, - { .name = IOV("cs"), .value = IOV("VpanIHw"), }, - { .name = IOV("SVbKpmuBxLRTAp"), .value = IOV("BtqMRxaahUQVaSFNQVOSsAraZQZQQciGzQOkPhyYFZaEkRxhxOcaoABRqmits"), }, - { .name = IOV("xQDrVmnouQNGnBL"), .value = IOV("XhLMsmRofgeBpPWjYFXduTawFvItiQqwGCDaeXStuqFIjyscOJfACrJxttXxI"), }, - { .name = IOV("XXPTa"), .value = IOV("KEEnCpgGudrCJzLpvQHQNEbydLrWhigEZNhTpfFtMpbgdyApiTki"), }, - { .name = IOV("a"), .value = IOV("TzswZVZfXnrNEHvNrCfCZJJQvFkStrMDNdJykVVWslhQctFGq"), }, - { .name = IOV("mf"), .value = IOV("VIEOfCyGbdznLJsjdkn"), }, - { .name = IOV("NHnKvhKXmZkHRN"), .value = IOV("uPXEoTBA"), }, - { .name = IOV("MVINPLxiNiFGm"), .value = IOV("CfxWAkzXguMJKEBTeKXVawNHEmEahdycExYqlHRUF"), }, - { .name = IOV("DDevuCCTnDKVOJe"), .value = IOV("SJCwlQEttNxzpHkszhJitBZZlzWiUGxolfqKOQyg"), }, - { .name = IOV("nXKBfgSaA"), .value = IOV("ccwBDsIhixaoEanounftGktnORIFXcbhaTlABygLHMyfxNtwkjhwstiuvBKiGTSEZOsY"), }, - { .name = IOV("GnpoljNnZDsDEiePMB"), .value = IOV("MBMojCquAJCXKCDytTzYDDfaBdWRBRebLHCA"), }, - { .name = IOV("ShdBSlGZvgQkwD"), .value = IOV("wHUStTJBXMkowSWoIleeAesMthxtUttVImuoAQjqDgFXiDyNSOyJhzYFrvwfnlQJ"), }, - { .name = IOV("VqogZ"), .value = IOV("aVtVuUPsMMjNtXuUMHjIBHtH"), }, - { .name = IOV("AnQVvYTdfbLNGEzrSWg"), .value = IOV("hNbXbefRHkZBGBMIvnSmPBEcbzlrPxJnfElTYw"), }, - { .name = IOV("uIBffqdxTgHVDXg"), .value = IOV("sVMjNifwhMbAnbe"), }, - { .name = IOV("nLqXucRiGUpoCioEUhXM"), .value = IOV("ZoXeSuUbopDZARZDalgyDCsJnYOpfyNQpgycrNxOR"), }, - { .name = IOV("lQgI"), .value = IOV("SWtEWDHYdy"), }, - { .name = IOV("FZjRzcKxDk"), .value = IOV("tPfIZxOQtbfeXEXaTJcINMFdmbclEIHqzTkpdCTMUoMoLVykv"), }, - { .name = IOV("JfjjbMFdtrjLk"), .value = IOV("snvcLknEjkJltCzmtGoVIGqX"), }, - { .name = IOV("hIrDAusFfYKpfTqbAcRX"), .value = IOV("uBbDuQLnCPjCpzzUmWoFopxNo"), }, - { .name = IOV("zrTAxbMiOpVtnm"), .value = IOV("YOgHDvavuYnMPirCnlMtQtgDGh"), }, - { .name = IOV("bNDRqiKPEsOi"), .value = IOV("WXEVwEPhfYqqfYNfbkThdPiTffezsEvfgxBcaBcqpiZnGpsnWsYVgwHhrLpUxJJIHtyxiiN"), }, - { .name = IOV("IQDHCL"), .value = IOV("kDFtAbpuAkWdiwcBjJNNOnfNScPUlQKCPKHTchdcSUJEKDAoitgdwKid"), }, - { .name = IOV("NwkxeFtUcBQRcANpvwMX"), .value = IOV("ltwQpFgfUFMT"), }, - { .name = IOV("lfLvpRUX"), .value = IOV("qZDjmruNwxoMGngisQbDRkiKDqFboZJCo"), }, - { .name = IOV("VmeANv"), .value = IOV("MdylIJfpArFioLJmRRuHSVdywkekwCmVrezlGxixZGrKjsqnRI"), }, - { .name = IOV("XXbttZtvMjHjI"), .value = IOV("ymmISbIWjcnblO"), }, - { .name = IOV("raSixyHn"), .value = IOV("IKuQwfDclsiHLZZekBIHBwGCYTwSbJBsFQXZHTSYUIxRsnUqPeW"), }, - { .name = IOV("BBfemFCIgaU"), .value = IOV("pjzEnUradOMasmvbSMLwgh"), }, - { .name = IOV("ooiXk"), .value = IOV("rYKSrYtRMgispqgYIxEEDRrQQdZzxVZJlW"), }, - { .name = IOV("HRtVEfPfyMguCgVZrZT"), .value = IOV("DwaByKiWKeZwIAUPoIkZEwqlydsoLgHilVTuOkqGDgmlkZgrRNn"), }, - { .name = IOV("gYuumoklqenme"), .value = IOV("hXYcZKIOrMs"), }, - { .name = IOV("seeqFxBGtMChxdDCRv"), .value = IOV("lFxwHdbtsLcAiDLhlyjZIi"), }, - { .name = IOV("oSpzjKFGbGaodwiv"), .value = IOV("KRSXTcroBUgGWbMeXgPvwZOhglbZZGNFYaDszjvgEQYmrdJCrgr"), }, - { .name = IOV("zEXWQHY"), .value = IOV("FguaCueuIXAqbCuEOnKN"), }, - { .name = IOV("gXSHBKmLPalDd"), .value = IOV("MgCFotrZSwixmxLWzlgiAZnPNZuhIQCeVJfkrDkKSKJWKltHTBVXYJLFJQmGriAVnWXAyi"), }, - { .name = IOV("evGMAggkCCGJ"), .value = IOV("RUooXUxczZcedzKZVCwERGglLTCTtuNuROyJfukdCKvoIAByGtJmANyBlteAU"), }, - { .name = IOV("qowThboUsMms"), .value = IOV("shhnhaaULLVfhxxXS"), }, - { .name = IOV("hsiISRPNU"), .value = IOV("iNoiGTscVtfaQcgjibundexEQlg"), }, - { .name = IOV("CfgYDNidcF"), .value = IOV("cnGSVRfjxRIOcGaBxYrrGpYdoEEJpKYVRoLDaLFvPagizvTzpojl"), }, - { .name = IOV("RGTrqigbHM"), .value = IOV("NqwKCtxbcEqYayFtCjiwDieuVQtZd"), }, - { .name = IOV("sdVPkdeYkzd"), .value = IOV("CnAHfSzyBoQKartxMhWoRTWhQAAphaDfVQBYwEIGTxWDXloQJWKGPOpsYICxXctWLVIcVAdoIk"), }, - { .name = IOV("hoMVImLaNtEq"), .value = IOV("WnvhNKqdmCIeIUJUpzqbcDqQenXIkwmMdrhvPrEOqqbUhqaDmyS"), }, - { .name = IOV("IGCUiPKqOhmhgj"), .value = IOV("oIcGPrMgJbGHTvazglbgqgFUbPqSETWvAVoHRklREgxdfUBLfOEfUnYzzWRJzHGKyM"), }, - { .name = IOV("qC"), .value = IOV("AOkIVxsV"), }, - { .name = IOV("kukbxCwUZnfHJZwFvJf"), .value = IOV("ZXTLYSCaCZXITvZhRrdSrPCcnvunQKxCxBeXnHfSQbpcIHQzRCPsYTueisNpJvLBUA"), }, - { .name = IOV("UyIWvaFPbgNJueFVwp"), .value = IOV("YvGXlmzhiryRFRdLKcEEbDgdoSqVR"), }, - { .name = IOV("ICGRXGMLXnC"), .value = IOV("tBPtHYOjNElTZLquYPhtiUk"), }, - { .name = IOV("KoAmCF"), .value = IOV("GgKnFJrgrjeaYh"), }, - { .name = IOV("id"), .value = IOV("TYCUIiIcyDCtIPxLcdtoPVdnHVkERygnfYTertGctGgSJOCdRLwgnkXpJohGaFztjnpT"), }, - { .name = IOV("EtGXUNyaYXJz"), .value = IOV("cvCLWgcspjQHrBJMjdEJCHljJomSdurOQDfbFYBXIahRQIyXrANbqgZDAybWRH"), }, - { .name = IOV("rfINemXYLnvcC"), .value = IOV("hrkaLZGSkbTiSPEfykSiwDliKSBwbXqaRcjsSJiGnBRfXuuyeFYGUhUS"), }, - { .name = IOV("hyoNkPeyV"), .value = IOV("iaiBhQdZWLgOTpedPAMBqeumDJNYXjfcVDOEKnlqdZYGbByqwiKYeicUoSEGvU"), }, - { .name = IOV("YlBsXBDUfDMfARotf"), .value = IOV("xZHIvgQxAHJbqTMxSuNbEhFqEFoGQDKiQZQIqRIxd"), }, - { .name = IOV("iRnXSfXGlPlSXyLh"), .value = IOV("XLaYaBMqXLcxbdvuJxmiCQcrvfDmAZfwOjQJiXqtCvjwPgaEzkhmjlBMZhcnRhLIbqT"), }, - { .name = IOV("CQFDbvaCIeByWDFzXaGu"), .value = IOV("aBaubQhktJlditlQQUcVlOpdeGjzKRztfxXfvoiQQFtogOyuOgx"), }, - { .name = IOV("zzjaMM"), .value = IOV("UXZdMKxABGDeOVKJvKojfBFQCLGSHhvGPemOP"), }, - { .name = IOV("XARtJpMe"), .value = IOV("mFgLGNIsFFCbEnQzUQLjmsnlUjKVuOMVhribsmTaqvxGCdRGMnyDHum"), }, - { .name = IOV("FGhPi"), .value = IOV("GFfcrgDKzAgEIShyLXyYJAZ"), }, - { .name = IOV("nTyhvW"), .value = IOV("sYWZLtXoiNxBgsgnANdHcWZAMpVjIXdXZaqICDhYCCnFmLmNULuPnpkLhMgbPjyFrfWLCsG"), }, - { .name = IOV("UHfvvKa"), .value = IOV("k"), }, - { .name = IOV("qxnjMQn"), .value = IOV("JyGnfZDEaJyLZhGWfjFYfbZqxbzPxiFXhqyWcggjcXtPRyCCL"), }, - { .name = IOV("K"), .value = IOV("tIbDSKoLJqnokivatVAKemOtKXryViQmZrjxnxtqAfpZvTIkdRbAaP"), }, - { .name = IOV("dmSnB"), .value = IOV("xCQiUNwibBrzXKlszAHTZhcSeBvaRtBTZspcWsSfWTgWITf"), }, - { .name = IOV("C"), .value = IOV("DGWJtdqEFURiegJcAMukbLAjlcnGzbUGKAXFFYsBfGhptHyNNytVylLDecFrmBqMJNUOnZyOZYHa"), }, - { .name = IOV("FJzyuStcftornkPoBT"), .value = IOV("qwGkRkBoiFLmEJnvadZVqSqAFPXFaCKURvcjbDbDoZVIRapY"), }, - { .name = IOV("uJjINSdmmCxIT"), .value = IOV("aUFHcjyBkvgLYScAHAhUxuBUlAKXsZUDINxGXEgXTidJLF"), }, - { .name = IOV("ioJeihcKwbiIlMPJS"), .value = IOV("cADVMcmYstGkTiTekEXveIISsdfirNjSLoPdJzYSkpbdfnikYBHChMbcPbxSDlb"), }, - { .name = IOV("neqkbju"), .value = IOV("iQJaJdNpslluCsFTeHGMydRSQpjYbbptdDxYclWXlXgycVJOYqBhyzPiRUHV"), }, - { .name = IOV("qj"), .value = IOV("aCsIeMKDBvAOBxF"), }, - { .name = IOV("leEmounAbyKDd"), .value = IOV("QqKJFzzkHHIfpNCUypUvAeHzqAHUhhjPwktgkKtOgdPZlowQzufP"), }, - { .name = IOV("iugO"), .value = IOV("BfsbfBmIfFmhNIFKzVCxonxwWwPuCdmmaXebmguXUsXevtqfrkCDAYLRWLcfZdF"), }, - { .name = IOV("SGZfNOsbg"), .value = IOV("vMAAeCYUecmTEdOUOmwQITrfNrXHWmnJROLsETcoHktPaiznzsxgeYTPMJNHUNjF"), }, - { .name = IOV("cTFaxcAkvxGrkYsipn"), .value = IOV("GBjVQVhbAcyyfDdHQhJQxQSLrjUsIUuqZzyLqgsetexhQXbhB"), }, - { .name = IOV("gztIifVTTJsfe"), .value = IOV("InShiplZBTpOUZlWcyZRrAWUmgYHaDa"), }, - { .name = IOV("rkLiF"), .value = IOV("TyGuINSzonTBLgKaUDUIEymckQKBtuOGSFPaZqoHRBDyrMsDbRmZBJqJ"), }, - { .name = IOV("CsONvgLH"), .value = IOV("lymigrVkynEYgLxSIFFjamVDqfGpmLbOitnJ"), }, - { .name = IOV("ODdzqNCuBnIba"), .value = IOV("AhwukgikiTiVaNoysRlGRlhgEzVKlRVveZJDnbYVLgveZvryIdPCrdtSAyF"), }, - { .name = IOV("CzfuvvEWQZv"), .value = IOV("KQE"), }, - { .name = IOV("QyLWSNw"), .value = IOV("TMGEaYGYFHsAtdcERYKzpQosrCbjfANedKIwTkEUFWFVPuzGmzuaHQcrjukgmMmvjgfPYlyL"), }, - { .name = IOV("ZGUSvYWQYFrD"), .value = IOV("qLJiJOPAkJJHREfpdyysTjMLUNlHEwoToGjqlqZXvTpiRK"), }, - { .name = IOV("ZSzVWhhfYVJVq"), .value = IOV("IKQmGodtzHJRmaoYFimdIcGFRkPAGSELixXakKjiIiiIMnAk"), }, - { .name = IOV("EmvdJ"), .value = IOV("CLrgYQRJlJnJNqvsXFhpsQnmGIsYf"), }, - { .name = IOV("LEM"), .value = IOV("YBzsLbGtFBSSAriBYhxeCwgArDExXIPkPCVrcosVrLjlxxnWebtoBeQW"), }, - { .name = IOV("EUbf"), .value = IOV("gOFeeQYNLKUCBHVhFRnCVcvBUkJQImFTWRGteUBygSzdqLeGBCAeNoTnAhrACyBlq"), }, - { .name = IOV("fM"), .value = IOV("hEQgoGGwKFImadkMWvSactHQAHgpDEkhrSOyvIJCbRGdLUAfEqpgsqFy"), }, - { .name = IOV("kEIwbtFMGfg"), .value = IOV("TvrwRszavAtDjpBUjZB"), }, - { .name = IOV("SzPkOk"), .value = IOV("RcXVrsQnzLGqgF"), }, - { .name = IOV("BqovVPeDGXUrbpOb"), .value = IOV("FIELIzosLKjZGwkuUxgvJVdqCxtPmjJVfZAQUnVuYt"), }, - { .name = IOV("vFDJHxGCM"), .value = IOV("BhhfxebsgHJYzROAimlCURzlIjfTrQvUSsLIVeJecvdNTLVTXErCmRcPuScPmVzQCsrAdYy"), }, - { .name = IOV("tnBzpUGWdMSyxPw"), .value = IOV("FRACPhSlDSGznjRxaDicjKfJfWbBb"), }, - { .name = IOV("gkmwrsjFV"), .value = IOV("uaWbAYkJAEfVEWbzROEGZnjpEtvwECboPBSlYAjYgxxK"), }, - { .name = IOV("BRDcqEzvrayBLEc"), .value = IOV("xvGTJIoXHuWbvxEcldQOplfXKWJSHPheLCWOeShXJqLKMflWBQHfSFozPXuBBWGKnRFMjC"), }, - { .name = IOV("XMylspf"), .value = IOV("vcMoNojBqMgNPXBjKtiC"), }, - { .name = IOV("WVxvguSCMjAQE"), .value = IOV("gceKJgTRkCizlSOvfXzHWEQMQAwyONFPCmtCSxwOWHtkfswHFlhrPokHNzHaYqTrnwHTw"), }, - { .name = IOV("erMLKd"), .value = IOV("oaZGWpUeoOoDcEZqkMxKTFJVnJeVmeqVopeKXGawmhkiuaHLpgsqmfsRwVvTPyEpuhzbmx"), }, - { .name = IOV("OZnitnHZ"), .value = IOV("xzWLtbmGzraccjHEavrAkenIPdRHGEKwbfgJXyOuBhoEHBSnWufLtVHYcDKVyr"), }, - { .name = IOV("YPCoKHuKtyhWHAVZ"), .value = IOV("KkLpHvRJaVSTilTvhkNItojwrltFpRjsTSDkUQBYcXXpanvFeCLVyEquEYKmeXGZHdayeQqxLsN"), }, - { .name = IOV("arbnTTNHSeiVXovi"), .value = IOV("BMxzPNOPRWPFKjAUtGGyUykJBVHlpUPXRpNbLKzsqCqbGsYiNIxafBdASQQpmy"), }, - { .name = IOV("C"), .value = IOV("ZnUfFDhMeeyCljaIbTSNbxApSqpEyakF"), }, - { .name = IOV("ZRvWIyyWVJkTtNbbz"), .value = IOV("WHaWeidEnxHJsGeFWhMQrXbGCxzlyJMZCPuGU"), }, - { .name = IOV("oWCsJQedUUHYVonr"), .value = IOV("iEfNwPGEKvtlSzkRgVkbhhXRwOTdNyVHNDguHQiGWnysACMecXJqFpUyRhPVFDyvIagi"), }, - { .name = IOV("xgBP"), .value = IOV("bMlyxgdxWPBaqmJDpHlzJqliSihGRTuLx"), }, - { .name = IOV("lcpVCiuuHe"), .value = IOV("TxdpfJqMAL"), }, - { .name = IOV("ByslMM"), .value = IOV("TcApvnrazVAKHWsFkVUvLzEYvtjhzDIAgCvVlkFdbFBNQYtVXg"), }, - { .name = IOV("xC"), .value = IOV("qNsLiAyDRtHrZkBqHgfNfqeTnTojNuwAdWmDZEwvxTORXUfgvkvMHbkYOmGEVaRiarnRv"), }, - { .name = IOV("CApmJiJQGMrr"), .value = IOV("TJNRrfKYVqfTBSBWHAmgOtGhSmeUGwqUAzKMyQPKiQaxf"), }, - { .name = IOV("IHYNMnkfdKImuC"), .value = IOV("NNQexthjmRpUxOHUWCON"), }, - { .name = IOV("nNjagZcmylCUMs"), .value = IOV("OrtZxfNUeFVF"), }, - { .name = IOV("OhGnWVJfgMlqclBFKF"), .value = IOV("XUFKRcGKTApIXgjGeyiKkdDioIkdspsSzBPFwQcJjLkuGuzgfKDXjOPnvVZfXaTnzhXIBMoQtkkbqe"), }, - { .name = IOV("iwHbHEcLTxWjBpzwz"), .value = IOV("qrCnenheXERCKKIqOIDPqGqCrXWPuvUYbhBwTEYqAGcuCnmsGmskrVHP"), }, - { .name = IOV("ZTdTAsLihlZGCYjVffF"), .value = IOV("VhHderl"), }, - { .name = IOV("sRowMDVkd"), .value = IOV("JHLYrhbMutgyaJxXKBzMPABRukdblkbOADNVOtoaeLdSx"), }, - { .name = IOV("pJrYnGwnnVejpPk"), .value = IOV("RZKQoLnpNvGyecoL"), }, - { .name = IOV("EjFvHyOYYnbVQgoOzFHb"), .value = IOV("jTRZOwJajsjEiNDWRMRFvriIuvXOmOwBjVqdGkGQEwmCQssxBKXlCYHGYN"), }, - { .name = IOV("GN"), .value = IOV("lTqijackgLAnCVbJlaOnInaEtgxuzOxcNxVjAVfLIVRyQTSHmYvbECWDuaPoCKR"), }, - { .name = IOV("aQCGHYPMMJZDuVuH"), .value = IOV("TfqFfCw"), }, - { .name = IOV("fnxvoOi"), .value = IOV("qygKWDprtbtsdvgQw"), }, - { .name = IOV("Wbft"), .value = IOV("WwotsE"), }, - { .name = IOV("trwFlLNIqZFqZDM"), .value = IOV("tuHjMtfyTAiSeTXQcyGAZmIuWAvXAzhgapiGYsELHLRLBGeZvBtGvqPOrOpMOhMJGHvjljFEKgxUVV"), }, - { .name = IOV("InxcWlsamKOnvgTLL"), .value = IOV("EpXsgRVLZbjJwnThndyIwTUNmBkOsEqplEEVHPVxjMUbrdTeRLxRspyBgz"), }, - { .name = IOV("VSkhnNgCypuCVZ"), .value = IOV("weiLiQFBKmqxmjiRnJCfXFQKRiWF"), }, - { .name = IOV("RVWwjVwFJQJBoxhhgKE"), .value = IOV("gXmvfZJMcUONnYSUuzTjzFpfbqFXZSi"), }, - { .name = IOV("bLwYCskNjHWLSyKEKS"), .value = IOV("bPXoOlVjLfKVNhSoRjnWe"), }, - { .name = IOV("cbgHJ"), .value = IOV("ghqCmKMIjVWDtbmjCsMETsHubkgEUqvjWvDMkpqRFcqzAY"), }, - { .name = IOV("sLXzFJgXt"), .value = IOV("omMyKsTomgMdRfsUeJytcOlJVCrXaCuflZD"), }, - { .name = IOV("jTjDl"), .value = IOV("njFZIPezsVSvXkIQRNWvRuBjBK"), }, - { .name = IOV("zYVBOR"), .value = IOV("IxwTzilcxKHLaTUokgqtNJfYpDFJUGHOviYcwKkhVTFsa"), }, - { .name = IOV("SPgKnPzzWClhtQeCfgK"), .value = IOV("uNMuNBnArYxCFaBgC"), }, - { .name = IOV("fdxBmZFkjFKbxKEGU"), .value = IOV("TpTEcPiMmItantgETGyBVDuqfoBHGMZwGhtKCsqYGPibeLBVYJAcUBmUBWbMCRswMAUNTzjWpmeBE"), }, - { .name = IOV("dSiBGDaCdzhMRaAtjCO"), .value = IOV("ZNYIawDWDbVWtsCAOThfXRSzmspzmaVEKitFqSKlUUqizFTedahBvbOJSTQstxz"), }, - { .name = IOV("qXVrOrOrmQJ"), .value = IOV("svxJVdQZaNTvXnoNgWZGUwwhRnnsSATyQr"), }, - { .name = IOV("bOBlECvpYOSyMtSyaK"), .value = IOV("iWckrtvooxyltsVUziBfFW"), }, - { .name = IOV("hNtARcH"), .value = IOV("PHCftamSGgnZrcCQqGYwJQYnJWFvWZauIoswzNusXNhgLqNIvUlagac"), }, - { .name = IOV("XqGS"), .value = IOV("JXvMRSQcmtDjhoNtRBzqzSKAdbsSuVSOTaXphIplppfsazNCegMxMmJsueRzsWCLzxjoHUJsLzT"), }, - { .name = IOV("jLYVGiRPezIiTRPdcFt"), .value = IOV("eDFqZGgEWJNbXOJifUzTWEZoiOtphc"), }, - { .name = IOV("BDOk"), .value = IOV("CPfkmcjQVrJILvMLKdlkhhiNxFXrcRLAbZDbjaPCAKiqygqkPlnmLzdqdzhrmhxMXQtwr"), }, - { .name = IOV("LdSwBchMsIJgDRZFwaDe"), .value = IOV("VAjszlmcDszvlTGNGkniuPgNHK"), }, - { .name = IOV("wPkystgKsHpQc"), .value = IOV("pMCkpUK"), }, - { .name = IOV("FBySURZAOLTWtoYoBQHv"), .value = IOV("TNb"), }, - { .name = IOV("iiYVXA"), .value = IOV("QXvNtYWuswyvlptkmeA"), }, - { .name = IOV("WzIwKKKikuMmhKsAFnX"), .value = IOV("dRRIXRAZfZouzKROgGTzfGUrdqRwciVCoRqqXlxtvWD"), }, - { .name = IOV("r"), .value = IOV("YmDATVLWaiicQqMLIfpCVxzGiubNSGdDMwEcPT"), }, - { .name = IOV("F"), .value = IOV("PbuWONWmprPkbfmhizVVCzPrjQZbvhItKNYknzxgi"), }, - { .name = IOV("DDgSckPnOx"), .value = IOV("mjbhiNUoadmGsNymCRTdVMUdqlnmnUSEnkBxCegBzMIPyXmISUbvhyyZhUNREvUkF"), }, - { .name = IOV("SWbHY"), .value = IOV("vfMuODourAwankrIcG"), }, - { .name = IOV("b"), .value = IOV("TZAIxYhKmoCRNzMsmMLvWfdkpUEzBhhWvvGGUaYoELPrmGNaFohgCKJnWRhb"), }, - { .name = IOV("ujHFoQTmjkUsa"), .value = IOV("BvBfzRD"), }, - { .name = IOV("jvknbzyWpdRczTsg"), .value = IOV("tJmilsHEZcO"), }, - { .name = IOV("OuqMuXrZxveQd"), .value = IOV("beWpimZosQjLsUDgiEVFXnyOPgJxPtgBcngsJfPROvMCnUSpHBldMpCekIoPQkIfmiAOxkGC"), }, - { .name = IOV("glTYxnLYGWe"), .value = IOV("DqtZJlOGF"), }, - { .name = IOV("dIpa"), .value = IOV("ySwoCrhPmuLiBpjfDuOCLFmUkHLRtoPbIzcLjIMwOFqRdOomVUOHJXsSkfTfHkoM"), }, - { .name = IOV("YmXKWXnnHX"), .value = IOV("KfqJqTAjxt"), }, - { .name = IOV("nHOwPlDGSqDxcIMoDQ"), .value = IOV("ieskCyyRDvosFopnzndSrkIPoNHOTrFNFBb"), }, - { .name = IOV("HZuuORdSmeesil"), .value = IOV("KYvlwqulCjHOuRodseMKMrkRsLXYKyRXbbcjImxJMTlWtSFC"), }, - { .name = IOV("wbEZBeLgTXBtWE"), .value = IOV("sK"), }, - { .name = IOV("GiCsi"), .value = IOV("DyLJqNMboBzamVqnmwDZBqavwwdxRsWqeqpqlutdKWnVCoBTCLzAplTgIfqugPiReeJHkefVvfLx"), }, - { .name = IOV("fmqvPzFKdTTHKfHiGH"), .value = IOV("tRrlRxTiTxmQXasjRdUbikvSDJfPMOgbkBspFBocVjNikdVKSHmCqmBKL"), }, - { .name = IOV("uxJnv"), .value = IOV("ZyVdbJbtB"), }, - { .name = IOV("aU"), .value = IOV("CAwTFDqplniaJgMYRCbtBulhOouUQdyblLQOZdQzATdEbQJdvLnvSLyzQgJVhMj"), }, - { .name = IOV("VHgjVWQv"), .value = IOV("bxJPcpdxLWhqqsmXTRbFhfwMlrNLWafHBNIVNZEHHrAmtbOUHgFfdP"), }, - { .name = IOV("REqHwUPC"), .value = IOV("MsWTGAYJAYtdJjIKCm"), }, - { .name = IOV("LPNukLUclItT"), .value = IOV("VirqCnHzb"), }, - { .name = IOV("pKhTft"), .value = IOV("EGC"), }, - { .name = IOV("MLE"), .value = IOV("xAfYsuperwkWjPdbXPpvZ"), }, - { .name = IOV("NYJzgVDs"), .value = IOV("AtWgywdtSxfoUZludoiriTiXSPWxdkEaBOltvnvATxngbgCIGbRGyxBVCAbxVDYxaoET"), }, - { .name = IOV("hh"), .value = IOV("fgJItWuQuxAEKoIDcJcOVjCrhI"), }, - { .name = IOV("uuYYNAfXOEhqlMCUMBOl"), .value = IOV("kqAvXLrTWMdCiyIxjIsKwmAinCkYIJqngRenrzCEBlWIvLBokvNYYWMnI"), }, - { .name = IOV("phxQ"), .value = IOV("cufwWrNYbwDbfXaOlBBGGDKIWrKrVgENtMsPwdqRKdjXtjNfVINVUJAmUDHIXbgkfqgJrdnoIrnClb"), }, - { .name = IOV("WNv"), .value = IOV("fMQrkkyLEwsynwsTjVudc"), }, - { .name = IOV("ZMagBPQcKgu"), .value = IOV("SXYTplxLPLvouUxJySbjpHFjgEVCn"), }, - { .name = IOV("EyhMqQpkHHePuX"), .value = IOV("PbYbXPNuStsowwRzYeahxQwkVygQxeCShXUpFctaKCtepHSgd"), }, - { .name = IOV("fllLmOdrkUCr"), .value = IOV("RUXqbYnkYnXYqDHPnsdncBvScTzGBIGmVTylPvV"), }, - { .name = IOV("HaKa"), .value = IOV("ktXfNDjMcrqVZgQCOEkVdBhjUkmuIJjUqdDXjNVnXIwSSrlRmXxXTLTiOhVygYDLy"), }, - { .name = IOV("bxtVsXjLkqfg"), .value = IOV("TYMWYsOuA"), }, - { .name = IOV("HxvXHiYSyakmKmW"), .value = IOV("DtTaQeLgFRfqvXkQ"), }, - { .name = IOV("oXiRyTKHt"), .value = IOV("aXHGcheNituWpPStpOtbjazzWUbKWrZuLkggxijNVH"), }, - { .name = IOV("gZAYIbFjwqooQE"), .value = IOV("lSvlsebQvUkZXUE"), }, - { .name = IOV("ZH"), .value = IOV("WjZtJxTNszVkgXxPdFEWwEMdQngNNYpeYnKUWzg"), }, - { .name = IOV("JWuuOdmHYJUNortrxle"), .value = IOV("FRdEtWpSTkAJSwUvGkkbeYMzIJbNPFoVUYJgFflRHteAhAQGaSoPTWGZIeDemPyPiIAxrZRRuFp"), }, - { .name = IOV("XkVciXI"), .value = IOV("qrjuxSGfXakHnxdp"), }, - { .name = IOV("PVugWG"), .value = IOV("SlLsteujQzOkGSlsfTJUOsGyguOzIIoRFyywfAYpukhaApMPOkQjKZktWlOWZPiSDEZbJ"), }, - { .name = IOV("SoQwCrjdISmAiv"), .value = IOV("ZUnKcUHuimWFCHBskGvEiHCkYkiIFvSUmXYFYHvSiiHnBbVgfrycNlnLZfnnoSVqvZylwJAMKZjT"), }, - { .name = IOV("ijGWVbh"), .value = IOV("REnaSnwYyKTwOPrsnQpoBUvqfpaRmdovDWQBhLFIPfQjy"), }, - { .name = IOV("QONScShBjWSWfWQnN"), .value = IOV("pSOphWgBIkTfntcWurjwPesRzfgxqvdqldVCBNGaFLcfypLyDRyEDhBYFHwDHrWYTzBtanVoZnsldMZv"), }, - { .name = IOV("EstsUpGJqWlN"), .value = IOV("sDgKRUaqERivoPJBQtfxRlkgxaRKNxfhNYGmuATpyCszkpbEkYWKaFEgdcQVroI"), }, - { .name = IOV("AxxLeeNLLFrm"), .value = IOV("EJEiZqsZpAHrJgYgbGTRtZhichXAOrIrZBFtGKQGjnPlMWBWrYPduaMOxxCQPisMItWZtpuhbAuXl"), }, - { .name = IOV("hLxUbGmszbMhvIfBASlc"), .value = IOV("RbELRE"), }, - { .name = IOV("xIAFiQ"), .value = IOV("NoKyOmvlIWiqmsIxPDbzcSrViKpJqBpTBsOFmmkdUmusKOnrNCTvEJeSx"), }, - { .name = IOV("wdyfJSoK"), .value = IOV("nNELgm"), }, - { .name = IOV("MUV"), .value = IOV("dldCbSqTxIAxkiIlFLFvbCwKMvuPJeAqneemoOaYYcTevMILDJyyLbc"), }, - { .name = IOV("dNwoPrhG"), .value = IOV("eNJqsQrsfWjtoZdLyBPDmXSXqOvbXdPRtKeitOfATgzdGHDllMeKGmvBdubDZTSmanxNpBTrEKvBb"), }, - { .name = IOV("YXSCrsjOdKbUD"), .value = IOV("bXoKXtwawTFJIdHdLOsbsqnuAUfeEIBHlXVZmHnaPxgQxKrVGnTZfEctitKYVxNKDgsebaSWfmU"), }, - { .name = IOV("JqzXzyJ"), .value = IOV("ltJnYAqTYvlqPGWnYITQsvqoTFIWVLDtfsqGwLoKW"), }, - { .name = IOV("AJtpVzKllKKveI"), .value = IOV("qurtzoFCPCFNAitgWoADgbimWiMLoaxSaGjKrXEwIzoBzmiHfpfedIuAoflhlgUnbHDr"), }, - { .name = IOV("XxFGSMEwkDD"), .value = IOV("pQrIcmYBZfWrhLGeBFIZoquyFkSAkjzyIEifYPkMmpLDd"), }, - { .name = IOV("oMzMuba"), .value = IOV("EJMnbtSkGwjyIK"), }, - { .name = IOV("ALyiKWtUbskXkpjPQdGM"), .value = IOV("ASPLqIuSmmLzKrAhWWqE"), }, - { .name = IOV("wmSvg"), .value = IOV("KxJqKkkcRYndyFhvwgXvxYvBdwGYzOejJZbKEkTZwzVydnBJkxCRsUbjyDaeKYPiDUnuR"), }, - { .name = IOV("oQlPPWffHVYfeDPjx"), .value = IOV("ROyJYuXvSRKNit"), }, - { .name = IOV("olcvZyd"), .value = IOV("uCEDLlFtCMwWvBKCBLcAHvqDRYfjpNnJHnlcbaukaLNDiQqpyOuFgYETPMlkp"), }, - { .name = IOV("ZTRURJPROEIZpzznBs"), .value = IOV("oqHSUTvwtAJzEhgzCutwvzEuWAHMCgzJUCtJwmQNRACt"), }, - { .name = IOV("LHgFeffZfGN"), .value = IOV("yrVfeIoXNYEtOmXLgKpPFiZrgsyWZCHipvjDTnCsVOePwazQDzEpfzcwSnwRqvtbKUssN"), }, - { .name = IOV("SEcYFYowXbYYcE"), .value = IOV("HFmUrfTIxwWFXOaHuubccpwfhNPFZGYcbIpegrYxdndHRq"), }, - { .name = IOV("JrGgjYvOOlgPdGPxwy"), .value = IOV("zmcWNuq"), }, - { .name = IOV("xhL"), .value = IOV("drJqIXyrozfXRrhanECeHQLvaeshQyQdlyvlNKeIpYzDDHfdqLzWRkEApuvcIRDHrCeuuMiq"), }, - { .name = IOV("PoeGfAWeeYHJ"), .value = IOV("pbfUojlBdUyFwfkiPZoaGnkWNNKbmaPRlLbVkcDHyHCWkhwEkKXLZewMeX"), }, - { .name = IOV("U"), .value = IOV("oiJCqMQAeuZIFbkNqlqZEaEVEnWunrljuXkPCQWvkdJckEITjeTTRvvIzgKOYAwkKkKRBvBKtTqTpN"), }, - { .name = IOV("MwPnZh"), .value = IOV("yUIaNJJDVQEIyjYRxBXXUdKFfjjWOrLgfriPQYrOFoBLoXK"), }, - { .name = IOV("cjmqSpmutGliZWYvA"), .value = IOV("NcHly"), }, - { .name = IOV("LgYpalPFrrm"), .value = IOV("VEZ"), }, - { .name = IOV("EdqRrcYfTxP"), .value = IOV("CrnXODFIGUvZTZfTmCuvsljrlfdjAbiEtCEpUSwOxMmpwXCYZYkLrtvcXuwDJvNFLFiXaoCiQgSZ"), }, - { .name = IOV("s"), .value = IOV("bmUutcqRIBySgLaddctGoo"), }, - { .name = IOV("iNUtzIS"), .value = IOV("JyRpXcxtnuFbXziDhGMRCfYeqmuRlGImkkaiNxFPts"), }, - { .name = IOV("KdFMPed"), .value = IOV("eBXXhjjjAoeLsQNfNH"), }, - { .name = IOV("RUmnsVQtTfiofkVTfWu"), .value = IOV("fInyJqFGKLLCKRJ"), }, - { .name = IOV("vrOwM"), .value = IOV("qztupClrvHlZlwmkpnOCdRiGiJhYTRqFMJgpGbWiy"), }, - { .name = IOV("AgpMQhghRuLnSwndg"), .value = IOV("xAtIYMSsewcuYrEeAazBmJdRqfcHRFgVXYYEfromJASptzkNvxxYjhjVuYnijBCBJYctuEkIy"), }, - { .name = IOV("Rqvbfic"), .value = IOV("pXrpwiV"), }, - { .name = IOV("CtNUemeCAMIqbCvF"), .value = IOV("yTVtCCOUhogxXxwTLMmYqGQrmNUOaaZieJdBzTAhaUrTQeOkHPVzMMZUqEIXKTzDDPKFArHnxOYi"), }, - { .name = IOV("CU"), .value = IOV("nJfPDrgwNpPUUdjZDAvIzojxPfGuNyBveWtatkc"), }, - { .name = IOV("d"), .value = IOV("WZX"), }, - { .name = IOV("NJFMNE"), .value = IOV("RhTxSXuBONnyiVuyUta"), }, - { .name = IOV("eqESKfga"), .value = IOV("JlosklRGHYHWzHqSHvOBrmFurqtRgyDDwPlsQtjEMxWCpaIdwAKsAUIuOYpKSXFhDghhGSqoDvcK"), }, - { .name = IOV("KzxU"), .value = IOV("rmNbhoCsNpiatolhIVnlAsKCzFotCkwfMWmJwmcUOJcyLJWEZKvpsjQObJqXAKYnEnCIxFmG"), }, - { .name = IOV("IPIAtDIJrtCCzJ"), .value = IOV("RwbglXbxJmPVCBrAUpKGlDMuhrFnPaMSahxodtlFfVcMIKmFrvlHIecisXsmCyQTSpGnEdtzegGqJvKh"), }, - { .name = IOV("vAiEfKpcKVYxybH"), .value = IOV("EzpkVTqzmIklEcPLQYtMlzBsfJYNyDFUTMNSNtrkxFmujBGOMpsGnSP"), }, - { .name = IOV("tLYhkjoMJXWShkQwd"), .value = IOV("qgFCjVlkCgbIuiaBR"), }, - { .name = IOV("erhSQToZThynvBxxnv"), .value = IOV("sRIdCWbmqDtzXBCjvcTprXebaMPnrnfL"), }, - { .name = IOV("YFWiYsREZYAkMFq"), .value = IOV("fnssZZkgjcEwHJNvAUXOkUtlxLKRqrnwoXJSlaiTsR"), }, - { .name = IOV("rLqxVngwbrQPIq"), .value = IOV("vSWLeCKcgbkIjmdNzGLkiyEFzExdPYjdijVxTPpATC"), }, - { .name = IOV("BbNLBblFPi"), .value = IOV("IiuyPvsaaBkSOidGF"), }, - { .name = IOV("mlCPQUiKYhziV"), .value = IOV("vaLfSVtiQyPtjbN"), }, - { .name = IOV("REZY"), .value = IOV("XQmmKudzUuTTxkngkhsM"), }, - { .name = IOV("wFuc"), .value = IOV("qnZIPlcFqWCMDgrqqzEzuwlrhhlNZGZmfWgmZtIYfFpPlSEmlQnXuNMOpPtrZBzMdISmuvNds"), }, - { .name = IOV("lg"), .value = IOV("cTsqjXptweGJPdNwzEKKsUWVXwOKpZOdeYqrnlVbGlmLUe"), }, - { .name = IOV("UkkWGxPVYYS"), .value = IOV("DFajTmQLDRafpb"), }, - { .name = IOV("dOG"), .value = IOV("JUwywMJLNcZMWPChXmCVBVmFRwbmmdBMUXsRlMgkkYZByVVX"), }, - { .name = IOV("XjsVfrEscMTo"), .value = IOV("idtvoPIXnijrBumfbuCEHNZCSXIIkqFNrYNSsOcymTyOUacaOg"), }, - { .name = IOV("BiCTuRCCoZACcZQtZLUz"), .value = IOV("bbTloLVUAZS"), }, - { .name = IOV("qOuCOMHdIiPHJ"), .value = IOV("dzNSpZZUlgYVwVNBQGViowNGGNOrrhMJsebbsSiMLXOgAMXHTpxaIZACXshpIJts"), }, - { .name = IOV("NocTEU"), .value = IOV("gLjxzeOowLuqHWXhjivTFomxwKU"), }, - { .name = IOV("QT"), .value = IOV("faRUNGKLtmUwzmsqdxrXkgxdCJOcKsHbDXOljLxcKLxCZGtGGBRVHWzZrotRgWMDmXhBxrCh"), }, - { .name = IOV("nGrrpWTqvvYolmOPsnw"), .value = IOV("UiMPDMSqdblMUGxJbTcHsHRw"), }, - { .name = IOV("KdfIZBSg"), .value = IOV("iQwRya"), }, - { .name = IOV("qeEpKdDhPe"), .value = IOV("NMGBsJVzfnDhSoDSuwASWxOzzukmLsLe"), }, - { .name = IOV("eDQRLivi"), .value = IOV("CFxvPxcSJHswaAAIqtkxqspZUi"), }, - { .name = IOV("Dv"), .value = IOV("alF"), }, - { .name = IOV("PefYoasGdIjI"), .value = IOV("fFgkDGlsS"), }, - { .name = IOV("KjtuEuvCO"), .value = IOV("bEwnBHITheKg"), }, - { .name = IOV("HqjAjtTWQageedu"), .value = IOV("KEIDbQRWLJPblgMwhdioqjigxtOnLAMZVCjH"), }, - { .name = IOV("ZokBzATkwJULdcYx"), .value = IOV("kUyHVSjEyLjEoYaiJbShtNomXGlZGOHyqLFnrEAbNeRqGLjcnzpXQEch"), }, - { .name = IOV("oTshYgOoSPJNW"), .value = IOV("MKvhayzFFKnZNGKDByiI"), }, - { .name = IOV("Hz"), .value = IOV("bFgMDCKuCN"), }, - { .name = IOV("KjqGBrMtypuFVYhbcKKY"), .value = IOV("okqltmUJnDOngDNABkKYaskwaKBrkgGQkebCSinsdBUBIRfbmQjJggXikwiN"), }, - { .name = IOV("qoxkPHPQ"), .value = IOV("dassibhlFaVAqUzKNGSR"), }, - { .name = IOV("ySWWniYD"), .value = IOV("aqlwMyvfyBLqjmrZxyDv"), }, - { .name = IOV("vTam"), .value = IOV("jUcb"), }, - { .name = IOV("pBdhErpgycCQFcP"), .value = IOV("xjNvzHDRKlmJhZilpRLwKLIDDgBlVBPTDGWwYbkHxXFQQiytXKb"), }, - { .name = IOV("OzQfrCvZz"), .value = IOV("NICHNzueidOaeKyDTRzXdpzvkMvbSWrdqUsbkzrJsgow"), }, - { .name = IOV("sGfAFBHlLxxYnFl"), .value = IOV("ohjIxaMtArPNfdfIuLLEiWZFULQQscYgwYUBqvXcwkNXzluEWVjWRcgDoppJLQNd"), }, - { .name = IOV("MRtPuoxQyRZG"), .value = IOV("dsdPhn"), }, - { .name = IOV("acgPnG"), .value = IOV("jHnHXrtCEGyCdZS"), }, - { .name = IOV("RlnEOelRMr"), .value = IOV("rAtacYuqmHoUtejKadckbenEJpmfVWNdNqvosJfkGNqtGFDQwSBXWZnMorySvIVmLCeovgCqWlkkVNtq"), }, - { .name = IOV("rghFTJAPdrpQDmfTTSCG"), .value = IOV("wONeSFhRQKUOknBDjxJMYmFxzjDIxkKRQhBznQkrvZUsHlyEraBpNkXHwLcvx"), }, - { .name = IOV("bjGbfNAVUpgztghz"), .value = IOV("GqfbxFDbNwbkQyIcbNIgk"), }, - { .name = IOV("VheykvGAm"), .value = IOV("PsCaNGdmZc"), }, - { .name = IOV("XhnS"), .value = IOV("qqfLlScDbc"), }, - { .name = IOV("dJqqZZt"), .value = IOV("PJQhQukMUjuopiwwbbYXSKrBcFIqA"), }, - { .name = IOV("wOXqY"), .value = IOV("TfeDAtIdeJiTOFsZulfYGMtvcWTTYHujhoCgFGvuKRdsUtyUpLStnAnZdHZexeG"), }, - { .name = IOV("ZESypFxyLO"), .value = IOV("zmcyrppLLiDJIeRnxTCVHBRwVZLusXxVvJgXQFyQlMuPIQq"), }, - { .name = IOV("SQEOaNDoUaSNSw"), .value = IOV("yvhTlbeqNPzbBTWlmHrDuHqsvYMOYgmpAOkWzMfnafXEovklNyT"), }, - { .name = IOV("nWsWNqMxYlm"), .value = IOV("BhAuGYSrBdcsGNyUuwZrnUERZVXpZXURXhOETVkqiaRPGFftMhqHBXKr"), }, - { .name = IOV("XhsKTypHHob"), .value = IOV("dWoAnBYsnqvJnUvwygUAPdFVEakHkeHHfNSvmRTWCP"), }, - { .name = IOV("ElFCzWYI"), .value = IOV("ahhQrKaBfJzLTHiOrKrMwwSwowmTUQfdnLHPwvWmFwvqnMpnWnLlmkmHpqIdpuKEcWQKzOhNQvlOiMym"), }, - { .name = IOV("gNsgMMSt"), .value = IOV("kipguTIhnrlVfLSdfRnaSBZP"), }, - { .name = IOV("HzAxjMgKUkI"), .value = IOV("zncOqHnNmuonmXRUxqjwPt"), }, - { .name = IOV("eql"), .value = IOV("XzcXSDPBviKLBRMXjt"), }, - { .name = IOV("v"), .value = IOV("MfulQUPFdmbWNGqFALWEpetJXjIxuGfmDxTrAHXEjWRdPwLJ"), }, - { .name = IOV("XZxL"), .value = IOV("moPSFfoQTzIhpdTbptAQtmgzicoQkEQfSwPZBDxz"), }, - { .name = IOV("wJkSLLMZ"), .value = IOV("bjrTjJFzdOoAMCVxiwnkrTsFgMwLxLxWTWbDsqDBtAqSe"), }, - { .name = IOV("bnXcpuw"), .value = IOV("nJgqpSRNXpqpgBIphLbevuewCpZuuRllyMghUuwC"), }, - { .name = IOV("qViSShZrqGq"), .value = IOV("xaAYhdQRCcROREbMzlAGyXVowbBbxcQVrmrOqmFnRpLKqboRqJjyjooKcERWrIEhc"), }, - { .name = IOV("ZEsq"), .value = IOV("eZCUZBEeaJfcNSbjkPZfmsUhIPwcIWA"), }, - { .name = IOV("jDuYeqfCtyiL"), .value = IOV("DWQIQKaDdupUAdSCRTTjSQUeRWRnczoXdOWvwMqkXgaVfbwPnQioRUcozloMfhFNEZbFyMkPj"), }, - { .name = IOV("DbAvEbABBWC"), .value = IOV("eDNTuiTzesPclHZzmAgwtDuK"), }, - { .name = IOV("Y"), .value = IOV("UILcCfBnXThUXwxeBMsnSipYYiQstPQfhjBWmD"), }, - { .name = IOV("RFkyQBMfPeqkwnFR"), .value = IOV("dTGgOPdPAgAEUFIiTDqtoJSxtWZRsGenPkkoCZPfGXTXGxJBrqdOEnaSbBYAYTVeGxcGOkUSiV"), }, - { .name = IOV("tHffkYOlWfqmyUcWDcd"), .value = IOV("FupDvgmqYdVjrmuLzjPufpsNyQLpYeIhncyJckzeDZDpqR"), }, - { .name = IOV("uJlnYXdKYHIeuRXgC"), .value = IOV("pgGkTIUrwaHHonnUUzIqgl"), }, - { .name = IOV("LHfne"), .value = IOV("BQzTbExOmPFXMByVnzqPNpqpEUkCApsReipWBQjXPKKmnmaNcWKwVwcxTvErHNgvrfBOu"), }, - { .name = IOV("FjNhiKJAPx"), .value = IOV("jXZDeBiPHVVXEOh"), }, - { .name = IOV("ETkGxT"), .value = IOV("DHTImTFRixEhbQrFwCwiHMVXBUHnRADTlTzIJWpoNfkntCep"), }, - { .name = IOV("ddONibffPe"), .value = IOV("BKzJuKCQHazxRFoUAfuURIbJmDzsldUJMtMGMoMnULf"), }, - { .name = IOV("gfaqHMHYozAAbzxrvrH"), .value = IOV("RNgwOxnluxJjPzQEIQOUOCRNkOoOBcICKzPRhBUIxlKCaXxbNWGojpSdYJxzZHjFNoQUNZAJHuqro"), }, - { .name = IOV("P"), .value = IOV("mODYdUujtxGPVKpZmxiQKceaMWPf"), }, - { .name = IOV("yWxw"), .value = IOV("LCgufZiiYNmGSfSLgBbbjouHstjHa"), }, - { .name = IOV("LdaZJKCzKxDgomzA"), .value = IOV("VnKzSduZILwuzZFNKDtrVdxxlVphGAMEVCGYiiGcnkyEugARRCxgTbqECcn"), }, - { .name = IOV("iWo"), .value = IOV("CstRCgSaJqMPDKftejdUTirRwcFRqkmvJwUhApyvqVsteHujPrGnnRlrbkMrHATqpL"), }, - { .name = IOV("yUBvffUBHK"), .value = IOV("JewqduGFhJVoUZVIqmLpaYCxwTWtCnQPHnaihKIVSZEEznjjYRUZMJnSbM"), }, - { .name = IOV("oTQsiUMPixDN"), .value = IOV("jBrgKqEcQeNqKEjYdSCRCWNbAIXJRKoZwjHnPheIOsISJPyJhiozOEDm"), }, - { .name = IOV("usUiiDjoe"), .value = IOV("yIElhaWWfWghtgxAPFChkmEWtFmxpbt"), }, - { .name = IOV("iawfOGyRpd"), .value = IOV("EgNmWDWvtFlnuwhfnESyQzEKqIuVwJnZBgewTYAxwaJzbBPYuIRi"), }, - { .name = IOV("ZZvWGc"), .value = IOV("aAlPnXWYtRBYHOunZzeqDVabiXKghStNrQKKFUats"), }, - { .name = IOV("cVIVgsFLwAFM"), .value = IOV("kHwANcAFdsVaGNpvifyoQKdajvvsOzHHcKFnxlzDvTtDJbVziNTHguRh"), }, - { .name = IOV("RsIMTodWrYtljwc"), .value = IOV("IcPrFjmUpDQOrPZpfkqWhsAXkZsuYS"), }, - { .name = IOV("Io"), .value = IOV("LzbHZFvbyjmPayLXwNhgGHvqalgCmpkVcsKkHxVeYBpDaUUVRDFaRTfsUTHgfDxtbmhFrwbe"), }, - { .name = IOV("DVVketKaWVYziSvrJ"), .value = IOV("RTpIBKhuIpqiWktjUufGS"), }, - { .name = IOV("vcno"), .value = IOV("nWYwFfYxXLdnXICxJnWNNnOvxytazSlIzdZVxQrpGvzgaNEzfAuwFVHgZeapxJaQRtvPDWeXcgfakpTa"), }, - { .name = IOV("cPmFY"), .value = IOV("ABfbnVhHKEqNaEECbpezHEkudInPSDCQtIbY"), }, - { .name = IOV("yCAKACWzrvJdVnojrbHG"), .value = IOV("gZzyBAhxAzRBnkWpfsIncvPDgYnOTWbKFoAbKxlzxmXyoecOpmauVdJCSYFnNOdaoeRgVxe"), }, - { .name = IOV("krVSJSokNfhjaNp"), .value = IOV("hBthXZsAkTJOTFPiLuvfiKyPdpVD"), }, - { .name = IOV("RaBPWNYMrAMjBJHJg"), .value = IOV("vYMlWcyZtTjnmXhuOnqY"), }, - { .name = IOV("kovlvoHbiech"), .value = IOV("FtCTAbpbUQYz"), }, - { .name = IOV("iNkAdg"), .value = IOV("qmHNhmgwMnJfymnToTjHlBXkbuyLNHXjSUOfEf"), }, - { .name = IOV("xniNclzwgpVWwfba"), .value = IOV("drqwWiTNfgSKraXehlqDLhXYqkTctRuXvEgNmYo"), }, - { .name = IOV("VdzkuptXoJkzGS"), .value = IOV("QwELeGCvmJJWvsDWNuHpjDbtXKiUuYLtBGBwKGSVTKoWMpZJdqQsnFNjhzNo"), }, - { .name = IOV("AnmzBeFMEtCpMCUmcLxT"), .value = IOV("gUpiCUApIPgtYuDHPS"), }, - { .name = IOV("AWbDMfDVadUeeYey"), .value = IOV("htrAajPlFSuRXFQhfdKmrZUJxIaQUCju"), }, - { .name = IOV("tN"), .value = IOV("VMvCHJqcBTCNRcRGeFnfJKvqQteNkiICxdyzVpZUcsdlnpTxPHYqqvilZSSaPjyhkzREazZYVNhQSnuy"), }, - { .name = IOV("VMqm"), .value = IOV("mVAuFZWQsmizHOFf"), }, - { .name = IOV("LqJmDuiahimNqxZ"), .value = IOV("vgKggwiweDPWqLwLixwQwZCUZbFOHsYAEgDCJvtHkMwdujfkakigQvyehx"), }, - { .name = IOV("uUWjTTy"), .value = IOV("cuavqCWDESiNNNGQkexMvMklHWnlbqxTJjWUGxtgexNowmXnDtDQy"), }, - { .name = IOV("jCknOr"), .value = IOV("kenppgUyOhrBrSJZaTyVffBSRLGACycUUEIsBpNmYlfr"), }, - { .name = IOV("Ksm"), .value = IOV("OQEalFGvTypdxZJuEtfPzbRuBblXobDyXvxdvNnSdRwiNqkYPNvPynLxaDFvI"), }, - { .name = IOV("SjvezYNKOMlvkSqZzfoj"), .value = IOV("iyZnYHMSnOiWnqnmAOclhttKlPRfeEUqCqDYyQWfcmBLVdPFCq"), }, - { .name = IOV("MDGOSS"), .value = IOV("YGlzxgjjkjHjiOGRiZN"), }, - { .name = IOV("bQXAMqfVgpTQejawECL"), .value = IOV("NALlIVARHuzyKOzoxeRKmhpKScggQRtHZKdkQYcDkHsq"), }, - { .name = IOV("uWXfaJX"), .value = IOV("RFdGznlnAPVmxFIsFCYqdtToaYpPCnmpSZOQvQH"), }, - { .name = IOV("NkLCEG"), .value = IOV("XTjujuFJiagSZiTJUZWtLmjoVXMdsSdZ"), }, - { .name = IOV("Nn"), .value = IOV("EQMutzcqRKxmvYbWlyDQtdFqY"), }, - { .name = IOV("WpBCfIuEzYUcsPS"), .value = IOV("QYoaJwUYZlbHOfnmIqROCzdwjCxwwmobXcwvVlULXOAEFtZYYixShfaEznHJmb"), }, - { .name = IOV("CpnXjiNjjudAZObwR"), .value = IOV("hFYjYKJVdvChEAoCbDzxOfSeyhNlcCXtfjjiNOnvzzHelPXqfzhpYrRxahsfZeDBIkGmhTZmcYN"), }, - { .name = IOV("pFLwP"), .value = IOV("McaZrLqshpJRihNljaquJCW"), }, - { .name = IOV("CdkB"), .value = IOV("VBWZmVmhDWlPQwMzYtMmoABlqnZiPWIXgEzPacdpWiGiWXOESfjOENeeweLZbJIOVIs"), }, - { .name = IOV("pHABPD"), .value = IOV("vipfiOXfsIGTNbUrpyecEFnrRwsiPOxUwEVymlaMHPeWSJadchNShjgH"), }, - { .name = IOV("AZWblui"), .value = IOV("sAmHnpU"), }, - { .name = IOV("BdVqrPFKaTfptxSaLu"), .value = IOV("fwKTjxgYgazgHrQudKkxHZoCrKRIQkbztbANdLUzaVVtQyulvGrqhQxdtWRLIrtHsx"), }, - { .name = IOV("idgr"), .value = IOV("ymkOKLIRfRZuYCESCvbqIdKmIOrOeXVeJuxVpxnMqDsB"), }, - { .name = IOV("SgeEOBMrwaD"), .value = IOV("mLZFijMgGcrUAFEKNVNYrFVcJDJZWruySVaqHredwJyJyqQcYltreMlmyVEzXFMGWivDPjf"), }, - { .name = IOV("qQMUc"), .value = IOV("VfaDgDtrDQFvFIIzDCHjhtVzw"), }, - { .name = IOV("uyarfm"), .value = IOV("NdalqqsIcckcUhcrPsFxx"), }, - { .name = IOV("OcJMdMusFASAwtq"), .value = IOV("LAGWAxTtzHrbCWhAvtkdVTMsjuWahaqTBEfBMaedFQsveMMbqBxNfyoXCySyFMyWCCiVJga"), }, - { .name = IOV("LIn"), .value = IOV("BoCbDcQWFyKTdBkyOMjHRUJtZazAhqyxHHjSCRayRTIhrrMhzvAMOkKJcqQesn"), }, - { .name = IOV("UNSqFsPSNzlrkqvPx"), .value = IOV("lbncvt"), }, - { .name = IOV("ZaIsc"), .value = IOV("rmurUMFq"), }, - { .name = IOV("eSvMoiFYoziWezILA"), .value = IOV("aOXOGOjZoaryglaJvInvHadTeHPFrac"), }, - { .name = IOV("GbClGTbgcPJE"), .value = IOV("BKTdRvtznLHkDEAYNExnMsYNNWnUrdLwJu"), }, - { .name = IOV("bPBDCKkVrwMWIBpKaGWA"), .value = IOV("egyV"), }, - { .name = IOV("DgovEdVTKZCQ"), .value = IOV("ZUrfIeeWUkOSLkcgfewNenGElSZmhIHdoSM"), }, - { .name = IOV("xiFyOJzWEwVQfr"), .value = IOV("hwEtMKfpbyBqScjDONJPNLqsTclTpVhsyr"), }, - { .name = IOV("UQBcYQBW"), .value = IOV("DrnluRsFzncitXXEjECjJHrPSOzJCihHdzhkUtVHYkXLhksUasRZMsrnDZPWIxDCLQK"), }, - { .name = IOV("bHlJm"), .value = IOV("yBGneYScTJuhgoOEXpHjFokegHKahjcObyoAezIbqOGwefwlCuEPbDPDif"), }, - { .name = IOV("KEtzYkAgLlkb"), .value = IOV("dTRNgrDJqScvWsIRwHdmvPfghCCQQLmjnFUSthLPefnvmWwhEaMOeTjFeTFsAbnL"), }, - { .name = IOV("IXiP"), .value = IOV("SeBBtquvQBDrXWUufuOoZZ"), }, - { .name = IOV("DQv"), .value = IOV("XDNMjcLOOxKjzGzEhvVPER"), }, - { .name = IOV("SAPN"), .value = IOV("tNbwjJPmyvnQoBhHzGyxHwLMavPPOOJeMLbfqHmCXSJQOksmvYPtovdIrzyZzQxFTaTClpj"), }, - { .name = IOV("inhxA"), .value = IOV("td"), }, - { .name = IOV("AjQVTiSCqmFMxlg"), .value = IOV("HzmTeDyiTCsJnTnKiGdxlSeZalfbrxtusUkh"), }, - { .name = IOV("Yl"), .value = IOV("vsUEBBAUjnMvxmKCfPrI"), }, - { .name = IOV("pJhtA"), .value = IOV("xZTZMbSNnOzQaGmfVYTTbFVCAAJcaBATQFcstiERBgdiGEFlnBAPGikNnkGBTUqKEkYuyuInJgoJR"), }, - { .name = IOV("bvJeDmNgliion"), .value = IOV("iEYUEFEaUWQsIOMHsVygTUMFnFghEF"), }, - { .name = IOV("JdOxbZrN"), .value = IOV("MHLMaexMMpUwIV"), }, - { .name = IOV("wnlJNvIn"), .value = IOV("bUQKOtaVuHZSDKVzWLPWbQjencIQmQFfgNFjtbDyFzLOOncSavfkbzDOKMlC"), }, - { .name = IOV("IrgrHvxpYw"), .value = IOV("MQzwOOyPoXSdKzjnrKrSmGJVYfSiXETLgGYbdIMoyNecAFvLNgZiXsYtpbYGCLxDCbYXWUKetu"), }, - { .name = IOV("cJEODMvscmqZV"), .value = IOV("pRccjYyUJiPFJYfDulfbegCzIExrdOJQUzwbhGzSDmeZwBxzfIjQHgPhLySaHueKevyohdyRF"), }, - { .name = IOV("nhpdLLleTYXC"), .value = IOV("UWcebcLhQSuMEBglZwBVUdccFwdDZuoVuuhmZifaJsEaoJoNpkmuLPdDUYfstpebirf"), }, - { .name = IOV("icyTdjPnVwHTyXzrMn"), .value = IOV("FeZJBBblFXJiFjphDJiqoFhljq"), }, - { .name = IOV("FyVgYxZKBYhOndHDowFd"), .value = IOV("RYxDbHpJQrRlVSaZxPeJyGvgKtWIHuSoOULFxTxKrkmacXhfgjjkgsYNFBWADN"), }, - { .name = IOV("NHyFacLAtQMH"), .value = IOV("vizjIgmmcUlKnMxGdnkktlZLUmTZFrnmAaMIfMLbEbfUbFGeIuoKgqimPeI"), }, - { .name = IOV("uooUJG"), .value = IOV("tsDiFQfXWBNlRxYVBASmTaZaZIja"), }, - { .name = IOV("FWgoibbAX"), .value = IOV("GZKybtLSfuDbA"), }, - { .name = IOV("zIGfRMxEuQxyvIocXy"), .value = IOV("cuXVKjkCgJVYXABaUWKXYPNBuFLyOhEsfbROBJhfz"), }, - { .name = IOV("R"), .value = IOV("sbehcKeXzaVBDDKkDRkGVPiiLL"), }, - { .name = IOV("Gb"), .value = IOV("DdGPzgbFObrxOSZeZwmcfiLNGSjkZJBGrKniiDUkZdHjPWwevqrybluGqdThNQlIqm"), }, - { .name = IOV("htSIgatlFSwG"), .value = IOV("mvHhRCCxNIjLrCVNmUiRXNFEfwsbgJPHWGXeGimPtWBXVKP"), }, - { .name = IOV("KoViCsqpfzqG"), .value = IOV("CTbWDFWbwugqvsYeXZuUKvJxDgKbOKipPjNR"), }, - { .name = IOV("wbTczGorYLwesSZA"), .value = IOV("ltyHDXMqwDIXnJwAYPkmpTNRzihFLOBgSwJGyLMeLhhSMLVPcn"), }, - { .name = IOV("L"), .value = IOV("gfIJWVsLdmHRdAKhCHDoJySYkTfFvYJZjIoFMbFVbDmZOOz"), }, - { .name = IOV("yoJkLdRDj"), .value = IOV("bCHujmyuZLmrfIBzTF"), }, - { .name = IOV("CEXhfxl"), .value = IOV("ZNrNrxWKnDtYBKyOjWpZV"), }, - { .name = IOV("ZS"), .value = IOV("vuEFEntHBEcKSrydHyQPOKaLkudxQRNCzDJMpvesuaLqWcPH"), }, - { .name = IOV("eFpDJcIJKQZEWWZHdz"), .value = IOV("qEEbjFtBhsNViVdQyfbNd"), }, - { .name = IOV("smvs"), .value = IOV("LPIfWFXSzTxqcMCiTQhSFDmxszUXnmYaOrZBCBJcpiqjcEmxkHGvRPGPWrH"), }, - { .name = IOV("mpGdvcZqvIUZUwTA"), .value = IOV("ymOls"), }, - { .name = IOV("BPJTTvIrI"), .value = IOV("ncqgbogdZJxLZoNHsLHBkebPmJMPEiaFyjiEgOtPiPTnZPbHXfEXMJmVKYauGL"), }, - { .name = IOV("gEkaupndulDkh"), .value = IOV("wz"), }, - { .name = IOV("fscWnfTUi"), .value = IOV("ZGwGiMOpfYUaDqIrtSl"), }, - { .name = IOV("RvCqiuBOfnDY"), .value = IOV("QJeEffvjtUCNzRlekMSFAOomRVTgA"), }, - { .name = IOV("igNtQUVMmUt"), .value = IOV("MzzKrXpaemFUUsRfztVXQWNZNHcMkPWQLoMAN"), }, - { .name = IOV("BIhfRJMFxZlHHI"), .value = IOV("DJryvtKPbv"), }, - { .name = IOV("kRUzmNmLVHOgbit"), .value = IOV("gfCiXvitwjgXBcoqZYnJrpOgdgrsOyGKRemtiDEEcuIpIdOSjNaOV"), }, - { .name = IOV("GyOXLOgbh"), .value = IOV("BXJPlOodJXOAgRqzVAAZmQjzVbbo"), }, - { .name = IOV("TpOSbWshFFjV"), .value = IOV("kNnQtAYirfpYxrgevRqzTCacRkjVVVnGTLzROZshkNrNAKlBMTCzAxOuAQJ"), }, - { .name = IOV("BMxlSCvaduOMBiAvQxI"), .value = IOV("uXziMiaTcqytPLKOprFyfDMkJTaxxThvllJsBlROlbVjabGVXhSTtkBTKtzftYOeSqgxCup"), }, - { .name = IOV("g"), .value = IOV("DCvWkaMPdmIgBOJJnmJzgQTZSaIYQbmJCooeoXZpEDMfmrHOAFzuMWxweCIcu"), }, - { .name = IOV("objRHDrGGpmXWcHjipk"), .value = IOV("HNpMOrAPFkDgVIMptirsaFdPcJzQyaPyoisygnAiIpnjjXOibIOQDhfZrZvvLziTEzeHHn"), }, - { .name = IOV("vCinWOkV"), .value = IOV("hqHYFTQMcmfaucCDmBmvKzpBzOlLbfUznbtBMsCtUQNZKL"), }, - { .name = IOV("PWjAieIMgZzpy"), .value = IOV("YyDKUxFCwVHUmylYzmzReibYl"), }, - { .name = IOV("HZjygRqFQDvIQlVeyt"), .value = IOV("PmkLCyhjHYMjyMSxdzQTzNMoUvfvHlMwPhADuYDlSARRdMMYcqLZ"), }, - { .name = IOV("WXA"), .value = IOV("TSbYbemDYQwhOSytUlZmBMCfDcFqNhWIpMxzpThwWzCIAsDayShwZuguhYkQaeP"), }, - { .name = IOV("JgHjD"), .value = IOV("itbXsQR"), }, - { .name = IOV("IYZmOAFBNUa"), .value = IOV("NgBOLcPcs"), }, - { .name = IOV("TUwAB"), .value = IOV("pixpZBWUKNAlvuiCTfVscDjxPJEtGdNjldJvnjKvzkEwIPaKMzKGtecSjp"), }, - { .name = IOV("iDesjdawFfnhz"), .value = IOV("JFhNbHDNE"), }, - { .name = IOV("MY"), .value = IOV("sqBOLLVCOYYJXTse"), }, - { .name = IOV("TwBvIpsHlVhfxb"), .value = IOV("eLJLIzDqejctVWlZErOOjTHDKI"), }, - { .name = IOV("zsUntCvRXY"), .value = IOV("myLGbhB"), }, - { .name = IOV("xaYcNF"), .value = IOV("eAOnJcEwGjgrzLKSzepamJcVCUZtmmKBUYexwA"), }, - { .name = IOV("eGcnSPztlprEAIxrUg"), .value = IOV("WXbDHtOtAjbhtVvYAvnhauoLTVDtpSi"), }, - { .name = IOV("nprOpprGrZqAgJIql"), .value = IOV("QpWRiRGgwRXwlkEabkUSobZkyRdGIOxhESpSrndTiKjSOvxgNVHKnpkOUPxGbXnP"), }, - { .name = IOV("ZklKsxreFpAmidV"), .value = IOV("TYRKnTRTxXSPZTTQfPDhvGRlLvIFJiwKimZxbqcpQwJLEtlKFqZUcSdrOvxCUtQRBGzPIXTYaDLe"), }, - { .name = IOV("UOdprhftFMl"), .value = IOV("wzyTtSJHelYoFtnpMUkcOfNKcauLJYOEemFJFEtxMlmGyPqnFayXgqKIkrZdXnsuNSxoVdsLMjq"), }, - { .name = IOV("ovmVEiATpF"), .value = IOV("iBCycWgPgeURXTjPLzNuJLhIdrsHnvdtFcndJCDrGDPQtKQAiAJIfdpViCcuHeemCrCDL"), }, - { .name = IOV("XeMUGgTjJcDElXR"), .value = IOV("qmPcHwAMhCK"), }, - { .name = IOV("ma"), .value = IOV("fXZFxsghsslbxWBqZKuOzeFwbDdEJnjbWjhoLAAlxrOGXuvVRDOlMCmVL"), }, - { .name = IOV("xoX"), .value = IOV("NjLthLEmFNrVuQGtwXLMCUlRJuQqkNQVwqkjTnLHizmqcDHeTx"), }, - { .name = IOV("ozmDehGdzSxMGXgReCY"), .value = IOV("QUtjEyQAGdBNWFCzF"), }, - { .name = IOV("IlVpX"), .value = IOV("Q"), }, - { .name = IOV("i"), .value = IOV("mHTzUFBBKfnPNuffgxuyazUDpQvHBWAMLxPdlQpaxsKPICLdMpykqcsLM"), }, - { .name = IOV("kKiZZpIwVQN"), .value = IOV("vAfOhijBEXCdYRxWIZUpDUUMEHNLrET"), }, - { .name = IOV("uRKyusVXCuXJB"), .value = IOV("UueijrBVgkUdhONCGnnEMT"), }, - { .name = IOV("oQDHbSkguuNugygc"), .value = IOV("hYNdcKEGkpimXsBBjdtNcTvreaDBzcqotbAcyIMoVwS"), }, - { .name = IOV("ye"), .value = IOV("NbkGr"), }, - { .name = IOV("hyekKpoBhaqMc"), .value = IOV("UqpfSypNlMeguiIUSeZpPwBorZhraz"), }, - { .name = IOV("f"), .value = IOV("v"), }, - { .name = IOV("rKCOcM"), .value = IOV("aKOD"), }, - { .name = IOV("IxseDIdHuEzbel"), .value = IOV("LNIyJuofuXjWCRMhBGIQLLrDrDVJRqxBjDrjFctUuCFUhXXEqg"), }, - { .name = IOV("ljnFzoeEJOMb"), .value = IOV("aADAEbWcPZauAHYojDopgBHHxyvBWJTetFJawgc"), }, - { .name = IOV("fiBwIKSnkyvLkn"), .value = IOV("nq"), }, - { .name = IOV("GpCwNcHWwNbWAHlEK"), .value = IOV("rUpJGuGxlWjmKWoineZh"), }, - { .name = IOV("MpN"), .value = IOV("cHBLFinxDveqzpZfDjS"), }, - { .name = IOV("aFtBRrQJMI"), .value = IOV("XsYVAQgZKMlzsKwxKGOlooPPgyOctW"), }, - { .name = IOV("dN"), .value = IOV("beurXom"), }, - { .name = IOV("hEtqxkGOzpqjcY"), .value = IOV("XnIxqDCTUKawbIeEOpbNqwsNkAcpPRqgkBTE"), }, - { .name = IOV("LgoTGYaYDMg"), .value = IOV("BksDSsehzGDrEqzwobVsLiBwHyYuSLzThqFbOUmURrXLfMkAfTixsPRZfDmlesRfwDqQsy"), }, - { .name = IOV("iKopQmxAIVUeCuQ"), .value = IOV("bpwGxanRtFRRsMLZq"), }, - { .name = IOV("A"), .value = IOV("utQVlzsZagqBfFpSisPngLsWbFecfeXwDmMrzEJmUekrJ"), }, - { .name = IOV("zFsxQumvI"), .value = IOV("QFHBPLbYIdYVFGIupieqqhoFJPZgDVJlvxzeMoHgIeaL"), }, - { .name = IOV("YodXmvfDgk"), .value = IOV("iBBpyhBRmWqVJVmEDjvSKvykezBRSCoUvJjsuRZDdAJJdYtRWeJOKrWFRxFxOaFXNyEbzOMjxVhQYZsZ"), }, - { .name = IOV("FqEbtcX"), .value = IOV("OyjGoeFsPiHhmIXMmvbWrMeHes"), }, - { .name = IOV("taiOVVBwMoZUpfjMs"), .value = IOV("xyefocsm"), }, - { .name = IOV("sbOhlwGhRxseNXkdDl"), .value = IOV("dBmHSuQnvRdFmkqZxvezOq"), }, - { .name = IOV("EhARhnV"), .value = IOV("MQYqmUtSpgYmrPASwaapkkZIVNtnxXnghp"), }, - { .name = IOV("vHFFTTywkrwmdjm"), .value = IOV("IaiyKBxtdYjnZARMOIoSRRSFjsLyw"), }, - { .name = IOV("e"), .value = IOV("wFcCsZXGabQyveLJs"), }, - { .name = IOV("WUZ"), .value = IOV("kBHtYonqPOLTQPQBAeUrPkEmUfXM"), }, - { .name = IOV("hUrFGTyC"), .value = IOV("VOFnIOKGZLWjaOdYFmgEfpdyHcYESSadQojPEHQfNMbEQHAuYtcygL"), }, - { .name = IOV("SmlJJ"), .value = IOV("rQXLAulcvaxqrAo"), }, - { .name = IOV("vbrgYnVbIGatnjOW"), .value = IOV("rPqWBtRBDoshNwnyQViBvLvvXwflqm"), }, - { .name = IOV("wlevGjKxl"), .value = IOV("EuDRBkWnmNEsIRnOGKQcdUMRlDWAZsWYEUoFwlRCAbarnsZptzQlnjqm"), }, - { .name = IOV("YpAVglaDcbDrrWbMQi"), .value = IOV("tFekDuuZLcIPhKduXKeOzrqucjbkLCBGgOSPBKjjyngVyyYUSFsfwJecbMEnssTFCysADCD"), }, - { .name = IOV("llHdgaJeF"), .value = IOV("VuKDASUGJGlDq"), }, - { .name = IOV("ZbJKyo"), .value = IOV("lFQYAIUXTxbiZbDMbMWztTHlSWFDQhuqIQCbKYRmRGQnG"), }, - { .name = IOV("LbFBgb"), .value = IOV("GCujJgzRdGTxhbmIMoIIDJDZkHYDhcNTcCLcpzUaYnUsWFatvapnriqalmuOUlSjjNapzKYXyEGP"), }, - { .name = IOV("SLuA"), .value = IOV("aPrCDELZiybVZbNjOBVKGbKaCqWYaEUNjLZRmdlHD"), }, - { .name = IOV("CBPeCAVeFXdY"), .value = IOV("TDOzYmmCkdpRyxdhyWIujpvdsKnBWNxmSCCrXzpumjJabdfBdtFveUnObsreiTqIh"), }, - { .name = IOV("ZfTTJRAsoTsyqmZuOQ"), .value = IOV("WLljtCtlNugsDwDHCAjQLlrHZdtOBbySiEGVsHxzFQLkELoMRlk"), }, - { .name = IOV("iIK"), .value = IOV("dwrtDGAQm"), }, - { .name = IOV("mjaEyQElLmkvnlpaPH"), .value = IOV("aIyGInlqCIgFGPGkPtjjZHzciFqJkkSHhxGaGIWNNEmTkTHgNMigLGpTOtEUoqdICOtPVSeFlM"), }, - { .name = IOV("xyGrXAhQZW"), .value = IOV("KiFXvHAvDWqJvFnvdsCAqmmBGmXLvwf"), }, - { .name = IOV("HGzNliVldNnZvHVFqC"), .value = IOV("mlDgfgShAMdvNFhxvPavuXn"), }, - { .name = IOV("LOQaAPnAbjqdnpvShZw"), .value = IOV("pSQhqvaMLSMJuxFBC"), }, - { .name = IOV("KkUA"), .value = IOV("Gm"), }, - { .name = IOV("YKgwsdqxjSyIJaiR"), .value = IOV("roVOifpwgXMXQPvFDjKJWQuqdlRBVYdnFqwljHmMgojvZnZVPdXVCXDXYLhhWgyQnns"), }, - { .name = IOV("DLd"), .value = IOV("bglurAboQjzlMPUCjRCagvsAmwEwILkisdbiSEeZfwjjUevsBpUFhDpieNPizYxGwc"), }, - { .name = IOV("wuCBPybWxjWzyRfxZ"), .value = IOV("ZBnodWHaOVacGSscheqWakIjDeWqWarprlmB"), }, - { .name = IOV("lQihjAOeLmWKvmZkA"), .value = IOV("baAVhZgD"), }, - { .name = IOV("gmju"), .value = IOV("SLnKjBrrrJGTwJUfndbblvOOjrBcDkCDeMAeYnIPjGNpzJStOi"), }, - { .name = IOV("terpzfFqTpkFauEDF"), .value = IOV("EoWdyc"), }, - { .name = IOV("ehbdkhTfldIXkpI"), .value = IOV("YVzQRhCXMlhKjtZNt"), }, - { .name = IOV("yeXbMFuIGbqIyCSIoLTJ"), .value = IOV("CKCOUPBBOuuOvFPRQyQShroWxsdzpfjPFXfZjfFGBPffmgukpn"), }, - { .name = IOV("ujMaAaJwdCRA"), .value = IOV("OhRDVJlVFFusDtTJMmzzYKdsjdzhTWzLd"), }, - { .name = IOV("ljvZPNXX"), .value = IOV("sSKsknyVDDcluHyONHcCdIuzCOWMxZPgQsKgAMRkrJYRjBrKsb"), }, - { .name = IOV("yyJqorNjlOJeKd"), .value = IOV("aeieKUzXJiObdKoOTqKtDatuINe"), }, - { .name = IOV("rAcrNHtvRvxayQW"), .value = IOV("UQCKeKijuiHJXcxINheLuJZenUEIKcLbIVnSfgyAxyh"), }, - { .name = IOV("lUUk"), .value = IOV("qBCtswnDEkqoLgtZHarXDwfhoTGihxavdyJmDRHbroXUicSTDkvODNjSaEDfwMdOVtXvkSTnJUx"), }, - { .name = IOV("gLyWDfCxkqdSKdu"), .value = IOV("pAUaTBWtxcECanfxJJtuyziKbpkjnpPAqnhAOKl"), }, - { .name = IOV("GEUqFQdyXfldAAKlL"), .value = IOV("YDBxTlMjmbBHTxulTkBaNeTSizoDfCfkCpvqeledhjVvfyeqXNNggX"), }, - { .name = IOV("ITRH"), .value = IOV("iaeUsjOQHLhKksdh"), }, - { .name = IOV("hDFRlDvIHtVTYcVfnAjA"), .value = IOV("lWPhchuuzcyDDWpHWIRSQtBLESMgYNqVLJBMgAdKYJEiPBbvjwiXnuXMCtIVL"), }, - { .name = IOV("dtLkuEFUjQtKOrC"), .value = IOV("BMWeJSYKVUAEvJasQDdvzrZflwYbczEFigETLGvjfXcCJeKUWCkReVGEXVHhwEmrgNekjQbcNLnSkZ"), }, - { .name = IOV("QzwhMzG"), .value = IOV("dwvMabRdwrEkuHGxpMNJgMnODNQxIanfygrKnBarPAtewCRhooyNt"), }, - { .name = IOV("fYvEOFwfNyptmIjzumgu"), .value = IOV("mBTFTbjzuAxbDtCdzyxKRssZyerqcl"), }, - { .name = IOV("xHTSuLYpsTn"), .value = IOV("DTvjviYElrrjrYQUSZpGUvNxMhWkDBAVyIINhEGAGFKpRjagpmwoPinxEfVSqfTMxfM"), }, - { .name = IOV("OcqxnBasMHyJtXPj"), .value = IOV("lQERINVWMdJUPqxfHOIdwpfairPERKmFHHvHEGVfuBGSTrRiiMlKsROAzQx"), }, - { .name = IOV("CgtDhRxdGQyrp"), .value = IOV("UcmdTgZxRGlxieoqUpxe"), }, - { .name = IOV("VOGbVfNrOL"), .value = IOV("BUcBdgKJglBlTfyCjVTUGfyGGGJriUHNGpzMbyAVLwB"), }, - { .name = IOV("oNBRRwQkBd"), .value = IOV("aQIfHJMbEysAjFfulYLozZnKfLA"), }, - { .name = IOV("XrlIexscBMNaIki"), .value = IOV("gRUbesHJrrjouqhbeHdVmXvEmMmCbjtKsIbRBfVqaazzFUgoiSsIpWqvgHIyqrxlIolYc"), }, - { .name = IOV("dFuEgggXXWYoVrSiIJq"), .value = IOV("uTLGruArcxfFiFSwQASIXfASZJORaWswcEMIMsPTgiuRxLJdAOLdBcEOuuIgpDQQcGiPjRIPvaxbC"), }, - { .name = IOV("NYQGLoraim"), .value = IOV("gqQsrmyKnv"), }, - { .name = IOV("FqynZjdKhlCKMshxqS"), .value = IOV("yqYYkoCXAqzlMLVaEMuUsafx"), }, - { .name = IOV("ofpzgITW"), .value = IOV("QbeYZHubQaVltYlEQWIgvSSiyViOeXhDlCQHiOXIGEStPGmwBXkQoUuhpHtwForP"), }, - { .name = IOV("cqtMUkIBzzBAPSzVG"), .value = IOV("ExdHaMUowDrGuGECbf"), }, - { .name = IOV("tmSv"), .value = IOV("hIHlvKDksnZkKGGU"), }, - { .name = IOV("DWKcRzVodKPAvjV"), .value = IOV("RJWGqLVkIybEewiOAbPiMNPNTMLowDtMQuWcaXMbabMsENwOTBVjeogVpYWFSIPxJRehigRxLmMUJJbE"), }, - { .name = IOV("dcIhPs"), .value = IOV("fYlDnGsbU"), }, - { .name = IOV("si"), .value = IOV("vVAIJrCwCcxU"), }, - { .name = IOV("nlpsYHkMCIzgSSwAQOd"), .value = IOV("CDGNBepupeatpTKofxRqXdfabPxvGywFJjkRQhZXtHBuSrNqoe"), }, - { .name = IOV("ch"), .value = IOV("tePtUctJAXWdcEOvEKhresMmpDjejadEoCCEPRVrSSpWvDHpHsYDpjIEDUXdprIXgBz"), }, - { .name = IOV("ywscnEGYLypHqFUVDuZ"), .value = IOV("lVnWltvGQkuWXJCKTZeafDCPuPTEZSi"), }, - { .name = IOV("zPWrcKvgk"), .value = IOV("mnGjFZIsliuXnLNMNLUWCOYCAehswpFuuRcLtnVhpsCIkyqwBkuJOkzuCQtKcRBmkLGaaJByk"), }, - { .name = IOV("ETOwX"), .value = IOV("ijGCEaCkrWHpvzKHbsMbhiBarYfIsWjnPqdCFtPd"), }, - { .name = IOV("N"), .value = IOV("wkPlqDWmanbrerBVwQHJjFDwFcVptimASVqXBUHgWuHCkjMstYEubwLBejHFBIFlPyEjI"), }, - { .name = IOV("BHTXkvZOrWlBF"), .value = IOV("cfFcMVbhdiIErzNQPGfLvDdFchqfcTUfBASyZpzRkJAxmifTrmiBldPKqqUtJakbRfvGt"), }, - { .name = IOV("ZFw"), .value = IOV("uRkICyKPPNzufUuJsXNvPIXwOCFpbCPhHRIoOZQCLdALGumYlBclzKfXFYByxxKxY"), }, - { .name = IOV("eydQniNkygiTNdXv"), .value = IOV("DymMWxeSvVtKQSvsocuIQCdLFRpCNiGjQjwFFGZNDhLXDBgvcHyNKXqwhYXoiPCLh"), }, - { .name = IOV("twmomxH"), .value = IOV("WquWngjJrGDJOFWXRjTcqjufLkGwyvjuTqZkHwipZyvvfwHUfqkhPAtpSO"), }, - { .name = IOV("zqPgNUglUHWOYTe"), .value = IOV("IFWZNXqdmWCyEyuvsadPGgdULoZqHBzqMlhsNAxMbTtFgLFHuTiztnz"), }, - { .name = IOV("dgWKZDbbae"), .value = IOV("nCxznvDSNUcMJjqpulITPtFFUaRM"), }, - { .name = IOV("KgDzcg"), .value = IOV("ooFuvtrdwyorJDfnepQjUwJEpeDcBOIXxltNWmEQfFFHAyCkhhvnltlsBOrC"), }, - { .name = IOV("WlzrGp"), .value = IOV("NkzRPRoUtoNTlIIYXdcDpczAyTpgIflhxSulvPvRChRWmgGGoXqOKZIAmYiJR"), }, - { .name = IOV("MGKd"), .value = IOV("qKfCRoeordjjFXIsjnqpqrnCxostBKpWYBpA"), }, - { .name = IOV("Zehtiu"), .value = IOV("GJhipEItCyxmAEAUSIsnbjCB"), }, - { .name = IOV("juWECLIbnPIWc"), .value = IOV("HiYNAzJCKUwgGcefiJPLctkPBeSIEDFbLvJWlTWtWftNttuqlexBPyzuypAiyFAYFubjLjcbVytMrof"), }, - { .name = IOV("mrfy"), .value = IOV("TrrhSAeQCodthskUExLysjFGEYXpAHdKQCHHfVBGVNvaqAcgtq"), }, - { .name = IOV("ehyLsaUTKNuAnovxbr"), .value = IOV("tkLZPztJetNTxJkiXuWJ"), }, - { .name = IOV("XwnJ"), .value = IOV("EaXdNshdiyIhAvOiJIWgzsXilRcCScTVvAxcuXTxt"), }, - { .name = IOV("ZR"), .value = IOV("YIMPVIsAHKBklUlWQOJiwEUwdAXddCHAQZfCWeueeOJILUkseWWCUNjq"), }, - { .name = IOV("Urbq"), .value = IOV("cgtJhyBZJmpqcsqspjsGvWItHRoaJoFhLPcaLyBX"), }, - { .name = IOV("ynnfFFRELbdF"), .value = IOV("pCxFxfcRktYPCrVvsAgCxObDfMoQQtPPcaxolIivQZBRmQfIAMsUEHuNkQCYghuTyuIUxmDJuNjJ"), }, - { .name = IOV("mSsCJfzUQuLUEHdGTWZH"), .value = IOV("EbGLlpFoSGZ"), }, - { .name = IOV("O"), .value = IOV("OoHdGvQVlDCtlzVRjWXckWkHaeDpjhMvTapGOMrmeqnRsROJMFkcfTvBJyalxrBaPswzrTFzV"), }, - { .name = IOV("WGnnsDJo"), .value = IOV("bkcldpsWNwzEvHOFMDsQefwPJHphVputN"), }, - { .name = IOV("Ulz"), .value = IOV("edPwUVtpuhhCgrZIKBWFVIWRnUPVCYRUWVPC"), }, - { .name = IOV("lwyQbnRHvYcjOqwDzKf"), .value = IOV("rmcYHerQjJbtpoxltcjbMyevSdtyeuePtHumNAHHVZbZfXFuYscyC"), }, - { .name = IOV("iqsfpzWHQ"), .value = IOV("aGwbcEQOrToUvrcizPqIxVhRUYMlJOuBKJtJUIEoxuwaeyeOuyDoaEmVFPqtm"), }, - { .name = IOV("vNKIlwFzfmI"), .value = IOV("ktQ"), }, - { .name = IOV("zSmIVWTN"), .value = IOV("OVTQDAvrPHEsubHonK"), }, - { .name = IOV("GLxEnr"), .value = IOV("OWL"), }, - { .name = IOV("cSPJhBpBiKvNPBjgOOz"), .value = IOV("AXjCPfRitfpVlsVwE"), }, - { .name = IOV("uoy"), .value = IOV("gtGimProGpdDF"), }, - { .name = IOV("ZAYveJuA"), .value = IOV("aygIwpUBTCBSCTTnhHZnvTWhclUDKiPpayXONskIpIwUDdFwbisTxGkOisEGmLdNJVGaEyRxf"), }, - { .name = IOV("cMQOFwOFETq"), .value = IOV("PPQaldOWzlDZXvnNiatRORqKNMORLRfDMaLTdoHDuRqYMdOODqHHkeQLDHIaiCcdMjnug"), }, - { .name = IOV("OvygFgyamKZL"), .value = IOV("oncngNVXCIZEYdBtUzKIRsPStn"), }, - { .name = IOV("XtEew"), .value = IOV("qtLZnHQMyGoPTYcPFqGAOLPoO"), }, - { .name = IOV("WlZrVjkUPYqHZzmvLaTp"), .value = IOV("NlPcapZoppWoVfHhhoXVGyDbcUQdrDIOWshlFjaIALkaNvGnyk"), }, - { .name = IOV("wsfwVLN"), .value = IOV("LZE"), }, - { .name = IOV("nYmtJigpaMeHxUDh"), .value = IOV("qWbNaRwcWVcOCIvnMCcXHoVYjddfYEGCcBxNTJOuApxGzNavRulTdSTgbRGkPicMGH"), }, - { .name = IOV("ZNQTXeTIOQ"), .value = IOV("dgPVPxTRpJ"), }, - { .name = IOV("ZCfvYKenfGpOItf"), .value = IOV("kNPSBPReGhxJUyFmZwkOeKYPtShiwDGZlvcwfwHUcYMfebftoON"), }, - { .name = IOV("osy"), .value = IOV("ZBgEgVEiiIuwcaEztLZtqLBzaqUdZByZTwstTWNqOtTMVWNUbafPkiVYMVqIxtdZNWxcNIrt"), }, - { .name = IOV("dglZHqbqNCRlnppBz"), .value = IOV("FoIbonGa"), }, - { .name = IOV("NwVEKxTepuRkQ"), .value = IOV("rubluLCZvYwkyXkSqqrudhRqxKtwpWiAqGnQFPDktyvtovMHIZ"), }, - { .name = IOV("ldJasq"), .value = IOV("nKem"), }, - { .name = IOV("YZkNSq"), .value = IOV("pxLAOVLeSerCvBJpKRKlrDAjlUwRen"), }, - { .name = IOV("HrATooMXFocaBKZfA"), .value = IOV("INrwdMMHJfk"), }, - { .name = IOV("wufFtnXm"), .value = IOV("dPRCrNgydamttKFEijwlvh"), }, - { .name = IOV("hQHPetLVew"), .value = IOV("DkdkvDcDvRUXZBMVYZghNmZe"), }, - { .name = IOV("safhJvO"), .value = IOV("JgIaFPXTjBdUqVmdGHBvLiClOyxrtFVikkSKNDwjaNSJrjsYnbZUxsWIQbeDHW"), }, - { .name = IOV("PBwaSrOQHgxTkbfTmlva"), .value = IOV("YQmnownDsbTGTceIepJcDhTdVEeDNIvIFTXhTRmyYGdvavWXhhQFTFBgwJwKajxmMxjLbyGax"), }, - { .name = IOV("RAkicTtjS"), .value = IOV("NTBedFd"), }, - { .name = IOV("yCG"), .value = IOV("kZhTrBLMTJaj"), }, - { .name = IOV("jc"), .value = IOV("wsYYbOowsnzFQFBSckHJGDrVB"), }, - { .name = IOV("FlpakaEKxRp"), .value = IOV("N"), }, - { .name = IOV("d"), .value = IOV("edDqbyAsXDdqJkpepDPcYLTzWPsWXqnifUKkVypzCQPdFdEqoirtZ"), }, - { .name = IOV("JkszXhzqvUMgKx"), .value = IOV("TaYoJQyUfoUiGxMQN"), }, - { .name = IOV("EyS"), .value = IOV("jmIiMYIBeScWbzSeVXSHDBWbtcTzhxLzJfYBjwxFf"), }, - { .name = IOV("XKAzdjEMYIDxCZeIa"), .value = IOV("dPvceNSfubyLNlxXObCFZfyfcqFhgTYaZQuHNF"), }, - { .name = IOV("PELvIH"), .value = IOV("g"), }, - { .name = IOV("XLXB"), .value = IOV("CvcirQSoAgAgjScCLUCglpwyzxbshMoVoFhKCoypFkdarATyUyfMSbMbNBhOykwPEGuhCdJONaRJzVO"), }, - { .name = IOV("abkxLOEfRGHZLdQOiy"), .value = IOV("eVdXOyotjYaNNDfONExaDXVyRoQUejyRyjntovsQOURDlUqgbQwxBPPAHVRFHJtupKRynXiEn"), }, - { .name = IOV("epbwAA"), .value = IOV("oVGKvcnhiQMbosuEfEashMEULFVdxUEwfQBIvDvALrhCUdX"), }, - { .name = IOV("lGebXcLiWQKUfLrg"), .value = IOV("rTEHIgIPnzVAXEfgWARhTArwKBkrWRcvdCHUudYhzzBuoBLgSXoKjSYUenXWblsWthZ"), }, - { .name = IOV("kouKVYFqcHwR"), .value = IOV("SDMxnjNgIRfsFcmlRUAHrVDXztOYyzRXkYUmgLBfyoiBhNjgqyUOydEoDTXutarDBps"), }, - { .name = IOV("jiMEV"), .value = IOV("zxScHKdwqlMjfsFTXkl"), }, - { .name = IOV("YfSsdBGta"), .value = IOV("UaeHTusnEKMZtLASzFCIrCaEuXLrnfBNwKKWar"), }, - { .name = IOV("fQUkgOQhKmotvO"), .value = IOV("NM"), }, - { .name = IOV("fjY"), .value = IOV("kSWsTrPvDDs"), }, - { .name = IOV("vtKpl"), .value = IOV("AkyhdgPRfGZmXyqfFk"), }, - { .name = IOV("hqnmKbytMJckMmJM"), .value = IOV("PyeaHLCTQOcEEfzyJXh"), }, - { .name = IOV("ZlITBjrq"), .value = IOV("VvDndsHdYoJcsxJVdYOHEaSyBjInczVSDBz"), }, - { .name = IOV("DCgDMVySiHR"), .value = IOV("sdfrIRWPtNUmMrTnaFyVvayip"), }, - { .name = IOV("BsCaOVVvRfwdMuTSQV"), .value = IOV("uReBjEq"), }, - { .name = IOV("EAtOhDm"), .value = IOV("KiLSziDKMlguiTZzNtDPghCCgzqrqYEqrCxfAecNtOotGeNFfqRtMehKpmaHdowRPfBTwDAFlP"), }, - { .name = IOV("FCNbjqcwiHsnlbpG"), .value = IOV("gMnBJqXDRrMEaeipZvHhoEsOBlBOFMUSsDBDOurrVVEPYAugd"), }, - { .name = IOV("VdKX"), .value = IOV("kmpzvYhEUvsoOzjkdqiasEhcougstzHflhYAVadhOhvTAEjCjdKCtnHHnwKSkSYVZNk"), }, - { .name = IOV("jiDzVmiQ"), .value = IOV("FltKZssApxyudkEBggtIzPHvHHgnkDSxuuTidCTkDoxdYpUgucfYQkwvqGPfiAEYnxpO"), }, - { .name = IOV("JuFqL"), .value = IOV("yWZvQwIkntMoPGvDWxrdMBFAFtTujuRitToOWIRTGnaivbxQUYpVdzNtNCrzICAG"), }, - { .name = IOV("ply"), .value = IOV("WprEcCkpthWxZhFlJcEJpHjSoZkXjmAVQOpWaFfidsTGfCeDVbCFHFwWCsWjBESWUqMXkpsCaU"), }, - { .name = IOV("AsBCnXKRHxIkkLTXbr"), .value = IOV("hOqLrUDSsWuzjnoPKWULJsVnaLmQCcBudstigXehZIkTXnPrDLdebqNWYFcIzHSXMmycUmS"), }, - { .name = IOV("YGrkJrBst"), .value = IOV("JuXOZAHKNfwNbhfleOOvcpUxhuMBG"), }, - { .name = IOV("QkFrnKmDpCJFql"), .value = IOV("DMRe"), }, - { .name = IOV("tk"), .value = IOV("VIXEUuKKulGbPRFCLSbgmxWLhHuYaNvdsYROlb"), }, - { .name = IOV("QkcnexLTWhQjNH"), .value = IOV("xFRscDIMGOnmCkbaqhbTkXWZGCuNdXiCexMXpHxiJOMfKqcrixRBcKRZkFdLRJf"), }, - { .name = IOV("GWzFZfHOZrSrLnom"), .value = IOV("JXwKPCIuzwUrvTonTSotpuQ"), }, - { .name = IOV("AhRc"), .value = IOV("rJtNxEsDAjjlwcnytQrqmIeInCKuWQTVyOIOIVDyTgTezeIuWyP"), }, - { .name = IOV("BOPcbXovninpH"), .value = IOV("NJsUmoRfjooiyAwPBVesMSTPuKOOfUoflSjJUayEGeOSGYjhvBTevchQnp"), }, - { .name = IOV("oC"), .value = IOV("mALaMmHWObQbasUufsnIZyGMotldaeWUoJoYFy"), }, - { .name = IOV("xgXwXMmcJOCZ"), .value = IOV("ugbBDgUfDAhoYVlOgdDHMlniqjSGmGTW"), }, - { .name = IOV("SGkUoKRfgtPawMgsOBX"), .value = IOV("eDFtlTvYKWapQPmw"), }, - { .name = IOV("giPgwOBlOtiA"), .value = IOV("klLUSDYEljqvNYXovXVrGsWxAKXqHfjDDPBnlyCwNAPtZviWLrnWkrRkyneLzcMnY"), }, - { .name = IOV("nUnpCBmZzriMo"), .value = IOV("tOpDIMqaKKwCtHbLwwfcWChRpwzSioOLvPOrqbLyKLINbSC"), }, - { .name = IOV("kogpWXXmCMCYFEQdvbX"), .value = IOV("VFVQBFoYFdja"), }, - { .name = IOV("cvzKYEsyXSYve"), .value = IOV("KoeKBynY"), }, - { .name = IOV("KiVGCvnaDtdXndHPlVn"), .value = IOV("mRwRChiKhLGNRfwmXbjAipyQiWrRrkzWXNMfIhheVKCquLgTdVUeMdxWGpueRKk"), }, - { .name = IOV("wcSXJ"), .value = IOV("dXGOrIjDnDhCendzWDrPWwTzpAKzn"), }, - { .name = IOV("WExBUmGprIpHe"), .value = IOV("nhlLlWoidKiobZURuJeOTQnIRJuplI"), }, - { .name = IOV("kjJamOsWZAu"), .value = IOV("puZiUUpYQbiztirFvPbjeMfnldJwOsuKYdgBDgJz"), }, - { .name = IOV("APNaSxTNbNnQnF"), .value = IOV("mwKIdTZHAQagMTRAwqdopEq"), }, - { .name = IOV("XvsIYP"), .value = IOV("YoELZaQuQHeNrxpZEgwWwFodKPwAJIpTGeinfnKIPoefZGJXkFNaMe"), }, - { .name = IOV("QvJXrnJQwiCcnYLqXran"), .value = IOV("grCgnsoqCPmfgArZKiByfIiSJrznAwSxTPRkLFZGFDpmsIMjCvMmHAgk"), }, - { .name = IOV("E"), .value = IOV("vuRoidTnQyDVnTjKbcuJyekszxidtmBpXxkZZOhLPrMczhgK"), }, - { .name = IOV("snRPjnHGxknpyhjr"), .value = IOV("DtsGKdipDuVKhLRZoKmNYCAVjzzLDNaWkEKgtMXLZOycrgUMStiGehvSRhtPWvimHJEINNRf"), }, - { .name = IOV("AxqjoOfRwmm"), .value = IOV("SEGanlxNSNVHCmECNpGctqHHzbsTVHQaPmYSJtdtaWsmEdUTjRgleZyxuZY"), }, - { .name = IOV("RQHpYVuaIOxRIjQo"), .value = IOV("HdO"), }, - { .name = IOV("eFrztuZGpruQqF"), .value = IOV("cVEQbJNRVCCkKAyKFhbtmfhFdTxsyOfaQcOBXiYQBVKOECXn"), }, - { .name = IOV("LQwpshGKAMr"), .value = IOV("xnPusCotAZSlVtPCnVOhZaptEewxLqxuBEbfqLeVvmNSWxtTvHwn"), }, - { .name = IOV("ekktgcBNMOSq"), .value = IOV("FzTpmBplzpPxXsNlUKbZJaERWQcbT"), }, - { .name = IOV("NnIYOS"), .value = IOV("IilgzzpuJfvDFpTYzBebCHBQZHofPHBQSnfJjJVyepsIRceRmxzofmN"), }, - { .name = IOV("YjmkxRmuXzeX"), .value = IOV("KgeoMmwtjmFnjucygS"), }, - { .name = IOV("xUUGFhcsy"), .value = IOV("UShlpMQRMygMnamLUYWVcNBrcUhucrEdyaQEtTJO"), }, - { .name = IOV("BZabRQ"), .value = IOV("ggKdLftlXyosrSkSMLIM"), }, - { .name = IOV("osqAIPxbYpVnH"), .value = IOV("DGrIbRpEKNdaZEliLMqQnobmkNaelbxyoynOB"), }, - { .name = IOV("FAdztMEswaKQM"), .value = IOV("iDkTpIgkX"), }, - { .name = IOV("UsICsooxndBFcQAsuh"), .value = IOV("aqYxpZvsaejTRnxrFMGhXWFiNZAydAOsHRZJXMAjyhJdGolrbTZZDGYznekd"), }, - { .name = IOV("lBsFDITolQsOrNPPeRP"), .value = IOV("YHdVgzNddjoRnrXMTLsFYVnNUIDlfcLYlnKPGgoYCUNnfTIKyZoiaeNMabDq"), }, - { .name = IOV("QghKBmFTajhlCW"), .value = IOV("MQsCH"), }, - { .name = IOV("gDE"), .value = IOV("eMLFlDoQDZobXNFGgueDLUDFdBLUgCwOqgcmaQpjBBTmvVIjjkHwfFrlqgeFBQoYAdvlc"), }, - { .name = IOV("zHalyJNRVDftUax"), .value = IOV("NzaJTEZrzSepphrcKxzKTaX"), }, - { .name = IOV("yMMDBaqSiTJVe"), .value = IOV("ecHueuuFcWWhyJF"), }, - { .name = IOV("VcrGMmtSAvr"), .value = IOV("EGINAR"), }, - { .name = IOV("TXLWrtzrHYe"), .value = IOV("lzSPoWTsnuUpADrfcDSOyafaPnx"), }, - { .name = IOV("OcAuyGLLFH"), .value = IOV("JgFrXblVNvhFkBCfkVpEjpVDRINDzXasSSGgBnfkMqAWBClliyUYcBgxXFNmPnwCcVafxXrRLfGYUlsG"), }, - { .name = IOV("AJKJVkAng"), .value = IOV("VxbrVNIOwwFfNgOvLRAHImYThoWJGDYNaICTHwxSlVNotktwOZitfLLJkeMWMkUrGaYbcb"), }, - { .name = IOV("Skvi"), .value = IOV("pjAxMpOSNjwzxkRwezg"), }, - { .name = IOV("mW"), .value = IOV("oTvVFXJuywyuFzOEhaBoZzFVkn"), }, - { .name = IOV("pSajJOQYGqYMiTWds"), .value = IOV("ueIVUWvAfriyOzebhvfyyZPFnfnSj"), }, - { .name = IOV("Vs"), .value = IOV("rj"), }, - { .name = IOV("IwaAXwtpwEsqsis"), .value = IOV("ZzxafFPRpxfJJZPuCZylAitLWxhYOObUMKWmXESHTTTdYPmQoozkJOgroFmzENYWIWjoHOZBwUgm"), }, - { .name = IOV("YOyqpfJMVJl"), .value = IOV("XaNMzRZejMCbIthKhVtfRcqaJNvhzubwuzfJTbFKgePurqqSSJObhiclwPuiBQIdjmCYx"), }, - { .name = IOV("qLQaoFQZ"), .value = IOV("akbAGvFZVLwQekKUHnUSVAYFLXvtlRcnDYCUhQOxOSKiZHLctkQNvNJhiqMzjZgENZeE"), }, - { .name = IOV("vtNmJXyeWlNsPOXlW"), .value = IOV("qmpnsNtAbgPuqGvmJIKlAcjcZtkbsDuTmeNcKZKQOjiczXEJfaPYdYPqXhfQH"), }, - { .name = IOV("Zzg"), .value = IOV("ongkL"), }, - { .name = IOV("XSFohx"), .value = IOV("KgbzbbERsmKnKtCchHmjGEhjELNkwzXFOnKLPOgryKrXzIiKT"), }, - { .name = IOV("UuIrDxwTXrlJagA"), .value = IOV("luCEcRgnRjyImvoFUIi"), }, - { .name = IOV("Swkt"), .value = IOV("VfZylQjursWPYMVgvzqMLauqOoEKjxIYSRPhEzNwBukegIIKMzUQCcaSibJMMPU"), }, - { .name = IOV("eHjFFsJwPFOEGwQqK"), .value = IOV("ATcCAkqzjhlJLHfZZr"), }, - { .name = IOV("aODcuW"), .value = IOV("GlLEapOtBmEoPkGBEilybUHoNNHKeCCPfOkJ"), }, - { .name = IOV("ZcVdchWpX"), .value = IOV("ALRkUdmFaYXXtLZDTaApjdYJWvDnMjKDSWLffCUrkmfOaFUOKvWqNciSRNgCEGEhJDf"), }, - { .name = IOV("rEZrjuAYKOPdBuY"), .value = IOV("eRznGvhOyhbNdEupnHZbMIvbHQOvNimjPrBEQGlNYPXPLYXyaoTVALSEDoGMIiMtrstEjpaLXMbn"), }, - { .name = IOV("eLH"), .value = IOV("HKbnRjlCzeMAnRdEoFgDKiOYujQBtSC"), }, - { .name = IOV("APKWEjsO"), .value = IOV("cWaaIRqdEoHdazGpSkKejjMrkalWUSelPHCiKPvwxlbbsmSdWvvwDXOggjfXSKgYYnnWYmWCIhnTS"), }, - { .name = IOV("aspBGppQdVAVZrJXqM"), .value = IOV("iOR"), }, - { .name = IOV("THkfeIHWkUEQh"), .value = IOV("vpzRGNvvvVGAoPHjyPgVuhRLlyAZzCLaBnKhqcTEKrqmetsQJFxNcguuViwMezdlPCia"), }, - { .name = IOV("A"), .value = IOV("vlsnTcdZiVDfz"), }, - { .name = IOV("VKsDakQw"), .value = IOV("afGtvstNk"), }, - { .name = IOV("DoPsUsIPpjyvU"), .value = IOV("hzTKqDdssrbQKDqrBYNB"), }, - { .name = IOV("naDDQlvpThdxWDVbH"), .value = IOV("dBvbWDlrhNbLQgQl"), }, - { .name = IOV("IzXKtFdqfnbmC"), .value = IOV("TSofIQuYktQcgxUstKomzDRvyAJOaCjyJPQCpTrApQAsxoaKZIxHfvKHvTuMyKFYDJ"), }, - { .name = IOV("GPevqETjTKRE"), .value = IOV("ugEqZaOS"), }, - { .name = IOV("CrfLRCtTBQWWeoQDVEU"), .value = IOV("poiCESrZvinGllyRWnvjFdZVlBGSMjfPR"), }, - { .name = IOV("sQrqoBKgpMRXMYR"), .value = IOV("NSkwXbLSkI"), }, - { .name = IOV("wxkCCKJ"), .value = IOV("Le"), }, - { .name = IOV("TmiWjhiYFaMTOho"), .value = IOV("CYYuKyJaNAq"), }, - { .name = IOV("cvAMIgtVzzaInWetIs"), .value = IOV("qtZuNqSUSARxercNOchhPrCCFtLNCbrptxRKa"), }, - { .name = IOV("ZwIiN"), .value = IOV("eVwYOyloodE"), }, - { .name = IOV("PIjsZotnjfmyGS"), .value = IOV("ZAobDdBTWdZRRPVjiGTcmNIJEhhXIHeVMlXwNIBatXsDUwsj"), }, - { .name = IOV("pOmWlfX"), .value = IOV("EHmFWMPPuQJObLbrjuDAbvsRrmeAlHaOoYKWInTVRCEfpymcQOTSLInVpGscZCIBXMqtW"), }, - { .name = IOV("KUCRCTcqwzWkW"), .value = IOV("keRYeDvnCFQJgrJaLKEMXvCcoFDQBhVuQvegmFsvSSFcVrNaORUYgkrwNBPzNlGUwgxThM"), }, - { .name = IOV("rAwbNRxfQaFJYrmyvrev"), .value = IOV("hhWsXSEWMCtitJfxhbC"), }, - { .name = IOV("cayuipZgQwIU"), .value = IOV("cMbYDAlTdETTGIsoCGKJEeZBZetcYgmGFOxLmlNND"), }, - { .name = IOV("HQNkS"), .value = IOV("dmUwMwKVhMUTZXwVBISqiRZYrQnQI"), }, - { .name = IOV("yLgruVRnxhYHD"), .value = IOV("fpBUslXqIXVFiPTYbDjA"), }, - { .name = IOV("cSdCcRgGlZFUon"), .value = IOV("JoVxLQBYYQntmcVzIPNijuqMnlZXwJCpuIFTQzqBewhZ"), }, - { .name = IOV("PPAV"), .value = IOV("aVimtwxagkibIqtVrsHRThD"), }, - { .name = IOV("ABCQdOlhwbDxejZk"), .value = IOV("JGsjjsVIijNBOucoiwRrRszDYAvJGqCFYHVihjuHREVqyBqhEgsMQaJMpMhKqpTBQIdPQisrBu"), }, - { .name = IOV("HSXkwVoGEjqFYKTnK"), .value = IOV("qkJRtMRATnIzEAnWetFgrqZNyDHZyKEvKKCxnnhDaowXWGKZxJskvKSFxNxjrtQqu"), }, - { .name = IOV("QhAb"), .value = IOV("jSmSemOqgxjVWwTUknSTRQZYALEbmGoQlBDiCVBLQpitzxCIYxhHl"), }, - { .name = IOV("fJchQm"), .value = IOV("DnjvccOZnRFauyZrzGDPFYJnMkioRujsvSLIizujpImoJhjrCnEAkMQieyJeHNkHIPgKUpRcmyrWSf"), }, - { .name = IOV("iXQUoRiiCQvDAjhGa"), .value = IOV("OTOWTSuqJOQxPkESTEksWXhHxSHhlLiNAuRLSsCGaKbWQjPaWzehhaAmxymFhLPVZBF"), }, - { .name = IOV("WCZSwDBG"), .value = IOV("YNRnZYyFMXkhbnWxCUBsVjnlMzaxTHhjdIL"), }, - { .name = IOV("beVHmgeBqU"), .value = IOV("GqoFKsHFuzkflDdTHWlvmCADUsfETkTcfHMvwcezqbkIPtkRZShWMFFgrxlFApnOziYtVfFXuW"), }, - { .name = IOV("lOgwNuIipPIMdtbCEM"), .value = IOV("WDhJujtHQGzIboQLnWIfSfVpgORw"), }, - { .name = IOV("cCJtNTuJisnvDLOG"), .value = IOV("rhfEuSQXkMJoLUxDIsgk"), }, - { .name = IOV("BSqAvCPxyWM"), .value = IOV("gMVh"), }, - { .name = IOV("KXjbIoZc"), .value = IOV("hvCgM"), }, - { .name = IOV("dFyCBPX"), .value = IOV("RjP"), }, - { .name = IOV("jJxC"), .value = IOV("rJiGeUjgpKcxunjpvKZecltSqwELDYOEQCRuHtIYfwajjzgofz"), }, - { .name = IOV("XObSGzKNkVtn"), .value = IOV("XpegBgpUyVyFgPiLAKbtCHpAqOwOvC"), }, - { .name = IOV("nEbKnIQbRktVYxAx"), .value = IOV("hdwkptKTL"), }, - { .name = IOV("MvuHoc"), .value = IOV("jeIcmiPjvepKZjgHeGheOAVVYdsMazKgMbEANAhtyNoBQLixCVaxGpdZcQzQy"), }, - { .name = IOV("mFrbzdC"), .value = IOV("juupciQpaglqnpYgynWTggGxqFeuvTXNzLGkAVrRvpmPpDAbjbGZhysgmoEcpm"), }, - { .name = IOV("ODaRAmXQ"), .value = IOV("WqLiAxwT"), }, - { .name = IOV("TZwPMmnvqRVFDswzT"), .value = IOV("IweSPGBhYBxkDAVLnSkYotuTOThpilDCZjDUGY"), }, - { .name = IOV("ctbeQim"), .value = IOV("OJHvsODcrIbMaJVfhyFyiLSDcZFjvWXTZbFBZncDoZSMfLhXRpdkvDNeRqszGvlF"), }, - { .name = IOV("Kh"), .value = IOV("JSPxnwLwhPbgidJwVDnvKJHdgCzkxVBQmiHqmRLKiynsbqIpihxDoEnlPLdTQtcXnWNLATuBWI"), }, - { .name = IOV("MShkZXRfoleLAMIu"), .value = IOV("kFrOmQBGCjgCoqTqCIsiFCfmNTZUbVAdOyEgdhRkpeowsRhOuBgVahtnirax"), }, - { .name = IOV("GCg"), .value = IOV("rZbcMUexVcDedBjj"), }, - { .name = IOV("wlOqUwXt"), .value = IOV("WfYBqeNdgdEoUlUijvfxJguDfdBKdVMFZsXgclkKdvLMuXygeQsYqIASENlZEAYxpu"), }, - { .name = IOV("LVELCRRYSoAxMFIW"), .value = IOV("TBg"), }, - { .name = IOV("RgioxWcodzZxT"), .value = IOV("ahycqnZoGqSuN"), }, - { .name = IOV("oTvJdnD"), .value = IOV("WplPxciUrBbaCELmgXBsDAwAteLqnMxnLGfzIDbKJCpSnlSnaOC"), }, - { .name = IOV("BrGlTjQrSnkCdtm"), .value = IOV("LDJiABTMlvqdOIctBIzUIOKvCFDOPRwxnQmqtHDaIHBZBTeKZrmpwbroZWSAVHLQLI"), }, - { .name = IOV("tuj"), .value = IOV("wEIpAkwagUIaRKVzDrqyTyhzoHNezEFPqWBQmVwnoKbGrYzZOpEps"), }, - { .name = IOV("RVjnH"), .value = IOV("EGlQSyLsrIRahJEmQrgjOTYFGqsbYLgUcIwjrEWhzBmhJfWUtzVvXalmWNssJWSRID"), }, - { .name = IOV("SVZeZieesoDQMWQ"), .value = IOV("zWebRKVIWoPqOvxijOPtMFNQRp"), }, - { .name = IOV("eikOBwPpIiqZlOic"), .value = IOV("wqvBfAIcXHxCYslIseeGSNNWsuAlxYfFlFHRMqfHRAeBOKJQFkVIlrG"), }, - { .name = IOV("mbRSlZsXk"), .value = IOV("NIOsZhAKusv"), }, - { .name = IOV("bljTrbY"), .value = IOV("UThOPmItqzZtyJQEpTbmFPmgCy"), }, - { .name = IOV("nB"), .value = IOV("XeiSlBpaWDioIXxqTeNVdxxrYUVnGNcSGJnODnkjliBBkBGuimDXXpIGlVeqBef"), }, - { .name = IOV("tCckFcwewhETk"), .value = IOV("CTEnItqYFkQvDYTSOJjaqGglfmrzqhKBsRpCcbhfQzuC"), }, - { .name = IOV("XJpmoxrEfJqYgbnU"), .value = IOV("uPGkczSdylrWWyNNXNtrpYqXEcCbYknTLAWXMcrxpPcrvKYgRlJgiJOwQgTPqlvBqtpcGMHFw"), }, - { .name = IOV("zCHemswyneIH"), .value = IOV("GqreIrvuNLopQGABNyshRzCQYislMFmohEtqZaHFyYadYDUJrxrgIOvBzeZpVTIuWWtVVHspexM"), }, - { .name = IOV("rhpdWMxZhxZxDUEbgliM"), .value = IOV("OYqsAdjMkslj"), }, - { .name = IOV("eoMRSqDyaFbGrZjGrOa"), .value = IOV("RnIbseoxChPFbvKXEOUoPiYOsOwzQGwMabEhmXXQNnXJqhyH"), }, - { .name = IOV("ORjpFyCfh"), .value = IOV("TjVmmQZNTjUeCWjOKUtVXSDMv"), }, - { .name = IOV("LpD"), .value = IOV("hXaXXShGaGFFNh"), }, - { .name = IOV("rccMboQY"), .value = IOV("qBTqaDSvrKEiItRZyShGzbMTnpabpiYXrlpyczsEDNgVeAqSbkGJlNkvdzmpTkOyQbdfZXWQ"), }, - { .name = IOV("AVRlY"), .value = IOV("eNNmlffuykkMxhnmYwYHZCGdbZOlzoobTwMNqOazaCEmbcQMaMcNsSqcjeEmWk"), }, - { .name = IOV("KV"), .value = IOV("OVsKJDELGXxddgoVukQVoQseIJjfzwgJyAAZzYHJmYFMaAUbVudUdFLjddTj"), }, - { .name = IOV("g"), .value = IOV("HGABnKDKNPQmlro"), }, - { .name = IOV("MclIW"), .value = IOV("bHlcoMLYpgYNJkVSFfIrMNKvUdbqadaJZRRHqBoOHMjmwaweUaknhWCOa"), }, - { .name = IOV("qeSZgc"), .value = IOV("CKVGXqAyjqL"), }, - { .name = IOV("d"), .value = IOV("ZyIPINQtfhPVhSdkbDLMohuDDrqvhVyBAtUNmcMZuWlziSCe"), }, - { .name = IOV("wpsfGSuAAR"), .value = IOV("fVwnpiixQhyeJMCHJrTcYYcDWw"), }, - { .name = IOV("BmUm"), .value = IOV("RXkAkxAfogwXeVKgJGaRRRRPBTTezNHisNQZkimzxXaLqxgXdfWCp"), }, - { .name = IOV("QaXPLmfGnBBoyo"), .value = IOV("SFqeBdVyjeyRE"), }, - { .name = IOV("XPjkPnGMozYnadZUaITG"), .value = IOV("UFzusCjGSCXmSUpWjUvWvQeBkgmrbxMCMGVxbLxGrALOdDNKllycmvFumjIDZzcsQCxDXvNic"), }, - { .name = IOV("APwnEECXb"), .value = IOV("b"), }, - { .name = IOV("R"), .value = IOV("NvOEKtHRcHJntYPWmuwsYQOtnoCyFpAtQgrAGxRUpfHtgmoBlSKgtkgsbgI"), }, - { .name = IOV("ZEYD"), .value = IOV("oSCxwPvgOYLUHNXLGmDobXMMBWIjdOggIYwkJGzcGk"), }, - { .name = IOV("eK"), .value = IOV("mVpMiIFtzFidcrBmrgaYLuEsXvtazCXjLgmpqRdgRaXeMBUqsBLbOGBHZWRTXCgSGq"), }, - { .name = IOV("ZNzl"), .value = IOV("eAPaqNBeWeNOxlaqsJyCwbYsenugOFlmqtaJKsKFDbV"), }, - { .name = IOV("xxJDNBNoZnl"), .value = IOV("znwsGjggpiAleTwOuzrOPLcNFABfSaoivWolOBoAe"), }, - { .name = IOV("DokWUsdyzcmqfNptYKa"), .value = IOV("MNPnvxttxIgxhNTSfXulhyGQJIUTByRQUHGNbZyQc"), }, - { .name = IOV("nDfPpvyUJmJGdSiPxg"), .value = IOV("QIQsdUaiDDMQBdtZfICVjnOsFgLfHeeerXlsSljfLvBbHpXcDzNHoHQhzNtwueVYgtBDSHc"), }, - { .name = IOV("JFCXsSphpjepTl"), .value = IOV("BNssFgrReplDmPURPhHjmCaQbeYYjQvWMgaabyaPiPJOhChIMjLLlilNZIew"), }, - { .name = IOV("Mvkfh"), .value = IOV("dINbJtakdJPeXaQkRDQkHKBXlxgDVdabAzhZNVIyNRkxeJGJOQoCqCWG"), }, - { .name = IOV("kxzUynArZVHQMAv"), .value = IOV("rXYpqlOraLtjvQkGGoAfMyONa"), }, - { .name = IOV("gADmvBKISFMy"), .value = IOV("tssGGmJYIBZnFvKOVUZzfAZuHCbIioKNPBikrZzTqUUCLqJgGTKJDMJOT"), }, - { .name = IOV("nBTWYdJ"), .value = IOV("HszDiXWTQVXnf"), }, - { .name = IOV("IONUoAMkKtGFUVsp"), .value = IOV("TJSFosVNSXMxVSClyhbNyfqmrBHEGmrOypA"), }, - { .name = IOV("DOnCzTTssf"), .value = IOV("SgCYMAxloVpveyveaPIuNbINyralmcFgdAiAvCKPwhEWISKGuIautPLYJVDHBczJEssWWeUJwUEzkJAw"), }, - { .name = IOV("KBRWny"), .value = IOV("XlwNBKLUJBRQAYhvEfbeQwLCJTlFztUshAusvs"), }, - { .name = IOV("NCYt"), .value = IOV("eJzRuflELMwVojuEqViRMOcuyMYpxHHdUlpuqxYguFUGrovmPGbBiuoLAtwJMYd"), }, - { .name = IOV("owmilBYWeHh"), .value = IOV("HnkKCNrSTcZAGytXFBnIYYPgEUyOMHXz"), }, - { .name = IOV("EgOHevYPX"), .value = IOV("hxdhGMbzhZULssItoicxuzoJqBUHEEFPdQAGLGHvkMRQqGrEpDNaxa"), }, - { .name = IOV("zSKKhMTraZmuTQG"), .value = IOV("ZEDFCeSFNsBYVlMv"), }, - { .name = IOV("MylafzOfjUKTJOoVcHn"), .value = IOV("JdYxxmlfrXDhNWxfgfRywMLEibSbnnPcuAcCydyVABmmVxLWsVvCADuRNBMXbfNYIEAKSySQ"), }, - { .name = IOV("GhMlomAWpRdj"), .value = IOV("VfqSN"), }, - { .name = IOV("PLljtpCPWXCDXAfZgwfA"), .value = IOV("dnXXgiNwEvgLnLwxvJ"), }, - { .name = IOV("oIt"), .value = IOV("BAHlQshgHvPHlUxcgVCvjTjjDYAPaazMIgArzfUIQVMgmlEXKgU"), }, - { .name = IOV("ZgBvz"), .value = IOV("gFefLTcvZFJGuEdnMNnYjoBSVSEREGlSKesKMdKvsDiETobWwRMurzxZgBckMGyAmpRpsKqMkNfJdeD"), }, - { .name = IOV("DmSyPZE"), .value = IOV("ICbAkxeBPKKWqWkUKVdQYaBXUghVOWgoz"), }, - { .name = IOV("KYXcCEYjMGqXtPJf"), .value = IOV("mmUBkoiNkFleKEGXtHRoBgEdzpUwfLVVAlWTBleymBuzyWVMXshaHuJBKSppBuBhmPy"), }, - { .name = IOV("LWflAFAhCAAW"), .value = IOV("JsoJZxpBdqWemOxHRoyDKbtUugFKgZLiDdaRoNrjIy"), }, - { .name = IOV("U"), .value = IOV("tUftgubJlGfOzefUCMsixpPEyWungl"), }, - { .name = IOV("MjotIDnPQCHpe"), .value = IOV("krZBBxBYdsrVfhe"), }, - { .name = IOV("ThoasyUThV"), .value = IOV("nqMVnnsdRZsukcvlaBGgeKGnPuRZFAnqvBOTVfOwamvMMnhtGMqYxcXKKixbJyOlyMMLEJyxt"), }, - { .name = IOV("AlDYEEYrdbT"), .value = IOV("fTIpDaooaXOLPSdaDsFcVXAUywRda"), }, - { .name = IOV("aQUVzQbMOudWjHf"), .value = IOV("shKzzyTrTyf"), }, - { .name = IOV("kGvCQWsXDkP"), .value = IOV("EdyXZDhbpEFTirZezMZFTHu"), }, - { .name = IOV("DH"), .value = IOV("fXhmwhwjxaXvbEJPfvbftNqoSlkCwQVmpFcUOryacBhwrpDOPAUmndETZDUQuCutsFfrzTkHXxc"), }, - { .name = IOV("SYm"), .value = IOV("liMUbtrDDqhWIMMRqEHyPUBzMVTMjGzOwWzoohcudLqAdInVeNqxbSswcAaa"), }, - { .name = IOV("ZHLMo"), .value = IOV("PhinNktOVwnocZSJSJRrOICAngUodAWIylJDAeLiDdXqvoXcPpqmoNBgHaQVyBv"), }, - { .name = IOV("NDGNzs"), .value = IOV("noIexDZAmOabOpvQsfGksrzmJZsDQUYyhZZoFZImwE"), }, - { .name = IOV("loxBJxcskXZuBAgI"), .value = IOV("cgmVVvUuLRzoYKoVvbwxTujPSVZbWdlIgknBDmimaBqkrR"), }, - { .name = IOV("IBXpJwaZeox"), .value = IOV("MrVVMdTDgElFdfAYjachWRDlcrNLZkJDztAbkruwDGPdRmSBnzZyjxPQCJgJdgb"), }, - { .name = IOV("oHQq"), .value = IOV("UJkGXAKcthZzmGcxcFQeULisSfLBsyrpVHvY"), }, - { .name = IOV("aCmdMpOhkyxCavXSSAfS"), .value = IOV("wRZQlrKgiRq"), }, - { .name = IOV("TAoyTKsYGo"), .value = IOV("zCPNNpknzePGuURfeoQxUaAKgWx"), }, - { .name = IOV("WsypIkQlfRnvUkuqnH"), .value = IOV("apJzxCXHsEfWtkENWoULMpT"), }, - { .name = IOV("IaX"), .value = IOV("IuOBDmxZqoaaTSji"), }, - { .name = IOV("FGqglnoQhBDClJgPbGsJ"), .value = IOV("ryRtFcGyaOgtAQRLPjceWaoFkgfIOllsPFxNnnNWvAkPugjtLtVlpzwMXtfMkollxPejvPhN"), }, - { .name = IOV("TQWkJPfliQxpJLO"), .value = IOV("MIobBifm"), }, - { .name = IOV("UZrppANzjxnoM"), .value = IOV("wdbkgUEQELBRHolHNVKmvikKqlkQuLSokDmYjlmWBxcmXHeIAVLIqyeQElDYMEEFJwXlDpkO"), }, - { .name = IOV("Z"), .value = IOV("JBFxcnoSNGWqlQI"), }, - { .name = IOV("SUrJfhAXKGEwrwrKow"), .value = IOV("OQki"), }, - { .name = IOV("wzd"), .value = IOV("fEoHtqNhvVdMjaQrghcSEBeqPvcMQmxivYNaLeAWwBCcuSSPsYUvxBNSAZD"), }, - { .name = IOV("YGLKYKyLMFlF"), .value = IOV("bqauRNzjFEbPtyoD"), }, - { .name = IOV("WNpaSqeIidf"), .value = IOV("sSkxXOPqUeUfPRNDaYymo"), }, - { .name = IOV("NvssYnNDPDdDaK"), .value = IOV("dPlxERdzLQGEhKvXeHrzpSowSZjjsGRkNvuSRGy"), }, - { .name = IOV("pEcWoHvICHYHMJAOVv"), .value = IOV("tKUMKpuWkdzCuJfEPwOmTRhDhUgTFmeMeNlzhHokFUcxYzzhkvAvkHmJBBoPRgWTT"), }, - { .name = IOV("cK"), .value = IOV("Q"), }, - { .name = IOV("Ioi"), .value = IOV("YRHUINeyNefAbQGVcPjMMZIvtmvHZMasPtCWEHElxtTbEfnnoRVJmjsQhkpM"), }, - { .name = IOV("fbetUuQnsHHiuSmm"), .value = IOV("etSJrKqtAhbvxBMJKCBKUnLWqIRUqTtC"), }, - { .name = IOV("AQalghFQdreYtF"), .value = IOV("VaDXletFaJitDPXIefqj"), }, - { .name = IOV("zqkqoiKGbmlNqTM"), .value = IOV("dFUumMMzwoLXHBIMWAXGsHAGkSoIOwCdBZVMgenNgiKlqTUwsqOiRlR"), }, - { .name = IOV("ggPMUt"), .value = IOV("UmOHdOrjwwTciFHTIddYbkCxfaX"), }, - { .name = IOV("VEYYcTVPu"), .value = IOV("PvDWvAWuiPBDihELtrhkpal"), }, - { .name = IOV("LmtEZSWejhuDlGk"), .value = IOV("kTJHAZIkCxmnlEpqKijZvTabLBzVsdKHNjqMoWTzmWcyBFBAwoFJQZHUpXdBlidJH"), }, - { .name = IOV("xuBhyoNxqLPQX"), .value = IOV("vvDgRQRVbIGQDQujBUSFKSsSWqWYnjfIlj"), }, - { .name = IOV("HNTuVaUTesljQwM"), .value = IOV("uWERARspAdzBKFcOllZUVuNEsyFgtYIEhjfsDjXslBjTkgKAxIDlVymMPVmODDWKeouQU"), }, - { .name = IOV("ZR"), .value = IOV("DQlGasKVPAENpzKhOIfiWVuPHQsGAOjLqgSrxHIptioivqnBwXoDyDAHaKrUUYsZPosskFa"), }, - { .name = IOV("wacqmxfWeRTAILUIVBHL"), .value = IOV("XKIlVWCNhwsLvJMIvwnZvDhXXbQJetHJDVGpwYP"), }, - { .name = IOV("jBBSgGSviUVt"), .value = IOV("HloJhvscuCGWOLjcSThKBIecuhpdjfzxtdDUknVGDpsPnK"), }, - { .name = IOV("TdRbGRGwml"), .value = IOV("X"), }, - { .name = IOV("P"), .value = IOV("osqCJacRtVWvZVvjICBBMuEGpPkaGtFMAtcTCpceBPmIrQMuVjUFxMadjeGkBpXKzlgsJBDvoRKILvz"), }, - { .name = IOV("IxGwvD"), .value = IOV("zgN"), }, - { .name = IOV("AshTMJOXGDJP"), .value = IOV("ZGQUTioWThLNKzdCKVxMKYEvwZWZOeREhttzrcLOe"), }, - { .name = IOV("rVNG"), .value = IOV("kRTHfNImpIaNRekGmgbvFLeyUXUGpLDrbIxWfzsymhcKHhyyMoz"), }, - { .name = IOV("LJaXVRwePs"), .value = IOV("cpfRGCeygayxVYeAAbcCKcTvcIcnJAQnywBfRo"), }, - { .name = IOV("mLZamIacpeuNrwb"), .value = IOV("OO"), }, - { .name = IOV("VamniGoklma"), .value = IOV("WGTFkZHzh"), }, - { .name = IOV("bsjaKLuxlJnimjU"), .value = IOV("BJVSdPgyLKOVebwqmTSVuKYZWjXoHOLShaoIDHWfKahmVscwZnFDLfraKbtFhvKRK"), }, - { .name = IOV("mGQNnwGzzLaiXGUqE"), .value = IOV("FzjaJbhxIzQtiEc"), }, - { .name = IOV("mnEErExGKQVTX"), .value = IOV("ZrQNh"), }, - { .name = IOV("sxCwLcYjzh"), .value = IOV("BPAKmmfVQcpSUHgzqmxZHTDFhujGfdqJdUiBybfFOfD"), }, - { .name = IOV("iP"), .value = IOV("nQQyGPPKYUIz"), }, - { .name = IOV("sxf"), .value = IOV("kACSfpHMkhjxVaKm"), }, - { .name = IOV("IumyLFQwoocrVXIzKQ"), .value = IOV("YgFsKeEBPtIXRQUDYcAXoOWKyjCfIeekklOTndbXiceUPqRlhtmdLhGCsegDcpsR"), }, - { .name = IOV("ItQFqWDSpSY"), .value = IOV("TqlbvmUPCDeRSQxjiMgzEoZqldmnMGQaPCGLopkaxDWbPvQuSJCAQvsQzxVMixGUHHdEQAx"), }, - { .name = IOV("SzPLVxfNZgXBNmZK"), .value = IOV("tttsdmdafPqdsthUlVaxYCsflWeLEZLQyyZKlRblJAFk"), }, - { .name = IOV("OnloawIwrRKGY"), .value = IOV("MvsdchUKeJslulVImmkGNcttLcgaVJXsLWfrRGw"), }, - { .name = IOV("DeunLdmomiX"), .value = IOV("BiDeqeYYTemoIgWElgGkcvEetvtyGzTVPKuT"), }, - { .name = IOV("YoTyVUINjeYU"), .value = IOV("qkjlBRomEkqyFEeKhRgtxvSIcVTLXpMv"), }, - { .name = IOV("AlirOjloBbO"), .value = IOV("CObnFXciyssUnDaXUjypwNHytrZaiuaxTEfEARu"), }, - { .name = IOV("uItwSBGiixSaoZZMF"), .value = IOV("PUDPYsIJvGjXskhSxFYCsoAFtHHKA"), }, - { .name = IOV("VmayDIXa"), .value = IOV("FODAVoBxiHCFRgrpQnMBCnJwbkidzLkERrhPYlsivvtJRFwUnmiEchhQVqniNciyhxCo"), }, - { .name = IOV("TVFnjfdxaaMW"), .value = IOV("HROEUwFesvytuPCjbUoGRdCXuFatvf"), }, - { .name = IOV("cBztq"), .value = IOV("LhwFgtErCkIEuImzyQvyCleGoTvyFWVUwMrPUDnigMnmPT"), }, - { .name = IOV("FoAqdMcEh"), .value = IOV("VYXVJJdnQFPHGORjJuBYpkcENEXNeNamBvKKZouPyLDKJ"), }, - { .name = IOV("ggjDNvmZEqlYDwVNpJ"), .value = IOV("TmdQxUaCalgPGWYFYomkTpZEvmuxiThcPOAFQESvLwhtUfPquloBWp"), }, - { .name = IOV("i"), .value = IOV("tRsFhCItFtzDcvpAcWVsfCsuAAfevmzAsHwagxSWQJfTzsdNbqHIhAvWAAvT"), }, - { .name = IOV("NPepZLWsQrSCRl"), .value = IOV("MPTvBRGyDcyDynpdqQvEaqMptgC"), }, - { .name = IOV("gLBCsiCuVOG"), .value = IOV("vgREVdAVddJJIKBPTJoQVjPdbTxzHonXTYvjgzJLHnw"), }, - { .name = IOV("dATMtvExebnthCNFu"), .value = IOV("PtxBkfnZFlZHsxwaLxkiWFlD"), }, - { .name = IOV("IrAqRmrJbkRyCuOs"), .value = IOV("EHZrCaimTuiJqLKWWBeWOjPEMkKSlegLH"), }, - { .name = IOV("bDIZQREmim"), .value = IOV("RvUsNTKkfcoGqSEzkmDmqLlDyEDoDPyKHwVNtVGqyRyfkD"), }, - { .name = IOV("rFytnYfqTEj"), .value = IOV("MMrLlhPpg"), }, - { .name = IOV("BOYkXrhNRnsxreNn"), .value = IOV("xXYIbSO"), }, - { .name = IOV("eZmGCuURpUOuoqTnPL"), .value = IOV("BwoHcOBrsYJprJqtLEetcPgeuTKCS"), }, - { .name = IOV("SAxOWAoOFQ"), .value = IOV("oGcZEVDRkdgwFlLKIQByYahrFcZvIzhuPZdUiVToosKUTjEnDbAJLvTndeGZVyAgpTtsxd"), }, - { .name = IOV("uekuZY"), .value = IOV("jqJfGuRRPKhfwwZSYkbVCfZfBLXmQbZs"), }, - { .name = IOV("HGwrLGKQN"), .value = IOV("mjBmZLqyrVUNDQCRPWsh"), }, - { .name = IOV("Kp"), .value = IOV("Plmi"), }, - { .name = IOV("cXeqUcXuV"), .value = IOV("sSEBJAeDhLWDeRHsRtFhjPPjysCmYmesOQluGxJCztadNa"), }, - { .name = IOV("urQbyVSvvqJ"), .value = IOV("ldtIZKjxAWuOXueLSPjTthrhBWSlf"), }, - { .name = IOV("r"), .value = IOV("EYIJfwWbWxbmOpOBnMilw"), }, - { .name = IOV("rgJVCuxRfGYJCUzc"), .value = IOV("XOjXckDXcxNkWkwPXjYQnsMyvXSiojFiXFkmnxiPrBeBOllBLGQLovLyULOvAmYFeqzQHIvwRhe"), }, - { .name = IOV("xdyaxCnnZmwBhSnhnChL"), .value = IOV("zRsGGjwxKafgUXlXOOlWtijmqVxhcUsHqJUaSwBiploCuUaZWGsSfLdoxRBeuQnyQgXisbwThuqDCd"), }, - { .name = IOV("QoRvrOPXydvOvBWmJK"), .value = IOV("wNMVVL"), }, - { .name = IOV("ejZDIbyGSkLn"), .value = IOV("CsOMiLRRqtzDaZiKeHKuHOxCVPVsOGBFPmLbEyjJUGylqBuqQxIyuevWtOhnCOWvmZadYaRKI"), }, - { .name = IOV("LyPSwudzwJlz"), .value = IOV("qAbxOCNMazNOaOcflXbOBFbPMnuzuweyOSIQQQgplYGOPveYlzgXJMItX"), }, - { .name = IOV("omqIY"), .value = IOV("ETVHVHNNjvZibNIgLucPK"), }, - { .name = IOV("WSyVAbTR"), .value = IOV("KTiCIACaCnGWqyfmxksElPPWeUeSVqjdEwT"), }, - { .name = IOV("NGfkWVQsKIrVuLAhRPQ"), .value = IOV("hWEasKzvqhyvh"), }, - { .name = IOV("TwaOX"), .value = IOV("JywlUbVxxHmwmzOhbDt"), }, - { .name = IOV("MTskqmRBGgsdgPV"), .value = IOV("OkCQASogOiHZKVWTJhUyexqvXESGeJvOmubglsRXKBDmenwyTkTVRdcLqC"), }, - { .name = IOV("OhLoFqQuulnfWmIwqVVt"), .value = IOV("W"), }, - { .name = IOV("zctUuHCkwKqUyWueY"), .value = IOV("KedPREwIDezCzMQMtRdUPrLRASwImSktjiRKFlokCywnOBynfywWudNuzXXItPwIWJk"), }, - { .name = IOV("vKbzHRhVikDnRSyKPug"), .value = IOV("XkWrcHKJEYVFcAlaOUvJMitzDbcLkqMovYzPEFnVfQqYkLSkgbCJGUZdaZHJhSSlJecG"), }, - { .name = IOV("IlfJycspwSusEjx"), .value = IOV("KFPmkNNyeIbQcjaiQEjAfVPpbCvYPygOhHFCyVadVRF"), }, - { .name = IOV("rTpLTrVVgXnbjhRp"), .value = IOV("zNnYUbNgkkoJFBhcGRzCEWmKwiBXbWcexEYpA"), }, - { .name = IOV("zgOI"), .value = IOV("luoBTBeFzbHWaUepsBHbtTdkCeRlvvyhfJxTgLohkeTDYpFuGEJ"), }, - { .name = IOV("NfiztA"), .value = IOV("L"), }, - { .name = IOV("TlQxkEhSs"), .value = IOV("GdqVgvsRhcaaUtmUcdVxjNXISsTFFargDhuJsCbJfsAusqRSbwuEU"), }, - { .name = IOV("Nh"), .value = IOV("uLrjsaZBRvugl"), }, - { .name = IOV("hxFrqyKSJHXJFXsiLh"), .value = IOV("XqFJhvctsNLCKyhIbRFrovsEgkllVLhHVDLcbzBNFlcjhlkcWgiUeuOGStyZHCSMRftgVn"), }, - { .name = IOV("DzbcFgutLnocYwTxYbi"), .value = IOV("yJtYJZdDJIftYmnEJcLWjIuKBnaHETNnEpIWgZMGyMVUSZudVlWkkcn"), }, - { .name = IOV("Ft"), .value = IOV("mlIJypHwYXTXdvRtOQqZnnKvUnmfjfJMpDyxUPpdeunswrR"), }, - { .name = IOV("pLaDJtxaqkQMNuKnGjjc"), .value = IOV("rIJneraSWyipWBRecMzlZTLLsnQZAvsUYyFZsTWIsreZMayPUHaWsgwnhbmvbTIsXOoZqgTzSy"), }, - { .name = IOV("JpCvSSnDaFmtGAM"), .value = IOV("GaWaNYmsswJdIhyxqrDTGCcoPHWPWcRKGN"), }, - { .name = IOV("SdVmRQpoeZbeORl"), .value = IOV("dUfHEaJWlCDNwQqokGBqKB"), }, - { .name = IOV("QjnaiWYfzHVbsuEqx"), .value = IOV("TarCkQhpPkXgPFXMBmfSSAQvXqIqEiqlDoRKXEqIgaaKxTJcAFRoh"), }, - { .name = IOV("vJuDUTxEWQxTjgEB"), .value = IOV("LmPSjmCanGxn"), }, - { .name = IOV("p"), .value = IOV("sYlJKlOOoyDyTcApHkAruOMLBNUbWxKTYwyXIzymASdCHiDdHOoM"), }, - { .name = IOV("kzvBOH"), .value = IOV("IfRJcZAZrZtACLBetCMaLZhefCiggSpgxLQDdjF"), }, - { .name = IOV("zDVPHLwQT"), .value = IOV("GiQVHmoySXzkKBqGdNypPHQCDVxvObGgFsudbcdZpMggmuiAIACwOxLSPTIhhAgvrpEatQlMsNDx"), }, - { .name = IOV("HLAhkoChYIs"), .value = IOV("hKfxiibMpGkNSLPt"), }, - { .name = IOV("uZyeWgl"), .value = IOV("WMjparEEBKMlvESoDKTHiZReUUacmgIcNhuIJNZooby"), }, - { .name = IOV("zaAvVHTqbAESbZ"), .value = IOV("SspEcqrnkfaRHlyXTOsdwAllflrKNOEkbTlxRQwPUpWbVHeDClQYohPfx"), }, - { .name = IOV("bQoGCEyXqaym"), .value = IOV("GSkTWTlTwPIsnULiFHwMjMVthiQByEzIrlCrmZkVKrmzUpVarqAglpiXMCEoKmEBojnSUQntCO"), }, - { .name = IOV("hpDMiLH"), .value = IOV("ScScAYjotJfhwScAKdRZrHlyLObtjhqHcjyUkDDlafyUefoqWYxhDjLGHiBwkXlOXNS"), }, - { .name = IOV("jzqNbZjGfyZhhAFZPm"), .value = IOV("EiQfHsinnvYKOuvkhKKPOvyHRHleRrHySJTVOAk"), }, - { .name = IOV("lFKlcmyKBKgqRGfZplwv"), .value = IOV("kxUuQWiDuhkclcguhLzAEJPgIqOtPBFMz"), }, - { .name = IOV("fxPFxmVDtnsanGnRqQq"), .value = IOV("qVlNk"), }, - { .name = IOV("jeZiWTfuKKkvKN"), .value = IOV("cUVPbBTcoFONLilREpUXoxheHUtcsQCvUSZRqRiwGICmJrad"), }, - { .name = IOV("wlSq"), .value = IOV("ucWFAtAJhXKBbdzwtvSHPoiUYHqzPMNrwqEzmYoUccKVLLJsYixXUEGDDHjPBe"), }, - { .name = IOV("FRWdUArI"), .value = IOV("JZjJWkeUsIagKYSukZfxamviLKYJLwYZgIHPpVOankbCPyfxnvnTUdWnaIhifNKmJBhiKpVPflYLKGp"), }, - { .name = IOV("cPQyHJvfsSsClCCRaqQ"), .value = IOV("BUzdcAkMUftzzzPOeyxmkQQnhgktxgx"), }, - { .name = IOV("xqXfY"), .value = IOV("VzNvGNYlDHFvSQphUOWtaXksjXdjPSQzdVFPihHYZtZGdnxs"), }, - { .name = IOV("Kk"), .value = IOV("OPdRtNWeKkhDzenxvRVcbG"), }, - { .name = IOV("UrrlVILgmesRIQx"), .value = IOV("oNFPX"), }, - { .name = IOV("ZXHdIIlABiaKEy"), .value = IOV("PpLGIiCoXmoDzVPcTrVIJHszGAObuvEX"), }, - { .name = IOV("ZYVWNZOeuWCACsaIMIBE"), .value = IOV("TRAeuJUOecCHQRHpiKDsRlwHbJMZZJmmEuxQoYcEb"), }, - { .name = IOV("kNc"), .value = IOV("aBMIONmNRbJrtNBpEucvvmnyeMzqdbtdAMjwTlfqekieSNKpjOj"), }, - { .name = IOV("RFfgiIn"), .value = IOV("kUWK"), }, - { .name = IOV("kVlhUSy"), .value = IOV("BaoRWFukINob"), }, - { .name = IOV("Hy"), .value = IOV("mYcQc"), }, - { .name = IOV("RDLITLQEEM"), .value = IOV("cyDIZUJXCBHJuaqqorIeJsxJKyiJIVtfNtaCATsi"), }, - { .name = IOV("syDyrYjHOVvQTyRmol"), .value = IOV("cL"), }, - { .name = IOV("yqOAsodYFbFSp"), .value = IOV("BPmxIBXQHGuKiHrNvGGlTh"), }, - { .name = IOV("yOOEHM"), .value = IOV("WoVEFvSCwmYQYaZktHuKtQ"), }, - { .name = IOV("HfMeH"), .value = IOV("JubUWYF"), }, - { .name = IOV("cgXFOsPfSzZFmRfuxo"), .value = IOV("AFssqlRQlBxmUWvLkJbreKcUnVsOhcTifPsvKPnPpfCgtnkVLOcUPWunoPrS"), }, - { .name = IOV("aUXCeO"), .value = IOV("uPmxJMmbfCgvfn"), }, - { .name = IOV("brEZQxNQvOE"), .value = IOV("xOSxzAdxHNsfZyotue"), }, - { .name = IOV("dkyayCcMEwDCEDl"), .value = IOV("OANxiijgpyGBjicHYtsrLQuuTWiRKadHADPviIEzccArmWzcHwrvPhizWhxqAjPWzSMuq"), }, - { .name = IOV("ylUSMDYVqtf"), .value = IOV("iEOaJMYGpPD"), }, - { .name = IOV("BfXWBzXsOCPaug"), .value = IOV("ZDptHaAFAXilolEhWVzWBYUfgQnTexTZINvyBKcFvR"), }, - { .name = IOV("lC"), .value = IOV("XAAarpDfeiDYabXAtrFXZdYIjacYVE"), }, - { .name = IOV("hmcKMtiyFSAYYGQDmPx"), .value = IOV("sSRqlKtiSyX"), }, - { .name = IOV("DpuXhfOfjDHKcOfz"), .value = IOV("TQiwQKlNIJGCpJiaChDptOpLlCDDMAUFxpORLtLUDvclDLWiiGWRdrtecYV"), }, - { .name = IOV("abMfimojoTDkYhA"), .value = IOV("WepeLTlAcpCqmFbWjUpdJqyNWbKnnxjLcKmspaH"), }, - { .name = IOV("ET"), .value = IOV("LYYrRIYRQkDURWlraGGgJaQoxQMTdFRbFfcpZvoIOUTXmb"), }, - { .name = IOV("HzdQHreKcvUpTRGeC"), .value = IOV("DsboVxDRJxfutYFQbVRIefqBjUWtNfWLwSAWAvXhDsVy"), }, - { .name = IOV("wfbrAhuG"), .value = IOV("ysfXGOAP"), }, - { .name = IOV("iaxdVxfxjWzmzOedUWx"), .value = IOV("QfsNXJugsPHEQJIRWbCwVyIhxzSBsQNvTXnVlwJjZCatoCkTs"), }, - { .name = IOV("hkwTocAWOLmi"), .value = IOV("CCJAoInvGM"), }, - { .name = IOV("zBYzZnVcScSREW"), .value = IOV("LIlfuyZRUZOiInBnACQvVbYgRbE"), }, - { .name = IOV("UzzFaAHmoVMJxjmNJlou"), .value = IOV("cPOfYhFymRPKOMKcCyJAJQCYeSkjGDSWEEJc"), }, - { .name = IOV("ibAaRh"), .value = IOV("WwcUCGNYixFTSdyTjUGxEZHYLTITyKkxnhXomJKarMsDsDdHTnWbCOlPnimoxGVWLudJS"), }, - { .name = IOV("spAHhiNiEjBbOOMM"), .value = IOV("cVAUGuoJPppeuIGmackkbTfLwLAZIdjxOkDBl"), }, - { .name = IOV("RQTEo"), .value = IOV("afiqBopREPrpFudLJYeG"), }, - { .name = IOV("LGzElVP"), .value = IOV("DLKjHFeorSsYTG"), }, - { .name = IOV("xpLzULlqKurXSIjzUwi"), .value = IOV("tQHXnFJplNImjyGeoJWBoKn"), }, - { .name = IOV("vranopMe"), .value = IOV("XcoQZCFVRNunbcaunTjHvGcszkjbHUaMnDoQOiTHt"), }, - { .name = IOV("lIhDWADupHctwZtVq"), .value = IOV("gRbswhXSNnIoSvPVqskkuCuwgYnwezUtZsTOAzT"), }, - { .name = IOV("gnempsAVdrjoKfiMAA"), .value = IOV("mGWbrGXYyCTpVtEMyuKtINSJItchrXwoeuHpDKxarvsLXJpl"), }, - { .name = IOV("MgoVzJLAFWZgfjb"), .value = IOV("oJgaDgBIjkalGtzqbpCzmqJCcvggTRPhgxYOFptnZPcHt"), }, - { .name = IOV("kGGtcJnnNcy"), .value = IOV("pk"), }, - { .name = IOV("SfBLzJVZxRw"), .value = IOV("EKtRzd"), }, - { .name = IOV("VXWfglhzXPOxVSz"), .value = IOV("veNWZaFsfMCLKQqxFPEFnIOFahQWEFvqBwoYLdMOcJOkFcEFZXFhATx"), }, - { .name = IOV("YVWRtYBCPRtoubIkqT"), .value = IOV("UMweEzsUqFfatVZwCCehGsnlKxvtsNqzVF"), }, - { .name = IOV("XWLquepnwaXAIb"), .value = IOV("tHbRfWSSSZTAUilhBQuwOpOViSiheZCbFLZIdAWBTnreMjzWmusKAAJ"), }, - { .name = IOV("VIaKWvrldXTZXP"), .value = IOV("sKClryhAYSjImpQwbTLsEHXElTBytuTpc"), }, - { .name = IOV("gqeUsvE"), .value = IOV("tETieMDTjnWYmfilZLbCHPVBnsKlglOLHfeFpNimrg"), }, - { .name = IOV("tOmklAUtfMWl"), .value = IOV("VXKfikrPjCMTJgHLItLjQLZZWNbSHpWWmImxEuSoyrEHbCRaA"), }, - { .name = IOV("JiuNO"), .value = IOV("FFqy"), }, - { .name = IOV("aEDmXhbkvxWs"), .value = IOV("dhdJgikyvCjYGOKdZV"), }, - { .name = IOV("WDGNkGMVQXgidOZu"), .value = IOV("iIslXwBBRpGefQhWOYWlZrusVpkUSdXlrPOHnrkkJhZrHcFhL"), }, - { .name = IOV("kVKDb"), .value = IOV("ynF"), }, - { .name = IOV("kcA"), .value = IOV("mOKFUHOqeOLoQGwIZReQVhChhfhozRTxTczaaqsGtaudLyeUQwCDoPSkONpjQBJSXyMwjeokbAuNnRd"), }, - { .name = IOV("efMldXx"), .value = IOV("cPTWlxtdSKTpyMxOyKzgGiJjcYLEObNampWYXKKrPlYkOwJBNybcNfwSWaSXqEr"), }, - { .name = IOV("NdILRCqBSuYmjt"), .value = IOV("nBwytBOGGyeWOuCtxtCUSdht"), }, - { .name = IOV("RqRXovq"), .value = IOV("KQVtPaytrnVjkvWbqDVdZ"), }, - { .name = IOV("B"), .value = IOV("jiooRWpGwZHKugvvFzcgjaNAIHIDCfNIjPCbONyySKHQOzVyVoTSAYe"), }, - { .name = IOV("NhkBFngid"), .value = IOV("BLVEaFgKxjDKEMKXlbHbaTxoGZpppwAMYNhdrWhtGHeAHUAQLnIfddsZBAHHhPm"), }, - { .name = IOV("ORIzEFCLIvwN"), .value = IOV("BzWZJOjNWsWahMQFwm"), }, - { .name = IOV("lRuny"), .value = IOV("WvUTBcqqjPFRzfdUBttXjEaSk"), }, - { .name = IOV("OA"), .value = IOV("S"), }, - { .name = IOV("jFZslUTBeEGzebTgRq"), .value = IOV("lAdmHLHRSNfiKocrljOnoARvR"), }, - { .name = IOV("TBKTjAvrzfYJCXkriw"), .value = IOV("PWOqTAxNteZNQWvnsWipEQcWrNqWlitilQvtWmXMJVxfqqvJXvFutSEheoZBY"), }, - { .name = IOV("dEAJfvvaPnaCk"), .value = IOV("akmiQtjKDCkktelzFlpdixGNCkmgfuTSZqGtFvX"), }, - { .name = IOV("ueGDSXWmcv"), .value = IOV("SjdQvosIgAWLcIffEbTqmyScnpAFeMFteuIhhfbDMakKiUDkhokXOvgdiFjBEswqVKGc"), }, - { .name = IOV("fWKKudc"), .value = IOV("fqEScKpxwMBaBEhZxluEGCJQkRPHCDZFRvUwEvvVQIQnZM"), }, - { .name = IOV("WTBBWvnEgR"), .value = IOV("YZPFpjfqyKcxnZhavPhZoGQhVsaKzSapORtWoBrGXkVuhcymqnUOFEuYXzxLmNOJjGINVAZYypYiSx"), }, - { .name = IOV("dZZlTkLFUHwGnK"), .value = IOV("HIVHbYiy"), }, - { .name = IOV("WMgXVwtYbDiMysFt"), .value = IOV("TPhTYhRwazQNOnLxVOKGvrGbpUYBUHOhJqhpBZMklqaNdXIiDJSka"), }, - { .name = IOV("GSdHPnbRFXuQzWwMtcY"), .value = IOV("wcjlEqcTmRArhLwJFjyOmceyCckDsGyYK"), }, - { .name = IOV("vwIfsRPKV"), .value = IOV("DxxTYLRdXfAsmWTohIsxBRWpQQkSjYHQ"), }, - { .name = IOV("PSQYiLuYRcsMsUYc"), .value = IOV("GMSUPwhEJnDtkxKoJntVrHSzhorfKpZFYgxzZsGDBKGp"), }, - { .name = IOV("VYnOX"), .value = IOV("QAziSoUNdnDVXChjRTmLwhXglNGyavSTRHUfftREwJlezSbKiZ"), }, - { .name = IOV("tPBZEWYj"), .value = IOV("HjAfPNZQilZlkPeUGYMfdTsprYcxkZhsgzjQBtC"), }, - { .name = IOV("THPdTvQxQkNItOEsynAF"), .value = IOV("bRwIzUKtUkhniUhLRZWGJadbVKSLyzEYErnLdntyaEFlDyZzNwdKWtAKwVHogEAYmuvfh"), }, - { .name = IOV("TawHdKEXHnlrJWCJAi"), .value = IOV("HbtrlxrdiZzbGFJpwpBr"), }, - { .name = IOV("gngwafEBm"), .value = IOV("WgRjacujMLAJIireJjmYgsDSOAiOkvANEHsDsSGdYGnmQACeTcwDJ"), }, - { .name = IOV("yRLOsRqaeNGdmTGB"), .value = IOV("XpWPVgUcvRUWcwbQ"), }, - { .name = IOV("vLsdOPLKTCFqPDM"), .value = IOV("mwRxsrKclJnoRHFlYnUUrIFXObAQjnBMUpqmkU"), }, - { .name = IOV("NkawvEsWhl"), .value = IOV("zexRJDIlhBrBXTOTVkwuGnNxfVckzSPtwhSYLwoRrUoRQEqTGGFVvWupmagPLHoshzdXAyFAvin"), }, - { .name = IOV("CsTQ"), .value = IOV("nfPXNnDTmdchrgijznycCipKHjtqi"), }, - { .name = IOV("zpJmDGN"), .value = IOV("GBrAjJVZTY"), }, - { .name = IOV("dvJn"), .value = IOV("YzmwnfT"), }, - { .name = IOV("SEyKyuCwHgaNhgA"), .value = IOV("vCQNvioVCaoryCdQcdOsCMdUPIPssNjvtvggomKMY"), }, - { .name = IOV("IPycXzBPNOGqor"), .value = IOV("KqsQZxNamAgqHFrXvjLWTwkseehVuxLJwbuxhnjaVgtQFVIaiMxHbDghUkzUiRnjGzmKdLCHlEVuoAX"), }, - { .name = IOV("kkJZHsarpJlzAv"), .value = IOV("XTCOSKwqMbPhkosBUPdwVnDgApTadZBKzRCalPvxPZodx"), }, - { .name = IOV("pBDsicJAAY"), .value = IOV("GrpKAoWDVPOmqPieOFyzPHilqTkUBBOMhcqLyFUKlj"), }, - { .name = IOV("jUaTYDKSgmQgtFrdUzwk"), .value = IOV("FWRPMZJSfhCMCUR"), }, - { .name = IOV("gfhqtNiIXjeionI"), .value = IOV("lMWfMvlOcGCkySlJrmlO"), }, - { .name = IOV("HifbVkWod"), .value = IOV("VkTUmTsKDOwxApEJKtGJKNENsGLU"), }, - { .name = IOV("fGMXKsYwu"), .value = IOV("hUkKuUfHncTfINpKVaVeVreHgedEhsMbPqnFvwdkfLgalfdDskLiyZunPiixrGFeKAHibgV"), }, - { .name = IOV("Woq"), .value = IOV("jwJMmJXqLQlwklvSYHsphoACC"), }, - { .name = IOV("T"), .value = IOV("HJOKNZWSZmpcqD"), }, - { .name = IOV("FnXNTbT"), .value = IOV("AiJbkKNEGPvDmVEykrOGiaaZVXraRtKqbcZTxiVrin"), }, - { .name = IOV("jrsGBjZXzhW"), .value = IOV("rogbRnarTJTDIkpttiRoRpfxqUdVfcRUXsFlxpeilWX"), }, - { .name = IOV("ZQbEZTptsjzcMI"), .value = IOV("SeFidDGujhnoDVGwnOV"), }, - { .name = IOV("caVHmirgZaHqcO"), .value = IOV("XcjNHYOkZhCaLCjkQClGlwjDheiALrTBEIkPlfNbbC"), }, - { .name = IOV("fLREmZfuMWinjyOtcKF"), .value = IOV("gwNYcYIgvLOKmiwNnSPol"), }, - { .name = IOV("YAvFDKLEpGqZuUnuVb"), .value = IOV("tjBTxjqGKyjADcMyVbqlNnMKCATmVz"), }, - { .name = IOV("zdnFRQgKVBYqBrHIya"), .value = IOV("tsaaGaZTwPyruIbSJImHFrguQKzRBaLrycLgGZPGbdWTRbuXDnaTJUyu"), }, - { .name = IOV("FwLSmEqjXrVkg"), .value = IOV("hfqLUZgJhdFEEkZkdsfiKDKXzHMEXyStlASldVeEHAZYXuESJKTcXxaEfdupPYl"), }, - { .name = IOV("sJDQdAxPoBsgif"), .value = IOV("SbmnPKwwGRmbfKyZHrrvOULbemCZEmrWWrhIrWkqZnVHOHzJHThmxXDnJVPvQlOZVGqhnFTMuasfVO"), }, - { .name = IOV("eul"), .value = IOV("AFKMyCyfMZGzFefYGRZaBzlEtUQsvmIFoeaeLVxAeAmACmXIxBryWAlUCwvFOtVesmJDM"), }, - { .name = IOV("ZoLTSnnibC"), .value = IOV("qryySHtsdWqdYLAtZophhUuXzNkqcUBdvPDhiRGyhkLoJsvwwswyAlmKTfKhxMlFQkOXgMysVC"), }, - { .name = IOV("gGNIxUJKtktgFAyOrC"), .value = IOV("zQuHCSdaQUZYLLurcz"), }, - { .name = IOV("XpiLn"), .value = IOV("OLrkcwjJNHqeQiIFrTDtzC"), }, - { .name = IOV("ICiqXrdBRkQyQMPUyWEo"), .value = IOV("DpRTweWFhPfnZgfmTIoXayyjAzhxtJKgnM"), }, - { .name = IOV("Edcud"), .value = IOV("EmOeGhhzBpCVdaLJEkIWOQQQrCulOYKssfYAISigcuuOkzlhOdneZTdtHLXrpeuzstNgOGp"), }, - { .name = IOV("FsIylwSjegTKJvnu"), .value = IOV("ctbMkpqXcpKdsOQHyFToNWvGbGYDZCcg"), }, - { .name = IOV("xye"), .value = IOV("AChgDRTlPmYBcaJCQxpU"), }, - { .name = IOV("yFKmZJH"), .value = IOV("GzXLLAXmkpbpoDwDiOPFzlCjPwB"), }, - { .name = IOV("Ju"), .value = IOV("LEhoQDmUFSDHwQBGeNBgSLbUsOWqjtOqKCdMETSHSdoVWuLFBDofUuCanQVgBXVpHstsFSQSCnHCZ"), }, - { .name = IOV("WIouRlTNVm"), .value = IOV("tzoXFEyGUdJnPSwrouTpTVKGqVuazAcLxlAlFMgLTPxZxljPTO"), }, - { .name = IOV("frLym"), .value = IOV("leweCBKvTvHsPZsBOdFDKbJCmjWSimArFVWgvnYFkXKcR"), }, - { .name = IOV("FZzTiwHgDmNlJRuAOcK"), .value = IOV("rPFxxiTYJZTMgyJldXCJttFiYBweFbJmbADpvSz"), }, - { .name = IOV("bvQPrazaHMszcfCc"), .value = IOV("HeLsPFsPqccJOMPLzkFmDgERlvJwt"), }, - { .name = IOV("tmwpokzaTWkcVk"), .value = IOV("LkQncQVvnvtdSWnNHLgCSqCEldF"), }, - { .name = IOV("rKBvLuveRcu"), .value = IOV("rfro"), }, - { .name = IOV("IRIB"), .value = IOV("ZKQjssDoniKgKWhsVYWCstEcSKXHEbQkaWapmHVXGZbXUvtongmyirHNedXfkBrxoDAJcaRODgWEwG"), }, - { .name = IOV("NMrwxHGp"), .value = IOV("cYrgaCpNwyYphPUqtmlGYPxHbljlahRAEcSvmNlBXhwVVEkIpQYXy"), }, - { .name = IOV("rbGphRGpJxKaat"), .value = IOV("dzrisBGLyiSEmANuydRamhuyuZoFlGwdILKfvmZimksTxZz"), }, - { .name = IOV("DpGsAlwVPVN"), .value = IOV("AMhZnWPhVQOEtuphrvpeQJhVDhkVEtuMeRGrOHVwpEkkhjPOVwDzbAhAdFXuRCdDI"), }, - { .name = IOV("aaULYD"), .value = IOV("FdiofftiuQtxuPKLonxgJjeeojEUXwOjxixWxNMxtDvHLzNaCBFpFGmWSlbMnDyTN"), }, - { .name = IOV("fcDvYtUjQXYVLp"), .value = IOV("xuTyKmkzsacNLXJOGuvTEwzrLYOIFWIsvnLlfaVPxckHaHZZMe"), }, - { .name = IOV("bSkEOCn"), .value = IOV("TXdSxOYJUbHMJOvSAtKGufSEEdkWaxYRphJdabIuJHqyHvDoOIRlZaYxazOpCjnoXBuEBQ"), }, - { .name = IOV("IwYDMjDg"), .value = IOV("FwdsdfFOfDgxDPiAHkFuKJuXwdAAr"), }, - { .name = IOV("qfR"), .value = IOV("hcArOaQsVHvvRZSMRLkdWPneWrKqJBaRSjXtbhBAtpZkuPBOpOmFIiqfLTErnyHNagaMUzbxbaxOLVfS"), }, - { .name = IOV("FTGxs"), .value = IOV("TpjogjSqjumlApudZPePzSwJhKtMxWZpQUIQqOtfXmNqGRPpuJWSiNVnvRDgrRRExgBLjLgYOKuWPIO"), }, - { .name = IOV("GbVbJBeQMKHRLQkqnJ"), .value = IOV("USAhpQcyMiIPmYeIQUTBpUXiyGpFzKkkVqvqPRGFhpVkYhHtRuRuwBikPtP"), }, - { .name = IOV("S"), .value = IOV("XhDEtALACZmhGhxhtfORcssiXjcBsDLkWROHvcIbursjnSISwaeUgHaHDdaLxOlTQ"), }, - { .name = IOV("FXovfsnWMhuZSb"), .value = IOV("haRzVGGDiyjwhyjjuPIIKCkAvcprNWqZzSNBHLEQrKXiXxFGGEjoaeaCXYVUsYABj"), }, - { .name = IOV("hECnkxw"), .value = IOV("cOenDJgWITMOvHYJYzSnK"), }, - { .name = IOV("UkSfuPHjPpy"), .value = IOV("AmOs"), }, - { .name = IOV("RdWBzMbt"), .value = IOV("KqGAunZmTrQmkQlKqynQrtCKzPmyhaNNjujJexhLexUsKuDcZbdhAWjSIbiiIFGxdmzSyQIf"), }, - { .name = IOV("LjpOECoGStfqXBvRJrU"), .value = IOV("RGkQPoaTSgbyvokgoWsubBTGZlrUFeWBwmjLPbPxrWQIJNfhfhlmSPcbCSsnH"), }, - { .name = IOV("Qk"), .value = IOV("oboBcuwUcoNPhULCuBwMmWfeHDGNgyvccdxIspfmNALtLonZG"), }, - { .name = IOV("dvEQwYzXqksPcrlrU"), .value = IOV("BeaKXNUoMcVlamiwkqPZljYlEtFcIeBv"), }, - { .name = IOV("LjgCgTb"), .value = IOV("OyzQtkxotigpJeAkWKvBQhipxUxlEP"), }, - { .name = IOV("xXSujRyHNtuZxpNVXig"), .value = IOV("TZuiopWhaXuQisJwQgTGvCpquBWdvLTdptJsPnSHomh"), }, - { .name = IOV("XgKABRI"), .value = IOV("MaDOmJNWdWhMSNGFmZOZMS"), }, - { .name = IOV("zjQOzghlLCSngcDLsiU"), .value = IOV("ixBmrhlMIAktUtxwXMIkSKsJyObkWnKUeGvkfhGXgAnyKljVWeaoCBOYXsCoghVC"), }, - { .name = IOV("VqdbJxEtR"), .value = IOV("VxHjvwldnSbCnduyeKQIL"), }, - { .name = IOV("ZUhz"), .value = IOV("CqskjkzGtIDnjtGFFFOjIphWyhoIqFjZQdrVCFcZte"), }, - { .name = IOV("CAwbSfeEX"), .value = IOV("TtzOQmlSaXkyOkvRIeDEfCoaQunAjfnPLsR"), }, - { .name = IOV("yTaAQPJoRrnEbJYvJ"), .value = IOV("bLLQEuxOBXCVLBnySfpAHNlmLmnFotykxxjlMItsuKGPTtgRbuzCoWcLbchxFIOVTGwkoLyrrjxWzXDT"), }, - { .name = IOV("mHbnUPpY"), .value = IOV("MTokzKOUdFXyqosoCYvwrqmXgQkyyeFbZAa"), }, - { .name = IOV("nvLyGz"), .value = IOV("IchCCmWhdhwffyAZZRYGmjaKUOTakCjmKQveLklEvxoUobuAEbAxDPBnrDkjfYifwGE"), }, - { .name = IOV("qIFzqyRjxkvyMMFj"), .value = IOV("axLpBfNcDZHEcQYUodmPPXgBmkPdUy"), }, - { .name = IOV("UUdMGFM"), .value = IOV("UvgkWBLSVqJRnutQdxNCZZvPpxktjxGYwPSoqtixTOhSYZtGdRv"), }, - { .name = IOV("J"), .value = IOV("PjCoANVSgHafRdswCTdTvAYZAfnQmotUrbudjzzaUHFDmYQxUYSnhaGTlCnNGyUpFGRQoYi"), }, - { .name = IOV("OZNv"), .value = IOV("BacsOqLfTkPprrplRMoRfCJaXLOuNdkjjEBNXkLbNeTpWMQBYSjkavOaAgAJc"), }, - { .name = IOV("Sxwfqgcb"), .value = IOV("sfcsKAoUyCRluVsxUnFmDATCBfZgCnTrHFjxUd"), }, - { .name = IOV("JtMEEqZDvxFqva"), .value = IOV("VNwCJFtWVR"), }, - { .name = IOV("bjRjULPWlhdKCm"), .value = IOV("WjdHcJoKvjLQiKWNwzjPIrwFymktSXMICBJYdiAasq"), }, - { .name = IOV("sfFYzykkVQFnqfeblHNn"), .value = IOV("yPulezzbZHyvNayAzfaX"), }, - { .name = IOV("DWCQwRfanYlLWK"), .value = IOV("ZebjAxCkvJUdfhCsryB"), }, - { .name = IOV("oebwFCVSMGIrrPzyx"), .value = IOV("WiqTJGNwSaBCNxnpdVwGIhckeDHhwGInDcCPNRlPCAkFGhrIAkKhJStLrNQkQfn"), }, - { .name = IOV("AtnnFGENFi"), .value = IOV("Y"), }, - { .name = IOV("zkFBrJaz"), .value = IOV("quMRGmwkPAMaFyWGDigzTpmEvCHDSWLzxlwtdXhNDUlRdfVIGTK"), }, - { .name = IOV("QaHMhRtiLaTwr"), .value = IOV("yAcUYPMvIvoaFnOiIFVFWfSJxvohMxgBx"), }, - { .name = IOV("fgjaPAGohnYAe"), .value = IOV("TvebthsSFKdcWWAudjhHoSWXQzEqubCTxgmjvQwLxNSvxCNYVtbQXoKg"), }, - { .name = IOV("nYZ"), .value = IOV("CxddMrxyugmVCWpLIfZlfhAerKrAjuOEfWFoqFjQIvoVldKwSVwbQhZXDxSSkqw"), }, - { .name = IOV("IAA"), .value = IOV("Bgs"), }, - { .name = IOV("eageOWxbvTixnUZQxTtE"), .value = IOV("vhGWixouevjyEQjbDNJbKeHAbNjdmrzJOoIVcbQyXiNp"), }, - { .name = IOV("AunoafztVXh"), .value = IOV("GmVvVRlmPNhsUeejKpZrgwpPCv"), }, - { .name = IOV("r"), .value = IOV("wAhnpj"), }, - { .name = IOV("EYsTwZnzlibzYJsLcnAJ"), .value = IOV("Y"), }, - { .name = IOV("gsIw"), .value = IOV("rEYuhZTNljFOOlhRBHBjTwASegUHknVaxAeumpgBBkaaBgnvwagBuvuoTOnDQacDWESZkKDNNd"), }, - { .name = IOV("zFlTWHCpuQxSzP"), .value = IOV("SEIVwowajyCNhrGaDC"), }, - { .name = IOV("aHaXTZIn"), .value = IOV("QeIhWLwKqYBYiRrVLREkLDuCfMGjFESvfloBOUAbsXSATMXvPxsNruVoZyalwG"), }, - { .name = IOV("DVTNnvDJXoxqH"), .value = IOV("pynJxTGfNzPXpxwKNDVYvTrKMppRNDaGgHMHqEhzxaUiWVwBDjtCYAhXWcUEeF"), }, - { .name = IOV("qCT"), .value = IOV("vwuHZVuYdaUNDODPIUyeLnERmZHXkRVrDJUHrieweElBiQkSLNiTbLQEYEbUMBYA"), }, - { .name = IOV("icPLydHvfb"), .value = IOV("zExwGpXTfAzVRvDBiLlWivXXpfRewdZkTVdC"), }, - { .name = IOV("JXtxcZvUMDy"), .value = IOV("CwRrZvDMeqvaKVhkVABkTsCKDsRPyGjJIM"), }, - { .name = IOV("wh"), .value = IOV("DcLuuNRzyvgpVClfBUrBEnjNqfKWfHzUHCauPXIrLhDbLUjnyyiPltPIzEq"), }, - { .name = IOV("rYyEXrDwwqqFAGDosy"), .value = IOV("OKFJnjNwzvIPbRgHrtHLcOpRflUOTAWZJFujWopUdlCjlQge"), }, - { .name = IOV("MzyucbFnahW"), .value = IOV("SOyTRmOtGdloyVmvfCceOrfErVVHeSVtxeAdOGPUJBhRJILNDXxWBxpopMmDQgHlemXYSXWkCH"), }, - { .name = IOV("SxyILShlkupONNvh"), .value = IOV("qouryERGjOCEphZjmj"), }, - { .name = IOV("PnnbgEuoWeJmehBTfvC"), .value = IOV("aXlPIwNrotkwoS"), }, - { .name = IOV("MfUHCJlDYltQBD"), .value = IOV("BEPmFSFCEwgjEZCidEEWC"), }, - { .name = IOV("jcFAgiOQyiEvBnZVW"), .value = IOV("tTCpbGUVfbYcnMTEUy"), }, - { .name = IOV("TxeJuUi"), .value = IOV("FQLFJdNALQuqdzOXSpxRxmeqviEHqNpHq"), }, - { .name = IOV("iuhLUxDb"), .value = IOV("YEFauTAXXnpAfcJVzVMCtykIKDnyhxPbqRiqxPrkLytAplvilAhWIQHIUIMSLLyDummDFl"), }, - { .name = IOV("LReacwPaFQszAddVnF"), .value = IOV("nBqNmNnllLZpPjqlisvlcMnmLzbXjNfkxedOLLFukYylBGyMwjfGFYbgzyIzKVSSNQvNDeubqTSs"), }, - { .name = IOV("kmipbwOVuNkxaacpcpaQ"), .value = IOV("YYrqRJxQNyMnOkGjgDpRJGuWELvaGBAUZrsm"), }, - { .name = IOV("ZzSAVrN"), .value = IOV("dfuiojgpvRSXOXbb"), }, - { .name = IOV("MZznKKSPGJsfVMO"), .value = IOV("ZGKrDlHqfqUXyqEGaURwIprVqRKorZUZwKadQBkYKEaWWrDAqab"), }, - { .name = IOV("fSjaJdudcspZkoDDenQ"), .value = IOV("yvodGdDTwQAIWMCgJOEIWjhgXZIAZbIcz"), }, - { .name = IOV("PpELSxDzVlljXsmwbQvl"), .value = IOV("TEAG"), }, - { .name = IOV("dxXyec"), .value = IOV("AHYdXRZafYjQ"), }, - { .name = IOV("cabGl"), .value = IOV("WzXQkJyCuXtJPiXOOLENxZkcWtqSDEmmBtVuxVoMsOMhYliWFSDKMukryZGJYnspkJvQUiFDG"), }, - { .name = IOV("CozRlefFhwWRcp"), .value = IOV("KDamErBiah"), }, - { .name = IOV("zPy"), .value = IOV("fEpJmcPbgFboKblm"), }, - { .name = IOV("SPmdaWizyiK"), .value = IOV("sIYxlDizrGOibTFdfNzmxiYheGQijFoqmqjYuKqUkGJQkBoXXCOfCQHZCBStXlwgixdGcmkqaRe"), }, - { .name = IOV("ZKk"), .value = IOV("lgdxedYhyeZwFiyBlyGJEmejbFieODVnrGudkgNKhu"), }, - { .name = IOV("DLHeUcTAWqvIzWjjWv"), .value = IOV("mqnn"), }, - { .name = IOV("RRBQyguHKTFFAtL"), .value = IOV("aPxkDhEkOckPgMgeUZcBiJorGQkwptZImTMFXCWpKyLiYFBOhNEf"), }, - { .name = IOV("Vt"), .value = IOV("zjQldnprFcbrCHvfLXOXYryGTb"), }, - { .name = IOV("YJX"), .value = IOV("uESJJNpCSoBFXKlbaicPFMHFrDenappVLYXonCsHghiKdiIkMwGTYzBDcAPZKacCYzFCpxUrTcEVDAzJ"), }, - { .name = IOV("rwlloIQVP"), .value = IOV("duttKLmieQXgkJCxHBtlbjhDxAAOSvgbHerUTMoTMjyRfHXGvrk"), }, - { .name = IOV("apb"), .value = IOV("iTtZkUTBkQqobkyLpxoszfNAZtWhOrbcsaOHDMQzBWtEhqTWSEipVbCgMYmRsdwvqrfb"), }, - { .name = IOV("lCSMZJdYbKayuzEzsy"), .value = IOV("CWyxnTJSaJpipqFqpfikWRWnOEJxqHeKWouSPjykqAeR"), }, - { .name = IOV("PjuwbHbxUuA"), .value = IOV("ImncXRuUIIUDzXhnJLqIeQvKDYaoLYxsURY"), }, - { .name = IOV("gMX"), .value = IOV("RLvwosDpKSKUAqsSgfwYButLiiqcPTSJUTJJpRIKGaYvzLjzHnwlIFDvUXbbrDZKHFKwskxT"), }, - { .name = IOV("OSUSxI"), .value = IOV("qwsMPhO"), }, - { .name = IOV("DrXXVTfIXErEOjZ"), .value = IOV("qxTLszzayHfqWkEbUnrXhROjtpfulhgnxjoGZkvGBvjwRidJPTmUDZc"), }, - { .name = IOV("kkiNhiJGRaEloVFR"), .value = IOV("ujNSEfdKrGfXvhQzCDcHAXAskQPPNZhbNvQUrOcJCIUaTcGoNxbzaJcRTiLNJfDeTatFhuQrVjMWwwk"), }, - { .name = IOV("npHfCiyMoJDzxJdDjiPi"), .value = IOV("KQbBOWavftZdzGofIocZJCywFjxEYjjiFjkSPX"), }, - { .name = IOV("eZdPzvcVXZkvDdIorwkV"), .value = IOV("htfFlnjWpwfacUHLDvbgmcSgIuRhMhygCaNrpLivUKtjDbqmTztUqhHuZcHtEx"), }, - { .name = IOV("JkwpYJBRJboGugWzBIh"), .value = IOV("gwcvejgtGUdRGJugHfsoPUoDPNOWkMqVkEvNkDhGkRJFT"), }, - { .name = IOV("jbJMhyKyUN"), .value = IOV("LakFhREtjaEVURkmUvpovRyqSYxURKiRucpHTlXyIOKPQNWweFzifEssmGOGiSURu"), }, - { .name = IOV("qekwpuXxEUUOAODarJ"), .value = IOV("iulJBAmoL"), }, - { .name = IOV("WNSpnt"), .value = IOV("ByFpuWFQUkvQjdjlMEkPXkWcjOuQGJQLCNzxZYJjUdMgWd"), }, - { .name = IOV("kvFlzvyPaAw"), .value = IOV("mgcxpdZqgtKxEbIhfnrx"), }, - { .name = IOV("W"), .value = IOV("lSqmkxqRALgFZhBzYCeeFL"), }, - { .name = IOV("sFJhnTwUldhuIzsWZ"), .value = IOV("EZHRCGXlRVrVXrNlHeOppLZfJxWXVyKLdVhVtUVzALysoXhakxtoaBLNHPvPZ"), }, - { .name = IOV("gqqE"), .value = IOV("sNfMuYsrnIXoIxZDzyCsONHcOYATQtUbvdHeShzUQCudHV"), }, - { .name = IOV("NgZpnb"), .value = IOV("mYsbBBJnOquSVVRXIOAeYdDeHGkQcG"), }, - { .name = IOV("dFTnAiuGxANANZHi"), .value = IOV("mtgrbBKVFORXBYegidBSiDKOQGcDLZcYtUAfFIcLItgYNDNWmKnntHTiMrgOuZNVfoZbKZ"), }, - { .name = IOV("YHYuINJ"), .value = IOV("jEKDIrDTjd"), }, - { .name = IOV("eFGQAB"), .value = IOV("SzhAXInyRcsdAxgILroPGZFaeWbTF"), }, - { .name = IOV("MTpBPDUc"), .value = IOV("ZUxGtzExJJxgYiWnTchjsXqNjVI"), }, - { .name = IOV("pXRAICdieLrKHED"), .value = IOV("vgwmtJQgoAleLYTgRUFWJstIqcEoQGKn"), }, - { .name = IOV("yugMQqZlszVHnaVM"), .value = IOV("rFzPZVgfXLNMIVkqLzMmCCgMSepSFOETDcWMHWSarsOiFzTYWBmOEoLIXgIGHKMFfH"), }, - { .name = IOV("KJq"), .value = IOV("QKDJwDk"), }, - { .name = IOV("sLXc"), .value = IOV("tAomxfuBMNmUUrkdujOuZjtDDWJAZKFJULUGhcTiQm"), }, - { .name = IOV("SkUsyJdnABwzlypikqn"), .value = IOV("WCljEJOPiyoTlokFl"), }, - { .name = IOV("VKnRjtKfRAWJ"), .value = IOV("dgZtuUekOwgiCWchqCsFAbdTYojfMjkTbMgGqZWNHOLEnIFJfSLYnpHZFBOFAj"), }, - { .name = IOV("LfZglvnQdOg"), .value = IOV("LByOLmoABOhDmuDKogFmRIfZkUBNjdinlOwbMcymNiXWhfCoscgaramTCqcfEHoSTPt"), }, - { .name = IOV("vBDmsnnvxpUHuwmlMGhe"), .value = IOV("PJwspiZAKtcVUPDGVDTjNeTNIJvDeEdJFPQWPGnqESFM"), }, - { .name = IOV("YPMgyzcNtr"), .value = IOV("DGHJCaowTcdJOcEvHqdejqVRvspdfKbxARZNnwZYreuBBfTXeNvB"), }, - { .name = IOV("R"), .value = IOV("nqlCqmaThcEaOKLCelpFTJlkwrKcIVoZSremSbPPacYe"), }, - { .name = IOV("DYCMxVmeaPAoTHQYmRT"), .value = IOV("BKsbwxsYXEYzeKDqcCutFnGZDCBTSGlXnFAakbfgAofbAIAJMvhcWiRwdyhrmBylmGRYINnFP"), }, - { .name = IOV("feyNcDKRfCXFSxDR"), .value = IOV("wyAeklOuQCGaRKfQrXTGCe"), }, - { .name = IOV("yJNacIeOJBZ"), .value = IOV("BVusTStaYCAfqeYuTlkrlq"), }, - { .name = IOV("rZUE"), .value = IOV("wnRNFIAuJkXrumhISjfUykLOdfEzmXhyTWDlQmSlxdnbDtyRIBHlOqaEbSjkvDrjOMTRsLJCTLx"), }, - { .name = IOV("jlezOE"), .value = IOV("btPpreudMmIoamrvqivJAYtwhUcbbeFBTzqwArEhnOgOFmYVWyRQnKPtvMyUCKuVEVh"), }, - { .name = IOV("o"), .value = IOV("NApOyPedldFDIrFVOSXP"), }, - { .name = IOV("sEsOCzNnxvdtggo"), .value = IOV("VUlrtmZAai"), }, - { .name = IOV("XOMgtQvTMHptQFOVz"), .value = IOV("gfHDbuouGPYzxKFYzEMmqS"), }, - { .name = IOV("WlgNTNAlVtqKqOy"), .value = IOV("SJAsiHXfdzqZjUZgAWjYyZYsZvFQpYIemraKRjMWEGSIFvVRzPVxmtnXy"), }, - { .name = IOV("rfcknpHcDaf"), .value = IOV("TuoGICCZdifXuatbPpcWQDwpAJPGPRjiXmgNxUAVZIgMHjGRAMhzlw"), }, - { .name = IOV("b"), .value = IOV("jAlcGtFiIiCRdQRDlgxoDpppGHFCwhbXJlcsfYbkkVFOreDNEBrBqCaJjupRoDambYvSmJDOqNviQsaX"), }, - { .name = IOV("eXHz"), .value = IOV("wvqKqwWQIDvAPbIQnoVWultjMFDfpvNwnpBPQrTAoOEOSlvLUgywTROCLKjJpeVWxdUzczaFnoyIUZP"), }, - { .name = IOV("ckImZYDMt"), .value = IOV("yqeBSazzeLUyEcXiSUHlaHopQShStgQmFwCNkczxsmfjMmEasbNkdOYKopPgqqxkz"), }, - { .name = IOV("DvczuNjxXrPgBt"), .value = IOV("IvqsqNCdqocGJVOkSJINvEEjVNDgnMUzTRMCwKxHdfIrxhOZaTcJkqSJIFOna"), }, - { .name = IOV("NFMMiMzapkHFwyVLzl"), .value = IOV("FxjTPgHudLomWCwwJguoVuibQnPaBDDKVNOshsjyePrcMnHrHdKRSNNSJDkzLfwelAo"), }, - { .name = IOV("uvLVzTAyIuPgjHqpFB"), .value = IOV("PwUxbjHpCOEnYkjYgcECguZJSGeqAPZYDYPHMkxrYHNsgHNrQtu"), }, - { .name = IOV("dVSANXnUgCPTgSz"), .value = IOV("fbxnKECdReSCcTvasxgaeETXTnCOSwhSQsKbEAUKmoeCkpRGkrUJbIXzbAHrYxdoZqctKKgCahRZJCI"), }, - { .name = IOV("LYLDqlkOfHca"), .value = IOV("RKKITEocKOrZbHMieCJOFHmMyEqeRhVFIApFEvvfbMUaqvOBWsFtEsPxaixDjVqRIDsHN"), }, - { .name = IOV("xq"), .value = IOV("fZBNeNeOpBYWfTVyWrIxqejUeredlncECIq"), }, - { .name = IOV("cLE"), .value = IOV("XXVEAlSkQohCBSNZHePtjpLMorcwNudvQeEuXLpiNPLCKSXZBapnFylnBMaSlcMIBpPvWlkRDigd"), }, - { .name = IOV("dRRzyEZtFhJADTsBJD"), .value = IOV("ZrZDNEBZHUauSBEpLtyPvfcWOxPhlQsgWCRcEYfDttApcbvHuHdoWmdgYPYVEpjlsGEtrl"), }, - { .name = IOV("CpH"), .value = IOV("OeSKNjZjzAHiGZRgJWdSlzMTf"), }, - { .name = IOV("rzrkqvimH"), .value = IOV("bAQccpjREPIwPpTPOLWrejOJExZeGJuSxQb"), }, - { .name = IOV("CvdkmqMiH"), .value = IOV("ABfOZABctaUGsHFqFPRrnqjahhZMYVPRbpviDJCAAaZwqibngJdYQdXMZ"), }, - { .name = IOV("h"), .value = IOV("EqGrh"), }, - { .name = IOV("KNbANPiu"), .value = IOV("AFaGkMxtXmLTGSULyAbdyySKmcFQkPaXSmGtpuoSFyIKghtkZJvTrecNNwLGFAzqNOLESmhV"), }, - { .name = IOV("SHLnVLdKhNqVkstncR"), .value = IOV("hsxpOYFNfYTRUWhASJQBtuMnotfANbojaZqnlUObHv"), }, - { .name = IOV("ELghoj"), .value = IOV("zzSCGwsQTsFTwAXJbuPJJKVyMdXehrWUlxbQAKp"), }, - { .name = IOV("gxlGbux"), .value = IOV("TaKEPlysaTDuYcznoliXzGJhUlAWGYFOSKXGSgkarr"), }, - { .name = IOV("ugebBBKnoSuNpSOJQ"), .value = IOV("mjjPFbOrLqfMSnUDoTcpkCj"), }, - { .name = IOV("huBKtP"), .value = IOV("YhLjbvWxeysZOdMcsITcTIGsOJkZBqcysxXmSIxIsjXmvPESwBwwlAoEZrgayyMn"), }, - { .name = IOV("OfABJGRfCqsxJbl"), .value = IOV("JhMiqYvhjRxDcFYElYiZdiQexWGxoyLIVotaSS"), }, - { .name = IOV("eDQhnXYAXLao"), .value = IOV("ZWwbgPNFPbhZjJWFfFcxuifCeFNAERjBNnGUQUqNmR"), }, - { .name = IOV("WpMIVcWmRqYo"), .value = IOV("jmcwyQ"), }, - { .name = IOV("osRg"), .value = IOV("kvDskMgXabdNBlaoEhQaafZLeBzJTNbLGWXXjHjRNoztDcjOlHX"), }, - { .name = IOV("QaWmOUVbJWEOCsix"), .value = IOV("vlsMNYKbCsRRCYafuQJTBVufasv"), }, - { .name = IOV("iWJryoGgeJINxhWcURDu"), .value = IOV("UqIZzqentwzekaeXesKNVxtXOZLVFkQzmheqKin"), }, - { .name = IOV("IcksK"), .value = IOV("hwVSDuikYJvYXvimDRHoplUdLJpkVPggUmbevXSGcjiSqKt"), }, - { .name = IOV("dfZCgIxi"), .value = IOV("yLVbnNrSwCBwfutkExnpghXmgQQltsLgTn"), }, - { .name = IOV("ID"), .value = IOV("myjzjdjbwkuGwBLjldAsfHRxfNBAIZSFpk"), }, - { .name = IOV("qcKMyGSqZPPtclCupuFt"), .value = IOV("RdmFpwzwWgYMywqJTCBuDwPMhTfDIxknjyBoZEUHVliuZHsOaERJwpaPKMhYRIJbVZibKQRf"), }, - { .name = IOV("CPMZMg"), .value = IOV("eQOti"), }, - { .name = IOV("EJvQ"), .value = IOV("LHmtFQOrlpcdZnqlanIBvlyBonXsqEJviVEBqtiNpLDaRQIvJghUehhsHIUCo"), }, - { .name = IOV("VlAZBwFeBNsFabfsw"), .value = IOV("WXLIMZUuapVNKyTnmmQdXehRvCMGxHnGTrVnf"), }, - { .name = IOV("GtIXMOPSlhkvTycSxoB"), .value = IOV("YQJnOiQGLpnMgLDmicDbOiZQGsrSGfStIbhTVaZzNzyoapWayejaPnQvbSSpXCYrjTYbqtZtvonVLR"), }, - { .name = IOV("JL"), .value = IOV("MZiGWvISPwoIdktnJmFMNUIOhGGbjTeEJrkXAdFHWjjbcjILJdDigReqyxxVgbLbQ"), }, - { .name = IOV("YGZYdYBdN"), .value = IOV("vGljIcFelqxAeurlmmUEMyzw"), }, - { .name = IOV("ONuwoIkuAqA"), .value = IOV("tgHczAMaFyOYPCoYvjeuOosJoMKfbWSrqgrkuvlSiCYiJNnzNxZvabiFkVTnAdIhEPiMolBzcNjfOmvZ"), }, - { .name = IOV("RkkCaNPxjAXKcqkk"), .value = IOV("kangIoOKzmlOmzfBFCbMs"), }, - { .name = IOV("cjeML"), .value = IOV("uUAfGQpSEzhOiTxQMJmdsMsLGseVHPLImNEQivADoBNBBlDZCIjkoTLITYKGKPOa"), }, - { .name = IOV("TfeZVboiBuIEtHdtS"), .value = IOV("wQVDOHuizfHuBKOfqtQsuOzbCnYEyTwYL"), }, - { .name = IOV("bC"), .value = IOV("dUQqcgOTkHxrLYbikjUbAJTcaLwPuwoYnpxLdpQEOciZELdHhjTWluZAQluedVudYDYLwl"), }, - { .name = IOV("kllgXzJOhTgdGm"), .value = IOV("PgxPCLsJevvVsdNXgSH"), }, - { .name = IOV("dvyFxGFdzKwpdP"), .value = IOV("fsgGNNXALHIZvHPIPZbNLPYAJAEoLGWxwyMGYnQ"), }, - { .name = IOV("kTHl"), .value = IOV("nCdtHKTiEmoOramBbGQPWggpltegaRxBXiEVgLsOkbJMvlVWPTnOIyxPhzvSoHiWYIDNe"), }, - { .name = IOV("TxYEYfPulji"), .value = IOV("HPQtHEMIiIg"), }, - { .name = IOV("lRbsYGVeDaCTU"), .value = IOV("asZsnnGcoVpDlKwArwFoVcOdihzhRSoqquPYTouSekegahnKzlXMUTmztGCUgAkNtBjysksKb"), }, - { .name = IOV("A"), .value = IOV("dioseIxa"), }, - { .name = IOV("cYIhJIsdEENNzqvUbJhg"), .value = IOV("CsRqjJQbcOEKkEILYRbQQkOgKIRNeJqBHNPNVWie"), }, - { .name = IOV("djuNsfsktVCgtvsks"), .value = IOV("PvR"), }, - { .name = IOV("MzDozWWjgHUcMPbITjQ"), .value = IOV("ZDYqmghlovYBbuQIJTukZglSvxIaeRSq"), }, - { .name = IOV("ocf"), .value = IOV("bFdPvZxBaxOqlQhyvOBxpblBUwCjMDGWhgvchzIppfSGihnIjyaAcDwngBa"), }, - { .name = IOV("SyBTxwTvpvwm"), .value = IOV("jsVMdFxCrX"), }, - { .name = IOV("OAmYPNpaBbDSxygRf"), .value = IOV("hUaZJqjTslpXDZGPaMkBtQkTtvoFLKThmzokIOhrmKWhirMMlhLAoC"), }, - { .name = IOV("PCdlKzIWXUwQXskNy"), .value = IOV("yUKDamomMyJuExLaPkuSwvdoewqZtDiEEsWkFzzCKdxlgRbLidPZywZXgq"), }, - { .name = IOV("iWSFkdxV"), .value = IOV("dJYLaFwjQXqJCXdSISWpmtIxxVViaPJuPpyADgZt"), }, - { .name = IOV("pYR"), .value = IOV("zfwkTSxqkwcrpaeJMFEWLwlvvpCumJUjnQBGMwjFgYNbVoSzEpynqqpQpbIW"), }, - { .name = IOV("fywbcK"), .value = IOV("mXhQKRwfCGstLFXQRLmQoIBWBPsXALyPYIUGxgF"), }, - { .name = IOV("OOGLGfuqpPv"), .value = IOV("MtawwbujaoaReIfqSwR"), }, - { .name = IOV("bKTqx"), .value = IOV("zOeBzoAHuUfBBcsnjFNmKbuTglZHlGzCOIGhreWpqXiEuhQlROqai"), }, - { .name = IOV("H"), .value = IOV("yOPTxkZAEziEXvlsQTTapkxRGrQpIBeUDNwTVinwGVuYNmCrTeWUOSdmcDAwBRiZvOqWrntEP"), }, - { .name = IOV("kTa"), .value = IOV("mrmpweSzzIQALfrMRbrjWKzDJRUUeCKnIyNYTTtyDkXdyTEgoaLuJXhCxkgysnsVv"), }, - { .name = IOV("jdkZrB"), .value = IOV("WVrJHNsyTlekbocatoglScadsMOdkxzmiNYcgctGyNUUZzjehLCNp"), }, - { .name = IOV("iYvklsuQDcowwEFKSw"), .value = IOV("TVKvruGXSXsQTGWY"), }, - { .name = IOV("ZQtLOsW"), .value = IOV("pgqnrbLUGeRffKoMfBRpCiBvhfvzm"), }, - { .name = IOV("cPuz"), .value = IOV("PrOnBMvdFPZiYQtopzKvblsTqvAyJWbOOt"), }, - { .name = IOV("nrrOfDpFDGlfSTs"), .value = IOV("RGsJInTMhOhimbbXHbeMpya"), }, - { .name = IOV("BQToUzjZSRfZtI"), .value = IOV("GgTAagpZBSWHLAERICeCYSPlolILLDAfGntseNVZujbfRaCFSJFCbChFZFlZJATgDFdDdBGJptmQKuF"), }, - { .name = IOV("zvJyz"), .value = IOV("RTByLGmRlCLctkpUgoZAxZTHGHHZejBqqEgmWCFoYSHQSTasfbFwxTMVnoVHMRZAlPzbN"), }, - { .name = IOV("JrPoGstUI"), .value = IOV("SBnrqGYlUDk"), }, - { .name = IOV("KQlsYUSzwhBs"), .value = IOV("FbFyfNUmXLWCObyaqScBRMdNlwvZTfsIeXUFLoKCUzNHxaJAlMIDBEGovczIPy"), }, - { .name = IOV("g"), .value = IOV("UhBHVAxsObuaInueUQQHFSpDIZvkQXaqaCj"), }, - { .name = IOV("UUmcKJISBtnRXfp"), .value = IOV("CgLhfBmDPwESQOmPATkXngbrZBTOVSXQSotDeQTWmyKzYBXqluaGVMyFWJZMhUwWuoDLdsfdce"), }, - { .name = IOV("wWFdjHvqHysSedTp"), .value = IOV("lxvlvReIabgwsamgrEmOPMYWChzxOyUZfaZXcHkgmgCdyQkktugRrgWisGamMWrJABaWeJpFdf"), }, - { .name = IOV("awldIgtc"), .value = IOV("PsvVWbMafhZLiEbaiZDVwSOVQgHOvOyn"), }, - { .name = IOV("AaZztowuiSbOmupD"), .value = IOV("cvBKQLgaBFRwLlIlGpVdUacrxrdJXLUQUPnROdzHBJ"), }, - { .name = IOV("LpEfOXPsZJKkkHirVWV"), .value = IOV("YfwOFIGbDOIETSoZRNqMdN"), }, - { .name = IOV("ZEFAkkNP"), .value = IOV("hrtRgnQjLFJzIEiXRIOnsldParYfBdrqwdPgRoU"), }, - { .name = IOV("dwr"), .value = IOV("IbdPrirWgiZUukxUtmfjzejGtdhCuLDSAdWNkZkieaotfVpRUhVQmpZNnEFTB"), }, - { .name = IOV("jGUETdoUpROCkGbgE"), .value = IOV("vOFDeHXFaIgoz"), }, - { .name = IOV("cJjvVonCKCeUKwmxrEp"), .value = IOV("DpmAQaiNSQXXdlrwyAhBOoRwKfczAfzsRuzpbGyWj"), }, - { .name = IOV("JKTdhloY"), .value = IOV("QBYjnYZOF"), }, - { .name = IOV("PhocdryVniVa"), .value = IOV("qzSfAgKtxy"), }, - { .name = IOV("CDwwlMNRRegcj"), .value = IOV("ZqdRkYJmHsyGGmLMipJvdhVmroUIAPSvmYVXyAMqdbMFAIP"), }, - { .name = IOV("xTlbRVXTgQkGUeMoeK"), .value = IOV("FHmHImRsBuiqlBPciGSyYhnDoLCvLKLTJj"), }, - { .name = IOV("FVUxIOtfLc"), .value = IOV("OYlYShLvgUEBgNZHvQUJhpjQdyKduc"), }, - { .name = IOV("uaQKVfgTTA"), .value = IOV("WVUXdFBuMiGyHgvlxNVppsLeBhCMkhOcdJqLAdDGHWFGVbjIFpkyiuCLuhlcg"), }, - { .name = IOV("XRJv"), .value = IOV("cnVFlhJKpLbIiRkpdbaxxx"), }, - { .name = IOV("ThZsZcfv"), .value = IOV("bwJRWoedadpBrhXdVmZdkQxRQeSBPJYMQnBefWB"), }, - { .name = IOV("iRmvsdtVCHVePrpWz"), .value = IOV("ugbIYkuxaBVAuAdOILrXSmIHOplM"), }, - { .name = IOV("iCeiCXoxlNCAN"), .value = IOV("BzhpYJhhevdCiLOUYtLBIKBjw"), }, - { .name = IOV("LaamswdFEpShjSzMDx"), .value = IOV("uOJordeBfSCZWkLfCSfzWziANRORmXHDuHbFYJHmaAyntCLRPrZRhjVwFFwKhtRkg"), }, - { .name = IOV("n"), .value = IOV("hrkGfxwLQkfvrGQAPFLGLxHuKXNMSzuqeJhMffFzHXdPrMfQzauhlkrilhftfFkDqfpDo"), }, - { .name = IOV("smWI"), .value = IOV("XOieCMAdWwtKlErwiIryIVyAOMrOzHgALAYAEjJiAtFPkSVNpaBpPBsmUpdMzfZBLcwErFXInVd"), }, - { .name = IOV("bXLoBmxBUZKs"), .value = IOV("gnQhopwPrsEEXUjTirzsGkwkT"), }, - { .name = IOV("jaMXZTSStlsnxZO"), .value = IOV("Mf"), }, - { .name = IOV("p"), .value = IOV("BwfRnvNRgqzAAVwzzKwyYYBEaFDKNdR"), }, - { .name = IOV("xBrFPqSyjXY"), .value = IOV("KXiTmHNYBcQPFLhnxs"), }, - { .name = IOV("MdvGIGEbtlctOQNSedtc"), .value = IOV("hwXdWDsRmrZUTuResBOVojNkxdYxCqSmwAFySGuVIVbXoqTrNBdTwlmj"), }, - { .name = IOV("nIY"), .value = IOV("tAobEWELaHAdues"), }, - { .name = IOV("DqFyXVvCZj"), .value = IOV("uyibdZAmIjsxGzZzetxGyceNlDV"), }, - { .name = IOV("TKyckzMrHrwNY"), .value = IOV("IWqCLSpqnvVMhBAJPjniiWhNVTeVcmmGpscTVcTrKOqKylqRxRskGHDZxYkLEGnibLdfLbxrB"), }, - { .name = IOV("GNFbDh"), .value = IOV("Tmox"), }, - { .name = IOV("ytHviTFahLe"), .value = IOV("dPMzZwSsDMyqo"), }, - { .name = IOV("yhWit"), .value = IOV("NeXPwccvsCGwsNzSWWDtgcmzb"), }, - { .name = IOV("amNJOgC"), .value = IOV("JOIXDEGzFWPHbpotVXZpgCTSyYKbgDQgoYIhpLnvbDIMBJXhGfRYrayybLDNHhHqmBhWyoAmCcjpb"), }, - { .name = IOV("swDWiWwrRy"), .value = IOV("FVrXpv"), }, - { .name = IOV("yPWQUifwmSMmCEeOV"), .value = IOV("tqakSJOWU"), }, - { .name = IOV("XeBoVLNsRhYa"), .value = IOV("VREzXPSqTeWONwjWrTEVohuGKBDuamIwRHtBCiMrAVljBbTweILLUJOEgfe"), }, - { .name = IOV("JbKqmWQT"), .value = IOV("avYCzzsjQboGOECqqJacixKEQxbdrbxxLbEylJIMhAvjHiRGdcDeoFvJKtpxclBECVGWWFGXKeOGgLu"), }, - { .name = IOV("nXvQ"), .value = IOV("wgrMpbiSWqGahPUIpnFVmSiKffOOGAqoyyjnMsmNZOBaXSYqaDZIsLGiKUKjiLvGsXqfKBwZpUgvauD"), }, - { .name = IOV("lndGG"), .value = IOV("tTMXimjgWdSuklbzZGRrzwAApEytiOdaOE"), }, - { .name = IOV("YzoisAMGn"), .value = IOV("jrOUXZYfuhvgbtWygspxOqXiUipgTXUuPVPnKeJhrUPKMoG"), }, - { .name = IOV("SQXAtGfONkSTUwkDV"), .value = IOV("kvaneyaJnGYdOttwGqaBZzBqhFFYOhrOGZnHvQOVCLbURHLpFXDRwTlLyBPdqrHaLRGMAKPKIpFPvte"), }, - { .name = IOV("AidAdbJpEFCwxuSuRz"), .value = IOV("mSxbnUCFZqCNBw"), }, - { .name = IOV("UIWFrmSqZadkCrBFQGbP"), .value = IOV("MRGrscpcwdOKBholFvKByAlaDQOmLZWcoclmAi"), }, - { .name = IOV("mtl"), .value = IOV("FitbQYxBfHsvvjSfLcoRXEaDQl"), }, - { .name = IOV("oOnPw"), .value = IOV("zzuXfUzMtXNpkvdoRBAEMxasjDeyTqUclzEFMqPnjYFbdfvpcKmIthdFoImaORqZOooHC"), }, - { .name = IOV("Ed"), .value = IOV("mvkSdmFduHujdatkrfJeWqJTCHFkPnuqaWNXeQtwsbERTUeAzfYdFuHjDpOwrhpLPHFzbDeO"), }, - { .name = IOV("FjXgjh"), .value = IOV("NSMyWxLbFMIrEQbJvOUtFHVjtNMSIFFiGIOTdZwjwEUCLRTHPkCrhHsJBFygjiYiCkSvDzrEvvpPnQjH"), }, - { .name = IOV("wl"), .value = IOV("eYngXgVow"), }, - { .name = IOV("VyhPfvPvjKvIpJlnd"), .value = IOV("hFTDkmWvuAsfSnlynWbxsQGKWGywJEjsHXZwFBVMgIeYfTTGNzdMYkpJgXtsgSXpFTYmGxEAnwW"), }, - { .name = IOV("yd"), .value = IOV("XIrFFfmRlZKHXHgPVmrxgmfEhRDwgIslZSkAoTLkc"), }, - { .name = IOV("xAKwFfxBRoAc"), .value = IOV("aCtQFqGOLhLu"), }, - { .name = IOV("jpMvm"), .value = IOV("qaYLcEUHq"), }, - { .name = IOV("DTvygRpMrqS"), .value = IOV("JbByKRxMlPZAMpQdrdPucHdHCMelbDhsxBaXuXetXrTdjDRygDuNGCmwoLJ"), }, - { .name = IOV("fzlImVzxnVs"), .value = IOV("TbWsFQvDPWeZThMRFlhfsDYfAEDxqBfYfybpVhm"), }, - { .name = IOV("teCSANvwLhjLr"), .value = IOV("TYLZFiROeSOmCxSnOlsWLpYVEnRXhgyiJsYxJSARwhmXBqQzdDdRON"), }, - { .name = IOV("zO"), .value = IOV("fJZjRSrSqBHCCHPprtDCpWxMtPWpFOMvBWyqdMKns"), }, - { .name = IOV("ziOktCmr"), .value = IOV("aTGcwTpQpZTrVbRQyLdSTDlWAC"), }, - { .name = IOV("YxZXGUcXuoPcBwDH"), .value = IOV("KAZdyYsDCnDZXa"), }, - { .name = IOV("EXiRiFFhItZUeKbXJ"), .value = IOV("dExxHzGNJoNAdTxMIXxV"), }, - { .name = IOV("onw"), .value = IOV("QaPlASsTSQghTpDSmsFxGbotmCiEbZRDJ"), }, - { .name = IOV("BBEhZrGuluJCx"), .value = IOV("ItIcHhIwKnyCCqJ"), }, - { .name = IOV("eQHdjZQ"), .value = IOV("CxPLogCAqadbiTzlCPbjHAMyAxmdtyBywPtQT"), }, - { .name = IOV("dkWTGClMNuVHQ"), .value = IOV("WRYTHRrBKdfRexuFoohMjyjjUqxeDVMAnaLEeHkwEhD"), }, - { .name = IOV("psZYHxjeJ"), .value = IOV("uYILccFDeFzzveosyhijahotZZgmnvMDbgoSgK"), }, - { .name = IOV("HHVrqISJ"), .value = IOV("kOZuaCPLyriSRlyszwODYieuTdvgBYnOjWVqaoX"), }, - { .name = IOV("tNfajH"), .value = IOV("TshASnhhWslloeKKaMZrcnYoGHAhMLYySCOOFRPTpSvlxuEJVfpNzJc"), }, - { .name = IOV("WLclc"), .value = IOV("jXCjXCJztUuJcgvIkQGgRAsywpnvGJYCvlgkUlUMeFSuQYSExrr"), }, - { .name = IOV("RpDLrfTQychXQ"), .value = IOV("vHwsmQUnIWgIVkHPvhhjyQCaUaGVvpJvtSxroCvdAhxPwYkyBjSPDdsocjcYxSFEggHrDsMT"), }, - { .name = IOV("WpVUmZtZrEgWnT"), .value = IOV("bKnPuXATxxfXloAcYoWLuaxKwNDkkAzgQTlWU"), }, - { .name = IOV("cTHYjNhLNWsShRR"), .value = IOV("ZgowiBHLKxftYOpeKCzyRdPGRyc"), }, - { .name = IOV("IDmSpeNxlqFdtJGRGp"), .value = IOV("tbecuCPlzPYwCWLiiUhylQOmqiqxstSmTYFVewreQhCxBLNsWEJIblFEaDEMjuONnnpqJb"), }, - { .name = IOV("qYGJeSSxrvrb"), .value = IOV("TfGy"), }, - { .name = IOV("wozEJggb"), .value = IOV("WzMsYEGpDboYPMiTdMfjRSmyllfjtRmxlX"), }, - { .name = IOV("R"), .value = IOV("JSddbAjQwOpGdwYEYDnEiAmeYRSKRSVWkOyDnNudFX"), }, - { .name = IOV("HVVDbOPQYJgPSNpzpwOM"), .value = IOV("WGeqlSTJDNAptNqExqnjICuStLqwaOwkiuryWBOutPkn"), }, - { .name = IOV("fnkAjvk"), .value = IOV("hYhGfzxGlIccGFNoxYcKwENmXakXRP"), }, - { .name = IOV("eRCpl"), .value = IOV("WbyfXztVPtbRJtQ"), }, - { .name = IOV("VkFQmap"), .value = IOV("RfChNQpUHWhIRClNCiArEUciYI"), }, - { .name = IOV("elrrsLfVLQgFV"), .value = IOV("lngaaZgOjatEXitmyAkNNlRgbnzvrAVxppjLAmAeMRKiQvmYprGrAbFdVmAoUTvErtBNKizpvjCpgwf"), }, - { .name = IOV("KKYzIUhtOaMASgkNo"), .value = IOV("NMtxVWOwMZoIGD"), }, - { .name = IOV("JcY"), .value = IOV("aHxrrIVlPgRevxjDjHSkzOydXAbKlyLloDGWyTCJuWtRUAKRUMOjxDRvtdOMhrZXcRzGdnxz"), }, - { .name = IOV("ZPE"), .value = IOV("JToLsaMrlBrqkqPuMILBYgDFYfvMQHoyABZMYZAhDcSSxgUAWOOmdVThtNOZsSSNjGbtyjOUFNutpkSN"), }, - { .name = IOV("bbhtlGGOnbZbarapWZ"), .value = IOV("vGijSLUtyvToO"), }, - { .name = IOV("HlJjI"), .value = IOV("FyfWSbpZOMMCmSwAvJyFKnVBYZOtgbbKHbRvCsxh"), }, - { .name = IOV("xwJFPlgkVBsIgl"), .value = IOV("vqbvfRoNJefkozReijpvZPr"), }, - { .name = IOV("JAMCdbn"), .value = IOV("FoYpsAHwsxnLGWeRqCcNxmd"), }, - { .name = IOV("PYddxcvaawXlvKB"), .value = IOV("nnZGsuWEklrqPMWvFNzAVODSXyTYphYVmsIreBlEJFgbPUDe"), }, - { .name = IOV("QPEslvc"), .value = IOV("JyvkVUfZpNGXemTqrYlJkZNxPTQSEcPbWjMsGYWBqcojyciEpCsWYaOLPXNCJHBkCuy"), }, - { .name = IOV("TdXcKB"), .value = IOV("ACpKphZGPBBQNRCbDKhJmxzSXHSBlisMIjXtoivSjiJioTcPdCuzFwd"), }, - { .name = IOV("KVdfSb"), .value = IOV("ZHPzJoRnAisQlGGJDSvQQoiZKVOvJmgUGbPbWeKXOfTkhHKFhTdynlRjOVKAMlWZThSdsW"), }, - { .name = IOV("NpdMJcHfMWCSqcLq"), .value = IOV("fjMNvWmQzeiUyjnRXb"), }, - { .name = IOV("oUpVyFSVhzjWeOuNOVSU"), .value = IOV("mZILpdjVFxNslOcPVpYIpbIRYDGdb"), }, - { .name = IOV("bILZJSSRJzIQvhas"), .value = IOV("gexRjhqm"), }, - { .name = IOV("bbPvXtMEYBkBluX"), .value = IOV("AOnKEzhKIaGgpRbchYKRApHpMWnxJM"), }, - { .name = IOV("LcozSJII"), .value = IOV("sZhIEmeoKZeEWYATuiEkiNedkbAWXhXJDkyUfarmCLomxqzzdgYFeyihrPxqTpVYx"), }, - { .name = IOV("HVPVXv"), .value = IOV("UySHfOVXVJBufSBXoeDUHcTVKaUIcExBmSKVwlqP"), }, - { .name = IOV("MPDEFRBlhjmHn"), .value = IOV("pjDtTpym"), }, - { .name = IOV("HAamOcqZuFC"), .value = IOV("hglidj"), }, - { .name = IOV("LLlQ"), .value = IOV("fSboNRHyTBVQGhbZBIKvCdAmxoYxwyRPdSvNHwJAwmZW"), }, - { .name = IOV("uDctbGd"), .value = IOV("eDjGEZfipiFVFhkMIgJcGRqqjFWJqUXmmpXAtWOcDqpAGlhGoRqoPjDNORxjUDSqjdpCcnwcOMoeYqn"), }, - { .name = IOV("pCJKj"), .value = IOV("HDZaVWVKGzx"), }, - { .name = IOV("uKfsCxzozfdGk"), .value = IOV("n"), }, - { .name = IOV("nSnbDOUZXHpJQ"), .value = IOV("ERgBXtfDHTBMinSkZANNEahyBTcOAzUVuDydJtHaUbr"), }, - { .name = IOV("eXrHSYJjfFjtZHw"), .value = IOV("SaWxbzgxaB"), }, - { .name = IOV("cRIdzhkCYohm"), .value = IOV("REwXDqwdBwNgichvXJHEnNrkMIxQphrXqMiWzTCMBWhRZntLBzAQgecGpxQKyL"), }, - { .name = IOV("wFZFLWC"), .value = IOV("bnZnatKvnBvzmTcZ"), }, - { .name = IOV("aBwu"), .value = IOV("PntseLCKwXEeEqpStJRGLJsFoF"), }, - { .name = IOV("smyxnbhFBSbDoYFvq"), .value = IOV("s"), }, - { .name = IOV("NDyoinUQ"), .value = IOV("tzgLeEzxoDgZbudzBhoeZSgGKSkTJPdKCMBDfZaDAmMejMlgthZlh"), }, - { .name = IOV("qwfyJJdEVuwhSGctG"), .value = IOV("KKCPFyTMorPvdEaLDoghwJKhZtmbOQlCAcGvMhovEHszMNWtmySQbrbYUhCvCSDgGAFMES"), }, - { .name = IOV("B"), .value = IOV("cpxprSbXKoLvOiHApdxoikSgrEKNZtBIAYfqTsIUYxycwtltbLRBVNi"), }, - { .name = IOV("LalH"), .value = IOV("TODBJOKAKlPphFCQUyR"), }, - { .name = IOV("bBVfGNZSwGpXKhXt"), .value = IOV("MxxOumatNdxnhFsmHTbrNkMHYkcQgdGESWbZ"), }, - { .name = IOV("aRgEMzlMn"), .value = IOV("IvZrjInnQJklkMVkcMZrFNAuCKUnbrBjjRJbaifcSzaAAXrNzkLy"), }, - { .name = IOV("BZ"), .value = IOV("oOGYJfIMYwwreZhsUBKtOObJeqalcWQivoVVqRxGKNcbMruaZBsfeyLkhHFBXoeEvsaOwfsP"), }, - { .name = IOV("PXwwXoFKOjLeStq"), .value = IOV("chlEpVvPJGeMEvjZXShYHRtDPXhORvEmTKHkQVlNmparOesSNAbExbdbyYQIqtBBzhEAShzjI"), }, - { .name = IOV("agVHmFz"), .value = IOV("kZ"), }, - { .name = IOV("ZeUFfOCrMpqdWpXlQsbM"), .value = IOV("dlXMyKwZmIuvasPtdrVOBcjGPRWOAfsaCfIIUfRbbIWRpjCsJoVvGUgWrciJnJuKbh"), }, - { .name = IOV("wTAppXOatQOuKnOpbyMj"), .value = IOV("VsjxVTlJvUmWijFBGouqclgdoQTYJXEAesbCqdg"), }, - { .name = IOV("wWxdyDkxtadl"), .value = IOV("RpcTHiqtNvFXd"), }, - { .name = IOV("yxnHQQkOCZJLSRo"), .value = IOV("KvZykETfBrACSnjGbDkBREivStHppjpnPBqUkZIWLmALyRMKVxNxsoXbPIYPPrsBMdLTOv"), }, - { .name = IOV("MNFsaRSZXQbZsmN"), .value = IOV("niqnYGjGDsEtYsGWTzC"), }, - { .name = IOV("WsRQPcYBnK"), .value = IOV("okcFTqCwItdOrwHXuuDUtTzOxc"), }, - { .name = IOV("MQbdTKMXRTrH"), .value = IOV("docFihuSgyxErrMzCwFdsVfIkDfjtQILnWYhbAdblfPKFQTw"), }, - { .name = IOV("LXeszxDMBMTwFG"), .value = IOV("IHKBaXQLZNAwPJDUlNbRgZocpJCvTkwyxSACSAtPmlNPllPlHYkBcqq"), }, - { .name = IOV("LggnfbTIOuoPNeYEzUF"), .value = IOV("PQCNWkswHyCNtIEhGWCIVxNxVabIepmeqvdFsUsVAvneHndtXWVPAMsYFTn"), }, - { .name = IOV("INV"), .value = IOV("gFbPwkLcVjcXLeWegzlUkSwSAWXrdfLSoVfjccafygSUYnsLcciHjU"), }, - { .name = IOV("DYVNx"), .value = IOV("adKgGIFffIKjexjFrbcEhyVQHHbHhVmCwUckVHdXQBvkSmZPrj"), }, - { .name = IOV("GiYKHscdOnQD"), .value = IOV("hHiOzKdAuLkYtvfeWuoYYUfqAZBRjskyiqOCHDKnJluanoyhybpSXeyaqITYXzHkBAaZGApShGnlc"), }, - { .name = IOV("awoqU"), .value = IOV("fquLtSwetxoiAvfbviH"), }, - { .name = IOV("XpRQONBLUR"), .value = IOV("xSpQWjvawoBQHaBvhgsGXJtaMDYbonEUfmfpnCYUgaoSCFGeSyxLLzbB"), }, - { .name = IOV("jWTzUWXqiZB"), .value = IOV("ZzkIYOwZAifQaAPpGREVStkveaedqssmrmLVZviqrYZcwaEJlqxZbqbJOWxmo"), }, - { .name = IOV("HBQWfysJZSGPTGyIvax"), .value = IOV("gHDErmkzVMFEImMNDxyEMIqMSgQIkwWEBUMARuTQXvVfkKCaAPoxAualQO"), }, - { .name = IOV("UAQoWAuL"), .value = IOV("HaqMWNXCOBBhcMcSyZlupcRUULhkAtMSOfhzyyQOfOUsz"), }, - { .name = IOV("YKrAVbbEJYqEhVmaPeCz"), .value = IOV("qmMkvN"), }, - { .name = IOV("hnZVKGcsRyuCexCJ"), .value = IOV("TejvUirkELoQxNQUYlZlvgcfjYbNtEjwmlvRZJWy"), }, - { .name = IOV("UccFUUtClzInq"), .value = IOV("tSvIZmDNOWHVRrFpmkrQKaIralNytakQJdohageAmQlsufbfczqQXF"), }, - { .name = IOV("styZfaSyxUxdYYzh"), .value = IOV("rFsKdiKnFVyJxWkdKwbHrgKlxEnUJVsn"), }, - { .name = IOV("JtL"), .value = IOV("jkZSCjLyAcENZdsf"), }, - { .name = IOV("rzWitJCVGDEvWOaZh"), .value = IOV("McLKBNHhGRcXpRPEvoUDt"), }, - { .name = IOV("XecileBQOuwgGJuKuETs"), .value = IOV("ignKTINkeVwkNQeIqgHkwkocbDSrnXMKZkXiFVdVYfRuHcPNLaTorjOgfZ"), }, - { .name = IOV("otqbAFYpDnwKP"), .value = IOV("mRMzEOvpNVGuhopqmvkudWCGwbJyIolxKJWsZyYLuUwgqFLZeJQsEqzDCaDbMYOYJ"), }, - { .name = IOV("gWmuzmJQtOTIisFx"), .value = IOV("wyvUqINeTUgCmCRYNwITtfOqdieNEmrwRzReEFJwMXrmMycOCcFjFGnF"), }, - { .name = IOV("mCUlgDtQomS"), .value = IOV("dKYGOirYBCwSgLHxCqqWspnYNwNP"), }, - { .name = IOV("FbrZomNILghT"), .value = IOV("ENZvJymWlEjyLAtVDBwZSfLffrejWtgeGpbs"), }, - { .name = IOV("Rbv"), .value = IOV("SaBMFPyDYScan"), }, - { .name = IOV("ruRJRvPvSFTHXrU"), .value = IOV("PPketBSqhwgWKGmkbTnfqUzXYWGzoRWOEPamEFinfXYXawfaBuYJzQSMMmLjonyiRbiXuFjLvQdZb"), }, - { .name = IOV("GOgHS"), .value = IOV("sNNxFzULo"), }, - { .name = IOV("CGGL"), .value = IOV("WxSGkZjPOuwcFCCBTziDmXjQnLtXXnggDcGSPngcIWAQHBdgwrSLLZrDxvHMpCkKFm"), }, - { .name = IOV("iZQ"), .value = IOV("ubGwqCYyyNEQIDLehmQjOtbaAPrwnVVGOHWXHWkGxPvyJQOEGXDUpi"), }, - { .name = IOV("DOqRnawYHEkEBSwLse"), .value = IOV("JqJtOKneUtfSNNDUD"), }, - { .name = IOV("ykaFYBNi"), .value = IOV("VDUtEVnQ"), }, - { .name = IOV("dXm"), .value = IOV("goIvBpHrHGwYMdCsOGryatzkssnobSYViGXyLrVhrRQbTdnV"), }, - { .name = IOV("IzMWasKXziDcUwcrPd"), .value = IOV("MXWvFhyQrBEmAjyjlXPkUDbBCqHEsRQCkybJWisIbIXdPiHuKNeWNfIoirgCaYSxOAw"), }, - { .name = IOV("WmrHa"), .value = IOV("AvFpcWmBSGyDQngXGACKYxeXnHILhIRdHQQzVxlCTlbuPehASxasXp"), }, - { .name = IOV("EvOKNlF"), .value = IOV("IhSefYtAdogCjYITjZOrBDPJVWBSjmqCnFUKfy"), }, - { .name = IOV("oXWzYSP"), .value = IOV("VyebfI"), }, - { .name = IOV("O"), .value = IOV("hhxENbVgPHdUTOGvhlFMagGhFEwimtHMNKOKiVcMOmsjdfsprCXDcDVenoFqwezguixiMk"), }, - { .name = IOV("KWillGrrPrzFiayLZldY"), .value = IOV("M"), }, - { .name = IOV("SToHIbnUMK"), .value = IOV("fJMxUPVIVGEWZimekOXS"), }, - { .name = IOV("MOjfYCUzdMod"), .value = IOV("YHzXVHJmbrJhmphIeyxNb"), }, - { .name = IOV("pUaoZuQmiYcfiPUgzOap"), .value = IOV("LXGbkeAkYIOUVTEMVyMr"), }, - { .name = IOV("kM"), .value = IOV("jCnnjCcWuRmRKoiBxxDnlgBbCfeICTksSQXVlmoPEhzPWsqLtaxOMIis"), }, - { .name = IOV("DnIDCQViQvFjiVwcTXuk"), .value = IOV("WrXFxxOGQfWWzoVFZZlmNZKqXl"), }, - { .name = IOV("iSQQJnJ"), .value = IOV("KmmwGrocCXhrKkshlaNVoJdIdBEuZEEWDUagxHudiSQUvx"), }, - { .name = IOV("ppvDmrmcHTVksXJ"), .value = IOV("kuaMUDKxAaJLfNYqoagpsSOpSdZNyfjlRGMhmfB"), }, - { .name = IOV("dj"), .value = IOV("jWP"), }, - { .name = IOV("shPuRUZs"), .value = IOV("wzbYUedqsLuzrPMODRRnRKMDLgzII"), }, - { .name = IOV("rrVShNAPJgeQhricJXOf"), .value = IOV("ccX"), }, - { .name = IOV("EaoiOZjMrlHTrgBTUIrd"), .value = IOV("IJnWqbzKgTzFBkbLlBZA"), }, - { .name = IOV("pdWZGzzsHWzts"), .value = IOV("QgHDEI"), }, - { .name = IOV("rVArliowNx"), .value = IOV("wlMiGBHurZAqkaCTrAloszC"), }, - { .name = IOV("mxpgWAnPTMWQm"), .value = IOV("f"), }, - { .name = IOV("yzzWeJvFTBN"), .value = IOV("mjYirgOGoApigKZMV"), }, - { .name = IOV("VTJEiUMvY"), .value = IOV("sJMCvNyUImbEsSIQANMGElUBwrZUcwiQZTCnJqOLhEAvdAIPFQqofxTbJqpQcwoGTcaKxVOSgledm"), }, - { .name = IOV("lChObrSEHHGLyGyZvy"), .value = IOV("xLLgNLiJbwlqrFcUIjVRBg"), }, - { .name = IOV("UIdZIzlByHMVfeuaZtXa"), .value = IOV("zqtYUJDZqJgsKJKuLmwpmrgCoAihQluLmEJjsqnjEnoRtMIStoMDGIZMniOCaBfYMuU"), }, - { .name = IOV("EKTSvbnSbQecbKOF"), .value = IOV("agxCoIVwCvBQrxJlIdXTilzMSlwRWkcWdmSBiWVs"), }, - { .name = IOV("MSOlx"), .value = IOV("gzKJxMaSChKfKDjdWVsgXtnoKTxufDpHZyhkNJak"), }, - { .name = IOV("CsTEyh"), .value = IOV("ZSvXhlbHjwbQMXU"), }, - { .name = IOV("YMBBIunR"), .value = IOV("LugHoTZXuhXoDSNrtv"), }, - { .name = IOV("hPKvFFZBHYr"), .value = IOV("izd"), }, - { .name = IOV("SnMjhkFpd"), .value = IOV("kBwfFhyiiVYilsdQCoafIn"), }, - { .name = IOV("azHM"), .value = IOV("snWvEsFiaUYmQpVnrpKWYXshEsC"), }, - { .name = IOV("sCH"), .value = IOV("hExkHxDSvjavPHvYwDWoANHYRqPtsWfj"), }, - { .name = IOV("rRZnzKoYNWz"), .value = IOV("FRMIurdfOEw"), }, - { .name = IOV("SQljPn"), .value = IOV("WsQZRSPlxgpEdFwGnStFNeLqXoiyQUPqrGveuKQFhANatBAGqlPOO"), }, - { .name = IOV("YQMoXyxO"), .value = IOV("eQVepeexRsmzSienupsRmseeweeCsvlcCfmFNCePAxDoXVXZfHjJcQ"), }, - { .name = IOV("GfskcjgZEzUwh"), .value = IOV("slFhvOyrMziCn"), }, - { .name = IOV("Y"), .value = IOV("oghv"), }, - { .name = IOV("w"), .value = IOV("SqfOWRBUqFyQpdYmnfsKDejVkauewOndlcDzVaPNMmgXfXOJcHCnFynpO"), }, - { .name = IOV("RQ"), .value = IOV("ZvmKpKwnofkGjbxFrReYzBDD"), }, - { .name = IOV("pwOxeTlduANTXOhI"), .value = IOV("iQnFYvNtdaeIQTJLcaBhPyWmBvmRoopPbPShIxKvTxoKmRJTgxkOJxYAQBWdcjRKMa"), }, - { .name = IOV("oLWjwIUID"), .value = IOV("foDI"), }, - { .name = IOV("wTKNTnEhVQ"), .value = IOV("r"), }, - { .name = IOV("nwOstnMiMxOOK"), .value = IOV("HEhdzhXUu"), }, - { .name = IOV("OkXNdJZDzJbeonZhVGeK"), .value = IOV("sDwHxpFjJJWEwrjjBeDQtYCUjejhAriVXBNrzsTOYKyQcYtaLTxzIV"), }, - { .name = IOV("ZKeqMxJtkkQr"), .value = IOV("gxRcJdyBTafpUIsbMkxmtXyCGJsnkbzsMbEvGyXkOhowoWrWhPgmq"), }, - { .name = IOV("nqUQ"), .value = IOV("injtmhbvUrYVrtjQXEQtnlqQalLtHnbkfbSgPVnEtkrvkK"), }, - { .name = IOV("CWHBupTX"), .value = IOV("vpLRtypWiwGv"), }, - { .name = IOV("xwECaMOY"), .value = IOV("UpSVIVYhWIhyWUKMXZbYonNNEqgpmLOFHNsqEuuUUfDOKqLWnzWSFWGG"), }, - { .name = IOV("esM"), .value = IOV("YVEeMcHqZipzGmdbxyknZFqKjJSwXKGCAhapApzxUUtVEXqOOVkA"), }, - { .name = IOV("XpjiTgcNSsepRr"), .value = IOV("VrSazruVgnkUsMxHEahBGPcFeMajdEfwWkXSMOrxETqWXqzfCGCGD"), }, - { .name = IOV("vQZyyazgSLa"), .value = IOV("owGKFwNpDxuhjwooGpFwhZJDOpGIfwsOajaJoZZrtPmGaSkSmTEFydnYqsFWYJjQKkAEB"), }, - { .name = IOV("USKQpqCnwzdMWOAq"), .value = IOV("MqUOGARYktMQdGRnJYoMwCWCaiKreXSpPYqiSFjzlMLcijBTkCTAdHTadVWKzKmFJRYpdYzeSbox"), }, - { .name = IOV("ZrGpqJqjQX"), .value = IOV("GQwWescZMrruIRMxWPmipALFSQWsmPPrlCcQBgWZMAJaOkREGsEAlqCaFvdSZryswmzwXaCuV"), }, - { .name = IOV("uscNZBoeeRUPCKYoZtq"), .value = IOV("WxoLCfgvJJmNYkYhDNdwzBavbvjHhxPcJGfyjUuqgHcksguIUjzepcYdHaWNIINgkxvdgyNdSRc"), }, - { .name = IOV("UHBtkhHWIihpSTlmcv"), .value = IOV("AQdikFJWUbpCwWZLFynx"), }, - { .name = IOV("iWldmGq"), .value = IOV("wxWehcbpvjuSpekKxOjzkgcEzNSbyNffZ"), }, - { .name = IOV("OK"), .value = IOV("nfIadyMQZRxPGZlpbItvDYtqzlaYGfbsyEjfzDmNkUVqduDvRnhZFILkcDiZfzVLfT"), }, - { .name = IOV("ehYtjXaJfgqBAMVl"), .value = IOV("PyZcvwQyviMuGIYPH"), }, - { .name = IOV("F"), .value = IOV("iLjVMCY"), }, - { .name = IOV("ZPzwwNjEGEk"), .value = IOV("VVgpiAHpByxoqrehofDaPEHdzxSxRAOORGBMFmNFhxDN"), }, - { .name = IOV("OtgPXd"), .value = IOV("n"), }, - { .name = IOV("uKmxVchywtmuDj"), .value = IOV("ahKtNYriWMVrXaGkJQvljlE"), }, - { .name = IOV("NIVcLfqjwEc"), .value = IOV("tuUEGxWBUBBiZwVfQnJTAKoOrkjYHUuoGzvvzUC"), }, - { .name = IOV("WhCErVEkdbvRxpf"), .value = IOV("ELWwiEM"), }, - { .name = IOV("jQRTwkpbBSYOmPSbjR"), .value = IOV("ERgjtUDGukrtAYLAxkIsiMWeYFUPNwTMZxKXXUYpFE"), }, - { .name = IOV("qlipkMNJXZLbQAngiKD"), .value = IOV("n"), }, - { .name = IOV("UJmZpAMN"), .value = IOV("pvUdTdDwKAkUrbFNDsaHsnbKVUbhCOUWOMLohSGoWER"), }, - { .name = IOV("QkVkFdMdiKah"), .value = IOV("gmNEmnGycnVSCmRZxEhIcPhwQ"), }, - { .name = IOV("HZtRTJdtHTvq"), .value = IOV("MkoQEcmrFOHs"), }, - { .name = IOV("jLOXsqUfFNQut"), .value = IOV("rIbWvzQWTvjKMJBodBvAmCpUIIViHMDxiFzsmWEWGkUfCNcGpfEZVNDWDriMETcpfWUHAaMHBNjRGuV"), }, - { .name = IOV("NEVOokYGLtm"), .value = IOV("ormSsXKeJjXlGxClAaMGlAEKYwyoovDceDFhkknvOffCSwWnaFMmAJAlJKLX"), }, - { .name = IOV("qQzFNglUQGr"), .value = IOV("BMyIFnIiftLctJlzdymdbowxlkCilwX"), }, - { .name = IOV("tEAlDHzsAB"), .value = IOV("bKW"), }, - { .name = IOV("pHeEEGrXsMBPULtkfpt"), .value = IOV("vVCfFRPQyLxHfUFZCb"), }, - { .name = IOV("AZsa"), .value = IOV("TvIBmbybBGSsgjJIAjoZGcuSPcJIVuTgyGoavfNALWKAYetPSaFGCiNubRnUUbdpTXkaSEprinmm"), }, - { .name = IOV("GgpBBLLAtsZQsAdGEvO"), .value = IOV("clGgfkzbrsiIezFwuKkZwMwohZA"), }, - { .name = IOV("jxOaNiGNvmaOgN"), .value = IOV("OmNYExzwWxyWpjebLIatBXjobFWZhODPLexPJgWPJnmcASrGZmYFYpjksVdctTwrvgXxAJnKDx"), }, - { .name = IOV("UQlQjClzkuVFLPkspcW"), .value = IOV("iKfqpWo"), }, - { .name = IOV("QcyeP"), .value = IOV("yARiATyEPpJIFxmUEBVPeeUuJWGkXlDUcMXr"), }, - { .name = IOV("ovQVPCIYjpDZHvbq"), .value = IOV("stNEpFdJFDtvHWnLOMTixkNfqxThTLifOnQFFzvIUzGdzHENVT"), }, - { .name = IOV("L"), .value = IOV("KgeqcbbrnW"), }, - { .name = IOV("eyMtETjt"), .value = IOV("yPacYzXiawvcycMQkwPbEQbfHGDdgWGQAvihhrhjwMaywPHgtsWgJHJvCPWEuXA"), }, - { .name = IOV("HjtFmodcDXlHFm"), .value = IOV("KdIqcxKubGAOIcNFsWKbdZxGEtc"), }, - { .name = IOV("KECQUSwsNCaVmnbYxx"), .value = IOV("OqEQImUyzjLkQPQVOWnfHayzUIcvHKXAdSYtkgXnJUeztPQSxpuHAroLOJBEUhguxPNIqRRnyY"), }, - { .name = IOV("vIu"), .value = IOV("ZynkVZpskppfeTFZjVx"), }, - { .name = IOV("Opuwm"), .value = IOV("IShlOGEPXlsdzSiGiUQZjhWmYqOHAViIuoNThKOYsFKZEmzEFfoTaQPXH"), }, - { .name = IOV("tltoFnZZrXLemaecXvwx"), .value = IOV("imlSkxed"), }, - { .name = IOV("JYCBR"), .value = IOV("OBZFELAZQEdWBysOBqvBucJMZKjhnHmaJHbfGgBdHnVcwfAVBedEeWbuus"), }, - { .name = IOV("wqdGLyldaQTDiufVodpw"), .value = IOV("OpvktGangwoWFRzkbnINcXMIGXbMlYDlKpZcwzcppfeFuVDK"), }, - { .name = IOV("ZoSzikDQOymypcq"), .value = IOV("ywXGGHOuAYlOMrvAhWqZVdLMmGWTlQuhDPRyGDrjtiZKwkHbrueOXBSSsdSNFALjdFpC"), }, - { .name = IOV("C"), .value = IOV("uXKUGKXTAHEYgaITGidjAMge"), }, - { .name = IOV("mQaxA"), .value = IOV("RmKZIUUJKYDRiLWPzG"), }, - { .name = IOV("ZzpETjbkCar"), .value = IOV("UZPiqC"), }, - { .name = IOV("rZEc"), .value = IOV("yfRmcNDCnVdKw"), }, - { .name = IOV("iLaJz"), .value = IOV("WUgHYIylpaWSoaKHssihxeEZyzKDnaijadqcgxmfvTmZdXfoZQ"), }, - { .name = IOV("rGPgAedjnHZbC"), .value = IOV("rjAvBpAkMwrSnUXlqEPqDmXcPaiSDGvvhanpKMfwtqkesFnPpPjJuSCYpWxRlyMvlPm"), }, - { .name = IOV("w"), .value = IOV("CVFBqDYTKrGmEreEvtbKIx"), }, - { .name = IOV("mZQJSCIPs"), .value = IOV("IdBysSiJJFNUcGqTtxIqMVkBaqTFOpdBiLyQvDfxgIxhacIqXBqGvioNSoHWaJ"), }, - { .name = IOV("mPfOgfrTyNvXdcnL"), .value = IOV("PLHpvn"), }, - { .name = IOV("wcTIMRQgQ"), .value = IOV("BAxJCOrnsqPoeNarereYbaHKMKTtYHhtjUSruwtCqhWYXrLA"), }, - { .name = IOV("sseKQWFMsCvhHpcgyx"), .value = IOV("WNpTsYiraYsZwurmtgfAgryo"), }, - { .name = IOV("ZPEDPvAzQboWhwLpn"), .value = IOV("YvqwxCRrFjtBMJiHYzsfvFXwLSYOLXacvkJhIFrkpglEUc"), }, - { .name = IOV("ojjgfRSVkzbVXBbAZ"), .value = IOV("aqjrIEvAOjZIBGEcWwiXaMIOyWiIGljuTJeEZDjuvYXYHZrIxTVKLK"), }, - { .name = IOV("fJmfsKxoqHdnVnCNR"), .value = IOV("VewrgUEqJRtlQHhtAdG"), }, - { .name = IOV("dKj"), .value = IOV("gpeiNqJecgPNePbJXlxXYAexkJxolxfQuBXgLNjBSnhAImJQIPCekaXPwThEbpSGfkhxZRpwdVMR"), }, - { .name = IOV("XZcXnOCOM"), .value = IOV("cjxpURVqaQGWGDoYadcCuoZhmADEIyFR"), }, - { .name = IOV("xWBIcquESYQM"), .value = IOV("gyVlTMdrks"), }, - { .name = IOV("FARGdERi"), .value = IOV("OdfikyYQJaLEoJeakFmiXjRFbbbsttkgbjavIJrijEOCmLsadtevqndjHuD"), }, - { .name = IOV("gQqBHgpS"), .value = IOV("wVRuXnAeEbAhJBRxzsypZjwcbUmChwCAxqSJOMRFgynlSVLDcrnViQSuXRAafMqcapQdzCYAbI"), }, - { .name = IOV("MCHAwkSSQnlzbcB"), .value = IOV("dZqDXLRwrfzYabEqTzdDqQjNpXHeWSBGmKLSlUSIgGCIsoOzNQnA"), }, - { .name = IOV("bkNVZwXTX"), .value = IOV("QCRwbNtQOMoZFPTGAfofnJcFSKGwDstNegbJidZjMWaoRuAMeZUkVugAjrG"), }, - { .name = IOV("UNGrPgjEGv"), .value = IOV("IJzSxpttpVlUmoRzWXrWkQhtaIkAahMOsJMLucr"), }, - { .name = IOV("V"), .value = IOV("JRYiMwqFZLhnMzbEOjnsaBG"), }, - { .name = IOV("ZApVQIrQLoGIsx"), .value = IOV("FcYotadrwxdfWmfVybqjdpRHKPHJUWSsGlQSihyzFbbwrhVsmEERKqOMAfpSyIKsRgT"), }, - { .name = IOV("IgmjvfWykefQXXIeqoXO"), .value = IOV("KcOOmAqbcnyvtcrqxzOuyxMvnMVJzWIByXPZbiRIkJWuQkhVDKLxKvlGlValmfPOxkizw"), }, - { .name = IOV("XCfE"), .value = IOV("zXcVjmAVieZWowiblNkKKnJRygJwOyCjqBEPBXcY"), }, - { .name = IOV("MtUYwjlQNftk"), .value = IOV("NwcOrIIKwvaFIEilLPwHWOZwnCQGfWwQqDLYSNGlhUaLd"), }, - { .name = IOV("Zl"), .value = IOV("MSNyz"), }, - { .name = IOV("BStbPlzSexmsBxRx"), .value = IOV("XfHswpRlrxKrgoa"), }, - { .name = IOV("zGLyR"), .value = IOV("yQWG"), }, - { .name = IOV("nsFusmbVmjPIad"), .value = IOV("wfHuVetDPLKpEZPkqxN"), }, - { .name = IOV("bLdzaFlTVegVqWzAB"), .value = IOV("HoQcjutQueosePHJkuEsVKUPmNvjnrWbIgSvRUnbBOhwtQkGkQBQIFGNLKHjECe"), }, - { .name = IOV("Lfvujn"), .value = IOV("arjASdeWIYWilMrjNjwdEJLsvxmSxOQiNYPmJeEaeIUwoiahkxomSLbIjVvHnWaQrql"), }, - { .name = IOV("JsUqJvtjkFhonHppsY"), .value = IOV("Faev"), }, - { .name = IOV("J"), .value = IOV("laRfSyUlJygCeEwRJjnUeB"), }, - { .name = IOV("BOLQgfyQzwMg"), .value = IOV("QXRzHyGOjjnPWnBYCnwONuyyjOe"), }, - { .name = IOV("bTMs"), .value = IOV("HAlyEExRrlQoQjaCCoOyWiAIWOljMNAmpWRiJIXBlJyUCDhzsgOBkeyueKoryClGCCCcPaddCgnLXxEL"), }, - { .name = IOV("jireBUddCItq"), .value = IOV("ZhCiMDpJxXAvoR"), }, - { .name = IOV("sdtQVc"), .value = IOV("kSNYnEHHBaEkmEDeMAzcsehvodKSzyZjSWVZJmSgTLdCNibJUKuQqxvEhuJwVEkCoJNMRmfEw"), }, - { .name = IOV("qyZYlyTPJkKsI"), .value = IOV("yYFqrCPSkYmZpeweXdEXeiQqedAhrQnBuoDJgVgMqXSHWRuANMIR"), }, - { .name = IOV("jARRQVgEYp"), .value = IOV("ESPHdnAjtvcCgDNrYJuPEmeyfCZNduYYBGhJCF"), }, - { .name = IOV("RoTczZkXdialXMkle"), .value = IOV("KkAndPGKerZGuGSsNxZGozkIZjhtEGI"), }, - { .name = IOV("NExwaAYXCb"), .value = IOV("uYGXOBUCmWrFNooToJJQOgLVEfoFTYxMpIV"), }, - { .name = IOV("CXEvgXYfEJGbm"), .value = IOV("lFadQ"), }, - { .name = IOV("Umcjb"), .value = IOV("NqSqFEEegLvPosiSwJdvemTqOHavymopprjEfOBjCbotMKZybFfSYflBWSWqbIUZ"), }, - { .name = IOV("WCNnBumtin"), .value = IOV("WJUcxSSWtukkmCHTtoFYivfYihvcjqBREkaFvGeWdgGFEnEVI"), }, - { .name = IOV("QommjconKOUVtFkxuXYe"), .value = IOV("QHWYjAIlnAgOdHkCuAWDbkJGrwhIQZgygDnHVhlaKgIPNoMnDaZHeYVd"), }, - { .name = IOV("EevtowmnqPRMic"), .value = IOV("eOZQetfcZJpgZvUXwXJkLYqkV"), }, - { .name = IOV("DBldZkVqfuCfKk"), .value = IOV("vHRNFocyjITkfljkeXLcxBROuobuL"), }, - { .name = IOV("FhLFQZSXvZiUe"), .value = IOV("eshzfrOAxBQgtwvFospDiKECuevFqLererdecRGrrahestwZXwfdtXvyYny"), }, - { .name = IOV("ZwugUgRIvsa"), .value = IOV("qTUxaKfZVjFYHmTHtktdKiQfyomsTmUznvOOUxuADOgNnd"), }, - { .name = IOV("RLpsYbNEXG"), .value = IOV("UimwLruiiKlDOzFbpQiFEJIOCpzsOWPbyEk"), }, - { .name = IOV("pDZIAsICvOezuGLn"), .value = IOV("psbaMhWUkBqHzaCLDKUlwoZv"), }, - { .name = IOV("ozXCyM"), .value = IOV("avrPxBMybhGIMMCdKJLOaiEZCzRjjgRTMJHfCnYsFvVzEKbSgySphyEDMNPAxnVNhiNBXfhyp"), }, - { .name = IOV("JHXRshQKzxqUI"), .value = IOV("PlLsbrqHGNAqbIZzCqdvasBRQYiOhAQYcIHPBEYaFiPkwTydCqtiMJLPfgWdjMlciDVnmd"), }, - { .name = IOV("sScjk"), .value = IOV("YGlbcLuDlslaNIMaqDrEhfcKdoEUlGVPmzgXcWXfshzWUlwEnvcXKSJja"), }, - { .name = IOV("EDyUHvPfoGgJYShFdcAZ"), .value = IOV("ZSXqWzUKnjbCPGSwBKViHRcyKdkbYizmmDTimjWtxBhsgMqsxAvzeHYDDGPLguVcSvsSUGKFXwicTy"), }, - { .name = IOV("sNTKKrLzUpFUR"), .value = IOV("BfduFoXJiPXlNXjaZiEuWvYsbTfGoAZZHuL"), }, - { .name = IOV("KMXvTUXAVZpZaUbPvUp"), .value = IOV("HBjjEwkehMazezEyDCWKZJXYlLoBHXlUPZpHUqtsdZDqQdsPbAnYJrVMyJUAuvtinZmlDlxXZmv"), }, - { .name = IOV("IUCMB"), .value = IOV("banNicAfCOkSSzmazabCmoR"), }, - { .name = IOV("EQsKnKGpRIvVOfQylQ"), .value = IOV("GrktaAdqiMyCSXHiNxgpdIniyIwlskZzxLjtpWQgSLUHqltizOsJHnbyjgtokWLMgUxxPGKRGeSzNQC"), }, - { .name = IOV("auhIRTWKYNuiUg"), .value = IOV("AxtRAuIeiqjrHCR"), }, - { .name = IOV("CbKulWOIihF"), .value = IOV("bMlAoQKqU"), }, - { .name = IOV("LPYgYMKrimIhCSrjgS"), .value = IOV("daspYRN"), }, - { .name = IOV("NVhGHeENaYFo"), .value = IOV("ruBxhiXjSeUgYKRa"), }, - { .name = IOV("ovPUfqvyKxZpQZI"), .value = IOV("cKxlcnnmWQmeVr"), }, - { .name = IOV("OEkoD"), .value = IOV("idhYwyCSwocpXIjGQNIsAaasCjkHJuIJPALiZFsWrMUo"), }, - { .name = IOV("AZkHaa"), .value = IOV("hxczfWZuQQVXkMpIOfxyIfsuFpMhNgWWDfwkHnVUwyKCuNvwNJYUQplQVtGbJ"), }, - { .name = IOV("fLuNBSsXnFnNJlaaZ"), .value = IOV("rLiEDqYGcqFrfiXeeAKGMrkMuiIUVwkjswgQNZEjRHjijIiFppOpXgBfHQNMCse"), }, - { .name = IOV("mG"), .value = IOV("EkLJfIjyahsZpBTwKnsiXGGHcYnquEfJKWcs"), }, - { .name = IOV("DKglhvtik"), .value = IOV("oDVAZskqIzRkFVgerSTdlDLGZYQjIB"), }, - { .name = IOV("xEybEERRf"), .value = IOV("WXXdCSNfZTTtlbqQSkpZLUCp"), }, - { .name = IOV("SXfWVnXHg"), .value = IOV("zrDcGATOvjCGegLzMftBgVLSiFlS"), }, - { .name = IOV("GTyfOM"), .value = IOV("WXNyqmQ"), }, - { .name = IOV("hynsTAbjEwAGtBaSu"), .value = IOV("UuvePwesmeEHVNzXqoTywyVIWKbJuyLKUmtjZupkuidXKJxLIIbu"), }, - { .name = IOV("lByMtDezZfUxVjzy"), .value = IOV("vdgvjtPNAYrMaCpPjhorrvIckiMrGFciWHBDGvFvFyppUfSbIuP"), }, - { .name = IOV("k"), .value = IOV("onvyyeNDlTtKdUJfmneOzxFcmasmkrrzBLPKEhBjSSluxQbyqPKRCWKf"), }, - { .name = IOV("RMP"), .value = IOV("EiUf"), }, - { .name = IOV("mmwBcRQerLoQGGTeXzV"), .value = IOV("zoaBeYKqCywDmnOfLlgcGmKcKhSFZM"), }, - { .name = IOV("bcmDLLvo"), .value = IOV("QCKOZhwyEqfcAgPXRVbxRHgnGXbkYmMojANuB"), }, - { .name = IOV("kZjiXnkkbWsbxdt"), .value = IOV("TngSAGyAEvNTAdeGGMdwHnjumtp"), }, - { .name = IOV("KUYTpy"), .value = IOV("CUbrRamYAeAMuXlKPVvUrxlMOqbNEORurAGATmkadGxcVXmqrbLpjEDQboThdyJnEecmPVjWyLQk"), }, - { .name = IOV("ugpnfXQlYKb"), .value = IOV("OxnosITvTbJirlBPxJksBFBU"), }, - { .name = IOV("UUIbsj"), .value = IOV("wWZeYzLvXCSPSm"), }, - { .name = IOV("smOuDhoSygXokWybC"), .value = IOV("bHkwt"), }, - { .name = IOV("x"), .value = IOV("gHtojFxDJhUbCDRzavpFNEBQKbFTX"), }, - { .name = IOV("UF"), .value = IOV("daEZuzikBth"), }, - { .name = IOV("wgMj"), .value = IOV("wiQfMmevUObOvEgHExYwFOKEZEFfpHDvMTIwVBCKkDvhPUHkegjkFcJByLNLKbqBQjsXbSiAZJ"), }, - { .name = IOV("COywFjYWKHTlBYXXr"), .value = IOV("VUHBPihOleyvhFQQizixEIEmdfXRArRuAMFalDGRTywIJSMDzvuRKzTeXQeoZJOVZAlMjUpUxnXMkhJ"), }, - { .name = IOV("DPPAyPOmRzVNoFI"), .value = IOV("aMiQVeqFvAFqQ"), }, - { .name = IOV("ukRhzKIikK"), .value = IOV("OVockSWMGjhnZpAVGFblobbOmqUnpDeB"), }, - { .name = IOV("sCWCaRQNYHaoVZc"), .value = IOV("kLOrxKTtdUMsyciLUOgXmIgznrTnXBqVxkQSZyTJpEUcLzheQLPbGhijCSPRFtjjRdGpaJuH"), }, - { .name = IOV("oCdVqWLk"), .value = IOV("UpjrudUqSUufiNf"), }, - { .name = IOV("GXxVIHbbSklXCaWAgLr"), .value = IOV("rZALrHpSOVWGAgkeDWkkHQRttHNAdMIguSugMlpvcSdWkJpJZVUo"), }, - { .name = IOV("mb"), .value = IOV("pJCqoAsSxUMUFCy"), }, - { .name = IOV("HbsTJeGfWkHBdNAOey"), .value = IOV("Kfp"), }, - { .name = IOV("qgFPIT"), .value = IOV("iIehrlfnnl"), }, - { .name = IOV("S"), .value = IOV("aRkUUYxCNijOObRkxszZhonxYHpIwZ"), }, - { .name = IOV("wzIsqnJpGeptSGlBGE"), .value = IOV("ddwBvdM"), }, - { .name = IOV("iDnewChyHpxf"), .value = IOV("VgAkeXiazYchdLLimhVujagNGsSGEBlCxdPlxQemuBGlxiNdMoYIQhVc"), }, - { .name = IOV("RUxyzqCWwoOoL"), .value = IOV("ebJvgzWzOsaLp"), }, - { .name = IOV("fgUbRkXBrlpblV"), .value = IOV("MwpTWTPPwYAl"), }, - { .name = IOV("bMlanvUB"), .value = IOV("dMVZLzFoiBBkWTyPmzLVYkcWhxStsIIXSFPDBGLnda"), }, - { .name = IOV("oG"), .value = IOV("TrXtcIkV"), }, - { .name = IOV("Odz"), .value = IOV("NLXNGMjOJOtjbUBdwgUnawxCksdzvGMbxyvh"), }, - { .name = IOV("eUpYsXfOHXHygGhTaXbN"), .value = IOV("LXWlvbNxOCEmTFHAZdmP"), }, - { .name = IOV("dODFxpqNMxPPvDf"), .value = IOV("BiPaRUYlsvAdwzDudVLRwBNRuuvzQHSsYDZpDdyUMKxFZRoO"), }, - { .name = IOV("RqC"), .value = IOV("JfLpWOZdQfxkAqtRtTrEIrpipTtMJTRAAUSmuaxUfOTPGkqpPaRCTHmP"), }, - { .name = IOV("JpZhktcSfsh"), .value = IOV("SdUgpKmTIvmfWvMhPueSaQUKqdEIBfxZsxfdOZw"), }, - { .name = IOV("GdnI"), .value = IOV("pTsBikYdDrysGlpttdoMjZBrmlJCiQiXcoGCNTPYFilVIKDfVM"), }, - { .name = IOV("CVjRRkBPGTOjxKAp"), .value = IOV("O"), }, - { .name = IOV("ketxSuasDZiO"), .value = IOV("TygejBvkqhZIsONvXsRc"), }, - { .name = IOV("mzjGjeIEwEfMuOT"), .value = IOV("UwvcotNkbknuMazVaPsgTByZaf"), }, - { .name = IOV("tlkuVsEORaJrCY"), .value = IOV("mHullvuyJJHUgyg"), }, - { .name = IOV("FfzeGxeMzrnmC"), .value = IOV("vTLirOT"), }, - { .name = IOV("jhmHRzIJni"), .value = IOV("pr"), }, - { .name = IOV("kQHlrDvukzmzzrKbjz"), .value = IOV("ObJqNHbwEaMZDyTuJBhMRFKdbYWcQKpMdkGh"), }, - { .name = IOV("cixdkOVwQfZnrGMxbdc"), .value = IOV("NFhZmXoOmdxBNiFwrJFlhXjvcBuQIzhBmpvJTS"), }, - { .name = IOV("ih"), .value = IOV("OCBytPUZkwjeHAzEzvFviTyTLWFDqdcxP"), }, - { .name = IOV("zCYUzTmZreLrodwV"), .value = IOV("fzLiAhDGaOWrpcuSBtGXYGRAjm"), }, - { .name = IOV("rAZKLPk"), .value = IOV("VvKKmmlVhHTfBeLXdorbJMMSRkEJZuK"), }, - { .name = IOV("rzKqylVfUnyj"), .value = IOV("YHSNXnqNRMqrlHGJrOYvEtngighpreQWuupUKE"), }, - { .name = IOV("l"), .value = IOV("ORsuqaD"), }, - { .name = IOV("uNZTX"), .value = IOV("NGylKIfKkNYwJRvBWCuksKCJfqOfUdWdYwukMUkAHwSXr"), }, - { .name = IOV("DPGZJoRRamoK"), .value = IOV("jHvHJDBGyovMSAppkUsKzMmASQHXPMpFqAjXhjfzBPFUgNjaGPTjSdttNZ"), }, - { .name = IOV("E"), .value = IOV("TfyTeNqQOgsEbpfHIcbQAnvLlcmSBimXxzMmIGjimJkkLcJmfmqZWVQrUtRBDTJlhojwZkPlUT"), }, - { .name = IOV("SmriyoveYBlJwv"), .value = IOV("RodKicsiePmlvfjKfQWObDjPPiJMdjviOxKjeEmTtqdR"), }, - { .name = IOV("bt"), .value = IOV("fpXTFwJgqANYcxxuVNqsbymi"), }, - { .name = IOV("b"), .value = IOV("kQOAHiBmmPLsQsjCTIfwzjiWSHqVlElVahSnBQeYyfsJXgaocqGGpfOqB"), }, - { .name = IOV("iQMsAvrZeeMBGSRjruzf"), .value = IOV("flptvVQWdKoi"), }, - { .name = IOV("kcrPTksIuXinoQIN"), .value = IOV("dYcUozawXprNGIsdFVOdAGEdNFcASEVwYYToMfBONpUyGkMeFcdMGyOkysXVvgYhEzaKOvjnZwg"), }, - { .name = IOV("NyMfHQCslZMgYBj"), .value = IOV("FnRJdsmBdTXwfaeYyyWKFswTLnKnUqHwqCElcZsmdCiHjIEPzcOoPzVFKIrou"), }, - { .name = IOV("QmWfLRVQkp"), .value = IOV("uFMdovFuRDDeKGXqyCQXDwcungYRToGcKJCxYzsGQaAETwHEhRZPSg"), }, - { .name = IOV("NsDIrZheGYHc"), .value = IOV("fkeNXpfUpVYBvJUbfLGSyLPtHnzKEMLHCGShygNqUNubujLpAFeSFGmlzHbRchnqaasUJLJZgsUP"), }, - { .name = IOV("erT"), .value = IOV("CepQArNgtlIdjUDAdSf"), }, - { .name = IOV("qwDCRblcBhlVpkB"), .value = IOV("pKwOnSZkoZGZDUEEgdTtCKvctsaOrntYiwtYbAncRbyZL"), }, - { .name = IOV("vyThvgl"), .value = IOV("KgWAwrulGBocUSgBzyjcoGXeKRCimhPCBQJYwYZWVCLAXBRmFlJYBv"), }, - { .name = IOV("xCCCD"), .value = IOV("rsCWujaihCiUDzWyxYSLii"), }, - { .name = IOV("Ed"), .value = IOV("allabRwwtftSWMnccfjHgHNPybmukQ"), }, - { .name = IOV("Ecq"), .value = IOV("PVvLxgVlrWryThMUCkcFINvMgjmnsuuxdeIpvEurHoIXprbamJIDJQNoaYwbrgZFOqELqwnpFzyCb"), }, - { .name = IOV("vPSMapJatae"), .value = IOV("nNHQkP"), }, - { .name = IOV("stkfvFYbFOta"), .value = IOV("wlfDQsNYRAWHPUxdGMTFrRYskxNZiimSlCtmiHznjOqISYxk"), }, - { .name = IOV("G"), .value = IOV("uSEPCWjvhWgWRMYfvGKDAphniqxPAGtdUBSowcHfchYRlMmQvZKSpJkayHfqBJJcUpaiOA"), }, - { .name = IOV("KAEOxq"), .value = IOV("DrGzxnaCDidocxqwNMLfPUBXkTXvjnwkkJRWPRWnMIVerFOzaGsilNKUNzEDJxQXKCkeaTp"), }, - { .name = IOV("IsW"), .value = IOV("tohkdTtWsEORrGoJrdQrsArGnNfgSPpgKtlRWenKKvgBEOeKRWeIoIRj"), }, - { .name = IOV("dvNGbVHCWLkwBOyCE"), .value = IOV("LQn"), }, - { .name = IOV("DvdvLekiQckrkwsir"), .value = IOV("FOS"), }, - { .name = IOV("kBAyjBQjcmFIB"), .value = IOV("JgIeE"), }, - { .name = IOV("Gheb"), .value = IOV("yONQsTKZgHfpffWRPTOGwYpRLFCSZJHeWvUESrCoKFpdKNEEcLnQYNoGbnlmdzuuxYaRMkW"), }, - { .name = IOV("mtAQLQfbgxefC"), .value = IOV("wELNXNVMBMVrjKlWFmEsBLbfCsWQuPhF"), }, - { .name = IOV("cWhax"), .value = IOV("VdDcUMb"), }, - { .name = IOV("Cir"), .value = IOV("OUquDPRPJtsTamxEtwStenrxsgoqJQSueSqZkyzGobYGKJEPKWO"), }, - { .name = IOV("XKhpAZHGhs"), .value = IOV("lb"), }, - { .name = IOV("UfmRJcQG"), .value = IOV("cLuivxTbBVepzXXRFDhzhDWZikbaeqQINpqDGfTRnPkyRTqogBoNCCuBcLxQF"), }, - { .name = IOV("lFtjts"), .value = IOV("PDziPexpNGBvFzppdsKsWXJGiAyZLauakQorVwFtimASdFAdpDUXAVPtgoFGNJzxUtBYMCeGnA"), }, - { .name = IOV("ahKasPGvksXuRMLvQ"), .value = IOV("lMxhlvfBjDlIjKOmrykpPZViPIiJPwTYqDuagIUxwtKppsYElgFmEjhyvdglZnBLBgvT"), }, - { .name = IOV("meDGsjVQNtYJHMYmDrI"), .value = IOV("VDMRXQNGCOykLRYjXUrkstyAerhrZFHeA"), }, - { .name = IOV("SvlWI"), .value = IOV("LLdInGDiaTCxClvjWinIfobxKFaGHI"), }, - { .name = IOV("JBrE"), .value = IOV("FIqROnxuQPfIuqaUqHmq"), }, - { .name = IOV("fCniAzDesqUsTjy"), .value = IOV("PpCxZDdKQwsaOpKnjgNcTuipDkQWpIioCaKsitqMSAIHEJsedODhmIAMQOcGfAVVjbBludDqlDJIas"), }, - { .name = IOV("L"), .value = IOV("hibLboIJnDelDrKxswiMhUw"), }, - { .name = IOV("WxlYtTtrPwvuwcaCT"), .value = IOV("PEyuDxDqlDnipkObxlKSSenkYqrepOI"), }, - { .name = IOV("hCMK"), .value = IOV("ZOKcLTjuwfIxixoVZJHAIGdQMXyHyynaTLPvdZRfIhxjv"), }, - { .name = IOV("wFIaCHWMunjC"), .value = IOV("xYRRlmPPcNFGAoRxRmaUiwiGcrvxaHG"), }, - { .name = IOV("up"), .value = IOV("XREgppNdnSIuFcYSQkHShCcJozJWwnVyHIoIRbhiAbAAJ"), }, - { .name = IOV("wkIkvdAKypzKYXvrB"), .value = IOV("jpypysRjlIPEmTySUEdTwa"), }, - { .name = IOV("kwMBJUbCkhxcLITGCx"), .value = IOV("qneMgVbHEveRIUAIrVMncwBqFgozmXrWQeMFQGzbnkeGqrfHuvXbQOsiLhpFkYNzKh"), }, - { .name = IOV("UZVdEQQE"), .value = IOV("OmkqHQplcgqLRrrWjmcYybSYIyOhkDfqLHQBnzECmoNCyPSUoeArxUkNxHfmmxadIMJ"), }, - { .name = IOV("NPKAaUNADzocLK"), .value = IOV("ZFIZzcGmTUgShOxDkuRQvRJouteMMlVPksmwmiHbJjmHTvRaKNXSKJwZPLoCQzNfiDjqLjprkYZWzvS"), }, - { .name = IOV("dZeIkpuDIbov"), .value = IOV("oYUfJiCPUgRxnfZLuVyNzyhFyGtsxpwdKujd"), }, - { .name = IOV("DKIQgPFQssAPJTde"), .value = IOV("OKJNgpDGZwpWeRYIuVrBmwNvRrqsBvcnlXhRMqqquHfMVqGfJIQjpjIPQZhICzdFbOoQ"), }, - { .name = IOV("YacYxMRnYGhrsGIdzzZN"), .value = IOV("APaxoouMzNXuoRHngCAvBndeqOpZdPuTajLnogYWUpkuxcUIlIbSTVxMTSCpuuaSvEtqPYiKfnuWOnfh"), }, - { .name = IOV("WZqiROe"), .value = IOV("r"), }, - { .name = IOV("yTuMdDnkvxcSKAzVvcjv"), .value = IOV("DQDzQTZASdZLpakexGyHWeGfWiISbpzzMRAfTotz"), }, - { .name = IOV("jyfRyZtT"), .value = IOV("yAQXLnUKFoCNbKyT"), }, - { .name = IOV("GViVz"), .value = IOV("kDbUtTzWrpdjBpAeEzUIBFtxFVYXW"), }, - { .name = IOV("mMMjZp"), .value = IOV("WrrJVdXgruBTzuEFqWGWHsOwXtLCzHfkRWxUnqFDicZm"), }, - { .name = IOV("zrUMzquNpVpTZkNLnP"), .value = IOV("yIeYFcZxqU"), }, - { .name = IOV("CukiAktRMBGZofcaTL"), .value = IOV("wKeEqRwFMxVQBhzHGapNSljTdiRlnEdDQmXkimGdPAzLLImgnZAiYClUXJuXzLvnUITOyLoi"), }, - { .name = IOV("wyOAxGMclxTU"), .value = IOV("hjpQvCZUWtnEDQqTPigpPycOLGmBQrcQvxGQCzPXjBYLUUsmCbWtKmLZezPUVtUDSRVBETVGbYYQ"), }, - { .name = IOV("PROw"), .value = IOV("VQiYfnceUvbunlutGNdvbhPQRYSKssqlTUHYrZlyJOXPZJIaNaVkdCKOEdUu"), }, - { .name = IOV("lIgWKZxEuXrXzav"), .value = IOV("rjJmkxdmrKpWKfPjVwcIRFGVwyovNiYgOlhaMyJPHxnBef"), }, - { .name = IOV("crnBvbtAcEk"), .value = IOV("gRkJAhwSHxUqBMQjJBKvOviGJCIWHEdhzjBLAygrKaojNnDOZWuD"), }, - { .name = IOV("GDYsWjinTgMka"), .value = IOV("YqNkWAgYIlDtkDKH"), }, - { .name = IOV("WdOPmEntr"), .value = IOV("GbrpGmiTVWJnkXtOlFdTdr"), }, - { .name = IOV("YjNK"), .value = IOV("stLXdaqSdZdtcRffIGzjbpsEuzpzegWoKPJAtgncfiNelxHCe"), }, - { .name = IOV("iHodGGSWqNNqg"), .value = IOV("wAjZKsFLyaxArNvDxlZxjxGCCNCwYtNJrZ"), }, - { .name = IOV("EFApAV"), .value = IOV("OfnMDsatXcFfoLNAebAXgfYOCKIlgImwOsNbNBVYTqHZCZUyxt"), }, - { .name = IOV("SMkhxKkDAhrkOPztlET"), .value = IOV("BsVgXMnussvEGUnbtFwWTJxxczGoguupShKwVRJFXrcxFXbjuWENsDDtXatCphUsgNGyuxPh"), }, - { .name = IOV("ShmbXVUPqIDaXJsTqd"), .value = IOV("UGVHOaDTFhnPbIGBbz"), }, - { .name = IOV("QZkDXGokknOCJ"), .value = IOV("JjQbMfvTOBNQllCJkekpBpwLOLMsbeVhVrPeNpZN"), }, - { .name = IOV("kqznVFuGN"), .value = IOV("WIthQsRa"), }, - { .name = IOV("IrfqsQbasHubN"), .value = IOV("k"), }, - { .name = IOV("gKit"), .value = IOV("pnMvyQoMLAyfFOsyNfwJqfEPrkisRUriLKkuFQMAdJYJvuYuuDxMHB"), }, - { .name = IOV("CFQE"), .value = IOV("kWsVkRciFiooojJLoDLXSUVtUHhFmcCn"), }, - { .name = IOV("AiqQgSrJowFfSoxIfTF"), .value = IOV("QNRdeSeL"), }, - { .name = IOV("PQXYbZYguWFPYrJ"), .value = IOV("eLkpwuLGujpojBHvrYfFUgIxoVtPaaTJUmRLIzkYDBjnKLUDWrVdwxqfQRkwZKbsxirrjDdYd"), }, - { .name = IOV("o"), .value = IOV("SlUcSBAucascLdzA"), }, - { .name = IOV("ghdBdsqdYuU"), .value = IOV("tcphWegMkiROttCUSYCzLrTmAaXWqDrtpfggeRRFbzXQZZINVuli"), }, - { .name = IOV("IiYjgElvYHoz"), .value = IOV("EIrrKWhtHWCmescgnalexQdDnWvFFdnwpZlgakKJgoQmPNbTkxDmfISfuChYZlSxA"), }, - { .name = IOV("DgBTgSfQvVZiKukY"), .value = IOV("qlQQsibAdaCtyxnKQHOeoqNrWrrXmTzGyDRMhxIJDnIjUPrTU"), }, - { .name = IOV("AFYELMKhv"), .value = IOV("YCRmEaWmULhpDuykNMBgivsMCQllIVQFYgMitnYHUdZQspNBHXguXGCgPmGuvgKOFCb"), }, - { .name = IOV("gN"), .value = IOV("HrOcgTMGpMvkvGEGRCyMhvsQNHaYmazcnocCiPgAEJXHxIciOTpHRwuAQtubQHKcElKtHxMYCE"), }, - { .name = IOV("JondpjzyayzkVg"), .value = IOV("HAlrYzJSp"), }, - { .name = IOV("WWXNIngvfxFFPpNldlN"), .value = IOV("yQkUBLZiEpxYPyTcFoRZLpRadyLHxRklrWxODWyliwaoPSncUAbTmMQdlldvHNYTttyNplh"), }, - { .name = IOV("SYoeXDCHbAFpOQp"), .value = IOV("HZVVNyIXrWz"), }, - { .name = IOV("ozajTarLBoUcDEQcShjw"), .value = IOV("HIucmYAlFLijdcAUgLkceIhwQvNeQLXPMuZPhRXVqebwcudXjDXdSxpJMlpbiDvdOiYqPqRyPi"), }, - { .name = IOV("cFQiWziZYhHzr"), .value = IOV("gQEPtoLeVttsrhAJVZsJJOOQoFOSoubYbgESNHikFxPYGdqMTxbcfMDNzlXBepGZgs"), }, - { .name = IOV("xYlbUCNEua"), .value = IOV("eyZuRsDUglnurqwJKZpTMLzewmoPWnopQMWdRDUVfPGMZBUtLqoeZqeNmLIlAKeZvKhZddQKEOIhjwhj"), }, - { .name = IOV("QwLEEtQfnHhr"), .value = IOV("NytWggGvrypBigDiJdKDsdR"), }, - { .name = IOV("dMpjZAKZg"), .value = IOV("KO"), }, - { .name = IOV("zZLKkMoOqZIaUsO"), .value = IOV("RVZWayngxcqrLvSEqGObmJtxOxDfDNGTbhXKeGMVemMQZrPzsDfxujHBcjAmbLkGna"), }, - { .name = IOV("UVfZ"), .value = IOV("cVtYSskXdFwghCGcxAPmuWaojKnTZepWBsmCRaRLdteGrISJpLQeRyartqhlrtRNmnCxjJUDQRkfXT"), }, - { .name = IOV("KfYPaMqkdDarve"), .value = IOV("Uq"), }, - { .name = IOV("uFdYKMiUud"), .value = IOV("xNvoNNUOYRhTVzphdCCFROWODEscnoOJiDwBKz"), }, - { .name = IOV("KpPhMKrPolWR"), .value = IOV("IlXyPHQxAkKWGccPQIPUvVxXtuUtJtJPRGURHwchadKblXfGnBt"), }, - { .name = IOV("CjnlflpOH"), .value = IOV("pMwDexQuvuWgwWBaFHMhaJsBFYjkiWmqJGTIKpvRoJyiCda"), }, - { .name = IOV("udPWFdIRAh"), .value = IOV("b"), }, - { .name = IOV("FyHXJnJEOIUNJbKXFa"), .value = IOV("ArBrVscXZpWTuXiMNNWpwMZSoUVrApxDWhmIhJtWfYKAOUvj"), }, - { .name = IOV("mOKfCiEXiUxSAnJYfn"), .value = IOV("GogKEHWJuBtAiIsqYdJrwWUucKAgwgcVtDwHV"), }, - { .name = IOV("eAUKAUUxodN"), .value = IOV("VDGhXLMzFoESItaEeKiVelhOHWAsXdvilJTMRFaSuKHnbsnrWxEDCUkdLwIzaVxPyn"), }, - { .name = IOV("cY"), .value = IOV("waMwzApuVfVIWgRzQr"), }, - { .name = IOV("vCCTHP"), .value = IOV("uMnZTwOvVvkkhXCoKMcnRUebLvwhbtGORuuZnCczwNhTaAMphHeGAoUPSBvMIOgOJdOxauNNpOwNtV"), }, - { .name = IOV("qBdNq"), .value = IOV("umtBbqTtLRcXkhCfMUIchDKKGmMgcUEVQELFlcPvsdnxoBwxwmYccNqyoaNUsWVGMKInIUupuCfRG"), }, - { .name = IOV("IHwZBBeoLeyFqHUL"), .value = IOV("eICLBnpMQZMCgNYLmkpagFzQXFXHpCqeLBMGoDxZiAyyzabhTLVYbIJvtviCmXuorUSPlBmKjkbU"), }, - { .name = IOV("OzfUaeyLKKxYoasN"), .value = IOV("qlFGzJCjcLIyHIbqbgcFiLgRECVBiOmYhmGvfYGfRmSvqHUaTIEge"), }, - { .name = IOV("zzpfkIYBM"), .value = IOV("VlpTHJeGfLbJdzdporCkUOdbfoHcnxTUxSZHUjkQiPgOELwkMtt"), }, - { .name = IOV("bKet"), .value = IOV("uxtDOQnxCTPGWIwlWJHnExhstPZSeukHapWmfoum"), }, - { .name = IOV("wAsunQw"), .value = IOV("ByIifITTYsyiDlbauASELuGhcDQrXLeUdlqignj"), }, - { .name = IOV("GGuJZfWMqeKXSIKfhR"), .value = IOV("QdRvYjZXeSQLzAUSAoRjBxHQsJcxtNshbFrQUKmgcprvHwQ"), }, - { .name = IOV("HvwkQEFD"), .value = IOV("KhNsmeETFlJcEUkTOlDVUKAUQgUYsWifKKNBhOXYWxvuClOYTKhjwndryets"), }, - { .name = IOV("eNSrAjbiJLU"), .value = IOV("ctSCKCxYcZOhIbsYKXFLnCseuKtGKXfAtEIDAsbcPMlmiOBtBIcwzwIQZZysLXBLOTJtgWe"), }, - { .name = IOV("o"), .value = IOV("vcfTkDeGMfVlSJYIaznDvnyLECzPDrffJjGrjvLqcjWwUHtUTNLfPyQHeutKhr"), }, - { .name = IOV("XYy"), .value = IOV("yyWxzPtERBeFqUvfDELFhV"), }, - { .name = IOV("neFfc"), .value = IOV("WXIkjCZfoEUjmil"), }, - { .name = IOV("PhUbW"), .value = IOV("bmdDYstghuAZoRFzDPHbEJJrBctyXPIABHCEawFDIYcieDoY"), }, - { .name = IOV("vJ"), .value = IOV("IahfCtWHFBDzovDCBLipUaRqolvQaRkisezNczfqnmcfL"), }, - { .name = IOV("xTsgxB"), .value = IOV("NExaNgJCTBcOujGN"), }, - { .name = IOV("NlrJx"), .value = IOV("yyqOcosPTRbPchkPIDhskbKbOwZEusNPxnppyqxQmZxIqQEoorbFQpZZeMqeSQaKBWNcnMYj"), }, - { .name = IOV("EU"), .value = IOV("BHpavLfcmdCAjUoANIUbbvguNhkQerfsDwocuTQvBIoEfFYntJeFYwqisSzpjvMLeREAfUYX"), }, - { .name = IOV("dVoCWbtyxRpyidS"), .value = IOV("EcEzkWBXaumqUQQjmkgOofittpcATXVTEkwamYxJB"), }, - { .name = IOV("RatUtNwcHjjL"), .value = IOV("IakGzaNrZfpTBJVIPcOMfoHTnCWhwkhOeMWYTKSmRtTBgoOSpqyEreDQq"), }, - { .name = IOV("d"), .value = IOV("LMuxuKdjnuZLUPGXQNEUYPjMfSAZklCHipMlwWGQgLCMpOFMUsLpMPLgKfCeTnhI"), }, - { .name = IOV("lVaOz"), .value = IOV("WRZQppGgQyGhASeSXMQxQCx"), }, - { .name = IOV("C"), .value = IOV("FRaAGRDWRcsRman"), }, - { .name = IOV("OMweEbylnVWh"), .value = IOV("CMZuTFiXnvMPyhJSBDzwV"), }, - { .name = IOV("AqOEJNtuTGauwqHi"), .value = IOV("yVPpmusIqGoNZNiOCiFInpltJHpV"), }, - { .name = IOV("YuJycxecMyPQdojXL"), .value = IOV("iJybQnLzRBCEawIwWKccwRzyISBphrlgBOyduuFGQOsxkpBUmpPixAvYhQXTCWcJA"), }, - { .name = IOV("F"), .value = IOV("JcztZfIquhWxhjKyVQYyTKqLwKxJBVXSDeFMDgNPVHIpwIVmCotgXwTvnhPAQwoJwPuHZEG"), }, - { .name = IOV("NWYrxnMhE"), .value = IOV("GNhAfDx"), }, - { .name = IOV("y"), .value = IOV("EbgtPqEHXtxfJethyVrurPalFWOrZufxUHxWrompvVmqRbRVTqQgVUMucOfC"), }, - { .name = IOV("YgQYCYHXgHLARa"), .value = IOV("LaYCsGqienqJrWMkBqMhluni"), }, - { .name = IOV("fmSc"), .value = IOV("bZSENKUuuWvlaogpfrUQsPXqWffEatODbndHJ"), }, - { .name = IOV("ajzIP"), .value = IOV("gZnxrwILtMAiUdELpUQoeLhrRptglcpuvGiHBgimAeiHHOt"), }, - { .name = IOV("blyFWfm"), .value = IOV("QlyBOYUJjZSgOvkcJDEXCrkBycO"), }, - { .name = IOV("ehlvzDYvWiBDHbdw"), .value = IOV("sUyMiWZrjJiLR"), }, - { .name = IOV("bhpygKGJhwb"), .value = IOV("UEcPGgXtaLLvBfZBihfFk"), }, - { .name = IOV("FmByGNOHjflByEcRyaD"), .value = IOV("doGWOGmYTftXTjWsq"), }, - { .name = IOV("JCGPtKZrUVqDIfxK"), .value = IOV("nUsTssgZKgJ"), }, - { .name = IOV("GCzaoXtVHtopY"), .value = IOV("OBDupcLrHMRfVxYYHhixGUmYxjwASxLhVZKLnYQHvlFKZxjHru"), }, - { .name = IOV("liaFPcjZfWQ"), .value = IOV("qkEphImUyJIjFDeGHuyictZHBSFIfWfxDTviemukCeAgC"), }, - { .name = IOV("BmZXOxUaBUYeEVoSa"), .value = IOV("rSMMPQigqgiigBhFWNJpvaoyN"), }, - { .name = IOV("oBGPvM"), .value = IOV("btaZRMsbHPkVACNorlUFOXXfCXwdFazBYOLLbwCxiVUQBZhJFuxyjtdFcyASkkWs"), }, - { .name = IOV("uzOQKfzRaSUwqBANphY"), .value = IOV("mElfVsGcnLEBsLLRxZdgSpoxoQzJaphjhKAttyXnffoDoIjHhzqRxvfCKTSArklCuRU"), }, - { .name = IOV("y"), .value = IOV("KtdXZtIZaTDoBleeShPykdQvdoggEIwpGdCQFCkzHPMtIwfqXYkzjIF"), }, - { .name = IOV("axYsVrBeJlpTkGLmLD"), .value = IOV("cTFiffPGuwWpDBfs"), }, - { .name = IOV("bvyVCvc"), .value = IOV("itJqirrhdOOYvT"), }, - { .name = IOV("NKccoUpWAezxn"), .value = IOV("seiUhaMTfwEXxxZDrBRuBPxCCBwDfFFLicqeWvWQAMTOwVNFRAVENqMlJvvoLFhyrNXI"), }, - { .name = IOV("fSwubxCT"), .value = IOV("SSlILexttxKkf"), }, - { .name = IOV("O"), .value = IOV("fDs"), }, - { .name = IOV("RwNAFp"), .value = IOV("sjsDUfwjCOjNHhAURpsPGwqwPUleHrtveRAXRyTrvCCiR"), }, - { .name = IOV("itSfPECOYBf"), .value = IOV("lrpJYhjNFTyJuZfJBfBYBDnoWHZstaZj"), }, - { .name = IOV("uDeegvlYzBptDIzJi"), .value = IOV("guBqYZKYRJjAXWQsaEjTlXDMTSFawqARNlPCGXBFKkYAzaiUivWPgLu"), }, - { .name = IOV("xj"), .value = IOV("MJiJhqAhIqvlWatvKnik"), }, - { .name = IOV("p"), .value = IOV("vgibSeupgDWteWNQLuxwDrKCVixQTUyiwdrrWKilEaoyGgK"), }, - { .name = IOV("GMDX"), .value = IOV("FbrKtizQpatwovx"), }, - { .name = IOV("tfpTbxQlQ"), .value = IOV("VElXdXGdNxcLuxZTxJUZZYrlvqQZlsjJYTHzwXzXMoWRcfAD"), }, - { .name = IOV("kHUsDvtInFieRJOkwejn"), .value = IOV("soCdwZNWTf"), }, - { .name = IOV("FlXCSdkogGTQBIA"), .value = IOV("YjYinToDolHaSWBXQvjwiugdThVkGGuVBN"), }, - { .name = IOV("hbdVUKAQo"), .value = IOV("xLiiOnMBGJXcSDnbaNFFMLaHOItTrPeSPYOHzZdkFOwqejQExcQEcqeogisVSGJaA"), }, - { .name = IOV("MeHqgjglCxDLucELoiJj"), .value = IOV("KRIbABdIFuDPZFcGkjoGaYxDYBOfH"), }, - { .name = IOV("SAK"), .value = IOV("qtvaLkjzOcTKKCC"), }, - { .name = IOV("ZfTJ"), .value = IOV("zgIuIdpJhfBcNzzOMyBPMyyVKgjqIHEEnjscKBZjGiuEeJoxKBweto"), }, - { .name = IOV("VdweoHLAoeYsvm"), .value = IOV("JiheScELNizY"), }, - { .name = IOV("wVy"), .value = IOV("werATyYvLiayXAqncDTxOoQPZeXwpfPNav"), }, - { .name = IOV("lQkG"), .value = IOV("EeMGoyVJkZpXZTUyPSoobQMYUoPbUryJQDGUihnRmdrgpDckNdicluOsU"), }, - { .name = IOV("eRgFUkrsNsekNNY"), .value = IOV("RgofEpyzhmchBXrqPRkDfBvuexMaPVqkCtbScbtNIhWzYPsMifINBymlFhsfqdeiwjycYLeTSZSARXZS"), }, - { .name = IOV("NuCIRlRFvDgcAIkL"), .value = IOV("NdHLLuVYlbnPElKTKTIaAnmuTQmkGYgTFaBtfOHSmFlelwrXbbweyAKtfXKJFXptCeMIrwMvakcn"), }, - { .name = IOV("iDRUorgn"), .value = IOV("iMcewsRPVLZyhWTVhubFMBAhKnOiberfWEDJiNfJfFBWByhPfAnBElj"), }, - { .name = IOV("gIITelmFNpTOBC"), .value = IOV("gTXTVtVEPrHYCraNqjqUEf"), }, - { .name = IOV("TGtzQCNCmsxXq"), .value = IOV("PHpwXqTHNhNhyiyGmDaWGCBUZgwLuROTZaiZxvbLOPVMhmLaZKxPpUChDNhJzBwlOvsdwWhxZtIkc"), }, - { .name = IOV("sFZQq"), .value = IOV("YewyaQKkOgOsQzFwwgHwLOGQdEuqZoRdRpcTsYGQBkvZUPGqvLgwzUnak"), }, - { .name = IOV("slQM"), .value = IOV("zWNcOQAiJUVhoLVyhwCzbbQzmQzEVXnGH"), }, - { .name = IOV("EontwGQZXubV"), .value = IOV("V"), }, - { .name = IOV("YDrHsSZIXfdcwlKJs"), .value = IOV("M"), }, - { .name = IOV("LvUrCn"), .value = IOV("wYiMiFftdptmPrWxsiLKZHfYTeGYTljMlWIpaK"), }, - { .name = IOV("WPolppAThKccQ"), .value = IOV("PZitrfutJXJALFKFknuVQvnuwrQoyBrYJjEIvrpaFJuVWztGsnwnhFjxgZIZPREQVIJoFoa"), }, - { .name = IOV("f"), .value = IOV("GwUArmUgqrBBDwUwFyBcFhGlLInvcnvnTCMzIaQBfVXtDqCiQxptnJPKaogTpLwSCXfVQXqyrFum"), }, - { .name = IOV("SnEuEkVkVUuPX"), .value = IOV("NucCQpZOOikyEeHcOxpPkYWr"), }, - { .name = IOV("yGKZi"), .value = IOV("pRAEPSZzfvmRUPT"), }, - { .name = IOV("JVnqDpMkLSJOZpR"), .value = IOV("t"), }, - { .name = IOV("FIhYxx"), .value = IOV("drCnWTpxtyOHBfGmVjMtGJQxcKXkXQjkAKmSSTSrznze"), }, - { .name = IOV("pxKpaV"), .value = IOV("kbQiasRxHEhXzlA"), }, - { .name = IOV("GQvFHPvgPbHeacJfS"), .value = IOV("mpaxebzyoibDlGmcgWRMuPBgkjtLHudEwCAgAp"), }, - { .name = IOV("keJSJaLGLDCjbj"), .value = IOV("UULdRNSQgvGNcSPyqLHhOWjrsMEgXOipvgmNhPCLkccgFOBoNYWzkUbxxiHtUKUkun"), }, - { .name = IOV("vIHTSrVV"), .value = IOV("AKCLGyHgGzRJBIvJCsGmJjCPSoanQGDbrjInrdpebCAFyzmSj"), }, - { .name = IOV("KOScXhYjsJSrotg"), .value = IOV("GioWmrIzqV"), }, - { .name = IOV("zHSGpUZEzs"), .value = IOV("qXzPuOPrfQtoCg"), }, - { .name = IOV("wKOUFioDrorQ"), .value = IOV("cfIHzjkTLFxtfjLVpYmiGcEkZIesKMIoXpOnciXBLQbIgFamBCoUdq"), }, - { .name = IOV("aCZMuR"), .value = IOV("dNuxSwFBmjmwm"), }, - { .name = IOV("WFIJPbdIHg"), .value = IOV("mPjQQRRPygGUMwmodfCShecdRFbCvrdCqPGMOyCTtbgVkRJ"), }, - { .name = IOV("HhDCBJlHrQmbrUS"), .value = IOV("XNwYnDtjoonOlQvYURofygFXKfxstYp"), }, - { .name = IOV("KcQYfGUSaodPK"), .value = IOV("KnxDFUGbvSWuNWXLHnHpRUZKMLXfvF"), }, - { .name = IOV("SlWVdouYpLLg"), .value = IOV("mvXQgcAmwGuFZvF"), }, - { .name = IOV("bqemsbjhhosF"), .value = IOV("KZMbUEagOpdcSxEXevWndnR"), }, - { .name = IOV("Aeh"), .value = IOV("bl"), }, - { .name = IOV("uSLNawaQI"), .value = IOV("FVSXjXrTFuoPHBdjrQeTsYlGwLwoAeDDeQATDAQqAR"), }, - { .name = IOV("lCCLraIZRYphW"), .value = IOV("pjponAcTQJJXIieMBdCfZKHBRKPcVRcdkZrvHYqmIBgprjEIYZvyHq"), }, - { .name = IOV("OLPQRAcQlvKDzc"), .value = IOV("dRuDGz"), }, - { .name = IOV("HHj"), .value = IOV("cezItQeMjqhpqvkNeEKod"), }, - { .name = IOV("vlrzszoIi"), .value = IOV("GLsMtqOHCwOb"), }, - { .name = IOV("QMuHJEiDBzPF"), .value = IOV("LgwDEXMlqjrBGAhFzkwxgqRenYIyBoiAYwEtRJcAUtOpTYXLcRuywdFAnFRwQJQQUvtsMpgFmc"), }, - { .name = IOV("XmdI"), .value = IOV("TFRiVQOeyVhN"), }, - { .name = IOV("SYRs"), .value = IOV("QUpsNHtfvZpBglCEnGgTQQrbbXnOaAgWSfGoILSlLLjWqPTPuGzlIQDpltEaODbwoR"), }, - { .name = IOV("iEjPKkPTBjVxvn"), .value = IOV("COfMKuynXDKPXVkVPvnkIaOptLdorWItTQLBjJXllPzlmxuhLzMlZdKjFkmTYLHXXtgPLgWhJ"), }, - { .name = IOV("N"), .value = IOV("vwUIWWEoqsAGidPpJODVKNTVfvgAFJbCULKfLBAfc"), }, - { .name = IOV("Ormo"), .value = IOV("jnidkRoCLiGzhwvSTjfEXTmKGddSQSzTeQQxrbNBJqn"), }, - { .name = IOV("fGHYBxZUFQNO"), .value = IOV("OWSabAzrbPoRRCXQqGpMeXMBcillpFR"), }, - { .name = IOV("EkIIvpx"), .value = IOV("eDqzvgtntClSDoHUuwzrFPXwNgPJHQucqNOAXqIpELv"), }, - { .name = IOV("ESZIIylmczjJStPhjXpD"), .value = IOV("fmiecAeSiQVyuFikRAcglV"), }, - { .name = IOV("UYxDWAMrDBKRKjdYq"), .value = IOV("YlGaNytWxNlJKjexUvbCQKCVoCDeVOlmwZmvMWpsjMQRsxPGRYEJNgi"), }, - { .name = IOV("QBUDEhFDf"), .value = IOV("mWBwEvGDubKsqcqahiLZsUpevWWMSJVGNyHyXIEMWFwQBVpxWclbFZvBuFnlBaXap"), }, - { .name = IOV("scEZCYMIJRZeHNz"), .value = IOV("akqMpspxsesnFrnEfDVTaSUXRlnTBoMLhur"), }, - { .name = IOV("xlJdDMKT"), .value = IOV("ubdfxLlBidGPzPnweZVRPbvUylVrGcOwOpYsWmDAvjrVFDFfeFThGohvbEWxnqwmNWiMREWPjCP"), }, - { .name = IOV("xFBFGcuzWdbydA"), .value = IOV("YnRAilgPxXyPLFvefJyfmWycGfpXnGItYRCMDAiTHUZTbGqgPzBXcJexDCaZdgxhOBmZWgo"), }, - { .name = IOV("J"), .value = IOV("QDVbGBJrdixNOuHbahoTYBfbLgCuotdVXMhTOUwFZbRhKqMhRYSVHvJvIVbgoLLdRrqBZlJoxI"), }, - { .name = IOV("ToMyZEewG"), .value = IOV("hnhANcYfUkWZc"), }, - { .name = IOV("BSJsbr"), .value = IOV("TEhMWZQUwqVTgAYtTf"), }, - { .name = IOV("sykaGmCFcVMlXpARn"), .value = IOV("EicKMLZYTIphtaMAPaDvzsrNmr"), }, - { .name = IOV("RqYl"), .value = IOV("uOwEpeDuqosrLcrsuTXSUsOjDBPxlUeQqvyzjX"), }, - { .name = IOV("h"), .value = IOV("VXGtoJkHChsawMFXAnMWkehrGmYbnOrNZtoZdsSy"), }, - { .name = IOV("tyRFCO"), .value = IOV("tSzjIfXcxOkBFUyujRDKPtevhHSOPlKqQgshjQ"), }, - { .name = IOV("zknXUbkheClkOhFJ"), .value = IOV("drmTtbIZODBCrCmMcIsxFsbZWDoBboFMjlgXgHiGojvrFFMaQYMbcvOfNKCdbbbSPKIheGnyn"), }, - { .name = IOV("GXpulrYS"), .value = IOV("ActYZVfymmDe"), }, - { .name = IOV("Rvz"), .value = IOV("DOZhKTNFudyoeQXjWaOdcXFlPJMxdlYJczPvHPoWTBPMAVWmMfpbeSCDP"), }, - { .name = IOV("iKXchgNLSuZs"), .value = IOV("ciAXmxINgLIxLbqqOQVixUxySBm"), }, - { .name = IOV("QtS"), .value = IOV("MaVmMIXfBjubFKYtNahsrDDzDbPjA"), }, - { .name = IOV("bXuQBOMwBpBeCWe"), .value = IOV("MYowVwLjuWOFspRvZGJegTVZEMkKrgyRXg"), }, - { .name = IOV("JwMMw"), .value = IOV("TUweIVjYzecEYPQBJlLcqPtphTEJEuHxcveRdndwmPtzwDgFBbQmOsaDxhRXyoKGIoAcesGDvqhwSdcM"), }, - { .name = IOV("xRaWMFgJh"), .value = IOV("HXJTAlWyTdeLhELzcNeQCtKaHXXgPROgzvWljCWANKAKJcwUHkBbmJDxjAiJJqBADSQFpMh"), }, - { .name = IOV("DhllulDOx"), .value = IOV("OQpEsBTfh"), }, - { .name = IOV("pBBhizJkFqtI"), .value = IOV("TrITOqYYmJIUxSaeemJMcQvRyq"), }, - { .name = IOV("UyqOAtjN"), .value = IOV("bRFd"), }, - { .name = IOV("agidBzjrQanAPTBrWZRD"), .value = IOV("qzhypSnkSREiwTiSqlKZLAHGXMezqqLWbwFIgpGUftHgPNyRFsXsTQMxYMBFhJLgXBAFjAypOCER"), }, - { .name = IOV("CLZsoGhJFnWjtgkkJ"), .value = IOV("wgIScRKwMWrwMOWdIrHvlsRHEOnZzeRmO"), }, - { .name = IOV("gujsmJDe"), .value = IOV("TRoSCtPjstHGmNtIlzQCPvgnkaUdqkyUwPDaSXmpHBHIEboVpXyFaRKNXthkZuYPncWbEFOpblDpsWxr"), }, - { .name = IOV("EOVGiwykIfJ"), .value = IOV("paTWYcTvgTFMMlZEqWWtxPQLzNrYpWbHKjESPgNejwxaeBEpyw"), }, - { .name = IOV("PnEmiPzDsqFD"), .value = IOV("noGIWImHztigZwxvfJugkjEQEfcxGF"), }, - { .name = IOV("NBl"), .value = IOV("sNSKhBrdaefHqqaxzkhhjTeHZrloVIwZmVdXGvWXbcvJRrvxPxHayEjwynYFDBzbKgzrFpT"), }, - { .name = IOV("hY"), .value = IOV("HVvXSXbrzvRYZwIBKibhJTveNOJSNozjJtuIXVe"), }, - { .name = IOV("IHQbQJpTzLY"), .value = IOV("HVaOuoAoNsSfQO"), }, - { .name = IOV("AXGreijTZOc"), .value = IOV("eGivXEvuPmhfHQmjgugNBhlEjvMjXqcelJonQjlmmrsOVloByDMyaxfcTNMnAToq"), }, - { .name = IOV("jzTGBxXVdv"), .value = IOV("wIiWIDYIVPbZZQXAERNahlISBErfBgpMROYAJZcznMROZMuR"), }, - { .name = IOV("dEuDnLtIixENcwFoGBhR"), .value = IOV("VoUvMwzUBMcKkZBBXRlkiLowKWAJQPgEVWZoXJshsLhZLJrcTQtN"), }, - { .name = IOV("XTSrNAqU"), .value = IOV("ccOSwTGFUJOevqfLOiHnZ"), }, - { .name = IOV("ogNFKWmPSmlohjd"), .value = IOV("KoSyeDlLrIutFALIeTFuWyQKcEvTgtsjVMKYAjlpKlj"), }, - { .name = IOV("mq"), .value = IOV("ewSXiXzSdHMcqPIAFPmwFWYGoHTqhvzMBFJUKXbyBbx"), }, - { .name = IOV("roAwXHPKNU"), .value = IOV("yFetfNOFUioouXtrnzhtZsjDEzYghRSMZFBYYhSGiVUZyRKrOlrG"), }, - { .name = IOV("cyioWfBRJhRjQ"), .value = IOV("LDLyHBbzqGPhJqvSgXFJlDyAsAmzzGkHtVm"), }, - { .name = IOV("nZsUninhjTJKDuP"), .value = IOV("KNpBykoMjiwHyRdpszbwgvcwokpVKCbSfVynvcu"), }, - { .name = IOV("dxuVkLPZhcP"), .value = IOV("mGtopBhwnKsYcRVbBPkjagqLODuAFWSzTonPADyl"), }, - { .name = IOV("CIcz"), .value = IOV("fMyjhfHUjiJFQgvziKbKFHGCdUAUKSHkrDJUwGdlBMnXbhVMOrLfcYT"), }, - { .name = IOV("SvryFEVrEWmNTTSAKmS"), .value = IOV("AgJsqJUdWvZCpOlpteQsZJkXnfibTJLjqzivwIYUc"), }, - { .name = IOV("EhGyJmtGbslGSqOL"), .value = IOV("kWTYqzqLnyjTFZMOntYdEptskTgVHyhLHeBpptMNvCXALutxzlZGovFvPNLRxq"), }, - { .name = IOV("oEDLTyhmKhz"), .value = IOV("FKWzxa"), }, - { .name = IOV("UtWlXcCTcH"), .value = IOV("AnhtJuCaXdaFfEwfeUrIWkrIQPGrabalEhouVVLZOaMIg"), }, - { .name = IOV("EIHyfldHShofHcxtEdG"), .value = IOV("COiOhfEMHdImdvZZwItJHidOOjduqarHxTwLMd"), }, - { .name = IOV("J"), .value = IOV("BvvlZiqvESYeMlEeMlxzlMXLPCkCPYEKbaweLLWkwoKKWobaZpWM"), }, - { .name = IOV("nexNixeiLYiAdObqN"), .value = IOV("qZFykyproNoqBUfOorZbbBJQIhYvVMcSykcgHoaDPjJJmp"), }, - { .name = IOV("QQfOdwSGLvTnpu"), .value = IOV("KRtGtADCWGHKEtYnUOgTPyaXcPMbEmxjAlNWaMHizapglFrEwyyzG"), }, - { .name = IOV("eTGjDISuJVDN"), .value = IOV("WBYdrTQDtHiOlCAhzBYzhnx"), }, - { .name = IOV("rjakcDJLUzp"), .value = IOV("YcKHuEiPuVizVxDuTXfXuIHQbTaPhhoRToMSMBXNfXsjcENTfSGOQVnvimBQHKhhKWuHrcUFqZ"), }, - { .name = IOV("OG"), .value = IOV("vIhQnAfGegdFupkqdCcVxdNnAhlvIf"), }, - { .name = IOV("HaApOFEWgzMBaIN"), .value = IOV("EmAdhWKWHrlyYGCJAscFwSVTFrSbeymSTnMhRfakNjzwWkxLqisHXZNDhjOeO"), }, - { .name = IOV("xjgGmOqZOFjenvgz"), .value = IOV("RnyZxCtLtRrKgBjGkinGsneBRNiPjHPVggPJJhlknLTruhhRThvWzsVQAbNryomVsPgIMznr"), }, - { .name = IOV("zklNwCjoCcQBwCX"), .value = IOV("haTJJtvpfHHjIGctVucGaVnOQFJrIfplOFQForzuOBoVgHrBD"), }, - { .name = IOV("KUqLG"), .value = IOV("vsGMDyuaEAUvaaojXgVNsvEbSxYGwOuDuX"), }, - { .name = IOV("JUpvJxqACFCVUUPP"), .value = IOV("lcopibdFovXqxLmPvMoBhGsLSvGieiziaLHqLtcoIFiBaDNSLfEZUraexKixEy"), }, - { .name = IOV("YBJfsJOcKufwZKPUf"), .value = IOV("fesASfUbIfWSzcvFUlZdBYcTtIvuUqCaBkDHeozMCBiLbGo"), }, - { .name = IOV("mvINJSPYmlpafa"), .value = IOV("Kjxd"), }, - { .name = IOV("MoPb"), .value = IOV("QNWiWsGUoAtRzRqcYiCmKGrAjeeVHvVtApMFOmTZmmrpiwOWXSSCftKYb"), }, - { .name = IOV("EnOSlCYftZtKY"), .value = IOV("Wo"), }, - { .name = IOV("KS"), .value = IOV("GRfaOLKgcKwDArZGTZtIYvDhEbsySQYUoDZJVIrWEOateMTBzRhGhGXuE"), }, - { .name = IOV("ftePaoMpKavDRkcU"), .value = IOV("jNwgTNuYEkaZWSnFDKByCGnlBumKYJrVkHEgSkZnBdYVepuacWRXt"), }, - { .name = IOV("BelHzdhkVHS"), .value = IOV("gwVeEZTBQWsyxCvnQmvn"), }, - { .name = IOV("tcnqfkl"), .value = IOV("IYynoCsnntCEerxXypopDUwqlQnLfKgRbHXWYRdBDpuNywcKPtfa"), }, - { .name = IOV("tkSsQCPtJAQlwvWjm"), .value = IOV("VytGEScYlwDHlGCdI"), }, - { .name = IOV("QPtDoG"), .value = IOV("MPBTFLsEbeWkGwrmKOAoPuUNHQxRILzHfdjkSYo"), }, - { .name = IOV("OIjdfb"), .value = IOV("IKwkPuykmrPLXDUWfLEOGAqPZbRAjiUHBrydUgKGXU"), }, - { .name = IOV("XfFKIpArHgDBtiZ"), .value = IOV("DTzBeDXmpatEeXqjyGOhXeoNmUapEHSCHTOZMFMNQ"), }, - { .name = IOV("HMHJxqsVcixhJIg"), .value = IOV("zuxcgLhhEguEKYipxmyJdDVopfzcYTOiwwJlXaXmAlNFtvrZRyv"), }, - { .name = IOV("xCUIGSCJLIhYdTVp"), .value = IOV("AXhFaGupFHrptWzxsrhEfaazdOBwptzRvEXtlFMTishcpNLOIIRkdzZ"), }, - { .name = IOV("txLapYmtfVQPMHsCy"), .value = IOV("lfHwjHPKCrFxBSjwWAbkObfMIlPulYrskDCcRYMaetQstfp"), }, - { .name = IOV("jDofSQEE"), .value = IOV("YJjnpvxNAdiZzwjiMbKWRcC"), }, - { .name = IOV("tbSzQzwXwlL"), .value = IOV("NDJgqxgyzQNLXZtwJtkTudrlndFcicnOmZjbJJCDuUUHjMpW"), }, - { .name = IOV("vrmhvYfTVtRQn"), .value = IOV("TghH"), }, - { .name = IOV("gfXhrxOOCyAKAH"), .value = IOV("qIrQndAuHPdQieEUuTGEoobUFWuwnKUWnLGrhCVqImIajBkgnvDnaao"), }, - { .name = IOV("uKhCOARCsvk"), .value = IOV("JQvcuTRgLQuzua"), }, - { .name = IOV("HRbyGtyh"), .value = IOV("TaOggCCVMsFVJxWPcXylkefntoAmcDIqmO"), }, - { .name = IOV("GfyDlEYQkAz"), .value = IOV("apjraoHq"), }, - { .name = IOV("ce"), .value = IOV("LOmdOcsGJ"), }, - { .name = IOV("fHm"), .value = IOV("kTGAQfDhfelpBdFLtyTmuv"), }, - { .name = IOV("VsosdctHb"), .value = IOV("sAyLMqOAcgBitJZUghgkVKcgIcEtqKsAg"), }, - { .name = IOV("nQ"), .value = IOV("XaVMWvMEmGudcdtcQIYsqYHzyiDtmVuGBONgdKglDRvRRKOO"), }, - { .name = IOV("hmtKDAF"), .value = IOV("qmWcKOKzQnbdDSSFgGSqoZdkoSiennIoGKeoIHwFGXFLBcuYNWZFEpSkZTUhSqperX"), }, - { .name = IOV("fuCkDVgZeyvLkBwiu"), .value = IOV("rhHttZoQBTrtTOtAlaqAKMYqoSRqETHrsMFnNHMayCkDhwGcrHqrPGNhjSHJTcfhgZCprfUCGhc"), }, - { .name = IOV("lgC"), .value = IOV("tlvceaqBhQPwcmeCqplQYEqnuMI"), }, - { .name = IOV("OG"), .value = IOV("wuqtUyIowwKktZEZnQBdoLuICQDGcoeKZTGxVNqLFwHCHDimRjgbhnJgWbCCdtSoODVwD"), }, - { .name = IOV("QjCCRyDLQAksIqr"), .value = IOV("vSdwfxvvLPkjEIPpDJfcluGiwIUH"), }, - { .name = IOV("chSMCEJfIuFvtYRFmRoO"), .value = IOV("tZvWcvmuSasVsBzqSVzxbAeRcftcKOrKcWvdVmdPWyIMXpmVufXVy"), }, - { .name = IOV("iOZSVSw"), .value = IOV("CEkWyddGOJfTKKIlmTGlwVszYvvxMRpIYMAmTNTkbJmZYHumRqgDFkPUIZAHTlPlNaR"), }, - { .name = IOV("RvY"), .value = IOV("KeDFXvznlJWtgwEAAYifFgLRLlxNZwaCsXgddBOlmSJeVBSOifWoGDTJyDrUONoAnee"), }, - { .name = IOV("KXSSkgvRmgvR"), .value = IOV("PaqfMyaraUHouuiujccbvzwMcwrXGtVbVBuTHtWQtYt"), }, - { .name = IOV("QAb"), .value = IOV("hqzrijxGhNxZFnzdlcjMAIqPRknMiwKroZ"), }, - { .name = IOV("OcrH"), .value = IOV("FIyMAwKUYqTOJscrYGkOWYAARkoNBONBNYcqJduFahwVzzhnXL"), }, - { .name = IOV("tTwYqdisj"), .value = IOV("MtQyjTCWvByYAqvrpyhHClPHDMcnPtNYuYOwwRntEmygTwIOTktQELZnalN"), }, - { .name = IOV("aNrqVBWkEySu"), .value = IOV("JqgCJOdTPqXrCvZMOcHjeqKHrKznrNMskhGBAIs"), }, - { .name = IOV("MvUuRfmPgMCd"), .value = IOV("YidrxdEMoyLrCKkmOGfLwqiUvQEtqnPujRoZWivkitVewXAuukieMyZcLfLlWwjuzvczdsmnxlK"), }, - { .name = IOV("RdJFSGnEhkfSITEMCVTH"), .value = IOV("uE"), }, - { .name = IOV("VhuwiUsPnPcKMNBudhY"), .value = IOV("ZsxJrZzsprIshINSCmPOGHoyvJsjsZyaUEqlkAwUTPZswbQYGsgmLlSIyzBwLFqzWoxyLyGx"), }, - { .name = IOV("tW"), .value = IOV("GsqsOVPHUEuFfynRscKsZXVuLqRcloceQsaRDMdmBTJXL"), }, - { .name = IOV("B"), .value = IOV("oMqHZeqofVYrKwQvFPTeQPAgUVHtCwxaJSElmMzxVmzWWTyCStKWOizQmXfG"), }, - { .name = IOV("YMMWgiqFRGDTzn"), .value = IOV("qxXGMUFGTMwPkFsFNBDlVsrBaXHeCPgdfvIFuzTAOpxoUltlryCceTDGCtjJegvCbUKFLiBRel"), }, - { .name = IOV("uwKcJvrkkbpRVlRKBcG"), .value = IOV("ePXlZXCpTwEwbXmacocoDNzaSLVXoDLbAvUHFjPvgbZxGBlBWZMtDHwZwSSMdet"), }, - { .name = IOV("y"), .value = IOV("mYMLJEfLDLbdoQCDl"), }, - { .name = IOV("gVJGMqPgd"), .value = IOV("oUzcGelHdZSCXgrdzIZhJqRVYqCzWUjclMYLJcfLpunIpmvaClMWNQSsZREIbhowxjjmLsNWfpgU"), }, - { .name = IOV("KWnpAR"), .value = IOV("NjFeNdbQPDwHsghgspvmvgNCgqyVGUcufAZqLwuIYfZZIr"), }, - { .name = IOV("clZMK"), .value = IOV("xMZLUPQdON"), }, - { .name = IOV("UfSXGafJSWrj"), .value = IOV("jZxvVByjBVtKXSNhznUcnZRoanULRJGkYgXHQXrDxBdvfYTvtHykgQTkWfbMbiZu"), }, - { .name = IOV("dEvoEJUSzlnba"), .value = IOV("QQSqDLXnYMxTkWhawViGWBkLIvLwAEJylIFzEwCrsMDcgmUpVdYGeJ"), }, - { .name = IOV("ZnFKVe"), .value = IOV("TKBbAKbxXgKQtVxnfmoMRCksjXZWLExTcpMTMIxDFVBdXbypmtVFpYLwVPvZArO"), }, - { .name = IOV("FSqRPEzSlCbJXISYAeny"), .value = IOV("DpvTGsQjCrRlPEEjRldlRlXRkFPfNrCQrhSOEgCOLGtLIPJxKQeASEHJBynNkBzZ"), }, - { .name = IOV("JMOIXgxy"), .value = IOV("RrIbLQtFdvoRuXnvDOAwuXNCBalSBtXoaJOFZkVFCboaycdFWAiV"), }, - { .name = IOV("btdTRpyyqpuzJJK"), .value = IOV("f"), }, - { .name = IOV("uPbxHvLgi"), .value = IOV("S"), }, - { .name = IOV("gfMwylibXhQcH"), .value = IOV("zKerKBtDtyApNtEdHjMbjJUHtfNjRjzYgWiUomuYWqQFrHFToIcKEhKKy"), }, - { .name = IOV("QjWDUErdCgNu"), .value = IOV("IpjUrlvTANTsMOMylehHlxwtWDasrLIpoLXyFCwkMQOdSSxdNClEUvpLBsjaglIzPrhUnMtgeIHdvCfs"), }, - { .name = IOV("KM"), .value = IOV("ZtsxaQJEJChdrkJrsNcBVILQbWeDHEeXNzX"), }, - { .name = IOV("AZYhBeXzlCnhlSNaHXt"), .value = IOV("ZKISXFMBohXuLJLmrHPxIxTvkMuOuopFLgjwYMTCdTWEoLQWLZZIUwSkZZvRKUWwgvk"), }, - { .name = IOV("bMONoecocbHaJMqJRqL"), .value = IOV("FZUeNBfjVawlunpwenxSAKkcBFPyrgOWfftY"), }, - { .name = IOV("cWQkuLvUozCyMVB"), .value = IOV("wVdpDLKpAvGPwylripeTGnbkQMTB"), }, - { .name = IOV("JA"), .value = IOV("pJBGFpYafyBjKMOaFlXtYePQkSfjLHItSMe"), }, - { .name = IOV("YgLfAkUDFzGnUrh"), .value = IOV("Uronap"), }, - { .name = IOV("Df"), .value = IOV("aYVvyBDxlVphcnGFuyphsvWSdLRVTPScfoSPgQMqeDLCeXIQ"), }, - { .name = IOV("p"), .value = IOV("dnSwfsgiTkiDcnbqogybPbfqKUfBDoFAInuYQyAckCznTndQptNcDPjgXrFwlhNjSIi"), }, - { .name = IOV("TzqKQzlr"), .value = IOV("gkyXpglQsgmPuSRylEAKOhqIDDcpncTZMYFPKSOfpmpKNJKyYYEdmbIPTNEVnStbCDMAe"), }, - { .name = IOV("KUMPg"), .value = IOV("JPsCMvSncN"), }, - { .name = IOV("DTWyNO"), .value = IOV("wRrYnOhFGKKEbNtmFTCfKvgmBABdGGzIzTWhudQTJuaUJQPCPDGBCHzOsPCjUIOOXjYriAuWkJKpcIdP"), }, - { .name = IOV("RAbYVIeFTqzakNQk"), .value = IOV("LGoNmFuLWTgqcuRuIxHcsBFqQiEUNmxnNwqdGydqrbexKNUrngBMJPwKaFDOaVInb"), }, - { .name = IOV("aahcXc"), .value = IOV("SPmFPkORPSruQjdQaNOJmXguLWNEyksfFBKmkEfsEbJwvNCuUaUeIfANk"), }, - { .name = IOV("qjJDLDTOsvhryC"), .value = IOV("LcaMieUkorpBOgNjkLYCFUgVVbnOuBLGONKKSvtWfyVqNwODvdVuYfbmuebbePYBNJuQLFIAgc"), }, - { .name = IOV("WTPOvKTckCNT"), .value = IOV("iEKcgfjExuzwNSfrlYolYyvCSuoQIDbSRcBcCGxjaoeypLsnYmmWUiKooiMsa"), }, - { .name = IOV("REbTUsgmxhirBQCJ"), .value = IOV("dKHIvikndOAdwvNfDasCZuIXAOgN"), }, - { .name = IOV("zHVMBVYIyjr"), .value = IOV("vLtKCymmxFEknzMRRGPNOCpZomNnuRe"), }, - { .name = IOV("gP"), .value = IOV("VKgHygHxugkHqFSlohoBOBMbMUuhMmEoauRepNANXIYRtbAYRrFdSyVkEqQiSvMTNlIWAhgsX"), }, - { .name = IOV("wNGJHtKlFePVxhx"), .value = IOV("CEddDmjkArkeDbsrxhvB"), }, - { .name = IOV("EPYJ"), .value = IOV("wAvJYkYLWAJHErnqJtjxPucMcXYfvqdzkOIbBgG"), }, - { .name = IOV("qbgyLVewXdRtDL"), .value = IOV("kOLjDAbjESpDlnsyJNymbNRbDEqBLgVS"), }, - { .name = IOV("zZsAamCleICvH"), .value = IOV("OfvirZlqTargVFwVlgXQnAALqrrKUIrLAKb"), }, - { .name = IOV("efbjHaPsIeXUcyXYQg"), .value = IOV("zeSKMBWsTfOIqvuRCxK"), }, - { .name = IOV("XlurpCxEwjVPvfcdHFl"), .value = IOV("MRufRGYeWVvZpRyQOKuBgrTodzxJiUGgsBGliDYUaekd"), }, - { .name = IOV("POv"), .value = IOV("DTvhxdOghGlfSmoyQQHYFmdQNZaBXuTkEqznqqVhGNYNGmgaUPrWF"), }, - { .name = IOV("FWNJe"), .value = IOV("ZEpWzDyiwmpyIkGNWTTXFmDhJkTbVcvnwpNJxTNaHjxLYrKyBCcinV"), }, - { .name = IOV("iKPTySyszpAKt"), .value = IOV("aSjPXINUgkJlocPEflNpGKXgwhBZDRUMLAo"), }, - { .name = IOV("PjKOcJcEQJzRrM"), .value = IOV("sjlFvzHqKBQFvpRrrcbyUhSGbDFfcsSgvLbnCkLUSlumOJkCDKwCjcoyrf"), }, - { .name = IOV("gvRsAtuNNLdSOzL"), .value = IOV("TgzlfNaLsAxPpMpvBmPmmCthBgFwaEjZUlIouVSLEMOcXHlPVsHB"), }, - { .name = IOV("GLJiwEwqcp"), .value = IOV("HccrBleSwrKMrrIVIzaGGaAAVUGRDUZgW"), }, - { .name = IOV("kjyLGENjUVQrHjygQD"), .value = IOV("zgnsDsEKDTUOAyfFqDZiSpKLZcZHHjVGqRNlVEtsgFZOJPJh"), }, - { .name = IOV("GcWTZ"), .value = IOV("QhqgnuDxiCgJldrShMXeVSpsRjClWUeSieVScSBgNYPHhd"), }, - { .name = IOV("D"), .value = IOV("BAISaDgCBNKUUemTvVKzxIgZzDvVYWLfIsZM"), }, - { .name = IOV("CiYNtLoiGZuLBVyEa"), .value = IOV("BsQvRxUDwlduAfUxpWiVJ"), }, - { .name = IOV("AAjxNCCrjkBUiylemWI"), .value = IOV("jJFjHDguJCeOVigxskomi"), }, - { .name = IOV("c"), .value = IOV("GsFNWRfaimnXFcHI"), }, - { .name = IOV("naFhZvJqswZNdxgDOYmX"), .value = IOV("CHPWmHhSiOZStlwYurBiERjFhkeIbdrHKObVfnJaiROIFkkLsnbVwphcHmjehxCFfCqjT"), }, - { .name = IOV("OpdhxkYbNezINKvbrir"), .value = IOV("eyhPHIHUrVpKLIaIIdThgiCdWNmGuRWUysleAraUqNzovpbtqPe"), }, - { .name = IOV("IKcWMZNZUqnNk"), .value = IOV("ZXVYqaFOluRmBZ"), }, - { .name = IOV("LPWXVQEmelwukEKxhS"), .value = IOV("EScKTuxYJLtAAhzQxFbjCLFraTKqTcvGfJUcMRGPLZShzyVDuELCRyZDxwBXXMXTtlbGMU"), }, - { .name = IOV("jXua"), .value = IOV("WoYDdXsPnclPLYPPIXbKNxuxX"), }, - { .name = IOV("FToaRBPjFzzjoqoWwPy"), .value = IOV("EKZJjpQCroSltLeOIjGDIAowfAjQRJGvOOGDCTREfKQFddmkjFdzopAZFbWqvHQrNwTiQwNgYUbC"), }, - { .name = IOV("pzo"), .value = IOV("EumZLrkBQUg"), }, - { .name = IOV("JFqYRCoSZmebKuoxZn"), .value = IOV("hlVlngJzNevChmYcyOQSwaJOQnaWDIPOWJY"), }, - { .name = IOV("EEuRzFJAyYhxaqmRU"), .value = IOV("RQfzmxrWEscAmqjGMiCJvSbJmRJNgVAXOvdKGTMzqTnJnWGX"), }, - { .name = IOV("tsRCyMMXQUQwqy"), .value = IOV("JJLerwYyeeywKJSRZFXJzYwEJuOoHakclVXEqwCWsSBQhqcErX"), }, - { .name = IOV("fiJwGK"), .value = IOV("cKKtsowlDwjC"), }, - { .name = IOV("JjFnFYUIyUhM"), .value = IOV("GHIwuBGfrugnI"), }, - { .name = IOV("WTqb"), .value = IOV("YpoBFpeBPcchMcJxRjzAFimSBKWcsGYbKBoPlxTiQxTWEWdJICTQSbxE"), }, - { .name = IOV("vNivAcOTeFHninwoDh"), .value = IOV("DJzVI"), }, - { .name = IOV("ncJBGtoXebQr"), .value = IOV("dkTUqlNPnPgHxCxAgdQcttAsVqHUtwBSXGRLhuZkjZLOpsUZBwFHijMdvGKPpeaM"), }, - { .name = IOV("kKqSaOwlDv"), .value = IOV("YwvnBqZTvuVZhSnE"), }, - { .name = IOV("VjKf"), .value = IOV("TxjwptDeVCaZsIbiabtKNUnQllrnKMYTYZfOUDBsbwiAIPSPQWpmmkUPRtgdZskuRZ"), }, - { .name = IOV("WTBce"), .value = IOV("sPMyqAtTHfKnLVsVCwZaKXGquLgWczUnpzWmkhLiwaeklAPnrXuVVLbjvuOCkiYoPv"), }, - { .name = IOV("JMnwMvXtzIeicoE"), .value = IOV("jzRPfXBtdSRbsCPjuNEttnDioryCmuvJQLRKCnVBlcHNGmeCfiUharBq"), }, - { .name = IOV("sYjJjrGltLpn"), .value = IOV("vsSnANJ"), }, - { .name = IOV("aLZMOS"), .value = IOV("lYxcSdBObhPqXxwTTEDarLFYG"), }, - { .name = IOV("hS"), .value = IOV("nlsJmDvBHdcdqdQwtYCeTBG"), }, - { .name = IOV("wcuMrCK"), .value = IOV("ZBbFlxPrkkCBAmiqaXucOXTqvKLMtHKWBxcTDnemBPNIsVOtGTRYIAakFBlFLMHysOtfGrpYGrLkYZpD"), }, - { .name = IOV("kTA"), .value = IOV("cPpYeYzXuucaQrTMZBHfyKotpKKcoMqu"), }, - { .name = IOV("WeJGkzUgqtIRKtoVqp"), .value = IOV("HdZxKdiyfSTQvljgSLJNdinrKbDvSqWEUnMSiKmiFGFKhxhzdrKMwGC"), }, - { .name = IOV("yfvZVmdEes"), .value = IOV("hbJsDSvtvTEHyDFPAXWZnLRsbmCjGyOUfzZgMcjVthxrhRlTQcLaomlnuJbhxDIptl"), }, - { .name = IOV("sjzeFfqplZIlriQqRDQI"), .value = IOV("EIeKMwFNTdojLirFXzHggb"), }, - { .name = IOV("hJEwFukfgbr"), .value = IOV("qXlQNWes"), }, - { .name = IOV("cObqeWniVxI"), .value = IOV("SjpCNlgZCdWAllHcfznxvDlruqHbNAvMTlUhiwULaHmOrcJiAcd"), }, - { .name = IOV("NJFCjtTStsKwzPZXz"), .value = IOV("ddaqcnYrSSgsEgWZCthwLmxshfNocWdWWDYDVdpnQmvBIgfdsbajMKffkNPCBZxEmlk"), }, - { .name = IOV("mXppGXQTFQEgYtAZNP"), .value = IOV("sgqskDodCPezg"), }, - { .name = IOV("uYOjAFLHHDLPXMfQ"), .value = IOV("HifoLXymBlhjhNeLDRirVsiSbrIjzGaTWQwIywJKCoh"), }, - { .name = IOV("gsOfvOVAUQ"), .value = IOV("xkubOsfJrfSDbgTIpdKQUFPfDCtnaxKwacVSURfAJcGCgLcvBnGYJPctssISKvERlVaB"), }, - { .name = IOV("Ujg"), .value = IOV("mXPSrNPufuXLnfKWUSHt"), }, - { .name = IOV("znvIKW"), .value = IOV("PxsdpApdCFDHPo"), }, - { .name = IOV("rOcFdyea"), .value = IOV("mWriqxrQtsCPsfozIoawQAbXiOyAhGAUMehToTcKYLXNRJdvojqPUWwWNsKdctcBZStmKGKed"), }, - { .name = IOV("dcwINhAQtzYUtwQ"), .value = IOV("vKXKrTpGvGwptTKcDNiypOGKLZopjcagBKlbMGSKvIGeuxuWJhfCSZ"), }, - { .name = IOV("FHbIzpmzlnQq"), .value = IOV("sczLpvuVUqRroXLBicrxMeHBjgkd"), }, - { .name = IOV("XRzONDFJKLuPzwqC"), .value = IOV("QLoFOlZayTQJTGiegBdjarzZWWSxNtQaJdDibZuORLXPzrTBIRpCYzpvLg"), }, - { .name = IOV("mwxiqlFdnaJITYkEq"), .value = IOV("xVrtqrebdEkHecICiYBgtpiwfhMvPZkfloRRNrEjkJlURhXgnettd"), }, - { .name = IOV("SoEswvPQV"), .value = IOV("DOKNQtSOLvnXgLdFobumJFuOlFbrBRFJhdldwMaKWPftYFNsbzKqWBFQIZeTVsVldjaVKkozzFunDCBr"), }, - { .name = IOV("uagPcwSvNXVwDPbhKA"), .value = IOV("tFWUDSxhmUBoDBympbrgFjRbVjppgpaVasDscyIuQW"), }, - { .name = IOV("wpjahpbSDwbpNMmSWz"), .value = IOV("OAIrwVaEbcZdqZC"), }, - { .name = IOV("yUiMZl"), .value = IOV("lGKnuJfEdzCgLqaihemmIsRvMqBWQTKUjdBxHSdRPFwagwLPdiaFPCjVfmosZIIDZMQivRn"), }, - { .name = IOV("CUZ"), .value = IOV("KLawTYJVGyOwqJPpQboMxHHheFROmuXiJ"), }, - { .name = IOV("cIqIiK"), .value = IOV("PsyzwPjCEvcxsOzNtRlCkZ"), }, - { .name = IOV("dRkJARjUWen"), .value = IOV("pjJKmylWrOCVsJqiGjqAudYznIjsiWdXLPrRjsVeooacYdLRSmYDz"), }, - { .name = IOV("WkJtQdSp"), .value = IOV("PNzyBxssYlElBRBjuFKdXyNxSMlmEhxLYqYJogZJeBaVwUnXcNjnEHwBEOqplQq"), }, - { .name = IOV("XsXIBgSltAmiNxNKt"), .value = IOV("HUWBaAEMastvjqGbpXCqWYFQbX"), }, - { .name = IOV("vwbULfggWBzQyRWGbrc"), .value = IOV("JPOoEPLdBKCAtxplv"), }, - { .name = IOV("Ww"), .value = IOV("LqGHyyZacIYYlzJEtIRyqaKgnUmElrjdadnwZEwZxEVhVaTIvtFRItfrjCvEgw"), }, - { .name = IOV("vWCLpMtUnKdWhaZSUJk"), .value = IOV("kiYquNfWECxamWj"), }, - { .name = IOV("tY"), .value = IOV("hDUuHWHYGCRFuYmzUrqFAy"), }, - { .name = IOV("vppabMuAnTIjeetkrSw"), .value = IOV("xuRjIrCLlTXjPccaejEVVLTeSYnXqPeRKBIJOdWiXBWUCrshMrEbMCSpyKTtrWUtOAsJUtyqFq"), }, - { .name = IOV("ijHTPGI"), .value = IOV("cNzbXYiCluMDqVYmhRkIqMmYZZIJPhprtyZivPPe"), }, - { .name = IOV("jYaMAmd"), .value = IOV("SlagJhorzmpVWouT"), }, - { .name = IOV("OAmUgRPMC"), .value = IOV("PbeIqfyySyEMHMNwFytumJbqvBp"), }, - { .name = IOV("tVfefUU"), .value = IOV("ONseqgzhUXKhZQegfYDUjOimglyJouzEraqqFIlUBJwVuYfdanaYsQtFVKMYROFG"), }, - { .name = IOV("ITZtp"), .value = IOV("SHiJZsTDOhZrIoDKtxByckZcSYzmbIbvmReYazTJlVvzayDSkvV"), }, - { .name = IOV("YJqAdzotVntkQNlB"), .value = IOV("YiAiuRdMLVsJIeUDNSpiZKUukOfvKIycbCPqyeWfhvVUrHFPoJNO"), }, - { .name = IOV("WezXHnVhKMSndJVGni"), .value = IOV("djaRFrJLsOUXVevFFgnfVXDPFdSGlWEnVnTkHHoZcXAtTBqaTlBgyzFy"), }, - { .name = IOV("YemKwKLUBYiKOCAlz"), .value = IOV("CQCYRJkxpQegLcRnILjHTUOwlqjXniyR"), }, - { .name = IOV("eQXvOKQlbAyDJa"), .value = IOV("HArzvxVeYkBHOKuQJEVIhnZMQEBxCEIeZNfDSxvgoDSwXhSWFAwwYtbeztDstGTNw"), }, - { .name = IOV("kveYIbiDhvROVcqN"), .value = IOV("yAZQKpFuLceVZjRxRdWsSouxhSDrtUmUdhQaeUimRpgeIbHKWY"), }, - { .name = IOV("RqBxCsFJOoVqN"), .value = IOV("ruMTcjGuaMZmZTqNbVeVZohnyMdPGEJT"), }, - { .name = IOV("EYfKFmrnYmp"), .value = IOV("hgKRoiUcPFQutohffOKXjzmFzTnDQejXnhGRBUbHmejLDKQcvQbAQSJvdPsBuZCD"), }, - { .name = IOV("xNlhWOFnkygFDPCN"), .value = IOV("lFRzieQkyKPhRYXdfrcOVXeZjHLejEnjIiATMDDhNalfZT"), }, - { .name = IOV("BqeAERbQYcRgIOlaXwq"), .value = IOV("jvkWtTeLeNvgxWEPIPeWepEbvqiNUfdzGBksUowmDqLrHxWgJKhsxAVSpOFhw"), }, - { .name = IOV("mEEmQhKZKogqKKL"), .value = IOV("CmGtlVvDBgvVNBYmsGgLDmmLDycQNkQZpthumUWEgQALfpsYLehFsGWsIUlnQznjWtGacmlvFsWXfh"), }, - { .name = IOV("TyZ"), .value = IOV("ZvNDSmtVUcaktPkPqycJWiEnTMK"), }, - { .name = IOV("ZRMIlSOCRuGeWrZvCrv"), .value = IOV("bLwLqcXLOVAXSJRYbpAeKBfWNrdZPvYykDSebzDDzxWWCdLdlSPuIxPzeCH"), }, - { .name = IOV("CmCBZSWNmtwIYnj"), .value = IOV("SUTdKWJvXdZcxJaMnLfGIvwkhmkElrMPXEohwGpIvPDMxGcUjnsUhEx"), }, - { .name = IOV("aZ"), .value = IOV("ZuRLvlChCEWVNKNlAgpMXynptlaaxF"), }, - { .name = IOV("CZb"), .value = IOV("XOYhJkKGEjDIdPuHvUncxjqTNPspaapAQWAZdEFOthzKNkzJwFmbbOBNcNxKwYdZ"), }, - { .name = IOV("WfqHCnBkkWzHPw"), .value = IOV("eeOCvVFJjgkVBKsEuPVkGMgXcSApHoDWXh"), }, - { .name = IOV("pqZZzUeTuZomJuFRAB"), .value = IOV("HZhPatpcfdtBNccwvBxnCKePIzQntL"), }, - { .name = IOV("bzqqeJu"), .value = IOV("YOwxIfWD"), }, - { .name = IOV("LDcvzEbJnevAa"), .value = IOV("JXlCimTHMYyhkLoirwUVxRuRiWjaJqeDpooFPcvqL"), }, - { .name = IOV("GiqUefAyGDIhxq"), .value = IOV("OpfnA"), }, - { .name = IOV("EYKffGPCOt"), .value = IOV("dmiGDSJxcbksAxigChVGk"), }, - { .name = IOV("cHGwZBaCr"), .value = IOV("yhFZSuunftczpQtqmWXyxZSKuZsPVHcfNIOazCESiHeWhwDEvfaDPjPTEnLVEZi"), }, - { .name = IOV("jS"), .value = IOV("lMzUeZefZbrnyaEQIIFTzMvMzaVqlYuRbfCzUBiumTCnLMGFLcQeZDavqpnHYhfiwifeTOgiRIh"), }, - { .name = IOV("aDYWTNNJFEeKVSa"), .value = IOV("sPtnXGQWflgfJROpyFxpoKinyzTluJuJkWoQoIqGnqdLQ"), }, - { .name = IOV("y"), .value = IOV("oxgWVZdMmQaosFObCuXanyPSYvOQVgUIPdnFiNpnMupXpfpzrLlouXn"), }, - { .name = IOV("TbDSUauQoQQySXIZggu"), .value = IOV("keoUhHGrVMJpOFWczApDAtDrUzaaowtSIuyYcoUynvPRvKghvWjEqIZLyvNO"), }, - { .name = IOV("bkYWddZVZmZRQjKy"), .value = IOV("kQTnhKowgchBBuA"), }, - { .name = IOV("esw"), .value = IOV("rmRItvvVIJxNmgYHacDuTwL"), }, - { .name = IOV("ShYKOLPWycrbmsrrAoE"), .value = IOV("qoGwIaUwtW"), }, - { .name = IOV("CvbQb"), .value = IOV("IDUVplDIeSNIwsTfwZLbsPQHopIExgrgBBogx"), }, - { .name = IOV("DpRfjIZLLOPkKBTRrPdu"), .value = IOV("yDdsr"), }, - { .name = IOV("gLcZQPzOc"), .value = IOV("vrbRwkUAHNYQSrYHBzoVdrtdOMhVZdxOofekFiOGHzkEDrjaUFffVuxyZvVaoewdYyvfDpxXNvekjRVL"), }, - { .name = IOV("bgPb"), .value = IOV("qqLR"), }, - { .name = IOV("luXrTgQATlgxATrwAM"), .value = IOV("kOqxViQvBNWUBGDnqkZWhAiVrxo"), }, - { .name = IOV("kmSOagunDgfOkBIZuaa"), .value = IOV("KZseNpIyRujSEPausnmqIPnSLZDmllZqGObVGmlvYslgUoOhTrPqeGQFtOQpppqBIsdLwxVkOA"), }, - { .name = IOV("DB"), .value = IOV("hbtcqmvkyMIrxuHaTBVCcqloqzFsXcnpjwJixLVqiuFiLfRUiJKQEMkCnGwTdLYllVIyVHP"), }, - { .name = IOV("fDwXMlzUvb"), .value = IOV("ZrwSLlFItzpzKbJDFlrRqKBiRHdYGyMjkfMuBlAPzsTKFdwFaOsYOQyiNGBeCExnkvWGNAzqEu"), }, - { .name = IOV("gdUPPBUeww"), .value = IOV("ZmowwSExrKIfrMBAUHzcodlHUgGgONSLOCzQHgGtVPVxjXDKkpJIZNotYNxJoZdbIkOyvjaXslO"), }, - { .name = IOV("UgLdZDC"), .value = IOV("fuvOCKySniOEtErHzsrBTwKRFNKwebzVhfVPPz"), }, - { .name = IOV("nUfyxzGrvjNolpZ"), .value = IOV("ZcuIlQKFEcKvlSsXbTaRUupYfnydEKvAWEYBeqTJVqziCQtmMhDeSRMuBpOqfr"), }, - { .name = IOV("gRNambEGhDUWVf"), .value = IOV("dOFlWPhnPrxsOiXCIAgpq"), }, - { .name = IOV("t"), .value = IOV("SVlBuhmEfwSXOwAxkGBYhRNReTqDUrq"), }, - { .name = IOV("XUIUJFfs"), .value = IOV("AyNzwAEhzVjmXNlkXkfoXCerenksMWKajkFdflfuGb"), }, - { .name = IOV("EKBnKI"), .value = IOV("pKvWoWINLmxFojnLfJgQjNBCaQyWtR"), }, - { .name = IOV("WsUAGkRwlWGH"), .value = IOV("ZyDJFPwVYXGAXvykiqzVbWUrozlMJWkNYdGcNIVOwQSwkccGLegzdHZvZjvFinKXVLZc"), }, - { .name = IOV("nwZRcXiwbvUjCWEv"), .value = IOV("dMAevbtuCUWuTFfBMuOfIbOauNPrYqhAGtFtMUREzalLzp"), }, - { .name = IOV("jDHIp"), .value = IOV("XUhxAbBIrKpIKtcCtqLzmheyUyMQGJcISYoSUGmoJtDzChhDBeqfD"), }, - { .name = IOV("qqUWmzPvuXVEdkVNjCy"), .value = IOV("PhLHCREvsllTzKhGtwxBTeursRtZzkCddSoPkmiMekBrRPL"), }, - { .name = IOV("LnZopNRfTBpowPQaZj"), .value = IOV("LsfynMxFWtIIzTUXenTlSnHELIvsqnfNAUqoajtEHutaqYnFRRfruDwKMhtMDcwydPISAwOK"), }, - { .name = IOV("wKYcN"), .value = IOV("QaclzwqvLmvUdfmAHMPIUTlIbxsVUzejg"), }, - { .name = IOV("NTfTcAoLAbrzosc"), .value = IOV("XCaxruWDMGuokneInnwHtxyzWVAuVolmEQ"), }, - { .name = IOV("csfLssYdCdyR"), .value = IOV("PSYdFeHBVXngTlEUfUfboaFHSXZkDfYlrevHaEldDqUNmQzpfwJzVhnaazEKZLbgbNmdbHBSoVjLL"), }, - { .name = IOV("Y"), .value = IOV("xGkSPbcuJpvUeskYNYavofvwQbGbOqTYHkJGTrWPHdUOPcKdIceUsrmONliNDwbodukMgdNCY"), }, - { .name = IOV("QkLvSMSwkuEgHwStrw"), .value = IOV("vPUFMcXyxvjseqDHHafeXJWjEQSquOLvSglgKrmDCerWEpPmYOtldioapVkWwxsuuRbodfmFcaOiv"), }, - { .name = IOV("nkr"), .value = IOV("MhvpalRHAhCTpnIyIqtHGVIXDcWLGILd"), }, - { .name = IOV("tTPvCXeiEkPB"), .value = IOV("pVTYapAKOyYAEmsEwFHg"), }, - { .name = IOV("z"), .value = IOV("nnnsQbFhgApcFlQYsGTXjRKEVqRuseEgkEtftNafLEQPpcIpiLKjfWCYZiekTAxF"), }, - { .name = IOV("oGXSaBbeT"), .value = IOV("dhXsFxZqGbQAAnhPnzJcmfyUEnPkAMTYLMuzgbVHIMQdsYJtf"), }, - { .name = IOV("Ua"), .value = IOV("HtKUXMEJxVbsCqTNsxkUIA"), }, - { .name = IOV("bcDTTzu"), .value = IOV("xhwFhxdxmlWyWFostPiurJqHxPpSrhnAHnfqfgjpYaGJxmGJvBNNstsxibaGrtFfuSpi"), }, - { .name = IOV("CoaVaorWwnjKhMafZ"), .value = IOV("VHMlktQeTRkexOUR"), }, - { .name = IOV("kmNgnpHzqRwfSDP"), .value = IOV("RpmCucncicmgznyWPhtSKYYjTdKLLPYmzqIhIBvCGejbwtkyHIVt"), }, - { .name = IOV("UnnhptrBpGWXordQk"), .value = IOV("aTyTApfetQJeOtLv"), }, - { .name = IOV("YtGAkppSRhLnMBi"), .value = IOV("sHaHunzXNyShDtjaZNeNfifDux"), }, - { .name = IOV("wBxloetJJsF"), .value = IOV("GLFXTiJYjRhoekFBAimfu"), }, - { .name = IOV("kEyEmlLNOkWQtSLrK"), .value = IOV("WNIzQtLKTBbWLMnquQrdAtwBqkIXtyeeCjjfDLKyaYlN"), }, - { .name = IOV("GRDIzoFxZthWUvtA"), .value = IOV("AozNfkIpzRSGsayLPGMNKjFSyiAELHDGflmMSyZsmtOPwkvIqOyiZgHdwy"), }, - { .name = IOV("WiPqmcHDUTMOzDKUAadf"), .value = IOV("xjzKGNdRDrLXCbuCzZFk"), }, - { .name = IOV("JCfjYghLPifZotsAsnR"), .value = IOV("dWeKVLFUFjRSOpnZHyJhuFBZzzoEcljfxprRBF"), }, - { .name = IOV("sbkUzALyjDMduQJ"), .value = IOV("kPTHemvRjceUfpdQxxrmpJkKxooTaEEAcQd"), }, - { .name = IOV("TNZ"), .value = IOV("AOWktqXgCkdwporAsMlqqYkLxiHubTVceIH"), }, - { .name = IOV("HQJeDGBNgXXHdSGyXj"), .value = IOV("Tz"), }, - { .name = IOV("cZxjXiVy"), .value = IOV("kGPLRqjWSZmHfqyviRXvnzV"), }, - { .name = IOV("yCr"), .value = IOV("XletSwHlKjAUahPboWjmhIVLmpLmCVtoZDEWizvwA"), }, - { .name = IOV("lnVcBZzzOpWT"), .value = IOV("NAgtkOJhOlmqkzSnhXBuMjUmtfYURfBCoTCKQANUcbLHXroLZrAmUcZu"), }, - { .name = IOV("NeNPebFSapiTIHvg"), .value = IOV("MunAXVNaRxaDIRneChGSqoJPInzhwuQjVskUWEPjxWyllcsFqwznaheYAUzsbKoIGKZ"), }, - { .name = IOV("RuprHLYWV"), .value = IOV("nuJHImpONbZKCkFeBbDWnJGOtTBrwKho"), }, - { .name = IOV("r"), .value = IOV("NVLXI"), }, - { .name = IOV("SmudpJkiFJHwZOJE"), .value = IOV("RGgQklEoYaRxImLkzozzOgxpukJivMc"), }, - { .name = IOV("xeOzprscJfHsWZeCSaJt"), .value = IOV("EdX"), }, - { .name = IOV("Tt"), .value = IOV("dTVHSSZNjHFQnjRpKSUvSNGziPXGUOmLrEcGrevaffJbTJWkBTP"), }, - { .name = IOV("GFAnDmqbXOm"), .value = IOV("hRNwgdoItfIYzjxAszImKEbwmaFNajFgDyIBYppfeFScZdYWTRUKsOhJXytMCyaNMqchpWZKROfVNe"), }, - { .name = IOV("L"), .value = IOV("KHeeaLtjdIRaycocbREXsbplRFscXBvcHmQRwYuQQtvjg"), }, - { .name = IOV("DHbW"), .value = IOV("UagQlAFyMilxlXkOsDZQRHx"), }, - { .name = IOV("V"), .value = IOV("AkdiVqrGbRFGGxhGfwHYmOWcYBVPFXSQLQUGHzBQkndzGbptadEcdpfUd"), }, - { .name = IOV("fxrUdZ"), .value = IOV("pzjGUgYMNFqHsghYlYWZkgtOBRMrqTDEzfPlipvLDtoqApdVuwStYwFfowT"), }, - { .name = IOV("ZbcPP"), .value = IOV("WshnkVVZTYJXgccfWVKPBouEKDfmVCgKNsiEVbMoRBJQUBuTqNLCHmKmsXHXW"), }, - { .name = IOV("MwKcabdmrlbl"), .value = IOV("DSaZmMBhtrzfTsWbmCKgtUchXAxDkhaIvfnQDIXIvJbcUP"), }, - { .name = IOV("BOWeaIjqCWjqLMsw"), .value = IOV("RFKclTECJaxiDfZEgk"), }, - { .name = IOV("q"), .value = IOV("mfRvHGpeMgONUnwORoTTUfoPEZBEqlGnAnnPFHcEiOwMm"), }, - { .name = IOV("sitTGWEyuzHgqRr"), .value = IOV("DZHMjNscDYOyADkPyVlQCUVfKnPSyUA"), }, - { .name = IOV("wgHYyvARYDMkXXtUCE"), .value = IOV("msdPosWMWXHWDXUkAzybWCJedTHFHlhIyodfOojSgkWRssiwNIvlYJRLeWAzEdDty"), }, - { .name = IOV("azXSNWXQmgdMRtcyo"), .value = IOV("roZN"), }, - { .name = IOV("lATewJyDsbuY"), .value = IOV("TGCJjltdCVzqmybTNHWKQrBYDuvyamYNtieiuEDWQrkPxhxvPLPCLJRIJRZNlixCfDSFyZganHp"), }, - { .name = IOV("tyIUuQxVweEaJ"), .value = IOV("INIowBXJG"), }, - { .name = IOV("eCFHuptrAmdOKFyvTxj"), .value = IOV("gFncNWzzDqMwIfQeGBraQGfoekfcVSQtHpNKIkdqrPpUeycNQcrsUN"), }, - { .name = IOV("bxSEL"), .value = IOV("RIphlEQpVrlrxnNHNAMpWdehbnomKNPRaXdUAYiXKuOKFuNLONFkuBRPJJQmjOAxwhRcYXhhowERu"), }, - { .name = IOV("wcjYVtcny"), .value = IOV("KuafCgdxWVLratKZImSjYVPhmNYluWcPKPcTivpxmuhvGFNIHDBRLiXGedCfDPKzmivbljhJSScG"), }, - { .name = IOV("xBgazEQgVvsB"), .value = IOV("LCfjAipxHNPAF"), }, - { .name = IOV("WxxkdZvWJfV"), .value = IOV("KmwdjfCQP"), }, - { .name = IOV("ysEbo"), .value = IOV("bXCWazWyTlovnpTsVkRwuaoYfp"), }, - { .name = IOV("EYoVM"), .value = IOV("BRwkOzMSrgRJgFWYNeRvUbLpanwFBnr"), }, - { .name = IOV("nYNsmZJZpPQ"), .value = IOV("AEQCqIwXhGAdU"), }, - { .name = IOV("siM"), .value = IOV("ypXOuhnCekpbTAY"), }, - { .name = IOV("ELp"), .value = IOV("qt"), }, - { .name = IOV("cjzDPBwZEbgDQV"), .value = IOV("bXpcBByLc"), }, - { .name = IOV("RNASTCp"), .value = IOV("SLyaIjPFckMuEDUDRKxUgSLkBnTWMlDgCsEWmSljntYRcoS"), }, - { .name = IOV("aNUEVAN"), .value = IOV("sYBCrvsRVbhrPReenyoPdKQ"), }, - { .name = IOV("uUrYYkPyTRAM"), .value = IOV("TrjNTdXJdFfCecNmB"), }, - { .name = IOV("KujpzzlyUWWhbDBs"), .value = IOV("KAAHhbDmBHoETtdwdWvMnfKAgkwwtEZTBxfxOoxveEDNMlxJ"), }, - { .name = IOV("DlSbcvjqKA"), .value = IOV("lNkwDbNYNlhpcmjtvnAIPMeQUdtdQVpOpJYqMobiskFSCSBFFlIqpGipilszXwhkYNulxCdJxWBtj"), }, - { .name = IOV("GZnLLExR"), .value = IOV("vbVWYgSQYgHsqqYoDpwNVBjVuWkVovmTsoMvqtPIptNYRFxnvm"), }, - { .name = IOV("rV"), .value = IOV("LmFQnruMNzDmWABeCdXhmDWAUMaIeKSQkeIoxmZHoYBsrNweFxBKQNXtOI"), }, - { .name = IOV("CXYFPPMZ"), .value = IOV("e"), }, - { .name = IOV("zkXUcWPZV"), .value = IOV("VsEnjahuOniXzQdKpwRteyqSYPNZifyqLyL"), }, - { .name = IOV("e"), .value = IOV("IyboOCwIsjlsfUGqEUEDfKGBgPnIjhQnYErq"), }, - { .name = IOV("rNAMgtUkmyHs"), .value = IOV("KXxFyqVyOOHXDsGkYiOJSYDmEUoUvFJanXPmxaOaFHvJirCnwjHzUxCAuvm"), }, - { .name = IOV("RgQD"), .value = IOV("CzgwJQPBSSOGcwkSanOEgyKoeqelsgtaUGKChZmfGqHjmPyqaHHFmWWX"), }, - { .name = IOV("GLMpokPrSiyWr"), .value = IOV("xycNYUjnPgnwJzbCJsgydGBGSACIYBfmRaODmOZDgAjXRxdEftdDicTAVREFmKdlLEvCypuzxAux"), }, - { .name = IOV("AUIhVqwk"), .value = IOV("JDxLubiQmFOUdaYFVZMDRcZbFvjevILMNFZSBfkhG"), }, - { .name = IOV("Fx"), .value = IOV("jzafJUoGargrllyZNI"), }, - { .name = IOV("nuaLcLzcWeUI"), .value = IOV("XmEYoMvZpNChFtCuAEvuJpqnKxHyNZUXZYfoWOmqiUqQYxLUKLqBwdoUCs"), }, - { .name = IOV("fGnuwvpOqMKaT"), .value = IOV("KunOKnickrqfkHKfqEbuSwiXPhrBQTwBXbuoKMDRgqxsAfrAiiSYG"), }, - { .name = IOV("zRSQR"), .value = IOV("UlFdaoSsxiguxuWJBWlKzMEynVnnBEefptdnPiadcZZhgPnCLkkPckEgNJKvJZCj"), }, - { .name = IOV("yWBUFpIABLTCFn"), .value = IOV("bhjTFoVyuPkdjzUYhenlnWNnXoVulimhedfjBM"), }, - { .name = IOV("sVfbVrzpUQjcjV"), .value = IOV("MWXau"), }, - { .name = IOV("xXETsYHbZfzGb"), .value = IOV("AHyyUNXkUzgAPuluWcPpKocZ"), }, - { .name = IOV("KCIxW"), .value = IOV("PlCCbUbfIpGtleiErJzIstrFqjDeVEkdALCfRPsxAcbTTzsjnMvfaGM"), }, - { .name = IOV("KWwrn"), .value = IOV("RXiUrkwqCVaNTSruT"), }, - { .name = IOV("MrggUyhtcTsaDhxqH"), .value = IOV("oCeFXkGyIEPNvfhKVzTEaysbgTfEsNpiiRpNiYlECOiNDwTTMpKlKiwhVo"), }, - { .name = IOV("jsOma"), .value = IOV("OAPAvvqocoRDXoGRQgXpwldUnSZYUVhIObQrTZFOXYxq"), }, - { .name = IOV("ueYLZwLsqMc"), .value = IOV("TjjvZCJBmKogzlomg"), }, - { .name = IOV("nE"), .value = IOV("QdiZqkmHaKNyWNDmfWajjVAIMiyCXUClJcPrvOazWbJYtbeEVrGpgOLozrZMgUqOrnSejjzKLnRUryvp"), }, - { .name = IOV("HvxFDLrhuKkiOgIsy"), .value = IOV("uZTECnnvjGSyJyBIhhUuaGmWqsAIGElBpTHxlqrHy"), }, - { .name = IOV("BFlBJvaOqAOBUahSLSu"), .value = IOV("PaNIvDGlaqMBywgSrUprlmihmFbywMyfzKI"), }, - { .name = IOV("CxYQSJUHIYhigm"), .value = IOV("uyIqvpAM"), }, - { .name = IOV("XjdusXbBrE"), .value = IOV("oNfPNfXZkmpqbOogxwWNwfQ"), }, - { .name = IOV("lw"), .value = IOV("JwCeYbVBZggLGDrgYLFtEFPLdJJmghYjeWStDKFoVb"), }, - { .name = IOV("mszeVaPXc"), .value = IOV("owSTEGlKVppOYnkWnLyYcxECTAEtuAKymZKCrCQHMOaRpNoSWDASAMDPtHoytVLbcwqqdN"), }, - { .name = IOV("uIDcoJdCyYGRvJc"), .value = IOV("gvcRdkJeDmcvUFnWCrG"), }, - { .name = IOV("hajXsSmFrt"), .value = IOV("qLlvFIGybuJqtYAomUPZJqBFwJtcRVNyeZBAOOxQlUCkUPZeKIIbWWVCrVlFyHBBwKNIGwbouxHjInRx"), }, - { .name = IOV("NBVqCGnWCqSLEptext"), .value = IOV("c"), }, - { .name = IOV("aqmkQMpuohmSKtFbEVRQ"), .value = IOV("MZAbmfQZMjhotTrfaaUASTXcjuiBRLKRBCatkZePYBBI"), }, - { .name = IOV("HJLciv"), .value = IOV("yzKVstEJSkRXfIAdyfxBYYcqlJhEFwgRusEcVnlXPxMVLvilDzWeI"), }, - { .name = IOV("PqudH"), .value = IOV("PqGPtPvrFzwUlOZDUaRKMbFqDzWybfpFToVKDOHEqgZMKaQdhpXvjeMIkjEYDAENRPrnLKYaoPuSC"), }, - { .name = IOV("SmiMLO"), .value = IOV("FpFEgeRwJmLmHIxdWJXDOuINCIrErqxKjVOCMkNsjyQBdGBryGxSPluIkt"), }, - { .name = IOV("VjJAtt"), .value = IOV("ioEyUtFnPqaYaAkb"), }, - { .name = IOV("hmga"), .value = IOV("QkMRpGofgySGhQZznRhXRTEHvRhnvmUNSb"), }, - { .name = IOV("cB"), .value = IOV("nmzwQFEislrJCYnMnzWcHJzcZkuVXCXZLJmImHkKNXeokZUsimsrmPsSnVWDYxc"), }, - { .name = IOV("jWeeeEbnfEk"), .value = IOV("jtNDNTeQOLVYPXhIcgUYiaYQYwuPLYzbCoCgFSwjzwLdqVVakLROojRvoQeGwFuFD"), }, - { .name = IOV("mFqqOhwVdknYB"), .value = IOV("EhyxDuzwRifiykfgSodkQComrlOultcfBcaclGeKENZyZFEDtrxIFdaUMoDQJgJgYNcR"), }, - { .name = IOV("xHRofQuqSWvBCf"), .value = IOV("CakQxgdVwXsfRZeihNnyIsiwqywQFHbVFZQ"), }, - { .name = IOV("KyQtCrUYBztyQUGLH"), .value = IOV("sTFHPUIpTEYsQHoYNNHcZVNGkaheMIpnvterADtxO"), }, - { .name = IOV("TpDhLxStLIZDw"), .value = IOV("TWQBCIQXdLkqgGiwgztVU"), }, - { .name = IOV("IiJiyVrIgTSJebfwvEhJ"), .value = IOV("QV"), }, - { .name = IOV("Ob"), .value = IOV("vOWSmhNefdwLcbeBOBgvfkxQKOuwdJubdozpYOKFTuGGLOLoPJoyorsZMQQIIXEUamGZfdQLETNYD"), }, - { .name = IOV("kPBqt"), .value = IOV("QaVnRhxndBESuEKxCXWBjLPpMNQu"), }, - { .name = IOV("qbpiPaMuMnIS"), .value = IOV("IldTIGQgQKahcyjlcETqTnJbHNVppThqYrfnJOdYzOuCLjznuOJEFyeEsZaGRNXPTOJMqWdTjNK"), }, - { .name = IOV("mzbYcEJL"), .value = IOV("gFFfwSLZs"), }, - { .name = IOV("VftZZEJhek"), .value = IOV("WCrfOXItybVNZRJuEsPODDCITHYfouNOSEEiXOkGbHlMyIxyhSeNfLlfdlM"), }, - { .name = IOV("Pxx"), .value = IOV("JoXuOLWEQasGrVKmVNIaDSqWApSMMyVNfcNNeXFlcLRnFgBCOPjO"), }, - { .name = IOV("zCpzcScQhehYA"), .value = IOV("VLdQMTUJyCckGojYPhQVEsIffQiQWhltEYZDhEqXtqAbMmuEvNYLOdUJcKixXMCixhRAB"), }, - { .name = IOV("Lz"), .value = IOV("qzGOxlgfdJBMuIdVBFlpQTVERhfO"), }, - { .name = IOV("ZwPMUtRru"), .value = IOV("fxdfLnTWErULGBZeqciEdydcffuhaHfYGqYhazcRnv"), }, - { .name = IOV("q"), .value = IOV("sCcRhzaIUYMXkod"), }, - { .name = IOV("RNWiwhsUo"), .value = IOV("TeWpMubUBfFJOQfYewR"), }, - { .name = IOV("pLt"), .value = IOV("OlVDrigCaOvhjQQpkBKozHqhYzZzpZpjqloZWBAFHdDmFmrijVUUigZxitWIEOCIoFgujhF"), }, - { .name = IOV("fqzGnV"), .value = IOV("AKmgBSsgOnzFkyajUamZYQbXzmKgZFjAnLGaaEIZagBCwqLRSghOYxhqucDm"), }, - { .name = IOV("hYhNnFOG"), .value = IOV("bJFgGmFUsATcqnRjQoCpxFW"), }, - { .name = IOV("hpEwuLmwjf"), .value = IOV("ZNYiDITzviZIidrZnfwWoNhleyLnJwipspascbgTkccqBIettozWbytNfSvDGNrkXJwkBMU"), }, - { .name = IOV("laKhlok"), .value = IOV("YyoogdYsxlQfUeHJEqmRzMKtoUTRPTPQoRyCEFSlOHhlHMNeEFeYKutj"), }, - { .name = IOV("pVgivKUIIihbfRKEnbQO"), .value = IOV("EljbkVdIYuUXDlasDzLhmVrQiwSnBrcQjCqGiIFoPjmvbnSYXnoGyNeTmLYOrcPqwJru"), }, - { .name = IOV("ovVUxUnwcWfCsoQx"), .value = IOV("oczGhxFtcGmficEnVpFXWpGcFGJIsivEUZzpbYbHhxCiuJMwarv"), }, - { .name = IOV("vITN"), .value = IOV("TYLMERkUExcfZhTkgQkLXBMKfnwUqMcSJQVjiZ"), }, - { .name = IOV("ONMcjqaJkrlxcbyxbXKY"), .value = IOV("FFFnNZFVTpePalQgVySDYWwrgDCbKQBEroeqhaDJZWxtTEcDAHIEnHwnItjlfPWrSMeDsdhZZyLM"), }, - { .name = IOV("UgPzBieLlFiQs"), .value = IOV("LrDwpmVNZLOwUlCHGFepFFznrLAalTfjSlmOnOFeuhYxdJZlSVkytrenzBNFgQvZwGWRXZGwQ"), }, - { .name = IOV("vACMl"), .value = IOV("uKjWix"), }, - { .name = IOV("YiTQSNsryqf"), .value = IOV("YaFTInJMQuJvvjEizBkHMBHzsxImLYWIIPiHBmjeLJaQnKliDSlCpIO"), }, - { .name = IOV("oUshIiLOXGSLOzcWPVOn"), .value = IOV("rwyyWjUxRvjmpZaHOgqSMACejTtletaNpOuTYDkEzXzujnZrL"), }, - { .name = IOV("fpb"), .value = IOV("nCoeVzqiBzCMKzpwZrYZMMaRsCQpVBDSJssulffSSwlcqNAgBZtVwnPFOIacQHe"), }, - { .name = IOV("MInLXiQOCVVWGrjPPf"), .value = IOV("IiPtAuODbQsHtPaFfi"), }, - { .name = IOV("ccLJrJMOhTTyMWnsU"), .value = IOV("UfLRJwzxDowIvyNZEKQmMtcABRYWYSxdwysMchNRU"), }, - { .name = IOV("tTgfhz"), .value = IOV("glJeOWBnZFHsIGbBhJHqAmMpYbCWssOMDMZiBQuCAVQbrUpXeUpEK"), }, - { .name = IOV("xvevlGT"), .value = IOV("qEMZXIccaHVbuNsOVBvJPXbzotewUWt"), }, - { .name = IOV("HHkPjlhkuH"), .value = IOV("uBBgvMThdbfcLuJGBzKqlyOYythknHNYCgFJyIkzNOmuJdNjdHQJbsyqdfsmvglQEqrvzlY"), }, - { .name = IOV("JZG"), .value = IOV("Q"), }, - { .name = IOV("WfsUAxepKmhcP"), .value = IOV("iBalIlCmlgAdXCYQXZFqKnSQ"), }, - { .name = IOV("EZWjD"), .value = IOV("DUhlymDyQqpHKvXsecKqzjUvaICqAfBmWEOHSkIGlZFpnmYObAmRtYANXm"), }, - { .name = IOV("BXaojj"), .value = IOV("eEtTjUJeoVscgEavFlc"), }, - { .name = IOV("WyMxg"), .value = IOV("iDVFl"), }, - { .name = IOV("oMYuLQcVcm"), .value = IOV("GHnpyiSJSFnuMEvTONQgITzwigBMvnHWESdhTOuNmcCdFtMAorfZhuAkUih"), }, - { .name = IOV("CGdLTlHRoHYCslvPxeZ"), .value = IOV("SpeP"), }, - { .name = IOV("yxFvCSc"), .value = IOV("BZJHvYIbhJlTNtwOMKwbjYFFlY"), }, - { .name = IOV("zDk"), .value = IOV("tnvNmZqtLBUxAQMnfRHc"), }, - { .name = IOV("qCaNZAqeVhXniCfdE"), .value = IOV("VV"), }, - { .name = IOV("FxtvKjgfmQin"), .value = IOV("qucttfPjeNNJNdQOMVSHlSfK"), }, - { .name = IOV("iwOrXqwu"), .value = IOV("qnnqHhsslvCHJJglzaqNsDdiC"), }, - { .name = IOV("iyFbxrifkddxhOltu"), .value = IOV("zEdF"), }, - { .name = IOV("TSruaNbPlbeMqUgnLRIq"), .value = IOV("stemDAFiIGTyHqFdoOpmMRlfEnCcTWvVlNlfOeuHSttcvTbDWrTnELUNepakkYFwgJKToISftwrUPPU"), }, - { .name = IOV("pNPUHoKivcaDEjSsvNXa"), .value = IOV("xButwFrsrFFyKfPuYnVsSmVxEXQJzMbyXARgyCVlOzcYdImg"), }, - { .name = IOV("GWjSCKVgHdm"), .value = IOV("Cd"), }, - { .name = IOV("WKslTjhi"), .value = IOV("jaPGtJYLx"), }, - { .name = IOV("GNTjzGY"), .value = IOV("zKCVuQqxMhUO"), }, - { .name = IOV("g"), .value = IOV("ZxzCPEYLfbEeccSUdltlofjANZdNAOoIfxKmobuDRZdtfKOxIeA"), }, - { .name = IOV("EWDufXt"), .value = IOV("GNPjANosOQHUwMvlBxFQFkkfGbKcEk"), }, - { .name = IOV("VHAZ"), .value = IOV("ZdkRnIdZYmNyFUBlcRcB"), }, - { .name = IOV("uqBBXQmAm"), .value = IOV("dhlgzsLhbiTRYFTQQpIFSCTtvufcbQMGJOzqcdwYozFEPUtIFrdtrYpVKmuQjTagUW"), }, - { .name = IOV("TFUnDGyahINlLXVFalzr"), .value = IOV("iCOMceaGMcYBOzSnqKYYDRcgG"), }, - { .name = IOV("IKTlwEQYQrv"), .value = IOV("pMyJqSAOhmdKOcYqCoIzqjigBCnBlPpLX"), }, - { .name = IOV("DLkzGYWyNx"), .value = IOV("ySJFjoutNuavXCoCnSMqQrhpPeUqwJLtixeBqUHZw"), }, - { .name = IOV("nae"), .value = IOV("qGnNUBMhoKIffuhrrKGdAKmpRiPvWqySkRhnufUtJMLYyoiSSGijvWMLQNSwOIELUTPPmsRexFjZts"), }, - { .name = IOV("vyXWGXEurQqBxp"), .value = IOV("vaVDZsxUcphryrImQqArjoMkzOqvYhkPUydnp"), }, - { .name = IOV("YpTliymBkFzzu"), .value = IOV("rBCCExPzpoKbfpZraXIMTJTZp"), }, - { .name = IOV("pmieMzFgEZxHhj"), .value = IOV("NjwvFCyGftCojnItsgZwxUcDFZOfrDdRau"), }, - { .name = IOV("NTOxNRi"), .value = IOV("HhfCfuinqAaFPjQaXLmmSENRbunTFPxODeNNLZsxksxogkmhg"), }, - { .name = IOV("YIplWMlRSnyy"), .value = IOV("nRHCKVTBDUYWNKcmcRareKgmWFuTankAYAJHuyYBiaaqNrzHxGG"), }, - { .name = IOV("qDGbvP"), .value = IOV("gDXpHVPslbNDsMPQqHnejrlBjqrU"), }, - { .name = IOV("YUGntrcxvU"), .value = IOV("bjlLHVQggNDWDoQcLmmUQvixAMKzkrJuAAJuePpbdsdpofKLq"), }, - { .name = IOV("tBtdOvVh"), .value = IOV("zPmftYVOJvu"), }, - { .name = IOV("rlVysIt"), .value = IOV("pqrmmVyYXQjQtcNKgDhZFleHQGPvrLXPYreqrAjvyawqlOQO"), }, - { .name = IOV("ldoshrhUeVqLgmAJJsQC"), .value = IOV("ZnXYdmuTADzURRCisbsgdIegbpIPO"), }, - { .name = IOV("JzLlOQrO"), .value = IOV("DugmkOuUnIhfcQLEpLxDmTH"), }, - { .name = IOV("zpwhADGZmlOh"), .value = IOV("AWWlZDJZjbORoProsGkQKTGqBVwMlBhexLhQ"), }, - { .name = IOV("zClrGxHpCfoCpDFIpi"), .value = IOV("xcpAyKxkEKmYDNTFbweoYrkSSWD"), }, - { .name = IOV("fvGpLvMlPjSSvDCNK"), .value = IOV("uWzjhtPIoaNpBmWcroQdUHnBuGFxxLLeGrxPLNIFUMfcIBKuutBAUQVW"), }, - { .name = IOV("firbnGxlCYVxQO"), .value = IOV("jFsHdGUsnYQLeyrWnedZXraSPOOtaqhdxjKOXWwgSzJjmpz"), }, - { .name = IOV("QXcr"), .value = IOV("lztQLDNIMlbwbASCBbZloFJqLmPntIsMq"), }, - { .name = IOV("BpzDaaNDC"), .value = IOV("GmGWttdVUdyFenxicSfAjfbelNk"), }, - { .name = IOV("V"), .value = IOV("gqGrWqqxuqfiuuZXvXrFTRbNdoJeLGqfcXfMJgpxDvIRGIBmPctLPvaarMqykbbPAPcl"), }, - { .name = IOV("k"), .value = IOV("FREZsusazQAqtzarxFvlqyeQJFoVuJobQSTpktGodqJBAfaYl"), }, - { .name = IOV("a"), .value = IOV("yJFzPZvwGqQIiBgZsZKxgleKzkKnIjSUGeLlfLZxzsTUcTOnXpGGfmKat"), }, - { .name = IOV("XekgIBIxXaHt"), .value = IOV("bmOmktRxWncNJwIBQMXjjBdbWOhVyrSIzJdXFuegNjifdSmGJUNRdHmzdjF"), }, - { .name = IOV("kXU"), .value = IOV("VnBTtwTjMWnrVYeoWFFcaJJdAREooqhsxtDbQw"), }, - { .name = IOV("UpRLXCYSsBUUJsJ"), .value = IOV("YOQUxDul"), }, - { .name = IOV("aqDWotTlgvIKWuDHQl"), .value = IOV("SPfvpN"), }, - { .name = IOV("gNMwziB"), .value = IOV("nubWmiWnlpFfacSCPKyYuYPWOYxYiNEOkuszDlYRcBwibQBrHeyetVbLcpwhDK"), }, - { .name = IOV("rCHVRtQbziAjRC"), .value = IOV("gUamVKmXyPrYMMUypSzpEHKwAZtHpzGoSzosYGBV"), }, - { .name = IOV("raulWkwt"), .value = IOV("CducCLavHHSElpQDofXFJBzhRwgwZbxYdXbIuROmstyiYdNpeQxReuqChdMxiiPtazSmsfGXlSqYP"), }, - { .name = IOV("ffVSsPQuoqwCvWZQM"), .value = IOV("NRLGDRQegGsImkGmSSSReTOKLysPkzBClIvxHkDlqMbFSAQsOpxcEZhusLCEKuUIgLRIyYHoDYsG"), }, - { .name = IOV("CeSbNNpev"), .value = IOV("KBaNVFRPP"), }, - { .name = IOV("oRPPpqTsSFB"), .value = IOV("nrBvRBvreWcl"), }, - { .name = IOV("GNOCdvkyqVuzx"), .value = IOV("odLlcopaznrboWcIVmusYOnZGbThlpxDgvWpZgtwytyjyhvgdcGvdHGBO"), }, - { .name = IOV("TVxnVErIChjqe"), .value = IOV("tpIWQHzvbNZnQtCCzWxiyxcDuawPiCEbsLmSAwaMGTVMH"), }, - { .name = IOV("wMjgjwEhSbTNzwyiTKss"), .value = IOV("rwnxKfIrbzPTbvl"), }, - { .name = IOV("LxLwdMzWwxojrnABpkC"), .value = IOV("EWEAlemDPYoNFxADGWCEHPrYpIelSurQFOnlCCwWluCbVrgokUVFvTZILNkbexp"), }, - { .name = IOV("xbp"), .value = IOV("ByoevjmtmpDxxqzHFalwTnNwaKTjlVZDviddkJDEWXz"), }, - { .name = IOV("wfbhujtHrNv"), .value = IOV("FjwlvsDWPCTMfvejvhtBlaJvCFPNcvMNRyDCFuLZAcrHXKYlpzztyRXFVC"), }, - { .name = IOV("M"), .value = IOV("YOYbnuhcgx"), }, - { .name = IOV("jmkuyJUuSLhIaVRRmb"), .value = IOV("gRicdJGksXyjuSozOZfIgsNccYVjMmgUGp"), }, - { .name = IOV("TeiIBFrrJRR"), .value = IOV("WknIjksZLgJiVSjZIkOnzlkJuLYeJYKNvhpeukwXoMinR"), }, - { .name = IOV("xRYgaTHxMlqdNhN"), .value = IOV("SGWWpNEDIijWWaMwQiUZdWJcKVEUJGfwOFRkHduwmKfsl"), }, - { .name = IOV("fADGUShqNjPLQhFmZd"), .value = IOV("udXapEgoDmkPVzBZmqZVUDGGJgfmScuVYMCVzwyxkWGyPhIKUKIxOSCqgIfnmIUAgAdtTQaBOrqx"), }, - { .name = IOV("GQbZukKeV"), .value = IOV("tcTvifwfUdmFW"), }, - { .name = IOV("yDHHtKrQnybwUZYHzUO"), .value = IOV("fGT"), }, - { .name = IOV("XJDMPOefMeNkwhaQo"), .value = IOV("kiZSzkgwsIOhNIevvuzAtuZnYWafHarfeSLVLgfzZCwedzniHhFLasjZjouEZOadgT"), }, - { .name = IOV("Y"), .value = IOV("uKunUViOFQWCsTpXb"), }, - { .name = IOV("rBbN"), .value = IOV("JqEvhSQfmqjEoKwDoHOUBgLrEkyEdsUkJLwJhPtEewsXDgHSuCA"), }, - { .name = IOV("WDlXSuakJQSU"), .value = IOV("tPXfJoJgeZXCVHUv"), }, - { .name = IOV("VnYagwKqLOe"), .value = IOV("WJKdRqjpZNYUXNvweVsbNcYKozTXRlRUENlUznrcsIHkDWMFYoiYYPvZIOImpwfKn"), }, - { .name = IOV("UgrzWaNAsz"), .value = IOV("OCvPMtPxfnliiwNtJszVleBTOeLAbPYXDcsuiBGWtApgKHySsPW"), }, - { .name = IOV("RaSjZdwK"), .value = IOV("whupLsPRX"), }, - { .name = IOV("zCwenMIyNaGl"), .value = IOV("kZpmuZWknFCAlrKjrEezLtSDUsAiKbvtNofRvGVWSIwRkfAJIeeCAZwiiRVgoSyEZ"), }, - { .name = IOV("TnEWWaFGzzQd"), .value = IOV("iqIEYdVYyRayqvkHERFgdkqLjYbuEEiOg"), }, - { .name = IOV("bwKiFvsoGb"), .value = IOV("zFEOtXkaLrQDeIrRvZbpbBNLlZSvVRfGPRYXZHURVPlhXjWOBKDD"), }, - { .name = IOV("KWPnOPlmnogIGysa"), .value = IOV("whGHGUIWwlQMRAEZNbgIFoRkTnfRQpmTYlaarQGJondfSkGrHjVsOxmGbWM"), }, - { .name = IOV("NToPBRqIsKmL"), .value = IOV("ydRdNyLznJGnCxVfkFauYw"), }, - { .name = IOV("HjAhhQuh"), .value = IOV("TFTGgyoFoZWlhvDXdsAtZTXGcYgfjOyGWXCLxSnndQTmYQTxnOJsOWZmSMpekOmZosAv"), }, - { .name = IOV("wGHBMCaUhReonwLFb"), .value = IOV("XgvMMFXylARAu"), }, - { .name = IOV("uCeQLbtvRJARPWeDB"), .value = IOV("PenNwCJXAPivnXigHSyVlERqHj"), }, - { .name = IOV("nZlUMe"), .value = IOV("IUmzYZrCebOeFHfOV"), }, - { .name = IOV("NIBGVseknNEWtwZXaAt"), .value = IOV("xJFqKedOcAAkpaKjdcRORSFYuIKJncSZVmNtvgQfnybgENQasjvAImbmXspoVzkLLylLngsWKAwGmyAu"), }, - { .name = IOV("RXEipSAQTm"), .value = IOV("lYxhOkAxIfOzwPaHLfSkLVKdazHpAczSqlQqAMdJWHppfCTkPaAURTvlOBZtTIRHbICGyjOPWaF"), }, - { .name = IOV("gPpuGSQcZZ"), .value = IOV("KlhC"), }, - { .name = IOV("dZUokszYbAZk"), .value = IOV("IusRNoi"), }, - { .name = IOV("kUqlYDgHXn"), .value = IOV("LVRajOZixngJmsKiBGdJIowrdfZGOrBGcbYRMOwHX"), }, - { .name = IOV("nbAHToMaeURsZGrKXQOU"), .value = IOV("NnpnVghkoydcBRsLaJgeFJzGwm"), }, - { .name = IOV("GsULvGkWOCGvNdQT"), .value = IOV("GngzVzMYHEvzPZFaPJ"), }, - { .name = IOV("JuqsZQFROmu"), .value = IOV("NFrmbNhJMNhTSAhwnZykmHvugszWNZTgPxlxIbykfpeXyApNBVzVoJNukSDARHtXwTPStSraRJZYlClI"), }, - { .name = IOV("IteZV"), .value = IOV("igJUPJDDDIuIhDICrBxitAVrpgER"), }, - { .name = IOV("HXdgifhEUD"), .value = IOV("BForwFU"), }, - { .name = IOV("NXivZkObFX"), .value = IOV("MGwQwjMGnWSXGogLNCGRhoELqgjGwn"), }, - { .name = IOV("RWWDcC"), .value = IOV("agXErbUjSbRLZCUMmFWoxijQdgoVVVmUkplBEnYmiQBTjeFhuBEFXzrlKsCZFutAmYWMevFW"), }, - { .name = IOV("TpuBBcwWfNUIqm"), .value = IOV("PcBQzNXxASPzkQgUFWyLsFzEyWC"), }, - { .name = IOV("upDjNhjsuxeDaeEqgX"), .value = IOV("yKrcgbVUSnnRTTusMYHtMjPfQcyQQzkSkZqvIvMazOIDRXfuaMqRpEGrkzFKQ"), }, - { .name = IOV("unfjwvqK"), .value = IOV("cgXptMQCJIAWMjvdgnAFGpLpVLByDpjIHYRAtgvEimUTEQFFceKKJDXNYTnEoKWJVuXBrRKlkgYsaA"), }, - { .name = IOV("rUbBcvFJ"), .value = IOV("djzIavRl"), }, - { .name = IOV("kPP"), .value = IOV("WYvudqKxIIttcTpfyHPYAIrdiosTcTUbHgTIhSGXPNby"), }, - { .name = IOV("cFEIsuZHLiyRkKG"), .value = IOV("joPBfxqDMkTpqMTzIBbZcLWTgqLkbtCXWKfAGqCZfIIVDW"), }, - { .name = IOV("BBXxT"), .value = IOV("DPrhgPopMwnNkKrOUTGWeyVUMemWFHXXxGifHbmadWqxXyNfIXSM"), }, - { .name = IOV("bzxeaJjGIxZToBkaW"), .value = IOV("sabdQFNiDxsJlKTaysdctqDqOAGvBcCUtgILMGwbNOOIWqTghNHkoCYOYhRnbOJdYeJyFVXIkMkLW"), }, - { .name = IOV("eLGjtiHvmrDUeD"), .value = IOV("E"), }, - { .name = IOV("WSDDfAfVX"), .value = IOV("OsomdBZWyPzvn"), }, - { .name = IOV("JbSKcTe"), .value = IOV("oXmrjtKUdeelBuFuMvLauaFGvLhMSTDJiN"), }, - { .name = IOV("DodZOFW"), .value = IOV("YQYEcrRmuqMaEJfXHcfRJRindUtTnjmzNlWyTSREM"), }, - { .name = IOV("wGDFKVJa"), .value = IOV("HPQhZzFRHYXHKZpckZiJmnFpVKTVRgRKArG"), }, - { .name = IOV("R"), .value = IOV("ocUhHyKxWoJHlKEAdnW"), }, - { .name = IOV("IU"), .value = IOV("dgdnsbDAUWjYtYSfazX"), }, - { .name = IOV("uDbgwGUUrYyDn"), .value = IOV("MUDvnttizrXtOUaUjPlhiEpGvivUoeuSFuaZnMfuCMvrSqsgVBZPzNjZmBJKKlSOcSojVpvc"), }, - { .name = IOV("tqZk"), .value = IOV("pGmxcHddUBTkTkDgDFTsPLIfrcpLQluwQivJpisyFIjbuoIVYcelAXEshRLbHxGNMyb"), }, - { .name = IOV("EINeYYw"), .value = IOV("sCBtUegaFVu"), }, - { .name = IOV("dCP"), .value = IOV("LITICyXfZEgMxAYzVNvcTifZIHWwQLxWfZjTSpwETmmponVQVSA"), }, - { .name = IOV("r"), .value = IOV("wkTeqmmOYzSYgEwLYARkozSTKwCeDevevZMtvNPzxzWVsCiDozuerm"), }, - { .name = IOV("BDl"), .value = IOV("HYBWtvtIOYPibUHRjyOvygdecvkqovAsHikMoREgSnjKXCyiHThnCjgQNV"), }, - { .name = IOV("IpeAqxx"), .value = IOV("oUECPohxaPDvWfXGoCNwympntHPCyLnfNKFJmcMCSIhvZdmsg"), }, - { .name = IOV("LetdTqKDXDKLxhtJw"), .value = IOV("woLJXYQsVpTwHMHTBmYyzHcPWiMmWYuhSmMtXXubmOavPbuNMZHN"), }, - { .name = IOV("fxgSqFdxsSKhUDlCQY"), .value = IOV("hzFLiDUSkIlditXAEnx"), }, - { .name = IOV("QClr"), .value = IOV("iqSbaMOmBgDkUeNlyBfOpUhwgkUxuc"), }, - { .name = IOV("fzTzSisdh"), .value = IOV("ETbxqGAenNqouAmYylaNJtowVVJADHJaEOivZenuMLpAcOcuOXzVmBtTCuQolkPvGXFhPt"), }, - { .name = IOV("GeYpRxnoPuobzsu"), .value = IOV("sxOxkfodPtJUxo"), }, - { .name = IOV("rhERxjtYKdjlsQqxBnuI"), .value = IOV("ZLUaftLBpcoKevebluTgXhzMQKuGMUCAYLlcEDQy"), }, - { .name = IOV("XxzjAugSH"), .value = IOV("YbjUdRMoSycDlfAbgllf"), }, - { .name = IOV("GhkhJfzxNQAvYBnIz"), .value = IOV("UzlYkKarBuMOeOnZzOnXjoMsHh"), }, - { .name = IOV("YuXYRN"), .value = IOV("UXWXbKgIs"), }, - { .name = IOV("zDi"), .value = IOV("aYKhZNQOCuVWvneWcJIkJGpeHQVNwARnLBzAujQJGNHBCyzIpfo"), }, - { .name = IOV("yaYAVO"), .value = IOV("iweINjGpgutPaDFXuOhKQaaR"), }, - { .name = IOV("gtp"), .value = IOV("suiuRHkBIXAyCwtThrfkeHECYdkwIDbfDRsPhOi"), }, - { .name = IOV("bbLtNSDUxYplmlMhv"), .value = IOV("yNhZiKlZfMCVFtAuPNuvAyAZqoHLVGGLAai"), }, - { .name = IOV("VhkcOwGucB"), .value = IOV("PjjsAjrAMpmGOYsCurxrTuUegtBxLodmwMKbukpvaAhqFvdggCpZDzinXvkxVGCVgjMiFCr"), }, - { .name = IOV("lSQfF"), .value = IOV("TQFNNWASZVSxOWlRyzuDsfCpyKJXqhoWttAQLTcCdfUDLJZuuIPJuxixrEMAszrbYjLrNBgrFRiFHJ"), }, - { .name = IOV("gHVKZuiQGKusHdV"), .value = IOV("uSxMNTvfsKgDlfhmjuQFXjmnCNjBfsucBMKBTCchvcCzdJagOCkYjZ"), }, - { .name = IOV("zzvXNSjohm"), .value = IOV("diRCdhRXFu"), }, - { .name = IOV("C"), .value = IOV("jm"), }, - { .name = IOV("KEEUerQgFVdHvobTrDYL"), .value = IOV("iOONsGiobMVrYDTIMCHnhEhqxsEiySgiybClgradfOETHolgpaVTogAvraV"), }, - { .name = IOV("BFneGei"), .value = IOV("CpOFEXWPnPEyLJxWGRpMHbBTZFkgYCretRSaJmUOleOxKI"), }, - { .name = IOV("pAlUiX"), .value = IOV("GbGubmGxftqp"), }, - { .name = IOV("YgRZLFfRuwx"), .value = IOV("CXNNnyWFJkEyhrzZXGQbbZdPrUNjOcGNnFlXprbzrYrrSWaUqTqOJYdTrNWidnJLY"), }, - { .name = IOV("lwmXXTxlSTkAGEpzCuM"), .value = IOV("xogrtcnmljFoFXuAlkPDoSPGxaQlaVuQIOTzKwKLuNDlFlhM"), }, - { .name = IOV("gWaQFUkgzkFVFK"), .value = IOV("AGrhmtvKGAvNughOuyMvqgy"), }, - { .name = IOV("gqhIKlohPeeUMRdIy"), .value = IOV("XhwlsbiYwVqdxdIlVhqxlzKXEacyAXXEMomLAngMvwujuSjcfwotBbDFcAPGEQetjNBLfLcCtpY"), }, - { .name = IOV("XppXRlSX"), .value = IOV("ysVkXogkDQaODlhISVnmHteTHFRzzLMWmBQMxxmQfhjimgQPoRpunEIZCZadcSTZdHKLRPbskRppRS"), }, - { .name = IOV("pHr"), .value = IOV("uxfCXRvrydpDRupzJyApjBeCouhSPMzlAq"), }, - { .name = IOV("EkvALaiwDhImGo"), .value = IOV("NBifHmxaqRQuoYBnYdHbfPAnrldxTdOylxpdYbkCAv"), }, - { .name = IOV("jk"), .value = IOV("rCrIzAGJuZyURPPLmFPyDGazQeMPdHOBUuAfmbnVFQuJUhKutp"), }, - { .name = IOV("qxTwiGOArdwvcb"), .value = IOV("gTDnVOKqzCZruodlrySkkECWZyJYnUBkzDeLuWHEnAjFmjJOoRFCxljxSgnprYYJbi"), }, - { .name = IOV("UlVuQuzvDaheq"), .value = IOV("pxsMXXnBxTOzKWrYFBVpjXvHwWjcxsMKoMlOvPrdRajnWhgRdxVQGGjtmNEulVFbAjlmspLH"), }, - { .name = IOV("jEULBUDYFuLecLSW"), .value = IOV("EcFpGKDPlpyXXzPa"), }, - { .name = IOV("sqcMpp"), .value = IOV("RnmHQvUWcmQeGoCAeCDLzQFyGRBLnJnxqBrYyqSLjY"), }, - { .name = IOV("awsQDhG"), .value = IOV("etxabSANbGiHikRvpzDLaBviVJMNlnmiBTwUWHcPqclzmVWHhtYrQIjfaGbpDYJuAwr"), }, - { .name = IOV("vZSdmPdOSwxQGkwj"), .value = IOV("DcYHMJUophMNtIGFRUsUJfKOvxJw"), }, - { .name = IOV("rlPFLmzriyFoognJpspJ"), .value = IOV("sgAYdGGwMYmbhuakCoMMOWmuoROJeWnDPKWdeUqWz"), }, - { .name = IOV("NOcFZgfrUhWeq"), .value = IOV("SkkvS"), }, - { .name = IOV("emNDlpka"), .value = IOV("ubiFaCiHlrDUkpetzNIJdBOTSDRsHOjXchLgCtALAFAsmqQQzb"), }, - { .name = IOV("vSAuzgywfAGp"), .value = IOV("RXAitFNoxDhPoBXcMeTkyTwtiTDwjsLklUdbWJkUrgaZwEftuzYnsrgZqWkTpCvXtZ"), }, - { .name = IOV("fiwUZn"), .value = IOV("efOjTPTknXDYhkeeVWbEZvTGdMIGyXPTumPHasjBNSJLmNLQVpXS"), }, - { .name = IOV("cvKywdbhVAIm"), .value = IOV("boxMbzI"), }, - { .name = IOV("OIS"), .value = IOV("ZkrzXxdIPFXpWchR"), }, - { .name = IOV("FcXsiqLaLUYK"), .value = IOV("rYrsEehYSoWJP"), }, - { .name = IOV("vUdFTlBa"), .value = IOV("fXmRtRkOflvcLRCWrbgcuTiuLCVhAMWcmdfOIlOwEvYtVtZVBrMXaGvOhTfulz"), }, - { .name = IOV("wRKUpRrbqG"), .value = IOV("qtDovZEIQKchHrsJKGeyXqtVoHFErNHkCXuXWiolBZhLUOJKmvEZoPSMP"), }, - { .name = IOV("yESBJvy"), .value = IOV("BSEAksyoBXOljIEMiKVTqBUReMrfTOJHelYczVhmAQaogEBMATGABANRHa"), }, - { .name = IOV("STnVLWzFUqRdCcmtwxYc"), .value = IOV("gmMGFHEjzgvxZktmQoDEFptRzLpWuZRPxNSQiGeKh"), }, - { .name = IOV("dgjEos"), .value = IOV("dm"), }, - { .name = IOV("cbWqUKatRIxxfjHftI"), .value = IOV("dDNgfBJRWzzZycqrDZEHERPO"), }, - { .name = IOV("ehNgNtntUsbDrjtSpOs"), .value = IOV("wSllUWpwtFuXiMLFaWNZeKnCAOUzFWkevMQirswHZGYsF"), }, - { .name = IOV("fRKxGDNQrc"), .value = IOV("fUHfL"), }, - { .name = IOV("BZIbF"), .value = IOV("kwEtdMKvKNHNJBquHwuXXKWphKYPoOxmtQLDrxioFxpGxOzAOCwpbS"), }, - { .name = IOV("kDDYLRHJjOKyJijnwd"), .value = IOV("owsGuGNUQXoDpwTSmxRpglwAwPaxPGZwByCdqiYxNDpedjAuEDLRpqMBqTewJUxwKnBcJQUKYTDjIdu"), }, - { .name = IOV("FfzvhUH"), .value = IOV("CVUuINwIhqQgOCGZwyTpMpziXbShdLFZCcphjWFErAt"), }, - { .name = IOV("yZXSRDZDcU"), .value = IOV("TbFqUqalRuXTbbXqarwbeuUVdgaWSpYNwTKcD"), }, - { .name = IOV("TnBg"), .value = IOV("hFkaOuFuIpxtDtusASwdbqRsufUfDIsNWZbKvkXinJwZAmoazgMHsCZGzsx"), }, - { .name = IOV("oiybWiJH"), .value = IOV("nSDaoZBNnHwWbBIYMyQgySoPqSqdyjrTaLPdVcTNmyHoXBhRzXMbMWZRjgNPvR"), }, - { .name = IOV("RMCsfkwtvu"), .value = IOV("FDkVPCbPZSlwzIwtjsnYLwxDPjXLIPDjnWCWUFZDsTDajhKcYddfptYHDKKEGpDYFPbQuCD"), }, - { .name = IOV("jO"), .value = IOV("vLnpRsoRIlSuqkulXNhEEEvupgsSQXDlAyYYeRGDWaaNCHhfPxhXpWcKjsDqivesDYKjnnsaBUNuCsGQ"), }, - { .name = IOV("x"), .value = IOV("GTTCHRuXJyif"), }, - { .name = IOV("XAEDChkKqpgWWduHac"), .value = IOV("hgRDWzHOVqWjKjFcdCcVzh"), }, - { .name = IOV("GM"), .value = IOV("OththxyDLdDByxEJYtXOjcSaFhuGRLwfiJZvzX"), }, - { .name = IOV("EC"), .value = IOV("cNOfoUoqlWWFxKgkZcdqqKvlNOjqelLIwrprxYpSJhwjqvYkjAyTtN"), }, - { .name = IOV("gvHTApWqxYyO"), .value = IOV("qulspZdmEbSOtGZhmgbOAjcdErGuwGpfjwHDkuhzAHzxfRalkHStGHD"), }, - { .name = IOV("LOTnDCOSUbn"), .value = IOV("SpXgPUMZgjnXyFUQXAgwtENvdSZevmllH"), }, - { .name = IOV("pWnDlqVZRhIFRUaJsZ"), .value = IOV("hiIkmfZaAdpgnJMhBBVfwRXBIODVTkLIiwNHzKvnmcGHYSM"), }, - { .name = IOV("ZeSvQEdcPs"), .value = IOV("kvdyJXzHQcXizrLPNBgaugTuBZfMGjavwX"), }, - { .name = IOV("jBaDa"), .value = IOV("mErCaCwYfbfMjjZuhevv"), }, - { .name = IOV("q"), .value = IOV("gxTiysYyTKnwCztKjgLLbkcuhqRPmdcITGCKgmNyLyd"), }, - { .name = IOV("ZnbCXJwZWCPWclbuw"), .value = IOV("metdiyBGuiXi"), }, - { .name = IOV("PtXSeLBqNl"), .value = IOV("aCOTqkTheOpXkZplvliUllAaSKDVymckgVZtqJrQToOKViZiaLvtCWBtxhosGNfzFbYvXJjmaJcoGjK"), }, - { .name = IOV("GlB"), .value = IOV("GxGVsgYQkMFDApVrnpzHBnzxlMdoPmFvmAkDQhNhENqjkJbKX"), }, - { .name = IOV("GCtOHBRfdOIZPy"), .value = IOV("jeDJXhTaaNWaKALc"), }, - { .name = IOV("UlUDKUVuSXjiOVziU"), .value = IOV("eUayvkCOuojpndUIOQswYxhwnSSgMwAbrSRYMJOYZeRUxOtOZBITjiEsCTMUsOGvLXHoA"), }, - { .name = IOV("GcehOVEeINdyrRptiG"), .value = IOV("cNzSocdwGtbKJ"), }, - { .name = IOV("Iq"), .value = IOV("ujQpuNhleuNMdpApXbbyYYqJdLdsyRESMasdqaxDfvxqRhmgLutbsNXFhRGsECQksmjYpOTnZf"), }, - { .name = IOV("j"), .value = IOV("FTewovSgXsSLXHsEtBLWVrEpIZUzGwxOShqGfgvICkxhWRMhseEnT"), }, - { .name = IOV("AUbWWLEjAClTsV"), .value = IOV("LYwsxxnkXWFvmJbhORvIYzktQjzqh"), }, - { .name = IOV("cxgetFWeUK"), .value = IOV("jtesYQYgDBVkwGCeuvKtMbWQh"), }, - { .name = IOV("EIllXuUXYek"), .value = IOV("vcbyfoUDxDlJoeS"), }, - { .name = IOV("NHukLmCLtjIyqecRP"), .value = IOV("fCxcjVKfhZpwZQSsbIaTlONkgVKiCfNvLSlXboma"), }, - { .name = IOV("DDTSAqoJGvr"), .value = IOV("pJJrvlAVDIIWWoOochCfYMUlqQkHhMqZPzuSVgVZZjQhMStTocWHLSJsNgqyGV"), }, - { .name = IOV("jguPFksT"), .value = IOV("mmGUpJbokxdonvjENWjXdNbMnfkdoVRYOCTHJcKoSQDeWCeUrSfmNiT"), }, - { .name = IOV("SEQ"), .value = IOV("BYGsZbmmGuWhiwQwqNsqIKUpsoAkJDqILycqJJYsxVFhfadlyVzCqlQfkOScmzxzSCdqVrz"), }, - { .name = IOV("AtBxlEkjBexO"), .value = IOV("ZVDWQqtbRSZhRuWQNWqYQeMzPdiACdHLVhbsiaZHlhVPpqrISTPJMFl"), }, - { .name = IOV("VctsRWlZl"), .value = IOV("jqgXgPFRYqQdSkYGBOOPsLtJgfeuaRMoMiIteKPbyQocPZwT"), }, - { .name = IOV("aYZYvIPtBqSSFVD"), .value = IOV("klWUlxfEjqsHcpXEvbtiWNBSb"), }, - { .name = IOV("t"), .value = IOV("eotqwPdhmLhujFusFdwtNjfvcASghdpWZWcRELmSYjqCkU"), }, - { .name = IOV("hOjpubkoaEiyeY"), .value = IOV("xXuuXUvJpLwLUFhrEEreUendfpUFBBVcvushPJZxShTvqmYONuFLnJeBnmpoNwBcrvMqOMJOEKqzXP"), }, - { .name = IOV("TetN"), .value = IOV("gvMIhbgLixscDTeBaDSkJzduLY"), }, - { .name = IOV("rAU"), .value = IOV("zKnhWuCsBVLNCOYVLSEoQnSvIBLtyEDWZMIJMqurFcHUdmOsPLdtWKXlgJqCQRo"), }, - { .name = IOV("zyZbIBlSSArVIRzlNfcY"), .value = IOV("lOKXPMxqLqhnTsuCHEQChR"), }, - { .name = IOV("oNQGg"), .value = IOV("HxXlZiMbYKwtCSlruISgyJEPPdRCRoegKnsVhQMDN"), }, - { .name = IOV("uZdbWguVttC"), .value = IOV("xfCjxUDKCOyXEIQJbCzmJgYmVhOQMJbYZDxGKnqJdAIzMHdALojFFU"), }, - { .name = IOV("eNTetHGycvp"), .value = IOV("UoMWR"), }, - { .name = IOV("JhboTHqGJboMdERLkdS"), .value = IOV("r"), }, - { .name = IOV("KAyhoOqELunJyXQn"), .value = IOV("ThmTNNsvuWcIPihbzdYbvEZjrBJCquMkCZXiRlDluRHBMCiKpIBkI"), }, - { .name = IOV("uOzyE"), .value = IOV("JyMqMJIJMkSjcunshqzQejwttQLtcvUNPKdxKPYwJVWVWtgEmYzUqcHcvrSmPpIpMVvSQqu"), }, - { .name = IOV("MenBriNwB"), .value = IOV("sMshvMdEMMXnGSFVZmmbLXyNoDlSIbGuvztuobXVJGjRHkalgspxJVshMOlpCFcMbfrOHYvUr"), }, - { .name = IOV("DpOyIGj"), .value = IOV("fZFbAUxhXgHnbUCbBaCrpOBfsNZYLkDweByPiDsH"), }, - { .name = IOV("JHno"), .value = IOV("encSmqafLAgyOfXCVaKiXtarqZLuiTbplDYTNX"), }, - { .name = IOV("OvfHDfkgHGYEUuPWOxbt"), .value = IOV("WPWTynsWubpKDwMFfdCEFkqrJxKdskfxPACSMWXfhQfqGKwAqstTPKgVgKZGUzuJFH"), }, - { .name = IOV("HUVqghPjPeEpt"), .value = IOV("KzO"), }, - { .name = IOV("JOleKrDuegDRe"), .value = IOV("iIyXzSrZCYbqDoLwducPawHCrBmnpabNziZDrCEIqFvnYWywbKVPa"), }, - { .name = IOV("JfyLDalUWrwQYAoe"), .value = IOV("GHDocuVAMGrsoPCHOpLOKNUdohtSMPjDzGJI"), }, - { .name = IOV("M"), .value = IOV("TBkXrexMggWxatzHHaBoirrALLIydEdIJgBfHjbirQEjRcRaooaudrTGbtbQhAPfBTE"), }, - { .name = IOV("JGrE"), .value = IOV("aTxqqWGLHAqyBpeoQWHfoQHCqLQqQcRGwTYLXuUXcEuxLauHjUFfnGCsZvbxbwJMJU"), }, - { .name = IOV("DiPDJGUmsCcBNH"), .value = IOV("RINRPCDxPKZJaXanyNawgXuwdtZkfNhlBSctXfHQELOLSVTq"), }, - { .name = IOV("pnWIablptRhLrJOz"), .value = IOV("klguKNhMXApPPzGSwBAChUvkCCPODcimcbccZUkNQeyWjFbCDxsgcgp"), }, - { .name = IOV("N"), .value = IOV("wFjMEILrlwqjJVEliwsosvhuPISoHeQZHPapPkx"), }, - { .name = IOV("bTfBTIbnCE"), .value = IOV("wjLw"), }, - { .name = IOV("zOhVFWgU"), .value = IOV("AaHsbbsfpgOjtVtHaqbrpWNAjUcAYsrOrwEfSpHzHuWOAbkdfsUedoH"), }, - { .name = IOV("OjgPvCEYZVfJxbjKQ"), .value = IOV("rOAQuxPsKSrZzZPJyNRfzxASElyyTANOJvhJaevhfRLEwkKItQJxsPoyJWLdN"), }, - { .name = IOV("TXGBYIrHxZjQKR"), .value = IOV("RNjsTjUZuphubadIlosEPJBwlStWhsFBkvLnEThMGzPLushUX"), }, - { .name = IOV("LTxfbDQsKRsD"), .value = IOV("lxkMkgTlPykaoILWErecrseYiSRPbSDJHWgODTVXhJLEOghPlCqXKNqwARdpwyaCWTzZwJZu"), }, - { .name = IOV("arHoe"), .value = IOV("BuhnOARdzPNwvjSLyLlmwdoRZVixhmPAbPdMrmjEunqMcxL"), }, - { .name = IOV("rZTlXmlGrMTKnf"), .value = IOV("YVyFJwBRnzApnAJgQJQNHqOmepfbteSnERbyS"), }, - { .name = IOV("kSJKWydTAzQ"), .value = IOV("hLzUbMrLpBKmLHaeASHURLxvVUEgodOTcJnP"), }, - { .name = IOV("HFMDnoXTk"), .value = IOV("IVJlrSiOqdZSbcubPgOApnmSQnIKFfrpFxOUqiCmdZIPBfhTHMlRVhjtlfklaKmkdEqFxCKqm"), }, - { .name = IOV("xFktbzTxCJYtjurUmsdj"), .value = IOV("qrFaTPkwOlCxclZHBWaKawphNewrfxKeYLgNPfsqfcDDhssRZsXJrzKFNBRkUwVScAdbngBgSxNXc"), }, - { .name = IOV("QjLyOFrPKGrNOqoUrlD"), .value = IOV("FyJWpWjQBfEaBLIflyHQdjIARePYiYwgyEEXEOnlYkraaiGSjXjrytuSfkGGCHaluxLsvXXzEcbZ"), }, - { .name = IOV("W"), .value = IOV("BAw"), }, - { .name = IOV("OXmDTpltnCY"), .value = IOV("tQwpalapoOnEdlgtlWlSUOyvl"), }, - { .name = IOV("zlKWcLIgzTKpqmoMn"), .value = IOV("ckBVUvJLaaOlVbFuEwULEHicOjkFishrSXOxcGeqpJxESnFzTIplwmpzSvXklRJYuoJq"), }, - { .name = IOV("YjNTUWbh"), .value = IOV("bIJcAtlAteocgoicbNnubsGgOidXBouF"), }, - { .name = IOV("fXnvl"), .value = IOV("DAvzyGjDwGjNEUXNjVmIqJPiplKGaxLjHiagrFhojMWPpVpekPwDwBvxeQidpczXeBsYsGwDCpfdUZMG"), }, - { .name = IOV("FSeKdjJZ"), .value = IOV("jnAQpvQKTVVMoKhskiejEHKCvYUcStrKhJapFeLjBVWdYhPjfZeTJslbVBh"), }, - { .name = IOV("BBsDNTBnKCknOAdWoIm"), .value = IOV("NcghAPfrIoSOeBYrzjFYMKKtciPraFMEXddzlQSWpkijCEtAmbZrFKBeTkLlCzAkHtjLgjnI"), }, - { .name = IOV("RibIECYJG"), .value = IOV("yAJDshFQNNDkUwSXhWbBtsjqZTfEqNFDhDqnrnfdIbwhXNAnTInmFZaLmiCPgueJbidCpx"), }, - { .name = IOV("zokHpbzuOnj"), .value = IOV("pPtvuwiejVCGZymlboPjrQtlYNwZEeSzOHJPAObTKAVtSvUQafFVsMKLVyYso"), }, - { .name = IOV("WSWKzfBaOKEGkjnBGa"), .value = IOV("rUyonADAyUpWmLOCCOrmEJzySyToPsNptkqChJciJAfHnaQFWuQEFLU"), }, - { .name = IOV("KSWXpyMtDjvwmH"), .value = IOV("dIpchLDbcIVbgmLJlnxeYSyKOLQJZCfRchxTQydcdJmmngInTfGymFPGLZcPknLfCePqUNicz"), }, - { .name = IOV("rcSqYlnK"), .value = IOV("zVnwYguvDPSZJlDVPPdyDzzTPTIjBsMQliGnzwiWusuVE"), }, - { .name = IOV("WjJYlIdSRFk"), .value = IOV("mHTkGLNuncbSXXIylJCXZqJXwLjHS"), }, - { .name = IOV("Qgyj"), .value = IOV("nBjVHsVQvqpiDuwgyVsLjlifwWEicnAldrfkGGmvitmymzsCjRMfU"), }, - { .name = IOV("iZEcyImTViDjzR"), .value = IOV("lcNLqlslqGeAmIbMLbFwzKSBzkuKUmwBMPXUpfkDUGTHlpA"), }, - { .name = IOV("LZYjlSbswcFDi"), .value = IOV("VBZAjFZCmKAVphoCDfsMrdQEBvbIgkMsmWdzmVGIbNXDapDfQVRynMwzhDsEvOJWiRjoovLSBELoppg"), }, - { .name = IOV("DpEx"), .value = IOV("MtcZcGRrjeDRNMokFnZDgIQmiueceYYcRmixrYipGkHAjcxnNxKUwsjcJYSkfOWBOQpl"), }, - { .name = IOV("qpxWykN"), .value = IOV("AUjIia"), }, - { .name = IOV("YhrdvxvNkAt"), .value = IOV("zMLUpmMQbRN"), }, - { .name = IOV("tt"), .value = IOV("EWNfQAbCHvrZZblhlcfoFPRkdSlRSoTHaiIBJWuZDcOaAdI"), }, - { .name = IOV("OJKe"), .value = IOV("jlaswZALZWagGrpIatgAMzhTKEUZdhmKfTmdCBzHrwtBSXJedXASHNgLdnCawXXZBdFwwzwWf"), }, - { .name = IOV("RNEMctgcKkhuzBXEujq"), .value = IOV("wgMOmfiGFebISmHVBBCvPnKBHfvvbbACZUYihHXtimpJXyLGmrXvGCVu"), }, - { .name = IOV("qpg"), .value = IOV("ubIpGUiHzJFeHcIjkAjSkc"), }, - { .name = IOV("PojhnkZbIIBJG"), .value = IOV("RNtcvfDMQUNNNuG"), }, - { .name = IOV("pzuiXSCPIQYn"), .value = IOV("YJAMowsghrxGuLrursKsseoQgBIiCBTsAngWCQFpVfSpKQFIcrxbFPRlBnZrzFaFovpM"), }, - { .name = IOV("wRXjmxdbLGCalmaSC"), .value = IOV("IDMZeNgPCktkHOtbSwoxy"), }, - { .name = IOV("MJKyMN"), .value = IOV("YSVuENfZfIxZGgFxjSVODhClPivv"), }, - { .name = IOV("YrYZdMy"), .value = IOV("PdvgVZElFEgzwMkGHbcGWzIobQhfaRwpeiRKWFgdmouFGEkr"), }, - { .name = IOV("dxopGEKXxYFAxydI"), .value = IOV("jYZXjp"), }, - { .name = IOV("cX"), .value = IOV("hoxPOucC"), }, - { .name = IOV("zJtAcxCOZIhpvp"), .value = IOV("lSiQsPlbypDLxszUroSQJRbQeMWqPTjIXVUBAmluPJujEukbIOPmcgkSjVBbjTFixAJM"), }, - { .name = IOV("mQeAFOsPsohQLQji"), .value = IOV("WldiAuSyqZPNKakZOeLsfsbXJFDQPsFTEMBTuNkeDsYSZikAZWiqOVGKtOLxsrEWvfEarzPMs"), }, - { .name = IOV("qPNFMyCjfcpQseoDSDvb"), .value = IOV("sd"), }, - { .name = IOV("nehFQcDz"), .value = IOV("IANZPmpfESVPNExMUpkbfuWBjxafyKOXVPJXDgZJvruAVExCjqXgyjsyzUKeMWmSJDQpJjtVo"), }, - { .name = IOV("FMktuhxAvLUyvkQiIe"), .value = IOV("GXsZZblSFfAXi"), }, - { .name = IOV("DzmzSkdnvvBzYJALKaT"), .value = IOV("xGtKHuPdpimiRuNfrVuoQaTHitYDGmJRnocbmWNctrKELfUbgkigsevaXrZYyrYEBlmGOuHRcPct"), }, - { .name = IOV("wmduYjgUgMxsB"), .value = IOV("guApqgTQDhiNKBmYBdvIgPJfFjFLvpgqLKUNdaHcCJzJfHC"), }, - { .name = IOV("QPCuwdcCQKEVeOpaS"), .value = IOV("rOQeTuAgj"), }, - { .name = IOV("ZHkrWYGYOVspOkD"), .value = IOV("zDDNRmsay"), }, - { .name = IOV("azWqCOmcwQ"), .value = IOV("OMFpsc"), }, - { .name = IOV("jbTNJmrfXsq"), .value = IOV("vHdDUmxspapqzrJflzcnNlkdWLMPqqRUXmGHWhQVlIXbJqqhmZsLJEdWnGFCwu"), }, - { .name = IOV("wxWvEHXnmQGKZSYDv"), .value = IOV("omjVFyBuhRrLhhfhezZFTpooRIHmRLoJTNPBiYfdosn"), }, - { .name = IOV("pd"), .value = IOV("ayVdhcpZbNHhmGYFJpCGYqVgPARgiyKjYNmfvHyMMyHMCRZjiCFKSHFqPuul"), }, - { .name = IOV("Nxim"), .value = IOV("VUWrVRArrnimkiOLWGJxrLURqmxyCaSbANMjSsSTOhnIBWysdbTyzJ"), }, - { .name = IOV("XPuwOqaFbTvBFvSW"), .value = IOV("fQFlnbsaGAFGAbhPBYGWQCVVSzRfzwreXepvhIbuDAYiZfdyVypIVQgtChPXqVNuGG"), }, - { .name = IOV("WyAMGMVVAXFpMTCHpZGj"), .value = IOV("VNDDMqppeJBgiRBTwvCXNvuwhwoxFksGmTWJhqxgQCgx"), }, - { .name = IOV("AwGemiooup"), .value = IOV("UcWaoVKYKAywynPylBOoUSRIT"), }, - { .name = IOV("EzASCqHJ"), .value = IOV("B"), }, - { .name = IOV("LV"), .value = IOV("QuohDYvriHwFebTJVdQtyvlTuQAZISdTpOTzxIsiVGhBmWkajwcCSVwYQYXQA"), }, - { .name = IOV("VMBwicuVAmRmsUqGIRHX"), .value = IOV("BDIdzkyxiuhohMRweYwRLWyuEKjBGhwnpJzXhdGwkIZBmfmDcJqljzD"), }, - { .name = IOV("QMPKoeJAfzw"), .value = IOV("JksflYOeffoTTMMEHixSyxUhWJu"), }, - { .name = IOV("uyqePVXFCejHbvucs"), .value = IOV("dFamSIpWNkmBhHvrjyMPmVFrVnWTEUSdUQmKBpXSiJJWvFpOJUJbkfisPcmeblaScdSaDKnaTBYoBoae"), }, - { .name = IOV("SLPFqblKEGQALkF"), .value = IOV("husfrqfPiGnLzxWbjAOawOPWribAprCDUycTGKshBnYAlxLSAxkD"), }, - { .name = IOV("BKNfQGutYsDSoeO"), .value = IOV("lepwHQTRO"), }, - { .name = IOV("OJyDcXzZ"), .value = IOV("yuRoyiaXNieddpQSDPvTbnD"), }, - { .name = IOV("IkVhWQQSZbyLO"), .value = IOV("MczAOtAaHmRYlupiEbDfsyxLNROWZJZNgMVQtEhHdCwCyfaIyPBoftlBqFmYl"), }, - { .name = IOV("Wy"), .value = IOV("eicGzx"), }, - { .name = IOV("Wf"), .value = IOV("QxDVWLYeUiIFYFIybUdDjptNgZkGtklqRnMvXEQXICpUpUrhbwnKmjtnQrvQEnhzbbvodBtpehDlWXa"), }, - { .name = IOV("JfSqbXxitGpBALgRtgU"), .value = IOV("qBXakyFeAtmizIMaaAULaWKGEGohkAblxCQuBoFubfparkwVTHlbcckGczDXizmgNHHA"), }, - { .name = IOV("UyIYBJJWAlpKsXXMZ"), .value = IOV("yZqIPbgfzCCmhgMSuMxsWpoDjapaDbLVDMlQUSh"), }, - { .name = IOV("vGfxMyLviqLTxLqxXJch"), .value = IOV("SHAAhejLHPOUmrhipDcKdEydKjRyRoLNJANQlRugASvwYonBLwnggxfLpEp"), }, - { .name = IOV("xiSExcNDWeLIiFxZCf"), .value = IOV("LEMLuTuvqtxYvzAhBxDedquvaGtIByJOagDbiImCsDYciLPfWQAbDRXgJYmUdhaBDIoJHODVy"), }, - { .name = IOV("AZhozjuNAMKQbQs"), .value = IOV("oHwlzAMLHcchXCHQyPrucmGzLYrRBQijUlnDdEjCQLFgxpUYyMwHqNAiLSPFrqsvOq"), }, - { .name = IOV("ydxtDgrXiyaLbYHv"), .value = IOV("tSWqDdJk"), }, - { .name = IOV("nfWpkzvElYnCynUsG"), .value = IOV("vERqYcosrj"), }, - { .name = IOV("aWCeiQera"), .value = IOV("uOpflvJpRfDSLPOdenmPIfzdqjRDmUaKUqegNaNeBCwbdhRsdzsOzyaUgEserxKIdINAEpruJvudCu"), }, - { .name = IOV("nnjjmEEYU"), .value = IOV("C"), }, - { .name = IOV("kloQRXaEXzVMpussD"), .value = IOV("SEoWbVDrfyTgITwPaLBIXCkevVUNGk"), }, - { .name = IOV("XWaJVLcmfucTuYIuAX"), .value = IOV("WyWeAvKgLgfxEHOldkaxSRfwcasFghyFcsGcLhYkwtvekq"), }, - { .name = IOV("aarFOp"), .value = IOV("cbEAjKxCHkzDmRcvCueWyITvDJwJH"), }, - { .name = IOV("StPasJLXLnVieqPCdt"), .value = IOV("yGhBIsssECdZUyqsyFG"), }, - { .name = IOV("tLvSvBVOgS"), .value = IOV("sScWgfajYyAVZuhwn"), }, - { .name = IOV("bMRUHaefJvq"), .value = IOV("yhaUjvyupmEVeDbThXQf"), }, - { .name = IOV("YWLMFVvvPvnwtsHXNyj"), .value = IOV("zxqWaawLGBwKgqGUtHfohxgfXrioQHiaCPLdafiaJsDrxalOV"), }, - { .name = IOV("HDAwTnrmRtYQhrf"), .value = IOV("aqFYULCjSEyQAJAurBnLgMYl"), }, - { .name = IOV("gBiptSwMLigk"), .value = IOV("SIDapbgoTJUFlMcG"), }, - { .name = IOV("yMYayBNLy"), .value = IOV("XgSIRHRbzXHNaSrPLwggsxzeovlUPQpRFvMtEfhqofsHpWRTh"), }, - { .name = IOV("QjekXjidk"), .value = IOV("xxhhJupvgmloKzxLYMZxtMtDcyMUbunDdYvxVHqOVfbZCxzfjstlWu"), }, - { .name = IOV("iEscwEDQsUTDfnFwT"), .value = IOV("mUMQXcrMEoYJqmLyozazbJKlbvozSdzjrMv"), }, - { .name = IOV("mOUgLBaPVZn"), .value = IOV("ahvnNTMgCXnbMbdAnpnBDmWxJJGNQoTMXvqWrhUACVTNvNrrsDjHeyRBVzaLAotNRAhh"), }, - { .name = IOV("a"), .value = IOV("wraPdktdUVbyLt"), }, - { .name = IOV("vr"), .value = IOV("GvhtIXyhYGMHIYvoJxceWwc"), }, - { .name = IOV("RSX"), .value = IOV("SuhivRKJmZjYtaTWIErxLjIUPtQlqjRetPtdkCA"), }, - { .name = IOV("oeplpBMlpNRIw"), .value = IOV("iEreVOvvzdXdLIGGvMUHnVkb"), }, - { .name = IOV("VGfopw"), .value = IOV("kPRiOAOfvesftoebIZlJvRTPCLTsoXdgkDISPrzkAjGz"), }, - { .name = IOV("rnGceMdnDt"), .value = IOV("kqDurLwwxyOa"), }, - { .name = IOV("zEXPHSBaGHQtkPwXHKuG"), .value = IOV("cEqRdOAJuZBeMKYAFozkzXoxKMEukrUaidpI"), }, - { .name = IOV("mBgvylj"), .value = IOV("UaiA"), }, - { .name = IOV("ascaREBylSSPL"), .value = IOV("aALMpLhbdXJRaYLvp"), }, - { .name = IOV("DSz"), .value = IOV("MqhNmyjKvXucENgyvXAEVjPyx"), }, - { .name = IOV("uydHoVRzZt"), .value = IOV("WjVQNIblVbUnNHsMHbdss"), }, - { .name = IOV("izrNZJdFZHrsxyvuSr"), .value = IOV("AQWbKscCoJgubRMDErPvgx"), }, - { .name = IOV("OVpI"), .value = IOV("FZMIpEbYngDIUQwdIfhwzF"), }, - { .name = IOV("sVvCYbr"), .value = IOV("LDzaOzawmVzVAxEKqLmKphiLUuMUWEpunufkNurHUgLTuESVXJeNasRpOxBiZSvqGm"), }, - { .name = IOV("VD"), .value = IOV("QMGthYwyiHPmAvAILgFSLBdZeDCbWCeFoFkIVmaXRV"), }, - { .name = IOV("UOjyAGxNoMVryec"), .value = IOV("bwbTfpVjgEGwkIHATwOmxCydLeAoxsJZRqSxnAqMcDkaRY"), }, - { .name = IOV("AOjMhwNOwQsGT"), .value = IOV("aCtjQkZSqvPfpfjZljiikkTNmpkrBiXRSudrUTOQ"), }, - { .name = IOV("sPLCkvRzIOoASddtfv"), .value = IOV("ShrKBOlikQeWxwfvdoUMNsRJhAYSBwbOVBXzcSmKXNxyWbeOefPSmNFjerkcwpcDFEMOm"), }, - { .name = IOV("InfZQbKRV"), .value = IOV("FcFihWEwRaoEsxvGVytanBXiDYXSkJ"), }, - { .name = IOV("ByRmIflXkh"), .value = IOV("ZdzEnqvofavgeHAtqMDrqckPOm"), }, - { .name = IOV("gjrcfWryinP"), .value = IOV("bLXevgRSGLaDmrJbmRIFHSRspAEIWPnLPxHYoCSSStqscmSNhYaZmalIFTYtg"), }, - { .name = IOV("ySfYlrHKH"), .value = IOV("RoEgBz"), }, - { .name = IOV("rKHxdCvErMeEjzpk"), .value = IOV("TZbnfDvkOzvlAJqdZZFwnPtHiUaGPfkPicglMmXmBHscPdcyIVKwksOmAsRksF"), }, - { .name = IOV("XVDiXGJDLAjNgtU"), .value = IOV("mLeyNmMfUXyeFeUqhMhuSxKz"), }, - { .name = IOV("UZTdNIdZTtTF"), .value = IOV("dlaDSbaFXVOMpRvJdBemAzEViqyMz"), }, - { .name = IOV("wwhfokCKDjRjnmGyUeJw"), .value = IOV("YgXZGDZBbHlP"), }, - { .name = IOV("yxScVHKVULnrhh"), .value = IOV("EGGJKQyaHTMcl"), }, - { .name = IOV("OCYaCm"), .value = IOV("AaMRBkYSOzKwyxmyyOpSGlaUMoBHWWDyMAEBbvMZSiOrhhIspwQrnWDemcJDliUIBBVFfCmYtTxgJ"), }, - { .name = IOV("gFDopstkJw"), .value = IOV("IQoVsJVForeEmrqYUXoAIHLNWvTpUyqvHVUrelhebarEFXtIxbwzKWr"), }, - { .name = IOV("gXUvXs"), .value = IOV("bAdtFFHQzlCyMCFlgSaTZpVjShlZIJNvsFSAFQmGeVOWpLeyuzHFZq"), }, - { .name = IOV("gLqPLKiUEeSRqPjbMjL"), .value = IOV("szOlllEyGEiNOUxjtCwXhdXVPxGUUaeFIwuMXOVfRgAZwbQnHyMQGQhGUvHHRWtTzsCzEinU"), }, - { .name = IOV("XjvnrJjIKvFbRuiNcdGP"), .value = IOV("ZvCHKvBfJKfFXGioerflbzXmFPyKaMBRiHIWXXODKUBdSXeRvGHAYNvvUFluaIzRjSIZrAcBp"), }, - { .name = IOV("ZjFQmofaMo"), .value = IOV("QeEwYXeOSmEfBOUbWdJEBPWPNELTQaRDImHLpicsSzsRLcSHmNmIHEgAuVpUKSnSysyMvjBVrS"), }, - { .name = IOV("Akm"), .value = IOV("AzGKRQLIJJnsdAMzDREmEn"), }, - { .name = IOV("CEPTO"), .value = IOV("DDuaGYMjoAFYGjWrMImyn"), }, - { .name = IOV("nUDkSjxPP"), .value = IOV("NuISIBfuHSrkUjGpqWtmlK"), }, - { .name = IOV("jIKFuzjHKmdyOMzc"), .value = IOV("nUPDYretgbFdvXpSEFVdWKAGKPqwQuzfLBdIFxwbn"), }, - { .name = IOV("EDYgAQHMuuPnmpJxICdJ"), .value = IOV("QzHQXpbSXrtfdsHlCxFQTTNJGrTNdvVAYXxfhsQyikCQbeqhduOlaDBFmOTtPihx"), }, - { .name = IOV("wZZVdo"), .value = IOV("eYDWOtgJCEFlDslRONEhPRUcB"), }, - { .name = IOV("y"), .value = IOV("VuAjHsGmHBYqakGDBqIUiDfjjAVgykluZiT"), }, - { .name = IOV("rKGeYzpJkD"), .value = IOV("WOxxlRVVIQIvOH"), }, - { .name = IOV("Ccvscv"), .value = IOV("iexttCRrzyZZhqKuXmrMlVQcPOMSqphuDe"), }, - { .name = IOV("ZUIctW"), .value = IOV("BaVfNdLLoNcmNwGOhwAfbsytMDsk"), }, - { .name = IOV("EzgDRVFQnlpXttrPYJ"), .value = IOV("AHHvaAOJOGwtVUCiezqWmonYJlwEBtaPMNwftRNnTShjfKsbNeDBzomQ"), }, - { .name = IOV("mxlFrtosLWP"), .value = IOV("QAzHhjfnKTUhosQOgtWywxanUVyVeaZEiSlNjvFDRJlWLBHfFQBTOsThrYFsYbDtuCyNSoGZHb"), }, - { .name = IOV("HIazJAYEqfEmYmyiuQXK"), .value = IOV("AMMCdcvFtCPkVJWSQSYepRLwpqgEKPOeBQEECdFDmmclEBLtjFneLluDhpANBnaPa"), }, - { .name = IOV("SoHJhMZkkJNEY"), .value = IOV("vBl"), }, - { .name = IOV("TzZPvxDDeMtBKcB"), .value = IOV("TcGdgAhlJkUGhBZcVgkiHiPgpJEJgqWqAmcoTGRvZDDIiAGjjHwpVphUdiGJHtTFS"), }, - { .name = IOV("QqhNmmjlWCCJ"), .value = IOV("OrCuYWoOnaStWjVhoBsCdjhPqCAtQ"), }, - { .name = IOV("PcunfTFLgStZYEqKMpEg"), .value = IOV("XpBCZAFXxnzgQmDRhxqmovWKzkuzEVzgFyurDALrULfKRGahjOcirlxjAgJfbNgwHrSg"), }, - { .name = IOV("KOWPWYMRHtVmXTGjtmMG"), .value = IOV("MrgwvWlMTghxMjEjxHQTdCEzjUJxIYczoOdgLuFxD"), }, - { .name = IOV("BYZrcNsLqxnej"), .value = IOV("cDoJLQpFBmxEdeDViZuelSVQtaBrpvIaDCfWDJORbnLkiKhGvLOMsoQ"), }, - { .name = IOV("DpVDmYAp"), .value = IOV("SBbWExTThqwbMJCMEHbRqYHDByHtqWiwMaJTkIyxeksFgdbQCUmNrhHzOZXkTWrBiDeegPGFUWxXqyPX"), }, - { .name = IOV("OpCvRiqgWGWMpb"), .value = IOV("bXkPSohlNhItNltJWfEATufEgdvAZSsMYNAtB"), }, - { .name = IOV("sAGIgObLufNp"), .value = IOV("DxFRnbqNR"), }, - { .name = IOV("YhgwBCzHO"), .value = IOV("PdPnjLAkhABrqFELmRKWYsSSqheRmBksXtOl"), }, - { .name = IOV("dNsziPqm"), .value = IOV("bIzkijwtIkatiIeTBoyxMcHYWBQqugnPRxoWrcnFkSrsbfJ"), }, - { .name = IOV("kYVclWBKCEBDPIRaxZaS"), .value = IOV("cQOSJrstemhYID"), }, - { .name = IOV("ARzYTgBkLkREeWYp"), .value = IOV("FiwCKvgBEfGjyFxKFZcyXrcWxgPyqDfbGZsjAFVAOSPT"), }, - { .name = IOV("pTVrDooVxl"), .value = IOV("xshhbJaGxUaoFEJkHaWuBQpuCcKDpCgyZQmqrfSkswgzTLsdiwJevPZRIryyOvNfahqAHncowzGqRD"), }, - { .name = IOV("gpwgcHebUS"), .value = IOV("YsbzyRJWeHWnJCcnlMpMQQCRsFcuSwafprdqcXimDrDWtsFJLbMeBRLFhHYRuYWufgrvaSLALzvrPRdA"), }, - { .name = IOV("UeagNvJYlGMwQLghtkG"), .value = IOV("zgXqpyfDSEOZqqLzMPYmoNJGvynCdnFSmGnFN"), }, - { .name = IOV("cKaSTGZJmJVgHhlm"), .value = IOV("rxRUruJgtyTPhDXcrwvZQnWNDZrMbOXgchahpGb"), }, - { .name = IOV("LMYwtQghgCwUN"), .value = IOV("XKxpGkypxMsjanlAcDlxRsTGPYYE"), }, - { .name = IOV("YFnwSLhK"), .value = IOV("mSPjkurJKRyUAvdQrGtEdjwWzgprPgqUXksmcWiLXhpAxLRsdoprOZplDRzrYKtCthwwxeoCx"), }, - { .name = IOV("sGsog"), .value = IOV("vWVeIcScexePobQybEyPTCSnCzYVEAlaFZesVeTMhrUjQpoxzkYXUjKIPRgDkqbtBItPHjdbpH"), }, - { .name = IOV("LlmzEVUQ"), .value = IOV("EqBLtSvmrxsEDtVQwZDHnQtLGQhbgVdxwvMTfoHUaYCuptmuMTfFyTmPVih"), }, - { .name = IOV("tQPqsYfK"), .value = IOV("HnvVompwZagDEtYbaGVuWCwCbIAfkvKBxqgAhsOwhOEbWbeyVM"), }, - { .name = IOV("MPlCcwujk"), .value = IOV("RXDvZWxQvsz"), }, - { .name = IOV("FkUgtdEk"), .value = IOV("ytCUSkdcqMPotakceAuqIjpIiLMeJOKp"), }, - { .name = IOV("GRHMwfBWzGbVpWpThlq"), .value = IOV("wuEbQJXeOxcuTMddtwZwNNDlDsRPaYdKipOdbxunNgsPuUgowfJWWePqWGtEQdiJ"), }, - { .name = IOV("EttsVm"), .value = IOV("IcmftgwulJqYqHrfNWhItKtlsTpTmwMbnhfvNaVkNOjUxuifNN"), }, - { .name = IOV("XTBMDpdXJZboegWCRngQ"), .value = IOV("ZkJUHQcuxLmYIzfKvAXxrfISteJIuTdJg"), }, - { .name = IOV("leTCBkoxXu"), .value = IOV("lvIIoLIWPwMiKCGqAzxuZzGGOrTNWkMpSgDfaGRvTOAAhyinpR"), }, - { .name = IOV("XgxzUGg"), .value = IOV("asvyEuTOzrdAyJSoVlrXIaRhtRlXJzZhspOFYIKclzjxQtqpKsIALFFiHEtssJg"), }, - { .name = IOV("sETnJpotJqvSgpSOXXO"), .value = IOV("NavsgFUdSem"), }, - { .name = IOV("qNj"), .value = IOV("MtcwxxyzhXdYjykTIAbvuiiIJMkAuLlGHmeZoOEohpcqlOClJnGujRQZiPrXNKzCuobEQq"), }, - { .name = IOV("OwsUiwPUcrvcQks"), .value = IOV("disdzqgJRbUGwetqmuvOcJfZGtWFMYGHgngiVliGajcpFaZdSx"), }, - { .name = IOV("nT"), .value = IOV("UmHBpqYwuUwcsRlqSxLzvwnqMZoCr"), }, - { .name = IOV("QYm"), .value = IOV("twDPM"), }, - { .name = IOV("AihpvRwvmdC"), .value = IOV("JEPsNpQmPOTVXfavpvlmsomYlQIYukkZaDNcpdVryqgPFgOlpfzqSGgvTNI"), }, - { .name = IOV("YO"), .value = IOV("vAlTKEbaKOGYPsBoUJEzRDhwptKGMroOyWqLZ"), }, - { .name = IOV("uKSgwfd"), .value = IOV("rpfyZaKqcN"), }, - { .name = IOV("vlZcLiyzWAMq"), .value = IOV("YGmcmoJKoVwxoYSGimzLtmLBmMzDeCXYsPnDdhyjFYetdHjSFiBoSovxqcSUT"), }, - { .name = IOV("DzsUCLyEghLBIjqsLfC"), .value = IOV("ZxMAUvWwZAIEyImNgnWEWOjgFmNKjOhGHNWTTyCaZeZXtv"), }, - { .name = IOV("fvwNBXCd"), .value = IOV("FbZXTrspcdQttMAZlgBKKDxiUdurubErIArrbmgJIaZSYJBLOEBkBMZ"), }, - { .name = IOV("sSNi"), .value = IOV("WqAnTDEsksoZMkRepSlblEhCqgjcObPloAFctgOhUoChvBNXXjuVwOEUBDjJzJGFyTHIlraCEGbMSLu"), }, - { .name = IOV("rJuXeEhiiHseyY"), .value = IOV("nUhTYEZHzKIKdbT"), }, - { .name = IOV("iYBENmWlDJTfqgu"), .value = IOV("vjyfmmPgEMQgCMlOygGgifQCtkdzMqUtWyAFStdHtfVKIamZyqbbrHQccuilLTBHYMT"), }, - { .name = IOV("TykRCgJVPRNffSffDxWU"), .value = IOV("TPItiLsJppSyRPAmnHsyqYonFusjhuUIsiDUtfsZZjslKYvZGTaPOoBSocU"), }, - { .name = IOV("pT"), .value = IOV("lRXbPXDBJaPvitedcNtbQGeMLgAdZIJdvgukeOiatiVcMgwFrzxJlqBXLcPEIEkPhXmQJTwFPGelz"), }, - { .name = IOV("JHsunpAaWC"), .value = IOV("zdIiDkxkqKsMXoajAqQQMXtyXsKSOMqxxhzMOJTsCjauJjqJFAjcNJYzjbGJRHgRSZxw"), }, - { .name = IOV("omuZobNbmafdIEbIoZa"), .value = IOV("JZemrqTUMOLkvxuaZolBnJmuyYymYFIclTZBBXHlOXeKkpgR"), }, - { .name = IOV("gGJ"), .value = IOV("ZCVZqQjKuIIFijTwjGTnwGHSaLARVCdCBsdptQSYAYYjlWrBeGWVpraSnfDuK"), }, - { .name = IOV("rcqgmhAnFfQ"), .value = IOV("kuxSvzgXkclJXkkkfkjxQLlN"), }, - { .name = IOV("FhktoD"), .value = IOV("gyZrmvxgtQfSKUDEDWiQNpeQJGkxJWhNMxbTdhaPtaof"), }, - { .name = IOV("nLaGU"), .value = IOV("yRDHmAugpEfQyXkzjGZtqcMtRozrSRIrABEoNhhBpNg"), }, - { .name = IOV("OLqjwxrmjRFZqmxeb"), .value = IOV("GfGzPxeuvzYqhnMsCdGhtnPOfRWRjCmDnilhNiHKXQIEFDktqXWVjreFrbJyKegB"), }, - { .name = IOV("OGTFMADHehVcyAzAqFv"), .value = IOV("spkcwOBJCnxBVhScOECqd"), }, - { .name = IOV("gNFlsCkkzBLXg"), .value = IOV("ontlzipQudWtfMprpqfKxxBTHe"), }, - { .name = IOV("QG"), .value = IOV("HidDgVMjAXdGJKdsveUwvwKCiheAhRpkkDwopjsIXTNQCq"), }, - { .name = IOV("moIVDugLJDjJqRaZWDI"), .value = IOV("XMqCSRzDiFxuItjFstcUtXCoWJeTKKRDOBzudvWEyWUsLqJuNtxfHIcQaGcewQgrjdwHGRHj"), }, - { .name = IOV("wDMZBZZEyGm"), .value = IOV("iDtmp"), }, - { .name = IOV("fWvCBklhZKofWVywhIEQ"), .value = IOV("OzkRcodFuDxOEufcyEGxKJOjfKpOizfZJBvJAznixxI"), }, - { .name = IOV("OMoEeCcFZaSglMJsDYov"), .value = IOV("MmKKjNDjjsyJTQmGmhNJTJoOsvjSzmTieEvqhQeAxGfWPcaaXWOqTPoMTlkgFnZwOl"), }, - { .name = IOV("eOAHBlzOEMTX"), .value = IOV("kBPlltPFp"), }, - { .name = IOV("xKqzEotZwGbS"), .value = IOV("myTRFVFaTWBUFVPuomVOdjYVfw"), }, - { .name = IOV("pcTjcmYKonNOuZZvjZ"), .value = IOV("lcgLNiQbDUGfcWpIPgISquIndzDmTGowRZvboAycNUwhftjcHFYztoHyLbSOqzSphbJy"), }, - { .name = IOV("QVgha"), .value = IOV("KhWuBhvv"), }, - { .name = IOV("JwriImjPZLATPt"), .value = IOV("LwygxGkORJgaUyKbkXNtzkQXbXMyPn"), }, - { .name = IOV("cQszTvwh"), .value = IOV("KaRTriyxARZWsDiFq"), }, - { .name = IOV("KrJfXhHMEiqm"), .value = IOV("GRPJapTeD"), }, - { .name = IOV("xqiCwOniE"), .value = IOV("ZDKzaSFKmrMphZJVoWEGeDhWkWgKXVwPhILArtZHAaiuKlghrmTnSdtQfojydjKAhnHWbGIi"), }, - { .name = IOV("hqXxcwMQo"), .value = IOV("EhVGGTUjYsJeytKwZAQomvAWrpobtvATWyNewTacyIZCrHFHiknimkFy"), }, - { .name = IOV("mgvorhyBckfhxpMmK"), .value = IOV("PhwbHkPCtfDUgwOrgpnFGEObWbsKzAaXafQUhuiNIqAGMiXfLGtinTULpbPDekfJy"), }, - { .name = IOV("ZiYGbzoklvwyMVGoRu"), .value = IOV("tWSgJbRouipWYoftQfvPjxWJNDbqXQdpBEWYHHFzNErdhogUjBTdBURswNhQLiHFo"), }, - { .name = IOV("uCHsQNRmsvZUuXbxZZ"), .value = IOV("OzKUalfOPQeX"), }, - { .name = IOV("oVchdMFkrcdeRLAXCTqe"), .value = IOV("udpawQjmxrKRCCYeMLSqkKDeqv"), }, - { .name = IOV("Eo"), .value = IOV("OoQxjguXmzxuSGXZVkJJZAJcpCIRCTMreocaIuWoDvZrq"), }, - { .name = IOV("xOBHBMYvINobLjdhzmVi"), .value = IOV("bnUmHuTzjiCnRMCxEk"), }, - { .name = IOV("ABDsIsyj"), .value = IOV("SbQuEjZXwnEtLniRkeVkIFxkElTRCjefw"), }, - { .name = IOV("xjLcoLGkPdaOioXuV"), .value = IOV("IoublOfgZzMSGBIOOWrurUrrBLoZzKrsZoOFxDe"), }, - { .name = IOV("IaAqEBWgurPnFi"), .value = IOV("hcTrLdEir"), }, - { .name = IOV("ickG"), .value = IOV("NIsFVhCneQwivQZXO"), }, - { .name = IOV("dqTCSuVwMjqvJyoPIoh"), .value = IOV("KQxswaTjoBeuqecJvfNxDrtQWCWypWSdbfzEJNsQLpDDMqHckoRpFIFHBfzWkiqTacdwlSDzRPx"), }, - { .name = IOV("CtyEFRtTjaNB"), .value = IOV("IXKXkJJUtNcIiyQUPVnnauBhxJDRvFWIZCcjdShev"), }, - { .name = IOV("uONmoQD"), .value = IOV("niLDmVdyLqwJLxGLVNCDTKhBTwsFdKtZdw"), }, - { .name = IOV("YFdqLAc"), .value = IOV("vaOYZyotrVdhC"), }, - { .name = IOV("odINdFmyTNoVbfaojB"), .value = IOV("KmIzyDVWjlabtloAPwj"), }, - { .name = IOV("kwTkdLhmyS"), .value = IOV("lbtCJFzDMJBwEQocHVZxLrmANIOyBtszaQMfRNXAMfjZWGToMONczFeicdrcnTWQRBhACeeoxR"), }, - { .name = IOV("zfrFwQrUJEihGkbVt"), .value = IOV("vMdjrqYbdJGkBlMEfBcFcDjBYaJiqSRBFqIxK"), }, - { .name = IOV("B"), .value = IOV("AQlGiMImYQqWGdjwCllWyxPNsYsjmBVztFJAwlXwnAGyUGlZyAPsZrCLbGROXvFMFqtF"), }, - { .name = IOV("tWRszaiSbjZBwSpq"), .value = IOV("eczKMUPVnFJEBdQNbLEINobWpKWYiqSv"), }, - { .name = IOV("QY"), .value = IOV("ctIBpVwRqK"), }, - { .name = IOV("EYCE"), .value = IOV("UflEwCOkfVtLgfRReVD"), }, - { .name = IOV("RqU"), .value = IOV("YQWSbyOMwqidILzqZClTPnBmOisnuXcbafzCZMClyEfun"), }, - { .name = IOV("JYI"), .value = IOV("fwQGacyMBlfRLLCRMXRElaKjKMmCUSPKWTLVFlktPccZlnFmgcoqDxkvBUcdZhhOQFTMtomoz"), }, - { .name = IOV("koWDlGj"), .value = IOV("GtLtQiMTMqZsDnFyYpLMsBNgiwEYIiIJNHAttcNOilQossgkFYBJkCPwWdIjyinTAkzxyInFLEyth"), }, - { .name = IOV("CIKopyQIYHyU"), .value = IOV("pDqNQdOuYaBVAcmmlv"), }, - { .name = IOV("nGmRNiClw"), .value = IOV("inhfmuWpyzocuaHOkZUZLSSMMfhOGIJbZGGdjEIFqzU"), }, - { .name = IOV("YE"), .value = IOV("wUepTUSuGduzMLFkDIAqZrLXGCPZUkzxCmAUAQQHS"), }, - { .name = IOV("OwJFdLX"), .value = IOV("MLXNxHEsbNRKiMavOFomnbUUK"), }, - { .name = IOV("mLgYlccyFW"), .value = IOV("qlotmDxEqoYJLJohhqkew"), }, - { .name = IOV("qGFH"), .value = IOV("gNRfAWDqpObXvPtZqaxSycEDRl"), }, - { .name = IOV("rky"), .value = IOV("EuIGISL"), }, - { .name = IOV("OyJ"), .value = IOV("XAoPRoZYLEOhxMLgzYDQPYjCakNN"), }, - { .name = IOV("PjHOZbWZt"), .value = IOV("mGUfH"), }, - { .name = IOV("aJjnjMSqsnvSMPDTes"), .value = IOV("qZkHYiHlabGPETuobRDTpaULVUGfhBhyTuZahLQKKAMZgYaVOTKGgkXuOnngaaUVSnzQWsnCnY"), }, - { .name = IOV("MptGBdbFV"), .value = IOV("tdaPWYXnngeujMbTVXyuMAErBzpsIDKsBNjRukFxvYQDthJNsApShTD"), }, - { .name = IOV("cr"), .value = IOV("BQFqsRlAsqZWKgWSOJFgWtKCyVrzezeFcQAiD"), }, - { .name = IOV("PbEBYfXvWAIafcP"), .value = IOV("UENCgAMNNqQEeqClzuvsGZiKMYYmJrTAXmDKoymmCeamfRmflTNEqQxbPRrEgRAn"), }, - { .name = IOV("nACQFwHXgNtEiYmRH"), .value = IOV("GcUnOdhQvzPKTTvZYozceHNlOWHWmeXgisJAOwJjIFkFwPrGjMuJAFiXzPRth"), }, - { .name = IOV("uocMMlnVkBLYGQjbFQ"), .value = IOV("wPFSpjCHXdizgqaWN"), }, - { .name = IOV("BmcG"), .value = IOV("QDWGrUfvkRrBdJCPL"), }, - { .name = IOV("UDRxSzcTgZzlcL"), .value = IOV("wkmzQNiTnaxNXmWgmeHMfbtEXKeBFjgUsxLbEwJGXJeMybwF"), }, - { .name = IOV("ll"), .value = IOV("bRGkcaABNkWXuCMeNeKVwFsCspUFWkEyilMdTVoOLuBrchExLUFcbACAaEFZU"), }, - { .name = IOV("ToMggb"), .value = IOV("FCompJxJIGnlwoBGF"), }, - { .name = IOV("pHtHoPwaCHb"), .value = IOV("vwVErXRUqjeZyLjvgOmKFKkWrjhQekYOZzAQzUDtvCmyVbLapKxYXWeIDlNIgBxDvkzZKDu"), }, - { .name = IOV("MVPmggujZiuU"), .value = IOV("LjWLIFhoncWZpMtrspzNAvaiicnbbobudPJfVpaOCmyRtzpBNUCVtZlRueqiernpyJDnxCJjcZzDPLC"), }, - { .name = IOV("OsyL"), .value = IOV("GBzKLdsknssSDAsPaTiNubPXLfBSGXZXPmdPEYPOBJEsuMGnuRBVgwtdEXjcsVPHFspXwXyTtXW"), }, - { .name = IOV("gZHmVYHCFpoQXNNU"), .value = IOV("YpiI"), }, - { .name = IOV("LifckEi"), .value = IOV("qTIlSESNTLtMABQUeNTEaPHQGQPTnWnFPEBvNcLYXYvIjFDMWH"), }, - { .name = IOV("CHz"), .value = IOV("rrkwwNfcGlPIRCopqTUDIcRgQpHfzqYimcsbwAUyvcaLxidqnLXUbjjtwlbYkvigUUGw"), }, - { .name = IOV("uR"), .value = IOV("sDRVOdsjsERhbMSDklVJWWyxqaPYsDyUMqjYWrjjJNLmxptcZ"), }, - { .name = IOV("OHz"), .value = IOV("cFJENsbnUuRYrinlcKoksgVaeUBOJhbyTMIlzpndFtqnIDexxfDJbLuwhLCOfsFiaSnwY"), }, - { .name = IOV("Qubfyq"), .value = IOV("kuccROYEkJjglJqHkMJ"), }, - { .name = IOV("LtxZDYzLCczxzWUc"), .value = IOV("yRhsdlOiRjtNqXeGWEOmxzQshHMqvTiB"), }, - { .name = IOV("YlXaITvDSwZnWCOjUf"), .value = IOV("OXZTnrMdAtldxdcWJlQnT"), }, - { .name = IOV("Lmb"), .value = IOV("SFcTBNOzVkLmhITNbjldJPkutylaVZgdGQrBfKWSqptsbBItOqsIVudilOTYdTEZYRvGArioQHpRog"), }, - { .name = IOV("hqBIbnpsvt"), .value = IOV("tyhLIuqsKbEhsCTNlqBXzOEwAQMpvIUqzWhGhSSucSennUmqtVlmPImDyzxTzoTnkVvCjOveP"), }, - { .name = IOV("AFZwhPcehyhWgI"), .value = IOV("arHpatEgzParqKleCmRFNGWTdJDDzPWHowgBv"), }, - { .name = IOV("IyOWCOwppPctLy"), .value = IOV("BM"), }, - { .name = IOV("EzryXabSz"), .value = IOV("UbsNUMbGVDrLtansISxLjWExeXtQkOAUBgHHRkSJOriuuUuPMKkcEBzLeEdAMQhsq"), }, - { .name = IOV("UV"), .value = IOV("MUz"), }, - { .name = IOV("RGsiZklBcqJ"), .value = IOV("VdocjqTJvgKzDuQEJOnBCotUXAqqlijmYZOcmUAmPgoxdiUJfAZfnPpNtnhRLt"), }, - { .name = IOV("GCQXAnz"), .value = IOV("fCpDwIYbyRXZuDOtLqZUbFcDIhQRpO"), }, - { .name = IOV("xjaDbDDPOUPhMNxWoZ"), .value = IOV("zLHoRScQLXPpgC"), }, - { .name = IOV("M"), .value = IOV("cpVWMULaybpszPtxYHfHGwRWnqAOOaTPPRDOBUSWvOORdKeBpejoch"), }, - { .name = IOV("sFujlZgaQiWZhCBUBnL"), .value = IOV("fiMwAgQntkgTZktaZGxNpmjWEeFynShfDly"), }, - { .name = IOV("itcgDRbvklOCXDCms"), .value = IOV("hbPxQMsFpyKUVqmhtNfDcyGGTURhBuwytmwdmXzIdMUFltuLyf"), }, - { .name = IOV("pltnnyeLgIZHHnsAsoV"), .value = IOV("rTSkcKgVxJtgwktdvXRboPXLuxNxmpUfSbSUbLGnahjRKsVfhuFCJcsyp"), }, - { .name = IOV("xEclNqaaSbdvZG"), .value = IOV("yfCusHhQyQrptpgvqOzJOMfkYjbmeCZyqgOkiNi"), }, - { .name = IOV("TMUqSURFRtzbyhrJtr"), .value = IOV("zrzpwNPRDFzobdHDFlxdRbkAOcUWCMBWrdJFVJuxbtzyFvhmvfqioarTUfTZGctZhgZBRfNCAa"), }, - { .name = IOV("lCJPVn"), .value = IOV("jIEolkRQOIhPJxBOMwOBVQkvovLRrmAPHRXUUzUwDFxGvIzOKYtgNxpxdlCDVPNgWugkvPLqquB"), }, - { .name = IOV("RfFG"), .value = IOV("wIXiMlZjdeOAArmtjAftaTmxUbWYwWNLzS"), }, - { .name = IOV("NXX"), .value = IOV("gPJBiLdXaKKzdnQTFdqEQqLqJUb"), }, - { .name = IOV("Y"), .value = IOV("FZUKDWrRFfgHrYfizfcACthTjALKinhQhcOYvFEghxUk"), }, - { .name = IOV("JFlHRoFdUURAdk"), .value = IOV("mJXpDAJCRTLEMLXBbmwGinBBBjntUvCzyAQKXwFhCqxfQoYSpwM"), }, - { .name = IOV("CAAqzrnwmDV"), .value = IOV("QlIYfgNNugDAeYmSmn"), }, - { .name = IOV("zjcnxTWRwigOAvP"), .value = IOV("xfWOreXkRSFtEJRPnZGQHVEIm"), }, - { .name = IOV("wk"), .value = IOV("ULxsqyHMSrdQCBLFMsEPjAooFMhCbkvrnGLptMHhIIGlJXjXSaMIDvsDzjygcxLuanSUNdZEz"), }, - { .name = IOV("EnqHbMCeggkkMfKNq"), .value = IOV("lC"), }, - { .name = IOV("RbNlhLFTfwsRnqNrqD"), .value = IOV("rIXQcfQDdDWLKOfzVo"), }, - { .name = IOV("BSYwwmOk"), .value = IOV("wtxxDLHOlbrtlTpPYdBQxJrmqSxDNk"), }, - { .name = IOV("AfIhZO"), .value = IOV("MYqqZolCoizRMETTufqFwrvypbsOSxDIifvwxww"), }, - { .name = IOV("weWqgFRGaVi"), .value = IOV("cqQjBFGlFkTcIFBRbYqKHJkvIov"), }, - { .name = IOV("NqEOzvok"), .value = IOV("NHwRdVkbherrfcchrzktIEKKnMvWLwMLfsWbdeeFzIFSLFMOQWAyoWMpxZ"), }, - { .name = IOV("fvoTZJazMiyzgGADf"), .value = IOV("RSNDQSaNKLanlW"), }, - { .name = IOV("VRkIuXCkrBSi"), .value = IOV("mPEsRpfgwWJQivZZusPsOtNHDnGGqyiWBFTGxqauCTNzeHFVShKROKnJxGhNFEy"), }, - { .name = IOV("dWlbZCVHCYAaIFhwgZtW"), .value = IOV("yGWUbERHrBIIdHHoArCTePqyAoNNjAmNmEMlBfwnUdoZ"), }, - { .name = IOV("iBBuZPEHALsbmmtvIHJ"), .value = IOV("gDNqvSWNOFUiRFOcXORaAKHWYfgObiZQODCmnurJIaQwbHwwEaBkvRhPWXffGvrCHpcMchQQUmUob"), }, - { .name = IOV("kjHD"), .value = IOV("hveKMxAksQPDexdOqoIcfctekambImJvruYtassnSVvOJozYkWjDVZKfAPmmue"), }, - { .name = IOV("vplXKgvtASN"), .value = IOV("tqpGsKEIGTcPNBRtKKqDESsMGbSnoFmZUGhmONQzSaRrhzoxlMpTwXCAPElgABKIWQzOVieWpfto"), }, - { .name = IOV("djYOJ"), .value = IOV("WSTkuqJMMziDnVTZxUSTidiPIpwbDeahOhZPUYAkYEpScRGzZjeynFvARTDbPSylULqPYuy"), }, - { .name = IOV("PDvMSlTxeG"), .value = IOV("V"), }, - { .name = IOV("jQttxhuRLcL"), .value = IOV("iiQIdvtLFzAAexQOEEFVarWnjHVNsuyRZSQUYOKsBWFXZt"), }, - { .name = IOV("aIbVAJM"), .value = IOV("RLiCTYFcHjUFTkXOrHTvfaWqdOLnmCUEdLjoJuonbwV"), }, - { .name = IOV("koXE"), .value = IOV("SupFUOIecSveIrZDBvIsqjMjnkPJcysRnZXXjeCLDabuYABRJJRoMiKELdxbrFfAhqoLxJrLn"), }, - { .name = IOV("wDqqowzhimLsk"), .value = IOV("aHogbtsBfaJgJYxwepzxbbVGELqBA"), }, - { .name = IOV("G"), .value = IOV("KGBccmVNPXAmqwZMJmEMabRSopfAhofFSAdfNET"), }, - { .name = IOV("SWRFKpPk"), .value = IOV("NKHXjnMgYLeExpDOBPegPHRkbUMAjrSUDTeJhBPjatzhnSrHqxGTyVOdEIPUDSJehQ"), }, - { .name = IOV("iPOuoSdyLDVLqovotkz"), .value = IOV("VTpwrEAlLUPaaSEQQTguXVVHA"), }, - { .name = IOV("pWNrwZfLPlHO"), .value = IOV("OmsfRaynPqoYUxezeAIiEkmr"), }, - { .name = IOV("DSyyX"), .value = IOV("GBpkQYxnxKcmJuiogGULNaHYv"), }, - { .name = IOV("SiLtrpwBmdrF"), .value = IOV("dMUtWNDOjnEIPASaLlZhDxwtEDDqxGVPlPAIVJlItsdXohWsTtoHiXCJykQGGXuPJ"), }, - { .name = IOV("v"), .value = IOV("AFitXzvGzsIMyhDLsFfWqZWGrGrTpPQuLrrpBXrfzYPRqruJySRPsVhJBqopzWoXQasCCb"), }, - { .name = IOV("cSDrRDzYAuxsvL"), .value = IOV("VVjSpAZSysrfmUcLOUSvpjpymCbFqKwXtkRgzPXeI"), }, - { .name = IOV("qFgITEbMRtE"), .value = IOV("CwVdUQXkCkROdYYFkqtyoAcshZlcoVUampTUNpQYPIbjWROpUSev"), }, - { .name = IOV("gMdzzNsEx"), .value = IOV("HFClenlbXpqvYnDnGdFFtqjpjcVKRicMeEvDnseqpockDSSvHVAODevBw"), }, - { .name = IOV("uEdLqz"), .value = IOV("CAkfWnSwBAzZSPKnQ"), }, - { .name = IOV("scoahtjBHX"), .value = IOV("GYUBuvkNbwlFZbPDlMpaMnNBitwIaAqzFAUPHopPKuUvXeNMeFmhLaODedmQREPQgfJgS"), }, - { .name = IOV("InahQHhQ"), .value = IOV("uDXuuszeLWmpNBlSfMOvsmiDFWEZtmzNLqFJCUZFMMNUetQJInRMDWrPAya"), }, - { .name = IOV("kHjVqkbGiwBGT"), .value = IOV("RiJkniQC"), }, - { .name = IOV("MgEjyr"), .value = IOV("YmzeQjVcjqnuXgtyFrVgberVcNOSFnzyIQEHeuZeQPZpMZdGzsWTbXMtsPjwsSFfpJesJD"), }, - { .name = IOV("HncTEgQUv"), .value = IOV("vERWMdlWH"), }, - { .name = IOV("FYe"), .value = IOV("gRpKfUHYtUDfCPwUHRixxrkxLmyaCMXqrKIBzjypwqWENPfPCIxACtioXDzCqPiCBJbB"), }, - { .name = IOV("LrBd"), .value = IOV("DPgZqybQYTUknjOnSszVXqnSfoTgGFfViSczVzQYyiLTQyhGOTlSaTwCIDCkbtXCGjHepsyOF"), }, - { .name = IOV("g"), .value = IOV("aAjiccpWliNzMsRwcUGlIXyRxQZeHiDAryYrRnKg"), }, - { .name = IOV("RcaIdohrxxLco"), .value = IOV("henxaNKowohXLRSUEbbkoTNAWMUFdIbMyRcGPZPJMkXVLHgWnWEXAPlQpsFbrQzjsLhLwY"), }, - { .name = IOV("VHgPEEReUMLvGkv"), .value = IOV("loopvwQCkmGCfrpyUUDfbeMgtltXrGKKCKGpOWPMrxYRbAGkrLqbGvrdNCtYciWkelagsR"), }, - { .name = IOV("GdwVAXtP"), .value = IOV("tCpEMOxzcvmDpoFmseKdcpUppcYDdynZAEvLlkeCANoTZflpJXlUZfGImaJoLLwFZvq"), }, - { .name = IOV("evBngIWDMdLGpBeVYg"), .value = IOV("qFxkYNNlBzjscsUBupshHoeOQlZKyEnCujHKROIQx"), }, - { .name = IOV("nBhDoAwnMPjZjTiJXsS"), .value = IOV("JhheMHoENrPpLGeXmNlEZ"), }, - { .name = IOV("bhNBLa"), .value = IOV("yWcFJjYNaMtZWhEolheyJFokRNKwvRIOyoLakpHRlOAKiLVaNuFVAUxR"), }, - { .name = IOV("O"), .value = IOV("ZSbLeUHWmutqhRdSMzLFEUjczypmaokBLdNrgDrSyCzhiByMTgAAuyGsUtuooKKZB"), }, - { .name = IOV("TlTONKhtsMclkET"), .value = IOV("DpYW"), }, - { .name = IOV("MkTaX"), .value = IOV("krFXFRUsYoEQSaMqGcefoCWsiuIYBZsbnMSFJdjZwXFUpCPccxvUWRkXwwNXRmAbGItYCAJz"), }, - { .name = IOV("VGgthesa"), .value = IOV("vvYuvdItLLzMbwRYoavdjDuc"), }, - { .name = IOV("XzFKkJdfQcbdUqvcNY"), .value = IOV("cdSGQftScFsDvYG"), }, - { .name = IOV("IMm"), .value = IOV("nZZaGpgIQCpeTbgslQoJATBBtViCQrqGmnnaJulKYN"), }, - { .name = IOV("HNfrZZTuhGvgzGldpiFD"), .value = IOV("WwTtPEppmdPPorepmNFCOeNKHdnyEOBaBOaYHogTGKCmJksUF"), }, - { .name = IOV("ZLvAOLkXxwwFPKe"), .value = IOV("yfqGYnkJokiXYuihtPytKzCeGyCqmkvIzcFwGhTDxnUCzGVnH"), }, - { .name = IOV("gE"), .value = IOV("zGRONTXoQkTOIwYItfwqDaQFtmLbZuPvnZ"), }, - { .name = IOV("ztwB"), .value = IOV("cVMNNskZDVDxxtYHPYbHbdRDTERDxmeFikhavkTGSbkVM"), }, - { .name = IOV("Szu"), .value = IOV("dJghDxddDvEHEJUpkNbOcLSimrncLOzVRZdxpAXZSChQIGDDXTtMxYMzVNhnApUJ"), }, - { .name = IOV("b"), .value = IOV("UChYttdMSsYTrAJrssZGmtttnOJGMbzbkeTpMh"), }, - { .name = IOV("KIsbAxnOLgnTxp"), .value = IOV("XXgssykBkSBUeNAtCUQSLGAyLZJygVapiANrVzfQVIYXqiTcAimlaVYEUmhngUEFMyJSwObAkcQcYT"), }, - { .name = IOV("ZcjrGTLxXWrZBRcoxALR"), .value = IOV("qpCXkcRsCiDSoWT"), }, - { .name = IOV("yygBXmamIMQMQmjwtz"), .value = IOV("mApeZBBgNKTpZpNbfIBclMHjrxBmgEdT"), }, - { .name = IOV("rZtxYoQcFVdGwX"), .value = IOV("NomOECQJYhTcYAnPTkXUISgHaMxpkdWRcHKYdLRuhqKU"), }, - { .name = IOV("LSIdKKNytjwwWTVcdeG"), .value = IOV("epABMHi"), }, - { .name = IOV("zbvdJLhcDjIZVUI"), .value = IOV("vhwPcnjfXxuXCLYrSVLybDdJwCunrFVdmNRis"), }, - { .name = IOV("XHmUzX"), .value = IOV("ifqpRQBYfJtuLCqCWXEqYDLxErxVrzhhhTXAQmwUOdbXXjmVPuFFU"), }, - { .name = IOV("gfueu"), .value = IOV("sibJxiAxhZMgzaPrjMOUjzcvahXfPKplAC"), }, - { .name = IOV("ssjBjZ"), .value = IOV("jSxRxPuwBqRjGkgOMvuTEVIxQertgrDFIeM"), }, - { .name = IOV("afBBpWlyzkj"), .value = IOV("Bph"), }, - { .name = IOV("vNllHtPqEvbiUEwr"), .value = IOV("CHPyuuOHSNEpNLKMvFsbtgnAzxbmjCjQqNIgCBtqSnEZRTLKGZjVUuVarrV"), }, - { .name = IOV("BRfUhoqpjsIo"), .value = IOV("bNuqGeqHhGcDNdzzJPWHtpfOophJjDriZOXpXKxyObOdydNBqSpmEiMJm"), }, - { .name = IOV("xxLVigaLlaytTbj"), .value = IOV("mvlkwaudtkFJmHLwvakQQJLAdHgUYnsrnTCWGiAbihXgSkcBTGVxbvmGRyUAEqm"), }, - { .name = IOV("GYcDnTah"), .value = IOV("MknAqzLutuVxGdWcbtBWw"), }, - { .name = IOV("BhJqkZvnpROAHEu"), .value = IOV("uauGtiMVLYFpsGFSprsZVKyPERttPWXQDcNJVfRXWcOqoLoZWDAzsUmIXQuCotLWMtOtpKtKFVfudVHZ"), }, - { .name = IOV("TNqVRDGrFEVkrLwJX"), .value = IOV("dad"), }, - { .name = IOV("LsOgNNSgRviTSsDi"), .value = IOV("jOhNGchKUygiRXlaCtIgrBLgtaEEASEecxVRybdWojFOEwCUFkbDAdnNsMXcV"), }, - { .name = IOV("mdvgP"), .value = IOV("viqPYYncImcjNwYJyuOEhpirjW"), }, - { .name = IOV("uItgaE"), .value = IOV("VsADEIAPyCjWtpVgWtxBOHQfbrzxZbOblrGRUfZgdVzlEEH"), }, - { .name = IOV("uJKegxZETCiPoBqv"), .value = IOV("FT"), }, - { .name = IOV("TKiGDCqHAMW"), .value = IOV("zKXmfrfReNVWkjiZXErFoMidLSDehRo"), }, - { .name = IOV("i"), .value = IOV("FroBjlUMTmRUFWQRVGXNYdRRWlTHDoFszXSxcWMKDbpapiVFObepKgM"), }, - { .name = IOV("GOsSoiwEJ"), .value = IOV("hUwiEGpOEEE"), }, - { .name = IOV("QtoMcbgOHDxXzL"), .value = IOV("wlKCbxXkprEQpDiN"), }, - { .name = IOV("NAUEMt"), .value = IOV("btcyuQJRepmCFMVkerDbglBhOOoduWjSAxAIUtCtSZfTMjNppOEPeUpESTNTgaMNybqsyIUVwZOh"), }, - { .name = IOV("BzKNsgehlfsLAYbYhn"), .value = IOV("dQiSUoERtZibvNesSpx"), }, - { .name = IOV("UxeCpWl"), .value = IOV("glXQIYQtFcTuLYCEIGW"), }, - { .name = IOV("hYLmbxvqO"), .value = IOV("itoujIrLKISQvivFzpKmoeesEfanMjOBCorHDWhsTMqwGeETABILeaPKndDACyGItGHNehc"), }, - { .name = IOV("w"), .value = IOV("gIWcGQDPcYJATWn"), }, - { .name = IOV("whGMXGTfrdbLIJiBFfe"), .value = IOV("hEHteqgAsPRnjMYFSobMu"), }, - { .name = IOV("QNdprePEULESPzdaSYYm"), .value = IOV("AUuJQrvTOPzqaWaKfmPcgxSNJdKrOLIqSwEVXVuvDoVVsQ"), }, - { .name = IOV("MFHMezD"), .value = IOV("msMUHEkiDoBRQDMeTZdXMAyimnCIlZiYAY"), }, - { .name = IOV("kskgLXkJy"), .value = IOV("thCbeCYVQxpNODnJLkeImsYz"), }, - { .name = IOV("QHFxzctXwBdCoaOYwqh"), .value = IOV("TTTlAbCLtKOZsSdxxaOQwjHSfnZKoJWiPbCqgmZTubVtIkwcOQPPJvRQELKUibPjyIvgBemzX"), }, - { .name = IOV("wrDyEeJEQSXJWeUImU"), .value = IOV("RHpjrLasyiUfrVGtXgiVP"), }, - { .name = IOV("DfNnwOujbCM"), .value = IOV("QiS"), }, - { .name = IOV("wRpDiF"), .value = IOV("T"), }, - { .name = IOV("LhGWSWo"), .value = IOV("uAMRvshbQrLBaLqSYiIGXqJItQUnkeiWwtzOzMXTxScb"), }, - { .name = IOV("rCtsODPgW"), .value = IOV("F"), }, - { .name = IOV("YZeanCWl"), .value = IOV("yVTxpMMarTGfhujHdYZsnkYHXFWsKhc"), }, - { .name = IOV("BZGbiWZoYuSaIvnAymm"), .value = IOV("lUzmbvAxFEDvIOqlPoPcyIpxFEhrXDoXDkiGORuXdvWCsfNrUnLFPaLXpqGXwTIvBobcJCPcdIdL"), }, - { .name = IOV("foAdstKPrwiQ"), .value = IOV("CohfKWBUIJRCzOouCFrz"), }, - { .name = IOV("xTcveRa"), .value = IOV("Iy"), }, - { .name = IOV("kAyxqGsmiFKljHbHJu"), .value = IOV("pSnjETugWvFNmRMXVaiIOcqmllpOwHRbmuPAYGXyaXpuBtbHLPxktw"), }, - { .name = IOV("PedjVaKst"), .value = IOV("qIsjfUJhqHOyCjXVgpOcqBPtPdiPVq"), }, - { .name = IOV("jCrGDMTECDXY"), .value = IOV("OJZYJhrUZpWLmjHXDhAYMTykzgDLIXarNBPEDXSkDbxSLkUbVNUzxkzkrxXfHlKvocCB"), }, - { .name = IOV("dsKhNRXeIDbKmujuukQ"), .value = IOV("rcoivaYczxAsWvZaNIImtGJgZzTCZLTdAAQFcRPgiNpMxjoBSQIVokSdbRRttVGksqcS"), }, - { .name = IOV("myuwPXWRwj"), .value = IOV("DrJcQxgwOPzOkvneTcesZtocdMuidvplOiZBFFBtImHBySzjAXyTy"), }, - { .name = IOV("YaIeFpmlylOUlOCPKKFY"), .value = IOV("TbbsMeKgHHGVpRrjkcKT"), }, - { .name = IOV("zdDFUrWhkVJLbD"), .value = IOV("iRhbjgmmTQiDOerxNIeLsefCHCKNbOVMxBpZzSRGNYRCQfSUemhlTsku"), }, - { .name = IOV("FlgYPGfzIrQ"), .value = IOV("vjINwrubCJsAuGNfdxpcNWgOhrcXZ"), }, - { .name = IOV("XLjzyUGrvQrLICm"), .value = IOV("zzxFjClaMdoJbxrKwhFKCBqqoaBlyVrWDLEraekplCaPCUxDHjLWgp"), }, - { .name = IOV("cwqwyzZjMXjbvRCAA"), .value = IOV("KOnAlZkvDABdMKFpLx"), }, - { .name = IOV("vHFThALNYiCCcnAlEgX"), .value = IOV("EEkUwSPDV"), }, - { .name = IOV("CyCtjW"), .value = IOV("ReEujjTXpGsnBSolugysiP"), }, - { .name = IOV("cqNRvfNYbnzlRGMKnWlR"), .value = IOV("cNKlragGNcD"), }, - { .name = IOV("gR"), .value = IOV("diorCBJdCIuMKOrvpjFYLUuCJEmGoDdZypyAnqJNnXOpiy"), }, - { .name = IOV("yuhFHivPsdCQh"), .value = IOV("rAaBDGLywxHjzxsKuqmVHS"), }, - { .name = IOV("NoKOZOE"), .value = IOV("OBjF"), }, - { .name = IOV("pNp"), .value = IOV("SkdUXNjDEkRglViJrsBnVRINSWAwNCTUdfXCYFotHBNEhcxkGZ"), }, - { .name = IOV("KmoZiBcFFSq"), .value = IOV("PrjitHItdQDALAGrJUPLHCcuOxTN"), }, - { .name = IOV("A"), .value = IOV("vJQbpdRhDqDJtXkIlRcJvZhJDPlujfTregyANKQRDfuXaoJaMvhy"), }, - { .name = IOV("ypVuMP"), .value = IOV("RcpHYRFehVJQbYhskmiBQsBhNrDWNQLUyXw"), }, - { .name = IOV("TwyPlprekM"), .value = IOV("mprPyYmvNyyYmqIVQpOKpxodEWOPxSNeGSLmHTnZVGmhidkayETUaBNEWKyCMjk"), }, - { .name = IOV("SFkakIdUsSITekAm"), .value = IOV("okzbqRMyZXeRwqMNnFDXGKoBBCnVnsZRYmYYgQtFdxeevLEzhb"), }, - { .name = IOV("fYLvYR"), .value = IOV("GDnmlHR"), }, - { .name = IOV("DvCLUVywTwh"), .value = IOV("orWcLEvrhhA"), }, - { .name = IOV("oBdLZXPlLhMyODazk"), .value = IOV("tOhFzQtdUjMOiEz"), }, - { .name = IOV("NhbDYmlPiw"), .value = IOV("YYRjVgnnwnytlwrqpvzNtIWhCRAXwIAodZuBiKJxzeZvJNnctyEUenfdpuMiAWWKHSFSzaroimhfROS"), }, - { .name = IOV("BhGWvVfsyFDSWtGGL"), .value = IOV("p"), }, - { .name = IOV("krVfkddRwGa"), .value = IOV("HramWaDlYP"), }, - { .name = IOV("XiDafO"), .value = IOV("FldFbXBubKBByMatmvtikIsZgXrASFyrWXktyWKSVPHdNPBEzERpBigZOokpCjfHczoCweqTNCMx"), }, - { .name = IOV("uK"), .value = IOV("OuYQtHFJtoYzoThyyxTcAHYzbOJslQjcZSeUDTIHVaxHJbTDkXnVXnAXbmHAWqpWDqmVIrIoTVghq"), }, - { .name = IOV("V"), .value = IOV("JStxsiAeXmHUQyQDiqfaalLLTGWgOCZIdFsPou"), }, - { .name = IOV("gARdcbgFxtHfIE"), .value = IOV("hxCKhHWkQdREApGNtsVcaPhibhMplrIFsAEkQIJhGazkSlQRU"), }, - { .name = IOV("AjXLmKqXKH"), .value = IOV("LgdGyXwriAluBUqLscGeuRvhCiBcvncMqNREckwtaHnhXvDoddzGZdbferXU"), }, - { .name = IOV("ONJfMFocEkhkFQ"), .value = IOV("ZTViciCIty"), }, - { .name = IOV("hmWEqaboHnpEHVclyLfL"), .value = IOV("CseKCDseSauSgBgwGDveHqOYDXoVTIcfsDwxyjggGSf"), }, - { .name = IOV("poGbrsseo"), .value = IOV("seQTualCNwspwsNPkMEWirywcViWHZyK"), }, - { .name = IOV("ukBbpRfKe"), .value = IOV("sIkHpcfUbwCGsULlauixQagpAnkLwCwyGFEwIAdCnAS"), }, - { .name = IOV("WiZslbLsvQQ"), .value = IOV("aMAaijQUyIkSWIJUVJgyfTstaU"), }, - { .name = IOV("RRczZdnrFwyJxk"), .value = IOV("TgRNFcKwtorSMFtgjLFumUUtTGZFkFqJEzAVIhCIlcaAHHxZZnsbHYZgXpGaGeiVtzMS"), }, - { .name = IOV("BFYOM"), .value = IOV("PPJbroCsNsYJbMqghPoiprSvrSTADootfnHUQQodWIrIqWTpvsQiouTyOHq"), }, - { .name = IOV("v"), .value = IOV("tdfeHjZJEKJBZ"), }, - { .name = IOV("DCRLcDcPfC"), .value = IOV("cwQxHBUxTWFLIevjZFBvXVFQGOHXWNujgKjvBXdVPbpthJl"), }, - { .name = IOV("u"), .value = IOV("LuhLBlUmisZQjOsnJQTyQnowotLhBfyOmzcKqZaFDWpWcTudRNlWjfkGDvxayRhGDbSHS"), }, - { .name = IOV("SNJnnMgwossEcpKqQKYB"), .value = IOV("dSG"), }, - { .name = IOV("HYfqCrVPaW"), .value = IOV("YZIupfAFIQjupVsicweVxBMoefnDDtKSjstCBxSRTZHGZNgIqkzBWXWjsTHcyAHIqDQLoEDsnZtTtjx"), }, - { .name = IOV("qExPFCLDCIYn"), .value = IOV("XrMXgRyeDdOtKXjVrLECQRRInlBlQFaHFktvNliyKCAeNVDu"), }, - { .name = IOV("ScqnEmbMKQIjjB"), .value = IOV("aIBRadsqPAXgVgThvdoHcFcmpG"), }, - { .name = IOV("alwthYiqpRzntoQVG"), .value = IOV("SSVyDDzTspWgDsKfsENxhCDKxtOHFjOTozaaQxUfkIlqwTkfvPikArEiqmfGfIGgJrhzSZofCFx"), }, - { .name = IOV("SowH"), .value = IOV("CZcxuYspsoTZsbEiDve"), }, - { .name = IOV("PNoZIWFpnjQdR"), .value = IOV("YIsfmEqCuvOIFVImYUIsRHRCDrRbuflSlHoXVGYicmLppcZlFsyuaAgVKuKfzJbCZNIaw"), }, - { .name = IOV("BvvdXxbVYfPhTXzv"), .value = IOV("TORjetuADQzMDPinFWJxLvHSaIyZgaKozdvYYNVeaOkdgUphTzfUSBGYyRCjYYkIgkc"), }, - { .name = IOV("ibzAxixxMHntwHtovCE"), .value = IOV("ZeLBGrhjsAPSiqyfeGfjuAnlnVKtCPRtqcUYVRFaxOZBzUPSLSZvAYmbKKNflmHnkhfyisfZxWGTWTW"), }, - { .name = IOV("GrjGKgmdoXeE"), .value = IOV("qajWUtJzcUqZdbsMnEQSDKnRFtQzwJjSOXpdBaPUaM"), }, - { .name = IOV("sMvRpv"), .value = IOV("iWbORJtCvPngZKnHrduFtzXIEOyIrCfl"), }, - { .name = IOV("TK"), .value = IOV("XPjLBKxXNsLKnVFJuLJegvMEZkN"), }, - { .name = IOV("eLPMEnBbDcSFT"), .value = IOV("BydKvTaIqaQURIa"), }, - { .name = IOV("QfJd"), .value = IOV("LEzMxxeEjpdzAYgWTQmywYKmAWSdgLzhYSivORWHArHnXIeHVNLiaiJjpLbskSmLKHtOOjcMtGTLfWkb"), }, - { .name = IOV("WESgOAklgmiJapfkO"), .value = IOV("VwEWILnGSWxggWDOQysDOdd"), }, - { .name = IOV("GsaBUmnKHSQmJkTFVUm"), .value = IOV("orLFfeRpxuBiwrqbayWtVQVvqeVwdAeSLZbQpQoKrwKxDQ"), }, - { .name = IOV("ilRqBRFVvmMuPlKMoqr"), .value = IOV("kRAGcbPIraLPIErBPYHtyBqBGylUteBuJRoYmGXjAyetEyVeGJgoQxpTfyyxvpx"), }, - { .name = IOV("HFOfzt"), .value = IOV("eeTolmBErmwwPvzsxgeAQTOhUcJtHGmEqmHWEpVsYNhRqSzJnABLSzYb"), }, - { .name = IOV("MtfvMNNQhxM"), .value = IOV("gIUrfpbUIsbNJvpnXEIsRpFjjBq"), }, - { .name = IOV("UJtzmmjKVIfu"), .value = IOV("WvTEmBQgwlifCnX"), }, - { .name = IOV("ZrmWYaJwQ"), .value = IOV("ebjHbgkNiMuYrmkyXQztNcbYQEXzvIwUOZDDqndDBPXVqfuAMzBjAkHyvRAYTFvteeFRsLmFmAdBwkc"), }, - { .name = IOV("u"), .value = IOV("jkIkSqogiEJCWWZkidHwTBGil"), }, - { .name = IOV("SNpcswToCBghHF"), .value = IOV("tptjKhwxahknCPnbZTlwKQLfiFUFsOGENURYexyvRPVjmm"), }, - { .name = IOV("VpBsVYmPyVzlXhheA"), .value = IOV("zctjmZSZphwazUBbZVWQlfXFUlnYltfatYruyCbqJZWZvImWuFTOOSAmihKJBKMSspVDzDbTqshDQMy"), }, - { .name = IOV("MXWtBGdpXBLosWHeupxO"), .value = IOV("RuSRBRmGlNfRyjNyIV"), }, - { .name = IOV("DrMpSwpmHIAudLpn"), .value = IOV("nqgnIZROOJzszTAP"), }, - { .name = IOV("ZvWwvWROhpUwUiP"), .value = IOV("gQJYinKyPZBaUlfaUzUnxqNZmqscEIfSSZ"), }, - { .name = IOV("ZWoUgyQkiINtV"), .value = IOV("ldLYapcOyrYMAWoMmFJimFaFH"), }, - { .name = IOV("uWJyeIgCfNcrYXxAZS"), .value = IOV("vIqERLjrKYCGwPDVuxdD"), }, - { .name = IOV("mQT"), .value = IOV("GdHXdZgTSHwefiGpfUoYlfkvtjciHDDeWoltWdgbeVfIhgUNCfEUarbqmpN"), }, - { .name = IOV("JSKjgzEYCDOptIU"), .value = IOV("YeRzcEftbtvQDRBanbUCuosNCVloVMDddOumHGEOanBAMSfaLpdyMtbX"), }, - { .name = IOV("rdSWBMinuarMPtV"), .value = IOV("yoRErmYHYBBoyJHSiMmekfADbZSPQlb"), }, - { .name = IOV("bweHVKkBKd"), .value = IOV("tyveokcSmPDmdWxkVqrWEWBOeZbFEUvTTXIoxJNsTOAGSNOjxExw"), }, - { .name = IOV("ZuhmcnSDgseiWUsRofP"), .value = IOV("vMotGEwGgmTDwDjFJkNGcFCk"), }, - { .name = IOV("bbHQkbVVieU"), .value = IOV("RTBMWy"), }, - { .name = IOV("IovhLLkPO"), .value = IOV("pWfBGGSxgSEvAabTcSeZrcBMjCXxXGGkpoBCMFOUKvqWfwUpmjNGumyktctGMgCujAfmOj"), }, - { .name = IOV("jzAzflbgxF"), .value = IOV("PKzMdybyYdYydUEDstkjQVr"), }, - { .name = IOV("UgsuQVZYAzdxmznj"), .value = IOV("qKNbwkxBnrfLdGuLPTfZAzDkawjxYM"), }, - { .name = IOV("wJeKwPVLs"), .value = IOV("RwutN"), }, - { .name = IOV("ojpekPhVMLuAzyagJ"), .value = IOV("nGHUpwYTauOGWeANyqnkaHDsvgxYrVqLkJFBItThRNVfHxeHCpYsxlXTyYZNMKnTaaumfomYX"), }, - { .name = IOV("kmoA"), .value = IOV("oZUdFRKRrmshRSGyRhnIXTEkMpDTEPuICQmNvwPkwJOxcjxQ"), }, - { .name = IOV("DIHtrzDG"), .value = IOV("bTNcFATJDzxNubtbEcUgSfIrsYTdobiOPxjwVzRwcwjgK"), }, - { .name = IOV("feBgusRrGmhw"), .value = IOV("xgKLTKhBkCBhehMCWzbKfIJYsWayEdvzabGCeMfROWhlpprOJlgaXNafahof"), }, - { .name = IOV("hUgnrIwcgIbAm"), .value = IOV("plhMrEnECkfhljWUJNoCUZmGo"), }, - { .name = IOV("LZUpZ"), .value = IOV("XMak"), }, - { .name = IOV("PRDETdyoanhoS"), .value = IOV("agEDoftdvsTvxjkUVhNjCz"), }, - { .name = IOV("hncKkQnhKczyyCFYSGR"), .value = IOV("qoYDOGxFLqwLEalhLIeKsSvTwaUjurbNicsXBlqyWrksXktFdrLxUosjVpgLYiMSE"), }, - { .name = IOV("EYMTHrbhJkUtjaMd"), .value = IOV("DBDEoB"), }, - { .name = IOV("La"), .value = IOV("hStOaAoDxUeENtjpdjBpcXIOzdajXoNwoVdanxktiaCpDSVAQFjjtqEydPoHKjLbrEmuOejBOnX"), }, - { .name = IOV("V"), .value = IOV("IFtvCUdFitblIoqbFOLlpgMEtZdrbgvCWxcmGWialeKByTSfsUpvkQTnsUBplJEomtMbKEakGas"), }, - { .name = IOV("XWKkHntfExfKeKW"), .value = IOV("LiJHnSLvLAboJGeLXYnqhS"), }, - { .name = IOV("gdKZYq"), .value = IOV("pFWyBohROxRxDUEGYOpfHGVyrgjeyiXCa"), }, - { .name = IOV("ypOQEHAxbaJhHYtTX"), .value = IOV("ZtcCrTUwFyKageAavXueMmxDUZyIYrKISfvqTPQorVEsDJRssXAVqVcgoKkcDkigcVVVZjBCrOfyfK"), }, - { .name = IOV("JNVKa"), .value = IOV("RIEkDAtbd"), }, - { .name = IOV("JNFSpqWgdq"), .value = IOV("PAMQrMOIWdtVCOrCGEZFIdrdbtJOLSAOaxnCisWYdom"), }, - { .name = IOV("RMDlpuxgSGSVFM"), .value = IOV("lWxriDZfjTjhHEgaWNxLtpqZWvfSbeoHxB"), }, - { .name = IOV("mubueo"), .value = IOV("mnunFxwiAWTWepdPDomODHgmOaqhjfUdRPCdaTTu"), }, - { .name = IOV("xzHXWhZgX"), .value = IOV("kwhNrgBoxkDPPkgqYJANygOSKtCosizhvWwpLoPpIqbVHRqbM"), }, - { .name = IOV("ZxyVWnpcAjKTbwiQWZoc"), .value = IOV("XPwCPPiqGSrPYjsxdph"), }, - { .name = IOV("NHEDOhEF"), .value = IOV("H"), }, - { .name = IOV("Xfs"), .value = IOV("dTMQYfwhhISCFAmSSIsH"), }, - { .name = IOV("mspMtHmlbLGcflhpnTl"), .value = IOV("eCTokKhGUTUZNViUDHdUFveTrvQOGIleJthiHGmZNzZztDWhQcMVcAJIDvFbcSesnSKSnDMVGoga"), }, - { .name = IOV("aWRikSnWrehqqyhQQ"), .value = IOV("SLMyuPoJfYOvyXNxVjkKHSyatWEUj"), }, - { .name = IOV("uVrhIz"), .value = IOV("giPyDBGTWWDULYZwfbFtfKEZWMHDWdgxgrPhaJUnqhfGZTwYekmUi"), }, - { .name = IOV("HlgxzCnf"), .value = IOV("NgwaQCASesPCzjbFhsdUBWKkasIhXYzWh"), }, - { .name = IOV("ZNgXU"), .value = IOV("GEANrzybijHEBKfZxxILuNfUBhruZahHXeHSrUCyVmALVtPYTpfqbkcfulZcjrXLSRbxcsrvWL"), }, - { .name = IOV("RKd"), .value = IOV("VmwpBbJhHbKyaRu"), }, - { .name = IOV("tDiduGpa"), .value = IOV("AmsxgGAYJfqTSeRCfkKcbTilobxZUiSpBOBBWEFfYGInhykkpCUZEJkya"), }, - { .name = IOV("mNVoOqJQSTbyS"), .value = IOV("KEQBGUwzgKQzJVdISluWvgDskFrgaRUERzdTKBztQlmORnpcwNtVHWzInykYoYFvWniEaKxrBEyHHE"), }, - { .name = IOV("lN"), .value = IOV("aIqhJHHAxAecNlGcfBKFRZvieFBbzzOHRwJHZCcgddfbHAaadRJCEQifbjujZtNb"), }, - { .name = IOV("odLnVbMrihMCgylFzfm"), .value = IOV("ZuQBqsPQrERtxvgoZGdIcDxScsSLFlSFoxpAdoHvIfpjchgDnArlUvbEiXfKYfKGcbh"), }, - { .name = IOV("tQKtOQpLclUrTfFZlKbq"), .value = IOV("AXqgfiRssyRHNnGxRPUKnP"), }, - { .name = IOV("LSqMOpKbzCSt"), .value = IOV("dcVlfrwJSJpHaiogzBhbFlLXfALIMZTeedQQMjNfVJEfqeImhMfTjhqHMpjmgjyknXiZSN"), }, - { .name = IOV("uumKmgFWDssg"), .value = IOV("OInajW"), }, - { .name = IOV("YIuCNweIPiIYkgqa"), .value = IOV("bNBxteknNhpTvwN"), }, - { .name = IOV("NAxkKnykjBalMAhAqGvH"), .value = IOV("nadVgpGXRYUSCbatPAxWPWhrTukTkdlJWAnEybyMJpJNuaVuADTajPhUWJvbIBBmE"), }, - { .name = IOV("ToviAAhdjgM"), .value = IOV("JWeyaKFqSHZJkVNSsvfDsAeqehvsCzMrJgAZoRXfyftqKxPtahuVeQICMAHoNwbimz"), }, - { .name = IOV("jiiKjxmEnrgbQ"), .value = IOV("hkmRBnCPmudkYuETuKlGSkYNOPGuztrGGEZStClnQwhGOMBzLhabrfeE"), }, - { .name = IOV("gKCVhcyMrwNIyuWfjI"), .value = IOV("mFoEbppUWtkvvJutKWjKaoHpipVLYaWfcnfFP"), }, - { .name = IOV("fbCOQMSIAL"), .value = IOV("DuNrRKjzNmNJmECfhpfostIdgMrOMjZzRdWtwwKwXMRkhmGm"), }, - { .name = IOV("rvhpi"), .value = IOV("TFXdUVDquyUImRrJyAGFdELAgFhutAINcaQpITNVzDBxCOwPfQrOGdvmblJOg"), }, - { .name = IOV("VDok"), .value = IOV("rGkuxxnsOXrUyFjKtCYGaQKoPEf"), }, - { .name = IOV("txnublMBhgJYzUora"), .value = IOV("LeoFOWyLpBdVCgluALYvNewnCaMvzt"), }, - { .name = IOV("GxuCEXgpbTarAug"), .value = IOV("sZfQsADstTRzJHDUmevVvrjtqQMAcuBwezsJWwCBhJGATAdiFBYuMBpWR"), }, - { .name = IOV("rMIEJEKwNpJETSziWWLu"), .value = IOV("SWDDMmDxSYzeYhTgXLtkDlKCIfWbpktPkAkHiBEYSbUHflTryAVyQyNGBejKotJ"), }, - { .name = IOV("nQz"), .value = IOV("alZjnyJzxxdaifWmCmGDEISEIHUsvFuKyYqIsXBuvBaBDwkYuDSBXjlJOPVHZGyVp"), }, - { .name = IOV("w"), .value = IOV("koYeVxfAApPrXDcqmgSlXGXkjSxcoJnKWHNXfTIBfCCNxOJjCyIYBdgAhfxTPqiGFAWBsNMyQqKAvsf"), }, - { .name = IOV("Whx"), .value = IOV("XUawHfLmhlCusUviZxQZExSGDpZGlLsQn"), }, - { .name = IOV("IEiyrTWfBhsmGncWFal"), .value = IOV("gsYEWSGxOOQXQbQymRXFHCanBWodIRLOGugpDAutiWqcUkvIQcVOkCKNWcczPfQsfNyGJUoQdsiICmd"), }, - { .name = IOV("SRewxMmPNshGCubWqR"), .value = IOV("WjOpdzHZknyicuNsySgllZAaqWFdYoXlNKxckjUEhWqPSa"), }, - { .name = IOV("nxXJSltLUMHSO"), .value = IOV("GDCMgDyCZyaTQuCPYHYSWCSWgZuEKn"), }, - { .name = IOV("rFPvahAhaIjUPAoQXR"), .value = IOV("YmAOBrYIiOjBpfPnfmGvyHEUuWldzkMWBasWlhSsLrcisAzvklcObrqbElVmVgBMGrvkZg"), }, - { .name = IOV("tkeyzjCrOQRHaF"), .value = IOV("LnvMZFzmaQAucubROiwSrdxotPoBLuWzcYbPRDHXCMTOZTyjTlxzJQPlPhFNUggJNiSrHjdTr"), }, - { .name = IOV("neITBiMHmIhda"), .value = IOV("gRnkyFSDaaPJrTEVGk"), }, - { .name = IOV("wYatBlfbAGyHKSnKme"), .value = IOV("NTTSHZbvIxNmeqjKqxNysqmktOIBKBTgxjKrUoPTZoCwWISACrfYINfsewX"), }, - { .name = IOV("iotxdYbE"), .value = IOV("WaTHznMmGoMmROtJFdfAUvlEAsAkowiUUbNunZbkSaaqvLiLUJWlOBwQxiSvpSSturbDDHqpTxCxIr"), }, - { .name = IOV("KWvqlYuMmhrFfMvholMc"), .value = IOV("IsrEisrETDFKRuYEeMamMYeQqUkSUNlPFzzxHgTuxSq"), }, - { .name = IOV("DjFIqFtOy"), .value = IOV("uDuWBkBoIFFYqTfuPFzBTYtxqfaqPLvanjuFgGHucmowuPjzktsYkDNhnrYfLccepcLaH"), }, - { .name = IOV("oaZNyBpih"), .value = IOV("EMlnoXhSRAUXjVLwrsuKKQy"), }, - { .name = IOV("xOMDQrfNPG"), .value = IOV("EYlKVCvPlrMdcnVqLYSYlfJEuxgoYoekkcGsgxbyZkLEdDqeuUbKdZRNbPrGULOiefqNjLuVLFl"), }, - { .name = IOV("jgTdtCHdEZ"), .value = IOV("XiXIJFMaegLoJuqtKucYLFbDKOZKzrcsBpovLmMXvb"), }, - { .name = IOV("BzhKNOfNg"), .value = IOV("kSfRMrMJafSaliuWyr"), }, - { .name = IOV("NWwA"), .value = IOV("MzZYXCccQJFKJVHnRbhDleOhxHEyQrV"), }, - { .name = IOV("WVnggUqIItNhaJcVn"), .value = IOV("LltywkigN"), }, - { .name = IOV("qguNAAzL"), .value = IOV("dWiozKWDhOFlCKjJLufuwTzTypQHuwPGhFQimxcuHAGjSINyQlQoHUYSIoKsHC"), }, - { .name = IOV("FxshQXQRHjffJfBAik"), .value = IOV("NvEBoRvQrdKqBbAKtCHcQOkrSInVcsjyezGrfouAHRWGjifQGoiyZpdtQheEPBV"), }, - { .name = IOV("BwGh"), .value = IOV("kSlzUMsTlwwDDCriqmKJWowIVyrpLkzcyndvoTvXefobG"), }, - { .name = IOV("gW"), .value = IOV("sTCAssJSzOXPYHffRQwFpAtsmsGlUJEKZoFSWTrDwTaSoApZncFahoJuDlrPquVQzWRwDEesZrp"), }, - { .name = IOV("T"), .value = IOV("grsGxrvwFGPAOJFDFnTKeqOPvTdKJscUDKTSczEYumYvQVmmxAuGQhgOhygZcHJSVKlfpTd"), }, - { .name = IOV("YnKKdJGLB"), .value = IOV("YNojsbrwcYsvZcVlxYGrACHjHvyJEyNspdBbRnrnoJgVnu"), }, - { .name = IOV("bYPQaAhmckkP"), .value = IOV("BgJLZPNGSsBbEAOkTrtEWSzKkNFkuvlSonEvjZxUoad"), }, - { .name = IOV("AGpGxaACnHZbI"), .value = IOV("UAdHobxBPIttRFfwzdwqGvjmIjQkGSKuzpslIKLHBoEAmOsJoRDoMjUGYOnLwmkJfHkdpuzzKSMkOFOb"), }, - { .name = IOV("klgd"), .value = IOV("LPhTowuUSeklcyR"), }, - { .name = IOV("GlzBjNJeXztaqVLzGYh"), .value = IOV("krdnHRaiZr"), }, - { .name = IOV("yUmVtkELQqw"), .value = IOV("gRPPBwtdEKsFWzomoPjsQksbUSlqOPaZSjCndLiWIanpUrbvqFOPBpqLhndNPkKdZxFBREDhOqkHsdy"), }, - { .name = IOV("myPxkLOyJhjNrsptlL"), .value = IOV("mNubzClQBysktvicAWzGovfOBcSGOCsERifvlDiOXxrKyenClyWdRmiwtB"), }, - { .name = IOV("RciiEsVslcUXVHhV"), .value = IOV("oxenVacVDoNEmNUNATrOwKiQoOlaMhvnnaaZhQolwHAFJZerbJXsvuxprWuKIkqliTTrBtvDOrTh"), }, - { .name = IOV("aAgqlmZHdsNvYETjbJ"), .value = IOV("hdsmBTROkSmDSpvrtXxlNDz"), }, - { .name = IOV("VwjIsuMfMeIUNRMJ"), .value = IOV("TKWgspDiGEmnAtdXuaYjpedWetsnSUEYKIbkgoQXAZmgeBEo"), }, - { .name = IOV("CnedcjaDYDy"), .value = IOV("VXkLqUsCeVYqTJnGoSPsYHQXuuHDnaGpCEUC"), }, - { .name = IOV("puiJkHXiytcNNef"), .value = IOV("wrYAqriVvseuabqVseeoZasJRWZjNVYO"), }, - { .name = IOV("dJunvvLodjK"), .value = IOV("ICOKbfvmPYMOrYSdWlkyHdedMZgaNxieCiCjHNHezckmPnCOOpdLReWACTNuprekijkZQynIXARVq"), }, - { .name = IOV("XlfFkubmwsLMlLU"), .value = IOV("IibwRiYqLakifUideNoyRxSqOgoLwazY"), }, - { .name = IOV("lZCOlqjVOW"), .value = IOV("rRLmJzIDKhdKDuGtVSI"), }, - { .name = IOV("KfMqNRRFcEvDKpCc"), .value = IOV("HvJxseAwYFQAKhiAzHABQCLyHffCOu"), }, - { .name = IOV("SnVUgyL"), .value = IOV("qyBoWhFdFxwt"), }, - { .name = IOV("iEmieZzjYgTV"), .value = IOV("rnQTWIEaKMjYKoVrGFWmaTgHvPUMcpXMEvvVhzZzUYZlPADHDHiaMZToLBfstDenCkOa"), }, - { .name = IOV("LpH"), .value = IOV("NficVAZkTSKV"), }, - { .name = IOV("oaPeF"), .value = IOV("CNxrMKvaOsjQVoeGnJKunujXbTNgZpMZaoqEzPUrTVHpIcXnLojehxoblVqpCjCsGl"), }, - { .name = IOV("tKqOldQFUGpnXEkpObF"), .value = IOV("bucecSAPYdQMjhGoftjmoxip"), }, - { .name = IOV("PgxXaPVkpeWILcMQMG"), .value = IOV("hgGpPxzzyqGlyUpNtJCGnsVmmjajdZJIiiFUQxjxiQNLwJa"), }, - { .name = IOV("jXC"), .value = IOV("ZGUb"), }, - { .name = IOV("PJaH"), .value = IOV("QUQkpjwS"), }, - { .name = IOV("rgWLyJaNiKS"), .value = IOV("lAtIjfpkHSi"), }, - { .name = IOV("leDWWCpIv"), .value = IOV("JBgQrDvrbUFgRDGrKtUdWDPzoJvIYqVCirVW"), }, - { .name = IOV("wiWB"), .value = IOV("hOIvobPgNQeRADNRAOUqg"), }, - { .name = IOV("wsYAJvN"), .value = IOV("gAuWvQpNf"), }, - { .name = IOV("IGfOJ"), .value = IOV("HLCmgL"), }, - { .name = IOV("edtRFoz"), .value = IOV("upCUYqLghJYQUEBNej"), }, - { .name = IOV("QYbLy"), .value = IOV("OgdYuIdxFwvDSzVapCbdEoGBzuEaHWKRrwCJGXWulynLLtRLIG"), }, - { .name = IOV("tNmS"), .value = IOV("xlsgnddAJLN"), }, - { .name = IOV("QhquzqK"), .value = IOV("EEKdFIbQRzOxFYbveBMhrDGPV"), }, - { .name = IOV("oBRTFjwzsQE"), .value = IOV("QETw"), }, - { .name = IOV("bpqdfYJcUMkpMCcpOoj"), .value = IOV("VoxnUZdWQWYQVlHNzUDvnhHrYVfMjILdDSvQPridDluSLkNnrXyFaTnZVOHFUkQWgq"), }, - { .name = IOV("nxKE"), .value = IOV("GHdgAjowSjfmZkerqMVeSfFbyPQkTJRIcDYCsTCidRfebNzvLGYqRtHgxCjvOMzycWcXqlyefOU"), }, - { .name = IOV("omCyxfhEeCl"), .value = IOV("gwWODUWesHQDYDApwbaIlctzlDoQmBVYhtfzjrgGV"), }, - { .name = IOV("F"), .value = IOV("zGTTsHlcgRjZTBOasAAXuiReAjxafCQrcGOLmZcukDGvoZpyOabFYWWnUIbRiSCZZkOjhqpc"), }, - { .name = IOV("QJyFhcjean"), .value = IOV("ClCCFRshtOBuhLwZbGbvkBVgQOeqncrDMGyqSFKbjPpqRl"), }, - { .name = IOV("zTzlUehTBxdBPSWec"), .value = IOV("ULGblQokBHGlHzdhIuILaoeaUKpqUdAYUQzyfkUoCwdnWjmoWkoUcZDPmKxCQLHrQlVqgXBknOVYnd"), }, - { .name = IOV("uVWgAXyqoXI"), .value = IOV("AZIpcnvzblXSGmhougNYOWJwksLk"), }, - { .name = IOV("CwzRHYcIoFTxLUDxBeI"), .value = IOV("MOYwGUhKZlygUCFBMllyBdkitLkkXNbccPhDQpvMMrFXeHmRWDXtbHnBWcckHOUXhwOoTuSTWKT"), }, - { .name = IOV("ylMemytst"), .value = IOV("RLJWAlqefRwJY"), }, - { .name = IOV("YBcBTnsRcgDE"), .value = IOV("IqRBiKFqntjQjykcZaYOSaKLMaWxELYLGVnYrFLPinEzfgyYYHzwSiSIYObfEPpBF"), }, - { .name = IOV("pz"), .value = IOV("mX"), }, - { .name = IOV("myPbUTGKGuVUbC"), .value = IOV("uiJgfuOwuWhikoDMQYRMlUHqVLZnWopaXJGNePtAEXiTxhiyUyBQ"), }, - { .name = IOV("flTD"), .value = IOV("RQDrYlyoKWsomisTHP"), }, - { .name = IOV("IvCTFPuOMpTdFaPY"), .value = IOV("zyICaPXkJPYMpcgKuMMdxYoEZqgcWXeIibgZqwRMgqrZuhMWdlTEsMHMITbYifEzaQlZmOVLUKFpg"), }, - { .name = IOV("tAWNmEdzxKiL"), .value = IOV("TikoxVsFrlQgeIivNBnslNEEGYemeVAxpaCZVkKqRfPs"), }, - { .name = IOV("tUABMxLTZ"), .value = IOV("ITdvQsslhvUaenBwQl"), }, - { .name = IOV("CkSWyMvmYkt"), .value = IOV("gmdsGqvxeOjWxkOiSimHPtGdWDavqHJigYYqsEjTefUfKEJFlsmgAtK"), }, - { .name = IOV("N"), .value = IOV("eSEtLolABC"), }, - { .name = IOV("IhTaymcyqFe"), .value = IOV("WIemBSmLaXuUcRcsPFGx"), }, - { .name = IOV("bvknctgIBMBdu"), .value = IOV("wjqUeCtIIpvWPzxgKrIDzIHgGVSdLK"), }, - { .name = IOV("VLFDZA"), .value = IOV("MfEGUfBYy"), }, - { .name = IOV("zyVkza"), .value = IOV("j"), }, - { .name = IOV("fpA"), .value = IOV("SRXkrwEKswrCiAuwCIXiLKWtkNhaEClhrEngCSIOfpxUXxgyryXGWbxgIvxGtGynHOLzYV"), }, - { .name = IOV("lOeYc"), .value = IOV("BnCkhZhEztkCTidRoEMRgLcLlaewooVPczuuHY"), }, - { .name = IOV("wttiUE"), .value = IOV("HIKyaYrvteqxMiXgLdAGctbBTzoyRcApBSVtVSLrpQalkVQoJVsUChottmwlANOUlqWfjN"), }, - { .name = IOV("bPjAjg"), .value = IOV("ribOwCdUREehrRtCyomCKJAxLJUmRGxlpfVrLsmgsQrxANLlimMaHrjlhCRfEoJXggBYLBdfhABmEpw"), }, - { .name = IOV("bpBaTvjDKtwodZYB"), .value = IOV("KQJYsVOgSgQJHlthdAjLsfCcBBFgOkLFjfLpueXkXIKzbOZTzQzkkupLqdxUVWEhcrMqqDdfCswJjbsk"), }, - { .name = IOV("X"), .value = IOV("FKJKBTMHRTiqEaqECsogacXaobiO"), }, - { .name = IOV("IQWLn"), .value = IOV("qJyTFuxSEeVAAKrzojiqgeBTdYEJtLXDLTQQMMeWjjpRjPsOBHLYXo"), }, - { .name = IOV("pfXErBwgRrrZwjpsXG"), .value = IOV("dfiofhgXmBSWZvVbYLRYuQYzCIeqU"), }, - { .name = IOV("RzqVYIJbLzdA"), .value = IOV("JSzzLKGxHIgxCLjbctXOvFGCihsfzWthzKJSkqV"), }, - { .name = IOV("fEWHziztfPqyPrZvK"), .value = IOV("uukmhbtUITFaCwsOlkaVcvgOlpRIsPypMehycaqvNHVmI"), }, - { .name = IOV("hjYzADumzwqevNIbd"), .value = IOV("gCuzNFhsMpo"), }, - { .name = IOV("ajXrUpDJrjlmbHjQlA"), .value = IOV("qqfNZOTBMRmXvrzbgkFhDorYRLyweiPJZNWnMuRdEydZtUjHwIdoWBncChkRhvvsZBBaBlVt"), }, - { .name = IOV("KqBvjSb"), .value = IOV("gUoGTzdYihbTPFTQPuSjbJmc"), }, - { .name = IOV("OsXqWUsWEsFAsyfu"), .value = IOV("NUtIGjssgshHYGkbvBcFtgXYNFqBooFxv"), }, - { .name = IOV("GB"), .value = IOV("RPZnBZEFvqZPmfyRdqGCbMTzMvFAMUFu"), }, - { .name = IOV("NKzvGuLeC"), .value = IOV("CaKPxqohGUzLMuvMGAHblxMnxoZaihtSUaaVZGrOmTomUpUnAWxeBAmcWzi"), }, - { .name = IOV("uMoBWknCGxTrQ"), .value = IOV("WqpcawUeFgzwbMHdvbtkWAsDWcluzsQTXGxaBPsLIqjFbHXyjKHCFQHERBgZhmiERidrJfPzCgC"), }, - { .name = IOV("GQqUnSdVpar"), .value = IOV("gutJIAhwZtootocMYmCnZABvJdhOdkRM"), }, - { .name = IOV("DnXIYoqzudBPokXhdolL"), .value = IOV("ykkcnWTeAdwYhXycClzIJlJqlGWjTciGVKjEJoonfeKGlyCKgrTgSyQCrP"), }, - { .name = IOV("vigMJNiRxnOaTSgRr"), .value = IOV("KvSZbemuYrqSXHNJiwXbTMYsTackXLPLuO"), }, - { .name = IOV("clLJi"), .value = IOV("wjHtkXWRMHqphVVucLszaYqGeJrfMvafvSeqpYsuxzSLrbJBWFGpMfBnmU"), }, - { .name = IOV("iz"), .value = IOV("qnGwGsWgJQOyGgwnvKXKwdMnHbZlbCalOH"), }, - { .name = IOV("uMg"), .value = IOV("GRtPBfzFlxPdbJNPrRPXLwqYZoQekF"), }, - { .name = IOV("QnknnZumNY"), .value = IOV("MiUgLyTeukrQclZCUYgUoHXFZsudAMxHQwCZmdlCCtdROPkoCmivgvFVSi"), }, - { .name = IOV("mDGWLD"), .value = IOV("BENFVPvFEVTpZYWftZVXBdifgPWMhRrcljBOEHqIIAFBXDKHAaHBpZKhvrqLaxossUXacNYkb"), }, - { .name = IOV("BAbaYPn"), .value = IOV("HtsWKWLzL"), }, - { .name = IOV("KghCOoyQOYfhgnGB"), .value = IOV("BpSeEqcMAnHbjpJZfysUcenPxJOpvdJZKwmkCY"), }, - { .name = IOV("ZESskcWVMEB"), .value = IOV("AuhwDbySIKUAxAyvHNmtKfEf"), }, - { .name = IOV("VfLVaHhtRoLQwINN"), .value = IOV("gxE"), }, - { .name = IOV("U"), .value = IOV("wrvoLlvxaHLfgvGxQhnvMaiaLvNcHalevbDMrfmGZocmPrMpvaNj"), }, - { .name = IOV("r"), .value = IOV("WgnCbRowIDtxpqWdxsucmUtKtvuYJDmlLxVOmOVpyV"), }, - { .name = IOV("IyWLIWqiobRt"), .value = IOV("ByMHtxoTMms"), }, - { .name = IOV("KtCFrBGGqqORPpQLx"), .value = IOV("boskGJgmEzMUJunUjuGcocLDOWfKeYYnyBbSafTnGnUcRivNNzdTVVHTmiORdGdcrurdFjOynzjMUHK"), }, - { .name = IOV("EkrRR"), .value = IOV("FEuiHeSruEQSyDquVDSgNXwdpHmCRAovkGlRoGovXMPBYeUUCxJIyjl"), }, - { .name = IOV("noZIDvFursbj"), .value = IOV("SlvaNkJwWJ"), }, - { .name = IOV("ZmtundyiV"), .value = IOV("qixhEiaHHdKSwklwRLAdxPjibVDghNKpiIPBnGhZqTPhvhaTYHwJyfdwurPaiSTSErT"), }, - { .name = IOV("qqFtLNSriBg"), .value = IOV("lXboFjyJGtzzsnpPBSAfOZCNLvHmQOSnpIlsAWGhelHYiOTTAFwZBxSewxHRUVSAZKUwjVKaQy"), }, - { .name = IOV("D"), .value = IOV("CMutsQGMLdZJvpBNUfJcpwUqOCccJeZwDxSsZUvrpUmalAFQdENsUxXdWwVfdHXrdlXDlepOXkveUuIw"), }, - { .name = IOV("MUesDKbTrqMT"), .value = IOV("wrsxazpVutCNMOYerVXEEeXZyJQxjsgYytHjXo"), }, - { .name = IOV("ihxaHXxneqLfBR"), .value = IOV("vddBNIpCYJYCjeLPLHHSZvRsCGJxMLxbiUDfSVgAvZSZwjcCqxeJ"), }, - { .name = IOV("XkOeNGNlE"), .value = IOV("NwJSRxsrSQPKIFfUvFFMeXuOcZdfNGzmUrjMjiWgnAWnOclZhAhcevxlqElceFTawoa"), }, - { .name = IOV("LtvErVrbpjsMAUYY"), .value = IOV("RZzWUAyk"), }, - { .name = IOV("VnHiJTflOm"), .value = IOV("g"), }, - { .name = IOV("EPoJF"), .value = IOV("erMtImqMEHbXLaXFIsdOvXyIZmKRixJFAzGGcFtclPVpzh"), }, - { .name = IOV("KvRfedWmDLEPtX"), .value = IOV("BKnfsIDPAZWQTpGPlxzElhVnuYUVJwvBcQNZsihwzUiBScvZksYWZBuEkTBmvHKCeYPLJhvIp"), }, - { .name = IOV("LHCAkmpXzFs"), .value = IOV("MLabgEbXgzERnuSTktZouhwLFFkIuIxQwjLsijfcWqUDyNrpytrxLi"), }, - { .name = IOV("gOjw"), .value = IOV("IqZKqGvavlPeYrNRWtSF"), }, - { .name = IOV("KmDwcHMQk"), .value = IOV("ulggdjlYDoJFDYWD"), }, - { .name = IOV("owxfPQPS"), .value = IOV("oweZNxooGskdYERaqRniGkNXCnqbWZqVgkvCCEaexixTdftSJQCUmkuz"), }, - { .name = IOV("yuBUPewL"), .value = IOV("gOqoXdtivMAjMUjATHnEZm"), }, - { .name = IOV("ctBX"), .value = IOV("erVFnRiVryAFiToqnVzfGVoVpIYAOTRxCjhIvakHKdmCzY"), }, - { .name = IOV("RdFR"), .value = IOV("ZHMYZqcHUvNRXzAzKNkwuouvFbdDcwCVwxDNnjNtCAChYEyeKTy"), }, - { .name = IOV("njgydHvkqIH"), .value = IOV("dsvi"), }, - { .name = IOV("GAAjt"), .value = IOV("CcrinxtqWuFjMQWYCbHtFDwA"), }, - { .name = IOV("WDqpWxKOxzhxAIoO"), .value = IOV("YpJPfhLYZRif"), }, - { .name = IOV("CAmxKIPCHFPpnEywKe"), .value = IOV("bNtiKXToFONOYkxQ"), }, - { .name = IOV("NAZNqcXjTir"), .value = IOV("YkxNVymoFjPmuQaAucuLLBfCAzuMvUUCkTnRjBoYzznVuuzixhLHjgMAUCMXuVTM"), }, - { .name = IOV("bqRvOvYaEtalfjUoWBo"), .value = IOV("VLmtCAioYEfKYCHXShZgxCLtNvjbhNoVmOmDlDLjvVZgbSLcUgPO"), }, - { .name = IOV("AGzbjvg"), .value = IOV("HSIkRVzfvJurhjuKytWFLehQbexkFJeHtD"), }, - { .name = IOV("jhZMmgspYtvqIXvz"), .value = IOV("bncJNxzKOgnyNzCwVGFdelDFAkmZKneluuDSfsbpGqZgWHNsZXyHMSnMqHbKjETirxr"), }, - { .name = IOV("SFOfjidIvuNrHMmJWXu"), .value = IOV("wVllGlRcePsAreSnaGsaoOLbMPinYhROsIpzKQJGRAipGGruaErWIGqcGOYChAfzjMWVgAxqs"), }, - { .name = IOV("en"), .value = IOV("YEEakjxJWCiLteRMxWxxpvoYKcXINwHkDitJpYJWgkYJeFQpABHvqHuGFOvSuHlwfSayTv"), }, - { .name = IOV("npOwbyLNHQT"), .value = IOV("SGyvuGVwVSyiCnWhBZNsOoibCIFDhklmpmvUvnisYXoeMECFjALvikOnsujVdrZLa"), }, - { .name = IOV("EybeOp"), .value = IOV("cbfKjhAAsQrdsiehSojmtKxZgzReSICOYLObkiklJzpKCoFWeHNNtncgiEQvxCspO"), }, - { .name = IOV("zkCLMxQHZqRby"), .value = IOV("CerFKgGjUetxhCOpRKeRzIbJUZVEWFEQLMgMQaeVtBEeMYWzCfvzfcMrzqtcRLJZTWBEdMPe"), }, - { .name = IOV("izWXzN"), .value = IOV("FzwFYwIJRZTwytusihxVRMH"), }, - { .name = IOV("eojBIzbTFGmD"), .value = IOV("NOxSxvlKFcgcxemsBDBLky"), }, - { .name = IOV("PnwHPdQNxfDexT"), .value = IOV("AKyuscVxFlTulbJSGXDrzKDvHny"), }, - { .name = IOV("m"), .value = IOV("NyAnlInDLnOufkvmwvBdhzAEewMlTnsRCwxLTlcziLeTSNjhoKjLGCXUbD"), }, - { .name = IOV("fKLhsqHnaqQzkCs"), .value = IOV("eaWmQPztfwAlBYdgdJCufTGeM"), }, - { .name = IOV("rihTFHrNVymUz"), .value = IOV("pozmgqmBQ"), }, - { .name = IOV("TIlhdXubEePwaaZ"), .value = IOV("FlWjxuAuNvyWqsFMQybaqzDftqzELuySl"), }, - { .name = IOV("p"), .value = IOV("EgtxOBWUsrUACBsWzfoiitRtmb"), }, - { .name = IOV("z"), .value = IOV("jsPmWDSocbsKJmZzSwltvLEpZihRgEAsBUaIdHzriXsFdLniqEydBCZVUsrlu"), }, - { .name = IOV("tigG"), .value = IOV("uahaAqpJrWpUZUNzvPxXhpXkpzogtsVjGsPBRGFSvcYUYKStbmiyXRaEYAhVTWUdyhnSkH"), }, - { .name = IOV("BkYo"), .value = IOV("rGeMBMqNzoFWIiDxzhENRYMgmXRJqXyrDQJfzmIivmpGhotYeZvRZteVNmMtUXHniQCtByLxPHk"), }, - { .name = IOV("StNemKUUdcZL"), .value = IOV("kleyWcIdEwImSddbkYblscltGvq"), }, - { .name = IOV("SjIORBv"), .value = IOV("uuwMgTZjQXVkBETWLQHqZfjqpQiOslvCeLvOaIzJox"), }, - { .name = IOV("EYa"), .value = IOV("LEUVAvAPbOwqpnktXZPxwDnvSLmnBvldjcQbGpqryEBqHm"), }, - { .name = IOV("QlenrRAFilHrCqVyB"), .value = IOV("RzAWLEpDyOdSkEQYrTJuoyUvhqNKvbKS"), }, - { .name = IOV("C"), .value = IOV("UrwVHWsnPXuPuKXNSqxVrTtIiDLZGYFhxOoxPgUeGigwviwluwjKpgbklMRceZtYBGrwIJHSYt"), }, - { .name = IOV("TMkHDpnUXnEC"), .value = IOV("wDvtUhcmaLPLoLULzofu"), }, - { .name = IOV("BjduFMSkkubBKDOPzhbm"), .value = IOV("fGrRGfiXNniMdZCFoyUCSCKprlpnAzOZYPumuuLrWLBppdjrpKYXXTBJRM"), }, - { .name = IOV("iUEwEeBQwue"), .value = IOV("OGMzfrWMGQfoVrmmLASmMSZAbxq"), }, - { .name = IOV("g"), .value = IOV("VTRlNOdWGwQojVTZYSpzcBDPwjpvapqthOWUuQe"), }, - { .name = IOV("ofW"), .value = IOV("ldyPnpflClEzLihsQkdOmgzsTqlZLnNsqzwscFZlrODq"), }, - { .name = IOV("VgnnyrFuWyMrcRRXls"), .value = IOV("NLxPRhHYOMDjeJJaUqOgwLVfvJiRIZMOtrCuduMxlOXzatyCOqpEYw"), }, - { .name = IOV("buScnbbOgjMvrF"), .value = IOV("sCctNVbgvVHocxULzCYXhBHsubUCaOoiTkZfzEtJYzbCsLHdreOwIkkoVppj"), }, - { .name = IOV("kMhwKnrhcZji"), .value = IOV("rgNaLcFtQrgMzZfYSABgromdFBXgCfRJRtHXVNTOmwLeUlBeiEFOcKmveIAnIRPUwOpcBIc"), }, - { .name = IOV("kQdH"), .value = IOV("xahnfIAypPAVoscKxdTBaNDIgtZmvLLDMOxkpYlgbLyZRTpgfkdH"), }, - { .name = IOV("Sqh"), .value = IOV("NqAlWDtqjuNWoAbCorozjXupvogesJDdbisqgGJKpbpdTARZAXnmPSphTDApZeLsGKcQSz"), }, - { .name = IOV("iLNZgrp"), .value = IOV("vnyqbjOEIWlcFOkrkcAmbXdJiVkWSpSQprSOVrtSKwwYlpz"), }, - { .name = IOV("PcaWyrjtC"), .value = IOV("uHCKkxxpXVxiBadRePgYerrfTfMGQOBCVAnbxT"), }, - { .name = IOV("DB"), .value = IOV("cdzLsGttuDGVmerUVefKOdn"), }, - { .name = IOV("ofSgDi"), .value = IOV("BsgwHKvweeHTuAORM"), }, - { .name = IOV("aefmFakMPC"), .value = IOV("ZmGdWASHxsIHWefvyDCZLY"), }, - { .name = IOV("dLtMnuLCxxwMOIpDQ"), .value = IOV("qvhELpVbvVycfnVXDtSaGnGMSajeBbnjkcKTdTdPExCvLqHapPpqpAeiHGYaGaZFiypoZwiQio"), }, - { .name = IOV("gdBOlEdEcQeJ"), .value = IOV("JrMFhKiVZfkLCUwGXZmQmllFcQNkYmxbsrEJVuAZmkMyWQTepvTLfBRrLxBTCipRxFUUyitMKM"), }, - { .name = IOV("tWfwpCXxK"), .value = IOV("myaGgTYcGuqNXjSMtKZB"), }, - { .name = IOV("GeZdjOrAMNhG"), .value = IOV("VKgPHbYoYNeAvfYatIcyzzMPlQNIPWMWCtCfprkXKTsaMVjXdb"), }, - { .name = IOV("YlmhM"), .value = IOV("bOhMhaRcePQxoAyhXuOWzYioWnLhz"), }, - { .name = IOV("rkxNLYuv"), .value = IOV("oLTKgoFhotzVoAbwVnrkykEkbYUjewkoILpgP"), }, - { .name = IOV("CpjSfVPxiTVezZ"), .value = IOV("wTLtMLuhSrHDWTRAWWeSYAkpMWuv"), }, - { .name = IOV("eZOYGCxWzaSwtpoNjOiA"), .value = IOV("DpQkrcRHUnnjaMSYGySApZN"), }, - { .name = IOV("XcMjIYu"), .value = IOV("jDSXeGeMQQqZDGQRTXGvikR"), }, - { .name = IOV("EkEcFAIwZbxhntuCZdd"), .value = IOV("GgbxFRLmLylqiueIHtdqIHvoeNL"), }, - { .name = IOV("mWnpzJNFhTu"), .value = IOV("IJyCzhlJ"), }, - { .name = IOV("MQvLKX"), .value = IOV("GNGfBioaggEnIvlMHvQnPGCHtGDotyoGTCgghsHxzDWCbIUafRmpXyNWSlTYibAS"), }, - { .name = IOV("bcEPmu"), .value = IOV("EzmqQXeyldWdfPdGZsjAMWDPqiVbJwgsMVlvupRv"), }, - { .name = IOV("VQwsXVWKYoMAsJgNkKo"), .value = IOV("vKokIRnOltXFYPSrvyQfJoGgWoBLybwOxXyhcuxUVeJEJPuqoDVcMlofeT"), }, - { .name = IOV("enzHR"), .value = IOV("VgyJIGZChyOk"), }, - { .name = IOV("uwSrdkeAmkjYtxhzHEW"), .value = IOV("mCFcyNIRmXijcgpvcqwCAKstMVrpOfpeSMBYiOzsXRSxKnM"), }, - { .name = IOV("WDu"), .value = IOV("AY"), }, - { .name = IOV("zsamdMaBS"), .value = IOV("grdRBqsupNWXabZUtLpluqZkzjjeISVhMLOyNUeozHonPLPBQxqTuxmGAW"), }, - { .name = IOV("XNKhkjFRFSh"), .value = IOV("hhFFdMUjcSWjCAtXaGJzxpTGWJaUTIgVFNW"), }, - { .name = IOV("GnNJmyytaWCuQnBtnaW"), .value = IOV("GsMlgjtDp"), }, - { .name = IOV("zcHLzkWyDLttpUfiQoHV"), .value = IOV("aoqAmBiBIjUVPyyQFgcNrqqeGLRJBExAzfJWpwpkFKwDirjyouoLTFQiJZyuojWSVpwW"), }, - { .name = IOV("hnphJeaI"), .value = IOV("ERgdlvNIBNDoBtkimoVgrWMHcoXUAQeJsouqfyuEjkBkUWpmhhQADikQjkdRRTYlz"), }, - { .name = IOV("xrtVyDPXwq"), .value = IOV("YxCzJScvpRUsNrRrXIHKLYnHjjEtDsWrQCxyBOuSelvimajOIDaZszsWHqBxBjCqRBzRychYwyl"), }, - { .name = IOV("bfThtEqsEWJTsq"), .value = IOV("obyRXtowVLBgrBDkrNFuEYxStWpxlypuHEsuTEAywvHarlziZiIcesjNqBALxbATxGLeMyMv"), }, - { .name = IOV("YFpGKX"), .value = IOV("xwHWjTGrUJqXofwxXZlctUSlZVHlKYvRuFoAmmqNqrtjPQADXmMEzPd"), }, - { .name = IOV("NMPbvkjj"), .value = IOV("hCJRMnJDVOJeDDtzArNpuqGi"), }, - { .name = IOV("m"), .value = IOV("UBsiyBLCEFiewYXNCHvUzCmOUBhEfyenKzLcYmHuViOjeEbyhQQTWdJpwbcM"), }, - { .name = IOV("uFARhrhoaAcUzgoknOeR"), .value = IOV("LWTnHuZmbnSkgSEjsxRgWsNigGexRImbWAdLsvvCZiISWsgvL"), }, - { .name = IOV("vsuycRosjUF"), .value = IOV("nFSRCzWGNdnyJsiVBNgvFUauaIucGDQcsnVWCFDFFoFEQaoGYvUYLfduTFroLxIjDrT"), }, - { .name = IOV("ASCgZPASLttDc"), .value = IOV("RHyuncafISVPgTZqUqUpRhaeDIAnEDINkhrJUKfayYOmrMuZz"), }, - { .name = IOV("FhHbF"), .value = IOV("WklaIwUgazCwlVBDYasRwrJPkbPtFoFKedYbqFoAckwCHEGhydvZPMPVmVhqnQTVFHS"), }, - { .name = IOV("peyqVWrsBOMOBJr"), .value = IOV("ibHBKACjPNUkjTtwzMMEjTZtUMJlFtrfshmOYKnRlvkyQlXjckAlYcUFVfCCtuAmVRVd"), }, - { .name = IOV("XXcHHNrcQ"), .value = IOV("XnnnLonFoeOBPXlObsSRRGhzLLIBSzNgbuKYIGGmagU"), }, - { .name = IOV("StcBmfALzCkdKnXK"), .value = IOV("vsIvGGoAXkeJTgiisZkzZvHsiCZSznEkyXHIOkNgtXhMIzmlfzgdzVWwZxkHzvBMMxfl"), }, - { .name = IOV("vWROjaGbdSD"), .value = IOV("fCbtequPdfBTqJhKkpfhQKVbZcZpIvsfsrOgJYtFtgqiZjwCgVSYX"), }, - { .name = IOV("eVNTmXtBMiAQWXZPAw"), .value = IOV("YZ"), }, - { .name = IOV("sWPwihToLJKMPJRhS"), .value = IOV("vEgHcjaIrbbgsEGJeCZDzOBVJXCfwkbi"), }, - { .name = IOV("q"), .value = IOV("kFWwvsKHz"), }, - { .name = IOV("Zq"), .value = IOV("SRsSHqqyYBOmtoYDKPrbsUTANWarUTOJHSnwdkJPZLKydVYcGUTXdscotncuhGdCRmXWhTj"), }, - { .name = IOV("OnQIp"), .value = IOV("QPJBtylMQfKWzkCVXhYfSwxXoLCXeZhlgeMGqzrZsWqKJKmlaPrkhFKXukCeUBDSLUjBOooGILrfkY"), }, - { .name = IOV("iLvS"), .value = IOV("INTDcjeORGomNOKv"), }, - { .name = IOV("MLiiTNM"), .value = IOV("pGuLhBcNFWAQSGcvjpleGMc"), }, - { .name = IOV("Qstx"), .value = IOV("wwEvdIPHAjoXLRoBCIuFCtGBNOieSjathYy"), }, - { .name = IOV("yZXEeMryJVHHXfPodN"), .value = IOV("HvFpynqasmQjWbeyLcHHlyHORfn"), }, - { .name = IOV("nHQhACzUMAWWfNjfiN"), .value = IOV("iawFHvvDqXtTLusVDgLgfsmyocIbrKhzxFpooXRWXTGGwtLqPKtceYCBtRuHATVgYaDeoknDEoZXG"), }, - { .name = IOV("SYSNkwOEBYsDiirAS"), .value = IOV("ZtBgCAtdnxuFklwCOIBEcpmZxDlIce"), }, - { .name = IOV("LdlMKSZEoKqSdfP"), .value = IOV("yapMLOEUzTvriIBmmmlNPnpcmTcXxaXuFjlUdkcGovjJjcCQpENNnwtsRjAvLSMQazmHJmFboSSSOjgV"), }, - { .name = IOV("DQrAfrsGBrRRFNbDTA"), .value = IOV("dMHHfsOiPFYwa"), }, - { .name = IOV("nTUhDJUi"), .value = IOV("ucmBDMyullQBgJn"), }, - { .name = IOV("CcvYPNt"), .value = IOV("EwLBraenvYlMMrFoeTfIWKmafGRBZElxxCgAZLE"), }, - { .name = IOV("cZyEPSteXXk"), .value = IOV("MKwoAnDDHxJBwKbVoMbxIYZsJIAr"), }, - { .name = IOV("jrzfbbbMzvBaVoUzM"), .value = IOV("NuqcmOm"), }, - { .name = IOV("FXyXqDnhiRGSIyh"), .value = IOV("z"), }, - { .name = IOV("TPevRplDeFYHouwaxEDj"), .value = IOV("HfTPnHIVMKuPgXmXgoihZxegGwAShCaFGjjXdogtLNgBKNGpINdQIAUnMlarAKVED"), }, - { .name = IOV("xJEBEmClth"), .value = IOV("tZmXYYhCNqpmFIBjTrGsCVgpovZz"), }, - { .name = IOV("ycdKNlWMcffcQcwwoLxf"), .value = IOV("LvkugqnGfuFZMIHrVOXEFftpOCWoVgXIsRaaWRSYtOiJAZebkJTFxcWOvIaRVoKEEhyIAFBvkZ"), }, - { .name = IOV("qZCnrhvYInCS"), .value = IOV("wxCoWCtexjyaSWpEskKotuDnGwapliJbXNGVNnPlvDMNFVSaJ"), }, - { .name = IOV("ActEayGSHSlpvSnPlD"), .value = IOV("wHcjqDadMs"), }, - { .name = IOV("ijxcbNUH"), .value = IOV("KAFzdXGYCjxhsjCDcwNw"), }, - { .name = IOV("NzjgGN"), .value = IOV("JcJPwBjfnrMuHSGuwdsEnQFoHURgyNsiQFCzOPImsqEVIKmNVkvOsgCmpoUS"), }, - { .name = IOV("zSkyeHbZ"), .value = IOV("jPznbwLPsgLCrLFKYdRyhaqIsQnuByruzFkMQyaqlvrjNGSTLPydBPhcRfSnWKgipkYViUsMyJQ"), }, - { .name = IOV("pqmrpkzUDvVfxovCCVUL"), .value = IOV("vSZdqILPgFSJgTRCYEpURRdgN"), }, - { .name = IOV("kLUxChWnoeVo"), .value = IOV("ipQDnxKKFPtqTYuuTnieNnUqwYJCdUjHBweUQRqhnCAjRaPLBXQN"), }, - { .name = IOV("tgXUreDManbXUGQT"), .value = IOV("ODnshUiWEgeASiZTyHCbkJYMaLVYFNSTGYFtdDBdCuht"), }, - { .name = IOV("pvmctpJvpmHIE"), .value = IOV("dTBycLSyWavBeQ"), }, - { .name = IOV("wwrqLbGghFJYNpE"), .value = IOV("GiOOuBUY"), }, - { .name = IOV("tOxYpIvZDuvwO"), .value = IOV("GDlaNfmFQXxpWYWGyGfatYHKlrfUZKQMOkfsAqbUiPxECbRnPGAl"), }, - { .name = IOV("FUlNpqUcqZSDfjVD"), .value = IOV("ucVVvBodHCbRQTOIiZaBMgkjSsOLPgCsDyqHyhzICDaBWRyjMKdHH"), }, - { .name = IOV("cv"), .value = IOV("iUnZxTYvtGgpmvvJR"), }, - { .name = IOV("psKaJplpkmeYkrTJj"), .value = IOV("VJdGiDuGRJbvkluKUyToaPFQItiazGkDlbsvriHedJSeCgFoQWZhYiaLVndthSNCDHIYlnsYEaG"), }, - { .name = IOV("tgSITnODrNX"), .value = IOV("uDeOeINHfESqurHsEcNjnyOzegORs"), }, - { .name = IOV("Sr"), .value = IOV("JaGRVRfpBALZUrhvxKdpvDlBtVfsPAIMbVAjxuMjniPujwxBHSmgHopBUHve"), }, - { .name = IOV("RdGQT"), .value = IOV("WffIIIsfkHlQqHGlegMpKJOvKGytMiKmFLobDktmrBKVhxcJfzMQxyZV"), }, - { .name = IOV("HVucrPxOlOPEIKvmSeoU"), .value = IOV("wuxn"), }, - { .name = IOV("mibwyXEUZd"), .value = IOV("xuujkxjkbcBYakYlJoyl"), }, - { .name = IOV("IoMfGQSnMbMjnyOU"), .value = IOV("HyuSRajxEbIJWSXqhHaVMqJvNbjsUvAgOivgYjBBLPcRGVqRqfWhYpeQCGlJITbYQEMqjmGLx"), }, - { .name = IOV("BqWdwaGyqByaBrEpkRcF"), .value = IOV("blLcPZlcjBBXWgisUcmFsxPTHgQfEmiUmtjC"), }, - { .name = IOV("LIv"), .value = IOV("N"), }, - { .name = IOV("Ilmv"), .value = IOV("ZEEZUSFpFIEqLTlvSdkCKbqlPqXObTkOpocTsLwjsbVbZUCdhbzyXkHMnjAqtZwWVS"), }, - { .name = IOV("PdIVxnEHIqjqk"), .value = IOV("pTIlOSdiERHPMYEEQGrAJIfVAZAindEMDgTlIFteAxLSVxLdlyLGsamhpGRoXnkW"), }, - { .name = IOV("ATGyLdotS"), .value = IOV("InMkSNVDrDbZCpJHmiIBgABDa"), }, - { .name = IOV("DLgppXCe"), .value = IOV("aSYptgGtvidZSZwcOQIdknjFvEYHEGJQkJCTgCviNcCmmbGwVnXVeVBpsAYPVfvRwXawLkwWmL"), }, - { .name = IOV("QBDPmzELB"), .value = IOV("YhjLsvpUslykWpaBcIgunjQWjNkbYSlefgGKHy"), }, - { .name = IOV("DQ"), .value = IOV("dGxRPLevIuzYJQgigZDSXhWyBdvfFRCHkZbxgJpkPSRrYPFmqMmrzYWIaKhVBj"), }, - { .name = IOV("rUmPQsTLfQqRRdYVS"), .value = IOV("UbmcLYKFzZ"), }, - { .name = IOV("XtWnYw"), .value = IOV("ErAWzPcigydcRIuLvvTugfRSdyHlZasByDUnVhyzpBsdFpyUYBG"), }, - { .name = IOV("AFReJawusNrB"), .value = IOV("oJIXsiJGrjZmdHBShPimPIJTygeiehMzhqvZmjXtZCkFFC"), }, - { .name = IOV("kF"), .value = IOV("TVbTzgdUMUGhE"), }, - { .name = IOV("TmIIltkeZPiLKk"), .value = IOV("vsZOWVIpIpLNnvYzzobqGKVfFvHiCzfHLjSfLQefYcPftTjZJVd"), }, - { .name = IOV("vXvWprfHaRefCKWhsvOq"), .value = IOV("avgYVScnlVlQyfAqLOqpetdrAtX"), }, - { .name = IOV("honePIGeIKh"), .value = IOV("uekwxNputOwIGdNdHcoIuRPYpiozp"), }, - { .name = IOV("rUBqGU"), .value = IOV("zdTqIriihYKKvxeGapPnrKrhMVVwDmGWfYLFFeZQeSoNioEqYTNdoycTmAFiFOmVSxuvlisCt"), }, - { .name = IOV("MuZfHXBeauMqQOVlVZwy"), .value = IOV("yZvLteokUDeQp"), }, - { .name = IOV("FjOTUrTpVHdzuG"), .value = IOV("KXpAvEFozuJQaZvnOHzCffTgCS"), }, - { .name = IOV("Fk"), .value = IOV("ybdzpNSqCQdAegDzpoolTWlWZlTmyNVTFsqRvleIYaMFBghrEbDGEKiToYzlzgRaXpqhxlEdqzDmhKn"), }, - { .name = IOV("RQUVMKvHuUiKZbMkeZRX"), .value = IOV("iohcvQqbCoJADIjXjuDRVIbYeEbaNXXHgPel"), }, - { .name = IOV("KBdShdepg"), .value = IOV("WDHolFLyLLSeYEUJkeNkjgVQCpVMneNDcBSnZcptGapmsCavLQykKAjfcxUjkktXnYvFWDPjMVHPyl"), }, - { .name = IOV("ANTqpdqBwE"), .value = IOV("ADXNvrzGXXPlAPPFZrLCHtzmLyZRiYzMKnBJaTdkttjcfvjImgpXyAXLbggbEBU"), }, - { .name = IOV("SLdlVqWhI"), .value = IOV("UjTJTHDaGzMBXIRhSIMQpucaaVtJwEq"), }, - { .name = IOV("jhbhEdjxrkge"), .value = IOV("clCzJZl"), }, - { .name = IOV("mEgBy"), .value = IOV("uIYVwGgbinJCLCjSsONFXGqzYoRgrScclCabAqevKWUxPibWGcCjjbIfuqoGbBIVzF"), }, - { .name = IOV("V"), .value = IOV("zqFiJZWKk"), }, - { .name = IOV("kSQTzvEjOPZPrFZwKgP"), .value = IOV("kpkKRYbqeGTmLYOh"), }, - { .name = IOV("YZJAprRP"), .value = IOV("agNXoXqWVhDMIVrfmwfErrveHihVcefKGOwbpPELXWJNnEUwsPoKHCAIrLSjEGamtjbZlIM"), }, - { .name = IOV("pzHumxzaGC"), .value = IOV("TMKRLPyeeHG"), }, - { .name = IOV("JeoxyLpnrUDggbZNn"), .value = IOV("gryjepOsUwUXVvjt"), }, - { .name = IOV("jbqdTrot"), .value = IOV("hGZH"), }, - { .name = IOV("befvldowIgTw"), .value = IOV("QItWcSDEJwwvFScysXKTLajmUmiYGGegIfLrApuijQkndFdatUfB"), }, - { .name = IOV("clxQf"), .value = IOV("vXbSIZmJcuZvKcarINjPuSwabLFfipWWQFStvFMxSNuiizOZIgaiHfViMJeGwIuGwfJdkz"), }, - { .name = IOV("GHjSGzdumTpovMS"), .value = IOV("wqPExwywtsHYcJJGRWjxjSMOhADAKOOFDbCAyUFOwNnXzlJuKRPBrVvaAF"), }, - { .name = IOV("MOJypFoNZvnY"), .value = IOV("YjHESDlgRj"), }, - { .name = IOV("fgdLeYM"), .value = IOV("IiTGIGSgtOCCWDnUFfWnSqscQPktkppqfOlNHsOAQhxuTS"), }, - { .name = IOV("KZVwlSurHFKXLpW"), .value = IOV("QJATFxbKpAzZCsSGiHWOOZKCSeKEcXKZcQwNCrTICbfiSNqbSIrCVtQqVvGnnLQ"), }, - { .name = IOV("HoJApjPkGywUVQT"), .value = IOV("yNuHyALQsgFxmAJUuIMWyZVmXmwYBZPeYldhOCIKVOZQtjueXTtazKCQrZpXbQCjfgZEn"), }, - { .name = IOV("qQANsoBylferetwb"), .value = IOV("kXfITdoVYwYoAJHVDZpftFeziNLKrRgudNobPtfbN"), }, - { .name = IOV("kzhGlSyNb"), .value = IOV("uxHIdwRzhwkaDPDsFdNSFYYdXmaGPAad"), }, - { .name = IOV("iNjlAujVUPRGGo"), .value = IOV("jN"), }, - { .name = IOV("leZEqHHebILbEbrVwiCm"), .value = IOV("tphZNwDpPvbbJbFOgRtBQOxUypxPewGaJwnPWSbFhROIaBFj"), }, - { .name = IOV("IIIalFIj"), .value = IOV("eJEHDQJscPNrcZIZHTGAOCRvQsNychNZZXschjnUSXGnXiKVbM"), }, - { .name = IOV("WePvu"), .value = IOV("txhdxcuMrFdcwRtSDDHktKASbhHoYtJkHGqzGwUOHsBtvNsuTHIjwsUGJFJLxEazlUs"), }, - { .name = IOV("gbe"), .value = IOV("ul"), }, - { .name = IOV("inxL"), .value = IOV("zaCVQQIxINjtlVEMxV"), }, - { .name = IOV("ziShJIdSgGuAvFATwLHC"), .value = IOV("jKMbzBIJWwQOKHgOfRebhRZObGVAqBDYiNPOljWSItvJzBJhYSvHayt"), }, - { .name = IOV("DBbbwuEwydKZDLqfTM"), .value = IOV("HnBCzqTmVaghKfXfOaIrlTmIKkzoipcceCrrqytiHHTUOEURYCtFt"), }, - { .name = IOV("ZkQwDZ"), .value = IOV("Sb"), }, - { .name = IOV("yV"), .value = IOV("mjvsYWHHwVQYmeSZZQsDyqwXlajBLyAo"), }, - { .name = IOV("uMjriqCC"), .value = IOV("FrcqFdXPqFeDUxcCyJkZbmQOLJVcdJAKmQuaIxIlIVBrnRKTTAyomLLlDbvO"), }, - { .name = IOV("WEIvVamrCxy"), .value = IOV("UyJpDUuBIgeOTweaMaJJcwTxOtXoqSVYnjWruMrNG"), }, - { .name = IOV("RVCOhAMOIUPDsabH"), .value = IOV("mqCAIuuPHNHNfsJKZORTrlvFHnQzVABjeOnPAxyViMrcAuZBnqyyEInqjxGIxiMlOA"), }, - { .name = IOV("VrVoMFDFrohgjBLi"), .value = IOV("cgbYIYJUgATcNQyTFBbZOeJlIDaFbjgqMnOpeJrwCmDQkqYbxDZJveeAkdbgXCmc"), }, - { .name = IOV("YHSF"), .value = IOV("eYpRxyhhmmezlCUkBeGJmLsyKDtVxxVTlAdnCRlINvsVQWLJkSBCj"), }, - { .name = IOV("EVrTnyO"), .value = IOV("ZltJGecGEFRkT"), }, -}; diff --git a/external/lsquic/src/lshpack/test/test_int.c b/external/lsquic/src/lshpack/test/test_int.c deleted file mode 100644 index 5870ec1..0000000 --- a/external/lsquic/src/lshpack/test/test_int.c +++ /dev/null @@ -1,218 +0,0 @@ -#include -#include -#include -#include - -#include "lshpack.h" -#include "lshpack-test.h" - -struct int_test -{ - int it_lineno; - unsigned it_prefix_bits; - unsigned char it_encoded[20]; - size_t it_enc_sz; - uint32_t it_decoded; - int it_dec_retval; -}; - -static const struct int_test tests[] = -{ - - { .it_lineno = __LINE__, - .it_prefix_bits = 7, - .it_encoded = { 0x7F, 0x02, }, - .it_enc_sz = 2, - .it_decoded = 0x81, - .it_dec_retval = 0, - }, - - /* RFC 7541, Appendinx C.1.1 */ - { .it_lineno = __LINE__, - .it_prefix_bits = 5, - .it_encoded = { 0b1010, 0x02, }, - .it_enc_sz = 1, - .it_decoded = 10, - .it_dec_retval = 0, - }, - - /* RFC 7541, Appendinx C.1.2 */ - { .it_lineno = __LINE__, - .it_prefix_bits = 5, - .it_encoded = { 0b11111, 0b10011010, 0b00001010, }, - .it_enc_sz = 3, - .it_decoded = 1337, - .it_dec_retval = 0, - }, - - /* RFC 7541, Appendinx C.1.3 */ - { .it_lineno = __LINE__, - .it_prefix_bits = 8, - .it_encoded = { 0b101010, }, - .it_enc_sz = 1, - .it_decoded = 42, - .it_dec_retval = 0, - }, - - { .it_lineno = __LINE__, - .it_prefix_bits = 7, - .it_encoded = { 0b01111111, 0b10000001, 0b10000010, 0b00000011, }, - .it_enc_sz = 4, - /* 01234560123456 */ - .it_decoded = 0b1100000100000001 + 0b1111111, - .it_dec_retval = 0, - }, - - { .it_lineno = __LINE__, - .it_prefix_bits = 7, - .it_encoded = { 0b01111111, 0b10000001, 0b10000010, 0b10000011, - 0b00000011, }, - .it_enc_sz = 5, - /* 012345601234560123456 */ - .it_decoded = 0b11000001100000100000001 + 0b1111111, - .it_dec_retval = 0, - }, - - { .it_lineno = __LINE__, - .it_prefix_bits = 7, - .it_encoded = { 0b01111111, 0b10000000, 0b11111111, 0b11111111, - 0b11111111, 0b00001111, }, - .it_enc_sz = 6, - .it_decoded = UINT32_MAX, - .it_dec_retval = 0, - }, - - { .it_lineno = __LINE__, - .it_prefix_bits = 7, - /* Same as above, but with extra bit that overflows it */ - /* ----v---- */ - .it_encoded = { 0b01111111, 0b10010000, 0b11111111, 0b11111111, - 0b11111111, 0b00001111, }, - .it_enc_sz = 6, - .it_dec_retval = -2, - }, - - { .it_lineno = __LINE__, - .it_prefix_bits = 7, - .it_encoded = { 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, }, - .it_enc_sz = 11, - .it_dec_retval = -2, - }, - - { .it_lineno = __LINE__, - .it_encoded = { 0xFE, }, - .it_enc_sz = 1, - .it_prefix_bits = 4, - .it_dec_retval = 0, - .it_decoded = 0xE, - }, - - { .it_lineno = __LINE__, - .it_encoded = { 0x3F, 0x64, }, - .it_enc_sz = 2, - .it_prefix_bits = 6, - .it_dec_retval = 0, - .it_decoded = 0x3F + 0x64, - }, - - { .it_lineno = __LINE__, - .it_encoded = { 0xFF, }, - .it_enc_sz = 1, - .it_prefix_bits = 4, - .it_dec_retval = -1, /* Ran out of buffer */ - .it_decoded = 0, - }, - - { .it_lineno = __LINE__, - .it_encoded = { 0x87, 0xF0, 0x80, 0x7F, }, - .it_enc_sz = 4, - .it_prefix_bits = 3, - .it_dec_retval = 0, - .it_decoded = 0b111111100000001110111, - }, - - { .it_lineno = __LINE__, - .it_encoded = { 0x87, 0x80, 0x80, 0x80, 0x01, }, - .it_enc_sz = 5, - .it_prefix_bits = 3, - .it_dec_retval = 0, - .it_decoded = 0b1000000000000000000111, - }, - - { .it_lineno = __LINE__, - .it_encoded = { 0x87, 0x80, 0x80, 0x80, 0x01, }, - .it_enc_sz = 4, - .it_prefix_bits = 3, - .it_dec_retval = -1, /* Ran out of buffer */ - .it_decoded = 0, - }, - - { .it_lineno = __LINE__, - .it_encoded = { 0x87, 0x80, 0x80, 0x80, 0x80, 0x01, }, - .it_enc_sz = 6, - .it_prefix_bits = 3, - .it_dec_retval = 0, - .it_decoded = 0b10000000000000000000000000111, - }, - -}; - -int -main (void) -{ - const struct int_test *test; - const unsigned char *src; - unsigned char *dst; - unsigned char buf[ sizeof(((struct int_test *) NULL)->it_encoded) ]; - uint32_t val; - size_t sz; - int rv; - - /* Test the decoder */ - for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) - { - for (sz = 0; sz < test->it_enc_sz - 1; ++sz) - { - src = test->it_encoded; - rv = lshpack_dec_dec_int(&src, src + sz, test->it_prefix_bits, &val); - if (test->it_dec_retval == -2) - assert(-1 == rv || -2 == rv); - else - assert(-1 == rv); - } - src = test->it_encoded; - rv = lshpack_dec_dec_int(&src, src + test->it_enc_sz, - test->it_prefix_bits, &val); - assert(rv == test->it_dec_retval); - if (0 == rv) - assert(val == test->it_decoded); - } - - /* Test the encoder */ - for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) - { - if (test->it_dec_retval != 0) - continue; - for (sz = 1; sz < test->it_enc_sz; ++sz) - { - dst = lshpack_enc_enc_int(buf, buf + sz, test->it_decoded, - test->it_prefix_bits); - assert(dst == buf); /* Not enough room */ - } - for (; sz <= sizeof(buf); ++sz) - { - buf[0] = '\0'; - dst = lshpack_enc_enc_int(buf, buf + sz, test->it_decoded, - test->it_prefix_bits); - assert(dst - buf == (intptr_t) test->it_enc_sz); - assert((test->it_encoded[0] & ((1 << test->it_prefix_bits) - 1)) - == buf[0]); - if (test->it_enc_sz > 1) - assert(0 == memcmp(buf + 1, test->it_encoded + 1, - test->it_enc_sz - 1)); - } - } - - return 0; -} diff --git a/external/lsquic/tests/CMakeLists.txt b/external/lsquic/tests/CMakeLists.txt deleted file mode 100644 index fab22d3..0000000 --- a/external/lsquic/tests/CMakeLists.txt +++ /dev/null @@ -1,161 +0,0 @@ -# Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. -INCLUDE_DIRECTORIES(../src/liblsquic) - -ENABLE_TESTING() - -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLSQUIC_TEST=1") - -IF (MSVC) - SET(LIB_FLAGS "-FORCE:MULTIPLE") -ELSE() - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-value") - IF (CMAKE_C_COMPILER_ID STREQUAL GNU) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-override-init") - ENDIF() - IF (CMAKE_C_COMPILER_ID STREQUAL Clang) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-initializer-overrides") - ENDIF() -ENDIF() - -include_directories(../src/liblsquic/ls-qpack) -INCLUDE_DIRECTORIES(../src/lshpack) - -SET(TESTS - ack - ackgen_gquic_be - ackparse_gquic_be - ackparse_ietf - alarmset - alt_svc_ver - arr - attq - blocked_gquic_be - bw_sampler - conn_close_gquic_be - crypto_gen - cubic - dec - di_nocopy - elision - engine_ctor - export_key - frame_chop - frame_reader - frame_writer - goaway_gquic_be - hkdf - hpi - lsquic_hash - packet_out - packet_resize - packno_len - parse_packet_in - purga - qlog - quic_be_floats - reg_pkt_headergen - rst_stream_gquic_be - rtt - send_headers - senhist - set - sfcw - shi - spi - stop_waiting_gquic_be - streamgen - streamparse - tokgen - trapa - varint - ver_nego - wuf_gquic_be -) - -IF (CMAKE_SYSTEM_NAME STREQUAL "Linux") - # Linux has fmemopen - SET(TESTS ${TESTS} frame_rw) -ENDIF() - -IF (NOT CMAKE_SYSTEM_NAME STREQUAL "Windows") - # No regexes on Windows - SET(TESTS ${TESTS} ack_merge) - # No open_memstream() on Windows - SET(TESTS ${TESTS} hcsi_reader) - # Takes forever on Windows, for whatever reason. Or maybe it's the - # MS C compilers. Something to investigate... later. - LIST(APPEND TESTS h3_framing) -ENDIF() - - -FOREACH(TEST_NAME ${TESTS}) - ADD_EXECUTABLE(test_${TEST_NAME} test_${TEST_NAME}.c ${ADDL_SOURCES}) - IF(NOT MSVC) - TARGET_LINK_LIBRARIES(test_${TEST_NAME} ${LIBS} ${LIB_FLAGS}) - ELSE() - TARGET_LINK_LIBRARIES(test_${TEST_NAME} ${LIBS} ${GETOPT_LIB} ${LIB_FLAGS}) - # copy any dependencies local to the tests - #IF (${CMAKE_VERSION} VERSION_LESS "3.21.0") - ADD_CUSTOM_COMMAND(TARGET test_${TEST_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy \"$ENV{VCPKG_ROOT}/installed/x64-windows$<$:/debug>/bin/getopt.dll\" \"$\" - COMMAND_EXPAND_LISTS - ) - #ELSE() - # ADD_CUSTOM_COMMAND(TARGET test_${TEST_NAME} POST_BUILD - # COMMAND if not \"\"=="$" ${CMAKE_COMMAND} -E copy $ $ - # COMMAND_EXPAND_LISTS - # ) - #ENDIF() - ENDIF() - ADD_TEST(${TEST_NAME} test_${TEST_NAME}) -ENDFOREACH() - -ADD_EXECUTABLE(test_stream test_stream.c ${ADDL_SOURCES}) -TARGET_LINK_LIBRARIES(test_stream ${LIBS} ${LIB_FLAGS}) -IF(MSVC) - TARGET_LINK_LIBRARIES(test_stream ${GETOPT_LIB}) -ENDIF() -ADD_TEST(stream test_stream) -ADD_TEST(stream_hash test_stream -h) -ADD_TEST(stream_A test_stream -A) -ADD_TEST(stream_hash_A test_stream -A -h) - -IF(NOT MSVC) -ADD_EXECUTABLE(graph_cubic graph_cubic.c ${ADDL_SOURCES}) -TARGET_LINK_LIBRARIES(graph_cubic ${LIBS}) - -ADD_EXECUTABLE(mini_parse mini_parse.c ${ADDL_SOURCES}) -TARGET_LINK_LIBRARIES(mini_parse ${LIBS}) -ENDIF() - -ADD_EXECUTABLE(test_min_heap test_min_heap.c ../src/liblsquic/lsquic_min_heap.c) -ADD_TEST(min_heap test_min_heap) - -SET(MALO_SRC test_malo.c ../src/liblsquic/lsquic_malo.c) -ADD_EXECUTABLE(test_malo_pooled ${MALO_SRC}) -IF(MSVC) - TARGET_LINK_LIBRARIES(test_malo_pooled ${GETOPT_LIB}) -ENDIF() -SET_TARGET_PROPERTIES(test_malo_pooled - PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLSQUIC_USE_POOLS=1") -ADD_TEST(malo_pooled test_malo_pooled) - -ADD_EXECUTABLE(test_malo_nopool ${MALO_SRC}) -IF(MSVC) - TARGET_LINK_LIBRARIES(test_malo_nopool ${GETOPT_LIB}) -ENDIF() -SET_TARGET_PROPERTIES(test_malo_nopool - PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLSQUIC_USE_POOLS=0") -ADD_TEST(malo_nopool test_malo_nopool) - -ADD_EXECUTABLE(test_minmax test_minmax.c ../src/liblsquic/lsquic_minmax.c) -IF(MSVC) - TARGET_LINK_LIBRARIES(test_minmax ${GETOPT_LIB}) -ENDIF() -ADD_TEST(minmax test_minmax) - -ADD_EXECUTABLE(test_rechist test_rechist.c ../src/liblsquic/lsquic_rechist.c) -ADD_TEST(rechist test_rechist) - -ADD_EXECUTABLE(test_trechist test_trechist.c ../src/liblsquic/lsquic_trechist.c) -ADD_TEST(trechist test_trechist) diff --git a/external/lsquic/tests/graph_cubic.c b/external/lsquic/tests/graph_cubic.c deleted file mode 100644 index f91ce69..0000000 --- a/external/lsquic/tests/graph_cubic.c +++ /dev/null @@ -1,160 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * This is not really a test: this program prints out cwnd histogram - * for visual inspection. - */ - -#include -#include -#include -#ifndef WIN32 -#include -#include -#include -#else -#include -#endif - -#include "lsquic_types.h" -#include "lsquic_int_types.h" -#include "lsquic_cong_ctl.h" -#include "lsquic_packet_common.h" -#include "lsquic_packet_out.h" -#include "lsquic_cubic.h" - -static const struct cong_ctl_if *const cci = &lsquic_cong_cubic_if; - -#define MS(n) ((n) * 1000) /* MS: Milliseconds */ - -enum event { EV_ACK, EV_LOSS, EV_TIMEOUT, }; - -static const char *const evstr[] = { - [EV_ACK] = "ACK", - [EV_LOSS] = "LOSS", - [EV_TIMEOUT] = "TIMEOUT", -}; - -struct rec -{ - enum event event; - unsigned cwnd; -}; - -#define REC(ev) do { \ - if (i >= n_recs_alloc) \ - { \ - if (n_recs_alloc) \ - n_recs_alloc *= 2; \ - else \ - n_recs_alloc = 20; \ - recs = realloc(recs, n_recs_alloc * \ - sizeof(recs[0])); \ - } \ - recs[i].event = ev; \ - recs[i].cwnd = cci->cci_get_cwnd(&cubic); \ - if (max_cwnd < recs[i].cwnd) \ - max_cwnd = recs[i].cwnd; \ -} while (0) - -int -main (int argc, char **argv) -{ - int i, n, opt; - int n_recs_alloc = 0; - int app_limited = 0; - unsigned unit = 100; /* Default to 100 ms */ - unsigned rtt_ms = 10; /* Default to 10 ms */ - struct lsquic_cubic cubic; - struct rec *recs = NULL; - unsigned max_cwnd, width; - char *line; -#ifndef WIN32 - struct winsize winsize; -#endif - enum cubic_flags flags; - struct lsquic_packet_out packet_out; - - cci->cci_init(&cubic, 0, 0); - max_cwnd = 0; - i = 0; - memset(&packet_out, 0, sizeof(packet_out)); - - while (-1 != (opt = getopt(argc, argv, "s:u:r:f:l:A:L:T:"))) - { - switch (opt) - { - case 's': - cubic.cu_ssthresh = atoi(optarg); - break; - case 'r': - rtt_ms = atoi(optarg); - break; - case 'f': - flags = atoi(optarg); - lsquic_cubic_set_flags(&cubic, flags); - break; - case 'l': - app_limited = atoi(optarg); - break; - case 'A': - n = i + atoi(optarg); - for ( ; i < n; ++i) - { - packet_out.po_sent = MS(unit * i) - MS(rtt_ms); - cci->cci_ack(&cubic, &packet_out, 1370, MS(unit * i), app_limited); - REC(EV_ACK); - } - break; - case 'L': - n = i + atoi(optarg); - for ( ; i < n; ++i) - { - cci->cci_loss(&cubic); - REC(EV_LOSS); - } - break; - case 'T': - n = i + atoi(optarg); - for ( ; i < n; ++i) - { - cci->cci_timeout(&cubic); - REC(EV_TIMEOUT); - } - break; - case 'u': - unit = atoi(optarg); - break; - default: - exit(1); - } - } - -#ifndef WIN32 - if (isatty(STDIN_FILENO)) - { - if (0 == ioctl(STDIN_FILENO, TIOCGWINSZ, &winsize)) - width = winsize.ws_col; - else - { - perror("ioctl"); - width = 80; - } - } - else -#endif - width = 80; - - width -= 5 /* cwnd */ + 1 /* space */ + 1 /* event type */ + - 1 /* space */ + 1 /* newline */; - line = malloc(width); - memset(line, '+', width); - - for (n = i, i = 0; i < n; ++i) - printf("%c % 5d %.*s\n", *evstr[recs[i].event], recs[i].cwnd, - (int) ((float) recs[i].cwnd / max_cwnd * width), line); - - free(recs); - free(line); - - return 0; -} diff --git a/external/lsquic/tests/mini_parse.c b/external/lsquic/tests/mini_parse.c deleted file mode 100644 index b078351..0000000 --- a/external/lsquic/tests/mini_parse.c +++ /dev/null @@ -1,115 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * Convert from our hexdump format to binary: - * - * perl -p -ne 's/^[[:xdigit:]]+\s+//;s~ \|.*~~;s/\s+//g;s/([[:xdigit:]]{2})/chr hex$1/ge' - */ - -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#include -#else -#include "getopt.h" -#endif - -#include -#include -#include - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_int_types.h" -#include "lsquic_packet_common.h" -#include "lsquic_packet_gquic.h" -#include "lsquic_packet_in.h" -#include "lsquic_packet_out.h" -#include "lsquic_mm.h" -#include "lsquic_hash.h" -#include "lsquic_conn.h" -#include "lsquic_rtt.h" -#include "lsquic_mini_conn.h" -#include "lsquic_engine_public.h" -#include "lsquic_util.h" -#include "lsquic_logger.h" -#include "lsquic_str.h" - - -int -lsquic_enc_session_decrypt (void *enc_session_p, enum lsquic_version version, - uint8_t path_id, uint64_t pack_num, - unsigned char *buf, size_t *header_len, size_t data_len, - unsigned char *diversification_nonce, - unsigned char *buf_out, size_t max_out_len, size_t *out_len) -{ - memcpy(buf_out, buf, *header_len + data_len); - *out_len = data_len; - return 0; -} - - -int -main (int argc, char **argv) -{ - int opt; - int fd = STDIN_FILENO; - struct lsquic_engine_public enpub; - struct lsquic_conn *lconn; - lsquic_packet_in_t packet_in; - unsigned char buf[0x1000]; - ssize_t packet_sz; - enum lsquic_version ver = LSQVER_043; - - memset(&enpub, 0, sizeof(enpub)); - lsquic_mm_init(&enpub.enp_mm); - - lsquic_log_to_fstream(stderr, LLTS_NONE); - lsq_log_levels[LSQLM_MINI_CONN] = LSQ_LOG_DEBUG; - lsq_log_levels[LSQLM_NOMODULE] = LSQ_LOG_DEBUG; - - while (-1 != (opt = getopt(argc, argv, "v:f:h"))) - { - switch (opt) - { - case 'v': - ver = atoi(optarg); - break; - case 'f': - fd = open(optarg, O_RDONLY); - if (fd < 0) - { - perror("open"); - exit(EXIT_FAILURE); - } - break; - case 'h': - fprintf(stderr, "usage: %s [-v version] [-f input-file]\n", argv[0]); - exit(EXIT_SUCCESS); - default: - exit(EXIT_FAILURE); - } - } - - packet_sz = read(fd, buf, sizeof(buf)); - if (packet_sz < 0) - { - perror("read"); - exit(EXIT_FAILURE); - } - - memset(&packet_in, 0, sizeof(packet_in)); - packet_in.pi_packno = 1; - packet_in.pi_header_sz = 0; - packet_in.pi_data_sz = packet_sz; - packet_in.pi_data = buf; - packet_in.pi_refcnt = 1; - - lconn = lsquic_mini_conn_new(&enpub, &packet_in, ver); - lconn->cn_if->ci_packet_in(lconn, &packet_in); - - exit(EXIT_SUCCESS); -} diff --git a/external/lsquic/tests/test_ack.c b/external/lsquic/tests/test_ack.c deleted file mode 100644 index dde5571..0000000 --- a/external/lsquic/tests/test_ack.c +++ /dev/null @@ -1,219 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* Test both generation and parsing of IETF ACK frames */ - -#include -#include - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_int_types.h" -#include "lsquic_sizes.h" -#include "lsquic_parse.h" -#include "lsquic_trans_params.h" - -struct test -{ - int lineno; - int skip_gen; - - struct ack_info acki; - - size_t encoded_sz; - unsigned char encoded[0x1000]; -}; - -static const lsquic_time_t now = 0x12345676890; - -static const struct test tests[] = -{ - { - .lineno = __LINE__, - .acki = - { - .n_ranges = 2, - .lack_delta = 0xFEDCB0, - .ranges = - { - [0] = { 7, 7, }, - [1] = { 0, 0, }, - }, - }, - .encoded = - { - /* Type */ 0x02, - /* Largest acked */ 0x07, - /* ACK delay */ 0x80, 0x1F, 0xDB, 0x96, - /* Addl block count */ 0x01, - /* First ACK block */ 0x00, - /* Gap */ 0x05, - /* ACK block */ 0x00, - }, - .encoded_sz = 10, - }, - - { - .lineno = __LINE__, - .acki = - { - .n_ranges = 3, - .lack_delta = 0xFEDCB0, - .ranges = - { - [0] = { 10, 10, }, - [1] = { 7, 7, }, - [2] = { 0, 0, }, - }, - }, - .encoded = - { - /* Type */ 0x02, - /* Largest acked */ 10, - /* ACK delay */ 0x80, 0x1F, 0xDB, 0x96, - /* Addl block count */ 2, - /* First ACK block */ 0x00, - /* Gap */ 0x01, - /* ACK block */ 0x00, - /* Gap */ 0x05, - /* ACK block */ 0x00, - }, - .encoded_sz = 12, - }, - - { - .lineno = __LINE__, - .acki = - { - .flags = AI_ECN, - .n_ranges = 3, - .lack_delta = 0xFEDCB0, - .ecn_counts = { 0, 0x010203, 1, 0x49, }, - .ranges = - { - [0] = { 10, 10, }, - [1] = { 7, 7, }, - [2] = { 0, 0, }, - }, - }, - .encoded = - { - /* Type */ 0x03, - /* Largest acked */ 10, - /* ACK delay */ 0x80, 0x1F, 0xDB, 0x96, - /* Addl block count */ 2, - /* First ACK block */ 0x00, - /* Gap */ 0x01, - /* ACK block */ 0x00, - /* Gap */ 0x05, - /* ACK block */ 0x00, - /* ECT(1) count */ 0x01, - /* ECT(0) count */ 0x80, 0x01, 0x02, 0x03, - /* ECN-CE count */ 0x40, 0x49, - }, - .encoded_sz = 19, - }, - -}; - -struct rechist -{ - const struct ack_info *acki; - unsigned next_range; -}; - - -static const struct lsquic_packno_range * -rechist_next (void *ctx) -{ - struct rechist *rechist = ctx; - if (rechist->next_range < rechist->acki->n_ranges) - return rechist->acki->ranges + rechist->next_range++; - else - return NULL; -} - -static const struct lsquic_packno_range * -rechist_first (void *ctx) -{ - struct rechist *rechist = ctx; - rechist->next_range = 0; - return rechist_next(rechist); -} - -static lsquic_time_t -rechist_largest_recv (void *ctx) -{ - struct rechist *rechist = ctx; - return now - rechist->acki->lack_delta; -} - - -static void -compare_ackis (const struct ack_info *exp, const struct ack_info *got) -{ - unsigned i; - - assert(exp->flags == got->flags); - assert(exp->n_ranges == got->n_ranges); - assert(exp->lack_delta == got->lack_delta); - - for (i = 0; i < exp->n_ranges; ++i) - { - assert(exp->ranges[i].high == got->ranges[i].high); - assert(exp->ranges[i].low == got->ranges[i].low); - } - - if (exp->flags & AI_ECN) - for (i = 1; i <= 3; ++i) - assert(exp->ecn_counts[i] == got->ecn_counts[i]); -} - - -static void -run_test (const struct test *test) -{ - int len, has_missing; - lsquic_packno_t largest_received; - const struct parse_funcs *pf; - struct rechist rechist; - struct ack_info acki; - size_t sz; - unsigned char buf[0x1000]; - - pf = select_pf_by_ver(LSQVER_I001); - if (!test->skip_gen) - { - rechist.acki = &test->acki; - len = pf->pf_gen_ack_frame(buf, sizeof(buf), rechist_first, rechist_next, - rechist_largest_recv, &rechist, now, &has_missing, &largest_received, - test->acki.flags & AI_ECN ? rechist.acki->ecn_counts : NULL); - assert(len > 0); - assert(largest_received == largest_acked(&test->acki)); - assert((size_t) len == test->encoded_sz); - assert(0 == memcmp(test->encoded, buf, test->encoded_sz)); - } - - /* Test that shorter buffers cannot get parsed */ - for (sz = 1; sz < test->encoded_sz; ++sz) - { - len = pf->pf_parse_ack_frame(test->encoded, sz, &acki, - TP_DEF_ACK_DELAY_EXP); - assert(len < 0); - } - - len = pf->pf_parse_ack_frame(test->encoded, sizeof(test->encoded), &acki, - TP_DEF_ACK_DELAY_EXP); - assert(len > 0); - assert((size_t) len == test->encoded_sz); - compare_ackis(&test->acki, &acki); -} - -int -main (void) -{ - const struct test *test; - - for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) - run_test(test); - - return 0; -} diff --git a/external/lsquic/tests/test_ack_merge.c b/external/lsquic/tests/test_ack_merge.c deleted file mode 100644 index da3654e..0000000 --- a/external/lsquic/tests/test_ack_merge.c +++ /dev/null @@ -1,185 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* Test ACK merge */ - -#include -#include -#include -#include - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_int_types.h" -#include "lsquic_sizes.h" -#include "lsquic_parse.h" - -struct test -{ - int lineno; - int expect_failure; - char a[MAX_ACKI_STR_SZ]; - char b[MAX_ACKI_STR_SZ]; - char result[MAX_ACKI_STR_SZ]; -}; - - -static const struct test tests[] = -{ - - { - .lineno = __LINE__, - .expect_failure = 1, - .a = "", - .b = "[3-3]", - }, - - { - .lineno = __LINE__, - .expect_failure = 1, - .a = "", - .b = "", - }, - - { - .lineno = __LINE__, - .a = "[3-3]", - .b = "[3-3]", - .result = "[3-3]", - }, - - { - .lineno = __LINE__, - .a = "[3-2]", - .b = "[1-1]", - .result = "[3-1]", - }, - - { - .lineno = __LINE__, - .a = "[15-15][3-2]", - .b = "[1-1]", - .result = "[15-15][3-1]", - }, - - { - .lineno = __LINE__, - .a = "[15-10][5-2]", - .b = "[9-6][1-1]", - .result = "[15-1]", - }, - - { - .lineno = __LINE__, - .a = "[15-10][5-2]", - .b = "[15-10][5-2]", - .result = "[15-10][5-2]", - }, - - { - .lineno = __LINE__, - .a = "[33803-33803][33800-33800][33788-33788][33775-33775][33759-33759][33744-33744][33732-33732][33717-33717][33706-33706][33691-33691][33679-33679][33664-33664][33649-33649][33638-33638][33622-33622][33613-33613][33585-33585][33574-33574][33562-33562][33546-33546][33531-33531][33516-33516][33504-33504][33490-33490][33483-33483][33481-32910][32906-32906][32894-32894][32880-32880][32869-32869][32854-32854][32844-32844][32817-32817][32806-32806][32791-32791][32780-32780][32766-32766][32752-32752][32741-32741][32726-32726][32716-32716][32702-32702][32697-32697][32682-32682][32672-32672][32657-32657][32651-32651][32636-32636][32626-32626][32611-32611][32600-32600][32589-32589][32574-32574][32564-32564][32551-32551][32536-32536][32525-32525][32511-32511][32500-32500][32485-32485][32475-32475][32460-32460][32449-32449][32438-32438][32423-32423][32412-32412][32399-32399][32385-32385][32375-32375][32360-32360][32349-32349][32334-32334][32326-32326][32312-32312][32302-32302][32287-32287][32277-32277][32262-32262][32252-32252][32239-32239][32224-32224][32214-32214][32200-32200][32190-32190][32175-32175][32161-32161][32151-32151][32136-32136][32126-32126][32111-32111][32103-32103][32090-32090][32080-32080][32069-32033][32008-30698][30696-30467]", - .b = "[33480-32910][32906-32906][32894-32894][32880-32880][32869-32869][32854-32854][32844-32844][32817-32817][32806-32806][32791-32791][32780-32780][32766-32766][32752-32752][32741-32741][32726-32726][32716-32716][32702-32702][32697-32697][32682-32682][32672-32672][32657-32657][32651-32651][32636-32636][32626-32626][32611-32611][32600-32600][32589-32589][32574-32574][32564-32564][32551-32551][32536-32536][32525-32525][32511-32511][32500-32500][32485-32485][32475-32475][32460-32460][32449-32449][32438-32438][32423-32423][32412-32412][32399-32399][32385-32385][32375-32375][32360-32360][32349-32349][32334-32334][32326-32326][32312-32312][32302-32302][32287-32287][32277-32277][32262-32262][32252-32252][32239-32239][32224-32224][32214-32214][32200-32200][32190-32190][32175-32175][32161-32161][32151-32151][32136-32136][32126-32126][32111-32111][32103-32103][32090-32090][32080-32080][32069-32033][32008-30698][30696-30467]", - .result = "[33803-33803][33800-33800][33788-33788][33775-33775][33759-33759][33744-33744][33732-33732][33717-33717][33706-33706][33691-33691][33679-33679][33664-33664][33649-33649][33638-33638][33622-33622][33613-33613][33585-33585][33574-33574][33562-33562][33546-33546][33531-33531][33516-33516][33504-33504][33490-33490][33483-33483][33481-32910][32906-32906][32894-32894][32880-32880][32869-32869][32854-32854][32844-32844][32817-32817][32806-32806][32791-32791][32780-32780][32766-32766][32752-32752][32741-32741][32726-32726][32716-32716][32702-32702][32697-32697][32682-32682][32672-32672][32657-32657][32651-32651][32636-32636][32626-32626][32611-32611][32600-32600][32589-32589][32574-32574][32564-32564][32551-32551][32536-32536][32525-32525][32511-32511][32500-32500][32485-32485][32475-32475][32460-32460][32449-32449][32438-32438][32423-32423][32412-32412][32399-32399][32385-32385][32375-32375][32360-32360][32349-32349][32334-32334][32326-32326][32312-32312][32302-32302][32287-32287][32277-32277][32262-32262][32252-32252][32239-32239][32224-32224][32214-32214][32200-32200][32190-32190][32175-32175][32161-32161][32151-32151][32136-32136][32126-32126][32111-32111][32103-32103][32090-32090][32080-32080][32069-32033][32008-30698][30696-30467]", - }, - -}; - - -static regex_t re; - - -static void -init_ranges (struct ack_info *a, const char *s) -{ - regmatch_t m[3]; - - while (0 == regexec(&re, s, sizeof(m) / sizeof(m[0]), m, 0)) - { - a->ranges[a->n_ranges].high = atoi(s + m[1].rm_so); - a->ranges[a->n_ranges].low = atoi(s + m[2].rm_so); - /* Self-check: */ - assert(a->ranges[a->n_ranges].high >= a->ranges[a->n_ranges].low); - ++a->n_ranges; - s += m[0].rm_eo; - } -} - - -static void -run_test_ext (const struct test *test, const char *a_str, const char *b_str) -{ - struct ack_info a, b; - int s; - char ack_str[MAX_ACKI_STR_SZ]; - - memset(&a, 0, sizeof(a)); - memset(&b, 0, sizeof(b)); - - init_ranges(&a, a_str); - init_ranges(&b, b_str); - - s = lsquic_merge_acks(&a, &b); - if (test->expect_failure) - { - assert(s != 0); - return; - } - - assert(s == 0); - lsquic_acki2str(&a, ack_str, sizeof(ack_str)); - assert(0 == strcmp(ack_str, test->result)); -} - - -static void -run_test (const struct test *test) -{ - run_test_ext(test, test->a, test->b); - /* If flipped result should be the same: */ - run_test_ext(test, test->b, test->a); -} - - -static void -test_out_of_ranges (int success) -{ - struct ack_info a, b; - int i, s; - - memset(&a, 0, sizeof(a)); - memset(&b, 0, sizeof(b)); - - for (i = 0; i < 129 - success; ++i) - { - a.ranges[i].high = a.ranges[i].low = 100000 - i * 10; - b.ranges[i].high = b.ranges[i].low = 100000 - 5 - i * 10; - } - a.n_ranges = i; - b.n_ranges = i; - - s = lsquic_merge_acks(&a, &b); - if (success) - assert(s == 0); - else - assert(s != 0); -} - - -int -main (void) -{ - const struct test *test; - int s; - - s = regcomp(&re, "\\[([0-9][0-9]*)-([0-9][0-9]*)\\]", REG_EXTENDED); - assert(s == 0); - - for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) - run_test(test); - - test_out_of_ranges(0); - test_out_of_ranges(1); - - regfree(&re); - - return 0; -} diff --git a/external/lsquic/tests/test_ackgen_gquic_be.c b/external/lsquic/tests/test_ackgen_gquic_be.c deleted file mode 100644 index f60ab9b..0000000 --- a/external/lsquic/tests/test_ackgen_gquic_be.c +++ /dev/null @@ -1,389 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * Test how ACK frame is encoded. Receive history module is tested by a - * separate unit test. - */ - -#include -#include -#include -#include - -#ifdef WIN32 -#include "vc_compat.h" -#endif - -#include "lsquic_types.h" -#include "lsquic_int_types.h" -#include "lsquic_rechist.h" -#include "lsquic_parse.h" -#include "lsquic_util.h" -#include "lsquic_logger.h" -#include "lsquic.h" - -//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC -#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) - -static void -test1 (void) /* Inverse of quic_framer_test.cc -- NewAckFrameOneAckBlock */ -{ - lsquic_rechist_t rechist; - lsquic_time_t now = lsquic_time_now(); - lsquic_packno_t largest = 0; - - lsquic_rechist_init(&rechist, 0, 0); - - unsigned i; - for (i = 1; i <= 0x1234; ++i) - (void) lsquic_rechist_received(&rechist, i, now); - - const unsigned char expected_ack_frame[] = { - 0x45, - 0x12, 0x34, /* Largest acked */ - 0x87, 0xFF, /* Delta time */ - 0x12, 0x34, /* Block length */ - 0x00, /* Number of timestamps */ - }; - unsigned char outbuf[0x100]; - - int has_missing = -1; - int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now + 0x7FF8000, &has_missing, &largest, NULL); - assert(("ACK frame generation successful", w > 0)); - assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); - assert(("ACK frame contents are as expected", - 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); - assert(("ACK frame has no missing packets", has_missing == 0)); - assert(largest == 0x1234); - - lsquic_rechist_cleanup(&rechist); -} - -static void -test2 (void) /* Inverse of quic_framer_test.cc -- NewAckFrameOneAckBlock, minus - * delta times. - */ -{ - lsquic_rechist_t rechist; - lsquic_time_t now = lsquic_time_now(); - - lsquic_rechist_init(&rechist, 0, 0); - - /* Encode the following ranges: - * high low - * 0x1234 0x1234 - * 0x1232 0x384 - * 0x1F3 0xA - * 0x4 0x1 - */ - unsigned i; - for (i = 4; i >= 1; --i) - (void) lsquic_rechist_received(&rechist, i, now); - (void) lsquic_rechist_received(&rechist, 0x1234, now); - for (i = 0xA; i <= 0x1F3; ++i) - (void) lsquic_rechist_received(&rechist, i, now); - for (i = 0x1232; i >= 0x384; --i) - (void) lsquic_rechist_received(&rechist, i, now); - - const unsigned char expected_ack_frame[] = { - 0x65, - 0x12, 0x34, /* Largest acked */ - 0x00, 0x00, /* Zero delta time. */ - 0x04, /* Num ack blocks ranges. */ - 0x00, 0x01, /* First ack block length. */ - 0x01, /* Gap to next block. */ - 0x0e, 0xaf, /* Ack block length. */ - 0xff, /* Gap to next block. */ - 0x00, 0x00, /* Ack block length. */ - 0x91, /* Gap to next block. */ - 0x01, 0xea, /* Ack block length. */ - 0x05, /* Gap to next block. */ - 0x00, 0x04, /* Ack block length. */ - 0x00, /* Number of timestamps. */ - }; - unsigned char outbuf[0x100]; - - int has_missing = -1; - lsquic_packno_t largest = 0; - int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now, &has_missing, &largest, NULL); - assert(("ACK frame generation successful", w > 0)); - assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); - assert(("ACK frame contents are as expected", - 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); - assert(("ACK frame has missing packets", has_missing > 0)); - assert(largest == 0x1234); - - lsquic_rechist_cleanup(&rechist); -} - -static void -test3 (void) -{ - lsquic_rechist_t rechist; - lsquic_time_t now = lsquic_time_now(); - - lsquic_rechist_init(&rechist, 0, 0); - - /* Encode the following ranges: - * high low - * 3 3 - * 1 1 - */ - (void) lsquic_rechist_received(&rechist, 1, now); - (void) lsquic_rechist_received(&rechist, 3, now); - - const unsigned char expected_ack_frame[] = { - 0x60, - 0x03, - 0x00, 0x00, /* Zero delta time. */ - 0x01, /* Num ack blocks ranges. */ - 0x01, /* First ack block length. */ - 0x01, /* Gap to next block. */ - 0x01, /* Ack block length. */ - 0x00, /* Number of timestamps. */ - }; - unsigned char outbuf[0x100]; - - int has_missing = -1; - lsquic_packno_t largest = 0; - int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now, &has_missing, &largest, NULL); - assert(("ACK frame generation successful", w > 0)); - assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); - assert(("ACK frame contents are as expected", - 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); - assert(("ACK frame has missing packets", has_missing > 0)); - assert(largest == 0x03); - - lsquic_rechist_cleanup(&rechist); -} - - -static void -test4 (void) -{ - lsquic_rechist_t rechist; - int i; - - lsquic_rechist_init(&rechist, 0, 0); - - lsquic_time_t now = lsquic_time_now(); - lsquic_rechist_received(&rechist, 1, now); - - { - const unsigned char expected_ack_frame[] = { - 0x40, - 0x01, /* Largest acked */ - 0x00, 0x00, /* Delta time */ - 0x01, /* Block length */ - 0x00, /* Number of timestamps */ - }; - unsigned char outbuf[0x100]; - int has_missing = -1; - lsquic_packno_t largest = 0; - int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now, &has_missing, &largest, NULL); - assert(("ACK frame generation successful", w > 0)); - assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); - assert(("ACK frame contents are as expected", - 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); - assert(("ACK frame has no missing packets", has_missing == 0)); - assert(largest == 1); - } - - for (i = 3; i <= 5; ++i) - lsquic_rechist_received(&rechist, i, now); - - { - const unsigned char expected_ack_frame[] = { - 0x60, - 0x05, /* Largest acked */ - 0x00, 0x00, /* Delta time */ - 0x01, /* Num ack blocks */ - 0x03, /* First block length [3, 5] */ - 0x01, /* Gap to next block */ - 0x01, /* Second block length [1, 1] */ - 0x00, /* Number of timestamps */ - }; - unsigned char outbuf[0x100]; - int has_missing = -1; - lsquic_packno_t largest = 0; - int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now, &has_missing, &largest, NULL); - assert(("ACK frame generation successful", w > 0)); - assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); - assert(("ACK frame contents are as expected", - 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); - assert(("ACK frame has missing packets", has_missing > 0)); - assert(largest == 5); - } - - lsquic_rechist_cleanup(&rechist); -} - - -static void -test_4byte_packnos (void) -{ - lsquic_packno_t packno; - lsquic_rechist_t rechist; - lsquic_time_t now = lsquic_time_now(); - - lsquic_rechist_init(&rechist, 0, 0); - - packno = 0x23456789; - (void) lsquic_rechist_received(&rechist, packno - 33, now); - (void) lsquic_rechist_received(&rechist, packno, now); - - /* Adjust: */ - rechist.rh_elems[0].re_low = 1; - rechist.rh_elems[0].re_count = packno - 33; - - const unsigned char expected_ack_frame[] = { - 0x60 - | (2 << 2) /* Four-byte largest acked */ - | (2 << 0) /* Four-byte ACK block length */ - , - 0x23, 0x45, 0x67, 0x89, - 0x00, 0x00, /* Zero delta time. */ - 0x01, /* Num ack blocks ranges. */ - 0x00, 0x00, 0x00, 0x01, /* First ack block length. */ - 33 - 1, /* Gap to next block. */ - 0x23, 0x45, 0x67, 0x68, /* Ack block length. */ - 0x00, /* Number of timestamps. */ - }; - unsigned char outbuf[0x100]; - - int has_missing = -1; - lsquic_packno_t largest = 0; - int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now, &has_missing, &largest, NULL); - assert(("ACK frame generation successful", w > 0)); - assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); - assert(("ACK frame contents are as expected", - 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); - assert(("ACK frame has missing packets", has_missing > 0)); - assert(largest == 0x23456789); - - lsquic_rechist_cleanup(&rechist); -} - - -/* lsquic_rechist no longer supports ranges that require integers - * wider than four bytes -- modify the test to use a custom receive - * history. - */ -static const struct lsquic_packno_range test_6byte_ranges[] = { - { .high = 0xABCD23456789, .low = 0xABCD23456789, }, - { .high = 0xABCD23456789 - 33, .low = 1, }, -}; - - -static const struct lsquic_packno_range * -test_6byte_rechist_first (void *rechist) -{ - int *next = rechist; - *next = 1; - return &test_6byte_ranges[0]; -}; - - -static const struct lsquic_packno_range * -test_6byte_rechist_next (void *rechist) -{ - int *next = rechist; - if (*next == 1) - { - ++*next; - return &test_6byte_ranges[1]; - } - else - return NULL; -} - - -static lsquic_time_t s_test_6byte_now; -static lsquic_time_t -test_6byte_rechist_largest_recv (void *rechist) -{ - return s_test_6byte_now; -} - - -static void -test_6byte_packnos (void) -{ - int rechist = 0; - s_test_6byte_now = lsquic_time_now(); - - const unsigned char expected_ack_frame[] = { - 0x60 - | (3 << 2) /* Six-byte largest acked */ - | (3 << 0) /* Six-byte ACK block length */ - , - 0xAB, 0xCD, 0x23, 0x45, 0x67, 0x89, - 0x00, 0x00, /* Zero delta time. */ - 0x01, /* Num ack blocks ranges. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, /* First ack block length. */ - 33 - 1, /* Gap to next block. */ - 0xAB, 0xCD, 0x23, 0x45, 0x67, 0x68, /* Ack block length. */ - 0x00, /* Number of timestamps. */ - }; - unsigned char outbuf[0x100]; - - int has_missing = -1; - lsquic_packno_t largest = 0; - int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), - test_6byte_rechist_first, - test_6byte_rechist_next, - test_6byte_rechist_largest_recv, - &rechist, s_test_6byte_now, &has_missing, &largest, NULL); - assert(("ACK frame generation successful", w > 0)); - assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); - assert(("ACK frame contents are as expected", - 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); - assert(("ACK frame has missing packets", has_missing > 0)); - assert(largest == 0xABCD23456789ULL); -} - - -int -main (void) -{ - lsquic_global_init(LSQUIC_GLOBAL_SERVER); - lsquic_log_to_fstream(stderr, LLTS_NONE); - lsq_log_levels[LSQLM_PARSE] = LSQ_LOG_DEBUG; - - test1(); - - test2(); - - test3(); - - test4(); - - test_4byte_packnos(); - - test_6byte_packnos(); - - return 0; -} diff --git a/external/lsquic/tests/test_ackgen_gquic_le.c b/external/lsquic/tests/test_ackgen_gquic_le.c deleted file mode 100644 index 32f09a8..0000000 --- a/external/lsquic/tests/test_ackgen_gquic_le.c +++ /dev/null @@ -1,359 +0,0 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * Test how ACK frame is encoded. Receive history module is tested by a - * separate unit test. - */ - -#include -#include -#include -#include - -#include "lsquic_types.h" -#include "lsquic_int_types.h" -#include "lsquic_rechist.h" -#include "lsquic_parse.h" -#include "lsquic_util.h" -#include "lsquic_logger.h" -#include "lsquic.h" - -static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); - -static void -test1 (void) /* Inverse of quic_framer_test.cc -- NewAckFrameOneAckBlock */ -{ - lsquic_rechist_t rechist; - lsquic_time_t now = lsquic_time_now(); - lsquic_packno_t largest = 0; - - lsquic_rechist_init(&rechist, 0); - - unsigned i; - for (i = 1; i <= 0x1234; ++i) - (void) lsquic_rechist_received(&rechist, i, now); - - const unsigned char expected_ack_frame[] = { - 0x45, - 0x34, 0x12, /* Largest acked */ - 0xFF, 0x87, /* Delta time */ - 0x34, 0x12, /* Block length */ - 0x00, /* Number of timestamps */ - }; - unsigned char outbuf[0x100]; - - int has_missing = -1; - int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now + 0x7FF8000, &has_missing, &largest); - assert(("ACK frame generation successful", w > 0)); - assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); - assert(("ACK frame contents are as expected", - 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); - assert(("ACK frame has no missing packets", has_missing == 0)); - assert(largest == 0x1234); - - lsquic_rechist_cleanup(&rechist); -} - -static void -test2 (void) /* Inverse of quic_framer_test.cc -- NewAckFrameOneAckBlock, minus - * delta times. - */ -{ - lsquic_rechist_t rechist; - lsquic_time_t now = lsquic_time_now(); - - lsquic_rechist_init(&rechist, 0); - - /* Encode the following ranges: - * high low - * 0x1234 0x1234 - * 0x1232 0x384 - * 0x1F3 0xA - * 0x4 0x1 - */ - unsigned i; - for (i = 4; i >= 1; --i) - (void) lsquic_rechist_received(&rechist, i, now); - (void) lsquic_rechist_received(&rechist, 0x1234, now); - for (i = 0xA; i <= 0x1F3; ++i) - (void) lsquic_rechist_received(&rechist, i, now); - for (i = 0x1232; i >= 0x384; --i) - (void) lsquic_rechist_received(&rechist, i, now); - - const unsigned char expected_ack_frame[] = { - 0x65, - 0x34, 0x12, /* Largest acked */ - 0x00, 0x00, /* Zero delta time. */ - 0x04, /* Num ack blocks ranges. */ - 0x01, 0x00, /* First ack block length. */ - 0x01, /* Gap to next block. */ - 0xaf, 0x0e, /* Ack block length. */ - 0xff, /* Gap to next block. */ - 0x00, 0x00, /* Ack block length. */ - 0x91, /* Gap to next block. */ - 0xea, 0x01, /* Ack block length. */ - 0x05, /* Gap to next block. */ - 0x04, 0x00, /* Ack block length. */ - 0x00, /* Number of timestamps. */ - }; - unsigned char outbuf[0x100]; - - int has_missing = -1; - lsquic_packno_t largest = 0; - int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now, &has_missing, &largest); - assert(("ACK frame generation successful", w > 0)); - assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); - assert(("ACK frame contents are as expected", - 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); - assert(("ACK frame has missing packets", has_missing > 0)); - assert(largest == 0x1234); - - lsquic_rechist_cleanup(&rechist); -} - -static void -test3 (void) -{ - lsquic_rechist_t rechist; - lsquic_time_t now = lsquic_time_now(); - - lsquic_rechist_init(&rechist, 0); - - /* Encode the following ranges: - * high low - * 3 3 - * 1 1 - */ - (void) lsquic_rechist_received(&rechist, 1, now); - (void) lsquic_rechist_received(&rechist, 3, now); - - const unsigned char expected_ack_frame[] = { - 0x60, - 0x03, - 0x00, 0x00, /* Zero delta time. */ - 0x01, /* Num ack blocks ranges. */ - 0x01, /* First ack block length. */ - 0x01, /* Gap to next block. */ - 0x01, /* Ack block length. */ - 0x00, /* Number of timestamps. */ - }; - unsigned char outbuf[0x100]; - - int has_missing = -1; - lsquic_packno_t largest = 0; - int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now, &has_missing, &largest); - assert(("ACK frame generation successful", w > 0)); - assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); - assert(("ACK frame contents are as expected", - 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); - assert(("ACK frame has missing packets", has_missing > 0)); - assert(largest == 0x03); - - lsquic_rechist_cleanup(&rechist); -} - - -static void -test4 (void) -{ - lsquic_rechist_t rechist; - int i; - - lsquic_rechist_init(&rechist, 0); - - lsquic_time_t now = lsquic_time_now(); - lsquic_rechist_received(&rechist, 1, now); - - { - const unsigned char expected_ack_frame[] = { - 0x40, - 0x01, /* Largest acked */ - 0x00, 0x00, /* Delta time */ - 0x01, /* Block length */ - 0x00, /* Number of timestamps */ - }; - unsigned char outbuf[0x100]; - int has_missing = -1; - lsquic_packno_t largest = 0; - int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now, &has_missing, &largest); - assert(("ACK frame generation successful", w > 0)); - assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); - assert(("ACK frame contents are as expected", - 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); - assert(("ACK frame has no missing packets", has_missing == 0)); - assert(largest == 1); - } - - for (i = 3; i <= 5; ++i) - lsquic_rechist_received(&rechist, i, now); - - { - const unsigned char expected_ack_frame[] = { - 0x60, - 0x05, /* Largest acked */ - 0x00, 0x00, /* Delta time */ - 0x01, /* Num ack blocks */ - 0x03, /* First block length [3, 5] */ - 0x01, /* Gap to next block */ - 0x01, /* Second block length [1, 1] */ - 0x00, /* Number of timestamps */ - }; - unsigned char outbuf[0x100]; - int has_missing = -1; - lsquic_packno_t largest = 0; - int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now, &has_missing, &largest); - assert(("ACK frame generation successful", w > 0)); - assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); - assert(("ACK frame contents are as expected", - 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); - assert(("ACK frame has missing packets", has_missing > 0)); - assert(largest == 5); - } - - lsquic_rechist_cleanup(&rechist); -} - - -static void -test_4byte_packnos (void) -{ - lsquic_packno_t packno; - lsquic_rechist_t rechist; - struct packet_interval *pint; - lsquic_time_t now = lsquic_time_now(); - - lsquic_rechist_init(&rechist, 0); - - packno = 0x23456789; - (void) lsquic_rechist_received(&rechist, packno - 33, now); - pint = TAILQ_FIRST(&rechist.rh_pints.pk_intervals); - (void) lsquic_rechist_received(&rechist, packno, now); - - /* Adjust: */ - pint->range.low = 1; - - const unsigned char expected_ack_frame[] = { - 0x60 - | (2 << 2) /* Four-byte largest acked */ - | (2 << 0) /* Four-byte ACK block length */ - , - 0x89, 0x67, 0x45, 0x23, - 0x00, 0x00, /* Zero delta time. */ - 0x01, /* Num ack blocks ranges. */ - 0x01, 0x00, 0x00, 0x00, /* First ack block length. */ - 33 - 1, /* Gap to next block. */ - 0x68, 0x67, 0x45, 0x23, /* Ack block length. */ - 0x00, /* Number of timestamps. */ - }; - unsigned char outbuf[0x100]; - - int has_missing = -1; - lsquic_packno_t largest = 0; - int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now, &has_missing, &largest); - assert(("ACK frame generation successful", w > 0)); - assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); - assert(("ACK frame contents are as expected", - 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); - assert(("ACK frame has missing packets", has_missing > 0)); - assert(largest == 0x23456789); - - lsquic_rechist_cleanup(&rechist); -} - - -static void -test_6byte_packnos (void) -{ - lsquic_packno_t packno; - lsquic_rechist_t rechist; - struct packet_interval *pint; - lsquic_time_t now = lsquic_time_now(); - - lsquic_rechist_init(&rechist, 0); - - packno = 0xABCD23456789; - (void) lsquic_rechist_received(&rechist, packno - 33, now); - pint = TAILQ_FIRST(&rechist.rh_pints.pk_intervals); - (void) lsquic_rechist_received(&rechist, packno, now); - - /* Adjust: */ - pint->range.low = 1; - - const unsigned char expected_ack_frame[] = { - 0x60 - | (3 << 2) /* Six-byte largest acked */ - | (3 << 0) /* Six-byte ACK block length */ - , - 0x89, 0x67, 0x45, 0x23, 0xCD, 0xAB, - 0x00, 0x00, /* Zero delta time. */ - 0x01, /* Num ack blocks ranges. */ - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, /* First ack block length. */ - 33 - 1, /* Gap to next block. */ - 0x68, 0x67, 0x45, 0x23, 0xCD, 0xAB, /* Ack block length. */ - 0x00, /* Number of timestamps. */ - }; - unsigned char outbuf[0x100]; - - int has_missing = -1; - lsquic_packno_t largest = 0; - int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now, &has_missing, &largest); - assert(("ACK frame generation successful", w > 0)); - assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); - assert(("ACK frame contents are as expected", - 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); - assert(("ACK frame has missing packets", has_missing > 0)); - assert(largest == 0xABCD23456789ULL); - - lsquic_rechist_cleanup(&rechist); -} - - - -int -main (void) -{ - lsquic_global_init(LSQUIC_GLOBAL_SERVER); - lsquic_log_to_fstream(stderr, 0); - lsq_log_levels[LSQLM_PARSE] = LSQ_LOG_DEBUG; - - test1(); - - test2(); - - test3(); - - test4(); - - test_4byte_packnos(); - - test_6byte_packnos(); - - return 0; -} diff --git a/external/lsquic/tests/test_ackparse_gquic_be.c b/external/lsquic/tests/test_ackparse_gquic_be.c deleted file mode 100644 index 1b8c9de..0000000 --- a/external/lsquic/tests/test_ackparse_gquic_be.c +++ /dev/null @@ -1,470 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#else -#include "vc_compat.h" -#endif - -#include "lsquic_types.h" -#include "lsquic_parse.h" -#include "lsquic_rechist.h" -#include "lsquic_util.h" -#include "lsquic.h" -#include "lsquic_hash.h" -#include "lsquic_conn.h" - -static struct lsquic_conn lconn = LSCONN_INITIALIZER_CIDLEN(lconn, 0); - -//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC -#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) - - -static lsquic_packno_t -n_acked (const struct ack_info *acki) -{ - lsquic_packno_t n = 0; - unsigned i; - for (i = 0; i < acki->n_ranges; ++i) - n += acki->ranges[i].high - acki->ranges[i].low + 1; - return n; -} - - -static void -test1 (void) -{ - /* Test taken from quic_framer_test.cc -- NewAckFrameOneAckBlock */ - unsigned char ack_buf[] = { - 0x45, - 0x12, 0x34, /* Largest acked */ - 0x00, 0x00, /* Delta time */ - 0x12, 0x34, /* Block length */ - 0x00, /* Number of timestamps */ - }; - - struct ack_info acki; - memset(&acki, 0xF1, sizeof(acki)); - - int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki, 0); - assert(("Parsed length is correct (8)", len == sizeof(ack_buf))); - assert(("Number of ranges is 1", acki.n_ranges == 1)); - assert(("Largest acked is 0x1234", acki.ranges[0].high == 0x1234)); - assert(("Lowest acked is 1", acki.ranges[0].low == 1)); - unsigned n = n_acked(&acki); - assert(("Number of acked packets is 0x1234", n == 0x1234)); - - { - size_t sz; - for (sz = 1; sz < sizeof(ack_buf); ++sz) - { - len = pf->pf_parse_ack_frame(ack_buf, sz, &acki, 0); - assert(("Parsing truncated frame failed", len < 0)); - } - } -} - - -static void -test2 (void) -{ - /* Test taken from quic_framer_test.cc -- NewAckFrameOneAckBlock */ - unsigned char ack_buf[] = { - 0x65, - 0x12, 0x34, /* Largest acked */ - 0x00, 0x00, /* Zero delta time. */ - 0x04, /* Num ack blocks ranges. */ - 0x00, 0x01, /* First ack block length. */ - 0x01, /* Gap to next block. */ - 0x0e, 0xaf, /* Ack block length. */ - 0xff, /* Gap to next block. */ - 0x00, 0x00, /* Ack block length. */ - 0x91, /* Gap to next block. */ - 0x01, 0xea, /* Ack block length. */ - 0x05, /* Gap to next block. */ - 0x00, 0x04, /* Ack block length. */ - 0x02, /* Number of timestamps. */ - 0x01, /* Delta from largest observed. */ - 0x10, 0x32, 0x54, 0x76, /* Delta time. */ /* XXX do we use this at all? */ - 0x02, /* Delta from largest observed. */ - 0x10, 0x32, /* Delta time. */ - }; - - /* We should get the following array of ranges: - * high low - * 0x1234 0x1234 - * 0x1232 0x384 - * 0x1F3 0xA - * 0x4 0x1 - */ - static const struct { unsigned high, low; } ranges[] = { - { 0x1234, 0x1234 }, - { 0x1232, 0x384 }, - { 0x1F3, 0xA }, - { 0x4, 0x1 }, - }; - - struct ack_info acki; - memset(&acki, 0xF1, sizeof(acki)); - - int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki, 0); - assert(("Parsed length is correct (29)", len == sizeof(ack_buf))); - assert(("Number of ranges is 4", acki.n_ranges == 4)); - assert(("Largest acked is 0x1234", acki.ranges[0].high == 0x1234)); - unsigned n = n_acked(&acki); - assert(("Number of acked packets is 4254", n == 4254)); - - for (n = 0; n < 4; ++n) - assert(("Range checks out", ranges[n].high == acki.ranges[n].high - && ranges[n].low == acki.ranges[n].low)); - - { - size_t sz; - for (sz = 1; sz < sizeof(ack_buf); ++sz) - { - len = pf->pf_parse_ack_frame(ack_buf, sz, &acki, 0); - assert(("Parsing truncated frame failed", len < 0)); - } - } -} - - -static void -test3 (void) -{ - /* Generated by our own code, but failed to parse... */ - unsigned char ack_buf[] = { - 0x60, /* More than one ack block, 1 byte largest observed, 1 byte block length */ - 0x06, /* Largest ACKed */ - 0x00, 0x00, /* Delta time */ - 0x01, /* Num ACK block ranges */ - 0x01, /* First ACK block length */ - 0x02, /* Gap to next block */ - 0x03, /* Ack block length */ - 0x00 /* Number of timestamps */ - }; - - /* We should get the following array of ranges: - * high low - * 6 6 - * 3 1 - */ - static const struct { unsigned high, low; } ranges[] = { - { 6, 6, }, - { 3, 1, }, - }; - - struct ack_info acki; - memset(&acki, 0xF1, sizeof(acki)); - - int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki, 0); - assert(("Parsed length is correct (9)", len == sizeof(ack_buf))); - assert(("Number of ranges is 2", acki.n_ranges == 2)); - assert(("Largest acked is 6", acki.ranges[0].high == 6)); - unsigned n = n_acked(&acki); - assert(("Number of acked packets is 4", n == 4)); - - for (n = 0; n < 2; ++n) - assert(("Range checks out", ranges[n].high == acki.ranges[n].high - && ranges[n].low == acki.ranges[n].low)); - - { - size_t sz; - for (sz = 1; sz < sizeof(ack_buf); ++sz) - { - len = pf->pf_parse_ack_frame(ack_buf, sz, &acki, 0); - assert(("Parsing truncated frame failed", len < 0)); - } - } -} - - -static void -test4 (void) -{ - unsigned char ack_buf[] = { - 0x60, /* More than one ack block, 1 byte largest observed, 1 byte block length */ - 0x03, /* Largest ACKed */ - 0x23, 0x00, /* Delta time */ - 0x01, /* Num ACK block ranges */ - 0x01, /* First ack block length */ - 0x01, /* Gap */ - 0x01, /* Ack block length */ - 0x00, /* Number of timestamps */ - }; - - /* We should get the following array of ranges: - * high low - * 6 6 - * 3 1 - */ - static const struct { unsigned high, low; } ranges[] = { - { 3, 3, }, - { 1, 1, }, - }; - - struct ack_info acki; - memset(&acki, 0xF1, sizeof(acki)); - - int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki, 0); - assert(("Parsed length is correct (9)", len == sizeof(ack_buf))); - assert(("Number of ranges is 2", acki.n_ranges == 2)); - assert(("Largest acked is 3", acki.ranges[0].high == 3)); - unsigned n = n_acked(&acki); - assert(("Number of acked packets is 2", n == 2)); - - for (n = 0; n < 2; ++n) - assert(("Range checks out", ranges[n].high == acki.ranges[n].high - && ranges[n].low == acki.ranges[n].low)); - - { - size_t sz; - for (sz = 1; sz < sizeof(ack_buf); ++sz) - { - len = pf->pf_parse_ack_frame(ack_buf, sz, &acki, 0); - assert(("Parsing truncated frame failed", len < 0)); - } - } -} - - -/* Four-byte packet numbers */ -static void -test5 (void) -{ - unsigned char ack_buf[] = { - 0x60 - | (2 << 2) /* Four-byte largest acked */ - | (2 << 0) /* Four-byte ACK block length */ - , - 0x23, 0x45, 0x67, 0x89, - 0x00, 0x00, /* Zero delta time. */ - 0x01, /* Num ack blocks ranges. */ - 0x00, 0x00, 0x00, 0x01, /* First ack block length. */ - 33 - 1, /* Gap to next block. */ - 0x23, 0x45, 0x67, 0x68, /* Ack block length. */ - 0x00, /* Number of timestamps. */ - }; - - /* We should get the following array of ranges: - * high low - * 6 6 - * 3 1 - */ - static const struct { unsigned high, low; } ranges[] = { - { 0x23456789, 0x23456789, }, - { 0x23456768, 1, }, - }; - - struct ack_info acki; - memset(&acki, 0xF1, sizeof(acki)); - - int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki, 0); - assert(("Parsed length is correct (9)", len == sizeof(ack_buf))); - assert(("Number of ranges is 2", acki.n_ranges == 2)); - assert(("Largest acked is 0x23456789", acki.ranges[0].high == 0x23456789)); - lsquic_packno_t n = n_acked(&acki); - assert(("Number of acked packets is correct", n == 0x23456768 + 1)); - - for (n = 0; n < 2; ++n) - assert(("Range checks out", ranges[n].high == acki.ranges[n].high - && ranges[n].low == acki.ranges[n].low)); - - { - size_t sz; - for (sz = 1; sz < sizeof(ack_buf); ++sz) - { - len = pf->pf_parse_ack_frame(ack_buf, sz, &acki, 0); - assert(("Parsing truncated frame failed", len < 0)); - } - } -} - - -/* Six-byte packet numbers */ -static void -test6 (void) -{ - unsigned char ack_buf[] = { - 0x60 - | (3 << 2) /* Six-byte largest acked */ - | (3 << 0) /* Six-byte ACK block length */ - , - 0xAB, 0xCD, 0x23, 0x45, 0x67, 0x89, - 0x00, 0x00, /* Zero delta time. */ - 0x01, /* Num ack blocks ranges. */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, /* First ack block length. */ - 33 - 1, /* Gap to next block. */ - 0xAB, 0xCD, 0x23, 0x45, 0x67, 0x68, /* Ack block length. */ - 0x00, /* Number of timestamps. */ - }; - - static const struct { lsquic_packno_t high, low; } ranges[] = { - { 0xABCD23456789, 0xABCD23456789, }, - { 0xABCD23456768, 1, }, - }; - - struct ack_info acki; - memset(&acki, 0xF1, sizeof(acki)); - - int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki, 0); - assert(("Parsed length is correct", len == sizeof(ack_buf))); - assert(("Number of ranges is 2", acki.n_ranges == 2)); - assert(("Largest acked is 0xABCD23456789", acki.ranges[0].high == 0xABCD23456789)); - lsquic_packno_t n = n_acked(&acki); - assert(("Number of acked packets is correct", n == 0xABCD23456768 + 1)); - - for (n = 0; n < 2; ++n) - assert(("Range checks out", ranges[n].high == acki.ranges[n].high - && ranges[n].low == acki.ranges[n].low)); - - { - size_t sz; - for (sz = 1; sz < sizeof(ack_buf); ++sz) - { - len = pf->pf_parse_ack_frame(ack_buf, sz, &acki, 0); - assert(("Parsing truncated frame failed", len < 0)); - } - } -} - - -static void -test_max_ack (void) -{ - lsquic_rechist_t rechist; - lsquic_time_t now; - unsigned i; - int has_missing, sz[2]; - const struct lsquic_packno_range *range; - unsigned char buf[1500]; - struct ack_info acki; - - lsquic_rechist_init(&rechist, 0, 0); - now = lsquic_time_now(); - - for (i = 1; i <= 300; ++i) - { - lsquic_rechist_received(&rechist, i * 10, now); - now += i * 1000; - } - - memset(buf, 0xAA, sizeof(buf)); - - lsquic_packno_t largest = 0; - sz[0] = pf->pf_gen_ack_frame(buf, sizeof(buf), - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now, &has_missing, &largest, NULL); - assert(sz[0] > 0); - assert(sz[0] <= (int) sizeof(buf)); - assert(has_missing); - - assert(0 == buf[ sz[0] - 1 ]); /* Number of timestamps */ - assert(0xAA == buf[ sz[0] ]); - - sz[1] = pf->pf_parse_ack_frame(buf, sizeof(buf), &acki, 0); - assert(sz[1] == sz[0]); - assert(256 == acki.n_ranges); - - for (range = lsquic_rechist_first(&rechist), i = 0; - range && i < acki.n_ranges; - range = lsquic_rechist_next(&rechist), ++i) - { - assert(range->high == acki.ranges[i].high); - assert(range->low == acki.ranges[i].low); - } - assert(i == 256); - - lsquic_rechist_cleanup(&rechist); -} - - -static void -test_ack_truncation (void) -{ - lsquic_rechist_t rechist; - lsquic_time_t now; - unsigned i; - int has_missing, sz[2]; - const struct lsquic_packno_range *range; - unsigned char buf[1500]; - struct ack_info acki; - size_t bufsz; - - lsquic_rechist_init(&rechist, 0, 0); - now = lsquic_time_now(); - - for (i = 1; i <= 300; ++i) - { - lsquic_rechist_received(&rechist, i * 10, now); - now += i * 1000; - } - - for (bufsz = 200; bufsz < 210; ++bufsz) - { - memset(buf, 0xAA, sizeof(buf)); - lsquic_packno_t largest = 0; - sz[0] = pf->pf_gen_ack_frame(buf, bufsz, - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now, &has_missing, &largest, NULL); - assert(sz[0] > 0); - assert(sz[0] <= (int) bufsz); - assert(has_missing); - - assert(0 == buf[ sz[0] - 1 ]); /* Number of timestamps */ - assert(0xAA == buf[ sz[0] ]); - - sz[1] = pf->pf_parse_ack_frame(buf, sizeof(buf), &acki, 0); - assert(sz[1] == sz[0]); - assert(acki.n_ranges < 256); - - for (range = lsquic_rechist_first(&rechist), i = 0; - range && i < acki.n_ranges; - range = lsquic_rechist_next(&rechist), ++i) - { - assert(range->high == acki.ranges[i].high); - assert(range->low == acki.ranges[i].low); - } - } - - lsquic_rechist_cleanup(&rechist); -} - - -static void -test_empty_ack (void) -{ - int len; - unsigned char buf[] = { 0x40, 0x00, 0xFF, 0xFF, 0x00, 0x00, - /* fluff: */ 0x12, 0x23, 0x34, 0x45, }; - struct ack_info acki; - - len = pf->pf_parse_ack_frame(buf, sizeof(buf), &acki, 0); - assert(6 == len); - assert(empty_ack_frame(&acki)); -} - - -int -main (void) -{ - lsquic_global_init(LSQUIC_GLOBAL_SERVER); - test1(); - test2(); - test3(); - test4(); - test5(); - test6(); - test_max_ack(); - test_ack_truncation(); - test_empty_ack(); - return 0; -} diff --git a/external/lsquic/tests/test_ackparse_gquic_le.c b/external/lsquic/tests/test_ackparse_gquic_le.c deleted file mode 100644 index 013e51a..0000000 --- a/external/lsquic/tests/test_ackparse_gquic_le.c +++ /dev/null @@ -1,452 +0,0 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic_types.h" -#include "lsquic_parse.h" -#include "lsquic_rechist.h" -#include "lsquic_util.h" -#include "lsquic.h" - -static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); - -static lsquic_packno_t -n_acked (const ack_info_t *acki) -{ - lsquic_packno_t n = 0; - unsigned i; - for (i = 0; i < acki->n_ranges; ++i) - n += acki->ranges[i].high - acki->ranges[i].low + 1; - return n; -} - - -static void -test1 (void) -{ - /* Test taken from quic_framer_test.cc -- NewAckFrameOneAckBlock */ - unsigned char ack_buf[] = { - 0x45, - 0x34, 0x12, /* Largest acked */ - 0x00, 0x00, /* Delta time */ - 0x34, 0x12, /* Block length */ - 0x00, /* Number of timestamps */ - }; - - ack_info_t acki; - memset(&acki, 0xF1, sizeof(acki)); - - int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki); - assert(("Parsed length is correct (8)", len == sizeof(ack_buf))); - assert(("Number of ranges is 1", acki.n_ranges == 1)); - assert(("Largest acked is 0x1234", acki.ranges[0].high == 0x1234)); - assert(("Lowest acked is 1", acki.ranges[0].low == 1)); - assert(("Number of timestamps is 0", acki.n_timestamps == 0)); - unsigned n = n_acked(&acki); - assert(("Number of acked packets is 0x1234", n == 0x1234)); - - { - size_t sz; - for (sz = 1; sz < sizeof(ack_buf); ++sz) - { - len = pf->pf_parse_ack_frame(ack_buf, sz, &acki); - assert(("Parsing truncated frame failed", len < 0)); - } - } -} - - -static void -test2 (void) -{ - /* Test taken from quic_framer_test.cc -- NewAckFrameOneAckBlock */ - unsigned char ack_buf[] = { - 0x65, - 0x34, 0x12, /* Largest acked */ - 0x00, 0x00, /* Zero delta time. */ - 0x04, /* Num ack blocks ranges. */ - 0x01, 0x00, /* First ack block length. */ - 0x01, /* Gap to next block. */ - 0xaf, 0x0e, /* Ack block length. */ - 0xff, /* Gap to next block. */ - 0x00, 0x00, /* Ack block length. */ - 0x91, /* Gap to next block. */ - 0xea, 0x01, /* Ack block length. */ - 0x05, /* Gap to next block. */ - 0x04, 0x00, /* Ack block length. */ - 0x02, /* Number of timestamps. */ - 0x01, /* Delta from largest observed. */ - 0x10, 0x32, 0x54, 0x76, /* Delta time. */ - 0x02, /* Delta from largest observed. */ - 0x10, 0x32, /* Delta time. */ - }; - - /* We should get the following array of ranges: - * high low - * 0x1234 0x1234 - * 0x1232 0x384 - * 0x1F3 0xA - * 0x4 0x1 - */ - static const struct { unsigned high, low; } ranges[] = { - { 0x1234, 0x1234 }, - { 0x1232, 0x384 }, - { 0x1F3, 0xA }, - { 0x4, 0x1 }, - }; - - ack_info_t acki; - memset(&acki, 0xF1, sizeof(acki)); - - int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki); - assert(("Parsed length is correct (29)", len == sizeof(ack_buf))); - assert(("Number of ranges is 4", acki.n_ranges == 4)); - assert(("Largest acked is 0x1234", acki.ranges[0].high == 0x1234)); - assert(("Number of timestamps is 2", acki.n_timestamps == 2)); - unsigned n = n_acked(&acki); - assert(("Number of acked packets is 4254", n == 4254)); - - for (n = 0; n < 4; ++n) - assert(("Range checks out", ranges[n].high == acki.ranges[n].high - && ranges[n].low == acki.ranges[n].low)); - - { - size_t sz; - for (sz = 1; sz < sizeof(ack_buf); ++sz) - { - len = pf->pf_parse_ack_frame(ack_buf, sz, &acki); - assert(("Parsing truncated frame failed", len < 0)); - } - } -} - - -static void -test3 (void) -{ - /* Generated by our own code, but failed to parse... */ - unsigned char ack_buf[] = { - 0x60, /* More than one ack block, 1 byte largest observed, 1 byte block length */ - 0x06, /* Largest ACKed */ - 0x00, 0x00, /* Delta time */ - 0x01, /* Num ACK block ranges */ - 0x01, /* First ACK block length */ - 0x02, /* Gap to next block */ - 0x03, /* Ack block length */ - 0x00 /* Number of timestamps */ - }; - - /* We should get the following array of ranges: - * high low - * 6 6 - * 3 1 - */ - static const struct { unsigned high, low; } ranges[] = { - { 6, 6, }, - { 3, 1, }, - }; - - ack_info_t acki; - memset(&acki, 0xF1, sizeof(acki)); - - int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki); - assert(("Parsed length is correct (9)", len == sizeof(ack_buf))); - assert(("Number of ranges is 2", acki.n_ranges == 2)); - assert(("Largest acked is 6", acki.ranges[0].high == 6)); - assert(("Number of timestamps is 0", acki.n_timestamps == 0)); - unsigned n = n_acked(&acki); - assert(("Number of acked packets is 4", n == 4)); - - for (n = 0; n < 2; ++n) - assert(("Range checks out", ranges[n].high == acki.ranges[n].high - && ranges[n].low == acki.ranges[n].low)); - - { - size_t sz; - for (sz = 1; sz < sizeof(ack_buf); ++sz) - { - len = pf->pf_parse_ack_frame(ack_buf, sz, &acki); - assert(("Parsing truncated frame failed", len < 0)); - } - } -} - - -static void -test4 (void) -{ - unsigned char ack_buf[] = { - 0x60, /* More than one ack block, 1 byte largest observed, 1 byte block length */ - 0x03, /* Largest ACKed */ - 0x23, 0x00, /* Delta time */ - 0x01, /* Num ACK block ranges */ - 0x01, /* First ack block length */ - 0x01, /* Gap */ - 0x01, /* Ack block length */ - 0x00, /* Number of timestamps */ - }; - - /* We should get the following array of ranges: - * high low - * 6 6 - * 3 1 - */ - static const struct { unsigned high, low; } ranges[] = { - { 3, 3, }, - { 1, 1, }, - }; - - ack_info_t acki; - memset(&acki, 0xF1, sizeof(acki)); - - int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki); - assert(("Parsed length is correct (9)", len == sizeof(ack_buf))); - assert(("Number of ranges is 2", acki.n_ranges == 2)); - assert(("Largest acked is 3", acki.ranges[0].high == 3)); - assert(("Number of timestamps is 0", acki.n_timestamps == 0)); - unsigned n = n_acked(&acki); - assert(("Number of acked packets is 2", n == 2)); - - for (n = 0; n < 2; ++n) - assert(("Range checks out", ranges[n].high == acki.ranges[n].high - && ranges[n].low == acki.ranges[n].low)); - - { - size_t sz; - for (sz = 1; sz < sizeof(ack_buf); ++sz) - { - len = pf->pf_parse_ack_frame(ack_buf, sz, &acki); - assert(("Parsing truncated frame failed", len < 0)); - } - } -} - - -/* Four-byte packet numbers */ -static void -test5 (void) -{ - unsigned char ack_buf[] = { - 0x60 - | (2 << 2) /* Four-byte largest acked */ - | (2 << 0) /* Four-byte ACK block length */ - , - 0x89, 0x67, 0x45, 0x23, - 0x00, 0x00, /* Zero delta time. */ - 0x01, /* Num ack blocks ranges. */ - 0x01, 0x00, 0x00, 0x00, /* First ack block length. */ - 33 - 1, /* Gap to next block. */ - 0x68, 0x67, 0x45, 0x23, /* Ack block length. */ - 0x00, /* Number of timestamps. */ - }; - - /* We should get the following array of ranges: - * high low - * 6 6 - * 3 1 - */ - static const struct { unsigned high, low; } ranges[] = { - { 0x23456789, 0x23456789, }, - { 0x23456768, 1, }, - }; - - ack_info_t acki; - memset(&acki, 0xF1, sizeof(acki)); - - int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki); - assert(("Parsed length is correct (9)", len == sizeof(ack_buf))); - assert(("Number of ranges is 2", acki.n_ranges == 2)); - assert(("Largest acked is 0x23456789", acki.ranges[0].high == 0x23456789)); - assert(("Number of timestamps is 0", acki.n_timestamps == 0)); - lsquic_packno_t n = n_acked(&acki); - assert(("Number of acked packets is correct", n == 0x23456768 + 1)); - - for (n = 0; n < 2; ++n) - assert(("Range checks out", ranges[n].high == acki.ranges[n].high - && ranges[n].low == acki.ranges[n].low)); - - { - size_t sz; - for (sz = 1; sz < sizeof(ack_buf); ++sz) - { - len = pf->pf_parse_ack_frame(ack_buf, sz, &acki); - assert(("Parsing truncated frame failed", len < 0)); - } - } -} - - -/* Six-byte packet numbers */ -static void -test6 (void) -{ - unsigned char ack_buf[] = { - 0x60 - | (3 << 2) /* Six-byte largest acked */ - | (3 << 0) /* Six-byte ACK block length */ - , - 0x89, 0x67, 0x45, 0x23, 0xCD, 0xAB, - 0x00, 0x00, /* Zero delta time. */ - 0x01, /* Num ack blocks ranges. */ - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, /* First ack block length. */ - 33 - 1, /* Gap to next block. */ - 0x68, 0x67, 0x45, 0x23, 0xCD, 0xAB, /* Ack block length. */ - 0x00, /* Number of timestamps. */ - }; - - static const struct { lsquic_packno_t high, low; } ranges[] = { - { 0xABCD23456789, 0xABCD23456789, }, - { 0xABCD23456768, 1, }, - }; - - ack_info_t acki; - memset(&acki, 0xF1, sizeof(acki)); - - int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki); - assert(("Parsed length is correct", len == sizeof(ack_buf))); - assert(("Number of ranges is 2", acki.n_ranges == 2)); - assert(("Largest acked is 0xABCD23456789", acki.ranges[0].high == 0xABCD23456789)); - assert(("Number of timestamps is 0", acki.n_timestamps == 0)); - lsquic_packno_t n = n_acked(&acki); - assert(("Number of acked packets is correct", n == 0xABCD23456768 + 1)); - - for (n = 0; n < 2; ++n) - assert(("Range checks out", ranges[n].high == acki.ranges[n].high - && ranges[n].low == acki.ranges[n].low)); - - { - size_t sz; - for (sz = 1; sz < sizeof(ack_buf); ++sz) - { - len = pf->pf_parse_ack_frame(ack_buf, sz, &acki); - assert(("Parsing truncated frame failed", len < 0)); - } - } -} - - -static void -test_max_ack (void) -{ - lsquic_rechist_t rechist; - lsquic_time_t now; - unsigned i; - int has_missing, sz[2]; - const struct lsquic_packno_range *range; - unsigned char buf[1500]; - struct ack_info acki; - - lsquic_rechist_init(&rechist, 12345); - now = lsquic_time_now(); - - for (i = 1; i <= 300; ++i) - { - lsquic_rechist_received(&rechist, i * 10, now); - now += i * 1000; - } - - memset(buf, 0xAA, sizeof(buf)); - - lsquic_packno_t largest = 0; - sz[0] = pf->pf_gen_ack_frame(buf, sizeof(buf), - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now, &has_missing, &largest); - assert(sz[0] > 0); - assert(sz[0] <= (int) sizeof(buf)); - assert(has_missing); - - assert(0 == buf[ sz[0] - 1 ]); /* Number of timestamps */ - assert(0xAA == buf[ sz[0] ]); - - sz[1] = pf->pf_parse_ack_frame(buf, sizeof(buf), &acki); - assert(sz[1] == sz[0]); - assert(256 == acki.n_ranges); - - for (range = lsquic_rechist_first(&rechist), i = 0; - range && i < acki.n_ranges; - range = lsquic_rechist_next(&rechist), ++i) - { - assert(range->high == acki.ranges[i].high); - assert(range->low == acki.ranges[i].low); - } - assert(i == 256); - - lsquic_rechist_cleanup(&rechist); -} - - -static void -test_ack_truncation (void) -{ - lsquic_rechist_t rechist; - lsquic_time_t now; - unsigned i; - int has_missing, sz[2]; - const struct lsquic_packno_range *range; - unsigned char buf[1500]; - struct ack_info acki; - size_t bufsz; - - lsquic_rechist_init(&rechist, 12345); - now = lsquic_time_now(); - - for (i = 1; i <= 300; ++i) - { - lsquic_rechist_received(&rechist, i * 10, now); - now += i * 1000; - } - - for (bufsz = 200; bufsz < 210; ++bufsz) - { - memset(buf, 0xAA, sizeof(buf)); - lsquic_packno_t largest = 0; - sz[0] = pf->pf_gen_ack_frame(buf, bufsz, - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now, &has_missing, &largest); - assert(sz[0] > 0); - assert(sz[0] <= (int) bufsz); - assert(has_missing); - - assert(0 == buf[ sz[0] - 1 ]); /* Number of timestamps */ - assert(0xAA == buf[ sz[0] ]); - - sz[1] = pf->pf_parse_ack_frame(buf, sizeof(buf), &acki); - assert(sz[1] == sz[0]); - assert(acki.n_ranges < 256); - - for (range = lsquic_rechist_first(&rechist), i = 0; - range && i < acki.n_ranges; - range = lsquic_rechist_next(&rechist), ++i) - { - assert(range->high == acki.ranges[i].high); - assert(range->low == acki.ranges[i].low); - } - } - - lsquic_rechist_cleanup(&rechist); -} - - -int -main (void) -{ - lsquic_global_init(LSQUIC_GLOBAL_SERVER); - test1(); - test2(); - test3(); - test4(); - test5(); - test6(); - test_max_ack(); - test_ack_truncation(); - return 0; -} diff --git a/external/lsquic/tests/test_ackparse_ietf.c b/external/lsquic/tests/test_ackparse_ietf.c deleted file mode 100644 index 8738ad0..0000000 --- a/external/lsquic/tests/test_ackparse_ietf.c +++ /dev/null @@ -1,140 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#else -#include "vc_compat.h" -#endif - -#include "lsquic_types.h" -#include "lsquic_parse.h" -#include "lsquic_rechist.h" -#include "lsquic_util.h" -#include "lsquic.h" -#include "lsquic_hash.h" -#include "lsquic_conn.h" - -static struct lsquic_conn lconn = LSCONN_INITIALIZER_CIDLEN(lconn, 0); - -//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_I001); // will not work on MSVC -#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_I001)) - - -static void -test_max_ack (void) -{ - lsquic_rechist_t rechist; - lsquic_time_t now; - unsigned i; - int has_missing, sz[2]; - const struct lsquic_packno_range *range; - unsigned char buf[1500]; - struct ack_info acki; - - lsquic_rechist_init(&rechist, 0, 0); - now = lsquic_time_now(); - - for (i = 1; i <= 300; ++i) - { - lsquic_rechist_received(&rechist, i * 10, now); - now += i * 1000; - } - - memset(buf, 0xAA, sizeof(buf)); - - lsquic_packno_t largest = 0; - sz[0] = pf->pf_gen_ack_frame(buf, sizeof(buf), - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now, &has_missing, &largest, NULL); - assert(sz[0] > 0); - assert(sz[0] <= (int) sizeof(buf)); - assert(has_missing); - - assert(0 == buf[ sz[0] - 1 ]); /* Number of timestamps */ - assert(0xAA == buf[ sz[0] ]); - - sz[1] = pf->pf_parse_ack_frame(buf, sizeof(buf), &acki, 0); - assert(sz[1] == sz[0]); - assert(256 == acki.n_ranges); - - for (range = lsquic_rechist_first(&rechist), i = 0; - range && i < acki.n_ranges; - range = lsquic_rechist_next(&rechist), ++i) - { - assert(range->high == acki.ranges[i].high); - assert(range->low == acki.ranges[i].low); - } - assert(i == 256); - - lsquic_rechist_cleanup(&rechist); -} - - -static void -test_ack_truncation (void) -{ - lsquic_rechist_t rechist; - lsquic_time_t now; - unsigned i; - int has_missing, sz[2]; - const struct lsquic_packno_range *range; - unsigned char buf[1500]; - struct ack_info acki; - size_t bufsz; - - lsquic_rechist_init(&rechist, 0, 0); - now = lsquic_time_now(); - - for (i = 1; i <= 300; ++i) - { - lsquic_rechist_received(&rechist, i * 10, now); - now += i * 1000; - } - - for (bufsz = 200; bufsz < 210; ++bufsz) - { - memset(buf, 0xAA, sizeof(buf)); - lsquic_packno_t largest = 0; - sz[0] = pf->pf_gen_ack_frame(buf, bufsz, - (gaf_rechist_first_f) lsquic_rechist_first, - (gaf_rechist_next_f) lsquic_rechist_next, - (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, - &rechist, now, &has_missing, &largest, NULL); - assert(sz[0] > 0); - assert(sz[0] <= (int) bufsz); - assert(has_missing); - - assert(0 == buf[ sz[0] - 1 ]); /* Number of timestamps */ - assert(0xAA == buf[ sz[0] ]); - - sz[1] = pf->pf_parse_ack_frame(buf, sizeof(buf), &acki, 0); - assert(sz[1] == sz[0]); - assert(acki.n_ranges < 256); - - for (range = lsquic_rechist_first(&rechist), i = 0; - range && i < acki.n_ranges; - range = lsquic_rechist_next(&rechist), ++i) - { - assert(range->high == acki.ranges[i].high); - assert(range->low == acki.ranges[i].low); - } - } - - lsquic_rechist_cleanup(&rechist); -} - - -int -main (void) -{ - lsquic_global_init(LSQUIC_GLOBAL_SERVER); - test_max_ack(); - test_ack_truncation(); - return 0; -} diff --git a/external/lsquic/tests/test_alarmset.c b/external/lsquic/tests/test_alarmset.c deleted file mode 100644 index faf7f6e..0000000 --- a/external/lsquic/tests/test_alarmset.c +++ /dev/null @@ -1,130 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include - -#include "lsquic.h" - -#include "lsquic_packet_common.h" -#include "lsquic_alarmset.h" - - -static lsquic_time_t global_now; - -static struct cb_ctx { - lsquic_time_t last_expiry; - unsigned n_calls; -} global_ctx; - - -static void -alarm_cb (enum alarm_id al_id, void *ctx, lsquic_time_t expiry, - lsquic_time_t now) -{ - struct cb_ctx *cb_ctx = ctx; - assert(cb_ctx == &global_ctx); - assert(cb_ctx->last_expiry <= expiry); /* This checks sortedness */ - assert(global_now == now); - ++cb_ctx->n_calls; - cb_ctx->last_expiry = expiry; -} - - -#if __GNUC__ -# define popcount __builtin_popcount -#else -static int -popcount (unsigned v) -{ - int count, i; - for (i = 0, count = 0; i < sizeof(v) * 8; ++i) - if (v & (1 << i)) - ++count; - return count; -} -#endif - - -int -main (void) -{ - unsigned i; - lsquic_alarmset_t alset; - - lsquic_alarmset_init(&alset, 0); - - for (i = 0; i < MAX_LSQUIC_ALARMS; ++i) - lsquic_alarmset_init_alarm(&alset, i, alarm_cb, &global_ctx); - - lsquic_alarmset_set(&alset, 0, 20); - lsquic_alarmset_set(&alset, 1, 5); - lsquic_alarmset_set(&alset, 2, 11); - lsquic_alarmset_set(&alset, 3, 15); - - assert(lsquic_alarmset_is_set(&alset, 3)); - lsquic_alarmset_unset(&alset, 3); - assert(!lsquic_alarmset_is_set(&alset, 3)); - lsquic_alarmset_set(&alset, 3, 15); - - global_ctx.last_expiry = 0; - global_ctx.n_calls = 0; - - lsquic_alarmset_ring_expired(&alset, global_now = 1); - - assert(0 == global_ctx.n_calls); - - assert(lsquic_alarmset_is_set(&alset, 1)); - lsquic_alarmset_ring_expired(&alset, global_now = 10); - assert(!lsquic_alarmset_is_set(&alset, 1)); - - assert(1 == global_ctx.n_calls); - assert(5 == global_ctx.last_expiry); - - lsquic_alarmset_ring_expired(&alset, global_now = 12); - - assert(2 == global_ctx.n_calls); - assert(11 == global_ctx.last_expiry); - - lsquic_alarmset_ring_expired(&alset, global_now = 20); - - /* expiry must be strictly smaller than current time */ - assert(3 == global_ctx.n_calls); - assert(15 == global_ctx.last_expiry); - - lsquic_alarmset_ring_expired(&alset, global_now = 21); - - assert(4 == global_ctx.n_calls); - assert(20 == global_ctx.last_expiry); - - unsigned t = 1; - for (i = 1; i < (1u << MAX_LSQUIC_ALARMS); ++i) - { - alset.as_armed_set = 0; /* Unset all */ - unsigned const count = popcount(i); - unsigned const min_n = i % count; - unsigned const min_t = t++; - unsigned j, n; - enum alarm_id ids[2]; - for (j = 0, n = 0; j < MAX_LSQUIC_ALARMS; ++j) - { - if ((1u << j) & i) - { - if (n == min_n) - { - ids[0] = j; - lsquic_alarmset_set(&alset, j, min_t); - } - else - lsquic_alarmset_set(&alset, j, t++); - ++n; - } - } - lsquic_time_t found_min_t = lsquic_alarmset_mintime(&alset, &ids[1]); - assert(min_t == found_min_t); - assert(ids[0] == ids[1]); - } - - return 0; -} diff --git a/external/lsquic/tests/test_alt_svc_ver.c b/external/lsquic/tests/test_alt_svc_ver.c deleted file mode 100644 index e3c5184..0000000 --- a/external/lsquic/tests/test_alt_svc_ver.c +++ /dev/null @@ -1,18 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include - -#include "lsquic.h" - -#define B(x) (1<<(x)) - -int -main (void) -{ - assert(0 == strcmp("", lsquic_get_alt_svc_versions(0xF000))); /* Invalid bits ignored and no crash */ - assert(0 == strcmp("43", lsquic_get_alt_svc_versions(B(LSQVER_043)))); - assert(0 == strcmp("43,46", lsquic_get_alt_svc_versions(B(LSQVER_046)|B(LSQVER_043)))); - assert(0 == strcmp("43,46", lsquic_get_alt_svc_versions(0xFF0000|B(LSQVER_046)|B(LSQVER_043)))); - assert(0 == strcmp("46", lsquic_get_alt_svc_versions(B(LSQVER_046)|B(LSQVER_050)))); - return 0; -} diff --git a/external/lsquic/tests/test_arr.c b/external/lsquic/tests/test_arr.c deleted file mode 100644 index 0a4e366..0000000 --- a/external/lsquic/tests/test_arr.c +++ /dev/null @@ -1,223 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include - -#include "lsquic_arr.h" - -static void -test1 (void) -{ - struct lsquic_arr arr; - lsquic_arr_init(&arr); - lsquic_arr_push(&arr, 0x21ecba0); - lsquic_arr_push(&arr, 0x21eccb0); - lsquic_arr_push(&arr, 0x21ecdb0); - lsquic_arr_push(&arr, 0x21ece90); - lsquic_arr_push(&arr, 0x21ecf70); - lsquic_arr_push(&arr, 0x21ed0e0); - lsquic_arr_push(&arr, 0x21ed1e0); - lsquic_arr_push(&arr, 0x21ed2c0); - lsquic_arr_push(&arr, 0x21ed3a0); - lsquic_arr_push(&arr, 0x21ed510); - lsquic_arr_push(&arr, 0x21ed5d0); - lsquic_arr_push(&arr, 0x21ed6b0); - lsquic_arr_push(&arr, 0x21ed7b0); - lsquic_arr_push(&arr, 0x21ed890); - lsquic_arr_push(&arr, 0x21ed970); - lsquic_arr_push(&arr, 0x21eda50); - lsquic_arr_push(&arr, 0x21ec450); - lsquic_arr_push(&arr, 0x21ec510); - lsquic_arr_push(&arr, 0x21ee210); - lsquic_arr_push(&arr, 0x21ee310); - lsquic_arr_push(&arr, 0x21ee3f0); - lsquic_arr_push(&arr, 0x21ee4e0); - lsquic_arr_push(&arr, 0x21ee5f0); - lsquic_arr_push(&arr, 0x21ee6d0); - lsquic_arr_push(&arr, 0x21edb50); - lsquic_arr_push(&arr, 0x21edb90); - lsquic_arr_push(&arr, 0x21eea20); - lsquic_arr_push(&arr, 0x21eeb00); - lsquic_arr_push(&arr, 0x21ec790); - lsquic_arr_push(&arr, 0x21ec870); - lsquic_arr_push(&arr, 0x21ec990); - lsquic_arr_push(&arr, 0x21eca70); - lsquic_arr_push(&arr, 0x21ecb50); - lsquic_arr_push(&arr, 0x21ee820); - lsquic_arr_push(&arr, 0x21ee860); - lsquic_arr_push(&arr, 0x21ef830); - lsquic_arr_push(&arr, 0x21ef930); - lsquic_arr_push(&arr, 0x21efa30); - lsquic_arr_push(&arr, 0x21efb40); - lsquic_arr_push(&arr, 0x21efc20); - lsquic_arr_push(&arr, 0x21ef470); - lsquic_arr_push(&arr, 0x21ef530); - lsquic_arr_push(&arr, 0x21eff40); - lsquic_arr_push(&arr, 0x21f0020); - lsquic_arr_push(&arr, 0x21f0100); - lsquic_arr_push(&arr, 0x21f0200); - lsquic_arr_push(&arr, 0x21f02c0); - lsquic_arr_push(&arr, 0x21f03d0); - lsquic_arr_push(&arr, 0x21efd20); - lsquic_arr_push(&arr, 0x21efe00); - lsquic_arr_push(&arr, 0x21edc30); - lsquic_arr_push(&arr, 0x21edd10); - lsquic_arr_push(&arr, 0x21eddf0); - lsquic_arr_push(&arr, 0x21edf00); - lsquic_arr_push(&arr, 0x21ee000); - assert(0x21ecba0 == lsquic_arr_shift(&arr)); - assert(0x21eccb0 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21eccb0); - assert(0x21ecdb0 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ecdb0); - assert(0x21ece90 == lsquic_arr_shift(&arr)); - assert(0x21ecf70 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ecf70); - lsquic_arr_push(&arr, 0x21ece90); - assert(0x21ed0e0 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ed0e0); - assert(0x21ed1e0 == lsquic_arr_shift(&arr)); - assert(0x21ed2c0 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ed2c0); - assert(0x21ed3a0 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ed3a0); - assert(0x21ed510 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ed510); - assert(0x21ed5d0 == lsquic_arr_shift(&arr)); - assert(0x21ed6b0 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ed6b0); - lsquic_arr_push(&arr, 0x21ed5f0); - assert(0x21ed7b0 == lsquic_arr_shift(&arr)); - assert(0x21ed890 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ed890); - assert(0x21ed970 == lsquic_arr_shift(&arr)); - assert(0x21eda50 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21eda50); - lsquic_arr_push(&arr, 0x21ed990); - assert(0x21ec450 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ec450); - assert(0x21ec510 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ec510); - assert(0x21ee210 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ee210); - assert(0x21ee310 == lsquic_arr_shift(&arr)); - assert(0x21ee3f0 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ee3f0); - assert(0x21ee4e0 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ee4e0); - lsquic_arr_push(&arr, 0x21ee330); - assert(0x21ee5f0 == lsquic_arr_shift(&arr)); - assert(0x21ee6d0 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ee6d0); - assert(0x21edb50 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21edb50); - assert(0x21edb90 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21edb90); - assert(0x21eea20 == lsquic_arr_shift(&arr)); - assert(0x21eeb00 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21eeb00); - assert(0x21ec790 == lsquic_arr_shift(&arr)); - assert(0x21ec870 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ec870); - assert(0x21ec990 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ec990); - assert(0x21eca70 == lsquic_arr_shift(&arr)); - assert(0x21ecb50 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ecb50); - assert(0x21ee820 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ee820); - assert(0x21ee860 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ee860); - assert(0x21ef830 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ef830); - assert(0x21ef930 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ef930); - assert(0x21efa30 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21efa30); - lsquic_arr_push(&arr, 0x21eca90); - assert(0x21efb40 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21efb40); - assert(0x21efc20 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21efc20); - assert(0x21ef470 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ef470); - lsquic_arr_push(&arr, 0x21ec7d0); - assert(0x21ef530 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21ef530); - assert(0x21eff40 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21eff40); - assert(0x21f0020 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21f0020); - assert(0x21f0100 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21f0100); - assert(0x21f0200 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21f0200); - assert(0x21f02c0 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21f02c0); - assert(0x21f03d0 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21f03d0); - assert(0x21efd20 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21efd20); - assert(0x21efe00 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21efe00); - assert(0x21edc30 == lsquic_arr_shift(&arr)); - lsquic_arr_push(&arr, 0x21edc30); - assert(0x21edd10 == lsquic_arr_shift(&arr)); - assert(0x21eddf0 == lsquic_arr_shift(&arr)); - lsquic_arr_cleanup(&arr); -} - - -int -main (void) -{ - struct lsquic_arr arr; - uintptr_t val; - - lsquic_arr_init(&arr); - - lsquic_arr_push(&arr, 1); - lsquic_arr_push(&arr, 2); - lsquic_arr_push(&arr, 3); - lsquic_arr_push(&arr, 4); - - assert(4 == lsquic_arr_count(&arr)); - - val = lsquic_arr_get(&arr, 0); - assert(1 == val); - val = lsquic_arr_get(&arr, 3); - assert(4 == val); - - val = lsquic_arr_shift(&arr); - - assert(1 == val); - assert(3 == lsquic_arr_count(&arr)); - - val = lsquic_arr_shift(&arr); - assert(2 == val); - val = lsquic_arr_shift(&arr); - assert(3 == val); - assert(1 == lsquic_arr_count(&arr)); - val = lsquic_arr_get(&arr, 0); - assert(4 == val); - - lsquic_arr_push(&arr, 5); - val = lsquic_arr_get(&arr, 0); - assert(4 == val); - assert(2 == lsquic_arr_count(&arr)); - - lsquic_arr_push(&arr, 6); - lsquic_arr_push(&arr, 7); - lsquic_arr_push(&arr, 8); - assert(5 == lsquic_arr_count(&arr)); - assert(4 == lsquic_arr_shift(&arr)); - assert(5 == lsquic_arr_shift(&arr)); - assert(6 == lsquic_arr_shift(&arr)); - assert(7 == lsquic_arr_shift(&arr)); - assert(8 == lsquic_arr_shift(&arr)); - assert(0 == lsquic_arr_count(&arr)); - - lsquic_arr_cleanup(&arr); - - test1(); - - return 0; -} diff --git a/external/lsquic/tests/test_attq.c b/external/lsquic/tests/test_attq.c deleted file mode 100644 index 8901972..0000000 --- a/external/lsquic/tests/test_attq.c +++ /dev/null @@ -1,231 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_int_types.h" -#include "lsquic_attq.h" -#include "lsquic_hash.h" -#include "lsquic_conn.h" - - -static char curiosity[] = - "Dogs say cats love too much, are irresponsible," - "are changeable, marry too many wives," - "desert their children, chill all dinner tables" - "with tales of their nine lives." - "Well, they are lucky. Let them be" - "nine-lived and contradictory," - "curious enough to change, prepared to pay" - "the cat price, which is to die" - "and die again and again," - "each time with no less pain." - "A cat minority of one" - "is all that can be counted on" - "to tell the truth. And what cats have to tell" - "on each return from hell" - "is this: that dying is what the living do," - "that dying is what the loving do," - "and that dead dogs are those who do not know" - "that dying is what, to live, each has to do." - ; - - -static int -cmp_chars_asc (const void *ap, const void *bp) -{ - char a = * (char *) ap; - char b = * (char *) bp; - return (a > b) - (b > a); -} - - -static int -cmp_chars_desc (const void *ap, const void *bp) -{ - char a = * (char *) ap; - char b = * (char *) bp; - return (a < b) - (b < a); -} - - -enum sort_action { SORT_NONE, SORT_ASC, SORT_DESC, }; - -static void -test_attq_ordering (enum sort_action sa) -{ - struct attq *q; - struct lsquic_conn *conns, *conn; - const struct attq_elem *next_attq; - lsquic_time_t prev; - lsquic_time_t t; - unsigned i; - int s; - - switch (sa) - { - case SORT_NONE: - break; - case SORT_ASC: - qsort(curiosity, sizeof(curiosity) * - sizeof(curiosity[0]), sizeof(curiosity[0]), cmp_chars_asc); - break; - case SORT_DESC: - qsort(curiosity, sizeof(curiosity) * - sizeof(curiosity[0]), sizeof(curiosity[0]), cmp_chars_desc); - break; - } - - q = lsquic_attq_create(); - - for (i = 0; i < sizeof(curiosity); ++i) - { - unsigned count_before = lsquic_attq_count_before(q, curiosity[i]); - assert(count_before == 0); - } - - conns = calloc(sizeof(curiosity), sizeof(conns[0])); - for (i = 0; i < sizeof(curiosity); ++i) - { - s = lsquic_attq_add(q, &conns[i], (lsquic_time_t) curiosity[i], 0); - assert(s == 0); - } - - for (i = 0; i < sizeof(curiosity); ++i) - assert(conns[i].cn_attq_elem); - - if (sa == SORT_ASC) - { - unsigned counts[ sizeof(curiosity) ]; - unsigned count_before; - counts[0] = 0; - for (i = 1; i < sizeof(curiosity); ++i) - { - if (curiosity[i - 1] == curiosity[i]) - counts[i] = counts[i - 1]; - else - counts[i] = i; - } - for (i = 1; i < sizeof(curiosity); ++i) - { - count_before = lsquic_attq_count_before(q, curiosity[i]); - assert(count_before == counts[i]); - } - } - -#ifdef _MSC_VER - prev = 0; -#endif - for (i = 0; i < sizeof(curiosity); ++i) - { - next_attq = lsquic_attq_next(q); - assert(next_attq); - t = next_attq->ae_adv_time; - if (i > 0) - assert(t >= prev); - prev = t; - conn = lsquic_attq_pop(q, ~0ULL); - assert(conn); - } - - next_attq = lsquic_attq_next(q); - assert(!next_attq); - conn = lsquic_attq_pop(q, ~0ULL); - assert(!conn); - - free(conns); - lsquic_attq_destroy(q); -} - - -/* Filter up */ -static void -test_attq_removal_1 (void) -{ - struct attq *q; - struct lsquic_conn *conns; - - q = lsquic_attq_create(); - conns = calloc(6, sizeof(conns[0])); - - lsquic_attq_add(q, &conns[0], 1, 0); - lsquic_attq_add(q, &conns[1], 4, 0); - lsquic_attq_add(q, &conns[2], 2, 0); - lsquic_attq_add(q, &conns[3], 5, 0); - lsquic_attq_add(q, &conns[4], 6, 0); - lsquic_attq_add(q, &conns[5], 3, 0); - - lsquic_attq_remove(q, &conns[3]); - - free(conns); - lsquic_attq_destroy(q); -} - - -/* Filter down */ -static void -test_attq_removal_2 (void) -{ - struct attq *q; - struct lsquic_conn *conns; - - q = lsquic_attq_create(); - conns = calloc(9, sizeof(conns[0])); - - lsquic_attq_add(q, &conns[0], 1, 0); - lsquic_attq_add(q, &conns[1], 5, 0); - lsquic_attq_add(q, &conns[2], 6, 0); - lsquic_attq_add(q, &conns[3], 9, 0); - lsquic_attq_add(q, &conns[4], 11, 0); - lsquic_attq_add(q, &conns[5], 8, 0); - lsquic_attq_add(q, &conns[6], 15, 0); - lsquic_attq_add(q, &conns[7], 17, 0); - lsquic_attq_add(q, &conns[8], 21, 0); - - lsquic_attq_remove(q, &conns[1]); - - free(conns); - lsquic_attq_destroy(q); -} - - -/* Filter up */ -static void -test_attq_removal_3 (void) -{ - struct attq *q; - struct lsquic_conn *conns; - - q = lsquic_attq_create(); - conns = calloc(9, sizeof(conns[0])); - - lsquic_attq_add(q, &conns[0], 1, 0); - lsquic_attq_add(q, &conns[1], 9, 0); - lsquic_attq_add(q, &conns[2], 22, 0); - lsquic_attq_add(q, &conns[3], 17, 0); - lsquic_attq_add(q, &conns[4], 11, 0); - lsquic_attq_add(q, &conns[5], 33, 0); - lsquic_attq_add(q, &conns[6], 27, 0); - lsquic_attq_add(q, &conns[7], 21, 0); - lsquic_attq_add(q, &conns[8], 19, 0); - - lsquic_attq_remove(q, &conns[1]); - - free(conns); - lsquic_attq_destroy(q); -} - - -int -main (void) -{ - test_attq_ordering(SORT_NONE); - test_attq_ordering(SORT_ASC); - test_attq_ordering(SORT_DESC); - test_attq_removal_1(); - test_attq_removal_2(); - test_attq_removal_3(); - return 0; -} diff --git a/external/lsquic/tests/test_blocked_gquic_be.c b/external/lsquic/tests/test_blocked_gquic_be.c deleted file mode 100644 index 2ab947c..0000000 --- a/external/lsquic/tests/test_blocked_gquic_be.c +++ /dev/null @@ -1,70 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_parse.h" - -//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC -#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) - - -/* The test is both for generation and parsing: */ -struct wuf_test { - unsigned char buf[0x10]; - size_t buf_len; - lsquic_stream_id_t stream_id; -}; - -static const struct wuf_test wuf_tests[] = { - { - .buf = { 0x05, 0x00, 0x67, 0x45, 0x34, }, - .buf_len = GQUIC_BLOCKED_FRAME_SZ, - .stream_id = 0x674534, - }, - - { .buf = { 0 }, } -}; - - -static void -run_parse_tests (void) -{ - const struct wuf_test *test; - for (test = wuf_tests; test->buf[0]; ++test) - { - lsquic_stream_id_t stream_id = ~0; - int sz = pf->pf_parse_blocked_frame(test->buf, test->buf_len, &stream_id); - assert(sz == GQUIC_BLOCKED_FRAME_SZ); - assert(stream_id == test->stream_id); - } -} - - -static void -run_gen_tests (void) -{ - const struct wuf_test *test; - for (test = wuf_tests; test->buf[0]; ++test) - { - unsigned char buf[0x100]; - int sz = pf->pf_gen_blocked_frame(buf, test->buf_len, test->stream_id); - assert(sz == GQUIC_BLOCKED_FRAME_SZ); - assert(0 == memcmp(buf, test->buf, sz)); - } -} - - -int -main (void) -{ - run_parse_tests(); - run_gen_tests(); - return 0; -} diff --git a/external/lsquic/tests/test_blocked_gquic_le.c b/external/lsquic/tests/test_blocked_gquic_le.c deleted file mode 100644 index 1715c87..0000000 --- a/external/lsquic/tests/test_blocked_gquic_le.c +++ /dev/null @@ -1,70 +0,0 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_alarmset.h" -#include "lsquic_parse.h" - -static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); - - -/* The test is both for generation and parsing: */ -struct wuf_test { - unsigned char buf[0x10]; - size_t buf_len; - uint32_t stream_id; -}; - -static const struct wuf_test wuf_tests[] = { - { - .buf = { 0x05, 0x34, 0x45, 0x67, 0x00, }, - .buf_len = QUIC_BLOCKED_FRAME_SZ, - .stream_id = 0x674534, - }, - - { .buf = { 0 }, } -}; - - -static void -run_parse_tests (void) -{ - const struct wuf_test *test; - for (test = wuf_tests; test->buf[0]; ++test) - { - uint32_t stream_id = ~0; - int sz = pf->pf_parse_blocked_frame(test->buf, test->buf_len, &stream_id); - assert(sz == QUIC_BLOCKED_FRAME_SZ); - assert(stream_id == test->stream_id); - } -} - - -static void -run_gen_tests (void) -{ - const struct wuf_test *test; - for (test = wuf_tests; test->buf[0]; ++test) - { - unsigned char buf[0x100]; - int sz = pf->pf_gen_blocked_frame(buf, test->buf_len, test->stream_id); - assert(sz == QUIC_BLOCKED_FRAME_SZ); - assert(0 == memcmp(buf, test->buf, sz)); - } -} - - -int -main (void) -{ - run_parse_tests(); - run_gen_tests(); - return 0; -} diff --git a/external/lsquic/tests/test_bw_sampler.c b/external/lsquic/tests/test_bw_sampler.c deleted file mode 100644 index 07796e2..0000000 --- a/external/lsquic/tests/test_bw_sampler.c +++ /dev/null @@ -1,644 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* Test adapted from Chromium bandwidth_sampler_test.cc */ -// Copyright 2016 The Chromium Authors. All rights reserved. - -#include -#include -#include -#include -#include - -#include "lsquic.h" -#include "lsquic_int_types.h" -#include "lsquic_hash.h" -#include "lsquic_packet_common.h" -#include "lsquic_packet_out.h" -#include "lsquic_bw_sampler.h" -#include "lsquic_conn.h" -#include "lsquic_malo.h" - - -/* Convert seconds to microseconds */ -#define sec(val) ((val) * 1000 * 1000) - -/* Convert milliseconds to lsquic_time_t, which is microseconds */ -#define ms(val) ((val) * 1000) - -/* Microseconds */ -#define us(val) (val) - -#define kRegularPacketSize 1280 - -#define PacketsToBytes(count_) ((count_) * kRegularPacketSize) - -#define FromKBytesPerSecond(size_) (size_ * 8000) - -// Enforce divisibility for some of the tests: -// "kRegularPacketSize has to be five times divisible by 2" -typedef char packet_size_has_to_be_five_times_divisible_by_2[ - (kRegularPacketSize & 31) == 0 ? 1 : -1]; - -struct sampler_test -{ - struct bw_sampler sampler; - lsquic_time_t time; - uint64_t bytes_in_flight; - struct lsquic_conn conn; - struct malo *malo_po; -}; - - -static void -sampler_test_init (struct sampler_test *stest) -{ - memset(stest, 0, sizeof(*stest)); - stest->time = ms(1000); /* Time must not be zero, or test breaks */ - LSCONN_INITIALIZE(&stest->conn); - lsquic_bw_sampler_init(&stest->sampler, &stest->conn, QUIC_FTBIT_STREAM); - stest->malo_po = lsquic_malo_create(sizeof(struct lsquic_packet_out)); - assert(stest->malo_po); -} - - -static void -sampler_test_cleanup (struct sampler_test *stest) -{ - lsquic_bw_sampler_cleanup(&stest->sampler); - lsquic_malo_destroy(stest->malo_po); -} - - -static struct lsquic_packet_out * -sampler_test_send_packet (struct sampler_test *stest, lsquic_packno_t packno, - bool retx) -{ - struct lsquic_packet_out *packet_out; - - packet_out = lsquic_malo_get(stest->malo_po); - assert(packet_out); - memset(packet_out, 0, sizeof(*packet_out)); - packet_out->po_packno = packno; - packet_out->po_flags |= PO_SENT_SZ; - packet_out->po_flags |= PO_HELLO; /* Bypass sanity check */ - packet_out->po_sent_sz = kRegularPacketSize; - packet_out->po_sent = stest->time; - if (retx) - packet_out->po_frame_types |= QUIC_FTBIT_STREAM; - lsquic_bw_sampler_packet_sent(&stest->sampler, packet_out, - stest->bytes_in_flight); - if (retx) - stest->bytes_in_flight += packet_out->po_sent_sz; - return packet_out; -} - - -static struct bw_sample * -sampler_test_ack_packet (struct sampler_test *stest, - struct lsquic_packet_out *packet_out) -{ - if (packet_out->po_frame_types & QUIC_FTBIT_STREAM) - stest->bytes_in_flight -= packet_out->po_sent_sz; - return lsquic_bw_sampler_packet_acked(&stest->sampler, packet_out, - stest->time); -} - - -static void -sampler_test_lose_packet (struct sampler_test *stest, - struct lsquic_packet_out *packet_out) -{ - if (packet_out->po_frame_types & QUIC_FTBIT_STREAM) - stest->bytes_in_flight -= packet_out->po_sent_sz; - lsquic_bw_sampler_packet_lost(&stest->sampler, packet_out); -} - - -static void -sampler_test_send_40_packets_and_ack_first_20 (struct sampler_test *stest, - lsquic_time_t time_between_packets, struct lsquic_packet_out *packets[]) -{ - struct bw_sample *sample; - unsigned i; - - // Send 20 packets at a constant inter-packet time. - for (i = 1; i <= 20; i++) - { - packets[i] = sampler_test_send_packet(stest, i, true); - stest->time += time_between_packets; - } - - // Ack packets 1 to 20, while sending new packets at the same rate as - // before. - for (i = 1; i <= 20; i++) - { - sample = sampler_test_ack_packet(stest, packets[i]); - assert(sample); - lsquic_malo_put(sample); - packets[i + 20] = sampler_test_send_packet(stest, i + 20, true); - stest->time += time_between_packets; - } -} - - -// Test the sampler in a simple stop-and-wait sender setting. -static void -test_send_and_wait (void) -{ - struct sampler_test stest; - lsquic_time_t time_between_packets = ms(10); - uint64_t expected_bandwidth = kRegularPacketSize * 100 * 8; - unsigned i; - struct bw_sample *sample; - struct lsquic_packet_out *packet; - - sampler_test_init(&stest); - - // Send packets at the constant bandwidth. - for (i = 1; i < 20; ++i) - { - packet = sampler_test_send_packet(&stest, i, true); - stest.time += time_between_packets; - sample = sampler_test_ack_packet(&stest, packet); - assert(sample); - assert(expected_bandwidth == BW_VALUE(&sample->bandwidth)); - lsquic_malo_put(sample); - } - - // Send packets at the exponentially decreasing bandwidth. - for (i = 20; i < 25; i++) - { - time_between_packets = time_between_packets * 2; - expected_bandwidth = expected_bandwidth / 2; - packet = sampler_test_send_packet(&stest, i, true); - stest.time += time_between_packets; - sample = sampler_test_ack_packet(&stest, packet); - assert(sample); - assert(expected_bandwidth == BW_VALUE(&sample->bandwidth)); - lsquic_malo_put(sample); - } - - assert(lsquic_bw_sampler_entry_count(&stest.sampler) == 0); - assert(stest.bytes_in_flight == 0); - - sampler_test_cleanup(&stest); -} - - -static void -test_send_time_state (void) -{ - struct sampler_test stest; - lsquic_time_t time_between_packets = ms(10); - struct bw_sample *sample; - unsigned i; - struct lsquic_packet_out *packets[11]; - - sampler_test_init(&stest); - - // Send packets 1-5. - for (i = 1; i <= 5; i++) { - packets[i] = sampler_test_send_packet(&stest, i, true); - assert(PacketsToBytes(i) == stest.sampler.bws_total_sent); - stest.time += time_between_packets; - } - - /* The order of tests here is different. Because the send state is - * deleted when packet is acked, we have to check its values first. - */ -#define SEND_STATE(idx_) (&packets[idx_]->po_bwp_state->bwps_send_state) - - // Ack packet 1. - assert(PacketsToBytes(1) == SEND_STATE(1)->total_bytes_sent); - assert(0 == SEND_STATE(1)->total_bytes_acked); - assert(0 == SEND_STATE(1)->total_bytes_lost); - sample = sampler_test_ack_packet(&stest, packets[1]); - assert(sample); - lsquic_malo_put(sample); - assert(PacketsToBytes(1) == stest.sampler.bws_total_acked); - - // Lose packet 2. - assert(PacketsToBytes(2) == SEND_STATE(2)->total_bytes_sent); - assert(0 == SEND_STATE(2)->total_bytes_acked); - assert(0 == SEND_STATE(2)->total_bytes_lost); - sampler_test_lose_packet(&stest, packets[2]); - assert(PacketsToBytes(1) == stest.sampler.bws_total_lost); - - // Lose packet 3. - assert(PacketsToBytes(3) == SEND_STATE(3)->total_bytes_sent); - assert(0 == SEND_STATE(3)->total_bytes_acked); - assert(0 == SEND_STATE(3)->total_bytes_lost); - sampler_test_lose_packet(&stest, packets[3]); - assert(PacketsToBytes(2) == stest.sampler.bws_total_lost); - - // Send packets 6-10. - for (i = 6; i <= 10; i++) - { - packets[i] = sampler_test_send_packet(&stest, i, true); - assert(PacketsToBytes(i) == stest.sampler.bws_total_sent); - stest.time += time_between_packets; - } - - // Ack all inflight packets. - unsigned acked_packet_count = 1; - assert(PacketsToBytes(acked_packet_count) == - stest.sampler.bws_total_acked); - for (i = 4; i <= 10; i++) - { - assert(PacketsToBytes(i) == SEND_STATE(i)->total_bytes_sent); - if (i <= 5) - { - assert(0 == SEND_STATE(i)->total_bytes_acked); - assert(0 == SEND_STATE(i)->total_bytes_lost); - } - else - { - assert(PacketsToBytes(1) == SEND_STATE(i)->total_bytes_acked); - assert(PacketsToBytes(2) == SEND_STATE(i)->total_bytes_lost); - } - sample = sampler_test_ack_packet(&stest, packets[i]); - assert(sample); - lsquic_malo_put(sample); - ++acked_packet_count; - assert(PacketsToBytes(acked_packet_count) == - stest.sampler.bws_total_acked); - stest.time += time_between_packets; - } - - assert(lsquic_bw_sampler_entry_count(&stest.sampler) == 0); - - sampler_test_cleanup(&stest); -} - - -// Test the sampler during regular windowed sender scenario with fixed -// CWND of 20. -static void -test_send_paced (void) -{ - struct sampler_test stest; - const lsquic_time_t time_between_packets = ms(1); - uint64_t expected_bw = FromKBytesPerSecond(kRegularPacketSize); - unsigned i; - struct bw_sample *sample; - struct lsquic_packet_out *packets[41]; - - sampler_test_init(&stest); - sampler_test_send_40_packets_and_ack_first_20(&stest, - time_between_packets, packets); - - // Ack the packets 21 to 40, arriving at the correct bandwidth. - for (i = 21; i <= 40; ++i) - { - sample = sampler_test_ack_packet(&stest, packets[i]); - assert(sample); - assert(expected_bw == BW_VALUE(&sample->bandwidth)); - stest.time += time_between_packets; - lsquic_malo_put(sample); - } - - assert(lsquic_bw_sampler_entry_count(&stest.sampler) == 0); - assert(stest.bytes_in_flight == 0); - - sampler_test_cleanup(&stest); -} - - -// Test the sampler in a scenario where 50% of packets is consistently lost. -static void -test_send_with_losses (void) -{ - struct sampler_test stest; - const lsquic_time_t time_between_packets = ms(1); - uint64_t expected_bw = FromKBytesPerSecond(kRegularPacketSize) / 2; - unsigned i; - struct bw_sample *sample; - struct lsquic_packet_out *packets[41]; - - sampler_test_init(&stest); - - // Send 20 packets, each 1 ms apart. - for (i = 1; i <= 20; i++) - { - packets[i] = sampler_test_send_packet(&stest, i, true); - stest.time += time_between_packets; - } - - // Ack packets 1 to 20, losing every even-numbered packet, while sending new - // packets at the same rate as before. - for (i = 1; i <= 20; i++) - { - if (i % 2 == 0) - { - sample = sampler_test_ack_packet(&stest, packets[i]); - assert(sample); - lsquic_malo_put(sample); - } - else - sampler_test_lose_packet(&stest, packets[i]); - packets[i + 20] = sampler_test_send_packet(&stest, i + 20, true); - stest.time += time_between_packets; - } - - // Ack the packets 21 to 40 with the same loss pattern. - for (i = 21; i <= 40; i++) - { - if (i % 2 == 0) - { - sample = sampler_test_ack_packet(&stest, packets[i]); - assert(sample); - assert(expected_bw == BW_VALUE(&sample->bandwidth)); - lsquic_malo_put(sample); - } - else - sampler_test_lose_packet(&stest, packets[i]); - stest.time += time_between_packets; - } - - assert(lsquic_bw_sampler_entry_count(&stest.sampler) == 0); - assert(stest.bytes_in_flight == 0); - - sampler_test_cleanup(&stest); -} - - -// Test the sampler in a scenario where the 50% of packets are not -// congestion controlled (specifically, non-retransmittable data is not -// congestion controlled). Should be functionally consistent in behavior with -// the SendWithLosses test. -static void -test_not_congestion_controlled (void) -{ - struct sampler_test stest; - const lsquic_time_t time_between_packets = ms(1); - uint64_t expected_bw = FromKBytesPerSecond(kRegularPacketSize) / 2; - unsigned i; - struct bw_sample *sample; - struct lsquic_packet_out *packets[41]; - - sampler_test_init(&stest); - - /* Note the mismatch between the comment and the code. This is - * inherited from the original code. - */ - // Send 20 packets, each 1 ms apart. Every even packet is not congestion - // controlled. - for (i = 1; i <= 20; i++) - { - packets[i] = sampler_test_send_packet(&stest, i, - i % 2 == 0 ? true : false); - stest.time += time_between_packets; - } - - assert(lsquic_bw_sampler_entry_count(&stest.sampler) == 10); - - // Ack packets 2 to 21, ignoring every even-numbered packet, while sending new - // packets at the same rate as before. - for (i = 1; i <= 20; i++) - { - if (i % 2 == 0) - { - sample = sampler_test_ack_packet(&stest, packets[i]); - assert(sample); - lsquic_malo_put(sample); - } - packets[i + 20] = sampler_test_send_packet(&stest, i + 20, - i % 2 == 0 ? true : false); - stest.time += time_between_packets; - } - - // Ack the packets 22 to 41 with the same congestion controlled pattern. - for (i = 21; i <= 40; i++) - { - if (i % 2 == 0) - { - sample = sampler_test_ack_packet(&stest, packets[i]); - assert(sample); - assert(expected_bw == BW_VALUE(&sample->bandwidth)); - lsquic_malo_put(sample); - } - stest.time += time_between_packets; - } - - // Since only congestion controlled packets are entered into the map, it has - // to be empty at this point. - assert(lsquic_bw_sampler_entry_count(&stest.sampler) == 0); - assert(stest.bytes_in_flight == 0); - - sampler_test_cleanup(&stest); -} - - -// Simulate a situation where ACKs arrive in burst and earlier than usual, thus -// producing an ACK rate which is higher than the original send rate. -static void -test_compressed_ack (void) -{ - struct sampler_test stest; - const lsquic_time_t time_between_packets = ms(1), - ridiculously_small_time_delta = us(20); - uint64_t expected_bw = FromKBytesPerSecond(kRegularPacketSize); - uint64_t bw; - unsigned i; - struct bw_sample *sample; - struct lsquic_packet_out *packets[41]; - - sampler_test_init(&stest); - sampler_test_send_40_packets_and_ack_first_20(&stest, - time_between_packets, packets); - - // Simulate an RTT somewhat lower than the one for 1-to-21 transmission. - stest.time += time_between_packets * 15; - - // Ack the packets 21 to 40 almost immediately at once. - for (i = 21; i <= 40; i++) - { - sample = sampler_test_ack_packet(&stest, packets[i]); - assert(sample); - stest.time += ridiculously_small_time_delta; - bw = BW_VALUE(&sample->bandwidth); - lsquic_malo_put(sample); - } - - assert(bw == expected_bw); - assert(lsquic_bw_sampler_entry_count(&stest.sampler) == 0); - assert(stest.bytes_in_flight == 0); - - sampler_test_cleanup(&stest); -} - - -// Tests receiving ACK packets in the reverse order. -static void -test_reordered_ack (void) -{ - struct sampler_test stest; - const lsquic_time_t time_between_packets = ms(1); - uint64_t expected_bw = FromKBytesPerSecond(kRegularPacketSize); - unsigned i; - struct bw_sample *sample; - struct lsquic_packet_out *packets[61]; - - sampler_test_init(&stest); - sampler_test_send_40_packets_and_ack_first_20(&stest, - time_between_packets, packets); - - // Ack the packets 21 to 40 in the reverse order, while sending packets 41 to - // 60. - for (i = 0; i < 20; i++) - { - sample = sampler_test_ack_packet(&stest, packets[40 - i]); - assert(sample); - assert(expected_bw == BW_VALUE(&sample->bandwidth)); - packets[41 + i] = sampler_test_send_packet(&stest, 41 + i, true); - stest.time += time_between_packets; - lsquic_malo_put(sample); - } - - // Ack the packets 41 to 60, now in the regular order. - for (i = 41; i <= 60; i++) - { - sample = sampler_test_ack_packet(&stest, packets[i]); - assert(sample); - assert(expected_bw == BW_VALUE(&sample->bandwidth)); - stest.time += time_between_packets; - lsquic_malo_put(sample); - } - - assert(lsquic_bw_sampler_entry_count(&stest.sampler) == 0); - assert(stest.bytes_in_flight == 0); - - sampler_test_cleanup(&stest); -} - - -// Test the app-limited logic. -static void -test_app_limited (void) -{ - struct sampler_test stest; - const lsquic_time_t time_between_packets = ms(1); - uint64_t expected_bw = FromKBytesPerSecond(kRegularPacketSize); - unsigned i; - struct bw_sample *sample; - struct lsquic_packet_out *packets[81]; - - sampler_test_init(&stest); - sampler_test_send_40_packets_and_ack_first_20(&stest, - time_between_packets, packets); - - // We are now app-limited. Ack 21 to 40 as usual, but do not send anything for - // now. - lsquic_bw_sampler_app_limited(&stest.sampler); - for (i = 21; i <= 40; i++) - { - sample = sampler_test_ack_packet(&stest, packets[i]); - assert(sample); - assert(expected_bw == BW_VALUE(&sample->bandwidth)); - stest.time += time_between_packets; - lsquic_malo_put(sample); - } - - stest.time += sec(1); - - // Send packets 41 to 60, all of which would be marked as app-limited. - for (i = 41; i <= 60; i++) - { - packets[i] = sampler_test_send_packet(&stest, i, true); - stest.time += time_between_packets; - } - - // Ack packets 41 to 60, while sending packets 61 to 80. 41 to 60 should be - // app-limited and underestimate the bandwidth due to that. - for (i = 41; i <= 60; i++) - { - sample = sampler_test_ack_packet(&stest, packets[i]); - assert(sample); - assert(sample->is_app_limited); - assert(BW_VALUE(&sample->bandwidth) < 0.7 * expected_bw); - packets[i + 20] = sampler_test_send_packet(&stest, i + 20, true); - stest.time += time_between_packets; - lsquic_malo_put(sample); - } - - // Run out of packets, and then ack packet 61 to 80, all of which should have - // correct non-app-limited samples. - for (i = 61; i <= 80; i++) - { - sample = sampler_test_ack_packet(&stest, packets[i]); - assert(sample); - assert(BW_VALUE(&sample->bandwidth) == expected_bw); - stest.time += time_between_packets; - lsquic_malo_put(sample); - } - - assert(lsquic_bw_sampler_entry_count(&stest.sampler) == 0); - assert(stest.bytes_in_flight == 0); - - sampler_test_cleanup(&stest); -} - - -// Test the samples taken at the first flight of packets sent. -static void -test_first_round_trip (void) -{ - struct sampler_test stest; - const lsquic_time_t time_between_packets = ms(1), - rtt = ms(800); - const unsigned num_packets = 10; - const uint64_t num_bytes = num_packets * kRegularPacketSize; - struct bandwidth real_bandwidth = BW_FROM_BYTES_AND_DELTA(num_bytes, rtt); - uint64_t last_bw; - unsigned i; - struct bw_sample *sample; - struct lsquic_packet_out *packets[11]; - - sampler_test_init(&stest); - - for (i = 1; i <= 10; i++) - { - packets[i] = sampler_test_send_packet(&stest, i, true); - stest.time += time_between_packets; - } - - stest.time += rtt - num_packets * time_between_packets; - - last_bw = 0; - for (i = 1; i <= 10; i++) - { - sample = sampler_test_ack_packet(&stest, packets[i]); - assert(sample); - assert(BW_VALUE(&sample->bandwidth) > last_bw); - last_bw = BW_VALUE(&sample->bandwidth); - stest.time += time_between_packets; - lsquic_malo_put(sample); - } - - // The final measured sample for the first flight of sample is expected to be - // smaller than the real bandwidth, yet it should not lose more than 10%. The - // specific value of the error depends on the difference between the RTT and - // the time it takes to exhaust the congestion window (i.e. in the limit when - // all packets are sent simultaneously, last sample would indicate the real - // bandwidth). - assert(last_bw < real_bandwidth.value); - assert(last_bw > 0.9f * real_bandwidth.value); - - sampler_test_cleanup(&stest); -} - - -int -main (void) -{ - test_send_and_wait(); - test_send_time_state(); - test_send_paced(); - test_send_with_losses(); - test_not_congestion_controlled(); - test_compressed_ack(); - test_reordered_ack(); - test_app_limited(); - test_first_round_trip(); - - return 0; -} diff --git a/external/lsquic/tests/test_chlo_gen.c b/external/lsquic/tests/test_chlo_gen.c deleted file mode 100644 index b40a77c..0000000 --- a/external/lsquic/tests/test_chlo_gen.c +++ /dev/null @@ -1,72 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * test_chlo_gen.c -- Test Client Hello generation. - */ - -#include -#include -#include - -#include - -#include "lsquic.h" -#include "lsquic_hsk_cli_ietf.h" -#include "lsquic_logger.h" - - -static int -my_bwrite (BIO *bio, const char *buf, int len) -{ - return 0; -} - -static int -my_bread (BIO *bio, char *buf, int len) -{ - return 0; -} - -static const BIO_METHOD bio_method = { - .type = 0, /* XXX ? */ - .name = __FILE__, - .bwrite = my_bwrite, - .bread = my_bread, -}; - -int -main (int argc, char **argv) -{ - int opt, s; - - lsquic_log_to_fstream(stderr, LLTS_NONE); - - while (-1 != (opt = getopt(argc, argv, "l:L:"))) - { - switch (opt) - { - case 'l': - lsquic_logger_lopt(optarg); - break; - case 'L': - lsquic_set_log_level(optarg); - break; - default: - exit(EXIT_FAILURE); - } - } - - const lsquic_cid_t dcid = { .len = 10, .idbuf = "wild thing", }; - struct hsk_cli *cli = lsquic_hsk_cli_new(&dcid, &bio_method, NULL, - (unsigned char *) "some params", 11); - - assert(cli); - s = lsquic_hsk_cli_write(cli); - assert(0 == s); - - (void) - lsquic_hsk_cli_write(cli); - - lsquic_hsk_cli_destroy(cli); - - exit(EXIT_SUCCESS); -} diff --git a/external/lsquic/tests/test_clear_aead.c b/external/lsquic/tests/test_clear_aead.c deleted file mode 100644 index e053837..0000000 --- a/external/lsquic/tests/test_clear_aead.c +++ /dev/null @@ -1,120 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * See - * https://github.com/quicwg/base-drafts/wiki/Test-Vector-for-the-Clear-Text-AEAD-key-derivation - */ - -#include -#include - -#include -#include - -#include "lsquic_types.h" -#include "lsquic_hkdf.h" - -int -main (void) -{ - const EVP_MD *const md = EVP_sha256(); - - const lsquic_cid_t dcid = { - .idbuf = "\xc6\x54\xef\xd8\xa3\x1b\x47\x92", - .len = 8, - }; - unsigned char secret[100]; - size_t secret_len; - - const unsigned char expected_secret[] = { - 0x5f, 0x8d, 0xa5, 0x94, 0xfe, 0xca, 0x72, 0xc1, - 0x0f, 0x9e, 0xc8, 0x78, 0x81, 0x11, 0x05, 0x57, - 0x81, 0xa9, 0x6f, 0x6a, 0x06, 0x53, 0x58, 0xbf, - 0xb4, 0x5a, 0xba, 0x4b, 0xc0, 0x37, 0xf3, 0xb2, - }; - - HKDF_extract(secret, &secret_len, md, dcid.idbuf, dcid.len, - HSK_SALT_PRE29, HSK_SALT_SZ); - - assert(sizeof(expected_secret) == secret_len); - assert(0 == memcmp(secret, expected_secret, sizeof(expected_secret))); - - unsigned char client_secret[32]; - const unsigned char expected_client_secret[] = { - 0x0c, 0x74, 0xbb, 0x95, 0xa1, 0x04, 0x8e, 0x52, - 0xef, 0x3b, 0x72, 0xe1, 0x28, 0x89, 0x35, 0x1c, - 0xd7, 0x3a, 0x55, 0x0f, 0xb6, 0x2c, 0x4b, 0xb0, - 0x87, 0xe9, 0x15, 0xcc, 0xe9, 0x6c, 0xe3, 0xa0, - }; - lsquic_qhkdf_expand(md, secret, secret_len, CLIENT_LABEL, CLIENT_LABEL_SZ, - client_secret, sizeof(client_secret)); - assert(0 == memcmp(client_secret, expected_client_secret, - sizeof(client_secret))); - const unsigned char expected_client_key[] = { - 0x86, 0xd1, 0x83, 0x04, 0x80, 0xb4, 0x0f, 0x86, - 0xcf, 0x9d, 0x68, 0xdc, 0xad, 0xf3, 0x5d, 0xfe, - }; - const unsigned char expected_client_iv[] = { - 0x12, 0xf3, 0x93, 0x8a, 0xca, 0x34, 0xaa, 0x02, - 0x54, 0x31, 0x63, 0xd4, - }; - const unsigned char expected_client_hp[] = { - 0xcd, 0x25, 0x3a, 0x36, 0xff, 0x93, 0x93, 0x7c, - 0x46, 0x93, 0x84, 0xa8, 0x23, 0xaf, 0x6c, 0x56, - }; - unsigned char client_key[sizeof(expected_client_key)], - client_iv[sizeof(expected_client_iv)], - client_hp[sizeof(expected_client_hp)]; - lsquic_qhkdf_expand(md, client_secret, sizeof(client_secret), "quic key", 8, - client_key, sizeof(client_key)); - assert(0 == memcmp(client_key, expected_client_key, - sizeof(expected_client_key))); - lsquic_qhkdf_expand(md, client_secret, sizeof(client_secret), "quic iv", 7, - client_iv, sizeof(client_iv)); - assert(0 == memcmp(client_iv, expected_client_iv, - sizeof(expected_client_iv))); - lsquic_qhkdf_expand(md, client_secret, sizeof(client_secret), "quic hp", 7, - client_hp, sizeof(client_hp)); - assert(0 == memcmp(client_hp, expected_client_hp, - sizeof(expected_client_hp))); - - unsigned char server_secret[32]; - const unsigned char expected_server_secret[] = { - 0x4c, 0x9e, 0xdf, 0x24, 0xb0, 0xe5, 0xe5, 0x06, - 0xdd, 0x3b, 0xfa, 0x4e, 0x0a, 0x03, 0x11, 0xe8, - 0xc4, 0x1f, 0x35, 0x42, 0x73, 0xd8, 0xcb, 0x49, - 0xdd, 0xd8, 0x46, 0x41, 0x38, 0xd4, 0x7e, 0xc6, - }; - lsquic_qhkdf_expand(md, secret, secret_len, SERVER_LABEL, SERVER_LABEL_SZ, - server_secret, sizeof(server_secret)); - assert(0 == memcmp(server_secret, expected_server_secret, - sizeof(server_secret))); - const unsigned char expected_server_key[] = { - 0x2c, 0x78, 0x63, 0x3e, 0x20, 0x6e, 0x99, 0xad, - 0x25, 0x19, 0x64, 0xf1, 0x9f, 0x6d, 0xcd, 0x6d, - }; - const unsigned char expected_server_iv[] = { - 0x7b, 0x50, 0xbf, 0x36, 0x98, 0xa0, 0x6d, 0xfa, - 0xbf, 0x75, 0xf2, 0x87, - }; - const unsigned char expected_server_hp[] = { - 0x25, 0x79, 0xd8, 0x69, 0x6f, 0x85, 0xed, 0xa6, - 0x8d, 0x35, 0x02, 0xb6, 0x55, 0x96, 0x58, 0x6b, - }; - unsigned char server_key[sizeof(expected_server_key)], - server_iv[sizeof(expected_server_iv)], - server_hp[sizeof(expected_server_hp)]; - lsquic_qhkdf_expand(md, server_secret, sizeof(server_secret), "quic key", 8, - server_key, sizeof(server_key)); - assert(0 == memcmp(server_key, expected_server_key, - sizeof(expected_server_key))); - lsquic_qhkdf_expand(md, server_secret, sizeof(server_secret), "quic iv", 7, - server_iv, sizeof(server_iv)); - assert(0 == memcmp(server_iv, expected_server_iv, - sizeof(expected_server_iv))); - lsquic_qhkdf_expand(md, server_secret, sizeof(server_secret), "quic hp", 7, - server_hp, sizeof(server_hp)); - assert(0 == memcmp(server_hp, expected_server_hp, - sizeof(expected_server_hp))); - - return 0; -} diff --git a/external/lsquic/tests/test_conn_close_gquic_be.c b/external/lsquic/tests/test_conn_close_gquic_be.c deleted file mode 100644 index c0608ba..0000000 --- a/external/lsquic/tests/test_conn_close_gquic_be.c +++ /dev/null @@ -1,161 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_parse.h" - -//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC -#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) - - -struct conn_close_parse_test { - int lineno; - unsigned char buf[0x100]; - size_t buf_len; - uint32_t error_code; - uint16_t reason_len; - uint8_t reason_off; - int retval; -}; - -static const struct conn_close_parse_test parse_tests[] = { - - { - .lineno = __LINE__, - .buf = { 0x02, 0x00, 0x00, 0x00, 0x31, 0x00, 0x05, 'D', 'u', 'd', 'e', '!', }, - .buf_len = 0x100, - .error_code = 0x31, - .reason_len = 0x05, - .reason_off = 7, - .retval = 7 + 5, - }, - - { - .lineno = __LINE__, - .buf = { 0x02, 0x00, 0x00, 0x00, 0x31, 0x00, 0x05, 'D', 'u', 'd', 'e', '!', }, - .buf_len = 6, /* Too short #1 */ - .error_code = 0x31, - .reason_len = 0x05, - .reason_off = 7, - .retval = -1, - }, - - { - .lineno = __LINE__, - .buf = { 0x02, 0x00, 0x00, 0x00, 0x31, 0x00, 0x05, 'D', 'u', 'd', 'e', '!', }, - .buf_len = 9, /* Too short #2 */ - .error_code = 0x31, - .reason_len = 0x05, - .reason_off = 7, - .retval = -2, - }, - - { .buf = { 0 }, } -}; - - -struct conn_close_gen_test { - int lineno; - uint32_t error_code; - const char *reason; - int retval; - unsigned char buf[0x100]; - size_t buf_len; -}; - - -static const struct conn_close_gen_test gen_tests[] = { - - { - .lineno = __LINE__, - .error_code = 0x12345678, - .reason = "Dude, where is my car?", - .retval = 7 + sizeof("Dude, where is my car?") - 1, - .buf_len = 0x100, - .buf = { - 0x02, - 0x12, 0x34, 0x56, 0x78, - 0x00, sizeof("Dude, where is my car?") - 1, - 'D', 'u', 'd', 'e', ',', ' ', 'w', 'h', 'e', 'r', 'e', ' ', 'i', 's', ' ', 'm', 'y', ' ', 'c', 'a', 'r', '?', - }, - }, - - { - .lineno = __LINE__, - .error_code = 0x12345678, - .reason = NULL, - .retval = 7, - .buf_len = 0x100, - .buf = { - 0x02, - 0x12, 0x34, 0x56, 0x78, - 0x00, 0x00, /* Zero-sized string */ - }, - }, - - { - .lineno = __LINE__, - .error_code = 0x12345678, - .reason = "Dude, where is my car?", - .retval = -1, /* Too short */ - .buf_len = 0x10, - }, - - { .buf = { 0 }, } - -}; - - -static void -run_parse_tests (void) -{ - const struct conn_close_parse_test *test; - for (test = parse_tests; test->buf[0]; ++test) - { - uint64_t error_code = ~0; - uint16_t reason_len = ~0; - uint8_t reason_off = ~0; - int sz = pf->pf_parse_connect_close_frame(test->buf, test->buf_len, - NULL, &error_code, &reason_len, &reason_off); - assert(sz == test->retval); - if (0 == sz) - { - assert(test->error_code == error_code); - assert(test->reason_len == reason_len); - assert(test->reason_off == reason_off); - } - } -} - - -static void -run_gen_tests (void) -{ - const struct conn_close_gen_test *test; - for (test = gen_tests; test->buf[0]; ++test) - { - unsigned char buf[0x100]; - int sz = pf->pf_gen_connect_close_frame(buf, sizeof(buf), - 0, test->error_code, test->reason, - test->reason ? strlen(test->reason) : 0); - assert(sz == test->retval); - if (0 == sz) - assert(0 == memcmp(test->buf, buf, sz)); - } -} - - -int -main (void) -{ - run_parse_tests(); - run_gen_tests(); - return 0; -} diff --git a/external/lsquic/tests/test_conn_close_gquic_le.c b/external/lsquic/tests/test_conn_close_gquic_le.c deleted file mode 100644 index 6bb5164..0000000 --- a/external/lsquic/tests/test_conn_close_gquic_le.c +++ /dev/null @@ -1,161 +0,0 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_alarmset.h" -#include "lsquic_parse.h" - -static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); - - -struct conn_close_parse_test { - int lineno; - unsigned char buf[0x100]; - size_t buf_len; - uint32_t error_code; - uint16_t reason_len; - uint8_t reason_off; - int retval; -}; - -static const struct conn_close_parse_test parse_tests[] = { - - { - .lineno = __LINE__, - .buf = { 0x02, 0x31, 0x00, 0x00, 0x00, 0x05, 0x00, 'D', 'u', 'd', 'e', '!', }, - .buf_len = 0x100, - .error_code = 0x31, - .reason_len = 0x05, - .reason_off = 7, - .retval = 7 + 5, - }, - - { - .lineno = __LINE__, - .buf = { 0x02, 0x31, 0x00, 0x00, 0x00, 0x05, 0x00, 'D', 'u', 'd', 'e', '!', }, - .buf_len = 6, /* Too short #1 */ - .error_code = 0x31, - .reason_len = 0x05, - .reason_off = 7, - .retval = -1, - }, - - { - .lineno = __LINE__, - .buf = { 0x02, 0x31, 0x00, 0x00, 0x00, 0x05, 0x00, 'D', 'u', 'd', 'e', '!', }, - .buf_len = 9, /* Too short #2 */ - .error_code = 0x31, - .reason_len = 0x05, - .reason_off = 7, - .retval = -2, - }, - - { .buf = { 0 }, } -}; - - -struct conn_close_gen_test { - int lineno; - uint32_t error_code; - const char *reason; - int retval; - unsigned char buf[0x100]; - size_t buf_len; -}; - - -static const struct conn_close_gen_test gen_tests[] = { - - { - .lineno = __LINE__, - .error_code = 0x12345678, - .reason = "Dude, where is my car?", - .retval = 7 + sizeof("Dude, where is my car?") - 1, - .buf_len = 0x100, - .buf = { - 0x02, - 0x78, 0x56, 0x34, 0x12, - sizeof("Dude, where is my car?") - 1, 0x00, - 'D', 'u', 'd', 'e', ',', ' ', 'w', 'h', 'e', 'r', 'e', ' ', 'i', 's', ' ', 'm', 'y', ' ', 'c', 'a', 'r', '?', - }, - }, - - { - .lineno = __LINE__, - .error_code = 0x12345678, - .reason = NULL, - .retval = 7, - .buf_len = 0x100, - .buf = { - 0x02, - 0x78, 0x56, 0x34, 0x12, - 0x00, 0x00, /* Zero-sized string */ - }, - }, - - { - .lineno = __LINE__, - .error_code = 0x12345678, - .reason = "Dude, where is my car?", - .retval = -1, /* Too short */ - .buf_len = 0x10, - }, - - { .buf = { 0 }, } - -}; - - -static void -run_parse_tests (void) -{ - const struct conn_close_parse_test *test; - for (test = parse_tests; test->buf[0]; ++test) - { - uint32_t error_code = ~0; - uint16_t reason_len = ~0; - uint8_t reason_off = ~0; - int sz = pf->pf_parse_connect_close_frame(test->buf, test->buf_len, - &error_code, &reason_len, &reason_off); - assert(sz == test->retval); - if (0 == sz) - { - assert(test->error_code == error_code); - assert(test->reason_len == reason_len); - assert(test->reason_off == reason_off); - } - } -} - - -static void -run_gen_tests (void) -{ - const struct conn_close_gen_test *test; - for (test = gen_tests; test->buf[0]; ++test) - { - unsigned char buf[0x100]; - int sz = pf->pf_gen_connect_close_frame(buf, sizeof(buf), - test->error_code, test->reason, - test->reason ? strlen(test->reason) : 0); - assert(sz == test->retval); - if (0 == sz) - assert(0 == memcmp(test->buf, buf, sz)); - } -} - - -int -main (void) -{ - run_parse_tests(); - run_gen_tests(); - return 0; -} diff --git a/external/lsquic/tests/test_conn_hash.c b/external/lsquic/tests/test_conn_hash.c deleted file mode 100644 index 590672b..0000000 --- a/external/lsquic/tests/test_conn_hash.c +++ /dev/null @@ -1,87 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_int_types.h" -#include "lsquic_types.h" -#include "lsquic_hash.h" -#include "lsquic_conn.h" -#include "lsquic_conn_hash.h" -#include "lsquic_mm.h" -#include "lsquic_malo.h" -#include "lsquic_logger.h" -#include "lsquic.h" - - -static struct lsquic_conn * -get_new_lsquic_conn (struct malo *malo) -{ - struct lsquic_conn *lconn = lsquic_malo_get(malo); - memset(lconn, 0, sizeof(*lconn)); - memcpy(lconn->cn_cid.idbuf, &lconn, sizeof(lconn)); - lconn->cn_cid.len = sizeof(lconn); - return lconn; -} - - -int -main (int argc, char **argv) -{ - struct malo *malo; - struct conn_hash conn_hash; - unsigned n, nelems; - struct lsquic_conn *lconn, *find_lsconn; - int s; - - if (argc > 1) - nelems = atoi(argv[1]); - else - nelems = 1000000; - - lsquic_log_to_fstream(stderr, LLTS_HHMMSSMS); - lsquic_set_log_level("info"); - - malo = lsquic_malo_create(sizeof(*lconn)); - s = conn_hash_init(&conn_hash, 0); - assert(0 == s); - - for (n = 0; n < nelems; ++n) - { - lconn = get_new_lsquic_conn(malo); - lconn->cn_if = (void *) (uintptr_t) n; /* This will be used for verification later the test */ - find_lsconn = conn_hash_find_by_cid(&conn_hash, &lconn->cn_cid); - assert(!find_lsconn); - s = conn_hash_add(&conn_hash, lconn); - assert(0 == s); - lconn->cn_flags = 1; /* In hash */ - } - - assert(nelems == conn_hash_count(&conn_hash)); - - for (lconn = lsquic_malo_first(malo); lconn; - lconn = lsquic_malo_next(malo)) - { - assert(lconn->cn_flags == 1); - find_lsconn = conn_hash_find_by_cid(&conn_hash, &lconn->cn_cid); - assert(find_lsconn == lconn); - conn_hash_remove(&conn_hash, lconn); - lconn->cn_flags = 0; - find_lsconn = conn_hash_find_by_cid(&conn_hash, &lconn->cn_cid); - assert(!find_lsconn); - } - - assert(0 == conn_hash_count(&conn_hash)); - - conn_hash_cleanup(&conn_hash); - lsquic_malo_destroy(malo); - - exit(0); -} diff --git a/external/lsquic/tests/test_crypto_gen.c b/external/lsquic/tests/test_crypto_gen.c deleted file mode 100644 index 0fa3f64..0000000 --- a/external/lsquic/tests/test_crypto_gen.c +++ /dev/null @@ -1,143 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_parse.h" - - -struct test { - int lineno; - const struct parse_funcs * - pf; - uint64_t offset; - size_t avail; /* Space to write stream frame to */ - size_t min_sz; /* Minimum size needed to generate CRYPTO - * frame. Any sizes smaller than this - * should fail. - */ - size_t data_sz; - char data[0x100]; - - /* Output. This is how we expect the resulting frame to look. - */ - int len; /* Return value of pf_gen_crypto_frame() */ - char out[0x100]; -}; - -struct test_ctx { - const struct test *test; - unsigned off; -}; - - -static size_t -crypto_read (void *ctx, void *buf, size_t len, int *fin) -{ - struct test_ctx *test_ctx = ctx; - if (test_ctx->test->data_sz - test_ctx->off < len) - len = test_ctx->test->data_sz - test_ctx->off; - memcpy(buf, test_ctx->test->data, len); - test_ctx->off += len; - return len; -} - - -static void -init_ctx (struct test_ctx *test_ctx, const struct test *test) -{ - test_ctx->test = test; - test_ctx->off = 0; -} - - -static void -run_test (const struct test *const test) -{ - - int len; - size_t min; - struct test_ctx test_ctx; - unsigned char out[0x100]; - - if (test->len > 0) - { - /* Test that all sizes under specified min fail to produce a frame */ - for (min = 0; min < test->min_sz; ++min) - { - init_ctx(&test_ctx, test); - len = test->pf->pf_gen_crypto_frame(out, min, 0, test->offset, 0, - test->data_sz, crypto_read, &test_ctx); - assert(-1 == len); - } - - /* Test that it succeeds now: */ - init_ctx(&test_ctx, test); - len = test->pf->pf_gen_crypto_frame(out, min, 0, test->offset, 0, - test->data_sz, crypto_read, &test_ctx); - assert(len == (int) min); - } - - init_ctx(&test_ctx, test); - len = test->pf->pf_gen_crypto_frame(out, test->avail, 0, test->offset, 0, - test->data_sz, crypto_read, &test_ctx); - - if (test->len > 0) { - assert(test->len == len); - assert(0 == memcmp(test->out, out, test->len)); - } - else - { - assert(len < 0); - } -} - - -int -main (void) -{ - const struct test tests[] = { - - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_I001), - .offset = 0, - .data_sz = 10, - .data = "0123456789", - .avail = 0x100, - .out = - { /* Type */ 0x06, - /* Offset */ 0x00, - /* Size */ 0x0A, - /* Data */ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - }, - .len = 1 + 1 + 1 + 10, - .min_sz = 1 + 1 + 1 + 1, - }, - - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_I001), - .offset = 500, - .data_sz = 10, - .data = "0123456789", - .avail = 0x100, - .out = - { /* Type */ 0x06, - /* Offset */ 0x41, 0xF4, - /* Size */ 0x0A, - /* Data */ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - }, - .len = 1 + 2 + 1 + 10, - .min_sz = 1 + 2 + 1 + 1, - }, - - }; - - unsigned i; - for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) - run_test(&tests[i]); - return 0; -} diff --git a/external/lsquic/tests/test_cubic.c b/external/lsquic/tests/test_cubic.c deleted file mode 100644 index 295c1e3..0000000 --- a/external/lsquic/tests/test_cubic.c +++ /dev/null @@ -1,126 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#else -#include -#endif - -#include "lsquic.h" -#include "lsquic_int_types.h" -#include "lsquic_cong_ctl.h" -#include "lsquic_cubic.h" -#include "lsquic_logger.h" -#include "lsquic_hash.h" -#include "lsquic_conn.h" -#include "lsquic_sfcw.h" -#include "lsquic_conn_flow.h" -#include "lsquic_varint.h" -#include "lsquic_hq.h" -#include "lsquic_stream.h" -#include "lsquic_rtt.h" -#include "lsquic_conn_public.h" -#include "lsquic_packet_common.h" -#include "lsquic_packet_out.h" - -//static const struct cong_ctl_if *const cci = &lsquic_cong_cubic_if; // will not work on MSVC -#define cci ((const struct cong_ctl_if *const)&lsquic_cong_cubic_if) - -static void -test_post_quiescence_explosion (void) -{ - struct lsquic_cubic cubic; - lsquic_time_t const rtt = 10000; - lsquic_time_t t = 12345600; - struct lsquic_conn lconn = LSCONN_INITIALIZER_CIDLEN(lconn, 8); - struct lsquic_conn_public conn_pub = { .lconn = &lconn, }; - int i; - struct lsquic_packet_out packet_out; memset(&packet_out, 0, sizeof(packet_out)); - - cci->cci_init(&cubic, &conn_pub, 0); - cubic.cu_ssthresh = cubic.cu_cwnd = 32 * 1370; - - for (i = 0; i < 10; ++i) - { - packet_out.po_sent = t - rtt; - cci->cci_ack(&cubic, &packet_out, 1370, t, 0); - } - - assert(cci->cci_get_cwnd(&cubic) == 47026); - - t += 25 * 1000 * 1000; - cci->cci_was_quiet(&cubic, t, 0 /* bytes in flight (unused) */); - packet_out.po_sent = t - rtt; - cci->cci_ack(&cubic, &packet_out, 1370, t, 0); - assert(cci->cci_get_cwnd(&cubic) == 47060); - - t += 2 * 1000 * 1000; - packet_out.po_sent = t - rtt; - cci->cci_ack(&cubic, &packet_out, 1370, t, 0); -} - - -static void -test_post_quiescence_explosion2 (void) -{ - struct lsquic_cubic cubic; - lsquic_time_t const rtt = 10000; - lsquic_time_t t = 12345600; - struct lsquic_conn lconn = LSCONN_INITIALIZER_CIDLEN(lconn, 8); - struct lsquic_conn_public conn_pub = { .lconn = &lconn, }; - int i; - struct lsquic_packet_out packet_out; memset(&packet_out, 0, sizeof(packet_out)); - - cci->cci_init(&cubic, &conn_pub, 0); - cubic.cu_ssthresh = cubic.cu_cwnd = 32 * 1370; - - for (i = 0; i < 10; ++i) - { - packet_out.po_sent = t - rtt; - cci->cci_ack(&cubic, &packet_out, 1370, t, 1); - } - - assert(cci->cci_get_cwnd(&cubic) == 45300); - - t += 25 * 1000 * 1000; - cci->cci_was_quiet(&cubic, t, 0 /* bytes in flight (unused) */); - packet_out.po_sent = t - rtt; - cci->cci_ack(&cubic, &packet_out, 1370, t, 0); - assert(cci->cci_get_cwnd(&cubic) == 46754); - - t += 2 * 1000 * 1000; - packet_out.po_sent = t - rtt; - cci->cci_ack(&cubic, &packet_out, 1370, t, 1); -} - - - -int -main (int argc, char **argv) -{ - int opt; - - lsquic_log_to_fstream(stderr, LLTS_NONE); - - while (-1 != (opt = getopt(argc, argv, "l:"))) - { - switch (opt) - { - case 'l': - lsquic_logger_lopt(optarg); - break; - default: - exit(EXIT_FAILURE); - break; - } - } - - test_post_quiescence_explosion(); - test_post_quiescence_explosion2(); - - exit(EXIT_SUCCESS); -} diff --git a/external/lsquic/tests/test_dec.c b/external/lsquic/tests/test_dec.c deleted file mode 100644 index b48bd5b..0000000 --- a/external/lsquic/tests/test_dec.c +++ /dev/null @@ -1,82 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * test_dec.c -- Benchmark decryption using aligned and non-aligned buffers. - */ - -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#else -#include -#endif - -#include -#include - -#define MAX_SIZE 1400 - -int -main (int argc, char **argv) -{ - EVP_AEAD_CTX aead_ctx; - int opt, n = 1, r; - size_t sealed_len, opened_len; - unsigned char key[16]; - unsigned char data[1328]; - unsigned char sealed_buf[63 + MAX_SIZE], *sealed = sealed_buf; - unsigned char opened_buf[63 + MAX_SIZE], *opened = opened_buf; - - while (-1 != (opt = getopt(argc, argv, "an:"))) - { - switch (opt) - { - case 'a': - if ((uintptr_t) sealed & (64 - 1)) - sealed += 64 - ((uintptr_t) sealed & (64 - 1)); - if ((uintptr_t) opened & (64 - 1)) - opened += 64 - ((uintptr_t) opened & (64 - 1)); - break; - case 'n': /* Number of decrypt iterations */ - n = atoi(optarg); - break; - default: - exit(EXIT_FAILURE); - } - } - - RAND_bytes(key, sizeof(key)); - RAND_bytes(data, sizeof(data)); - - EVP_AEAD_CTX_init(&aead_ctx, EVP_aead_aes_128_gcm(), key, sizeof(key), - 12, NULL); - r = EVP_AEAD_CTX_seal(&aead_ctx, sealed, &sealed_len, MAX_SIZE, - key, sizeof(key), data, sizeof(data), NULL, 0); - if (!r) - { - fprintf(stderr, "cannot seal\n"); - exit(EXIT_FAILURE); - } - - printf("buffers are %saligned\n", ((uintptr_t) opened & (64 - 1)) || - ((uintptr_t) sealed & (64 - 1)) ? "not " : ""); - - /* Check that decryption works first time around */ - r = EVP_AEAD_CTX_open(&aead_ctx, opened, &opened_len, MAX_SIZE, - key, sizeof(key), sealed, sealed_len, NULL, 0); - assert(r && opened_len == sizeof(data) && - 0 == memcmp(data, opened, sizeof(data))); - --n; - - /* Do no bother checking return value in the loop */ - while (n-- > 0) - { - EVP_AEAD_CTX_open(&aead_ctx, opened, &opened_len, MAX_SIZE, - key, sizeof(key), sealed, sealed_len, NULL, 0); - } - - exit(EXIT_SUCCESS); -} diff --git a/external/lsquic/tests/test_di_nocopy.c b/external/lsquic/tests/test_di_nocopy.c deleted file mode 100644 index 441cbed..0000000 --- a/external/lsquic/tests/test_di_nocopy.c +++ /dev/null @@ -1,356 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * Test the "nocopy" data in stream - */ - -#include -#include -#include -#include -#ifdef WIN32 -#include "getopt.h" -#else -#include -#endif - -#include "lsquic.h" -#include "lsquic_int_types.h" -#include "lsquic_sfcw.h" -#include "lsquic_rtt.h" -#include "lsquic_conn_flow.h" -#include "lsquic_varint.h" -#include "lsquic_hq.h" -#include "lsquic_hash.h" -#include "lsquic_stream.h" -#include "lsquic_conn.h" -#include "lsquic_conn_public.h" -#include "lsquic_malo.h" -#include "lsquic_packet_common.h" -#include "lsquic_packet_in.h" -#include "lsquic_packet_out.h" -#include "lsquic_mm.h" -#include "lsquic_logger.h" -#include "lsquic_data_in_if.h" - - -struct nocopy_test -{ - int lineno; - - /* Setup: initial set of frames to insert and read until some offset */ - unsigned n_init_frames; - struct data_frame initial_frames[5]; - unsigned read_until; - - /* Test: data frame to insert and expected insert result */ - struct data_frame data_frame; - enum ins_frame ins; -}; - - -#define F(off, size, fin) { .df_offset = (off), .df_fin = (fin), .df_size = (size), } - -static const struct nocopy_test tests[] = -{ - - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(0, 300, 0), }, - .read_until = 300, - .data_frame = F(200, 100, 0), - .ins = INS_FRAME_DUP, - }, - - { .lineno = __LINE__, - .n_init_frames = 2, - .initial_frames = { F(0, 300, 0), F(300, 100, 0), }, - .read_until = 300, - .data_frame = F(200, 100, 0), - .ins = INS_FRAME_DUP, - }, - - { .lineno = __LINE__, - .n_init_frames = 2, - .initial_frames = { F(0, 300, 0), F(300, 0, 1), }, - .read_until = 300, - .data_frame = F(200, 100, 1), - .ins = INS_FRAME_DUP, - }, - - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(0, 301, 0), }, - .read_until = 301, - .data_frame = F(200, 100, 1), - .ins = INS_FRAME_ERR, - }, - - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(0, 400, 0), }, - .read_until = 301, - .data_frame = F(200, 100, 0), - .ins = INS_FRAME_DUP, - }, - - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(200, 100, 1), }, - .read_until = 0, - .data_frame = F(200, 50, 1), - .ins = INS_FRAME_ERR, - }, - - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(200, 100, 1), }, - .read_until = 0, - .data_frame = F(200, 150, 1), - .ins = INS_FRAME_ERR, - }, - - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(200, 100, 1), }, - .read_until = 0, - .data_frame = F(200, 101, 0), - .ins = INS_FRAME_ERR, - }, - - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(200, 100, 1), }, - .read_until = 0, - .data_frame = F(500, 1, 0), - .ins = INS_FRAME_ERR, - }, - - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(0, 100, 0), }, - .read_until = 100, - .data_frame = F(0, 100, 1), - .ins = INS_FRAME_OVERLAP, - }, - - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(0, 100, 1), }, - .read_until = 100, - .data_frame = F(0, 100, 1), - .ins = INS_FRAME_DUP, - }, - - /* TODO: Case 'F' and 'L' -- remove "case 'F'" */ - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(0, 100, 0), }, - .read_until = 100, - .data_frame = F(0, 100, 0), - .ins = INS_FRAME_DUP, - }, - - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(0, 100, 1), }, - .read_until = 10, - .data_frame = F(0, 100, 0), - .ins = INS_FRAME_DUP, - }, - - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(0, 100, 0), }, - .read_until = 10, - .data_frame = F(0, 100, 1), - .ins = INS_FRAME_OVERLAP, - }, - - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(0, 100, 0), }, - .read_until = 100, - .data_frame = F(100, 0, 0), - .ins = INS_FRAME_DUP, - }, - - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(0, 100, 0), }, - .read_until = 0, - .data_frame = F(50, 100, 0), - .ins = INS_FRAME_OVERLAP, - }, - - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(0, 100, 1), }, - .read_until = 0, - .data_frame = F(50, 100, 0), - .ins = INS_FRAME_ERR, - }, - - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(100, 100, 0), }, - .read_until = 0, - .data_frame = F(50, 100, 0), - .ins = INS_FRAME_OVERLAP, - }, - - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(100, 100, 0), }, - .read_until = 0, - .data_frame = F(50, 100, 1), - .ins = INS_FRAME_OVERLAP, /* This is really an error, - * but we ignore it. - */ - }, - - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(100, 100, 1), }, - .read_until = 0, - .data_frame = F(50, 100, 0), - .ins = INS_FRAME_OVERLAP, - }, - - { .lineno = __LINE__, - .n_init_frames = 1, - .initial_frames = { F(0, 100, 1), }, - .read_until = 60, - .data_frame = F(50, 2, 0), - .ins = INS_FRAME_DUP, - }, - - { .lineno = __LINE__, - .n_init_frames = 2, - .initial_frames = { F(0, 100, 0), F(200, 100, 0), }, - .read_until = 0, - .data_frame = F(50, 200, 0), - .ins = INS_FRAME_OVERLAP, - }, - - { .lineno = __LINE__, - .n_init_frames = 2, - .initial_frames = { F(0, 100, 0), F(200, 100, 0), }, - .read_until = 0, - .data_frame = F(100, 100, 0), - .ins = INS_FRAME_OK, - }, - - { .lineno = __LINE__, - .n_init_frames = 2, - .initial_frames = { F(0, 100, 0), F(200, 100, 0), }, - .read_until = 0, - .data_frame = F(100, 100, 1), - .ins = INS_FRAME_OK, /* Ignore another error */ - }, - - { .lineno = __LINE__, - .n_init_frames = 2, - .initial_frames = { F(0, 60, 0), F(60, 60, 0), }, - .read_until = 120, - .data_frame = F(0, 180, 0), - .ins = INS_FRAME_OVERLAP, - }, - - { .lineno = __LINE__, - .n_init_frames = 3, - .initial_frames = { F(0, 60, 0), F(60, 60, 0), F(180, 60, 0), }, - .read_until = 120, - .data_frame = F(0, 180, 0), - .ins = INS_FRAME_OVERLAP, - }, - -}; - - -static void -run_di_nocopy_test (const struct nocopy_test *test) -{ - struct lsquic_mm mm; - struct lsquic_conn_public conn_pub; - struct lsquic_conn conn; - struct stream_frame *frame; - struct data_in *di; - struct data_frame *data_frame; - enum ins_frame ins; - unsigned i; - unsigned nread, n_to_read; - - LSQ_NOTICE("running test on line %d", test->lineno); - - lsquic_mm_init(&mm); - memset(&conn, 0, sizeof(conn)); - conn_pub.lconn = &conn; - conn_pub.mm = &mm; - - di = lsquic_data_in_nocopy_new(&conn_pub, 3); - - for (i = 0; i < test->n_init_frames; ++i) - { - frame = lsquic_malo_get(mm.malo.stream_frame); - frame->packet_in = lsquic_mm_get_packet_in(&mm); - frame->packet_in->pi_refcnt = 1; - frame->data_frame = test->initial_frames[i]; - ins = di->di_if->di_insert_frame(di, frame, 0); - assert(INS_FRAME_OK == ins); /* Self-test */ - } - - nread = 0; - while (nread < test->read_until) - { - data_frame = di->di_if->di_get_frame(di, nread); - assert(data_frame); /* Self-check */ - n_to_read = test->read_until - nread > (unsigned) data_frame->df_size - data_frame->df_read_off - ? (unsigned) data_frame->df_size - data_frame->df_read_off : test->read_until - nread; - data_frame->df_read_off += n_to_read; - nread += n_to_read; - if (data_frame->df_read_off == data_frame->df_size) - di->di_if->di_frame_done(di, data_frame); - else - { - assert(nread == test->read_until); - break; - } - } - - frame = lsquic_malo_get(mm.malo.stream_frame); - frame->packet_in = lsquic_mm_get_packet_in(&mm); - frame->packet_in->pi_refcnt = 1; - frame->data_frame = test->data_frame; - ins = di->di_if->di_insert_frame(di, frame, test->read_until); - assert(test->ins == ins); - - di->di_if->di_destroy(di); - lsquic_mm_cleanup(&mm); -} - - -int -main (int argc, char **argv) -{ - const struct nocopy_test *test; - int opt; - - lsquic_log_to_fstream(stderr, LLTS_NONE); - - while (-1 != (opt = getopt(argc, argv, "l:"))) - { - switch (opt) - { - case 'l': - lsquic_logger_lopt(optarg); - break; - default: - return 1; - } - } - - for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) - run_di_nocopy_test(test); - - return 0; -} diff --git a/external/lsquic/tests/test_elision.c b/external/lsquic/tests/test_elision.c deleted file mode 100644 index e6bef80..0000000 --- a/external/lsquic/tests/test_elision.c +++ /dev/null @@ -1,420 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include -#include - -#include "lsquic.h" - -#include "lsquic_int_types.h" -#include "lsquic_packet_common.h" -#include "lsquic_packet_gquic.h" -#include "lsquic_packet_out.h" -#include "lsquic_parse.h" -#include "lsquic_conn_flow.h" -#include "lsquic_sfcw.h" -#include "lsquic_varint.h" -#include "lsquic_hq.h" -#include "lsquic_hash.h" -#include "lsquic_stream.h" -#include "lsquic_types.h" -#include "lsquic_malo.h" -#include "lsquic_mm.h" -#include "lsquic_engine_public.h" -#include "lsquic_logger.h" - - -//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC -#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) - -static struct { - unsigned char buf[0x1000]; - size_t bufsz; - uint64_t off; -} stream_contents; - - -void -setup_stream_contents (uint64_t off, const char *str) -{ - stream_contents.bufsz = strlen(str); - stream_contents.off = off; - memcpy(stream_contents.buf, str, stream_contents.bufsz); -} - - -void -setup_stream_contents_n (uint64_t off, const unsigned char *buf, size_t size) -{ - stream_contents.bufsz = size; - stream_contents.off = off; - memcpy(stream_contents.buf, buf, size); -} - - -int -lsquic_stream_tosend_fin (const lsquic_stream_t *stream) -{ - return 0; -} - - -uint64_t -lsquic_stream_tosend_offset (const lsquic_stream_t *stream) -{ - return stream_contents.off; -} - - -size_t -lsquic_stream_tosend_read (lsquic_stream_t *stream, void *buf, size_t len, - int *reached_fin) -{ - if (stream_contents.bufsz < len) - len = stream_contents.bufsz; - memcpy(buf, stream_contents.buf, len); - *reached_fin = lsquic_stream_tosend_fin(stream); - return len; -} - - -size_t -lsquic_stream_tosend_sz (const lsquic_stream_t *stream) -{ - return stream_contents.bufsz; -} - - -void -lsquic_stream_acked (lsquic_stream_t *stream, enum quic_frame_type frame_type) -{ - --stream->n_unacked; -} - - -static void -elide_single_stream_frame (void) -{ - struct packet_out_frec_iter pofi; - struct lsquic_engine_public enpub; - lsquic_stream_t streams[1]; - lsquic_packet_out_t *packet_out; - int len, off = 0; - - memset(streams, 0, sizeof(streams)); - memset(&enpub, 0, sizeof(enpub)); - lsquic_mm_init(&enpub.enp_mm); - packet_out = lsquic_mm_get_packet_out(&enpub.enp_mm, NULL, GQUIC_MAX_PAYLOAD_SZ); - - setup_stream_contents(123, "Dude, where is my car?"); - len = pf->pf_gen_stream_frame(packet_out->po_data + packet_out->po_data_sz, - lsquic_packet_out_avail(packet_out), - streams[0].id, lsquic_stream_tosend_offset(&streams[0]), - lsquic_stream_tosend_fin(&streams[0]), - lsquic_stream_tosend_sz(&streams[0]), - (gsf_read_f) lsquic_stream_tosend_read, - &streams[0]); - packet_out->po_data_sz += len; - packet_out->po_frame_types |= (1 << QUIC_FRAME_STREAM); - lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[0], - QUIC_FRAME_STREAM, off, len); - assert(1 == streams[0].n_unacked); - assert(lsquic_pofi_first(&pofi, packet_out)); - - streams[0].stream_flags |= STREAM_RST_SENT; - - lsquic_packet_out_elide_reset_stream_frames(packet_out, UINT64_MAX); - assert(0 == streams[0].n_unacked); - assert(0 == packet_out->po_frame_types); - assert(!lsquic_pofi_first(&pofi, packet_out)); - - lsquic_packet_out_destroy(packet_out, &enpub, NULL); - lsquic_mm_cleanup(&enpub.enp_mm); -} - - -/* In this test, we check that if the last STREAM frame is moved due to - * elision and PO_STREAM_END is set, the packet size is adjusted. This - * is needed to prevent data corruption for STREAM frames that have - * implicit length. - */ -static void -shrink_packet_post_elision (void) -{ - struct packet_out_frec_iter pofi; - struct lsquic_engine_public enpub; - lsquic_stream_t streams[2]; - lsquic_packet_out_t *packet_out; - const struct frame_rec *frec; - int len, off = 0; - unsigned char stream2_data[0x1000]; - - memset(stream2_data, '2', sizeof(stream2_data)); - memset(streams, 0, sizeof(streams)); - memset(&enpub, 0, sizeof(enpub)); - lsquic_mm_init(&enpub.enp_mm); - packet_out = lsquic_mm_get_packet_out(&enpub.enp_mm, NULL, GQUIC_MAX_PAYLOAD_SZ); - - setup_stream_contents(123, "Dude, where is my car?"); - len = pf->pf_gen_stream_frame(packet_out->po_data + packet_out->po_data_sz, - lsquic_packet_out_avail(packet_out), - streams[0].id, lsquic_stream_tosend_offset(&streams[0]), - lsquic_stream_tosend_fin(&streams[0]), - lsquic_stream_tosend_sz(&streams[0]), - (gsf_read_f) lsquic_stream_tosend_read, - &streams[0]); - packet_out->po_data_sz += len; - packet_out->po_frame_types |= (1 << QUIC_FRAME_STREAM); - lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[0], - QUIC_FRAME_STREAM, off, len); - - /* We want to fill the packet just right so that PO_STREAM_END gets set */ - const int exp = lsquic_packet_out_avail(packet_out); - setup_stream_contents_n(0, stream2_data, exp - 2); - len = pf->pf_gen_stream_frame(packet_out->po_data + packet_out->po_data_sz, - lsquic_packet_out_avail(packet_out), - streams[1].id, lsquic_stream_tosend_offset(&streams[1]), - lsquic_stream_tosend_fin(&streams[1]), - lsquic_stream_tosend_sz(&streams[1]), - (gsf_read_f) lsquic_stream_tosend_read, - &streams[1]); - assert(len == exp); - packet_out->po_data_sz += len; - packet_out->po_frame_types |= (1 << QUIC_FRAME_STREAM); - lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[1], - QUIC_FRAME_STREAM, off, len); - assert(0 == lsquic_packet_out_avail(packet_out)); /* Same as len == exp check really */ - packet_out->po_flags |= PO_STREAM_END; - - assert(1 == streams[0].n_unacked); - assert(1 == streams[1].n_unacked); - assert(lsquic_pofi_first(&pofi, packet_out)); - - streams[0].stream_flags |= STREAM_RST_SENT; - - lsquic_packet_out_elide_reset_stream_frames(packet_out, UINT64_MAX); - assert(0 == streams[0].n_unacked); - - assert(QUIC_FTBIT_STREAM == packet_out->po_frame_types); - frec = lsquic_pofi_first(&pofi, packet_out); - assert(frec->fe_stream == &streams[1]); - assert(packet_out->po_data_sz == exp); - - lsquic_packet_out_destroy(packet_out, &enpub, NULL); - lsquic_mm_cleanup(&enpub.enp_mm); -} - - -/* This test is more involved. We will construct the following packet: - * - * | ACK | STREAM A | STREAM B | STREAM C | RST A | STREAM D | STREAM E - * - * and elide STREAM A, STREAM C, and STREAM E to get - * - * | ACK | STREAM B | RST A | STREAM D | - * - * If `chop_regen' is set, ACK is dropped (this tests what happens when - * packet is resent). - * - * This should test most of the corner cases. - */ -static void -elide_three_stream_frames (int chop_regen) -{ - struct packet_out_frec_iter pofi; - struct lsquic_engine_public enpub; - lsquic_stream_t streams[5]; - lsquic_packet_out_t *packet_out, *ref_out; - struct frame_rec *frec; - unsigned short b_off, d_off; - int len; - - memset(streams, 0, sizeof(streams)); - memset(&enpub, 0, sizeof(enpub)); - lsquic_mm_init(&enpub.enp_mm); - - /* First, we construct the reference packet. We will only use it to - * compare payload and sizes: - */ - { - ref_out = lsquic_mm_get_packet_out(&enpub.enp_mm, NULL, GQUIC_MAX_PAYLOAD_SZ); - /* This is fake data for regeneration */ - strcpy((char *) ref_out->po_data, "REGEN"); - lsquic_packet_out_add_frame(ref_out, &enpub.enp_mm, 0, - QUIC_FRAME_ACK, ref_out->po_data_sz, 5); - ref_out->po_data_sz = ref_out->po_regen_sz = 5; - /* STREAM B */ - setup_stream_contents(123, "BBBBBBBBBB"); - streams[0].id = 'B'; - len = pf->pf_gen_stream_frame(ref_out->po_data + ref_out->po_data_sz, - lsquic_packet_out_avail(ref_out), - streams[0].id, lsquic_stream_tosend_offset(&streams[0]), - lsquic_stream_tosend_fin(&streams[0]), - lsquic_stream_tosend_sz(&streams[0]), - (gsf_read_f) lsquic_stream_tosend_read, - &streams[0]); - b_off = ref_out->po_data_sz; - ref_out->po_data_sz += len; - len = pf->pf_gen_rst_frame(ref_out->po_data + ref_out->po_data_sz, - lsquic_packet_out_avail(ref_out), 'A', 133, 0); - ref_out->po_data_sz += len; - /* STREAM D */ - setup_stream_contents(123, "DDDDDDDDDD"); - streams[0].id = 'D'; - len = pf->pf_gen_stream_frame(ref_out->po_data + ref_out->po_data_sz, - lsquic_packet_out_avail(ref_out), - streams[0].id, lsquic_stream_tosend_offset(&streams[0]), - lsquic_stream_tosend_fin(&streams[0]), - lsquic_stream_tosend_sz(&streams[0]), - (gsf_read_f) lsquic_stream_tosend_read, - &streams[0]); - d_off = ref_out->po_data_sz; - ref_out->po_data_sz += len; - } - - /* Construct packet from which we will elide streams. Here, we attach - * stream objects to the packet. - */ - { - packet_out = lsquic_mm_get_packet_out(&enpub.enp_mm, NULL, GQUIC_MAX_PAYLOAD_SZ); - /* This is fake data for regeneration */ - strcpy((char *) packet_out->po_data, "REGEN"); - lsquic_packet_out_add_frame(packet_out, &enpub.enp_mm, 0, - QUIC_FRAME_ACK, packet_out->po_data_sz, 5); - packet_out->po_data_sz = packet_out->po_regen_sz = 5; - /* STREAM A */ - setup_stream_contents(123, "AAAAAAAAAA"); - streams[0].id = 'A'; - len = pf->pf_gen_stream_frame(packet_out->po_data + packet_out->po_data_sz, - lsquic_packet_out_avail(packet_out), - streams[0].id, lsquic_stream_tosend_offset(&streams[0]), - lsquic_stream_tosend_fin(&streams[0]), - lsquic_stream_tosend_sz(&streams[0]), - (gsf_read_f) lsquic_stream_tosend_read, - &streams[0]); - lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[0], - QUIC_FRAME_STREAM, packet_out->po_data_sz, len); - packet_out->po_data_sz += len; - /* STREAM B */ - setup_stream_contents(123, "BBBBBBBBBB"); - streams[1].id = 'B'; - len = pf->pf_gen_stream_frame(packet_out->po_data + packet_out->po_data_sz, - lsquic_packet_out_avail(packet_out), - streams[1].id, lsquic_stream_tosend_offset(&streams[1]), - lsquic_stream_tosend_fin(&streams[1]), - lsquic_stream_tosend_sz(&streams[1]), - (gsf_read_f) lsquic_stream_tosend_read, - &streams[1]); - lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[1], - QUIC_FRAME_STREAM, packet_out->po_data_sz, len); - packet_out->po_data_sz += len; - /* STREAM C */ - setup_stream_contents(123, "CCCCCCCCCC"); - streams[2].id = 'C'; - len = pf->pf_gen_stream_frame(packet_out->po_data + packet_out->po_data_sz, - lsquic_packet_out_avail(packet_out), - streams[2].id, lsquic_stream_tosend_offset(&streams[2]), - lsquic_stream_tosend_fin(&streams[2]), - lsquic_stream_tosend_sz(&streams[2]), - (gsf_read_f) lsquic_stream_tosend_read, - &streams[2]); - lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[2], - QUIC_FRAME_STREAM, packet_out->po_data_sz, len); - packet_out->po_data_sz += len; - /* Reset A */ - len = pf->pf_gen_rst_frame(packet_out->po_data + packet_out->po_data_sz, - lsquic_packet_out_avail(packet_out), 'A', 133, 0); - lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[0], - QUIC_FRAME_RST_STREAM, packet_out->po_data_sz, len); - packet_out->po_data_sz += len; - /* STREAM D */ - setup_stream_contents(123, "DDDDDDDDDD"); - streams[3].id = 'D'; - len = pf->pf_gen_stream_frame(packet_out->po_data + packet_out->po_data_sz, - lsquic_packet_out_avail(packet_out), - streams[3].id, lsquic_stream_tosend_offset(&streams[3]), - lsquic_stream_tosend_fin(&streams[3]), - lsquic_stream_tosend_sz(&streams[3]), - (gsf_read_f) lsquic_stream_tosend_read, - &streams[3]); - lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[3], - QUIC_FRAME_STREAM, packet_out->po_data_sz, len); - packet_out->po_data_sz += len; - /* STREAM E */ - setup_stream_contents(123, "EEEEEEEEEE"); - streams[4].id = 'E'; - len = pf->pf_gen_stream_frame(packet_out->po_data + packet_out->po_data_sz, - lsquic_packet_out_avail(packet_out), - streams[4].id, lsquic_stream_tosend_offset(&streams[4]), - lsquic_stream_tosend_fin(&streams[4]), - lsquic_stream_tosend_sz(&streams[4]), - (gsf_read_f) lsquic_stream_tosend_read, - &streams[4]); - lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[4], - QUIC_FRAME_STREAM, packet_out->po_data_sz, len); - packet_out->po_data_sz += len; - packet_out->po_frame_types = (1 << QUIC_FRAME_STREAM) | (1 << QUIC_FRAME_RST_STREAM); - } - - /* Reset streams A, C, and E: */ - streams[0].stream_flags |= STREAM_RST_SENT; - streams[2].stream_flags |= STREAM_RST_SENT; - streams[4].stream_flags |= STREAM_RST_SENT; - - if (chop_regen) - lsquic_packet_out_chop_regen(packet_out); - lsquic_packet_out_elide_reset_stream_frames(packet_out, UINT64_MAX); - - assert(ref_out->po_data_sz == packet_out->po_data_sz + (chop_regen ? 5 : 0)); - assert(ref_out->po_regen_sz == packet_out->po_regen_sz + (chop_regen ? 5 : 0)); - if (chop_regen) - assert(0 == memcmp(ref_out->po_data + 5, packet_out->po_data, packet_out->po_data_sz)); - else - assert(0 == memcmp(ref_out->po_data, packet_out->po_data, packet_out->po_data_sz)); - - assert(1 == streams[0].n_unacked); /* Still has RST outstanding */ - assert(1 == streams[1].n_unacked); - assert(0 == streams[2].n_unacked); - assert(1 == streams[3].n_unacked); - assert(0 == streams[4].n_unacked); - - assert(packet_out->po_frame_types == ((1 << QUIC_FRAME_STREAM) | (1 << QUIC_FRAME_RST_STREAM))); - - frec = lsquic_pofi_first(&pofi, packet_out); - if (!chop_regen) - frec = lsquic_pofi_next(&pofi); - assert(frec->fe_stream == &streams[1]); - assert(frec->fe_frame_type == QUIC_FRAME_STREAM); - assert(frec->fe_off == b_off - (chop_regen ? 5 : 0)); - - frec = lsquic_pofi_next(&pofi); - assert(frec->fe_stream == &streams[0]); - assert(frec->fe_frame_type == QUIC_FRAME_RST_STREAM); - - frec = lsquic_pofi_next(&pofi); - assert(frec->fe_stream == &streams[3]); - assert(frec->fe_frame_type == QUIC_FRAME_STREAM); - assert(frec->fe_off == d_off - (chop_regen ? 5 : 0)); - - frec = lsquic_pofi_next(&pofi); - assert(!frec); - - lsquic_packet_out_destroy(packet_out, &enpub, NULL); - lsquic_packet_out_destroy(ref_out, &enpub, NULL); - lsquic_mm_cleanup(&enpub.enp_mm); -} - - -int -main (void) -{ - /* TODO-ENDIAN: test with every PF */ - elide_single_stream_frame(); - shrink_packet_post_elision(); - elide_three_stream_frames(0); - elide_three_stream_frames(1); - - return 0; -} diff --git a/external/lsquic/tests/test_engine_ctor.c b/external/lsquic/tests/test_engine_ctor.c deleted file mode 100644 index 5e9f677..0000000 --- a/external/lsquic/tests/test_engine_ctor.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include - -#include "lsquic.h" - - -int -main (void) -{ - struct lsquic_engine_settings settings; - lsquic_engine_t *engine; - unsigned versions; - const unsigned flags = LSENG_SERVER; - - lsquic_engine_init_settings(&settings, flags); - - struct lsquic_engine_api api; - memset(&api, 0, sizeof(api)); - api.ea_settings = &settings; - api.ea_packets_out = (void *) (uintptr_t) 1; - api.ea_stream_if = (void *) (uintptr_t) 2; - - engine = lsquic_engine_new(flags, &api); - assert(engine); - versions = lsquic_engine_quic_versions(engine); - assert(versions == settings.es_versions); - lsquic_engine_destroy(engine); - - settings.es_versions |= (1 << N_LSQVER /* Invalid value by definition */); - engine = lsquic_engine_new(flags, &api); - assert(!engine); - - return 0; -} diff --git a/external/lsquic/tests/test_export_key.c b/external/lsquic/tests/test_export_key.c deleted file mode 100644 index 7e0de9c..0000000 --- a/external/lsquic/tests/test_export_key.c +++ /dev/null @@ -1,477 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include - -#include - -#include "lsquic_crypto.h" - -#ifdef WIN32 -#pragma warning(disable:4295 4245) //4295: array is too small to include a terminating null character, 4245:initializing': conversion from 'int' to 'unsigned char', signed/unsigned mismatch -#endif - -struct export_key_test -{ - /* Line number for easy verification: */ - int ekt_lineno; - /* Input: */ - size_t ekt_ikm_sz, - ekt_salt_sz, - ekt_context_sz; - unsigned char ekt_ikm[0x20], - ekt_salt[0x60], - ekt_context[0x1000]; - size_t ekt_server_key_sz, - ekt_server_iv_sz, - ekt_client_key_sz, - ekt_client_iv_sz; - /* Output: */ - unsigned char ekt_server_key[32], - ekt_client_key[32], - ekt_server_iv[4], - ekt_client_iv[4]; -}; - - -static const struct export_key_test tests[] = { - -#define BUF_PAIR(name, buf) .ekt_##name = buf, .ekt_##name##_sz = sizeof(buf) - 1 - -/* Convert using - * sed '/^0x/{s/0x....: /"/; s~ .*~"~; s/ /\\x/g}' - */ - -/* -[0112/144512.438811:VERBOSE4:hkdf.cc(87)] secret: -0x0000: 73 65 63 72 65 74 secret - -[0112/144512.438876:VERBOSE4:hkdf.cc(88)] salt: -0x0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -0x0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - -[0112/144512.438916:VERBOSE4:hkdf.cc(89)] info: -0x0000: 51 55 49 43 20 73 6f 75 72 63 65 20 61 64 64 72 QUIC.source.addr -0x0010: 65 73 73 20 74 6f 6b 65 6e 20 6b 65 79 ess.token.key - -[0112/144512.438983:VERBOSE4:hkdf.cc(103)] PRK: -0x0000: 18 10 e8 d3 41 b9 e6 1e 88 89 5f ba 0b 1a a2 bd ....A....._..... -0x0010: 03 cb 6c 8f ff 2b 36 8e 66 6e f8 ef de f5 b4 fb ..l..+6.fn...... - -[0112/144512.439042:VERBOSE4:hkdf.cc(149)] client key: -0x0000: 59 58 f5 06 ac 1f f9 e6 2d 0b f9 77 df 05 c9 35 YX......-..w...5 - -[0112/144512.439076:VERBOSE4:hkdf.cc(156)] server key: -0x0000: 45 ca 99 4a 40 bc e3 3b 32 16 59 51 98 36 d4 21 E..J@..;2.YQ.6.! - */ - { - .ekt_lineno = __LINE__, - .ekt_ikm = "secret", - .ekt_ikm_sz = 6, - BUF_PAIR(salt, - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - ), - BUF_PAIR(context, "QUIC source address token key"), - BUF_PAIR(client_key, - "\x59\x58\xf5\x06\xac\x1f\xf9\xe6\x2d\x0b\xf9\x77\xdf\x05\xc9\x35" - ), - BUF_PAIR(server_key, - "\x45\xca\x99\x4a\x40\xbc\xe3\x3b\x32\x16\x59\x51\x98\x36\xd4\x21" - ), - }, - -/* -[0112/144522.376235:VERBOSE4:hkdf.cc(87)] secret: -0x0000: ab 62 c8 e1 03 63 b5 4e b9 c5 e4 f1 d9 47 ed 60 .b...c.N.....G.` -0x0010: 43 2f 3b c2 27 c3 2c 51 e7 7f e7 4b 5e a4 08 29 C/;.'.,Q...K^..) - -[0112/144522.376323:VERBOSE4:hkdf.cc(88)] salt: -0x0000: 58 77 dc d2 a5 d0 b3 7f 65 c3 cd 6b 03 a7 34 53 Xw......e..k..4S -0x0010: d7 8b 6e 56 3c a0 22 a2 ab 7a 1e 4c 40 e9 cf d6 ..nV<."..z.L@... -0x0020: 02 2e ef d3 08 bc d1 be cb 70 f1 92 8e ec 27 7b .........p....'{ -0x0030: b6 b5 27 ce ea 43 7d c2 34 b7 be 44 a3 89 70 9a ..'..C}.4..D..p. -0x0040: 62 65 46 fa e5 86 44 04 fb 66 22 2d 7c 07 b8 b8 beF...D..f"-|... - -[0112/144522.376423:VERBOSE4:hkdf.cc(89)] info: -0x0000: 51 55 49 43 20 6b 65 79 20 65 78 70 61 6e 73 69 QUIC.key.expansi -0x0010: 6f 6e 00 a8 9f 60 a0 05 e6 1a 02 43 48 4c 4f 18 on...`.....CHLO. -0x0020: 00 00 00 50 41 44 00 01 02 00 00 53 4e 49 00 10 ...PAD.....SNI.. -0x0030: 02 00 00 53 54 4b 00 44 02 00 00 53 4e 4f 00 74 ...STK.D...SNO.t -0x0040: 02 00 00 56 45 52 00 78 02 00 00 43 43 53 00 88 ...VER.x...CCS.. -0x0050: 02 00 00 4e 4f 4e 43 a8 02 00 00 4d 53 50 43 ac ...NONC....MSPC. -0x0060: 02 00 00 41 45 41 44 b0 02 00 00 53 43 49 44 c0 ...AEAD....SCID. -0x0070: 02 00 00 50 44 4d 44 c4 02 00 00 53 4d 48 4c c8 ...PDMD....SMHL. -0x0080: 02 00 00 49 43 53 4c cc 02 00 00 43 54 49 4d d4 ...ICSL....CTIM. -0x0090: 02 00 00 4e 4f 4e 50 f4 02 00 00 50 55 42 53 14 ...NONP....PUBS. -0x00a0: 03 00 00 4d 49 44 53 18 03 00 00 53 43 4c 53 1c ...MIDS....SCLS. -0x00b0: 03 00 00 4b 45 58 53 20 03 00 00 58 4c 43 54 28 ...KEXS....XLCT( -0x00c0: 03 00 00 43 53 43 54 28 03 00 00 43 43 52 54 30 ...CSCT(...CCRT0 -0x00d0: 03 00 00 43 46 43 57 34 03 00 00 53 46 43 57 38 ...CFCW4...SFCW8 -0x00e0: 03 00 00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ...------------- -0x00f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0100: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0110: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0120: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0130: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0140: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0150: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0160: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0170: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0180: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0190: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x01a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x01b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x01c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x01d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x01e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x01f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0210: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0220: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0230: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0240: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0250: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0260: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0270: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x0290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x02a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x02b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x02c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x02d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- -0x02e0: 2d 2d 2d 2d 77 77 77 2e 65 78 61 6d 70 6c 65 2e ----www.example. -0x02f0: 6f 72 67 2f 22 e6 5d e0 f8 78 94 5a 23 2d ba b4 org/".]..x.Z#-.. -0x0300: d7 e8 aa 1a 46 21 20 20 94 7f 0d 7a 5e 2e 41 98 ....F!.....z^.A. -0x0310: 66 0e 44 88 eb f3 41 c5 b1 e2 65 a7 38 01 3c 2c f.D...A...e.8.<, -0x0320: 0d eb 00 2b 73 48 da 02 2e ef d3 08 bc d1 be cb ...+sH.......... -0x0330: 70 f1 92 8e ec 27 7b b6 b5 27 ce ea 43 7d c2 34 p....'{..'..C}.4 -0x0340: b7 be 44 a3 89 70 9a 62 65 46 fa e5 86 44 04 fb ..D..p.beF...D.. -0x0350: 66 22 2d 7c 07 b8 b8 51 30 33 37 01 e8 81 60 92 f"-|...Q037...`. -0x0360: 92 1a e8 7e ed 80 86 a2 15 82 91 58 77 dc d2 a5 ...~.......Xw... -0x0370: d0 b3 7f 65 c3 cd 6b 03 a7 34 53 d7 8b 6e 56 3c ...e..k..4S..nV< -0x0380: a0 22 a2 ab 7a 1e 4c 40 e9 cf d6 64 00 00 00 43 ."..z.L@...d...C -0x0390: 43 32 30 08 68 02 10 36 fa fb 68 b3 8a aa a4 e7 C20.h..6..h..... -0x03a0: 96 41 ca 58 35 30 39 01 00 00 00 58 02 00 00 d2 .A.X509....X.... -0x03b0: dc 77 58 00 00 00 00 2d c8 07 0e 2a 4b 39 15 ae .wX....-...*K9.. -0x03c0: 98 1f 5c b1 6f ac 77 0e f7 ea dd 57 93 8b 38 f2 ..\.o.w....W..8. -0x03d0: 8a 45 f5 d3 01 c1 9b a5 79 21 45 36 4f c6 f6 83 .E......y!E6O... -0x03e0: bc ba 1d e5 06 c1 8e 69 4c b6 e2 99 35 17 a1 ca .......iL...5... -0x03f0: f0 d2 82 d9 a5 b0 3e 64 00 00 00 01 00 00 00 43 ......>d.......C -0x0400: 32 35 35 b4 e2 9f fc ab 17 f2 4a b4 e2 9f fc ab 255.......J..... -0x0410: 17 f2 4a 00 00 f0 00 00 00 60 00 53 43 46 47 06 ..J......`.SCFG. -0x0420: 00 00 00 41 45 41 44 08 00 00 00 53 43 49 44 18 ...AEAD....SCID. -0x0430: 00 00 00 50 55 42 53 3b 00 00 00 4b 45 58 53 3f ...PUBS;...KEXS? -0x0440: 00 00 00 4f 42 49 54 47 00 00 00 45 58 50 59 4f ...OBITG...EXPYO -0x0450: 00 00 00 41 45 53 47 43 43 32 30 08 68 02 10 36 ...AESGCC20.h..6 -0x0460: fa fb 68 b3 8a aa a4 e7 96 41 ca 20 00 00 f6 00 ..h......A...... -0x0470: dd 9e 3e 30 4f d9 fb 26 77 4e ce 35 79 6d 98 6d ..>0O..&wN.5ym.m -0x0480: 9a e6 a5 19 c0 b8 72 66 cd 46 b1 b6 90 4a 43 32 ......rf.F...JC2 -0x0490: 35 35 a5 d0 b3 7f 65 c3 cd 6b c8 2a 65 59 00 00 55....e..k.*eY.. -0x04a0: 00 00 30 82 03 b4 30 82 02 9c a0 03 02 01 02 02 ..0...0......... -0x04b0: 01 01 30 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 ..0...*.H....... -0x04c0: 00 30 1e 31 1c 30 1a 06 03 55 04 03 0c 13 51 55 .0.1.0...U....QU -0x04d0: 49 43 20 53 65 72 76 65 72 20 52 6f 6f 74 20 43 IC.Server.Root.C -0x04e0: 41 30 1e 17 0d 31 36 31 32 32 32 32 31 32 39 30 A0...16122221290 -0x04f0: 34 5a 17 0d 31 36 31 32 32 35 32 31 32 39 30 34 4Z..161225212904 -0x0500: 5a 30 64 31 0b 30 09 06 03 55 04 06 13 02 55 53 Z0d1.0...U....US -0x0510: 31 13 30 11 06 03 55 04 08 0c 0a 43 61 6c 69 66 1.0...U....Calif -0x0520: 6f 72 6e 69 61 31 16 30 14 06 03 55 04 07 0c 0d ornia1.0...U.... -0x0530: 4d 6f 75 6e 74 61 69 6e 20 56 69 65 77 31 14 30 Mountain.View1.0 -0x0540: 12 06 03 55 04 0a 0c 0b 51 55 49 43 20 53 65 72 ...U....QUIC.Ser -0x0550: 76 65 72 31 12 30 10 06 03 55 04 03 0c 09 31 32 ver1.0...U....12 -0x0560: 37 2e 30 2e 30 2e 31 30 82 01 22 30 0d 06 09 2a 7.0.0.10.."0...* -0x0570: 86 48 86 f7 0d 01 01 01 05 00 03 82 01 0f 00 30 .H.............0 -0x0580: 82 01 0a 02 82 01 01 00 f0 55 bf b6 81 96 69 f3 .........U....i. -0x0590: 7a 06 f7 68 89 af fe 9c 30 e9 bb e7 0d 9b 37 c1 z..h....0.....7. -0x05a0: f6 a0 b8 28 72 bc 53 8e 8c 2c 99 a0 63 fe 7e 84 ...(r.S..,..c.~. -0x05b0: cb 35 11 96 24 98 20 ee 22 59 53 61 47 aa bc 66 .5..$..."YSaG..f -0x05c0: 8f 05 4f ec b6 a7 9c 3c fb de a7 24 3f d8 fd 97 ..O....<...$?... -0x05d0: a8 79 50 80 86 11 3a a8 a4 1e fa 7b 1e cf 4b 5c .yP...:....{..K\ -0x05e0: 7e 1c 23 5b b2 e1 d4 d7 ca 32 6e 4c 74 01 42 f0 ~.#[.....2nLt.B. -0x05f0: 36 14 09 f8 c7 22 6f 13 69 4a 32 9d e1 33 36 1b 6...."o.iJ2..36. -0x0600: e6 4d 74 6c b8 fa 49 f0 9a 0d 81 9f c6 b8 88 79 .Mtl..I........y -0x0610: 70 6c 0c 1c fb f9 70 27 e8 c1 c7 dd ba d0 97 f9 pl....p'........ -0x0620: ca 1a 1f 24 64 3b f7 3d 4c 67 b1 e2 87 07 f9 a2 ...$d;.=Lg...... -0x0630: b8 d5 82 06 80 cd 1f 97 ca 4b 39 87 4f 0a b7 a7 .........K9.O... -0x0640: 36 cf f2 fe 08 7b 46 7d 25 61 f5 ec 18 13 f5 e1 6....{F}%a...... -0x0650: 4b a9 eb ec a8 53 7f ad 66 19 fb 22 70 cc fa df K....S..f.."p... -0x0660: 64 da f4 b1 07 17 3d b0 0f d7 0d df fe e8 9b 3a d.....=........: -0x0670: 86 fc a0 85 d1 03 a3 4d 89 9c cc de c6 c6 de 9a .......M........ -0x0680: d0 f3 7f 6d 1d 0a 8e 27 02 03 01 00 01 a3 81 b6 ...m...'........ -0x0690: 30 81 b3 30 0c 06 03 55 1d 13 01 01 ff 04 02 30 0..0...U.......0 -0x06a0: 00 30 1d 06 03 55 1d 0e 04 16 04 14 1a 79 b5 96 .0...U.......y.. -0x06b0: b0 18 f3 1a 21 fd 8c 82 30 b9 af 94 60 d1 62 fe ....!...0...`.b. -0x06c0: 30 1f 06 03 55 1d 23 04 18 30 16 80 14 f2 38 71 0...U.#..0....8q -0x06d0: 39 4b 66 26 ac 8c 4b 3e cc 03 88 d7 55 1f aa 5d 9Kf&..K>....U..] -0x06e0: 92 30 1d 06 03 55 1d 25 04 16 30 14 06 08 2b 06 .0...U.%..0...+. -0x06f0: 01 05 05 07 03 01 06 08 2b 06 01 05 05 07 03 02 ........+....... -0x0700: 30 44 06 03 55 1d 11 04 3d 30 3b 82 0f 77 77 77 0D..U...=0;..www -0x0710: 2e 65 78 61 6d 70 6c 65 2e 6f 72 67 82 10 6d 61 .example.org..ma -0x0720: 69 6c 2e 65 78 61 6d 70 6c 65 2e 6f 72 67 82 10 il.example.org.. -0x0730: 6d 61 69 6c 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d mail.example.com -0x0740: 87 04 7f 00 00 01 30 0d 06 09 2a 86 48 86 f7 0d ......0...*.H... -0x0750: 01 01 0b 05 00 03 82 01 01 00 68 24 9a 07 f7 b8 ..........h$.... -0x0760: 7d 96 ef fd e5 0c 7c 2c 31 a8 95 e2 fa 05 a7 3e }.....|,1......> -0x0770: 98 3b 77 3c 0a e1 a2 16 51 7f 58 43 82 6c c4 66 .;w<....Q.XC.l.f -0x0780: f3 88 26 17 bd e5 d3 b1 84 2a b7 cf e1 d1 b2 85 ..&......*...... -0x0790: 3b fc 20 1a df 1d 24 f5 dc 58 b7 ef 36 72 9f d7 ;.....$..X..6r.. -0x07a0: da c5 f4 46 08 4b 17 64 99 1a b1 1e de 68 00 74 ...F.K.d.....h.t -0x07b0: 4c 1a 7c 55 b9 7f c3 2d fa 58 3b 6b 93 5a 0a 43 L.|U...-.X;k.Z.C -0x07c0: e3 41 4e 4e 5c 2c a6 0c cf 17 c4 86 ea 58 37 a2 .ANN\,.......X7. -0x07d0: 40 de 22 eb ad 07 77 05 cb 57 df 49 56 96 f7 d4 @."...w..W.IV... -0x07e0: a6 9a ac 65 c9 2e 0e dc 53 14 6c 1d 41 68 22 8d ...e....S.l.Ah". -0x07f0: 1f 40 49 6d b2 a7 6c 26 a5 60 52 a7 aa 8a 57 0c .@Im..l&.`R...W. -0x0800: d6 45 54 5b 18 75 00 c2 cb 64 ae 66 45 0d 96 67 .ET[.u...d.fE..g -0x0810: 0b 6d 11 c6 51 b5 2b e3 e8 68 2d 60 91 b0 bc 3c .m..Q.+..h-`...< -0x0820: 03 69 99 06 9f 16 e4 a8 b9 8c ac 04 9f 1f e9 0a .i.............. -0x0830: 81 eb 60 ae 27 6d 87 f7 0b cf 9c bb 1a db 15 8a ..`.'m.......... -0x0840: 92 08 28 5a ac 9d 37 2c 35 f2 c1 bb e6 01 4a f6 ..(Z..7,5.....J. -0x0850: 4b 67 f5 ec 1f 1f a7 04 9b 21 Kg.......! - -[0112/144522.378102:VERBOSE4:hkdf.cc(103)] PRK: -0x0000: 76 54 6a 15 79 39 65 66 5c 63 0d a9 85 d9 f8 89 vTj.y9ef\c...... -0x0010: a7 a5 c5 41 62 e0 6c 26 fb 42 32 30 3d 0a 32 80 ...Ab.l&.B20=.2. - -[0112/144522.378351:VERBOSE4:hkdf.cc(149)] client key: -0x0000: 52 79 c1 44 f0 8d 83 99 6b f3 b6 83 11 ff 31 25 Ry.D....k.....1% -0x0010: 86 79 d6 af 62 bc b3 71 1d 7e fa 71 35 9f f2 aa .y..b..q.~.q5... - -[0112/144522.378422:VERBOSE4:hkdf.cc(156)] server key: -0x0000: bf 3d 5e 92 6e 8f 09 15 3f 0b f3 0b 91 e8 84 50 .=^.n...?......P -0x0010: 73 33 81 86 be 9c 32 56 d7 b2 6a 57 67 80 46 fd s3....2V..jWg.F. - -[0112/144522.378489:VERBOSE4:hkdf.cc(163)] client IV: -0x0000: a1 c0 66 60 ..f` - -[0112/144522.378549:VERBOSE4:hkdf.cc(170)] server IV: -0x0000: fa 93 8b 39 ...9 - -[0112/144522.378594:VERBOSE4:hkdf.cc(176)] subkey secret: -0x0000: 55 3a eb 1e 23 82 a7 6b a6 22 a9 c8 23 7d c7 11 U:..#..k."..#}.. -0x0010: 7e 35 ca c8 c8 26 8c 36 cb 75 78 18 58 c5 d3 3a ~5...&.6.ux.X..: -*/ - { - .ekt_lineno = __LINE__, - BUF_PAIR(ikm, - "\xab\x62\xc8\xe1\x03\x63\xb5\x4e\xb9\xc5\xe4\xf1\xd9\x47\xed\x60" - "\x43\x2f\x3b\xc2\x27\xc3\x2c\x51\xe7\x7f\xe7\x4b\x5e\xa4\x08\x29" - ), - BUF_PAIR(salt, - "\x58\x77\xdc\xd2\xa5\xd0\xb3\x7f\x65\xc3\xcd\x6b\x03\xa7\x34\x53" - "\xd7\x8b\x6e\x56\x3c\xa0\x22\xa2\xab\x7a\x1e\x4c\x40\xe9\xcf\xd6" - "\x02\x2e\xef\xd3\x08\xbc\xd1\xbe\xcb\x70\xf1\x92\x8e\xec\x27\x7b" - "\xb6\xb5\x27\xce\xea\x43\x7d\xc2\x34\xb7\xbe\x44\xa3\x89\x70\x9a" - "\x62\x65\x46\xfa\xe5\x86\x44\x04\xfb\x66\x22\x2d\x7c\x07\xb8\xb8" - ), - BUF_PAIR(context, - "\x51\x55\x49\x43\x20\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69" - "\x6f\x6e\x00\xa8\x9f\x60\xa0\x05\xe6\x1a\x02\x43\x48\x4c\x4f\x18" - "\x00\x00\x00\x50\x41\x44\x00\x01\x02\x00\x00\x53\x4e\x49\x00\x10" - "\x02\x00\x00\x53\x54\x4b\x00\x44\x02\x00\x00\x53\x4e\x4f\x00\x74" - "\x02\x00\x00\x56\x45\x52\x00\x78\x02\x00\x00\x43\x43\x53\x00\x88" - "\x02\x00\x00\x4e\x4f\x4e\x43\xa8\x02\x00\x00\x4d\x53\x50\x43\xac" - "\x02\x00\x00\x41\x45\x41\x44\xb0\x02\x00\x00\x53\x43\x49\x44\xc0" - "\x02\x00\x00\x50\x44\x4d\x44\xc4\x02\x00\x00\x53\x4d\x48\x4c\xc8" - "\x02\x00\x00\x49\x43\x53\x4c\xcc\x02\x00\x00\x43\x54\x49\x4d\xd4" - "\x02\x00\x00\x4e\x4f\x4e\x50\xf4\x02\x00\x00\x50\x55\x42\x53\x14" - "\x03\x00\x00\x4d\x49\x44\x53\x18\x03\x00\x00\x53\x43\x4c\x53\x1c" - "\x03\x00\x00\x4b\x45\x58\x53\x20\x03\x00\x00\x58\x4c\x43\x54\x28" - "\x03\x00\x00\x43\x53\x43\x54\x28\x03\x00\x00\x43\x43\x52\x54\x30" - "\x03\x00\x00\x43\x46\x43\x57\x34\x03\x00\x00\x53\x46\x43\x57\x38" - "\x03\x00\x00\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" - "\x2d\x2d\x2d\x2d\x77\x77\x77\x2e\x65\x78\x61\x6d\x70\x6c\x65\x2e" - "\x6f\x72\x67\x2f\x22\xe6\x5d\xe0\xf8\x78\x94\x5a\x23\x2d\xba\xb4" - "\xd7\xe8\xaa\x1a\x46\x21\x20\x20\x94\x7f\x0d\x7a\x5e\x2e\x41\x98" - "\x66\x0e\x44\x88\xeb\xf3\x41\xc5\xb1\xe2\x65\xa7\x38\x01\x3c\x2c" - "\x0d\xeb\x00\x2b\x73\x48\xda\x02\x2e\xef\xd3\x08\xbc\xd1\xbe\xcb" - "\x70\xf1\x92\x8e\xec\x27\x7b\xb6\xb5\x27\xce\xea\x43\x7d\xc2\x34" - "\xb7\xbe\x44\xa3\x89\x70\x9a\x62\x65\x46\xfa\xe5\x86\x44\x04\xfb" - "\x66\x22\x2d\x7c\x07\xb8\xb8\x51\x30\x33\x37\x01\xe8\x81\x60\x92" - "\x92\x1a\xe8\x7e\xed\x80\x86\xa2\x15\x82\x91\x58\x77\xdc\xd2\xa5" - "\xd0\xb3\x7f\x65\xc3\xcd\x6b\x03\xa7\x34\x53\xd7\x8b\x6e\x56\x3c" - "\xa0\x22\xa2\xab\x7a\x1e\x4c\x40\xe9\xcf\xd6\x64\x00\x00\x00\x43" - "\x43\x32\x30\x08\x68\x02\x10\x36\xfa\xfb\x68\xb3\x8a\xaa\xa4\xe7" - "\x96\x41\xca\x58\x35\x30\x39\x01\x00\x00\x00\x58\x02\x00\x00\xd2" - "\xdc\x77\x58\x00\x00\x00\x00\x2d\xc8\x07\x0e\x2a\x4b\x39\x15\xae" - "\x98\x1f\x5c\xb1\x6f\xac\x77\x0e\xf7\xea\xdd\x57\x93\x8b\x38\xf2" - "\x8a\x45\xf5\xd3\x01\xc1\x9b\xa5\x79\x21\x45\x36\x4f\xc6\xf6\x83" - "\xbc\xba\x1d\xe5\x06\xc1\x8e\x69\x4c\xb6\xe2\x99\x35\x17\xa1\xca" - "\xf0\xd2\x82\xd9\xa5\xb0\x3e\x64\x00\x00\x00\x01\x00\x00\x00\x43" - "\x32\x35\x35\xb4\xe2\x9f\xfc\xab\x17\xf2\x4a\xb4\xe2\x9f\xfc\xab" - "\x17\xf2\x4a\x00\x00\xf0\x00\x00\x00\x60\x00\x53\x43\x46\x47\x06" - "\x00\x00\x00\x41\x45\x41\x44\x08\x00\x00\x00\x53\x43\x49\x44\x18" - "\x00\x00\x00\x50\x55\x42\x53\x3b\x00\x00\x00\x4b\x45\x58\x53\x3f" - "\x00\x00\x00\x4f\x42\x49\x54\x47\x00\x00\x00\x45\x58\x50\x59\x4f" - "\x00\x00\x00\x41\x45\x53\x47\x43\x43\x32\x30\x08\x68\x02\x10\x36" - "\xfa\xfb\x68\xb3\x8a\xaa\xa4\xe7\x96\x41\xca\x20\x00\x00\xf6\x00" - "\xdd\x9e\x3e\x30\x4f\xd9\xfb\x26\x77\x4e\xce\x35\x79\x6d\x98\x6d" - "\x9a\xe6\xa5\x19\xc0\xb8\x72\x66\xcd\x46\xb1\xb6\x90\x4a\x43\x32" - "\x35\x35\xa5\xd0\xb3\x7f\x65\xc3\xcd\x6b\xc8\x2a\x65\x59\x00\x00" - "\x00\x00\x30\x82\x03\xb4\x30\x82\x02\x9c\xa0\x03\x02\x01\x02\x02" - "\x01\x01\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05" - "\x00\x30\x1e\x31\x1c\x30\x1a\x06\x03\x55\x04\x03\x0c\x13\x51\x55" - "\x49\x43\x20\x53\x65\x72\x76\x65\x72\x20\x52\x6f\x6f\x74\x20\x43" - "\x41\x30\x1e\x17\x0d\x31\x36\x31\x32\x32\x32\x32\x31\x32\x39\x30" - "\x34\x5a\x17\x0d\x31\x36\x31\x32\x32\x35\x32\x31\x32\x39\x30\x34" - "\x5a\x30\x64\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53" - "\x31\x13\x30\x11\x06\x03\x55\x04\x08\x0c\x0a\x43\x61\x6c\x69\x66" - "\x6f\x72\x6e\x69\x61\x31\x16\x30\x14\x06\x03\x55\x04\x07\x0c\x0d" - "\x4d\x6f\x75\x6e\x74\x61\x69\x6e\x20\x56\x69\x65\x77\x31\x14\x30" - "\x12\x06\x03\x55\x04\x0a\x0c\x0b\x51\x55\x49\x43\x20\x53\x65\x72" - "\x76\x65\x72\x31\x12\x30\x10\x06\x03\x55\x04\x03\x0c\x09\x31\x32" - "\x37\x2e\x30\x2e\x30\x2e\x31\x30\x82\x01\x22\x30\x0d\x06\x09\x2a" - "\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30" - "\x82\x01\x0a\x02\x82\x01\x01\x00\xf0\x55\xbf\xb6\x81\x96\x69\xf3" - "\x7a\x06\xf7\x68\x89\xaf\xfe\x9c\x30\xe9\xbb\xe7\x0d\x9b\x37\xc1" - "\xf6\xa0\xb8\x28\x72\xbc\x53\x8e\x8c\x2c\x99\xa0\x63\xfe\x7e\x84" - "\xcb\x35\x11\x96\x24\x98\x20\xee\x22\x59\x53\x61\x47\xaa\xbc\x66" - "\x8f\x05\x4f\xec\xb6\xa7\x9c\x3c\xfb\xde\xa7\x24\x3f\xd8\xfd\x97" - "\xa8\x79\x50\x80\x86\x11\x3a\xa8\xa4\x1e\xfa\x7b\x1e\xcf\x4b\x5c" - "\x7e\x1c\x23\x5b\xb2\xe1\xd4\xd7\xca\x32\x6e\x4c\x74\x01\x42\xf0" - "\x36\x14\x09\xf8\xc7\x22\x6f\x13\x69\x4a\x32\x9d\xe1\x33\x36\x1b" - "\xe6\x4d\x74\x6c\xb8\xfa\x49\xf0\x9a\x0d\x81\x9f\xc6\xb8\x88\x79" - "\x70\x6c\x0c\x1c\xfb\xf9\x70\x27\xe8\xc1\xc7\xdd\xba\xd0\x97\xf9" - "\xca\x1a\x1f\x24\x64\x3b\xf7\x3d\x4c\x67\xb1\xe2\x87\x07\xf9\xa2" - "\xb8\xd5\x82\x06\x80\xcd\x1f\x97\xca\x4b\x39\x87\x4f\x0a\xb7\xa7" - "\x36\xcf\xf2\xfe\x08\x7b\x46\x7d\x25\x61\xf5\xec\x18\x13\xf5\xe1" - "\x4b\xa9\xeb\xec\xa8\x53\x7f\xad\x66\x19\xfb\x22\x70\xcc\xfa\xdf" - "\x64\xda\xf4\xb1\x07\x17\x3d\xb0\x0f\xd7\x0d\xdf\xfe\xe8\x9b\x3a" - "\x86\xfc\xa0\x85\xd1\x03\xa3\x4d\x89\x9c\xcc\xde\xc6\xc6\xde\x9a" - "\xd0\xf3\x7f\x6d\x1d\x0a\x8e\x27\x02\x03\x01\x00\x01\xa3\x81\xb6" - "\x30\x81\xb3\x30\x0c\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x02\x30" - "\x00\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x1a\x79\xb5\x96" - "\xb0\x18\xf3\x1a\x21\xfd\x8c\x82\x30\xb9\xaf\x94\x60\xd1\x62\xfe" - "\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\xf2\x38\x71" - "\x39\x4b\x66\x26\xac\x8c\x4b\x3e\xcc\x03\x88\xd7\x55\x1f\xaa\x5d" - "\x92\x30\x1d\x06\x03\x55\x1d\x25\x04\x16\x30\x14\x06\x08\x2b\x06" - "\x01\x05\x05\x07\x03\x01\x06\x08\x2b\x06\x01\x05\x05\x07\x03\x02" - "\x30\x44\x06\x03\x55\x1d\x11\x04\x3d\x30\x3b\x82\x0f\x77\x77\x77" - "\x2e\x65\x78\x61\x6d\x70\x6c\x65\x2e\x6f\x72\x67\x82\x10\x6d\x61" - "\x69\x6c\x2e\x65\x78\x61\x6d\x70\x6c\x65\x2e\x6f\x72\x67\x82\x10" - "\x6d\x61\x69\x6c\x2e\x65\x78\x61\x6d\x70\x6c\x65\x2e\x63\x6f\x6d" - "\x87\x04\x7f\x00\x00\x01\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d" - "\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x68\x24\x9a\x07\xf7\xb8" - "\x7d\x96\xef\xfd\xe5\x0c\x7c\x2c\x31\xa8\x95\xe2\xfa\x05\xa7\x3e" - "\x98\x3b\x77\x3c\x0a\xe1\xa2\x16\x51\x7f\x58\x43\x82\x6c\xc4\x66" - "\xf3\x88\x26\x17\xbd\xe5\xd3\xb1\x84\x2a\xb7\xcf\xe1\xd1\xb2\x85" - "\x3b\xfc\x20\x1a\xdf\x1d\x24\xf5\xdc\x58\xb7\xef\x36\x72\x9f\xd7" - "\xda\xc5\xf4\x46\x08\x4b\x17\x64\x99\x1a\xb1\x1e\xde\x68\x00\x74" - "\x4c\x1a\x7c\x55\xb9\x7f\xc3\x2d\xfa\x58\x3b\x6b\x93\x5a\x0a\x43" - "\xe3\x41\x4e\x4e\x5c\x2c\xa6\x0c\xcf\x17\xc4\x86\xea\x58\x37\xa2" - "\x40\xde\x22\xeb\xad\x07\x77\x05\xcb\x57\xdf\x49\x56\x96\xf7\xd4" - "\xa6\x9a\xac\x65\xc9\x2e\x0e\xdc\x53\x14\x6c\x1d\x41\x68\x22\x8d" - "\x1f\x40\x49\x6d\xb2\xa7\x6c\x26\xa5\x60\x52\xa7\xaa\x8a\x57\x0c" - "\xd6\x45\x54\x5b\x18\x75\x00\xc2\xcb\x64\xae\x66\x45\x0d\x96\x67" - "\x0b\x6d\x11\xc6\x51\xb5\x2b\xe3\xe8\x68\x2d\x60\x91\xb0\xbc\x3c" - "\x03\x69\x99\x06\x9f\x16\xe4\xa8\xb9\x8c\xac\x04\x9f\x1f\xe9\x0a" - "\x81\xeb\x60\xae\x27\x6d\x87\xf7\x0b\xcf\x9c\xbb\x1a\xdb\x15\x8a" - "\x92\x08\x28\x5a\xac\x9d\x37\x2c\x35\xf2\xc1\xbb\xe6\x01\x4a\xf6" - "\x4b\x67\xf5\xec\x1f\x1f\xa7\x04\x9b\x21" - ), - BUF_PAIR(client_key, - "\x52\x79\xc1\x44\xf0\x8d\x83\x99\x6b\xf3\xb6\x83\x11\xff\x31\x25" - "\x86\x79\xd6\xaf\x62\xbc\xb3\x71\x1d\x7e\xfa\x71\x35\x9f\xf2\xaa" - ), - BUF_PAIR(server_key, - "\xbf\x3d\x5e\x92\x6e\x8f\x09\x15\x3f\x0b\xf3\x0b\x91\xe8\x84\x50" - "\x73\x33\x81\x86\xbe\x9c\x32\x56\xd7\xb2\x6a\x57\x67\x80\x46\xfd" - ), - BUF_PAIR(client_iv, "\xa1\xc0\x66\x60"), - BUF_PAIR(server_iv, "\xfa\x93\x8b\x39"), -/* -[0112/144522.378594:VERBOSE4:hkdf.cc(176)] subkey secret: -"\x55\x3a\xeb\x1e\x23\x82\xa7\x6b\xa6\x22\xa9\xc8\x23\x7d\xc7\x11" -"\x7e\x35\xca\xc8\xc8\x26\x8c\x36\xcb\x75\x78\x18\x58\xc5\xd3\x3a" -*/ - }, - - -}; - - -static void -run_ekt_test (const struct export_key_test *test) -{ - int s, i; - - unsigned char client_key[0x100], - server_key[0x100], - client_iv[0x100], - server_iv[0x100]; - - unsigned char sub_key[32]; - unsigned char c_hp[16], s_hp[16]; - - /* Sanity check the test itself: */ - assert(test->ekt_client_key_sz < sizeof(client_key)); - assert(test->ekt_server_key_sz < sizeof(server_key)); - assert(test->ekt_server_iv_sz < sizeof(server_iv)); - assert(test->ekt_client_iv_sz < sizeof(client_iv)); - - for (i = 0; i < 2; ++i) - { - if (i && !(test->ekt_ikm_sz == 32 && test->ekt_client_key_sz == 16 && test->ekt_server_key_sz == 16)) - continue; - s = lsquic_export_key_material(test->ekt_ikm, (uint32_t)test->ekt_ikm_sz, - test->ekt_salt, (int)test->ekt_salt_sz, - test->ekt_context, (uint32_t)test->ekt_context_sz, - (uint16_t)test->ekt_client_key_sz, client_key, - (uint16_t)test->ekt_server_key_sz, server_key, - (uint16_t)test->ekt_client_iv_sz, client_iv, - (uint16_t)test->ekt_server_iv_sz, server_iv, - sub_key, - /* Keys should not change because HP pointers are given */ - i ? c_hp : NULL, - i ? s_hp : NULL - ); - assert(0 == s); /* This function always returns zero */ - if (test->ekt_client_key_sz) - assert(0 == memcmp(client_key, test->ekt_client_key, - test->ekt_client_key_sz)); - if (test->ekt_server_key_sz) - assert(0 == memcmp(server_key, test->ekt_server_key, - test->ekt_server_key_sz)); - } -} - - -int -main (void) -{ - unsigned n; - for (n = 0; n < sizeof(tests) / sizeof(tests[0]); ++n) - run_ekt_test(&tests[n]); - return 0; -} diff --git a/external/lsquic/tests/test_frame_chop.c b/external/lsquic/tests/test_frame_chop.c deleted file mode 100644 index 518b849..0000000 --- a/external/lsquic/tests/test_frame_chop.c +++ /dev/null @@ -1,219 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * Write several things to HEADERS stream and check the results. What - * varies is the amount of bytes that are written to stream every time. - * This will exercise buffering in frame writer and verify that contents - * are written out correctly no matter where frab writing leaves off - * and picks up. - */ - -#include -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#else -#include -#endif -#include - -#include "lsquic.h" -#include "lshpack.h" -#include "lsquic_logger.h" -#include "lsquic_mm.h" -#include "lsquic_frame_common.h" -#include "lsquic_frame_writer.h" -#include "lsquic_frame_reader.h" -#if LSQUIC_CONN_STATS -#include "lsquic_int_types.h" -#include "lsquic_hash.h" -#include "lsquic_conn.h" -#endif - - -struct lsquic_stream -{ - size_t sm_write_off, - sm_buf_sz; /* Number of bytes allocated */ - size_t sm_max_write; - size_t sm_read_off; - unsigned char *sm_buf; -}; - - -static struct lsquic_stream * -stream_new (size_t max_write) -{ - struct lsquic_stream *stream = calloc(1, sizeof(*stream)); - stream->sm_max_write = max_write; - return stream; -} - - -static void -stream_destroy (struct lsquic_stream *stream) -{ - free(stream->sm_buf); - free(stream); -} - - -#define reset_output(max_) do { \ - output.sz = 0; \ - if (max_) \ - output.max = max_; \ - else \ - output.max = sizeof(output.buf);\ -} while (0) - - -static ssize_t -stream_write (struct lsquic_stream *stream, struct lsquic_reader *reader) -{ - size_t sz; - - sz = reader->lsqr_size(reader->lsqr_ctx); - if (sz > stream->sm_max_write) - sz = stream->sm_max_write; - if (stream->sm_write_off + sz > stream->sm_buf_sz) - { - if (stream->sm_write_off + sz < stream->sm_buf_sz * 2) - stream->sm_buf_sz *= 2; - else - stream->sm_buf_sz = stream->sm_write_off + sz; - stream->sm_buf = realloc(stream->sm_buf, stream->sm_buf_sz); - } - - sz = reader->lsqr_read(reader->lsqr_ctx, - stream->sm_buf + stream->sm_write_off, sz); - stream->sm_write_off += sz; - - return sz; -} - - -#define XHDR(name_, value_) .buf = name_ value_, .name_offset = 0, .name_len = sizeof(name_) - 1, .val_offset = sizeof(name_) - 1, .val_len = sizeof(value_) - 1, - - -static void -test_chop (unsigned max_write_sz) -{ - struct lsquic_frame_writer *fw; - struct lsquic_stream *stream; - struct lsquic_mm mm; - struct lshpack_enc henc; - int s; - -#if LSQUIC_CONN_STATS - struct conn_stats conn_stats; - memset(&conn_stats, 0, sizeof(conn_stats)); -#endif - - lsquic_mm_init(&mm); - lshpack_enc_init(&henc); - stream = stream_new(max_write_sz); - - fw = lsquic_frame_writer_new(&mm, stream, 0, &henc, stream_write, -#if LSQUIC_CONN_STATS - &conn_stats, -#endif - 0); - - struct lsxpack_header header_arr[] = - { - { XHDR(":status", "302") }, - }; - - struct lsquic_http_headers headers = { - .count = 1, - .headers = header_arr, - }; - - s = lsquic_frame_writer_write_headers(fw, 12345, &headers, 0, 100); - assert(0 == s); - - struct lsquic_http2_setting settings[] = { { 1, 2, }, { 3, 4, } }; - s = lsquic_frame_writer_write_settings(fw, settings, 2); - assert(0 == s); - - /* TODO: server must not send priority frames, add a check for that - * error condition. - */ - s = lsquic_frame_writer_write_priority(fw, 3, 0, 1, 256); - assert(0 == s); - - while (lsquic_frame_writer_have_leftovers(fw)) - { - s = lsquic_frame_writer_flush(fw); - assert(0 == s); - } - - const unsigned char expected_buf[] = { - /* Length: */ 0x00, 0x00, 0x09, - /* Type: */ HTTP_FRAME_HEADERS, - /* Flags: */ HFHF_END_HEADERS|HFHF_PRIORITY, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Dep stream id: */0x00, 0x00, 0x00, 0x00, - /* Weight: */ 100 - 1, - /* Block fragment: */ - 0x48, 0x82, 0x64, 0x02, - /* Length: */ 0x00, 0x00, 0x0C, - /* Type: */ HTTP_FRAME_SETTINGS, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x00, 0x00, - /* Payload: */ 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, - /* Length: */ 0x00, 0x00, 5, - /* Type: */ HTTP_FRAME_PRIORITY, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x00, 0x03, - /* Dep stream Id: */0x00, 0x00, 0x00, 0x01, - /* Weight: */ 0xFF, - }; - - assert(stream->sm_write_off == sizeof(expected_buf)); - assert(0 == memcmp(stream->sm_buf, expected_buf, sizeof(expected_buf))); - - lsquic_frame_writer_destroy(fw); - stream_destroy(stream); - lshpack_enc_cleanup(&henc); - lsquic_mm_cleanup(&mm); -} - - -int -main (int argc, char **argv) -{ - const unsigned write_sizes[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 20, - 30, 100, 200, 255, 0xFFF, 0x1000, 0x100D, - UINT_MAX, }; - unsigned i; - int opt, max_write_sz = -1; - - while (-1 != (opt = getopt(argc, argv, "l:s:"))) - { - switch (opt) - { - case 'l': - lsquic_log_to_fstream(stderr, LLTS_NONE); - lsquic_logger_lopt(optarg); - break; - case 's': - max_write_sz = atoi(optarg); - break; - default: - exit(1); - } - } - - if (-1 == max_write_sz) - for (i = 0; i < sizeof(write_sizes) / sizeof(write_sizes[0]); ++i) - test_chop(write_sizes[i]); - else - test_chop(max_write_sz); - - return 0; -} diff --git a/external/lsquic/tests/test_frame_reader.c b/external/lsquic/tests/test_frame_reader.c deleted file mode 100644 index f2180ac..0000000 --- a/external/lsquic/tests/test_frame_reader.c +++ /dev/null @@ -1,1219 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#else -#include -#endif -#include - -#include "lsquic.h" -#include "lsquic_frame_common.h" -#include "lshpack.h" -#include "lsquic_mm.h" -#include "lsquic_int_types.h" -#include "lsquic_conn_flow.h" -#include "lsquic_sfcw.h" -#include "lsquic_rtt.h" -#include "lsquic_hash.h" -#include "lsquic_conn.h" -#include "lsquic_varint.h" -#include "lsquic_hq.h" -#include "lsquic_stream.h" -#include "lsquic_conn_public.h" -#include "lsquic_logger.h" -#if LSQUIC_CONN_STATS -#include "lsquic_int_types.h" -#include "lsquic_conn.h" -#endif - -#include "lsquic_frame_reader.h" -#include "lsquic_headers.h" -#include "lsquic_http1x_if.h" - - -struct callback_value /* What callback returns */ -{ - enum { - CV_HEADERS, - CV_SETTINGS, - CV_PUSH_PROMISE, - CV_PRIORITY, - CV_ERROR, - } type; - unsigned stream_off; /* Checked only if not zero */ - union { - struct headers { - uint32_t stream_id; - uint32_t oth_stream_id; - unsigned short weight; - signed char exclusive; - unsigned char flags; - unsigned size; - unsigned off; - char buf[0x100]; - } headers; - struct { - uint16_t id; - uint32_t value; - } setting; - void *push_promise; - struct cv_error { - enum frame_reader_error code; - lsquic_stream_id_t stream_id; - } error; - struct cv_priority { - lsquic_stream_id_t stream_id; - int exclusive; - lsquic_stream_id_t dep_stream_id; - unsigned weight; - } priority; - } u; -}; - - -void -compare_headers (const struct headers *got_h, const struct headers *exp_h) -{ - assert(got_h->stream_id == exp_h->stream_id); - assert(got_h->oth_stream_id == exp_h->oth_stream_id); - assert(got_h->weight == exp_h->weight); - assert(got_h->exclusive == exp_h->exclusive); - assert(got_h->size == exp_h->size); - assert(strlen(got_h->buf) == got_h->size); - assert(got_h->off == exp_h->off); - assert(got_h->flags == exp_h->flags); - assert(0 == memcmp(got_h->buf, exp_h->buf, got_h->size)); -} - - -void -compare_push_promises (const struct headers *got_h, const struct headers *exp_h) -{ - assert(got_h->stream_id == exp_h->stream_id); - assert(got_h->oth_stream_id == exp_h->oth_stream_id); - assert(got_h->size == exp_h->size); - assert(strlen(got_h->buf) == got_h->size); - assert(got_h->off == exp_h->off); - assert(got_h->flags == exp_h->flags); - assert(0 == memcmp(got_h->buf, exp_h->buf, got_h->size)); -} - - -void -compare_priorities (const struct cv_priority *got_prio, - const struct cv_priority *exp_prio) -{ - assert(got_prio->stream_id == exp_prio->stream_id); - assert(got_prio->exclusive == exp_prio->exclusive); - assert(got_prio->dep_stream_id == exp_prio->dep_stream_id); - assert(got_prio->weight == exp_prio->weight); -} - - -void -compare_errors (const struct cv_error *got_err, - const struct cv_error *exp_err) -{ - assert(got_err->code == exp_err->code); - assert(got_err->stream_id == exp_err->stream_id); -} - - -static void -compare_cb_vals (const struct callback_value *got, - const struct callback_value *exp) -{ - assert(got->type == exp->type); - if (exp->stream_off) - assert(exp->stream_off == got->stream_off); - switch (got->type) - { - case CV_HEADERS: - compare_headers(&got->u.headers, &exp->u.headers); - break; - case CV_PUSH_PROMISE: - compare_push_promises(&got->u.headers, &exp->u.headers); - break; - case CV_ERROR: - compare_errors(&got->u.error, &exp->u.error); - break; - case CV_PRIORITY: - compare_priorities(&got->u.priority, &exp->u.priority); - break; - case CV_SETTINGS: - /* TODO */ - break; - } -} - - -static struct { - size_t in_sz; - size_t in_off; - size_t in_max_req_sz; - size_t in_max_sz; - unsigned char in_buf[0x1000]; -} input; - - -static struct cb_ctx { - unsigned n_cb_vals; - struct callback_value cb_vals[10]; -} g_cb_ctx; - - -static void -reset_cb_ctx (struct cb_ctx *cb_ctx) -{ - cb_ctx->n_cb_vals = 0; - memset(&cb_ctx->cb_vals, 0xA5, sizeof(cb_ctx->cb_vals)); -} - - -static void -copy_uh_to_headers (const struct uncompressed_headers *uh, struct headers *h) -{ - const struct http1x_headers *h1h = uh->uh_hset; - h->flags = uh->uh_flags; - h->weight = uh->uh_weight; - h->stream_id = uh->uh_stream_id; - h->exclusive = uh->uh_exclusive; - h->oth_stream_id = uh->uh_oth_stream_id; - h->size = h1h->h1h_size; - h->off = h1h->h1h_off; - memcpy(h->buf, h1h->h1h_buf, h->size); - h->buf[h->size] = '\0'; -} - - -static void -on_incoming_headers (void *ctx, struct uncompressed_headers *uh) -{ - struct cb_ctx *cb_ctx = ctx; - assert(cb_ctx == &g_cb_ctx); - unsigned i = cb_ctx->n_cb_vals++; - assert(i < sizeof(cb_ctx->cb_vals) / sizeof(cb_ctx->cb_vals[0])); - cb_ctx->cb_vals[i].type = CV_HEADERS; - cb_ctx->cb_vals[i].stream_off = input.in_off; - copy_uh_to_headers(uh, &cb_ctx->cb_vals[i].u.headers); - assert(uh->uh_flags & UH_H1H); - lsquic_http1x_if->hsi_discard_header_set(uh->uh_hset); - free(uh); -} - - -static void -on_push_promise (void *ctx, struct uncompressed_headers *uh) -{ - struct cb_ctx *cb_ctx = ctx; - assert(cb_ctx == &g_cb_ctx); - unsigned i = cb_ctx->n_cb_vals++; - assert(i < sizeof(cb_ctx->cb_vals) / sizeof(cb_ctx->cb_vals[0])); - cb_ctx->cb_vals[i].type = CV_PUSH_PROMISE; - cb_ctx->cb_vals[i].stream_off = input.in_off; - copy_uh_to_headers(uh, &cb_ctx->cb_vals[i].u.headers); - assert(uh->uh_flags & UH_H1H); - lsquic_http1x_if->hsi_discard_header_set(uh->uh_hset); - free(uh); -} - - -static void -on_error (void *ctx, lsquic_stream_id_t stream_id, enum frame_reader_error error) -{ - struct cb_ctx *cb_ctx = ctx; - assert(cb_ctx == &g_cb_ctx); - unsigned i = cb_ctx->n_cb_vals++; - assert(i < sizeof(cb_ctx->cb_vals) / sizeof(cb_ctx->cb_vals[0])); - cb_ctx->cb_vals[i].type = CV_ERROR; - cb_ctx->cb_vals[i].u.error.stream_id = stream_id; - cb_ctx->cb_vals[i].u.error.code = error; - cb_ctx->cb_vals[i].stream_off = input.in_off; -} - - -static void -on_settings (void *ctx, uint16_t id, uint32_t value) -{ - struct cb_ctx *cb_ctx = ctx; - assert(cb_ctx == &g_cb_ctx); - unsigned i = cb_ctx->n_cb_vals++; - assert(i < sizeof(cb_ctx->cb_vals) / sizeof(cb_ctx->cb_vals[0])); - cb_ctx->cb_vals[i].type = CV_SETTINGS; - cb_ctx->cb_vals[i].u.setting.id = id; - cb_ctx->cb_vals[i].u.setting.value = value; - cb_ctx->cb_vals[i].stream_off = input.in_off; -} - - -static void -on_priority (void *ctx, lsquic_stream_id_t stream_id, int exclusive, - lsquic_stream_id_t dep_stream_id, unsigned weight) -{ - struct cb_ctx *cb_ctx = ctx; - assert(cb_ctx == &g_cb_ctx); - unsigned i = cb_ctx->n_cb_vals++; - assert(i < sizeof(cb_ctx->cb_vals) / sizeof(cb_ctx->cb_vals[0])); - cb_ctx->cb_vals[i].type = CV_PRIORITY; - cb_ctx->cb_vals[i].u.priority.stream_id = stream_id; - cb_ctx->cb_vals[i].u.priority.exclusive = exclusive; - cb_ctx->cb_vals[i].u.priority.dep_stream_id = dep_stream_id; - cb_ctx->cb_vals[i].u.priority.weight = weight; - cb_ctx->cb_vals[i].stream_off = input.in_off; -} - - -static const struct frame_reader_callbacks frame_callbacks = { - .frc_on_headers = on_incoming_headers, - .frc_on_push_promise = on_push_promise, - .frc_on_settings = on_settings, - .frc_on_priority = on_priority, - .frc_on_error = on_error, -}; - - -static ssize_t -read_from_stream (struct lsquic_stream *stream, void *buf, size_t sz) -{ - if (sz > input.in_max_req_sz) - input.in_max_req_sz = sz; - if (input.in_sz - input.in_off < sz) - sz = input.in_sz - input.in_off; - if (sz > input.in_max_sz) - sz = input.in_max_sz; - memcpy(buf, input.in_buf + input.in_off, sz); - input.in_off += sz; - return sz; -} - - -struct frame_reader_test { - unsigned frt_lineno; - /* Input */ - enum frame_reader_flags frt_fr_flags; - unsigned char frt_buf[0x100]; - unsigned short frt_bufsz; - unsigned frt_max_headers_sz; - /* Output */ - unsigned short frt_in_off; - int frt_err; /* True if expecting error */ - unsigned frt_n_cb_vals; - struct callback_value frt_cb_vals[10]; -}; - - -#define HEADERS(str) .buf = (str), .size = sizeof(str) - 1 - -static const struct frame_reader_test tests[] = { - { .frt_lineno = __LINE__, - .frt_fr_flags = 0, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x04, - /* Type: */ 0x01, - /* Flags: */ HFHF_END_HEADERS, - 0x80| /* <----- This bit must be ignored */ - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Block fragment: */ - 0x48, 0x82, 0x64, 0x02, - }, - .frt_bufsz = 13, - .frt_n_cb_vals = 1, - .frt_cb_vals = { - { - .type = CV_HEADERS, - .u.headers = { - .stream_id = 12345, - .oth_stream_id = 0, - .weight = 0, - .exclusive = -1, - .off = 0, - .flags = UH_H1H, - HEADERS("HTTP/1.1 302 Found\r\n\r\n"), - }, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = 0, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x16, - /* Type: */ 0x01, - /* Flags: */ HFHF_END_HEADERS|HFHF_PADDED, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Padding length */0x11, - /* Block fragment: */ - 0x48, 0x82, 0x64, 0x02, - /* Padding: */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, - }, - .frt_bufsz = 9 + 1 + 4 + 17, - .frt_n_cb_vals = 1, - .frt_cb_vals = { - { - .type = CV_HEADERS, - .u.headers = { - .stream_id = 12345, - .oth_stream_id = 0, - .weight = 0, - .exclusive = -1, - .off = 0, - .flags = UH_H1H, - HEADERS("HTTP/1.1 302 Found\r\n\r\n"), - }, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = 0, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x1B, - /* Type: */ 0x01, - /* Flags: */ HFHF_END_HEADERS|HFHF_PADDED|HFHF_PRIORITY| - HFHF_END_STREAM, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Padding length */0x11, - /* Exclusive: */ 0x80| - /* Dep Stream Id: */ - 0x00, 0x00, 0x12, 0x34, - /* Weight: */ 0xFF, - /* Block fragment: */ - 0x48, 0x82, 0x64, 0x02, - /* Padding: */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, - /* Length: */ 0x00, 0x00, 0x05, - /* Type: */ HTTP_FRAME_PRIORITY, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x00, 0x39, - /* Dep Stream Id: */0x80, 0x00, 0x00, 0x19, - /* Weight: */ 0x77, - }, - .frt_bufsz = 9 + 1 + 5 + 4 + 17 - + 9 + 5, - .frt_n_cb_vals = 2, - .frt_cb_vals = { - { - .type = CV_HEADERS, - .u.headers = { - .stream_id = 12345, - .oth_stream_id = 0x1234, - .weight = 0xFF + 1, - .exclusive = 1, - .off = 0, - .flags = UH_FIN | UH_H1H, - HEADERS("HTTP/1.1 302 Found\r\n\r\n"), - }, - }, - { - .type = CV_PRIORITY, - .u.priority = { - .stream_id = 0x39, - .exclusive = 1, - .dep_stream_id = 0x19, - .weight = 0x77 + 1, - }, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = 0, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x09, - /* Type: */ 0x01, - /* Flags: */ HFHF_END_HEADERS|HFHF_PRIORITY, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Exclusive: */ 0x00| - /* Dep Stream Id: */ - 0x00, 0x00, 0x12, 0x34, - /* Weight: */ 0x00, - /* Block fragment: */ - 0x48, 0x82, 0x64, 0x02, - }, - .frt_bufsz = 9 + 5 + 4, - .frt_n_cb_vals = 1, - .frt_cb_vals = { - { - .type = CV_HEADERS, - .u.headers = { - .stream_id = 12345, - .oth_stream_id = 0x1234, - .weight = 1, - .exclusive = 0, - .off = 0, - .flags = UH_H1H, - HEADERS("HTTP/1.1 302 Found\r\n\r\n"), - }, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = 0, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x0E, - /* Type: */ 0x01, - /* Flags: */ HFHF_END_HEADERS|HFHF_PRIORITY, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Exclusive: */ 0x00| - /* Dep Stream Id: */ - 0x00, 0x00, 0x12, 0x34, - /* Weight: */ 0x00, - /* Block fragment: */ - 0x48, 0x82, 0x64, 0x02, - 0x60, 0x03, 0x61, 0x3d, 0x62, - }, - .frt_bufsz = 9 + 5 + 4 + 5, - .frt_n_cb_vals = 1, - .frt_cb_vals = { - { - .type = CV_HEADERS, - .u.headers = { - .stream_id = 12345, - .oth_stream_id = 0x1234, - .weight = 1, - .exclusive = 0, - .off = 0, - .flags = UH_H1H, - HEADERS("HTTP/1.1 302 Found\r\n" - "Cookie: a=b\r\n\r\n"), - }, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = 0, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x18, - /* Type: */ 0x01, - /* Flags: */ HFHF_END_HEADERS|HFHF_PRIORITY, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Exclusive: */ 0x00| - /* Dep Stream Id: */ - 0x00, 0x00, 0x12, 0x34, - /* Weight: */ 0x00, - /* Block fragment: */ - 0x48, 0x82, 0x64, 0x02, - 0x60, 0x03, 0x61, 0x3d, 0x62, - 0x60, 0x03, 0x63, 0x3d, 0x64, - 0x60, 0x03, 0x65, 0x3d, 0x66, - }, - .frt_bufsz = 9 + 5 + 4 + 15, - .frt_n_cb_vals = 1, - .frt_cb_vals = { - { - .type = CV_HEADERS, - .u.headers = { - .stream_id = 12345, - .oth_stream_id = 0x1234, - .weight = 1, - .exclusive = 0, - .off = 0, - .flags = UH_H1H, - HEADERS("HTTP/1.1 302 Found\r\n" - "Cookie: a=b; c=d; e=f\r\n\r\n"), - }, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = FRF_SERVER, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x16, - /* Type: */ 0x01, - /* Flags: */ HFHF_END_HEADERS|HFHF_PRIORITY, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Exclusive: */ 0x00| - /* Dep Stream Id: */ - 0x00, 0x00, 0x12, 0x34, - /* Weight: */ 0x00, - /* Block fragment: */ - 0x82, 0x84, 0x86, 0x41, 0x8c, 0xf1, 0xe3, 0xc2, - 0xe5, 0xf2, 0x3a, 0x6b, 0xa0, 0xab, 0x90, 0xf4, - 0xff, - /* Length: */ 0x00, 0x00, 0xEE, - /* Type: */ HTTP_FRAME_CONTINUATION, - /* Flags: */ HFHF_END_HEADERS, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Block fragment: */ - 'W', 'H', 'A', 'T', 'E', 'V', 'E', 'R', - }, - .frt_bufsz = 9 + 5 + 17 - + 9 + 0 + 8, - .frt_err = 1, - .frt_in_off = 9 + 5 + 17 + 9, - .frt_n_cb_vals = 1, - .frt_cb_vals = { - { - .type = CV_HEADERS, - .u.headers = { - .stream_id = 12345, - .oth_stream_id = 0x1234, - .weight = 1, - .exclusive = 0, - .off = 0, - .flags = UH_H1H, - HEADERS("GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"), - }, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = FRF_SERVER, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x16, - /* Type: */ 0x01, - /* Flags: */ HFHF_END_HEADERS|HFHF_PRIORITY, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Exclusive: */ 0x00| - /* Dep Stream Id: */ - 0x00, 0x00, 0x12, 0x34, - /* Weight: */ 0x00, - /* Block fragment: */ - 0x82, 0x84, 0x86, 0x41, 0x8c, 0xf1, 0xe3, 0xc2, - 0xe5, 0xf2, 0x3a, 0x6b, 0xa0, 0xab, 0x90, 0xf4, - 0xff, - /* Length: */ 0x00, 0x00, 0xEE, - /* Type: */ HTTP_FRAME_CONTINUATION, - /* Flags: */ HFHF_END_HEADERS, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Block fragment: */ - 'W', 'H', 'A', 'T', 'E', 'V', 'E', 'R', - }, - .frt_bufsz = 9 + 5 + 17 - + 9 + 0 + 8, - .frt_err = 1, - .frt_in_off = 9 + 5 + 17 + 9, - .frt_n_cb_vals = 1, - .frt_cb_vals = { - { - .type = CV_HEADERS, - .u.headers = { - .stream_id = 12345, - .oth_stream_id = 0x1234, - .weight = 1, - .exclusive = 0, - .off = 0, - .flags = UH_H1H, - HEADERS("GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"), - }, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = FRF_SERVER, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x16, - /* Type: */ 0x01, - /* Flags: */ HFHF_PRIORITY, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Exclusive: */ 0x00| - /* Dep Stream Id: */ - 0x00, 0x00, 0x12, 0x34, - /* Weight: */ 0x00, - /* Block fragment: */ - 0x82, 0x84, 0x86, 0x41, 0x8c, 0xf1, 0xe3, 0xc2, - 0xe5, 0xf2, 0x3a, 0x6b, 0xa0, 0xab, 0x90, 0xf4, - 0xff, - /* Length: */ 0x00, 0x00, 0xEE, - /* Type: */ HTTP_FRAME_CONTINUATION, - /* Flags: */ HFHF_END_HEADERS, - /* Stream Id: */ 0x00, 0xFF, 0x30, 0x39, /* Stream ID does not match */ - /* Block fragment: */ - 'W', 'H', 'A', 'T', 'E', 'V', 'E', 'R', - }, - .frt_bufsz = 9 + 5 + 17 - + 9 + 0 + 8, - .frt_err = 1, - .frt_in_off = 9 + 5 + 17 + 9, - .frt_n_cb_vals = 0, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = FRF_SERVER, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0xEE, - /* Type: */ HTTP_FRAME_CONTINUATION, - /* Flags: */ HFHF_END_HEADERS, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Block fragment: */ - 'W', 'H', 'A', 'T', 'E', 'V', 'E', 'R', - }, - .frt_bufsz = 9 + 0 + 8, - .frt_err = 1, - .frt_in_off = 9, - .frt_n_cb_vals = 0, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = FRF_SERVER, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x10, - /* Type: */ 0x01, - /* Flags: */ 0x00, /* Note absence of HFHF_END_HEADERS */ - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Block fragment: - * perl hpack.pl :method GET :path / host www.example.com - */ - 0x82, 0x84, 0x66, 0x8c, 0xf1, 0xe3, 0xc2, 0xe5, - 0xf2, 0x3a, 0x6b, 0xa0, 0xab, 0x90, 0xf4, 0xff, - /* Length: */ 0x00, 0x00, 0x08, - /* Type: */ 0x01, - /* Flags: */ HFHF_END_HEADERS, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Block fragment: */ - 'W', 'H', 'A', 'T', 'E', 'V', 'E', 'R', - }, - .frt_bufsz = 9 + 0 + 16 - + 9 + 0 + 8, - .frt_in_off = 9 + 16 + 9, - .frt_err = 1, - .frt_n_cb_vals = 1, - .frt_cb_vals = { - { - .type = CV_ERROR, - .u.error = { - .stream_id = 0x3039, - .code = FR_ERR_EXPECTED_CONTIN, - }, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = FRF_SERVER, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x10, - /* Type: */ 0x01, - /* Flags: */ HFHF_END_HEADERS, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Block fragment: - * perl hpack.pl :method GET :path / host www.example.com - */ - 0x82, 0x84, 0x66, 0x8c, 0xf1, 0xe3, 0xc2, 0xe5, - 0xf2, 0x3a, 0x6b, 0xa0, 0xab, 0x90, 0xf4, 0xff, - /* Length: */ 0x00, 0x00, 0x1A, - /* Type: */ 0x01, - /* Flags: */ HFHF_END_HEADERS|HFHF_PRIORITY, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Exclusive: */ 0x00| - /* Dep Stream Id: */ - 0x00, 0x00, 0x12, 0x34, - /* Weight: */ 0x00, - /* Block fragment: - * perl hpack.pl :method GET :path / :scheme http Host www.example.com - */ - 0x82, 0x84, 0x86, 0x40, 0x83, 0xc6, 0x74, 0x27, - 0x8c, 0xf1, 0xe3, 0xc2, 0xe5, 0xf2, 0x3a, 0x6b, - 0xa0, 0xab, 0x90, 0xf4, 0xff, - /* Length: */ 0x00, 0x00, 0x11, - /* Type: */ 0x01, - /* Flags: */ HFHF_END_HEADERS, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Block fragment: */ - 0x82, 0x84, 0x86, 0x41, 0x8c, 0xf1, 0xe3, 0xc2, - 0xe5, 0xf2, 0x3a, 0x6b, 0xa0, 0xab, 0x90, 0xf4, - 0xff, - }, - .frt_bufsz = 9 + 0 + 16 - + 9 + 5 + 21 - + 9 + 0 + 17, - .frt_n_cb_vals = 3, - .frt_cb_vals = { - { - .type = CV_ERROR, - .u.error = { - .stream_id = 12345, - .code = FR_ERR_BAD_HEADER, - }, - }, - { - .type = CV_ERROR, - .u.error = { - .stream_id = 12345, - .code = FR_ERR_BAD_HEADER, - }, - }, - { - .type = CV_HEADERS, - .u.headers = { - .stream_id = 12345, - .oth_stream_id = 0, - .weight = 0, - .exclusive = -1, - .off = 0, - .flags = UH_H1H, - HEADERS("GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"), - }, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = 0, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x15, - /* Type: */ HTTP_FRAME_PUSH_PROMISE, - /* Flags: */ HFHF_END_HEADERS, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Dep stream Id: */0x00, 0x12, 0x34, 0x56, - /* Block fragment: */ - 0x82, 0x84, 0x86, 0x41, 0x8c, 0xf1, 0xe3, 0xc2, - 0xe5, 0xf2, 0x3a, 0x6b, 0xa0, 0xab, 0x90, 0xf4, - 0xff, - }, - .frt_bufsz = 9 + 0 + 0x15, - .frt_n_cb_vals = 1, - .frt_cb_vals = { - { - .type = CV_PUSH_PROMISE, - .u.headers = { - .stream_id = 12345, - .oth_stream_id = 0x123456, - .flags = UH_PP | UH_H1H, - HEADERS("GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"), - }, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = 0, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x02, - /* Type: */ HTTP_FRAME_HEADERS, - /* Flags: */ 0x00, - 0x80| /* <----- This bit must be ignored */ - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Block fragment: */ - 0x48, 0x82, - /* Length: */ 0x00, 0x00, 0x02, - /* Type: */ HTTP_FRAME_CONTINUATION, - /* Flags: */ HFHF_END_HEADERS, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Block fragment: */ - 0x64, 0x02, - }, - .frt_bufsz = 9 + 2 + 9 + 2, - .frt_n_cb_vals = 1, - .frt_cb_vals = { - { - .type = CV_HEADERS, - .u.headers = { - .stream_id = 12345, - .oth_stream_id = 0, - .weight = 0, - .exclusive = -1, - .off = 0, - .flags = UH_H1H, - HEADERS("HTTP/1.1 302 Found\r\n\r\n"), - }, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = 0, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x00, - /* Type: */ HTTP_FRAME_SETTINGS, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - }, - .frt_bufsz = 9, - .frt_n_cb_vals = 1, - .frt_err = 1, - .frt_cb_vals = { - { - .type = CV_ERROR, - .u.error.code = FR_ERR_INVALID_FRAME_SIZE, - .u.error.stream_id = 12345, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = 0, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x07, - /* Type: */ HTTP_FRAME_SETTINGS, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - }, - .frt_bufsz = 9 + 7, - .frt_n_cb_vals = 1, - .frt_err = 1, - .frt_in_off = 9, - .frt_cb_vals = { - { - .type = CV_ERROR, - .u.error.code = FR_ERR_INVALID_FRAME_SIZE, - .u.error.stream_id = 12345, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = 0, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x06, - /* Type: */ HTTP_FRAME_SETTINGS, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - }, - .frt_bufsz = 9 + 6, - .frt_n_cb_vals = 1, - .frt_err = 1, - .frt_in_off = 9, - .frt_cb_vals = { - { - .type = CV_ERROR, - .u.error.code = FR_ERR_NONZERO_STREAM_ID, - .u.error.stream_id = 12345, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = 0, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x0C, - /* Type: */ HTTP_FRAME_SETTINGS, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x00, 0x00, - 0x00, SETTINGS_INITIAL_WINDOW_SIZE, - 0x01, 0x02, 0x03, 0x04, - 0x00, SETTINGS_HEADER_TABLE_SIZE, - 0x02, 0x03, 0x04, 0x05, - }, - .frt_bufsz = 9 + 12, - .frt_n_cb_vals = 2, - .frt_cb_vals = { - { - .type = CV_SETTINGS, - .u.setting.id = SETTINGS_INITIAL_WINDOW_SIZE, - .u.setting.value = 0x01020304, - }, - { - .type = CV_SETTINGS, - .u.setting.id = SETTINGS_HEADER_TABLE_SIZE, - .u.setting.value = 0x02030405, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = 0, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x09, - /* Type: */ 0x01, - /* Flags: */ HFHF_END_HEADERS|HFHF_PRIORITY, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Exclusive: */ 0x00| - /* Dep Stream Id: */ - 0x00, 0x00, 0x12, 0x34, - /* Weight: */ 0x00, - /* Block fragment: */ - 0x48, 0x82, 0x64, 0x02, - /* Length: */ 0x00, 0x00, 0x06, - /* Type: */ HTTP_FRAME_SETTINGS, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x00, 0x00, - 0x00, SETTINGS_INITIAL_WINDOW_SIZE, - 0x01, 0x02, 0x03, 0x04, - }, - .frt_bufsz = 9 + 5 + 4 + 9 + 6, - .frt_max_headers_sz = 10, - .frt_n_cb_vals = 2, - .frt_cb_vals = { - { - .type = CV_ERROR, - .stream_off = 9 + 5 + 4, - .u.error.code = FR_ERR_BAD_HEADER, - .u.error.stream_id = 12345, - }, - { - .type = CV_SETTINGS, - .u.setting.id = SETTINGS_INITIAL_WINDOW_SIZE, - .u.setting.value = 0x01020304, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = 0, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x11, - /* Type: */ 0x01, - /* Flags: */ HFHF_END_HEADERS, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Block fragment: */ - /* 0x11 bytes of no consequence: they are not - * parsed. - */ - 000, 001, 002, 003, 004, 005, 006, 007, - 010, 011, 012, 013, 014, 015, 016, 017, - 020, - /* Length: */ 0x00, 0x00, 0x06, - /* Type: */ HTTP_FRAME_SETTINGS, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x00, 0x00, - 0x00, SETTINGS_INITIAL_WINDOW_SIZE, - 0x01, 0x02, 0x03, 0x04, - }, - .frt_bufsz = 9 + 0 + 0x11 + 9 + 6, - .frt_max_headers_sz = 0x10, - .frt_n_cb_vals = 2, - .frt_cb_vals = { - { - .type = CV_ERROR, - .stream_off = 9, - .u.error.code = FR_ERR_BAD_HEADER, - .u.error.stream_id = 12345, - }, - { - .type = CV_SETTINGS, - .u.setting.id = SETTINGS_INITIAL_WINDOW_SIZE, - .u.setting.value = 0x01020304, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = 0, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x10, - /* Type: */ 0x01, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Block fragment: */ - /* 0x10 bytes of no consequence: they are not - * parsed. - */ - 000, 001, 002, 003, 004, 005, 006, 007, - 010, 011, 012, 013, 014, 015, 016, 017, - /* Length: */ 0x00, 0x00, 0x10, - /* Type: */ HTTP_FRAME_CONTINUATION, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Block fragment: */ - 000, 001, 002, 003, 004, 005, 006, 007, - 010, 011, 012, 013, 014, 015, 016, 017, - /* Length: */ 0x00, 0x00, 0x10, - /* Type: */ HTTP_FRAME_CONTINUATION, - /* Flags: */ HFHF_END_HEADERS, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Block fragment: */ - 000, 001, 002, 003, 004, 005, 006, 007, - 010, 011, 012, 013, 014, 015, 016, 017, - /* Length: */ 0x00, 0x00, 0x06, - /* Type: */ HTTP_FRAME_SETTINGS, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x00, 0x00, - 0x00, SETTINGS_INITIAL_WINDOW_SIZE, - 0x01, 0x02, 0x03, 0x04, - }, - .frt_bufsz = 9 + 0 + 0x10 + 9 + 0 + 0x10 + 9 + 0 + 0x10 + 9 + 6, - .frt_max_headers_sz = 0x19, - .frt_n_cb_vals = 2, - .frt_cb_vals = { - { - .type = CV_ERROR, - .stream_off = 9 + 0 + 0x10 + 9, - .u.error.code = FR_ERR_BAD_HEADER, - .u.error.stream_id = 12345, - }, - { - .type = CV_SETTINGS, - .u.setting.id = SETTINGS_INITIAL_WINDOW_SIZE, - .u.setting.value = 0x01020304, - }, - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = 0, - .frt_buf = { - /* Length: */ 0x00, 0x00, - 0x04, /* <-- wrong payload size */ - /* Type: */ HTTP_FRAME_PRIORITY, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x00, 0x39, - /* Dep Stream Id: */0x80, 0x00, 0x00, 0x19, - /* Weight: */ 0x77, - }, - .frt_bufsz = 9 + 5, - .frt_n_cb_vals = 1, - .frt_err = 1, - .frt_in_off = 9, - .frt_cb_vals = { - { - .type = CV_ERROR, - .stream_off = 9, - .u.error.code = FR_ERR_INVALID_FRAME_SIZE, - .u.error.stream_id = 0x39, - } - }, - }, - - { .frt_lineno = __LINE__, - .frt_fr_flags = 0, - .frt_buf = { - /* Length: */ 0x00, 0x00, 0x05, - /* Type: */ HTTP_FRAME_PRIORITY, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x00, 0x00, /* Invalid stream ID */ - /* Dep Stream Id: */0x80, 0x00, 0x00, 0x19, - /* Weight: */ 0x77, - }, - .frt_bufsz = 9 + 5, - .frt_n_cb_vals = 1, - .frt_err = 1, - .frt_in_off = 9, - .frt_cb_vals = { - { - .type = CV_ERROR, - .stream_off = 9, - .u.error.code = FR_ERR_ZERO_STREAM_ID, - .u.error.stream_id = 0x00, - } - }, - }, - - { - .frt_bufsz = 0, - }, -}; - - -static struct lsquic_stream * -my_get_stream_by_id (struct lsquic_conn *conn, lsquic_stream_id_t stream_id) -{ - return (void *) my_get_stream_by_id; -} - - -static void -test_one_frt (const struct frame_reader_test *frt) -{ - struct lsquic_frame_reader *fr; - unsigned short exp_off; - struct lshpack_dec hdec; - struct lsquic_mm mm; - struct lsquic_conn lconn; - struct lsquic_conn_public conn_pub; - struct lsquic_stream stream; - int s; - struct conn_iface my_conn_if; - -#if LSQUIC_CONN_STATS - struct conn_stats conn_stats; - memset(&conn_stats, 0, sizeof(conn_stats)); -#endif - - memset(&stream, 0, sizeof(stream)); - memset(&lconn, 0, sizeof(lconn)); - memset(&conn_pub, 0, sizeof(conn_pub)); - memset(&my_conn_if, 0, sizeof(my_conn_if)); - my_conn_if.ci_get_stream_by_id = my_get_stream_by_id; - lconn.cn_if = &my_conn_if; - stream.conn_pub = &conn_pub; - conn_pub.lconn = &lconn; - - lsquic_mm_init(&mm); - - top: - lshpack_dec_init(&hdec); - memset(&input, 0, sizeof(input)); - memcpy(input.in_buf, frt->frt_buf, frt->frt_bufsz); - input.in_sz = frt->frt_bufsz; - - do - { - reset_cb_ctx(&g_cb_ctx); - input.in_off = 0; - ++input.in_max_sz; - - fr = lsquic_frame_reader_new(frt->frt_fr_flags, frt->frt_max_headers_sz, - &mm, &stream, read_from_stream, &hdec, &frame_callbacks, &g_cb_ctx, -#if LSQUIC_CONN_STATS - &conn_stats, -#endif - lsquic_http1x_if, NULL); - do - { - s = lsquic_frame_reader_read(fr); - if (s != 0) - break; - } - while (input.in_off < input.in_sz); - - assert(frt->frt_err || 0 == s); - - if (my_conn_if.ci_get_stream_by_id) - { - assert(g_cb_ctx.n_cb_vals == frt->frt_n_cb_vals); - - unsigned i; - for (i = 0; i < g_cb_ctx.n_cb_vals; ++i) - compare_cb_vals(&g_cb_ctx.cb_vals[i], &frt->frt_cb_vals[i]); - } - - exp_off = frt->frt_in_off; - if (!exp_off) - exp_off = frt->frt_bufsz; - assert(input.in_off == exp_off); - - lsquic_frame_reader_destroy(fr); - } - while (input.in_max_sz < input.in_max_req_sz); - lshpack_dec_cleanup(&hdec); - - if (!(frt->frt_fr_flags & FRF_SERVER) && my_conn_if.ci_get_stream_by_id) - { - /* Do it again, but this time test header block skip logic */ - my_conn_if.ci_get_stream_by_id = NULL; - goto top; - } - - lsquic_mm_cleanup(&mm); -} - - -int -main (int argc, char **argv) -{ - int opt; - - while (-1 != (opt = getopt(argc, argv, "l:"))) - { - switch (opt) - { - case 'l': - lsquic_log_to_fstream(stderr, LLTS_NONE); - lsquic_logger_lopt(optarg); - break; - default: - exit(1); - } - } - - const struct frame_reader_test *frt; - for (frt = tests; frt->frt_bufsz > 0; ++frt) - test_one_frt(frt); - return 0; -} diff --git a/external/lsquic/tests/test_frame_rw.c b/external/lsquic/tests/test_frame_rw.c deleted file mode 100644 index f4b7dbb..0000000 --- a/external/lsquic/tests/test_frame_rw.c +++ /dev/null @@ -1,10350 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * Generate a few thousand headers, frame them using frame writer, read them - * using frame reader, parse them, and compare with the original list: the - * two should be identical (we ignore pseudo-headers). - * - * Two variables change: - * 1. Maximum frame size for the writer; and - * 2. Maximum read size for the reader. - */ - -#include -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#else -#include "getopt.h" -#endif -#include - -#include "lsquic.h" -#include "lshpack.h" -#include "lsquic_logger.h" -#include "lsquic_mm.h" -#include "lsquic_frame_common.h" -#include "lsquic_frame_writer.h" -#include "lsquic_frame_reader.h" -#include "lsquic_headers.h" -#include "lsquic_http1x_if.h" -#include "lsquic_int_types.h" -#include "lsquic_hash.h" -#include "lsquic_conn.h" - - -struct lsquic_stream -{ - size_t sm_sz, /* Useable bytes in `buf' */ - sm_buf_sz; /* Number of bytes allocated */ - size_t sm_off, /* Offset when reading */ - sm_max_req_sz, /* Maximum read size recorded */ - sm_max_sz; /* Maximum read size */ - unsigned char *sm_buf; -}; - - -static const lsquic_cid_t my_cid = { .len = 8, }; - -#if !defined(NDEBUG) && __GNUC__ -__attribute__((weak)) -#endif -const lsquic_cid_t * -lsquic_conn_id (const lsquic_conn_t *lconn) -{ - return &my_cid; -} - -static struct lsquic_stream * -my_get_stream_by_id (struct lsquic_conn *conn, lsquic_stream_id_t stream_id) -{ - return (void *) my_get_stream_by_id; -} - -static const struct conn_iface s_if = { .ci_get_stream_by_id = my_get_stream_by_id, }; -static struct lsquic_conn s_conn = { .cn_if = &s_if, }; - -#if !defined(NDEBUG) && __GNUC__ -__attribute__((weak)) -#endif -lsquic_conn_t * -lsquic_stream_conn (const lsquic_stream_t *stream) -{ - return &s_conn; -} - - -static struct lsquic_stream * -stream_new (void) -{ - struct lsquic_stream *stream = calloc(1, sizeof(*stream)); - return stream; -} - - -static void -stream_destroy (struct lsquic_stream *stream) -{ - free(stream->sm_buf); - free(stream); -} - - -#define reset_output(max_) do { \ - output.sz = 0; \ - if (max_) \ - output.max = max_; \ - else \ - output.max = sizeof(output.buf);\ -} while (0) - - -static ssize_t -stream_write (struct lsquic_stream *stream, struct lsquic_reader *reader) -{ - size_t sz; - - sz = reader->lsqr_size(reader->lsqr_ctx); - if (stream->sm_sz + sz > stream->sm_buf_sz) - { - if (stream->sm_sz + sz < stream->sm_buf_sz * 2) - stream->sm_buf_sz *= 2; - else - stream->sm_buf_sz = stream->sm_sz + sz; - stream->sm_buf = realloc(stream->sm_buf, stream->sm_buf_sz); - } - - sz = reader->lsqr_read(reader->lsqr_ctx, - stream->sm_buf + stream->sm_sz, sz); - stream->sm_sz += sz; - - return sz; -} - - -static ssize_t -read_from_stream (struct lsquic_stream *stream, void *buf, size_t sz) -{ - if (sz > stream->sm_max_req_sz) - stream->sm_max_req_sz = sz; - if (stream->sm_sz - stream->sm_off < sz) - sz = stream->sm_sz - stream->sm_off; - if (sz > stream->sm_max_sz) - sz = stream->sm_max_sz; - memcpy(buf, stream->sm_buf + stream->sm_off, sz); - stream->sm_off += sz; - return sz; -} - - -static void -on_incoming_headers (void *ctx, struct uncompressed_headers *uh) -{ - struct uncompressed_headers **uhp = ctx; - *uhp = uh; -} - - -static void -on_error (void *ctx, lsquic_stream_id_t stream_id, - enum frame_reader_error error) -{ - assert(0); -} - - -static const struct frame_reader_callbacks frame_callbacks = { - .frc_on_headers = on_incoming_headers, - .frc_on_error = on_error, -}; - -#define N_HEADERS 10001 -static struct lsxpack_header header_arr[N_HEADERS]; - - -static void -compare_headers (struct uncompressed_headers *uh) -{ - struct http1x_headers *h1h; - char line[0x100], *s; - FILE *in; - unsigned i; - - assert(uh->uh_flags & UH_H1H); - h1h = uh->uh_hset; - in = fmemopen(h1h->h1h_buf, h1h->h1h_size, "r"); - for (i = 0; i < N_HEADERS; ++i) - { - s = fgets(line, sizeof(line), in); - assert(s); - if (i == 0) - assert(0 == strcmp(line, "HTTP/1.1 200 OK\r\n")); - else - { - s = strchr(line, ':'); - assert(s); - assert(' ' == s[1]); - assert(s - line == (long) header_arr[i].name_len); - assert(0 == memcmp(lsxpack_header_get_name(&header_arr[i]), line, s - line)); - s += 2; - assert(strlen(s) == (size_t) header_arr[i].val_len + 2); - assert(0 == memcmp(lsxpack_header_get_value(&header_arr[i]), s, header_arr[i].val_len)); - assert(0 == strcmp(s + header_arr[i].val_len, "\r\n")); - } - } - - s = fgets(line, sizeof(line), in); - assert(s); - assert(0 == strcmp(s, "\r\n")); - - s = fgets(line, sizeof(line), in); - assert(!s); - assert(feof(in)); - - fclose(in); -} - -static void -test_rw (unsigned max_frame_sz) -{ - struct lsquic_frame_writer *fw; - struct lsquic_frame_reader *fr; - struct lsquic_stream *stream; - struct uncompressed_headers *uh; - struct lsquic_mm mm; - struct lshpack_enc henc; - struct lshpack_dec hdec; - int s; -#if LSQUIC_CONN_STATS - struct conn_stats conn_stats; - memset(&conn_stats, 0, sizeof(conn_stats)); -#endif - - lsquic_mm_init(&mm); - lshpack_enc_init(&henc); - lshpack_dec_init(&hdec); - stream = stream_new(); - stream->sm_max_sz = 1; - - fw = lsquic_frame_writer_new(&mm, stream, max_frame_sz, &henc, - stream_write, -#if LSQUIC_CONN_STATS - &conn_stats, -#endif - 0); - - struct lsquic_http_headers headers = { - .count = N_HEADERS, - .headers = header_arr, - }; - - s = lsquic_frame_writer_write_headers(fw, 12345, &headers, 0, 100); - assert(0 == s); - - do - { - uh = NULL; - stream->sm_off = 0; - - fr = lsquic_frame_reader_new(0, 0, &mm, stream, read_from_stream, &hdec, - &frame_callbacks, &uh, -#if LSQUIC_CONN_STATS - &conn_stats, -#endif - lsquic_http1x_if, NULL); - do - { - s = lsquic_frame_reader_read(fr); - if (s != 0) - break; - } - while (stream->sm_off < stream->sm_sz); - assert(0 == s); - assert(uh); - - compare_headers(uh); - - lsquic_frame_reader_destroy(fr); - lsquic_http1x_if->hsi_discard_header_set(uh->uh_hset); - free(uh); - - assert(stream->sm_max_req_sz >= sizeof(struct http_frame_header)); - stream->sm_max_sz += stream->sm_max_req_sz / 8; - } - while (stream->sm_max_sz < stream->sm_max_req_sz); - - lsquic_frame_writer_destroy(fw); - stream_destroy(stream); - lshpack_enc_cleanup(&henc); - lshpack_dec_cleanup(&hdec); - lsquic_mm_cleanup(&mm); -} - - -int -main (int argc, char **argv) -{ - const unsigned frame_sizes[] = { -#if defined(__has_feature) -#if __has_feature(address_sanitizer) -#define TEST_SMALL_FRAME_SIZES 0 -#endif -#endif -#ifndef TEST_SMALL_FRAME_SIZES -#define TEST_SMALL_FRAME_SIZES 1 -#endif -#if TEST_SMALL_FRAME_SIZES - /* Do not test small frame sizes if Address Sanitizer is compiled - * in -- it cannot cope with many allocations that are produced by - * this test. - */ - 6, 7, 8, 9, 10, 11, 20, -#endif - 30, 100, 200, 255, 0xFFF, 0x1000, 0x100D, - UINT_MAX, }; - unsigned i; - int opt, max_frame_sz = -1; - - while (-1 != (opt = getopt(argc, argv, "l:s:"))) - { - switch (opt) - { - case 'l': - lsquic_log_to_fstream(stderr, LLTS_NONE); - lsquic_logger_lopt(optarg); - break; - case 's': - max_frame_sz = atoi(optarg); - break; - default: - exit(1); - } - } - - if (max_frame_sz < 0) - for (i = 0; i < sizeof(frame_sizes) / sizeof(frame_sizes[0]); ++i) - test_rw(frame_sizes[i]); - else if ((size_t) max_frame_sz < sizeof(struct http_prio_frame)) - { - fprintf(stderr, "max_frame_sz = %d is too small a value\n", - max_frame_sz); - return 1; - } - else - test_rw(max_frame_sz); - - return 0; -} - - -#define XHDR(name_, value_) .buf = name_ value_, .name_offset = 0, .name_len = sizeof(name_) - 1, .val_offset = sizeof(name_) - 1, .val_len = sizeof(value_) - 1, - -/* This list is hardcoded to make the test deterministic */ -static struct lsxpack_header header_arr[N_HEADERS] = -{ - { XHDR(":status", "200") }, - /* Generated using tools/generate-headers.pl */ - { XHDR("a", "Fv") }, - { XHDR("jwfgrxwwlgxk", "tVoAUIJANdnIXvqcLOHBgiDaNkFlTbtwwrJbnqPSM") }, - { XHDR("nozwn", "PLvXBHdzgTxVNxHGVD") }, - { XHDR("kixxrjdkztouvl", "SMRwVKJkYvPNZISQQI") }, - { XHDR("jfnymjcccnrxaswc", "SQwkiHAIMrrOHQwIauZqbUtmoXzsXQCqWBcBOxXkSIcQQCbtHqctWkpEWhlYWUMtzFWOqnkoGzvL") }, - { XHDR("fsokryuwcirnwa", "hsZveHerAFgMSQPklcOlqmetjIGlVcYtTqZWadpLaKss") }, - { XHDR("ildcdoml", "czrUShQL") }, - { XHDR("bomrhltgvwcxggp", "hRIY") }, - { XHDR("uswjmcnejgcomgrchloe", "AKDeVINsfggLfyLsOduXrP") }, - { XHDR("rpx", "pFTzuQXxrlFeDQXZnYpMZDamKKJWVpqjgJtN") }, - { XHDR("ooucpbffasju", "EP") }, - { XHDR("coseljcqnlkferea", "PrjIaXCaZBMCpFzpmSJjaHvGCCRsYoPzSGUQgUtK") }, - { XHDR("wmmgbskgkmjz", "gIS") }, - { XHDR("ikmnlqg", "fsBOEejxktYebN") }, - { XHDR("wxzrttatcbjjcmdztx", "EWFrgVw") }, - { XHDR("jibigghpnjifkefgxrgo", "onujtLRvOEIPZtFJBsmohvNkvfEouJZRJyUoxUUjQFvA") }, - { XHDR("fqkvdxnnbyajs", "QtrUzVQZBsgTKMiVUansPcLvWkkCnafnxoFQvTBxpZcjuidQgbIZwSXAeO") }, - { XHDR("qiyihctufcwoxynhjwz", "iegCbvHkeo") }, - { XHDR("d", "fKbBzxCBWPJLzpPHISuMTwoZHFtyiRpzlyXRlgHACMarnboPAQMp") }, - { XHDR("crvcg", "tYAQQRvbwemzItfohlzqq") }, - { XHDR("yf", "SHiJIobvtGrJVZdwwVUvukFSpKE") }, - { XHDR("vjmnnpijhhdtrisnz", "bUDtxTfKzZipbafXGUprYElYfShmvkzlWaGMtWPjPniCPMarWwyaTQldvSeWwVNDE") }, - { XHDR("bwswbhtftzqee", "EKHLAVPOjwNcMMX") }, - { XHDR("u", "EAtoQWetslSrVTeVJTIzXbmwVYUtAYYaObEOARSJKERNLuDHGKdOBsMzyaNTVItnWKgW") }, - { XHDR("kxvervxetmysjcpcsqp", "nOtKFxnHPSNaDWLojeQiYkJNgSCwGkfFaHIfuVdVPr") }, - { XHDR("xbwgtmuoznllapzaj", "vvqlYHnwZZHIAIaeweEhechJMGcqTwTOhkeGmKcXucSpgPRxvydm") }, - { XHDR("awhlzhgklpxqjq", "XNEkYXFOmj") }, - { XHDR("fqfsuhropauu", "TqoAFegeY") }, - { XHDR("djgckfmmyg", "hVbmbsyawdK") }, - { XHDR("trmvf", "eZXQfrWYssiJSviraCdgHJxnQNZdBTbkvqNObubYXHbAgEbYqgsQhdImYuXIxoHVWHpdwVaFK") }, - { XHDR("yzatdlj", "bwZKJi") }, - { XHDR("srqsqrwobxgmd", "uZH") }, - { XHDR("fvrueysquqgwvbo", "YxMHTlsf") }, - { XHDR("ab", "XtpTxRnzHVhLZhPQsfHiSfQsxWoRWsRpEHjXjcFcRQHzysvMVyVIu") }, - { XHDR("apjycglorwluenpiy", "OvEKJhywkUXSNgNikHijjLeSpKPixICfFNvHEJctZttJeghRtSwCaAKMdEHaAb") }, - { XHDR("qxklmfzoxk", "gGAgeeRuBaNYYBZpLxfVrVqsotCWpljSMBRlWgoZjZCLdLq") }, - { XHDR("sysecb", "KneinITgCFRBdfGCitwGYVGWzDPJkhFCdJaRUKXVdzTtzKpCgXb") }, - { XHDR("xwn", "TkaUBBWsJRSXtFOlmVEplIPQfRrzrFdqkgzZDaCZwrcMXufnLKmbEKyDTcOAofXUD") }, - { XHDR("mdalnxpv", "vnCfFo") }, - { XHDR("vpfvlkodosunui", "xQxrvDHmsfcposZDivxiyhBClmcmBgSCEkaCumYvhBxJeSQPWBgZs") }, - { XHDR("phzskahgwpwctududk", "uMyjPWZQjOjItzXbtalNXlTnh") }, - { XHDR("iqkbvwutzvtxlpzobhx", "gZOzjZfNVGfJJfePdMlddzIAYwrUfcxKxyBgfdyIMwAknADEIByNxSRcrOPURvNKdsvHDzaZl") }, - { XHDR("cjfadyhpshp", "lCoAXdHT") }, - { XHDR("qffcwlzrantvlh", "gplMDEYgvOXGwkqD") }, - { XHDR("vowtuifcsrr", "dOLiwrfveWeXuRvRMBtuJocxRadeZQMckJBwWcWViOcxQf") }, - { XHDR("ltvwxqgzifvfwwrupj", "wWFfEKEtPZhvRlHNGuFvEYzETO") }, - { XHDR("lgykfyoegywelmnmk", "gVuHvUZlfsCOZsvdfKYnWDocojREJmBzSfRCuyfNBtXXfGPfQNJcbckkJKr") }, - { XHDR("ianjs", "XZnCGEKTBNkbTdcMrdEGcqxZyVGrJVkEymVxzsi") }, - { XHDR("xkkhqxwqcvluwsz", "NxIZeewUfDiSiD") }, - { XHDR("mltmixj", "AncPKVLzUchKoKLSFyCop") }, - { XHDR("tkgztwkbsdoxrohnwnmq", "XRfzukuHYD") }, - { XHDR("nrx", "dDWMrNUMwCSsvOw") }, - { XHDR("faubvno", "RcqaiSjrxRJgjPAGHxbdOyRVGlpFaIsbyCwCdkouQYuPUDOrBFcyeCLVlwzEcraWdyQ") }, - { XHDR("rbucgu", "cktucIrsNANCanonVPwVZAZLDwpovifsenoaDVyjdSDVcaGKidpuEfr") }, - { XHDR("vmprnqzhtcina", "cAZTtjsaxmfcwbjWeQyeACrdJFCbKOuYMtRprGVweBBDEIBnecroFVGRdbkMwDiUevfZRHtQsHUuZwXi") }, - { XHDR("wlzfjudhgmhabhcdywun", "hyJMsJUEHfeQyVLDVFoBnxqjQXwtc") }, - { XHDR("udfyi", "autGUVfpsCZICUQOyTFkcssjURUFvsNTsRpduCizBoZLG") }, - { XHDR("eocdyfayzvofes", "wSxNqBvLryBGcNxmXHpKMozIrVmjztcDymlCIyUwdCgVkGgk") }, - { XHDR("qcwdllognwweakv", "LhOiOxJwYve") }, - { XHDR("jjz", "NaCGdOodBGYXXlJmFOJjmvvtNbXXZLfWxwdCbHoKNeXhwnXTlXbedsWOhYLtRmEKfaKCKtqc") }, - { XHDR("tkejgyxdsimn", "igfTEPPlHFMgtWIQMElRBEoLwlahmKnRouiVDGIktcCFvzMKnM") }, - { XHDR("nqjfmra", "pyUXfaafdHHxCYCriwWQNjtRmuXmFmhYmogMhoZUkxRdGNTcIuf") }, - { XHDR("bumr", "pQVxPKkcuZVjAfvrZaNPuYyTxei") }, - { XHDR("yxkyuravwowfpsotsao", "XeGUmAddSWSnuXbTjS") }, - { XHDR("ogjvsgo", "oirQCiiNqSChgMzwkDSsyrTkbjkKpIXyzybazCauGIuaw") }, - { XHDR("mtxvstjbgymgsohvygi", "sERlIUZMPxqGjWyIWtCtCcGgnIkpbpuHoorgnEYLzmklZQpdhrQSdQYGlX") }, - { XHDR("ejsmeavqywbvizvlvyd", "iK") }, - { XHDR("eitwamw", "anAHAgmoWJrIDAgcMIWHrnQRZeiaQg") }, - { XHDR("qtu", "KdlzoMxxeIZqIwudosadAgQyUDscmBvZExFtukiMCpBTgcMAXPJnvOtkzvAYLHJQoEZixnjBVoQ") }, - { XHDR("xwzsjf", "zPeEApsMZDjxuMqHfmvRkkJLNcrHMIybOjNrBdzBqg") }, - { XHDR("wyf", "ahUCoivUrHgcjsdyhSCoogklZffxdFFXBRBsGrrqZMidcvcu") }, - { XHDR("gvvijkhvsl", "xDDAqvMlyCbHEXWxEZUHwEgvWkPtXyiEyjdwhapOQtyFQwMoU") }, - { XHDR("uijgjxijyxpektoqwd", "POTha") }, - { XHDR("uidssnanlyxzzns", "ODvezqwvHsHrjdrlMdclZBefSBFinwkyvYWfvLxaEswxgZnQmCBmC") }, - { XHDR("bv", "WUYOGCyLOPgZFKpvtYSKAmNWqHUbZeZlpxSgZeMmewEyPnFtzFnzNRqhxMbtgoIpeDIvT") }, - { XHDR("rcvtifvnbfrzwsn", "HWgAOYKAYMyGkPkmkqLfwUHQoHlOoXwMfplHrMjBvlaLAqdAYnozkiOplrDyyQuaPKLXEwpyrZ") }, - { XHDR("eucjpsrkdvtdju", "waXsyzKzyAeeTFlJlZiTWMoXqQIcIEsumPZshHRzWniDKJXMIJdxlgpdhygywat") }, - { XHDR("rluwiiinim", "xmmhNiyIRZGfCTJqYShqtwlcKUgAYpRhQzLpphYPqEtLUFvUFwbFKVLOGLbhhYMXuFsdLGHNWIkpfcvq") }, - { XHDR("cxtgakjnszpbmhr", "DOBvUnTgaXPgePVXUGnoGbLUPdusotheRNsbtzhUMizukWGsexAnYXYXRxzqftzUWtamX") }, - { XHDR("hrxu", "eSYXicRILNtmOucqCxYiJSnas") }, - { XHDR("hwxtb", "nENDaICzxxTdGfStCjxBnPCXErglMHncPptgqKQApRHPHgHXbRRLarLUcaOHRS") }, - { XHDR("qecjrytmsxk", "okOFRwOhlYbhqzLLyLOR") }, - { XHDR("tmrtuvh", "eCqwBoWaALxkrHGtMmggzaPqUwdGMztrcBZmWcXcnjIySGzZVBcpoewvRrO") }, - { XHDR("ufbpadohzdvgpgffjqa", "nITdQrwEhuPGhnIJLpdOgzjNBDTOPKinQpNtVyVsSLNBKmHYQyyuUx") }, - { XHDR("uxol", "NOwKNkVIAMxwCCUSWMfuwQvmYSHyQUpzjzkxujGcOGVPUCJsnocHefHSLCJzNOfjs") }, - { XHDR("xfibdpdmc", "AXMqhobsCYYnysgg") }, - { XHDR("r", "CLOqTHNnUj") }, - { XHDR("kilzzlmiqik", "bcnHGGbuPGyqOuCLui") }, - { XHDR("iqqszt", "SZukuowHIesKYC") }, - { XHDR("txhzzgduulxyet", "GEDNIQcCUpFNvDtZ") }, - { XHDR("pbihd", "xCQHqmFsxbzWpuPOTBFgLUpYzdgJtyPBkEYHVRODlLRoXHQoWmDvMNBq") }, - { XHDR("ncaasdysey", "SmixDbQXHMkJOujGzjyWkm") }, - { XHDR("bvgcmwnwbwfbrncqsg", "mLjpHRXUyklruCrY") }, - { XHDR("xdddctrdv", "eWtEJLhrmYgrSHEZiunrMVMLxHcYBjMfmdzIeHKhptBdZmKFOEkHfIDg") }, - { XHDR("ioseo", "jyvYgOqCauYdvpYTGxPalaASrVUsKkYRwLAzbdCohEn") }, - { XHDR("tbqkulxvicgyorotgeuy", "zFCiDjetrVK") }, - { XHDR("orceihetaoqdqrpl", "BIjGGLreOSDXqkVYVoaupQxXmkhYAUnRosolhUvF") }, - { XHDR("tkexneuwlwkto", "jAmbLURPmEMYousdrVcNdeyxxRIZq") }, - { XHDR("dmyeirhtu", "JDaULQUqQkvOzEpPKIWouWMEuxTNyRiFevh") }, - { XHDR("di", "AecJgvXAT") }, - { XHDR("mqbzyedyzrpbgrsl", "VZzydvYbYXVnYOBHoWTBBLfUZMKuOpztzemMBFqNgzpMOAqQEVKMKGdWB") }, - { XHDR("bzlqhfxyviuaxosiudq", "foUjCUhNZSDAqLWgVMqdnprkLsZNhBdmrzXPJsXxuU") }, - { XHDR("zmunpnwxetjsftvpo", "eDHwaGgNEz") }, - { XHDR("abyn", "nsRKRzDjCYvLuQNbKuWgWtAHDJuCJALAQPofQqpRSzStVjwSEyporbjMnnPMIlH") }, - { XHDR("rfwokjpijqdslu", "BoaxDwAvoorhJRjCI") }, - { XHDR("nbphdigpkajry", "YeXHMKPAfJYqkSoQbmapFIPnjPcSqJkYOxQEKOOqBecfYbUFpKXOKdTvjytCa") }, - { XHDR("ltapcdtacdm", "kkvUBOnBuEArmUweYcUbNRNyZzMPkEsaXSEdsfCkPEFWE") }, - { XHDR("swe", "mMEQvujpOLJdSQbOLTqTOcEdpyFcLICqlJJpRHKhqs") }, - { XHDR("pxrpqhkcryo", "CLqaYWCQjlQnmiIGQUTTkWtVEONdUNZVvywShCnanbtGJDIqnOwGLutYmGyNlPCmPHjfvrn") }, - { XHDR("jmjazyjgeqrvaocaoxuc", "dFjAvsTJqJKBknyLRlLtcEXHKUqGvdPStFjcRnFoOxkkpFHLDxw") }, - { XHDR("bfilakfoqrq", "DiHFtXTmcQZZCfUkbPVcwBFzhSTWTLQEkDxpEByxAoVyOAvQUiMfiKBmdtlLNLVcEjtuAHPLxRmfZR") }, - { XHDR("kiof", "YdqRfXmxswrglyjJnVFJaVyNkHCbbNgQGqDaIhMTZgOHHZKMqPjMgyiKdnrmrrrS") }, - { XHDR("rtqpdpltdhcgwg", "VkNJxHEDWGphtXEcMQjlJ") }, - { XHDR("rhfxnxzfnn", "xowlQuPzarHsbVjzLDsrCIeKjqdDxclUpIypebbalSbAizqEkIMdWdw") }, - { XHDR("qbjdivjblschpr", "gTRiBzTSYuuYxBryNefUriTUaJAWoJAJhdkRzcsedPZTArxoWbviXWRORyGKlfYcejSSyitKH") }, - { XHDR("nplfprff", "zkFjnIfFMxIVHcVZAIePhmMmHHvLaskTLBGbDvCwRThJhpGZNvsAQwciYGBXJV") }, - { XHDR("vhvmn", "vBmqJTKMVTOEyDLXN") }, - { XHDR("cyebzpdsmsjvpdzv", "WnhrmYkHrqUHHqAEcWlCIhEYitrpCNsYrliIiniygKSRrVpLPjghdNcvWQPsYsMWXtrodHAHe") }, - { XHDR("zwok", "BXoHFLSEOhOZKkdUVjJYPkWRdXULrzzBIkbyTNzfOSJUogRgFWizxorgdrAhyFBSWJULyZrkHMzDszX") }, - { XHDR("q", "eaAtxYzmdcUhkhfsARRGtEWJTOjEyhXrIpGmUztxnIQP") }, - { XHDR("nxzhbolzxulgnfinbwsr", "dExcZgETTboatzXcxlaYuKyPuZnzdUFbYSNNEjNdVN") }, - { XHDR("uvturmpvoixseyuow", "lYIpQDB") }, - { XHDR("ryqckixf", "fGnJENfnWWHZhcrwexVPMhdohatQFSHMmVzvVWelmNJyRdGbMTyOxLUWnQgNRhZyikpIYg") }, - { XHDR("exquepdknajutrisn", "ntqsxPnrhkUoldcV") }, - { XHDR("nszzfgpcdbv", "fGVtdENzyLXcZKbWIIwYYOynkpWldRhpwagfQCeZZLlJPUtpq") }, - { XHDR("khydspqzqfvdlfkx", "TXjPxRkwYbWpPIqanigQbuvlrdbnlSnRSFPvwPrTnJVKPlFdXtABbxuRCAmWKXAQIK") }, - { XHDR("fcmrsjtpfbwogyxc", "HrKnmIPDOBcbKmICogZDctLQZdSqRJoqyqAKvTvKnuhjbuAbFkYlDpyghpGBoNBjHofLGt") }, - { XHDR("dsmqnmgzvpquabfyia", "DwDnbnTxmnyjruISXCYwHQHLAFCeFQbRDjnJtLTQQHueVrWoGfsGS") }, - { XHDR("wbjmqthdef", "rMlAwIBbMXsmyBEqPfFbSnQrx") }, - { XHDR("exvifjnbbmizt", "U") }, - { XHDR("dntavnks", "rIrdRaSFbLRoDhfbrwLZdfWqKNtgGNTITESnAVHhZaSvAsemeS") }, - { XHDR("o", "ZhzCRteLLESjeBYPcNprCWzEyqIGtOzWWbawtxbAL") }, - { XHDR("dwbuznphtzchdtuixots", "gfleeyOPENAyiSrorleyWFzBCjLYWilBrCcztaVRuecBYcymReNYcKOsWuneRLmDdqARGTGlZiZTEFW") }, - { XHDR("wymxywmfeatqzwwpxh", "BVEjjhnFgRWPiFPxVLxyKeMTcBCxociXVKNFalOhF") }, - { XHDR("wxcmyvh", "EGuKlhPOfEyy") }, - { XHDR("gbuaujwqtbnhyaqntpq", "o") }, - { XHDR("ye", "sthvbpytXfSPzEvzCizJXHjRPtmfOJfWMURdrKawBxPUeIuqUVVoxRcOOEQFp") }, - { XHDR("gshdjqallfsufdlqap", "vagEuPwWwLkJruVOJNmNUBgxTrjhXoZqIPNEbbYwdkimYGgzWsRqqazypjgJlawPJQSmMCAsvwMyU") }, - { XHDR("iotoydilydxuwwzu", "y") }, - { XHDR("ieiazxafdajw", "VbWrafZwoCdjbnZpVGXEhFqsIpAWnyMcuMMLzrNv") }, - { XHDR("ch", "uOAtUsxZdDfCpAVSpwFGwkDoQNwVPcoxQhVJLHWwYzuYcdzgfipzggPu") }, - { XHDR("cgnmtcmfmilrpnte", "SeaVyhuzOjDtDlpbuMYbuQRGkOuoGcaXoZsGtpKClAceJVlMXgWWdOMXAGBlnjpqLavnc") }, - { XHDR("edhggg", "MugWswitOBpamaigqKKhoby") }, - { XHDR("emszsllhkt", "zcqJdtWiEbYrYXGdOPZAMVEdmBdBgIwIfPeqLitDPNOzOPMGeCOPIoOX") }, - { XHDR("crpbzcadymjkeqopoen", "dodwdskMMZCIhCkgTZhXDbszdihZsSEuSFKremTMEPDsNbizJLOqMuErTFwFyPJDPeSvGIWwMTo") }, - { XHDR("jbhzyqlepjqzxsqzumsn", "BgSbZFlfVEIbXIVGjbZJmJNGKzPrDbLYMdRHljMyrFrBaPinZfsBLfBntQyoUpagHGezOAsFpjlKWQ") }, - { XHDR("hiwztqiqgadvtbslg", "WIjqnNIpQarNrvjRD") }, - { XHDR("ctf", "MDIvJKeKIreWpXMqYlJaTQW") }, - { XHDR("ldrqjsqnwgcgvb", "BePauQrBGeWbLeSKrsyoKOvYQIwjcIVTbgWwgRnBK") }, - { XHDR("hcz", "wpymhFgtgJRKNmHjjz") }, - { XHDR("retheychugcllsuiw", "QoZZLiUDeGtvrbvEMKYL") }, - { XHDR("rnqdhuiabjmuywun", "iVXxpnbzMNEzzuVmM") }, - { XHDR("ygildgrceltcbm", "GkmsgeygvBOEXZLDwkXplTKXtdxAlIpwqRygfFNhRRFuaaBTR") }, - { XHDR("hpzhcsohfp", "eejlKtIKcTkRzFcEqwn") }, - { XHDR("vzokgnytldobv", "WF") }, - { XHDR("yxzoohbingbiavglq", "tgiWBUgUYAbPiIthmbTUtkQcYYvuIOwgRfGxIDmQcnFIVvVFDzuROaHTnQVf") }, - { XHDR("euk", "HNbxdIyoAUUZctZuCTWuvZOlTo") }, - { XHDR("kykcemwxzdlz", "FuDdIVebUuLXHhfUdZEJZXAzJeOCVNKKKrvIDyDHZJbqktisAk") }, - { XHDR("wscxsnfefsrain", "cWuDFJNYDHmTsmrFRifzo") }, - { XHDR("jyficqzgxgekyvz", "VPyaOazRcipXPadxLhejwjdTHzMbFGipOxgmqKpXMSGoISwiPvEltmpyfBDRJj") }, - { XHDR("gdjvmtnpltfjcq", "ZwplKmLjyGlJCtkdDBFjOnEhMQbOIdaBWZuLVPAqTvntgJr") }, - { XHDR("xfu", "SyJDmvxdOsKWGCqAsVSraYQEaGWCcCNMTS") }, - { XHDR("bap", "OZVordXvlZTMbOjTeCmiLOnXXvoDVTnNxDqLceBVrS") }, - { XHDR("ermxekvhhkgswpfwn", "ptZiD") }, - { XHDR("tdzjtiozeohwu", "BDjlJRVpJutiNKQV") }, - { XHDR("sn", "zswqsvMIBladiYJsl") }, - { XHDR("xsajjrygddxfu", "QsfCetKI") }, - { XHDR("vthqykscro", "tExiChTEiarsrcHVlpRJXHgtTbEsnLXtL") }, - { XHDR("qycszfh", "kopPVoKmyCqcuSEPCeRseyoJbUcBWYlpmCdyequbybwdtMBTgChM") }, - { XHDR("uzwd", "OajMzZeXvehMNVLJQBsczGx") }, - { XHDR("gdd", "JMNpBzzbGRgWZzOIPcWtenMFFMtipVZnGzagGTXWRWCstNAeuASRiRjAFPZ") }, - { XHDR("ikbeufnqupqysxjsr", "hskUPcFhplixqvVuDGTPxHpOg") }, - { XHDR("bxregvtydbdxwgrnvujq", "fTMhBwUGAhzDHjwNmfKjEvHbmhqQlvJwOOrQk") }, - { XHDR("wumyxelgadiupfgxl", "ShBbGhPawS") }, - { XHDR("lxgjecggpkympar", "rzyTVyCqiRGXgMfkjPfBUbntbHhKXYEiXZJDKhxHfvamZoWZfOfsZvDCNQYlIHQRTgaEQlx") }, - { XHDR("xhjictpnow", "obuvpjfoReBNIX") }, - { XHDR("jtevpwcwsk", "bHVemoFZVBkmrssQOafrwGkRDgAcOpKIJPMrVBQBQGDvHuTJMdtEfeKmZwOlRBORG") }, - { XHDR("eybmrtobwqtqomkbfonk", "FThuoUlAjqEGISHBRYTmYA") }, - { XHDR("cgxegj", "DYpwAydJzXnIgMZDOaCStqbIYwdyD") }, - { XHDR("dyetdzqttuluyygtk", "KXReaziMoos") }, - { XHDR("ngkdfu", "K") }, - { XHDR("sigjwgjinzi", "PoUXACXNuYVaPAMtsvhfeZhRUcdYcWgvgtMOjTCW") }, - { XHDR("ikzh", "VLSjRsktLMYuDXmgZFJXfVHbeQTLxeAjcLWLzyGHFYxewnC") }, - { XHDR("vmvwzpcgismy", "vTbgqxX") }, - { XHDR("ptle", "LGQwNdJKM") }, - { XHDR("hg", "cYxBOZGHzVWKRtFNOCvYgXYXrWqDBAfxlRyGxBnqHpNTEunKfDUDAhRlyETZTT") }, - { XHDR("vjvkcsg", "MTjhsfopnB") }, - { XHDR("hee", "GfQaTFgIWpRltXCledjVzRuaYtmSmzPZeg") }, - { XHDR("gmasiyjkoogwy", "vyCpAXvvhSvDejVsMrvCAQSIjXbrDnnoXRzUXhcCchXBJXeG") }, - { XHDR("zofozgwraduc", "BoKOSgcGaKljRknepviLbjJQXctApFomLOTkyLMMQudiGzkIpiHsBKpXKkgOOGve") }, - { XHDR("l", "KwLIaTKVEii") }, - { XHDR("rpotnzljvdpxwhbm", "lqhspDQumXhsgDRoFqRRvAfOAi") }, - { XHDR("htetmtdruhoteulzd", "LtZZrKDc") }, - { XHDR("kdxrehalmcctnlisnj", "hjUTWlFzSZxrxjULRUzlzYMATvZcsCkklgLXPIJgRofKM") }, - { XHDR("stuljlnboovwvztdfp", "eMzSibzbtLwWHtXLEByPhwKsUQftmTrGasKvfIJENbUwNcZfTVjjSsTzJOOz") }, - { XHDR("zc", "ZCaotQadYAxToDpATgiVfTKGR") }, - { XHDR("l", "TCTkEIsvpocbLO") }, - { XHDR("dgmbglwe", "EyVFAObJjqBUFRqHlEtgahCWdltzvMOHxStWawWgYQhjQZTr") }, - { XHDR("pprwdwgbd", "WxvJOnuEFlQBxrdzzbubYVljtWUENcOyHnUxGVRIEuHFsLECApNYNg") }, - { XHDR("tnuojhlzxfixgs", "sxjNRxcrFuJyXqiUTQmqJtHkYfFrUTiVgaYyLjzmNLwMmIEofLfrdpu") }, - { XHDR("islutxyexuqmwvdt", "yvEfoIvlqgoYwsUKGhMLpzBlWHThQnpglDQFjWwXLUEcCTHykbspTWOmhtzZROpqLkRwriugwkb") }, - { XHDR("pn", "brLFxQbMxVLtmFNZAhUingVlrXiVvnxWBqNVPfwTmmVUdZscYwxgabOGuXzKwmRf") }, - { XHDR("uzazfqodctzbv", "XirwLqLXhncGXnFvMGJIifKYUjsjUZPAvjNeNXascOjkxAHVQ") }, - { XHDR("yhbcs", "ZaZHUxGcJuDLjvCkASpjVBnQSpWCl") }, - { XHDR("dihyoepewuol", "qFwlbxuVuMBDVMLSrasAoweuQjJyudBdTWNrmOOYLvhLu") }, - { XHDR("ipblgfxfmece", "fpmCn") }, - { XHDR("oxdpgtlvupmitff", "UiAOuMYDEYVMpZtLYxecYXcZNlPSPIuloNQQHoYK") }, - { XHDR("zzsilzvxcysgdheurld", "WGyBZlGIteRkXZRVMqplVzkwvmUsOrpHByYadfcRZsnk") }, - { XHDR("jadagxhtk", "DjUHhhuMKiUulzrYnhDLQN") }, - { XHDR("ivq", "xjSwoSE") }, - { XHDR("vv", "pdTvkRzccpjdcZbyhgqpXfsKFxJgUWdqbbTGfVwUyYsrvTvfHYEMXSCgZJBFtdTybDUxHOMoyxWKSxm") }, - { XHDR("iycd", "eftknguulFyzpVpENvk") }, - { XHDR("xaekjaylthk", "kvgvxPganJrN") }, - { XHDR("qlfypnrknmgja", "LgjTpfXFGoGoKSZXvGAwEslJncPRogHQalXLaAxqGESgLliZsbtLfbJRJxeNGgeeeotNtjvpRW") }, - { XHDR("rg", "cGICkeJNXHchilhzXWxknpBaDZLwLivEMTtczdnTzA") }, - { XHDR("wfrpzfqikteiujdg", "jFLWDNcVJaElosYVHLaKGSkGxVMXCtUtxOEHUWrEpxQGlZXhXGXwdxFhogZNizmBnqqAPnjaqLcGdnct") }, - { XHDR("mguwaxithpnqasjlxwut", "lvJUkiPWcCXmhTIDFIBVqQYsOHxCSIrfGWWSdDwCVBRJuMqt") }, - { XHDR("gnrkrubbvqyp", "KUmEUOwLsXthxZhnwEbucFGZYzCgbtbZjfmhP") }, - { XHDR("qznzwidbdlzfxz", "BSlmLeMUHzaJrTmfBnldBmgaqEAznaWywNvVIiW") }, - { XHDR("lc", "dKWvYdBmnTfmyUVqpmtKwsF") }, - { XHDR("vqlx", "djuCTiztFzJ") }, - { XHDR("djibol", "EdHSMuVUdlsCsS") }, - { XHDR("aqzrqvyzzxog", "fcrpbvWFavlTPZDZzpordNiPOODdRHTfWzqgKBrGAEhjSHShpxvihMJnK") }, - { XHDR("obh", "OuKVREmnyGlgcEBo") }, - { XHDR("jtyydxmqoyzil", "JvzKKMQIYwzXLYxQfoSCsFtSOOUgeOFjywwohYvGFGvrvblhpzUBrgkb") }, - { XHDR("lxbrxupdn", "HABWtqXSHWpnLAtwCZEeaodgYGiCELiPMuyPmzSpCEfjMQgVeLMtfh") }, - { XHDR("rkhdssfxicwormnt", "QLGzdzFXpDrmEp") }, - { XHDR("yzhwajpfbalaarovn", "xfJRbDKUeEnqECAhqBzFYDMTFWASDUiQorMIaMbHSHbzAvUEkEKOJf") }, - { XHDR("tmmpa", "xgKNLeCmuctGjPZGSRbPyHifvgAxZNLTdUQcBRERZdBkRmJYNA") }, - { XHDR("ucephjfdhuodmlmotgla", "leiKacyWcfXpZEyUzEomcQjwEdQwOIsHhQFSuRsaVpmgOnUoKglGPtHL") }, - { XHDR("aoftiqhyxuuscc", "fnslWBXpmKYUqoQnvfOQunucfom") }, - { XHDR("tjwxsbwhvjpo", "YYpiwXjKelHCuNpq") }, - { XHDR("doxijoszugcvtapj", "UmkyEyEkXLeEbGMzvKzBajsokvhzaYTfqsQnFgEO") }, - { XHDR("kinrrpt", "EbVqNfncJKGYrfyoqOYwntLpZFpKpfDJFsFgzlnpVtCGRiOdjLzsrxFppvyAQcGw") }, - { XHDR("iyofreefkz", "tSDSaxoBHPiZZfzeMyusFjJLZWO") }, - { XHDR("hsdzbyvhugam", "vlnRLvuQHrnlpbsQoGwFEJeyzaKeiGubsNKxMiukYBGBFoDYLSEPl") }, - { XHDR("qrlstdd", "I") }, - { XHDR("gbtdvdviltybhekjspss", "VVlMWYcRfPDrAcqTbtkSoHCpyFVqrtsaUBepatkgOvXTrDahwBbHuSidZuPxCKFcFRBPfNY") }, - { XHDR("qrbbzu", "EvaAObJUoTLdHccIJDLNvyDHaGeTlO") }, - { XHDR("xxxiclvirjpbz", "hDXWokhxnxvgLqHWyMwFwtyxXo") }, - { XHDR("egxiaghzdla", "cRzxrFntYQCTRRJfaEUqqWomDtpGxnYlnHlOeoXepII") }, - { XHDR("u", "VwuNWmQkhoyYimzyUz") }, - { XHDR("pzsjegb", "KcbIoCk") }, - { XHDR("uceidhwyuewgerf", "SJLDFIWXJFqKBNAfXUfPECiIlaHpmtYQvFVDtksjZcZnkteokOrAbLCwAyUHoaJXTYXyr") }, - { XHDR("uaysqpudnchsvfty", "UDxQtvMguVFAK") }, - { XHDR("aidpb", "cMStWAMwkEVzEgXPZPJsTrWndrqPXcToIjHxwtMQtpmwT") }, - { XHDR("flgbzvywsnytnf", "HrebbyAWIsNLPDxltddcABjpjHKySpcAoopNcOwRQvWga") }, - { XHDR("rbls", "hqVSaYqganXHoEFBboTTzekfhFGQFTYgpxTFDvjibcYDiLljmN") }, - { XHDR("vwqftmwayocbekmrupt", "ShyIDUcS") }, - { XHDR("ethu", "uO") }, - { XHDR("cgo", "aoqsHtAPHiBglQzdqlQTFKRhjxfMUjOxAjuMKcKEduqlgZKBuOP") }, - { XHDR("unwbzkvbrcnrr", "VmHHCijXVFCNPibTEzsvEOQLlEnCxmFYlvRfTufqMhtwdBPMZMnUqEdLihBSthntIJarB") }, - { XHDR("slyzuqwxkxtjwydymzob", "jodWslRbRuAzqQOlVUPuWayWXivuwDBGqwYpuQGvEQrtLSUsPNNNLYDkEPRS") }, - { XHDR("ixrh", "hbNDPAzwHmTCCzsUOKBRTdbLVTNyVtPtzvzxUvlhoqoCikmNXeCXyDQDBCPIVNpNFyufInJzR") }, - { XHDR("dfyigqdeauzgdbmyq", "YSSgTLeenKFwrcvPHRoRzUviLnuvxGbzmOIziFzfZuaowriqraDcfIrbvdFvvRu") }, - { XHDR("tctqvi", "OSKM") }, - { XHDR("e", "olb") }, - { XHDR("wkyvsugrnsw", "UkDoWJYRVvFMMbwOGOuYtLvhRzdapxBBPXVVBWlfDlKmEWYTBsWgwsbMUDtpbkfJezPcTzPRRKMSLWc") }, - { XHDR("qltjtazizjkktgyiv", "LuHmRlsoHANwVNxJzQCvItmGeEljIQvaSNaitkSiBZLTzGwPXPjewQ") }, - { XHDR("jucim", "bjNkiAqrOxHqypamPmOAhbnrZPWpxhZuDqIEDcVisjpPDUuabCVfDuTujVjcMIG") }, - { XHDR("dcbgzifrcshjr", "rIHCTHmIduNHAtZvoxLPgNVskeFoXWOuWiUuUsf") }, - { XHDR("zppkfswjqxw", "cGpYNkpnxsGTLdDqHUAQujkykImngFpELrKTdPBCLjwBrAOBomhaakztYfrGvDiGhYaKyjrB") }, - { XHDR("oalngsdvlk", "OGkrphPwElStwkAhZaEsCfgRAlQpfbdEzdQrRZzwTttJyYqEZghpkkKjTTpeOAKTLZs") }, - { XHDR("qdnhwzgjqrhhkxw", "zoGKyoRRlrhNbgAgqTgQ") }, - { XHDR("bhvkqbsrwsbn", "kRXcIhAQBCLbxBIuUnxLopytsqlvJlSpv") }, - { XHDR("ksowzvpbiirmytwofpxm", "nCOoxhEMyylkpYmUWdcLpsPHOQHGCobedazSCZPBaIZQ") }, - { XHDR("evl", "POgjgrgwEcicMmeGknMgXmYTiGarUDtaogLMZoqCGrX") }, - { XHDR("ymkvuqdxtd", "UpTVFnTmYbdVBLzRRbawBNubTIqMgbMUiEDKQbQzWNuFBHtACOdssXZQzSYVroYaXuUWHjkOD") }, - { XHDR("uwfrzcneyzojigiize", "XxkCnbLihBvyaJvhByVxQSaIYwYfNANsAfZBQpKAFSSDYsVkaweGxXEcmRHKODEyZWrSEMUvOeE") }, - { XHDR("adifqlkpiobtqudi", "uiapyeEdkmQKogWWoxHfUyRjceypoKgIqLvGmSrVQfvWGPiHPHvCMNHPoQyImUjILrXcxSlvXz") }, - { XHDR("kdtuxd", "okOTTjecInfPowWvKkKpQRFgm") }, - { XHDR("wj", "CYgPjIlBMAFPgtJzWitKSZMsqwpLhEcbezPTj") }, - { XHDR("ysqq", "gQsEsCeFDYLabCRIVBCUMDjIoSpHzxGaaDxZnFyvCwaeIXYHDhTMmnWxaiyJHRjUdxyabGryLp") }, - { XHDR("kltpooswjhpttvcokazm", "BxRoqTqfNJnASmkdihthPolfjuEkOyytLJer") }, - { XHDR("adbkobvyv", "DjxXcEHjyFeRDpnZaPmXSHpwoVgtAiOsBMOUhoJHtWykYRDXQWzZnoRBaHZ") }, - { XHDR("jdrnykkqjmmmsvasx", "HlxuTOkhxRWBVanbuKlsDPsHizWqLsaxmHMhdwuyDk") }, - { XHDR("taqsznebbxqfpg", "dblDBypTpDMUwMKAtcPDLcI") }, - { XHDR("osdphgw", "MGWrTjjrvvKBTEeDyFCEogIwyTQmxCsPSPwdMkoxMaGxlKvfLVGQanSauBXTJzkhFpkLiGbXuN") }, - { XHDR("sv", "ymthSFFz") }, - { XHDR("kkywrpxmk", "LhXuMnGJOhGNjghCYRYTEYHiFYeG") }, - { XHDR("lrl", "jNdCgZsTDDiLYjQmrDgLsEpt") }, - { XHDR("hvecleuwynlyc", "GmlgeqnUfuaIDlDyGcsYbHoufvXrFuweUjqOBW") }, - { XHDR("qtnlsjtbepybu", "FFlXlLCnEQDueBPdhPvjShtqEpAFjmtsorclgSwZCIQEogvYHkQyrbbheE") }, - { XHDR("sdulfgdbwccvyaeofz", "AVFHQiOHUNJEVXvHNQGBVsb") }, - { XHDR("bbujf", "UUaFEDlgdcVdJhCrwRufTxqNLPONrLovqalcOpDAoQLfYEvuHzqTzUjbCtZWnFHojKwjUWph") }, - { XHDR("jnqdrzqojxncfe", "TzkGMjeXVG") }, - { XHDR("bkvovqmeavx", "SSIZxiGmVoGHwwutohaUfgeGdauCyzwQ") }, - { XHDR("ntjckohvdzm", "tGqIhrixrpWFPKqtkMNVAmbSPPNHErCuSYJUyiCbiExHoMSIIREJaRpkzIqyq") }, - { XHDR("kyrfippndrtepzif", "TFWYodQROiJsFFSFAQ") }, - { XHDR("qvjdtzlidkw", "AQoWUReVzHCPSjfxaEpnEreFaCIHVLaCiibjkGcrjPwanrpWCaLlflDIkbEKhDhxkaVrDXLTzUYFKniu") }, - { XHDR("xzpk", "mYTxgbXZPJRLBbJDcTxWzIsRcqRkiZpMKhpMMERDhtTSVJZJMRNtADvKjJuNzpQNqEjHZPTpPT") }, - { XHDR("tdufixsdhewqiar", "qaDEzJzTSYBftgxXabbEuxpxyCDilfEpJ") }, - { XHDR("kpnl", "yhcRdHpJJHBXBbJTNEYQ") }, - { XHDR("vxjwrrnxhnkkmil", "mSDNdywqqCpusPMtX") }, - { XHDR("iu", "jGJUmHWkcnlHbZKXQFpOVxPJg") }, - { XHDR("qhqwrkqiexdprwvodpsn", "IjPFWZKtXttHmMTGkhhbinkSckKrndlWIgLRDrZnezXFplg") }, - { XHDR("a", "ZonwWcaEplDwjbOmcsIuLFldnRMSAHdyRlkYLfcfVREXUJSLz") }, - { XHDR("bsjsgeprjd", "roKqYmpNMOQngRGkwuOtvPxOwHSlzJZUThDJUPldTYNG") }, - { XHDR("xwo", "FBDkxnBMEVah") }, - { XHDR("fhyn", "EDHVCdyGbtfbQiqOXgM") }, - { XHDR("tzmoyeleirseydwf", "UDXAmhPggwmqstxkuMwXqnppoHOtFDhTOXPURLtqQmBLep") }, - { XHDR("uqkmowmqnphdhbgoe", "rVIMixzEfNpJRlNknjtLjcuxG") }, - { XHDR("ut", "HnIxGDfAVOaiXAxAmqpldWNuDqVyLewJryL") }, - { XHDR("cygokbyoxaduxua", "W") }, - { XHDR("yblavhgo", "SOAhtTyJmJmxXxwfvuTCrYNycoMgIBOILEggoZszpuzISJJjCaSwtunkyd") }, - { XHDR("krsofrdngehdrz", "dBiUwrudmnfiVoeASJcwtiANJTsmgPSjcItGYVSryTFffpEAIGJWYLGzxUvWW") }, - { XHDR("ggwk", "TjKz") }, - { XHDR("upespzufuk", "qSfULfySxbjurtaNYXHHVOYAJkrLDIDDbIuiyDdFaXrDskGFjjfdIypLdKZpvKIJrRleFPworxbRQR") }, - { XHDR("uepbdqgogbm", "cbCnurwSREhPyNqDHjhgKDe") }, - { XHDR("pown", "VFALtiLxfriyUMihTplKmSjalhrdtjQIxuUSkHUYBzRcPYSfMBNqQlTvLtOZhMseJGyYt") }, - { XHDR("f", "pEpDMSWwDgQqDZToF") }, - { XHDR("hllmsnpzrb", "hXrAIjBTzdfdnUYTsbuFhdBYhYoKGi") }, - { XHDR("otialwpcflydvbhsma", "tTxlvsuiAmfbCCJZhqoPlSXKcfkjCwztqSlsfSwcuUIpfq") }, - { XHDR("tmp", "gxTTlbaiucyANDKmfkQbBPFvBeFgTAmlYxmVhjAstgjLBDEFFRkw") }, - { XHDR("lusvtuvznqcwuhnbdll", "yswsmvNgybkpvPhEcIMhbugXlacRquvqGZKxZuVbBYvzfEVloAqbbh") }, - { XHDR("lookm", "uRsSKuIzgTaknZhzTAEMevHdqdGQkeydOCMWErgdCuSdMxAGLLeNPvE") }, - { XHDR("gij", "PJUzgbZOPOZ") }, - { XHDR("xeukqnkihnjcuysw", "kKNAeupvmvcEKAlE") }, - { XHDR("iwwbjgybyfrxmgdbzhjg", "RneYsgDnUNCzUuNZkIVXmFbeHLXUQrXqOEEuJKcOvZ") }, - { XHDR("jsuhtydybyia", "YcQctxiznOZnrManjHtHWTRKLJfdGMULUjjzxXgjiBJGbkwNalMsuYCbiXqnDGNmuvOZilvUsXWzEROp") }, - { XHDR("da", "VcPUXPSRgzfbwARhtWHyhJuNNKjIVYFJtWJhRpbEFlK") }, - { XHDR("efyvqmvcxg", "eIJgYMlicZQcGgYLuARYZCDGZwUpzVHjmogTaRHOhKOdLsCNCfAWUTwHFdqsPl") }, - { XHDR("rkhzqfupxubma", "aYDaOWMcpalNNxohTVyEoVBWWgVqRaVBOGNIRbqQoBgXAHbQcQCUGGofdvMFtctjUbOBeZOC") }, - { XHDR("uzdsmqepxa", "ADUAKOkRrStSbDQSUKPLhPckJQuqzstyBHRwVwctiKpxgMDlYxSrcJHnqdYG") }, - { XHDR("sjopmdyimmqnpoxcmx", "HgucXRtcOEhYHZBNmINF") }, - { XHDR("izu", "tQAEmHLSyOHvDbiBrAMvIutlhiFsficajuGzmhnJftjTuxsmmqvsaeGrNwhtPBqwxlk") }, - { XHDR("esgykszndkzlkh", "oQWKRbNcPuYgReXKonUYnzONcNIGxJAZyySGkxPjFlFuy") }, - { XHDR("svtcfnkkmeglmaqyeyd", "AOmxdIxPkpyKZrrZWPQighlqpDRM") }, - { XHDR("xyxf", "xnudGQhbrohSQPASuPjMINmUfhmJFUWyMaInKQIirdXebHOpRvqqPrThZRphiLJKEJE") }, - { XHDR("zgw", "XINcAIevSouOaThxRUmsrCrYACGMHJJpmPTnzypFVtVMQasFkIlPXAaCUmiOdZaQm") }, - { XHDR("tgqnqs", "jQZVAhMXtZFbbpjjsHjCftwqEgFVriOeYDMDTbYmwRf") }, - { XHDR("zjbpdxcmlwfbgixqgpvy", "MbLAXijjcsmSrlFDwwQolnlWztzAKuwQQadllKodTULXPoamxCHaRO") }, - { XHDR("dtnvkzhpfqfitxyn", "YGuZDoRZtJahdfBnzAnKQxWGV") }, - { XHDR("dffhscou", "KBbQqWt") }, - { XHDR("gesplrbegdfrfr", "LhdNJxHclBNIzfxFkRcjueW") }, - { XHDR("osbz", "KhQleFXTnyOwFPxmLghURmdDncwjzBtgWytPMDUUEKx") }, - { XHDR("sigktshcep", "DEKxlTAjoLoNwYZZrYNdTQfmFAxWlJNSUluZrjiaJgITqlITFEoTPtfDhXblBuv") }, - { XHDR("ss", "uLiHArSnDCdSArptbRqqZHGhFjIrnQRqSiW") }, - { XHDR("eogep", "HROwadHcPHANdclgMzMDuVmRSpdyYjrsdQQQKMFWBfieRyRH") }, - { XHDR("kvdwmywkjdxvymhej", "YJAWFcBDluNfjMbosvuUgXycipAYChrToEJRPdvnGRubPbWBdYiwGLYh") }, - { XHDR("asymdcthprhjqbxcu", "EvYykVrIJqueFffDrsmxMFAzGsWsndDlMvTwujCeDHOhFdLXsJMlk") }, - { XHDR("htcajb", "JXvLvByNmeardMOBHPiUbIMkcspTASnsGSKqkO") }, - { XHDR("otl", "PG") }, - { XHDR("loziymsxgqd", "PfgByoECgMOnQKNDTockUdJnLvSStMwaLI") }, - { XHDR("atjmpdjtullyshsph", "iCmazGpSAfakFaJMnyONWumBuRWzbfaQiJqocoAGEGiMZHWGyHhJbcgAcYdtFhanwS") }, - { XHDR("lspqfms", "eGTPTURtvSfDllQgIcTSsMgGjDrQBqsvMtAEbCdkBjykrtbmzddIzpa") }, - { XHDR("oui", "lgOcKdUrHPinFRzoJjjHPItLHtZGGTpeMreBbeBIjccREfyIQyWUHtklFgTpeQ") }, - { XHDR("e", "jNGMEWsrWTrTHZLOHYBnrjUdjFVJQCBPTugrqtqxpXkUoNLMhhPQmSqgqPbQUqKokdJKeWmJN") }, - { XHDR("gypxafukwhembx", "OODlQqyjsuLRnGbkiirIhxgTUfjoVmnItRnGzcG") }, - { XHDR("dnsjegeymvjubstts", "ZBgNaCeWZdDX") }, - { XHDR("omllmswps", "QweNIhoPQJabvXLoxaeUQhTNQfdLEmbOSmJWzZShRYqpupzyIajGLjLPFJxSHZTTYrPBZsVER") }, - { XHDR("szpkiaowqmi", "gHwWTAsvaIWmMpJZmKHeVIZZTccSRfHqqacunUNgSoehmVpjjjbtGRrnuxxwSacBwtLGTWI") }, - { XHDR("yberbickzfqrafpam", "DoTDwMBZDaCzQciurvpUnIEZIkWaGuyfjWLyCMZzhRqVaGFwQI") }, - { XHDR("ypknciutezp", "ePVbyRCMCJfTtvaApZVxjrvmzYarfoiXFcoUzdiOREIAwLvSUcuHcjThsUmQqOnTOGcnO") }, - { XHDR("ckkdr", "BARJRaJBIOSAYhtlbFjaFyAzWLfAjNJYJzTotubuDhTifQEqXGHwDtDNVrNLyyKAZ") }, - { XHDR("vkyrtidkfhtwqtnyzzsl", "KQlgCeYkWzfRPlPUVrTsOuvJLfuOXR") }, - { XHDR("qszoqnyjwr", "yVIUcBgtEMjUqbluN") }, - { XHDR("wpsazkcmbbmyestl", "PpIPVaMLmqsjyoBBuhXhHLzfIGeVEzjcNAOsjsLXUKisegI") }, - { XHDR("btaocpxmx", "OVVqosfAKrqFxdwrmgKEGbcFPuYwLoZwOhMOoxAmx") }, - { XHDR("rhqsmjzdmboozegmg", "utTWMdYNQMWrNvdAKbREgCATLVzlMZemHoWJdvGScdnGgkDHmQCNlKLFhIqtJXhOODPboIiVEMZWPpHR") }, - { XHDR("nlaxxfjxtgwbbw", "NcdMdovUJEA") }, - { XHDR("mxojbldsudhexv", "j") }, - { XHDR("rutknjnyzxqxcz", "mZYJPzmtwJRrddFZjKXUWvHfqMwSAEmuPZKZFPB") }, - { XHDR("owt", "SazOQVNwq") }, - { XHDR("oxocjkfijqfsj", "vyoeAPAsUaXfIISFyK") }, - { XHDR("htpnfnprieu", "splWaAvNWLttxjtIGCjAPhDJYnFJYLgBLGCnhnwXQJhUFTWxzjOwLoJkpEse") }, - { XHDR("smiiuhskdoc", "ZRKTDoNSFmIpoVvDgvAxDqbxurfXHJUxHiHgUUrXRdzXMBX") }, - { XHDR("wxbocmfcqbwvtte", "LHHPuzvrhwzEzLJ") }, - { XHDR("wjlwaobtbm", "DUXvJqaDBOAvIPcSrZcqSejORFJmEFNGLgMOibYTXQMlgPndoSEmOkHdsTAXGdVmt") }, - { XHDR("joiukxrudkc", "WQdlHfEAnwxxbySFbVQCqqdqQNkalpPERjNtdSYkqxcbpbiGsnjNBUBNMGgddBQkCYleq") }, - { XHDR("bfvqibqut", "ZUcJDireURbRCOoTYsYpZPOJ") }, - { XHDR("hbcm", "UZKNxWdGwUsyUtbcAbyMDzkROgolPxUiFfJVTzlIqGTyhHTIjpwTrxoxfKgex") }, - { XHDR("baotrpxroommt", "dbXsrgBfJKwEtdMajMQPBjvhcOJXjraWvqqQheyfSjMsoYxZGFubNpLXRKSTsZpZ") }, - { XHDR("nnwotdkqf", "lkWLYjgOKiDwzAWmvUZQwfKCmDHHoNltoxBAAVAneIAfveBkafVgobZUEvjyvBpHvVWAbsNgVJ") }, - { XHDR("byppj", "uwcMlhOHBoShbYJOuKTtJYqGacQYrGqfoGmJMwstuPmmBSsbsaPJKoUWhRfUTVfhVwcQksRj") }, - { XHDR("fnxaxrtnhgjskoegdmez", "vaDfWvclVlnguGJGmsRLZhbGXV") }, - { XHDR("bpayczms", "kMSxFCisEmPRGNAXaqViNJLGYyutTHqxsaiNLxQyNguyYQshYPBfNoZxYQvvpGebJ") }, - { XHDR("s", "InsPvxoSAzfhdByPLEBZzSPHAcETymlTZFaqcFGHrIlwf") }, - { XHDR("edmxcbyyvlqjtzugs", "igMJKOmHjUyPTKAoGnslzpHtfHxZhgScgAeAfDFHIgWhoYtfdYZaXbse") }, - { XHDR("pslmzzbeikstfvkfpi", "Sf") }, - { XHDR("hbhuhpedcmzrbodqulq", "hodbtJJnpzXiFLJIVxaJTEDPzbsjcpnZzguHOBTyKnExR") }, - { XHDR("ohxguoyof", "eNAjFblgqgD") }, - { XHDR("gidozg", "aYrisJccqopZgSwnwaQiTlrJsQINARdKlnXR") }, - { XHDR("hptvtrbgmi", "kEXnTvomiTvZtmMIepxAJFyvgNhMTJpggCftIpYFijiGlR") }, - { XHDR("voopnpphloishmrirwsd", "VwIxCTrtsJDFTzQdkBxQMWcVQnEYAyChdAYKxKmPpFROVsyHdwiuAVulxLOTPpTOv") }, - { XHDR("zedqakljpbtsjgv", "iXtYyDVbvICJLEFmOBlfMBTChGRqxOyCNJyfOWwblLSAMcxVQCXOvJjMQXBxjhFYYqAuG") }, - { XHDR("bmefjitredlaapgjrrfk", "dKDPGNfynulAVJvgCxWOXNZzLjHFIIH") }, - { XHDR("wwbksnlsso", "KxwGxagRMFRyhhOyfOxwzTpGIhdSPTlGRCkhhMsKWMoPaPlFKCiumEtlIflnwwktfIARQhSIWqLBJU") }, - { XHDR("mhusqjcviuhekxqjvkit", "fovCxETttpADNURFrEmbAkpAGcnenkHxuGUcgfwHHbzfexzuXVaiAgllI") }, - { XHDR("cnrxtzskuf", "nByRlRVtmChzwqMxkVLNfuxfmUCAsOuo") }, - { XHDR("hsjasdrurchith", "vZnrPZgbkRiQMjOcfGvDVqlhAwRAaPPHDagpyYyakPbakYratiOrGEWIT") }, - { XHDR("i", "YuJp") }, - { XHDR("awebjligyhspxzb", "jLCWKpyAfyxmQNgflQNHfUnJArVRUFVnMWdNzQvQaBuMKCnpIAfNZXNcBiZuHsuBiHGj") }, - { XHDR("frduvlqui", "gCqljwrHCwtwQybRrjQqRZyjfkdZvHZRNUjqXyTpENNNt") }, - { XHDR("kolssoyaftxu", "IVioVCXsnuoOtpUOcXJ") }, - { XHDR("joodygydzztykenh", "YAqSSsCIOArHNVFBJGbciOJrlYuAoYuQvrUhoadoPiqZSzalIzAIv") }, - { XHDR("jzvpjyfieezhb", "rtdmnABdEDtKPsvGaNCsjcqwUfnjHSyfJITidNE") }, - { XHDR("aybzknsaewcgxscyog", "DbLuLFSyvNUWBvjNKGCFIohZYFqLRlJYCarMhOPOyAWbFXRKgcnhXYqaSUdazfdgFYGt") }, - { XHDR("hyxu", "WHLgOWhrkVqiXNhZsKsezStqYpNMGKlishHrP") }, - { XHDR("ynootjn", "ZsfJKKFJWlZwZvtCvgPgKPwZBgbkniVsCOADBZWcvXvIkHtxhAnTsTPsMPdhRSvGflQB") }, - { XHDR("fshwcfutcgcep", "mAZtazzHsGZXdvXlLaJeDlERHPHWKflFrJUXslJiLukOdOZhWjfChrQTFMwFhOfJHZjm") }, - { XHDR("zbzbiyngsvmt", "SbxjiFSGAGbNvGSevZgEehOCaGCDRURpQmBiQYXqUeKvSqqPyDuCieBWTYccnhUolvsCfQE") }, - { XHDR("xvwuddluy", "iGrBelMWlDxwKEUx") }, - { XHDR("yeupeqkqze", "xHDEiZ") }, - { XHDR("ojgsykkijpor", "fSRuNKPvKoYJyRsflDwOMuWSRfTTPsCSkqaTFgyQAgTyzaaoOzuKeT") }, - { XHDR("jzc", "APbswRAzpmfOeHNiBayjVYrfFmcLozL") }, - { XHDR("nphrallketsjzlc", "zyNEEOxaCZvVfIUpYkXshfJTZ") }, - { XHDR("uavkyzjupih", "WeyUtEVzuL") }, - { XHDR("fwtveaowg", "eANfdoDphZVTUOmSfsUlLTGD") }, - { XHDR("vymgpwstdmlyiluzo", "gIywippHYmtmDONpEPzEYNeJuUBdRwpgo") }, - { XHDR("zyldfphtgliuwklfm", "ENpFCkWnTGRMtyoTGmsGXvJSEdDrjjBKlnBIfRdnWvDIJpXtEUPSNzpZmpIygHLKrpxWgAjGotAEfA") }, - { XHDR("ltbjtkopyt", "wbShkVZjREIVoUrJzEWiliIcEqIJAVmoxIntLlpKAtbNSnl") }, - { XHDR("zbzdmzyk", "HgZvtUoTciQEIwPd") }, - { XHDR("glmxluqqhbngr", "ZYQJGuSwqyAkyuwsJ") }, - { XHDR("yjhef", "CDVtrRVgWZrgCIehirzkSaMuylIfcvkpzDrrTbwFsLTNWsxeWYdLxvBrgGUF") }, - { XHDR("mmcyzerifz", "OwhZtJSViAyvrqzRZsVlexDOSDMPJiUWyIJiIdrEjjacYTLAALFCtSjEOfIJGpsP") }, - { XHDR("jglxsrdusuxna", "sccyilHtAQwVfgzQHlnvUtmeiywkVKoebaHh") }, - { XHDR("iemilu", "BXDpDxukNDnZpxUuhOVqJBfgjeGRcVRtRTzlMPa") }, - { XHDR("fzistnvopvbwostfw", "UOnmfYUTGOJIDIwQKlDRflzSmbkXfeIvMrJhUGkXXbxThaPZWOQwGIuAPVjSTu") }, - { XHDR("atucmtqxplzwmuyzubfo", "HjnuMGKeKkogbdDdskzYBSloQaLlgYUnWVxphAPUgXkcbo") }, - { XHDR("zbyvlwzt", "NbKXeGQBmOdZta") }, - { XHDR("ea", "FRKInXYZIzwbLKtfPKhbsQnUItLEoRbcQAWJbNmJiqMuUCDOU") }, - { XHDR("asxfzyumqqe", "PZRrEvuynPvJyamQVeYhbaWglkW") }, - { XHDR("qplwxkjuoahbhllvjn", "DtXymDErsDKQjAOcqHJPEbzIrngmooWvDdTfzyMeXtPQxiTJvlmwAlDElmitOziKd") }, - { XHDR("w", "dTNKrpatagiQJcTlPZwauSqQLLvWIhqIjDNDaZxqq") }, - { XHDR("bpioasd", "HPCqjneazQsUkDbbFwachFTIhfawInTrfiRcOQDPIOBwquDhPinyOQUokHigThAwdJUoMlEDNBu") }, - { XHDR("vwiwvdxttoe", "loBhMkXyDoQLEIhwQCjJiBFarMzIqsxdtpkrHBYPbaldJtYeaDVhdxgW") }, - { XHDR("sbplzfex", "dpxEtdyUhzrRBVwgKdjcOIBAhKQbfYneBhLCwgPwjaETl") }, - { XHDR("huqceejcnwk", "rBOwyAHfdsNpHlsTfkGkyyJezotjkEvTbQbQhiJPffCEuqnKUXQdEBorxNkahbNowSHFIYd") }, - { XHDR("vvenexmuj", "HRnQbbhKQtqMHYwBaxzHEG") }, - { XHDR("xxysgwao", "qAgMNhvavBaVGQibamnYfsYwZGAeYWepMNQceyycyjBwNGwYbFOoDsCvBuBrrbnukSMG") }, - { XHDR("sdy", "UsfVnUByYHhCytPstQHJhogVKAkXeK") }, - { XHDR("ndephmctxhws", "TomsRsPlwdFQiFaFzMUbcKtzMoDBBRFTUjTHYygNkwU") }, - { XHDR("qzukl", "LjZRFruXTQrrmcWoqdOGUZvXZMFPkDSxSzNhMzlgySPWTR") }, - { XHDR("fojpvrscfgmxtrloti", "zNjVhyTdvpddwTuMI") }, - { XHDR("jfeipaztwkhfcwuropl", "mVTWQEyfhaXTDMZSvnAITPBlxshwsEvHVCtbgqMbsnEObqSWtrmsSUreVzbTFEtMzPELaQ") }, - { XHDR("xslhmiabrlvpnlw", "llMhYjqleqrdsAXmyPpRmoNLjnpovCpDx") }, - { XHDR("wthcvjxsgpqplrejzfyj", "DRgQDiVBKzWHvdSwHpgumHpDuadACzVUoYTwjQrtvpNFXHWUeExDWuHIlQGEkDJEuUby") }, - { XHDR("vz", "SVdkOvxhYHa") }, - { XHDR("ga", "aKtjgFJPzDO") }, - { XHDR("bishdmptbxis", "HEteZieprmyfRIMPzMERvuXIlxWVsqZYgtDRniqD") }, - { XHDR("xkx", "nHvBIXraWAdZwBIrRxyYHGhgkgKFBtcIJEQDhvQKEWPQIcOkAGJCaRiyuYoSWWdanGxxhJeogJ") }, - { XHDR("piwaalzwdmeo", "RnTlVmetGTDILbEigRruEHshopqZcUVnkWDXXtF") }, - { XHDR("nckyfveq", "mDoBUYi") }, - { XHDR("gcliqshrgywamx", "zwPDiDiUounJRAocRvCTMWIn") }, - { XHDR("hhyxrlqtgwyvbhop", "DDMuVKxwVlBUTXjbdGncVjoaCATMVUyTfcXdVdWVpJqBCiHTdKSYdiZEMiOOAmamNfAxGoKS") }, - { XHDR("qujqelqpkgqa", "skVbMVFjTOppVMrxKEBKmajFBnhXxIyEXSdzQhqerUvKaYIFULTgJePUmBAqAFijaMfikEzwnIIKg") }, - { XHDR("npysdxosie", "RBqaYpsDlXMUMgwZeIXegMZtNserqjwqGejTEwzhS") }, - { XHDR("fbofepqqvckkkqu", "TJMemovHOtpxrFdQGmuoWkTrctTicYIpDCUrzFPkONdDtyekDInkYNcHHsLnsvXoKEFp") }, - { XHDR("smwtokdzrvwecjrlcki", "TENOCMxLXaFyZmAYTYUsJjOqwfdtnuHpZAz") }, - { XHDR("herfmqgoenywwilfgee", "KePjzrsKBeUQfSazAlR") }, - { XHDR("gkozykxdrnklopja", "ZwjAOTgUFUQI") }, - { XHDR("kt", "LbfCiGqdG") }, - { XHDR("etwehywgsko", "WaBMjmYKKkWJwzvfHoKzsXsXCTEhOzBBMYqeywwkiQFcMWNaIGecXOCMbGucRCUeRuuCuqcqItzCffh") }, - { XHDR("wbpiptovcctmgctg", "wXZGDQzwZTgSSSGGOmwfJadWMoUuaSLj") }, - { XHDR("gakeeddnxuzamaqhoetu", "mJdtfFVhFQAOifAvHSQZoaueNXoThRZqbFOLqVZvXSfOWHjaOBexWHYeambNsTwvFr") }, - { XHDR("hbxosvqdavgqvcir", "RUoTQINIdFMhiPcOsQjtKwPevhkAWPippVfOBAMPXzaHuAijaWBWLK") }, - { XHDR("hneybwsmptdktri", "nTbYHgEAolNSSecuMxAMHvVPfAIvwOHJkhmkPaF") }, - { XHDR("ykzcrgbbujc", "xwAlfwRDuBWuHLdjVs") }, - { XHDR("i", "COqboqlEdaiephhEbuab") }, - { XHDR("dutinpmannpwq", "ZvrEslKWT") }, - { XHDR("gqjuypml", "QJdHxSjUjuKOJdFKGmwugUYituKppOzFbWXnqpPaNPUbYBwiKRNrfNVXwBQlnKlwPcUwBkfZerCmQ") }, - { XHDR("whjzlwl", "vYjYFQzNMxzduRFjSIHBezCncMqMkoPsjfdyKJtTVQplfQpOsrGCtgCQDTbobXXA") }, - { XHDR("bexsagqehsslfeehsjha", "zcoUK") }, - { XHDR("seyrwbn", "xNIFLnuRfmzeFRZqaciWBxaqomWqXUFHurSFEYrLahnfMewFfpQYaNniqSxxNMSkU") }, - { XHDR("iap", "NuPODfgkArrOfqgalWalvwZAnkAubQAIbFZtfdgAnKrFuSjLIDZtoSfclgazWRwqtWIPXnWaFm") }, - { XHDR("whfpxrdcfjmartawakb", "eIzKjDtiGfCqddehDlwYhPzVduJZUcYsytmhgxQAbasWNEBVJIgBRoiclDQnUYTIkhAsaaoA") }, - { XHDR("lnpyiy", "Qxm") }, - { XHDR("ggncofkufvkyqfulzt", "vYnIuIPmKoKamLbWKcydBIxexNlDkpfHXFWXQhhFRxbsFoMwOPvfIqFgtVybcRxHvipgBqUGmhn") }, - { XHDR("jtmkooewvbzbz", "WuGLQrDOrXKQswnMODvCfQSaAfEeffeHHWzKXBQTCcAzGUtqkqnjtSYVQEnHviapAipDMRkwEI") }, - { XHDR("mdywgpravpf", "RXFotSxQFZriFm") }, - { XHDR("zbxqzdvxd", "WWxzlHAUoDuOhSJXtdSxKodSaWkoFSLfImIwUPheqYpXORFElHnGvHLlSDZTxFpZiyVPyv") }, - { XHDR("sjetlb", "SStuCgDAJkIQZncWHTcASPdFBVVmKTAcChcQGOSw") }, - { XHDR("wwcsujh", "iZfhcafjaSJyjtfYkzKrNmDaVctQqOMwmbnGisdWanuSqWacuQfUKrQPzUffZyddNalfdrcGLTtnPaYB") }, - { XHDR("mglbq", "XzlMngLWtlXZkbfJOlFNdKNNsSykVMFYVCpM") }, - { XHDR("rizprrbsegwyuemsdm", "KQUMrSluVBiFxpSuAQkXbLBjQrZMXfvanNJGqjXPZOiiqHlGaiW") }, - { XHDR("nkgolw", "xDBEOjuIrGtUtPUoNBpTEBDjBziljhfmIESnGiyrkBTjHOwCFeRhsAPvi") }, - { XHDR("crnhndlos", "YtWrPVVVjflqZevVddBu") }, - { XHDR("qlmygvbmxzfsgeys", "XSuUzF") }, - { XHDR("gwgusyrkddtpdv", "lnUElPoXYMErLuLt") }, - { XHDR("jlya", "sOa") }, - { XHDR("sxdmxynhnjvnwp", "TTINpeMjWZtdpTLALdptJHXzoMFkFRjDIcUTYbnOESZsrNrjmUxIXaeRfVFnfpPjfLfQcbdb") }, - { XHDR("ks", "OTaPEoInyQBBkmWvEqCagxUHKGdmKpZMaeaQymJVZJWlNWDYnlWQXNAP") }, - { XHDR("fbrjsjxau", "EkQXtcWEJoGCumPZNyEkzpjaezapCfmMNctHKYYUfuGjGggIBLjhgetOTXSVW") }, - { XHDR("qpdwet", "CmvKnXvnkhKKiqEhHsAU") }, - { XHDR("ba", "sSUPWQNyKHQrgiDSTMNLjiINSdEUMSRihy") }, - { XHDR("lsco", "RAuSyUoxQAdXtlqt") }, - { XHDR("zmnbehrirs", "UQxQhSvlovRYnhgufhTIkMadiytMNHceWxLTAydoaKJPcnfJMAUqvnYPdJQjRg") }, - { XHDR("uuwyzfrcfdpcnjmd", "luBHAPrMT") }, - { XHDR("uezdmhztpubqylwnj", "HXUBrhkMUuVkDGPfftWHLZxCqHFMaZOx") }, - { XHDR("nkplkunryhnunqp", "DqXmqTTvGYgBCoIALyRb") }, - { XHDR("ppfqkeq", "YYqqQilEZBdXnpsswSYgDrIGbOGypEAEDilYkEyiLomyzkpCuioTPEWhrXcQyA") }, - { XHDR("axmb", "VbXiE") }, - { XHDR("dlxidxjaro", "qKyDtkVYDLjJMpwldJMMSfZdklgKApKdkmvLfxFFUAlRljxzBBaebmgygrRtlzysyTd") }, - { XHDR("fymvpmryadyxl", "GJktTPOJmbiIDrRlUObZILf") }, - { XHDR("caklnxhfoe", "OLvgYDxbEZFVQAYgmyQRLklDRssynPVdzI") }, - { XHDR("dpwqjl", "lTyLReffFaukxTCSkRZwRvksAEaCmevglIOgqvRpK") }, - { XHDR("wgz", "LWcVhCvXzSsXopaCzxYBzZhcAXlSfnxsRiiW") }, - { XHDR("skqplednheoftxjo", "YblUyjbQXkYIqtjDaWVngZUQVVSQQWw") }, - { XHDR("rxroanegobrnghyq", "lUKfihAVmmGkRFyNbUiGqGPvamquGdmXRRRisOvIjwPzpehGxyXbQWjcpgtXSi") }, - { XHDR("txlizpsja", "uCxaWcnMPEZhH") }, - { XHDR("syhqlerfzr", "y") }, - { XHDR("jxh", "qcgXtlOPEQUtGrqWmEnWuKkhTlpGkDmbrnRuY") }, - { XHDR("lzugsuikknqjrx", "gNwwXnzwuyUpxqEieugDdFjnYf") }, - { XHDR("cnkwcjboqnjoypzzhpa", "nOmkJSmETHcawFj") }, - { XHDR("qlqlhqyzrhigbe", "sViRVdDeVGUNNpMlXrloviqZLNacfkICugoC") }, - { XHDR("lrhprwdsqyzhd", "cZcUfytIDjbeSurkihXeusCkpcTmQkhCUTiUKKfiotFU") }, - { XHDR("qjxqnhrigzlmtx", "vmwLPQcZmwqxMhajgVbBcLaowNTZMtkSOetakSGUY") }, - { XHDR("rfwqzlxlnofkueiz", "llklFJXYChQaJKJYloEGLbbkzyYPmSlYmJKFtpbCQd") }, - { XHDR("vdmky", "YXquUpiIiSyiUUdn") }, - { XHDR("ikqhxxtt", "IaOXNGAsaVMoLrIEXDugjnjUPZDgZpsmWwxCMTGngqBt") }, - { XHDR("h", "ALkagStdVzKAKwUqonumFABKScRWckihDutpgOjQFwwPgpUQgWZiRpSiOLdPceEvNkvgGlzDyjRBh") }, - { XHDR("yuydnifjykb", "UktCjnGlTdfgN") }, - { XHDR("xdswifpzseqagfbjdbh", "feXTyygpnEjnjUjFiOQmPCDChMNKtm") }, - { XHDR("ckqqjxry", "EYvkUGWciwzrTIbsgErxQgUauCVVRFIdBxRVlgbRnsvhvbITYbDuqjs") }, - { XHDR("zwxlplnlgfgnvpu", "ZpAMkfrMCNDdPtIooyQxtQCnpFfgLItEPvtecZvHnNBclFUlmYQoSDJhLorshbnWpUJKuuY") }, - { XHDR("aqq", "ARaareClfFLkGLBaLSrVkmrAhSEV") }, - { XHDR("zcblsgrpcv", "FocHUjViaMPvWdtUJNrWwYabICitmVXPYbdaeYBgv") }, - { XHDR("rblbmqyjzvtgcmtasqbx", "zzGaTXZhZvBVkAtRapiAmWmWTOFkUWmBVzmnkkhAKGVBXcWBbcYq") }, - { XHDR("kprwzbtdz", "UiQiwAfUyJeOctcthxUKkKsoNTpLfRcCoWQoMHfOvbxn") }, - { XHDR("tcgxkvqedfukbbb", "YJDqNOiiDuXIjqxQhmkmvazZZZgIXdeZZHyUMOecCAOnlt") }, - { XHDR("rgdkbqh", "hNzTKvtNXUSJAHOttrOqCLZVyaOnlVfzOkzoBtREFDcRfGvUuVWdkeqOazWFBzBSUGsyUvZ") }, - { XHDR("hsudyusijxxeayx", "EjVqZwHQDOQzpptfdycbvMFHqggFFtmguqhGFxwxIsrqiVcGshsBqxQhFYvUKwMg") }, - { XHDR("tnedumuavdfowowkscu", "zfUURQKCjOSKz") }, - { XHDR("amwlljxxqdphzuaoii", "SPQuqcPkguQHwgMahTDOAIelpmw") }, - { XHDR("uu", "xFOUZGvyHpDiEJOJYhFQ") }, - { XHDR("mzcyyvoj", "iAumUuPCrCIARsMqSlOEgjnPGhysSYmxGXmmswroseXavn") }, - { XHDR("qvxqroslyhmeaukdt", "jnKdfiDEcqeQrpMtxKrcNEuMelbdRNvJwapfIVcJIuBNCcM") }, - { XHDR("kfrundippavcrvcn", "KoGNsuDBkDodCSsQgvKrxRKchZErKHbtPgNRZAqoZBnFhBmCScnxwKhBRoRGNIhefvYvDEZVUSpD") }, - { XHDR("jm", "TRVFVGHYlwKVovzlupsIgvAI") }, - { XHDR("vctmuknquizgrkbaclqi", "sCljrOdlCJUsYcPEQDzypvWNPGWUyOPINJvdzNEYzdYpGuqZlXPNkLzFQAMOzag") }, - { XHDR("dozftnmpugeuihko", "eMkyCkLWIFbeDWkUrzgUAWoBwXSQdMEsrAhqkmdHGJiAGYDaUzmBVQaoyOAeqTYxw") }, - { XHDR("agiyay", "cSBuegKHTwkdSZkQSKxqXvP") }, - { XHDR("fxf", "gWUpaxYOrcgjgzgDnmxPwhzXmiDIIVLrqb") }, - { XHDR("ydyijyoznyahsoq", "fjBjitklgIyYmXIBBXKrfQqvi") }, - { XHDR("vmgwjaotsbxsbacncbpy", "XjBRsYDhzhJIjedglWXHSsibnnPHoqgxrFyeUuEFWpydnSCPoAMgnghcVekuWn") }, - { XHDR("cwob", "RVperRXcuERIMTZBirsbmbYcUQeos") }, - { XHDR("rqrsla", "uhmBLuSytpCZWEZNIjRHXvVIindui") }, - { XHDR("apgmtqkubp", "kzDgftdKiwrDakvuvCtQuuXNNYFJOisOCTdzwtfMqdgxtuxowimecKRMmIzjT") }, - { XHDR("kuigqjdrutkjhkp", "UuZOzhPlDxKkYCtYbvyWeDAEnwZxwhhlBvmfuTMDLTzUfqihuxjkndNSQDWZbVOcPFNLxPlKONKEi") }, - { XHDR("bwyfeqtfvpbbtygx", "sIBCCknpmHCrtYYGDlgiOHTvXZPGOxUhmfnHrYnExjZJuVtckyxnMZCiQtPYExhoyIPK") }, - { XHDR("btmfclvjwsietuoa", "PxieFayaWEpqdjDxikQLAYyGaGlSQFnWokhphcQJVYtFiAcmLNweUkpewHquecPVdtw") }, - { XHDR("agk", "wNmjZVVwIgJhcHKZDGRrHdbpRvujTtMyBZEppmppnuXdgeQIEsKYquRItIXsWPAAFq") }, - { XHDR("io", "ivdKyMhpvVHDfwqpNMkDUFSXYujglSJiYhFCtuZITdmAVmDVOdAPTYSUnmivFskxzUNxyqYRp") }, - { XHDR("lzilakidjdpotc", "SjZkMUbmUqJdrSnvSbhApeTFpDCoWSzvLBpXFIMLCoetsuK") }, - { XHDR("ewittgrsy", "uKmqrBIiyFVuawwoSZArDJEEyCyESVkk") }, - { XHDR("gpcmekorqo", "aOPNTeDgpCIjdiRnzfnPgitvOPfEhrnl") }, - { XHDR("hnabtmeigjipeltbfi", "JhRFhgrnWzoyzGCzmNBwEMzNSEILyJexxcISyqlvfWompCNEL") }, - { XHDR("gyjgvdjynweilu", "PpWFTrpxGKG") }, - { XHDR("mvdfkkdfujjpwzr", "chPodVigujg") }, - { XHDR("zwa", "RXnLyoPGvUsaviXZkljIdLjRlPAtKMyRydGrWFGUXXocJAElwtTljKIWtcXMJjCksrgB") }, - { XHDR("tqcsmudunmwciw", "jpHUDiaByUygFAQtWqwrZrsUNmgbOLqLUoORySrd") }, - { XHDR("xhsxwwmjpvnydgkvpvao", "mPCNdTZOzjIylIdeZyNjtrYqPyzmyXkjeASxJSVJIuZGObVoCLRsSArHVhsVyGoE") }, - { XHDR("tunzz", "HbwgZLwbvIpqNACzvDiUezqBgtkRZeXsmkqUnnid") }, - { XHDR("gwjhckdsujqxiajpmk", "Dd") }, - { XHDR("gkxzhrcbtkpocowbpn", "xridGhURkJgsVvEwdjmspnfPBUTLezpUqAmRRm") }, - { XHDR("jenltbkwtj", "jeIbLCmVYmHqygHEOYTgEcRRnQJHfwZmBHoxCNuuMbSFBxRYNDnGFvj") }, - { XHDR("ddxjhzrxhulpv", "IgdDOQjJT") }, - { XHDR("tjykgp", "OdtJELFuqjwWCexBgBYzPhETYXHiOXZUPuzIvYbiEjALa") }, - { XHDR("lmysifggsmzj", "yUUNMcMrHlsMGFndJCNgzMcrFmXjnubAPeQdxjFNkBMkZbEekSSeqffKg") }, - { XHDR("zqgxelxes", "kmCzFALgoJbIwYEXrWZBdcPcT") }, - { XHDR("oehzjdwyojen", "DOghTGmSTtQkttULFqPjrfQOBKvDxZpphTfwSJzJFDxZRcRTIWyegiyjvmkwCWeyRHBgxezXmAOV") }, - { XHDR("qrlkjkrj", "zGLlKNooABTDrMZYRHWomckqvjPJgqzyZRhPPoRJvWbcbyOIRI") }, - { XHDR("ewlakjvpty", "WiyooOhkmCvnkkUwAvblbNTcaLGuIjwhBlMYfipakUvOvrXsGBGVqLXcCRCPP") }, - { XHDR("lyyeyysriy", "DsFWJKzyHHjxbiErbGSfBYpmIrwQwIFJxenXQzUsBTFcUDLkScWWqJFFFenfdosMZAQswMNAVEzNWkgp") }, - { XHDR("uofqwwvnracpolsilwoi", "pUXfqumhNXcJvxlcBshZmgx") }, - { XHDR("hoiaupyhxbaeonwqkwu", "uooxguKKMDsMKXyMYKdhjbyqspaMOgWARXyFRtfGKEmkSQZWmiAydeuqjenfDWieCplxhrTuHBW") }, - { XHDR("eruwvildpypxbtm", "WLqNzPUMDFAetSluRFMAhgaOGWXPYnqYUhtcWVbyYdYAjwboHiiuzLIHmqygUEjltIGidsyLNYjLhbp") }, - { XHDR("stxyf", "dDbYndXvViaITTLAeYwvLwaUTsKariCBtzNNYZjvFXYoJywOuZHy") }, - { XHDR("hicohdc", "upbYEQszgJxSwIBuvukLdRUPKeukBKYUexPSjREuldhWK") }, - { XHDR("wnavqr", "tBvQgLjbEHq") }, - { XHDR("sjkmkuw", "WELzmDadsRauhkfKDuASJQyyCdBhsbrBsRjqKapdbtOhRzcQXMDQdblrXrCtzqotHCCLGtbadmVUyQI") }, - { XHDR("heqqaopcvfairff", "Uq") }, - { XHDR("elygmgabqyadbqtovdw", "shcWmgXjRZiQhlRXKrPHgTYueVLmhpfdQKaOiIqAQpQSqogGyUWTFtslEPMtXfAPtNyYcLXfkPcHAsLR") }, - { XHDR("lplpqtgnvv", "FZDkFAYGZgBLqaSHFlSONQxhIukDAeaIfGWYPKEgNRjOxkJnOSCMDZHKaQUpzFltbtEWo") }, - { XHDR("qvlllocwatevbpvqxsdj", "XWIaEUZOzetHaZmdBGAGLPUSEiRQAclOibjLmXh") }, - { XHDR("ewgcfrmiyc", "pbkPVtS") }, - { XHDR("evwxgzhunixmxcfx", "VFkCouqaPhcxjbxMEQIXgZvhPKjUTaAyJhhtIaXHOPKcxQGuw") }, - { XHDR("mqnxufgf", "owGWqGItfebXrpvHiydAvGGKiSgFIzdfQaWkYjbWISsfcglCZwRzRjqjCvnKj") }, - { XHDR("hzrdbtxycikeczudxkf", "oZQbRAGRNTZIpopamQcpBfqDJWAOzKpHcGiwwfpjuPdMvUlmOxuF") }, - { XHDR("ny", "kBXyEqRkZrrXTyUfRrKhsVORYwwAFdgUsdUKrHoAqgkqQNgxYMAEPAulyHlGPLqtUEsYAzMumEjOsPJ") }, - { XHDR("enyuy", "BNtvNillmvL") }, - { XHDR("ipgvkqwcbnguodhmovjc", "lYiBnorRErolGwNKhzdmFDFevLuwvzrsuisyYuoFkf") }, - { XHDR("by", "LlEPYUGM") }, - { XHDR("k", "JHnh") }, - { XHDR("muzgncwsowg", "XXZglZmEhflkhadIIlnEJCgYgSDtVoejXQTHVpqKAnttZeszxYQeKEzqZ") }, - { XHDR("aydsgohd", "AXZE") }, - { XHDR("sjnqsvcersriihhlwdm", "urhuTOtXLwqzVvIux") }, - { XHDR("zhmyolgffau", "vfwgAesbmNnImTcdfpttthijqYRtQNxBHFSNzTFCodNstgAarABmTqnZLTvTi") }, - { XHDR("xlilqkjcogrsf", "MArKwSWbWTQiEeMmQQLlaMwLmqriQUQsgAPZBBhzzviGJomLgZFZZYbyWDKasAGDFyzafjojuEwQL") }, - { XHDR("munfofiucpuyfn", "KbqiuRPhfarIOBsXEZXzvAPAnyTsMYZuYrwdoGwUjNbkYAeUMLRCorJwRAapkKSNQqdv") }, - { XHDR("ndvgwkfnckvehydvf", "tgunRtYnAMNRmHVGCCHoSrFWGvwbulngTQXnygKvXPiTWIxMGULkcgBvecghbdcqOejqVBJNt") }, - { XHDR("eomgheuad", "cZbe") }, - { XHDR("hfgvruyqnhcmgjlibh", "JsmfWURcnjcbXnfeCcCtEgjFSwCwgEpNaDvHbMdLhcTkqceYBI") }, - { XHDR("mz", "RfCmykSteELcPPnwkUZiOxFAapPJlgHiOiERxwbtvKFnpdFHIzVsfhLyJZAxFqxtmBQUatSOLtIU") }, - { XHDR("rr", "VePXDJcKCNMaDipEZwNLMJyBgBNteiepWCuLcBUeXtTZdJZLpGLRAozDiJqEncTEnspsw") }, - { XHDR("skgvkwkkpzolhjcfzvls", "lpvSBxBiviEHviXEWgkecSOKeuWKDcA") }, - { XHDR("jklopisnlcvv", "AdJQAWuIjwDveXsUfcEj") }, - { XHDR("sapekosmyim", "dXvyKgOSYASTUFqbJCsAbteQnNQMcBwEwmyfpEepdeAkDhiGLJYzHGJKcisPuMBvPqOoTc") }, - { XHDR("dkeyqsssffkysoqwyy", "JFPWSTwQLhYLCS") }, - { XHDR("orqnxilxdlpmymo", "masypIGyVDLbzDImwjUUnOAruuUYmgUPoorFVLlWGkoeNATpYLMjkSadGuMMqmoVw") }, - { XHDR("retittps", "UltxpufTTBDlqQFkU") }, - { XHDR("ohyxefgugdfwalk", "dLGDqpjAPehRmQkbbrqvJuqujhFKyOISqBigGEfzaEtiPWgsMuxdmOESQoaW") }, - { XHDR("e", "ZtwTrnqGCNTSuwYBcvzjRFzxSzbvNoUxMBzbCSfXpiLEcsvaaENwZbZspNqliDnBXlaC") }, - { XHDR("ohufxbutnmesecf", "CalmfhHlGGQjXKYEbgAdpmlDOIXBAgMNUTvQyUbPFbqJWiEzqGUjpQdUfuSs") }, - { XHDR("x", "LgijZYpscVhHQtBgqAarKlwBlvzpOcAFKHIYkEXbwKeYaFqKecAIuvBTErySAAmOIROkWhIUy") }, - { XHDR("loltjjjejastqafablxh", "dGlfeZhkEmyQHVrIYMVAcJHBVyDcaOXwedfAKSZXbyXtIjC") }, - { XHDR("xqf", "TWYsHXVqEIh") }, - { XHDR("zosijzxmoxdbydiqyzzy", "orkOveWwOykvltokpNQxLdQvqNboYZbVpoLwHMqKkhjxHabEcweo") }, - { XHDR("qejmnacroakjofafj", "TGRdcJMYkyozyFgWjXMhzp") }, - { XHDR("t", "zNKi") }, - { XHDR("wgyfk", "BBODMRcxCnX") }, - { XHDR("ejme", "aH") }, - { XHDR("mdtmamylsd", "DtNBxlGTKZGTFZHBrFNtPDFgNvDQEyjjDqNTKhKOkBSIjBYoAXIKitJlsgiiFrzxT") }, - { XHDR("rgiclsmanyegq", "GrfcYTPJWLCBNXMDKDZoy") }, - { XHDR("sooiwhnaowohyofipt", "VngNAxHuRqmbPnmtI") }, - { XHDR("vwurhemwyu", "RsHYWFalwQepWpevvRPtvvaBzFddqbMEBrRawzhudoTRJozJjTuJuNblqOGqhsYTVbEndOehyZAilruu") }, - { XHDR("uqniosu", "zFfUopXHTSwEphweBFXehagodIJjJIRfbOalrkMQZbVj") }, - { XHDR("bdtv", "YvGvWceKhKtNGmwDzslormaHfsXbHJ") }, - { XHDR("ybj", "bHFyJJPGpOupmsPgwGiRkLNQzcJjYCtugbDRKltGcFcoicaOqkNqIgYEenRBbMGBUvgzgpHMintqA") }, - { XHDR("ylsbzdbjurtbpbkoi", "HnAtjsaDjFNGdVvEjnEeSxJPpvYyPhSMAhJYzzKEfzirvtOkzxOymVGSiImviG") }, - { XHDR("u", "MCBbhfspeHXpZcjztFMqRkEclSCjNZ") }, - { XHDR("hqkyyolg", "UDwyWpvLjiympoqadVoFtjjS") }, - { XHDR("sqzzji", "MlewxdwxQNwgWBBleFkLUoYvHLfHXlxptYc") }, - { XHDR("pgxaefyjmxvqrurlvf", "lXbEAbYkqfOLbIE") }, - { XHDR("rec", "uLXmxkiakaTsis") }, - { XHDR("uh", "IRuZyIAyQYIIPcsJGxnryKYkxTGEPiAJQGjihwprWaWvYqGgwaKuTbJafcPrZrZSl") }, - { XHDR("juvhhimgchmuoaxadm", "PQtzZsUuhYxBiGvNKbRtOVkzptYbPcfoCNEPYrYVDdFNbzAUQhaal") }, - { XHDR("hzruicfovjuyncyef", "PoEmBJbZwRPWGWRlaXeLvJJradTeyRtAAmIBepYVmkdZGplUoggQgFsXRTelVIQvaTRCzywHzBd") }, - { XHDR("ozhshjwwobo", "qaAnyRXyOZiaaaAsNwzvAFLDMlMWsiBWFFtpznXBPmfTPAWRFRNrIwzSrZevuzlEhMJ") }, - { XHDR("c", "kEp") }, - { XHDR("bncbbghvqjgtqctcfg", "irQLHjErEsTmkomNiJXFoG") }, - { XHDR("qzevrdfmojc", "MvETXrNXrwddpurNbVSHDYbqUbrhZehxjjMwdDPEGymmIr") }, - { XHDR("j", "yIb") }, - { XHDR("gokqyeatwns", "OjSSSOCKkTTqVFvGwDPJzNgpKhECpLmoexQSzKiItqnRAUphwe") }, - { XHDR("xclwmkzmkfyvmc", "ArDyWppGsmbXZpAVvwUylMJTqaTOlYuURRgaPpXOYHXzVlqnDQmJEdHrvMPloBBDYyUV") }, - { XHDR("yhgzymgi", "UJrKyUupdYwZPYnvQgEHcZcthMaXluemumRiSmANMyPWjswiSvByKiZvDFr") }, - { XHDR("misterdidnrvaybtbbsi", "qjulAOVwiaJSIsbhrulbAmBNvsFTnAewjlNxBsNE") }, - { XHDR("wkwlecxlqlrin", "LuRzUgpJbxeENzmrAqMLstgDPUcKv") }, - { XHDR("higcrkyifmrreming", "jXCJekKqUmyRuWmAhasdFIRJZBLEeBAhtlJczsAPWCYFdN") }, - { XHDR("qoshpjsyzrfdvu", "LhOwUIYcuPdprzVVlYZRnIOdMOwIljlXfPEEIhIhqVwApqcqsMnMQAzgkGtkfTapnFYHR") }, - { XHDR("qbvatc", "CsJAvvGvQ") }, - { XHDR("ujoqb", "w") }, - { XHDR("uorvuam", "kvFKjYdnbZztJUxmabhDcakcZuOIbVHxalFjOpgdafqsDDJWPIgjDNMGTmXGMjJZwnNcfUEKz") }, - { XHDR("ewsdzw", "NxBeWAwmvqBtBLuSklJzdAxFCZoShxXfWdReIkrswmtnrmqSKuvYsZL") }, - { XHDR("ejnmi", "LpDMwRnyFMyDEChsyijwBpDjZXUMkyfpFNusIBAngOmvMkZoMIZKr") }, - { XHDR("u", "NzACTHmmkMJJTyXKdLNAiuBXFaeGNsadBAIDNkgqTctCjBk") }, - { XHDR("mvkavbwir", "jDZPHWhPeEIwDFdzExBDsKBoeZbcwjvxwnHUHfMgoRRTZVgcnUCd") }, - { XHDR("oxolzgosol", "DdQLGqqkuxxSBufunQKZbguUFnOqyWNpBOTlxdVAFviXn") }, - { XHDR("ptrczbyt", "veZagdOTlDydBXRkhrJqChLPkUJzgdnyoTGAscGKQUFPbmxXsOTrniEwNlvGQVnvqOTiBSVnOLtPxd") }, - { XHDR("yqejbwdfennwnuhrzh", "AMPWIATXpWLOXJnpicbPmwUclNnyYJumjVvOCceeZaRmWbJNtfowfBxkzAoGgi") }, - { XHDR("iankj", "fsWkVsvQomrpzgDbtlywIfJRbHeXOhpzgCFXhgQpexmismyZtAisYHQfenkGRwFi") }, - { XHDR("egvamohnuyghk", "ogQGfDMrYcMVivvPEPDhbLTwSDrGbRrogrZJklxSVUEIztPMznLcuCDK") }, - { XHDR("nbphirkhqjqvwmgnqebt", "ihkwAsuqhQrnRxcdahFoNQZIaNEAgOTlzrHuRDgsjLmohbwikDCWhexIvnUPPCFjEQ") }, - { XHDR("tbakibgyiqtgnesnd", "LQGwv") }, - { XHDR("psikgtowqxmidroyn", "JpKGVRJNerxGPUkKWmbCaStQMinelCLjhlhfagSEcaiEAoGAPYkIvuZTHJjW") }, - { XHDR("bxvkucywmyswzvkey", "yfcUdjTaTzzOoTJcmzbMkVgHkBJZoOTkVaXPkLwEFOAJQrrtCCCXgnuiqi") }, - { XHDR("igr", "vRGsloNTaXV") }, - { XHDR("a", "CAMgcTDPwcfeRsRIsGxF") }, - { XHDR("mugvwbnfjxcnrvy", "yUiAcphuTnYirkBPsdveaBAxIgLkVGSMfFOJHBxNYPYDGxSCUAhcc") }, - { XHDR("nmmfkzqrxdzpwk", "ohpswvcHlMLpLkJtReYJPOQMQLlsRilLxGA") }, - { XHDR("u", "OlTKkhQgySyAqoWEvJ") }, - { XHDR("gbadatfyvqlgrzhrkqw", "uKlDZFQiHRMZVhHCLt") }, - { XHDR("npheohzmoaqjwuuakq", "nltDngVY") }, - { XHDR("kqvkfweubiyknwgak", "HmhqKlIOLMgKDOWRNqkaqGREBYkuMLugqiWPkfdmjCSrooODJmtf") }, - { XHDR("j", "ApQ") }, - { XHDR("tkxnrmdhjzuhtdoegi", "UMcjdINDTAlHUQdsdPlarpPkHVsYfWcaUBKbAXLxBeBBCLSfKDjbsagKGM") }, - { XHDR("spcbjpgtrqkvlzrf", "sVtokkAan") }, - { XHDR("euealmndnqyntvnresgg", "jPiDigcECRIzvuDosUhTnLphSeflbeqddJTnzKSDMGlCDxJ") }, - { XHDR("upltkxcacijemyneare", "muPMjBZnIzcvyKWTMikrvBKqr") }, - { XHDR("dfauqopcfspqvs", "eqZURndLmwhxYbisphAdFgTUVrCyYsGbIkfKSoldQvCdiJVn") }, - { XHDR("jdjufepbnk", "xaFkDfKMuPjEcrAlUOuKlelCNvtOJoQUJV") }, - { XHDR("xxrdkedwgeyryd", "QzqrtRoiCTtAxzksnHlCXFQMoFbLEclHmDnKbZDRuhlcSfqyghAl") }, - { XHDR("rqgrgroabbova", "yvQmiOXnoytxvTWLTWhkyZlLBLajBDiOKJuQJpPWHeloxqNytxojalyviOcqav") }, - { XHDR("yqeqbesipteywpui", "xBqoAzFBbSNKMmoIHjicdriILazpbGOeOuSVCWvfAhQHYmLlMEwRBoNVQyENjoXuHKPXVNxmk") }, - { XHDR("fqpuvjyoxztiqaagdj", "VinLfGfFEerKVYDxeSPpDbDzdNTTriKEDPYHsTdXohKjsKeLBYzOHzSuLr") }, - { XHDR("qy", "RWytgyHZezyRIhUJwSMTkaMVANcLDaLFrytyHUmurXMWQdtLMPGbcPGdfkPGFQIv") }, - { XHDR("t", "GfHoREfoweibCczMhPyDnOhw") }, - { XHDR("jekdpdjnvlelxlbly", "PbjUOcIns") }, - { XHDR("zbgztovpyyk", "XWjUGjOOajtRSTBJxmMMPQhcRddewWdliJUfSDAVmlCyapPVCZBRp") }, - { XHDR("qidixlupf", "rQLuISRJieYQjlQveMgURSCbMvsfMoaOiBkOSGFrJ") }, - { XHDR("ztuiuwolftwskqbbesv", "xYtOKaZvHjgWlENojBRwVvDdxyeSRk") }, - { XHDR("lwzwzhsdilmrkzbeqfeh", "gUalVmOFBxQo") }, - { XHDR("kjdy", "rlcUOQtVBtZpin") }, - { XHDR("kev", "nsPV") }, - { XHDR("pszkaq", "MHCYcKhTUVVATRUKRIVETWDjmxtZnDqRCOeuLjZvvMKuWxsnwzHnNrKfEWRrW") }, - { XHDR("sjtturyawxfd", "JUCVzTdBawGUkKSKaForeFTKvMKpWdgQPRKVkuskOiEwTGXRBikUlSgeSB") }, - { XHDR("vovwtvfoedkhzk", "CRSJffalYqwDdwytrSDTDxzcBuBsvJVrefMvRijGIZyADtlVQCHjAGAvxyDKHrDRiQOCmmEXujJ") }, - { XHDR("rxsouwmsesyya", "RgfIQMgXJdqCExmcrcGkuEn") }, - { XHDR("oodqvaaadjyyxfy", "TNXOyUnOHXSreTOUZMJLkntoyRNFCLuFGwfaAdfxKZeiGouMMKbXidQmpHEaLXbZFRGWaZAPnGHUPAle") }, - { XHDR("ytwfmeaggwnvayujausu", "xVYsmidxMRMnYSZXsTKuJQfkHLwtCibWiQbuwFXsAYS") }, - { XHDR("x", "pGlRVIZuKeDAOYunGxQNWFaoIAWdRlplaIHP") }, - { XHDR("ocmqxxacrjtqgli", "NEoQcFriquLHGMOXRlhEbgkQdhYEB") }, - { XHDR("fyiulvxlarfx", "ojnGIBfSxQOgLFNfJaxpRCUkPQtqv") }, - { XHDR("eiajsxnuxyrojbygdhl", "MTjZOeKwFgQmHvvtnBpVKTBaGbTQKZYQLgzxKHszKRglhmgyzykvRwI") }, - { XHDR("rfanqfnj", "rSngmSlkk") }, - { XHDR("jb", "BuKoKUASbBDyhFqDvtOKcZsFlHSoeZZRDajQhlinHdqrIcRhCYKOOzBXahDmGAijCnkBQQJ") }, - { XHDR("nid", "SUElVoFOjGSRRaYpSFOdhDKiPKvnuOiPyXKJAD") }, - { XHDR("popiilitlcgwggrt", "KRguHvuuuNbiTyFXElEdfjbeHamXmDOICuGMuhDQFxCfVfpnBiCDuELvofWYXTl") }, - { XHDR("cuzuv", "znAnJWPTVGkIJCtzTJlmOWqzolXmSeTZCbqCDNNTFsbrjjqrPpDsFfJCXOm") }, - { XHDR("mvywpkgqjbqhczn", "mQBlAJrfTCDygHcSOAVjTrCmnEBpQOUOJoYcOYgyCvmMgspdlQUZmSY") }, - { XHDR("fsitljxzidaq", "djiXFLTFhJtQmFvYOuhDdUmyktYcBYFjpXhYmMfpxNVQZyGabTbFgOilZbipxlDoxhRutlsSZrvhJG") }, - { XHDR("rehnlecjgdxlqk", "Jaw") }, - { XHDR("ahnsgdivjdsjiberhwf", "jtXbxgDZzftWTSgCaEvXmmjayyRyuxGGN") }, - { XHDR("adrxcjbntjkfqdgmj", "RABJmAMDcJMKYkARaDkqDFbPeNbRRcQknGHlTEKYJEpOjPqncPcgfmmfgEwjp") }, - { XHDR("eiqclybe", "elXJdWMQlItsZeOgfmicNuujTOK") }, - { XHDR("ltuzmwofgdzgozds", "YctxGlSkwwGGYzhkMrFsdgC") }, - { XHDR("trhyxgzgcdclm", "rHTbPGTbnwBOEfkycbvAnKqRqVQNCOmmElLPGcYHIcBcQJpJQoYLlOKvinQBqQDfMQjAgSOOBST") }, - { XHDR("lw", "BBvlWOeIaakBPYggspYf") }, - { XHDR("zwhvjalkyqltocuyvsax", "eLldMctEkytcWhuqIlBiSUGaeWxJVSWLKRibdVblpRZQxjy") }, - { XHDR("umjtzyxhrsmeoku", "zcJgXJULlPCkJWCYkpjGtEcKuDzDEIITfJJnVOPhMplnKAsXvcMGstUsdEi") }, - { XHDR("eivtypdctspufmoaqthd", "YjWHQNJlncMRJNREjtHfMcYibGqLmwiHTwkVBPZvKTUwQReeaYIlUdSmvmuQSUTuEeYRlXtiXVksg") }, - { XHDR("vbo", "gUlTqQicRmGaIZugxXlbdDKNSeqrU") }, - { XHDR("tzbaybposmre", "MyQPDWDWYxTzPW") }, - { XHDR("xeputvntoubtuzbqnyoh", "BhfHUbXRHZlvdiOvESubYJDAmDvfbAQClkmlpZSSbpKsgfYxQWbHElooVoYuse") }, - { XHDR("mujnytqwohrrhsbouwvt", "WHgeqroGILJmRHHgdMoJoSzbDwzgqkrdeeQDvsuooQwpBUUxcBrfcRhTCFpTX") }, - { XHDR("ddlx", "vfiBkNYQpKZMzDPmbHsNhfAQKanlQXd") }, - { XHDR("dfglugexwgpssjt", "HRrdnyzAYdVFvSDcK") }, - { XHDR("jfnllrsisnfth", "waWCswLkEozGDyfJFduROPvQQUGCDfICfScPqWXaAN") }, - { XHDR("zxjsoje", "pJayqLtEaUiavdyHHQwWMTbJydudTXajeMqR") }, - { XHDR("yeut", "fN") }, - { XHDR("u", "ghVMgkjkGamHIoWWCBlSfvKHBwjJRsurllMEWKhjkhtGkQlaqGkyMMgXJQ") }, - { XHDR("ffe", "LqpEEsExLoryjPgjBtfjjBBbJAAnMjvRaaBkUceysFfxkPmEzCyVUNkJykFKMYxYNhdxwU") }, - { XHDR("lrbdstjlhkekawsdobt", "QtBCSvnTiKZzPQvPcqeyWxToQouqhOqbKyMlDalEthZJvHMwSLgH") }, - { XHDR("djpcudsbxicjw", "VhyDWMgclwMcRIUwOMneqZTfDWMMPnRerMRSisvdPtZArSkGeMHkdTrgrOOumd") }, - { XHDR("plbki", "MxyDQG") }, - { XHDR("uimle", "LFSJsRzRhzsENazPMYwmSqDflhYIqNYbdVnS") }, - { XHDR("fhnyvlykpgmblyx", "cuHbqbcHdDeDwLHU") }, - { XHDR("cmblcvcdrjkka", "utTmNMWkRcLSpQqlYifRCjjZXFoBConLUaagFtiVlGDtaFdOyHTHxFSDOlBsxlHDYtMWXueGxhcRYl") }, - { XHDR("vqfrcnwudhyuhate", "PklAjVLOJWvZEIBVwrZEYoDlsoSJTxfgpkSAbtvATmeKsPwQWTXWKZjNGd") }, - { XHDR("rvzzywjvrprrofcutvwx", "sTkgBr") }, - { XHDR("glcgksnmizjufdb", "oivOBsEeY") }, - { XHDR("sonbqosmsabm", "hWjhwvcnWLLLDUnfxlgSOXUroBQWwPsbaUJVGqBYBWkFxjqeXZ") }, - { XHDR("ta", "dNLJSukPggaERkRlMHQnpEAhHGtbknhxIvvpsnkrrJHaZhxJCOtWCCMdsL") }, - { XHDR("anlsuihpdohzbxgcbhc", "rvxJEpVsZmglBnGJWPyDvFiKovjEYghbocwUvxfGbSDxMVeNNddrnnWvYXMWSnATqhifzORJ") }, - { XHDR("qapzbvuutlxu", "nbiBtJIjjqjLZfJhORCkko") }, - { XHDR("vnwyencfwvvabzmezwqp", "glUoYPFOXRlhlULLIKdHyQWbRzYJezWtSgOuCzoMWPPhEZfETSk") }, - { XHDR("mgbkapgnsvzzcmmsreo", "mJbUHTwzrdEXengEfXWkkzZBGLAoQWJhluYaIUXYcpTBmPVcuF") }, - { XHDR("jb", "dtgkajHrVHrClxGhWuVaunVwlstldnL") }, - { XHDR("lpbioqpwnujkzo", "iSUtFzPpMdkrOmKIpbXXreDAXhjJjD") }, - { XHDR("nmtrdzvqunwtqhzj", "LBiDDqBfAoxzZWCib") }, - { XHDR("qxsykhjmnkseodswuom", "EoxnczkaNAtigYibOwt") }, - { XHDR("wdyzjbideihtolqda", "vPCaLgEIusXaXCqIlriIKIInTAxVVMRhTnAESixBmLPe") }, - { XHDR("xshizuyyjoqrggssjrv", "nlA") }, - { XHDR("occvwjibgtdqxhck", "NJONHfpTzKmHTDoyJgqyLehhJFzXKVJzicGml") }, - { XHDR("mfuwmqidxwgrslnieg", "hVDVgpkLvNXNLfUuLsgtnAvddgjdmTYWeWXzHcRkhLQsM") }, - { XHDR("hhqi", "FwbrtdMNShdx") }, - { XHDR("fxim", "DRBtVLqyvoMoYOkKfalaiatwPWNpfYnfSErqgTiHsYdheeAxOLqJxtxqzLlyIobJLCG") }, - { XHDR("oyrepkqj", "oDiYU") }, - { XHDR("vfgmggzny", "IezqzanLXVtqESdooiilBocJySzqDCTdkQUWjjkTpWiqTKkHNmrlvivmReHtKxA") }, - { XHDR("drjryhgbinenmvlpai", "nPjCPJXxcSVsmkLwCgCSsuFkpLIyTYyRvVWCJEjvVEt") }, - { XHDR("bb", "GpKqjHYwqqUtQXHOKUIoXGanLFNJIMvNFLyVfyFBI") }, - { XHDR("pykcw", "OQxkYWZNXMqgCsVrxNoTgEjPXRwWtTMmCscRcGYTp") }, - { XHDR("hpvegreqtlbmd", "jFGmflJiRjDKzaJGKehbyTAHftiMnQFLeHFnXmLdcrIZIimxRkEcZzudrcnbaTUmxITwuPSdt") }, - { XHDR("baoakthakun", "cGOUGkABSDQvsuWToExBoWRfrIZQpvvlcpvXjCgp") }, - { XHDR("kfinptepwsvssgsb", "XKHstiROGvaKSnJsEtDugZZOAtirrOCNczxGjBWSkLuQB") }, - { XHDR("mpgltpdgnudfxr", "ApBvTwEWeHixISrZmItWZAkYDLSldTUp") }, - { XHDR("xikyjgeodalqyrxhch", "HmShZgZwBRZJDbxKlHmCWViQvtq") }, - { XHDR("hwam", "AaWEvpZThvkeLXfHZPNAQPUQFCPiCGxNLgwnBLLZyeZmsGyYjELwhojifSxwtutqXJj") }, - { XHDR("dugnnisdwzaxlcwxagi", "XXDZAicCZVvvblvpOdISivaHSQsNBqAjUoatcCBVABFfCYoyvwpYeCBqNnrJVxQtdnnqTReZfseTeQm") }, - { XHDR("yzjey", "bQnLR") }, - { XHDR("pafvrqstansyptkxxdza", "gyHfqjLtFJurmMpBdlLmaxnsVwRrodfcrWGnmGjQCzzKBdanRCSFjFBFwVCwzqohFoMB") }, - { XHDR("odvofg", "HBfQOzeedwkhtbqGraObPmkcHARnoeiRAGaAuLakjKvZDGHHREJOZkYGKePYCmWpyZggehbWjgbe") }, - { XHDR("wwfwmdmpotdvtlzqps", "gEpMGhEnhoypmPVQvyvsbilzuqdmNELzZQXtEQCehgtmukdSCgxRWjcRGXilEqceyHQ") }, - { XHDR("wpjsapjxldlc", "VHUQhHsxEnjSxcPPymDTyWrGvzPnpBfQlfnn") }, - { XHDR("ggzrhmgzobn", "lKHepIwYxctnuZvQNCHjacpnGWTGDjjlQoJrYdyzNSeAPtVyuNnEzhovl") }, - { XHDR("khyztd", "DM") }, - { XHDR("rxadxsseyor", "STlFqLj") }, - { XHDR("epouxfgb", "yrrpAAUuASuMzXdOEVhsrLFpWtVZJbDske") }, - { XHDR("lhkksfgcz", "SxDjdyFTKqbRlVXCyelDAyduuOzhsG") }, - { XHDR("kyqugxyskjzlq", "bTOAFExjGAxfNAarvkrEPayfoeJHHzcCLVEeSNLlKVMMSlfLshlZOO") }, - { XHDR("mwwh", "vqQrjHkpHuupKWHVWDNtPuzdMhjEXzthldDGWBhbbVsWVdRH") }, - { XHDR("wtmkmlwgmli", "mambeRexAPaSFcotaHowytmmBclJ") }, - { XHDR("rziac", "zmicHcnCYqZiiPImtUYdPxUmjfMbLCDCIyvRllzMBPkJMbXpQmtQcG") }, - { XHDR("fazabudwjvqjrbmucbp", "doZvKMnMsuPCtngjAPERKEuIGpwnuMwKccBSZzUUWZvZaaBoSwCfDfKOYARlQsQ") }, - { XHDR("gjnulryi", "EiEMSymGDuETHYNLrnitvsMDxQAiztwCPOBFRcF") }, - { XHDR("uoxlppdqtuqy", "plibHBondtFjFdUPFafYTQZBRtRsoVxG") }, - { XHDR("sslwqceqoqbv", "USNtyaihLdNGdigDJomMhkPTCFkvlCHWGzWmwITGMoOrzKDuRZZVhFJEg") }, - { XHDR("rivpmqpegsrbdirlpe", "rtwMGIEEgVZHZkunHQqXEdaKBPmQWvvLffHKCVWxpacOfmoELJPiBcWNDceLJQLF") }, - { XHDR("hrkhahwyoozcl", "tpwhDbDEaCnDsDsFcewWJJoVtEvTXrbFFZPSuoKnKaEpYUXOzVSChiWaLTT") }, - { XHDR("l", "lht") }, - { XHDR("wsgqzwtchlzvvhdzqs", "vxpNUQTLSkUvqRbZTAnbnVKalBaoTAKJbnXWEPITOwSzalZlefUsktHwNnCN") }, - { XHDR("gqvjnvlszwkgad", "dheqPmqgjehfURPsXoNaqXQPIVqhSEQIDeGhIhmuprWxSeQubLZinPqRWIBNYdj") }, - { XHDR("qrqdvgkjxez", "irSfGFRQvlSovoJLlEtjhjUCgEcQSKxEKPloTrWZwJRWAAb") }, - { XHDR("icvbjwan", "erhdFGCjvEEWZyILNHTRXbwNmbByYoSzafvGMsrSltYTbQTEYGMRvEiStmUJZqJutJKq") }, - { XHDR("edmaqfdcxbgylyzbmd", "eAEqYVoSbOWKEVMcLkv") }, - { XHDR("acezwgxqftzazdoquou", "kCQCpKZPbfoMPDlhnQLtBQFYplUxjVZmIEbhIDMSVKBqDkHIYBBtqjnVlhuMrdLB") }, - { XHDR("ukeadotnpsamkpphzun", "TMAaHtcZS") }, - { XHDR("dhynuuc", "IRkhYVIyDDlEQkUQdXsweKukvUVcBGlh") }, - { XHDR("dczhp", "ZP") }, - { XHDR("jkaxxckphgnpwfql", "So") }, - { XHDR("xxgl", "olNISLyzbynbTUYCUEMeARlcwOVnxmKsxxnthqSoSFOaSNeQHzBkfE") }, - { XHDR("kgglnmjeydmzm", "NWTJSOdPxp") }, - { XHDR("pw", "PyrsJBIBXlKtxEnoxTGVMKAMlPoUiaJLvRkPneybjdrusyTrbgoxKSZTsIhRmeEBw") }, - { XHDR("mlofhmzohgi", "uBqgXvS") }, - { XHDR("p", "OYBrrNpSjesHeTjfjJm") }, - { XHDR("nglpk", "VmAXmYaXNgVMLeaURyTFhzKpxuZwRxsODYSdzibVbwhBHjBZOignQUgwyzThKAuJzUHoAJfG") }, - { XHDR("dvuhfbrtsykqnytov", "HOebknKzKmOJfjPorsxRdTBteAfBCbwqngVJaDwofILhvfTybP") }, - { XHDR("ntptpaqmnarr", "YEXPZSPhwhayVaHISIzkrBzVoaydaBbDjkihLovCee") }, - { XHDR("urqewlt", "NUfErGQmFJwylUgTaalqamrBTOcbZfCeaHWbPlEDfWoZrXVddDkwVQLFFLuZSb") }, - { XHDR("qmfuuctkvizdwnitmhoq", "PLBynGB") }, - { XHDR("msxpmuq", "cmbJgrzikhBZZVMSWFeEELxOcqhwDjMgHphnIREAHDjiRozltMj") }, - { XHDR("amyhqefufipitdiphl", "XiwzRnTENhJMam") }, - { XHDR("hdgw", "tCOhQFMothjTMIarOJexpYYfoSCNwfXXufzoCIvVPYtEmEjy") }, - { XHDR("kvflyumzthttg", "Vi") }, - { XHDR("hewvmttu", "ZOXSJMlcNCqXkNghswNiLvCqtaTjfD") }, - { XHDR("rtq", "uQVtwbmuiunEsdsHfTUyCOWADusxZnurxKLPnhSrnyYvnfDNflvnJw") }, - { XHDR("eefuyyyfwesmnafhgn", "zjavJPsGhetGJdJhR") }, - { XHDR("byfzeddpwjqcqdcnsr", "OKGOYjNgsQezhCoYiWZjBjMGivIQWsOFgdqWAQrVJXuBzIkL") }, - { XHDR("edwicochfwtmuqt", "FgxREGEayGESkBzizA") }, - { XHDR("vkawjbqeedcolhv", "wwcqd") }, - { XHDR("xsmkgpdwv", "wjzwFIQcbJpQALfUebnxHPwWJObQsDkUKWYkJmzuvtGDCtSOPsTcdwhpEfWFASKB") }, - { XHDR("zet", "dlIaVktwgMbSHakLJbczS") }, - { XHDR("ulrkr", "aXZhtzAxRvsIhpbL") }, - { XHDR("nphkcniqvx", "yfbDyOJQMcIZMfYMhRFovP") }, - { XHDR("zxommnxbarpwlvdry", "IjWYJMfYySKTDPlECOoYJRadaWgPQjFjCRtUgeISTQRnRdXDZmgNmkALOUytNJttdrvdhGDfHsfD") }, - { XHDR("smsplhqirnenadibs", "wnHHMruLAoaXmCnfyXzYFfbJ") }, - { XHDR("rjjxi", "owzSoDCCETPXSuTxLWpXqZWODNwmAqEDJsbAvEbmADaSQoOdJGLFQmWHVMyeRgvBLrJpV") }, - { XHDR("ibg", "qe") }, - { XHDR("kwhasohodh", "YhkOEmzZCcriHwbvMNsGBW") }, - { XHDR("jwjnr", "KUcNlEMAeucUNIXgSCfTcVniHWRJPHOLyKXdUKpFZxVkDKpvTwgJxYLu") }, - { XHDR("nvwkswazo", "ocraulRROizhQROLAe") }, - { XHDR("yglawgpgjwfgopcj", "vi") }, - { XHDR("gvfab", "oxmEnlDAazzX") }, - { XHDR("hf", "YyWmYwnbFQvvuaPadcODofGSBMYwqmvQHTRCuhADdQQW") }, - { XHDR("yikhn", "KYLFLDACgeWkFelEzqNxIkrvLAiiWrNjsI") }, - { XHDR("kzirvscpqdweb", "SDHWnSMooInMaqFiHgKAvXkyAuKQsZlDtmnXQRvsUnSzFORy") }, - { XHDR("kbz", "AHRmRrmgwqJbtVvolUSjGgsUiAxUlDDqnoPaQuRiUEJhXvPLUp") }, - { XHDR("kkabrkvokibyjtfjz", "esmpSVmAgaHZuipdsLWjvWKiNmWLkENPMUjIKNhztFcrHfWRM") }, - { XHDR("bk", "gQCcjTUjbWgyanLDptit") }, - { XHDR("cw", "IDkvIEUNJefFupEZa") }, - { XHDR("axezosphlfuvubniypw", "erdWKboqDXcBPRAWboeHGzUAUNxRgsXrIvCtZEDHDqxBrufFbfTIiMBqrUxiJxmH") }, - { XHDR("rhzqjyrbohzuabpbyjjo", "tLte") }, - { XHDR("jdqgwbay", "CToCyaVrMCJIZZroYPBNbdqLBcdLhojjJNkSWOJonitCKShSxhmAAgrwPD") }, - { XHDR("jrnckjfllcektnizol", "GXycuLjSfgXzCMbvJtvvuMmtgePzCbGHAPPiftjzPfBlczwjbVaPccYfpKmBMIFwqejLPEvVyBtiJXv") }, - { XHDR("aviasfna", "GCAxLaUllgMljXhGjpgbvRfEcCWFyGHVKrHLqCeRBHPhRTGlgTfHgYWe") }, - { XHDR("jhsu", "XUkkdtPxAybRPcSLWdkYtKiLcMhYokZA") }, - { XHDR("eooki", "istn") }, - { XHDR("qtzowzmpb", "fWvjKmEtzScDbxQOMCJyBfpyvGwiJdod") }, - { XHDR("vmannifpo", "nvBHtGfGasKtXjuAWjyomArxuxwXoEgBihUCMpZCMgtyYpjci") }, - { XHDR("kmcmhkhrn", "fnlYPygzLYOndhFmOlpbVETRIVemoPmYcJIlUDmOQbahGXctjNGoyTsvNtJwjnp") }, - { XHDR("oaoue", "TqOsOoR") }, - { XHDR("mqcufvywdkcjlmt", "iTiGJHVISGVMQEbgBEKMEvAY") }, - { XHDR("lxnkygdzsr", "fzuGctVbKauxaPLLjjWSaKpsVtsbfgQDdYkStTFyEzzUymeSXmlaiqaP") }, - { XHDR("knfqb", "uGkEOiSdQdmNgveaxZwTFMFBQTZnhNTMevpwzMtIBAHvolpiFalxTKKvrhYHPDHujyVudgUyRD") }, - { XHDR("znxxvjynoi", "ENXtNWgsLdqskpZrELThUCVHZCVQ") }, - { XHDR("cyovdfysczuzdtafj", "yNzCCBznkajziKfIGuzirKAcDzFthzWoBytKcwSZZHuXSZNNWkOUHMwvxwBGdkGxb") }, - { XHDR("slnxnybk", "eJieKWcImJnlOJFohwmIvrDsqEfwIpKzbVhQZymQxqcgAPbsyjlngNWs") }, - { XHDR("jaslguqsszblsai", "qicjbuVftca") }, - { XHDR("qcmdhogmrb", "ZjglNqWBrLfIdOpXRyHOWPeXUwmrJHacs") }, - { XHDR("uqkjqiz", "AMFITgIaAWRlMoEdgvPxHDHJGGVvaqxeOqXofVSqewtQU") }, - { XHDR("qvh", "DOnBCUMDSwbqZnjXErGDzJfoqBjpGecBCznUAVIiCubgqNePJUeqjqE") }, - { XHDR("gcozmthhpgdukngvbo", "szpwOVGbvpZeBh") }, - { XHDR("yhr", "TdRgucVJDROsqmooxKUnytprngGWVweymDWIfbdNrc") }, - { XHDR("mtsylsur", "LeLQSPELvueShYVoJcjlUXfVhrVvkytGhkgEhLgDFTvllkru") }, - { XHDR("wjojwrxhlfu", "VOpjkHIxdppXCTWTJdm") }, - { XHDR("i", "KTYQxfPKGqwcEbXNlvYVLidCilsnUsLCNsrTwKCUZCWzjRPyjmJFvAseERYIOzMbKYCKIMnWPqeujDi") }, - { XHDR("lhdackxjixhbxb", "IhIToMsxXoAENLhPZcfamYPTKDRSAnkgmlJRcnBzVcHLfmCsUNTOVTSeXsAaBetYovVFHJo") }, - { XHDR("s", "UzmkbMjYACjmrTNoCXsmKaRMHaPgcstWdmXRmQLMNR") }, - { XHDR("qtwgcefp", "wYFqmCOrOUqPeGaaGNEfldRYRCOrsXOetbXEZffxoleSxmRkHPyQvcYcz") }, - { XHDR("pbxplqlhmhnqxbpx", "piBwKlNDBXgxYoymYzwhgmkCJUcWuuyRPLrlMfPCTwZEOKsCqsWQWTGeAIDDxtzwCyNacvY") }, - { XHDR("trli", "SWDcDNZO") }, - { XHDR("yqvwhjeqfgflooegqbkz", "XwTLY") }, - { XHDR("fhrt", "wXwVZlyUUaIAHMHCBW") }, - { XHDR("onluugbibebc", "WIpCEFRnTVRJbkKnQhxjMerusMMRgmnMHAyKuZw") }, - { XHDR("kfdhd", "sxGmPcplGWmIxQ") }, - { XHDR("qxwmtjtnpyzevawrmqk", "kKgGgPtQuDEVYUrkUoAtvWvLdeBjgAsDIAuYJmCOSwhBIsmnISZlmaAp") }, - { XHDR("lufaelgyxrns", "jXMoKC") }, - { XHDR("kpxbmbbxasqzdxlr", "drISwspxAzkDoxNyGmSzwYWiTZnDl") }, - { XHDR("omdmaumgcdplzvscd", "PKXrhoBjQkzQVLGdypEMWUOKECfbGuHfmDuDNQdpxXJzi") }, - { XHDR("gzzktszmxkepbkvyt", "qZuCCHImPWgzDODCgfSZapxFHEoVIsnzGwBsSnRwRAsbjTdGovpphVQfSOPvuaQw") }, - { XHDR("mmpbjcilyyfevhpbu", "WYUIyAFnSknVMZKyMpaaNdChnwF") }, - { XHDR("yoaypdrdwemevn", "IqhqlcWcQWcsbWpqoAfrronwBdcrtSPfyXkYucmsTpDq") }, - { XHDR("orcyegtvlh", "mM") }, - { XHDR("nurbstbibcmqr", "gFmWsZxHvZcakLeNwCJMvwdaTdWK") }, - { XHDR("leyj", "vIdRzHCSxCKGdAVyKQqlaIRYfGFrlpPOEVUjQX") }, - { XHDR("vddlepmqzk", "SuiFzPNBgMvzRLkGyFFchHpfUIpwkx") }, - { XHDR("wkmllsazt", "mQoDuodMyNqgFFcCqRojyBwWAXvgRaAvsKUICsSrFJtYuFgPqdidGgbIjANYSt") }, - { XHDR("avgcrjbfcealllvbodjj", "fMLLCCWFNHPeajdLzFzIApVwapbrBgxiLaekweWkeuptlI") }, - { XHDR("iyeejrlapzj", "cxsjUDQgIWVERGmqUShuIbTRCjTUbWGHnFujvhFKrYaHYwxkSkeWFVtUgnHEPikZjKPQ") }, - { XHDR("quwesaxxeocqdvblcv", "EsPLsuneFvskumD") }, - { XHDR("yorcjjsrwcgacejvixt", "VtzFgjgXdXoVfjoKTUwWwobWDQdzC") }, - { XHDR("qbdikwjemsnrnnj", "mPeWXrnPyaSQYOKvcBrVofZtPRbMwLVCmjCvCFBNgfejLlmdqKaRHAJLJsFBcm") }, - { XHDR("kawlao", "eCKlbObXyyLtJDAsTuCFqEJBurjKwsZYufSD") }, - { XHDR("mbnsivkrlox", "ounDzfhiYvtpuSNIYiaBDAYaWIjQLCilwIrRtueoY") }, - { XHDR("l", "DGANQFwgGBOQURelTMMuLSniRdTztdHfNwtkT") }, - { XHDR("awvqgrnr", "UhAOrFtDhDTRBNniRgWpYFdzdprmArWUySjQwusmRGnpcFQggTzJwqccsckpUpzTu") }, - { XHDR("cnukqove", "KkxivJrbcZjBmhYcleYLdwKNPLpfUWrMKlprCprPTQaANCaGSFtIMI") }, - { XHDR("v", "NArDJkNmEMXh") }, - { XHDR("wtyx", "CYUfhapIBsmuOBPWspObPzonmqwzCDEevwVKcBmhroEAYDOrVyuWbXCssEZOflkNFvLxhaGflGxpN") }, - { XHDR("aoibsvlrtovxly", "avYHhW") }, - { XHDR("qoicywzkwtmced", "hyZggoitpoLHxnmEPfJeN") }, - { XHDR("iklrapewllrob", "dGFiIlyfKyNvHOJkX") }, - { XHDR("heyrhe", "zleaTTryYWIOuiWRtmJQxLemaCmHQRDq") }, - { XHDR("gvaufiesybirfrzjx", "RKutYdDKQIylyjJHHlKtbieGzanVgKtzobxE") }, - { XHDR("cxahpuifcsdis", "A") }, - { XHDR("zhnfbof", "QFzTXCzIhrQmVHGpvCTPxyUHJLhkJJESJrawwBBp") }, - { XHDR("jpuaplqsjxkbxg", "PLcTFGuXYGMPKPvSYlTxN") }, - { XHDR("cuy", "PGyJEzfYvXUPJwyltIBQAXMgeMIyua") }, - { XHDR("gupbhkbjukpoumdfur", "ZZHtmsenMxKKVwHOslgyUr") }, - { XHDR("yifynabxtfimpmqebkh", "UZOP") }, - { XHDR("n", "mwTbxEDqwEMLXzQYpSFKXhYPnIu") }, - { XHDR("rvwlbfglpxs", "DtOpqxfXTSDhIJwrVVrVxjyddlgasjxhEoqqvlhzsYGHYUmmqidlAQ") }, - { XHDR("wuuswddw", "UJiMLZxxhmaxopmYCVQiVqcreamvOmpVuBMb") }, - { XHDR("ahniyixfehwdz", "lAeAUrwPPryaINIXNvIgfpAEmlihLZcqsbMLGIfSqKPLQep") }, - { XHDR("bxdtjrrrrswvkvo", "ECuII") }, - { XHDR("nqjydga", "FubBoMwSqvkSPIaOpxbhzOJcMpYkYIRhnjSwFhlDlLGcijVsifKVqycOrVqDaLwowcjHaTalLF") }, - { XHDR("fejixlwensicsdyfkuf", "BwWUozsuuwrsjHnJfJSuEMBdRlaJm") }, - { XHDR("kwa", "wogQobhbngzIASjlSPDIMhchxKSZFxgkF") }, - { XHDR("kdeovovwymvihoq", "GQuhCUQOfdFVjOpDDcFqoLTVJqiVmIvuLGBrLTudDmsVIyNzZtEZkYcqqExEfsAGXXOUKSbMTAXOW") }, - { XHDR("qhycukiszuw", "eXeNMNZjbCcYIuARkqClvmyiEgeMKwdeEXxLmUopjnZxDflGBkWCKlfq") }, - { XHDR("akvbbbukbtto", "gwoVWKnDFhhImeGcfZpQdhUzpZKMVGSmqlASmShCsIudMTfIbMcInoGKuFVYvsiVJMExrUZCvAKMKvwW") }, - { XHDR("yddwvnygyfemxon", "khFijXWgKrIKWAHuAaLGBLjJIzLkbHovlAjTExahKWDkwemUFCcAIr") }, - { XHDR("tfsgfckxwlacx", "KLmFWKWrHCQSpuTyLhNZHodIdVmzpJTjdoeCBcoLtmOvFW") }, - { XHDR("erbbfpxrek", "uIcVbNWwMuPvzcQyCIlnuwkmnTTDZDUnqFCQDKECkQkMcSuaqHAT") }, - { XHDR("wxtemeygjlxqukqia", "zL") }, - { XHDR("nifrkqutxnxxg", "ULmomeMarpZJBrJ") }, - { XHDR("qtfga", "vx") }, - { XHDR("utwflekfkdmeej", "PQcYSYroujJEHNassmFXPEKUxOKebdVcgxKTBoNOLqeTZAdGMMtPteOYUXIZjKWOgj") }, - { XHDR("gaxyorpgvqsvdbywcosk", "iVQRDyuRyQxVsMoyCfgJYtLxncthWNjhvlWBMJKSHUQVrwlDLWMRUkrSisIcuPfGnGvogqMUnZp") }, - { XHDR("nx", "JsXATvboxOYzi") }, - { XHDR("izivytisabkzppkfwkfw", "WsqOzovDUFbxlMKwRMCNKzNIypSpBsDkbPPJYRerLBuUOVmxDPFDcDTtBHcmzK") }, - { XHDR("pnsxaugt", "aeDiOErukoYD") }, - { XHDR("nbetxzfclimd", "YiDVZXrzaKXvNNqmvgOFFauvLtAwnnqgyCHkxnhmzFKJhWdaMIqoPEUCsiPBtkFnenTHb") }, - { XHDR("g", "BuipkOttjgbcgjWnFCxoPfOlgpgfxGxxPNizNYiIDhvNudZjPOjRKJSNYz") }, - { XHDR("mcetru", "pLgIvJgtHINelNCKqeCdpggkZrnprCxGIzufF") }, - { XHDR("pvkphgjjr", "OOucLW") }, - { XHDR("mtenvtgnzqfk", "QBIo") }, - { XHDR("r", "NoAXsocdZHSLKlNlBaFampCOqjWtgyaExVTpLIelMO") }, - { XHDR("zbrzzhwbqzs", "SZiOiPNIUgufEcLjkdoycUURgDsgBSvEzLYNfSjsZpIrXoVUYnHmcNZ") }, - { XHDR("hdwrvurnuwodmozjr", "BeMbCNEfEsmISMjLXDNArtFG") }, - { XHDR("gxp", "GdEXmZhfTagtJBOuGXDfKHIfgwOCBklvtpthxAhKkpguGObyWuPsRCKELrVavslvQtFgm") }, - { XHDR("xjjzezickbswibymbdo", "uxkrBbinYjhzcTeYYTZjKHRYNNsCveRmzHWHiOZlZPOHyhIVYUKuMqebL") }, - { XHDR("bybfednmcghleerwbg", "C") }, - { XHDR("xwmsxhnkilh", "crOVwmgFCJaEwuqBofCOEqguhJcjAFBXmoFWwLPULPavURzFWHoDLzdYnGjkwOoqjtAckaBPfY") }, - { XHDR("vdridlcnhpeezfk", "azPjVDlvcxxlvXtMKAcBjMKloXKUhlEhmrbkJsraqNWdWREyXBvLonwLEbqtskfaAoFnvCUuZ") }, - { XHDR("gvbrvg", "YkrIqvSzggVRHiKoxGHHVbqkqauCrXnuIIIJSlLhhmJna") }, - { XHDR("nrgdeb", "bPqBlEiRUNqKVZNqPbsXjcKtedbWaSyarpixWjImVzVexcQGSvjujXXGlLhnUSUNVpsbvr") }, - { XHDR("pd", "fePtfHblOUcvSoCDJFZsGRTxBCgZnALaIAqfDMqoykjubzokeXHWmLucLnFOKHoexBiODUnd") }, - { XHDR("zvnla", "uvmjhyYHgGJgrlOdzewAoiSobmwzAoMxgiVohkDqRcvLixeTRBaOaPVTgUdpUAgoLf") }, - { XHDR("qj", "gaHiJccpdCbYNrpyNWCUvTcXdFFabkEDxiAazsceCwYOOYIlMU") }, - { XHDR("hhrxswynbmvvwydpt", "AVDOsdHDZHvvcXVynmwEXyrrSxkgRMzPffOPUjQpbybBJSPMVaPwNtnrxSmoJUdlFvQTdu") }, - { XHDR("ygpgodcshcln", "NZPnCochTVkGwYnppaIA") }, - { XHDR("cgogiymcnqjjpmg", "wNEemAapWEnSFhTQLjdJc") }, - { XHDR("jytmnpgasxtyjvqf", "wDqTCndkjOVxkXQThNKfR") }, - { XHDR("blmeaaey", "cWaeCTJGJEQjZBmUTDSGOVXsiEMwlpZCyiAvxxNhPfcSCPkrfjFOtUQJ") }, - { XHDR("aautupt", "fbCcUQAbExYiupFMKhReTACHjsgMgBsyZQNhYsuqWQSCWACZCAETGSQHlm") }, - { XHDR("hwjsjyuqldatraukwj", "GVCiXLGgERCghRgXvbtYuHOiLCBqxetoRPmxLrnJOcXulvFTpwgBxlPjUKPfEUTjBPmTJdbWi") }, - { XHDR("ukvjyyikckkyzvbcrvt", "EWMfigDHcMKrsgTNseFnfBdGHnubPJhfXVFoBNraxRqLbkHi") }, - { XHDR("kkdkeyhipnarad", "dami") }, - { XHDR("nnghfj", "BUU") }, - { XHDR("mfxmvwoadfq", "TvFERrJdqYwbpQTrUpjJraCljuWgFvGIGdkUZqpsJQZ") }, - { XHDR("jdntlftofejmjkej", "hXBFoHQbPqtGLKyGHoypmVKwekIeuRgZljPxnXXmEKUr") }, - { XHDR("sigouasoobkpxku", "mymKaVxAIWObnKKYdYkQRQCuMJeHqrbYYRWipp") }, - { XHDR("rrad", "dTFtNrJniNxWzQaBQifGMiwmyKhJTAehgcrrjpJMUGreOCRbDDnr") }, - { XHDR("gpsiolucoknzvtlgcj", "UZzMudsmJVOWDdlPwSycWvDJsiFjYpZgzJsFkNHrqGSVusEBtERKOYVrQBucPtUsF") }, - { XHDR("pzlntn", "BPRoaoLciknDjRhrqGgBkgHmwbnqGRtjvBoNUjXYqgqcsIjThyWDoDXtFPHubHCsyWpzHiWeG") }, - { XHDR("evexvbo", "HqhfVstFZQPGT") }, - { XHDR("yulbxkvzzsqrshgn", "EHxnbPvVrYpZEKdOHfYkEBiaDWfzQZ") }, - { XHDR("d", "YzQhFZJtUsdGSFKHdHR") }, - { XHDR("kxwnepktkx", "KsltrNaJFqZnKJyuXBTshLWIczcFYJGJMoBGdVVinopwKyAPgIvWsJzeXPuAGvnpcE") }, - { XHDR("eppbpnwmxfwowdybl", "RCHogUXgtWCgcjRhkmtDPOukSWSRfPRBklkhMfzePHlGLTMUikbFIqEewMIGDPldNEcxqDji") }, - { XHDR("ltqehwxgbcu", "dwjrSVBdkaKTcrfqEaPtgWaRqdSChkUmbTxoChAISQqCZENUPmaZxCjXGvBUAHjzZ") }, - { XHDR("ykvvwbkoaadudzdiif", "loKGiwtanGs") }, - { XHDR("qasuuktvylrtoxajj", "srgFWCIdxNuJYRTNhEmgeAygHTUbnXwTnju") }, - { XHDR("uhcntkz", "IpdU") }, - { XHDR("uw", "oYhXWuiTUDCFhwVMHZuqxBtqoqNhERqxNZDjTsBbJR") }, - { XHDR("qabrhwltwybspsyyzocy", "hPBeqUzvsOMjACgDgUZMYpUYxUAgDLFkttygoxqmHyrXmpaCBCWyhtOtdTtCultGKSkIdDvmuiOBjhsF") }, - { XHDR("eleoiqkrdq", "sAMYxLlXIK") }, - { XHDR("jsjfshmpea", "ZEgboXjNAUtoldbGTzTunVkqrGCgVMVVaTMVkZ") }, - { XHDR("xetfxbprzndwxogwwrzh", "EkpOVKyUouqqImxmVFkmzpxjOltnTBeiyYqUdVxPXq") }, - { XHDR("uhm", "gPcETtjYdqiqpabHFNJPGvYDyemzBKQeNyA") }, - { XHDR("ltuouqntiy", "ZbXGOicCkMMohycRtHcbw") }, - { XHDR("oqwfretzmikinfrcjd", "xHEc") }, - { XHDR("bdnkdzohz", "uIUnBFcibqEIBHzIigTyKcirBgUzaqxyJyBUEPVdQJJcNKDlMOrPDjWcChA") }, - { XHDR("njbajjjg", "ZrRMuqt") }, - { XHDR("gpcw", "CWopizZpsWHNaQtdXBhXywAdLZxpdZXMaTQINtTAyzSFNvMfvTougBQCvmXCmUrkafB") }, - { XHDR("uxyyb", "rtrFBqHRLTmVROUrMbtTAEiJibwDJvFIBVRJbTpQdwlhJxsaEjijkZZOHQrQQYNZbBTakOjWjs") }, - { XHDR("rudxisjrkdelchymmgv", "XfJCxmiMUQNQNAQViaaVyGPnudRgNDZqUZtKkCpkOmoCmaoBRTPxEGCdbTmLnYRlaCziaDiFujA") }, - { XHDR("jucyhvtauhedw", "wNrEVsaERCFRNsqRLLDFpCpSnySHiwodvxqsBOiFjNOhaSGgeXQUccWLh") }, - { XHDR("ltwwlmuxx", "roclUkvJrAmYsRzcBgADysGqoPnpiQCXbXMWJLsvNSeUdmaFqpSaFAvLPOeMIRC") }, - { XHDR("mffudo", "zSjNGbRKtpUocPE") }, - { XHDR("kjajxxhnwsgtytd", "MjbXczOedaDpJgsvybNXQxrreShqisVzowsIeDTtCHzbGjVJNlhlXNzaOMifHDYv") }, - { XHDR("fpxqm", "OThKEAgdeDZIqJxHBD") }, - { XHDR("rqsbfcyqp", "taGUUIWbfBCPUJVvJCGoRIF") }, - { XHDR("wuhtxldnjpcujqskdo", "PntzBL") }, - { XHDR("gydrasnxbghvaf", "QxJCAxZpfxxJEFqvXEcLRSuOxepXSRPYqlIXxmAgaKTPITGtEhFvUVSqkJqdycHs") }, - { XHDR("ajrujsscmzmq", "fSiRvVGAzZvJI") }, - { XHDR("mdtuywhozlj", "bXTKyNFQJhIkWLInLsfzUtzZSJReIEclWeoQnqKkhsFMlwfHrgqtHTOBrsSzyLcaSvYgjnV") }, - { XHDR("xafrwdjmuyuilnjmuyvt", "LxbUMnVKfceXXF") }, - { XHDR("rwkf", "iIjDCfTnCstAsMqpHNDMSoBjebrUwfqNpTGZSHfMoDJggfBnb") }, - { XHDR("ikvabfnyfzhnmxzldf", "ifnNSjWWwFPPeNMNMHWfDkRlnYsNBGcVFZuENDq") }, - { XHDR("vowlqsihpbfttqud", "wZitFGhFonrbGEkCaVxtSPBTtqsIFLEGWQwprxfDqhOFUvDvRWQTdKsABBdtqGBUUKXseeMjj") }, - { XHDR("yxazqbszbtidyokwojpe", "qLFbEgSmKtUylXeMdLjAO") }, - { XHDR("yvaxysiktsmninjg", "JSaFwsQGvouyzhqyJiZYfDRvGkcfHnaxqCXUW") }, - { XHDR("uinock", "HHKOoGlJOTCQwfenybeIZkSgfWkEtNqlyhWCBPQMdTPzQcYpziwhRvrFhIWPBPlecJdLKVHd") }, - { XHDR("vfaygdlbwvm", "EhHgUzVnzepFXEovjmhyBfADLZQMFJVITnWnUiYHFOOOvkftsJTyFrjIOghmgG") }, - { XHDR("keu", "tWlOCBlqysaVvrxFtDDVkHRQboElMNDDVlSVLzotRxZMMUNaLxFOKOQclZGsOAmdhMlSefQZ") }, - { XHDR("aa", "JUPjxsbFxawgylqobBwGfOaSufRuRpZcVTzPIMuJAFhLutDDzmfh") }, - { XHDR("xoizlppoqczlhm", "QYNbZOsob") }, - { XHDR("t", "IHXsLY") }, - { XHDR("xqwvguklszeqzeaqgj", "xMYlvfvwoEWQaxRVaGrBugVprjFMsvIixtDFTFVVVWZCqesLSubvXxM") }, - { XHDR("hbuibblimowmz", "RzaP") }, - { XHDR("plehzqwudqaa", "eGSQbeStVfemvOGVXFiNjeFVYTXRjYhZAjeIjglHYFfHfHdeWXqGbKkzMwoLnobSWDJ") }, - { XHDR("qnbuhmk", "jIRLTbtYu") }, - { XHDR("bornjwpzqawqcrmd", "GFVX") }, - { XHDR("dbnyrerjy", "Ttg") }, - { XHDR("mknwzfzarofpzzih", "RUyBasRWrOmqcHrRGXngZQNIOaRqzYHodUErsIkimqoHrlhBHLiknBDPBexOJwktk") }, - { XHDR("rkhf", "FXzYmqpUvmMqPTKNdgWaWnUgRKmbYBEInLrtYDBPvD") }, - { XHDR("undstoimtxdimiunq", "dRQxZBkhOhEHHOAQrlxYoCFmbmlTgrykpfVWTOiFWmohLEvVzkxbhOvouZLnbUvDtdoFmFKoElaXhY") }, - { XHDR("echhydyfcmovfwxvxt", "PAymcOCwRcrFQbmLDVcZXLmdrcFsyfWmMCY") }, - { XHDR("hq", "BrFvqKAlkIAjYYDcbqFVoFcizxywbBCMyqnRcrjUNRgNnbEIdFkUuxvVTLAQx") }, - { XHDR("cynclxhwdv", "lB") }, - { XHDR("vmvbbsnvymuenwyghvi", "GbqlfMamisdeEVTHKPHeGMtkfGggLjgiGfAArAq") }, - { XHDR("egoaz", "LuASmuKJXzZlBYqAlmXgLRQKIlYXfre") }, - { XHDR("plkir", "FxNojdsysnlOrholIEsqdDVOPiArSeHw") }, - { XHDR("bblouemlopza", "YjncOtMMTBLLM") }, - { XHDR("lghvmhjxamuocmg", "tuslJlxmaClenHeVlVkbINObkeBmvYNYBiNiQ") }, - { XHDR("cdwxpmixuxh", "AKlJZKQeKuiiyDAqMoDAnMEBqAEPhqOAriVjJnpdnHrupuugvyOIHMuQIiAhxUwmlSk") }, - { XHDR("z", "NMsp") }, - { XHDR("is", "odcYkumJrjuyjEmBvdnplVsUzAhoBlUCiNHnlUjvfgnxXMLvBECOJIQlNCqGfpDgyRPBGWejKuQajY") }, - { XHDR("tx", "eLlKMsuhWZDiaAaOxhcXASKylzrBruNhZBEREFtr") }, - { XHDR("lwlptcaujnusypggxtes", "zIjjocFywRYUlYaLvwsltFnSwoVELiBgECnmbYqKDz") }, - { XHDR("owyaqefafwfyqojs", "EGlgyYUJMfrTwFiAuPLqSHTHbxYKfKwlNvlrbkAfnLkRTgkwlB") }, - { XHDR("zhs", "uHVfEsFSGTraBwbtKCKMCmLnjqUuuOglkDhYscYKbhPJnPGWIQYgULwoOXVEHPvTRDSKUMS") }, - { XHDR("usxfmqmwwnz", "PLtBKYwNJFakpiKwQyVUU") }, - { XHDR("zpkwxmta", "BsbjeFKNAtorcGsglkhdlvRMZzgTAAyPtqdmxh") }, - { XHDR("uejacddpgwzmyeqy", "JZxPQIaGDyeLbZDtTyCxzHKdzqqHTDLGvdYkkMtRlClCOgD") }, - { XHDR("iybnsmzvmughophonzup", "qYbvQIZDtuQkBEbBdJfvDGeKviLSPTynsbwLs") }, - { XHDR("udjmyfqptsab", "hjNxsIoOTTpNPqWmSapRhg") }, - { XHDR("drkygeosyhgpa", "SeFGpAbimMdLVcFqZyVAZKZTbuhDDJsPbyDIkOvAbRR") }, - { XHDR("cnqoy", "tRfrTvabQpHeskyAuqnKZUHOJJMlLBlZAzZdxZpmnknPDsOVPDeXfbNfrneiFl") }, - { XHDR("vkfebazddiua", "sZVpV") }, - { XHDR("loyzhcxkrlzk", "UXXkXHBZXqScIShhJmLgZWePzbROtNmMeSXrYzHhloGZmGRWRqlZSNYZGshbGTAnGiOzWBKwmD") }, - { XHDR("mwacstkk", "qJEHmqklezWVGOvJRVxpIaSJXePpuTzNpLCZDzvmieJrUXwGJwZYqPNCLtWysQRDfqsxBdatfBlzi") }, - { XHDR("bpoe", "cvnwRJXwjneJtgCXISNW") }, - { XHDR("fqrncp", "mvWwbferLaAFMS") }, - { XHDR("wysjpcsvbw", "WPhULYaFmDDyhGqyJdQCTUALJdNNcitXdWmlErUBOaJ") }, - { XHDR("udevssdaigvzcibyslu", "jPeqGIDZmPKZficlcqjXokhqRTnWCjhjIcdnJTHwkuksjXHcLlSmWND") }, - { XHDR("kgldjgzcmbcd", "BIgVYGHWEoAHLjXfQKLtFNjbdASILyrmUANvWZkQLrQHrdTiyACtwxzJBXAJLBRC") }, - { XHDR("vkedzculqzuw", "fgStFgdeAwpPzcUhEjnALqNSVpyEQLBCPhLanKaLqutntzQXVjMPAOQzRDBOtZFuMoXMEjrdsM") }, - { XHDR("kgxwljwpke", "uqmyEQhYiron") }, - { XHDR("pgbr", "NQwuliMNAjZLCgHHAywIzbsfOrxCZkJOlandOhXOKXqclUq") }, - { XHDR("klfkfqpi", "AYOhkyqHqLorIPzLgVNLXevoPDMjAgrUDMWDSHPqMMwSRnqoVvedwZnZgZJXcfXbACsGqpmTwvxk") }, - { XHDR("fbvc", "owSSSFJzz") }, - { XHDR("pxrukeixzsjzkxy", "goQzAkTDFcUQqiCvPnQnDaIEzJXjHVlqeVWgBjdXfizEHpViiXtgkHCvVPJyHCjIEELqVMDv") }, - { XHDR("cznm", "yEudljmsBvuifYqnmwYtXyCSDBWPPjHPDSbszRQqSxbvhtCfdIjgJhnBdtqWiawiesn") }, - { XHDR("jtvejmisas", "LnMcwseTHxcNzeKpWSfmJMQtmPGRCDCSYUSNTduxMyDvriskZyTLrD") }, - { XHDR("bcdqpsnocdhmzkhidr", "HVyBxutFbuYVYUmjiqnuAcVPDOBYdoykLzyOXBcKeOkLhMZmGpTCIQ") }, - { XHDR("ybsem", "KAUTAoxOMBXQLwlVbrWXtXZzuGOXnInORyaYzPPHPBTxleZqIphLtkbTWHxKaWOAP") }, - { XHDR("qdvsmheldpu", "hUEMWebt") }, - { XHDR("tkkqazzqdwvcsutcc", "qnhQDoPbXfjZbueBTBktdPrBpKNtflfJcyAyCBRzkkNROKsHSPFhSfNLNvgIctLoVMjUkIHztqpAU") }, - { XHDR("wwjyqtkdowfpjv", "FblpSSDYUMJEdoGoCkGuJAPhmYuOqcorGwjQBeieYLTcxavHfCcRsSGabhxYuWbFV") }, - { XHDR("d", "FfInZrzJXxuwhmkVNed") }, - { XHDR("huyac", "yjkNabbELOuRIdsRBFbOrasPbvgpZCBqUHuLOeVPWJJWhndeAonhAquXnuYaYSjdbyMZJQjMrux") }, - { XHDR("mwflnm", "ZfUCcPnIqfdXQefBPNxxPUpZAJtFUntchDblLumcIbDkBWeQ") }, - { XHDR("rjk", "cVlGJBxvZSvjrMuSGFRD") }, - { XHDR("rivnzjbsnimxuht", "ZbztlGhbxqmUFKssoSCZgeoBoTMRUPFspaosBPxaOKtiqZSnUHDxraCFxgsGEy") }, - { XHDR("nlogwwwxjehfd", "sQyqEKUmKlYCEdPnWwSNjeSFrXazeFYMPYmQuWRIVAICJEQHLkBc") }, - { XHDR("vfupsaszxlpdjcs", "TBBdoSVoTswfsZeeuvYLaspNWaHPzQIjtAZShUWKC") }, - { XHDR("exbtad", "pWIkgGlSAPOPbxStroJvHJGdQLDnaXBmTbbCIoCGgujRVWzBWcXeykesHpQXkQFFHItUAhm") }, - { XHDR("vvytfrrlu", "qzHtdwiWZOPFAXRCuJRwfLYtPFuIKYwwBgrYpFMxeVUYusemUie") }, - { XHDR("dbhtv", "OnUuAIzZYqOrfiYBqxVbOcYLe") }, - { XHDR("fdiudhatcthlrmksuk", "QMjsXQhlibtkeJEwPHudjmBjFfMCvXNqb") }, - { XHDR("oib", "tppmocCBWkYleltQUzviEZAgAxJXLzJarbGNIXrbGea") }, - { XHDR("psujvst", "cKjd") }, - { XHDR("xpeeemnjcufqbi", "ibOHcUj") }, - { XHDR("erinyuxkncaexdkm", "GWYgGprXwaWgnP") }, - { XHDR("puyd", "GdNCXOTFZCyzRejsiDpzRSrpULHdrHVhZEwBNRUxYilhikmXIQAtJKCv") }, - { XHDR("kxvzasvtfcvkfcclwsma", "RwyDRsNPwEreyezpdM") }, - { XHDR("yifyh", "DRsvJcfZaJiQgzXKuiWB") }, - { XHDR("vilhm", "vmFoDmnnGSplnhUckudebXfePclvEKytHDoCUTPJLRt") }, - { XHDR("hqsvg", "ufdINwBrgXFoqXHOQUpMEVYIYKHExEXYPkcNJZlTNLIBPZIYTTkozQWsFmdIqDPV") }, - { XHDR("oixpcajzlwvwb", "AvrqQZAtnAdetfuAgDcjaAEADrvjCizqAZHJuUxyKDKSHuRuaZljEcQTDHgxMWgFjnEM") }, - { XHDR("gtyepewqgfcng", "kUxuUyksefFRwGrZnsOrbEFVZyogaIlYdFeSoQkmAXyT") }, - { XHDR("betnwbjdentnibecn", "ZvGzjCQflsesYmNLKsWCFQOccudEvmvqaykPbFfQBsbcvgRoY") }, - { XHDR("brprkbomxnvhgwz", "xOLy") }, - { XHDR("ovexaunhic", "YosQiVCNyTpkJtqXYdcHOykMWVIsOmNLxZEFGmRBsnztTZRwZSQtVubbTAEsCoKRUdwyhQN") }, - { XHDR("ciotbupz", "WrvRgwO") }, - { XHDR("obapgeukmazjtney", "PHVcxVSiAdFDzNHLdtBEZsKBCt") }, - { XHDR("tlk", "QGqDhiTCiWxMbc") }, - { XHDR("lwpltifkyp", "wKbSiBdIxZYMJrLFasSrSxiWUrPOyYICCwKctRkOzAsxrzfHAHoBQUiRxf") }, - { XHDR("frzqyrslcqwxjtbexb", "mzajTFLwpWAfYXHtRZGodMDJXLvOORvaQsxJwiMVXbHUABbavG") }, - { XHDR("ihdnjtbuvmr", "KmbnqlAOnKCtpbMygiaFiQxdvaJbTyhhaxNxKJFLtBVOdVhgnWGRKSwIQExETRyFKGSMw") }, - { XHDR("yvjdkzqiccbpbx", "HGQncEKTgolRQfrfZvuKEFKZqasEPHcTmuriOd") }, - { XHDR("uznytweiabe", "EbgFHERBzTzJiMHNJNmkwHRHIsyqYHjynErLKhogiVqwWtIgfM") }, - { XHDR("yjhqtfoatmrouxkj", "YHWxUoMXdEwyCDMIaOPGngbPyaITKoShsPwMnUksiEoQOYWdhgS") }, - { XHDR("mummtfuvyiofmuq", "mnxraQWXmqrethFKOoNJBFlnCIWsjJagFBsXFVSzcYHQSELhhbiQSHcAq") }, - { XHDR("ebpywdqysxzesrzowr", "xEhfGnEGkDDbhhXsCUNPAXgiAkIEAiAMkCHeqmkVrQltBFwnluZAOpFtyXPoxfZHWpGkBVI") }, - { XHDR("k", "cgUShvWzSeomPegZVuYVtPdYMlZQxRYFjjSLULKz") }, - { XHDR("oijnhhty", "egAtjBbOYoxePgtbBFBNdzTunJqLdTwsizAwxTZQmjpUgSyFHbBYynPs") }, - { XHDR("izvukbedbmaljp", "aKYbapfFcEYyRHiyrzlteLijlctxafqoGzASG") }, - { XHDR("bcaaegyzjzhbtpbspghf", "xL") }, - { XHDR("eqjngxtqqsvnneuz", "BuplDTdZCVTCwfqxYHhmFVBAMVKwRWszCNIlBaDShEmFGGMKQcBTBRfCor") }, - { XHDR("vjqht", "wbsyAZjCWqK") }, - { XHDR("nnpxiyug", "cvNmtQFAIOKHaBSziJansReJwAjdLYCa") }, - { XHDR("gq", "RVLNeZWChAGtfimPMUyKilZtKAmEEkLaubCQQYEhbHZAhLHCsznFdAQhEqpZkPbhywrQyeCCfiSgP") }, - { XHDR("izdqfsjgeil", "rQZbgiWJBlVgclWaonDpHLZiwXfXALFMgKraIKvPLZVmvAaoAfLkbHZMl") }, - { XHDR("ubotey", "dkuNTUIoXcODdkXirLENDa") }, - { XHDR("jnddmdrlcsljsbkgc", "SfSMFDUTKaSkzfNhDQLFmbrnPpAhzzqOjrDjgYlyGkTiMVGTOyGJySbDnRghhMULS") }, - { XHDR("zvzv", "aDrXUojMKFCsAoSaDRylAnnhXyFdIEtyuDetCMJLIAtwbjNRzJDzGBnyOCDeTkwhl") }, - { XHDR("eqzskdekikrh", "mwWYYchHEoMHC") }, - { XHDR("fcfgdbvstmcmsjul", "QKdFZCZHFpkFP") }, - { XHDR("jiwiuoqsiktvaorrkj", "XWIVCLVnEGjRdNuRVpkNwWqDDOKfQNyeGWoDZePbLU") }, - { XHDR("yzwfu", "zpPmDhrIcPfCEK") }, - { XHDR("aceeuvixaulhryrz", "bzjVnroHiVOPObuQayMkxnTWoMgncfNEIoRMYiPGmNLmRStjOwNgaRLMgDeTFVcyKeESBNwvZhgaXSCz") }, - { XHDR("vvozcrztz", "ZzUWzcnBRajzZsPIpKAJBKEgQOaIytbOPAJUtmwcMmdTAmsuYWFGGNWFZAoHcGwVoThmhNjp") }, - { XHDR("axejnclnwspwalookrw", "sYNaLDxxCrwvoEOpjIxkLSLiJEsEpQxmmKbqXupLJkoccgqsCkoMbc") }, - { XHDR("zyv", "zEUubbtZefGnikCSe") }, - { XHDR("tdvenywr", "RtDJVvEaGEhZZWsBKEoLfIbOHriMdhnuczFZjdCcxZgrAgGhtctnJIcXHDBOumdKYBBthtgBeLAcHNY") }, - { XHDR("qnlt", "zltsGMNMRtvAiVNKIOxoNqCiJQDooedClDmeHkgAOgsJMMMmvxbnFeHW") }, - { XHDR("ynwpksikbysprkel", "zaZNCIoUwdKEXRTIVWBEeNRtPDrMvYJEBChWUGDvmyVQWjerXjoIaAkW") }, - { XHDR("muwnkffop", "TonciiYxXRHMDqhbe") }, - { XHDR("ckqvapgny", "uPklfbeqRoIFAfAQNNINaSlCCXeXnqCKzYUwoSzngCXjrYFUNQhTLHDMpXOTsxCEuAACB") }, - { XHDR("m", "pcqIZlzAtgYpXBoCmaEjhj") }, - { XHDR("zjbeuoovlprxpluqlxx", "D") }, - { XHDR("qcfnqnvhiewusce", "foLvlKetpmxQZtAVyHGBFnEXIuFjOAOtVJUCwGsSiBFiCWYOYhKevdaZAmAMaUMKJIlffjsBNwC") }, - { XHDR("wjjcqgklspbyspyy", "dfThbyrXbCliCmVtkkXApEMMYPvMCgckyehNCvucbPYXWpqGxWkdMYyWXttQLPYHTmPgfyQHroJCNmq") }, - { XHDR("ivxfxctvcjygrvmjd", "aldZjTqyRdtYmOh") }, - { XHDR("yifck", "BPQeezuIsoyYpPGsywohVcPEVVMmCXYpkJnDntUIukaJeoxNfkinljMo") }, - { XHDR("xzwincmxrnqdsql", "IdYTEJrlFMavGEvLGrckYryAGdldmWWPdvsZCIlTTzY") }, - { XHDR("uwwlvrwneprfkhmmr", "DhYmpZMHVVcfvBTSMAGffLGuwabjIuttRvMUlbjuvlXGFdcpLLU") }, - { XHDR("tpnqztpllw", "XFZWVJadMxjVHcd") }, - { XHDR("vtlxu", "SAKULlQpwDvBjXzFGsnGQpFpUzAiRjDcMmtLmNltWuufVKBJfrNwaCdEhwjTyMxCvpfPjYBZJmMZVvUR") }, - { XHDR("bi", "CjghrPNhQgzKdTYDoBGoQYmIYutTWTqVdmUrpTgrdxoZKwmAlxMCAMqkSaThwncoZHZyOtoK") }, - { XHDR("acred", "HWRuHVnvGWMlyPktkogiqPOlzSAWohlXrmzyGeiCsMjjXRaTBfYVzokiqhpFArISiyCTeqQvdl") }, - { XHDR("jvaem", "FsowmUOnKTiqefmhx") }, - { XHDR("l", "BjIJRzuoLqlojBDjub") }, - { XHDR("qscvcciyyueoa", "lQZqrZpVwLmhAmZsrGQotHMYgryC") }, - { XHDR("ypoqjtgpagqbawnsue", "UNJJQrzWHjnLmcxrYeYiXfZKvbkx") }, - { XHDR("vforaq", "zBb") }, - { XHDR("xfhlulpjwqoxt", "mdOVPfDAgUVxKFxGFTERsiOpBMxvLbnGVzBIvbqooaMVSWxYWYfakokWRqBsVXxzG") }, - { XHDR("qkymqqwjeboqgoy", "XJTeuUDTpfpCJabdSdamCkB") }, - { XHDR("zrgemfnlquvfyk", "gRmMApaLWYWjxSICfixrbhi") }, - { XHDR("ihakiuvnxc", "jWhoJrovBpyLWPPwDLUOZOEQqyzLfWIFwjQWpiQMzinTlZbvjKFZlBIwhVqnGuuuTEGtakTWvGRVUX") }, - { XHDR("bvppz", "jKPsnHcLwZlcXdBIjlDhWsKWhzTSWKrgKnTLkQwKxsDJQUO") }, - { XHDR("kuftfjsk", "rWgiqQRghBCdujxpcndyOabbsfmykIeYRwgGbQjhR") }, - { XHDR("ajlyryegvbxsu", "KWyngGezwpcLrKmBqgSCZpwmdJV") }, - { XHDR("epelux", "poBLXeqiGisrJLMehGtmwWxNugTLTWZXJznlEhAUBkTRqzEHVxdvwFMTZHIxgdVtWyGIGBdkL") }, - { XHDR("huroheuznhoyifwdqad", "KbVnuUfGcPPCJmMGhUIwrliYZoqxvtsxbBsAwUOzzCSMMvoIQHzvzWf") }, - { XHDR("kvadghepr", "NtRnRSpMQqiAVrTHRCJGMPrOFzCeAzDFJrpeSqOKFxFsROfMseHiob") }, - { XHDR("oov", "gzmadtqnQrsJiFjXOMlAPtNzsCfscmmmNNfSFcb") }, - { XHDR("leasvkdmju", "gcIvAdiZvlDnpqTnYinAtOPVqgNdBgbqCYInhvDvbHWvySWlKc") }, - { XHDR("ccfiodzgsahulcavvvp", "pSgbHsGVRCKGatVaSOJyWEMSYCSAmBIVizgxeziyYWYvpMapviJFrRyUqEkHHYrgd") }, - { XHDR("hysxeruewwfvqsjoxxps", "gSMElrLAOAozxcDUzYWsdgWVDjUCEEKuDYYOMfZGSUPpElGaBOIxNewpI") }, - { XHDR("n", "XMKQxgWAXXahAeDLKCclpUIzJJCJWfMytnJkq") }, - { XHDR("wuqadussobcdthzfn", "OwwMsTWqMZYbpgxiudeHhtSKxZEbbtJWIhXxEBprkdKBzOMGsKnoMRt") }, - { XHDR("nktohlpflqump", "fQbnPcqcEyFlBJTXQ") }, - { XHDR("ogmedgto", "QSvBRNJ") }, - { XHDR("hbjp", "rGAkftoFnAiHfhvyxRWXfUwEOwvdGFZYjlhJCmctzddekGOYTezIowkroMRQaRXuFykfeyTiwFPu") }, - { XHDR("riqyjzacazn", "uZlbEujvSzbYJpUzkdzWmPdsoRdwUXInZLAdTL") }, - { XHDR("vihtozj", "KbHZOQoIyqOaFsjcXdgubbvKUqDOwdUTPcsXpgReQfEVgPl") }, - { XHDR("pb", "ZgrjMqy") }, - { XHDR("jeuwfcweqogccxoj", "NkEQlqEUwnebcvNxSKwazZBpeLcJgznUklFydumLiZelwpirTULoSLouoAEQfbaDPwveuaVR") }, - { XHDR("ihhjummujixqp", "plJLKXBmZxRpdGbEAIKhQS") }, - { XHDR("oouide", "YRDsLtTuLVpwBEKcUZuqr") }, - { XHDR("i", "HLZCfOlkuPhNlHRKaNpANUUHwOrCIUaIRzSrEGcTRADaFQHyuDYTedLFGRveZJwuRBcciDrCB") }, - { XHDR("fvruejdgpopjpazdja", "cPvgxZWmPpVVAImPgGTWZtoEZMhdRlxdrZM") }, - { XHDR("chqmosfkmedazgrsjugt", "iQndArxRiBNSXZeUoEkeFRtYcLBMqxwSfvWVJRlPYSSdRLEolqwWCfzhnKzZmaDZZPbZXYtUNc") }, - { XHDR("j", "SLkcJbHOjMMWwALVKdpGhBoDswxiVPcpfPEDJXCVpXVDCauPTuJdCSFnyifIDjHASLPYssX") }, - { XHDR("jjinykv", "bCLuJSiegbprmuvjlTRnXazmJRANPwqnF") }, - { XHDR("arneznfz", "LAZUsJMfsVnMNOJbegPktCoAXKUaNHMvWHSfdJTgdMek") }, - { XHDR("ir", "RXSIfmQdSMhJRcL") }, - { XHDR("x", "KdyYAIIOJvJrDmibmZGhYrHnnKvyhwjZwHDTsVvTgCRWLtLCSOCYvYgWYgvCPAzZ") }, - { XHDR("l", "jreMPygQPpjWYQWwuXJmjUnHlpBqejtReremNidElH") }, - { XHDR("zaqmouzdamv", "eEHzdHFdlJPwtFFcmGahnqcCsKBMODmIlOGwgIVloGHwhalkQPYohLGzsivOEmfMQufaDa") }, - { XHDR("jgifiyjwwz", "wpMLpSzORwNDzVbIeTMQuxBrzkWqwiJvmhSIOyUJehEyxNXlQDlpYy") }, - { XHDR("bkzqkrarwdaayrsnqpwz", "i") }, - { XHDR("oceidtun", "tnfkDxIoxgqhR") }, - { XHDR("hnwwrpxzcipvfa", "WdHCOzVR") }, - { XHDR("mq", "SafFUtdFtzyfauet") }, - { XHDR("aionadbqq", "kajseSgDmdMHjVttBEFNhfYaXTXnQoMIfTfsuCvPvCmLpZKTjVkxkEkeJHOfmtYF") }, - { XHDR("plxbjvckhcawtuqrq", "drxgJrLpaZlFzorSzNPXWjtvinrkYmtTKZCyiwxgxJYOMhTvPizRpXKlAWLsBGcKMKYIi") }, - { XHDR("ajgwblcd", "IyVRuLyaJNAsFWLXPpgNlwvXwvQrUBXyGffDoBSWPmmY") }, - { XHDR("vld", "YPHBvUNTcQKkByHOsFKolaJvKcyeplkiWFtxtMBOLNxfKGiTPuCdJNBCmMJdedWNuSlq") }, - { XHDR("xhyxwp", "EuPLJwpBAFtHtdccUcEXmkcImn") }, - { XHDR("kz", "ygmJCvgLqjXUhKuePKJByemeCzHWVmNzLENlWPYlPkfCkuYsjtWcYRwafiTOrvQ") }, - { XHDR("ukiordm", "uCJjCXNsepZNqASqDTOnDOqcRcku") }, - { XHDR("ykggrzhka", "VJDtGcKEYYMINhmPJFPXmHHKWgiROTheNHpnaSJoKgubUbPtQpENhbNkrSEISRXWYmAGgkhPbRxTdw") }, - { XHDR("buygeaoqceaweh", "nENVjWcoHrVteLpxpOgyEu") }, - { XHDR("inzowvovyccaippgtrhw", "PjhcKPhPAOZRESVRoBPdAf") }, - { XHDR("kgcqmmt", "mnqhgWIpDfdzOCjPMtQvkqKwpLvhElZSpexnWKCDuQnNMZZUVkkvfVlzD") }, - { XHDR("vhwdslcpntflmjbo", "llCVRkBjXDpJPCTLZXEeTiYJjOFv") }, - { XHDR("pdptqe", "JX") }, - { XHDR("nmrycwr", "BXEjYqugrOEewswHUakdGWgkrUMtWkIztOhXQiztvXBlzQSiezDDNRkvnaYbCPxDmrFkgYHKjiFIl") }, - { XHDR("tkvazetzxue", "yhvgqqPFbotaBEkYCVTtMLVpnmsxlzxLh") }, - { XHDR("efrlquyveplstonqg", "oQkCKrlLhUIXXKnZViKBtekDpEr") }, - { XHDR("xgphblia", "ZXLRYPsZxmdGXgcUtUeMuyTuAuYRbiZMXKByLvdAkPRuiHIuNixgMXHV") }, - { XHDR("serz", "GzfuNtKORUUnqCdyuZNapEUyPLARnCXxbhChidbQWzGGfEuyxymMPiDoqSoImGKTIEfrybuPwv") }, - { XHDR("betxovcyistbxqp", "WJgpGmfanVXQiYtUbX") }, - { XHDR("plsnlswujmxcf", "JfqypkgjVKrXchmQHMgTTyQDWykGZldJkzAGfeYtyStsQpiMENOFatYYb") }, - { XHDR("tnbjubrojabhkpto", "cvGfYbMnXexWBMiuA") }, - { XHDR("oulyzagbyoaqncpgum", "XpwEDfsAyAodwvUozntws") }, - { XHDR("tjqhhx", "NQqkBVpHRfnCrvsKfogvKLeYUfgz") }, - { XHDR("kqtiagqopncnsfmbgnzr", "DyHnGpxqFDeVVzmMbskEGFlZoexhIwIVIQrtFcSnNYLGomU") }, - { XHDR("blyaasjfsedjqtj", "VYmSoQdtEdkrICwrRljGPcFPWlyerqLka") }, - { XHDR("bziui", "mRWCInootOYRslAblWeIshWCoXvZZQWPUbFPrIrCrzvvDUjtRCIUmpKStLfnWEYgBZJCUxaHQw") }, - { XHDR("k", "KapgMOoQlUfGgY") }, - { XHDR("oxlwiu", "dQbTwCMiQClGPEiIbJIPdEEDLJpDFGmXckuvZPocSlFencGhxc") }, - { XHDR("wwthplzn", "OcgniIxBnIuNUwFAbIPHUydsYmvIxGuXAJxRrEUmTwIEG") }, - { XHDR("spemlvw", "wkgwBVTlRgztQkbPzYCiYMVGRcRKeVU") }, - { XHDR("wuyuwsewhigsknxegie", "oeMMHCWaTcVUrSnERFTSAbYdOyzIQlDcNnuRRXhVhJbvSIVeXHWvSmJVOZ") }, - { XHDR("epypsylw", "jhpsklTdaPxq") }, - { XHDR("asogpfcqvesuc", "tzFMgTHuMxcGUwrZxIttlorVyySldHtEthWyHokFNkwnAajjXWD") }, - { XHDR("mqjygseqnkbgtktjwopu", "QpoUgOFFlCMZWRNcnsQQqGwWZsgVsrdb") }, - { XHDR("hmggeabxtnygsblvyu", "ApkiBEgRwRQzPvgGzWWcWXDwYwMHTOzIGrYXOceZEgWwmfcBqTgIdsQnVrpGQTCOppjFrSBKjf") }, - { XHDR("lqotzkru", "ktDVWtKrkjXoEAKOhoTUgIVRTXHTloUYLhUZYVacT") }, - { XHDR("fjaopsnnqbvqyyyhmhd", "INxbIWWxUncnBKCJaMRZkWtqJYbJCsYBSrlEkIwDrhsCtr") }, - { XHDR("zi", "pcpnLZIAjbRUBVKOmpoAnqqVsuRAjlkEVqQHyTQeMExH") }, - { XHDR("emyertzllgzhkdjdbk", "vGwMOlatv") }, - { XHDR("uxhzeccrict", "eFBbtsMFTiemFQiPQGpnvkhbbqKQYzjazrp") }, - { XHDR("ik", "syqTTupkCSerUxXxBMnvszPphulemPIGjuqA") }, - { XHDR("zrrxauvgwdrnvz", "uOuBOICpOZdJBmRLPuOpkYwzohJBOgtPakjckvsFCcBfbPeELLWQPxoJdgTpPmlxg") }, - { XHDR("qjhgdubvfiis", "QsPKFhhhrgTxaxRUKdZubxItMa") }, - { XHDR("uhodjyajwkjnrxxmysyw", "pE") }, - { XHDR("objvapoozzkjffc", "DxLjTJJyAtYMmxswGliyfKDjGTPdhczkzsXWSfgBNYUYotTIiX") }, - { XHDR("uogtxnclm", "obTOcEgPgVHAibVmsfvtZiPCRFUVJpWuxIgrEcfJySoeiLLIVnZcQkvAhYFfVSrCxmPBDbImYs") }, - { XHDR("jkvbcvkclvqpdr", "yDw") }, - { XHDR("mfyvzqsupbsxjdkl", "Mzpy") }, - { XHDR("yjvwtmwvzqa", "mLOfElX") }, - { XHDR("bcbzlpkfuhmuic", "ywpRDmzBTtXStygeSqClS") }, - { XHDR("ygnjxfudlmq", "AOcTuKCbalsPexVducAcjpesIMtQdDbE") }, - { XHDR("ibdnwezzkxrkuhrf", "UfEZqtjAikhDPogScWUrlEd") }, - { XHDR("vgp", "zgdoWqmTyAuvQCUILspDdcqvtRouRQRPVTuBpz") }, - { XHDR("aqcsxpcpzwotntzyzot", "DVSHIwHYyPpvarBUxNLavzfcgyHdsMOCqxacdmqtLTaapAqzYhNYetAPaAESO") }, - { XHDR("pvmkkykqzriglezk", "HRhBHZnzvMkmrEASdzstfMaUoOtiaGcBDYYBrIEexppijAoCj") }, - { XHDR("rsxvm", "bXjmwN") }, - { XHDR("rnduugxiqln", "KMjMKuiHCGdFJicoVMmgGeqIpUbBhXEZqlUXdOF") }, - { XHDR("yoksqhepsulhxurbc", "yLdOAwNiocQrAcZRpiDVNKrnkVXfgHgGliOGNFBzUPvovJVcgzVTlpyvRKEOsLKXDbnQZuU") }, - { XHDR("mwkgfnsgtgassv", "zBFZqSXqUGLmvdXySffHNJyudnYwSBtSdVKYcbDGukSZyaOmKUpPrWxDlKJVrfvinOjH") }, - { XHDR("wzlndkauv", "gtWuWlxyoNhKFWgeiQjKBrDfQBqLJfHnYsHWvNjaGqEWSuyuUBZwIK") }, - { XHDR("afz", "rkvEeikfQgZeraz") }, - { XHDR("pmpvoiurlogx", "ajxYZfSKLljERnSsJQhFaINeVQMhuMdldKYqzdLgKbnIzrDWLZjTv") }, - { XHDR("grfrvc", "YXAYpFNNEIhxjkeEDkPQdk") }, - { XHDR("muzmwedoeiwd", "ELfbqxnbzVhNsrMEOfuXklmpblTIKDx") }, - { XHDR("jqceoavegckseoajpf", "oMEJQaInAXVLMEDxGIkMWbL") }, - { XHDR("almdqccqua", "eeqCoMOrBkuTzIqsGyKvdRCDawPoTHxJHJHBT") }, - { XHDR("maztqxgkgrxtr", "dvEDKqCvoxIgSGKboBoLKEHExFMdRDseFKijQBHNROLPtNxsEgmvsBxjWCOMNiuFmEl") }, - { XHDR("uaswbpzgyqrgozrv", "jFrPiAudCPDl") }, - { XHDR("epnv", "CKsHGaBKlxZtIWoJSafBtjWECUbSYJGpUiJStPrEhgPcEfbUgMRXgxi") }, - { XHDR("vvzshopjuasebktriwp", "bjVjbeCDPekSACnnXURnZklJiplRThQQtdWzYEVtousNpQhIeoeQqZrOjtZr") }, - { XHDR("rbgnpaw", "WcTJxPef") }, - { XHDR("zvioxjjkettzei", "dCkJAtEEGYObkOSlhAQIolrnKFYEFPPuwZtUNdZsbBEpWgVwpLuthrqgZRCs") }, - { XHDR("ljogxlslcdcpdbfbzir", "TBXvzXxmJQBcWhNLgZREbuKqLxTGbnZGnEVYRFNeWpljdpAjgthpQlCkBKZxnKaaBlYGzBpvLrwZpMHE") }, - { XHDR("th", "MLzZoyp") }, - { XHDR("froxyfqwfppsxld", "MgdFYoDGJtOidZzhtKhcDvGZBatVguIOHqQKiEArtxvJyUdQzBeyeIlhqDXJzNeXJgvtAiplyAWxHLY") }, - { XHDR("aefhkwofa", "JtmgnZnpBcMUIJUTTQMyubJcEDsFkfdVUqfdTUwzIluDXyMQg") }, - { XHDR("wd", "PMXLmMbIwKFlNpyOGKIfsPWVpsIYpVRMMpcQVUupWaIZkxKSzswVSFSfnZzgPrb") }, - { XHDR("knvr", "ykgBsuWVFkrKVQsSvw") }, - { XHDR("fsfqq", "oru") }, - { XHDR("frfuiotelxbtrds", "UanWdVOrhZEYhiFNXROwBnPBTKraYaXFTGokCsWcUxEqGoDzOdaJh") }, - { XHDR("plznicfdqnbwxfofbjr", "vNICCfEyR") }, - { XHDR("zhbwnsdlxuqfpdxcw", "XQeYHfBBrVqpTtWGGvDZgvsHKtEchxjwbjjOraEJnGEzuBZNGyKosBvMjLIOQKZqQihDDLTzT") }, - { XHDR("pegkdytvclzyispugcb", "AkDrnqIAgtPSYorcNvuJGguzPBYMCZfXXVpdixPnCCmoYIVjGItxjwLmcplML") }, - { XHDR("viaoezozqcgcs", "imjdjlRHP") }, - { XHDR("sh", "qTVSv") }, - { XHDR("gscciqpv", "ogBXjB") }, - { XHDR("xijcnlgeegome", "CeerGuKklzWhNTiPvehlnUXygyDgiRvlBpfaqUrcOWkZLjNsndgKDEqMkBxRSpRyBCHLJ") }, - { XHDR("zrvinfjgamw", "zhWLIWcJaxyAxFSaLhlInhxicgwEoEtONyWjESEdMITxIkFQtjaoGwQSqlj") }, - { XHDR("hg", "QoUSBRBmllMgOqizhwlHxPixSWy") }, - { XHDR("zenmhbjeeibe", "LaWMBhHxHLDEvHQNajsQzioFWVVMraTTskTxLCXEepuBzPyvaaIlJZeCllZfSaNhdKheXtiPXD") }, - { XHDR("izqhqpadvqnbuge", "rWgiSpBVwwuwPDaWyD") }, - { XHDR("ppmyofsaasdbp", "XJjHkxmutwPQRNseRFFLKy") }, - { XHDR("mbpjyh", "AzArdbNCLRbYcsQFCkpHMzJAFHTdEVtjukOVxRsfBwdFEnWHYUJiDBfzdLddrBdNtxN") }, - { XHDR("d", "rbmIcjBAbpJeEptznRdBCGAeqnrnWZCzUngduBUZsWtPZtmCqqXsfaUDzMUFRHYLbZjzrSerhQGwUAW") }, - { XHDR("qjvinzhzd", "HKYowUSUzEqbrEoQrGGLbuIJffpOELMMlYCzeXVYGzChBTDkvfoepwnORrOI") }, - { XHDR("pyavkteyrz", "fwYmYiRvHdNyrtTXKedkxcSDCICsTieJYOgmFJfRUBUqHqutSau") }, - { XHDR("k", "jTMoEBHQaoyaM") }, - { XHDR("fhxtoqxnnjjupobzfelp", "VZGpvUYUVkvMxpLlPwXVtthIGgRXnbpNFsuxQxMtWxkhLMhsKQcKmLxgkHZcJpdTdmJTDpWTHfiNg") }, - { XHDR("vkhjshiencduiihjk", "WeVkiMtrsQ") }, - { XHDR("eex", "cgoWcKjwkseqpH") }, - { XHDR("tdbrtbjmkwsoia", "kopSTiDkJorbAHeSDGbXjCXbOPsIgZJJByvWwfpqKmEtJOdjFVKYIOeAKXrrcYtsQAG") }, - { XHDR("dbpnvlsmjwgd", "heRaJtaPSVumMSgrbrOuGQKWCujAlaiSnUVHEAC") }, - { XHDR("dutvyziaxnuw", "dPAxdmoAZeAThLwt") }, - { XHDR("orlrqsdccoani", "EszATNyfELQZKNkxYDwtzTzCuZvnS") }, - { XHDR("bvbqmfmolhifppcsq", "mLuWE") }, - { XHDR("mqccgmnfrzpeh", "hSxRAALZUEFGAtJXcXTOucWxRInucJCNBbXWQBKoDkoiIOjGEwgQnZnMneuJEoJYFkLMmcSnDqgaPuY") }, - { XHDR("jvnlqjpdqhxuq", "ysOCFWEwxJgpTDpaFpnSRQiepXLThMnvyORiCERA") }, - { XHDR("csl", "uHkFGHKGfbaRUjDkMamIgBVPZezYxblaWGxuXVnEEfsHZvXgBxQlogRsd") }, - { XHDR("xlugekohvsm", "kBnZSHowmzNYRBrdJYgeJnolOJPcqMGfHFECBQUoQWcZWdrZautuIlocUrKZkQhTIAfSlFjBcxB") }, - { XHDR("ftwxki", "lzhXeHhG") }, - { XHDR("rkdsecwujrokoyabtpfa", "MYpmATUxQiXAemCDoNeWxchoLcDgnGVvQjFPmoy") }, - { XHDR("lq", "eYDBfFyalDOGRCmoxjhrMxFbyuNWMQAmmbYEHQJuvviLKtSTkBNLVoJChQxHPOpiFHRnkkSyFFPHTFKI") }, - { XHDR("tazgfl", "LkNrIqdjmLhsieXWFknahsTPpolbwkXIfkFLtKDKccYOaSeQ") }, - { XHDR("hartiuuf", "gFYBryxUxeLNJUOGRcClZPdjgX") }, - { XHDR("fxffdekpi", "dapCrAIPxv") }, - { XHDR("ulfluueifuhheod", "cDdGerfnhgMNXhlWnwlIlJsWIGDIwAgyVLjqUYTsRvPwrKtIg") }, - { XHDR("xwobfrpufpw", "eZBoaNZveoYVDURvTdbINMrWFU") }, - { XHDR("z", "GnfdCidOblAGdepHkLirlWgPaItxrkoHKMQnawDagtphVue") }, - { XHDR("xibdaa", "lyyMzxpxsLtbBvExFocHwQxkDqGYFSeEIVlpEevnQgZzPmrixzjMTSMzucewqjGJOCVGoeVJsyF") }, - { XHDR("vbjqlteckx", "KBpdPQJehLAptWudVWJLCPjtAfhVzERmxCGDJtiMzDHUgoSTFVgGpHOyzxfHnfWcJObRtNxXIYjH") }, - { XHDR("dtefspnlaval", "iyErZfjmXQREOSONVGPriXMAQFQsCljiWRfvLSxGqfgmLBkTefHvFwhgdWeYitjNQDHoBaHaACEm") }, - { XHDR("barmxt", "NbtRce") }, - { XHDR("kzhchxgqmlcrdyjsufot", "yjPtNWjfONqDZUqCoiFhGKuHkzYURoNZhOEWVZpMpgNHaeDuXihWbBTXUcyXqite") }, - { XHDR("awxvzgocj", "qTlqxJpEhJXVTeClSYfknjghzVDWrcCLFmyRFvgsEtnGbnYntoAirHRlj") }, - { XHDR("kunjfavsqcldezgl", "ffiwOkdgjvwYzkQIFrULXVXasQnkhYqiqHZZNskFhrPkYaBlkseUhYXuupLXqmJBXEDxHLk") }, - { XHDR("vkpfmw", "OdRbpjXMxRUBSdDwyKbEy") }, - { XHDR("fdnj", "KwrhDMqvWrNQuknLmpbPjiFITEYqm") }, - { XHDR("kpqftbmrcvvi", "gCNkBt") }, - { XHDR("xwcsbi", "CLWoBeghSTMVCN") }, - { XHDR("ludfoeehf", "kOUGDvPLOGiefFJVusqLKBibodpZSMIoAeuzdujCpx") }, - { XHDR("wciwff", "JhNzjTGQrUabodvEmkivYohRHdzrbJLHkufDQByaRLBxPyYETvVGaKbjfTBi") }, - { XHDR("bmdodznyntezdpwp", "fiiXrUhbyOPwhxDPqgOyHQLFqzcujARHnieZJlHcjtdbhAtHaArdCQBabXwmKRawrGUrGbBebnvymY") }, - { XHDR("yrzvqjkuwk", "mkkQSvlMfLWGhEyQhhlMtGVMOQJuFEdnCdHFeqEajjqyvmOJ") }, - { XHDR("ph", "UQHTKwkXcPfjMaWMyirbZAuzzPwzRcDBEeqsMiiayRPoXIWDDeevNOdpdBzWaBDhh") }, - { XHDR("uthhkhikltkmpmgdba", "VcBalgGsMWtVwpcBStLPNpOzVrBHXbkWrDYOaarEJk") }, - { XHDR("ckgcgsxwe", "lzaEGCjQsjMLBPezdRfZMdKLhqAXfJzGeeJAShEjtKzICKrSSiGYKlrdKUF") }, - { XHDR("cfe", "NAalsTmKUSOLKfptxGviisAuyJVFUkYnlhHTGoEUMUZcZeFHZfJKWeaeGClXXO") }, - { XHDR("d", "mQvUoLdLwxLDLztDgwoqbQmGldkKVSCuOupW") }, - { XHDR("cadcwitsuxk", "BWHuPEj") }, - { XHDR("td", "nwQYAvzKD") }, - { XHDR("wvsuquwnaapsqgtf", "npEIXtDiFoslD") }, - { XHDR("qodeqrbxvfsgackytva", "zyoJOgaKTNeVU") }, - { XHDR("tjppxvefqlweu", "zRhFehFPGCOeiaxmpaytkYmhkOpoBjLrCDGwTQjbfiPGRpAQoiWlnFasurfoCXP") }, - { XHDR("c", "rrcMEdLiSUDNwXsTtatpuWXNDZuCptDyhCxHNUoxHIdaYLxtXbqlbpfvH") }, - { XHDR("olg", "MavMSOCazaaVRwraKhhUTbZfZMpJsrpFKIphUUMMqUyntOMCcVMMdDhnIjVhNEJE") }, - { XHDR("mulyjvhqixhnu", "FPqpvVEKxJgytdoQYvPGCrNgFLDUxPcsLZX") }, - { XHDR("zchildfgfqtryshhlh", "YoKGLCvrLhQguoFsihOSqKdpvkBNqKCvaZmYFVUEMnMOfLRwcqegHHX") }, - { XHDR("pwv", "HVLfGUfVFlpEkHIsTvdAiqfLbAozLFDw") }, - { XHDR("z", "aEXNmfYxzNmUKIixRRjRzDERtWLPpLiwHJYYjCDxPDihUqcU") }, - { XHDR("vuvw", "MysvjkQLSZTAFAUuhu") }, - { XHDR("yhkkwtcj", "kUgmjYZTZqVxhqYcSnixsbfMLBWMaSUkOxRJyggoeducHNXvFyGpKPYdvlrRhBAlimGsl") }, - { XHDR("cfav", "sVGnBEuoqTzBvngCsoKnxXxgZpzFIfQIIMEHLlewKHx") }, - { XHDR("sovrerjnawbaaxykvv", "RZgqCueEZgRBWR") }, - { XHDR("y", "vNwRWmHcoVZafEqYeYTIJpkcpPrxk") }, - { XHDR("qnrzccitjmfjqsbw", "JnwiRZqrhjPvgYVWdvwLrLgjWSaIjjCnIDQqsKOlyqmGog") }, - { XHDR("mhs", "atWtlTLPGVO") }, - { XHDR("yeqcviqpscezjog", "sJzGzbOLlekmdfMcVuunVeTpCSSbOyOJbcFXYsN") }, - { XHDR("v", "GnwZJkUrlfGyWCrvQfWnPs") }, - { XHDR("ecvtylsnalu", "BnNfIpYjfN") }, - { XHDR("jb", "YUDhLFUGyJmvXPGUFQcWchhr") }, - { XHDR("wy", "NNBhwKobpTt") }, - { XHDR("dakukcdzjvvqfmleh", "rAajeQUvwLYfJ") }, - { XHDR("tanqwwgegtfe", "fBslEGjuaVyZUhXgwPLkQPbymRMxBIhbBHozDOflNwPaYHqmzJxKLFJXFY") }, - { XHDR("rrifsdikacmetsdj", "mjV") }, - { XHDR("jfzdupizlrvneffl", "FXzXTWzQprFAUXvDXbYmzACnamcjcHw") }, - { XHDR("ndhclpbwngp", "IHFLxLCdPjbtYlyHBLslCHgLpBpcxXTOPdBpWauOxDjWGMEPgLDSGcvmfXCx") }, - { XHDR("jcnkynriqhp", "wfrtBChtLBDZqXoUOVctXhOSbovuKfoEH") }, - { XHDR("medgmxnpwcv", "nAQxVBlLfJVASxCrHGRFIoQqAkhUodAhgX") }, - { XHDR("y", "LpnSPPHkFHESHzgQGhtibPJyGGzdfGXlUlLmbRQQBvXbwZfjxqkfOQInYAyYEOlt") }, - { XHDR("njatqk", "IOkeBnUnXXgVBVWkxJYjbMvYoAAIvnAIYWYuTmSfcDQykyChvWpTFwjfhomMr") }, - { XHDR("wjksegdsxam", "cchiQfEVjGXFLHKOmBuDbfFluCDYrGZkAIU") }, - { XHDR("ldre", "NstBZUFCWcqUDnhXLsUspYbNVhtLAKZDUnsDpeDPjDpJkNeC") }, - { XHDR("beqyyjsosu", "wemWgcjuLvjjvjGeKyPBMtMiCMLOIwtXFcsSzqLUqWLmKYBxVvvqXHEONOj") }, - { XHDR("lxtfatwdj", "rOKInwQ") }, - { XHDR("sauuoaktzyocinllltat", "euinLBvmDEMwbJUPREoZFUufUulLuYLfVynSxMNnQFDoGcmWIDzBdrtSyJRQnJPf") }, - { XHDR("rpixbjqtvdiebzgrleo", "HlWQ") }, - { XHDR("wgcx", "kKBQyhXzxlKmeNTLkSYBOrjZVEQKe") }, - { XHDR("tzaouchviyrthagtjesc", "PHvqjMVGbqKDNMOuHTTZMR") }, - { XHDR("vwuskfz", "nGEsrXKEMMBDQLeWSVCxNmVnfDkCb") }, - { XHDR("yd", "FkCicUwMrfbOtvLpknIBBkhrpQ") }, - { XHDR("fmcpzmahwradvzb", "VmrYZZSzbQVtguyzynTuHaWERxCDorAvZqYKGuirQaDkoFhMgFcdojUCWGLqM") }, - { XHDR("wj", "BlEieZsnoBcDTwKzxkNJmYNXjzZeWqUSmVZACyLJUPurFnFSwBdFdBip") }, - { XHDR("fxc", "zshoANq") }, - { XHDR("yusigsqalcakbb", "tTYXQm") }, - { XHDR("grwtxzabipdodz", "CdpAtahrmShYbEEADqRujyBAPiinNqpFSjEqfFlfmoWrXpxnhltZIjRYL") }, - { XHDR("vgtyfecbuvxuzv", "cBozJQcnSqRzpiNtNnYoLYQNtIlCYRljftlCNNKDoxLEFuaNFZJBLhpTQjgaGJBLoqv") }, - { XHDR("oqzkclvvamj", "zflrAZTFREiejPObxhNmdtaDwjJvTeyQfVZbOLHvyihUlkgzzDbrxexfBpiaJuJbZjuJTqllQanm") }, - { XHDR("dfxpedrrkaoreilv", "rNPwiOEUulBNRRYbRBxGHDDJRYLsZCgshDHOfeAWoAWgHpimVEHqXJEYZaIwSyhnZYmUv") }, - { XHDR("wlbgbxfnzjag", "IZkGQZfUiD") }, - { XHDR("c", "VliAvbNTcnVtapBoraPZJFlXztSzbssAFBY") }, - { XHDR("jvjcjvhsfvpsiiwdkxg", "pNceqTaYCesmkQWvogIiztDdsnheyUCDZkRawSlQXFhvTyFAIMdUySUaqJM") }, - { XHDR("kfhwbba", "uTyAnNugVOPIBXziLqTFpXpjSYmmaHtEBugNsYmGIQdTHXsTXFZ") }, - { XHDR("yd", "LjtuZFvMHqBJbAkZaxOwiToDDisqZhtuCwEWyFcsWCTqhTaW") }, - { XHDR("otnwtidlqfulekvuk", "DlvZDfLwqtQLiarbncBkQRKkPYhZcNRrBLZrRCZBZDPOxZHZt") }, - { XHDR("rsefmuojrdalyu", "fdTfMpdtIYkYtjduhTmQzxpjMPmyIecUToCwGgFwrvraIjmqImYBIozZZQRPt") }, - { XHDR("qyvzek", "jOggkEKCpdiCNRdoUzEVYHWBTONIHJQqZELyTzDpyUSQrORVeBPTFEmZTUdWZZFMsap") }, - { XHDR("ljflpxrx", "IGDiLMRtfvwCLLDCSEiAyrcEDLKdEejQiCtTOFIraLABVnRezBPzMxVFlvOnVlCWEJYHfNgfyCYT") }, - { XHDR("rscrlvxpszebnkc", "KTSvfkNhsnLEjXwGduRBmRapGNIRtscZUzTGNmPlhuJqMiwJHNhqXFoMwj") }, - { XHDR("avomvzxqgmdataeptst", "fNIOQDvlqnxcUlLiNOiViPtnJWogcHFcChpNCnGEIQSDwnUmQI") }, - { XHDR("dpoewcwcozxth", "xIwlYwXXsnLcDQzkBZGIQcjVjPvmNSAnQPhCNn") }, - { XHDR("ikgsbjejbqjahax", "ZCHdtU") }, - { XHDR("wetotcsqrqgbrffdi", "GWQmFjMmMNfewiFgEiWYOpYUqaruWNhYXIjsmqUafTOI") }, - { XHDR("gegtbojtixkxnq", "xdqbICCSNTeegGpsZsqxnajrKVFbzxIGVCIfhiaexqKyebbdyHZM") }, - { XHDR("vzxeuvcxdmrjuvy", "IoATBsHOzNsgZupwuDWJJPyRgrPzmgmltZGQCwjUmFUYcghmbDaXmauCwcfRsxhtaB") }, - { XHDR("lzfcspnfnwdgycqr", "jNHKUammELVmjY") }, - { XHDR("bslanqrnzdnybn", "eiTQYYLbRcaY") }, - { XHDR("majkuskvjanlk", "CuIFfqVFjaiaNZBsnRqCcaxAiE") }, - { XHDR("mkqsamfgnkhfzxqwm", "vXteqejjEQEFCu") }, - { XHDR("msf", "yInMuwBOQWsVNfYehkEQrLCyvEtmRPsrHjfyLIZjrQHSgVAKOtwpzF") }, - { XHDR("ifpgqwzehsu", "QVRSluQTqutjAKVsoPBYvnGUgGfOJqYdEqNfspxSLYNaAsVrAVbWGHGMDnLsiTi") }, - { XHDR("qwqmnvkdpintltdjqbgq", "wzJhRofMPFaVNPCuPIYHKOHmDCgehjBevbMyhJSpULklwgPeszgmXyBPnl") }, - { XHDR("icdvufpefn", "urcfvWZlnXfSVSBqxhcAMZiwLxvRPEAuIPApgtgzTQLHeVvxXhLFHtDOQ") }, - { XHDR("wkabp", "FhxJwfcKFfogmeOUspZXqnxzapMGCbnbNgKecZqFtFywIsjTYoeAWLJpeOrHfuaDGhX") }, - { XHDR("fsnvleryuarzzgs", "WSBSHZzUOdMhBiQMnBTIQGxNSNBgW") }, - { XHDR("ujhcebktdagli", "BdzawhdpDWoOuepsWtPuOEJMnprdcBqpJVyMkdFMSmhvHuW") }, - { XHDR("mshmvia", "DsDqeAwmllCiQnsmIfHNLrwMvnAWtuWZXlsQOMnLvyYapJfyKakZlwQDCXFgy") }, - { XHDR("yawzmnqazeabpqj", "PhTNoKcpkVBnzkjPvvCjhGuvZEThGIHWSSIPzbEa") }, - { XHDR("lzthsktpcj", "bgDPNOjMtdvbEMqZDoVLAhbdKxtKMocvezNYxgQTFhnLztXqhnmErnCZCBB") }, - { XHDR("wmxoajjuivhwpam", "VErazZqWKbziXGVrShyBbeaeMrxTRAvstqNLZqoCxoqJNgTHiqBtMzSn") }, - { XHDR("hiexupoe", "rY") }, - { XHDR("ocjreeuxubztq", "zZctwdLMGrfmOxtGHkDHalZWWqqcIDcqXpfwtzZXEETaDSJGZzoPwnUQfhEbiUUtI") }, - { XHDR("alssiyhmh", "loAZsjlIUoqZyfYeqFmtqwVKwwiLHIJxBiSK") }, - { XHDR("fxxpukykncyx", "MimpFUZnnczCurWsZYjIJQrRMvPEEsaWqWigeBXGEUNxCkmcrGeRptsXwBhKZhzoTOUWnEe") }, - { XHDR("tqhaqpjqbmljni", "dzCYGjnYJpJdjuhdNQbkbdIYVZPHFNSDSjHamEvqTIqGKIhyQSXVYCwdGpMuPFGSUROD") }, - { XHDR("jpzwmzdoocb", "bFhQbtGdlRgQtmfxweGHvpGOIMVgpVmLuunG") }, - { XHDR("avpsuhf", "DBWOfVreHUXnlbiYxUnbabK") }, - { XHDR("zzltbhl", "GpdsWyRYaRflpekGvunhoquJoFYXIuAcwrJTpBt") }, - { XHDR("yhemuosgnar", "XaukBdMUSEYbKMoxREcDXKqjqYbeftQdZJnEflDaBEXxXadwYVgNQGIdtNm") }, - { XHDR("cuorpb", "HzrijvxyVzbaUcujvjzlWnOFwqPehaykZoqzqNkdcTNhQjAjzxJEJLIXsftCaNLajTiqQKWSuiKVVsTE") }, - { XHDR("yjmwkuqacrxlziyac", "MnJIpLEnZfeTDEFQYOvqEhjiXEtXkMwXLSEKUflzUJAQWSZNLjYTkZKYPxHImsvdOqT") }, - { XHDR("z", "SedZXlsFbZvkHGZiMgzcodlVIGKrlUIRXJahSBsRPhhdMVOzlApErL") }, - { XHDR("neixukgasnettgu", "PZYaIew") }, - { XHDR("tpkxbudsc", "LILEYHhaZDyhFWJIxJpiSCOGqjgDcnNkGmGXxjDxfokPzwklNUVCAdGvCnYxzZDgXzMDKVyrryuIet") }, - { XHDR("bfrhqowxyaglwzydjr", "MGyScLosijPqbdkhiSSGtMHVXIwHOcMnkeFHprlPaDMSpwwTEZOVrjduRzWJVBwcHCVMuMi") }, - { XHDR("ddiptqzmzkucsku", "wwttjtojrCvZIpeIQCNrGczOmhthOWTNmPzJIZQNAeDAjHwA") }, - { XHDR("ednrbdzwjulmqlndstux", "HQkFXaVZcrWECSHzxZqrEjOxchRUYmOGuyyhQwzQWJSHvJbLsgvUYRjXYO") }, - { XHDR("rfipjvvcixfdt", "DFjRnvjERWKcVCPkWNuLahTPXuKOuZBJhGtBEXkkVffzTEwieiowonaqMhZBRUQkiWEajNVTLRs") }, - { XHDR("utdparc", "IcWHWcIRWrGnUjsVkooF") }, - { XHDR("atcrjs", "QvJArOAtWquzgQxaVWBQfcYXbjkDGHCJng") }, - { XHDR("bylb", "NtWpKMFvxilmLBUwDQiOVszBEcBzBB") }, - { XHDR("ndl", "uQmPmDLWeUnyzYCPxVeKcIUXdnLYsjgMphTTSLoqoEhUKkdqUGseKBpPQnMlBXx") }, - { XHDR("kiltrcktwhrawormwv", "ujryFMolfTuKmdoWpuPasmQUnkGKriDKZZaehSkdOS") }, - { XHDR("u", "vTEPfrcvTASJpYWvksbSVZJQeFFszxnnsWdYjqvxkE") }, - { XHDR("uxcsrrifdm", "AioKMggjsYuAVFOCmYYeJPoAgblmhLUuFMcqdFsJ") }, - { XHDR("d", "hUkwUorPWypzLMhJViYNaDXasaUduLeASLDfUNDe") }, - { XHDR("dpxdtmucuslsr", "OnTEFIVKpLwTgPzQmXxDTJTMbjnyXnZUlUVqgaIYxCmHIAVfnRGwhqpQPwHWjshKKCpJYhutzmkVlZHD") }, - { XHDR("qzidsscdihp", "QDKAnjMorCQYggGDzSjfEnKmRmKzHnrfhFMeqEdEzzATgCeSrZbaibdENcAIEQLDZwLGbxoQIklyNS") }, - { XHDR("dglocsjihao", "GzLvphtfCLtfajnMicqbeayLVpyLhiqtXxZAOpVxgZKUFsATLqAkJrwJwjZYvrVGzdEhiZUsehkUAG") }, - { XHDR("ahfzds", "gIBVEqVSYzcFKXhertxacHCuaCdERjqCfqoroVSKlWeFNw") }, - { XHDR("xujlvp", "MnCdLpbWPLMgszKlmXUGutwdJlpYkgBghZVnGTsanMRyVmNEyiM") }, - { XHDR("p", "nEIIBflbiStRDEIsWmpMLIAaqUcKARsZxTjkbbNZAl") }, - { XHDR("qmvkuztdngaj", "pJVJDgCvlZzasqjgOrpbITYBfPrRkmFSSvXXSZTMiSNriiW") }, - { XHDR("lmalgkrt", "sArEtbsXYhGhSCgqgGRIVDNsnSjHxazBNITvODPUCKJEoAwrDQyHIigoSPYIVaFLnEAmyxGuLbdzyE") }, - { XHDR("onnspzucpuyc", "eeQIAHmqWanARKX") }, - { XHDR("khwsjduzhm", "iaOGLgzuiTPhygfw") }, - { XHDR("crqxto", "nvKiodjuJWggQMRgEBHVAXDXWgXZfGqgVCzSnBZlTqCKQSZsGlar") }, - { XHDR("kxeqmillrd", "TdRWLSEcdKfeHzYxQ") }, - { XHDR("fqangxghf", "GmreAOSgMoaKKlZBBTpCFzBNBELAlfArOfBBxfZtq") }, - { XHDR("qfbhnaaltbgws", "iITgAxaPdhUCBDNjRzIrDluEWEs") }, - { XHDR("pbf", "H") }, - { XHDR("oeke", "PPKMejGroDZRpCtLdccyzlzidlDlJjOXHJODGiglMTpxSfsj") }, - { XHDR("oxs", "AuPEhsVlMRoouqxPLPQyHUOyHaWTjpszcahMqxGBLmX") }, - { XHDR("zryrairpz", "UzNYRkzDSWWdjOQCHnIZyxiLSYnGAsZELKxsvuvwMCzWotWt") }, - { XHDR("aje", "bLBUYsXcLxaqBsJdNddGZdQnSbdwHJdsCtmRxRWAUeMcYVCpjy") }, - { XHDR("bgyfpnkckk", "bBAVDEmuvTtBSZnIGmespIqGKVMsmLKrewzfWdMWBXLDUisjtgcdsuqRsDcjrcHezddv") }, - { XHDR("mfvjlhcmaxacip", "bdwxdTUnNeOqQNySivqhLkGydPOKsLxgJZcdEiGkJMbLbafvYGsfkENvUiB") }, - { XHDR("ysqdktbrtbdrtp", "pcVLrpzmtaygUPQZBineZWVtBzJZETvQRzOFfsNaEbrpDFqHVMWqtEYimqJmpwar") }, - { XHDR("owwpivzcdwjjzqwjbh", "gJalBbxokPUBCeRSKtSjQNnzVdPdeENrGYWdqYkwgzgjYDBfCxfpzSRFGt") }, - { XHDR("jvbwtl", "UHBlXmKqYAGBljVVhdKKTgzSBBsHPCvfGleFFQfnVriWqZhQkenqF") }, - { XHDR("lkklhnghrvaddiaqihw", "kCAlFxQcRMRkcDMjwxxRZmGPwTqNksKIFPsVvgjvESBGyjxvrLMu") }, - { XHDR("potv", "gcdpckJySiHvRXDEEgLrTiWTLFzpSAgMlacisOX") }, - { XHDR("jz", "hZHZwzNtBWRVluLiYiQIvSTcqpTQlsAiOXxxzisWIBxhkOiGKI") }, - { XHDR("b", "HTwWsRJoPUFCwwONCroLPXitAWeJKhqTncilPeizOUTbTNZZzgIuO") }, - { XHDR("pd", "wLKipEdCXafgpFieyFuEeRLoQbfUeIegasPehKiKTVsIALknjOlWJyZGyQfLpeNKTRIOzbbZVwaHnE") }, - { XHDR("sqttghhlharcmrtelfu", "KzRjuwCGyLMfFVb") }, - { XHDR("jhlebvcoy", "xWNLpYdXqEQFwEtPFvAddrBhGLLpWaowSamsppdnGJqjyfolZRzTg") }, - { XHDR("zlkcgfbl", "JYkFuvQRvbvLvvEkHaOLvUCGUHpWtRgfiGqhSEHdNgLsePEMLcZjbpnjJXHIzmUuZBUgiywuGmL") }, - { XHDR("mwzgcl", "wbhlCDSlcZCKXiLsNgtItQQAzLqLMLYHwFlXUNGBtovTvNcFhjSFjbZJFzhobuEckgLNex") }, - { XHDR("wyfpnpsncclsfbk", "vDPDgXrmWxBRtul") }, - { XHDR("dyfdqnejfchrcrz", "kWTcSVOjdRwHmRJoeMnHCWXsSPRrjTCLnZSjX") }, - { XHDR("phwzahqgnjapfphcyxat", "mNSpIHFaZHLxrZPDsNrvNq") }, - { XHDR("viy", "uaFhiEMT") }, - { XHDR("psqgfujdlfrexwpfe", "ydmfMEnkcUsuOjsfrZaKpwZwaxgUuetjptigxFlHsruFvWvDrDWIxnXSDoRhcKnGfjNdp") }, - { XHDR("bhxpcufpofl", "YMSLoNQgawQboHQSGzhjKhzzLoCMlSiEVkGVRdyhzmULiMJYFRhCZiaJrdzYTFweYZUMGGnIMwlpXo") }, - { XHDR("sj", "vHKceTgIbOZYEDCiGXLhsFwxCFAWrKoWmvptiwAnGrF") }, - { XHDR("sntjx", "UsBBgzlMMzCSTtWULQNTF") }, - { XHDR("aqssvbkkpbw", "oCxejJXhupCqdPyUCYAezTrcmIzMoUbRMbwmKuGZXeQFCZHF") }, - { XHDR("i", "snZlOgymGcdRhHgeniOBnGCUGbGQiZV") }, - { XHDR("w", "HpJJVMEXmLBUdreHYnzRZHMaecHtqJzhoDuabPCAuLftnslKyU") }, - { XHDR("ijmterswadn", "pFoIMWOTjqxSkjRoPMrHnKwIOIRTzADvtfdbwZxzJxVIoicZWBHizzGHjhYeNUQjBXInsLbehLPJwOFd") }, - { XHDR("ctxyqirfzmukxmnlqkks", "ndaoKVFndoiFbernZrFyAXBYzyvCGIBfRJKpViODwusDXkxyzEys") }, - { XHDR("kuykndjvtatwq", "PceZrfEtlUfqEYozbRoYnFJnNFuNFzFS") }, - { XHDR("oszfxg", "XYbMDGQZVBdKUxeijufpfLcB") }, - { XHDR("oaudfwxqmalvo", "fYTCBfAZFweYLywjILPJRCwSvGKgXgKtIgvFJjEG") }, - { XHDR("vd", "zSwiIkppfOIVKVFoflOWoiLmUeYDulDPodPoviYlbgwQrUcptLKStGawVWodDPDT") }, - { XHDR("rcbvrahdtnlwti", "GDoCAkLnIPmWjaPpIAhDREvPGBXJyURuRfl") }, - { XHDR("edicrkbhruhmqx", "XMTmDsmHomcaDotsCKRELoKpoRPkrXwxiREMRG") }, - { XHDR("lvfcwgmjtclgwdj", "IxWMliGFCRvAopSwjRwJsjGZTwRCSWhrkloHM") }, - { XHDR("ivanpwjhoydmlzmoqg", "rnaIzKJleGfeerVDViPAyHnKKBgFvyLAebxHHhRVLBXPXkaQzaBlIVJzddpXy") }, - { XHDR("jlak", "UkUzzXMpNyWijOQvIEezOVvJCFaxaR") }, - { XHDR("ccoblrgaweiuamymzp", "WTtMzYUmILbGWbTCIfMNwzkEXZNZv") }, - { XHDR("otrdvmns", "MoPBOWiTZFUaHFNTAJkhmZl") }, - { XHDR("fvme", "ifCjqeqzxmpBhqOrRfgWTexnSSIzeMhyJvvKJsynzAfdtQIVsPoFJUGnRZKIRbYzmHNdzBdOpnDQT") }, - { XHDR("guyt", "zfXAUbgUuGdKmVWFTdkoKJCDLCYOdLHIRZOCunXkeFU") }, - { XHDR("ygvvvgmtdpjetwqigky", "qUUaETYsGNVY") }, - { XHDR("aedjkihnhvvwbnx", "onlyylWVRUhUMgBwgFTAcrYqmynIWuDuDSelRnItblpkcrqWnIHxMGgcEkRKDetKvULwCU") }, - { XHDR("egds", "OZgnBhXdzLlHPSUVJBePwoCTtSXTszLJwek") }, - { XHDR("ywcy", "oCQwoxrYUqwhYnZSXzJprADuySBfKjoPNBCfLLPUlGJdrnfENCNfpEdFurNsCpnCjh") }, - { XHDR("zhadpwolyqenq", "hLKwvbMyc") }, - { XHDR("lwyejfvha", "orCvrOJnpqwjUAbqhgHOcSYLCImNJVfBRqRtGAwvWecsviLoACmtMTsVJcGihTTdAgdrlB") }, - { XHDR("nuuncq", "WYEHQgaIDbRkPvWlogSBMWI") }, - { XHDR("fi", "gvFAUICjhGM") }, - { XHDR("nvcndhumx", "HjQBhGkpbuHLdWyqlZoSjbPGssyHSqLAHqBWIDf") }, - { XHDR("tnd", "aRUBAxAfseotbeiDKWlDivJOMKlJmwfkkCIwGtrfftUkzinMDRaUTO") }, - { XHDR("gsimtmtskxqgo", "kyUyBjFuURtIO") }, - { XHDR("gbxhlsj", "WCMdlWMQzDhfrrZAjMbzJEriRorGZWcjddtVscWTulOPZoSxxnqOGE") }, - { XHDR("twfbhuonhlguio", "ZfeXMkzOroSXjmlGTZQkIqJGSbFAXgtFkwchKtgM") }, - { XHDR("fgclqu", "GDHSroEJoljabZXDDdaRzlTjioBJGgRnvGYF") }, - { XHDR("vxikesssijys", "xMHrXAhGQYXCFlQWgmDJSZZOHPndVgVjjIQQyKKJKJxSFDOqpUMtJOlOyWJut") }, - { XHDR("iejpnkmkrezdb", "RKDXuCl") }, - { XHDR("pcgzz", "nPRooCRvAKESgGkFEeyOSxQZzyaoGDuPxHPYtQGhq") }, - { XHDR("ckpzovlpoi", "DsDLYaWSRFLquRaCWekBmMDitMWIzyybQkMmaSSFGGxjANrDupWgaNsBVqZCOp") }, - { XHDR("tusxarkmusinrwbuvgg", "McKJXKJlljCLSlACNCPsSWUVAbvWIsVWTaNNxlaJTTSYkEOEQaPHNYiJrbswKuFmjVZxrAdzilsLXn") }, - { XHDR("zezduq", "dwNRgxqovLnNPvjKm") }, - { XHDR("uotagsxafbhuggrnsl", "IfvcYscqzhKPdqwxBrqQZVYONYLsegpOJGeIGCZExDOPQPXxeoK") }, - { XHDR("hbtihaxte", "xlOWZiBXzIWUvkvAFIfIVEdSHLPlBXxkSgrhMjNqXDOPeMnCdRILNbMdAtXzzmmroTWpwhPJOk") }, - { XHDR("orsfmnfdlnernk", "mqwOLKNEhjdRByJcdwwqcDglnFHfKvSENuZRJVsNbATgtySPmwgsGaKq") }, - { XHDR("rccsntnxmiuuvjmiqfoz", "HQaOiatG") }, - { XHDR("mxb", "wDAQLVGCfGenfOGRyTNsDugUXx") }, - { XHDR("xenvcxo", "ZTXbhFuwfLIBhqoayPRoDZdtIwdMDvrtOPjVGpswBKTwvgwoXMyGLJGmVGxfrtDewJhNhqLNopsIeoPA") }, - { XHDR("b", "tKLitDe") }, - { XHDR("ok", "ndaqnRJpTYAtxzszFQbSIzrtHNSqsVtOhtGUHfP") }, - { XHDR("uq", "ZijyhFvLiuCwSKtVNjgrmcpwELmEEGXPWTBFopwJYIkLE") }, - { XHDR("vzbz", "sslvaElFgSaSUQhrcBHnhxoFDtVXoTOZQqtltfVqctnbJ") }, - { XHDR("fbqj", "QUzEyZOMLKIqbTLqmtBLoNAhzFYpUPRUpMXcgBYwjggAkcaFCNFw") }, - { XHDR("fvdxohvtyj", "YUSaaBZOHAPpWUeIPFddSCxKUvnpeDTImZsUtbFYOFZWhU") }, - { XHDR("rxwfrwgzptshadxnbx", "NzsswMiCczDyfWwKtwnexkfnQHRWJUmGkPkeDervyxrxTYdUupPdIvhDqXDfKBzlxa") }, - { XHDR("g", "FbFdZhuOcCbRKnNKjkbdanoJVjptQypusXiiABAyzEWtbSHWxswVAFSjACXwcbtE") }, - { XHDR("vkjxturclmf", "DYhIzFWRzjZrknWEwsvDVIzVWlfVYbcpHRKSTafXrYpMKXnDu") }, - { XHDR("vkgsoqjzrheklwzazvu", "rhCYbmyAYaFPswTPoHQXRYECAcw") }, - { XHDR("quvimllkxnokygvkzpoi", "HJsHYJasiLmJSVURKNIuHhfZtQegucuyEtAoMavcHDqJcPmZnZskNTedlvopRzQvoJRAuWhOaA") }, - { XHDR("zrej", "reZVcMIpBxLeFPyjRKCMjVYKPvFtMlXjVeXbVYUSJXfPggxIkmhHcZDjxiEro") }, - { XHDR("wyapecbkqvxvqw", "vLaajnGTggeXtYm") }, - { XHDR("quklopqwbgpis", "tZLmfSDEBFCUrPbxHxBVZgxHDRwlZPHot") }, - { XHDR("izzxljabmvrqwxxqmw", "QTHLSTnevCOFPkzQzo") }, - { XHDR("fnqljtjqjaootcjint", "aipQPbBPjUOUIoDbhQpgOFFbME") }, - { XHDR("ohyxkbywyrgkkditp", "YIBrBXfCZNWUjlJJNVmhXGSlBEDMoJyOLXyhVrzeWZPsKJoHkVfhrtOSZtu") }, - { XHDR("bzwwntqmqpufm", "qIrpjzSGntZgYuVkFOMKlBCBHeGygDLiyvzplsQS") }, - { XHDR("ydsmhq", "ndCsjppCNhJyTFZeMiZDsEcdNH") }, - { XHDR("pj", "IdIYYmmvOQmjhnbkDOBJkLawYgNJYylOiPsDcTNW") }, - { XHDR("uqfdbphne", "pQbmVTNQugNDwCmxLWWbLmDMmtgcyLk") }, - { XHDR("vntqgqvrydr", "bqglLkMjNmQdgGpblWzDoOAEbbkUicGniTmmqbW") }, - { XHDR("stvvuwtzst", "gscVQbXCWiITuUYRCgGSjcKGCiZDHDlNUIwpGyFNuqgSokMtFxoisDVqrvpRVqabBNSLBlTcHrMWHOfh") }, - { XHDR("rv", "OmflOevtTOFgSQpYdqMXxmmigQKqzURfHETZKRl") }, - { XHDR("anczhtdbulvnxcng", "VgJPUTIZzOlQepfwShIzDHAreyNWzbezTMYDzRKzkhOuRJueaJcOjqecqMmDZucwaPSs") }, - { XHDR("xhwesgkgsu", "QzSDexGfNPvKysrxYn") }, - { XHDR("tsvpruosvf", "yHgdwosJafSRquyJVgjEINlSbLqOCvmmlnNgZRdBsZoflfkgohZE") }, - { XHDR("ummwcrejfisry", "OtmIcvxUaogUOfpfeEoeQBIjyqVCIkiAcZBhgZFcMPQtlHwWD") }, - { XHDR("ubrtpyosrp", "aWVEoBMIMICfRIYIUdpQRCmKSizBrRbq") }, - { XHDR("havexybq", "OQyPJOEXQuXpFTvAkzhV") }, - { XHDR("n", "VAz") }, - { XHDR("bryxjqsdal", "flRlOiPIfaRZraSzuAcePfIUHkKsZBqHWyaRoAXyWfVuGOcDymcaajuVFxJSkwFxiEoXIjDywu") }, - { XHDR("nub", "xGIebbIcXoPPHwHUiHqLDaZuPapQzioIbmApDTzTNVVrzjDeqcKKtFhiaclIeAPByeycTpKTVujASr") }, - { XHDR("gfmppqtpobav", "XgAebFkMjtbJlvXhkyPkNQNjnMitTBUXr") }, - { XHDR("vukeqixpiwjfzr", "lECdJtJikwMugPBsBVZdlr") }, - { XHDR("ppbbbvmnekclgmr", "VJzKnqingsRZGKSVFTlwDsEQnjisKQFJSEyTSo") }, - { XHDR("mcfyvcsgpmphthwlsjym", "hjOsoqZmgDwPAmYSSqqDrXaZYMGpZTsWJMcDdMmoLORUemYdDChmNQrZMn") }, - { XHDR("hiaswrtxggnnegdyp", "BpfVJopCUIpsjldGGJBHCRkAnVLfTppXGWknuuJQc") }, - { XHDR("ycrhvwvjyypwicj", "cHQlVoBYuxhybnjJEibexwWdSsQfH") }, - { XHDR("vioghjtmh", "OLilUpyVJHYqpfZBBDikKgPTyUcGpqABfXDhB") }, - { XHDR("jnfiifrfh", "IqPvvCvaSqjJIfrIdQxaFFGXWGrAWdJSZd") }, - { XHDR("lxissuause", "PIVrgcJjN") }, - { XHDR("rtxrvikcvyfx", "MrYYodWwXxJPolzJEccBVaqqxoNvIMxgXVzEvnVmKiEyWjLVDPb") }, - { XHDR("wtjud", "FWWMmusgOjRWpJwAOEPrdmqOppOsc") }, - { XHDR("noydmeesbiviacyt", "zuyGAURiyqxQZfRzhIBTBAIrmqJxvRNOzazqrxVabCOZyiHAWqJtZWAaKJBHGCPeAORoNkmrvhfYeELH") }, - { XHDR("nrvfeklzuxrqday", "jWEEAziZzLajYadHZGIEpsAwxxqXOmpbanAflsuvcUPImSLanFqlKCADXyPebOvqeQaErJgZcV") }, - { XHDR("ajasrm", "ToIrOFUebSGranhWzjGj") }, - { XHDR("kudvzvj", "ydLMpmkzqjXFouLjLGR") }, - { XHDR("clhyxhprhxiah", "jwVxnqfiGEwLMduwAlsLnxGRlaUaGXbqJFtYvU") }, - { XHDR("mukkcpuflwszkxced", "aozCOZeedcrJHtaBNJPXJCdwVcdFHDeVnUjVARPBDBnGfBkSiwMiNErxdXAHSyihPXW") }, - { XHDR("zlucqzqh", "ZzzshayKQgsJCBXDPpcfbWijnIKIaEsHydThoEvXRWCtQcpnIbxXFGydaykudtGdNSuFdn") }, - { XHDR("hmvztzfmgxlubivswhum", "erTGjLJpwiYqTyqKZa") }, - { XHDR("opmgqdqvliafldlk", "ROOVCWSovGNqYoMWUaiRxCILpGDpbQrQqprGuczpbJaclRMSkJkmHYlQYDCCxYEZjL") }, - { XHDR("lqkzwkme", "kXqhoOHUVYYyjVuTsFXGSouHeDfzAKlIHVLHBJwFJSgpErGwCiql") }, - { XHDR("wryseos", "gxSbimYPkEYNtTEQIdWtZBFtrtNpdaaskYUYBKPHQrimaAyzhUsYe") }, - { XHDR("rxrcwxcvmvymtzulfr", "Bxthx") }, - { XHDR("ovjspmzhrsiuavlmlgk", "kupXltbGQDlJtDIPRZUQUCWfSQbqbYQfvSLGZgoURYFJqPJyiwIGxIdlhnLIQiXvqeeOlijSTRtJT") }, - { XHDR("bbavw", "UvgUENmHwMmzamqbIqOXjnssonehuiZgLNduUkWglNdwvYkdXJBTLbgFRjKl") }, - { XHDR("jmfjlcsajygkmnqkagll", "oEeWakMjGWUFC") }, - { XHDR("wjfcy", "shKbzTZpdqexJlQdGJQDntZURzheAUscsWbAMeqyvdaNKEHwSNuohRhFFrfunlGEwH") }, - { XHDR("emczepfjgfkkooy", "AWqsfngFgFbZtzy") }, - { XHDR("gezfaoedsncybndfhvc", "grHRC") }, - { XHDR("ply", "SjHeitRtfWawFnWkAamfImMNm") }, - { XHDR("dmvtguvcbpkcj", "bzGSpsYEmAKSmVHhajCKJxqGxRVdXHltoTNYWIFZ") }, - { XHDR("zdwukvsd", "pjLRdsGtClQyiwmPViigVTQhgZKOJfAGhJkDQwZeKcyIqLo") }, - { XHDR("zgcpgqohztsalyt", "tgsbbwnZIamTanFR") }, - { XHDR("vmnfuvqu", "YmAMYzFdn") }, - { XHDR("pg", "ZfNgDSLieinIewPsZfifRlBOwCmyIcywlYCTLIuROoXxELpTgyojaleWOikCXsKUwrw") }, - { XHDR("oofl", "Yp") }, - { XHDR("jsgsbuzodfgxdjinfh", "LOnPfCENppyuBOR") }, - { XHDR("hvqdcd", "ULpyYfntcaKACtpBtaLyXZuCZGIbJLSuDwF") }, - { XHDR("zdcn", "cjwPiOchonTETT") }, - { XHDR("npfxdkujtvuo", "GljtliHaGJlZ") }, - { XHDR("xgtiongsbgmyobbikksc", "ADgiOHXHoLGrQKmizMHFSuSqZYMngMVdYNzngyhXTfYIkRqtaRxTalqlxXaayqiIH") }, - { XHDR("kunrvd", "FAfNvDmSHVHsEGvertvvLIUEasNjcO") }, - { XHDR("dtcwx", "IZcXwgLiwbaoKMcImXaTQyQRyRrazovWXwljAozDDmIGMfjvDREa") }, - { XHDR("mdya", "cgFnqqddHhItCEUxjUwPhXU") }, - { XHDR("gzvil", "FPklVoOgTpjTNCPWdYyZWbmy") }, - { XHDR("gzdyaqhdgp", "ApTUJWJnwnGakUhjEyluwnnvUHeHSomltXRTHFp") }, - { XHDR("soporpgyqvedazwvzro", "NyMxjgJu") }, - { XHDR("bgzdpcjws", "XPcajNUtoSAyQAFPrIFgPgpxhQvTKpJbsHDOCvFtFurNWAqmDRxAbCfIEzQl") }, - { XHDR("zjbxrdxmjqkaxyg", "wOTgLrQdHWnfoTPdHkUQCLntlHXjlnOvDZlsYFKCdhCmnCLSUiunAquOVJHgGkbdKo") }, - { XHDR("awuhrltvhsxdfwezfcus", "XgMmSZeqJNLgWEqXQIosnWBnVuKzZjrfRxkqhDegDVwXenIHwVZsd") }, - { XHDR("jfctafjtm", "xLhqTqlYvcvOxERGhGvIOYC") }, - { XHDR("qpe", "KwNjPrSPVdYIJeOIxlCZfVcLzQmZCSrfhTukGqKWMkoeqeu") }, - { XHDR("dbcn", "WJsxeeqRwuyOvDHgaUoSoMiwiBYDcVstDMYQPgNoYzVKliaCgnjdvJGDfRIIgc") }, - { XHDR("rmlayoiqxlgwzjsx", "qMdeAxTIofWjpAmrrSBJoyjMyVXevIfLdimWgoVKCncbMNvhHVljEDqtWgFyDKv") }, - { XHDR("vygfcqjihn", "XhPwFChwFaWCHbXX") }, - { XHDR("o", "JCyYsJZHdMMKxycvtfpyJyZPzdhAaZjUHOcfobeiCpsRHltLIcGIjRTnYBXsqeL") }, - { XHDR("h", "YfdItJAxFzRqDxSeYUOhtjqEnYECcIeBpnDDaVhuMNIeNMxKplPxJDYvwvrNL") }, - { XHDR("shbcd", "OxXXQXwPFHQRGBOVSRiUIlGjoPQrf") }, - { XHDR("wdrwyeoxntcscpl", "oJbQnueIRTKaXdABmNKnyxeCHzrxLJMAAXFrUBGmFiNOgXufSoyDDKhpjgEa") }, - { XHDR("jafdah", "SMIzPlGOkJbnWVzXQrJlhZmEEkLOEHzELPGhDEw") }, - { XHDR("f", "lBheeRGcMMqzWYjVvNgOiqsgfsyzngVTkENZKBjyrceWMZpYIFUxrcbedxNwMrNnoF") }, - { XHDR("nfqklmwpwhxskxlm", "dezcKSE") }, - { XHDR("gokffjt", "AYXQmXRdfPdJqesqaeFygsATnzP") }, - { XHDR("cyhugymlebpgygcic", "eVrDXJMyTKTCnPQBlpwoQevWHQEPnCrdTWhEcJPywIQlOAQHloX") }, - { XHDR("gzcxmrzibec", "TAqIwOhkSJKTxWghoAwSoXjsQ") }, - { XHDR("awnlqcktvzfukjbarwg", "fXTvUrwPlkDeiiMjFpbnVxZXyHQhtIVPvMsgccfqhAcwvCCxCPkyRXAjivLGqnymZ") }, - { XHDR("zjkdk", "tPMKPOCRaSXAsAAjpofbjBvYpeYWVbrNfAVPaLELXufXFFpecTiMKDtBfggISpDSwFZcYPaWRtMKg") }, - { XHDR("bdbeicaxne", "QoHzOqBwtOulvoXrMVgetfCXRSVHXDeeDdVQcgtqjAUrIIzL") }, - { XHDR("nehfhxzzvccvlvwfjfzh", "vHrPohLgwSrXWwnYWdzuDQyheaFZQDDRGFSqZTMpPbImhVnWyqzsEOrEUHFYcgikjmzsZaJJki") }, - { XHDR("rbvfjzgfhbtfisfteauv", "hXylmmjTuiHOSPAISYsrCwTpQbrGzztgdLHATbDggsotxTaCUfZDnX") }, - { XHDR("gnlgsc", "whROob") }, - { XHDR("g", "LojkrPulkgjzJcJlatIiIU") }, - { XHDR("qdvpswdhx", "khJkgbWKkOcGodlvoHCNLxgJRmjXIK") }, - { XHDR("tjjxtub", "CLwEBZictmeoxaxwWFEiKeBlfkyyuCAFVTFOWdWFGivcbACYeQuntvnNDmPKUuFXw") }, - { XHDR("krjtysllrppfwxilfn", "fbKkxflMtmIZmKUWWAtTQETITyIXqIxMsUGIaIIIeAFZdRcPCmDpldaShWGBzdFnQlyaYHunPAT") }, - { XHDR("wlsyaztdxbvctdzx", "AAQTqJlHXBsBkO") }, - { XHDR("palzykbdco", "QmnRFQBNQXCXqONjqirMOhhspDPwYtMuutmZPSslfeMEktLOslhIwXKuqzfeZyLeSqgHTyIIy") }, - { XHDR("bxxkjleusgk", "AHFc") }, - { XHDR("wxrsfgyzors", "VzPXNcuAMcVbsUdIbOcSYlTiBKWddPHbCBH") }, - { XHDR("x", "eXppadJguhkFSOMfkoNIASLvTnhqyBoFSNaeOviZUoAXPNr") }, - { XHDR("hzkndtawmbgk", "XznjknDsIMxtcxRHDXmrIHYzDrPigIADtiocp") }, - { XHDR("jpgpe", "ikvSrfJRaXqXtfAKPqDUHcrkIFNgcyEnfJqWusDqCdTQFhtLpIYk") }, - { XHDR("wvmearfkqni", "ELBvLlkwCkPuAVfHyrUEarXxoYYvxWOGcUMAfGZTUqOsHTvamuQfVZJiECGOUTQVnveL") }, - { XHDR("bjtnhyzhs", "aaDOHZmDqwOOpgoGSHSJnJuysLDsAJHyydkvIdxUpAJNtwDuainbiQgeVbidUc") }, - { XHDR("wqwlvhb", "DKkTTaicdVYSjTAenucpshueiwyFMIvWDnlrCxrjgFmPsbILNaZUqGqRzfhhYUSSgSwbzZ") }, - { XHDR("pvc", "bZsWoMbJSdcxwKhAmXmTGLRGACuJkEEffnHVsCngPWmRNEwaUATBgM") }, - { XHDR("waopmgpr", "sYPsmMnzQayzMvGDMsnYxafwgxgDhEigOaibiSMAIGONwrTRocFqLaUCbtaXBnBwteLJA") }, - { XHDR("qpyqrglbao", "DAQXOOIifbybIcJldJCQYdChEFdtqzioIfRgNfvuyHGgYYvY") }, - { XHDR("zmhpgypsvnpuh", "gNsrwjPsYWGHsPZMhwBOZuLizMmKsnLUINWXFsViGuJNSxYdHMcvRVYBRxfZgYAzqpsLv") }, - { XHDR("ixyyzawafquvad", "tKAvApSShcBbSz") }, - { XHDR("qxvdtola", "vmJLnCtlBOsROtGdWklgzvlkO") }, - { XHDR("rqw", "cGI") }, - { XHDR("hojhjeajnjpfdzkriskg", "xfsdtGwOMBDSiGtZwjdMgDJsUJITIKYeTXtJqiVkjPMYrKzVqnmPxGBLsVSFCUUbZoFThFlFn") }, - { XHDR("prieldieicsribipqbkb", "StUOwvgRqMgNrxQczTvcshHUKtXOSnMZgmNTxYDuSpmVZ") }, - { XHDR("lomraz", "ctrjKLAaniyNYXhIfvksEMoxMgNLptNNhITiudFeXxPqbzw") }, - { XHDR("ggfmx", "KiROZUzkrfezX") }, - { XHDR("pyvd", "CcBRQwBFhFAybUQBiBMgCRfeiovxaWWqVQIVjvbHvfaEDbuHQOFtQmTBfEgHSeNIgGrbBVBd") }, - { XHDR("xjwkjeprli", "xyqQsikLseXBuXbKzLyRkQDhaWzMkNcqZds") }, - { XHDR("xtda", "HbJtncEKXmTWJOuRVhbCgYVZewfBIWHpqQihQuortaB") }, - { XHDR("yygamrra", "pggJIBArKAc") }, - { XHDR("twwmywoonxmskce", "SmjqhtbT") }, - { XHDR("pws", "oKtAjYaCEvQaflCozKmMIrBfXwUMqZqNIaZnbddsKzEDjTn") }, - { XHDR("yegmjkvxcrbryumxw", "udspTVWgPffRNKCtJDFcTnMKUmsjCTKkbYPEQOlvSSwWQQHiUKYoWGInSuSLlJfVVsNlnGzGmS") }, - { XHDR("bzyprlenlqmhhobptv", "RRiOUpDaiEaAVHXBdbbMvVAAITinOYdhvUjgIf") }, - { XHDR("hibghqgxexnnnlwy", "VgomgKPCdamBFZnIGlmutvIXdtVHkUkOVGXhIJgsjANyChiKuHVHFWKATlXIqwKNwSBIsEYIj") }, - { XHDR("tyqrluiflkuavyep", "coIYvfyqmREmQYIpoywUBNzpzBdsLUTZdkGbAhuiajeffXHkYlpBzqlrbzDjQFIDjAbckaNvegyBi") }, - { XHDR("hlgcgenol", "EybTmZfVgWawVbgquoafFJsTyXLvUzyAWxdxj") }, - { XHDR("josbm", "CQrSOJFboxgiMhEQdiyakLAqTlWQjmTveJOaFwXvYXGILGHkTILTfZVtvqlAzAcBATltJOrMCAamvmPf") }, - { XHDR("doabxpfbnqhcjiglew", "KcZG") }, - { XHDR("yumnnhjqgtcf", "IIpNHnQXKUgLoPbfbQAtSjGxEZtdwLZhvgGKSdKaLYEuDAY") }, - { XHDR("tfwcrurxxthohfylyo", "DGpylbvUmpflemgHRvkqpglDBUZZxUWMBSLJwqajrPIgiaurqVazcEKZlrWiLAhxUpe") }, - { XHDR("lfhfltw", "CgTwYoSeavwxDDZKeLvclKbMvqnHLOROTyWCSUeQNjIdqzgLlmFuZIAMCZWEELaQLiNNuPxHKTAD") }, - { XHDR("ombszr", "kKnlluLUFCQcmtsSuoBphfpXFlkelFFhEORHplNBxXCnrVdvZCZmGsqYUJTZHqxISaLtXzQDBeM") }, - { XHDR("ezxonfejjbff", "KJTIZyUujYLFmqzhCUweujYLQjIPpAlxPjoxwkRWfPLvikBnBS") }, - { XHDR("bpdrhedsgpdnehr", "tOfhVPYYxjhAtVmImpuSKsOlOmKQxVjldqQYN") }, - { XHDR("nmbixcyiufigghle", "EEuplsTHNOaZuEOQCkFEHJPgWHPSHLChjNtVPUTbRveuVfdhOpBqtPJcqTrxoBztWWnYKlLPOKgO") }, - { XHDR("pumh", "rGoBazMQvQKKGboVKgEHFGAlrbUcWyfrXekObZaTlhBnCncdirnEqdSzkVluENojKcMxvLfvhdXJmM") }, - { XHDR("bofshizpujvfe", "fzQLvqvAiUXoiNirPXyjacOHWCsjyjMGFPwQLYBrfYQVMYTqpMZCphQbTSXOkuOAnLgQkctQhnFgRS") }, - { XHDR("laqbv", "I") }, - { XHDR("my", "bCAnAggNUpgKfVBJkortecjXzwGYYTxGnWhc") }, - { XHDR("mfx", "IcqXQDAUUDljHHXoTrNqVnfCjrkdsUqabqJPaqSE") }, - { XHDR("pqmaan", "VMijkReBhNaMeAcRaIeEDNXsqDzNHzxwykhbHanvxnHsbhNzyUkHjwvmBpoETJSwrhN") }, - { XHDR("gzbvt", "ochABjoHYOxxkaVivgzjnuvFUnUZQXzBEAguVKT") }, - { XHDR("dxutyucu", "j") }, - { XHDR("mojwgfeotanyqbmtk", "qZqngBRtGGYhIDGMTNCbmZRnSXyjeRZYzaNjjrxavUjxTfDGsnPYIn") }, - { XHDR("seqxc", "oqrUFfaKkUbnDFFbxRdr") }, - { XHDR("aucewfkwlnqrdmbw", "FJGvBnLQKIWYLmHCrKaxSJEMAmRIzBCSzGhUTfdCommyKVifWRaWYddWWvNYbcFitduUnKtDEDxxqISc") }, - { XHDR("kaywynmnnrrlqc", "TTwhgAYmgtqwDHhPHvLThRcIzbXkRqqxKEQmvCiPSQAZXtSWD") }, - { XHDR("nfxzkweiuvwi", "ugxWfRlgvMhlQgVoxnlBAQPbEMEz") }, - { XHDR("wljtcheeincsiiv", "KdiweoMRLLGBOrtBAbNTkIZHJbnPTZTkWjfcUJVkHFFT") }, - { XHDR("spjtsrfjztjiitjc", "BrM") }, - { XHDR("axtoufodsdgwbotnpzl", "oCPwXTiqZXrSooHawTIhGiKkariunjFUTWvOsOvWqfpXRokQCcAZXMepFSKnyywGXpcSYfX") }, - { XHDR("cufymunafbahreobbifw", "EpMyYGDNWoxJnGZejEziewBSNIQREiawIyiejuLOhGVJViLmcHStCYZvSPk") }, - { XHDR("dgwdwi", "jguRqmWPKYxMBrgmrAtEyqiXtxztlRmsqBJlqHbx") }, - { XHDR("i", "PeXujKWceRfafUvSmOfTSrBMoAZDOkUzZWJBJNHHvijgObqxKQeXYLl") }, - { XHDR("exhkxfdqsg", "ezIAJwabtMcIAeCphhNqqvWVjouqrtevNlHnxxGncPVmQnAqfwXBmYupcNrMHjgCpcFdUQEiLWCu") }, - { XHDR("phjodghmlrnofrcangu", "SbITusmjsm") }, - { XHDR("wpnuqigy", "mWkhvJXdpnXOAaqrivLIdOmSyKHXphLJjqPzspDZKTgnhAmVwymnwyGAeKGTpkrGXCXEfpbo") }, - { XHDR("lhji", "ZwxqfHsetmwUGlUXWKmmiwi") }, - { XHDR("wlajpcvjtf", "EcQvJYgkPHvItPkznHcLMfQzrLUqmldRnzpyjKHHIQfHAPmvskpvisrSbuHUxvcMenv") }, - { XHDR("gnouipiod", "VuEiDCyAKIH") }, - { XHDR("qscgyj", "QRsVvLKmLRCnZBtlNBXoXfpepYldSAmGWtLmYiYFjlJcPGIfERfR") }, - { XHDR("swaediuiegw", "VjlMbVEHSHywZrQrKhFKmJOnjObTpuPqIqDbKvGbyXCYAsiQHajKLlvM") }, - { XHDR("aaexyb", "ERvVbmdCebgpcrvkYxh") }, - { XHDR("tflkomcqvgzazp", "eAZHR") }, - { XHDR("rxboy", "xAppjKQJVAAsaFrMtFoK") }, - { XHDR("gqiafsemcn", "ZavKizgJxezQeqCtervQDwDlMxhmLffVQ") }, - { XHDR("idtolyltdoeanfxb", "SLCxVnVXncxYxvbFFKkSiPxWxeaiVTrHDghoKrDKnZCKbxGHOKFoPmqXSxZmtDBDnCttjqYgwTFuKkj") }, - { XHDR("yujwc", "YZbYWVADwNhdcObVPMnvNESHNFxVUOvUAHvaIJOFnPfrtpWoDFMHqCgvcwvuYSFCreTpBP") }, - { XHDR("rqlyaa", "MRCwSLHLwqVbgAYVqjlfaANccq") }, - { XHDR("wrsemhn", "ZQSexaSACHnoMHirswgkmTIdbJDhXmtbhBTRJGhS") }, - { XHDR("tsmqdwqdqer", "gYKItbxJkT") }, - { XHDR("rzdl", "JURVoeqJTrjpApgogTxktTFUmBoDbmgQFUIOdadhuVBdnuBEPgQefcYOGUacedeShuZsufzcgEiQaU") }, - { XHDR("dxgvrculgs", "lcgLhRMehKdIeFAyiAdvtFGiMGfbxUWXrBLFCycYmTLkOFlbBED") }, - { XHDR("l", "ABgZIDcFtqifszpFAQwDfNddFnhhTdMgaSsQjXoemKfILNvLSzWulQzdgvz") }, - { XHDR("gtypomfccd", "USezumCWlVTiAPIQieZMzHLuLDtQGJGXZQBBkpNcwlNJXQvyUziKxJXKJLvnNkvalswy") }, - { XHDR("ysowgwrlcymlvf", "TRlJOKvxDyxHEFjecoAqEHFBgEYsvlOPwRNWtOxPCYOzTOACkSdUsshwxjHDx") }, - { XHDR("f", "jgdRzzHKWkvtinBOoZGq") }, - { XHDR("bkzwpigy", "DpMKoIIGtuvLDoBLlNvwXZWOaejHGIOwBjN") }, - { XHDR("xumtswrqo", "KfJMplvCPRNqJmGmoWwIzyaxCRRAAvtkbIYoDyqlsXAZjqtriv") }, - { XHDR("ae", "SolwzhZprdlKtbpAxgfzWyuEXnIffMAzcIvULEaYgrCDGBczyufpuI") }, - { XHDR("rwbmuo", "rnffAkGyNENUKqvHfJjuVbgJNUAENjwokKAJlScXUyxUdBMiAdKFvJeU") }, - { XHDR("paaiwopm", "kiAoFtxVYqXUIRY") }, - { XHDR("lncercjktapjr", "YKojZtRZOupsTTYIGSJpbyCGPBOCLffdaRQBLDeWWmKGZkcJUmtHeoLCyeeXtwO") }, - { XHDR("fxpcxfajurxduqusjrr", "lPqNHBLWkUKqNHdVPaAGYbCrzhSQbUxaTWPqpONRmJDnuDhdAsPvW") }, - { XHDR("m", "ePCdBXRBhiWuMWXlJtJBXyrGfgolslOdEyvDALAKBvaLp") }, - { XHDR("htefacmqwasgcqtkdl", "CyUlrYorizpvFTZSjJkoBxUHXkIiAmuRGSjmEWuIpGIoWQKuWVebIhKHMfTEePHhSq") }, - { XHDR("ed", "AzBFGVcVLQwPucZUoffeBqOJs") }, - { XHDR("jtozkeusebz", "MmpkGqkUtvJoCvRfOJftUaQRMtTDywSRYjDoSdUveCymfOqyTlNhIKmltqXCdhvpuPSUaB") }, - { XHDR("knyyzqbn", "byaSsCaGEanbjdXSowPbCrMMFwrydpwXGgilszfTItWFnUrykgOSelRfshjLLgfjXfrsiqgChqpwHkWN") }, - { XHDR("fcjhx", "oHTdMwjbhdSNkaoasdFxUeaTS") }, - { XHDR("zzyxfhoeoxpiqidpejcx", "QiLTzjESvIWJsfHgAaDQMGiqtcSjNUBChiZ") }, - { XHDR("vanbmmkq", "sflyNO") }, - { XHDR("luadrydoxmecf", "aPqEXKLCVwFPq") }, - { XHDR("vgwfkdnsd", "jSRPeTKNyPnfyjkypWFcLEtcMZENsLVggQAOaSzBwMHhmjZY") }, - { XHDR("qgg", "CdlcZzguUkdFnZaNwTjDjaIqhFOB") }, - { XHDR("gwzagsnrgpxbwai", "UK") }, - { XHDR("khtmygwsi", "ddpNGvsjmJVhzJXBKtwAisVlgieDSUBSBAjhdqyLSSqzNLgpDAINnPUFiDhRqZFiPtOQSBoIdVgJYTFH") }, - { XHDR("usjfeibewcpenkyknsrc", "cFyIdhGGKNVBezwGnEHjCbefPUzoxTDcVOWAMSIKYZaAACqBFOHmWmIQBltiSUeoRQlIykRC") }, - { XHDR("tpim", "KUEVjnKYKrJvAIkfkXOaxxPDikKXiwtcYaEUMmMjIINexIimvzzobUIEkoymD") }, - { XHDR("qc", "UucJUtaQoxTqnqVzTqHtKuewGxTqbNODQBrYfrXhPUfZXEGAPPwiofDsSxyNzzRZqERv") }, - { XHDR("mrkgoizshbmi", "RvjeDWEFqurSWxFNBltMnchrjg") }, - { XHDR("btkgvtmduxmjyagpf", "CvpvYxintPlTjMvEVBIQyXvQYqe") }, - { XHDR("krtrstkzovkb", "OmmdyhdDcawcEqifrCAk") }, - { XHDR("rpcnykzrhhkauzldhjr", "ItaIPopqIyHWCFBZQDhsrVXHxJxy") }, - { XHDR("okfqsbkygmbhfoabrxz", "aKwvzXsjARkBrCPBGIqGpWlppGvDJdoFAThcqauMSUeCYK") }, - { XHDR("vwdmodhmqu", "XdFuLTJqwIcXxpZmUDCPzvVml") }, - { XHDR("tupkcfuzrabj", "UoMkgFuYWVVnEXgJyFjzuHKJQFiRKfJEZuOloOlmbIOvDX") }, - { XHDR("ofnzpmsdtubrklz", "PVMhBiiOhhEndb") }, - { XHDR("fzil", "WyGAqEOsAhXmEVmXjOOHxfYygLEbqYN") }, - { XHDR("qt", "gUPxIKJcwJurMarZBMyUNZEEcmQfvUrGZHhvYqHCyaNH") }, - { XHDR("boga", "tzURfeUYUDkHnvHLxFLpbwuBwCIVsTGVWdqlHUwcvtzZgJsxbMRaRDwevUNnmFyqfGEwyvqCPEg") }, - { XHDR("geadjhowrvad", "APiTKXzrpGpSmdgvJnTrey") }, - { XHDR("yerutagh", "beYkO") }, - { XHDR("qgmzinhtrkbrkoibk", "wPTDgvCKpqDiPbaFHArgIQYsmsdQWuERcrhJyRWtnKrFhgsDbxw") }, - { XHDR("un", "XfSxIJMKTRrdUhstNwkyXKccZYyoCPrFLTkc") }, - { XHDR("icrtysjqfxthclegdwzv", "eexUOiCamxzgqGQAhLDMXOPJozMZZSNqBATQKwoWMInHWmXFVefpuLyXDBAmFcy") }, - { XHDR("ufgu", "mpGVlLVkobDDQPjTLEenJdynfcxnKVHmvzowPVljDCpvCOc") }, - { XHDR("nnvzdwxjis", "LpRcSb") }, - { XHDR("spboyfjyaxqmydhknmpe", "pcaHfWCuMquKxiXtoXaOhjnSlyraC") }, - { XHDR("fdjqccergbzflcsqubm", "bxfkhMWlUIuGxfJOiPbaIcTwFxizuTslTNLJOBqn") }, - { XHDR("z", "HitjogxDLOGYjWIiBDrJdSONdFwdrLWMsvcnRb") }, - { XHDR("cavlsddqsitor", "njiZsomdyNsJsgIpg") }, - { XHDR("i", "vkRpcvQOVfLuXmuRE") }, - { XHDR("vgq", "uguNLdYsjrqqQhgDFszCYifUUQGgYxIzIGqsk") }, - { XHDR("tws", "iLPQJMOnDBsdxwYcegkeinczBypIsvgxfejImGPXMMalAwS") }, - { XHDR("rwumes", "YCgdppB") }, - { XHDR("grrgexkpuqvltjkr", "WQdhMUzePROAWCzCMiPjdpmGJBryznPKufhScbfVtWSJErBnnSOHhcSfmYPNYQFuNC") }, - { XHDR("bmfrnu", "KLufLbmiionOhJCQwcVZcZeMRpGIOhHKjWBbfKrJERrLqoePeFnLMqvQIgiPACwnUDpGuqvZ") }, - { XHDR("vbxzhz", "AfHfoSrNasgxriWcaGwROAgqQySzLFstApQYIgpCUyNQZmWAjwjEzZGmLKUFGmWvfzaSIBm") }, - { XHDR("ioppgjuqsi", "bJcTMXDbrbCdeGJUvOylUiyFMfJwRunXA") }, - { XHDR("w", "dhOVlhijj") }, - { XHDR("zkpihkqiujagrlpmcx", "TlYtUJYjEViYmYIROPxVVMfFiMSZDbylQPqXNtJFgTBdM") }, - { XHDR("vpzltyvqi", "NbEfmGJEVgYglSwdEyHReaPDWATUcLcxQSJxBIvxBisZugde") }, - { XHDR("iowofbioxlkpstznyzg", "awgyfHHMQdmDIRHLLpdBECFhnaLEzOOzdyIboaqAqpwPUpvUcCnYTLlZBqeriFnZoFZnSHXlDJFr") }, - { XHDR("cnadekqcbht", "fGrEktjxGZZHJO") }, - { XHDR("bwqjvinolgilkai", "htNZnmbahCWpZYnzccBagRpnGHOvqQgcSZbtwtraWTJ") }, - { XHDR("dxsbdmllnrioq", "QnabNNfhVHeHiwRpBqMfaDeLMuQcsuDSoKTEeiXYzBKCFAuYERFjop") }, - { XHDR("xptefse", "AQiYgYRVDtPaYDeejRvThlqMiCCjphvxCuhvPIp") }, - { XHDR("wc", "MzwlxKWvEnzpGoWFUEurwtouKscVwWGtdNNuqzrcalejJl") }, - { XHDR("zdpoym", "GLrTPwylNMlqbCVfxPZPumnBxbfgIJSEfRUYyhmowTLpFRexdmWlLia") }, - { XHDR("mtcvilpskbobaqlg", "ZRKycpl") }, - { XHDR("dslrpeyvhrxag", "WrZiksNUWOcKBuUQFfWBOoghAMlxSIAdhyafkeCZUtQztRWHTsjMI") }, - { XHDR("uhlcjixs", "RUQOqhHSLvZCscikKhnOCwppjpcQWtkcIWXFa") }, - { XHDR("vljw", "QAHKOHSBlJvUuUAfXqzFmveXJeT") }, - { XHDR("hwjdvwhpzmwdxdl", "dpvhknoKzILYrNLrZKmlrl") }, - { XHDR("awnsymsfi", "lEkqGrQsZcXjcViSvtRFoMGQrEtRrHmaxmoMOzNTQkdWZYqWSxauSvBL") }, - { XHDR("znxifiwmkjeps", "MkcfnKOCUb") }, - { XHDR("yxpasgacuhhufy", "kPjnOwOiPKjksJPTJXOxtebpmIcWwuGinTzJrLbVsyxXXaOsYkDkRaEOGtbkNQ") }, - { XHDR("upwgaio", "ExYDrfDUeIMCsYRXUw") }, - { XHDR("xdwjfgalp", "LYbXGJRLVBdiQnyyJqcfXGRQsuqfzglZTTeCMEVCgpnxOOGFHDOgLqmpOmPeFXZSlBxWF") }, - { XHDR("vh", "PEhrCKjrmtKAebsgBCPvetUKOYidhtmSuIPYT") }, - { XHDR("ilufhajraswuzwf", "hmidzefZzkiYyIeMBoTddzBtxFmwniucQCyyutESqIIAAaoCCJdlewbETYdVuFLkYRkWFcVEW") }, - { XHDR("qvquqnathlqu", "OtTxaUFTrVCSQHRYoNnDqmXXhRvlZCrwGqVUFyfRseUZWnhmYUWailOaxGrucOPirvWFChnykYEjdwWz") }, - { XHDR("cslvpedeuikg", "SYuTOhoZdpFkmIJpqAVfUmJuScPYWZi") }, - { XHDR("gajxykfxvy", "NdWDBRGyRDBQhDXTYqNtES") }, - { XHDR("oyblrg", "qLxhdyJOiPAmUkaoebNdFOOJjzxMjLFRKlxcUHeTLVX") }, - { XHDR("oksojbusdidazezl", "NSGwabebEKkuyKLIPyYuQnOtFbNlYeVFWwvpwwJDyowMAmDPGqaihEZnCjdiLmKTmrtW") }, - { XHDR("krvoitwcrmrsmnmw", "bJLudqgmrSFNZGNlJKqZUhoKdMsMFCDJDrrVMcqAurDCGnEubWJpOYlgDdKIDKCHrUjBjFHStlWVrKJ") }, - { XHDR("iwreofocjqbhztbvz", "XCSIPWKcngUcfOaVFKHeYU") }, - { XHDR("jj", "iqSICxRjQfstpemuGKOhnelzLNGMs") }, - { XHDR("he", "gKVwprFYNhrflTLYeeGjMaXdpsbKpjjVvLLThwjtxOLxtFczgyOvjjfqp") }, - { XHDR("kdvjvetkxukaa", "cjOmSioKHyuJoF") }, - { XHDR("gmjs", "IosRASdiIdGJNiyQeCFAmJacqflgEPKijIVRuAJz") }, - { XHDR("ultf", "aauyMejbCyVfAhPwpGypXbTQGztKpZUG") }, - { XHDR("feupqfdu", "xWEEIqgZJQkkQAEGomjIYrYXIpPtaVVQHtkaBzRrcSmkyCTVs") }, - { XHDR("lrg", "fmmcqacyGlHaGMsBIbowurqebKdXxlaAMKftfRC") }, - { XHDR("cllhxhxewoehdhlge", "KWOwvFfDGzdtSfAfzaQkXzwFvGMRVRqIjW") }, - { XHDR("uuavheepc", "YSyKwtmYDZg") }, - { XHDR("ltw", "lVVbdxIgZWpmDKhoUOjHZzcrKpTYHRvGOHSlnVTS") }, - { XHDR("qzddtmtdjecciyfsmo", "mM") }, - { XHDR("winromoatjnkzorh", "nUuMbVofgUQdKcRqpKpEQsSnThZAleGGPpatXDaacIWvHlxyQKGZbHStVJLwRUxi") }, - { XHDR("ewixlhysysewg", "IrUZHZDidlKZxGfgETRmNLXkHT") }, - { XHDR("imashhrl", "aKVFFeAKUbTOaVhzRciBpEwyjvfZwOIKljWQpKCjTn") }, - { XHDR("npuehbxpqrlhqwn", "vsdwpGQhhcEjvihrPTx") }, - { XHDR("bxbc", "xujNvqoIdhUPjXK") }, - { XHDR("z", "YoUrxFbQKYNFBdekTHbAdrGvZIeNqYKAGvQVS") }, - { XHDR("bjzyozojkemlke", "JvwUwul") }, - { XHDR("uamiavxbyuv", "zpKWEZXTiNmWhrJewJDyohSueWaywjqtiDJLSRFNsmrcoKrvZSKpsrywAYtKuSmldawenEIShIcv") }, - { XHDR("th", "IZfJsmhIPxCWOduhHdFcsjXcLYmyMXITNjMp") }, - { XHDR("lgdebryabldmnottfnqz", "vbKrypeBvmtbwwyNTiPvGfLFpvtAbMSslujqWcQilwMmOgmXanZysEVjTZ") }, - { XHDR("fpmthxhyqhhupd", "vUxZfwDaxyMnRgtJVnJKJMkyyctPjOQTxHLfw") }, - { XHDR("bulxthomfyppaotqxpqb", "FsxkBKecHSwKmzalIOvwcMgxaqXRayta") }, - { XHDR("pbte", "NgzFWJUPOjKEZQmEXQKhJzagxu") }, - { XHDR("arpd", "oWImpvNIzVYYzazwKiHDJP") }, - { XHDR("qgklnusavzzgdp", "pVjnEVqKVzRfhwjHrKbspPXbELFDDyRGfeBNGd") }, - { XHDR("codii", "JjvKYPTZTCwIPqQAQhJpWSLgnwVYuXIYCItVGrPiowsEnOsAoPfiUId") }, - { XHDR("hftgwqnsdxacnnzutyn", "UBrHnBNGUhIRrntIkHNORsVCePdBMZZjVBhbPhKjhnJMvDhWyLMCdznUkQlEzwdzUVGIxmU") }, - { XHDR("njmcfqcjqney", "knyjbqZYrrYZqSe") }, - { XHDR("syzmmbmyldmmrgzb", "bNIZdUFOohPYx") }, - { XHDR("bdhqkeqell", "JXLP") }, - { XHDR("rlmcpytprr", "qJmxifjwx") }, - { XHDR("xc", "hAgMTmdr") }, - { XHDR("whokkuq", "dHtMWNZXBoSWrYfaznAeggClSCahjFvFRIXdifQrsJrfygxXaTfeFUlmuvgQeXFCt") }, - { XHDR("oyfrlhgohhrduskufin", "ZQOvRUtrNjMC") }, - { XHDR("pmtpkbexnjtf", "WSJZsEznVqKPBNPXydiEVfearL") }, - { XHDR("ycixiqhhxszmx", "gx") }, - { XHDR("oemktxkkbwm", "xfmFoeJDQqyTwlRiXjNVTDlFeZVJRRtAaUIrJkSBBSgTYqbuThfhLwFkpeSRqdyPFAQIjrUvRbflH") }, - { XHDR("oisbmbeivmdarrtlxm", "BFJuVHuixdmikGcEhObREJMKnRMhtAHORfXkxBKIIZgVPgAKprMIbqODRLEJeKxjmLHmLuh") }, - { XHDR("qrrudcgghronqenz", "JX") }, - { XHDR("hznufahseaebal", "PvmDpKpwpwPbyxVhxnlgrkSwyTGzoLhDltQ") }, - { XHDR("cgrv", "DQePABJxTEOrroHBcmvTzzfkbHDJMZSBYyeECaDnrIRUvNDPMLKtVyjUwHJen") }, - { XHDR("yjnwidwvmv", "xFQq") }, - { XHDR("hp", "TYpefrvClILObrEiBRVGsfWDIsBaK") }, - { XHDR("hhtlyhuvbfwkpoegjhra", "xwBYAfyXEGdIWtHddNLovuhMgUvgOpVmQQPKOoGqUtnChPtssjQdwDoLnBKXdUgQakxqSYIvljvJ") }, - { XHDR("vwxvzpuwknf", "xeiZnZ") }, - { XHDR("hsqvptt", "JZikbGFaVHGIDnDGCKmcavaJFcmqb") }, - { XHDR("jixyuezezzdwlgtvowp", "l") }, - { XHDR("ycntxorxqs", "TSFwQxAXCukemiQoHskDwyLKveALqZKqBzBhBrWyOwGfJpxazPlrZDYJlSHpis") }, - { XHDR("menpibwelrigq", "jOVFoebK") }, - { XHDR("cmuxefjbcyvgqhwfhkq", "MfvMcTeHEAJmMvoSVUvYMbBYsnOZNpdZyp") }, - { XHDR("ietu", "TBXqRouQJeyFJqlFemzHlHDMpCge") }, - { XHDR("xppgcilajbijubtkkrl", "HXfYwnLjdweWYLTsrTeefxoUENto") }, - { XHDR("h", "fMOFkn") }, - { XHDR("jzvsukcqls", "RLcIiqyiXDSBbZbpjcwJxEdffKGsJcvjiXAYMDVkQMAuwRJAiFkkUzPvhjzu") }, - { XHDR("e", "s") }, - { XHDR("mwgacvctguozq", "mJLFWHZeBaHpjwynEntyEnykulOIEjmvtugruamTELPaicsTlFfvviVjqAtnZlvYsnevkb") }, - { XHDR("snnfznyocewhoikvlm", "pqImTwJQPKHtwUEFpSjDZSJeHvheVkVfkPTkILVsdQtqapIsBpXRTpktpSyCzxnUCoTRQKt") }, - { XHDR("ewklxeajbgef", "uImPeotGwbTYtPojdvuPMkhwZcYtQYJUyfVesaZTLuYiSaiwwydudcbekaYdUvSCwuJFsAwxfiK") }, - { XHDR("nlntdxhgb", "SuopmTlaX") }, - { XHDR("wpojluuxr", "kvqhgvRJJIhzymKMxJnoLCSujRBLUQx") }, - { XHDR("edudnmdxsxm", "xp") }, - { XHDR("zasrysf", "HOKYJwyzRkACDxbhsLnqzytP") }, - { XHDR("jewoxconeuvpfuz", "yFlx") }, - { XHDR("djudjbr", "dCmswlOYznrwPJMuXlKEvgZaHPEHmQxAcENzEgJNU") }, - { XHDR("viyvfysljpbms", "tYVeAPSmJhdNNLbDqYmDJeUNzPzYMwasAZEBiezosKFRFeggcz") }, - { XHDR("phllnrbpqldhmt", "iNaPlcYijVMwS") }, - { XHDR("diqxsmvkehgy", "lQDPrxMdcpCsrnECMibpnxNF") }, - { XHDR("bqjwqdxkhfsvwmhfjia", "oOfTSapzbHKepmzRBuRnfsPVYYWHrlOxyoJLpTWHmSezJZUrgFEgRFZOpYEVK") }, - { XHDR("uidouqmtwltnxftkj", "iufsorCyQsiAcKVuHeIzglYoPFkgkDzwBNBZyUehSYyeVdOVDMDosJFQl") }, - { XHDR("jxovqnxvcxdztv", "bCbECQEQZpgfxHUURWIqVkElghYzO") }, - { XHDR("eopl", "EsieWdDKnwvvsLM") }, - { XHDR("bhz", "tnDBFAFXhPoCFkLBbTGvDGtyrMnQIMgCZeFPYRHlLRjtYjKOnYNSknWqZysWnqHgBpVACUDslctX") }, - { XHDR("kiqhdfyem", "QlUmoPDMyoJEPLIgSMQtI") }, - { XHDR("kptjvudxod", "OWcVpNCsQEaaeotTQbjpnIHpfpZwwvTysEBZXcIbnsEckpvlhWDfHBVXoEKdGNZ") }, - { XHDR("cgo", "rZKLFaJldubWcspVawtukhwSxaaGX") }, - { XHDR("pvjhkja", "zIBXZGAcOuuLrSUtdHVlmaDQhiKtRDafftwgElaCHFZveGgRjkaYswICufkLRtfsuzOUFxNWJFwE") }, - { XHDR("zrsascn", "LfkyExCUQhtoBrzzQQjRj") }, - { XHDR("fd", "iAUSKNhIMOggxpmlIyIOHNjmIyyWfvqNSFmi") }, - { XHDR("euw", "maLBQfRJgMAlbYpFbLkZLIqJWNoseXtALZbjWxJiAk") }, - { XHDR("ubbhvhbphy", "dltppwWBrKcPjWB") }, - { XHDR("bkzinrxqe", "wrVcqlgmDfVOzqbiZlHEfKTgThvXcfaPxZFHbTQXhwOIrrZnSMTubiRSrjMkS") }, - { XHDR("ekugwgqdonbclpeqclr", "gQlZhKzBZpvQrjhnTfEIObaWmLE") }, - { XHDR("iyjrddljrbdlib", "szzuidNWLjpndnjLXeEHljpMJTJoAZVLQorWieFVoiIrYZrEs") }, - { XHDR("vjwfjpmgijmtbf", "axGgozKzDEZLRUkOoGuEmAHlEDgAILOhEcYhbcfFtMCGNlNldZOcRyKOxiAqMkVpCIBNzDrYdrZlDhg") }, - { XHDR("gbjgob", "doXMXfVeIbunnzEYgNDsnywTyZwaIJyAqNfTjFMtkZgwhyKrRVwIeSKHiSNMeNEeZZggWQnPK") }, - { XHDR("yxpccfvl", "boB") }, - { XHDR("a", "Hf") }, - { XHDR("ad", "GhoGerKRSIxbrTYadmsyqMWhRZWyXasToBHadwELYXqJYdqIQRXsbSfaTlIoVfzRzpKtEwXOt") }, - { XHDR("thdytznnjq", "htqelIcCFGMHMejVABmYEfZpYvfjkixYgUp") }, - { XHDR("mjbu", "PVZthmUfcjDqvUdNmbsCTQMAWjKbuQwGuuEkxrIVyShHTxDiCJjxXJFGYpAyhXsirunmwqQkT") }, - { XHDR("bakvzayalpivpdmqw", "yEmuuqLlNQqVDZRMKMzRFQXpYmoPZytvmgczjKKOW") }, - { XHDR("jmvpi", "zkzjbzzgotCwJqBdUSzYrGetJEpuebAUFpoZGNcjyeAZAjqbgCKXofpgxCYSWZWPZMRkODu") }, - { XHDR("bzwkh", "ougqIzmRzkKpvdCjnMZZiFEGQSYpUzLUCrcWLJRchZwFnqPlMwbzLMbAanCY") }, - { XHDR("rzyqzbxtwkni", "sJRicBwShlSeDFgihSiZtAHseLVFcIlkvtxfrgsu") }, - { XHDR("osbmfhymciertbi", "XSLYudYUfsiSr") }, - { XHDR("njwafvvdybfhsc", "ExEGydcByKPViIpgjmpQaUcWdNBfWXEyldFen") }, - { XHDR("xjcccdvpgym", "tutgTbVafbKzGBZkQCgAcPeDKGEdPfnHlfacduoMwtqxfgHJ") }, - { XHDR("oxgxrkgh", "cWNerFRyaBAMawDAWCWeHiVFxEQxZrllyVwZSpTGwlUIJNxXRAPkptHTkJxuSKugyWhalYWhYjKoh") }, - { XHDR("ktoisonybfvt", "PJPSEpAMslPgDIEPRFuPgxOpNKqgrmkWUIwCsXLtLLzF") }, - { XHDR("fjshzhslfyiz", "fGikfVtoGpc") }, - { XHDR("atmbsjqzdixqa", "juwXpuPAqIYsfuzJnakphDUNQHSOubyk") }, - { XHDR("rnqgqdwwfw", "ROJmWWWigiGMrVcmzAmThWLsorJlHzTtrpPlxXKMBJJzKpOlCyxWHfqQS") }, - { XHDR("bpbhpwfokksqbw", "oMLZsUgOzdpUsKiUCWGPARXExmsEUEUKVwKNdvxPAVTrqRIsfxzjqeqvwRwDcOPdHgIRLxcY") }, - { XHDR("mxmmgbwxhq", "hNmEELDWdaSjRDbBbPrEaTzojip") }, - { XHDR("kcelxorhlgkz", "VKPLqYIDgRhATyCUnpDBiYCqNIorQzuubBYdhUfrVRyzlcILyCxeGfSsKaKmtTHkCczhlk") }, - { XHDR("ae", "SuOKukmKVMsLfUtgyJxZxlTIkKfVWITVfynoASamcjXRnUmXioIsLJAvesQH") }, - { XHDR("fijqciqybxldnfefz", "LQySwHBFnpXBwOMxIBoApyGxfdysOwQnndJArsHZeRsoYDbgxjLxSAOOwWbSHbrZwSyStjcR") }, - { XHDR("hwz", "eiMFCaNKJAzWAtXpUKooRRNP") }, - { XHDR("qsjriofgfq", "VttDExkybjbmFjgnDysnPZQJuVD") }, - { XHDR("cmwdkuxxgoazyxpuy", "QluppySnnUdwWskOJwQQDGvOhWBCRYiK") }, - { XHDR("xmagrkqkqddqlsvpa", "XSdnYaMtiGdAjDFBwsZdjWanvNdUHsMTPVyLboY") }, - { XHDR("djtwqoygrpkqgxrwu", "BdTPxdzEzrFrCnuBBYPHXxelroka") }, - { XHDR("qdhj", "jgITntPOL") }, - { XHDR("ajj", "KkIkzOBQhw") }, - { XHDR("yijyiikjiil", "XlKeYdyDaFqZdKCLbGDmHjCmmmuhrjD") }, - { XHDR("mfapywupx", "iAuLZcCLDlHPwcbBzoeOOyFkOweCEWQVgRDvwJVWzMIDkZ") }, - { XHDR("ujkb", "e") }, - { XHDR("aid", "coWOCmLgLGBtOxpdNFirqdEJyjMwbYrHUxycfJLKKnnKrGKAAZUKaLxyoLtqnYyxZNN") }, - { XHDR("ofmzyx", "ZdZRrsDIAXRGNLrjXtEnNiyNzIWxVbEmLMLebxBrMNYTnyPngnRWzd") }, - { XHDR("vt", "aiZvZdDzIYBitANeUewSlRtvKqhGCtWtWnFJYyWuHVNZ") }, - { XHDR("fzfxwwpuqfr", "rGUECp") }, - { XHDR("jrovyhbydcilafpzrr", "bVSWWaCpfuCtSOCWktWdAjqVGvIypcFjGEJhYolLkAiIjUNWSM") }, - { XHDR("xacs", "PLgUmPVgLzRgoTzAwhQGyurwBBRUEGiqJjjBkJoA") }, - { XHDR("uzcougdenvsldh", "DvXUjWUKHvxxZHEaoiVw") }, - { XHDR("cg", "ZhDfEKzJoMhfeqU") }, - { XHDR("cuzekdrawynxro", "oAgEygUrluagUGvhrfoFeQoCLBGttuCqUkoCSVaslqJqnkoWTv") }, - { XHDR("cazjgipkuzzxpjsgahh", "BZAvSGGdTaHC") }, - { XHDR("vdbwrksjyhozckpn", "qLHGALydfkaPliInHvcX") }, - { XHDR("bmzzvlssankzrylbxg", "iYNvVUGYKnZlqlMOPVNADiOeKkyaOlBdgHdkudYejqKcZGHMbvNXlyvLUMTyHwJ") }, - { XHDR("b", "xIyKiEeJnIofABUthzsPQknbIFuuVmDzhSH") }, - { XHDR("klkbxaevisos", "btjWV") }, - { XHDR("itfgzwzbldajpjkdjcz", "PiitSmsfqIHXszJzdjivHLaxDr") }, - { XHDR("ocb", "vXVqboafFBWJEoRgMFTlpYQnaMqmNFpeFUyFOoaXaXuqgErLTa") }, - { XHDR("caego", "ZSyzijHRnQpXOknRdCUrHF") }, - { XHDR("lgpyjewwciil", "xzivWvSDwzbwBFdFsVNbnvtcFkJdSPDZqCJSvAitIKtViUOHvZUnkkqmDRZWsfUIicbrHwLZMzkmyMuO") }, - { XHDR("cwwrzqjjarrfl", "nWKghOUpYlRxHdhGWUMvlxtGiPzlbJawvjzbElZTcy") }, - { XHDR("wtnxfjjdea", "sRzMYdIWvVSmAKMOEXYBcfYgOaGlFJGIjwjCXzP") }, - { XHDR("yc", "vCLLajbTfTOcZbsSlaypKRhAIVnWAsWdsowLHjGdVMpDrcjCjQJFffhrGjvFIqTTBYmOrNto") }, - { XHDR("r", "rQvGYslIKLsmxMxoIvVhSMikbsWJ") }, - { XHDR("sqakrjumjtth", "zfKnfCmjUuXKCSRIuuAqEpZdLZvMAtDfnLNPJOpDkgQUUuAXCiXsDbsHBjI") }, - { XHDR("xhihblknfjvjckprtj", "ahNqYlfXlqwzAlBqcygxoavGDrVuwDWtbqYsAZttuvMLaJunbsEFfFZh") }, - { XHDR("u", "PjpFPxiGppaiidbsHyAAshDiumNtyLIkAkSwLxBfHMTfYvfadanNIwz") }, - { XHDR("zkkankvouxpfhjcsz", "neOplhuXGvcS") }, - { XHDR("bdqvdpnxmuwhuuyubgl", "OFQubZEDIyXXaGkdq") }, - { XHDR("ymbtzkvrpofgzvyt", "oWAegObfBkDtKbSTBjTIFneCRlbxgbHNgcudoDYVRLhsNqSbUGrOcvGPtitIw") }, - { XHDR("niezgbzmrxesqnquloik", "kkOJHTLfpkaK") }, - { XHDR("frdkomusqcqpgsahd", "SGkTOxQwBYhyMorYrkgWlEhIwVLmzhPCYVKOUnIfFJEieAbcVl") }, - { XHDR("bazijgo", "xfYcSIeNuKldhWUzrwOWztjeqia") }, - { XHDR("xtuallweoxmqc", "LolwOP") }, - { XHDR("amzpj", "GrzFuWvWmpVwdIPKNBBioYuIQUWdbPEVNwhAcIOwIOeRgvWuILmv") }, - { XHDR("cuk", "yHmPsfbPWdVIsPDmrtQLCMgQCTTUDGCTKibyQZ") }, - { XHDR("ylmxxpiodyt", "DeSoxzIocTZRzgijkwYLhKemfeh") }, - { XHDR("spjdivrfbtdotcmak", "idBbvoHlHjUYISPwqGjWBQUCjBJxXrCnyqtmsXDwNkAVkaCiLuFjrUIFtzLGUyEBjMo") }, - { XHDR("qmvamgnanvwcengpuaj", "kLfOTTvISzClIigMRqcejwVGrxoYX") }, - { XHDR("eualzxvlhciotq", "XNxupNmhbSPQwcAUPGlPWDTwIKfG") }, - { XHDR("fethowsxiapzwrdteqf", "kTRdwFIv") }, - { XHDR("rjq", "YjbzlaKZGXVjrxGMGJitdZoOqGUeSqvWafitmpQshLgkJBadWZUyvCjtOSkwZLpRx") }, - { XHDR("nqzyfrunqgbaiejootx", "LfBQrhxncZSVEyJgrfXqRFjENKkhoQiwXybTKvYenWeEVyurL") }, - { XHDR("yfkyxbngscialzpyocv", "EpOYYYdIbrhBdLbfzJOXGdKvDZekJusVoZCu") }, - { XHDR("z", "yQmQHCPOVcHClwhjSMVTlxnrJAQFrdstPsSAlvYh") }, - { XHDR("ofes", "HikzaRharLGIKzkNJHgGKuOMzAOqROBjKlbnaMeiBgEsXOHlmzBSrjTFNKKM") }, - { XHDR("bju", "RumDELqsWnHFidtIcJDkVJ") }, - { XHDR("uypwedwvovqzmnjwyua", "huXtuCKmHPamgvdGNqNCCtpVnMfBlshwtcwcoMSEOOowjflVtOGeKbHOHrp") }, - { XHDR("kacsekygp", "khrsUKzBDgRlqfyHpZFVBQMtJbpaUUcphzrT") }, - { XHDR("fssisderauxmkc", "XhifvZFgHMKWSXPgIYTweKfsIOpvjkTjKIOIzEWqXSzjzMkCV") }, - { XHDR("gv", "gJRTHHFBBJxf") }, - { XHDR("cgommfwvieojgmqvu", "Pjx") }, - { XHDR("upeheypfczy", "xcZkKdXAZLOSaWECrE") }, - { XHDR("hfhrlxxypphda", "BsBEHRxaQZZFndMzBlUnLDDbOLcuWZrkZyvhoyThcPVpmBjcYLpnZnpxKhOjEzJtEisvzaFcSHBEjDgP") }, - { XHDR("tubvpwlpsmzdwqmyhzi", "bGdptGWVLWccBOYFnUpgIHzYxNqGupQyMEWVxAelNfTecpzhYIWtXLkC") }, - { XHDR("moxjop", "ZlgQMHJIlmGRBySrU") }, - { XHDR("ehvdyq", "YhpGaieHAuAJlbbbanOqjjEIEgTdnbUjSWpZuSYRURYUBatHeSpVtdYnbRPwMNktGtTMizLCakIe") }, - { XHDR("fcaahnqk", "dNvTRmgdJaRtiYpuHgGSyKkpFxhsquLmpifd") }, - { XHDR("cdbxefnmqptbjoi", "AAzZNvbosJAgSXwaTGfJttKWxXvlHptbiGysHmnMysiSg") }, - { XHDR("qkuuvxlyohvxsm", "anJLYB") }, - { XHDR("nozo", "xagwZFYQHoOsahoQkPbWdMoXLMgBhAXVAQeFewTjsmwyfGgTA") }, - { XHDR("zpfsmrhnelct", "nVouQjsuxkMiPdMFEclJXgmYlFInUsqBsPAHEbiWvrBNKKDfHw") }, - { XHDR("hejdfskuvah", "IecLOrGDmNrRRQnLTImsxeDimGYwuvzWdotsVpcbDTfLJjyKIRvbVhDtXGuRWAvmLbrqjIpbwXnfqJEm") }, - { XHDR("qggndouctwogddbo", "xVTnrjlgvgWjWjDSMWoPzIJmrGqrLYSotNIzdNFcNXGSxqfoG") }, - { XHDR("zpolnbztwt", "PzsZmiDHhDlIfvtBTzbzmAAhKYifypnGuvvMkBuIDqZLmCleWpOPjWEgKLeFAChPUZNKbutEVQnC") }, - { XHDR("nyqhabn", "exKUUuxNPTNZcNdaSbiMoNhtdIlFtC") }, - { XHDR("tdbzuchhk", "VdJ") }, - { XHDR("mdmicrf", "lexjUgFTESRbnlfSmFsgXEgQatOeByfYVhxeZUWcLXhCqnSZBLXzKlytlHUMpZRlhS") }, - { XHDR("kctsigrupybvrakpmwh", "wWLPfc") }, - { XHDR("znupwnh", "GePOKOlnSUwvGWRqrSthRrqumFuBhn") }, - { XHDR("keasvpobanounrsnm", "SAXyqQpEIS") }, - { XHDR("fouhtxlmhjrkjuzc", "fYSFhjciosAaAnELtrKcfqeEXEXxBzhhgEvdemUnjiiVqmerKEFJtOIuB") }, - { XHDR("wiqofpbzhhuzbi", "AsDBVtmWhQkBUDugSWDqYOhZTPhmMHLRVELWWzchlhNkDziuyK") }, - { XHDR("jxll", "ocNztwKJruZktnWnLlkqIoAHqcRvdSMnE") }, - { XHDR("qziofguovdbrlqxnyzij", "LcbPLGxfcleDXArxPdFWfUnYIvHqJZQxBsSJwrWJrudOpWhuIVmToxbcosvcXwkzSOjiNFeuNMbs") }, - { XHDR("hsbl", "JLYGGHHpnSuGpEOTgYVlYCHgpwVRgqzFYBSMPsHqyWWKrlvxirwDeShSKXyUZGypzPkuceDtDoN") }, - { XHDR("vgtvmcwtjo", "MoALPMlBhibZXReytGr") }, - { XHDR("tzhyjp", "dIMxfXwJlCnVjSQuAQKgCboy") }, - { XHDR("bepmuiplouwaicwexw", "LMDMRiLCfZxmwisdTozJqnolIEHCgphknLuvYHVqAHKqcyO") }, - { XHDR("sulzcgtcbuyukn", "gfNJEVziUSlCtrzcJPdgymQihoFRSUDNBeDdAkwRsBEhAKBNGeaFJcEyqnAuFyL") }, - { XHDR("qsfvaoycapihbqzkwnp", "kORzG") }, - { XHDR("tsomouzis", "GNmuJztPCjRofzQNUFNfVcJMgfShKqukukJfVYrgOcBW") }, - { XHDR("kdjvjgwojqmk", "nycYShDZUIqTbGihjgxrktHJnmXFfwfaktbndSuNmdUrzWsYreSlHMnXIlZTxjaikqrUVGVQkqZVSOQ") }, - { XHDR("wwiuowmhlodgaytvzekp", "IAiXEHckjUWqujRvGySJ") }, - { XHDR("rcuovtf", "aJaIigIoyVrXxxjiSIRWVyOmXWgRFEXWufXqnZ") }, - { XHDR("ywmjsatmvw", "TtnxxYcvoBLyPDDZxhiemVkSnoIasTkoH") }, - { XHDR("rxwiizpio", "KeVAEgmYGzhsdSNSovXLKiPLgFXnKjVkSsBXOOOYwgioloXIoQJ") }, - { XHDR("x", "aouktGTtlIKQvxnXoSaproOVjdjjvHmIzfxnOBVMkqPPrpYe") }, - { XHDR("ouuqminkxjeqedy", "Q") }, - { XHDR("rqjflequfipnbzgd", "tvDkWPCMBBoHXNyJCFq") }, - { XHDR("zvrgjbellndyikrqt", "sEGBBNbomThIQYXSyzteABLgxaJnEqXGNtPGZaZSFLWjQWb") }, - { XHDR("nekktdonscddfkthwu", "YUqVrEiiPGwCloGVxDRmcdDFpvFAJcSrTgRamVbRcBbylriMmxNdnJzjLNRHEMtKBFLDPBhqWkpDN") }, - { XHDR("brhnrtnmnxajhzcda", "ZBSCuHcleGfdpDKRFUpcGkTcsScDEAJWWdjsEcVtySNrUnNMPQvlkB") }, - { XHDR("ucwuf", "MZSCOjiCcggGylFFYZdLhaAUYmiiaeuvpJEdAUCeHZKBQoFKdscrLRnSRLLwyDGaCokGgg") }, - { XHDR("rdvwvitrgwd", "rHUzHu") }, - { XHDR("ngojzkfwidfad", "ePezmeVZ") }, - { XHDR("efvifcdmrnobpj", "MldEPwKgcJWcZvdxAcbmnHnimINkrAoVCCfghxkcqDcZyGlCl") }, - { XHDR("qcuujlmdzekwyarowv", "NQFCQjMMUgnaqJsvHmAajDWExeYiS") }, - { XHDR("zwtpeqgf", "BzLONNvzodPyYxKPWLimwuUMHjRjQAwWrRdWEeCiMhdECMLnGfJRTEFTxn") }, - { XHDR("rmghpudwuwerseqlogcz", "QhQlBXp") }, - { XHDR("q", "LTzyyeuEyDIRReNSeNR") }, - { XHDR("sifzenobxjxblxjzz", "gFIMYKfCesOXwMGGAsZHKpEGirJzhKKgLwMqWdHzWFYyhZfLpfdvJcqZVyvRfBBSUyoFRBwhwF") }, - { XHDR("nqffhjcfpioghy", "TKRzUtZyAQIfVGWqFjsuHkllFkxQNVZyjvVoMBJlbpUQRKVegrEefQVRoHbDe") }, - { XHDR("jhg", "SDoXcvdSCbJbkrpJEDHqeuRhz") }, - { XHDR("uqxbaupenthqhbgiso", "nitaTJHLzsIhzjMiBhJQDNkhRgryVveHNexYtGalmbtVfwZPrxsESsYNNuICuZVthq") }, - { XHDR("hxj", "YlXaKPzyPvNpWJBDELRwSmQPKrBxSonpEdrEjGxcrRndXErgIETQaGVTPWQjIakm") }, - { XHDR("puqssdsxbsz", "JRCHaYc") }, - { XHDR("o", "UFtyZdUECtfoFmYVPOVPMFumUARFDvJdBPokKMMebkENXVAwQNIKjMXbfDJ") }, - { XHDR("tjahtwoeegq", "MZbIffIHnohtghStFBzQNtvfBUFaFMIBKdqoh") }, - { XHDR("r", "hFVeFRgQfdUpoVOYYjukMpPxfmMDFCYTvYjaNSLdsoLAeOXeySJUm") }, - { XHDR("cbwngrymznvb", "GBiEWfRxgErCLjnheRjPiULvHLkavZIisIHQOYSwduAsXXlARiRZkrTBpMjqRlfQPsUDNA") }, - { XHDR("vydckhkfkx", "GJQIAINFKXNIakatfbHksbdrIwYGowJqdRrTyLjX") }, - { XHDR("fkiheglka", "KEAlCTrBZbuwHZPwuekKOmCLzSiRpdHZaKEAdLRLQkAX") }, - { XHDR("sagvaz", "TZOeZiTBvXcwLfybbsnWqvUJVATmpAypdtagwMMRegVvtBeeskxbcxfTTTIR") }, - { XHDR("gari", "cxLTfZZMOvWXqLRhRwVLUCUupCCTMMRVWSpRMYEISOhzfVVwTphsMGaHyRez") }, - { XHDR("uifsvpbtkkcmkuiocpco", "RoKiQgBQvYseCoGgTUJzLUrPkOBoSGumoemRQAKoiVXjBLwTLsguiDMhbHMSEcKLPTnumeVcHimf") }, - { XHDR("hwrmzrsvv", "DTLMRGmaxCOdyUorczejiycSJxsfhDtwhmnEzhKQtKDJoyvFvaHItzsDUPLITmLPFGXSZXzONFVXNXJF") }, - { XHDR("hugsraqqiaa", "yHaAIKEesQWZuJaDrgYclPpzPCdkoFyTTmPVWArzll") }, - { XHDR("dxkzhcpuk", "VzXBOsXumnjDXGemMcJlmWrTch") }, - { XHDR("swkyxxlvpevpidk", "yumzAvUpa") }, - { XHDR("rrntghpwdfizyldmja", "MJeULWUncmYQkXxAFggKg") }, - { XHDR("sjbnjzzypxmqmgwu", "IsvMTWcOUnFWbjezXhMPVvykgBCsklzrZEEXkoGeGfEniakZ") }, - { XHDR("vslrpxmz", "avWvfoXKwPuwHEgPmhMLFxqWgDubNmfxJOJXwQqkddFGDurgAFuv") }, - { XHDR("wswzhuhewz", "UzFpqykMF") }, - { XHDR("lstkpiiextfeywrlhs", "dSHXtObyxWzasTseSJvmucNcJNzdDdrMZRzXaFawwBiHzn") }, - { XHDR("emhvgjuafnscp", "MAwcTuQhrgZlDVZWgrgCOrGQSkiPWjDkrylMmMGrwsZWTPoGcMImTTEHvOlittLjDwRiYZunftEiAi") }, - { XHDR("i", "YABFHGyYwcFsShLcXADdhkcJwOxEGIQpVBfPBvSVAXojsvaEjSvTYBumOHXuQdTlDv") }, - { XHDR("extllwcjbbyn", "RTXhLkOTyFrtYZcyjZwrPEMYtkHmIUVugAzqFpnrGvMqfIesIdcd") }, - { XHDR("b", "GvNbvzkZ") }, - { XHDR("invitavctm", "zcjvFNQgdxWdEfmyEeoWVhSI") }, - { XHDR("eyzte", "hbgXbfLNpZhCXBuQOlqYIBhsvmFbdWzvQfIeumvhxqwMM") }, - { XHDR("uvinyumjnuusejmfma", "BgRFXhaSfdojfWNyCaHUpFrAfpbLQAcDZjQgtYMlPqtPxplPHFMfLjHlZhySJvFERlyeaxdsvWAs") }, - { XHDR("vzzshulowxa", "sjoSgtewTmdPiMbGVhKDqTkqnJowMPuNeNTwQWidgVswFGpujJFCdJiTKLJHukFZvilzTrwvnRS") }, - { XHDR("vvxhurxwnzuyqm", "LVKRmdcyKGkkHthsdTPundHoBEuaGRxZFuYuItWkRgdQaWSysGnfWoVrpe") }, - { XHDR("xecrcuk", "IkktgmAfhXHkVzIrXCulpbZlvugdlRDEbMfKLvQ") }, - { XHDR("accbsntiy", "kxdLirgevGGkTVhBBXHziHvZtJFbNdEZEUPAnzYq") }, - { XHDR("rxjzavjojpsr", "ZXcOXNHdmdiKWLPcVdlrTCKusewEAvXfjCG") }, - { XHDR("skiiwvnfnf", "hdnNoTaIXVfZFYKM") }, - { XHDR("jhtuide", "KFFowjLbkvcPfNMBZfunXPIrAuiGXdDFaudRO") }, - { XHDR("cnaeqpmchukdz", "dlcOtodKLhTvXotlsNfVITPJjFZLEFWkSxAbCTXDzFTsstTCgvjw") }, - { XHDR("iuyauuvqkpiuzjzobw", "CgB") }, - { XHDR("kdxsxxez", "OydTeznSkOVkbyBhJCJNBNSbVstMOugRlUFfdgN") }, - { XHDR("mfivvnv", "bbLLS") }, - { XHDR("laipmuuavuodutvapdv", "LFQQMESkRoSvpxzXVCWDiSagxidvMfnIQulWfHvo") }, - { XHDR("qbeevyxcce", "uVJVPZPznloKqmYQoIjPyGOQYNWedODpVKOCZpqEuqQZZcNqyfJWVChDAQLmVIv") }, - { XHDR("jpguxqfajk", "TQPRU") }, - { XHDR("folkghgpxygelnirvtzs", "K") }, - { XHDR("wployxiul", "LHyzFJydBEFBLoDxSxAKfLkdtNQWGTxDgpWkXyStZARzY") }, - { XHDR("oipahzjt", "RurSCCswwsnPsYNGLgEKPkKDPouVuvWADvjVRrwmvMbpUdlOenJCvzizLOhGEsqhebNs") }, - { XHDR("homfridzwtxnlmyktyei", "EvvLWljqModVbPRQpSfIShHgZsQhjdROPZxaZPtJLPGJhc") }, - { XHDR("pxooxcdazabbionj", "yVvbCsR") }, - { XHDR("j", "EDPbFFXLZOpwMFqgdCgvXiuCypRHtGsyxgUsOFbdrPMiebqFFZBlKqZVADLd") }, - { XHDR("tfkaxxyayywwhs", "mjPKelM") }, - { XHDR("j", "MeeWAbljdsmbSHOifxRojdayltjqrkHTLEifdVRKlHeRnIbHQVWEFFnZnVoDlCWyYcEt") }, - { XHDR("mabgazd", "jwdjyzELobkJXihpNxjejuEOdmZVnHIQAMfEXZQlOjZGPMeSAzvAVRNQSZteysLZypssxPmjcjLoHexK") }, - { XHDR("dcjk", "ZNjOA") }, - { XHDR("eyh", "yjCrVXoKIoIMfARQrvKlftMHZcOpfiJlLIACcUPqObuEDMdT") }, - { XHDR("dminzagkbonpsvzky", "kUtrPGmLtZthoFXnRV") }, - { XHDR("qtwwofkpumpnrnho", "HAZuUxtBXUZyIzSLlojxykvtaMcKQCVzcupqzdKEOCUnIRdKHraRqVKdsWpTUPdH") }, - { XHDR("sqypmmmfxy", "VHdDKRrhnrHLqWDMqXLfGZpkMCFgOOTCyaLplguhkJSjBJOzLlwFngIorlvJfvMjLujQxAk") }, - { XHDR("btcnmvopuo", "qkXmvqTrKDrclJdCxfHKPKqFlIRPPJiGOkyMxEdM") }, - { XHDR("ci", "TqJwyFxpBioBLdVgcXpnlhT") }, - { XHDR("unyrqvqwpfhqtcjycl", "ZpFDe") }, - { XHDR("x", "mRZMcganloLNRWVrTZdsedmDhiQQuLPSXpZZMvUSnGyqfEfVrTVzQ") }, - { XHDR("uzif", "wQXIzckTgOsEwwKYgndcpDYnWbTxGjanCgtVh") }, - { XHDR("fosjetqyoqcfd", "EdCS") }, - { XHDR("dumtwijxzxlbn", "e") }, - { XHDR("wbnvpxqvs", "hweawBFlm") }, - { XHDR("zotlsphozhehfpfc", "aKBnFYlvsrvjLpEaI") }, - { XHDR("zked", "OYojrbogCFyNYtprfOXaLGVGfhOAIMvqMTLjERvImSBNDJxVVZclUtowMbSzPtKZeguAk") }, - { XHDR("sacsa", "Jooz") }, - { XHDR("uyuujbnff", "WnnepQYVtqTKZBDFygdeghzaZeKnhKYWqVcSmV") }, - { XHDR("myfnaifwsnxxhgpzhesq", "mTTVHJFIPRTUEidrcZpGBuwQeAPXRCBreltzALwyCvvuGIqMdwAsLlbJyUzOYu") }, - { XHDR("qdikfqa", "PrsusBjZeOFSOleBJHnWlRNhqOZJllyLhRqKAIoiBkmzYple") }, - { XHDR("ustguw", "CPkaBVoZHjnMnFRVxWspYxfcmlUcKZPcChjBmw") }, - { XHDR("yvggvkbgdytaevziw", "eFGLeoivGYmHLhyFfQWpNYQRaiajqJHjgIgeGLheeAWrdsJcMtgDLvZhDxUWfCyDgYgt") }, - { XHDR("xprmekygxfov", "ByrYLfxdRYRIwpcrBrQZiToNxqjjAizTePaDUweKHVDkPwrVCJnSTLzIdQOlGszeBi") }, - { XHDR("mujbdvwgw", "KQthBknixjANJGUJQXZtc") }, - { XHDR("uxldacpqvq", "vYMKaRQKpZktJVJWFJzmgXubrlJiK") }, - { XHDR("ixgaqb", "tFPsgvDQKxxzOjalHCmcuUjrLthZkTmOuYtgKQCBQo") }, - { XHDR("yedypovlpnoscas", "vyvIxKopeSRTSVlWCuCrvVzIg") }, - { XHDR("aczoqjyknpkjaaopeiou", "EXoKErzLZDjkuDWzndDBrbCTibyIJNDW") }, - { XHDR("mjrufwi", "YtePWwTkhOUEthrHQTVqwlSaUftwEYaaYRLyxDxqCWA") }, - { XHDR("zyzvrlxcplqplzhy", "GvcCwNNKPGwXafiMMkjjDyzOGeVTkaWGkFBNAdYLJfU") }, - { XHDR("iuwrailwqsffra", "HxXzcMFMjAcWMnNBORwQlKvVddnporlzJRMjfgOnPfuJPEbysFYCMWUnQfmAKlRwh") }, - { XHDR("nyfj", "DIdMALgAgnWwzHSMHwxIhMERmmiKmQStATQdRbhZZVRQVAJtF") }, - { XHDR("csrmxioosrhhfc", "ExVIuVEDktDbYrEoepdJkUYtHiUXdeyaeFh") }, - { XHDR("nbgadbngnkjbdhsmio", "YLkFhqBXfZQKYQySJuqpvnTNUWaAfDxZzOwsoZSdSFLXKiQSIEpCzqh") }, - { XHDR("bfwqmtkxvfwajfnsmdxi", "IztTMYxANBvnpwGJGbFrTFJGrxqUMNkRFQWijBxSZuPu") }, - { XHDR("zisobcviohrwoyclybw", "nFtMQRRtAyFNJIDhafYENFHyHKiaK") }, - { XHDR("ae", "QWvyLAKhIULNkobP") }, - { XHDR("aojdkevpwrnnjiuqdud", "QoqVwUndOvFXgghXeCeKHOsRQ") }, - { XHDR("qhkomjyvfowhujlrh", "PwUrDyNUmPWiqosgdyJQdSjMUEpYDPzETKoSbXdCrVcscj") }, - { XHDR("r", "uiYnQcaHJJaWNCozdevgMdoyKPHkNoTkVRacPISespjRPDtrofjrfysCQxlP") }, - { XHDR("eayeaczzs", "dQGnOtedCkbgvMgCniCXxtu") }, - { XHDR("zdeyfbrtg", "SpekZabBAipvTwrFPTlkVtFzBQiGVaXMJnIYVpPibZGaxIIqtsOEHsYAUnViVZQbNhpAzaYYdu") }, - { XHDR("gorgmfbmbnkbc", "jySnudwsIlpiuzdXwamsKvHERhdksc") }, - { XHDR("mhklgtkxso", "FTyBAdYJlZZNlBOesBPsafBUZauUMqrrIotLzQd") }, - { XHDR("apaqssxkyzpeyaut", "kysEwsnLShgcNUMAcrHIWLOdjKSGERQMLXLVKAlbzeQlJogMptjOQxwEmfgsKZcqVzF") }, - { XHDR("vdhenvcoswhaaxu", "tbErfDIlHVALkXZzzWTrzz") }, - { XHDR("nyz", "HODbgNFaaOmOAiuxfPWaEDjMgAxHha") }, - { XHDR("g", "dMNDQxxBMAyJOvVoiUSkowJdouULOJlkLUuKMPJAYpfbHShRHAKpuhPDMLnHxuxvHGqKUisLpcPTc") }, - { XHDR("zp", "LatlNwbuvMoIToHVpYzOSpQsIgLKpgJGXzcPMNXdoPjFaqOpipM") }, - { XHDR("lipjzvofmzbaoynzrxp", "aVfoxxLPlPIwdWUoqQjQBfSonDLMrwfszWoRRzJZHQlYhVczMQLlhIYAr") }, - { XHDR("evcpdcgvlh", "DKkgqbFxnUbrLqQgMkClyUeLzbsTVVkGQbyGNQlGjzvZBONbdYvSWPtZPRruCSCYbLz") }, - { XHDR("dav", "TmTGJvHDXkpgrYaMKGrRieyapfcRLdLbNPnAqddjPSTpwVJhpuuOaiyGNxRfYqY") }, - { XHDR("zkvvdjeczstp", "ECgzLMOdxpfzuyk") }, - { XHDR("mvfyala", "APcHMtZHENnVyIdDWmXjRTIZ") }, - { XHDR("mibjzqnaoi", "XTejqAOLftskpLZmugkLWuQGxNRYnpSsSFnePwBAerEhLIsBpwKzSvzQrmgbuozrjFNDDycNeDaHPa") }, - { XHDR("zeuuwhfxgrupknfrw", "tjHjUvLnrTFshnwbIianhyxmpRlmAVVBgWTOivKhSOErBX") }, - { XHDR("infeqnecgjlowonkbpvq", "FvOTwAVBhwPBsUIGnyCKPThbsyHKfLVQdxYSGsiufmKYbqowFRizOKtRmuMllSQp") }, - { XHDR("lmkpjiihlcb", "RZVFrHysxvtxy") }, - { XHDR("ffa", "KpTddnrGpvUFhmquyLFhIWkbjFLSpzhSAEEPViNVVQoajkCiFDvDxpJ") }, - { XHDR("ouvtoucwdbeuw", "NLFRtaGqaTPLFiJUhAOxnVUVkQJyDdlLK") }, - { XHDR("jdcecqrocfwsvsgjpcpa", "JyeoHwETEVlytAVUTObiMrCwAeuNCzXFMFXixEteriM") }, - { XHDR("qnmhiotulw", "BRRYpyyEScVWfWRcTOwRsVWtrHOrcTHKwkStofUz") }, - { XHDR("gmajrciwfqkxxgifbqz", "lzgGVxu") }, - { XHDR("avayem", "emlHqLwuXMRriCraUocNJuOeXAGbNuIbn") }, - { XHDR("jcdpcntuydtjyc", "sbSzcNmoQjsLOqBHWmTibnbzpRyJquJEIesFgvp") }, - { XHDR("gqrtsoabgwura", "gfcaDMPZPBOPFLCwOtHRQHKZSEnXnXSda") }, - { XHDR("jr", "MavBjThOrPo") }, - { XHDR("dmsfowp", "IoIrkETMKsAyayNgqxcPEBkRoCZlCJLqC") }, - { XHDR("uwdcxylhyxhvytrrnkw", "dMaSoibUtTZmncwOHLrKXcmPdRNoPJKKcaMgVoogZLJZOpf") }, - { XHDR("yasouhmpknjkibuwqef", "NmjSOexxGHOLYGjcDnqRchdYnFNpIlhlELQjjCBSYsLlPD") }, - { XHDR("olhtxyrjmmaffhkjs", "SzE") }, - { XHDR("ordulvmpkrqt", "DrLrvavCRqnEuLMGpZuknLbIXYAmopJmH") }, - { XHDR("firgofp", "MeKMKbOINyILMHTprdFDJepfVFQXPLHdAufzoddu") }, - { XHDR("bdgcsgar", "JgqUAExoytCYXmcxcqstcHhMuaHVaDU") }, - { XHDR("olnicum", "kWGGkQKzXwQYgSTUKFYuBFEHmRwZmWZCMRdWizEYohBxZHMRHJatvYIgqcxFOBs") }, - { XHDR("ahoiqtmtgj", "oRyaANpgEEIUrqSMfGcacsZzhoBWTUlFGPWqcYAiZwHkruulUavhINEiFCBSSrpSp") }, - { XHDR("jowjitpruxmmxpp", "EBIjAgzehBuLCRejhrlJZVXooQNoXMfHwiiYQWoaduB") }, - { XHDR("bsoazskchuesn", "vJtpETkGekrLGABJwpPWbJseRqGDOfCJHjOYiHidCmZnFBcpEgmDIIBztuHHWHdnAzDkCYKU") }, - { XHDR("tiebffxpdjjg", "NdqznhOoSnxwcAFTAmrCWPPKuyICxyxFyNljXpZwOltWIjt") }, - { XHDR("xartzfzkqk", "tTcFypEGXYXKbfYQHqFmoHyrQAEuBKfYmfxreuFuJR") }, - { XHDR("ttuzkhezsvleudcm", "boGE") }, - { XHDR("rjtn", "LhQVtIjZhQvoAYFuUtDQbdFJHrumQZiHETwNveLyyfZqvycvgWn") }, - { XHDR("lwlkvzboqtaqi", "iCRmmugyfAYPkOkflRRzTUbyuxEYPkouZfdyrervERhQsbmOemYBzbvnYXhzZzDPRheZMZMuWKejfTfj") }, - { XHDR("yiylkfz", "vrSBVPrZkNQ") }, - { XHDR("gp", "ZzCTHJbflegnWzwhKzTbybxAyARZNnWUqWuGvVYLpTHrOFQmIAuKqRAYjMnvUBEyUFv") }, - { XHDR("vclaxmmlde", "DqpkDuOLaQRrTODJivscwRzRQejmKWz") }, - { XHDR("noec", "SReWUsWMCZYxU") }, - { XHDR("xnrebjgnqawazngnpr", "EcNmgETKHiKZdBPFpCCzEqxrHzRXdxvRBOTNvUj") }, - { XHDR("ybwpfmotxe", "FFz") }, - { XHDR("tuxoekcatrs", "EvzrimilxkrlzPndtSBVFCuUoEeqHvSyDhziuPkLaylusGcmSwbWFWkhmoqXzawGiKxokbQzlpe") }, - { XHDR("veatzgfhkgwfumopku", "GAZSrbpxTGEyOUgJrqS") }, - { XHDR("rhwrcdiznnx", "veNevTOtDs") }, - { XHDR("gbqdjkzttccaenckqebs", "VziSkWiOxzGKyVpjqoPhlipOGaJJoZfxIOyplBPAwkNFXzyvtoXDWNlHSUhVywRLoWAn") }, - { XHDR("opqzwdzfgksgyisgg", "xnqwqaejNrSjAtZEHELjluIzPCcOweSBBFhMTQIvfcFFdXEzitTSBkxgLFr") }, - { XHDR("ejeqw", "OudlWFJu") }, - { XHDR("oy", "gLHfElpXuLonImjiPLesCkhsNXxbQemlQjxuLUaC") }, - { XHDR("ziinpwcdjdtenrzyq", "HHlV") }, - { XHDR("eoqwvgewacnqlqmiv", "pxgxUnjaffVkBKXegLHOOxEOAuLEZQHexGdIxWbDOWSEHNEmNVefLHNUKvPpo") }, - { XHDR("rtjqlsegayqpni", "NONrZlFMCFfSxHCWEtfAalGpgFYypRISUFirDJOCoLoMRXyOnfrJBGdnAQqgwZePZSAYXLa") }, - { XHDR("zjpbfotrghlguvva", "bMOLCiCUJ") }, - { XHDR("x", "anIWqHipklqMnFFOzVXLoLBcOzbElOzcDjWlcEftzWQgAjSxVLmahxzSgsjtlD") }, - { XHDR("cuakroatyoebzfsmueq", "ZFXaiDMvRqdUsbfSoayFFzxVlRimjECWjSaqgxnLYxooC") }, - { XHDR("vuivxplhciovswrzn", "cQFDnFYfUfVdHhdDDYGzhnSNLVyXdnZiMzbwgUiPTApxHwHXsvASIUtmcmEFjxYjObsVSWQHTGj") }, - { XHDR("zvkti", "wWEWZmydVeKCTfrHOWewqrvjhRXCJYapsvQAGuUvxxwRdfCqneJAHOdEIUjd") }, - { XHDR("ashshptuaol", "aTQzJxlbUSSTraHaytmKVLfuDWwVpAWf") }, - { XHDR("myysxughhkma", "sOKceaCsHPcyUuMfRaBpDgaPJvtRuiPoAgmXzmTqKMnZGGnkqDLLZfpjORMbI") }, - { XHDR("phmveqvgbt", "sxihIBlXmizSalLFVRuzdgAhxrLmTVVZGStTRGDpTGSDjbiPHRxTMmdwKOcuHaQTnOzUlnuRN") }, - { XHDR("ckvxzgrxstzpqcqfh", "zbArsQpAqjTVjQCBOLXkvocKXXqGyutJnMSyboaiSRsXmHNWdSLKLPoLePwTRGMMcFPiKKwkQjVTtAah") }, - { XHDR("swqvafo", "QXehRZdCUgepQlbwaUzibTTL") }, - { XHDR("trogwmcevuis", "lqSjLvrOdDmRoKWGqrniGzOlnYUClmmwsenFsZnjabJtfoevwQcyrwlZnSkmcnqiBdKinh") }, - { XHDR("dgqzt", "OMBiNAtojJkByVSZaDmXwtJMJYmwsmKZjjKdOgzXIKovfIpYmZjkzMUsxmeGqNPPUKqYI") }, - { XHDR("hlvubmvibtm", "DvmBwcyHalyuqaiQJgTuTgtLBpSfcpghewJHVygL") }, - { XHDR("dddsspkom", "EJsaNdHQiPislYbstZhOvOSEcEqpKGlaG") }, - { XHDR("puhkqtnegsluhitt", "NxoBwgvjss") }, - { XHDR("zejua", "mAKJoTDasHTvAlVFiSJnDwcQfcG") }, - { XHDR("zchsexc", "XKLAQKSsxjFHoESsUZISAWIbOslTKbQuGuhQRMZ") }, - { XHDR("ozzdwmrkgpnd", "RftDSjRoBaGqIrCXAyheKZMIrILDzx") }, - { XHDR("ybwtijpyihrzyqecvn", "CAjKK") }, - { XHDR("jbqvxnbow", "xFeYBWLOJOYRHsOrpxydgNevfwpzXmrCECMhiWcMUAXUWDnNIaqQj") }, - { XHDR("hvtteijjigbkpqhy", "kcaGnoWfvZKuEvBWXOWcZTjGbtSoxzNopoKeohzwDFddANhMaYEArvhMdXGSGS") }, - { XHDR("wpqllj", "rzbp") }, - { XHDR("xln", "HREWQvGlAKHqiaxxLaBbHUGXYdddteeIYuEwCNJhQbKCNeBUNYsJbUoFkiLiGKJgbWTwEDLH") }, - { XHDR("rstoubrozulwr", "VVRJHoV") }, - { XHDR("sshthkgrsybgckzco", "ZEwbWOibkHOlbNpFoPqXXDNEcanduTg") }, - { XHDR("r", "jJkGkLUsiBlJsByznfnGxXfHPgDxXMQUyZtJRPDqXsGScAmTAh") }, - { XHDR("dosvpzbfj", "zsSmctoQpILvdYxUtYZeGA") }, - { XHDR("wdzshuhuclpqtgtvivzy", "fPgjGOMjkbEIxhBdgFDZXCIyxvOywfUAlhFoTmcyaCLTvdww") }, - { XHDR("itwbdpeufkwwjez", "PbQXijBAjihyWjealvvheWpy") }, - { XHDR("rumaeijyuzeiorj", "nNnvbrBRsvtukMOCHbbutJnzIkoNvvwbbuuJZLwMexdmeMHLBhMSVMaMFZdnuLoaGJpsBTVpmo") }, - { XHDR("ide", "lGrMcTYbbuefjFFscpWnodoOL") }, - { XHDR("nlatopcxcuhivfe", "RnDywMfOskbmPClSpAYTyYctIJGZhBhFYMHIbWV") }, - { XHDR("kfyr", "IHNKojnWyYrhImnHFYTuuymbKdnxKO") }, - { XHDR("gji", "cEmSAXQ") }, - { XHDR("hnm", "elsQYLAntwJlfGUqVrJu") }, - { XHDR("q", "sNtyhotgokZSgHUqnmnMWrYfasrQXjWcMuziWXSWjEfHZHyofYHfJpubPQmZhUyttTNJZh") }, - { XHDR("wbhsad", "fKOzaklqrZkphglHMSaWhOPzBxgUNkfpgEzPIqyjcMroacOOrmNbRsLwpeiIAgBdQ") }, - { XHDR("wkewtkwpspybvgyuuy", "FFOAvrCJHaqOFcUoGUvTTyPxrvxgVAejciVnZvvoCVAahGfYXnpjeoSeUwRNfiykyT") }, - { XHDR("ftytoywrgpur", "NeVkOhnejYWYJtOiNRiojCEJnnyTBqyELQFFxMgtgSpILbfiQcCCCMjFLziFavUBgrOAtA") }, - { XHDR("dntbze", "AsZIEMMGRsphvfUMBGYECgbzbMVxCozuyuUNkVrMwCNWZpiLCoyX") }, - { XHDR("enyarttilga", "tNZNwdXXbKgzwfJVlsTaJStMiXcxTGrLgYIzyJEZbunQebCtfP") }, - { XHDR("scv", "DrAQzTZoqYkWWQdOJBCubrCnVrbrGIorJEnwhayNgUVn") }, - { XHDR("snggmkibe", "KqYzlVpRFLwiWWCtfpkiWPMHnYWGpxgPBhTUWFrZJQdlvYANvKxbcWaFMDadAFmOnKc") }, - { XHDR("mroaqvyblvttj", "cjxFlxQuaXurjIxEcfYQAnJ") }, - { XHDR("nze", "wghtXfcgSgJVaLFZLFfjLFKcxNxGBPLMLcBFiHitHKAPUUGGwxbJXRvlBAtrzZXswalirOrERbNARhp") }, - { XHDR("zhgngmfpsweqjgvlvk", "EZlfzbBRpfrNtnsHVvqHtqYGWtWEVuElJbYejYOsaNMzjWTZ") }, - { XHDR("molapm", "BZSkvRiEgTGqxMqOtGgewtnRwgahsYQwtWCKjkhUbPSIRghPfWaUkWfazmKmnMaXWdTw") }, - { XHDR("ccfqyexozxtys", "vEgMfdVfJRnuxGudVsSEtKXPcOzjhjssIPNzfROHsoxdEJoaKxlEUz") }, - { XHDR("cg", "vwjhnLkQflcAxuMuLJTTlxgvPpKWNNBYojueogkN") }, - { XHDR("ozhvhezsyoettqozc", "HnZTgFKmbmVdXQCTPcfXmLhxCbmrJydAkeOHJQcQhMglGYzPNnNiVtUeDNw") }, - { XHDR("iorcmyxtbynxxuww", "LIZZIogVVJOACDEKlAYXqUnBGTDAsZgBsmu") }, - { XHDR("hxyqcrfnbqmlnglzkdhy", "lEVhnAv") }, - { XHDR("sjxmlawwveq", "unyoDdMzdfAcPBKzlBwivSDAtocftrKSVNpxKDMyNZRaLnICH") }, - { XHDR("kpmjjqqxrpg", "rOg") }, - { XHDR("kpysofrcwcaxwj", "dFQLnQICHeDNQsEQAIcLrPIBpAomJHLZfdnvByiQHILhZZXpGvsVSz") }, - { XHDR("c", "bGoEIcyCmuQydqeYVwRNskUVKdxRNuxSiHZmfPWcJNnyXruxqjUKKAKHgQ") }, - { XHDR("wtm", "TRkhJRGxlynfCAIjGJTHWGsRwGTDsDltiqaOTGvEjACGYRFxfdaoGeyFhEwGbdGQw") }, - { XHDR("hzarnrdws", "g") }, - { XHDR("ufeny", "AuRtckSNVvwLUmBcPLvBI") }, - { XHDR("g", "sxzUbQErdWlqUwiYsmWfZqpLEjiJdr") }, - { XHDR("mhmzd", "sOAzZRRpowUqhVehCUcdQOXtdcEKgUiJQFHujsVUKGBUkpwU") }, - { XHDR("aooukvqolxwsh", "cblOwcnfRFjZATALbXWmGvQkG") }, - { XHDR("vbxnzaeuuskau", "nMZTfwaCkjzZNxyXMpxqYbdNVRXmrNtOUJrMkVBFxr") }, - { XHDR("gbgxgdiwhjvt", "aXNJCmOOF") }, - { XHDR("mvguljayr", "WlC") }, - { XHDR("xxoohiggariug", "KBolBjJXEHib") }, - { XHDR("psnjhnokvdgtdunvp", "khRyqwvkZcaUrpvGLqCxNsLTFuoKMkRTnfRxzKETsCYbpmqqkjUalQaahzaIKXJMHkKfFvKCNLTglw") }, - { XHDR("mdci", "pBAsuAgXULuPwlRaioGMVUODnC") }, - { XHDR("jxhp", "bzdkedhDPPLcbocBLBojabZGBZgvdZcSFRkFetqYXrZVFdyjqLTQJnmQNtV") }, - { XHDR("jhlmz", "AjgFvHRtkegDm") }, - { XHDR("qmjemmwzmuabqrn", "UveutFTuQjksuUYQGksglgEoQBcdsMRWTziLMNXZEnmgUIYllcRZA") }, - { XHDR("gmq", "CeoAnBBWFg") }, - { XHDR("fonfgfcsubxzejqxjpc", "nCBvhCUPw") }, - { XHDR("huylymiysszlmqdctim", "iSneQVwDsJUWVTKHxeWOhYUJZfoItrxFCBUpIVqcfKGLqYLwMX") }, - { XHDR("owhfr", "XYBTlUkhuiVmKItpqtONSOWWlCrsirIJMAMDYdJSPMNHxwfDHsiQnBFSKSPcUVEHeDshzHDhXnneJzKQ") }, - { XHDR("hivnnjt", "jrRRNEKOlJXARFligVrlNixObgQKXPiRFgzbzCopoEnqumVJhKYXoUJgsbUVUiCyzbJL") }, - { XHDR("xnuxdesthlrcuaw", "sDaYYiZjRGepqcQwQLoAKcfWbpSJCINdcXdUibhGEDbQEoMyhyMlTkB") }, - { XHDR("hjl", "EVpPieRovwIGTWgdYMAwZpgEvIlrwxSssQMqIrLfNg") }, - { XHDR("mt", "XqtisNlhiCWbcacCtyUDQNawsoATYmOFM") }, - { XHDR("li", "lFuAbkWebLjpINOCbrPRdl") }, - { XHDR("fkzugpolfkcmeepbgec", "DSmgfxmBDVRDhjctcvzcXUPabLiHvomGxXFKGcZsTEVYeRO") }, - { XHDR("dvryyycvqbdvrra", "xZsLzpvodHZSPCIOmoMOdRbCTFavLQZmWpnXnFjiJxTLsnLCarTDxE") }, - { XHDR("ercapxnacbeu", "neLhNprUMDwZsvYobFdOKxr") }, - { XHDR("nvufrimsjgryh", "DRjyAtCFaFXHfL") }, - { XHDR("oyrvedfxykhzi", "nVzaIRVwWt") }, - { XHDR("ngltelzoaznyrkmi", "WDCiYZOcIDTAbAsOKYJXF") }, - { XHDR("yoxzspxmktulhzf", "dfdmqOLHusfkLCdgikStxZRrshncdNeXiuaYztZJquhWgkaQfuzKoagFLtxqxBXhWltVuJguMuW") }, - { XHDR("ikoppytcifcso", "DAqTFOlgkarfPmukXyphsPVAAsgYSwhvpucpLbYiQoNEAIVWVEfNVWutrpquyRSJDdRek") }, - { XHDR("ouhjbyeipoh", "WuVhSstybiXofqvLbEMTwTBjtNYrznnXWjREmxLfLtrkwIIlmUwaXsaW") }, - { XHDR("mkhxkhftngbp", "zQYGfmHcTjKocVtPKjgcGCuQIHrbqGJvIrOtMLvucNATwvjOEnavyBWPYGtTXoyUn") }, - { XHDR("zaieldwgjm", "symYUMQkncdlFBAgJMOOZRRwAOhcKFUfPOyPWvj") }, - { XHDR("w", "GTRhZPkwcttUjwbILmBqygvbjfOOlbgQwSbYxFTambSThSrzXSMmUykbKJDR") }, - { XHDR("mucfaorfepbyltr", "XUuiJrKyKmlmRfeLXDMGOQKDNYFzhGJLNGUspGWEeLVlnFAdORpZTXb") }, - { XHDR("vpaxgnzd", "kjcpoODvnITffpTTjsgtsJaUQGMZYsqMbCEaitFbeqFkMb") }, - { XHDR("psjzuegoaa", "FdCaAYSlUOLdzxRhVtCOmloYVn") }, - { XHDR("grvhanmsfhv", "iONeaQVjyTYuNJixPHuidcPpAalWDRBBzHiIpKGXIouoIKSNaFzYrByrG") }, - { XHDR("kyztwo", "HiBLZiiysaIJezPYRLAblfOrTHCspjFQwdkUilwJZ") }, - { XHDR("lxmoodnwhswrubqayfig", "wnvweDJCoNqsmECjcZVMxKhQOChnEZ") }, - { XHDR("ocghfrihlqjjvlhyqdg", "LnNkpFjNyzMqOJgDxENGKSFkoKoGMMpIdpmuIKWppoZEDmEQ") }, - { XHDR("qfgyutvtrvhexdbepqnk", "YkJnqGkMBNZgZzBxOsWzLojVodNviKJTLIZDnxZR") }, - { XHDR("cfvxszsgpqtlhxjtort", "WUsuhKWMaeLgZxZqvwxvcoblSLOVJAjBct") }, - { XHDR("afjvypv", "vobVMzwtRpACOlVOhecnBAfWFzDPVYGZOQTPxNxdZNPGzirheCZtApHiTBEqaRGH") }, - { XHDR("abqvooni", "zYbuQvFuthbUVyTcHKHlB") }, - { XHDR("fk", "TNZQEJSVMAxmXjNQmfymwxcRFXnssRDZgjuOmmloyIHr") }, - { XHDR("ijhddcgb", "kgHgHFygTQNEKANcKByLNFfYcDbaZJuanyvjEYiOJfG") }, - { XHDR("dgwzpbbhqkcnfjsgxdm", "TMMOwLhvTSgWVryOURlnlBzONmxPxbWtUJwGZAPgFVhvXGzspRApyjMneUnvENE") }, - { XHDR("tvpbwlncpmmjdb", "SOxNNWoqTdRInwtoxaQttDuPyxNlKGecRyjqkZiWNvlXcSQtiWOLaoVuEBOTzZQWYp") }, - { XHDR("ctohetjsjglzdgvd", "eHbQxbbknmrtnNhncsbhsWHjidjHTi") }, - { XHDR("vrj", "XOFcOE") }, - { XHDR("lawwqxhokkyhhh", "nkgmAnMNpwncZxzCJMEcypBWzqZGctiRXJwboPgXVuTjsuDUVGebatHZzwwJcTlLNnMBQmBGh") }, - { XHDR("vazvfmuzvt", "qloFbBJz") }, - { XHDR("zprkx", "oQYheEVXVFngHCpqoIekWvMUOCjTDLDNWJpovacNpaBeOLGnSqPFFXlIcwTCow") }, - { XHDR("jnzszgshktgxbyu", "MGbrPUyiWSjlGrVYVaZHlkAVDpmwxlmcG") }, - { XHDR("ayhkdaj", "CphqdzHsieSrowcoojNVCyv") }, - { XHDR("yan", "IcUfKxamUjnSdkAbPkcOWdylotsPL") }, - { XHDR("cldarmgifzqgyuajykf", "OUcgsnpWxpCJNcLkBxvDeNyMUBYkHJhYVaNEVhDzJaKvktKTaXrGBOsijIEgIQ") }, - { XHDR("bwoolhlrkmh", "pyYygK") }, - { XHDR("lc", "vwiqgljRkyYjoeEBncGTpaDcOdMbrxHNCzflBYkkdwX") }, - { XHDR("cyjeta", "CMd") }, - { XHDR("aeexvfhixeysxjgthzxc", "FQbpgzgPkIJiGdITjcuMsGWQtuJwGFSYVggKiwayvofRgbwwmfcTPZUwNFGtmWtI") }, - { XHDR("zpuovezcomscsqtjx", "JXHuBhecVKPZlajaArMNbaIMzNSHcJPlSGanSyIDJfFjbNm") }, - { XHDR("kyqjjyandf", "tMEAdCiv") }, - { XHDR("fhyqpxqfusttzwtsp", "yqcADGQvsXUlzNDUaOdnJYQLznAUhEbeqNquYeLcXDwrZAnUulhrgJjShKPlWvczqagJZMCz") }, - { XHDR("hmuuesmhibnqepql", "bvYHDqztDeDRNGQkyiqlQiRsrGgQVnrRQCFhSmGmLXEgLJS") }, - { XHDR("vvihfytjxe", "wppIFHfcEaqKYzTsRSGTFNKhdUFyGdWvDjjuOEgLrwQDpKWtQGmRIaUfdDpqbpjJZZbUWfeTANU") }, - { XHDR("uhzwjuccoegfdeofr", "cTZGpaLMQjCzOfunPkTMmJBUYcNdWYrTBDmJSxIWXRZiNo") }, - { XHDR("jewicxz", "MDjeslAiNPFvnb") }, - { XHDR("wdxpjhrsysihtvlkbo", "WCasHiugswjPpKEoFSecmtprvPOecmDpjh") }, - { XHDR("obeghemq", "LKpzjZJbeEPmtVGrfOkLNenKlUiiarVIFcXnhmzRFRfULixKReLoODyLkPheSRaSLsWgpCcOMRzuYY") }, - { XHDR("mznbvpytg", "uLaSjNlfoeJCPCiNojhotzRoVLkGvbVcdNwh") }, - { XHDR("uxhpebnreqe", "nPnbW") }, - { XHDR("cuk", "sjoxyOcuWNULUifjGnQgXmpmqdVXIRww") }, - { XHDR("zcvqhgrxdtlgq", "PCyaRQtFxmgqLdSVgiIpQBC") }, - { XHDR("bldkpjcdnmnpfemtejth", "yTaMLZGureyupgKShlhKxBxxQLyIsAxHGqEynRktpPXYTq") }, - { XHDR("c", "jJHqhwsihiBJAFVOZVrGqIXaTHQYhKAwdUxTqVrpRDuxJmtFarQAyLnuMSXqhhpMSr") }, - { XHDR("eb", "cVbaIlrKOCofieiYKQtsOvHKiydSCHmCSNhciYJSHwZEeTINgqDqRCoFoxs") }, - { XHDR("ppcnsnuagtfzdgisj", "PMZImyfPCqndJJjJpSDAWvTyIwQkcAFXPtnKvblgMqHNSkRMwszAcxMOU") }, - { XHDR("qnccbchrt", "vBcAbyrEZinKBlomVD") }, - { XHDR("hce", "QYSAPOSSdJDznXFaUfJbCDSzNzjO") }, - { XHDR("tllwgrc", "BAsFTDtiQXFjETNnKQ") }, - { XHDR("tjlohmyw", "lhzRznMJCmHXNLTfZteecafKQVWNrKAmeUGMOaWPYkQGFqRwCZrOdKpYIxqZVWxWRdyizccKPntfu") }, - { XHDR("xhpiowbbyfemwuyhyrib", "YGrOwJUNDPUxeRtcjIjnpzQxM") }, - { XHDR("tvahzgxvwg", "OomnZPyFX") }, - { XHDR("soyffakcxpc", "LprImJhQeGrEibEeZdOZBvFuxk") }, - { XHDR("packlo", "aHuVUguRQYrmdoQ") }, - { XHDR("mfdj", "qEoVhxGlwOxGjyijJARBzKvfeCXYtpBNlhbymEZUkWeQKDNIPPHFcco") }, - { XHDR("kzasfoaewp", "rGoFlkoKcrMPmHuVrfjEVDTroEpPIsorahtqqDmhWOQbEHOofvbmylxVEfEOYaBrvWDiK") }, - { XHDR("vgfuuyhj", "vEElpQQpOkoNkGIolytcCfTVWgoXSYURxzEFleF") }, - { XHDR("hg", "YuTafOQZEQbQXJTCSQGXlcHnkWNenMwakejTcTJPaWtjgljxMRpwgRCx") }, - { XHDR("pimha", "DBofYOdUBlLddVAQVIVayJzo") }, - { XHDR("ogfpbgusij", "nmwnjIoFJOSHHCcInghdgsEoJfFlIRxYL") }, - { XHDR("uhg", "MLQLqmUICzkMxRLvSmazkBrkHlYQdPHkpWiLzGBirBhsfNht") }, - { XHDR("gngdrykgmku", "JCYNapRIFiGgrheSHNPjcqEznpOMMlPsUJybKAksYWXNHAGZlbbx") }, - { XHDR("wshswexixjbbjs", "ffJnyiXgqnJxGucC") }, - { XHDR("tpw", "znrBZoPNltCrLyxGJqvmLllnNTqD") }, - { XHDR("oxpupxazamlhisgglr", "eGZBRGBphNTYJMbsbPXKQNLSbiYmYQUnJnvDtGltWeOLjcG") }, - { XHDR("gkjjrkxhzsvxwbznepzy", "vYTvYTvhgGloDSoaGoXnrLpdMzhzmiAdoIFPCzSyfZiyLjFHIhrvPhinHQbBliyy") }, - { XHDR("miwzuofttx", "IIjUXWmyzVmcqHrRxRDlINANdGvnMTgkZIxBKjpKooWHC") }, - { XHDR("lcndokv", "YhYFajmAtwdVLAAUWEIiCcVAXBcigvMbAbbJfICo") }, - { XHDR("kbn", "mTukF") }, - { XHDR("ug", "fhbbPtZqKRwFHRFhPVqvcbiwfbUwKAzCjoULUw") }, - { XHDR("vethcztddicabgeaj", "yJbAWLVvMatJuneMrPrlQvuxQVJNEMRYWHkeKwGgSJmuNsZxS") }, - { XHDR("id", "UfnjMxMbBhtZKaKNEVcKhSSLwupRZDoCkMfxOnYHJZMpD") }, - { XHDR("frkjkhmjbqo", "DWKgaDbRlyPsJODwtTyIvCmBiIijlzmXUqWXJertDmbKlEIKovwsWZHunZigWozxMoTOxjw") }, - { XHDR("zpqwb", "aZTdyANmagKGRbwSv") }, - { XHDR("wpz", "KwWzsZeOhVwrfhdEvymHNWxMcFqkPgmbpcrUURoinLOIrARUsjXQevnwgjMCQJSwyNvcwCNkX") }, - { XHDR("ossszzmqiou", "tJEyDzqajAvinVRbTErSZNbvbOKCPcUvqqAtxQOGLLGMkTtBCQtmBWdSwLsfwY") }, - { XHDR("bfqhoggqafyrpkmrrilf", "GFzEBNMTekcGylbDLIjsgAppNcNvkWLoelkZlrwenvNjMxhEZplUdXacRTYzHAz") }, - { XHDR("klq", "cmMaHQYONsxZFhMslZgxPuQSCRfvazZvepTBHmqKCPLsnfqSwAl") }, - { XHDR("wojytmbhq", "AiTdudmKqZaUfeanIAtvTBM") }, - { XHDR("jdlgevgr", "KRXoMyXIemfwSmi") }, - { XHDR("dkbeopogvjnvcdf", "pwhkWxzJswCtVfNdqzyWBBfhoJPGQGwLkXbHbHBjCRWUwNBRxyRQhbXofwKanKajVfAaMYy") }, - { XHDR("nnbnveqzjoqtc", "OZE") }, - { XHDR("qzdigfdk", "IuXopaDsXExViJTRCYWtGeXCnNbTUWwDXSVzfzRnEdfPs") }, - { XHDR("psmvibxzufmvau", "RIXjAcZrryinXnfK") }, - { XHDR("i", "yswqHiwUGBJCuYtEBQDsVWUwPBbbbBDOCNVygGKAefZdlbepUXQoNboihFgEXHwYn") }, - { XHDR("mzl", "xXLlILsDW") }, - { XHDR("soldgwlxwk", "tyVbgowOvJhbVyGvqvXLBuISqHdCUSBXzVBYFmteXVunIfQcaZHaKCtIxqngZovLRtBlbKN") }, - { XHDR("fqjsfryhyfzupn", "sGoaZDQwPOxwhkYcGfrnRjanbEHjyJjRYCzvkdrmljwC") }, - { XHDR("xnyqtcdrqupnqzecrtfq", "hxjhtIsKUDC") }, - { XHDR("ibxcmyhkigklmej", "MVRBdOPXvYTADQGNAYEyUvmdyikPSlwcDZPuhzwTEEHsRUCjUaHLhNrbsAOyPgzcROiruGSwYrPYsYr") }, - { XHDR("bx", "cLzovQKXILVVrnTGxVNSNxZXMpunQJIrsTMAyrsgmdRipoLrItkBRsuCVPaNMOlPMPppTAYbhRKRO") }, - { XHDR("ydhung", "nUgSaPUhkSfYGLgKYCVwaSwpaaEYKWaZUuceohaMgxBZknQECmqnjeHGUiFsUCsljEWg") }, - { XHDR("k", "GYYSAeqTNZsVZmbupjcLMvaWGiWEnMLLuKvGquHQm") }, - { XHDR("bvqexejttbvtcgm", "OOfDHrZnrFQQWFZnlqfKQXkyFcX") }, - { XHDR("ostomzibeivxxry", "vbgDZ") }, - { XHDR("hykjujpsvyguvmlse", "DUFuNNIZGrkivEJbNJzNAAXdkKWrdrJrrTMqPjjvoDymKnFYXizMmtJUae") }, - { XHDR("z", "IIHvhklrSusqulsQxioiZCXyiszmzpokvRNKzVOuebRaGfgBoLPWHrQgGZAcpXkNOxyeERXzozBnYB") }, - { XHDR("jvmeshclqubhrt", "kVlLRTaAVkaVLXKjgqpYOjaduaVTmJvkmulwSsNamkzDxGGqxzdZhBbjDPZuLRRFxjfZxmjqkWfRGVNw") }, - { XHDR("nwceqvulvfswwsm", "jfChoohuIrEiBvGMypHcW") }, - { XHDR("gkcbclllqtauejbey", "tPgefXsSvbzNOtAdvdcgqEbMpNiiPdpbXHsOkZSnxQcBSkbonJVMoX") }, - { XHDR("hwyqy", "ovYkdUgCoVwObEsY") }, - { XHDR("cczpkmdaoh", "dvPMXdLijgNsayjwNPZWJDHGCNvLsrPAT") }, - { XHDR("mdiw", "m") }, - { XHDR("lgoslxiydclechqgqgn", "KrLnYR") }, - { XHDR("mkhgfsuxzumsdwfvjl", "piZpJKPHqnIRoMygLimvNPnreYYLuyvPm") }, - { XHDR("mnzlwe", "SVZu") }, - { XHDR("abdjytwkxaplpf", "YxfckXTHwqSOcJyaihQioiHICYlCafMYgKTHDkWxsTBgVTqvUNJDDtAIXGNdHXDgDRjwO") }, - { XHDR("nldixxgzq", "aDVdQotzVgXVxYykXjDTJgaqrmJDsEOdPGtiXzLtrkCbjpQ") }, - { XHDR("htnjxzrfvgqevkdx", "mvmNABxFywFeTJZAZMvX") }, - { XHDR("zmhumrsgbweefeekbwra", "cvtktHuVBTnaCHbMiSRbsgDejquAGrfEXq") }, - { XHDR("ewijhwlsynonef", "kUxhnrKdOdZCcrxSTxoLIaaCgd") }, - { XHDR("gemvemdmz", "rHYuJYCGzKLnDKQlXjskyiTFuuMRQFXpmyYAAkgyTBa") }, - { XHDR("kwyieg", "qoil") }, - { XHDR("hfdveylxkdxumdrmjfkg", "paCNLZYOsBCbPFmuPcAonGwcBkEdDJTcIA") }, - { XHDR("ruueb", "eMwWAXlTKrVOYTxTpHXpSeLLEZNriYToyTVGCmPYDRuaOmAagiInwYoihXxy") }, - { XHDR("eiywkalzpo", "sghjIreWyaGgkbVzAnDxeXRXQSWQTyPKHaoMwYllvYimxrNHMrQQbpdczpCoD") }, - { XHDR("wfdyiqocfo", "tjCAkdwJEsdTAxUfhCjcCqKJcRwBrgCdqCSzcq") }, - { XHDR("xeocdnmvmybpkpk", "lNhwBwaBEpuiAnKzFazMvigsLZszhxRUVrdaIEXAVIkpjsBm") }, - { XHDR("tshxzvakvbkpkb", "rUUjoLdSFkQEFWZPugjPOPbdXHdHEostjKgIsoICqJgVBbRmqXZCAixCEFRxcLaq") }, - { XHDR("dkinryhclnfqyca", "SwOMlEbZWCmcdvaWYysrIsRkyrLLLXIWKaWXfMxFkuYbLfzH") }, - { XHDR("s", "yKpjkhgPBGleJFtoEgjHunpoLcyVEBFFjadFfWIscPCXnLIdyQjzqdELieUhAcjfNTYyOLeQrUaIIIH") }, - { XHDR("kzhimcmkczwyuleht", "lwMFGZrrhZDDY") }, - { XHDR("m", "veZVQqrPfgoDPHABKXWRuhPkTI") }, - { XHDR("kdgcp", "eiBEoQgOpknPsqzXbGEIMrnnxvxcKAoJXTFFrmOHuLCMOpAUTiWmSeZSqQkmvFoQrm") }, - { XHDR("oxbdzhevxzewd", "dLBo") }, - { XHDR("ocpmmfyashy", "WlUPVttiNgimYNyTGvsNIhRFzyHWzwhDHgdPUSunINGkkuApfeAhKHxZKxCVnQjcHNDgtfVp") }, - { XHDR("jocdwmxdvqy", "lokiCSJogzQcSzvEZMfFwTJarTYRkQynPf") }, - { XHDR("qofqyivntzcjk", "hy") }, - { XHDR("fljwrpbrojgwednso", "ZniMBBuFMxCKhBAQWKYbRWWnsymADzytlZbXTcPPXaKTbAlyTFVDmQDlPGQWoixmhgBzmIn") }, - { XHDR("ktrkarjgkgeicbj", "VeAKbGLPeRhhAUghuhU") }, - { XHDR("ba", "RfPynZrBhaUeqaMtRqCFKSQFGzfZjvNzBfgCDxzCcHwqUootOaKitMkOLSUsEOftHcZEIZQhEMG") }, - { XHDR("moyxiudcosxhluflfb", "MxvBqTUUWzGtuyaorvdBkqXRQrxfIpRSttf") }, - { XHDR("lpdfstvukm", "BPYHaiDrXaVxXAZgtUJoOmUameIfCMlUczBxnyPFa") }, - { XHDR("gvrndemxk", "naRWAiCweaHpGzOzVdxQrVOzJGzWAnOCpgbhASNjTYQvKpmJMnXYiLtRRDpmR") }, - { XHDR("mrmw", "tDllVsxxilbyfLFpWixHfovpRCeSNCprgKQVVp") }, - { XHDR("boirbeuuexhhqekoqpld", "TpMMvnKpYHbQPrlqclhsVhSaDEUCbwvDbK") }, - { XHDR("nceibnsnykzuhfgif", "AuGmcVFjLvdZfzvlAbqpIfcszzbSPRkUAFGNocaTGeCjEdFwxITZuYqrcGFglEeKdPvXhLBy") }, - { XHDR("wvorpjpdspuytsgkj", "FfbEbHFeiPQBXAb") }, - { XHDR("wpahpmnmeynyeuvz", "mNHRFhOI") }, - { XHDR("howhwxfcxxxekxbpdl", "fEZKTVDVXBCgyDHuhRAnMRBGnAmLhWGCawPOVPoTciCkbMhecQCD") }, - { XHDR("bmmitx", "AXMZocoXiASjezNlaEzqiEkOgkVSKfvFrhtwtwwghgwLtsjdvnvtibEWMhoVplMjyC") }, - { XHDR("vdkrhrztpx", "qbjXZHXNWrfLTJYJBxdv") }, - { XHDR("wqdmckiqmvo", "VxhnexEkhLAsPeuYlMgdtmzjerrGegPifHIlmeLQHYgbRqdVpWSipFACEMhMzQ") }, - { XHDR("y", "tLwMsK") }, - { XHDR("fltpuartr", "PqbXwMxuDLtqPrfmTb") }, - { XHDR("ds", "dDIeaIo") }, - { XHDR("ugfbmhllp", "VVWKSvXvKuSUGOOXaoFqcYMVyf") }, - { XHDR("jqoufspuhaqofblnez", "vippxyDsaQnvadQBfbbntnXShyssjMhjGvYPTegNGRtICtuirC") }, - { XHDR("wlymrrbftxjrhqmgd", "FFZPGSDYcpSXcPFjhceLNZDYBiEwN") }, - { XHDR("yqpijcrrsjimq", "zlLuZTXcgdzGYmOHcIfRHWV") }, - { XHDR("zvkmohuyqsehxy", "pZLRNvHALJLreIlWrgqLnEkUIggJmmtLQJJnUnhMTuIidpHbucsYdjeKWZvTgeacRGsolTSbhV") }, - { XHDR("abxfvnlwhyoz", "gMKCgzzOWMFpUTempaGWQhrCDMiNVpxUgegUcmxCItG") }, - { XHDR("oivwemz", "lwYHanTmlmeWCvCVHFlOrxzYBgdgTl") }, - { XHDR("fdrrqmpghljv", "zFzpGPNVSeKfVOoaJLljMXbwIwqURlcqvJjwCb") }, - { XHDR("fs", "HXNbnJBgfkpbgvYSmgGmVuLZicCHfOMKUQYKkYnHPbfnnwNMrkrmJEKtMZYGzcfu") }, - { XHDR("bazulgff", "rAeVfIiNJCwQdOjDwtJzRFDFWBpfizKipdaghGoUuACaSRQekREZzBvGOScYnFqelktbQyUaCOLCZVE") }, - { XHDR("j", "fiRktEIupFUGxyLfRmdfZIwPxThlNtAhSAsoaDhSNIDTEMFDjtogeUtoUKlmgsxNSddFQdVTyWNh") }, - { XHDR("cctlnkkcrkvekmehpjxw", "pJOUgonOSuNlSvgDvVAfIBnrMnwXJhfpTRQeWEwwSkYMqbzRuwZAywZMRXdRtjBqazjQLcAATlFwg") }, - { XHDR("ebtscpyigug", "mfQMHG") }, - { XHDR("omwyxtphftlfwk", "KOclsbGkaZQwOcRyQDhAHIJVMJeBUpVnZkzyXWhJxbaxGgiIURMGMwPYLRpyJmFYSOolIeBqpTqhzSKg") }, - { XHDR("msvxcmbu", "TxFIWFRENDGxnJCCKLecTjsHXjiCvUYJTsIkmMhRamYe") }, - { XHDR("mmakfzebapx", "mdVxAhvcaHvfzyDmwBoKIWBRJdkfSRjvkLJSUjYWqmfCNRUBLIdslrhsaOBYlIEvnqy") }, - { XHDR("yjhxyexrkuatkdg", "MPdQwtrxdVabcYQxO") }, - { XHDR("yluvavtkvnluhdwnrzo", "se") }, - { XHDR("xbfhwawjqrygmrmbxam", "QTpPbNyUXuWa") }, - { XHDR("jn", "oDJyOvOLhna") }, - { XHDR("dzejdfthnflvjkzvyp", "KeerdUWbSVvPqjYjOPYvPdmVBAkGhaGOPfDYyZjBYPECEBDiyQvGxRXwqGG") }, - { XHDR("bdxholvxbxbtppvm", "QESWISNtiYAsdi") }, - { XHDR("lqwaqw", "uGCZiLCzxVAovrJqqLzJuaTgxdsOmPkQFdUccEhOcEgAaMhVaKNkojkpwlQDWavjfRqUz") }, - { XHDR("oe", "GFdfyNcIihvSbQfAddGCNmVrGEpZEidltDBBfAxSHhowffBJlGMZHSlAuGZFGJU") }, - { XHDR("vlznayjdqmb", "OhTvHnqMuASAqEHwTBOyvsNxijBsawgellnhhEffLuJhsXHZ") }, - { XHDR("upkmo", "YWCOTxbVcEIRsPAiluoLwwghQgWegTpfrHERE") }, - { XHDR("daivd", "ljjpYhlAviXLSXbTzfGlkjeMDRAPBVQqMQAKRPVaMeQucAKiFdMdYIl") }, - { XHDR("g", "tPmSAPHovhKfvMUEHmPFNeEeRmnYMcnl") }, - { XHDR("gmjmjudl", "uXoCmmznIZmXsFWEhFbmHkfHNVDSKsQoohfDJUXeKeBjCrUwOJyUwQWJffufbOosDGENbepNrhNibFw") }, - { XHDR("tzlwnugpa", "sLOGRQQsSKfounNpeuESJchtOVAZCTUZnCvpCZWxwaGxhsJXjuYuYDiSbZRHbJQOFJhnrzwcsSFxfc") }, - { XHDR("gtpknmeximfbhlgzlqk", "hKAqBcrJKmr") }, - { XHDR("ulsjx", "ZNIXXHd") }, - { XHDR("vfbxulbv", "gupIVKeJESBmZrGpuvXZzdLjJjSUCtbkyuUuGOZFAnGoKoiFYaazAKa") }, - { XHDR("ffumzwjazcfatijn", "GBxjVDSBchNquDttHRutlyRObtJSucCUbgtcpuDuZrkrbTmksBEesSDQIExkYmsUo") }, - { XHDR("bjojohlegsuppveoyxc", "MwyWRVHRnbBjFuPgKrdQrTXiYrtXDKeUJDXiMiJplgvrRQlprxJdcdGehggdkspFSOmqBdQXbYT") }, - { XHDR("veendj", "pfAGZpLxDVNRKIBXgIarGBZJkLrQfz") }, - { XHDR("mgsiryvpyl", "xulkTvekhskctwCEvnaTiqPkyHTtqBRxHMmQzKLdmePFLsitwM") }, - { XHDR("cz", "vsaxPhV") }, - { XHDR("fwxycpjyua", "mHpfCuIzEj") }, - { XHDR("hjafnpfmzxuurytift", "NWrUwUflTsGfhUMfKuxpTWibhWytsrNqiwwWRRABKbckGtbadDd") }, - { XHDR("vjeachyb", "XvYiHtEXQerWplyWOPHJTTckbRRWTodTncyJCMZigJ") }, - { XHDR("ufw", "yrlDwEUjKogZODGpOUVIZEnnLhomENpzNNYxkrgKdYWvCeJoJUDkpLRQcJYnGSSUATprdENAdxZiBi") }, - { XHDR("urdey", "aeDIMV") }, - { XHDR("eryhoyvntaj", "NTRObNiDoBbeGcBHsQzFMPrKZUVzihvpwxVufoTNpYMmBWohhOwVhrBOhtMilTPLCKThVdXM") }, - { XHDR("q", "ZbiqpqjxsulcSKsNMGxPplpvXcTzofBLJtbtGtjyUiqvpXMeEdhSICUqvpzIdmMbvrQlMZSyxo") }, - { XHDR("mlolappwxasgljuwv", "qMywvNQSVjgzTWTbPbByIuHASpRKRCxNSeCVLFKcVxQaqDSYxovnzdcHqQuQvgiLba") }, - { XHDR("hultc", "lDqmNPacR") }, - { XHDR("vcamzxf", "omEiJQpaaVcfygMobKSePPIsbKiYDcDVjlDEcGwhsGbOk") }, - { XHDR("txmqaxb", "ZRJl") }, - { XHDR("rzsg", "KXbTmijOjITeOprVndXKYIPwqIHEXrlPpvsIbPCaCYJQOZ") }, - { XHDR("woo", "chjGipwKBeQOSgZILLhkjfuGxSoJvAaHbLNrfnDXRWavLLMfSSZjSEiqSksleiOgaeVsUmxYEKAkHcf") }, - { XHDR("fihlmhq", "kJJstbMpAcxETQDjNQvyDPGRLBMOajgRKOtqiUbSPtJXmDGrJZCTOdoOusYXUH") }, - { XHDR("opzzeieyfmfhbbao", "STTaakLtqZKRxlZlSKbIOellFvTXtXPqbccVRfnSKuBQBWxfHoE") }, - { XHDR("sowuedqbnzqj", "JxmFJHiOUyCmtOxjcNnfyUTzkWSbbsIM") }, - { XHDR("tvmcuunmbt", "EiKfprA") }, - { XHDR("pomzrpprbjksbezccnp", "peVsefKSbcsrSyhzejopiGYUvTkt") }, - { XHDR("mheqagcuilymhzcix", "BKebHWhptxBQwyWFiQuPKLnNAAiueldGICXANwyqLXiyz") }, - { XHDR("nzpcmyxgyn", "ewAOPVVwOUTYFdWDIwUzVeAlXbBsXCFGJrgsZJaGzYsMRlqeBSNuZvylEenBhThhNpwqooFwYNbMhK") }, - { XHDR("kcxfyy", "AyGpzgtU") }, - { XHDR("gbzxhvhmzvc", "cNMolVWSFwvSmfLFzbsU") }, - { XHDR("aedkl", "GjiQILLYyEdbiLQKlVeClqDB") }, - { XHDR("xdjtbluzbqjgmrnjddkv", "jyBYXQRaCVMsQlkxPdJhgMRukOVGQIPTypMNXNBNdivxxSesSEhORIDPuVnHDAEdPC") }, - { XHDR("rstuakmmfxexwc", "TMgiGlOKTcxtYXqofNCo") }, - { XHDR("vpbogfuhinmpfnhziojo", "iNAAh") }, - { XHDR("jdcfyfghsmtufe", "YbgFXCaNcZDFWPeRwdUxSFioKzesFvGMbwPRpWVoQeCAwYHSSsANqo") }, - { XHDR("ezqum", "BifNvRnflOMghGZdHyIPdiuZYesqXqCkoazqPxZOTqyrljmVSfRnRD") }, - { XHDR("ymorvu", "FcBaadPYpIoDSKECbKISMaDPqzmYznBiIqnzbboeSFOfaniTqnEvmGoFWncNzkjqvexQQR") }, - { XHDR("vywnznnnqvj", "lXOzHJkJsLkwausUCakaHnvkmrUSOCPFQESfKaVK") }, - { XHDR("byplaievzznhfby", "dAtEpnkTOMcMffzKmSwgOGuuGMUTWKsKfjRlrecwcbpeTlpqRSUrwvsJOTxrPLCphIvUJP") }, - { XHDR("pvjnfgffbrzzow", "lwxhVmgKBwTWJMQYHHnxfhAYXtgVTOnYMtvaPkRUGpNTbrerko") }, - { XHDR("wgnfcxqkkdtp", "aJDkMkCzzseFOjicYGZhVIkdveFkeaTvFvYdVRMzhf") }, - { XHDR("dk", "BujuYApSCLpEhpWhrkFLOmBBzppNocqsapQqxxsrxweqt") }, - { XHDR("hrlcfsezdwe", "GCgQEueDxodtinSvbRVoOceMBC") }, - { XHDR("aimkttf", "MyExVVzCYNBohxrWFAKCCttOUtFlkXk") }, - { XHDR("ox", "oAGnCGJnUoiSTZkbBrEfzfQbIVOJAbVPTAReEJLqDUEJPeBJnaCkkTutdokyxZ") }, - { XHDR("qhcfbehgkbwfovyvbbih", "TjbnkXHaKWBMzBlVgxcIUHdpmLkSiDzuhWEIhXQMKrG") }, - { XHDR("nmqdxt", "KCTyElFQbhZVKGMbKXXfVwRxvINjwfARb") }, - { XHDR("zwvmipin", "vVAMkNCbcSjRpaflRHQEFjzBzAtktWGXiZXCECdohkTNjRTuZ") }, - { XHDR("cvduqvqzeplhgsfqfrmv", "KCPhbGwEbXnkAvXkylSV") }, - { XHDR("lflvs", "cKirvXerYHkZMdaWHMxGJgPCs") }, - { XHDR("whxqghrxfdaqmhxrsvc", "pqziBiBDIddgn") }, - { XHDR("dqjeuy", "cwGUvnbGelnU") }, - { XHDR("msctrcmpfwljl", "ShrDACGHRgErGBubrixbRLtSbQilceYJPSCdrLthiInUhaoWcYfNUI") }, - { XHDR("twcwmpvmrkx", "exBNvznHKRiSWzRYreQoBxuldzewJrKQKMXEVZSQQvfIAlHBBfBPyRjf") }, - { XHDR("iwlrzunudlvk", "WoCkUXRvojfaUkobHQxLTMbLQXxjalaqpSqqbWSBCWzvzzWQdmEnEZvXk") }, - { XHDR("ewbeqwiqcqwqyvizylh", "UTUtrwzAWoJSAlWhdzPvBV") }, - { XHDR("rgo", "DDdsJATmqIfAJbsMPBgRGXRKLMeSCTHqWjdOZXPlxkKQuyGtvgqZaPXePYo") }, - { XHDR("qdfizjyimvtocfupa", "VJoYraBaKUbNdsjODklrRZbWRcxIQklPV") }, - { XHDR("btvmassdsmrpigb", "kDMylTtRyGplXxNtOaDi") }, - { XHDR("dwrsdxraqlxaqyuaqud", "kzvfSDzuXIp") }, - { XHDR("of", "Qny") }, - { XHDR("sekhwgnctazjzhsu", "OdYnKDTVsEJAwkjpezU") }, - { XHDR("olaebqspmqze", "g") }, - { XHDR("dm", "SFNqmdUdhUPbAMUdqxCCYvEhZkOzabPnBBoKWdJU") }, - { XHDR("bywvqj", "bEGMqLKeMtHpmZxWONdPuBWIeqElvjHqhtZWZTfecemUxFTdSAyVdbCzSpkdIfbEdcGTNFaxksDuhNEO") }, - { XHDR("u", "SDfgevnQOiAgvczmEctnECzVyN") }, - { XHDR("onpjbfexikrlnmbmaqx", "AxlNytNMyYHWSYMaGhSBksjJMicJjxlLkXnoGvHBlRtSTsttxAoRpYVmrnpYvPJdeuXEdSKJt") }, - { XHDR("xrqsuhyhxyvqd", "KSeaaTRaQyDoVaVdmFwMQluKiGlxonmbSSYnUERIwUiTREzrJlrTdkkcpYTCJgOaJLVoOKNibDiys") }, - { XHDR("ctifyaghdjvscqkh", "PYYFZHCViThHFtTvSHflYmzdXtlLgnzdarNPfDQgfTZbKuJLhpFtGzyUBAPlLpmmiMWqY") }, - { XHDR("tuqvspmlxhrwxzrble", "fxoJAgtyXcgDzJztZzXWJXDFKbuWIgWMryRwj") }, - { XHDR("vucgbjwgmmfih", "wszRbsVPZdEuHFQbtakdbSYge") }, - { XHDR("olce", "kijyulXkXwMWxibYGFNLZOyGAPUVXgruZNRNennqFEkjUbFXwnwulOiWKeLPtGDWDGGiDhjiYmGWO") }, - { XHDR("fbbvzdlhxafyykreevt", "ZvxidlHFvPdKtwgioTaeopehQjKAgWurLOPrMHrJXLMfQDOSXHDxmhwUPrXDKeMfECLCwruIqaAzkMae") }, - { XHDR("ghpudkxhia", "GsWWVTrZdtKjMXBQUHOaAroXFyiazGbNfGeaLpTmcijWTp") }, - { XHDR("eueeijkprkpjisqigz", "eKIMfFGmTVbpYYHFnKrjstIrIwbnxAoitKCmSiOJBifBUY") }, - { XHDR("qlsgvntmxqdjprw", "dwYNYbdChLetm") }, - { XHDR("xqjtutvw", "uigfDiAdvqwShgzEcAHhlIWcsHWgYrjxaIbXstbxuQAOSiHnMkotzLDBQVOYmb") }, - { XHDR("mjfsvlgdwjuhjmotzgqh", "WJByljnyxhqIRHGOQiIsDvuTodcHYirIkpaznLYxfnjBcugOSNTNkrViTetfMyXTaPr") }, - { XHDR("wiwud", "pWJZIJPURbakvQbQUoDhaaKwAnxxUCmGLpYtqLFevFaiEQIOqsHOTBgTkdnfQoFONLCZGUrjd") }, - { XHDR("xnajxszyxmqweughqpmc", "exyzjgdFaYwlqzWcOcTDCWgYiHcsJ") }, - { XHDR("r", "PvlmDUXBAaymHlRoOiUTUxtrBaUpZeAxztXljMPzokmpAmVtkEMcVpiykzxOjl") }, - { XHDR("dzgqhrrivtrnnne", "mqCYvedEPtfQbROTZFpBZZYLvjqlZDfZHEeHJlztzcJRjNeeWBEvqKps") }, - { XHDR("knxamjtiojgme", "RQYjSKWZffzNoGlJcDZuzTIrumlCbkMNVCLDwcCfjVMkahLFR") }, - { XHDR("l", "JnKbEHbCAnaHpYXVkuDRlSekzdzDjQBWpVUWZTUQs") }, - { XHDR("ifytgojlrbragmppdy", "DdITasMamXhCPMFvHZFWAczONgvAEIiKUdKhDYCeJLONfiNGiPNBBUKGnwpTmYadoLg") }, - { XHDR("j", "QStxmgESdCXZxaICGsPejjvscKBBRzXtDxKuWNtqSpkBhDLhXBMFRgJPiuNHTojJltq") }, - { XHDR("pxbdy", "UneGVsVoTNnlBHwpbNiwqxEJAAcxoDjjLspvQrVQWdv") }, - { XHDR("ttpvp", "jKNbEHJmGAtHyiVnsCftVHvJAcMdTrYmPPMgdMirjPVYbyTBfOQqvkjCINcPvMQijybNvkayGg") }, - { XHDR("iibmouzoid", "h") }, - { XHDR("p", "WUmFqXWxfCmOqGYjEHBAMhSA") }, - { XHDR("csjaiyvgfqr", "MjpHHKeybbb") }, - { XHDR("csnwvjkcd", "LpNmFMGbWEzXSrhlkMTaoBpMMSukCWhGDblpzRXMNcRybtSFUbsNIHM") }, - { XHDR("tupa", "VdVYUWhdlJTRvAPPSVBXUGLfjeZJeZpzjxwG") }, - { XHDR("nfwnicq", "coJjtFpHRIkqkPISvnahJQBurccZvllqmyB") }, - { XHDR("hftnlr", "yIvsIUhavsIVpWuCUHlPODTEFFIMTCZbqhtkbCwIbvLfAqRKDwvAHBXaskXJGRHXwyLTBjpSjnGR") }, - { XHDR("kivbrauehklourgotssl", "JaDAalIrrwtRMLSWVPXPkxpBWLolEZhmvkVrNTUNovjJJTRUtT") }, - { XHDR("pwihnekurqdqwjjgoz", "LtjaRYuTXGQCvG") }, - { XHDR("gucavhugnwvu", "fGbvHYxgJht") }, - { XHDR("grxqljydsfphpnc", "puLMDQUOXMygerWLqEGlFisywaTquiFFZInPGRIVlemgrA") }, - { XHDR("sckgclkaxdzok", "QUkZPlegxVHMGhfDdyKXCitDkDnsaeZFOkIFdWNylNOspQAGNnAHyaLTnDfTUlplfpHz") }, - { XHDR("iswzsfhqnxtos", "axYXblgoOAClPyeBvSOvLIXBqNscrIjGPEtxrPkxiDEMeCxuCsZCGZ") }, - { XHDR("lgoljsfrid", "KQVNgcPUnLqIsQqEBNsgBcHcmXGgerzbyzUHaiGmWCDneRDXMcCPMtx") }, - { XHDR("t", "tJCKceVzgguVxRzSBRNCJPlcttRqiIHghZmSWUyzuMMeonZXttnjFQumOKaQYDQJSvnVJsdlAiu") }, - { XHDR("cmwwbz", "DalbtZXUioTeuDdxLpekhEKribAPsWfsiCtJJsVOEDUAEgErgXqQplBp") }, - { XHDR("rsmgxe", "zPsuyvopzESCptjzeVcaHdaLcvBFCwadaKMqrzmrlydJ") }, - { XHDR("cckwqxy", "gVmsHTxWYTmIFssTyjwCxaGPMUAuIAQrxCLhRXQhfAQECCYUYJxEfiyxNhJUAZKUGQ") }, - { XHDR("wjfbxtmgyaylpdmcobcc", "RbYpKIHFJtlJNktnPNsYFoueSoyMPWDAPxSaFJLbHuNRDyJlX") }, - { XHDR("fdapsisaeejsh", "oMFOtAgcLLNktmizLFHZRDVD") }, - { XHDR("cqjogfaamd", "ONsWVBnjmFGc") }, - { XHDR("us", "YFvKXJHJIDSSSKNBvAvVwndjwUXdDVYrcXiPBPhqUZNfXDascYFUyocYCukAV") }, - { XHDR("nwujpgsvjpn", "XyDJWFtxqILE") }, - { XHDR("rhpm", "Mf") }, - { XHDR("kpwmj", "OUFUgwLolxHVTxfvygINISrPjnHdntjjDmtPBztMeFqpzMZUaBfyQUfV") }, - { XHDR("hqwtwisadhrfhjoyqkh", "PMVHOmNyyjIomshSwACOyppfFXHimtIHiTrCztPwhuQDQZqHCdMNfLcMag") }, - { XHDR("jbfypnbfflpgdkstvd", "UaGQfXhWmpCnfaHoDpKgrjaSJxQOrQjGy") }, - { XHDR("dtsmpg", "IPlhSWNYVlVHtUVvBNTrXfXcGOlecMynqdRFmwWkgfSrrHKaEmmMLfNJoJQnqhTpetOHitFwQuymPnC") }, - { XHDR("shdb", "MSTItJcHbZdUNUtCWEvkjCjNInByyOlpjRvNrazsNaHWAHEaZMhe") }, - { XHDR("av", "qAGoqDKjYdJBvGqVJpPcSFbQjXOuxi") }, - { XHDR("geufurnibrabmbyuao", "pvGngoKLTiJVxgVwaevbCdNwJCu") }, - { XHDR("pncgojqhondmuxzta", "bcevZdglDhJHxNgpRzDqzrPuRbqoXSCbxvpWDy") }, - { XHDR("bhmsksianerpu", "TsaMAalzTQNmqwNsFgmoLkBOWWBxjrwZUgaoOgwE") }, - { XHDR("eri", "NqGakXkWesfkpjFcDhuOCGIknkUfQpNyWz") }, - { XHDR("n", "KSLWXZCAUqqMqpzyMTMnKnRscaoejjlvEyIafJEmPinXfhBprxGgyLCjfGyzvXptnbYGFJCggArekg") }, - { XHDR("ukkbermgarmaxph", "HvkkPQOWxyP") }, - { XHDR("ienldliowffnljncu", "TjRCPhpLCTtNisWjvcIkuQtXaDwoDMoPrMoFnBmLvYoPvWvwRHocvMYPXq") }, - { XHDR("apsomcnofqga", "nHIHoHDPgFFAsAZSWTL") }, - { XHDR("nwik", "rDpvWDEMdgEqHXmMakxCPHDiokbeHKcHPDwiXpSNFUQMsHFuKiFkzDSngjHnPJBMyNtJLbZY") }, - { XHDR("raaxvcipwnpuaxry", "QqwDKjTMufHuKBTtABCdlQfyOWTUAvSXkXZKxsWFOKcSWvPn") }, - { XHDR("shureppfmhifxpslzu", "wwrWkobORxUeBsuiAdXTMrVifgtLBvuDRXjaODRpIMUuSHfofToRcImFpitRBSppypqnDcBviJ") }, - { XHDR("pqjcdohckjdzkc", "vyrVYvx") }, - { XHDR("um", "OrYHFuaxsqbxWTDbowVaNEQZdiNpxNMkQpOCRnljaBqTGipJHHOlYhvdmXBJ") }, - { XHDR("txxbevxm", "nLrhuOhDpafDfdP") }, - { XHDR("rwiraoqmqcsnhxwdel", "sYrHBQJabojUGrjUuvHKcoVSa") }, - { XHDR("dpyxbthrsigpacqa", "OqyjyMwalDvzohydGIkjakzyRDTZBkqjFfgvvWwrCoIFidgYvzAyd") }, - { XHDR("mzzvpyshfauoqelwpm", "uZeAJgvevAhwerqfVbqIYXgybwzUQpmKISoseJXjfPtJdKvT") }, - { XHDR("kb", "IWUTwsUo") }, - { XHDR("oknwiraaskyaqerzjkp", "ue") }, - { XHDR("nottnzsopfj", "OEoCXBYHXIDvUoDdvebLODBDKJwgdMboCDXmwkGFRNrw") }, - { XHDR("ik", "WUGuOrUaFNyrbnUtWspxeGohHwpXxDjPjdKxKRa") }, - { XHDR("tfycwavtohqvciobeai", "uwncuyxWIjTscFSmdlhwDkJgrWMZKNmpLXvjgvLCIlWBqxMTnKxJtkXdrzdYVXOIUCUuEKUehK") }, - { XHDR("qwctlzxzobktyrycx", "HhhpdgkDwMYBhjhcFetorZKdpVAWZMBhMJtSJfMW") }, - { XHDR("heckamlspxnmzhrui", "FKCvcQMCmbOxVWGbZUmpxVOSrVGEfJUDaRtjTkmJQrbNWDuVElYSIFgWUIQVNCoxjQJGsqbOeYze") }, - { XHDR("gzupt", "mqLIqXeONfgTKQdFQlDYRLMdSVPfFvNhQbtcSJtFjGSLYWxVWcnHDqQqZcjUpXKWWJ") }, - { XHDR("rsjmdbqbluowvyh", "PpApugaUKcUVYkHOVuyMKQ") }, - { XHDR("go", "lnmSyZCtWrYvJymoCDBEDxDlkCrUucAwwfu") }, - { XHDR("saljjj", "pvLtEQuZxhz") }, - { XHDR("mohpmmuvlvtahpcequ", "CAuabkYztjrNXCWkRUjQxzXwcpBpmmyqYlUNYnOyLQT") }, - { XHDR("rqvupcv", "ZXgWsimgXXoAIweL") }, - { XHDR("msuuxteqz", "EaFcaqDrYDX") }, - { XHDR("oyyybvcswnhnmxrvawm", "vJDZVxIoSoCDpYJCCMApcaWmNFJJxQuLKIFmHrEawOWaymPHLGUNvmDrmnAcpEBmezCNwZgAEvz") }, - { XHDR("brpuilgqlclllmzxzoew", "hOSvvzscmEiIovcavnAkxvSJtrBbemdPSuBFXqlZAfxmDAXFDw") }, - { XHDR("ginddfnpxzcitnha", "hayQL") }, - { XHDR("jlb", "RiRiSBIXCezECuQlDhRzbwvmHRqAviSkyZZscTaTqJfXFQMsKDVSsFaPcbVFkRUxaWoKIbvGGBHqN") }, - { XHDR("xtxqbptldbrucrgvyzvd", "Q") }, - { XHDR("rpqvurfn", "lvPPuYdkcPIYpDhcfSszGyFNQXVnX") }, - { XHDR("qcpf", "YeZtRbHUgjRHHfQgmogSpbVzKjBioLg") }, - { XHDR("hxvkctkwrvyagllbsa", "yhrSUaSuoenWcRBkatoQILrJlsNsLlkxAmVcehnGjcIrGBggZDfIByZSzj") }, - { XHDR("ykhoebytvwgj", "olfqMpKwLYqOtEkcpDmHZVFGggzJNcDxyhhAHGccGDaGzVlyhywIOKZGF") }, - { XHDR("hpggcexfhrjdpjtvwxek", "xdhVwuDQBcsRdhWeKuKJIqLPDLSFDdciQjHvpaPINCZvWA") }, - { XHDR("jjgrpzgcwl", "vPPtXsZwyuyJcnxlYWyQjYpQLMCZebgzjmdUlcyhGxqcQYnYpglofKUrhXpq") }, - { XHDR("wjhipovdfpvvkslrrlib", "kwcSZkSTivnilugmAVyREHQiFOM") }, - { XHDR("byjq", "NuAURooqUhQZWtolUAlOIpfHktAplYxbdMDscgaxuPwpqelcqfPzkuoSnHmbKNTnGnLQDIGazsXnn") }, - { XHDR("zalynv", "NtBKcFQYpeEVVUMDlRlMutLbJDePwyLENekmq") }, - { XHDR("porboo", "WvOEbHlFMFRmiGpVOgfRFKFgwlWgcngsNRBNHuulucSmpRZLRiojrsXMmilnVwWVZhEwCU") }, - { XHDR("yyejya", "asmhaNJNnZETdZjnZUGiBYrvUDKGFBekiAMyf") }, - { XHDR("oxfwkvkpsqjbtqbz", "WuprBNRKqJjhqAffZsfEKbLQ") }, - { XHDR("fzbngiabfappwbsia", "FQnIbqCThFlpQgLrMRbeJPVSHdm") }, - { XHDR("sownmkzwvf", "RjtbwmWfnuGngMhPyrBaHKHIZqPDDdTfplZOtEiNbnBkbkVBRpNdVpVACvClOcqavWQYNs") }, - { XHDR("xwupuojallgmmxmbhx", "HSqgxVWImPxSbuDzDVXjWPZlwp") }, - { XHDR("jupmvpqcp", "FodUPoOCkekMbahuoQhngzUTHUHINVlydIiLGJFYJzfBaVbVB") }, - { XHDR("sczpd", "gtsWkDxJHBBwgrWDBDTQuhFHGZesqtPFNTsTIMZmPPPZuPtVPvMWJwL") }, - { XHDR("dndqklcdsad", "mUILxMtuhXGXsiDIoGQqzrBZQuaDOLLdVVnMUyyBfIWGSZaYnoALACLBb") }, - { XHDR("emgokhi", "gTybqrLeORNpxHWSdFrizPkgSHfBOTnfTHzpIYRkchOqOEkxNyBXThUyDW") }, - { XHDR("ouhbrfkocnnfpf", "kT") }, - { XHDR("gaqt", "EFevb") }, - { XHDR("pzcupiumfxpsqnwgyoyg", "GwwgaxiEOvsEEAiOxueYhnIVuVCxeJCwYcQAxouzrdlMLSPv") }, - { XHDR("bjnldnju", "SexJnBvQMTZKd") }, - { XHDR("kjhbqgxrufu", "JOAgFpbkjCgPuYNWBebzVMwFkDMHbitBzoenZGeWaOtaBYKEkGrmeGWlkfLzhcj") }, - { XHDR("yjwlqdb", "JrlYJgygvrddGMQgJToYzTCQwQzkjSGFBSImKrvZpLpQhzDtpONtXeYKGcBxquaUmT") }, - { XHDR("dvrqwd", "KnJdjPIGarAcxcSoVLzieGBwFCktbfYkoecmvWjfQVtaUedomkNENxOMEXJouiifKuLgReskNViXvtZg") }, - { XHDR("hvxuinpnlimhl", "PWMbIvrjhRhWGsUirOBpGPzVRXTCtzsydrxWlaSXKmbLBj") }, - { XHDR("kxcetkqphqenhh", "IZNdUbZxVcjelBXrluZpDFrTMTriMbyImDzVKnnspqzjrXYFyOFZIhTMIAWkWzkgsWlBXJMFHmmOTr") }, - { XHDR("kqvzmajzqarexze", "MwdLhEaGJRQOwnxsCTBEvktruIJNUrgTjpDMzAtMzxqaQVRsbQyMDKYnjtBH") }, - { XHDR("exodjkmwevexygd", "HxHiaYSIPJCRrDDGnRYyOBcRIOyYEPPfZjWTlBDdLnovLjCLVYfIMKlNpDTkpnlEOGUpCoXtAG") }, - { XHDR("irvsceoywngzdx", "EemdVMMIFwAIvTq") }, - { XHDR("vwwfdiitcq", "fohGWcMtOjUvtNjAegaaztsrcYPMEGEgLBMmMPjCGqNZHjBjnia") }, - { XHDR("n", "CvGvYqHwuXishjKOqJfw") }, - { XHDR("mitskjmzndiy", "rNMwDjveESDxWStHHpYvCYqMMJGBMQI") }, - { XHDR("r", "dWmozRAJQHESwwSaYgHpdpLSJXDUItqKainYipzIeiMVikELcmlSbn") }, - { XHDR("qzpcxjkmtyovzii", "EzDhwRFHsk") }, - { XHDR("rsujhifgvokqszo", "KHajIuJVTfwYqlWtyHgZBEGGCtOzpwxqZiqXoLiZZPcNGLvXJtfTjkAFrpjM") }, - { XHDR("vqiadrlngjarbqo", "SyMTJDrEXsAZpHleJsjEuRbAzfptkhctWSVanOgf") }, - { XHDR("beorg", "KoWtaRiRRniTUoMOXWmITMweCadNdaQGcKPMgVKnOJJAXiOBbnzCvuNgiGvdTyVChTWTfv") }, - { XHDR("vxzhsrwd", "JbMVgZKPtQrNPOzSYNfAlhcfLvvARPBLFKIFFDIyGLI") }, - { XHDR("tszohfhfmh", "JtDdrrDAhFuHEYwsA") }, - { XHDR("trtgshwdtttzqtv", "qsQQEupIufTCViJtpnrebMaJ") }, - { XHDR("dzierolyqudcnu", "yExszJNydibnDJSHwyD") }, - { XHDR("wk", "NVJuanFpfqlAUFQpjGOXwIXSUcMGnDXbfBJZtBjXmPUCPRUHUHhmmuZMXHfmKQioprCVCbJltpESIRvh") }, - { XHDR("tfkpw", "QtxBDAZqdWuadlcthHYNXPAUvCKSAGwdnlfurNPpzfogaIbKLNfHnkboZPVN") }, - { XHDR("urpgndbgrnn", "ebsfnjNhsgGRsjucMOcHlMJBMnwiCUaAYdZeXVUqabLqtrdrwsPDHwwo") }, - { XHDR("ejrxwlaofnbmokf", "sQQQUmpmaXbCyEemjq") }, - { XHDR("wzxxikdv", "WrzmAqnZrLwelxhEEhmUFQLuuoemgvpwUldHJs") }, - { XHDR("nyphtnmqv", "lojZoxRRPAZQFIObgTbfCHBYDJMTseZsuKzQFIjXEOTDIWmyNxwaibagGCWZySjbKHsCeJZw") }, - { XHDR("uzz", "IzpCUKLWsaSThdqQuBFQjHeErvWKObEfoHAYIIDrLUWRIa") }, - { XHDR("eixcihlrkmqbtfa", "uLYILCfarHpGAuBXwhnRzGlAbDElGVmYXIMFxFzwRRtoklmZJBvVMObiOvVYIHBDkf") }, - { XHDR("rtrhqkwovfigwowi", "fBzsokRCGAduyHhumSzpurunPBVbBRHqoEbFFDpkiJvmxZJFKQVLAnvEmQALwXCCrjbBGTv") }, - { XHDR("rtjbpxyzcxlbkwfzbqgj", "BVktoeDNJNQMdhEZKZYdLfZwBcoTDzPNYqRvtVqvZtMtGUtnJStwKqoYVayEBKmVDdPZwBImEEAd") }, - { XHDR("kobdhgihoxulfei", "rlku") }, - { XHDR("ymiamwipxchyd", "Ldw") }, - { XHDR("zlrtydegu", "VIjvxZYytysjabDrjwzAtRvvLgTsxcpxmmIAjknsDGFqAASxEQgzSEQmpWRhzqvkqFaQjKslpyUSz") }, - { XHDR("opkdtgarn", "lBKYTUrqeUJiOhOJjOiaovIphqLHyjGyTTrFpkxcKUsOGdhPTsQdnmeLuTdMA") }, - { XHDR("khivoqtuseaqphuxwbfw", "OoiKVYbXORODNjAgkxSSSWMSbiMENoYDJFbTkhqnCapNGmTrQesjYTXiQmRkgNfObZXGd") }, - { XHDR("jp", "dp") }, - { XHDR("xycymywmsgojkhni", "ARNLdyWCRUrAtuLgwglRaVBJqywdiRmcsSCRaxIlPki") }, - { XHDR("zsdkiegpoi", "rVTDMWJIaRpTiHsNVHtyBSkHgIxMeyxNQQUjyTCzkBUMsCqbPuOtRVCRNvNiUeypcDwpogK") }, - { XHDR("vezdkgiubfqffvhl", "JoDlFiLglBQVMFjbFMFJlWzQpYBMneVfJFjhokcpQTfZnNOKjQcb") }, - { XHDR("ugvjentdusxqww", "PPiXipNqjSHrvIrOgwtJnaQVqlkUBvTdRAVqFJIsUCwbZehLoRQOfkWxzQfEtwIarCKrXI") }, - { XHDR("sbyviqdnb", "YBocmxdSfEozBPUWnZWwRLeskYfaDgRavXqXalxYWSpmdPWwkoJSNvbKGQyvAgwZkUpfOXmoBAX") }, - { XHDR("jgufwpkx", "txDlwzsxAjLPkSo") }, - { XHDR("qbhgzwzarylfzdnb", "LezfURnZXefYUIbHDoQHgDKZFjyALsZOHhLzJbjFdALYXDzejLmDwVQRmtTdo") }, - { XHDR("xzchlemifyaxpvcozgc", "dVRynjsYVKqItSDQWtiYqQZUolasoPsWkeBrLEZxgObbYjgiVnk") }, - { XHDR("plndezk", "uagUzAuAKpJTIQYxGzPcUdKCOsuoJKdXBLcAvevfYZSoXSBlhnqZQOzNPeKnSDyAlI") }, - { XHDR("jwefip", "ULAYUrDPQVyUVfobVBxCHpQqvKSAqAKLFVmdoOKOvUfzDS") }, - { XHDR("oddhvourapuc", "ncYBymSOFxXLvlChaVXtKVRVZjopSWIkLlPVgwWFwHfbhwK") }, - { XHDR("fztoxpmvikd", "RGshzbjfPMYmykEWBRDeUsrdc") }, - { XHDR("chjkdc", "GYSiXnPSGdgfnzasOKgabEsKKOZOcV") }, - { XHDR("vgu", "bDEyqYJdKybPgwjjAjBzqyPEXQUsnwVrsyIkAVXjUXXG") }, - { XHDR("tsqgghncrhlair", "FOLAJYliNfgYyTnQxlrGnnKHbUnXkuMFpNVmGNS") }, - { XHDR("hcheuteuaeuwf", "cth") }, - { XHDR("cfm", "IwpaEKILpQNnQzozLjDktZYxGlkAFmLqEGVpmJwycmLzpIplFNyxrmAyN") }, - { XHDR("mcnh", "VLajYpJVdPHLUbTEGHEWxIkQMPbfYdivXm") }, - { XHDR("d", "PpoHZEMmXHHitZUcLSpoquWAhWblWxjHttCSrPMQrpOXAtBOjUHFxBbdgnsMx") }, - { XHDR("gleshxypkqfomttvuv", "dkgDeMBYWOhIoeYCLGCrpdjwnnVUQZHGKGJfQwnLCTkRUMucuqvdE") }, - { XHDR("mo", "K") }, - { XHDR("njcj", "FovSURVypqaLChrGxfGrbHVjt") }, - { XHDR("xjgjdhtjmftnbfleuy", "GztOaSmFuYnsmmTtcILXPv") }, - { XHDR("jjalp", "qqOZzKWghJfQjbmBYliDKVA") }, - { XHDR("hldbjmyownzzhyl", "EuJLTDGshOSNCUBUxcbbhjHjouSRBBrxAqqCsz") }, - { XHDR("qguslmhpzjhsqf", "GoYbxvRG") }, - { XHDR("udbqxknhptvhuxw", "vBRaqsqFEDWtQklemGYeGfbdCnNpDuj") }, - { XHDR("xntnjlttfeiqclouu", "bXkeDVdrCQxQLHkYkjxVmZRwPgLChBcmztrHenvbwjTDJIYhsGsbmqJdHepED") }, - { XHDR("bsyonabcsrhueuqx", "EpQvCNqsXGVTJfPaxzfi") }, - { XHDR("spbxeinz", "UHFGeAKVWsBYsILOiSOHoVpTTKrVhCDltwOr") }, - { XHDR("pxrjfcbopqatbkivrpux", "UFQfKwmdBAgeUQIwKXNoKaEmDeSYshXTtiCzeowsiqlLIldsdlddDxJngGIcEDvlUaTRO") }, - { XHDR("kuhfopbwqmjcwllt", "SZDctExyspIAbrIQHqjPXqXoymy") }, - { XHDR("hhwfvsgn", "MXcHzeYudCvy") }, - { XHDR("cpccszslkrfpqjoocn", "IJmYNmMuj") }, - { XHDR("nohfaffwbcpadzj", "OtTNHkwrBVoQsCqcsRXpXIrTPasnKznLPEazatybJRMXeDgRYwreSGVAsYBBZnzRxjVQaIPMrUas") }, - { XHDR("aawcpiwwry", "EdkYPDQNXAcWGSdgmSTlHVdEfEzFRoHLbeEUqtjfJSeldSVMkLaMnY") }, - { XHDR("ilagh", "yVpdiYARu") }, - { XHDR("qomfdewbqxtmp", "UrBhzpSPbbarDdHsbTfYDwqIUmDNkOXJdPiiHsjnNuprhEZvoV") }, - { XHDR("js", "oJXwuNMkDusVWALtZmWGIRpAFIExlXaXfZNlqzySjIDMJ") }, - { XHDR("ab", "aztanLiXPAlqBuSpYmAvOFkhINVVgpcKxQgTZAmnbyufASypkndEXSTsghMbnSxbiBCU") }, - { XHDR("jndkfpceouitjf", "tslrAOtTWJdXkSU") }, - { XHDR("bksi", "ykloFQmguTtkdaUoMjYUPePZaUcdrZkAneMany") }, - { XHDR("pmhr", "wgvxknYxTjhNlLtSYV") }, - { XHDR("vqsqwzwwtczz", "CAOsZiQCHDRpKBDdNTOpJoCbUDXaLMhFycgOaIdFRqsfjTmzxPuEhCnVCUeObLDmjHSn") }, - { XHDR("z", "nsdwTGViJkEtrhvJINHaLDMDuCtMFJsQQnLXxougEOPBLEdeRFbYCNPzleKoOwuLLbDXcYpe") }, - { XHDR("vbwmxfbfkj", "DFKXsHVbYUBbxvBpYSDlHJehj") }, - { XHDR("zozjfa", "WVnWSxqUrnbNHEfEmokeEIbMaFlXxSzJxnqpDBOvmNlnsCXQUQxfaiNySpJUpk") }, - { XHDR("yqhxxkwrfuxgk", "XQRCNzXHSrroUnNnPnpKJXaPLxFwqDupmTrSGxjyffyisWSDDmZCZTkojBzUPbsrdabsiDrCddihn") }, - { XHDR("mcoo", "yHmiUJZsFFWvvZcEfSP") }, - { XHDR("i", "wzoSfXMmwbQysofGwtKmcfIkUWnKGFJHTknFjYCQOFXcYTWBfPWZmHFImbppF") }, - { XHDR("erz", "XePzXoMLFWsTohOfEfZDmmpNjjCNDkCQwpyVCNPBAwNcqQCSwKfSQrdEjyjSFEhHruN") }, - { XHDR("dstackvasu", "t") }, - { XHDR("pm", "XxzkKQtfi") }, - { XHDR("urstibwcdmpjtn", "jRZijKatpsSFEfzIINeOYbCEAhTofCcgM") }, - { XHDR("bassz", "LaSLvQtmMOrDTCVXAndZTroGwkfv") }, - { XHDR("ujrifnuanxj", "VZeSwhONzhOQWTRLPLwvjHmVQSsOmSiITgylcVjjFNbhXstLGOzkfdkqcBKkzL") }, - { XHDR("gnusgrpsdc", "uwGodcVfNzyPMz") }, - { XHDR("cuncrazmhzlpqwzsxw", "TPscrMvjepBQmjcEbverYEqAIhZdcRbbMphUsCulNkCyNrUnGpTWJqkG") }, - { XHDR("lw", "BbyBntTZu") }, - { XHDR("ddevnqqfcsndu", "WoTXdpaW") }, - { XHDR("amyufn", "zvtLX") }, - { XHDR("yxhtgvtfd", "xdSYKhznQamqbstLJNIGWFUgSqYkOkTDMmHZmzvdmaDXOozbXyqTcVQkPYiVq") }, - { XHDR("lfsjs", "pqDUvlHMeXcjYIdCAKm") }, - { XHDR("vitlczwojk", "RJpqQzJiygnCqoiKkfAebMZmmtuQOnkGDWLzscHKCNQDGtlVziueIgopOVF") }, - { XHDR("oplpwoub", "LHgTDdFkdrpZyhGUbSuzPXzROSteDWilmckpwUdpYDDkgnvCvigkafyRQUZyhXjJmzWEggMuhVWJqQ") }, - { XHDR("ndjsks", "wmoKOXXXdpszoZFyzzNaClgdKBhxPHkRdVCzwTF") }, - { XHDR("gxqkkpveahfvynusevd", "xQQNbgCyMXBEBBpSXfcBcMMlcuMdTgUUswtZTfG") }, - { XHDR("opthmueihyph", "sqIPkywULXHt") }, - { XHDR("dqxcbjitzwqhtlp", "kobnsKRfZHxTqcyyqPUuyFYIxEcnifCxtPzEABQBQepdqaSQEeRcrHtBgtyTgpeuY") }, - { XHDR("o", "jAqrljXhAFypKxwjiSxheYtpAwEuAADxxGJluXuGcILnviSkHRwQPgUXXqjeEj") }, - { XHDR("n", "mXojdGEwTFsskcLMsZZAlaOkpvoKOaeoZYPkUrAq") }, - { XHDR("ftp", "pj") }, - { XHDR("htuflppnptthr", "lPjNdujuBRvAySNXcFkoxYKusJDzhsIOLsdUz") }, - { XHDR("dkyc", "iyuQelIMYZgdAvxyxSJsZZBQmNOuXOriZOjVCWofTPCevUwjHAhjhqnpNovWHSiItwOzRMUq") }, - { XHDR("agdvycyf", "CeRMxBxFyzkHGGcDOyqlrgmhrtMZDzTZmhlBdZJnGSpBpVkgLF") }, - { XHDR("eiopehmq", "nNbbJBKofDrAYjcmesdKRpUtGKOBUUjPMQxiXyVITuEtWGMyjgBNm") }, - { XHDR("iroxudfdulloiihv", "DrntRwDiVFKufNOqoMXrkTVDdkphJBBdiGaxiLS") }, - { XHDR("dxfjq", "NIEjBZXcHGaTqRCukWiIwrutJne") }, - { XHDR("ccyunmokplxgh", "DpSVBiYShckJZbxMDJsyrrAFEYrDxDqiyWSwFPFCYVkAIwqAmyXNJUIkumKekaKtFWEH") }, - { XHDR("ywqcbxrwhpbogct", "EVxDwEeLXgVoDDTtNZangTVpAkjkTNiplmGgnKl") }, - { XHDR("qsseomhxir", "agtfAnlZSPuGgolEuzmQHoSqcPnMARAHPNhbXjnHHQo") }, - { XHDR("yprvfmns", "qMFxrkXAPUeGmiuvIWHkNBQlHwElumccMEMMrlqyjVCyaIAgjpvSCPJwIjywSfBHqrDpnkWSd") }, - { XHDR("k", "OfYPNqIZznfxpkuOdiryiAmhDvQaqtJWBFvFvRMLWeGuuoWPvHw") }, - { XHDR("eqjezaewqzm", "SuFCIHaJcdUbVJSJIkZcNUoANVOTXDdGoLyPVhgfbWjcggteGSKFjIcebJRQpjFVTTGrLeAf") }, - { XHDR("swbvqkvhz", "InzYCFDNRsauYODKFnMvlRVpWFSFmUZmnPYRmVFjyDfcpmukzxpyeUrgBroJ") }, - { XHDR("vsz", "hXtEWZrPHDJUtSnqnPPzunIOKPjXNOpeKJHAEvwEOqsfxoNhQbwuQjKCVnDbF") }, - { XHDR("fikf", "iLIm") }, - { XHDR("rwezpbz", "IhuAepJuvrggWewRwlyvzpBAWOMxqqMDJkkQArZmXwNxZly") }, - { XHDR("zlarvqzajmwzzzqssrv", "jNMafejrzUGxyWYyCFV") }, - { XHDR("tu", "dDMESCfkEvkKLFOYVWipwrftKecLCCEYmsirYLc") }, - { XHDR("kejp", "bnaHsMHpXydrpHUXo") }, - { XHDR("zbetndq", "YdFqcJjiMExmUFYXcORtRwZkxOdEmBkyjNuaJJeoQGbdSTDwccoKpJDUMUm") }, - { XHDR("pladbud", "enxcGBYFleCTrkhnBgdJxAOrDSkwGFgHdsSKjLyhXxLuLGFugBpsGOJJAJqUXwpyqnrEOiRerGqHK") }, - { XHDR("jcqwldbkmev", "hteutfLCQqjMwWopWWYXTkLjPlJgrFGVMywJ") }, - { XHDR("fypsb", "UovipqNfvCQiyLwhPMFMiTKLpeIBBWDJISBfVFfxPpmfUyEzPVRYIyXktTQouWptbuHBTJct") }, - { XHDR("bmzjtemxhqcmthnkph", "ZqiTKDCtCPjEicvyTYUpfynoViBCGC") }, - { XHDR("gvdmbajygnt", "SBYboMjSSPilJIXRhFzVWZrWmEpbEhAuQTTDcNzUILE") }, - { XHDR("nssaoutczgatoqtmfpk", "kEPNAHSF") }, - { XHDR("tncqjzbnfttnrazfv", "qYndnetaljErPoJXbMiZOfKmgVzZsDxiyHzCwECiJYRHxFZ") }, - { XHDR("gpxlymthv", "KHjaYOxUzLVESnlFPLNnVgmANBOVAWCIYhuinigZWESYF") }, - { XHDR("xlsbdnsgxrkrhyuuppr", "DsNEGzYKPNDuVbJVDuIFtiVfMUugMLyuAjLDCynpbOXJZQAnzkj") }, - { XHDR("wtiy", "oMOKCYnwjpoaGlnFxrNsZRABWzcjJmetvSEScuKuteNSiWKPMCOhoYiHufbFPbyoLapalYPulgkLZik") }, - { XHDR("zixrgbn", "rqQtigLaBZaqXykJrXMnpjXaaeXjjrznafkGHwAHUY") }, - { XHDR("yttmiujieavub", "VYjhLKEAPNffGhcFjrIosqzznewnDNiBj") }, - { XHDR("xc", "rhffjnNgATakyhlWJfORKysnWBLpAKlyEmkYnuVFKIcbBHQDdjuttlazLgGPfvl") }, - { XHDR("wzvbgnuxbxomqix", "PtKgPseCbZlSIKWyVPFaAfzimRttxEPGRwcEKxxqsjVcqPu") }, - { XHDR("jzujcvlfbzaovfnqnar", "tfBJGxHZOpQWFtpzZVufczCRecVxgrIOHjrvYtuYSAidUkYHgwpCwyGwEbveyjDRgSWyZiL") }, - { XHDR("cpnfgrfpnty", "KeAtWHufNdKqjYoJaYOXyaFfIHbtRGBpjqVGSROXqYioMeCQIUpVsssuAsL") }, - { XHDR("sahqmwhmltbrevkikx", "kFqhYxMrFtMjRTG") }, - { XHDR("m", "hLjqUiGQLlWUwKzEcJXbPqxRCWUOZPhdOtMtiBUKHZDVpOjv") }, - { XHDR("zafuuozxgrfhnnpdz", "RejXauBjvMPjCHZwCNUxGzZHiNmoUXyAebZTaafpWbEhCpznFGyEVrbcAFaHYNuNGTAT") }, - { XHDR("wtqossvtzuqgb", "ENnvGhMxGzSElTwvsMbXYhPKuZyxFQSTKBWXBkWlzQLTOvqHjNQbSZmfq") }, - { XHDR("aqfyvwbw", "NFnJOZClAVmivrhtYZhSnHdOuTqHLmPMiszXXpRxMXHoXGZjXmhGVXpSoPl") }, - { XHDR("cyzlx", "dPTuluGhaDhdSbMeQIHbmtifcXQtOqqMEBSpMuCAhXUfzGwZckXTeNoswrzvyCyjKTNKPzfoI") }, - { XHDR("aqd", "NVicullBUZRgWSdxKWWJhH") }, - { XHDR("bfseb", "nLRilzLElNpHwbAiwAOWwEFbwSYBhGoXWrIsawIh") }, - { XHDR("buhcoiqssgomjvbhtoa", "VxpkaVwKYCDJ") }, - { XHDR("a", "RKPyqPfZZChqWnp") }, - { XHDR("fnsrfqtzwayamc", "LyEXKLZXQzAdNqUGNKahZHMoQkMuVqocsoJURIFKRIaabLTWBySImgkwkUeZVcCkfTmHmcaVRBYOg") }, - { XHDR("tt", "aRbacwSuZUqgKlBthFKFSqFmvEeqjgDJrB") }, - { XHDR("bdzxyr", "UMtZMZpctGorbxVppWyGmwPabUoxrbLZazerJuJGgvcomKLRcpsbHNNXVQlDHTzk") }, - { XHDR("filxrfitgmnalwfryztt", "efEdpEYWsFtUgWLhmQfLGOdUgmUzfzYprXWfMYUfXhwnSrjPmFNsbYdWNOuYTvPgHTSRolqCEvjDDm") }, - { XHDR("snzfldcolfngakqpr", "kkchcHIEEVOcqovFa") }, - { XHDR("poxxdfeglqcqnxqgpxxf", "oumuuVvriwcTg") }, - { XHDR("bgyf", "CwTcZWxKBxWyDVUHjnzAWpEu") }, - { XHDR("fpjlkxzxzzjkcvbwlp", "xrmCkdDvqtrlsocGfuWVyyqLwWUuZnnftKoQxbBNAmhwWYYYrmLHvD") }, - { XHDR("obdfcbaqfmeucjth", "VISozMphNKIvwbBInHXoYGFkpkqmqhCFBmbpzeN") }, - { XHDR("px", "UDMlgRGVFdkttHQCDyiDYbMSfgKmNdCnRaLODoehRCrerQyvmPBPttSuFGkgFRr") }, - { XHDR("kuzycuyqgjksp", "QQyQxYLsHGiCTVSVcGysYRhnkmHsjmpkgM") }, - { XHDR("wpvjjjxkqkkmiclt", "XyqVREhWNLbKJnoCNDVaUXuWAVKfGTgrVUJxMRjHIjCEmlYHSCFAjrTNsbMVBHbjpxpurWX") }, - { XHDR("onbg", "afwDbAyLxoMSwmKMqEdARJwWQbJYabkyYDAoilidTdJMpidQxWVcbO") }, - { XHDR("wrqctqswb", "gWerPY") }, - { XHDR("dgifxqlncfvlthob", "gtbtgKERWRGCUSacOJamBrbgxu") }, - { XHDR("ye", "uQDjkqBIynLwj") }, - { XHDR("soc", "vCdgerRYFVhzyksPBiXwYZbnnEqDWajvyyVWuXdBHclBkTqUVi") }, - { XHDR("jnzgjdoditoheyjy", "fkIBKiUaGuAvjgMYVjVpSyUoUyQcOLBEqTgKJsqjFemGAfoXHqlnNWsYnJvahAWFrLPQFe") }, - { XHDR("hfkrbweppjfftm", "BxslPBMlOwJWDxx") }, - { XHDR("svhzwmrvhnhgtyys", "lkcwzhOIlblApSPmEzLlezRIrzOQtheeuUlml") }, - { XHDR("gb", "QZMoFqvDEnfPHRixXWZIckFgarFQ") }, - { XHDR("yowcfeokjczazav", "JwDfreouGpayxDMfMDanCsEKSBbk") }, - { XHDR("xjrushvgb", "NAOZkQNjAhpxpBdIOOMPoINGFZqg") }, - { XHDR("pzelgewuflu", "nSCvyVXMoDjYzvfLyEbTcdcxUSIedgIXbPFCCPVdZczhGZPRQiMF") }, - { XHDR("ggzbnncgojjvbnzu", "VPtdFILcgpTWtirlKpszHHlVMQCUipcwztewUtFYpmWQQSVLKkityjtyQHHIDBcsPcoQhIrlI") }, - { XHDR("eok", "sZOPfDxHDhrJdiHVdWkfydxcsNTAGFrzh") }, - { XHDR("yvervsfzlosfun", "dVVcDh") }, - { XHDR("lukfkghj", "glgSxwhgKONbvEGMBWHBRvZpoKfVWbdvozXZKelslUU") }, - { XHDR("vmibw", "HygmLHRKCCIDTufWDGICcOKmVEbxdPjDU") }, - { XHDR("w", "DomfCVmLjHiwiutyInlLytQRNqLCSnxbkCx") }, - { XHDR("nmblwghrcfeguduzr", "BfrhGpoVPHBGmyGshaBqH") }, - { XHDR("vbjmryqzeuhkzer", "IorrLroFbzMxojblHcIGgvpksyAshRrjGkLstwlviHQeee") }, - { XHDR("izsqct", "KpTIMrgMnbOobwjorDxMgtGSfcUqzGiB") }, - { XHDR("ndhkmfwvgnjzmh", "cmNSJXMOV") }, - { XHDR("lskwykovevzviz", "NaFpNWWRJyCmfDXkRlVGvyJttpGbBi") }, - { XHDR("pvmawksviyjonwfltof", "CXKMSSVrbDkuBSYuGKJIcGFTUowLyzsJmPmrsMRTSqgvafsRnshRbIMzyzKFKFWFpk") }, - { XHDR("nqelp", "mUWYHfVPLFmHlBbgHqJxvAVncOWUmvXkppbmBimRgeSYJSq") }, - { XHDR("zssxeyflgvjmrkhny", "EcIMfCNLRnwKbICtYRVLPGzaHQtkDgmhxucmuSGhKogWTpbeVFfZkcjyVrHdK") }, - { XHDR("eqgbkyhmtehnxurixt", "BXwaUzcqQvyJaCkgYSnvodLEYYDCcaveVnIVTIXKpaZtdSTktgakeCnHo") }, - { XHDR("kbfd", "OXdjJcFgPYg") }, - { XHDR("jezsfkzspyzadpdukl", "CONHhQcBWkHdvDAbcMSxKxJa") }, - { XHDR("fdlpybwh", "EHGDBZRtIEhyMklKEvwhXUIMcQKhMWySsUpBrVplAlDwvSksKSnaJtzyCJzPOSUSNrS") }, - { XHDR("czaemjkfg", "likJcSZtvpxzAngqcVwHGDSzuTMUVwpJrKcSSeTQIjNCZTKRD") }, - { XHDR("rxfuvkrewqyabjbvdx", "jdkILQctskMRIDRVKIeXhsvuBtpngtsmxPsfMjtsKMjjWWOJihcAuNRadUo") }, - { XHDR("lmmczvzjocbp", "TDenxsjzPwZNmtTFsRHXvAEQmXsMmfMQQPoRDYCQuK") }, - { XHDR("obthtfn", "mjGaNxyXLy") }, - { XHDR("e", "bS") }, - { XHDR("mrmxrmkqgamhreoexuo", "rbSCFxiez") }, - { XHDR("beuvdzldwgzvebtvhmr", "eMgTovUlQIyiJZLQNLNYv") }, - { XHDR("ncwkcomglu", "PBYidKgFgDQHvbNvsTomOfImUOQOibsWuTDvxzqyhwpteccRGvD") }, - { XHDR("tuibfrwecluasho", "tLvqEzdAfNTIOvkOHIjiseurRDpqLBZelDqxUhhlmPiAmSmyCWx") }, - { XHDR("ssnfshgfevxfyal", "MyufBfxtfxCoZMpHBLNVxpRGsmCvjTnzjZAtXoaSQhuFuACmMtgpwKJsMtegwMpv") }, - { XHDR("ey", "TAvpI") }, - { XHDR("vqslahxljymas", "hhqsGnzVaiYXKltLxGoc") }, - { XHDR("dme", "tDZqbxqgfeEKvZuuUWIgfYTYycuRIyunBeXqr") }, - { XHDR("qinyuettk", "XLvJfkXMg") }, - { XHDR("vypiagknonjogz", "bpmcklVIhN") }, - { XHDR("vpwaujtgwtzdjpjkashu", "ETPJEPQBOpUEbcJBJxDVYGbSkapttDoZQywulKUwHhWljFwl") }, - { XHDR("byllgdnnsv", "pzLZqaYNuCMLvWohHaPCgYRUpUGWUsdgRdBoszixzGpcJxRkHnABAhFCJJuPDGFn") }, - { XHDR("jwmfisurbgnn", "rfZwFORlaJILpSbcEGqPFlFzsBwQRbBXoohQZzvPQLQmDN") }, - { XHDR("tbjup", "ycu") }, - { XHDR("qxdfmdqqvphwu", "ThQCNGvnIZBgUQTNkRMvAivzxHDPRJjwkegrMkfPknLKmUqEfDMkJvOj") }, - { XHDR("ixgbye", "BHvppPeLbFjliYVQdvMaRtirGmCDmYQujsKvSlIFJhxmXqKGmpwRzwZqIPigNxn") }, - { XHDR("au", "aTkSlApkuhDinDpyDJRDJxCDbHamUxTtTFlLsyNbHGSdIYMTpXHvtIAbSBJMNEWKN") }, - { XHDR("antanmbszftgawmbzp", "ebouerBUJWewNEHBoKyKKRZdvmzXWTxyGrr") }, - { XHDR("ifheddeevxg", "BDcwRUViLsxzOWaLPTAVdDUEDOasAJLSLfzwmUYwhwhBafrRaEyEfYXffcMICScaxSFIoJTAwuCvovz") }, - { XHDR("kvqmxxspm", "bloyfqYGBpwgsmSAwzM") }, - { XHDR("h", "pCtZdUVIgmJnTXvgxaOWYmYkqSFihcmzWzKGriXllLBaSrndAaRytrFJuMnOXfllejzssRQvEWXVgpL") }, - { XHDR("bbzofhvrpopucgmh", "cpnV") }, - { XHDR("onlsyogzyqntwgmmt", "agFFEvcXzMTZdcYJWWkxlcduHHAeAeuzSXwAPEMrOdfppkTD") }, - { XHDR("zjxwlzcfxxy", "NdhMwEGzmuuNSSsEvFZSNJiNsNOFskYOlfHRUNNFkAgIJkZsUmiVOjSCgFkNgidVbiJotNqKERlk") }, - { XHDR("mskmoxsolaegbsm", "DfkTFDfuOZnDodhtbIuwdwyrDxdpROGoABBRgyPhJJR") }, - { XHDR("us", "OUjYVkmviTxeKsNSclGoUCAdYdKXACcKCeGTVkGgdJzOfJwcdnsUKWqseJcPfsbljUICVVhES") }, - { XHDR("aznfoazichcyzpafapyw", "gAMDyMYKiJmgonSVZYGLZgrpkMZpHdOEgebxrtuIPyHGYWkWaTnnAduM") }, - { XHDR("hqtyguhamejgr", "tKqEyvABUBHJdfNKuJYVjVjEmuMXUxVEgVfxglyPOPRpELTRJDXcUVoyPCliySVm") }, - { XHDR("yxmswlent", "zzKMnpdCAaTidDGfBngwVUecaZyrOepzo") }, - { XHDR("zohsxwhdbki", "RoVNScqnpfXxczNDKOzoumI") }, - { XHDR("qrbvamyczuwv", "UxgoxyvORQlEJeovoYnschCcWgcrkCbeuROcHPiLsktSOfRmoDgoIxeNMcofIePrfHKj") }, - { XHDR("kpitdrijwua", "oZqgufzZCvUDXXioOroePgTASqBLLNqWMFYQSXSdm") }, - { XHDR("dhzlu", "UrfJnjsLvJRoHlNCuQNcAQKshHVrcDVjphsWF") }, - { XHDR("yeiusplvajab", "lUcIowaYsDOqDOfthUwfVtrCI") }, - { XHDR("esblgrrzmmrphzatdqu", "QkrLODruSSgmDgnKlhRgPUScRmfDLDyjePNbNFwneMWNFojKBaUwJLjKjHZyGlwPgAdJXzknk") }, - { XHDR("cjdibsihumyn", "wxfTCeOXYqDYMQzfoYAvintzUrwlXctCqGeOKPcOhihEEQjFiMSAmDBZstOMdyjIKEJukEVBIYk") }, - { XHDR("kchp", "xVQkQNlQmcNxPUmjYmpSARvrETESNaVXLflZOeLDECZJpePXIs") }, - { XHDR("kjia", "QSlgaU") }, - { XHDR("ly", "UZPaNhWQvdYxpAtLbjzdKrhjCjndPsBtvaYMcIfdFHbnXCHnkMxVdPTWknuaPTcPmAXhdhuUybaYymV") }, - { XHDR("kt", "BhVGAKNqPERpGjknkmcsCksMjCPkTVoOfBvt") }, - { XHDR("rkxltdgrbotnctij", "kWQTpMZdUOwrVOKiSuPSIJuNBSqoWHvayEzBRhXCUjp") }, - { XHDR("y", "TjhAvNWnZVCrxlHigGjXxGcKNXbeVoGKEuwuahlc") }, - { XHDR("mwzegautyyqv", "McEEaliMHeUmtkVsZiGzECTggGCppiESffikKCNVzwXSkgceBJwdiKdlWwMuxX") }, - { XHDR("w", "lJBsdpceNAMgCRJhQNnlfLfgvnYj") }, - { XHDR("bsmuxiyptvgl", "UVMQJiCdHuqMJZfGblqguNNCVCfVCnvZHRTFxiZXc") }, - { XHDR("tnjxnps", "uBqfhpxYTNyDQpWKJyTkaTQlWYWfhYmzeAqwbOCGuCiEhtjrxqneJuLiMRRnNfJjDXxMlaxojG") }, - { XHDR("dt", "RZHuqIYwGnGstewuyECSpfrtbkPpBCiHrqNptmopLZRcIGtBPczYG") }, - { XHDR("etttrbj", "eLJsaJzXkBGPwdNIMvveKogrOmDBaaJTvvJTZpatfFWoBBXTGmDRcfQJidIENsaqdtERtN") }, - { XHDR("yanaomilfaxavocewht", "aZaWkDDvqFELheYJSrsJwHEjyUKkMCOUtYpZCNiStuhTmTSFnducPylvbMZUkNpAW") }, - { XHDR("ynnxfwwcdplxhahk", "qZjtyaXLYQvMlCOwChjlzGRKYWTbPtanAmCnbcJBXCoqstjvtxsbQKPsEequPIHTqxwA") }, - { XHDR("lspeseyajt", "TmQaORXYvONAIXnRaOWIJcXKeruLuxjqjiTCQZaaWBzltyjTNbAPvwK") }, - { XHDR("ylvbxkfbptyklbnjm", "FgqAOFdIAQSbjaClKeLLlxMmKlGwaFsNQsScFqxBLfGy") }, - { XHDR("qwsgzasgbpowkqja", "IRLIJUxfyjdJUxrLkRmpMZTObrWvTyvNqoQUObIeYaALbqELIwJZZecVebGnYQBYwBLIfxv") }, - { XHDR("thlwjotpmnsoisb", "SvmNmoIwyunDVpqolFsUKWZudnZoWWCNdVGQhCxEon") }, - { XHDR("vulfizlkirozgvbho", "AfxGYFStrwUQvByWdFPjGbMKevQMaUvoySDuPzFQ") }, - { XHDR("zbobjwxfhqmai", "RRAvVrhfognxn") }, - { XHDR("xpsyxjasyecdomvg", "umhjfCOkfoTiiZhVjde") }, - { XHDR("glrzimmrzmie", "wIDCtVLjLFqwnrJfnqtxQeTWacAobxQmXVZEpnUZL") }, - { XHDR("ocxaryau", "NUSaNnYVEBpfzHZaRGBor") }, - { XHDR("c", "rhqx") }, - { XHDR("tzdvbmi", "nOxGQiPIBSPLLwUoKaxKdWNCk") }, - { XHDR("x", "HPMXiOQOPOhbHXQuRBADgkJCfyzqa") }, - { XHDR("o", "kzIgjOWfpeFNFAJxJFkSwiXpJvUcaEWExhVyFxqEAVUDdgcuZmvvoa") }, - { XHDR("vvpbdoh", "DxTeRwKTqVHdERgjQNIaytVykEwVtrzdqIkPqO") }, - { XHDR("ulmtvhyiuhxrzd", "lIqdqZUbDrZfXjiRVYULpgvmISIVCuqJkRMtNwwma") }, - { XHDR("rjooov", "LIO") }, - { XHDR("lpljfhyz", "advooiVPeUtLTOpejYjcUMvKuOWYQxa") }, - { XHDR("odlnfamyeyzmgtehqcbu", "SvFqQRhLtbylBjwODTOYRuGRRcqUVNSvLmgspZCouKfomOtzwzEMWzhLLtX") }, - { XHDR("jebojdfrx", "hLdWsbtFAipoIZrZZbTqBmtEcygwxXAUISRpVXWfhPPzpUKvatsly") }, - { XHDR("arohlhrbkqkvwcudwbxn", "uiKuKtGwSzkdSvooAvdxCVXOfcLyCqIEDbJFejrEGHpaXpFGAbEHrwIwoGYxDozyOo") }, - { XHDR("i", "fDUcpsh") }, - { XHDR("brokocwjidmvmlyg", "RkotrqRctuimJrZkHEXSAmWoqGMBy") }, - { XHDR("qmuagrtlmfjdpz", "gHHdDtVTWyLZJmfYOreU") }, - { XHDR("gprkoay", "xWXNxRXVD") }, - { XHDR("eysuphssgazukjnkgooy", "FpuFVXuSnJUSEQsAjjPq") }, - { XHDR("cwy", "DvClZKQOsccloJGExMmxKkZlMnIgyCobrvYxUEwLeXcjfncUUHrIJagzpmmTLvwKGZuXVpIqkOUkkmb") }, - { XHDR("kjddcryubjc", "HfPpsYdhLIbcIbfTeZzmRHfJazgSibXDeOgkuLmIGIantyyr") }, - { XHDR("qjlwm", "rJpFBvdQboRWUOEbEzcaVptAcyhlufOCKyzAgmIYWHMRbcBXyyybiih") }, - { XHDR("ei", "nrFKzTjanLlalZKRmCuGoKAbKqOECYMbD") }, - { XHDR("lmgftbkgprgaqqjvsb", "JztbGPAayszKodnPilXQMlJNSjqJdzVJpk") }, - { XHDR("ffj", "iuQZfPiKMvmhCScOkblVdOXzAleZzaOVn") }, - { XHDR("utdcggbs", "FkGtJBgLBODTiSDAkjvwJAkLTnoqEmMJpaFFzA") }, - { XHDR("kjkwjmoeubbvmlzhnwf", "PmswyIBMktRDrZVqjFJWxdPUlmzg") }, - { XHDR("onzaxpfmtcpndqmd", "moNvGlYBwCLZvyZunbVSPvNgVonXPqDQXzwYhZdffbLkUWGXLrpXiAPGbsooN") }, - { XHDR("ddrlx", "XOrgIjtjfJzHVOuhRocJOQgVlZexbuMJsWvhswJjxHekGgXzgNCsmYSbgsUO") }, - { XHDR("pmjwfnpzfqhzdp", "ZVTexJSskiCKNtLEISxnOZfQflloshFmUCfOHcPq") }, - { XHDR("mh", "cUFNUIYroehjbiovzcBjEmeBZKJuGALFqbHohPsdWlMUgkfzXc") }, - { XHDR("ukzpxtgxsc", "csQswyFSARVZqVPNIUeiIzGFCKFZezRQYXGtR") }, - { XHDR("pljafteipf", "xJKYU") }, - { XHDR("jsoprxfdds", "tHKnfGhUSXhaEnzGwCkXtZELWRWadtJvlYPGhCHHbqhUYoPxmDaBbcORMm") }, - { XHDR("u", "kNQRAQesZEZKGWnbuQRsnVHiTCzmNZOALsOzVyCwvcRflDUaEsDiKQIUSmmWmFJXNbf") }, - { XHDR("qmapb", "gKpquwifEhuYeCQl") }, - { XHDR("llxxmaqfnalbxwlzmj", "hyFVkrJaPCNxSrHSlsBiuBmqZZDiycNzMllW") }, - { XHDR("akjxoic", "OBrcLcQwJtIHlxyoSRXVbgTReHPzbQCtqqZXlQlvWKwkKDsCiyJZUplNTsulMKedvifz") }, - { XHDR("abfqeyqwogqpohqsir", "rCDIbLfAeWjQXjsxsyoevaYAzYTsjjuROoytcSeRxhTh") }, - { XHDR("xnlnkaniverqb", "gkDIVdQGbqmWgnFJRmsMmiYuQBFeJpA") }, - { XHDR("qgemsztglwikmvunfa", "DTlOuSXnLLfnZXLfusZhmVwXgrKNnmzExRnXKofqvvWexRMJRTYVLrkVwoLgTCfEWUmu") }, - { XHDR("rdptxkoowvyvb", "CTiCjBkIiUJrfQamMAGWxwgmxUWYqmQhZmivCDhobpKyCjXOOvHntstsMBKqIPKYIMvF") }, - { XHDR("pgthjv", "PQObzUeiRQDiGLcIklos") }, - { XHDR("d", "JScKGSUUwCJfrpZNbLltMzJzdmywZwBCNazRunXDwpYhDXoZTwfzLEKKbKGdfuxSJ") }, - { XHDR("m", "iFDMoyoCPNWLnhDFAWFdeTbSoNAzcoKSaUUrCikfQnkfibEuhc") }, - { XHDR("x", "mcfpgyBMVcvoXrwsWdYbvDuCAfrSUyJLEsBEKJhmfXLMJaXPvkbd") }, - { XHDR("ims", "wErNVFuUSpNWnwtdcOoDJikPlOSlOPjhiAOutuN") }, - { XHDR("oonwfzsxvdgiwdltfw", "fBFbomzzVjAvcAJfKDdaaBLkzhKYccSftSUptUlvhLljFETxwkMqJvbLbKcaXgiDvVMNtBodJ") }, - { XHDR("hhlhmnpp", "fUeejYbpjZByebSRnYysCrOJipcBydBPhlmXCnVtwuQIOLiXZI") }, - { XHDR("uqcpusgiolldstk", "aOqATEANwgrSuikHEwNFusyYIdTszrDMAFXLzSmecklXoTJ") }, - { XHDR("ghamziycf", "npGnEMDVnXuuPbvAJTGMWDDQXefnoZnVrAkLBSbCnDgpSQlsfpmzL") }, - { XHDR("wfqcskudfaw", "TTCfJGqxyJgOLJlJKvbNolRwVhDsKLKAxEZtzkzEPpltsRhoQ") }, - { XHDR("lasrjfbpwqsqnus", "MQjAEDpeadhAEboKZwPCCFFVYvjMR") }, - { XHDR("nmklybetqmk", "VzHMQcmJKdghFGMYnUfrVLXImaJANNEihYZjJKRbnPsszutOxVpNf") }, - { XHDR("auu", "qkTnivUxzAtWfrTkgGWQUiipGCru") }, - { XHDR("zrbotal", "BjfsDPbscXjcnpTAm") }, - { XHDR("hpjeuaozqoxkwxx", "UEENidjpcFJkVXRdAvLjbQXtpltsosMzdXKQSrXSquetNeEbMcCTLYjovaFHFCOEDxSyHeCZaqY") }, - { XHDR("ccl", "wwdDVCUnDUzFQIgWCdAEovFlUcthHKSzockzJrxFPtPWAutoZiQxoRVb") }, - { XHDR("wahzu", "JKdoNSUlTnFFMEshevdGRUNLF") }, - { XHDR("wrdcjmqh", "wJQVATstBzeLAGGvNKqGjzbbuKkuDfsqydLvms") }, - { XHDR("odzuzneeozg", "vIbhomu") }, - { XHDR("iopjbfhbto", "ksUiDUlCtXbdJOYVETmGXvKRCknteoKMEKlLOObGjhfeREzvGOcMTYFIiqFytPOHAJgQ") }, - { XHDR("hvvk", "GmMeqNQPsaZtTsLAmJvMfWclbBMKrcVPvSKrmmZMOidzRfhVGozUpFtAboxquihhbhq") }, - { XHDR("pdiygzacmrle", "XnfHlmOsgHUmtJkIkKxyBUAcdjKIEHgINNAHlRXFFXyXFzxruQBUF") }, - { XHDR("gb", "KDZ") }, - { XHDR("ivmpnyqdefvun", "IjDUg") }, - { XHDR("ecabhlvnmxryfxglaog", "rycJRydRuRBhPUQUzwpgUCKgzDAdEzCOTTZiAOUgQLUFp") }, - { XHDR("dtfkwzckfqniely", "ocoqTUfCehDOef") }, - { XHDR("rhcjddvswypg", "IaIcfhQNxUPBRGsKdHDQGWpaLdkCFEuTtDBUugTEskSotaCoPUo") }, - { XHDR("ryiknjczqzbq", "DNfolkbBcmhIltWhWmEwEqFcHgbGiwqtJmczsniksPaJsUhTzatradeMMdTSLbIaoSjM") }, - { XHDR("bqrnvnt", "mWSrpMyaJfgvtueRsskxVSaPUjBzf") }, - { XHDR("dpkojsyviqsjm", "fgykKZXcXgmFyByzegOIFdcLRwJdEOAjKfJBmGUSyj") }, - { XHDR("dbvpahdrleovbtsmqmc", "zpHohdSzQdFmhX") }, - { XHDR("yxjegowtcyrk", "MpGxOynewaCxzukSdSQYGAmZjAbpnWdfxXoysJJFruoJtFYAtQofoDZrZxKqSVacZWDKPXfASwu") }, - { XHDR("fnnvkr", "XKcVUJHbbVqdusPauGsuiOLQmAPrkLzpcmnFsGzARUQjNdyCLy") }, - { XHDR("ofmcvseflpldihkk", "IAImKwmfGJPOFEyMwUESKpzZatKbgMwaqAfXrfQZBRcoWYMRTNGgJkRt") }, - { XHDR("sjio", "tGqqcELTqIEvLaSTGwhNnxMOkSJDQEKBMreTnmwJYmyABSyPInbdVQsLzngNMtKdyZZfiGyA") }, - { XHDR("rylcecbojowiu", "RxvKQnHqsCiShpRRGnOhFpVWBRan") }, - { XHDR("thdldpqoerxcrhh", "BMxwaOTZUssuRNFysoulgNoHnHRzcjbCOHdsyGqfqRCKrlzW") }, - { XHDR("hlvoxfzly", "tFihYsAyszXCxSVHbqSYFHruZvYHtQujlOZqEMBzFo") }, - { XHDR("vrszfvwd", "rTyFWD") }, - { XHDR("qjrwygzwennxfy", "NKpJUOnibUAuLncQHtrXIXPnrleXdxGDSaABsFiVsSRYNYBW") }, - { XHDR("amyvgueigsebymkeqff", "meHEUKXGpf") }, - { XHDR("nkiofew", "qAnFFKGddSWoQhJzpOdcRFrwfIEllKqDtnCvTPNiYEfUDgfZkwMaqFJaRkEmlMx") }, - { XHDR("mjmwmwil", "jXikWOkNwyeSUWO") }, - { XHDR("goibxxphizmezhmawb", "bSBAMnnwznBSdwXem") }, - { XHDR("hcourtftynza", "qWOhKZdzgoXhVBTNmSSRgMOyDGbgTFsRgE") }, - { XHDR("vrxsr", "dJlLicNgzQzgfoRizMALwAtVmYuLEPcYJINJEgfXnIdiPs") }, - { XHDR("mvjoxjrifdxbim", "lxbnbGaIQHAKVpYmbChraqmJgZjpQrVZneOUDHPbDSTlOOkvUgfOvKw") }, - { XHDR("nsqqey", "DTDLpcnPwTHBpwZnuvGjFTjBXrBScwyRbtVSiAsvRkxYBPEKw") }, - { XHDR("cmbukcl", "bYLNtywtCkhxQvlCLRacTBTdBzIQsXRYIesZHHifillmIDWMOqVmHwAyIMBooCjlQeOiHpWgn") }, - { XHDR("p", "YYjxrFyQbpDErOrxSENhpeYFYiPVJfmQvdSNqYBIRk") }, - { XHDR("bgtnrchybp", "EMHTg") }, - { XHDR("dpilhsapq", "AeYCLnECCJjRwZTCVtsqSVnKYKpnJlitYnrZczxefTtlJltnMyEYzvNXowrOLIAxzNOlUzorfxp") }, - { XHDR("svyoschalyz", "qahqFlnLnuAJqoMMVpyHTqNFeCMYubLjuEjmuJWeUeEhZrWoAFFzZRPfWOwtiMxRe") }, - { XHDR("inagfzsufhtniatjhnvz", "LLPOWCwHgd") }, - { XHDR("yerqabxkhmgbrqdr", "WFpsRpwTBCDONZIDMujHOOuFhCJaIuXDWIjCzpmuXQGANWMsRTMiMjBfto") }, - { XHDR("obpedpygkcahtmqocab", "QSiogqSYMvWqpExyOKyvBGsUmHuodZFXsLhYAnSLEbYalApVOJ") }, - { XHDR("tfstmeqypbn", "eqCKxP") }, - { XHDR("rusljtatnkwzrnwnswzb", "PJbYSMSPZTzs") }, - { XHDR("eifxbvhfbglxyjy", "RKsHjMvvfVDyoPpjB") }, - { XHDR("keaeaapfhkfzjeufh", "ogyDmvONZAEBxBYhWkXBAXaIPYWedqAgUHGTwun") }, - { XHDR("t", "kMtlCVYzKiKDkUlDCUnXYbRzOLEsLBOaewJIVbTLRoGs") }, - { XHDR("mdojvxexamrihlcj", "UEHaaihJxqEvsDqwU") }, - { XHDR("sycbhtamfdxzg", "fFrCuMTaeyvaoPCuBPPqkOicvvO") }, - { XHDR("ekizrisfc", "bpulFZAwCSkXXSMhaSmiwwlMUjLkptyR") }, - { XHDR("vyagwvsxhstqn", "eAOmxpWXJJrONuhdhgLsWSnwKNyBkiuZSdZpPJcaYfqDPnJeYOjSeHyIdbztrjnysTCG") }, - { XHDR("dyurvayoslqfeeasxeb", "wgLVhPhleWiXCMZExBixTKyy") }, - { XHDR("bivrflnv", "aONjCqpyDjbzoIJdLmWqAYfdPdkPqNRrELXcAnNZpIusRJTqvyuBhENQghnDXf") }, - { XHDR("zawbxbxqkpisgrfe", "gQymkvosLf") }, - { XHDR("tfybanqsyqvyqrujjwf", "aDXpIwrQIcKSyTiBYi") }, - { XHDR("rmt", "WMjxbmCCFWPdjXblzvPeXABSKHunBXKFaBiazbFGJYuxfabIiIOvWccGPvRmG") }, - { XHDR("kdrzz", "FvYyWVULbyvcSCKYFYgvLUSDQMWxcOombfWA") }, - { XHDR("ozsyzryxdpiudu", "tazJjcxmPKmmRoknYOUHmIeEzmjJeEPBFVGmLdPYGgqpIgMXIBsoYRWWKimEqrvrQAxHrvtTU") }, - { XHDR("dgjdkovsbnv", "Tsa") }, - { XHDR("gpqtyrahztqt", "njtTjajgFvtAiLxwTqnvmstxAuuFnJStyuRnnet") }, - { XHDR("yscez", "MQHpbglYDhBTMGSbOhYGbFNzPO") }, - { XHDR("cgxjelwftoizwuu", "BAZvhNIEpPVyIJYYPDTTgVrQAHYSAAQSiMfckhDLhXDLbTmNazFMHDHFSwvlohmqkcBNNfKW") }, - { XHDR("ammdxqbttv", "TKYLpixZYJJ") }, - { XHDR("nvnnvaynhm", "OXOwHAGANyJQqMgY") }, - { XHDR("fl", "DOIebUwKbwXlrQsaFBogbTsbzrFcCdoJBYYrtGWnBhVVgdHudrmFSGTdjwA") }, - { XHDR("pqtndxrcbzxijbvoiiyc", "EWVVwVOCfdfCfFCPJGATmMAwmiKfhbuXVkEEBZhKVYdc") }, - { XHDR("rde", "kLdTlkyyorlXlpFbUyePhHPSK") }, - { XHDR("sambdlgargwrxxwja", "OgzdHcTcFDDMpQYvcBCeloMoBYCmybZTNdufHiubXSiTfzUIQNwfjrJuACFUyihXgodTOlfQnXsRk") }, - { XHDR("llurvejxrd", "eWmjAwsscvBOQTNLlpXMeWPlCTwgvKXysBZaBzTcqIUIVHQkqrGTdwvZbavebvkhQkdZpWhPhbtg") }, - { XHDR("zoieonx", "RYllDZuKAydKxorSlKUzwJtSFhmREvXZwNR") }, - { XHDR("rsuppaxaqae", "owwbIhRDEXJexlcRqkCbkx") }, - { XHDR("hlxubbrul", "xliDCrbMeTNueIywC") }, - { XHDR("rouiyckdjzfingden", "ecuJNLSKQBhnWGECRsFogLePvQaXMUlrvbBOtKCTTjyPkYwDdmY") }, - { XHDR("ryknpeuqnzaub", "dixlKwfFzf") }, - { XHDR("oiyjup", "IWwaPEVVTBawhNxQQbwQDvWjmuDWmpew") }, - { XHDR("vprbnfenkoyjtk", "CZkWWdwuNreAiwopIxtIqQNtmZmEWUkccTWQSLao") }, - { XHDR("dapjwkibldl", "HyXCobTcSVDaKGWaZxPVRyHdapILDqOkKBNWqrvhhUPCWXGaoTXGztfpdUD") }, - { XHDR("uvgdypbzfxcrpiylzge", "hpeEGEoQjvDFoBcqjBuKQVwilkLbgSOJpxqKInJIuolAqKiHQFaKjzmgAwYFiuTCwvIh") }, - { XHDR("dduxcywlaygntcw", "DxJOjoVgVAeQHupLQVfqNuZCthMkpHpSgdhaIGoCZncLOehprfavLcvYVKcIxVJt") }, - { XHDR("iwgvksdoucmpekxocspm", "CMIKtOKMgrVxfQdk") }, - { XHDR("um", "HSRacjsJsdduJCdYMKyfeUdcEjBHwcNLqbXNVMQxduxoqYYnbEKPsUlJjtKUwBMnWXRrvlauz") }, - { XHDR("whtawlw", "OmzBFktdNkeHijaevttINxKQy") }, - { XHDR("fausigmatvxgnosxy", "TSIUoAkkdQudVXCqXuRMTMXqXYHadBezIKlvliUYrczZEqhcUs") }, - { XHDR("guolusnnwooq", "DNwjNmqRBFOoYV") }, - { XHDR("x", "snJopNBhwIX") }, - { XHDR("diwahbvo", "s") }, - { XHDR("xqvysngnjkwwrbkffbd", "yLTJLgHWUuydFkZOnl") }, - { XHDR("amocvtj", "yfhHklXZkAZAW") }, - { XHDR("d", "dnhQihDjSvkgfPYDXDxsPAoMCYWVgGZoJYWlkNAmeUHtIHUiEktEeuRvrRnEAcZBPpeofWWoSwfBljQ") }, - { XHDR("xxjlsvujxsthm", "PDaklTy") }, - { XHDR("xbrwdz", "hHKT") }, - { XHDR("h", "TdLcsOakhAYqvscIqRsneozCrj") }, - { XHDR("pav", "VPDBxZWiHIGPZaBglmqqxSTvTEUccutPyPXcenQIGJtJpiPRQoZxxnV") }, - { XHDR("dqlzembxxuqgyecfboep", "GKhtQsdPSXHoAHCymIXdzPEIfvLOfNIjMhHfqBCaFAINJuXPgnzeXMVtaZZTgDhZksmtekq") }, - { XHDR("pviqqodeoagi", "eIppovbSHsfVKmgNEciNVNFoKhVIZeBPK") }, - { XHDR("vchiulbgxscfwiu", "jkFgkeyHcdzWTRdGpjMAuBmIICQpMwFSyZxFYODgvUaiqkZydGZLdfiiusCzDPydpzPQYP") }, - { XHDR("vsvixf", "ZGJcyBRThJeFghyqVqCKSOQdVbmLOVvkXjnqhpgWwgvCNyFvxxiKMxFUZWrgpsKZzzjn") }, - { XHDR("ynjoknict", "xxeRdEBRgpsXNZnctBhJCdpaICRwQXYmXVgWnFcBhPaTYcbFYyeAAWfUOiPKTlYzlTDLanAmbhtkDMg") }, - { XHDR("nqxuqm", "bnuUaWNmxqwjFHvSkMsEmacscyYIZHoIt") }, - { XHDR("bygwukiouywyjfjc", "ECe") }, - { XHDR("rkmznichxkgpmkgvxje", "lTNBBKGMuEniOkvuJoxpdiPrCxbeBknskpEKwjMJGxyWVsegCoTMVVvClyltlzppvvy") }, - { XHDR("zfsl", "mKYRuieNyOqQGnOjyUmHuSeJlWHhntCp") }, - { XHDR("wwcqeergrnph", "yiwxpcfEgEsysYFKWkEkrmVeYTsbraKsgPACFOnPPSkVHLSjpTomKSUSPrsYCWEWkxGcLixzbFerZRR") }, - { XHDR("kibmn", "twERdKznXHunikCErwaKYpAHJbhMtP") }, - { XHDR("zrykcrslotompriqbw", "ljgRkGsgTBeuImgCpeMrKTYejLrHy") }, - { XHDR("nxqkdvduseil", "LIIfp") }, - { XHDR("pwukloavrirxels", "GxEevDdLVLocyYfNGIGJgaeqHJJxUmtRBqGnoTCrqVLpxEOL") }, - { XHDR("bvn", "bpmpUXSLlCYeaPwhgSsGBGIpjTJjDRbTTXNbuPaCVKUkHNdwfPzMQpEbtYwRRdLpabQZGy") }, - { XHDR("ssfzruyenuhbnh", "yvGzPQiyIDbCLXabmPprNKNSQuZtbNuntUyovWMoglTQWyPSRAVUqHJqGntjGkpwgzu") }, - { XHDR("cwchjajeqnmfpj", "RtodSrW") }, - { XHDR("bvhymrwzxbbq", "PlrOcClAXofzKmhhmSPOHSsSpZuymtjtVJaQbQawgxtEvCOu") }, - { XHDR("dadywooyowrqky", "qLRaNuKaSBOhyTlUu") }, - { XHDR("lbhsehkscybuvg", "JOtToRAfIzcmPUUxwUvvNBsuwABIuqLAiYljfvbfMjRyhCfBzCGuABEeLfytSKpBjOAngkipGegl") }, - { XHDR("fpolbdnnces", "fXuQdxxYuxReCqLahgmHRisIoymuUFUTXOpGLwGRBxDeXcMEQWq") }, - { XHDR("ihbj", "cqw") }, - { XHDR("iazpp", "EPARPIiEkcbgUdUfbjUw") }, - { XHDR("nknqfuib", "AIBIxilmiyquiNFcJQqRpHFllrlqNiuuHYeexzdFxWI") }, - { XHDR("tqzydbzscgbqmia", "rERIjTQBjPxMNVCaE") }, - { XHDR("isvrdkbjtxpxzfwpblne", "oelFOGzHLKDYfTdanYrKETTRCMqhEnfSMRZgzjhIqvmRaLxvXrXEJxqTUcgTTytlEjS") }, - { XHDR("wqjpgiloapbdqlfl", "BnmtzvcCnMQWQLuhdmykS") }, - { XHDR("nv", "CzxPWDrmLyUiNqPPgWAEBDE") }, - { XHDR("nygszfpxpnmwvzh", "FIUwsytdJHWTxoZWFFoJfRVzsgl") }, - { XHDR("hks", "WDucJruCLBGspndCJsXbrlYuhuAHwNYTfNRgvVEHjsjEnvYFYVGWkm") }, - { XHDR("duffvsypkepsn", "QDNw") }, - { XHDR("uuansknxemg", "BxaBADBoiIvhAmpPxVMtjTqPKPv") }, - { XHDR("rosmgmwhhufeocjtwhr", "wkSnjiQWMJGTSbUoqhhUAeNaAFFYfjscINyxsXBYXfUBYWLjVZsIdEfXXjxbgWcss") }, - { XHDR("qmjhsgjlvar", "lsHBsXXoaQOdDXsVIVVCvyeABsmfOeuDePWBEUmzNWTPRXmVHksYPZO") }, - { XHDR("mmxxkmqahseyhfistz", "ZBBwdKcUJvNabOVIPMKgxPApvtBKegqqOLFyXIlHQJNkZ") }, - { XHDR("odavs", "VttGCEOKLLbWaWrhtcVDzaCDyeYdnYEbNoQODjMGvsBIRkLYNpRBIaPitLsUQFQCmWhKyVNXknPCRx") }, - { XHDR("iyofqjmqhntyaxzuf", "uxqQbFRTyNINjPoQUJzB") }, - { XHDR("ggcrpozeqrs", "OOZbwONULRMvthqgggZvPyUaPGLKeWgRqv") }, - { XHDR("omqfagelnguscavafvg", "zaACHaDQxsJxLpqoRsXBmmOqiJHspd") }, - { XHDR("jxvff", "qCdlIaJcluHyipgRKyPNKKYTuJqBuqST") }, - { XHDR("cnvkkmsjtcjwdtln", "IyPrjDimViSzdDQkLVAAsHJVRjaJhWAj") }, - { XHDR("mhhdxhnusfockipjcu", "hftTRLcRfrpOvJAwpUPdgFcHeUnIGFkbwXGcDiqsPyJhGuSYNBYUMRtmNdBVxagt") }, - { XHDR("mgfsdcxazlga", "UeZOHFnnTAYxPxxMtZASIfpxUOWwUa") }, - { XHDR("nnhnmibm", "EzzKHThEsAj") }, - { XHDR("p", "jiHPkoigUkhjCpKuBqHOGzsEKvhQystXQkJcBaOkUVXeRKAMXUy") }, - { XHDR("bupzpbsw", "EVJIgKczPvmOuUInhGlLKbZpThyF") }, - { XHDR("fbprbrrits", "dCJUsGseQEfzCRBIMoDhqEOhhrWcwsC") }, - { XHDR("pzqe", "SZuPDU") }, - { XHDR("dta", "wtjrVyNnzzpeLhKcURaNuWZGzIVanigsJmcFaQWlxyttFKdZQmHAWDRLaeoHALUgArT") }, - { XHDR("jhiyboume", "lMbJCEqTJfDaEtuXiicXgQiZr") }, - { XHDR("owcqnfacndqpeeb", "FwJohplQbEBpOQqpCRajsSZdFX") }, - { XHDR("mf", "bWmKtAbDcfVbdTBArrtjuRbwdA") }, - { XHDR("cgamcd", "rYoFjwSLxAQzcDekExckVexTHPutjQwk") }, - { XHDR("uktljtbneevdmkt", "BwquwWAQXdMSOUGoVZQOjXrqcy") }, - { XHDR("lmhetxxbxdm", "VFFlExebaMgcMhhpQbkuNpNtYLNrTKboSTBrWgzXgsBNLtzHMMCCrdKBVfLuwzPePYf") }, - { XHDR("mwxaoeoyipj", "HqpLoSiUdKkWdRflKaCcGdns") }, - { XHDR("kxf", "piEwVrPhYKCxwXuUtMoxdrkjrKMVdNOqwVm") }, - { XHDR("yxylha", "BXVutcGUcympvawcPR") }, - { XHDR("twzjkoimrsqinxfycpi", "LsjtedRNuRBKPZtSALZETQIDqBkrCscvycwXYsgCtACf") }, - { XHDR("khxzhhdp", "rtrkXHiqHFXYEdCrvmsDugaVZFOkxizMdPcrlytsBtmJbeiwhjdGODdJPLauWjnPBS") }, - { XHDR("pysiysmgcnbwtueqj", "vnvnYvvjuGQUThFfrRt") }, - { XHDR("ynbqxzxswwla", "RNLyFDuHiSrMCwSYfHHkgRKqMtOgNyifFSZlsdRCHPcAChFNW") }, - { XHDR("maopu", "eGxsMfCvMrPzhXloWQNCtQYsxfnlHHFVjmaUmlQfeTO") }, - { XHDR("gmxcmqenprqdod", "zkDbwMffgrReWATJiHajbnlEfwqntpktjOuCbSTrSvxReJCjRbpUyobJMLDlEENzvsxHEnMRcYvRUM") }, - { XHDR("h", "WcNTITnfXJKehiUOHJHmPiDDFpEhGcpEYrbvkDrwPiDIGAldHBAyTRBrbXLJk") }, - { XHDR("tzwngshcrzupab", "mNyaxgllNCnubfOXtzJADZdZnXqfyBSlgLqMqtNyBXTNQYJEwIJJryRZHvqveq") }, - { XHDR("xwscewafcqd", "EIEZkAsCsetDGMNCfLqJETwPGwFGmNoEDSYhpwMeDdrbWzMzzaStwJxvjCBERglJ") }, - { XHDR("ooxfxnlryu", "KoMbwuDiJNjSiUbuEEZnmYhlJfaahMXgGXhOWReITPaTVnacpUQGoQFPFJtQlsqtYd") }, - { XHDR("utxlhuheyintfn", "UuKMkoqwOhkHUkrNIXAMTUVlCXOyrkZenZbazmUpvFpledhIwNRWm") }, - { XHDR("jndbbecguzb", "PyJxNsDbBWHvaJHabHY") }, - { XHDR("ijpaazs", "GndHxxWgHMDkZWPpWICJJOPvnHhezggy") }, - { XHDR("djw", "uEvuBj") }, - { XHDR("wxkxvwhxpik", "LevKDGNlMQAUmJYEqlqrErgZuLTMMiGefbCOooRWOeccZiuyBihpCPkPPHkF") }, - { XHDR("vtabezsvqq", "ReuTGUGHKBFkovEptNLvqPYlemoQZGJNUabcVErQTolUcy") }, - { XHDR("fsigfxgibaznhycuy", "rycantdDMBTNPRUvvbIXdnEcUGJtsEGWwiwHEQhfevKyKLwuAXtEuhHYrsnptEQRlLfe") }, - { XHDR("invvjaavemm", "aJdTLiGMpnrrHMybnUHyguRMVvcDzoJOlPHreJSfaiqSKVvyigZUeASMbEob") }, - { XHDR("ekqnlvsmunsf", "sybJjMaIU") }, - { XHDR("qhjhghac", "jBMHEXbtTMvpAYrOvdLPOUgMTtldCxAumKUFzH") }, - { XHDR("zgagezilluyodvajqew", "NMLNNLHfZ") }, - { XHDR("a", "BkKRQnqALTiMPeIUuWnzRWyojglZRfIGklYrgGspwuXLkljIiWNUBdYx") }, - { XHDR("ov", "zZIYkmzoNWuTBziPbiXuH") }, - { XHDR("l", "uRlIjSHzOkjrToKHepBir") }, - { XHDR("i", "XBosKKlkBmldgdasGoPnXXbRiJJtaenqHqshTioFHFAWoqienGXppuPdKjgSZnT") }, - { XHDR("roxqjgywqc", "AXVbnSeoIpxfhqLVwZvvOlyaktBQSVYrFqmjBMIoiJfQ") }, - { XHDR("shuzenjqanogngigip", "BCFWeVSDzbgqSxeVdBIGSPKnxGEsYILyWvDjZAtlANZwaVpeWbRxlUcsgiKatH") }, - { XHDR("tyeevgnvslbnr", "HDUtBjrTw") }, - { XHDR("jag", "iRArlLCbJOpsgQuLRAMsmWxKcnKHLBpXDEmQUEIDoPbzclAycJbRUmFGm") }, - { XHDR("uyacmtbwa", "woBXGucFFLAmkhbJrxspCATuaLdJOhnsCPpcjwuShhkTVdmZBpeejnHLGWfAiUoWOIatSFQH") }, - { XHDR("rmfntjtkh", "ebPLKxrXGiQmHkxjVaSmzW") }, - { XHDR("wocafzcqk", "zxZsaNIWprCRrocrXbkYSMHYcVXWLVCcVQJEm") }, - { XHDR("dxtrfbcjc", "yiswjowXSzksfxrtwRHwmFXeVRpGrDEDmSPNtAHjSmFIvtrdJiSfJLOKwhUyDzdUUqPW") }, - { XHDR("aviyybczf", "RUEpHVSrcCryAkdsghIYKphHtjeeHQPjAJGShCYXJiePwXNtaHJYVRBrXmCfgSkgUwkMYekSCtosj") }, - { XHDR("glkrshwxyouqkmwry", "mmIUnKVSSrOiDlNSLTWGQvXhsAnQWzRKWyGWvhbFYJuqsdcVQtTJH") }, - { XHDR("jeeechaxgiznecxzsu", "RfFwBWPgtgsHzmpYgTFZdsFMQEEOIZtANMPAHBPvdkqyFUs") }, - { XHDR("beerzvhdvgcnqsdojyve", "mWoNajktlcrnsAsnerzsuONMYwAQdFUafGLydWElnVszAycxaRLvTYWZzpODaGWOKtFTHzJnfEdYIwZ") }, - { XHDR("iy", "eJXozZKmmspOPFqsDQhRERunZYdRTqpVSMgEHusVlAdnBtTKDpjt") }, - { XHDR("qubmuutnal", "rJhiOPcPkGdYlnfFxrmpGsMKYZPxlQHTBmPkMjAOkbRJctqlytbQWEx") }, - { XHDR("jy", "KvdbkjExVmnTnqYFDW") }, - { XHDR("ctliypxegrm", "IGfFmSahErPahefBHrjuEf") }, - { XHDR("tzjomc", "KSwJAVrPqiKRyvfhMVvXaUXtcrTLeueFycehjOaQBMqiVZEqXWJvFnudckcTbvDhOcjtGpKlVMwu") }, - { XHDR("dcwuqdoyrviyq", "rTygueqtUbaGnohcrmWujxypYiQLkfsvm") }, - { XHDR("hwsbzhxbouwn", "gOeXeFFkhTQlaGnpJfuHLGqFJkksTzFoCoTsLbOYPfEfjfJNTMQUkuEmsiAjkPDOHOA") }, - { XHDR("gbvnjoqfzifypkcioya", "WuDswVMLKKfIfOsCIqwLVXqizcGzFGuSJFLRvxbdXVdiBFEmpEqKKxUPOkeCzAlpiHZsPL") }, - { XHDR("clfkxscjqfhy", "wXfsSDtsD") }, - { XHDR("yphbankwzekxg", "DpyfHMcoVag") }, - { XHDR("nbnedspgyee", "yPSHjxmumEDmqUAmckBb") }, - { XHDR("afoecf", "CaZsnljmsre") }, - { XHDR("koykttwozcnvvdgg", "aTwZGryvTxRkfPQbKbYikrjmxm") }, - { XHDR("aecczyboeudltqipy", "keylLRUEx") }, - { XHDR("juvjtsvo", "OsmBHwKLRZCoDkugiXmyUqbBwsICmQkfyRGwzNHBCqXUtZZXgfFsLfDehKrIVatbsxSqEWDEyPnYDSq") }, - { XHDR("ssovmmvonurkj", "dCCophecSNhcbD") }, - { XHDR("xeilfz", "OhZRnWEhheDxQQysMadAtWHRjntEAfuNisyGpUHfqYNlNKOKfLTwweMqRT") }, - { XHDR("amwgqukuhjprraiba", "fVQsEiMXAoMZXVFeHyZEbGKOFOGfPLKbuDkIOLiTekOlmxCbCYgNbDbjsYZGbOtGtajjK") }, - { XHDR("zvnyjazvmqdfcipjspt", "zCoOgqZPdwveWJEzscgCFCNNBszoesOxGvfiirDowufQgkfSBHcZVoaTkzSShvzQfBYZkvoABb") }, - { XHDR("hdyakmqnmhuyf", "zTHWqXb") }, - { XHDR("uhlsxlladm", "YfKioZPjyPFDuRRUwLoZMICEAiZlqNmIaJKlyhwdoDD") }, - { XHDR("fvbcnkcxhjnbjfyg", "Sxzgo") }, - { XHDR("oqwtnjdgl", "edomCyEXrktcJhCFFcVdBTXLwPsMsdycDolZaNBWWrkoAQKJcjHXFeEPEPCeZqdpihIo") }, - { XHDR("mlzxkbfwqhnvpb", "TQgIhRqKqBExEEsuOfjNYiWWEFiLRJbAdeYKYlstyXYDfcbsd") }, - { XHDR("vgxrtswmmo", "SgQEjegzVBWIDhNyMlcr") }, - { XHDR("euaknefhxi", "RNKAvXEKfSpPDzeVxDEuLttHMUDqeYVfgNVEjsmeLNLzwVwKt") }, - { XHDR("okmntyhpwfeiyab", "LVcIZWuZuMWWlLwUVdQVqRK") }, - { XHDR("ksnqd", "paXJYWXImKxVG") }, - { XHDR("gloejieq", "IEjDNttWqxLRIEwhChrhtrTtessUzlfBKiwDglDwFvvzECbGoWIzAciCzCgESllnECoUh") }, - { XHDR("ofsmjq", "ecH") }, - { XHDR("c", "djQhrLaNKwMFKXXGEYUKbicGfeDVjBqSpXjDLHCNdyHVbLPOHCFErnkCftiqItqhUryUUqeiq") }, - { XHDR("yhqzdnblwnwsfnmjf", "frKENbHrWgQttuykSMtFFkCidxS") }, - { XHDR("buoknexdmf", "kJJPciDVhHFpQoUufKmohmybLdFgYOMXKjuGffNdco") }, - { XHDR("ijv", "kTUkXxHbSSNIYQwrkHqfKNMZDPhVGwXYZm") }, - { XHDR("zailuldylnjnbodnxfy", "PtOrZcCmYayyMVcVoeYevogmjXkObcbJbaZDowIexDMdZItUHNlVAgvKeZeqlp") }, - { XHDR("wyskwt", "VtyGfMXstmQdmrpwCvLMEaVZaehjzFrDZtUHTRtufVHBKwAlAAaEpCYkLvexRSKRjnmbGMT") }, - { XHDR("rtkg", "rmRyXTLBNrspTilqzxjyTcYEcRwfwiZtTgnpHmgtlfaFrqpdKe") }, - { XHDR("qhrpgetqfrtannb", "MJoMBOvBrJBIeJXypSzUvSSJDjJCuniWHZtQSWgwGFEuIoFeHIXQYcGiGStPZuIfiotyQftEgPNOK") }, - { XHDR("capchnbdtxxbojjmd", "ZpCGwRNnOxUUiPuKYkNQbIcPQKphtnhknvMRwMAMcxjscNWJeKpJxONdGyP") }, - { XHDR("ge", "iSDuOJytbRMDGGVWuBgOQtWLKlTnvAVSCksFEQyoZYqPAlecKoEc") }, - { XHDR("f", "aTtVnfBxmGuJiEmIRHjFVelqPKPDp") }, - { XHDR("luomz", "gamEzwbBFlrbHXMnFWMNlMdtSICBLUbRp") }, - { XHDR("xipjjkpauudmvwoo", "tECmwTvfa") }, - { XHDR("i", "y") }, - { XHDR("la", "wKjHYjsvOiNsXqmTOdbQzGtyjYaDIuezjGxyGDQGdWqODKwoZvP") }, - { XHDR("lvfvrplguzxoqm", "RJiqDRsQisYnYVwsUvKgXIIXkEILfArrclQekcmdbRlgnpEyHxqQNQKKGFgIEEmPjeNmlmisjtOst") }, - { XHDR("gmptidwuhewancewcng", "feMxbmQHdtgaNqMUKOUMXtkJebf") }, - { XHDR("twmxs", "XVdMJRuwQlRTaBzvFVbpHPuFvLYiYNbbwwXnatGGaOREvzks") }, - { XHDR("tzdxjn", "bpakXtHeIXxYHpHrtkwvXeQMyhAzyOohgxbPRAiRardWQiDcyAYflP") }, - { XHDR("jfdaftlbpulexnel", "fDiCfNhIFMqOEMcpyvUpHvSXlcBZDJuNzlqWiiAZIT") }, - { XHDR("prgqguczyrjlexaubmc", "r") }, - { XHDR("zddiqwwtkjrobrfp", "yooEEnlZgHAeQ") }, - { XHDR("iukrfkkwsgfc", "GgKWSDlLhtZxmp") }, - { XHDR("aixgjmkoacrqc", "ETNmjlRPtKuXPYTzEfEfHUSIJnSgLmENUGavkmcAnWqFMafYBJXlgbLpmmSSAUhj") }, - { XHDR("jmmhbnjzvjrhgpi", "fqkFC") }, - { XHDR("ggiwdnvo", "HB") }, - { XHDR("q", "VGMvZnyabbvmmyL") }, - { XHDR("d", "pTcsfYnuuMWrB") }, - { XHDR("cfvs", "cEkJrXxikarHu") }, - { XHDR("ptcyxuadnisznobf", "ggafIqbbcbJxTuhjH") }, - { XHDR("hraheueyrtpopsrqdil", "xrlsulwkWLXfvUMsaqgXSHKJB") }, - { XHDR("gzfulviyrofb", "MWMieasCDSmlbceynvkAbUYaeylznXtLiBRCjmvpERlZikhn") }, - { XHDR("kxlooqdgsdbugbswuu", "bgyehiJLipqAFPrNbyTVMjGBbEVwgTUysgHiABuHejJtJGdekkemOFANvPmiuEEPfKGCBzaSITBQlc") }, - { XHDR("rurzpq", "QFEFBqibtlinhRskDDtX") }, - { XHDR("qiqjgndwkseraolaf", "AcznRCJDLVCTwWSlBJGcvbiCdUsuLhgEDMXFkWuO") }, - { XHDR("mnftbfnhhebx", "HoAfKIt") }, - { XHDR("gamnmtsiq", "XuiG") }, - { XHDR("eeghvno", "yq") }, - { XHDR("yemeb", "SiFyLYAMAza") }, - { XHDR("xrttcqqailaupzjq", "GZUJmEXHiXQlAZIuomirgeDqzVYmWhOstvasGapBaYHHvzcUobctLgeZzgKzYXczmIftdSMSL") }, - { XHDR("velpjafgmhqc", "AkbXkVipvRXZduYMa") }, - { XHDR("oaxkdu", "gVMufiMqToAPTeZPuGReuMDSPJePjAOgqNNYuLicjSsXVFSNdGPiHKXfQFwQuhyOeDTKlF") }, - { XHDR("tsaqwevtp", "fUbnOmoDQCkoJeXUFvpKXPeYhtoaqrzNXdPwxIebxskSafrXlZDsjoKoOpUPOoPvst") }, - { XHDR("mceheftdr", "KtEAMNWuDqwyCYxVGXZoFIoODQNNnxgrfIkhAKhOPjrHEpxMIYMaVWqDiYNrUoErLcLublLl") }, - { XHDR("ckryavazcgsuu", "dNpOiJZfYksHxWp") }, - { XHDR("ungqbzzr", "LXmDxTgBpvpjDliLuXHdaDoaWoxSlNqaBLyYLYglBsonXDmMpUSgdyfnk") }, - { XHDR("wsfovlodnfboxggdhz", "hcZMUAVkNLNLhrdvaFoomcBBkoMyOVvBnpnmRphGPNENhiwmRlQzvfdmBOAWkOHHPQky") }, - { XHDR("joctap", "hxPQyNvXOOFpfCWKwPNGHvlX") }, - { XHDR("egqak", "QWBzuRUBazfYWevcbzSmQYYnoigJ") }, - { XHDR("bstiyaq", "kuUchQrquMvsUZLSqsKKnNNSBnTUPymwduOoo") }, - { XHDR("csejv", "KTzBIxTiIQcjCqcTGdpiSvtsgBbQUtUyhcttAeTImpqqPWdjVxazT") }, - { XHDR("yxngljw", "LgRsojxhVipHvTxZetfIYQwKHoFrycVRkXFYwljxXMJNtK") }, - { XHDR("v", "eBKhEgpupZeUwajMYQOizXVWrWrQOclkRrEoTgaglxTKESSwSvqpK") }, - { XHDR("oioy", "EQyTJfuwNKSSkFbTlueQDVsTji") }, - { XHDR("wsnalfzsaftrcqbr", "sxXpTKUqFXUCsuHMMldsteVEFXOrXkcXFpMIJMRToLgdMRGJuEG") }, - { XHDR("e", "ZUbChknaYjVdzTuqilnxuLDcRBBVrzQVW") }, - { XHDR("qrnksevwxe", "YXShgKSelSkABGEBVIxMANFXcpvkvAkpTzUZX") }, - { XHDR("jstwbcwkoebm", "JkvbGeaqDRr") }, - { XHDR("ruektwijndzakl", "lAsBemJoyHtZDrjnEEJNLAJHARBHtMmDgwiFxGVdUAbOfSLRNqaSDmirMlRLfyQUnCbBe") }, - { XHDR("nchjqrvfvmwdgwu", "mQyJriDkRMATtorMeLNgaWcQLCynAhWXECIZQUCkgArZCWQapDlBadXvNcCV") }, - { XHDR("szagxcvehdxhlfnaar", "DauTu") }, - { XHDR("vmgqilyfh", "uXQIhDEKdqGbrwzqBroGOVFPvqwQUWU") }, - { XHDR("mdsxquwqpnjil", "XkVMBNVkfurzqPZrdnwo") }, - { XHDR("mgltjepyhzpl", "zzHaRIEAVJWYQOTfzisOMitVRhYkPjPzU") }, - { XHDR("atodtorioqyhxizppr", "bQonqjTRXWzSuTmopXDYETVNhcCuPpQCAMpQyrZQUCRqUHRFPrhqREMorkFFT") }, - { XHDR("yqzopo", "oNWvLVSQPlEjxYEpVcNrtAFkfEPElfCGYUQXnjgv") }, - { XHDR("futgucatsubyxysakqur", "DqqjuQepxfgYsitvPVQDHMzkhDOMzhUGCSbGtUiZGTyS") }, - { XHDR("pjs", "OtepKYgtJAYHBbGCWqBiTPjLGbEvQzeFSUzlHceQXqplhtgcbIbGECZgLBzhpbJgVqGXjPGKhL") }, - { XHDR("uysfwlczfw", "SGzhshVnWhsPbzchLWSs") }, - { XHDR("bwrs", "bxPNbOyILuYeHJLAnAdjlVbpTkIPoPwrGrIUKydPxVpbpqZpsAk") }, - { XHDR("imtwuwd", "qlfqsTzHrHxgxyLMKIIPvQfGwJwFIJJielJMccAanUfWhRQBPnckEFMtxNnPZoJwyvwegiB") }, - { XHDR("xxajtsxayxcehyg", "KfBeInOpRbCivKKHyOYbyuJdDFCtWMeadgsgmDApYRFiltLhlqsBTuqFjvHNaDKABjNQoEmAOqsTcSW") }, - { XHDR("rshrvixdyqu", "buQSbyVpRcVsDpPLFIXsXovqGxHnlTehglecBFLrqLxXTQXbrJlqLbarFPEtrJqMeTppMVJm") }, - { XHDR("dwzagbhubcdgo", "HfCdLNXeMkvYjnEUQuUsybfamYIzBueDQlaWldtxJaEvplsDhcFqcJBlqruVKqYadvPqaqTfluBhYq") }, - { XHDR("s", "yOcxCdJCGCovDlZvNPQlQethMBQFHOlZFCztYlwMGf") }, - { XHDR("ke", "XDkPLFGBOBrfGVDYSHSNKmOBrEFzXrdztmZHOJbukuTbiaxTRiimsLoem") }, - { XHDR("qjopwxsvmdqpsm", "joNHpJfBTjMIBjiOTXDOquGpEVyDHtZqdzNObrGkEPMXIRpBoqMghICgSuL") }, - { XHDR("nxhthnszcnpl", "XXSjwJzFKtJNnvSgWlYGGviSmXAJQAaUQNbtwYakXuaYGG") }, - { XHDR("k", "qqoQyunIZRz") }, - { XHDR("xseiwoypkvxdtcy", "sPvouL") }, - { XHDR("vdykzsgrgvwvvqq", "BPzGjEKxNQ") }, - { XHDR("icldginhwx", "OYQnzBMaHlFrTFfwateNfxLjLYgR") }, - { XHDR("bbncmntz", "QrhdEMpEcLwpiPREMPzloQbLenBYUtCtFOZyEkIDXvwhKQLIADvRJbTFLgMJtJhtWudb") }, - { XHDR("zxhynusigyzod", "UNojknjQYXigCd") }, - { XHDR("clan", "sWQIUefAhAVEfFFzNNuPMFfJzuMVmherKfwKJEVTSAGBbCUcJU") }, - { XHDR("utizjdfvpsdd", "GggrPfoEYOCoXNUhLXCyZWbeArDgccLCYNskrssTzVKiCAdVheXjU") }, - { XHDR("qupzxw", "HYyPIRgvPdKY") }, - { XHDR("yjd", "LUwCIJEwIcBqkiYhqLqxpMlchqNjHmSehlVvWBPcLmMVXcivEYvFQcoJveHbvaUPTuWei") }, - { XHDR("yonbjqsthhdksrqzai", "kpMsIwGaLftpiR") }, - { XHDR("vl", "VNnyvLxTuYdHyYwocztpEPz") }, - { XHDR("bundgsjactnytstmnaco", "BWKMWKWfZGEfvodUeCONwWZqBullnSFTPeyb") }, - { XHDR("kjjixluaseqsrsiyc", "UdhmkKdiCxkkiHJkXTjZsPGlzJasMIgWSHesWROnMqDMVvYVa") }, - { XHDR("rukrmlnfmokb", "qUYppfwvYSsfthXLTmtyeKfsePDpmGamwQkQxcyrtuAtAGaVOuW") }, - { XHDR("cnygfzlafirageebi", "VGcLHylARPZdJwqdgulAaMmdNwymWhBYoCfnsUlqqSbEuayEzmYneXXVjCQSYOOuiITLQDBD") }, - { XHDR("xjpfltmqcho", "vZgdkMUEBxHH") }, - { XHDR("nelqpuyoejiaytwgq", "CLZOE") }, - { XHDR("aoljqkjbfpvroepmwmjx", "FcGWtXpFowqYWHhalucDsCdvjcDzfUHKwQAiQnyTSjInbbWBpbPYXywPxStrsqQGV") }, - { XHDR("naho", "EyrXyWlbrknMnYCHmVcvtsXFAmavYdMHrZrYSUmPkkcVVjfPmtymxEMFVkzoIt") }, - { XHDR("qcebobnrcgcoqhibp", "SHyqdsIQSPjFVkGEuFqf") }, - { XHDR("vdwwzcrqexi", "IKwCdSvPuQWoXgdQcVQwUZJIebanbypQLTxQknuleOXzNhdLa") }, - { XHDR("phyrul", "sPZYElmaNzNljixCwpvYYDabqZf") }, - { XHDR("qvvz", "bONuqlrfWusqIuJQxgbkZNBilZXGAEdzNdNbjLeNgEU") }, - { XHDR("zgwuq", "SZPqVs") }, - { XHDR("bgwukbzekfoavwboyk", "fwmiSCQdxaWNqlmjPiRRoPzRSZNCRCgJtvBOALBFMRDYNMqbgtZANcO") }, - { XHDR("wihyzlq", "atzTWokHFQ") }, - { XHDR("cujjusxbxxkrwxpsd", "amHGzNtzGZCimeFUoseATdxWwsZJR") }, - { XHDR("wxqbwlrm", "LqMYlENZKKvACITqmoAfSHMLtdRcIPZYcBMTkAccCpCDpXJmjabDyBsqaxHprZXjMeZcsndZWBqusMz") }, - { XHDR("vedec", "YxXJoAbyZckbuDslrDHWqsNOzMNvxbYDHGgZtGjAYQIDsWvdtKsYhgieIuHHGUMicIlfjozg") }, - { XHDR("bgddarttwzoistmz", "slkJvEz") }, - { XHDR("kghcfepkoazqhnb", "uMMCzvbXeQrhPPsDSzvIUDQZENdqotWhEcIlHkKwaUEymGfhWnWgfREcfwjAffakziHKZqbIRnPC") }, - { XHDR("sdwpbsprwwlhmukn", "zZteaduUTWCRxCHUBujLCARNKXHPLyBJhmvERuIMqSbCAnQppguXQvntZ") }, - { XHDR("lfygy", "QDlwaHbpviaLDRHKYrWwTsBEwbebQGlymOWWQQzDkfQvOfDOyNPnMhwBaFseNwjUAyzBOHoRoBylVnj") }, - { XHDR("axcldvxzshwc", "QOrvBJAWCiDEFzgmqj") }, - { XHDR("wiywwulhjnacwrzatts", "ngaWOBiPzPFVtxfKPJkFfdAlFzspedrhQQdCUyzTKocppelmLoPbNMphwZsKItrGQ") }, - { XHDR("tfpfok", "dosOYGGVfnjYNpxSDsXFtWxsTFOCxSzoODnAAT") }, - { XHDR("efnqfjj", "fUpyl") }, - { XHDR("pohgq", "xwpPheEZqEMSyxfUffAidyxmWADyEOMHtPXC") }, - { XHDR("gtyttrbgmfwaz", "hwbBMUGmlZqQeCxvtYkezQLWp") }, - { XHDR("blglaq", "wwRxMMkzbsJAAApzDIByMELAQVWIVWGUBGizSvKfqGJKJGVPIvVwPgFYxTjKPl") }, - { XHDR("wdibglugquba", "v") }, - { XHDR("kytxsoqabnhnfj", "zeVnfGjpXzOpWqisCLlwRBiwhpCGDJHPGqqhhUANbeFUfVonliJMqqGCvHmMBaMQN") }, - { XHDR("mvctambdeldzmxwyzu", "CFOfqfBYiPFVeDmKhoBVpweTIOuNxelboFptOyNpqfEgqPtNXEopKeCaTBSgVqWXaBkcCiHltFSYdj") }, - { XHDR("cgisbjzjxhmpivjxg", "RMMEmOySfSKXjRyxWeSRHPRXxBTBi") }, - { XHDR("pxkhbwouoy", "REnWSPMxzpQEsSvnphpCnglAqiCeXXFeMc") }, - { XHDR("grcayjbymigcaxnp", "vqmSmwORKFivhURQyHAswgJQBASS") }, - { XHDR("nzzzutukqo", "RJDVvnOrESUzmmhgHXFqBTtHpCkgfpsqJxhRRWMkWzTmU") }, - { XHDR("jvprymkfoe", "GYnZVbIdPuDndGZTcwfQgAQIzkIvzhXXqbMmeGRkHTLBzDsCoRyhocTsRU") }, - { XHDR("r", "srEYETxjitnSkRrtFVbrPgyFbLuclzZNXIfymjDFygzWyUbpJbZKobMVSbd") }, - { XHDR("vbgmsiglw", "npMHbp") }, - { XHDR("rawmwntugeqrxg", "ByspxYtVajvPyMklNIXozv") }, - { XHDR("rexrthbdnrsxdily", "YwHpqBxsxvfIjNWsMp") }, - { XHDR("qovefhnjplytj", "IOoCNVbPKTkgtZWOIFmWGaEGHiLXbhhmlwxiJDZFpJhaLJWJqBRaibADcQxM") }, - { XHDR("zxtjvoxudwd", "xCnMxapNgjUDrLwDyEHFYzUQGLikrjCfNUgOtUJBuzuWFOexxYQFzU") }, - { XHDR("csxsdmvfygmgolbb", "MMNXykgzURLnjgTzmnerKyhmJGCWCByAEtSELuFXdwCYGRdjDIuzmJAAhRuOfJNPfEeSp") }, - { XHDR("qygcuqucdvkyjwoxx", "YwdzotTzxeAKfFiIyGCimVgRVSDXCobnbwHNK") }, - { XHDR("q", "bLDfJFiILquVKriaPQSJpqVtsTaUcWZOnr") }, - { XHDR("pld", "vfaLApaN") }, - { XHDR("cpdpnydrnv", "uaHroAAZfMPGLyKuzioolb") }, - { XHDR("erahmgfgnvfaosjzn", "HLsqXDwTtFsLbuaeUcDUWTGYbkLCdWpVwcayWtIZMKlgKTJbEUaRSYUmRRr") }, - { XHDR("tqgvbpcnl", "IRClvfMRtoaBwWCXjDICwlkeaBqUtCyWKprUuwtzud") }, - { XHDR("yklezyuhbwjdeykmz", "uuM") }, - { XHDR("glcnraadktaypt", "yt") }, - { XHDR("xrkxregavvjxg", "jBOWpbgTDLuJKgcZxJiquOFzIKQPzIkFMEPIMGVMlBMTCxBmYsrGRmxEcCFaq") }, - { XHDR("dkidud", "yvnxomQFcstdrLAkYNMgzOXvhRRTqgtzazgzFgeM") }, - { XHDR("mgswgxchpvnkwsylodg", "GRutOjZoGjkNMKweXgnZaBXqAbztEVTAbKwvIWlQCA") }, - { XHDR("uahkzpeanfzpczabu", "f") }, - { XHDR("ekanqeyqhawfditnko", "HRpRByrzKuSsqVCYZCvAAQXizUuBFLYbGZyuwyTh") }, - { XHDR("vhmplqpupbhpzdt", "jFnoNomCIPufXtLhqbqqPfcMsVPUlTaKwkcKhAEtlXHKsrkOTwHSIE") }, - { XHDR("scc", "QQmZCKyOgisSRYJAnVgawqtJBFGJULznwJoULFeMcpfbYmbFbfNxDE") }, - { XHDR("dguubr", "xSNqtvMGxcPgigUVTyMqrGBRYpmWdqXBRnuYRNWpnyWDRbLSoipY") }, - { XHDR("xsixghcwlsst", "sTaKsYQvIdufUfoWmUboQZeDILlSILxGUIjfIoyxkpxPVVqAGjAUSzZOjcigxbFq") }, - { XHDR("ahteovowybdwiolnxnro", "GmFOFalVszZJKLiyVdyKLvSsJXjtITqWIIxZEOLfSLNuLMyTNrEBsFskNcTtdQryduuuSFIc") }, - { XHDR("z", "wqEexmcZiUkgzmeqaEtAixDPtNi") }, - { XHDR("kfliypha", "nueMQNnEhpNmtpdVsPQpdrIuCqQWMhbjZLyNGDYAGlQoRRmgewutUTPAvvJevNPnMjxlUueowXPL") }, - { XHDR("osq", "uKWIGtKkTZrONudiIlaYXnraXDgHaEqqJMpTolNFMCQAqsJZ") }, - { XHDR("uabjuglbsfmfgfhrupuh", "OcywLftxghDLVJepCgdqzWJQzY") }, - { XHDR("hmvpma", "mWDOKQVyksuuLIHLbzjhRzldaxCkVzeSMVZdDNBJrhkRzkPzIRUxRBQvNlxLYpSeSFmXqtreBAIsGlH") }, - { XHDR("wwcmbpopreecpq", "wPAgSHJtsutSDiplaFhpsMcg") }, - { XHDR("wslj", "ugomdPdDDAlDHwHTqMBuTzJSzOngfKwGjcWOpMXkqHhsiThJbnGblbPGiBZNsWqPn") }, - { XHDR("xdtitqj", "VtmLJnEPiZIzpvE") }, - { XHDR("qwabjooiiallpbznqbp", "srPLxrMjawWlQGOOpYRonWfHXjaMrGBuXZqtHbcrfMEQSrrOHQg") }, - { XHDR("t", "KotVpKpAzxXKrbVpjeuMYzqjYRAlwddKvVvQITELPHkuAgXWSphbZDMHoUbxTYBesifjvBCGWBBpiOsu") }, - { XHDR("hglf", "EwyyEpagVKgzBbaq") }, - { XHDR("rcvmubkiwytj", "IMrmHBmkLYEPBgvPkCIvQ") }, - { XHDR("krzlc", "ebQLlQYqfPMnQLbJENQYAfuSSbUvsKYarvXxaatvlFcFgMV") }, - { XHDR("jwpj", "ew") }, - { XHDR("w", "PIyKITREsUZmpzhnvKitWYcGhbDWEbzVrjDFaATGWqHigOhE") }, - { XHDR("mufbbfgavczmurgj", "ZiLWYOrpgSnGRyfuwQSNCBkYDIgzgvUXRwcPKjaKfkuGYoKmFAromHFKGpbcyBdLHvTbbptlRrhLhoCb") }, - { XHDR("mbfuqmztket", "KlBno") }, - { XHDR("t", "jIsTSSvdgRGctPuDaygXFEAqPNlkErVgIUaYgIVNffooLk") }, - { XHDR("hzdytcczuamedrp", "Zszx") }, - { XHDR("fdmixewtrrjfvj", "JUMCiBpqDwwFLycVbnkip") }, - { XHDR("jxhtqiihnad", "VVRbEUtIITJEOCcRWAClRDE") }, - { XHDR("bmbkuzopwdelpvb", "dEPbZ") }, - { XHDR("uk", "JOgKDGLbpjqkRTiORjGZpSp") }, - { XHDR("rzsjfeqxysmpaa", "RkaoRgFnIPyPwyqVehfdnNihQhyxiYHYrmPUOtWzqBsmxidnsqAwKQCu") }, - { XHDR("kcggmrvzbpsahntel", "HhbtRbZRODcZJSwLBfGgYadhgobCiJywsBMLLhGHF") }, - { XHDR("zrertk", "KMirBNIgFlHtbDhvprpMolrmMvQxYCrqdQnrdt") }, - { XHDR("jxrtxvregiraqveabfy", "dDqPOIhRSUhwyBuBUToFSAxiGjqpRWQGraQYCNuXHXhQAbqHGseg") }, - { XHDR("dhtmblfvqozkojrjmpxu", "vwRyrFYFA") }, - { XHDR("artzildeec", "LUNkVTZFczqnDFkKMCmIEK") }, - { XHDR("kqbcyorivmecvih", "TUGYXJjUAzmepujdsxlUmkKIiuZPdggjfZTgixoYEpbtDYYwxLrysyWDvxsFMNNgVdLXkGwKKgxetczv") }, - { XHDR("auipwfpsckc", "rUX") }, - { XHDR("kbothrsi", "GTQehfSPifqdxmQaJHNGdKMLNUHtHcdlewjUFKafmmjf") }, - { XHDR("j", "tJAlJvXfXPPMpmTlnguWFeUblIJuzXRuEFmlntVuYoRi") }, - { XHDR("ynmzw", "qkcVsBVEYSdnVKV") }, - { XHDR("tebjkp", "qQtrMFTyljEVEMGZLOrBhLfzmPfCZbeIKGDivVUyt") }, - { XHDR("kr", "YRCyGOd") }, - { XHDR("kqdtjscfe", "HBHqFAQfTuCrMqHUyyBOFJiHQajRyugGCcHGnLtez") }, - { XHDR("xnxwgfnkej", "zFrQiJlndTDfQGExeo") }, - { XHDR("n", "BrZBOKRAKZnmKakcbr") }, - { XHDR("rvdzkbgjktmqrnhu", "UvtwpTqedKmuYummzPJFgOFHgrFixLFdgAAGBTUMgBAinLOILOqxyfjfMaMbUvrUSeugvFVmNDFQLgOP") }, - { XHDR("ffalcygsqxwhtlzfs", "YXcmtxcrLIMIXJuEztReLMscAcRPIkMpTGEXp") }, - { XHDR("mmhtieeqqykxbxigwkfn", "hPHCDxrawRAnHjDuYdhDNhsKwTZRrEuETuvbTgUTrOribObWfDMcUfNoZRHHFjdGgjFNQtFGyZVmQVa") }, - { XHDR("mvhiqcdowoyxygrh", "jbdpYPosFJKDnVNCNXpeiWNJRD") }, - { XHDR("ghdgwvuhqrovmgjkm", "WoodzIuWcJTSGtLEsYvtwUHMUQDFAXtcDTQrxdmzNMXssInhuNRkPziluxNbYAhINPJs") }, - { XHDR("jyxvgkndsrjhxjsini", "niNlrICnCPQzGGLFIuYzvoMCMzibzvU") }, - { XHDR("okljdhbkwxettmfmqs", "lNioPinauCmiYAFovEYyFjlKDKZCfvlYsAfSMDIoixqazVGwMqNp") }, - { XHDR("uwlrebkptpoejeu", "nGhasuAeSZGZBzZJMELWwUh") }, - { XHDR("bwg", "UTwAQNlOEjJGtmtSYnbOEcNDeTLyo") }, - { XHDR("bpgpmrujaxr", "VjxjjYIKJLQPlfSgAsRexm") }, - { XHDR("yygiqwaunnu", "mJNgfVeTqfIGgYwhuMMYtVqhOZXmYUWgEqqfMsyakchqiASTynALoksTJkNQGGnXOlYOV") }, - { XHDR("roflyopiywabukejnuao", "KrqCkZFYzgYuSQejPRBFiLlscfEwqyYrmvyYzblTWYh") }, - { XHDR("cfrzw", "TjEBknfNhL") }, - { XHDR("botzmyhjazvfh", "cVSduAEnZmNQQpZRlKrxZzhFdrWOEFboGFRcB") }, - { XHDR("whshbidbtvzph", "dAvUxxIbcmWXPrvKgGHQGTbeUXzoDrRYcXDfQEcQZtpQLbuLATieUJdMLENAzsVFzkNyoou") }, - { XHDR("gecircbjugfwttkaf", "FEQNDlmVOOrvU") }, - { XHDR("vmphjem", "FpmiBxuVteBYMzaPc") }, - { XHDR("isqcbenjuep", "tTAwtuXXkqSZrcnKlrwSPrpdoLbXHwxzniFiTDWBOruditJxdZSAOaRwdoixEuNNLPcndhZXtLS") }, - { XHDR("pwtrrzhwloggbtwshi", "oqdhZugAfdRemJMTYsTBBFPOEAxIRWKuaLgSiwhrqsiWFKdCVxObPxOxcspQTuigtiFCBEtZ") }, - { XHDR("odfsfa", "ZdRlgZXPtKSDZgnzEWoAgtPVKeAiyavPdOFpMVoWTeRYbFEuroGOVYcqNcjdCfHpFNVUtKBHbzSYe") }, - { XHDR("kqwuipooe", "aiztLEc") }, - { XHDR("srwctuuoibbnswi", "aclIgeKvigRNVYmFgbiYpXA") }, - { XHDR("sdvawucuzczwgsmckyr", "DGYzPQuMHkMBNPfipLjqQVNzItPBhKyTgJlNuvg") }, - { XHDR("c", "pKMlbKEjwNRfynLmYDzAiWBesAnwSIfJaGnCzdyAuGpOhGxYTHcM") }, - { XHDR("kzugyfbxuwdecfu", "MhJUejgPLUTFjCyslcdHvqXlqSzSYQCdpBHmrVBgEdWZfLIzMWolCuUxjxt") }, - { XHDR("prexn", "PXZqAGMxDqzXiKMmEZLJCEgxNzAIVaWUdcA") }, - { XHDR("go", "ePzJBMKuTWuwqMxrmfMzeOVxPdFfLIUGoiLGFRrAiAPCrnhqoyNKvBXqviUBuUgzUdVIOwOwBVCcXS") }, - { XHDR("osg", "YhDvghxIsSsYPvIuwCxMpVRIzazGzsDGIDValJIhrryXHyqpvlpXjRDnJYnYATHqnAJOkQdkVP") }, - { XHDR("khmuwkguivezz", "VLvmythDtAUhNdeeTUFOKtEXTZfnTRraeLjXJOdzRsoTgevrmXlOnINkMRFmhhRMJKAfFlJpLfoXd") }, - { XHDR("s", "GicOLGscgyMwRymhZAibsbuMDFNSqWLaAUpAIlsVpkCopfCtJJZNymkqwADHwqGNenkX") }, - { XHDR("rnbehtjnxdmmu", "igMwFpCtYNHYOiMYvgiakzKOtaEJCtXKutGbNPENBHIhilzZJsmaCSOXuimShxfLCZaTVyeN") }, - { XHDR("cfvzycaujsjbdkdci", "DghJbByWJVrvHyYjonjhZybknQZkSnCXcdamvvNN") }, - { XHDR("idllbjwpdeytwqrsiv", "ABHejHlXiPWLdPOKmDiUaUwnajipVZWWDZzGTUpywGJVxUpbtaswlMpahAbWLGxEo") }, - { XHDR("pucw", "bwkMwUbqGuYzwJEYRbByEshGweESxFzxkryhXVSYz") }, - { XHDR("jyvnvtzcfdafiwqvke", "hJjZVExBpbgGRVmhqPVhATRMfacxkTGM") }, - { XHDR("celmikkkjw", "wNB") }, - { XHDR("vebqbmcwnxenhoinehx", "tmrUPtjOjhrvxBmtOfuivEdWgiCjUWuZfXhlwjDNndwLyDvjucYlwIshzGCnkPpHwTNvtu") }, - { XHDR("bxm", "dWcUyKbX") }, - { XHDR("jusgkmgeui", "FmeqkflITxHatSlyalKuedgwdiSikmqDNSRRUZhLrYAcqlbanLNRfLDclioqhGskxGjDsLpmUVFNM") }, - { XHDR("ssk", "fwGhAmrHzaETUVwrzk") }, - { XHDR("xiyi", "cYILKAObzE") }, - { XHDR("xsqtgqyga", "LAoFTlbKWtpBarahMjtOuowOd") }, - { XHDR("qonrsydlwkymvzqub", "XmFESZWCsKugnnThZBTJChOhcjBhgbuBNdACtrEtosurQw") }, - { XHDR("ncfedv", "Q") }, - { XHDR("iauybcxbufedckdjpv", "zvMjkmpuxOOwOpJPZfTErIFj") }, - { XHDR("cnvsey", "FkdMJznXKvQJVCvc") }, - { XHDR("qozdupjgvxa", "LGElzgYSnUibITXrSPbIwFNVrFmmNiXzZTISoIj") }, - { XHDR("rpfitnwhdotwxv", "mcA") }, - { XHDR("rprwnnckpdcm", "IagqhbcGbTNDCd") }, - { XHDR("szqnvf", "oG") }, - { XHDR("vnbjbeetvkbe", "SMTqHGBRHXRngjoJaYLavlbKHjzsxnLyDMAHXZKhnqCpemJJuTZhJntKmzTTOORbIdGxvxsGyIyaI") }, - { XHDR("n", "sEoYyZtOqlqibaEJMCNxmveSkyZVzGzyTkfWndtpAEFifvLGoKUMaPCQqDUKWK") }, - { XHDR("ucwg", "dnS") }, - { XHDR("ewjmmy", "tHHOLzaiKLJrrVdAKO") }, - { XHDR("qwfgogszgvohg", "mYlZjaQMyDrVilTFDJvSxpsGfMmdTOMHamiNFvsk") }, - { XHDR("octptdzfhqpx", "cZzFglvcEcYtOxxNnqRHVhPemufXycKG") }, - { XHDR("daeybvjsmholylwkhmtl", "MseiNDisooKXDsZhEKZF") }, - { XHDR("nbjgqwlsetwkwynbmiv", "VgQXvfvWcnUJHOTrNdFHnabSVhOGTspgqdSYlyTMtdcZCYA") }, - { XHDR("clf", "SqOYNV") }, - { XHDR("ytpimnnjvzrt", "cPdgysioGrAmuMYPfZOrVbnTqCGPRKPpqLNaZLSTzIyCQsSdKQKfuFkpyaeMMWz") }, - { XHDR("kl", "BOLQZuoWWjpeanLCtACiMyZQNlGpeeQyReXwaIlSrRdISgRwRuOzsZbroeucyOmOhXSD") }, - { XHDR("mdwjrpbmukrxhgnspp", "djUsEfeuvrDnd") }, - { XHDR("txcjqtj", "mBRxvANLaWPbXsNklRJLzJoqGWgPXJhKOGXwzvbZegzSUIFnwzhRcrbioF") }, - { XHDR("bsjchvtpndskcf", "lFhHeTodUUTHZdjHWFbMGULiZkxUVEdJMrfLhdsbCJuNZQKgCwsnVlcGHMrTdgilwqqSfCXapyMP") }, - { XHDR("jz", "rlKjrBTHLTmx") }, - { XHDR("offtls", "CMMrgGhhbsjJEmfIThKssFcPwYkSeLwIiQiskXDuWSQrjFEPcVbhwBDXL") }, - { XHDR("un", "cwzSLN") }, - { XHDR("brlsuvmgwizduasqaij", "lcPVwpWXTjjNZUdTyrnJNWwCZwRSmktkNCOPwsBduzhQeb") }, - { XHDR("objhcshkmpy", "dZswGBGoOLLcoQAdJGHVqOggWBXpfgimamTAqdhfcLXonLvHXdcOAqrDdj") }, - { XHDR("ozkfvifcuvtme", "DhkPCCkCuCNkPPDD") }, - { XHDR("euot", "bKNXQnKWxFKIvYNePgatJZeWCjzyKfSZPZtmTiUfPgNVMsURlnZfyzteI") }, - { XHDR("etfwcwkz", "PzMQwk") }, - { XHDR("rfedorzdiljbzdmxwgwn", "ypWIypsHLMlkzSSsPcRLJHOFfFJCw") }, - { XHDR("ozezoic", "gumdXeqXUDgXscFYhNkSIpf") }, - { XHDR("lpdvy", "SyWZuNmiATOYbqnahnRpSWCTghLbQgUNPLXvKxShjrqtiROarVelqpC") }, - { XHDR("xzoqojvxi", "PIbFROqIhmdSPlePvObt") }, - { XHDR("iulyamhe", "PxohigVkTbxYBnogkCNHIrSxgzbk") }, - { XHDR("chpdzivtvlarz", "vcKqIbvjYXDRuLVwpaFEHmkLPjnSnUaIAYjAsdoEhKsWshRXu") }, - { XHDR("njmehdoec", "qTorYXcaQbuaCUmPrSQzKhdK") }, - { XHDR("csricvkvclxbxwrf", "caKUCfxGnNfsWjLThHaUyTGEnIvXJqUzbyHEISaWKzgTeRtpy") }, - { XHDR("fir", "IvEsCfMycjhHLUtLvVrpTcXfxQbEQDETbBYUiVGcChwEyY") }, - { XHDR("xvo", "GScRgNfsqzPbuKToUQFonGDuKZWotvOdDKaavxjEADRHzXdNUYvTWYB") }, - { XHDR("xlcdembfrnhslqucvbgw", "EWQRawTLESzCVxOpDVMmZxWTWqlMMvBnONyqnIDigsCByYSUTDrMLGjRsZCGnkquxZEvlO") }, - { XHDR("jgfgmvkderfym", "rdPhSxLmTHylNPpZcsvjwDawTEzboKAmBSlglXaKmlpfWvrNcSNcxnBvdGHJXOUaJPtGw") }, - { XHDR("ejbqhzikedxxylmkyqul", "EJndIByxlwSrzAypMkljmgVzfyAzrnMBRWTWBfstFGKFunEAXWXMmQbgoEzaDAxoMW") }, - { XHDR("kzjaiybkamcj", "HcTjcQdfHwjVFdPido") }, - { XHDR("mfpupqtodbmxwzyvucqz", "owoENHgSRPKFDbEvBdoqkggvycih") }, - { XHDR("qupreoulsonfezvfub", "mfdqQGmShhhXyzWoYwyPOAsvlftfjjlWhUkKEcvgAXoNGKpcirw") }, - { XHDR("mrlxsr", "TEmgMDclzRNiYmtAqVbZAyIqAjkkmlxGvTthFrXstIpSInE") }, - { XHDR("cfdsgy", "OmLnNlHdrxqXtxzMOZQArfRmwIuYxBBsggbfUsCkxehZWZEiydYKGGwndSHlcpGCDIjOMQeXofBkjXvy") }, - { XHDR("gmstwuarroncpz", "RMdkNDLGXEKrQfnqbvwvqpTmoqlENrtwhiyvNhcnYbPEpXzNtTnOUMIhSQIPGJrFJOoGPNYy") }, - { XHDR("psckohefyes", "NeAPHQPOCKsjFcIjokTohjeVYLgbggSnRNVAKRWLesQoHNpkBkFyCNxGMUHqFsz") }, - { XHDR("mqnnsocmohoydm", "aBpGOAbGrYzaxDAUrTqThJbxwsqjONEe") }, - { XHDR("szfkuo", "j") }, - { XHDR("qqumspugxwaum", "mlsKOyHhTSFWIMRScmmhHljSZ") }, - { XHDR("rfajkdmelxs", "lXAWXWyhxBiOwxjCEyQKHqNhXvcWfiAvmJpGCETVwnduxUydCyZRguCanReDCN") }, - { XHDR("cagyqab", "qXLnKCmoblVbmmEJCicIfoozvpBnzIUAyy") }, - { XHDR("uoidnkn", "DfxuTXkzQurWmycPBsmpJQSbZHempsJ") }, - { XHDR("jbupjfhaafikjhd", "RHOYwFekQDCoBaZFjRFACjlHnyPDfEWqnIisbqkZMKntEO") }, - { XHDR("qihxhsb", "VibwmSLkisqtrnQQxdxBntWLQLcljyXPKIssKugujjTPwVMQwPxPvMWE") }, - { XHDR("inlqfcbiv", "grdgpUAusR") }, - { XHDR("qewbltipe", "oHLXPMyWQxWYsPNHNNOwvnJEgSCeapimjoiFeMCBeWvIl") }, - { XHDR("wraxtegvqsuvnq", "YTxuLJWceQeDLAUJrkitRCwcXaYMKPBiVcGXkCyWTOHsZBEMuPGQlWCxyrnRYhjL") }, - { XHDR("op", "LzCCDbBRjpLlBnOsrBBWNTSVateMElmOqkCwWEROBdgnKxehmEWDsjniEVnw") }, - { XHDR("rreswte", "uNNnaIwWbWkCqxKnOJOGqculyGptxiBzXugZXCPtnEAfmdjFyPge") }, - { XHDR("zxmlkkbfecgrntva", "CQuilxgGAhbEFVmmMAdyHOLaMWnRDjOUEyZiZtICOWwKvcvXSqAawvIeJSkOEGTVJnUZlrvoLOu") }, - { XHDR("xtnf", "UlVysSPlUQdSWFMGsgcFRSFuatMLnUtWnWpEaNCmGuWfBUzYnDSCLEM") }, - { XHDR("bjbxncpwehmosiyhyir", "eYxJevLSAzAjwfFyIupRwZtNGbqrFIqAqKXstswqykXgMFEnvMQROHoUnMKwMLHfMpByfOwFW") }, - { XHDR("qsmiwgsmrbqk", "IHoHkXPegdLljszjYjnqijNWqz") }, - { XHDR("iegxeagwlprjfir", "m") }, - { XHDR("zq", "pHxNcqQPwEUXgHhGjothFfiQByoIwirfaONIzvKTtojJAbDfRVomiCrTogcBGJzNnZbwbbzgaJtLRDzU") }, - { XHDR("b", "BAGWUvEWdVnqQayDIiFjaxfSgy") }, - { XHDR("jpacweopbcpd", "ioMbGtdihXigZeZoloeFpIqqIZZoYGZnbSbmMTSAnWWFXvMl") }, - { XHDR("dasqfykrqmqfa", "EfqeDDYaxKradDEHqTVqjLFPXKtZhMHiL") }, - { XHDR("ennunh", "DRWADERrCEbHlstneeXVIplUiJOVsXBeNHxHTlwRGHXPoLUoHHbVTdXRJvMjUX") }, - { XHDR("rtzgijdlk", "AkREZTQyqxJsZLhUFhDdkHkbGABvaHrpMFdSehhdgXIrDFIclmstDtYPYbuKZCFWFSsEJHncFVS") }, - { XHDR("jvlbluvji", "lGUsjfeaxvjhfPQFkcqVvUVNtyLleZjDjkhJdUNZAUawSaBPXvLuFoxpZsrnvcVADTQtLDOf") }, - { XHDR("evnuqezyfjoquqqwxczy", "dmcFey") }, - { XHDR("wh", "TiLiQwubAtOkKBKrbuMJeqXhKfBDUuQNphziYENRgz") }, - { XHDR("ptub", "eWa") }, - { XHDR("umdox", "LrrzXXgDcqZAgopDuBXjCOjoZjCdXwoVqpwYXXUOokduKlsmFzbIlVXDpKHlSccqrwAheV") }, - { XHDR("ftrgokduslzcowpsqa", "pRjbEAkbAuORueDTgMgWTTPnTboqGQioFyCFlyKimsJsvZOJaJoROcMWjkly") }, - { XHDR("fneq", "xNoyPGDGGXyfdIjQEnnLJAmRtK") }, - { XHDR("gx", "ArS") }, - { XHDR("n", "BwCPYMztRiHmkdRUIvVcRgZTQcbVobrEuJtWcTsX") }, - { XHDR("itjgorcnszruskbrjz", "EdIBkhyAUvmXlwcSQ") }, - { XHDR("fmfbrom", "vDLPZNlHofninGkVxrAxJIMxwMkERLUPo") }, - { XHDR("viamqrxqec", "MrxwzQeVGycfBybCDEQoXmzlPDNFeoqKUNldlecpgNklsXJfXKEuuSETOrUE") }, - { XHDR("pubzsbkhpwgipw", "LlQGHmOjalPmiknBgOUdgTcI") }, - { XHDR("dswhlfohyvlszjcqs", "kXTLmzTYgwDaRQHAduqsqwYcRHlrRNSCVXKfTnGtKoCojQhWthHPtlIdmDqztFkpILjnxxSVfj") }, - { XHDR("czxhiuuneetsfh", "MTchqLWbQktgCQgBdlHJOD") }, - { XHDR("bacrbftpubnepvxw", "PUgiCrmwcVYQDoPzLRFLcNVskPFkMUrmatcvMGKoWJaDaSlkcNPEqCnbpO") }, - { XHDR("rblmsxrpztktuqajkolu", "cUHeeOsWZPIwtPzNvHXAKLorNlofFswj") }, - { XHDR("qdq", "zgvzsTAmACqAMRvWTrAHtVqtCRjtHDZRLkPrrqxdngRXKhwq") }, - { XHDR("oljxnlgefwqjzwfohsak", "IjUJvNdDdzUqnPfljSiGLDwiWvOem") }, - { XHDR("rtsopfjksbmvn", "oYczeTZZFporqStnJywbvSAgfxiwYkC") }, - { XHDR("fi", "fYmDcheGRWAvCnZunydtypznZquvOVytpIkZArzxUuvYfomsyRHypwy") }, - { XHDR("ijusict", "nBqmgSITBHWteqLBKConuJZKOpXdRudkRSWYq") }, - { XHDR("ngencfopxafpabytqfn", "DsShuriSLvGxfAP") }, - { XHDR("gtegeudwhmfdeqkn", "zJaOZTfjDpdBgMNplxAdVolD") }, - { XHDR("icvtaqig", "LnSfxokRlppmCioLGapxfYwAdTwirqZYUqYltV") }, - { XHDR("mosuepkbe", "GNwdDlTMOuedfhixhEtWGTjGHojQmGSPlqzUMZijvOXuquCORjEUiCPhREAz") }, - { XHDR("dzqasijrdhagyddmz", "UXzQPfrwjBfzUZePPwsTqjSvPvwVhvrZsgKEaEbhUqPLrsEXIFyDFAhNYrWeVN") }, - { XHDR("wexyeu", "eYGluPeodggClPYpEZWaUyUZCPILolykYZgghLBLZUHIVT") }, - { XHDR("eylmnpsrfauvnjiqipfw", "uQoCgAIAdEGQPuUFoVgPBJLDcwTsJiyF") }, - { XHDR("gmtgmorsmju", "vXkdhMhGXnvhlnCyaWeceMZIrbLrLogIGnBhRXKxYBQFatZeJsXXothDlew") }, - { XHDR("eqcpxruxembjsf", "VTtvsHsaeOohjNoOZjHwwZuRUSMwsBlOqGCetqRAZLaLZKsechsJasPBrgsBcGBkrgRDtmGFCVFGATJz") }, - { XHDR("loqpegldekyndooqndah", "YfncFImTMXwHXEPbJefoDVSYpcrhdQwKtEtHUiulZfYULgHjwlQOXDVRDmLYydSihRsSWplwOjXPK") }, - { XHDR("burxyymybiqvbn", "QYLmIzdNUtzFM") }, - { XHDR("kslmxyavf", "aErwvVobuGNVZOFuZHqoCEDlrCffqPxoClBhrMshQFRHmTYjWSBxj") }, - { XHDR("xvuyhcvopmqu", "RuGSCSCxUltmmmj") }, - { XHDR("ruvtjy", "aytEQNbBsE") }, - { XHDR("qdvwlyg", "fdcbxzFRlegozpYEzyHrmtlcZAjhqmacRRefaRlsjDEbRmpRYLwKvtOtzp") }, - { XHDR("boqjyrhk", "DvGVlAjiTeTioGUCzdFTUYFnlrXBEJH") }, - { XHDR("jqvvuthrejegiryplj", "WWdTlpWIiAKFAkSQbDlYstgToVTKVboyYbJDLJI") }, - { XHDR("odkzclxojfawqtkpzba", "mcBdWSnRhbKIlfXVA") }, - { XHDR("tpe", "TGAtgcvuzZFVdXXgWbhQxFpJorfDCkkHIJHGyBzBatwkqQppJWGkDNNaOugdvOVwCMbhoebfv") }, - { XHDR("dqnr", "AllZxnqljswFGtLUHZGzcbhjvgLLAIwYsJFpaxeba") }, - { XHDR("eywvrrd", "nNaLpbByABzbwaW") }, - { XHDR("zmfdhkfwjwcxvzrmwd", "YxeycbxKdVaVCJCKE") }, - { XHDR("tjlonyxozd", "EVMaKtpNtniPkdDZAVhYLfhXnPFzKQhbpmqpYhknDsClOdXRhxgEnMcWOLRZWyUNZmejyZwucMlIlTn") }, - { XHDR("ffxaets", "FNzkNXzqzq") }, - { XHDR("wnnqfefowawmmraofb", "egQvED") }, - { XHDR("napdk", "MDUSBD") }, - { XHDR("hzplthlxjkcf", "gvjFkciZHjLqgZvbVyRlIHSwyRGDKDJvSHoqtCXNjHpnhHBhvVtdzboGyQKEE") }, - { XHDR("tzchpelyazvb", "nirMDOW") }, - { XHDR("qxxbfyeo", "ZTcJMnakxWKacPBQtnACazgCkUHP") }, - { XHDR("bvporcmudpp", "RvyFksBUYMGOHp") }, - { XHDR("itdygdwwiwbx", "YaPjSONOwgvPjwoFJnMTljvnYKeQAqGUzTrUYjfTdiV") }, - { XHDR("tjfaqomjfzyyjx", "mJCZNIquwaEWSOj") }, - { XHDR("ibvqvfskrqfybdqydlst", "dtJnmsjEKtZernYdkkuJeyBAyjVJ") }, - { XHDR("lafzhgafqvd", "KwUMB") }, - { XHDR("kpsppp", "jMxkhIBKCDPyQMgNNoEECjXKsMzEXWxpFoHexSnSvKdXsVpWbqfEZRytwziP") }, - { XHDR("vtmmemrllpeejaubvy", "rWOMZzYXDhM") }, - { XHDR("vtqclr", "zhPtKbuIADfKdOvM") }, - { XHDR("cpcpqgquxvuvsor", "fiZkroxxxjWpjXoQeJoMZdmFstQqVNmPzKLZkWBgXcqMqiwAlWljTjGrBKuHudkUYfccJzSp") }, - { XHDR("eqxmzayoxzrfnrldih", "NqrzUHWSALcZsukqJrJyZSlaRSYBrvzOobLIZWSpqGEJkV") }, - { XHDR("cmexugtubdrvo", "gCpzCrPWnbBQxILEYggHjKmBMtaFtpMfGqkdAJskrwCsUFRThhYlaSpllY") }, - { XHDR("apqu", "MsrApiCYTkQBYYWHLtrYEKKiY") }, - { XHDR("fugxbo", "hFZVOjmuMshRbNhzKfSnhDghJzHcgAzfhFkUurWQbddwhcTVwOVOJAZCOW") }, - { XHDR("rmhjvlyjrjrbxeod", "yAxrCvLtnhIRsrTaveFAEHCdJRuZJgAJynL") }, - { XHDR("subigbujepos", "mXSquZXMgxQWfdqSaitJki") }, - { XHDR("gyhmzdjlqhn", "VQdopxQHEICXoSyrFtzLzvHdjR") }, - { XHDR("cjnzouhrenmnvs", "wMvOzQyYPIhuMBlNiZIsuvRNWf") }, - { XHDR("lansliylrmfrkkfmcbc", "btouKWQJuReltmFyVs") }, - { XHDR("pnjrnsgm", "uYDtDtNFGufYcweTSSexgOGyiRfKWsOjspwuQZmXzNcoRVATALmObRVYiSWOJLgZkbMQENp") }, - { XHDR("rnsfhgkktjukbzot", "uXOmVzHNrsAYSLXEcORXUwiXZteqtPjZTOHVWtPqnwguLnCtuYn") }, - { XHDR("oxpbpxafn", "RmeJznwojUsAhHfoqAFWHAbloYj") }, - { XHDR("gsujfjtejdd", "nPghlhANaeLloQdlwOpfYKOrHUQgXD") }, - { XHDR("icyfniahldpejwg", "RvREirsbFISEzRKqYlYSdQgKFMIRjGtMZrZMSuztAHyIlBtTWSHBYpi") }, - { XHDR("hxdaadbh", "bEyIKRZCLUNS") }, - { XHDR("vaccx", "OpzOZSyXZJgfAXtUTANXApErzdJcMlZoWadpZwgwucjWIlWpBDcaHGWal") }, - { XHDR("gigvynfo", "cmpiWFQnRnuCNWjQpAXljNhRssglIx") }, - { XHDR("rjnqcyvsxmahio", "jbGSqDimrtloEKYiLKNXwckXzJCRQMjNdbChXijjRmgThWCbcUBl") }, - { XHDR("mojuusmv", "yKWJYmjzVEhPWtWGnrYFxpNxevzBpHCRRvPGKE") }, - { XHDR("m", "tzosPRhyNrmfGQmwHQmmsqkQOCfsIvRhNWKaQKxXCbrKHdxpsFhpVxRgQpPoWSoVZSFz") }, - { XHDR("btqptibuwpaqxbhg", "jpRBsZUTUKilXdtbvFxOESqHWLjroHUtvEEtXpTYz") }, - { XHDR("bht", "MwMuYquGnRxLYkcTZPZPCWukPcY") }, - { XHDR("rvlkvlrx", "JQpNTHwuYvLuhQugDuwFQSowAnxilLyDRKFwdrPEiyiJC") }, - { XHDR("dooiumcbcjltxlsw", "FpKLPaQbeYDvCAXmRkczYidHlhOpGwboEXjTbjIWSbzlTCpZbSGZjcKjynx") }, - { XHDR("yhywbtspk", "OayxfUJEQmSRFfPKaSaijoDCfRevZCYbZOaxfDJJjfKenCbkMGBWUdcReWUlZoXTXN") }, - { XHDR("xykqeullqhgthtjgigwy", "HoOKQlk") }, - { XHDR("rgqz", "tGYUHxrmCEwhxeSonDTVsitVFrletocYRxvZ") }, - { XHDR("pf", "yCbYWlcoCTERGUzHgqHAxRyxTHpwZtQbqjNGipRAS") }, - { XHDR("suhlrspwmbjwmtdrvth", "IprsNQYWlZQuoMBvnYJCHkougLQzPWhtRUZkYJoXLsxBrNzHZwd") }, - { XHDR("vdwoputkpbz", "XQeZzXlTuPteTbxqmloZYpWVFBptlPalp") }, - { XHDR("auevdmovuxqybyx", "itVeeZTzBjRo") }, - { XHDR("xvjgujyff", "uxIoTZqDnlbpaTaJTPSHRMbsPcqQUQMWBRBWNhQlvjViwknQ") }, - { XHDR("mczyrx", "rldwfLhtKKRTjCIIvcbTRDysfvRxRBZvkUGLFELXBbMLAxPJKCqjneWsvDbrOBkQbFZOJAlzZ") }, - { XHDR("hzitvbzrwetsni", "CcznuougrbSzdrdvaTCrdmuOMvnLiOwwFiCYvrqsbivvwMldEmBgJxCvPAvMKptiyFFmA") }, - { XHDR("exkto", "gZrbwJWJB") }, - { XHDR("hldpqrub", "MEMhGkVPo") }, - { XHDR("wbg", "YhNpTJkaKRvIJsfVYTjFUnUCTdxGOufFenSHawhRkYLCIsDxagdOjtNpIwcVJM") }, - { XHDR("dmeasnpsxyrc", "tCDxXynGJANqzu") }, - { XHDR("kigzerzepkrg", "Z") }, - { XHDR("kcy", "AHOjhxIWeNLQYDKsfEpRSn") }, - { XHDR("rbpmfiuzlp", "JKPfwo") }, - { XHDR("heidhgtwulm", "PhMVJZxjOCIuTACGIXoqofxzPRaTqxMRFYapgVWFlaBLARLYobLetsvMrxDAvUWWwPT") }, - { XHDR("yjbuokjfftkcikqfkhb", "ZdEvFGBjLQkkN") }, - { XHDR("szaqtnnihbcxoyc", "OREwjIKtobiTcvgWDmmSpkWhGefSGzYiabrjH") }, - { XHDR("jlozk", "QKsLpuXSzwTuuooscRdMzndTmehDNakJUcNKxKCcKJOquJCGPT") }, - { XHDR("xsqupxjxlgcsrftkjsxe", "anOgVuxEhhyXhFfqGeAcuaqXVt") }, - { XHDR("gzhaxvagbwzlyzlkfo", "rrsXZMqhajpZaCUXrgYEIocYoHbpzWdXWdcJqOfEKoBbjXMQ") }, - { XHDR("zofnqdplc", "ASuS") }, - { XHDR("ejerahdwsdkdtdeak", "UJsxUqUgNPvGWKOzawKyiUePrqHWkwTJsTMoLYsYYHvgMVUINKnVOQBIIZ") }, - { XHDR("zhlazhxycdbugcjrswha", "fJKmWaddKdwWFZEdUdeXBTwyKjzyYDQEGZuxIokAvXPpnPBKABnrwBGyrFpfCLuuwXHuVBNouDNy") }, - { XHDR("px", "QHLdbPRlewpCThMRUvZaInlMRlnFQMCIYFvzfjDKBjZcPVDMtzWBXAEKLbkaQxPgEReKMirBysyOU") }, - { XHDR("zjepaxpkkowfpvvaseer", "xgB") }, - { XHDR("xukjkeapcsyvmxupj", "cgvqJcwPYqWElQZYsIXzeBEJjjYjXTySRQyIRAdu") }, - { XHDR("ypbdbtonffhexdttee", "LUMGwApYrFghbJnePNlEzq") }, - { XHDR("arpdsugrryc", "bQrYJSywKDpLbBWgtAmE") }, - { XHDR("rablvivjfyuottovnz", "tmXnZeOQCQLphNgpCijBSLEBCBsRUsXBmdWv") }, - { XHDR("fn", "LukDqqPJnvPybZsoTnETwiRCEgrydYKKSXrbmmbYOUHGzkbkBPZTqDhXG") }, - { XHDR("zcuzedfhmvgaymsdue", "MqPrlnWGyvrPMsHkpEyfdqKxQSLWBqszlhSWvdFUq") }, - { XHDR("bi", "SoUixuzoFioVuzvuqyrPqEOWEWykJcPcnaIFjmFSsNIhbjCgzRvklSgxVojpopdHKFDCRDhFkpx") }, - { XHDR("xhmimixdn", "wkqTuiDmdLvcIdJCJcMGgiODLo") }, - { XHDR("onotsaysmsppxipfd", "GqJJYJcmMtCWJYprksRdiwS") }, - { XHDR("ghk", "citnIAKpYFHYBgsUtePWEXAngJhOhWuacrJxrvSzfxTDkbnvvqnYWpBsRNqbkIItjSUpBCjOuC") }, - { XHDR("i", "bjXlxsK") }, - { XHDR("cvagee", "dvdngfpzYkrjFnSRKstElJKQlEGuXDBzqhTlHckPJBtaLtjlaRWILFWmsZCUvQykqQOtMS") }, - { XHDR("zax", "MMbJlcIn") }, - { XHDR("vikwfhwxjssbqumvgo", "BWNGLomvrkbmkVxdJPsfGrwNQvYHSdAJBfeGarhSgNpvkpXhtjUPVtJqwwbxPBZtNdXxbZ") }, - { XHDR("jqfzeqyeynjxgydpsh", "uuyNywTbIpshRhSUNJhzOzWpdGLvuMKrBMylggtkwbpog") }, - { XHDR("zqsk", "wlACHWKQVxEZi") }, - { XHDR("upthhyobjnul", "HsVOdGHXEo") }, - { XHDR("nffsvih", "VYwSehCFToeVQtMFSmyMqjiTxKBMZNXuiGzVnOepuESAHSpJgFxZHLRyeGegaRrefIaWpsnyWptfF") }, - { XHDR("qo", "owe") }, - { XHDR("bqcnjidxpc", "vjUAsrrJZS") }, - { XHDR("dwrpqz", "cNAbPokHMYIRkKPtfljEGMPXGVcdEeRHuNZwybhBKvnO") }, - { XHDR("hdwmcuwex", "ehYFHXTUvFlLgkFamPUJeqMQSCMOKzPfVQuePaEaZXhHJvEbFyLLOtRtQGxUOodxObxHcNOR") }, - { XHDR("orlhonqk", "fohyeNMhafqUpuawtznAAPNhbXMAIikYOxzgLKeoHPYPLeubuHJW") }, - { XHDR("euvb", "jUfrffnrNVbDxzyRkdJbyYtpwhizGrbPbTwyD") }, - { XHDR("lsyldioiwobscusbzf", "vnMMyUpMMQJhkLuRxdoBWs") }, - { XHDR("ajxiy", "WMQXAVBGzgLYXTEASGRm") }, - { XHDR("bjhgrriwxevpapa", "oYNJOZfhCCqdUP") }, - { XHDR("lnlgktxzjotoo", "sKplJk") }, - { XHDR("aaxinglbvefnu", "EzqoyVrqFDIPitIiEMQksFuEHNGckHorCsUXDDbZLYVxDCkWsMnynLZnjuJHHVzplyxgWA") }, - { XHDR("wuemss", "sReXpLcMzrtnG") }, - { XHDR("qxemgjtnzfmxfksq", "mywnWjfv") }, - { XHDR("thzeezskclnqaxprtgx", "MXSsHyTqTrFRyQYhcXiQNCJUHOAifteyKMDlpxyScPYBlgsyHBkat") }, - { XHDR("qgfngswen", "ohgpWuaVgICgUiLJyOIspkfZ") }, - { XHDR("ghivdnvdvauzoret", "ADnipsyQnzPbdhL") }, - { XHDR("emidcgdo", "QofbgpZOanjFCuZGRCLAsrOCynitNIjlEdIFkmbleXVVyIekzAbdDIUCdo") }, - { XHDR("jukk", "yhNxfhlnSehnPaMKiYXthZyjseZUyhEI") }, - { XHDR("oysdz", "bTRYuibebbFFLyAFTfHcwSfOAYuPtAVhPIxMtjlJfySpHwpOderbdr") }, - { XHDR("htkmph", "UnhxVLcJpSPXfZ") }, - { XHDR("rpdquru", "ZDALoHdvuRY") }, - { XHDR("fvjc", "QiXvtkXoQNunjrnwLwpslGV") }, - { XHDR("spqvnbkzlbkjcuwbllo", "BmqweypYJYRzFaFJTRtHcQMuXYaYAxbcbHsGj") }, - { XHDR("qyb", "sUwijtRBmnDrttHrsLQbzbsZptzXMKqZXFsLfIVIaevrdoRSxBytCaAChKeHGXQlvkEC") }, - { XHDR("oibsnhvtgeowedis", "fmzBJoFisuQvEXDFcDWEDyMpVqLFMqsYIhXLozZwSzRmSmHCaKhRlbWzBQ") }, - { XHDR("ugsroorgligctmctjyqe", "bCqAGqWh") }, - { XHDR("nrdzefzvbwfnqdom", "yQvwtxmxtYvmjHnVwRLSIiryhYUdQuPFfVwHVRUuwDJV") }, - { XHDR("hpcklmryjkemriuo", "frVtSKWTgFAvNAEVJApudAuhVzKAN") }, - { XHDR("leecvtanijvp", "PDXeYpXogmkBDEePhfTWsBNHKKeXOjibJYyEnpNOLllHaGNuVoErnpAQzuacYsDrRPQssfNqdobfrzZ") }, - { XHDR("phwodym", "HdAgNMcc") }, - { XHDR("ssc", "nlLTozbWPgUbOTCeRWbPfwnpxGfuVVeyUyWkpAWpayJBfImzvwYqJvdgpDx") }, - { XHDR("serzywkvmrq", "DSjEfrTvCUmxunfgdNYdUgndYcNIzuXWXPzjQDUUjd") }, - { XHDR("fblxdvuyop", "jRngPLxsKwtRlhHmGHTSMNSfbcxn") }, - { XHDR("akcaembzvtjtnpij", "VuIvkRTzjidpLkV") }, - { XHDR("dhjpwgnjumbwafiyntp", "xYPGpZjfbDzjLkXzqwzBUbPrix") }, - { XHDR("uhwdmfczovijdd", "WJSllYmnjRPuPBLdgFNHwvuc") }, - { XHDR("gqzsycbdao", "UpffJplNCoSKqzrCJdSlegOVsRJywSbv") }, - { XHDR("zjgtnkaoyxwxbiyz", "MR") }, - { XHDR("ziwolzphuowghkswdi", "BMcAXPiowsA") }, - { XHDR("enjmggyrutespwazdr", "RFaizHMCxCEnx") }, - { XHDR("cknqgvvyfys", "Myjle") }, - { XHDR("yiblpppkkmer", "zcakTpgbLFQTOptugYqkTNaWWKDQpzCgUlFfPprcwIhdoplMT") }, - { XHDR("bahyfbyvcxrtdiyl", "RTbjKPBpicyTMlAGbGPVDmjKCr") }, - { XHDR("mbdarczbdx", "vDdRGOvdqBX") }, - { XHDR("qokncjcqefg", "NywzzvybFEGsAXwjdEa") }, - { XHDR("d", "oOulVaViyZaHFByqlxeuLRvDVgkTUUlBGuoRMhOZKYbXmjCyyfzwRlSgmKtVqeoPiPLsoqEeswZtLyJX") }, - { XHDR("wassakdjfl", "SPVjpaclbmckEZlZZsO") }, - { XHDR("f", "lZhRwaveIDncChYCcFIGrJZflfWCVidteZUSlmMIFYibAeiwgHxDZzLWXHpOEDI") }, - { XHDR("wrljtnvgn", "loDPUAchxEirbszFtDKXRkpzgvxqpxkrBqlPKvngdDS") }, - { XHDR("cfpnutbtbao", "FHTqJOxkPotjAYXzquEEVNcISrvwJfyLnmgwuvJEtZ") }, - { XHDR("ekijameddphttmzd", "tPydgLyigyrlqYNQTLzyzllSrAZVPjIdpGqK") }, - { XHDR("nefed", "trWYFwReNvPfzsbjKGJDahlbNbNbNRneYBneVgaawiQAyceXUFVlbpNZjfYwEhGUbjPLEBUdjc") }, - { XHDR("kfettuwsrvwaqbcivia", "aBwQqpeTVFrIWaMgdwd") }, - { XHDR("vqzhdcfqhycnnpofx", "zmEecpUMRwXhCOeBXm") }, - { XHDR("ocmcradffgn", "vmFvVFXlJs") }, - { XHDR("peipllhfmmhii", "cJgfzYRlYlPrFbaPNxEisBrD") }, - { XHDR("xdikampdoibojqyyuq", "CjXnCrJUOGwWmUXXIuTtswmAFfXRwdfeOlPGVuAyCnrPmPUydKNrYtuJsbF") }, - { XHDR("lddgqvxwsociofz", "ZgLOiITjohBqrTIANtwBciGMXLNKqpVwEifLEjrZDAMGQDnUYSaFsmGPBdYKkIZXRYtRluPIGUdTML") }, - { XHDR("zisbpemqtds", "dpaJuYCLdZFZRtxwQtBvIKhMouUJfduJGxisyPEdSYR") }, - { XHDR("tyrzegzkdstvktlnm", "GfDAIGRQgXtNUNxGxLYNVzwcoKOGTplvaYkkBAVTOhubjSWocNCwvRiAJVAmhHhtcgxCLKWLgpWFRTE") }, - { XHDR("jtbylnexvrmxj", "GPhEa") }, - { XHDR("roc", "otRzJrOfiAxsaoOduJenFfTlSQbQuWYFSXcDHDBpFccghpFjGXIVjEgtvBMrBOxDmwJ") }, - { XHDR("zsou", "AMjRczBZOLlIQdVqszpmCGhUoavYDYMezzYYEGeVDGMYEvubkLfRmcwkKcnTEtdvJf") }, - { XHDR("qi", "pVTpXigjjTApplyAuvRjsWvQjnSJZyNrZxImAHJSJgXSSogHkZjtVIIblHAuSuTyoztyQBjwv") }, - { XHDR("ck", "XfaGZwtVCqyiXWTlKyxDsxOjC") }, - { XHDR("vyjh", "yGOJWfOzBErQklQKDHdosuHCycUwCUQJn") }, - { XHDR("pdz", "xxcuhqaIqKPyZciUSoADGdd") }, - { XHDR("alydhcqp", "PPTbGPLMsJKTYoJHAGzffjmmElowGJlBoGxIsuwCSgwwOKfpnhpnkLQQAebiXpsITubndT") }, - { XHDR("wwxx", "pOOJq") }, - { XHDR("cpw", "LoImOiWXuvPbnchsVAlsvqnayAEMACxwQZeKSmlCeXhHLrbuIKwnYIrPXxBoJfIcLJwAbVFEQ") }, - { XHDR("fq", "LiwHefYSuEgVMJAQWLdiTjFEnHKNEWKJkDQw") }, - { XHDR("nrenitweguf", "smIggeXV") }, - { XHDR("tzlpkkddqfn", "UMGpdeoaUIaulnSIqFDGIFvHHcE") }, - { XHDR("xmifujluaqubvkwqzlpd", "MBtPDZgbYCDqVulyAAxSQZMAzOVBqvPyXSNhGPviSwc") }, - { XHDR("wmbagllnwhxhixd", "zZxWTFkcgSnwnJnPXlrfwGWDTsLylnCeMIjWPFbEFOLpL") }, - { XHDR("wzqxmbdba", "pkrljiRQsoDLmonFBFnjNqUMJbaPhulWbGENXntiMZRYvdidAkvuZabPzIsnq") }, - { XHDR("mmahhgkhsrmnqlvyyfqr", "InSSEtiNhwhcWikqWUzEorcAOlpsHbodBUsSGYPHePSLVWnZrcPSxVTSIUrmFcnLxeJQzwkADm") }, - { XHDR("tvvrlbua", "ttYsniAkRoosUhXEkwpZUcgxfJGqTavCQApZfZqhBZKOTkKMtJlGJb") }, - { XHDR("wrraejir", "rdQJYqLQtaCVIEcEr") }, - { XHDR("oippwpbjkczlqjzw", "kygrAlFhsYHbca") }, - { XHDR("laotjmtepreh", "JHEqgvNDtoRNodqHYHKyWXyUuWXIFBmXsFBpdDSz") }, - { XHDR("ddzg", "hdgzRvFWpkyCMgMMVoTzUOZ") }, - { XHDR("xidqugaweoh", "XwjZNHeOJyBKTjyGZEMJOMioNflbZLXVrFlSnBsildFbWeUTdsP") }, - { XHDR("pcplauqxz", "lXMKsaiOXZSGoMKJeIVagzGxnvIXKniWjnfsBIzwVIGB") }, - { XHDR("agmmazkv", "hPLpJHtrKQtxARiKXUgxshCWqmmbRTsmycTxdvJkQwkDMktvbHH") }, - { XHDR("rsioqudnfbnbebntk", "SdmOVAVfZ") }, - { XHDR("hjqxz", "JssAIvkZCdhZYPzNbPNMMwWWBnvgrybW") }, - { XHDR("cdevpejfocjvlqow", "IBlbXDhbdfgTLETFhlNRSHOGfczVVyIqzvxEvGwHLrghu") }, - { XHDR("hee", "TLMzJTrYmFfjQMFXLQAmmuFbe") }, - { XHDR("bqayhgkozmzlot", "ZhXIfkF") }, - { XHDR("wionurwfiwgqausinzde", "IQkeVZDFZTBDcKRQEIvJkQVVLoFLjKQPklQOAMIzqNZqFNmijWcdHObZBLIAihXoCXwx") }, - { XHDR("grdsigdquynaoeizalh", "ROUOILDXSrOTRASYIW") }, - { XHDR("ydqfvwdsbvrrbszto", "TTKpyWUDnpHzKgSRtGrEOZmNzrwuYDmjArsUfHMtdjcKwzYMRlr") }, - { XHDR("qwzz", "mSqpIdlyBhLPXinyVIDhNSDMePRHAhTemGPQqcp") }, - { XHDR("llzmjv", "uEjruPDUaReQmUxAkejoaPcSLcRCdSXaMASVVPCYzJKOieo") }, - { XHDR("od", "ylcArjqCERheghnmTnHDMJQFyeOQdsFPBjHwIGMwzEYCncLSfNULVMGYtAhxtBpQoaTaMhxbKBLbfh") }, - { XHDR("crqcyivaqfajkj", "kZMxWarxQCLUOUKdvvONhskJajokQJPyzjNKiDkNzKpqABbrWLIGJLQLJqqIilMXtBVsCWwAlVmQ") }, - { XHDR("xmfwqptasijq", "mQgrYgyEBRaEbHnanquUARxShKdhwJV") }, - { XHDR("pxfkwzlzkhiqpbk", "xBcXHYRjhXLAFpqJIZlBqZiDcmNVDPlXNtaylsTUsWxXEHrguRtrYFGzHaMZumsKbZA") }, - { XHDR("khvcbsyk", "qicJKaNpFRkzLRentKIlbQDnSjobYtBBbBbKlNCMBxvsRNd") }, - { XHDR("kb", "cKZLperzOXIbWQjdjJZKaCXFZVaUEJFeJXDGMsjmDxjShWewZLmAjJdTOnoBYbOWnDQuMedzZnskSeOW") }, - { XHDR("ouwrspe", "AChurkXesUHMgfTAWQz") }, - { XHDR("jlyhbuu", "lPamhCr") }, - { XHDR("axofxarghxseknvtxth", "ib") }, - { XHDR("uzlsgbhfosbit", "nVpczI") }, - { XHDR("gbkhfkle", "QlDPjXGK") }, - { XHDR("cuojvrskhixs", "Wc") }, - { XHDR("fjdlxbvxixeizs", "bEVcSEpEaTUlxWFmiIxonsilAhuaDMuMszXKwamYsP") }, - { XHDR("qwspildau", "ufJamqeWMsQsXaHbhQrSvbVWVPXaZyWuYszhVRYlCYiRoIlYSYtkBuBcJGsERSmYCoWTFNAdOzkstN") }, - { XHDR("wzpwgbdbpoezhsrxp", "DREjvuzfkNGUsRhQBLlgdUJBPlDyXphYnETWWKZsRhAgWdTI") }, - { XHDR("pkor", "kcRZEduqTlbXEVcLovrnEyRciDzTuhMhaZTIJhbcrrnILVNIvgHyryYPdZRe") }, - { XHDR("bcimlvhkhrvzzdqnrcll", "WBUJJwIvEIHZnJUQy") }, - { XHDR("gyylyhtswmaxxjbycd", "rYkS") }, - { XHDR("rymem", "WNknXOuOBFAutrlJphnWrgBHeJoMU") }, - { XHDR("ddjcskfwkqvak", "mprhIQcPChNMrfvRKJrYJbQrTwKyeAyuCsJObisHGPRjwFTmrOyTpPziGhIhwUB") }, - { XHDR("ekfzvouxrlyyv", "aJMPWNkYonVuPKkSKjSUThOfJexGeudAhsSskuLzNlztA") }, - { XHDR("fxzikjfhhseoobeznfb", "AOgWKkbfnZTkgoAolJ") }, - { XHDR("wougo", "LPnBDsCRzRicNARqtYBmasJSXPvvvAkk") }, - { XHDR("trweusarqjlrkhe", "TmDAZOlCTRpmHwPLjHQcLLDDzAXhtoNtQiM") }, - { XHDR("vbmycsuxsst", "ekjvyCwgPMvyLcbkaamPlicxJaQHdWwGiZZummiepvkPbGFvHWsqjHJPxWwUSHubnnKlMnTx") }, - { XHDR("icfnuixiiz", "LjHETpnhvtcTGdaJKmQFsxFuzJzrHgbRRDOvTIBDtlr") }, - { XHDR("axyb", "KgEofPH") }, - { XHDR("fqlblu", "jmgTJUUPJnuMVkStWlsZgcfcLibRMKggqGQeEfFlGbLZpwih") }, - { XHDR("crqrwmyscewmuwqpagvc", "myleQTEDUgqQXaVfiQplYWRPUBZZCkqKiADURddckGxtqPMlAdxX") }, - { XHDR("kaswnhfbywi", "LrFLkyOwaDVbWGEukGdSG") }, - { XHDR("fpychmuf", "URmjtxfcqDotBMBqdsCKWCPGMsOvmPdYmLTDpbOOGaOSILRKxZedHRqsZnmyuAY") }, - { XHDR("yubomeudu", "eqCpHlhkebfOJQHBlNFFMGNCuFzqNXBEGfYeccirITSxUauqvgsnORUZSR") }, - { XHDR("mxfgajhmbikvjjdg", "GmZsmabRxMcOmujrsvAIWcRkojVfNTQVjIklQfgYowBrHhNsmChTxJTL") }, - { XHDR("zsztqghpcikjtx", "NvGgfcIDmMOQvXanMspyhYhLEDYYuLRWznjqQBsD") }, - { XHDR("hoyckc", "EgThAjBAjkim") }, - { XHDR("jomkwgnmric", "IoJJvmFYCXJtzCwHETIKCdccGXKfbOkDsPTsQPVTiRlZbxJgKTQqFIsqgWMb") }, - { XHDR("vtrqedorzemmmo", "ySPdvUWNpqWeOAElCtFRisDchokoQkZbFeeUljhCQrIhQxbbiIQeFuDDfsY") }, - { XHDR("hjmbqi", "fxgJiZSjrELFeKbSoVxcPkXgIylLC") }, - { XHDR("hwcbmdkye", "S") }, - { XHDR("nhhitmemziciofhrfnh", "cgfFGdvoNazNkoyPIlGBvjDPZjdinSzkfhuailevnDbaMfoJPPsGpyprgof") }, - { XHDR("hq", "HUzmyfOuekZKboIUkiSEYOBHuSiOjPwkuwIcfjYYgOFwjPnS") }, - { XHDR("kypkfjlhkyiyvqrtujop", "xtzdiBRonLMvQwcwIaoPfPTOOfbqyCJNsdCGTXGReYy") }, - { XHDR("qrmppsqjfzgwvbckudna", "WRKsafViyFHnVrgKbVPywXayHUTzOjlccnVMQPXMArtzuKRcFMccYVzgfPWKgDbdsdXMXs") }, - { XHDR("anzyoumesnlummabwpc", "fCktKnbtUeprSnYOQgxbQilKLDgHOBPubnsG") }, - { XHDR("wcigx", "hPRSuZOoKJZfCvmSWX") }, - { XHDR("bjhkwkvoqqumlky", "dawyRxLRSfC") }, - { XHDR("xywiclxuhakqfi", "yOFymGHGnqlfNoirifVpaPzuSKyvJsSzSWq") }, - { XHDR("huzekpwpstpzjub", "dsgQRBiIipvTsYbsHNKNYYSiVfgrpHCOboTjBwPxLyNprt") }, - { XHDR("gbkuta", "qUSDNwqgpdiuZRfCyDAIDBOeytLssj") }, - { XHDR("eobdnsoodsrtejmz", "SqnDLoWYCafYUBlN") }, - { XHDR("uqcbisjnmrrovmxej", "TiNBrrkLNYwvRvVhMFNmlaoqywdJAnpMIjyEWBrsCcDAfBUJAXixGQdlBQo") }, - { XHDR("kwedyndkbghehkstd", "biaagrUpKTmKaVSZAonHMmYNLtqeCqhmJUr") }, - { XHDR("gqmwhamz", "lcBAgEHaaoViEYxdtYVAyvWA") }, - { XHDR("wnknf", "EMPbsUg") }, - { XHDR("spfijmmlbd", "jOuVVdTMOWnNhqOdDSCuQRFraynFkaVEPARxjLhreJIuWkwE") }, - { XHDR("wshx", "bRYjMQ") }, - { XHDR("xdypj", "eftLfZdqjblTNir") }, - { XHDR("xskgxzzbeeqevagyhxxh", "KpBSWyJOUDOzJbIezhMZokWpLWLxWAMROUeOVxcZhLPrPuMzHuMGTWEtD") }, - { XHDR("oc", "LFk") }, - { XHDR("oeyeoovhrgrguumn", "YrpRZvrQxkzKibprkfFWvXfVkrOSigmgzXlxfwlBUKKZOLKqYmtVbCxnKG") }, - { XHDR("uttsnusny", "bjPCigYDmaOkejxiejSDqbrVOSWQNosUyfDxi") }, - { XHDR("mgqwvjlgxokjfd", "LVPHwvLtrshIUotgAXbBLTNTSBtmUSYkgUAUxsSj") }, - { XHDR("vdozfjjvgt", "GpEWdTLesTjDFXtMuRKbbdQNzyttoqnICFsfUHgetbaWqfnShMouIyKkQtibjmKLm") }, - { XHDR("enbtgpdrmyueqbyd", "UkdZjNnzCHjpIvLWsYBOOIdYJgxCMztMqxJowqLHklVgUNsruijmOLHBxdmNfWrjAGYYH") }, - { XHDR("yfcuhefkethyavdl", "fnBNburQzHKUnXGicaEkQYJMeeYYdtvmj") }, - { XHDR("ucgvjgppdbmtztmk", "bUyNilBkGjHtzjGnjpLIDhhBBkjNgcGHpFdoXDABHDOoisrHLKGXPGpuE") }, - { XHDR("gcrvoiyjsulddktghjr", "UpgKsRcWklQnxkAslyOHJTWnuXNCegUQKpCyogywtxpJTnAEfBTKtNojAIWKkfHipMHyucEXB") }, - { XHDR("dctrwungeoxdfz", "EoqtL") }, - { XHDR("kj", "NsIHLIGT") }, - { XHDR("mpxlvqwbmk", "lxVVetpmkeMQYaAXYPoYhRrqBnSUMYqpQlVIUxkEecVFw") }, - { XHDR("ixgdgnqqptlu", "SWGEoIXrcecFsxPnluCpLaxnklNsKVGrouuNcpmJgwIxaRBRaNQGsgNxjONmfakelWeBAzO") }, - { XHDR("z", "QxcJnZ") }, - { XHDR("wqgwtzcjhwbds", "TdrTZZSfJRQavrXrzO") }, - { XHDR("pnouzmdssckxqdac", "CoaTXByEdqLJp") }, - { XHDR("ouebuadwkpjt", "ggWJeAAEqEYXuWC") }, - { XHDR("hdsp", "wPrKoKyvNJejMfawlXyjugAFwdPRbvZ") }, - { XHDR("nfnpxqqlcrlfkykn", "UePsJdhgbSlmdkcCiFzRtmkoAycNWcyolTTdvopviVKqLentfealgQPzDcLhqlE") }, - { XHDR("pjkvobdevllqcctqe", "ghXuzujFvuvPaQpeZkRMrqxk") }, - { XHDR("nrgvzt", "jtCeekXeVbpSiibSCbIsvSOX") }, - { XHDR("c", "HJNuvrlINrNScUpzuyRljhfaLUtpNDotKUiICC") }, - { XHDR("j", "CkhCVyLNhaeWpxqMLWwCHFXSuakJfAswaNKRdIhQoaEbDQmsoSkFgjXVagWMOAQxLsBoBMQjsAT") }, - { XHDR("iqrfewyjxyl", "fFdAAFbNqrQWCGJRMJtcBeskNcKWtcP") }, - { XHDR("nkqph", "zsdXZAzJQXVAkoKcdCuPMWLoJATHXJFfYMddtVmL") }, - { XHDR("wgdw", "LGEnARCCGbLbNhbJUEb") }, - { XHDR("abhlrfm", "KsDVNzcfnmOQZQzQaEIpNOUIRHUTPRotHfdqjBbxdogJdtKJNjICf") }, - { XHDR("jdmpofsbnwglafzn", "dKDRVzbcEhIDzcWtTXtSFyifUnDrApZanPCgWgWeYlRLkOSht") }, - { XHDR("uznoeggvo", "oZYRDKbWjYAwlPDpwdgEVMcFbfADOKJlldrXINfwAaKSdsRHnxAfRVEJyNuNx") }, - { XHDR("uxstz", "WgiUZftHgcxTFScpUeewTrVTDpgKmKhtmMgrMHKfzHO") }, - { XHDR("zzdzosim", "zwFqZtvGUEeuaUCpyGiqCeZsjIbbeTUGkvjSKCGi") }, - { XHDR("gifguqdi", "ZyVYPaWqGTLSsMrZiPLFtfCUhiVTsZNZYtJrIJYGCCfrvGShKdOwxbveZoOXFLvO") }, - { XHDR("nzyhduthghfhy", "PfVgwTHjuuOIWhAjRMJfRYggUCOdTlFFESyGXfjpsufj") }, - { XHDR("dzxcpccaeqnutpkasg", "BZnxUxwzFkxlUgKnBjRuXimuKJyUtsoj") }, - { XHDR("vnuf", "pBzzTkgIYyegzRYSnUgJVJxHuUcbPWGwlgoneYLpXJRQreaXWMJIvlHdqkhmQOCXOn") }, - { XHDR("dasovfmxrvhjc", "EGdjjxDTuVPfvbvuMAYhdGSCEIS") }, - { XHDR("jhrklspczta", "ZxkYbDMmrFAZiQOHbYvgKagevSpHszbRJUBJpKZeaabaiPdnXitQXNvPkkTNqcahGlEA") }, - { XHDR("exjltlxqhvobvyo", "ugaxIuaMexQTeoFKcOKjQvBsfnmtTNdZcsjDRFQAWvPgnvImEltNkCpQLgDkhAXNHPNZjJkwm") }, - { XHDR("cynu", "OgNCIazL") }, - { XHDR("ggvmxtwd", "TpFSutvC") }, - { XHDR("atko", "zPvxvNmDQIch") }, - { XHDR("jsvslnsehffytprvbia", "UGVaWvVavrvwtLTidJPqTChCnAkcSsdVBCoVtLsiubXtztpaDLrch") }, - { XHDR("zw", "ukVOJXywIgbtOYNlicXfbejHkfvfaLXKqLpXCErKcs") }, - { XHDR("hxxzsq", "FgrAQYNsEwNUrZGLdYowhNNhoqBSRfLqtfpoeNAKylpULSfVtmcEu") }, - { XHDR("llfaiol", "kbR") }, - { XHDR("wf", "CkeEZPpZUOpeBRMjEEiJIfttafWxzLgLuQLdzOqLztqWdhRZiHOFf") }, - { XHDR("f", "RZdwadAEtjTKYlhpORtxFPEgCiH") }, - { XHDR("rnmeyxabfl", "SAVDnmfoEKpazdwFcoLQsCDUlpfIobBOtN") }, - { XHDR("imijnvro", "Ihe") }, - { XHDR("zfzrxdvtospsgf", "MDMefwwUUXOAbsxoyGmHYPWYUHjm") }, - { XHDR("vyjbwwzhg", "MiQjnjyOArglhBVFGBGCLka") }, - { XHDR("uduergimratj", "aYGgJgoBIMX") }, - { XHDR("fshcpuxdtne", "JXz") }, - { XHDR("dn", "txhdvtgpriuETLXVkqIhaEGEBtvkuClLylwVsHTSDCNDtKXQZKirRIjajJnvJsFkFmmWxk") }, - { XHDR("h", "uxZmNxqiDsHyUOMwtpAlb") }, - { XHDR("bgjjlitt", "IblGPBgEbtZdXxtutHrrZrIBPiuoPnxUha") }, - { XHDR("ljufyjxdmm", "RleuyOXWJgVrgHgW") }, - { XHDR("qfdumtapdtrdthpyet", "pNkYwRLCCYvEcZDaVvU") }, - { XHDR("rgkspesctclpygwaoiq", "QvdRDdNzXnkxCKbyvNvJvifpq") }, - { XHDR("uozoan", "cQOZkBtZDZddStaWEvXiJzweRMqWUIrYnxvnpuU") }, - { XHDR("bnxoyzqicbzfhcvygn", "aDZJufOaFgcWGrs") }, - { XHDR("bzkmskiajqgatrtqikd", "robgBQqFzvWISKjvjPRosJaxHLnxgfIVba") }, - { XHDR("mmpjebclcspk", "ZglOFlwWtBeUduVCEEiSoenuEZRZcxJgvNrYEvXbRJ") }, - { XHDR("fiztbpqjzahiw", "JOPiKwhkOxeqtRoFatfizQVIYqjfsPBtunXGQLpWgGIrzB") }, - { XHDR("j", "NEcuiSaWyuASUjLTblCtAzKeLKpHVZBAtNQWIklHOUMiEgjdnONZVmoCdJSGvWlGi") }, - { XHDR("ivowiulpio", "RQSAXfXKSQxKToYEXnegwcndKApJIShfMCfqkLzmOWhv") }, - { XHDR("ejeetco", "TnJBaLSMZoLElpkCaMbhrTdqyPCizPLkve") }, - { XHDR("paohezajxmjyotygug", "eBUdHCpIfhnPjA") }, - { XHDR("unefstrb", "RmefUxjlVBqjrfzGjWCahKggql") }, - { XHDR("mfxctaih", "YNBINbCljlDCDzGBdvVnYDOxpJOmdJfFtfwMvByUMdqGPSPhMCUmWwwuWUVuXnA") }, - { XHDR("lgyggldgrujeirovrz", "vsjmnHFkIOdhfNewNPQbTohptBAuHIoFjBPAtdhejewpmheMOaRDvVZHuStwMxblsHGUWLaARQ") }, - { XHDR("zrfqlae", "VYebPzJNBCeqtQdQBURDvoOr") }, - { XHDR("wknqefoseivvqyy", "TCWMtPIHxDzppRIGsxcKxIeJTVyjKWiZWvAHfD") }, - { XHDR("alezovdmbminpbw", "pmaJGwvuGIwCAFdFoQNC") }, - { XHDR("aysgnwhcj", "tBoDKbTBEQlEfQXQUUjydCxyXvgegcznJaanTUvoVFikUZycxhiTIiESknoQxOpmorw") }, - { XHDR("hajcvrl", "UUmvQSdLcoxjkxGmHA") }, - { XHDR("hcq", "qwJ") }, - { XHDR("c", "LFyvctGpXiorewVLtUQXTAyBsKVRRptQIbZK") }, - { XHDR("wtoyoyqnjnyq", "EFjXjTSPe") }, - { XHDR("xe", "sSawXbGzWdGdKIDKTbAKUySskNHwTOhpKAYHZDEBLRKUoJW") }, - { XHDR("lmudgjojgjcv", "YCIuARdfnGGMSuwhWonmRhrTTtxzKgPQtjaPLixPVrD") }, - { XHDR("ycogenoiwfbvesdo", "ghjtwlVHZCJEpqQrCe") }, - { XHDR("ihisc", "jeqhODBQmVJoxhSYoaYLKSZmekFeqN") }, - { XHDR("eydqyl", "VLFzdGasYcfHrRgsdIbecqZdFMaSwrcRjTiuIJHaBCUHqibxdkLBLXXJggBD") }, - { XHDR("c", "qQvOGWOQEiNSduAtotFEGhdBXfVVBYzcobUjAhTGeSVeFbILJzCyF") }, - { XHDR("vpk", "ydhbLVgSBURDLBQAMgwIYIgKpJuBKFkZsLHMVppMhzpfMMjrpeHlFFZZyM") }, - { XHDR("notznmyple", "SEeYAIpzUTzVkHGShoUpCKGJGBOtiQBfyBVuhdaYcLNfwPQoRPxPRYDaShgIkHoufbTCF") }, - { XHDR("elneekvqfnbj", "nXcJvNMVSnZOGYJrgWYSPw") }, - { XHDR("idzwpje", "nNi") }, - { XHDR("llpqvhlbirssgmo", "KCbIkUZIqldLllLgOEstkgbyZoNjnXocRcAzJnNcSJpQjKwlijKgNKnQCUQIE") }, - { XHDR("qxgqnsjrgvrsvlzx", "xFoifZzJSNDyMByacchwxsKLUIGkoGYMeYeGhlOttVaZdkNkpVr") }, - { XHDR("pq", "JnxOFcGYEtVleWHgVqNTpbpjbRAFhiBJpLHEzSNXMHMGJNHihVFWcfudazhC") }, - { XHDR("scyfyh", "ZwGVKlKzoUnOxdKJfdSrkaPJCImiAJAvQAFRAhDkmgVXUAjRLpOXuGbWcORRJvdKvrKZUQTrSaqZZc") }, - { XHDR("bdbynyavrdmxi", "AfVDI") }, - { XHDR("hshacii", "DyKbOuZwBRbSuPlqhheMXXVzadbcvDwQiqUsmZpVlNfSKdPucmhhDzHIwEoqNFVdge") }, - { XHDR("yqvpugagbkr", "dyeMhExsbWsOKjTXEpDioHPqmYSogWZEkqiulAtzKlioNmVd") }, - { XHDR("qwkqsfghoxdius", "PyWJxBURcFpmy") }, - { XHDR("hkhxmrala", "iDpEoFmJMngdlRfbZH") }, - { XHDR("wepogxlijmf", "yxvHIsJczJasZHtdGGRsgLtGOwSECm") }, - { XHDR("mjynrsoeylhthqaqf", "HgiMtnFOcnWRPLEEbcPzKgwIcsGWNWvBgCFzyEtejh") }, - { XHDR("acctsbpnjpcg", "PsCrnHCgbCiBbVGFJLvQmICspDNLHcFPuJdHrgjznxGHrFh") }, - { XHDR("yw", "ZIZovKeidMPqFqbTSBBSQsOWWfPJoWAsJHsYRqSPFacrZBMWUcgPDDEQmdwmWlLGFr") }, - { XHDR("dwordqsoxbq", "HvBPVrRGXxXiJXSMzlgqyNJcFPNkyskXwuLKyeYCPMXzfidOzHszGwWgMnUZTpohRzMBKzRYUzrIhjMj") }, - { XHDR("j", "wQCfRlxxaLLJycdvTgWJEeiP") }, - { XHDR("dustitvcvuqpcqsm", "drtcUYrGoxeWeRLJc") }, - { XHDR("avpelljsicevds", "TSdMXJyutihUVoYZsxTKEvBarQJhNmZbYCKxxCdHprpaFb") }, - { XHDR("cufepvysysoa", "fJepwEtaCxxUBPzUBBeeOMFQHtRONjTvMkSyukwdfoGEudkdqnUTgNzQdVlhUkZgHvMDq") }, - { XHDR("wmbop", "fUlhsIgnaBYOcuMBFfWPHEDRmwRahciuDJPExktuzArdP") }, - { XHDR("lmae", "DgDuR") }, - { XHDR("hrgzwjvkjrv", "vlqsEqWbxLnXpvdRouoeqouVvAhWcGpFWafQLaKJgORZIV") }, - { XHDR("nxscdlcmwifnizmif", "hxainAPtQzzxqQdDZUUvkWPeaCDigrvvKFgpcwnXCExXplFTtcdHgMnJaVqOHuQNGTwSrdHWXEkjV") }, - { XHDR("ucnx", "NxcNcKXG") }, - { XHDR("a", "pmhnFXVPdigEbDFxTXtQzIGDYEPbNBcCVbRQqzQh") }, - { XHDR("pg", "pckNITfEZQaYJjxGDJOWTHWiWpBcy") }, - { XHDR("pplmyyjzqkdidtiekk", "LkqiqkIAEVkraXlxRnbDwhtAWUxrTDnIOkLpPdGXqWlQVDGslnbIShKyauPMXppNWjHGJwwrOcWlnV") }, - { XHDR("kijfpzxuvrurfxrnck", "faqDCGcsyRBamWZJkv") }, - { XHDR("pmvaogh", "fFAOPvVaPwlIAEaLotNvU") }, - { XHDR("krnmtnta", "HIDonRNMcstkttGhZOjFjomJXUzEcNbzAafdZfUSTMlrQrOKHJyOBHNatFpb") }, - { XHDR("awdhlb", "tRnIfzeGtybnZONYPRLQfpqXPPDNuPnACewsMzPNettEFXaLEuJEKFTvyFSmaNIiQWWUh") }, - { XHDR("idmhhyncygv", "WzEbuHYmxohemBqEsypqbNhKLTyfWloEKQlSiudvmKf") }, - { XHDR("x", "oUVmPhavLTreNQQTWhsGfCAamSpDPOQNKEiJhHpnmjgRBzV") }, - { XHDR("kopsfueubobqefrxzu", "eGibuGvysLjcKyXJInQyZxpOiQHAzMEWFLHCLpvzWYpcYGdqNrRuVhNFTQeB") }, - { XHDR("wmiy", "GxatmOZzsUPFtSkxuO") }, - { XHDR("nfqqlbyptzmtdthkn", "stzhMbtpspuLrWJqwnsAShepNBqlNJMpsChvhCQouJvCBaVdJbuWShGYRFTlzumMZSqhbXTdeK") }, - { XHDR("jugfobh", "dDMLcJnQVDpOFfSQzgDrLcuGRvEvzWFkAnWdNsbWn") }, - { XHDR("biacraztm", "LDhdjbjkDAjhGkCWxFsaXBuTyiKZLsahGJSnLnAXSyHvBrWhdhQjNz") }, - { XHDR("zupaaxcs", "YJcNnbtVUeZGzdiLcuFVWuzObVKclpegGqnk") }, - { XHDR("cajznmvaskqrc", "ryTjZUemEkbgMvxsUskCPWhLMVSGKddunolUfTUvexx") }, - { XHDR("lboxjnduxwwuwibcyrg", "BrlkqMfxdqpAgrwLSfUBguGpLSrkNbPBcQdzYllHaMQISmf") }, - { XHDR("ah", "ybJROFkzVfljMcTiGXCdWnZmgjLCvBmAeilxaYXyvUznimPLaSWjl") }, - { XHDR("rnouoiylyzqkbwf", "nNIyBPpfEtC") }, - { XHDR("sytmarmay", "ZtVdirrIfGRGotigYVXNrTlZKQySAwmAoikkdaNW") }, - { XHDR("ufbknpvgqnwzwcad", "bTiahvHz") }, - { XHDR("gccchn", "CiSgpULwaXrfkVGpJhaCoIpTTSlFKQmpsOBkhsUeNNUNpKYWtzKgqHvowTzRIPAWtjXplXUZmKFqc") }, - { XHDR("ispeltnlrlgse", "lflvmaQIcsFfPmstMKkLunUfYgcXugJhaFLtSDjphQIxyXMReIUkBoKpwoVcWo") }, - { XHDR("vdpecgowrtgzzml", "eXdNisjsnGgMHCejxcTbAWnlNpMinjlNLs") }, - { XHDR("espbjjolby", "ofmEIdXeEZqiNALRpZHNQwNQLMhTRsAkZSkqqJmDP") }, - { XHDR("nxvrwul", "iupc") }, - { XHDR("vlkangbjitss", "lyFJZReVIuXtRbieMVhDdcagVQqvXFPHGzpzhcPApAZcRImfCmlnQdoGLuhugjAQ") }, - { XHDR("fueqoti", "sIwPedxRRoRFsMHnNahhlAACkJfFrSlvIOzgOKgxLdvA") }, - { XHDR("whplb", "wwoMXQwRTQFlhBAiKIcVZcVNISSTUyODruCOfYaTlKxAvtBdjTmjPTJLGvHMyHthebtQSbBvdvPJCuyS") }, - { XHDR("rhwdlyvwssoxmij", "nzCljpLmPzBbsaOgVPZdcFqXfQBbbphgueJlBmAIa") }, - { XHDR("otq", "VnSqPyROJiKOdPxUhHOOxqEXQYhkopSfCifueOQlAujYpivYmn") }, - { XHDR("mc", "ZTTWnfDoKjmufpiXNKOMJbwwZRupNHYyCdGJjfpPAxeGXTjZIlGxoxlbWSIqtZMOshlDJxqgaAIeyAYU") }, - { XHDR("qqlwdrskzswiigdrgb", "zdOkFEdT") }, - { XHDR("ekrddiojaooeko", "bzbLXJhbCBD") }, - { XHDR("jokhtcatlhpl", "GtyjXjrlIEf") }, - { XHDR("nzpl", "VcFfBHXFYvzQJglEFSimqMfSjJ") }, - { XHDR("k", "ocIWxOWZcAjivyYXEEzJhwkSHzqzuazQkrczSNnDIPPrwalnUqqDGlaMYvkjqqBsFGYcanaQXLLHbka") }, - { XHDR("xhupzexo", "oU") }, - { XHDR("xurw", "LrJsfLkwKprxKX") }, - { XHDR("qhjppuer", "NseSfeBTHwhgjZrpzvnpQiugdUKsFfArWcLAULtyonj") }, - { XHDR("fd", "mfXFXFlzAcMvVCXUsVbpupuCSqcLimdeJgDQkjLndBDFgaUhoayXxwycafqzf") }, - { XHDR("rcbjjj", "IDjMnBAQHAQhttdGWbnXNuxNnrbrRVZuGNgRnhJhqIWWUIDPWbNdlsBlshr") }, - { XHDR("mtccvqxkxtks", "RiEOHrIRyUayuwdJyQQoxaGQsyPkAfYNUblBIAcUrlxKGyeaUzXlDAHPSqowUPapVABolQlBzKESqHiZ") }, - { XHDR("yrvzeiavrjdyjy", "uyjJmOLxvJARLORzeXbbbziKnkgxSMbwEMGoQ") }, - { XHDR("zrpol", "b") }, - { XHDR("houfjealityume", "LfKrQMkimRmhyOLfGVYgFXynYuxYYlvxFkVRobyWRrAYuvUyIYjGowASdzkg") }, - { XHDR("ajyonvyght", "RNvkKFW") }, - { XHDR("dimetsstevcebqd", "BsDuDJbJvduqcWBAwMAPbMkbEREhPpu") }, - { XHDR("leuomiqdevorqj", "RAHppplpOFcUTumnPcWKFLBdEeHXCvGSRedyvBsZORSOZK") }, - { XHDR("qnrjjuc", "DbDciKuxVhHlsNCOiBGURPeLcJdjFzDnwbNIenatyqGKQtT") }, - { XHDR("ddordj", "skoPpRAvWKzgWLcznWnUpCaWXRFbmgaeCZfSAqeSiIBHrqNy") }, - { XHDR("x", "Wig") }, - { XHDR("oycqhnbmkockut", "RGfeMQTyiBBfnxuYTATZekxsxfuBaHbLZNliDbzwpNdIfXQnhnSTwepSZLMyDlrAhJUI") }, - { XHDR("vryqg", "WFvrIsNLtExOVlXcYvfALoAANGrHvpbaCGj") }, - { XHDR("mapgdgcf", "VIJWujJbUwodWhjttjMnoSRKKHOkwDeYhEskxowUBxOvnAxFfnGPYtwEroXkFIIHTbBHWWJiGbdRJ") }, - { XHDR("ffguohkmqk", "gKMczcBxwmrYOthmmwjJwskPCKIoAGqXKYyJHbWuhL") }, - { XHDR("jgrdn", "XeNugcEXsSD") }, - { XHDR("yfngtjtwobbfyije", "QnrByyRuVnwUSJXCxDzJOfwiqJulniYKroiNtOSKDQQyztDctzH") }, - { XHDR("mmipblttaf", "UWPKnyDnvQHDUmkYtWtFuOvHSnbHhgDaVqFsVNNvGRlagFVBhMp") }, - { XHDR("kzdhpdpsfzg", "NMvMAYwx") }, - { XHDR("wztiftsqd", "ZJrMnISDWQpGdoQTInkBgyoCYJCxISLbmsdzwSVXQtUyyKAtHNnFTssPU") }, - { XHDR("rcw", "PHFNZkZgBcxS") }, - { XHDR("vxpxvwimmqbjwoq", "RMEFRyyvlEMwOhcHCvTAmKlwtxKrMURlrGNzdLjvUUhelLOEMjpJreOxqkpndDUisft") }, - { XHDR("yfrcgi", "xJOXNrqVpLiiNPLVSxM") }, - { XHDR("bwjgkvrkmmow", "dZIlfMZqiIMpAjLPeiENTMBzktEjrarpawuOLIcoKgHDUeIbxH") }, - { XHDR("dkvqwxb", "UTHiEGafof") }, - { XHDR("gzlf", "PmiNTRhbOkIuovBhPT") }, - { XHDR("fxsehrf", "BzKPlegrAlWVtLseXlElbtktJvSUzoYGGYeKdwkzGjgpqgOuwKMkzxElZlNqUpNvhFqZ") }, - { XHDR("izqptu", "iZRmMODeJqgazEQrujQGFuThXXnUdlKtZyBVxPezFwTiwOXEDctefjhNkJRTQ") }, - { XHDR("y", "vLvVGwnTwYErfwifryJEouJXLzzdKTOlrx") }, - { XHDR("lpswtzszufvsvaiokmsy", "iuqsgqADBRqgAqIKtqyuBSMJNkQkIKEzjXFJzgMrToGTlENxoeldq") }, - { XHDR("ecggwhba", "ZWPKWnDMotACaLZpaQkYRpdBjmGtnoeqYCCxCBlhJixGnMxqcfjWomRfGh") }, - { XHDR("gg", "dkhYtGBFUxGZBGkpKVPWcAHYGUGYMfENfXAJL") }, - { XHDR("bwzeqljjgyihhbgsmita", "dKARLsQvTOqdCFiqUZHiqZomJzMTWKYrxryxUUYzCjmCGfjeTyfuttcRrzOMViuZJzxKcagbXvPLRrfd") }, - { XHDR("bxecwtbcqs", "lBpDyfZXUwt") }, - { XHDR("rsxsz", "or") }, - { XHDR("mmsr", "EJZnGXRvuU") }, - { XHDR("onzxmbfctbm", "x") }, - { XHDR("aayh", "GmZoqSXzOgRErlQURTiJQSzlWPAAoVhqyoSyxOQzWJdjdvypYXbTZyshyRWMq") }, - { XHDR("endtickm", "VXueNsUAMukeJSAQiQbXGwZsRSuFFrWQdeatlrNXAKZddsaZUmKjEJmUpDijfNsFs") }, - { XHDR("caz", "xgUQkEkHsBZvYiXSEieZMPL") }, - { XHDR("iiy", "hBxNHnwqHLmJmOgOVrSuWylFHrKlejkJquCwxCmmzYaeZNpfeLxqDVUWoVhCOmMbDUDqX") }, - { XHDR("m", "ZuldxUKrnzrSFhjnNziUyRxppwPMhdUceXxzkHiCAvzSjFgXdvAXOakWWXnNaIzqClJqwUSkqtpaefE") }, - { XHDR("gdewwnovjdpkknntpgp", "UjKHttXSeUCLmENqbaHeJJQrQokIHTKtUOiMkTkzIjqBxbxwBrO") }, - { XHDR("wagjmmr", "JPIfduFSvEtoEgWZnzjmnRszWev") }, - { XHDR("vslrftunext", "VBFbRfDbowzdZQuxQSOoheQdqBtsnDiJLGCnlLqmnrWmpmENAZnomaflOFxj") }, - { XHDR("nhjykecwlzds", "JaczWoxXeclQNZaldwgVtxQJkTvUKUVTEqgJyCxgmhXZf") }, - { XHDR("hqmqh", "khGAoQzXBjhoAywHu") }, - { XHDR("llajcmhd", "eJspyxqXQehCwOxorjPYppbBsMedtcWmPokrIXIQAqjRBGc") }, - { XHDR("bhknoyfeijbvzb", "PIeNAhw") }, - { XHDR("thpnvdhfnotl", "ZcRisLjVQHXUJYWCWgdpcTtbBopAhiCPRidAhGaDZtTFhMLUbecSPduUclKl") }, - { XHDR("vgxbbbqwqjhharhdwzqn", "yHjKyYIkwvOJqoVgvAZgEXPldxLxJJg") }, - { XHDR("ieaan", "qGvqWG") }, - { XHDR("oyxvchvfdsh", "ywsvARKdFJhrytTroTD") }, - { XHDR("s", "rhiwEGphmyyvEMZcVoZFHrMSntSHLyySkuvorHmAmAibSMNPBpapNMKPbNJMaZVtvrBzqJMK") }, - { XHDR("wvsivpu", "bMxwtuDLgrDbZjDiqLjPjbXPDQJRaW") }, - { XHDR("oayluramvtrjfhsbgk", "ALfBqEjqVvdYvORHqZGHEDrKActLJeZonAUjoLQFrbULMyuyhuXwBYzMIPGJtqNDdjqBGkXLyJBEOvjU") }, - { XHDR("kvqyzgcatrcgoiofeia", "qdah") }, - { XHDR("cgr", "mGUNbahONjsuZDBvgPnpjWOmiFNAMepjBQPowKRxAVrTCYyxpiIngGneihqyAewwKgocnG") }, - { XHDR("cnfrlwtuxdasqkfg", "EEdbCJHnCDMHkOfczOiwuCUOgMdNrRUJhlkdhYUwsgAfrlZcsvqIahtt") }, - { XHDR("qwzmuc", "FKXHlTzYKWBUsQnEsnjJAKSiZbeMdKadGtJMKNdvkKnZcp") }, - { XHDR("pjde", "RGoQDPKWWRYPMIKZwgkbVobpfb") }, - { XHDR("zwzerjdxdqvtyigr", "uHKKUjcewGPvmqEwqZfNBna") }, - { XHDR("yrlkx", "ALmJeaADGWKYpIznTFyXpVQCvZ") }, - { XHDR("egkeevnqekc", "HZtHnwsXpkidkwrKRJWfSyDXcGbmlsnUmmHrTkDIlGpJhewEDd") }, - { XHDR("camm", "USxhuKBkUpOkJYUTObSfCPoAATohj") }, - { XHDR("yvkqropczvabyld", "UyZrOcEOokSVfBwVmtpSWBtMkfefPUl") }, - { XHDR("vsfsnejteglyxzrf", "MyusLITOgivANCLEiPkJiOqIlRLjmljsK") }, - { XHDR("gxsrajxzu", "SeJTjGOotLxzgNfHpCzxDfDdPMRaKmtzbkLFzckKzdxPBWDOBEtRHfOkVlr") }, - { XHDR("pztg", "oEEhQHvMHjhYzQMWfLqJdmPlrLUSjtewKRnXBjJZX") }, - { XHDR("wvzmcnifocfdcl", "zsWMQRFRTYZMUAIkVpKwNKAxBwQizUHQbihKlycIQHraoVTyEaTGufoKFBybHiuKLTWJqGLmtMpno") }, - { XHDR("cx", "tD") }, - { XHDR("kpe", "sWPJAuGDLDylkGCRtxBUDOIWwbgRLjJzsakcPlbmJIKDkKkcyoWstOQxECMYeUkMPUihwhAEWVxOYMrt") }, - { XHDR("xsscaxnja", "CtGwTOKjIwvYOKAHrcGTWAopIFOKSXombeiqKYVMnsXoxUwSiETKzEeyAXwICDUylveikjNiY") }, - { XHDR("mnnasiavwp", "pCEwwyCNledjTrdhmLKdKlQujwtjUSwhUvTXXawLAqYGTUcAXYCebkmtURewNEgkgnECavA") }, - { XHDR("gjnfxod", "gePwRHwPjdFshCyiSrFATJaeyWUGDZiWOyLdTWtCLhRZrVIeMnxcNHbfIXKMGxGhziMLOmFOOx") }, - { XHDR("pldefzt", "qHGZTnydwRocoQwLqCjUqutPEXDrKQJYKAYtRccRvwbycYMaPtJVepbXW") }, - { XHDR("vizntzdqohlffz", "TZCXsnWjAzaMBisHRP") }, - { XHDR("cswsnrpck", "EbBYJIVGeOhBKnrPktJpUMjMXvjtrupXPWGcARaAQrKDbonIFDnkfQVzyOIciV") }, - { XHDR("azakjqgy", "PguUaypwgSnzOeDBxCrLbFJUdiaEtSGuZPLEYhLQImsWXUtJSAuVHVHORMbSfPlbeCYB") }, - { XHDR("hnp", "rtlcnehnmNiohHZOcqzvPEsEFmwhUDnZsnETLVcMSgLgYOUhMSzKsnRdHdiTzRfyYrJjHcBmd") }, - { XHDR("eonruygmsxqbqtzk", "TJAKRHqHMudabHFbtvtOqVPQdeofHdSsLYkSlPtKSkbbHRoXyHkUqnCFzQTJij") }, - { XHDR("lxje", "nxbVsLxpYBtdahTGmhDiYKYhoSUgFtyUMNlrhoVrQmEiYmCY") }, - { XHDR("owjusmwogiran", "GKWfsibDhCRjALTZUvZPqWwNdoKVQaNpOCcaHXBoNnbpPAMMfWRFAGQDEdqhNbTHMC") }, - { XHDR("zxvjgdmf", "wLuhhDFSEh") }, - { XHDR("lntgehkmmlxtujq", "TP") }, - { XHDR("jmadmacxxipfshkham", "QyccmPegAebmgJX") }, - { XHDR("wyoxutbemepme", "epCYUufmNSjfAKuzhpkiBRVyzrLplKaURrX") }, - { XHDR("nxwdulykqgbtgawout", "aabsYzSjLabPgqldegwUodInrWShdSNmbcdZPKtOPJWQZUnCnRVXIWIlWqTXQXWYYdc") }, - { XHDR("xzgody", "BhFjHtIxniNVCMpLijhNyrrBuTaajtoBIwbVqtspxCVRYDePHtBEJKlNQjFjGknWP") }, - { XHDR("r", "uFcTzoRplEDOvRoAqNNidDtlRiKSwBBjXJCUpkbVixLfcVCwKeglgaeCaLjjxsCtxoKctUnZIlR") }, - { XHDR("dyrtflee", "OLGmUjRUSNxpnLLsXTHwimJgkHTrCfByWJpNhwadYpovPwrDK") }, - { XHDR("wkfvmjdgcoxmbywa", "iRgsfHwfmUuMGVnqnnVYCksMUGRxRLrrKpREPE") }, - { XHDR("zmncv", "XrQmrSRRDyhGYkRkvGAFqzfXQJwDEIPmapVwsXTksNkkYaJLcXmznUZPOANLuDvkHBgm") }, - { XHDR("hcmuaxrhbgvuqphsvia", "KDOdaUSxCSdGxfTuoWtAz") }, - { XHDR("ttvorwdhrcoixwaccxs", "AuOrbEnBILGNQUxsCjJavVzYxOoFf") }, - { XHDR("rgutgk", "jPBSVzEZkFEInGwhCxlndmtfANkOYqcwZZL") }, - { XHDR("vcjpesohbuhw", "UYHUSSArUVvdfwSWZdKnk") }, - { XHDR("aqusjivth", "EESdBQyuXxCOSVRDUBvKDmrCjntPljQdSDFNkUuuuWgp") }, - { XHDR("cduhhzfoxxetitjathhh", "GygDqxatidEkNOXVEXlSdBIHlibROXaCQADyrBedKsmzkyPUt") }, - { XHDR("g", "OqWhIKCLngFChmycWmdCzRCMdgodbUOsFzd") }, - { XHDR("mwfrmsqgvztd", "NjOERflYsoxzuArGLBPfSIJYOntjolDQZGREzoyvrOZUY") }, - { XHDR("bbvpaqmk", "MntarEziVXMTWBmEsxDGWGoqIfJGkqPzmASMWIfidzNEJaVwoAhmzYzgedvNVywPqQpmOm") }, - { XHDR("ozatugptkyjm", "VZIgesH") }, - { XHDR("c", "ZjvCYRkkgGjAKgBfvOTRhXuewEJOlvvCGjrsCrwtYqvdiHVcTmYJIPjAYLITdiyaLGwfGHgfMUTiIF") }, - { XHDR("cpdkwhsmwtcbhvnj", "BjgnIcdlFBCyLpSiIkDVOWkusdfILYOtueIUPsZbHMpPVSUulWvvUjAKgwPRXLqJXYCzj") }, - { XHDR("krxhqmmwjnrjmo", "ZoRlQMUCldYdcTVaeotxyyWbLYawJctFFoPIwHvbRbdHrEycWxYVcwSMFo") }, - { XHDR("vipcyjtfyoyudlxq", "mAniVgJZgYDzBjwDPMJYizbjYUVqxpXT") }, - { XHDR("kb", "ZpXMDnMuRvEMALFVGWEHDc") }, - { XHDR("irw", "BbjFSYOxBSOIBOfpugIyLapvZwIiOIyHklPCCSznSfGJWDlMeFZtMWNBZomCIeRapWCzHYDitvDYenF") }, - { XHDR("k", "HqkruZTmusuFqyJZYVMUXmGtwwvLa") }, - { XHDR("relnlzwk", "jESxDCtgzjhMYWxSgdXnj") }, - { XHDR("bmnlkcukuheinjru", "aBOfHOazNCIPbWBmjXKdkadjiqmoLTkYupYwXkPJoVMiLJoFVIJApSwso") }, - { XHDR("h", "VjuSpkquQwqqeHzgwdTgRGJTdLmUBxRimZezDqCiOwjJuJLIFHKxaANKoAKcYktLCe") }, - { XHDR("lyzwfakmutcwbkfzszh", "zqeMAhGTgUfZCEzhxSpaIVVZREEuwwGQBPqZINhuDnbLhLjQqESaFPwdMPJjuwPZ") }, - { XHDR("mvrwztzknzkibafegn", "HyCQwgaCbeyQPvbiLNTyGoOVpkyiyWxTTkAYofyBIWbdAyjWdr") }, - { XHDR("fdkmiiapycnmmgau", "LeOqyqRdqRHPtuIMCoESZoVCOXwMsXvmRZRVnRcKbdTwXmEHimlOlPJy") }, - { XHDR("xpfphr", "kAZuizfzQmWHRh") }, - { XHDR("jbjnuwcrt", "nvAyUhTXAiiZpnOmtJEmraUyeWvBgaiZdHCPqpnhKSOAJb") }, - { XHDR("iojq", "roBunISAlbKSwiDzDdmlAdVsfKVjvXZSjsATedybncIlQQcgpfpPyaMWNAtytaGwtMKLoXgIyD") }, - { XHDR("lr", "zTMW") }, - { XHDR("zpto", "piRHYbBswKWcEqHLJzJFkthcPLLBPYdhHPpddyelkCgh") }, - { XHDR("xxyhrhdharbeewqsf", "VavmMrqqfViXqpeObIY") }, - { XHDR("buacdbuudvglnpnuu", "lUzSqzINQtNMXgeUfnoZUQJiRjvHLGWwJGLVylXauO") }, - { XHDR("icg", "uBDanrxWJGdRRPCLhgrQBgljSkkhGgakjNjXrCkpkBE") }, - { XHDR("dbhihmlnolehzquw", "gVCwQBDkmJgoOUqXnrlLDEWF") }, - { XHDR("cwsoxfeyy", "jssMsaiCzsSxqLblYMXDCFNYxWJdpnaWiEQCGFpIvwFWMdNCsBNOji") }, - { XHDR("qmgfstulycwr", "JngxLXUunywDMItLmnZRBfIodOCHJGdNRFMANMoUXNNeDQxMIqSAQLhLfZhxMjOhpKu") }, - { XHDR("yieyejcp", "NYiXnRkEp") }, - { XHDR("bjwlzl", "DXZGYHMXtKiqhCSGqpLx") }, - { XHDR("nzsymgaxpwes", "MafUerbYcIhmrbpexjbMTmFMIeWHpspeUpPePJGfQWujNoZSxJgtwzAJaH") }, - { XHDR("tcyscz", "nZnywKudaQZ") }, - { XHDR("paldcbjjqztwr", "MGnTcyGfYuruAkSyVqoIQRTxItshmKOLgBBqdUTwEcKtgjbiFZ") }, - { XHDR("wwpbzwmopvtsj", "AkyfGtSLfVazzVNKJDrnQNiLuoKepRbwubfvQOvMLOUOBXuwlDTrPMkPvBvGifXBmozvxFbXxHku") }, - { XHDR("wppvkjsnguta", "KGROfwttxGAitWtzlGTmyuNsxHZLbDLIwuAVjXhroTLaWrSEknAZhoQDqDTO") }, - { XHDR("hsv", "HjGeNESjmqSoMtmEqsCIKnoSBXnmmKWkWtJaLBguftcKVdYtQPYuMJdsxIaPcUpboSRoGOgaasw") }, - { XHDR("ouupivhlnmuoikjbxf", "LhVdATSXtLUSVPUEQcLWqOu") }, - { XHDR("aomoajrkpuggc", "EtpSd") }, - { XHDR("nivvvdlaadmsmkahqxn", "SWmgqkqBMXTAmtkEhPbJMNZtLElNbXSZRKflj") }, - { XHDR("sndyagcli", "FtNttJvL") }, - { XHDR("zvhwcdoxhwuouej", "EUsCziBAWNsxMRLZoSmvCyJNabEcLNEnSzHBGjgsnMPRcsdhZTppHBLJBjqa") }, - { XHDR("jixglgejbudxeojlxbr", "F") }, - { XHDR("vk", "METfoykwqAerpnQUNscgHjrUVDcTRJVncOQbsYuBQ") }, - { XHDR("jtkzmufazouvb", "qLxnMIJnOkuFGkyKPViWAtkKENgimj") }, - { XHDR("ilgqmcreebsalhlvpxk", "KiMXSOdgIMoVqypcOivrYnJJUdfgzijtgpYpcIeOBoWEYPnjyZrBaHcJYEeTPrpnlvuXnkXolvjhfD") }, - { XHDR("fd", "ZWWnWjpVabWMlpjCHyUEsPmphgMvNINJNvlqVqoAjlB") }, - { XHDR("qoltrzsofrfzwrqjiu", "viVmCuprfQOtaODYxbjozCqatUiKXTDWfTLHjbWlUMFqkrgNltaDdgdeJIplyinthomJXpgivWEPOo") }, - { XHDR("xqsjdmaigzpmpmmfdn", "lVkZUBoCPnNJqzurDADpIdmkKMsKdcjKLQVVFpTMkq") }, - { XHDR("ekhmeldzzbqkvr", "dNwhIumHXuPjRHhBrEYfwDHDytxmWYeuYqaFJpLsmgSAuDpfXpVjLkGwSaRPYhoAewcFYxRLbIDDI") }, - { XHDR("proc", "IVtRNdeSGZnBMydBEwnYDmtGcHPSxrDzKvFxW") }, - { XHDR("isvyr", "XnElflmxdPZGJpQiatCsvOjjBQIhhfbhijmnoMoJmbIqekid") }, - { XHDR("nv", "BtDQQNLeRRNVVztGNlryCnCoP") }, - { XHDR("kpkgddwndr", "fRi") }, - { XHDR("dxymwc", "toMa") }, - { XHDR("vswautieixjgm", "vITCkPaLv") }, - { XHDR("sagvhsip", "WzmianlJ") }, - { XHDR("yllgplkuuu", "hMBzWZYyvARfIkyUfEUTpCuBBkDOWKmhibTnBWclaRyhYNwTDBmoqdpf") }, - { XHDR("pgdlakiovhluepmjo", "XLNpDRFqMAEugwMEgbOwkdAP") }, - { XHDR("uhklvnxfvrerytdrp", "wDzDfzYvARyQEMPaLLwAGfwrnPzeOWSnrHK") }, - { XHDR("mmlsqbpivje", "jvkgAUgYRerlkdLPYRahauAVUzOQBKoSwCMQJjXfEITzbRJWaslNcAPRZYC") }, - { XHDR("cdwzayaanjumzkhdv", "UkjkhiuvOOfcFSvuIxqLeUSOSctrHsAiFATEIhZXQerAoglsdvweRUsVZBMXErdH") }, - { XHDR("btrmtonfnmmvifvlcpvy", "FwXvNUpTyWcpocTlZhLYEQRMSoYbLRrRGYl") }, - { XHDR("pxnksj", "DDKmUAVoRsTeNOIOhzLLJqfuGuBHGrMfRUsBLvrvipoIISetLVVAVnPudFJFFUY") }, - { XHDR("baz", "AKlPJdvINNUrJjLtBqEdrdTtDkiOlxTYmFRLuyZkPqjqqPANMOhGeEhQzJWhhjxLIDezdDXWOYJRarH") }, - { XHDR("jyhlmmuwnblfolvl", "oGxdLjrCglMSQMghKGcKQvvQiYVMvKRksEXUHESv") }, - { XHDR("noawcwpdueluz", "grVxRXfqghoVktaaDgNLFxMiNnuJFuUxzlnCfgtzCkArDg") }, - { XHDR("xciezyoohj", "RRKdqFFmojBQS") }, - { XHDR("o", "azDhwnXBrSwLdnGndHtbXlLBKhIPMWMgiaNylvFNrVlVmMnaTfSqACQucanKmJwMiEZMyp") }, - { XHDR("svnxqzuqzhe", "RWaPifeZsDWNqqJwKRqwidnXruATXRXhxlqdeLJcuanXU") }, - { XHDR("dygvvrztvtussqd", "LqwvaWIzxNnVffBwIayNnIHJeSnQnXLSIibmIzgXSetKfLgulcZFnZcbegToofY") }, - { XHDR("p", "mNGtkISiTWwEWpseB") }, - { XHDR("zokjc", "CtutRZ") }, - { XHDR("kjarglqlqkapf", "uqWOpIPsVGUBmJ") }, - { XHDR("uuvbs", "YSZhvBehXraHgXpOgyXdhAklqSmMLpUmBBiPPJNzDDzkEVVYScaAeWtDgkJFDRQhAqhhXfg") }, - { XHDR("mullqnofrbynlgyef", "FSPRKVbTCyjFgOwJkWSXDKugMhxCdRSTvZKFTUhGycFpGJQrObgUFMfqweBCwnhfOvKOhUc") }, - { XHDR("fkkwnbsiqikpfpx", "AxrHzHpKnWxHeNuVQVyVgOoOKQfdFSrCVWBZNtAoOhjHDKKbKJRMojtIdSUJbrZCMptcyRsKzVQs") }, - { XHDR("uuvsioylxo", "DTWCpAmRDEucYwaWHYsGvCRhvxUtEFsqBhNDQjAy") }, - { XHDR("wzv", "kKpEChnbXgB") }, - { XHDR("bitelbqbxwoeoc", "HCKwfuUmUUoRcdRUPFwzCBUDxyRVTJTmyCdYxtHILiUYTxwUkijpRdx") }, - { XHDR("rtx", "UeXUzUAvyMKLbYNVfgNjOJparGVtIRCboIQSN") }, - { XHDR("nmqwjtvbuxlkvpjorgyw", "BRhOzGAHuUMIEfforqKySNaMOPrhWjqsSNVRdeRFoLUWISpfmumOfj") }, - { XHDR("lhfvq", "OQOwEUVrLpGBGSsKxohQTBqeEPzpuUuu") }, - { XHDR("hzldbxvxqoquakpapfaf", "ejlbmMuOZKcPpptYLmCQuOgGZSmAcrYLZNvbnBfVOrpcsCPu") }, - { XHDR("j", "knDMrbLSRFqtstcGtpNjbHPyYsnYIGFmsjOFhjXHVRvCw") }, - { XHDR("dewzxppgkiblgggyhb", "CFCjjCXCUemZXLEuEvRGcMJIsWRYeBh") }, - { XHDR("sojdsnnzvg", "YaElSsDtwMDeTtfFormCcgLaWnolicfQCPmZAiJNlsECgCEpzpGsEAJWpXNjV") }, - { XHDR("kvhnnfwlol", "LeBwGwzBinrkVXRYkpOabydrZutzPbpTaeccXsHusXHQL") }, - { XHDR("qbvbi", "oxlvGPchBGrngsjqltmrORJoidacmDLhUbZSuGQJZmBxiTqgLQKH") }, - { XHDR("gdfgsvzb", "aFsYamsONjFPHRgRzKGtlqYg") }, - { XHDR("mzyh", "TJxwUOxyKouyjLEmDRddGPCAmKcqGSFEQVRYdXGhUJNbzPziKUO") }, - { XHDR("xzrnnycytbxykmwhi", "ZxHcKhnMgMvFfKOzAsfmDpANePuXaefZXSlcpycpAqHZTcU") }, - { XHDR("arnsdsvwisezbaegaugh", "UqjXPJDoAKJvIJbyjGQvtnKEbZdwzUMAUCtYzYhfEFFMKJgysYXTBoGlLwGGTtJEcDvbWHQyhGtdju") }, - { XHDR("pvwgiivxoa", "yHCVDBkMYTYGIEcxtNydMuzFPGFHtzPOAsUhhEGGwMYDHeCUDaBWJxXouZyZcHRiRimMdaWnNpqkkE") }, - { XHDR("lijccnqoupstbqldwee", "JybcbqoSKdCYQoAWbzjTGDALjtflHI") }, - { XHDR("linkjfztmsu", "uCGUvBTVOq") }, - { XHDR("uivakyamjqbx", "nTQtQHLhxIXPlBlineUKqGZCPoMJOGTORVuhCwPhpwFeAsgDmRGgYtnlCY") }, - { XHDR("jywbvvqoekv", "mAYXBbFbqiIeFTLQIFwjpczXqlqzFGvTkCjQJFKIWqvpxTnrmQsvYCfPBXKUWgLc") }, - { XHDR("xsgusyowxdg", "EJMwPcyS") }, - { XHDR("mxzbg", "fiBIAGsbMdNsMnwKfuSjZIRbjdajMqgTBvekHJtbhzDjFqmovTcEWzdSyGIILwg") }, - { XHDR("sxjtuiq", "jCHHFKUMpFMgSyGIIGGMvahqfDVYeNBaGCKYIjNAQtGihZSXuCHgfEWIBrjUxinAaABZUeK") }, - { XHDR("vugnjboycxmnsnc", "BkHEkBAXAknYJLqmPYvRivjHtgscgiiZdbzvXWcqcgeTdvviSTvRQwzwd") }, - { XHDR("mqblnpwkojmjyxalpljx", "CjsZfFojkHQMLwnpyoCZyhdrPNxfVkfgSshaQbVLiuCtBypDtvtESaYBOLdVIOdfqPDdz") }, - { XHDR("neqwqs", "uefmpzEJaWOFrLwmItLnFUFhbblRUSkPsdsPghaFzYFTBlaBIR") }, - { XHDR("gxoqfgikqsrwgpfgxqx", "ArevoeffimBkdMmRjCI") }, - { XHDR("dlqjpjfmrkatitslafp", "mheJ") }, - { XHDR("spbninhtmdkdoinujia", "RAiDhwPZoMsdJdLIotgxeVcRPsdUXChUqJc") }, - { XHDR("qjgorlfxyeveeiurmvi", "eqOopPbOLjwPhxummbOjFbcUvLRILhmBWAIrKUzyYqIwfEcMigvBxCAyoeDILIPxcYPtHOkn") }, - { XHDR("wdbhbzb", "xYSFWjvuVfjEkOksQqjVYUMPhPMVRoTJSxlcmfjRDnZCjkqPpHcSYggklYJRueCszNJBiVI") }, - { XHDR("k", "EywkAKURBYLcTlfybZrWNOTAAgUkPfcCksyBHUhdLDsFckYLqoP") }, - { XHDR("hvbfichigjjihwp", "yzukzaYERMkisFRvlKnUbM") }, - { XHDR("etxowcaklzswvqpim", "gFTCKUDPXDDJH") }, - { XHDR("jmqbbhx", "MXMKcNunmeCDDTIMINLZHcaaZorbICvHaVejqrLBofofGSGxurmKnofyPUQueJehEuJc") }, - { XHDR("ywbsuafa", "VenMaJVnaejhj") }, - { XHDR("oyvlvytvgosgnf", "YKnGiDuUsFPBnvdomqpbWYJWKFBuzKQIFJdyVFBNMugMvKzIuTCXEUtTGEwxfNLPEPtazm") }, - { XHDR("hltyzdkpjkgf", "PItKCJZBkFuMIkfzJDdBIiptztOaaZhLBYjxHrg") }, - { XHDR("byrnmshphtp", "gVdUevlSbyOFGIlzOKkMWDsGVsTpZkDZIOqRJsejkMBlNHcZImUJPFfIxSibMvQBdOkSrgGDfFNaYL") }, - { XHDR("bchloopmtijyknij", "xyICeeoHIvbQLzSOzaxRyZTmWfuLUOpsTHTuuRlGjwJzyhsxAWYtUHbfFHAxfbAkpQPxJk") }, - { XHDR("jwjvuimw", "XvgMozSMcACZIXxjrLujJQjIzIOCAFqtJFefbIiGEwKlxRuGxvSoPX") }, - { XHDR("ttrhe", "lrLZPFnlnaXKmUCqqJGbCPxqWqOkFFamzxOUTLlAsBMUAhtJRAcKd") }, - { XHDR("kmzs", "dQCAcnYqhFYc") }, - { XHDR("rgmdmszpg", "OFjmCypHsWCggKpGExougKa") }, - { XHDR("iibm", "zCSDfVrjBUPmJXkJlE") }, - { XHDR("flzrupvuzwnqmdqlie", "DXRnlbLASfnvTLVFZTZOvrLuSyAFIslgvKAQeLfURbSHtdIhHaxYdzBWNYvU") }, - { XHDR("yqhsxcdbcjwktbymfhop", "lngiCoqNTsNdrHrvpiryALTVqyfQ") }, - { XHDR("txbkwlotfwrrpmzvy", "eOKEKljrhxuwfrjTBLKwlwQsRWBvx") }, - { XHDR("mvi", "CyLOutOHggNlRGJcOh") }, - { XHDR("ktsjhg", "aCIaNVRcsdvUwfomQzJUFodEnUXwKpvrosKRCwpEDQlLxsnpKPAhgmoOAjHPwA") }, - { XHDR("slvmihzvjhqbedinfmn", "SEzIZxvPffacXvjGFqDyljYPzJDWOSGsAJCjIWLgXXPzYkkQfuOSqHBtmCtOvLeDqI") }, - { XHDR("ejnlrqkms", "nnZunKnllQZCXnQVieJtJtiObeqlHWhIPEMyoflvbclsSrmKaJDPFAWAiOzdgIWHrx") }, - { XHDR("yjyxyfs", "xCRvodpTcReUexrJvvJWNXkUccOHXhXjCeJERKNvu") }, - { XHDR("ksplwzdbgumi", "TjnAuiPdGcQZJXsLeIiHlUfSwOcOVDAARyknW") }, - { XHDR("pudefxmaxu", "OYMGTOaFIURnuISuVpETopQFrRMWmAcCTd") }, - { XHDR("jqoegxpaqiqdihi", "LXlysmMOfmXQilKmLnXDRPsmjNTwJOTaBfKhnIbPUqZtKzDPHcrwboZrlGWpZQgNeaqIckTABwYGm") }, - { XHDR("wf", "PtDbMjGyetPOmSoxmcCZZxZbyeFcEeJMWbjtNCqxeWdfTSocANvwVA") }, - { XHDR("cfpkxwgjkmugxqh", "vZGmjfb") }, - { XHDR("ogrkd", "TpjpMdQLenZfUBkOZKLLsOrcvxHtQBfviFCNmomaiOInUIstwzuXtWAJdkyIcolRBLsrOwiBo") }, - { XHDR("unpsqmpea", "OnTIWNcBshtqHgKvQzroXcpforSvGunKUrirStpwPmqzNKUUuPAxWqikPqHGEXLVGyVowccqsdozVdA") }, - { XHDR("gotfjwwyors", "ytpdKLygZzLePkaVkIMgQkjNuQQIjeJTVR") }, - { XHDR("ynxxbklwjaljplcyiht", "rcEjLaLhNlldXveXQEObnryKKZTeq") }, - { XHDR("mudnb", "ljZfjaklQymiWp") }, - { XHDR("qfqdiw", "PSThgWRgnAzHwAArQTGThRemcBIp") }, - { XHDR("iuvla", "dGFWtsOOMwvHhjLLNDdyxpFhHHFltgKUTJDC") }, - { XHDR("ucyhdeiehlblwxqkwm", "yoeRCFCqpdttfBRjGAcUa") }, - { XHDR("eouzqjgdeftqagfbdp", "oeSEGuhLMHKZmqyeqFEDPPEpTEVEydWoYAkemUCXOxNRWwVLbJKuxQxPElWnVLHiNOgPBVpCjn") }, - { XHDR("r", "PNtWgiNYygPkASTIQEEsIgWTu") }, - { XHDR("mbhksqnswpscn", "vSJdkySuyxYfuDyzGWdjsLkXruBjjgP") }, - { XHDR("aikynfxrarplijc", "JChNJ") }, - { XHDR("jqnyxa", "QPcevDTtEIQJcwY") }, - { XHDR("bfnnqetv", "kqvepEIIZfNOJQJXHbkoyyPpFAVXJCt") }, - { XHDR("zi", "ILiZgZXiTJHRFFnJQA") }, - { XHDR("kaqinnhbf", "mvjIMjPxBgxRAdlwxjtWFFMKQxhZo") }, - { XHDR("ynlukanbbgappzpdetr", "lcHbSKCaYKNRNaRFtmcqsCryBEvlJwCZRmTfaPeqLacBDHFVdRusAJYgROKSlhVHkWYarAExghBHahJ") }, - { XHDR("pmqkhzm", "SqFQxoYYSTixqXxoThksItZceBxlcZdxdzEAYUbwFLBSstROhqfvPGr") }, - { XHDR("rblicevkwctsf", "gsJECSyibWIsAGWu") }, - { XHDR("xxjsudiveax", "eRoxDLnTggFxuG") }, - { XHDR("bxmltocxvbtkvnp", "HUUFNJQwdHZiGNbJYofEOMgSrakMuWGRBGZXUKHFUqiGGDYCdSEKTPAULzSamBWzigWNvDGZy") }, - { XHDR("fdulkupcxgrhkuqqdhz", "qjXjGFBMabUrsZEOVJFxyqvMcpVNystIyivZvHRSkZJugIOfukcPlmtwHDtUBHLzbedaOAHzUjUQl") }, - { XHDR("smgiywisi", "fnQgtNuJHMiUBbUSwgaIoOfVzpjKquJHulnranMhJEVUDfIIdCmdlprkSDlPi") }, - { XHDR("vmzdi", "JoHaaQnjasBXsgXxTKWltAKzdqGbNGQWXJNUDshP") }, - { XHDR("kczjsymrtdwqvzp", "nmHWaCzAeukb") }, - { XHDR("ujnhwpf", "kuSNbUluKoAiCLtxddYPMthyWIkUDUbGUpRtqNBofcEkel") }, - { XHDR("aovlqymzjjryhzfcj", "OQtFSegjfoimUZcecRXHMswqHhFvLufanJGm") }, - { XHDR("xolyfrekuzfrdmhd", "WMKRYKGuPgUoTGjSF") }, - { XHDR("pxplmdawsy", "QIYAPpgpLgraVkSbkliwDkRieFxtUdAALPRKlvq") }, - { XHDR("hnzmlub", "yKrFckIrHYtrmQBDKHsnZrELWekDNKnXDQvpMHaZBzsIsgQYPmGoMxXnPbXugjNNLHEqw") }, - { XHDR("hdwhxamc", "WHCpnPyCHsrFOIQZcupoMiMcksiELbHtgxfqHNGEJvXhDyeBKmHIaxPKAJXyPf") }, - { XHDR("bjtrogybpvfujbbdvkxi", "vmkoNGhgCmkooBovuCCZHgIhGdgNdCVrfMtWltypaUSkmoqgyYERkdaRLhIAcVFEAauYz") }, - { XHDR("aeqogihcfgmk", "dRWzFpVVcatQupwcgvuwtaEgJHfbdWifTdUpiAZOYvABtHWPyteMAHTYWvxedisJyeKjNpL") }, - { XHDR("ca", "zRhgPqEOwYDNRPJUitCwnafJnnNpyQvgZi") }, - { XHDR("kvhxmniyhclmzcwvixsl", "XgTcdr") }, - { XHDR("t", "HKhUsKUdOlczywcjiYjtwByUEyTYOAEHkxueleRFVOyNArJoIHTgXOCTLHSBjRVUEEaCxH") }, - { XHDR("dtmhfnf", "qWWDfrm") }, - { XHDR("a", "ukOYhBFsHuQUhdxPdnxFnRdYMnURdatoIgvOIfatijJhTaLbNyxKdRZmSmkyVgYHLlQIvaqmtXcb") }, - { XHDR("qe", "AAq") }, - { XHDR("xvmzgrfgccznn", "RoxRRaaYTuyHwcXmmpZkmHCuoOiOTGcvEkTCdUWwYdnEyWPTebBvzGBhQhUMO") }, - { XHDR("vuolbl", "vLSSbklG") }, - { XHDR("n", "jDkwzUpgYqddEhCiQoRmCtuaISlRsiuWs") }, - { XHDR("jdsuhcodjzo", "ZqQlGTtrPTUqYWXFyQ") }, - { XHDR("xyktirmdybycyndv", "HrITopprWgrVjIoqcFESBGzKSvpXbcrVhAvxYyIVEpDxSgysYGDNAidPtTcUQOWKvQIWslE") }, - { XHDR("nnncaoruvfcvr", "D") }, - { XHDR("slvrvuxmr", "dNDopYECOFkqmrcxdbPWpOoruHneiPUyxTNduolZhXItnOuBzYbP") }, - { XHDR("unsxkl", "ZqXeGisEJCAjYIckkdQVnBJzKOGvVGsmoeGfnItUOOyPOXWeRUAbnAzOqNLfGA") }, - { XHDR("pmljhuaganpukguoge", "YmqDkmuNdpKNd") }, - { XHDR("ostvrvdbqiu", "tlRZWdjaPxVXFePERFHAkqn") }, - { XHDR("gmsegxkgkizevxir", "Xusw") }, - { XHDR("codtmlcjizpoikpg", "vFnSTKdqbOWMTBIZyEUhiLQYiHrUATMAlBBmjbAiMqdgYHNEzapmRVeWxInHeMhiUUVObAIZwOQXa") }, - { XHDR("idmazjftz", "qqWGMPKluqzyzrTMAaWarRvLWRaRiCq") }, - { XHDR("mcvtwmqg", "TQmLotUQJjXotpujmJDUUPpLDJuenkXpdxjLuBHWV") }, - { XHDR("wcvpfijagrrgwdf", "JODoYaloyOhBhvuNoJeUmaOdcwolXzFlLPbUXoZHLhojDccAeKnWyPgnVwikjQhJJmrLI") }, - { XHDR("nlvkahznpwgkhxczqrr", "RTlicDDlMgGqwRvchgXncZEhinORVTcJmvxKVUURF") }, - { XHDR("fgijbhxqmhglo", "PWQFFAcHtpJRQGmcgmWHTKFWbVRHVUMFtQNLENsLKhUQUy") }, - { XHDR("lcwyjruwesghuzxnez", "nhmEtUaHyzyjjQLpHFbA") }, - { XHDR("nrbnasnnlregyzo", "ktJrAcMpp") }, - { XHDR("bfqxybfnlzaarbwt", "moWVhOMrrBIWsGBTePkbHriypOyBixUogyQAUrLnLYqSaSZgZYHwnLhZafDihFCxrGCIIFUSTKMS") }, - { XHDR("iohuuhwwbohxdh", "ENoFjwpN") }, - { XHDR("mvyncrutvawtdnxcbm", "lvqJIRdn") }, - { XHDR("mpoa", "jUffUXGHeVrSOTdYshzkHeTiiKZHILKvRQitBQvQRgiQOCJbTpZLiaSskDABQfKvLMlDoa") }, - { XHDR("kxpilsorkp", "SdcVqNXFVbjEFQLOSRUcekWxRtWQOqCkcJNMnEOmFarDgHBSHlyMrzFhyDlxmXbEHQABnuUtA") }, - { XHDR("nllrsrthdyxpu", "JANwngIwiIYzirwOUaSWwZeKmromH") }, - { XHDR("dctckspcqotecppxunot", "CjbLAbRDSgdAzfBpcfObctJcabRhiNUDEwppWXxGyYcDvhedVdjbxBwBeVSP") }, - { XHDR("jnkhxwiazsxfvdbb", "rpaLHBTxLYuimXYNJfHczFLxISqYglNjMxjAJhbFVmjL") }, - { XHDR("fvw", "rarbUqfuqAyQIotyhiROMKEnjLHk") }, - { XHDR("wzcmzmvrnigbeznpkhxv", "uCnRzBHucHkrCxwTMAsnTihCjyZxxnJXsPJwxcwRxVFavsPkB") }, - { XHDR("ackkndmmegeiskcvra", "phSiYHbcSpbCUkagVIwkzbdvsHFKYaNpeZvYhbsvSHTbGOgbfsDjf") }, - { XHDR("gbngxqurldytvxlpwdsv", "sOZcBzwISQRTLCaMsJmRyWcqBJWniRdiWdTxUE") }, - { XHDR("lsfduzmoxtsvxz", "IYWPBbqTAzETIuAVJSxmUkDGRfCbv") }, - { XHDR("prcxfbzxz", "pWfQaSMtzykCA") }, - { XHDR("innirwdl", "kwwlSXRBzAKmUEnUdnXervTkKoGrHSkpIgLhCPiiJiFTwYgtcegSBIKZlleoXLkmGFtXHwLlcpgP") }, - { XHDR("zskfnpazfflo", "LPVsiQwpZCYXvhzfWyIceSeKySgeKgBNiIrxmokXrzHfCzNiaycUxdJQNVtIvgiGNHtuFhjO") }, - { XHDR("cijsackwu", "oWnoLyRfQypVoBabCBolnqKslRauoyGrVuaqzaIrZvKbKVSlQcSgmdenEsnVxzf") }, - { XHDR("ullkedaovxusljjl", "GkdDsAcHchsRYwnpkNkPvZAyRcfxgQtFEIYYmaXFXtofpanxcLkDFyAoXavUyqJ") }, - { XHDR("ezjdittvem", "AZVxJUPhtnLJpspyiyzvYwGTdFMuoUmdmuwMPwBqCmsJ") }, - { XHDR("aexcsn", "RGVvdmNeYTxuhfeIBvlquZTSjyOkAFXhKKHOPyVJfIxcoSMCgxfNyfsAgMCyYYAg") }, - { XHDR("ihotfd", "gnWXIcvvQaePwfpJFvcwmHle") }, - { XHDR("jurutaacemycwdxv", "duImmdDXaoaunGvqLlNnLMdKuWrsAMlcfnBBBu") }, - { XHDR("myjdiz", "gdhyDYyw") }, - { XHDR("ppjczlezyina", "QaCFwHANxsdmtIxCfwfvaMhXeqkYDUFbRUIsGxFgQqMEkRuSxlEllAXgvNdK") }, - { XHDR("eplrvslqgllsoyohz", "ntrgIUOAjkKJBvJZaIgeAvXCpUNeQlJYiceHNcIRNfAsuUkX") }, - { XHDR("ryvhyrodfypvaqwx", "waRJxnZFaKoMOqzkHPgOdNeESC") }, - { XHDR("ed", "WAXoRxBxBvNFPMbdgcoOWWvqLpQaCaNUIGQncJoMyDIzqssEtkywakFDfxmsMVMncISiDhloH") }, - { XHDR("xrwzrqpykl", "kQGMHyNVgcpcvNPOcrtzKyMmOtDVhlJBeDimSyGEVbpkygCMQ") }, - { XHDR("ulioti", "BOTMXMamzauHZlnYrzyDXgPnamKoZhxpaqBEymcvYkqqpNMiqtnBMcMmrKgQcxvZ") }, - { XHDR("ekwdmsghjopayalqy", "SfLvWPeODcdBxVfMMoWLZMuQtnXHjVqSgcEUEtEJHaJSRAunYeqTfytbuGf") }, - { XHDR("htv", "eJEXNIASIDMeIfAxrhlEEcISDKatKsefrHMhhSIWIXklOuabOyhZiLvuowmYDQXz") }, - { XHDR("isonsorkqhdnixmapjgk", "oFKQClWAPOzEeNduTIAddUGGrbXOcqFboMGKIzdnUSdttnTOACkdFXPCZhpKDMUbxKqblvWLmDPNbz") }, - { XHDR("kimqxshculass", "kNbrdDxFXJReElVfgAQKBstKypfXFYyOQLKdd") }, - { XHDR("pnyxzencotbb", "mbbfUUGItBqrFixsIakBUzNPMTYfLKNDQYRmaaYFmMhTBshfHXf") }, - { XHDR("ssaqqvpeqzsaqsm", "bweHznDKEWUZQOfCBEgLAXuUXNzjojMlHRgTZUPSrwEPGmvo") }, - { XHDR("mcteiulviz", "aQLhAGUnPKDzERTY") }, - { XHDR("nkrjejiohzc", "bVEObskNSgBByOhgsFlVVpDiWZufSzoLdoiCLRoakbpcxIlyAmkaYnLTisH") }, - { XHDR("owdsspheitzdoxg", "eyP") }, - { XHDR("wnbthowxdb", "tSubsMYnsypRPHAIDhALbOzBjlC") }, - { XHDR("zabfklsfmiigly", "JSrZygLIfQAUUNaxUrJosVtzSWFtHqMULoYQibLzZVKQmudmdeHzMueKbzyampn") }, - { XHDR("fuguokegvoqonvfqqd", "JPyqahkSFOCWgIVUrGxgDCgflBpnRrZQAosBFhfhwDMTAskbNitcrGeMXVIXR") }, - { XHDR("yxyjywaimnyrieorj", "hkrifPrfYzYyAgRmibJkXsDQyYXWYrDGaqcuxGuCAmqbBdJhE") }, - { XHDR("ittayt", "VbGBkPncbmHnPUdmhngtWnAHeJZPfxXPSHXZekRkNWnNniRWmnHLGlbyjFAQWVmac") }, - { XHDR("japatyvirqomhtvdjfls", "ybrpfEGJQcFJUyRGoHVdA") }, - { XHDR("azdyhsxf", "sXjyzym") }, - { XHDR("ecczqzyzx", "PRuFTS") }, - { XHDR("addlggvoedmqf", "rKpErnUmzxwGStKxJRdKwpRWPvwFTOBLRUglZtDzkMZwwQlyDGWJlQwhTHUGQjbGFAc") }, - { XHDR("osdqpdqrumc", "wfnYQaLvVDaJboy") }, - { XHDR("tyywzelesxgzuacf", "WpZLYMJZ") }, - { XHDR("ioohxssuk", "quJUzVTcPMkQnKGPAwPebHzoNxoLCbBiMVKfBxzKwZtKalTpSLRJHFiS") }, - { XHDR("iwlvahqtiz", "GLPKWTcBktojWJOkPsBTMvVWvZDHGkKdIguMRwgMBVWVln") }, - { XHDR("qbpicbgfnprlpoinihi", "ejXVwoLMxxWwsnjkYRiWnFeUdRsxVYxsQBvunbZwYVTWIociJMhcpjKrGsYIp") }, - { XHDR("cojnl", "UMZVpiekkywHxNlsMGnJXUPHaKbbKjhsPwMQyQYTgNLj") }, - { XHDR("wryevcb", "QMTOEybsqZCjvfwVWZpooyaycyYyQcgYOrBpATrEXhpuMZRKqcyPyhRMlCIh") }, - { XHDR("oagwjyzhxvblnga", "SnDECYhuqOwieFMWxmAbgzzrxWlCalOovQSgp") }, - { XHDR("pjv", "WDsznnEgLAyyDIklMBjqVtBwrBpZRPweqWZUAPchAfH") }, - { XHDR("ehznsgwpopcuvguvkvi", "iWwSLvZKTADunbgGmbouPSDhesnwwoOEf") }, - { XHDR("ieonl", "xUhmQAOpTXVllLpyImgeZymCGFMv") }, - { XHDR("liqfgleocxmvpm", "RBGeMXVGVndoHOsFYGWWLElnnQCyyRjrLpIGmhkMmjtYruBMZhvWGIfKxhnArDvrB") }, - { XHDR("wlkxctvtrhzu", "KbTnCiIFMtGeAVvKOZQEREabBXwwXmCEsKyokejQravQkLVzILCCoMctjuwUaWMmSYFKsSrpn") }, - { XHDR("pbqi", "gjsJVIvmGaGKWTINFdsvkIPioMhJhVBvbtfHzCMjnvDKaq") }, - { XHDR("l", "tYWz") }, - { XHDR("ywixkctelghwlwaofrsm", "jxmZuWyXVrEo") }, - { XHDR("uvsmlkzvelfxumfnw", "CcEgOawFFOeecbqeZHysQXLiflEHWrYHQibmwezMVYIVtGQHba") }, - { XHDR("mazd", "tRlmKQUFcuzMGAUqXpcgK") }, - { XHDR("q", "YAeKrdYsOoSubhiFILQIszYKvR") }, - { XHDR("yn", "JOiPlUhplchygfrVGTozwWIbRwgJeCmYZPpZHzFNMwRnuxThgSSMdYzsnfStARXsaEGqAfJaM") }, - { XHDR("urghmdghizhntkwqf", "yiQQQeRoNdJjZzsLvMHXvOygoEOPdiKGuXpyiaEbjimpEINmtudYffyxTXQCBZpYzMTstMRmqP") }, - { XHDR("awirphkfmfjhdce", "NbtDNtMGFKeJiPaKBkpy") }, - { XHDR("azrfnosepnyaw", "BwvVQmlThpxNTAdmVpFWkGPrypvpzYLDue") }, - { XHDR("ovulrfl", "vizLUbXMufGYmgCdXURNsFewmJrUYHAcpTvsWMQC") }, - { XHDR("bvvfhcrfnkgeyswnftbr", "m") }, - { XHDR("ykvgeizrlw", "vdkDTIRPWhvZfHpnpXZeonrQeNSXazON") }, - { XHDR("wehyocihmyepajldgyfu", "SaxAVJPpIkCPPbtNQSazDUSazlpEyWwePIPnDGghrpcuV") }, - { XHDR("awntfnh", "BFLPetwXzDWWyBydXC") }, - { XHDR("dips", "vlODSXBKTbNdEVpEhBOXfzCYlXpCtvqxpCnhTACMmbDDKDBGMfSomYKTXqllSINwXlCtbDbqguYG") }, - { XHDR("ytgozzwvmruwwyyc", "oGsBHPvheYyOJWFRSbG") }, - { XHDR("zjflwlcuznn", "srnTvtsMQxMdzlIcaOsbeTpLGHyKoYzdCebIKAFgqlfcLTeEoOPObkjViNLAoAFvthjgThOyx") }, - { XHDR("yy", "FXyYeURvjBnktdwCzylyjYWQKxHaoSmvqvZMroQYJZ") }, - { XHDR("ihcqgyw", "rXFYJWtMCJSUrSaN") }, - { XHDR("ccfwbrkvdz", "HWKhqfBBMOvGJhnyiVQhACLHrqc") }, - { XHDR("mwmjqlqrl", "ragdHhhmMALSXhQtiFwSCFeFlzjnRYKPMSUjYVgkUscTJyOuQIkBzoJafcGWriKxhcCHhVwbgQwNcX") }, - { XHDR("ogsutsmbapxwu", "otkuUjEkRfYKXWmdxBciyKTsDVu") }, - { XHDR("tgthuuajermzfzz", "NMSrSIlyexPjzYdSHVVQEoJDSPDPdBSVcVqtGBehGbteQN") }, - { XHDR("izkpjhllunmnzbejf", "aFqApRaYS") }, - { XHDR("nnkyj", "LLXvNPlTsmkDGuNIcrrLJdjVIgrLjjZjKezGnqIEIFIqLjYBwZn") }, - { XHDR("wgvovrj", "JdyaHtKqdhiqswgZDzULlvlfHonHTgVMDeHDteEruRRqDDMkXWwaid") }, - { XHDR("dektviuu", "ioqPjwUphJjVORgemgJhtKtDDNFuqucaHgalktTSPhkKIerM") }, - { XHDR("xxdm", "wOrSFn") }, - { XHDR("oazvykvb", "vwFhAybKFIjgacVXPikDOUepUrCLTxpomDAOiiEDZSkSF") }, - { XHDR("xngziqfrwbwz", "tLIgOLPdLyHbyaAdvinucpzooLeVkpJhVxQRmEmopyvKQjAFUMXtRhwOYkK") }, - { XHDR("cqbxtlhwudadwgj", "VoKelfbxdBfYQxKGnOKMHfogGJOgZfhDFUEvanBTvojPhPP") }, - { XHDR("nnmdemcjftmxusysyj", "NRTeYwFlOvIMPCOEPfuuPIhooBNaQLBdXFMfBtrQaGyjtBbrysGsWVNeJndMuoLD") }, - { XHDR("pq", "CqLIHVNzSsilgyqUsPMmnjnPfZQugd") }, - { XHDR("eeptsnkumtjpdzhi", "FXTyQMusdaAhJUXRhwkghncGgUb") }, - { XHDR("nrdrdwfsev", "YuPooLAcIKbDmmdptc") }, - { XHDR("fqjsftnodeqbjktzi", "wSvGaSFzlrpHucEVQfJmTYGafTcrzKHxgRDWPmsooAgCJHmEjcymmtaUJzBTisLxlGGJTqtHRVvyEAB") }, - { XHDR("fohxvmpswpz", "RqPZmTuQBlihglVehPgwMeMfmtxkEgnPVPIhZvIGvEsvjVyuOgxWuzgvPYZqneiFyBOE") }, - { XHDR("romvlrptryeks", "AAcZudXMnNoeYlYnKdrHOTiWKWbSnqyIHkilXmvuTMQrQvTdraGiiqieCcpxkKdDKpxfYuVxfkDMg") }, - { XHDR("wqfraucpgasuvpsogqi", "kSyivcceZjZclmFMEQFmfVMdWlV") }, - { XHDR("uodtdy", "EdyslYCaIhPqAlTfuchdCFApDVNWlx") }, - { XHDR("jgigqadiaiikvz", "cGRhfywwxDbzVQnbYpYVlStkSZRfDesGQoCSdSGffCbRXcxfTsOTwZVEYnkIHP") }, - { XHDR("lyvuiurdt", "CprLUkezLBAXEPxJXGeLaMbPuWiROYCaXAflcwGOlTIuBbVjFXBMEBkxrcFNmatwUIuphthAwLDAP") }, - { XHDR("epykyrqjsrmtvep", "JQYYSpsTbBTZbuvsrtDMbnmkhQEEId") }, - { XHDR("cdsosjwshahepkth", "kYrLeYjcLdYdbsFariLfLuKtgkKRs") }, - { XHDR("nkydmmhcvddcztudcfti", "ZNruHQjCkKUAWsvVAulsrXomvoxIoJKVArFlHvazxRLtFRGocTapbHt") }, - { XHDR("haodms", "cGWLdVcTyklCCabpiTHnrkdaPpDJrpMtZMT") }, - { XHDR("nrpoqqrkcbafrbw", "dsJwEzKmoMCmbgqmaEvjuJeOiUgUKnlfktZlHiECSWkQDSTqiQbUrVJRiKxWUUwCZQdPLrJOQw") }, - { XHDR("xpsrtv", "YtarcN") }, - { XHDR("grrbixahxjliutq", "AtkbfsOEPLdDaLGIZIBUwqRAMewIWAsRviEMFNREDq") }, - { XHDR("r", "CxYfSkpAkejMQpFaYlHTDgzT") }, - { XHDR("lfynb", "aBOJ") }, - { XHDR("yzhflripeiisaajhr", "y") }, - { XHDR("irrv", "rDsHWQDsgZZDiERrVaKPJOKyUUXMjPzBJKuteu") }, - { XHDR("dgrqszjtrsecliohad", "oUEpdFYcC") }, - { XHDR("eu", "JJfnYyKTsH") }, - { XHDR("wkghbcwvcau", "GaCGbepRztydFljThEwCbfOMGUfWnQ") }, - { XHDR("wvluhkgpzpgyiyppbdni", "edznCwYnUFNmVueiAViaiRUtDNOoyXRYSBpiqFMHaLDoUHOOLcWxIr") }, - { XHDR("cvnhgnx", "bLbrTGsapAFG") }, - { XHDR("fodiwobalkcrkuyaqhb", "dVHXxqMBYKjNxhdZ") }, - { XHDR("rmtyoltrde", "azjUDAxZICGxhFAGzCVNlwb") }, - { XHDR("sicqblmmcdaemyzy", "ffvzKDbEQYVZpcqnNoYjTsscwYTtWOulBWZoPzRHhvyTMvyEGcDPIErdDPtoXGIwZzJxZzDaDfhSefgT") }, - { XHDR("ihhadvcty", "BKVsSIvlqJHflWIyzieWKWSQHoGJNAFzr") }, - { XHDR("dvzhcbshrfhcbetd", "ClQBGCmybJQfRtFUCltStCtxnBdAiFrgGLKxXQdvnxpjTLNNNnFbB") }, - { XHDR("odkhlmjbvpxavhvac", "QaaBjaEcovNINnmGIcTfujGboalqvlePQOSGwGHoVXVeqnVCjEVx") }, - { XHDR("hjczwmytilcqvshhc", "sUA") }, - { XHDR("iphdt", "ZYMAEXFGwodhjwulRCtmRtHa") }, - { XHDR("zlawkefw", "bKdYurjuKOUwyvxehkqIQCuJcALkjAgLSHQNTupWRHljyJnAMlnYTfJaTbbxTfNtgUbxHkrLwhDkgYp") }, - { XHDR("vrqjgsgyoqbn", "pYUqqeqwGAFKcdzYhobNZmAzvfNAxxFMNS") }, - { XHDR("vjnicaplxspcldhlz", "UiZtTPhhnqsAcDWlvhYiVxGNZdRXjulZEDChqGKXfhYJdvZRgoPoyJvxUYItpCkYEoKymUkt") }, - { XHDR("mzbsjpnrarvv", "tYnNCQXPdUyIcEfePmXYkWe") }, - { XHDR("cw", "CBmCIdhpjzVjnKMbhmIqEXxVjEFhPnZidbfwDUR") }, - { XHDR("zxngvhrjzuxtffapdte", "hbaDUFOyRtpTmnrEjrQrMIjgRzEWIDkhctVrOHmXiRATPAwA") }, - { XHDR("trsnlcobvvhmcdeleto", "WlsntsUxYosXBnLIizLstlcxEhPQlBrNjSXbrMhngYshNdNGhyutUtNEqyLGpwdzMwzuTAx") }, - { XHDR("nqflb", "DfmNJwdEXdlpUALqBsBiDFgzpomPoikTd") }, - { XHDR("xuudb", "IiWchzWIQyylmsCcgsMLHSmTvZmzaTPjiaCuJLgcWzaAtpLYuotOEwwmFUeHu") }, - { XHDR("igjkxxzzpewaaatvtt", "DDRQRdIFAaBhvtTjgDlUPloHXRGHCeQQklUCEXPnhRpNaqkhgnRTppYOpYJAwDz") }, - { XHDR("ccyp", "RRNKWnocFUEgdTgURoFPBeIj") }, - { XHDR("lmauodmz", "MsfnWTQBZWkwODupfOzPlqYWvJsuTwwiUAeZbYHoyyxwxdJbC") }, - { XHDR("jrxuy", "xdYlWmAvCBDbdOudRujGuHsIIPZRnNKlFWpAobZMxTMNeBOFoCkOnLnyqBpTi") }, - { XHDR("jroqhfypz", "yWngaTAYdYnDQIzCuDzYlVwWiNuvXmIlPlcjyxuPIRkLtpljprwYn") }, - { XHDR("q", "NYhkCOonVqnFygejVKGRjQioEZTVGdYXlpXeXQzuWjfMJwooL") }, - { XHDR("tukqhjgtrrxiirl", "PVZzUFUiVVywQpLwrwjayyQRHbqGpKRaCofuFPtycixT") }, - { XHDR("xkfkpxnlzaeyqdiddnaf", "ulhBYncbcXSxEqCbQBjHfcNMjmHvRcIZYiMPphFh") }, - { XHDR("lubyjwpg", "fgnKsgGXGnBpdJphjRFzLHkSGJkCUxniNnhvSioubIBNMrHIWTeZOrhOhyiWchWDGQDObAySwiSna") }, - { XHDR("yezmzusdixxtnztozto", "dwGacYQqaAmAoWuaVlTyMbQRtDNGxlovokArFExshJU") }, - { XHDR("jdlaqjx", "xUvvXSyqywZmmzwKMqLCyHjjxVRzKzEVgJzKxaAxryZLBdHFbD") }, - { XHDR("tsrswcivwjfysxv", "xstbVleoPtgpNptWmTULWbZPYrYHnWbYXIXBVpSJcyFIbtHnyMOsJhQum") }, - { XHDR("jfgrguwpnrbl", "JPWPaypkDATPmhm") }, - { XHDR("eavvrjvccjhabkvanov", "zvYmxsFluEoMCYmQTHAVbkbASdpexQLJBMkHq") }, - { XHDR("atxtucdaltvy", "qNnuTsZFEufsbpdpHYgRoJKqqqJHWcUfKrBQyzUPcGnMPJmWrtSJVEHVWzVEATGhgRZkUmKioOk") }, - { XHDR("oggetksu", "qpjncefjtMhIaWYMTdtncSuxaQBPIsLPNfmAawhlGJacyzU") }, - { XHDR("hjwiyyugcpd", "OMRTyemMWGlVzZuUKESJHSypxPKOXfmdifszjHNtIYGdqPdcqLbUEdcFSeoKWUB") }, - { XHDR("lmzecxtkva", "iKspCsmmwEnQXTOeKrwNlIlOCLfGLUUqOkYGL") }, - { XHDR("hkzkkyatihdnfw", "IDJvDGQzPpkbltBTBiDgsYWPmwgaSWLzHOEWobO") }, - { XHDR("sianregcum", "XeZjuSolAEiKOiIQRzIZ") }, - { XHDR("ln", "ovzFNbYEwMFRWsfJPhYxswqnfxqQaNQzAiTfQNaZcWTXZnNypMxeAaCL") }, - { XHDR("ckfxwlbxpsnodggxkbdx", "MrZSLbfLqkNAYWWKmw") }, - { XHDR("ylgcjjmdxfjw", "nuu") }, - { XHDR("urgxthjhyqbonw", "gjFBUfmmqZLSg") }, - { XHDR("se", "gywgiQwAholAFEQsZKEqNYfnofkbfLIFvyZdqxjaXWMVRVAWfKafNBidoqtZZBBbaqyhfUKTxyEc") }, - { XHDR("ymnc", "RzBpxCAylrbqHWOWpfDPhkdGyvonDyLdNqMLjDNgbBt") }, - { XHDR("svqztiqrt", "xtfZcukUqWCTmgxwLDPqyzCvlidzZqjWpo") }, - { XHDR("e", "HkZINgwiAhFZryOSCTXpyR") }, - { XHDR("wvpaiccksaprflfiuv", "vEmeUhBDswVGcAQmC") }, - { XHDR("kvnlmliiiewf", "zdbqcijhBmwrIVRJDWTFbxlovnNSmrFkYLIIkyQppmoeIUh") }, - { XHDR("xiazierebr", "tnvHjyPEYklyDXTzvTOucciRGsgXLRascEQxtQraXxHwvFuDBRDImlGfeYwXArkLVzGEpCKfCvu") }, - { XHDR("z", "hxbOeUGbBtaHixbxquuUAKaVlfZJousBdfQC") }, - { XHDR("gpypkzs", "XOBdNLsZYVmjoGiolZyGmqkcahCpYCJZqPZcAdkjufpRTDeNdaEPWugG") }, - { XHDR("przsojommuhpfqy", "PZKTnnVIKYFGuZpcyVbCoBShDWpaAZFPhgUdJayKwnOSYbWRKjuVzFnrSwRtktW") }, - { XHDR("wl", "EDuzKi") }, - { XHDR("ta", "iMUgHeTcVcmMEzncWaRHGrUkjFtNOPglCRgQvgLMPtIBXYhIHkZCSMqtXmb") }, - { XHDR("tchy", "JxTRpclRpLOfUvHZSJQfHSJfkuDfiFADpUKQjhryuxswLOHSvcQ") }, - { XHDR("klaahkatphxtlhhvottc", "HFctsYBQGCtlTyRsOohcUlIjQjoXwiBDAMNqOWnUigPUNEMoePttEXdBfIdNZVW") }, - { XHDR("qcovqzytfpnfcnlhws", "aUWxhpAKsYRscsKaqGIIvfTZiXuSGPKRzxDKuBUZMdMxEqc") }, - { XHDR("mdfuqfelfhstki", "vLEniAsYEuonVpETVbUVKKCekKuJyQRPUOpSVRNGCxvZgXUoOcHcuLlleC") }, - { XHDR("hmfzleafynwgz", "aeBRJySKaCQE") }, - { XHDR("rugmfhpr", "EyPGBoOBuAiLFmFSgQCvIxrjiTiMe") }, - { XHDR("ymnxcpd", "YKpHfSkdiTLmZBEXefMpiFLjggKudRvjTPkjZDbmIHfDueFywIseoMdIelTXlwbCGCWxTrGx") }, - { XHDR("wlwddamqufz", "tsiIlTwMxYNxZPxsJVkUBcdWSzCEcVF") }, - { XHDR("uoxjuazbythicctdd", "TKFmRtnsXmdUxSzxPv") }, - { XHDR("mzucfijuyiy", "LqkvpScqlgzjtnmTQxhoiVnphtPJBOsdosjSgDcxSFqmkGCyvVhlyxGMTMWPENlQUSnldsavWsWqGfaK") }, - { XHDR("xkqlefckdnjqlgzj", "cbnkKKtnFYJgTfxOsvUEGBrpFrxcxjim") }, - { XHDR("lfrewbymicr", "oGfxIFWjLEiEFyGAFXZXIuokkE") }, - { XHDR("ecojxbjsjtigxyxrhxk", "rPV") }, - { XHDR("qfjcnnucm", "zKivqFKzPVidhvIJdDqQaWwtrxSQOE") }, - { XHDR("pnubbmkj", "iExJmkRcHbcokwKaSujEVJehUAzZkqmTxnena") }, - { XHDR("iesi", "HEL") }, - { XHDR("qbcumcovlpus", "rTpdcnLCCqqgAwYwGvxHJMwobtDuscPfjOWBYHmR") }, - { XHDR("whjidbrqkrzteuzfgjrk", "kHXjOMVzqxyZZvhaRnKAIwGCjVGlLZOEQqcBUTMPkoozuIlGSEZAFVQplHmsEMpBPPCyKmjE") }, - { XHDR("nplcgnjlsukpcakumyc", "DAdCwbsrmjnCRibrsWtJEhZQpaHfxbBiNZd") }, - { XHDR("jdwwrpaghzbhlocu", "MSFSipGBkXazVfBiMGBbZsXvSBOVcEWdcDglXCnVMfcaSdJsnS") }, - { XHDR("vucrqsdrjpshqft", "HFcGfKrdLzrntjbetIyyXCaWSWbhmShyxiab") }, - { XHDR("nmkxlkqncktb", "APZKzsgAZIMbvyJcZybjERaYccvjAAXhFaUZTCXQcBmaYctLpIcTaUxPuaZLr") }, - { XHDR("luamvlezpbggxbshgzi", "POrjpRcXHXtVYUbjW") }, - { XHDR("syqjoxujczgucsgezlb", "dRhzDNykiuQertkTqCxclGwHixkprsrbJbvW") }, - { XHDR("bivncfqxejehmpvru", "QVXd") }, - { XHDR("echfyvhujlea", "JNRCkx") }, - { XHDR("aujjdrardlilcjv", "oTdVDCitWDMrYrKvMNtavJlFdOVCPzkGhMZOBxJDceldH") }, - { XHDR("hcvjxhngsogqpedlvjrs", "vJDIXUUFWb") }, - { XHDR("wnhhpmwnygjhl", "cJSoxADYPwmQyXFvbgZeKxvJkgJEctPkLshGgCbkVsirzsarWNGJihpAlOPJQw") }, - { XHDR("tp", "hRoMHwYsdc") }, - { XHDR("bcsewsrsdnyagvqnej", "GOGsqhImexsfIujYlhwqjQMDLsqfozyioDYNGuYgnccuYRTIctICKnQ") }, - { XHDR("pzvk", "xgeNYImQOQMIPiEDextgmSsDXXDGCOIdQbTgvZ") }, - { XHDR("alskodd", "vEOOYjwfPvEkHwJhZBDYi") }, - { XHDR("sfvtc", "RuxFTFJFSxBPPtelFgmnzdLPmQwdQiergwoiUtGitqkOrJOIRdREHbqnerUlXMg") }, - { XHDR("xkrjgktocqpwf", "zACcSNgRyirVdixzxTZrZRFQdKjSZoIGWYSDJPTyEbfz") }, - { XHDR("y", "yGhcaJLxMHyKBORuAOGSYroLotVjsExvkTvyA") }, - { XHDR("sqfprfvgf", "ZwRoIwUjIzFufdSCUsqygfSmOqNUjpPmCseVjWSkaoRyvawccofjx") }, - { XHDR("rbykdocsxxbzkwimabf", "SiihZTaaXRvwMm") }, - { XHDR("lcskjvvz", "lOHBgagIaVuCGgRbzqqESWApzttdtRxMlYCGOKucMCHRlqhfVkpurCn") }, - { XHDR("nzp", "nFmNNopYwJEKCMhGihwedsRGjXFxTjszJhWokTFjqI") }, - { XHDR("naoxuagwgbf", "QLgHWsVXz") }, - { XHDR("qnph", "HMiGPBzoafFjlAtmxDZRdmFRFRHWqYAaahWSKkskCpRLPABYLiIfKGHKDUdyjYXCGQllzTeTVSdTNjf") }, - { XHDR("riadnrnfznq", "hgvRMlfvqFqvTazwQgyLjvqmZutDUTvfyYOTHPViLUeZJBAACSMeK") }, - { XHDR("bnzezpkbwactej", "kmJBrtxjPykFLwjualLnWPjrkuMXP") }, - { XHDR("vmyxslejl", "FqIknfNwRpWLPaQQABOnswubeKpMWyZBILlEYIYKoCfytkrTdNUp") }, - { XHDR("nbrtodnxhqgmotk", "zCzEZThytpTpyLYYjeblwOrtuAlRZmPmyaGWFHeHj") }, - { XHDR("nrxmatcsmtdiqummmqps", "JPRHpyDIItvzHHOdcbvSSzcGmYKUTagxYzBsSCNGTTHLJSEONyYy") }, - { XHDR("powfykbtjtbavxu", "DQeXdbqVBjQoqPVSazflRrhe") }, - { XHDR("g", "rpgClxNvoMSjYtuSJYEJyHCGSNcrWzgRZZTkfdYNSnJwdNgzxCzmLvf") }, - { XHDR("bjjiynudlttovvebsk", "vEhQesKSwUVshAHwJIVbiNuFYseCMtqVIqgrrpzziSRZwlorRhTJUBDpKvlIyHCjFV") }, - { XHDR("s", "HtbLmBnqXiMJEejslXedWJbkT") }, - { XHDR("ovnsixrdsypya", "EjMOzkLb") }, - { XHDR("yiv", "VhcwRLGSwMEoVAIvOFOpaWEGbTyYRYIVMffqZoYmubxOwKZXeDyyOXcDkbZUudygXWKp") }, - { XHDR("aujbvtklqnrihkfghlvu", "JwDsJwaafAuAXigSVUVFiPdjHyzhLkhMArqtpiqcrJXyoJThSd") }, - { XHDR("pkctilptpftnhxqrxcf", "gGTbmxJrAvdPMIRYEemduYJQmSCxuJbelFUaMz") }, - { XHDR("hzwm", "qahyXyWsXxUhJjZMSEuBUvmFYqGLfOdpmRpGCCLXkmTLSGDUTZvhtxGgcblFKKFPtSDLlMJ") }, - { XHDR("mpspgcvjfjb", "VddNrYVOKHJqxUZwRKzTmMEBJHYushMkuVIEOIE") }, - { XHDR("opmqxszjakny", "IhhhvbEQUtpscMSkFNwLicowqrBrIzHvnpNFqOuKMxZidVSWREEZ") }, - { XHDR("menbw", "mrYZoZnWTBdFTmGPFLpckCrYoVHiTCG") }, - { XHDR("cel", "faZROfAaLiIPMzKPhllVcqRiTxADWAkAJMSgldTMeRTRdT") }, - { XHDR("uzggj", "jiMiVyqsIfdKYqjfmBygnTmXEoXizIuQUYSTU") }, - { XHDR("enmstl", "UsNIIClSwZupGLlTvARoVk") }, - { XHDR("exlbukrueoinkhka", "biezBmlvadHxmzperHaffXxZGfQcvITrcMNNMNNgNqBrqTZMPQiyAyXvOQnLlWKDVXVgcQcfgWkxy") }, - { XHDR("ggamtrgb", "PQAoCpO") }, - { XHDR("tnfdrnixzdcjmq", "AHmdapELEgDJQPMtCDGaXrslTGaXCt") }, - { XHDR("sheoed", "cpHJ") }, - { XHDR("zcatqx", "JFvDQypHgYuAABRpWUkoIbQRujWTIYOBxzXGxMPKkr") }, - { XHDR("pvmplwcantuokh", "Bzg") }, - { XHDR("indwomgrxshru", "jExNxzirbQEzwYllRqkOTsLLDfoTwcWiwKpJ") }, - { XHDR("ogzzqciggy", "woiZfNwmLSsNZsmVgtCZWlZEZkkvKoaEs") }, - { XHDR("quzaqhnglj", "GpkkxOrldZfByEyRJWdtwoEtA") }, - { XHDR("fbqxatbhsi", "QEsaYXOYItYUCPIWZjFpRIgEwuuiisdKFfVGWhEXRqGJzcnwyaeaMQQfpJTJCpx") }, - { XHDR("idejlnad", "JWrJAXmvYawaoznZASDZXFSfLybPievUvTXyiONYAyedcdHY") }, - { XHDR("rahydliwscmuqaqe", "rMgLpnBdOTD") }, - { XHDR("seyjuwzvdgmyjdlrenvr", "CRlPmrMxZvfCmordTOXSKjUiTuxpadVFBjJveaYHmxcxjWnwBMeqtCdlcsNgxxRdObXPfTbYn") }, - { XHDR("coez", "ORzK") }, - { XHDR("nmfxovvq", "DOINJPrcjNsNjrnpgbWqrTiDqnkHZMrEJbQy") }, - { XHDR("faeypmrczgzbgfar", "YBQcqGMlYXybjIa") }, - { XHDR("psfuqmxabsompbi", "FCaHKVzghRmXfvnTEHhNODsgrqdQwxTEAYtyRQakiUBZtLPqkK") }, - { XHDR("yulsuqxeuqczzej", "weClAzhAjotKczHnNDAbxWUWBUBiqS") }, - { XHDR("kriooul", "McMVpFpkuVnyurwbIvhVRpqCAtvocTBnSIWSWkoKWzVGEZZbJLrrytiIsNZBquVquDaYNPyDBIQrS") }, - { XHDR("aotaaf", "rtwGFjXklUCMlaYSfWTlmVdjXUixmBeZeYDAXMeBoCSmeqaoIZ") }, - { XHDR("wvfjjpzrmdqkqjah", "QYSprcliubNzKwdzdnqAqIuWiAhcdVCRHhteQsHdGPs") }, - { XHDR("xhjwzxkxseldwafs", "fwcCGqJTcJewPIW") }, - { XHDR("ylxxzktlsb", "qivOMsGBMEVzPuftygIhsFvKHUEUrblxpFeOK") }, - { XHDR("lswximz", "iAEjhULrWkncYCjUZOMpRajDnswMkkSPbqYEoarymertCUnffkPuemZaaqlSmIFGKvFjO") }, - { XHDR("twws", "wsPGNuYEGgzgWuGLjtKHfieLoQhOLmxtSlqOLiJAn") }, - { XHDR("fgwpegxxnxhjcqwfzmbl", "ICyWxaKjjlTrozUqgwgFsSVkZCYLwj") }, - { XHDR("rtciweeebsmvy", "N") }, - { XHDR("pzdvhmkooilmmjjdjfs", "XIpRrvkRJQNbFMYWmrtsxsIKxa") }, - { XHDR("tmudpirewfmauntnn", "ltJKPgyXp") }, - { XHDR("fggqsf", "WuIlmvKmEuJnOBCsSCpeTFIFUAhoNHCiLHOEhghwvxfpFpCCcCCmksAmgbw") }, - { XHDR("gmsbezrizzgzwh", "wsAZhlDQxLlhTFduyHp") }, - { XHDR("qzpeg", "i") }, - { XHDR("iszoffpaqutzcpeg", "E") }, - { XHDR("xbemfanijhdudyqysh", "YSlsyudecbePdGRoxLfmXFawKfuaMFfMyCJKaea") }, - { XHDR("mwyihrdrjulzgokji", "xiisiVrzPPPKeJkdGNpsyvmuauwUHmKxKznaHXJWhIANdV") }, - { XHDR("spjtzshohc", "GKeSWbIpzMZGszoRDgeWsDfecFBXhxbE") }, - { XHDR("fnhk", "oKVRFzyyqiztsQh") }, - { XHDR("adpdjogpdmxutmwtkq", "AbIkDTdXSnkoKLQGQxhdzdjuPKiPDkgscHPOgHAncMsVPPIcdNBzKnylvdokvLPVul") }, - { XHDR("orzqwxveyyaniluuijh", "ojrpVKYBJcWIMIusxnuOxIQiuBYqtvbdKymHspdkTHvfEYUBpUoSLSXqkxBVuruonW") }, - { XHDR("wwxrlzkiw", "kqdQwgKDNKZgbrVWFnMgygBHeGIScfJiB") }, - { XHDR("ovdmpxidbbe", "XdmkJdcFWkuiiOpiPReAmqXUpbmJQDhToNAqcKjRNdkpkJbwo") }, - { XHDR("ykgkgeeckvq", "fQfSbyEtyZpKLIaccoWFXCA") }, - { XHDR("knpxeuyvda", "nXp") }, - { XHDR("xa", "bMpNwajFjzKZseuIlnLjPtjbVYEWmwTICHjsRlxDyaaUFQlGbrGxdCGEeqdHEkeLzaCQsCRpehvsSa") }, - { XHDR("gzdrjarqnpwajkmpou", "WrSUmTJNIuIQXhHnIKHjdJPvHhoaZeWWZYhHgCkTRbDMbuAhEyAjOeUzhuOyDXLvELaqliAVsoQVsM") }, - { XHDR("pp", "ywlaXVteFqHmVbnpsZcMAuio") }, - { XHDR("mzgocetoywszmqxz", "xDkLZcoLArTHFoWSuLZtuvPhGbwGCJxtKRsjvznOdYpdDQyIICScuQesNqaizhgHRHHuoa") }, - { XHDR("lbum", "sSJjioicIatEYRTDXOsiWbmTmlERFzZHKTGlBnaDyALLdPzlYJAxDVEwjwGFjQmqFbUiCQofvfjcACHd") }, - { XHDR("qfrgihenrpheebpvdwch", "VpeMOVTMkvoMGUjXlSEyNOaKutefeObAfBJQITIfccfQaSEtcQcOZsqEFwkEHmM") }, - { XHDR("ajskhb", "GoYDtWTvNUZodwTzJZvCQndOieEIFZHWlSCrkBxJlLuTxTkvgyLDEowmJEcqx") }, - { XHDR("kkdlqcyvzccfdlgdekzc", "VMVLZpUlorFLYDcDseELSG") }, - { XHDR("lopyapwbocyy", "MijuxYPOgODdSvzpJIRkatopLSgK") }, - { XHDR("zrawwmzchuztjfyytukj", "kZznbHWPYHJQTVLFhVSJangsBJFOZiCXchaKkqVOcbeGNaJHcJZZAtuclxepIzHFbObErVyeN") }, - { XHDR("aub", "SPjsYnrvVZMtGeyizmHVGBzkeqLPxKNKuyYYzshdGlY") }, - { XHDR("uivbmujctzinhbg", "jhiosNJHlKSuzWlPRpwfbbPoaEYb") }, - { XHDR("h", "MnKLNxWXruuIYrVSMaMiuCcQYRXPpBZxBfNi") }, - { XHDR("ed", "WVaKayWztFqbbsGrFtuaJSwkT") }, - { XHDR("bkksrshd", "KXLfpYDrTDxKXDeUiPZZjqydnJzmqPhecXArMZXBJtEpRUwFyf") }, - { XHDR("swbpjtrxeammyliwcvk", "sgtSXUUJZcwcYgLlaOooTpQZT") }, - { XHDR("kagud", "EPFpSahisdJsvFihXCjZitJpqGaeeeFSiFJa") }, - { XHDR("ldkbqos", "yalzyGVnvsfMq") }, - { XHDR("sut", "hxJTrsuWYcTTqzbpwHDKfLnJvpQehjvyhyDjFbYuUfroaUBIKqLfXwQAujOgbpNMqOScRl") }, - { XHDR("vpck", "cKTOdQwabzAmlgEzAiZrDmiZa") }, - { XHDR("sytsnuqjj", "ZDXmYJaxYKyqLlaTXuB") }, - { XHDR("rnmmhwpseclalklrzzew", "iSWEByJoTfEFcRNyOjnAwNpyYopCMmUwYPet") }, - { XHDR("qkitzymselzowxqimece", "OUPWuJXSFPRhrrJAQASgbpFdloWCjMJBrzoZWrjjcNUlRLbwIemWEjVLfyAhrR") }, - { XHDR("grcmt", "gq") }, - { XHDR("ownhzdwyysixof", "dtMuEogtrqqBOYXPQmkKTtLpxOsChMRzKXqvgmbfWtyqUNsBiNNw") }, - { XHDR("xuwlxwnld", "EwSYiiV") }, - { XHDR("dfworfm", "rHtjEMNilsJBvbsMhrYlUHnbRrB") }, - { XHDR("iqzwqr", "fvPBiOxeHikHUhns") }, - { XHDR("jhwd", "eGHdSAaIyAZDDDwQWHho") }, - { XHDR("lbprba", "ekXYHKZbcuzLuDpzKQBvUFcYRdvWTlmOixfZF") }, - { XHDR("hcqcnbsoeftuxuli", "VzmonOHrCpjrQKInFxtRSnYaWMgl") }, - { XHDR("gwbjdrpdnuvyyxxum", "aIBFnXfW") }, - { XHDR("qhfcenizydbwoqkcz", "aRddOcWJsrAvfwnosVQOYXRgwbErMelaMsbmOuEQJGPFQZiDUXnZDzUUthnIjrrzDcMGWjOE") }, - { XHDR("wwbarlghd", "gSdkzwxOiloLSxuUcBbZJA") }, - { XHDR("isxpuglkyzuf", "KiLeUyMIdGBkrXIDazLTTcn") }, - { XHDR("ithjzkpmiomubpftkxjt", "TvToINGIwQclDrdOileLynDcXYeFOiCshUvDxmzTiSjgLZJwvJfBqYXsEaSAHqwBjBBthAzvemwFyw") }, - { XHDR("aalbnakjr", "OJfNOrncqvzaGJWReyzCwpkJQZTHlJlwTApvOTBOyrwPJWiWZNvuBkqXlhHz") }, - { XHDR("kxpzmptrjhl", "pQBeidtvnQLZNnNuIuHGPoaaJifFTPDBbbNXyMflBFHiGpZShQwwUpgpCRBPJdzVkZhFGePupMmcXkfn") }, - { XHDR("bepllk", "wAPnlDXqippmAfNVBxQdjsSGbPpzEtTMaBPbqMxZOrkAUlhOUBoXcbco") }, - { XHDR("wcosjdlvbvddjqpql", "AdYejLltjXlJEHCbVwQPGg") }, - { XHDR("oylxwxlrvevru", "uckgxFxy") }, - { XHDR("tsuvnammmboyfa", "wLNMEQKMnvnZkkCRAdsQHDoaqtSOKMAZfdXkn") }, - { XHDR("ovbyxxgexmjxwpsvsawt", "tsEzwl") }, - { XHDR("gefkhyfpzgwifafmko", "tQ") }, - { XHDR("nrvugepov", "rBdVdCryGYlhnboY") }, - { XHDR("ghitbz", "MnhMWtvJOGJIcsSxVxZuA") }, - { XHDR("uqpxsoogoca", "JOIgSfboVtDABydMvGjfzLPyZvUwarfXyzZNdGa") }, - { XHDR("divahcztdwhta", "RAsIlRPo") }, - { XHDR("caddriyfgjz", "EPejVjmDYeKdrwuWTbPetlCmbaDGXGTNyJZq") }, - { XHDR("cplua", "KTtGgfJhKXlEartdWSAratLIdoPgfzksHVQENoewMdxxszaYagrdXdJlxytjEm") }, - { XHDR("pyfzpsklujofu", "TlHHejqHEZnHOHGZZAlvxuE") }, - { XHDR("zaz", "xhBhBkzSTtrFFXganghFOJMEoFvyAHyZGb") }, - { XHDR("kgojedmt", "gLrvvRBuZGOSFmqmsPwHiecIjULcNLtXfvvleeFaTRIXkonocOTwcGZtZSWHMEhmzXTCwkpZwL") }, - { XHDR("rkrxzifq", "RnIJMtxdpYrtigPmeVozyirlwjFvavJExxFmwgjYjt") }, - { XHDR("sr", "whJzPXfxDIdsEVGTSCfmcxQnNvcGaeQEscALgwshvGRuDzuuIxeMuXqzPkfSwRCfMRqKgYndD") }, - { XHDR("akgbhv", "HIYWzzQMxnutWvrhEChwzZuGLBQOmGiWPNvGzUswNWXgpduuCD") }, - { XHDR("kcqcovgnnbhlospixp", "LquyUhzWVanqHUKzJErcfhwwROmANUlYwzjgKQAzDODZbQviAfWrsClBpXVpH") }, - { XHDR("abkbe", "BVyAPMEiZpMYjXHdTYaVJTQpmKWLitYoVaNIgvRRmROmDDEYustfSsUUEQnaqsScInkgVueglftb") }, - { XHDR("xdidcplglmloiqhwmdtx", "zzDpAIiBdBYxIyeofdilLZCXqDlyMsbmGHiVzNDCnBTrPwkwQcMUoOIFPMHiHotIRd") }, - { XHDR("mmlweqpoqolsf", "ZjKrSoYuPaOaPrcnboXheQQUKsFPMoZPIuVivYNPuZhYKdSqhSqPKYOhBOzua") }, - { XHDR("wqstrrkbzuhmhwl", "fHUYZN") }, - { XHDR("exqsqlpeapofxxvixua", "fjekTTSGkbmVteelkRhgsuluCBiWoSDdYKVswgTmoKmvFLKpqEradaTUpiOXfQqgPtCITJY") }, - { XHDR("rhihftgdpmwv", "nRdxHvRSBzOe") }, - { XHDR("dehawfevjorsz", "UKxqj") }, - { XHDR("bqrvw", "sAsZvlCboSnmPwkZbsUIxSugcIcldpBBGPm") }, - { XHDR("mqubof", "xjKXWBYzJ") }, - { XHDR("r", "CUvnYzOvcQWlieCxhIzgyygXshZldjZtPrdGPzcGuswPGhrLqcfhweWbOPeqRETjArpE") }, - { XHDR("xjgawgtv", "ORXHlKsufYdlAvMJZ") }, - { XHDR("eegaztcmwxuwvs", "goiUAsHioFl") }, - { XHDR("ndfbjryccwxilqwcdh", "rBPyDjdHXZrcBeZfUBm") }, - { XHDR("vjngsucbttn", "fWIXEAhCdxxghbLLcQTDNNemETT") }, - { XHDR("qptubakeiawrhpdw", "YTORcuehvcaTQQniBmscjzLApOhQraULxGDjMxDiucVueqOh") }, - { XHDR("pjjqvgakexbzyltupym", "yXuLGMSrJjhuHDQNzXTRV") }, - { XHDR("ysxosimgovwni", "jwLTJQRjkrTcylyiSmS") }, - { XHDR("km", "fUVMiBXjstNSdSbIZZpIWltSxFqibYjH") }, - { XHDR("vcekoct", "GBJPhlrTbWTeBeHCqRRbYBRJKKxXSKOmnCNog") }, - { XHDR("rkqtgix", "kLosbZEURrQgqBixvXYnoYKZmXcEFxATcTiskMhHkEdTYXcOjfOlLWhXSaIYLYTXUyYz") }, - { XHDR("bjmrklqdacyyjbvk", "RuuOIPVMOCJaCQLnsHeYocMLyCdWcrsEiqsKblxAbXdoUhQflW") }, - { XHDR("emfqkbcobfwcnu", "wpjZPUHnUqVaThZMzDfzcmVNYLSaUzTWjUaNHPGToXgWCzYlzXXPsqRoVtZmgcblGkVyRnHfEaMw") }, - { XHDR("dezmwse", "SBQFGmhQXPemkQyPEXZXtGeURUoOhetVNJowEOEsKUMSHzwSaojRzOBJjaevUlbexbbEjcYGYBVPjyj") }, - { XHDR("va", "cLCvdJtSwMeVKhxFJAhVZKRhcYApVSPPOlu") }, - { XHDR("exlfgc", "NyZcoqQYSQcHEMNDCyUScgJFuRMOOMjKZ") }, - { XHDR("teghzacw", "VnDOqnASpfHCjKdkXsKdhFZjRLdKIupuySwRopeeaJwgY") }, - { XHDR("kfndfntnpaq", "OPFogKshipkjZHgOgcShSOQCrdZyQvmcyKmFOjxNArAIKxMyyUiSOEGuTFFo") }, - { XHDR("mrooqoentdywgenm", "zfUWqlpGQqtC") }, - { XHDR("nzpk", "gMVCLmzGhqxfEPAyGaualbWDZqXqEcFihmmoUymBOcTeLnomE") }, - { XHDR("yijyakdkhodjazry", "hkVJsvzmkEALpj") }, - { XHDR("hkcoydcqveqtxpxtpt", "uhiIdVSANkKLBicPMrFuQldOUVDcpXesgpTcRUVxgXiCbitFTZUqqXhntNWVgTffXmUKPxyVwhngKnIB") }, - { XHDR("zf", "IOqdNmmJTcoRPXWrEJcveBqHRdsHnooCLkfvUelocKRawxMhWqdZzOQCS") }, - { XHDR("vkaodelghiqe", "vYSrHveZmvtRYMlIKKWgMOpfsOxUaFYkmfpBunHaGZZDKOvPvrTAnyTHhNsOjRHTgKoqfW") }, - { XHDR("vuibyjhohuloee", "qTJOAUpuXnhSqcaxtgKnEqWKgHYjjyMPhenXRsRUMyUiLRnUdYthA") }, - { XHDR("jh", "USGMmBpsuxNbniFmPeypqyuYOPjMUaseDFzHHaovQUJRaKRbZpzCrqLwptPwuLajyGTLVhjPWLovH") }, - { XHDR("ptbupkcmuleviitwl", "FxLGirbwyiBvmeKeycjKIxvYoHlVtivdKUDaChGEzMvMrOVHmXmJJuP") }, - { XHDR("vffgerb", "UjCg") }, - { XHDR("drbhrlfdfxfybmouvl", "eoWIeny") }, - { XHDR("fsjpvmtpgyd", "tJGpzaXkmSSVTpclZyiKkgMuiaQvxfEWCJtWdcyXUkG") }, - { XHDR("wmgdzaqndmhh", "uraLXecjbuOFJorGQdaGPTLaCMzJHzPLICRmmxQFwBuBXJQLNTpIoqDnuYQvOUMxJdwnRTDlG") }, - { XHDR("dvqnitsrpznhanc", "rWGNXaijAZToKLgAddCMMYHzmfhmJLqsMx") }, - { XHDR("xrwves", "hBXfyStxoBmwqIgfpfzOxWIouhfFisMUpHhYPesnTMToCiQWYDoEECcJXFxOqOLAZ") }, - { XHDR("pyrazdrlqi", "xavFM") }, - { XHDR("xx", "DmOKOZ") }, - { XHDR("f", "wVMNsbievsdxfmeCuYVjNLonTSiOzEzUbBbYhmROJFgBYJxZPXfFAIyhvwoDywKf") }, - { XHDR("dazvfstawefvmpy", "FYBQ") }, - { XHDR("yfj", "VWyxXOdSWKGQNpwHLbxBGsUlxZfIJdtxZrAXMcvhlXztCOfqhFKhhHwKLmNQGwEuZAxFCGDoClvy") }, - { XHDR("bn", "CvjiwKGQbBeIGCekRGfgYkodHCFdRVzXHSNPEJaVNHYB") }, - { XHDR("tmfrwnpb", "iUcNDsUztQdOcYqQXrnIBNhoqsPjDIikNOsYgMJRecqWNvPUXwfEuaEUHXB") }, - { XHDR("yv", "c") }, - { XHDR("vs", "EwqSuoQuwMuJdoagfp") }, - { XHDR("z", "paUzUtFhfJoXmJjJACKcKSunTgAYHcuekdsfroQhnIFidZkTKcplqCWNignjGyTJKiWcDPVvbisDIal") }, - { XHDR("vtqr", "kuHyHcsnKXzrfXKJdHhJVJlWWiPZFgXyDnbPrGkaBFUrvcrNKFbRcdFAQu") }, - { XHDR("qyaaer", "QzyISgbvKrxraTORtvGLgfIegZggigHtW") }, - { XHDR("qjujsghgpmergoxqe", "RSdRdRldOJhyaYfHJ") }, - { XHDR("goyvrpyne", "toDjlAzKmLvAlLkdNIDHDmAiDHpSroTVDGNihRrwsgLjP") }, - { XHDR("vhedq", "qFImttLlcaPRhceOHAioKThcbTPyrpcqrqUEMyUiiQttkjpZfzhVXaNzsbOmuRM") }, - { XHDR("wzgtfcykjgm", "oHhymPEViGLPuuuLMSPmpES") }, - { XHDR("hhpkwiansl", "rxKurjInkenHFvBIsbXtOTOWJVECzGKCKVBZaEIAkqqRLeaMJGYSn") }, - { XHDR("afdulpqqzxebzkpqstby", "mjQwsfmMkZlfotqytNfnwXcKohNy") }, - { XHDR("ltem", "HPJZOiydhbsBAuoRuiSNhEWUbnvkyNhwwhIxgG") }, - { XHDR("abqafv", "HBKLcCuRCdaMsbrJMprLcRzBMACkzSKpzlBZrOvXuTXvtQtyoBQtAaouuwkmfMxgXDRkPKYOXbcs") }, - { XHDR("ugnijbhvhsvak", "GtXfKglUnmjZeoeeomisqNdArpYBXVncTy") }, - { XHDR("dnluvvl", "tVPstlIqCbwKqpHKqHmuSXbxRcmgrUERffTflATnafZZztGhiAzE") }, - { XHDR("zzqr", "jUdXyHoySiFFBTBDHAbjdFHChkHeTiBKsxrKnSr") }, - { XHDR("hywacu", "QeQYYmgurLpDjzuJkoUrrlUmnVxlLyobyshiBioSfIvqNehGDiMNvsBWTrGKbHFYsv") }, - { XHDR("ujn", "cvlSKNYSPAvtTiByGuMyCwPAyt") }, - { XHDR("mguledd", "KPqvfUjFOKgQDyaHIbbvgvHzhvG") }, - { XHDR("aftkwhg", "TNNYDDjidYHYgaoZzQBjiRPuGBkLetSfbcUlZNUqsPdKLKVBeIUhVdcTuXYsdhlrTYYlxOxmM") }, - { XHDR("gtyojtqky", "oIlrzjMoruDfbRpGavFvNcfjamSJjMdQmOuFkMoTshgalPPDrB") }, - { XHDR("ezacogyod", "trth") }, - { XHDR("y", "VYZeyrqEAlasGKcUWjIGmJVyzNQhtLsMYjVoXtfNwvsYbGgbTkWsNpgsdNzPGQnZObSLNcvJAUJVXk") }, - { XHDR("zamxwlso", "yKuXBdFHMuSjLnUILXpDZvJblhfwhNQT") }, - { XHDR("yxrcgazqbdi", "qPtsWgcLhFrZFefjetJdCalYtxsSFdJJTwYNMoFWxdQliiqAjkcHZnzlQeZhwUnuEsPBUTsaXGZzyIf") }, - { XHDR("wymxsdiwkdle", "cVCruQFcuLCHbOhaTmJQzaaeJfTPrlSKmosevINXVcgQ") }, - { XHDR("auxh", "mqaSDuuPmjXVPmGnuzPxaSjkAzwbbwxbezPlIfsIfOXKpwmweaLcxvDZKLpEifygxiQGoWtNIZW") }, - { XHDR("mfynoe", "xXZHPMJIEYtKfkQfIcQnQ") }, - { XHDR("zijefqt", "duppyRbhCYiEJXtkHJorjiAmilAbBypMwkzoyGFbXwTDByTy") }, - { XHDR("lqdngdlotkcda", "BrunfgQBkCUPHHWCgqMlXmNIqKizxWfkEPjaRhumGbNBPf") }, - { XHDR("onbr", "VokEohaOXlashjYObAvkWeJT") }, - { XHDR("zqjbkxoffwjlfi", "oNxtueOxFyAmtcjsbPOKnYPXtBTWcZYmBqAMREGyQmtfPwjJQHnyDzmGndfgQrKfuqlc") }, - { XHDR("yb", "pNXOYcoInfUVUgIHubgam") }, - { XHDR("htbzttlf", "EBqzZeegrtPGwxheRVJVhSaMePCFZFeGTcsvDxPvFKOgBlNjbinPhOg") }, - { XHDR("pje", "ZdHPpsVbTAhZSvBrsQlzHNfzuMtZhOBYmCHbQwtXeYVJhBHMBYKkxWxWAPy") }, - { XHDR("waamusojr", "OCLjZgCKZKPhiqWxguwmOtLviBmMZAEKBSUQcnUWEEhNeEUNH") }, - { XHDR("pqyforssogiv", "eGOJGneIVTfHueBPNvQNdUyepeCWnYbEplHxH") }, - { XHDR("wsqirobtfjkh", "XbDeTajQxQYnmETWmpWooXpmQHNlyMJQZYsfcAYDyMvNZIUCXemgQgucOxITbUw") }, - { XHDR("ynthghlqbumo", "VGhPiWQsIWKqYEeqkSajNxqTP") }, - { XHDR("rpefggiczvyxsfxyp", "FNrzxD") }, - { XHDR("ktip", "oVfKcCVSYXkCCHJmNvHrK") }, - { XHDR("e", "sKiyWdFD") }, - { XHDR("kwo", "OWdkfLCFwrCRNoPHQHdZPCdyEVmtFNYwsXrqpAwvWbkWWULOcqyPBtXnbnjnmUTLlzY") }, - { XHDR("uifm", "wtMZcQlItoRTHiezIVtuTeOhaCQosBErPrmldMy") }, - { XHDR("vgrsn", "OCdFVBkwIoHI") }, - { XHDR("vpsiarngusvwby", "n") }, - { XHDR("mvqxfylzghucd", "zFsABxKJRDmclAGFZeUv") }, - { XHDR("o", "yPXSUbPUaRyqdcPhIYUMwutIbhWFQLoQFqakoDNVFFsiCiIjISpDOXSiPHhJAuMPtmgcZxPwACfIj") }, - { XHDR("qqo", "gcYHMzkJXuAOIdWNUfwZsmOjxAn") }, - { XHDR("u", "HAsw") }, - { XHDR("hvr", "bmuBaMBoOeDnKsnJOKhdBByohedSA") }, - { XHDR("tbwsvlpvteqagqnxdytu", "gHDnQElCb") }, - { XHDR("txqswwamglkvd", "AXOrCBVVpRhLCbaIoBqESdyizbBlYgrQgrrGeVhAVnBsva") }, - { XHDR("c", "wKSMYgYDseXnMKKDnZdGMWkRtWxtsQAoYqfhXrjVZmdthP") }, - { XHDR("qlfanef", "FFlfXSaSJYVgCtrNqlOhIEpSunjWWCr") }, - { XHDR("rztn", "ShSHfXLObNqugsePuAeGrHSoUNPreUyawa") }, - { XHDR("ytnwnkhrm", "IksBjommLCsPgckYoinzFPVQRqCmnLGgpZezwHotWxGCLYOlWnZICnhUwPYwY") }, - { XHDR("yazgzlwnoqsoniwljv", "lvVpEQrFZRfRHdXDrWYYXHMOzofCeImnUoTONNMKlPjiliahramGYmQvCskMSfn") }, - { XHDR("glfmloixsgvivdglb", "IafnhnLvMxBDXcBKBZCKtuyUZgCVFBeERDGDoQQND") }, - { XHDR("wrvxyggzf", "bkVYKzepcYVvpqmzdinVptCaYJwbBkAPpXzgXrDOJZHqsnpHlJnqCiDwpPSJbcUb") }, - { XHDR("cykce", "RygBvpcRCTyOrXIxKZSIZDgYkXROY") }, - { XHDR("cuxmbnscpn", "uBkqNLTxhWIxPBjAAJntkMgsWHPeWFYCgkQdcdifCfPmLglxBHOKMfRMyAvdHUZvtPalNinDSqZro") }, - { XHDR("ikunigoirvafl", "GLlWorqWlZSpPxlVzRsHnvGzrwLJnLmhIfFvitXPtQbcRLnhEezvbOOIXhaKPRQIDNzeziBPOVZW") }, - { XHDR("tgrektkpxekrrpre", "JdpnoZrFcAfntcOoQolTXjFAH") }, - { XHDR("abqoesvbnkojqee", "tiCFHLtWJyDWCpcBVGfGqkrQOttWesseVR") }, - { XHDR("fpelfxnisbacn", "rdIVUvUaURPcaqzQWxtzOYuzrRrxxrkZKkVAMfkW") }, - { XHDR("tuwrrmgco", "LnfnZKh") }, - { XHDR("mvbltcuvmi", "F") }, - { XHDR("apyfqzkxsehm", "EbloHwmfWeIkqlwwvaHamlgpLplSv") }, - { XHDR("mpzrpisrdcyzqy", "bnkvPqRb") }, - { XHDR("trcsyevndls", "xkVYsAEvOkOWaVGDDnuyeWqDmatgzutfLFJvQhMSIiByc") }, - { XHDR("kybzhh", "ARctasIPdASSNhLxNQpcQMiZDMoihfNmYpUEiHVzNITOgVSsjrLfXbNZaRLLyp") }, - { XHDR("xscetqohpjdmzsxvlr", "TsyRpjxqKOPADKf") }, - { XHDR("ffignsdxanwdqr", "DTYH") }, - { XHDR("tt", "VcNFSdsraOCrkmAPIWeivizyIBGxTAWgHImplQWOXUPLzuaypOuPGATcxKFqwEZuHANhxZYTYRFFRd") }, - { XHDR("qzfwabixdyelvinajkdg", "pdQeiLucOGvkUxzNPODSowzBpUfZKDMdafzPuIsHsBfuoMkPUFvGJCeWDwtRmRSNGePSaXfGnXVqXfjR") }, - { XHDR("couxiefnwgc", "LjdbYxJvOFCMuObGLFDWOEMUiyJAESuTtCpAHuhsQfkquloFOQiUTheifkTLEZKvZvAnLd") }, - { XHDR("lxqwdteexpysbfeblok", "rMeEjoX") }, - { XHDR("uyqyfpwmnedpvntolinq", "vecuGlHNOgPKMfhqrLuvImYXaHgLoPgm") }, - { XHDR("y", "ygzDCvTPctKAxW") }, - { XHDR("zrpjmylqaqxhzwny", "VrONKVmYJzWB") }, - { XHDR("bouuhqdapyllknifjsgj", "YrBvGdRoONvsLEvTbEKhneNRjCUATtyoHURbbAyJWOcokFocUDQcUxi") }, - { XHDR("cotd", "xiBhxEBpUowWtangeUIKGXWDPjruPycZo") }, - { XHDR("uptbxvqihzaeuswome", "lRYrPtMufJczeyMaxPeaUIigGTqSMbvTcMzDpDqQbsnhxoQmtZMBbhaeVOvqfnaGkcawkvJPedMNSVr") }, - { XHDR("flbnkkjolrjlyrpohq", "qffUrURbPmKOUpmlfbXFmFEXPJSBxtYa") }, - { XHDR("seblwret", "ZprbmKprEoIyhIKzhFUxQTLbEDoguKHsonwSCzIXoXJZGRJkllT") }, - { XHDR("ztbsbszecgvtbejv", "LnbzEhyhpdfXiTUsjdwttCcdlAIBGvcRGaLcEKkunEAjarZNbZLLCSYCPwXysVeWZkdMZniDYL") }, - { XHDR("kxfndkfvjyyaxtmhswvx", "XFcEzY") }, - { XHDR("etqhzwhwqvaybvoehn", "ikoVOjDJXfGezsFgUbBSVKyNVkoCrDLm") }, - { XHDR("mvkjkjhwhemibtqapatw", "GJSysJlC") }, - { XHDR("oivwtlllvn", "xTdkhZumBkazvOdllSUOfScjZsDgowGFYnzzZUqLliosVwu") }, - { XHDR("fgnyseykutqmnvevspva", "aucVziTQtSzLOmVbFDnHELnzmlTRvsWluQXhWasrQPIkQCzOikUSlWgSvwlDyvUQDbpmyPAbPZt") }, - { XHDR("gcc", "hWMbwfNiUMCYzUyGcDOIHiInzGunGJQTUiLcfocarH") }, - { XHDR("mgjyakv", "MIbMEImL") }, - { XHDR("xbyufnifgzbkmmesiy", "ZSPzzlsfNjKGqyYdwTIRvdTDLXgyCVhurQCQOjxfOCThmmcFehwRQPOxNSAcKmZ") }, - { XHDR("p", "gaDaGFqJEyOxBLCFhhKEPcWw") }, - { XHDR("s", "upgOvWjFQfdvEiGBmkTQasURdQmuwLZPHDoQtuPaABJDppZuiNPFS") }, - { XHDR("mjdbtuogash", "CTStQwqJc") }, - { XHDR("vrnqytwdrxmzdvsouh", "HIsoEmDXisEXHAvBErqrgtqKkIVgTNpLCJZnxaDRIUeGpEZNLRgElP") }, - { XHDR("bwudqbfyua", "BSWRXrfuMgxR") }, - { XHDR("mfkjv", "cSwwECKmgksTGDvsVREvkghqEMYSzZaKPvzOqdePZ") }, - { XHDR("apzuvwlqk", "ludvXoqDKieGfQPQZeSCbwSGjAButISnjAtEgInkdVIoEhR") }, - { XHDR("rrclibqcrpvsixzpwkpe", "kEnJuTtKfRcxLffQdWblEBFQDmpCgBcULWlSfFAtNGbQjqDmHxsajkctdDwvEhvIHEZEseH") }, - { XHDR("ybqfofwtynyfnp", "tkVtlBDbcbwVrGDHWHRljVubphEcHsXMFafiTgDdmBZYnbMCJCkIihpjNhZOekVoqJ") }, - { XHDR("mfiummgzm", "IrYoZPicWzPZhOZWhsgSRFmXHrfBFOZxjrksXwhBPbDZnCOhlZQC") }, - { XHDR("mokznw", "fwEJdxuGrhmMrlTAHxIuvFLsVCYalTXVhzBiiizXzcsbsBErCEViArXDhTxtMIEoyFtieemzEafFLkS") }, - { XHDR("misxclsztezpshacii", "jJSVfzSJwQxUaPupIoAyzAePIOcvDqToOxnmfgFzRI") }, - { XHDR("yqs", "UzzGILdSgDMYrCZCpbbfRVygQrEQVsgwLIWvhyZmMbOoTdknHkFiZlkSuAHXObgNVEjgpbQDd") }, - { XHDR("kuddbcxwqwhhzd", "NwRdwAnjmxeNmlRoMBXdtRFTRmUvQHBpgYMjDoFDGbGNJoMmXecRLtUtpNnQTKc") }, - { XHDR("gkncgycdfqrehedn", "TkyvczIUetDyQoRelktK") }, - { XHDR("pyqltbt", "oybIpzbinGgrMblSncatAD") }, - { XHDR("aeszbho", "LiKMtUqLRlFyWvNGHtCEKXbsMROWjdOwHevvWOtGeoeaknmvkaHDBUmSdHmZEsZfigeWPhgUOpXiR") }, - { XHDR("sijaqo", "InvPmnGXzUwIGocFGScEfXivHFegAotzcUjiNbYwygrHZvjrgsuLRIHOgQngthoxPcYtEm") }, - { XHDR("bwqsiharagzqebolp", "EPkvXRvsaXXvQdHlFiERaMLZHGEBJMqlzDVcOuGqQzOVMzDhtKvwJsE") }, - { XHDR("bcnfebkmt", "iFQGGsHwLCSIywlQmRJr") }, - { XHDR("vbchecipminmbvjo", "mBdYYaALbLCPywktH") }, - { XHDR("yhlxobupyxfpzsfecvx", "adNrgkkZcZXOtwlaYHKIcJQARJryuyJlvm") }, - { XHDR("wvjlpnmvbzmpntkbrfl", "ft") }, - { XHDR("mkzrriabocxfdbgpwhh", "VBPLvxeOmhEYTEMsNnOOwyAXxcVzRvfCknDBxdTZf") }, - { XHDR("sicukoeolezamieivey", "bvIaZfAIaQhNfUWyTFfZFnKksmCzQQqMDVfaHdxlrUzASTqCuXHmLbOmOEmPywAd") }, - { XHDR("kzecxosawb", "PfLxDaKvwriobyKIkebDPbri") }, - { XHDR("xfn", "VEfXMWwdcuLaPuInNHVlgmFJGslgAImfLJFbWIFXqcAGMAJVqszyWUWEAGkTqOIwTITy") }, - { XHDR("rdgwr", "RKPjDBf") }, - { XHDR("wlvafao", "o") }, - { XHDR("qmwwvmvsiqklnei", "QEdjwBvIVMxSfqLoxeeZW") }, - { XHDR("uwlbcxokuebxzdnuuo", "qd") }, - { XHDR("ewmkqlzopojbw", "aumUWASQiqESBQnoEUSZlwkIWGryNYZhOQrL") }, - { XHDR("gqoqjtbqo", "tNswFUSZAhFmtScWsFzhxNUNCJdzkLiKmjxAOWjGqAzwEledEDYvNuKORzjhhmt") }, - { XHDR("kdvrbp", "WrHdLIykypwkwBQQUrvxDAeJnOXtgAMIF") }, - { XHDR("ahjgmysiz", "ZAWKYJkUBRhqnMPMIYVJJjBObBuwZJilhtKiZsjWRycfeTNMzBAYanERMGD") }, - { XHDR("qjiagekr", "JxTRssWHmlsCWYBEMoXnjZPxOTqichwAOSBdENvJeO") }, - { XHDR("sbpjw", "nTvXDzlPizfODOPuWNlOYUCBwbcbfSkoGg") }, - { XHDR("mpiniquehlojacim", "KOopJVAzfiCswltvFjmNSfPOWQPcmWyMpiWDIoDYVIKsaTiLF") }, - { XHDR("eehf", "jlTrRXIQnBKwXhlbzcwdALJBIFJkUTHYWgqpfEF") }, - { XHDR("usouzibcncqqnsjjex", "eAvrzmffhgwOtxlsbuFdetkGabEqq") }, - { XHDR("zaitii", "ReBcgCpkINgGe") }, - { XHDR("eezfnqxxncykgxd", "EHJzCRQGXaJyntCqschWZnbqmEaUsLqnZZhPPaViASgTBVeGAM") }, - { XHDR("fltgsqitnaenkcw", "hr") }, - { XHDR("speykejmcnnhmlhcptvq", "lXwgzjuMvfmPwFCwUxzJgXhSCxjWIOvmJvbEaLzmpRnb") }, - { XHDR("sxctfvhbtkjam", "yFku") }, - { XHDR("r", "yMBsjkSaNoLca") }, - { XHDR("wrpfwenhncsb", "vBMxaNpoqJJhcSAjm") }, - { XHDR("xulyl", "QisatHWMxbuHfXyrHJvsIUWNPYieDJYKhQJXPseDjhBno") }, - { XHDR("y", "wevOtIhMUfWxKltmgOFbiVlMTzrRvxMqdPzBlMwKZzYqUmGBbGbNJWBnNelrUrADkEnhGVMynCIvgnil") }, - { XHDR("fsslqtzbwxbylitivfv", "UWxTtKNONFVgFOpNHNeOdnOpayjemxBgeKhtGjqoEXqKwqj") }, - { XHDR("forjhzwirydm", "UNsALnXdjBmpVjimLknatNS") }, - { XHDR("ho", "vAelcIbtctORgxTFdtxjxUatEyhEOUfwQW") }, - { XHDR("xg", "ZNBZIyFAexMMXxhXpkZNBMYnmLIyriGpxCtwHVRUyPlLxJvjDQqf") }, - { XHDR("ejxcanyfkfxgfezbrmt", "XfLpPGdLFawzWhhLPtbrJxYuJfExQSFLTJRnXvfTl") }, - { XHDR("sznjsrlfrrh", "QlzAHlDcGUkdwgcBGbTrNRrRnQhRztXmuBMvIVkqOsjSmv") }, - { XHDR("plkdzpwfzmmtuzvfhnjx", "xJyGJRpMjQyoSRuIRInpdYCpYnYuookVOtfispRQCSunsoXTlrtacTqYILhtyG") }, - { XHDR("dodfaoalbfpeifdqiqj", "vR") }, - { XHDR("hcnjcleixptps", "YhoybSJABYQMBRrdxmGjltoJkVmafKpBuiaqXkeEPFSUFdJCEKkfYu") }, - { XHDR("fzwohpq", "okGqZFw") }, - { XHDR("wla", "GNRYjWKbTmjHtnZbNAiDOaCujCjmHsipEaBpHlBezyNHzDcjSI") }, - { XHDR("twfbvsieiomnebxtig", "bARmqoaEYsKiiaBEGwZEHzrwqcKhqtzRPkwNopZPRxcYbzZbjrCDFTrgMyWOmMIzwX") }, - { XHDR("lcyprhxnivhjvcbi", "DlplxubsxVrrVcevKWVAQrXUfCDrXCmlkdsARpgHpjZIhCVniuBedWaTPoY") }, - { XHDR("izwxh", "ncuUqCfxLwDWRzIGptWbdiRGcSMnHYEmgmHbdvuWWTZzfCFQdoIDsvlUUppCvCLAPa") }, - { XHDR("jmsxdfyjanpbmrx", "xiwKkvdwvXMGBlEmZzSIgFmuXZWKKCuNZBgIxdpVMGDoQzCgzgeCGxEBPIpPM") }, - { XHDR("zqsziylperp", "GCkZypuFPqUomzkxgJPoiMPszRWVJdwfpBBfCwUrabqoUZm") }, - { XHDR("wzvu", "xoAQivgapKTBhlckVReSJsfWEgtfvZScMlvQysyXyPultllwvhOFxTaPiykDKyVgcXWhsdtaR") }, - { XHDR("eqssltjnbbf", "iDUTBrJTvmUFVGNIPHVwCrKVYLikaqDYQt") }, - { XHDR("aq", "SEXahhhIEeqZAkOJpNMoZyCwEg") }, - { XHDR("sqxmqwhnlozl", "TVPjljXfWHhHF") }, - { XHDR("tcetwkzgtzk", "fjsOdddAWCmyTbl") }, - { XHDR("im", "o") }, - { XHDR("stu", "HWMmRyjZwSKJERJpsCerqXowmnZYxKIwCcWlsDXyxshufXTuMzARFnUuTioSUeMdbWotNJoGUdPm") }, - { XHDR("ojqqigvogz", "xnYCeQLJbVVeWFaHqbWirxyylTRxJqeLzdVAJiBdVOEIxokNMvyZKMgZ") }, - { XHDR("urbtnpjhoupzaqzeo", "GidplNMqLduXjLYrNweeQgtEmzCvrpUsZDswAtKG") }, - { XHDR("nykyfaajpggxtvvho", "zQmVBNahttpWDQGWaKIAPamNnJVPPhWIZgwUXkKgzojocUjmrKOVYhQFPQtGrKljIHtFmyJ") }, - { XHDR("ikbkuqbfxgkxm", "xbmacJQqOrMlnaQWsakEzSYixHFeuzMYhBHXuPLIjL") }, - { XHDR("lsynmfmjewytgfgbctsq", "jxJIEorbZjbUMNnyfWmwHSziFDDfvsoeamHclLTNvydfsbKEuAQVITFToGYsIqbyAQnOEZFgc") }, - { XHDR("hj", "VpedWTKxOCXjZzduFnGnGWFfSQFVcoRDQrqFIOrMfmyt") }, - { XHDR("chvroqypswgkjbysf", "MJYwFXZXRaWuoEGkFCHtlbiyKrnPxMXww") }, - { XHDR("qttxqbejwyd", "EeEbIoxTOkvOabOVrNGdGlnSurJILHBOQcLkVYZzEsulMWbA") }, - { XHDR("kbxlsayimhtbkjoi", "gdkTFMeFEYeWevnVIFNrYVoVgTPXHiyTBgCBVgtDKGdaBxFwVpfGGzqaJThJVves") }, - { XHDR("gbwjrmscgx", "WSguypTVCjdeOnLDPdMCbqPrrJmjamWSGzCR") }, - { XHDR("wtsboyyddpkheabe", "ciAtMQqoPjyvryY") }, - { XHDR("towrrbetdkvwwmbjw", "HAlmzkScZnbaOWRhAaFwnLTbbTXUouZovcxgSUMkyZaHKRDHalintPL") }, - { XHDR("qiomipwefnrwcpzgp", "tsdhSQbLsiiZLvYWMcfPuuDTqBWewmiEgxmQnekkHKDg") }, - { XHDR("wxsgaikwgee", "vEbjeIxBKEfVffnBOJfFpEyYagHKkArrcPzDGKORRWTPPBHEreJbAZiphyrpvTPOQW") }, - { XHDR("ahzciwrwpnrd", "LIvjVllveSroYhdtwJPayGEizabLyzqIu") }, - { XHDR("nlinl", "HnM") }, - { XHDR("aiedheuqqgukwtjx", "KcUJCOdmZuffmJVJxPCFzJnGKvRGKAyLqBCEwpmCvKrQTFsSBpAXqcHiWd") }, - { XHDR("gvlkqm", "RLXDSKBYKOMBVAuKeuFXkRVurSQFfYrABtKmEkZTS") }, - { XHDR("eqbragmvkkzabexo", "asSfTPFxdjZTkZoTEZsYQhsaUkjMXrzww") }, - { XHDR("ltkzjqv", "TEMhlHMOTvQmSYfrlMQlDQJgmJLhwBeulPlMlOERUJSbaDctQRCqUZlycSBE") }, - { XHDR("qvikkdktrgews", "HDEUUXEquCvKjNgqqyYJhmoiKMlIJEhkOpHVfRIMunuLj") }, - { XHDR("jptp", "WlujGREUNSdxe") }, - { XHDR("ipzf", "ODgevKn") }, - { XHDR("jmpqtts", "kpVWPV") }, - { XHDR("yjl", "hapSCEyvCHSYJuohGwQ") }, - { XHDR("hqoqvqaeubhrpzvjxqa", "vsuDrYlcgFvGfpCpwqruBVBzzPDiQmGuJzJgxBuS") }, - { XHDR("jcyeadzzkzbwetbcap", "SeAgmZKujmzrxAtuAAkwuyVAZljovZ") }, - { XHDR("qzndyadc", "tZmfdcWdHknJbAmZtSoAYuFdQFsrlNcPHEcVTCZWppTEBTWihtplCTElXMlPTmDDYGdQzwknFYdbsdVS") }, - { XHDR("x", "fCXkzmWuLSLSOUyljpFolICPcEgLxWRzhOZqveZvHXSlJpPHGicxqdemWwtBXRAEbfxMljZzxzMxEB") }, - { XHDR("mgl", "RicvjK") }, - { XHDR("tapprchivushnozksyp", "aKKhyBmpBVnbRRCTVCvxwjrHn") }, - { XHDR("nmzluwzpaiwdsgfnajb", "xjbiMaUedAagaDxssjxQMtWSqTuzQLngMYVTfgIlsqSswe") }, - { XHDR("snsmtkgss", "mWsSVDcWIxarBTSQOJOOGoDyhaAnHnsGkaMhmCPNbLXKbAvrMcXcyfvnbCHEeRaDPTJrNEReqjW") }, - { XHDR("t", "FycwJiDuXtuzydPaLynscrR") }, - { XHDR("uzctvhkt", "qBORVLOkoYcYVF") }, - { XHDR("fskrry", "cChVbAsiRcKPiAqs") }, - { XHDR("cszlfnrrvedimlvp", "TiuFeG") }, - { XHDR("wznnygfjoaajasj", "PgMKNcaIoopvCkHmrSsTbZcfi") }, - { XHDR("mvvolzkctyvwuvnlcsdd", "GQuUy") }, - { XHDR("fxhbotrtvzcqbcardawm", "EciZgFcBMybBthMKYSrwpptkTIDojWnmEsjrewWFFLwlCPvMcEsMaHfULiFuAfroB") }, - { XHDR("ahwkoxnmrtggxwnsz", "uelZqRJbtiVHoLVmgTqDpkiURQCtNqumQBwnFHTYYZeolPJRMmNLoSkTWCverwvFCRrkMxmUSUPkuTn") }, - { XHDR("qudhaawnqaotef", "pgvtcVxPELpJbXUNGLUmOhEkjqgLqEmpA") }, - { XHDR("q", "GpDlWuRRaYVmSudzDzmxBaPTuzebMjPXOiXvdVKvavlAwamHnWvoQT") }, - { XHDR("gxs", "rTRBXCbqOrbmdqvzMuiKaucwSEDrzVIMPMosbUoiBuP") }, - { XHDR("ibfnbswbfjuysyn", "wzruGTUsyrAnClzGncVwXJsyFfelRoLMhC") }, - { XHDR("fvfpfxahpkcw", "HcLnYQnzAVfAsulZYoIZGYFsZsVcqYcVZBptayfAljF") }, - { XHDR("lavngkewowssearrh", "dVUlLfUdeKRoiiWdTBZyotbSBSmWmoQBAMTzcWQGusuXFFDDgwEuIBurUFCLMymtdYjVQuJpEgqpe") }, - { XHDR("xf", "eSDITMQtaDUQARgwVcpBOooFhnMeEeFWySeRXcZfTe") }, - { XHDR("qtxgvvqhjbfyc", "yRemKkXQpt") }, - { XHDR("njreayckf", "jKrVCGsDkqaPlzbrtwTBmDtMKfjTdQiMnGYmpyVPZvxWfjlkPXh") }, - { XHDR("xcnht", "QXOyQuDpafMvwSmrUwjixlpEgQOANUvRItnxeovRAhNZNILixdWZKRsIJfpCwtNheITV") }, - { XHDR("umtooooiryyms", "kLIQxqeqjouEftwiyTrNWVQkD") }, - { XHDR("fbrvmfsw", "QSBcSXaojWMsebTxpWQeP") }, - { XHDR("xwgs", "AHBANWaisjRZOmIQvuMOskVpPmFKNSYVqYRPjGXORlwgcoOTuhfForJCVFdveYGFYxiWhUic") }, - { XHDR("c", "GNYELBAuCWKOyqdjfdXfHqYGThhlkJzyGHpgiJBYNhguGSxVcvqhtuvSANnjvjuEGRyPe") }, - { XHDR("ddxjtbvy", "aOzWRUQtJpchnqvvMIQWwxzCsemSGlCBz") }, - { XHDR("khvoorrjdjubsxbnbdx", "QghufyDWsVDuJNogxdAtuPKEWRQBjGnQpHmgEsVoZNOxapqRXeV") }, - { XHDR("uaiqonynd", "bucNyAgKGBjtyabeVjOEDbGMhV") }, - { XHDR("fxwbuefgpmyhimznzri", "yXzPBNvRZqDTGRfzIBrYJkkoMRfHDkg") }, - { XHDR("dr", "HaHhMvryLukAdOvP") }, - { XHDR("ledybhagqonzxlpla", "EPuSBSkdEIdpEKfXXBfxcmJXhtkBOTsIffLLCAiiodFwRdAcZjRuWXvzBtkESPXCTedgFt") }, - { XHDR("yf", "nOFBJePfaPmHLQZqDbbfdzDxRaXPpvVdyZrZNLfxJEaJvfhIoITcZEveYfwLcaNqsmASDydIBHosh") }, - { XHDR("elquz", "Qn") }, - { XHDR("tnudxdkfjv", "rGZlnImZZlgB") }, - { XHDR("x", "kWyxYfdlvncIpIDohSIDowNsTUxjxeCckAECIyPNYqKpMfPhjMpgi") }, - { XHDR("mmvqdphaec", "bhulFUhGwyCSQwiKMbLdfFvtHQfPa") }, - { XHDR("hm", "ZKNpZMIRgJaw") }, - { XHDR("o", "SoKYAJUNsDlgBpdGXiqVzVxPUvrlXu") }, - { XHDR("yywomdcjszyxhylljns", "UHsvwYrefQdLEtSlwLAzchbqfGjTCFDpJFfRtifOnfwrpIDXORSnSPjqfrSQMDBwQnRkcm") }, - { XHDR("rrzagbynxgm", "rgfUsuKPUsqLtASBDkvsXtqA") }, - { XHDR("zmhldamhfrzabcpnqwn", "jgonbpXsXDfiHykRbtYzvgbqskTYgLLltZXGTPNWKRnyTmvvMdFmSybUvGVzhwP") }, - { XHDR("eghlanpx", "kRrKVyyzKpIIxIlhig") }, - { XHDR("cmdcupp", "thPAQqXRKdlZnw") }, - { XHDR("zfaklipnebvwkhce", "vGNaweQhodaBcayRlpWqZDuCKZETcVqpQQDuCBGDgbQrkU") }, - { XHDR("humitjudnlspcxliprlz", "xoKJWPeuzHinGDDINQbcCfSKfEYxBPAsbcIjcswUMUoSkrnoDSFDiIkKUfqhMcOoqKjOrZVKm") }, - { XHDR("fozypizzymcfu", "GzgGxdxXgwsFdZleDkrNhlrhDvWjvxSqINshgncfDFTcYjyDBvF") }, - { XHDR("xsqtsqjp", "yACBBUDKpXmVATMqSVaizkMkfqJYOVJEjqgBShVkwIU") }, - { XHDR("tii", "EpQYcqIUxrFlHgPORwBtlwTqERWIUCuEwauwaFarvkTCsVRVoTPJJMZUxRWpw") }, - { XHDR("mfvirasvgyfq", "ODfxbRLbBwnHwKZERYmtJxdUIHx") }, - { XHDR("zhytqgui", "fClHlpGEpunbbkhgRcBuqQowEWjKdHyTFKHTrVFDxxrxPbYaYnyDZAfViUuSVP") }, - { XHDR("qijed", "YnFiVYrGKyXGEhttiWyJzwEQhLLkwSDzWkmk") }, - { XHDR("jakeyiqjjbuyen", "pqKdpQxwQDJRYAQGhDceoUhesSqfmNMcjHxBmeoOPddpYl") }, - { XHDR("icmuwacragzmqb", "mnUCCsreoGXaojOnJiJILejdFIurUNntvKEjhvdSlgKjCLmwgVfnTmnnJJcKSdcIPMklv") }, - { XHDR("jnx", "QaveKWuVZYXMrFkdxqsfMhPXNZgZdsrrIgqghJUSIXRrJPUsGabmJtudxDMNTMiCHJYSMovGuyMih") }, - { XHDR("wh", "MTiAMjJHCEbJKONCPOzlZiPfUuUmpFkpJgjBVDPSJABtv") }, - { XHDR("yoeybcdympqybj", "WMyfVyMPkWwlIWHXFoFptRpiL") }, - { XHDR("cjafynr", "zMmoWZItpnHpIwXIPBsHInEaScbbqvDV") }, - { XHDR("fmpmsktgxemsgjlmzsu", "yZHc") }, - { XHDR("efmlsyuosjsafhrimr", "NhLbHrdpwmUJFFOKNenikjksgJaOBtQcasyZxxTWIAVhMmTQhrxRaETpIkqwfEMggc") }, - { XHDR("dfyqruxpwgekl", "pFVrmklVWilM") }, - { XHDR("nkw", "PyWuYFjrVHarPJXSF") }, - { XHDR("uyxvrlj", "EgZWDzcaeqVZNEUwwiEHCfOLGnCBmIvcwZAoVdGhVnxCKaTYRLBZeWJZOsGMqtn") }, - { XHDR("btfgbiecrrjgdofjvvyt", "QGZpQkwpTJgGUDlkVopvJymPCHNKSPZoGIzGZKG") }, - { XHDR("taqqhtqtgsyjtxxaqf", "SnKurFzAzfxuCNHSXHGwRbgYL") }, - { XHDR("m", "ZS") }, - { XHDR("q", "vycUuKKymhKdyPVQFPkOdWuLLrPQTPGyOigNlVjplNTfGbsFZqXzpzPxgYBXkvedUXBIctzLXXgE") }, - { XHDR("vasjlqvgqjfemsmvk", "ndjBmawVjGTCyqlbKUYfzRYWHzHKbhIVXuFeDMoUctytYgzNIkxacEwXUzbbPHmVtBWTSePUD") }, - { XHDR("ftezmkfctauqvkzssw", "AjdbNLbUyJsBhnN") }, - { XHDR("iltgf", "hViCIMUVPtRuPTOPxpVvcFGpqcYIsiRYDMSJIzbvqQTsovVCcMFKwlqxdGSYDXUXvoKUF") }, - { XHDR("touoicvyisyzs", "KtaXaFMrYQWfKJFHlslmYtXjCEyEkGLxAPSiE") }, - { XHDR("wcdjnrckhzesmshl", "jvdFqGjQWEjXccJjxtMbbgnWnShERCyEcPBBibsPIYFikrSHIzg") }, - { XHDR("u", "MNjU") }, - { XHDR("dsyqvvlwgyohndibflw", "gHt") }, - { XHDR("csfylkppvtpmwgvsrfk", "BvzPXhEobrGSyqfB") }, - { XHDR("zbcxfilwmtoc", "VQzgBhvOtJLPjX") }, - { XHDR("rjkxxpopkvsnt", "RfRFnUjGSyxxtvRMmsvMtWPSSqCkeAwyQRNFFQmkLmMlpuqMfKbiFlFzowizwubwACDsgffKsOcc") }, - { XHDR("mbhjirctynh", "ESdZBwXJFiRbD") }, - { XHDR("hvpzykjhdpts", "N") }, - { XHDR("bcstjbn", "IPrPZbRIBSRvZBvGwljRmwsIG") }, - { XHDR("dqlilnadhdwyuarsd", "nncpszUqohdNCnEaMBLohUraezULLrgnxMFVHyQtqgaRPbMtBrQTUV") }, - { XHDR("gplfpztuba", "OJKMRugidRZzgRrpPBSDDiuENJcjNJbSsMZvPTzP") }, - { XHDR("ykbmtbidszbzdmsxhw", "XaWcJnuencsqtJttHeOkdb") }, - { XHDR("chofagdzkwfrhzdfm", "bqhalKBfYNSmVbeUbfAddGjpUVFnfWsBSKTEQMVXu") }, - { XHDR("vytipghsfrk", "atIIkzNBgdkqwKvujhEIJjWeOyEjHMnwDoJmgUWzNS") }, - { XHDR("xn", "VVOkCFdxozifJDolkvBOXoAyTCrbYdXGazJgnxjsrqLUVudfUfJKHOwfVXY") }, - { XHDR("fbus", "lOwcHPCcapjdCZyRqudpndCRAl") }, - { XHDR("esrki", "EVDvEjY") }, - { XHDR("gw", "iUsotFaUldSIinhLdURfwKBZPNfaqTUsLPivwTngmujxwaECVhyoEvYSBQSwygydNxtZwSzYps") }, - { XHDR("fcnfnpq", "ganwcuowwnLVOAXIOIPgpRYyLKAVhhTliFJczDJEgd") }, - { XHDR("hwjpneeyda", "PNdhICDIOpoAyzTwrhiiD") }, - { XHDR("uwbrgozahmuyuotztoyu", "YynlqyRysANGUIjpndJzsIMScploXtERvdgBIkbYobuEZStHjVLZzOYodvxCpStOeUq") }, - { XHDR("lanznvgcvjkevovfsbau", "kHwVvFoXqNyFxphuW") }, - { XHDR("vm", "GnJCuQUpsEKQCHHCusfhhKappv") }, - { XHDR("lbsaipoamyyypucrli", "mkBRwfaxebhoJUrqRnpSBuoBPUlfNRRZlWZcQEFDYGQaKGzDGVRYslwsUKALa") }, - { XHDR("weweqhfzyplwusewbonk", "HwUEBEZHxNIaQXjEBMgDybn") }, - { XHDR("pgnyuyyeyubzkufmxit", "UpnIhHvfJqRJnAsarMtqRWMwNmFCb") }, - { XHDR("zkqumzuuihuirbzmyy", "JRUMgdCFXYaocJMXujgEEjUvmbqVPxVmzyyJLLDXVoKjXZKUZDFaXjsHupEbUiWyuVtPDsktc") }, - { XHDR("ccpjwtptwgoiadekejg", "qFGuhxeUquErcEDM") }, - { XHDR("jtlldzjburaqvvagdr", "ADTNzHCOggBGWMmYNIJbyRwLoLLyasZUnSQRTJdtjT") }, - { XHDR("kuritmxcspln", "kvCrcWqudpYffsSGcjAEXDlkf") }, - { XHDR("jmjwrhqpuzke", "PYGdmIWpYmEMmJSyKruLrzCGeev") }, - { XHDR("gnwxzw", "IKaTYZmfnkyXOqzfIlikuVO") }, - { XHDR("zlseyquqol", "hIGWlJTrWRlsCbgIxeAnkUXueBw") }, - { XHDR("hrjxlxshpblbv", "mXmcWtVN") }, - { XHDR("qfbmqmchrnkzo", "XdNKdWZPqhORQzKYUFjRxKSxBMvoDAVZZzMBOWWfHOmadeWAlQgYwtayrqnVFGKKfIMYctwrbfhFyp") }, - { XHDR("uuysespioottbuw", "evcJiAbdvQqvrmCQ") }, - { XHDR("inwwvvtjxphkillhkzv", "WGSgMLMAjSugEfBg") }, - { XHDR("vnjmtxfyl", "ikyLJpcVidJHzbABNvaiHOxgaYzUQIKSCaQYyeNuEzBlcxMzERrxGPmtOFnpGVgJfobakVJLqCovCaz") }, - { XHDR("wh", "YsaLgxSx") }, - { XHDR("dfrwtljdlpdq", "AuheabKtchetXgsIiFD") }, - { XHDR("mswcncrb", "voEdxJmqKCcnHRiflGEnrQXewXVFnmkKYTTrScWUHGOONvgcu") }, - { XHDR("hxwbujjqgjbzj", "BHp") }, - { XHDR("fxxyiknczqxkyty", "RgXdDFFzBJvrSlDi") }, - { XHDR("vobckzpkrpjjhixyzhdl", "rEaFrInlpbVochcJBqQWUVefBxjbbsdaXkvbslOzKDslrAaDeIQ") }, - { XHDR("jbhdidthojqzhtke", "YtSvcHUxGJIoqVUAIWFnvBZRnnHUdrDkbUWUpswhccoiXFoQUYcmFhZnxJuWYdTclU") }, - { XHDR("bxbsernanqi", "zvoUxJjHotBcOziuorCTQzEiQByRSvIScjCLDviAqVgJWqlySidUPdZksuJZxIea") }, - { XHDR("hya", "KwefEWiyoamctwYeaLQhAqNZGIwqoVxaGAfQnDsNSiGYaGEdkxQMcZ") }, - { XHDR("o", "uvtyxeruBCRqekHchBeWYXrgAMbMcaJSNyejQ") }, - { XHDR("y", "aGmJGszPyTbWnhIHHdXtdyabCFzgyVrNKtOihADWoIGESuNrXWjPRHFodgBg") }, - { XHDR("hwmespgawoqfmyvm", "NoxyzdZkaedppxHPwJQcvCnUPIbDgeXYIEWYgrUarffGIqWKyoLdDThvcUjLna") }, - { XHDR("qwuov", "QobxsIfwflRtYWGePcYzKFAhbyLvFRopthVfmFSSZvBvLDEPHFxkFAggiMphSBxgrzJci") }, - { XHDR("ukxownpx", "MyBaFOQgDToNFCJDxShlOaElAFCkLWKxreslITcoFlCvjfFFXCwSAgzhWhKwfZCXgPhPIHs") }, - { XHDR("bzgxupbvcifuldo", "YsJCNGEojIOeTUaOFErIeUyyVbmKJPiRgSoftrhSfAgZDXgXTsxSwFVOXdHGoylGRVemhh") }, - { XHDR("ahsayvn", "TembtVXFupPdzlMZpHbyiWkbCpVexJFisGQLAkwReVnTXELbvqxfapcAGrROL") }, - { XHDR("hcvgyilbhjwmnyrxvbvr", "oqQcKMWbRcrhvIwxAHOIySMROZt") }, - { XHDR("rxrfbfimafyzbpbfemiu", "NpiTklnWdTawKtMFhmclqUoyIpDiZuzpNWW") }, - { XHDR("cejchzekgjiju", "IzUqpssFEdBYAmzQgMNbSjqJGYPGKWBLRRCmhMqNlstWTKyRuZSHfjZVUtMLEAy") }, - { XHDR("iwgcgmjxxtdnee", "wotEGOLyfCDLIwAfuDEyGnEKwftFPRDQXeVAFdLxRUlpCdHgFJ") }, - { XHDR("yfinmpfzc", "gudYAdKzAcWQpPyEfAjFslzoJbXWraodXtW") }, - { XHDR("uimoe", "vhXhHfUsmJZJGgqUYUdSnkAbGFERDxyYvVeXGojKJNJyrevlz") }, - { XHDR("oginqub", "XpTpHBwrsBgbcrMOvelwmCCYvWfkWabzBRquyZsiutgHFkFyuzfWgPtiomxVIKTj") }, - { XHDR("osfenhcgzmzhap", "YwiNAdcxnzapwxyxBZxszKGJZllOdCzPHyQsrwKxDQeAKdDaqXUxEUdJJYcYDTYgEFHLyrCMIzeSyUYd") }, - { XHDR("bochrecrlkkanvpkv", "tyNteZQrDvzKxXTvfdvYwrmzvuEEwVBrNhjYIUPJHzIMVgUuhZpdlFuzbXfpZyHmDGraCiDq") }, - { XHDR("qat", "iVFuUiStFLdKoaAFMGampDMnTErqIOFiUDuHXrpsiskkHz") }, - { XHDR("rygzgfmhuvagcvsu", "fifxtIxYvlsG") }, - { XHDR("bxknlcuacjitvkboopr", "merbmbPIgpLwTlYoNSoNUiMAZEbETfHZwMdHzArbwxCeSrHJGsnOrBFwtfpMgTjpWVwoWIlJu") }, - { XHDR("sznyg", "snzSnafpisMJsJbGnXknkwjUVQgDDSAIQUjzIDBAIaDICkpCBvMxVnjMXYVN") }, - { XHDR("aoiflzgjzkpm", "hNhDcsiwCZDYbExtoaKaYUiXCBDVKLyiwjWhtodAFtASxeYOzucrTbcOvIFzgRhHhIh") }, - { XHDR("iikdysud", "lD") }, - { XHDR("shhmymdyhbydcqgdmi", "fcTyeSPtkFEJeFMSrDGBJFpCCKMkTimsk") }, - { XHDR("bmdzbhvvmfneqmrtlfoe", "LBwxrwTGzs") }, - { XHDR("ssimofrqvsrnaqaelqgi", "tDQSBkivspLXNyjgiWcGdcopbOleZLVWVYgZvsOGXqeHktCogfWEFYhFoNoReoRnNoGihbimSWxYVxb") }, - { XHDR("baiyiupicug", "wKkpKXDgBIMLighYMvkYoXLDndRUXxoVoOvgrlIQtGOvECll") }, - { XHDR("gg", "oNmAoMtpkAzGxRQKXlxxpzbLmszOD") }, - { XHDR("dxjbilxxxvccj", "YjYVtibnINhXweUPcHDqYtWryWJwmyrYtUdnAMRwXd") }, - { XHDR("iaehciudhddpvtp", "CVVr") }, - { XHDR("aw", "iFPJMyTfdNIsEBeYGFYpRnkKbfgfoZXobmZOBqFYpgOQjwaOPENvihA") }, - { XHDR("ilbhaykonqiefrcwe", "wTekudFBSUMvsLcRISeTQilgHaElaCetDaDmiBZZMwexJMKhhFzgys") }, - { XHDR("dtdeybdtloarmoqme", "aEHahTQKimXUlCPrUzelEZkkjkVnqwFxmnoU") }, - { XHDR("efinwfyhmaopywl", "BMvqpzukoILpsGeRqPDKMoixWlORUQFEcfBiUKsfWcJdCWAdwVUrxyqpYayNCMHE") }, - { XHDR("cvhgpjydrrgpparvhr", "CmvwuIiEvRBKftDpXNgAhjpqtjQbvHVNcjKYDzGlGFmFQgoytkGWKdVjnTIZbR") }, - { XHDR("skt", "xiXLhXAxoRQcYRBdOQCDTpKIUTqtFssKtbikxMxYGGYUelRuwKKLXEjUEuL") }, - { XHDR("cmrfgsbltiweejjwqyj", "JOPWJeOEpIywyynbILpXsoEgfuAnWbZcfB") }, - { XHDR("rbheurrqu", "SsPUzQKUmAlPUaJTaQNXHzPBMgTOdayvmHonfovIqhbqWvyyCZXpBjlmsGXFwd") }, - { XHDR("rd", "IrGZHobMOtTaYDMNxJmgNfbin") }, - { XHDR("kkrlvrrpmplovr", "KWxJMkniUPskokuEYSbYSbPrhoqNgvSsxiVLBTTHoVu") }, - { XHDR("e", "syfVcUFgEYLOVqlanFEwoniqUpniqTru") }, - { XHDR("tkekeaqtkyhi", "vUMbKTUEoNKbttMcgqVrxPmesNYrCyfExVSdYyGiqzrPvHZMoBUjX") }, - { XHDR("ntzlgsfqv", "bLFLqZsmPfGvlCexHIJaMeEocyhBeaKvFBINNdJDkgzsxWSeLKtpKgCkCptWOuJmtTZRlRrEVqd") }, - { XHDR("uwicuqugwycvgfbrn", "fIviJLftGNEzTH") }, - { XHDR("xrwdy", "vwcYyYdNItbpoZzklJYwpLaPNBO") }, - { XHDR("qumyvsmtzbo", "pUfgFbYTEdgDlHMiolNuEGJHBzPdlKMhAHfVNIzRqblCDzLFaCpyJcaLKtdHkYuhmDwFphe") }, - { XHDR("znhdvqzzqhyukymxnssg", "wLMYvKimGwJBIXteFYkjQezWjlStugpmNOlO") }, - { XHDR("ksujup", "gYuJyFVgGYeOiEvZoQTLPpwiuqavbARcrILrSApYIM") }, - { XHDR("hflxipfc", "wCpPcwBVWkwVgQtBmSKrkkQBSWzmmWThoVYnveZIOe") }, - { XHDR("j", "RrdbQezfdxiawnxXkFrJrNqDUvRtmTtBgZpOlNBZpwNsVzTkOLewD") }, - { XHDR("odixwiivwttcf", "TLNOYQhmIBRLiCDPxxNEnCmRVDUpPKtcp") }, - { XHDR("wb", "WHHDUmBq") }, - { XHDR("tdzdkzqxdpria", "CfgUlrGpqsluexqTQkMirAOURqguNCqrepsJDWq") }, - { XHDR("daeomnfeyu", "ztcYFgXojIOFKyAvjfiPQlHMjKkPBAswhgCYxuSxKYeYZUDZszCjgO") }, - { XHDR("htqynolo", "uWxxAwxnyxoqoXWQwgRjOwpdUyvGcWKkktjjGWypOutiGkhp") }, - { XHDR("kjbneensr", "cbUevkbiusWeFSANsjbEPUVeBYgvoOhYFyyRe") }, - { XHDR("jowl", "csmNffAIHVTroLZntvACEmCR") }, - { XHDR("vanfwylhlfimemqsn", "iIhSRw") }, - { XHDR("y", "UjY") }, - { XHDR("xuvwttdghfjxoaib", "QvZhtznkNIodSNcmXkOYKJAlGwdCDfPetVVregHdNOJyaOMC") }, - { XHDR("m", "DJXuPzZQwuX") }, - { XHDR("dvmtkqrvu", "OANoxGjttXZCcoMnaj") }, - { XHDR("vpmxvbwxv", "JIc") }, - { XHDR("mhmdvlcf", "C") }, - { XHDR("vfovyjtltwfgxu", "mcSJijcGxrY") }, - { XHDR("cphc", "WpiInNqzUPXrsZsYxTKrYMczegBPfIKZvNHswjUIMcUWyygGGNKOfjwuFQyViydlU") }, - { XHDR("utamzmibqrvcppraow", "sfigFizHQPBLMvRERGPCPf") }, - { XHDR("ladsiavkuqefaaglxvu", "JinRfGhSlEQboMDJWfsxlUbQY") }, - { XHDR("oniiwwpt", "AWQFjkgyG") }, - { XHDR("rgdikv", "hzBHLxGlIlfNyiVOrjvKevDwXTAiaJNNTJQbhcXDSXJhsvmF") }, - { XHDR("kgwzmrwhie", "aamtiOXCLWWtKpShqmdmkJsCAlOdMQGrVGTdxka") }, - { XHDR("ajqcexumzinrzjl", "cGEgMTGKcumuIMaweZDplohbVLuGqYHnxFdF") }, - { XHDR("ibdfufvrftyuvqi", "WNlJMBKyGGqbsWpjYXHEamII") }, - { XHDR("rnpehzyfpasnbnq", "QmBkhC") }, - { XHDR("hwcfcjiiifbyapjxl", "ZMJzoyLhQWUGvhIJoKYuLBbopgeePkyZqq") }, - { XHDR("spnmsxfxmbnbyltpd", "UpsOFSsmOzqAOVVIrwYrGKpREpLYirxYtkiRhTmLGGHGNvnHyLgdSpqhEECtwfYIdHygPNxwjtbQe") }, - { XHDR("qji", "dsZGwGyRCXyzmZOFrvTBxkdOwcvqZkNSyYncbTXWzWoaZrrGxVPmjMnLOBKtvkZVivo") }, - { XHDR("kwuojujmdjgeykyknikj", "rVrhVGlcrwzysmMrleVTmajaWRyROUzjBGKXQtcYorHfjGjUFDYfZFrhsIjsTqQEsgu") }, - { XHDR("ncrempowebjopocdvqc", "nGVAhBrXlcOmqspGEqwKDwGMdyihdgKmR") }, - { XHDR("zxtcojlxsocrgbeu", "tDeZrpzvQPaDqlRKebBMCYcbkECZAHFUQarOpDEqUvxgTIwTFtGifOVJWsVrQkRJlSJimxFzlEdj") }, - { XHDR("ckfyqkl", "FwSGvzzgxTkYEFWliNlFzAPTVGEFIDgoiuuCUJBEGfIlnCDAVFGZVTDAB") }, - { XHDR("kcj", "XixQjsxpasYBqAEkzCmYnRXYkiGwpVyORCXCfOnzAJhoGfJepzLKascysLosKDbSIYubpAzBzZM") }, - { XHDR("yjwilwkb", "SDTwtifyXHNdyHcBpNgIDILSqhmmMVWYbFJXN") }, - { XHDR("xufug", "npLNmVsUtIuNNnRoURGipCgKzQJUMtOHEjyJDNvwnEWrnQwfVmwdcFc") }, - { XHDR("jqrjfnzmjimu", "sRKxaelyerzTxYUejDicJDUwFIxzer") }, - { XHDR("ygywxituqylcvamnx", "NRvqGLtcHtrCxFKOIEYRHUBlKGuWpZBxgWqPCQXRPFoisEBhoZMRAtrgzwMnWodBdkldghFC") }, - { XHDR("fgn", "GdHXxWsLpCdjRizSjPmmuVwYQUWmRYfUrjQgtzHHVWwObYwYAaLPgrZRrmr") }, - { XHDR("bgexltsfs", "VrgWPsZdkpkyxDQAOkQNuorxGKVO") }, - { XHDR("bvuvacfqhr", "mLTAuicuGvllCcktcXcygEpnWViqbtpo") }, - { XHDR("jdjvxy", "PrMpPiDvJWzpTqxRaZNWUZaPFfbtCSVnsvUGrIEWXHeRIQwSoNycEqjsbTICWvrBojdrxYCSZqKgKRJZ") }, - { XHDR("ddbldzcjrhmqq", "youHwjiRWhAPuMNCbMKRlMSzTEkDQKZrxquCDtXmxQLevqHPFYdNGVjFSKngZisTVcmvFwZzOFFxQu") }, - { XHDR("ewuyhbjnklretj", "bVMOZkNyUqBYRMSWwSSANUkgttfgfFIJUzLoOtuhKEzfAhoRNBOmfTrvgZtRGNGVolipbCpXVdeiikFW") }, - { XHDR("psuorlqq", "MvDfrUhJwUAOThYlRdxuzoSYvjZgciFwzEdrHviPIrChJevFesoDAyRFtfpplKLcDdndAgOOxXRgO") }, - { XHDR("tsnlpco", "lhvXMliWoOiUmSyvcPMBPnFemqcLqaDrBqXZE") }, - { XHDR("n", "IHKYOlYzDtFFnBDqsbCK") }, - { XHDR("bhjl", "clbORMvAoGaxSYd") }, - { XHDR("qkafqnfubgq", "HbDzjtbthqHJCsSAGUlylpZqHeS") }, - { XHDR("onpqhdgsk", "hdrXdEZFuAcfbnTRAvVOYLayTQwhdBDuYVgOVxROYxvgvThrSWcnbNzGUUlcOow") }, - { XHDR("cirbncmnydaanazscml", "DgAjlFHUXguRoxYYVAhAgwKsdTkFo") }, - { XHDR("nyphqbympieumctyduqj", "BpVZIxfKRPMI") }, - { XHDR("ruapsadqvnvei", "jbiuueVB") }, - { XHDR("zlwagllxdjykkomb", "jHCogHdhdraodTKeMlYlvBnyWgQawBxbotYfUZcllKQjRzCiHltlSFpw") }, - { XHDR("qgqlmkmoxskkw", "aRxVBECMShIZDzZhaCzinLnfhzSHUKbptZpdHNQJSjitnphLgK") }, - { XHDR("nukyitmepu", "vkxsjupRZvvDhQduIcFuVupgywpOYZHKzMqlRETRvPqRbTgIeScnGunoCotBiTEdEGMMBAzSpmEx") }, - { XHDR("dsqpglle", "cEUpRNkbqTLrCuEotwiZnvvHpCOOyxBmluZkpo") }, - { XHDR("cfhgwzwlhnuivwelc", "SyZgyOOHjedEENStgxsuFqsDDXJtiFkDQKYFkCzlAWmkHIKvkCKHiuNVljQfrqfiwFwqb") }, - { XHDR("rhujnrkoyxuv", "iY") }, - { XHDR("yoschogxvdyype", "yRQryAgpvWLGAeNPrdJkpMWqwmkALPkllLAegP") }, - { XHDR("litdhmidjgufitfmrfqj", "SfMwxcFAJDCpjvOwvyKzNhHNqQitztbKzdgXEJtyWmjSsAgFbhZPwqGAAbeWrSkElBgIXJJ") }, - { XHDR("z", "WtGcyrYqLWgutszsUWmfMlRlpovzctwNPSOvyfHnzsisnkWnfsjoLXgHw") }, - { XHDR("dnqvjukwpsplefvbg", "whUBgTtAUDiHwbnzo") }, - { XHDR("zvcvyftoac", "DzfJNaJcooAKtiC") }, - { XHDR("iwcecakbfsxcisxtzoz", "LmBxHIwOCPTpRKiDnOGaPpsZVLwEsWlCPRGbzcIwggTihUvX") }, - { XHDR("hzfuildkpwxlymdyvjn", "iUHtRwKtPLOAnUNMjLFlwCPDKWmHrfFTRY") }, - { XHDR("ss", "oHILtRYdMpahzHqKCyULlHGrFzRdwnccKMQTqdOphbvlqQJNkaHRNCdEHpiMactF") }, - { XHDR("jg", "ZYCaBvjGvsetqcuzkTwszMpkCYihcohXqPCCnQzzHApKpKDdQoCdCDZzlqNLUZPBbWXzWUq") }, - { XHDR("elmj", "ZduuQfJWpSVbUtvQyzhhRUO") }, - { XHDR("ycetqcjymgg", "TN") }, - { XHDR("ncrgym", "aeELGXaiGpgzwHEfMEAapwdWzqnRNSkdSxkskleLbtrdvUeha") }, - { XHDR("fgcokk", "HUiLzDhJwjhtUTxnNgnXauZWSfrZeUleJIfcHoSSRjLfbTiVy") }, - { XHDR("vuspencud", "saAcaEvqJBUxeJEensDQTUaiZZRRVHUkHOMVkC") }, - { XHDR("yynktnyotczgczyrn", "NBbwDPzrRGXHnFgmTZqDovEFDppGbOBAKFfAWfVNWIAYZIjWbNlcNjQUimhwatmsMF") }, - { XHDR("qy", "viymzEqxZz") }, - { XHDR("jfdjhsso", "NJGlgxOF") }, - { XHDR("kfroshdeipqgoalwr", "ydSWIIYLZeATrzyGVvxlahDSWhGNtbjQoKHOaMRrSmwsnOFhjizWfbTzNRGguiWRMBhbprfSGdRtvnB") }, - { XHDR("d", "cIdaVrxnUAjivHgMWdfmNSyANBYCiXrDHUVYACaLAKKEEDHPFZYmJIcNZSAgrDcAmpjW") }, - { XHDR("rbhztpartfzkskuy", "YaTRpvVSnADxhNKohIpuhQvONavDSCGkXTDTZpEoRSVqnIwVzczfYSKtIrzNYv") }, - { XHDR("noroybhjskjnkxoxd", "iYZFumtcpceYcKmCZoIfypaTSpGczgXkEtGAaoVjVSCGcEJzFeRcJfPnTichzasDLYhjKWRBMhoM") }, - { XHDR("ftpskhcrxhljiexpl", "ywMNIZqndlavNEAbHUFBNBEntOxerAdHhWfdsyUaqqRkZhMGwNougGjtk") }, - { XHDR("wztopqcc", "zGjTouklYDngaeZfRQpSmQAXRlETHbNLCDvIcKpnAaSRWC") }, - { XHDR("kcnumlfyq", "QGQsBbEiLsnVDrlorbxdLFHRnhoJzVXtvdGnydZcTiUEIPtWbJQu") }, - { XHDR("vqyzxwnabfrjghxlpqp", "PCJsqFIufupf") }, - { XHDR("emmhhdutdfk", "adrwzocxEqGDUaQauvgjoJNZhPkHOTB") }, - { XHDR("urlkjpdy", "emZDuvMAQZKKopJqbdXJXCJSvPkmPLCzFofGdFPxvcFrRNhwThlrSJXFPFUlgLdyDX") }, - { XHDR("uaxyqbpxgldla", "KuICbFSzyMEbYXNzTaWzpTOEpwdRbnTEpBgxcNHvGyDKHSYGujbfw") }, - { XHDR("znsaa", "SuNEgUpDSYFPIWNwapaWHvFgNpNWVpzetCwppaBfRTOGDBGwjJZdDoPbFgwIRtGSqIW") }, - { XHDR("iep", "LTTRWfuZlCtpAaNfDhGy") }, - { XHDR("cr", "mUxDkLJLTQTCCEktbQWIbTKIxmhiB") }, - { XHDR("oaomrqds", "SqOjdUXuTtvcYcUjQTxJKpqQxkrUmO") }, - { XHDR("flfbaiee", "ETGKZuFXcuEtVwfEbIfOuzQeZjPDdlSdwgcWyGfSdCuYxMPyV") }, - { XHDR("whzoyufazxbzladox", "zjmxIhHNTxzPButjwNzQWMZEZawzuOaFCWcJIFQeQUYvEJjENOzmxOdNVQplXtXJTWo") }, - { XHDR("ioh", "Dctf") }, - { XHDR("qfbzpud", "KdKmlrfnpryLHqBeTTrwouJnJrPn") }, - { XHDR("y", "poTBVocEGMafJvaGGEiRFKDlPdATrydTUFpJwEoHeAgnZrVzzRaY") }, - { XHDR("gjwhvjsyfvethuwrxlv", "bFFerGhSERAhHXJTqZoZsEnIKFADDpgwIcHPNtxWSlWPMbDLdRaqySrVqUkQfp") }, - { XHDR("mzjdekgbnfattb", "ETufNPOXyrbbpvKtqzdxnllyOVAxCkQvyNlxaJXHetKc") }, - { XHDR("vhhrs", "dUKSUizhaOhsHjmSlOdLBCmKqKqfhtGlvTztZwZqsPwIWShxIorwUZSvkfmtLfR") }, - { XHDR("nqvvgswm", "cnxZdOyxxskOcXFTudqYDbZkPJbQiWFkAofDNMMBisHLRENewswfWhurSLm") }, - { XHDR("memvionxzuuvq", "fGTbgUPcpkBJeZEKylcPFhaRzfjgAThWIxrXZwQVufE") }, - { XHDR("ezwoflcbayreijneyyv", "uWhWtLnNLPCETNcyTzoyXHbxpHovJwIkHjCzdvqNYyhTNBVXfPnGMiqSCjdlzyxnvothrDixDaljqApw") }, - { XHDR("l", "yrmMcZCPpZZfqPKSmCyFPrmwfrVeRIwdGcRnRjBXVbcTODVcHJtGeTAq") }, - { XHDR("g", "snkNCSovfEduLnCUeGK") }, - { XHDR("oqqvrgagjtmk", "ftlPccKraGRYgKkPlkemDwWizOFRVQFNRwSXwwUAODAlfFQUrOEqBFlDgFnWaDBFobUBJzTzFfJGGd") }, - { XHDR("iozcegtrtrtwqsb", "yxXTMrXcDjAwRLMMplerCNFBGKAaFrbTmPL") }, - { XHDR("jqxdbkrdxxveblfv", "IjKwwERaAnGioTrYMbHnrRRTgZjAFqfvWCwOtpRikaQDCpMsV") }, - { XHDR("zhnhkhrimjafxuwoc", "pmdEqoQFfhtJMZQouBGgKCMzObdULtZzLbXVRIqdJSFUenXRAJSWecsWVKkoNaxUPTBvUb") }, - { XHDR("pnhulple", "NTlNMAOvumEwsHvxtDFGKkgfQI") }, - { XHDR("hjrziu", "cKglGWzWesxtWoPEaqEKmGbjrVPZC") }, - { XHDR("loziywx", "reUEEtEkIxRE") }, - { XHDR("pxpeflnsxdodsvcywc", "hTmoHOyZyiXrQeULLfbrBtkSPKx") }, - { XHDR("ot", "MKWXRdSTepepQANagQdvatDVNDDYpgPBqktWlrJnKjNBFOQIk") }, - { XHDR("mqvvqibuatfiqjie", "GLSacsFiyDShgynEBhgkHMtnTuD") }, - { XHDR("szqwffn", "B") }, - { XHDR("avuvttngzlffrttvi", "MVkaiuuNacmNJGIrfahkZxPDphqzgSDxoWhLhzzMFeWVcIIqODHovbMbF") }, - { XHDR("gpkuqxxgtiauxhhl", "OECbiOqbdamlUqXAAcjGgsqFQGjoqDOxEGuith") }, - { XHDR("lmt", "tUismcayuTYWtUzkdtPavzGIvjWQhXvbDNqFUahheunalGQDFTQJtvjWRavgi") }, - { XHDR("rdv", "vUBkBCwMELvnSrwmHDAjNGSwZBVYQcWnujqWlHgp") }, - { XHDR("qzuwvts", "vfcNBVgFLroCNLgULecEQqDaXPDIejoLSgFnBXfMUHmeZDkyUOiEewKCcQBonuZphJlaSNgWGZDyL") }, - { XHDR("qbnuihhoynrudibxw", "lpEnJxubLStsylhWxXCCasFqZkqKLWCGPaeOoArHFEvLtOpozNB") }, - { XHDR("daaigakngdber", "cEwfLJBSYnWPNIQanqNnEsqBQAgpegEkT") }, - { XHDR("zu", "XzadfjTnvCCcPUrMFnueHtuXIDtjIuIkKWDB") }, - { XHDR("fyiyrkbwgaaka", "AXBARKEoIeZZMwhAfunbFMQmhaRYADlVtjqfZUMeYWMljEwH") }, - { XHDR("wzfaisujgbdka", "zYuGzqUQhyQGDVyW") }, - { XHDR("pofofyxvmrphfrrtpte", "UIrRSlbRpdt") }, - { XHDR("jelifmcwexhxfgu", "vzsaKFvJIzvV") }, - { XHDR("oer", "GGvshMDci") }, - { XHDR("giajawvq", "mQaVMIZlBblbhgQBbc") }, - { XHDR("prjktnwv", "JDsOygbkyDpeDfCHkMTqVnfOJmpiFDZGsYgiHjSdgGLVKGcqxsyxBuNNuonDqfjrwlVYquFiRVUuSij") }, - { XHDR("kyqpaxmhulvpsjanwx", "VuV") }, - { XHDR("lbgcfnlnyvqatdeyoy", "bHVgCKFkgMoyrZFgCJuzaaHNKmbFlFoT") }, - { XHDR("gs", "xcFB") }, - { XHDR("fkboarbuyjyvzaiwgcg", "OLiKZPAtMZA") }, - { XHDR("etqtj", "mEhZGWDXxRIcPyNGhCJ") }, - { XHDR("vx", "xvjeRf") }, - { XHDR("qsglcydop", "UgRbtbOCJfJCeOVrOmJUaCFRGRhBxKiFeEJFVhQrKBbJOkgIHfdmLGcXOHseF") }, - { XHDR("eukbhmj", "gBbEzSivWsURSbyHnrdzAbyhvFWRSBkhoPSJeeTwKMtw") }, - { XHDR("ansowkxcyqpcighjeurn", "iqJFVdopSAKnBN") }, - { XHDR("odtc", "sviWHCxEtBFEHqLzZ") }, - { XHDR("qxzbt", "ZQTNnCDUbYmnsTWxfMAiIK") }, - { XHDR("euleu", "Umgwr") }, - { XHDR("xlweniuhtwu", "pxBXbGuOBqQycgiREGRjhjucugjRoQDURULcOAj") }, - { XHDR("f", "cQJSzMDRbrPlQUyqVydpZxPQ") }, - { XHDR("mmynxmfkfylkjtajye", "hxxnsEd") }, - { XHDR("gqziunjfoahwvv", "PvfQiwhpNGFuZifoobqcCrHiEQwugFJZmMcpJcyiDNAqYhKcMivLtuqKbcHzLMnoTHDDZbSGmw") }, - { XHDR("d", "LBWKRJsYsK") }, - { XHDR("iuedifhovrbborlyxgyz", "wPdTEBXLDcFOkyQtQskwsCrXwaqwStIwTxhQGrXClsRgSQDCTRLoabXTVgiLcgtHFFUwpT") }, - { XHDR("ugj", "zhfqIiHxuzRfFMfxEoJ") }, - { XHDR("inuakodsor", "LHLWvkLcgqJTWnkknNkxNdYJkRttRxYbXBSgtqLvPVNbiQurtJKSCqh") }, - { XHDR("d", "aPeWvMBLhQdEALTCywbJLsZuOs") }, - { XHDR("deimhvrfw", "ZtXRFtTZTaiJgtibCSLOiISFEGIeCVVTuGeVStPFCHlxTU") }, - { XHDR("knmcdbrfjmnktktu", "KcgIoVmNfyAayvNKoxveWZfljdsskQOqLsIp") }, - { XHDR("sopbuvckhh", "gUEazvoniXHQderecSyLXpNlihUpWzltsbgHzRlaZdlwao") }, - { XHDR("jbyzomlwi", "HbZIUAvNOtKtUqfXFVXJseisBKdeovnAOsTnkZFvHVOqJVPjTWWQnclYaUdeOnbNXCjVQfZOwxwFY") }, - { XHDR("nbefstnxfxypkc", "qUGpcUOLOzVIcbBBfLdlhstCJyDleXeYNlWqahlopvwhgFJNeVSsqPXGlsiKFwyvvpUBl") }, - { XHDR("hqwocfdcugldqqn", "GGZYvJLwcPsriLNipnAOvw") }, - { XHDR("ggpbnliaozztenvigtbh", "PeKJheyZrZsIZhpAXiAOHvsnYzZGqIbBXZxXsEpRsq") }, - { XHDR("cjctzegiqpwhlfk", "qcMxzmHtLTIsLWIXwZznGNYgmuInESXKUdFFiPxNeNuNu") }, - { XHDR("piurjlgrazuoj", "ZgxjFllEtkmkMEDXcYznZyquQaWQgfoMJuXSSpZjeVdvQIbhOrvzUBqIvLMUDzY") }, - { XHDR("frdcmecbjd", "nRayPXxpeGYlmGGnlpIdpTsJqwgsiZ") }, - { XHDR("vejvrppy", "cvFPCKpBafsIsYgoROPhkZOvfdJHdbaacuzqZpkuPvtJZnWxLikBkdhVAJCVr") }, - { XHDR("zagbqlfmjpgpxfj", "UxuwmCUThLtjmVNezxLULlLVVzGFTSGlXXORAVHaUmbUNONHUucEVXhoRmGGsBehLSSvyJ") }, - { XHDR("ckntjjmjwzbpzxahmi", "lxvMzptCKswkgfDNLhoYwhHbzGymkUexXPenulIUITeWfzRsYcJwZPNoTFvSMzUENhpOcgbYTPSiuNv") }, - { XHDR("cegmy", "MofsXryXsFEM") }, - { XHDR("ugriv", "ULMifbanEUpHqfYfpVAbcDCCYEzeIGoUOQNxcqGfHaStn") }, - { XHDR("flj", "WzMhMMCXusPDXzBKjBrNxUfiXkHGyFWoIGMRiIXgOZSXWJciySOpUtWijBPNJ") }, - { XHDR("sygdhsqj", "BKXdMYoXUeacSVhhRPErpALukgwbUvTRIqspsmdrEar") }, - { XHDR("ijerxnfxify", "FZKnJoaxFtVasAUaSkzln") }, - { XHDR("bfnr", "HHeUZzLmiAqSlxqOmAZtARcJnYX") }, - { XHDR("v", "I") }, - { XHDR("slzgorbwhleuvf", "wjBGwRmJWdkGlckCKdiZDfTjRYLdFfSvVWuszPquSOwKhCOtiLKtnHgEwVXNwSYBaU") }, - { XHDR("dyqreodog", "lMxRaZGsYqgmZOFeytSThBdZBLtmOqJhaMhNeBizdYJNcARskpXKA") }, - { XHDR("xxygvgysodxxrpq", "guGxp") }, - { XHDR("tnnosd", "KQxQJRfrrbLZHvTqqPlxdDqwAgHMJCLzaHmvJsNpXMpVZUZnXOeMbqhotReThJXkmmuT") }, - { XHDR("gfhon", "SXZBbPHslApKCNIeHBXUTJaLJnAobghJOWWlpKWurMYFfCRdZpwTlklwcmlAEIwolEyhxAtlx") }, - { XHDR("n", "jsWwBsZoCXj") }, - { XHDR("f", "xSzEDbJtmBGZwgpjWwwNsaoCCqYAHANokRbowrBWDLuvfFyHYYCmDbpPhhxcO") }, - { XHDR("vksxibdrv", "tAgnLzGMghOvZtxRqKMR") }, - { XHDR("bbbdm", "wBdSuJJVOUR") }, - { XHDR("borklbghpvfptlym", "gqwFdOxjhTUGGEldmQaiWPdwyGUvDVFvNltUhgeybPxgygPGgSuPgmepGPZGHHPTQtoyUDOnvGO") }, - { XHDR("qbzpbqyvqxwefuhskpej", "VDubyFsNGenyfxKUNgvNjdiEIbLjXesVTNzEEngOttgNKsLvebqoSCqSeuUXNMcVgnZoU") }, - { XHDR("d", "TXLHCoInIkQyZRBnazCPOCrXIJXlwXjWjhAjGYiVvdSutPXXDNe") }, - { XHDR("lom", "LvGuMqprnfuABqdxv") }, - { XHDR("zpwjyydxokmkntaxibn", "SPmLMMfyKAoygjsaOlgPAhRTpkeIcPaYZoFzvhIdmDUXOjsPdbneHElRvIFw") }, - { XHDR("kotskilnmnxvjffdal", "mlhF") }, - { XHDR("ebkxohrz", "CPxfaloqGIvHeIECPHZSiowNLhzENdGjKFXvCnTBpdZEHOacKEurmTJCjYTujkRWEzsBudlN") }, - { XHDR("u", "erUsWQDqnyvGbWVAeLvfaKGJQiKJh") }, - { XHDR("lpzcrdjnyicomp", "NjTYBdKpCRkcvmUQwmFsXNsBrwFZzylnDuBzgFuZQrCLrywSiuEWLkhHclvshlYpAiOPjILQ") }, - { XHDR("gwptkldkvrawwgozsizy", "w") }, - { XHDR("bcdjwrfhkwp", "VYiV") }, - { XHDR("tvoe", "GJwJuYMKedjmCzdobBRdSzoTxkbjGaxZIELMFJiA") }, - { XHDR("lbcwnzjilshhgubt", "DlyisjQK") }, - { XHDR("bfmfquqklpbrsiiqzdd", "oMQWClWpdLEfdJHHFAAmiQuslBRhbpPRUNwBNgy") }, - { XHDR("mcrujzthahmoyuke", "jqFSxqGjFBdUzNsTHFyFsVTPBad") }, - { XHDR("rhgjavnxntyuposn", "vLQFGIDNclyvRSNnBuwDTFSokliRchZhQVNfjGTasMU") }, - { XHDR("wb", "HYSLZPKoxzO") }, - { XHDR("yu", "qlPgjVKIRevUMRRyTMuyZmOCkD") }, - { XHDR("amws", "XaGRjltsfrBsIZKuBVOYTKSdneTGDBEgZczulLeYhfFalVtKxGgJzBPwJL") }, - { XHDR("stsiohu", "WsTAHw") }, - { XHDR("i", "CrTkZoQBHQwpKVRjKgQiJPxQqjuLTRVzRfuuUzNhwsQyJZzhqqPrbzHvjwjUkVtrPPEXqv") }, - { XHDR("dwh", "EhvkuldDwIjapXpNApxjTN") }, - { XHDR("rjdnerjnktiulew", "Lp") }, - { XHDR("hryfzdhlsrpvlut", "FvaledTcqRZRjYzfEtnBcFeOTlkxLQmxKuruaIMrFOQHerF") }, - { XHDR("ccmibykgzkedvbdq", "ipOidedozSkyfGdcBRvGSrtnxUOprbbCsfTSPquYZhqApReFr") }, - { XHDR("rhskeknpapda", "ZLnkjlVxLcPYDSUAOeqkWnyAgVYEnUpTbCXHnFX") }, - { XHDR("kyavrakgwhcx", "QnhujuEGTvILSL") }, - { XHDR("obgtno", "pynjEPOQoxXzZtvBnXBbLdneFjPFDkVhlTfBwShBPufcyylGeMFFa") }, - { XHDR("enafvrqvptgtmtnpphou", "TmQZBNouFzCwOmfBqfbmpPzmFkLSFfmVPMw") }, - { XHDR("tvtxks", "vAzScgFwPergyMEkNGSqxBRQEIQdfZyyrlZrkRWwsy") }, - { XHDR("kiekrguitr", "wtPLWtEmMkdJuvuYsrNTxpfoLTEezXPbklbGqELrHztyTINpNXTShNtnrNcSiJR") }, - { XHDR("wmrcidddswcn", "mrXYaCRxriCuuVeB") }, - { XHDR("bhdidevcdwgjirmc", "nHehQqRRbCHUpgWZeCGYCOHnAmXgGmoQpo") }, - { XHDR("glvykulcclahzd", "xsS") }, - { XHDR("dybhbfrdbcatljwza", "fNZBSEXyYJsotZierhAhiYacyMrbsHVvfhIpHhFfg") }, - { XHDR("h", "anzWUeRpwLXkgXFNPsiaAvajB") }, - { XHDR("csjo", "JSHacsElpZIYSLSOxpLWWiExZiwwkGxmkVElGmhyyKT") }, - { XHDR("bqm", "MofOGHIARgLxhrOODqvHjZWEzgNxIbVCIJbbIEMmLowpJdCnCnpIHiiBhDxWcm") }, - { XHDR("e", "cXOoElLhWyobwbQVezbkiQnEN") }, - { XHDR("tmqvhyrmamhdzxrvyjll", "UtXVgGheuqFIJBblQIFHzKIqESvIsBmCujiXsvNeo") }, - { XHDR("jqvtxshvunvmbth", "ujRLuXzeADZfBevermdwQidnMSQtTITLdHssZaOCIxGmRzwyxVnDIwRyoyFFbHiIfKNOVlXYLmFbPQnW") }, - { XHDR("yfpbvwowsdmqirpttudl", "qnkvcLQcvkkvfvOTGsBDoQpzCZNIAgwWxSSuTDcEfblVBjjEOjUXFIfTtOCcdxdDNorJytr") }, - { XHDR("jmyghk", "BWyZLdWNHNfppAYlcnxGxzGUKwifYUlAiqmpCDVdVwBnbVvqmoizdpoAOYvYpEnzuTnEoZrWpNo") }, - { XHDR("yygjqxv", "dxbGHLztkieBiLFJtduqsGIymXuSeRmQYPuJFYAkYWjPeNzAtqYKkRU") }, - { XHDR("npqkmij", "LQcFFqFiacNIMKqclpuYVQeS") }, - { XHDR("dakouqxtlvlupqhbmxe", "tkEHJrHmTjsQakrnCyLENgXfxKPQPtUyrALtMpzVPJMwPkQJFlcLnGQZsKrdJjxU") }, - { XHDR("usgegvvnmiylpp", "bGEAQSveFdVlVyoOtFCQggTozyIBGAeleQRtvZehItfLbkgTGVMzlDIURgfKFBsiyfntvkBWk") }, - { XHDR("qzaornyzavqhrttyjvn", "qTAWYNJAljZEnxayDXobHxgQYDEoLXCnCiDzhLHabgsvXocGqvrHrgMOfSdqOQt") }, - { XHDR("i", "qNumgTeYuRzCKfsQpAVGK") }, - { XHDR("anodkdvkflmoxmo", "ATXKhnNHejVqLSrklNqbbiUuvqVcWGP") }, - { XHDR("zb", "KaoUmwnxgfBDsSaNOAJEALPRFKbXBpagKozpwdlyLuFDEUligfxhFXVI") }, - { XHDR("qxdndebohrarpdgbdkqr", "JEHzOIhdMeyNLWjHrLHQFhmXLLdMrPbVunRptlsSEqieRTBvbcmapqDFDHvRWXcUSPwMDzfDaVF") }, - { XHDR("gveymkalsi", "ebOSBLxRkxHjTiLw") }, - { XHDR("zjwyh", "EpziBtsyfyvktwxoZblqcOJSsoAEiRrLZigRHfTWzPPlXXZSLKrEMh") }, - { XHDR("vxxzxqktina", "ihynSWPmXgdFiclOCMRoHoUrnreqwKlcPvzcBgcGtPSgpyKSNIXVpvFnzLpYBYyqmHgGirnJHt") }, - { XHDR("posvekp", "rSDfwEvfWaGIlcQgD") }, - { XHDR("egmbllv", "EkSIfrNnoylIdhdGBjbngOfvPQVoCezHNnRLeBncyxHMWOhDcrTZeDgmkKFQhcdLBIQoHsqfPcsU") }, - { XHDR("qehjslxp", "lEQpSrPhRzOcnQJwDSknPBiHUcQeFJEqpxYrgdIngzRZGXluvspDvDmgFvUksb") }, - { XHDR("oreyucbgocrll", "PPiZYLSgUTZnAlRxfpawUwOghoXEMOODFeBPfCUQFBoYffPBwrYGIVejJvbnEiBpXbRQiGjbDk") }, - { XHDR("fmczqhjkpswfbbaolh", "JFingtSPHGOpmgLQnjnWSdENwsOZoiVqAawhgpJrxVbZLzweOUPux") }, - { XHDR("ws", "JeyPQtkkVeXSYBdGwqlZGuQcaSA") }, - { XHDR("pnxluficcjtudnydrh", "gvJiXYCVnEybricNfKnMjxkhIJxwQnFNrPKjSrseGWTmaMtokhqbXj") }, - { XHDR("ezurnf", "XrmUsz") }, - { XHDR("gnqmigqxeeoujsnmrzt", "dZgaSKCXLLf") }, - { XHDR("v", "QYilcTYysbfxvmNKLiXyqWBtgSYVEhkFRzYIkPcaqRaoM") }, - { XHDR("xygdcutpn", "qszRcBECTrDkBCZTmZGWUjwssTxTGokUYRDmbQjuZbnZGhODUgqZzldKFWwMDuiEGDKHBdquopli") }, - { XHDR("etycqycperpwqynvvsw", "NdwWsFWxvNGYAedgMVLxcTLSVCUSdcaktGRjClLjcpbMVgoQDQbAHTnUlWCpiCztpMmIzKW") }, - { XHDR("iowcgghbhjwpucsfs", "goAGxRiJjBCDbWSfweITIPtwJvJsXibwxfbOeZEvNJvFSnbzaFheyPWuSoeVDCulRFZJhvbq") }, - { XHDR("krcvywqoftbposmcx", "hzPlaPLCEp") }, - { XHDR("tsxicqbiycahroweemi", "kBDRkV") }, - { XHDR("vldlmbt", "SntjJAiYrsMBWOyikwERMDJDDP") }, - { XHDR("qwgtm", "zexlcqXReLxXaRueYfCTzs") }, - { XHDR("zrphmiphrzhsqfpy", "kgzJUGhVIOPkmeQsjYdVTpgYGkoLOKttUMTDRdhkG") }, - { XHDR("dvllsey", "SPgYTfFxViZbjDQVStxkaQJUOmPJstAMIfHlxeEIkwTTnUMRQQXJEpOiruvFmcZNC") }, - { XHDR("xeqdfmpheojmncjyf", "sRGEJNjhQPosxbJbQsFZnQOmGaFAiphdugjvowOIvlPNyfMsgEgwM") }, - { XHDR("rxf", "dNwGTOwbEPjGebWxjALHLkVMSWLDwZGBfKMKVrqUMIVKMqnUcmgOAbNcUHqyNEDpaxoIsHNQ") }, - { XHDR("giafgoxk", "HRzEEnqtkFldcWKTdhbTtEPwGlENxVHCDLJxvAQlnkBBUwFcehIIZultnKJfjXt") }, - { XHDR("xlzgqdqsufxk", "eYqoDqXuxFxnljomTDPaAHc") }, - { XHDR("yymhjzsphthsznfoewl", "Idbtp") }, - { XHDR("bvsjfajpbpbc", "znnTnDKTPQfwMmLQaGPLURVLIUEjQiRGzaXjqZFtKsX") }, - { XHDR("enrohjpjmgegcx", "QSuFVpwzIfyEeDhZRTzFFqeuyfZMkqXAEYebHKMTcfmUUKWyGQIcU") }, - { XHDR("smqolgmartxxzl", "BLroQzrQBmUdynKsYpcRxOVDYJGAgKoalzYEXkxljmU") }, - { XHDR("qnabfewvbqxiqipbkza", "BhBbjnhGORV") }, - { XHDR("sqtypehvbvexnptkks", "IqQbcoECICahPljTxOVwrLzSxjtDnDJDEFHxKXLdFFuvUnDwo") }, - { XHDR("euiyslsnsvanq", "mOgnUQyRfSs") }, - { XHDR("ioqasi", "wCrCxNVJjLvjvNYtbnqXryodcIjYFBFHTnLryXsWZAYwkMGTRUHEomyeeZRvfwgjEPH") }, - { XHDR("shug", "TzcTSleSaDFUgAcXIRBlKTGchAeitrVoAWlKNhsFowEorbVVSLRHgFZMopUSg") }, - { XHDR("ibu", "ZgqQZzZXqmtPeoKVpzDPBdjgeVwHvDeTXQP") }, - { XHDR("amgojbtoyhomsvhuylnz", "dtzFjiDECNcMfBZAzWnmcEOdGMmFOsmxscjYxa") }, - { XHDR("zopttjfyxvhgbanr", "yrdCHFoYWXsfUPuauJcFqeMvIJIVa") }, - { XHDR("f", "QuxJxvTyNuLHLakZnXPtvjQHcynjJw") }, - { XHDR("iyrxfnnnxlun", "oYyYJtiertFrnfEkcHnmvolnqeWIYwYNRctrUWTCVjeoKKTnjGadtFlJSfafDjXzM") }, - { XHDR("zsgdcoljhbgbq", "FDZFydrOjvTHAKUePLedfgJFKBFfmVzXFvObWFwJlOxU") }, - { XHDR("z", "zhlUUKNfrNJzegadzxSIMuNnkryNFYzohlYqQIko") }, - { XHDR("jottuqelgfu", "RFsGzpoAfDrLwunzXqtWRQsNnGXVMANuWDWRMqwQEZDPIaJUDZJyEhPeEnVpgxMdSuENJktckdcIH") }, - { XHDR("inweaz", "VftxbpboBnztUcuxd") }, - { XHDR("hw", "UfjCyyECVqbNTrqfeAiRINxcMfDQuQfAildAB") }, - { XHDR("kjigmarjdg", "gXuUbeGurorRNguvuhmNWiDoGmgSZsSaCZVeYOsyTXPeAOnGbLgfOkzhwCjVXbyed") }, - { XHDR("qdffdrkzbmbs", "TJssMypQNKTVzcgQCBcNcIbxNlnSZIvLwRaiVRjNhBTeMxY") }, - { XHDR("p", "SCwbkxSldVgsayyhsMxYTiNbPkYodiaGJxAheLz") }, - { XHDR("vks", "FLjoLPnuwxqQhweoUkBlKPspdGsXWr") }, - { XHDR("nhpfazgd", "kyeRQRpJNzVpYpXMrWgGAoEiWi") }, - { XHDR("mkssroxhjcjdaj", "rGKqWWODzYSeGhHRrZnXRFQdicITNbyJhgVrtQKJUkKoduHfRWUCZRQdNmjQeYoB") }, - { XHDR("shjpa", "uCLkucacFRNqsWfxqCqlnOQMcvGQgCPfYXzmZqzHLbLQS") }, - { XHDR("zgadecegqugokrj", "QzBLCsKHQZYqAUPHOruExZSXtvGNvXKuKWjZmyqzOPWuALgUkeCUliXvwxWvFvagAn") }, - { XHDR("hiwibcvznryyanvwe", "SIpqMWAEsVM") }, - { XHDR("kyatmatvzconcyagd", "eOUhEEzJwuyQLQdNsADPlMvgGeVZTrPOnybmWfQLvxdRnzqNlcsuqwVuEAsgBTOTGlbijrNTjs") }, - { XHDR("jiicarc", "AwcplhwUlHVtLLHqCOZqfXvzGKyejIaMRxFXfkDZD") }, - { XHDR("czzkbqlxa", "UQeuRGKlpMZnNFCDWwNVizBBlKODPEjwZeeXwqnIktXGeeKEZkxcmcZfEyHEP") }, - { XHDR("uezramgubkoyymjmd", "GstaJdfXYp") }, - { XHDR("orgzibkloenfjvvuxw", "IMxhmHbpXFoKqcfjppdOBgGeqBFXOnJdEqnh") }, - { XHDR("sbemszerpl", "oWEuScWllSyNWBAMOexpRyzUeUBHYYALEtNxEsfMLYmnvUABRQpUzmruDyvgpKTZUaJHpEOmuY") }, - { XHDR("n", "gXWhTDQyEBtEOxBcaCANWECWSRfnurTobJzDJdyRJgojuNLFvOXoJAGic") }, - { XHDR("borpklcpqralrnf", "tzvIrJZAVvwyzNdEWesKLjdvAEdqyBIVMefFrTFjpcraAt") }, - { XHDR("kw", "kJkSpDqrbOdE") }, - { XHDR("joxepw", "rUEGofLFPOhlSdwHVdaXKcGwiVXaiIshFOjSJtXooEFzprKEGjuULEVHpkwYwSPsDVGHVUueZYsw") }, - { XHDR("bzqs", "prrzqENgDjljwmgpYpAdsBSPbNIqZhPrAOpdwzHl") }, - { XHDR("vcygn", "uYUiluZIRMJFkMIGKMErzxKXprroOmgTJtYBoGqbISYbrKIWLdFcIYFihlkWGAI") }, - { XHDR("fp", "KaDyjlgHYGppexqDBcyhObhKjGvDflFXFBYKauSIaTIqukcLjSiNBKwFikpRmdXKXroJUEnuQ") }, - { XHDR("yhorkuehwgqxy", "yFRbNZgukAdqefLcrC") }, - { XHDR("uh", "qAzbToEPNrkXpxVhgOeBgyKGyHpeCsopvTsBNgljsqqfbMFKnvdlxofCfoeUCUj") }, - { XHDR("mxmwffrfv", "VqbzqZmVusXyljwScFNWHDLXy") }, - { XHDR("ugjiruiuendto", "grepbgmTogUFNqQpucbUMpGAGbDIJaKDNDfsZoqWACSiFizFlzhVibneQjMovDhKKR") }, - { XHDR("rgcnosn", "hZSjjbpzb") }, - { XHDR("piwna", "hF") }, - { XHDR("jbcwsafeumuuk", "QLLVMSLsofTZZnziNXeHXRXjJpITtaJCorDImYeTOQFsEfwA") }, - { XHDR("pedxdewhddnhbdgw", "jmgnKsKgPXEIfwrUraAMJBpBEjdvxlNgJNXVSLTPIfbpTfFZBVDoUDIYPlykYssDK") }, - { XHDR("lrbfekjurstueo", "WzF") }, - { XHDR("cwjjinbxymcxdk", "YYgVsDxjQvHhUTEBQxEzgnUqkqDJBcFRVStywqnrOiLspiFLvvxbRfLkXeYbHemwvjDoZnqVIVJeVS") }, - { XHDR("ohdmbucuonrtnqdhhl", "nIgRVlTEAkqEIEYIipAmAnoZESqISDbjaMZxuTJcviHbVWAaKfIQpBeaJhFDFDMqD") }, - { XHDR("czlinmainisnjaw", "PivCVJbNriPfEJOMWbpAbvtcIEOdZxVenVlNkNIGSyYriMvKfFqvrxCaCxsSJ") }, - { XHDR("sckbcgp", "DdOVwfpRKsRuuhiuaSHOGrOheEjPUfdiQUiiuXPoTAn") }, - { XHDR("xlmxctgphd", "QtYzczSuPLihWsnAsoFHLeotMYzuECxyhkg") }, - { XHDR("nqvfupyqicidlkm", "wsqdvVZRyutKkAIhHCBtvtbLftUEGfbcxcdKMPoYxHOyeAHnvYXTOIIr") }, - { XHDR("wdtcnuagxx", "BAeMSYwRXZDhAVPjnBdlOrfjmGBwZZWYsLPenoDZ") }, - { XHDR("lzilex", "AjjpIktQMfczaEeDqxmWbrPkClCEXvUzTWdErxmFHbxmPAI") }, - { XHDR("rwsfk", "woYFrgGgukPjEnfCkxRTVMCUOhsNxluSgZSOaRWkkORjDiiOBFkzRvAozjfusJ") }, - { XHDR("djsqkgly", "sBKmEqXqBSaSOovqtJSPitKzlSSBvuUZLslaraWXbksGejvvInAvYwziqRTqvsJ") }, - { XHDR("xngb", "LZnVbHHlKINvZTAaZYsZxydVjVpIIrSnFZmSXfgLgridCoEURRAtNnfOURZazxhmdoIelpQX") }, - { XHDR("agp", "GQQuFOaVPqCVjcvQCHlFeKAvLQxvwPnkwsynFdmZOn") }, - { XHDR("iavpirprzoc", "hxxcgyRyPiARhMtWSyxrVIxCtGQCYqMHNMNCpELIaAkKzSy") }, - { XHDR("rdjucsnfdrv", "ixrrjLYqTGJuUkajuZGBupZUYZetwaFyypSZOhMrXPWXpyvOdkSuQK") }, - { XHDR("bwfh", "THhcMzeheglfApOBEnRERmsLHllhFIlCOIGXdLFzaUXgvWJUaaP") }, - { XHDR("rftlafckzfwlzxsfanbf", "KMiQVQZPeTvIQTYmyRqCxuUETHIYWUMpEbhUMqkZaQNvRwn") }, - { XHDR("kcnnqnzvtugqzdnsyr", "dffxOjoOWWcTnVPorfnGfBHsJXvMrwfardzRJuZdHIlXoHsEAUJ") }, - { XHDR("mpzolafzwxdodnxrq", "shdlMewPyVwmNOJAeqtKxLMAshgrCuVYzbnWZssGAZPOspJshTdRVrQDUCzhldrZQZJ") }, - { XHDR("trcdboarmgwxnwvt", "tikLMgqgRbSXLCtSjskbZRmNpqbJKnjSeIsIKwLGJv") }, - { XHDR("ohefclbkmtdfokaenvrq", "pNXONXbiyiQGrNmWYkQCLQ") }, - { XHDR("owarezyttregr", "zqkdWOWmsIcyNUSrvihFuPkgiJNITkYkzeZhYgKydGnMSntiIForEn") }, - { XHDR("todmxtjfpzkoljgnqb", "efmoyInkIQZFiVeVmhaEfRKfJMsCYNNvPcoxvOLoRKRgXabouPw") }, - { XHDR("nf", "TPJeLblWhYwVIrbiMnAqlcISeRdYzZQFzSSHCEOGkLmjzcwCsKEJcdXs") }, - { XHDR("ysjuyyfvrxjgsbaoz", "HcmFLcdLqPyBjEVVsKuXAtvMTRobF") }, - { XHDR("tbuwwwqzhljg", "rzRsJzAwj") }, - { XHDR("obtgxdjjitpusj", "dMccrDDadiIXkspUHRPFyeHwQGCDTlbZrGDMAleJCUObIwjuoQGJpRCuRonhqntORIgdfq") }, - { XHDR("bzqgzmn", "KSAtXaYNPIMtUiLtOuPMEpWSLHyXUnwTbHHrsAwmk") }, - { XHDR("tyjhuotfczezhgonhsn", "kmQEhctrscOnFTJPzdYPOorUYzudEHNfisL") }, - { XHDR("gjpjeijxx", "yZnfDmmszZKDIePkRGTtWmLkBaTtUeyVzOIahrScnTWEZQHdOANjFiyeTBnHAHHkrPRCGRLtXDUtaTcQ") }, - { XHDR("jtyjhtnngxzbijspb", "aUnddyUMWDtvUBDXALkhzDQxTbYbejsT") }, - { XHDR("tklrfquc", "GoUAEaQdWlekvjsJwrQ") }, - { XHDR("mvqtjhuydzdeakdl", "vcOnaQxawxLdkXKvyNCjWJonfzbWaRjEJVuovEp") }, - { XHDR("z", "tBCHYssnWrcUGOqARbSDqIrAaZXbfscmsNXBbrytlakmdFSuGvPrMeMxrzPHYdqEnmxOsgiwQ") }, - { XHDR("xwxdyitbucnqdww", "QdaeaYhx") }, - { XHDR("odzui", "VcaNr") }, - { XHDR("hqdrnmtbgurrioy", "fIYSYpKKlcxjszqVlooVHjYuplEPIZDKomSFMEiVJybHLaVwUHsvrdldwgBpS") }, - { XHDR("uvnrzfgvadmoewvmdxa", "kUETwyiBTYtKOsTxHyyamWcmW") }, - { XHDR("unrtlszqmokuxsfhcttz", "ngBzpckEyIrEFS") }, - { XHDR("jnf", "ZSiPtpOoRCcvgmESJdCHYFZoMgSC") }, - { XHDR("foemola", "lqkVajtJIUQBbeISwROFJvFwOlgAvMWaEiApMafIXPbGpVXyvhHnozVuqYahVRbyMBSJqtwYAZutT") }, - { XHDR("srjr", "hqBVSShDmLeNlSbOvESxwnsdKfQLmqRedmqHjHOrcBOqzfwflQAaecfSiSb") }, - { XHDR("wldslwlmlzbjvbuwrq", "aniQmYVZMnUQMayjEwnFUhXtqrvt") }, - { XHDR("g", "UClyIrvcrKhHihLBdyWwtSSTNBMvejFseXGfQzOMpIwxgRnEABcwRJXXDJRwLuGlxpkqiUDVPNudyKvc") }, - { XHDR("qtmucectm", "vEJP") }, - { XHDR("gaibegptltdb", "lYiaxWQxkCuiIdfxLsUPjELoiKbCFCPxftWXch") }, - { XHDR("vw", "voPvLZFdxKpVfCDbXaHLTBqXaJTzOUevBwngEIsbl") }, - { XHDR("mndeluluqxhn", "PqQeWjvhMOhNTTsPxvgcVoTt") }, - { XHDR("uyjzjxcye", "CTMSphWELAOkkaKzIaXwTBwdOxNcpfODVfsoHEXtWIrr") }, - { XHDR("onhuw", "IgMtjgCTmlUZpRDbVSjGNmDTXDe") }, - { XHDR("qioazlf", "BrecvbqJlUjhrbQjOlKhdWcBLhcpip") }, - { XHDR("rstwcklteunb", "mkWjcSPWHXQUTwdskttolUOdKqysCXlrxgJgthrGDbIJuNlwYcHPjSTxJpEjteQDECayXKLT") }, - { XHDR("reltbthzksdxtswz", "xRJyEyUJozzoNBsddbOwUTyxfGgHIGP") }, - { XHDR("gxkqfmbpqv", "wRGPUFOgWBrJBUcOgvgcOWNYKSHodMYWSEshJqCKNASELXPPMGXNfZC") }, - { XHDR("wdspmdkauc", "yjufkoDbpwLAzwLFrHJxbmfwEtFwxyOPbuhhgcWYMXQSrbHvDFjGHxWdwATvcAsh") }, - { XHDR("vqslrkijsojnexn", "qeqdQoqMOzmFoMGJKVcuMoBdYTUTvBNUVPTEgKokVjUaxgaB") }, - { XHDR("shihdbld", "mUmZEscTzAxbdiadcEpJMdwADAXV") }, - { XHDR("xg", "qxKJKGhCbltECzZbJCmHWXeYenuAZonYCGIoaIIiLRFCFLljFFWpyhtSYUqNnGnURWLdjoUZUDOX") }, - { XHDR("sdjxocuqvjzqbgwqnm", "MaOPsZRKyERTZSfmapTAgXbrLmmQWpfAHyPsfdCwKCChwoBkOuAHlobguPnY") }, - { XHDR("ktdmr", "hYYFvtNDsLbf") }, - { XHDR("ygnpzrnvfdwznapxuotg", "XafE") }, - { XHDR("witovqpgnbovjfzpmwk", "CtfpqQFjkfPweqlwZnUftmuJvnaUSPwtLTIFBPPYEvtyvw") }, - { XHDR("urca", "wJUlKjIQKAKBCbFpXvzsdAKxXdGMOucEBEbqhQJwhqj") }, - { XHDR("augzexahmbxujwzdxz", "GiSQzDqYMnFdZjdEkapUxdDVK") }, - { XHDR("swhvxlen", "zZhIhWcb") }, - { XHDR("hyhsii", "oBzkAsKzgBFoTeSxpcb") }, - { XHDR("lrlqzxcj", "oRqXlgWtnl") }, - { XHDR("iuovyjebbmm", "zBLXAyTysLFsmOdVhRqakCTaCDDhWVpJvAMyppusPLCUxbXKOgUSZrSuStyMCzpjvrT") }, - { XHDR("gwtepbciirkb", "UiEfoXkTeUZWVGnJhaSOfokUffuqMcwDXKXghSEdUFoMaYHlWImMtcizemIDUzyW") }, - { XHDR("rzrgxltd", "NIai") }, - { XHDR("nyoptgefedgwdexyjv", "jtHjNcpIDPSrZWtOyShonDfgqTPNRgJTcyEaan") }, - { XHDR("wpepejeqkxaznioeevbr", "sttZWxiWSpzjTdmkyPlTXUmvUeFRNmBhARIAidcdbz") }, - { XHDR("ujsztpjnzofxq", "SxkKjNzLcOMsnccvayamnWnuXegvwsfWUnDeFUPYBTYlMplkcSbbHcHlFchEcgRycZUYfvLhWhBoDzj") }, - { XHDR("asgfzptuhbzip", "mN") }, - { XHDR("qfjblnw", "dTuSWQuOSkRoTTcsqXykmMmHBLDeAUCRSsviJKRXMfnCVBaheJOBYDhAnJeWKeqPS") }, - { XHDR("r", "vTRwGDcOJZCzOhlBrOrBSZLlvkHP") }, - { XHDR("txrcm", "HSZOxWHGMpWyd") }, - { XHDR("cmadjfcycrh", "CqcatrpoQOkXiyNjZyHBEGGjVIqdRLKfSUIjpJNcQDJBjtT") }, - { XHDR("cwzf", "cmiaeIsmSdUMzyli") }, - { XHDR("jmfqvzwdpudnfdinzi", "bjcfGjIHKyaWXOqEVXsJCuQhxpPlHlAUASlLGqCNzDkHuorbOvEErACTyCWUHNlJueNJcOCBThQ") }, - { XHDR("gyqtriukywvixuvfztp", "QHaBlUP") }, - { XHDR("vdlmq", "yeJatHCJIPTweoTRlfcxXgcpjjInhfgC") }, - { XHDR("vcnzvb", "XxXBWRvCiIzkrTFLUdGixzeowpHSeIupvQHZIUqhWFdWAJPtpTR") }, - { XHDR("gaszfleysvbygx", "nMdyiJHPyePiyDQyHQgwpnDUzDQpXeJwKVoyIMtJHwqEATWAuKTNRiPtyDLrNRA") }, - { XHDR("bvhbgopdyyukouaqw", "LtzEQSnIrrnqjIWzixoNvNEgXgffhAEkvRoCEKpiYUicHAGtBvS") }, - { XHDR("tstcrydvgskzlpljcaxo", "ogDrDdlstgKbHyPeaQRGMPpyTFtQWEmmIoZlLYyQvtYlSrFOezxaWbjkiXbaxXHXlqVaLdNIY") }, - { XHDR("elhtbz", "neRV") }, - { XHDR("resqbapcpes", "LuJMDDJfWpAQiYqOIelzSVWrDywSNmfre") }, - { XHDR("ftkvxydltst", "BUUXBXmmUjMhnhzdwshvRkkRcSREIivhRKdjBAmQCVVhY") }, - { XHDR("rsvihtegqvm", "DPOskubftoeaZxublinjkEmhXVtWiyYqevMBxXYNUGXmdcsIq") }, - { XHDR("y", "xRuULWxofVIwLanvJApEgkEGLBcAnuWERYlVNlZeOjyKfDNJmmpDlCObTAqba") }, - { XHDR("oaomozhxvkwococo", "APCVdLgjpcXZDMixjIrsWvVZcn") }, - { XHDR("tdldfbgtf", "fYNipIGKRcfrcmfCuVeLKeTNdvc") }, - { XHDR("rkdgqiparqwlxqqswgvn", "OykDdHRbegtVYcoipQJFstLlrJrUbWmtTZBJSwaWDXfUYVglVkkpfXNV") }, - { XHDR("qdsh", "QxOUfqJzakKTQMVjegUMDzfKJe") }, - { XHDR("nhhaotpwxdnuppuoj", "SoThiOQoCLqauvBwPncii") }, - { XHDR("oxkxixlbppywl", "XevhcBcttJwCbyyBfegNBUCqLzsjMKHbXBbRjrmkGyONRJvSVfmlsurfkkRvDACpVscMgWKA") }, - { XHDR("jejpzfebymaedp", "xIRWsndDNqwGiYJMIknGMDmANmjvuqH") }, - { XHDR("qzszob", "qhJSBSuGMTCembaNyTqXBGYyhZnmEw") }, - { XHDR("dctorjldhjmseolwok", "kWn") }, - { XHDR("qw", "OiQXOYCYmmQMvRubDRTaBBGpIkKUoKFNDEPViSaouqdShzBVKcPQOQGjMMwYJmlYIXKFbnC") }, - { XHDR("srdc", "AGeligyegCvXcAhwaIGQNzOWKNWb") }, - { XHDR("ondol", "BrbeMNsTvMxJhyRu") }, - { XHDR("oxglgpoib", "lwKyoSfpuKPuNICVVPTdKlJrqqjtKJUVlzxpQ") }, - { XHDR("qd", "GqlCsiQnZSPiKCTeUFjFaBtYfIsCSLYpAaNrrjHdgFEyM") }, - { XHDR("dscesmv", "EQ") }, - { XHDR("nlpnhyuwhihfvrf", "GGvPgIRYdTGsKyhqMeQjrpavKmJJALWQzJ") }, - { XHDR("ifdzfjcz", "WgacpKeyJrnqQCUDjAPgMFZdOjATZFFYnLheUhvHVQIbyUouEVMOWfrsgIXYYSc") }, - { XHDR("kdidvvgeuoirapw", "fPkNajgNKtDxnCOAPEDvrkXDwxQTcTydMtuADPHBxEhIgiDFFOsEJgWrrIYsA") }, - { XHDR("m", "DFKHCpygNjCAAnSiPncSBVsHCIaQazAEDBszTWcbYeRzJPvkHksTfXPIhHbGAl") }, - { XHDR("syiktlljvebiyzs", "mswzsnYfcHdoPQnUBhlUKRqjpMfrpxiRtTPXcGbyyRkgRdw") }, - { XHDR("kxv", "ZlwLOVijxLvYncwvkmxPNX") }, - { XHDR("mv", "AVbAjCDZZZAGMUjJbn") }, - { XHDR("yynxvvr", "xTDZZE") }, - { XHDR("vdtcmxhrgknn", "wWzdkCFrEmYncZeLoYxNw") }, - { XHDR("ykcphajdyfhc", "xfPUJAqXOAzXHGmOmiivLRPuZIgzwKuJskGbXaVfqDipxhMhkrcrIFQmEuKlZkULsEeYIwy") }, - { XHDR("letrqrrhmtv", "BrIxtSNliSxHplUakNPVhgEbYXDFjFLCQugKcdwiDPXpoBbwibQeSjZFDUaBfmwgCPXPEQH") }, - { XHDR("ejmdjed", "mnjVOABjDCkdFbINXPZWOKDnNOVVJyLAuKwgIBjnnfEkdq") }, - { XHDR("jkxeh", "trHIzxUCQLfEGXjH") }, - { XHDR("hzjgf", "CCEBTRvRzcZEVhSPXNoMOrHoILaaCgWCovAEENxnRkNhwdGEMkP") }, - { XHDR("opuwddd", "SLASwlMLnuCEYCyzrogpGgZaasCujKWLyaeTncZGAGnGm") }, - { XHDR("mjkv", "iCvBphyQjmjiiuGylFyXKZRYbgZuoUBQqIu") }, - { XHDR("ebexkekjkjcetydr", "BKvwehVTluZNfsyYXRPDWkYEsityhGkPmftmcgTnLVEWcIYBsZBOrVOLeSQP") }, - { XHDR("taeolckfvanzweidto", "FaNRMNxgksLdNDhZuYtvARbWkmCoDAiRCgDShpTxCDPrqweeJXSzybSEXAqaUcqyjhmBfhEICl") }, - { XHDR("lldwbygvfnbanqkkyaab", "RFRFBlSUgdpVKXulQibEjkVctXFLIYwtcAQOSnVqUOJRLuafVMiIJxxKUzoh") }, - { XHDR("klmjzm", "AdVmkutGYkRE") }, - { XHDR("dzcqcp", "EzQnaEeKTYzOATprz") }, - { XHDR("qogmq", "VWdNCbrGRAILoNhiw") }, - { XHDR("xncrvnmxcvonbzky", "WBxJobttRpWLmXK") }, - { XHDR("ua", "WuGqhijBQucBnmRmxfGvnJBVWiwpknplMTyBfOTbKswEeGVEdPifonL") }, - { XHDR("ojelzcjbvzrvsml", "DgvRFrNlshTYSzrVdZZIUpYqRlYlGEDgOwxLKECgCnsQZmYajLvViAsSSPvQwpucjAkJqKZBN") }, - { XHDR("ffmbbvnpgshjqh", "VaAVRqAGzCJezYZyuaUAVngjwwRnOPIAtORAPWHHmDzBbRUDELKonKlXSqUpY") }, - { XHDR("qsidwotuoq", "RALCfZszVZSCxUXcocxSJQSznEIyYdVsNykYImgTBInbTmKNCTqChgnoAIITDKCxozM") }, - { XHDR("xpjteiec", "YBInkbXyrrdIWyLRSOjyigiFXUmDiTnKsWe") }, - { XHDR("krpxajr", "eFdoiztHSMlliNGIWcUwEQjoGLhSzTInAqhwncIsjtHxshMmkrtozJQfwhTejvl") }, - { XHDR("gmyflqneicfatsdmop", "NxIERNWV") }, - { XHDR("lbft", "Pci") }, - { XHDR("lzisvtddupucci", "TxRlpjCKCSJpVaSjKXpWEgESPmroZFpnTiGoQsZcHwIRaApStCYUgmnPwgOrXEfqrfMMqsv") }, - { XHDR("dwmkrwgkmdmc", "RBzZpYFLagepqLwNLpgDcqaaS") }, - { XHDR("ipnvsxze", "RAJba") }, - { XHDR("cokqibgvwbqpkzaldezd", "XcqBzAYcmQZWERQfqyUtpLIHUfwJESxoQLHEBkeJHjmHzdssnNaOxIk") }, - { XHDR("ndlcxptnaw", "twxnNwMltoqiljjbQeKiIPPqimWTefH") }, - { XHDR("xmpppmfgdaahrpb", "HrVUFqjQphfZNqkhfNXLKXxzrauYvQireiviuUwRgTmESjulQHZGgyoayuJvlEJvdyNOyGuGGpVOxq") }, - { XHDR("aqodr", "CwmWwYHMfKHCpIrsCQAlIwKkGbYFehatmWxvtZOaMkYfzrVIfJyxBVvqiDrSjqMDYqFOKS") }, - { XHDR("nkg", "RuhTieopSDOCcTM") }, - { XHDR("rvodqstrxxqwaommy", "YCT") }, - { XHDR("sz", "kixjZcbujivEepsAzOaetMYmXKjAJQWMiEfZYLvCLvHgnFecmktEm") }, - { XHDR("evddrxfmisw", "JrptUcMXJbhnyAgxWJOIZHCHZsHFNKIYHdNBTpn") }, - { XHDR("zzgeavvxuqanpcf", "cQ") }, - { XHDR("ayvxcaecruthwrdpiyd", "afhxCvzTGApJMDNgPEGhBehqWEmDBAiJIyMqUXKLDjZne") }, - { XHDR("bccrszxxen", "ErLHpcGOiEvwvdJwWtQgSwcbLJOIUdexeLlEBfkWEGVjRJKWvstBHFKefnsX") }, - { XHDR("o", "iykdtBAXfpDkjSgnqmQgNpqfbEnSyPMkbvhBGfVfzDPdOC") }, - { XHDR("bnpfkahmybdybnkjrfxd", "nJvhACKjnYDZuitemsYiyhhkqNumXVkWXfsvnHzYUpyAIwoVdEqWesNe") }, - { XHDR("tsec", "tnxWeSlwDeCYzmp") }, - { XHDR("wsrtdmeth", "SuWqiUlGIyIauQvezisdtNBXCjKpUQkWPaXyWgKmwgySMOSNKnGxnjfriBP") }, - { XHDR("gsislmctbnqll", "RdamcIITHkCoOyIlYTKIQraaBuLQtKCYDdQMMnxIIDjWmxlIvxaRY") }, - { XHDR("stn", "qRIMjRrDnZltlKN") }, - { XHDR("fsnpiaewhonv", "qnzdzMpctlOFoFgpUkCkrDZ") }, - { XHDR("funmjwzoormatzlguki", "ZPlvFyWtDwDTAspttqyURMgurRSkgedgIQSDzLqpEJKvsWTas") }, - { XHDR("obbahanqzd", "JtGpMKfHcHobGgioCTnOQzodrdXbgmGPYBSoaNxMVRrQWhthgUQlmBIBFIuqAiepLElyvkZJJtagOz") }, - { XHDR("rhoshvia", "BWthovcQokLRuZDdiyjVwztbBOESxoqiaeTddvSvAbnsdIlpieJZDbZdFWbpLOfuPaFUp") }, - { XHDR("uosndyoczsglzkpmyy", "MsVIRlJgUHnSRtWRs") }, - { XHDR("gbkwpsvamtwaj", "gxkTqX") }, - { XHDR("tcbvp", "VJGsbXRbeyZFdgGzTpPEmDQEOmPjawqWsebQK") }, - { XHDR("rir", "BLLFksqebHXHYaAyZiTbksCFFvoyxcZXrJwTeYhaprMJxrtSLXLsgtaPlG") }, - { XHDR("wkvkwdi", "tQwCXQyksHHsbxbQAvVLdIDTLXJNGhDyaXDhefTilmdCVapIkiOazevJMsXzfnabAAiNuwkrUyZZbmgV") }, - { XHDR("reohsynqwjzmtfzmpipj", "dtSHikdfTSNPLt") }, - { XHDR("kpc", "tZWKzkBsXfqshBMQProjdYNILkGvpMZLPioKMfNPzMSePYQVTIZtPyN") }, - { XHDR("zr", "qBwRwGcSewNgqNPLTDohnPGZKiVOSIiW") }, - { XHDR("xidbrdzmmtp", "COpQTvJBiUmFGbNjZeqbemgHtBlAEDZZljHXqwfKRCIeODai") }, - { XHDR("zggneqzwvercdgta", "gkEKwagqQSyQYmqWOmridzVIXouMazqcqICHxYZeSyVGVrcbYHXsQmcwLICncETVExEJCDEEzvwPkOf") }, - { XHDR("yisyjxznwiqlhiygwznp", "EbltfnaydoTxBF") }, - { XHDR("dzlzlkwuwkuhqk", "YAexZqUUrnpzuPBcmigdWgHfsLouovGgQciqTZbzcJsvhRepiJoaTqBRyZTXRdOkCay") }, - { XHDR("ycthzcnbpdrqhtcnlvvc", "JuexItHiOsrlofHghOGIXmzowjPmacHhjqjHEvsxvQhZlTKxxgxOXpYnqrrNSxpqNCPHLIdPUOeeNlZ") }, - { XHDR("morzodfp", "oCohQtdOrAWsikSGpAIkBNscNxAIDTjFoqEtuYzFWPzzHPeWneHpOSRSUypJEXVgrUvGtmHNzduLOO") }, - { XHDR("sdasri", "ILSFprbztHXXaMKPpMPNkLkoFMyuzHwXNFvyNKBoMaNdCmPshilKEhzpfgByknODHYSuAP") }, - { XHDR("yahtl", "nQmgDAvTiPvsMITOvcQbHlLi") }, - { XHDR("zzngrv", "kTieuKQPxAOBzNBpexQphMWbhSqgMscFIEVBPZLdQCnc") }, - { XHDR("vmizdgywrbgcx", "bAgDyPOmQFLMonIQpVdTsSbOQwsnkQMfPMOBEbxHuYogEGAaT") }, - { XHDR("jul", "AP") }, - { XHDR("e", "fhIDGKlbjurRvwudWJOvNipXXRv") }, - { XHDR("gkapjnf", "PVjBwOKRCBoyeFnokqpaLAWEYJBVbuqJlbrEqSpzXSQURNIZVuDbohNMlXulcsdfCExclVJRxqH") }, - { XHDR("vmufpjqqrwqitfmi", "TnenIgIkeRLikCCKosVkypzOzYGHVtSKjKEjNdUodjgENeTbCnMxGZYbFOKCIooqrnznEyaOJxxitrD") }, - { XHDR("zfvitkgcxxjbxsneb", "dYfdJGyxizIpKKDPc") }, - { XHDR("bwdlveit", "atSOUQSEkTJdSyYaKSblFvROZgfkBIQoFrfSIcVYBnaJOBjk") }, - { XHDR("liyriwlj", "WmIWnXv") }, - { XHDR("ruayyrtoqpviywmhs", "hQBJTzXldmUGbvlYWAZOtmdeUKAEe") }, - { XHDR("w", "EscRAaFDLpkVwSxsSmrxvaknSafqoniUG") }, - { XHDR("fshgdefohtkjdhhu", "JrJayyTWeZbJwBbfBWBobMAONLFYUgnpyOfRGlMCTqbrJkDjewNkByfIzPMUlLTTmwcmXWltpiL") }, - { XHDR("rvcncwhxj", "LgWMppmYa") }, - { XHDR("wsulfbrephdwohir", "XlnBvhICKVEuTkRHrvxjDkrDZKCjeIZOYewoyFXlkmWRWFBi") }, - { XHDR("wgyrchabfcdspjk", "NcPmvjqns") }, - { XHDR("icnzozxjqrvnl", "LhhuYuwqlQJQrckKsAuEqKvLdOMsZIsypCYmWntxubFXfDkKwqqRLuSbOdEQeVonYOl") }, - { XHDR("lhkbxezqxgetmqqhby", "ACohJEoNyJWvwfDgjDDXPmUpPJuLpoZgpCazmaK") }, - { XHDR("rflgow", "YkuuvzibWfkTnGpvbaeAaIyHYHSkNYitPeaRUaLbkfmsnvQEfgeTHsiBfYFbDiuiAWyBzQzED") }, - { XHDR("sdtjdtjpgzxhbreru", "SrCjcNWghrPgRF") }, - { XHDR("wcdqtrgvtrrohb", "JyJzEhetvftqOxymuE") }, - { XHDR("yjxvzflfhiluneqsvuz", "MykUjCfIpgEtQbcPZCcIQuMMgavztzXHcwIJOkGAIcfEqCdBn") }, - { XHDR("gpzfmlxas", "jKkOlnfWSSChsBPNieovMwIlLCywxDMqeWuTpdvxqEp") }, - { XHDR("nylkgjjqwsskelaycdg", "ekFRbrdaYwPtqkzgGnmzpjGxpGZwfqmRdw") }, - { XHDR("xkvcchbeinsiafv", "YxTinNk") }, - { XHDR("mhvwpjovquk", "vpjpaGJqTsgttRBDbyukxJrz") }, - { XHDR("hjtltoutur", "MEttbLMevfEZla") }, - { XHDR("wzubmqveqjedrltl", "xvNYzTlRExLsxt") }, - { XHDR("dihrywqacjorykanfl", "IpjycKKfLaDUYpSCDlnuMxaNKLwyTrqzNrDkWyEzCYakClDvtMjkjbmNCxYOIACLvRnitxIzYyFfxccp") }, - { XHDR("yikvondr", "lKvbbFifdcQUYizvVmNTtcFqhWDRPrPfsoVCrflPiXsBWNNOSQwrdGpmPK") }, - { XHDR("qmoqigqmqat", "wPrgXJjldNixvOBzitrFixyRmcoaiKAbXepc") }, - { XHDR("k", "vTdgZtyFZABjSaXCyOzggBTjOYmdBmKZrkfGYDBwhsAlxjjLqsUMOieaQgZXoRkIBbFLECvZLsCVHV") }, - { XHDR("cpsybx", "MQedxqheQXoLwereufNSZBWSUowqTdCsSOuFgfnyAVyD") }, - { XHDR("usbwdkkyprlgerdmvfb", "kTsuxRIJUDjrSFcSxyYpmrkppvygCQNuAMLbMDDYqofoxONZTZJFnRmOxZwTKkctEssvN") }, - { XHDR("nypgtvckjbalg", "xdIdduYgtrfPbuNDtlhMqNYXI") }, - { XHDR("wobkzisqjwtng", "mZtCdBFZjGnmIPEoYEGarzrcLNVkNvtjIpCHlfcrTcDtcOPtyXWcFTxwB") }, - { XHDR("tvlkzevdudtpns", "SwdeHNPmXLBwiGmHILLjFwgWQIZdNp") }, - { XHDR("uvglvyl", "GdYvZaYOwPvtMnxMunEdeBtOUGJSCSlYEfmcQjzIMhiAbTnsHGJNjHoLn") }, - { XHDR("qvnlhulzklnmsflyoxle", "UWmnSlahXTcbPsuaVpuSgrloozFcAcEFYffUmuPIhDUUKUBdxySNvvDIWGJgXNfHe") }, - { XHDR("rz", "VpuVNMxNPOoegZKhMxmJMvKfQCxqEDyTCLiYiqIJTtzkHiBGYxmtYeSIOV") }, - { XHDR("fytwdie", "Vl") }, - { XHDR("ebkbgectbcdwrlsqkcw", "TKODutQtRWoQQQqZntLTaLrlZeInfmdBPbJTsJjMriGBiIeFeb") }, - { XHDR("aldjoobkhlhif", "omQKXYmNcmvk") }, - { XHDR("zfiopjgueflonhlpvkb", "GjXDVpgnxXZrInzGSUQxP") }, - { XHDR("qbvdkjntwacwvarvkgjj", "LDwKUDFqehowhiScZnxQURiOcVowacEUsjsUgbVFIVaFFtuHJUubfZpUxjwmf") }, - { XHDR("zpokjukwqsngh", "DTeGUGEWEIA") }, - { XHDR("mjouowzsdgwg", "EZRRlVadZIHSdFpEAtGJZUcSoSjnUFgDeCkZJpGcWruyURO") }, - { XHDR("qyojevrkur", "rrVILZAKTdmmPYAjAnRxySFEY") }, - { XHDR("gqrwsugjjffdv", "YjljHocYYHQNwEFkUOWVKJmpdtLWXhdAzUCVCjOodxnGVJOmzGzgoWZqCNRaAfGshWWaUaAHibL") }, - { XHDR("bppxdgmedsjexvrwyw", "ybBRcjBbWEuORdGwHYOAH") }, - { XHDR("jiwvfsxa", "VMNgcPXQPgpzZuHYGtiFqyLSpJfdiZmjNAQTftCJLesmnXPInBPlOGDmpSCtSxprDZqzXLeLyIvP") }, - { XHDR("hjk", "riKzQttdveaJgjtUxHEoWyNVUPSjGLPWzpUhyMAhcTpcprQhKOvrfscawSjUKjFyDtbnrmqbsBcKmep") }, - { XHDR("wno", "QkFagHbnOrSZxreYsgxhZQiQTstucRcYqAGdXcV") }, - { XHDR("animmptvlfpzehho", "AxfMqLwnSXVRnjFcCIivawPwPJpsAWTwVpUHEPIbmqpcAaFBHFqxF") }, - { XHDR("bzriiu", "FHNIUapQGfVpgnssjVLwuMxPXokpSpigvdRVLLBsaAEGImSfkrMT") }, - { XHDR("zviuoigtlikjvcsuorpa", "zjVdySvdRhnxUTDuZzhrkL") }, - { XHDR("j", "sLGCRXwINUEiGkvyot") }, - { XHDR("f", "XqCrEKVzxkS") }, - { XHDR("wqxkwvqbz", "SdnSugpoQBEQZHRtreKjPrRmNwZToMfCXw") }, - { XHDR("ngw", "wktQCctgfzXjflsmTjqYYbigaNaFZfIBSPhNJoVmxxcXoPvMFsWbOVTQFpItLGsIxAyCWftcsHXqxQml") }, - { XHDR("ao", "pRKlFciKzfDuPSepylWUqpSyNYghdHopXXdGwpstCgebrRbTFAVLjDPU") }, - { XHDR("vlbxwpucyjx", "mnsdffnBLhqkdGWtTVHPCKblpMkwuDgiDZdWxfFWxqYRWejUVYvoNDKBIcmPuTMK") }, - { XHDR("la", "JoumnXySSxNMTNDwZjelZpDoLUnMIqmmZNFrDflb") }, - { XHDR("vctrsjwvvcrykvks", "tCkWuiVqehmWSfyHUKzmk") }, - { XHDR("jrufjhgiakjzrqtybkjl", "VkdDcRDEtagqDlVNDleIBTEbetnlpWSqlgkeboprYMIOWhYQQkRcPD") }, - { XHDR("e", "rLXUuryRYTnFISonXDRqcMeDFEwwKsdTcqsnFolaTiLKzpQevszaufrUGcAKxBMGjmdX") }, - { XHDR("fsfjheszgpwearoelmz", "ItJEhnKgFUqFxni") }, - { XHDR("hqekchln", "pyUmANWXyMCdYScVvlemU") }, - { XHDR("jnvwsutseadr", "vhSPuLKSgJYOBIhvSdVoEZsRNispKOCdFFYYLNFmwyBkuqnJDqJJkgrChqVgKxYwjhBETnVeJEEuWM") }, - { XHDR("tazzidsbaqeklrmx", "cnmtqAmLjOXaVOBTpLBwuqEJNoRgfuNJseEgbXRTTzWNKsCbBbUUXfjONVxHWBDqbVAJVYsaVBh") }, - { XHDR("jz", "WeiGxxgAOIFZhUjPuXPtoOMwWvJbyxvlz") }, - { XHDR("xbvymngiw", "ugoGhWloyMpChJRxMXpWuEDpsneJWmqlMSQmFgNoytEJAHVUuEWGceyEchvScyQUycLVoGWpTaQsJKp") }, - { XHDR("svdgxyhdejbyot", "ILTwyYkZThbPrVSphJHZkRnqylOrroFglCdUmvnTukkyOxoUsdkSVVrkIgMXZNnWPDmhnOfjxLSC") }, - { XHDR("xd", "aPIMjcRjIbmzvgblXHZfilonCVzsXtcxg") }, - { XHDR("jsmqk", "kntdfIOJVpbvjmhlQETKJmkAuTjNFILkSEgPtuKaKbfhVUMmpTGUfTwgKPOJBmwJg") }, - { XHDR("x", "MtywDyTDlfOLjvxURcoGnsbIXNeDyJuZsvRxu") }, - { XHDR("bnksjvpo", "MIlonOZGAUVFuoXJYbXSewATDOxVczRWPJxKfrTRWNLSHVT") }, - { XHDR("gpggpodu", "AZOlFUUyRoSwqdHlENKOHNZxlfKLyoTZNLkwRizLfQraXqrZHZydKUOrOlcXeNxglwIBOThcjCcQ") }, - { XHDR("bw", "asWpkPsvjJBXgOUuYfRtmBlrTAjMnjsBC") }, - { XHDR("phnubchckwtcnwsuss", "gJVImQKtcuQMBvfmYUbbypFcsRLSbssIlDQrcDKAlJghKupcjzFCMWLGnTilyOS") }, - { XHDR("idluusgvrrcydoigg", "wppBGRQAjuZWIjmXh") }, - { XHDR("spqpv", "eHkcGRKXRzyYBDFoUVTgDOzvCOZIefrrFNoJCKSDidkAfhhMmhKIKCeCDEYDdZzzxKd") }, - { XHDR("rgulagqyb", "pMSPiBPPjcdYYzDxlYmUPpBVbAVDbOQZhXSSm") }, - { XHDR("qwbappl", "iKwyxHWepPEDuPshqYVaLg") }, - { XHDR("cxzgbazesxfnkawpwl", "DgCRkYKvHQcVOooBUrFBRteSXzaZvLAMagO") }, - { XHDR("zyupwbyissx", "dIEwNkQDQsdnGPryVMrRPLSlHkIxoEJLGuXApAApWJEiBGvY") }, - { XHDR("rypx", "yMByKmSeTuNvjaxHdJcvAohKTaStuCMcFhYx") }, - { XHDR("haheevmmx", "bGFuCruqvAuoVRQpcpDGKbxBNgXz") }, - { XHDR("yauwjap", "xOYgxJYGCJtMXf") }, - { XHDR("d", "LXhUgNaYiMgArSSscLdRdoqEswsRDvMlNVgZLCoOvxgVgXuCTpvaZAHkoonfRVigGe") }, - { XHDR("ksgepfr", "QtbEpcIcTbfCITAuhMlJvNJHEsYkmzOScsvtWJ") }, - { XHDR("ozoahknfzkcxws", "zPDLVHOFfxLEApmDAUuoEzKMunaSQHmBuLOvogpWPWaLj") }, - { XHDR("k", "HqszZLAdJJOQw") }, - { XHDR("iognfjkzx", "lViJdCMdFVLjVndQBbfjdHPuCPxu") }, - { XHDR("pgylrgdwtv", "sAiZNgEBUQqrohTLDWthitmzyRovVNjxlglVrEHExVFtSJiYiEcpgDKFKBgORqRcKKYQ") }, - { XHDR("lkgvnbifqkwmjrwcjm", "pxbYpltHHCbqVEezQFUPnccyvKsbXYlqRtNkWRFRxYOgNDhdzeZiPqZkripNLZxRDZ") }, - { XHDR("vrtjc", "HaZQEcHzVEUYXGkCuGtwvnVoRbDErziSfTausTolRiBcV") }, - { XHDR("hqrxo", "nHjAmMtAkDpHdazFtUEZKMVZsKvgDLgSweDC") }, - { XHDR("ftdptptmuficgmihrn", "IHjwASnvRJlMtRKkrZcBHqZUGAEeYwTBailviNstBpTAGLZtenwuKjsbZtsXkhnNkQpEjaksXSZ") }, - { XHDR("zqfozvsguaqeyr", "O") }, - { XHDR("qhwecd", "GWhHfVcMoPpMXMihAcucptemRGmnyQQcYxroNfWdDM") }, - { XHDR("nash", "eRzDaulxtDioQhbfLutuNWrsVMoSAlABPAlaxSiOVtGpZwXyPAgkjEdTRajHSF") }, - { XHDR("oheqoyhkfjzobmtffmru", "OWMWJDUUjBjiYNESAmcDmXaCjpHWRDqacBhrOuCCHWDOZINvZBGEyAAXFxRFcuGMRZYNtvDYonBue") }, - { XHDR("pwvlj", "WmmyoDdEHSNQvjssFZZnRmLgVqALyWMyhXlHHfdOdyNmdU") }, - { XHDR("aomljyayaqusl", "GapqwrwiBLvihRCombd") }, - { XHDR("wsy", "KysXFymQgmlYluMRogxJ") }, - { XHDR("enfeiqjgxnnkgkiki", "DTa") }, - { XHDR("ez", "yDMxqjiPLrqQJslXrABoXHo") }, - { XHDR("cfuex", "FoOtrNj") }, - { XHDR("fvtspkyqjkaqplxqtwj", "KzCLCATHqTxdPBDlOWEkbVYFpom") }, - { XHDR("sbbvhusvdu", "bWWRisUWnihdySytXzaTcyQmpGhZsEnuFr") }, - { XHDR("hui", "uPQMJKzqXcDOGnbiXJjzTePDZxEgfJHjuKXJZXBftOyfEgoRDZZixKlGyJK") }, - { XHDR("pegepkdbnexijj", "UTxhRYVCfVtMLiPGUGwqAnGabbzUdIqosRmVQbNryatWBOvlGBBdoYM") }, - { XHDR("dnmqvqrf", "RcXISNjlWCpnuCqFZdkmnGhhsxBJWDVaOnXGuRngpCbmcbKSvzTFUZrgtRGqKcyX") }, - { XHDR("rjeuo", "OArikvFlAsmmWYJkhKpJVHMSLoycPTKpnqNl") }, - { XHDR("jj", "afaIIDg") }, - { XHDR("sbyaspqatm", "FrsmFOPhqBXIYZZkza") }, - { XHDR("ehhwdvlo", "RHguGdiAoVxWEcg") }, - { XHDR("jkibvihgwzbyuuendwlv", "JGXSU") }, - { XHDR("jgenbiqaxbyirdw", "aTNDvIODWgSGxJuMEHfqfiiIpOFbNXYAQynIcUKHabEDFpwtTMeag") }, - { XHDR("biauqoovtokypgcbcmp", "rSOBNxuNwBucQoEmEWASghXWQhLVVjfRqkcIsEfhBQpEuDQU") }, - { XHDR("ftliubninbgknp", "EAKoAQXOXwuZOf") }, - { XHDR("o", "n") }, - { XHDR("vthed", "fCghKJasMLkNYvwWPwfxOsAhXeyHMKHhuYihhieZjPeJcKWnQAntNipUJdyRdgYBWlrxSvAtOygwZp") }, - { XHDR("rvxaukyrbqo", "cd") }, - { XHDR("efqcuvtwvqbsdk", "sWIbdlKgQHWVUKXPhZeOhXDprrJJPiNvzCZbjSxLSszZYuCG") }, - { XHDR("gdn", "xblBvH") }, - { XHDR("sk", "intz") }, - { XHDR("wgbwszqxsmwtceulnad", "NXHknwUTglzHQYnZjoWeIWfDbYfGISUBYsEqmtHtktLMXuWqwdFPIihCXBrmWdKrDeAvlHbX") }, - { XHDR("nqwlw", "jVJPysBFKZoJEvDdlhrHqgQXZywNEsgiOtMGmreswOwjsBzBFGIBNKriigL") }, - { XHDR("kcws", "dtMbgUrpXZeaqqPjPjXRpQYCeEGQCqSdtTGz") }, - { XHDR("wyhvuxifwabzieefuwfz", "VSlkztqPlojvIVxFJeoSBwiTMWQTSbpRhXPCxGrNLSVLEobUtOelGbGrLIfUCORDVMFZFsvELGDgd") }, - { XHDR("dmehxonkecqlwlj", "qHIIVSvJopxUK") }, - { XHDR("x", "HfzpKAXnjDggwkEjVwdPqBX") }, - { XHDR("twnntiyy", "hVcXGosWhJRSEobxaNejvheASfeKEYnQfMwTQPJXkWFNrnNrBMNPiMqXOeu") }, - { XHDR("phazbr", "MdlwzaQNyCZhlvwtGJktjvjGaDOXDYInSoURRCIHqGvjdBtWmzHjmOgimTjzsZf") }, - { XHDR("wxrzoxq", "XyIiZquAvFGfNcgyBElpSozPMFGkTntqVMKnBTCiMUPywjaYjdQjvPHStiNJm") }, - { XHDR("uw", "RGfGQFnGgJseyqLsGSbLKzMqMzrybyfDRUYcwhcGhdRGuRmypKTk") }, - { XHDR("gitcbwisefonv", "EulIlaJFAfpgu") }, - { XHDR("sgdjixfqi", "YE") }, - { XHDR("bucadiosanceb", "CnPaXpS") }, - { XHDR("sxthd", "tSOiBldnIkkBskSoOogpbobWUXzINEqNKlUqmstUOsMDIIIwpUNALTFLAmhPKEShyMKKqaPhjcswD") }, - { XHDR("lbn", "UYqvzcIUPQhztyUJGhlscWXqgbmf") }, - { XHDR("ssfrdyveehjagd", "ev") }, - { XHDR("mrohxb", "PVEUZQNFQPKqRvdCyCrJwrsHNHXOgv") }, - { XHDR("zpp", "rtWfYDBagSZPtImxjKwtbhtgAeeFDrGgUlpRQOUFZXIxlBgNDkXLiMJwXJLIDjMOMEw") }, - { XHDR("f", "lkJMNSLPhMOEfFTzvFDWgTmyvTuncIELLEQsorAqIszysThqrqOKfgPKDupztgXLcdwZJ") }, - { XHDR("ey", "JGQUPRvyNCckQT") }, - { XHDR("konx", "eZwhcuiimQEOxrkBCgWlZpEwnYeoPSFkaphi") }, - { XHDR("iylhrsjmsxbzj", "CjxdBKwFzltHAgEPMtnnsBf") }, - { XHDR("djnxsbegjprnplox", "jiDkSXTqWGdkGdBDukoVHofvNFunXVcZyosQQpDVXZPKMHIRWaVsGvKFxsHOi") }, - { XHDR("nsxbppzymyr", "zAwTEAJFNNnTWNRuEiAKksoAyMlFyunNjOgkaUGERqAvOFzfqdoBQvTcTM") }, - { XHDR("rbarhdxjnvwwr", "dVLGEAfQwIZNvxlTYJYwQocYSBkTicDDXqcnDzRTtnMAqMveogAhDkxQvBJyOltuPbVSPmkJH") }, - { XHDR("kjavxfrwpikirwpvsqfx", "zAdbiBvowajqMvanZvNszapaWTivGfEUTAMqPYOLjkCgMXCJoNYF") }, - { XHDR("txemmnjsk", "LsgvjULzGWcRqgRRfdgfGVeLMgTdiyObwpnJ") }, - { XHDR("fguypbllxtrnkxnais", "pYMEqeISJmpEnZjxWvMuxqpOUnDuDYKPuqsJHzQYYWPqpesc") }, - { XHDR("msi", "avVMPpBqiTwUSdQJTOlGbPUnVSWAOOpsJmlZQpbtNfvBSDpXJRKNsSvKTMDiWDlnVrNSZotwELlGW") }, - { XHDR("aoblqudksjnot", "DdqPjmnxwyiHDCJnYgePXLothUGZATSBNnsZiyieRLsWvaGyTYouERBzqcNh") }, - { XHDR("bmjfaaederpcgord", "dYyfDUTDDbUaGXbMrjyUyKghgvOiDyjLZRhuzR") }, - { XHDR("pscmuflteommkrrjpdf", "fePswGDMKrIJUDXubicLtZxVVeHzjLIDkDamcyteUyIwxAlDVKqagKNmAafKMV") }, - { XHDR("vtxfdemvuyiwgzrj", "WIfdEclxKTL") }, - { XHDR("rfnfxsmzoamhpbzzor", "HLPxLTmpuwSQLghGolntGaeFpujsClblmDPDbPNpZRfyYpaqzQdjZRcdVDwL") }, - { XHDR("lhlsaztpi", "TSsTtrZRgfzmOPMoGjcmxxKBQawFKEdDmmLXsQVzmelffAMZSakjqqTKBAMaJBoJLdIAVoJRwUfMf") }, - { XHDR("eh", "HiMGHPndDYCqvFu") }, - { XHDR("ts", "npLPASzqirorshTFvcbmEsg") }, - { XHDR("mvrqt", "NvzosTRKAzfwEkpTtxcOWvqi") }, - { XHDR("yxknhmxwlvnhdevgwd", "XAoWY") }, - { XHDR("ngmztopchk", "hKZHCuVtxStCljFxYFEDzXpsCwXKnNFkjXtEqzUVyWsQmYnOAiELIrpbV") }, - { XHDR("jcvpffzczcspx", "MRgcyRXysSJiQhalFaY") }, - { XHDR("znflssacisjcsfosysod", "dNUFYkuyvTbwZSKWpdlqQadVAfLSAGuMKqGUJgHlVtfBsbrSbKkVsYnqgydQghFffEblcKyG") }, - { XHDR("ebovmbfdyyil", "BFeuhtFfzZBYjCQAmoeTWeqpYFcGfRRHlDgLxLskzvEcPTxfIjciKyIioLlXOScf") }, - { XHDR("tdjeorzmf", "YQnldRPzErwGWzRWasldEDOljbdJOsyhzELjsufVkZviOnloHbbExLtnN") }, - { XHDR("xhvvslbaraq", "YwV") }, - { XHDR("mnw", "VLJTUYFyqpHEwuRqKsEunFXHFCqaAoXiRzzgN") }, - { XHDR("kmxmfsixecees", "AjrXvePlmssnzzXJpUFqNDrWIztpTpmWgFYOJHwvSUteCNxWyYZEYusGJa") }, - { XHDR("oojdekdntmncyq", "dWkwrUGvuyDmQLtoZVMNddimuJNDBCyeRSDasxSK") }, - { XHDR("cylutzdnklkl", "WAFnYqdkoJjRxtEfUqNmVqrsQrHOXnSqLDRYGgJLmZEEyflMkUXVJBHwPCTZrtORXsg") }, - { XHDR("iorbfbma", "uaWEUGkUFulOHRMmLAT") }, - { XHDR("kjjsz", "KVHVvspAidtwGiBNTBQROyYryaMUKAeWpJsirTNVOpqLGTiBhZcPK") }, - { XHDR("bexvxcqlbbzpfwplp", "MgXGLq") }, - { XHDR("womsajwovq", "tDRyCCDkouLXguYOEosgQsgCQfxgpTwfMqBLzyCPUDWihMSlLuqpIltALuWHvBlhYImxoTTlQZoMYuaf") }, - { XHDR("mharomka", "TBLDdf") }, - { XHDR("miuu", "HpKfXygfoSOaDDlkARppWGJjumCkcBZsidSMRhlVgqsOTvTWfdWbrOuBOjjTxRAVOluJVLknjKaGxj") }, - { XHDR("ciqzbrpxyalqq", "TuTIXslWgkCgZLtkL") }, - { XHDR("szogukvcajn", "qunuDSUkiJRDKNCqQapUZ") }, - { XHDR("dxpvvskwerdmaotx", "kJBwRmxrSdmNRmrXexKwtOqAHpvUCUFpvCKSMgNrUFLTCYpPZuMNsO") }, - { XHDR("xrorkagjqwnw", "cswxwkABXsTloBhtFkYFegnMWPYVgqGXJsAHVAcPlFHrnimBGafXmodwrkfNV") }, - { XHDR("jysvl", "HFXbIKyRz") }, - { XHDR("pmznutlhubierhati", "iTdjwdxZueiwcbZYQTKRNGKGv") }, - { XHDR("dkjnpqwcijgqfdrpuw", "kfoOEKeNqcdQlGeoiNrjxJKzswclnDbdxtWJOCEBtIuRsUJlAjdEFpTytXALMwgGnLVPAVp") }, - { XHDR("snpikkpugtrzvkwcyx", "TSoCSXwkgnBQCKSZrhDCTcZnBXTmNPTUzgPForOiZZgqKHIMeao") }, - { XHDR("ot", "NvKihJwh") }, - { XHDR("ob", "NrXKwcICeOdvZtOMbsFcomigApWXWDevSwzOAomLHcPQjoHecOCkiFzNjyVbuXVKVBXoFDf") }, - { XHDR("kkfdbipcjlsbjmzxsy", "yfrOPzVPJxddIQtKniJqalPRBDhCzacIQfQZvlKactpJ") }, - { XHDR("usg", "etYdBEKfXPGzwBzUXyANtxZXgdkdzuuIQhfcfVXqsBrJxcwjpBNUuCwocYScDHPsYwwBlFUEV") }, - { XHDR("ceibrtoeosfjgioqjis", "ZFSjSDsAGwTgKMQhSbYUuYG") }, - { XHDR("vytpqexwpkzpgcwf", "mpAZcriRrqkoRmWYOaNzOtGyqIXqUYzKBJyinESMlthmDIUIevtJGSHTq") }, - { XHDR("gztyx", "FvcNhJ") }, - { XHDR("xhnhnfvojga", "gtqaSvPqveDAaTXOLymMNTsXGIqmUwcoasXUGD") }, - { XHDR("hswnnpzlm", "SEWyVlDGaSdumTttxfry") }, - { XHDR("pxvwzzimqfxrpteqdgiz", "oDGQCbCARAgbHHgEbvYgseQrCahsJPhXVNgmSnKuKGSIKukXoDCvTBDYab") }, - { XHDR("swckg", "kLu") }, - { XHDR("lvgxcelrslbn", "utdrtYxEGyjuzudcmibRsBhtsUbanHKNmafZEqovKdyFiepXGaShSJyxBUoitDiYNajUsZu") }, - { XHDR("szkihoapqrypu", "UGVfCoOyMDEDgXkBDpkjOSqY") }, - { XHDR("uynaenlkrclllarwu", "PZNlyu") }, - { XHDR("waz", "nzvATrDbvqVDnjPwPaXEPuLMjQnrzg") }, - { XHDR("fry", "yRzMJNoZlyIFfNxbCyHEHniRVsbUvOUBqzObApDPhNdjqXIrXTFXjMUMmFHMEbUqPpLii") }, - { XHDR("eundtmcjjoote", "elfHNpHhxXbVmajiTcLPZUaRCeUiSvpxZTBvkLOaCseBDHXxgtKnftCvNfemQwybegoTVnLxqea") }, - { XHDR("ucjetgfzlbrs", "XxoyzbZwFxICposHhEtEErTkwodR") }, - { XHDR("qukicgene", "UoIwZinqWRYVFBbfBetzhpABJnYDhbDmgRwsGvx") }, - { XHDR("hvbipyltqmj", "kGEtLElXKliYTEwbTNsQNjOBHzMYzCE") }, - { XHDR("ip", "lcaUHIfPT") }, - { XHDR("jwzbhwq", "SqGBcDiKzWIIHdtnR") }, - { XHDR("dowfwj", "zAgSjLqGfyTTdsbKdsfNOdHWxSWSfRlmyNOmXBHvWZdwNtnU") }, - { XHDR("ywtgad", "uezcTEYijsuUwQZIKILYyddezIyUs") }, - { XHDR("rcar", "tJSDRYqvzQGlDlMKAAQuC") }, - { XHDR("ugojfozpak", "aQGIqsrJWAhyRyopJkJpCDBkhipeTrwUrtIauBxXMiIKebewCZfk") }, - { XHDR("kmnyzbiymkxwpkrjzteg", "oVmKcGHqMAkOkCZzKWIjks") }, - { XHDR("thttqgmirm", "kGflRjPYmkUhautThFnUXAzkVjKRvDMNXN") }, - { XHDR("h", "ZKwonOEBIbaUdOgsfHUBTgOkuxfsGZRRGmVttG") }, - { XHDR("bayvzxuqalqioca", "bAtgKZeMMxHtmueCLlSEapP") }, - { XHDR("zbwvetctvcofcosesjlj", "GypWNJZqGXgwTRYdpkPjfJjvvtJxKJImLRs") }, - { XHDR("ridczimcknce", "USaJgHhFdLcrzNpRT") }, - { XHDR("tvqgmymjcbloxvbmpdgx", "CrbEHznyGgWcMfKFZGmpDxFTCw") }, - { XHDR("egcbnrqbrgndytvnqwse", "lKKCChLheOLMsuwhLEvCGiDIBuPiWrhIsbyrEmenhFCqHC") }, - { XHDR("ykjcaosrhcjwkz", "OgihGuBFiTKtFPmMphrsbGlnHYbzSHeimfdEYQ") }, - { XHDR("hbgdetvs", "GgnukRMztOJQCxeNWnMcUIrMKeltUOjCrPCaFLehAVJXAwboBrpOTEke") }, - { XHDR("qsybnmpqyrijrfkh", "nOrGZguunkdhyPSzYlmGBRCFoRAlsFQN") }, - { XHDR("vnpmgygfswaxu", "YGGZJNXttRKhvrcjgPCoGjgWLFYtGQkCZUUcCOODDphjlaGJfQIJn") }, - { XHDR("qcditmezgsw", "ZqjWBORlBvlf") }, - { XHDR("fnjmiilmukxlm", "y") }, - { XHDR("pj", "qcqZzfEFDSVIAPGjrEwAWKpMDfbJIevSLEKnIKSmjQJpxZCbTjMzPIgAbFecXmcTrUbpdIWj") }, - { XHDR("lehufqfjupdr", "NvdkHPhlbWipgnYwmXaQDRiGlexSpLQ") }, - { XHDR("z", "IjaYWEWZCqSOWzaRyANTImQlFHNFRAFHuNoMXhuWqzcDPBbWsNTsPkBzfMvOVt") }, - { XHDR("qlpmoym", "KNspArTvshjXamEdwEqUsZimQxcFVPsFEsCUDZDyeJWer") }, - { XHDR("qdsndvcqiflaxq", "DwITvRxYizmaJsAAhoXpSCnRdqFQgcSunIFQkw") }, - { XHDR("lnbhzqovemmqm", "kLXCoywxyRqtZiRsiNAYizdPMbbfHxDqo") }, - { XHDR("eyqcv", "FBKITneyatiPQAxGMraswuIQzgtNjZldZCxqZqq") }, - { XHDR("postwrehyzsckhtsbeoy", "YIRXpUnOKaDJyrWBWCdCcksuUST") }, - { XHDR("d", "gtXBLEXISHNQwhxosYjONNOJarEowFPNsZ") }, - { XHDR("dvspd", "kaolqKyBGMUlKsTJnsgtaxrVqoPpjFElRXZeQrJw") }, - { XHDR("totqteydmsg", "hXKphnOwMHcDaNauTnBpDxQFxZhRBMmopHfveiZnPMpjhxxIrwulZuBSzVUoHBwY") }, - { XHDR("htqfookqvdyqqqygjf", "FyfcZqUyPeOfhLmJrLFLyTBuIQgeEdJjpIhllwdMMDvRTsJdgrsYhVxaueCfNmSEnYOikjbvN") }, - { XHDR("ctlt", "LUITYmMnLtVfYCPblGsWfGoUmoSQ") }, - { XHDR("qijuo", "ZhOblfImvqalMayDjngJDnP") }, - { XHDR("mpqnoh", "cvoRYmTvnqcuThtBSTVrrxmSLHOYpiOkFgTKt") }, - { XHDR("wfkezdtaecoqkaihe", "YSPpZUkYCFvGosdlWrNJhQCNSdnmyRgyweMpLBJxovDCaIGMigGLUHAvfNvaaeuLjf") }, - { XHDR("ylfcftybrjm", "MuCjjSkxYuCivQSSKbjxYzqlOPXObVptQdANDURgnRcBrhSDhOm") }, - { XHDR("egjikjxczklxwqtfpu", "VRVvsjjORqrJOmWprafZeeqFEPBhTraplXGyGzDmh") }, - { XHDR("lftjjaefrkmmwzeccsr", "EjonKeeHRxY") }, - { XHDR("ha", "xXXNgUSYxjDKcAAcZYNrQGiXN") }, - { XHDR("ibjmpddhr", "v") }, - { XHDR("wkncmgmatko", "fhTFSXqCEjOFjWDuZiPbXgqfgXLEixjs") }, - { XHDR("qbrz", "qGMlHBDB") }, - { XHDR("g", "LQvZhwBzjdbRUqkPrWQPeZLvSEvmgqMjpknlRrpolnASWymXPwhgUhzLNBWvPylGCB") }, - { XHDR("jb", "QKGtiNTKawekjKFXYwSAylDkVEHhmOTQTCkSjaXwLOmQhSuvcKCKYomhlqfzDNh") }, - { XHDR("jnnknqhdi", "BqzzmtPBCqxOvfBPhuML") }, - { XHDR("xdrxmo", "JobASkiulZrpXVbldUivXVn") }, - { XHDR("huknhklxuxdvnmk", "oZIplBzBiSlHkleqNfYacPVDxzEnXCaW") }, - { XHDR("z", "mspwRRcuaIUezCWNpb") }, - { XHDR("drztxejwtmbfgmnyjsns", "XZpWseBIHISKgtXHXvwkUMXhnzOWXqxwaIwUyycwIQCjxcXlYIuTeOptCrjJ") }, - { XHDR("mpnzoioquuudqlwghqsa", "jScITAXVPtGJMGsvHYsKCYbzzjtNeTPBHwlqKbmOybDhskFNDlDrgoofFQwmI") }, - { XHDR("ute", "cIaPXLmJrcbOEOiZiaTJaGdwvvlPRcGRGdUayNMJGtwqhUazPdvu") }, - { XHDR("wbsvynxgpv", "fMBnyDDYyfEmzOXZwoNWdPyIorYwTAPzpEeUcyVtKkzKbyFcgTnRsHHFWhvTudcKSUQFXWpdd") }, - { XHDR("ih", "rhRQ") }, - { XHDR("wrhtudxzjkuukf", "NqpMBoXMscAdtmItXHevr") }, - { XHDR("ogawitdahflgadhjjx", "FeeCtMMPhBEhFZrNMPVOIaxyULtcnJewxMxntZrI") }, - { XHDR("unutdutiyad", "eTFcXKpAQOULETcjixDBCbNirQjmZWdwXXzVycbz") }, - { XHDR("shgbwocapgilemgvlf", "jOEIKMyySTZFYcWPuOKJSnSHeqIxVDySjpaSVgIrSSbfGzpekzllWUhnUfUESbMibGZq") }, - { XHDR("xawzpuhjzseow", "FpcMcnpQPzFFYJnRxo") }, - { XHDR("brc", "WrWKjVnHxJQJeLDUnsTKpJqsKVz") }, - { XHDR("opz", "IpxSasmRvzjZLTfcrkjdiVWAPuTtZnDQiobxDzAJoFkdLKHSodpRJcNEuOKLgEZBeGDXvIa") }, - { XHDR("grfyzm", "IyniUjzipRZFnjqCwbXUtkYVpiBqVZXdtLzVyWbpN") }, - { XHDR("vjbkzx", "eKZZRarESmSWErQ") }, - { XHDR("ylxf", "YkJCAtVNzNWrHfqRuteiVRFjuhoWANpZtHIHsrPMvHwxSWUdXDzRAqhNdmaDNynggAfvinkkhkvmv") }, - { XHDR("qkhfajymkkzedkhogc", "TfPENWMPqaoEzVkoGbjNBi") }, - { XHDR("zn", "VgSzEMEiouWhpiGHxUAqTtvNpjDTZvcOznGeBKCOcFsGhnfNIyGUiBFgvxpPLUsHCJ") }, - { XHDR("tebkdvmwiizsyvjhpyo", "wDFIPSCRByezhLCMwfpiipqjKMusKrPYovoBSHDtwlWtarXQcKYlmoTnPrmDBeiQqHZg") }, - { XHDR("ifbhfslikgulcbdx", "IVdUUkZESJHyoEOVlBNxlJyBJyGstlmXoRJxjKjLVBazHMrZBYMFbZvLdifusTrVzjm") }, - { XHDR("sfuzpip", "YWoUGEgrzLbTFsIWMnbddtfKrvWQUYvJgpXVgJDAbEKlPYhDtNOqUFXJTfssXkfBQUxUISeJoBFkHM") }, - { XHDR("eqgtqhap", "jqYsnHqqMloTumQDcXWSeKtXulNhSlKiufARXKMqWRUdeEuhWkmZlggFzDlnpUK") }, - { XHDR("hztyhqqvidujbmgaqvrg", "osfsliAetALlMvYEjxlexrxGHmaimwwuvcMnJugRqHOVTBhEfQZPajWzHBNCeVquQZmxyBlyM") }, - { XHDR("jsdrlkqysvpwuwipla", "EfkfSEflobzKGmHXeTKkzMChETUrRMQdmwiwBtBzzgCNY") }, - { XHDR("joudokkhjijwewywet", "GqbSsjLliWcbnJYuXEMQjXVsKtZOOFMiOoCHGNTCBomcVIcIKzrx") }, - { XHDR("htkguc", "HvDkKZakZsjBykkxiXrGGLgZrOqHHlxArMaEbFoVTAOShgmifyQrTecUdRUVNKXWlEDE") }, - { XHDR("hcxpkegz", "txHvAH") }, - { XHDR("vbmp", "YOjoChvJZXOSjzyAQFZqfkHHdWnzpEIj") }, - { XHDR("umgbgxbdizxofirihzy", "MSLkeElPfGLuhm") }, - { XHDR("uwvjtlej", "bzmYnOvWakzAnuWAKmDtPuFlByZDddQeeyJSVoAv") }, - { XHDR("uxrvphjel", "wpolNxwCQedtQPVGbuwbgTZpNrnHhxPfldoVrVMZYvQlelkVGppDBFPebyoKD") }, - { XHDR("lbqphdgbhbeeykjrrv", "ETamjUKLcfQWSXh") }, - { XHDR("ofkjwaxgacbf", "ollBqQXnMftjHFQzfGeyhxOnDWl") }, - { XHDR("w", "jpNDKCeC") }, - { XHDR("dwnjp", "ZwjgHoNONvvSGFTiKoDzirZzjUlPndTFPXBwaS") }, - { XHDR("xsr", "ddksBjqaLqyJrTBAFgkDiGQnayPtVpOAi") }, - { XHDR("ubriwiuc", "KUthFZVLywRNjfPnNJEmuusAOtphVBgJHSXcTIIAHMSSrhpmntKFiJhUuyJMQe") }, - { XHDR("mpunspoxcta", "qjMDLxEwRjm") }, - { XHDR("t", "OxaaZuKuADKDAAJdKJlZRvOfEKYmzYVwRJuHMfkJXghcaYSgr") }, - { XHDR("ch", "fewVYTAmXmcVlwgjgDoUEMaktAPdjXutXnXZggkjvjTzuLAPUldsPIXSPtTFDymgSRbIzUWytFejDVd") }, - { XHDR("ccgbzlmkwkj", "goQryXhLxHTWAoLxIZFQ") }, - { XHDR("ofhnyttqp", "YJpYysFKpWgFfiFjCHoFjqWbSrzoFqtHsPIqqBNHvMVCUcVHA") }, - { XHDR("jhjgbirgdbtlxbfsxpj", "UBjLywqfI") }, - { XHDR("l", "caDsAbhuxeZTaeSdYN") }, - { XHDR("zzrikhgzskasiyoq", "CqiDiMEDVNNkWzzYYKqgSBBDwoyBgKodvDuSmkoAEhfKfdlRADLUjOYoMy") }, - { XHDR("jzjkingdqaokoft", "CLWCSmArFNKPrbeSLTfhkJOljOiqq") }, - { XHDR("gxkgivb", "EvKfBgPYNPcQKeEpKuMzmdaV") }, - { XHDR("zpl", "DUCyKIaCBKthBGjXBkXHAVnSUYfpms") }, - { XHDR("grov", "IOiwXIJIFmgj") }, - { XHDR("oxpbontar", "TUOMNDebEoOSuvVROXqbFZfdSgKTnbmWWZQXAMVpvpuJQyHwrEBjKgzIwcFzmVciIleA") }, - { XHDR("odfxfmtcmet", "JOiLdLSgbHYxuCCcvXhfLXDtcLHKOXpbpKRFSXDxvsuGPjSgKDIxyJwqIxtuXrpZHzZnwahxCNyIibB") }, - { XHDR("dcpstpuhwlhyle", "UdsvlcFrlJvlFXhQCMyhZTpSJJbDjmsw") }, - { XHDR("hueijba", "WRvTUFpAyHwgiPIjlBPPFMSXfOxpGBZM") }, - { XHDR("pgjjiakkbafujpz", "yiqyvUURKGUtkyVgxTyTBLKKnIqQDyBqBFbibhzLhSxrETSEBJnEhTKVs") }, - { XHDR("exvsezbhybzpcdaxas", "dBQlckBVKNTYlAjYUftLJFQvywQOgahEcBXaQjInbcArOUChrlWRUZihxczkXVbjbPNwEro") }, - { XHDR("rbucmsinvmqzrikhn", "MUdccXXvmLzJK") }, - { XHDR("zcw", "bPdPfsnisXnkUrsOFDJFzcoMqkvtkfdZbkNv") }, - { XHDR("cowj", "ROlbi") }, - { XHDR("jvsskijlb", "RlvgOqWJURuSVQOgnxsrhnPPcshTemXRweHDNjlicaVl") }, - { XHDR("yvjlobyk", "EGQSzhIwBzBiSePlxgTOsZLlIUDjQxLIRfbFRnqQsWzNCXUGyrlCRAyAAmbWuajnLbwfvvIAToFNDDMu") }, - { XHDR("qgvgs", "njJYYJfmBsKnUQiRCOekmrZQREjgTAOCMKapMxOO") }, - { XHDR("unupfrccxizr", "JAoYFYYKOJcaOoToDLJHEEKReNIFlCGTUaXUPblDFZnmN") }, - { XHDR("drisecgvjgxqwyi", "mlE") }, - { XHDR("ldqmneivqbrpthdnyyfx", "PbnvfnkOWYiRBQAokEzWgwzrXHyLrDqROHflXBRYGqIAfShuCtEFgGfdjDyZuYzFCMFBDjZVULowYLLq") }, - { XHDR("xlbxzbphbegeka", "NDESTFQvIUxfFMmJH") }, - { XHDR("l", "SUjruJGFIE") }, - { XHDR("pea", "GK") }, - { XHDR("gla", "jnMjHNqQETcxVrhcJPkWmzawFeosXLjGMZQSzONHwEdcyLDrZOzL") }, - { XHDR("dqddorqv", "eBjoxZRLsSJLbqEBOsnzCQGVASfaPhZmbMOvKchduvocFWbdQzeVVQNE") }, - { XHDR("gxuzpqsydyit", "shCuSLqvxADirNZxvuZzGEcTUbokhI") }, - { XHDR("nqtkirrtvkimkefpmrhm", "qyiBCVOFnHNRPVFSOyljWzXInyaQauqxXgyeaKsRLKknI") }, - { XHDR("zuyloxmgtkxljsdhnrv", "dVutwwoZQFTsfauGCOyZIyxBPJRHkNdPnnxyMJGJltN") }, - { XHDR("wjbegcjhonc", "NIyhrsZUCBectHxY") }, - { XHDR("svdohuiluends", "FhbwdemqNDvHALBGdPpaUXPoEMABPk") }, - { XHDR("oqazyubbcvbyyi", "STNtLIhSiKdH") }, - { XHDR("utmjubvairdr", "ffYotBQIJzLpWabGzMeUNlyyJaSFMjXEHvDFayEDlOaUWHbntgyPuKWcWtUzTDDhyNNtXB") }, - { XHDR("mrwpeejqptllahu", "yxpxvnPxGOEltQdAXsQJrVxhihEYSmPhFmJdnavMkCJtLxWyTcLAaULZSz") }, - { XHDR("rtsxmjiapesmr", "AYqDYaQFlJgznFRlCjwpmBxekUqeitkxfwOwJAYGSZhZReQKccfOuOfAtmaYcBNBDrhd") }, - { XHDR("dftggeaff", "uRaTYIuliOVtQfYDoeChRHLGxjxLVwXlSBjNZaQDwJRvpkQ") }, - { XHDR("btxxiydptzcjxppcexzl", "bwNOmyjtGkw") }, - { XHDR("nretzxjivopauqa", "HfskuVD") }, - { XHDR("yexxfjzrfhgnngmh", "WUdXfgJqUtUieXfWKRBcjRtWyUgWowBREYGVPy") }, - { XHDR("hchbxnpbgylzx", "sW") }, - { XHDR("krsaatywbxlnwhw", "jCFsgwufbYLZbfyIYwiKYevYRdCmAH") }, - { XHDR("bqcjwotfga", "DsFZB") }, - { XHDR("wcm", "SlBzgFqnbitkmnuYYMtcfmvvcVwLaHHbRpEsYXxWVZAmfqjvomTfSOCAOniyVslaER") }, - { XHDR("nt", "fEViIkzzyaeZGypjzSiFwnVMRXtzVLtdJJcnCFXzwAbutMpbqkmcQTvanUfTSdCfHkWhqRFIooVAzilk") }, - { XHDR("bmtukuloyrvxaahzjvoy", "jb") }, - { XHDR("hxvehjblbchmupueijx", "seukNLwXpUMRBIYXTCWdxyVeGLkGUeakYZqBWXbftyzut") }, - { XHDR("oopvtkeoitfoyenh", "fiKDbeWYkEXxmaMHYteLlIJRGXmHaqxVXaxJUtvUVrQibcvfMJeMbruMxRJBWURkTMvyv") }, - { XHDR("gxsgqbjk", "WbYhzLtCHepcaMAlQNbPmsiiUbtjKOTqvstjYDLjQpswyDXndkToyfFYDceiUMIxg") }, - { XHDR("fksztvukeuqwmlls", "Xml") }, - { XHDR("gzflecyejlzuraceat", "nWlboYhwNrfYpGJdUHPiFpAhTnNxxPdELf") }, - { XHDR("rkuoogpixjpzt", "tJJbcFhHaZKZnsusZQbZyQWaWjWyQUAFKcZblAFaSyXjVri") }, - { XHDR("lbronmckiscm", "rhVjKggYdEmefSRE") }, - { XHDR("uglx", "VxRlWlVdTgEfJtWbIRvGuATa") }, - { XHDR("hmgxszkwbi", "ZoWIGtnxMNOSwnSMYvTAVPuuYdyUCPGumUyctuZwmswQXKXxfLpIQjhbV") }, - { XHDR("zw", "AWVgjNKHPradJWcVRYWchfullretmgVjLKTNpINNXxLYsgXlnyioJHMWSCZmzSQA") }, - { XHDR("x", "FdggVYubFZHEinvpPRicqOFyIOcdwovsCFZnFQZdlRyElgkVjxYjFQikkZtXCIAYXNEHiABbuBp") }, - { XHDR("eze", "OgK") }, - { XHDR("sobrynaqzsyiv", "QTGzZKqSvoTGLsGmkxYkMEIpIKbOlhXBYqStWSkxNGzCz") }, - { XHDR("izeqoutb", "nlNORkMrvUFXEkHktcdmyNECXpmiRypvJVzs") }, - { XHDR("pvsfcpw", "aVtbrZMUIyMsKt") }, - { XHDR("dmjqmfpudqidesbgb", "BpEILPRqYagwvXiUWdhMdjFwieHGvahPEJOVdHbmwpQkeZHa") }, - { XHDR("rjxstnvqkqnvmckdcc", "uTEPBjTGrSsUSmWbrYDdyPeegKBBcFIpKnTaDAdrvyqFCRNyM") }, - { XHDR("qz", "LIUQgsIHToWpxNI") }, - { XHDR("rbjspcyzl", "ZzPVeNbRuUNsEkQJSqKcPcjzPblHzmfdmMMYflnbVvbakyHNRVitjIbmvPzJiGulBttNTa") }, - { XHDR("otkjcwvjay", "ulApkeQEaYFTgXNCsOsiahZpAXgWGxckyuwkNHDCCYeKGnPfwwLugPnyeCGAswLUmJmEEQCpw") }, - { XHDR("ykdnnjzwppsrj", "DaCscXUjkYFhqiLFiBQgVxaYjCLUosNVFXnzMSbHxsJYMwRIZHIlYQNFTcKD") }, - { XHDR("vnvhxhaxlmqzc", "nGiYvCANwhmCzhqShkbvXscZyoIEykPOtXuaKyMCSUCqDtqqA") }, - { XHDR("vfy", "rloXslMSRAN") }, - { XHDR("nsbdqstcpvpgrxjf", "JXaJGCwcgGWIGejbhiJMNbjnByksIRAADVdJVm") }, - { XHDR("xnjqmscegnqolq", "UXjHmqiiaCNhebCHbUbIGnHmZfznoXGpiXggNtfvXybsyMJesYaiBYkuXt") }, - { XHDR("cmcvnicrs", "qaliJHie") }, - { XHDR("ovupmuayswtdtw", "gQcnncwdRWxEQLMxggRQriYIHgCGpRycAD") }, - { XHDR("okqdvqzqbyrnl", "ZEVpGYxchTWIHlKqGPrNEdKxBbbqLSxrKarvcSYeQuzeOoROpmjooEVPHuxdmiPs") }, - { XHDR("easihc", "ZDgdXiPqLPJFQBZvZHiGDoeVbEoNJXGdiDhcUoWO") }, - { XHDR("xmmwrykesybgdbsnmp", "BLqxOlQsaRqfhNSyspvMKskFkdmKub") }, - { XHDR("ozfhvyxd", "LJsvwehUQknkOlQvJOnVGhCbTRcMGYOIS") }, - { XHDR("gtyiapuncrqdrlfmbwhy", "WNaXDLmWECLWmiwHMabswQfbrjTliCwJmVXrjiWLDy") }, - { XHDR("vrzbtujfz", "gPYtuurannICwy") }, - { XHDR("wfycsoocmvvixji", "pIurKmdywSIU") }, - { XHDR("ssgxjhiwe", "ioHPXlAlAVoTgQpMsIEZgAgCpjERfSjWeRfjvfYiQxrtilGDJWufEcGnPGgMjFTdBUu") }, - { XHDR("iuhuonwwaxi", "NoovpUuLpnoAlQFgkVFrlDUDkhlAk") }, - { XHDR("lgfnyz", "YBTxtPFbNdoxFzAeOBFLxjNmfvALwgUEvcCUkdCTfIHPrqOztjmHBlpSbtncKIViTG") }, - { XHDR("rlrqlzonubfodwyyb", "eEXqrVNw") }, - { XHDR("gjumoutxapmrzhay", "dFnjbmgsYMytqse") }, - { XHDR("gkagd", "LvYxrxCmZKLDbxOGtMQYKxnuiobDPwunVRPGadCFEJytbCgkhMLDTXllFyTO") }, - { XHDR("ttotjqejcdg", "CWFvKwmdgBknyGCJFAWVS") }, - { XHDR("fllltxac", "btZrMHgKPzTrWHyaDwWXaNRKbNHLEJPhoMtcOWx") }, - { XHDR("t", "ZespsSqkpAlZzCxVdo") }, - { XHDR("piouiuebtjbyjnbcli", "xTEqfvvOtMeFYDgBiGBEIFFgjTYrpICUsBGgpMtZxzXpCRvKRUtKzOEtzzePhVYvZ") }, - { XHDR("xcxeztwcjvhf", "VJkkuovbbfuTqkpEVNiKepmVWBdPnaKGV") }, - { XHDR("rsnozcjblpllbtabyray", "pWXePpyIiFOcBWuCKQBeQqTTklJaLUmpNmwnvSlFy") }, - { XHDR("klz", "OWZdovZVQRbGITXHzCDVlbOmnYeSKmphiliZBhViiiDKjEmeDtagGetLYRFoscCWNvTp") }, - { XHDR("jmtnp", "WhgMwaLqZnITIyKATrPzLrtovPPYRruOPkISDSAlUkNHbPyPWg") }, - { XHDR("kvyaffoalviw", "GYqbmxHCWUBuMVgYgbbZPOKHthXgFSXHyUiWUQKHUQKDuxsGqvVsnHbaIiEgOuhHuNZUPMAImX") }, - { XHDR("nbjuuv", "CORgUSlpkenupDHaiPZHvNOcQRSloGwbRBArgtcNsqKmmrpwtbnjpghFFIIatnYHheGNelULbt") }, - { XHDR("boppsdfyxxesz", "ZqWxA") }, - { XHDR("nhbuzmfuow", "OQNWVZzfNihnGfCUgORSRRhZMZJNWajSuPtQKSDlagXCUvRaaUnIvhPechWAUbFhpVO") }, - { XHDR("l", "mFnYbyUCFOKfJgPNYjhBqoIkwHaoSlJzJzqjNfVhMnvkkYdGTukTyefOupAMWgsCZ") }, - { XHDR("cnaxlerqdeuhmubbi", "dWIGCidLfAUiMXomXMIYfzsrdPishsbGiwfGhhKW") }, - { XHDR("ehnyvnfhyrtmykfhsuf", "UVOcMwOvtPodtRmlUHuFfdSTslTzoKeIyhtOwLGcrnWqXAtLNHGpdapiMJWrQiDb") }, - { XHDR("zbjoddaqvwis", "bOtRb") }, - { XHDR("dfpylfdtmtpfrohvtlf", "baJBBDpveohFVo") }, - { XHDR("cknjcuwpmefc", "NGRRKiHlDGZYfvPEEQTUSARWfjRXUmmoxQPYXarkmoHkaZZtKRRkMXiZZuf") }, - { XHDR("mtc", "zsarmBFNEEpwELaghOyPYyV") }, - { XHDR("bovvrqnundaxoagjrv", "DaoTiwWUQEOnSctgqPhwACEfFLTkOOxAmtSXWCpTllUYPn") }, - { XHDR("cfhmqlihfffdekln", "EvfKiYKSjyUnnIzDCbdWdMBWiPfiSIFFxNNQnqrckZjfddYEkxROOfpuMnolrYoeejCxXgxaDNCI") }, - { XHDR("bfufcfeg", "LEeQgKbxLneEMKwiAtHfEASArPwrRnfIFdTfUyWNqwjRbqsc") }, - { XHDR("dnbfikcb", "JmQutBzgbcgDLeereteMCtpeFTsjtTJhtNVYQckEWNeFLhKIcKygHUwicXsDLIeWCSrWKhFEvUdmVr") }, - { XHDR("nhbq", "lEDJMFZGssBquMrJGlnGJRsIhlbKPvVVaDstjAlrttldElkM") }, - { XHDR("nlvbywapamt", "BUiGQuMgdXVPHGQcZYcMdadRcPZNPdQOErUkXjN") }, - { XHDR("lfzcthejpiafktckypa", "gRHZICyPIU") }, - { XHDR("ctatmwpmptddhgyohrez", "hCVdSHEAnQWEUrZgjRJk") }, - { XHDR("hmznono", "aawcsTGmbhpQJCmSjokVNYGmvcAPmYNkfNliehjcdgTETsP") }, - { XHDR("dpgcobblenlybce", "ySwvuwCrDOUQnxxPzqmYjfqDXDkSnvGYFxyFvQbKDauTVf") }, - { XHDR("xyhdgwsozfoz", "CmuBoRLrmNSGJZIYMxiLdafSKwNRRUKRaEYIdTBQTDkPQXbWLHKXOUKHjt") }, - { XHDR("tzlhcec", "phQLqkVygFsrKZeIzoOxthF") }, - { XHDR("gapgwwupfskxhfujezu", "TXfyEagcprTHCWtvnTaTdegwjcmfrbLRYNSuDgiLjSGKCHXnEntfyIxOEjyjsIXgMeExZXkgz") }, - { XHDR("dksmgmufhm", "jGJs") }, - { XHDR("ifxncelvdu", "DIDgdmGTFVcuopOOcpUfxSYUrYkoxSJqsnOESiRAXComXyWBitvpglULVHXEMJVbdIJNFAMYLCDcU") }, - { XHDR("by", "lAkwKpmlCGjJqbpyqjZRyEGfPaUYDqODmvlztiMthTFTYHd") }, - { XHDR("hcodnsscvgxz", "ZhdhKqqIigQCwtscUhEGucwcnMpeqlAaTdUVlawyGgxTdoHoOLuNizAKCJdAkzSJXVthKh") }, - { XHDR("xsqiqioqbwktjlgacngm", "ipSZQZliizIaDfPMABYpFnKvDrOKNasWHXPmFuvOIbkFojhaD") }, - { XHDR("hjabchurwmui", "SHkBdAnVsYVITalNQ") }, - { XHDR("a", "HwDc") }, - { XHDR("gpvlhciyuuzvg", "hRJxkZliKfOBkpcPHlaJnEpXgRakxAeAHdkBNLBnTpwBI") }, - { XHDR("g", "jadwvAHviSccyhyFeaeamPVeCVPhmvQQZSnjvRCsJfYhshzsMlqMxqvnB") }, - { XHDR("llphchpexmebvtvlf", "igewkkXvKpjfForTHthWEcYkuSP") }, - { XHDR("adldoglejmhcvbxpqmbz", "ppBHzCKeyruJYZwiHFNbJWQoXBvKDYXHaJQwxTItBIGNdBOTTPyAu") }, - { XHDR("amsqlbl", "jassyEUeGh") }, - { XHDR("xwnpjtdacgvlxwztm", "xBRuOZgPPUNIajAsRvmFJfyfKXTxyhVxMRitAzfrTAYorRgTHMnGIbKWKkQvirGClBzuCXIND") }, - { XHDR("bsyrbfzzqfagzdkprl", "lQIpFuoMGjqHXVXDxTtsqwHYldAxXhQUjlfARjaqZdBdjsOlIOdUYUcayBAjxyFLZjQNjUMveJIuVTR") }, - { XHDR("f", "AyCBDEBtJPZNdPUqbxokZtjGnaQnKgVvcWeoraxkOhwSh") }, - { XHDR("kwkixvzbn", "uNbWHZFTpjSINOUoWlivxkGtZEkIRsHInCkWTMipvXUEuJycuAcdHzozfltyQJOQiishsCvygNjit") }, - { XHDR("kmwhnasklla", "CqoSEkaYFegLUMeghGxxqsAdSL") }, - { XHDR("rlajmvylmiq", "eNSjWlOaaPlTJRroLKzIsLjkEpTQsLJumMMJiu") }, - { XHDR("ehfauzyiw", "PMiDyzQFjOfRvZrlQ") }, - { XHDR("r", "ZbUbskZjzCRkTduvAmiBcqGnZqiYOrBDlFLTbrkAYOTnMGwuXtMUxzEaGoCjRhxhaItkpWFMPv") }, - { XHDR("jjbqgdrmxifs", "wpRLzbgg") }, - { XHDR("hagoafgtvpfgmdnpz", "hhSmyhHQqhZzLJBGuqpiBlbYWbjVfRgSpRTSyoCBrHrkmGgDSMNLdaaVFX") }, - { XHDR("feknz", "ycRcsoTLFYHMFqBzoijsdfuYIVejjUEOHZmlACsPKXdtWlZmcYciMQk") }, - { XHDR("jezeqgujuoaun", "EGBDJWQigfnAd") }, - { XHDR("rlpjjgqwpaszklnsata", "LQQaJHVrtlGxrorwVcGArqjUAahxTZFaCdatzHlGVKkxyUTkeIi") }, - { XHDR("yabfsbfp", "LQjFyi") }, - { XHDR("w", "ZODVgxBTvNylVVHkTYacUmVfqsfwCqFTttYnkuZOWWHLPNrnsLaCbrknkgtKidUjiXMSMGibJnh") }, - { XHDR("jcqcrwpv", "r") }, - { XHDR("tprihueaa", "fjGyFuwkxZVgLLUSEQjprJOxfboBEdjYknIRcauUczKHkZptlLwmINNIvxguZhP") }, - { XHDR("oqdhgcijzrfmvavbxa", "BDSNcJogWHKMbiSETrfjNwSiIbWfwHNHZzlBTRPtjXOIINvpJnTeNStciLUVlBANgtiO") }, - { XHDR("uiip", "AeQtiyGUeZTabmNeyXBOsXKvtxxdgdyyFKWwGEbpaJokDwZIsZNiuCGfClNkYqChCRPfvaEpeGNPtSuV") }, - { XHDR("qmhhodkwkee", "hMmWlquPjpMCjBMQKHGnxYYMfkdV") }, - { XHDR("hlxe", "gxUGDslIZCwjXTydsrzLrumkgHagGivSTdsUQEeccLZSEDItuoTRvZnJDIDPuswTwS") }, - { XHDR("iymenbfkqoyjsnsuw", "ZyFhsafQEfDEVYSBVPlGOFojaMMDsUYpuxCqMwzsmWmYevZiwoDvgcAH") }, - { XHDR("vcmflm", "oFwyRLQbKakcKVylvRzNFYxeapwkiHLKcTrhLNWQqDePfscEPVQnmhCLuqAhAdObwYZaEyOsY") }, - { XHDR("fiqhyqhlifb", "TNlftPHDqrpBqKljNDPKiTIwrnbAhJzhNZwWDBmmQfWSIpLOQDtmyKLtYZCMULKGrNsiZ") }, - { XHDR("rufwjlpcohzf", "DsmRKLmDbvMBvImnbdcerPWtxWkMeHHpGDwjkoDZbegPxEhUMUPCgJVDEDGHQcEaFugCglsucmLts") }, - { XHDR("ihxku", "dmEtoCVDKMCXYPFwZHqhBOJoyqdVFINDcbINsPwjzpFdbKGKnkjMUuJ") }, - { XHDR("wjowj", "VnvrvaGhnNhEvW") }, - { XHDR("oezykuexsuzrn", "jDWxzXDFtldy") }, - { XHDR("o", "HmIGukwAaWpzfyibQrPuimPqXhyTghHTRTyiMnGWPHHsgUUZEAoLcXqoVOUdaXfz") }, - { XHDR("fmnz", "VerLZXQMhiGivvSsSbitAwoDSpwJEuhhvKiECFyoTXzumdjUDGtnrfQrgNhgXDWlANwIPflCikGuK") }, - { XHDR("shsmvtrurwukjoowqimk", "oivqyEcHUgQPbzEFcDyLBAqFHzxG") }, - { XHDR("lkru", "NLXwodYUbtluIYVrtkjLEdomgYPVfEE") }, - { XHDR("zgrbpilndocskqah", "BjKyoezLMvdvnQjJvzDgaUeLHTLsxYaseEtJnIfsBTZMcEKZElUBYtpSIRl") }, - { XHDR("pobhukib", "DocARNavRkLcwZHdJJFFntqxUxgQMY") }, - { XHDR("vbcqiekodgk", "AyzJSrCZhjuYMiwLWiNmHXjhJOTkhraUhnGMtfdAHaxrjMAQBXKIroOPCwpFpYomqOohuoZJNA") }, - { XHDR("rhxntxkwmnwggvqn", "BAwPDsUtWjwvsBgLFdnobAYQFNUCxgFJPq") }, - { XHDR("qmnone", "RiuqbHZyPmYMlHZsLkGDcpswJtfaVTf") }, - { XHDR("lkgweouzu", "ni") }, - { XHDR("xqidqmcrzlpiphkbwawt", "PpxgOyAqobAUCTfbSbuSBgWMxETCsryJrIvCCfdBaWEhoBptcRfkDmqtirlmHWgQazcNXAkItrkKPu") }, - { XHDR("kqdhdevxvc", "SxrcAgJKWyapwPdhdodPYzIsTEVatvKP") }, - { XHDR("ze", "LEjGdLScKVzRvWpQFFPfWhEZKUsHJBdyOuqcQJfkb") }, - { XHDR("ihrtyzatlch", "HYuRMCIUSOQsyMONqhCqQool") }, - { XHDR("whqsfptffxqvgsdthebx", "KjjEIC") }, - { XHDR("rimeou", "CgzPoBpesIBubIOopfqHhaDALGXrgenbasLiKbzYDR") }, - { XHDR("axuamjhwb", "DcHXDqJlwdWTdMvpqtKAJp") }, - { XHDR("vez", "OofTbWyMcW") }, - { XHDR("at", "aBws") }, - { XHDR("cglvmuxhrdctzmwcuhhq", "NIRLnUUDllfIqTWyRjbqjcmBCDhNwwQgPFqcZaTbGwvwrnyQm") }, - { XHDR("axjl", "pusPYfXINO") }, - { XHDR("llunttzglisfdmerr", "HclsEDVxbFlucIwqepegJrADijKyABHsRimykmHPcM") }, - { XHDR("ooxbpqkvunmlakdrjrgu", "wNrNEfjHlRMGWCmBZHfhapvKeqsowCWjLJEgGFnvRkZbxQrdZXuh") }, - { XHDR("ltxwrsmhoasuiuqr", "wh") }, - { XHDR("gylvfrorrkynacnkvc", "BKUQHBBowtFRiwLmxPCocTiptjPrJJvlzITgNCSfwejWBLhxO") }, - { XHDR("vtrtgxrmqpegstcmc", "NCbjtMxpeNFJGsuGavnReeEzBiIIYpsiyhMdsF") }, - { XHDR("xhuibitkmdifjzfg", "xcALtFptquvzJULDTkxNbDHFyA") }, - { XHDR("mvqpjewnfppfrva", "eGmrzxghAFrcvQnNeNwYvQdeDDKvFubMQYXgJmnxNjDpSpNEkMGiVIewCkgaDmZn") }, - { XHDR("mglai", "FYIdknOjcXtSHrhDt") }, - { XHDR("qhlbwaqrsyglwzgbnb", "XrJbZZTyKdnpSObPRHKqAuDQPTenRBJQBXYWtyTHmBdIJWvnrtDAPKlpDuYMYpXbIDotTeaireaEOJS") }, - { XHDR("bllmhztrvygxg", "ux") }, - { XHDR("xdytjk", "YIgz") }, - { XHDR("qugp", "JYPslniMvvNSZzlwQIMkVwMljNdqmYaezDhSBcidnixDeRsgVboYAHvfFuFaaAUgOcf") }, - { XHDR("ihvtuugysduxsgkgekm", "mHFpSJHBLvaRZwGOJXbBfulNsHnWqSqWeTFbBe") }, - { XHDR("osavstj", "fYWtyPSGNUnYIzouzbcRleFLOpKCdWjbvuGgUzKSBVEtkKhnFD") }, - { XHDR("cmebsdykwzxalkt", "rAzlCQgRLVwXwsxEgMNVhsxiAENDRiqFmFsEfMBHd") }, - { XHDR("kaevxacoj", "DeMCyaBVMRUQNE") }, - { XHDR("yfzdzdexsxhsot", "tdsCaKUoeCmaTygSCcgrQvNm") }, - { XHDR("biecknrgp", "KcJoqeuBszKbdVjocXKIdYVLioMWFtRgNdrLsRW") }, - { XHDR("oicxcpliqfbvmjni", "faHszcmeJIQMBDpwbLEOhrUNMnJIOcHUgfYILIrkTBIdLVurnxc") }, - { XHDR("rluudvb", "lDkILBVTDQpykogrZfcIanAsfOygYkYEuyPAVIbGQjrNUKrFLREzub") }, - { XHDR("utvjsmezgbhnt", "cgzCqsWpZHreJYzpmiILHlhWWsuouaGrbNkAfqhjZywfdZWPeDKd") }, - { XHDR("oxirynrnqvzcsmrcipv", "QbXymwWloEaXFBFZxKYAMdzhzPznapYrFLxqaVzufxSJwEbSFmgJTIBMgstpxASRLSzdOwjIj") }, - { XHDR("c", "i") }, - { XHDR("ybcxojetvxt", "VU") }, - { XHDR("fktcceqcalldo", "oVHt") }, - { XHDR("hucavavz", "ClmllYodPQDsENBlkhyKUMTzdIimVNaszhrcW") }, - { XHDR("duduigsgtumb", "gvchmyhhhCFPgPDWTZmztUfXZesaFcKtHAIwjWSxgxlfkFYKs") }, - { XHDR("vdsupmngp", "lyHFnHFkuvjQpTQmRPYUvJoxxiyFzsuJoeHrJGiUSWghTnBerJTevtPVrHmEwBsnTaoyMJXokU") }, - { XHDR("qdpwrmmecvachirqtw", "fPqsGSFXmYbANdsRkTMYGQSzuAPMFmsiKpjXx") }, - { XHDR("phehfuwscgr", "njgrv") }, - { XHDR("smstnuqjonkogbdk", "dxqOrueoeFdia") }, - { XHDR("zpvyold", "qtmtVaumbIFDnICNfHhpUmEMvwwL") }, - { XHDR("vxive", "aoMCkutMsGlZkZzshoJAQBsRbIPVyehKXOShkbmhbHDrBlOWjFwnBJdFiaigl") }, - { XHDR("oinxajhkveenzb", "MDBFkXPBatJWFdVfouYMcYKEqcLaYMHhpVNQUdCsPZlCAdcTvbpVWjpjPAsMBBneSMvHvWyI") }, - { XHDR("ilrkujeiprbzumpkg", "pOaWFtGUKXUPTbuXhmIiRWrbuTrBmDcRpldnLKIEPKFMLQBTWDKYgOCJJlhWZsspF") }, - { XHDR("mjrjphx", "WPmnUC") }, - { XHDR("kgdrwhdxtbfntjr", "jPAPoyDuofmRePbNvoDPpukXtWxgTGsbGUeBOGqKpLeEMeihWTYgt") }, - { XHDR("fiohqumwfuyfwhdgz", "tZhHcXwLU") }, - { XHDR("z", "bfPHVZaiyQZGHyWvCtQpZOOWdjcRdlUeTSCIcVNHBCSlnbqQKNWoeWBbrhm") }, - { XHDR("kecvtiydohw", "VpdtVKZN") }, - { XHDR("onztzibfxwoati", "wiMvawBkqRdPJHfwHbxEtzPyADccMCcFKaUxnzNLokuorGQAbrvTttzxEJNzCBAXrwz") }, - { XHDR("kvsrcgfycjbmhbi", "zlJxsNHPpVRXzFaTlJqP") }, - { XHDR("uq", "gQdCZwPUTFkLIcUSAEIGLSkNF") }, - { XHDR("qkggkggzfqbqquc", "mgjnbwCEIQDxCltklonnTCjgZCrnbLYmRDgCau") }, - { XHDR("ppbdcczzqat", "NNhEGtDVMQhKPhmztKFpEnWYeeoxrsBQZJbECseSqOquBynDEqDZtfbJwMgK") }, - { XHDR("ppaaaatxixuqgliqvtv", "iaopEFmrqbumfWurBWvytQHrxtROeftUrYeQpOZEinSpCogbbkGxrcmKzwLGMBkXMRwpQoZPF") }, - { XHDR("dvytcabmgaaudsn", "QDhaybjWwzpXrgzslgiXUhZyWRDwKOovCYzxVx") }, - { XHDR("vfdqktenitlu", "WSdmWjFzWjjlXmlm") }, - { XHDR("shqcdo", "FLDohERfrhYj") }, - { XHDR("jv", "WOxbuNgXNkXfmVt") }, - { XHDR("pfrppapebyekpezoa", "qMqCZGgUBKbWHUSpstUtzvYTJoBUNmOKgnXmnVKrNApqxedezSVYRrUUMstLCdDwqpnN") }, - { XHDR("dlmksffl", "mHPeekAvsYxLYyyhcwkcHwoNZmoEDjFPRiQSvHpNuTJWXOAFAKdoiMhBst") }, - { XHDR("echbmdudyfvbqvupba", "gdAeUnmwElChpvfjCajqQhwgeH") }, - { XHDR("mcsdccyoxgtyrjtcey", "ycRRYzYtXWUzisWdddlcgJlbGdPjMZoLNOtYQIEhVVAXIygDzszD") }, - { XHDR("wpupziswcmkguyampyp", "JgBPIapzIwUCPapWKsXgCXbiQjwqPWCfFwMEaEMDpZMtWI") }, - { XHDR("ukyaypiut", "UXiXPzmZkHdMAOcJnFRRV") }, - { XHDR("qrjkneytskesin", "hFFtIJgEAbSTfWPipvVfpLPohYUYDOxkheyWUSYzRztWZBiQsbWGdntzVZRVpPiKW") }, - { XHDR("zpfgcnycgaqlsys", "EDREXajpdgNhJseTiUEuHKDEjFILTyGmedobPqLMxGfVigDnCDEWhCGENiGlzoMlPGojxVQaDSjcEK") }, - { XHDR("thepykyirphmytlfo", "jiDiDVBQetGZqSgyagXRdKXeXiyggpNhLoEyBReEXfTZiZmKkFcovdFEZpMdRpFBYLWOWXhKGvBwQM") }, - { XHDR("zhhrfthgncqeylb", "HIsjotPNSmZKviqJPWTtlQDxREZNEwrCLVOcHKSmtjBmpnqhnmqQqeexQJFimO") }, - { XHDR("jlrgfiiavpq", "IjXWyxwaoYUDtZfbYyCExjuVtuicbMaivwjrZJqlEDTGUlaGobEpvnlThZgQCDFMNCiN") }, - { XHDR("sfymq", "DmuDofuqCFciKPqdvqikbdh") }, - { XHDR("dlsggb", "FofRhIevgiWWGPcfmkoHWuJpGtBSvlpLzQHNhhnxKMqSpeNPwGGm") }, - { XHDR("gulkecqaeqssnycgs", "gxQaceHBjBUobXBbzwTEwgVnZlOyJhjUuSTFVijJVBOPXgSme") }, - { XHDR("el", "pnpOVIyxHxXg") }, - { XHDR("xmdcfrtmotarmyjlsyuk", "VRLUTwhZXnPcTPQhCmmlEbSlOrZgyXnNnfvCjDLmHmNGFeomBVNrEjreMiJLNz") }, - { XHDR("stlhtfsyzjlsf", "szrVbAEMEnUlNAYaVQEQngYglTAjjYUgfathTAjIwrxVCEJgAWJ") }, - { XHDR("eqrq", "tjtyKIfHBTWAgjiaRiHHzCrX") }, - { XHDR("ihfvkwxmn", "LGTTcuhNiKpZHlflyECaUMwVVubDteYlaXLettnPCQDt") }, - { XHDR("qa", "tnSwYLwZDacSYvjzhDPeLOFhBmMgJSFiGIalTtvdwZzoZQYKIBvyxXrxA") }, - { XHDR("rpaxoaexlc", "pcXPJGFpmRxYPrVsckQvTLdITwzQIDa") }, - { XHDR("lweibl", "yKIXqKqZUkyrpHvpFLPjnRYVXvwxkZHOQYSEUSjbyVeCrlMUOaydAeoEjiyjtItet") }, - { XHDR("wpcczpvako", "xYciBlNcvejJmtZiUkGKxxoZJfDhoNejqdCl") }, - { XHDR("ceijxbztndpkllof", "OnqMaQRcTvxyADhSKxyFCyllYkTjBlWpRiBb") }, - { XHDR("bqnhgwab", "kUssjhOqPFrEdryJTViQezCKYlZcbnogNgroPOx") }, - { XHDR("pdaxjddryrtnzwqwc", "kACdDZdmsOZoNNmZpBKTsOeGKnFLjfgbQcSHLFObyecZKfPObCaFtcM") }, - { XHDR("cprakqnveaoyahfkdu", "KeULukxOtBdvdlkwJUNPoWKLujYPAYKhGDaHeBXWcbHQCOsVIfDftVCtBLxVYHuFcktFmK") }, - { XHDR("xvnzhmxpscmkijobew", "FSnAfXghCFKyNWaxBmOqDlZMqujw") }, - { XHDR("hpdpa", "pWJkPvNEbMVxccNsmyNsShFSkvFkuKSKHLpucodJuRIPVhbTCsvFpwA") }, - { XHDR("cviqrvizgx", "NehOeZKKGtgSWfrZupPWGujiaePsifHbylCmvkyyFRqgC") }, - { XHDR("kvkxjuptm", "jQsoBBivRpiAxp") }, - { XHDR("maep", "mWKal") }, - { XHDR("dodciyxldtv", "tCnepqgftHXNLGydzLKYmXRSTtnxmCVAOoZukRekmiMCRW") }, - { XHDR("lycxyutqtovmkzmchyq", "XWSERRCrLCscFosxpzUzFspFLvmOHppCiqJWpYeVsfBvJdRwwwjJjRmkLMBMgGADGvylfgxhNz") }, - { XHDR("rgcjdpfoxheele", "AlYRlZvcoIEaUaOroYMQkNAdgtzAmYKmelGqKa") }, - { XHDR("gnpjgp", "HSBXsQshZOSLNvEToeqvsTMOxYIaRqkWdEwkkvyhFOKyfOUuoSHSafVDDERtz") }, - { XHDR("dzejsdugofm", "DYJgqcRLjlAaz") }, - { XHDR("euwkpprb", "DjHRJiwGfJyLteMMJXrxNsLejdoCzeUBtrWHNYvWfzKiMifxhZXDVrqNiLYXZKRvyVMlLGzOqCxe") }, - { XHDR("qqeauv", "AIsWzpSLzkgEJTsyLHgtLiEiQlEPsb") }, - { XHDR("lxwvkhwhlsde", "bCYpTPPJoYdQRwXiPqCZxdrCGzvlUiNVRVaLFtZbkhlpDZMerzXcvIXvS") }, - { XHDR("wpayzqmoejwl", "EALiGeWtFTSAvjKxYAKgoQqoObHCMslwbqvFxBNVekXERJxzdNcuIJD") }, - { XHDR("qoojrvgdciwhvwpdn", "pXQLyCgMxPnpRtgApMJaCcnqfaWgltdrpsWVouDcMSGiytYmrCyktFJDj") }, - { XHDR("tqnoi", "YawGSOvPrZlQyP") }, - { XHDR("arrv", "mRQJudJRAlnWOIxvKEgHKfPZWhNFNVJEDelhFav") }, - { XHDR("kslivktfqmwbfdrma", "rqPElkneJiRcQmjEuPvPGaFYAOVsYHswmarTbXdfUxmBNpiQVtbHYd") }, - { XHDR("zpnczqjdxavdcvpi", "JWIxqJLgGmDydNppSObE") }, - { XHDR("jz", "UMiFOgbvVDmLjCaFevTwnkoEbVsTL") }, - { XHDR("ssquimet", "LJeERl") }, - { XHDR("hzxrpjyqxffvymykn", "AcRFZVsksacBMyRpM") }, - { XHDR("ymwullnnsxlctonnvopc", "iYrISKRgmwTfmQxzYRHryGUsSllVIWZEOmIYiHkEPwdvwIw") }, - { XHDR("unynclyxjnjaxnsrdzf", "G") }, - { XHDR("fqmdygkemojldkf", "blVbWytVTalNSWCoAvILaVePymIyQLodyAH") }, - { XHDR("kgcxj", "tClhpLzQiZGpefDhhfufjuKGDvOgPjscDWIGZLpGFzAlXpt") }, - { XHDR("mtnrstzsjeotgcf", "apvLPMMEHhzdcqvOVYwiBuAmmlbiqmZQbtCOekEbrQfyTliwYiXeIEFVnQdfoNMQTX") }, - { XHDR("b", "DMogRuBmojJgmMxpNskhTRXSpZeFviPdkCvLRLFEsUK") }, - { XHDR("fpvapvxpajb", "LCVnDA") }, - { XHDR("ricmckagzfqdw", "kMKKo") }, - { XHDR("oufrbnttrzadz", "XsbcCnrMsBOwEkoMTOSiBZfPEsaExtPnjhPUoeunOYWBfBR") }, - { XHDR("nzyf", "YlBPmaZjqVzFkBLnfDBWtSHKPLJrNPHAJZzDP") }, - { XHDR("ionkqgcnsswbhiz", "Q") }, - { XHDR("bbb", "DgYTJBEiahI") }, - { XHDR("ebx", "wwKnnTXMXkNboyoGobiEqnMVXmRpMhtrlfGyETj") }, - { XHDR("clhvxrirlegjyiuhu", "clHSgxeQnvZnIc") }, - { XHDR("krbpvpfpjrss", "jPahPWvjXDAIjnHxrIsO") }, - { XHDR("qfypihhjqqfenjflp", "NmeFfxTPCsUu") }, - { XHDR("ikz", "mxgmhKCFxo") }, - { XHDR("nifilpqy", "jvvegtLgDjdQtMMzQmQikGflgolrDWTCAjBlxYpWCnJjuVCcTHtbLORUvhUPLEscBxSnCJjG") }, - { XHDR("njrxlpw", "PwOsTiYDKTYMzxiEKZqkQKZjO") }, - { XHDR("aibwaivwmpaxl", "RnoVkjhEMaFKyjRctGOzcyH") }, - { XHDR("smea", "YBfPWmNtfMKmCJagNBkJROWyciSVUFPSEXHVdDQSoUUlrqIxzgw") }, - { XHDR("v", "qkFTWhsXpxodxwIiaCHjcTjwXxQDwPeLESYZui") }, - { XHDR("gmbqbylbglxutuuglol", "HAFYRDefgGUnimuWNvTzgQdThsgLKEggXHtPCpnvvDAfZDTyHTfmkUjErbGGQMhkCNbleKM") }, - { XHDR("uahdnlz", "lLumFZRUQKonGcnKOqgNYivouROMcreDiIBkUILyWlEBhUbxCqi") }, - { XHDR("uejkuefppx", "dZgfRBMPKdxeZAm") }, - { XHDR("bukctpf", "iIXnySoDytjBbyeoVmscXtAneFyrHXXjLCmhFVgKApFfcIR") }, - { XHDR("kwfgu", "BJjuxqfkOcubYeAvdaBDSotaJHmbgSLmuIqXygbjPvJMChofpgJmgNEoYsDhCpeLxxdwh") }, - { XHDR("ptzwddxloygrwa", "MRzMmUbmkCue") }, - { XHDR("nytxb", "tFDevniaWYkYlowgxqZkqwdrMLSVLdRtApsZDeUbGtWyOvVYPgsVFfbwHodpSA") }, - { XHDR("mlrbebba", "lqkpoJuJfgKiaLMLMVtvaTfpUySSLsOGhPsOQpkVXinwej") }, - { XHDR("byf", "zGZAqqEtBrejZEoCALMXypfBj") }, - { XHDR("lvuxenyjtdgiktpq", "uSBssRkdSIOCSan") }, - { XHDR("urhiaqlbkdxha", "kMogNmguGxrUBBBPhnpRyCSDGISEKoEhMoeMpqvRkGltoCFpCxrRHpFbR") }, - { XHDR("gpoojnrao", "XAAEzCSeVvq") }, - { XHDR("kwjpbqhhmmkkzpas", "rOZmWVYgOWYjzimBeALKQFjSglVIriDvOefufRfvsvihJEsnKXKsbBFpcEU") }, - { XHDR("akzcdrkzomgjxfxxv", "oEYXqyEonlxAShuaLmSPZdPXeoVxHGyQoMOggzPzmXZvsSHTNGQzbPvcpaEgecpZOMJ") }, - { XHDR("fgvro", "fmMZvArIObOHCJausThTPv") }, - { XHDR("snyhxpihnjlbo", "SKghdJdMdJBrRQWvSNMfDWemGTpojNJLPXvCUfOYDQruzqktUIljPXWMaebwQcpXQsOAenvWBiPbYP") }, - { XHDR("lrubbwlja", "qRZVkuhKzDwHfElJFVnEfAOyLnyzktRzErtIIIzWDifivfGgDYBe") }, - { XHDR("enzkoocjlymfhsmulkdg", "vrQteOrFNIfBLPKCKuPDcGPCVGBelHEcOCZlcnElkWOnbTykpQSH") }, - { XHDR("wtmxhgrgzagorhpfxdg", "FpjNcHIqeYUJKJilBHkHhLNHGRlqZYRpdZEKzAauKyLEUFsWqgCy") }, - { XHDR("dji", "npdEKVgVcmeeAiFiEfiNpxBNymsTiLiOQSlrbRNV") }, - { XHDR("pvrojmpghlscquygn", "SSMsbSjZKESTtjiGhownYrGyMAlxjmQMtpmisilkLmyjQiBhVQkVrLGdjXIaXwrPCe") }, - { XHDR("tunfdpzxr", "EsAysUpFoeNaMcNmvRRxWzwaWiwNmoZFlylmyuWBSkgrqwSYtEHHZKThwh") }, - { XHDR("jsm", "pMxBveGkeAhlZkEhuxLDtdRolSVupWnWnpEVkjYWZpwzINEyaIFKLXhgQhsmLFOdkQ") }, - { XHDR("l", "EWnUhCqdjlzH") }, - { XHDR("kflvcgssccyrotvqxe", "fWxWooxDXhDCMFkPXbIwAOIewTVcLwxbTujKGucSJXkFykTGfQPBRNnHxXsReaMQXOG") }, - { XHDR("uvimtycfyaoorn", "GNSXtWzKlLcIHkecoeLIBrAYxPAJUclMinecxPhKmURItunmemVMvCeUdrwIeJOxiajibMgZbXCHGFbt") }, - { XHDR("pdfzobwxnmrfgtssf", "XvYGCJrLcuRE") }, - { XHDR("jlhtjfwvevnobnmchj", "DgmREdAGSXPVzwSHxSArWyGoJUYuBImmtZUrciuEYHnLz") }, - { XHDR("reopbwrgcrhuboycfuod", "qzMEVrjkgiLXwHuBxWbqumqHdXcIlWXfbMnpaCHFZjndiKQj") }, - { XHDR("dodsio", "jBXZMWKWgSiVcjgpTAWsUNolgEnRrnqRsOeD") }, - { XHDR("pnmpflpzbf", "UfOLnFmipcDCqfQkHAopxSHKsxkyeeWmPegQLJdVzmxceSScyNDu") }, - { XHDR("im", "CwDWkLnbpPtYKvHyesBXlDZxMWImVPWHviMukl") }, - { XHDR("bogzednb", "yGCYlOPcFImCtZegWKnbcxBHJJrLsYcEWSJNKYlepTJldmWbcWsoDup") }, - { XHDR("xqdzrchfphwghhapx", "UOUpzQBvIhrtSyPMRGKvJGXQMNHadKBevlUAEWLLezvpBSGocRMoMtopEfBpPUTOG") }, - { XHDR("nxdashfxhbjafa", "NeVcnQnNZTCyzLAttrfSohbzXDmNsKTXtOXuzXaqrGfKcQEwxtYKdrOdhNgOQT") }, - { XHDR("xdlmyooccdmhbjfj", "aHspjhpccYWXrnkQbNrnpXuF") }, - { XHDR("m", "DnpgXajxTwifRfOvHRzcEslrzAUazNSKnmrWAIPkYvGVHSHG") }, - { XHDR("yjyfqiamksrdovlj", "rezmSCYTCVdIPbikgx") }, - { XHDR("vjbkcbceamy", "LjyKIloApamxCQwwigedWiHHmAslFgPcyCgvzFmfEujavfsJwBcMFElcwllzklYenViKG") }, - { XHDR("dmlvyhqbijlgbarrkv", "PwgcwlCmlwEwTbEYfIn") }, - { XHDR("zjncn", "XxiegQzmyWOzFDSlNBsprCcBuuludAEsRANkGQQl") }, - { XHDR("pcldblkegfcfflns", "CHziAvtzJoHPnsMrMfqtIJpNzjCUkwiZNaDHsoUDfiAIZzDKrUdFJATeYVapxlUEhvDyLxRwpKO") }, - { XHDR("xiglyughpidddzoe", "QPfwknHPNwFOCcFFKPMcZ") }, - { XHDR("asskdlhiqnca", "olSWxWDkrvuNTrbpaKZcAzXMNYuwvfWVwLrrJFrNkj") }, - { XHDR("fxzfkveepnglll", "KLJjmLbGyTWnUOUKwvdLZatJqYlmjAwtiNDyL") }, - { XHDR("hzcazxiyswxpjz", "EFZXgNZJUkgSPOofYQNAIKnyrt") }, - { XHDR("kjcrki", "EOnjgRMFYcNDNpYQxtmcBbrDqUwHyxVwxNfrmDn") }, - { XHDR("dqojdubarvpqcdwpbct", "ZgZfLyHHgsoiOYVVBNWcusQBjCCUUpJAQVniuAINhjjpfzGkm") }, - { XHDR("hivzaajnmmfvzpmsw", "zSjtLkKvzOOLwejVgFMftbFktxevWmcNvXcOzpgqMrLIqYotXvIbly") }, - { XHDR("nzvxn", "EuLOSjAIYinaSiyPBFLAttdVXPyHdYpzHVhCgnNaunWvjJoGgGQjlgNOLsLDtygzo") }, - { XHDR("ys", "bSbNGLrfQfymHeRwbsbCjrFyjNylZTWmZzMIIjXyQuiUpgubhxESWduDUKbffMkuGgGWkJDXgr") }, - { XHDR("ncbxqnqoygpccptyvjo", "N") }, - { XHDR("rsv", "AgmjyxzK") }, - { XHDR("lfckuocpjzbawa", "iyKPMwZRSrOojAsZBvzMtRArfnSuHCoeexLyxSoTxlfGsXuSbuEfnbVIbgPnGSbBuXPhHAL") }, - { XHDR("ncyumwc", "XxoE") }, - { XHDR("csclkaux", "yIXZtxHECJxLCrGQnxvjidWUgodshtTtyPRVEdCZJo") }, - { XHDR("faszzzfxluumr", "mfakkTYMQcLYuRtOhZmuysVijaiwPHNmLZASaGvHJxkxXmxNNkKUGceocrqkTwmyPNFmIrF") }, - { XHDR("jiuxjv", "kjVLCedVbrUvKcCHCyVCAIqhwxuhSPtxlPQyqACNexUngAemVkjGJFkTKfppXHlCr") }, - { XHDR("vzqswtewaokxb", "oSpnZfFzNGM") }, - { XHDR("wnroqysohseetfhirxp", "YWOVqhUBFCXTaTsiMstddSSeidiSR") }, - { XHDR("nlefgcmbdvglatde", "petikGQyauAQCPCDya") }, - { XHDR("w", "aVzSBAbiSZKtbxuUUDaEfKlaFxqoFGgoZrfcXITkbCsOqBLGMXiOuixGfsbgYARWgVducxjSkKaYmRqM") }, - { XHDR("urcqi", "iORJLHPopWgYdEtQuYUyRkzKqYiHuSQvONDHi") }, - { XHDR("kqoeutjggkgo", "eGnbifuRYdLSzuEvRcy") }, - { XHDR("kxyajdiucrdkj", "degmhdOHKksYsuaQUKxpkqlociyzDTkOOiTnyMcTHCtdRjkjIZrmMRYMCwvLuaqftsBNBrkAdvvrUEAQ") }, - { XHDR("gpwvatkoyjmoauhqnp", "VIWqslmkWJMfhSBVqGhoCrUNDUdPpcJW") }, - { XHDR("gjmqxdelfkcogcpcjnq", "NdtLJxRRbAmlwtfRqzPuJMZPabKldVwLAIzfGKZ") }, - { XHDR("bjdxwxguuzsqnb", "fuUDDSZqCRyVLXgE") }, - { XHDR("jdzwpblmbltkbtorcfj", "byUVxKwflc") }, - { XHDR("gzwjuvrddxygjh", "nzZcIvrBtjajSNYQkOII") }, - { XHDR("xllnxbeldhlkyjwqav", "NreNSMlb") }, - { XHDR("cwxul", "XRAuxXVzjmaIfYaTNhazMIXmnZqtlTjZVHcPBdbegfvepNPRoXhlFEEZiNBZUwuxnfODaWyc") }, - { XHDR("yrhbeldobfecgu", "hUhbuDBevmtZdqaElmGCQObJuglhIeCplBRzcNLKXPFFUvXBSFmAYgbEhTLDrL") }, - { XHDR("aofu", "fHVDgxCCqLoydMpnbLuqNG") }, - { XHDR("rj", "GcdVDzbkxFUDcOlVfKdqToqCSWHGMAkQBQiPihbqVV") }, - { XHDR("lpqwgtyi", "LmSlqFsOoAHinnVvSaReDjmdZpQarBpdLwaSt") }, - { XHDR("gtmoznmbeqkkiu", "zcD") }, - { XHDR("xbnkegsalmgljwp", "ivDMwJWYcGcCSNVZO") }, - { XHDR("yapoaeeg", "iamkckUvSYHNdqTupwvBuYqdGLLxyILUaKwOUdcmZbFukmHlMrxcuWQY") }, - { XHDR("ixcpgnicagprtvpi", "BZOOgmEWCWsQHMjjtsaMgwxDFq") }, - { XHDR("jf", "umpCZQCVabmuDBcOrD") }, - { XHDR("hfmkllfvvzavcpeefaon", "zzGZWdfyHQmxHpZDKYGhqgVmiaMavKRtFDjJEDIcsVTvYMunkocKoJlFTgADxsWJbOGxsZt") }, - { XHDR("dhzjrfufrzdl", "naILrRCQaDTpELzZKqckvgls") }, - { XHDR("qypwsblcqbl", "qgrDUIPxpSmtRJNCZSiqgMJsVOfGEswMXNMIufIQlIRaVdmiMALqChblHwZpVoZczuSINPRttXloI") }, - { XHDR("kqujdfjvqtxgiv", "GDfVMfnSISsQRgTuklYirVlbFYldpjIwzHwKnexnibcXzZlZvXQjpBSckQztAz") }, - { XHDR("ebkimfrkx", "qnCsmlDAOHjnzXPbKSXDTlnuaEAHBoXYznmju") }, - { XHDR("kdlkxcnw", "snVyIyUoZpseYrMPlbrCpVVnshimjLswspXDMFKZQzHrVv") }, - { XHDR("gtezrzmxiwmyt", "knQwAwykMICnlgOfSmbUQkKUjAMbouSDOctyoH") }, - { XHDR("gosfbmtcqrn", "mRZhVJwaWy") }, - { XHDR("yafrbaswy", "pOXPQXUjkDEjaBvbOjsCgPqKlveywPwWyIMGTvCgUmtpqqtnJJ") }, - { XHDR("jbifc", "uqnzCbKMVkDkNQfuxtTlMLhJTsTcHOvOTnXhIRRYsQqqPryWtBJYWJYKqoE") }, - { XHDR("eotymspcwepnwpsk", "fyceSyHHEtZR") }, - { XHDR("loqs", "npwHLImwmfANNVNfGA") }, - { XHDR("bjrmwhioklmfi", "XUsTjEWiELgaJeisRXxmGyQVmKGfKDLSPOvcCEpjLqliYkWjCnfhcjllWPEzowJyI") }, - { XHDR("gnorrlzryfselesry", "UgghiaSMxpEDIgmJOOedcEhCIyjDVCKOEXPattoBukzVIZLXCsSd") }, - { XHDR("xvz", "rrIv") }, - { XHDR("hbkuxnjanhzaxfpptglv", "wntQTqzFCY") }, - { XHDR("gfzdfxl", "uwrahaJlNEbLGMOUzShOxCdHoARbpzMCuksD") }, - { XHDR("mhvddmfnqrnfszvaaaas", "GPCaDihffB") }, - { XHDR("gspgvcdkr", "tBQLsXvDldKqloSeYe") }, - { XHDR("muvosefqjznoxwfufvyz", "GvIbCglJDlREpF") }, - { XHDR("iptrvzozzc", "sbikKHKKmdysvTDSkaUhzcaeFrsgGOYJGIfcVjOLxAIO") }, - { XHDR("ckkb", "ZNaFfvSWvpyGUskznzkuNCdPeMWIELkpxdXLSqmQBJRofqnhazQ") }, - { XHDR("xtkaeslz", "ulPfKcDhAIyNFDkuDPZjnHJCtzfViPNBRPiIuuLvBbhBgUFdHzZlGvZird") }, - { XHDR("utyu", "lOPLUhoAuAvxxossxY") }, - { XHDR("mhuezkdn", "ZjaFfskZtdeLgJXfeDlHdAGqnoOAOIHaSdRpamjIKh") }, - { XHDR("takvsvqiuwhv", "OWKbzqcpatNqaahYhXOTTVBdDiIqDokAZfvFyYmDcApHyw") }, - { XHDR("xozbaogdgzblrxfir", "KslYolihoasPlbcsudxnJvjorTQoAMBxMQVWeuNdILkvJZUECsuHMkBRQCUJqfHpocrKXx") }, - { XHDR("pqpl", "FCScjUUhEpnunIiCEzCNAFRlaGBfTSWnpWRMpGdfibkInIXkizYhf") }, - { XHDR("rbmzutgzoren", "OJIxGHeFrZAUYaGGhLZvpONiDbMwLmwvZeHQ") }, - { XHDR("kuuomyy", "mXUGRnLFIfTvsDFxefvYtjfmeqDbhBwWWgcW") }, - { XHDR("esfuijeknux", "SqQMObcMFAIEYypScCxOgWfngOSBOIXukWEGWaqINzqLLUkeUnNPvTivD") }, - { XHDR("hnvtesqtrlx", "pmregoGHHGUKZFpjrLMHczMGvDxXZBAWEapOzrEaRM") }, - { XHDR("vkglp", "FGEjBegQqrDyihcokFAcBNZCsQDXlJUGipaOjDnJiyjcqrghsarszMozjtWgYfeIbznstWT") }, - { XHDR("gnvjatnqxezhej", "AVcGcXScem") }, - { XHDR("ylurblqhbllobwdhor", "ZzIjBuyRQSGmbYTjFJdCZyRDkiUjRlAofebyMSkWoLCOSvxzDYrtadLKYYjMSkIwG") }, - { XHDR("vvcbdowxyo", "USWVEmZrkFGUUNlpaMZzgsZpeQTIKEgGYgXjRyEWl") }, - { XHDR("ygyssed", "ZTSIdkxSkCdEWSPQeExQZfNPQeteJYTiYLRDVQHo") }, - { XHDR("issoynlgyqjrnzqso", "mmITFlIEydjlJjEDeOgskokXKWEvrkbkQUTldEwpUgZrSBIkIY") }, - { XHDR("fxibmgme", "tsYlRdb") }, - { XHDR("wieuqggpdkcmrgzb", "mnUWarhhZNvP") }, - { XHDR("byghdkjzdlgoatpsjnoe", "edAAJEvknAzRbIABiLvypQfxg") }, - { XHDR("qgwbwjclropwd", "xsxKyAoBfTP") }, - { XHDR("lbvxrzfkkofrgxjzj", "dqNFbZvxYvTurhsBbclrhWdtxjhyYDwDUwqeABIrZgsNAQZClejTCPiKwHwIY") }, - { XHDR("kk", "NxXpGpztJLnJsFIGpmoMindREypCFvHLaYPiFFcujDEJxXxxrqMSPdsekn") }, - { XHDR("akfhjyw", "SsjGAbjBUTfQyavaaimLTuEngJNIsJfRTBzffQTtKrctjrwABiRaTFglNGpTqbmWBXDYIDu") }, - { XHDR("iaccush", "liNcUrFXUPlvkWWDsykJJuFtyzUKjWrKHao") }, - { XHDR("ufroz", "gWljUbJlgBVCc") }, - { XHDR("wbzxzagbulunle", "ryoKX") }, - { XHDR("yifizfzfuagttu", "cgAyZcbRcfreIReILChNcfckuVKNYelsBCMCbrzQioIABxlIkpVFoeHrHZClVghKphtqNQyoL") }, - { XHDR("jzq", "zWxHSsCcJPYxgkFQDaFdhZZdlLyigFLDvXeytYhbElnUcaCJKtRBP") }, - { XHDR("tlgczcoofieflqfdfv", "EkafPodOFBAntsZDTXpifRdcUhLLWbQxbaZV") }, - { XHDR("xvpee", "NVSaYItKMnjnaUVSpaqsRSpYsxweLyCUrNyPJfPawnkcTm") }, - { XHDR("pb", "No") }, - { XHDR("trsefucmubwsfoehf", "BhyEpHJRCSIEWbRMcLrSArwkgZLeCrnmMkVoTLJvMTjBznQgPaeQNpboUthHtvxBW") }, - { XHDR("rbzhdsssfb", "qUJoHrvleFpUedFjwYAmGuJpUsNQoYvrASGidw") }, - { XHDR("sho", "JcjmKPwuLgJOG") }, - { XHDR("oxreqscxcpvilfojoi", "QQElGFdOiPlDLGSgsgoieRqBEQJqudHTzwWDXAMCsleZD") }, - { XHDR("lackhnccrcst", "SDriCgvA") }, - { XHDR("vdoxxttvyxzh", "QKPVybYggfCIRNysHfsbXzDJFk") }, - { XHDR("toydfch", "EscydTkHqVZjliMURgaGoKWhkwchoivQwtvqBdT") }, - { XHDR("soy", "jEvNtElvzzKcNGqtnXthRnqJUFXcctIKBTOSTFL") }, - { XHDR("rrvetynianbqrmxy", "RGmPUeARKRtKAPtXRLHlxbKHYEVUQQaexYJOwzHPYOVjOBVsrwGeWPRxVCmySXBwPBoic") }, - { XHDR("lpiaorhqio", "TpLxHRNSVLtuUItqAfBfXStAokzV") }, - { XHDR("iuocwwxqjyfiqtum", "gIhsvhcvtUUkFtuYEMhpxLYVlbgszDgnkOSxGqmtYNkMNeuRwFvXpgCrjLGNlUQe") }, - { XHDR("mfbgqqdj", "XCktgOEmmWRqWxARXdGpYOswdtmPhuuUfSCUbppYfhCmyApdIJsjhGQqe") }, - { XHDR("imzwawngnzfxeh", "CtQmwdPkeqqKUBJMeivXJLTJTNueDwhhGUjNfOiXbFryNBSUeotqDfPozRoCmyhN") }, - { XHDR("kwqzusgpoavuciwtyrw", "GMzaDtnMqVJdkcllYnCrWdUUMFDDvvDfmajRNsqDqBhQjccrOTdSWkQeLXETNyuNdZZDGMlxNWu") }, - { XHDR("xojohaqmnwuk", "hFCWtfxniiJf") }, - { XHDR("alwdstphvrwlv", "PGeGXbQ") }, - { XHDR("avceslwwsb", "WhItzAUfDNadSnitEHUuDfkGVrHwOvtBIukmClydtuEeTGXCTMTicTcXV") }, - { XHDR("ughwvrbkqspftegssoz", "bKnkSGAYGDmIrDYubZsgNWJmCqYXRKNsJuwdyucMlCewhbswmHqOk") }, - { XHDR("gbalutcowrwmxmzomk", "diuUSqzFEpiifWfYTegzIDEPkrsPhIsHTSGRbhKFnQKEsGkBxzPrEn") }, - { XHDR("fppk", "mvYCZwTuUwJjDyVzgDzJKLjWWi") }, - { XHDR("bfy", "qzQUOyxEnxmBHBkpFFjQaOJzAqjcpamAunkUCCWjdzVCTNvSXSLWhskVThtcFPZVFRmyIQYE") }, - { XHDR("sslhbmcij", "uyGCyclaKiMtcPIVMzPdTzOmHRCECmuDgnfKceXXBnyxNpWTgrDQwaRBwGIhJIIQNLICkoBA") }, - { XHDR("ydjnyty", "pIyVQDSYHTimidauzdTioNCzPuZWnmFhAiFcPGtbglxmaztsYcgHP") }, - { XHDR("mxuhppajdmbv", "XubuUVCT") }, - { XHDR("oyrkmz", "MlFjgWzeeaDbEAEcuxJxQFzfqqLkAwDQQIjpwT") }, - { XHDR("ad", "losAnxOHzngcSokYAZXrKYugvTMADyRuRKdBwtFrbYHDqj") }, - { XHDR("itf", "YSIRVKBszVMXPdinFMRgaFxe") }, - { XHDR("jpwfeingbx", "puualBJMzmAQXkQmVbOwtPRQiULrmhJ") }, - { XHDR("u", "awRUmuMpBfOVmFxKIySepyFmPZVxqPe") }, - { XHDR("jalnzncqvgnuayu", "usLPhMmRxUQaUoHqhLZHfDzsuvxudYUwyeOFoYkPB") }, - { XHDR("xvu", "VAoSHEptFKTTp") }, - { XHDR("eavhpnf", "gBeKlnMDnUsUQDtICLdHLFLslEgFYQCQRkWrjavvcdOVMRoDKYRHWvMlGLHzfDKzbHHemqoNhwMIsjkQ") }, - { XHDR("gwkwjo", "wj") }, - { XHDR("dfpmlwqtxxafgdqgi", "hXkIgNyKzpAWFMOoPYjamNWQmV") }, - { XHDR("o", "sVrssjhcgikIbPaTXvdusCVHXWvKVcSUlDOEdCWhnIvEXndCWsEkJETeThbBEcHOcvWzqYeK") }, - { XHDR("ftqvjpnwvxo", "TDnjQtfXysPuQflfPuooPslQyHM") }, - { XHDR("swqnjtfcjtmbynsdvp", "DQkntMPMBuPnlhOZoxkTtfXhDB") }, - { XHDR("qnbru", "jkuynTQtfgwDrdROeBOsXCqATLyVGQVdqfHixzuxyMpZGtalVIFhxWE") }, - { XHDR("nbm", "BNBuetWezTHRslnHwktEIjgVHPZMWHsnPZAXOIiLcJdiIFQOBzmfRqsfIqZzhSnzNtf") }, - { XHDR("cjjjugrksws", "UxQngRBfYMroNkTREQwMkOhJBxdufcoAsrDZdY") }, - { XHDR("ukyetnrkv", "jLwzWHdXFwylaaKFGKIbLdqoOSWnknoNNTxGDlWCcRdRDFB") }, - { XHDR("fyvfgqmqfsokxgew", "mJt") }, - { XHDR("vgskrelcubuzuz", "UUneDnMdFsVOATmzNzwWdxGAOeMJzVLnofqxVKiZsjtpdSiDleLVgFeuXZgtIAcPU") }, - { XHDR("weoyhluclcihfokopb", "nEqkmWIuISSVZxcrkXlBNjrUBRhkaA") }, - { XHDR("hdmynwlnmhwxqh", "ELRqCwRwMTcfYjBYhgPrhfetCFvAydYozQCGnODHcZCWuuKIzWGnXRe") }, - { XHDR("tetgeabvtrckxgeybnnh", "ONZXqUocKGErE") }, - { XHDR("fsgmr", "hZhHZcFfNwuNXFKgHczHmKyQoNDDbsmbBlcEACrZnWyLYxFKAiZPC") }, - { XHDR("mrqplljwuuxwo", "WhnxreyXZthZnDQcDHTjJdWPHilloWbzEWXMeqihX") }, - { XHDR("efgy", "WmDMjsvjRjPORHuZZZibVHgKsljJCGopbcUSXxjXusjQfEWGLjEQXZRmGcpXYSFqSnTiqY") }, - { XHDR("uqotwj", "FlieSOkTFZGgdFURoSuzkywcDKCjmrAheyTyYFfxR") }, - { XHDR("uzlhnwqokx", "QUXaKQvwCFjhhsYHheaOdFdMzEvyBTvojVKjME") }, - { XHDR("pgikwahhrrl", "BXGNKylwqrRktRxmGbowOqJaeNSIkjNLohx") }, - { XHDR("hlkcscieyzquveunrx", "qXFwzsFTjTYrjHZTFapgAVXiauxrMSuYPxEujpp") }, - { XHDR("dpedtkrzpdojav", "dKjkWwmAtwWDvnGGAMvXnXEVsTNzLCMYwbvmOxWGX") }, - { XHDR("fgcosmbxgjwmgwxke", "z") }, - { XHDR("mb", "ZFCvpfkhxcT") }, - { XHDR("maankpjg", "fjjOVkLUwDOjQLGnUFVbjvPYVdqNbjNiTSrOggsTyVpmzPnPuzaldSnMqmAMI") }, - { XHDR("xkxaatzs", "TmzZ") }, - { XHDR("canrwh", "xocTrXHsP") }, - { XHDR("fzzjrduludnmeapv", "NcJZdpxCaxxYbYypHbFABXMNVgcPwdERlncXAKZeFZVJndZGsSw") }, - { XHDR("z", "esJTdVTTxtRMejaRCXFBddRDvdOkuJnCkCU") }, - { XHDR("wlgqxdgdbku", "fHhHFsoFtYyygnAhDtDvkghaIdclDsVvRFZdlpXIqlUFlqVhM") }, - { XHDR("ubgetfkwaikoi", "zrIGYKinVCMDovHPpPKOOgtOIdOSwUBsFnGauvWA") }, - { XHDR("fhhgkxbokrbsastbcs", "UAyDpowtIsGzaaTSseLJQeTOgOSjizIChIDdNWUKOUeCEFddGJkxDULzxRBqhrIBdHIGwj") }, - { XHDR("nuazvdusqkjlczcfskeb", "buuFnSuTUee") }, - { XHDR("ydfcupvtokkfnktvx", "WbYarnTmJhpLJYTzmFonltZOOuTUhVoOEVLAAMPUXTKlztdTfwWWi") }, - { XHDR("vcurgfhvhgpw", "UWTnFSUOfoZxscWcsKMROmUSYdhypvSYnKAJLToCCLiMtK") }, - { XHDR("jllziycld", "tsZAipwMeMdWnpwdfPsonhIW") }, - { XHDR("wszzsodzjaok", "QVoNCnXLpdpnqCPDzfbvMgThOxupkfO") }, - { XHDR("kjwzbojyujkddj", "HsSAZgjWnMoimuHNwGcOAOhKey") }, - { XHDR("zknyoelkacrpour", "ePYBTNKPIJHgqzZSJorlTXQUFfzmdVWsdONGQUKtZdLKswA") }, - { XHDR("ypxfrfwgoqkhrbzxuvnv", "jXRJIAZwuZQOzxqvodhusfFoXnZjYGZzJVEgmmmWiwEBvvldHEyZryvFEdmdQMjFIh") }, - { XHDR("mdobkydzon", "EpxEMVVXPZhvMQeZGZwDFpZBxLEKxeSuxUjqMCIDTUTeAiFgbmexCCVIkttDDZJcSIYLFhtezY") }, - { XHDR("r", "TfCKpDMhhmdkTCldEUjwCPsSGgGgmmJeLbZTnLhOMDLnysHiftZLJuoQEFkVXa") }, - { XHDR("zsetsifqvvuaqtrvyqp", "gZjKttaInDghptkbWNXAvbMDBzLsrYUBSOawSkioBvpBenkfNFnkFBpi") }, - { XHDR("ipitbzhwiytqwdqy", "xvmGHtNXUnCseGSHXOddfuKbEOqyJBXMwjEpGigKHokeEVmXlJQJaJzZdWkebirWpHsLNHxHCeo") }, - { XHDR("ofdcatyvvvsgtqwleiby", "TLcZxq") }, - { XHDR("fselboemyqz", "sEIWfLDx") }, - { XHDR("cpfootviqtguwptc", "upUMopod") }, - { XHDR("jjjgjesjmwyripbtst", "hUx") }, - { XHDR("znuiekprmoxka", "cQcAjZSGyvHIBBqhFwoFouvtuOjLUFOihjjMGrtdIFlGlQuQGwKpwbeWIkxXimdsnBAz") }, - { XHDR("y", "BqTQplWVpPghUpkTtlxndazmL") }, - { XHDR("gztnexs", "qnnCnaMRIXjwjdhYkUJveWIkhoXUgHgwVHClPeQcSkKvOSWiRPMtfrB") }, - { XHDR("kqrrvffcabvlqhiajsk", "XfzmfGXVIGQgm") }, - { XHDR("uloatbuwatrjxf", "YxNOAgeapbrKjybwUMomUOwUvHBX") }, - { XHDR("queeubksfssnvpginc", "waLQprUwkWxCBZsspaqVGpAKASWYCWtmmQeTVVkBalVauvTaCPexfkFUC") }, - { XHDR("ojyptjkq", "cWyuIdoMeaMOwP") }, - { XHDR("iyugtgqheg", "ZWquKGbgZmI") }, - { XHDR("try", "aXcmzmntgMr") }, - { XHDR("wnglvf", "UqUHkSEKmlprZUeMtialTSzyGrEgTRGwjZ") }, - { XHDR("mzfdqugpd", "NWQquWNAJuzkfnjRhnCfQNpvmRfoHMtgMzyhUppKYaAsGTK") }, - { XHDR("qyeq", "bDRqdYeCnoLsFvuqPoegPWQ") }, - { XHDR("ccxbdgwpqafxctbrmp", "uIaDFYYtJjtcRkSlOhEtInYFHBjRZwnAexNQvm") }, - { XHDR("ebzwl", "UxUrsuLlOfDnzCvYrHSKneKXYCRdbruZNioBVleBzMQuuwdSmROtjxdAVgdQeSDHRPJpxiKJrN") }, - { XHDR("zztgb", "DPqDeWCQvGYVxVkrfaOXkgiqdzKcBryZrFtJJGLuygZHfQdSqWEZrlMQXCtsPRnbew") }, - { XHDR("qodwrogwygdgmdedqno", "AZOLkIxebrcbWBPwloKOnrlroRhzNHOaKlitZxRLsW") }, - { XHDR("oszulw", "UpJnYvXAiHSXnMhcoGqEwsApdhwDgxZBjPkbmdTNQTzGGmylvTpPVZOqcppgWQuRfpKntGdzFvhcO") }, - { XHDR("zqziumioenzlamrxh", "KfzRcJTSoUEZJafAepPvCBNygwVujfElilovlypHkzPuFwgvOnyNJBbBSRmpggEaxiTVzJnlJcTGVLP") }, - { XHDR("qzwdytban", "vTvNJbosRc") }, - { XHDR("sbarlxblw", "sWDeHiUPbvertgjIsdSOJvqlDqvTCUMe") }, - { XHDR("dga", "iZpApgFGyeUvnCKsuqDgidfJDZhfJPlDDHHeQnIkkvxqCTQIjoTMel") }, - { XHDR("ab", "bpBxCcPtGKKKRjNvgYybEOFbHbDGW") }, - { XHDR("ipkbsbte", "QATWJLaSGeRfumMtPptqzILgIPxBctnHtXiuaJYRjynSPqXCPQNOkMeIPtMJlrrbg") }, - { XHDR("hxhqvivly", "QVzTbNdSjpmOXwdAJVniyiHHqUWohkxqYQHPwLziQHOLYLUcLLgIjZpCeqLZSSaxWsafxkz") }, - { XHDR("scrbr", "MnWqjSczCGhDyQZLqvFohyvEPslFPa") }, - { XHDR("lwfopczarxfjwnih", "CEofICRYX") }, - { XHDR("mihxdzw", "rcvwJooAgGAGbZAlGLNUpWTRdVJPSoHwSKlqMxCZZqZrCpUkMqtBlUgYGczMpUAz") }, - { XHDR("acwf", "TSdzYcqZZueHHtvRWWoVyTnysHIcLeODenxkRJ") }, - { XHDR("riwg", "bknufjvvMbkCcJLQxYweKinbuqQNN") }, - { XHDR("fqysnmsjecxa", "ujGnNTmPwgtQUdUMnrRMmjQMeGqzLXucJCVLqksTsILfNPOdoRerRC") }, - { XHDR("hfluox", "nXoddbzIMxyceMNWHMIbTMqSouyCGpvTxxPgLXJttaXvLV") }, - { XHDR("lqvxkvn", "PlTPuIwkoETxwkGeSXYDVriEIyOQgmOzVUcWIfpGaGUGhnkHoyFQVCXdsxibERLNcJgZcK") }, - { XHDR("uspod", "BLxDfpfGVbuvHlq") }, - { XHDR("q", "TqqPaHtXiyzSXiftZeYChtzPlJiOKHTiEyyEteZalWdEKgNIEiUlxuakAEgiehTeXVYHRriVAd") }, - { XHDR("hiucl", "tZHVkwUPSfwXwUtjbXKDBGBhwdRtXZDNuAUHuoKTtNBByVtinurXnHGoEwbYQaYsTsSKq") }, - { XHDR("phu", "QYtuLblPzzeTuptqVZagGlKQHpNbfGwPBcB") }, - { XHDR("puhrmttcsynpa", "nqfLveGLQpsnVeCOcDCZMVlBwcGdRHoBSEDRTSVQLMqXbHkKqFGyNKjjb") }, - { XHDR("nchrd", "bPMPjTxjKBKkrhtaQEImGAtVXHnfxlgDYlFlUyzQdJvejOynRYTmOQ") }, - { XHDR("oj", "OokRqcdlVUmYPMaTkXmwScSmcyzyPqzR") }, - { XHDR("hhkyk", "DqabpeOTZYLqeioBkISUbIosxYRHnrTqXhfm") }, - { XHDR("vdcgw", "NiaptRRwgghIFZvefsUPjjd") }, - { XHDR("aazuqxyw", "mBJlYuXkrcgxiUJBzHVmymUsy") }, - { XHDR("gnnxozusfrgfmzfstmo", "KUUEXLxvTXJiMpQSPGCNvjDtrrsioKupkPFIqSmBfIaPtdqrg") }, - { XHDR("uoyhoigaoebzklcpmcpu", "euvErNcUNcxPaxBnehlysJv") }, - { XHDR("g", "JKFyNLpczAcZIyDdStLKfuu") }, - { XHDR("vtxtvf", "AJjleoYTAtfJTJiyLsIBVLhujZ") }, - { XHDR("chiorina", "rHJxXlf") }, - { XHDR("ixyrnrlidiccnsjr", "TfUTxrvuDyXbiUwXHfzfXaaGAgmzcVfwUEtExCxXWQtHoHGoDuXjTERlqhmKcpLZCx") }, - { XHDR("s", "JChQjzNsxZdfhjfGPoRZewnIYIwgGnoSfxkIAiuttnloWFtopaKUGJFZihZHpeZCUPvbruCIIbX") }, - { XHDR("omjwjd", "XATUCTkKbzCkTfPRJXbjYHo") }, - { XHDR("xqcvyfway", "kBuocMWscSkYFlmtrCaVgIn") }, - { XHDR("bxe", "QwyiNqPPYiArMsBRTNbtZcbguxWNeALPjXFDFBkUlWVW") }, - { XHDR("riq", "ZHmfQTjwAOalCCHNdQfoJcEqBABAFVeBC") }, - { XHDR("jmzzkizyfcypf", "iYxVoIKAGgKXkEgWhSldeZCJnDHMmSxXQyWAhYOOBSGMCfAUmhjLKe") }, - { XHDR("dxxbozgpeuiyw", "zUHFRYxIiyRdwOdNhTABKHkaSNunzpuaUSO") }, - { XHDR("nmigmlrmp", "UiKuIsIsGxamIFGuZAeDvbWazkDmzlKOunrOOArFZADevQhHlaLKuNWeO") }, - { XHDR("dndunbdlkeidbfo", "qMCiItJkjvkoZQiOAYfzLVeCcQDTGqr") }, - { XHDR("adrnlibiaxnuesp", "kdBXeHPrYsPLrbFMJXFsjWvjCECdHVhJgTAWGxySZXVVVjWQGdLLPrhReIMlzgKSKSnCLrVG") }, - { XHDR("wdgegxwsjs", "mxKHfOkRqBoz") }, - { XHDR("ghhczstmod", "kZWjIJcUjRYn") }, - { XHDR("jtsjcl", "PjfAR") }, - { XHDR("etieikayuyfoxpxyvl", "LksbeBsmLxTvfnQCQTCRTdMEtecXTIBoHenuYgAGjFNU") }, - { XHDR("ortsjjqmroxs", "sx") }, - { XHDR("yjnrealgcgldwxbnmtdd", "kwzmCwoMfeUeQIgkbAgyNcWyjCJJRsXoBLXNEUsT") }, - { XHDR("kikinwpgrtghbwubd", "aESgKTdCfGJSrtCXNkudcWKOSSCOunBDhpfUuLkbaTcqccprwsflFYYHTbzRHUej") }, - { XHDR("vzagka", "daAVFENdZJAbYdisHeoUygOGEW") }, - { XHDR("ksufgecyucknfoflft", "PGtqrkDwJjHoHgzCZAxau") }, - { XHDR("ddhpccmxrxdmhvyxt", "UBCZqSkBkmnkWaAoJrlUXCjwfkTGoCeespQgEynJbJZVOXejJSTbnoiNEmTEKvHd") }, - { XHDR("pyayomqwgxtmday", "hTVXBnUZfDZwoUpcOfgpeviLzBMlBmfKWEeZcoSkpHVqCNAvdxzCCuRWFvToZHnykkPWouit") }, - { XHDR("r", "C") }, - { XHDR("odptqt", "mWIhDVmzyAKDKYAtgccJfJCYjjovjAykWTZudLSNIjSk") }, - { XHDR("ddyxsp", "fSmF") }, - { XHDR("avmshuuddk", "GnsmOOQBMIsOnDXmVPpkwuXYxt") }, - { XHDR("zccyaaljgtmi", "CXJWDCRDyjtSTtqMEIDuUDuJKsJNSYKFYYyXfTSiNh") }, - { XHDR("kmlpnwotxjcywfsjpcgh", "ZxQqKMghmNuXLZwODjTvxRcsGvtTuMKGVNsyonXNsonyetEXyDwmwBcXgCFKGFPFAASoNWyQFLrvP") }, - { XHDR("llxlv", "RXiuJYftnopEdzovDPSKBtUpRxuaALo") }, - { XHDR("ljyijgwyuial", "kcTSDOzrxvwnKjeuJRtrUokJdAv") }, - { XHDR("loriinakrxfpwiif", "ixGwYKSuXJtVHzKgIhMRFpUEiTrMCLwNLPTBiHwEtkeQJsi") }, - { XHDR("dtugfipneosefrle", "uYrIHUfoFMurlIOOBrbpJAgTUEfeNcPutWIFBocXfDXbOsRzeVkTfbXXmHMTjWQLvZSaACsSpaNEx") }, - { XHDR("yj", "tpzdltSlsBRnKNaZucdMvCzuFVpIVtlApmNcvCE") }, - { XHDR("uwhvohos", "BnSaeizYmSPHYhFpLwOORlnzoqSvfXRIzMXKi") }, - { XHDR("fvx", "epYjjGDLvXOWrHxpOUujQtNJCGiMvgXBuVuexhXGYPMjkldpeHRDcqXJhAxHRaALQptAxsMP") }, - { XHDR("rwcgcgwlxr", "ECJoGjTqqYcEkVtYdFyEuLLi") }, - { XHDR("uyfxrpfkc", "BomCCYPmuwSrkoAMAMiBsBRMzvnpnPqsGHCydqJWJKXkOGvbTxWKiltoEETyhlVVFeWqCbmFXD") }, - { XHDR("zgibyegzpiywbywecykk", "ffzdlyRYjRQxRLWvoDdmuxgdEAJxLp") }, - { XHDR("koounzokrwabezmxnqhx", "bjFmVMAdjQeH") }, - { XHDR("jpneej", "MabKixgsoFOMdUiE") }, - { XHDR("ktns", "lkeQ") }, - { XHDR("itsobdekjlxmyhnora", "tpTOKbCYMaFRieFoatUICFacCSQRCrIAQCIqDF") }, - { XHDR("gtq", "EAjHEQruUWQhPHafRiouDDOIU") }, - { XHDR("crlnmsouqoibeodgpx", "UHlSSJhhVkMrdSvDdgomeyFlHgLYNPVWjMjjYphOulFknaSM") }, - { XHDR("szgamcxn", "PTHehtwSAWDmIriiYKWcROHeYqvBZvXTeBDdrsNNBcLZgTATEbafZvfxwiCkkCLKdcfXh") }, - { XHDR("cneehuzsfle", "fRUu") }, - { XHDR("be", "ybQfHITjGhZfwKXDguzMQJFxwZZEePYw") }, - { XHDR("jqeefzdtfan", "zYsJuJkOHsUFCQwRKdKRhruXkhDiGbFQzDxfNfvAeKfncc") }, - { XHDR("vvmkjdqbdrbtxlhgzvs", "MTuaqVrPMHFZKCJcwSwSfMJxukbaEtUPddkrnvcqigJlRCrvnYiXqOydjKOtwrwefuBgTDwtWLcg") }, - { XHDR("lpyoqrsmpwmlotoqmv", "wTaQTtuvAaVLRNOvWPdxX") }, - { XHDR("nqwwbweuzhnekd", "qNEEynM") }, - { XHDR("rwfgzpgvx", "BrKkUmDlBqsSScPGpBhOUvWYnxUksi") }, - { XHDR("stn", "PnhUXnpSjdhRYznc") }, - { XHDR("thrgy", "bT") }, - { XHDR("qbsltffvdlpi", "GogpGLpyFkmosnSzTfVUHqSEQrNczxqcHyycwsKfNLT") }, - { XHDR("gsouorduv", "qSjeipaVqvpGiunSoooVBzmkw") }, - { XHDR("be", "keEVxQtQuUMMwqIYVVdfAL") }, - { XHDR("qheptqbjhfr", "gsRoYOmIkgmMZNXLTquPiLpfoKAiurwlafsyXTufKJNzwkNEQegOMaQbsUVaKL") }, - { XHDR("eyqrcbqfkgmynrkpiwh", "sTOKCPzsQyfQkQRXbUZQySbkNdfxBrLACJKQeKlNLdObEHrxeeqvyFfMyRFiGAlOBGCnuGYzCXvV") }, - { XHDR("dlduiw", "xqViMWJfHfipUTuRGFJIOcilWDWsDpZRnxsuDZRWYDIJMLWQWlPxwVkzhlvDucGm") }, - { XHDR("shrvqxffbnu", "PzQ") }, - { XHDR("cgciujmepeidoc", "CwpVFXGglJR") }, - { XHDR("qkxmetkjnwkolcptlcy", "xnFErP") }, - { XHDR("uwtxdh", "PisyhGhFZrZFGafmkeDfLEUiMazwZZUYERYmFZqRANpjnobPTnjwbzGGOVMTMlcgiuLAwHCBU") }, - { XHDR("jsajntchprhamb", "jdzSIFIeyfwFbtiRfRwvgWfDHJjnvCwYKayIHzZySRNDQdukENTm") }, - { XHDR("aaijndn", "kOSKxKkrGSAdoJvqFCLgJgYOiLoSiHDfZZxdXlQaiPOOXwAcaHGGPLDsMu") }, - { XHDR("fgxukpagqtdukyn", "MdBGnGUswTsXNrrKLGZBzNbXCqxxNwzOHiRDGGOmxkZJnz") }, - { XHDR("ewfcs", "jEbQGYwZwdyvMvkFDNpuKGuNzG") }, - { XHDR("eourkf", "eRZGAxQjzEgXZrluXAknFXdLTvhSRcZg") }, - { XHDR("zosyb", "GOYhddasjXARutPccvWZyLieKJteKgrZFirhpFJMMhZTIjPABwrlJEjMRbMqiJgsVtJRUWToNyZuc") }, - { XHDR("umqwakrwkggnjxmepbbj", "vgOqorNdBrjRRiXafZpTukVxMNlHjjTVBLsDOXRCyaQGIQJBXWsbnGXvRRDcRlknEHESf") }, - { XHDR("njsrgkvlflwyuttmlgit", "PMAqZPSeLzHlyOixBsPVIcGKUypSUnoNyU") }, - { XHDR("hemstrqymzdeawy", "elQtKSonQyhJsXxDYwUnIUEYEZF") }, - { XHDR("yjtacvviy", "ukPFAaOfcvFFFQogRZjJLZduGMcSiyRRsP") }, - { XHDR("kzq", "NaTynabluquxScQmVGpEsNQQw") }, - { XHDR("ujcvggipxhvwwa", "VgIBfooZmvVTPNDjn") }, - { XHDR("uytffekf", "QHlCyPZedvrRIPKWosRjbNkIcTunfUCtRUdWwnvhyyBiIjWUejJkaDHiQaVQvwhqAn") }, - { XHDR("efdrcwfesbbxlrl", "bSfvNVnHNxmMLSRSxIIKXAYmqGwVMdCCFfyDuA") }, - { XHDR("e", "xFjEjnFtjBVHZMtMLJniLd") }, - { XHDR("naarqmbjxbxg", "kYuQIQaIckIVQA") }, - { XHDR("qbqc", "voCfGJkhMXJzsbAeuhWZqYAAJnT") }, - { XHDR("yflzocqetsugdai", "roseFhkhcAoacLjvEVsiTmdLxQcHqBwZYzzVqKVWErbudNdyRwkpJCFeXnqqQVC") }, - { XHDR("bsibiumxfaaxgaea", "sOOyutpKMIhhVnXqJTZlAIxCLEtjkQQvdNVAuetTpKlBLpeAbEQwiLNUqUtcKtAtlLRDYxEDXrwWlU") }, - { XHDR("li", "RrWKdzjejDAWrhkHci") }, - { XHDR("bokpfb", "yeGZIHpxHKgKKkHOrcAueipxNspWvThwTlVsVUnGOyKPgExAEknDEfJZaulVmkTGKiiYqKuuYX") }, - { XHDR("tbiacqmtkn", "ag") }, - { XHDR("eurswsgfddkupwnckmn", "veTKBvaropuqRQwmLMTUjgajPeyTJlodCbDWcLYCbEuXpUBuqfIuGXj") }, - { XHDR("krtmmgnftexuprnwri", "QXgSuBvShFqZOAyqdpkXvDVotDCxJPqhXvZXABWufUvirVuQUyUdnBpulGDbkGSKwwG") }, - { XHDR("lekbdlfroblkvn", "xeNXZbjATTUEXcMiye") }, - { XHDR("c", "NtYHzUsdP") }, - { XHDR("cdolxlsyovwrvaw", "SiQZyDLrTPJecDbclrejBgYHhRVclSndUmTihwgEZZZ") }, - { XHDR("jfaqpa", "rJeSkWDVaXYiffMwCRGzkjfJLPKtylMqcnGneXKmeutubyUarSWRwqmUOd") }, - { XHDR("lhrmwcokr", "BrOwRHwZoeisgxnTFihzbRnCditOLFEfzwQpB") }, - { XHDR("ajhbhkwgcdrlmydtkirg", "LszaFWbEkQGIKcYYFwEExJZoB") }, - { XHDR("scyp", "JovmkeWFikJsvCzzWpoFRXKxxv") }, - { XHDR("tfkfwjvijecmieonbop", "bYuEuJLGFBuOhLtDqNscXlQSTPxXFwLFOCchpNyrLfOtrMsnaqniCFNqqFfmxBNPXVKihalSmdAK") }, - { XHDR("dhppgapzrhanxpx", "tUoWlHXpdurgmDXNDhWaAKSGoxXwUvswZJZWWDGtKzFXFLFOQv") }, - { XHDR("c", "ycdUatpAsEnNTOxKqCniWbLbwmBEkaAmPpBJkjmYrZCAErgGGKyIGSsAgGLvwqunpsomWiFaIN") }, - { XHDR("ynmilmyknu", "XnAxLmBMRxlCY") }, - { XHDR("zyvfff", "CYCNkLgyFeGKXqsdeeaLjeJpzybPfozFUGkcOUWPPEO") }, - { XHDR("femwabmkj", "LavsYYyYwkpvrdfUCkxJphBDZlbIZeVfVKNguNfbOBchoniMnuHJDQJLJlGGjpYRIiRssVMa") }, - { XHDR("rvqriijf", "cTsrfGTvcAIEycQywKMSGKjzMIrWvVTFjRR") }, - { XHDR("lafhmfryvoghjdqfidr", "u") }, - { XHDR("xjskszsrkkwgc", "fzEhgiXUozlW") }, - { XHDR("rhcxjzevyrldfl", "jwqeLEBYXFfPobhLeZtEeAVpjVaGSPYWXrFfWFzOUTWLBdrLfVjOquFR") }, - { XHDR("duhyzznqtipllwdm", "KgTNpmlOZTMOQXTQcnzTLqBtiXWb") }, - { XHDR("caxbuaxzea", "HygLmbAEgkYTRKmwXBgznjghqaTvVMQsoKYbgxXpEdODpqYZcpynCyVsywMaFQbKFqzfxrUFNSiQElY") }, - { XHDR("mxsii", "ZshkUxYoUezJHYlFFNbxxLOQNOGxjBifYRlVhnUMKDNAXOnZaysMBfKmrEOa") }, - { XHDR("jytvapkmjyblgrt", "pelMEhipPKJAKsTLCufijyeZcshBWDMMgojYorDgTH") }, - { XHDR("sxurjycf", "dJxIiTSjvDxy") }, - { XHDR("qayaczvadgvxpjvda", "AdvZZFrolYcePzETxJldmfoGpDUhFgsWclCzpocgABZPeOkAfmiJrjnVcRStPPiQTJboUiuKGoPAZZ") }, - { XHDR("gntvhdqfndeqmc", "ZuRxvjdTSLsMxezFzHLkZjfgCOldXPoxKcacZiwrIrTwmmJbJznbhbfdPUF") }, - { XHDR("hmhjilagjbc", "gVVOu") }, - { XHDR("kji", "RXySiGKVABBTHQDQYvWBDLHTGVjLtDitiTFXMOyKDGFKoTXJwWwvGtqvozgj") }, - { XHDR("dpioawxpmzgm", "wOBaNTIjUpVNoqOtAFOaEVLcEFxUmPEIclNcwiXxGcqvFBfGU") }, - { XHDR("riscvkpdwzjbafxvav", "PCQejwPdUobncakCWUCBqlDIJQjqLFhwZsEsO") }, - { XHDR("nhfztrbe", "VZquKjisHXsNJyCfZUVhUAyyKelmTsf") }, - { XHDR("pmlyulgpbmapw", "QXoLFgoSAKqZRFHiJbGyGTVUhvQdOIczFClvaVfvVoNgiFMJNWJatBTkxrksGYUsOLVwxIUtHJrFfs") }, - { XHDR("wzeuxdubdreyayyy", "KEscMyqjJvHwRaUhrNjRFiLRrnvSeWsJpUpQfgipCZKEKLSCatAB") }, - { XHDR("blkggngj", "fKYBgDvWPasYYFTeegcGHyMVJiCYMKhYVsXSTzoptKLtRCVWsBoJGZaybobBJxfSiCBrZQR") }, - { XHDR("qpfxxb", "UcTEnoiqkRsvTSsoWAbFYBEmOltrHWqmh") }, - { XHDR("sxketsxx", "sVLheNTXkhbVKYOuJRituTamIdNRWXpeOZHoXeXgmYJAvhmDNVNbSeWKUXDZrzOjKjt") }, - { XHDR("ljhusogaoxvflg", "ZhavOjXdOTfvdBLKTfkljZxBgVopWYbRls") }, - { XHDR("erwfhprzmxhknxmmj", "oNdjdJVxleYVpla") }, - { XHDR("m", "BIaCWfpJkFnNbEyMNaIeFYAsQvJSpCgrUqu") }, - { XHDR("aoeymgsdjpzsiujoykq", "ZZRcdjAXeUYhIpCWVyDtJrqXraxrJwAIbPxoazZjfDEc") }, - { XHDR("p", "ucIinbrLkhKiTU") }, - { XHDR("vqbdivkgs", "QYxdiySqCGnHhlXoEiwSQeewxmtBiBjIJskIattP") }, - { XHDR("kiafkcivlgsom", "WCZnUJAHIKuTtVXtjrppdugNFCHSRFTSqRzVbLnHBJx") }, - { XHDR("uevahtcvvnsqxivj", "NWZbtOvQsrjdLFrTzxJnMaqoVOnoHjWGUdQPYIvsNftLcbXKHhJ") }, - { XHDR("bksshpwxxhviulph", "uwpchobemIkluNRKYOFHzMktGfzPQvnwZjwZD") }, - { XHDR("u", "FRlEfVPpLHvDFiGcHnOuLYWG") }, - { XHDR("zvbzjnkpetpninjrl", "YtbiCMyQiaVgvQekqFUylfubmsQDzpWcIQMTq") }, - { XHDR("kwcqyxbybeoxknsycqx", "dfN") }, - { XHDR("j", "eHDtDnyAciWsRMjpNuPdTssKFwHnOQWMElXDTXAYiJiaWVfScI") }, - { XHDR("nef", "hlcbdDiZjDnKocpQGM") }, - { XHDR("mlmmjejihdgddyhgq", "LQTyNPyaNuigyBfYzvSbXZqhkBT") }, - { XHDR("ja", "hknTakToJFRLnJdnnTnzyMBcPxCUPgQFGTVgoEEmCNcDTrMKlyPqdHT") }, - { XHDR("zghayck", "EgXbOeQtZbFrKbkCtKoetwKawFoFxsDvGkZQGIsBDKqfXtETX") }, - { XHDR("pgwwxokrdkevc", "rNopXVEwSEhxSfWkAqCNFcup") }, - { XHDR("tmkyxeesraaljziwxldg", "JLLTZoWEVU") }, - { XHDR("jaqfogeuybdfuawff", "vSszrmcBxupFE") }, - { XHDR("uajthlfavqtpj", "mcaVXm") }, - { XHDR("tsmwvcgvel", "FbjxfbDqjMHkdeSWrSsWtnjNTFSMGWkJdsJQHQgWfthIkXtrHHunQkoajtTgOEwhvCX") }, - { XHDR("r", "vQyakNrnNbdn") }, - { XHDR("tbzjwhdeouxnt", "OXKyikanvolQudsZBfzNKGdDDdnRmXsJzEvgYHmsQWwWEzswRCmJBf") }, - { XHDR("jkyrhpzniqrslglalj", "sShFxfAAVhJej") }, - { XHDR("qnggpgwmbgnksezblup", "zLPZbijIJLtAtvkiYEQmeaGBdMYktwPpuvVCfB") }, - { XHDR("olgttgx", "MDaBNdgcweWRkILWQaciiLLmTifhPPeeZsRRvFoYfdLvjPhlGoJECH") }, - { XHDR("ahowdsxdgiavvdx", "JkRitLISZLUNvmlVApIqYUTtbVDzSIsYtaYVDliwJjMqVcFeivODMWnOSPUOKHAyNJFTGRMvpCZWkK") }, - { XHDR("sevt", "rygUpSjDubzfBHRccoOlhDyhepuJwrklSjHEFtAZsgsTewvjB") }, - { XHDR("xfhtlrxytbpya", "mohIelIbiWOgrSYFdSdpxsiqwypQMBtIgDspmRXDGpWqFy") }, - { XHDR("fcmafalwk", "aqefglSbTsuRkwxezBXFBXaskvBsbXXkLIqbkSnAsRMSenufUaiKfrnWPSajuvPgIdwDjmKMuWYLBtO") }, - { XHDR("kdafexar", "GCViqiAtqiXAjUZirn") }, - { XHDR("dpwle", "LTTgGPPBVyHUcXTnEMgkgDOgeDqABRZoRokoeYduvfYUiussjWr") }, - { XHDR("gplyuiyrskr", "gycdbEeAhblSlsnxHXBnqzeHrPhUiIeXvIYIXvggIJVR") }, - { XHDR("zyovmgsslzxnqe", "mugWuRXSRAqCmRdDmycqqTazgsgxtNCRIj") }, - { XHDR("cjvudelwipjomp", "TOGtJTOjpodDjnlwkzTGVhfuFKNCKYgbczvNANycrMvrGruaxrgalnuTYXhTwgzPjirfDQcbSuCZcOTY") }, - { XHDR("usnkdxeizzagkiheb", "LbITYWgXITMoxDdrMvDUcmXVkjYuafcknUMYLsItHXEAbKqDpFXWiLtQUrMncOCXztTsOohL") }, - { XHDR("kggny", "OQRGBPUaZOFtMMBPPeRDNXVCvKvQDbwuaBw") }, - { XHDR("vuf", "XttgkaPlTjsIvrxcZjsrmSLxiOpJtDeIQbTuokfzQVTbqqeAhvakwllRIlSLEUhymHgoQVHlTFcEz") }, - { XHDR("jwrtlposksizzybkgsb", "WrdasnHcugMkSGvidcv") }, - { XHDR("hzskqhrrww", "EPmQGEWEAzJxQfOzALzANfbelJgbTaTtKWIPpldhIqIURTukYMDV") }, - { XHDR("fptnvz", "SUwbuXOjWtUGqCCyQNwkFmSWWhBbwgDrwFxvJXrikLIMgin") }, - { XHDR("xvkglzbzdgt", "vuKdgurBhjjKBerRZWeiwDQBRTKdLNbZjKHRsHwkuXpyDZNOAmwxgRkNkp") }, - { XHDR("privdoekotekypwn", "slcJiJdQYHisRlfRR") }, - { XHDR("wiuxgjjsdwvi", "JSyxd") }, - { XHDR("crzjowfg", "NpbBAIzAoHGw") }, - { XHDR("gidvkauzdgpcc", "PaEYxYEMOxpiWrajaHRlvoCsrZHRzWkc") }, - { XHDR("pfkunksrklqsozwcvf", "IoJybLRJvVHqaLopzZzmDPWAowyQwvOOlWbGpHYHVPggtbg") }, - { XHDR("tjgkykokzkwlefnkrhq", "dQSDANFwceNYrOlspxuMhzODDFYXoTYkAahYqwGNIrjQSuYesQnXJpX") }, - { XHDR("huzfgjsjsbecr", "CpozhOOuMAoGVDebVWOJqhXadAN") }, - { XHDR("ynbbdgo", "UBWnxXGkYXslfXCurjEhESfucmbMlzTWdUkWyQGNNhE") }, - { XHDR("onmpevbacdpc", "WSTmQOQetcgZoYtWkK") }, - { XHDR("goohbnz", "PxMOeUfWucjLHWQAHQvlfvyqmQglEdxXWSoaNxFoGNVwLvEFDBlMoVehJfFcLZarDpgDiCLrTtnbMra") }, - { XHDR("nifuyjyxwz", "dmfnRfncclbKJspHqjpEfyCIvFXIDuhbuJzyyjOvCZEXBYBSZtOXNipuwOSbRhIWWrpQsSJ") }, - { XHDR("ypcd", "jmfdQA") }, - { XHDR("rsqwfupguwhp", "byBNaLpIjJJqWIATBhCHRRCCYSBgaClLmZmvLXUwWCwJTaDzXNIcsjvqXsXupzSQYf") }, - { XHDR("tcevl", "qsdUNUFcvEHcjnKfXKCgGixcczQUKNjWbAQXUaPQJFROFMpufjjiQY") }, - { XHDR("nhlcaavhs", "jeWCwwWfcL") }, - { XHDR("fyjctmcn", "VnbctPXdzieufdeIQQZMBIIlfRkuYhItDMZOFeFstiyzwEtSnYOKRKEWSwuRxKlfrIeDJPL") }, - { XHDR("goegjwyrmcxd", "GTlLWNZORigxRCwQWwaTnXSe") }, - { XHDR("wmwabeywdty", "bhloHxJhzUMtyxnOdNQmwWEToNXHpDICxC") }, - { XHDR("adecljecdqjdxxke", "XowcuRUuryMyuoJKOOE") }, - { XHDR("qacuzeqkdqckvqtvkldt", "gfXSK") }, - { XHDR("dpdoxjbpnh", "O") }, - { XHDR("myyheisjzibiekkemo", "UhXlhqMemmkefzMnOpLhVvuOzPkakZuAUtBZOOaOfkKgNjiIuoXuKJfM") }, - { XHDR("o", "oxCpQgoSLOghWbkTwGpptUhTjyfjIQCqLTgxFySFXVpDmWLeVBVChastWswTQqJmLtObFoqFUHubp") }, - { XHDR("haiy", "djnNnLeYczAflhjytahV") }, - { XHDR("znajtwhkjpqp", "jWwIiKADFYDHkrWSAbiiVkWuPtANOPZxHmWlAS") }, - { XHDR("nzfydba", "UnfJVdhCBBwYOwtRfCJrRFJhbXTIVDGAzcObLlbZXyuCDbWIZnvmFaLDFIugjTpqo") }, - { XHDR("zvldoafaolyncdm", "ldqucsoPDvSiwPSrdrcYpooUTNCsTaeltLnbpPbvskUbXYaBLRwQYiZOMwnjQvk") }, - { XHDR("unkcxpghzgj", "GFgnhiyTlwRWlrXqTvmkhdmcWTvzQVrfPkeWTRyrdOWtoRtRJbbYSfaCgagS") }, - { XHDR("ssjszvs", "ZmMNDVQkexevUlpGGPHIlDPlUiYrtjzpdokwoukvvHmqaCbFXJHdmmdnuevwuclTBGBZrBJGicBGKkmT") }, - { XHDR("shkqymlyzhowgfwayy", "fwjVwPAFim") }, - { XHDR("wepyzj", "wgFwjHUDndQuIEnKrjVpQPdpOzvuQIQjuOmgfcpEprqWOFfGjAHGkxUeaXhoJbBAubuYaKh") }, - { XHDR("gsyzgysinhrzkkq", "ntSWFbgzCjBIWZjgbNDiwfEyMndAGPNxxr") }, - { XHDR("pxgs", "ELYuTfuDewQUiJwCyMCdXkCLJKuRrIZDAKjPcigZb") }, - { XHDR("l", "XsZpOfZssLAjqTUQLnvvckWvOqfdwrJcIZhxXNveJAuSK") }, - { XHDR("cd", "AsrTtnkXTIoLjJUfIxt") }, - { XHDR("uchagyddrweiozgkpxw", "kYjDvuZfhyyuFBaLRAwfbCeObeZJSIYqKHoxaZOvBXjIexyWL") }, - { XHDR("ajfrn", "UrwJ") }, - { XHDR("bbncvrldolonql", "y") }, - { XHDR("pippynbc", "tjodRNZEeujSyDccqyybiVsW") }, - { XHDR("psydc", "MXFUObmwuZlmRufCOjFM") }, - { XHDR("ni", "FPpZucbMrNuZLGgUkHYIUe") }, - { XHDR("eboysay", "thGxWsULRGoGmJf") }, - { XHDR("yrnzhgvmxmodrjss", "LYmiZUvMNEbjkxgDhuffkjqRoQsHptG") }, - { XHDR("kegoei", "FfuZnwtPfZNzplFUblrumjmBoJyMCjsQSdzWQHegxPwONyYVmCOtYevHIfZ") }, - { XHDR("nncyjhchbfdmv", "ElSIDqlMQlmPShjwSFaFFbtoUoufLVoAKjTFRorkgpSESBed") }, - { XHDR("ykrukxad", "DGlYYfuAAQxtxmgUoipBnrloUyGTTbfIAOPfsXhNRpIHXZevICRfSGMTgtWqOszTTdyhQirucUkR") }, - { XHDR("tadwiksrsiw", "LtpNALBVCDcbHkNCOoxhs") }, - { XHDR("zsgszhfrtqikdautiazo", "RKUsdwvZzGiRcJjqrcfkEEgSjqgJEMrGvJJIUVhXWhqhdjwtoGrjStFyMrkoHLQrAgjj") }, - { XHDR("hkree", "ZfuiOqmjHfoixfNzlhjLJxTJlIvpWlnMof") }, - { XHDR("ndrxijhmofuabgq", "XSRTETKNaWdmCCtgoMgHcmIaJoFsOBItgthVTDDBGKRPGMKRzhpHjbqznHagmfRHzFjRKYTVcMCOOoT") }, - { XHDR("oyqjuclvcgfgnxfiaex", "bzIKrAgtKYhSlYwhqbLzcpEejxztduzUwaqSNRwTjmrgE") }, - { XHDR("wvupz", "EwFZxrpjiXixPmSKGVwJUePLtGtWmIO") }, - { XHDR("pkjfmcvbmha", "tsZlaG") }, - { XHDR("s", "AVLDDvKNGNVzMPgtUTwzXEeInMUFGioGIzJKGwooAwcKnnYUnQDUMalAfJLdGswqpVhBDdgnKvW") }, - { XHDR("wwiowygghfm", "u") }, - { XHDR("ibqifctbupnunzc", "TpEcRjPmwAIvgYwMRzJPkIhbfSmcxoMRMFcyNoZMMUfNUQptOPZzEfJmnjAoHu") }, - { XHDR("tujctqww", "YAQnArfaOhnpQPCGWYEEVTyxeucpwSKmnhihIcYTtupBFO") }, - { XHDR("tkmimppxinhwwjxz", "AzjTrWheCHkCpYJwXvUOJADHHJhYyElwIXsS") }, - { XHDR("ncpgasxxplvk", "vKwqV") }, - { XHDR("mzkffjcpwqglvvly", "SADeFBojafTCcIWXuCzhRzHVMDEUFtnepwNBtZHumtTteziIiRLnFNEvVTtEQvAQQHwfpdspxygYW") }, - { XHDR("fohuidzttfmgmjv", "TYiWjmEXPlbQggxqTMMkVZuiWxBDAezIYLLNvuiSzTY") }, - { XHDR("mgcgtmwenorc", "EPTEHjRPQNxyEJjUlFlXCwxNSadNiCsitBmvIJEGvuAiGsROPt") }, - { XHDR("zomtmcsdq", "bfskfmzJcYpBONMwBCvCENOxELtHJNzTeQCgRm") }, - { XHDR("bxycnopgrsx", "ZoWrSOFLDJi") }, - { XHDR("xyyrtwzptfdx", "SZ") }, - { XHDR("kyfeymusfpux", "EagaGnVEk") }, - { XHDR("g", "AGNXNbjbyzZrFDdzRDRmcgtXHdbdQCOmcsHsbWrKJPoCpDVEhMleBpEiufjkGgNNFh") }, - { XHDR("vawonzawrsgqalzhsez", "moBLgGkCvyrVqtAaFIxNOZFlKRGxznxoNykjRZeTyG") }, - { XHDR("shbolwlsz", "BVqtUHZZMDSJwwMckPOTBYXfdGWvRuepbHVaJCwCPxMukQKWgZmmsLYovQAgNCVf") }, - { XHDR("mjbzyhkogs", "KOZq") }, - { XHDR("hhvmfldhctnoeklu", "LwEQLNXBIzaTLVUaybbaHwCIrrzMSgurVHhpWdpR") }, - { XHDR("eyaxkwx", "KGYvicfqmcsDkYnyHlrLd") }, - { XHDR("ek", "ttdQFoOpqvAjPqRlPXswVcoLfBbdxKhvctEmYOTQJzcBk") }, - { XHDR("vmgoxbzbq", "dsdxdCUwZjklQcqeTYZuJjtQJCR") }, - { XHDR("vvaeyangwecvfpngwd", "AkDmldvofbqkGGsMQMvlP") }, - { XHDR("buqziphyxdshhlii", "zrsDLTxXtSDMEUSfnhykdKkamxHxrGvdcdhWCNVRtbEB") }, - { XHDR("qlxaodzpbqa", "VTFXu") }, - { XHDR("psnhhfqlzuxdvgjbb", "hOaJofFsSpriNaiLnCOVrDozuAGeCfHUYnimhFpxgfLjejLYhrWLYHMNMGBqfOmS") }, - { XHDR("itejonsdvbzdsgaretee", "FEqZoyCJXpPspOrygnMJpKdPqaA") }, - { XHDR("ljsgczciuavhs", "qvbtCYrLZyuiIzvRoUvHfzCoKAFgneiciOMPdBAdGrfrKABSGXEyvCCArrkkNzFKdIRznpnKBWyL") }, - { XHDR("pqmsqfhkjysazuo", "rKYHILkJMIaRoJhbMeem") }, - { XHDR("tmjy", "SlOPRDGbjgxWdwfyQYnQgGMrqfkqclcNDESaDEnrdycsdmbMVmtMsNEVZhjpqxIxJsYilaFSdtz") }, - { XHDR("kzsiqvklhfvzjpxhvrm", "lxOjtdzHVKc") }, - { XHDR("wxvfzwcdwjj", "TSNaPsXynrVRbOZskUKgVhYymIBQzRDcuiVqjZNjWy") }, - { XHDR("ewmax", "HuFMOKMGiZqlOkREAgwpFQmwryndFbxTDqytBhdoukBlFOFFJoHeJvinWeTTOsCWtgbp") }, - { XHDR("rygcdpzringgnsckxqy", "FgLBRduMkboQuOJOX") }, - { XHDR("uj", "ugkinfqVKgvmKbxcBiNGvHtEHwmsDodNLwXxgXcgklJPXMvNzUmzCozckSNaxyPPscaRK") }, - { XHDR("gmrnvtql", "ZYZwNCZoTJMnHEsbBxlnlngPEfVdNTpGeiDHxovYDDgVrcLSh") }, - { XHDR("ckmclzavcqgfecv", "WoxnqLWOuYtyUqlhZjNHSjSSWIsLkbUBSNEi") }, - { XHDR("mmcqtusezefyou", "xHMbHCPzOSqfpYtFKWGOuDHSgZibbZHnIewpwYTtzomvhwYebcUAUCdfePpJtYOYFpeWzKIOWFTmoZUx") }, - { XHDR("ouzwjigfejgwahvl", "sTbBvpf") }, - { XHDR("pfxtb", "FjYBxvGtihWSRrgHxLeCbelrHITDACvgLgqqxTVTZX") }, - { XHDR("tcegdxfraa", "ErZLjknSGwbZTEXfCahtHWkOCXtsNiSuIRoGOqMgLxfTmDQyyEsvkJKyZwuG") }, - { XHDR("nuzurbdaqzjnkvbftqr", "UGWOjayCUqjyGfsbHmPShSdOVqAQfHnfkaKkfGLLYkxrPBXWgeHfoTFc") }, - { XHDR("mgtwycdu", "NlcBSATCVbf") }, - { XHDR("liljcdbtniefxplgu", "VXkMbOFDpGMOunvPFNLMHFcQKktnbTQEiIojPuoKsApdjyeRCBAWCoXiOnGZtZacFCM") }, - { XHDR("pvcbopmltcsdtp", "zDardxBPiptDHxQNekDJuOjJJfOAMJOjanhTvhUZzYalEJ") }, - { XHDR("bumqnmiluykmfcrtynio", "XoIyscXIaUBQOBvPmNCSnvOowrLplnIfzRCzDDbKjyWQWoVgUtgOIygdDJsAWVSIeLBKtvSqE") }, - { XHDR("ogxksbxohk", "LkJbFBBPNDoaXQwLaaruIJZCEXICMxHWFBBInpwNjyqdH") }, - { XHDR("txplhcuhawlk", "EmPJIMYmkJZqhoTVsUeaecZlWcizEUaaNOMSeZDUY") }, - { XHDR("jd", "SYpynnEVlfJP") }, - { XHDR("xbdkgsgxenebxglrequ", "vNmtMBqMPUwFxwOrvuqhXakwBdFVQIgtUuQdFGBuPSr") }, - { XHDR("nchxs", "vxdiWuuEzebZsUbttEoJOaSMjJBEMrsUnvXlEcbWcbfSzzsXb") }, - { XHDR("ndvmoijh", "BlrqXioGfBeDMqLYljhEdA") }, - { XHDR("lafrivdirexzvlos", "o") }, - { XHDR("akufenymvo", "YIFtJdOFgPnglMoPfbnMKuYpd") }, - { XHDR("dfbfbfplwwheufjkqpeg", "RYJIlheTnoCzLJhJxsOjhMITOZKTDJkxzJXEiElStxtNREzUEuoUJiAIofhZtLOvWiV") }, - { XHDR("yjyx", "HIdqbnJRQKvmmDjgLpUjVrJQcLcACiqOzcnANvDbaOSSszoFfaclzyZGvXWahXoDcVfJRmwN") }, - { XHDR("xuovn", "dxjZQUL") }, - { XHDR("sxofvrkcuwoyliooblv", "WCDXpIOetFqFS") }, - { XHDR("spknpzdxgvnvp", "fzRxhAGiMRJJVYCZZfOAKOwaQBILkDyFkM") }, - { XHDR("bqhpqkhgomwsq", "wVGZkIrncbYTTZeYgVUSxHAjWTiROmvJrNTiJXTwUtYIiWUPAj") }, - { XHDR("proneafrshmtfdhaus", "RjYbffLXsoCysahwMzFEytDIGHahQl") }, - { XHDR("cldystizj", "aIufNqhxTAOwWBqxOCOgujojwKNbhopitvktjPkHuXSJBCkrCoivDNyoiDEPkPttzrBBlRll") }, - { XHDR("pcyefuddszexh", "EgyDHxbDjljXIpcvcfdEEIKylYOPRkihMkYmhHvCOKNxmvHhfHbJ") }, - { XHDR("sianwhwqzem", "WBi") }, - { XHDR("awayzdbmdaumer", "BGIVShTHCZDbdTlPVzMJQuMAskNgaTlPLLtDNpMmsooaSJfFhDMOV") }, - { XHDR("xa", "AoXuhxBuAaaPcedRBhrKDGjEdUIaivOsgIowzHxlYGXXPqIuJAUovENEuvSwb") }, - { XHDR("speujytsdnkt", "eKKHEhznRmoOsEKxhriEEXLrLCODCpjrMsHxRuM") }, - { XHDR("admdjmllnjfjly", "mwVHQXRMvTOLPhrXZaGhjuKKHPgXjZJRUwTzo") }, - { XHDR("cvyu", "rxmTBTGoTShIhZMccIUuMsXmJKOxnZoseOMmobPZmfGtwtdXIOsFu") }, - { XHDR("nmzgklqiwwopxch", "ODLBdfIQYvoYTgjbtEIHMjGEIbYMODyPYPwFDcXszfYIvIzslQtKEEcRpWYnukJqrQMOrJecd") }, - { XHDR("ltaoqkzjeokvvvkekm", "FYrRX") }, - { XHDR("w", "WGitGnSAnrcmJtvXNqPTHoQbjJvclZJCQRKoDmgn") }, - { XHDR("wdivqlrmemgz", "MeCUwKebeFJgYfwPGrVTPeWiYVphNLQzsyVnRpjllocjKVmlftaQaKBJwDweoVosSAhPV") }, - { XHDR("tdminkchsicgtokj", "nbajyQYgSN") }, - { XHDR("nmuhltywfspdaemhlhlb", "KyER") }, - { XHDR("htogxwylmic", "OjKYPtqRjCeXXMBjptbxTUuokCqkOuvDwTrwaQhHlzkiFGffMIIUbOICLQUeiBErEcog") }, - { XHDR("inwzxfsll", "FeBbDTUZHJnNaYaAfDURpBQIKCBzlPBB") }, - { XHDR("txizfdbvwoccss", "aIMpzdYSbxGirTtCJdNeXJSDpQQkYVNAEFACMdE") }, - { XHDR("qy", "uPfkuRNoskHKwNhTEgUhIDQ") }, - { XHDR("fzmnuzsfixqzmlzqyme", "VWTyTDMvThkJeHvsDZhqHpMPWcEe") }, - { XHDR("ehfbetdudzlsqjql", "IGfkPBblOTIjkaDbtMnAcgxwmMubcKMSSqUuNUSmfUBhqUftyQNufehjceVRLQRIjcV") }, - { XHDR("xfnlowalvzmjkgjal", "lbRxrYD") }, - { XHDR("gzy", "sBLY") }, - { XHDR("ljamoup", "PwMWIVGpizHcNKCMOUtcCjnWoPZrTwTJmEZClNP") }, - { XHDR("opaadlynclz", "TLoXwBCiGHcFoYoSdzJjoDresQafnhggNIwFZJrlFQZbMRLYVDuBmzEwpAJuWNmi") }, - { XHDR("gfhqnaf", "CqnpTAdimiuMvqTd") }, - { XHDR("lhuciyueg", "BMvKfBFytgwBBoicCrVrwJntbKflLGRDIyBwBDTijCxhctqGheCp") }, - { XHDR("vahfl", "TIhbarWmpcVJTsWeVhXKVmBZqPQzFsecEm") }, - { XHDR("sadlo", "ykOvQBSniJOSMArDmdIHgNfWBoFnrVdOJHDllPwDLAmnnpWuuVjJTgJXxMAKCXVeoTPmFmbfHq") }, - { XHDR("jqkvrunsvllkxliv", "XvcxDWubBfwF") }, - { XHDR("vuirjierjchukpndd", "RZsdkucvtHeeSBbJlpVVqKVXFPtJWPjxakRgvsDUbEmgfJsxGGwIpDeZNUFFhwflZOHGxNCmbn") }, - { XHDR("afeinpmqinbfw", "qTqipGFkikgqaEleGfHtF") }, - { XHDR("zjymnbvvyzcacasd", "kfkJPKoDMIhHxmwKFdVshOOAcQoNPsbYFLhloiXmt") }, - { XHDR("zr", "qSmpmDypGFIGDnlsrNznkNDyQbkVYxbnCDWtRVZKIlGHjteZY") }, - { XHDR("btswwnfx", "NpIfPWNMJrCwDKeEcvCFjertbWVbkrKCftUiRSMWncOiZekQHUQSOd") }, - { XHDR("pclgxwkncjsemvgi", "KFDaNIMlAHJjKFadXEOQOEEWdEEd") }, - { XHDR("tjkyoizmokwr", "rnYsgPUVGFKggSsxnPJseyXCbrJO") }, - { XHDR("ufsxickzr", "YbrNOcmEIZMfWLseEDlNYTsylzHnGFLWjfwaBkypXh") }, - { XHDR("daicztuocuurc", "TCcMLGQHjNGZxIWRIeXAOMwivndenepatoFmUPJXmhzLQouiSziTBgruUDtyMajXjCHmRiJCalXwlRrR") }, - { XHDR("hrwdik", "R") }, - { XHDR("uopxpnjsskxbyjeuxdlp", "hzjgGviSpzmGuSopNYcR") }, - { XHDR("wrpqpbaoioovvgju", "sKaQNQEKFymvAEsTWFzJCJWqpgALSIABZzgDSKSVGBPlFAlFDEM") }, - { XHDR("dcgufxdpinusocxenocm", "VWNWpidhJZcieeXYJWCsbcGLzeJZRVjauPWkrHCXmnhUNonwmkXJnVcQEhkZJTVMoOC") }, - { XHDR("jlgrhdag", "puvXCiJYAxRgBCQxVJmgYaKqkHUjpJbFhszOlyQLbZwynwaHDLNfbhcHYPvnWj") }, - { XHDR("ksufwcstrz", "kJsKTkSt") }, - { XHDR("bauzjmbfo", "ZRtpCtPzDaUkwgjKoGjLLqoAJDrSOeahnakVrhfhuXnXZAHRsXkOTOnHfUWXgdhAaEvtFbUY") }, - { XHDR("ofha", "DVGmnxcgNHQzjcrAObRpyquDLcRosuOUgBJntwjHXfRibVieUHtrkYtwvGzeUPaHJIAzq") }, - { XHDR("knpvdmivy", "KkQCUPgMfYmegarLFGiVsnNPQlY") }, - { XHDR("gdtngakfxsjgbeqmwhb", "JUDvfvMUEMNhAYpvcWNSSeAePxUiybANTqrHpHVSewrnBCJKuCNMxXBoVygTIHoPPRVHNjCUOyPwLsoc") }, - { XHDR("g", "mOtPRotWbFuDBnKJJjlokRoJuYoegAnBRle") }, - { XHDR("tdtz", "wRXnNtkclCNJSkNaCBlfFIZhaOsmgsXhOncXaHPYoNLSMZxRtpxpRCsFjd") }, - { XHDR("hoxmbswhrj", "TANGekGJdXvdGTIlqZbSIdrmVylPOiff") }, - { XHDR("rxssbxmojjjozqdlgs", "zERFYhjXuaheNcRBfLSKntFfRetAHdQFCkicrkoofGfDpEeLS") }, - { XHDR("pxfqtkrusuvtmlsy", "CJhoXqGNmRemePXASAJoqBtSjxIBDJNUYGVYoADvTLJuEfqrrSPRrDkdUBHGeXD") }, - { XHDR("dlrhendtu", "bsYgAAGdXtgvicTKytktgdONLBrtyMheGRzWGdnjZcsuwJUskXscQPWfPrxDhMdkeQbbC") }, - { XHDR("jmlmkfvcq", "lQAFDWslWwHYeOchFRDmsuwLtfLsipIZXBRfwthoWpUe") }, - { XHDR("agstrk", "DQUiaYtVbLnMyYW") }, - { XHDR("eedlf", "iSvfsgXjBokXhUojCGZteTNOKSrciSMEiZnCiYeSCTKqrLtFjnrRDNTkDuiwwwmNTqiC") }, - { XHDR("cjynnhzpybsv", "hDpzSdLlhnQXAaJkQggzrLVIZyaADYBwVwhNyhwGyondWksiqxdU") }, - { XHDR("hgxqyvpnzt", "VIRuMNssWqWLgdGnuPN") }, - { XHDR("xjwdyqehlycjot", "WpLhwRRzpWJCTXAieHxWLUpYdDLghuZrSzAUEwaHyodxsOZetuAfZgqT") }, - { XHDR("wytretztksriuplag", "QOAIQgnIXZpFSFcsNNnOrApOfWnpPSOwBPRNtdIxReV") }, - { XHDR("ufwu", "SUFabKksOkHUZBClEZqkCsIfFtXVTXkkkg") }, - { XHDR("vh", "ITLCxMzqlZLtYARli") }, - { XHDR("pwkpsxmneecgmnxuizk", "DKQfpG") }, - { XHDR("jdhmrmvzzteyrrff", "mSRrvNriHsZdWCcGThDkRMisKWdDlSuIjapEBQScCmwRfPcMfxXbCMaTIPIvTkjYQrWb") }, - { XHDR("uxpkrphmmzpuusct", "hVzKJSzEsbEXMPZbVXsZvUOeEVnlZrAbUAEFfeTVfrReZyotacvCLvqPghJKrkBYmB") }, - { XHDR("dsoqzneeaoctcn", "Hdd") }, - { XHDR("hlm", "BLCAciQqMUmnnLc") }, - { XHDR("aqwkubnz", "cbdsfekVdrQczCeYGrTItRJtsAsKmVVViNsaTZokFghRqUWlkiVjSXLynwsceEhnnsf") }, - { XHDR("nc", "GGkQiEKvCQXNWcDkXOlYlRxHxZUdWhTIgKQcVXEaglpKGLtFcKxNGSfMRNGY") }, - { XHDR("whmhy", "zAHcSlGmISSzyPtlOrUCMwgXEOfLBmSgwdrXzOzg") }, - { XHDR("oyahmagyk", "GEQGsuigFlmXycjPWZNPTvjBeuikMEPfvfrdhlfUbnDMoputdWmimFIQotNKHMaRs") }, - { XHDR("enmjqrgk", "u") }, - { XHDR("xvunuwvsswwlnod", "tiSqLIxTYeOPCseKneBQhYjBnSmLPuMNjTwxXbtZMJXOtiLwpKJWHOIJQxATddN") }, - { XHDR("jixglh", "RitgoACiJtBkVkPFLiNTUJJjWDdNDBvVpVmDchhfxjJDJmaEzOzIsccMGzLUhpRBiGDsZsx") }, - { XHDR("whjbwgjec", "RQcYcwWEuCKhUOpjcgpRYcqOSTQbXD") }, - { XHDR("qmhmsvft", "gLONOAQUEwPaIyZswwtYykAqnIUONscMYyisWoaqDYbTqQDnjMZxSHRPTVhsgZZUdrWTqQrQH") }, - { XHDR("gnnqtogtr", "bFKSPTDHegbuoeVnuXlJufJZZstYbktdimJumHD") }, - { XHDR("nul", "cuszmbNnfssujAuECV") }, - { XHDR("ntjgqzyfvhazgsg", "IKGyzBHyWArvYsgLmHmEPNbsFVbO") }, - { XHDR("nenwt", "OpUtpYZuBbW") }, - { XHDR("nddednek", "AtUsHiyYDcXAGMDxKYzUVkqHNKfejbTMYkmxHvu") }, - { XHDR("nomrbdton", "BxkXYNmMHDjGUufU") }, - { XHDR("oyzgswwjailstxdxe", "paraXtFcjYlRApIuUFbenFNPpeUWlgQmsRpUJKirVmLpwpznvh") }, - { XHDR("uwtlscilysllgu", "rhcxULTgKdYnEqsDyZcnMRzbYe") }, - { XHDR("ywfizr", "SHLZJmFlXoBDOtyQGQBZrdyEXbJHbFLIQyFdv") }, - { XHDR("celuxmtnjw", "vAuABGRHAQoqPIiavkXVMqElwstnolNjrXPbHycfGPZKOvkDGjzqfDcFunODJtiPc") }, - { XHDR("zhvakzhdjrazhqg", "yfyHMMVmoVCMRyQUvaUWkScNrTBRyIDchdLtaDAtBL") }, - { XHDR("broiufwukpwbdwos", "cMcRlhwbTalpRmuVXgastqDGUpTkdn") }, - { XHDR("kuivvzrzuqyb", "RAcRdtSEFEUOWHLDTPPGfGfbnuHMMaDHOfIkzytHEHuNZHYWTKGkZbxtH") }, - { XHDR("crxkekspdfaz", "VnZYalWOSLVhdEswAyddvravaDscyMOtJUQWZDfMiHMxpliVUhSoHlROFaPeYderMjnbSosvlVrbocZ") }, - { XHDR("hnl", "RawdBhnPWERi") }, - { XHDR("uyqntmjxiyuzr", "TRv") }, - { XHDR("omfsn", "aramrpqXcBtUDKGIXTGXM") }, - { XHDR("gsvhxomti", "XyxGEKDCOCqgSyAFaeihXPnTFxVUsfmXTtgOtDHJFhkmXuaEcJpnD") }, - { XHDR("careftrs", "IjjZPcMhLurpXmrFg") }, - { XHDR("ggr", "KGH") }, - { XHDR("zuaaop", "kWHVzMeAOXHzrcvMsEhjoyjaPCwGCrLUpzhODTHKmdyMyBVJDykGIpnCrrB") }, - { XHDR("faka", "QWNby") }, - { XHDR("uqhunzubrepb", "LOiOLyrBjDIPOYYaOeKZQVeyfVmjkxPpTINXsmIfwCbrMiLvFQtVqAhRYUYuzNuaKCYVxIKAz") }, - { XHDR("pjiirl", "qKUNVWrVshOjFEZCyMBVjLGdfhNTIz") }, - { XHDR("moeifpem", "laCrqSuLhXTycQqjiLKqhLFHpWAvcIFKrYBImuwvdLVzPyfGSKRMHmlQIKHsTo") }, - { XHDR("wux", "FTyIkmIiXiqjMhRd") }, - { XHDR("iuwbaeunjhvnhfcxtz", "jQABqiKDvZQsnIzDVXVYYPYCkTaEHdDaUpKtpOsFxnRiecmfrfFCFBflEYQFFhrqDKzMJBaAc") }, - { XHDR("znotjtzhomtkmpyxqjuf", "cypOBcR") }, - { XHDR("maptqdgkvimroqujsffh", "LgvoykAlumSevYuYHcjvqeOARdbSzj") }, - { XHDR("mjvsbicuw", "vURMNfeLehTppBzDn") }, - { XHDR("vemkeibyhm", "NFzZSyQoKuoLbU") }, - { XHDR("afxlvhkixw", "qdMiIAOuokqvdFPdT") }, - { XHDR("kdsb", "VaaxPEbpMvcXfvKatmsuAywiZhRTynnxSBDAgAjQDTwYRUcgCHdjsXkBxAbrPEBAZGzzUohPZdNKJIU") }, - { XHDR("uv", "rGggEyiwFsirwGvVuFLQNwbnlIpvqLDRCPvhtdWPMdtBLraoJjymdgvroMiuGRFQfWdLWj") }, - { XHDR("iaqczrcsq", "TcTWyzo") }, - { XHDR("zxsgnzqxywlu", "WmHMRhIVJlaZKEmCQkWCela") }, - { XHDR("yckllscwgetpljebush", "FfDDPjAvjgqfyAgLthl") }, - { XHDR("jlkqdyqxvbwirfxczwyq", "eHGoBVSIQlJY") }, - { XHDR("rqnef", "yGQlLeU") }, - { XHDR("msxgpacb", "uCtJBBmXazciRAtEsUIADKppRtbVYqsHeHbmTytoakmvqgYyuQaRxuL") }, - { XHDR("janejomfzgbhrcujgs", "PLuVkQHBDDco") }, - { XHDR("rovfducmcdc", "pthNmNZljhCwYFmSnnvac") }, - { XHDR("hmuuzhsrnxiz", "zPCjYEeQB") }, - { XHDR("s", "itslftswvQdWuLwbfMnJuYfgHYcGHLnSDMXfPVonDUYHEsC") }, - { XHDR("amqmznbdrpwkkf", "YNEiIwSXKOgRZDWo") }, - { XHDR("vofueclcybwykakw", "joBzcmdzzbVuFFGIWuSRDwiapjZBZJhpzelpfGykgPDRGZPzJikyccIDokLdyRe") }, - { XHDR("edgxqqhbxtje", "CqtlazNuJgd") }, - { XHDR("drb", "chToziZnVBxWVyMXxcg") }, - { XHDR("kiukzmnlqyf", "ttXQcsVuCGaApgJwkBwimuYanhjIwbMHMxDFGnXpTPYMMzrGTGLbUHaAxCnkbNqwZbcRDpALBEVIssa") }, - { XHDR("skicgadpxswl", "uWHQZByYSFBkIEiBkkwoBURSCVjCAgguKbKjNucEq") }, - { XHDR("rnwtdqnq", "OwNGAtfSvTxXDvXERuylLpvrCCCQSiGX") }, - { XHDR("enappok", "YaaMIvnhXJRnNaUYtDvALrldWpsLbtrEhdFVtBgfA") }, - { XHDR("iukc", "qPShmohAsmVgNSxpfrOkGxUGJxbybKALfXJxTcbMSTKUgwWiisPKufULlvwBmvOiuQL") }, - { XHDR("slxnjuvjdnh", "ghuaEQjOpzvP") }, - { XHDR("dmjs", "CkYyAyadNRxVBcLSMjJuxcJnfBRcIPvtuHkgoEwNtgHVXEnRWfeVuMDRxjQGeOGV") }, - { XHDR("glmrvypredkcmnfhhz", "MHaPChvQovfniWIjSVGjMRNUvdRXcmUaMpMquKidPsTEUVlwzXYiXqWrrMNLojRTEQWTm") }, - { XHDR("ij", "JYgHFiBkGZKPKrJTJX") }, - { XHDR("feumefytdsfotj", "YlbgDsHkENYPjXBGAbrCwyRSmEVXQLOfEqGL") }, - { XHDR("qu", "sAVZYnxmtLwqERTICUNJJcUdEgomoiSifXCOMjXMQTwoIprHIfebQNNwEpdRIRzXmUKCMR") }, - { XHDR("bdysmedtkecddghjm", "RHtNCpkMBnfbcQhPWdVrlZDoQLiWSocdrJeYFjRsMuGeGwoaaFVtqETukfNiI") }, - { XHDR("slhpfpksmcegbydurqr", "gjVuDeNgkLBCUKjOQfQfrKzMfubgHubmGoqNOjTWktVjtyMtHpayymiPBvCze") }, - { XHDR("ayg", "RpMUZkjSQBEgaoffRNFMAHfOKiCKvYtNyPtEDEqzyMbuzKyXvdkVzEUebbnzBgTvdWep") }, - { XHDR("eqirjmmfysuur", "awVfIKQAnQZQYyjTuTfTVGxuNNIhm") }, - { XHDR("ihhiubfvwsngprfmzdnb", "cDyaYRDHSmjsVYVymPSdZYhIhLxBfYbFmhjzolzoUPm") }, - { XHDR("cbarnwfwfrgfwgnxjzy", "bqsvgwoLtwtVEnzHcrvGWFfDJrLEticSOBpxaYsxKDARNpWLWisvYIfvKfppdlXqXoT") }, - { XHDR("wlhofwgkx", "TSpmZiyFdBDUNFBbtQCiOGRXSjTIeTyDoZNYyPbjAicVEtPtpsBmisgw") }, - { XHDR("hp", "ylNpnxcYFVQVjaVDIMulBJphyENqIcVoYgJUMrDF") }, - { XHDR("wijfkjb", "rySGkpzJOmUxNvZeSNBgPjugqCjHUczBaqteZEdXdDnrVDcKb") }, - { XHDR("cejibvepdiqmzp", "XShWx") }, - { XHDR("rsvfhbbn", "flgeKVXUealtkXzrkeNbdmLBWeTmTmvvF") }, - { XHDR("b", "jUMVJKvzDOcePkZWPVdAZHwaKyKHkxdfZJZGzcFNtlyYkaqhKecvDIzGyEBoHvjUdVVdeaqMeDxQnZr") }, - { XHDR("hrgw", "rBEgzKCxiEXvsAAQXHTIWHCEpRQiTtjxbfekogavbCsCcCjjWUkbYQaCSNwvllvRhcNrbHeboYR") }, - { XHDR("cihldkjfxtrivbl", "xUwWjgmimQQzOrtiqSVrsPSfcPWbuyvHGKXPnyn") }, - { XHDR("bputoud", "eOKrvUNvcprUkfCLmqQsQuBbRFwRbyPDHIQNLEARhuqFMUIPrDlxWbfqjqmgFiREvbJsXjapnSTBAXC") }, - { XHDR("zjrl", "sApFIAhEbEuuTMZvAlWvpVkoMPMJVzcxbuXDQcmlFvqePkKbSQJAxrNZhkOhXZsFEfMdn") }, - { XHDR("pevee", "tFyoAeNyxBwHpUZpgWBKAubLTicqKcnDQNlsxwtXQXl") }, - { XHDR("qzrafegdufnc", "imeDzqyXxxxEfgnOczYcacdrQBIeJkBfPFytrQICz") }, - { XHDR("cxj", "SXjKAh") }, - { XHDR("ytjwfcwbkfquyldrjjjf", "BnypmvaotBgagumEvaRlliHuwnJrzMYfzSPxorO") }, - { XHDR("ygwdltvfv", "ysTfFMFyqQRsDVNwbqQRiWKpppjROCjHefCBV") }, - { XHDR("oobeytfblhydvyzvr", "lQiTRHiFmCitqpYmROMrdsQxYwYDvtAuYNfsOpQXuSoLAbOHncqHSTxOVlqkjTQDQi") }, - { XHDR("qmtsoqvif", "lkbBUVDMKvrPZhWdppQEXJoxJxwOoVCBJgUEVucmaqSPIJqGqsFpxEdLsDji") }, - { XHDR("dyusdbvrrclctdu", "zdfoavCKPAIMnjLXHRcvHsrdUSRnGhCuseAFhwopivNZTHNsmSNloVIxwsXA") }, - { XHDR("qsluzlnxkwhcdepqd", "MEpahDNEQrNFaSIJiYbnjEVAxyQsEBoHJKuErRjwYTyDkUyQzmXzeRutKrTQIlAZlqEAUyhDrbpC") }, - { XHDR("vl", "uYDdVveMSHtwrrTi") }, - { XHDR("buupfqcbpinyrbagyv", "HXESyLERLbVoIxMoKmXIjMjsESmrgfTJfHYchmRQNzZVNzvuiCLROntDHqQPQnjzPK") }, - { XHDR("nyguszmtzppuwxycoczp", "zWEjjlizRHzotSHxZcdUYuUzVxYW") }, - { XHDR("qbmdarolrbvplc", "QsyyJigJjvHnISyEsZzrNquYBqdLxAISReiRxKcTAUxXZevVAgBCXtMXizIVCGeCRQympuMzSjiS") }, - { XHDR("dheyzauqoq", "ZPrhtJdIrKeJAUecqd") }, - { XHDR("jkosgjltdiyyaqihnuwy", "dQuzxYGsgAGnttWVtRZFpPUSecPJiOEyEfmZMVwYthLGqOKew") }, - { XHDR("qwppaftou", "UJDmFVQjBvThFqnnfBCeDnfbFIKckjCFNOnoUcyfcEOISaiLGenegIliQrMvPMfd") }, - { XHDR("utxajljluiskjxcmztm", "viWgbRoZfqLdpGfcCWpwYLfDgRUrNMyMaYacHQYzxYofDGKmzKDVN") }, - { XHDR("tzbuyrnisqmfi", "POkbPpYNncbFaApIryNIFOkboGqoRxNU") }, - { XHDR("rtdqayazcbzudbrq", "EavNiBuWuhAIgAFosJQUllOAtlRC") }, - { XHDR("brejbqskhu", "NrbRvKaxTcHKbvrwimBwCUIIUYesbxcB") }, - { XHDR("qcngjcxrifqxkynry", "ROBvygIFCIKoDNLxCZoHuYmPebiBQkfkNEqzHIoNIvDdjStHtDqFKcIjR") }, - { XHDR("ckpjtsw", "NLtY") }, - { XHDR("hbolsjdpewaghr", "poAFtaGLhwYFqxJrLKdlyfbuQKwNrHRNwbHhadhHUPiwsWGrxqKvuDReyCdxovfzCwNugeHoWGqMXpA") }, - { XHDR("enkfrqeynxxwkezncf", "kNgGjXejIoMqcyjMsweEp") }, - { XHDR("z", "YEaMTNRCxcnOnpo") }, - { XHDR("jmi", "ofqZOSItGEWbWJyjjRGGHXsReVaiXAvTFcHWTYlNoHNkxUpqyvKOaKcdbZtRuGbBifqT") }, - { XHDR("shkguqsuwxxslnabxbbl", "GsGDFwIS") }, - { XHDR("dtm", "SduFQQR") }, - { XHDR("smegqradpnrwaw", "AOflZzHXPheThRfyevUeIYozqYIDXDjvwLHIxyWL") }, - { XHDR("hrthsbqdpckprj", "TvNNxXmfhqHxxTZkzhHqoMzoQQjpJbOUWGWizPkvJTImlkBSTRDdoYemPE") }, - { XHDR("jjjmiixx", "RrnmVVYUyYpEBXzNnhDdjJyxIMelzhzyTmDNsQJEyfrLkOGqCJhN") }, - { XHDR("akzgngpt", "scQFE") }, - { XHDR("zgemjriwgwl", "ERnTUPtBKtVUlcaiOBZaxHSvwIoaVedfqVHeNgIMxXl") }, - { XHDR("uqyaf", "LoOoFDrUkkGUHxIgSR") }, - { XHDR("voxoeazjhojgesxxnqj", "mjYOiMSxmGLflOTRqDgAygMFhVHiIDOwTJbv") }, - { XHDR("xydb", "feIBzbWwxOXoHLjTohmOpyIQEKFQXYOvrWlBVuPgrXgUWvTOARr") }, - { XHDR("mtgolhtw", "tRpnF") }, - { XHDR("nx", "dLiFkdFzsbRcimVqToPFMzyuUamnmNdrhmeNHJElqhkLeSdreOwPKppqshIjNuqagbIezeTVfoiqdOQ") }, - { XHDR("enkrcjirvsodlaxvegc", "wwJ") }, - { XHDR("cyuxwqzi", "HytzwMinsrksgklXmQwbyPUjFXhiERfJBeOHnMaVjMffAGdKxbdJYZEqgfnePb") }, - { XHDR("s", "VQXrDscmUeGSIN") }, - { XHDR("yqtajvqjtgbmft", "oQXdKPpnFDHZRsdgofuLdXFUQlbwRxlKjzYSPsTNuYRhZtQMchhCSnGbihWjVvGsZtBYOkeu") }, - { XHDR("xzhxyl", "SypqUZNiQdOUgBbY") }, - { XHDR("hif", "WsRXLcwBQAqHgEuTloZDYhvdiQKFZaujRCiPinjqQ") }, - { XHDR("kc", "wzxbUBcCKreosZCZQLIvyZidCXhOaVPAGkmuioajjdJNljThad") }, - { XHDR("zolhmx", "YIWpSczACUWnWSuvSTE") }, - { XHDR("fpklvpkwhclxhsq", "tkHNvzaksREsIWVdWjEq") }, - { XHDR("hzwjvbwitartskqo", "SOAkUzMXQfhudZOAFUBXFSaOfUbzvVbuAVOkcwcFoHhDMTjPtj") }, - { XHDR("swiuxnqndptmacvb", "jXEpddZKlc") }, - { XHDR("rhqfnehffiiodybyj", "CbkXjtovhYCTjFgIjNsWWmdPwoISoglJfrINxrbXgFvkrGeeXCHLyneMDZ") }, - { XHDR("keeenqikmyjvqu", "cKKOVrELzjyIxyJmBlMmzqSAGKIVMzfixPqwneVekR") }, - { XHDR("indjjsr", "wLOLIJsnuKLplJsKsSHmwVViXhzhYBYqHlkiJiSgsgjcTAqKTblip") }, - { XHDR("wkkasrw", "jgHIXQOTRwLzxgajNdqYUbNxgMTBEsfXkVzUIke") }, - { XHDR("tihsataiidsatm", "qWESANVdoNJbbs") }, - { XHDR("sgoatqjyzjeuf", "AQvceACWMRTWvNAsKVSfBtSI") }, - { XHDR("nsyxbbgnbqjgjkt", "O") }, - { XHDR("efwz", "AzMuXGBdqomffqwKprWRoqJKXcQNyEFsmaFzHiWL") }, - { XHDR("dwedpfp", "hZJzDySmJWWJSBrIFNQBVmAjyvjsoOzSxdtAzjonFUjOgKtJQpukLVW") }, - { XHDR("tnubteysfp", "ClKkSIejIuJftHgsKLdbJIlVvsKftKj") }, - { XHDR("oxq", "ZEPhGRMTQNnLtiKXkPfdhV") }, - { XHDR("erhkei", "hVPOVPvzpjCJTygAqoxXFFdAMPGdjmvuSMtnAMVafDKUGVBblSKZnzqibrPEexbwVnRnm") }, - { XHDR("uhzdtrddgxtsowdkji", "ljWvIbTgRjacndOiaeJShfenzudL") }, - { XHDR("i", "nami") }, - { XHDR("gdwqqh", "iSUgfdKAsaXHhOoKBIXZnWXrbl") }, - { XHDR("qwuvimhtdga", "cIWRdEZP") }, - { XHDR("opyby", "mmMHdiHNsXsyUKhGSDlmMRsxzctObIT") }, - { XHDR("cxpcj", "JRSMcDqiTIwQZcnXqBaTezWZGAHedAiYRYlRvlctAsxMVovVXqbLgotignZJoyjDjeTFXsBJ") }, - { XHDR("zeyyqmyujljjshojva", "eBWeWrWQJKKRGpDffwsgvQwUvyVhxlBUjFLPNSYPXlsaecHmXOrKX") }, - { XHDR("uvlfa", "wnBYfHlorXlqaFYBulycqkXyNWIJpjMITcDzlg") }, - { XHDR("wntcdhlanasuulpla", "CZZDYwdFZEAtQwTfpKVgFXRfbmZUBPlTlvWahxcCgMxxvBuCOUS") }, - { XHDR("qrogpmtagv", "mDqosSVQzWIOItaFWzjyVMqrFCJqpkvMVoxWYzLhwuhmGMj") }, - { XHDR("wolpaklelxhb", "xDFdlUGYccaSmZcllmRmzurlUczQzDDzEWxevwFeNlIwIHPmgwAYpjxezpPlZXvGlYuLubPfwT") }, - { XHDR("alltf", "mdJPRUNJBztOXRLDpeHzOPhVFUCfuLSLvMxnaZIhbfJTCVtxHENyStutFnRyI") }, - { XHDR("ujenlxtmupuhwbew", "MxrbgXUILZIziAUEjcefRsiPNKpzLaSbdgRXhNbxKg") }, - { XHDR("barkquwmad", "V") }, - { XHDR("fxuvtvbuawbeuhrrzw", "uEggUGJtQDuUSqkGADeTMScDXwVV") }, - { XHDR("krsqgkdozitjvofvll", "LbPvRGdrQVLsQkdRQGGlHwakPsMJzDvJctvqJPXCcVgxNEcMpjooaBzLQfkUsQVYRqFBQwlW") }, - { XHDR("mel", "fHlcOdlrIjdmNtIQwsWHOZsSHETrqYshrwCTToddddkmsHMzirNVSwlBOWzoiEuPEzLGxbULCl") }, - { XHDR("tfejpitlrbqiln", "cgmdJcDk") }, - { XHDR("axqelxrppsnapyrukd", "ARGdFudLfDzNqdeBBzgDBcHRXmqgGqOXiSZHuynHBA") }, - { XHDR("lskfrgeqgrveltmx", "JtLLdXdObyUivYUvqVxqTsweOTNEVMENdNLOuYyDKbfyEZ") }, - { XHDR("gv", "AzighmrnuDLvbiyrZqLcszetMxmtglaZlqxqIhnb") }, - { XHDR("xhiruvbhdrjvimntgyu", "XRwHwvpjWljcIZASwfeiteqbodiJOS") }, - { XHDR("ogvmvcmjwsroxqreur", "rsFhCCtxGMetV") }, - { XHDR("hfugyqsnzwpmvciggyo", "nGgwwfAhDKoovyTgwxDQkfgeagrwSGdGHduzoh") }, - { XHDR("toozlltop", "PIieVJc") }, - { XHDR("bvxqsnyic", "sokxGfzpRkvHFsyuSeZAROoYvXoiDeAtJyuAHpUXNHmhCFFSAFxrqrdiJYbmHybabmt") }, - { XHDR("bdivyxrx", "TkLsobUohlBqTfghcAHJaPrgSnSPEFhpjMQJQQn") }, - { XHDR("ku", "RStseADroionkaAokkPxxcybctGQBsMb") }, - { XHDR("pvj", "rNYliByuQJUqObdYDMATqZkJGgXobbMgwlXaTZfMpXmBeVFSvLcLzIalgG") }, - { XHDR("ghmhulm", "qcN") }, - { XHDR("ojy", "ahTwxPsUiMVvasSyasSMHufnVbXPksKfQw") }, - { XHDR("lfrmikofysjqbleotlsu", "CGqbGCivYggqFMbdfIagPdZzsLnLHSezujpYLpfVDNIX") }, - { XHDR("ciwjcrgjpirlptwsnvjr", "ABuiCGBfLIvQTHIUOiEEcefssaLhqGOctmF") }, - { XHDR("tresylduwtajilm", "vbGyUfIIxQygtXTpPWgKhWsMNwpZRXPAbROpphSypDNjxQQ") }, - { XHDR("y", "OfbtqFWCwTmYHjhETWwNfAwcLdZmXSbKCHlbkNKttXfGeMH") }, - { XHDR("lrkqecjeks", "fzmDeAcELH") }, - { XHDR("ucwunjwiudphoiv", "dBIsiPCJkMBHewSUzIOtoxUATYXCpKcMzyDveMaUxDkJBAJNWDDvaMIpYZExwFulC") }, - { XHDR("ypejrcvqiedf", "JGgTCABryPxiEFrcpkCmeATZrhAAnwmsUDqGF") }, - { XHDR("z", "hKGxDgriSrZ") }, - { XHDR("fz", "MMsaOtOyzXpXDctMnfBVdlJthMsVMeYBPcwkdGCJBHDyYrxLqYQThH") }, - { XHDR("crdnqftw", "yXwUEZNHcaYBKAfREtFNVEeXcoSqijWAgBavvZoVthprZAQgaiCwRAdYUldsmsMNoSORKbJnlXPJ") }, - { XHDR("yuxfznhjqvasses", "BHkYgXSffTAVHbbxFHrSBzlQVgnoYlwGeCpnPgkdOeyCqLaH") }, - { XHDR("exhpn", "bixITNuaOg") }, - { XHDR("mnkxceripjpbzitef", "FfHeZufCXxZRZwMywFnJFxiDWuBWluwRqWFRPCwSEsGMqiAIYyTezCsuIQXVutqCfohvUBAkrJkYY") }, - { XHDR("yroromy", "KDcLHjTIgOYpTBsmJxxJHsDHLyCrNVnOwfbpBlZPBGMqgqNqSCzkAbHWAgOPnmoHm") }, - { XHDR("uqffirywtl", "VgcUmtOJNGFDkBBjgJrTVRTXOtJpDoeSIPfHFyLxGxUqaRwRxuCWYuQtWH") }, - { XHDR("bizinf", "ctVWmnYPrtAUHYFtxNjUzwYaODSMsVmOCGgVJQNjH") }, - { XHDR("onslnulgnkn", "EFChbJsxElnGVoOYnBSpYDUhgrzENrNS") }, - { XHDR("gmxyejj", "IGgc") }, - { XHDR("u", "VGZUCDJjZtriUYZUahKdQgqQkYkKBovZSjVdKbnlkOwmjSRWJksxowLjHzTFeWihsDKsLOe") }, - { XHDR("yz", "EeTwRtEqtjnzrAzNWiVTNXlmYswPJkn") }, - { XHDR("thpymwsfx", "jvimFRzFhGbKUtrBFSXRNRyHKBM") }, - { XHDR("tzhzvlzwr", "TJYwbStgemHoMJZOHtLdRpMaKHjwqMcToNyReOgGWNoFeKUG") }, - { XHDR("ye", "UEKrkbwMgETlBscGXvtgOJTZrcBkVuSmOQVrqyOpZskdSScxnKeAKyFFRtnpvJBjpyfnNUwsYkliPIG") }, - { XHDR("ofgummwsscgshq", "aBHoPZOCkUEKCbXEcCgRcrjQEcRRXmyYLItHosaAcNxiniLCNbrrEqe") }, - { XHDR("kuxxyvuwvcywlzmji", "BI") }, - { XHDR("nagrwuouyfgescngvls", "UnbsOoAKuRbcHHMPxTWggfTPzinuARICdWlf") }, - { XHDR("hbmdybenjzvyfphl", "EvqyJSwmxFNRwknOzWyTpVbsdsldyihtjmcsjPla") }, - { XHDR("gwcgnvawuogwidcoxi", "ZIhfOMgnEoqihkNZjzPhsmfNtIrDDSYjDdirWTkmAvvKUXmdeiRBvVaHahGDQpZQBfgXwkuOLYSNz") }, - { XHDR("tnpwfrjofhvxbszsy", "wsrdBeoShINCvNUvmIUBLYK") }, - { XHDR("hdnjeplyp", "DlkiC") }, - { XHDR("etgbpdtfscwbdcao", "KhcPzfXjnEDWPplACjNXYygGRMxtZfUOgmUykbykjFpwaZPuAhryxPihxjSuBzqnQo") }, - { XHDR("wfpvw", "XgalcejRNlKsYNgijuYxxHsWWUPtAzbkHaLDikzL") }, - { XHDR("qrbgxl", "nFoRxmhykrudZ") }, - { XHDR("cs", "VpanIHw") }, - { XHDR("svbkpmubxlrtap", "BtqMRxaahUQVaSFNQVOSsAraZQZQQciGzQOkPhyYFZaEkRxhxOcaoABRqmits") }, - { XHDR("xqdrvmnouqngnbl", "XhLMsmRofgeBpPWjYFXduTawFvItiQqwGCDaeXStuqFIjyscOJfACrJxttXxI") }, - { XHDR("xxpta", "KEEnCpgGudrCJzLpvQHQNEbydLrWhigEZNhTpfFtMpbgdyApiTki") }, - { XHDR("a", "TzswZVZfXnrNEHvNrCfCZJJQvFkStrMDNdJykVVWslhQctFGq") }, - { XHDR("mf", "VIEOfCyGbdznLJsjdkn") }, - { XHDR("nhnkvhkxmzkhrn", "uPXEoTBA") }, - { XHDR("mvinplxinifgm", "CfxWAkzXguMJKEBTeKXVawNHEmEahdycExYqlHRUF") }, - { XHDR("ddevucctndkvoje", "SJCwlQEttNxzpHkszhJitBZZlzWiUGxolfqKOQyg") }, - { XHDR("nxkbfgsaa", "ccwBDsIhixaoEanounftGktnORIFXcbhaTlABygLHMyfxNtwkjhwstiuvBKiGTSEZOsY") }, - { XHDR("gnpoljnnzdsdeiepmb", "MBMojCquAJCXKCDytTzYDDfaBdWRBRebLHCA") }, - { XHDR("shdbslgzvgqkwd", "wHUStTJBXMkowSWoIleeAesMthxtUttVImuoAQjqDgFXiDyNSOyJhzYFrvwfnlQJ") }, - { XHDR("vqogz", "aVtVuUPsMMjNtXuUMHjIBHtH") }, - { XHDR("anqvvytdfblngezrswg", "hNbXbefRHkZBGBMIvnSmPBEcbzlrPxJnfElTYw") }, - { XHDR("uibffqdxtghvdxg", "sVMjNifwhMbAnbe") }, - { XHDR("nlqxucrigupocioeuhxm", "ZoXeSuUbopDZARZDalgyDCsJnYOpfyNQpgycrNxOR") }, - { XHDR("lqgi", "SWtEWDHYdy") }, - { XHDR("fzjrzckxdk", "tPfIZxOQtbfeXEXaTJcINMFdmbclEIHqzTkpdCTMUoMoLVykv") }, - { XHDR("jfjjbmfdtrjlk", "snvcLknEjkJltCzmtGoVIGqX") }, - { XHDR("hirdausffykpftqbacrx", "uBbDuQLnCPjCpzzUmWoFopxNo") }, - { XHDR("zrtaxbmiopvtnm", "YOgHDvavuYnMPirCnlMtQtgDGh") }, - { XHDR("bndrqikpesoi", "WXEVwEPhfYqqfYNfbkThdPiTffezsEvfgxBcaBcqpiZnGpsnWsYVgwHhrLpUxJJIHtyxiiN") }, - { XHDR("iqdhcl", "kDFtAbpuAkWdiwcBjJNNOnfNScPUlQKCPKHTchdcSUJEKDAoitgdwKid") }, - { XHDR("nwkxeftucbqrcanpvwmx", "ltwQpFgfUFMT") }, - { XHDR("lflvprux", "qZDjmruNwxoMGngisQbDRkiKDqFboZJCo") }, - { XHDR("vmeanv", "MdylIJfpArFioLJmRRuHSVdywkekwCmVrezlGxixZGrKjsqnRI") }, - { XHDR("xxbttztvmjhji", "ymmISbIWjcnblO") }, - { XHDR("rasixyhn", "IKuQwfDclsiHLZZekBIHBwGCYTwSbJBsFQXZHTSYUIxRsnUqPeW") }, - { XHDR("bbfemfcigau", "pjzEnUradOMasmvbSMLwgh") }, - { XHDR("ooixk", "rYKSrYtRMgispqgYIxEEDRrQQdZzxVZJlW") }, - { XHDR("hrtvefpfymgucgvzrzt", "DwaByKiWKeZwIAUPoIkZEwqlydsoLgHilVTuOkqGDgmlkZgrRNn") }, - { XHDR("gyuumoklqenme", "hXYcZKIOrMs") }, - { XHDR("seeqfxbgtmchxddcrv", "lFxwHdbtsLcAiDLhlyjZIi") }, - { XHDR("ospzjkfgbgaodwiv", "KRSXTcroBUgGWbMeXgPvwZOhglbZZGNFYaDszjvgEQYmrdJCrgr") }, - { XHDR("zexwqhy", "FguaCueuIXAqbCuEOnKN") }, - { XHDR("gxshbkmlpaldd", "MgCFotrZSwixmxLWzlgiAZnPNZuhIQCeVJfkrDkKSKJWKltHTBVXYJLFJQmGriAVnWXAyi") }, - { XHDR("evgmaggkccgj", "RUooXUxczZcedzKZVCwERGglLTCTtuNuROyJfukdCKvoIAByGtJmANyBlteAU") }, - { XHDR("qowthbousmms", "shhnhaaULLVfhxxXS") }, - { XHDR("hsiisrpnu", "iNoiGTscVtfaQcgjibundexEQlg") }, - { XHDR("cfgydnidcf", "cnGSVRfjxRIOcGaBxYrrGpYdoEEJpKYVRoLDaLFvPagizvTzpojl") }, - { XHDR("rgtrqigbhm", "NqwKCtxbcEqYayFtCjiwDieuVQtZd") }, - { XHDR("sdvpkdeykzd", "CnAHfSzyBoQKartxMhWoRTWhQAAphaDfVQBYwEIGTxWDXloQJWKGPOpsYICxXctWLVIcVAdoIk") }, - { XHDR("homvimlanteq", "WnvhNKqdmCIeIUJUpzqbcDqQenXIkwmMdrhvPrEOqqbUhqaDmyS") }, - { XHDR("igcuipkqohmhgj", "oIcGPrMgJbGHTvazglbgqgFUbPqSETWvAVoHRklREgxdfUBLfOEfUnYzzWRJzHGKyM") }, - { XHDR("qc", "AOkIVxsV") }, - { XHDR("kukbxcwuznfhjzwfvjf", "ZXTLYSCaCZXITvZhRrdSrPCcnvunQKxCxBeXnHfSQbpcIHQzRCPsYTueisNpJvLBUA") }, - { XHDR("uyiwvafpbgnjuefvwp", "YvGXlmzhiryRFRdLKcEEbDgdoSqVR") }, - { XHDR("icgrxgmlxnc", "tBPtHYOjNElTZLquYPhtiUk") }, - { XHDR("koamcf", "GgKnFJrgrjeaYh") }, - { XHDR("id", "TYCUIiIcyDCtIPxLcdtoPVdnHVkERygnfYTertGctGgSJOCdRLwgnkXpJohGaFztjnpT") }, - { XHDR("etgxunyayxjz", "cvCLWgcspjQHrBJMjdEJCHljJomSdurOQDfbFYBXIahRQIyXrANbqgZDAybWRH") }, - { XHDR("rfinemxylnvcc", "hrkaLZGSkbTiSPEfykSiwDliKSBwbXqaRcjsSJiGnBRfXuuyeFYGUhUS") }, - { XHDR("hyonkpeyv", "iaiBhQdZWLgOTpedPAMBqeumDJNYXjfcVDOEKnlqdZYGbByqwiKYeicUoSEGvU") }, - { XHDR("ylbsxbdufdmfarotf", "xZHIvgQxAHJbqTMxSuNbEhFqEFoGQDKiQZQIqRIxd") }, - { XHDR("irnxsfxglplsxylh", "XLaYaBMqXLcxbdvuJxmiCQcrvfDmAZfwOjQJiXqtCvjwPgaEzkhmjlBMZhcnRhLIbqT") }, - { XHDR("cqfdbvaciebywdfzxagu", "aBaubQhktJlditlQQUcVlOpdeGjzKRztfxXfvoiQQFtogOyuOgx") }, - { XHDR("zzjamm", "UXZdMKxABGDeOVKJvKojfBFQCLGSHhvGPemOP") }, - { XHDR("xartjpme", "mFgLGNIsFFCbEnQzUQLjmsnlUjKVuOMVhribsmTaqvxGCdRGMnyDHum") }, - { XHDR("fghpi", "GFfcrgDKzAgEIShyLXyYJAZ") }, - { XHDR("ntyhvw", "sYWZLtXoiNxBgsgnANdHcWZAMpVjIXdXZaqICDhYCCnFmLmNULuPnpkLhMgbPjyFrfWLCsG") }, - { XHDR("uhfvvka", "k") }, - { XHDR("qxnjmqn", "JyGnfZDEaJyLZhGWfjFYfbZqxbzPxiFXhqyWcggjcXtPRyCCL") }, - { XHDR("k", "tIbDSKoLJqnokivatVAKemOtKXryViQmZrjxnxtqAfpZvTIkdRbAaP") }, - { XHDR("dmsnb", "xCQiUNwibBrzXKlszAHTZhcSeBvaRtBTZspcWsSfWTgWITf") }, - { XHDR("c", "DGWJtdqEFURiegJcAMukbLAjlcnGzbUGKAXFFYsBfGhptHyNNytVylLDecFrmBqMJNUOnZyOZYHa") }, - { XHDR("fjzyustcftornkpobt", "qwGkRkBoiFLmEJnvadZVqSqAFPXFaCKURvcjbDbDoZVIRapY") }, - { XHDR("ujjinsdmmcxit", "aUFHcjyBkvgLYScAHAhUxuBUlAKXsZUDINxGXEgXTidJLF") }, - { XHDR("iojeihckwbiilmpjs", "cADVMcmYstGkTiTekEXveIISsdfirNjSLoPdJzYSkpbdfnikYBHChMbcPbxSDlb") }, - { XHDR("neqkbju", "iQJaJdNpslluCsFTeHGMydRSQpjYbbptdDxYclWXlXgycVJOYqBhyzPiRUHV") }, - { XHDR("qj", "aCsIeMKDBvAOBxF") }, - { XHDR("leemounabykdd", "QqKJFzzkHHIfpNCUypUvAeHzqAHUhhjPwktgkKtOgdPZlowQzufP") }, - { XHDR("iugo", "BfsbfBmIfFmhNIFKzVCxonxwWwPuCdmmaXebmguXUsXevtqfrkCDAYLRWLcfZdF") }, - { XHDR("sgzfnosbg", "vMAAeCYUecmTEdOUOmwQITrfNrXHWmnJROLsETcoHktPaiznzsxgeYTPMJNHUNjF") }, - { XHDR("ctfaxcakvxgrkysipn", "GBjVQVhbAcyyfDdHQhJQxQSLrjUsIUuqZzyLqgsetexhQXbhB") }, - { XHDR("gztiifvttjsfe", "InShiplZBTpOUZlWcyZRrAWUmgYHaDa") }, - { XHDR("rklif", "TyGuINSzonTBLgKaUDUIEymckQKBtuOGSFPaZqoHRBDyrMsDbRmZBJqJ") }, - { XHDR("csonvglh", "lymigrVkynEYgLxSIFFjamVDqfGpmLbOitnJ") }, - { XHDR("oddzqncubniba", "AhwukgikiTiVaNoysRlGRlhgEzVKlRVveZJDnbYVLgveZvryIdPCrdtSAyF") }, - { XHDR("czfuvvewqzv", "KQE") }, - { XHDR("qylwsnw", "TMGEaYGYFHsAtdcERYKzpQosrCbjfANedKIwTkEUFWFVPuzGmzuaHQcrjukgmMmvjgfPYlyL") }, - { XHDR("zgusvywqyfrd", "qLJiJOPAkJJHREfpdyysTjMLUNlHEwoToGjqlqZXvTpiRK") }, - { XHDR("zszvwhhfyvjvq", "IKQmGodtzHJRmaoYFimdIcGFRkPAGSELixXakKjiIiiIMnAk") }, - { XHDR("emvdj", "CLrgYQRJlJnJNqvsXFhpsQnmGIsYf") }, - { XHDR("lem", "YBzsLbGtFBSSAriBYhxeCwgArDExXIPkPCVrcosVrLjlxxnWebtoBeQW") }, - { XHDR("eubf", "gOFeeQYNLKUCBHVhFRnCVcvBUkJQImFTWRGteUBygSzdqLeGBCAeNoTnAhrACyBlq") }, - { XHDR("fm", "hEQgoGGwKFImadkMWvSactHQAHgpDEkhrSOyvIJCbRGdLUAfEqpgsqFy") }, - { XHDR("keiwbtfmgfg", "TvrwRszavAtDjpBUjZB") }, - { XHDR("szpkok", "RcXVrsQnzLGqgF") }, - { XHDR("bqovvpedgxurbpob", "FIELIzosLKjZGwkuUxgvJVdqCxtPmjJVfZAQUnVuYt") }, - { XHDR("vfdjhxgcm", "BhhfxebsgHJYzROAimlCURzlIjfTrQvUSsLIVeJecvdNTLVTXErCmRcPuScPmVzQCsrAdYy") }, - { XHDR("tnbzpugwdmsyxpw", "FRACPhSlDSGznjRxaDicjKfJfWbBb") }, - { XHDR("gkmwrsjfv", "uaWbAYkJAEfVEWbzROEGZnjpEtvwECboPBSlYAjYgxxK") }, - { XHDR("brdcqezvrayblec", "xvGTJIoXHuWbvxEcldQOplfXKWJSHPheLCWOeShXJqLKMflWBQHfSFozPXuBBWGKnRFMjC") }, - { XHDR("xmylspf", "vcMoNojBqMgNPXBjKtiC") }, - { XHDR("wvxvguscmjaqe", "gceKJgTRkCizlSOvfXzHWEQMQAwyONFPCmtCSxwOWHtkfswHFlhrPokHNzHaYqTrnwHTw") }, - { XHDR("ermlkd", "oaZGWpUeoOoDcEZqkMxKTFJVnJeVmeqVopeKXGawmhkiuaHLpgsqmfsRwVvTPyEpuhzbmx") }, - { XHDR("oznitnhz", "xzWLtbmGzraccjHEavrAkenIPdRHGEKwbfgJXyOuBhoEHBSnWufLtVHYcDKVyr") }, - { XHDR("ypcokhuktyhwhavz", "KkLpHvRJaVSTilTvhkNItojwrltFpRjsTSDkUQBYcXXpanvFeCLVyEquEYKmeXGZHdayeQqxLsN") }, - { XHDR("arbnttnhseivxovi", "BMxzPNOPRWPFKjAUtGGyUykJBVHlpUPXRpNbLKzsqCqbGsYiNIxafBdASQQpmy") }, - { XHDR("c", "ZnUfFDhMeeyCljaIbTSNbxApSqpEyakF") }, - { XHDR("zrvwiyywvjkttnbbz", "WHaWeidEnxHJsGeFWhMQrXbGCxzlyJMZCPuGU") }, - { XHDR("owcsjqeduuhyvonr", "iEfNwPGEKvtlSzkRgVkbhhXRwOTdNyVHNDguHQiGWnysACMecXJqFpUyRhPVFDyvIagi") }, - { XHDR("xgbp", "bMlyxgdxWPBaqmJDpHlzJqliSihGRTuLx") }, - { XHDR("lcpvciuuhe", "TxdpfJqMAL") }, - { XHDR("byslmm", "TcApvnrazVAKHWsFkVUvLzEYvtjhzDIAgCvVlkFdbFBNQYtVXg") }, - { XHDR("xc", "qNsLiAyDRtHrZkBqHgfNfqeTnTojNuwAdWmDZEwvxTORXUfgvkvMHbkYOmGEVaRiarnRv") }, - { XHDR("capmjijqgmrr", "TJNRrfKYVqfTBSBWHAmgOtGhSmeUGwqUAzKMyQPKiQaxf") }, - { XHDR("ihynmnkfdkimuc", "NNQexthjmRpUxOHUWCON") }, - { XHDR("nnjagzcmylcums", "OrtZxfNUeFVF") }, - { XHDR("ohgnwvjfgmlqclbfkf", "XUFKRcGKTApIXgjGeyiKkdDioIkdspsSzBPFwQcJjLkuGuzgfKDXjOPnvVZfXaTnzhXIBMoQtkkbqe") }, - { XHDR("iwhbhecltxwjbpzwz", "qrCnenheXERCKKIqOIDPqGqCrXWPuvUYbhBwTEYqAGcuCnmsGmskrVHP") }, - { XHDR("ztdtaslihlzgcyjvfff", "VhHderl") }, - { XHDR("srowmdvkd", "JHLYrhbMutgyaJxXKBzMPABRukdblkbOADNVOtoaeLdSx") }, - { XHDR("pjryngwnnvejppk", "RZKQoLnpNvGyecoL") }, - { XHDR("ejfvhyoyynbvqgoozfhb", "jTRZOwJajsjEiNDWRMRFvriIuvXOmOwBjVqdGkGQEwmCQssxBKXlCYHGYN") }, - { XHDR("gn", "lTqijackgLAnCVbJlaOnInaEtgxuzOxcNxVjAVfLIVRyQTSHmYvbECWDuaPoCKR") }, - { XHDR("aqcghypmmjzduvuh", "TfqFfCw") }, - { XHDR("fnxvooi", "qygKWDprtbtsdvgQw") }, - { XHDR("wbft", "WwotsE") }, - { XHDR("trwfllniqzfqzdm", "tuHjMtfyTAiSeTXQcyGAZmIuWAvXAzhgapiGYsELHLRLBGeZvBtGvqPOrOpMOhMJGHvjljFEKgxUVV") }, - { XHDR("inxcwlsamkonvgtll", "EpXsgRVLZbjJwnThndyIwTUNmBkOsEqplEEVHPVxjMUbrdTeRLxRspyBgz") }, - { XHDR("vskhnngcypucvz", "weiLiQFBKmqxmjiRnJCfXFQKRiWF") }, - { XHDR("rvwwjvwfjqjboxhhgke", "gXmvfZJMcUONnYSUuzTjzFpfbqFXZSi") }, - { XHDR("blwycsknjhwlsykeks", "bPXoOlVjLfKVNhSoRjnWe") }, - { XHDR("cbghj", "ghqCmKMIjVWDtbmjCsMETsHubkgEUqvjWvDMkpqRFcqzAY") }, - { XHDR("slxzfjgxt", "omMyKsTomgMdRfsUeJytcOlJVCrXaCuflZD") }, - { XHDR("jtjdl", "njFZIPezsVSvXkIQRNWvRuBjBK") }, - { XHDR("zyvbor", "IxwTzilcxKHLaTUokgqtNJfYpDFJUGHOviYcwKkhVTFsa") }, - { XHDR("spgknpzzwclhtqecfgk", "uNMuNBnArYxCFaBgC") }, - { XHDR("fdxbmzfkjfkbxkegu", "TpTEcPiMmItantgETGyBVDuqfoBHGMZwGhtKCsqYGPibeLBVYJAcUBmUBWbMCRswMAUNTzjWpmeBE") }, - { XHDR("dsibgdacdzhmraatjco", "ZNYIawDWDbVWtsCAOThfXRSzmspzmaVEKitFqSKlUUqizFTedahBvbOJSTQstxz") }, - { XHDR("qxvrorormqj", "svxJVdQZaNTvXnoNgWZGUwwhRnnsSATyQr") }, - { XHDR("boblecvpyosymtsyak", "iWckrtvooxyltsVUziBfFW") }, - { XHDR("hntarch", "PHCftamSGgnZrcCQqGYwJQYnJWFvWZauIoswzNusXNhgLqNIvUlagac") }, - { XHDR("xqgs", "JXvMRSQcmtDjhoNtRBzqzSKAdbsSuVSOTaXphIplppfsazNCegMxMmJsueRzsWCLzxjoHUJsLzT") }, - { XHDR("jlyvgirpeziitrpdcft", "eDFqZGgEWJNbXOJifUzTWEZoiOtphc") }, - { XHDR("bdok", "CPfkmcjQVrJILvMLKdlkhhiNxFXrcRLAbZDbjaPCAKiqygqkPlnmLzdqdzhrmhxMXQtwr") }, - { XHDR("ldswbchmsijgdrzfwade", "VAjszlmcDszvlTGNGkniuPgNHK") }, - { XHDR("wpkystgkshpqc", "pMCkpUK") }, - { XHDR("fbysurzaoltwtoyobqhv", "TNb") }, - { XHDR("iiyvxa", "QXvNtYWuswyvlptkmeA") }, - { XHDR("wziwkkkikummhksafnx", "dRRIXRAZfZouzKROgGTzfGUrdqRwciVCoRqqXlxtvWD") }, - { XHDR("r", "YmDATVLWaiicQqMLIfpCVxzGiubNSGdDMwEcPT") }, - { XHDR("f", "PbuWONWmprPkbfmhizVVCzPrjQZbvhItKNYknzxgi") }, - { XHDR("ddgsckpnox", "mjbhiNUoadmGsNymCRTdVMUdqlnmnUSEnkBxCegBzMIPyXmISUbvhyyZhUNREvUkF") }, - { XHDR("swbhy", "vfMuODourAwankrIcG") }, - { XHDR("b", "TZAIxYhKmoCRNzMsmMLvWfdkpUEzBhhWvvGGUaYoELPrmGNaFohgCKJnWRhb") }, - { XHDR("ujhfoqtmjkusa", "BvBfzRD") }, - { XHDR("jvknbzywpdrcztsg", "tJmilsHEZcO") }, - { XHDR("ouqmuxrzxveqd", "beWpimZosQjLsUDgiEVFXnyOPgJxPtgBcngsJfPROvMCnUSpHBldMpCekIoPQkIfmiAOxkGC") }, - { XHDR("gltyxnlygwe", "DqtZJlOGF") }, - { XHDR("dipa", "ySwoCrhPmuLiBpjfDuOCLFmUkHLRtoPbIzcLjIMwOFqRdOomVUOHJXsSkfTfHkoM") }, - { XHDR("ymxkwxnnhx", "KfqJqTAjxt") }, - { XHDR("nhowpldgsqdxcimodq", "ieskCyyRDvosFopnzndSrkIPoNHOTrFNFBb") }, - { XHDR("hzuuordsmeesil", "KYvlwqulCjHOuRodseMKMrkRsLXYKyRXbbcjImxJMTlWtSFC") }, - { XHDR("wbezbelgtxbtwe", "sK") }, - { XHDR("gicsi", "DyLJqNMboBzamVqnmwDZBqavwwdxRsWqeqpqlutdKWnVCoBTCLzAplTgIfqugPiReeJHkefVvfLx") }, - { XHDR("fmqvpzfkdtthkfhigh", "tRrlRxTiTxmQXasjRdUbikvSDJfPMOgbkBspFBocVjNikdVKSHmCqmBKL") }, - { XHDR("uxjnv", "ZyVdbJbtB") }, - { XHDR("au", "CAwTFDqplniaJgMYRCbtBulhOouUQdyblLQOZdQzATdEbQJdvLnvSLyzQgJVhMj") }, - { XHDR("vhgjvwqv", "bxJPcpdxLWhqqsmXTRbFhfwMlrNLWafHBNIVNZEHHrAmtbOUHgFfdP") }, - { XHDR("reqhwupc", "MsWTGAYJAYtdJjIKCm") }, - { XHDR("lpnukluclitt", "VirqCnHzb") }, - { XHDR("pkhtft", "EGC") }, - { XHDR("mle", "xAfYsuperwkWjPdbXPpvZ") }, - { XHDR("nyjzgvds", "AtWgywdtSxfoUZludoiriTiXSPWxdkEaBOltvnvATxngbgCIGbRGyxBVCAbxVDYxaoET") }, - { XHDR("hh", "fgJItWuQuxAEKoIDcJcOVjCrhI") }, - { XHDR("uuyynafxoehqlmcumbol", "kqAvXLrTWMdCiyIxjIsKwmAinCkYIJqngRenrzCEBlWIvLBokvNYYWMnI") }, - { XHDR("phxq", "cufwWrNYbwDbfXaOlBBGGDKIWrKrVgENtMsPwdqRKdjXtjNfVINVUJAmUDHIXbgkfqgJrdnoIrnClb") }, - { XHDR("wnv", "fMQrkkyLEwsynwsTjVudc") }, - { XHDR("zmagbpqckgu", "SXYTplxLPLvouUxJySbjpHFjgEVCn") }, - { XHDR("eyhmqqpkhhepux", "PbYbXPNuStsowwRzYeahxQwkVygQxeCShXUpFctaKCtepHSgd") }, - { XHDR("flllmodrkucr", "RUXqbYnkYnXYqDHPnsdncBvScTzGBIGmVTylPvV") }, - { XHDR("haka", "ktXfNDjMcrqVZgQCOEkVdBhjUkmuIJjUqdDXjNVnXIwSSrlRmXxXTLTiOhVygYDLy") }, - { XHDR("bxtvsxjlkqfg", "TYMWYsOuA") }, - { XHDR("hxvxhiysyakmkmw", "DtTaQeLgFRfqvXkQ") }, - { XHDR("oxirytkht", "aXHGcheNituWpPStpOtbjazzWUbKWrZuLkggxijNVH") }, - { XHDR("gzayibfjwqooqe", "lSvlsebQvUkZXUE") }, - { XHDR("zh", "WjZtJxTNszVkgXxPdFEWwEMdQngNNYpeYnKUWzg") }, - { XHDR("jwuuodmhyjunortrxle", "FRdEtWpSTkAJSwUvGkkbeYMzIJbNPFoVUYJgFflRHteAhAQGaSoPTWGZIeDemPyPiIAxrZRRuFp") }, - { XHDR("xkvcixi", "qrjuxSGfXakHnxdp") }, - { XHDR("pvugwg", "SlLsteujQzOkGSlsfTJUOsGyguOzIIoRFyywfAYpukhaApMPOkQjKZktWlOWZPiSDEZbJ") }, - { XHDR("soqwcrjdismaiv", "ZUnKcUHuimWFCHBskGvEiHCkYkiIFvSUmXYFYHvSiiHnBbVgfrycNlnLZfnnoSVqvZylwJAMKZjT") }, - { XHDR("ijgwvbh", "REnaSnwYyKTwOPrsnQpoBUvqfpaRmdovDWQBhLFIPfQjy") }, - { XHDR("qonscshbjwswfwqnn", "pSOphWgBIkTfntcWurjwPesRzfgxqvdqldVCBNGaFLcfypLyDRyEDhBYFHwDHrWYTzBtanVoZnsldMZv") }, - { XHDR("estsupgjqwln", "sDgKRUaqERivoPJBQtfxRlkgxaRKNxfhNYGmuATpyCszkpbEkYWKaFEgdcQVroI") }, - { XHDR("axxleenllfrm", "EJEiZqsZpAHrJgYgbGTRtZhichXAOrIrZBFtGKQGjnPlMWBWrYPduaMOxxCQPisMItWZtpuhbAuXl") }, - { XHDR("hlxubgmszbmhvifbaslc", "RbELRE") }, - { XHDR("xiafiq", "NoKyOmvlIWiqmsIxPDbzcSrViKpJqBpTBsOFmmkdUmusKOnrNCTvEJeSx") }, - { XHDR("wdyfjsok", "nNELgm") }, - { XHDR("muv", "dldCbSqTxIAxkiIlFLFvbCwKMvuPJeAqneemoOaYYcTevMILDJyyLbc") }, - { XHDR("dnwoprhg", "eNJqsQrsfWjtoZdLyBPDmXSXqOvbXdPRtKeitOfATgzdGHDllMeKGmvBdubDZTSmanxNpBTrEKvBb") }, - { XHDR("yxscrsjodkbud", "bXoKXtwawTFJIdHdLOsbsqnuAUfeEIBHlXVZmHnaPxgQxKrVGnTZfEctitKYVxNKDgsebaSWfmU") }, - { XHDR("jqzxzyj", "ltJnYAqTYvlqPGWnYITQsvqoTFIWVLDtfsqGwLoKW") }, - { XHDR("ajtpvzkllkkvei", "qurtzoFCPCFNAitgWoADgbimWiMLoaxSaGjKrXEwIzoBzmiHfpfedIuAoflhlgUnbHDr") }, - { XHDR("xxfgsmewkdd", "pQrIcmYBZfWrhLGeBFIZoquyFkSAkjzyIEifYPkMmpLDd") }, - { XHDR("omzmuba", "EJMnbtSkGwjyIK") }, - { XHDR("alyikwtubskxkpjpqdgm", "ASPLqIuSmmLzKrAhWWqE") }, - { XHDR("wmsvg", "KxJqKkkcRYndyFhvwgXvxYvBdwGYzOejJZbKEkTZwzVydnBJkxCRsUbjyDaeKYPiDUnuR") }, - { XHDR("oqlppwffhvyfedpjx", "ROyJYuXvSRKNit") }, - { XHDR("olcvzyd", "uCEDLlFtCMwWvBKCBLcAHvqDRYfjpNnJHnlcbaukaLNDiQqpyOuFgYETPMlkp") }, - { XHDR("ztrurjproeizpzznbs", "oqHSUTvwtAJzEhgzCutwvzEuWAHMCgzJUCtJwmQNRACt") }, - { XHDR("lhgfeffzfgn", "yrVfeIoXNYEtOmXLgKpPFiZrgsyWZCHipvjDTnCsVOePwazQDzEpfzcwSnwRqvtbKUssN") }, - { XHDR("secyfyowxbyyce", "HFmUrfTIxwWFXOaHuubccpwfhNPFZGYcbIpegrYxdndHRq") }, - { XHDR("jrggjyvoolgpdgpxwy", "zmcWNuq") }, - { XHDR("xhl", "drJqIXyrozfXRrhanECeHQLvaeshQyQdlyvlNKeIpYzDDHfdqLzWRkEApuvcIRDHrCeuuMiq") }, - { XHDR("poegfaweeyhj", "pbfUojlBdUyFwfkiPZoaGnkWNNKbmaPRlLbVkcDHyHCWkhwEkKXLZewMeX") }, - { XHDR("u", "oiJCqMQAeuZIFbkNqlqZEaEVEnWunrljuXkPCQWvkdJckEITjeTTRvvIzgKOYAwkKkKRBvBKtTqTpN") }, - { XHDR("mwpnzh", "yUIaNJJDVQEIyjYRxBXXUdKFfjjWOrLgfriPQYrOFoBLoXK") }, - { XHDR("cjmqspmutglizwyva", "NcHly") }, - { XHDR("lgypalpfrrm", "VEZ") }, - { XHDR("edqrrcyftxp", "CrnXODFIGUvZTZfTmCuvsljrlfdjAbiEtCEpUSwOxMmpwXCYZYkLrtvcXuwDJvNFLFiXaoCiQgSZ") }, - { XHDR("s", "bmUutcqRIBySgLaddctGoo") }, - { XHDR("inutzis", "JyRpXcxtnuFbXziDhGMRCfYeqmuRlGImkkaiNxFPts") }, - { XHDR("kdfmped", "eBXXhjjjAoeLsQNfNH") }, - { XHDR("rumnsvqttfiofkvtfwu", "fInyJqFGKLLCKRJ") }, - { XHDR("vrowm", "qztupClrvHlZlwmkpnOCdRiGiJhYTRqFMJgpGbWiy") }, - { XHDR("agpmqhghrulnswndg", "xAtIYMSsewcuYrEeAazBmJdRqfcHRFgVXYYEfromJASptzkNvxxYjhjVuYnijBCBJYctuEkIy") }, - { XHDR("rqvbfic", "pXrpwiV") }, - { XHDR("ctnuemecamiqbcvf", "yTVtCCOUhogxXxwTLMmYqGQrmNUOaaZieJdBzTAhaUrTQeOkHPVzMMZUqEIXKTzDDPKFArHnxOYi") }, - { XHDR("cu", "nJfPDrgwNpPUUdjZDAvIzojxPfGuNyBveWtatkc") }, - { XHDR("d", "WZX") }, - { XHDR("njfmne", "RhTxSXuBONnyiVuyUta") }, - { XHDR("eqeskfga", "JlosklRGHYHWzHqSHvOBrmFurqtRgyDDwPlsQtjEMxWCpaIdwAKsAUIuOYpKSXFhDghhGSqoDvcK") }, - { XHDR("kzxu", "rmNbhoCsNpiatolhIVnlAsKCzFotCkwfMWmJwmcUOJcyLJWEZKvpsjQObJqXAKYnEnCIxFmG") }, - { XHDR("ipiatdijrtcczj", "RwbglXbxJmPVCBrAUpKGlDMuhrFnPaMSahxodtlFfVcMIKmFrvlHIecisXsmCyQTSpGnEdtzegGqJvKh") }, - { XHDR("vaiefkpckvyxybh", "EzpkVTqzmIklEcPLQYtMlzBsfJYNyDFUTMNSNtrkxFmujBGOMpsGnSP") }, - { XHDR("tlyhkjomjxwshkqwd", "qgFCjVlkCgbIuiaBR") }, - { XHDR("erhsqtozthynvbxxnv", "sRIdCWbmqDtzXBCjvcTprXebaMPnrnfL") }, - { XHDR("yfwiysrezyakmfq", "fnssZZkgjcEwHJNvAUXOkUtlxLKRqrnwoXJSlaiTsR") }, - { XHDR("rlqxvngwbrqpiq", "vSWLeCKcgbkIjmdNzGLkiyEFzExdPYjdijVxTPpATC") }, - { XHDR("bbnlbblfpi", "IiuyPvsaaBkSOidGF") }, - { XHDR("mlcpquikyhziv", "vaLfSVtiQyPtjbN") }, - { XHDR("rezy", "XQmmKudzUuTTxkngkhsM") }, - { XHDR("wfuc", "qnZIPlcFqWCMDgrqqzEzuwlrhhlNZGZmfWgmZtIYfFpPlSEmlQnXuNMOpPtrZBzMdISmuvNds") }, - { XHDR("lg", "cTsqjXptweGJPdNwzEKKsUWVXwOKpZOdeYqrnlVbGlmLUe") }, - { XHDR("ukkwgxpvyys", "DFajTmQLDRafpb") }, - { XHDR("dog", "JUwywMJLNcZMWPChXmCVBVmFRwbmmdBMUXsRlMgkkYZByVVX") }, - { XHDR("xjsvfrescmto", "idtvoPIXnijrBumfbuCEHNZCSXIIkqFNrYNSsOcymTyOUacaOg") }, - { XHDR("bicturccozacczqtzluz", "bbTloLVUAZS") }, - { XHDR("qoucomhdiiphj", "dzNSpZZUlgYVwVNBQGViowNGGNOrrhMJsebbsSiMLXOgAMXHTpxaIZACXshpIJts") }, - { XHDR("nocteu", "gLjxzeOowLuqHWXhjivTFomxwKU") }, - { XHDR("qt", "faRUNGKLtmUwzmsqdxrXkgxdCJOcKsHbDXOljLxcKLxCZGtGGBRVHWzZrotRgWMDmXhBxrCh") }, - { XHDR("ngrrpwtqvvyolmopsnw", "UiMPDMSqdblMUGxJbTcHsHRw") }, - { XHDR("kdfizbsg", "iQwRya") }, - { XHDR("qeepkddhpe", "NMGBsJVzfnDhSoDSuwASWxOzzukmLsLe") }, - { XHDR("edqrlivi", "CFxvPxcSJHswaAAIqtkxqspZUi") }, - { XHDR("dv", "alF") }, - { XHDR("pefyoasgdiji", "fFgkDGlsS") }, - { XHDR("kjtueuvco", "bEwnBHITheKg") }, - { XHDR("hqjajttwqageedu", "KEIDbQRWLJPblgMwhdioqjigxtOnLAMZVCjH") }, - { XHDR("zokbzatkwjuldcyx", "kUyHVSjEyLjEoYaiJbShtNomXGlZGOHyqLFnrEAbNeRqGLjcnzpXQEch") }, - { XHDR("otshygoospjnw", "MKvhayzFFKnZNGKDByiI") }, - { XHDR("hz", "bFgMDCKuCN") }, - { XHDR("kjqgbrmtypufvyhbckky", "okqltmUJnDOngDNABkKYaskwaKBrkgGQkebCSinsdBUBIRfbmQjJggXikwiN") }, - { XHDR("qoxkphpq", "dassibhlFaVAqUzKNGSR") }, - { XHDR("yswwniyd", "aqlwMyvfyBLqjmrZxyDv") }, - { XHDR("vtam", "jUcb") }, - { XHDR("pbdherpgyccqfcp", "xjNvzHDRKlmJhZilpRLwKLIDDgBlVBPTDGWwYbkHxXFQQiytXKb") }, - { XHDR("ozqfrcvzz", "NICHNzueidOaeKyDTRzXdpzvkMvbSWrdqUsbkzrJsgow") }, - { XHDR("sgfafbhllxxynfl", "ohjIxaMtArPNfdfIuLLEiWZFULQQscYgwYUBqvXcwkNXzluEWVjWRcgDoppJLQNd") }, - { XHDR("mrtpuoxqyrzg", "dsdPhn") }, - { XHDR("acgpng", "jHnHXrtCEGyCdZS") }, - { XHDR("rlneoelrmr", "rAtacYuqmHoUtejKadckbenEJpmfVWNdNqvosJfkGNqtGFDQwSBXWZnMorySvIVmLCeovgCqWlkkVNtq") }, - { XHDR("rghftjapdrpqdmfttscg", "wONeSFhRQKUOknBDjxJMYmFxzjDIxkKRQhBznQkrvZUsHlyEraBpNkXHwLcvx") }, - { XHDR("bjgbfnavupgztghz", "GqfbxFDbNwbkQyIcbNIgk") }, - { XHDR("vheykvgam", "PsCaNGdmZc") }, - { XHDR("xhns", "qqfLlScDbc") }, - { XHDR("djqqzzt", "PJQhQukMUjuopiwwbbYXSKrBcFIqA") }, - { XHDR("woxqy", "TfeDAtIdeJiTOFsZulfYGMtvcWTTYHujhoCgFGvuKRdsUtyUpLStnAnZdHZexeG") }, - { XHDR("zesypfxylo", "zmcyrppLLiDJIeRnxTCVHBRwVZLusXxVvJgXQFyQlMuPIQq") }, - { XHDR("sqeoandouasnsw", "yvhTlbeqNPzbBTWlmHrDuHqsvYMOYgmpAOkWzMfnafXEovklNyT") }, - { XHDR("nwswnqmxylm", "BhAuGYSrBdcsGNyUuwZrnUERZVXpZXURXhOETVkqiaRPGFftMhqHBXKr") }, - { XHDR("xhsktyphhob", "dWoAnBYsnqvJnUvwygUAPdFVEakHkeHHfNSvmRTWCP") }, - { XHDR("elfczwyi", "ahhQrKaBfJzLTHiOrKrMwwSwowmTUQfdnLHPwvWmFwvqnMpnWnLlmkmHpqIdpuKEcWQKzOhNQvlOiMym") }, - { XHDR("gnsgmmst", "kipguTIhnrlVfLSdfRnaSBZP") }, - { XHDR("hzaxjmgkuki", "zncOqHnNmuonmXRUxqjwPt") }, - { XHDR("eql", "XzcXSDPBviKLBRMXjt") }, - { XHDR("v", "MfulQUPFdmbWNGqFALWEpetJXjIxuGfmDxTrAHXEjWRdPwLJ") }, - { XHDR("xzxl", "moPSFfoQTzIhpdTbptAQtmgzicoQkEQfSwPZBDxz") }, - { XHDR("wjksllmz", "bjrTjJFzdOoAMCVxiwnkrTsFgMwLxLxWTWbDsqDBtAqSe") }, - { XHDR("bnxcpuw", "nJgqpSRNXpqpgBIphLbevuewCpZuuRllyMghUuwC") }, - { XHDR("qvisshzrqgq", "xaAYhdQRCcROREbMzlAGyXVowbBbxcQVrmrOqmFnRpLKqboRqJjyjooKcERWrIEhc") }, - { XHDR("zesq", "eZCUZBEeaJfcNSbjkPZfmsUhIPwcIWA") }, - { XHDR("jduyeqfctyil", "DWQIQKaDdupUAdSCRTTjSQUeRWRnczoXdOWvwMqkXgaVfbwPnQioRUcozloMfhFNEZbFyMkPj") }, - { XHDR("dbavebabbwc", "eDNTuiTzesPclHZzmAgwtDuK") }, - { XHDR("y", "UILcCfBnXThUXwxeBMsnSipYYiQstPQfhjBWmD") }, - { XHDR("rfkyqbmfpeqkwnfr", "dTGgOPdPAgAEUFIiTDqtoJSxtWZRsGenPkkoCZPfGXTXGxJBrqdOEnaSbBYAYTVeGxcGOkUSiV") }, - { XHDR("thffkyolwfqmyucwdcd", "FupDvgmqYdVjrmuLzjPufpsNyQLpYeIhncyJckzeDZDpqR") }, - { XHDR("ujlnyxdkyhieurxgc", "pgGkTIUrwaHHonnUUzIqgl") }, - { XHDR("lhfne", "BQzTbExOmPFXMByVnzqPNpqpEUkCApsReipWBQjXPKKmnmaNcWKwVwcxTvErHNgvrfBOu") }, - { XHDR("fjnhikjapx", "jXZDeBiPHVVXEOh") }, - { XHDR("etkgxt", "DHTImTFRixEhbQrFwCwiHMVXBUHnRADTlTzIJWpoNfkntCep") }, - { XHDR("ddonibffpe", "BKzJuKCQHazxRFoUAfuURIbJmDzsldUJMtMGMoMnULf") }, - { XHDR("gfaqhmhyozaabzxrvrh", "RNgwOxnluxJjPzQEIQOUOCRNkOoOBcICKzPRhBUIxlKCaXxbNWGojpSdYJxzZHjFNoQUNZAJHuqro") }, - { XHDR("p", "mODYdUujtxGPVKpZmxiQKceaMWPf") }, - { XHDR("ywxw", "LCgufZiiYNmGSfSLgBbbjouHstjHa") }, - { XHDR("ldazjkczkxdgomza", "VnKzSduZILwuzZFNKDtrVdxxlVphGAMEVCGYiiGcnkyEugARRCxgTbqECcn") }, - { XHDR("iwo", "CstRCgSaJqMPDKftejdUTirRwcFRqkmvJwUhApyvqVsteHujPrGnnRlrbkMrHATqpL") }, - { XHDR("yubvffubhk", "JewqduGFhJVoUZVIqmLpaYCxwTWtCnQPHnaihKIVSZEEznjjYRUZMJnSbM") }, - { XHDR("otqsiumpixdn", "jBrgKqEcQeNqKEjYdSCRCWNbAIXJRKoZwjHnPheIOsISJPyJhiozOEDm") }, - { XHDR("usuiidjoe", "yIElhaWWfWghtgxAPFChkmEWtFmxpbt") }, - { XHDR("iawfogyrpd", "EgNmWDWvtFlnuwhfnESyQzEKqIuVwJnZBgewTYAxwaJzbBPYuIRi") }, - { XHDR("zzvwgc", "aAlPnXWYtRBYHOunZzeqDVabiXKghStNrQKKFUats") }, - { XHDR("cvivgsflwafm", "kHwANcAFdsVaGNpvifyoQKdajvvsOzHHcKFnxlzDvTtDJbVziNTHguRh") }, - { XHDR("rsimtodwrytljwc", "IcPrFjmUpDQOrPZpfkqWhsAXkZsuYS") }, - { XHDR("io", "LzbHZFvbyjmPayLXwNhgGHvqalgCmpkVcsKkHxVeYBpDaUUVRDFaRTfsUTHgfDxtbmhFrwbe") }, - { XHDR("dvvketkawvyzisvrj", "RTpIBKhuIpqiWktjUufGS") }, - { XHDR("vcno", "nWYwFfYxXLdnXICxJnWNNnOvxytazSlIzdZVxQrpGvzgaNEzfAuwFVHgZeapxJaQRtvPDWeXcgfakpTa") }, - { XHDR("cpmfy", "ABfbnVhHKEqNaEECbpezHEkudInPSDCQtIbY") }, - { XHDR("ycakacwzrvjdvnojrbhg", "gZzyBAhxAzRBnkWpfsIncvPDgYnOTWbKFoAbKxlzxmXyoecOpmauVdJCSYFnNOdaoeRgVxe") }, - { XHDR("krvsjsoknfhjanp", "hBthXZsAkTJOTFPiLuvfiKyPdpVD") }, - { XHDR("rabpwnymramjbjhjg", "vYMlWcyZtTjnmXhuOnqY") }, - { XHDR("kovlvohbiech", "FtCTAbpbUQYz") }, - { XHDR("inkadg", "qmHNhmgwMnJfymnToTjHlBXkbuyLNHXjSUOfEf") }, - { XHDR("xninclzwgpvwwfba", "drqwWiTNfgSKraXehlqDLhXYqkTctRuXvEgNmYo") }, - { XHDR("vdzkuptxojkzgs", "QwELeGCvmJJWvsDWNuHpjDbtXKiUuYLtBGBwKGSVTKoWMpZJdqQsnFNjhzNo") }, - { XHDR("anmzbefmetcpmcumclxt", "gUpiCUApIPgtYuDHPS") }, - { XHDR("awbdmfdvadueeyey", "htrAajPlFSuRXFQhfdKmrZUJxIaQUCju") }, - { XHDR("tn", "VMvCHJqcBTCNRcRGeFnfJKvqQteNkiICxdyzVpZUcsdlnpTxPHYqqvilZSSaPjyhkzREazZYVNhQSnuy") }, - { XHDR("vmqm", "mVAuFZWQsmizHOFf") }, - { XHDR("lqjmduiahimnqxz", "vgKggwiweDPWqLwLixwQwZCUZbFOHsYAEgDCJvtHkMwdujfkakigQvyehx") }, - { XHDR("uuwjtty", "cuavqCWDESiNNNGQkexMvMklHWnlbqxTJjWUGxtgexNowmXnDtDQy") }, - { XHDR("jcknor", "kenppgUyOhrBrSJZaTyVffBSRLGACycUUEIsBpNmYlfr") }, - { XHDR("ksm", "OQEalFGvTypdxZJuEtfPzbRuBblXobDyXvxdvNnSdRwiNqkYPNvPynLxaDFvI") }, - { XHDR("sjvezynkomlvksqzzfoj", "iyZnYHMSnOiWnqnmAOclhttKlPRfeEUqCqDYyQWfcmBLVdPFCq") }, - { XHDR("mdgoss", "YGlzxgjjkjHjiOGRiZN") }, - { XHDR("bqxamqfvgptqejawecl", "NALlIVARHuzyKOzoxeRKmhpKScggQRtHZKdkQYcDkHsq") }, - { XHDR("uwxfajx", "RFdGznlnAPVmxFIsFCYqdtToaYpPCnmpSZOQvQH") }, - { XHDR("nklceg", "XTjujuFJiagSZiTJUZWtLmjoVXMdsSdZ") }, - { XHDR("nn", "EQMutzcqRKxmvYbWlyDQtdFqY") }, - { XHDR("wpbcfiuezyucsps", "QYoaJwUYZlbHOfnmIqROCzdwjCxwwmobXcwvVlULXOAEFtZYYixShfaEznHJmb") }, - { XHDR("cpnxjinjjudazobwr", "hFYjYKJVdvChEAoCbDzxOfSeyhNlcCXtfjjiNOnvzzHelPXqfzhpYrRxahsfZeDBIkGmhTZmcYN") }, - { XHDR("pflwp", "McaZrLqshpJRihNljaquJCW") }, - { XHDR("cdkb", "VBWZmVmhDWlPQwMzYtMmoABlqnZiPWIXgEzPacdpWiGiWXOESfjOENeeweLZbJIOVIs") }, - { XHDR("phabpd", "vipfiOXfsIGTNbUrpyecEFnrRwsiPOxUwEVymlaMHPeWSJadchNShjgH") }, - { XHDR("azwblui", "sAmHnpU") }, - { XHDR("bdvqrpfkatfptxsalu", "fwKTjxgYgazgHrQudKkxHZoCrKRIQkbztbANdLUzaVVtQyulvGrqhQxdtWRLIrtHsx") }, - { XHDR("idgr", "ymkOKLIRfRZuYCESCvbqIdKmIOrOeXVeJuxVpxnMqDsB") }, - { XHDR("sgeeobmrwad", "mLZFijMgGcrUAFEKNVNYrFVcJDJZWruySVaqHredwJyJyqQcYltreMlmyVEzXFMGWivDPjf") }, - { XHDR("qqmuc", "VfaDgDtrDQFvFIIzDCHjhtVzw") }, - { XHDR("uyarfm", "NdalqqsIcckcUhcrPsFxx") }, - { XHDR("ocjmdmusfasawtq", "LAGWAxTtzHrbCWhAvtkdVTMsjuWahaqTBEfBMaedFQsveMMbqBxNfyoXCySyFMyWCCiVJga") }, - { XHDR("lin", "BoCbDcQWFyKTdBkyOMjHRUJtZazAhqyxHHjSCRayRTIhrrMhzvAMOkKJcqQesn") }, - { XHDR("unsqfspsnzlrkqvpx", "lbncvt") }, - { XHDR("zaisc", "rmurUMFq") }, - { XHDR("esvmoifyoziwezila", "aOXOGOjZoaryglaJvInvHadTeHPFrac") }, - { XHDR("gbclgtbgcpje", "BKTdRvtznLHkDEAYNExnMsYNNWnUrdLwJu") }, - { XHDR("bpbdckkvrwmwibpkagwa", "egyV") }, - { XHDR("dgovedvtkzcq", "ZUrfIeeWUkOSLkcgfewNenGElSZmhIHdoSM") }, - { XHDR("xifyojzwewvqfr", "hwEtMKfpbyBqScjDONJPNLqsTclTpVhsyr") }, - { XHDR("uqbcyqbw", "DrnluRsFzncitXXEjECjJHrPSOzJCihHdzhkUtVHYkXLhksUasRZMsrnDZPWIxDCLQK") }, - { XHDR("bhljm", "yBGneYScTJuhgoOEXpHjFokegHKahjcObyoAezIbqOGwefwlCuEPbDPDif") }, - { XHDR("ketzykagllkb", "dTRNgrDJqScvWsIRwHdmvPfghCCQQLmjnFUSthLPefnvmWwhEaMOeTjFeTFsAbnL") }, - { XHDR("ixip", "SeBBtquvQBDrXWUufuOoZZ") }, - { XHDR("dqv", "XDNMjcLOOxKjzGzEhvVPER") }, - { XHDR("sapn", "tNbwjJPmyvnQoBhHzGyxHwLMavPPOOJeMLbfqHmCXSJQOksmvYPtovdIrzyZzQxFTaTClpj") }, - { XHDR("inhxa", "td") }, - { XHDR("ajqvtiscqmfmxlg", "HzmTeDyiTCsJnTnKiGdxlSeZalfbrxtusUkh") }, - { XHDR("yl", "vsUEBBAUjnMvxmKCfPrI") }, - { XHDR("pjhta", "xZTZMbSNnOzQaGmfVYTTbFVCAAJcaBATQFcstiERBgdiGEFlnBAPGikNnkGBTUqKEkYuyuInJgoJR") }, - { XHDR("bvjedmngliion", "iEYUEFEaUWQsIOMHsVygTUMFnFghEF") }, - { XHDR("jdoxbzrn", "MHLMaexMMpUwIV") }, - { XHDR("wnljnvin", "bUQKOtaVuHZSDKVzWLPWbQjencIQmQFfgNFjtbDyFzLOOncSavfkbzDOKMlC") }, - { XHDR("irgrhvxpyw", "MQzwOOyPoXSdKzjnrKrSmGJVYfSiXETLgGYbdIMoyNecAFvLNgZiXsYtpbYGCLxDCbYXWUKetu") }, - { XHDR("cjeodmvscmqzv", "pRccjYyUJiPFJYfDulfbegCzIExrdOJQUzwbhGzSDmeZwBxzfIjQHgPhLySaHueKevyohdyRF") }, - { XHDR("nhpdllletyxc", "UWcebcLhQSuMEBglZwBVUdccFwdDZuoVuuhmZifaJsEaoJoNpkmuLPdDUYfstpebirf") }, - { XHDR("icytdjpnvwhtyxzrmn", "FeZJBBblFXJiFjphDJiqoFhljq") }, - { XHDR("fyvgyxzkbyhondhdowfd", "RYxDbHpJQrRlVSaZxPeJyGvgKtWIHuSoOULFxTxKrkmacXhfgjjkgsYNFBWADN") }, - { XHDR("nhyfaclatqmh", "vizjIgmmcUlKnMxGdnkktlZLUmTZFrnmAaMIfMLbEbfUbFGeIuoKgqimPeI") }, - { XHDR("uooujg", "tsDiFQfXWBNlRxYVBASmTaZaZIja") }, - { XHDR("fwgoibbax", "GZKybtLSfuDbA") }, - { XHDR("zigfrmxeuqxyviocxy", "cuXVKjkCgJVYXABaUWKXYPNBuFLyOhEsfbROBJhfz") }, - { XHDR("r", "sbehcKeXzaVBDDKkDRkGVPiiLL") }, - { XHDR("gb", "DdGPzgbFObrxOSZeZwmcfiLNGSjkZJBGrKniiDUkZdHjPWwevqrybluGqdThNQlIqm") }, - { XHDR("htsigatlfswg", "mvHhRCCxNIjLrCVNmUiRXNFEfwsbgJPHWGXeGimPtWBXVKP") }, - { XHDR("kovicsqpfzqg", "CTbWDFWbwugqvsYeXZuUKvJxDgKbOKipPjNR") }, - { XHDR("wbtczgorylwessza", "ltyHDXMqwDIXnJwAYPkmpTNRzihFLOBgSwJGyLMeLhhSMLVPcn") }, - { XHDR("l", "gfIJWVsLdmHRdAKhCHDoJySYkTfFvYJZjIoFMbFVbDmZOOz") }, - { XHDR("yojkldrdj", "bCHujmyuZLmrfIBzTF") }, - { XHDR("cexhfxl", "ZNrNrxWKnDtYBKyOjWpZV") }, - { XHDR("zs", "vuEFEntHBEcKSrydHyQPOKaLkudxQRNCzDJMpvesuaLqWcPH") }, - { XHDR("efpdjcijkqzewwzhdz", "qEEbjFtBhsNViVdQyfbNd") }, - { XHDR("smvs", "LPIfWFXSzTxqcMCiTQhSFDmxszUXnmYaOrZBCBJcpiqjcEmxkHGvRPGPWrH") }, - { XHDR("mpgdvczqviuzuwta", "ymOls") }, - { XHDR("bpjttviri", "ncqgbogdZJxLZoNHsLHBkebPmJMPEiaFyjiEgOtPiPTnZPbHXfEXMJmVKYauGL") }, - { XHDR("gekaupnduldkh", "wz") }, - { XHDR("fscwnftui", "ZGwGiMOpfYUaDqIrtSl") }, - { XHDR("rvcqiubofndy", "QJeEffvjtUCNzRlekMSFAOomRVTgA") }, - { XHDR("igntquvmmut", "MzzKrXpaemFUUsRfztVXQWNZNHcMkPWQLoMAN") }, - { XHDR("bihfrjmfxzlhhi", "DJryvtKPbv") }, - { XHDR("kruzmnmlvhogbit", "gfCiXvitwjgXBcoqZYnJrpOgdgrsOyGKRemtiDEEcuIpIdOSjNaOV") }, - { XHDR("gyoxlogbh", "BXJPlOodJXOAgRqzVAAZmQjzVbbo") }, - { XHDR("tposbwshffjv", "kNnQtAYirfpYxrgevRqzTCacRkjVVVnGTLzROZshkNrNAKlBMTCzAxOuAQJ") }, - { XHDR("bmxlscvaduombiavqxi", "uXziMiaTcqytPLKOprFyfDMkJTaxxThvllJsBlROlbVjabGVXhSTtkBTKtzftYOeSqgxCup") }, - { XHDR("g", "DCvWkaMPdmIgBOJJnmJzgQTZSaIYQbmJCooeoXZpEDMfmrHOAFzuMWxweCIcu") }, - { XHDR("objrhdrggpmxwchjipk", "HNpMOrAPFkDgVIMptirsaFdPcJzQyaPyoisygnAiIpnjjXOibIOQDhfZrZvvLziTEzeHHn") }, - { XHDR("vcinwokv", "hqHYFTQMcmfaucCDmBmvKzpBzOlLbfUznbtBMsCtUQNZKL") }, - { XHDR("pwjaieimgzzpy", "YyDKUxFCwVHUmylYzmzReibYl") }, - { XHDR("hzjygrqfqdviqlveyt", "PmkLCyhjHYMjyMSxdzQTzNMoUvfvHlMwPhADuYDlSARRdMMYcqLZ") }, - { XHDR("wxa", "TSbYbemDYQwhOSytUlZmBMCfDcFqNhWIpMxzpThwWzCIAsDayShwZuguhYkQaeP") }, - { XHDR("jghjd", "itbXsQR") }, - { XHDR("iyzmoafbnua", "NgBOLcPcs") }, - { XHDR("tuwab", "pixpZBWUKNAlvuiCTfVscDjxPJEtGdNjldJvnjKvzkEwIPaKMzKGtecSjp") }, - { XHDR("idesjdawffnhz", "JFhNbHDNE") }, - { XHDR("my", "sqBOLLVCOYYJXTse") }, - { XHDR("twbvipshlvhfxb", "eLJLIzDqejctVWlZErOOjTHDKI") }, - { XHDR("zsuntcvrxy", "myLGbhB") }, - { XHDR("xaycnf", "eAOnJcEwGjgrzLKSzepamJcVCUZtmmKBUYexwA") }, - { XHDR("egcnspztlpreaixrug", "WXbDHtOtAjbhtVvYAvnhauoLTVDtpSi") }, - { XHDR("npropprgrzqagjiql", "QpWRiRGgwRXwlkEabkUSobZkyRdGIOxhESpSrndTiKjSOvxgNVHKnpkOUPxGbXnP") }, - { XHDR("zklksxrefpamidv", "TYRKnTRTxXSPZTTQfPDhvGRlLvIFJiwKimZxbqcpQwJLEtlKFqZUcSdrOvxCUtQRBGzPIXTYaDLe") }, - { XHDR("uodprhftfml", "wzyTtSJHelYoFtnpMUkcOfNKcauLJYOEemFJFEtxMlmGyPqnFayXgqKIkrZdXnsuNSxoVdsLMjq") }, - { XHDR("ovmveiatpf", "iBCycWgPgeURXTjPLzNuJLhIdrsHnvdtFcndJCDrGDPQtKQAiAJIfdpViCcuHeemCrCDL") }, - { XHDR("xemuggtjjcdelxr", "qmPcHwAMhCK") }, - { XHDR("ma", "fXZFxsghsslbxWBqZKuOzeFwbDdEJnjbWjhoLAAlxrOGXuvVRDOlMCmVL") }, - { XHDR("xox", "NjLthLEmFNrVuQGtwXLMCUlRJuQqkNQVwqkjTnLHizmqcDHeTx") }, - { XHDR("ozmdehgdzsxmgxgrecy", "QUtjEyQAGdBNWFCzF") }, - { XHDR("ilvpx", "Q") }, - { XHDR("i", "mHTzUFBBKfnPNuffgxuyazUDpQvHBWAMLxPdlQpaxsKPICLdMpykqcsLM") }, - { XHDR("kkizzpiwvqn", "vAfOhijBEXCdYRxWIZUpDUUMEHNLrET") }, - { XHDR("urkyusvxcuxjb", "UueijrBVgkUdhONCGnnEMT") }, - { XHDR("oqdhbskguunugygc", "hYNdcKEGkpimXsBBjdtNcTvreaDBzcqotbAcyIMoVwS") }, - { XHDR("ye", "NbkGr") }, - { XHDR("hyekkpobhaqmc", "UqpfSypNlMeguiIUSeZpPwBorZhraz") }, - { XHDR("f", "v") }, - { XHDR("rkcocm", "aKOD") }, - { XHDR("ixsedidhuezbel", "LNIyJuofuXjWCRMhBGIQLLrDrDVJRqxBjDrjFctUuCFUhXXEqg") }, - { XHDR("ljnfzoeejomb", "aADAEbWcPZauAHYojDopgBHHxyvBWJTetFJawgc") }, - { XHDR("fibwiksnkyvlkn", "nq") }, - { XHDR("gpcwnchwwnbwahlek", "rUpJGuGxlWjmKWoineZh") }, - { XHDR("mpn", "cHBLFinxDveqzpZfDjS") }, - { XHDR("aftbrrqjmi", "XsYVAQgZKMlzsKwxKGOlooPPgyOctW") }, - { XHDR("dn", "beurXom") }, - { XHDR("hetqxkgozpqjcy", "XnIxqDCTUKawbIeEOpbNqwsNkAcpPRqgkBTE") }, - { XHDR("lgotgyaydmg", "BksDSsehzGDrEqzwobVsLiBwHyYuSLzThqFbOUmURrXLfMkAfTixsPRZfDmlesRfwDqQsy") }, - { XHDR("ikopqmxaivuecuq", "bpwGxanRtFRRsMLZq") }, - { XHDR("a", "utQVlzsZagqBfFpSisPngLsWbFecfeXwDmMrzEJmUekrJ") }, - { XHDR("zfsxqumvi", "QFHBPLbYIdYVFGIupieqqhoFJPZgDVJlvxzeMoHgIeaL") }, - { XHDR("yodxmvfdgk", "iBBpyhBRmWqVJVmEDjvSKvykezBRSCoUvJjsuRZDdAJJdYtRWeJOKrWFRxFxOaFXNyEbzOMjxVhQYZsZ") }, - { XHDR("fqebtcx", "OyjGoeFsPiHhmIXMmvbWrMeHes") }, - { XHDR("taiovvbwmozupfjms", "xyefocsm") }, - { XHDR("sbohlwghrxsenxkddl", "dBmHSuQnvRdFmkqZxvezOq") }, - { XHDR("eharhnv", "MQYqmUtSpgYmrPASwaapkkZIVNtnxXnghp") }, - { XHDR("vhffttywkrwmdjm", "IaiyKBxtdYjnZARMOIoSRRSFjsLyw") }, - { XHDR("e", "wFcCsZXGabQyveLJs") }, - { XHDR("wuz", "kBHtYonqPOLTQPQBAeUrPkEmUfXM") }, - { XHDR("hurfgtyc", "VOFnIOKGZLWjaOdYFmgEfpdyHcYESSadQojPEHQfNMbEQHAuYtcygL") }, - { XHDR("smljj", "rQXLAulcvaxqrAo") }, - { XHDR("vbrgynvbigatnjow", "rPqWBtRBDoshNwnyQViBvLvvXwflqm") }, - { XHDR("wlevgjkxl", "EuDRBkWnmNEsIRnOGKQcdUMRlDWAZsWYEUoFwlRCAbarnsZptzQlnjqm") }, - { XHDR("ypavgladcbdrrwbmqi", "tFekDuuZLcIPhKduXKeOzrqucjbkLCBGgOSPBKjjyngVyyYUSFsfwJecbMEnssTFCysADCD") }, - { XHDR("llhdgajef", "VuKDASUGJGlDq") }, - { XHDR("zbjkyo", "lFQYAIUXTxbiZbDMbMWztTHlSWFDQhuqIQCbKYRmRGQnG") }, - { XHDR("lbfbgb", "GCujJgzRdGTxhbmIMoIIDJDZkHYDhcNTcCLcpzUaYnUsWFatvapnriqalmuOUlSjjNapzKYXyEGP") }, - { XHDR("slua", "aPrCDELZiybVZbNjOBVKGbKaCqWYaEUNjLZRmdlHD") }, - { XHDR("cbpecavefxdy", "TDOzYmmCkdpRyxdhyWIujpvdsKnBWNxmSCCrXzpumjJabdfBdtFveUnObsreiTqIh") }, - { XHDR("zfttjrasotsyqmzuoq", "WLljtCtlNugsDwDHCAjQLlrHZdtOBbySiEGVsHxzFQLkELoMRlk") }, - { XHDR("iik", "dwrtDGAQm") }, - { XHDR("mjaeyqellmkvnlpaph", "aIyGInlqCIgFGPGkPtjjZHzciFqJkkSHhxGaGIWNNEmTkTHgNMigLGpTOtEUoqdICOtPVSeFlM") }, - { XHDR("xygrxahqzw", "KiFXvHAvDWqJvFnvdsCAqmmBGmXLvwf") }, - { XHDR("hgznlivldnnzvhvfqc", "mlDgfgShAMdvNFhxvPavuXn") }, - { XHDR("loqaapnabjqdnpvshzw", "pSQhqvaMLSMJuxFBC") }, - { XHDR("kkua", "Gm") }, - { XHDR("ykgwsdqxjsyijair", "roVOifpwgXMXQPvFDjKJWQuqdlRBVYdnFqwljHmMgojvZnZVPdXVCXDXYLhhWgyQnns") }, - { XHDR("dld", "bglurAboQjzlMPUCjRCagvsAmwEwILkisdbiSEeZfwjjUevsBpUFhDpieNPizYxGwc") }, - { XHDR("wucbpybwxjwzyrfxz", "ZBnodWHaOVacGSscheqWakIjDeWqWarprlmB") }, - { XHDR("lqihjaoelmwkvmzka", "baAVhZgD") }, - { XHDR("gmju", "SLnKjBrrrJGTwJUfndbblvOOjrBcDkCDeMAeYnIPjGNpzJStOi") }, - { XHDR("terpzffqtpkfauedf", "EoWdyc") }, - { XHDR("ehbdkhtfldixkpi", "YVzQRhCXMlhKjtZNt") }, - { XHDR("yexbmfuigbqiycsioltj", "CKCOUPBBOuuOvFPRQyQShroWxsdzpfjPFXfZjfFGBPffmgukpn") }, - { XHDR("ujmaaajwdcra", "OhRDVJlVFFusDtTJMmzzYKdsjdzhTWzLd") }, - { XHDR("ljvzpnxx", "sSKsknyVDDcluHyONHcCdIuzCOWMxZPgQsKgAMRkrJYRjBrKsb") }, - { XHDR("yyjqornjlojekd", "aeieKUzXJiObdKoOTqKtDatuINe") }, - { XHDR("racrnhtvrvxayqw", "UQCKeKijuiHJXcxINheLuJZenUEIKcLbIVnSfgyAxyh") }, - { XHDR("luuk", "qBCtswnDEkqoLgtZHarXDwfhoTGihxavdyJmDRHbroXUicSTDkvODNjSaEDfwMdOVtXvkSTnJUx") }, - { XHDR("glywdfcxkqdskdu", "pAUaTBWtxcECanfxJJtuyziKbpkjnpPAqnhAOKl") }, - { XHDR("geuqfqdyxfldaakll", "YDBxTlMjmbBHTxulTkBaNeTSizoDfCfkCpvqeledhjVvfyeqXNNggX") }, - { XHDR("itrh", "iaeUsjOQHLhKksdh") }, - { XHDR("hdfrldvihtvtycvfnaja", "lWPhchuuzcyDDWpHWIRSQtBLESMgYNqVLJBMgAdKYJEiPBbvjwiXnuXMCtIVL") }, - { XHDR("dtlkuefujqtkorc", "BMWeJSYKVUAEvJasQDdvzrZflwYbczEFigETLGvjfXcCJeKUWCkReVGEXVHhwEmrgNekjQbcNLnSkZ") }, - { XHDR("qzwhmzg", "dwvMabRdwrEkuHGxpMNJgMnODNQxIanfygrKnBarPAtewCRhooyNt") }, - { XHDR("fyveofwfnyptmijzumgu", "mBTFTbjzuAxbDtCdzyxKRssZyerqcl") }, - { XHDR("xhtsulypstn", "DTvjviYElrrjrYQUSZpGUvNxMhWkDBAVyIINhEGAGFKpRjagpmwoPinxEfVSqfTMxfM") }, - { XHDR("ocqxnbasmhyjtxpj", "lQERINVWMdJUPqxfHOIdwpfairPERKmFHHvHEGVfuBGSTrRiiMlKsROAzQx") }, - { XHDR("cgtdhrxdgqyrp", "UcmdTgZxRGlxieoqUpxe") }, - { XHDR("vogbvfnrol", "BUcBdgKJglBlTfyCjVTUGfyGGGJriUHNGpzMbyAVLwB") }, - { XHDR("onbrrwqkbd", "aQIfHJMbEysAjFfulYLozZnKfLA") }, - { XHDR("xrliexscbmnaiki", "gRUbesHJrrjouqhbeHdVmXvEmMmCbjtKsIbRBfVqaazzFUgoiSsIpWqvgHIyqrxlIolYc") }, - { XHDR("dfuegggxxwyovrsiijq", "uTLGruArcxfFiFSwQASIXfASZJORaWswcEMIMsPTgiuRxLJdAOLdBcEOuuIgpDQQcGiPjRIPvaxbC") }, - { XHDR("nyqgloraim", "gqQsrmyKnv") }, - { XHDR("fqynzjdkhlckmshxqs", "yqYYkoCXAqzlMLVaEMuUsafx") }, - { XHDR("ofpzgitw", "QbeYZHubQaVltYlEQWIgvSSiyViOeXhDlCQHiOXIGEStPGmwBXkQoUuhpHtwForP") }, - { XHDR("cqtmukibzzbapszvg", "ExdHaMUowDrGuGECbf") }, - { XHDR("tmsv", "hIHlvKDksnZkKGGU") }, - { XHDR("dwkcrzvodkpavjv", "RJWGqLVkIybEewiOAbPiMNPNTMLowDtMQuWcaXMbabMsENwOTBVjeogVpYWFSIPxJRehigRxLmMUJJbE") }, - { XHDR("dcihps", "fYlDnGsbU") }, - { XHDR("si", "vVAIJrCwCcxU") }, - { XHDR("nlpsyhkmcizgsswaqod", "CDGNBepupeatpTKofxRqXdfabPxvGywFJjkRQhZXtHBuSrNqoe") }, - { XHDR("ch", "tePtUctJAXWdcEOvEKhresMmpDjejadEoCCEPRVrSSpWvDHpHsYDpjIEDUXdprIXgBz") }, - { XHDR("ywscnegylyphqfuvduz", "lVnWltvGQkuWXJCKTZeafDCPuPTEZSi") }, - { XHDR("zpwrckvgk", "mnGjFZIsliuXnLNMNLUWCOYCAehswpFuuRcLtnVhpsCIkyqwBkuJOkzuCQtKcRBmkLGaaJByk") }, - { XHDR("etowx", "ijGCEaCkrWHpvzKHbsMbhiBarYfIsWjnPqdCFtPd") }, - { XHDR("n", "wkPlqDWmanbrerBVwQHJjFDwFcVptimASVqXBUHgWuHCkjMstYEubwLBejHFBIFlPyEjI") }, - { XHDR("bhtxkvzorwlbf", "cfFcMVbhdiIErzNQPGfLvDdFchqfcTUfBASyZpzRkJAxmifTrmiBldPKqqUtJakbRfvGt") }, - { XHDR("zfw", "uRkICyKPPNzufUuJsXNvPIXwOCFpbCPhHRIoOZQCLdALGumYlBclzKfXFYByxxKxY") }, - { XHDR("eydqninkygitndxv", "DymMWxeSvVtKQSvsocuIQCdLFRpCNiGjQjwFFGZNDhLXDBgvcHyNKXqwhYXoiPCLh") }, - { XHDR("twmomxh", "WquWngjJrGDJOFWXRjTcqjufLkGwyvjuTqZkHwipZyvvfwHUfqkhPAtpSO") }, - { XHDR("zqpgnugluhwoyte", "IFWZNXqdmWCyEyuvsadPGgdULoZqHBzqMlhsNAxMbTtFgLFHuTiztnz") }, - { XHDR("dgwkzdbbae", "nCxznvDSNUcMJjqpulITPtFFUaRM") }, - { XHDR("kgdzcg", "ooFuvtrdwyorJDfnepQjUwJEpeDcBOIXxltNWmEQfFFHAyCkhhvnltlsBOrC") }, - { XHDR("wlzrgp", "NkzRPRoUtoNTlIIYXdcDpczAyTpgIflhxSulvPvRChRWmgGGoXqOKZIAmYiJR") }, - { XHDR("mgkd", "qKfCRoeordjjFXIsjnqpqrnCxostBKpWYBpA") }, - { XHDR("zehtiu", "GJhipEItCyxmAEAUSIsnbjCB") }, - { XHDR("juweclibnpiwc", "HiYNAzJCKUwgGcefiJPLctkPBeSIEDFbLvJWlTWtWftNttuqlexBPyzuypAiyFAYFubjLjcbVytMrof") }, - { XHDR("mrfy", "TrrhSAeQCodthskUExLysjFGEYXpAHdKQCHHfVBGVNvaqAcgtq") }, - { XHDR("ehylsautknuanovxbr", "tkLZPztJetNTxJkiXuWJ") }, - { XHDR("xwnj", "EaXdNshdiyIhAvOiJIWgzsXilRcCScTVvAxcuXTxt") }, - { XHDR("zr", "YIMPVIsAHKBklUlWQOJiwEUwdAXddCHAQZfCWeueeOJILUkseWWCUNjq") }, - { XHDR("urbq", "cgtJhyBZJmpqcsqspjsGvWItHRoaJoFhLPcaLyBX") }, - { XHDR("ynnfffrelbdf", "pCxFxfcRktYPCrVvsAgCxObDfMoQQtPPcaxolIivQZBRmQfIAMsUEHuNkQCYghuTyuIUxmDJuNjJ") }, - { XHDR("msscjfzuquluehdgtwzh", "EbGLlpFoSGZ") }, - { XHDR("o", "OoHdGvQVlDCtlzVRjWXckWkHaeDpjhMvTapGOMrmeqnRsROJMFkcfTvBJyalxrBaPswzrTFzV") }, - { XHDR("wgnnsdjo", "bkcldpsWNwzEvHOFMDsQefwPJHphVputN") }, - { XHDR("ulz", "edPwUVtpuhhCgrZIKBWFVIWRnUPVCYRUWVPC") }, - { XHDR("lwyqbnrhvycjoqwdzkf", "rmcYHerQjJbtpoxltcjbMyevSdtyeuePtHumNAHHVZbZfXFuYscyC") }, - { XHDR("iqsfpzwhq", "aGwbcEQOrToUvrcizPqIxVhRUYMlJOuBKJtJUIEoxuwaeyeOuyDoaEmVFPqtm") }, - { XHDR("vnkilwfzfmi", "ktQ") }, - { XHDR("zsmivwtn", "OVTQDAvrPHEsubHonK") }, - { XHDR("glxenr", "OWL") }, - { XHDR("cspjhbpbikvnpbjgooz", "AXjCPfRitfpVlsVwE") }, - { XHDR("uoy", "gtGimProGpdDF") }, - { XHDR("zayvejua", "aygIwpUBTCBSCTTnhHZnvTWhclUDKiPpayXONskIpIwUDdFwbisTxGkOisEGmLdNJVGaEyRxf") }, - { XHDR("cmqofwofetq", "PPQaldOWzlDZXvnNiatRORqKNMORLRfDMaLTdoHDuRqYMdOODqHHkeQLDHIaiCcdMjnug") }, - { XHDR("ovygfgyamkzl", "oncngNVXCIZEYdBtUzKIRsPStn") }, - { XHDR("xteew", "qtLZnHQMyGoPTYcPFqGAOLPoO") }, - { XHDR("wlzrvjkupyqhzzmvlatp", "NlPcapZoppWoVfHhhoXVGyDbcUQdrDIOWshlFjaIALkaNvGnyk") }, - { XHDR("wsfwvln", "LZE") }, - { XHDR("nymtjigpamehxudh", "qWbNaRwcWVcOCIvnMCcXHoVYjddfYEGCcBxNTJOuApxGzNavRulTdSTgbRGkPicMGH") }, - { XHDR("znqtxetioq", "dgPVPxTRpJ") }, - { XHDR("zcfvykenfgpoitf", "kNPSBPReGhxJUyFmZwkOeKYPtShiwDGZlvcwfwHUcYMfebftoON") }, - { XHDR("osy", "ZBgEgVEiiIuwcaEztLZtqLBzaqUdZByZTwstTWNqOtTMVWNUbafPkiVYMVqIxtdZNWxcNIrt") }, - { XHDR("dglzhqbqncrlnppbz", "FoIbonGa") }, - { XHDR("nwvekxtepurkq", "rubluLCZvYwkyXkSqqrudhRqxKtwpWiAqGnQFPDktyvtovMHIZ") }, - { XHDR("ldjasq", "nKem") }, - { XHDR("yzknsq", "pxLAOVLeSerCvBJpKRKlrDAjlUwRen") }, - { XHDR("hratoomxfocabkzfa", "INrwdMMHJfk") }, - { XHDR("wufftnxm", "dPRCrNgydamttKFEijwlvh") }, - { XHDR("hqhpetlvew", "DkdkvDcDvRUXZBMVYZghNmZe") }, - { XHDR("safhjvo", "JgIaFPXTjBdUqVmdGHBvLiClOyxrtFVikkSKNDwjaNSJrjsYnbZUxsWIQbeDHW") }, - { XHDR("pbwasroqhgxtkbftmlva", "YQmnownDsbTGTceIepJcDhTdVEeDNIvIFTXhTRmyYGdvavWXhhQFTFBgwJwKajxmMxjLbyGax") }, - { XHDR("rakicttjs", "NTBedFd") }, - { XHDR("ycg", "kZhTrBLMTJaj") }, - { XHDR("jc", "wsYYbOowsnzFQFBSckHJGDrVB") }, - { XHDR("flpakaekxrp", "N") }, - { XHDR("d", "edDqbyAsXDdqJkpepDPcYLTzWPsWXqnifUKkVypzCQPdFdEqoirtZ") }, - { XHDR("jkszxhzqvumgkx", "TaYoJQyUfoUiGxMQN") }, - { XHDR("eys", "jmIiMYIBeScWbzSeVXSHDBWbtcTzhxLzJfYBjwxFf") }, - { XHDR("xkazdjemyidxczeia", "dPvceNSfubyLNlxXObCFZfyfcqFhgTYaZQuHNF") }, - { XHDR("pelvih", "g") }, - { XHDR("xlxb", "CvcirQSoAgAgjScCLUCglpwyzxbshMoVoFhKCoypFkdarATyUyfMSbMbNBhOykwPEGuhCdJONaRJzVO") }, - { XHDR("abkxloefrghzldqoiy", "eVdXOyotjYaNNDfONExaDXVyRoQUejyRyjntovsQOURDlUqgbQwxBPPAHVRFHJtupKRynXiEn") }, - { XHDR("epbwaa", "oVGKvcnhiQMbosuEfEashMEULFVdxUEwfQBIvDvALrhCUdX") }, - { XHDR("lgebxcliwqkuflrg", "rTEHIgIPnzVAXEfgWARhTArwKBkrWRcvdCHUudYhzzBuoBLgSXoKjSYUenXWblsWthZ") }, - { XHDR("koukvyfqchwr", "SDMxnjNgIRfsFcmlRUAHrVDXztOYyzRXkYUmgLBfyoiBhNjgqyUOydEoDTXutarDBps") }, - { XHDR("jimev", "zxScHKdwqlMjfsFTXkl") }, - { XHDR("yfssdbgta", "UaeHTusnEKMZtLASzFCIrCaEuXLrnfBNwKKWar") }, - { XHDR("fqukgoqhkmotvo", "NM") }, - { XHDR("fjy", "kSWsTrPvDDs") }, - { XHDR("vtkpl", "AkyhdgPRfGZmXyqfFk") }, - { XHDR("hqnmkbytmjckmmjm", "PyeaHLCTQOcEEfzyJXh") }, - { XHDR("zlitbjrq", "VvDndsHdYoJcsxJVdYOHEaSyBjInczVSDBz") }, - { XHDR("dcgdmvysihr", "sdfrIRWPtNUmMrTnaFyVvayip") }, - { XHDR("bscaovvvrfwdmutsqv", "uReBjEq") }, - { XHDR("eatohdm", "KiLSziDKMlguiTZzNtDPghCCgzqrqYEqrCxfAecNtOotGeNFfqRtMehKpmaHdowRPfBTwDAFlP") }, - { XHDR("fcnbjqcwihsnlbpg", "gMnBJqXDRrMEaeipZvHhoEsOBlBOFMUSsDBDOurrVVEPYAugd") }, - { XHDR("vdkx", "kmpzvYhEUvsoOzjkdqiasEhcougstzHflhYAVadhOhvTAEjCjdKCtnHHnwKSkSYVZNk") }, - { XHDR("jidzvmiq", "FltKZssApxyudkEBggtIzPHvHHgnkDSxuuTidCTkDoxdYpUgucfYQkwvqGPfiAEYnxpO") }, - { XHDR("jufql", "yWZvQwIkntMoPGvDWxrdMBFAFtTujuRitToOWIRTGnaivbxQUYpVdzNtNCrzICAG") }, - { XHDR("ply", "WprEcCkpthWxZhFlJcEJpHjSoZkXjmAVQOpWaFfidsTGfCeDVbCFHFwWCsWjBESWUqMXkpsCaU") }, - { XHDR("asbcnxkrhxikkltxbr", "hOqLrUDSsWuzjnoPKWULJsVnaLmQCcBudstigXehZIkTXnPrDLdebqNWYFcIzHSXMmycUmS") }, - { XHDR("ygrkjrbst", "JuXOZAHKNfwNbhfleOOvcpUxhuMBG") }, - { XHDR("qkfrnkmdpcjfql", "DMRe") }, - { XHDR("tk", "VIXEUuKKulGbPRFCLSbgmxWLhHuYaNvdsYROlb") }, - { XHDR("qkcnexltwhqjnh", "xFRscDIMGOnmCkbaqhbTkXWZGCuNdXiCexMXpHxiJOMfKqcrixRBcKRZkFdLRJf") }, - { XHDR("gwzfzfhozrsrlnom", "JXwKPCIuzwUrvTonTSotpuQ") }, - { XHDR("ahrc", "rJtNxEsDAjjlwcnytQrqmIeInCKuWQTVyOIOIVDyTgTezeIuWyP") }, - { XHDR("bopcbxovninph", "NJsUmoRfjooiyAwPBVesMSTPuKOOfUoflSjJUayEGeOSGYjhvBTevchQnp") }, - { XHDR("oc", "mALaMmHWObQbasUufsnIZyGMotldaeWUoJoYFy") }, - { XHDR("xgxwxmmcjocz", "ugbBDgUfDAhoYVlOgdDHMlniqjSGmGTW") }, - { XHDR("sgkuokrfgtpawmgsobx", "eDFtlTvYKWapQPmw") }, - { XHDR("gipgwoblotia", "klLUSDYEljqvNYXovXVrGsWxAKXqHfjDDPBnlyCwNAPtZviWLrnWkrRkyneLzcMnY") }, - { XHDR("nunpcbmzzrimo", "tOpDIMqaKKwCtHbLwwfcWChRpwzSioOLvPOrqbLyKLINbSC") }, - { XHDR("kogpwxxmcmcyfeqdvbx", "VFVQBFoYFdja") }, - { XHDR("cvzkyesyxsyve", "KoeKBynY") }, - { XHDR("kivgcvnadtdxndhplvn", "mRwRChiKhLGNRfwmXbjAipyQiWrRrkzWXNMfIhheVKCquLgTdVUeMdxWGpueRKk") }, - { XHDR("wcsxj", "dXGOrIjDnDhCendzWDrPWwTzpAKzn") }, - { XHDR("wexbumgpriphe", "nhlLlWoidKiobZURuJeOTQnIRJuplI") }, - { XHDR("kjjamoswzau", "puZiUUpYQbiztirFvPbjeMfnldJwOsuKYdgBDgJz") }, - { XHDR("apnasxtnbnnqnf", "mwKIdTZHAQagMTRAwqdopEq") }, - { XHDR("xvsiyp", "YoELZaQuQHeNrxpZEgwWwFodKPwAJIpTGeinfnKIPoefZGJXkFNaMe") }, - { XHDR("qvjxrnjqwiccnylqxran", "grCgnsoqCPmfgArZKiByfIiSJrznAwSxTPRkLFZGFDpmsIMjCvMmHAgk") }, - { XHDR("e", "vuRoidTnQyDVnTjKbcuJyekszxidtmBpXxkZZOhLPrMczhgK") }, - { XHDR("snrpjnhgxknpyhjr", "DtsGKdipDuVKhLRZoKmNYCAVjzzLDNaWkEKgtMXLZOycrgUMStiGehvSRhtPWvimHJEINNRf") }, - { XHDR("axqjoofrwmm", "SEGanlxNSNVHCmECNpGctqHHzbsTVHQaPmYSJtdtaWsmEdUTjRgleZyxuZY") }, - { XHDR("rqhpyvuaioxrijqo", "HdO") }, - { XHDR("efrztuzgpruqqf", "cVEQbJNRVCCkKAyKFhbtmfhFdTxsyOfaQcOBXiYQBVKOECXn") }, - { XHDR("lqwpshgkamr", "xnPusCotAZSlVtPCnVOhZaptEewxLqxuBEbfqLeVvmNSWxtTvHwn") }, - { XHDR("ekktgcbnmosq", "FzTpmBplzpPxXsNlUKbZJaERWQcbT") }, - { XHDR("nniyos", "IilgzzpuJfvDFpTYzBebCHBQZHofPHBQSnfJjJVyepsIRceRmxzofmN") }, - { XHDR("yjmkxrmuxzex", "KgeoMmwtjmFnjucygS") }, - { XHDR("xuugfhcsy", "UShlpMQRMygMnamLUYWVcNBrcUhucrEdyaQEtTJO") }, - { XHDR("bzabrq", "ggKdLftlXyosrSkSMLIM") }, - { XHDR("osqaipxbypvnh", "DGrIbRpEKNdaZEliLMqQnobmkNaelbxyoynOB") }, - { XHDR("fadztmeswakqm", "iDkTpIgkX") }, - { XHDR("usicsooxndbfcqasuh", "aqYxpZvsaejTRnxrFMGhXWFiNZAydAOsHRZJXMAjyhJdGolrbTZZDGYznekd") }, - { XHDR("lbsfditolqsornpperp", "YHdVgzNddjoRnrXMTLsFYVnNUIDlfcLYlnKPGgoYCUNnfTIKyZoiaeNMabDq") }, - { XHDR("qghkbmftajhlcw", "MQsCH") }, - { XHDR("gde", "eMLFlDoQDZobXNFGgueDLUDFdBLUgCwOqgcmaQpjBBTmvVIjjkHwfFrlqgeFBQoYAdvlc") }, - { XHDR("zhalyjnrvdftuax", "NzaJTEZrzSepphrcKxzKTaX") }, - { XHDR("ymmdbaqsitjve", "ecHueuuFcWWhyJF") }, - { XHDR("vcrgmmtsavr", "EGINAR") }, - { XHDR("txlwrtzrhye", "lzSPoWTsnuUpADrfcDSOyafaPnx") }, - { XHDR("ocauygllfh", "JgFrXblVNvhFkBCfkVpEjpVDRINDzXasSSGgBnfkMqAWBClliyUYcBgxXFNmPnwCcVafxXrRLfGYUlsG") }, - { XHDR("ajkjvkang", "VxbrVNIOwwFfNgOvLRAHImYThoWJGDYNaICTHwxSlVNotktwOZitfLLJkeMWMkUrGaYbcb") }, - { XHDR("skvi", "pjAxMpOSNjwzxkRwezg") }, - { XHDR("mw", "oTvVFXJuywyuFzOEhaBoZzFVkn") }, - { XHDR("psajjoqygqymitwds", "ueIVUWvAfriyOzebhvfyyZPFnfnSj") }, - { XHDR("vs", "rj") }, - { XHDR("iwaaxwtpwesqsis", "ZzxafFPRpxfJJZPuCZylAitLWxhYOObUMKWmXESHTTTdYPmQoozkJOgroFmzENYWIWjoHOZBwUgm") }, - { XHDR("yoyqpfjmvjl", "XaNMzRZejMCbIthKhVtfRcqaJNvhzubwuzfJTbFKgePurqqSSJObhiclwPuiBQIdjmCYx") }, - { XHDR("qlqaofqz", "akbAGvFZVLwQekKUHnUSVAYFLXvtlRcnDYCUhQOxOSKiZHLctkQNvNJhiqMzjZgENZeE") }, - { XHDR("vtnmjxyewlnspoxlw", "qmpnsNtAbgPuqGvmJIKlAcjcZtkbsDuTmeNcKZKQOjiczXEJfaPYdYPqXhfQH") }, - { XHDR("zzg", "ongkL") }, - { XHDR("xsfohx", "KgbzbbERsmKnKtCchHmjGEhjELNkwzXFOnKLPOgryKrXzIiKT") }, - { XHDR("uuirdxwtxrljaga", "luCEcRgnRjyImvoFUIi") }, - { XHDR("swkt", "VfZylQjursWPYMVgvzqMLauqOoEKjxIYSRPhEzNwBukegIIKMzUQCcaSibJMMPU") }, - { XHDR("ehjffsjwpfoegwqqk", "ATcCAkqzjhlJLHfZZr") }, - { XHDR("aodcuw", "GlLEapOtBmEoPkGBEilybUHoNNHKeCCPfOkJ") }, - { XHDR("zcvdchwpx", "ALRkUdmFaYXXtLZDTaApjdYJWvDnMjKDSWLffCUrkmfOaFUOKvWqNciSRNgCEGEhJDf") }, - { XHDR("rezrjuaykopdbuy", "eRznGvhOyhbNdEupnHZbMIvbHQOvNimjPrBEQGlNYPXPLYXyaoTVALSEDoGMIiMtrstEjpaLXMbn") }, - { XHDR("elh", "HKbnRjlCzeMAnRdEoFgDKiOYujQBtSC") }, - { XHDR("apkwejso", "cWaaIRqdEoHdazGpSkKejjMrkalWUSelPHCiKPvwxlbbsmSdWvvwDXOggjfXSKgYYnnWYmWCIhnTS") }, - { XHDR("aspbgppqdvavzrjxqm", "iOR") }, - { XHDR("thkfeihwkueqh", "vpzRGNvvvVGAoPHjyPgVuhRLlyAZzCLaBnKhqcTEKrqmetsQJFxNcguuViwMezdlPCia") }, - { XHDR("a", "vlsnTcdZiVDfz") }, - { XHDR("vksdakqw", "afGtvstNk") }, - { XHDR("dopsusippjyvu", "hzTKqDdssrbQKDqrBYNB") }, - { XHDR("naddqlvpthdxwdvbh", "dBvbWDlrhNbLQgQl") }, - { XHDR("izxktfdqfnbmc", "TSofIQuYktQcgxUstKomzDRvyAJOaCjyJPQCpTrApQAsxoaKZIxHfvKHvTuMyKFYDJ") }, - { XHDR("gpevqetjtkre", "ugEqZaOS") }, - { XHDR("crflrcttbqwweoqdveu", "poiCESrZvinGllyRWnvjFdZVlBGSMjfPR") }, - { XHDR("sqrqobkgpmrxmyr", "NSkwXbLSkI") }, - { XHDR("wxkcckj", "Le") }, - { XHDR("tmiwjhiyfamtoho", "CYYuKyJaNAq") }, - { XHDR("cvamigtvzzainwetis", "qtZuNqSUSARxercNOchhPrCCFtLNCbrptxRKa") }, - { XHDR("zwiin", "eVwYOyloodE") }, - { XHDR("pijszotnjfmygs", "ZAobDdBTWdZRRPVjiGTcmNIJEhhXIHeVMlXwNIBatXsDUwsj") }, - { XHDR("pomwlfx", "EHmFWMPPuQJObLbrjuDAbvsRrmeAlHaOoYKWInTVRCEfpymcQOTSLInVpGscZCIBXMqtW") }, - { XHDR("kucrctcqwzwkw", "keRYeDvnCFQJgrJaLKEMXvCcoFDQBhVuQvegmFsvSSFcVrNaORUYgkrwNBPzNlGUwgxThM") }, - { XHDR("rawbnrxfqafjyrmyvrev", "hhWsXSEWMCtitJfxhbC") }, - { XHDR("cayuipzgqwiu", "cMbYDAlTdETTGIsoCGKJEeZBZetcYgmGFOxLmlNND") }, - { XHDR("hqnks", "dmUwMwKVhMUTZXwVBISqiRZYrQnQI") }, - { XHDR("ylgruvrnxhyhd", "fpBUslXqIXVFiPTYbDjA") }, - { XHDR("csdccrgglzfuon", "JoVxLQBYYQntmcVzIPNijuqMnlZXwJCpuIFTQzqBewhZ") }, - { XHDR("ppav", "aVimtwxagkibIqtVrsHRThD") }, - { XHDR("abcqdolhwbdxejzk", "JGsjjsVIijNBOucoiwRrRszDYAvJGqCFYHVihjuHREVqyBqhEgsMQaJMpMhKqpTBQIdPQisrBu") }, - { XHDR("hsxkwvogejqfyktnk", "qkJRtMRATnIzEAnWetFgrqZNyDHZyKEvKKCxnnhDaowXWGKZxJskvKSFxNxjrtQqu") }, - { XHDR("qhab", "jSmSemOqgxjVWwTUknSTRQZYALEbmGoQlBDiCVBLQpitzxCIYxhHl") }, - { XHDR("fjchqm", "DnjvccOZnRFauyZrzGDPFYJnMkioRujsvSLIizujpImoJhjrCnEAkMQieyJeHNkHIPgKUpRcmyrWSf") }, - { XHDR("ixquoriicqvdajhga", "OTOWTSuqJOQxPkESTEksWXhHxSHhlLiNAuRLSsCGaKbWQjPaWzehhaAmxymFhLPVZBF") }, - { XHDR("wczswdbg", "YNRnZYyFMXkhbnWxCUBsVjnlMzaxTHhjdIL") }, - { XHDR("bevhmgebqu", "GqoFKsHFuzkflDdTHWlvmCADUsfETkTcfHMvwcezqbkIPtkRZShWMFFgrxlFApnOziYtVfFXuW") }, - { XHDR("logwnuiippimdtbcem", "WDhJujtHQGzIboQLnWIfSfVpgORw") }, - { XHDR("ccjtntujisnvdlog", "rhfEuSQXkMJoLUxDIsgk") }, - { XHDR("bsqavcpxywm", "gMVh") }, - { XHDR("kxjbiozc", "hvCgM") }, - { XHDR("dfycbpx", "RjP") }, - { XHDR("jjxc", "rJiGeUjgpKcxunjpvKZecltSqwELDYOEQCRuHtIYfwajjzgofz") }, - { XHDR("xobsgzknkvtn", "XpegBgpUyVyFgPiLAKbtCHpAqOwOvC") }, - { XHDR("nebkniqbrktvyxax", "hdwkptKTL") }, - { XHDR("mvuhoc", "jeIcmiPjvepKZjgHeGheOAVVYdsMazKgMbEANAhtyNoBQLixCVaxGpdZcQzQy") }, - { XHDR("mfrbzdc", "juupciQpaglqnpYgynWTggGxqFeuvTXNzLGkAVrRvpmPpDAbjbGZhysgmoEcpm") }, - { XHDR("odaramxq", "WqLiAxwT") }, - { XHDR("tzwpmmnvqrvfdswzt", "IweSPGBhYBxkDAVLnSkYotuTOThpilDCZjDUGY") }, - { XHDR("ctbeqim", "OJHvsODcrIbMaJVfhyFyiLSDcZFjvWXTZbFBZncDoZSMfLhXRpdkvDNeRqszGvlF") }, - { XHDR("kh", "JSPxnwLwhPbgidJwVDnvKJHdgCzkxVBQmiHqmRLKiynsbqIpihxDoEnlPLdTQtcXnWNLATuBWI") }, - { XHDR("mshkzxrfolelamiu", "kFrOmQBGCjgCoqTqCIsiFCfmNTZUbVAdOyEgdhRkpeowsRhOuBgVahtnirax") }, - { XHDR("gcg", "rZbcMUexVcDedBjj") }, - { XHDR("wloquwxt", "WfYBqeNdgdEoUlUijvfxJguDfdBKdVMFZsXgclkKdvLMuXygeQsYqIASENlZEAYxpu") }, - { XHDR("lvelcrrysoaxmfiw", "TBg") }, - { XHDR("rgioxwcodzzxt", "ahycqnZoGqSuN") }, - { XHDR("otvjdnd", "WplPxciUrBbaCELmgXBsDAwAteLqnMxnLGfzIDbKJCpSnlSnaOC") }, - { XHDR("brgltjqrsnkcdtm", "LDJiABTMlvqdOIctBIzUIOKvCFDOPRwxnQmqtHDaIHBZBTeKZrmpwbroZWSAVHLQLI") }, - { XHDR("tuj", "wEIpAkwagUIaRKVzDrqyTyhzoHNezEFPqWBQmVwnoKbGrYzZOpEps") }, - { XHDR("rvjnh", "EGlQSyLsrIRahJEmQrgjOTYFGqsbYLgUcIwjrEWhzBmhJfWUtzVvXalmWNssJWSRID") }, - { XHDR("svzezieesodqmwq", "zWebRKVIWoPqOvxijOPtMFNQRp") }, - { XHDR("eikobwppiiqzloic", "wqvBfAIcXHxCYslIseeGSNNWsuAlxYfFlFHRMqfHRAeBOKJQFkVIlrG") }, - { XHDR("mbrslzsxk", "NIOsZhAKusv") }, - { XHDR("bljtrby", "UThOPmItqzZtyJQEpTbmFPmgCy") }, - { XHDR("nb", "XeiSlBpaWDioIXxqTeNVdxxrYUVnGNcSGJnODnkjliBBkBGuimDXXpIGlVeqBef") }, - { XHDR("tcckfcwewhetk", "CTEnItqYFkQvDYTSOJjaqGglfmrzqhKBsRpCcbhfQzuC") }, - { XHDR("xjpmoxrefjqygbnu", "uPGkczSdylrWWyNNXNtrpYqXEcCbYknTLAWXMcrxpPcrvKYgRlJgiJOwQgTPqlvBqtpcGMHFw") }, - { XHDR("zchemswyneih", "GqreIrvuNLopQGABNyshRzCQYislMFmohEtqZaHFyYadYDUJrxrgIOvBzeZpVTIuWWtVVHspexM") }, - { XHDR("rhpdwmxzhxzxduebglim", "OYqsAdjMkslj") }, - { XHDR("eomrsqdyafbgrzjgroa", "RnIbseoxChPFbvKXEOUoPiYOsOwzQGwMabEhmXXQNnXJqhyH") }, - { XHDR("orjpfycfh", "TjVmmQZNTjUeCWjOKUtVXSDMv") }, - { XHDR("lpd", "hXaXXShGaGFFNh") }, - { XHDR("rccmboqy", "qBTqaDSvrKEiItRZyShGzbMTnpabpiYXrlpyczsEDNgVeAqSbkGJlNkvdzmpTkOyQbdfZXWQ") }, - { XHDR("avrly", "eNNmlffuykkMxhnmYwYHZCGdbZOlzoobTwMNqOazaCEmbcQMaMcNsSqcjeEmWk") }, - { XHDR("kv", "OVsKJDELGXxddgoVukQVoQseIJjfzwgJyAAZzYHJmYFMaAUbVudUdFLjddTj") }, - { XHDR("g", "HGABnKDKNPQmlro") }, - { XHDR("mcliw", "bHlcoMLYpgYNJkVSFfIrMNKvUdbqadaJZRRHqBoOHMjmwaweUaknhWCOa") }, - { XHDR("qeszgc", "CKVGXqAyjqL") }, - { XHDR("d", "ZyIPINQtfhPVhSdkbDLMohuDDrqvhVyBAtUNmcMZuWlziSCe") }, - { XHDR("wpsfgsuaar", "fVwnpiixQhyeJMCHJrTcYYcDWw") }, - { XHDR("bmum", "RXkAkxAfogwXeVKgJGaRRRRPBTTezNHisNQZkimzxXaLqxgXdfWCp") }, - { XHDR("qaxplmfgnbboyo", "SFqeBdVyjeyRE") }, - { XHDR("xpjkpngmozynadzuaitg", "UFzusCjGSCXmSUpWjUvWvQeBkgmrbxMCMGVxbLxGrALOdDNKllycmvFumjIDZzcsQCxDXvNic") }, - { XHDR("apwneecxb", "b") }, - { XHDR("r", "NvOEKtHRcHJntYPWmuwsYQOtnoCyFpAtQgrAGxRUpfHtgmoBlSKgtkgsbgI") }, - { XHDR("zeyd", "oSCxwPvgOYLUHNXLGmDobXMMBWIjdOggIYwkJGzcGk") }, - { XHDR("ek", "mVpMiIFtzFidcrBmrgaYLuEsXvtazCXjLgmpqRdgRaXeMBUqsBLbOGBHZWRTXCgSGq") }, - { XHDR("znzl", "eAPaqNBeWeNOxlaqsJyCwbYsenugOFlmqtaJKsKFDbV") }, - { XHDR("xxjdnbnoznl", "znwsGjggpiAleTwOuzrOPLcNFABfSaoivWolOBoAe") }, - { XHDR("dokwusdyzcmqfnptyka", "MNPnvxttxIgxhNTSfXulhyGQJIUTByRQUHGNbZyQc") }, - { XHDR("ndfppvyujmjgdsipxg", "QIQsdUaiDDMQBdtZfICVjnOsFgLfHeeerXlsSljfLvBbHpXcDzNHoHQhzNtwueVYgtBDSHc") }, - { XHDR("jfcxssphpjeptl", "BNssFgrReplDmPURPhHjmCaQbeYYjQvWMgaabyaPiPJOhChIMjLLlilNZIew") }, - { XHDR("mvkfh", "dINbJtakdJPeXaQkRDQkHKBXlxgDVdabAzhZNVIyNRkxeJGJOQoCqCWG") }, - { XHDR("kxzuynarzvhqmav", "rXYpqlOraLtjvQkGGoAfMyONa") }, - { XHDR("gadmvbkisfmy", "tssGGmJYIBZnFvKOVUZzfAZuHCbIioKNPBikrZzTqUUCLqJgGTKJDMJOT") }, - { XHDR("nbtwydj", "HszDiXWTQVXnf") }, - { XHDR("ionuoamkktgfuvsp", "TJSFosVNSXMxVSClyhbNyfqmrBHEGmrOypA") }, - { XHDR("donczttssf", "SgCYMAxloVpveyveaPIuNbINyralmcFgdAiAvCKPwhEWISKGuIautPLYJVDHBczJEssWWeUJwUEzkJAw") }, - { XHDR("kbrwny", "XlwNBKLUJBRQAYhvEfbeQwLCJTlFztUshAusvs") }, - { XHDR("ncyt", "eJzRuflELMwVojuEqViRMOcuyMYpxHHdUlpuqxYguFUGrovmPGbBiuoLAtwJMYd") }, - { XHDR("owmilbywehh", "HnkKCNrSTcZAGytXFBnIYYPgEUyOMHXz") }, - { XHDR("egohevypx", "hxdhGMbzhZULssItoicxuzoJqBUHEEFPdQAGLGHvkMRQqGrEpDNaxa") }, - { XHDR("zskkhmtrazmutqg", "ZEDFCeSFNsBYVlMv") }, - { XHDR("mylafzofjuktjoovchn", "JdYxxmlfrXDhNWxfgfRywMLEibSbnnPcuAcCydyVABmmVxLWsVvCADuRNBMXbfNYIEAKSySQ") }, - { XHDR("ghmlomawprdj", "VfqSN") }, - { XHDR("plljtpcpwxcdxafzgwfa", "dnXXgiNwEvgLnLwxvJ") }, - { XHDR("oit", "BAHlQshgHvPHlUxcgVCvjTjjDYAPaazMIgArzfUIQVMgmlEXKgU") }, - { XHDR("zgbvz", "gFefLTcvZFJGuEdnMNnYjoBSVSEREGlSKesKMdKvsDiETobWwRMurzxZgBckMGyAmpRpsKqMkNfJdeD") }, - { XHDR("dmsypze", "ICbAkxeBPKKWqWkUKVdQYaBXUghVOWgoz") }, - { XHDR("kyxcceyjmgqxtpjf", "mmUBkoiNkFleKEGXtHRoBgEdzpUwfLVVAlWTBleymBuzyWVMXshaHuJBKSppBuBhmPy") }, - { XHDR("lwflafahcaaw", "JsoJZxpBdqWemOxHRoyDKbtUugFKgZLiDdaRoNrjIy") }, - { XHDR("u", "tUftgubJlGfOzefUCMsixpPEyWungl") }, - { XHDR("mjotidnpqchpe", "krZBBxBYdsrVfhe") }, - { XHDR("thoasyuthv", "nqMVnnsdRZsukcvlaBGgeKGnPuRZFAnqvBOTVfOwamvMMnhtGMqYxcXKKixbJyOlyMMLEJyxt") }, - { XHDR("aldyeeyrdbt", "fTIpDaooaXOLPSdaDsFcVXAUywRda") }, - { XHDR("aquvzqbmoudwjhf", "shKzzyTrTyf") }, - { XHDR("kgvcqwsxdkp", "EdyXZDhbpEFTirZezMZFTHu") }, - { XHDR("dh", "fXhmwhwjxaXvbEJPfvbftNqoSlkCwQVmpFcUOryacBhwrpDOPAUmndETZDUQuCutsFfrzTkHXxc") }, - { XHDR("sym", "liMUbtrDDqhWIMMRqEHyPUBzMVTMjGzOwWzoohcudLqAdInVeNqxbSswcAaa") }, - { XHDR("zhlmo", "PhinNktOVwnocZSJSJRrOICAngUodAWIylJDAeLiDdXqvoXcPpqmoNBgHaQVyBv") }, - { XHDR("ndgnzs", "noIexDZAmOabOpvQsfGksrzmJZsDQUYyhZZoFZImwE") }, - { XHDR("loxbjxcskxzubagi", "cgmVVvUuLRzoYKoVvbwxTujPSVZbWdlIgknBDmimaBqkrR") }, - { XHDR("ibxpjwazeox", "MrVVMdTDgElFdfAYjachWRDlcrNLZkJDztAbkruwDGPdRmSBnzZyjxPQCJgJdgb") }, - { XHDR("ohqq", "UJkGXAKcthZzmGcxcFQeULisSfLBsyrpVHvY") }, - { XHDR("acmdmpohkyxcavxssafs", "wRZQlrKgiRq") }, - { XHDR("taoytksygo", "zCPNNpknzePGuURfeoQxUaAKgWx") }, - { XHDR("wsypikqlfrnvukuqnh", "apJzxCXHsEfWtkENWoULMpT") }, - { XHDR("iax", "IuOBDmxZqoaaTSji") }, - { XHDR("fgqglnoqhbdcljgpbgsj", "ryRtFcGyaOgtAQRLPjceWaoFkgfIOllsPFxNnnNWvAkPugjtLtVlpzwMXtfMkollxPejvPhN") }, - { XHDR("tqwkjpfliqxpjlo", "MIobBifm") }, - { XHDR("uzrppanzjxnom", "wdbkgUEQELBRHolHNVKmvikKqlkQuLSokDmYjlmWBxcmXHeIAVLIqyeQElDYMEEFJwXlDpkO") }, - { XHDR("z", "JBFxcnoSNGWqlQI") }, - { XHDR("surjfhaxkgewrwrkow", "OQki") }, - { XHDR("wzd", "fEoHtqNhvVdMjaQrghcSEBeqPvcMQmxivYNaLeAWwBCcuSSPsYUvxBNSAZD") }, - { XHDR("yglkykylmflf", "bqauRNzjFEbPtyoD") }, - { XHDR("wnpasqeiidf", "sSkxXOPqUeUfPRNDaYymo") }, - { XHDR("nvssynndpdddak", "dPlxERdzLQGEhKvXeHrzpSowSZjjsGRkNvuSRGy") }, - { XHDR("pecwohvichyhmjaovv", "tKUMKpuWkdzCuJfEPwOmTRhDhUgTFmeMeNlzhHokFUcxYzzhkvAvkHmJBBoPRgWTT") }, - { XHDR("ck", "Q") }, - { XHDR("ioi", "YRHUINeyNefAbQGVcPjMMZIvtmvHZMasPtCWEHElxtTbEfnnoRVJmjsQhkpM") }, - { XHDR("fbetuuqnshhiusmm", "etSJrKqtAhbvxBMJKCBKUnLWqIRUqTtC") }, - { XHDR("aqalghfqdreytf", "VaDXletFaJitDPXIefqj") }, - { XHDR("zqkqoikgbmlnqtm", "dFUumMMzwoLXHBIMWAXGsHAGkSoIOwCdBZVMgenNgiKlqTUwsqOiRlR") }, - { XHDR("ggpmut", "UmOHdOrjwwTciFHTIddYbkCxfaX") }, - { XHDR("veyyctvpu", "PvDWvAWuiPBDihELtrhkpal") }, - { XHDR("lmtezswejhudlgk", "kTJHAZIkCxmnlEpqKijZvTabLBzVsdKHNjqMoWTzmWcyBFBAwoFJQZHUpXdBlidJH") }, - { XHDR("xubhyonxqlpqx", "vvDgRQRVbIGQDQujBUSFKSsSWqWYnjfIlj") }, - { XHDR("hntuvautesljqwm", "uWERARspAdzBKFcOllZUVuNEsyFgtYIEhjfsDjXslBjTkgKAxIDlVymMPVmODDWKeouQU") }, - { XHDR("zr", "DQlGasKVPAENpzKhOIfiWVuPHQsGAOjLqgSrxHIptioivqnBwXoDyDAHaKrUUYsZPosskFa") }, - { XHDR("wacqmxfwertailuivbhl", "XKIlVWCNhwsLvJMIvwnZvDhXXbQJetHJDVGpwYP") }, - { XHDR("jbbsggsviuvt", "HloJhvscuCGWOLjcSThKBIecuhpdjfzxtdDUknVGDpsPnK") }, - { XHDR("tdrbgrgwml", "X") }, - { XHDR("p", "osqCJacRtVWvZVvjICBBMuEGpPkaGtFMAtcTCpceBPmIrQMuVjUFxMadjeGkBpXKzlgsJBDvoRKILvz") }, - { XHDR("ixgwvd", "zgN") }, - { XHDR("ashtmjoxgdjp", "ZGQUTioWThLNKzdCKVxMKYEvwZWZOeREhttzrcLOe") }, - { XHDR("rvng", "kRTHfNImpIaNRekGmgbvFLeyUXUGpLDrbIxWfzsymhcKHhyyMoz") }, - { XHDR("ljaxvrweps", "cpfRGCeygayxVYeAAbcCKcTvcIcnJAQnywBfRo") }, - { XHDR("mlzamiacpeunrwb", "OO") }, - { XHDR("vamnigoklma", "WGTFkZHzh") }, - { XHDR("bsjakluxljnimju", "BJVSdPgyLKOVebwqmTSVuKYZWjXoHOLShaoIDHWfKahmVscwZnFDLfraKbtFhvKRK") }, - { XHDR("mgqnnwgzzlaixguqe", "FzjaJbhxIzQtiEc") }, - { XHDR("mneerexgkqvtx", "ZrQNh") }, - { XHDR("sxcwlcyjzh", "BPAKmmfVQcpSUHgzqmxZHTDFhujGfdqJdUiBybfFOfD") }, - { XHDR("ip", "nQQyGPPKYUIz") }, - { XHDR("sxf", "kACSfpHMkhjxVaKm") }, - { XHDR("iumylfqwoocrvxizkq", "YgFsKeEBPtIXRQUDYcAXoOWKyjCfIeekklOTndbXiceUPqRlhtmdLhGCsegDcpsR") }, - { XHDR("itqfqwdspsy", "TqlbvmUPCDeRSQxjiMgzEoZqldmnMGQaPCGLopkaxDWbPvQuSJCAQvsQzxVMixGUHHdEQAx") }, - { XHDR("szplvxfnzgxbnmzk", "tttsdmdafPqdsthUlVaxYCsflWeLEZLQyyZKlRblJAFk") }, - { XHDR("onloawiwrrkgy", "MvsdchUKeJslulVImmkGNcttLcgaVJXsLWfrRGw") }, - { XHDR("deunldmomix", "BiDeqeYYTemoIgWElgGkcvEetvtyGzTVPKuT") }, - { XHDR("yotyvuinjeyu", "qkjlBRomEkqyFEeKhRgtxvSIcVTLXpMv") }, - { XHDR("alirojlobbo", "CObnFXciyssUnDaXUjypwNHytrZaiuaxTEfEARu") }, - { XHDR("uitwsbgiixsaozzmf", "PUDPYsIJvGjXskhSxFYCsoAFtHHKA") }, - { XHDR("vmaydixa", "FODAVoBxiHCFRgrpQnMBCnJwbkidzLkERrhPYlsivvtJRFwUnmiEchhQVqniNciyhxCo") }, - { XHDR("tvfnjfdxaamw", "HROEUwFesvytuPCjbUoGRdCXuFatvf") }, - { XHDR("cbztq", "LhwFgtErCkIEuImzyQvyCleGoTvyFWVUwMrPUDnigMnmPT") }, - { XHDR("foaqdmceh", "VYXVJJdnQFPHGORjJuBYpkcENEXNeNamBvKKZouPyLDKJ") }, - { XHDR("ggjdnvmzeqlydwvnpj", "TmdQxUaCalgPGWYFYomkTpZEvmuxiThcPOAFQESvLwhtUfPquloBWp") }, - { XHDR("i", "tRsFhCItFtzDcvpAcWVsfCsuAAfevmzAsHwagxSWQJfTzsdNbqHIhAvWAAvT") }, - { XHDR("npepzlwsqrscrl", "MPTvBRGyDcyDynpdqQvEaqMptgC") }, - { XHDR("glbcsicuvog", "vgREVdAVddJJIKBPTJoQVjPdbTxzHonXTYvjgzJLHnw") }, - { XHDR("datmtvexebnthcnfu", "PtxBkfnZFlZHsxwaLxkiWFlD") }, - { XHDR("iraqrmrjbkrycuos", "EHZrCaimTuiJqLKWWBeWOjPEMkKSlegLH") }, - { XHDR("bdizqremim", "RvUsNTKkfcoGqSEzkmDmqLlDyEDoDPyKHwVNtVGqyRyfkD") }, - { XHDR("rfytnyfqtej", "MMrLlhPpg") }, - { XHDR("boykxrhnrnsxrenn", "xXYIbSO") }, - { XHDR("ezmgcuurpuouoqtnpl", "BwoHcOBrsYJprJqtLEetcPgeuTKCS") }, - { XHDR("saxowaoofq", "oGcZEVDRkdgwFlLKIQByYahrFcZvIzhuPZdUiVToosKUTjEnDbAJLvTndeGZVyAgpTtsxd") }, - { XHDR("uekuzy", "jqJfGuRRPKhfwwZSYkbVCfZfBLXmQbZs") }, - { XHDR("hgwrlgkqn", "mjBmZLqyrVUNDQCRPWsh") }, - { XHDR("kp", "Plmi") }, - { XHDR("cxequcxuv", "sSEBJAeDhLWDeRHsRtFhjPPjysCmYmesOQluGxJCztadNa") }, - { XHDR("urqbyvsvvqj", "ldtIZKjxAWuOXueLSPjTthrhBWSlf") }, - { XHDR("r", "EYIJfwWbWxbmOpOBnMilw") }, - { XHDR("rgjvcuxrfgyjcuzc", "XOjXckDXcxNkWkwPXjYQnsMyvXSiojFiXFkmnxiPrBeBOllBLGQLovLyULOvAmYFeqzQHIvwRhe") }, - { XHDR("xdyaxcnnzmwbhsnhnchl", "zRsGGjwxKafgUXlXOOlWtijmqVxhcUsHqJUaSwBiploCuUaZWGsSfLdoxRBeuQnyQgXisbwThuqDCd") }, - { XHDR("qorvropxydvovbwmjk", "wNMVVL") }, - { XHDR("ejzdibygskln", "CsOMiLRRqtzDaZiKeHKuHOxCVPVsOGBFPmLbEyjJUGylqBuqQxIyuevWtOhnCOWvmZadYaRKI") }, - { XHDR("lypswudzwjlz", "qAbxOCNMazNOaOcflXbOBFbPMnuzuweyOSIQQQgplYGOPveYlzgXJMItX") }, - { XHDR("omqiy", "ETVHVHNNjvZibNIgLucPK") }, - { XHDR("wsyvabtr", "KTiCIACaCnGWqyfmxksElPPWeUeSVqjdEwT") }, - { XHDR("ngfkwvqskirvulahrpq", "hWEasKzvqhyvh") }, - { XHDR("twaox", "JywlUbVxxHmwmzOhbDt") }, - { XHDR("mtskqmrbggsdgpv", "OkCQASogOiHZKVWTJhUyexqvXESGeJvOmubglsRXKBDmenwyTkTVRdcLqC") }, - { XHDR("ohlofqquulnfwmiwqvvt", "W") }, - { XHDR("zctuuhckwkquywuey", "KedPREwIDezCzMQMtRdUPrLRASwImSktjiRKFlokCywnOBynfywWudNuzXXItPwIWJk") }, - { XHDR("vkbzhrhvikdnrsykpug", "XkWrcHKJEYVFcAlaOUvJMitzDbcLkqMovYzPEFnVfQqYkLSkgbCJGUZdaZHJhSSlJecG") }, - { XHDR("ilfjycspwsusejx", "KFPmkNNyeIbQcjaiQEjAfVPpbCvYPygOhHFCyVadVRF") }, - { XHDR("rtpltrvvgxnbjhrp", "zNnYUbNgkkoJFBhcGRzCEWmKwiBXbWcexEYpA") }, - { XHDR("zgoi", "luoBTBeFzbHWaUepsBHbtTdkCeRlvvyhfJxTgLohkeTDYpFuGEJ") }, - { XHDR("nfizta", "L") }, - { XHDR("tlqxkehss", "GdqVgvsRhcaaUtmUcdVxjNXISsTFFargDhuJsCbJfsAusqRSbwuEU") }, - { XHDR("nh", "uLrjsaZBRvugl") }, - { XHDR("hxfrqyksjhxjfxsilh", "XqFJhvctsNLCKyhIbRFrovsEgkllVLhHVDLcbzBNFlcjhlkcWgiUeuOGStyZHCSMRftgVn") }, - { XHDR("dzbcfgutlnocywtxybi", "yJtYJZdDJIftYmnEJcLWjIuKBnaHETNnEpIWgZMGyMVUSZudVlWkkcn") }, - { XHDR("ft", "mlIJypHwYXTXdvRtOQqZnnKvUnmfjfJMpDyxUPpdeunswrR") }, - { XHDR("pladjtxaqkqmnukngjjc", "rIJneraSWyipWBRecMzlZTLLsnQZAvsUYyFZsTWIsreZMayPUHaWsgwnhbmvbTIsXOoZqgTzSy") }, - { XHDR("jpcvssndafmtgam", "GaWaNYmsswJdIhyxqrDTGCcoPHWPWcRKGN") }, - { XHDR("sdvmrqpoezbeorl", "dUfHEaJWlCDNwQqokGBqKB") }, - { XHDR("qjnaiwyfzhvbsueqx", "TarCkQhpPkXgPFXMBmfSSAQvXqIqEiqlDoRKXEqIgaaKxTJcAFRoh") }, - { XHDR("vjudutxewqxtjgeb", "LmPSjmCanGxn") }, - { XHDR("p", "sYlJKlOOoyDyTcApHkAruOMLBNUbWxKTYwyXIzymASdCHiDdHOoM") }, - { XHDR("kzvboh", "IfRJcZAZrZtACLBetCMaLZhefCiggSpgxLQDdjF") }, - { XHDR("zdvphlwqt", "GiQVHmoySXzkKBqGdNypPHQCDVxvObGgFsudbcdZpMggmuiAIACwOxLSPTIhhAgvrpEatQlMsNDx") }, - { XHDR("hlahkochyis", "hKfxiibMpGkNSLPt") }, - { XHDR("uzyewgl", "WMjparEEBKMlvESoDKTHiZReUUacmgIcNhuIJNZooby") }, - { XHDR("zaavvhtqbaesbz", "SspEcqrnkfaRHlyXTOsdwAllflrKNOEkbTlxRQwPUpWbVHeDClQYohPfx") }, - { XHDR("bqogceyxqaym", "GSkTWTlTwPIsnULiFHwMjMVthiQByEzIrlCrmZkVKrmzUpVarqAglpiXMCEoKmEBojnSUQntCO") }, - { XHDR("hpdmilh", "ScScAYjotJfhwScAKdRZrHlyLObtjhqHcjyUkDDlafyUefoqWYxhDjLGHiBwkXlOXNS") }, - { XHDR("jzqnbzjgfyzhhafzpm", "EiQfHsinnvYKOuvkhKKPOvyHRHleRrHySJTVOAk") }, - { XHDR("lfklcmykbkgqrgfzplwv", "kxUuQWiDuhkclcguhLzAEJPgIqOtPBFMz") }, - { XHDR("fxpfxmvdtnsangnrqqq", "qVlNk") }, - { XHDR("jeziwtfukkkvkn", "cUVPbBTcoFONLilREpUXoxheHUtcsQCvUSZRqRiwGICmJrad") }, - { XHDR("wlsq", "ucWFAtAJhXKBbdzwtvSHPoiUYHqzPMNrwqEzmYoUccKVLLJsYixXUEGDDHjPBe") }, - { XHDR("frwduari", "JZjJWkeUsIagKYSukZfxamviLKYJLwYZgIHPpVOankbCPyfxnvnTUdWnaIhifNKmJBhiKpVPflYLKGp") }, - { XHDR("cpqyhjvfsssclccraqq", "BUzdcAkMUftzzzPOeyxmkQQnhgktxgx") }, - { XHDR("xqxfy", "VzNvGNYlDHFvSQphUOWtaXksjXdjPSQzdVFPihHYZtZGdnxs") }, - { XHDR("kk", "OPdRtNWeKkhDzenxvRVcbG") }, - { XHDR("urrlvilgmesriqx", "oNFPX") }, - { XHDR("zxhdiilabiakey", "PpLGIiCoXmoDzVPcTrVIJHszGAObuvEX") }, - { XHDR("zyvwnzoeuwcacsaimibe", "TRAeuJUOecCHQRHpiKDsRlwHbJMZZJmmEuxQoYcEb") }, - { XHDR("knc", "aBMIONmNRbJrtNBpEucvvmnyeMzqdbtdAMjwTlfqekieSNKpjOj") }, - { XHDR("rffgiin", "kUWK") }, - { XHDR("kvlhusy", "BaoRWFukINob") }, - { XHDR("hy", "mYcQc") }, - { XHDR("rdlitlqeem", "cyDIZUJXCBHJuaqqorIeJsxJKyiJIVtfNtaCATsi") }, - { XHDR("sydyryjhovvqtyrmol", "cL") }, - { XHDR("yqoasodyfbfsp", "BPmxIBXQHGuKiHrNvGGlTh") }, - { XHDR("yooehm", "WoVEFvSCwmYQYaZktHuKtQ") }, - { XHDR("hfmeh", "JubUWYF") }, - { XHDR("cgxfospfszzfmrfuxo", "AFssqlRQlBxmUWvLkJbreKcUnVsOhcTifPsvKPnPpfCgtnkVLOcUPWunoPrS") }, - { XHDR("auxceo", "uPmxJMmbfCgvfn") }, - { XHDR("brezqxnqvoe", "xOSxzAdxHNsfZyotue") }, - { XHDR("dkyayccmewdcedl", "OANxiijgpyGBjicHYtsrLQuuTWiRKadHADPviIEzccArmWzcHwrvPhizWhxqAjPWzSMuq") }, - { XHDR("ylusmdyvqtf", "iEOaJMYGpPD") }, - { XHDR("bfxwbzxsocpaug", "ZDptHaAFAXilolEhWVzWBYUfgQnTexTZINvyBKcFvR") }, - { XHDR("lc", "XAAarpDfeiDYabXAtrFXZdYIjacYVE") }, - { XHDR("hmckmtiyfsayygqdmpx", "sSRqlKtiSyX") }, - { XHDR("dpuxhfofjdhkcofz", "TQiwQKlNIJGCpJiaChDptOpLlCDDMAUFxpORLtLUDvclDLWiiGWRdrtecYV") }, - { XHDR("abmfimojotdkyha", "WepeLTlAcpCqmFbWjUpdJqyNWbKnnxjLcKmspaH") }, - { XHDR("et", "LYYrRIYRQkDURWlraGGgJaQoxQMTdFRbFfcpZvoIOUTXmb") }, - { XHDR("hzdqhrekcvuptrgec", "DsboVxDRJxfutYFQbVRIefqBjUWtNfWLwSAWAvXhDsVy") }, - { XHDR("wfbrahug", "ysfXGOAP") }, - { XHDR("iaxdvxfxjwzmzoeduwx", "QfsNXJugsPHEQJIRWbCwVyIhxzSBsQNvTXnVlwJjZCatoCkTs") }, - { XHDR("hkwtocawolmi", "CCJAoInvGM") }, - { XHDR("zbyzznvcscsrew", "LIlfuyZRUZOiInBnACQvVbYgRbE") }, - { XHDR("uzzfaahmovmjxjmnjlou", "cPOfYhFymRPKOMKcCyJAJQCYeSkjGDSWEEJc") }, - { XHDR("ibaarh", "WwcUCGNYixFTSdyTjUGxEZHYLTITyKkxnhXomJKarMsDsDdHTnWbCOlPnimoxGVWLudJS") }, - { XHDR("spahhiniejbboomm", "cVAUGuoJPppeuIGmackkbTfLwLAZIdjxOkDBl") }, - { XHDR("rqteo", "afiqBopREPrpFudLJYeG") }, - { XHDR("lgzelvp", "DLKjHFeorSsYTG") }, - { XHDR("xplzullqkurxsijzuwi", "tQHXnFJplNImjyGeoJWBoKn") }, - { XHDR("vranopme", "XcoQZCFVRNunbcaunTjHvGcszkjbHUaMnDoQOiTHt") }, - { XHDR("lihdwaduphctwztvq", "gRbswhXSNnIoSvPVqskkuCuwgYnwezUtZsTOAzT") }, - { XHDR("gnempsavdrjokfimaa", "mGWbrGXYyCTpVtEMyuKtINSJItchrXwoeuHpDKxarvsLXJpl") }, - { XHDR("mgovzjlafwzgfjb", "oJgaDgBIjkalGtzqbpCzmqJCcvggTRPhgxYOFptnZPcHt") }, - { XHDR("kggtcjnnncy", "pk") }, - { XHDR("sfblzjvzxrw", "EKtRzd") }, - { XHDR("vxwfglhzxpoxvsz", "veNWZaFsfMCLKQqxFPEFnIOFahQWEFvqBwoYLdMOcJOkFcEFZXFhATx") }, - { XHDR("yvwrtybcprtoubikqt", "UMweEzsUqFfatVZwCCehGsnlKxvtsNqzVF") }, - { XHDR("xwlquepnwaxaib", "tHbRfWSSSZTAUilhBQuwOpOViSiheZCbFLZIdAWBTnreMjzWmusKAAJ") }, - { XHDR("viakwvrldxtzxp", "sKClryhAYSjImpQwbTLsEHXElTBytuTpc") }, - { XHDR("gqeusve", "tETieMDTjnWYmfilZLbCHPVBnsKlglOLHfeFpNimrg") }, - { XHDR("tomklautfmwl", "VXKfikrPjCMTJgHLItLjQLZZWNbSHpWWmImxEuSoyrEHbCRaA") }, - { XHDR("jiuno", "FFqy") }, - { XHDR("aedmxhbkvxws", "dhdJgikyvCjYGOKdZV") }, - { XHDR("wdgnkgmvqxgidozu", "iIslXwBBRpGefQhWOYWlZrusVpkUSdXlrPOHnrkkJhZrHcFhL") }, - { XHDR("kvkdb", "ynF") }, - { XHDR("kca", "mOKFUHOqeOLoQGwIZReQVhChhfhozRTxTczaaqsGtaudLyeUQwCDoPSkONpjQBJSXyMwjeokbAuNnRd") }, - { XHDR("efmldxx", "cPTWlxtdSKTpyMxOyKzgGiJjcYLEObNampWYXKKrPlYkOwJBNybcNfwSWaSXqEr") }, - { XHDR("ndilrcqbsuymjt", "nBwytBOGGyeWOuCtxtCUSdht") }, - { XHDR("rqrxovq", "KQVtPaytrnVjkvWbqDVdZ") }, - { XHDR("b", "jiooRWpGwZHKugvvFzcgjaNAIHIDCfNIjPCbONyySKHQOzVyVoTSAYe") }, - { XHDR("nhkbfngid", "BLVEaFgKxjDKEMKXlbHbaTxoGZpppwAMYNhdrWhtGHeAHUAQLnIfddsZBAHHhPm") }, - { XHDR("orizefclivwn", "BzWZJOjNWsWahMQFwm") }, - { XHDR("lruny", "WvUTBcqqjPFRzfdUBttXjEaSk") }, - { XHDR("oa", "S") }, - { XHDR("jfzslutbeegzebtgrq", "lAdmHLHRSNfiKocrljOnoARvR") }, - { XHDR("tbktjavrzfyjcxkriw", "PWOqTAxNteZNQWvnsWipEQcWrNqWlitilQvtWmXMJVxfqqvJXvFutSEheoZBY") }, - { XHDR("deajfvvapnack", "akmiQtjKDCkktelzFlpdixGNCkmgfuTSZqGtFvX") }, - { XHDR("uegdsxwmcv", "SjdQvosIgAWLcIffEbTqmyScnpAFeMFteuIhhfbDMakKiUDkhokXOvgdiFjBEswqVKGc") }, - { XHDR("fwkkudc", "fqEScKpxwMBaBEhZxluEGCJQkRPHCDZFRvUwEvvVQIQnZM") }, - { XHDR("wtbbwvnegr", "YZPFpjfqyKcxnZhavPhZoGQhVsaKzSapORtWoBrGXkVuhcymqnUOFEuYXzxLmNOJjGINVAZYypYiSx") }, - { XHDR("dzzltklfuhwgnk", "HIVHbYiy") }, - { XHDR("wmgxvwtybdimysft", "TPhTYhRwazQNOnLxVOKGvrGbpUYBUHOhJqhpBZMklqaNdXIiDJSka") }, - { XHDR("gsdhpnbrfxuqzwwmtcy", "wcjlEqcTmRArhLwJFjyOmceyCckDsGyYK") }, - { XHDR("vwifsrpkv", "DxxTYLRdXfAsmWTohIsxBRWpQQkSjYHQ") }, - { XHDR("psqyiluyrcsmsuyc", "GMSUPwhEJnDtkxKoJntVrHSzhorfKpZFYgxzZsGDBKGp") }, - { XHDR("vynox", "QAziSoUNdnDVXChjRTmLwhXglNGyavSTRHUfftREwJlezSbKiZ") }, - { XHDR("tpbzewyj", "HjAfPNZQilZlkPeUGYMfdTsprYcxkZhsgzjQBtC") }, - { XHDR("thpdtvqxqknitoesynaf", "bRwIzUKtUkhniUhLRZWGJadbVKSLyzEYErnLdntyaEFlDyZzNwdKWtAKwVHogEAYmuvfh") }, - { XHDR("tawhdkexhnlrjwcjai", "HbtrlxrdiZzbGFJpwpBr") }, - { XHDR("gngwafebm", "WgRjacujMLAJIireJjmYgsDSOAiOkvANEHsDsSGdYGnmQACeTcwDJ") }, - { XHDR("yrlosrqaengdmtgb", "XpWPVgUcvRUWcwbQ") }, - { XHDR("vlsdoplktcfqpdm", "mwRxsrKclJnoRHFlYnUUrIFXObAQjnBMUpqmkU") }, - { XHDR("nkawveswhl", "zexRJDIlhBrBXTOTVkwuGnNxfVckzSPtwhSYLwoRrUoRQEqTGGFVvWupmagPLHoshzdXAyFAvin") }, - { XHDR("cstq", "nfPXNnDTmdchrgijznycCipKHjtqi") }, - { XHDR("zpjmdgn", "GBrAjJVZTY") }, - { XHDR("dvjn", "YzmwnfT") }, - { XHDR("seykyucwhganhga", "vCQNvioVCaoryCdQcdOsCMdUPIPssNjvtvggomKMY") }, - { XHDR("ipycxzbpnogqor", "KqsQZxNamAgqHFrXvjLWTwkseehVuxLJwbuxhnjaVgtQFVIaiMxHbDghUkzUiRnjGzmKdLCHlEVuoAX") }, - { XHDR("kkjzhsarpjlzav", "XTCOSKwqMbPhkosBUPdwVnDgApTadZBKzRCalPvxPZodx") }, - { XHDR("pbdsicjaay", "GrpKAoWDVPOmqPieOFyzPHilqTkUBBOMhcqLyFUKlj") }, - { XHDR("juatydksgmqgtfrduzwk", "FWRPMZJSfhCMCUR") }, - { XHDR("gfhqtniixjeioni", "lMWfMvlOcGCkySlJrmlO") }, - { XHDR("hifbvkwod", "VkTUmTsKDOwxApEJKtGJKNENsGLU") }, - { XHDR("fgmxksywu", "hUkKuUfHncTfINpKVaVeVreHgedEhsMbPqnFvwdkfLgalfdDskLiyZunPiixrGFeKAHibgV") }, - { XHDR("woq", "jwJMmJXqLQlwklvSYHsphoACC") }, - { XHDR("t", "HJOKNZWSZmpcqD") }, - { XHDR("fnxntbt", "AiJbkKNEGPvDmVEykrOGiaaZVXraRtKqbcZTxiVrin") }, - { XHDR("jrsgbjzxzhw", "rogbRnarTJTDIkpttiRoRpfxqUdVfcRUXsFlxpeilWX") }, - { XHDR("zqbeztptsjzcmi", "SeFidDGujhnoDVGwnOV") }, - { XHDR("cavhmirgzahqco", "XcjNHYOkZhCaLCjkQClGlwjDheiALrTBEIkPlfNbbC") }, - { XHDR("flremzfumwinjyotckf", "gwNYcYIgvLOKmiwNnSPol") }, - { XHDR("yavfdklepgqzuunuvb", "tjBTxjqGKyjADcMyVbqlNnMKCATmVz") }, - { XHDR("zdnfrqgkvbyqbrhiya", "tsaaGaZTwPyruIbSJImHFrguQKzRBaLrycLgGZPGbdWTRbuXDnaTJUyu") }, - { XHDR("fwlsmeqjxrvkg", "hfqLUZgJhdFEEkZkdsfiKDKXzHMEXyStlASldVeEHAZYXuESJKTcXxaEfdupPYl") }, - { XHDR("sjdqdaxpobsgif", "SbmnPKwwGRmbfKyZHrrvOULbemCZEmrWWrhIrWkqZnVHOHzJHThmxXDnJVPvQlOZVGqhnFTMuasfVO") }, - { XHDR("eul", "AFKMyCyfMZGzFefYGRZaBzlEtUQsvmIFoeaeLVxAeAmACmXIxBryWAlUCwvFOtVesmJDM") }, - { XHDR("zoltsnnibc", "qryySHtsdWqdYLAtZophhUuXzNkqcUBdvPDhiRGyhkLoJsvwwswyAlmKTfKhxMlFQkOXgMysVC") }, - { XHDR("ggnixujktktgfayorc", "zQuHCSdaQUZYLLurcz") }, - { XHDR("xpiln", "OLrkcwjJNHqeQiIFrTDtzC") }, - { XHDR("iciqxrdbrkqyqmpuyweo", "DpRTweWFhPfnZgfmTIoXayyjAzhxtJKgnM") }, - { XHDR("edcud", "EmOeGhhzBpCVdaLJEkIWOQQQrCulOYKssfYAISigcuuOkzlhOdneZTdtHLXrpeuzstNgOGp") }, - { XHDR("fsiylwsjegtkjvnu", "ctbMkpqXcpKdsOQHyFToNWvGbGYDZCcg") }, - { XHDR("xye", "AChgDRTlPmYBcaJCQxpU") }, - { XHDR("yfkmzjh", "GzXLLAXmkpbpoDwDiOPFzlCjPwB") }, - { XHDR("ju", "LEhoQDmUFSDHwQBGeNBgSLbUsOWqjtOqKCdMETSHSdoVWuLFBDofUuCanQVgBXVpHstsFSQSCnHCZ") }, - { XHDR("wiourltnvm", "tzoXFEyGUdJnPSwrouTpTVKGqVuazAcLxlAlFMgLTPxZxljPTO") }, - { XHDR("frlym", "leweCBKvTvHsPZsBOdFDKbJCmjWSimArFVWgvnYFkXKcR") }, - { XHDR("fzztiwhgdmnljruaock", "rPFxxiTYJZTMgyJldXCJttFiYBweFbJmbADpvSz") }, - { XHDR("bvqprazahmszcfcc", "HeLsPFsPqccJOMPLzkFmDgERlvJwt") }, - { XHDR("tmwpokzatwkcvk", "LkQncQVvnvtdSWnNHLgCSqCEldF") }, - { XHDR("rkbvluvercu", "rfro") }, - { XHDR("irib", "ZKQjssDoniKgKWhsVYWCstEcSKXHEbQkaWapmHVXGZbXUvtongmyirHNedXfkBrxoDAJcaRODgWEwG") }, - { XHDR("nmrwxhgp", "cYrgaCpNwyYphPUqtmlGYPxHbljlahRAEcSvmNlBXhwVVEkIpQYXy") }, - { XHDR("rbgphrgpjxkaat", "dzrisBGLyiSEmANuydRamhuyuZoFlGwdILKfvmZimksTxZz") }, - { XHDR("dpgsalwvpvn", "AMhZnWPhVQOEtuphrvpeQJhVDhkVEtuMeRGrOHVwpEkkhjPOVwDzbAhAdFXuRCdDI") }, - { XHDR("aaulyd", "FdiofftiuQtxuPKLonxgJjeeojEUXwOjxixWxNMxtDvHLzNaCBFpFGmWSlbMnDyTN") }, - { XHDR("fcdvytujqxyvlp", "xuTyKmkzsacNLXJOGuvTEwzrLYOIFWIsvnLlfaVPxckHaHZZMe") }, - { XHDR("bskeocn", "TXdSxOYJUbHMJOvSAtKGufSEEdkWaxYRphJdabIuJHqyHvDoOIRlZaYxazOpCjnoXBuEBQ") }, - { XHDR("iwydmjdg", "FwdsdfFOfDgxDPiAHkFuKJuXwdAAr") }, - { XHDR("qfr", "hcArOaQsVHvvRZSMRLkdWPneWrKqJBaRSjXtbhBAtpZkuPBOpOmFIiqfLTErnyHNagaMUzbxbaxOLVfS") }, - { XHDR("ftgxs", "TpjogjSqjumlApudZPePzSwJhKtMxWZpQUIQqOtfXmNqGRPpuJWSiNVnvRDgrRRExgBLjLgYOKuWPIO") }, - { XHDR("gbvbjbeqmkhrlqkqnj", "USAhpQcyMiIPmYeIQUTBpUXiyGpFzKkkVqvqPRGFhpVkYhHtRuRuwBikPtP") }, - { XHDR("s", "XhDEtALACZmhGhxhtfORcssiXjcBsDLkWROHvcIbursjnSISwaeUgHaHDdaLxOlTQ") }, - { XHDR("fxovfsnwmhuzsb", "haRzVGGDiyjwhyjjuPIIKCkAvcprNWqZzSNBHLEQrKXiXxFGGEjoaeaCXYVUsYABj") }, - { XHDR("hecnkxw", "cOenDJgWITMOvHYJYzSnK") }, - { XHDR("uksfuphjppy", "AmOs") }, - { XHDR("rdwbzmbt", "KqGAunZmTrQmkQlKqynQrtCKzPmyhaNNjujJexhLexUsKuDcZbdhAWjSIbiiIFGxdmzSyQIf") }, - { XHDR("ljpoecogstfqxbvrjru", "RGkQPoaTSgbyvokgoWsubBTGZlrUFeWBwmjLPbPxrWQIJNfhfhlmSPcbCSsnH") }, - { XHDR("qk", "oboBcuwUcoNPhULCuBwMmWfeHDGNgyvccdxIspfmNALtLonZG") }, - { XHDR("dveqwyzxqkspcrlru", "BeaKXNUoMcVlamiwkqPZljYlEtFcIeBv") }, - { XHDR("ljgcgtb", "OyzQtkxotigpJeAkWKvBQhipxUxlEP") }, - { XHDR("xxsujryhntuzxpnvxig", "TZuiopWhaXuQisJwQgTGvCpquBWdvLTdptJsPnSHomh") }, - { XHDR("xgkabri", "MaDOmJNWdWhMSNGFmZOZMS") }, - { XHDR("zjqozghllcsngcdlsiu", "ixBmrhlMIAktUtxwXMIkSKsJyObkWnKUeGvkfhGXgAnyKljVWeaoCBOYXsCoghVC") }, - { XHDR("vqdbjxetr", "VxHjvwldnSbCnduyeKQIL") }, - { XHDR("zuhz", "CqskjkzGtIDnjtGFFFOjIphWyhoIqFjZQdrVCFcZte") }, - { XHDR("cawbsfeex", "TtzOQmlSaXkyOkvRIeDEfCoaQunAjfnPLsR") }, - { XHDR("ytaaqpjorrnebjyvj", "bLLQEuxOBXCVLBnySfpAHNlmLmnFotykxxjlMItsuKGPTtgRbuzCoWcLbchxFIOVTGwkoLyrrjxWzXDT") }, - { XHDR("mhbnuppy", "MTokzKOUdFXyqosoCYvwrqmXgQkyyeFbZAa") }, - { XHDR("nvlygz", "IchCCmWhdhwffyAZZRYGmjaKUOTakCjmKQveLklEvxoUobuAEbAxDPBnrDkjfYifwGE") }, - { XHDR("qifzqyrjxkvymmfj", "axLpBfNcDZHEcQYUodmPPXgBmkPdUy") }, - { XHDR("uudmgfm", "UvgkWBLSVqJRnutQdxNCZZvPpxktjxGYwPSoqtixTOhSYZtGdRv") }, - { XHDR("j", "PjCoANVSgHafRdswCTdTvAYZAfnQmotUrbudjzzaUHFDmYQxUYSnhaGTlCnNGyUpFGRQoYi") }, - { XHDR("oznv", "BacsOqLfTkPprrplRMoRfCJaXLOuNdkjjEBNXkLbNeTpWMQBYSjkavOaAgAJc") }, - { XHDR("sxwfqgcb", "sfcsKAoUyCRluVsxUnFmDATCBfZgCnTrHFjxUd") }, - { XHDR("jtmeeqzdvxfqva", "VNwCJFtWVR") }, - { XHDR("bjrjulpwlhdkcm", "WjdHcJoKvjLQiKWNwzjPIrwFymktSXMICBJYdiAasq") }, - { XHDR("sffyzykkvqfnqfeblhnn", "yPulezzbZHyvNayAzfaX") }, - { XHDR("dwcqwrfanyllwk", "ZebjAxCkvJUdfhCsryB") }, - { XHDR("oebwfcvsmgirrpzyx", "WiqTJGNwSaBCNxnpdVwGIhckeDHhwGInDcCPNRlPCAkFGhrIAkKhJStLrNQkQfn") }, - { XHDR("atnnfgenfi", "Y") }, - { XHDR("zkfbrjaz", "quMRGmwkPAMaFyWGDigzTpmEvCHDSWLzxlwtdXhNDUlRdfVIGTK") }, - { XHDR("qahmhrtilatwr", "yAcUYPMvIvoaFnOiIFVFWfSJxvohMxgBx") }, - { XHDR("fgjapagohnyae", "TvebthsSFKdcWWAudjhHoSWXQzEqubCTxgmjvQwLxNSvxCNYVtbQXoKg") }, - { XHDR("nyz", "CxddMrxyugmVCWpLIfZlfhAerKrAjuOEfWFoqFjQIvoVldKwSVwbQhZXDxSSkqw") }, - { XHDR("iaa", "Bgs") }, - { XHDR("eageowxbvtixnuzqxtte", "vhGWixouevjyEQjbDNJbKeHAbNjdmrzJOoIVcbQyXiNp") }, - { XHDR("aunoafztvxh", "GmVvVRlmPNhsUeejKpZrgwpPCv") }, - { XHDR("r", "wAhnpj") }, - { XHDR("eystwznzlibzyjslcnaj", "Y") }, - { XHDR("gsiw", "rEYuhZTNljFOOlhRBHBjTwASegUHknVaxAeumpgBBkaaBgnvwagBuvuoTOnDQacDWESZkKDNNd") }, - { XHDR("zfltwhcpuqxszp", "SEIVwowajyCNhrGaDC") }, - { XHDR("ahaxtzin", "QeIhWLwKqYBYiRrVLREkLDuCfMGjFESvfloBOUAbsXSATMXvPxsNruVoZyalwG") }, - { XHDR("dvtnnvdjxoxqh", "pynJxTGfNzPXpxwKNDVYvTrKMppRNDaGgHMHqEhzxaUiWVwBDjtCYAhXWcUEeF") }, - { XHDR("qct", "vwuHZVuYdaUNDODPIUyeLnERmZHXkRVrDJUHrieweElBiQkSLNiTbLQEYEbUMBYA") }, - { XHDR("icplydhvfb", "zExwGpXTfAzVRvDBiLlWivXXpfRewdZkTVdC") }, - { XHDR("jxtxczvumdy", "CwRrZvDMeqvaKVhkVABkTsCKDsRPyGjJIM") }, - { XHDR("wh", "DcLuuNRzyvgpVClfBUrBEnjNqfKWfHzUHCauPXIrLhDbLUjnyyiPltPIzEq") }, - { XHDR("ryyexrdwwqqfagdosy", "OKFJnjNwzvIPbRgHrtHLcOpRflUOTAWZJFujWopUdlCjlQge") }, - { XHDR("mzyucbfnahw", "SOyTRmOtGdloyVmvfCceOrfErVVHeSVtxeAdOGPUJBhRJILNDXxWBxpopMmDQgHlemXYSXWkCH") }, - { XHDR("sxyilshlkuponnvh", "qouryERGjOCEphZjmj") }, - { XHDR("pnnbgeuowejmehbtfvc", "aXlPIwNrotkwoS") }, - { XHDR("mfuhcjldyltqbd", "BEPmFSFCEwgjEZCidEEWC") }, - { XHDR("jcfagioqyievbnzvw", "tTCpbGUVfbYcnMTEUy") }, - { XHDR("txejuui", "FQLFJdNALQuqdzOXSpxRxmeqviEHqNpHq") }, - { XHDR("iuhluxdb", "YEFauTAXXnpAfcJVzVMCtykIKDnyhxPbqRiqxPrkLytAplvilAhWIQHIUIMSLLyDummDFl") }, - { XHDR("lreacwpafqszaddvnf", "nBqNmNnllLZpPjqlisvlcMnmLzbXjNfkxedOLLFukYylBGyMwjfGFYbgzyIzKVSSNQvNDeubqTSs") }, - { XHDR("kmipbwovunkxaacpcpaq", "YYrqRJxQNyMnOkGjgDpRJGuWELvaGBAUZrsm") }, - { XHDR("zzsavrn", "dfuiojgpvRSXOXbb") }, - { XHDR("mzznkkspgjsfvmo", "ZGKrDlHqfqUXyqEGaURwIprVqRKorZUZwKadQBkYKEaWWrDAqab") }, - { XHDR("fsjajdudcspzkoddenq", "yvodGdDTwQAIWMCgJOEIWjhgXZIAZbIcz") }, - { XHDR("ppelsxdzvlljxsmwbqvl", "TEAG") }, - { XHDR("dxxyec", "AHYdXRZafYjQ") }, - { XHDR("cabgl", "WzXQkJyCuXtJPiXOOLENxZkcWtqSDEmmBtVuxVoMsOMhYliWFSDKMukryZGJYnspkJvQUiFDG") }, - { XHDR("cozrleffhwwrcp", "KDamErBiah") }, - { XHDR("zpy", "fEpJmcPbgFboKblm") }, - { XHDR("spmdawizyik", "sIYxlDizrGOibTFdfNzmxiYheGQijFoqmqjYuKqUkGJQkBoXXCOfCQHZCBStXlwgixdGcmkqaRe") }, - { XHDR("zkk", "lgdxedYhyeZwFiyBlyGJEmejbFieODVnrGudkgNKhu") }, - { XHDR("dlheuctawqvizwjjwv", "mqnn") }, - { XHDR("rrbqyguhktffatl", "aPxkDhEkOckPgMgeUZcBiJorGQkwptZImTMFXCWpKyLiYFBOhNEf") }, - { XHDR("vt", "zjQldnprFcbrCHvfLXOXYryGTb") }, - { XHDR("yjx", "uESJJNpCSoBFXKlbaicPFMHFrDenappVLYXonCsHghiKdiIkMwGTYzBDcAPZKacCYzFCpxUrTcEVDAzJ") }, - { XHDR("rwlloiqvp", "duttKLmieQXgkJCxHBtlbjhDxAAOSvgbHerUTMoTMjyRfHXGvrk") }, - { XHDR("apb", "iTtZkUTBkQqobkyLpxoszfNAZtWhOrbcsaOHDMQzBWtEhqTWSEipVbCgMYmRsdwvqrfb") }, - { XHDR("lcsmzjdybkayuzezsy", "CWyxnTJSaJpipqFqpfikWRWnOEJxqHeKWouSPjykqAeR") }, - { XHDR("pjuwbhbxuua", "ImncXRuUIIUDzXhnJLqIeQvKDYaoLYxsURY") }, - { XHDR("gmx", "RLvwosDpKSKUAqsSgfwYButLiiqcPTSJUTJJpRIKGaYvzLjzHnwlIFDvUXbbrDZKHFKwskxT") }, - { XHDR("osusxi", "qwsMPhO") }, - { XHDR("drxxvtfixereojz", "qxTLszzayHfqWkEbUnrXhROjtpfulhgnxjoGZkvGBvjwRidJPTmUDZc") }, - { XHDR("kkinhijgraelovfr", "ujNSEfdKrGfXvhQzCDcHAXAskQPPNZhbNvQUrOcJCIUaTcGoNxbzaJcRTiLNJfDeTatFhuQrVjMWwwk") }, - { XHDR("nphfciymojdzxjddjipi", "KQbBOWavftZdzGofIocZJCywFjxEYjjiFjkSPX") }, - { XHDR("ezdpzvcvxzkvddiorwkv", "htfFlnjWpwfacUHLDvbgmcSgIuRhMhygCaNrpLivUKtjDbqmTztUqhHuZcHtEx") }, - { XHDR("jkwpyjbrjbogugwzbih", "gwcvejgtGUdRGJugHfsoPUoDPNOWkMqVkEvNkDhGkRJFT") }, - { XHDR("jbjmhykyun", "LakFhREtjaEVURkmUvpovRyqSYxURKiRucpHTlXyIOKPQNWweFzifEssmGOGiSURu") }, - { XHDR("qekwpuxxeuuoaodarj", "iulJBAmoL") }, - { XHDR("wnspnt", "ByFpuWFQUkvQjdjlMEkPXkWcjOuQGJQLCNzxZYJjUdMgWd") }, - { XHDR("kvflzvypaaw", "mgcxpdZqgtKxEbIhfnrx") }, - { XHDR("w", "lSqmkxqRALgFZhBzYCeeFL") }, - { XHDR("sfjhntwuldhuizswz", "EZHRCGXlRVrVXrNlHeOppLZfJxWXVyKLdVhVtUVzALysoXhakxtoaBLNHPvPZ") }, - { XHDR("gqqe", "sNfMuYsrnIXoIxZDzyCsONHcOYATQtUbvdHeShzUQCudHV") }, - { XHDR("ngzpnb", "mYsbBBJnOquSVVRXIOAeYdDeHGkQcG") }, - { XHDR("dftnaiugxananzhi", "mtgrbBKVFORXBYegidBSiDKOQGcDLZcYtUAfFIcLItgYNDNWmKnntHTiMrgOuZNVfoZbKZ") }, - { XHDR("yhyuinj", "jEKDIrDTjd") }, - { XHDR("efgqab", "SzhAXInyRcsdAxgILroPGZFaeWbTF") }, - { XHDR("mtpbpduc", "ZUxGtzExJJxgYiWnTchjsXqNjVI") }, - { XHDR("pxraicdielrkhed", "vgwmtJQgoAleLYTgRUFWJstIqcEoQGKn") }, - { XHDR("yugmqqzlszvhnavm", "rFzPZVgfXLNMIVkqLzMmCCgMSepSFOETDcWMHWSarsOiFzTYWBmOEoLIXgIGHKMFfH") }, - { XHDR("kjq", "QKDJwDk") }, - { XHDR("slxc", "tAomxfuBMNmUUrkdujOuZjtDDWJAZKFJULUGhcTiQm") }, - { XHDR("skusyjdnabwzlypikqn", "WCljEJOPiyoTlokFl") }, - { XHDR("vknrjtkfrawj", "dgZtuUekOwgiCWchqCsFAbdTYojfMjkTbMgGqZWNHOLEnIFJfSLYnpHZFBOFAj") }, - { XHDR("lfzglvnqdog", "LByOLmoABOhDmuDKogFmRIfZkUBNjdinlOwbMcymNiXWhfCoscgaramTCqcfEHoSTPt") }, - { XHDR("vbdmsnnvxpuhuwmlmghe", "PJwspiZAKtcVUPDGVDTjNeTNIJvDeEdJFPQWPGnqESFM") }, - { XHDR("ypmgyzcntr", "DGHJCaowTcdJOcEvHqdejqVRvspdfKbxARZNnwZYreuBBfTXeNvB") }, - { XHDR("r", "nqlCqmaThcEaOKLCelpFTJlkwrKcIVoZSremSbPPacYe") }, - { XHDR("dycmxvmeapaothqymrt", "BKsbwxsYXEYzeKDqcCutFnGZDCBTSGlXnFAakbfgAofbAIAJMvhcWiRwdyhrmBylmGRYINnFP") }, - { XHDR("feyncdkrfcxfsxdr", "wyAeklOuQCGaRKfQrXTGCe") }, - { XHDR("yjnacieojbz", "BVusTStaYCAfqeYuTlkrlq") }, - { XHDR("rzue", "wnRNFIAuJkXrumhISjfUykLOdfEzmXhyTWDlQmSlxdnbDtyRIBHlOqaEbSjkvDrjOMTRsLJCTLx") }, - { XHDR("jlezoe", "btPpreudMmIoamrvqivJAYtwhUcbbeFBTzqwArEhnOgOFmYVWyRQnKPtvMyUCKuVEVh") }, - { XHDR("o", "NApOyPedldFDIrFVOSXP") }, - { XHDR("sesocznnxvdtggo", "VUlrtmZAai") }, - { XHDR("xomgtqvtmhptqfovz", "gfHDbuouGPYzxKFYzEMmqS") }, - { XHDR("wlgntnalvtqkqoy", "SJAsiHXfdzqZjUZgAWjYyZYsZvFQpYIemraKRjMWEGSIFvVRzPVxmtnXy") }, - { XHDR("rfcknphcdaf", "TuoGICCZdifXuatbPpcWQDwpAJPGPRjiXmgNxUAVZIgMHjGRAMhzlw") }, - { XHDR("b", "jAlcGtFiIiCRdQRDlgxoDpppGHFCwhbXJlcsfYbkkVFOreDNEBrBqCaJjupRoDambYvSmJDOqNviQsaX") }, - { XHDR("exhz", "wvqKqwWQIDvAPbIQnoVWultjMFDfpvNwnpBPQrTAoOEOSlvLUgywTROCLKjJpeVWxdUzczaFnoyIUZP") }, - { XHDR("ckimzydmt", "yqeBSazzeLUyEcXiSUHlaHopQShStgQmFwCNkczxsmfjMmEasbNkdOYKopPgqqxkz") }, - { XHDR("dvczunjxxrpgbt", "IvqsqNCdqocGJVOkSJINvEEjVNDgnMUzTRMCwKxHdfIrxhOZaTcJkqSJIFOna") }, - { XHDR("nfmmimzapkhfwyvlzl", "FxjTPgHudLomWCwwJguoVuibQnPaBDDKVNOshsjyePrcMnHrHdKRSNNSJDkzLfwelAo") }, - { XHDR("uvlvztayiupgjhqpfb", "PwUxbjHpCOEnYkjYgcECguZJSGeqAPZYDYPHMkxrYHNsgHNrQtu") }, - { XHDR("dvsanxnugcptgsz", "fbxnKECdReSCcTvasxgaeETXTnCOSwhSQsKbEAUKmoeCkpRGkrUJbIXzbAHrYxdoZqctKKgCahRZJCI") }, - { XHDR("lyldqlkofhca", "RKKITEocKOrZbHMieCJOFHmMyEqeRhVFIApFEvvfbMUaqvOBWsFtEsPxaixDjVqRIDsHN") }, - { XHDR("xq", "fZBNeNeOpBYWfTVyWrIxqejUeredlncECIq") }, - { XHDR("cle", "XXVEAlSkQohCBSNZHePtjpLMorcwNudvQeEuXLpiNPLCKSXZBapnFylnBMaSlcMIBpPvWlkRDigd") }, - { XHDR("drrzyeztfhjadtsbjd", "ZrZDNEBZHUauSBEpLtyPvfcWOxPhlQsgWCRcEYfDttApcbvHuHdoWmdgYPYVEpjlsGEtrl") }, - { XHDR("cph", "OeSKNjZjzAHiGZRgJWdSlzMTf") }, - { XHDR("rzrkqvimh", "bAQccpjREPIwPpTPOLWrejOJExZeGJuSxQb") }, - { XHDR("cvdkmqmih", "ABfOZABctaUGsHFqFPRrnqjahhZMYVPRbpviDJCAAaZwqibngJdYQdXMZ") }, - { XHDR("h", "EqGrh") }, - { XHDR("knbanpiu", "AFaGkMxtXmLTGSULyAbdyySKmcFQkPaXSmGtpuoSFyIKghtkZJvTrecNNwLGFAzqNOLESmhV") }, - { XHDR("shlnvldkhnqvkstncr", "hsxpOYFNfYTRUWhASJQBtuMnotfANbojaZqnlUObHv") }, - { XHDR("elghoj", "zzSCGwsQTsFTwAXJbuPJJKVyMdXehrWUlxbQAKp") }, - { XHDR("gxlgbux", "TaKEPlysaTDuYcznoliXzGJhUlAWGYFOSKXGSgkarr") }, - { XHDR("ugebbbknosunpsojq", "mjjPFbOrLqfMSnUDoTcpkCj") }, - { XHDR("hubktp", "YhLjbvWxeysZOdMcsITcTIGsOJkZBqcysxXmSIxIsjXmvPESwBwwlAoEZrgayyMn") }, - { XHDR("ofabjgrfcqsxjbl", "JhMiqYvhjRxDcFYElYiZdiQexWGxoyLIVotaSS") }, - { XHDR("edqhnxyaxlao", "ZWwbgPNFPbhZjJWFfFcxuifCeFNAERjBNnGUQUqNmR") }, - { XHDR("wpmivcwmrqyo", "jmcwyQ") }, - { XHDR("osrg", "kvDskMgXabdNBlaoEhQaafZLeBzJTNbLGWXXjHjRNoztDcjOlHX") }, - { XHDR("qawmouvbjweocsix", "vlsMNYKbCsRRCYafuQJTBVufasv") }, - { XHDR("iwjryoggejinxhwcurdu", "UqIZzqentwzekaeXesKNVxtXOZLVFkQzmheqKin") }, - { XHDR("icksk", "hwVSDuikYJvYXvimDRHoplUdLJpkVPggUmbevXSGcjiSqKt") }, - { XHDR("dfzcgixi", "yLVbnNrSwCBwfutkExnpghXmgQQltsLgTn") }, - { XHDR("id", "myjzjdjbwkuGwBLjldAsfHRxfNBAIZSFpk") }, - { XHDR("qckmygsqzpptclcupuft", "RdmFpwzwWgYMywqJTCBuDwPMhTfDIxknjyBoZEUHVliuZHsOaERJwpaPKMhYRIJbVZibKQRf") }, - { XHDR("cpmzmg", "eQOti") }, - { XHDR("ejvq", "LHmtFQOrlpcdZnqlanIBvlyBonXsqEJviVEBqtiNpLDaRQIvJghUehhsHIUCo") }, - { XHDR("vlazbwfebnsfabfsw", "WXLIMZUuapVNKyTnmmQdXehRvCMGxHnGTrVnf") }, - { XHDR("gtixmopslhkvtycsxob", "YQJnOiQGLpnMgLDmicDbOiZQGsrSGfStIbhTVaZzNzyoapWayejaPnQvbSSpXCYrjTYbqtZtvonVLR") }, - { XHDR("jl", "MZiGWvISPwoIdktnJmFMNUIOhGGbjTeEJrkXAdFHWjjbcjILJdDigReqyxxVgbLbQ") }, - { XHDR("ygzydybdn", "vGljIcFelqxAeurlmmUEMyzw") }, - { XHDR("onuwoikuaqa", "tgHczAMaFyOYPCoYvjeuOosJoMKfbWSrqgrkuvlSiCYiJNnzNxZvabiFkVTnAdIhEPiMolBzcNjfOmvZ") }, - { XHDR("rkkcanpxjaxkcqkk", "kangIoOKzmlOmzfBFCbMs") }, - { XHDR("cjeml", "uUAfGQpSEzhOiTxQMJmdsMsLGseVHPLImNEQivADoBNBBlDZCIjkoTLITYKGKPOa") }, - { XHDR("tfezvboibuiethdts", "wQVDOHuizfHuBKOfqtQsuOzbCnYEyTwYL") }, - { XHDR("bc", "dUQqcgOTkHxrLYbikjUbAJTcaLwPuwoYnpxLdpQEOciZELdHhjTWluZAQluedVudYDYLwl") }, - { XHDR("kllgxzjohtgdgm", "PgxPCLsJevvVsdNXgSH") }, - { XHDR("dvyfxgfdzkwpdp", "fsgGNNXALHIZvHPIPZbNLPYAJAEoLGWxwyMGYnQ") }, - { XHDR("kthl", "nCdtHKTiEmoOramBbGQPWggpltegaRxBXiEVgLsOkbJMvlVWPTnOIyxPhzvSoHiWYIDNe") }, - { XHDR("txyeyfpulji", "HPQtHEMIiIg") }, - { XHDR("lrbsygvedactu", "asZsnnGcoVpDlKwArwFoVcOdihzhRSoqquPYTouSekegahnKzlXMUTmztGCUgAkNtBjysksKb") }, - { XHDR("a", "dioseIxa") }, - { XHDR("cyihjisdeennzqvubjhg", "CsRqjJQbcOEKkEILYRbQQkOgKIRNeJqBHNPNVWie") }, - { XHDR("djunsfsktvcgtvsks", "PvR") }, - { XHDR("mzdozwwjghucmpbitjq", "ZDYqmghlovYBbuQIJTukZglSvxIaeRSq") }, - { XHDR("ocf", "bFdPvZxBaxOqlQhyvOBxpblBUwCjMDGWhgvchzIppfSGihnIjyaAcDwngBa") }, - { XHDR("sybtxwtvpvwm", "jsVMdFxCrX") }, - { XHDR("oamypnpabbdsxygrf", "hUaZJqjTslpXDZGPaMkBtQkTtvoFLKThmzokIOhrmKWhirMMlhLAoC") }, - { XHDR("pcdlkziwxuwqxskny", "yUKDamomMyJuExLaPkuSwvdoewqZtDiEEsWkFzzCKdxlgRbLidPZywZXgq") }, - { XHDR("iwsfkdxv", "dJYLaFwjQXqJCXdSISWpmtIxxVViaPJuPpyADgZt") }, - { XHDR("pyr", "zfwkTSxqkwcrpaeJMFEWLwlvvpCumJUjnQBGMwjFgYNbVoSzEpynqqpQpbIW") }, - { XHDR("fywbck", "mXhQKRwfCGstLFXQRLmQoIBWBPsXALyPYIUGxgF") }, - { XHDR("ooglgfuqppv", "MtawwbujaoaReIfqSwR") }, - { XHDR("bktqx", "zOeBzoAHuUfBBcsnjFNmKbuTglZHlGzCOIGhreWpqXiEuhQlROqai") }, - { XHDR("h", "yOPTxkZAEziEXvlsQTTapkxRGrQpIBeUDNwTVinwGVuYNmCrTeWUOSdmcDAwBRiZvOqWrntEP") }, - { XHDR("kta", "mrmpweSzzIQALfrMRbrjWKzDJRUUeCKnIyNYTTtyDkXdyTEgoaLuJXhCxkgysnsVv") }, - { XHDR("jdkzrb", "WVrJHNsyTlekbocatoglScadsMOdkxzmiNYcgctGyNUUZzjehLCNp") }, - { XHDR("iyvklsuqdcowwefksw", "TVKvruGXSXsQTGWY") }, - { XHDR("zqtlosw", "pgqnrbLUGeRffKoMfBRpCiBvhfvzm") }, - { XHDR("cpuz", "PrOnBMvdFPZiYQtopzKvblsTqvAyJWbOOt") }, - { XHDR("nrrofdpfdglfsts", "RGsJInTMhOhimbbXHbeMpya") }, - { XHDR("bqtouzjzsrfzti", "GgTAagpZBSWHLAERICeCYSPlolILLDAfGntseNVZujbfRaCFSJFCbChFZFlZJATgDFdDdBGJptmQKuF") }, - { XHDR("zvjyz", "RTByLGmRlCLctkpUgoZAxZTHGHHZejBqqEgmWCFoYSHQSTasfbFwxTMVnoVHMRZAlPzbN") }, - { XHDR("jrpogstui", "SBnrqGYlUDk") }, - { XHDR("kqlsyuszwhbs", "FbFyfNUmXLWCObyaqScBRMdNlwvZTfsIeXUFLoKCUzNHxaJAlMIDBEGovczIPy") }, - { XHDR("g", "UhBHVAxsObuaInueUQQHFSpDIZvkQXaqaCj") }, - { XHDR("uumckjisbtnrxfp", "CgLhfBmDPwESQOmPATkXngbrZBTOVSXQSotDeQTWmyKzYBXqluaGVMyFWJZMhUwWuoDLdsfdce") }, - { XHDR("wwfdjhvqhyssedtp", "lxvlvReIabgwsamgrEmOPMYWChzxOyUZfaZXcHkgmgCdyQkktugRrgWisGamMWrJABaWeJpFdf") }, - { XHDR("awldigtc", "PsvVWbMafhZLiEbaiZDVwSOVQgHOvOyn") }, - { XHDR("aazztowuisbomupd", "cvBKQLgaBFRwLlIlGpVdUacrxrdJXLUQUPnROdzHBJ") }, - { XHDR("lpefoxpszjkkkhirvwv", "YfwOFIGbDOIETSoZRNqMdN") }, - { XHDR("zefakknp", "hrtRgnQjLFJzIEiXRIOnsldParYfBdrqwdPgRoU") }, - { XHDR("dwr", "IbdPrirWgiZUukxUtmfjzejGtdhCuLDSAdWNkZkieaotfVpRUhVQmpZNnEFTB") }, - { XHDR("jguetdouprockgbge", "vOFDeHXFaIgoz") }, - { XHDR("cjjvvonckceukwmxrep", "DpmAQaiNSQXXdlrwyAhBOoRwKfczAfzsRuzpbGyWj") }, - { XHDR("jktdhloy", "QBYjnYZOF") }, - { XHDR("phocdryvniva", "qzSfAgKtxy") }, - { XHDR("cdwwlmnrregcj", "ZqdRkYJmHsyGGmLMipJvdhVmroUIAPSvmYVXyAMqdbMFAIP") }, - { XHDR("xtlbrvxtgqkguemoek", "FHmHImRsBuiqlBPciGSyYhnDoLCvLKLTJj") }, - { XHDR("fvuxiotflc", "OYlYShLvgUEBgNZHvQUJhpjQdyKduc") }, - { XHDR("uaqkvfgtta", "WVUXdFBuMiGyHgvlxNVppsLeBhCMkhOcdJqLAdDGHWFGVbjIFpkyiuCLuhlcg") }, - { XHDR("xrjv", "cnVFlhJKpLbIiRkpdbaxxx") }, - { XHDR("thzszcfv", "bwJRWoedadpBrhXdVmZdkQxRQeSBPJYMQnBefWB") }, - { XHDR("irmvsdtvchveprpwz", "ugbIYkuxaBVAuAdOILrXSmIHOplM") }, - { XHDR("iceicxoxlncan", "BzhpYJhhevdCiLOUYtLBIKBjw") }, - { XHDR("laamswdfepshjszmdx", "uOJordeBfSCZWkLfCSfzWziANRORmXHDuHbFYJHmaAyntCLRPrZRhjVwFFwKhtRkg") }, - { XHDR("n", "hrkGfxwLQkfvrGQAPFLGLxHuKXNMSzuqeJhMffFzHXdPrMfQzauhlkrilhftfFkDqfpDo") }, - { XHDR("smwi", "XOieCMAdWwtKlErwiIryIVyAOMrOzHgALAYAEjJiAtFPkSVNpaBpPBsmUpdMzfZBLcwErFXInVd") }, - { XHDR("bxlobmxbuzks", "gnQhopwPrsEEXUjTirzsGkwkT") }, - { XHDR("jamxztsstlsnxzo", "Mf") }, - { XHDR("p", "BwfRnvNRgqzAAVwzzKwyYYBEaFDKNdR") }, - { XHDR("xbrfpqsyjxy", "KXiTmHNYBcQPFLhnxs") }, - { XHDR("mdvgigebtlctoqnsedtc", "hwXdWDsRmrZUTuResBOVojNkxdYxCqSmwAFySGuVIVbXoqTrNBdTwlmj") }, - { XHDR("niy", "tAobEWELaHAdues") }, - { XHDR("dqfyxvvczj", "uyibdZAmIjsxGzZzetxGyceNlDV") }, - { XHDR("tkyckzmrhrwny", "IWqCLSpqnvVMhBAJPjniiWhNVTeVcmmGpscTVcTrKOqKylqRxRskGHDZxYkLEGnibLdfLbxrB") }, - { XHDR("gnfbdh", "Tmox") }, - { XHDR("ythvitfahle", "dPMzZwSsDMyqo") }, - { XHDR("yhwit", "NeXPwccvsCGwsNzSWWDtgcmzb") }, - { XHDR("amnjogc", "JOIXDEGzFWPHbpotVXZpgCTSyYKbgDQgoYIhpLnvbDIMBJXhGfRYrayybLDNHhHqmBhWyoAmCcjpb") }, - { XHDR("swdwiwwrry", "FVrXpv") }, - { XHDR("ypwquifwmsmmceeov", "tqakSJOWU") }, - { XHDR("xebovlnsrhya", "VREzXPSqTeWONwjWrTEVohuGKBDuamIwRHtBCiMrAVljBbTweILLUJOEgfe") }, - { XHDR("jbkqmwqt", "avYCzzsjQboGOECqqJacixKEQxbdrbxxLbEylJIMhAvjHiRGdcDeoFvJKtpxclBECVGWWFGXKeOGgLu") }, - { XHDR("nxvq", "wgrMpbiSWqGahPUIpnFVmSiKffOOGAqoyyjnMsmNZOBaXSYqaDZIsLGiKUKjiLvGsXqfKBwZpUgvauD") }, - { XHDR("lndgg", "tTMXimjgWdSuklbzZGRrzwAApEytiOdaOE") }, - { XHDR("yzoisamgn", "jrOUXZYfuhvgbtWygspxOqXiUipgTXUuPVPnKeJhrUPKMoG") }, - { XHDR("sqxatgfonkstuwkdv", "kvaneyaJnGYdOttwGqaBZzBqhFFYOhrOGZnHvQOVCLbURHLpFXDRwTlLyBPdqrHaLRGMAKPKIpFPvte") }, - { XHDR("aidadbjpefcwxusurz", "mSxbnUCFZqCNBw") }, - { XHDR("uiwfrmsqzadkcrbfqgbp", "MRGrscpcwdOKBholFvKByAlaDQOmLZWcoclmAi") }, - { XHDR("mtl", "FitbQYxBfHsvvjSfLcoRXEaDQl") }, - { XHDR("oonpw", "zzuXfUzMtXNpkvdoRBAEMxasjDeyTqUclzEFMqPnjYFbdfvpcKmIthdFoImaORqZOooHC") }, - { XHDR("ed", "mvkSdmFduHujdatkrfJeWqJTCHFkPnuqaWNXeQtwsbERTUeAzfYdFuHjDpOwrhpLPHFzbDeO") }, - { XHDR("fjxgjh", "NSMyWxLbFMIrEQbJvOUtFHVjtNMSIFFiGIOTdZwjwEUCLRTHPkCrhHsJBFygjiYiCkSvDzrEvvpPnQjH") }, - { XHDR("wl", "eYngXgVow") }, - { XHDR("vyhpfvpvjkvipjlnd", "hFTDkmWvuAsfSnlynWbxsQGKWGywJEjsHXZwFBVMgIeYfTTGNzdMYkpJgXtsgSXpFTYmGxEAnwW") }, - { XHDR("yd", "XIrFFfmRlZKHXHgPVmrxgmfEhRDwgIslZSkAoTLkc") }, - { XHDR("xakwffxbroac", "aCtQFqGOLhLu") }, - { XHDR("jpmvm", "qaYLcEUHq") }, - { XHDR("dtvygrpmrqs", "JbByKRxMlPZAMpQdrdPucHdHCMelbDhsxBaXuXetXrTdjDRygDuNGCmwoLJ") }, - { XHDR("fzlimvzxnvs", "TbWsFQvDPWeZThMRFlhfsDYfAEDxqBfYfybpVhm") }, - { XHDR("tecsanvwlhjlr", "TYLZFiROeSOmCxSnOlsWLpYVEnRXhgyiJsYxJSARwhmXBqQzdDdRON") }, - { XHDR("zo", "fJZjRSrSqBHCCHPprtDCpWxMtPWpFOMvBWyqdMKns") }, - { XHDR("zioktcmr", "aTGcwTpQpZTrVbRQyLdSTDlWAC") }, - { XHDR("yxzxgucxuopcbwdh", "KAZdyYsDCnDZXa") }, - { XHDR("exiriffhitzuekbxj", "dExxHzGNJoNAdTxMIXxV") }, - { XHDR("onw", "QaPlASsTSQghTpDSmsFxGbotmCiEbZRDJ") }, - { XHDR("bbehzrgulujcx", "ItIcHhIwKnyCCqJ") }, - { XHDR("eqhdjzq", "CxPLogCAqadbiTzlCPbjHAMyAxmdtyBywPtQT") }, - { XHDR("dkwtgclmnuvhq", "WRYTHRrBKdfRexuFoohMjyjjUqxeDVMAnaLEeHkwEhD") }, - { XHDR("pszyhxjej", "uYILccFDeFzzveosyhijahotZZgmnvMDbgoSgK") }, - { XHDR("hhvrqisj", "kOZuaCPLyriSRlyszwODYieuTdvgBYnOjWVqaoX") }, - { XHDR("tnfajh", "TshASnhhWslloeKKaMZrcnYoGHAhMLYySCOOFRPTpSvlxuEJVfpNzJc") }, - { XHDR("wlclc", "jXCjXCJztUuJcgvIkQGgRAsywpnvGJYCvlgkUlUMeFSuQYSExrr") }, - { XHDR("rpdlrftqychxq", "vHwsmQUnIWgIVkHPvhhjyQCaUaGVvpJvtSxroCvdAhxPwYkyBjSPDdsocjcYxSFEggHrDsMT") }, - { XHDR("wpvumztzregwnt", "bKnPuXATxxfXloAcYoWLuaxKwNDkkAzgQTlWU") }, - { XHDR("cthyjnhlnwsshrr", "ZgowiBHLKxftYOpeKCzyRdPGRyc") }, - { XHDR("idmspenxlqfdtjgrgp", "tbecuCPlzPYwCWLiiUhylQOmqiqxstSmTYFVewreQhCxBLNsWEJIblFEaDEMjuONnnpqJb") }, - { XHDR("qygjessxrvrb", "TfGy") }, - { XHDR("wozejggb", "WzMsYEGpDboYPMiTdMfjRSmyllfjtRmxlX") }, - { XHDR("r", "JSddbAjQwOpGdwYEYDnEiAmeYRSKRSVWkOyDnNudFX") }, - { XHDR("hvvdbopqyjgpsnpzpwom", "WGeqlSTJDNAptNqExqnjICuStLqwaOwkiuryWBOutPkn") }, - { XHDR("fnkajvk", "hYhGfzxGlIccGFNoxYcKwENmXakXRP") }, - { XHDR("ercpl", "WbyfXztVPtbRJtQ") }, - { XHDR("vkfqmap", "RfChNQpUHWhIRClNCiArEUciYI") }, - { XHDR("elrrslfvlqgfv", "lngaaZgOjatEXitmyAkNNlRgbnzvrAVxppjLAmAeMRKiQvmYprGrAbFdVmAoUTvErtBNKizpvjCpgwf") }, - { XHDR("kkyziuhtoamasgkno", "NMtxVWOwMZoIGD") }, - { XHDR("jcy", "aHxrrIVlPgRevxjDjHSkzOydXAbKlyLloDGWyTCJuWtRUAKRUMOjxDRvtdOMhrZXcRzGdnxz") }, - { XHDR("zpe", "JToLsaMrlBrqkqPuMILBYgDFYfvMQHoyABZMYZAhDcSSxgUAWOOmdVThtNOZsSSNjGbtyjOUFNutpkSN") }, - { XHDR("bbhtlggonbzbarapwz", "vGijSLUtyvToO") }, - { XHDR("hljji", "FyfWSbpZOMMCmSwAvJyFKnVBYZOtgbbKHbRvCsxh") }, - { XHDR("xwjfplgkvbsigl", "vqbvfRoNJefkozReijpvZPr") }, - { XHDR("jamcdbn", "FoYpsAHwsxnLGWeRqCcNxmd") }, - { XHDR("pyddxcvaawxlvkb", "nnZGsuWEklrqPMWvFNzAVODSXyTYphYVmsIreBlEJFgbPUDe") }, - { XHDR("qpeslvc", "JyvkVUfZpNGXemTqrYlJkZNxPTQSEcPbWjMsGYWBqcojyciEpCsWYaOLPXNCJHBkCuy") }, - { XHDR("tdxckb", "ACpKphZGPBBQNRCbDKhJmxzSXHSBlisMIjXtoivSjiJioTcPdCuzFwd") }, - { XHDR("kvdfsb", "ZHPzJoRnAisQlGGJDSvQQoiZKVOvJmgUGbPbWeKXOfTkhHKFhTdynlRjOVKAMlWZThSdsW") }, - { XHDR("npdmjchfmwcsqclq", "fjMNvWmQzeiUyjnRXb") }, - { XHDR("oupvyfsvhzjweounovsu", "mZILpdjVFxNslOcPVpYIpbIRYDGdb") }, - { XHDR("bilzjssrjziqvhas", "gexRjhqm") }, - { XHDR("bbpvxtmeybkblux", "AOnKEzhKIaGgpRbchYKRApHpMWnxJM") }, - { XHDR("lcozsjii", "sZhIEmeoKZeEWYATuiEkiNedkbAWXhXJDkyUfarmCLomxqzzdgYFeyihrPxqTpVYx") }, - { XHDR("hvpvxv", "UySHfOVXVJBufSBXoeDUHcTVKaUIcExBmSKVwlqP") }, - { XHDR("mpdefrblhjmhn", "pjDtTpym") }, - { XHDR("haamocqzufc", "hglidj") }, - { XHDR("lllq", "fSboNRHyTBVQGhbZBIKvCdAmxoYxwyRPdSvNHwJAwmZW") }, - { XHDR("udctbgd", "eDjGEZfipiFVFhkMIgJcGRqqjFWJqUXmmpXAtWOcDqpAGlhGoRqoPjDNORxjUDSqjdpCcnwcOMoeYqn") }, - { XHDR("pcjkj", "HDZaVWVKGzx") }, - { XHDR("ukfscxzozfdgk", "n") }, - { XHDR("nsnbdouzxhpjq", "ERgBXtfDHTBMinSkZANNEahyBTcOAzUVuDydJtHaUbr") }, - { XHDR("exrhsyjjffjtzhw", "SaWxbzgxaB") }, - { XHDR("cridzhkcyohm", "REwXDqwdBwNgichvXJHEnNrkMIxQphrXqMiWzTCMBWhRZntLBzAQgecGpxQKyL") }, - { XHDR("wfzflwc", "bnZnatKvnBvzmTcZ") }, - { XHDR("abwu", "PntseLCKwXEeEqpStJRGLJsFoF") }, - { XHDR("smyxnbhfbsbdoyfvq", "s") }, - { XHDR("ndyoinuq", "tzgLeEzxoDgZbudzBhoeZSgGKSkTJPdKCMBDfZaDAmMejMlgthZlh") }, - { XHDR("qwfyjjdevuwhsgctg", "KKCPFyTMorPvdEaLDoghwJKhZtmbOQlCAcGvMhovEHszMNWtmySQbrbYUhCvCSDgGAFMES") }, - { XHDR("b", "cpxprSbXKoLvOiHApdxoikSgrEKNZtBIAYfqTsIUYxycwtltbLRBVNi") }, - { XHDR("lalh", "TODBJOKAKlPphFCQUyR") }, - { XHDR("bbvfgnzswgpxkhxt", "MxxOumatNdxnhFsmHTbrNkMHYkcQgdGESWbZ") }, - { XHDR("argemzlmn", "IvZrjInnQJklkMVkcMZrFNAuCKUnbrBjjRJbaifcSzaAAXrNzkLy") }, - { XHDR("bz", "oOGYJfIMYwwreZhsUBKtOObJeqalcWQivoVVqRxGKNcbMruaZBsfeyLkhHFBXoeEvsaOwfsP") }, - { XHDR("pxwwxofkojlestq", "chlEpVvPJGeMEvjZXShYHRtDPXhORvEmTKHkQVlNmparOesSNAbExbdbyYQIqtBBzhEAShzjI") }, - { XHDR("agvhmfz", "kZ") }, - { XHDR("zeuffocrmpqdwpxlqsbm", "dlXMyKwZmIuvasPtdrVOBcjGPRWOAfsaCfIIUfRbbIWRpjCsJoVvGUgWrciJnJuKbh") }, - { XHDR("wtappxoatqouknopbymj", "VsjxVTlJvUmWijFBGouqclgdoQTYJXEAesbCqdg") }, - { XHDR("wwxdydkxtadl", "RpcTHiqtNvFXd") }, - { XHDR("yxnhqqkoczjlsro", "KvZykETfBrACSnjGbDkBREivStHppjpnPBqUkZIWLmALyRMKVxNxsoXbPIYPPrsBMdLTOv") }, - { XHDR("mnfsarszxqbzsmn", "niqnYGjGDsEtYsGWTzC") }, - { XHDR("wsrqpcybnk", "okcFTqCwItdOrwHXuuDUtTzOxc") }, - { XHDR("mqbdtkmxrtrh", "docFihuSgyxErrMzCwFdsVfIkDfjtQILnWYhbAdblfPKFQTw") }, - { XHDR("lxeszxdmbmtwfg", "IHKBaXQLZNAwPJDUlNbRgZocpJCvTkwyxSACSAtPmlNPllPlHYkBcqq") }, - { XHDR("lggnfbtiouopneyezuf", "PQCNWkswHyCNtIEhGWCIVxNxVabIepmeqvdFsUsVAvneHndtXWVPAMsYFTn") }, - { XHDR("inv", "gFbPwkLcVjcXLeWegzlUkSwSAWXrdfLSoVfjccafygSUYnsLcciHjU") }, - { XHDR("dyvnx", "adKgGIFffIKjexjFrbcEhyVQHHbHhVmCwUckVHdXQBvkSmZPrj") }, - { XHDR("giykhscdonqd", "hHiOzKdAuLkYtvfeWuoYYUfqAZBRjskyiqOCHDKnJluanoyhybpSXeyaqITYXzHkBAaZGApShGnlc") }, - { XHDR("awoqu", "fquLtSwetxoiAvfbviH") }, - { XHDR("xprqonblur", "xSpQWjvawoBQHaBvhgsGXJtaMDYbonEUfmfpnCYUgaoSCFGeSyxLLzbB") }, - { XHDR("jwtzuwxqizb", "ZzkIYOwZAifQaAPpGREVStkveaedqssmrmLVZviqrYZcwaEJlqxZbqbJOWxmo") }, - { XHDR("hbqwfysjzsgptgyivax", "gHDErmkzVMFEImMNDxyEMIqMSgQIkwWEBUMARuTQXvVfkKCaAPoxAualQO") }, - { XHDR("uaqowaul", "HaqMWNXCOBBhcMcSyZlupcRUULhkAtMSOfhzyyQOfOUsz") }, - { XHDR("ykravbbejyqehvmapecz", "qmMkvN") }, - { XHDR("hnzvkgcsryucexcj", "TejvUirkELoQxNQUYlZlvgcfjYbNtEjwmlvRZJWy") }, - { XHDR("uccfuutclzinq", "tSvIZmDNOWHVRrFpmkrQKaIralNytakQJdohageAmQlsufbfczqQXF") }, - { XHDR("styzfasyxuxdyyzh", "rFsKdiKnFVyJxWkdKwbHrgKlxEnUJVsn") }, - { XHDR("jtl", "jkZSCjLyAcENZdsf") }, - { XHDR("rzwitjcvgdevwoazh", "McLKBNHhGRcXpRPEvoUDt") }, - { XHDR("xecilebqouwggjukuets", "ignKTINkeVwkNQeIqgHkwkocbDSrnXMKZkXiFVdVYfRuHcPNLaTorjOgfZ") }, - { XHDR("otqbafypdnwkp", "mRMzEOvpNVGuhopqmvkudWCGwbJyIolxKJWsZyYLuUwgqFLZeJQsEqzDCaDbMYOYJ") }, - { XHDR("gwmuzmjqtotiisfx", "wyvUqINeTUgCmCRYNwITtfOqdieNEmrwRzReEFJwMXrmMycOCcFjFGnF") }, - { XHDR("mculgdtqoms", "dKYGOirYBCwSgLHxCqqWspnYNwNP") }, - { XHDR("fbrzomnilght", "ENZvJymWlEjyLAtVDBwZSfLffrejWtgeGpbs") }, - { XHDR("rbv", "SaBMFPyDYScan") }, - { XHDR("rurjrvpvsfthxru", "PPketBSqhwgWKGmkbTnfqUzXYWGzoRWOEPamEFinfXYXawfaBuYJzQSMMmLjonyiRbiXuFjLvQdZb") }, - { XHDR("goghs", "sNNxFzULo") }, - { XHDR("cggl", "WxSGkZjPOuwcFCCBTziDmXjQnLtXXnggDcGSPngcIWAQHBdgwrSLLZrDxvHMpCkKFm") }, - { XHDR("izq", "ubGwqCYyyNEQIDLehmQjOtbaAPrwnVVGOHWXHWkGxPvyJQOEGXDUpi") }, - { XHDR("doqrnawyhekebswlse", "JqJtOKneUtfSNNDUD") }, - { XHDR("ykafybni", "VDUtEVnQ") }, - { XHDR("dxm", "goIvBpHrHGwYMdCsOGryatzkssnobSYViGXyLrVhrRQbTdnV") }, - { XHDR("izmwaskxzidcuwcrpd", "MXWvFhyQrBEmAjyjlXPkUDbBCqHEsRQCkybJWisIbIXdPiHuKNeWNfIoirgCaYSxOAw") }, - { XHDR("wmrha", "AvFpcWmBSGyDQngXGACKYxeXnHILhIRdHQQzVxlCTlbuPehASxasXp") }, - { XHDR("evoknlf", "IhSefYtAdogCjYITjZOrBDPJVWBSjmqCnFUKfy") }, - { XHDR("oxwzysp", "VyebfI") }, - { XHDR("o", "hhxENbVgPHdUTOGvhlFMagGhFEwimtHMNKOKiVcMOmsjdfsprCXDcDVenoFqwezguixiMk") }, - { XHDR("kwillgrrprzfiaylzldy", "M") }, - { XHDR("stohibnumk", "fJMxUPVIVGEWZimekOXS") }, - { XHDR("mojfycuzdmod", "YHzXVHJmbrJhmphIeyxNb") }, - { XHDR("puaozuqmiycfipugzoap", "LXGbkeAkYIOUVTEMVyMr") }, - { XHDR("km", "jCnnjCcWuRmRKoiBxxDnlgBbCfeICTksSQXVlmoPEhzPWsqLtaxOMIis") }, - { XHDR("dnidcqviqvfjivwctxuk", "WrXFxxOGQfWWzoVFZZlmNZKqXl") }, - { XHDR("isqqjnj", "KmmwGrocCXhrKkshlaNVoJdIdBEuZEEWDUagxHudiSQUvx") }, - { XHDR("ppvdmrmchtvksxj", "kuaMUDKxAaJLfNYqoagpsSOpSdZNyfjlRGMhmfB") }, - { XHDR("dj", "jWP") }, - { XHDR("shpuruzs", "wzbYUedqsLuzrPMODRRnRKMDLgzII") }, - { XHDR("rrvshnapjgeqhricjxof", "ccX") }, - { XHDR("eaoiozjmrlhtrgbtuird", "IJnWqbzKgTzFBkbLlBZA") }, - { XHDR("pdwzgzzshwzts", "QgHDEI") }, - { XHDR("rvarliownx", "wlMiGBHurZAqkaCTrAloszC") }, - { XHDR("mxpgwanptmwqm", "f") }, - { XHDR("yzzwejvftbn", "mjYirgOGoApigKZMV") }, - { XHDR("vtjeiumvy", "sJMCvNyUImbEsSIQANMGElUBwrZUcwiQZTCnJqOLhEAvdAIPFQqofxTbJqpQcwoGTcaKxVOSgledm") }, - { XHDR("lchobrsehhglygyzvy", "xLLgNLiJbwlqrFcUIjVRBg") }, - { XHDR("uidzizlbyhmvfeuaztxa", "zqtYUJDZqJgsKJKuLmwpmrgCoAihQluLmEJjsqnjEnoRtMIStoMDGIZMniOCaBfYMuU") }, - { XHDR("ektsvbnsbqecbkof", "agxCoIVwCvBQrxJlIdXTilzMSlwRWkcWdmSBiWVs") }, - { XHDR("msolx", "gzKJxMaSChKfKDjdWVsgXtnoKTxufDpHZyhkNJak") }, - { XHDR("csteyh", "ZSvXhlbHjwbQMXU") }, - { XHDR("ymbbiunr", "LugHoTZXuhXoDSNrtv") }, - { XHDR("hpkvffzbhyr", "izd") }, - { XHDR("snmjhkfpd", "kBwfFhyiiVYilsdQCoafIn") }, - { XHDR("azhm", "snWvEsFiaUYmQpVnrpKWYXshEsC") }, - { XHDR("sch", "hExkHxDSvjavPHvYwDWoANHYRqPtsWfj") }, - { XHDR("rrznzkoynwz", "FRMIurdfOEw") }, - { XHDR("sqljpn", "WsQZRSPlxgpEdFwGnStFNeLqXoiyQUPqrGveuKQFhANatBAGqlPOO") }, - { XHDR("yqmoxyxo", "eQVepeexRsmzSienupsRmseeweeCsvlcCfmFNCePAxDoXVXZfHjJcQ") }, - { XHDR("gfskcjgzezuwh", "slFhvOyrMziCn") }, - { XHDR("y", "oghv") }, - { XHDR("w", "SqfOWRBUqFyQpdYmnfsKDejVkauewOndlcDzVaPNMmgXfXOJcHCnFynpO") }, - { XHDR("rq", "ZvmKpKwnofkGjbxFrReYzBDD") }, - { XHDR("pwoxetlduantxohi", "iQnFYvNtdaeIQTJLcaBhPyWmBvmRoopPbPShIxKvTxoKmRJTgxkOJxYAQBWdcjRKMa") }, - { XHDR("olwjwiuid", "foDI") }, - { XHDR("wtkntnehvq", "r") }, - { XHDR("nwostnmimxook", "HEhdzhXUu") }, - { XHDR("okxndjzdzjbeonzhvgek", "sDwHxpFjJJWEwrjjBeDQtYCUjejhAriVXBNrzsTOYKyQcYtaLTxzIV") }, - { XHDR("zkeqmxjtkkqr", "gxRcJdyBTafpUIsbMkxmtXyCGJsnkbzsMbEvGyXkOhowoWrWhPgmq") }, - { XHDR("nquq", "injtmhbvUrYVrtjQXEQtnlqQalLtHnbkfbSgPVnEtkrvkK") }, - { XHDR("cwhbuptx", "vpLRtypWiwGv") }, - { XHDR("xwecamoy", "UpSVIVYhWIhyWUKMXZbYonNNEqgpmLOFHNsqEuuUUfDOKqLWnzWSFWGG") }, - { XHDR("esm", "YVEeMcHqZipzGmdbxyknZFqKjJSwXKGCAhapApzxUUtVEXqOOVkA") }, - { XHDR("xpjitgcnsseprr", "VrSazruVgnkUsMxHEahBGPcFeMajdEfwWkXSMOrxETqWXqzfCGCGD") }, - { XHDR("vqzyyazgsla", "owGKFwNpDxuhjwooGpFwhZJDOpGIfwsOajaJoZZrtPmGaSkSmTEFydnYqsFWYJjQKkAEB") }, - { XHDR("uskqpqcnwzdmwoaq", "MqUOGARYktMQdGRnJYoMwCWCaiKreXSpPYqiSFjzlMLcijBTkCTAdHTadVWKzKmFJRYpdYzeSbox") }, - { XHDR("zrgpqjqjqx", "GQwWescZMrruIRMxWPmipALFSQWsmPPrlCcQBgWZMAJaOkREGsEAlqCaFvdSZryswmzwXaCuV") }, - { XHDR("uscnzboeerupckyoztq", "WxoLCfgvJJmNYkYhDNdwzBavbvjHhxPcJGfyjUuqgHcksguIUjzepcYdHaWNIINgkxvdgyNdSRc") }, - { XHDR("uhbtkhhwiihpstlmcv", "AQdikFJWUbpCwWZLFynx") }, - { XHDR("iwldmgq", "wxWehcbpvjuSpekKxOjzkgcEzNSbyNffZ") }, - { XHDR("ok", "nfIadyMQZRxPGZlpbItvDYtqzlaYGfbsyEjfzDmNkUVqduDvRnhZFILkcDiZfzVLfT") }, - { XHDR("ehytjxajfgqbamvl", "PyZcvwQyviMuGIYPH") }, - { XHDR("f", "iLjVMCY") }, - { XHDR("zpzwwnjegek", "VVgpiAHpByxoqrehofDaPEHdzxSxRAOORGBMFmNFhxDN") }, - { XHDR("otgpxd", "n") }, - { XHDR("ukmxvchywtmudj", "ahKtNYriWMVrXaGkJQvljlE") }, - { XHDR("nivclfqjwec", "tuUEGxWBUBBiZwVfQnJTAKoOrkjYHUuoGzvvzUC") }, - { XHDR("whcervekdbvrxpf", "ELWwiEM") }, - { XHDR("jqrtwkpbbsyompsbjr", "ERgjtUDGukrtAYLAxkIsiMWeYFUPNwTMZxKXXUYpFE") }, - { XHDR("qlipkmnjxzlbqangikd", "n") }, - { XHDR("ujmzpamn", "pvUdTdDwKAkUrbFNDsaHsnbKVUbhCOUWOMLohSGoWER") }, - { XHDR("qkvkfdmdikah", "gmNEmnGycnVSCmRZxEhIcPhwQ") }, - { XHDR("hztrtjdthtvq", "MkoQEcmrFOHs") }, - { XHDR("jloxsquffnqut", "rIbWvzQWTvjKMJBodBvAmCpUIIViHMDxiFzsmWEWGkUfCNcGpfEZVNDWDriMETcpfWUHAaMHBNjRGuV") }, - { XHDR("nevookygltm", "ormSsXKeJjXlGxClAaMGlAEKYwyoovDceDFhkknvOffCSwWnaFMmAJAlJKLX") }, - { XHDR("qqzfngluqgr", "BMyIFnIiftLctJlzdymdbowxlkCilwX") }, - { XHDR("tealdhzsab", "bKW") }, - { XHDR("pheeegrxsmbpultkfpt", "vVCfFRPQyLxHfUFZCb") }, - { XHDR("azsa", "TvIBmbybBGSsgjJIAjoZGcuSPcJIVuTgyGoavfNALWKAYetPSaFGCiNubRnUUbdpTXkaSEprinmm") }, - { XHDR("ggpbbllatszqsadgevo", "clGgfkzbrsiIezFwuKkZwMwohZA") }, - { XHDR("jxoanignvmaogn", "OmNYExzwWxyWpjebLIatBXjobFWZhODPLexPJgWPJnmcASrGZmYFYpjksVdctTwrvgXxAJnKDx") }, - { XHDR("uqlqjclzkuvflpkspcw", "iKfqpWo") }, - { XHDR("qcyep", "yARiATyEPpJIFxmUEBVPeeUuJWGkXlDUcMXr") }, - { XHDR("ovqvpciyjpdzhvbq", "stNEpFdJFDtvHWnLOMTixkNfqxThTLifOnQFFzvIUzGdzHENVT") }, - { XHDR("l", "KgeqcbbrnW") }, - { XHDR("eymtetjt", "yPacYzXiawvcycMQkwPbEQbfHGDdgWGQAvihhrhjwMaywPHgtsWgJHJvCPWEuXA") }, - { XHDR("hjtfmodcdxlhfm", "KdIqcxKubGAOIcNFsWKbdZxGEtc") }, - { XHDR("kecquswsncavmnbyxx", "OqEQImUyzjLkQPQVOWnfHayzUIcvHKXAdSYtkgXnJUeztPQSxpuHAroLOJBEUhguxPNIqRRnyY") }, - { XHDR("viu", "ZynkVZpskppfeTFZjVx") }, - { XHDR("opuwm", "IShlOGEPXlsdzSiGiUQZjhWmYqOHAViIuoNThKOYsFKZEmzEFfoTaQPXH") }, - { XHDR("tltofnzzrxlemaecxvwx", "imlSkxed") }, - { XHDR("jycbr", "OBZFELAZQEdWBysOBqvBucJMZKjhnHmaJHbfGgBdHnVcwfAVBedEeWbuus") }, - { XHDR("wqdglyldaqtdiufvodpw", "OpvktGangwoWFRzkbnINcXMIGXbMlYDlKpZcwzcppfeFuVDK") }, - { XHDR("zoszikdqoymypcq", "ywXGGHOuAYlOMrvAhWqZVdLMmGWTlQuhDPRyGDrjtiZKwkHbrueOXBSSsdSNFALjdFpC") }, - { XHDR("c", "uXKUGKXTAHEYgaITGidjAMge") }, - { XHDR("mqaxa", "RmKZIUUJKYDRiLWPzG") }, - { XHDR("zzpetjbkcar", "UZPiqC") }, - { XHDR("rzec", "yfRmcNDCnVdKw") }, - { XHDR("ilajz", "WUgHYIylpaWSoaKHssihxeEZyzKDnaijadqcgxmfvTmZdXfoZQ") }, - { XHDR("rgpgaedjnhzbc", "rjAvBpAkMwrSnUXlqEPqDmXcPaiSDGvvhanpKMfwtqkesFnPpPjJuSCYpWxRlyMvlPm") }, - { XHDR("w", "CVFBqDYTKrGmEreEvtbKIx") }, - { XHDR("mzqjscips", "IdBysSiJJFNUcGqTtxIqMVkBaqTFOpdBiLyQvDfxgIxhacIqXBqGvioNSoHWaJ") }, - { XHDR("mpfogfrtynvxdcnl", "PLHpvn") }, - { XHDR("wctimrqgq", "BAxJCOrnsqPoeNarereYbaHKMKTtYHhtjUSruwtCqhWYXrLA") }, - { XHDR("ssekqwfmscvhhpcgyx", "WNpTsYiraYsZwurmtgfAgryo") }, - { XHDR("zpedpvazqbowhwlpn", "YvqwxCRrFjtBMJiHYzsfvFXwLSYOLXacvkJhIFrkpglEUc") }, - { XHDR("ojjgfrsvkzbvxbbaz", "aqjrIEvAOjZIBGEcWwiXaMIOyWiIGljuTJeEZDjuvYXYHZrIxTVKLK") }, - { XHDR("fjmfskxoqhdnvncnr", "VewrgUEqJRtlQHhtAdG") }, - { XHDR("dkj", "gpeiNqJecgPNePbJXlxXYAexkJxolxfQuBXgLNjBSnhAImJQIPCekaXPwThEbpSGfkhxZRpwdVMR") }, - { XHDR("xzcxnocom", "cjxpURVqaQGWGDoYadcCuoZhmADEIyFR") }, - { XHDR("xwbicquesyqm", "gyVlTMdrks") }, - { XHDR("fargderi", "OdfikyYQJaLEoJeakFmiXjRFbbbsttkgbjavIJrijEOCmLsadtevqndjHuD") }, - { XHDR("gqqbhgps", "wVRuXnAeEbAhJBRxzsypZjwcbUmChwCAxqSJOMRFgynlSVLDcrnViQSuXRAafMqcapQdzCYAbI") }, - { XHDR("mchawkssqnlzbcb", "dZqDXLRwrfzYabEqTzdDqQjNpXHeWSBGmKLSlUSIgGCIsoOzNQnA") }, - { XHDR("bknvzwxtx", "QCRwbNtQOMoZFPTGAfofnJcFSKGwDstNegbJidZjMWaoRuAMeZUkVugAjrG") }, - { XHDR("ungrpgjegv", "IJzSxpttpVlUmoRzWXrWkQhtaIkAahMOsJMLucr") }, - { XHDR("v", "JRYiMwqFZLhnMzbEOjnsaBG") }, - { XHDR("zapvqirqlogisx", "FcYotadrwxdfWmfVybqjdpRHKPHJUWSsGlQSihyzFbbwrhVsmEERKqOMAfpSyIKsRgT") }, - { XHDR("igmjvfwykefqxxieqoxo", "KcOOmAqbcnyvtcrqxzOuyxMvnMVJzWIByXPZbiRIkJWuQkhVDKLxKvlGlValmfPOxkizw") }, - { XHDR("xcfe", "zXcVjmAVieZWowiblNkKKnJRygJwOyCjqBEPBXcY") }, - { XHDR("mtuywjlqnftk", "NwcOrIIKwvaFIEilLPwHWOZwnCQGfWwQqDLYSNGlhUaLd") }, - { XHDR("zl", "MSNyz") }, - { XHDR("bstbplzsexmsbxrx", "XfHswpRlrxKrgoa") }, - { XHDR("zglyr", "yQWG") }, - { XHDR("nsfusmbvmjpiad", "wfHuVetDPLKpEZPkqxN") }, - { XHDR("bldzafltvegvqwzab", "HoQcjutQueosePHJkuEsVKUPmNvjnrWbIgSvRUnbBOhwtQkGkQBQIFGNLKHjECe") }, - { XHDR("lfvujn", "arjASdeWIYWilMrjNjwdEJLsvxmSxOQiNYPmJeEaeIUwoiahkxomSLbIjVvHnWaQrql") }, - { XHDR("jsuqjvtjkfhonhppsy", "Faev") }, - { XHDR("j", "laRfSyUlJygCeEwRJjnUeB") }, - { XHDR("bolqgfyqzwmg", "QXRzHyGOjjnPWnBYCnwONuyyjOe") }, - { XHDR("btms", "HAlyEExRrlQoQjaCCoOyWiAIWOljMNAmpWRiJIXBlJyUCDhzsgOBkeyueKoryClGCCCcPaddCgnLXxEL") }, - { XHDR("jirebuddcitq", "ZhCiMDpJxXAvoR") }, - { XHDR("sdtqvc", "kSNYnEHHBaEkmEDeMAzcsehvodKSzyZjSWVZJmSgTLdCNibJUKuQqxvEhuJwVEkCoJNMRmfEw") }, - { XHDR("qyzylytpjkksi", "yYFqrCPSkYmZpeweXdEXeiQqedAhrQnBuoDJgVgMqXSHWRuANMIR") }, - { XHDR("jarrqvgeyp", "ESPHdnAjtvcCgDNrYJuPEmeyfCZNduYYBGhJCF") }, - { XHDR("rotczzkxdialxmkle", "KkAndPGKerZGuGSsNxZGozkIZjhtEGI") }, - { XHDR("nexwaayxcb", "uYGXOBUCmWrFNooToJJQOgLVEfoFTYxMpIV") }, - { XHDR("cxevgxyfejgbm", "lFadQ") }, - { XHDR("umcjb", "NqSqFEEegLvPosiSwJdvemTqOHavymopprjEfOBjCbotMKZybFfSYflBWSWqbIUZ") }, - { XHDR("wcnnbumtin", "WJUcxSSWtukkmCHTtoFYivfYihvcjqBREkaFvGeWdgGFEnEVI") }, - { XHDR("qommjconkouvtfkxuxye", "QHWYjAIlnAgOdHkCuAWDbkJGrwhIQZgygDnHVhlaKgIPNoMnDaZHeYVd") }, - { XHDR("eevtowmnqprmic", "eOZQetfcZJpgZvUXwXJkLYqkV") }, - { XHDR("dbldzkvqfucfkk", "vHRNFocyjITkfljkeXLcxBROuobuL") }, - { XHDR("fhlfqzsxvziue", "eshzfrOAxBQgtwvFospDiKECuevFqLererdecRGrrahestwZXwfdtXvyYny") }, - { XHDR("zwugugrivsa", "qTUxaKfZVjFYHmTHtktdKiQfyomsTmUznvOOUxuADOgNnd") }, - { XHDR("rlpsybnexg", "UimwLruiiKlDOzFbpQiFEJIOCpzsOWPbyEk") }, - { XHDR("pdziasicvoezugln", "psbaMhWUkBqHzaCLDKUlwoZv") }, - { XHDR("ozxcym", "avrPxBMybhGIMMCdKJLOaiEZCzRjjgRTMJHfCnYsFvVzEKbSgySphyEDMNPAxnVNhiNBXfhyp") }, - { XHDR("jhxrshqkzxqui", "PlLsbrqHGNAqbIZzCqdvasBRQYiOhAQYcIHPBEYaFiPkwTydCqtiMJLPfgWdjMlciDVnmd") }, - { XHDR("sscjk", "YGlbcLuDlslaNIMaqDrEhfcKdoEUlGVPmzgXcWXfshzWUlwEnvcXKSJja") }, - { XHDR("edyuhvpfoggjyshfdcaz", "ZSXqWzUKnjbCPGSwBKViHRcyKdkbYizmmDTimjWtxBhsgMqsxAvzeHYDDGPLguVcSvsSUGKFXwicTy") }, - { XHDR("sntkkrlzupfur", "BfduFoXJiPXlNXjaZiEuWvYsbTfGoAZZHuL") }, - { XHDR("kmxvtuxavzpzaubpvup", "HBjjEwkehMazezEyDCWKZJXYlLoBHXlUPZpHUqtsdZDqQdsPbAnYJrVMyJUAuvtinZmlDlxXZmv") }, - { XHDR("iucmb", "banNicAfCOkSSzmazabCmoR") }, - { XHDR("eqsknkgprivvofqylq", "GrktaAdqiMyCSXHiNxgpdIniyIwlskZzxLjtpWQgSLUHqltizOsJHnbyjgtokWLMgUxxPGKRGeSzNQC") }, - { XHDR("auhirtwkynuiug", "AxtRAuIeiqjrHCR") }, - { XHDR("cbkulwoiihf", "bMlAoQKqU") }, - { XHDR("lpygymkrimihcsrjgs", "daspYRN") }, - { XHDR("nvhgheenayfo", "ruBxhiXjSeUgYKRa") }, - { XHDR("ovpufqvykxzpqzi", "cKxlcnnmWQmeVr") }, - { XHDR("oekod", "idhYwyCSwocpXIjGQNIsAaasCjkHJuIJPALiZFsWrMUo") }, - { XHDR("azkhaa", "hxczfWZuQQVXkMpIOfxyIfsuFpMhNgWWDfwkHnVUwyKCuNvwNJYUQplQVtGbJ") }, - { XHDR("flunbssxnfnnjlaaz", "rLiEDqYGcqFrfiXeeAKGMrkMuiIUVwkjswgQNZEjRHjijIiFppOpXgBfHQNMCse") }, - { XHDR("mg", "EkLJfIjyahsZpBTwKnsiXGGHcYnquEfJKWcs") }, - { XHDR("dkglhvtik", "oDVAZskqIzRkFVgerSTdlDLGZYQjIB") }, - { XHDR("xeybeerrf", "WXXdCSNfZTTtlbqQSkpZLUCp") }, - { XHDR("sxfwvnxhg", "zrDcGATOvjCGegLzMftBgVLSiFlS") }, - { XHDR("gtyfom", "WXNyqmQ") }, - { XHDR("hynstabjewagtbasu", "UuvePwesmeEHVNzXqoTywyVIWKbJuyLKUmtjZupkuidXKJxLIIbu") }, - { XHDR("lbymtdezzfuxvjzy", "vdgvjtPNAYrMaCpPjhorrvIckiMrGFciWHBDGvFvFyppUfSbIuP") }, - { XHDR("k", "onvyyeNDlTtKdUJfmneOzxFcmasmkrrzBLPKEhBjSSluxQbyqPKRCWKf") }, - { XHDR("rmp", "EiUf") }, - { XHDR("mmwbcrqerloqggtexzv", "zoaBeYKqCywDmnOfLlgcGmKcKhSFZM") }, - { XHDR("bcmdllvo", "QCKOZhwyEqfcAgPXRVbxRHgnGXbkYmMojANuB") }, - { XHDR("kzjixnkkbwsbxdt", "TngSAGyAEvNTAdeGGMdwHnjumtp") }, - { XHDR("kuytpy", "CUbrRamYAeAMuXlKPVvUrxlMOqbNEORurAGATmkadGxcVXmqrbLpjEDQboThdyJnEecmPVjWyLQk") }, - { XHDR("ugpnfxqlykb", "OxnosITvTbJirlBPxJksBFBU") }, - { XHDR("uuibsj", "wWZeYzLvXCSPSm") }, - { XHDR("smoudhosygxokwybc", "bHkwt") }, - { XHDR("x", "gHtojFxDJhUbCDRzavpFNEBQKbFTX") }, - { XHDR("uf", "daEZuzikBth") }, - { XHDR("wgmj", "wiQfMmevUObOvEgHExYwFOKEZEFfpHDvMTIwVBCKkDvhPUHkegjkFcJByLNLKbqBQjsXbSiAZJ") }, - { XHDR("coywfjywkhtlbyxxr", "VUHBPihOleyvhFQQizixEIEmdfXRArRuAMFalDGRTywIJSMDzvuRKzTeXQeoZJOVZAlMjUpUxnXMkhJ") }, - { XHDR("dppaypomrzvnofi", "aMiQVeqFvAFqQ") }, - { XHDR("ukrhzkiikk", "OVockSWMGjhnZpAVGFblobbOmqUnpDeB") }, - { XHDR("scwcarqnyhaovzc", "kLOrxKTtdUMsyciLUOgXmIgznrTnXBqVxkQSZyTJpEUcLzheQLPbGhijCSPRFtjjRdGpaJuH") }, - { XHDR("ocdvqwlk", "UpjrudUqSUufiNf") }, - { XHDR("gxxvihbbsklxcawaglr", "rZALrHpSOVWGAgkeDWkkHQRttHNAdMIguSugMlpvcSdWkJpJZVUo") }, - { XHDR("mb", "pJCqoAsSxUMUFCy") }, - { XHDR("hbstjegfwkhbdnaoey", "Kfp") }, - { XHDR("qgfpit", "iIehrlfnnl") }, - { XHDR("s", "aRkUUYxCNijOObRkxszZhonxYHpIwZ") }, - { XHDR("wzisqnjpgeptsglbge", "ddwBvdM") }, - { XHDR("idnewchyhpxf", "VgAkeXiazYchdLLimhVujagNGsSGEBlCxdPlxQemuBGlxiNdMoYIQhVc") }, - { XHDR("ruxyzqcwwoool", "ebJvgzWzOsaLp") }, - { XHDR("fgubrkxbrlpblv", "MwpTWTPPwYAl") }, - { XHDR("bmlanvub", "dMVZLzFoiBBkWTyPmzLVYkcWhxStsIIXSFPDBGLnda") }, - { XHDR("og", "TrXtcIkV") }, - { XHDR("odz", "NLXNGMjOJOtjbUBdwgUnawxCksdzvGMbxyvh") }, - { XHDR("eupysxfohxhygghtaxbn", "LXWlvbNxOCEmTFHAZdmP") }, - { XHDR("dodfxpqnmxppvdf", "BiPaRUYlsvAdwzDudVLRwBNRuuvzQHSsYDZpDdyUMKxFZRoO") }, - { XHDR("rqc", "JfLpWOZdQfxkAqtRtTrEIrpipTtMJTRAAUSmuaxUfOTPGkqpPaRCTHmP") }, - { XHDR("jpzhktcsfsh", "SdUgpKmTIvmfWvMhPueSaQUKqdEIBfxZsxfdOZw") }, - { XHDR("gdni", "pTsBikYdDrysGlpttdoMjZBrmlJCiQiXcoGCNTPYFilVIKDfVM") }, - { XHDR("cvjrrkbpgtojxkap", "O") }, - { XHDR("ketxsuasdzio", "TygejBvkqhZIsONvXsRc") }, - { XHDR("mzjgjeiewefmuot", "UwvcotNkbknuMazVaPsgTByZaf") }, - { XHDR("tlkuvseorajrcy", "mHullvuyJJHUgyg") }, - { XHDR("ffzegxemzrnmc", "vTLirOT") }, - { XHDR("jhmhrzijni", "pr") }, - { XHDR("kqhlrdvukzmzzrkbjz", "ObJqNHbwEaMZDyTuJBhMRFKdbYWcQKpMdkGh") }, - { XHDR("cixdkovwqfznrgmxbdc", "NFhZmXoOmdxBNiFwrJFlhXjvcBuQIzhBmpvJTS") }, - { XHDR("ih", "OCBytPUZkwjeHAzEzvFviTyTLWFDqdcxP") }, - { XHDR("zcyuztmzrelrodwv", "fzLiAhDGaOWrpcuSBtGXYGRAjm") }, - { XHDR("razklpk", "VvKKmmlVhHTfBeLXdorbJMMSRkEJZuK") }, - { XHDR("rzkqylvfunyj", "YHSNXnqNRMqrlHGJrOYvEtngighpreQWuupUKE") }, - { XHDR("l", "ORsuqaD") }, - { XHDR("unztx", "NGylKIfKkNYwJRvBWCuksKCJfqOfUdWdYwukMUkAHwSXr") }, - { XHDR("dpgzjorramok", "jHvHJDBGyovMSAppkUsKzMmASQHXPMpFqAjXhjfzBPFUgNjaGPTjSdttNZ") }, - { XHDR("e", "TfyTeNqQOgsEbpfHIcbQAnvLlcmSBimXxzMmIGjimJkkLcJmfmqZWVQrUtRBDTJlhojwZkPlUT") }, - { XHDR("smriyoveybljwv", "RodKicsiePmlvfjKfQWObDjPPiJMdjviOxKjeEmTtqdR") }, - { XHDR("bt", "fpXTFwJgqANYcxxuVNqsbymi") }, - { XHDR("b", "kQOAHiBmmPLsQsjCTIfwzjiWSHqVlElVahSnBQeYyfsJXgaocqGGpfOqB") }, - { XHDR("iqmsavrzeembgsrjruzf", "flptvVQWdKoi") }, - { XHDR("kcrptksiuxinoqin", "dYcUozawXprNGIsdFVOdAGEdNFcASEVwYYToMfBONpUyGkMeFcdMGyOkysXVvgYhEzaKOvjnZwg") }, - { XHDR("nymfhqcslzmgybj", "FnRJdsmBdTXwfaeYyyWKFswTLnKnUqHwqCElcZsmdCiHjIEPzcOoPzVFKIrou") }, - { XHDR("qmwflrvqkp", "uFMdovFuRDDeKGXqyCQXDwcungYRToGcKJCxYzsGQaAETwHEhRZPSg") }, - { XHDR("nsdirzhegyhc", "fkeNXpfUpVYBvJUbfLGSyLPtHnzKEMLHCGShygNqUNubujLpAFeSFGmlzHbRchnqaasUJLJZgsUP") }, - { XHDR("ert", "CepQArNgtlIdjUDAdSf") }, - { XHDR("qwdcrblcbhlvpkb", "pKwOnSZkoZGZDUEEgdTtCKvctsaOrntYiwtYbAncRbyZL") }, - { XHDR("vythvgl", "KgWAwrulGBocUSgBzyjcoGXeKRCimhPCBQJYwYZWVCLAXBRmFlJYBv") }, - { XHDR("xcccd", "rsCWujaihCiUDzWyxYSLii") }, - { XHDR("ed", "allabRwwtftSWMnccfjHgHNPybmukQ") }, - { XHDR("ecq", "PVvLxgVlrWryThMUCkcFINvMgjmnsuuxdeIpvEurHoIXprbamJIDJQNoaYwbrgZFOqELqwnpFzyCb") }, - { XHDR("vpsmapjatae", "nNHQkP") }, - { XHDR("stkfvfybfota", "wlfDQsNYRAWHPUxdGMTFrRYskxNZiimSlCtmiHznjOqISYxk") }, - { XHDR("g", "uSEPCWjvhWgWRMYfvGKDAphniqxPAGtdUBSowcHfchYRlMmQvZKSpJkayHfqBJJcUpaiOA") }, - { XHDR("kaeoxq", "DrGzxnaCDidocxqwNMLfPUBXkTXvjnwkkJRWPRWnMIVerFOzaGsilNKUNzEDJxQXKCkeaTp") }, - { XHDR("isw", "tohkdTtWsEORrGoJrdQrsArGnNfgSPpgKtlRWenKKvgBEOeKRWeIoIRj") }, - { XHDR("dvngbvhcwlkwboyce", "LQn") }, - { XHDR("dvdvlekiqckrkwsir", "FOS") }, - { XHDR("kbayjbqjcmfib", "JgIeE") }, - { XHDR("gheb", "yONQsTKZgHfpffWRPTOGwYpRLFCSZJHeWvUESrCoKFpdKNEEcLnQYNoGbnlmdzuuxYaRMkW") }, - { XHDR("mtaqlqfbgxefc", "wELNXNVMBMVrjKlWFmEsBLbfCsWQuPhF") }, - { XHDR("cwhax", "VdDcUMb") }, - { XHDR("cir", "OUquDPRPJtsTamxEtwStenrxsgoqJQSueSqZkyzGobYGKJEPKWO") }, - { XHDR("xkhpazhghs", "lb") }, - { XHDR("ufmrjcqg", "cLuivxTbBVepzXXRFDhzhDWZikbaeqQINpqDGfTRnPkyRTqogBoNCCuBcLxQF") }, - { XHDR("lftjts", "PDziPexpNGBvFzppdsKsWXJGiAyZLauakQorVwFtimASdFAdpDUXAVPtgoFGNJzxUtBYMCeGnA") }, - { XHDR("ahkaspgvksxurmlvq", "lMxhlvfBjDlIjKOmrykpPZViPIiJPwTYqDuagIUxwtKppsYElgFmEjhyvdglZnBLBgvT") }, - { XHDR("medgsjvqntyjhmymdri", "VDMRXQNGCOykLRYjXUrkstyAerhrZFHeA") }, - { XHDR("svlwi", "LLdInGDiaTCxClvjWinIfobxKFaGHI") }, - { XHDR("jbre", "FIqROnxuQPfIuqaUqHmq") }, - { XHDR("fcniazdesqustjy", "PpCxZDdKQwsaOpKnjgNcTuipDkQWpIioCaKsitqMSAIHEJsedODhmIAMQOcGfAVVjbBludDqlDJIas") }, - { XHDR("l", "hibLboIJnDelDrKxswiMhUw") }, - { XHDR("wxlytttrpwvuwcact", "PEyuDxDqlDnipkObxlKSSenkYqrepOI") }, - { XHDR("hcmk", "ZOKcLTjuwfIxixoVZJHAIGdQMXyHyynaTLPvdZRfIhxjv") }, - { XHDR("wfiachwmunjc", "xYRRlmPPcNFGAoRxRmaUiwiGcrvxaHG") }, - { XHDR("up", "XREgppNdnSIuFcYSQkHShCcJozJWwnVyHIoIRbhiAbAAJ") }, - { XHDR("wkikvdakypzkyxvrb", "jpypysRjlIPEmTySUEdTwa") }, - { XHDR("kwmbjubckhxclitgcx", "qneMgVbHEveRIUAIrVMncwBqFgozmXrWQeMFQGzbnkeGqrfHuvXbQOsiLhpFkYNzKh") }, - { XHDR("uzvdeqqe", "OmkqHQplcgqLRrrWjmcYybSYIyOhkDfqLHQBnzECmoNCyPSUoeArxUkNxHfmmxadIMJ") }, - { XHDR("npkaaunadzoclk", "ZFIZzcGmTUgShOxDkuRQvRJouteMMlVPksmwmiHbJjmHTvRaKNXSKJwZPLoCQzNfiDjqLjprkYZWzvS") }, - { XHDR("dzeikpudibov", "oYUfJiCPUgRxnfZLuVyNzyhFyGtsxpwdKujd") }, - { XHDR("dkiqgpfqssapjtde", "OKJNgpDGZwpWeRYIuVrBmwNvRrqsBvcnlXhRMqqquHfMVqGfJIQjpjIPQZhICzdFbOoQ") }, - { XHDR("yacyxmrnyghrsgidzzzn", "APaxoouMzNXuoRHngCAvBndeqOpZdPuTajLnogYWUpkuxcUIlIbSTVxMTSCpuuaSvEtqPYiKfnuWOnfh") }, - { XHDR("wzqiroe", "r") }, - { XHDR("ytumddnkvxcskazvvcjv", "DQDzQTZASdZLpakexGyHWeGfWiISbpzzMRAfTotz") }, - { XHDR("jyfryztt", "yAQXLnUKFoCNbKyT") }, - { XHDR("gvivz", "kDbUtTzWrpdjBpAeEzUIBFtxFVYXW") }, - { XHDR("mmmjzp", "WrrJVdXgruBTzuEFqWGWHsOwXtLCzHfkRWxUnqFDicZm") }, - { XHDR("zrumzqunpvptzknlnp", "yIeYFcZxqU") }, - { XHDR("cukiaktrmbgzofcatl", "wKeEqRwFMxVQBhzHGapNSljTdiRlnEdDQmXkimGdPAzLLImgnZAiYClUXJuXzLvnUITOyLoi") }, - { XHDR("wyoaxgmclxtu", "hjpQvCZUWtnEDQqTPigpPycOLGmBQrcQvxGQCzPXjBYLUUsmCbWtKmLZezPUVtUDSRVBETVGbYYQ") }, - { XHDR("prow", "VQiYfnceUvbunlutGNdvbhPQRYSKssqlTUHYrZlyJOXPZJIaNaVkdCKOEdUu") }, - { XHDR("ligwkzxeuxrxzav", "rjJmkxdmrKpWKfPjVwcIRFGVwyovNiYgOlhaMyJPHxnBef") }, - { XHDR("crnbvbtacek", "gRkJAhwSHxUqBMQjJBKvOviGJCIWHEdhzjBLAygrKaojNnDOZWuD") }, - { XHDR("gdyswjintgmka", "YqNkWAgYIlDtkDKH") }, - { XHDR("wdopmentr", "GbrpGmiTVWJnkXtOlFdTdr") }, - { XHDR("yjnk", "stLXdaqSdZdtcRffIGzjbpsEuzpzegWoKPJAtgncfiNelxHCe") }, - { XHDR("ihodggswqnnqg", "wAjZKsFLyaxArNvDxlZxjxGCCNCwYtNJrZ") }, - { XHDR("efapav", "OfnMDsatXcFfoLNAebAXgfYOCKIlgImwOsNbNBVYTqHZCZUyxt") }, - { XHDR("smkhxkkdahrkopztlet", "BsVgXMnussvEGUnbtFwWTJxxczGoguupShKwVRJFXrcxFXbjuWENsDDtXatCphUsgNGyuxPh") }, - { XHDR("shmbxvupqidaxjstqd", "UGVHOaDTFhnPbIGBbz") }, - { XHDR("qzkdxgokknocj", "JjQbMfvTOBNQllCJkekpBpwLOLMsbeVhVrPeNpZN") }, - { XHDR("kqznvfugn", "WIthQsRa") }, - { XHDR("irfqsqbashubn", "k") }, - { XHDR("gkit", "pnMvyQoMLAyfFOsyNfwJqfEPrkisRUriLKkuFQMAdJYJvuYuuDxMHB") }, - { XHDR("cfqe", "kWsVkRciFiooojJLoDLXSUVtUHhFmcCn") }, - { XHDR("aiqqgsrjowffsoxiftf", "QNRdeSeL") }, - { XHDR("pqxybzyguwfpyrj", "eLkpwuLGujpojBHvrYfFUgIxoVtPaaTJUmRLIzkYDBjnKLUDWrVdwxqfQRkwZKbsxirrjDdYd") }, - { XHDR("o", "SlUcSBAucascLdzA") }, - { XHDR("ghdbdsqdyuu", "tcphWegMkiROttCUSYCzLrTmAaXWqDrtpfggeRRFbzXQZZINVuli") }, - { XHDR("iiyjgelvyhoz", "EIrrKWhtHWCmescgnalexQdDnWvFFdnwpZlgakKJgoQmPNbTkxDmfISfuChYZlSxA") }, - { XHDR("dgbtgsfqvvzikuky", "qlQQsibAdaCtyxnKQHOeoqNrWrrXmTzGyDRMhxIJDnIjUPrTU") }, - { XHDR("afyelmkhv", "YCRmEaWmULhpDuykNMBgivsMCQllIVQFYgMitnYHUdZQspNBHXguXGCgPmGuvgKOFCb") }, - { XHDR("gn", "HrOcgTMGpMvkvGEGRCyMhvsQNHaYmazcnocCiPgAEJXHxIciOTpHRwuAQtubQHKcElKtHxMYCE") }, - { XHDR("jondpjzyayzkvg", "HAlrYzJSp") }, - { XHDR("wwxningvfxffppnldln", "yQkUBLZiEpxYPyTcFoRZLpRadyLHxRklrWxODWyliwaoPSncUAbTmMQdlldvHNYTttyNplh") }, - { XHDR("syoexdchbafpoqp", "HZVVNyIXrWz") }, - { XHDR("ozajtarlboucdeqcshjw", "HIucmYAlFLijdcAUgLkceIhwQvNeQLXPMuZPhRXVqebwcudXjDXdSxpJMlpbiDvdOiYqPqRyPi") }, - { XHDR("cfqiwzizyhhzr", "gQEPtoLeVttsrhAJVZsJJOOQoFOSoubYbgESNHikFxPYGdqMTxbcfMDNzlXBepGZgs") }, - { XHDR("xylbucneua", "eyZuRsDUglnurqwJKZpTMLzewmoPWnopQMWdRDUVfPGMZBUtLqoeZqeNmLIlAKeZvKhZddQKEOIhjwhj") }, - { XHDR("qwleetqfnhhr", "NytWggGvrypBigDiJdKDsdR") }, - { XHDR("dmpjzakzg", "KO") }, - { XHDR("zzlkkmooqziauso", "RVZWayngxcqrLvSEqGObmJtxOxDfDNGTbhXKeGMVemMQZrPzsDfxujHBcjAmbLkGna") }, - { XHDR("uvfz", "cVtYSskXdFwghCGcxAPmuWaojKnTZepWBsmCRaRLdteGrISJpLQeRyartqhlrtRNmnCxjJUDQRkfXT") }, - { XHDR("kfypamqkddarve", "Uq") }, - { XHDR("ufdykmiuud", "xNvoNNUOYRhTVzphdCCFROWODEscnoOJiDwBKz") }, - { XHDR("kpphmkrpolwr", "IlXyPHQxAkKWGccPQIPUvVxXtuUtJtJPRGURHwchadKblXfGnBt") }, - { XHDR("cjnlflpoh", "pMwDexQuvuWgwWBaFHMhaJsBFYjkiWmqJGTIKpvRoJyiCda") }, - { XHDR("udpwfdirah", "b") }, - { XHDR("fyhxjnjeoiunjbkxfa", "ArBrVscXZpWTuXiMNNWpwMZSoUVrApxDWhmIhJtWfYKAOUvj") }, - { XHDR("mokfciexiuxsanjyfn", "GogKEHWJuBtAiIsqYdJrwWUucKAgwgcVtDwHV") }, - { XHDR("eaukauuxodn", "VDGhXLMzFoESItaEeKiVelhOHWAsXdvilJTMRFaSuKHnbsnrWxEDCUkdLwIzaVxPyn") }, - { XHDR("cy", "waMwzApuVfVIWgRzQr") }, - { XHDR("vccthp", "uMnZTwOvVvkkhXCoKMcnRUebLvwhbtGORuuZnCczwNhTaAMphHeGAoUPSBvMIOgOJdOxauNNpOwNtV") }, - { XHDR("qbdnq", "umtBbqTtLRcXkhCfMUIchDKKGmMgcUEVQELFlcPvsdnxoBwxwmYccNqyoaNUsWVGMKInIUupuCfRG") }, - { XHDR("ihwzbbeoleyfqhul", "eICLBnpMQZMCgNYLmkpagFzQXFXHpCqeLBMGoDxZiAyyzabhTLVYbIJvtviCmXuorUSPlBmKjkbU") }, - { XHDR("ozfuaeylkkxyoasn", "qlFGzJCjcLIyHIbqbgcFiLgRECVBiOmYhmGvfYGfRmSvqHUaTIEge") }, - { XHDR("zzpfkiybm", "VlpTHJeGfLbJdzdporCkUOdbfoHcnxTUxSZHUjkQiPgOELwkMtt") }, - { XHDR("bket", "uxtDOQnxCTPGWIwlWJHnExhstPZSeukHapWmfoum") }, - { XHDR("wasunqw", "ByIifITTYsyiDlbauASELuGhcDQrXLeUdlqignj") }, - { XHDR("ggujzfwmqekxsikfhr", "QdRvYjZXeSQLzAUSAoRjBxHQsJcxtNshbFrQUKmgcprvHwQ") }, - { XHDR("hvwkqefd", "KhNsmeETFlJcEUkTOlDVUKAUQgUYsWifKKNBhOXYWxvuClOYTKhjwndryets") }, - { XHDR("ensrajbijlu", "ctSCKCxYcZOhIbsYKXFLnCseuKtGKXfAtEIDAsbcPMlmiOBtBIcwzwIQZZysLXBLOTJtgWe") }, - { XHDR("o", "vcfTkDeGMfVlSJYIaznDvnyLECzPDrffJjGrjvLqcjWwUHtUTNLfPyQHeutKhr") }, - { XHDR("xyy", "yyWxzPtERBeFqUvfDELFhV") }, - { XHDR("neffc", "WXIkjCZfoEUjmil") }, - { XHDR("phubw", "bmdDYstghuAZoRFzDPHbEJJrBctyXPIABHCEawFDIYcieDoY") }, - { XHDR("vj", "IahfCtWHFBDzovDCBLipUaRqolvQaRkisezNczfqnmcfL") }, - { XHDR("xtsgxb", "NExaNgJCTBcOujGN") }, - { XHDR("nlrjx", "yyqOcosPTRbPchkPIDhskbKbOwZEusNPxnppyqxQmZxIqQEoorbFQpZZeMqeSQaKBWNcnMYj") }, - { XHDR("eu", "BHpavLfcmdCAjUoANIUbbvguNhkQerfsDwocuTQvBIoEfFYntJeFYwqisSzpjvMLeREAfUYX") }, - { XHDR("dvocwbtyxrpyids", "EcEzkWBXaumqUQQjmkgOofittpcATXVTEkwamYxJB") }, - { XHDR("ratutnwchjjl", "IakGzaNrZfpTBJVIPcOMfoHTnCWhwkhOeMWYTKSmRtTBgoOSpqyEreDQq") }, - { XHDR("d", "LMuxuKdjnuZLUPGXQNEUYPjMfSAZklCHipMlwWGQgLCMpOFMUsLpMPLgKfCeTnhI") }, - { XHDR("lvaoz", "WRZQppGgQyGhASeSXMQxQCx") }, - { XHDR("c", "FRaAGRDWRcsRman") }, - { XHDR("omweebylnvwh", "CMZuTFiXnvMPyhJSBDzwV") }, - { XHDR("aqoejntutgauwqhi", "yVPpmusIqGoNZNiOCiFInpltJHpV") }, - { XHDR("yujycxecmypqdojxl", "iJybQnLzRBCEawIwWKccwRzyISBphrlgBOyduuFGQOsxkpBUmpPixAvYhQXTCWcJA") }, - { XHDR("f", "JcztZfIquhWxhjKyVQYyTKqLwKxJBVXSDeFMDgNPVHIpwIVmCotgXwTvnhPAQwoJwPuHZEG") }, - { XHDR("nwyrxnmhe", "GNhAfDx") }, - { XHDR("y", "EbgtPqEHXtxfJethyVrurPalFWOrZufxUHxWrompvVmqRbRVTqQgVUMucOfC") }, - { XHDR("ygqycyhxghlara", "LaYCsGqienqJrWMkBqMhluni") }, - { XHDR("fmsc", "bZSENKUuuWvlaogpfrUQsPXqWffEatODbndHJ") }, - { XHDR("ajzip", "gZnxrwILtMAiUdELpUQoeLhrRptglcpuvGiHBgimAeiHHOt") }, - { XHDR("blyfwfm", "QlyBOYUJjZSgOvkcJDEXCrkBycO") }, - { XHDR("ehlvzdyvwibdhbdw", "sUyMiWZrjJiLR") }, - { XHDR("bhpygkgjhwb", "UEcPGgXtaLLvBfZBihfFk") }, - { XHDR("fmbygnohjflbyecryad", "doGWOGmYTftXTjWsq") }, - { XHDR("jcgptkzruvqdifxk", "nUsTssgZKgJ") }, - { XHDR("gczaoxtvhtopy", "OBDupcLrHMRfVxYYHhixGUmYxjwASxLhVZKLnYQHvlFKZxjHru") }, - { XHDR("liafpcjzfwq", "qkEphImUyJIjFDeGHuyictZHBSFIfWfxDTviemukCeAgC") }, - { XHDR("bmzxoxuabuyeevosa", "rSMMPQigqgiigBhFWNJpvaoyN") }, - { XHDR("obgpvm", "btaZRMsbHPkVACNorlUFOXXfCXwdFazBYOLLbwCxiVUQBZhJFuxyjtdFcyASkkWs") }, - { XHDR("uzoqkfzrasuwqbanphy", "mElfVsGcnLEBsLLRxZdgSpoxoQzJaphjhKAttyXnffoDoIjHhzqRxvfCKTSArklCuRU") }, - { XHDR("y", "KtdXZtIZaTDoBleeShPykdQvdoggEIwpGdCQFCkzHPMtIwfqXYkzjIF") }, - { XHDR("axysvrbejlptkglmld", "cTFiffPGuwWpDBfs") }, - { XHDR("bvyvcvc", "itJqirrhdOOYvT") }, - { XHDR("nkccoupwaezxn", "seiUhaMTfwEXxxZDrBRuBPxCCBwDfFFLicqeWvWQAMTOwVNFRAVENqMlJvvoLFhyrNXI") }, - { XHDR("fswubxct", "SSlILexttxKkf") }, - { XHDR("o", "fDs") }, - { XHDR("rwnafp", "sjsDUfwjCOjNHhAURpsPGwqwPUleHrtveRAXRyTrvCCiR") }, - { XHDR("itsfpecoybf", "lrpJYhjNFTyJuZfJBfBYBDnoWHZstaZj") }, - { XHDR("udeegvlyzbptdizji", "guBqYZKYRJjAXWQsaEjTlXDMTSFawqARNlPCGXBFKkYAzaiUivWPgLu") }, - { XHDR("xj", "MJiJhqAhIqvlWatvKnik") }, - { XHDR("p", "vgibSeupgDWteWNQLuxwDrKCVixQTUyiwdrrWKilEaoyGgK") }, - { XHDR("gmdx", "FbrKtizQpatwovx") }, - { XHDR("tfptbxqlq", "VElXdXGdNxcLuxZTxJUZZYrlvqQZlsjJYTHzwXzXMoWRcfAD") }, - { XHDR("khusdvtinfierjokwejn", "soCdwZNWTf") }, - { XHDR("flxcsdkoggtqbia", "YjYinToDolHaSWBXQvjwiugdThVkGGuVBN") }, - { XHDR("hbdvukaqo", "xLiiOnMBGJXcSDnbaNFFMLaHOItTrPeSPYOHzZdkFOwqejQExcQEcqeogisVSGJaA") }, - { XHDR("mehqgjglcxdluceloijj", "KRIbABdIFuDPZFcGkjoGaYxDYBOfH") }, - { XHDR("sak", "qtvaLkjzOcTKKCC") }, - { XHDR("zftj", "zgIuIdpJhfBcNzzOMyBPMyyVKgjqIHEEnjscKBZjGiuEeJoxKBweto") }, - { XHDR("vdweohlaoeysvm", "JiheScELNizY") }, - { XHDR("wvy", "werATyYvLiayXAqncDTxOoQPZeXwpfPNav") }, - { XHDR("lqkg", "EeMGoyVJkZpXZTUyPSoobQMYUoPbUryJQDGUihnRmdrgpDckNdicluOsU") }, - { XHDR("ergfukrsnseknny", "RgofEpyzhmchBXrqPRkDfBvuexMaPVqkCtbScbtNIhWzYPsMifINBymlFhsfqdeiwjycYLeTSZSARXZS") }, - { XHDR("nucirlrfvdgcaikl", "NdHLLuVYlbnPElKTKTIaAnmuTQmkGYgTFaBtfOHSmFlelwrXbbweyAKtfXKJFXptCeMIrwMvakcn") }, - { XHDR("idruorgn", "iMcewsRPVLZyhWTVhubFMBAhKnOiberfWEDJiNfJfFBWByhPfAnBElj") }, - { XHDR("giitelmfnptobc", "gTXTVtVEPrHYCraNqjqUEf") }, - { XHDR("tgtzqcncmsxxq", "PHpwXqTHNhNhyiyGmDaWGCBUZgwLuROTZaiZxvbLOPVMhmLaZKxPpUChDNhJzBwlOvsdwWhxZtIkc") }, - { XHDR("sfzqq", "YewyaQKkOgOsQzFwwgHwLOGQdEuqZoRdRpcTsYGQBkvZUPGqvLgwzUnak") }, - { XHDR("slqm", "zWNcOQAiJUVhoLVyhwCzbbQzmQzEVXnGH") }, - { XHDR("eontwgqzxubv", "V") }, - { XHDR("ydrhsszixfdcwlkjs", "M") }, - { XHDR("lvurcn", "wYiMiFftdptmPrWxsiLKZHfYTeGYTljMlWIpaK") }, - { XHDR("wpolppathkccq", "PZitrfutJXJALFKFknuVQvnuwrQoyBrYJjEIvrpaFJuVWztGsnwnhFjxgZIZPREQVIJoFoa") }, - { XHDR("f", "GwUArmUgqrBBDwUwFyBcFhGlLInvcnvnTCMzIaQBfVXtDqCiQxptnJPKaogTpLwSCXfVQXqyrFum") }, - { XHDR("sneuekvkvuupx", "NucCQpZOOikyEeHcOxpPkYWr") }, - { XHDR("ygkzi", "pRAEPSZzfvmRUPT") }, - { XHDR("jvnqdpmklsjozpr", "t") }, - { XHDR("fihyxx", "drCnWTpxtyOHBfGmVjMtGJQxcKXkXQjkAKmSSTSrznze") }, - { XHDR("pxkpav", "kbQiasRxHEhXzlA") }, - { XHDR("gqvfhpvgpbheacjfs", "mpaxebzyoibDlGmcgWRMuPBgkjtLHudEwCAgAp") }, - { XHDR("kejsjalgldcjbj", "UULdRNSQgvGNcSPyqLHhOWjrsMEgXOipvgmNhPCLkccgFOBoNYWzkUbxxiHtUKUkun") }, - { XHDR("vihtsrvv", "AKCLGyHgGzRJBIvJCsGmJjCPSoanQGDbrjInrdpebCAFyzmSj") }, - { XHDR("koscxhyjsjsrotg", "GioWmrIzqV") }, - { XHDR("zhsgpuzezs", "qXzPuOPrfQtoCg") }, - { XHDR("wkoufiodrorq", "cfIHzjkTLFxtfjLVpYmiGcEkZIesKMIoXpOnciXBLQbIgFamBCoUdq") }, - { XHDR("aczmur", "dNuxSwFBmjmwm") }, - { XHDR("wfijpbdihg", "mPjQQRRPygGUMwmodfCShecdRFbCvrdCqPGMOyCTtbgVkRJ") }, - { XHDR("hhdcbjlhrqmbrus", "XNwYnDtjoonOlQvYURofygFXKfxstYp") }, - { XHDR("kcqyfgusaodpk", "KnxDFUGbvSWuNWXLHnHpRUZKMLXfvF") }, - { XHDR("slwvdouypllg", "mvXQgcAmwGuFZvF") }, - { XHDR("bqemsbjhhosf", "KZMbUEagOpdcSxEXevWndnR") }, - { XHDR("aeh", "bl") }, - { XHDR("uslnawaqi", "FVSXjXrTFuoPHBdjrQeTsYlGwLwoAeDDeQATDAQqAR") }, - { XHDR("lcclraizryphw", "pjponAcTQJJXIieMBdCfZKHBRKPcVRcdkZrvHYqmIBgprjEIYZvyHq") }, - { XHDR("olpqracqlvkdzc", "dRuDGz") }, - { XHDR("hhj", "cezItQeMjqhpqvkNeEKod") }, - { XHDR("vlrzszoii", "GLsMtqOHCwOb") }, - { XHDR("qmuhjeidbzpf", "LgwDEXMlqjrBGAhFzkwxgqRenYIyBoiAYwEtRJcAUtOpTYXLcRuywdFAnFRwQJQQUvtsMpgFmc") }, - { XHDR("xmdi", "TFRiVQOeyVhN") }, - { XHDR("syrs", "QUpsNHtfvZpBglCEnGgTQQrbbXnOaAgWSfGoILSlLLjWqPTPuGzlIQDpltEaODbwoR") }, - { XHDR("iejpkkptbjvxvn", "COfMKuynXDKPXVkVPvnkIaOptLdorWItTQLBjJXllPzlmxuhLzMlZdKjFkmTYLHXXtgPLgWhJ") }, - { XHDR("n", "vwUIWWEoqsAGidPpJODVKNTVfvgAFJbCULKfLBAfc") }, - { XHDR("ormo", "jnidkRoCLiGzhwvSTjfEXTmKGddSQSzTeQQxrbNBJqn") }, - { XHDR("fghybxzufqno", "OWSabAzrbPoRRCXQqGpMeXMBcillpFR") }, - { XHDR("ekiivpx", "eDqzvgtntClSDoHUuwzrFPXwNgPJHQucqNOAXqIpELv") }, - { XHDR("esziiylmczjjstphjxpd", "fmiecAeSiQVyuFikRAcglV") }, - { XHDR("uyxdwamrdbkrkjdyq", "YlGaNytWxNlJKjexUvbCQKCVoCDeVOlmwZmvMWpsjMQRsxPGRYEJNgi") }, - { XHDR("qbudehfdf", "mWBwEvGDubKsqcqahiLZsUpevWWMSJVGNyHyXIEMWFwQBVpxWclbFZvBuFnlBaXap") }, - { XHDR("scezcymijrzehnz", "akqMpspxsesnFrnEfDVTaSUXRlnTBoMLhur") }, - { XHDR("xljddmkt", "ubdfxLlBidGPzPnweZVRPbvUylVrGcOwOpYsWmDAvjrVFDFfeFThGohvbEWxnqwmNWiMREWPjCP") }, - { XHDR("xfbfgcuzwdbyda", "YnRAilgPxXyPLFvefJyfmWycGfpXnGItYRCMDAiTHUZTbGqgPzBXcJexDCaZdgxhOBmZWgo") }, - { XHDR("j", "QDVbGBJrdixNOuHbahoTYBfbLgCuotdVXMhTOUwFZbRhKqMhRYSVHvJvIVbgoLLdRrqBZlJoxI") }, - { XHDR("tomyzeewg", "hnhANcYfUkWZc") }, - { XHDR("bsjsbr", "TEhMWZQUwqVTgAYtTf") }, - { XHDR("sykagmcfcvmlxparn", "EicKMLZYTIphtaMAPaDvzsrNmr") }, - { XHDR("rqyl", "uOwEpeDuqosrLcrsuTXSUsOjDBPxlUeQqvyzjX") }, - { XHDR("h", "VXGtoJkHChsawMFXAnMWkehrGmYbnOrNZtoZdsSy") }, - { XHDR("tyrfco", "tSzjIfXcxOkBFUyujRDKPtevhHSOPlKqQgshjQ") }, - { XHDR("zknxubkheclkohfj", "drmTtbIZODBCrCmMcIsxFsbZWDoBboFMjlgXgHiGojvrFFMaQYMbcvOfNKCdbbbSPKIheGnyn") }, - { XHDR("gxpulrys", "ActYZVfymmDe") }, - { XHDR("rvz", "DOZhKTNFudyoeQXjWaOdcXFlPJMxdlYJczPvHPoWTBPMAVWmMfpbeSCDP") }, - { XHDR("ikxchgnlsuzs", "ciAXmxINgLIxLbqqOQVixUxySBm") }, - { XHDR("qts", "MaVmMIXfBjubFKYtNahsrDDzDbPjA") }, - { XHDR("bxuqbomwbpbecwe", "MYowVwLjuWOFspRvZGJegTVZEMkKrgyRXg") }, - { XHDR("jwmmw", "TUweIVjYzecEYPQBJlLcqPtphTEJEuHxcveRdndwmPtzwDgFBbQmOsaDxhRXyoKGIoAcesGDvqhwSdcM") }, - { XHDR("xrawmfgjh", "HXJTAlWyTdeLhELzcNeQCtKaHXXgPROgzvWljCWANKAKJcwUHkBbmJDxjAiJJqBADSQFpMh") }, - { XHDR("dhlluldox", "OQpEsBTfh") }, - { XHDR("pbbhizjkfqti", "TrITOqYYmJIUxSaeemJMcQvRyq") }, - { XHDR("uyqoatjn", "bRFd") }, - { XHDR("agidbzjrqanaptbrwzrd", "qzhypSnkSREiwTiSqlKZLAHGXMezqqLWbwFIgpGUftHgPNyRFsXsTQMxYMBFhJLgXBAFjAypOCER") }, - { XHDR("clzsoghjfnwjtgkkj", "wgIScRKwMWrwMOWdIrHvlsRHEOnZzeRmO") }, - { XHDR("gujsmjde", "TRoSCtPjstHGmNtIlzQCPvgnkaUdqkyUwPDaSXmpHBHIEboVpXyFaRKNXthkZuYPncWbEFOpblDpsWxr") }, - { XHDR("eovgiwykifj", "paTWYcTvgTFMMlZEqWWtxPQLzNrYpWbHKjESPgNejwxaeBEpyw") }, - { XHDR("pnemipzdsqfd", "noGIWImHztigZwxvfJugkjEQEfcxGF") }, - { XHDR("nbl", "sNSKhBrdaefHqqaxzkhhjTeHZrloVIwZmVdXGvWXbcvJRrvxPxHayEjwynYFDBzbKgzrFpT") }, - { XHDR("hy", "HVvXSXbrzvRYZwIBKibhJTveNOJSNozjJtuIXVe") }, - { XHDR("ihqbqjptzly", "HVaOuoAoNsSfQO") }, - { XHDR("axgreijtzoc", "eGivXEvuPmhfHQmjgugNBhlEjvMjXqcelJonQjlmmrsOVloByDMyaxfcTNMnAToq") }, - { XHDR("jztgbxxvdv", "wIiWIDYIVPbZZQXAERNahlISBErfBgpMROYAJZcznMROZMuR") }, - { XHDR("deudnltiixencwfogbhr", "VoUvMwzUBMcKkZBBXRlkiLowKWAJQPgEVWZoXJshsLhZLJrcTQtN") }, - { XHDR("xtsrnaqu", "ccOSwTGFUJOevqfLOiHnZ") }, - { XHDR("ognfkwmpsmlohjd", "KoSyeDlLrIutFALIeTFuWyQKcEvTgtsjVMKYAjlpKlj") }, - { XHDR("mq", "ewSXiXzSdHMcqPIAFPmwFWYGoHTqhvzMBFJUKXbyBbx") }, - { XHDR("roawxhpknu", "yFetfNOFUioouXtrnzhtZsjDEzYghRSMZFBYYhSGiVUZyRKrOlrG") }, - { XHDR("cyiowfbrjhrjq", "LDLyHBbzqGPhJqvSgXFJlDyAsAmzzGkHtVm") }, - { XHDR("nzsuninhjtjkdup", "KNpBykoMjiwHyRdpszbwgvcwokpVKCbSfVynvcu") }, - { XHDR("dxuvklpzhcp", "mGtopBhwnKsYcRVbBPkjagqLODuAFWSzTonPADyl") }, - { XHDR("cicz", "fMyjhfHUjiJFQgvziKbKFHGCdUAUKSHkrDJUwGdlBMnXbhVMOrLfcYT") }, - { XHDR("svryfevrewmnttsakms", "AgJsqJUdWvZCpOlpteQsZJkXnfibTJLjqzivwIYUc") }, - { XHDR("ehgyjmtgbslgsqol", "kWTYqzqLnyjTFZMOntYdEptskTgVHyhLHeBpptMNvCXALutxzlZGovFvPNLRxq") }, - { XHDR("oedltyhmkhz", "FKWzxa") }, - { XHDR("utwlxcctch", "AnhtJuCaXdaFfEwfeUrIWkrIQPGrabalEhouVVLZOaMIg") }, - { XHDR("eihyfldhshofhcxtedg", "COiOhfEMHdImdvZZwItJHidOOjduqarHxTwLMd") }, - { XHDR("j", "BvvlZiqvESYeMlEeMlxzlMXLPCkCPYEKbaweLLWkwoKKWobaZpWM") }, - { XHDR("nexnixeilyiadobqn", "qZFykyproNoqBUfOorZbbBJQIhYvVMcSykcgHoaDPjJJmp") }, - { XHDR("qqfodwsglvtnpu", "KRtGtADCWGHKEtYnUOgTPyaXcPMbEmxjAlNWaMHizapglFrEwyyzG") }, - { XHDR("etgjdisujvdn", "WBYdrTQDtHiOlCAhzBYzhnx") }, - { XHDR("rjakcdjluzp", "YcKHuEiPuVizVxDuTXfXuIHQbTaPhhoRToMSMBXNfXsjcENTfSGOQVnvimBQHKhhKWuHrcUFqZ") }, - { XHDR("og", "vIhQnAfGegdFupkqdCcVxdNnAhlvIf") }, - { XHDR("haapofewgzmbain", "EmAdhWKWHrlyYGCJAscFwSVTFrSbeymSTnMhRfakNjzwWkxLqisHXZNDhjOeO") }, - { XHDR("xjggmoqzofjenvgz", "RnyZxCtLtRrKgBjGkinGsneBRNiPjHPVggPJJhlknLTruhhRThvWzsVQAbNryomVsPgIMznr") }, - { XHDR("zklnwcjoccqbwcx", "haTJJtvpfHHjIGctVucGaVnOQFJrIfplOFQForzuOBoVgHrBD") }, - { XHDR("kuqlg", "vsGMDyuaEAUvaaojXgVNsvEbSxYGwOuDuX") }, - { XHDR("jupvjxqacfcvuupp", "lcopibdFovXqxLmPvMoBhGsLSvGieiziaLHqLtcoIFiBaDNSLfEZUraexKixEy") }, - { XHDR("ybjfsjockufwzkpuf", "fesASfUbIfWSzcvFUlZdBYcTtIvuUqCaBkDHeozMCBiLbGo") }, - { XHDR("mvinjspymlpafa", "Kjxd") }, - { XHDR("mopb", "QNWiWsGUoAtRzRqcYiCmKGrAjeeVHvVtApMFOmTZmmrpiwOWXSSCftKYb") }, - { XHDR("enoslcyftztky", "Wo") }, - { XHDR("ks", "GRfaOLKgcKwDArZGTZtIYvDhEbsySQYUoDZJVIrWEOateMTBzRhGhGXuE") }, - { XHDR("ftepaompkavdrkcu", "jNwgTNuYEkaZWSnFDKByCGnlBumKYJrVkHEgSkZnBdYVepuacWRXt") }, - { XHDR("belhzdhkvhs", "gwVeEZTBQWsyxCvnQmvn") }, - { XHDR("tcnqfkl", "IYynoCsnntCEerxXypopDUwqlQnLfKgRbHXWYRdBDpuNywcKPtfa") }, - { XHDR("tkssqcptjaqlwvwjm", "VytGEScYlwDHlGCdI") }, - { XHDR("qptdog", "MPBTFLsEbeWkGwrmKOAoPuUNHQxRILzHfdjkSYo") }, - { XHDR("oijdfb", "IKwkPuykmrPLXDUWfLEOGAqPZbRAjiUHBrydUgKGXU") }, - { XHDR("xffkiparhgdbtiz", "DTzBeDXmpatEeXqjyGOhXeoNmUapEHSCHTOZMFMNQ") }, - { XHDR("hmhjxqsvcixhjig", "zuxcgLhhEguEKYipxmyJdDVopfzcYTOiwwJlXaXmAlNFtvrZRyv") }, - { XHDR("xcuigscjlihydtvp", "AXhFaGupFHrptWzxsrhEfaazdOBwptzRvEXtlFMTishcpNLOIIRkdzZ") }, - { XHDR("txlapymtfvqpmhscy", "lfHwjHPKCrFxBSjwWAbkObfMIlPulYrskDCcRYMaetQstfp") }, - { XHDR("jdofsqee", "YJjnpvxNAdiZzwjiMbKWRcC") }, - { XHDR("tbszqzwxwll", "NDJgqxgyzQNLXZtwJtkTudrlndFcicnOmZjbJJCDuUUHjMpW") }, - { XHDR("vrmhvyftvtrqn", "TghH") }, - { XHDR("gfxhrxoocyakah", "qIrQndAuHPdQieEUuTGEoobUFWuwnKUWnLGrhCVqImIajBkgnvDnaao") }, - { XHDR("ukhcoarcsvk", "JQvcuTRgLQuzua") }, - { XHDR("hrbygtyh", "TaOggCCVMsFVJxWPcXylkefntoAmcDIqmO") }, - { XHDR("gfydleyqkaz", "apjraoHq") }, - { XHDR("ce", "LOmdOcsGJ") }, - { XHDR("fhm", "kTGAQfDhfelpBdFLtyTmuv") }, - { XHDR("vsosdcthb", "sAyLMqOAcgBitJZUghgkVKcgIcEtqKsAg") }, - { XHDR("nq", "XaVMWvMEmGudcdtcQIYsqYHzyiDtmVuGBONgdKglDRvRRKOO") }, - { XHDR("hmtkdaf", "qmWcKOKzQnbdDSSFgGSqoZdkoSiennIoGKeoIHwFGXFLBcuYNWZFEpSkZTUhSqperX") }, - { XHDR("fuckdvgzeyvlkbwiu", "rhHttZoQBTrtTOtAlaqAKMYqoSRqETHrsMFnNHMayCkDhwGcrHqrPGNhjSHJTcfhgZCprfUCGhc") }, - { XHDR("lgc", "tlvceaqBhQPwcmeCqplQYEqnuMI") }, - { XHDR("og", "wuqtUyIowwKktZEZnQBdoLuICQDGcoeKZTGxVNqLFwHCHDimRjgbhnJgWbCCdtSoODVwD") }, - { XHDR("qjccrydlqaksiqr", "vSdwfxvvLPkjEIPpDJfcluGiwIUH") }, - { XHDR("chsmcejfiufvtyrfmroo", "tZvWcvmuSasVsBzqSVzxbAeRcftcKOrKcWvdVmdPWyIMXpmVufXVy") }, - { XHDR("iozsvsw", "CEkWyddGOJfTKKIlmTGlwVszYvvxMRpIYMAmTNTkbJmZYHumRqgDFkPUIZAHTlPlNaR") }, - { XHDR("rvy", "KeDFXvznlJWtgwEAAYifFgLRLlxNZwaCsXgddBOlmSJeVBSOifWoGDTJyDrUONoAnee") }, - { XHDR("kxsskgvrmgvr", "PaqfMyaraUHouuiujccbvzwMcwrXGtVbVBuTHtWQtYt") }, - { XHDR("qab", "hqzrijxGhNxZFnzdlcjMAIqPRknMiwKroZ") }, - { XHDR("ocrh", "FIyMAwKUYqTOJscrYGkOWYAARkoNBONBNYcqJduFahwVzzhnXL") }, - { XHDR("ttwyqdisj", "MtQyjTCWvByYAqvrpyhHClPHDMcnPtNYuYOwwRntEmygTwIOTktQELZnalN") }, - { XHDR("anrqvbwkeysu", "JqgCJOdTPqXrCvZMOcHjeqKHrKznrNMskhGBAIs") }, - { XHDR("mvuurfmpgmcd", "YidrxdEMoyLrCKkmOGfLwqiUvQEtqnPujRoZWivkitVewXAuukieMyZcLfLlWwjuzvczdsmnxlK") }, - { XHDR("rdjfsgnehkfsitemcvth", "uE") }, - { XHDR("vhuwiuspnpckmnbudhy", "ZsxJrZzsprIshINSCmPOGHoyvJsjsZyaUEqlkAwUTPZswbQYGsgmLlSIyzBwLFqzWoxyLyGx") }, - { XHDR("tw", "GsqsOVPHUEuFfynRscKsZXVuLqRcloceQsaRDMdmBTJXL") }, - { XHDR("b", "oMqHZeqofVYrKwQvFPTeQPAgUVHtCwxaJSElmMzxVmzWWTyCStKWOizQmXfG") }, - { XHDR("ymmwgiqfrgdtzn", "qxXGMUFGTMwPkFsFNBDlVsrBaXHeCPgdfvIFuzTAOpxoUltlryCceTDGCtjJegvCbUKFLiBRel") }, - { XHDR("uwkcjvrkkbprvlrkbcg", "ePXlZXCpTwEwbXmacocoDNzaSLVXoDLbAvUHFjPvgbZxGBlBWZMtDHwZwSSMdet") }, - { XHDR("y", "mYMLJEfLDLbdoQCDl") }, - { XHDR("gvjgmqpgd", "oUzcGelHdZSCXgrdzIZhJqRVYqCzWUjclMYLJcfLpunIpmvaClMWNQSsZREIbhowxjjmLsNWfpgU") }, - { XHDR("kwnpar", "NjFeNdbQPDwHsghgspvmvgNCgqyVGUcufAZqLwuIYfZZIr") }, - { XHDR("clzmk", "xMZLUPQdON") }, - { XHDR("ufsxgafjswrj", "jZxvVByjBVtKXSNhznUcnZRoanULRJGkYgXHQXrDxBdvfYTvtHykgQTkWfbMbiZu") }, - { XHDR("devoejuszlnba", "QQSqDLXnYMxTkWhawViGWBkLIvLwAEJylIFzEwCrsMDcgmUpVdYGeJ") }, - { XHDR("znfkve", "TKBbAKbxXgKQtVxnfmoMRCksjXZWLExTcpMTMIxDFVBdXbypmtVFpYLwVPvZArO") }, - { XHDR("fsqrpezslcbjxisyaeny", "DpvTGsQjCrRlPEEjRldlRlXRkFPfNrCQrhSOEgCOLGtLIPJxKQeASEHJBynNkBzZ") }, - { XHDR("jmoixgxy", "RrIbLQtFdvoRuXnvDOAwuXNCBalSBtXoaJOFZkVFCboaycdFWAiV") }, - { XHDR("btdtrpyyqpuzjjk", "f") }, - { XHDR("upbxhvlgi", "S") }, - { XHDR("gfmwylibxhqch", "zKerKBtDtyApNtEdHjMbjJUHtfNjRjzYgWiUomuYWqQFrHFToIcKEhKKy") }, - { XHDR("qjwduerdcgnu", "IpjUrlvTANTsMOMylehHlxwtWDasrLIpoLXyFCwkMQOdSSxdNClEUvpLBsjaglIzPrhUnMtgeIHdvCfs") }, - { XHDR("km", "ZtsxaQJEJChdrkJrsNcBVILQbWeDHEeXNzX") }, - { XHDR("azyhbexzlcnhlsnahxt", "ZKISXFMBohXuLJLmrHPxIxTvkMuOuopFLgjwYMTCdTWEoLQWLZZIUwSkZZvRKUWwgvk") }, - { XHDR("bmonoecocbhajmqjrql", "FZUeNBfjVawlunpwenxSAKkcBFPyrgOWfftY") }, - { XHDR("cwqkulvuozcymvb", "wVdpDLKpAvGPwylripeTGnbkQMTB") }, - { XHDR("ja", "pJBGFpYafyBjKMOaFlXtYePQkSfjLHItSMe") }, - { XHDR("yglfakudfzgnurh", "Uronap") }, - { XHDR("df", "aYVvyBDxlVphcnGFuyphsvWSdLRVTPScfoSPgQMqeDLCeXIQ") }, - { XHDR("p", "dnSwfsgiTkiDcnbqogybPbfqKUfBDoFAInuYQyAckCznTndQptNcDPjgXrFwlhNjSIi") }, - { XHDR("tzqkqzlr", "gkyXpglQsgmPuSRylEAKOhqIDDcpncTZMYFPKSOfpmpKNJKyYYEdmbIPTNEVnStbCDMAe") }, - { XHDR("kumpg", "JPsCMvSncN") }, - { XHDR("dtwyno", "wRrYnOhFGKKEbNtmFTCfKvgmBABdGGzIzTWhudQTJuaUJQPCPDGBCHzOsPCjUIOOXjYriAuWkJKpcIdP") }, - { XHDR("rabyvieftqzaknqk", "LGoNmFuLWTgqcuRuIxHcsBFqQiEUNmxnNwqdGydqrbexKNUrngBMJPwKaFDOaVInb") }, - { XHDR("aahcxc", "SPmFPkORPSruQjdQaNOJmXguLWNEyksfFBKmkEfsEbJwvNCuUaUeIfANk") }, - { XHDR("qjjdldtosvhryc", "LcaMieUkorpBOgNjkLYCFUgVVbnOuBLGONKKSvtWfyVqNwODvdVuYfbmuebbePYBNJuQLFIAgc") }, - { XHDR("wtpovktckcnt", "iEKcgfjExuzwNSfrlYolYyvCSuoQIDbSRcBcCGxjaoeypLsnYmmWUiKooiMsa") }, - { XHDR("rebtusgmxhirbqcj", "dKHIvikndOAdwvNfDasCZuIXAOgN") }, - { XHDR("zhvmbvyiyjr", "vLtKCymmxFEknzMRRGPNOCpZomNnuRe") }, - { XHDR("gp", "VKgHygHxugkHqFSlohoBOBMbMUuhMmEoauRepNANXIYRtbAYRrFdSyVkEqQiSvMTNlIWAhgsX") }, - { XHDR("wngjhtklfepvxhx", "CEddDmjkArkeDbsrxhvB") }, - { XHDR("epyj", "wAvJYkYLWAJHErnqJtjxPucMcXYfvqdzkOIbBgG") }, - { XHDR("qbgylvewxdrtdl", "kOLjDAbjESpDlnsyJNymbNRbDEqBLgVS") }, - { XHDR("zzsaamcleicvh", "OfvirZlqTargVFwVlgXQnAALqrrKUIrLAKb") }, - { XHDR("efbjhapsiexucyxyqg", "zeSKMBWsTfOIqvuRCxK") }, - { XHDR("xlurpcxewjvpvfcdhfl", "MRufRGYeWVvZpRyQOKuBgrTodzxJiUGgsBGliDYUaekd") }, - { XHDR("pov", "DTvhxdOghGlfSmoyQQHYFmdQNZaBXuTkEqznqqVhGNYNGmgaUPrWF") }, - { XHDR("fwnje", "ZEpWzDyiwmpyIkGNWTTXFmDhJkTbVcvnwpNJxTNaHjxLYrKyBCcinV") }, - { XHDR("ikptysyszpakt", "aSjPXINUgkJlocPEflNpGKXgwhBZDRUMLAo") }, - { XHDR("pjkocjceqjzrrm", "sjlFvzHqKBQFvpRrrcbyUhSGbDFfcsSgvLbnCkLUSlumOJkCDKwCjcoyrf") }, - { XHDR("gvrsatunnldsozl", "TgzlfNaLsAxPpMpvBmPmmCthBgFwaEjZUlIouVSLEMOcXHlPVsHB") }, - { XHDR("gljiwewqcp", "HccrBleSwrKMrrIVIzaGGaAAVUGRDUZgW") }, - { XHDR("kjylgenjuvqrhjygqd", "zgnsDsEKDTUOAyfFqDZiSpKLZcZHHjVGqRNlVEtsgFZOJPJh") }, - { XHDR("gcwtz", "QhqgnuDxiCgJldrShMXeVSpsRjClWUeSieVScSBgNYPHhd") }, - { XHDR("d", "BAISaDgCBNKUUemTvVKzxIgZzDvVYWLfIsZM") }, - { XHDR("ciyntloigzulbvyea", "BsQvRxUDwlduAfUxpWiVJ") }, - { XHDR("aajxnccrjkbuiylemwi", "jJFjHDguJCeOVigxskomi") }, - { XHDR("c", "GsFNWRfaimnXFcHI") }, - { XHDR("nafhzvjqswzndxgdoymx", "CHPWmHhSiOZStlwYurBiERjFhkeIbdrHKObVfnJaiROIFkkLsnbVwphcHmjehxCFfCqjT") }, - { XHDR("opdhxkybnezinkvbrir", "eyhPHIHUrVpKLIaIIdThgiCdWNmGuRWUysleAraUqNzovpbtqPe") }, - { XHDR("ikcwmznzuqnnk", "ZXVYqaFOluRmBZ") }, - { XHDR("lpwxvqemelwukekxhs", "EScKTuxYJLtAAhzQxFbjCLFraTKqTcvGfJUcMRGPLZShzyVDuELCRyZDxwBXXMXTtlbGMU") }, - { XHDR("jxua", "WoYDdXsPnclPLYPPIXbKNxuxX") }, - { XHDR("ftoarbpjfzzjoqowwpy", "EKZJjpQCroSltLeOIjGDIAowfAjQRJGvOOGDCTREfKQFddmkjFdzopAZFbWqvHQrNwTiQwNgYUbC") }, - { XHDR("pzo", "EumZLrkBQUg") }, - { XHDR("jfqyrcoszmebkuoxzn", "hlVlngJzNevChmYcyOQSwaJOQnaWDIPOWJY") }, - { XHDR("eeurzfjayyhxaqmru", "RQfzmxrWEscAmqjGMiCJvSbJmRJNgVAXOvdKGTMzqTnJnWGX") }, - { XHDR("tsrcymmxquqwqy", "JJLerwYyeeywKJSRZFXJzYwEJuOoHakclVXEqwCWsSBQhqcErX") }, - { XHDR("fijwgk", "cKKtsowlDwjC") }, - { XHDR("jjfnfyuiyuhm", "GHIwuBGfrugnI") }, - { XHDR("wtqb", "YpoBFpeBPcchMcJxRjzAFimSBKWcsGYbKBoPlxTiQxTWEWdJICTQSbxE") }, - { XHDR("vnivacotefhninwodh", "DJzVI") }, - { XHDR("ncjbgtoxebqr", "dkTUqlNPnPgHxCxAgdQcttAsVqHUtwBSXGRLhuZkjZLOpsUZBwFHijMdvGKPpeaM") }, - { XHDR("kkqsaowldv", "YwvnBqZTvuVZhSnE") }, - { XHDR("vjkf", "TxjwptDeVCaZsIbiabtKNUnQllrnKMYTYZfOUDBsbwiAIPSPQWpmmkUPRtgdZskuRZ") }, - { XHDR("wtbce", "sPMyqAtTHfKnLVsVCwZaKXGquLgWczUnpzWmkhLiwaeklAPnrXuVVLbjvuOCkiYoPv") }, - { XHDR("jmnwmvxtzieicoe", "jzRPfXBtdSRbsCPjuNEttnDioryCmuvJQLRKCnVBlcHNGmeCfiUharBq") }, - { XHDR("syjjjrgltlpn", "vsSnANJ") }, - { XHDR("alzmos", "lYxcSdBObhPqXxwTTEDarLFYG") }, - { XHDR("hs", "nlsJmDvBHdcdqdQwtYCeTBG") }, - { XHDR("wcumrck", "ZBbFlxPrkkCBAmiqaXucOXTqvKLMtHKWBxcTDnemBPNIsVOtGTRYIAakFBlFLMHysOtfGrpYGrLkYZpD") }, - { XHDR("kta", "cPpYeYzXuucaQrTMZBHfyKotpKKcoMqu") }, - { XHDR("wejgkzugqtirktovqp", "HdZxKdiyfSTQvljgSLJNdinrKbDvSqWEUnMSiKmiFGFKhxhzdrKMwGC") }, - { XHDR("yfvzvmdees", "hbJsDSvtvTEHyDFPAXWZnLRsbmCjGyOUfzZgMcjVthxrhRlTQcLaomlnuJbhxDIptl") }, - { XHDR("sjzeffqplzilriqqrdqi", "EIeKMwFNTdojLirFXzHggb") }, - { XHDR("hjewfukfgbr", "qXlQNWes") }, - { XHDR("cobqewnivxi", "SjpCNlgZCdWAllHcfznxvDlruqHbNAvMTlUhiwULaHmOrcJiAcd") }, - { XHDR("njfcjttstskwzpzxz", "ddaqcnYrSSgsEgWZCthwLmxshfNocWdWWDYDVdpnQmvBIgfdsbajMKffkNPCBZxEmlk") }, - { XHDR("mxppgxqtfqegytaznp", "sgqskDodCPezg") }, - { XHDR("uyojaflhhdlpxmfq", "HifoLXymBlhjhNeLDRirVsiSbrIjzGaTWQwIywJKCoh") }, - { XHDR("gsofvovauq", "xkubOsfJrfSDbgTIpdKQUFPfDCtnaxKwacVSURfAJcGCgLcvBnGYJPctssISKvERlVaB") }, - { XHDR("ujg", "mXPSrNPufuXLnfKWUSHt") }, - { XHDR("znvikw", "PxsdpApdCFDHPo") }, - { XHDR("rocfdyea", "mWriqxrQtsCPsfozIoawQAbXiOyAhGAUMehToTcKYLXNRJdvojqPUWwWNsKdctcBZStmKGKed") }, - { XHDR("dcwinhaqtzyutwq", "vKXKrTpGvGwptTKcDNiypOGKLZopjcagBKlbMGSKvIGeuxuWJhfCSZ") }, - { XHDR("fhbizpmzlnqq", "sczLpvuVUqRroXLBicrxMeHBjgkd") }, - { XHDR("xrzondfjklupzwqc", "QLoFOlZayTQJTGiegBdjarzZWWSxNtQaJdDibZuORLXPzrTBIRpCYzpvLg") }, - { XHDR("mwxiqlfdnajitykeq", "xVrtqrebdEkHecICiYBgtpiwfhMvPZkfloRRNrEjkJlURhXgnettd") }, - { XHDR("soeswvpqv", "DOKNQtSOLvnXgLdFobumJFuOlFbrBRFJhdldwMaKWPftYFNsbzKqWBFQIZeTVsVldjaVKkozzFunDCBr") }, - { XHDR("uagpcwsvnxvwdpbhka", "tFWUDSxhmUBoDBympbrgFjRbVjppgpaVasDscyIuQW") }, - { XHDR("wpjahpbsdwbpnmmswz", "OAIrwVaEbcZdqZC") }, - { XHDR("yuimzl", "lGKnuJfEdzCgLqaihemmIsRvMqBWQTKUjdBxHSdRPFwagwLPdiaFPCjVfmosZIIDZMQivRn") }, - { XHDR("cuz", "KLawTYJVGyOwqJPpQboMxHHheFROmuXiJ") }, - { XHDR("ciqiik", "PsyzwPjCEvcxsOzNtRlCkZ") }, - { XHDR("drkjarjuwen", "pjJKmylWrOCVsJqiGjqAudYznIjsiWdXLPrRjsVeooacYdLRSmYDz") }, - { XHDR("wkjtqdsp", "PNzyBxssYlElBRBjuFKdXyNxSMlmEhxLYqYJogZJeBaVwUnXcNjnEHwBEOqplQq") }, - { XHDR("xsxibgsltaminxnkt", "HUWBaAEMastvjqGbpXCqWYFQbX") }, - { XHDR("vwbulfggwbzqyrwgbrc", "JPOoEPLdBKCAtxplv") }, - { XHDR("ww", "LqGHyyZacIYYlzJEtIRyqaKgnUmElrjdadnwZEwZxEVhVaTIvtFRItfrjCvEgw") }, - { XHDR("vwclpmtunkdwhazsujk", "kiYquNfWECxamWj") }, - { XHDR("ty", "hDUuHWHYGCRFuYmzUrqFAy") }, - { XHDR("vppabmuantijeetkrsw", "xuRjIrCLlTXjPccaejEVVLTeSYnXqPeRKBIJOdWiXBWUCrshMrEbMCSpyKTtrWUtOAsJUtyqFq") }, - { XHDR("ijhtpgi", "cNzbXYiCluMDqVYmhRkIqMmYZZIJPhprtyZivPPe") }, - { XHDR("jyamamd", "SlagJhorzmpVWouT") }, - { XHDR("oamugrpmc", "PbeIqfyySyEMHMNwFytumJbqvBp") }, - { XHDR("tvfefuu", "ONseqgzhUXKhZQegfYDUjOimglyJouzEraqqFIlUBJwVuYfdanaYsQtFVKMYROFG") }, - { XHDR("itztp", "SHiJZsTDOhZrIoDKtxByckZcSYzmbIbvmReYazTJlVvzayDSkvV") }, - { XHDR("yjqadzotvntkqnlb", "YiAiuRdMLVsJIeUDNSpiZKUukOfvKIycbCPqyeWfhvVUrHFPoJNO") }, - { XHDR("wezxhnvhkmsndjvgni", "djaRFrJLsOUXVevFFgnfVXDPFdSGlWEnVnTkHHoZcXAtTBqaTlBgyzFy") }, - { XHDR("yemkwklubyikocalz", "CQCYRJkxpQegLcRnILjHTUOwlqjXniyR") }, - { XHDR("eqxvokqlbaydja", "HArzvxVeYkBHOKuQJEVIhnZMQEBxCEIeZNfDSxvgoDSwXhSWFAwwYtbeztDstGTNw") }, - { XHDR("kveyibidhvrovcqn", "yAZQKpFuLceVZjRxRdWsSouxhSDrtUmUdhQaeUimRpgeIbHKWY") }, - { XHDR("rqbxcsfjoovqn", "ruMTcjGuaMZmZTqNbVeVZohnyMdPGEJT") }, - { XHDR("eyfkfmrnymp", "hgKRoiUcPFQutohffOKXjzmFzTnDQejXnhGRBUbHmejLDKQcvQbAQSJvdPsBuZCD") }, - { XHDR("xnlhwofnkygfdpcn", "lFRzieQkyKPhRYXdfrcOVXeZjHLejEnjIiATMDDhNalfZT") }, - { XHDR("bqeaerbqycrgiolaxwq", "jvkWtTeLeNvgxWEPIPeWepEbvqiNUfdzGBksUowmDqLrHxWgJKhsxAVSpOFhw") }, - { XHDR("meemqhkzkogqkkl", "CmGtlVvDBgvVNBYmsGgLDmmLDycQNkQZpthumUWEgQALfpsYLehFsGWsIUlnQznjWtGacmlvFsWXfh") }, - { XHDR("tyz", "ZvNDSmtVUcaktPkPqycJWiEnTMK") }, - { XHDR("zrmilsocrugewrzvcrv", "bLwLqcXLOVAXSJRYbpAeKBfWNrdZPvYykDSebzDDzxWWCdLdlSPuIxPzeCH") }, - { XHDR("cmcbzswnmtwiynj", "SUTdKWJvXdZcxJaMnLfGIvwkhmkElrMPXEohwGpIvPDMxGcUjnsUhEx") }, - { XHDR("az", "ZuRLvlChCEWVNKNlAgpMXynptlaaxF") }, - { XHDR("czb", "XOYhJkKGEjDIdPuHvUncxjqTNPspaapAQWAZdEFOthzKNkzJwFmbbOBNcNxKwYdZ") }, - { XHDR("wfqhcnbkkwzhpw", "eeOCvVFJjgkVBKsEuPVkGMgXcSApHoDWXh") }, - { XHDR("pqzzzuetuzomjufrab", "HZhPatpcfdtBNccwvBxnCKePIzQntL") }, - { XHDR("bzqqeju", "YOwxIfWD") }, - { XHDR("ldcvzebjnevaa", "JXlCimTHMYyhkLoirwUVxRuRiWjaJqeDpooFPcvqL") }, - { XHDR("giquefaygdihxq", "OpfnA") }, - { XHDR("eykffgpcot", "dmiGDSJxcbksAxigChVGk") }, - { XHDR("chgwzbacr", "yhFZSuunftczpQtqmWXyxZSKuZsPVHcfNIOazCESiHeWhwDEvfaDPjPTEnLVEZi") }, - { XHDR("js", "lMzUeZefZbrnyaEQIIFTzMvMzaVqlYuRbfCzUBiumTCnLMGFLcQeZDavqpnHYhfiwifeTOgiRIh") }, - { XHDR("adywtnnjfeekvsa", "sPtnXGQWflgfJROpyFxpoKinyzTluJuJkWoQoIqGnqdLQ") }, - { XHDR("y", "oxgWVZdMmQaosFObCuXanyPSYvOQVgUIPdnFiNpnMupXpfpzrLlouXn") }, - { XHDR("tbdsuauqoqqysxizggu", "keoUhHGrVMJpOFWczApDAtDrUzaaowtSIuyYcoUynvPRvKghvWjEqIZLyvNO") }, - { XHDR("bkywddzvzmzrqjky", "kQTnhKowgchBBuA") }, - { XHDR("esw", "rmRItvvVIJxNmgYHacDuTwL") }, - { XHDR("shykolpwycrbmsrraoe", "qoGwIaUwtW") }, - { XHDR("cvbqb", "IDUVplDIeSNIwsTfwZLbsPQHopIExgrgBBogx") }, - { XHDR("dprfjizllopkkbtrrpdu", "yDdsr") }, - { XHDR("glczqpzoc", "vrbRwkUAHNYQSrYHBzoVdrtdOMhVZdxOofekFiOGHzkEDrjaUFffVuxyZvVaoewdYyvfDpxXNvekjRVL") }, - { XHDR("bgpb", "qqLR") }, - { XHDR("luxrtgqatlgxatrwam", "kOqxViQvBNWUBGDnqkZWhAiVrxo") }, - { XHDR("kmsoagundgfokbizuaa", "KZseNpIyRujSEPausnmqIPnSLZDmllZqGObVGmlvYslgUoOhTrPqeGQFtOQpppqBIsdLwxVkOA") }, - { XHDR("db", "hbtcqmvkyMIrxuHaTBVCcqloqzFsXcnpjwJixLVqiuFiLfRUiJKQEMkCnGwTdLYllVIyVHP") }, - { XHDR("fdwxmlzuvb", "ZrwSLlFItzpzKbJDFlrRqKBiRHdYGyMjkfMuBlAPzsTKFdwFaOsYOQyiNGBeCExnkvWGNAzqEu") }, - { XHDR("gduppbueww", "ZmowwSExrKIfrMBAUHzcodlHUgGgONSLOCzQHgGtVPVxjXDKkpJIZNotYNxJoZdbIkOyvjaXslO") }, - { XHDR("ugldzdc", "fuvOCKySniOEtErHzsrBTwKRFNKwebzVhfVPPz") }, - { XHDR("nufyxzgrvjnolpz", "ZcuIlQKFEcKvlSsXbTaRUupYfnydEKvAWEYBeqTJVqziCQtmMhDeSRMuBpOqfr") }, - { XHDR("grnambeghduwvf", "dOFlWPhnPrxsOiXCIAgpq") }, - { XHDR("t", "SVlBuhmEfwSXOwAxkGBYhRNReTqDUrq") }, - { XHDR("xuiujffs", "AyNzwAEhzVjmXNlkXkfoXCerenksMWKajkFdflfuGb") }, - { XHDR("ekbnki", "pKvWoWINLmxFojnLfJgQjNBCaQyWtR") }, - { XHDR("wsuagkrwlwgh", "ZyDJFPwVYXGAXvykiqzVbWUrozlMJWkNYdGcNIVOwQSwkccGLegzdHZvZjvFinKXVLZc") }, - { XHDR("nwzrcxiwbvujcwev", "dMAevbtuCUWuTFfBMuOfIbOauNPrYqhAGtFtMUREzalLzp") }, - { XHDR("jdhip", "XUhxAbBIrKpIKtcCtqLzmheyUyMQGJcISYoSUGmoJtDzChhDBeqfD") }, - { XHDR("qquwmzpvuxvedkvnjcy", "PhLHCREvsllTzKhGtwxBTeursRtZzkCddSoPkmiMekBrRPL") }, - { XHDR("lnzopnrftbpowpqazj", "LsfynMxFWtIIzTUXenTlSnHELIvsqnfNAUqoajtEHutaqYnFRRfruDwKMhtMDcwydPISAwOK") }, - { XHDR("wkycn", "QaclzwqvLmvUdfmAHMPIUTlIbxsVUzejg") }, - { XHDR("ntftcaolabrzosc", "XCaxruWDMGuokneInnwHtxyzWVAuVolmEQ") }, - { XHDR("csflssydcdyr", "PSYdFeHBVXngTlEUfUfboaFHSXZkDfYlrevHaEldDqUNmQzpfwJzVhnaazEKZLbgbNmdbHBSoVjLL") }, - { XHDR("y", "xGkSPbcuJpvUeskYNYavofvwQbGbOqTYHkJGTrWPHdUOPcKdIceUsrmONliNDwbodukMgdNCY") }, - { XHDR("qklvsmswkueghwstrw", "vPUFMcXyxvjseqDHHafeXJWjEQSquOLvSglgKrmDCerWEpPmYOtldioapVkWwxsuuRbodfmFcaOiv") }, - { XHDR("nkr", "MhvpalRHAhCTpnIyIqtHGVIXDcWLGILd") }, - { XHDR("ttpvcxeiekpb", "pVTYapAKOyYAEmsEwFHg") }, - { XHDR("z", "nnnsQbFhgApcFlQYsGTXjRKEVqRuseEgkEtftNafLEQPpcIpiLKjfWCYZiekTAxF") }, - { XHDR("ogxsabbet", "dhXsFxZqGbQAAnhPnzJcmfyUEnPkAMTYLMuzgbVHIMQdsYJtf") }, - { XHDR("ua", "HtKUXMEJxVbsCqTNsxkUIA") }, - { XHDR("bcdttzu", "xhwFhxdxmlWyWFostPiurJqHxPpSrhnAHnfqfgjpYaGJxmGJvBNNstsxibaGrtFfuSpi") }, - { XHDR("coavaorwwnjkhmafz", "VHMlktQeTRkexOUR") }, - { XHDR("kmngnphzqrwfsdp", "RpmCucncicmgznyWPhtSKYYjTdKLLPYmzqIhIBvCGejbwtkyHIVt") }, - { XHDR("unnhptrbpgwxordqk", "aTyTApfetQJeOtLv") }, - { XHDR("ytgakppsrhlnmbi", "sHaHunzXNyShDtjaZNeNfifDux") }, - { XHDR("wbxloetjjsf", "GLFXTiJYjRhoekFBAimfu") }, - { XHDR("keyemllnokwqtslrk", "WNIzQtLKTBbWLMnquQrdAtwBqkIXtyeeCjjfDLKyaYlN") }, - { XHDR("grdizofxzthwuvta", "AozNfkIpzRSGsayLPGMNKjFSyiAELHDGflmMSyZsmtOPwkvIqOyiZgHdwy") }, - { XHDR("wipqmchdutmozdkuaadf", "xjzKGNdRDrLXCbuCzZFk") }, - { XHDR("jcfjyghlpifzotsasnr", "dWeKVLFUFjRSOpnZHyJhuFBZzzoEcljfxprRBF") }, - { XHDR("sbkuzalyjdmduqj", "kPTHemvRjceUfpdQxxrmpJkKxooTaEEAcQd") }, - { XHDR("tnz", "AOWktqXgCkdwporAsMlqqYkLxiHubTVceIH") }, - { XHDR("hqjedgbngxxhdsgyxj", "Tz") }, - { XHDR("czxjxivy", "kGPLRqjWSZmHfqyviRXvnzV") }, - { XHDR("ycr", "XletSwHlKjAUahPboWjmhIVLmpLmCVtoZDEWizvwA") }, - { XHDR("lnvcbzzzopwt", "NAgtkOJhOlmqkzSnhXBuMjUmtfYURfBCoTCKQANUcbLHXroLZrAmUcZu") }, - { XHDR("nenpebfsapitihvg", "MunAXVNaRxaDIRneChGSqoJPInzhwuQjVskUWEPjxWyllcsFqwznaheYAUzsbKoIGKZ") }, - { XHDR("ruprhlywv", "nuJHImpONbZKCkFeBbDWnJGOtTBrwKho") }, - { XHDR("r", "NVLXI") }, - { XHDR("smudpjkifjhwzoje", "RGgQklEoYaRxImLkzozzOgxpukJivMc") }, - { XHDR("xeozprscjfhswzecsajt", "EdX") }, - { XHDR("tt", "dTVHSSZNjHFQnjRpKSUvSNGziPXGUOmLrEcGrevaffJbTJWkBTP") }, - { XHDR("gfandmqbxom", "hRNwgdoItfIYzjxAszImKEbwmaFNajFgDyIBYppfeFScZdYWTRUKsOhJXytMCyaNMqchpWZKROfVNe") }, - { XHDR("l", "KHeeaLtjdIRaycocbREXsbplRFscXBvcHmQRwYuQQtvjg") }, - { XHDR("dhbw", "UagQlAFyMilxlXkOsDZQRHx") }, - { XHDR("v", "AkdiVqrGbRFGGxhGfwHYmOWcYBVPFXSQLQUGHzBQkndzGbptadEcdpfUd") }, - { XHDR("fxrudz", "pzjGUgYMNFqHsghYlYWZkgtOBRMrqTDEzfPlipvLDtoqApdVuwStYwFfowT") }, - { XHDR("zbcpp", "WshnkVVZTYJXgccfWVKPBouEKDfmVCgKNsiEVbMoRBJQUBuTqNLCHmKmsXHXW") }, - { XHDR("mwkcabdmrlbl", "DSaZmMBhtrzfTsWbmCKgtUchXAxDkhaIvfnQDIXIvJbcUP") }, - { XHDR("boweaijqcwjqlmsw", "RFKclTECJaxiDfZEgk") }, - { XHDR("q", "mfRvHGpeMgONUnwORoTTUfoPEZBEqlGnAnnPFHcEiOwMm") }, - { XHDR("sittgweyuzhgqrr", "DZHMjNscDYOyADkPyVlQCUVfKnPSyUA") }, - { XHDR("wghyyvarydmkxxtuce", "msdPosWMWXHWDXUkAzybWCJedTHFHlhIyodfOojSgkWRssiwNIvlYJRLeWAzEdDty") }, - { XHDR("azxsnwxqmgdmrtcyo", "roZN") }, - { XHDR("latewjydsbuy", "TGCJjltdCVzqmybTNHWKQrBYDuvyamYNtieiuEDWQrkPxhxvPLPCLJRIJRZNlixCfDSFyZganHp") }, - { XHDR("tyiuuqxvweeaj", "INIowBXJG") }, - { XHDR("ecfhuptramdokfyvtxj", "gFncNWzzDqMwIfQeGBraQGfoekfcVSQtHpNKIkdqrPpUeycNQcrsUN") }, - { XHDR("bxsel", "RIphlEQpVrlrxnNHNAMpWdehbnomKNPRaXdUAYiXKuOKFuNLONFkuBRPJJQmjOAxwhRcYXhhowERu") }, - { XHDR("wcjyvtcny", "KuafCgdxWVLratKZImSjYVPhmNYluWcPKPcTivpxmuhvGFNIHDBRLiXGedCfDPKzmivbljhJSScG") }, - { XHDR("xbgazeqgvvsb", "LCfjAipxHNPAF") }, - { XHDR("wxxkdzvwjfv", "KmwdjfCQP") }, - { XHDR("ysebo", "bXCWazWyTlovnpTsVkRwuaoYfp") }, - { XHDR("eyovm", "BRwkOzMSrgRJgFWYNeRvUbLpanwFBnr") }, - { XHDR("nynsmzjzppq", "AEQCqIwXhGAdU") }, - { XHDR("sim", "ypXOuhnCekpbTAY") }, - { XHDR("elp", "qt") }, - { XHDR("cjzdpbwzebgdqv", "bXpcBByLc") }, - { XHDR("rnastcp", "SLyaIjPFckMuEDUDRKxUgSLkBnTWMlDgCsEWmSljntYRcoS") }, - { XHDR("anuevan", "sYBCrvsRVbhrPReenyoPdKQ") }, - { XHDR("uuryykpytram", "TrjNTdXJdFfCecNmB") }, - { XHDR("kujpzzlyuwwhbdbs", "KAAHhbDmBHoETtdwdWvMnfKAgkwwtEZTBxfxOoxveEDNMlxJ") }, - { XHDR("dlsbcvjqka", "lNkwDbNYNlhpcmjtvnAIPMeQUdtdQVpOpJYqMobiskFSCSBFFlIqpGipilszXwhkYNulxCdJxWBtj") }, - { XHDR("gznllexr", "vbVWYgSQYgHsqqYoDpwNVBjVuWkVovmTsoMvqtPIptNYRFxnvm") }, - { XHDR("rv", "LmFQnruMNzDmWABeCdXhmDWAUMaIeKSQkeIoxmZHoYBsrNweFxBKQNXtOI") }, - { XHDR("cxyfppmz", "e") }, - { XHDR("zkxucwpzv", "VsEnjahuOniXzQdKpwRteyqSYPNZifyqLyL") }, - { XHDR("e", "IyboOCwIsjlsfUGqEUEDfKGBgPnIjhQnYErq") }, - { XHDR("rnamgtukmyhs", "KXxFyqVyOOHXDsGkYiOJSYDmEUoUvFJanXPmxaOaFHvJirCnwjHzUxCAuvm") }, - { XHDR("rgqd", "CzgwJQPBSSOGcwkSanOEgyKoeqelsgtaUGKChZmfGqHjmPyqaHHFmWWX") }, - { XHDR("glmpokprsiywr", "xycNYUjnPgnwJzbCJsgydGBGSACIYBfmRaODmOZDgAjXRxdEftdDicTAVREFmKdlLEvCypuzxAux") }, - { XHDR("auihvqwk", "JDxLubiQmFOUdaYFVZMDRcZbFvjevILMNFZSBfkhG") }, - { XHDR("fx", "jzafJUoGargrllyZNI") }, - { XHDR("nualclzcweui", "XmEYoMvZpNChFtCuAEvuJpqnKxHyNZUXZYfoWOmqiUqQYxLUKLqBwdoUCs") }, - { XHDR("fgnuwvpoqmkat", "KunOKnickrqfkHKfqEbuSwiXPhrBQTwBXbuoKMDRgqxsAfrAiiSYG") }, - { XHDR("zrsqr", "UlFdaoSsxiguxuWJBWlKzMEynVnnBEefptdnPiadcZZhgPnCLkkPckEgNJKvJZCj") }, - { XHDR("ywbufpiabltcfn", "bhjTFoVyuPkdjzUYhenlnWNnXoVulimhedfjBM") }, - { XHDR("svfbvrzpuqjcjv", "MWXau") }, - { XHDR("xxetsyhbzfzgb", "AHyyUNXkUzgAPuluWcPpKocZ") }, - { XHDR("kcixw", "PlCCbUbfIpGtleiErJzIstrFqjDeVEkdALCfRPsxAcbTTzsjnMvfaGM") }, - { XHDR("kwwrn", "RXiUrkwqCVaNTSruT") }, - { XHDR("mrgguyhtctsadhxqh", "oCeFXkGyIEPNvfhKVzTEaysbgTfEsNpiiRpNiYlECOiNDwTTMpKlKiwhVo") }, - { XHDR("jsoma", "OAPAvvqocoRDXoGRQgXpwldUnSZYUVhIObQrTZFOXYxq") }, - { XHDR("ueylzwlsqmc", "TjjvZCJBmKogzlomg") }, - { XHDR("ne", "QdiZqkmHaKNyWNDmfWajjVAIMiyCXUClJcPrvOazWbJYtbeEVrGpgOLozrZMgUqOrnSejjzKLnRUryvp") }, - { XHDR("hvxfdlrhukkiogisy", "uZTECnnvjGSyJyBIhhUuaGmWqsAIGElBpTHxlqrHy") }, - { XHDR("bflbjvaoqaobuahslsu", "PaNIvDGlaqMBywgSrUprlmihmFbywMyfzKI") }, - { XHDR("cxyqsjuhiyhigm", "uyIqvpAM") }, - { XHDR("xjdusxbbre", "oNfPNfXZkmpqbOogxwWNwfQ") }, - { XHDR("lw", "JwCeYbVBZggLGDrgYLFtEFPLdJJmghYjeWStDKFoVb") }, - { XHDR("mszevapxc", "owSTEGlKVppOYnkWnLyYcxECTAEtuAKymZKCrCQHMOaRpNoSWDASAMDPtHoytVLbcwqqdN") }, - { XHDR("uidcojdcyygrvjc", "gvcRdkJeDmcvUFnWCrG") }, - { XHDR("hajxssmfrt", "qLlvFIGybuJqtYAomUPZJqBFwJtcRVNyeZBAOOxQlUCkUPZeKIIbWWVCrVlFyHBBwKNIGwbouxHjInRx") }, - { XHDR("nbvqcgnwcqsleptext", "c") }, - { XHDR("aqmkqmpuohmsktfbevrq", "MZAbmfQZMjhotTrfaaUASTXcjuiBRLKRBCatkZePYBBI") }, - { XHDR("hjlciv", "yzKVstEJSkRXfIAdyfxBYYcqlJhEFwgRusEcVnlXPxMVLvilDzWeI") }, - { XHDR("pqudh", "PqGPtPvrFzwUlOZDUaRKMbFqDzWybfpFToVKDOHEqgZMKaQdhpXvjeMIkjEYDAENRPrnLKYaoPuSC") }, - { XHDR("smimlo", "FpFEgeRwJmLmHIxdWJXDOuINCIrErqxKjVOCMkNsjyQBdGBryGxSPluIkt") }, - { XHDR("vjjatt", "ioEyUtFnPqaYaAkb") }, - { XHDR("hmga", "QkMRpGofgySGhQZznRhXRTEHvRhnvmUNSb") }, - { XHDR("cb", "nmzwQFEislrJCYnMnzWcHJzcZkuVXCXZLJmImHkKNXeokZUsimsrmPsSnVWDYxc") }, - { XHDR("jweeeebnfek", "jtNDNTeQOLVYPXhIcgUYiaYQYwuPLYzbCoCgFSwjzwLdqVVakLROojRvoQeGwFuFD") }, - { XHDR("mfqqohwvdknyb", "EhyxDuzwRifiykfgSodkQComrlOultcfBcaclGeKENZyZFEDtrxIFdaUMoDQJgJgYNcR") }, - { XHDR("xhrofquqswvbcf", "CakQxgdVwXsfRZeihNnyIsiwqywQFHbVFZQ") }, - { XHDR("kyqtcruybztyquglh", "sTFHPUIpTEYsQHoYNNHcZVNGkaheMIpnvterADtxO") }, - { XHDR("tpdhlxstlizdw", "TWQBCIQXdLkqgGiwgztVU") }, - { XHDR("iijiyvrigtsjebfwvehj", "QV") }, - { XHDR("ob", "vOWSmhNefdwLcbeBOBgvfkxQKOuwdJubdozpYOKFTuGGLOLoPJoyorsZMQQIIXEUamGZfdQLETNYD") }, - { XHDR("kpbqt", "QaVnRhxndBESuEKxCXWBjLPpMNQu") }, - { XHDR("qbpipamumnis", "IldTIGQgQKahcyjlcETqTnJbHNVppThqYrfnJOdYzOuCLjznuOJEFyeEsZaGRNXPTOJMqWdTjNK") }, - { XHDR("mzbycejl", "gFFfwSLZs") }, - { XHDR("vftzzejhek", "WCrfOXItybVNZRJuEsPODDCITHYfouNOSEEiXOkGbHlMyIxyhSeNfLlfdlM") }, - { XHDR("pxx", "JoXuOLWEQasGrVKmVNIaDSqWApSMMyVNfcNNeXFlcLRnFgBCOPjO") }, - { XHDR("zcpzcscqhehya", "VLdQMTUJyCckGojYPhQVEsIffQiQWhltEYZDhEqXtqAbMmuEvNYLOdUJcKixXMCixhRAB") }, - { XHDR("lz", "qzGOxlgfdJBMuIdVBFlpQTVERhfO") }, - { XHDR("zwpmutrru", "fxdfLnTWErULGBZeqciEdydcffuhaHfYGqYhazcRnv") }, - { XHDR("q", "sCcRhzaIUYMXkod") }, - { XHDR("rnwiwhsuo", "TeWpMubUBfFJOQfYewR") }, - { XHDR("plt", "OlVDrigCaOvhjQQpkBKozHqhYzZzpZpjqloZWBAFHdDmFmrijVUUigZxitWIEOCIoFgujhF") }, - { XHDR("fqzgnv", "AKmgBSsgOnzFkyajUamZYQbXzmKgZFjAnLGaaEIZagBCwqLRSghOYxhqucDm") }, - { XHDR("hyhnnfog", "bJFgGmFUsATcqnRjQoCpxFW") }, - { XHDR("hpewulmwjf", "ZNYiDITzviZIidrZnfwWoNhleyLnJwipspascbgTkccqBIettozWbytNfSvDGNrkXJwkBMU") }, - { XHDR("lakhlok", "YyoogdYsxlQfUeHJEqmRzMKtoUTRPTPQoRyCEFSlOHhlHMNeEFeYKutj") }, - { XHDR("pvgivkuiiihbfrkenbqo", "EljbkVdIYuUXDlasDzLhmVrQiwSnBrcQjCqGiIFoPjmvbnSYXnoGyNeTmLYOrcPqwJru") }, - { XHDR("ovvuxunwcwfcsoqx", "oczGhxFtcGmficEnVpFXWpGcFGJIsivEUZzpbYbHhxCiuJMwarv") }, - { XHDR("vitn", "TYLMERkUExcfZhTkgQkLXBMKfnwUqMcSJQVjiZ") }, - { XHDR("onmcjqajkrlxcbyxbxky", "FFFnNZFVTpePalQgVySDYWwrgDCbKQBEroeqhaDJZWxtTEcDAHIEnHwnItjlfPWrSMeDsdhZZyLM") }, - { XHDR("ugpzbiellfiqs", "LrDwpmVNZLOwUlCHGFepFFznrLAalTfjSlmOnOFeuhYxdJZlSVkytrenzBNFgQvZwGWRXZGwQ") }, - { XHDR("vacml", "uKjWix") }, - { XHDR("yitqsnsryqf", "YaFTInJMQuJvvjEizBkHMBHzsxImLYWIIPiHBmjeLJaQnKliDSlCpIO") }, - { XHDR("oushiiloxgslozcwpvon", "rwyyWjUxRvjmpZaHOgqSMACejTtletaNpOuTYDkEzXzujnZrL") }, - { XHDR("fpb", "nCoeVzqiBzCMKzpwZrYZMMaRsCQpVBDSJssulffSSwlcqNAgBZtVwnPFOIacQHe") }, - { XHDR("minlxiqocvvwgrjppf", "IiPtAuODbQsHtPaFfi") }, - { XHDR("ccljrjmohttymwnsu", "UfLRJwzxDowIvyNZEKQmMtcABRYWYSxdwysMchNRU") }, - { XHDR("ttgfhz", "glJeOWBnZFHsIGbBhJHqAmMpYbCWssOMDMZiBQuCAVQbrUpXeUpEK") }, - { XHDR("xvevlgt", "qEMZXIccaHVbuNsOVBvJPXbzotewUWt") }, - { XHDR("hhkpjlhkuh", "uBBgvMThdbfcLuJGBzKqlyOYythknHNYCgFJyIkzNOmuJdNjdHQJbsyqdfsmvglQEqrvzlY") }, - { XHDR("jzg", "Q") }, - { XHDR("wfsuaxepkmhcp", "iBalIlCmlgAdXCYQXZFqKnSQ") }, - { XHDR("ezwjd", "DUhlymDyQqpHKvXsecKqzjUvaICqAfBmWEOHSkIGlZFpnmYObAmRtYANXm") }, - { XHDR("bxaojj", "eEtTjUJeoVscgEavFlc") }, - { XHDR("wymxg", "iDVFl") }, - { XHDR("omyulqcvcm", "GHnpyiSJSFnuMEvTONQgITzwigBMvnHWESdhTOuNmcCdFtMAorfZhuAkUih") }, - { XHDR("cgdltlhrohycslvpxez", "SpeP") }, - { XHDR("yxfvcsc", "BZJHvYIbhJlTNtwOMKwbjYFFlY") }, - { XHDR("zdk", "tnvNmZqtLBUxAQMnfRHc") }, - { XHDR("qcanzaqevhxnicfde", "VV") }, - { XHDR("fxtvkjgfmqin", "qucttfPjeNNJNdQOMVSHlSfK") }, - { XHDR("iworxqwu", "qnnqHhsslvCHJJglzaqNsDdiC") }, - { XHDR("iyfbxrifkddxholtu", "zEdF") }, - { XHDR("tsruanbplbemqugnlriq", "stemDAFiIGTyHqFdoOpmMRlfEnCcTWvVlNlfOeuHSttcvTbDWrTnELUNepakkYFwgJKToISftwrUPPU") }, - { XHDR("pnpuhokivcadejssvnxa", "xButwFrsrFFyKfPuYnVsSmVxEXQJzMbyXARgyCVlOzcYdImg") }, - { XHDR("gwjsckvghdm", "Cd") }, - { XHDR("wksltjhi", "jaPGtJYLx") }, - { XHDR("gntjzgy", "zKCVuQqxMhUO") }, - { XHDR("g", "ZxzCPEYLfbEeccSUdltlofjANZdNAOoIfxKmobuDRZdtfKOxIeA") }, - { XHDR("ewdufxt", "GNPjANosOQHUwMvlBxFQFkkfGbKcEk") }, - { XHDR("vhaz", "ZdkRnIdZYmNyFUBlcRcB") }, - { XHDR("uqbbxqmam", "dhlgzsLhbiTRYFTQQpIFSCTtvufcbQMGJOzqcdwYozFEPUtIFrdtrYpVKmuQjTagUW") }, - { XHDR("tfundgyahinllxvfalzr", "iCOMceaGMcYBOzSnqKYYDRcgG") }, - { XHDR("iktlweqyqrv", "pMyJqSAOhmdKOcYqCoIzqjigBCnBlPpLX") }, - { XHDR("dlkzgywynx", "ySJFjoutNuavXCoCnSMqQrhpPeUqwJLtixeBqUHZw") }, - { XHDR("nae", "qGnNUBMhoKIffuhrrKGdAKmpRiPvWqySkRhnufUtJMLYyoiSSGijvWMLQNSwOIELUTPPmsRexFjZts") }, - { XHDR("vyxwgxeurqqbxp", "vaVDZsxUcphryrImQqArjoMkzOqvYhkPUydnp") }, - { XHDR("yptliymbkfzzu", "rBCCExPzpoKbfpZraXIMTJTZp") }, - { XHDR("pmiemzfgezxhhj", "NjwvFCyGftCojnItsgZwxUcDFZOfrDdRau") }, - { XHDR("ntoxnri", "HhfCfuinqAaFPjQaXLmmSENRbunTFPxODeNNLZsxksxogkmhg") }, - { XHDR("yiplwmlrsnyy", "nRHCKVTBDUYWNKcmcRareKgmWFuTankAYAJHuyYBiaaqNrzHxGG") }, - { XHDR("qdgbvp", "gDXpHVPslbNDsMPQqHnejrlBjqrU") }, - { XHDR("yugntrcxvu", "bjlLHVQggNDWDoQcLmmUQvixAMKzkrJuAAJuePpbdsdpofKLq") }, - { XHDR("tbtdovvh", "zPmftYVOJvu") }, - { XHDR("rlvysit", "pqrmmVyYXQjQtcNKgDhZFleHQGPvrLXPYreqrAjvyawqlOQO") }, - { XHDR("ldoshrhuevqlgmajjsqc", "ZnXYdmuTADzURRCisbsgdIegbpIPO") }, - { XHDR("jzlloqro", "DugmkOuUnIhfcQLEpLxDmTH") }, - { XHDR("zpwhadgzmloh", "AWWlZDJZjbORoProsGkQKTGqBVwMlBhexLhQ") }, - { XHDR("zclrgxhpcfocpdfipi", "xcpAyKxkEKmYDNTFbweoYrkSSWD") }, - { XHDR("fvgplvmlpjssvdcnk", "uWzjhtPIoaNpBmWcroQdUHnBuGFxxLLeGrxPLNIFUMfcIBKuutBAUQVW") }, - { XHDR("firbngxlcyvxqo", "jFsHdGUsnYQLeyrWnedZXraSPOOtaqhdxjKOXWwgSzJjmpz") }, - { XHDR("qxcr", "lztQLDNIMlbwbASCBbZloFJqLmPntIsMq") }, - { XHDR("bpzdaandc", "GmGWttdVUdyFenxicSfAjfbelNk") }, - { XHDR("v", "gqGrWqqxuqfiuuZXvXrFTRbNdoJeLGqfcXfMJgpxDvIRGIBmPctLPvaarMqykbbPAPcl") }, - { XHDR("k", "FREZsusazQAqtzarxFvlqyeQJFoVuJobQSTpktGodqJBAfaYl") }, - { XHDR("a", "yJFzPZvwGqQIiBgZsZKxgleKzkKnIjSUGeLlfLZxzsTUcTOnXpGGfmKat") }, - { XHDR("xekgibixxaht", "bmOmktRxWncNJwIBQMXjjBdbWOhVyrSIzJdXFuegNjifdSmGJUNRdHmzdjF") }, - { XHDR("kxu", "VnBTtwTjMWnrVYeoWFFcaJJdAREooqhsxtDbQw") }, - { XHDR("uprlxcyssbuujsj", "YOQUxDul") }, - { XHDR("aqdwottlgvikwudhql", "SPfvpN") }, - { XHDR("gnmwzib", "nubWmiWnlpFfacSCPKyYuYPWOYxYiNEOkuszDlYRcBwibQBrHeyetVbLcpwhDK") }, - { XHDR("rchvrtqbziajrc", "gUamVKmXyPrYMMUypSzpEHKwAZtHpzGoSzosYGBV") }, - { XHDR("raulwkwt", "CducCLavHHSElpQDofXFJBzhRwgwZbxYdXbIuROmstyiYdNpeQxReuqChdMxiiPtazSmsfGXlSqYP") }, - { XHDR("ffvsspquoqwcvwzqm", "NRLGDRQegGsImkGmSSSReTOKLysPkzBClIvxHkDlqMbFSAQsOpxcEZhusLCEKuUIgLRIyYHoDYsG") }, - { XHDR("cesbnnpev", "KBaNVFRPP") }, - { XHDR("orpppqtssfb", "nrBvRBvreWcl") }, - { XHDR("gnocdvkyqvuzx", "odLlcopaznrboWcIVmusYOnZGbThlpxDgvWpZgtwytyjyhvgdcGvdHGBO") }, - { XHDR("tvxnverichjqe", "tpIWQHzvbNZnQtCCzWxiyxcDuawPiCEbsLmSAwaMGTVMH") }, - { XHDR("wmjgjwehsbtnzwyitkss", "rwnxKfIrbzPTbvl") }, - { XHDR("lxlwdmzwwxojrnabpkc", "EWEAlemDPYoNFxADGWCEHPrYpIelSurQFOnlCCwWluCbVrgokUVFvTZILNkbexp") }, - { XHDR("xbp", "ByoevjmtmpDxxqzHFalwTnNwaKTjlVZDviddkJDEWXz") }, - { XHDR("wfbhujthrnv", "FjwlvsDWPCTMfvejvhtBlaJvCFPNcvMNRyDCFuLZAcrHXKYlpzztyRXFVC") }, - { XHDR("m", "YOYbnuhcgx") }, - { XHDR("jmkuyjuuslhiavrrmb", "gRicdJGksXyjuSozOZfIgsNccYVjMmgUGp") }, - { XHDR("teiibfrrjrr", "WknIjksZLgJiVSjZIkOnzlkJuLYeJYKNvhpeukwXoMinR") }, - { XHDR("xrygathxmlqdnhn", "SGWWpNEDIijWWaMwQiUZdWJcKVEUJGfwOFRkHduwmKfsl") }, - { XHDR("fadgushqnjplqhfmzd", "udXapEgoDmkPVzBZmqZVUDGGJgfmScuVYMCVzwyxkWGyPhIKUKIxOSCqgIfnmIUAgAdtTQaBOrqx") }, - { XHDR("gqbzukkev", "tcTvifwfUdmFW") }, - { XHDR("ydhhtkrqnybwuzyhzuo", "fGT") }, - { XHDR("xjdmpoefmenkwhaqo", "kiZSzkgwsIOhNIevvuzAtuZnYWafHarfeSLVLgfzZCwedzniHhFLasjZjouEZOadgT") }, - { XHDR("y", "uKunUViOFQWCsTpXb") }, - { XHDR("rbbn", "JqEvhSQfmqjEoKwDoHOUBgLrEkyEdsUkJLwJhPtEewsXDgHSuCA") }, - { XHDR("wdlxsuakjqsu", "tPXfJoJgeZXCVHUv") }, - { XHDR("vnyagwkqloe", "WJKdRqjpZNYUXNvweVsbNcYKozTXRlRUENlUznrcsIHkDWMFYoiYYPvZIOImpwfKn") }, - { XHDR("ugrzwanasz", "OCvPMtPxfnliiwNtJszVleBTOeLAbPYXDcsuiBGWtApgKHySsPW") }, - { XHDR("rasjzdwk", "whupLsPRX") }, - { XHDR("zcwenmiynagl", "kZpmuZWknFCAlrKjrEezLtSDUsAiKbvtNofRvGVWSIwRkfAJIeeCAZwiiRVgoSyEZ") }, - { XHDR("tnewwafgzzqd", "iqIEYdVYyRayqvkHERFgdkqLjYbuEEiOg") }, - { XHDR("bwkifvsogb", "zFEOtXkaLrQDeIrRvZbpbBNLlZSvVRfGPRYXZHURVPlhXjWOBKDD") }, - { XHDR("kwpnoplmnogigysa", "whGHGUIWwlQMRAEZNbgIFoRkTnfRQpmTYlaarQGJondfSkGrHjVsOxmGbWM") }, - { XHDR("ntopbrqiskml", "ydRdNyLznJGnCxVfkFauYw") }, - { XHDR("hjahhquh", "TFTGgyoFoZWlhvDXdsAtZTXGcYgfjOyGWXCLxSnndQTmYQTxnOJsOWZmSMpekOmZosAv") }, - { XHDR("wghbmcauhreonwlfb", "XgvMMFXylARAu") }, - { XHDR("uceqlbtvrjarpwedb", "PenNwCJXAPivnXigHSyVlERqHj") }, - { XHDR("nzlume", "IUmzYZrCebOeFHfOV") }, - { XHDR("nibgvseknnewtwzxaat", "xJFqKedOcAAkpaKjdcRORSFYuIKJncSZVmNtvgQfnybgENQasjvAImbmXspoVzkLLylLngsWKAwGmyAu") }, - { XHDR("rxeipsaqtm", "lYxhOkAxIfOzwPaHLfSkLVKdazHpAczSqlQqAMdJWHppfCTkPaAURTvlOBZtTIRHbICGyjOPWaF") }, - { XHDR("gppugsqczz", "KlhC") }, - { XHDR("dzuokszybazk", "IusRNoi") }, - { XHDR("kuqlydghxn", "LVRajOZixngJmsKiBGdJIowrdfZGOrBGcbYRMOwHX") }, - { XHDR("nbahtomaeurszgrkxqou", "NnpnVghkoydcBRsLaJgeFJzGwm") }, - { XHDR("gsulvgkwocgvndqt", "GngzVzMYHEvzPZFaPJ") }, - { XHDR("juqszqfromu", "NFrmbNhJMNhTSAhwnZykmHvugszWNZTgPxlxIbykfpeXyApNBVzVoJNukSDARHtXwTPStSraRJZYlClI") }, - { XHDR("itezv", "igJUPJDDDIuIhDICrBxitAVrpgER") }, - { XHDR("hxdgifheud", "BForwFU") }, - { XHDR("nxivzkobfx", "MGwQwjMGnWSXGogLNCGRhoELqgjGwn") }, - { XHDR("rwwdcc", "agXErbUjSbRLZCUMmFWoxijQdgoVVVmUkplBEnYmiQBTjeFhuBEFXzrlKsCZFutAmYWMevFW") }, - { XHDR("tpubbcwwfnuiqm", "PcBQzNXxASPzkQgUFWyLsFzEyWC") }, - { XHDR("updjnhjsuxedaeeqgx", "yKrcgbVUSnnRTTusMYHtMjPfQcyQQzkSkZqvIvMazOIDRXfuaMqRpEGrkzFKQ") }, - { XHDR("unfjwvqk", "cgXptMQCJIAWMjvdgnAFGpLpVLByDpjIHYRAtgvEimUTEQFFceKKJDXNYTnEoKWJVuXBrRKlkgYsaA") }, - { XHDR("rubbcvfj", "djzIavRl") }, - { XHDR("kpp", "WYvudqKxIIttcTpfyHPYAIrdiosTcTUbHgTIhSGXPNby") }, - { XHDR("cfeisuzhliyrkkg", "joPBfxqDMkTpqMTzIBbZcLWTgqLkbtCXWKfAGqCZfIIVDW") }, - { XHDR("bbxxt", "DPrhgPopMwnNkKrOUTGWeyVUMemWFHXXxGifHbmadWqxXyNfIXSM") }, - { XHDR("bzxeajjgixztobkaw", "sabdQFNiDxsJlKTaysdctqDqOAGvBcCUtgILMGwbNOOIWqTghNHkoCYOYhRnbOJdYeJyFVXIkMkLW") }, - { XHDR("elgjtihvmrdued", "E") }, - { XHDR("wsddfafvx", "OsomdBZWyPzvn") }, - { XHDR("jbskcte", "oXmrjtKUdeelBuFuMvLauaFGvLhMSTDJiN") }, - { XHDR("dodzofw", "YQYEcrRmuqMaEJfXHcfRJRindUtTnjmzNlWyTSREM") }, - { XHDR("wgdfkvja", "HPQhZzFRHYXHKZpckZiJmnFpVKTVRgRKArG") }, - { XHDR("r", "ocUhHyKxWoJHlKEAdnW") }, - { XHDR("iu", "dgdnsbDAUWjYtYSfazX") }, - { XHDR("udbgwguuryydn", "MUDvnttizrXtOUaUjPlhiEpGvivUoeuSFuaZnMfuCMvrSqsgVBZPzNjZmBJKKlSOcSojVpvc") }, - { XHDR("tqzk", "pGmxcHddUBTkTkDgDFTsPLIfrcpLQluwQivJpisyFIjbuoIVYcelAXEshRLbHxGNMyb") }, - { XHDR("eineyyw", "sCBtUegaFVu") }, - { XHDR("dcp", "LITICyXfZEgMxAYzVNvcTifZIHWwQLxWfZjTSpwETmmponVQVSA") }, - { XHDR("r", "wkTeqmmOYzSYgEwLYARkozSTKwCeDevevZMtvNPzxzWVsCiDozuerm") }, - { XHDR("bdl", "HYBWtvtIOYPibUHRjyOvygdecvkqovAsHikMoREgSnjKXCyiHThnCjgQNV") }, - { XHDR("ipeaqxx", "oUECPohxaPDvWfXGoCNwympntHPCyLnfNKFJmcMCSIhvZdmsg") }, - { XHDR("letdtqkdxdklxhtjw", "woLJXYQsVpTwHMHTBmYyzHcPWiMmWYuhSmMtXXubmOavPbuNMZHN") }, - { XHDR("fxgsqfdxsskhudlcqy", "hzFLiDUSkIlditXAEnx") }, - { XHDR("qclr", "iqSbaMOmBgDkUeNlyBfOpUhwgkUxuc") }, - { XHDR("fztzsisdh", "ETbxqGAenNqouAmYylaNJtowVVJADHJaEOivZenuMLpAcOcuOXzVmBtTCuQolkPvGXFhPt") }, - { XHDR("geyprxnopuobzsu", "sxOxkfodPtJUxo") }, - { XHDR("rherxjtykdjlsqqxbnui", "ZLUaftLBpcoKevebluTgXhzMQKuGMUCAYLlcEDQy") }, - { XHDR("xxzjaugsh", "YbjUdRMoSycDlfAbgllf") }, - { XHDR("ghkhjfzxnqavybniz", "UzlYkKarBuMOeOnZzOnXjoMsHh") }, - { XHDR("yuxyrn", "UXWXbKgIs") }, - { XHDR("zdi", "aYKhZNQOCuVWvneWcJIkJGpeHQVNwARnLBzAujQJGNHBCyzIpfo") }, - { XHDR("yayavo", "iweINjGpgutPaDFXuOhKQaaR") }, - { XHDR("gtp", "suiuRHkBIXAyCwtThrfkeHECYdkwIDbfDRsPhOi") }, - { XHDR("bbltnsduxyplmlmhv", "yNhZiKlZfMCVFtAuPNuvAyAZqoHLVGGLAai") }, - { XHDR("vhkcowgucb", "PjjsAjrAMpmGOYsCurxrTuUegtBxLodmwMKbukpvaAhqFvdggCpZDzinXvkxVGCVgjMiFCr") }, - { XHDR("lsqff", "TQFNNWASZVSxOWlRyzuDsfCpyKJXqhoWttAQLTcCdfUDLJZuuIPJuxixrEMAszrbYjLrNBgrFRiFHJ") }, - { XHDR("ghvkzuiqgkushdv", "uSxMNTvfsKgDlfhmjuQFXjmnCNjBfsucBMKBTCchvcCzdJagOCkYjZ") }, - { XHDR("zzvxnsjohm", "diRCdhRXFu") }, - { XHDR("c", "jm") }, - { XHDR("keeuerqgfvdhvobtrdyl", "iOONsGiobMVrYDTIMCHnhEhqxsEiySgiybClgradfOETHolgpaVTogAvraV") }, - { XHDR("bfnegei", "CpOFEXWPnPEyLJxWGRpMHbBTZFkgYCretRSaJmUOleOxKI") }, - { XHDR("paluix", "GbGubmGxftqp") }, - { XHDR("ygrzlffruwx", "CXNNnyWFJkEyhrzZXGQbbZdPrUNjOcGNnFlXprbzrYrrSWaUqTqOJYdTrNWidnJLY") }, - { XHDR("lwmxxtxlstkagepzcum", "xogrtcnmljFoFXuAlkPDoSPGxaQlaVuQIOTzKwKLuNDlFlhM") }, - { XHDR("gwaqfukgzkfvfk", "AGrhmtvKGAvNughOuyMvqgy") }, - { XHDR("gqhiklohpeeumrdiy", "XhwlsbiYwVqdxdIlVhqxlzKXEacyAXXEMomLAngMvwujuSjcfwotBbDFcAPGEQetjNBLfLcCtpY") }, - { XHDR("xppxrlsx", "ysVkXogkDQaODlhISVnmHteTHFRzzLMWmBQMxxmQfhjimgQPoRpunEIZCZadcSTZdHKLRPbskRppRS") }, - { XHDR("phr", "uxfCXRvrydpDRupzJyApjBeCouhSPMzlAq") }, - { XHDR("ekvalaiwdhimgo", "NBifHmxaqRQuoYBnYdHbfPAnrldxTdOylxpdYbkCAv") }, - { XHDR("jk", "rCrIzAGJuZyURPPLmFPyDGazQeMPdHOBUuAfmbnVFQuJUhKutp") }, - { XHDR("qxtwigoardwvcb", "gTDnVOKqzCZruodlrySkkECWZyJYnUBkzDeLuWHEnAjFmjJOoRFCxljxSgnprYYJbi") }, - { XHDR("ulvuquzvdaheq", "pxsMXXnBxTOzKWrYFBVpjXvHwWjcxsMKoMlOvPrdRajnWhgRdxVQGGjtmNEulVFbAjlmspLH") }, - { XHDR("jeulbudyfuleclsw", "EcFpGKDPlpyXXzPa") }, - { XHDR("sqcmpp", "RnmHQvUWcmQeGoCAeCDLzQFyGRBLnJnxqBrYyqSLjY") }, - { XHDR("awsqdhg", "etxabSANbGiHikRvpzDLaBviVJMNlnmiBTwUWHcPqclzmVWHhtYrQIjfaGbpDYJuAwr") }, - { XHDR("vzsdmpdoswxqgkwj", "DcYHMJUophMNtIGFRUsUJfKOvxJw") }, - { XHDR("rlpflmzriyfoognjpspj", "sgAYdGGwMYmbhuakCoMMOWmuoROJeWnDPKWdeUqWz") }, - { XHDR("nocfzgfruhweq", "SkkvS") }, - { XHDR("emndlpka", "ubiFaCiHlrDUkpetzNIJdBOTSDRsHOjXchLgCtALAFAsmqQQzb") }, - { XHDR("vsauzgywfagp", "RXAitFNoxDhPoBXcMeTkyTwtiTDwjsLklUdbWJkUrgaZwEftuzYnsrgZqWkTpCvXtZ") }, - { XHDR("fiwuzn", "efOjTPTknXDYhkeeVWbEZvTGdMIGyXPTumPHasjBNSJLmNLQVpXS") }, - { XHDR("cvkywdbhvaim", "boxMbzI") }, - { XHDR("ois", "ZkrzXxdIPFXpWchR") }, - { XHDR("fcxsiqlaluyk", "rYrsEehYSoWJP") }, - { XHDR("vudftlba", "fXmRtRkOflvcLRCWrbgcuTiuLCVhAMWcmdfOIlOwEvYtVtZVBrMXaGvOhTfulz") }, - { XHDR("wrkuprrbqg", "qtDovZEIQKchHrsJKGeyXqtVoHFErNHkCXuXWiolBZhLUOJKmvEZoPSMP") }, - { XHDR("yesbjvy", "BSEAksyoBXOljIEMiKVTqBUReMrfTOJHelYczVhmAQaogEBMATGABANRHa") }, - { XHDR("stnvlwzfuqrdccmtwxyc", "gmMGFHEjzgvxZktmQoDEFptRzLpWuZRPxNSQiGeKh") }, - { XHDR("dgjeos", "dm") }, - { XHDR("cbwqukatrixxfjhfti", "dDNgfBJRWzzZycqrDZEHERPO") }, - { XHDR("ehngntntusbdrjtspos", "wSllUWpwtFuXiMLFaWNZeKnCAOUzFWkevMQirswHZGYsF") }, - { XHDR("frkxgdnqrc", "fUHfL") }, - { XHDR("bzibf", "kwEtdMKvKNHNJBquHwuXXKWphKYPoOxmtQLDrxioFxpGxOzAOCwpbS") }, - { XHDR("kddylrhjjokyjijnwd", "owsGuGNUQXoDpwTSmxRpglwAwPaxPGZwByCdqiYxNDpedjAuEDLRpqMBqTewJUxwKnBcJQUKYTDjIdu") }, - { XHDR("ffzvhuh", "CVUuINwIhqQgOCGZwyTpMpziXbShdLFZCcphjWFErAt") }, - { XHDR("yzxsrdzdcu", "TbFqUqalRuXTbbXqarwbeuUVdgaWSpYNwTKcD") }, - { XHDR("tnbg", "hFkaOuFuIpxtDtusASwdbqRsufUfDIsNWZbKvkXinJwZAmoazgMHsCZGzsx") }, - { XHDR("oiybwijh", "nSDaoZBNnHwWbBIYMyQgySoPqSqdyjrTaLPdVcTNmyHoXBhRzXMbMWZRjgNPvR") }, - { XHDR("rmcsfkwtvu", "FDkVPCbPZSlwzIwtjsnYLwxDPjXLIPDjnWCWUFZDsTDajhKcYddfptYHDKKEGpDYFPbQuCD") }, - { XHDR("jo", "vLnpRsoRIlSuqkulXNhEEEvupgsSQXDlAyYYeRGDWaaNCHhfPxhXpWcKjsDqivesDYKjnnsaBUNuCsGQ") }, - { XHDR("x", "GTTCHRuXJyif") }, - { XHDR("xaedchkkqpgwwduhac", "hgRDWzHOVqWjKjFcdCcVzh") }, - { XHDR("gm", "OththxyDLdDByxEJYtXOjcSaFhuGRLwfiJZvzX") }, - { XHDR("ec", "cNOfoUoqlWWFxKgkZcdqqKvlNOjqelLIwrprxYpSJhwjqvYkjAyTtN") }, - { XHDR("gvhtapwqxyyo", "qulspZdmEbSOtGZhmgbOAjcdErGuwGpfjwHDkuhzAHzxfRalkHStGHD") }, - { XHDR("lotndcosubn", "SpXgPUMZgjnXyFUQXAgwtENvdSZevmllH") }, - { XHDR("pwndlqvzrhifruajsz", "hiIkmfZaAdpgnJMhBBVfwRXBIODVTkLIiwNHzKvnmcGHYSM") }, - { XHDR("zesvqedcps", "kvdyJXzHQcXizrLPNBgaugTuBZfMGjavwX") }, - { XHDR("jbada", "mErCaCwYfbfMjjZuhevv") }, - { XHDR("q", "gxTiysYyTKnwCztKjgLLbkcuhqRPmdcITGCKgmNyLyd") }, - { XHDR("znbcxjwzwcpwclbuw", "metdiyBGuiXi") }, - { XHDR("ptxselbqnl", "aCOTqkTheOpXkZplvliUllAaSKDVymckgVZtqJrQToOKViZiaLvtCWBtxhosGNfzFbYvXJjmaJcoGjK") }, - { XHDR("glb", "GxGVsgYQkMFDApVrnpzHBnzxlMdoPmFvmAkDQhNhENqjkJbKX") }, - { XHDR("gctohbrfdoizpy", "jeDJXhTaaNWaKALc") }, - { XHDR("uludkuvusxjiovziu", "eUayvkCOuojpndUIOQswYxhwnSSgMwAbrSRYMJOYZeRUxOtOZBITjiEsCTMUsOGvLXHoA") }, - { XHDR("gcehoveeindyrrptig", "cNzSocdwGtbKJ") }, - { XHDR("iq", "ujQpuNhleuNMdpApXbbyYYqJdLdsyRESMasdqaxDfvxqRhmgLutbsNXFhRGsECQksmjYpOTnZf") }, - { XHDR("j", "FTewovSgXsSLXHsEtBLWVrEpIZUzGwxOShqGfgvICkxhWRMhseEnT") }, - { XHDR("aubwwlejacltsv", "LYwsxxnkXWFvmJbhORvIYzktQjzqh") }, - { XHDR("cxgetfweuk", "jtesYQYgDBVkwGCeuvKtMbWQh") }, - { XHDR("eillxuuxyek", "vcbyfoUDxDlJoeS") }, - { XHDR("nhuklmcltjiyqecrp", "fCxcjVKfhZpwZQSsbIaTlONkgVKiCfNvLSlXboma") }, - { XHDR("ddtsaqojgvr", "pJJrvlAVDIIWWoOochCfYMUlqQkHhMqZPzuSVgVZZjQhMStTocWHLSJsNgqyGV") }, - { XHDR("jgupfkst", "mmGUpJbokxdonvjENWjXdNbMnfkdoVRYOCTHJcKoSQDeWCeUrSfmNiT") }, - { XHDR("seq", "BYGsZbmmGuWhiwQwqNsqIKUpsoAkJDqILycqJJYsxVFhfadlyVzCqlQfkOScmzxzSCdqVrz") }, - { XHDR("atbxlekjbexo", "ZVDWQqtbRSZhRuWQNWqYQeMzPdiACdHLVhbsiaZHlhVPpqrISTPJMFl") }, - { XHDR("vctsrwlzl", "jqgXgPFRYqQdSkYGBOOPsLtJgfeuaRMoMiIteKPbyQocPZwT") }, - { XHDR("ayzyviptbqssfvd", "klWUlxfEjqsHcpXEvbtiWNBSb") }, - { XHDR("t", "eotqwPdhmLhujFusFdwtNjfvcASghdpWZWcRELmSYjqCkU") }, - { XHDR("hojpubkoaeiyey", "xXuuXUvJpLwLUFhrEEreUendfpUFBBVcvushPJZxShTvqmYONuFLnJeBnmpoNwBcrvMqOMJOEKqzXP") }, - { XHDR("tetn", "gvMIhbgLixscDTeBaDSkJzduLY") }, - { XHDR("rau", "zKnhWuCsBVLNCOYVLSEoQnSvIBLtyEDWZMIJMqurFcHUdmOsPLdtWKXlgJqCQRo") }, - { XHDR("zyzbiblssarvirzlnfcy", "lOKXPMxqLqhnTsuCHEQChR") }, - { XHDR("onqgg", "HxXlZiMbYKwtCSlruISgyJEPPdRCRoegKnsVhQMDN") }, - { XHDR("uzdbwguvttc", "xfCjxUDKCOyXEIQJbCzmJgYmVhOQMJbYZDxGKnqJdAIzMHdALojFFU") }, - { XHDR("entethgycvp", "UoMWR") }, - { XHDR("jhbothqgjbomderlkds", "r") }, - { XHDR("kayhooqelunjyxqn", "ThmTNNsvuWcIPihbzdYbvEZjrBJCquMkCZXiRlDluRHBMCiKpIBkI") }, - { XHDR("uozye", "JyMqMJIJMkSjcunshqzQejwttQLtcvUNPKdxKPYwJVWVWtgEmYzUqcHcvrSmPpIpMVvSQqu") }, - { XHDR("menbrinwb", "sMshvMdEMMXnGSFVZmmbLXyNoDlSIbGuvztuobXVJGjRHkalgspxJVshMOlpCFcMbfrOHYvUr") }, - { XHDR("dpoyigj", "fZFbAUxhXgHnbUCbBaCrpOBfsNZYLkDweByPiDsH") }, - { XHDR("jhno", "encSmqafLAgyOfXCVaKiXtarqZLuiTbplDYTNX") }, - { XHDR("ovfhdfkghgyeuupwoxbt", "WPWTynsWubpKDwMFfdCEFkqrJxKdskfxPACSMWXfhQfqGKwAqstTPKgVgKZGUzuJFH") }, - { XHDR("huvqghpjpeept", "KzO") }, - { XHDR("jolekrduegdre", "iIyXzSrZCYbqDoLwducPawHCrBmnpabNziZDrCEIqFvnYWywbKVPa") }, - { XHDR("jfyldaluwrwqyaoe", "GHDocuVAMGrsoPCHOpLOKNUdohtSMPjDzGJI") }, - { XHDR("m", "TBkXrexMggWxatzHHaBoirrALLIydEdIJgBfHjbirQEjRcRaooaudrTGbtbQhAPfBTE") }, - { XHDR("jgre", "aTxqqWGLHAqyBpeoQWHfoQHCqLQqQcRGwTYLXuUXcEuxLauHjUFfnGCsZvbxbwJMJU") }, - { XHDR("dipdjgumsccbnh", "RINRPCDxPKZJaXanyNawgXuwdtZkfNhlBSctXfHQELOLSVTq") }, - { XHDR("pnwiablptrhlrjoz", "klguKNhMXApPPzGSwBAChUvkCCPODcimcbccZUkNQeyWjFbCDxsgcgp") }, - { XHDR("n", "wFjMEILrlwqjJVEliwsosvhuPISoHeQZHPapPkx") }, - { XHDR("btfbtibnce", "wjLw") }, - { XHDR("zohvfwgu", "AaHsbbsfpgOjtVtHaqbrpWNAjUcAYsrOrwEfSpHzHuWOAbkdfsUedoH") }, - { XHDR("ojgpvceyzvfjxbjkq", "rOAQuxPsKSrZzZPJyNRfzxASElyyTANOJvhJaevhfRLEwkKItQJxsPoyJWLdN") }, - { XHDR("txgbyirhxzjqkr", "RNjsTjUZuphubadIlosEPJBwlStWhsFBkvLnEThMGzPLushUX") }, - { XHDR("ltxfbdqskrsd", "lxkMkgTlPykaoILWErecrseYiSRPbSDJHWgODTVXhJLEOghPlCqXKNqwARdpwyaCWTzZwJZu") }, - { XHDR("arhoe", "BuhnOARdzPNwvjSLyLlmwdoRZVixhmPAbPdMrmjEunqMcxL") }, - { XHDR("rztlxmlgrmtknf", "YVyFJwBRnzApnAJgQJQNHqOmepfbteSnERbyS") }, - { XHDR("ksjkwydtazq", "hLzUbMrLpBKmLHaeASHURLxvVUEgodOTcJnP") }, - { XHDR("hfmdnoxtk", "IVJlrSiOqdZSbcubPgOApnmSQnIKFfrpFxOUqiCmdZIPBfhTHMlRVhjtlfklaKmkdEqFxCKqm") }, - { XHDR("xfktbztxcjytjurumsdj", "qrFaTPkwOlCxclZHBWaKawphNewrfxKeYLgNPfsqfcDDhssRZsXJrzKFNBRkUwVScAdbngBgSxNXc") }, - { XHDR("qjlyofrpkgrnoqourld", "FyJWpWjQBfEaBLIflyHQdjIARePYiYwgyEEXEOnlYkraaiGSjXjrytuSfkGGCHaluxLsvXXzEcbZ") }, - { XHDR("w", "BAw") }, - { XHDR("oxmdtpltncy", "tQwpalapoOnEdlgtlWlSUOyvl") }, - { XHDR("zlkwcligztkpqmomn", "ckBVUvJLaaOlVbFuEwULEHicOjkFishrSXOxcGeqpJxESnFzTIplwmpzSvXklRJYuoJq") }, - { XHDR("yjntuwbh", "bIJcAtlAteocgoicbNnubsGgOidXBouF") }, - { XHDR("fxnvl", "DAvzyGjDwGjNEUXNjVmIqJPiplKGaxLjHiagrFhojMWPpVpekPwDwBvxeQidpczXeBsYsGwDCpfdUZMG") }, - { XHDR("fsekdjjz", "jnAQpvQKTVVMoKhskiejEHKCvYUcStrKhJapFeLjBVWdYhPjfZeTJslbVBh") }, - { XHDR("bbsdntbnkcknoadwoim", "NcghAPfrIoSOeBYrzjFYMKKtciPraFMEXddzlQSWpkijCEtAmbZrFKBeTkLlCzAkHtjLgjnI") }, - { XHDR("ribiecyjg", "yAJDshFQNNDkUwSXhWbBtsjqZTfEqNFDhDqnrnfdIbwhXNAnTInmFZaLmiCPgueJbidCpx") }, - { XHDR("zokhpbzuonj", "pPtvuwiejVCGZymlboPjrQtlYNwZEeSzOHJPAObTKAVtSvUQafFVsMKLVyYso") }, - { XHDR("wswkzfbaokegkjnbga", "rUyonADAyUpWmLOCCOrmEJzySyToPsNptkqChJciJAfHnaQFWuQEFLU") }, - { XHDR("kswxpymtdjvwmh", "dIpchLDbcIVbgmLJlnxeYSyKOLQJZCfRchxTQydcdJmmngInTfGymFPGLZcPknLfCePqUNicz") }, - { XHDR("rcsqylnk", "zVnwYguvDPSZJlDVPPdyDzzTPTIjBsMQliGnzwiWusuVE") }, - { XHDR("wjjylidsrfk", "mHTkGLNuncbSXXIylJCXZqJXwLjHS") }, - { XHDR("qgyj", "nBjVHsVQvqpiDuwgyVsLjlifwWEicnAldrfkGGmvitmymzsCjRMfU") }, - { XHDR("izecyimtvidjzr", "lcNLqlslqGeAmIbMLbFwzKSBzkuKUmwBMPXUpfkDUGTHlpA") }, - { XHDR("lzyjlsbswcfdi", "VBZAjFZCmKAVphoCDfsMrdQEBvbIgkMsmWdzmVGIbNXDapDfQVRynMwzhDsEvOJWiRjoovLSBELoppg") }, - { XHDR("dpex", "MtcZcGRrjeDRNMokFnZDgIQmiueceYYcRmixrYipGkHAjcxnNxKUwsjcJYSkfOWBOQpl") }, - { XHDR("qpxwykn", "AUjIia") }, - { XHDR("yhrdvxvnkat", "zMLUpmMQbRN") }, - { XHDR("tt", "EWNfQAbCHvrZZblhlcfoFPRkdSlRSoTHaiIBJWuZDcOaAdI") }, - { XHDR("ojke", "jlaswZALZWagGrpIatgAMzhTKEUZdhmKfTmdCBzHrwtBSXJedXASHNgLdnCawXXZBdFwwzwWf") }, - { XHDR("rnemctgckkhuzbxeujq", "wgMOmfiGFebISmHVBBCvPnKBHfvvbbACZUYihHXtimpJXyLGmrXvGCVu") }, - { XHDR("qpg", "ubIpGUiHzJFeHcIjkAjSkc") }, - { XHDR("pojhnkzbiibjg", "RNtcvfDMQUNNNuG") }, - { XHDR("pzuixscpiqyn", "YJAMowsghrxGuLrursKsseoQgBIiCBTsAngWCQFpVfSpKQFIcrxbFPRlBnZrzFaFovpM") }, - { XHDR("wrxjmxdblgcalmasc", "IDMZeNgPCktkHOtbSwoxy") }, - { XHDR("mjkymn", "YSVuENfZfIxZGgFxjSVODhClPivv") }, - { XHDR("yryzdmy", "PdvgVZElFEgzwMkGHbcGWzIobQhfaRwpeiRKWFgdmouFGEkr") }, - { XHDR("dxopgekxxyfaxydi", "jYZXjp") }, - { XHDR("cx", "hoxPOucC") }, - { XHDR("zjtacxcozihpvp", "lSiQsPlbypDLxszUroSQJRbQeMWqPTjIXVUBAmluPJujEukbIOPmcgkSjVBbjTFixAJM") }, - { XHDR("mqeafospsohqlqji", "WldiAuSyqZPNKakZOeLsfsbXJFDQPsFTEMBTuNkeDsYSZikAZWiqOVGKtOLxsrEWvfEarzPMs") }, - { XHDR("qpnfmycjfcpqseodsdvb", "sd") }, - { XHDR("nehfqcdz", "IANZPmpfESVPNExMUpkbfuWBjxafyKOXVPJXDgZJvruAVExCjqXgyjsyzUKeMWmSJDQpJjtVo") }, - { XHDR("fmktuhxavluyvkqiie", "GXsZZblSFfAXi") }, - { XHDR("dzmzskdnvvbzyjalkat", "xGtKHuPdpimiRuNfrVuoQaTHitYDGmJRnocbmWNctrKELfUbgkigsevaXrZYyrYEBlmGOuHRcPct") }, - { XHDR("wmduyjgugmxsb", "guApqgTQDhiNKBmYBdvIgPJfFjFLvpgqLKUNdaHcCJzJfHC") }, - { XHDR("qpcuwdccqkeveopas", "rOQeTuAgj") }, - { XHDR("zhkrwygyovspokd", "zDDNRmsay") }, - { XHDR("azwqcomcwq", "OMFpsc") }, - { XHDR("jbtnjmrfxsq", "vHdDUmxspapqzrJflzcnNlkdWLMPqqRUXmGHWhQVlIXbJqqhmZsLJEdWnGFCwu") }, - { XHDR("wxwvehxnmqgkzsydv", "omjVFyBuhRrLhhfhezZFTpooRIHmRLoJTNPBiYfdosn") }, - { XHDR("pd", "ayVdhcpZbNHhmGYFJpCGYqVgPARgiyKjYNmfvHyMMyHMCRZjiCFKSHFqPuul") }, - { XHDR("nxim", "VUWrVRArrnimkiOLWGJxrLURqmxyCaSbANMjSsSTOhnIBWysdbTyzJ") }, - { XHDR("xpuwoqafbtvbfvsw", "fQFlnbsaGAFGAbhPBYGWQCVVSzRfzwreXepvhIbuDAYiZfdyVypIVQgtChPXqVNuGG") }, - { XHDR("wyamgmvvaxfpmtchpzgj", "VNDDMqppeJBgiRBTwvCXNvuwhwoxFksGmTWJhqxgQCgx") }, - { XHDR("awgemiooup", "UcWaoVKYKAywynPylBOoUSRIT") }, - { XHDR("ezascqhj", "B") }, - { XHDR("lv", "QuohDYvriHwFebTJVdQtyvlTuQAZISdTpOTzxIsiVGhBmWkajwcCSVwYQYXQA") }, - { XHDR("vmbwicuvamrmsuqgirhx", "BDIdzkyxiuhohMRweYwRLWyuEKjBGhwnpJzXhdGwkIZBmfmDcJqljzD") }, - { XHDR("qmpkoejafzw", "JksflYOeffoTTMMEHixSyxUhWJu") }, - { XHDR("uyqepvxfcejhbvucs", "dFamSIpWNkmBhHvrjyMPmVFrVnWTEUSdUQmKBpXSiJJWvFpOJUJbkfisPcmeblaScdSaDKnaTBYoBoae") }, - { XHDR("slpfqblkegqalkf", "husfrqfPiGnLzxWbjAOawOPWribAprCDUycTGKshBnYAlxLSAxkD") }, - { XHDR("bknfqgutysdsoeo", "lepwHQTRO") }, - { XHDR("ojydcxzz", "yuRoyiaXNieddpQSDPvTbnD") }, - { XHDR("ikvhwqqszbylo", "MczAOtAaHmRYlupiEbDfsyxLNROWZJZNgMVQtEhHdCwCyfaIyPBoftlBqFmYl") }, - { XHDR("wy", "eicGzx") }, - { XHDR("wf", "QxDVWLYeUiIFYFIybUdDjptNgZkGtklqRnMvXEQXICpUpUrhbwnKmjtnQrvQEnhzbbvodBtpehDlWXa") }, - { XHDR("jfsqbxxitgpbalgrtgu", "qBXakyFeAtmizIMaaAULaWKGEGohkAblxCQuBoFubfparkwVTHlbcckGczDXizmgNHHA") }, - { XHDR("uyiybjjwalpksxxmz", "yZqIPbgfzCCmhgMSuMxsWpoDjapaDbLVDMlQUSh") }, - { XHDR("vgfxmylviqltxlqxxjch", "SHAAhejLHPOUmrhipDcKdEydKjRyRoLNJANQlRugASvwYonBLwnggxfLpEp") }, - { XHDR("xisexcndweliifxzcf", "LEMLuTuvqtxYvzAhBxDedquvaGtIByJOagDbiImCsDYciLPfWQAbDRXgJYmUdhaBDIoJHODVy") }, - { XHDR("azhozjunamkqbqs", "oHwlzAMLHcchXCHQyPrucmGzLYrRBQijUlnDdEjCQLFgxpUYyMwHqNAiLSPFrqsvOq") }, - { XHDR("ydxtdgrxiyalbyhv", "tSWqDdJk") }, - { XHDR("nfwpkzvelyncynusg", "vERqYcosrj") }, - { XHDR("awceiqera", "uOpflvJpRfDSLPOdenmPIfzdqjRDmUaKUqegNaNeBCwbdhRsdzsOzyaUgEserxKIdINAEpruJvudCu") }, - { XHDR("nnjjmeeyu", "C") }, - { XHDR("kloqrxaexzvmpussd", "SEoWbVDrfyTgITwPaLBIXCkevVUNGk") }, - { XHDR("xwajvlcmfuctuyiuax", "WyWeAvKgLgfxEHOldkaxSRfwcasFghyFcsGcLhYkwtvekq") }, - { XHDR("aarfop", "cbEAjKxCHkzDmRcvCueWyITvDJwJH") }, - { XHDR("stpasjlxlnvieqpcdt", "yGhBIsssECdZUyqsyFG") }, - { XHDR("tlvsvbvogs", "sScWgfajYyAVZuhwn") }, - { XHDR("bmruhaefjvq", "yhaUjvyupmEVeDbThXQf") }, - { XHDR("ywlmfvvvpvnwtshxnyj", "zxqWaawLGBwKgqGUtHfohxgfXrioQHiaCPLdafiaJsDrxalOV") }, - { XHDR("hdawtnrmrtyqhrf", "aqFYULCjSEyQAJAurBnLgMYl") }, - { XHDR("gbiptswmligk", "SIDapbgoTJUFlMcG") }, - { XHDR("ymyaybnly", "XgSIRHRbzXHNaSrPLwggsxzeovlUPQpRFvMtEfhqofsHpWRTh") }, - { XHDR("qjekxjidk", "xxhhJupvgmloKzxLYMZxtMtDcyMUbunDdYvxVHqOVfbZCxzfjstlWu") }, - { XHDR("iescwedqsutdfnfwt", "mUMQXcrMEoYJqmLyozazbJKlbvozSdzjrMv") }, - { XHDR("mouglbapvzn", "ahvnNTMgCXnbMbdAnpnBDmWxJJGNQoTMXvqWrhUACVTNvNrrsDjHeyRBVzaLAotNRAhh") }, - { XHDR("a", "wraPdktdUVbyLt") }, - { XHDR("vr", "GvhtIXyhYGMHIYvoJxceWwc") }, - { XHDR("rsx", "SuhivRKJmZjYtaTWIErxLjIUPtQlqjRetPtdkCA") }, - { XHDR("oeplpbmlpnriw", "iEreVOvvzdXdLIGGvMUHnVkb") }, - { XHDR("vgfopw", "kPRiOAOfvesftoebIZlJvRTPCLTsoXdgkDISPrzkAjGz") }, - { XHDR("rngcemdndt", "kqDurLwwxyOa") }, - { XHDR("zexphsbaghqtkpwxhkug", "cEqRdOAJuZBeMKYAFozkzXoxKMEukrUaidpI") }, - { XHDR("mbgvylj", "UaiA") }, - { XHDR("ascarebylsspl", "aALMpLhbdXJRaYLvp") }, - { XHDR("dsz", "MqhNmyjKvXucENgyvXAEVjPyx") }, - { XHDR("uydhovrzzt", "WjVQNIblVbUnNHsMHbdss") }, - { XHDR("izrnzjdfzhrsxyvusr", "AQWbKscCoJgubRMDErPvgx") }, - { XHDR("ovpi", "FZMIpEbYngDIUQwdIfhwzF") }, - { XHDR("svvcybr", "LDzaOzawmVzVAxEKqLmKphiLUuMUWEpunufkNurHUgLTuESVXJeNasRpOxBiZSvqGm") }, - { XHDR("vd", "QMGthYwyiHPmAvAILgFSLBdZeDCbWCeFoFkIVmaXRV") }, - { XHDR("uojyagxnomvryec", "bwbTfpVjgEGwkIHATwOmxCydLeAoxsJZRqSxnAqMcDkaRY") }, - { XHDR("aojmhwnowqsgt", "aCtjQkZSqvPfpfjZljiikkTNmpkrBiXRSudrUTOQ") }, - { XHDR("splckvrziooasddtfv", "ShrKBOlikQeWxwfvdoUMNsRJhAYSBwbOVBXzcSmKXNxyWbeOefPSmNFjerkcwpcDFEMOm") }, - { XHDR("infzqbkrv", "FcFihWEwRaoEsxvGVytanBXiDYXSkJ") }, - { XHDR("byrmiflxkh", "ZdzEnqvofavgeHAtqMDrqckPOm") }, - { XHDR("gjrcfwryinp", "bLXevgRSGLaDmrJbmRIFHSRspAEIWPnLPxHYoCSSStqscmSNhYaZmalIFTYtg") }, - { XHDR("ysfylrhkh", "RoEgBz") }, - { XHDR("rkhxdcvermeejzpk", "TZbnfDvkOzvlAJqdZZFwnPtHiUaGPfkPicglMmXmBHscPdcyIVKwksOmAsRksF") }, - { XHDR("xvdixgjdlajngtu", "mLeyNmMfUXyeFeUqhMhuSxKz") }, - { XHDR("uztdnidztttf", "dlaDSbaFXVOMpRvJdBemAzEViqyMz") }, - { XHDR("wwhfokckdjrjnmgyuejw", "YgXZGDZBbHlP") }, - { XHDR("yxscvhkvulnrhh", "EGGJKQyaHTMcl") }, - { XHDR("ocyacm", "AaMRBkYSOzKwyxmyyOpSGlaUMoBHWWDyMAEBbvMZSiOrhhIspwQrnWDemcJDliUIBBVFfCmYtTxgJ") }, - { XHDR("gfdopstkjw", "IQoVsJVForeEmrqYUXoAIHLNWvTpUyqvHVUrelhebarEFXtIxbwzKWr") }, - { XHDR("gxuvxs", "bAdtFFHQzlCyMCFlgSaTZpVjShlZIJNvsFSAFQmGeVOWpLeyuzHFZq") }, - { XHDR("glqplkiueesrqpjbmjl", "szOlllEyGEiNOUxjtCwXhdXVPxGUUaeFIwuMXOVfRgAZwbQnHyMQGQhGUvHHRWtTzsCzEinU") }, - { XHDR("xjvnrjjikvfbruincdgp", "ZvCHKvBfJKfFXGioerflbzXmFPyKaMBRiHIWXXODKUBdSXeRvGHAYNvvUFluaIzRjSIZrAcBp") }, - { XHDR("zjfqmofamo", "QeEwYXeOSmEfBOUbWdJEBPWPNELTQaRDImHLpicsSzsRLcSHmNmIHEgAuVpUKSnSysyMvjBVrS") }, - { XHDR("akm", "AzGKRQLIJJnsdAMzDREmEn") }, - { XHDR("cepto", "DDuaGYMjoAFYGjWrMImyn") }, - { XHDR("nudksjxpp", "NuISIBfuHSrkUjGpqWtmlK") }, - { XHDR("jikfuzjhkmdyomzc", "nUPDYretgbFdvXpSEFVdWKAGKPqwQuzfLBdIFxwbn") }, - { XHDR("edygaqhmuupnmpjxicdj", "QzHQXpbSXrtfdsHlCxFQTTNJGrTNdvVAYXxfhsQyikCQbeqhduOlaDBFmOTtPihx") }, - { XHDR("wzzvdo", "eYDWOtgJCEFlDslRONEhPRUcB") }, - { XHDR("y", "VuAjHsGmHBYqakGDBqIUiDfjjAVgykluZiT") }, - { XHDR("rkgeyzpjkd", "WOxxlRVVIQIvOH") }, - { XHDR("ccvscv", "iexttCRrzyZZhqKuXmrMlVQcPOMSqphuDe") }, - { XHDR("zuictw", "BaVfNdLLoNcmNwGOhwAfbsytMDsk") }, - { XHDR("ezgdrvfqnlpxttrpyj", "AHHvaAOJOGwtVUCiezqWmonYJlwEBtaPMNwftRNnTShjfKsbNeDBzomQ") }, - { XHDR("mxlfrtoslwp", "QAzHhjfnKTUhosQOgtWywxanUVyVeaZEiSlNjvFDRJlWLBHfFQBTOsThrYFsYbDtuCyNSoGZHb") }, - { XHDR("hiazjayeqfemymyiuqxk", "AMMCdcvFtCPkVJWSQSYepRLwpqgEKPOeBQEECdFDmmclEBLtjFneLluDhpANBnaPa") }, - { XHDR("sohjhmzkkjney", "vBl") }, - { XHDR("tzzpvxddemtbkcb", "TcGdgAhlJkUGhBZcVgkiHiPgpJEJgqWqAmcoTGRvZDDIiAGjjHwpVphUdiGJHtTFS") }, - { XHDR("qqhnmmjlwccj", "OrCuYWoOnaStWjVhoBsCdjhPqCAtQ") }, - { XHDR("pcunftflgstzyeqkmpeg", "XpBCZAFXxnzgQmDRhxqmovWKzkuzEVzgFyurDALrULfKRGahjOcirlxjAgJfbNgwHrSg") }, - { XHDR("kowpwymrhtvmxtgjtmmg", "MrgwvWlMTghxMjEjxHQTdCEzjUJxIYczoOdgLuFxD") }, - { XHDR("byzrcnslqxnej", "cDoJLQpFBmxEdeDViZuelSVQtaBrpvIaDCfWDJORbnLkiKhGvLOMsoQ") }, - { XHDR("dpvdmyap", "SBbWExTThqwbMJCMEHbRqYHDByHtqWiwMaJTkIyxeksFgdbQCUmNrhHzOZXkTWrBiDeegPGFUWxXqyPX") }, - { XHDR("opcvriqgwgwmpb", "bXkPSohlNhItNltJWfEATufEgdvAZSsMYNAtB") }, - { XHDR("sagigoblufnp", "DxFRnbqNR") }, - { XHDR("yhgwbczho", "PdPnjLAkhABrqFELmRKWYsSSqheRmBksXtOl") }, - { XHDR("dnszipqm", "bIzkijwtIkatiIeTBoyxMcHYWBQqugnPRxoWrcnFkSrsbfJ") }, - { XHDR("kyvclwbkcebdpiraxzas", "cQOSJrstemhYID") }, - { XHDR("arzytgbklkreewyp", "FiwCKvgBEfGjyFxKFZcyXrcWxgPyqDfbGZsjAFVAOSPT") }, - { XHDR("ptvrdoovxl", "xshhbJaGxUaoFEJkHaWuBQpuCcKDpCgyZQmqrfSkswgzTLsdiwJevPZRIryyOvNfahqAHncowzGqRD") }, - { XHDR("gpwgchebus", "YsbzyRJWeHWnJCcnlMpMQQCRsFcuSwafprdqcXimDrDWtsFJLbMeBRLFhHYRuYWufgrvaSLALzvrPRdA") }, - { XHDR("ueagnvjylgmwqlghtkg", "zgXqpyfDSEOZqqLzMPYmoNJGvynCdnFSmGnFN") }, - { XHDR("ckastgzjmjvghhlm", "rxRUruJgtyTPhDXcrwvZQnWNDZrMbOXgchahpGb") }, - { XHDR("lmywtqghgcwun", "XKxpGkypxMsjanlAcDlxRsTGPYYE") }, - { XHDR("yfnwslhk", "mSPjkurJKRyUAvdQrGtEdjwWzgprPgqUXksmcWiLXhpAxLRsdoprOZplDRzrYKtCthwwxeoCx") }, - { XHDR("sgsog", "vWVeIcScexePobQybEyPTCSnCzYVEAlaFZesVeTMhrUjQpoxzkYXUjKIPRgDkqbtBItPHjdbpH") }, - { XHDR("llmzevuq", "EqBLtSvmrxsEDtVQwZDHnQtLGQhbgVdxwvMTfoHUaYCuptmuMTfFyTmPVih") }, - { XHDR("tqpqsyfk", "HnvVompwZagDEtYbaGVuWCwCbIAfkvKBxqgAhsOwhOEbWbeyVM") }, - { XHDR("mplccwujk", "RXDvZWxQvsz") }, - { XHDR("fkugtdek", "ytCUSkdcqMPotakceAuqIjpIiLMeJOKp") }, - { XHDR("grhmwfbwzgbvpwpthlq", "wuEbQJXeOxcuTMddtwZwNNDlDsRPaYdKipOdbxunNgsPuUgowfJWWePqWGtEQdiJ") }, - { XHDR("ettsvm", "IcmftgwulJqYqHrfNWhItKtlsTpTmwMbnhfvNaVkNOjUxuifNN") }, - { XHDR("xtbmdpdxjzboegwcrngq", "ZkJUHQcuxLmYIzfKvAXxrfISteJIuTdJg") }, - { XHDR("letcbkoxxu", "lvIIoLIWPwMiKCGqAzxuZzGGOrTNWkMpSgDfaGRvTOAAhyinpR") }, - { XHDR("xgxzugg", "asvyEuTOzrdAyJSoVlrXIaRhtRlXJzZhspOFYIKclzjxQtqpKsIALFFiHEtssJg") }, - { XHDR("setnjpotjqvsgpsoxxo", "NavsgFUdSem") }, - { XHDR("qnj", "MtcwxxyzhXdYjykTIAbvuiiIJMkAuLlGHmeZoOEohpcqlOClJnGujRQZiPrXNKzCuobEQq") }, - { XHDR("owsuiwpucrvcqks", "disdzqgJRbUGwetqmuvOcJfZGtWFMYGHgngiVliGajcpFaZdSx") }, - { XHDR("nt", "UmHBpqYwuUwcsRlqSxLzvwnqMZoCr") }, - { XHDR("qym", "twDPM") }, - { XHDR("aihpvrwvmdc", "JEPsNpQmPOTVXfavpvlmsomYlQIYukkZaDNcpdVryqgPFgOlpfzqSGgvTNI") }, - { XHDR("yo", "vAlTKEbaKOGYPsBoUJEzRDhwptKGMroOyWqLZ") }, - { XHDR("uksgwfd", "rpfyZaKqcN") }, - { XHDR("vlzcliyzwamq", "YGmcmoJKoVwxoYSGimzLtmLBmMzDeCXYsPnDdhyjFYetdHjSFiBoSovxqcSUT") }, - { XHDR("dzsuclyeghlbijqslfc", "ZxMAUvWwZAIEyImNgnWEWOjgFmNKjOhGHNWTTyCaZeZXtv") }, - { XHDR("fvwnbxcd", "FbZXTrspcdQttMAZlgBKKDxiUdurubErIArrbmgJIaZSYJBLOEBkBMZ") }, - { XHDR("ssni", "WqAnTDEsksoZMkRepSlblEhCqgjcObPloAFctgOhUoChvBNXXjuVwOEUBDjJzJGFyTHIlraCEGbMSLu") }, - { XHDR("rjuxeehiihseyy", "nUhTYEZHzKIKdbT") }, - { XHDR("iybenmwldjtfqgu", "vjyfmmPgEMQgCMlOygGgifQCtkdzMqUtWyAFStdHtfVKIamZyqbbrHQccuilLTBHYMT") }, - { XHDR("tykrcgjvprnffsffdxwu", "TPItiLsJppSyRPAmnHsyqYonFusjhuUIsiDUtfsZZjslKYvZGTaPOoBSocU") }, - { XHDR("pt", "lRXbPXDBJaPvitedcNtbQGeMLgAdZIJdvgukeOiatiVcMgwFrzxJlqBXLcPEIEkPhXmQJTwFPGelz") }, - { XHDR("jhsunpaawc", "zdIiDkxkqKsMXoajAqQQMXtyXsKSOMqxxhzMOJTsCjauJjqJFAjcNJYzjbGJRHgRSZxw") }, - { XHDR("omuzobnbmafdiebioza", "JZemrqTUMOLkvxuaZolBnJmuyYymYFIclTZBBXHlOXeKkpgR") }, - { XHDR("ggj", "ZCVZqQjKuIIFijTwjGTnwGHSaLARVCdCBsdptQSYAYYjlWrBeGWVpraSnfDuK") }, - { XHDR("rcqgmhanffq", "kuxSvzgXkclJXkkkfkjxQLlN") }, - { XHDR("fhktod", "gyZrmvxgtQfSKUDEDWiQNpeQJGkxJWhNMxbTdhaPtaof") }, - { XHDR("nlagu", "yRDHmAugpEfQyXkzjGZtqcMtRozrSRIrABEoNhhBpNg") }, - { XHDR("olqjwxrmjrfzqmxeb", "GfGzPxeuvzYqhnMsCdGhtnPOfRWRjCmDnilhNiHKXQIEFDktqXWVjreFrbJyKegB") }, - { XHDR("ogtfmadhehvcyazaqfv", "spkcwOBJCnxBVhScOECqd") }, - { XHDR("gnflsckkzblxg", "ontlzipQudWtfMprpqfKxxBTHe") }, - { XHDR("qg", "HidDgVMjAXdGJKdsveUwvwKCiheAhRpkkDwopjsIXTNQCq") }, - { XHDR("moivdugljdjjqrazwdi", "XMqCSRzDiFxuItjFstcUtXCoWJeTKKRDOBzudvWEyWUsLqJuNtxfHIcQaGcewQgrjdwHGRHj") }, - { XHDR("wdmzbzzeygm", "iDtmp") }, - { XHDR("fwvcbklhzkofwvywhieq", "OzkRcodFuDxOEufcyEGxKJOjfKpOizfZJBvJAznixxI") }, - { XHDR("omoeeccfzasglmjsdyov", "MmKKjNDjjsyJTQmGmhNJTJoOsvjSzmTieEvqhQeAxGfWPcaaXWOqTPoMTlkgFnZwOl") }, - { XHDR("eoahblzoemtx", "kBPlltPFp") }, - { XHDR("xkqzeotzwgbs", "myTRFVFaTWBUFVPuomVOdjYVfw") }, - { XHDR("pctjcmykonnouzzvjz", "lcgLNiQbDUGfcWpIPgISquIndzDmTGowRZvboAycNUwhftjcHFYztoHyLbSOqzSphbJy") }, - { XHDR("qvgha", "KhWuBhvv") }, - { XHDR("jwriimjpzlatpt", "LwygxGkORJgaUyKbkXNtzkQXbXMyPn") }, - { XHDR("cqsztvwh", "KaRTriyxARZWsDiFq") }, - { XHDR("krjfxhhmeiqm", "GRPJapTeD") }, - { XHDR("xqicwonie", "ZDKzaSFKmrMphZJVoWEGeDhWkWgKXVwPhILArtZHAaiuKlghrmTnSdtQfojydjKAhnHWbGIi") }, - { XHDR("hqxxcwmqo", "EhVGGTUjYsJeytKwZAQomvAWrpobtvATWyNewTacyIZCrHFHiknimkFy") }, - { XHDR("mgvorhybckfhxpmmk", "PhwbHkPCtfDUgwOrgpnFGEObWbsKzAaXafQUhuiNIqAGMiXfLGtinTULpbPDekfJy") }, - { XHDR("ziygbzoklvwymvgoru", "tWSgJbRouipWYoftQfvPjxWJNDbqXQdpBEWYHHFzNErdhogUjBTdBURswNhQLiHFo") }, - { XHDR("uchsqnrmsvzuuxbxzz", "OzKUalfOPQeX") }, - { XHDR("ovchdmfkrcderlaxctqe", "udpawQjmxrKRCCYeMLSqkKDeqv") }, - { XHDR("eo", "OoQxjguXmzxuSGXZVkJJZAJcpCIRCTMreocaIuWoDvZrq") }, - { XHDR("xobhbmyvinobljdhzmvi", "bnUmHuTzjiCnRMCxEk") }, - { XHDR("abdsisyj", "SbQuEjZXwnEtLniRkeVkIFxkElTRCjefw") }, - { XHDR("xjlcolgkpdaoioxuv", "IoublOfgZzMSGBIOOWrurUrrBLoZzKrsZoOFxDe") }, - { XHDR("iaaqebwgurpnfi", "hcTrLdEir") }, - { XHDR("ickg", "NIsFVhCneQwivQZXO") }, - { XHDR("dqtcsuvwmjqvjyopioh", "KQxswaTjoBeuqecJvfNxDrtQWCWypWSdbfzEJNsQLpDDMqHckoRpFIFHBfzWkiqTacdwlSDzRPx") }, - { XHDR("ctyefrttjanb", "IXKXkJJUtNcIiyQUPVnnauBhxJDRvFWIZCcjdShev") }, - { XHDR("uonmoqd", "niLDmVdyLqwJLxGLVNCDTKhBTwsFdKtZdw") }, - { XHDR("yfdqlac", "vaOYZyotrVdhC") }, - { XHDR("odindfmytnovbfaojb", "KmIzyDVWjlabtloAPwj") }, - { XHDR("kwtkdlhmys", "lbtCJFzDMJBwEQocHVZxLrmANIOyBtszaQMfRNXAMfjZWGToMONczFeicdrcnTWQRBhACeeoxR") }, - { XHDR("zfrfwqrujeihgkbvt", "vMdjrqYbdJGkBlMEfBcFcDjBYaJiqSRBFqIxK") }, - { XHDR("b", "AQlGiMImYQqWGdjwCllWyxPNsYsjmBVztFJAwlXwnAGyUGlZyAPsZrCLbGROXvFMFqtF") }, - { XHDR("twrszaisbjzbwspq", "eczKMUPVnFJEBdQNbLEINobWpKWYiqSv") }, - { XHDR("qy", "ctIBpVwRqK") }, - { XHDR("eyce", "UflEwCOkfVtLgfRReVD") }, - { XHDR("rqu", "YQWSbyOMwqidILzqZClTPnBmOisnuXcbafzCZMClyEfun") }, - { XHDR("jyi", "fwQGacyMBlfRLLCRMXRElaKjKMmCUSPKWTLVFlktPccZlnFmgcoqDxkvBUcdZhhOQFTMtomoz") }, - { XHDR("kowdlgj", "GtLtQiMTMqZsDnFyYpLMsBNgiwEYIiIJNHAttcNOilQossgkFYBJkCPwWdIjyinTAkzxyInFLEyth") }, - { XHDR("cikopyqiyhyu", "pDqNQdOuYaBVAcmmlv") }, - { XHDR("ngmrniclw", "inhfmuWpyzocuaHOkZUZLSSMMfhOGIJbZGGdjEIFqzU") }, - { XHDR("ye", "wUepTUSuGduzMLFkDIAqZrLXGCPZUkzxCmAUAQQHS") }, - { XHDR("owjfdlx", "MLXNxHEsbNRKiMavOFomnbUUK") }, - { XHDR("mlgylccyfw", "qlotmDxEqoYJLJohhqkew") }, - { XHDR("qgfh", "gNRfAWDqpObXvPtZqaxSycEDRl") }, - { XHDR("rky", "EuIGISL") }, - { XHDR("oyj", "XAoPRoZYLEOhxMLgzYDQPYjCakNN") }, - { XHDR("pjhozbwzt", "mGUfH") }, - { XHDR("ajjnjmsqsnvsmpdtes", "qZkHYiHlabGPETuobRDTpaULVUGfhBhyTuZahLQKKAMZgYaVOTKGgkXuOnngaaUVSnzQWsnCnY") }, - { XHDR("mptgbdbfv", "tdaPWYXnngeujMbTVXyuMAErBzpsIDKsBNjRukFxvYQDthJNsApShTD") }, - { XHDR("cr", "BQFqsRlAsqZWKgWSOJFgWtKCyVrzezeFcQAiD") }, - { XHDR("pbebyfxvwaiafcp", "UENCgAMNNqQEeqClzuvsGZiKMYYmJrTAXmDKoymmCeamfRmflTNEqQxbPRrEgRAn") }, - { XHDR("nacqfwhxgnteiymrh", "GcUnOdhQvzPKTTvZYozceHNlOWHWmeXgisJAOwJjIFkFwPrGjMuJAFiXzPRth") }, - { XHDR("uocmmlnvkblygqjbfq", "wPFSpjCHXdizgqaWN") }, - { XHDR("bmcg", "QDWGrUfvkRrBdJCPL") }, - { XHDR("udrxszctgzzlcl", "wkmzQNiTnaxNXmWgmeHMfbtEXKeBFjgUsxLbEwJGXJeMybwF") }, - { XHDR("ll", "bRGkcaABNkWXuCMeNeKVwFsCspUFWkEyilMdTVoOLuBrchExLUFcbACAaEFZU") }, - { XHDR("tomggb", "FCompJxJIGnlwoBGF") }, - { XHDR("phthopwachb", "vwVErXRUqjeZyLjvgOmKFKkWrjhQekYOZzAQzUDtvCmyVbLapKxYXWeIDlNIgBxDvkzZKDu") }, - { XHDR("mvpmggujziuu", "LjWLIFhoncWZpMtrspzNAvaiicnbbobudPJfVpaOCmyRtzpBNUCVtZlRueqiernpyJDnxCJjcZzDPLC") }, - { XHDR("osyl", "GBzKLdsknssSDAsPaTiNubPXLfBSGXZXPmdPEYPOBJEsuMGnuRBVgwtdEXjcsVPHFspXwXyTtXW") }, - { XHDR("gzhmvyhcfpoqxnnu", "YpiI") }, - { XHDR("lifckei", "qTIlSESNTLtMABQUeNTEaPHQGQPTnWnFPEBvNcLYXYvIjFDMWH") }, - { XHDR("chz", "rrkwwNfcGlPIRCopqTUDIcRgQpHfzqYimcsbwAUyvcaLxidqnLXUbjjtwlbYkvigUUGw") }, - { XHDR("ur", "sDRVOdsjsERhbMSDklVJWWyxqaPYsDyUMqjYWrjjJNLmxptcZ") }, - { XHDR("ohz", "cFJENsbnUuRYrinlcKoksgVaeUBOJhbyTMIlzpndFtqnIDexxfDJbLuwhLCOfsFiaSnwY") }, - { XHDR("qubfyq", "kuccROYEkJjglJqHkMJ") }, - { XHDR("ltxzdyzlcczxzwuc", "yRhsdlOiRjtNqXeGWEOmxzQshHMqvTiB") }, - { XHDR("ylxaitvdswznwcojuf", "OXZTnrMdAtldxdcWJlQnT") }, - { XHDR("lmb", "SFcTBNOzVkLmhITNbjldJPkutylaVZgdGQrBfKWSqptsbBItOqsIVudilOTYdTEZYRvGArioQHpRog") }, - { XHDR("hqbibnpsvt", "tyhLIuqsKbEhsCTNlqBXzOEwAQMpvIUqzWhGhSSucSennUmqtVlmPImDyzxTzoTnkVvCjOveP") }, - { XHDR("afzwhpcehyhwgi", "arHpatEgzParqKleCmRFNGWTdJDDzPWHowgBv") }, - { XHDR("iyowcowpppctly", "BM") }, - { XHDR("ezryxabsz", "UbsNUMbGVDrLtansISxLjWExeXtQkOAUBgHHRkSJOriuuUuPMKkcEBzLeEdAMQhsq") }, - { XHDR("uv", "MUz") }, - { XHDR("rgsizklbcqj", "VdocjqTJvgKzDuQEJOnBCotUXAqqlijmYZOcmUAmPgoxdiUJfAZfnPpNtnhRLt") }, - { XHDR("gcqxanz", "fCpDwIYbyRXZuDOtLqZUbFcDIhQRpO") }, - { XHDR("xjadbddpouphmnxwoz", "zLHoRScQLXPpgC") }, - { XHDR("m", "cpVWMULaybpszPtxYHfHGwRWnqAOOaTPPRDOBUSWvOORdKeBpejoch") }, - { XHDR("sfujlzgaqiwzhcbubnl", "fiMwAgQntkgTZktaZGxNpmjWEeFynShfDly") }, - { XHDR("itcgdrbvklocxdcms", "hbPxQMsFpyKUVqmhtNfDcyGGTURhBuwytmwdmXzIdMUFltuLyf") }, - { XHDR("pltnnyelgizhhnsasov", "rTSkcKgVxJtgwktdvXRboPXLuxNxmpUfSbSUbLGnahjRKsVfhuFCJcsyp") }, - { XHDR("xeclnqaasbdvzg", "yfCusHhQyQrptpgvqOzJOMfkYjbmeCZyqgOkiNi") }, - { XHDR("tmuqsurfrtzbyhrjtr", "zrzpwNPRDFzobdHDFlxdRbkAOcUWCMBWrdJFVJuxbtzyFvhmvfqioarTUfTZGctZhgZBRfNCAa") }, - { XHDR("lcjpvn", "jIEolkRQOIhPJxBOMwOBVQkvovLRrmAPHRXUUzUwDFxGvIzOKYtgNxpxdlCDVPNgWugkvPLqquB") }, - { XHDR("rffg", "wIXiMlZjdeOAArmtjAftaTmxUbWYwWNLzS") }, - { XHDR("nxx", "gPJBiLdXaKKzdnQTFdqEQqLqJUb") }, - { XHDR("y", "FZUKDWrRFfgHrYfizfcACthTjALKinhQhcOYvFEghxUk") }, - { XHDR("jflhrofduuradk", "mJXpDAJCRTLEMLXBbmwGinBBBjntUvCzyAQKXwFhCqxfQoYSpwM") }, - { XHDR("caaqzrnwmdv", "QlIYfgNNugDAeYmSmn") }, - { XHDR("zjcnxtwrwigoavp", "xfWOreXkRSFtEJRPnZGQHVEIm") }, - { XHDR("wk", "ULxsqyHMSrdQCBLFMsEPjAooFMhCbkvrnGLptMHhIIGlJXjXSaMIDvsDzjygcxLuanSUNdZEz") }, - { XHDR("enqhbmceggkkmfknq", "lC") }, - { XHDR("rbnlhlftfwsrnqnrqd", "rIXQcfQDdDWLKOfzVo") }, - { XHDR("bsywwmok", "wtxxDLHOlbrtlTpPYdBQxJrmqSxDNk") }, - { XHDR("afihzo", "MYqqZolCoizRMETTufqFwrvypbsOSxDIifvwxww") }, - { XHDR("wewqgfrgavi", "cqQjBFGlFkTcIFBRbYqKHJkvIov") }, - { XHDR("nqeozvok", "NHwRdVkbherrfcchrzktIEKKnMvWLwMLfsWbdeeFzIFSLFMOQWAyoWMpxZ") }, - { XHDR("fvotzjazmiyzggadf", "RSNDQSaNKLanlW") }, - { XHDR("vrkiuxckrbsi", "mPEsRpfgwWJQivZZusPsOtNHDnGGqyiWBFTGxqauCTNzeHFVShKROKnJxGhNFEy") }, - { XHDR("dwlbzcvhcyaaifhwgztw", "yGWUbERHrBIIdHHoArCTePqyAoNNjAmNmEMlBfwnUdoZ") }, - { XHDR("ibbuzpehalsbmmtvihj", "gDNqvSWNOFUiRFOcXORaAKHWYfgObiZQODCmnurJIaQwbHwwEaBkvRhPWXffGvrCHpcMchQQUmUob") }, - { XHDR("kjhd", "hveKMxAksQPDexdOqoIcfctekambImJvruYtassnSVvOJozYkWjDVZKfAPmmue") }, - { XHDR("vplxkgvtasn", "tqpGsKEIGTcPNBRtKKqDESsMGbSnoFmZUGhmONQzSaRrhzoxlMpTwXCAPElgABKIWQzOVieWpfto") }, - { XHDR("djyoj", "WSTkuqJMMziDnVTZxUSTidiPIpwbDeahOhZPUYAkYEpScRGzZjeynFvARTDbPSylULqPYuy") }, - { XHDR("pdvmsltxeg", "V") }, - { XHDR("jqttxhurlcl", "iiQIdvtLFzAAexQOEEFVarWnjHVNsuyRZSQUYOKsBWFXZt") }, - { XHDR("aibvajm", "RLiCTYFcHjUFTkXOrHTvfaWqdOLnmCUEdLjoJuonbwV") }, - { XHDR("koxe", "SupFUOIecSveIrZDBvIsqjMjnkPJcysRnZXXjeCLDabuYABRJJRoMiKELdxbrFfAhqoLxJrLn") }, - { XHDR("wdqqowzhimlsk", "aHogbtsBfaJgJYxwepzxbbVGELqBA") }, - { XHDR("g", "KGBccmVNPXAmqwZMJmEMabRSopfAhofFSAdfNET") }, - { XHDR("swrfkppk", "NKHXjnMgYLeExpDOBPegPHRkbUMAjrSUDTeJhBPjatzhnSrHqxGTyVOdEIPUDSJehQ") }, - { XHDR("ipouosdyldvlqovotkz", "VTpwrEAlLUPaaSEQQTguXVVHA") }, - { XHDR("pwnrwzflplho", "OmsfRaynPqoYUxezeAIiEkmr") }, - { XHDR("dsyyx", "GBpkQYxnxKcmJuiogGULNaHYv") }, - { XHDR("siltrpwbmdrf", "dMUtWNDOjnEIPASaLlZhDxwtEDDqxGVPlPAIVJlItsdXohWsTtoHiXCJykQGGXuPJ") }, - { XHDR("v", "AFitXzvGzsIMyhDLsFfWqZWGrGrTpPQuLrrpBXrfzYPRqruJySRPsVhJBqopzWoXQasCCb") }, - { XHDR("csdrrdzyauxsvl", "VVjSpAZSysrfmUcLOUSvpjpymCbFqKwXtkRgzPXeI") }, - { XHDR("qfgitebmrte", "CwVdUQXkCkROdYYFkqtyoAcshZlcoVUampTUNpQYPIbjWROpUSev") }, - { XHDR("gmdzznsex", "HFClenlbXpqvYnDnGdFFtqjpjcVKRicMeEvDnseqpockDSSvHVAODevBw") }, - { XHDR("uedlqz", "CAkfWnSwBAzZSPKnQ") }, - { XHDR("scoahtjbhx", "GYUBuvkNbwlFZbPDlMpaMnNBitwIaAqzFAUPHopPKuUvXeNMeFmhLaODedmQREPQgfJgS") }, - { XHDR("inahqhhq", "uDXuuszeLWmpNBlSfMOvsmiDFWEZtmzNLqFJCUZFMMNUetQJInRMDWrPAya") }, - { XHDR("khjvqkbgiwbgt", "RiJkniQC") }, - { XHDR("mgejyr", "YmzeQjVcjqnuXgtyFrVgberVcNOSFnzyIQEHeuZeQPZpMZdGzsWTbXMtsPjwsSFfpJesJD") }, - { XHDR("hnctegquv", "vERWMdlWH") }, - { XHDR("fye", "gRpKfUHYtUDfCPwUHRixxrkxLmyaCMXqrKIBzjypwqWENPfPCIxACtioXDzCqPiCBJbB") }, - { XHDR("lrbd", "DPgZqybQYTUknjOnSszVXqnSfoTgGFfViSczVzQYyiLTQyhGOTlSaTwCIDCkbtXCGjHepsyOF") }, - { XHDR("g", "aAjiccpWliNzMsRwcUGlIXyRxQZeHiDAryYrRnKg") }, - { XHDR("rcaidohrxxlco", "henxaNKowohXLRSUEbbkoTNAWMUFdIbMyRcGPZPJMkXVLHgWnWEXAPlQpsFbrQzjsLhLwY") }, - { XHDR("vhgpeereumlvgkv", "loopvwQCkmGCfrpyUUDfbeMgtltXrGKKCKGpOWPMrxYRbAGkrLqbGvrdNCtYciWkelagsR") }, - { XHDR("gdwvaxtp", "tCpEMOxzcvmDpoFmseKdcpUppcYDdynZAEvLlkeCANoTZflpJXlUZfGImaJoLLwFZvq") }, - { XHDR("evbngiwdmdlgpbevyg", "qFxkYNNlBzjscsUBupshHoeOQlZKyEnCujHKROIQx") }, - { XHDR("nbhdoawnmpjzjtijxss", "JhheMHoENrPpLGeXmNlEZ") }, - { XHDR("bhnbla", "yWcFJjYNaMtZWhEolheyJFokRNKwvRIOyoLakpHRlOAKiLVaNuFVAUxR") }, - { XHDR("o", "ZSbLeUHWmutqhRdSMzLFEUjczypmaokBLdNrgDrSyCzhiByMTgAAuyGsUtuooKKZB") }, - { XHDR("tltonkhtsmclket", "DpYW") }, - { XHDR("mktax", "krFXFRUsYoEQSaMqGcefoCWsiuIYBZsbnMSFJdjZwXFUpCPccxvUWRkXwwNXRmAbGItYCAJz") }, - { XHDR("vggthesa", "vvYuvdItLLzMbwRYoavdjDuc") }, - { XHDR("xzfkkjdfqcbduqvcny", "cdSGQftScFsDvYG") }, - { XHDR("imm", "nZZaGpgIQCpeTbgslQoJATBBtViCQrqGmnnaJulKYN") }, - { XHDR("hnfrzztuhgvgzgldpifd", "WwTtPEppmdPPorepmNFCOeNKHdnyEOBaBOaYHogTGKCmJksUF") }, - { XHDR("zlvaolkxxwwfpke", "yfqGYnkJokiXYuihtPytKzCeGyCqmkvIzcFwGhTDxnUCzGVnH") }, - { XHDR("ge", "zGRONTXoQkTOIwYItfwqDaQFtmLbZuPvnZ") }, - { XHDR("ztwb", "cVMNNskZDVDxxtYHPYbHbdRDTERDxmeFikhavkTGSbkVM") }, - { XHDR("szu", "dJghDxddDvEHEJUpkNbOcLSimrncLOzVRZdxpAXZSChQIGDDXTtMxYMzVNhnApUJ") }, - { XHDR("b", "UChYttdMSsYTrAJrssZGmtttnOJGMbzbkeTpMh") }, - { XHDR("kisbaxnolgntxp", "XXgssykBkSBUeNAtCUQSLGAyLZJygVapiANrVzfQVIYXqiTcAimlaVYEUmhngUEFMyJSwObAkcQcYT") }, - { XHDR("zcjrgtlxxwrzbrcoxalr", "qpCXkcRsCiDSoWT") }, - { XHDR("yygbxmamimqmqmjwtz", "mApeZBBgNKTpZpNbfIBclMHjrxBmgEdT") }, - { XHDR("rztxyoqcfvdgwx", "NomOECQJYhTcYAnPTkXUISgHaMxpkdWRcHKYdLRuhqKU") }, - { XHDR("lsidkknytjwwwtvcdeg", "epABMHi") }, - { XHDR("zbvdjlhcdjizvui", "vhwPcnjfXxuXCLYrSVLybDdJwCunrFVdmNRis") }, - { XHDR("xhmuzx", "ifqpRQBYfJtuLCqCWXEqYDLxErxVrzhhhTXAQmwUOdbXXjmVPuFFU") }, - { XHDR("gfueu", "sibJxiAxhZMgzaPrjMOUjzcvahXfPKplAC") }, - { XHDR("ssjbjz", "jSxRxPuwBqRjGkgOMvuTEVIxQertgrDFIeM") }, - { XHDR("afbbpwlyzkj", "Bph") }, - { XHDR("vnllhtpqevbiuewr", "CHPyuuOHSNEpNLKMvFsbtgnAzxbmjCjQqNIgCBtqSnEZRTLKGZjVUuVarrV") }, - { XHDR("brfuhoqpjsio", "bNuqGeqHhGcDNdzzJPWHtpfOophJjDriZOXpXKxyObOdydNBqSpmEiMJm") }, - { XHDR("xxlvigallayttbj", "mvlkwaudtkFJmHLwvakQQJLAdHgUYnsrnTCWGiAbihXgSkcBTGVxbvmGRyUAEqm") }, - { XHDR("gycdntah", "MknAqzLutuVxGdWcbtBWw") }, - { XHDR("bhjqkzvnproaheu", "uauGtiMVLYFpsGFSprsZVKyPERttPWXQDcNJVfRXWcOqoLoZWDAzsUmIXQuCotLWMtOtpKtKFVfudVHZ") }, - { XHDR("tnqvrdgrfevkrlwjx", "dad") }, - { XHDR("lsognnsgrvitssdi", "jOhNGchKUygiRXlaCtIgrBLgtaEEASEecxVRybdWojFOEwCUFkbDAdnNsMXcV") }, - { XHDR("mdvgp", "viqPYYncImcjNwYJyuOEhpirjW") }, - { XHDR("uitgae", "VsADEIAPyCjWtpVgWtxBOHQfbrzxZbOblrGRUfZgdVzlEEH") }, - { XHDR("ujkegxzetcipobqv", "FT") }, - { XHDR("tkigdcqhamw", "zKXmfrfReNVWkjiZXErFoMidLSDehRo") }, - { XHDR("i", "FroBjlUMTmRUFWQRVGXNYdRRWlTHDoFszXSxcWMKDbpapiVFObepKgM") }, - { XHDR("gossoiwej", "hUwiEGpOEEE") }, - { XHDR("qtomcbgohdxxzl", "wlKCbxXkprEQpDiN") }, - { XHDR("nauemt", "btcyuQJRepmCFMVkerDbglBhOOoduWjSAxAIUtCtSZfTMjNppOEPeUpESTNTgaMNybqsyIUVwZOh") }, - { XHDR("bzknsgehlfslaybyhn", "dQiSUoERtZibvNesSpx") }, - { XHDR("uxecpwl", "glXQIYQtFcTuLYCEIGW") }, - { XHDR("hylmbxvqo", "itoujIrLKISQvivFzpKmoeesEfanMjOBCorHDWhsTMqwGeETABILeaPKndDACyGItGHNehc") }, - { XHDR("w", "gIWcGQDPcYJATWn") }, - { XHDR("whgmxgtfrdblijibffe", "hEHteqgAsPRnjMYFSobMu") }, - { XHDR("qndprepeulespzdasyym", "AUuJQrvTOPzqaWaKfmPcgxSNJdKrOLIqSwEVXVuvDoVVsQ") }, - { XHDR("mfhmezd", "msMUHEkiDoBRQDMeTZdXMAyimnCIlZiYAY") }, - { XHDR("kskglxkjy", "thCbeCYVQxpNODnJLkeImsYz") }, - { XHDR("qhfxzctxwbdcoaoywqh", "TTTlAbCLtKOZsSdxxaOQwjHSfnZKoJWiPbCqgmZTubVtIkwcOQPPJvRQELKUibPjyIvgBemzX") }, - { XHDR("wrdyeejeqsxjweuimu", "RHpjrLasyiUfrVGtXgiVP") }, - { XHDR("dfnnwoujbcm", "QiS") }, - { XHDR("wrpdif", "T") }, - { XHDR("lhgwswo", "uAMRvshbQrLBaLqSYiIGXqJItQUnkeiWwtzOzMXTxScb") }, - { XHDR("rctsodpgw", "F") }, - { XHDR("yzeancwl", "yVTxpMMarTGfhujHdYZsnkYHXFWsKhc") }, - { XHDR("bzgbiwzoyusaivnaymm", "lUzmbvAxFEDvIOqlPoPcyIpxFEhrXDoXDkiGORuXdvWCsfNrUnLFPaLXpqGXwTIvBobcJCPcdIdL") }, - { XHDR("foadstkprwiq", "CohfKWBUIJRCzOouCFrz") }, - { XHDR("xtcvera", "Iy") }, - { XHDR("kayxqgsmifkljhbhju", "pSnjETugWvFNmRMXVaiIOcqmllpOwHRbmuPAYGXyaXpuBtbHLPxktw") }, - { XHDR("pedjvakst", "qIsjfUJhqHOyCjXVgpOcqBPtPdiPVq") }, - { XHDR("jcrgdmtecdxy", "OJZYJhrUZpWLmjHXDhAYMTykzgDLIXarNBPEDXSkDbxSLkUbVNUzxkzkrxXfHlKvocCB") }, - { XHDR("dskhnrxeidbkmujuukq", "rcoivaYczxAsWvZaNIImtGJgZzTCZLTdAAQFcRPgiNpMxjoBSQIVokSdbRRttVGksqcS") }, - { XHDR("myuwpxwrwj", "DrJcQxgwOPzOkvneTcesZtocdMuidvplOiZBFFBtImHBySzjAXyTy") }, - { XHDR("yaiefpmlyloulocpkkfy", "TbbsMeKgHHGVpRrjkcKT") }, - { XHDR("zddfurwhkvjlbd", "iRhbjgmmTQiDOerxNIeLsefCHCKNbOVMxBpZzSRGNYRCQfSUemhlTsku") }, - { XHDR("flgypgfzirq", "vjINwrubCJsAuGNfdxpcNWgOhrcXZ") }, - { XHDR("xljzyugrvqrlicm", "zzxFjClaMdoJbxrKwhFKCBqqoaBlyVrWDLEraekplCaPCUxDHjLWgp") }, - { XHDR("cwqwyzzjmxjbvrcaa", "KOnAlZkvDABdMKFpLx") }, - { XHDR("vhfthalnyicccnalegx", "EEkUwSPDV") }, - { XHDR("cyctjw", "ReEujjTXpGsnBSolugysiP") }, - { XHDR("cqnrvfnybnzlrgmknwlr", "cNKlragGNcD") }, - { XHDR("gr", "diorCBJdCIuMKOrvpjFYLUuCJEmGoDdZypyAnqJNnXOpiy") }, - { XHDR("yuhfhivpsdcqh", "rAaBDGLywxHjzxsKuqmVHS") }, - { XHDR("nokozoe", "OBjF") }, - { XHDR("pnp", "SkdUXNjDEkRglViJrsBnVRINSWAwNCTUdfXCYFotHBNEhcxkGZ") }, - { XHDR("kmozibcffsq", "PrjitHItdQDALAGrJUPLHCcuOxTN") }, - { XHDR("a", "vJQbpdRhDqDJtXkIlRcJvZhJDPlujfTregyANKQRDfuXaoJaMvhy") }, - { XHDR("ypvump", "RcpHYRFehVJQbYhskmiBQsBhNrDWNQLUyXw") }, - { XHDR("twyplprekm", "mprPyYmvNyyYmqIVQpOKpxodEWOPxSNeGSLmHTnZVGmhidkayETUaBNEWKyCMjk") }, - { XHDR("sfkakidussitekam", "okzbqRMyZXeRwqMNnFDXGKoBBCnVnsZRYmYYgQtFdxeevLEzhb") }, - { XHDR("fylvyr", "GDnmlHR") }, - { XHDR("dvcluvywtwh", "orWcLEvrhhA") }, - { XHDR("obdlzxpllhmyodazk", "tOhFzQtdUjMOiEz") }, - { XHDR("nhbdymlpiw", "YYRjVgnnwnytlwrqpvzNtIWhCRAXwIAodZuBiKJxzeZvJNnctyEUenfdpuMiAWWKHSFSzaroimhfROS") }, - { XHDR("bhgwvvfsyfdswtggl", "p") }, - { XHDR("krvfkddrwga", "HramWaDlYP") }, - { XHDR("xidafo", "FldFbXBubKBByMatmvtikIsZgXrASFyrWXktyWKSVPHdNPBEzERpBigZOokpCjfHczoCweqTNCMx") }, - { XHDR("uk", "OuYQtHFJtoYzoThyyxTcAHYzbOJslQjcZSeUDTIHVaxHJbTDkXnVXnAXbmHAWqpWDqmVIrIoTVghq") }, - { XHDR("v", "JStxsiAeXmHUQyQDiqfaalLLTGWgOCZIdFsPou") }, - { XHDR("gardcbgfxthfie", "hxCKhHWkQdREApGNtsVcaPhibhMplrIFsAEkQIJhGazkSlQRU") }, - { XHDR("ajxlmkqxkh", "LgdGyXwriAluBUqLscGeuRvhCiBcvncMqNREckwtaHnhXvDoddzGZdbferXU") }, - { XHDR("onjfmfocekhkfq", "ZTViciCIty") }, - { XHDR("hmweqabohnpehvclylfl", "CseKCDseSauSgBgwGDveHqOYDXoVTIcfsDwxyjggGSf") }, - { XHDR("pogbrsseo", "seQTualCNwspwsNPkMEWirywcViWHZyK") }, - { XHDR("ukbbprfke", "sIkHpcfUbwCGsULlauixQagpAnkLwCwyGFEwIAdCnAS") }, - { XHDR("wizslblsvqq", "aMAaijQUyIkSWIJUVJgyfTstaU") }, - { XHDR("rrczzdnrfwyjxk", "TgRNFcKwtorSMFtgjLFumUUtTGZFkFqJEzAVIhCIlcaAHHxZZnsbHYZgXpGaGeiVtzMS") }, - { XHDR("bfyom", "PPJbroCsNsYJbMqghPoiprSvrSTADootfnHUQQodWIrIqWTpvsQiouTyOHq") }, - { XHDR("v", "tdfeHjZJEKJBZ") }, - { XHDR("dcrlcdcpfc", "cwQxHBUxTWFLIevjZFBvXVFQGOHXWNujgKjvBXdVPbpthJl") }, - { XHDR("u", "LuhLBlUmisZQjOsnJQTyQnowotLhBfyOmzcKqZaFDWpWcTudRNlWjfkGDvxayRhGDbSHS") }, - { XHDR("snjnnmgwossecpkqqkyb", "dSG") }, - { XHDR("hyfqcrvpaw", "YZIupfAFIQjupVsicweVxBMoefnDDtKSjstCBxSRTZHGZNgIqkzBWXWjsTHcyAHIqDQLoEDsnZtTtjx") }, - { XHDR("qexpfcldciyn", "XrMXgRyeDdOtKXjVrLECQRRInlBlQFaHFktvNliyKCAeNVDu") }, - { XHDR("scqnembmkqijjb", "aIBRadsqPAXgVgThvdoHcFcmpG") }, - { XHDR("alwthyiqprzntoqvg", "SSVyDDzTspWgDsKfsENxhCDKxtOHFjOTozaaQxUfkIlqwTkfvPikArEiqmfGfIGgJrhzSZofCFx") }, - { XHDR("sowh", "CZcxuYspsoTZsbEiDve") }, - { XHDR("pnoziwfpnjqdr", "YIsfmEqCuvOIFVImYUIsRHRCDrRbuflSlHoXVGYicmLppcZlFsyuaAgVKuKfzJbCZNIaw") }, - { XHDR("bvvdxxbvyfphtxzv", "TORjetuADQzMDPinFWJxLvHSaIyZgaKozdvYYNVeaOkdgUphTzfUSBGYyRCjYYkIgkc") }, - { XHDR("ibzaxixxmhntwhtovce", "ZeLBGrhjsAPSiqyfeGfjuAnlnVKtCPRtqcUYVRFaxOZBzUPSLSZvAYmbKKNflmHnkhfyisfZxWGTWTW") }, - { XHDR("grjgkgmdoxee", "qajWUtJzcUqZdbsMnEQSDKnRFtQzwJjSOXpdBaPUaM") }, - { XHDR("smvrpv", "iWbORJtCvPngZKnHrduFtzXIEOyIrCfl") }, - { XHDR("tk", "XPjLBKxXNsLKnVFJuLJegvMEZkN") }, - { XHDR("elpmenbbdcsft", "BydKvTaIqaQURIa") }, - { XHDR("qfjd", "LEzMxxeEjpdzAYgWTQmywYKmAWSdgLzhYSivORWHArHnXIeHVNLiaiJjpLbskSmLKHtOOjcMtGTLfWkb") }, - { XHDR("wesgoaklgmijapfko", "VwEWILnGSWxggWDOQysDOdd") }, - { XHDR("gsabumnkhsqmjktfvum", "orLFfeRpxuBiwrqbayWtVQVvqeVwdAeSLZbQpQoKrwKxDQ") }, - { XHDR("ilrqbrfvvmmuplkmoqr", "kRAGcbPIraLPIErBPYHtyBqBGylUteBuJRoYmGXjAyetEyVeGJgoQxpTfyyxvpx") }, - { XHDR("hfofzt", "eeTolmBErmwwPvzsxgeAQTOhUcJtHGmEqmHWEpVsYNhRqSzJnABLSzYb") }, - { XHDR("mtfvmnnqhxm", "gIUrfpbUIsbNJvpnXEIsRpFjjBq") }, - { XHDR("ujtzmmjkvifu", "WvTEmBQgwlifCnX") }, - { XHDR("zrmwyajwq", "ebjHbgkNiMuYrmkyXQztNcbYQEXzvIwUOZDDqndDBPXVqfuAMzBjAkHyvRAYTFvteeFRsLmFmAdBwkc") }, - { XHDR("u", "jkIkSqogiEJCWWZkidHwTBGil") }, - { XHDR("snpcswtocbghhf", "tptjKhwxahknCPnbZTlwKQLfiFUFsOGENURYexyvRPVjmm") }, - { XHDR("vpbsvympyvzlxhhea", "zctjmZSZphwazUBbZVWQlfXFUlnYltfatYruyCbqJZWZvImWuFTOOSAmihKJBKMSspVDzDbTqshDQMy") }, - { XHDR("mxwtbgdpxbloswheupxo", "RuSRBRmGlNfRyjNyIV") }, - { XHDR("drmpswpmhiaudlpn", "nqgnIZROOJzszTAP") }, - { XHDR("zvwwvwrohpuwuip", "gQJYinKyPZBaUlfaUzUnxqNZmqscEIfSSZ") }, - { XHDR("zwougyqkiintv", "ldLYapcOyrYMAWoMmFJimFaFH") }, - { XHDR("uwjyeigcfncryxxazs", "vIqERLjrKYCGwPDVuxdD") }, - { XHDR("mqt", "GdHXdZgTSHwefiGpfUoYlfkvtjciHDDeWoltWdgbeVfIhgUNCfEUarbqmpN") }, - { XHDR("jskjgzeycdoptiu", "YeRzcEftbtvQDRBanbUCuosNCVloVMDddOumHGEOanBAMSfaLpdyMtbX") }, - { XHDR("rdswbminuarmptv", "yoRErmYHYBBoyJHSiMmekfADbZSPQlb") }, - { XHDR("bwehvkkbkd", "tyveokcSmPDmdWxkVqrWEWBOeZbFEUvTTXIoxJNsTOAGSNOjxExw") }, - { XHDR("zuhmcnsdgseiwusrofp", "vMotGEwGgmTDwDjFJkNGcFCk") }, - { XHDR("bbhqkbvvieu", "RTBMWy") }, - { XHDR("iovhllkpo", "pWfBGGSxgSEvAabTcSeZrcBMjCXxXGGkpoBCMFOUKvqWfwUpmjNGumyktctGMgCujAfmOj") }, - { XHDR("jzazflbgxf", "PKzMdybyYdYydUEDstkjQVr") }, - { XHDR("ugsuqvzyazdxmznj", "qKNbwkxBnrfLdGuLPTfZAzDkawjxYM") }, - { XHDR("wjekwpvls", "RwutN") }, - { XHDR("ojpekphvmluazyagj", "nGHUpwYTauOGWeANyqnkaHDsvgxYrVqLkJFBItThRNVfHxeHCpYsxlXTyYZNMKnTaaumfomYX") }, - { XHDR("kmoa", "oZUdFRKRrmshRSGyRhnIXTEkMpDTEPuICQmNvwPkwJOxcjxQ") }, - { XHDR("dihtrzdg", "bTNcFATJDzxNubtbEcUgSfIrsYTdobiOPxjwVzRwcwjgK") }, - { XHDR("febgusrrgmhw", "xgKLTKhBkCBhehMCWzbKfIJYsWayEdvzabGCeMfROWhlpprOJlgaXNafahof") }, - { XHDR("hugnriwcgibam", "plhMrEnECkfhljWUJNoCUZmGo") }, - { XHDR("lzupz", "XMak") }, - { XHDR("prdetdyoanhos", "agEDoftdvsTvxjkUVhNjCz") }, - { XHDR("hnckkqnhkczyycfysgr", "qoYDOGxFLqwLEalhLIeKsSvTwaUjurbNicsXBlqyWrksXktFdrLxUosjVpgLYiMSE") }, - { XHDR("eymthrbhjkutjamd", "DBDEoB") }, - { XHDR("la", "hStOaAoDxUeENtjpdjBpcXIOzdajXoNwoVdanxktiaCpDSVAQFjjtqEydPoHKjLbrEmuOejBOnX") }, - { XHDR("v", "IFtvCUdFitblIoqbFOLlpgMEtZdrbgvCWxcmGWialeKByTSfsUpvkQTnsUBplJEomtMbKEakGas") }, - { XHDR("xwkkhntfexfkekw", "LiJHnSLvLAboJGeLXYnqhS") }, - { XHDR("gdkzyq", "pFWyBohROxRxDUEGYOpfHGVyrgjeyiXCa") }, - { XHDR("ypoqehaxbajhhyttx", "ZtcCrTUwFyKageAavXueMmxDUZyIYrKISfvqTPQorVEsDJRssXAVqVcgoKkcDkigcVVVZjBCrOfyfK") }, - { XHDR("jnvka", "RIEkDAtbd") }, - { XHDR("jnfspqwgdq", "PAMQrMOIWdtVCOrCGEZFIdrdbtJOLSAOaxnCisWYdom") }, - { XHDR("rmdlpuxgsgsvfm", "lWxriDZfjTjhHEgaWNxLtpqZWvfSbeoHxB") }, - { XHDR("mubueo", "mnunFxwiAWTWepdPDomODHgmOaqhjfUdRPCdaTTu") }, - { XHDR("xzhxwhzgx", "kwhNrgBoxkDPPkgqYJANygOSKtCosizhvWwpLoPpIqbVHRqbM") }, - { XHDR("zxyvwnpcajktbwiqwzoc", "XPwCPPiqGSrPYjsxdph") }, - { XHDR("nhedohef", "H") }, - { XHDR("xfs", "dTMQYfwhhISCFAmSSIsH") }, - { XHDR("mspmthmlblgcflhpntl", "eCTokKhGUTUZNViUDHdUFveTrvQOGIleJthiHGmZNzZztDWhQcMVcAJIDvFbcSesnSKSnDMVGoga") }, - { XHDR("awriksnwrehqqyhqq", "SLMyuPoJfYOvyXNxVjkKHSyatWEUj") }, - { XHDR("uvrhiz", "giPyDBGTWWDULYZwfbFtfKEZWMHDWdgxgrPhaJUnqhfGZTwYekmUi") }, - { XHDR("hlgxzcnf", "NgwaQCASesPCzjbFhsdUBWKkasIhXYzWh") }, - { XHDR("zngxu", "GEANrzybijHEBKfZxxILuNfUBhruZahHXeHSrUCyVmALVtPYTpfqbkcfulZcjrXLSRbxcsrvWL") }, - { XHDR("rkd", "VmwpBbJhHbKyaRu") }, - { XHDR("tdidugpa", "AmsxgGAYJfqTSeRCfkKcbTilobxZUiSpBOBBWEFfYGInhykkpCUZEJkya") }, - { XHDR("mnvooqjqstbys", "KEQBGUwzgKQzJVdISluWvgDskFrgaRUERzdTKBztQlmORnpcwNtVHWzInykYoYFvWniEaKxrBEyHHE") }, - { XHDR("ln", "aIqhJHHAxAecNlGcfBKFRZvieFBbzzOHRwJHZCcgddfbHAaadRJCEQifbjujZtNb") }, - { XHDR("odlnvbmrihmcgylfzfm", "ZuQBqsPQrERtxvgoZGdIcDxScsSLFlSFoxpAdoHvIfpjchgDnArlUvbEiXfKYfKGcbh") }, - { XHDR("tqktoqplclurtffzlkbq", "AXqgfiRssyRHNnGxRPUKnP") }, - { XHDR("lsqmopkbzcst", "dcVlfrwJSJpHaiogzBhbFlLXfALIMZTeedQQMjNfVJEfqeImhMfTjhqHMpjmgjyknXiZSN") }, - { XHDR("uumkmgfwdssg", "OInajW") }, - { XHDR("yiucnweipiiykgqa", "bNBxteknNhpTvwN") }, - { XHDR("naxkknykjbalmahaqgvh", "nadVgpGXRYUSCbatPAxWPWhrTukTkdlJWAnEybyMJpJNuaVuADTajPhUWJvbIBBmE") }, - { XHDR("toviaahdjgm", "JWeyaKFqSHZJkVNSsvfDsAeqehvsCzMrJgAZoRXfyftqKxPtahuVeQICMAHoNwbimz") }, - { XHDR("jiikjxmenrgbq", "hkmRBnCPmudkYuETuKlGSkYNOPGuztrGGEZStClnQwhGOMBzLhabrfeE") }, - { XHDR("gkcvhcymrwniyuwfji", "mFoEbppUWtkvvJutKWjKaoHpipVLYaWfcnfFP") }, - { XHDR("fbcoqmsial", "DuNrRKjzNmNJmECfhpfostIdgMrOMjZzRdWtwwKwXMRkhmGm") }, - { XHDR("rvhpi", "TFXdUVDquyUImRrJyAGFdELAgFhutAINcaQpITNVzDBxCOwPfQrOGdvmblJOg") }, - { XHDR("vdok", "rGkuxxnsOXrUyFjKtCYGaQKoPEf") }, - { XHDR("txnublmbhgjyzuora", "LeoFOWyLpBdVCgluALYvNewnCaMvzt") }, - { XHDR("gxucexgpbtaraug", "sZfQsADstTRzJHDUmevVvrjtqQMAcuBwezsJWwCBhJGATAdiFBYuMBpWR") }, - { XHDR("rmiejekwnpjetsziwwlu", "SWDDMmDxSYzeYhTgXLtkDlKCIfWbpktPkAkHiBEYSbUHflTryAVyQyNGBejKotJ") }, - { XHDR("nqz", "alZjnyJzxxdaifWmCmGDEISEIHUsvFuKyYqIsXBuvBaBDwkYuDSBXjlJOPVHZGyVp") }, - { XHDR("w", "koYeVxfAApPrXDcqmgSlXGXkjSxcoJnKWHNXfTIBfCCNxOJjCyIYBdgAhfxTPqiGFAWBsNMyQqKAvsf") }, - { XHDR("whx", "XUawHfLmhlCusUviZxQZExSGDpZGlLsQn") }, - { XHDR("ieiyrtwfbhsmgncwfal", "gsYEWSGxOOQXQbQymRXFHCanBWodIRLOGugpDAutiWqcUkvIQcVOkCKNWcczPfQsfNyGJUoQdsiICmd") }, - { XHDR("srewxmmpnshgcubwqr", "WjOpdzHZknyicuNsySgllZAaqWFdYoXlNKxckjUEhWqPSa") }, - { XHDR("nxxjsltlumhso", "GDCMgDyCZyaTQuCPYHYSWCSWgZuEKn") }, - { XHDR("rfpvahahaijupaoqxr", "YmAOBrYIiOjBpfPnfmGvyHEUuWldzkMWBasWlhSsLrcisAzvklcObrqbElVmVgBMGrvkZg") }, - { XHDR("tkeyzjcroqrhaf", "LnvMZFzmaQAucubROiwSrdxotPoBLuWzcYbPRDHXCMTOZTyjTlxzJQPlPhFNUggJNiSrHjdTr") }, - { XHDR("neitbimhmihda", "gRnkyFSDaaPJrTEVGk") }, - { XHDR("wyatblfbagyhksnkme", "NTTSHZbvIxNmeqjKqxNysqmktOIBKBTgxjKrUoPTZoCwWISACrfYINfsewX") }, - { XHDR("iotxdybe", "WaTHznMmGoMmROtJFdfAUvlEAsAkowiUUbNunZbkSaaqvLiLUJWlOBwQxiSvpSSturbDDHqpTxCxIr") }, - { XHDR("kwvqlyummhrffmvholmc", "IsrEisrETDFKRuYEeMamMYeQqUkSUNlPFzzxHgTuxSq") }, - { XHDR("djfiqftoy", "uDuWBkBoIFFYqTfuPFzBTYtxqfaqPLvanjuFgGHucmowuPjzktsYkDNhnrYfLccepcLaH") }, - { XHDR("oaznybpih", "EMlnoXhSRAUXjVLwrsuKKQy") }, - { XHDR("xomdqrfnpg", "EYlKVCvPlrMdcnVqLYSYlfJEuxgoYoekkcGsgxbyZkLEdDqeuUbKdZRNbPrGULOiefqNjLuVLFl") }, - { XHDR("jgtdtchdez", "XiXIJFMaegLoJuqtKucYLFbDKOZKzrcsBpovLmMXvb") }, - { XHDR("bzhknofng", "kSfRMrMJafSaliuWyr") }, - { XHDR("nwwa", "MzZYXCccQJFKJVHnRbhDleOhxHEyQrV") }, - { XHDR("wvngguqiitnhajcvn", "LltywkigN") }, - { XHDR("qgunaazl", "dWiozKWDhOFlCKjJLufuwTzTypQHuwPGhFQimxcuHAGjSINyQlQoHUYSIoKsHC") }, - { XHDR("fxshqxqrhjffjfbaik", "NvEBoRvQrdKqBbAKtCHcQOkrSInVcsjyezGrfouAHRWGjifQGoiyZpdtQheEPBV") }, - { XHDR("bwgh", "kSlzUMsTlwwDDCriqmKJWowIVyrpLkzcyndvoTvXefobG") }, - { XHDR("gw", "sTCAssJSzOXPYHffRQwFpAtsmsGlUJEKZoFSWTrDwTaSoApZncFahoJuDlrPquVQzWRwDEesZrp") }, - { XHDR("t", "grsGxrvwFGPAOJFDFnTKeqOPvTdKJscUDKTSczEYumYvQVmmxAuGQhgOhygZcHJSVKlfpTd") }, - { XHDR("ynkkdjglb", "YNojsbrwcYsvZcVlxYGrACHjHvyJEyNspdBbRnrnoJgVnu") }, - { XHDR("bypqaahmckkp", "BgJLZPNGSsBbEAOkTrtEWSzKkNFkuvlSonEvjZxUoad") }, - { XHDR("agpgxaacnhzbi", "UAdHobxBPIttRFfwzdwqGvjmIjQkGSKuzpslIKLHBoEAmOsJoRDoMjUGYOnLwmkJfHkdpuzzKSMkOFOb") }, - { XHDR("klgd", "LPhTowuUSeklcyR") }, - { XHDR("glzbjnjexztaqvlzgyh", "krdnHRaiZr") }, - { XHDR("yumvtkelqqw", "gRPPBwtdEKsFWzomoPjsQksbUSlqOPaZSjCndLiWIanpUrbvqFOPBpqLhndNPkKdZxFBREDhOqkHsdy") }, - { XHDR("mypxkloyjhjnrsptll", "mNubzClQBysktvicAWzGovfOBcSGOCsERifvlDiOXxrKyenClyWdRmiwtB") }, - { XHDR("rciiesvslcuxvhhv", "oxenVacVDoNEmNUNATrOwKiQoOlaMhvnnaaZhQolwHAFJZerbJXsvuxprWuKIkqliTTrBtvDOrTh") }, - { XHDR("aagqlmzhdsnvyetjbj", "hdsmBTROkSmDSpvrtXxlNDz") }, - { XHDR("vwjisumfmeiunrmj", "TKWgspDiGEmnAtdXuaYjpedWetsnSUEYKIbkgoQXAZmgeBEo") }, - { XHDR("cnedcjadydy", "VXkLqUsCeVYqTJnGoSPsYHQXuuHDnaGpCEUC") }, - { XHDR("puijkhxiytcnnef", "wrYAqriVvseuabqVseeoZasJRWZjNVYO") }, - { XHDR("djunvvlodjk", "ICOKbfvmPYMOrYSdWlkyHdedMZgaNxieCiCjHNHezckmPnCOOpdLReWACTNuprekijkZQynIXARVq") }, - { XHDR("xlffkubmwslmllu", "IibwRiYqLakifUideNoyRxSqOgoLwazY") }, - { XHDR("lzcolqjvow", "rRLmJzIDKhdKDuGtVSI") }, - { XHDR("kfmqnrrfcevdkpcc", "HvJxseAwYFQAKhiAzHABQCLyHffCOu") }, - { XHDR("snvugyl", "qyBoWhFdFxwt") }, - { XHDR("iemiezzjygtv", "rnQTWIEaKMjYKoVrGFWmaTgHvPUMcpXMEvvVhzZzUYZlPADHDHiaMZToLBfstDenCkOa") }, - { XHDR("lph", "NficVAZkTSKV") }, - { XHDR("oapef", "CNxrMKvaOsjQVoeGnJKunujXbTNgZpMZaoqEzPUrTVHpIcXnLojehxoblVqpCjCsGl") }, - { XHDR("tkqoldqfugpnxekpobf", "bucecSAPYdQMjhGoftjmoxip") }, - { XHDR("pgxxapvkpewilcmqmg", "hgGpPxzzyqGlyUpNtJCGnsVmmjajdZJIiiFUQxjxiQNLwJa") }, - { XHDR("jxc", "ZGUb") }, - { XHDR("pjah", "QUQkpjwS") }, - { XHDR("rgwlyjaniks", "lAtIjfpkHSi") }, - { XHDR("ledwwcpiv", "JBgQrDvrbUFgRDGrKtUdWDPzoJvIYqVCirVW") }, - { XHDR("wiwb", "hOIvobPgNQeRADNRAOUqg") }, - { XHDR("wsyajvn", "gAuWvQpNf") }, - { XHDR("igfoj", "HLCmgL") }, - { XHDR("edtrfoz", "upCUYqLghJYQUEBNej") }, - { XHDR("qybly", "OgdYuIdxFwvDSzVapCbdEoGBzuEaHWKRrwCJGXWulynLLtRLIG") }, - { XHDR("tnms", "xlsgnddAJLN") }, - { XHDR("qhquzqk", "EEKdFIbQRzOxFYbveBMhrDGPV") }, - { XHDR("obrtfjwzsqe", "QETw") }, - { XHDR("bpqdfyjcumkpmccpooj", "VoxnUZdWQWYQVlHNzUDvnhHrYVfMjILdDSvQPridDluSLkNnrXyFaTnZVOHFUkQWgq") }, - { XHDR("nxke", "GHdgAjowSjfmZkerqMVeSfFbyPQkTJRIcDYCsTCidRfebNzvLGYqRtHgxCjvOMzycWcXqlyefOU") }, - { XHDR("omcyxfheecl", "gwWODUWesHQDYDApwbaIlctzlDoQmBVYhtfzjrgGV") }, - { XHDR("f", "zGTTsHlcgRjZTBOasAAXuiReAjxafCQrcGOLmZcukDGvoZpyOabFYWWnUIbRiSCZZkOjhqpc") }, - { XHDR("qjyfhcjean", "ClCCFRshtOBuhLwZbGbvkBVgQOeqncrDMGyqSFKbjPpqRl") }, - { XHDR("ztzluehtbxdbpswec", "ULGblQokBHGlHzdhIuILaoeaUKpqUdAYUQzyfkUoCwdnWjmoWkoUcZDPmKxCQLHrQlVqgXBknOVYnd") }, - { XHDR("uvwgaxyqoxi", "AZIpcnvzblXSGmhougNYOWJwksLk") }, - { XHDR("cwzrhycioftxludxbei", "MOYwGUhKZlygUCFBMllyBdkitLkkXNbccPhDQpvMMrFXeHmRWDXtbHnBWcckHOUXhwOoTuSTWKT") }, - { XHDR("ylmemytst", "RLJWAlqefRwJY") }, - { XHDR("ybcbtnsrcgde", "IqRBiKFqntjQjykcZaYOSaKLMaWxELYLGVnYrFLPinEzfgyYYHzwSiSIYObfEPpBF") }, - { XHDR("pz", "mX") }, - { XHDR("mypbutgkguvubc", "uiJgfuOwuWhikoDMQYRMlUHqVLZnWopaXJGNePtAEXiTxhiyUyBQ") }, - { XHDR("fltd", "RQDrYlyoKWsomisTHP") }, - { XHDR("ivctfpuomptdfapy", "zyICaPXkJPYMpcgKuMMdxYoEZqgcWXeIibgZqwRMgqrZuhMWdlTEsMHMITbYifEzaQlZmOVLUKFpg") }, - { XHDR("tawnmedzxkil", "TikoxVsFrlQgeIivNBnslNEEGYemeVAxpaCZVkKqRfPs") }, - { XHDR("tuabmxltz", "ITdvQsslhvUaenBwQl") }, - { XHDR("ckswymvmykt", "gmdsGqvxeOjWxkOiSimHPtGdWDavqHJigYYqsEjTefUfKEJFlsmgAtK") }, - { XHDR("n", "eSEtLolABC") }, - { XHDR("ihtaymcyqfe", "WIemBSmLaXuUcRcsPFGx") }, - { XHDR("bvknctgibmbdu", "wjqUeCtIIpvWPzxgKrIDzIHgGVSdLK") }, - { XHDR("vlfdza", "MfEGUfBYy") }, - { XHDR("zyvkza", "j") }, - { XHDR("fpa", "SRXkrwEKswrCiAuwCIXiLKWtkNhaEClhrEngCSIOfpxUXxgyryXGWbxgIvxGtGynHOLzYV") }, - { XHDR("loeyc", "BnCkhZhEztkCTidRoEMRgLcLlaewooVPczuuHY") }, - { XHDR("wttiue", "HIKyaYrvteqxMiXgLdAGctbBTzoyRcApBSVtVSLrpQalkVQoJVsUChottmwlANOUlqWfjN") }, - { XHDR("bpjajg", "ribOwCdUREehrRtCyomCKJAxLJUmRGxlpfVrLsmgsQrxANLlimMaHrjlhCRfEoJXggBYLBdfhABmEpw") }, - { XHDR("bpbatvjdktwodzyb", "KQJYsVOgSgQJHlthdAjLsfCcBBFgOkLFjfLpueXkXIKzbOZTzQzkkupLqdxUVWEhcrMqqDdfCswJjbsk") }, - { XHDR("x", "FKJKBTMHRTiqEaqECsogacXaobiO") }, - { XHDR("iqwln", "qJyTFuxSEeVAAKrzojiqgeBTdYEJtLXDLTQQMMeWjjpRjPsOBHLYXo") }, - { XHDR("pfxerbwgrrrzwjpsxg", "dfiofhgXmBSWZvVbYLRYuQYzCIeqU") }, - { XHDR("rzqvyijblzda", "JSzzLKGxHIgxCLjbctXOvFGCihsfzWthzKJSkqV") }, - { XHDR("fewhziztfpqyprzvk", "uukmhbtUITFaCwsOlkaVcvgOlpRIsPypMehycaqvNHVmI") }, - { XHDR("hjyzadumzwqevnibd", "gCuzNFhsMpo") }, - { XHDR("ajxrupdjrjlmbhjqla", "qqfNZOTBMRmXvrzbgkFhDorYRLyweiPJZNWnMuRdEydZtUjHwIdoWBncChkRhvvsZBBaBlVt") }, - { XHDR("kqbvjsb", "gUoGTzdYihbTPFTQPuSjbJmc") }, - { XHDR("osxqwuswesfasyfu", "NUtIGjssgshHYGkbvBcFtgXYNFqBooFxv") }, - { XHDR("gb", "RPZnBZEFvqZPmfyRdqGCbMTzMvFAMUFu") }, - { XHDR("nkzvgulec", "CaKPxqohGUzLMuvMGAHblxMnxoZaihtSUaaVZGrOmTomUpUnAWxeBAmcWzi") }, - { XHDR("umobwkncgxtrq", "WqpcawUeFgzwbMHdvbtkWAsDWcluzsQTXGxaBPsLIqjFbHXyjKHCFQHERBgZhmiERidrJfPzCgC") }, - { XHDR("gqqunsdvpar", "gutJIAhwZtootocMYmCnZABvJdhOdkRM") }, - { XHDR("dnxiyoqzudbpokxhdoll", "ykkcnWTeAdwYhXycClzIJlJqlGWjTciGVKjEJoonfeKGlyCKgrTgSyQCrP") }, - { XHDR("vigmjnirxnoatsgrr", "KvSZbemuYrqSXHNJiwXbTMYsTackXLPLuO") }, - { XHDR("cllji", "wjHtkXWRMHqphVVucLszaYqGeJrfMvafvSeqpYsuxzSLrbJBWFGpMfBnmU") }, - { XHDR("iz", "qnGwGsWgJQOyGgwnvKXKwdMnHbZlbCalOH") }, - { XHDR("umg", "GRtPBfzFlxPdbJNPrRPXLwqYZoQekF") }, - { XHDR("qnknnzumny", "MiUgLyTeukrQclZCUYgUoHXFZsudAMxHQwCZmdlCCtdROPkoCmivgvFVSi") }, - { XHDR("mdgwld", "BENFVPvFEVTpZYWftZVXBdifgPWMhRrcljBOEHqIIAFBXDKHAaHBpZKhvrqLaxossUXacNYkb") }, - { XHDR("babaypn", "HtsWKWLzL") }, - { XHDR("kghcooyqoyfhgngb", "BpSeEqcMAnHbjpJZfysUcenPxJOpvdJZKwmkCY") }, - { XHDR("zesskcwvmeb", "AuhwDbySIKUAxAyvHNmtKfEf") }, - { XHDR("vflvahhtrolqwinn", "gxE") }, - { XHDR("u", "wrvoLlvxaHLfgvGxQhnvMaiaLvNcHalevbDMrfmGZocmPrMpvaNj") }, - { XHDR("r", "WgnCbRowIDtxpqWdxsucmUtKtvuYJDmlLxVOmOVpyV") }, - { XHDR("iywliwqiobrt", "ByMHtxoTMms") }, - { XHDR("ktcfrbggqqorppqlx", "boskGJgmEzMUJunUjuGcocLDOWfKeYYnyBbSafTnGnUcRivNNzdTVVHTmiORdGdcrurdFjOynzjMUHK") }, - { XHDR("ekrrr", "FEuiHeSruEQSyDquVDSgNXwdpHmCRAovkGlRoGovXMPBYeUUCxJIyjl") }, - { XHDR("nozidvfursbj", "SlvaNkJwWJ") }, - { XHDR("zmtundyiv", "qixhEiaHHdKSwklwRLAdxPjibVDghNKpiIPBnGhZqTPhvhaTYHwJyfdwurPaiSTSErT") }, - { XHDR("qqftlnsribg", "lXboFjyJGtzzsnpPBSAfOZCNLvHmQOSnpIlsAWGhelHYiOTTAFwZBxSewxHRUVSAZKUwjVKaQy") }, - { XHDR("d", "CMutsQGMLdZJvpBNUfJcpwUqOCccJeZwDxSsZUvrpUmalAFQdENsUxXdWwVfdHXrdlXDlepOXkveUuIw") }, - { XHDR("muesdkbtrqmt", "wrsxazpVutCNMOYerVXEEeXZyJQxjsgYytHjXo") }, - { XHDR("ihxahxxneqlfbr", "vddBNIpCYJYCjeLPLHHSZvRsCGJxMLxbiUDfSVgAvZSZwjcCqxeJ") }, - { XHDR("xkoengnle", "NwJSRxsrSQPKIFfUvFFMeXuOcZdfNGzmUrjMjiWgnAWnOclZhAhcevxlqElceFTawoa") }, - { XHDR("ltvervrbpjsmauyy", "RZzWUAyk") }, - { XHDR("vnhijtflom", "g") }, - { XHDR("epojf", "erMtImqMEHbXLaXFIsdOvXyIZmKRixJFAzGGcFtclPVpzh") }, - { XHDR("kvrfedwmdleptx", "BKnfsIDPAZWQTpGPlxzElhVnuYUVJwvBcQNZsihwzUiBScvZksYWZBuEkTBmvHKCeYPLJhvIp") }, - { XHDR("lhcakmpxzfs", "MLabgEbXgzERnuSTktZouhwLFFkIuIxQwjLsijfcWqUDyNrpytrxLi") }, - { XHDR("gojw", "IqZKqGvavlPeYrNRWtSF") }, - { XHDR("kmdwchmqk", "ulggdjlYDoJFDYWD") }, - { XHDR("owxfpqps", "oweZNxooGskdYERaqRniGkNXCnqbWZqVgkvCCEaexixTdftSJQCUmkuz") }, - { XHDR("yubupewl", "gOqoXdtivMAjMUjATHnEZm") }, - { XHDR("ctbx", "erVFnRiVryAFiToqnVzfGVoVpIYAOTRxCjhIvakHKdmCzY") }, - { XHDR("rdfr", "ZHMYZqcHUvNRXzAzKNkwuouvFbdDcwCVwxDNnjNtCAChYEyeKTy") }, - { XHDR("njgydhvkqih", "dsvi") }, - { XHDR("gaajt", "CcrinxtqWuFjMQWYCbHtFDwA") }, - { XHDR("wdqpwxkoxzhxaioo", "YpJPfhLYZRif") }, - { XHDR("camxkipchfppneywke", "bNtiKXToFONOYkxQ") }, - { XHDR("naznqcxjtir", "YkxNVymoFjPmuQaAucuLLBfCAzuMvUUCkTnRjBoYzznVuuzixhLHjgMAUCMXuVTM") }, - { XHDR("bqrvovyaetalfjuowbo", "VLmtCAioYEfKYCHXShZgxCLtNvjbhNoVmOmDlDLjvVZgbSLcUgPO") }, - { XHDR("agzbjvg", "HSIkRVzfvJurhjuKytWFLehQbexkFJeHtD") }, - { XHDR("jhzmmgspytvqixvz", "bncJNxzKOgnyNzCwVGFdelDFAkmZKneluuDSfsbpGqZgWHNsZXyHMSnMqHbKjETirxr") }, - { XHDR("sfofjidivunrhmmjwxu", "wVllGlRcePsAreSnaGsaoOLbMPinYhROsIpzKQJGRAipGGruaErWIGqcGOYChAfzjMWVgAxqs") }, - { XHDR("en", "YEEakjxJWCiLteRMxWxxpvoYKcXINwHkDitJpYJWgkYJeFQpABHvqHuGFOvSuHlwfSayTv") }, - { XHDR("npowbylnhqt", "SGyvuGVwVSyiCnWhBZNsOoibCIFDhklmpmvUvnisYXoeMECFjALvikOnsujVdrZLa") }, - { XHDR("eybeop", "cbfKjhAAsQrdsiehSojmtKxZgzReSICOYLObkiklJzpKCoFWeHNNtncgiEQvxCspO") }, - { XHDR("zkclmxqhzqrby", "CerFKgGjUetxhCOpRKeRzIbJUZVEWFEQLMgMQaeVtBEeMYWzCfvzfcMrzqtcRLJZTWBEdMPe") }, - { XHDR("izwxzn", "FzwFYwIJRZTwytusihxVRMH") }, - { XHDR("eojbizbtfgmd", "NOxSxvlKFcgcxemsBDBLky") }, - { XHDR("pnwhpdqnxfdext", "AKyuscVxFlTulbJSGXDrzKDvHny") }, - { XHDR("m", "NyAnlInDLnOufkvmwvBdhzAEewMlTnsRCwxLTlcziLeTSNjhoKjLGCXUbD") }, - { XHDR("fklhsqhnaqqzkcs", "eaWmQPztfwAlBYdgdJCufTGeM") }, - { XHDR("rihtfhrnvymuz", "pozmgqmBQ") }, - { XHDR("tilhdxubeepwaaz", "FlWjxuAuNvyWqsFMQybaqzDftqzELuySl") }, - { XHDR("p", "EgtxOBWUsrUACBsWzfoiitRtmb") }, - { XHDR("z", "jsPmWDSocbsKJmZzSwltvLEpZihRgEAsBUaIdHzriXsFdLniqEydBCZVUsrlu") }, - { XHDR("tigg", "uahaAqpJrWpUZUNzvPxXhpXkpzogtsVjGsPBRGFSvcYUYKStbmiyXRaEYAhVTWUdyhnSkH") }, - { XHDR("bkyo", "rGeMBMqNzoFWIiDxzhENRYMgmXRJqXyrDQJfzmIivmpGhotYeZvRZteVNmMtUXHniQCtByLxPHk") }, - { XHDR("stnemkuudczl", "kleyWcIdEwImSddbkYblscltGvq") }, - { XHDR("sjiorbv", "uuwMgTZjQXVkBETWLQHqZfjqpQiOslvCeLvOaIzJox") }, - { XHDR("eya", "LEUVAvAPbOwqpnktXZPxwDnvSLmnBvldjcQbGpqryEBqHm") }, - { XHDR("qlenrrafilhrcqvyb", "RzAWLEpDyOdSkEQYrTJuoyUvhqNKvbKS") }, - { XHDR("c", "UrwVHWsnPXuPuKXNSqxVrTtIiDLZGYFhxOoxPgUeGigwviwluwjKpgbklMRceZtYBGrwIJHSYt") }, - { XHDR("tmkhdpnuxnec", "wDvtUhcmaLPLoLULzofu") }, - { XHDR("bjdufmskkubbkdopzhbm", "fGrRGfiXNniMdZCFoyUCSCKprlpnAzOZYPumuuLrWLBppdjrpKYXXTBJRM") }, - { XHDR("iueweebqwue", "OGMzfrWMGQfoVrmmLASmMSZAbxq") }, - { XHDR("g", "VTRlNOdWGwQojVTZYSpzcBDPwjpvapqthOWUuQe") }, - { XHDR("ofw", "ldyPnpflClEzLihsQkdOmgzsTqlZLnNsqzwscFZlrODq") }, - { XHDR("vgnnyrfuwymrcrrxls", "NLxPRhHYOMDjeJJaUqOgwLVfvJiRIZMOtrCuduMxlOXzatyCOqpEYw") }, - { XHDR("buscnbbogjmvrf", "sCctNVbgvVHocxULzCYXhBHsubUCaOoiTkZfzEtJYzbCsLHdreOwIkkoVppj") }, - { XHDR("kmhwknrhczji", "rgNaLcFtQrgMzZfYSABgromdFBXgCfRJRtHXVNTOmwLeUlBeiEFOcKmveIAnIRPUwOpcBIc") }, - { XHDR("kqdh", "xahnfIAypPAVoscKxdTBaNDIgtZmvLLDMOxkpYlgbLyZRTpgfkdH") }, - { XHDR("sqh", "NqAlWDtqjuNWoAbCorozjXupvogesJDdbisqgGJKpbpdTARZAXnmPSphTDApZeLsGKcQSz") }, - { XHDR("ilnzgrp", "vnyqbjOEIWlcFOkrkcAmbXdJiVkWSpSQprSOVrtSKwwYlpz") }, - { XHDR("pcawyrjtc", "uHCKkxxpXVxiBadRePgYerrfTfMGQOBCVAnbxT") }, - { XHDR("db", "cdzLsGttuDGVmerUVefKOdn") }, - { XHDR("ofsgdi", "BsgwHKvweeHTuAORM") }, - { XHDR("aefmfakmpc", "ZmGdWASHxsIHWefvyDCZLY") }, - { XHDR("dltmnulcxxwmoipdq", "qvhELpVbvVycfnVXDtSaGnGMSajeBbnjkcKTdTdPExCvLqHapPpqpAeiHGYaGaZFiypoZwiQio") }, - { XHDR("gdboledecqej", "JrMFhKiVZfkLCUwGXZmQmllFcQNkYmxbsrEJVuAZmkMyWQTepvTLfBRrLxBTCipRxFUUyitMKM") }, - { XHDR("twfwpcxxk", "myaGgTYcGuqNXjSMtKZB") }, - { XHDR("gezdjoramnhg", "VKgPHbYoYNeAvfYatIcyzzMPlQNIPWMWCtCfprkXKTsaMVjXdb") }, - { XHDR("ylmhm", "bOhMhaRcePQxoAyhXuOWzYioWnLhz") }, - { XHDR("rkxnlyuv", "oLTKgoFhotzVoAbwVnrkykEkbYUjewkoILpgP") }, - { XHDR("cpjsfvpxitvezz", "wTLtMLuhSrHDWTRAWWeSYAkpMWuv") }, - { XHDR("ezoygcxwzaswtponjoia", "DpQkrcRHUnnjaMSYGySApZN") }, - { XHDR("xcmjiyu", "jDSXeGeMQQqZDGQRTXGvikR") }, - { XHDR("ekecfaiwzbxhntuczdd", "GgbxFRLmLylqiueIHtdqIHvoeNL") }, - { XHDR("mwnpzjnfhtu", "IJyCzhlJ") }, - { XHDR("mqvlkx", "GNGfBioaggEnIvlMHvQnPGCHtGDotyoGTCgghsHxzDWCbIUafRmpXyNWSlTYibAS") }, - { XHDR("bcepmu", "EzmqQXeyldWdfPdGZsjAMWDPqiVbJwgsMVlvupRv") }, - { XHDR("vqwsxvwkyomasjgnkko", "vKokIRnOltXFYPSrvyQfJoGgWoBLybwOxXyhcuxUVeJEJPuqoDVcMlofeT") }, - { XHDR("enzhr", "VgyJIGZChyOk") }, - { XHDR("uwsrdkeamkjytxhzhew", "mCFcyNIRmXijcgpvcqwCAKstMVrpOfpeSMBYiOzsXRSxKnM") }, - { XHDR("wdu", "AY") }, - { XHDR("zsamdmabs", "grdRBqsupNWXabZUtLpluqZkzjjeISVhMLOyNUeozHonPLPBQxqTuxmGAW") }, - { XHDR("xnkhkjfrfsh", "hhFFdMUjcSWjCAtXaGJzxpTGWJaUTIgVFNW") }, - { XHDR("gnnjmyytawcuqnbtnaw", "GsMlgjtDp") }, - { XHDR("zchlzkwydlttpufiqohv", "aoqAmBiBIjUVPyyQFgcNrqqeGLRJBExAzfJWpwpkFKwDirjyouoLTFQiJZyuojWSVpwW") }, - { XHDR("hnphjeai", "ERgdlvNIBNDoBtkimoVgrWMHcoXUAQeJsouqfyuEjkBkUWpmhhQADikQjkdRRTYlz") }, - { XHDR("xrtvydpxwq", "YxCzJScvpRUsNrRrXIHKLYnHjjEtDsWrQCxyBOuSelvimajOIDaZszsWHqBxBjCqRBzRychYwyl") }, - { XHDR("bfthteqsewjtsq", "obyRXtowVLBgrBDkrNFuEYxStWpxlypuHEsuTEAywvHarlziZiIcesjNqBALxbATxGLeMyMv") }, - { XHDR("yfpgkx", "xwHWjTGrUJqXofwxXZlctUSlZVHlKYvRuFoAmmqNqrtjPQADXmMEzPd") }, - { XHDR("nmpbvkjj", "hCJRMnJDVOJeDDtzArNpuqGi") }, - { XHDR("m", "UBsiyBLCEFiewYXNCHvUzCmOUBhEfyenKzLcYmHuViOjeEbyhQQTWdJpwbcM") }, - { XHDR("ufarhrhoaacuzgoknoer", "LWTnHuZmbnSkgSEjsxRgWsNigGexRImbWAdLsvvCZiISWsgvL") }, - { XHDR("vsuycrosjuf", "nFSRCzWGNdnyJsiVBNgvFUauaIucGDQcsnVWCFDFFoFEQaoGYvUYLfduTFroLxIjDrT") }, - { XHDR("ascgzpaslttdc", "RHyuncafISVPgTZqUqUpRhaeDIAnEDINkhrJUKfayYOmrMuZz") }, - { XHDR("fhhbf", "WklaIwUgazCwlVBDYasRwrJPkbPtFoFKedYbqFoAckwCHEGhydvZPMPVmVhqnQTVFHS") }, - { XHDR("peyqvwrsbomobjr", "ibHBKACjPNUkjTtwzMMEjTZtUMJlFtrfshmOYKnRlvkyQlXjckAlYcUFVfCCtuAmVRVd") }, - { XHDR("xxchhnrcq", "XnnnLonFoeOBPXlObsSRRGhzLLIBSzNgbuKYIGGmagU") }, - { XHDR("stcbmfalzckdknxk", "vsIvGGoAXkeJTgiisZkzZvHsiCZSznEkyXHIOkNgtXhMIzmlfzgdzVWwZxkHzvBMMxfl") }, - { XHDR("vwrojagbdsd", "fCbtequPdfBTqJhKkpfhQKVbZcZpIvsfsrOgJYtFtgqiZjwCgVSYX") }, - { XHDR("evntmxtbmiaqwxzpaw", "YZ") }, - { XHDR("swpwihtoljkmpjrhs", "vEgHcjaIrbbgsEGJeCZDzOBVJXCfwkbi") }, - { XHDR("q", "kFWwvsKHz") }, - { XHDR("zq", "SRsSHqqyYBOmtoYDKPrbsUTANWarUTOJHSnwdkJPZLKydVYcGUTXdscotncuhGdCRmXWhTj") }, - { XHDR("onqip", "QPJBtylMQfKWzkCVXhYfSwxXoLCXeZhlgeMGqzrZsWqKJKmlaPrkhFKXukCeUBDSLUjBOooGILrfkY") }, - { XHDR("ilvs", "INTDcjeORGomNOKv") }, - { XHDR("mliitnm", "pGuLhBcNFWAQSGcvjpleGMc") }, - { XHDR("qstx", "wwEvdIPHAjoXLRoBCIuFCtGBNOieSjathYy") }, - { XHDR("yzxeemryjvhhxfpodn", "HvFpynqasmQjWbeyLcHHlyHORfn") }, - { XHDR("nhqhaczumawwfnjfin", "iawFHvvDqXtTLusVDgLgfsmyocIbrKhzxFpooXRWXTGGwtLqPKtceYCBtRuHATVgYaDeoknDEoZXG") }, - { XHDR("sysnkwoebysdiiras", "ZtBgCAtdnxuFklwCOIBEcpmZxDlIce") }, - { XHDR("ldlmkszeokqsdfp", "yapMLOEUzTvriIBmmmlNPnpcmTcXxaXuFjlUdkcGovjJjcCQpENNnwtsRjAvLSMQazmHJmFboSSSOjgV") }, - { XHDR("dqrafrsgbrrrfnbdta", "dMHHfsOiPFYwa") }, - { XHDR("ntuhdjui", "ucmBDMyullQBgJn") }, - { XHDR("ccvypnt", "EwLBraenvYlMMrFoeTfIWKmafGRBZElxxCgAZLE") }, - { XHDR("czyepstexxk", "MKwoAnDDHxJBwKbVoMbxIYZsJIAr") }, - { XHDR("jrzfbbbmzvbavouzm", "NuqcmOm") }, - { XHDR("fxyxqdnhirgsiyh", "z") }, - { XHDR("tpevrpldefyhouwaxedj", "HfTPnHIVMKuPgXmXgoihZxegGwAShCaFGjjXdogtLNgBKNGpINdQIAUnMlarAKVED") }, - { XHDR("xjebemclth", "tZmXYYhCNqpmFIBjTrGsCVgpovZz") }, - { XHDR("ycdknlwmcffcqcwwolxf", "LvkugqnGfuFZMIHrVOXEFftpOCWoVgXIsRaaWRSYtOiJAZebkJTFxcWOvIaRVoKEEhyIAFBvkZ") }, - { XHDR("qzcnrhvyincs", "wxCoWCtexjyaSWpEskKotuDnGwapliJbXNGVNnPlvDMNFVSaJ") }, - { XHDR("acteaygshslpvsnpld", "wHcjqDadMs") }, - { XHDR("ijxcbnuh", "KAFzdXGYCjxhsjCDcwNw") }, - { XHDR("nzjggn", "JcJPwBjfnrMuHSGuwdsEnQFoHURgyNsiQFCzOPImsqEVIKmNVkvOsgCmpoUS") }, - { XHDR("zskyehbz", "jPznbwLPsgLCrLFKYdRyhaqIsQnuByruzFkMQyaqlvrjNGSTLPydBPhcRfSnWKgipkYViUsMyJQ") }, - { XHDR("pqmrpkzudvvfxovccvul", "vSZdqILPgFSJgTRCYEpURRdgN") }, - { XHDR("kluxchwnoevo", "ipQDnxKKFPtqTYuuTnieNnUqwYJCdUjHBweUQRqhnCAjRaPLBXQN") }, - { XHDR("tgxuredmanbxugqt", "ODnshUiWEgeASiZTyHCbkJYMaLVYFNSTGYFtdDBdCuht") }, - { XHDR("pvmctpjvpmhie", "dTBycLSyWavBeQ") }, - { XHDR("wwrqlbgghfjynpe", "GiOOuBUY") }, - { XHDR("toxypivzduvwo", "GDlaNfmFQXxpWYWGyGfatYHKlrfUZKQMOkfsAqbUiPxECbRnPGAl") }, - { XHDR("fulnpqucqzsdfjvd", "ucVVvBodHCbRQTOIiZaBMgkjSsOLPgCsDyqHyhzICDaBWRyjMKdHH") }, - { XHDR("cv", "iUnZxTYvtGgpmvvJR") }, - { XHDR("pskajplpkmeykrtjj", "VJdGiDuGRJbvkluKUyToaPFQItiazGkDlbsvriHedJSeCgFoQWZhYiaLVndthSNCDHIYlnsYEaG") }, - { XHDR("tgsitnodrnx", "uDeOeINHfESqurHsEcNjnyOzegORs") }, - { XHDR("sr", "JaGRVRfpBALZUrhvxKdpvDlBtVfsPAIMbVAjxuMjniPujwxBHSmgHopBUHve") }, - { XHDR("rdgqt", "WffIIIsfkHlQqHGlegMpKJOvKGytMiKmFLobDktmrBKVhxcJfzMQxyZV") }, - { XHDR("hvucrpxolopeikvmseou", "wuxn") }, - { XHDR("mibwyxeuzd", "xuujkxjkbcBYakYlJoyl") }, - { XHDR("iomfgqsnmbmjnyou", "HyuSRajxEbIJWSXqhHaVMqJvNbjsUvAgOivgYjBBLPcRGVqRqfWhYpeQCGlJITbYQEMqjmGLx") }, - { XHDR("bqwdwagyqbyabrepkrcf", "blLcPZlcjBBXWgisUcmFsxPTHgQfEmiUmtjC") }, - { XHDR("liv", "N") }, - { XHDR("ilmv", "ZEEZUSFpFIEqLTlvSdkCKbqlPqXObTkOpocTsLwjsbVbZUCdhbzyXkHMnjAqtZwWVS") }, - { XHDR("pdivxnehiqjqk", "pTIlOSdiERHPMYEEQGrAJIfVAZAindEMDgTlIFteAxLSVxLdlyLGsamhpGRoXnkW") }, - { XHDR("atgyldots", "InMkSNVDrDbZCpJHmiIBgABDa") }, - { XHDR("dlgppxce", "aSYptgGtvidZSZwcOQIdknjFvEYHEGJQkJCTgCviNcCmmbGwVnXVeVBpsAYPVfvRwXawLkwWmL") }, - { XHDR("qbdpmzelb", "YhjLsvpUslykWpaBcIgunjQWjNkbYSlefgGKHy") }, - { XHDR("dq", "dGxRPLevIuzYJQgigZDSXhWyBdvfFRCHkZbxgJpkPSRrYPFmqMmrzYWIaKhVBj") }, - { XHDR("rumpqstlfqqrrdyvs", "UbmcLYKFzZ") }, - { XHDR("xtwnyw", "ErAWzPcigydcRIuLvvTugfRSdyHlZasByDUnVhyzpBsdFpyUYBG") }, - { XHDR("afrejawusnrb", "oJIXsiJGrjZmdHBShPimPIJTygeiehMzhqvZmjXtZCkFFC") }, - { XHDR("kf", "TVbTzgdUMUGhE") }, - { XHDR("tmiiltkezpilkk", "vsZOWVIpIpLNnvYzzobqGKVfFvHiCzfHLjSfLQefYcPftTjZJVd") }, - { XHDR("vxvwprfharefckwhsvoq", "avgYVScnlVlQyfAqLOqpetdrAtX") }, - { XHDR("honepigeikh", "uekwxNputOwIGdNdHcoIuRPYpiozp") }, - { XHDR("rubqgu", "zdTqIriihYKKvxeGapPnrKrhMVVwDmGWfYLFFeZQeSoNioEqYTNdoycTmAFiFOmVSxuvlisCt") }, - { XHDR("muzfhxbeaumqqovlvzwy", "yZvLteokUDeQp") }, - { XHDR("fjoturtpvhdzug", "KXpAvEFozuJQaZvnOHzCffTgCS") }, - { XHDR("fk", "ybdzpNSqCQdAegDzpoolTWlWZlTmyNVTFsqRvleIYaMFBghrEbDGEKiToYzlzgRaXpqhxlEdqzDmhKn") }, - { XHDR("rquvmkvhuuikzbmkezrx", "iohcvQqbCoJADIjXjuDRVIbYeEbaNXXHgPel") }, - { XHDR("kbdshdepg", "WDHolFLyLLSeYEUJkeNkjgVQCpVMneNDcBSnZcptGapmsCavLQykKAjfcxUjkktXnYvFWDPjMVHPyl") }, - { XHDR("antqpdqbwe", "ADXNvrzGXXPlAPPFZrLCHtzmLyZRiYzMKnBJaTdkttjcfvjImgpXyAXLbggbEBU") }, - { XHDR("sldlvqwhi", "UjTJTHDaGzMBXIRhSIMQpucaaVtJwEq") }, - { XHDR("jhbhedjxrkge", "clCzJZl") }, - { XHDR("megby", "uIYVwGgbinJCLCjSsONFXGqzYoRgrScclCabAqevKWUxPibWGcCjjbIfuqoGbBIVzF") }, - { XHDR("v", "zqFiJZWKk") }, - { XHDR("ksqtzvejopzprfzwkgp", "kpkKRYbqeGTmLYOh") }, - { XHDR("yzjaprrp", "agNXoXqWVhDMIVrfmwfErrveHihVcefKGOwbpPELXWJNnEUwsPoKHCAIrLSjEGamtjbZlIM") }, - { XHDR("pzhumxzagc", "TMKRLPyeeHG") }, - { XHDR("jeoxylpnrudggbznn", "gryjepOsUwUXVvjt") }, - { XHDR("jbqdtrot", "hGZH") }, - { XHDR("befvldowigtw", "QItWcSDEJwwvFScysXKTLajmUmiYGGegIfLrApuijQkndFdatUfB") }, - { XHDR("clxqf", "vXbSIZmJcuZvKcarINjPuSwabLFfipWWQFStvFMxSNuiizOZIgaiHfViMJeGwIuGwfJdkz") }, - { XHDR("ghjsgzdumtpovms", "wqPExwywtsHYcJJGRWjxjSMOhADAKOOFDbCAyUFOwNnXzlJuKRPBrVvaAF") }, - { XHDR("mojypfonzvny", "YjHESDlgRj") }, - { XHDR("fgdleym", "IiTGIGSgtOCCWDnUFfWnSqscQPktkppqfOlNHsOAQhxuTS") }, - { XHDR("kzvwlsurhfkxlpw", "QJATFxbKpAzZCsSGiHWOOZKCSeKEcXKZcQwNCrTICbfiSNqbSIrCVtQqVvGnnLQ") }, - { XHDR("hojapjpkgywuvqt", "yNuHyALQsgFxmAJUuIMWyZVmXmwYBZPeYldhOCIKVOZQtjueXTtazKCQrZpXbQCjfgZEn") }, - { XHDR("qqansobylferetwb", "kXfITdoVYwYoAJHVDZpftFeziNLKrRgudNobPtfbN") }, - { XHDR("kzhglsynb", "uxHIdwRzhwkaDPDsFdNSFYYdXmaGPAad") }, - { XHDR("injlaujvuprggo", "jN") }, - { XHDR("lezeqhhebilbebrvwicm", "tphZNwDpPvbbJbFOgRtBQOxUypxPewGaJwnPWSbFhROIaBFj") }, - { XHDR("iiialfij", "eJEHDQJscPNrcZIZHTGAOCRvQsNychNZZXschjnUSXGnXiKVbM") }, - { XHDR("wepvu", "txhdxcuMrFdcwRtSDDHktKASbhHoYtJkHGqzGwUOHsBtvNsuTHIjwsUGJFJLxEazlUs") }, - { XHDR("gbe", "ul") }, - { XHDR("inxl", "zaCVQQIxINjtlVEMxV") }, - { XHDR("zishjidsgguavfatwlhc", "jKMbzBIJWwQOKHgOfRebhRZObGVAqBDYiNPOljWSItvJzBJhYSvHayt") }, - { XHDR("dbbbwuewydkzdlqftm", "HnBCzqTmVaghKfXfOaIrlTmIKkzoipcceCrrqytiHHTUOEURYCtFt") }, - { XHDR("zkqwdz", "Sb") }, - { XHDR("yv", "mjvsYWHHwVQYmeSZZQsDyqwXlajBLyAo") }, - { XHDR("umjriqcc", "FrcqFdXPqFeDUxcCyJkZbmQOLJVcdJAKmQuaIxIlIVBrnRKTTAyomLLlDbvO") }, - { XHDR("weivvamrcxy", "UyJpDUuBIgeOTweaMaJJcwTxOtXoqSVYnjWruMrNG") }, - { XHDR("rvcohamoiupdsabh", "mqCAIuuPHNHNfsJKZORTrlvFHnQzVABjeOnPAxyViMrcAuZBnqyyEInqjxGIxiMlOA") }, - { XHDR("vrvomfdfrohgjbli", "cgbYIYJUgATcNQyTFBbZOeJlIDaFbjgqMnOpeJrwCmDQkqYbxDZJveeAkdbgXCmc") }, - { XHDR("yhsf", "eYpRxyhhmmezlCUkBeGJmLsyKDtVxxVTlAdnCRlINvsVQWLJkSBCj") }, - { XHDR("evrtnyo", "ZltJGecGEFRkT") }, -}; diff --git a/external/lsquic/tests/test_frame_writer.c b/external/lsquic/tests/test_frame_writer.c deleted file mode 100644 index 12b5b1d..0000000 --- a/external/lsquic/tests/test_frame_writer.c +++ /dev/null @@ -1,644 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif -#include - -#include "lsquic.h" -#include "lshpack.h" -#include "lsquic_mm.h" -#include "lsquic_int_types.h" -#include "lsquic_hash.h" -#include "lsquic_conn.h" -#include "lsquic_frame_common.h" -#include "lsquic_frame_writer.h" -#if LSQUIC_CONN_STATS -#include "lsquic_int_types.h" -#include "lsquic_conn.h" -#endif - -#if LSQUIC_CONN_STATS -static struct conn_stats s_conn_stats; -#endif - - -static struct { - size_t sz; - size_t max; - unsigned char buf[0x1000]; -} output; - - -#define reset_output(max_) do { \ - output.sz = 0; \ - if (max_) \ - output.max = max_; \ - else \ - output.max = sizeof(output.buf);\ -} while (0) - - -static ssize_t -output_write (struct lsquic_stream *stream, struct lsquic_reader *reader) -{ - size_t sz; - - sz = reader->lsqr_size(reader->lsqr_ctx); - if (output.max - output.sz < sz) - { - errno = ENOBUFS; - return -1; - } - - sz = reader->lsqr_read(reader->lsqr_ctx, output.buf + output.sz, sz); - output.sz += sz; - - return sz; -} - - -#define IOV(v) { .iov_base = (v), .iov_len = sizeof(v) - 1, } -#define XHDR(name_, value_) .buf = name_ value_, .name_offset = 0, .name_len = sizeof(name_) - 1, .val_offset = sizeof(name_) - 1, .val_len = sizeof(value_) - 1, - - -static void -test_max_frame_size (void) -{ - struct lshpack_enc henc; - struct lsquic_mm mm; - struct lsquic_frame_writer *fw; - unsigned max_size; - - lshpack_enc_init(&henc); - lsquic_mm_init(&mm); - - for (max_size = 1; max_size < 6 /* one settings frame */; ++max_size) - { - fw = lsquic_frame_writer_new(&mm, NULL, max_size, &henc, - output_write, -#if LSQUIC_CONN_STATS - &s_conn_stats, -#endif - 0); - assert(!fw); - } - - fw = lsquic_frame_writer_new(&mm, NULL, max_size, &henc, output_write, -#if LSQUIC_CONN_STATS - &s_conn_stats, -#endif - 0); - assert(fw); - - lsquic_frame_writer_destroy(fw); - lshpack_enc_cleanup(&henc); - lsquic_mm_cleanup(&mm); -} - - -static void -test_one_header (void) -{ - struct lshpack_enc henc; - struct lsquic_frame_writer *fw; - int s; - struct lsquic_mm mm; - - lshpack_enc_init(&henc); - lsquic_mm_init(&mm); - fw = lsquic_frame_writer_new(&mm, NULL, 0x200, &henc, output_write, -#if LSQUIC_CONN_STATS - &s_conn_stats, -#endif - 0); - reset_output(0); - - struct lsxpack_header header_arr[] = - { - { XHDR(":status", "302") }, - }; - - struct lsquic_http_headers headers = { - .count = 1, - .headers = header_arr, - }; - - s = lsquic_frame_writer_write_headers(fw, 12345, &headers, 0, 100); - assert(0 == s); - - struct http_frame_header fh; - struct http_prio_frame prio_frame; - - assert(4 + sizeof(struct http_frame_header) + sizeof(struct http_prio_frame) == output.sz); - - memcpy(&fh, output.buf, sizeof(fh)); - assert(4 + sizeof(struct http_prio_frame) == hfh_get_length(&fh)); - assert(HTTP_FRAME_HEADERS == fh.hfh_type); - assert((HFHF_END_HEADERS|HFHF_PRIORITY) == fh.hfh_flags); - assert(fh.hfh_stream_id[0] == 0); - assert(fh.hfh_stream_id[1] == 0); - assert(fh.hfh_stream_id[2] == 0x30); - assert(fh.hfh_stream_id[3] == 0x39); - - memcpy(&prio_frame, output.buf + sizeof(struct http_frame_header), - sizeof(struct http_prio_frame)); - - assert(prio_frame.hpf_stream_id[0] == 0); - assert(prio_frame.hpf_stream_id[1] == 0); - assert(prio_frame.hpf_stream_id[2] == 0); - assert(prio_frame.hpf_stream_id[3] == 0); - assert(prio_frame.hpf_weight == 100 - 1); - - assert(0 == memcmp(output.buf + sizeof(struct http_frame_header) + - sizeof(struct http_prio_frame), "\x48\x82\x64\x02", 4)); - - lsquic_frame_writer_destroy(fw); - lshpack_enc_cleanup(&henc); - lsquic_mm_cleanup(&mm); -} - -struct header_buf -{ - unsigned off; - char buf[UINT16_MAX]; -}; - - -int -header_set_ptr (struct lsxpack_header *hdr, struct header_buf *header_buf, - const char *name, size_t name_len, - const char *val, size_t val_len) -{ - if (header_buf->off + name_len + val_len <= sizeof(header_buf->buf)) - { - memcpy(header_buf->buf + header_buf->off, name, name_len); - memcpy(header_buf->buf + header_buf->off + name_len, val, val_len); - lsxpack_header_set_offset2(hdr, header_buf->buf + header_buf->off, - 0, name_len, name_len, val_len); - header_buf->off += name_len + val_len; - return 0; - } - else - return -1; -} - - -static void -test_oversize_header (void) -{ - struct lshpack_enc henc; - struct lsquic_frame_writer *fw; - int s; - struct lsquic_mm mm; - const size_t big_len = LSXPACK_MAX_STRLEN - 20; - char *value; - struct header_buf hbuf; - - lshpack_enc_init(&henc); - lsquic_mm_init(&mm); - fw = lsquic_frame_writer_new(&mm, NULL, 0x200, &henc, output_write, -#if LSQUIC_CONN_STATS - &s_conn_stats, -#endif - 0); - lsquic_frame_writer_max_header_list_size(fw, 1 << 16); - reset_output(0); - - value = malloc(big_len); - memset(value, 'A', big_len); - - struct lsxpack_header header_arr[3] = - { - { XHDR(":status", "302") }, - }; - hbuf.off = 0; - header_set_ptr(&header_arr[1], &hbuf, "some-header", 10, value, big_len); - header_set_ptr(&header_arr[2], &hbuf, "another-header", 10, value, big_len); - - struct lsquic_http_headers headers = { - .count = sizeof(header_arr) / sizeof(header_arr[0]), - .headers = header_arr, - }; - - s = lsquic_frame_writer_write_headers(fw, 12345, &headers, 0, 100); - assert(-1 == s); - - lsquic_frame_writer_destroy(fw); - lshpack_enc_cleanup(&henc); - lsquic_mm_cleanup(&mm); - free(value); -} - - -static void -test_continuations (void) -{ - struct lsquic_frame_writer *fw; - struct lshpack_enc henc; - int s; - struct lsquic_mm mm; - - lshpack_enc_init(&henc); - lsquic_mm_init(&mm); - fw = lsquic_frame_writer_new(&mm, NULL, 6, &henc, output_write, -#if LSQUIC_CONN_STATS - &s_conn_stats, -#endif - 0); - reset_output(0); - -/* -perl tools/henc.pl :status 302 x-some-header some-value | hexdump -C -00000000 48 82 64 02 40 8a f2 b2 0f 49 56 9c a3 90 b6 7f |H.d.@....IV.....| -00000010 87 41 e9 2a dd c7 45 a5 |.A.*..E.| -*/ - - struct lsxpack_header header_arr[] = - { - { XHDR(":status", "302") }, - { XHDR("x-some-header", "some-value") }, - }; - - struct lsquic_http_headers headers = { - .count = 2, - .headers = header_arr, - }; - - s = lsquic_frame_writer_write_headers(fw, 12345, &headers, 0, 100); - assert(0 == s); - - /* Expected payload is 5 bytes of http_prio_frame and 24 bytes of - * compressed headers, split into 4 15-byte chunks (9-byte header - * 6-byte payload) and 1 14-byte chunk (9-byte header and 5-byte - * payload). - */ - unsigned char expected_buf[] = { - /* Length: */ 0x00, 0x00, 0x06, /* 1 */ - /* Type: */ HTTP_FRAME_HEADERS, - /* Flags: */ HFHF_PRIORITY, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Payload (priority info): */ - 0x00, 0x00, 0x00, 0x00, 100 - 1, - /* Payload (headers): */ - 0x48, - /* Length: */ 0x00, 0x00, 0x06, /* 2 */ - /* Type: */ HTTP_FRAME_CONTINUATION, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Payload (headers): */ - 0x82, 0x64, 0x02, 0x40, 0x8A, 0xF2, - /* Length: */ 0x00, 0x00, 0x06, /* 3 */ - /* Type: */ HTTP_FRAME_CONTINUATION, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Payload (headers): */ - 0xb2, 0x0f, 0x49, 0x56, 0x9c, 0xa3, - /* Length: */ 0x00, 0x00, 0x06, /* 4 */ - /* Type: */ HTTP_FRAME_CONTINUATION, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Payload (headers): */ - 0x90, 0xb6, 0x7f, 0x87, 0x41, 0xe9, - /* Length: */ 0x00, 0x00, 0x05, /* 5 */ - /* Type: */ HTTP_FRAME_CONTINUATION, - /* Flags: */ HFHF_END_HEADERS, - /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, - /* Payload (headers): */ - 0x2a, 0xdd, 0xc7, 0x45, 0xa5, - }; - - assert(sizeof(expected_buf) == output.sz); - - assert(0 == memcmp(output.buf + 0, expected_buf + 0, 15)); - assert(0 == memcmp(output.buf + 15, expected_buf + 15, 15)); - assert(0 == memcmp(output.buf + 30, expected_buf + 30, 15)); - assert(0 == memcmp(output.buf + 45, expected_buf + 45, 15)); - assert(0 == memcmp(output.buf + 60, expected_buf + 60, 14)); - - lsquic_frame_writer_destroy(fw); - lshpack_enc_cleanup(&henc); - lsquic_mm_cleanup(&mm); -} - - -static void -test_settings_short (void) -{ - struct lsquic_frame_writer *fw; - int s; - struct lsquic_mm mm; - - lsquic_mm_init(&mm); - fw = lsquic_frame_writer_new(&mm, NULL, 7, NULL, output_write, -#if LSQUIC_CONN_STATS - &s_conn_stats, -#endif - 0); - - { - reset_output(0); - struct lsquic_http2_setting settings[] = { { 1, 2, }, { 3, 4, } }; - s = lsquic_frame_writer_write_settings(fw, settings, 2); - assert(0 == s); - const unsigned char exp_buf[] = { - /* Length: */ 0x00, 0x00, 0x06, - /* Type: */ HTTP_FRAME_SETTINGS, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x00, 0x00, - /* Payload: */ 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - /* Length: */ 0x00, 0x00, 0x06, - /* Type: */ HTTP_FRAME_SETTINGS, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x00, 0x00, - /* Payload: */ 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, - }; - assert(output.sz == sizeof(exp_buf)); - assert(0 == memcmp(output.buf, exp_buf, sizeof(exp_buf))); - } - - { - reset_output(0); - struct lsquic_http2_setting settings[] = { { 1, 2, }, { 3, 4, } }; - s = lsquic_frame_writer_write_settings(fw, settings, 0); - assert(-1 == s); - assert(EINVAL == errno); - } - - lsquic_frame_writer_destroy(fw); - lsquic_mm_cleanup(&mm); -} - - -static void -test_settings_normal (void) -{ - struct lsquic_frame_writer *fw; - int s; - struct lsquic_mm mm; - - lsquic_mm_init(&mm); - fw = lsquic_frame_writer_new(&mm, NULL, 0, NULL, output_write, -#if LSQUIC_CONN_STATS - &s_conn_stats, -#endif - 0); - - { - reset_output(0); - struct lsquic_http2_setting settings[] = { { 1, 2, }, { 3, 4, } }; - s = lsquic_frame_writer_write_settings(fw, settings, 2); - assert(0 == s); - const unsigned char exp_buf[] = { - /* Length: */ 0x00, 0x00, 0x0C, - /* Type: */ HTTP_FRAME_SETTINGS, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x00, 0x00, - /* Payload: */ 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - /* Payload: */ 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, - }; - assert(output.sz == sizeof(exp_buf)); - assert(0 == memcmp(output.buf, exp_buf, sizeof(exp_buf))); - } - - { - reset_output(0); - struct lsquic_http2_setting settings[] = { { 1, 2, }, { 3, 4, } }; - s = lsquic_frame_writer_write_settings(fw, settings, 0); - assert(-1 == s); - assert(EINVAL == errno); - } - - lsquic_frame_writer_destroy(fw); - lsquic_mm_cleanup(&mm); -} - - -static struct lsquic_conn my_conn = LSCONN_INITIALIZER_CIDLEN(my_conn, 8); - - -#if !defined(NDEBUG) && __GNUC__ -__attribute__((weak)) -#endif -lsquic_conn_t * -lsquic_stream_conn (const lsquic_stream_t *stream) -{ - return &my_conn; -} - - -static void -test_priority (void) -{ - struct lsquic_frame_writer *fw; - int s; - struct lsquic_mm mm; - - lsquic_mm_init(&mm); - fw = lsquic_frame_writer_new(&mm, NULL, 6, NULL, output_write, -#if LSQUIC_CONN_STATS - &s_conn_stats, -#endif - 0); - - s = lsquic_frame_writer_write_priority(fw, 3, 0, 1UL << 31, 256); - assert(s < 0); /* Invalid dependency stream ID */ - - s = lsquic_frame_writer_write_priority(fw, 3, 0, 1, 0); - assert(s < 0); /* Invalid priority stream ID */ - - s = lsquic_frame_writer_write_priority(fw, 3, 0, 1, 257); - assert(s < 0); /* Invalid priority stream ID */ - - { - reset_output(0); - s = lsquic_frame_writer_write_priority(fw, 3, 0, 1, 256); - assert(0 == s); - const unsigned char exp_buf[] = { - /* Length: */ 0x00, 0x00, 5, - /* Type: */ HTTP_FRAME_PRIORITY, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x00, 0x03, - /* Dep stream Id: */0x00, 0x00, 0x00, 0x01, - /* Weight: */ 0xFF, - }; - assert(output.sz == sizeof(exp_buf)); - assert(0 == memcmp(output.buf, exp_buf, sizeof(exp_buf))); - } - - { - reset_output(0); - s = lsquic_frame_writer_write_priority(fw, 20, 1, 100, 256); - assert(0 == s); - const unsigned char exp_buf[] = { - /* Length: */ 0x00, 0x00, 5, - /* Type: */ HTTP_FRAME_PRIORITY, - /* Flags: */ 0x00, - /* Stream Id: */ 0x00, 0x00, 0x00, 0x14, - /* Dep stream Id: */0x80, 0x00, 0x00, 0x64, - /* Weight: */ 0xFF, - }; - assert(output.sz == sizeof(exp_buf)); - assert(0 == memcmp(output.buf, exp_buf, sizeof(exp_buf))); - } - - lsquic_frame_writer_destroy(fw); - lsquic_mm_cleanup(&mm); -} - - - -static void -test_errors (void) -{ - struct lsquic_frame_writer *fw; - struct lsquic_mm mm; - struct lshpack_enc henc; - int s; - - lshpack_enc_init(&henc); - lsquic_mm_init(&mm); - fw = lsquic_frame_writer_new(&mm, NULL, 0x200, &henc, output_write, -#if LSQUIC_CONN_STATS - &s_conn_stats, -#endif - 1); - reset_output(0); - - { - struct lsxpack_header header_arr[] = - { - { XHDR(":status", "200") }, - { XHDR("Content-type", "text/html") }, - }; - struct lsquic_http_headers headers = { - .count = 2, - .headers = header_arr, - }; - s = lsquic_frame_writer_write_headers(fw, 12345, &headers, 0, 80); - assert(-1 == s); - assert(EINVAL == errno); - } - - { - struct lsxpack_header header_arr[] = - { - { XHDR(":status", "200") }, - { XHDR("content-type", "text/html") }, - }; - struct lsquic_http_headers headers = { - .count = 2, - .headers = header_arr, - }; - lsquic_frame_writer_max_header_list_size(fw, 40); - s = lsquic_frame_writer_write_headers(fw, 12345, &headers, 0, 80); - /* Server ignores SETTINGS_MAX_HEADER_LIST_SIZE setting */ - assert(s == 0); - } - - lsquic_frame_writer_destroy(fw); - lshpack_enc_cleanup(&henc); - lsquic_mm_cleanup(&mm); -} - - -static void -test_push_promise (void) -{ - struct lshpack_enc henc; - struct lsquic_frame_writer *fw; - int s; - struct lsquic_mm mm; - - lshpack_enc_init(&henc); - lsquic_mm_init(&mm); - fw = lsquic_frame_writer_new(&mm, NULL, 0x200, &henc, output_write, -#if LSQUIC_CONN_STATS - &s_conn_stats, -#endif - 1); - reset_output(0); - -/* -perl tools/hpack.pl :method GET :path /index.html :authority www.example.com :scheme https x-some-header some-value| hexdump -C -00000000 82 85 41 8c f1 e3 c2 e5 f2 3a 6b a0 ab 90 f4 ff |..A......:k.....| -00000010 87 40 8a f2 b2 0f 49 56 9c a3 90 b6 7f 87 41 e9 |.@....IV......A.| -00000020 2a dd c7 45 a5 |*..E.| -*/ - - const unsigned char exp_headers[] = { - 0x82, 0x85, 0x41, 0x8c, 0xf1, 0xe3, 0xc2, 0xe5, 0xf2, 0x3a, - 0x6b, 0xa0, 0xab, 0x90, 0xf4, 0xff, 0x87, 0x40, 0x8a, 0xf2, - 0xb2, 0x0f, 0x49, 0x56, 0x9c, 0xa3, 0x90, 0xb6, 0x7f, 0x87, - 0x41, 0xe9, 0x2a, 0xdd, 0xc7, 0x45, 0xa5, - }; - - struct lsxpack_header header_arr[] = - { - { XHDR(":method", "GET") }, - { XHDR(":path", "/index.html") }, - { XHDR(":authority", "www.example.com") }, - { XHDR(":scheme", "https") }, - { XHDR("x-some-header", "some-value") }, - }; - - struct lsquic_http_headers headers = { - .count = 5, - .headers = header_arr, - }; - - s = lsquic_frame_writer_write_promise(fw, 12345, 0xEEEE, &headers); - assert(0 == s); - - struct http_frame_header fh; - struct http_push_promise_frame push_frame; - - assert(sizeof(exp_headers) + sizeof(struct http_frame_header) + - sizeof(struct http_push_promise_frame) == output.sz); - - memcpy(&fh, output.buf, sizeof(fh)); - assert(sizeof(exp_headers) + sizeof(struct http_push_promise_frame) == hfh_get_length(&fh)); - assert(HTTP_FRAME_PUSH_PROMISE == fh.hfh_type); - assert(HFHF_END_HEADERS == fh.hfh_flags); - assert(fh.hfh_stream_id[0] == 0); - assert(fh.hfh_stream_id[1] == 0); - assert(fh.hfh_stream_id[2] == 0x30); - assert(fh.hfh_stream_id[3] == 0x39); - - memcpy(&push_frame, output.buf + sizeof(struct http_frame_header), - sizeof(struct http_push_promise_frame)); - - assert(push_frame.hppf_promised_id[0] == 0); - assert(push_frame.hppf_promised_id[1] == 0); - assert(push_frame.hppf_promised_id[2] == 0xEE); - assert(push_frame.hppf_promised_id[3] == 0xEE); - - assert(0 == memcmp(output.buf + sizeof(struct http_frame_header) + - sizeof(struct http_push_promise_frame), exp_headers, - sizeof(exp_headers))); - - lsquic_frame_writer_destroy(fw); - lshpack_enc_cleanup(&henc); - lsquic_mm_cleanup(&mm); -} - - - -int -main (void) -{ - test_one_header(); - test_oversize_header(); - test_continuations(); - test_settings_normal(); - test_settings_short(); - test_priority(); - test_push_promise(); - test_errors(); - test_max_frame_size(); - return 0; -} diff --git a/external/lsquic/tests/test_goaway_gquic_be.c b/external/lsquic/tests/test_goaway_gquic_be.c deleted file mode 100644 index a3db7f9..0000000 --- a/external/lsquic/tests/test_goaway_gquic_be.c +++ /dev/null @@ -1,173 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_parse.h" - -//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC -#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) - - -struct goaway_parse_test { - int lineno; - unsigned char buf[0x100]; - size_t buf_len; - uint32_t error_code; - lsquic_stream_id_t last_stream_id; - uint16_t reason_len; - const char *reason; - int retval; -}; - -static const struct goaway_parse_test parse_tests[] = { - - { - .lineno = __LINE__, - .buf = { 0x03, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x12, 0x34, 0x00, 0x05, 'D', 'u', 'd', 'e', '!', }, - .buf_len = 0x100, - .error_code = 0x31, - .last_stream_id = 0x1234, - .reason_len = 0x05, - .reason = "Dude!", - .retval = 11 + 5, - }, - - { - .lineno = __LINE__, - .buf = { 0x03, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x12, 0x34, 0x00, 0x05, 'D', 'u', 'd', 'e', '!', }, - .buf_len = 8, /* Too short #1 */ - .error_code = 0x31, - .last_stream_id = 0x1234, - .reason_len = 0x05, - .reason = "Dude!", - .retval = -1, - }, - - { - .lineno = __LINE__, - .buf = { 0x03, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x12, 0x34, 0x00, 0x05, 'D', 'u', 'd', 'e', '!', }, - .buf_len = 12, /* Too short #2 */ - .error_code = 0x31, - .last_stream_id = 0x1234, - .reason_len = 0x05, - .reason = "Dude!", - .retval = -2, - }, - - { .buf = { 0 }, } -}; - - -struct goaway_gen_test { - int lineno; - uint32_t error_code; - lsquic_stream_id_t last_stream_id; - const char *reason; - int retval; - unsigned char buf[0x100]; - size_t buf_len; -}; - - -static const struct goaway_gen_test gen_tests[] = { - - { - .lineno = __LINE__, - .error_code = 0x12345678, - .last_stream_id = 0x1234, - .reason = "Dude, where is my car?", - .retval = 11 + sizeof("Dude, where is my car?") - 1, - .buf_len = 0x100, - .buf = { - 0x03, - 0x12, 0x34, 0x56, 0x78, - 0x00, 0x00, 0x12, 0x34, - 0x00, sizeof("Dude, where is my car?") - 1, - 'D', 'u', 'd', 'e', ',', ' ', 'w', 'h', 'e', 'r', 'e', ' ', 'i', 's', ' ', 'm', 'y', ' ', 'c', 'a', 'r', '?', - }, - }, - - { - .lineno = __LINE__, - .error_code = 0x12345678, - .last_stream_id = 0x2345, - .reason = NULL, - .retval = 11, - .buf_len = 0x100, - .buf = { - 0x02, - 0x12, 0x34, 0x56, 0x78, - 0x00, 0x00, 0x23, 0x45, - 0x00, 0x00, /* Zero-sized string */ - }, - }, - - { - .lineno = __LINE__, - .error_code = 0x12345678, - .last_stream_id = 0x2345, - .reason = "Dude, where is my car?", - .retval = -1, /* Too short */ - .buf_len = 0x10, - }, - - { .buf = { 0 }, } - -}; - - -static void -run_parse_tests (void) -{ - const struct goaway_parse_test *test; - for (test = parse_tests; test->buf[0]; ++test) - { - uint32_t error_code = ~0; - lsquic_stream_id_t last_stream_id = ~0; - uint16_t reason_len = ~0; - const char *reason; - int sz = pf->pf_parse_goaway_frame(test->buf, test->buf_len, - &error_code, &last_stream_id, &reason_len, &reason); - assert(sz == test->retval); - if (0 == sz) - { - assert(test->error_code == error_code); - assert(test->last_stream_id == last_stream_id); - assert(test->reason_len == reason_len); - assert(0 == memcmp(test->reason, reason, reason_len)); - } - } -} - - -static void -run_gen_tests (void) -{ - const struct goaway_gen_test *test; - for (test = gen_tests; test->buf[0]; ++test) - { - unsigned char buf[0x100]; - int sz = pf->pf_gen_goaway_frame(buf, sizeof(buf), - test->error_code, test->last_stream_id, test->reason, - test->reason ? strlen(test->reason) : 0); - assert(sz == test->retval); - if (0 == sz) - assert(0 == memcmp(test->buf, buf, sz)); - } -} - - -int -main (void) -{ - run_parse_tests(); - run_gen_tests(); - return 0; -} diff --git a/external/lsquic/tests/test_goaway_gquic_le.c b/external/lsquic/tests/test_goaway_gquic_le.c deleted file mode 100644 index 8a8a5e9..0000000 --- a/external/lsquic/tests/test_goaway_gquic_le.c +++ /dev/null @@ -1,173 +0,0 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_alarmset.h" -#include "lsquic_parse.h" - -static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); - - -struct goaway_parse_test { - int lineno; - unsigned char buf[0x100]; - size_t buf_len; - uint32_t error_code; - uint32_t last_stream_id; - uint16_t reason_len; - const char *reason; - int retval; -}; - -static const struct goaway_parse_test parse_tests[] = { - - { - .lineno = __LINE__, - .buf = { 0x03, 0x31, 0x00, 0x00, 0x00, 0x34, 0x12, 0x00, 0x00, 0x05, 0x00, 'D', 'u', 'd', 'e', '!', }, - .buf_len = 0x100, - .error_code = 0x31, - .last_stream_id = 0x1234, - .reason_len = 0x05, - .reason = "Dude!", - .retval = 11 + 5, - }, - - { - .lineno = __LINE__, - .buf = { 0x03, 0x31, 0x00, 0x00, 0x00, 0x05, 0x00, 'D', 'u', 'd', 'e', '!', }, - .buf_len = 8, /* Too short #1 */ - .error_code = 0x31, - .last_stream_id = 0x1234, - .reason_len = 0x05, - .reason = "Dude!", - .retval = -1, - }, - - { - .lineno = __LINE__, - .buf = { 0x03, 0x31, 0x00, 0x00, 0x00, 0x34, 0x12, 0x00, 0x00, 0x05, 0x00, 'D', 'u', 'd', 'e', '!', }, - .buf_len = 12, /* Too short #2 */ - .error_code = 0x31, - .last_stream_id = 0x1234, - .reason_len = 0x05, - .reason = "Dude!", - .retval = -2, - }, - - { .buf = { 0 }, } -}; - - -struct goaway_gen_test { - int lineno; - uint32_t error_code; - uint32_t last_stream_id; - const char *reason; - int retval; - unsigned char buf[0x100]; - size_t buf_len; -}; - - -static const struct goaway_gen_test gen_tests[] = { - - { - .lineno = __LINE__, - .error_code = 0x12345678, - .last_stream_id = 0x1234, - .reason = "Dude, where is my car?", - .retval = 11 + sizeof("Dude, where is my car?") - 1, - .buf_len = 0x100, - .buf = { - 0x03, - 0x78, 0x56, 0x34, 0x12, - 0x34, 0x12, 0x00, 0x00, - sizeof("Dude, where is my car?") - 1, 0x00, - 'D', 'u', 'd', 'e', ',', ' ', 'w', 'h', 'e', 'r', 'e', ' ', 'i', 's', ' ', 'm', 'y', ' ', 'c', 'a', 'r', '?', - }, - }, - - { - .lineno = __LINE__, - .error_code = 0x12345678, - .last_stream_id = 0x2345, - .reason = NULL, - .retval = 11, - .buf_len = 0x100, - .buf = { - 0x02, - 0x78, 0x56, 0x34, 0x12, - 0x45, 0x23, 0x00, 0x00, - 0x00, 0x00, /* Zero-sized string */ - }, - }, - - { - .lineno = __LINE__, - .error_code = 0x12345678, - .last_stream_id = 0x2345, - .reason = "Dude, where is my car?", - .retval = -1, /* Too short */ - .buf_len = 0x10, - }, - - { .buf = { 0 }, } - -}; - - -static void -run_parse_tests (void) -{ - const struct goaway_parse_test *test; - for (test = parse_tests; test->buf[0]; ++test) - { - uint32_t error_code = ~0; - uint32_t last_stream_id = ~0; - uint16_t reason_len = ~0; - const char *reason; - int sz = pf->pf_parse_goaway_frame(test->buf, test->buf_len, - &error_code, &last_stream_id, &reason_len, &reason); - assert(sz == test->retval); - if (0 == sz) - { - assert(test->error_code == error_code); - assert(test->last_stream_id == last_stream_id); - assert(test->reason_len == reason_len); - assert(0 == memcmp(test->reason, reason, reason_len)); - } - } -} - - -static void -run_gen_tests (void) -{ - const struct goaway_gen_test *test; - for (test = gen_tests; test->buf[0]; ++test) - { - unsigned char buf[0x100]; - int sz = pf->pf_gen_goaway_frame(buf, sizeof(buf), - test->error_code, test->last_stream_id, test->reason, - test->reason ? strlen(test->reason) : 0); - assert(sz == test->retval); - if (0 == sz) - assert(0 == memcmp(test->buf, buf, sz)); - } -} - - -int -main (void) -{ - run_parse_tests(); - run_gen_tests(); - return 0; -} diff --git a/external/lsquic/tests/test_h3_framing.c b/external/lsquic/tests/test_h3_framing.c deleted file mode 100644 index 48d1b15..0000000 --- a/external/lsquic/tests/test_h3_framing.c +++ /dev/null @@ -1,1761 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * test_h3_framing.c -- test generation of H3 frames - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#else -#include -#endif - -#include "lsquic.h" - -#include "lsquic_packet_common.h" -#include "lsquic_packet_ietf.h" -#include "lsquic_alarmset.h" -#include "lsquic_packet_in.h" -#include "lsquic_conn_flow.h" -#include "lsquic_rtt.h" -#include "lsquic_sfcw.h" -#include "lsquic_varint.h" -#include "lsquic_hq.h" -#include "lsquic_hash.h" -#include "lsquic_stream.h" -#include "lsquic_types.h" -#include "lsquic_malo.h" -#include "lsquic_mm.h" -#include "lsquic_conn_public.h" -#include "lsquic_logger.h" -#include "lsquic_parse.h" -#include "lsquic_conn.h" -#include "lsquic_engine_public.h" -#include "lsquic_cubic.h" -#include "lsquic_pacer.h" -#include "lsquic_senhist.h" -#include "lsquic_bw_sampler.h" -#include "lsquic_minmax.h" -#include "lsquic_bbr.h" -#include "lsquic_adaptive_cc.h" -#include "lsquic_send_ctl.h" -#include "lsquic_ver_neg.h" -#include "lsquic_packet_out.h" -#include "lsquic_enc_sess.h" -#include "lsqpack.h" -#include "lsxpack_header.h" -#include "lsquic_frab_list.h" -#include "lsquic_qenc_hdl.h" -#include "lsquic_http1x_if.h" -#include "lsquic_qdec_hdl.h" -#include "lsquic_varint.h" -#include "lsquic_hq.h" -#include "lsquic_data_in_if.h" - -#define MIN(a, b) ((a) < (b) ? (a) : (b)) -#define MAX(a, b) ((a) > (b) ? (a) : (b)) - -static const struct parse_funcs *g_pf = select_pf_by_ver(LSQVER_I001); - -struct test_ctl_settings -{ - int tcs_schedule_stream_packets_immediately; - int tcs_have_delayed_packets; - unsigned tcs_can_send; - enum buf_packet_type - tcs_bp_type; - enum packno_bits - tcs_guess_packno_bits, - tcs_calc_packno_bits; -}; - - -static struct test_ctl_settings g_ctl_settings; - - -static void -init_buf (void *buf, size_t sz); - - -/* Set values to default */ -static void -init_test_ctl_settings (struct test_ctl_settings *settings) -{ - settings->tcs_schedule_stream_packets_immediately = 1; - settings->tcs_have_delayed_packets = 0; - settings->tcs_can_send = UINT_MAX; - settings->tcs_bp_type = BPT_HIGHEST_PRIO; - settings->tcs_guess_packno_bits = PACKNO_BITS_1; - settings->tcs_calc_packno_bits = PACKNO_BITS_1; -} - - -enum packno_bits -lsquic_send_ctl_calc_packno_bits (struct lsquic_send_ctl *ctl) -{ - return g_ctl_settings.tcs_calc_packno_bits; -} - - -int -lsquic_send_ctl_schedule_stream_packets_immediately (struct lsquic_send_ctl *ctl) -{ - return g_ctl_settings.tcs_schedule_stream_packets_immediately; -} - - -int -lsquic_send_ctl_have_delayed_packets (const struct lsquic_send_ctl *ctl) -{ - return g_ctl_settings.tcs_have_delayed_packets; -} - - -int -lsquic_send_ctl_can_send (struct lsquic_send_ctl *ctl) -{ - return ctl->sc_n_scheduled < g_ctl_settings.tcs_can_send; -} - - -enum packno_bits -lsquic_send_ctl_guess_packno_bits (struct lsquic_send_ctl *ctl) -{ - return g_ctl_settings.tcs_guess_packno_bits; -} - - -enum buf_packet_type -lsquic_send_ctl_determine_bpt (struct lsquic_send_ctl *ctl, - const struct lsquic_stream *stream) -{ - return g_ctl_settings.tcs_bp_type; -} - - -/* This function is only here to avoid crash in the test: */ -void -lsquic_engine_add_conn_to_tickable (struct lsquic_engine_public *enpub, - lsquic_conn_t *conn) -{ -} - - -static unsigned n_closed; -static enum stream_ctor_flags stream_ctor_flags = - SCF_CALL_ON_NEW|SCF_DI_AUTOSWITCH; - -struct test_ctx { - lsquic_stream_t *stream; -}; - - -static lsquic_stream_ctx_t * -on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) -{ - struct test_ctx *test_ctx = stream_if_ctx; - test_ctx->stream = stream; - return NULL; -} - - -static void -on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - ++n_closed; -} - - -const struct lsquic_stream_if stream_if = { - .on_new_stream = on_new_stream, - .on_close = on_close, -}; - - -static size_t -read_from_scheduled_packets (lsquic_send_ctl_t *send_ctl, lsquic_stream_id_t stream_id, - unsigned char *const begin, size_t bufsz, uint64_t first_offset, int *p_fin, - int fullcheck) -{ - const struct parse_funcs *const pf_local = send_ctl->sc_conn_pub->lconn->cn_pf; - unsigned char *p = begin; - unsigned char *const end = p + bufsz; - const struct frame_rec *frec; - struct packet_out_frec_iter pofi; - struct lsquic_packet_out *packet_out; - struct stream_frame frame; - enum quic_frame_type expected_type; - int len, fin = 0; - - expected_type = QUIC_FRAME_STREAM; - - TAILQ_FOREACH(packet_out, &send_ctl->sc_scheduled_packets, po_next) - for (frec = lsquic_pofi_first(&pofi, packet_out); frec; - frec = lsquic_pofi_next(&pofi)) - { - if (fullcheck) - { - assert(frec->fe_frame_type == expected_type); - if (0 && packet_out->po_packno != 1) - { - /* First packet may contain two stream frames, do not - * check it. - */ - assert(!lsquic_pofi_next(&pofi)); - if (TAILQ_NEXT(packet_out, po_next)) - { - assert(packet_out->po_data_sz == packet_out->po_n_alloc); - assert(frec->fe_len == packet_out->po_data_sz); - } - } - } - if (frec->fe_frame_type == expected_type && - frec->fe_stream->id == stream_id) - { - assert(!fin); - if (QUIC_FRAME_STREAM == expected_type) - len = pf_local->pf_parse_stream_frame(packet_out->po_data + frec->fe_off, - packet_out->po_data_sz - frec->fe_off, &frame); - else - len = pf_local->pf_parse_crypto_frame(packet_out->po_data + frec->fe_off, - packet_out->po_data_sz - frec->fe_off, &frame); - assert(len > 0); - if (QUIC_FRAME_STREAM == expected_type) - assert(frame.stream_id == frec->fe_stream->id); - else - assert(frame.stream_id == ~0ULL); - /* Otherwise not enough to copy to: */ - assert(end - p >= frame.data_frame.df_size); - /* Checks offset ordering: */ - assert(frame.data_frame.df_offset == - first_offset + (uintptr_t) (p - begin)); - if (frame.data_frame.df_fin) - { - assert(!fin); - fin = 1; - } - memcpy(p, packet_out->po_data + frec->fe_off + len - - frame.data_frame.df_size, frame.data_frame.df_size); - p += frame.data_frame.df_size; - } - } - - if (p_fin) - *p_fin = fin; - return p + bufsz - end; -} - - -static struct test_ctx test_ctx; - - -struct test_objs { - struct lsquic_engine_public eng_pub; - struct lsquic_conn lconn; - struct lsquic_conn_public conn_pub; - struct lsquic_send_ctl send_ctl; - struct lsquic_alarmset alset; - void *stream_if_ctx; - struct ver_neg ver_neg; - const struct lsquic_stream_if * - stream_if; - unsigned initial_stream_window; - enum stream_ctor_flags ctor_flags; - struct qpack_enc_hdl qeh; - struct qpack_dec_hdl qdh; - struct lsquic_hset_if hsi_if; -}; - -static int s_ack_written; - -static void -write_ack (struct lsquic_conn *conn, struct lsquic_packet_out *packet_out) -{ - /* We don't need to generate full-blown ACK, as logic in - * lsquic_send_ctl_rollback() only looks at po_frame_types. - */ - packet_out->po_frame_types |= QUIC_FRAME_ACK; - s_ack_written = 1; -} - -static int s_can_write_ack; - -static int -can_write_ack (struct lsquic_conn *lconn) -{ - return s_can_write_ack; -} - - -static struct network_path network_path; - -static struct network_path * -get_network_path (struct lsquic_conn *lconn, const struct sockaddr *sa) -{ - return &network_path; -} - -static enum { - SNAPSHOT_STATE_NONE = 0, - SNAPSHOT_STATE_TAKEN = 1 << 0, - SNAPSHOT_STATE_ROLLED_BACK = 1 << 1, -} s_snapshot_state; - -static void -ack_snapshot (struct lsquic_conn *lconn, struct ack_state *ack_state) -{ - s_snapshot_state |= SNAPSHOT_STATE_TAKEN; -} - -static void -ack_rollback (struct lsquic_conn *lconn, struct ack_state *ack_state) -{ - s_snapshot_state |= SNAPSHOT_STATE_ROLLED_BACK; -} - -static const struct conn_iface our_conn_if = -{ - .ci_can_write_ack = can_write_ack, - .ci_write_ack = write_ack, - .ci_get_path = get_network_path, - .ci_ack_snapshot = ack_snapshot, - .ci_ack_rollback = ack_rollback, -}; - - -#if LSQUIC_CONN_STATS -static struct conn_stats s_conn_stats; -#endif - -static void -init_test_objs (struct test_objs *tobjs, unsigned initial_conn_window, - unsigned initial_stream_window, unsigned short packet_sz) -{ - int s; - memset(tobjs, 0, sizeof(*tobjs)); - LSCONN_INITIALIZE(&tobjs->lconn); - tobjs->lconn.cn_pf = g_pf; - tobjs->lconn.cn_version = LSQVER_I001; - tobjs->lconn.cn_esf_c = &lsquic_enc_session_common_ietf_v1; - network_path.np_pack_size = packet_sz; - tobjs->lconn.cn_if = &our_conn_if; - lsquic_mm_init(&tobjs->eng_pub.enp_mm); - TAILQ_INIT(&tobjs->conn_pub.sending_streams); - TAILQ_INIT(&tobjs->conn_pub.read_streams); - TAILQ_INIT(&tobjs->conn_pub.write_streams); - TAILQ_INIT(&tobjs->conn_pub.service_streams); - lsquic_cfcw_init(&tobjs->conn_pub.cfcw, &tobjs->conn_pub, - initial_conn_window); - lsquic_conn_cap_init(&tobjs->conn_pub.conn_cap, initial_conn_window); - lsquic_alarmset_init(&tobjs->alset, 0); - tobjs->conn_pub.mm = &tobjs->eng_pub.enp_mm; - tobjs->conn_pub.lconn = &tobjs->lconn; - tobjs->conn_pub.enpub = &tobjs->eng_pub; - tobjs->conn_pub.send_ctl = &tobjs->send_ctl; - tobjs->conn_pub.packet_out_malo = - lsquic_malo_create(sizeof(struct lsquic_packet_out)); - tobjs->conn_pub.path = &network_path; -#if LSQUIC_CONN_STATS - tobjs->conn_pub.conn_stats = &s_conn_stats; -#endif - tobjs->initial_stream_window = initial_stream_window; - tobjs->eng_pub.enp_settings.es_cc_algo = 1; /* Cubic */ - tobjs->eng_pub.enp_hsi_if = &tobjs->hsi_if; - lsquic_send_ctl_init(&tobjs->send_ctl, &tobjs->alset, &tobjs->eng_pub, - &tobjs->ver_neg, &tobjs->conn_pub, 0); - tobjs->send_ctl.sc_adaptive_cc.acc_cubic.cu_cwnd = ~0ull; - tobjs->send_ctl.sc_cong_ctl = &tobjs->send_ctl.sc_adaptive_cc.acc_cubic; - tobjs->stream_if = &stream_if; - tobjs->stream_if_ctx = &test_ctx; - tobjs->ctor_flags = stream_ctor_flags; - //if ((1 << tobjs->lconn.cn_version) & LSQUIC_IETF_VERSIONS) - { - lsquic_qeh_init(&tobjs->qeh, &tobjs->lconn); - s = lsquic_qeh_settings(&tobjs->qeh, 0, 0, 0, 0); - assert(0 == s); - tobjs->conn_pub.u.ietf.qeh = &tobjs->qeh; - lsquic_qdh_init(&tobjs->qdh, &tobjs->lconn, 0, &tobjs->eng_pub, 0, 0); - tobjs->conn_pub.u.ietf.qdh = &tobjs->qdh; - } -} - - -static void -deinit_test_objs (struct test_objs *tobjs) -{ - assert(!lsquic_malo_first(tobjs->eng_pub.enp_mm.malo.stream_frame)); - lsquic_send_ctl_cleanup(&tobjs->send_ctl); - lsquic_malo_destroy(tobjs->conn_pub.packet_out_malo); - lsquic_mm_cleanup(&tobjs->eng_pub.enp_mm); - //if ((1 << tobjs->lconn.cn_version) & LSQUIC_IETF_VERSIONS) - lsquic_qeh_cleanup(&tobjs->qeh); -} - - -static struct lsquic_stream * -new_stream (struct test_objs *tobjs, unsigned stream_id, uint64_t send_off) -{ - return lsquic_stream_new(stream_id, &tobjs->conn_pub, tobjs->stream_if, - tobjs->stream_if_ctx, tobjs->initial_stream_window, send_off, - tobjs->ctor_flags); -} - - -struct packetization_test_stream_ctx -{ - const unsigned char *buf; - unsigned len, off, write_size; - int flush_after_each_write; -}; - - -static lsquic_stream_ctx_t * -packetization_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) -{ - lsquic_stream_wantwrite(stream, 1); - return stream_if_ctx; -} - - -static void -packetization_on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ -} - - -#define RANDOM_WRITE_SIZE ~0U - -static unsigned -calc_n_to_write (unsigned write_size) -{ - if (write_size == RANDOM_WRITE_SIZE) - return rand() % 1000 + 1; - else - return write_size; -} - - -static void -packetization_write_as_much_as_you_can (lsquic_stream_t *stream, - lsquic_stream_ctx_t *ctx) -{ - struct packetization_test_stream_ctx *const pack_ctx = (void *) ctx; - unsigned n_to_write, n_sched; - ssize_t n_written; - size_t avail; - int s; - - while (pack_ctx->off < pack_ctx->len) - { - n_to_write = calc_n_to_write(pack_ctx->write_size); - n_sched = lsquic_send_ctl_n_scheduled(stream->conn_pub->send_ctl); - if (n_to_write > pack_ctx->len - pack_ctx->off) - n_to_write = pack_ctx->len - pack_ctx->off; - n_written = lsquic_stream_write(stream, pack_ctx->buf + pack_ctx->off, - n_to_write); - if (n_written == 0) - { - if (n_to_write && SSHS_BEGIN == stream->sm_send_headers_state - && lsquic_send_ctl_can_send(stream->conn_pub->send_ctl)) - { - avail = lsquic_stream_write_avail(stream); - assert(avail == 0 - || lsquic_send_ctl_n_scheduled( - stream->conn_pub->send_ctl) > n_sched); - } - break; - } - pack_ctx->off += n_written; - if (pack_ctx->flush_after_each_write) - { - s = lsquic_stream_flush(stream); - assert(s == 0); - } - } - - s = lsquic_stream_flush(stream); - assert(s == 0); - lsquic_stream_wantwrite(stream, 0); -} - - -static void -packetization_perform_one_write (lsquic_stream_t *stream, - lsquic_stream_ctx_t *ctx) -{ - struct packetization_test_stream_ctx *const pack_ctx = (void *) ctx; - unsigned n_to_write, n_sched; - ssize_t n_written; - size_t avail; - int s; - - n_to_write = calc_n_to_write(pack_ctx->write_size); - if (n_to_write > pack_ctx->len - pack_ctx->off) - n_to_write = pack_ctx->len - pack_ctx->off; - n_sched = lsquic_send_ctl_n_scheduled(stream->conn_pub->send_ctl); - n_written = lsquic_stream_write(stream, pack_ctx->buf + pack_ctx->off, - n_to_write); - assert(n_written >= 0); - if (n_written == 0 && SSHS_BEGIN == stream->sm_send_headers_state - && n_to_write - && lsquic_send_ctl_can_send(stream->conn_pub->send_ctl)) - { - avail = lsquic_stream_write_avail(stream); - assert(avail == 0 - || lsquic_send_ctl_n_scheduled( - stream->conn_pub->send_ctl) > n_sched); - } - pack_ctx->off += n_written; - if (pack_ctx->flush_after_each_write) - { - s = lsquic_stream_flush(stream); - assert(s == 0); - } - if (n_written == 0) - lsquic_stream_wantwrite(stream, 0); -} - - -static const struct lsquic_stream_if packetization_inside_once_stream_if = { - .on_new_stream = packetization_on_new_stream, - .on_close = packetization_on_close, - .on_write = packetization_write_as_much_as_you_can, -}; - - -static const struct lsquic_stream_if packetization_inside_many_stream_if = { - .on_new_stream = packetization_on_new_stream, - .on_close = packetization_on_close, - .on_write = packetization_perform_one_write, -}; - - -#define XHDR(name_, value_) .buf = name_ value_, .name_offset = 0, .name_len = sizeof(name_) - 1, .val_offset = sizeof(name_) - 1, .val_len = sizeof(value_) - 1, - -static void -test_hq_framing (int sched_immed, int dispatch_once, unsigned wsize, - int flush_after_each_write, size_t conn_limit, - unsigned n_packets, unsigned short packet_sz) -{ - struct test_objs tobjs; - struct lsquic_stream *stream; - size_t nw; - int fin, s; - unsigned char *buf_in, *buf_out; - const size_t buf_in_sz = 0x40000, buf_out_sz = 0x500000; - - /* We'll write headers first after which stream will switch to using - * data-framing writer. This is simply so that we don't have to - * expose more stream things only for testing. - */ - struct lsxpack_header header = { XHDR(":method", "GET") }; - struct lsquic_http_headers headers = { 1, &header, }; - - buf_in = malloc(buf_in_sz); - buf_out = malloc(buf_out_sz); - assert(buf_in && buf_out); - - struct packetization_test_stream_ctx packet_stream_ctx = - { - .buf = buf_in, - .off = 0, - .len = buf_in_sz, - .write_size = wsize, - .flush_after_each_write = flush_after_each_write, - }; - - init_buf(buf_in, buf_in_sz); - - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = sched_immed; - - stream_ctor_flags |= SCF_IETF; - init_test_objs(&tobjs, conn_limit ? conn_limit : buf_out_sz, buf_out_sz, packet_sz); - tobjs.stream_if_ctx = &packet_stream_ctx; - tobjs.ctor_flags |= SCF_HTTP|SCF_IETF; - if (sched_immed) - { - g_ctl_settings.tcs_can_send = n_packets; - if (dispatch_once) - { - tobjs.stream_if = &packetization_inside_once_stream_if; - tobjs.ctor_flags |= SCF_DISP_RW_ONCE; - } - else - tobjs.stream_if = &packetization_inside_many_stream_if; - } - else - { - lsquic_send_ctl_set_max_bpq_count(n_packets); - g_ctl_settings.tcs_can_send = INT_MAX; - /* Need this for on_new_stream() callback not to mess with - * the context, otherwise this is not used. - */ - tobjs.stream_if = &packetization_inside_many_stream_if; - } - - stream = new_stream(&tobjs, 0, buf_out_sz); - - s = lsquic_stream_send_headers(stream, &headers, 0); - assert(0 == s); - - if (sched_immed) - { - lsquic_stream_dispatch_write_events(stream); - lsquic_stream_flush(stream); - } - else - { - packetization_write_as_much_as_you_can(stream, - (void *) &packet_stream_ctx); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, BPT_HIGHEST_PRIO); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; - } - lsquic_send_ctl_set_max_bpq_count(10); - - /* Verify written data: */ - nw = read_from_scheduled_packets(&tobjs.send_ctl, 0, buf_out, buf_out_sz, - 0, &fin, 1); - if (!conn_limit) - assert(nw > buf_in_sz); - { /* Remove framing and verify contents */ - const unsigned char *src; - unsigned char *dst; - uint64_t sz; - unsigned frame_type; - int s; - - src = buf_out; - dst = buf_out; - while (src < buf_out + nw) - { - frame_type = *src++; - s = vint_read(src, buf_out + buf_out_sz, &sz); - assert(s > 0); - /* In some rare circumstances it is possible to produce zero-length - * DATA frames: - * - * assert(sz > 0); - */ - assert(sz < (1 << 14)); - src += s; - if (src == buf_out + s + 1) - { - /* Ignore headers */ - assert(frame_type == HQFT_HEADERS); - src += sz; - } - else - { - assert(frame_type == HQFT_DATA); - if (src + sz > buf_out + nw) /* Chopped DATA frame (last) */ - sz = buf_out + nw - src; - memmove(dst, src, sz); - dst += sz; - src += sz; - } - } - if (!conn_limit) - assert(buf_in_sz == (uintptr_t) dst - (uintptr_t) buf_out); - assert(0 == memcmp(buf_in, buf_out, (uintptr_t) dst - (uintptr_t) buf_out)); - } - - lsquic_stream_destroy(stream); - deinit_test_objs(&tobjs); - free(buf_in); - free(buf_out); - - stream_ctor_flags &= ~SCF_IETF; -} - - -static void -main_test_hq_framing (void) -{ - const unsigned wsizes[] = { 1, 2, 3, 7, 10, 50, 100, 201, 211, 1000, 2003, 20000, }; - const size_t conn_limits[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 30, 31, 32, 33, 63, 64, 128, 200, 255, - 256, 512, 1024, 2045, 2048, 2049, 3000, 4091, 4096, 4097, 5000, 8192, - 16 * 1024 - 1, 16 * 1024, 32 * 1024, 33 * 1024, }; - const unsigned n_packets[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, UINT_MAX, }; - const unsigned short packet_sz[] = { 1252, 1370, 0x1000, 0xFF00, }; - unsigned i, j, k, l; - int sched_immed, dispatch_once, flush_after_each_write; - - for (sched_immed = 0; sched_immed <= 1; ++sched_immed) - for (dispatch_once = 0; dispatch_once <= 1; ++dispatch_once) - for (i = 0; i < sizeof(wsizes) / sizeof(wsizes[i]); ++i) - for (j = 0; j < sizeof(conn_limits) / sizeof(conn_limits[j]); ++j) - for (flush_after_each_write = 0; flush_after_each_write < 2; ++flush_after_each_write) - for (k = 0; k < sizeof(n_packets) / sizeof(n_packets[0]); ++k) - for (l = 0; l < sizeof(packet_sz) / sizeof(packet_sz[0]); ++l) - test_hq_framing(sched_immed, dispatch_once, wsizes[i], flush_after_each_write, conn_limits[j], n_packets[k], packet_sz[l]); -} - - -/* Instead of the not-very-random testing done in main_test_hq_framing(), - * the fuzz-guided testing initializes parameters based on the fuzz input - * file. This allows afl-fuzz explore the code paths. - */ -void -fuzz_guided_hq_framing_testing (const char *input) -{ - /* Range */ /* Bytes from file */ - unsigned short packet_sz; /* [200, 0x3FFF] */ /* 2 */ - unsigned wsize; /* [1, 20000] */ /* 2 */ - unsigned n_packets; /* [1, 255] and UINT_MAX */ /* 1 */ - size_t conn_limit; /* [1, 33K] */ /* 2 */ - int sched_immed; /* 0 or 1 */ /* 1 */ - int dispatch_once; /* 0 or 1 */ /* 0 (same as above) */ - int flush_after_each_write; /* 0 or 1 */ /* 0 (same as above) */ - /* TOTAL: 8 bytes */ - - FILE *f; - size_t nread; - uint16_t tmp; - unsigned char buf[9]; - - f = fopen(input, "rb"); - if (!f) - { - assert(0); - return; - } - - nread = fread(buf, 1, sizeof(buf), f); - if (nread != 8) - goto cleanup; - - memcpy(&tmp, &buf[0], 2); - if (tmp < 200) - tmp = 200; - else if (tmp > IQUIC_MAX_OUT_PACKET_SZ) - tmp = IQUIC_MAX_OUT_PACKET_SZ; - packet_sz = tmp; - - memcpy(&tmp, &buf[2], 2); - if (tmp < 1) - tmp = 1; - else if (tmp > 20000) - tmp = 20000; - wsize = tmp; - - if (buf[4]) - n_packets = buf[4]; - else - n_packets = UINT_MAX; - - memcpy(&tmp, &buf[5], 2); - if (tmp < 1) - tmp = 1; - else if (tmp > 33 * 1024) - tmp = 33 * 1024; - conn_limit = tmp; - - sched_immed = !!(buf[7] & 1); - dispatch_once = !!(buf[7] & 2); - flush_after_each_write = !!(buf[7] & 4); - - test_hq_framing(sched_immed, dispatch_once, wsize, - flush_after_each_write, conn_limit, n_packets, packet_sz); - - cleanup: - (void) fclose(f); -} - - -struct pwritev_stream_ctx -{ - int limit; /* Test limit */ - size_t avail; - const unsigned char *input; - size_t input_sz; - ssize_t nw; /* Number of bytes written */ -}; - - -static ssize_t -my_preadv (void *user_data, const struct iovec *iov, int iovcnt) -{ - struct pwritev_stream_ctx *const pw_ctx = user_data; - const unsigned char *p; - size_t ntoread, tocopy; - int i; - - ntoread = 0; - for (i = 0; i < iovcnt; ++i) - ntoread += iov[i].iov_len; - - if (pw_ctx->limit < 0) - { - if ((size_t) -pw_ctx->limit < ntoread) - ntoread -= (size_t) -pw_ctx->limit; - } - else if ((size_t) pw_ctx->limit < ntoread) - ntoread = (size_t) pw_ctx->limit; - - assert(ntoread <= pw_ctx->input_sz); /* Self-check */ - - p = pw_ctx->input; - for (i = 0; i < iovcnt; ++i) - { - tocopy = MIN(iov[i].iov_len, ntoread - (p - pw_ctx->input)); - memcpy(iov[i].iov_base, p, tocopy); - p += tocopy; - if (ntoread == (size_t) (p - pw_ctx->input)) - break; - } - - assert(ntoread == (size_t) (p - pw_ctx->input)); - return (ssize_t) (p - pw_ctx->input); -} - - -static void -pwritev_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *ctx) -{ - struct pwritev_stream_ctx *const pw_ctx = (void *) ctx; - ssize_t nw; - - nw = lsquic_stream_pwritev(stream, my_preadv, pw_ctx, pw_ctx->input_sz); - pw_ctx->nw = nw; - lsquic_stream_wantwrite(stream, 0); -} - - - -static const struct lsquic_stream_if pwritev_stream_if = { - .on_new_stream = packetization_on_new_stream, - .on_close = packetization_on_close, - .on_write = pwritev_on_write, -}; - - -static void -test_pwritev (enum lsquic_version version, int http, int sched_immed, - int limit, unsigned short packet_sz, size_t prologue_sz, - unsigned n_packets) -{ - struct test_objs tobjs; - struct lsquic_stream *stream; - size_t nw; - int fin, s; - unsigned char *buf_in, *buf_out; - /* Some values that are large enough: */ - const size_t buf_in_sz = MAX(n_packets * packet_sz, 0x1000), - buf_out_sz = (float) buf_in_sz * 1.1; - const int ietf = (1 << version) & LSQUIC_IETF_VERSIONS; - const enum stream_ctor_flags ietf_flags = ietf ? SCF_IETF : 0; - - s_snapshot_state = 0; - s_ack_written = 0; - - /* We'll write headers first after which stream will switch to using - * data-framing writer. This is simply so that we don't have to - * expose more stream things only for testing. - */ - struct lsxpack_header header = { XHDR(":method", "GET") }; - struct lsquic_http_headers headers = { 1, &header, }; - - buf_in = malloc(buf_in_sz); - buf_out = malloc(buf_out_sz); - assert(buf_in && buf_out); - - struct pwritev_stream_ctx pwritev_stream_ctx = - { - .input = buf_in + prologue_sz, - .input_sz = buf_in_sz - prologue_sz, - .limit = limit, - }; - - init_buf(buf_in, buf_in_sz); - - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = sched_immed; - - stream_ctor_flags |= ietf_flags; - init_test_objs(&tobjs, buf_out_sz, buf_out_sz, packet_sz); - tobjs.lconn.cn_version = version; - tobjs.lconn.cn_esf_c = select_esf_common_by_ver(version); - tobjs.stream_if_ctx = &pwritev_stream_ctx; - tobjs.ctor_flags |= (http ? SCF_HTTP : 0)|ietf_flags; - if (sched_immed) - { - g_ctl_settings.tcs_can_send = n_packets; - tobjs.stream_if = &pwritev_stream_if; - } - else - { - lsquic_send_ctl_set_max_bpq_count(n_packets); - g_ctl_settings.tcs_can_send = INT_MAX; - g_ctl_settings.tcs_bp_type = BPT_OTHER_PRIO; - /* Need this for on_new_stream() callback not to mess with - * the context, otherwise this is not used. - */ - tobjs.stream_if = &pwritev_stream_if; - } - - stream = new_stream(&tobjs, 0, buf_out_sz); - - if (http) - { - if (ietf) - { - s = lsquic_stream_send_headers(stream, &headers, 0); - assert(0 == s); - } - else - /* Here we fake it in order not to have to set up frame writer. */ - stream->stream_flags |= STREAM_HEADERS_SENT; - } - - if (prologue_sz) - { - ssize_t written = lsquic_stream_write(stream, buf_in, prologue_sz); - assert(written > 0 && (size_t) written == prologue_sz); - } - - if (sched_immed) - { - lsquic_stream_dispatch_write_events(stream); - assert(!(s_snapshot_state & SNAPSHOT_STATE_TAKEN)); - // lsquic_stream_flush(stream); - } - else - { - pwritev_on_write(stream, (void *) &pwritev_stream_ctx); - assert(s_snapshot_state & SNAPSHOT_STATE_TAKEN); - if (n_packets > 0 - && s_ack_written - && tobjs.send_ctl.sc_buffered_packets[BPT_OTHER_PRIO].bpq_count == 0) - assert(s_snapshot_state & SNAPSHOT_STATE_ROLLED_BACK); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, BPT_OTHER_PRIO); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; - lsquic_send_ctl_set_max_bpq_count(10); - } - - assert(pwritev_stream_ctx.nw >= 0); - - /* Verify written data: */ - nw = read_from_scheduled_packets(&tobjs.send_ctl, 0, buf_out, buf_out_sz, - 0, &fin, 1); - assert(nw <= buf_in_sz); - - if (ietf && http) - { /* Remove framing and verify contents */ - const unsigned char *src; - unsigned char *dst; - uint64_t sz; - unsigned frame_type; - int s; - - src = buf_out; - dst = buf_out; - while (src < buf_out + nw) - { - frame_type = *src++; - s = vint_read(src, buf_out + buf_out_sz, &sz); - assert(s > 0); - /* In some rare circumstances it is possible to produce zero-length - * DATA frames: - * - * assert(sz > 0); - */ - assert(sz < (1 << 14)); - src += s; - if (src == buf_out + s + 1) - { - /* Ignore headers */ - assert(frame_type == HQFT_HEADERS); - src += sz; - } - else - { - assert(frame_type == HQFT_DATA); - if (src + sz > buf_out + nw) /* Chopped DATA frame (last) */ - sz = buf_out + nw - src; - memmove(dst, src, sz); - dst += sz; - src += sz; - } - } - assert(nw <= buf_in_sz); - if (n_packets && pwritev_stream_ctx.nw) - { - assert((size_t) pwritev_stream_ctx.nw + prologue_sz == (uintptr_t) dst - (uintptr_t) buf_out); - assert(0 == memcmp(buf_in, buf_out, (uintptr_t) dst - (uintptr_t) buf_out)); - } - else - assert((uintptr_t) dst - (uintptr_t) buf_out == 0 - || (uintptr_t) dst - (uintptr_t) buf_out == prologue_sz); - } - else - { - assert(nw <= buf_in_sz); - assert(nw <= buf_out_sz); - if (n_packets && pwritev_stream_ctx.nw) - { - assert((size_t) pwritev_stream_ctx.nw + prologue_sz == nw); - assert(0 == memcmp(buf_in, buf_out, (size_t) nw)); - } - else - assert(nw == 0 || nw == prologue_sz); - } - - lsquic_stream_destroy(stream); - deinit_test_objs(&tobjs); - free(buf_in); - free(buf_out); - - stream_ctor_flags &= ~ietf_flags; -} - - -static void -main_test_pwritev (void) -{ - const int limits[] = { INT_MAX, -1, -2, -3, -7, -10, -50, -100, -201, -211, - -1000, -2003, -3000, -4000, -17803, -20000, 16 * 1024, 16 * 1024 - 1, - 16 * 1024 - 2, 8000, 273, 65, 63, 10, 5, 1, 0, }; - unsigned n_packets; - const unsigned short packet_sz[] = { 1252, 1370, 0x1000, 0xFF00, }; - const size_t prologues[] = { 0, 17, 238, }; - unsigned i, j, k; - enum lsquic_version version; - int http, sched_immed; - const struct { unsigned iovecs, frames; } combos[] = - { - { 32, 16, }, - { 16, 16, }, - { 16, 8, }, - { 3, 7, }, - { 7, 3, }, - { 100, 100, }, - }, *combo = combos; - - s_can_write_ack = 1; - - run_test: - for (version = 0; version < N_LSQVER; ++version) - if ((1 << version) & LSQUIC_SUPPORTED_VERSIONS) - for (http = 0; http < 2; ++http) - for (sched_immed = 0; sched_immed <= 1; ++sched_immed) - for (i = 0; i < sizeof(limits) / sizeof(limits[i]); ++i) - for (j = 0; j < sizeof(packet_sz) / sizeof(packet_sz[0]); - ++j) - for (k = 0; k < sizeof(prologues) / sizeof(prologues[0]); ++k) - for (n_packets = 1; n_packets < 21; ++n_packets) - test_pwritev(version, http, sched_immed, - limits[i], packet_sz[j], prologues[k], n_packets); - - if (combo < combos + sizeof(combos) / sizeof(combos[0])) - { - lsquic_stream_set_pwritev_params(combo->iovecs, combo->frames); - ++combo; - goto run_test; - } - - s_can_write_ack = 0; -} - - -/* Instead of the not-very-random testing done in main_test_pwritev(), - * the fuzz-guided testing initializes parameters based on the fuzz input - * file. This allows afl-fuzz explore the code paths. - */ -void -fuzz_guided_pwritev_testing (const char *input) -{ - /* Range */ /* Bytes from file */ - unsigned short packet_sz; /* [1200, 0xFF00] */ /* 2 */ - int limit; /* [INT_MIN, INT_MAX] */ /* 2 */ - unsigned n_packets; /* [0, 255] */ /* 1 */ - unsigned n_iovecs; /* [0, 255] */ /* 1 */ - unsigned n_frames; /* [0, 255] */ /* 1 */ - size_t prologue_sz; /* [0, 170] */ /* 1 */ - enum lsquic_version version;/* [0,7] */ /* 1 */ - int sched_immed; /* 0 or 1 */ /* 1 (same byte) */ - int http; /* 0 or 1 */ /* 1 (same byte) */ - - /* TOTAL: 9 bytes */ - - FILE *f; - size_t nread; - union { - uint16_t tmp; - int16_t itmp; - } u; - unsigned char buf[10]; - - f = fopen(input, "rb"); - if (!f) - { - assert(0); - return; - } - - nread = fread(buf, 1, sizeof(buf), f); - if (nread != 9) - goto cleanup; - - memcpy(&u.tmp, &buf[0], 2); - if (u.tmp < 1200) - u.tmp = 1200; - else if (u.tmp > 0xFF00) - u.tmp = 0xFF00; - packet_sz = u.tmp; - - memcpy(&u.itmp, &buf[2], 2); - if (u.itmp < SHRT_MIN / 2) - limit = INT_MIN; - else if (u.itmp < SHRT_MIN / 4) - limit = 0; - else if (u.itmp > SHRT_MAX / 2) - limit = INT_MAX; - else if (u.itmp > SHRT_MAX / 2) - limit = 0; - else - limit = u.itmp; - - n_packets = buf[4]; - n_iovecs = buf[5]; - n_frames = buf[6]; - - prologue_sz = buf[7]; - if (prologue_sz > 170) - prologue_sz = 170; - - switch (buf[8] & 7) - { - case 0: version = LSQVER_043; break; - case 1: version = LSQVER_046; break; - case 2: version = LSQVER_050; break; - case 3: version = LSQVER_ID27; break; - case 4: version = LSQVER_ID29; break; - default: - case 5: version = LSQVER_I001; break; - } - - sched_immed = !!(buf[8] & 0x08); - http = !!(buf[8] & 0x10); - - lsquic_stream_set_pwritev_params(n_iovecs, n_frames); - test_pwritev(version, http, sched_immed, limit, packet_sz, prologue_sz, - n_packets); - - cleanup: - (void) fclose(f); -} - - -static unsigned -count_hq_frames (const struct lsquic_stream *stream) -{ - const struct stream_hq_frame *shf; - unsigned n_frames = 0; - STAILQ_FOREACH(shf, &stream->sm_hq_frames, shf_next) - ++n_frames; - return n_frames; -} - - -static void -test_frame_header_split (unsigned n_packets, unsigned extra_sz, - int add_one_more) -{ - struct test_objs tobjs; - struct lsquic_stream *stream; - size_t nw; - int fin, s; - unsigned char *buf_in, *buf_out; - const unsigned wsize = 70; - const size_t buf_in_sz = wsize, buf_out_sz = 0x500000; - unsigned n_frames; - - struct lsxpack_header header = { XHDR(":method", "GET") }; - struct lsquic_http_headers headers = { 1, &header, }; - - buf_in = malloc(buf_in_sz); - buf_out = malloc(buf_out_sz); - assert(buf_in && buf_out); - - struct packetization_test_stream_ctx packet_stream_ctx = - { - .buf = buf_in, - .off = 0, - .len = buf_in_sz, - .write_size = wsize, - .flush_after_each_write = 0, - }; - - init_buf(buf_in, buf_in_sz); - - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - - stream_ctor_flags |= SCF_IETF; - init_test_objs(&tobjs, 0x1000, buf_out_sz, 1252); - tobjs.stream_if_ctx = &packet_stream_ctx; - tobjs.ctor_flags |= SCF_HTTP|SCF_IETF; - - g_ctl_settings.tcs_can_send = n_packets; - tobjs.stream_if = &packetization_inside_once_stream_if; - tobjs.ctor_flags |= SCF_DISP_RW_ONCE; - - struct lsquic_packet_out *const packet_out - = lsquic_send_ctl_new_packet_out(&tobjs.send_ctl, 0, PNS_APP, &network_path); - assert(packet_out); - const size_t pad_size = packet_out->po_n_alloc - - 2 /* STREAM header */ - - 5 /* 3-byte HEADERS frame */ - - extra_sz; - packet_out->po_data_sz = pad_size; - lsquic_send_ctl_scheduled_one(&tobjs.send_ctl, packet_out); - - stream = new_stream(&tobjs, 0, buf_out_sz); - - s = lsquic_stream_send_headers(stream, &headers, 0); - assert(0 == s); - - const ssize_t w = lsquic_stream_write(stream, buf_in, buf_in_sz); - assert(w >= 0 && (size_t) w == buf_in_sz); - n_frames = count_hq_frames(stream); - assert((int) n_frames == 1 + (w > 0)); - - lsquic_stream_flush(stream); - n_frames = count_hq_frames(stream); - assert((int) n_frames == !!stream->sm_n_buffered); - - if (add_one_more) - { - ++g_ctl_settings.tcs_can_send; - lsquic_stream_flush(stream); - } - - /* Verify written data: */ - nw = read_from_scheduled_packets(&tobjs.send_ctl, 0, buf_out, buf_out_sz, - 0, &fin, 1); - { /* Remove framing and verify contents */ - const unsigned char *src; - unsigned char *dst; - uint64_t sz; - unsigned frame_type; - int s; - - src = buf_out; - dst = buf_out; - while (src < buf_out + nw) - { - frame_type = *src++; - s = vint_read(src, buf_out + buf_out_sz, &sz); - assert(s > 0); - assert(sz > 0); - assert(sz < (1 << 14)); - src += s; - if (src == buf_out + s + 1) - { - /* Ignore headers */ - assert(frame_type == HQFT_HEADERS); - src += sz; - } - else - { - assert(frame_type == HQFT_DATA); - if (src + sz > buf_out + nw) /* Chopped DATA frame (last) */ - sz = buf_out + nw - src; - memmove(dst, src, sz); - dst += sz; - src += sz; - } - } - assert(0 == memcmp(buf_in, buf_out, (uintptr_t) dst - (uintptr_t) buf_out)); - } - - lsquic_stream_destroy(stream); - deinit_test_objs(&tobjs); - free(buf_in); - free(buf_out); - - stream_ctor_flags &= ~SCF_IETF; -} - - -static void -test_zero_size_frame (void) -{ - struct test_objs tobjs; - struct lsquic_stream *stream; - ssize_t w; - size_t nw; - int fin, s; - unsigned char *buf_in, *buf_out; - const unsigned wsize = 7000; - const size_t buf_in_sz = wsize, buf_out_sz = 0x500000; - - struct lsxpack_header header = { XHDR(":method", "GET") }; - struct lsquic_http_headers headers = { 1, &header, }; - - buf_in = malloc(buf_in_sz); - buf_out = malloc(buf_out_sz); - assert(buf_in && buf_out); - - struct packetization_test_stream_ctx packet_stream_ctx = - { - .buf = buf_in, - .off = 0, - .len = buf_in_sz, - .write_size = wsize, - .flush_after_each_write = 0, - }; - - init_buf(buf_in, buf_in_sz); - - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - - stream_ctor_flags |= SCF_IETF; - init_test_objs(&tobjs, 0x1000, buf_out_sz, 1252); - tobjs.stream_if_ctx = &packet_stream_ctx; - tobjs.ctor_flags |= SCF_HTTP|SCF_IETF; - - g_ctl_settings.tcs_can_send = 1; - tobjs.stream_if = &packetization_inside_once_stream_if; - tobjs.ctor_flags |= SCF_DISP_RW_ONCE; - - struct lsquic_packet_out *const packet_out - = lsquic_send_ctl_new_packet_out(&tobjs.send_ctl, 0, PNS_APP, &network_path); - assert(packet_out); - const size_t pad_size = packet_out->po_n_alloc - - 2 /* STREAM header */ - - 5 /* 3-byte HEADERS frame */ - - 3; - packet_out->po_data_sz = pad_size; - lsquic_send_ctl_scheduled_one(&tobjs.send_ctl, packet_out); - - stream = new_stream(&tobjs, 0, buf_out_sz); - - s = lsquic_stream_send_headers(stream, &headers, 0); - assert(0 == s); - - w = lsquic_stream_write(stream, buf_in, buf_in_sz); - assert(w >= 0); - lsquic_stream_flush(stream); - - g_ctl_settings.tcs_can_send++; - w = lsquic_stream_write(stream, buf_in, buf_in_sz); - assert(w >= 0); - lsquic_stream_flush(stream); - - /* Verify written data: */ - nw = read_from_scheduled_packets(&tobjs.send_ctl, 0, buf_out, buf_out_sz, - 0, &fin, 1); - { /* Remove framing and verify contents */ - const unsigned char *src; - unsigned char *dst; - uint64_t sz; - unsigned frame_type; - int s; - - src = buf_out; - dst = buf_out; - while (src < buf_out + nw) - { - frame_type = *src++; - s = vint_read(src, buf_out + buf_out_sz, &sz); - assert(s > 0); - assert(sz < (1 << 14)); - src += s; - if (src == buf_out + s + 1) - { - /* Ignore headers */ - assert(frame_type == HQFT_HEADERS); - src += sz; - } - else - { - assert(frame_type == HQFT_DATA); - if (src + sz > buf_out + nw) /* Chopped DATA frame (last) */ - sz = buf_out + nw - src; - memmove(dst, src, sz); - dst += sz; - src += sz; - } - } - assert(0 == memcmp(buf_in, buf_out, (uintptr_t) dst - (uintptr_t) buf_out)); - } - - lsquic_stream_destroy(stream); - deinit_test_objs(&tobjs); - free(buf_in); - free(buf_out); - - stream_ctor_flags &= ~SCF_IETF; -} - - -/* Create a new stream frame. Each stream frame has a real packet_in to - * back it up, just like in real code. The contents of the packet do - * not matter. - */ -static stream_frame_t * -new_frame_in_ext (struct test_objs *tobjs, size_t off, size_t sz, int fin, - const void *data) -{ - lsquic_packet_in_t *packet_in; - stream_frame_t *frame; - - assert(sz <= 1370); - - packet_in = lsquic_mm_get_packet_in(&tobjs->eng_pub.enp_mm); - if (data) - packet_in->pi_data = (void *) data; - else - { - packet_in->pi_data = lsquic_mm_get_packet_in_buf(&tobjs->eng_pub.enp_mm, 1370); - packet_in->pi_flags |= PI_OWN_DATA; - memset(packet_in->pi_data, 'A', sz); - } - /* This is not how stream frame looks in the packet: we have no - * header. In our test case it does not matter, as we only care - * about stream frame. - */ - packet_in->pi_data_sz = sz; - packet_in->pi_refcnt = 1; - - frame = lsquic_malo_get(tobjs->eng_pub.enp_mm.malo.stream_frame); - memset(frame, 0, sizeof(*frame)); - frame->packet_in = packet_in; - frame->data_frame.df_offset = off; - frame->data_frame.df_size = sz; - frame->data_frame.df_data = &packet_in->pi_data[0]; - frame->data_frame.df_fin = fin; - - return frame; -} - - -/* Receiving DATA frame with zero payload should result in lsquic_stream_read() - * returning -1. - */ -static void -test_reading_zero_size_data_frame (void) -{ - struct test_objs tobjs; - struct lsquic_stream *stream; - struct stream_frame *frame; - ssize_t nr; - int s; - unsigned char buf[2]; - - init_test_ctl_settings(&g_ctl_settings); - - stream_ctor_flags |= SCF_IETF; - init_test_objs(&tobjs, 0x1000, 0x2000, 1252); - tobjs.ctor_flags |= SCF_HTTP|SCF_IETF; - - stream = new_stream(&tobjs, 0, 0x1000); - - /* Fake out reading of HEADERS frame: */ - stream->stream_flags |= STREAM_HAVE_UH; - stream->sm_hq_filter.hqfi_flags |= HQFI_FLAG_HEADER; - - /* One-byte DATA frame */ - frame = new_frame_in_ext(&tobjs, 0, 3, 0, (uint8_t[3]){ 0, 1, 'a', }); - s = lsquic_stream_frame_in(stream, frame); - assert(s == 0); /* Self-check */ - - /* Zero-length DATA frame */ - frame = new_frame_in_ext(&tobjs, 3, 2, 0, (uint8_t[2]){ 0, 0, }); - s = lsquic_stream_frame_in(stream, frame); - assert(s == 0); /* Self-check */ - - assert(stream->read_offset == 2); /* Self-check */ - - /* Read 'a' */ - nr = lsquic_stream_read(stream, buf, 1); - assert(nr == 1); - assert(buf[0] == 'a'); - - /* Check that read returns -1 */ - nr = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(nr == -1); - - /* DATA frame was consumed: */ - assert(stream->read_offset == 5); - - lsquic_stream_destroy(stream); - deinit_test_objs(&tobjs); - - stream_ctor_flags &= ~SCF_IETF; -} - - -/* Receiving DATA frame with zero payload should result in lsquic_stream_read() - * returning -1. - */ -static void -test_reading_zero_size_data_frame_scenario2 (void) -{ - struct test_objs tobjs; - struct lsquic_stream *stream; - struct stream_frame *frame; - ssize_t nr; - int s; - unsigned char buf[2]; - - init_test_ctl_settings(&g_ctl_settings); - - stream_ctor_flags |= SCF_IETF; - init_test_objs(&tobjs, 0x1000, 0x2000, 1252); - tobjs.ctor_flags |= SCF_HTTP|SCF_IETF; - - stream = new_stream(&tobjs, 0, 0x1000); - - /* Fake out reading of HEADERS frame: */ - stream->stream_flags |= STREAM_HAVE_UH; - stream->sm_hq_filter.hqfi_flags |= HQFI_FLAG_HEADER; - - /* Zero-length DATA frame */ - frame = new_frame_in_ext(&tobjs, 0, 5, 0, (uint8_t[5]){ 0, 1, 'a', 0, 0, }); - s = lsquic_stream_frame_in(stream, frame); - assert(s == 0); /* Self-check */ - - assert(stream->read_offset == 2); /* Self-check */ - - /* Read 'a' */ - nr = lsquic_stream_read(stream, buf, 1); - assert(nr == 1); - assert(buf[0] == 'a'); - - /* Check that read returns -1 */ - nr = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(nr == -1); - - /* DATA frame was consumed: */ - assert(stream->read_offset == 5); - - lsquic_stream_destroy(stream); - deinit_test_objs(&tobjs); - - stream_ctor_flags &= ~SCF_IETF; -} - - -/* Receiving DATA frame with zero payload should result in lsquic_stream_read() - * returning -1. - */ -static void -test_reading_zero_size_data_frame_scenario3 (void) -{ - struct test_objs tobjs; - struct lsquic_stream *stream; - struct stream_frame *frame; - ssize_t nr; - int s; - unsigned char buf[2]; - - init_test_ctl_settings(&g_ctl_settings); - - stream_ctor_flags |= SCF_IETF; - init_test_objs(&tobjs, 0x1000, 0x2000, 1252); - tobjs.ctor_flags |= SCF_HTTP|SCF_IETF; - - stream = new_stream(&tobjs, 0, 0x1000); - - /* Fake out reading of HEADERS frame: */ - stream->stream_flags |= STREAM_HAVE_UH; - stream->sm_hq_filter.hqfi_flags |= HQFI_FLAG_HEADER; - - /* Zero-length DATA frame */ - frame = new_frame_in_ext(&tobjs, 0, 4, 0, (uint8_t[4]){ 0, 1, 'a', 0, }); - s = lsquic_stream_frame_in(stream, frame); - assert(s == 0); /* Self-check */ - - assert(stream->read_offset == 2); /* Self-check */ - - /* Read 'a' */ - nr = lsquic_stream_read(stream, buf, 1); - assert(nr == 1); - assert(buf[0] == 'a'); - - /* Check that read returns -1 */ - nr = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(nr == -1); - - /* Zero-length DATA frame */ - frame = new_frame_in_ext(&tobjs, 4, 1, 0, (uint8_t[1]){ 0, }); - s = lsquic_stream_frame_in(stream, frame); - assert(s == 0); /* Self-check */ - - /* Check that read returns -1 */ - nr = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(nr == -1); - - /* DATA frame was consumed: */ - assert(stream->read_offset == 5); - - lsquic_stream_destroy(stream); - deinit_test_objs(&tobjs); - - stream_ctor_flags &= ~SCF_IETF; -} - - -int -main (int argc, char **argv) -{ - const char *fuzz_hq_framing_input = NULL; - const char *fuzz_pwritev_input = NULL; - int opt, add_one_more; - unsigned n_packets, extra_sz; - - lsquic_global_init(LSQUIC_GLOBAL_SERVER); - - while (-1 != (opt = getopt(argc, argv, "f:p:l:"))) - { - switch (opt) - { - case 'f': - fuzz_hq_framing_input = optarg; - break; - case 'p': - fuzz_pwritev_input = optarg; - break; - case 'l': - lsquic_log_to_fstream(stderr, LLTS_NONE); - lsquic_logger_lopt(optarg); - break; - default: - exit(1); - } - } - - init_test_ctl_settings(&g_ctl_settings); - - if (fuzz_hq_framing_input) - fuzz_guided_hq_framing_testing(fuzz_hq_framing_input); - else if (fuzz_pwritev_input) - fuzz_guided_pwritev_testing(fuzz_pwritev_input); - else - { - main_test_pwritev(); - main_test_hq_framing(); - for (n_packets = 1; n_packets <= 2; ++n_packets) - for (extra_sz = 0; extra_sz <= 2; ++extra_sz) - for (add_one_more = 0; add_one_more <= 1; ++add_one_more) - test_frame_header_split(n_packets, extra_sz, add_one_more); - test_zero_size_frame(); - test_reading_zero_size_data_frame(); - test_reading_zero_size_data_frame_scenario2(); - test_reading_zero_size_data_frame_scenario3(); - } - - return 0; -} - -static const char on_being_idle[] = -"ON BEING IDLE." -"" -"Now, this is a subject on which I flatter myself I really am _au fait_." -"The gentleman who, when I was young, bathed me at wisdom's font for nine" -"guineas a term--no extras--used to say he never knew a boy who could" -"do less work in more time; and I remember my poor grandmother once" -"incidentally observing, in the course of an instruction upon the use" -"of the Prayer-book, that it was highly improbable that I should ever do" -"much that I ought not to do, but that she felt convinced beyond a doubt" -"that I should leave undone pretty well everything that I ought to do." -"" -"I am afraid I have somewhat belied half the dear old lady's prophecy." -"Heaven help me! I have done a good many things that I ought not to have" -"done, in spite of my laziness. But I have fully confirmed the accuracy" -"of her judgment so far as neglecting much that I ought not to have" -"neglected is concerned. Idling always has been my strong point. I take" -"no credit to myself in the matter--it is a gift. Few possess it. There" -"are plenty of lazy people and plenty of slow-coaches, but a genuine" -"idler is a rarity. He is not a man who slouches about with his hands in" -"his pockets. On the contrary, his most startling characteristic is that" -"he is always intensely busy." -"" -"It is impossible to enjoy idling thoroughly unless one has plenty of" -"work to do. There is no fun in doing nothing when you have nothing to" -"do. Wasting time is merely an occupation then, and a most exhausting" -"one. Idleness, like kisses, to be sweet must be stolen." -"" -"Many years ago, when I was a young man, I was taken very ill--I never" -"could see myself that much was the matter with me, except that I had" -"a beastly cold. But I suppose it was something very serious, for the" -"doctor said that I ought to have come to him a month before, and that" -"if it (whatever it was) had gone on for another week he would not have" -"answered for the consequences. It is an extraordinary thing, but I" -"never knew a doctor called into any case yet but what it transpired" -"that another day's delay would have rendered cure hopeless. Our medical" -"guide, philosopher, and friend is like the hero in a melodrama--he" -"always comes upon the scene just, and only just, in the nick of time. It" -"is Providence, that is what it is." -"" -"Well, as I was saying, I was very ill and was ordered to Buxton for a" -"month, with strict injunctions to do nothing whatever all the while" -"that I was there. \"Rest is what you require,\" said the doctor, \"perfect" -"rest.\"" -"" -"It seemed a delightful prospect. \"This man evidently understands my" -"complaint,\" said I, and I pictured to myself a glorious time--a four" -"weeks' _dolce far niente_ with a dash of illness in it. Not too much" -"illness, but just illness enough--just sufficient to give it the flavor" -"of suffering and make it poetical. I should get up late, sip chocolate," -"and have my breakfast in slippers and a dressing-gown. I should lie out" -"in the garden in a hammock and read sentimental novels with a melancholy" -"ending, until the books should fall from my listless hand, and I should" -"recline there, dreamily gazing into the deep blue of the firmament," -"watching the fleecy clouds floating like white-sailed ships across" -"its depths, and listening to the joyous song of the birds and the low" -"rustling of the trees. Or, on becoming too weak to go out of doors," -"I should sit propped up with pillows at the open window of the" -"ground-floor front, and look wasted and interesting, so that all the" -"pretty girls would sigh as they passed by." -"" -"And twice a day I should go down in a Bath chair to the Colonnade to" -"drink the waters. Oh, those waters! I knew nothing about them then," -"and was rather taken with the idea. \"Drinking the waters\" sounded" -"fashionable and Queen Anne-fied, and I thought I should like them. But," -"ugh! after the first three or four mornings! Sam Weller's description of" -"them as \"having a taste of warm flat-irons\" conveys only a faint idea of" -"their hideous nauseousness. If anything could make a sick man get well" -"quickly, it would be the knowledge that he must drink a glassful of them" -"every day until he was recovered. I drank them neat for six consecutive" -"days, and they nearly killed me; but after then I adopted the plan of" -"taking a stiff glass of brandy-and-water immediately on the top of them," -"and found much relief thereby. I have been informed since, by various" -"eminent medical gentlemen, that the alcohol must have entirely" -"counteracted the effects of the chalybeate properties contained in the" -"water. I am glad I was lucky enough to hit upon the right thing." -; - -static void -init_buf (void *buf, size_t sz) -{ - unsigned char *p = buf; - unsigned char *const end = (unsigned char*)buf + sz; - size_t n; - - while (p < end) - { - n = end - p; - if (sizeof(on_being_idle) - 1 < n) - n = sizeof(on_being_idle) - 1; - memcpy(p, on_being_idle, n); - p +=n; - } - - assert(p == end); -} diff --git a/external/lsquic/tests/test_hcsi_reader.c b/external/lsquic/tests/test_hcsi_reader.c deleted file mode 100644 index 8e688e6..0000000 --- a/external/lsquic/tests/test_hcsi_reader.c +++ /dev/null @@ -1,303 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include -#include - -#include "lsquic.h" -#include "lsquic_int_types.h" -#include "lsquic_varint.h" -#include "lsquic_hq.h" -#include "lsquic_hcsi_reader.h" -#include "lsquic_hash.h" -#include "lsquic_conn.h" - -struct test -{ - int lineno; - - enum { - TEST_NO_FLAGS = 0, - TEST_NUL_OUT_LEST_FULL = 1 << 0, - } flags; - - unsigned char input[0x100]; - size_t input_sz; - - int retval; - char output[0x1000]; -}; - - -static const struct test tests[] = -{ - { - __LINE__, - TEST_NO_FLAGS, - { - 0x03, - 0x04, - 0x80, 0x12, 0x34, 0x45, - }, - 6, - 0, - "on_cancel_push: 1193029\n", - }, - - { - __LINE__, - TEST_NO_FLAGS, - { - HQFT_MAX_PUSH_ID, - 0x02, - 0x41, 0x23, - }, - 4, - 0, - "on_max_push_id: 291\n", - }, - - { - __LINE__, - TEST_NO_FLAGS, - { - HQFT_SETTINGS, - 0x00, - }, - 2, - 0, - "have SETTINGS frame\n", - }, - - { /* Frame contents do not match frame length */ - __LINE__, - TEST_NO_FLAGS, - { - HQFT_MAX_PUSH_ID, - 0x03, - 0x41, 0x23, - }, - 4, - -1, - "", - }, - - { - __LINE__, - TEST_NO_FLAGS, - { - HQFT_SETTINGS, - 13, - 0x52, 0x34, - 0xC0, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x78, - 0x52, 0x35, - 0x00, - }, - 15, - 0, - "on_setting: 0x1234=0x12233445566778\n" - "on_setting: 0x1235=0x0\n" - "have SETTINGS frame\n" - , - }, - - { - __LINE__, - TEST_NO_FLAGS, - { - 0x80, 0x0F, 0x07, 0x00, /* HQFT_PRIORITY_UPDATE_STREAM */ - 7, - 0x52, 0x34, - 0x41, 0x42, 0x43, 0x44, 0x45, /* ABCDE */ - HQFT_MAX_PUSH_ID, - 0x02, - 0x41, 0x23, - }, - 16, - 0, - "on_priority_update: stream=0x1234, [ABCDE]\n" - "on_max_push_id: 291\n" - , - }, - - { - __LINE__, - TEST_NO_FLAGS, - { - 0x80, 0x0F, 0x07, 0x01, /* HQFT_PRIORITY_UPDATE_PUSH */ - 6, - 0x08, - 0x50, 0x51, 0x52, 0x53, 0x54, /* PQRST */ - }, - 11, - 0, - "on_priority_update: push=0x8, [PQRST]\n" - , - }, - - { - __LINE__, - TEST_NUL_OUT_LEST_FULL, - { - 0x80, 0x0F, 0x07, 0x01, /* HQFT_PRIORITY_UPDATE_PUSH */ - 21, - 0x08, - 0x50, 0x51, 0x52, 0x53, 0x54, /* PQRST */ - 0x50, 0x51, 0x52, 0x53, 0x54, /* PQRST */ - 0x50, 0x51, 0x52, 0x53, 0x54, /* PQRST */ - 0x50, 0x51, 0x52, 0x53, 0x54, /* PQRST */ - }, - 26, - 0, - "on_priority_update: push=0x8, [PQRSTPQRSTPQRSTPQRST]\n" - , - }, - -}; - - -static void -on_cancel_push (void *ctx, uint64_t push_id) -{ - fprintf(ctx, "%s: %"PRIu64"\n", __func__, push_id); -} - -static void -on_max_push_id (void *ctx, uint64_t push_id) -{ - fprintf(ctx, "%s: %"PRIu64"\n", __func__, push_id); -} - -static void -on_settings_frame (void *ctx) -{ - fprintf(ctx, "have SETTINGS frame\n"); -} - -static void -on_setting (void *ctx, uint64_t setting_id, uint64_t value) -{ - fprintf(ctx, "%s: 0x%"PRIX64"=0x%"PRIX64"\n", __func__, setting_id, value); -} - -static void -on_goaway (void *ctx, uint64_t stream_id) -{ - fprintf(ctx, "%s: %"PRIu64"\n", __func__, stream_id); -} - -static void -on_frame_error (void *ctx, unsigned code, uint64_t frame_type) -{ - fprintf(ctx, "%s: %"PRIu64"\n", __func__, frame_type); -} - -static void -on_priority_update (void *ctx, enum hq_frame_type frame_type, - /* PFV: Priority Field Value */ - uint64_t id, const char *pfv, size_t pfv_sz) -{ - const char *type; - - switch (frame_type) - { - case HQFT_PRIORITY_UPDATE_STREAM: type = "stream"; break; - case HQFT_PRIORITY_UPDATE_PUSH: type = "push"; break; - default: assert(0); return; - } - - fprintf(ctx, "%s: %s=0x%"PRIX64", [%.*s]\n", __func__, type, id, - (int) pfv_sz, pfv); -} - -static const struct hcsi_callbacks callbacks = -{ - .on_cancel_push = on_cancel_push, - .on_max_push_id = on_max_push_id, - .on_settings_frame = on_settings_frame, - .on_setting = on_setting, - .on_goaway = on_goaway, - .on_frame_error = on_frame_error, - .on_priority_update = on_priority_update, -}; - - -static void -abort_error (struct lsquic_conn *conn, int is_app, unsigned error_code, - const char *format, ...) -{ -} - - -static const struct conn_iface conn_iface = { - .ci_abort_error = abort_error, -}; - - -static void -run_test (const struct test *test) -{ - struct hcsi_reader reader; - size_t read_sz, out_sz, toread; - FILE *out_f; - char *output; - const unsigned char *p; - int s; - struct lsquic_conn lconn = LSCONN_INITIALIZER_CIDLEN(lconn, 0); - lconn.cn_if = &conn_iface; - - for (read_sz = 1; read_sz <= test->input_sz; ++read_sz) - { - out_f = open_memstream(&output, &out_sz); - lsquic_hcsi_reader_init(&reader, &lconn, &callbacks, out_f); - reader.hr_flag |= HR_FLAG_RCVD_SETTING; - - p = test->input; - do - { - toread = test->input + test->input_sz - p; - if (toread > read_sz) - toread = read_sz; - s = lsquic_hcsi_reader_feed(&reader, p, toread); - if (s != 0) - break; - p += toread; - } - while (p < test->input + test->input_sz); - - assert(s == test->retval); - - fclose(out_f); - if (test->retval == 0 && read_sz < test->input_sz - && (test->flags & TEST_NUL_OUT_LEST_FULL)) - assert(0 == strcmp(output, "")); - else - assert(0 == strcmp(test->output, output)); - free(output); - } -} - -int -main (void) -{ - const struct test *test; - struct test coalesced_test; - - for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) - run_test(test); - - memset(&coalesced_test, 0, sizeof(coalesced_test)); - for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) - if (test->retval == 0 && !(test->flags & TEST_NUL_OUT_LEST_FULL)) - { - memcpy(coalesced_test.input + coalesced_test.input_sz, - test->input, test->input_sz); - coalesced_test.input_sz += test->input_sz; - strcat(coalesced_test.output, test->output); - } - run_test(&coalesced_test); - - return 0; -} diff --git a/external/lsquic/tests/test_hkdf.c b/external/lsquic/tests/test_hkdf.c deleted file mode 100644 index a29ab4e..0000000 --- a/external/lsquic/tests/test_hkdf.c +++ /dev/null @@ -1,86 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include - -#include "lsquic_crypto.h" - -/* rfc 5869 examples*/ -void test_HKDF() -{ - unsigned char prk[32]; - unsigned char okm[100]; - uint16_t L; - /*test case 1 */ - lshkdf_extract((const unsigned char *) "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", - 22, - (const unsigned char *) "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c", - 13, - prk); - assert(memcmp(prk, "\x07\x77\x09\x36\x2c\x2e\x32\xdf\x0d\xdc\x3f\x0d\xc4\x7b\xba\x63\x90\xb6\xc7\x3b\xb5\x0f\x9c\x31\x22\xec\x84\x4a\xd7\xc2\xb3\xe5", - 32) == 0); - - L = 42; - lshkdf_expand(prk, (const unsigned char *) "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9", 10, L, okm, 0, NULL, 0, NULL, 0, NULL, 0, NULL, NULL, NULL); - assert(memcmp(okm, "\x3c\xb2\x5f\x25\xfa\xac\xd5\x7a\x90\x43\x4f\x64\xd0\x36\x2f\x2a" - "\x2d\x2d\x0a\x90\xcf\x1a\x5a\x4c\x5d\xb0\x2d\x56\xec\xc4\xc5\xbf" - "\x34\x00\x72\x08\xd5\xb8\x87\x18\x58\x65", L) == 0); - - - /* 2 */ - L = 82; - lshkdf_extract((const unsigned char *) "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" - "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f" - "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f" - "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f" - "\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f", - 80, - (const unsigned char *) "\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f" - "\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f" - "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f" - "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f" - "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf", - 80, - - prk); - assert(memcmp(prk, "\x06\xa6\xb8\x8c\x58\x53\x36\x1a\x06\x10\x4c\x9c\xeb\x35\xb4\x5c" - "\xef\x76\x00\x14\x90\x46\x71\x01\x4a\x19\x3f\x40\xc1\x5f\xc2\x44", - 32) == 0); - - lshkdf_expand(prk, (const unsigned char *) "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf" - "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf" - "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf" - "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef" - "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff", - 80, L, okm, 0, NULL, 0, NULL, 0, NULL, 0, NULL, NULL, NULL); - assert(memcmp(okm, "\xb1\x1e\x39\x8d\xc8\x03\x27\xa1\xc8\xe7\xf7\x8c\x59\x6a\x49\x34" - "\x4f\x01\x2e\xda\x2d\x4e\xfa\xd8\xa0\x50\xcc\x4c\x19\xaf\xa9\x7c" - "\x59\x04\x5a\x99\xca\xc7\x82\x72\x71\xcb\x41\xc6\x5e\x59\x0e\x09" - "\xda\x32\x75\x60\x0c\x2f\x09\xb8\x36\x77\x93\xa9\xac\xa3\xdb\x71" - "\xcc\x30\xc5\x81\x79\xec\x3e\x87\xc1\x4c\x01\xd5\xc1\xf3\x43\x4f" - "\x1d\x87", L) == 0); - - /* 3 */ - lshkdf_extract((const unsigned char *) "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", - 22, - NULL, - 0, - prk); - assert(memcmp(prk, "\x19\xef\x24\xa3\x2c\x71\x7b\x16\x7f\x33\xa9\x1d\x6f\x64\x8b\xdf" - "\x96\x59\x67\x76\xaf\xdb\x63\x77\xac\x43\x4c\x1c\x29\x3c\xcb\x04", - 32) == 0); - - L = 42; - lshkdf_expand(prk, NULL, 0, L, okm, 0, NULL, 0, NULL, 0, NULL, 0, NULL, NULL, NULL); - assert(memcmp(okm, "\x8d\xa4\xe7\x75\xa5\x63\xc1\x8f\x71\x5f\x80\x2a\x06\x3c\x5a\x31" - "\xb8\xa1\x1f\x5c\x5e\xe1\x87\x9e\xc3\x45\x4e\x5f\x3c\x73\x8d\x2d" - "\x9d\x20\x13\x95\xfa\xa4\xb6\x1a\x96\xc8", L) == 0); -} - - -int -main (void) -{ - test_HKDF(); - return 0; -} diff --git a/external/lsquic/tests/test_hpi.c b/external/lsquic/tests/test_hpi.c deleted file mode 100644 index d08e3d1..0000000 --- a/external/lsquic/tests/test_hpi.c +++ /dev/null @@ -1,353 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" - -#include "lsquic_int_types.h" -#include "lsquic_packet_common.h" -#include "lsquic_packet_in.h" -#include "lsquic_conn_flow.h" -#include "lsquic_sfcw.h" -#include "lsquic_varint.h" -#include "lsquic_hq.h" -#include "lsquic_hash.h" -#include "lsquic_conn.h" -#include "lsquic_stream.h" -#include "lsquic_types.h" -#include "lsquic_rtt.h" -#include "lsquic_conn_flow.h" -#include "lsquic_conn_public.h" -#include "lsquic_mm.h" -#include "lsquic_min_heap.h" -#include "lsquic_hpi.h" -#include "lsquic_logger.h" - - -/* - * DSL: - * - * S\d+:\d+:\d+ Create stream and insert it into list. The three numbers - * are stream ID, priority, and incremental boolean flag. - * Priority can be negative, which indicates a critical - * stream. Otherwise, the priorirty should be in the range - * [0, MAX_HTTP_PRIORITY]. The incremental flag is ignored - * for critical streams. - * - * F\d+ Use filter identified by the number. For "F" to take - * effect, it should be called before "I". - * - * I Initialize the iterator. - * - * D[hH] Call drop high (h) or drop non-high (H). - * - * N\d+ Call "next" and verify that the stream ID is this number. - * If "next" returns NULL, the test fails. - * - */ - -static const struct test_spec { - int lineno; - const char *prog; -} test_specs[] = { - - { __LINE__, - "S0:3:0;" - "I;" - "N0;" - }, - - { __LINE__, - /* Insert non-incremental streams with same priority, check that - * they come back out in the order of stream IDs. - */ - "S1:3:0;" "S0:3:0;" "S2:3:0;" - "I;" - "N0;" "N1;" "N2;" - }, - - { __LINE__, - /* Insert incremental streams with same priority, check that they - * come back out in the same order. - */ - "S1:3:1;" "S0:3:1;" "S2:3:1;" - "I;" - "N1;" "N0;" "N2;" - }, - - { __LINE__, - /* Insert incremental streams with same priority, filter out out odd - * IDs, check that they come back out in the same order and without - * the odd stream ID" - */ - "S1:3:1;" "S0:3:1;" "S2:3:1;" - "F;" - "I;" - "N0;" "N2;" - }, - - { __LINE__, - /* Insert incremental and non-incremental streams with same priority. - * Check that non-incrementals are returned first. - */ - "S1:3:1;" "S0:3:1;" "S2:3:1;" - "S6:3:0;" "S10:3:0;" "S3:3:0;" - "I;" - "N3;N6;N10;" - "N1;N0;N2;" - }, - - { __LINE__, - /* Drop high with same priority: nothing should be dropped */ - "S1:3:1;" "S0:3:1;" "S2:3:1;" - "I;" - "Dh;" - "N1;" "N0;" "N2;" - }, - - { __LINE__, - /* Drop non-high with same priority: nothing should be dropped */ - "S1:3:1;" "S0:3:1;" "S2:3:1;" - "I;" - "DH;" - "N1;" "N0;" "N2;" - }, - - { __LINE__, - /* Drop high with same priority: drop non-incrementals */ - "S1:3:1;" "S0:3:1;" "S2:3:1;" - "S6:3:0;" "S10:3:0;" "S3:3:0;" - "I;" - "Dh;" - "N1;" "N0;" "N2;" - }, - - { __LINE__, - /* Drop non-high with same priority: drop incrementals */ - "S1:3:1;" "S0:3:1;" "S2:3:1;" - "S6:3:0;" "S10:3:0;" "S3:3:0;" - "I;" - "DH;" - "N3;N6;N10;" - }, - - { __LINE__, - /* Insert streams with different priorities */ - "S1:1:1;" "S2:2:1;" "S3:3:1;" - "S6:6:0;" "S5:5:0;" "S4:4:0;" - "I;" - "N1;N2;N3;N4;N5;N6;" - }, - - { __LINE__, - /* Insert regular and critical streams */ - "S1:1:1;" "S2:2:1;" "S3333:-1:1;" - "S6:6:0;" "S2222:-1:0;" "S4:4:0;" - "I;" - "N3333;N2222;N1;N2;N4;N6;" - }, - - { __LINE__, - /* Insert regular and critical streams; drop high */ - "S1:1:1;" "S2:2:1;" "S3333:-1:1;" - "S6:6:0;" "S2222:-1:0;" "S4:4:0;" - "I;" - "Dh;" - "N1;N2;N4;N6;" - }, - - { __LINE__, - /* Insert regular and critical streams; drop non-high */ - "S1:1:1;" "S2:2:1;" "S3333:-1:1;" - "S6:6:0;" "S2222:-1:0;" "S4:4:0;" - "I;" - "DH;" - "N3333;N2222;" - }, - - { __LINE__, - /* Insert streams with different priorities, non-incremental, - * several per bucket. - */ - "S1:1:0;" "S4:2:0;" "S3:2:0;" - "S6:1:0;" "S5:1:0;" "S2:2:0;" - "I;" - "N1;N5;N6;N2;N3;N4;" - }, - -}; - -/* Sharing the same HPI tests safety of reusing the same iterator object - * (no need to deinitialize it). - */ -static struct http_prio_iter hpi; - -static struct lsquic_conn lconn = LSCONN_INITIALIZER_CIDLEN(lconn, 0); - -static struct lsquic_conn_public conn_pub = { .lconn = &lconn, }; - - -static struct lsquic_stream * -new_stream (lsquic_stream_id_t stream_id, int priority, int incr) -{ - struct lsquic_stream *stream = calloc(1, sizeof(*stream)); - stream->id = stream_id; - if (priority >= 0) - { - stream->sm_priority = priority; - if (incr) - stream->sm_bflags |= SMBF_INCREMENTAL; - } - else - stream->sm_bflags |= SMBF_CRITICAL; - /* Critical streams are never incremental */ - return stream; -} - - -#define MAGIC 0x12312312U - -struct my_filter_ctx -{ - unsigned magic; -}; - -static int -filter_out_odd_stream_ids (void *ctx, struct lsquic_stream *stream) -{ - struct my_filter_ctx *fctx = ctx; - assert(fctx->magic == MAGIC); - return 0 == (stream->id & 1); -} - - -static int (*const filters[])(void *, struct lsquic_stream *) = { - filter_out_odd_stream_ids, -}; - -/* Just pick one (as long as it's not next_prio_stream) */ -#define next_field next_write_stream - - -static void -run_test (const struct test_spec *spec) -{ - struct lsquic_streams_tailq streams; - struct lsquic_stream *stream; - lsquic_stream_id_t stream_id; - long incr, priority, tmp; - const char *pc; - char cmd; - char name[20]; - struct my_filter_ctx filter_ctx = { MAGIC }; - int (*filter_cb)(void *, struct lsquic_stream *) = NULL; - int first_called = 0; - struct lsquic_mm mm; - - lsquic_mm_init(&mm); - conn_pub.mm = &mm; - TAILQ_INIT(&streams); - snprintf(name, sizeof(name), "line-%d", spec->lineno); - - for (pc = spec->prog; *pc; ++pc) - { - cmd = *pc++; - switch (cmd) - { - case 'S': - stream_id = strtol(pc, (char **) &pc, 10); - assert(':' == *pc); - priority = strtol(pc + 1, (char **) &pc, 10); - assert(':' == *pc); - incr = strtol(pc + 1, (char **) &pc, 10); - stream = new_stream(stream_id, priority, incr); - TAILQ_INSERT_TAIL(&streams, stream, next_field); - break; - case 'I': - lsquic_hpi_init(&hpi, TAILQ_FIRST(&streams), - TAILQ_LAST(&streams, lsquic_streams_tailq), - (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_field), - &conn_pub, name, filter_cb, &filter_ctx); - break; - case 'N': - stream_id = strtol(pc, (char **) &pc, 10); - if (first_called) - stream = lsquic_hpi_next(&hpi); - else - { - stream = lsquic_hpi_first(&hpi); - first_called = 1; - } - assert(stream); - assert(stream->id == stream_id); - break; - case 'F': - tmp = strtol(pc, (char **) &pc, 10); - assert(tmp >= 0 - && (size_t) tmp < sizeof(filters) / sizeof(filters[0])); - filter_cb = filters[tmp]; - break; - case 'D': - switch (*pc++) - { - case 'h': - lsquic_hpi_drop_high(&hpi); - break; - case 'H': - lsquic_hpi_drop_non_high(&hpi); - break; - default: - assert(0); - break; - } - break; - default: - assert(0); - } - assert(*pc == ';'); - } - lsquic_hpi_cleanup(&hpi); - - while (stream = TAILQ_FIRST(&streams), stream != NULL) - { - TAILQ_REMOVE(&streams, stream, next_field); - free(stream); - } - lsquic_mm_cleanup(&mm); -} - - -int -main (int argc, char **argv) -{ - unsigned n; - - lsquic_log_to_fstream(stderr, LLTS_NONE); - lsq_log_levels[LSQLM_HPI] = LSQ_LOG_DEBUG; - - for (n = 0; n < sizeof(test_specs) / sizeof(test_specs[0]); ++n) - run_test(&test_specs[n]); - -#ifndef NDEBUG - lsquic_hpi_set_heap_test(LSQUIC_HPI_HEAP_TEST_STACK_OK); - for (n = 0; n < sizeof(test_specs) / sizeof(test_specs[0]); ++n) - run_test(&test_specs[n]); - - lsquic_hpi_set_heap_test(LSQUIC_HPI_HEAP_TEST_4K_OK); - for (n = 0; n < sizeof(test_specs) / sizeof(test_specs[0]); ++n) - run_test(&test_specs[n]); - - lsquic_hpi_set_heap_test(0); - for (n = 0; n < sizeof(test_specs) / sizeof(test_specs[0]); ++n) - run_test(&test_specs[n]); -#endif - - return 0; -} diff --git a/external/lsquic/tests/test_lsquic_hash.c b/external/lsquic/tests/test_lsquic_hash.c deleted file mode 100644 index f563901..0000000 --- a/external/lsquic/tests/test_lsquic_hash.c +++ /dev/null @@ -1,79 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic_hash.h" - - -struct widget -{ - unsigned long key; - struct lsquic_hash_elem hash_el; - char data[30]; -}; - - -int -main (int argc, char **argv) -{ - struct lsquic_hash *hash; - struct lsquic_hash_elem *el; - unsigned n, nelems; - struct widget *widgets, *widget; - - hash = lsquic_hash_create(); - - if (argc > 1) - nelems = atoi(argv[1]); - else - nelems = 1000000; - - widgets = calloc(nelems, sizeof(widgets[0])); - - for (n = 0; n < nelems; ++n) - { - widget = &widgets[n]; - widget->key = n; /* This will be used for verification later the test */ - sprintf(widget->data, "%lu", widget->key); - el = lsquic_hash_find(hash, &widget->key, sizeof(widget->key)); - assert(!el); - el = lsquic_hash_insert(hash, &widget->key, sizeof(widget->key), widget, &widget->hash_el); - assert(el); - } - - assert(nelems == lsquic_hash_count(hash)); - - for (n = 0, el = lsquic_hash_first(hash); el; ++n, el = lsquic_hash_next(hash)) - { - widget = lsquic_hashelem_getdata(el); - assert(widget >= widgets); - assert(widget < widgets + nelems); - } - assert(n == nelems); - - for (n = 0; n < nelems; ++n) - { - unsigned long key = n; - el = lsquic_hash_find(hash, &key, sizeof(key)); - assert(el); - widget = lsquic_hashelem_getdata(el); - assert(widget->key == key); - lsquic_hash_erase(hash, el); - el = lsquic_hash_find(hash, &key, sizeof(key)); - assert(!el); - } - - assert(0 == lsquic_hash_count(hash)); - - lsquic_hash_destroy(hash); - free(widgets); - - exit(0); -} diff --git a/external/lsquic/tests/test_malo.c b/external/lsquic/tests/test_malo.c deleted file mode 100644 index 4f6615e..0000000 --- a/external/lsquic/tests/test_malo.c +++ /dev/null @@ -1,157 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#else -#include "getopt.h" -#endif - -#include "lsquic_malo.h" - -struct elem { - unsigned id; -}; - - -#define N_ELEMS 10000 /* More and it hits swap on smaller VMs */ - -static void -run_tests (size_t el_size) -{ - unsigned i; - struct malo *malo; - struct elem *el; - - malo = lsquic_malo_create(el_size); - assert(malo); - - for (i = 1; i <= N_ELEMS; ++i) - { - el = lsquic_malo_get(malo); - el->id = i; - } - - uint64_t sum = 0, deleted_sum = 0; - for (el = lsquic_malo_first(malo); el; el = lsquic_malo_next(malo)) - { - sum += el->id; - if (el->id % 3 == 0) /* Delete every third element */ - { - deleted_sum += el->id; - lsquic_malo_put(el); - } - } - - assert(sum == ((uint64_t) N_ELEMS + 1) * ((uint64_t) N_ELEMS / 2)); - - sum = 0; - for (el = lsquic_malo_first(malo); el; el = lsquic_malo_next(malo)) - { - sum += el->id; - lsquic_malo_put(el); - } - - assert(sum == ((uint64_t) N_ELEMS + 1) * ((uint64_t) N_ELEMS / 2) - - deleted_sum); - - el = lsquic_malo_first(malo); - assert(!el); - - lsquic_malo_destroy(malo); -} - - -static struct elem *elems[10000]; - -static void -alloc_using_malloc (int n) -{ - int i; - for (i = 0; i < n; ++i) - { - unsigned j; - for (j = 0; j < sizeof(elems) / sizeof(elems[0]); ++j) - { - elems[j] = malloc(sizeof(*elems[j])); - elems[j]->id = j; - } - for (j = 0; j < sizeof(elems) / sizeof(elems[0]); ++j) - { - free(elems[j]); - } - } -} - - -static void -alloc_using_malo (int n) -{ - struct malo *malo = lsquic_malo_create(sizeof(struct elem)); - int i; - for (i = 0; i < n; ++i) - { - unsigned j; - for (j = 0; j < sizeof(elems) / sizeof(elems[0]); ++j) - { - elems[j] = lsquic_malo_get(malo); - elems[j]->id = j; - } - for (j = 0; j < sizeof(elems) / sizeof(elems[0]); ++j) - { - lsquic_malo_put(elems[j]); - } - } - lsquic_malo_destroy(malo); -} - - -int -main (int argc, char **argv) -{ - int opt, mode = -1, n = 1; - while (-1 != (opt = getopt(argc, argv, "s:n:"))) - { - switch (opt) - { - case 's': - mode = atoi(optarg); - break; - case 'n': - n = atoi(optarg); - break; - default: - exit(1); - } - } - - switch (mode) - { - case -1: - { - size_t sz; - for (sz = sizeof(struct elem); sz < 0x800; sz <<= 1) - { - run_tests(sz - 3); - run_tests(sz - 1); - run_tests(sz); - run_tests(sz + 1); - run_tests(sz + 3); - } - break; - } - case 0: - alloc_using_malloc(n); - break; - case 1: - alloc_using_malo(n); - break; - default: - fprintf(stderr, "error: invalid mode %d\n", mode); - exit(2); - } - - return 0; -} diff --git a/external/lsquic/tests/test_min_heap.c b/external/lsquic/tests/test_min_heap.c deleted file mode 100644 index cdd56d2..0000000 --- a/external/lsquic/tests/test_min_heap.c +++ /dev/null @@ -1,165 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* Test min heap or benchmark heap creation */ - -/* Floyd mechanism has been removed. It's not faster. */ -#define FLOYD 0 - -#include -#include -#include -#include -#include - -#include "lsquic_min_heap.h" - -static void -verify_min_heap (const struct min_heap *heap) -{ - unsigned i; - - for (i = 0; i < heap->mh_nelem; ++i) - { - if (MHE_LCHILD(i) < heap->mh_nelem) - assert(heap->mh_elems[i].mhe_val <= - heap->mh_elems[MHE_LCHILD(i)].mhe_val); - if (MHE_RCHILD(i) < heap->mh_nelem) - assert(heap->mh_elems[i].mhe_val <= - heap->mh_elems[MHE_RCHILD(i)].mhe_val); - } -} - - -#define MAX_ELEMS 1000 - -static void -test_min_heap (void) -{ - struct min_heap heap; - uint64_t i, prev_val; - void *p; - struct min_heap_elem els[MAX_ELEMS]; - - heap.mh_elems = els; - heap.mh_nalloc = MAX_ELEMS; - - heap.mh_nelem = 0; - for (i = 0; i < MAX_ELEMS; ++i) - lsquic_mh_insert(&heap, (void *) i, i); - verify_min_heap(&heap); -#ifdef _MSC_VER - prev_val = 0; -#endif - for (i = 0; i < MAX_ELEMS; ++i) - { - p = lsquic_mh_pop(&heap); - if (i) - assert((uintptr_t) p >= prev_val); - prev_val = (uintptr_t) p; - } - - heap.mh_nelem = 0; - for (i = MAX_ELEMS; i > 0; --i) - lsquic_mh_insert(&heap, (void *) i, i); - verify_min_heap(&heap); - for (i = 0; i < MAX_ELEMS; ++i) - { - p = lsquic_mh_pop(&heap); - if (i) - assert((uintptr_t) p >= prev_val); - prev_val = (uintptr_t) p; - } - - heap.mh_nelem = 0; - -#if FLOYD - /* Now use Floyd method */ - heap.mh_nelem = 0; - for (i = 0; i < MAX_ELEMS; ++i) - lsquic_mh_push(&heap, NULL, i); - lsquic_mh_heapify(&heap); - verify_min_heap(&heap); - - heap.mh_nelem = 0; - for (i = MAX_ELEMS; i > 0; --i) - lsquic_mh_push(&heap, NULL, i); - lsquic_mh_heapify(&heap); - verify_min_heap(&heap); -#endif -} - - -int -main (int argc, char **argv) -{ - if (argc == 1) - { - test_min_heap(); - return 0; - } - - if (argc != 4) - { - fprintf(stderr, "usage: %s nelems iters method\n" - " method is 0: insert; 1: floyd\n", argv[0]); - return 1; - } - - unsigned i, j, n_iters, nelems; - struct min_heap_elem *els; - unsigned *vals; - struct min_heap heap; - - nelems = atoi(argv[1]); - n_iters = atoi(argv[2]); -#if FLOYD - const int floyd = atoi(argv[3]); -#endif - - vals = malloc(sizeof(vals[0]) * nelems); - assert(vals); - for (i = 0; i < nelems; ++i) - vals[i] = rand(); - els = malloc(sizeof(els[0]) * nelems); - assert(els); - heap.mh_elems = els; - heap.mh_nalloc = nelems; - heap.mh_nelem = 0; -#if FLOYD - if (floyd) - { - for (i = 0; i < nelems; ++i) - lsquic_mh_push(&heap, NULL, vals[i]); - lsquic_mh_heapify(&heap); - } - else -#endif - for (i = 0; i < nelems; ++i) - lsquic_mh_insert(&heap, NULL, vals[i]); - verify_min_heap(&heap); - -#if FLOYD - if (floyd) - { - for (j = 0; j < n_iters; ++j) - { - heap.mh_nelem = 0; - for (i = 0; i < nelems; ++i) - lsquic_mh_push(&heap, NULL, vals[i]); - lsquic_mh_heapify(&heap); - } - } - else -#endif - { - for (j = 0; j < n_iters; ++j) - { - heap.mh_nelem = 0; - for (i = 0; i < nelems; ++i) - lsquic_mh_insert(&heap, NULL, vals[i]); - } - } - - free(els); - free(vals); - return 0; -} diff --git a/external/lsquic/tests/test_minmax.c b/external/lsquic/tests/test_minmax.c deleted file mode 100644 index 60e071e..0000000 --- a/external/lsquic/tests/test_minmax.c +++ /dev/null @@ -1,457 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* Tests adopted from Chromium windowed_filter_test.cc */ -// Copyright (c) 2016 The Chromium Authors. All rights reserved. - -#include -#include -#include - -#include "lsquic_minmax.h" - -#ifdef _MSC_VER -#include "vc_compat.h" -#endif - -/* Convert milliseconds to lsquic_time_t, which is microseconds */ -#define ms(val) ((val) * 1000) - -static void -init_minmax (struct minmax *minmax) -{ - minmax_init(minmax, ms(99)); -} - - -// Sets up windowed_min_rtt_ to have the following values: -// Best = 20ms, recorded at 25ms -// Second best = 30ms, recorded at 50ms -// Third best = 50ms, recorded at 100ms -static void -init_min_filter (struct minmax *minmax) -{ - uint64_t now, rtt; - unsigned i; - - now = 0; - rtt = ms(10); - for (i = 0; i < 5; ++i) - { - minmax_upmin(minmax, now, rtt); - now += ms(25); - rtt += ms(10); - } - assert(ms(20) == minmax_get_idx(minmax, 0)); - assert(ms(30) == minmax_get_idx(minmax, 1)); - assert(ms(50) == minmax_get_idx(minmax, 2)); -} - - -// Sets up windowed_max_bw_ to have the following values: -// Best = 900 bps, recorded at 25ms -// Second best = 800 bps, recorded at 50ms -// Third best = 600 bps, recorded at 100ms -static void -init_max_filter (struct minmax *minmax) -{ - uint64_t now, bw; - unsigned i; - - now = 0; - bw = 1000; - for (i = 0; i < 5; ++i) - { - minmax_upmax(minmax, now, bw); - now += ms(25); - bw -= 100; - } - assert(900 == minmax_get_idx(minmax, 0)); - assert(800 == minmax_get_idx(minmax, 1)); - assert(600 == minmax_get_idx(minmax, 2)); -} - - -// Test helper function: updates the filter with a lot of small values in order -// to ensure that it is not susceptible to noise. -static void -update_with_irrelevant_samples (struct minmax *minmax, uint64_t max_value, - uint64_t time) -{ - uint64_t i; - - for (i = 0; i < 1000; ++i) - minmax_upmax(minmax, time, i % max_value); -} - - -static void -test_uninitialized_estimates (void) -{ - struct minmax minmax; - - init_minmax(&minmax); - assert(0 == minmax_get_idx(&minmax, 0)); - assert(0 == minmax_get_idx(&minmax, 1)); - assert(0 == minmax_get_idx(&minmax, 2)); -} - - -static void -test_monotonically_increasing_min (void) -{ - struct minmax minmax; - uint64_t rtt, now; - unsigned i; - - rtt = ms(10); - now = 0; - - init_minmax(&minmax); - minmax_upmin(&minmax, now, rtt); - - assert(ms(10) == minmax_get(&minmax)); - // Gradually increase the rtt samples and ensure the windowed min rtt starts - // rising. - for (i = 0; i < 6; ++i) - { - now += ms(25); - rtt += ms(10); - minmax_upmin(&minmax, now, rtt); - if (i < 3) - assert(minmax_get(&minmax) == ms(10)); - else if (i == 3) - assert(minmax_get(&minmax) == ms(20)); - else if (i == 4) - assert(minmax_get(&minmax) == ms(30)); - else - assert(minmax_get(&minmax) == ms(50)); - } -} - - -static void -test_monotonically_decreasing_max (void) -{ - struct minmax minmax; - uint64_t bw, now; - unsigned i; - - bw = 1000; - now = 0; - - init_minmax(&minmax); - minmax_upmax(&minmax, now, bw); - - assert(1000 == minmax_get(&minmax)); - // Gradually decrease the bw samples and ensure the windowed max bw starts - // decreasing. - for (i = 0; i < 6; ++i) - { - now += ms(25); - bw -= 100; - minmax_upmax(&minmax, now, bw); - if (i < 3) - assert(minmax_get(&minmax) == 1000); - else if (i == 3) - assert(minmax_get(&minmax) == 900); - else if (i == 4) - assert(minmax_get(&minmax) == 800); - else - assert(minmax_get(&minmax) == 600); - } -} - - -static void -sample_changes_third_best_min (void) -{ - struct minmax minmax; - uint64_t rtt, now; - - init_minmax(&minmax); - init_min_filter(&minmax); - rtt = minmax_get_idx(&minmax, 2); - rtt -= ms(5); - now = ms(101); - minmax_upmin(&minmax, now, rtt); - assert(rtt == minmax_get_idx(&minmax, 2)); - assert(ms(30) == minmax_get_idx(&minmax, 1)); - assert(ms(20) == minmax_get_idx(&minmax, 0)); -} - - -static void -sample_changes_third_best_max (void) -{ - struct minmax minmax; - uint64_t bw, now; - - init_minmax(&minmax); - init_max_filter(&minmax); - bw = minmax_get_idx(&minmax, 2); - bw += 50; - now = ms(101); - minmax_upmax(&minmax, now, bw); - assert(bw == minmax_get_idx(&minmax, 2)); - assert(800 == minmax_get_idx(&minmax, 1)); - assert(900 == minmax_get_idx(&minmax, 0)); -} - - -// RTT sample lower than the second-choice min sets that and also -// the third-choice min. -static void -sample_changes_second_best_min (void) -{ - struct minmax minmax; - uint64_t rtt, now; - - init_minmax(&minmax); - init_min_filter(&minmax); - rtt = minmax_get_idx(&minmax, 1); - rtt -= ms(5); - now = ms(101); - minmax_upmin(&minmax, now, rtt); - assert(rtt == minmax_get_idx(&minmax, 2)); - assert(rtt == minmax_get_idx(&minmax, 1)); - assert(ms(20) == minmax_get_idx(&minmax, 0)); -} - - -// BW sample higher than the second-choice max sets that and also -// the third-choice max. -static void -sample_changes_second_best_max (void) -{ - struct minmax minmax; - uint64_t bw, now; - - init_minmax(&minmax); - init_max_filter(&minmax); - bw = minmax_get_idx(&minmax, 1); - bw += 50; - now = ms(101); - minmax_upmax(&minmax, now, bw); - assert(bw == minmax_get_idx(&minmax, 2)); - assert(bw == minmax_get_idx(&minmax, 1)); - assert(900 == minmax_get_idx(&minmax, 0)); -} - - -// RTT sample lower than the first-choice min-rtt sets that and also -// the second and third-choice mins. -static void -sample_changes_all_mins (void) -{ - struct minmax minmax; - uint64_t rtt, now; - - init_minmax(&minmax); - init_min_filter(&minmax); - rtt = minmax_get(&minmax); - rtt -= ms(5); - now = ms(101); - minmax_upmin(&minmax, now, rtt); - assert(rtt == minmax_get_idx(&minmax, 2)); - assert(rtt == minmax_get_idx(&minmax, 1)); - assert(rtt == minmax_get_idx(&minmax, 0)); -} - - -// BW sample higher than the first-choice max sets that and also -// the second and third-choice maxs. -static void -sample_changes_all_maxs (void) -{ - struct minmax minmax; - uint64_t bw, now; - - init_minmax(&minmax); - init_max_filter(&minmax); - bw = minmax_get(&minmax); - bw += 50; - now = ms(101); - minmax_upmax(&minmax, now, bw); - assert(bw == minmax_get_idx(&minmax, 2)); - assert(bw == minmax_get_idx(&minmax, 1)); - assert(bw == minmax_get_idx(&minmax, 0)); -} - - -// Best min sample was recorded at 25ms, so expiry time is 124ms. -static void -expire_best_min (void) -{ - struct minmax minmax; - uint64_t rtt, now, old_2nd, old_3rd; - - init_minmax(&minmax); - init_min_filter(&minmax); - old_3rd = minmax_get_idx(&minmax, 2); - old_2nd = minmax_get_idx(&minmax, 1); - rtt = old_3rd + ms(5); - now = ms(125); - minmax_upmin(&minmax, now, rtt); - assert(rtt == minmax_get_idx(&minmax, 2)); - assert(old_3rd == minmax_get_idx(&minmax, 1)); - assert(old_2nd == minmax_get(&minmax)); -} - - -// Best max sample was recorded at 25ms, so expiry time is 124ms. -static void -expire_best_max (void) -{ - struct minmax minmax; - uint64_t bw, now, old_2nd, old_3rd; - - init_minmax(&minmax); - init_max_filter(&minmax); - old_3rd = minmax_get_idx(&minmax, 2); - old_2nd = minmax_get_idx(&minmax, 1); - bw = old_3rd - 50; - now = ms(125); - minmax_upmax(&minmax, now, bw); - assert(bw == minmax_get_idx(&minmax, 2)); - assert(old_3rd == minmax_get_idx(&minmax, 1)); - assert(old_2nd == minmax_get(&minmax)); -} - - -// Second best min sample was recorded at 75ms, so expiry time is 174ms. -static void -expire_second_best_min (void) -{ - struct minmax minmax; - uint64_t rtt, now, old_3rd; - - init_minmax(&minmax); - init_min_filter(&minmax); - old_3rd = minmax_get_idx(&minmax, 2); - rtt = old_3rd + ms(5); - now = ms(175); - minmax_upmin(&minmax, now, rtt); - assert(rtt == minmax_get_idx(&minmax, 2)); - assert(rtt == minmax_get_idx(&minmax, 1)); - assert(old_3rd == minmax_get(&minmax)); -} - - -// Second best max sample was recorded at 75ms, so expiry time is 174ms. -static void -expire_second_best_max (void) -{ - struct minmax minmax; - uint64_t bw, now, old_3rd; - - init_minmax(&minmax); - init_max_filter(&minmax); - old_3rd = minmax_get_idx(&minmax, 2); - bw = old_3rd - 50; - now = ms(175); - minmax_upmax(&minmax, now, bw); - assert(bw == minmax_get_idx(&minmax, 2)); - assert(bw == minmax_get_idx(&minmax, 1)); - assert(old_3rd == minmax_get(&minmax)); -} - - -// Third best min sample was recorded at 100ms, so expiry time is 199ms. -static void -expire_all_mins (void) -{ - struct minmax minmax; - uint64_t rtt, now, old_3rd; - - init_minmax(&minmax); - init_min_filter(&minmax); - old_3rd = minmax_get_idx(&minmax, 2); - rtt = old_3rd + ms(5); - now = ms(200); - minmax_upmin(&minmax, now, rtt); - assert(rtt == minmax_get_idx(&minmax, 2)); - assert(rtt == minmax_get_idx(&minmax, 1)); - assert(rtt == minmax_get(&minmax)); -} - - -// Third best max sample was recorded at 100ms, so expiry time is 199ms. -static void -expire_all_maxs (void) -{ - struct minmax minmax; - uint64_t bw, now, old_3rd; - - init_minmax(&minmax); - init_max_filter(&minmax); - old_3rd = minmax_get_idx(&minmax, 2); - bw = old_3rd - 50; - now = ms(200); - minmax_upmax(&minmax, now, bw); - assert(bw == minmax_get_idx(&minmax, 2)); - assert(bw == minmax_get_idx(&minmax, 1)); - assert(bw == minmax_get(&minmax)); -} - - -// Test the windowed filter where the time used is an exact counter instead of a -// timestamp. This is useful if, for example, the time is measured in round -// trips. -static void -expire_counter_based_max (void) -{ - struct minmax minmax; - - // Create a window which starts at t = 0 and expires after two cycles. - minmax_init(&minmax, 2); - - const uint64_t kBest = 50000; - // Insert 50000 at t = 1. - minmax_upmax(&minmax, 1, 50000); - assert(kBest == minmax_get(&minmax)); - update_with_irrelevant_samples(&minmax, 20, 1); - assert(kBest == minmax_get(&minmax)); - - // Insert 40000 at t = 2. Nothing is expected to expire. - minmax_upmax(&minmax, 2, 40000); - assert(kBest == minmax_get(&minmax)); - update_with_irrelevant_samples(&minmax, 20, 2); - assert(kBest == minmax_get(&minmax)); - - // Insert 30000 at t = 3. Nothing is expected to expire yet. - minmax_upmax(&minmax, 3, 30000); - assert(kBest == minmax_get(&minmax)); - update_with_irrelevant_samples(&minmax, 20, 3); - assert(kBest == minmax_get(&minmax)); - - // Insert 20000 at t = 4. 50000 at t = 1 expires, so 40000 becomes the new - // maximum. - const uint64_t kNewBest = 40000; - minmax_upmax(&minmax, 4, 20000); - assert(kNewBest == minmax_get(&minmax)); - update_with_irrelevant_samples(&minmax, 20, 4); - assert(kNewBest == minmax_get(&minmax)); -} - - -int -main (void) -{ - test_uninitialized_estimates(); - test_monotonically_increasing_min(); - test_monotonically_decreasing_max(); - sample_changes_third_best_min(); - sample_changes_third_best_max(); - sample_changes_second_best_min(); - sample_changes_second_best_max(); - sample_changes_all_mins(); - sample_changes_all_maxs(); - expire_best_min(); - expire_best_max(); - expire_second_best_min(); - expire_second_best_max(); - expire_all_mins(); - expire_all_maxs(); - expire_counter_based_max(); - - return 0; -} diff --git a/external/lsquic/tests/test_packet_out.c b/external/lsquic/tests/test_packet_out.c deleted file mode 100644 index 35478ed..0000000 --- a/external/lsquic/tests/test_packet_out.c +++ /dev/null @@ -1,100 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif -#include - -#include - -#include "lsquic.h" - -#include "lsquic_int_types.h" -#include "lsquic_packet_common.h" -#include "lsquic_packet_gquic.h" -#include "lsquic_packet_out.h" -#include "lsquic_conn_flow.h" -#include "lsquic_sfcw.h" -#include "lsquic_varint.h" -#include "lsquic_hq.h" -#include "lsquic_hash.h" -#include "lsquic_stream.h" -#include "lsquic_types.h" -#include "lsquic_malo.h" -#include "lsquic_mm.h" -#include "lsquic_engine_public.h" -#include "lsquic_logger.h" - - -int -main (void) -{ - struct lsquic_engine_public enpub; - struct packet_out_frec_iter pofi; - lsquic_packet_out_t *packet_out; - struct lsquic_stream streams[6]; - struct frame_rec *frec; - - memset(&enpub, 0, sizeof(enpub)); - memset(&streams, 0, sizeof(streams)); - lsquic_mm_init(&enpub.enp_mm); - packet_out = lsquic_mm_get_packet_out(&enpub.enp_mm, NULL, GQUIC_MAX_PAYLOAD_SZ); - - lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[0], QUIC_FRAME_STREAM, 7, 1); - lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[1], QUIC_FRAME_STREAM, 8, 1); - lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[2], QUIC_FRAME_STREAM, 9, 1); - lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[1], QUIC_FRAME_RST_STREAM, 10, 0); - lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[3], QUIC_FRAME_STREAM, 11, 1); - lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[4], QUIC_FRAME_STREAM, 12, 1); - lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[5], QUIC_FRAME_STREAM, 13, 1); - - frec = lsquic_pofi_first(&pofi, packet_out); - assert(frec->fe_stream == &streams[0]); - assert(frec->fe_off == 7); - assert(frec->fe_frame_type == QUIC_FRAME_STREAM); - - frec = lsquic_pofi_next(&pofi); - assert(frec->fe_stream == &streams[1]); - assert(frec->fe_off == 8); - assert(frec->fe_frame_type == QUIC_FRAME_STREAM); - - frec = lsquic_pofi_next(&pofi); - assert(frec->fe_stream == &streams[2]); - assert(frec->fe_off == 9); - assert(frec->fe_frame_type == QUIC_FRAME_STREAM); - - frec = lsquic_pofi_next(&pofi); - assert(frec->fe_stream == &streams[1]); - assert(frec->fe_off == 10); - assert(frec->fe_frame_type == QUIC_FRAME_RST_STREAM); - - frec = lsquic_pofi_next(&pofi); - assert(frec->fe_stream == &streams[3]); - assert(frec->fe_off == 11); - assert(frec->fe_frame_type == QUIC_FRAME_STREAM); - - frec = lsquic_pofi_next(&pofi); - assert(frec->fe_stream == &streams[4]); - assert(frec->fe_off == 12); - assert(frec->fe_frame_type == QUIC_FRAME_STREAM); - - frec = lsquic_pofi_next(&pofi); - assert(frec->fe_stream == &streams[5]); - assert(frec->fe_off == 13); - assert(frec->fe_frame_type == QUIC_FRAME_STREAM); - - assert((void *) 0 == lsquic_pofi_next(&pofi)); - - lsquic_packet_out_destroy(packet_out, &enpub, NULL); - assert(!lsquic_malo_first(enpub.enp_mm.malo.frame_rec_arr)); - - lsquic_mm_cleanup(&enpub.enp_mm); - return 0; -} diff --git a/external/lsquic/tests/test_packet_resize.c b/external/lsquic/tests/test_packet_resize.c deleted file mode 100644 index aea8f8e..0000000 --- a/external/lsquic/tests/test_packet_resize.c +++ /dev/null @@ -1,1651 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* Test packet resizing */ - -#include -#include -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#else -#include "getopt.h" -#endif - -#define LSQUIC_TEST 1 -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_int_types.h" -#include "lsquic_packet_common.h" -#include "lsquic_packet_in.h" -#include "lsquic_packet_out.h" -#include "lsquic_packet_resize.h" -#include "lsquic_parse.h" -#include "lsquic_hash.h" -#include "lsquic_conn.h" -#include "lsquic_mm.h" -#include "lsquic_enc_sess.h" -#include "lsquic_sfcw.h" -#include "lsquic_varint.h" -#include "lsquic_hq.h" -#include "lsquic_stream.h" -#include "lsquic_engine_public.h" - -#include "lsquic_logger.h" - -#define N_STREAMS 4 - -#define MIN(a, b) ((a) < (b) ? (a) : (b)) - -static const char *s_data[N_STREAMS]; -static size_t s_data_sz[N_STREAMS]; - - -struct test_spec -{ - int lineno; - int expect_error; - unsigned versions; - const char *desc; - const char *prog; -}; - -/* Here we rely on the fact that QUIC_FRAME_STREAM is 1 and other valid frames - * are in a contiguous range. - */ -#define letter_2_frame_type(letter_) ((int) ((letter_) - 'a') + QUIC_FRAME_ACK) -#define frame_type_2_letter(frame_type_) ('a' + ((frame_type_) - QUIC_FRAME_ACK)) - - -/* DSL specification: - * - * P\d+ Set maximum packet size - * N Create new packet, append to input queue, and set as current - * S\d+-\d+f? The first number is stream ID; these values must be in - * range [0, 3]. The second number is the maximum number of - * bytes to read from stream, potentially filling the current - * packet. If `f' is set, set FIN flag. - * C\d+-\d+ Like 'S' above, but CRYPTO frame. Note that there is no 'f' - * flag as CRYPTO frames have no FINs. - * c\d+-\d+ RST_STREAM frame. It's different from frames [abd-z] in that - * n_unacked is changed. - * V Verify contents of packets, both STREAM and non-STREAM frames. - * R Resize packets - * L\d Label, valid values in range [0, 9] - * J\d[=<>]\d+ Jump to label if packet size is valid [1200, 65527] - * I\d+ Increase packet size - * D\d+ Decrease packet size - * [abd-z]\d+ Frame of type [a-z] of some bytes. See letter_2_frame_type() - * to see how the mapping works. - * F\d+ Standalone FIN frame. - */ - - -static struct test_spec test_specs[] = -{ - { - .lineno = __LINE__, - .desc = "split one packet with single STREAM frame into two", - .prog = "P2000;N;a7;S0-2000;V;P1500;R;V;", - }, - { - .lineno = __LINE__, - .desc = "split one 6000-byte packet with single STREAM frame into many, looping", - .prog = "P6000;N;S0-6000;V;L0;D100;R;V;J0>1200;L1;I29;R;V;J1<7000;", - }, - { - .lineno = __LINE__, - .desc = "split three 1500-byte packets with several STREAM frames from different streams", - .prog = "P1500;" - "N;p20;S0-200;S1-300;S2-200;h18;S3-20f;t2;S2-2000;" - "N;c0-30;j11;S2-2000;" - "N;S2-2000;" - "V;" - "L0;D1;R;V;J0>1200;" - , - }, - { - .lineno = __LINE__, - .desc = "one packet, STREAM frame and and empty STREAM FIN frame, split down by 1", - .prog = "P2000;N;S0-1900;F0;V;L0;D1;R;V;J0>1200;", - }, - { - .lineno = __LINE__, - .desc = "one packet, STREAM frame and and empty STREAM FIN frame, split down by 31", - .prog = "P2000;N;S0-1900;F0;V;L0;D31;R;V;J0>1200;", - }, - { - .lineno = __LINE__, - .desc = "one packet, STREAM frame with a FIN, split down by 1", - .prog = "P2000;N;S0-1900f;V;L0;D1;R;V;J0>1200;", - }, - { - .lineno = __LINE__, - .desc = "one packet, STREAM frame with a FIN, split down by 31", - .prog = "P2000;N;S0-1900f;V;L0;D31;R;V;J0>1200;", - }, - { - .lineno = __LINE__, - .desc = "one packet, frame too large", - .prog = "P2000;N;m1500;V;P1000;R;", - .expect_error = 1, - }, - { - .lineno = __LINE__, - .desc = "split one packet with single CRYPTO frame into two", - .prog = "P1252;N;C0-2000;V;P1200;R;V;", - .versions = LSQUIC_IETF_VERSIONS, - }, -}; - - -struct stream_read_cursor -{ - const char *data; /* Points to data that is used as circular buffer */ - unsigned data_sz; /* Size of data pointed to by data */ - unsigned off; /* Current offset */ - unsigned nread; /* Total number of bytes consumed from stream (packetized) */ - int fin; /* FIN is set, see fin_off */ - unsigned fin_off; /* Value of final offset */ -}; - - -struct test_ctx -{ - TAILQ_HEAD(, lsquic_packet_out) packets[2]; /* We move them from one queue to the other */ - int cur_input; /* 0 or 1, indexes packets */ - unsigned n_non_stream_frames; - struct stream_read_cursor stream_cursors[N_STREAMS]; - struct lsquic_stream streams[N_STREAMS]; - struct lsquic_engine_public enpub; - struct lsquic_conn lconn; - struct network_path path; -}; - - -static void -init_test_ctx (struct test_ctx *ctx, const struct test_spec *spec, - enum lsquic_version version) -{ - unsigned i; - - memset(ctx, 0, sizeof(*ctx)); - TAILQ_INIT(&ctx->packets[0]); - TAILQ_INIT(&ctx->packets[1]); - for (i = 0; i < N_STREAMS; ++i) - { - ctx->stream_cursors[i].data = s_data[i]; - ctx->stream_cursors[i].data_sz = s_data_sz[i]; - } - lsquic_mm_init(&ctx->enpub.enp_mm); - ctx->lconn.cn_flags |= LSCONN_HANDSHAKE_DONE; /* For short packet headers */ - ctx->lconn.cn_pf = select_pf_by_ver(version); - ctx->lconn.cn_esf_c = select_esf_common_by_ver(version); - LSCONN_INITIALIZE(&ctx->lconn); - ctx->lconn.cn_cces_buf[0].cce_cid.len = sizeof(spec->lineno); - memcpy(ctx->lconn.cn_cces_buf[0].cce_cid.idbuf, &spec->lineno, sizeof(spec->lineno)); -} - - -static void -cleanup_test_ctx (struct test_ctx *ctx) -{ - struct lsquic_packet_out *packet_out; - unsigned i; - - for (i = 0; i < 2; ++i) - while (packet_out = TAILQ_FIRST(&ctx->packets[i]), packet_out != NULL) - { - TAILQ_REMOVE(&ctx->packets[i], packet_out, po_next); - lsquic_packet_out_destroy(packet_out, &ctx->enpub, NULL); - } - lsquic_mm_cleanup(&ctx->enpub.enp_mm); -} - - -static struct lsquic_packet_out * -new_packet (struct test_ctx *ctx) -{ - struct lsquic_packet_out *packet_out; - static lsquic_packno_t packno; /* Each packet gets unique packet number - * to make them easier to track. - */ - - packet_out = lsquic_packet_out_new(&ctx->enpub.enp_mm, ctx->enpub.enp_mm.malo.packet_out, 1, - &ctx->lconn, PACKNO_BITS_0, 0, NULL, &ctx->path, HETY_SHORT); - if (packet_out) - packet_out->po_packno = packno++; - - return packet_out; -} - - -static struct lsquic_packet_out * -new_input_packet (struct test_ctx *ctx) -{ - struct lsquic_packet_out *packet_out; - - packet_out = new_packet(ctx); - if (packet_out) - TAILQ_INSERT_TAIL(&ctx->packets[ctx->cur_input], packet_out, po_next); - - return packet_out; -} - - -struct my_read_ctx { - struct stream_read_cursor *cursor; - /* XXX Turns out, gQUIC and IETF QUIC STREAM frame generators differ in - * what they pass to the read() function. The former does not limit - * itself to pf_gen_stream_frame()'s `size'. Rather than change and - * retest gQUIC code, put a limiter in this unit test file instead. - */ - size_t max; - int fin; -}; - - -static size_t -my_gsf_read (void *stream, void *buf, size_t len, int *fin) -{ - struct my_read_ctx *const mctx = stream; - struct stream_read_cursor *const cursor = mctx->cursor; - unsigned char *p = buf, *end; - size_t n; - - if (len > mctx->max) - len = mctx->max; - - end = p + len; - - while (p < end) - { - n = MIN(end - p, cursor->data_sz - cursor->off); - memcpy(p, cursor->data + cursor->off, n); - cursor->off += n; - if (cursor->off == cursor->data_sz) - cursor->off = 0; - cursor->nread += n; - p += n; - } - - if (mctx->fin) - { - cursor->fin = 1; - cursor->fin_off = cursor->nread; - LSQ_DEBUG("set FIN at offset %u", cursor->fin_off); - } - - *fin = mctx->fin; - return len; -} - - -static void -make_stream_frame (struct test_ctx *ctx, struct lsquic_packet_out *packet_out, - enum quic_frame_type frame_type, lsquic_stream_id_t stream_id, - size_t nbytes, int fin) -{ - struct my_read_ctx mctx = { &ctx->stream_cursors[stream_id], nbytes, fin, }; - int w; - - assert(!ctx->stream_cursors[stream_id].fin); - - if (nbytes == 0 && fin) - { - ctx->stream_cursors[stream_id].fin = 1; - ctx->stream_cursors[stream_id].fin_off - = ctx->stream_cursors[stream_id].nread; - LSQ_DEBUG("set FIN at offset %u", ctx->stream_cursors[stream_id].fin_off); - } - - w = (&ctx->lconn.cn_pf->pf_gen_stream_frame) - [frame_type == QUIC_FRAME_CRYPTO]( - packet_out->po_data + packet_out->po_data_sz, - lsquic_packet_out_avail(packet_out), - stream_id, ctx->stream_cursors[stream_id].nread, - nbytes == 0 && fin, nbytes, my_gsf_read, &mctx); - assert(w > 0); - LSQ_DEBUG("wrote %s frame of %d bytes", frame_type_2_str[frame_type], w); - lsquic_packet_out_add_stream(packet_out, &ctx->enpub.enp_mm, - &ctx->streams[stream_id], frame_type, - packet_out->po_data_sz, w); - packet_out->po_data_sz += w; - packet_out->po_frame_types |= 1 << frame_type; - if (0 == lsquic_packet_out_avail(packet_out)) - packet_out->po_flags |= PO_STREAM_END; -} - - -static void -make_non_stream_frame (struct test_ctx *ctx, - struct lsquic_packet_out *packet_out, enum quic_frame_type frame_type, - size_t nbytes) -{ - static unsigned char fill_byte; - - /* We don't truncate non-STREAM frames because we don't chop them up */ - assert(nbytes <= lsquic_packet_out_avail(packet_out)); - - memset(packet_out->po_data + packet_out->po_data_sz, fill_byte, nbytes); - lsquic_packet_out_add_frame(packet_out, &ctx->enpub.enp_mm, - fill_byte, frame_type, packet_out->po_data_sz, nbytes); - packet_out->po_data_sz += nbytes; - packet_out->po_frame_types |= 1 << frame_type; - if ((1 << frame_type) & BQUIC_FRAME_REGEN_MASK) - packet_out->po_regen_sz += nbytes; - LSQ_DEBUG("wrote %s frame of %zd bytes", frame_type_2_str[frame_type], - nbytes); - ++fill_byte; - ++ctx->n_non_stream_frames; -} - - -static void -make_rst_stream_frame (struct test_ctx *ctx, - struct lsquic_packet_out *packet_out, lsquic_stream_id_t stream_id, - size_t nbytes) -{ - int s; - - /* We don't truncate non-STREAM frames because we don't chop them up */ - assert(nbytes <= lsquic_packet_out_avail(packet_out)); - - memset(packet_out->po_data + packet_out->po_data_sz, 'R', nbytes); - s = lsquic_packet_out_add_stream(packet_out, &ctx->enpub.enp_mm, - &ctx->streams[stream_id], QUIC_FRAME_RST_STREAM, - packet_out->po_data_sz, nbytes); - assert(s == 0); - packet_out->po_data_sz += nbytes; - packet_out->po_frame_types |= 1 << QUIC_FRAME_RST_STREAM; - LSQ_DEBUG("wrote %s frame of %zd bytes", - frame_type_2_str[QUIC_FRAME_RST_STREAM], nbytes); - ++ctx->n_non_stream_frames; -} - - -/* STREAM frame ordering assumptions, with or without FINs, are specific to - * this unit test. These assumptions do not have to hold in real code. - * The assumptions are made in order to verify the operation of the "packet - * resize" module. - */ -static void -verify_stream_contents (struct test_ctx *ctx, lsquic_stream_id_t stream_id) -{ - char *data; - size_t len; - int dummy_fin = -1, parsed_len, seen_fin; - struct lsquic_packet_out *packet_out; - struct stream_read_cursor cursor; - struct my_read_ctx mctx; - struct stream_frame stream_frame; - struct packet_out_frec_iter pofi; - struct frame_rec *frec; - unsigned off, frec_count; - - LSQ_DEBUG("verifying stream #%"PRIu64, stream_id); - data = malloc(ctx->stream_cursors[stream_id].nread); - assert(data); - /* Copy cursor to re-read from the beginning and not affect real cursor */ - cursor = ctx->stream_cursors[stream_id]; - cursor.off = 0; - mctx = (struct my_read_ctx) { &cursor, ctx->stream_cursors[stream_id].nread, 0, }; - len = my_gsf_read(&mctx, data, ctx->stream_cursors[stream_id].nread, &dummy_fin); - assert(len == ctx->stream_cursors[stream_id].nread); - assert(dummy_fin == 0); /* Self-check */ - - /* Go packet by packet, and within each packet, frame by frame, and - * compare STREAM frame contents. - */ - off = 0; - seen_fin = 0; - frec_count = 0; - TAILQ_FOREACH(packet_out, &ctx->packets[ctx->cur_input], po_next) - { - LSQ_DEBUG("examining packet #%"PRIu64, packet_out->po_packno); - assert(packet_out->po_data_sz <= packet_out->po_n_alloc); - assert(packet_out->po_data_sz <= ctx->path.np_pack_size); - for (frec = lsquic_pofi_first(&pofi, packet_out); frec; - frec = lsquic_pofi_next(&pofi)) - { - if (!(((1 << frec->fe_frame_type) & (QUIC_FTBIT_STREAM|QUIC_FTBIT_CRYPTO|QUIC_FTBIT_RST_STREAM)) - && frec->fe_stream == &ctx->streams[stream_id])) - continue; - assert(!seen_fin); - ++frec_count; - if (frec->fe_frame_type == QUIC_FRAME_RST_STREAM) - continue; - parsed_len = (&ctx->lconn.cn_pf->pf_parse_stream_frame) - [frec->fe_frame_type == QUIC_FRAME_CRYPTO] - (packet_out->po_data + frec->fe_off, frec->fe_len, &stream_frame); - assert(parsed_len > 0); - assert(parsed_len == frec->fe_len); - LSQ_DEBUG("verify stream %"PRIu64", contents %hu bytes", - stream_id, stream_frame.data_frame.df_size); - assert(stream_frame.data_frame.df_offset == off); - assert(stream_frame.data_frame.df_size <= len - off); - assert(0 == memcmp(stream_frame.data_frame.df_data, data + off, - stream_frame.data_frame.df_size)); - off += stream_frame.data_frame.df_size; - if (stream_frame.data_frame.df_fin) - { - assert(ctx->stream_cursors[stream_id].fin); - assert(ctx->stream_cursors[stream_id].fin_off == off); - seen_fin = 1; - } - if (frec->fe_off + frec->fe_len == packet_out->po_n_alloc) - assert(packet_out->po_flags & PO_STREAM_END); - if (!(packet_out->po_flags & PO_STREAM_END)) - assert(frec->fe_off + frec->fe_len < packet_out->po_n_alloc); - } - } - - if (ctx->stream_cursors[stream_id].fin) - assert(seen_fin); - assert(frec_count == ctx->streams[stream_id].n_unacked); - free(data); -} - - -/* Verify that non-STREAM frames are in the same order, of the same size, and - * same contents. - */ -static void -verify_non_stream_frames (struct test_ctx *ctx, const struct test_spec *spec) -{ - const char *pos; - int w; - unsigned count, regen_sz, off; - struct lsquic_packet_out *packet_out; - struct packet_out_frec_iter pofi; - struct frame_rec *frec; - unsigned char fill; - char frame_str[30]; - - LSQ_DEBUG("verifying non-STREAM frames"); - - /* Go packet by packet, and within each packet, frame by frame, and - * verify relative position of non-STREAM frames (must be in the same - * order as in the order they were inserted) and their contents. - */ - count = 0; - pos = spec->prog; - TAILQ_FOREACH(packet_out, &ctx->packets[ctx->cur_input], po_next) - { - regen_sz = 0; - off = 0; - LSQ_DEBUG("examining packet #%"PRIu64, packet_out->po_packno); - assert(packet_out->po_data_sz <= packet_out->po_n_alloc); - assert(packet_out->po_data_sz <= ctx->path.np_pack_size); - for (frec = lsquic_pofi_first(&pofi, packet_out); frec; - frec = lsquic_pofi_next(&pofi)) - { - if ((1 << frec->fe_frame_type) & BQUIC_FRAME_REGEN_MASK) - { - assert(regen_sz == 0 || regen_sz == off); - regen_sz += frec->fe_len; - } - off += frec->fe_len; - if ((1 << frec->fe_frame_type) - & (QUIC_FTBIT_STREAM|QUIC_FTBIT_CRYPTO)) - continue; - ++count; - LSQ_DEBUG("checking %hu-byte %s", frec->fe_len, - frame_type_2_str[frec->fe_frame_type]); - if (frec->fe_frame_type == QUIC_FRAME_RST_STREAM) - w = snprintf(frame_str, sizeof(frame_str), "%c%u-%hu;", - frame_type_2_letter(frec->fe_frame_type), - (unsigned) (frec->fe_stream - ctx->streams), frec->fe_len); - else - w = snprintf(frame_str, sizeof(frame_str), "%c%hu;", - frame_type_2_letter(frec->fe_frame_type), frec->fe_len); - pos = strstr(pos, frame_str); - assert(pos); - pos += w; - /* Now check contents */ - fill = frec->fe_frame_type == QUIC_FRAME_RST_STREAM - ? 'R' : (unsigned char) frec->fe_u.data; - for (w = 0; w < (int) frec->fe_len; ++w) - assert(packet_out->po_data[frec->fe_off + w] == fill); - } - assert(packet_out->po_regen_sz == regen_sz); - assert(packet_out->po_data_sz == off); - } - - assert(count == ctx->n_non_stream_frames); -} - - -static void -verify_packet_contents (struct test_ctx *ctx, const struct test_spec *spec) -{ - lsquic_stream_id_t stream_id; - - for (stream_id = 0; stream_id < N_STREAMS; ++stream_id) - verify_stream_contents(ctx, stream_id); - verify_non_stream_frames(ctx, spec); -} - - -static struct lsquic_packet_out * -my_pri_next_packet (void *ctxp) -{ - struct test_ctx *ctx = ctxp; - struct lsquic_packet_out *packet_out; - - packet_out = TAILQ_FIRST(&ctx->packets[ctx->cur_input]); - if (packet_out) - LSQ_DEBUG("%s: return packet #%"PRIu64, __func__, - packet_out->po_packno); - else - LSQ_DEBUG("%s: out of packets", __func__); - - return packet_out; -} - - -static void -my_pri_discard_packet (void *ctxp, struct lsquic_packet_out *packet_out) -{ - struct test_ctx *ctx = ctxp; - - LSQ_DEBUG("%s: discard packet #%"PRIu64, __func__, packet_out->po_packno); - TAILQ_REMOVE(&ctx->packets[ctx->cur_input], packet_out, po_next); - lsquic_packet_out_destroy(packet_out, &ctx->enpub, NULL); -} - - -static struct lsquic_packet_out * -my_pri_new_packet (void *ctx) -{ - LSQ_DEBUG("%s: grab a new packet", __func__); - return new_packet(ctx); -} - - -static const struct packet_resize_if my_pr_if = -{ - .pri_next_packet = my_pri_next_packet, - .pri_new_packet = my_pri_new_packet, - .pri_discard_packet = my_pri_discard_packet, -}; - - -static int -resize_packets (struct test_ctx *ctx) -{ - struct packet_resize_ctx prctx; - struct lsquic_packet_out *new; - - lsquic_packet_resize_init(&prctx, &ctx->enpub, &ctx->lconn, ctx, &my_pr_if); - - while (new = lsquic_packet_resize_next(&prctx), new != NULL) - { - TAILQ_INSERT_TAIL(&ctx->packets[!ctx->cur_input], new, po_next); - LSQ_DEBUG("append new packet #%"PRIu64, new->po_packno); - } - ctx->cur_input = !ctx->cur_input; - LSQ_DEBUG("switch cur_input to %d", ctx->cur_input); - return lsquic_packet_resize_is_error(&prctx) ? -1 : 0; -} - - -static void -run_test (const struct test_spec *spec, enum lsquic_version version) -{ - struct lsquic_packet_out *packet_out; - struct test_ctx ctx; - long stream_id, nbytes; - char L[4] = "L?;", op, cmd; - const char *pc, *addr; - int jump, s; - enum quic_frame_type frame_type; - - LSQ_INFO("Running test on line %d: %s", spec->lineno, spec->desc); - if (spec->versions && !(spec->versions & (1 << version))) - { -#ifndef _MSC_VER - LSQ_INFO("Not applicable to version %s, skip", lsquic_ver2str[version]); -#else - LSQ_INFO("Not applicable to version %d, skip", version); -#endif - return; - } - - init_test_ctx(&ctx, spec, version); - - packet_out = NULL; - for (pc = spec->prog; *pc; ++pc) - { - cmd = *pc++; - switch (cmd) - { - case 'P': - ctx.path.np_pack_size = strtol(pc, (char **) &pc, 10); - LSQ_DEBUG("P: set packet size to %hu bytes", ctx.path.np_pack_size); - break; - case 'N': - packet_out = new_input_packet(&ctx); - LSQ_DEBUG("N: create new input packet"); - break; - case 'S': - case 'C': - stream_id = strtol(pc, (char **) &pc, 10); - assert('-' == *pc); - assert(stream_id >= 0 && stream_id < N_STREAMS); - nbytes = strtol(pc + 1, (char **) &pc, 10); - assert(nbytes > 0); - LSQ_DEBUG("%c: create frame for stream %ld of at most %ld bytes", - cmd, stream_id, nbytes); - if (cmd == 'S' && *pc == 'f') - ++pc; - make_stream_frame(&ctx, packet_out, - cmd == 'S' ? QUIC_FRAME_STREAM : QUIC_FRAME_CRYPTO, - stream_id, nbytes, pc[-1] == 'f'); - break; - case 'F': - stream_id = strtol(pc, (char **) &pc, 10); - make_stream_frame(&ctx, packet_out, QUIC_FRAME_STREAM, stream_id, - 0, 1); - break; - case 'V': - LSQ_DEBUG("V: verify packet contents"); - verify_packet_contents(&ctx, spec); - break; - case 'R': - LSQ_DEBUG("R: resize packets"); - s = resize_packets(&ctx); - if (0 != s) - { - LSQ_DEBUG("got error, expected: %d", spec->expect_error); - assert(spec->expect_error); - assert(pc[0] == ';'); - assert(pc[1] == '\0'); - goto end; - } - break; - case 'D': - nbytes = strtol(pc, (char **) &pc, 10); - ctx.path.np_pack_size -= nbytes; - LSQ_DEBUG("D: decrease packet size by %ld to %hu bytes", - nbytes, ctx.path.np_pack_size); - break; - case 'I': - nbytes = strtol(pc, (char **) &pc, 10); - ctx.path.np_pack_size += nbytes; - LSQ_DEBUG("I: increase packet size by %ld to %hu bytes", - nbytes, ctx.path.np_pack_size); - break; - case 'L': - assert(*pc >= '0' && *pc <= '9'); - ++pc; - break; - case 'J': - assert(*pc >= '0' && *pc <= '9'); - L[1] = *pc++; - addr = strstr(spec->prog, L); - assert(addr); - op = *pc++; - nbytes = strtol(pc, (char **) &pc, 10); - switch (op) - { - case '=': jump = ctx.path.np_pack_size == nbytes; break; - case '<': jump = ctx.path.np_pack_size < nbytes; break; - case '>': jump = ctx.path.np_pack_size > nbytes; break; - default: jump = 0; assert(0); break; - } - LSQ_DEBUG("J: jump if (%hu %c %ld) -> %sjumping", - ctx.path.np_pack_size, op, nbytes, jump ? "" : "not "); - if (jump) - pc = addr + 2; - break; - case 'c': - stream_id = strtol(pc, (char **) &pc, 10); - assert('-' == *pc); - assert(stream_id >= 0 && stream_id < N_STREAMS); - nbytes = strtol(pc + 1, (char **) &pc, 10); - assert(nbytes > 0); - make_rst_stream_frame(&ctx, packet_out, stream_id, nbytes); - break; - case 'a': case 'b': case 'd': case 'e': case 'f': case 'g': - case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': - case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': - case 'v': case 'w': case 'x': case 'y': case 'z': - frame_type = letter_2_frame_type(cmd); - nbytes = strtol(pc, (char **) &pc, 10); - make_non_stream_frame(&ctx, packet_out, frame_type, nbytes); - break; - default: - assert(0); - goto end; - } - assert(*pc == ';'); - } - - end: - cleanup_test_ctx(&ctx); -} - - -int -main (int argc, char **argv) -{ - const struct test_spec *spec; - enum lsquic_version version; - int opt; - - lsquic_log_to_fstream(stderr, LLTS_HHMMSSMS); - (void) lsquic_set_log_level("info"); - while (opt = getopt(argc, argv, "l:L:h"), opt != -1) - { - switch (opt) - { - case 'L': - if (0 != lsquic_set_log_level(optarg)) - { - perror("lsquic_set_log_level"); - return 1; - } - break; - case 'l': - if (0 != lsquic_logger_lopt(optarg)) - { - perror("lsquic_logger_lopt"); - return 1; - } - break; - case 'h': - printf("usage: %s [options]\n", argv[0]); - return 0; - default: - return 1; - } - } - - for (version = 0; version < N_LSQVER; ++version) - { - if (!((1 << version) & LSQUIC_DF_VERSIONS)) - continue; -#ifndef _MSC_VER - LSQ_INFO("testing version %s", lsquic_ver2str[version]); -#else - LSQ_INFO("testing version %d", version); -#endif - for (spec = test_specs; spec < test_specs + sizeof(test_specs) / sizeof(test_specs[0]); ++spec) - run_test(spec, version); - } - - return 0; -} - - -#define DATA_0 \ -"ON BEING IDLE.\n" \ -"\n" \ -"Now, this is a subject on which I flatter myself I really am _au fait_.\n" \ -"The gentleman who, when I was young, bathed me at wisdom's font for nine\n" \ -"guineas a term--no extras--used to say he never knew a boy who could\n" \ -"do less work in more time; and I remember my poor grandmother once\n" \ -"incidentally observing, in the course of an instruction upon the use\n" \ -"of the Prayer-book, that it was highly improbable that I should ever do\n" \ -"much that I ought not to do, but that she felt convinced beyond a doubt\n" \ -"that I should leave undone pretty well everything that I ought to do.\n" \ -"\n" \ -"I am afraid I have somewhat belied half the dear old lady's prophecy.\n" \ -"Heaven help me! I have done a good many things that I ought not to have\n" \ -"done, in spite of my laziness. But I have fully confirmed the accuracy\n" \ -"of her judgment so far as neglecting much that I ought not to have\n" \ -"neglected is concerned. Idling always has been my strong point. I take\n" \ -"no credit to myself in the matter--it is a gift. Few possess it. There\n" \ -"are plenty of lazy people and plenty of slow-coaches, but a genuine\n" \ -"idler is a rarity. He is not a man who slouches about with his hands in\n" \ -"his pockets. On the contrary, his most startling characteristic is that\n" \ -"he is always intensely busy.\n" \ -"\n" \ -"It is impossible to enjoy idling thoroughly unless one has plenty of\n" \ -"work to do. There is no fun in doing nothing when you have nothing to\n" \ -"do. Wasting time is merely an occupation then, and a most exhausting\n" \ -"one. Idleness, like kisses, to be sweet must be stolen.\n" \ -"\n" \ -"Many years ago, when I was a young man, I was taken very ill--I never\n" \ -"could see myself that much was the matter with me, except that I had\n" \ -"a beastly cold. But I suppose it was something very serious, for the\n" \ -"doctor said that I ought to have come to him a month before, and that\n" \ -"if it (whatever it was) had gone on for another week he would not have\n" \ -"answered for the consequences. It is an extraordinary thing, but I\n" \ -"never knew a doctor called into any case yet but what it transpired\n" \ -"that another day's delay would have rendered cure hopeless. Our medical\n" \ -"guide, philosopher, and friend is like the hero in a melodrama--he\n" \ -"always comes upon the scene just, and only just, in the nick of time. It\n" \ -"is Providence, that is what it is.\n" \ -"\n" \ -"Well, as I was saying, I was very ill and was ordered to Buxton for a\n" \ -"month, with strict injunctions to do nothing whatever all the while\n" \ -"that I was there. \"Rest is what you require,\" said the doctor, \"perfect\n" \ -"rest.\"\n" \ -"\n" \ -"It seemed a delightful prospect. \"This man evidently understands my\n" \ -"complaint,\" said I, and I pictured to myself a glorious time--a four\n" \ -"weeks' _dolce far niente_ with a dash of illness in it. Not too much\n" \ -"illness, but just illness enough--just sufficient to give it the flavor\n" \ -"of suffering and make it poetical. I should get up late, sip chocolate,\n" \ -"and have my breakfast in slippers and a dressing-gown. I should lie out\n" \ -"in the garden in a hammock and read sentimental novels with a melancholy\n" \ -"ending, until the books should fall from my listless hand, and I should\n" \ -"recline there, dreamily gazing into the deep blue of the firmament,\n" \ -"watching the fleecy clouds floating like white-sailed ships across\n" \ -"its depths, and listening to the joyous song of the birds and the low\n" \ -"rustling of the trees. Or, on becoming too weak to go out of doors,\n" \ -"I should sit propped up with pillows at the open window of the\n" \ -"ground-floor front, and look wasted and interesting, so that all the\n" \ -"pretty girls would sigh as they passed by.\n" \ -"\n" \ -"And twice a day I should go down in a Bath chair to the Colonnade to\n" \ -"drink the waters. Oh, those waters! I knew nothing about them then,\n" \ -"and was rather taken with the idea. \"Drinking the waters\" sounded\n" \ -"fashionable and Queen Anne-fied, and I thought I should like them. But,\n" \ -"ugh! after the first three or four mornings! Sam Weller's description of\n" \ -"them as \"having a taste of warm flat-irons\" conveys only a faint idea of\n" \ -"their hideous nauseousness. If anything could make a sick man get well\n" \ -"quickly, it would be the knowledge that he must drink a glassful of them\n" \ -"every day until he was recovered. I drank them neat for six consecutive\n" \ -"days, and they nearly killed me; but after then I adopted the plan of\n" \ -"taking a stiff glass of brandy-and-water immediately on the top of them,\n" \ -"and found much relief thereby. I have been informed since, by various\n" \ -"eminent medical gentlemen, that the alcohol must have entirely\n" \ -"counteracted the effects of the chalybeate properties contained in the\n" \ -"water. I am glad I was lucky enough to hit upon the right thing.\n" \ -"\n" \ -"But \"drinking the waters\" was only a small portion of the torture I\n" \ -"experienced during that memorable month--a month which was, without\n" \ -"exception, the most miserable I have ever spent. During the best part of\n" \ -"it I religiously followed the doctor's mandate and did nothing whatever,\n" \ -"except moon about the house and garden and go out for two hours a day in\n" \ -"a Bath chair. That did break the monotony to a certain extent. There is\n" \ -"more excitement about Bath-chairing--especially if you are not used to\n" \ -"the exhilarating exercise--than might appear to the casual observer. A\n" \ -"sense of danger, such as a mere outsider might not understand, is ever\n" \ -"present to the mind of the occupant. He feels convinced every minute\n" \ -"that the whole concern is going over, a conviction which becomes\n" \ -"especially lively whenever a ditch or a stretch of newly macadamized\n" \ -"road comes in sight. Every vehicle that passes he expects is going to\n" \ -"run into him; and he never finds himself ascending or descending a\n" \ -"hill without immediately beginning to speculate upon his chances,\n" \ -"supposing--as seems extremely probable--that the weak-kneed controller\n" \ -"of his destiny should let go.\n" \ -"\n" \ -"But even this diversion failed to enliven after awhile, and the _ennui_\n" \ -"became perfectly unbearable. I felt my mind giving way under it. It is\n" \ -"not a strong mind, and I thought it would be unwise to tax it too far.\n" \ -"So somewhere about the twentieth morning I got up early, had a good\n" \ -"breakfast, and walked straight off to Hayfield, at the foot of the\n" \ -"Kinder Scout--a pleasant, busy little town, reached through a lovely\n" \ -"valley, and with two sweetly pretty women in it. At least they were\n" \ -"sweetly pretty then; one passed me on the bridge and, I think, smiled;\n" \ -"and the other was standing at an open door, making an unremunerative\n" \ -"investment of kisses upon a red-faced baby. But it is years ago, and I\n" \ -"dare say they have both grown stout and snappish since that time.\n" \ -"Coming back, I saw an old man breaking stones, and it roused such strong\n" \ -"longing in me to use my arms that I offered him a drink to let me take\n" \ -"his place. He was a kindly old man and he humored me. I went for those\n" \ -"stones with the accumulated energy of three weeks, and did more work in\n" \ -"half an hour than he had done all day. But it did not make him jealous.\n" \ -"\n" \ -"Having taken the plunge, I went further and further into dissipation,\n" \ -"going out for a long walk every morning and listening to the band in\n" \ -"the pavilion every evening. But the days still passed slowly\n" \ -"notwithstanding, and I was heartily glad when the last one came and I\n" \ -"was being whirled away from gouty, consumptive Buxton to London with its\n" \ -"stern work and life. I looked out of the carriage as we rushed through\n" \ -"Hendon in the evening. The lurid glare overhanging the mighty city\n" \ -"seemed to warm my heart, and when, later on, my cab rattled out of St.\n" \ -"Pancras' station, the old familiar roar that came swelling up around me\n" \ -"sounded the sweetest music I had heard for many a long day.\n" \ -"\n" \ -"I certainly did not enjoy that month's idling. I like idling when I\n" \ -"ought not to be idling; not when it is the only thing I have to do. That\n" \ -"is my pig-headed nature. The time when I like best to stand with my\n" \ -"back to the fire, calculating how much I owe, is when my desk is heaped\n" \ -"highest with letters that must be answered by the next post. When I like\n" \ -"to dawdle longest over my dinner is when I have a heavy evening's work\n" \ -"before me. And if, for some urgent reason, I ought to be up particularly\n" \ -"early in the morning, it is then, more than at any other time, that I\n" \ -"love to lie an extra half-hour in bed.\n" \ -"\n" \ -"Ah! how delicious it is to turn over and go to sleep again: \"just for\n" \ -"five minutes.\" Is there any human being, I wonder, besides the hero of\n" \ -"a Sunday-school \"tale for boys,\" who ever gets up willingly? There\n" \ -"are some men to whom getting up at the proper time is an utter\n" \ -"impossibility. If eight o'clock happens to be the time that they should\n" \ -"turn out, then they lie till half-past. If circumstances change and\n" \ -"half-past eight becomes early enough for them, then it is nine before\n" \ -"they can rise. They are like the statesman of whom it was said that he\n" \ -"was always punctually half an hour late. They try all manner of schemes.\n" \ -"They buy alarm-clocks (artful contrivances that go off at the wrong time\n" \ -"and alarm the wrong people). They tell Sarah Jane to knock at the door\n" \ -"and call them, and Sarah Jane does knock at the door and does call them,\n" \ -"and they grunt back \"awri\" and then go comfortably to sleep again. I\n" \ -"knew one man who would actually get out and have a cold bath; and even\n" \ -"that was of no use, for afterward he would jump into bed again to warm\n" \ -"himself.\n" \ -"\n" \ -"I think myself that I could keep out of bed all right if I once got\n" \ -"out. It is the wrenching away of the head from the pillow that I find so\n" \ -"hard, and no amount of over-night determination makes it easier. I say\n" \ -"to myself, after having wasted the whole evening, \"Well, I won't do\n" \ -"any more work to-night; I'll get up early to-morrow morning;\" and I am\n" \ -"thoroughly resolved to do so--then. In the morning, however, I feel less\n" \ -"enthusiastic about the idea, and reflect that it would have been much\n" \ -"better if I had stopped up last night. And then there is the trouble of\n" \ -"dressing, and the more one thinks about that the more one wants to put\n" \ -"it off.\n" \ -"\n" \ -"It is a strange thing this bed, this mimic grave, where we stretch our\n" \ -"tired limbs and sink away so quietly into the silence and rest. \"O bed,\n" \ -"O bed, delicious bed, that heaven on earth to the weary head,\" as sang\n" \ -"poor Hood, you are a kind old nurse to us fretful boys and girls. Clever\n" \ -"and foolish, naughty and good, you take us all in your motherly lap and\n" \ -"hush our wayward crying. The strong man full of care--the sick man\n" \ -"full of pain--the little maiden sobbing for her faithless lover--like\n" \ -"children we lay our aching heads on your white bosom, and you gently\n" \ -"soothe us off to by-by.\n" \ -"\n" \ -"Our trouble is sore indeed when you turn away and will not comfort us.\n" \ -"How long the dawn seems coming when we cannot sleep! Oh! those hideous\n" \ -"nights when we toss and turn in fever and pain, when we lie, like living\n" \ -"men among the dead, staring out into the dark hours that drift so slowly\n" \ -"between us and the light. And oh! those still more hideous nights when\n" \ -"we sit by another in pain, when the low fire startles us every now and\n" \ -"then with a falling cinder, and the tick of the clock seems a hammer\n" \ -"beating out the life that we are watching.\n" \ -"\n" \ -"But enough of beds and bedrooms. I have kept to them too long, even for\n" \ -"an idle fellow. Let us come out and have a smoke. That wastes time just\n" \ -"as well and does not look so bad. Tobacco has been a blessing to us\n" \ -"idlers. What the civil-service clerk before Sir Walter's time found\n" \ -"to occupy their minds with it is hard to imagine. I attribute the\n" \ -"quarrelsome nature of the Middle Ages young men entirely to the want of\n" \ -"the soothing weed. They had no work to do and could not smoke, and\n" \ -"the consequence was they were forever fighting and rowing. If, by any\n" \ -"extraordinary chance, there was no war going, then they got up a deadly\n" \ -"family feud with the next-door neighbor, and if, in spite of this, they\n" \ -"still had a few spare moments on their hands, they occupied them with\n" \ -"discussions as to whose sweetheart was the best looking, the arguments\n" \ -"employed on both sides being battle-axes, clubs, etc. Questions of taste\n" \ -"were soon decided in those days. When a twelfth-century youth fell in\n" \ -"love he did not take three paces backward, gaze into her eyes, and tell\n" \ -"her she was too beautiful to live. He said he would step outside and see\n" \ -"about it. And if, when he got out, he met a man and broke his head--the\n" \ -"other man's head, I mean--then that proved that his--the first\n" \ -"fellow's--girl was a pretty girl. But if the other fellow broke _his_\n" \ -"head--not his own, you know, but the other fellow's--the other fellow\n" \ -"to the second fellow, that is, because of course the other fellow would\n" \ -"only be the other fellow to him, not the first fellow who--well, if he\n" \ -"broke his head, then _his_ girl--not the other fellow's, but the fellow\n" \ -"who _was_ the--Look here, if A broke B's head, then A's girl was a\n" \ -"pretty girl; but if B broke A's head, then A's girl wasn't a pretty\n" \ -"girl, but B's girl was. That was their method of conducting art\n" \ -"criticism.\n" \ -"\n" \ -"Nowadays we light a pipe and let the girls fight it out among\n" \ -"themselves.\n" \ -"\n" \ -"They do it very well. They are getting to do all our work. They are\n" \ -"doctors, and barristers, and artists. They manage theaters, and promote\n" \ -"swindles, and edit newspapers. I am looking forward to the time when we\n" \ -"men shall have nothing to do but lie in bed till twelve, read two novels\n" \ -"a day, have nice little five-o'clock teas all to ourselves, and tax\n" \ -"our brains with nothing more trying than discussions upon the latest\n" \ -"patterns in trousers and arguments as to what Mr. Jones' coat was\n" \ -"made of and whether it fitted him. It is a glorious prospect--for idle\n" \ -"fellows.\n" - -#define DATA_1 \ -"ON BEING IN LOVE.\n" \ -"\n" \ -"You've been in love, of course! If not you've got it to come. Love is\n" \ -"like the measles; we all have to go through it. Also like the measles,\n" \ -"we take it only once. One never need be afraid of catching it a second\n" \ -"time. The man who has had it can go into the most dangerous places and\n" \ -"play the most foolhardy tricks with perfect safety. He can picnic in\n" \ -"shady woods, ramble through leafy aisles, and linger on mossy seats to\n" \ -"watch the sunset. He fears a quiet country-house no more than he would\n" \ -"his own club. He can join a family party to go down the Rhine. He can,\n" \ -"to see the last of a friend, venture into the very jaws of the marriage\n" \ -"ceremony itself. He can keep his head through the whirl of a ravishing\n" \ -"waltz, and rest afterward in a dark conservatory, catching nothing more\n" \ -"lasting than a cold. He can brave a moonlight walk adown sweet-scented\n" \ -"lanes or a twilight pull among the somber rushes. He can get over a\n" \ -"stile without danger, scramble through a tangled hedge without being\n" \ -"caught, come down a slippery path without falling. He can look into\n" \ -"sunny eyes and not be dazzled. He listens to the siren voices, yet sails\n" \ -"on with unveered helm. He clasps white hands in his, but no electric\n" \ -"\"Lulu\"-like force holds him bound in their dainty pressure.\n" \ -"\n" \ -"No, we never sicken with love twice. Cupid spends no second arrow on\n" \ -"the same heart. Love's handmaids are our life-long friends. Respect, and\n" \ -"admiration, and affection, our doors may always be left open for, but\n" \ -"their great celestial master, in his royal progress, pays but one visit\n" \ -"and departs. We like, we cherish, we are very, very fond of--but we\n" \ -"never love again. A man's heart is a firework that once in its time\n" \ -"flashes heavenward. Meteor-like, it blazes for a moment and lights\n" \ -"with its glory the whole world beneath. Then the night of our sordid\n" \ -"commonplace life closes in around it, and the burned-out case, falling\n" \ -"back to earth, lies useless and uncared for, slowly smoldering into\n" \ -"ashes. Once, breaking loose from our prison bonds, we dare, as mighty\n" \ -"old Prometheus dared, to scale the Olympian mount and snatch from\n" \ -"Phoebus' chariot the fire of the gods. Happy those who, hastening down\n" \ -"again ere it dies out, can kindle their earthly altars at its flame.\n" \ -"Love is too pure a light to burn long among the noisome gases that we\n" \ -"breathe, but before it is choked out we may use it as a torch to ignite\n" \ -"the cozy fire of affection.\n" \ -"\n" \ -"And, after all, that warming glow is more suited to our cold little back\n" \ -"parlor of a world than is the burning spirit love. Love should be the\n" \ -"vestal fire of some mighty temple--some vast dim fane whose organ music\n" \ -"is the rolling of the spheres. Affection will burn cheerily when the\n" \ -"white flame of love is flickered out. Affection is a fire that can be\n" \ -"fed from day to day and be piled up ever higher as the wintry years draw\n" \ -"nigh. Old men and women can sit by it with their thin hands clasped, the\n" \ -"little children can nestle down in front, the friend and neighbor has\n" \ -"his welcome corner by its side, and even shaggy Fido and sleek Titty can\n" \ -"toast their noses at the bars.\n" \ -"\n" \ -"Let us heap the coals of kindness upon that fire. Throw on your pleasant\n" \ -"words, your gentle pressures of the hand, your thoughtful and unselfish\n" \ -"deeds. Fan it with good-humor, patience, and forbearance. You can let\n" \ -"the wind blow and the rain fall unheeded then, for your hearth will be\n" \ -"warm and bright, and the faces round it will make sunshine in spite of\n" \ -"the clouds without.\n" \ -"\n" \ -"I am afraid, dear Edwin and Angelina, you expect too much from love.\n" \ -"You think there is enough of your little hearts to feed this fierce,\n" \ -"devouring passion for all your long lives. Ah, young folk! don't rely\n" \ -"too much upon that unsteady flicker. It will dwindle and dwindle as the\n" \ -"months roll on, and there is no replenishing the fuel. You will watch it\n" \ -"die out in anger and disappointment. To each it will seem that it is the\n" \ -"other who is growing colder. Edwin sees with bitterness that Angelina no\n" \ -"longer runs to the gate to meet him, all smiles and blushes; and when he\n" \ -"has a cough now she doesn't begin to cry and, putting her arms round his\n" \ -"neck, say that she cannot live without him. The most she will probably\n" \ -"do is to suggest a lozenge, and even that in a tone implying that it is\n" \ -"the noise more than anything else she is anxious to get rid of.\n" \ -"\n" \ -"Poor little Angelina, too, sheds silent tears, for Edwin has given up\n" \ -"carrying her old handkerchief in the inside pocket of his waistcoat.\n" \ -"\n" \ -"Both are astonished at the falling off in the other one, but neither\n" \ -"sees their own change. If they did they would not suffer as they do.\n" \ -"They would look for the cause in the right quarter--in the littleness\n" \ -"of poor human nature--join hands over their common failing, and start\n" \ -"building their house anew on a more earthly and enduring foundation.\n" \ -"But we are so blind to our own shortcomings, so wide awake to those\n" \ -"of others. Everything that happens to us is always the other person's\n" \ -"fault. Angelina would have gone on loving Edwin forever and ever and\n" \ -"ever if only Edwin had not grown so strange and different. Edwin would\n" \ -"have adored Angelina through eternity if Angelina had only remained the\n" \ -"same as when he first adored her.\n" \ -"\n" \ -"It is a cheerless hour for you both when the lamp of love has gone out\n" \ -"and the fire of affection is not yet lit, and you have to grope about\n" \ -"in the cold, raw dawn of life to kindle it. God grant it catches light\n" \ -"before the day is too far spent. Many sit shivering by the dead coals\n" \ -"till night come.\n" \ -"\n" \ -"But, there, of what use is it to preach? Who that feels the rush of\n" \ -"young love through his veins can think it will ever flow feeble and\n" \ -"slow! To the boy of twenty it seems impossible that he will not love as\n" \ -"wildly at sixty as he does then. He cannot call to mind any middle-aged\n" \ -"or elderly gentleman of his acquaintance who is known to exhibit\n" \ -"symptoms of frantic attachment, but that does not interfere in his\n" \ -"belief in himself. His love will never fall, whoever else's may. Nobody\n" \ -"ever loved as he loves, and so, of course, the rest of the world's\n" \ -"experience can be no guide in his case. Alas! alas! ere thirty he has\n" \ -"joined the ranks of the sneerers. It is not his fault. Our passions,\n" \ -"both the good and bad, cease with our blushes. We do not hate, nor\n" \ -"grieve, nor joy, nor despair in our thirties like we did in our teens.\n" \ -"Disappointment does not suggest suicide, and we quaff success without\n" \ -"intoxication.\n" \ -"\n" \ -"We take all things in a minor key as we grow older. There are few\n" \ -"majestic passages in the later acts of life's opera. Ambition takes\n" \ -"a less ambitious aim. Honor becomes more reasonable and conveniently\n" \ -"adapts itself to circumstances. And love--love dies. \"Irreverence for\n" \ -"the dreams of youth\" soon creeps like a killing frost upon our hearts.\n" \ -"The tender shoots and the expanding flowers are nipped and withered, and\n" \ -"of a vine that yearned to stretch its tendrils round the world there is\n" \ -"left but a sapless stump.\n" \ -"\n" \ -"My fair friends will deem all this rank heresy, I know. So far from a\n" \ -"man's not loving after he has passed boyhood, it is not till there is a\n" \ -"good deal of gray in his hair that they think his protestations at all\n" \ -"worthy of attention. Young ladies take their notions of our sex from the\n" \ -"novels written by their own, and compared with the monstrosities\n" \ -"that masquerade for men in the pages of that nightmare literature,\n" \ -"Pythagoras' plucked bird and Frankenstein's demon were fair average\n" \ -"specimens of humanity.\n" \ -"\n" \ -"In these so-called books, the chief lover, or Greek god, as he is\n" \ -"admiringly referred to--by the way, they do not say which \"Greek god\"\n" \ -"it is that the gentleman bears such a striking likeness to; it might be\n" \ -"hump-backed Vulcan, or double-faced Janus, or even driveling Silenus,\n" \ -"the god of abstruse mysteries. He resembles the whole family of them,\n" \ -"however, in being a blackguard, and perhaps this is what is meant. To\n" \ -"even the little manliness his classical prototypes possessed, though,\n" \ -"he can lay no claim whatever, being a listless effeminate noodle, on\n" \ -"the shady side of forty. But oh! the depth and strength of this elderly\n" \ -"party's emotion for some bread-and-butter school-girl! Hide your heads,\n" \ -"ye young Romeos and Leanders! this _blase_ old beau loves with an\n" \ -"hysterical fervor that requires four adjectives to every noun to\n" \ -"properly describe.\n" \ -"\n" \ -"It is well, dear ladies, for us old sinners that you study only books.\n" \ -"Did you read mankind, you would know that the lad's shy stammering tells\n" \ -"a truer tale than our bold eloquence. A boy's love comes from a full\n" \ -"heart; a man's is more often the result of a full stomach. Indeed, a\n" \ -"man's sluggish current may not be called love, compared with the rushing\n" \ -"fountain that wells up when a boy's heart is struck with the heavenly\n" \ -"rod. If you would taste love, drink of the pure stream that youth pours\n" \ -"out at your feet. Do not wait till it has become a muddy river before\n" \ -"you stoop to catch its waves.\n" \ -"\n" \ -"Or is it that you like its bitter flavor--that the clear, limpid water\n" \ -"is insipid to your palate and that the pollution of its after-course\n" \ -"gives it a relish to your lips? Must we believe those who tell us that a\n" \ -"hand foul with the filth of a shameful life is the only one a young girl\n" \ -"cares to be caressed by?\n" \ -"\n" \ -"That is the teaching that is bawled out day by day from between those\n" \ -"yellow covers. Do they ever pause to think, I wonder, those devil's\n" \ -"ladyhelps, what mischief they are doing crawling about God's garden, and\n" \ -"telling childish Eves and silly Adams that sin is sweet and that decency\n" \ -"is ridiculous and vulgar? How many an innocent girl do they not degrade\n" \ -"into an evil-minded woman? To how many a weak lad do they not point out\n" \ -"the dirty by-path as the shortest cut to a maiden's heart? It is not as\n" \ -"if they wrote of life as it really is. Speak truth, and right will take\n" \ -"care of itself. But their pictures are coarse daubs painted from the\n" \ -"sickly fancies of their own diseased imagination.\n" \ -"\n" \ -"We want to think of women not--as their own sex would show them--as\n" \ -"Lorleis luring us to destruction, but as good angels beckoning us\n" \ -"upward. They have more power for good or evil than they dream of. It is\n" \ -"just at the very age when a man's character is forming that he tumbles\n" \ -"into love, and then the lass he loves has the making or marring of him.\n" \ -"Unconsciously he molds himself to what she would have him, good or bad.\n" \ -"I am sorry to have to be ungallant enough to say that I do not think\n" \ -"they always use their influence for the best. Too often the female world\n" \ -"is bounded hard and fast within the limits of the commonplace. Their\n" \ -"ideal hero is a prince of littleness, and to become that many a powerful\n" \ -"mind, enchanted by love, is \"lost to life and use and name and fame.\"\n" \ -"\n" \ -"And yet, women, you could make us so much better if you only would. It\n" \ -"rests with you, more than with all the preachers, to roll this world a\n" \ -"little nearer heaven. Chivalry is not dead: it only sleeps for want\n" \ -"of work to do. It is you who must wake it to noble deeds. You must be\n" \ -"worthy of knightly worship.\n" \ -"\n" \ -"You must be higher than ourselves. It was for Una that the Red Cross\n" \ -"Knight did war. For no painted, mincing court dame could the dragon have\n" \ -"been slain. Oh, ladies fair, be fair in mind and soul as well as face,\n" \ -"so that brave knights may win glory in your service! Oh, woman, throw\n" \ -"off your disguising cloaks of selfishness, effrontery, and affectation!\n" \ -"Stand forth once more a queen in your royal robe of simple purity. A\n" \ -"thousand swords, now rusting in ignoble sloth, shall leap from their\n" \ -"scabbards to do battle for your honor against wrong. A thousand Sir\n" \ -"Rolands shall lay lance in rest, and Fear, Avarice, Pleasure, and\n" \ -"Ambition shall go down in the dust before your colors.\n" \ -"\n" \ -"What noble deeds were we not ripe for in the days when we loved?\n" \ -"What noble lives could we not have lived for her sake? Our love was\n" \ -"a religion we could have died for. It was no mere human creature like\n" \ -"ourselves that we adored. It was a queen that we paid homage to, a\n" \ -"goddess that we worshiped.\n" \ -"\n" \ -"And how madly we did worship! And how sweet it was to worship! Ah, lad,\n" \ -"cherish love's young dream while it lasts! You will know too soon how\n" \ -"truly little Tom Moore sang when he said that there was nothing half so\n" \ -"sweet in life. Even when it brings misery it is a wild, romantic misery,\n" \ -"all unlike the dull, worldly pain of after-sorrows. When you have lost\n" \ -"her--when the light is gone out from your life and the world stretches\n" \ -"before you a long, dark horror, even then a half-enchantment mingles\n" \ -"with your despair.\n" \ -"\n" \ -"And who would not risk its terrors to gain its raptures? Ah, what\n" \ -"raptures they were! The mere recollection thrills you. How delicious\n" \ -"it was to tell her that you loved her, that you lived for her, that\n" \ -"you would die for her! How you did rave, to be sure, what floods of\n" \ -"extravagant nonsense you poured forth, and oh, how cruel it was of\n" \ -"her to pretend not to believe you! In what awe you stood of her! How\n" \ -"miserable you were when you had offended her! And yet, how pleasant to\n" \ -"be bullied by her and to sue for pardon without having the slightest\n" \ -"notion of what your fault was! How dark the world was when she snubbed\n" \ -"you, as she often did, the little rogue, just to see you look wretched;\n" \ -"how sunny when she smiled! How jealous you were of every one about\n" \ -"her! How you hated every man she shook hands with, every woman she\n" \ -"kissed--the maid that did her hair, the boy that cleaned her shoes, the\n" \ -"dog she nursed--though you had to be respectful to the last-named! How\n" \ -"you looked forward to seeing her, how stupid you were when you did see\n" \ -"her, staring at her without saying a word! How impossible it was for\n" \ -"you to go out at any time of the day or night without finding yourself\n" \ -"eventually opposite her windows! You hadn't pluck enough to go in, but\n" \ -"you hung about the corner and gazed at the outside. Oh, if the house had\n" \ -"only caught fire--it was insured, so it wouldn't have mattered--and you\n" \ -"could have rushed in and saved her at the risk of your life, and have\n" \ -"been terribly burned and injured! Anything to serve her. Even in little\n" \ -"things that was so sweet. How you would watch her, spaniel-like, to\n" \ -"anticipate her slightest wish! How proud you were to do her bidding! How\n" \ -"delightful it was to be ordered about by her! To devote your whole life\n" \ -"to her and to never think of yourself seemed such a simple thing. You\n" \ -"would go without a holiday to lay a humble offering at her shrine, and\n" \ -"felt more than repaid if she only deigned to accept it. How precious to\n" \ -"you was everything that she had hallowed by her touch--her little glove,\n" \ -"the ribbon she had worn, the rose that had nestled in her hair and whose\n" \ -"withered leaves still mark the poems you never care to look at now.\n" \ -"\n" \ -"And oh, how beautiful she was, how wondrous beautiful! It was as some\n" \ -"angel entering the room, and all else became plain and earthly. She was\n" \ -"too sacred to be touched. It seemed almost presumption to gaze at her.\n" \ -"You would as soon have thought of kissing her as of singing comic songs\n" \ -"in a cathedral. It was desecration enough to kneel and timidly raise the\n" \ -"gracious little hand to your lips.\n" \ -"\n" \ -"Ah, those foolish days, those foolish days when we were unselfish and\n" \ -"pure-minded; those foolish days when our simple hearts were full\n" \ -"of truth, and faith, and reverence! Ah, those foolish days of noble\n" \ -"longings and of noble strivings! And oh, these wise, clever days when we\n" \ -"know that money is the only prize worth striving for, when we believe in\n" \ -"nothing else but meanness and lies, when we care for no living creature\n" \ -"but ourselves!\n" - -#define DATA_2 \ -"ON BEING IN THE BLUES.\n" \ -"\n" \ -"I can enjoy feeling melancholy, and there is a good deal of satisfaction\n" \ -"about being thoroughly miserable; but nobody likes a fit of the blues.\n" \ -"Nevertheless, everybody has them; notwithstanding which, nobody can tell\n" \ -"why. There is no accounting for them. You are just as likely to have one\n" \ -"on the day after you have come into a large fortune as on the day after\n" \ -"you have left your new silk umbrella in the train. Its effect upon you\n" \ -"is somewhat similar to what would probably be produced by a combined\n" \ -"attack of toothache, indigestion, and cold in the head. You become\n" \ -"stupid, restless, and irritable; rude to strangers and dangerous toward\n" \ -"your friends; clumsy, maudlin, and quarrelsome; a nuisance to yourself\n" \ -"and everybody about you.\n" \ -"\n" \ -"While it is on you can do nothing and think of nothing, though feeling\n" \ -"at the time bound to do something. You can't sit still so put on your\n" \ -"hat and go for a walk; but before you get to the corner of the street\n" \ -"you wish you hadn't come out and you turn back. You open a book and try\n" \ -"to read, but you find Shakespeare trite and commonplace, Dickens is dull\n" \ -"and prosy, Thackeray a bore, and Carlyle too sentimental. You throw the\n" \ -"book aside and call the author names. Then you \"shoo\" the cat out of\n" \ -"the room and kick the door to after her. You think you will write your\n" \ -"letters, but after sticking at \"Dearest Auntie: I find I have five\n" \ -"minutes to spare, and so hasten to write to you,\" for a quarter of an\n" \ -"hour, without being able to think of another sentence, you tumble the\n" \ -"paper into the desk, fling the wet pen down upon the table-cloth,\n" \ -"and start up with the resolution of going to see the Thompsons. While\n" \ -"pulling on your gloves, however, it occurs to you that the Thompsons are\n" \ -"idiots; that they never have supper; and that you will be expected to\n" \ -"jump the baby. You curse the Thompsons and decide not to go.\n" \ -"\n" \ -"By this time you feel completely crushed. You bury your face in your\n" \ -"hands and think you would like to die and go to heaven. You picture to\n" \ -"yourself your own sick-bed, with all your friends and relations standing\n" \ -"round you weeping. You bless them all, especially the young and pretty\n" \ -"ones. They will value you when you are gone, so you say to yourself,\n" \ -"and learn too late what they have lost; and you bitterly contrast their\n" \ -"presumed regard for you then with their decided want of veneration now.\n" \ -"\n" \ -"These reflections make you feel a little more cheerful, but only for a\n" \ -"brief period; for the next moment you think what a fool you must be\n" \ -"to imagine for an instant that anybody would be sorry at anything that\n" \ -"might happen to you. Who would care two straws (whatever precise amount\n" \ -"of care two straws may represent) whether you are blown up, or hung\n" \ -"up, or married, or drowned? Nobody cares for you. You never have\n" \ -"been properly appreciated, never met with your due deserts in any one\n" \ -"particular. You review the whole of your past life, and it is painfully\n" \ -"apparent that you have been ill-used from your cradle.\n" \ -"\n" \ -"Half an hour's indulgence in these considerations works you up into\n" \ -"a state of savage fury against everybody and everything, especially\n" \ -"yourself, whom anatomical reasons alone prevent your kicking. Bed-time\n" \ -"at last comes, to save you from doing something rash, and you spring\n" \ -"upstairs, throw off your clothes, leaving them strewn all over the room,\n" \ -"blow out the candle, and jump into bed as if you had backed yourself\n" \ -"for a heavy wager to do the whole thing against time. There you toss\n" \ -"and tumble about for a couple of hours or so, varying the monotony by\n" \ -"occasionally jerking the clothes off and getting out and putting them\n" \ -"on again. At length you drop into an uneasy and fitful slumber, have bad\n" \ -"dreams, and wake up late the next morning.\n" \ -"\n" \ -"At least, this is all we poor single men can do under the circumstances.\n" \ -"Married men bully their wives, grumble at the dinner, and insist on the\n" \ -"children's going to bed. All of which, creating, as it does, a good deal\n" \ -"of disturbance in the house, must be a great relief to the feelings of a\n" \ -"man in the blues, rows being the only form of amusement in which he can\n" \ -"take any interest.\n" \ -"\n" \ -"The symptoms of the infirmity are much the same in every case, but the\n" \ -"affliction itself is variously termed. The poet says that \"a feeling\n" \ -"of sadness comes o'er him.\" 'Arry refers to the heavings of his wayward\n" \ -"heart by confiding to Jimee that he has \"got the blooming hump.\" Your\n" \ -"sister doesn't know what is the matter with her to-night. She feels out\n" \ -"of sorts altogether and hopes nothing is going to happen. The every-day\n" \ -"young man is \"so awful glad to meet you, old fellow,\" for he does \"feel\n" \ -"so jolly miserable this evening.\" As for myself, I generally say that \"I\n" \ -"have a strange, unsettled feeling to-night\" and \"think I'll go out.\"\n" \ -"\n" \ -"By the way, it never does come except in the evening. In the sun-time,\n" \ -"when the world is bounding forward full of life, we cannot stay to sigh\n" \ -"and sulk. The roar of the working day drowns the voices of the elfin\n" \ -"sprites that are ever singing their low-toned _miserere_ in our ears.\n" \ -"In the day we are angry, disappointed, or indignant, but never \"in the\n" \ -"blues\" and never melancholy. When things go wrong at ten o'clock in the\n" \ -"morning we--or rather you--swear and knock the furniture about; but if\n" \ -"the misfortune comes at ten P.M., we read poetry or sit in the dark and\n" \ -"think what a hollow world this is.\n" \ -"\n" \ -"But, as a rule, it is not trouble that makes us melancholy. The\n" \ -"actuality is too stern a thing for sentiment. We linger to weep over\n" \ -"a picture, but from the original we should quickly turn our eyes away.\n" \ -"There is no pathos in real misery: no luxury in real grief. We do not\n" \ -"toy with sharp swords nor hug a gnawing fox to our breast for choice.\n" \ -"When a man or woman loves to brood over a sorrow and takes care to keep\n" \ -"it green in their memory, you may be sure it is no longer a pain to\n" \ -"them. However they may have suffered from it at first, the recollection\n" \ -"has become by then a pleasure. Many dear old ladies who daily look at\n" \ -"tiny shoes lying in lavender-scented drawers, and weep as they think of\n" \ -"the tiny feet whose toddling march is done, and sweet-faced young ones\n" \ -"who place each night beneath their pillow some lock that once curled on\n" \ -"a boyish head that the salt waves have kissed to death, will call me\n" \ -"a nasty cynical brute and say I'm talking nonsense; but I believe,\n" \ -"nevertheless, that if they will ask themselves truthfully whether they\n" \ -"find it unpleasant to dwell thus on their sorrow, they will be compelled\n" \ -"to answer \"No.\" Tears are as sweet as laughter to some natures. The\n" \ -"proverbial Englishman, we know from old chronicler Froissart, takes his\n" \ -"pleasures sadly, and the Englishwoman goes a step further and takes her\n" \ -"pleasures in sadness itself.\n" \ -"\n" \ -"I am not sneering. I would not for a moment sneer at anything that\n" \ -"helps to keep hearts tender in this hard old world. We men are cold and\n" \ -"common-sensed enough for all; we would not have women the same. No, no,\n" \ -"ladies dear, be always sentimental and soft-hearted, as you are--be the\n" \ -"soothing butter to our coarse dry bread. Besides, sentiment is to women\n" \ -"what fun is to us. They do not care for our humor, surely it would be\n" \ -"unfair to deny them their grief. And who shall say that their mode of\n" \ -"enjoyment is not as sensible as ours? Why assume that a doubled-up\n" \ -"body, a contorted, purple face, and a gaping mouth emitting a series\n" \ -"of ear-splitting shrieks point to a state of more intelligent happiness\n" \ -"than a pensive face reposing upon a little white hand, and a pair of\n" \ -"gentle tear-dimmed eyes looking back through Time's dark avenue upon a\n" \ -"fading past?\n" \ -"\n" \ -"I am glad when I see Regret walked with as a friend--glad because I know\n" \ -"the saltness has been washed from out the tears, and that the sting must\n" \ -"have been plucked from the beautiful face of Sorrow ere we dare press\n" \ -"her pale lips to ours. Time has laid his healing hand upon the wound\n" \ -"when we can look back upon the pain we once fainted under and no\n" \ -"bitterness or despair rises in our hearts. The burden is no longer\n" \ -"heavy when we have for our past troubles only the same sweet mingling of\n" \ -"pleasure and pity that we feel when old knight-hearted Colonel Newcome\n" \ -"answers \"_adsum_\" to the great roll-call, or when Tom and Maggie\n" \ -"Tulliver, clasping hands through the mists that have divided them, go\n" \ -"down, locked in each other's arms, beneath the swollen waters of the\n" \ -"Floss.\n" \ -"\n" \ -"Talking of poor Tom and Maggie Tulliver brings to my mind a saying of\n" \ -"George Eliot's in connection with this subject of melancholy. She\n" \ -"speaks somewhere of the \"sadness of a summer's evening.\" How wonderfully\n" \ -"true--like everything that came from that wonderful pen--the observation\n" \ -"is! Who has not felt the sorrowful enchantment of those lingering\n" \ -"sunsets? The world belongs to Melancholy then, a thoughtful deep-eyed\n" \ -"maiden who loves not the glare of day. It is not till \"light thickens\n" \ -"and the crow wings to the rocky wood\" that she steals forth from her\n" \ -"groves. Her palace is in twilight land. It is there she meets us. At her\n" \ -"shadowy gate she takes our hand in hers and walks beside us through\n" \ -"her mystic realm. We see no form, but seem to hear the rustling of her\n" \ -"wings.\n" \ -"\n" \ -"Even in the toiling hum-drum city her spirit comes to us. There is a\n" \ -"somber presence in each long, dull street; and the dark river creeps\n" \ -"ghostlike under the black arches, as if bearing some hidden secret\n" \ -"beneath its muddy waves.\n" \ -"\n" \ -"In the silent country, when the trees and hedges loom dim and blurred\n" \ -"against the rising night, and the bat's wing flutters in our face, and\n" \ -"the land-rail's cry sounds drearily across the fields, the spell sinks\n" \ -"deeper still into our hearts. We seem in that hour to be standing by\n" \ -"some unseen death-bed, and in the swaying of the elms we hear the sigh\n" \ -"of the dying day.\n" \ -"\n" \ -"A solemn sadness reigns. A great peace is around us. In its light\n" \ -"our cares of the working day grow small and trivial, and bread and\n" \ -"cheese--ay, and even kisses--do not seem the only things worth striving\n" \ -"for. Thoughts we cannot speak but only listen to flood in upon us, and\n" \ -"standing in the stillness under earth's darkening dome, we feel that we\n" \ -"are greater than our petty lives. Hung round with those dusky curtains,\n" \ -"the world is no longer a mere dingy workshop, but a stately temple\n" \ -"wherein man may worship, and where at times in the dimness his groping\n" \ -"hands touch God's.\n" - -#define DATA_3 \ -"ON BEING HARD UP.\n" \ -"\n" \ -"It is a most remarkable thing. I sat down with the full intention of\n" \ -"writing something clever and original; but for the life of me I can't\n" \ -"think of anything clever and original--at least, not at this moment. The\n" \ -"only thing I can think about now is being hard up. I suppose having my\n" \ -"hands in my pockets has made me think about this. I always do sit with\n" \ -"my hands in my pockets except when I am in the company of my sisters,\n" \ -"my cousins, or my aunts; and they kick up such a shindy--I should say\n" \ -"expostulate so eloquently upon the subject--that I have to give in and\n" \ -"take them out--my hands I mean. The chorus to their objections is that\n" \ -"it is not gentlemanly. I am hanged if I can see why. I could understand\n" \ -"its not being considered gentlemanly to put your hands in other people's\n" \ -"pockets (especially by the other people), but how, O ye sticklers for\n" \ -"what looks this and what looks that, can putting his hands in his own\n" \ -"pockets make a man less gentle? Perhaps you are right, though. Now I\n" \ -"come to think of it, I have heard some people grumble most savagely when\n" \ -"doing it. But they were mostly old gentlemen. We young fellows, as a\n" \ -"rule, are never quite at ease unless we have our hands in our pockets.\n" \ -"We are awkward and shifty. We are like what a music-hall Lion Comique\n" \ -"would be without his opera-hat, if such a thing can be imagined. But let\n" \ -"us put our hands in our trousers pockets, and let there be some small\n" \ -"change in the right-hand one and a bunch of keys in the left, and we\n" \ -"will face a female post-office clerk.\n" \ -"\n" \ -"It is a little difficult to know what to do with your hands, even in\n" \ -"your pockets, when there is nothing else there. Years ago, when my whole\n" \ -"capital would occasionally come down to \"what in town the people call\n" \ -"a bob,\" I would recklessly spend a penny of it, merely for the sake of\n" \ -"having the change, all in coppers, to jingle. You don't feel nearly so\n" \ -"hard up with eleven pence in your pocket as you do with a shilling. Had\n" \ -"I been \"La-di-da,\" that impecunious youth about whom we superior folk\n" \ -"are so sarcastic, I would have changed my penny for two ha'pennies.\n" \ -"\n" \ -"I can speak with authority on the subject of being hard up. I have been\n" \ -"a provincial actor. If further evidence be required, which I do not\n" \ -"think likely, I can add that I have been a \"gentleman connected with the\n" \ -"press.\" I have lived on 15 shilling a week. I have lived a week on 10,\n" \ -"owing the other 5; and I have lived for a fortnight on a great-coat.\n" \ -"\n" \ -"It is wonderful what an insight into domestic economy being really hard\n" \ -"up gives one. If you want to find out the value of money, live on\n" \ -"15 shillings a week and see how much you can put by for clothes and\n" \ -"recreation. You will find out that it is worth while to wait for the\n" \ -"farthing change, that it is worth while to walk a mile to save a\n" \ -"penny, that a glass of beer is a luxury to be indulged in only at rare\n" \ -"intervals, and that a collar can be worn for four days.\n" \ -"\n" \ -"Try it just before you get married. It will be excellent practice. Let\n" \ -"your son and heir try it before sending him to college. He won't grumble\n" \ -"at a hundred a year pocket-money then. There are some people to whom it\n" \ -"would do a world of good. There is that delicate blossom who can't drink\n" \ -"any claret under ninety-four, and who would as soon think of dining\n" \ -"off cat's meat as off plain roast mutton. You do come across these\n" \ -"poor wretches now and then, though, to the credit of humanity, they are\n" \ -"principally confined to that fearful and wonderful society known only\n" \ -"to lady novelists. I never hear of one of these creatures discussing a\n" \ -"_menu_ card but I feel a mad desire to drag him off to the bar of\n" \ -"some common east-end public-house and cram a sixpenny dinner down his\n" \ -"throat--beefsteak pudding, fourpence; potatoes, a penny; half a pint of\n" \ -"porter, a penny. The recollection of it (and the mingled fragrance of\n" \ -"beer, tobacco, and roast pork generally leaves a vivid impression) might\n" \ -"induce him to turn up his nose a little less frequently in the future\n" \ -"at everything that is put before him. Then there is that generous party,\n" \ -"the cadger's delight, who is so free with his small change, but who\n" \ -"never thinks of paying his debts. It might teach even him a little\n" \ -"common sense. \"I always give the waiter a shilling. One can't give the\n" \ -"fellow less, you know,\" explained a young government clerk with whom I\n" \ -"was lunching the other day in Regent Street. I agreed with him as to the\n" \ -"utter impossibility of making it elevenpence ha'penny; but at the same\n" \ -"time I resolved to one day decoy him to an eating-house I remembered\n" \ -"near Covent Garden, where the waiter, for the better discharge of his\n" \ -"duties, goes about in his shirt-sleeves--and very dirty sleeves they\n" \ -"are, too, when it gets near the end of the month. I know that waiter.\n" \ -"If my friend gives him anything beyond a penny, the man will insist on\n" \ -"shaking hands with him then and there as a mark of his esteem; of that I\n" \ -"feel sure.\n" \ -"\n" \ -"There have been a good many funny things said and written about\n" \ -"hardupishness, but the reality is not funny, for all that. It is not\n" \ -"funny to have to haggle over pennies. It isn't funny to be thought\n" \ -"mean and stingy. It isn't funny to be shabby and to be ashamed of your\n" \ -"address. No, there is nothing at all funny in poverty--to the poor. It\n" \ -"is hell upon earth to a sensitive man; and many a brave gentleman who\n" \ -"would have faced the labors of Hercules has had his heart broken by its\n" \ -"petty miseries.\n" \ -"\n" \ -"It is not the actual discomforts themselves that are hard to bear.\n" \ -"Who would mind roughing it a bit if that were all it meant? What cared\n" \ -"Robinson Crusoe for a patch on his trousers? Did he wear trousers? I\n" \ -"forget; or did he go about as he does in the pantomimes? What did it\n" \ -"matter to him if his toes did stick out of his boots? and what if\n" \ -"his umbrella was a cotton one, so long as it kept the rain off? His\n" \ -"shabbiness did not trouble him; there was none of his friends round\n" \ -"about to sneer him.\n" \ -"\n" \ -"Being poor is a mere trifle. It is being known to be poor that is the\n" \ -"sting. It is not cold that makes a man without a great-coat hurry along\n" \ -"so quickly. It is not all shame at telling lies--which he knows will\n" \ -"not be believed--that makes him turn so red when he informs you that\n" \ -"he considers great-coats unhealthy and never carries an umbrella on\n" \ -"principle. It is easy enough to say that poverty is no crime. No; if\n" \ -"it were men wouldn't be ashamed of it. It's a blunder, though, and is\n" \ -"punished as such. A poor man is despised the whole world over; despised\n" \ -"as much by a Christian as by a lord, as much by a demagogue as by a\n" \ -"footman, and not all the copy-book maxims ever set for ink stained youth\n" \ -"will make him respected. Appearances are everything, so far as human\n" \ -"opinion goes, and the man who will walk down Piccadilly arm in arm with\n" \ -"the most notorious scamp in London, provided he is a well-dressed one,\n" \ -"will slink up a back street to say a couple of words to a seedy-looking\n" \ -"gentleman. And the seedy-looking gentleman knows this--no one\n" \ -"better--and will go a mile round to avoid meeting an acquaintance. Those\n" \ -"that knew him in his prosperity need never trouble themselves to look\n" \ -"the other way. He is a thousand times more anxious that they should not\n" \ -"see him than they can be; and as to their assistance, there is nothing\n" \ -"he dreads more than the offer of it. All he wants is to be forgotten;\n" \ -"and in this respect he is generally fortunate enough to get what he\n" \ -"wants.\n" \ -"\n" \ -"One becomes used to being hard up, as one becomes used to everything\n" \ -"else, by the help of that wonderful old homeopathic doctor, Time. You\n" \ -"can tell at a glance the difference between the old hand and the novice;\n" \ -"between the case-hardened man who has been used to shift and struggle\n" \ -"for years and the poor devil of a beginner striving to hide his misery,\n" \ -"and in a constant agony of fear lest he should be found out. Nothing\n" \ -"shows this difference more clearly than the way in which each will pawn\n" \ -"his watch. As the poet says somewhere: \"True ease in pawning comes from\n" \ -"art, not chance.\" The one goes into his \"uncle's\" with as much composure\n" \ -"as he would into his tailor's--very likely with more. The assistant is\n" \ -"even civil and attends to him at once, to the great indignation of the\n" \ -"lady in the next box, who, however, sarcastically observes that she\n" \ -"don't mind being kept waiting \"if it is a regular customer.\" Why, from\n" \ -"the pleasant and businesslike manner in which the transaction is carried\n" \ -"out, it might be a large purchase in the three per cents. Yet what a\n" \ -"piece of work a man makes of his first \"pop.\" A boy popping his first\n" \ -"question is confidence itself compared with him. He hangs about outside\n" \ -"the shop until he has succeeded in attracting the attention of all the\n" \ -"loafers in the neighborhood and has aroused strong suspicions in the\n" \ -"mind of the policeman on the beat. At last, after a careful examination\n" \ -"of the contents of the windows, made for the purpose of impressing the\n" \ -"bystanders with the notion that he is going in to purchase a diamond\n" \ -"bracelet or some such trifle, he enters, trying to do so with a careless\n" \ -"swagger, and giving himself really the air of a member of the swell mob.\n" \ -"When inside he speaks in so low a voice as to be perfectly inaudible,\n" \ -"and has to say it all over again. When, in the course of his rambling\n" \ -"conversation about a \"friend\" of his, the word \"lend\" is reached, he is\n" \ -"promptly told to go up the court on the right and take the first door\n" \ -"round the corner. He comes out of the shop with a face that you could\n" \ -"easily light a cigarette at, and firmly under the impression that the\n" \ -"whole population of the district is watching him. When he does get\n" \ -"to the right place he has forgotten his name and address and is in a\n" \ -"general condition of hopeless imbecility. Asked in a severe tone how he\n" \ -"came by \"this,\" he stammers and contradicts himself, and it is only a\n" \ -"miracle if he does not confess to having stolen it that very day. He is\n" \ -"thereupon informed that they don't want anything to do with his sort,\n" \ -"and that he had better get out of this as quickly as possible, which he\n" \ -"does, recollecting nothing more until he finds himself three miles off,\n" \ -"without the slightest knowledge how he got there.\n" \ -"\n" \ -"By the way, how awkward it is, though, having to depend on public-houses\n" \ -"and churches for the time. The former are generally too fast and the\n" \ -"latter too slow. Besides which, your efforts to get a glimpse of\n" \ -"the public house clock from the outside are attended with great\n" \ -"difficulties. If you gently push the swing-door ajar and peer in you\n" \ -"draw upon yourself the contemptuous looks of the barmaid, who at once\n" \ -"puts you down in the same category with area sneaks and cadgers. You\n" \ -"also create a certain amount of agitation among the married portion of\n" \ -"the customers. You don't see the clock because it is behind the door;\n" \ -"and in trying to withdraw quietly you jam your head. The only other\n" \ -"method is to jump up and down outside the window. After this latter\n" \ -"proceeding, however, if you do not bring out a banjo and commence to\n" \ -"sing, the youthful inhabitants of the neighborhood, who have gathered\n" \ -"round in expectation, become disappointed.\n" \ -"\n" \ -"I should like to know, too, by what mysterious law of nature it is that\n" \ -"before you have left your watch \"to be repaired\" half an hour, some one\n" \ -"is sure to stop you in the street and conspicuously ask you the time.\n" \ -"Nobody even feels the slightest curiosity on the subject when you've got\n" \ -"it on.\n" \ -"\n" \ -"Dear old ladies and gentlemen who know nothing about being hard up--and\n" \ -"may they never, bless their gray old heads--look upon the pawn-shop\n" \ -"as the last stage of degradation; but those who know it better (and my\n" \ -"readers have no doubt, noticed this themselves) are often surprised,\n" \ -"like the little boy who dreamed he went to heaven, at meeting so many\n" \ -"people there that they never expected to see. For my part, I think it a\n" \ -"much more independent course than borrowing from friends, and I always\n" \ -"try to impress this upon those of my acquaintance who incline toward\n" \ -"\"wanting a couple of pounds till the day after to-morrow.\" But they\n" \ -"won't all see it. One of them once remarked that he objected to the\n" \ -"principle of the thing. I fancy if he had said it was the interest that\n" \ -"he objected to he would have been nearer the truth: twenty-five per\n" \ -"cent. certainly does come heavy.\n" \ -"\n" \ -"There are degrees in being hard up. We are all hard up, more or\n" \ -"less--most of us more. Some are hard up for a thousand pounds; some for\n" \ -"a shilling. Just at this moment I am hard up myself for a fiver. I only\n" \ -"want it for a day or two. I should be certain of paying it back within a\n" \ -"week at the outside, and if any lady or gentleman among my readers would\n" \ -"kindly lend it me, I should be very much obliged indeed. They could send\n" \ -"it to me under cover to Messrs. Field & Tuer, only, in such case, please\n" \ -"let the envelope be carefully sealed. I would give you my I.O.U. as\n" \ -"security.\n" - -static const char *s_data[N_STREAMS] = { - DATA_0, - DATA_1, - DATA_2, - DATA_3, -}; - -static size_t s_data_sz[N_STREAMS] = { - sizeof(DATA_0) - 1, - sizeof(DATA_1) - 1, - sizeof(DATA_2) - 1, - sizeof(DATA_3) - 1, -}; diff --git a/external/lsquic/tests/test_packno_len.c b/external/lsquic/tests/test_packno_len.c deleted file mode 100644 index 9292ba3..0000000 --- a/external/lsquic/tests/test_packno_len.c +++ /dev/null @@ -1,342 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_packet_common.h" -#include "lsquic_parse.h" - - -//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC -#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) - - -struct packno_bits_test { - int pbt_lineno; - /* Inputs: */ - lsquic_packno_t pbt_packno, - pbt_least_unacked; - uint64_t pbt_n_in_flight; - /* Output: */ - enum packno_bits pbt_packno_bits; -}; - - -static const struct packno_bits_test pb_tests[] = { - - { .pbt_lineno = __LINE__, - .pbt_packno = 1, - .pbt_least_unacked = 0, - .pbt_n_in_flight = 0, - .pbt_packno_bits = GQUIC_PACKNO_LEN_1, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = 101, - .pbt_least_unacked = 100, - .pbt_n_in_flight = 0, - .pbt_packno_bits = GQUIC_PACKNO_LEN_1, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = 10001, - .pbt_least_unacked = 10000, - .pbt_n_in_flight = 1 << 6, - .pbt_packno_bits = GQUIC_PACKNO_LEN_1, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = 10001, - .pbt_least_unacked = 10000, - .pbt_n_in_flight = (1 << 6) + 1, - .pbt_packno_bits = GQUIC_PACKNO_LEN_2, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = (1 << 16) + 1, - .pbt_least_unacked = 1 << 16, - .pbt_n_in_flight = 1 << 14, - .pbt_packno_bits = GQUIC_PACKNO_LEN_2, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = (1 << 16) + 1, - .pbt_least_unacked = 1 << 16, - .pbt_n_in_flight = (1 << 14) + 1, - .pbt_packno_bits = GQUIC_PACKNO_LEN_4, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = (1ULL << 33) + 1, - .pbt_least_unacked = 1ULL << 33, - .pbt_n_in_flight = 1ULL << 30, - .pbt_packno_bits = GQUIC_PACKNO_LEN_4, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = (1ULL << 33) + 1, - .pbt_least_unacked = 1ULL << 33, - .pbt_n_in_flight = (1ULL << 30) + 1, - .pbt_packno_bits = GQUIC_PACKNO_LEN_6, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = 100, - .pbt_least_unacked = 1, - .pbt_n_in_flight = 3, - .pbt_packno_bits = GQUIC_PACKNO_LEN_2, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = 100, - .pbt_least_unacked = 1, - .pbt_n_in_flight = 99, - .pbt_packno_bits = GQUIC_PACKNO_LEN_2, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = 1 + (1 << 6), - .pbt_least_unacked = 1, - .pbt_n_in_flight = 0, - .pbt_packno_bits = GQUIC_PACKNO_LEN_1, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = 1 + (1 << 6) + 1, - .pbt_least_unacked = 1, - .pbt_n_in_flight = 0, - .pbt_packno_bits = GQUIC_PACKNO_LEN_2, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = (1 << 20) + (1 << 14), - .pbt_least_unacked = 1 << 20, - .pbt_n_in_flight = 0, - .pbt_packno_bits = GQUIC_PACKNO_LEN_2, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = (1 << 20) + (1 << 14) + 1, - .pbt_least_unacked = 1 << 20, - .pbt_n_in_flight = 0, - .pbt_packno_bits = GQUIC_PACKNO_LEN_4, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = (1 << 20) + (1ULL << 30), - .pbt_least_unacked = 1 << 20, - .pbt_n_in_flight = 0, - .pbt_packno_bits = GQUIC_PACKNO_LEN_4, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = (1 << 20) + (1ULL << 30) + 1, - .pbt_least_unacked = 1 << 20, - .pbt_n_in_flight = 0, - .pbt_packno_bits = GQUIC_PACKNO_LEN_6, - }, - - /* Tests from Chrome: */ - { .pbt_lineno = __LINE__, - .pbt_packno = 65, - .pbt_least_unacked = 2, - .pbt_n_in_flight = 7, - .pbt_packno_bits = GQUIC_PACKNO_LEN_1, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = 64 * 256 - 1, - .pbt_least_unacked = 2, - .pbt_n_in_flight = 7, - .pbt_packno_bits = GQUIC_PACKNO_LEN_2, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = 64 * 256 * 256 - 1, - .pbt_least_unacked = 2, - .pbt_n_in_flight = 7, - .pbt_packno_bits = GQUIC_PACKNO_LEN_4, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = 64ULL * 256 * 256 * 256 * 256 - 1, - .pbt_least_unacked = 2, - .pbt_n_in_flight = 7, - .pbt_packno_bits = GQUIC_PACKNO_LEN_6, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = 2, - .pbt_least_unacked = 1, - .pbt_n_in_flight = 7, - .pbt_packno_bits = GQUIC_PACKNO_LEN_1, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = 2, - .pbt_least_unacked = 1, - .pbt_n_in_flight = 1896, - .pbt_packno_bits = GQUIC_PACKNO_LEN_2, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = 2, - .pbt_least_unacked = 1, - .pbt_n_in_flight = 48545, - .pbt_packno_bits = GQUIC_PACKNO_LEN_4, - }, - - { .pbt_lineno = __LINE__, - .pbt_packno = 2, - .pbt_least_unacked = 1, - .pbt_n_in_flight = 3181457256ULL, - .pbt_packno_bits = GQUIC_PACKNO_LEN_6, - }, - -}; - - -static void -run_pbt (int i) -{ - const struct packno_bits_test *const pbt = &pb_tests[i]; - enum packno_bits packno_bits = pf->pf_calc_packno_bits(pbt->pbt_packno, - pbt->pbt_least_unacked, pbt->pbt_n_in_flight); - assert(packno_bits == pbt->pbt_packno_bits); - unsigned packet_len = pf->pf_packno_bits2len(packno_bits); - /* Now see if we can restore it back: */ - lsquic_packno_t cur_packno = pbt->pbt_packno & - ((1ULL << (packet_len << 3)) - 1); - lsquic_packno_t orig_packno = lsquic_restore_packno(cur_packno, packet_len, - pbt->pbt_least_unacked); - assert(orig_packno == pbt->pbt_packno); -} - - -struct lsquic_restore_packno_test { - int rpt_lineno; - /* Input */ - enum packno_bits rpt_packno_bits; - lsquic_packno_t rpt_cur_packno; - lsquic_packno_t rpt_max_packno; - /* Output */ - lsquic_packno_t rpt_orig_packno; -}; - -static const struct lsquic_restore_packno_test rp_tests[] = -{ - - { .rpt_lineno = __LINE__, - .rpt_max_packno = 0, - .rpt_cur_packno = 1, - .rpt_packno_bits = GQUIC_PACKNO_LEN_1, - .rpt_orig_packno = 1, - }, - -}; - - -static void -run_rpt (int i) -{ - const struct lsquic_restore_packno_test *const rpt = &rp_tests[i]; - unsigned packet_len = pf->pf_packno_bits2len(rpt->rpt_packno_bits); - lsquic_packno_t orig_packno = lsquic_restore_packno(rpt->rpt_cur_packno, - packet_len, rpt->rpt_max_packno); - assert(orig_packno == rpt->rpt_orig_packno); -} - - -static void -test_restore (enum packno_bits bits) -{ - unsigned len, n; - enum { OP_PLUS, OP_MINUS, N_OPS } op; - uint64_t epoch, epoch_delta; - lsquic_packno_t orig_packno, cur_packno, restored_packno; - -#ifdef WIN32 - orig_packno = 0; -#endif - len = pf->pf_packno_bits2len(bits); - epoch_delta = 1ULL << (len << 3); - epoch = epoch_delta * 11 /* Just some number */; - - /* Test current epoch: */ - for (op = 0; op < N_OPS; ++op) - for (n = 0; n < 5; ++n) - { - /* Test at the ends of the epoch */ - if (op == OP_MINUS) - orig_packno = epoch - epoch_delta / 2 + n; - else if (op == OP_PLUS) - orig_packno = epoch + epoch_delta / 2 - n - 1; - else - assert(0); - cur_packno = orig_packno & (epoch_delta - 1); - restored_packno = lsquic_restore_packno(cur_packno, len, epoch); - assert(orig_packno == restored_packno); - /* Test in the middle of the epoch */ - if (op == OP_MINUS) - orig_packno = epoch - n; - else - orig_packno = epoch + n; - cur_packno = orig_packno & (epoch_delta - 1); - restored_packno = lsquic_restore_packno(cur_packno, len, epoch); - assert(orig_packno == restored_packno); - } - - /* Test previous epoch (max is to the left) */ - for (n = 0; n < 5; ++n) - { - /* Test at the end of the epoch */ - orig_packno = epoch + epoch_delta / 2 - n - 1; - cur_packno = orig_packno & (epoch_delta - 1); - restored_packno = lsquic_restore_packno(cur_packno, len, epoch - epoch_delta * 3 / 4); - assert(orig_packno == restored_packno + epoch_delta); - /* Test in the middle of the epoch */ - orig_packno = epoch + 2 - n; - cur_packno = orig_packno & (epoch_delta - 1); - restored_packno = lsquic_restore_packno(cur_packno, len, epoch - epoch_delta * 3 / 4); - assert(orig_packno == restored_packno + epoch_delta); - } - - /* Test previous epoch (max is to the right) */ - for (n = 0; n < 5; ++n) - { - /* Test at the end of the epoch */ - orig_packno = epoch - epoch_delta / 2 + n; - cur_packno = orig_packno & (epoch_delta - 1); - restored_packno = lsquic_restore_packno(cur_packno, len, epoch + epoch_delta * 3 / 4); - assert(orig_packno == restored_packno - epoch_delta); - /* Test in the middle of the epoch */ - orig_packno = epoch + 2 - n; - cur_packno = orig_packno & (epoch_delta - 1); - restored_packno = lsquic_restore_packno(cur_packno, len, epoch + epoch_delta * 3 / 4); - assert(orig_packno == restored_packno - epoch_delta); - } - -} - - -int -main (void) -{ - unsigned i; - for (i = 0; i < sizeof(pb_tests) / sizeof(pb_tests[0]); ++i) - run_pbt(i); - for (i = 0; i < sizeof(rp_tests) / sizeof(rp_tests[0]); ++i) - run_rpt(i); - test_restore(GQUIC_PACKNO_LEN_1); - test_restore(GQUIC_PACKNO_LEN_2); - test_restore(GQUIC_PACKNO_LEN_4); - test_restore(GQUIC_PACKNO_LEN_6); - return 0; -} diff --git a/external/lsquic/tests/test_parse_packet_in.c b/external/lsquic/tests/test_parse_packet_in.c deleted file mode 100644 index 66ab198..0000000 --- a/external/lsquic/tests/test_parse_packet_in.c +++ /dev/null @@ -1,513 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include - -#include "lsquic.h" -#include "lsquic_mm.h" -#include "lsquic_types.h" -#include "lsquic_int_types.h" -#include "lsquic_packet_common.h" -#include "lsquic_parse.h" -#include "lsquic_parse_common.h" -#include "lsquic_packet_in.h" -#include "lsquic_engine_public.h" -#include "lsquic_version.h" - - -struct parse_packet_in_test -{ - int ppit_lineno; - /* Input */ - unsigned char ppit_buf[0x100]; - unsigned ppit_bufsz; - int ppit_is_server; - enum lsquic_version ppit_version; - /* Output */ - int ppit_retval; - int ppit_pi_flags; - uint64_t ppit_conn_id; - lsquic_packno_t ppit_packno; - unsigned short ppit_header_sz; - unsigned short ppit_data_sz; - unsigned char ppit_quic_ver; - unsigned char ppit_nonce; -}; - - -static const struct parse_packet_in_test tests[] = { - /* - * BIG-ENDIAN TESTS: - */ - { .ppit_lineno = __LINE__, - .ppit_buf = { - /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION| - PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, - /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, - /* Version: */ 'Q', '0', '4', '3', - /* Packet #: */ 0x73, - /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', - }, - .ppit_bufsz = 1 + 8 + 4 + 1 + 7, - .ppit_is_server = 1, - .ppit_version = LSQVER_043, - .ppit_retval = 0, - .ppit_pi_flags = PI_CONN_ID, - .ppit_conn_id = 0x5500000000000000, - .ppit_packno = 0x73, - .ppit_header_sz = 1 + 8 + 4 + 1, - .ppit_data_sz = 1 + 8 + 4 + 1 + 7, - .ppit_quic_ver = 1 + 8, - .ppit_nonce = 0, - }, - - { .ppit_lineno = __LINE__, - .ppit_buf = { - /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION| - 0x10 /* 2-byte packet number */| - PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, - /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, - /* Version: */ 'Q', '0', '4', '3', - /* Packet #: */ 0x73, 0x64, - /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', - }, - .ppit_bufsz = 1 + 8 + 4 + 2 + 7, - .ppit_is_server = 1, - .ppit_version = LSQVER_043, - .ppit_retval = 0, - .ppit_pi_flags = PI_CONN_ID, - .ppit_conn_id = 0x5500000000000000, - .ppit_packno = 0x7364, - .ppit_header_sz = 1 + 8 + 4 + 2, - .ppit_data_sz = 1 + 8 + 4 + 2 + 7, - .ppit_quic_ver = 1 + 8, - .ppit_nonce = 0, - }, - - { .ppit_lineno = __LINE__, - .ppit_buf = { - /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION| - 0x20 /* 4-byte packet number */| - PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, - /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, - /* Version: */ 'Q', '0', '4', '3', - /* Packet #: */ 0x73, 0x64, 0x55, 0x46, - /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', - }, - .ppit_bufsz = 1 + 8 + 4 + 4 + 7, - .ppit_is_server = 1, - .ppit_version = LSQVER_043, - .ppit_retval = 0, - .ppit_pi_flags = PI_CONN_ID, - .ppit_conn_id = 0x5500000000000000, - .ppit_packno = 0x73645546, - .ppit_header_sz = 1 + 8 + 4 + 4, - .ppit_data_sz = 1 + 8 + 4 + 4 + 7, - .ppit_quic_ver = 1 + 8, - .ppit_nonce = 0, - }, - - { .ppit_lineno = __LINE__, - .ppit_buf = { - /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION| - 0x30 /* 6-byte packet number */| - PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, - /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, - /* Version: */ 'Q', '0', '4', '3', - /* Packet #: */ 0x73, 0x64, 0x55, 0x46, 0x37, 0x28, - /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', - }, - .ppit_bufsz = 1 + 8 + 4 + 6 + 7, - .ppit_is_server = 1, - .ppit_version = LSQVER_043, - .ppit_retval = 0, - .ppit_pi_flags = PI_CONN_ID, - .ppit_conn_id = 0x5500000000000000, - .ppit_packno = 0x736455463728, - .ppit_header_sz = 1 + 8 + 4 + 6, - .ppit_data_sz = 1 + 8 + 4 + 6 + 7, - .ppit_quic_ver = 1 + 8, - .ppit_nonce = 0, - }, - - { .ppit_lineno = __LINE__, /* Same as above minus connection ID */ - .ppit_buf = { - /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION, - /* Version: */ 'Q', '0', '4', '3', - /* Packet #: */ 0x73, - /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', - }, - .ppit_bufsz = 1 + 0 + 4 + 1 + 7, - .ppit_is_server = 1, - .ppit_version = LSQVER_043, - .ppit_retval = 0, - .ppit_pi_flags = 0, - .ppit_conn_id = 0, - .ppit_packno = 0x73, - .ppit_header_sz = 1 + 0 + 4 + 1, - .ppit_data_sz = 1 + 0 + 4 + 1 + 7, - .ppit_quic_ver = 1 + 0, - .ppit_nonce = 0, - }, - - { .ppit_lineno = __LINE__, /* Same as above minus version */ - .ppit_buf = { - /* Flags: */ 0, - /* Packet #: */ 0x73, - /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', - }, - .ppit_bufsz = 1 + 0 + 0 + 1 + 7, - .ppit_is_server = 1, - .ppit_version = LSQVER_043, - .ppit_retval = 0, - .ppit_pi_flags = 0, - .ppit_conn_id = 0, - .ppit_packno = 0x73, - .ppit_header_sz = 1 + 0 + 0 + 1, - .ppit_data_sz = 1 + 0 + 0 + 1 + 7, - .ppit_quic_ver = 0, - .ppit_nonce = 0, - }, - - { .ppit_lineno = __LINE__, - .ppit_buf = { - /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION| - PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, - /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, - /* Version: */ 'Q', '0', '4', '3', - /* Packet #: */ 0x73, - /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', - }, - .ppit_bufsz = 1 + 8 + 4, - .ppit_is_server = 1, - .ppit_version = LSQVER_043, - .ppit_retval = -1, - }, - - { .ppit_lineno = __LINE__, - .ppit_buf = { - /* Flags: */ PACKET_PUBLIC_FLAGS_NONCE| - 0x10 /* 2-byte packet number */| - PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, - /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, - /* Nonce: */ 000, 001, 002, 003, 004, 005, 006, 007, - 010, 011, 012, 013, 014, 015, 016, 017, - 020, 021, 022, 023, 024, 025, 026, 027, - 030, 031, 032, 033, 034, 035, 036, 037, - /* Packet #: */ 0x73, 0x64, - /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', - }, - .ppit_bufsz = 1 + 8 + 32+ 2 + 7, - .ppit_is_server = 0, - .ppit_version = LSQVER_043, - .ppit_retval = 0, - .ppit_pi_flags = PI_CONN_ID, - .ppit_conn_id = 0x5500000000000000, - .ppit_packno = 0x7364, - .ppit_header_sz = 1 + 8 + 32+ 2, - .ppit_data_sz = 1 + 8 + 32+ 2 + 7, - .ppit_quic_ver = 0, - .ppit_nonce = 1 + 8, - }, - - { .ppit_lineno = __LINE__, - .ppit_buf = { - /* Flags: */ PACKET_PUBLIC_FLAGS_NONCE| - PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, - /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, - /* Nonce: */ 000, 001, 002, 003, 004, 005, 006, 007, - 010, 011, 012, 013, 014, 015, 016, 017, - 020, 021, 022, 023, 024, 025, 026, 027, - 030, 031, 032, 033, 034, 035, 036, 037, - /* Packet #: */ 0x73, - /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', - }, - .ppit_bufsz = 1 + 8 + 32+ 1 + 7, - .ppit_is_server = 0, - .ppit_version = LSQVER_043, - .ppit_retval = 0, - .ppit_pi_flags = PI_CONN_ID, - .ppit_conn_id = 0x5500000000000000, - .ppit_packno = 0x73, - .ppit_header_sz = 1 + 8 + 32+ 1, - .ppit_data_sz = 1 + 8 + 32+ 1 + 7, - .ppit_quic_ver = 0, - .ppit_nonce = 1 + 8, - }, - - { .ppit_lineno = __LINE__, - .ppit_buf = { - /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION| - 0x20 /* 4-byte packet number */| - PACKET_PUBLIC_FLAGS_NONCE| /* Nonce flag is ignored by server */ - PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, - /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, - /* Version: */ 'Q', '0', '4', '3', - /* Packet #: */ 0x73, 0x64, 0x55, 0x46, - /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', - }, - .ppit_bufsz = 1 + 8 + 4 + 4 + 7, - .ppit_is_server = 1, - .ppit_version = LSQVER_043, - .ppit_retval = 0, - .ppit_pi_flags = PI_CONN_ID, - .ppit_conn_id = 0x5500000000000000, - .ppit_packno = 0x73645546, - .ppit_header_sz = 1 + 8 + 4 + 4, - .ppit_data_sz = 1 + 8 + 4 + 4 + 7, - .ppit_quic_ver = 1 + 8, - .ppit_nonce = 0, - }, - - { .ppit_lineno = __LINE__, - .ppit_buf = { - /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION| - PACKET_PUBLIC_FLAGS_NONCE| /* Nonce flag is ignored by server */ - PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, - /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, - /* Version: */ 'Q', '0', '4', '3', - /* Packet #: */ 0x73, - /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', - }, - .ppit_bufsz = 1 + 8 + 4 + 1 + 7, - .ppit_is_server = 1, - .ppit_version = LSQVER_043, - .ppit_retval = 0, - .ppit_pi_flags = PI_CONN_ID, - .ppit_conn_id = 0x5500000000000000, - .ppit_packno = 0x73, - .ppit_header_sz = 1 + 8 + 4 + 1, - .ppit_data_sz = 1 + 8 + 4 + 1 + 7, - .ppit_quic_ver = 1 + 8, - .ppit_nonce = 0, - }, - - { .ppit_lineno = __LINE__, - .ppit_buf = { - /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION| - 0x30 /* 6-byte packet number */| - PACKET_PUBLIC_FLAGS_NONCE| /* Nonce flag is ignored by server */ - PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, - /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, - /* Version: */ 'Q', '0', '4', '3', - /* Packet #: */ 0x73, 0x64, 0x55, 0x46, 0x37, 0x28, - /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', - }, - .ppit_bufsz = 1 + 8 + 4 + 6 + 7, - .ppit_is_server = 1, - .ppit_version = LSQVER_043, - .ppit_retval = 0, - .ppit_pi_flags = PI_CONN_ID, - .ppit_conn_id = 0x5500000000000000, - .ppit_packno = 0x736455463728, - .ppit_header_sz = 1 + 8 + 4 + 6, - .ppit_data_sz = 1 + 8 + 4 + 6 + 7, - .ppit_quic_ver = 1 + 8, - .ppit_nonce = 0, - }, - - { .ppit_lineno = __LINE__, - .ppit_buf = { - /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION| - PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, - /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, - /* Versions: */ 'Q', '0', '4', '0', - 'Q', '0', '4', '3', - }, - .ppit_bufsz = 1 + 8 + 8, - .ppit_is_server = 0, - .ppit_version = LSQVER_043, - .ppit_retval = 0, - .ppit_pi_flags = PI_CONN_ID, - .ppit_conn_id = 0x5500000000000000, - .ppit_packno = 0, - .ppit_header_sz = 1 + 8 + 8, - .ppit_data_sz = 1 + 8 + 8, - .ppit_quic_ver = 1 + 8, - .ppit_nonce = 0, - }, - - { .ppit_lineno = __LINE__, - .ppit_buf = { - /* Flags: */ 0x40, - /* CID: */ 0x01, 0x02, 0x03, 0x04, 0x50, 0x60, 0x70, 0x80, - /* Packet number: */0x9B, - /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', - }, - .ppit_version = LSQVER_046, - .ppit_retval = 0, - .ppit_is_server = 1, - .ppit_pi_flags = PI_CONN_ID, - .ppit_conn_id = 0x8070605004030201, - .ppit_packno = 0x9B, - .ppit_header_sz = 1 + 8 + 1, - .ppit_data_sz = 1 + 8 + 1 + 7, - .ppit_bufsz = 1 + 8 + 1 + 7, - .ppit_quic_ver = 0, - .ppit_nonce = 0, - }, - - { .ppit_lineno = __LINE__, - .ppit_buf = { - /* Flags: */ 0x43, - /* CID: */ 0x01, 0x02, 0x03, 0x04, 0x50, 0x60, 0x70, 0x80, - /* Packet number: */0x9B, 0x03, 0x02, 0x01, - /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', - }, - .ppit_version = LSQVER_046, - .ppit_retval = 0, - .ppit_packno = 0x9B030201, - .ppit_is_server = 1, - .ppit_header_sz = 1 + 8 + 4, - .ppit_bufsz = 1 + 8 + 4 + 7, - .ppit_data_sz = 1 + 8 + 4 + 7, - .ppit_pi_flags = PI_CONN_ID, - .ppit_conn_id = 0x8070605004030201, - .ppit_quic_ver = 0, - .ppit_nonce = 0, - }, - - /* TODO: check invalid type in finish() -- convert the latter to return - * status instead of being void function. - */ -#if 0 - { .ppit_lineno = __LINE__, - .ppit_buf = { - /* Flags: */ 0x30 - | 0x3 /* <--- Invalid type */, - /* CID: */ 0x01, 0x02, 0x03, 0x04, 0x50, 0x60, 0x70, 0x80, - /* Packet number: */0x9B, - /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', - }, - .ppit_bufsz = 1 + 8 + 1 + 7, - .ppit_is_server = 1, - .ppit_version = LSQVER_044, - .ppit_retval = -1, - }, -#endif - - { .ppit_lineno = __LINE__, - .ppit_buf = { - /* Type: */ 0x83 /* Initial */, - /* Version: */ 'Q', '0', '4', '6', - /* DCIL/SCIL: */ 0x5 /* DCIL */ << 4 | 0x0 /* SCIL */, - /* CID: */ 0x01, 0x02, 0x03, 0x04, 0x50, 0x60, 0x70, 0x80, - /* Packet number: */0x21, 0x22, 0x23, 0x34, - /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', - }, - .ppit_bufsz = 1 + 4 + 1 + 8 + 4 + 7, - .ppit_is_server = 1, - .ppit_version = LSQVER_046, - .ppit_retval = 0, - .ppit_pi_flags = PI_CONN_ID, - .ppit_conn_id = 0x8070605004030201, - .ppit_packno = 0x21222334, - .ppit_header_sz = 1 + 4 + 1 + 8 + 4, - .ppit_data_sz = 1 + 4 + 1 + 8 + 4 + 7, - .ppit_quic_ver = 1, - .ppit_nonce = 0, - }, - -}; - - -static void -run_ppi_test (struct lsquic_mm *mm, const struct parse_packet_in_test *ppit) -{ - int s; - lsquic_packet_in_t *packet_in; - struct packin_parse_state ppstate; - - packet_in = lsquic_mm_get_packet_in(mm); - packet_in->pi_data = lsquic_mm_get_packet_in_buf(mm, 1370); - packet_in->pi_flags |= PI_OWN_DATA; - memcpy(packet_in->pi_data, ppit->ppit_buf, ppit->ppit_bufsz); - - /* Server should be able to differentiate different header formats - * because it expect the connection ID to be there, while the client - * needs help. - */ - if (ppit->ppit_is_server && - /* In addition, some tests verify parsing of GQUIC packets in - * server mode where there is no connection ID. This is for - * completeness and does not represent a real-life scenario, - * as the server will always require the client to send the - * connection ID. - */ - !(!(ppit->ppit_pi_flags & PI_CONN_ID) - && ppit->ppit_version < LSQVER_046)) - s = lsquic_parse_packet_in_server_begin(packet_in, ppit->ppit_bufsz, - ppit->ppit_is_server, 8, &ppstate); - else - if (ppit->ppit_version < LSQVER_046) - s = lsquic_gquic_parse_packet_in_begin(packet_in, ppit->ppit_bufsz, - ppit->ppit_is_server, -1 /* GQUIC does not use it */, &ppstate); - else if (ppit->ppit_version == LSQVER_046) - s = lsquic_Q046_parse_packet_in_begin(packet_in, ppit->ppit_bufsz, - ppit->ppit_is_server, 8, &ppstate); - else - s = lsquic_ietf_v1_parse_packet_in_begin(packet_in, ppit->ppit_bufsz, - ppit->ppit_is_server, 8, &ppstate); - - assert(s == ppit->ppit_retval); - if (0 == s) - { - const struct parse_funcs *pf; - if (ppit->ppit_quic_ver && ppit->ppit_is_server /* Server packets - with version are version negotiation packets. */) - { - uint32_t tag; - enum lsquic_version ver; - assert(packet_in->pi_quic_ver); - memcpy(&tag, packet_in->pi_data + packet_in->pi_quic_ver, 4); - ver = lsquic_tag2ver(tag); - assert((enum lsquic_version) -1 != ver); - assert(ver == ppit->ppit_version); - } - pf = select_pf_by_ver(ppit->ppit_version); - pf->pf_parse_packet_in_finish(packet_in, &ppstate); - } - - if (0 == s) - { - if (ppit->ppit_conn_id) - { - lsquic_cid_t cid; - memset(&cid, 0, sizeof(cid)); - cid.len = sizeof(ppit->ppit_conn_id);; - memcpy(cid.idbuf, &ppit->ppit_conn_id, sizeof(ppit->ppit_conn_id)); - assert(LSQUIC_CIDS_EQ(&packet_in->pi_conn_id, &cid)); - } - - assert((packet_in->pi_flags & PI_CONN_ID) == (ppit->ppit_pi_flags & PI_CONN_ID)); - assert(packet_in->pi_packno == ppit->ppit_packno); - assert(packet_in->pi_header_sz == ppit->ppit_header_sz); - assert(packet_in->pi_data_sz == ppit->ppit_data_sz); - assert(packet_in->pi_quic_ver == ppit->ppit_quic_ver); - assert(packet_in->pi_nonce == ppit->ppit_nonce); - if (ppit->ppit_nonce) - assert(lsquic_packet_in_nonce(packet_in)); - else - assert(!lsquic_packet_in_nonce(packet_in)); - } - - lsquic_mm_put_packet_in(mm, packet_in); -} - - -int -main (void) -{ - struct lsquic_mm mm; - unsigned i; - - lsquic_mm_init(&mm); - - for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) - run_ppi_test(&mm, &tests[i]); - - lsquic_mm_cleanup(&mm); - return 0; -} diff --git a/external/lsquic/tests/test_purga.c b/external/lsquic/tests/test_purga.c deleted file mode 100644 index 80faab6..0000000 --- a/external/lsquic/tests/test_purga.c +++ /dev/null @@ -1,182 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#ifndef WIN32 -#include -#else -#include "getopt.h" -#endif - -#include - -#include "lsquic.h" -#include "lsquic_int_types.h" -#include "lsquic_logger.h" -#include "lsquic_purga.h" - -#define MIN_CID_LEN 4 - -static int s_eight; - -static void -bloom_test (unsigned count, unsigned miss_searches, unsigned hit_searches) -{ -#ifndef NDEBUG - struct purga_bloom_stats *stats; -#endif - struct lsquic_purga *purga; - struct purga_el *puel; - lsquic_cid_t *cids, cid; - unsigned i, j; - - cids = malloc(count * sizeof(cids[0])); - assert(cids); - - for (i = 0; i < count; ++i) - { - cids[i].len = s_eight ? 8 : MIN_CID_LEN + rand() % (MAX_CID_LEN - MIN_CID_LEN); - RAND_bytes(cids[i].idbuf, cids[i].len); - } - - purga = lsquic_purga_new(~0, NULL, NULL); - - /* Add CIDs */ - for (i = 0; i < count; ++i) - lsquic_purga_add(purga, &cids[i], NULL, 0, 0); - - /* Check that they are all there */ - for (i = 0; i < count; ++i) - { - puel = lsquic_purga_contains(purga, &cids[i]); - assert(puel); - } - - /* Run hit searches */ - for (i = 0; i < hit_searches; ++i) - { - j = rand() % count; - puel = lsquic_purga_contains(purga, &cids[j]); - assert(puel); - } - - /* Generate random CIDs and check that they are not found: */ - for (i = 0; i < miss_searches; ++i) - { - cid.len = s_eight ? 8 : MIN_CID_LEN + rand() % (MAX_CID_LEN - MIN_CID_LEN); - RAND_bytes(cid.idbuf, cid.len); - puel = lsquic_purga_contains(purga, &cid); - if (puel) - { - for (j = 0; j < count; ++j) - if (LSQUIC_CIDS_EQ(&cids[j], &cid)) - break; - assert(j < count); - } - } - -#ifndef NDEBUG - stats = lsquic_purga_get_bloom_stats(purga); - LSQ_NOTICE("searches: %lu, false hits: %lu, false hit ratio: %lf", - stats->searches, stats->false_hits, - (double) stats->false_hits / (double) stats->searches); -#endif - - lsquic_purga_destroy(purga); - free(cids); -} - - -int -main (int argc, char **argv) -{ - int opt; - unsigned i, per_page, bloom_ins = 0, bloom_miss_sea = 0, bloom_hit_sea = 0; - lsquic_cid_t cid; - struct lsquic_purga *purga; - struct purga_el *puel; - - while (-1 != (opt = getopt(argc, argv, "b:h:l:s:v8"))) - { - switch (opt) - { - case '8': - s_eight = 1; - break; - case 'b': - bloom_ins = atoi(optarg); - break; - case 's': - bloom_miss_sea = atoi(optarg); - break; - case 'h': - bloom_hit_sea = atoi(optarg); - break; - case 'l': - lsquic_log_to_fstream(stderr, LLTS_NONE); - lsquic_logger_lopt(optarg); - break; - case 'v': - lsquic_log_to_fstream(stderr, LLTS_NONE); - lsquic_logger_lopt("purga=debug"); - break; - default: - exit(EXIT_FAILURE); - } - } - - if (bloom_ins) - { - LSQ_NOTICE("bloom test: will insert %u and search for %u missing " - "and %u extant CIDs", bloom_ins, bloom_miss_sea, bloom_hit_sea); - bloom_test(bloom_ins, bloom_miss_sea, bloom_hit_sea); - exit(EXIT_SUCCESS); - } - - per_page = lsquic_purga_cids_per_page(); - purga = lsquic_purga_new(10, NULL, NULL); - assert(purga); - - cid.len = 3; - for (i = 0; i < per_page; ++i) - { - cid.idbuf[0] = i >> 16; - cid.idbuf[1] = i >> 8; - cid.idbuf[2] = i; - puel = lsquic_purga_add(purga, &cid, NULL, PUTY_CONN_DELETED, 20); - assert(puel); - puel->puel_time = ~i; - } - - for (i = 0; i < per_page; ++i) - { - cid.idbuf[0] = i >> 16; - cid.idbuf[1] = i >> 8; - cid.idbuf[2] = i; - puel = lsquic_purga_contains(purga, &cid); - assert(puel && PUTY_CONN_DELETED == puel->puel_type); - assert(~i == puel->puel_time); - } - - ++cid.idbuf[1]; - lsquic_purga_add(purga, &cid, NULL, PUTY_CONN_DELETED, 31); - - for (i = 0; i < per_page; ++i) - { - cid.idbuf[0] = i >> 16; - cid.idbuf[1] = i >> 8; - cid.idbuf[2] = i; - puel = lsquic_purga_contains(purga, &cid); - assert(!puel); - } - - ++cid.idbuf[1]; - puel = lsquic_purga_contains(purga, &cid); - assert(puel && PUTY_CONN_DELETED == puel->puel_type); - - lsquic_purga_destroy(purga); - - bloom_test(20000, 200000, 2000); - - exit(EXIT_SUCCESS); -} diff --git a/external/lsquic/tests/test_qlog.c b/external/lsquic/tests/test_qlog.c deleted file mode 100644 index fc8f40f..0000000 --- a/external/lsquic/tests/test_qlog.c +++ /dev/null @@ -1,58 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include - -#include "lsquic.h" -#include "lsquic_int_types.h" -#include "lsquic_hash.h" -#include "lsquic_conn.h" - -#include "lsquic_qlog.h" - -#define LSQUIC_LOGGER_MODULE LSQLM_NOMODULE -#include "lsquic_logger.h" - - -int -main (void) -{ - lsquic_global_init(LSQUIC_GLOBAL_CLIENT | LSQUIC_GLOBAL_CLIENT); - lsquic_log_to_fstream(stderr, LLTS_HHMMSSMS); - lsquic_set_log_level("debug"); - - lsquic_qlog_create_connection(0, NULL, NULL); - struct in_addr local_addr = {.s_addr = htonl(0x0a000001),}; - struct sockaddr_in local = - { - .sin_family = AF_INET, - .sin_port = htons(12345), - .sin_addr = local_addr, - }; - struct in_addr peer_addr = {.s_addr = htonl(0x0a000002),}; - struct sockaddr_in peer = - { - .sin_family = AF_INET, - .sin_port = htons(443), - .sin_addr = peer_addr, - }; - lsquic_cid_t cid; memset(&cid, 0, sizeof(cid)); - lsquic_qlog_create_connection(&cid, (const struct sockaddr *)&local, - (const struct sockaddr *)&peer); - - lsquic_qlog_packet_rx(&cid, NULL, NULL, 0); - lsquic_qlog_hsk_completed(&cid); - lsquic_qlog_sess_resume(&cid); - lsquic_qlog_check_certs(&cid, NULL, 0); - - lsquic_qlog_version_negotiation(&cid, NULL, NULL); - lsquic_qlog_version_negotiation(&cid, "proposed", NULL); - lsquic_qlog_version_negotiation(&cid, "proposed", "Q035"); - lsquic_qlog_version_negotiation(&cid, "proposed", "Q046"); - lsquic_qlog_version_negotiation(&cid, "agreed", "Q044"); - lsquic_qlog_version_negotiation(&cid, "agreed", "Q098"); - lsquic_qlog_version_negotiation(&cid, "something else", "Q098"); - return 0; -} diff --git a/external/lsquic/tests/test_quic_be_floats.c b/external/lsquic/tests/test_quic_be_floats.c deleted file mode 100644 index 209b205..0000000 --- a/external/lsquic/tests/test_quic_be_floats.c +++ /dev/null @@ -1,170 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_parse.h" - - -//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC -#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) - -struct float_test { - uint64_t long_time; - uint8_t float_time[2]; -}; - -static const struct float_test to_float_tests[] = { - /* Small numbers represent themselves. */ - { 0, { 0x00, 0x00, }, }, - { 1, { 0x00, 0x01, }, }, - { 2, { 0x00, 0x02, }, }, - { 3, { 0x00, 0x03, }, }, - { 4, { 0x00, 0x04, }, }, - { 5, { 0x00, 0x05, }, }, - { 6, { 0x00, 0x06, }, }, - { 7, { 0x00, 0x07, }, }, - { 15, { 0x00, 0x0F, }, }, - { 31, { 0x00, 0x1F, }, }, - { 42, { 0x00, 0x2A, }, }, - { 123, { 0x00, 0x7B, }, }, - { 1234, { 0x04, 0xD2, }, }, - /* Check transition through 2^11. */ - { 2046, { 0x07, 0xFE, }, }, - { 2047, { 0x07, 0xFF, }, }, - { 2048, { 0x08, 0x00, }, }, - { 2049, { 0x08, 0x01, }, }, - /* Running out of mantissa at 2^12. */ - { 4094, { 0x0F, 0xFE, }, }, - { 4095, { 0x0F, 0xFF, }, }, - { 4096, { 0x10, 0x00, }, }, - { 4097, { 0x10, 0x00, }, }, - { 4098, { 0x10, 0x01, }, }, - { 4099, { 0x10, 0x01, }, }, - { 4100, { 0x10, 0x02, }, }, - { 4101, { 0x10, 0x02, }, }, - /* Check transition through 2^13. */ - { 8190, { 0x17, 0xFF, }, }, - { 8191, { 0x17, 0xFF, }, }, - { 8192, { 0x18, 0x00, }, }, - { 8193, { 0x18, 0x00, }, }, - { 8194, { 0x18, 0x00, }, }, - { 8195, { 0x18, 0x00, }, }, - { 8196, { 0x18, 0x01, }, }, - { 8197, { 0x18, 0x01, }, }, - /* Half-way through the exponents. */ - { 0x7FF8000, { 0x87, 0xFF, }, }, - { 0x7FFFFFF, { 0x87, 0xFF, }, }, - { 0x8000000, { 0x88, 0x00, }, }, - { 0xFFF0000, { 0x8F, 0xFF, }, }, - { 0xFFFFFFF, { 0x8F, 0xFF, }, }, - { 0x10000000, { 0x90, 0x00, }, }, - /* Transition into the largest exponent. */ - { 0x1FFFFFFFFFE, { 0xF7, 0xFF, }, }, - { 0x1FFFFFFFFFF, { 0xF7, 0xFF, }, }, - { 0x20000000000, { 0xF8, 0x00, }, }, - { 0x20000000001, { 0xF8, 0x00, }, }, - { 0x2003FFFFFFE, { 0xF8, 0x00, }, }, - { 0x2003FFFFFFF, { 0xF8, 0x00, }, }, - { 0x20040000000, { 0xF8, 0x01, }, }, - { 0x20040000001, { 0xF8, 0x01, }, }, - /* Transition into the max value and clamping. */ - { 0x3FF80000000, { 0xFF, 0xFE, }, }, - { 0x3FFBFFFFFFF, { 0xFF, 0xFE, }, }, - { 0x3FFC0000000, { 0xFF, 0xFF, }, }, - { 0x3FFC0000001, { 0xFF, 0xFF, }, }, - { 0x3FFFFFFFFFF, { 0xFF, 0xFF, }, }, - { 0x40000000000, { 0xFF, 0xFF, }, }, - { 0xFFFFFFFFFFFFFFFF, { 0xFF, 0xFF, }, }, -}; - - -static void -run_to_float_tests (void) -{ - const struct float_test *test; - const struct float_test *const test_end = - &to_float_tests[ sizeof(to_float_tests) / sizeof(to_float_tests[0]) ]; - for (test = to_float_tests; test < test_end; ++test) - { - char out[2]; - pf->pf_write_float_time16(test->long_time, out); - assert(("Convertion to QUIC float format is successful", - 0 == memcmp(out, test->float_time, 2))); - } -} - - -static const struct float_test from_float_tests[] = { - /* Small numbers represent themselves. */ - { 0, { 0x00, 0x00, }, }, - { 1, { 0x00, 0x01, }, }, - { 2, { 0x00, 0x02, }, }, - { 3, { 0x00, 0x03, }, }, - { 4, { 0x00, 0x04, }, }, - { 5, { 0x00, 0x05, }, }, - { 6, { 0x00, 0x06, }, }, - { 7, { 0x00, 0x07, }, }, - { 15, { 0x00, 0x0F, }, }, - { 31, { 0x00, 0x1F, }, }, - { 42, { 0x00, 0x2A, }, }, - { 123, { 0x00, 0x7B, }, }, - { 1234, { 0x04, 0xD2, }, }, - /* Check transition through 2^11. */ - { 2046, { 0x07, 0xFE, }, }, - { 2047, { 0x07, 0xFF, }, }, - { 2048, { 0x08, 0x00, }, }, - { 2049, { 0x08, 0x01, }, }, - /* Running out of mantissa at 2^12. */ - { 4094, { 0x0F, 0xFE, }, }, - { 4095, { 0x0F, 0xFF, }, }, - { 4096, { 0x10, 0x00, }, }, - { 4098, { 0x10, 0x01, }, }, - { 4100, { 0x10, 0x02, }, }, - /* Check transition through 2^13. */ - { 8190, { 0x17, 0xFF, }, }, - { 8192, { 0x18, 0x00, }, }, - { 8196, { 0x18, 0x01, }, }, - /* Half-way through the exponents. */ - { 0x7FF8000, { 0x87, 0xFF, }, }, - { 0x8000000, { 0x88, 0x00, }, }, - { 0xFFF0000, { 0x8F, 0xFF, }, }, - { 0x10000000, { 0x90, 0x00, }, }, - /* Transition into the largest exponent. */ - { 0x1FFE0000000, { 0xF7, 0xFF, }, }, - { 0x20000000000, { 0xF8, 0x00, }, }, - { 0x20040000000, { 0xF8, 0x01, }, }, - /* Transition into the max value. */ - { 0x3FF80000000, { 0xFF, 0xFE, }, }, - { 0x3FFC0000000, { 0xFF, 0xFF, }, }, -}; - - -static void -run_from_float_tests (void) -{ - const struct float_test *test; - const struct float_test *const test_end = - &from_float_tests[ sizeof(from_float_tests) / sizeof(from_float_tests[0]) ]; - for (test = from_float_tests; test < test_end; ++test) - { - uint64_t result = pf->pf_read_float_time16(test->float_time); - assert(("Convertion to QUIC float format is successful", - result == test->long_time)); - } -} - - -int -main (void) -{ - run_to_float_tests(); - run_from_float_tests(); - return 0; -} diff --git a/external/lsquic/tests/test_quic_le_floats.c b/external/lsquic/tests/test_quic_le_floats.c deleted file mode 100644 index 78b4be9..0000000 --- a/external/lsquic/tests/test_quic_le_floats.c +++ /dev/null @@ -1,170 +0,0 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_alarmset.h" -#include "lsquic_parse.h" - - -static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); - -struct float_test { - uint64_t long_time; - uint8_t float_time[2]; -}; - -static const struct float_test to_float_tests[] = { - /* Small numbers represent themselves. */ - { 0, { 0x00, 0x00, }, }, - { 1, { 0x01, 0x00, }, }, - { 2, { 0x02, 0x00, }, }, - { 3, { 0x03, 0x00, }, }, - { 4, { 0x04, 0x00, }, }, - { 5, { 0x05, 0x00, }, }, - { 6, { 0x06, 0x00, }, }, - { 7, { 0x07, 0x00, }, }, - { 15, { 0x0F, 0x00, }, }, - { 31, { 0x1F, 0x00, }, }, - { 42, { 0x2A, 0x00, }, }, - { 123, { 0x7B, 0x00, }, }, - { 1234, { 0xD2, 0x04, }, }, - /* Check transition through 2^11. */ - { 2046, { 0xFE, 0x07, }, }, - { 2047, { 0xFF, 0x07, }, }, - { 2048, { 0x00, 0x08, }, }, - { 2049, { 0x01, 0x08, }, }, - /* Running out of mantissa at 2^12. */ - { 4094, { 0xFE, 0x0F, }, }, - { 4095, { 0xFF, 0x0F, }, }, - { 4096, { 0x00, 0x10, }, }, - { 4097, { 0x00, 0x10, }, }, - { 4098, { 0x01, 0x10, }, }, - { 4099, { 0x01, 0x10, }, }, - { 4100, { 0x02, 0x10, }, }, - { 4101, { 0x02, 0x10, }, }, - /* Check transition through 2^13. */ - { 8190, { 0xFF, 0x17, }, }, - { 8191, { 0xFF, 0x17, }, }, - { 8192, { 0x00, 0x18, }, }, - { 8193, { 0x00, 0x18, }, }, - { 8194, { 0x00, 0x18, }, }, - { 8195, { 0x00, 0x18, }, }, - { 8196, { 0x01, 0x18, }, }, - { 8197, { 0x01, 0x18, }, }, - /* Half-way through the exponents. */ - { 0x7FF8000, { 0xFF, 0x87, }, }, - { 0x7FFFFFF, { 0xFF, 0x87, }, }, - { 0x8000000, { 0x00, 0x88, }, }, - { 0xFFF0000, { 0xFF, 0x8F, }, }, - { 0xFFFFFFF, { 0xFF, 0x8F, }, }, - { 0x10000000, { 0x00, 0x90, }, }, - /* Transition into the largest exponent. */ - { 0x1FFFFFFFFFE, { 0xFF, 0xF7, }, }, - { 0x1FFFFFFFFFF, { 0xFF, 0xF7, }, }, - { 0x20000000000, { 0x00, 0xF8, }, }, - { 0x20000000001, { 0x00, 0xF8, }, }, - { 0x2003FFFFFFE, { 0x00, 0xF8, }, }, - { 0x2003FFFFFFF, { 0x00, 0xF8, }, }, - { 0x20040000000, { 0x01, 0xF8, }, }, - { 0x20040000001, { 0x01, 0xF8, }, }, - /* Transition into the max value and clamping. */ - { 0x3FF80000000, { 0xFE, 0xFF, }, }, - { 0x3FFBFFFFFFF, { 0xFE, 0xFF, }, }, - { 0x3FFC0000000, { 0xFF, 0xFF, }, }, - { 0x3FFC0000001, { 0xFF, 0xFF, }, }, - { 0x3FFFFFFFFFF, { 0xFF, 0xFF, }, }, - { 0x40000000000, { 0xFF, 0xFF, }, }, - { 0xFFFFFFFFFFFFFFFF, { 0xFF, 0xFF, }, }, -}; - - -static void -run_to_float_tests (void) -{ - const struct float_test *test; - const struct float_test *const test_end = - &to_float_tests[ sizeof(to_float_tests) / sizeof(to_float_tests[0]) ]; - for (test = to_float_tests; test < test_end; ++test) - { - char out[2]; - pf->pf_write_float_time16(test->long_time, out); - assert(("Convertion to QUIC float format is successful", - 0 == memcmp(out, test->float_time, 2))); - } -} - - -static const struct float_test from_float_tests[] = { - /* Small numbers represent themselves. */ - { 0, { 0x00, 0x00, }, }, - { 1, { 0x01, 0x00, }, }, - { 2, { 0x02, 0x00, }, }, - { 3, { 0x03, 0x00, }, }, - { 4, { 0x04, 0x00, }, }, - { 5, { 0x05, 0x00, }, }, - { 6, { 0x06, 0x00, }, }, - { 7, { 0x07, 0x00, }, }, - { 15, { 0x0F, 0x00, }, }, - { 31, { 0x1F, 0x00, }, }, - { 42, { 0x2A, 0x00, }, }, - { 123, { 0x7B, 0x00, }, }, - { 1234, { 0xD2, 0x04, }, }, - /* Check transition through 2^11. */ - { 2046, { 0xFE, 0x07, }, }, - { 2047, { 0xFF, 0x07, }, }, - { 2048, { 0x00, 0x08, }, }, - { 2049, { 0x01, 0x08, }, }, - /* Running out of mantissa at 2^12. */ - { 4094, { 0xFE, 0x0F, }, }, - { 4095, { 0xFF, 0x0F, }, }, - { 4096, { 0x00, 0x10, }, }, - { 4098, { 0x01, 0x10, }, }, - { 4100, { 0x02, 0x10, }, }, - /* Check transition through 2^13. */ - { 8190, { 0xFF, 0x17, }, }, - { 8192, { 0x00, 0x18, }, }, - { 8196, { 0x01, 0x18, }, }, - /* Half-way through the exponents. */ - { 0x7FF8000, { 0xFF, 0x87, }, }, - { 0x8000000, { 0x00, 0x88, }, }, - { 0xFFF0000, { 0xFF, 0x8F, }, }, - { 0x10000000, { 0x00, 0x90, }, }, - /* Transition into the largest exponent. */ - { 0x1FFE0000000, { 0xFF, 0xF7, }, }, - { 0x20000000000, { 0x00, 0xF8, }, }, - { 0x20040000000, { 0x01, 0xF8, }, }, - /* Transition into the max value. */ - { 0x3FF80000000, { 0xFE, 0xFF, }, }, - { 0x3FFC0000000, { 0xFF, 0xFF, }, }, -}; - - -static void -run_from_float_tests (void) -{ - const struct float_test *test; - const struct float_test *const test_end = - &from_float_tests[ sizeof(from_float_tests) / sizeof(from_float_tests[0]) ]; - for (test = from_float_tests; test < test_end; ++test) - { - uint64_t result = pf->pf_read_float_time16(test->float_time); - assert(("Convertion to QUIC float format is successful", - result == test->long_time)); - } -} - - -int -main (void) -{ - run_to_float_tests(); - run_from_float_tests(); - return 0; -} diff --git a/external/lsquic/tests/test_rechist.c b/external/lsquic/tests/test_rechist.c deleted file mode 100644 index a713f85..0000000 --- a/external/lsquic/tests/test_rechist.c +++ /dev/null @@ -1,449 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include - -#ifdef WIN32 -#include "vc_compat.h" -#endif - -#include "lsquic_int_types.h" -#include "lsquic_rechist.h" -#include "lsquic_util.h" - - -static void -test4 (void) -{ - lsquic_rechist_t rechist; - const struct lsquic_packno_range *range; - lsquic_packno_t packno; - - lsquic_rechist_init(&rechist, 0, 0); - - for (packno = 11917; packno <= 11941; ++packno) - lsquic_rechist_received(&rechist, packno, 0); - for (packno = 11946; packno <= 11994; ++packno) - lsquic_rechist_received(&rechist, packno, 0); - - range = lsquic_rechist_first(&rechist); - assert(range); - assert(range->high == 11994); - assert(range->low == 11946); - range = lsquic_rechist_next(&rechist); - assert(range); - assert(range->high == 11941); - assert(range->low == 11917); - range = lsquic_rechist_next(&rechist); - assert(!range); - - lsquic_rechist_received(&rechist, 11995, 0); - lsquic_rechist_received(&rechist, 11996, 0); - - range = lsquic_rechist_first(&rechist); - assert(range); - assert(range->high == 11996); - assert(range->low == 11946); - range = lsquic_rechist_next(&rechist); - assert(range); - assert(range->high == 11941); - assert(range->low == 11917); - range = lsquic_rechist_next(&rechist); - assert(!range); - - lsquic_rechist_received(&rechist, 11912, 0); - lsquic_rechist_stop_wait(&rechist, 11860); - - range = lsquic_rechist_first(&rechist); - assert(range); - assert(range->high == 11996); - assert(range->low == 11946); - range = lsquic_rechist_next(&rechist); - assert(range); - assert(range->high == 11941); - assert(range->low == 11917); - range = lsquic_rechist_next(&rechist); - assert(range); - assert(range->high == 11912); - assert(range->low == 11912); - range = lsquic_rechist_next(&rechist); - assert(!range); - - for (packno = 12169; packno <= 12193; ++packno) - lsquic_rechist_received(&rechist, packno, 0); - - range = lsquic_rechist_first(&rechist); - assert(range); - assert(range->high == 12193); - assert(range->low == 12169); - range = lsquic_rechist_next(&rechist); - assert(range); - assert(range->high == 11996); - assert(range->low == 11946); - range = lsquic_rechist_next(&rechist); - assert(range); - assert(range->high == 11941); - assert(range->low == 11917); - range = lsquic_rechist_next(&rechist); - assert(range); - assert(range->high == 11912); - assert(range->low == 11912); - range = lsquic_rechist_next(&rechist); - assert(!range); - - lsquic_rechist_cleanup(&rechist); -} - - -static void -rechist2str (lsquic_rechist_t *rechist, char *buf, size_t bufsz) -{ - const struct lsquic_packno_range *range; - size_t off; - int n; - - for (off = 0, range = lsquic_rechist_first(rechist); - range && off < bufsz; - off += n, range = lsquic_rechist_next(rechist)) - { - n = snprintf(buf + off, bufsz - off, "[%"PRIu64"-%"PRIu64"]", - range->high, range->low); - if (n < 0 || (size_t) n >= bufsz - off) - break; - } -} - - -static void -test_range_copy (struct lsquic_rechist *orig, int ietf) -{ - char orig_str[0x1000], new_str[0x1000]; - struct lsquic_rechist new; - size_t len; - - rechist2str(orig, orig_str, sizeof(orig_str)); - - lsquic_rechist_init(&new, ietf, 0); - lsquic_rechist_copy_ranges(&new, orig, - (const struct lsquic_packno_range * (*) (void *)) lsquic_rechist_first, - (const struct lsquic_packno_range * (*) (void *)) lsquic_rechist_next); - rechist2str(&new, new_str, sizeof(new_str)); - assert(0 == strcmp(orig_str, new_str)); - lsquic_rechist_cleanup(&new); - - /* This tests that lower-numbered ranges do not overwrite higher-numbered - * ranges. - */ - lsquic_rechist_init(&new, ietf, 10); - lsquic_rechist_copy_ranges(&new, orig, - (const struct lsquic_packno_range * (*) (void *)) lsquic_rechist_first, - (const struct lsquic_packno_range * (*) (void *)) lsquic_rechist_next); - rechist2str(&new, new_str, sizeof(new_str)); - len = strlen(new_str); - assert(0 == strncmp(orig_str, new_str, len)); - lsquic_rechist_cleanup(&new); -} - - -static void -test5 (void) -{ - lsquic_rechist_t rechist; - char buf[100]; - - lsquic_rechist_init(&rechist, 0, 0); - - lsquic_rechist_received(&rechist, 1, 0); - /* Packet 2 omitted because it could not be decrypted */ - lsquic_rechist_received(&rechist, 3, 0); - lsquic_rechist_received(&rechist, 12, 0); - - rechist2str(&rechist, buf, sizeof(buf)); - assert(0 == strcmp(buf, "[12-12][3-3][1-1]")); - - lsquic_rechist_received(&rechist, 4, 0); - lsquic_rechist_received(&rechist, 10, 0); - - rechist2str(&rechist, buf, sizeof(buf)); - assert(0 == strcmp(buf, "[12-12][10-10][4-3][1-1]")); - - lsquic_rechist_received(&rechist, 6, 0); - - rechist2str(&rechist, buf, sizeof(buf)); - assert(0 == strcmp(buf, "[12-12][10-10][6-6][4-3][1-1]")); - - lsquic_rechist_received(&rechist, 7, 0); - lsquic_rechist_received(&rechist, 8, 0); - - rechist2str(&rechist, buf, sizeof(buf)); - assert(0 == strcmp(buf, "[12-12][10-10][8-6][4-3][1-1]")); - - lsquic_rechist_received(&rechist, 9, 0); - test_range_copy(&rechist, 0); - - rechist2str(&rechist, buf, sizeof(buf)); - assert(0 == strcmp(buf, "[12-12][10-6][4-3][1-1]")); - - lsquic_rechist_received(&rechist, 5, 0); - lsquic_rechist_received(&rechist, 11, 0); - - rechist2str(&rechist, buf, sizeof(buf)); - assert(0 == strcmp(buf, "[12-3][1-1]")); - - lsquic_rechist_cleanup(&rechist); -} - - -/* Regression test for bug where rechist ends up empty (rh_used == 0) - * with invalid head entry with a self-referential next, and - * lsquic_rechist_received would follow it because it didn't check rh_used. - */ -static void -test6 (void) -{ - lsquic_rechist_t rechist; - char buf[256]; - long int time = 12087061905875; - unsigned i; - - lsquic_rechist_init(&rechist, 0, 0); - - for (i = 0; i <= 3; i++) - lsquic_rechist_received(&rechist, i, (time += (i * 10))); - lsquic_rechist_stop_wait(&rechist, 2); - - lsquic_rechist_received(&rechist, 4, (time += 10)); - - lsquic_rechist_stop_wait(&rechist, 3); - - lsquic_rechist_received(&rechist, 5, (time += 10)); - - lsquic_rechist_stop_wait(&rechist, 3); - - lsquic_rechist_received(&rechist, 6, (time += 10)); - - lsquic_rechist_stop_wait(&rechist, 9); - - lsquic_rechist_received(&rechist, 7, (time += 10)); - lsquic_rechist_received(&rechist, 8, (time += 10)); - lsquic_rechist_received(&rechist, 9, (time += 10)); - - rechist2str(&rechist, buf, sizeof(buf)); - - lsquic_rechist_cleanup(&rechist); -} - - -static void -test_rand_sequence (unsigned seed, unsigned max) -{ - struct lsquic_rechist rechist; - const struct lsquic_packno_range *range; - lsquic_packno_t prev_low; - enum received_st st; - unsigned i, count; - - lsquic_rechist_init(&rechist, 1, max); - srand(seed); - - for (i = 0; i < 10000; ++i) - { - st = lsquic_rechist_received(&rechist, (unsigned) rand(), 0); - assert(st == REC_ST_OK || st == REC_ST_DUP); - } - - test_range_copy(&rechist, 1); - - range = lsquic_rechist_first(&rechist); - assert(range); - assert(range->high >= range->low); - prev_low = range->low; - count = 1; - - while (range = lsquic_rechist_next(&rechist), range != NULL) - { - ++count; - assert(range->high >= range->low); - assert(range->high < prev_low); - prev_low = range->low; - } - if (max) - assert(count <= max); - - lsquic_rechist_cleanup(&rechist); -} - - -struct shuffle_elem { - unsigned packno; - int rand; -}; - - -static int -comp_els (const void *a_p, const void *b_p) -{ - const struct shuffle_elem *a = a_p, *b = b_p; - if (a->rand < b->rand) - return -1; - if (a->rand > b->rand) - return 1; - return (a->packno > b->packno) - (b->packno > a->packno); -} - - -static void -test_shuffle_1000 (unsigned seed) -{ - struct lsquic_rechist rechist; - const struct lsquic_packno_range *range; - enum received_st st; - unsigned i; - struct shuffle_elem *els; - - els = malloc(sizeof(els[0]) * 10000); - lsquic_rechist_init(&rechist, 1, 0); - srand(seed); - - for (i = 0; i < 10000; ++i) - { - els[i].packno = i; - els[i].rand = rand(); - } - - qsort(els, 10000, sizeof(els[0]), comp_els); - - for (i = 0; i < 10000; ++i) - { - st = lsquic_rechist_received(&rechist, els[i].packno, 0); - assert(st == REC_ST_OK || st == REC_ST_DUP); - } - test_range_copy(&rechist, 1); - - range = lsquic_rechist_first(&rechist); - assert(range); - assert(range->high == 9999); - assert(range->low == 0); - range = lsquic_rechist_next(&rechist); - assert(!range); - - lsquic_rechist_cleanup(&rechist); - free(els); -} - - -int -main (void) -{ - enum received_st st; - lsquic_rechist_t rechist; - unsigned i; - const struct lsquic_packno_range *range; - - lsquic_rechist_init(&rechist, 0, 0); - - lsquic_time_t now = 1234; - st = lsquic_rechist_received(&rechist, 0, now); - assert(("inserting packet number zero results in error", st == REC_ST_ERR)); - - st = lsquic_rechist_received(&rechist, 1, now); - assert(("inserting packet number one is successful", st == REC_ST_OK)); - - st = lsquic_rechist_received(&rechist, 1, now); - assert(("inserting packet number one again results in duplicate error", - st == REC_ST_DUP)); - - range = lsquic_rechist_first(&rechist); - assert(("first range returned correctly", range)); - assert(("first range low value checks out", range->low == 1)); - assert(("first range high value checks out", range->high == 1)); - range = lsquic_rechist_next(&rechist); - assert(("second range does not exist", !range)); - - for (i = 3; i <= 5; ++i) - { - st = lsquic_rechist_received(&rechist, i, now); - assert(("inserting packet", st == REC_ST_OK)); - } - - range = lsquic_rechist_first(&rechist); - assert(("first range returned correctly", range)); - assert(("first range low value checks out", range->low == 3)); - assert(("first range high value checks out", range->high == 5)); - range = lsquic_rechist_next(&rechist); - assert(("second range returned correctly", range)); - assert(("second range low value checks out", range->low == 1)); - assert(("second range high value checks out", range->high == 1)); - range = lsquic_rechist_next(&rechist); - assert(("third range does not exist", !range)); - - lsquic_rechist_stop_wait(&rechist, 3); - - st = lsquic_rechist_received(&rechist, 1, now); - assert(("inserting packet number one is unsuccessful after cutoff 3", - st == REC_ST_DUP)); - - range = lsquic_rechist_first(&rechist); - assert(("first range returned correctly", range)); - assert(("first range low value checks out", range->low == 3)); - assert(("first range high value checks out", range->high == 5)); - range = lsquic_rechist_next(&rechist); - assert(("second range does not exist", !range)); - - for (i = 9; i >= 7; --i) - { - st = lsquic_rechist_received(&rechist, i, now); - assert(("inserting packet", st == REC_ST_OK)); - } - - range = lsquic_rechist_first(&rechist); - assert(("first range returned correctly", range)); - assert(("first range low value checks out", range->low == 7)); - assert(("first range high value checks out", range->high == 9)); - range = lsquic_rechist_next(&rechist); - assert(("second range returned correctly", range)); - assert(("second range low value checks out", range->low == 3)); - assert(("second range high value checks out", range->high == 5)); - range = lsquic_rechist_next(&rechist); - assert(("third range does not exist", !range)); - - lsquic_rechist_stop_wait(&rechist, 5); - - range = lsquic_rechist_first(&rechist); - range = lsquic_rechist_next(&rechist); - assert(("second range returned correctly", range)); - assert(("second range low value checks out", range->low == 5)); - assert(("second range high value checks out", range->high == 5)); - range = lsquic_rechist_next(&rechist); - assert(("third range does not exist", !range)); - - lsquic_rechist_stop_wait(&rechist, 8); - - range = lsquic_rechist_first(&rechist); - assert(("first range returned correctly", range)); - assert(("first range low value checks out", range->low == 8)); - assert(("first range high value checks out", range->high == 9)); - range = lsquic_rechist_next(&rechist); - assert(("second range does not exist", !range)); - - lsquic_rechist_cleanup(&rechist); - - test4(); - - test5(); - - test6(); - - for (i = 0; i < 10; ++i) - test_rand_sequence(i, 0); - - for (i = 0; i < 10; ++i) - test_rand_sequence(i, 111 + i * 3 /* Just something arbitrary */); - - for (i = 0; i < 10; ++i) - test_shuffle_1000(i); - - return 0; -} diff --git a/external/lsquic/tests/test_reg_pkt_headergen.c b/external/lsquic/tests/test_reg_pkt_headergen.c deleted file mode 100644 index dbf400d..0000000 --- a/external/lsquic/tests/test_reg_pkt_headergen.c +++ /dev/null @@ -1,237 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif -#include - -#include "lsquic_types.h" -#include "lsquic.h" -#include "lsquic_int_types.h" -#include "lsquic_packet_common.h" -#include "lsquic_packet_out.h" -#include "lsquic_hash.h" -#include "lsquic_conn.h" -#include "lsquic_parse.h" - -struct test { - /* Inputs. */ - const struct parse_funcs - *pf; - size_t bufsz; - uint64_t cid; /* Zero means connection ID is not specified */ - const char *nonce; - lsquic_packno_t packno; - enum packno_bits - bits; /* The test has been retrofitted by adding bits parameter. The test can - * be made more complicated by calculating packet number length based on - * some other inputs. However, this is tested elsewhere. - */ - union { - unsigned char buf[4]; - lsquic_ver_tag_t val; - } ver; - - /* Outputs */ - int len; /* Retval */ - char out[0x100]; /* Contents */ -}; - - -static void -run_test (const struct test *const test) -{ - - struct lsquic_packet_out packet_out = - { - .po_flags = (test->cid ? PO_CONN_ID : 0) - | (test->ver.val ? PO_VERSION : 0) - | (test->nonce ? PO_NONCE: 0) - , - .po_nonce = (unsigned char *) test->nonce, - .po_ver_tag = test->ver.val, - .po_packno = test->packno, - }; - lsquic_packet_out_set_packno_bits(&packet_out, test->bits); - - lsquic_cid_t cid; - memset(&cid, 0, sizeof(cid)); - cid.len = sizeof(test->cid); - memcpy(cid.idbuf, &test->cid, sizeof(test->cid)); - - struct lsquic_conn lconn = LSCONN_INITIALIZER_CID(lconn, cid); - - unsigned char out[GQUIC_MAX_PUBHDR_SZ]; - int len = test->pf->pf_gen_reg_pkt_header(&lconn, &packet_out, out, - sizeof(out), NULL, NULL); - - assert(("Packet length is correct", len == test->len)); - - if (test->len > 0) - assert(("Packet contents are correct", - 0 == memcmp(out, test->out, len))); -} - - -int -main (void) -{ - const struct test tests[] = { - { - .pf = select_pf_by_ver(LSQVER_043), - .bufsz = GQUIC_MAX_PUBHDR_SZ, - .cid = 0x0102030405060708UL, - .nonce = NULL, - .packno = 0x01020304, - .bits = GQUIC_PACKNO_LEN_4, - .len = 1 + 8 + 0 + 4, - .out = { (0 << 2) /* Nonce present */ - | 0x08 /* Connection ID present */ - | 0x20 /* Packet number length */ - , - 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Connection ID */ - 0x01, 0x02, 0x03, 0x04, /* Packet number */ - }, - }, - - { - .pf = select_pf_by_ver(LSQVER_043), - .bufsz = GQUIC_MAX_PUBHDR_SZ, - .cid = 0x0102030405060708UL, - .nonce = NULL, - .packno = 0x00, - .bits = GQUIC_PACKNO_LEN_1, - .len = 1 + 8 + 0 + 1, - .out = { (0 << 2) /* Nonce present */ - | 0x08 /* Connection ID present */ - | 0x00 /* Packet number length */ - , - 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Connection ID */ - 0x00, /* Packet number */ - }, - }, - - { - .pf = select_pf_by_ver(LSQVER_043), - .bufsz = GQUIC_MAX_PUBHDR_SZ, - .cid = 0x0102030405060708UL, - .nonce = NULL, - .packno = 0x09, - .bits = GQUIC_PACKNO_LEN_1, - .ver.buf= { 'Q', '0', '4', '3', }, - .len = 1 + 8 + 4 + 0 + 1, - .out = { (0 << 2) /* Nonce present */ - | 0x01 /* Version present */ - | 0x08 /* Connection ID present */ - | 0x00 /* Packet number length */ - , - 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Connection ID */ - 'Q', '0', '4', '3', - 0x09, /* Packet number */ - }, - }, - - #define NONCENSE "0123456789abcdefghijklmnopqrstuv" - #define NONCENSE_BYTES '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v' - - { - .pf = select_pf_by_ver(LSQVER_043), - .bufsz = GQUIC_MAX_PUBHDR_SZ, - .cid = 0x0102030405060708UL, - .nonce = NONCENSE, - .packno = 0x00, - .bits = GQUIC_PACKNO_LEN_1, - .len = 1 + 8 + 32 + 1, - .out = { (1 << 2) /* Nonce present */ - | 0x08 /* Connection ID present */ - | 0x00 /* Packet number length */ - , - 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Connection ID */ - NONCENSE_BYTES, - 0x00, /* Packet number */ - }, - }, - - { - .pf = select_pf_by_ver(LSQVER_043), - .bufsz = GQUIC_MAX_PUBHDR_SZ, - .cid = 0, /* Do not set connection ID */ - .nonce = NONCENSE, - .packno = 0x00, - .bits = GQUIC_PACKNO_LEN_1, - .len = 1 + 0 + 32 + 1, - .out = { (1 << 2) /* Nonce present */ - | 0x00 /* Packet number length */ - , - NONCENSE_BYTES, - 0x00, /* Packet number */ - }, - }, - - { - .pf = select_pf_by_ver(LSQVER_043), - .bufsz = GQUIC_MAX_PUBHDR_SZ, - .cid = 0x0102030405060708UL, - .nonce = NONCENSE, - .packno = 0x00, - .bits = GQUIC_PACKNO_LEN_1, - .ver.buf= { 'Q', '0', '4', '3', }, - .len = 1 + 8 + 4 + 32 + 1, - .out = { (1 << 2) /* Nonce present */ - | 0x01 /* Version present */ - | 0x08 /* Connection ID present */ - | 0x00 /* Packet number length */ - , - 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Connection ID */ - 'Q', '0', '4', '3', - NONCENSE_BYTES, - 0x00, /* Packet number */ - }, - }, - - { - .pf = select_pf_by_ver(LSQVER_043), - .bufsz = GQUIC_MAX_PUBHDR_SZ, - .cid = 0x0102030405060708UL, - .nonce = NONCENSE, - .packno = 0xA0A1A2A3A4A5A6A7UL, - .bits = GQUIC_PACKNO_LEN_6, - .len = 1 + 8 + 32 + 6, - .out = { (1 << 2) /* Nonce present */ - | 0x08 /* Connection ID present */ - | 0x30 /* Packet number length */ - , - 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Connection ID */ - NONCENSE_BYTES, - 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, - }, - }, - - { - .pf = select_pf_by_ver(LSQVER_043), - .bufsz = GQUIC_MAX_PUBHDR_SZ, - .cid = 0x0102030405060708UL, - .nonce = NONCENSE, - .packno = 0xA0A1A2A3A4A5A6A7UL, - .bits = GQUIC_PACKNO_LEN_6, - .len = 1 + 8 + 32 + 6, - .out = { (1 << 2) /* Nonce present */ - | 0x08 /* Connection ID present */ - | 0x30 /* Packet number length */ - , - 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Connection ID */ - NONCENSE_BYTES, - 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, - }, - }, - - }; - - unsigned i; - for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) - run_test(&tests[i]); - return 0; -} diff --git a/external/lsquic/tests/test_rst_stream_gquic_be.c b/external/lsquic/tests/test_rst_stream_gquic_be.c deleted file mode 100644 index 4997163..0000000 --- a/external/lsquic/tests/test_rst_stream_gquic_be.c +++ /dev/null @@ -1,77 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_parse.h" - -//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC -#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) - - -/* The test is both for generation and parsing: */ -struct wuf_test { - unsigned char buf[0x20]; - size_t buf_len; - lsquic_stream_id_t stream_id; - uint64_t offset; - uint64_t error_code; -}; - -static const struct wuf_test wuf_tests[] = { - { - .buf = { 0x01, 0x00, 0x67, 0x45, 0x34, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x03, }, - .buf_len = GQUIC_RST_STREAM_SZ, - .stream_id = 0x674534, - .offset = 0x0102030405, - .error_code = 0x03, - }, - - { .buf = { 0 }, } -}; - - -static void -run_parse_tests (void) -{ - const struct wuf_test *test; - for (test = wuf_tests; test->buf[0]; ++test) - { - lsquic_stream_id_t stream_id = ~0; - uint64_t offset = ~0, error_code = ~0; - int sz = pf->pf_parse_rst_frame(test->buf, test->buf_len, &stream_id, &offset, &error_code); - assert(sz == GQUIC_RST_STREAM_SZ); - assert(stream_id == test->stream_id); - assert(offset == test->offset); - assert(error_code == test->error_code); - } -} - - -static void -run_gen_tests (void) -{ - const struct wuf_test *test; - for (test = wuf_tests; test->buf[0]; ++test) - { - unsigned char buf[0x100]; - int sz = pf->pf_gen_rst_frame(buf, test->buf_len, test->stream_id, test->offset, test->error_code); - assert(sz == GQUIC_RST_STREAM_SZ); - assert(0 == memcmp(buf, test->buf, sz)); - } -} - - -int -main (void) -{ - run_parse_tests(); - run_gen_tests(); - return 0; -} diff --git a/external/lsquic/tests/test_rst_stream_gquic_le.c b/external/lsquic/tests/test_rst_stream_gquic_le.c deleted file mode 100644 index 0adbf2d..0000000 --- a/external/lsquic/tests/test_rst_stream_gquic_le.c +++ /dev/null @@ -1,78 +0,0 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_alarmset.h" -#include "lsquic_parse.h" - -static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); - - -/* The test is both for generation and parsing: */ -struct wuf_test { - unsigned char buf[0x20]; - size_t buf_len; - uint32_t stream_id; - uint64_t offset; - uint32_t error_code; -}; - -static const struct wuf_test wuf_tests[] = { - { - .buf = { 0x01, 0x34, 0x45, 0x67, 0x00, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, }, - .buf_len = QUIC_RST_STREAM_SZ, - .stream_id = 0x674534, - .offset = 0x0102030405, - .error_code = 0x03, - }, - - { .buf = { 0 }, } -}; - - -static void -run_parse_tests (void) -{ - const struct wuf_test *test; - for (test = wuf_tests; test->buf[0]; ++test) - { - uint32_t stream_id = ~0; - uint64_t offset = ~0; - uint32_t error_code = ~0; - int sz = pf->pf_parse_rst_frame(test->buf, test->buf_len, &stream_id, &offset, &error_code); - assert(sz == QUIC_RST_STREAM_SZ); - assert(stream_id == test->stream_id); - assert(offset == test->offset); - assert(error_code == test->error_code); - } -} - - -static void -run_gen_tests (void) -{ - const struct wuf_test *test; - for (test = wuf_tests; test->buf[0]; ++test) - { - unsigned char buf[0x100]; - int sz = pf->pf_gen_rst_frame(buf, test->buf_len, test->stream_id, test->offset, test->error_code); - assert(sz == QUIC_RST_STREAM_SZ); - assert(0 == memcmp(buf, test->buf, sz)); - } -} - - -int -main (void) -{ - run_parse_tests(); - run_gen_tests(); - return 0; -} diff --git a/external/lsquic/tests/test_rst_stream_ietf.c b/external/lsquic/tests/test_rst_stream_ietf.c deleted file mode 100644 index c43be94..0000000 --- a/external/lsquic/tests/test_rst_stream_ietf.c +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_parse.h" - -static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_041); - - -/* The test is both for generation and parsing: */ -struct rst_stream_test { - unsigned char buf[0x20]; - size_t buf_len; - lsquic_stream_id_t stream_id; - uint64_t offset; - uint32_t error_code; -}; - -static const struct rst_stream_test rst_stream_tests[] = { - { - .buf = { 0x01, - 0x00, 0x67, 0x45, 0x34, - 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, - }, - .buf_len = GQUIC_RST_STREAM_SZ, - .stream_id = 0x674534, - .offset = 0x0102030405, - .error_code = 0x03, - }, - - { .buf = { 0 }, } -}; - - -static void -run_parse_tests (void) -{ - const struct rst_stream_test *test; - for (test = rst_stream_tests; test->buf[0]; ++test) - { - lsquic_stream_id_t stream_id = ~0; - uint64_t offset = ~0; - uint32_t error_code = ~0; - int sz = pf->pf_parse_rst_frame(test->buf, test->buf_len, &stream_id, &offset, &error_code); - assert(sz == GQUIC_RST_STREAM_SZ); - assert(stream_id == test->stream_id); - assert(offset == test->offset); - assert(error_code == test->error_code); - } -} - - -static void -run_gen_tests (void) -{ - const struct rst_stream_test *test; - for (test = rst_stream_tests; test->buf[0]; ++test) - { - unsigned char buf[0x100]; - int sz = pf->pf_gen_rst_frame(buf, test->buf_len, test->stream_id, test->offset, test->error_code); - assert(sz == GQUIC_RST_STREAM_SZ); - assert(0 == memcmp(buf, test->buf, sz)); - } -} - - -int -main (void) -{ - run_parse_tests(); - run_gen_tests(); - return 0; -} diff --git a/external/lsquic/tests/test_rtt.c b/external/lsquic/tests/test_rtt.c deleted file mode 100644 index 430046e..0000000 --- a/external/lsquic/tests/test_rtt.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic_int_types.h" -#include "lsquic_rtt.h" - -int -main (void) -{ - struct lsquic_rtt_stats stats; - lsquic_time_t sent, received; - -#define RESET() memset(&stats, 0, sizeof(stats)) -#define TV(sec, usec) (sec * 1000000 + usec) - - RESET(); - sent = TV(2, 0), received = TV(3, 0); - lsquic_rtt_stats_update(&stats, received - sent, 0); - assert(("Initial RTT checks out", - 1000000 == lsquic_rtt_stats_get_srtt(&stats))); - sent = TV(2, 500000), received = TV(3, 0); - lsquic_rtt_stats_update(&stats, received - sent, 0); - assert(("Second RTT checks out", - 937500 == lsquic_rtt_stats_get_srtt(&stats))); - - return 0; -} diff --git a/external/lsquic/tests/test_send_headers.c b/external/lsquic/tests/test_send_headers.c deleted file mode 100644 index 380aa8a..0000000 --- a/external/lsquic/tests/test_send_headers.c +++ /dev/null @@ -1,711 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * test_send_headers.c -- Test what happens when lsquic_stream_send_headers() - * is called. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#else -#include -#endif - -#include "lsquic.h" - -#include "lsquic_packet_common.h" -#include "lsquic_packet_ietf.h" -#include "lsquic_alarmset.h" -#include "lsquic_packet_in.h" -#include "lsquic_conn_flow.h" -#include "lsquic_rtt.h" -#include "lsquic_sfcw.h" -#include "lsquic_varint.h" -#include "lsquic_hq.h" -#include "lsquic_hash.h" -#include "lsquic_stream.h" -#include "lsquic_types.h" -#include "lsquic_malo.h" -#include "lsquic_mm.h" -#include "lsquic_conn_public.h" -#include "lsquic_logger.h" -#include "lsquic_parse.h" -#include "lsquic_conn.h" -#include "lsquic_engine_public.h" -#include "lsquic_cubic.h" -#include "lsquic_pacer.h" -#include "lsquic_senhist.h" -#include "lsquic_bw_sampler.h" -#include "lsquic_minmax.h" -#include "lsquic_bbr.h" -#include "lsquic_adaptive_cc.h" -#include "lsquic_send_ctl.h" -#include "lsquic_ver_neg.h" -#include "lsquic_packet_out.h" -#include "lsquic_enc_sess.h" -#include "lsqpack.h" -#include "lsquic_frab_list.h" -#include "lsquic_http1x_if.h" -#include "lsquic_qdec_hdl.h" -#include "lsquic_qenc_hdl.h" -#include "lsquic_varint.h" -#include "lsquic_hq.h" -#include "lsquic_data_in_if.h" -#include "lsquic_headers.h" -#include "lsquic_push_promise.h" - -static int s_call_wantwrite_in_ctor; -static int s_wantwrite_arg; -static int s_onwrite_called; - -static lsquic_stream_ctx_t * -on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) -{ - if (s_call_wantwrite_in_ctor) - lsquic_stream_wantwrite(stream, s_wantwrite_arg); - return NULL; -} - - -static void -on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ -} - - -static void -on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *h) -{ - s_onwrite_called = 1; - lsquic_stream_wantwrite(stream, 0); -} - - -static struct reset_call_ctx { - struct lsquic_stream *stream; - int how; -} s_onreset_called = { NULL, -1, }; - - -static void -on_reset (lsquic_stream_t *stream, lsquic_stream_ctx_t *h, int how) -{ - s_onreset_called = (struct reset_call_ctx) { stream, how, }; -} - - -const struct lsquic_stream_if stream_if = { - .on_new_stream = on_new_stream, - .on_write = on_write, - .on_close = on_close, - .on_reset = on_reset, -}; - - -enum buf_packet_type -lsquic_send_ctl_determine_bpt (struct lsquic_send_ctl *ctl, - const struct lsquic_stream *stream) -{ - return BPT_HIGHEST_PRIO; -} - - -/* This function is only here to avoid crash in the test: */ -void -lsquic_engine_add_conn_to_tickable (struct lsquic_engine_public *enpub, - lsquic_conn_t *conn) -{ -} - - -struct test_objs { - struct lsquic_engine_public eng_pub; - struct lsquic_conn lconn; - struct lsquic_conn_public conn_pub; - struct lsquic_send_ctl send_ctl; - struct lsquic_alarmset alset; - void *stream_if_ctx; - struct ver_neg ver_neg; - const struct lsquic_stream_if * - stream_if; - unsigned initial_stream_window; - enum stream_ctor_flags ctor_flags; - struct qpack_enc_hdl qeh; - struct qpack_dec_hdl qdh; -}; - - -static int -unit_test_doesnt_write_ack (struct lsquic_conn *lconn) -{ - return 0; -} - - -static struct network_path network_path; - -static struct network_path * -get_network_path (struct lsquic_conn *lconn, const struct sockaddr *sa) -{ - return &network_path; -} - -static void -abort_error (struct lsquic_conn *lconn, int is_app, - unsigned error_code, const char *fmt, ...) -{ -} - -static const struct conn_iface our_conn_if = -{ - .ci_can_write_ack = unit_test_doesnt_write_ack, - .ci_get_path = get_network_path, - .ci_abort_error = abort_error, -}; - - -static struct http1x_ctor_ctx ctor_ctx = { .is_server = 0, }; - -#if LSQUIC_CONN_STATS -static struct conn_stats s_conn_stats; -#endif - -static void -init_test_objs (struct test_objs *tobjs, unsigned initial_conn_window, - unsigned initial_stream_window, enum stream_ctor_flags addl_ctor_flags) -{ - int s; - memset(tobjs, 0, sizeof(*tobjs)); - LSCONN_INITIALIZE(&tobjs->lconn); - tobjs->lconn.cn_pf = select_pf_by_ver(LSQVER_I001); - tobjs->lconn.cn_version = LSQVER_I001; - tobjs->lconn.cn_esf_c = &lsquic_enc_session_common_ietf_v1; - network_path.np_pack_size = IQUIC_MAX_IPv4_PACKET_SZ; - tobjs->lconn.cn_if = &our_conn_if; - lsquic_mm_init(&tobjs->eng_pub.enp_mm); - TAILQ_INIT(&tobjs->conn_pub.sending_streams); - TAILQ_INIT(&tobjs->conn_pub.read_streams); - TAILQ_INIT(&tobjs->conn_pub.write_streams); - TAILQ_INIT(&tobjs->conn_pub.service_streams); - lsquic_cfcw_init(&tobjs->conn_pub.cfcw, &tobjs->conn_pub, - initial_conn_window); - lsquic_conn_cap_init(&tobjs->conn_pub.conn_cap, initial_conn_window); - lsquic_alarmset_init(&tobjs->alset, 0); - tobjs->conn_pub.mm = &tobjs->eng_pub.enp_mm; - tobjs->conn_pub.lconn = &tobjs->lconn; - tobjs->conn_pub.enpub = &tobjs->eng_pub; - tobjs->conn_pub.send_ctl = &tobjs->send_ctl; - tobjs->conn_pub.packet_out_malo = - lsquic_malo_create(sizeof(struct lsquic_packet_out)); - tobjs->conn_pub.path = &network_path; -#if LSQUIC_CONN_STATS - tobjs->conn_pub.conn_stats = &s_conn_stats; -#endif - tobjs->initial_stream_window = initial_stream_window; - lsquic_send_ctl_init(&tobjs->send_ctl, &tobjs->alset, &tobjs->eng_pub, - &tobjs->ver_neg, &tobjs->conn_pub, 0); - tobjs->stream_if = &stream_if; - tobjs->stream_if_ctx = NULL; - tobjs->ctor_flags = SCF_CALL_ON_NEW|SCF_DI_AUTOSWITCH|SCF_HTTP - |addl_ctor_flags; - if ((1 << tobjs->lconn.cn_version) & LSQUIC_IETF_VERSIONS) - { - lsquic_qeh_init(&tobjs->qeh, &tobjs->lconn); - s = lsquic_qeh_settings(&tobjs->qeh, 0, 0, 0, 0); - assert(0 == s); - tobjs->conn_pub.u.ietf.qeh = &tobjs->qeh; - tobjs->conn_pub.enpub->enp_hsi_if = lsquic_http1x_if; - tobjs->conn_pub.enpub->enp_hsi_ctx = &ctor_ctx; - s = lsquic_qdh_init(&tobjs->qdh, &tobjs->lconn, 0, - tobjs->conn_pub.enpub, 0, 0); - tobjs->conn_pub.u.ietf.qdh = &tobjs->qdh; - assert(0 == s); - } -} - - -static void -deinit_test_objs (struct test_objs *tobjs) -{ - assert(!lsquic_malo_first(tobjs->eng_pub.enp_mm.malo.stream_frame)); - lsquic_send_ctl_cleanup(&tobjs->send_ctl); - lsquic_malo_destroy(tobjs->conn_pub.packet_out_malo); - lsquic_mm_cleanup(&tobjs->eng_pub.enp_mm); - if ((1 << tobjs->lconn.cn_version) & LSQUIC_IETF_VERSIONS) - { - lsquic_qeh_cleanup(&tobjs->qeh); - lsquic_qdh_cleanup(&tobjs->qdh); - } -} - - -static struct lsquic_stream * -new_stream (struct test_objs *tobjs, unsigned stream_id, uint64_t send_off) -{ - return lsquic_stream_new(stream_id, &tobjs->conn_pub, tobjs->stream_if, - tobjs->stream_if_ctx, tobjs->initial_stream_window, send_off, - tobjs->ctor_flags); -} - -static struct test_vals { - /* What lsquic_qeh_write_headers() returns or sets */ - enum qwh_status status; - size_t prefix_sz; - size_t headers_sz; - uint64_t completion_offset; -} test_vals; - - -enum qwh_status -lsquic_qeh_write_headers (struct qpack_enc_hdl *qeh, - lsquic_stream_id_t stream_id, unsigned seqno, - const struct lsquic_http_headers *headers, unsigned char *buf, - size_t *prefix_sz, size_t *headers_sz, uint64_t *completion_offset, - enum lsqpack_enc_header_flags *hflags) -{ - memset(buf - *prefix_sz, 0xC5, *prefix_sz + *headers_sz); - *prefix_sz = test_vals.prefix_sz; - *headers_sz = test_vals.headers_sz; - *completion_offset = test_vals.completion_offset; - if (hflags) - *hflags = 0; - return test_vals.status; -} - - -static uint64_t s_enc_off; - -uint64_t -lsquic_qeh_enc_off (struct qpack_enc_hdl *qeh) -{ - return s_enc_off; -} - - -static void -test_flushes_and_closes (void) -{ - struct test_objs tobjs; - struct lsquic_stream *stream; - ssize_t nw; - int s; - struct uncompressed_headers *uh; - void *hset; - - /* For our tests purposes, we treat headers as an opaque object */ - struct lsquic_http_headers *headers = (void *) 1; - - init_test_objs(&tobjs, 0x1000, 0x1000, SCF_IETF); - - stream = new_stream(&tobjs, 0, 0x1000); - test_vals.status = QWH_FULL; - test_vals.prefix_sz = 2; - test_vals.headers_sz = 40; - test_vals.completion_offset = 0; - s = lsquic_stream_send_headers(stream, headers, 0); - assert(0 == s); - assert(stream->sm_n_buffered == test_vals.prefix_sz + test_vals.headers_sz); - assert(0 == stream->sm_hblock_sz); - lsquic_stream_destroy(stream); - - stream = new_stream(&tobjs, 4, 0x1000); - test_vals.status = QWH_PARTIAL; - test_vals.prefix_sz = 2; - test_vals.headers_sz = 40; - test_vals.completion_offset = 10; - s = lsquic_stream_send_headers(stream, headers, 0); - assert(0 == s); - assert(stream->sm_hblock_sz == test_vals.prefix_sz + test_vals.headers_sz); - assert(0 == stream->sm_n_buffered); - nw = lsquic_stream_write(stream, "hello", 5); - assert(0 == nw); - s = lsquic_stream_flush(stream); - assert(s == 0); - lsquic_stream_destroy(stream); - - /* Mock server side stream cycle */ - stream = new_stream(&tobjs, 8, 0x1000); - uh = calloc(1, sizeof(*uh)); - *uh = (struct uncompressed_headers) { - .uh_stream_id = stream->id, - .uh_weight = 127, - .uh_hset = (void *) 12345, - }; - s = lsquic_stream_uh_in(stream, uh); - assert(s == 0); - hset = lsquic_stream_get_hset(stream); - assert(hset == (void *) 12345); - s = lsquic_stream_shutdown(stream, 0); - assert(0 == s); - test_vals.status = QWH_PARTIAL; - test_vals.prefix_sz = 2; - test_vals.headers_sz = 40; - test_vals.completion_offset = 10; - assert(!(stream->sm_qflags & SMQF_WANT_WRITE)); /* Begin with them off */ - s = lsquic_stream_send_headers(stream, headers, 0); - assert(0 == s); - assert(stream->sm_hblock_sz == test_vals.prefix_sz + test_vals.headers_sz); - assert(0 == stream->sm_n_buffered); - assert(stream->sm_qflags & SMQF_WANT_WRITE); /* Want write is now set */ - nw = lsquic_stream_write(stream, "hello", 5); - assert(0 == nw); - s = lsquic_stream_flush(stream); - assert(s == 0); - s = lsquic_stream_close(stream); - assert(s == 0); - /* OK, we did not read FIN, expect these flags: */ - assert((stream->sm_qflags & (SMQF_SEND_STOP_SENDING|SMQF_WAIT_FIN_OFF)) == (SMQF_SEND_STOP_SENDING|SMQF_WAIT_FIN_OFF)); - lsquic_stream_ss_frame_sent(stream); - assert(stream->sm_hblock_sz == test_vals.prefix_sz + test_vals.headers_sz); - assert(0 == stream->sm_n_buffered); - assert(stream->sm_qflags & SMQF_WANT_WRITE); /* Still set */ - s_enc_off = 10; /* Encoder is done writing */ - lsquic_stream_dispatch_write_events(stream); - assert(stream->sm_qflags & SMQF_CALL_ONCLOSE); - lsquic_stream_acked(stream, QUIC_FRAME_STREAM); - lsquic_stream_call_on_close(stream); - assert(!(stream->sm_qflags & SMQF_FREE_STREAM)); /* Not yet */ - s_onreset_called = (struct reset_call_ctx) { NULL, -1, }; - lsquic_stream_rst_in(stream, 0, 0); - assert(s_onreset_called.stream == NULL); - assert(s_onreset_called.how == -1); - assert(!(stream->sm_qflags & (SMQF_SEND_STOP_SENDING|SMQF_WAIT_FIN_OFF))); - assert(stream->sm_qflags & SMQF_FREE_STREAM); - lsquic_stream_destroy(stream); - - deinit_test_objs(&tobjs); -} - - -static void -test_headers_wantwrite_restoration (const int want_write) -{ - struct test_objs tobjs; - struct lsquic_stream *stream; - ssize_t nw; - int s; - struct uncompressed_headers *uh; - void *hset; - - s_call_wantwrite_in_ctor = 1; - s_wantwrite_arg = want_write; - - /* For our tests purposes, we treat headers as an opaque object */ - struct lsquic_http_headers *headers = (void *) 1; - - init_test_objs(&tobjs, 0x1000, 0x1000, SCF_IETF); - - /* Mock server side stream cycle */ - - stream = new_stream(&tobjs, 4 * __LINE__, 0x1000); - uh = calloc(1, sizeof(*uh)); - *uh = (struct uncompressed_headers) { - .uh_stream_id = stream->id, - .uh_weight = 127, - .uh_hset = (void *) 12345, - }; - s = lsquic_stream_uh_in(stream, uh); - assert(s == 0); - hset = lsquic_stream_get_hset(stream); - assert(hset == (void *) 12345); - stream->stream_flags |= STREAM_FIN_RECVD; /* Pretend we received FIN */ - s = lsquic_stream_shutdown(stream, 0); - assert(0 == s); - test_vals.status = QWH_PARTIAL; - test_vals.prefix_sz = 2; - test_vals.headers_sz = 40; - test_vals.completion_offset = 10; - assert(want_write == !!(stream->sm_qflags & SMQF_WANT_WRITE)); - s = lsquic_stream_send_headers(stream, headers, 0); - assert(0 == s); - assert(stream->sm_hblock_sz == test_vals.prefix_sz + test_vals.headers_sz); - assert(0 == stream->sm_n_buffered); - assert(stream->sm_qflags & SMQF_WANT_WRITE); /* Want write is now set */ - nw = lsquic_stream_write(stream, "hello", 5); - assert(0 == nw); - s = lsquic_stream_flush(stream); - assert(s == 0); - s = lsquic_stream_close(stream); - assert(s == 0); - assert(stream->sm_hblock_sz == test_vals.prefix_sz + test_vals.headers_sz); - assert(0 == stream->sm_n_buffered); - assert(stream->sm_qflags & SMQF_WANT_WRITE); /* Still set */ - s_enc_off = 10; /* Encoder is done writing */ - lsquic_stream_dispatch_write_events(stream); - assert(stream->sm_qflags & SMQF_CALL_ONCLOSE); - lsquic_stream_acked(stream, QUIC_FRAME_STREAM); - lsquic_stream_call_on_close(stream); - assert(stream->sm_qflags & SMQF_FREE_STREAM); - lsquic_stream_destroy(stream); - - stream = new_stream(&tobjs, 4 * __LINE__, 0x1000); - uh = calloc(1, sizeof(*uh)); - *uh = (struct uncompressed_headers) { - .uh_stream_id = stream->id, - .uh_weight = 127, - .uh_hset = (void *) 12345, - }; - s = lsquic_stream_uh_in(stream, uh); - assert(s == 0); - hset = lsquic_stream_get_hset(stream); - assert(hset == (void *) 12345); - s = lsquic_stream_shutdown(stream, 0); - assert(0 == s); - test_vals.status = QWH_PARTIAL; - test_vals.prefix_sz = 2; - test_vals.headers_sz = 40; - test_vals.completion_offset = 10; - assert(want_write == !!(stream->sm_qflags & SMQF_WANT_WRITE)); - s = lsquic_stream_send_headers(stream, headers, 0); - assert(0 == s); - assert(stream->sm_hblock_sz == test_vals.prefix_sz + test_vals.headers_sz); - assert(0 == stream->sm_n_buffered); - assert(stream->sm_qflags & SMQF_WANT_WRITE); /* Want write is now set */ - s_enc_off = 10; /* Encoder is done writing */ - lsquic_stream_dispatch_write_events(stream); - assert(0 == stream->sm_hblock_sz); /* Wrote header */ - assert(want_write == s_onwrite_called); - lsquic_stream_destroy(stream); - - deinit_test_objs(&tobjs); - s_call_wantwrite_in_ctor = 0; - s_wantwrite_arg = 0; - s_onwrite_called = 0; -} - - -static void -test_pp_wantwrite_restoration (const int want_write) -{ - struct test_objs tobjs; - struct lsquic_stream *stream; - int s; - struct uncompressed_headers *uh; - struct push_promise *promise; - void *hset; - - s_call_wantwrite_in_ctor = 1; - s_wantwrite_arg = want_write; - - init_test_objs(&tobjs, 0x1000, 0x1000, SCF_IETF); - - /* Mock server side stream cycle */ - - stream = new_stream(&tobjs, 4 * __LINE__, 10); - uh = calloc(1, sizeof(*uh)); - *uh = (struct uncompressed_headers) { - .uh_stream_id = stream->id, - .uh_weight = 127, - .uh_hset = (void *) 12345, - }; - s = lsquic_stream_uh_in(stream, uh); - assert(s == 0); - hset = lsquic_stream_get_hset(stream); - assert(hset == (void *) 12345); - s = lsquic_stream_shutdown(stream, 0); - assert(0 == s); - promise = calloc(1, sizeof(*promise) + 20); - promise->pp_id = 0; - promise->pp_content_len = 20; - assert(want_write == !!(stream->sm_qflags & SMQF_WANT_WRITE)); - s = lsquic_stream_push_promise(stream, promise); - assert(s == 0); - assert((stream->stream_flags & (STREAM_NOPUSH|STREAM_PUSHING)) - == (STREAM_NOPUSH|STREAM_PUSHING)); - assert(stream->sm_qflags & SMQF_WANT_WRITE); /* Want write is now set */ - /* Dispatch: there should be no progress made */ - lsquic_stream_dispatch_write_events(stream); - assert((stream->stream_flags & (STREAM_NOPUSH|STREAM_PUSHING)) - == (STREAM_NOPUSH|STREAM_PUSHING)); - assert(stream->sm_qflags & SMQF_WANT_WRITE); - assert(SLIST_FIRST(&stream->sm_promises)->pp_write_state != PPWS_DONE); - /* Now update window and dispatch again */ - lsquic_stream_window_update(stream, 100); - lsquic_stream_dispatch_write_events(stream); - assert((stream->stream_flags & (STREAM_NOPUSH|STREAM_PUSHING)) - /* After push promise was all written, STREAM_PUSHING is no longer set */ - == STREAM_NOPUSH); - assert(SLIST_FIRST(&stream->sm_promises)->pp_write_state == PPWS_DONE); /* Done! */ - assert(want_write == s_onwrite_called); /* Restored: and on_write called */ - - lsquic_stream_destroy(stream); - deinit_test_objs(&tobjs); - s_call_wantwrite_in_ctor = 0; - s_wantwrite_arg = 0; - s_onwrite_called = 0; -} - - -/* Create a new stream frame. Each stream frame has a real packet_in to - * back it up, just like in real code. The contents of the packet do - * not matter. - */ -static stream_frame_t * -new_frame_in_ext (struct test_objs *tobjs, size_t off, size_t sz, int fin, - const void *data) -{ - lsquic_packet_in_t *packet_in; - stream_frame_t *frame; - - assert(sz <= 1370); - - packet_in = lsquic_mm_get_packet_in(&tobjs->eng_pub.enp_mm); - if (data) - packet_in->pi_data = (void *) data; - else - { - packet_in->pi_data = lsquic_mm_get_packet_in_buf(&tobjs->eng_pub.enp_mm, 1370); - packet_in->pi_flags |= PI_OWN_DATA; - memset(packet_in->pi_data, 'A', sz); - } - /* This is not how stream frame looks in the packet: we have no - * header. In our test case it does not matter, as we only care - * about stream frame. - */ - packet_in->pi_data_sz = sz; - packet_in->pi_refcnt = 1; - - frame = lsquic_malo_get(tobjs->eng_pub.enp_mm.malo.stream_frame); - memset(frame, 0, sizeof(*frame)); - frame->packet_in = packet_in; - frame->data_frame.df_offset = off; - frame->data_frame.df_size = sz; - frame->data_frame.df_data = &packet_in->pi_data[0]; - frame->data_frame.df_fin = fin; - - return frame; -} - - -static stream_frame_t * -new_frame_in (struct test_objs *tobjs, size_t off, size_t sz, int fin) -{ - return new_frame_in_ext(tobjs, off, sz, fin, NULL); -} - - -/* Test that reading from stream returns -1/EWOULDBLOCK if no headers are - * available. - */ -static void -test_read_headers (int ietf, int use_hset) -{ - struct test_objs tobjs; - struct lsquic_stream *stream; - struct stream_frame *frame; - ssize_t nr; - int s; - void *hset; - unsigned char buf[1]; - - init_test_objs(&tobjs, 0x1000, 0x1000, ietf ? SCF_IETF : 0); - - stream = new_stream(&tobjs, 0, 0x1000); - frame = new_frame_in(&tobjs, 0, 35, 1); - s = lsquic_stream_frame_in(stream, frame); - assert(s == 0); - - if (use_hset) - { - hset = lsquic_stream_get_hset(stream); - assert(NULL == hset); - } - else - { - nr = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(-1 == nr); - /* In GQUIC mode, the error is that the headers are no available yet. - * In IETF mode, the error is that we hit EOF unexpectedly -- as headers - * are sent on the same stream in HEADERS frame. - */ - if (!ietf) - assert(EWOULDBLOCK == errno); - } - - lsquic_stream_destroy(stream); - - deinit_test_objs(&tobjs); -} - - -static void -test_read_headers_http1x (void) -{ - struct test_objs tobjs; - struct lsquic_stream *stream; - struct stream_frame *frame; - int s; - const unsigned char headers_frame[5] = { - 0x01, /* Headers frame */ - 0x03, /* Frame length */ - 0x00, - 0x00, - 0xC0 | 25 /* :status 200 */, - }; - ssize_t nr; - unsigned char buf[0x100]; - - init_test_objs(&tobjs, 0x1000, 0x1000, SCF_IETF); - - stream = new_stream(&tobjs, 0, 0x1000); - frame = new_frame_in(&tobjs, 0, sizeof(headers_frame), 1); - memcpy((unsigned char *) frame->data_frame.df_data, headers_frame, - sizeof(headers_frame)); - s = lsquic_stream_frame_in(stream, frame); - assert(s == 0); - - assert(stream->stream_flags & STREAM_FIN_REACHED); - s = lsquic_stream_readable(stream); - - nr = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(nr > 0); - assert(nr == 19); - assert(0 == memcmp(buf, "HTTP/1.1 200 OK\r\n\r\n", nr)); - - lsquic_stream_destroy(stream); - - deinit_test_objs(&tobjs); -} - - -int -main (int argc, char **argv) -{ - int opt; - - lsquic_global_init(LSQUIC_GLOBAL_SERVER); - - while (-1 != (opt = getopt(argc, argv, "l:"))) - { - switch (opt) - { - case 'l': - lsquic_log_to_fstream(stderr, LLTS_NONE); - lsquic_logger_lopt(optarg); - break; - default: - exit(1); - } - } - - test_flushes_and_closes(); - test_headers_wantwrite_restoration(0); - test_headers_wantwrite_restoration(1); - test_pp_wantwrite_restoration(0); - test_pp_wantwrite_restoration(1); - test_read_headers(0, 0); - test_read_headers(0, 1); - test_read_headers(1, 0); - test_read_headers(1, 1); - test_read_headers_http1x(); - - return 0; -} diff --git a/external/lsquic/tests/test_senhist.c b/external/lsquic/tests/test_senhist.c deleted file mode 100644 index 4804bef..0000000 --- a/external/lsquic/tests/test_senhist.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include -#ifdef _MSC_VER -#include "vc_compat.h" -#endif -#include "lsquic_int_types.h" -#include "lsquic_senhist.h" -#include "lsquic_types.h" -#include "lsquic_logger.h" - - -int -main (void) -{ - struct lsquic_senhist hist = { 0, 0 -#if !LSQUIC_SENHIST_FATAL - , 0 -#endif - }; - lsquic_packno_t packno; - - lsquic_senhist_init(&hist, 0); - - assert(0 == lsquic_senhist_largest(&hist)); - - for (packno = 1; packno < 100; ++packno) - lsquic_senhist_add(&hist, packno); - - assert(99 == lsquic_senhist_largest(&hist)); - - lsquic_senhist_cleanup(&hist); - - return 0; -} diff --git a/external/lsquic/tests/test_set.c b/external/lsquic/tests/test_set.c deleted file mode 100644 index 28ce4a3..0000000 --- a/external/lsquic/tests/test_set.c +++ /dev/null @@ -1,151 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include - -#include "lsquic_set.h" - -static void -test_lsquic_set32 (void) -{ - lsquic_set32_t set; - int i, s; - - lsquic_set32_init(&set); - - for (i = 2; i < 100; ++i) - { - assert(("Value is not yet in the set", !lsquic_set32_has(&set, i))); - s = lsquic_set32_add(&set, i); - assert(0 == s); - } - - assert(("Value is not yet in the set", !lsquic_set32_has(&set, 0))); - s = lsquic_set32_add(&set, 0); - assert(0 == s); - assert(("Value is not yet in the set", !lsquic_set32_has(&set, 1))); - s = lsquic_set32_add(&set, 1); - assert(0 == s); - - for (i = 0; i < 100; ++i) - assert(("Value is in the set", lsquic_set32_has(&set, i))); - - for (i = 300; i > 200; --i) - { - assert(("Value is not yet in the set", !lsquic_set32_has(&set, i))); - s = lsquic_set32_add(&set, i); - assert(0 == s); - } - - for (i = 300; i > 200; --i) - assert(("Value is in the set", lsquic_set32_has(&set, i))); - - for (i = 100; i <= 200; ++i) - assert(("Value is not in the set", !lsquic_set32_has(&set, i))); - - for (i = 1000; i < 2000; i += 4) - { - assert(("Value is not yet in the set", !lsquic_set32_has(&set, i))); - lsquic_set32_add(&set, i); - } - - for (i = 1000; i < 2000; i += 4) - assert(("Value is in the set", lsquic_set32_has(&set, i))); - - for (i = 1000; i < 2000; i += 4) - { - assert(("Value is not yet in the set", !lsquic_set32_has(&set, i + 1))); - lsquic_set32_add(&set, i + 1); - assert(("Value is not yet in the set", !lsquic_set32_has(&set, i + 3))); - lsquic_set32_add(&set, i + 3); - assert(("Value is not yet in the set", !lsquic_set32_has(&set, i + 2))); - lsquic_set32_add(&set, i + 2); - } - - for (i = 0; i < 100; ++i) - assert(("Value is in the set", lsquic_set32_has(&set, i))); - for (i = 100; i <= 200; ++i) - assert(("Value is not in the set", !lsquic_set32_has(&set, i))); - for (i = 201; i <= 300; ++i) - assert(("Value is in the set", lsquic_set32_has(&set, i))); - for (i = 1000; i < 2000; ++i) - assert(("Value is in the set", lsquic_set32_has(&set, i))); - - lsquic_set32_cleanup(&set); -} - - -static void -test_lsquic_set64 (void) -{ - lsquic_set64_t set; - int i; - - lsquic_set64_init(&set); - - for (i = 2; i < 100; ++i) - { - assert(("Value is not yet in the set", !lsquic_set64_has(&set, i))); - lsquic_set64_add(&set, i); - } - - assert(("Value is not yet in the set", !lsquic_set64_has(&set, 0))); - lsquic_set64_add(&set, 0); - assert(("Value is not yet in the set", !lsquic_set64_has(&set, 1))); - lsquic_set64_add(&set, 1); - - for (i = 0; i < 100; ++i) - assert(("Value is in the set", lsquic_set64_has(&set, i))); - - for (i = 300; i > 200; --i) - { - assert(("Value is not yet in the set", !lsquic_set64_has(&set, i))); - lsquic_set64_add(&set, i); - } - - for (i = 300; i > 200; --i) - assert(("Value is in the set", lsquic_set64_has(&set, i))); - - for (i = 100; i <= 200; ++i) - assert(("Value is not in the set", !lsquic_set64_has(&set, i))); - - for (i = 1000; i < 2000; i += 4) - { - assert(("Value is not yet in the set", !lsquic_set64_has(&set, i))); - lsquic_set64_add(&set, i); - } - - for (i = 1000; i < 2000; i += 4) - assert(("Value is in the set", lsquic_set64_has(&set, i))); - - for (i = 1000; i < 2000; i += 4) - { - assert(("Value is not yet in the set", !lsquic_set64_has(&set, i + 1))); - lsquic_set64_add(&set, i + 1); - assert(("Value is not yet in the set", !lsquic_set64_has(&set, i + 3))); - lsquic_set64_add(&set, i + 3); - assert(("Value is not yet in the set", !lsquic_set64_has(&set, i + 2))); - lsquic_set64_add(&set, i + 2); - } - - for (i = 0; i < 100; ++i) - assert(("Value is in the set", lsquic_set64_has(&set, i))); - for (i = 100; i <= 200; ++i) - assert(("Value is not in the set", !lsquic_set64_has(&set, i))); - for (i = 201; i <= 300; ++i) - assert(("Value is in the set", lsquic_set64_has(&set, i))); - for (i = 1000; i < 2000; ++i) - assert(("Value is in the set", lsquic_set64_has(&set, i))); - - lsquic_set64_cleanup(&set); -} - - -int -main (void) -{ - test_lsquic_set32(); - test_lsquic_set64(); - return 0; -} diff --git a/external/lsquic/tests/test_sfcw.c b/external/lsquic/tests/test_sfcw.c deleted file mode 100644 index 67c6598..0000000 --- a/external/lsquic/tests/test_sfcw.c +++ /dev/null @@ -1,64 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include - -#include "lsquic_types.h" -#include "lsquic_int_types.h" -#include "lsquic.h" -#include "lsquic_conn_flow.h" -#include "lsquic_rtt.h" -#include "lsquic_sfcw.h" -#include "lsquic_varint.h" -#include "lsquic_hq.h" -#include "lsquic_hash.h" -#include "lsquic_stream.h" -#include "lsquic_conn_public.h" -#include "lsquic_conn.h" - - -int -main (void) -{ - lsquic_global_init(LSQUIC_GLOBAL_SERVER); - const unsigned INIT_WINDOW_SIZE = 16 * 1024; - struct lsquic_sfcw fc; - struct lsquic_conn lconn; - struct lsquic_conn_public conn_pub; - uint64_t recv_off; - int s; - - memset(&lconn, 0, sizeof(lconn)); - LSCONN_INITIALIZE(&lconn); - memset(&conn_pub, 0, sizeof(conn_pub)); - conn_pub.lconn = &lconn; - lsquic_sfcw_init(&fc, INIT_WINDOW_SIZE, NULL, &conn_pub, 123); - - recv_off = lsquic_sfcw_get_fc_recv_off(&fc); - assert(("First send update advertizes offset same as initial window size", - INIT_WINDOW_SIZE == recv_off)); - - s = lsquic_sfcw_fc_offsets_changed(&fc); - assert(("First time, recv offset has not changed", !s)); - - s = lsquic_sfcw_set_max_recv_off(&fc, recv_off + 1); - assert(("Cannot set max recv larger than flow control receive offset", !s)); - - s = lsquic_sfcw_set_max_recv_off(&fc, recv_off); - assert(("Set max recv larger to flow control receive offset successfully", s)); - - s = lsquic_sfcw_fc_offsets_changed(&fc); - assert(("fc recv offset has not changed: need to consume data", !s)); - - lsquic_sfcw_set_read_off(&fc, INIT_WINDOW_SIZE * 2 / 3); - s = lsquic_sfcw_fc_offsets_changed(&fc); - assert(("recv offset has now changed", s)); - - recv_off = lsquic_sfcw_get_fc_recv_off(&fc); - assert(("Updated flow control receive window checks out", - INIT_WINDOW_SIZE * 5 / 3 == recv_off)); - - return 0; -} diff --git a/external/lsquic/tests/test_shi.c b/external/lsquic/tests/test_shi.c deleted file mode 100644 index 492701d..0000000 --- a/external/lsquic/tests/test_shi.c +++ /dev/null @@ -1,119 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#else -#include "vc_compat.h" -#include -#endif - -#include "lsquic.h" -#include "lsquic_stock_shi.h" - -static const struct pair { - const char *key, *value; -} pairs[] = { - { "Dude,", "where is my car?", }, - { "Balls of fur", "y", }, - { "Grand", "piano", }, - { "sWeet", "Potato", }, - { "Mac ", "and CHEESE!", }, -}; - - - - -#define N_PAIRS (sizeof(pairs) / sizeof(pairs[0])) - -static const struct order { - int order[N_PAIRS]; - int expire; -} orderings[] = { - {{ 0, 1, 2, 3, 4, }, 1, }, - {{ 0, 2, 3, 1, 4, }, 2, }, - {{ 2, 1, 0, 4, 3, }, 3, }, -}; - - -static void -test_shi (const struct order *order) -{ - unsigned i; - int s; - struct stock_shared_hash *hash; - const struct pair *pair; - unsigned data_sz; - const time_t now = time(NULL); - time_t expiry; - void *datap; - - hash = lsquic_stock_shared_hash_new(); - - for (i = 0; i < N_PAIRS; ++i) - { - pair = &pairs[ order->order[i] ]; - if (order->order[i] == order->expire) - expiry = now + 1; - else - expiry = 0; - s = stock_shi.shi_insert(hash, (char *)pair->key, strlen(pair->key), - (char *)pair->value, strlen(pair->value), expiry); - assert(0 == s); - } - -#ifndef WIN32 - sleep(2); /* Let the thing expire */ -#else - Sleep(2000); /* Let the thing expire */ -#endif - - for (i = 0; i < N_PAIRS; ++i) - { - pair = &pairs[ order->order[i] ]; - s = stock_shi.shi_lookup(hash, pair->key, strlen(pair->key), - &datap, &data_sz); - if (order->order[i] == order->expire) - { - assert(0 == s); - } - else - { - assert(1 == s); - assert(data_sz == strlen(pair->value)); - assert(0 == strncmp(pair->value, datap, data_sz)); - } - } - - for (i = 0; i < N_PAIRS; ++i) - { - pair = &pairs[ order->order[i] ]; - s = stock_shi.shi_delete(hash, pair->key, strlen(pair->key)); - if (order->order[i] == order->expire) - assert(0 != s); - else - assert(0 == s); - } - - for (i = 0; i < N_PAIRS; ++i) - { - pair = &pairs[ order->order[i] ]; - s = stock_shi.shi_lookup(hash, pair->key, strlen(pair->key), - &datap, &data_sz); - assert(0 == s); - } - - lsquic_stock_shared_hash_destroy(hash); -} - - -int -main (void) -{ - unsigned i; - for (i = 0; i < sizeof(orderings) / sizeof(orderings[0]); ++i) - test_shi(&orderings[i]); - return 0; -} diff --git a/external/lsquic/tests/test_some_packets.c b/external/lsquic/tests/test_some_packets.c deleted file mode 100644 index 88766b4..0000000 --- a/external/lsquic/tests/test_some_packets.c +++ /dev/null @@ -1,133 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* Tests in this file have been migrated out of maintest.c */ -/* TODO: fix warnings */ - -#include -#include -#include -#include -#include - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_parse.h" -#include "lsquic_sfcw.h" -#include "lsquic_varint.h" -#include "lsquic_hq.h" -#include "lsquic_hash.h" -#include "lsquic_stream.h" -#include "lsquic_packet_common.h" -#include "lsquic_packet_in.h" - -struct lsquic_stream_if; - -static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); - -lsquic_stream_t * -lsquic_stream_new_ext (uint32_t id, - struct lsquic_conn_public *conn_pub, - const struct lsquic_stream_if *stream_if, - void *stream_if_ctx, unsigned initial_sfcw, - unsigned initial_send_off, enum stream_ctor_flags ctor_flags) -{ - lsquic_stream_t *stream = calloc(1, sizeof(*stream)); - stream->id = id; - return stream; -} - -uint64_t -lsquic_stream_tosend_offset (const lsquic_stream_t *stream) -{ - return 1000; -} - -int -lsquic_stream_tosend_fin (const lsquic_stream_t *stream) -{ - return 0; -} - -size_t -lsquic_stream_tosend_read (lsquic_stream_t *stream, void *buf, size_t len, - int *reached_fin) -{ - memcpy(buf, "123456789012345678901234567890", 30); - *reached_fin = lsquic_stream_tosend_fin(stream); - return 30; -} - -size_t -lsquic_stream_tosend_sz (const lsquic_stream_t *stream) -{ - return 30; -} - -static int make_complex_packet(unsigned char *pkt_buf, int max_buf_len) -{ -#if 0 /* What is this function testing? Seems useless. */ - unsigned char *p = pkt_buf; - unsigned char *const pend = p + 1500; - lsquic_stream_t *stream = lsquic_stream_new(12345, NULL, NULL, NULL, 0, 0); - uint32_t stream_id = 13989; - uint64_t offset = 10000; - uint64_t conn_id = 123579; - const char nonce[] = "1234567890ABCDEF1234567890abcdef"; /*32 bytes*/ - uint64_t packet_num = 1356789; - - int buf_len = pf->pf_gen_reg_pkt_header(p, 100, &conn_id, NULL, (const unsigned char *) nonce, packet_num, - calc_packno_bits(packet_num, 0, 0)); - assert(buf_len > 0); - p += buf_len; - - buf_len = pf->pf_gen_stream_frame(p, pend - p, - stream->id, lsquic_stream_tosend_offset(stream), - lsquic_stream_tosend_fin(stream), - lsquic_stream_tosend_sz(stream), - (gsf_read_f) lsquic_stream_tosend_read, - stream); - p += buf_len; - - buf_len = pf->pf_gen_window_update_frame(p, pend - p, stream_id, offset); - p += buf_len; - - free(stream); - - return p - pkt_buf; -#endif - return 0; -} - - -void test_stream_frame() -{ - const uint8_t data[] = "123456789012345678901234567890"; - lsquic_stream_t *stream = lsquic_stream_new(12345, NULL, NULL, NULL, 0, 0); - uint8_t buf[1500]; - int buf_len = pf->pf_gen_stream_frame(buf, 1500, - stream->id, lsquic_stream_tosend_offset(stream), - lsquic_stream_tosend_fin(stream), - lsquic_stream_tosend_sz(stream), - (gsf_read_f) lsquic_stream_tosend_read, - stream); - stream_frame_t stream_frame2; - pf->pf_parse_stream_frame(buf, buf_len, &stream_frame2); - assert(0 == stream_frame2.data_frame.df_fin ); - assert(30 == stream_frame2.data_frame.df_size ); - assert(1000 == stream_frame2.data_frame.df_offset ); - assert(12345 == stream_frame2.stream_id); - assert(memcmp(data,stream_frame2.data_frame.df_data, stream_frame2.data_frame.df_size) == 0); - printf("test_stream_frame passed.\n"); - free(stream); -} - - -int -main (void) -{ - uint8_t pkt_buf[1500]; - size_t buf_len; - buf_len = make_complex_packet(pkt_buf, 1500); - (void) buf_len; - test_stream_frame(); - return 0; -} diff --git a/external/lsquic/tests/test_spi.c b/external/lsquic/tests/test_spi.c deleted file mode 100644 index b603a4c..0000000 --- a/external/lsquic/tests/test_spi.c +++ /dev/null @@ -1,344 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" - -#include "lsquic_int_types.h" -#include "lsquic_packet_common.h" -#include "lsquic_packet_in.h" -#include "lsquic_conn_flow.h" -#include "lsquic_sfcw.h" -#include "lsquic_varint.h" -#include "lsquic_hq.h" -#include "lsquic_hash.h" -#include "lsquic_conn.h" -#include "lsquic_stream.h" -#include "lsquic_types.h" -#include "lsquic_rtt.h" -#include "lsquic_conn_public.h" -#include "lsquic_spi.h" -#include "lsquic_logger.h" - - -/* Sharing the same SPI tests safety of reusing the same iterator object - * (no need to deinitialize it). - */ -static struct stream_prio_iter spi; - -static struct lsquic_conn lconn = LSCONN_INITIALIZER_CIDLEN(lconn, 0); - -static struct lsquic_conn_public conn_pub = { .lconn = &lconn, }; - - -static lsquic_stream_t * -new_stream (unsigned priority) -{ - lsquic_stream_t *stream = calloc(1, sizeof(*stream)); - stream->sm_priority = priority; - return stream; -} - - -static void -free_streams (lsquic_stream_t **streams, size_t count) -{ - size_t n; - for (n = 0; n < count; ++n) - free(streams[n]); -} - - -static void -test_same_priority (unsigned priority) -{ - lsquic_stream_t *stream_arr[4] = { - new_stream(priority), - new_stream(priority), - new_stream(priority), - new_stream(priority), - }; - struct lsquic_streams_tailq streams; - lsquic_stream_t *stream; - - TAILQ_INIT(&streams); - TAILQ_INSERT_TAIL(&streams, stream_arr[0], next_write_stream); - TAILQ_INSERT_TAIL(&streams, stream_arr[1], next_write_stream); - TAILQ_INSERT_TAIL(&streams, stream_arr[2], next_write_stream); - TAILQ_INSERT_TAIL(&streams, stream_arr[3], next_write_stream); - - lsquic_spi_init(&spi, TAILQ_FIRST(&streams), - TAILQ_LAST(&streams, lsquic_streams_tailq), - (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_write_stream), - &conn_pub, __func__, NULL, NULL); - - stream = lsquic_spi_first(&spi); - assert(stream == stream_arr[0]); - stream = lsquic_spi_next(&spi); - assert(stream == stream_arr[1]); - stream = lsquic_spi_next(&spi); - assert(stream == stream_arr[2]); - stream = lsquic_spi_next(&spi); - assert(stream == stream_arr[3]); - stream = lsquic_spi_next(&spi); - assert(stream == NULL); - - /* Test reinitialization: */ - lsquic_spi_init(&spi, stream_arr[0], stream_arr[1], - (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_write_stream), - &conn_pub, __func__, NULL, NULL); - stream = lsquic_spi_first(&spi); - assert(stream == stream_arr[0]); - stream = lsquic_spi_next(&spi); - assert(stream == stream_arr[1]); - stream = lsquic_spi_next(&spi); - assert(stream == NULL); - - free_streams(stream_arr, sizeof(stream_arr) / sizeof(stream_arr[0])); -} - - -static void -test_different_priorities (int *priority) -{ - struct lsquic_streams_tailq streams; - lsquic_stream_t *stream; - int prio, prev_prio, count, n_streams = 0; - - TAILQ_INIT(&streams); - - for ( ; *priority >= 0; ++priority) - { - assert(*priority < 256); - stream = new_stream(*priority); - TAILQ_INSERT_TAIL(&streams, stream, next_send_stream); - ++n_streams; - } - - lsquic_spi_init(&spi, TAILQ_FIRST(&streams), - TAILQ_LAST(&streams, lsquic_streams_tailq), - (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_send_stream), - &conn_pub, __func__, NULL, NULL); - for (prev_prio = -1, count = 0, stream = lsquic_spi_first(&spi); stream; - stream = lsquic_spi_next(&spi), ++count) - { - prio = stream->sm_priority; - assert(prio >= prev_prio); - if (prio > prev_prio) - prev_prio = prio; - } - - assert(count == n_streams); - - while ((stream = TAILQ_FIRST(&streams))) - { - TAILQ_REMOVE(&streams, stream, next_send_stream); - free(stream); - } -} - - -struct stream_info -{ - uint32_t stream_id; - enum stream_b_flags bflags; - unsigned char prio; -}; - - -const struct stream_info infos1[] = { - { 1, SMBF_CRITICAL, 0, }, - { 3, SMBF_CRITICAL, 0, }, - { 5, 0, 0, }, - { 7, 0, 1, }, - { 127, 0, 200, }, -}; - - -const struct stream_info infos2[] = { - { 1, SMBF_CRITICAL, 0, }, - { 3, SMBF_CRITICAL, 0, }, - { 5, 0, 4, }, - { 7, 0, 1, }, - { 127, 0, 200, }, -}; - - -const struct stream_info infos3[] = { - { 0, 0, 0, }, -}; - - -struct drop_test -{ - const struct stream_info *infos; - unsigned n_infos; - unsigned high_streams; -}; - - -static const struct drop_test drop_tests[] = { - { infos1, 5, 0x7, }, - { infos2, 5, 0x3, }, - { infos3, 1, 0x0, }, -}; - - -static void -test_drop (const struct drop_test *test) -{ - - struct lsquic_stream stream_arr[20]; - unsigned seen_mask, n; - struct lsquic_streams_tailq streams; - lsquic_stream_t *stream; - int drop_high; - - TAILQ_INIT(&streams); - for (n = 0; n < test->n_infos; ++n) - { - stream_arr[n].sm_priority = test->infos[n].prio; - stream_arr[n].id = test->infos[n].stream_id; - stream_arr[n].sm_bflags = SMBF_USE_HEADERS | test->infos[n].bflags; - } - - for (drop_high = 0; drop_high < 2; ++drop_high) - { - TAILQ_INIT(&streams); - for (n = 0; n < test->n_infos; ++n) - TAILQ_INSERT_TAIL(&streams, &stream_arr[n], next_write_stream); - - lsquic_spi_init(&spi, TAILQ_FIRST(&streams), - TAILQ_LAST(&streams, lsquic_streams_tailq), - (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_write_stream), - &conn_pub, __func__, NULL, NULL); - - if (drop_high) - lsquic_spi_drop_high(&spi); - else - lsquic_spi_drop_non_high(&spi); - - seen_mask = 0; - for (stream = lsquic_spi_first(&spi); stream; - stream = lsquic_spi_next(&spi)) - seen_mask |= 1 << (stream - stream_arr); - - if (test->n_infos == 1) - assert(seen_mask == (1u << test->infos[0].stream_id)); - else if (drop_high) - assert((((1 << test->n_infos) - 1) & ~test->high_streams) == seen_mask); - else - assert(test->high_streams == seen_mask); - } -} - - -#define MAGIC 0x12312312U - -struct my_filter_ctx -{ - unsigned magic; -}; - - -static int -filter_out_odd_priorities (void *ctx, lsquic_stream_t *stream) -{ - struct my_filter_ctx *fctx = ctx; - assert(fctx->magic == MAGIC); - return 0 == (stream->sm_priority & 1); -} - - -static void -test_different_priorities_filter_odd (int *priority) -{ - struct lsquic_streams_tailq streams; - lsquic_stream_t *stream; - int prio, prev_prio, count, n_streams = 0; - - TAILQ_INIT(&streams); - - for ( ; *priority >= 0; ++priority) - { - assert(*priority < 256); - stream = new_stream(*priority); - TAILQ_INSERT_TAIL(&streams, stream, next_send_stream); - ++n_streams; - } - - struct my_filter_ctx my_filter_ctx = { MAGIC }; - - lsquic_spi_init(&spi, TAILQ_FIRST(&streams), - TAILQ_LAST(&streams, lsquic_streams_tailq), - (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_send_stream), - &conn_pub, __func__, filter_out_odd_priorities, &my_filter_ctx); - - for (prev_prio = -1, count = 0, stream = lsquic_spi_first(&spi); stream; - stream = lsquic_spi_next(&spi), ++count) - { - prio = stream->sm_priority; - assert(0 == (prio & 1)); - assert(prio >= prev_prio); - if (prio > prev_prio) - prev_prio = prio; - } - - assert(count < n_streams); - - while ((stream = TAILQ_FIRST(&streams))) - { - TAILQ_REMOVE(&streams, stream, next_send_stream); - free(stream); - } -} - - -int -main (int argc, char **argv) -{ - lsquic_log_to_fstream(stderr, LLTS_NONE); - lsq_log_levels[LSQLM_SPI] = LSQ_LOG_DEBUG; - - test_same_priority(0); - test_same_priority(99); - test_same_priority(255); - - { - int prio[] = { 1, 2, 3, 4, 5, 6, 7, -1 }; - test_different_priorities(prio); - } - - { - int prio[] = { 7, 6, 5, 4, 3, 2, 1, -1 }; - test_different_priorities(prio); - } - - { - int prio[] = { 7, 100, 80, 1, 0, 0, 20, 23, 255, 30, 2, 101, -1 }; - test_different_priorities(prio); - } - - { - int prio[] = { 200, 202, 240, 201, 200, 199, -1 }; - test_different_priorities(prio); - } - - { - int prio[] = { 200, 202, 240, 201, 200, 199, -1 }; - test_different_priorities_filter_odd(prio); - } - - unsigned n; - for (n = 0; n < sizeof(drop_tests) / sizeof(drop_tests[0]); ++n) - test_drop(&drop_tests[n]); - - return 0; -} diff --git a/external/lsquic/tests/test_stop_waiting_gquic_be.c b/external/lsquic/tests/test_stop_waiting_gquic_be.c deleted file mode 100644 index d1195c2..0000000 --- a/external/lsquic/tests/test_stop_waiting_gquic_be.c +++ /dev/null @@ -1,101 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_parse.h" - -//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC -#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) - - -struct parse_test { - /* Input: */ - unsigned char buf[0x10]; - size_t buf_len; - lsquic_packno_t cur_packno; - enum packno_bits - bits; - /* Expected values: */ - int retval; - lsquic_packno_t least_unacked; -}; - -static const struct parse_test parse_tests[] = { - { - .buf = { 0x06, 0x34, 0x12, 0x45, 0x67, 0x89, 0xAB, }, - .buf_len = 3, - .least_unacked = 0x1111, - .cur_packno = 0x4523, - .bits = GQUIC_PACKNO_LEN_2, - .retval = 3, - }, - - { - .buf = { 0x06, 0x12, 0x34, 0x45, 0x67, 0x89, 0xAB, }, - .buf_len = 2, - .least_unacked = 0x1111, - .cur_packno = 0x4523, - .bits = GQUIC_PACKNO_LEN_2, - .retval = -1, - }, - - { - .buf = { 0x06, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, }, - .buf_len = 7, - .least_unacked = 0x1122324252627282, - .cur_packno = 0x1122334455667788, - .bits = GQUIC_PACKNO_LEN_6, - .retval = 7, - }, - - { .buf = { 0 }, } -}; - - -static void -run_parse_tests (void) -{ - const struct parse_test *test; - for (test = parse_tests; test->buf[0]; ++test) - { - lsquic_packno_t least; - memset(&least, 0x33, sizeof(least)); - int sz = pf->pf_parse_stop_waiting_frame(test->buf, test->buf_len, - test->cur_packno, test->bits, &least); - assert(("return value is correct", sz == test->retval)); - if (test->retval > 0) - assert(("least ACKed value is correct", least == test->least_unacked)); - } -} - - -static void -run_gen_tests (void) -{ - const struct parse_test *test; - for (test = parse_tests; test->buf[0]; ++test) - { - unsigned char buf[0x100]; - int sz = pf->pf_gen_stop_waiting_frame(buf, test->buf_len, - test->cur_packno, test->bits, test->least_unacked); - assert(("return value is correct", sz == test->retval)); - if (test->retval > 0) - assert(("generated frame is correct", 0 == memcmp(test->buf, buf, sz))); - } -} - - -int -main (void) -{ - run_parse_tests(); - run_gen_tests(); - return 0; -} diff --git a/external/lsquic/tests/test_stop_waiting_gquic_le.c b/external/lsquic/tests/test_stop_waiting_gquic_le.c deleted file mode 100644 index 93a18b3..0000000 --- a/external/lsquic/tests/test_stop_waiting_gquic_le.c +++ /dev/null @@ -1,101 +0,0 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_alarmset.h" -#include "lsquic_parse.h" - -static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); - - -struct parse_test { - /* Input: */ - unsigned char buf[0x10]; - size_t buf_len; - lsquic_packno_t cur_packno; - enum packno_bits - bits; - /* Expected values: */ - int retval; - lsquic_packno_t least_unacked; -}; - -static const struct parse_test parse_tests[] = { - { - .buf = { 0x06, 0x12, 0x34, 0x45, 0x67, 0x89, 0xAB, }, - .buf_len = 3, - .least_unacked = 0x1111, - .cur_packno = 0x4523, - .bits = GQUIC_PACKNO_LEN_2, - .retval = 3, - }, - - { - .buf = { 0x06, 0x12, 0x34, 0x45, 0x67, 0x89, 0xAB, }, - .buf_len = 2, - .least_unacked = 0x1111, - .cur_packno = 0x4523, - .bits = GQUIC_PACKNO_LEN_2, - .retval = -1, - }, - - { - .buf = { 0x06, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, }, - .buf_len = 7, - .least_unacked = 0x1122324252627282, - .cur_packno = 0x1122334455667788, - .bits = GQUIC_PACKNO_LEN_6, - .retval = 7, - }, - - { .buf = { 0 }, } -}; - - -static void -run_parse_tests (void) -{ - const struct parse_test *test; - for (test = parse_tests; test->buf[0]; ++test) - { - lsquic_packno_t least; - memset(&least, 0x33, sizeof(least)); - int sz = pf->pf_parse_stop_waiting_frame(test->buf, test->buf_len, - test->cur_packno, test->bits, &least); - assert(("return value is correct", sz == test->retval)); - if (test->retval > 0) - assert(("least ACKed value is correct", least == test->least_unacked)); - } -} - - -static void -run_gen_tests (void) -{ - const struct parse_test *test; - for (test = parse_tests; test->buf[0]; ++test) - { - unsigned char buf[0x100]; - int sz = pf->pf_gen_stop_waiting_frame(buf, test->buf_len, - test->cur_packno, test->bits, test->least_unacked); - assert(("return value is correct", sz == test->retval)); - if (test->retval > 0) - assert(("generated frame is correct", 0 == memcmp(test->buf, buf, sz))); - } -} - - -int -main (void) -{ - run_parse_tests(); - run_gen_tests(); - return 0; -} diff --git a/external/lsquic/tests/test_stream.c b/external/lsquic/tests/test_stream.c deleted file mode 100644 index 5c7d50c..0000000 --- a/external/lsquic/tests/test_stream.c +++ /dev/null @@ -1,3858 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#else -#include -#endif - -#include "lsquic.h" - -#include "lsquic_packet_common.h" -#include "lsquic_alarmset.h" -#include "lsquic_packet_in.h" -#include "lsquic_conn_flow.h" -#include "lsquic_rtt.h" -#include "lsquic_sfcw.h" -#include "lsquic_varint.h" -#include "lsquic_hq.h" -#include "lsquic_hash.h" -#include "lsquic_stream.h" -#include "lsquic_types.h" -#include "lsquic_malo.h" -#include "lsquic_mm.h" -#include "lsquic_conn_public.h" -#include "lsquic_logger.h" -#include "lsquic_parse.h" -#include "lsquic_conn.h" -#include "lsquic_engine_public.h" -#include "lsquic_cubic.h" -#include "lsquic_pacer.h" -#include "lsquic_senhist.h" -#include "lsquic_bw_sampler.h" -#include "lsquic_minmax.h" -#include "lsquic_bbr.h" -#include "lsquic_adaptive_cc.h" -#include "lsquic_send_ctl.h" -#include "lsquic_ver_neg.h" -#include "lsquic_packet_out.h" -#include "lsquic_enc_sess.h" -#include "lsqpack.h" -#include "lsquic_frab_list.h" -#include "lsquic_qenc_hdl.h" -#include "lsquic_varint.h" -#include "lsquic_hq.h" -#include "lsquic_data_in_if.h" - -static const struct parse_funcs *g_pf; // = select_pf_by_ver(LSQVER_043); // will not work on MSVC, moved init to main() - -static int g_use_crypto_ctor; - -struct test_ctl_settings -{ - int tcs_schedule_stream_packets_immediately; - int tcs_have_delayed_packets; - int tcs_can_send; - int tcs_write_ack; - enum buf_packet_type - tcs_bp_type; - enum packno_bits - tcs_guess_packno_bits, - tcs_calc_packno_bits; -}; - - -static struct test_ctl_settings g_ctl_settings; - - -static void -init_buf (void *buf, size_t sz); - - -/* Set values to default */ -static void -init_test_ctl_settings (struct test_ctl_settings *settings) -{ - settings->tcs_schedule_stream_packets_immediately = 1; - settings->tcs_have_delayed_packets = 0; - settings->tcs_can_send = 1; - settings->tcs_write_ack = 0; - settings->tcs_bp_type = BPT_HIGHEST_PRIO; - settings->tcs_guess_packno_bits = GQUIC_PACKNO_LEN_2; - settings->tcs_calc_packno_bits = GQUIC_PACKNO_LEN_2; -} - - -#if __GNUC__ -__attribute__((unused)) -#endif -static void -apply_test_ctl_settings (const struct test_ctl_settings *settings) -{ - g_ctl_settings = *settings; -} - - -enum packno_bits -lsquic_send_ctl_calc_packno_bits (struct lsquic_send_ctl *ctl) -{ - return g_ctl_settings.tcs_calc_packno_bits; -} - - -int -lsquic_send_ctl_schedule_stream_packets_immediately (struct lsquic_send_ctl *ctl) -{ - return g_ctl_settings.tcs_schedule_stream_packets_immediately; -} - - -int -lsquic_send_ctl_have_delayed_packets (const struct lsquic_send_ctl *ctl) -{ - return g_ctl_settings.tcs_have_delayed_packets; -} - - -int -lsquic_send_ctl_can_send (struct lsquic_send_ctl *ctl) -{ - return g_ctl_settings.tcs_can_send; -} - - -enum packno_bits -lsquic_send_ctl_guess_packno_bits (struct lsquic_send_ctl *ctl) -{ - return g_ctl_settings.tcs_guess_packno_bits; -} - - -enum buf_packet_type -lsquic_send_ctl_determine_bpt (struct lsquic_send_ctl *ctl, - const struct lsquic_stream *stream) -{ - return g_ctl_settings.tcs_bp_type; -} - - -/* This function is only here to avoid crash in the test: */ -void -lsquic_engine_add_conn_to_tickable (struct lsquic_engine_public *enpub, - lsquic_conn_t *conn) -{ -} - - -static unsigned n_closed; -static enum stream_ctor_flags stream_ctor_flags = - SCF_CALL_ON_NEW|SCF_DI_AUTOSWITCH; - -struct test_ctx { - lsquic_stream_t *stream; -}; - - -static lsquic_stream_ctx_t * -on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) -{ - struct test_ctx *test_ctx = stream_if_ctx; - test_ctx->stream = stream; - return NULL; -} - - -static void -on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ - ++n_closed; -} - - -static struct reset_call_ctx { - struct lsquic_stream *stream; - int how; -} s_onreset_called = { NULL, -1, }; - - -static void -on_reset (lsquic_stream_t *stream, lsquic_stream_ctx_t *h, int how) -{ - s_onreset_called = (struct reset_call_ctx) { stream, how, }; -} - - -const struct lsquic_stream_if stream_if = { - .on_new_stream = on_new_stream, - .on_close = on_close, - .on_reset = on_reset, -}; - - -/* This does not do anything beyond just acking the packet: we do not attempt - * to update the send controller to have the correct state. - */ -static void -ack_packet (lsquic_send_ctl_t *send_ctl, lsquic_packno_t packno) -{ - struct lsquic_packet_out *packet_out; - TAILQ_FOREACH(packet_out, &send_ctl->sc_unacked_packets[PNS_APP], po_next) - if (packet_out->po_packno == packno) - { - lsquic_packet_out_ack_streams(packet_out); - return; - } - assert(0); -} - - -static size_t -read_from_scheduled_packets (lsquic_send_ctl_t *send_ctl, lsquic_stream_id_t stream_id, - unsigned char *const begin, size_t bufsz, uint64_t first_offset, int *p_fin, - int fullcheck) -{ - const struct parse_funcs *const pf_local = send_ctl->sc_conn_pub->lconn->cn_pf; - unsigned char *p = begin; - unsigned char *const end = p + bufsz; - const struct frame_rec *frec; - struct packet_out_frec_iter pofi; - struct lsquic_packet_out *packet_out; - struct stream_frame frame; - enum quic_frame_type expected_type; - int len, fin = 0; - - if (g_use_crypto_ctor) - expected_type = QUIC_FRAME_CRYPTO; - else - expected_type = QUIC_FRAME_STREAM; - - TAILQ_FOREACH(packet_out, &send_ctl->sc_scheduled_packets, po_next) - for (frec = lsquic_pofi_first(&pofi, packet_out); frec; - frec = lsquic_pofi_next(&pofi)) - { - if (fullcheck) - { - assert(frec->fe_frame_type == expected_type); - if (packet_out->po_packno != 1) - { - /* First packet may contain two stream frames, do not - * check it. - */ - assert(!lsquic_pofi_next(&pofi)); - if (TAILQ_NEXT(packet_out, po_next)) - { - assert(packet_out->po_data_sz == packet_out->po_n_alloc); - assert(frec->fe_len == packet_out->po_data_sz); - } - } - } - if (frec->fe_frame_type == expected_type && - frec->fe_stream->id == stream_id) - { - assert(!fin); - if (QUIC_FRAME_STREAM == expected_type) - len = pf_local->pf_parse_stream_frame(packet_out->po_data + frec->fe_off, - packet_out->po_data_sz - frec->fe_off, &frame); - else - len = pf_local->pf_parse_crypto_frame(packet_out->po_data + frec->fe_off, - packet_out->po_data_sz - frec->fe_off, &frame); - assert(len > 0); - if (QUIC_FRAME_STREAM == expected_type) - assert(frame.stream_id == frec->fe_stream->id); - else - assert(frame.stream_id == ~0ULL); - /* Otherwise not enough to copy to: */ - assert(end - p >= frame.data_frame.df_size); - /* Checks offset ordering: */ - assert(frame.data_frame.df_offset == - first_offset + (uintptr_t) (p - begin)); - if (frame.data_frame.df_fin) - { - assert(!fin); - fin = 1; - } - memcpy(p, packet_out->po_data + frec->fe_off + len - - frame.data_frame.df_size, frame.data_frame.df_size); - p += frame.data_frame.df_size; - } - } - - if (p_fin) - *p_fin = fin; - return p + bufsz - end; -} - - -static struct test_ctx test_ctx; - - -struct test_objs { - struct lsquic_conn lconn; - struct lsquic_engine_public eng_pub; - struct lsquic_conn_public conn_pub; - struct lsquic_send_ctl send_ctl; - struct lsquic_alarmset alset; - void *stream_if_ctx; - struct ver_neg ver_neg; - const struct lsquic_stream_if * - stream_if; - unsigned initial_stream_window; - enum stream_ctor_flags ctor_flags; - struct qpack_enc_hdl qeh; -}; - - -static struct network_path network_path; - -static struct network_path * -get_network_path (struct lsquic_conn *lconn, const struct sockaddr *sa) -{ - return &network_path; -} - - -static int -can_write_ack (struct lsquic_conn *lconn) -{ - return g_ctl_settings.tcs_write_ack; -} - - -static void -write_ack (struct lsquic_conn *lconn, struct lsquic_packet_out *packet_out) -{ - struct test_objs *const tobjs = (void *) lconn; - const size_t ack_size = 9; /* Arbitrary */ - int s; - - packet_out->po_frame_types |= 1 << QUIC_FRAME_ACK; - s = lsquic_packet_out_add_frame(packet_out, &tobjs->eng_pub.enp_mm, 0, - QUIC_FRAME_ACK, packet_out->po_data_sz, ack_size); - assert(s == 0); - memcpy(packet_out->po_data + packet_out->po_data_sz, "ACKACKACK", 9); - lsquic_send_ctl_incr_pack_sz(&tobjs->send_ctl, packet_out, ack_size); - packet_out->po_regen_sz += ack_size; -} - - -static const struct conn_iface our_conn_if = -{ - .ci_can_write_ack = can_write_ack, - .ci_get_path = get_network_path, - .ci_write_ack = write_ack, -}; - -#if LSQUIC_CONN_STATS -static struct conn_stats s_conn_stats; -#endif - -static void -init_test_objs (struct test_objs *tobjs, unsigned initial_conn_window, - unsigned initial_stream_window, const struct parse_funcs *pf) -{ - int s; - memset(tobjs, 0, sizeof(*tobjs)); - LSCONN_INITIALIZE(&tobjs->lconn); - tobjs->lconn.cn_pf = pf ? pf : g_pf; - tobjs->lconn.cn_version = tobjs->lconn.cn_pf == &lsquic_parse_funcs_ietf_v1 ? - LSQVER_I001 : LSQVER_043; - tobjs->lconn.cn_esf_c = &lsquic_enc_session_common_gquic_1; - network_path.np_pack_size = 1370; - tobjs->lconn.cn_if = &our_conn_if; - lsquic_mm_init(&tobjs->eng_pub.enp_mm); - TAILQ_INIT(&tobjs->conn_pub.sending_streams); - TAILQ_INIT(&tobjs->conn_pub.read_streams); - TAILQ_INIT(&tobjs->conn_pub.write_streams); - TAILQ_INIT(&tobjs->conn_pub.service_streams); - lsquic_cfcw_init(&tobjs->conn_pub.cfcw, &tobjs->conn_pub, - initial_conn_window); - lsquic_conn_cap_init(&tobjs->conn_pub.conn_cap, initial_conn_window); - lsquic_alarmset_init(&tobjs->alset, 0); - tobjs->conn_pub.mm = &tobjs->eng_pub.enp_mm; - tobjs->conn_pub.lconn = &tobjs->lconn; - tobjs->conn_pub.enpub = &tobjs->eng_pub; - tobjs->conn_pub.send_ctl = &tobjs->send_ctl; - tobjs->conn_pub.packet_out_malo = - lsquic_malo_create(sizeof(struct lsquic_packet_out)); - tobjs->conn_pub.path = &network_path; -#if LSQUIC_CONN_STATS - tobjs->conn_pub.conn_stats = &s_conn_stats; -#endif - tobjs->initial_stream_window = initial_stream_window; - lsquic_send_ctl_init(&tobjs->send_ctl, &tobjs->alset, &tobjs->eng_pub, - &tobjs->ver_neg, &tobjs->conn_pub, 0); - tobjs->stream_if = &stream_if; - tobjs->stream_if_ctx = &test_ctx; - tobjs->ctor_flags = stream_ctor_flags; - if ((1 << tobjs->lconn.cn_version) & LSQUIC_IETF_VERSIONS) - { - lsquic_qeh_init(&tobjs->qeh, &tobjs->lconn); - s = lsquic_qeh_settings(&tobjs->qeh, 0, 0, 0, 0); - assert(0 == s); - tobjs->conn_pub.u.ietf.qeh = &tobjs->qeh; - } -} - - -static void -deinit_test_objs (struct test_objs *tobjs) -{ - assert(!lsquic_malo_first(tobjs->eng_pub.enp_mm.malo.stream_frame)); - lsquic_send_ctl_cleanup(&tobjs->send_ctl); - lsquic_malo_destroy(tobjs->conn_pub.packet_out_malo); - lsquic_mm_cleanup(&tobjs->eng_pub.enp_mm); - if ((1 << tobjs->lconn.cn_version) & LSQUIC_IETF_VERSIONS) - { - lsquic_qeh_cleanup(&tobjs->qeh); - } -} - - -/* Create a new stream frame. Each stream frame has a real packet_in to - * back it up, just like in real code. The contents of the packet do - * not matter. - */ -static stream_frame_t * -new_frame_in_ext (struct test_objs *tobjs, size_t off, size_t sz, int fin, - const void *data) -{ - lsquic_packet_in_t *packet_in; - stream_frame_t *frame; - - assert(sz <= 1370); - - packet_in = lsquic_mm_get_packet_in(&tobjs->eng_pub.enp_mm); - if (data) - packet_in->pi_data = (void *) data; - else - { - packet_in->pi_data = lsquic_mm_get_packet_in_buf(&tobjs->eng_pub.enp_mm, 1370); - packet_in->pi_flags |= PI_OWN_DATA; - memset(packet_in->pi_data, 'A', sz); - } - /* This is not how stream frame looks in the packet: we have no - * header. In our test case it does not matter, as we only care - * about stream frame. - */ - packet_in->pi_data_sz = sz; - packet_in->pi_refcnt = 1; - - frame = lsquic_malo_get(tobjs->eng_pub.enp_mm.malo.stream_frame); - memset(frame, 0, sizeof(*frame)); - frame->packet_in = packet_in; - frame->data_frame.df_offset = off; - frame->data_frame.df_size = sz; - frame->data_frame.df_data = &packet_in->pi_data[0]; - frame->data_frame.df_fin = fin; - - return frame; -} - - -static stream_frame_t * -new_frame_in (struct test_objs *tobjs, size_t off, size_t sz, int fin) -{ - return new_frame_in_ext(tobjs, off, sz, fin, NULL); -} - - -static lsquic_stream_t * -new_stream_ext (struct test_objs *tobjs, unsigned stream_id, uint64_t send_off) -{ - enum stream_ctor_flags ctor_flags; - - if (g_use_crypto_ctor) - return lsquic_stream_new_crypto(stream_id, &tobjs->conn_pub, - tobjs->stream_if, tobjs->stream_if_ctx, - tobjs->ctor_flags | SCF_CRITICAL); - else - { - /* For the purposes of the unit test, consider streams 1 and 3 critical */ - if (stream_id == 3 || stream_id == 1) - ctor_flags = SCF_CRITICAL; - else - ctor_flags = 0; - if ((1 << tobjs->lconn.cn_version) & LSQUIC_IETF_VERSIONS) - ctor_flags |= SCF_IETF; - return lsquic_stream_new(stream_id, &tobjs->conn_pub, tobjs->stream_if, - tobjs->stream_if_ctx, tobjs->initial_stream_window, send_off, - tobjs->ctor_flags | ctor_flags); - } -} - - -static lsquic_stream_t * -new_stream (struct test_objs *tobjs, unsigned stream_id) -{ - return new_stream_ext(tobjs, stream_id, 16 * 1024); -} - - -static void -run_frame_ordering_test (uint64_t run_id /* This is used to make it easier to set breakpoints */, - int *idx, size_t idx_sz, int read_asap) -{ - int s; - size_t nw = 0, i; - char buf[0x1000]; - - struct test_objs tobjs; - - init_test_objs(&tobjs, 0x4000, 0x4000, NULL); - - lsquic_stream_t *stream = new_stream(&tobjs, 123); - struct lsquic_mm *const mm = &tobjs.eng_pub.enp_mm; - struct malo *const frame_malo = mm->malo.stream_frame; - - lsquic_packet_in_t *packet_in = lsquic_mm_get_packet_in(mm); - packet_in->pi_data = lsquic_mm_get_packet_in_buf(mm, 1370); - packet_in->pi_flags |= PI_OWN_DATA; - assert(idx_sz <= 10); - memcpy(packet_in->pi_data, "0123456789", 10); - packet_in->pi_data_sz = 10; - packet_in->pi_refcnt = idx_sz; - - printf("inserting "); - for (i = 0; i < idx_sz; ++i) - { - stream_frame_t *frame; - frame = lsquic_malo_get(frame_malo); - memset(frame, 0, sizeof(*frame)); - frame->packet_in = packet_in; - frame->data_frame.df_offset = idx[i]; - if (idx[i] + 1 == (int) idx_sz) - { - printf(""); - frame->data_frame.df_size = 0; - frame->data_frame.df_fin = 1; - } - else - { - printf("%c", packet_in->pi_data[idx[i]]); - frame->data_frame.df_size = 1; - frame->data_frame.df_data = &packet_in->pi_data[idx[i]]; - } - if (frame->data_frame.df_fin && read_asap && i + 1 == idx_sz) - { /* Last frame is the FIN frame. Read before inserting zero-sized - * FIN frame. - */ - nw = lsquic_stream_read(stream, buf, 10); - assert(("Read idx_sz bytes", nw == idx_sz - 1)); - assert(("Have not reached fin yet (frame has not come in)", - -1 == lsquic_stream_read(stream, buf, 1) && errno == EWOULDBLOCK)); - } - s = lsquic_stream_frame_in(stream, frame); - assert(("Inserted frame", 0 == s)); - } - printf("\n"); - - if (read_asap && nw == idx_sz - 1) - { - assert(("Reached fin", 0 == lsquic_stream_read(stream, buf, 1))); - } - else - { - nw = lsquic_stream_read(stream, buf, 10); - assert(("Read idx_sz bytes", nw == idx_sz - 1)); - assert(("Reached fin", 0 == lsquic_stream_read(stream, buf, 1))); - } - - lsquic_stream_destroy(stream); - - assert(("all frames have been released", !lsquic_malo_first(frame_malo))); - deinit_test_objs(&tobjs); -} - - -static void -permute_and_run (uint64_t run_id, - int mask, int level, int *idx, size_t idx_sz) -{ - size_t i; - for (i = 0; i < idx_sz; ++i) - { - if (!(mask & (1 << i))) - { - idx[level] = i; - if (level + 1 == (int) idx_sz) - { - run_frame_ordering_test(run_id, idx, idx_sz, 0); - run_frame_ordering_test(run_id, idx, idx_sz, 1); - } - else - permute_and_run(run_id | (i << (8 * level)), - mask | (1 << i), level + 1, idx, idx_sz); - } - } -} - - -/* Client: we send some data and FIN, and remote end sends some data and - * FIN. - */ -static void -test_loc_FIN_rem_FIN (struct test_objs *tobjs) -{ - lsquic_stream_t *stream; - lsquic_packet_out_t *packet_out; - char buf_out[0x100]; - unsigned char buf[0x100]; - ssize_t n; - int s, fin; - enum stream_state_sending sss; - - init_buf(buf_out, sizeof(buf_out)); - - stream = new_stream(tobjs, 345); - n = lsquic_stream_write(stream, buf_out, 100); - assert(n == 100); - assert(0 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - - s = lsquic_stream_flush(stream); - assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - - n = read_from_scheduled_packets(&tobjs->send_ctl, stream->id, buf, - sizeof(buf), 0, &fin, 0); - assert(100 == n); - assert(0 == memcmp(buf_out, buf, 100)); - assert(!fin); - - /* Pretend we sent out a packet: */ - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); - lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); - - s = lsquic_stream_shutdown(stream, 1); - assert(s == 0); - assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); /* Shutdown performs a flush */ - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); /* No need to close stream yet */ - - n = read_from_scheduled_packets(&tobjs->send_ctl, stream->id, buf, - sizeof(buf), 100, &fin, 0); - assert(0 == n); - assert(fin); - sss = lsquic_stream_sending_state(stream); - assert(SSS_DATA_SENT == sss); - - /* Pretend we sent out this packet as well: */ - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); - lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); - - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); /* No need to close stream yet */ - - s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 0, 100, 0)); - assert(0 == s); - - n = lsquic_stream_read(stream, buf, 60); - assert(60 == n); - n = lsquic_stream_read(stream, buf, 60); - assert(40 == n); - - s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 100, 0, 1)); - assert(0 == s); - n = lsquic_stream_read(stream, buf, 60); - assert(0 == n); - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - - s = lsquic_stream_shutdown(stream, 0); - assert(0 == s); - assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert((stream->sm_qflags & (SMQF_SERVICE_FLAGS)) == (SMQF_CALL_ONCLOSE)); - ack_packet(&tobjs->send_ctl, 1); - ack_packet(&tobjs->send_ctl, 2); - assert((stream->sm_qflags & (SMQF_SERVICE_FLAGS)) == (SMQF_CALL_ONCLOSE|SMQF_FREE_STREAM)); - sss = lsquic_stream_sending_state(stream); - assert(SSS_DATA_RECVD == sss); - - lsquic_stream_destroy(stream); - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - - assert(100 == tobjs->conn_pub.cfcw.cf_max_recv_off); - assert(100 == tobjs->conn_pub.cfcw.cf_read_off); -} - - -/* Server: we read data and FIN, and then send data and FIN. - */ -static void -test_rem_FIN_loc_FIN (struct test_objs *tobjs) -{ - lsquic_stream_t *stream; - char buf_out[0x100]; - unsigned char buf[0x100]; - size_t n; - int s, fin; - lsquic_packet_out_t *packet_out; - - stream = new_stream(tobjs, 345); - - s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 0, 100, 0)); - assert(0 == s); - - n = lsquic_stream_read(stream, buf, 60); - assert(60 == n); - n = lsquic_stream_read(stream, buf, 60); - assert(40 == n); - - s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 100, 0, 1)); - assert(0 == s); - n = lsquic_stream_read(stream, buf, 60); - assert(0 == n); - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - - s = lsquic_stream_shutdown(stream, 0); - assert(0 == s); - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - - init_buf(buf_out, sizeof(buf_out)); - n = lsquic_stream_write(stream, buf_out, 100); - assert(n == 100); - assert(0 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - - s = lsquic_stream_flush(stream); - assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - - n = read_from_scheduled_packets(&tobjs->send_ctl, stream->id, buf, - sizeof(buf), 0, &fin, 0); - assert(100 == n); - assert(0 == memcmp(buf_out, buf, 100)); - assert(!fin); - - /* Pretend we sent out a packet: */ - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); - lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); - - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); /* No need to close stream yet */ - - s = lsquic_stream_shutdown(stream, 1); - assert(s == 0); - assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); /* Shutdown performs a flush */ - - /* Now we can call on_close: */ - assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert((stream->sm_qflags & (SMQF_SERVICE_FLAGS)) == SMQF_CALL_ONCLOSE); - - n = read_from_scheduled_packets(&tobjs->send_ctl, stream->id, buf, - sizeof(buf), 100, &fin, 0); - assert(0 == n); - assert(fin); - - /* Pretend we sent out this packet as well: */ - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); - lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); - - /* Cannot free stream yet: packets have not been acked */ - assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert((stream->sm_qflags & (SMQF_SERVICE_FLAGS)) == SMQF_CALL_ONCLOSE); - - ack_packet(&tobjs->send_ctl, 1); - ack_packet(&tobjs->send_ctl, 2); - - /* Now we can free the stream: */ - assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert((stream->sm_qflags & (SMQF_SERVICE_FLAGS)) == (SMQF_CALL_ONCLOSE|SMQF_FREE_STREAM)); - - lsquic_stream_destroy(stream); - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - - assert(100 == tobjs->conn_pub.cfcw.cf_max_recv_off); - assert(100 == tobjs->conn_pub.cfcw.cf_read_off); -} - - -/* Server: we read data and close the read side before reading FIN, which - * results in stream being reset. - */ -static void -test_rem_data_loc_close_and_rst_in (struct test_objs *tobjs) -{ - lsquic_stream_t *stream; - char buf[0x100]; - ssize_t n; - int s; - - stream = new_stream(tobjs, 345); - - s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 0, 100, 0)); - assert(0 == s); - - n = lsquic_stream_read(stream, buf, 60); - assert(60 == n); - - s = lsquic_stream_shutdown(stream, 0); - assert(0 == s); - /* Early read shutdown results in different frames on different QUIC - * transports: - */ - if (stream->sm_bflags & SMBF_IETF) - assert(stream->sm_qflags & SMQF_SEND_STOP_SENDING); - else - assert(stream->sm_qflags & SMQF_SEND_RST); - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert(!((stream->sm_qflags & (SMQF_SERVICE_FLAGS)) == SMQF_CALL_ONCLOSE)); - - n = lsquic_stream_read(stream, buf, 60); - assert(n == -1); /* Cannot read from closed stream */ - - /* Close write side */ - s = lsquic_stream_shutdown(stream, 1); - assert(0 == s); - - if (stream->sm_bflags & SMBF_IETF) - { - assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); /* Shutdown performs a flush */ - assert(stream->n_unacked == 1); - } - else - { - /* gQUIC has RST scheduled to be sent, so no FIN is written */ - } - - assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert((stream->sm_qflags & (SMQF_SERVICE_FLAGS)) == SMQF_CALL_ONCLOSE); - - s_onreset_called = (struct reset_call_ctx) { NULL, -1, }; - s = lsquic_stream_rst_in(stream, 100, 1); - assert(0 == s); - assert(s_onreset_called.stream == stream); - if (stream->sm_bflags & SMBF_IETF) - assert(s_onreset_called.how == 0); - else - assert(s_onreset_called.how == 2); - - assert(!(stream->sm_qflags & SMQF_FREE_STREAM)); /* Not yet */ - assert(stream->sm_qflags & SMQF_CALL_ONCLOSE); - - lsquic_stream_rst_frame_sent(stream); - if (stream->sm_bflags & SMBF_IETF) - { - stream->n_unacked++; /* RESET frame take a reference */ - assert(!(stream->sm_qflags & SMQF_FREE_STREAM)); /* Not yet, - because: */ assert(stream->n_unacked == 2); - } - - if (stream->sm_bflags & SMBF_IETF) - { - lsquic_stream_acked(stream, QUIC_FRAME_STREAM); - lsquic_stream_acked(stream, QUIC_FRAME_RST_STREAM); - } - else - assert(stream->n_unacked == 0); /* STREAM frame was elided */ - assert(stream->sm_qflags & SMQF_FREE_STREAM); /* OK, now */ - - lsquic_stream_destroy(stream); - /* This simply checks that the stream got removed from the queue: */ - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - - assert(100 == tobjs->conn_pub.cfcw.cf_max_recv_off); - assert(100 == tobjs->conn_pub.cfcw.cf_read_off); -} - - -/* Server: we read data and close the read side before reading FIN. No - * FIN or RST arrive from peer. This should schedule RST_STREAM to be - * sent (this is gQUIC) and add "wait for known FIN" flag. - */ -static void -test_rem_data_loc_close (struct test_objs *tobjs) -{ - lsquic_stream_t *stream; - char buf[0x100]; - ssize_t n; - int s; - - stream = new_stream(tobjs, 345); - - s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 0, 100, 0)); - assert(0 == s); - - n = lsquic_stream_read(stream, buf, 60); - assert(60 == n); - - s = lsquic_stream_shutdown(stream, 0); - assert(0 == s); - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert(!(stream->sm_qflags & SMQF_CALL_ONCLOSE)); - - n = lsquic_stream_read(stream, buf, 60); - assert(n == -1); /* Cannot read from closed stream */ - - /* Close write side */ - s = lsquic_stream_shutdown(stream, 1); - assert(0 == s); - - if (stream->sm_bflags & SMBF_IETF) - assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); /* Shutdown performs a flush */ - - assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert(stream->sm_qflags & SMQF_CALL_ONCLOSE); - - assert(!(stream->sm_qflags & SMQF_FREE_STREAM)); - if (stream->sm_bflags & SMBF_IETF) - lsquic_stream_acked(stream, QUIC_FRAME_STREAM); - - lsquic_stream_rst_frame_sent(stream); - stream->n_unacked++; /* RESET frame take a reference */ - assert(!(stream->sm_qflags & SMQF_FREE_STREAM)); /* No */ - - lsquic_stream_acked(stream, QUIC_FRAME_RST_STREAM); - assert(!(stream->sm_qflags & SMQF_FREE_STREAM)); /* Still no */ - - /* Stream will linger until we have the offset: */ - assert(stream->sm_qflags & SMQF_WAIT_FIN_OFF); - - lsquic_stream_destroy(stream); - /* This simply checks that the stream got removed from the queue: */ - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - - assert(100 == tobjs->conn_pub.cfcw.cf_max_recv_off); - assert(100 == tobjs->conn_pub.cfcw.cf_read_off); -} - - -/* Client: we send some data and FIN, but remote end sends some data and - * then resets the stream. The client gets an error when it reads from - * stream, after which it closes and destroys the stream. - */ -static void -test_loc_FIN_rem_RST (struct test_objs *tobjs) -{ - lsquic_packet_out_t *packet_out; - lsquic_stream_t *stream; - char buf_out[0x100]; - unsigned char buf[0x100]; - ssize_t n; - int s, fin; - - init_buf(buf_out, sizeof(buf_out)); - - stream = new_stream(tobjs, 345); - n = lsquic_stream_write(stream, buf_out, 100); - assert(n == 100); - assert(0 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - - s = lsquic_stream_flush(stream); - assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - - n = read_from_scheduled_packets(&tobjs->send_ctl, stream->id, buf, - sizeof(buf), 0, &fin, 0); - assert(100 == n); - assert(0 == memcmp(buf_out, buf, 100)); - assert(!fin); - - /* Pretend we sent out a packet: */ - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); - lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); - - s = lsquic_stream_shutdown(stream, 1); - assert(s == 0); - assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); /* Shutdown performs a flush */ - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); /* No need to close stream yet */ - - n = read_from_scheduled_packets(&tobjs->send_ctl, stream->id, buf, - sizeof(buf), 100, &fin, 0); - assert(0 == n); - assert(fin); - - /* Pretend we sent out this packet as well: */ - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); - lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); - - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); /* No need to close stream yet */ - - s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 0, 100, 0)); - assert(0 == s); - s_onreset_called = (struct reset_call_ctx) { NULL, -1, }; - s = lsquic_stream_rst_in(stream, 100, 0); - assert(0 == s); - assert(s_onreset_called.stream == stream); - if (stream->sm_bflags & SMBF_IETF) - assert(s_onreset_called.how == 0); - else - assert(s_onreset_called.how == 2); - - /* No RST to send, we already sent FIN */ - assert(0 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - - /* The stream is not yet done: the user code has not closed it yet */ - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert(0 == (stream->sm_qflags & (SMQF_SERVICE_FLAGS))); - assert(0 == (stream->stream_flags & STREAM_U_READ_DONE)); - - s = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(-1 == s); /* Error collected */ - s = lsquic_stream_close(stream); - assert(0 == s); /* Stream closed successfully */ - - assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert((stream->sm_qflags & (SMQF_SERVICE_FLAGS)) == (SMQF_CALL_ONCLOSE)); - - ack_packet(&tobjs->send_ctl, 1); - ack_packet(&tobjs->send_ctl, 2); - -#if 0 - /* OK, here we pretend that we sent a RESET and it was acked */ - assert(stream->sm_qflags & SMQF_SEND_RST); - stream->sm_qflags |= SMQF_SEND_RST; - stream->stream_flags -#endif - - assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert((stream->sm_qflags & (SMQF_SERVICE_FLAGS)) == (SMQF_CALL_ONCLOSE|SMQF_FREE_STREAM)); - - lsquic_stream_destroy(stream); - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - - assert(100 == tobjs->conn_pub.cfcw.cf_max_recv_off); - assert(100 == tobjs->conn_pub.cfcw.cf_read_off); -} - - -/* Client: we send some data (no FIN), and remote end sends some data and - * then resets the stream. - */ -static void -test_loc_data_rem_RST (struct test_objs *tobjs) -{ - lsquic_packet_out_t *packet_out; - lsquic_stream_t *stream; - char buf_out[0x100]; - unsigned char buf[0x100]; - ssize_t n; - int s, fin; - - init_buf(buf_out, sizeof(buf_out)); - - stream = new_stream(tobjs, 345); - n = lsquic_stream_write(stream, buf_out, 100); - assert(n == 100); - assert(0 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - - s = lsquic_stream_flush(stream); - assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - - n = read_from_scheduled_packets(&tobjs->send_ctl, stream->id, buf, - sizeof(buf), 0, &fin, 0); - assert(100 == n); - assert(0 == memcmp(buf_out, buf, 100)); - assert(!fin); - - /* Pretend we sent out a packet: */ - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); - lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); - - s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 0, 100, 0)); - assert(0 == s); - s_onreset_called = (struct reset_call_ctx) { NULL, -1, }; - s = lsquic_stream_rst_in(stream, 200, 0); - assert(0 == s); - assert(s_onreset_called.stream == stream); - if (stream->sm_bflags & SMBF_IETF) - assert(s_onreset_called.how == 0); - else - assert(s_onreset_called.how == 2); - - ack_packet(&tobjs->send_ctl, 1); - - if (!(stream->sm_bflags & SMBF_IETF)) - { - assert(!TAILQ_EMPTY(&tobjs->conn_pub.sending_streams)); - assert((stream->sm_qflags & SMQF_SENDING_FLAGS) == SMQF_SEND_RST); - } - - /* Not yet closed: error needs to be collected */ - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert(0 == (stream->sm_qflags & SMQF_SERVICE_FLAGS)); - - n = lsquic_stream_write(stream, buf, 100); - if (stream->sm_bflags & SMBF_IETF) - assert(100 == n); /* Write successful after reset in IETF */ - else - assert(-1 == n); /* Error collected */ - s = lsquic_stream_close(stream); - assert(0 == s); /* Stream successfully closed */ - - if (stream->sm_bflags & SMBF_IETF) - assert(stream->n_unacked == 1); - - assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert((stream->sm_qflags & SMQF_SERVICE_FLAGS) == SMQF_CALL_ONCLOSE); - - if (!(stream->sm_bflags & SMBF_IETF)) - lsquic_stream_rst_frame_sent(stream); - - lsquic_stream_call_on_close(stream); - - assert(TAILQ_EMPTY(&tobjs->conn_pub.sending_streams)); - - if (stream->sm_bflags & SMBF_IETF) - { - /* FIN packet has not been acked yet: */ - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - /* Now ack it: */ - ack_packet(&tobjs->send_ctl, 1); - } - - assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert((stream->sm_qflags & SMQF_SERVICE_FLAGS) == SMQF_FREE_STREAM); - - lsquic_stream_destroy(stream); - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - - assert(200 == tobjs->conn_pub.cfcw.cf_max_recv_off); - assert(200 == tobjs->conn_pub.cfcw.cf_read_off); -} - - -/* Client: we send some data (no FIN), and remote end sends some data and - * then sends STOP_SENDING - */ -static void -test_loc_data_rem_SS (struct test_objs *tobjs) -{ - lsquic_packet_out_t *packet_out; - lsquic_stream_t *stream; - char buf_out[0x100]; - unsigned char buf[0x100]; - ssize_t n; - int s, fin; - - init_buf(buf_out, sizeof(buf_out)); - - stream = new_stream(tobjs, 345); - assert(stream->sm_bflags & SMBF_IETF); /* STOP_SENDING is IETF-only */ - n = lsquic_stream_write(stream, buf_out, 100); - assert(n == 100); - assert(0 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - - s = lsquic_stream_flush(stream); - assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - - n = read_from_scheduled_packets(&tobjs->send_ctl, stream->id, buf, - sizeof(buf), 0, &fin, 0); - assert(100 == n); - assert(0 == memcmp(buf_out, buf, 100)); - assert(!fin); - - /* Pretend we sent out a packet: */ - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); - lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); - - s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 0, 100, 0)); - assert(0 == s); - s_onreset_called = (struct reset_call_ctx) { NULL, -1, }; - lsquic_stream_stop_sending_in(stream, 12345); - assert(s_onreset_called.stream == stream); - assert(s_onreset_called.how == 1); - - /* Incoming STOP_SENDING should not affect the ability to read from - * stream. - */ - unsigned char mybuf[123]; - const ssize_t nread = lsquic_stream_read(stream, mybuf, sizeof(mybuf)); - assert(nread == 100); - - ack_packet(&tobjs->send_ctl, 1); - - if (!(stream->sm_bflags & SMBF_IETF)) - { - assert(!TAILQ_EMPTY(&tobjs->conn_pub.sending_streams)); - assert((stream->sm_qflags & SMQF_SENDING_FLAGS) == SMQF_SEND_RST); - } - - /* Not yet closed: error needs to be collected */ - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert(0 == (stream->sm_qflags & SMQF_SERVICE_FLAGS)); - - n = lsquic_stream_write(stream, buf, 100); - assert(-1 == n); /* Error collected */ - s = lsquic_stream_close(stream); - assert(0 == s); /* Stream successfully closed */ - - assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert((stream->sm_qflags & SMQF_SERVICE_FLAGS) == SMQF_CALL_ONCLOSE); - - if (stream->sm_bflags & SMBF_IETF) - lsquic_stream_ss_frame_sent(stream); - lsquic_stream_rst_frame_sent(stream); - lsquic_stream_call_on_close(stream); - - assert(TAILQ_EMPTY(&tobjs->conn_pub.sending_streams)); - if (stream->sm_bflags & SMBF_IETF) - assert(stream->sm_qflags & SMQF_WAIT_FIN_OFF); - else - { - assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert((stream->sm_qflags & SMQF_SERVICE_FLAGS) == SMQF_FREE_STREAM); - } - - const unsigned expected_nread = stream->sm_bflags & SMBF_IETF ? 100 : 200; - lsquic_stream_destroy(stream); - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - - assert(expected_nread == tobjs->conn_pub.cfcw.cf_max_recv_off); - assert(expected_nread == tobjs->conn_pub.cfcw.cf_read_off); -} - - -/* We send some data and RST, receive data and FIN - */ -static void -test_loc_RST_rem_FIN (struct test_objs *tobjs) -{ - lsquic_packet_out_t *packet_out; - lsquic_stream_t *stream; - char buf_out[0x100]; - unsigned char buf[0x100]; - size_t n; - int s, fin; - enum stream_state_sending sss; - - init_buf(buf_out, sizeof(buf_out)); - - stream = new_stream(tobjs, 345); - - n = lsquic_stream_write(stream, buf_out, 100); - assert(n == 100); - assert(0 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - - s = lsquic_stream_flush(stream); - assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - - n = read_from_scheduled_packets(&tobjs->send_ctl, stream->id, buf, - sizeof(buf), 0, &fin, 0); - assert(100 == n); - assert(0 == memcmp(buf_out, buf, 100)); - assert(!fin); - - /* Pretend we sent out a packet: */ - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); - lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); - - assert(1 == stream->n_unacked); - ack_packet(&tobjs->send_ctl, 1); - assert(0 == stream->n_unacked); - sss = lsquic_stream_sending_state(stream); - assert(SSS_SEND == sss); - - lsquic_stream_maybe_reset(stream, 0, 1); - ++stream->n_unacked; /* Fake sending of packet with RST_STREAM */ - assert(!TAILQ_EMPTY(&tobjs->conn_pub.sending_streams)); - assert((stream->sm_qflags & SMQF_SENDING_FLAGS) == SMQF_SEND_RST); - if (stream->sm_bflags & SMBF_IETF) - { - sss = lsquic_stream_sending_state(stream); - assert(SSS_DATA_SENT == sss); /* FIN was packetized */ - } - - s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 0, 90, 1)); - assert(s == 0); - assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert((stream->sm_qflags & SMQF_SERVICE_FLAGS) == SMQF_CALL_ONCLOSE); - - lsquic_stream_rst_frame_sent(stream); - sss = lsquic_stream_sending_state(stream); - assert(SSS_RESET_SENT == sss); - - sss = lsquic_stream_sending_state(stream); - assert(SSS_RESET_SENT == sss); - lsquic_stream_acked(stream, QUIC_FRAME_RST_STREAM); /* Fake ack of RST_STREAM packet */ - sss = lsquic_stream_sending_state(stream); - assert(SSS_RESET_RECVD == sss); - - assert(TAILQ_EMPTY(&tobjs->conn_pub.sending_streams)); - - lsquic_stream_call_on_close(stream); - - if (stream->sm_bflags & SMBF_IETF) - { - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); /* Not acked yet */ - lsquic_stream_acked(stream, QUIC_FRAME_STREAM); - } - - assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - assert((stream->sm_qflags & SMQF_SERVICE_FLAGS) == SMQF_FREE_STREAM); - - lsquic_stream_destroy(stream); - assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); - - assert(90 == tobjs->conn_pub.cfcw.cf_max_recv_off); - assert(90 == tobjs->conn_pub.cfcw.cf_read_off); -} - - -/* Test that when stream frame is elided and the packet is dropped, - * the send controller produces a gapless sequence. - * - * Case "middle": 3 packets with STREAM frames for streams A, B, and A. - * Stream B is reset. We should get a gapless sequence - * of packets 1, 2. - */ -#ifndef NDEBUG -static void -test_gapless_elision_middle (struct test_objs *tobjs) -{ - lsquic_stream_t *streamA, *streamB; - unsigned char buf[0x1000], buf_out[0x1000]; - size_t n, thresh, written_to_A = 0; - int s, fin; - lsquic_packet_out_t *packet_out; - - streamA = new_stream(tobjs, 345); - streamB = new_stream(tobjs, 347); - - init_buf(buf_out, sizeof(buf_out)); - thresh = lsquic_stream_flush_threshold(streamA, 0); - n = lsquic_stream_write(streamA, buf_out, thresh); - assert(n == thresh); - assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - written_to_A += n; - - thresh = lsquic_stream_flush_threshold(streamB, 0); - n = lsquic_stream_write(streamB, buf_out, thresh); - assert(n == thresh); - assert(2 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - - thresh = lsquic_stream_flush_threshold(streamA, 0); - n = lsquic_stream_write(streamA, buf_out + written_to_A, thresh); - assert(n == thresh); - assert(3 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - written_to_A += n; - - /* Verify contents of A: */ - n = read_from_scheduled_packets(&tobjs->send_ctl, streamA->id, buf, - sizeof(buf), 0, &fin, 0); - assert(n == written_to_A); - assert(0 == memcmp(buf, buf_out, written_to_A)); - - /* Now reset stream B: */ - s_onreset_called = (struct reset_call_ctx) { NULL, -1, }; - if (streamB->sm_bflags & SMBF_IETF) - lsquic_stream_stop_sending_in(streamB, 12345); - else - { - s = lsquic_stream_rst_in(streamB, 0, 0); - assert(s == 0); - } - assert(s_onreset_called.stream == streamB); - if (streamB->sm_bflags & SMBF_IETF) - assert(s_onreset_called.how == 1); - else - assert(s_onreset_called.how == 2); - assert(2 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - /* Verify A again: */ - n = read_from_scheduled_packets(&tobjs->send_ctl, streamA->id, buf, - sizeof(buf), 0, &fin, 0); - assert(n == written_to_A); - assert(0 == memcmp(buf, buf_out, written_to_A)); - - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); - assert(packet_out->po_packno == 1); - lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); - - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); - assert(packet_out->po_packno == 2); - lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); - - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); - assert(!packet_out); - - /* Now we can call on_close: */ - lsquic_stream_destroy(streamA); - lsquic_stream_destroy(streamB); -} - -/* Test that when stream frame is elided and the packet is dropped, - * the send controller produces a gapless sequence. - * - * Case "beginnig": 3 packets with STREAM frames for streams B, A, and A. - * Stream B is reset. We should get a gapless sequence - * of packets 1, 2. - */ -static void -test_gapless_elision_beginning (struct test_objs *tobjs) -{ - lsquic_stream_t *streamA, *streamB; - unsigned char buf[0x1000], buf_out[0x1000]; - size_t n, thresh, written_to_A = 0; - int s, fin; - lsquic_packet_out_t *packet_out; - - streamA = new_stream(tobjs, 345); - streamB = new_stream(tobjs, 347); - - init_buf(buf_out, sizeof(buf_out)); - - thresh = lsquic_stream_flush_threshold(streamB, 0); - n = lsquic_stream_write(streamB, buf_out, thresh); - assert(n == thresh); - assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - - thresh = lsquic_stream_flush_threshold(streamA, 0); - n = lsquic_stream_write(streamA, buf_out, thresh); - assert(n == thresh); - assert(2 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - written_to_A += n; - - thresh = lsquic_stream_flush_threshold(streamA, 0); - n = lsquic_stream_write(streamA, buf_out + written_to_A, thresh); - assert(n == thresh); - assert(3 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - written_to_A += n; - - /* Verify contents of A: */ - n = read_from_scheduled_packets(&tobjs->send_ctl, streamA->id, buf, - sizeof(buf), 0, &fin, 0); - assert(n == written_to_A); - assert(0 == memcmp(buf, buf_out, written_to_A)); - - /* Now reset stream B: */ - assert(!(streamB->stream_flags & STREAM_FRAMES_ELIDED)); - if (streamB->sm_bflags & SMBF_IETF) - lsquic_stream_stop_sending_in(streamB, 12345); - else - { - s = lsquic_stream_rst_in(streamB, 0, 0); - assert(s == 0); - } - assert(streamB->stream_flags & STREAM_FRAMES_ELIDED); - assert(2 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - /* Verify A again: */ - n = read_from_scheduled_packets(&tobjs->send_ctl, streamA->id, buf, - sizeof(buf), 0, &fin, 0); - assert(n == written_to_A); - assert(0 == memcmp(buf, buf_out, written_to_A)); - - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); - assert(packet_out->po_packno == 1); - lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); - - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); - assert(packet_out->po_packno == 2); - lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); - - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); - assert(!packet_out); - - /* Test on_reset() behavior. This is unrelated to the gapless elision - * test, but convenient to do here. - */ - if (streamA->sm_bflags & SMBF_IETF) - { - s_onreset_called = (struct reset_call_ctx) { NULL, -1, }; - lsquic_stream_stop_sending_in(streamA, 12345); - assert(s_onreset_called.stream == streamA); - assert(s_onreset_called.how == 1); - } - - /* Now we can call on_close: */ - lsquic_stream_destroy(streamA); - lsquic_stream_destroy(streamB); -} -#endif - - - -/* Write data to the stream, but do not flush: connection cap take a hit. - * After stream is destroyed, connection cap should go back up. - */ -static void -test_reset_stream_with_unflushed_data (struct test_objs *tobjs) -{ - lsquic_stream_t *stream; - char buf[0x100]; - size_t n; - const struct lsquic_conn_cap *const cap = &tobjs->conn_pub.conn_cap; - - assert(0x4000 == lsquic_conn_cap_avail(cap)); /* Self-check */ - stream = new_stream(tobjs, 345); - n = lsquic_stream_write(stream, buf, 100); - assert(n == 100); - - /* Unflushed data counts towards connection cap for connection-limited - * stream: - */ - assert(0x4000 - 100 == lsquic_conn_cap_avail(cap)); - - lsquic_stream_destroy(stream); - assert(0x4000 == lsquic_conn_cap_avail(cap)); /* Goes back up */ -} - - -/* Write a little data to the stream, flush and then reset it: connection - * cap should NOT go back up. - */ -static void -test_reset_stream_with_flushed_data (struct test_objs *tobjs) -{ - char buf[0x100]; - size_t n; - lsquic_stream_t *stream; - const struct lsquic_conn_cap *const cap = &tobjs->conn_pub.conn_cap; - - assert(0x4000 == lsquic_conn_cap_avail(cap)); /* Self-check */ - stream = new_stream(tobjs, 345); - n = lsquic_stream_write(stream, buf, 100); - assert(n == 100); - - /* Unflushed data counts towards connection cap for - * connection-limited stream: - */ - assert(0x4000 - 100 == lsquic_conn_cap_avail(cap)); - - /* Flush the stream: */ - lsquic_stream_flush(stream); - assert(0x4000 - 100 == lsquic_conn_cap_avail(cap)); - - lsquic_stream_destroy(stream); - assert(0x4000 - 100 == lsquic_conn_cap_avail(cap)); /* Still unchanged */ -} - - -/* Write data to the handshake stream and flush: this should not affect - * connection cap. - */ -static void -test_unlimited_stream_flush_data (struct test_objs *tobjs) -{ - char buf[0x100]; - size_t n; - lsquic_stream_t *stream; - const struct lsquic_conn_cap *const cap = &tobjs->conn_pub.conn_cap; - - assert(0x4000 == lsquic_conn_cap_avail(cap)); /* Self-check */ - stream = new_stream(tobjs, 1); - n = lsquic_stream_write(stream, buf, 100); - assert(n == 100); - - /* We DO NOT take connection cap hit after stream is flushed: */ - lsquic_stream_flush(stream); - assert(0x4000 == lsquic_conn_cap_avail(cap)); - - lsquic_stream_maybe_reset(stream, 0xF00DF00D, 1); - assert(0x4000 == lsquic_conn_cap_avail(cap)); /* Still unchanged */ - - lsquic_stream_destroy(stream); - assert(0x4000 == lsquic_conn_cap_avail(cap)); /* Still unchanged */ -} - - -/* Test that data gets flushed when stream is closed. */ -static void -test_data_flush_on_close (struct test_objs *tobjs) -{ - lsquic_stream_t *stream; - const struct lsquic_conn_cap *const cap = &tobjs->conn_pub.conn_cap; - char buf[0x100]; - size_t n; - - assert(0x4000 == lsquic_conn_cap_avail(cap)); /* Self-check */ - stream = new_stream(tobjs, 345); - n = lsquic_stream_write(stream, buf, 100); - assert(n == 100); - assert(0 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - - lsquic_stream_close(stream); - /* Nothing is scheduled because STREAM frames are elided */ - assert(0 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); - - assert(stream->sm_qflags & SMQF_SEND_RST); - assert(!(stream->sm_qflags & SMQF_FREE_STREAM)); - assert(stream->sm_qflags & SMQF_WAIT_FIN_OFF); - - /* We take connection cap hit after stream is flushed: */ - assert(0x4000 - 100 == lsquic_conn_cap_avail(cap)); /* Conn cap hit */ - - lsquic_stream_destroy(stream); -} - - -/* In this function, we test stream termination conditions. In particular, - * we are interested in when the stream becomes finished (this is when - * connection closes it and starts ignoring frames that come after this): - * we need to test the following scenarios, both normal and abnormal - * termination, initiated both locally and remotely. - * - * We avoid formalities like calling wantread() and wantwrite() and - * dispatching read and write callbacks. - */ -static void -test_termination (void) -{ - struct test_objs tobjs; - const struct { - int gquic; - int ietf; - void (*func)(struct test_objs *); - } test_funcs[] = { - { 1, 1, test_loc_FIN_rem_FIN, }, - { 1, 1, test_rem_FIN_loc_FIN, }, - { 1, 0, test_rem_data_loc_close_and_rst_in, }, - { 1, 0, test_rem_data_loc_close, }, - { 1, 1, test_loc_FIN_rem_RST, }, - { 1, 1, test_loc_data_rem_RST, }, - { 0, 1, test_loc_data_rem_SS, }, - { 1, 0, test_loc_RST_rem_FIN, }, -#ifndef NDEBUG - { 1, 1, test_gapless_elision_beginning, }, - { 1, 1, test_gapless_elision_middle, }, -#endif - }, *tf; - - for (tf = test_funcs; tf < test_funcs + sizeof(test_funcs) / sizeof(test_funcs[0]); ++tf) - { - if (tf->gquic) - { - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - init_test_objs(&tobjs, 0x4000, 0x4000, select_pf_by_ver(LSQVER_043)); - tf->func(&tobjs); - deinit_test_objs(&tobjs); - } - if (tf->ietf) - { - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - init_test_objs(&tobjs, 0x4000, 0x4000, select_pf_by_ver(LSQVER_I001)); - tf->func(&tobjs); - deinit_test_objs(&tobjs); - } - } -} - - -/* Test flush-related corner cases */ -static void -test_flushing (void) -{ - struct test_objs tobjs; - unsigned i; - void (*const test_funcs[])(struct test_objs *) = { - test_reset_stream_with_unflushed_data, - test_reset_stream_with_flushed_data, - test_unlimited_stream_flush_data, - test_data_flush_on_close, - }; - - for (i = 0; i < sizeof(test_funcs) / sizeof(test_funcs[0]); ++i) - { - init_test_objs(&tobjs, 0x4000, 0x4000, NULL); - test_funcs[i](&tobjs); - deinit_test_objs(&tobjs); - } -} - - -static void -test_writev (void) -{ - unsigned i; - struct test_objs tobjs; - lsquic_stream_t *stream; - ssize_t n; - unsigned char buf_in[0x4000]; - unsigned char buf_out[0x4000]; - int fin; - - struct { - struct iovec iov[0x20]; - int count; - } tests[] = { - { .iov = { - { .iov_base = buf_in, .iov_len = 0x4000, }, - }, - .count = 1, - }, - { .iov = { - { .iov_base = buf_in , .iov_len = 0x1000, }, - { .iov_base = buf_in + 0x1000, .iov_len = 0x3000, }, - }, - .count = 2, - }, - { .iov = { - { .iov_base = buf_in , .iov_len = 0x1000, }, - { .iov_base = buf_in + 0x1000, .iov_len = 0x1000, }, - { .iov_base = buf_in + 0x2000, .iov_len = 0x1000, }, - { .iov_base = buf_in + 0x3000, .iov_len = 0x1000, }, - }, - .count = 4, - }, - { .iov = { - { .iov_base = buf_in , .iov_len = 0x1000, }, - { .iov_base = buf_in + 0x1000, .iov_len = 0x1000, }, - { .iov_base = buf_in + 0x2000, .iov_len = 0x1000, }, - { .iov_base = buf_in + 0x3000, .iov_len = 0xFF0, }, - { .iov_base = buf_in + 0x3FF0, .iov_len = 1, }, - { .iov_base = buf_in + 0x3FF1, .iov_len = 0, }, - { .iov_base = buf_in + 0x3FF1, .iov_len = 0, }, - { .iov_base = buf_in + 0x3FF1, .iov_len = 1, }, - { .iov_base = buf_in + 0x3FF2, .iov_len = 1, }, - { .iov_base = buf_in + 0x3FF3, .iov_len = 1, }, - { .iov_base = buf_in + 0x3FF4, .iov_len = 1, }, - { .iov_base = buf_in + 0x3FF5, .iov_len = 1, }, - { .iov_base = buf_in + 0x3FF6, .iov_len = 1, }, - { .iov_base = buf_in + 0x3FF7, .iov_len = 1, }, - { .iov_base = buf_in + 0x3FF8, .iov_len = 1, }, - { .iov_base = buf_in + 0x3FF9, .iov_len = 1, }, - { .iov_base = buf_in + 0x3FFA, .iov_len = 1, }, - { .iov_base = buf_in + 0x3FFB, .iov_len = 1, }, - { .iov_base = buf_in + 0x3FFC, .iov_len = 1, }, - { .iov_base = buf_in + 0x3FFD, .iov_len = 1, }, - { .iov_base = buf_in + 0x3FFE, .iov_len = 1, }, - { .iov_base = buf_in + 0x3FFF, .iov_len = 1, }, - }, - .count = 22, - }, - }; - - memset(buf_in, 'A', 0x1000); - memset(buf_in + 0x1000, 'B', 0x1000); - memset(buf_in + 0x2000, 'C', 0x1000); - memset(buf_in + 0x3000, 'D', 0x1000); - - for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) - { - init_test_objs(&tobjs, UINT_MAX, UINT_MAX, NULL); - stream = new_stream(&tobjs, 12345); - n = lsquic_stream_writev(stream, tests[i].iov, tests[i].count); - assert(0x4000 == n); - lsquic_stream_flush(stream); - n = read_from_scheduled_packets(&tobjs.send_ctl, stream->id, buf_out, - sizeof(buf_out), 0, &fin, 0); - assert(0x4000 == n); - assert(0 == memcmp(buf_out, buf_in, 0x1000)); - assert(!fin); - lsquic_stream_destroy(stream); - deinit_test_objs(&tobjs); - } -} - - -static void -test_prio_conversion (void) -{ - struct test_objs tobjs; - lsquic_stream_t *stream; - unsigned prio; - int s; - - init_test_objs(&tobjs, UINT_MAX, UINT_MAX, NULL); - stream = new_stream(&tobjs, 123); - - s = lsquic_stream_set_priority(stream, -2); - assert(-1 == s); - s = lsquic_stream_set_priority(stream, 0); - assert(-1 == s); - s = lsquic_stream_set_priority(stream, 257); - assert(-1 == s); - - for (prio = 1; prio <= 256; ++prio) - { - s = lsquic_stream_set_priority(stream, prio); - assert(0 == s); - assert(prio == lsquic_stream_priority(stream)); - } - - lsquic_stream_destroy(stream); - deinit_test_objs(&tobjs); -} - - -static void -test_read_in_middle (void) -{ - int s; - size_t nw = 0; - char buf[0x1000]; - const char data[] = "AAABBBCCC"; - struct test_objs tobjs; - stream_frame_t *frame; - uint64_t n_readable; - - init_test_objs(&tobjs, 0x4000, 0x4000, NULL); - - lsquic_stream_t *stream = new_stream(&tobjs, 123); - - frame = new_frame_in_ext(&tobjs, 0, 3, 0, &data[0]); - s = lsquic_stream_frame_in(stream, frame); - assert(0 == s); - n_readable = stream->data_in->di_if->di_readable_bytes(stream->data_in, 0); - assert(3 == n_readable); - - /* Hole */ - - frame = new_frame_in_ext(&tobjs, 6, 3, 0, &data[6]); - s = lsquic_stream_frame_in(stream, frame); - assert(0 == s); - n_readable = stream->data_in->di_if->di_readable_bytes(stream->data_in, 0); - assert(3 == n_readable); - - /* Read up to hole */ - - nw = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(3 == nw); - assert(0 == memcmp(buf, "AAA", 3)); - n_readable = stream->data_in->di_if->di_readable_bytes(stream->data_in, 3); - assert(0 == n_readable); - - frame = new_frame_in_ext(&tobjs, 3, 3, 0, &data[3]); - s = lsquic_stream_frame_in(stream, frame); - assert(0 == s); - n_readable = stream->data_in->di_if->di_readable_bytes(stream->data_in, 3); - assert(6 == n_readable); - - nw = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(6 == nw); - assert(0 == memcmp(buf, "BBBCCC", 6)); - n_readable = stream->data_in->di_if->di_readable_bytes(stream->data_in, 9); - assert(0 == n_readable); - - lsquic_stream_destroy(stream); - deinit_test_objs(&tobjs); -} - - -/* Test that connection flow control does not go past the max when both - * connection limited and unlimited streams are used. - */ -static void -test_conn_unlimited (void) -{ - size_t nw; - struct test_objs tobjs; - lsquic_stream_t *header_stream, *data_stream; - - init_test_objs(&tobjs, 0x4000, 0x4000, NULL); - - unsigned char *const data = calloc(1, 0x4000); - - /* Test 1: first write headers, then data stream */ - header_stream = new_stream(&tobjs, 1); - data_stream = new_stream(&tobjs, 123); - nw = lsquic_stream_write(header_stream, data, 98); - assert(98 == nw); - lsquic_stream_flush(header_stream); - nw = lsquic_stream_write(data_stream, data, 0x4000); - assert(0x4000 == nw); - assert(tobjs.conn_pub.conn_cap.cc_sent <= tobjs.conn_pub.conn_cap.cc_max); - lsquic_stream_destroy(header_stream); - lsquic_stream_destroy(data_stream); - - /* Test 2: first write data, then headers stream */ - header_stream = new_stream(&tobjs, 1); - data_stream = new_stream(&tobjs, 123); - lsquic_conn_cap_init(&tobjs.conn_pub.conn_cap, 0x4000); - nw = lsquic_stream_write(data_stream, data, 0x4000); - assert(0x4000 == nw); - nw = lsquic_stream_write(header_stream, data, 98); - assert(98 == nw); - lsquic_stream_flush(header_stream); - assert(tobjs.conn_pub.conn_cap.cc_sent <= tobjs.conn_pub.conn_cap.cc_max); - - lsquic_stream_destroy(header_stream); - lsquic_stream_destroy(data_stream); - - deinit_test_objs(&tobjs); - free(data); -} - - -static void -test_reading_from_stream2 (void) -{ - struct test_objs tobjs; - char buf[0x1000]; - struct iovec iov[2]; - lsquic_packet_in_t *packet_in; - lsquic_stream_t *stream; - stream_frame_t *frame; - ssize_t nw; - int s; - enum stream_state_receiving ssr; - const char data[] = "1234567890"; - - init_test_objs(&tobjs, 0x4000, 0x4000, NULL); - stream = new_stream(&tobjs, 123); - ssr = lsquic_stream_receiving_state(stream); - assert(SSR_RECV == ssr); - - frame = new_frame_in_ext(&tobjs, 0, 6, 0, &data[0]); - s = lsquic_stream_frame_in(stream, frame); - assert(("Inserted frame #1", 0 == s)); - - frame = new_frame_in_ext(&tobjs, 6, 4, 0, &data[6]); - s = lsquic_stream_frame_in(stream, frame); - assert(("Inserted frame #2", 0 == s)); - - /* Invalid frame: FIN in the middle */ - frame = new_frame_in(&tobjs, 6, 0, 1); - s = lsquic_stream_frame_in(stream, frame); - assert(("Invalid frame: FIN in the middle", -1 == s)); - - /* Test for overlaps and DUPs: */ - if (!(stream_ctor_flags & SCF_USE_DI_HASH)) - { - int dup; - unsigned offset, length; - for (offset = 0; offset < 7; ++offset) - { - for (length = 1; length <= sizeof(data) - 1 - offset; ++length) - { - dup = (offset == 0 && length == 6) - || (offset == 6 && length == 4); - frame = new_frame_in_ext(&tobjs, offset, length, 0, data + offset); - s = lsquic_stream_frame_in(stream, frame); - if (dup) - assert(("Dup OK", 0 == s)); - else - assert(("Overlap OK", 0 == s)); - } - } - } - - { - uint64_t n_readable; - - n_readable = stream->data_in->di_if - ->di_readable_bytes(stream->data_in, 0); - assert(10 == n_readable); - } - - nw = lsquic_stream_read(stream, buf, 8); - assert(("Read 8 bytes", nw == 8)); - assert(("Expected 8 bytes", 0 == memcmp(buf, "12345678", nw))); - - /* Insert invalid frame: its offset + length is before the already-read - * offset. - */ - frame = new_frame_in_ext(&tobjs, 0, 6, 0, &data[0]); - packet_in = lsquic_packet_in_get(frame->packet_in); /* incref to check for dups below */ - assert(2 == packet_in->pi_refcnt); /* Self-check */ - s = lsquic_stream_frame_in(stream, frame); - assert(("Insert frame before already-read offset succeeds (duplicate)", - s == 0)); - assert(("Duplicate frame has been thrown out", - packet_in->pi_refcnt == 1)); - lsquic_packet_in_put(&tobjs.eng_pub.enp_mm, packet_in); - packet_in = NULL; - - iov[0].iov_base = buf; - iov[0].iov_len = 1; - iov[1].iov_base = buf + 1; - iov[1].iov_len = sizeof(buf) - 1; - nw = lsquic_stream_readv(stream, iov, 2); - assert(("Read 2 bytes", nw == 2)); - assert(("Expected 2 bytes", 0 == memcmp(buf, "90", nw))); - nw = lsquic_stream_read(stream, buf, 8); - assert(("Read -1 bytes (EWOULDBLOCK)", -1 == nw && errno == EWOULDBLOCK)); - nw = lsquic_stream_read(stream, buf, 8); - assert(("Read -1 bytes again (EWOULDBLOCK)", -1 == nw && errno == EWOULDBLOCK)); - - /* Insert invalid frame: its offset + length is before the already-read - * offset. This test is different from before: now there is buffered - * incoming data. - */ - frame = new_frame_in_ext(&tobjs, 0, 6, 0, &data[0]); - packet_in = lsquic_packet_in_get(frame->packet_in); /* incref to check for dups below */ - assert(2 == packet_in->pi_refcnt); /* Self-check */ - s = lsquic_stream_frame_in(stream, frame); - assert(("Insert frame before already-read offset succeeds (duplicate)", - s == 0)); - assert(("Duplicate frame has been thrown out", - packet_in->pi_refcnt == 1)); - lsquic_packet_in_put(&tobjs.eng_pub.enp_mm, packet_in); - packet_in = NULL; - - /* Last frame has no data but has a FIN flag set */ - frame = new_frame_in_ext(&tobjs, 10, 0, 1, - (void *) 1234 /* Intentionally invalid: this pointer - * should not be used - */); - s = lsquic_stream_frame_in(stream, frame); - assert(("Inserted frame #3", 0 == s)); - ssr = lsquic_stream_receiving_state(stream); - assert(SSR_DATA_RECVD == ssr); - - /* Invalid frame: writing after FIN */ - frame = new_frame_in(&tobjs, 10, 2, 0); - s = lsquic_stream_frame_in(stream, frame); - assert(("Invalid frame caught", -1 == s)); - - /* Duplicate FIN frame */ - frame = new_frame_in_ext(&tobjs, 10, 0, 1, - (void *) 1234 /* Intentionally invalid: this pointer - * should not be used - */); - s = lsquic_stream_frame_in(stream, frame); - assert(("Duplicate FIN frame", 0 == s)); - - nw = lsquic_stream_read(stream, buf, 1); - assert(("Read 0 bytes (at EOR)", 0 == nw)); - ssr = lsquic_stream_receiving_state(stream); - assert(SSR_DATA_READ == ssr); - - lsquic_stream_destroy(stream); - deinit_test_objs(&tobjs); -} - - -/* This tests stream overlap support */ -static void -test_overlaps (void) -{ - struct test_objs tobjs; - char buf[0x1000]; - lsquic_stream_t *stream; - stream_frame_t *frame; - int s; - const char data[] = "1234567890"; - - struct frame_spec - { - unsigned off; - unsigned len; - signed char fin; - }; - - struct frame_step - { - struct frame_spec frame_spec; - int insert_res; /* Expected result */ - }; - - struct overlap_test - { - int line; /* Test identifier */ - struct frame_step steps[10]; /* Sequence of steps */ - unsigned n_steps; - const unsigned char buf[20]; /* Expected result of read */ - ssize_t sz; /* Expected size of first read */ - ssize_t second_read; /* Expected size of second read: - * 0 means EOS (FIN). - */ - }; - - static const struct overlap_test tests[] = - { - - { - .line = __LINE__, - .steps = - { - { - .frame_spec = { .off = 0, .len = 10, .fin = 0, }, - .insert_res = 0, - }, - }, - .n_steps = 1, - .buf = "0123456789", - .sz = 10, - .second_read = -1, - }, - - { - .line = __LINE__, - .steps = - { - { - .frame_spec = { .off = 0, .len = 5, .fin = 0, }, - .insert_res = 0, - }, - { - .frame_spec = { .off = 0, .len = 10, .fin = 0, }, - .insert_res = 0, - }, - }, - .n_steps = 2, - .buf = "0123456789", - .sz = 10, - .second_read = -1, - }, - - { - .line = __LINE__, - .steps = - { - { - .frame_spec = { .off = 1, .len = 9, .fin = 0, }, - .insert_res = 0, - }, - { - .frame_spec = { .off = 1, .len = 9, .fin = 1, }, - .insert_res = 0, - }, - { - .frame_spec = { .off = 0, .len = 2, .fin = 0, }, - .insert_res = 0, - }, - { - .frame_spec = { .off = 2, .len = 6, .fin = 0, }, - .insert_res = 0, - }, - }, - .n_steps = 4, - .buf = "0123456789", - .sz = 10, - .second_read = 0, - }, - - { - .line = __LINE__, - .steps = - { - { - .frame_spec = { .off = 1, .len = 9, .fin = 1, }, - .insert_res = 0, - }, - { - .frame_spec = { .off = 0, .len = 2, .fin = 0, }, - .insert_res = 0, - }, - }, - .n_steps = 2, - .buf = "0123456789", - .sz = 10, - .second_read = 0, - }, - - { - .line = __LINE__, - .steps = - { - { .frame_spec = { .off = 1, .len = 6, .fin = 0, }, .insert_res = 0, }, - { .frame_spec = { .off = 2, .len = 1, .fin = 0, }, .insert_res = 0, }, - { .frame_spec = { .off = 8, .len = 2, .fin = 1, }, .insert_res = 0, }, - { .frame_spec = { .off = 3, .len = 2, .fin = 0, }, .insert_res = 0, }, - { .frame_spec = { .off = 4, .len = 1, .fin = 0, }, .insert_res = 0, }, - { .frame_spec = { .off = 5, .len = 2, .fin = 0, }, .insert_res = 0, }, - { .frame_spec = { .off = 6, .len = 1, .fin = 0, }, .insert_res = 0, }, - { .frame_spec = { .off = 7, .len = 3, .fin = 0, }, .insert_res = 0, }, - { .frame_spec = { .off = 9, .len = 1, .fin = 1, }, .insert_res = 0, }, - { .frame_spec = { .off = 0, .len = 2, .fin = 0, }, .insert_res = 0, }, - }, - .n_steps = 10, - .buf = "0123456789", - .sz = 10, - .second_read = 0, - }, - - }; - - init_test_objs(&tobjs, 0x4000, 0x4000, NULL); - - const struct overlap_test *test; - for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) - { - LSQ_NOTICE("executing stream overlap test, line %d", test->line); - stream = new_stream(&tobjs, test->line); - - const struct frame_step *step; - for (step = test->steps; step < test->steps + test->n_steps; ++step) - { - frame = new_frame_in_ext(&tobjs, step->frame_spec.off, - step->frame_spec.len, step->frame_spec.fin, - &data[step->frame_spec.off]); - s = lsquic_stream_frame_in(stream, frame); - assert(s == step->insert_res); - } - - ssize_t nread = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(nread == test->sz); - assert(0 == memcmp(data, buf, test->sz)); - nread = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(nread == test->second_read); - if (nread < 0) - assert(EWOULDBLOCK == errno); - - lsquic_stream_destroy(stream); - } - - { - LSQ_NOTICE("Special test on line %d", __LINE__); - stream = new_stream(&tobjs, __LINE__); - frame = new_frame_in_ext(&tobjs, 0, 5, 0, &data[0]); - s = lsquic_stream_frame_in(stream, frame); - assert(0 == s); - ssize_t nread = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(nread == 5); - assert(0 == memcmp(data, buf, 5)); - nread = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(nread < 0); - assert(EWOULDBLOCK == errno); - /* Test that a frame with FIN that ends before the read offset - * results in an error. - */ - frame = new_frame_in_ext(&tobjs, 0, 3, 1, &data[0]); - s = lsquic_stream_frame_in(stream, frame); - assert(s < 0); - /* This frame should be a DUP: the next read should still return -1. - */ - frame = new_frame_in_ext(&tobjs, 3, 2, 0, &data[3]); - s = lsquic_stream_frame_in(stream, frame); - assert(s == 0); - nread = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(nread < 0); - assert(EWOULDBLOCK == errno); - /* This frame should be an overlap: FIN should register and - * the next read should return 0. - */ - frame = new_frame_in_ext(&tobjs, 0, 5, 1, &data[0]); - s = lsquic_stream_frame_in(stream, frame); - assert(s == 0); - nread = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(nread == 0); - lsquic_stream_destroy(stream); - } - - { - LSQ_NOTICE("Special test for bug 106 on line %d", __LINE__); - char *const data = malloc(5862); - init_buf(data, 5862); - assert(data); - stream = new_stream(&tobjs, __LINE__); - /* Insert four frames: */ - frame = new_frame_in_ext(&tobjs, 0, 1173, 0, data); - s = lsquic_stream_frame_in(stream, frame); - assert(0 == s); - frame = new_frame_in_ext(&tobjs, 1173, 1173, 0, data + 1173); - s = lsquic_stream_frame_in(stream, frame); - assert(0 == s); - frame = new_frame_in_ext(&tobjs, 2346, 1172, 0, data + 2346); - s = lsquic_stream_frame_in(stream, frame); - assert(0 == s); - frame = new_frame_in_ext(&tobjs, 3518, 578, 0, data + 3518); - s = lsquic_stream_frame_in(stream, frame); - assert(0 == s); - /* Read all data: */ - ssize_t nread = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(nread == 4096); - assert(0 == memcmp(data, buf, 4096)); - nread = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(nread < 0); - assert(EWOULDBLOCK == errno); - /* Insert overlapped frame and one more: */ - frame = new_frame_in_ext(&tobjs, 3518, 1172, 0, data + 3518); - s = lsquic_stream_frame_in(stream, frame); - assert(0 == s); - frame = new_frame_in_ext(&tobjs, 4690, 1172, 0, data + 4690); - s = lsquic_stream_frame_in(stream, frame); - assert(0 == s); - /* Verify that continued read from offset 4096 succeeds and - * contains expected data: - */ - nread = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(nread == 5862 - 4096); - assert(0 == memcmp(data + 4096, buf, 5862 - 4096)); - lsquic_stream_destroy(stream); - free(data); - } - - deinit_test_objs(&tobjs); -} - - -static void -test_insert_edge_cases (void) -{ - struct test_objs tobjs; - lsquic_stream_t *stream; - stream_frame_t *frame; - int s; - ssize_t nread; - const char data[] = "1234567890"; - enum stream_state_receiving ssr; - unsigned buf[0x1000]; - - init_test_objs(&tobjs, 0x4000, 0x4000, NULL); - - { - stream = new_stream(&tobjs, 123); - frame = new_frame_in_ext(&tobjs, 0, 6, 1, &data[0]); - s = lsquic_stream_frame_in(stream, frame); - assert(("Inserted frame #1", 0 == s)); - ssr = lsquic_stream_receiving_state(stream); - assert(SSR_DATA_RECVD == ssr); - /* Invalid frame: different FIN location */ - frame = new_frame_in_ext(&tobjs, 3, 2, 1, &data[3]); - s = lsquic_stream_frame_in(stream, frame); - assert(("Invalid frame: different FIN location", -1 == s)); - lsquic_stream_destroy(stream); - } - - { - stream = new_stream(&tobjs, 123); - frame = new_frame_in_ext(&tobjs, 0, 6, 0, &data[0]); - s = lsquic_stream_frame_in(stream, frame); - assert(("Inserted frame #1", 0 == s)); - nread = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(6 == nread); - frame = new_frame_in_ext(&tobjs, 6, 0, 0, &data[6]); - s = lsquic_stream_frame_in(stream, frame); - assert(("Duplicate frame", 0 == s)); - nread = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(nread == -1 && errno == EWOULDBLOCK); - frame = new_frame_in_ext(&tobjs, 6, 0, 1, &data[6]); - s = lsquic_stream_frame_in(stream, frame); - assert(("Frame OK", 0 == s)); - nread = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(nread == 0); /* Hit EOF */ - frame = new_frame_in_ext(&tobjs, 6, 0, 1, &data[6]); - s = lsquic_stream_frame_in(stream, frame); - assert(("Duplicate FIN frame", 0 == s)); - lsquic_stream_destroy(stream); - } - - { - stream = new_stream(&tobjs, 123); - frame = new_frame_in_ext(&tobjs, 6, 0, 1, &data[6]); - s = lsquic_stream_frame_in(stream, frame); - assert(("Frame OK", 0 == s)); - ssr = lsquic_stream_receiving_state(stream); - assert(SSR_SIZE_KNOWN == ssr); - frame = new_frame_in_ext(&tobjs, 0, 6, 0, &data[0]); - s = lsquic_stream_frame_in(stream, frame); - assert(("Inserted frame #1", 0 == s)); - nread = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(6 == nread); - frame = new_frame_in_ext(&tobjs, 6, 0, 0, &data[6]); - s = lsquic_stream_frame_in(stream, frame); - assert(("Duplicate frame", 0 == s)); - nread = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(nread == 0); /* Hit EOF */ - frame = new_frame_in_ext(&tobjs, 6, 0, 1, &data[6]); - s = lsquic_stream_frame_in(stream, frame); - assert(("Duplicate FIN frame", 0 == s)); - lsquic_stream_destroy(stream); - } - - { - stream = new_stream(&tobjs, 123); - frame = new_frame_in_ext(&tobjs, 0, 6, 1, &data[0]); - s = lsquic_stream_frame_in(stream, frame); - assert(("Inserted frame #1", 0 == s)); - nread = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(6 == nread); - nread = lsquic_stream_read(stream, buf, sizeof(buf)); - assert(0 == nread); /* Hit EOF */ - frame = new_frame_in_ext(&tobjs, 0, 6, 1, &data[0]); - s = lsquic_stream_frame_in(stream, frame); - assert(("Inserted duplicate frame", 0 == s)); - lsquic_stream_destroy(stream); - } - - deinit_test_objs(&tobjs); -} - - -/* When HTTP stream is closed unexpectedly, send a reset instead of creating - * an empty STREAM frame with a FIN bit set. - */ -static void -test_unexpected_http_close (void) -{ - struct test_objs tobjs; - lsquic_stream_t *stream; - int s; - - stream_ctor_flags |= SCF_HTTP; - init_test_objs(&tobjs, 0x4000, 0x4000, NULL); - - stream = new_stream(&tobjs, 123); - assert(stream->sm_bflags & SMBF_USE_HEADERS); /* Self-check */ - s = lsquic_stream_close(stream); - assert(s == 0); - assert(stream->sm_qflags & SMQF_SEND_RST); - assert(stream->sm_qflags & SMQF_CALL_ONCLOSE); - assert(!lsquic_send_ctl_has_buffered(&tobjs.send_ctl)); - - lsquic_stream_destroy(stream); - deinit_test_objs(&tobjs); - stream_ctor_flags &= ~SCF_HTTP; -} - - -static void -test_writing_to_stream_schedule_stream_packets_immediately (void) -{ - ssize_t nw; - struct test_objs tobjs; - struct lsquic_conn *const lconn = &tobjs.lconn; - struct lsquic_stream *stream; - int s; - unsigned char buf[0x1000]; - struct lsquic_conn_cap *const conn_cap = &tobjs.conn_pub.conn_cap; - - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - - init_test_objs(&tobjs, 0x4000, 0x4000, NULL); - n_closed = 0; - stream = new_stream(&tobjs, 123); - assert(("Stream initialized", stream)); - const struct test_ctx *const test_ctx_local = tobjs.stream_if_ctx; - assert(("on_new_stream called correctly", stream == test_ctx_local->stream)); - assert(LSQUIC_STREAM_DEFAULT_PRIO == lsquic_stream_priority(stream)); - - assert(lconn == lsquic_stream_conn(stream)); - - nw = lsquic_stream_write(stream, "Dude, where is", 14); - assert(("14 bytes written correctly", nw == 14)); - - assert(("not packetized", - 0 == lsquic_send_ctl_n_scheduled(&tobjs.send_ctl))); - /* Cap hit is taken immediately, even for flushed data */ - assert(("connection cap is reduced by 14 bytes", - lsquic_conn_cap_avail(conn_cap) == 0x4000 - 14)); - s = lsquic_stream_flush(stream); - assert(0 == s); - assert(("packetized -- 1 packet", - 1 == lsquic_send_ctl_n_scheduled(&tobjs.send_ctl))); - - nw = lsquic_stream_write(stream, " my car?!", 9); - assert(("9 bytes written correctly", nw == 9)); - s = lsquic_stream_flush(stream); - assert(0 == s); - assert(("packetized -- still 1 packet", - 1 == lsquic_send_ctl_n_scheduled(&tobjs.send_ctl))); - - assert(("connection cap is reduced by 23 bytes", - lsquic_conn_cap_avail(conn_cap) == 0x4000 - 23)); - - nw = read_from_scheduled_packets(&tobjs.send_ctl, stream->id, buf, - sizeof(buf), 0, NULL, 0); - assert(23 == nw); - assert(0 == memcmp(buf, "Dude, where is my car?!", 23)); - assert(("cannot reduce max_send below what's been sent already", - -1 == lsquic_stream_set_max_send_off(stream, 15))); - assert(("cannot reduce max_send below what's been sent already #2", - -1 == lsquic_stream_set_max_send_off(stream, 22))); - assert(("can set to the same value...", - 0 == lsquic_stream_set_max_send_off(stream, 23))); - assert(("...or larger", - 0 == lsquic_stream_set_max_send_off(stream, 23000))); - lsquic_stream_destroy(stream); - assert(("on_close called", 1 == n_closed)); - deinit_test_objs(&tobjs); -} - - -static void -test_writing_to_stream_outside_callback (void) -{ - ssize_t nw; - struct test_objs tobjs; - struct lsquic_conn *const lconn = &tobjs.lconn; - struct lsquic_stream *stream; - int s; - unsigned char buf[0x1000]; - struct lsquic_conn_cap *const conn_cap = &tobjs.conn_pub.conn_cap; - - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; - g_ctl_settings.tcs_bp_type = BPT_OTHER_PRIO; - const struct buf_packet_q *const bpq = - &tobjs.send_ctl.sc_buffered_packets[g_ctl_settings.tcs_bp_type]; - - init_test_objs(&tobjs, 0x4000, 0x4000, NULL); - n_closed = 0; - stream = new_stream(&tobjs, 123); - assert(("Stream initialized", stream)); - const struct test_ctx *const test_ctx_local = tobjs.stream_if_ctx; - assert(("on_new_stream called correctly", stream == test_ctx_local->stream)); - assert(LSQUIC_STREAM_DEFAULT_PRIO == lsquic_stream_priority(stream)); - - assert(lconn == lsquic_stream_conn(stream)); - - nw = lsquic_stream_write(stream, "Dude, where is", 14); - assert(("14 bytes written correctly", nw == 14)); - - assert(("not packetized", 0 == bpq->bpq_count)); - s = lsquic_stream_flush(stream); - assert(0 == s); - assert(("packetized -- 1 packet", 1 == bpq->bpq_count)); - - nw = lsquic_stream_write(stream, " my car?!", 9); - assert(("9 bytes written correctly", nw == 9)); - s = lsquic_stream_flush(stream); - assert(0 == s); - assert(("packetized -- still 1 packet", 1 == bpq->bpq_count)); - - assert(("connection cap is reduced by 23 bytes", - lsquic_conn_cap_avail(conn_cap) == 0x4000 - 23)); - - /* Now we are magically inside the callback: */ - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, - g_ctl_settings.tcs_bp_type); - assert(("packetized -- 1 packet", - 1 == lsquic_send_ctl_n_scheduled(&tobjs.send_ctl))); - - nw = read_from_scheduled_packets(&tobjs.send_ctl, stream->id, buf, - sizeof(buf), 0, NULL, 0); - assert(23 == nw); - assert(0 == memcmp(buf, "Dude, where is my car?!", 23)); - assert(("cannot reduce max_send below what's been sent already", - -1 == lsquic_stream_set_max_send_off(stream, 15))); - assert(("cannot reduce max_send below what's been sent already #2", - -1 == lsquic_stream_set_max_send_off(stream, 22))); - assert(("can set to the same value...", - 0 == lsquic_stream_set_max_send_off(stream, 23))); - assert(("...or larger", - 0 == lsquic_stream_set_max_send_off(stream, 23000))); - lsquic_stream_destroy(stream); - assert(("on_close called", 1 == n_closed)); - deinit_test_objs(&tobjs); -} - - -static void -verify_ack (struct lsquic_packet_out *packet_out) -{ - struct packet_out_frec_iter pofi; - const struct frame_rec *frec; - unsigned short regen_sz; - enum quic_ft_bit frame_types; - - assert(packet_out->po_regen_sz > 0); - assert(packet_out->po_frame_types & (1 << QUIC_FRAME_ACK)); - - regen_sz = 0; - frame_types = 0; - for (frec = lsquic_pofi_first(&pofi, packet_out); frec; - frec = lsquic_pofi_next(&pofi)) - { - frame_types |= 1 << frec->fe_frame_type; - if (frec->fe_frame_type == QUIC_FRAME_ACK) - { - assert(frec->fe_len == 9); - assert(0 == memcmp(packet_out->po_data + frec->fe_off, "ACKACKACK", 9)); - assert(regen_sz == frec->fe_off); - regen_sz += frec->fe_len; - } - } - - assert(frame_types & (1 << QUIC_FRAME_ACK)); - assert(regen_sz == packet_out->po_regen_sz); -} - - -/* Write to buffered streams: first to low-priority, then high-priority. This - * should trigger ACK generation and move. - */ -static void -test_stealing_ack (void) -{ - ssize_t nw; - struct test_objs tobjs; - struct lsquic_conn *const lconn = &tobjs.lconn; - struct lsquic_stream *lo_stream, *hi_stream;; - int s; - const struct buf_packet_q *bpq; - - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; - g_ctl_settings.tcs_write_ack = 1; - g_ctl_settings.tcs_bp_type = BPT_OTHER_PRIO; - - init_test_objs(&tobjs, 0x4000, 0x4000, NULL); - - lo_stream = new_stream(&tobjs, 123); - assert(("Stream initialized", lo_stream)); - assert(LSQUIC_STREAM_DEFAULT_PRIO == lsquic_stream_priority(lo_stream)); - assert(lconn == lsquic_stream_conn(lo_stream)); - nw = lsquic_stream_write(lo_stream, "Dude, where is", 14); - assert(("14 bytes written correctly", nw == 14)); - s = lsquic_stream_flush(lo_stream); - assert(0 == s); - - bpq = &tobjs.send_ctl.sc_buffered_packets[g_ctl_settings.tcs_bp_type]; - verify_ack(TAILQ_FIRST(&bpq->bpq_packets)); - - g_ctl_settings.tcs_bp_type = BPT_HIGHEST_PRIO; - - hi_stream = new_stream(&tobjs, 1); - assert(("Stream initialized", hi_stream)); - assert(lconn == lsquic_stream_conn(hi_stream)); - nw = lsquic_stream_write(hi_stream, "DATA", 4); - assert(("4 bytes written correctly", nw == 4)); - s = lsquic_stream_flush(hi_stream); - assert(0 == s); - - /* ACK is moved (stolen) from low-priority stream to high-priority stream */ - /* Check old packet */ - assert(!(TAILQ_FIRST(&bpq->bpq_packets)->po_frame_types & (1 << QUIC_FRAME_ACK))); - /* Check new packet */ - bpq = &tobjs.send_ctl.sc_buffered_packets[g_ctl_settings.tcs_bp_type]; - verify_ack(TAILQ_FIRST(&bpq->bpq_packets)); - - /* And now chop regen, see if we hit any asserts there */ - lsquic_packet_out_chop_regen(TAILQ_FIRST(&bpq->bpq_packets)); - /* And now verify that ACK is gone */ - assert(!(TAILQ_FIRST(&bpq->bpq_packets)->po_frame_types & (1 << QUIC_FRAME_ACK))); - - lsquic_stream_destroy(lo_stream); - lsquic_stream_destroy(hi_stream); - deinit_test_objs(&tobjs); -} - - -static void -test_changing_pack_size (void) -{ - ssize_t nw; - struct test_objs tobjs; - struct lsquic_conn *lconn = &tobjs.lconn; - struct lsquic_stream *stream; - int s, i; - unsigned char buf[0x2000]; - size_t len; - - init_buf(buf, sizeof(buf)); - - enum lsquic_version versions_to_test[3] = - { - LSQVER_046, - LSQVER_I001, - }; - - for (i = 0; i < 3; i++) - { - g_pf = select_pf_by_ver(versions_to_test[i]); - - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; - g_ctl_settings.tcs_bp_type = BPT_OTHER_PRIO; - const struct buf_packet_q *const bpq = - &tobjs.send_ctl.sc_buffered_packets[g_ctl_settings.tcs_bp_type]; - init_test_objs(&tobjs, 0x4000, 0x4000, NULL); - n_closed = 0; - if ((1 << versions_to_test[i]) & LSQUIC_IETF_VERSIONS) - { - tobjs.ctor_flags |= SCF_IETF; - lconn->cn_flags |= LSCONN_IETF; - network_path.np_pack_size = 4096; - } - stream = new_stream(&tobjs, 5); - assert(("Stream initialized", stream)); - const struct test_ctx *const test_ctx_local = tobjs.stream_if_ctx; - assert(("on_new_stream called correctly", stream == test_ctx_local->stream)); - - len = ((1 << versions_to_test[i]) & LSQUIC_IETF_VERSIONS) ? 2048 : 1024; - nw = lsquic_stream_write(stream, buf, len); - assert(("n bytes written correctly", (size_t)nw == len)); - - assert(("not packetized", 0 == bpq->bpq_count)); - - /* IETF: shrink packet size before a flush */ - if ((1 << versions_to_test[i]) & LSQUIC_IETF_VERSIONS) - network_path.np_pack_size = 1370; - - s = lsquic_stream_flush(stream); - assert(0 == s); - - if ((1 << versions_to_test[i]) & LSQUIC_IETF_VERSIONS) - assert(("packetized -- 2 packets", 2 == bpq->bpq_count)); - else - assert(("packetized -- 1 packets", 1 == bpq->bpq_count)); - - /* IETF: expand packet size before a write */ - if ((1 << versions_to_test[i]) & LSQUIC_IETF_VERSIONS) - network_path.np_pack_size = 4096; - - len = ((1 << versions_to_test[i]) & LSQUIC_IETF_VERSIONS) ? 2048 : 1024; - nw = lsquic_stream_write(stream, buf, len); - assert(("n bytes written correctly", (size_t)nw == len)); - if ((1 << versions_to_test[i]) & LSQUIC_IETF_VERSIONS) - assert(("packetized -- 3 packets", 3 == bpq->bpq_count)); - else - assert(("packetized -- 1 packets", 1 == bpq->bpq_count)); - - s = lsquic_stream_flush(stream); - assert(0 == s); - if ((1 << versions_to_test[i]) & LSQUIC_IETF_VERSIONS) - assert(("packetized -- 3 packets", 3 == bpq->bpq_count)); - else - assert(("packetized -- 2 packets", 2 == bpq->bpq_count)); - - lsquic_stream_destroy(stream); - assert(("on_close called", 1 == n_closed)); - deinit_test_objs(&tobjs); - } - g_pf = select_pf_by_ver(LSQVER_043); -} - - -/* This tests what happens when a stream data is buffered using one packet - * size, but then packet size get smaller (which is what happens when an RTO - * occurs), and then more data is written. - * - * In particular, the write sizes in this tests are structured to make - * maybe_resize_threshold() change the threshold. - */ -static void -test_reducing_pack_size (void) -{ - ssize_t nw; - struct test_objs tobjs; - struct lsquic_conn *lconn = &tobjs.lconn; - struct lsquic_stream *stream; - int s; - unsigned i; - unsigned char buf[0x4000]; - - init_buf(buf, sizeof(buf)); - - enum lsquic_version versions_to_test[] = - { - LSQVER_050, - LSQVER_ID29, - }; - - /* Particular versions should not matter as this is tests the logic in - * stream only, but we do it for completeness. - */ - for (i = 0; i < sizeof(versions_to_test) / sizeof(versions_to_test[0]); i++) - { - g_pf = select_pf_by_ver(versions_to_test[i]); - - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - g_ctl_settings.tcs_bp_type = BPT_OTHER_PRIO; - init_test_objs(&tobjs, 0x4000, 0x4000, NULL); - n_closed = 0; - if ((1 << versions_to_test[i]) & LSQUIC_IETF_VERSIONS) - { - tobjs.ctor_flags |= SCF_IETF; - lconn->cn_flags |= LSCONN_IETF; - } - network_path.np_pack_size = 2000; - stream = new_stream(&tobjs, 5); - assert(("Stream initialized", stream)); - const struct test_ctx *const test_ctx_local = tobjs.stream_if_ctx; - assert(("on_new_stream called correctly", stream == test_ctx_local->stream)); - - nw = lsquic_stream_write(stream, buf, 1400); - assert(stream->sm_n_allocated <= 2000); - assert(stream->sm_n_buffered > 0); - assert(("n bytes written correctly", (size_t)nw == 1400)); - - /* Shrink packet size */ - network_path.np_pack_size = 1300; - - nw = lsquic_stream_write(stream, buf, 3000); - assert(stream->sm_n_allocated <= 1300); - assert(stream->sm_n_buffered > 0); - assert(("n bytes written correctly", (size_t)nw == 3000)); - - s = lsquic_stream_flush(stream); - assert(stream->sm_n_buffered == 0); - assert(0 == s); - - lsquic_stream_destroy(stream); - assert(("on_close called", 1 == n_closed)); - deinit_test_objs(&tobjs); - } - g_pf = select_pf_by_ver(LSQVER_043); -} - - -/* Test window update logic, connection-limited */ -static void -test_window_update1 (void) -{ - ssize_t nw; - struct test_objs tobjs; - struct lsquic_stream *stream; - unsigned char buf[0x1000]; - lsquic_packet_out_t *packet_out; - struct lsquic_conn_cap *const conn_cap = &tobjs.conn_pub.conn_cap; - int s; - - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - - init_test_objs(&tobjs, 0x4000, 0x4000, NULL); - n_closed = 0; - stream = new_stream_ext(&tobjs, 123, 3); - nw = lsquic_stream_write(stream, "1234567890", 10); - assert(("lsquic_stream_write is limited by the send window", 3 == nw)); - assert(("cc_tosend is updated immediately", - 3 == conn_cap->cc_sent)); - s = lsquic_stream_flush(stream); - assert(0 == s); - assert(("cc_tosend is updated when limited by connection", - 3 == conn_cap->cc_sent)); - nw = read_from_scheduled_packets(&tobjs.send_ctl, stream->id, buf, - sizeof(buf), 0, NULL, 0); - assert(nw == 3); - assert(0 == memcmp(buf, "123", 3)); - - /* Pretend we sent out a packet: */ - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs.send_ctl, 0); - lsquic_send_ctl_sent_packet(&tobjs.send_ctl, packet_out); - - lsquic_stream_window_update(stream, 20); - nw = lsquic_stream_write(stream, "4567890", 7); - assert(("lsquic_stream_write: wrote remainig 7 bytes", 7 == nw)); - s = lsquic_stream_flush(stream); - assert(0 == s); - - /* Verify written data: */ - nw = read_from_scheduled_packets(&tobjs.send_ctl, stream->id, buf, - sizeof(buf), 3, NULL, 0); - assert(nw == 7); - assert(0 == memcmp(buf, "4567890", 7)); - - lsquic_stream_destroy(stream); - assert(("on_close called", 1 == n_closed)); - deinit_test_objs(&tobjs); -} - - -/* Test two: large frame in the middle */ -static void -test_bad_packbits_guess_2 (void) -{ - lsquic_packet_out_t *packet_out; - ssize_t nw; - struct test_objs tobjs; - struct lsquic_stream *streams[3]; - char buf[0x1000]; - unsigned char buf_out[0x1000]; - int s, fin; - - init_buf(buf, sizeof(buf)); - - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; - g_ctl_settings.tcs_guess_packno_bits = GQUIC_PACKNO_LEN_1; - - init_test_objs(&tobjs, 0x1000, 0x1000, NULL); - streams[0] = new_stream(&tobjs, 5); - streams[1] = new_stream(&tobjs, 7); - streams[2] = new_stream(&tobjs, 9); - - /* Perfrom writes on the three streams. This is tuned to fill a single - * packet completely -- we check this later in this function. - */ - s = lsquic_stream_shutdown(streams[0], 1); - assert(s == 0); - nw = lsquic_stream_write(streams[1], buf, 1337); - assert(nw == 1337); - s = lsquic_stream_flush(streams[1]); - assert(0 == s); - nw = lsquic_stream_write(streams[2], buf + 1337, 1); - assert(nw == 1); - s = lsquic_stream_shutdown(streams[2], 1); - assert(s == 0); - - /* Verify that we got one packet filled to the top: */ - const struct buf_packet_q *const bpq = - &tobjs.send_ctl.sc_buffered_packets[g_ctl_settings.tcs_bp_type]; - assert(("packetized -- 1 packet", 1 == bpq->bpq_count)); - packet_out = TAILQ_FIRST(&bpq->bpq_packets); - assert(0 == lsquic_packet_out_avail(packet_out)); - - assert(1 == streams[0]->n_unacked); - assert(1 == streams[1]->n_unacked); - assert(1 == streams[2]->n_unacked); - - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - g_ctl_settings.tcs_calc_packno_bits = GQUIC_PACKNO_LEN_6; - s = lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, - g_ctl_settings.tcs_bp_type); - assert(2 == lsquic_send_ctl_n_scheduled(&tobjs.send_ctl)); - - /* Verify written data: */ - nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[0]->id, buf_out, - sizeof(buf_out), 0, &fin, 0); - assert(nw == 0); - assert(fin); - nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[1]->id, buf_out, - sizeof(buf_out), 0, &fin, 0); - assert(nw == 1337); - assert(!fin); - assert(0 == memcmp(buf, buf_out, 1337)); - nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[2]->id, buf_out, - sizeof(buf_out), 0, &fin, 0); - assert(nw == 1); - assert(fin); - assert(0 == memcmp(buf + 1337, buf_out, 1)); - - /* Verify packets */ - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs.send_ctl, 0); - assert(lsquic_packet_out_packno_bits(packet_out) == GQUIC_PACKNO_LEN_6); - assert(1 == packet_out->po_packno); - assert(packet_out->po_frame_types & (1 << QUIC_FRAME_STREAM)); - lsquic_send_ctl_sent_packet(&tobjs.send_ctl, packet_out); - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs.send_ctl, 0); - assert(lsquic_packet_out_packno_bits(packet_out) == GQUIC_PACKNO_LEN_6); - assert(2 == packet_out->po_packno); - assert(packet_out->po_frame_types & (1 << QUIC_FRAME_STREAM)); - lsquic_send_ctl_sent_packet(&tobjs.send_ctl, packet_out); - - assert(1 == streams[0]->n_unacked); - assert(1 == streams[1]->n_unacked); - assert(1 == streams[2]->n_unacked); - ack_packet(&tobjs.send_ctl, 1); - assert(0 == streams[0]->n_unacked); - assert(0 == streams[1]->n_unacked); - assert(1 == streams[2]->n_unacked); - ack_packet(&tobjs.send_ctl, 2); - assert(0 == streams[0]->n_unacked); - assert(0 == streams[1]->n_unacked); - assert(0 == streams[2]->n_unacked); - - lsquic_stream_destroy(streams[0]); - lsquic_stream_destroy(streams[1]); - lsquic_stream_destroy(streams[2]); - deinit_test_objs(&tobjs); -} - - -/* Test three: split large STREAM frame into two halves. The second half - * goes into new packet. - */ -static void -test_bad_packbits_guess_3 (void) -{ - lsquic_packet_out_t *packet_out; - ssize_t nw; - struct test_objs tobjs; - struct lsquic_stream *streams[1]; - char buf[0x1000]; - unsigned char buf_out[0x1000]; - int s, fin; - - init_buf(buf, sizeof(buf)); - - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; - g_ctl_settings.tcs_guess_packno_bits = GQUIC_PACKNO_LEN_1; - - init_test_objs(&tobjs, 0x1000, 0x1000, NULL); - streams[0] = new_stream(&tobjs, 5); - - nw = lsquic_stream_write(streams[0], buf, - /* Use odd number to test halving logic: */ 1343); - assert(nw == 1343); - s = lsquic_stream_shutdown(streams[0], 1); - assert(s == 0); - - /* Verify that we got one packet filled to the top (minus one byte) */ - const struct buf_packet_q *const bpq = - &tobjs.send_ctl.sc_buffered_packets[g_ctl_settings.tcs_bp_type]; - assert(("packetized -- 1 packet", 1 == bpq->bpq_count)); - packet_out = TAILQ_FIRST(&bpq->bpq_packets); - assert(1 == lsquic_packet_out_avail(packet_out)); - - assert(1 == streams[0]->n_unacked); - - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - g_ctl_settings.tcs_calc_packno_bits = GQUIC_PACKNO_LEN_6; - s = lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, - g_ctl_settings.tcs_bp_type); - assert(2 == lsquic_send_ctl_n_scheduled(&tobjs.send_ctl)); - - /* Verify written data: */ - nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[0]->id, buf_out, - sizeof(buf_out), 0, &fin, 0); - assert(nw == 1343); - assert(fin); - assert(0 == memcmp(buf, buf_out, 1343)); - - /* Verify packets */ - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs.send_ctl, 0); - assert(lsquic_packet_out_packno_bits(packet_out) == GQUIC_PACKNO_LEN_6); - assert(1 == packet_out->po_packno); - assert(packet_out->po_frame_types & (1 << QUIC_FRAME_STREAM)); - lsquic_send_ctl_sent_packet(&tobjs.send_ctl, packet_out); - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs.send_ctl, 0); - assert(lsquic_packet_out_packno_bits(packet_out) == GQUIC_PACKNO_LEN_6); - assert(2 == packet_out->po_packno); - assert(packet_out->po_frame_types & (1 << QUIC_FRAME_STREAM)); - lsquic_send_ctl_sent_packet(&tobjs.send_ctl, packet_out); - - assert(2 == streams[0]->n_unacked); - ack_packet(&tobjs.send_ctl, 1); - assert(1 == streams[0]->n_unacked); - ack_packet(&tobjs.send_ctl, 2); - assert(0 == streams[0]->n_unacked); - - lsquic_stream_destroy(streams[0]); - deinit_test_objs(&tobjs); -} - - -/* Test resizing of buffered packets: - * 1. Write data to buffered packets - * 2. Reduce packet size - * 3. Resize buffered packets - * 4. Schedule them - * 5. Check contents - */ -static void -test_resize_buffered (void) -{ -#ifndef NDEBUG - ssize_t nw; - struct test_objs tobjs; - struct lsquic_stream *streams[1]; - const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_I001); - char buf[0x10000]; - unsigned char buf_out[0x10000]; - int s, fin; - unsigned packet_counts[2]; - - init_buf(buf, sizeof(buf)); - - lsquic_send_ctl_set_max_bpq_count(UINT_MAX); - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; - - init_test_objs(&tobjs, 0x100000, 0x100000, pf); - tobjs.send_ctl.sc_flags |= SC_IETF; /* work around asserts lsquic_send_ctl_resize() */ - network_path.np_pack_size = 4096; - streams[0] = new_stream_ext(&tobjs, 8, 0x100000); - - nw = lsquic_stream_write(streams[0], buf, sizeof(buf)); - assert(nw == sizeof(buf)); - s = lsquic_stream_shutdown(streams[0], 1); - assert(s == 0); - packet_counts[0] = tobjs.send_ctl.sc_buffered_packets[g_ctl_settings.tcs_bp_type].bpq_count; - - assert(streams[0]->n_unacked > 0); - - network_path.np_pack_size = 1234; - lsquic_send_ctl_resize(&tobjs.send_ctl); - packet_counts[1] = tobjs.send_ctl.sc_buffered_packets[g_ctl_settings.tcs_bp_type].bpq_count; - assert(packet_counts[1] > packet_counts[0]); - - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - s = lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, - g_ctl_settings.tcs_bp_type); - assert(lsquic_send_ctl_n_scheduled(&tobjs.send_ctl) > 0); - - /* Verify written data: */ - nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[0]->id, buf_out, - sizeof(buf_out), 0, &fin, 0); - assert(nw == sizeof(buf)); - assert(fin); - assert(0 == memcmp(buf, buf_out, nw)); - - lsquic_stream_destroy(streams[0]); - deinit_test_objs(&tobjs); - lsquic_send_ctl_set_max_bpq_count(10); -#endif -} - - -/* Test resizing of buffered packets: - * 1. Write data to buffered packets - * 2. Schedule them - * 3. Reduce packet size - * 4. Resize packets - * 5. Check contents - */ -static void -test_resize_scheduled (void) -{ -#ifndef NDEBUG // lsquic_send_ctl_set_max_bpq_count is debug only - ssize_t nw; - struct test_objs tobjs; - struct lsquic_stream *streams[1]; - const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_I001); - char buf[0x10000]; - unsigned char buf_out[0x10000]; - int s, fin; - unsigned packet_counts[2]; - - init_buf(buf, sizeof(buf)); - - lsquic_send_ctl_set_max_bpq_count(UINT_MAX); - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; - - init_test_objs(&tobjs, 0x100000, 0x100000, pf); - tobjs.send_ctl.sc_flags |= SC_IETF; /* work around asserts lsquic_send_ctl_resize() */ - network_path.np_pack_size = 4096; - streams[0] = new_stream_ext(&tobjs, 8, 0x100000); - - nw = lsquic_stream_write(streams[0], buf, sizeof(buf)); - assert(nw == sizeof(buf)); - s = lsquic_stream_shutdown(streams[0], 1); - assert(s == 0); - - assert(streams[0]->n_unacked > 0); - - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - s = lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, - g_ctl_settings.tcs_bp_type); - packet_counts[0] = lsquic_send_ctl_n_scheduled(&tobjs.send_ctl); - assert(packet_counts[0] > 0); - - network_path.np_pack_size = 1234; - lsquic_send_ctl_resize(&tobjs.send_ctl); - packet_counts[1] = lsquic_send_ctl_n_scheduled(&tobjs.send_ctl); - assert(packet_counts[1] > packet_counts[0]); - - /* Verify written data: */ - nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[0]->id, buf_out, - sizeof(buf_out), 0, &fin, 0); - assert(nw == sizeof(buf)); - assert(fin); - assert(0 == memcmp(buf, buf_out, nw)); - - lsquic_stream_destroy(streams[0]); - deinit_test_objs(&tobjs); - lsquic_send_ctl_set_max_bpq_count(10); -#endif -} - - -struct packetization_test_stream_ctx -{ - const unsigned char *buf; - unsigned len, off, write_size; -}; - - -static lsquic_stream_ctx_t * -packetization_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) -{ - lsquic_stream_wantwrite(stream, 1); - return stream_if_ctx; -} - - -static void -packetization_on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) -{ -} - - -#define RANDOM_WRITE_SIZE ~0U - -static unsigned -calc_n_to_write (unsigned write_size) -{ - if (write_size == RANDOM_WRITE_SIZE) - return rand() % 1000 + 1; - else - return write_size; -} - - -static void -packetization_write_as_much_as_you_can (lsquic_stream_t *stream, - lsquic_stream_ctx_t *ctx) -{ - struct packetization_test_stream_ctx *const pack_ctx = (void *) ctx; - unsigned n_to_write; - ssize_t n_written; - int s; - - while (pack_ctx->off < pack_ctx->len) - { - n_to_write = calc_n_to_write(pack_ctx->write_size); - if (n_to_write > pack_ctx->len - pack_ctx->off) - n_to_write = pack_ctx->len - pack_ctx->off; - n_written = lsquic_stream_write(stream, pack_ctx->buf + pack_ctx->off, - n_to_write); - assert(n_written >= 0); - if (n_written == 0) - break; - pack_ctx->off += n_written; - } - - s = lsquic_stream_flush(stream); - assert(s == 0); - lsquic_stream_wantwrite(stream, 0); -} - - -static void -packetization_perform_one_write (lsquic_stream_t *stream, - lsquic_stream_ctx_t *ctx) -{ - struct packetization_test_stream_ctx *const pack_ctx = (void *) ctx; - unsigned n_to_write; - ssize_t n_written; - - n_to_write = calc_n_to_write(pack_ctx->write_size); - if (n_to_write > pack_ctx->len - pack_ctx->off) - n_to_write = pack_ctx->len - pack_ctx->off; - n_written = lsquic_stream_write(stream, pack_ctx->buf + pack_ctx->off, - n_to_write); - assert(n_written >= 0); - pack_ctx->off += n_written; - if (n_written == 0) - lsquic_stream_wantwrite(stream, 0); -} - - -static const struct lsquic_stream_if packetization_inside_once_stream_if = { - .on_new_stream = packetization_on_new_stream, - .on_close = packetization_on_close, - .on_write = packetization_write_as_much_as_you_can, -}; - - -static const struct lsquic_stream_if packetization_inside_many_stream_if = { - .on_new_stream = packetization_on_new_stream, - .on_close = packetization_on_close, - .on_write = packetization_perform_one_write, -}; - - -static void -test_packetization (int schedule_stream_packets_immediately, int dispatch_once, - unsigned write_size, unsigned first_stream_sz) -{ - struct test_objs tobjs; - struct lsquic_stream *streams[2]; - size_t nw; - int fin; - unsigned stream_ids[2]; - unsigned char buf[0x8000]; - unsigned char buf_out[0x8000]; - - struct packetization_test_stream_ctx packet_stream_ctx = - { - .buf = buf, - .off = 0, - .len = sizeof(buf), - .write_size = write_size, - }; - - init_buf(buf, sizeof(buf)); - - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = schedule_stream_packets_immediately; - - init_test_objs(&tobjs, - /* Test limits a bit while we are at it: */ - sizeof(buf) - 1, sizeof(buf) - 1, NULL); - tobjs.stream_if_ctx = &packet_stream_ctx; - - if (schedule_stream_packets_immediately) - { - if (dispatch_once) - { - tobjs.stream_if = &packetization_inside_once_stream_if; - tobjs.ctor_flags |= SCF_DISP_RW_ONCE; - } - else - tobjs.stream_if = &packetization_inside_many_stream_if; - } - else - /* Need this for on_new_stream() callback not to mess with - * the context, otherwise this is not used. - */ - tobjs.stream_if = &packetization_inside_many_stream_if; - - if (g_use_crypto_ctor) - { - stream_ids[0] = ENC_LEV_INIT; - stream_ids[1] = ENC_LEV_HSK; - } - else - { - stream_ids[0] = 7; - stream_ids[1] = 5; - } - - streams[0] = new_stream(&tobjs, stream_ids[0]); - streams[1] = new_stream_ext(&tobjs, stream_ids[1], sizeof(buf) - 1); - - if (first_stream_sz) - { - lsquic_stream_write(streams[0], buf, first_stream_sz); - lsquic_stream_flush(streams[0]); - } - - if (schedule_stream_packets_immediately) - { - lsquic_stream_dispatch_write_events(streams[1]); - lsquic_stream_flush(streams[1]); - } - else - { - packetization_write_as_much_as_you_can(streams[1], - (void *) &packet_stream_ctx); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, BPT_HIGHEST_PRIO); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; - } - - if (!g_use_crypto_ctor) - assert(packet_stream_ctx.off == packet_stream_ctx.len - first_stream_sz - 1); - - /* Verify written data: */ - nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[1]->id, buf_out, - sizeof(buf_out), 0, &fin, 1); - if (!g_use_crypto_ctor) - { - assert(nw == sizeof(buf) - first_stream_sz - 1); - assert(!fin); - assert(0 == memcmp(buf, buf_out, sizeof(buf) - first_stream_sz - 1)); - } - else - { - assert(sizeof(buf) == nw); - assert(0 == memcmp(buf, buf_out, nw)); - } - - lsquic_stream_destroy(streams[0]); - lsquic_stream_destroy(streams[1]); - deinit_test_objs(&tobjs); -} - - -/* Test condition when the room necessary to write a STREAM frame to a packet - * is miscalculated and a brand-new packet has to be allocated. - * - * This does not affect IETF QUIC because the STREAM frame uses varint data - * length representation and thus uses just a single byte to represent the - * length of a 1-byte stream data chunk. - */ -static void -test_cant_fit_frame (const struct parse_funcs *pf) -{ - struct test_objs tobjs; - struct lsquic_stream *streams[2]; - struct lsquic_packet_out *packet_out; - size_t pad_len, rem, nr; - int fin, s; - const char dude[] = "Dude, where is my car?!"; - unsigned char buf_out[100]; - - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; - - init_test_objs(&tobjs, 0x8000, 0x8000, pf); - - streams[0] = new_stream(&tobjs, 5); - streams[1] = new_stream(&tobjs, 7); - - /* Allocate a packet and pad it so just a few bytes remain to trigger - * the condition we're after. - */ - lsquic_stream_write(streams[0], dude, sizeof(dude) - 1); - lsquic_stream_flush(streams[0]); - - rem = pf->pf_calc_stream_frame_header_sz(streams[1]->id, 0, 1) - + 1 /* We'll write one byte */ - + 1 /* This triggers the refit condition */ - ; - - packet_out = TAILQ_FIRST(&tobjs.send_ctl.sc_buffered_packets[0].bpq_packets); - assert(NULL == TAILQ_NEXT(packet_out, po_next)); - pad_len = packet_out->po_n_alloc - packet_out->po_data_sz - rem; - memset(packet_out->po_data + packet_out->po_data_sz, 0, pad_len); - packet_out->po_data_sz += pad_len; - - lsquic_stream_write(streams[1], "A", 1); - s = lsquic_stream_flush(streams[1]); - assert(0 == s); - /* Allocated another packet */ - assert(TAILQ_NEXT(packet_out, po_next)); - - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, BPT_HIGHEST_PRIO); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; - - /* Verify written data: */ - nr = read_from_scheduled_packets(&tobjs.send_ctl, streams[0]->id, buf_out, - sizeof(buf_out), 0, &fin, 1); - assert(nr == sizeof(dude) - 1); - assert(!fin); - assert(0 == memcmp(dude, buf_out, sizeof(dude) - 1)); - nr = read_from_scheduled_packets(&tobjs.send_ctl, streams[1]->id, buf_out, - sizeof(buf_out), 0, &fin, 1); - assert(nr == 1); - assert(!fin); - assert(buf_out[0] == 'A'); - - lsquic_stream_destroy(streams[0]); - lsquic_stream_destroy(streams[1]); - deinit_test_objs(&tobjs); -} - - -/* Test window update logic, not connection limited */ -static void -test_window_update2 (void) -{ - ssize_t nw; - int s; - struct test_objs tobjs; - struct lsquic_stream *stream; - lsquic_packet_out_t *packet_out; - struct lsquic_conn_cap *const conn_cap = &tobjs.conn_pub.conn_cap; - unsigned char buf[0x1000]; - - init_test_objs(&tobjs, 0x4000, 0x4000, NULL); - n_closed = 0; - stream = new_stream_ext(&tobjs, 1, 3); - nw = lsquic_stream_write(stream, "1234567890", 10); - lsquic_stream_flush(stream); - assert(("lsquic_stream_write is limited by the send window", 3 == nw)); - s = lsquic_stream_flush(stream); - assert(0 == s); - assert(("cc_tosend is not updated when not limited by connection", - 0 == conn_cap->cc_sent)); - assert(stream->sm_qflags & SMQF_SEND_BLOCKED); - nw = read_from_scheduled_packets(&tobjs.send_ctl, stream->id, buf, - sizeof(buf), 0, NULL, 0); - assert(nw == 3); - assert(0 == memcmp(buf, "123", 3)); - - /* Pretend we sent out a packet: */ - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs.send_ctl, 0); - lsquic_send_ctl_sent_packet(&tobjs.send_ctl, packet_out); - - lsquic_stream_window_update(stream, 20); - nw = lsquic_stream_write(stream, "4567890", 7); - assert(("lsquic_stream_write: wrote remainig 7 bytes", 7 == nw)); - s = lsquic_stream_flush(stream); - assert(0 == s); - - /* Verify written data: */ - nw = read_from_scheduled_packets(&tobjs.send_ctl, stream->id, buf, - sizeof(buf), 3, NULL, 0); - assert(nw == 7); - assert(0 == memcmp(buf, "4567890", 7)); - - lsquic_stream_destroy(stream); - assert(("on_close called", 1 == n_closed)); - - deinit_test_objs(&tobjs); -} - - -/* Test that stream is marked as both stream- and connection-blocked */ -static void -test_blocked_flags (void) -{ - ssize_t nw; - struct test_objs tobjs; - struct lsquic_stream *stream; - struct lsquic_conn_cap *const conn_cap = &tobjs.conn_pub.conn_cap; - int s; - - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - - init_test_objs(&tobjs, 3, 3, NULL); - stream = new_stream_ext(&tobjs, 123, 3); - nw = lsquic_stream_write(stream, "1234567890", 10); - assert(("lsquic_stream_write is limited by the send window", 3 == nw)); - assert(("cc_tosend is updated immediately", - 3 == conn_cap->cc_sent)); - assert(1 == lsquic_send_ctl_n_scheduled(&tobjs.send_ctl)); /* Flush occurred already */ - s = lsquic_stream_flush(stream); - assert(0 == s); - assert(("cc_tosend is updated when limited by connection", - 3 == conn_cap->cc_sent)); - assert(stream->sm_qflags & SMQF_SEND_BLOCKED); - assert(3 == stream->blocked_off); - assert(tobjs.lconn.cn_flags & LSCONN_SEND_BLOCKED); - assert(3 == conn_cap->cc_blocked); - - lsquic_stream_destroy(stream); - deinit_test_objs(&tobjs); -} - - -static void -test_forced_flush_when_conn_blocked (void) -{ - ssize_t nw; - struct test_objs tobjs; - struct lsquic_stream *stream; - struct lsquic_conn_cap *const conn_cap = &tobjs.conn_pub.conn_cap; - enum stream_state_sending sss; - - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - - init_test_objs(&tobjs, 3, 0x1000, NULL); - stream = new_stream(&tobjs, 123); - sss = lsquic_stream_sending_state(stream); - assert(SSS_READY == sss); - nw = lsquic_stream_write(stream, "1234567890", 10); - assert(("lsquic_stream_write is limited by the send window", 3 == nw)); - assert(("cc_tosend is updated immediately", - 3 == conn_cap->cc_sent)); - assert(1 == lsquic_send_ctl_n_scheduled(&tobjs.send_ctl)); /* Flush occurred */ - sss = lsquic_stream_sending_state(stream); - assert(SSS_SEND == sss); - assert(tobjs.lconn.cn_flags & LSCONN_SEND_BLOCKED); - assert(3 == conn_cap->cc_blocked); - - lsquic_stream_destroy(stream); - deinit_test_objs(&tobjs); -} - - -static int -my_gen_stream_frame_err (unsigned char *buf, size_t bufsz, - lsquic_stream_id_t stream_id, uint64_t offset, - int fin, size_t size, gsf_read_f read, - void *stream) -{ - return -1; -} - - -static void -test_conn_abort (void) -{ - ssize_t nw; - struct test_objs tobjs; - struct lsquic_stream *stream; - struct parse_funcs my_pf; - int s; - - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - - init_test_objs(&tobjs, 0x1000, 0x1000, NULL); - my_pf = *tobjs.lconn.cn_pf; - my_pf.pf_gen_stream_frame = my_gen_stream_frame_err; - tobjs.lconn.cn_pf = &my_pf; - - stream = new_stream(&tobjs, 123); - nw = lsquic_stream_write(stream, "1234567890", 10); - assert(10 == nw); /* No error yet */ - s = lsquic_stream_flush(stream); - assert(s < 0); - assert(stream->sm_qflags & SMQF_ABORT_CONN); - assert(!TAILQ_EMPTY(&tobjs.conn_pub.service_streams)); - - lsquic_stream_destroy(stream); - deinit_test_objs(&tobjs); -} - - -/* Test one: large frame first, followed by small frames to finish off - * the packet. - */ -static void -test_bad_packbits_guess_1 (void) -{ - lsquic_packet_out_t *packet_out; - ssize_t nw; - struct test_objs tobjs; - struct lsquic_stream *streams[3]; - char buf[0x1000]; - unsigned char buf_out[0x1000]; - int s, fin; - - init_buf(buf, sizeof(buf)); - - init_test_ctl_settings(&g_ctl_settings); - g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; - g_ctl_settings.tcs_guess_packno_bits = GQUIC_PACKNO_LEN_1; - - init_test_objs(&tobjs, 0x1000, 0x1000, NULL); - streams[0] = new_stream(&tobjs, 5); - streams[1] = new_stream(&tobjs, 7); - streams[2] = new_stream(&tobjs, 9); - - /* Perfrom writes on the three streams. This is tuned to fill a single - * packet completely -- we check this later in this function. - */ - nw = lsquic_stream_write(streams[0], buf, 1337); - assert(nw == 1337); - s = lsquic_stream_flush(streams[0]); - assert(0 == s); - s = lsquic_stream_shutdown(streams[1], 1); - assert(s == 0); - nw = lsquic_stream_write(streams[2], buf + 1337, 1); - assert(nw == 1); - s = lsquic_stream_shutdown(streams[2], 1); - assert(s == 0); - - /* Verify that we got one packet filled to the top: */ - const struct buf_packet_q *const bpq = - &tobjs.send_ctl.sc_buffered_packets[g_ctl_settings.tcs_bp_type]; - assert(("packetized -- 1 packet", 1 == bpq->bpq_count)); - packet_out = TAILQ_FIRST(&bpq->bpq_packets); - assert(0 == lsquic_packet_out_avail(packet_out)); - - assert(1 == streams[0]->n_unacked); - assert(1 == streams[1]->n_unacked); - assert(1 == streams[2]->n_unacked); - - g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; - g_ctl_settings.tcs_calc_packno_bits = GQUIC_PACKNO_LEN_6; - s = lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, - g_ctl_settings.tcs_bp_type); - assert(2 == lsquic_send_ctl_n_scheduled(&tobjs.send_ctl)); - - /* Verify written data: */ - nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[0]->id, buf_out, - sizeof(buf_out), 0, &fin, 0); - assert(nw == 1337); - assert(!fin); - assert(0 == memcmp(buf, buf_out, 1337)); - nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[1]->id, buf_out, - sizeof(buf_out), 0, &fin, 0); - assert(nw == 0); - assert(fin); - nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[2]->id, buf_out, - sizeof(buf_out), 0, &fin, 0); - assert(nw == 1); - assert(fin); - assert(0 == memcmp(buf + 1337, buf_out, 1)); - - /* Verify packets */ - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs.send_ctl, 0); - assert(lsquic_packet_out_packno_bits(packet_out) == GQUIC_PACKNO_LEN_6); - assert(1 == packet_out->po_packno); - assert(packet_out->po_frame_types & (1 << QUIC_FRAME_STREAM)); - lsquic_send_ctl_sent_packet(&tobjs.send_ctl, packet_out); - packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs.send_ctl, 0); - assert(lsquic_packet_out_packno_bits(packet_out) == GQUIC_PACKNO_LEN_6); - assert(2 == packet_out->po_packno); - assert(packet_out->po_frame_types & (1 << QUIC_FRAME_STREAM)); - lsquic_send_ctl_sent_packet(&tobjs.send_ctl, packet_out); - - assert(1 == streams[0]->n_unacked); - assert(1 == streams[1]->n_unacked); - assert(1 == streams[2]->n_unacked); - ack_packet(&tobjs.send_ctl, 1); - assert(0 == streams[0]->n_unacked); - assert(1 == streams[1]->n_unacked); - assert(1 == streams[2]->n_unacked); - ack_packet(&tobjs.send_ctl, 2); - assert(0 == streams[0]->n_unacked); - assert(0 == streams[1]->n_unacked); - assert(0 == streams[2]->n_unacked); - - lsquic_stream_destroy(streams[0]); - lsquic_stream_destroy(streams[1]); - lsquic_stream_destroy(streams[2]); - deinit_test_objs(&tobjs); -} - - -static void -main_test_packetization (void) -{ - const unsigned fp_sizes[] = { 0, 10, 100, 501, 1290, }; - unsigned i; - for (i = 0; i < sizeof(fp_sizes) / sizeof(fp_sizes[0]); ++i) - { - int once; - unsigned write_size; - if (!g_use_crypto_ctor) /* No buffered packets for CRYPTO frames */ - { - for (write_size = 1; write_size < GQUIC_MAX_PACKET_SZ; ++write_size) - test_packetization(0, 0, write_size, fp_sizes[i]); - srand(7891); - for (write_size = 1; write_size < GQUIC_MAX_PACKET_SZ * 10; ++write_size) - test_packetization(0, 0, RANDOM_WRITE_SIZE, fp_sizes[i]); - } - for (once = 0; once < 2; ++once) - { - for (write_size = 1; write_size < GQUIC_MAX_PACKET_SZ; ++write_size) - test_packetization(1, once, write_size, fp_sizes[i]); - srand(7891); - for (write_size = 1; write_size < GQUIC_MAX_PACKET_SZ * 10; ++write_size) - test_packetization(1, once, RANDOM_WRITE_SIZE, fp_sizes[i]); - } - } -} - - -int -main (int argc, char **argv) -{ - g_pf = select_pf_by_ver(LSQVER_043); - - int opt; - - lsquic_global_init(LSQUIC_GLOBAL_SERVER); - - while (-1 != (opt = getopt(argc, argv, "Ahl:"))) - { - switch (opt) - { - case 'A': - stream_ctor_flags &= ~SCF_DI_AUTOSWITCH; - break; - case 'h': - stream_ctor_flags |= SCF_USE_DI_HASH; - break; - case 'l': - lsquic_log_to_fstream(stderr, LLTS_NONE); - lsquic_logger_lopt(optarg); - break; - default: - exit(1); - } - } - - init_test_ctl_settings(&g_ctl_settings); - - test_writing_to_stream_schedule_stream_packets_immediately(); - test_writing_to_stream_outside_callback(); - test_stealing_ack(); - test_changing_pack_size(); - test_reducing_pack_size(); - test_window_update1(); - test_window_update2(); - test_forced_flush_when_conn_blocked(); - test_blocked_flags(); - test_reading_from_stream2(); - test_overlaps(); - test_insert_edge_cases(); - test_unexpected_http_close(); - - { - int idx[6]; - permute_and_run(0, 0, 0, idx, sizeof(idx) / sizeof(idx[0])); - } - - test_termination(); - - test_writev(); - - test_prio_conversion(); - - test_read_in_middle(); - - test_conn_unlimited(); - - test_flushing(); - - test_conn_abort(); - - test_bad_packbits_guess_1(); - test_bad_packbits_guess_2(); - test_bad_packbits_guess_3(); - - test_resize_buffered(); - test_resize_scheduled(); - - main_test_packetization(); - - enum lsquic_version ver; - for (ver = 0; ver < N_LSQVER; ++ver) - if (!((1 << ver) & LSQUIC_IETF_VERSIONS)) - test_cant_fit_frame(select_pf_by_ver(ver)); - - /* Redo some tests using crypto streams and frames */ - g_use_crypto_ctor = 1; - g_pf = select_pf_by_ver(LSQVER_I001); - main_test_packetization(); - - return 0; -} - -static const char on_being_idle[] = -"ON BEING IDLE." -"" -"Now, this is a subject on which I flatter myself I really am _au fait_." -"The gentleman who, when I was young, bathed me at wisdom's font for nine" -"guineas a term--no extras--used to say he never knew a boy who could" -"do less work in more time; and I remember my poor grandmother once" -"incidentally observing, in the course of an instruction upon the use" -"of the Prayer-book, that it was highly improbable that I should ever do" -"much that I ought not to do, but that she felt convinced beyond a doubt" -"that I should leave undone pretty well everything that I ought to do." -"" -"I am afraid I have somewhat belied half the dear old lady's prophecy." -"Heaven help me! I have done a good many things that I ought not to have" -"done, in spite of my laziness. But I have fully confirmed the accuracy" -"of her judgment so far as neglecting much that I ought not to have" -"neglected is concerned. Idling always has been my strong point. I take" -"no credit to myself in the matter--it is a gift. Few possess it. There" -"are plenty of lazy people and plenty of slow-coaches, but a genuine" -"idler is a rarity. He is not a man who slouches about with his hands in" -"his pockets. On the contrary, his most startling characteristic is that" -"he is always intensely busy." -"" -"It is impossible to enjoy idling thoroughly unless one has plenty of" -"work to do. There is no fun in doing nothing when you have nothing to" -"do. Wasting time is merely an occupation then, and a most exhausting" -"one. Idleness, like kisses, to be sweet must be stolen." -"" -"Many years ago, when I was a young man, I was taken very ill--I never" -"could see myself that much was the matter with me, except that I had" -"a beastly cold. But I suppose it was something very serious, for the" -"doctor said that I ought to have come to him a month before, and that" -"if it (whatever it was) had gone on for another week he would not have" -"answered for the consequences. It is an extraordinary thing, but I" -"never knew a doctor called into any case yet but what it transpired" -"that another day's delay would have rendered cure hopeless. Our medical" -"guide, philosopher, and friend is like the hero in a melodrama--he" -"always comes upon the scene just, and only just, in the nick of time. It" -"is Providence, that is what it is." -"" -"Well, as I was saying, I was very ill and was ordered to Buxton for a" -"month, with strict injunctions to do nothing whatever all the while" -"that I was there. \"Rest is what you require,\" said the doctor, \"perfect" -"rest.\"" -"" -"It seemed a delightful prospect. \"This man evidently understands my" -"complaint,\" said I, and I pictured to myself a glorious time--a four" -"weeks' _dolce far niente_ with a dash of illness in it. Not too much" -"illness, but just illness enough--just sufficient to give it the flavor" -"of suffering and make it poetical. I should get up late, sip chocolate," -"and have my breakfast in slippers and a dressing-gown. I should lie out" -"in the garden in a hammock and read sentimental novels with a melancholy" -"ending, until the books should fall from my listless hand, and I should" -"recline there, dreamily gazing into the deep blue of the firmament," -"watching the fleecy clouds floating like white-sailed ships across" -"its depths, and listening to the joyous song of the birds and the low" -"rustling of the trees. Or, on becoming too weak to go out of doors," -"I should sit propped up with pillows at the open window of the" -"ground-floor front, and look wasted and interesting, so that all the" -"pretty girls would sigh as they passed by." -"" -"And twice a day I should go down in a Bath chair to the Colonnade to" -"drink the waters. Oh, those waters! I knew nothing about them then," -"and was rather taken with the idea. \"Drinking the waters\" sounded" -"fashionable and Queen Anne-fied, and I thought I should like them. But," -"ugh! after the first three or four mornings! Sam Weller's description of" -"them as \"having a taste of warm flat-irons\" conveys only a faint idea of" -"their hideous nauseousness. If anything could make a sick man get well" -"quickly, it would be the knowledge that he must drink a glassful of them" -"every day until he was recovered. I drank them neat for six consecutive" -"days, and they nearly killed me; but after then I adopted the plan of" -"taking a stiff glass of brandy-and-water immediately on the top of them," -"and found much relief thereby. I have been informed since, by various" -"eminent medical gentlemen, that the alcohol must have entirely" -"counteracted the effects of the chalybeate properties contained in the" -"water. I am glad I was lucky enough to hit upon the right thing." -; - -static void -init_buf (void *buf, size_t sz) -{ - unsigned char *p = buf; - unsigned char *const end = (unsigned char*)buf + sz; - size_t n; - - while (p < end) - { - n = end - p; - if (sizeof(on_being_idle) - 1 < n) - n = sizeof(on_being_idle) - 1; - memcpy(p, on_being_idle, n); - p +=n; - } - - assert(p == end); -} diff --git a/external/lsquic/tests/test_streamgen.c b/external/lsquic/tests/test_streamgen.c deleted file mode 100644 index 04c0fc7..0000000 --- a/external/lsquic/tests/test_streamgen.c +++ /dev/null @@ -1,493 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_parse.h" -#include "lsquic_sfcw.h" -#include "lsquic_varint.h" -#include "lsquic_hq.h" -#include "lsquic_hash.h" -#include "lsquic_stream.h" - -struct test { - int lineno; - const struct parse_funcs * - pf; - /* Inputs. These are returned by lsquic_stream_tosend_fin(), - * lsquic_stream_tosend_read(), and lsquic_stream_tosend_offset(). - */ - int fin[2]; /* There may be two calls to lsquic_stream_tosend_fin() */ - uint64_t offset; - uint32_t stream_id; - size_t avail; /* Space to write stream frame to */ - size_t min_sz; /* Minimum size needed to generate stream frame. Any - * sizes smaller than this should fail. - */ - size_t data_sz; - char data[0x100]; - - /* Output. This is how we expect the resulting frame to look. - */ - int len; /* Return value of gen_stream_frame() */ - char out[0x100]; -}; - - -static struct test_ctx { - const struct test *test; - int next_fin; - lsquic_stream_t stream; -} test_ctx; - - -static int -stream_tosend_fin (void *stream) -{ - struct test_ctx *test_ctx2 = stream; - return test_ctx2->test->fin[ test_ctx2->next_fin++ ]; -} - - -static size_t -stream_tosend_read (void *stream, void *buf, size_t len, int *reached_fin) -{ - struct test_ctx *test_ctx2 = stream; - if (test_ctx2->test->data_sz < len) - len = test_ctx2->test->data_sz; - memcpy(buf, test_ctx2->test->data, len); - *reached_fin = stream_tosend_fin(stream); - return len; -} - - -static size_t -stream_tosend_size (void *stream) -{ - struct test_ctx *test_ctx2 = stream; - return test_ctx2->test->data_sz; -} - - -static void -reset_ctx (const struct test *test) -{ - test_ctx.test = test; - test_ctx.next_fin = 0; - test_ctx.stream.id = test->stream_id; -} - - -static void -run_test (const struct test *const test) -{ - - unsigned char out[0x100]; - int len; - size_t min; - - if (test->len > 0) - { - /* Test that all sizes under specified min fail to produce a frame */ - for (min = 0; min < test->min_sz; ++min) - { - reset_ctx(test); - len = test->pf->pf_gen_stream_frame(out, min, test->stream_id, - test_ctx.test->offset, stream_tosend_fin(&test_ctx), - stream_tosend_size(&test_ctx), stream_tosend_read, &test_ctx); - assert(len < 0); - } - - /* Test that it succeeds now: */ - reset_ctx(test); - len = test->pf->pf_gen_stream_frame(out, min, test->stream_id, - test_ctx.test->offset, stream_tosend_fin(&test_ctx), - stream_tosend_size(&test_ctx), stream_tosend_read, &test_ctx); - assert(len == (int) min); - } - - reset_ctx(test); - len = test->pf->pf_gen_stream_frame(out, test->avail, test->stream_id, - test_ctx.test->offset, stream_tosend_fin(&test_ctx), - stream_tosend_size(&test_ctx), stream_tosend_read, &test_ctx); - - if (test->len > 0) { - /* Check parser operation */ - assert(test->len == len); - assert(("Generated frame is correct", 0 == memcmp(test->out, out, test->len))); - } - else - { - assert(("This test should fail", len < 0)); - } -} - - -int -main (void) -{ - const struct test tests[] = { - /* - * Big-endian: - */ - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_043), - .fin = { 0, 1, }, - .offset = 0x0807060504030201UL, - .stream_id = 0x210, - .data_sz = 10, - .data = "0123456789", - .avail = 0x100, - .out = - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x40 | 0x20 | 0x1C | 0x01, - 0x02, 0x10, /* Stream ID */ - 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ - 0x00, 0x0A, /* Data length */ - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - }, - .len = 1 + 2 + 8 + 2 + 10, - .min_sz = 1 + 2 + 8 + 0 + 1, - }, - - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_043), - .fin = { 0, 0, }, - .offset = 0x0807060504030201UL, - .stream_id = 0x210, - .data_sz = 10, - .data = "0123456789", - .avail = 0x100, - .out = - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x00 | 0x20 | 0x1C | 0x01, - 0x02, 0x10, /* Stream ID */ - 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ - 0x00, 0x0A, /* Data length */ - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - }, - .len = 1 + 2 + 8 + 2 + 10, - .min_sz = 1 + 2 + 8 + 0 + 1, - }, - - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_043), - .fin = { 1, 0, }, - .offset = 0x0807060504030201UL, - .stream_id = 0x210, - .data_sz = 10, - .data = "0123456789", - .avail = 0x100, - .out = - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x40 | 0x20 | 0x1C | 0x01, - 0x02, 0x10, /* Stream ID */ - 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ - 0x00, 0x00, /* Data length */ - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - }, - .len = 1 + 2 + 8 + 2, - .min_sz = 1 + 2 + 8 + 2, - }, - - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_043), - .fin = { 1, 0, }, - .offset = 0x0807060504030201UL, - .stream_id = 0x21, - .data_sz = 10, - .data = "0123456789", - .avail = 0x100, - .out = - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x40 | 0x20 | 0x1C | 0x00, - 0x21, /* Stream ID */ - 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ - 0x00, 0x00, /* Data length */ - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - }, - .len = 1 + 1 + 8 + 2, - .min_sz = 1 + 1 + 8 + 2, - }, - - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_043), - .fin = { 0, 0, }, - .offset = 0x77, - .stream_id = 0x210, - .data_sz = 10, - .data = "0123456789", - .avail = 0x100, - .out = - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x00 | 0x20 | 0x04 | 0x01, - 0x02, 0x10, /* Stream ID */ - 0x00, 0x77, /* Offset */ - 0x00, 0x0A, /* Data length */ - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - }, - .len = 1 + 2 + 2 + 2 + 10, - .min_sz = 1 + 2 + 2 + 0 + 1, - }, - - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_043), - .fin = { 0, 0, }, - .offset = 0x0, - .stream_id = 0x210, - .data_sz = 10, - .data = "0123456789", - .avail = 0x100, - .out = - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x00 | 0x20 | 0x00 | 0x01, - 0x02, 0x10, /* Stream ID */ - /* Offset */ - 0x00, 0x0A, /* Data length */ - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - }, - .len = 1 + 2 + 0 + 2 + 10, - .min_sz = 1 + 2 + 0 + 0 + 1, - }, - - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_043), - .fin = { 0, 1, }, - .offset = 0x0, - .stream_id = 0x210, - .data_sz = 1, - .data = "0123456789", - .avail = 0x100, - .out = - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x40 | 0x20 | 0x00 | 0x01, - 0x02, 0x10, /* Stream ID */ - /* Offset */ - 0x00, 0x01, /* Data length */ - '0', - }, - .len = 1 + 2 + 0 + 2 + 1, - .min_sz = 1 + 2 + 0 + 0 + 1, - }, - - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_043), - .fin = { 0, 0, }, - .offset = 0xFFFFFF, - .stream_id = 0x210, - .data_sz = 10, - .data = "0123456789", - .avail = 0x100, - .out = - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x00 | 0x20 | 0x08 | 0x01, - 0x02, 0x10, /* Stream ID */ - 0xFF, 0xFF, 0xFF, /* Offset */ - 0x00, 0x0A, /* Data length */ - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - }, - .len = 1 + 2 + 3 + 2 + 10, - .min_sz = 1 + 2 + 3 + 0 + 1, - }, - - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_043), - .fin = { 0, 0, }, - .offset = 0xFFFFFF + 1, - .stream_id = 0x210, - .data_sz = 10, - .data = "0123456789", - .avail = 0x100, - .out = - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x00 | 0x20 | 0x0C | 0x01, - 0x02, 0x10, /* Stream ID */ - 0x01, 0x00, 0x00, 0x00, /* Offset */ - 0x00, 0x0A, /* Data length */ - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - }, - .len = 1 + 2 + 4 + 2 + 10, - .min_sz = 1 + 2 + 4 + 0 + 1, - }, - - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_043), - .fin = { 0, 0, }, - .offset = 0xFFFFFF + 1, - .stream_id = 0x210, - .data_sz = 10, - .data = "0123456789", - .avail = 10, - .out = - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x00 | 0x00 | 0x0C | 0x01, - 0x02, 0x10, /* Stream ID */ - 0x01, 0x00, 0x00, 0x00, /* Offset */ - '0', '1', '2', - }, - .len = 1 + 2 + 4 + 0 + 3, - .min_sz = 1 + 2 + 4 + 0 + 1, - }, - - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_043), - .fin = { 1, 0, }, - .offset = 0xB4, - .stream_id = 0x01, - .data_sz = 0, - .data = "0123456789", - .avail = 0x100, - .out = - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x40 | 0x20 | 0x04 | 0x00, - 0x01, /* Stream ID */ - 0x00, 0xB4, /* Offset */ - 0x00, 0x00, /* Data length */ - }, - .len = 6, - .min_sz = 6, - }, - - /* - * IETF QUIC Internet-Draft 17: - */ - - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_I001), - .fin = { 0, 1, }, - .offset = 0x0807060504030201UL, - .stream_id = 0x210, - .data_sz = 10, - .data = "0123456789", - .avail = 0x100, - .out = - /* TYPE OFF DLEN FIN */ - { 0x08 | 1<<2 | 1<<1 | 1<<0, - 0x42, 0x10, /* Stream ID */ - 0xC8, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ - 0x0A, /* Data length */ - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - }, - .len = 1 + 2 + 8 + 1 + 10, - .min_sz = 1 + 2 + 8 + 0 + 1, - }, - - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_I001), - .fin = { 0, 0, }, - .offset = 0, - .stream_id = 0x210, - .data_sz = 10, - .data = "0123456789", - .avail = 0x100, - .out = - /* TYPE OFF DLEN FIN */ - { 0x08 | 0<<2 | 1<<1 | 0<<0, - 0x42, 0x10, /* Stream ID */ - 0x0A, /* Data length */ - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - }, - .len = 1 + 2 + 0 + 1 + 10, - .min_sz = 1 + 2 + 0 + 0 + 1, - }, - - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_I001), - .fin = { 0, 0, }, - .offset = 0, - .stream_id = 0x21, - .data_sz = 10, - .data = "0123456789", - .avail = 12, - .out = - /* TYPE OFF DLEN FIN */ - { 0x08 | 0<<2 | 0<<1 | 0<<0, - 0x21, /* Stream ID */ - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - }, - .len = 1 + 1 + 0 + 0 + 10, - .min_sz = 1 + 1 + 0 + 0 + 1, - }, - - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_I001), - .fin = { 0, 0, }, - .offset = 0x0807060504030201UL, - .stream_id = 0x210, - .data_sz = 10, - .data = "0123456789", - .avail = 0x100, - .out = - /* TYPE OFF DLEN FIN */ - { 0x08 | 1<<2 | 1<<1 | 0<<0, - 0x42, 0x10, /* Stream ID */ - 0xC8, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ - 0x0A, /* Data length */ - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - }, - .len = 1 + 2 + 8 + 1 + 10, - .min_sz = 1 + 2 + 8 + 0 + 1, - }, - - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_I001), - .fin = { 1, 0, }, - .offset = 0x0807060504030201UL, - .stream_id = 0x210, - .data_sz = 0, - .data = "0123456789", - .avail = 11, - .out = - /* TYPE OFF DLEN FIN */ - { 0x08 | 1<<2 | 0<<1 | 1<<0, - 0x42, 0x10, /* Stream ID */ - 0xC8, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ - }, - .len = 1 + 2 + 8, - .min_sz = 1 + 2 + 8, - }, - - { .lineno = __LINE__, - .pf = select_pf_by_ver(LSQVER_I001), - .fin = { 1, 0, }, - .offset = 0x0807060504030201UL, - .stream_id = 0x210, - .data_sz = 0, - .data = "0123456789", - .avail = 0x100, - .out = - /* TYPE OFF DLEN FIN */ - { 0x08 | 1<<2 | 1<<1 | 1<<0, - 0x42, 0x10, /* Stream ID */ - 0xC8, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ - 0x00, /* Data length */ - }, - .len = 1 + 2 + 8 + 1, - .min_sz = 1 + 2 + 8, - }, - - }; - - unsigned i; - for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) - run_test(&tests[i]); - return 0; -} diff --git a/external/lsquic/tests/test_streamparse.c b/external/lsquic/tests/test_streamparse.c deleted file mode 100644 index 4e1e910..0000000 --- a/external/lsquic/tests/test_streamparse.c +++ /dev/null @@ -1,450 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif -#include - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_parse.h" -#include "lsquic_packet_common.h" -#include "lsquic_packet_in.h" - -struct test { - const char *name; - int lineno; - const struct parse_funcs * - pf; - const unsigned char - buf[0x100]; /* Large enough for our needs */ - size_t buf_sz; /* # of stream frame bytes in `buf' */ - size_t rem_packet_sz; /* # of bytes remaining in the packet, - * starting at the beginning of the - * stream frame. - */ - stream_frame_t frame; /* Expected values */ - int should_succeed; -}; - -static void -run_test (const struct test *test) -{ - stream_frame_t frame; - memset(&frame, 0x7A, sizeof(frame)); - - int len = test->pf->pf_parse_stream_frame(test->buf, test->rem_packet_sz, &frame); - - if (test->should_succeed) { - /* Check parser operation */ - assert(("Parsed correct number of bytes", (size_t) len == test->buf_sz + test->frame.data_frame.df_size)); - assert(("Stream ID is correct", frame.stream_id == test->frame.stream_id)); - assert(("Data length is correct", frame.data_frame.df_size == test->frame.data_frame.df_size)); - assert(("Offset is correct", frame.data_frame.df_offset == test->frame.data_frame.df_offset)); - assert(("FIN is correct", frame.data_frame.df_fin == test->frame.data_frame.df_fin)); - - /* Check that initialization of other fields occurred correctly: */ - assert(0 == frame.packet_in); - assert(0 == frame.data_frame.df_read_off); - } - else - { - assert(("This test should fail", len < 0)); - } -} - - -int -main (void) -{ - - const struct test tests[] = { - - /* - * Big-endian tests - */ - { "Balls to the wall: every possible bit is set", - __LINE__, - select_pf_by_ver(LSQVER_043), - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x40 | 0x20 | 0x1C | 0x3, - 0x00, 0x00, 0x02, 0x10, /* Stream ID */ - 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ - 0x01, 0xC4, /* Data length */ - }, - 1 + 2 + 8 + 4, - 0x200, - { .data_frame.df_offset = 0x0807060504030201UL, - .stream_id = 0x210, - .data_frame.df_size = 0x1C4, - .data_frame.df_fin = 1, - }, - 1, - }, - - { "Balls to the wall #2: every possible bit is set, except FIN", - __LINE__, - select_pf_by_ver(LSQVER_043), - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x00 | 0x20 | 0x1C | 0x3, - 0x00, 0x00, 0x02, 0x10, /* Stream ID */ - 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ - 0x01, 0xC4, /* Data length */ - }, - 1 + 2 + 8 + 4, - 0x200, - { .data_frame.df_offset = 0x0807060504030201UL, - .stream_id = 0x210, - .data_frame.df_size = 0x1C4, - .data_frame.df_fin = 0, - }, - 1, - }, - - { "Data length is zero", - __LINE__, - select_pf_by_ver(LSQVER_043), - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x40 | 0x00 | 0x1C | 0x3, - 0x00, 0x00, 0x02, 0x10, /* Stream ID */ - 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ - 0xC4, 0x01, /* Data length: note this does not matter */ - }, - 1 + 0 + 8 + 4, - 0x200, - { .data_frame.df_offset = 0x0807060504030201UL, - .stream_id = 0x210, - .data_frame.df_size = 0x200 - (1 + 8 + 4), - .data_frame.df_fin = 1, - }, - 1, - }, - - { "Stream ID length is 1", - __LINE__, - select_pf_by_ver(LSQVER_043), - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x40 | 0x20 | 0x1C | 0x0, - 0xF0, /* Stream ID */ - 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ - 0x01, 0xC4, /* Data length */ - }, - 1 + 2 + 8 + 1, - 0x200, - { .data_frame.df_offset = 0x0807060504030201UL, - .stream_id = 0xF0, - .data_frame.df_size = 0x1C4, - .data_frame.df_fin = 1, - }, - 1, - }, - - { "All bits are zero save offset length", - __LINE__, - select_pf_by_ver(LSQVER_043), - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x00 | 0x00 | 0x04 | 0x0, - 0xF0, /* Stream ID */ - 0x02, 0x55, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, /* Offset */ - 0xC4, 0x01, /* Data length */ - }, - 1 + 0 + 2 + 1, - 0x200, - { .data_frame.df_offset = 0x255, - .stream_id = 0xF0, - .data_frame.df_size = 0x200 - 4, - .data_frame.df_fin = 0, - }, - 1, - }, - - { "Sanity check: either FIN must be set or data length is not zero #1", - __LINE__, - select_pf_by_ver(LSQVER_043), - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x00 | 0x00 | 0x04 | 0x0, - 0xF0, /* Stream ID */ - 0x02, 0x55, /* Offset */ - }, - 1 + 0 + 2 + 1, - 4, /* Same as buffer size: in the absense of explicit data - * length in the header, this would mean that data - * length is zero. - */ - { .data_frame.df_offset = 0x255, - .stream_id = 0xF0, - .data_frame.df_size = 0x200 - 4, - .data_frame.df_fin = 0, - }, - 0, - }, - - { "Sanity check: either FIN must be set or data length is not zero #2", - __LINE__, - select_pf_by_ver(LSQVER_043), - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x00 | 0x20 | 0x04 | 0x0, - 0xF0, /* Stream ID */ - 0x02, 0x55, /* Offset */ - 0x00, 0x00, - }, - 1 + 2 + 2 + 1, - 200, - { .data_frame.df_offset = 0x255, - .stream_id = 0xF0, - .data_frame.df_size = 0x200 - 4, - .data_frame.df_fin = 0, - }, - 0, - }, - - { "Sanity check: either FIN must be set or data length is not zero #3", - __LINE__, - select_pf_by_ver(LSQVER_043), - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x40 | 0x20 | 0x04 | 0x0, - 0xF0, /* Stream ID */ - 0x02, 0x55, /* Offset */ - 0x00, 0x00, - }, - 1 + 2 + 2 + 1, - 200, - { .data_frame.df_offset = 0x255, - .stream_id = 0xF0, - .data_frame.df_size = 0x0, - .data_frame.df_fin = 1, - }, - 1, - }, - - { "Check data bounds #1", - __LINE__, - select_pf_by_ver(LSQVER_043), - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x00 | 0x20 | 0x04 | 0x0, - 0xF0, /* Stream ID */ - 0x02, 0x55, /* Offset */ - 0x01, 0xFA, /* Data length */ - }, - 1 + 2 + 2 + 1, - 0x200, - { .data_frame.df_offset = 0x255, - .stream_id = 0xF0, - .data_frame.df_size = 0x1FA, - .data_frame.df_fin = 0, - }, - 1, - }, - - { "Check data bounds #2", - __LINE__, - select_pf_by_ver(LSQVER_043), - /* 1 f d ooo ss 1fdoooss */ - /* TYPE FIN DLEN OLEN SLEN */ - { 0x80 | 0x00 | 0x20 | 0x04 | 0x0, - 0xF0, /* Stream ID */ - 0x02, 0x55, /* Offset */ - 0x01, 0xFB, /* <--- One byte too many */ - }, - 1 + 2 + 2 + 1, - 0x200, - { .data_frame.df_offset = 0x255, - .stream_id = 0xF0, - .data_frame.df_size = 0x1FA, - .data_frame.df_fin = 0, - }, - 0, - }, - - /* - * IETF QUIC Internet-Draft 14 Tests. - */ - - { "Balls to the wall: every possible bit is set", - __LINE__, - select_pf_by_ver(LSQVER_I001), - /* TYPE OFF DLEN FIN */ - { 0x10 | 1<<2 | 1<<1 | 1<<0, - 0x41, 0x23, /* Stream ID */ - 0x08, /* Offset */ - 0x41, 0xC4, /* Data length */ - }, - 1 + 2 + 1 + 2, - 0x200, - { .data_frame.df_offset = 0x08, - .stream_id = 0x123, - .data_frame.df_size = 0x1C4, - .data_frame.df_fin = 1, - }, - 1, - }, - - { "Balls to the wall #2: every possible bit is set except FIN", - __LINE__, - select_pf_by_ver(LSQVER_I001), - /* TYPE OFF DLEN FIN */ - { 0x10 | 1<<2 | 1<<1 | 0<<0, - 0x81, 0x23, 0x00, 0xE4, /* Stream ID */ - 0xF0, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, /* Offset */ - 0x41, 0xC4, /* Data length */ - }, - 1 + 4 + 8 + 2, - 0x200, - { .data_frame.df_offset = 0x301234567890ABCDull, - .stream_id = 0x12300E4, - .data_frame.df_size = 0x1C4, - .data_frame.df_fin = 0, - }, - 1, - }, - - { "Data length is zero", - __LINE__, - select_pf_by_ver(LSQVER_I001), - /* TYPE OFF DLEN FIN */ - { 0x10 | 1<<2 | 0<<1 | 0<<0, - 0x81, 0x23, 0x00, 0xE4, /* Stream ID */ - 0xF0, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, /* Offset */ - }, - 1 + 4 + 8 + 0, - 0x200, - { .data_frame.df_offset = 0x301234567890ABCDull, - .stream_id = 0x12300E4, - .data_frame.df_size = 0x200 - 1 - 4 - 8, - .data_frame.df_fin = 0, - }, - 1, - }, - - { "Sanity check: what happens when data length is zero #1", - __LINE__, - select_pf_by_ver(LSQVER_I001), - /* TYPE OFF DLEN FIN */ - { 0x10 | 1<<2 | 1<<1 | 0<<0, - 0x81, 0x23, 0x00, 0xE4, /* Stream ID */ - 0xF0, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, /* Offset */ - 0x40, 0x00, /* Data length */ - }, - 1 + 4 + 8 + 2, - 0x200, - { .data_frame.df_offset = 0x301234567890ABCDull, - .stream_id = 0x12300E4, - .data_frame.df_size = 0, - .data_frame.df_fin = 0, - }, - 1, - }, - - { "Sanity check: what happens when data length is zero #2", - __LINE__, - select_pf_by_ver(LSQVER_I001), - /* TYPE OFF DLEN FIN */ - { 0x10 | 1<<2 | 1<<1 | 0<<0, - 0x81, 0x23, 0x00, 0xE4, /* Stream ID */ - 0x00, /* Offset */ - 0x40, 0x00, /* Data length */ - }, - 1 + 4 + 1 + 2, - 0x200, - { .data_frame.df_offset = 0, - .stream_id = 0x12300E4, - .data_frame.df_size = 0, - .data_frame.df_fin = 0, - }, - 1, - }, - - { "Sanity check: what happens when data length is zero #3", - __LINE__, - select_pf_by_ver(LSQVER_I001), - /* TYPE OFF DLEN FIN */ - { 0x10 | 0<<2 | 1<<1 | 0<<0, - 0x81, 0x23, 0x00, 0xE4, /* Stream ID */ - 0x40, 0x00, /* Data length */ - }, - 1 + 4 + 0 + 2, - 0x200, - { .data_frame.df_offset = 0, - .stream_id = 0x12300E4, - .data_frame.df_size = 0, - .data_frame.df_fin = 0, - }, - 1, - }, - - { "Sanity check: what happens when data length is zero #3", - __LINE__, - select_pf_by_ver(LSQVER_I001), - /* TYPE OFF DLEN FIN */ - { 0x10 | 1<<2 | 1<<1 | 1<<0, - 0x81, 0x23, 0x00, 0xE4, /* Stream ID */ - 0x12, /* Offset */ - 0x00, /* Data length */ - }, - 1 + 4 + 1 + 1, - 0x200, - { .data_frame.df_offset = 0x12, - .stream_id = 0x12300E4, - .data_frame.df_size = 0, - .data_frame.df_fin = 1, - }, - 1, - }, - - { "Check data bounds #1", - __LINE__, - select_pf_by_ver(LSQVER_I001), - /* TYPE OFF DLEN FIN */ - { 0x10 | 1<<2 | 1<<1 | 1<<0, - 0x81, 0x23, 0x00, 0xE4, /* Stream ID */ - 0x12, /* Offset */ - 0x41, 0xF8, /* Data length */ - }, - 1 + 4 + 1 + 2, - 0x200, - { .data_frame.df_offset = 0x12, - .stream_id = 0x12300E4, - .data_frame.df_size = 0x200 - 1 - 4 - 1 - 2, - .data_frame.df_fin = 1, - }, - 1, - }, - - { "Check data bounds #2", - __LINE__, - select_pf_by_ver(LSQVER_I001), - /* TYPE OFF DLEN FIN */ - { 0x10 | 1<<2 | 1<<1 | 1<<0, - 0x81, 0x23, 0x00, 0xE4, /* Stream ID */ - 0x12, /* Offset */ - 0x41, 0xF9, /* Data length */ - }, - 1 + 4 + 1 + 2, - 0x200, - { .data_frame.df_offset = 0x12, - .stream_id = 0x12300E4, - .data_frame.df_size = 0x200 - 1 - 4 - 1 - 2, - .data_frame.df_fin = 1, - }, - 0, - }, - - }; - - unsigned i; - for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) - run_test(&tests[i]); - return 0; -} diff --git a/external/lsquic/tests/test_tokgen.c b/external/lsquic/tests/test_tokgen.c deleted file mode 100644 index 0d66499..0000000 --- a/external/lsquic/tests/test_tokgen.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_int_types.h" -#include "lsquic_mm.h" -#include "lsquic_tokgen.h" -#include "lsquic_stock_shi.h" -#include "lsquic_engine_public.h" - -int -main (int argc, char **argv) -{ - struct lsquic_engine_public enpub = { - .enp_shi_ctx = lsquic_stock_shared_hash_new(), - .enp_shi = &stock_shi, - }; - struct token_generator *tg; - unsigned char token[16]; - unsigned i; - lsquic_cid_t cid; - - memset(&cid, 0, sizeof(cid)); - cid.len = 8; - - tg = lsquic_tg_new(&enpub); - - lsquic_tg_generate_sreset(tg, &cid, token); - for (i = 0; i < sizeof(token); ++i) - printf("%02X", token[i]); - printf("\n"); - - lsquic_tg_destroy(tg); - lsquic_stock_shared_hash_destroy(enpub.enp_shi_ctx); - - return 0; -} diff --git a/external/lsquic/tests/test_trapa.c b/external/lsquic/tests/test_trapa.c deleted file mode 100644 index 18bb59b..0000000 --- a/external/lsquic/tests/test_trapa.c +++ /dev/null @@ -1,286 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* - * test_trapa.c -- Test transport parameters. - */ - -#include - -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#else -#include "getopt.h" -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_sizes.h" -#include "lsquic_logger.h" -#include "lsquic_trans_params.h" - -#define ENC_BUF_SZ 0x1000 - -struct trapa_test -{ - int line; - enum { - TEST_ENCODE = 1 << 0, - TEST_DECODE = 1 << 1, - } flags; - struct transport_params params; - size_t enc_len, dec_len; - unsigned addl_set; - int is_server; - int expect_decode_err; - unsigned char encoded[ENC_BUF_SZ]; -}; - -static const struct trapa_test tests[] = -{ - - { - .line = __LINE__, - .flags = TEST_ENCODE | TEST_DECODE, - .params = { - TP_DEFAULT_VALUES, - }, - .enc_len = 0, - .encoded = - /* Trailer to make the end easily visible in gdb: */ - "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" - }, - - { - .line = __LINE__, - .flags = TEST_ENCODE | TEST_DECODE, - .params = { - .tp_set = (1 << TPI_INIT_MAX_STREAM_DATA_BIDI_LOCAL) - | (1 << TPI_INIT_MAX_DATA) - | (1 << TPI_MAX_IDLE_TIMEOUT) - | (1 << TPI_MAX_ACK_DELAY) - | (1 << TPI_MAX_UDP_PAYLOAD_SIZE) - | (1 << TPI_ACK_DELAY_EXPONENT) - | (1 << TPI_INITIAL_SOURCE_CID) - | (1 << TPI_ACTIVE_CONNECTION_ID_LIMIT), - .tp_init_max_stream_data_bidi_local = 0x12348877, - .tp_init_max_data = 0xAABB, - .tp_max_udp_payload_size = 1213, - .tp_max_idle_timeout = 10 * 1000, - .tp_max_ack_delay = TP_DEF_MAX_ACK_DELAY, - .tp_active_connection_id_limit = 7, - .tp_initial_source_cid = { .len = 8, .buf = "\x01\x02\x03\x04\x05\x06\x07\x08", }, - }, - .is_server = 0, - .enc_len = 36, - .encoded = - /* Idle timeout */ "\x01\x02\x67\x10" - /* Packet size */ "\x03\x02\x44\xBD" - /* Max data */ "\x04\x04\x80\x00\xAA\xBB" - /* Bidi local */ "\x05\x04\x92\x34\x88\x77" - /* Ack delay exp */ "\x0A\x01\x00" - /* Active CID limit */ "\x0E\x01\x07" - /* Initial SCID */ "\x0F\x08\x01\x02\x03\x04\x05\x06\x07\x08" - /* Trailer to make the end easily visible in gdb: */ - "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" - }, - - { - .line = __LINE__, - .flags = TEST_DECODE, - .dec_len = 1, - .expect_decode_err = 1, - }, - - { - .line = __LINE__, - .flags = TEST_DECODE, - .dec_len = 3, - .expect_decode_err = 1, - .encoded = "\x00\x04", - }, - - - { - .line = __LINE__, - .flags = TEST_ENCODE | TEST_DECODE, - .params = { - TP_DEFAULT_VALUES, - .tp_init_max_data = 0x123456, - .tp_init_max_stream_data_bidi_local = 0xABCDEF88, - .tp_max_udp_payload_size = 0x555, - }, - .is_server = 1, - .addl_set = 1 << TPI_DISABLE_ACTIVE_MIGRATION, - .enc_len = 22, - .encoded = - /* Packet size */ "\x03\x02\x45\x55" - /* Max data */ "\x04\x04\x80\x12\x34\x56" - /* Bidi local */ "\x05\x08\xC0\x00\x00\x00\xAB\xCD\xEF\x88" - /* Migration */ "\x0C\x00" - /* Trailer to make the end easily visible in gdb: */ - "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" - }, - - /* Test server preferred address. */ - { - .line = __LINE__, - .flags = TEST_DECODE, - .params = { - TP_DEFAULT_VALUES, - .tp_max_ack_delay = 25, - .tp_max_udp_payload_size = 0x555, - .tp_preferred_address = { - .ipv4_addr = "\x01\x02\x03\x04", - .ipv4_port = 0x1234, - .ipv6_addr = "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F", - .ipv6_port = 0x9001, - .cid = { .len = 11, .idbuf = "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A", }, - .srst = "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F", - }, - }, - .is_server = 1, - .addl_set = 1 << TPI_PREFERRED_ADDRESS, - .enc_len = 0x3A, - .dec_len = 0x3A, - .encoded = - /* Preferred Address */"\x0D" - "\x34" - "\x01\x02\x03\x04" - "\x12\x34" - "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F" - "\x90\x01" - "\x0B" /* CID len */ - "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A" - "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F" - /* Packet size */ "\x03\x02\x45\x55" - /* Trailer to make the end easily visible in gdb: */ - "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" - }, - -}; - - -static int -params_are_equal (const struct transport_params *a, - const struct transport_params *b) -{ -#define MCMP(f) 0 == memcmp(&a->f, &b->f, sizeof(a->f)) - return MCMP(tp_numerics) - && MCMP(tp_set) - && MCMP(tp_stateless_reset_token) - && MCMP(tp_preferred_address.ipv4_addr) - && MCMP(tp_preferred_address.ipv6_addr) - && MCMP(tp_preferred_address.srst) - && MCMP(tp_preferred_address.cid.idbuf) - && a->tp_preferred_address.ipv4_port == b->tp_preferred_address.ipv4_port - && a->tp_preferred_address.ipv6_port == b->tp_preferred_address.ipv6_port - && a->tp_preferred_address.cid.len == b->tp_preferred_address.cid.len - && MCMP(tp_original_dest_cid.idbuf) - && a->tp_original_dest_cid.len == b->tp_original_dest_cid.len - ; -#undef MCMP -} - - -static void -run_test (const struct trapa_test *test) -{ - struct transport_params source_params; - struct transport_params decoded_params; - size_t dec_len; - int s; - unsigned char buf[ENC_BUF_SZ]; - - source_params = test->params; - source_params.tp_set |= test->addl_set; - - if (test->flags & TEST_ENCODE) - { - s = lsquic_tp_encode(&source_params, test->is_server, buf, sizeof(buf)); - assert(s >= 0); - assert((size_t) s == test->enc_len); - assert(0 == memcmp(test->encoded, buf, s)); - } - - if (test->flags & TEST_DECODE) - { - if (test->dec_len) - dec_len = test->dec_len; - else - dec_len = test->enc_len; - s = lsquic_tp_decode(test->encoded, dec_len, - test->is_server, &decoded_params); - if (!test->expect_decode_err) - { - assert(s >= 0); - assert((size_t) s == test->enc_len); - /* The decoder initializes all default values, so set the flag - * accordingly: - */ - source_params.tp_set |= ((1 << (MAX_NUM_WITH_DEF_TPI + 1)) - 1); - s = params_are_equal(&source_params, &decoded_params); - assert(s); - } - else - assert(s < 0); - } -} - - -static void -decode_file (const char *name) -{ - FILE *file; - size_t nread; - int s; - struct transport_params params; - unsigned char buf[0x1000]; - - file = fopen(name, "rb"); - if (!file) - { - perror("fopen"); - exit(1); - } - - nread = fread(buf, 1, sizeof(buf), file); - - s = lsquic_tp_decode(buf, nread, 0, ¶ms); - - fclose(file); - - printf("decoded params from %s: %d (%s)\n", name, s, s > 0 ? "OK" : "FAIL"); -} - - -int -main (int argc, char **argv) -{ - unsigned i; - int opt; - - while (-1 != (opt = getopt(argc, argv, "d:l:"))) - { - switch (opt) - { - case 'd': - decode_file(optarg); - return 0; - case 'l': - lsquic_log_to_fstream(stderr, LLTS_NONE); - lsquic_logger_lopt(optarg); - break; - default: - exit(1); - } - } - - for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) - run_test(&tests[i]); - - return 0; -} diff --git a/external/lsquic/tests/test_trechist.c b/external/lsquic/tests/test_trechist.c deleted file mode 100644 index 163bfca..0000000 --- a/external/lsquic/tests/test_trechist.c +++ /dev/null @@ -1,533 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/* Tests based on rechist tests */ - -#include -#include -#include -#include -#include -#include - -#ifdef WIN32 -#include "vc_compat.h" -#endif - -#include "lsquic_int_types.h" -#include "lsquic_trechist.h" - - -struct str_range_iter -{ - char *str; - struct lsquic_packno_range range; -}; - - -static const struct lsquic_packno_range * -next_str_range (void *ctx) -{ - struct str_range_iter *const str_iter = ctx; - - if (str_iter->str && str_iter->str[0] == '[') - { - str_iter->range.high = strtoul(str_iter->str + 1, &str_iter->str, 10); - assert('-' == *str_iter->str); - str_iter->range.low = strtoul(str_iter->str + 1, &str_iter->str, 10); - assert(']' == *str_iter->str); - ++str_iter->str; - return &str_iter->range; - } - else - return NULL; -} - - -static void -test_clone (trechist_mask_t src_mask, struct trechist_elem *src_elems) -{ - trechist_mask_t hist_mask; - struct trechist_elem *hist_elems; - const struct lsquic_packno_range *ranges[2]; - struct trechist_iter iters[2]; - - hist_elems = malloc(sizeof(hist_elems[0]) * TRECHIST_MAX_RANGES); - - lsquic_trechist_iter(&iters[0], src_mask, src_elems); - lsquic_trechist_copy_ranges(&hist_mask, hist_elems, &iters[0], - lsquic_trechist_first, lsquic_trechist_next); - - lsquic_trechist_iter(&iters[0], src_mask, src_elems); - lsquic_trechist_iter(&iters[1], hist_mask, hist_elems); - - for (ranges[0] = lsquic_trechist_first(&iters[0]), - ranges[1] = lsquic_trechist_first(&iters[1]); - - ranges[0] && ranges[1]; - - ranges[0] = lsquic_trechist_next(&iters[0]), - ranges[1] = lsquic_trechist_next(&iters[1])) - { - assert(ranges[0]->low == ranges[1]->low); - assert(ranges[0]->high == ranges[1]->high); - } - - assert(!ranges[0] && !ranges[1]); - - free(hist_elems); -} - - -static void -test4 (void) -{ - trechist_mask_t hist_mask; - struct trechist_elem *hist_elems; - const struct lsquic_packno_range *range; - struct trechist_iter iter; - lsquic_packno_t packno; - - hist_elems = malloc(sizeof(hist_elems[0]) * TRECHIST_MAX_RANGES); - hist_mask = 0; - test_clone(hist_mask, hist_elems); - - for (packno = 11917; packno <= 11941; ++packno) - lsquic_trechist_insert(&hist_mask, hist_elems, packno); - for (packno = 11946; packno <= 11994; ++packno) - lsquic_trechist_insert(&hist_mask, hist_elems, packno); - - test_clone(hist_mask, hist_elems); - lsquic_trechist_iter(&iter, hist_mask, hist_elems); - range = lsquic_trechist_first(&iter); - assert(range); - assert(range->high == 11994); - assert(range->low == 11946); - range = lsquic_trechist_next(&iter); - assert(range); - assert(range->high == 11941); - assert(range->low == 11917); - range = lsquic_trechist_next(&iter); - assert(!range); - - lsquic_trechist_insert(&hist_mask, hist_elems, 11995); - lsquic_trechist_insert(&hist_mask, hist_elems, 11996); - test_clone(hist_mask, hist_elems); - - lsquic_trechist_iter(&iter, hist_mask, hist_elems); - range = lsquic_trechist_first(&iter); - assert(range); - assert(range->high == 11996); - assert(range->low == 11946); - range = lsquic_trechist_next(&iter); - assert(range); - assert(range->high == 11941); - assert(range->low == 11917); - range = lsquic_trechist_next(&iter); - assert(!range); - test_clone(hist_mask, hist_elems); - - lsquic_trechist_insert(&hist_mask, hist_elems, 11912); - - lsquic_trechist_iter(&iter, hist_mask, hist_elems); - range = lsquic_trechist_first(&iter); - assert(range); - assert(range->high == 11996); - assert(range->low == 11946); - range = lsquic_trechist_next(&iter); - assert(range); - assert(range->high == 11941); - assert(range->low == 11917); - range = lsquic_trechist_next(&iter); - assert(range); - assert(range->high == 11912); - assert(range->low == 11912); - range = lsquic_trechist_next(&iter); - assert(!range); - - for (packno = 12169; packno <= 12193; ++packno) - lsquic_trechist_insert(&hist_mask, hist_elems, packno); - - test_clone(hist_mask, hist_elems); - - lsquic_trechist_iter(&iter, hist_mask, hist_elems); - range = lsquic_trechist_first(&iter); - assert(range); - assert(range->high == 12193); - assert(range->low == 12169); - range = lsquic_trechist_next(&iter); - assert(range); - assert(range->high == 11996); - assert(range->low == 11946); - range = lsquic_trechist_next(&iter); - assert(range); - assert(range->high == 11941); - assert(range->low == 11917); - range = lsquic_trechist_next(&iter); - assert(range); - assert(range->high == 11912); - assert(range->low == 11912); - range = lsquic_trechist_next(&iter); - assert(!range); - - test_clone(hist_mask, hist_elems); - - free(hist_elems); -} - - -static void -rechist2str (trechist_mask_t hist_mask, const struct trechist_elem *hist_elems, - char *buf, size_t bufsz) -{ - const struct lsquic_packno_range *range; - struct trechist_iter iter; - size_t off; - int n; - - lsquic_trechist_iter(&iter, hist_mask, hist_elems); - for (off = 0, range = lsquic_trechist_first(&iter); - range && off < bufsz; - off += n, range = lsquic_trechist_next(&iter)) - { - n = snprintf(buf + off, bufsz - off, "[%"PRIu64"-%"PRIu64"]", - range->high, range->low); - if (n < 0 || (size_t) n >= bufsz - off) - break; - } -} - - -static void -test5 (void) -{ - trechist_mask_t hist_mask; - struct trechist_elem *hist_elems; - char buf[100]; - - hist_elems = malloc(sizeof(hist_elems[0]) * TRECHIST_MAX_RANGES); - hist_mask = 0; - - lsquic_trechist_insert(&hist_mask, hist_elems, 1); - /* Packet 2 omitted because it could not be decrypted */ - lsquic_trechist_insert(&hist_mask, hist_elems, 3); - lsquic_trechist_insert(&hist_mask, hist_elems, 12); - - rechist2str(hist_mask, hist_elems, buf, sizeof(buf)); - assert(0 == strcmp(buf, "[12-12][3-3][1-1]")); - - lsquic_trechist_insert(&hist_mask, hist_elems, 4); - rechist2str(hist_mask, hist_elems, buf, sizeof(buf)); - assert(0 == strcmp(buf, "[12-12][4-3][1-1]")); - - lsquic_trechist_insert(&hist_mask, hist_elems, 10); - rechist2str(hist_mask, hist_elems, buf, sizeof(buf)); - assert(0 == strcmp(buf, "[12-12][10-10][4-3][1-1]")); - - lsquic_trechist_insert(&hist_mask, hist_elems, 6); - - rechist2str(hist_mask, hist_elems, buf, sizeof(buf)); - assert(0 == strcmp(buf, "[12-12][10-10][6-6][4-3][1-1]")); - - lsquic_trechist_insert(&hist_mask, hist_elems, 7); - lsquic_trechist_insert(&hist_mask, hist_elems, 8); - - rechist2str(hist_mask, hist_elems, buf, sizeof(buf)); - assert(0 == strcmp(buf, "[12-12][10-10][8-6][4-3][1-1]")); - test_clone(hist_mask, hist_elems); - assert(!(lsquic_trechist_contains(hist_mask, hist_elems, 0))); - assert(!(lsquic_trechist_contains(hist_mask, hist_elems, 9))); - assert(!(lsquic_trechist_contains(hist_mask, hist_elems, 20))); - assert(lsquic_trechist_contains(hist_mask, hist_elems, 4)); - assert(lsquic_trechist_contains(hist_mask, hist_elems, 1)); - assert(lsquic_trechist_contains(hist_mask, hist_elems, 7)); - assert(lsquic_trechist_contains(hist_mask, hist_elems, 8)); - assert(lsquic_trechist_contains(hist_mask, hist_elems, 6)); - - lsquic_trechist_insert(&hist_mask, hist_elems, 9); - - rechist2str(hist_mask, hist_elems, buf, sizeof(buf)); - assert(0 == strcmp(buf, "[12-12][10-6][4-3][1-1]")); - test_clone(hist_mask, hist_elems); - - lsquic_trechist_insert(&hist_mask, hist_elems, 5); - lsquic_trechist_insert(&hist_mask, hist_elems, 11); - - rechist2str(hist_mask, hist_elems, buf, sizeof(buf)); - assert(0 == strcmp(buf, "[12-3][1-1]")); - - free(hist_elems); -} - - -static void -basic_test (void) -{ - trechist_mask_t hist_mask; - struct trechist_elem *hist_elems; - const struct lsquic_packno_range *range; - struct trechist_iter iter; - unsigned i; - int s; - - hist_elems = malloc(sizeof(hist_elems[0]) * TRECHIST_MAX_RANGES); - hist_mask = 0; - - lsquic_trechist_iter(&iter, hist_mask, hist_elems); - range = lsquic_trechist_first(&iter); - assert(!range); - - s = lsquic_trechist_insert(&hist_mask, hist_elems, 1); - assert(("inserting packet number one is successful", 0 == s)); - - lsquic_trechist_iter(&iter, hist_mask, hist_elems); - range = lsquic_trechist_first(&iter); - assert(("first range returned correctly", range)); - assert(("first range low value checks out", range->low == 1)); - assert(("first range high value checks out", range->high == 1)); - range = lsquic_trechist_next(&iter); - assert(!range); - assert(("second range does not exist", !range)); - - for (i = 3; i <= 5; ++i) - { - s = lsquic_trechist_insert(&hist_mask, hist_elems, i); - assert(("inserting packet", s == 0)); - } - - lsquic_trechist_iter(&iter, hist_mask, hist_elems); - range = lsquic_trechist_first(&iter); - assert(("first range returned correctly", range)); - assert(("first range low value checks out", range->low == 3)); - assert(("first range high value checks out", range->high == 5)); - assert(!(lsquic_trechist_contains(hist_mask, hist_elems, 7))); - assert(!(lsquic_trechist_contains(hist_mask, hist_elems, 2))); - assert(lsquic_trechist_contains(hist_mask, hist_elems, 4)); - range = lsquic_trechist_next(&iter); - assert(("second range returned correctly", range)); - assert(("second range low value checks out", range->low == 1)); - assert(("second range high value checks out", range->high == 1)); - range = lsquic_trechist_next(&iter); - assert(("third range does not exist", !range)); - - assert(5 == lsquic_trechist_max(hist_mask, hist_elems)); - - s = lsquic_trechist_insert(&hist_mask, hist_elems, 10); - assert(("inserting packet", s == 0)); - - assert(10 == lsquic_trechist_max(hist_mask, hist_elems)); - - lsquic_trechist_iter(&iter, hist_mask, hist_elems); - range = lsquic_trechist_first(&iter); - assert(("first range returned correctly", range)); - assert(("first range low value checks out", range->low == 10)); - assert(("first range high value checks out", range->high == 10)); - test_clone(hist_mask, hist_elems); - - s = lsquic_trechist_insert(&hist_mask, hist_elems, 8); - assert(("inserting packet", s == 0)); - s = lsquic_trechist_insert(&hist_mask, hist_elems, 9); - assert(("inserting packet", s == 0)); - - /* Check merge */ - lsquic_trechist_iter(&iter, hist_mask, hist_elems); - range = lsquic_trechist_first(&iter); - assert(("first range returned correctly", range)); - assert(("first range low value checks out", range->low == 8)); - assert(("first range high value checks out", range->high == 10)); - - free(hist_elems); -} - - -static void -test_limits (void) -{ - trechist_mask_t hist_mask; - struct trechist_elem *hist_elems; - unsigned i; - int s; - - hist_elems = malloc(sizeof(hist_elems[0]) * TRECHIST_MAX_RANGES); - hist_mask = 0; - - for (i = 1; i <= UCHAR_MAX; ++i) - { - s = lsquic_trechist_insert(&hist_mask, hist_elems, i); - assert(s == 0); - } - - s = lsquic_trechist_insert(&hist_mask, hist_elems, i); - assert(s == -1); /* Overflow */ - - /* Always successful inserting new entries: */ - for (i = 0; i < TRECHIST_MAX_RANGES * 2; ++i) - { - s = lsquic_trechist_insert(&hist_mask, hist_elems, 1000 + 2 * i); - assert(s == 0); - } - - /* Always successful inserting new entries in descending order, too: */ - for (i = 0; i < TRECHIST_MAX_RANGES * 2; ++i) - { - s = lsquic_trechist_insert(&hist_mask, hist_elems, 10000 - 2 * i); - assert(s == 0); - } - - /* Test merge where count exceeds max: */ - hist_mask = 0; - lsquic_trechist_copy_ranges(&hist_mask, hist_elems, - & (struct str_range_iter) { .str = "[400-202][200-1]", }, - next_str_range, next_str_range); - s = lsquic_trechist_insert(&hist_mask, hist_elems, 201); - assert(s == -1); - - free(hist_elems); -} - - -static void -test_overflow (void) -{ - trechist_mask_t mask; - struct trechist_elem *elems; - int s; - char buf[0x1000]; - - struct str_range_iter str_iter = { .str = - "[395-390]" /* 1 */ - "[385-380]" - "[375-370]" - "[365-360]" - "[355-350]" /* 5 */ - "[345-340]" - "[335-330]" - "[325-320]" - "[315-310]" - "[305-300]" /* 10 */ - "[295-290]" - "[285-280]" - "[275-270]" - "[265-260]" - "[255-250]" /* 15 */ - "[245-240]" /* 16 */ - "[235-230]" /* Overflow vvvvvv */ - "[225-220]" - "[215-210]" - "[205-200]" - "[195-190]" - "[185-180]" }; - - elems = malloc(sizeof(elems[0]) * TRECHIST_MAX_RANGES); - lsquic_trechist_copy_ranges(&mask, elems, &str_iter, next_str_range, - next_str_range); - - rechist2str(mask, elems, buf, sizeof(buf)); - assert(0 == strcmp(buf, - "[395-390]" /* 1 */ - "[385-380]" - "[375-370]" - "[365-360]" - "[355-350]" /* 5 */ - "[345-340]" - "[335-330]" - "[325-320]" - "[315-310]" - "[305-300]" /* 10 */ - "[295-290]" - "[285-280]" - "[275-270]" - "[265-260]" - "[255-250]" /* 15 */ - "[245-240]" /* 16 */)); - - s = lsquic_trechist_insert(&mask, elems, 400); - assert(s == 0); - rechist2str(mask, elems, buf, sizeof(buf)); - assert(0 == strcmp(buf, - "[400-400]" - "[395-390]" - "[385-380]" - "[375-370]" - "[365-360]" - "[355-350]" - "[345-340]" - "[335-330]" - "[325-320]" - "[315-310]" - "[305-300]" - "[295-290]" - "[285-280]" - "[275-270]" - "[265-260]" - "[255-250]" - )); - - /* One more for a good measure */ - s = lsquic_trechist_insert(&mask, elems, 402); - assert(s == 0); - rechist2str(mask, elems, buf, sizeof(buf)); - assert(0 == strcmp(buf, - "[402-402]" - "[400-400]" - "[395-390]" - "[385-380]" - "[375-370]" - "[365-360]" - "[355-350]" - "[345-340]" - "[335-330]" - "[325-320]" - "[315-310]" - "[305-300]" - "[295-290]" - "[285-280]" - "[275-270]" - "[265-260]" - )); - - s = lsquic_trechist_insert(&mask, elems, 401); - assert(s == 0); - s = lsquic_trechist_insert(&mask, elems, 500); - assert(s == 0); - s = lsquic_trechist_insert(&mask, elems, 200); - assert(s == 0); - s = lsquic_trechist_insert(&mask, elems, 267); - assert(s == 0); - - /* One more for a good measure */ - s = lsquic_trechist_insert(&mask, elems, 402); - assert(s == 0); - rechist2str(mask, elems, buf, sizeof(buf)); - assert(0 == strcmp(buf, - "[500-500]" - "[402-400]" - "[395-390]" - "[385-380]" - "[375-370]" - "[365-360]" - "[355-350]" - "[345-340]" - "[335-330]" - "[325-320]" - "[315-310]" - "[305-300]" - "[295-290]" - "[285-280]" - "[275-270]" - "[267-267]" - )); - - free(elems); -} - - -int -main (void) -{ - basic_test(); - test4(); - test5(); - test_limits(); - test_overflow(); - - return 0; -} diff --git a/external/lsquic/tests/test_varint.c b/external/lsquic/tests/test_varint.c deleted file mode 100644 index b6779b7..0000000 --- a/external/lsquic/tests/test_varint.c +++ /dev/null @@ -1,124 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include - -#include "lsquic_varint.h" - -#ifdef _MSC_VER -#include "vc_compat.h" -#endif - -#define MAX_INPUT_SZ 8 - -struct test_read_varint -{ - /* Input: */ - unsigned char input[MAX_INPUT_SZ]; - size_t in_sz; - /* Output: */ - int rv; - uint64_t val; -}; - -static const struct test_read_varint read_tests[] = -{ - { - .input = "\x25", - .in_sz = 0, - .rv = -1, - }, - { - .input = "\x25", - .in_sz = 2, - .rv = 1, - .val = 0x25, - }, - { - .input = "\x40\x25", - .in_sz = 1, - .rv = -1, - }, - { - .input = "\x40\x25", - .in_sz = 2, - .rv = 2, - .val = 0x25, - }, - { - .input = "\x9d\x7f\x3e\x7d", - .in_sz = 2, - .rv = -1, - }, - { - .input = "\x9d\x7f\x3e\x7d", - .in_sz = 4, - .rv = 4, - .val = 494878333, - }, - { - .input = "\xc2\x19\x7c\x5e\xff\x14\xe8\x8c", - .in_sz = 7, - .rv = -1, - }, - { - .input = "\xc2\x19\x7c\x5e\xff\x14\xe8\x8c", - .in_sz = 8, - .rv = 8, - .val = 151288809941952652ull, - }, -}; - - -int -main (void) -{ - const struct test_read_varint *test; - const struct test_read_varint *const end - = read_tests + sizeof(read_tests) / sizeof(read_tests[0]); - size_t input_sz, avail; - struct varint_read_state state; - const unsigned char *p, *endp; - int s; - - for (test = read_tests; test < end; ++test) - { - uint64_t val; - const int rv = vint_read(test->input, test->input + test->in_sz, &val); - assert(rv == test->rv); - if (test->rv > 0) - assert(val == test->val); - - /* Test non-blocking read */ - for (input_sz = MAX_INPUT_SZ; input_sz > 0; --input_sz) - { - state.pos = 0; - p = test->input; - endp = p + test->in_sz; - while (p < endp) - { - avail = (uintptr_t) (endp - p); - if (avail > input_sz) - avail = input_sz; - s = lsquic_varint_read_nb(&p, p + avail, &state); - if (0 == s) - { - assert(state.val == test->val); - assert(p <= endp); - break; - } - else if (p == endp) - { - assert(test->rv == -1); - break; - } - else - { - assert(p < endp); - } - } - } - } - - return 0; -} diff --git a/external/lsquic/tests/test_ver_nego.c b/external/lsquic/tests/test_ver_nego.c deleted file mode 100644 index e753d0a..0000000 --- a/external/lsquic/tests/test_ver_nego.c +++ /dev/null @@ -1,160 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_packet_common.h" -#include "lsquic_parse.h" -#include "lsquic_parse_common.h" -#include "lsquic_mm.h" -#include "lsquic_packet_in.h" -#include "lsquic_engine_public.h" -#include "lsquic_version.h" - - -/* The struct is used to test both generation and parsing of version - * negotiation packet. - */ -struct gen_ver_nego_test { - int gvnt_lineno; - /* Generate: inputs; parse: outputs */ - enum lsquic_version - gvnt_gen_ver; - uint64_t gvnt_cid; - unsigned gvnt_versions; - size_t gvnt_bufsz; - /* Generate: outputs; parse: inputs */ - int gvnt_len; /* Retval */ - char gvnt_buf[0x40]; /* Contents */ -}; - - -static const struct gen_ver_nego_test tests[] = { - - { .gvnt_lineno = __LINE__, - .gvnt_cid = 0x0102030405060708UL, - .gvnt_versions = (1 << LSQVER_043), - .gvnt_gen_ver = LSQVER_043, - .gvnt_bufsz = 12, - .gvnt_len = -1, /* Buffer size is too small */ - }, - - { .gvnt_lineno = __LINE__, - .gvnt_cid = 0x0102030405060708UL, - .gvnt_versions = (1 << LSQVER_043) | (1 << N_LSQVER), - .gvnt_gen_ver = LSQVER_043, - .gvnt_bufsz = 20, - .gvnt_len = -1, /* Invalid version specified in the bitmask */ - }, - - { .gvnt_lineno = __LINE__, - .gvnt_cid = 0x0102030405060708UL, - .gvnt_versions = (1 << LSQVER_043) | (1 << LSQVER_046), - .gvnt_gen_ver = LSQVER_043, - .gvnt_bufsz = 17, - .gvnt_len = 17, - .gvnt_buf = { - PACKET_PUBLIC_FLAGS_VERSION| - PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, - 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Connection ID */ - 'Q', '0', '4', '3', - 'Q', '0', '4', '6', - }, - }, - -}; - - -static void -test_parsing_ver_nego (const struct gen_ver_nego_test *gvnt) -{ - int s; - lsquic_packet_in_t *packet_in; - struct lsquic_mm mm; - struct ver_iter vi; - lsquic_ver_tag_t ver_tag; - enum lsquic_version version; - struct packin_parse_state ppstate; - unsigned version_bitmask = gvnt->gvnt_versions; - - lsquic_mm_init(&mm); - packet_in = lsquic_mm_get_packet_in(&mm); - packet_in->pi_data = lsquic_mm_get_packet_in_buf(&mm, 1370); - packet_in->pi_flags |= PI_OWN_DATA; - memcpy(packet_in->pi_data, gvnt->gvnt_buf, gvnt->gvnt_len); - s = lsquic_parse_packet_in_begin(packet_in, gvnt->gvnt_len, 0, GQUIC_CID_LEN, &ppstate); - assert(s == 0); - - for (s = lsquic_packet_in_ver_first(packet_in, &vi, &ver_tag); s; - s = lsquic_packet_in_ver_next(&vi, &ver_tag)) - { - version = lsquic_tag2ver(ver_tag); - assert(version < N_LSQVER); - assert(version_bitmask & (1 << version)); - version_bitmask &= ~(1 << version); - } - - assert(0 == version_bitmask); - - lsquic_mm_put_packet_in(&mm, packet_in); - lsquic_mm_cleanup(&mm); -} - - -static void -run_gvnt (int i) -{ - const struct gen_ver_nego_test *const gvnt = &tests[i]; - lsquic_cid_t scid, dcid; - int len; - - memset(&dcid, 0, sizeof(dcid)); - dcid.len = sizeof(gvnt->gvnt_cid); - memcpy(dcid.idbuf, &gvnt->gvnt_cid, sizeof(gvnt->gvnt_cid)); - - unsigned char out[0x40]; - assert(sizeof(out) <= sizeof(gvnt->gvnt_buf)); /* Internal sanity check */ - - if ((1 << gvnt->gvnt_gen_ver) & LSQUIC_GQUIC_HEADER_VERSIONS) - len = lsquic_gquic_gen_ver_nego_pkt(out, gvnt->gvnt_bufsz, &dcid, - gvnt->gvnt_versions); - else - { - /* XXX this is never executed, as there is no test case for this */ - scid = (lsquic_cid_t) { .len = 0, }; - len = lsquic_Q046_gen_ver_nego_pkt(out, gvnt->gvnt_bufsz, &dcid, - &scid, gvnt->gvnt_versions, ((unsigned char) rand()) & 0xF); - } - assert(("Packet length is correct", len == gvnt->gvnt_len)); - - if (gvnt->gvnt_len > 0) - { - if ((1 << gvnt->gvnt_gen_ver) & LSQUIC_GQUIC_HEADER_VERSIONS) - assert(("Packet contents are correct", - 0 == memcmp(out, gvnt->gvnt_buf, gvnt->gvnt_len))); - else - { - assert(("Packet contents are correct", - 0 == memcmp(out + 1, gvnt->gvnt_buf + 1, gvnt->gvnt_len - 1))); - assert(out[0] & 0x80); /* Other 7 bits are random */ - } - test_parsing_ver_nego(gvnt); - } -} - - -int -main (void) -{ - unsigned i; - for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) - run_gvnt(i); - return 0; -} diff --git a/external/lsquic/tests/test_wuf_gquic_be.c b/external/lsquic/tests/test_wuf_gquic_be.c deleted file mode 100644 index 992c78b..0000000 --- a/external/lsquic/tests/test_wuf_gquic_be.c +++ /dev/null @@ -1,74 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_parse.h" - -//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC -#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) - - -/* The test is both for generation and parsing: */ -struct wuf_test { - unsigned char buf[0x10]; - size_t buf_len; - lsquic_stream_id_t stream_id; - uint64_t offset; -}; - -static const struct wuf_test wuf_tests[] = { - { - .buf = { 0x04, 0x00, 0x67, 0x45, 0x34, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, }, - .buf_len = GQUIC_WUF_SZ, - .stream_id = 0x674534, - .offset = 0x0102030405, - }, - - { .buf = { 0 }, } -}; - - -static void -run_parse_tests (void) -{ - const struct wuf_test *test; - for (test = wuf_tests; test->buf[0]; ++test) - { - lsquic_stream_id_t stream_id = ~0; - uint64_t offset = ~0; - int sz = pf->pf_parse_window_update_frame(test->buf, test->buf_len, &stream_id, &offset); - assert(sz == GQUIC_WUF_SZ); - assert(stream_id == test->stream_id); - assert(offset == test->offset); - } -} - - -static void -run_gen_tests (void) -{ - const struct wuf_test *test; - for (test = wuf_tests; test->buf[0]; ++test) - { - unsigned char buf[0x100]; - int sz = pf->pf_gen_window_update_frame(buf, test->buf_len, test->stream_id, test->offset); - assert(sz == GQUIC_WUF_SZ); - assert(0 == memcmp(buf, test->buf, sz)); - } -} - - -int -main (void) -{ - run_parse_tests(); - run_gen_tests(); - return 0; -} diff --git a/external/lsquic/tests/test_wuf_gquic_le.c b/external/lsquic/tests/test_wuf_gquic_le.c deleted file mode 100644 index 7c0cb43..0000000 --- a/external/lsquic/tests/test_wuf_gquic_le.c +++ /dev/null @@ -1,74 +0,0 @@ -/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ -#include -#include -#include -#include -#ifndef WIN32 -#include -#endif - -#include "lsquic.h" -#include "lsquic_types.h" -#include "lsquic_alarmset.h" -#include "lsquic_parse.h" - -static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); - - -/* The test is both for generation and parsing: */ -struct wuf_test { - unsigned char buf[0x10]; - size_t buf_len; - uint32_t stream_id; - uint64_t offset; -}; - -static const struct wuf_test wuf_tests[] = { - { - .buf = { 0x04, 0x34, 0x45, 0x67, 0x00, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, }, - .buf_len = QUIC_WUF_SZ, - .stream_id = 0x674534, - .offset = 0x0102030405, - }, - - { .buf = { 0 }, } -}; - - -static void -run_parse_tests (void) -{ - const struct wuf_test *test; - for (test = wuf_tests; test->buf[0]; ++test) - { - uint32_t stream_id = ~0; - uint64_t offset = ~0; - int sz = pf->pf_parse_window_update_frame(test->buf, test->buf_len, &stream_id, &offset); - assert(sz == QUIC_WUF_SZ); - assert(stream_id == test->stream_id); - assert(offset == test->offset); - } -} - - -static void -run_gen_tests (void) -{ - const struct wuf_test *test; - for (test = wuf_tests; test->buf[0]; ++test) - { - unsigned char buf[0x100]; - int sz = pf->pf_gen_window_update_frame(buf, test->buf_len, test->stream_id, test->offset); - assert(sz == QUIC_WUF_SZ); - assert(0 == memcmp(buf, test->buf, sz)); - } -} - - -int -main (void) -{ - run_parse_tests(); - run_gen_tests(); - return 0; -} diff --git a/external/lsquic/tools/gen-rst-tags.pl b/external/lsquic/tools/gen-rst-tags.pl deleted file mode 100644 index a3b7715..0000000 --- a/external/lsquic/tools/gen-rst-tags.pl +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env perl -# -# Parse .rst files and generate tags. - -use strict; -use warnings; - -my $id = '[a-zA-Z_0-9]'; -my @tags; -for my $file (@ARGV) { - open my $fh, '<', $file - or die "Cannot open $file for reading: $!"; - while (<$fh>) { - chomp; - if (m/^(\.\. function:: )(.+)/) { - my ($pfx, $val) = ($1, $2); - if ($val =~ m/($id+) \(/o) { - push @tags, "$1\t$file\t/^$pfx$val/\n"; - } else { - warn "unknown pattern in $file:$.: $_\n"; - } - } elsif (m/^(\s*\.\. (?:type|member):: )(.+)/) { - my ($pfx, $val) = ($1, $2); - if ($val =~ m/\(\*([^\)]+)\)/) { - push @tags, "$1\t$file\t/^$pfx$val/\n"; - } elsif ($val =~ m/($id+)(?::\d+)?\s*$/o) { - push @tags, "$1\t$file\t/^$pfx$val/\n"; - } else { - warn "unknown pattern in $file:$.: $_\n"; - } - } elsif (m/^(\s*\.\. var:: )(.+)/) { - my ($pfx, $val) = ($1, $2); - if ($val =~ m/($id+)(?:\[[^\]]*\])?\s*$/o) { - push @tags, "$1\t$file\t/^$pfx$val/\n"; - } else { - warn "unknown pattern in $file:$.: $_\n"; - } - } elsif (m/^(\s*\.\. macro::\s+)(\S+)\s*$/) { - push @tags, "$2\t$file\t/^$1$2/\n"; - } elsif (m/^\s*\.\. (?:toctree|image|highlight|code-block)::/) { - # Skip - } elsif (m/^\s*\.\.\s*\S+::/) { - warn "unknown pattern in $file:$.: $_\n"; - } - } -} - -print sort @tags; diff --git a/external/lsquic/tools/gen-tags.pl b/external/lsquic/tools/gen-tags.pl deleted file mode 100755 index 1012044..0000000 --- a/external/lsquic/tools/gen-tags.pl +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/env perl -# -# Generate tags for lsquic project -# -# If your `ctags' is not Universal Ctags, set UCTAGS environment variable to -# point to it. - -use warnings; - -use Getopt::Long; - -GetOptions("docs!" => \my $do_docs); - -$tmpfile = '.tags.' . $$ . rand; -$ctags = $ENV{UCTAGS} || 'ctags'; -$queue_h = '/usr/include/sys/queue.h'; - -@dirs = qw(include bin tests src/lshpack src/liblsquic); - -system($ctags, '-f', $tmpfile, - ('--kinds-c=+p') x !!$do_docs, # Index function prototypes - qw(-R -I SLIST_ENTRY+=void -I LIST_ENTRY+=void - -I STAILQ_ENTRY+=void -I TAILQ_ENTRY+=void -I CIRCLEQ_ENTRY+=void - -I TAILQ_ENTRY+=void -I SLIST_HEAD+=void -I LIST_HEAD+=void - -I STAILQ_HEAD+=void -I TAILQ_HEAD+=void -I CIRCLEQ_HEAD+=void - -I TAILQ_HEAD+=void), @dirs) - and die "ctags failed"; - --f $queue_h - and system($ctags, '-f', $tmpfile, '-a', $queue_h) - and die "ctags $queue_h failed"; - -if ($do_docs) { - @rst = glob("docs/*.rst"); - if (@rst) { - system("$^X tools/gen-rst-tags.pl @rst >> $tmpfile") - and die "cannot run tools/gen-rst-tags.pl"; - } -} - -END { unlink $tmpfile } - -open TMPFILE, "<", $tmpfile - or die "cannot open $tmpfile for reading: $!"; -while () -{ - push @lines, $_; - if ( - s/^(mini|full|ietf_full|ietf_mini|evanescent)_conn_ci_/ci_/ - or s/^(nocopy|hash|error)_di_/di_/ - or s/^(gquic)_(be|Q046|Q050)_/pf_/ - or s/^ietf_v[0-9][0-9]*_/pf_/ - or s/^stock_shi_/shi_/ - or s/^iquic_esf_/esf_/ - or s/^gquic[0-9]?_esf_/esf_/ - or s/^iquic_esfi_/esfi_/ - or s/^lsquic_[sh]pi_/pii_/ - or s/^(lsquic_cubic|lsquic_bbr)_/cci_/ - ) - { - push @lines, $_; - } -} -open TMPFILE, ">", $tmpfile - or die "cannot open $tmpfile for writing: $!"; -print TMPFILE sort @lines; -close TMPFILE; -rename $tmpfile, 'tags'; diff --git a/external/lsquic/wincompat/README.txt b/external/lsquic/wincompat/README.txt deleted file mode 100644 index a5ced1f..0000000 --- a/external/lsquic/wincompat/README.txt +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. -- only debug and release are expected in the Cmakelists.txt. If you need a different config, please follow the model in that file to add it. - -- vcpkg does not have boringssl, so you'll have to build it yourself. Follow the instructions at the boringssl repository. - With the caveat that you should do it from a VC command prompt for the correct architecture and make sure to set all - the paths for perl,ninja,etc. correctly. Also watch out for C runtime library mismatches with the externals you link. - - -- zlib and libevent do exist in vcpkg. - -- getopt files are really old and could probably use updating. \ No newline at end of file diff --git a/external/lsquic/wincompat/sys/queue.h b/external/lsquic/wincompat/sys/queue.h deleted file mode 100644 index e15d61a..0000000 --- a/external/lsquic/wincompat/sys/queue.h +++ /dev/null @@ -1,860 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)queue.h 8.5 (Berkeley) 8/20/94 - * $FreeBSD$ - */ - -#ifndef _SYS_QUEUE_H_ -#define _SYS_QUEUE_H_ - - -/* - * This file defines four types of data structures: singly-linked lists, - * singly-linked tail queues, lists and tail queues. - * - * A singly-linked list is headed by a single forward pointer. The elements - * are singly linked for minimum space and pointer manipulation overhead at - * the expense of O(n) removal for arbitrary elements. New elements can be - * added to the list after an existing element or at the head of the list. - * Elements being removed from the head of the list should use the explicit - * macro for this purpose for optimum efficiency. A singly-linked list may - * only be traversed in the forward direction. Singly-linked lists are ideal - * for applications with large datasets and few or no removals or for - * implementing a LIFO queue. - * - * A singly-linked tail queue is headed by a pair of pointers, one to the - * head of the list and the other to the tail of the list. The elements are - * singly linked for minimum space and pointer manipulation overhead at the - * expense of O(n) removal for arbitrary elements. New elements can be added - * to the list after an existing element, at the head of the list, or at the - * end of the list. Elements being removed from the head of the tail queue - * should use the explicit macro for this purpose for optimum efficiency. - * A singly-linked tail queue may only be traversed in the forward direction. - * Singly-linked tail queues are ideal for applications with large datasets - * and few or no removals or for implementing a FIFO queue. - * - * A list is headed by a single forward pointer (or an array of forward - * pointers for a hash table header). The elements are doubly linked - * so that an arbitrary element can be removed without a need to - * traverse the list. New elements can be added to the list before - * or after an existing element or at the head of the list. A list - * may be traversed in either direction. - * - * A tail queue is headed by a pair of pointers, one to the head of the - * list and the other to the tail of the list. The elements are doubly - * linked so that an arbitrary element can be removed without a need to - * traverse the list. New elements can be added to the list before or - * after an existing element, at the head of the list, or at the end of - * the list. A tail queue may be traversed in either direction. - * - * For details on the use of these macros, see the queue(3) manual page. - * - * Below is a summary of implemented functions where: - * + means the macro is available - * - means the macro is not available - * s means the macro is available but is slow (runs in O(n) time) - * - * SLIST LIST STAILQ TAILQ - * _HEAD + + + + - * _CLASS_HEAD + + + + - * _HEAD_INITIALIZER + + + + - * _ENTRY + + + + - * _CLASS_ENTRY + + + + - * _INIT + + + + - * _EMPTY + + + + - * _FIRST + + + + - * _NEXT + + + + - * _PREV - + - + - * _LAST - - + + - * _FOREACH + + + + - * _FOREACH_FROM + + + + - * _FOREACH_SAFE + + + + - * _FOREACH_FROM_SAFE + + + + - * _FOREACH_REVERSE - - - + - * _FOREACH_REVERSE_FROM - - - + - * _FOREACH_REVERSE_SAFE - - - + - * _FOREACH_REVERSE_FROM_SAFE - - - + - * _INSERT_HEAD + + + + - * _INSERT_BEFORE - + - + - * _INSERT_AFTER + + + + - * _INSERT_TAIL - - + + - * _CONCAT s s + + - * _REMOVE_AFTER + - + - - * _REMOVE_HEAD + - + - - * _REMOVE s + s + - * _SWAP + + + + - * - */ -#ifdef QUEUE_MACRO_DEBUG -#warn Use QUEUE_MACRO_DEBUG_TRACE and/or QUEUE_MACRO_DEBUG_TRASH -#define QUEUE_MACRO_DEBUG_TRACE -#define QUEUE_MACRO_DEBUG_TRASH -#endif - -#ifdef QUEUE_MACRO_DEBUG_TRACE -/* Store the last 2 places the queue element or head was altered */ -struct qm_trace { - unsigned long lastline; - unsigned long prevline; - const char *lastfile; - const char *prevfile; -}; - -#define TRACEBUF struct qm_trace trace; -#define TRACEBUF_INITIALIZER { __LINE__, 0, __FILE__, NULL } , - -#define QMD_TRACE_HEAD(head) do { \ - (head)->trace.prevline = (head)->trace.lastline; \ - (head)->trace.prevfile = (head)->trace.lastfile; \ - (head)->trace.lastline = __LINE__; \ - (head)->trace.lastfile = __FILE__; \ -} while (0) - -#define QMD_TRACE_ELEM(elem) do { \ - (elem)->trace.prevline = (elem)->trace.lastline; \ - (elem)->trace.prevfile = (elem)->trace.lastfile; \ - (elem)->trace.lastline = __LINE__; \ - (elem)->trace.lastfile = __FILE__; \ -} while (0) - -#else /* !QUEUE_MACRO_DEBUG_TRACE */ -#define QMD_TRACE_ELEM(elem) -#define QMD_TRACE_HEAD(head) -#define TRACEBUF -#define TRACEBUF_INITIALIZER -#endif /* QUEUE_MACRO_DEBUG_TRACE */ - -#ifdef QUEUE_MACRO_DEBUG_TRASH -#define TRASHIT(x) do {(x) = (void *)-1;} while (0) -#define QMD_IS_TRASHED(x) ((x) == (void *)(intptr_t)-1) -#else /* !QUEUE_MACRO_DEBUG_TRASH */ -#define TRASHIT(x) -#define QMD_IS_TRASHED(x) 0 -#endif /* QUEUE_MACRO_DEBUG_TRASH */ - -#if defined(QUEUE_MACRO_DEBUG_TRACE) || defined(QUEUE_MACRO_DEBUG_TRASH) -#define QMD_SAVELINK(name, link) void **name = (void *)&(link) -#else /* !QUEUE_MACRO_DEBUG_TRACE && !QUEUE_MACRO_DEBUG_TRASH */ -#define QMD_SAVELINK(name, link) -#endif /* QUEUE_MACRO_DEBUG_TRACE || QUEUE_MACRO_DEBUG_TRASH */ - -#ifdef __cplusplus -/* - * In C++ there can be structure lists and class lists: - */ -#define QUEUE_TYPEOF(type) type -#else -#define QUEUE_TYPEOF(type) struct type -#endif - -/* - * Singly-linked List declarations. - */ -#define SLIST_HEAD(name, type) \ -struct name { \ - struct type *slh_first; /* first element */ \ -} - -#define SLIST_CLASS_HEAD(name, type) \ -struct name { \ - class type *slh_first; /* first element */ \ -} - -#define SLIST_HEAD_INITIALIZER(head) \ - { NULL } - -#define SLIST_ENTRY(type) \ -struct { \ - struct type *sle_next; /* next element */ \ -} - -#define SLIST_CLASS_ENTRY(type) \ -struct { \ - class type *sle_next; /* next element */ \ -} - -/* - * Singly-linked List functions. - */ -#if (defined(_KERNEL) && defined(INVARIANTS)) -#define QMD_SLIST_CHECK_PREVPTR(prevp, elm) do { \ - if (*(prevp) != (elm)) \ - panic("Bad prevptr *(%p) == %p != %p", \ - (prevp), *(prevp), (elm)); \ -} while (0) -#else -#define QMD_SLIST_CHECK_PREVPTR(prevp, elm) -#endif - -#define SLIST_CONCAT(head1, head2, type, field) do { \ - QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head1); \ - if (curelm == NULL) { \ - if ((SLIST_FIRST(head1) = SLIST_FIRST(head2)) != NULL) \ - SLIST_INIT(head2); \ - } else if (SLIST_FIRST(head2) != NULL) { \ - while (SLIST_NEXT(curelm, field) != NULL) \ - curelm = SLIST_NEXT(curelm, field); \ - SLIST_NEXT(curelm, field) = SLIST_FIRST(head2); \ - SLIST_INIT(head2); \ - } \ -} while (0) - -#define SLIST_EMPTY(head) ((head)->slh_first == NULL) - -#define SLIST_FIRST(head) ((head)->slh_first) - -#define SLIST_FOREACH(var, head, field) \ - for ((var) = SLIST_FIRST((head)); \ - (var); \ - (var) = SLIST_NEXT((var), field)) - -#define SLIST_FOREACH_FROM(var, head, field) \ - for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ - (var); \ - (var) = SLIST_NEXT((var), field)) - -#define SLIST_FOREACH_SAFE(var, head, field, tvar) \ - for ((var) = SLIST_FIRST((head)); \ - (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define SLIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ - for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ - (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \ - for ((varp) = &SLIST_FIRST((head)); \ - ((var) = *(varp)) != NULL; \ - (varp) = &SLIST_NEXT((var), field)) - -#define SLIST_INIT(head) do { \ - SLIST_FIRST((head)) = NULL; \ -} while (0) - -#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ - SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \ - SLIST_NEXT((slistelm), field) = (elm); \ -} while (0) - -#define SLIST_INSERT_HEAD(head, elm, field) do { \ - SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \ - SLIST_FIRST((head)) = (elm); \ -} while (0) - -#define SLIST_NEXT(elm, field) ((elm)->field.sle_next) - -#define SLIST_REMOVE(head, elm, type, field) do { \ - QMD_SAVELINK(oldnext, (elm)->field.sle_next); \ - if (SLIST_FIRST((head)) == (elm)) { \ - SLIST_REMOVE_HEAD((head), field); \ - } \ - else { \ - QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head); \ - while (SLIST_NEXT(curelm, field) != (elm)) \ - curelm = SLIST_NEXT(curelm, field); \ - SLIST_REMOVE_AFTER(curelm, field); \ - } \ - TRASHIT(*oldnext); \ -} while (0) - -#define SLIST_REMOVE_AFTER(elm, field) do { \ - SLIST_NEXT(elm, field) = \ - SLIST_NEXT(SLIST_NEXT(elm, field), field); \ -} while (0) - -#define SLIST_REMOVE_HEAD(head, field) do { \ - SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \ -} while (0) - -#define SLIST_REMOVE_PREVPTR(prevp, elm, field) do { \ - QMD_SLIST_CHECK_PREVPTR(prevp, elm); \ - *(prevp) = SLIST_NEXT(elm, field); \ - TRASHIT((elm)->field.sle_next); \ -} while (0) - -#define SLIST_SWAP(head1, head2, type) do { \ - QUEUE_TYPEOF(type) *swap_first = SLIST_FIRST(head1); \ - SLIST_FIRST(head1) = SLIST_FIRST(head2); \ - SLIST_FIRST(head2) = swap_first; \ -} while (0) - -/* - * Singly-linked Tail queue declarations. - */ -#define STAILQ_HEAD(name, type) \ -struct name { \ - struct type *stqh_first;/* first element */ \ - struct type **stqh_last;/* addr of last next element */ \ -} - -#define STAILQ_CLASS_HEAD(name, type) \ -struct name { \ - class type *stqh_first; /* first element */ \ - class type **stqh_last; /* addr of last next element */ \ -} - -#define STAILQ_HEAD_INITIALIZER(head) \ - { NULL, &(head).stqh_first } - -#define STAILQ_ENTRY(type) \ -struct { \ - struct type *stqe_next; /* next element */ \ -} - -#define STAILQ_CLASS_ENTRY(type) \ -struct { \ - class type *stqe_next; /* next element */ \ -} - -/* - * Singly-linked Tail queue functions. - */ -#define STAILQ_CONCAT(head1, head2) do { \ - if (!STAILQ_EMPTY((head2))) { \ - *(head1)->stqh_last = (head2)->stqh_first; \ - (head1)->stqh_last = (head2)->stqh_last; \ - STAILQ_INIT((head2)); \ - } \ -} while (0) - -#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL) - -#define STAILQ_FIRST(head) ((head)->stqh_first) - -#define STAILQ_FOREACH(var, head, field) \ - for((var) = STAILQ_FIRST((head)); \ - (var); \ - (var) = STAILQ_NEXT((var), field)) - -#define STAILQ_FOREACH_FROM(var, head, field) \ - for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ - (var); \ - (var) = STAILQ_NEXT((var), field)) - -#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ - for ((var) = STAILQ_FIRST((head)); \ - (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define STAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ - for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ - (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define STAILQ_INIT(head) do { \ - STAILQ_FIRST((head)) = NULL; \ - (head)->stqh_last = &STAILQ_FIRST((head)); \ -} while (0) - -#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \ - if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\ - (head)->stqh_last = &STAILQ_NEXT((elm), field); \ - STAILQ_NEXT((tqelm), field) = (elm); \ -} while (0) - -#define STAILQ_INSERT_HEAD(head, elm, field) do { \ - if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \ - (head)->stqh_last = &STAILQ_NEXT((elm), field); \ - STAILQ_FIRST((head)) = (elm); \ -} while (0) - -#define STAILQ_INSERT_TAIL(head, elm, field) do { \ - STAILQ_NEXT((elm), field) = NULL; \ - *(head)->stqh_last = (elm); \ - (head)->stqh_last = &STAILQ_NEXT((elm), field); \ -} while (0) - -#define STAILQ_LAST(head, type, field) \ - (STAILQ_EMPTY((head)) ? NULL : \ - __containerof((head)->stqh_last, \ - QUEUE_TYPEOF(type), field.stqe_next)) - -#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next) - -#define STAILQ_REMOVE(head, elm, type, field) do { \ - QMD_SAVELINK(oldnext, (elm)->field.stqe_next); \ - if (STAILQ_FIRST((head)) == (elm)) { \ - STAILQ_REMOVE_HEAD((head), field); \ - } \ - else { \ - QUEUE_TYPEOF(type) *curelm = STAILQ_FIRST(head); \ - while (STAILQ_NEXT(curelm, field) != (elm)) \ - curelm = STAILQ_NEXT(curelm, field); \ - STAILQ_REMOVE_AFTER(head, curelm, field); \ - } \ - TRASHIT(*oldnext); \ -} while (0) - -#define STAILQ_REMOVE_AFTER(head, elm, field) do { \ - if ((STAILQ_NEXT(elm, field) = \ - STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \ - (head)->stqh_last = &STAILQ_NEXT((elm), field); \ -} while (0) - -#define STAILQ_REMOVE_HEAD(head, field) do { \ - if ((STAILQ_FIRST((head)) = \ - STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \ - (head)->stqh_last = &STAILQ_FIRST((head)); \ -} while (0) - -#define STAILQ_SWAP(head1, head2, type) do { \ - QUEUE_TYPEOF(type) *swap_first = STAILQ_FIRST(head1); \ - QUEUE_TYPEOF(type) **swap_last = (head1)->stqh_last; \ - STAILQ_FIRST(head1) = STAILQ_FIRST(head2); \ - (head1)->stqh_last = (head2)->stqh_last; \ - STAILQ_FIRST(head2) = swap_first; \ - (head2)->stqh_last = swap_last; \ - if (STAILQ_EMPTY(head1)) \ - (head1)->stqh_last = &STAILQ_FIRST(head1); \ - if (STAILQ_EMPTY(head2)) \ - (head2)->stqh_last = &STAILQ_FIRST(head2); \ -} while (0) - - -/* - * List declarations. - */ -#define LIST_HEAD(name, type) \ -struct name { \ - struct type *lh_first; /* first element */ \ -} - -#define LIST_CLASS_HEAD(name, type) \ -struct name { \ - class type *lh_first; /* first element */ \ -} - -#define LIST_HEAD_INITIALIZER(head) \ - { NULL } - -#define LIST_ENTRY(type) \ -struct { \ - struct type *le_next; /* next element */ \ - struct type **le_prev; /* address of previous next element */ \ -} - -#define LIST_CLASS_ENTRY(type) \ -struct { \ - class type *le_next; /* next element */ \ - class type **le_prev; /* address of previous next element */ \ -} - -/* - * List functions. - */ - -#if (defined(_KERNEL) && defined(INVARIANTS)) -/* - * QMD_LIST_CHECK_HEAD(LIST_HEAD *head, LIST_ENTRY NAME) - * - * If the list is non-empty, validates that the first element of the list - * points back at 'head.' - */ -#define QMD_LIST_CHECK_HEAD(head, field) do { \ - if (LIST_FIRST((head)) != NULL && \ - LIST_FIRST((head))->field.le_prev != \ - &LIST_FIRST((head))) \ - panic("Bad list head %p first->prev != head", (head)); \ -} while (0) - -/* - * QMD_LIST_CHECK_NEXT(TYPE *elm, LIST_ENTRY NAME) - * - * If an element follows 'elm' in the list, validates that the next element - * points back at 'elm.' - */ -#define QMD_LIST_CHECK_NEXT(elm, field) do { \ - if (LIST_NEXT((elm), field) != NULL && \ - LIST_NEXT((elm), field)->field.le_prev != \ - &((elm)->field.le_next)) \ - panic("Bad link elm %p next->prev != elm", (elm)); \ -} while (0) - -/* - * QMD_LIST_CHECK_PREV(TYPE *elm, LIST_ENTRY NAME) - * - * Validates that the previous element (or head of the list) points to 'elm.' - */ -#define QMD_LIST_CHECK_PREV(elm, field) do { \ - if (*(elm)->field.le_prev != (elm)) \ - panic("Bad link elm %p prev->next != elm", (elm)); \ -} while (0) -#else -#define QMD_LIST_CHECK_HEAD(head, field) -#define QMD_LIST_CHECK_NEXT(elm, field) -#define QMD_LIST_CHECK_PREV(elm, field) -#endif /* (_KERNEL && INVARIANTS) */ - -#define LIST_CONCAT(head1, head2, type, field) do { \ - QUEUE_TYPEOF(type) *curelm = LIST_FIRST(head1); \ - if (curelm == NULL) { \ - if ((LIST_FIRST(head1) = LIST_FIRST(head2)) != NULL) { \ - LIST_FIRST(head2)->field.le_prev = \ - &LIST_FIRST((head1)); \ - LIST_INIT(head2); \ - } \ - } else if (LIST_FIRST(head2) != NULL) { \ - while (LIST_NEXT(curelm, field) != NULL) \ - curelm = LIST_NEXT(curelm, field); \ - LIST_NEXT(curelm, field) = LIST_FIRST(head2); \ - LIST_FIRST(head2)->field.le_prev = &LIST_NEXT(curelm, field); \ - LIST_INIT(head2); \ - } \ -} while (0) - -#define LIST_EMPTY(head) ((head)->lh_first == NULL) - -#define LIST_FIRST(head) ((head)->lh_first) - -#define LIST_FOREACH(var, head, field) \ - for ((var) = LIST_FIRST((head)); \ - (var); \ - (var) = LIST_NEXT((var), field)) - -#define LIST_FOREACH_FROM(var, head, field) \ - for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ - (var); \ - (var) = LIST_NEXT((var), field)) - -#define LIST_FOREACH_SAFE(var, head, field, tvar) \ - for ((var) = LIST_FIRST((head)); \ - (var) && ((tvar) = LIST_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define LIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ - for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ - (var) && ((tvar) = LIST_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define LIST_INIT(head) do { \ - LIST_FIRST((head)) = NULL; \ -} while (0) - -#define LIST_INSERT_AFTER(listelm, elm, field) do { \ - QMD_LIST_CHECK_NEXT(listelm, field); \ - if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\ - LIST_NEXT((listelm), field)->field.le_prev = \ - &LIST_NEXT((elm), field); \ - LIST_NEXT((listelm), field) = (elm); \ - (elm)->field.le_prev = &LIST_NEXT((listelm), field); \ -} while (0) - -#define LIST_INSERT_BEFORE(listelm, elm, field) do { \ - QMD_LIST_CHECK_PREV(listelm, field); \ - (elm)->field.le_prev = (listelm)->field.le_prev; \ - LIST_NEXT((elm), field) = (listelm); \ - *(listelm)->field.le_prev = (elm); \ - (listelm)->field.le_prev = &LIST_NEXT((elm), field); \ -} while (0) - -#define LIST_INSERT_HEAD(head, elm, field) do { \ - QMD_LIST_CHECK_HEAD((head), field); \ - if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \ - LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\ - LIST_FIRST((head)) = (elm); \ - (elm)->field.le_prev = &LIST_FIRST((head)); \ -} while (0) - -#define LIST_NEXT(elm, field) ((elm)->field.le_next) - -#define LIST_PREV(elm, head, type, field) \ - ((elm)->field.le_prev == &LIST_FIRST((head)) ? NULL : \ - __containerof((elm)->field.le_prev, \ - QUEUE_TYPEOF(type), field.le_next)) - -#define LIST_REMOVE(elm, field) do { \ - QMD_SAVELINK(oldnext, (elm)->field.le_next); \ - QMD_SAVELINK(oldprev, (elm)->field.le_prev); \ - QMD_LIST_CHECK_NEXT(elm, field); \ - QMD_LIST_CHECK_PREV(elm, field); \ - if (LIST_NEXT((elm), field) != NULL) \ - LIST_NEXT((elm), field)->field.le_prev = \ - (elm)->field.le_prev; \ - *(elm)->field.le_prev = LIST_NEXT((elm), field); \ - TRASHIT(*oldnext); \ - TRASHIT(*oldprev); \ -} while (0) - -#define LIST_SWAP(head1, head2, type, field) do { \ - QUEUE_TYPEOF(type) *swap_tmp = LIST_FIRST(head1); \ - LIST_FIRST((head1)) = LIST_FIRST((head2)); \ - LIST_FIRST((head2)) = swap_tmp; \ - if ((swap_tmp = LIST_FIRST((head1))) != NULL) \ - swap_tmp->field.le_prev = &LIST_FIRST((head1)); \ - if ((swap_tmp = LIST_FIRST((head2))) != NULL) \ - swap_tmp->field.le_prev = &LIST_FIRST((head2)); \ -} while (0) - -/* - * Tail queue declarations. - */ -#define TAILQ_HEAD(name, type) \ -struct name { \ - struct type *tqh_first; /* first element */ \ - struct type **tqh_last; /* addr of last next element */ \ - TRACEBUF \ -} - -#define TAILQ_CLASS_HEAD(name, type) \ -struct name { \ - class type *tqh_first; /* first element */ \ - class type **tqh_last; /* addr of last next element */ \ - TRACEBUF \ -} - -#define TAILQ_HEAD_INITIALIZER(head) \ - { NULL, &(head).tqh_first, TRACEBUF_INITIALIZER } - -#define TAILQ_ENTRY(type) \ -struct { \ - struct type *tqe_next; /* next element */ \ - struct type **tqe_prev; /* address of previous next element */ \ - TRACEBUF \ -} - -#define TAILQ_CLASS_ENTRY(type) \ -struct { \ - class type *tqe_next; /* next element */ \ - class type **tqe_prev; /* address of previous next element */ \ - TRACEBUF \ -} - -/* - * Tail queue functions. - */ -#if (defined(_KERNEL) && defined(INVARIANTS)) -/* - * QMD_TAILQ_CHECK_HEAD(TAILQ_HEAD *head, TAILQ_ENTRY NAME) - * - * If the tailq is non-empty, validates that the first element of the tailq - * points back at 'head.' - */ -#define QMD_TAILQ_CHECK_HEAD(head, field) do { \ - if (!TAILQ_EMPTY(head) && \ - TAILQ_FIRST((head))->field.tqe_prev != \ - &TAILQ_FIRST((head))) \ - panic("Bad tailq head %p first->prev != head", (head)); \ -} while (0) - -/* - * QMD_TAILQ_CHECK_TAIL(TAILQ_HEAD *head, TAILQ_ENTRY NAME) - * - * Validates that the tail of the tailq is a pointer to pointer to NULL. - */ -#define QMD_TAILQ_CHECK_TAIL(head, field) do { \ - if (*(head)->tqh_last != NULL) \ - panic("Bad tailq NEXT(%p->tqh_last) != NULL", (head)); \ -} while (0) - -/* - * QMD_TAILQ_CHECK_NEXT(TYPE *elm, TAILQ_ENTRY NAME) - * - * If an element follows 'elm' in the tailq, validates that the next element - * points back at 'elm.' - */ -#define QMD_TAILQ_CHECK_NEXT(elm, field) do { \ - if (TAILQ_NEXT((elm), field) != NULL && \ - TAILQ_NEXT((elm), field)->field.tqe_prev != \ - &((elm)->field.tqe_next)) \ - panic("Bad link elm %p next->prev != elm", (elm)); \ -} while (0) - -/* - * QMD_TAILQ_CHECK_PREV(TYPE *elm, TAILQ_ENTRY NAME) - * - * Validates that the previous element (or head of the tailq) points to 'elm.' - */ -#define QMD_TAILQ_CHECK_PREV(elm, field) do { \ - if (*(elm)->field.tqe_prev != (elm)) \ - panic("Bad link elm %p prev->next != elm", (elm)); \ -} while (0) -#else -#define QMD_TAILQ_CHECK_HEAD(head, field) -#define QMD_TAILQ_CHECK_TAIL(head, headname) -#define QMD_TAILQ_CHECK_NEXT(elm, field) -#define QMD_TAILQ_CHECK_PREV(elm, field) -#endif /* (_KERNEL && INVARIANTS) */ - -#define TAILQ_CONCAT(head1, head2, field) do { \ - if (!TAILQ_EMPTY(head2)) { \ - *(head1)->tqh_last = (head2)->tqh_first; \ - (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \ - (head1)->tqh_last = (head2)->tqh_last; \ - TAILQ_INIT((head2)); \ - QMD_TRACE_HEAD(head1); \ - QMD_TRACE_HEAD(head2); \ - } \ -} while (0) - -#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL) - -#define TAILQ_FIRST(head) ((head)->tqh_first) - -#define TAILQ_FOREACH(var, head, field) \ - for ((var) = TAILQ_FIRST((head)); \ - (var); \ - (var) = TAILQ_NEXT((var), field)) - -#define TAILQ_FOREACH_FROM(var, head, field) \ - for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ - (var); \ - (var) = TAILQ_NEXT((var), field)) - -#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ - for ((var) = TAILQ_FIRST((head)); \ - (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define TAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ - for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ - (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ - (var) = (tvar)) - -#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ - for ((var) = TAILQ_LAST((head), headname); \ - (var); \ - (var) = TAILQ_PREV((var), headname, field)) - -#define TAILQ_FOREACH_REVERSE_FROM(var, head, headname, field) \ - for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ - (var); \ - (var) = TAILQ_PREV((var), headname, field)) - -#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \ - for ((var) = TAILQ_LAST((head), headname); \ - (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ - (var) = (tvar)) - -#define TAILQ_FOREACH_REVERSE_FROM_SAFE(var, head, headname, field, tvar) \ - for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ - (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ - (var) = (tvar)) - -#define TAILQ_INIT(head) do { \ - TAILQ_FIRST((head)) = NULL; \ - (head)->tqh_last = &TAILQ_FIRST((head)); \ - QMD_TRACE_HEAD(head); \ -} while (0) - -#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ - QMD_TAILQ_CHECK_NEXT(listelm, field); \ - if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\ - TAILQ_NEXT((elm), field)->field.tqe_prev = \ - &TAILQ_NEXT((elm), field); \ - else { \ - (head)->tqh_last = &TAILQ_NEXT((elm), field); \ - QMD_TRACE_HEAD(head); \ - } \ - TAILQ_NEXT((listelm), field) = (elm); \ - (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \ - QMD_TRACE_ELEM(&(elm)->field); \ - QMD_TRACE_ELEM(&(listelm)->field); \ -} while (0) - -#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ - QMD_TAILQ_CHECK_PREV(listelm, field); \ - (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ - TAILQ_NEXT((elm), field) = (listelm); \ - *(listelm)->field.tqe_prev = (elm); \ - (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \ - QMD_TRACE_ELEM(&(elm)->field); \ - QMD_TRACE_ELEM(&(listelm)->field); \ -} while (0) - -#define TAILQ_INSERT_HEAD(head, elm, field) do { \ - QMD_TAILQ_CHECK_HEAD(head, field); \ - if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \ - TAILQ_FIRST((head))->field.tqe_prev = \ - &TAILQ_NEXT((elm), field); \ - else \ - (head)->tqh_last = &TAILQ_NEXT((elm), field); \ - TAILQ_FIRST((head)) = (elm); \ - (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \ - QMD_TRACE_HEAD(head); \ - QMD_TRACE_ELEM(&(elm)->field); \ -} while (0) - -#define TAILQ_INSERT_TAIL(head, elm, field) do { \ - QMD_TAILQ_CHECK_TAIL(head, field); \ - TAILQ_NEXT((elm), field) = NULL; \ - (elm)->field.tqe_prev = (head)->tqh_last; \ - *(head)->tqh_last = (elm); \ - (head)->tqh_last = &TAILQ_NEXT((elm), field); \ - QMD_TRACE_HEAD(head); \ - QMD_TRACE_ELEM(&(elm)->field); \ -} while (0) - -#define TAILQ_LAST(head, headname) \ - (*(((struct headname *)((head)->tqh_last))->tqh_last)) - -#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) - -#define TAILQ_PREV(elm, headname, field) \ - (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) - -#define TAILQ_REMOVE(head, elm, field) do { \ - QMD_SAVELINK(oldnext, (elm)->field.tqe_next); \ - QMD_SAVELINK(oldprev, (elm)->field.tqe_prev); \ - QMD_TAILQ_CHECK_NEXT(elm, field); \ - QMD_TAILQ_CHECK_PREV(elm, field); \ - if ((TAILQ_NEXT((elm), field)) != NULL) \ - TAILQ_NEXT((elm), field)->field.tqe_prev = \ - (elm)->field.tqe_prev; \ - else { \ - (head)->tqh_last = (elm)->field.tqe_prev; \ - QMD_TRACE_HEAD(head); \ - } \ - *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \ - TRASHIT(*oldnext); \ - TRASHIT(*oldprev); \ - QMD_TRACE_ELEM(&(elm)->field); \ -} while (0) - -#define TAILQ_SWAP(head1, head2, type, field) do { \ - QUEUE_TYPEOF(type) *swap_first = (head1)->tqh_first; \ - QUEUE_TYPEOF(type) **swap_last = (head1)->tqh_last; \ - (head1)->tqh_first = (head2)->tqh_first; \ - (head1)->tqh_last = (head2)->tqh_last; \ - (head2)->tqh_first = swap_first; \ - (head2)->tqh_last = swap_last; \ - if ((swap_first = (head1)->tqh_first) != NULL) \ - swap_first->field.tqe_prev = &(head1)->tqh_first; \ - else \ - (head1)->tqh_last = &(head1)->tqh_first; \ - if ((swap_first = (head2)->tqh_first) != NULL) \ - swap_first->field.tqe_prev = &(head2)->tqh_first; \ - else \ - (head2)->tqh_last = &(head2)->tqh_first; \ -} while (0) - -#endif /* !_SYS_QUEUE_H_ */ diff --git a/external/lsquic/wincompat/vc_compat.h b/external/lsquic/wincompat/vc_compat.h deleted file mode 100644 index f5369a7..0000000 --- a/external/lsquic/wincompat/vc_compat.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ -#pragma once -#include -#include -typedef SSIZE_T ssize_t; -struct iovec { - void *iov_base; /* Starting address */ - size_t iov_len; /* Number of bytes to transfer */ -}; -#define strcasecmp(a,b) _strcmpi(a,b) -#define strncasecmp _strnicmp -#define strdup _strdup -#define PATH_MAX MAX_PATH - -#define posix_memalign(p, a, s) (((*(p)) = _aligned_malloc((s), (a))), *(p) ?0 :errno) - -#pragma warning(disable: 4018 4100 4127 4189 4200 4204 4152 4221 4244 4245 4267 4334 4702 4706 4804 ) - /* - 4018:signed/unsigned mismatch - 4100:unreferenced formal parameter, - 4127: conditional expression is constant - 4152: nonstandard extension, function/data pointer conversion in expression - 4189:local variable is initialized but not referenced - 4200:zero-sized-array in struct, - 4204: nonstandard extension used: non-constant aggregate initializer, - 4221: nonstandard extension used:xx cannot be initialized using address of automatic variable y, - 4244: '+=': conversion from 'int' to 'unsigned short', possible loss of data - 4245:'=': conversion from 'int' to 'unsigned int', signed/unsigned mismatch - 4267 function': conversion from 'size_t' to 'int', possible loss of data - 4334: '<<': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?) - 4702: unreachable code - 4706: assignment within conditional expression, - 4804: '-': unsafe use of type 'bool' in operation - */ - From bcb5172dfbe3ae1e09ff0033bd73663aab5809e4 Mon Sep 17 00:00:00 2001 From: turuslan Date: Mon, 4 Aug 2025 10:59:05 +0500 Subject: [PATCH 05/13] RAND_bytes --- external/lsquic.cmake | 1 + external/lsquic/include/openssl/rand.h | 12 ++++++++++++ external/lsquic/src/boringssl.cpp | 16 ++++++++++++++++ .../lsquic/src/liblsquic/lsquic_enc_sess_ietf.c | 1 - .../src/liblsquic/lsquic_parse_iquic_common.c | 1 - external/lsquic/src/liblsquic/lsquic_send_ctl.c | 2 -- 6 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 external/lsquic/include/openssl/rand.h create mode 100644 external/lsquic/src/boringssl.cpp diff --git a/external/lsquic.cmake b/external/lsquic.cmake index c657631..bd3e4b3 100644 --- a/external/lsquic.cmake +++ b/external/lsquic.cmake @@ -86,6 +86,7 @@ add_library(lsquic ${lsquic_dir}/src/liblsquic/lsquic_version.c ${lsquic_dir}/src/lshpack/lshpack.c + ${lsquic_dir}/src/boringssl.cpp ${lsquic_dir}/src/lsquic-ns3.cpp ) target_compile_definitions(lsquic PRIVATE diff --git a/external/lsquic/include/openssl/rand.h b/external/lsquic/include/openssl/rand.h new file mode 100644 index 0000000..06e2505 --- /dev/null +++ b/external/lsquic/include/openssl/rand.h @@ -0,0 +1,12 @@ +#pragma once + +#include +#include + +#if defined(__cplusplus) +#define EXTERN_C extern "C" +#else +#define EXTERN_C +#endif + +EXTERN_C int RAND_bytes(uint8_t *buf, size_t len); diff --git a/external/lsquic/src/boringssl.cpp b/external/lsquic/src/boringssl.cpp new file mode 100644 index 0000000..48d52e5 --- /dev/null +++ b/external/lsquic/src/boringssl.cpp @@ -0,0 +1,16 @@ +#include + +#include +#include + +inline auto &randomEngine() { + static std::default_random_engine random_engine; + return random_engine; +} + +extern "C" int RAND_bytes(uint8_t *buf, size_t len) { + for (auto &byte : std::span{buf, len}) { + byte = std::uniform_int_distribution{}(randomEngine()); + } + return 1; +} diff --git a/external/lsquic/src/liblsquic/lsquic_enc_sess_ietf.c b/external/lsquic/src/liblsquic/lsquic_enc_sess_ietf.c index ae52223..7f9fbc5 100644 --- a/external/lsquic/src/liblsquic/lsquic_enc_sess_ietf.c +++ b/external/lsquic/src/liblsquic/lsquic_enc_sess_ietf.c @@ -12,7 +12,6 @@ #include #include -#include #include #include "fiu-local.h" diff --git a/external/lsquic/src/liblsquic/lsquic_parse_iquic_common.c b/external/lsquic/src/liblsquic/lsquic_parse_iquic_common.c index 88a074c..d7a77cc 100644 --- a/external/lsquic/src/liblsquic/lsquic_parse_iquic_common.c +++ b/external/lsquic/src/liblsquic/lsquic_parse_iquic_common.c @@ -10,7 +10,6 @@ #include #include -#include #include #include "lsquic_types.h" diff --git a/external/lsquic/src/liblsquic/lsquic_send_ctl.c b/external/lsquic/src/liblsquic/lsquic_send_ctl.c index 601c0a3..3b34330 100644 --- a/external/lsquic/src/liblsquic/lsquic_send_ctl.c +++ b/external/lsquic/src/liblsquic/lsquic_send_ctl.c @@ -10,8 +10,6 @@ #include #include -#include - #include "lsquic_types.h" #include "lsquic_int_types.h" #include "lsquic.h" From 6db40c94120a4f03077709e728e4980e9260d572 Mon Sep 17 00:00:00 2001 From: turuslan Date: Tue, 5 Aug 2025 13:32:35 +0500 Subject: [PATCH 06/13] expose lsquic_stream_write_avail --- external/lsquic/include/lsquic.h | 3 +++ external/lsquic/src/lsquic-ns3.cpp | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/external/lsquic/include/lsquic.h b/external/lsquic/include/lsquic.h index 4353b9c..8c21ae4 100644 --- a/external/lsquic/include/lsquic.h +++ b/external/lsquic/include/lsquic.h @@ -2238,6 +2238,9 @@ int lsquic_ssl_sess_to_resume_info (struct ssl_st *, struct ssl_session_st *, unsigned char **buf, size_t *buf_sz); +size_t +lsquic_stream_write_avail (lsquic_stream_t *stream); + #ifdef __cplusplus } #endif diff --git a/external/lsquic/src/lsquic-ns3.cpp b/external/lsquic/src/lsquic-ns3.cpp index e01f16c..ceb874a 100644 --- a/external/lsquic/src/lsquic-ns3.cpp +++ b/external/lsquic/src/lsquic-ns3.cpp @@ -319,7 +319,7 @@ namespace ns3 { if (ls_stream_ == nullptr) { return 0; } - return kWindowSize; + return lsquic_stream_write_avail(ls_stream_); } int Send(Ptr packet, uint32_t flags) override { NS_ASSERT(server_.has_value() and not server_.value()); From a7791666cf6ff572153bdcc6dbece8abf8a8a0b6 Mon Sep 17 00:00:00 2001 From: turuslan Date: Tue, 5 Aug 2025 13:34:10 +0500 Subject: [PATCH 07/13] unused include --- external/lsquic/src/liblsquic/lsquic_crt_compress.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/lsquic/src/liblsquic/lsquic_crt_compress.c b/external/lsquic/src/liblsquic/lsquic_crt_compress.c index c6da73b..36831ef 100644 --- a/external/lsquic/src/liblsquic/lsquic_crt_compress.c +++ b/external/lsquic/src/liblsquic/lsquic_crt_compress.c @@ -1,11 +1,11 @@ /* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ #include #include +#include #include #include #include -#include #ifndef WIN32 #else #include From b814604b44dc6addcade198a51e27b178c4c6033 Mon Sep 17 00:00:00 2001 From: turuslan Date: Tue, 5 Aug 2025 13:35:05 +0500 Subject: [PATCH 08/13] fix slow debug --- external/lsquic/src/lsquic-ns3.cpp | 17 +++++++++++------ lsquic-test.cpp | 16 +++++++++------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/external/lsquic/src/lsquic-ns3.cpp b/external/lsquic/src/lsquic-ns3.cpp index ceb874a..b4118f6 100644 --- a/external/lsquic/src/lsquic-ns3.cpp +++ b/external/lsquic/src/lsquic-ns3.cpp @@ -356,9 +356,11 @@ namespace ns3 { NS_ASSERT(server_.has_value() and not server_.value()); NS_ASSERT(ls_stream_ != nullptr); maxSize = std::min(maxSize, kWindowSize); - factory_->buffer_.resize(maxSize); - auto r = lsquic_stream_read( - ls_stream_, factory_->buffer_.data(), factory_->buffer_.size()); + if (factory_->buffer_.size() < maxSize) { + factory_->buffer_.resize(maxSize); + } + auto r = + lsquic_stream_read(ls_stream_, factory_->buffer_.data(), maxSize); if (r == -1 and errno == EWOULDBLOCK) { errno_ = ERROR_AGAIN; return nullptr; @@ -475,13 +477,16 @@ namespace ns3 { void LsquicEngine::pollRead(Ptr) { Address from_address; while (auto packet = socket_->RecvFrom(from_address)) { - factory_->buffer_.resize(packet->GetSize()); - packet->CopyData(factory_->buffer_.data(), packet->GetSize()); + auto packet_size = packet->GetSize(); + if (factory_->buffer_.size() < packet_size) { + factory_->buffer_.resize(packet_size); + } + packet->CopyData(factory_->buffer_.data(), packet_size); auto from_address_raw = toSockaddr(from_address); // will call `LsquicEngine::on_hsk_done`, `LsquicEngine::ea_get_ssl_ctx`. lsquic_engine_packet_in(engine_, factory_->buffer_.data(), - packet->GetSize(), + packet_size, &address_raw_, &from_address_raw, this, diff --git a/lsquic-test.cpp b/lsquic-test.cpp index 2af50c9..39e6e8a 100644 --- a/lsquic-test.cpp +++ b/lsquic-test.cpp @@ -115,20 +115,22 @@ struct App : ns3::Application { void setReadWrite(size_t index) { auto &socket = sockets_.at(index); + auto &writing = state_.writing.at(index_).at(index); socket->SetRecvCallback([this, index](SocketPtr) { pollRead(index); }); socket->SetSendCallback( - [this, index](SocketPtr, uint32_t) { pollWrite(index); }); + [this, index, socket, &writing](SocketPtr, uint32_t) { + pollWrite(index, socket, writing); + }); } void write(size_t index, size_t size) { - state_.writing.at(index_).at(index) = size; - pollWrite(index); + auto socket = sockets_.at(index); + auto &writing = state_.writing.at(index_).at(index); + writing = size; + pollWrite(index, socket, writing); } - void pollWrite(size_t index) { - auto socket = sockets_.at(index); - auto &writing1 = state_.writing.at(index_); - auto &writing = writing1.at(index); + void pollWrite(size_t index, SocketPtr socket, size_t &writing) { if (writing == 0) { return; } From 2807f5d982bd179686fae03960031407275d8f4c Mon Sep 17 00:00:00 2001 From: turuslan Date: Tue, 5 Aug 2025 13:39:42 +0500 Subject: [PATCH 09/13] test arg --- lsquic-test.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lsquic-test.cpp b/lsquic-test.cpp index 39e6e8a..74ad9d0 100644 --- a/lsquic-test.cpp +++ b/lsquic-test.cpp @@ -245,8 +245,15 @@ void test(bool tcp) { test({10, 4 * 1000000}, tcp); } -int main() { - for (auto &tcp : {true, false}) { +int main(int argc, char **argv) { + if (argc == 1) { + for (auto &tcp : {true, false}) { + test(tcp); + } + } else { + std::string_view arg{argv[1]}; + auto tcp = arg == "tcp", quic = arg == "quic"; + NS_ASSERT(tcp or quic); test(tcp); } } From 5d533e534495478ac4ad9122c4f6de4c3f181774 Mon Sep 17 00:00:00 2001 From: turuslan Date: Tue, 5 Aug 2025 13:46:39 +0500 Subject: [PATCH 10/13] CRYPTO_library_init --- external/lsquic/include/openssl/crypto.h | 11 +++++++++++ external/lsquic/src/boringssl.cpp | 2 ++ 2 files changed, 13 insertions(+) create mode 100644 external/lsquic/include/openssl/crypto.h diff --git a/external/lsquic/include/openssl/crypto.h b/external/lsquic/include/openssl/crypto.h new file mode 100644 index 0000000..5c8ce98 --- /dev/null +++ b/external/lsquic/include/openssl/crypto.h @@ -0,0 +1,11 @@ +#pragma once + +#if defined(__cplusplus) +#define EXTERN_C extern "C" +#else +#define EXTERN_C +#endif + +EXTERN_C void OPENSSL_free(void *ptr); + +EXTERN_C void CRYPTO_library_init(); diff --git a/external/lsquic/src/boringssl.cpp b/external/lsquic/src/boringssl.cpp index 48d52e5..b7a6403 100644 --- a/external/lsquic/src/boringssl.cpp +++ b/external/lsquic/src/boringssl.cpp @@ -14,3 +14,5 @@ extern "C" int RAND_bytes(uint8_t *buf, size_t len) { } return 1; } + +extern "C" void CRYPTO_library_init() {} From beb440ed6e269b22221cb1bcc8e8213fe9745b2a Mon Sep 17 00:00:00 2001 From: turuslan Date: Tue, 5 Aug 2025 15:23:12 +0500 Subject: [PATCH 11/13] remove time --- external/lsquic/src/liblsquic/lsquic_crypto.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/lsquic/src/liblsquic/lsquic_crypto.c b/external/lsquic/src/liblsquic/lsquic_crypto.c index 2dbf692..9fedd60 100644 --- a/external/lsquic/src/liblsquic/lsquic_crypto.c +++ b/external/lsquic/src/liblsquic/lsquic_crypto.c @@ -398,7 +398,7 @@ int lsquic_aes_aead_dec(EVP_AEAD_CTX *key, /* 32 bytes client nonce with 4 bytes tm, 8 bytes orbit */ void lsquic_gen_nonce_c(unsigned char *buf, uint64_t orbit) { - time_t tm = time(NULL); + time_t tm = 0; unsigned char *p = buf; memcpy(p, &tm, 4); p += 4; From 90f404d6f40a49598a12314cb47f2509ffdaec6f Mon Sep 17 00:00:00 2001 From: turuslan Date: Thu, 7 Aug 2025 17:41:29 +0500 Subject: [PATCH 12/13] log time --- external/lsquic/src/liblsquic/lsquic_logger.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/external/lsquic/src/liblsquic/lsquic_logger.c b/external/lsquic/src/liblsquic/lsquic_logger.c index df0fc7e..f81451c 100644 --- a/external/lsquic/src/liblsquic/lsquic_logger.c +++ b/external/lsquic/src/liblsquic/lsquic_logger.c @@ -199,6 +199,8 @@ gettimeofday (struct timeval *tv, struct timezone *tz) #endif +int lsquic_time_now(); + static size_t print_timestamp (char *buf, size_t max) { @@ -206,7 +208,9 @@ print_timestamp (char *buf, size_t max) struct timeval tv; size_t len = 0; - gettimeofday(&tv, NULL); + int us = lsquic_time_now(); + tv.tv_sec = us / 1000000; + tv.tv_usec = us % 1000000; #ifdef WIN32 { time_t t = tv.tv_sec; From f174b329f52fed34f22b74e3ade3328bfd6ecf61 Mon Sep 17 00:00:00 2001 From: turuslan Date: Thu, 7 Aug 2025 18:10:50 +0500 Subject: [PATCH 13/13] boringssl stub --- CMakeLists.txt | 9 - external/lsquic.cmake | 2 - external/lsquic/include/openssl/aead.h | 3 + external/lsquic/include/openssl/bn.h | 3 + external/lsquic/include/openssl/boringssl.hpp | 223 +++++++ external/lsquic/include/openssl/chacha.h | 3 + external/lsquic/include/openssl/crypto.h | 10 +- external/lsquic/include/openssl/curve25519.h | 3 + external/lsquic/include/openssl/hkdf.h | 3 + external/lsquic/include/openssl/hmac.h | 3 + external/lsquic/include/openssl/nid.h | 1 + external/lsquic/include/openssl/rand.h | 11 +- external/lsquic/include/openssl/ssl.h | 3 + external/lsquic/include/openssl/stack.h | 1 + external/lsquic/include/openssl/x509.h | 3 + external/lsquic/src/boringssl.cpp | 563 +++++++++++++++++- external/lsquic/src/lsquic-ns3.cpp | 67 +-- 17 files changed, 812 insertions(+), 99 deletions(-) create mode 100644 external/lsquic/include/openssl/aead.h create mode 100644 external/lsquic/include/openssl/bn.h create mode 100644 external/lsquic/include/openssl/boringssl.hpp create mode 100644 external/lsquic/include/openssl/chacha.h create mode 100644 external/lsquic/include/openssl/curve25519.h create mode 100644 external/lsquic/include/openssl/hkdf.h create mode 100644 external/lsquic/include/openssl/hmac.h create mode 100644 external/lsquic/include/openssl/nid.h create mode 100644 external/lsquic/include/openssl/ssl.h create mode 100644 external/lsquic/include/openssl/stack.h create mode 100644 external/lsquic/include/openssl/x509.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 9817172..8dfd410 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,15 +42,6 @@ FetchContent_Declare( ) FetchContent_MakeAvailable(zlib) -FetchContent_Declare( - boringssl - GIT_REPOSITORY https://github.com/google/boringssl.git - GIT_TAG main -) -FetchContent_MakeAvailable(boringssl) - - - add_executable(beamsim main.cpp) target_include_directories(beamsim PRIVATE ${PROJECT_SOURCE_DIR}/src) target_link_libraries(beamsim yaml-cpp::yaml-cpp xxhash) diff --git a/external/lsquic.cmake b/external/lsquic.cmake index bd3e4b3..a4ae7ba 100644 --- a/external/lsquic.cmake +++ b/external/lsquic.cmake @@ -105,8 +105,6 @@ target_link_libraries(lsquic ns3::applications ns3::internet ns3::point-to-point - ssl - crypto xxhash zlibstatic ) diff --git a/external/lsquic/include/openssl/aead.h b/external/lsquic/include/openssl/aead.h new file mode 100644 index 0000000..84ee25e --- /dev/null +++ b/external/lsquic/include/openssl/aead.h @@ -0,0 +1,3 @@ +#pragma once + +#include "boringssl.hpp" diff --git a/external/lsquic/include/openssl/bn.h b/external/lsquic/include/openssl/bn.h new file mode 100644 index 0000000..84ee25e --- /dev/null +++ b/external/lsquic/include/openssl/bn.h @@ -0,0 +1,3 @@ +#pragma once + +#include "boringssl.hpp" diff --git a/external/lsquic/include/openssl/boringssl.hpp b/external/lsquic/include/openssl/boringssl.hpp new file mode 100644 index 0000000..693cd92 --- /dev/null +++ b/external/lsquic/include/openssl/boringssl.hpp @@ -0,0 +1,223 @@ +#pragma once + +#include +#include +#include + +#if defined(__cplusplus) +#define OPENSSL_EXPORT extern "C" +#else +#define OPENSSL_EXPORT +#endif + +#define STACK_OF(x) STACK_OF_##x + +#define LN_aes_128_gcm "aes-128-gcm" +#define SHA256_DIGEST_LENGTH 32 +#define EVP_MAX_BLOCK_LENGTH 32 +#define TLSEXT_NAMETYPE_host_name 0 +#define SSL_OP_NO_TLSv1_3 0x20000000L +#define SSL_ERROR_EARLY_DATA_REJECTED 15 +#define SSL_ERROR_WANT_READ 2 +#define SSL_ERROR_WANT_WRITE 3 +#define EVP_MAX_KEY_LENGTH 64 +#define ERR_ERROR_STRING_BUF_LEN 120 +#define TLS1_3_VERSION 0x0304 +#define SSL_SESS_CACHE_CLIENT 0x0001 +#define SSL_VERIFY_PEER 0x01 +#define EVP_MAX_MD_SIZE 64 +#define EVP_MAX_IV_LENGTH 16 +#define RSA_PKCS1_PSS_PADDING 6 +#define RSA_PKCS1_PSS_PADDING 6 + +enum evp_aead_direction_t { + evp_aead_open, + evp_aead_seal, +}; +enum ssl_verify_result_t { + ssl_verify_ok, + ssl_verify_invalid, + ssl_verify_retry, +}; +enum ssl_encryption_level_t { + ssl_encryption_initial = 0, + ssl_encryption_early_data = 1, + ssl_encryption_handshake = 2, + ssl_encryption_application = 3, +}; + +typedef struct x509_store_ctx_st X509_STORE_CTX; +typedef struct sha256_state_st SHA256_CTX; +typedef struct env_md_st EVP_MD; +typedef struct bignum_st BIGNUM; +typedef struct evp_aead_ctx_st EVP_AEAD_CTX; +typedef struct ssl_method_st SSL_METHOD; +typedef struct x509_st X509; +typedef struct bio_st BIO; +typedef ptrdiff_t ossl_ssize_t; +typedef struct asn1_string_st ASN1_INTEGER; +typedef struct x509_st X509; +typedef struct evp_pkey_st EVP_PKEY; +typedef struct env_md_ctx_st EVP_MD_CTX; +typedef struct evp_pkey_ctx_st EVP_PKEY_CTX; +typedef struct engine_st ENGINE; +typedef struct X509_name_st X509_NAME; +typedef struct ssl_quic_method_st SSL_QUIC_METHOD; +typedef struct crypto_ex_data_st CRYPTO_EX_DATA; +typedef struct ssl_st SSL; +typedef struct ssl_session_st SSL_SESSION; +typedef struct ssl_cipher_st SSL_CIPHER; +typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX; +typedef struct evp_cipher_st EVP_CIPHER; +typedef struct stack_st_X509 STACK_OF_X509; +typedef struct ssl_ctx_st SSL_CTX; +typedef struct evp_aead_st EVP_AEAD; + +typedef int pem_password_cb(char *buf, int size, int rwflag, void *userdata); + +typedef int CRYPTO_EX_unused; +typedef int CRYPTO_EX_dup(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, void **from_d, int index, long argl, void *argp); +typedef void CRYPTO_EX_free(void *parent, void *ptr, CRYPTO_EX_DATA *ad, int index, long argl, void *argp); + +OPENSSL_EXPORT int RAND_bytes(uint8_t *buf, size_t len); +OPENSSL_EXPORT int SHA256_Init(SHA256_CTX *sha); +OPENSSL_EXPORT int SHA256_Update(SHA256_CTX *sha, const void *data, size_t len); +OPENSSL_EXPORT int SHA256_Final(uint8_t out[SHA256_DIGEST_LENGTH], SHA256_CTX *sha); +OPENSSL_EXPORT uint8_t *HMAC(const EVP_MD *evp_md, const void *key, size_t key_len, const uint8_t *data, size_t data_len, uint8_t *out, unsigned int *out_len); +OPENSSL_EXPORT const EVP_MD *EVP_sha256(void); +OPENSSL_EXPORT int HKDF_expand(uint8_t *out_key, size_t out_len, const EVP_MD *digest, const uint8_t *prk, size_t prk_len, const uint8_t *info, size_t info_len); +OPENSSL_EXPORT void X25519_public_from_private(uint8_t out_public_value[32], const uint8_t private_key[32]); +OPENSSL_EXPORT int X25519(uint8_t out_shared_key[32], const uint8_t private_key[32], const uint8_t peer_public_value[32]); +OPENSSL_EXPORT int EVP_AEAD_CTX_seal(const EVP_AEAD_CTX *ctx, uint8_t *out, size_t *out_len, size_t max_out_len, const uint8_t *nonce, size_t nonce_len, const uint8_t *in, size_t in_len, const uint8_t *ad, size_t ad_len); +OPENSSL_EXPORT int EVP_AEAD_CTX_open(const EVP_AEAD_CTX *ctx, uint8_t *out, size_t *out_len, size_t max_out_len, const uint8_t *nonce, size_t nonce_len, const uint8_t *in, size_t in_len, const uint8_t *ad, size_t ad_len); +OPENSSL_EXPORT BIO *BIO_new_mem_buf(const void *buf, ossl_ssize_t len); +OPENSSL_EXPORT X509 *d2i_X509_bio(BIO *bp, X509 **x509); +OPENSSL_EXPORT int BIO_free(BIO *bio); +OPENSSL_EXPORT void EVP_MD_CTX_init(EVP_MD_CTX *ctx); +OPENSSL_EXPORT int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); +OPENSSL_EXPORT int EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *ctx, int padding); +OPENSSL_EXPORT int EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int salt_len); +OPENSSL_EXPORT int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *data, size_t len); +OPENSSL_EXPORT int EVP_DigestSignFinal(EVP_MD_CTX *ctx, uint8_t *out_sig, size_t *out_sig_len); +OPENSSL_EXPORT int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx); +OPENSSL_EXPORT int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); +OPENSSL_EXPORT int EVP_DigestVerifyUpdate(EVP_MD_CTX *ctx, const void *data, size_t len); +OPENSSL_EXPORT int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const uint8_t *sig, size_t sig_len); +OPENSSL_EXPORT void CRYPTO_library_init(void); +OPENSSL_EXPORT size_t EVP_AEAD_key_length(const EVP_AEAD *aead); +OPENSSL_EXPORT size_t EVP_AEAD_nonce_length(const EVP_AEAD *aead); +OPENSSL_EXPORT int EVP_AEAD_CTX_init_with_direction( EVP_AEAD_CTX *ctx, const EVP_AEAD *aead, const uint8_t *key, size_t key_len, size_t tag_len, enum evp_aead_direction_t dir); +OPENSSL_EXPORT void EVP_AEAD_CTX_cleanup(EVP_AEAD_CTX *ctx); +OPENSSL_EXPORT int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, uint8_t *out, int *out_len, const uint8_t *in, int in_len); +OPENSSL_EXPORT uint32_t ERR_get_error(void); +OPENSSL_EXPORT void CRYPTO_chacha_20(uint8_t *out, const uint8_t *in, size_t in_len, const uint8_t key[32], const uint8_t nonce[12], uint32_t counter); +OPENSSL_EXPORT SSL_SESSION *SSL_SESSION_from_bytes(const uint8_t *in, size_t in_len, const SSL_CTX *ctx); +OPENSSL_EXPORT int SSL_SESSION_early_data_capable(const SSL_SESSION *session); +OPENSSL_EXPORT void SSL_SESSION_free(SSL_SESSION *session); +OPENSSL_EXPORT SSL_CTX *SSL_CTX_new(const SSL_METHOD *method); +OPENSSL_EXPORT const SSL_METHOD *TLS_method(void); +OPENSSL_EXPORT char *ERR_error_string(uint32_t packed_error, char *buf); +OPENSSL_EXPORT int SSL_CTX_set_min_proto_version(SSL_CTX *ctx, uint16_t version); +OPENSSL_EXPORT int SSL_CTX_set_max_proto_version(SSL_CTX *ctx, uint16_t version); +OPENSSL_EXPORT int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); +OPENSSL_EXPORT int SSL_CTX_set_session_cache_mode(SSL_CTX *ctx, int mode); +OPENSSL_EXPORT void SSL_CTX_sess_set_new_cb( SSL_CTX *ctx, int (*new_session_cb)(SSL *ssl, SSL_SESSION *session)); +OPENSSL_EXPORT void SSL_CTX_set_custom_verify( SSL_CTX *ctx, int mode, enum ssl_verify_result_t (*callback)(SSL *ssl, uint8_t *out_alert)); +OPENSSL_EXPORT void SSL_CTX_set_early_data_enabled(SSL_CTX *ctx, int enabled); +OPENSSL_EXPORT SSL *SSL_new(SSL_CTX *ctx); +OPENSSL_EXPORT int SSL_set_quic_transport_params(SSL *ssl, const uint8_t *params, size_t params_len); +OPENSSL_EXPORT int SSL_set_quic_method(SSL *ssl, const SSL_QUIC_METHOD *quic_method); +OPENSSL_EXPORT int SSL_set_alpn_protos(SSL *ssl, const uint8_t *protos, size_t protos_len); +OPENSSL_EXPORT int SSL_set_tlsext_host_name(SSL *ssl, const char *name); +OPENSSL_EXPORT int SSL_set_session(SSL *ssl, SSL_SESSION *session); +OPENSSL_EXPORT int SSL_set_ex_data(SSL *ssl, int idx, void *data); +OPENSSL_EXPORT void SSL_set_connect_state(SSL *ssl); +OPENSSL_EXPORT int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx))( SSL *ssl, SSL_SESSION *session); +OPENSSL_EXPORT void SSL_CTX_free(SSL_CTX *ctx); +OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_gcm(void); +OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_128_ecb(void); +OPENSSL_EXPORT int HKDF_extract(uint8_t *out_key, size_t *out_len, const EVP_MD *digest, const uint8_t *secret, size_t secret_len, const uint8_t *salt, size_t salt_len); +OPENSSL_EXPORT void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *ctx); +OPENSSL_EXPORT int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl, const uint8_t *key, const uint8_t *iv); +OPENSSL_EXPORT int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *ctx); +OPENSSL_EXPORT void *SSL_get_ex_data(const SSL *ssl, int idx); +OPENSSL_EXPORT STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *ssl); +OPENSSL_EXPORT const char *SSL_get_servername(const SSL *ssl, const int type); +OPENSSL_EXPORT SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); +OPENSSL_EXPORT void SSL_set_verify(SSL *ssl, int mode, int (*callback)(int ok, X509_STORE_CTX *store_ctx)); +OPENSSL_EXPORT int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); +OPENSSL_EXPORT void SSL_set_verify_depth(SSL *ssl, int depth); +OPENSSL_EXPORT int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); +OPENSSL_EXPORT uint32_t SSL_clear_options(SSL *ssl, uint32_t options); +OPENSSL_EXPORT uint32_t SSL_get_options(const SSL *ssl); +OPENSSL_EXPORT uint32_t SSL_set_options(SSL *ssl, uint32_t options); +OPENSSL_EXPORT uint32_t SSL_CTX_get_options(const SSL_CTX *ctx); +OPENSSL_EXPORT int SSL_set_quic_early_data_context(SSL *ssl, const uint8_t *context, size_t context_len); +OPENSSL_EXPORT void SSL_set_cert_cb(SSL *ssl, int (*cb)(SSL *ssl, void *arg), void *arg); +OPENSSL_EXPORT void SSL_set_accept_state(SSL *ssl); +OPENSSL_EXPORT void SSL_get_peer_quic_transport_params( const SSL *ssl, const uint8_t **out_params, size_t *out_params_len); +OPENSSL_EXPORT int SSL_SESSION_to_bytes(const SSL_SESSION *in, uint8_t **out_data, size_t *out_len); +OPENSSL_EXPORT void OPENSSL_free(void *ptr); +OPENSSL_EXPORT uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *cipher); +OPENSSL_EXPORT const EVP_MD *EVP_sha384(void); +OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_gcm(void); +OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_256_ecb(void); +OPENSSL_EXPORT const EVP_AEAD *EVP_aead_chacha20_poly1305(void); +OPENSSL_EXPORT int SSL_do_handshake(SSL *ssl); +OPENSSL_EXPORT int SSL_get_error(const SSL *ssl, int ret_code); +OPENSSL_EXPORT void SSL_reset_early_data_reject(SSL *ssl); +OPENSSL_EXPORT int SSL_in_early_data(const SSL *ssl); +OPENSSL_EXPORT int SSL_process_quic_post_handshake(SSL *ssl); +OPENSSL_EXPORT void SSL_free(SSL *ssl); +OPENSSL_EXPORT int SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused *unused, CRYPTO_EX_dup *dup_unused, CRYPTO_EX_free *free_func); +OPENSSL_EXPORT STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); +OPENSSL_EXPORT const SSL_CIPHER *SSL_get_current_cipher(const SSL *ssl); +OPENSSL_EXPORT const char *SSL_CIPHER_get_name(const SSL_CIPHER *cipher); +OPENSSL_EXPORT int SSL_in_init(const SSL *ssl); +OPENSSL_EXPORT int SSL_provide_quic_data(SSL *ssl, enum ssl_encryption_level_t level, const uint8_t *data, size_t len); +OPENSSL_EXPORT int SSL_CIPHER_get_bits(const SSL_CIPHER *cipher, int *out_alg_bits); +OPENSSL_EXPORT void SSL_get0_alpn_selected(const SSL *ssl, const uint8_t **out_data, unsigned *out_len); +OPENSSL_EXPORT int SSL_send_fatal_alert(SSL *ssl, uint8_t alert); +OPENSSL_EXPORT int EVP_AEAD_CTX_init(EVP_AEAD_CTX *ctx, const EVP_AEAD *aead, const uint8_t *key, size_t key_len, size_t tag_len, ENGINE *impl); +OPENSSL_EXPORT X509_NAME *X509_get_subject_name(const X509 *x509); +OPENSSL_EXPORT char *X509_NAME_oneline(const X509_NAME *name, char *buf, int size); +OPENSSL_EXPORT int SSL_CTX_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused *unused, CRYPTO_EX_dup *dup_unused, CRYPTO_EX_free *free_func); +OPENSSL_EXPORT int SSL_CTX_get0_chain_certs(const SSL_CTX *ctx, STACK_OF(X509) **out_chain); +OPENSSL_EXPORT int i2d_X509(X509 *x509, uint8_t **outp); +OPENSSL_EXPORT int SSL_CTX_set_ex_data(SSL_CTX *ctx, int idx, void *data); +OPENSSL_EXPORT EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); +OPENSSL_EXPORT int EVP_PKEY_size(const EVP_PKEY *pkey); +OPENSSL_EXPORT void *SSL_CTX_get_ex_data(const SSL_CTX *ctx, int idx); +OPENSSL_EXPORT X509_NAME *X509_get_issuer_name(const X509 *x509); +OPENSSL_EXPORT int X509_NAME_get0_der(X509_NAME *name, const uint8_t **out_der, size_t *out_der_len); +OPENSSL_EXPORT ASN1_INTEGER *X509_get_serialNumber(X509 *x509); +OPENSSL_EXPORT BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn); +OPENSSL_EXPORT unsigned BN_num_bytes(const BIGNUM *bn); +OPENSSL_EXPORT void BN_free(BIGNUM *bn); +OPENSSL_EXPORT size_t BN_bn2bin(const BIGNUM *in, uint8_t *out); +OPENSSL_EXPORT X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); +OPENSSL_EXPORT EVP_PKEY *X509_get_pubkey(const X509 *x509); +OPENSSL_EXPORT void EVP_PKEY_free(EVP_PKEY *pkey); +OPENSSL_EXPORT void X509_free(X509 *x509); + +OPENSSL_EXPORT X509 *PEM_read_bio_X509(BIO *bp, X509 **x, pem_password_cb *cb, void *u); +OPENSSL_EXPORT size_t sk_X509_num(const STACK_OF_X509 *sk); +OPENSSL_EXPORT X509 *sk_X509_value(const STACK_OF_X509 *sk, size_t i); +OPENSSL_EXPORT STACK_OF_X509 *sk_X509_new_null(void); +OPENSSL_EXPORT size_t sk_X509_push(STACK_OF_X509 *sk, X509 *p); +OPENSSL_EXPORT void sk_X509_free(STACK_OF_X509 *sk); + +struct env_md_ctx_st {}; +struct sha256_state_st {}; +struct evp_aead_ctx_st { + char _; +}; +struct evp_cipher_ctx_st {}; + +struct ssl_quic_method_st { + int (*set_read_secret)(SSL *ssl, enum ssl_encryption_level_t level, const SSL_CIPHER *cipher, const uint8_t *secret, size_t secret_len); + int (*set_write_secret)(SSL *ssl, enum ssl_encryption_level_t level, const SSL_CIPHER *cipher, const uint8_t *secret, size_t secret_len); + int (*add_handshake_data)(SSL *ssl, enum ssl_encryption_level_t level, const uint8_t *data, size_t len); + int (*flush_flight)(SSL *ssl); + int (*send_alert)(SSL *ssl, enum ssl_encryption_level_t level, uint8_t alert); +}; diff --git a/external/lsquic/include/openssl/chacha.h b/external/lsquic/include/openssl/chacha.h new file mode 100644 index 0000000..84ee25e --- /dev/null +++ b/external/lsquic/include/openssl/chacha.h @@ -0,0 +1,3 @@ +#pragma once + +#include "boringssl.hpp" diff --git a/external/lsquic/include/openssl/crypto.h b/external/lsquic/include/openssl/crypto.h index 5c8ce98..84ee25e 100644 --- a/external/lsquic/include/openssl/crypto.h +++ b/external/lsquic/include/openssl/crypto.h @@ -1,11 +1,3 @@ #pragma once -#if defined(__cplusplus) -#define EXTERN_C extern "C" -#else -#define EXTERN_C -#endif - -EXTERN_C void OPENSSL_free(void *ptr); - -EXTERN_C void CRYPTO_library_init(); +#include "boringssl.hpp" diff --git a/external/lsquic/include/openssl/curve25519.h b/external/lsquic/include/openssl/curve25519.h new file mode 100644 index 0000000..84ee25e --- /dev/null +++ b/external/lsquic/include/openssl/curve25519.h @@ -0,0 +1,3 @@ +#pragma once + +#include "boringssl.hpp" diff --git a/external/lsquic/include/openssl/hkdf.h b/external/lsquic/include/openssl/hkdf.h new file mode 100644 index 0000000..84ee25e --- /dev/null +++ b/external/lsquic/include/openssl/hkdf.h @@ -0,0 +1,3 @@ +#pragma once + +#include "boringssl.hpp" diff --git a/external/lsquic/include/openssl/hmac.h b/external/lsquic/include/openssl/hmac.h new file mode 100644 index 0000000..84ee25e --- /dev/null +++ b/external/lsquic/include/openssl/hmac.h @@ -0,0 +1,3 @@ +#pragma once + +#include "boringssl.hpp" diff --git a/external/lsquic/include/openssl/nid.h b/external/lsquic/include/openssl/nid.h new file mode 100644 index 0000000..6f70f09 --- /dev/null +++ b/external/lsquic/include/openssl/nid.h @@ -0,0 +1 @@ +#pragma once diff --git a/external/lsquic/include/openssl/rand.h b/external/lsquic/include/openssl/rand.h index 06e2505..84ee25e 100644 --- a/external/lsquic/include/openssl/rand.h +++ b/external/lsquic/include/openssl/rand.h @@ -1,12 +1,3 @@ #pragma once -#include -#include - -#if defined(__cplusplus) -#define EXTERN_C extern "C" -#else -#define EXTERN_C -#endif - -EXTERN_C int RAND_bytes(uint8_t *buf, size_t len); +#include "boringssl.hpp" diff --git a/external/lsquic/include/openssl/ssl.h b/external/lsquic/include/openssl/ssl.h new file mode 100644 index 0000000..84ee25e --- /dev/null +++ b/external/lsquic/include/openssl/ssl.h @@ -0,0 +1,3 @@ +#pragma once + +#include "boringssl.hpp" diff --git a/external/lsquic/include/openssl/stack.h b/external/lsquic/include/openssl/stack.h new file mode 100644 index 0000000..6f70f09 --- /dev/null +++ b/external/lsquic/include/openssl/stack.h @@ -0,0 +1 @@ +#pragma once diff --git a/external/lsquic/include/openssl/x509.h b/external/lsquic/include/openssl/x509.h new file mode 100644 index 0000000..84ee25e --- /dev/null +++ b/external/lsquic/include/openssl/x509.h @@ -0,0 +1,3 @@ +#pragma once + +#include "boringssl.hpp" diff --git a/external/lsquic/src/boringssl.cpp b/external/lsquic/src/boringssl.cpp index b7a6403..41678f3 100644 --- a/external/lsquic/src/boringssl.cpp +++ b/external/lsquic/src/boringssl.cpp @@ -1,18 +1,573 @@ -#include +#include +#include +#include #include #include +template +struct LineStub { + template + operator T() { + return (T)line; + } +}; +#define LINE_STUB \ + LineStub<__LINE__> {} + +#define CONST(x) x + +#define TODO std::println("TODO: {}", __FUNCTION__), abort() + +#define IQUIC_TAG_LEN 16 + +struct ssl_st { + enum State { + INIT, + CLIENT_CONNECT, + CLIENT_WRITE_L0, + SERVER_READ_L0, + SERVER_WRITE_L0, + CLIENT_READ_L0, + CLIENT_SET_WL2_RL2, + SERVER_SET_TP, + SERVER_WRITE_L2, + CLIENT_READ_L2, + CLIENT_WRITE_L2, + SERVER_READ_L2, + SERVER_WRITE_L3, + ESTABLISHED, + }; + + void setWriteSecret(ssl_encryption_level_t level) { + uint8_t secret[32]{}; + io->set_write_secret(this, level, nullptr, secret, sizeof(secret)); + } + + void setReadSecret(ssl_encryption_level_t level) { + uint8_t secret[32]{}; + io->set_read_secret(this, level, nullptr, secret, sizeof(secret)); + } + + std::optional client; + std::optional ex_data; + const SSL_QUIC_METHOD *io = nullptr; + std::optional> transport_params; + std::optional> peer_transport_params; + State state = INIT; +}; + inline auto &randomEngine() { static std::default_random_engine random_engine; return random_engine; } -extern "C" int RAND_bytes(uint8_t *buf, size_t len) { +inline void mix(std::span out, std::span in) { + auto n = std::max(out.size(), in.size()); + for (size_t i = 0; i < n; ++i) { + out[i % out.size()] ^= in[i % in.size()]; + } +} + +// clang-format off + +OPENSSL_EXPORT int RAND_bytes(uint8_t *buf, size_t len) { for (auto &byte : std::span{buf, len}) { byte = std::uniform_int_distribution{}(randomEngine()); } - return 1; + return true; +} + +OPENSSL_EXPORT int SHA256_Init(SHA256_CTX *sha) { TODO; } + +OPENSSL_EXPORT int SHA256_Update(SHA256_CTX *sha, const void *data, size_t len) { TODO; } + +OPENSSL_EXPORT int SHA256_Final(uint8_t out[SHA256_DIGEST_LENGTH], SHA256_CTX *sha) { TODO; } + +OPENSSL_EXPORT uint8_t *HMAC(const EVP_MD *evp_md, const void *key, size_t key_len, const uint8_t *data, size_t data_len, uint8_t *out, unsigned int *out_len) { TODO; } + +OPENSSL_EXPORT const EVP_MD *EVP_sha256(void) { + return LINE_STUB; +} + +OPENSSL_EXPORT int HKDF_expand(uint8_t *out_key, size_t out_len, const EVP_MD *digest, const uint8_t *prk, size_t prk_len, const uint8_t *info, size_t info_len) { + memset(out_key, 0, out_len); + mix({out_key, out_len}, {prk, prk_len}); + mix({out_key, out_len}, {info, info_len}); + return true; +} + +OPENSSL_EXPORT void X25519_public_from_private(uint8_t out_public_value[32], const uint8_t private_key[32]) { TODO; } + +OPENSSL_EXPORT int X25519(uint8_t out_shared_key[32], const uint8_t private_key[32], const uint8_t peer_public_value[32]) { TODO; } + +OPENSSL_EXPORT int EVP_AEAD_CTX_seal(const EVP_AEAD_CTX *ctx, uint8_t *out, size_t *out_len, size_t max_out_len, const uint8_t *nonce, size_t nonce_len, const uint8_t *in, size_t in_len, const uint8_t *ad, size_t ad_len) { + NS_ASSERT(max_out_len > IQUIC_TAG_LEN); + *out_len = std::min(in_len + IQUIC_TAG_LEN, max_out_len); + memcpy(out, in, *out_len - IQUIC_TAG_LEN); + memset(out + *out_len - IQUIC_TAG_LEN, 0, IQUIC_TAG_LEN); + return true; +} + +OPENSSL_EXPORT int EVP_AEAD_CTX_open(const EVP_AEAD_CTX *ctx, uint8_t *out, size_t *out_len, size_t max_out_len, const uint8_t *nonce, size_t nonce_len, const uint8_t *in, size_t in_len, const uint8_t *ad, size_t ad_len) { + NS_ASSERT(in_len > IQUIC_TAG_LEN); + *out_len = std::min(in_len - IQUIC_TAG_LEN, max_out_len); + memcpy(out, in, *out_len); + return true; +} + +OPENSSL_EXPORT BIO *BIO_new_mem_buf(const void *buf, ossl_ssize_t len) { TODO; } + +OPENSSL_EXPORT X509 *d2i_X509_bio(BIO *bp, X509 **x509) { TODO; } + +OPENSSL_EXPORT int BIO_free(BIO *bio) { TODO; } + +OPENSSL_EXPORT void EVP_MD_CTX_init(EVP_MD_CTX *ctx) { TODO; } + +OPENSSL_EXPORT int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey) { TODO; } + +OPENSSL_EXPORT int EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *ctx, int padding) { TODO; } + +OPENSSL_EXPORT int EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int salt_len) { TODO; } + +OPENSSL_EXPORT int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *data, size_t len) { TODO; } + +OPENSSL_EXPORT int EVP_DigestSignFinal(EVP_MD_CTX *ctx, uint8_t *out_sig, size_t *out_sig_len) { TODO; } + +OPENSSL_EXPORT int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx) { TODO; } + +OPENSSL_EXPORT int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey) { TODO; } + +OPENSSL_EXPORT int EVP_DigestVerifyUpdate(EVP_MD_CTX *ctx, const void *data, size_t len) { TODO; } + +OPENSSL_EXPORT int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const uint8_t *sig, size_t sig_len) { TODO; } + +OPENSSL_EXPORT void CRYPTO_library_init(void) { +} + +OPENSSL_EXPORT size_t EVP_AEAD_key_length(const EVP_AEAD *aead) { + return CONST(1); +} + +OPENSSL_EXPORT size_t EVP_AEAD_nonce_length(const EVP_AEAD *aead) { + return CONST(1); +} + +OPENSSL_EXPORT int EVP_AEAD_CTX_init_with_direction( EVP_AEAD_CTX *ctx, const EVP_AEAD *aead, const uint8_t *key, size_t key_len, size_t tag_len, enum evp_aead_direction_t dir) { + NS_ASSERT(tag_len == IQUIC_TAG_LEN); + return true; +} + +OPENSSL_EXPORT void EVP_AEAD_CTX_cleanup(EVP_AEAD_CTX *ctx) { +} + +OPENSSL_EXPORT int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, uint8_t *out, int *out_len, const uint8_t *in, int in_len) { + *out_len = in_len; + memcpy(out, in, in_len); + return true; +} + +OPENSSL_EXPORT uint32_t ERR_get_error(void) { TODO; } + +OPENSSL_EXPORT void CRYPTO_chacha_20(uint8_t *out, const uint8_t *in, size_t in_len, const uint8_t key[32], const uint8_t nonce[12], uint32_t counter) { TODO; } + +OPENSSL_EXPORT SSL_SESSION *SSL_SESSION_from_bytes(const uint8_t *in, size_t in_len, const SSL_CTX *ctx) { TODO; } + +OPENSSL_EXPORT int SSL_SESSION_early_data_capable(const SSL_SESSION *session) { TODO; } + +OPENSSL_EXPORT void SSL_SESSION_free(SSL_SESSION *session) { TODO; } + +OPENSSL_EXPORT SSL_CTX *SSL_CTX_new(const SSL_METHOD *method) { + return LINE_STUB; +} + +OPENSSL_EXPORT const SSL_METHOD *TLS_method(void) { + return LINE_STUB; +} + +OPENSSL_EXPORT char *ERR_error_string(uint32_t packed_error, char *buf) { TODO; } + +OPENSSL_EXPORT int SSL_CTX_set_min_proto_version(SSL_CTX *ctx, uint16_t version) { TODO; } + +OPENSSL_EXPORT int SSL_CTX_set_max_proto_version(SSL_CTX *ctx, uint16_t version) { TODO; } + +OPENSSL_EXPORT int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx) { TODO; } + +OPENSSL_EXPORT int SSL_CTX_set_session_cache_mode(SSL_CTX *ctx, int mode) { TODO; } + +OPENSSL_EXPORT void SSL_CTX_sess_set_new_cb( SSL_CTX *ctx, int (*new_session_cb)(SSL *ssl, SSL_SESSION *session)) { TODO; } + +OPENSSL_EXPORT void SSL_CTX_set_custom_verify( SSL_CTX *ctx, int mode, enum ssl_verify_result_t (*callback)(SSL *ssl, uint8_t *out_alert)) { TODO; } + +OPENSSL_EXPORT void SSL_CTX_set_early_data_enabled(SSL_CTX *ctx, int enabled) { TODO; } + +OPENSSL_EXPORT SSL *SSL_new(SSL_CTX *ctx) { + return new SSL{}; +} + +OPENSSL_EXPORT int SSL_set_quic_transport_params(SSL *ssl, const uint8_t *params, size_t params_len) { + NS_ASSERT(not ssl->transport_params.has_value()); + if (ssl->state == SSL::INIT) { + ssl->state = SSL::CLIENT_CONNECT; + } else { + NS_ASSERT(ssl->client.has_value() and not ssl->client.value()); + NS_ASSERT(ssl->state == SSL::SERVER_SET_TP); + ssl->state = SSL::SERVER_WRITE_L2; + } + ssl->transport_params.emplace(params, params + params_len); + return true; +} + +OPENSSL_EXPORT int SSL_set_quic_method(SSL *ssl, const SSL_QUIC_METHOD *quic_method) { + NS_ASSERT(ssl->io == nullptr); + ssl->io = quic_method; + return true; +} + +OPENSSL_EXPORT int SSL_set_alpn_protos(SSL *ssl, const uint8_t *protos, size_t protos_len) { TODO; } + +OPENSSL_EXPORT int SSL_set_tlsext_host_name(SSL *ssl, const char *name) { + return true; +} + +OPENSSL_EXPORT int SSL_set_session(SSL *ssl, SSL_SESSION *session) { TODO; } + +OPENSSL_EXPORT int SSL_set_ex_data(SSL *ssl, int idx, void *data) { + NS_ASSERT(not ssl->ex_data.has_value()); + ssl->ex_data.emplace(data); + return true; } -extern "C" void CRYPTO_library_init() {} +OPENSSL_EXPORT void SSL_set_connect_state(SSL *ssl) { + NS_ASSERT(not ssl->client.has_value()); + NS_ASSERT(ssl->state == SSL::CLIENT_CONNECT); + ssl->client.emplace(true); + ssl->state = SSL::CLIENT_WRITE_L0; +} + +OPENSSL_EXPORT int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx))( SSL *ssl, SSL_SESSION *session) { + return nullptr; +} + +OPENSSL_EXPORT void SSL_CTX_free(SSL_CTX *ctx) { TODO; } + +OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_gcm(void) { + return LINE_STUB; +} + +OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_128_ecb(void) { + return LINE_STUB; +} + +OPENSSL_EXPORT int HKDF_extract(uint8_t *out_key, size_t *out_len, const EVP_MD *digest, const uint8_t *secret, size_t secret_len, const uint8_t *salt, size_t salt_len) { + *out_len = 32; + memset(out_key, 0, *out_len); + mix({out_key, *out_len}, {secret, secret_len}); + mix({out_key, *out_len}, {salt, salt_len}); + return true; +} + +OPENSSL_EXPORT void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *ctx) { +} + +OPENSSL_EXPORT int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl, const uint8_t *key, const uint8_t *iv) { + return true; +} + +OPENSSL_EXPORT int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *ctx) { + return true; +} + +OPENSSL_EXPORT void *SSL_get_ex_data(const SSL *ssl, int idx) { + return ssl->ex_data.value(); +} + +OPENSSL_EXPORT STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *ssl) { TODO; } + +OPENSSL_EXPORT const char *SSL_get_servername(const SSL *ssl, const int type) { TODO; } + +OPENSSL_EXPORT SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx) { TODO; } + +OPENSSL_EXPORT void SSL_set_verify(SSL *ssl, int mode, int (*callback)(int ok, X509_STORE_CTX *store_ctx)) { TODO; } + +OPENSSL_EXPORT int SSL_CTX_get_verify_mode(const SSL_CTX *ctx) { TODO; } + +OPENSSL_EXPORT void SSL_set_verify_depth(SSL *ssl, int depth) { TODO; } + +OPENSSL_EXPORT int SSL_CTX_get_verify_depth(const SSL_CTX *ctx) { TODO; } + +OPENSSL_EXPORT uint32_t SSL_clear_options(SSL *ssl, uint32_t options) { + return 0; +} + +OPENSSL_EXPORT uint32_t SSL_get_options(const SSL *ssl) { TODO; } + +OPENSSL_EXPORT uint32_t SSL_set_options(SSL *ssl, uint32_t options) { TODO; } + +OPENSSL_EXPORT uint32_t SSL_CTX_get_options(const SSL_CTX *ctx) { TODO; } + +OPENSSL_EXPORT int SSL_set_quic_early_data_context(SSL *ssl, const uint8_t *context, size_t context_len) { + return true; +} + +OPENSSL_EXPORT void SSL_set_cert_cb(SSL *ssl, int (*cb)(SSL *ssl, void *arg), void *arg) { TODO; } + +OPENSSL_EXPORT void SSL_set_accept_state(SSL *ssl) { + NS_ASSERT(not ssl->client.has_value()); + NS_ASSERT(ssl->state == SSL::INIT); + ssl->client.emplace(false); + ssl->state = SSL::SERVER_READ_L0; +} + +OPENSSL_EXPORT void SSL_get_peer_quic_transport_params( const SSL *ssl, const uint8_t **out_params, size_t *out_params_len) { + NS_ASSERT(ssl->peer_transport_params.has_value()); + auto &peer_transport_params = ssl->peer_transport_params.value(); + *out_params = peer_transport_params.data(); + *out_params_len = peer_transport_params.size(); +} + +OPENSSL_EXPORT int SSL_SESSION_to_bytes(const SSL_SESSION *in, uint8_t **out_data, size_t *out_len) { TODO; } + +OPENSSL_EXPORT void OPENSSL_free(void *ptr) { TODO; } + +OPENSSL_EXPORT uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *cipher) { + return 0x03000000 | 0x1301; +} + +OPENSSL_EXPORT const EVP_MD *EVP_sha384(void) { TODO; } + +OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_gcm(void) { TODO; } + +OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_256_ecb(void) { TODO; } + +OPENSSL_EXPORT const EVP_AEAD *EVP_aead_chacha20_poly1305(void) { + return LINE_STUB; +} + +OPENSSL_EXPORT int SSL_do_handshake(SSL *ssl) { + auto _write = [&](ssl_encryption_level_t level, std::vector s) { + NS_ASSERT(ssl->io->add_handshake_data(ssl, level, s.data(), s.size()) == 1); + }; + auto write = [&](ssl_encryption_level_t level, std::string_view s) { + _write(level, {s.data(), s.data() + s.size()}); + }; + auto write_tp = [&](ssl_encryption_level_t level) { + NS_ASSERT(ssl->transport_params.has_value()); + auto s = ssl->transport_params.value(); + if (ssl->client.value()) { + NS_ASSERT(s.size() <= 255); + uint8_t chlo[4]{1, 0, 0, (uint8_t)s.size()}; + s.insert_range(s.begin(), chlo); + } + _write(level, s); + }; + NS_ASSERT(ssl->client.has_value()); + switch (ssl->state) { + case SSL::SERVER_READ_L0: + case SSL::CLIENT_READ_L0: + case SSL::CLIENT_READ_L2: + case SSL::SERVER_READ_L2: + return -1; + + case SSL::CLIENT_SET_WL2_RL2: { + ssl->setWriteSecret(ssl_encryption_handshake); + ssl->setReadSecret(ssl_encryption_handshake); + ssl->state = SSL::CLIENT_READ_L2; + return -1; + } + + case SSL::CLIENT_WRITE_L0: { + write_tp(ssl_encryption_initial); + ssl->state = SSL::CLIENT_READ_L0; + break; + } + case SSL::SERVER_WRITE_L0: { + ssl->state = SSL::SERVER_SET_TP; + write(ssl_encryption_initial, "SERVER_WRITE_L0"); + NS_ASSERT(ssl->state == SSL::SERVER_WRITE_L2); + ssl->setWriteSecret(ssl_encryption_handshake); + write_tp(ssl_encryption_handshake); + ssl->setWriteSecret(ssl_encryption_application); + ssl->state = SSL::SERVER_READ_L2; + NS_ASSERT(ssl->io->flush_flight(ssl) == 1); + ssl->setReadSecret(ssl_encryption_handshake); + return -1; + } + case SSL::SERVER_WRITE_L2: + abort(); + case SSL::CLIENT_WRITE_L2: { + write(ssl_encryption_handshake, "CLIENT_WRITE_L2"); + ssl->setWriteSecret(ssl_encryption_application); + ssl->setReadSecret(ssl_encryption_application); + ssl->state = SSL::ESTABLISHED; + break; + } + case SSL::SERVER_WRITE_L3: { + ssl->setReadSecret(ssl_encryption_application); + write(ssl_encryption_application, "SERVER_WRITE_L3"); + ssl->state = SSL::ESTABLISHED; + break; + } + + default: + abort(); + } + NS_ASSERT(ssl->io->flush_flight(ssl) == 1); + return ssl->state == SSL::ESTABLISHED ? true : -1; +} + +OPENSSL_EXPORT int SSL_get_error(const SSL *ssl, int ret_code) { + switch (ssl->state) { + case SSL::CLIENT_WRITE_L0: + case SSL::SERVER_WRITE_L0: + case SSL::SERVER_WRITE_L2: + case SSL::CLIENT_WRITE_L2: + case SSL::SERVER_WRITE_L3: + return SSL_ERROR_WANT_WRITE; + case SSL::SERVER_READ_L0: + case SSL::CLIENT_READ_L0: + case SSL::CLIENT_READ_L2: + case SSL::SERVER_READ_L2: + return SSL_ERROR_WANT_READ; + default: + abort(); + } +} + +OPENSSL_EXPORT void SSL_reset_early_data_reject(SSL *ssl) { TODO; } + +OPENSSL_EXPORT int SSL_in_early_data(const SSL *ssl) { + return false; +} + +OPENSSL_EXPORT int SSL_process_quic_post_handshake(SSL *ssl) { + return true; +} + +OPENSSL_EXPORT void SSL_free(SSL *ssl) { + delete ssl; +} + +OPENSSL_EXPORT int SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused *unused, CRYPTO_EX_dup *dup_unused, CRYPTO_EX_free *free_func) { + return LINE_STUB; +} + +OPENSSL_EXPORT STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain) { TODO; } + +OPENSSL_EXPORT const SSL_CIPHER *SSL_get_current_cipher(const SSL *ssl) { + return nullptr; +} + +OPENSSL_EXPORT const char *SSL_CIPHER_get_name(const SSL_CIPHER *cipher) { + NS_ASSERT(cipher == nullptr); + return "TLS_AES_128_GCM_SHA256"; +} + +OPENSSL_EXPORT int SSL_in_init(const SSL *ssl) { + return ssl->state != SSL::ESTABLISHED; +} + +OPENSSL_EXPORT int SSL_provide_quic_data(SSL *ssl, enum ssl_encryption_level_t level, const uint8_t *data, size_t len) { + auto set_tp = [&] { + NS_ASSERT(not ssl->peer_transport_params.has_value()); + auto client = ssl->client.value(); + auto i = client ? 0 : 4; + auto n = len - i; + ssl->peer_transport_params.emplace(data + i, data + i + n); + }; + switch (ssl->state) { + case SSL::SERVER_READ_L0: { + NS_ASSERT(level == ssl_encryption_initial); + set_tp(); + ssl->state = SSL::SERVER_WRITE_L0; + break; + } + case SSL::CLIENT_READ_L0: { + NS_ASSERT(level == ssl_encryption_initial); + ssl->state = SSL::CLIENT_SET_WL2_RL2; + break; + } + case SSL::CLIENT_READ_L2: { + NS_ASSERT(level == ssl_encryption_handshake); + set_tp(); + ssl->state = SSL::CLIENT_WRITE_L2; + break; + } + case SSL::SERVER_READ_L2: { + ssl->state = SSL::SERVER_WRITE_L3; + break; + } + default: + abort(); + } + return true; +} + +OPENSSL_EXPORT int SSL_CIPHER_get_bits(const SSL_CIPHER *cipher, int *out_alg_bits) { + NS_ASSERT(cipher == nullptr); + *out_alg_bits = 128; + return 128; +} + +OPENSSL_EXPORT void SSL_get0_alpn_selected(const SSL *ssl, const uint8_t **out_data, unsigned *out_len) { TODO; } + +OPENSSL_EXPORT int SSL_send_fatal_alert(SSL *ssl, uint8_t alert) { TODO; } + +OPENSSL_EXPORT int EVP_AEAD_CTX_init(EVP_AEAD_CTX *ctx, const EVP_AEAD *aead, const uint8_t *key, size_t key_len, size_t tag_len, ENGINE *impl) { + NS_ASSERT(tag_len == IQUIC_TAG_LEN); + return true; +} + +OPENSSL_EXPORT X509_NAME *X509_get_subject_name(const X509 *x509) { TODO; } + +OPENSSL_EXPORT char *X509_NAME_oneline(const X509_NAME *name, char *buf, int size) { TODO; } + +OPENSSL_EXPORT int SSL_CTX_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused *unused, CRYPTO_EX_dup *dup_unused, CRYPTO_EX_free *free_func) { + return LINE_STUB; +} + +OPENSSL_EXPORT int SSL_CTX_get0_chain_certs(const SSL_CTX *ctx, STACK_OF(X509) **out_chain) { TODO; } + +OPENSSL_EXPORT int i2d_X509(X509 *x509, uint8_t **outp) { TODO; } + +OPENSSL_EXPORT int SSL_CTX_set_ex_data(SSL_CTX *ctx, int idx, void *data) { TODO; } + +OPENSSL_EXPORT EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx) { TODO; } + +OPENSSL_EXPORT int EVP_PKEY_size(const EVP_PKEY *pkey) { TODO; } + +OPENSSL_EXPORT void *SSL_CTX_get_ex_data(const SSL_CTX *ctx, int idx) { TODO; } + +OPENSSL_EXPORT X509_NAME *X509_get_issuer_name(const X509 *x509) { TODO; } + +OPENSSL_EXPORT int X509_NAME_get0_der(X509_NAME *name, const uint8_t **out_der, size_t *out_der_len) { TODO; } + +OPENSSL_EXPORT ASN1_INTEGER *X509_get_serialNumber(X509 *x509) { TODO; } + +OPENSSL_EXPORT BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn) { TODO; } + +OPENSSL_EXPORT unsigned BN_num_bytes(const BIGNUM *bn) { TODO; } + +OPENSSL_EXPORT void BN_free(BIGNUM *bn) { TODO; } + +OPENSSL_EXPORT size_t BN_bn2bin(const BIGNUM *in, uint8_t *out) { TODO; } + +OPENSSL_EXPORT X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx) { TODO; } + +OPENSSL_EXPORT EVP_PKEY *X509_get_pubkey(const X509 *x509) { TODO; } + +OPENSSL_EXPORT void EVP_PKEY_free(EVP_PKEY *pkey) { TODO; } + +OPENSSL_EXPORT void X509_free(X509 *x509) { TODO; } + +OPENSSL_EXPORT X509 *PEM_read_bio_X509(BIO *bp, X509 **x, pem_password_cb *cb, void *u) { TODO; } + +OPENSSL_EXPORT size_t sk_X509_num(const STACK_OF_X509 *sk) { TODO; } + +OPENSSL_EXPORT X509 *sk_X509_value(const STACK_OF_X509 *sk, size_t i) { TODO; } + +OPENSSL_EXPORT STACK_OF_X509 *sk_X509_new_null(void) { TODO; } + +OPENSSL_EXPORT size_t sk_X509_push(STACK_OF_X509 *sk, X509 *p) { TODO; } + +OPENSSL_EXPORT void sk_X509_free(STACK_OF_X509 *sk) { TODO; } diff --git a/external/lsquic/src/lsquic-ns3.cpp b/external/lsquic/src/lsquic-ns3.cpp index b4118f6..206fa53 100644 --- a/external/lsquic/src/lsquic-ns3.cpp +++ b/external/lsquic/src/lsquic-ns3.cpp @@ -34,70 +34,7 @@ namespace ns3 { constexpr std::chrono::seconds kIdleTimeout{5}; struct LsquicCertificate { - static constexpr std::array kAlpn{3, 'n', 's', '3'}; - - static void setRelativeTime(ASN1_TIME *o_time, auto delta) { - NS_ASSERT(X509_gmtime_adj( - o_time, - std::chrono::duration_cast(delta).count())); - } - - LsquicCertificate() : ctx_{SSL_CTX_new(TLS_method())} { - static FILE *keylog = [] { - FILE *f = nullptr; - if (auto *path = getenv("SSLKEYLOGFILE")) { - f = fopen(path, "a"); - setvbuf(f, nullptr, _IOLBF, 0); - } - return f; - }(); - if (keylog) { - SSL_CTX_set_keylog_callback( - ctx_.get(), +[](const SSL *, const char *line) { - fputs(line, keylog); - fputc('\n', keylog); - }); - } - NS_ASSERT(SSL_CTX_set_alpn_protos(ctx_.get(), kAlpn.data(), kAlpn.size()) - == 0); - SSL_CTX_set_alpn_select_cb(ctx_.get(), alpn, this); - SSL_CTX_set_min_proto_version(ctx_.get(), TLS1_3_VERSION); - SSL_CTX_set_max_proto_version(ctx_.get(), TLS1_3_VERSION); - std::array prefs{SSL_SIGN_ED25519}; - NS_ASSERT(SSL_CTX_set_signing_algorithm_prefs( - ctx_.get(), prefs.data(), prefs.size())); - NS_ASSERT(SSL_CTX_set_verify_algorithm_prefs( - ctx_.get(), prefs.data(), prefs.size())); - bssl::UniquePtr x509(X509_new()); - setRelativeTime(X509_getm_notBefore(x509.get()), -std::chrono::days{1}); - setRelativeTime(X509_getm_notAfter(x509.get()), std::chrono::years{1}); - bssl::UniquePtr pkey_ctx( - EVP_PKEY_CTX_new_id(EVP_PKEY_ED25519, nullptr)); - NS_ASSERT(EVP_PKEY_keygen_init(pkey_ctx.get())); - EVP_PKEY *_pkey = nullptr; - NS_ASSERT(EVP_PKEY_keygen(pkey_ctx.get(), &_pkey)); - bssl::UniquePtr pkey{_pkey}; - NS_ASSERT(SSL_CTX_use_PrivateKey(ctx_.get(), pkey.get())); - NS_ASSERT(X509_set_pubkey(x509.get(), pkey.get())); - NS_ASSERT(X509_sign(x509.get(), pkey.get(), nullptr)); - NS_ASSERT(SSL_CTX_use_certificate(ctx_.get(), x509.get())); - } - - static int alpn(ssl_st *ssl, - const unsigned char **out, - unsigned char *outlen, - const unsigned char *in, - unsigned int inlen, - void *) { - uint8_t *out2 = nullptr; - int r = SSL_select_next_proto( - &out2, outlen, in, inlen, kAlpn.data(), kAlpn.size()); - *out = out2; - return r == OPENSSL_NPN_NEGOTIATED ? SSL_TLSEXT_ERR_OK - : SSL_TLSEXT_ERR_ALERT_FATAL; - } - - bssl::UniquePtr ctx_; + ssl_ctx_st *ctx_{SSL_CTX_new(TLS_method())}; }; class LsquicSocket; @@ -622,7 +559,7 @@ namespace ns3 { ssl_ctx_st *LsquicEngine::ea_get_ssl_ctx(void *void_self, const sockaddr *) { LsquicEngine *self = static_cast(void_self); - return self->factory_->certificate_.ctx_.get(); + return self->factory_->certificate_.ctx_; } int LsquicEngine::ea_packets_out(void *void_self,

?>uP_F*dS4Fp$@W$%M-62mMJjg!e@w=zLe`=tAf`N_zB7;|q=S*_@krx@68@?p z1>2=#$_$~iuf(fTn9Y5!;~1H`rL<0-_5MvWPAn{3C+H0DDSkXsiiMJ&uX8Zut2v#M zEERb~cyoBgi8VCa_Y1r1n_ObX4jLHpc)vOp+P=khu+{GDNrc6yn(M1Ozo+yDDqg_0xbSVmvfnzHnLZNA6yd_ z8{p^{Fmt>=w8y3xWj;`MP#h~iw(s+0CF{6U>ozrVtry1~E$fdQF31fM8P!_d+QPp) ztX5E?db1c-Ujd*)Pf9qg`GgY`pQQ{#wa(teU67e+@V;o*MI1b6Q@ehH3~J^b^p0bp z4%u)SkuUg0*~Z)kg=-Dti2K;7h7N(4vPb2ZqQ|oWc+VbaoMn?M zEUht7l+O1d0pUFQra9tpmPX7ZexLBiUzw^hjt@c;#N$OLK5Q@L|Wr?8U%cHBC?7 zPI@Z(vZ}e?$@^44a^q$<2!Xw}l9b*o^jeVOWQQmrJEEo^q9^esg+){n2*xE|?LRQ$ z7aq^9=ULn#df4_1VmFXEp$*)WJ``>V7Jld$Cw2Ikq-57y%eYgYBPS*F{PDjqNq{0y z2^~B3-31J1Oy$+6h*UHLkpCr{h6?e6@9K0gQXTl9%<mdT@~u`*k-Qt;8D5x_9cAaA#~mZ#k5^cW6|X>;8mN3DkoF(6%ek(%uCDscGU@ z9rM6_yB}DkshwSZ)6ijdzt>?>`*#7bWTbW*H93Hms& zWEq=;CS0qTz=pSV1ZAuP{@pT6m8;c)B#x1PhpYOFjXzAk>p79-`-VplSU^HVwV?$V wpXF(Ci7X#Txmd`D1~dfFHGq+ov_gKyCC|&^+VDzNZc>tBksMI!UAAz>3yn8E zudjrx{Iut|%@t9gFq3*X(}NguyO5u;qI1<2Jdx#|@a4|W;J?v9?3!VwAySL}FSWnA zRiS8V(sx<;m!8Q^Zj%KQ*V!#zk~Ys3Xv;Js&!7_?my&d)4#(8Gdz`iD1{uENvcrYu zi&;KZ6M&8bxmi=;l66=860y$u>$ikoH340}q}k)0rYw8kqxr9HO|bOZxN5;w@xPj% zzd2tG^q4v^QRHV_;Dn8H{)Q{Q41QXftTI(UFbL-1y{G_NT2@Zz#sVae|F#1`b=n9KzkjxV;V*?PpZ zFLhk1tny{rlJz*c(ra9>u*Dk+!#J-HjK9_WF!KZEF>ix8l`QP2e9jVV)j`z)4pZ52fZSQG)_dlnP zv#+h6u+Lt=F+PaJ#nmq|Y}(<(eNz}h_62DuuwG@*?zJs&2o~%8AMdepNnM!C(FTQI zL5HqY3vJyd#s92i+3p_0#BAG6r%%Ur@_Vy>j`WzM+W$OWa{*Xw4cdjQ*NuvY*8 literal 0 HcmV?d00001 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/input/256.100.1/fb-req.out.256.100.1 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/input/256.100.1/fb-req.out.256.100.1 new file mode 100644 index 0000000000000000000000000000000000000000..5546ec5e6a8b5ee14425f09a5db4083d6283a347 GIT binary patch literal 4319 zcmeHKc~H|=9uH?gR^&#MtFc@q7KOrUg#?gb5m<;2L}&;%$kC!M$Poya%4N7#L|hI7 zise?yrJQoa0|<9Oj$jB-IV1rS2;^vBoi5#Www<=lbf&&P-kW*9nctiD{aoJ%0PGAt z-b@7m;5qIcjb^X~GALozL>5C;_lTgQ#4_gLJzIAHeG8Q7CY)AVr z-nf{mm(zBe6u%;9yjF2|4FB|&U3$rd${NFZBBMy3Xc8u8*k!r*;lfgVG5xkOTY>Yh zg2~hOK$+igYjkYfUTcf%*2{ZZH9sz}3z}8B>Q;+H-h`sW^Yjm8mxY3Z*$2|Q9e_x? z$n6yp)$GXJS_a5RAggn=%H{XFi5{?mv6wE7&(ti3>>s#;L3Dz%(wN5xL(^5otm?ay zQW31qxRBFF14bJpQf;xO=9!Wh$k{Aii!*dtD6#)PSKpaot^f12=eHd3?uY!m6)h0c zPn3Y)`foi;9UmmCWI!G9(!`FYU~9?uSioHuJI@u}jT%?=y`lE*Pyqmd|4X45I5&mQ zH4-?R*cE@ne@_zO%pN?`f>Ilc+k3a*{LuxoxeBK5XM@GD)}|0p(vaL!Ud^l$Zz6+> zN%9?VaR3V@lUEWm>OFwSQ39noG;D;cqiHjp%An2gfaBDSwOOAda>`Hi&<8Ywn9h0} zeX?A|{v6hNOsVPcRC$WQ3y)Wj!FCpOeV*R!VW)@cW`9$m~W?>(DJNb_CG zK5j()XlpaP(ou0%qfv$_Jq3;!vE8Cy6MA)OMre=)lfAMm*dhs2aNXAdclbho=30o@ zLiJwOez#Zom=3t33srY;T5OpGlhW3QpA$F?0W_03;Gk-ROpy8uzeSqN7iGg{+5Dqs zz=`uC7?OnKB=YtSYd!F(V$XHu^zut6Mqo_BA~3e^V>M6iPr5u#O&FyU{0yiPlBu|DZM{?|uJ>&BiJfVw29^uvG$65zSXAyA|zKV#EiIBq96>rtvY|i~mfU`*S*7eT`B#HOvGJg!A|B@_5B(N2w1C_(>+Wb79g?OBH0Y>kR z;|j22C!0Lm5@nSa?t;QWQI;7$u@fjMT4EBJ`ICJx=KqG@4>A(w$!J1^C!^{e86_-1 z<7Jb|aS3VZMWsX|4CTfcAWFUJp93dAZ=5AOh6TMeRc znJ;bXTMnhkI26Nu0`GmnKhw1SDOH{MjwwTL=_Zj3=gThEz|!C9Zimr&XKp**S`#U^xlypQ43 ze=4GXs$0iCEEB)&;(azW8F&^iZ)82=T#j9KZ7w}RYP+heu)ZAtE4yr6Hf@*RpW+Xw zt!R-nOX{(=h&~)|9NCrY^FeEW&cyg7tpNc5zG+b&>7};&mH5rF!haX0$IFCBg{Ucr z?O$@&%hj}wD^Fduv&|UeR$*58h^UTxchsu6Zd{5i)}3|QPs$m}(BYWqU#o3Nv^KT$ z;f!%9Qlsv}YQm;bBHn>J&yG7ox*vz_r;xWyby%`Oa zg!zei^5RV0>_x?+!IfmP<~0CjN6vpl*YLq)ciM!V=?AwH;kn(uJ<;&_Ux&Mxtuy5J zq4^<<|CBA|FBya=&mii=qT#Q99Z$sX(x({~)RRLQOe-l~Lmz^^d=&ko2hJ0lp&FA( nQW9`wh}Yz4+d8X?0Qhv(k-;PRXq2ScF@X=d|2KTfU literal 0 HcmV?d00001 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/input/256.100.1/fb-resp.out.256.100.1 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/input/256.100.1/fb-resp.out.256.100.1 new file mode 100644 index 0000000000000000000000000000000000000000..7cfab171fd43d84889b14258d20832b4b6a5cf31 GIT binary patch literal 4846 zcmZQz00TxK`ICV`pYhX{jcXN?x8tqZqbIl8!B$H{GWV3Ppjr^oT4GuGXBVQ9Bfermg6 zLW=ID2Mqj+gMC-Zl!(V$HTzDR{$DPnSzu0mygs9WuKujEiGg4vg|#y6OIaB9EO0H* zyTg4d>EeD!7=THg3|I&-oWkMm44AWF+L(ZhGb~LE$IhFa$Y)4-^RB-1DbV2l$7lfcFEaxJ zb23|Fyxac|OcOTs-4fcQqcmU3!=&%g#0wSgY8OnC+OnpbWBI91J*_>@U+v`gny-CY zQe|aT*HpXkDJeSX_Mxw|LVm_2&&%T4@Jd#0Qj%hk98l_Aws6J^jW<58uY|1pwCA|Z z6;YrtlX^JQgBWwWke{)lbJZ3+k>#H7<<8IGztKVLnqj6PQj7jCwZFPmp=fH-cUk$D zp2<#blLZsk*)3j@HqRAk%QPd;pc5XKl60jG$JDxeoVDo&8NTDP!-eLHSw2-0fQ|#X zSySPXbyxiovCjJIw}f9c0bReO+2ft2EPLOh`LAwGu=LuvYQa_UznY)FIbRL*m^v|0 z;=s$NnEVFQU|EtzvXrY=w?Q$`{mK zckryo|F#vc1ybhhM-(H+&Xjm={$9UcLfzco)_qFq$?orMlV5&U&oq5%A7Fcd@#6k; z-=F%It3&Ijy=tG3b$8D_ZO)^P)&Hy*Q{OL|?`u_C_3>SmghG4}i;JsYB(^L7DiY#7 zRxYUvlR4U;@GI!hwQ8ZQ+obrPl`PxcW0;t2+v)V_*iL?L*3Xe1lT`bk$7@c4sMXze zqk*AzWo+w$$CKl2+5H1TJpKKG<7KCL)-3I7erF1; z>K@Uo^7L2G;x#Sv4*k{iUEy_2e8&ruX3u&^2?Z&Zrrt66tHH2xN~wkd0~doh19t<{ zj4k=F;sr=6{)PnlZ{#pfMGkVPVisWDbmnXt&6^`JZ#D`DHV7f*y|q?3ZaIagrHYDt z9#niOo_g_+Q1$k}sUCbYItNGD#<2-i%@IU@5tyHegnljxGKZOc-c9!r5BQT z)ogt#qZj<{W!Z3b`CBJHYk`o1S*elliD@V3`hxboeFcjAxDJ-;A)dzoIK;lgb-((Bab|1W>vQSkH#3v=Gi1{E;Tg?kBQlpYHVB~BFUO^CnD6wxwmbIV{lxo;9hY}~t~Tbg zl}oO6D*Wg6Efqo;e@(*^(Seif;2U;e#%XT89YZMJzKXQ+18mLFbs9Cclz=3-eL%38GWXK5s#*eOg literal 0 HcmV?d00001 diff --git a/external/lsquic/src/liblsquic/ls-qpack/fuzz/input/256.100.1/netbsd.out.256.100.1 b/external/lsquic/src/liblsquic/ls-qpack/fuzz/input/256.100.1/netbsd.out.256.100.1 new file mode 100644 index 0000000000000000000000000000000000000000..7e4918fec579069562c6e8f9b798c513c553d35d GIT binary patch literal 2409 zcmZQz00TxKd4Pf8;n#-#i znI8NOp17)T{Z^YD*KbWL-*NkN^Y36m&ns^@7#WxtR<>Ld3;vn7eL8zQ-v-Z`rJa|3 z<(=2<;&EJZd}Y7!vRU@`XJ!17ExnM$t7hv{xvYQR1;+A!`yzh+e#;s@g7 zOVqyK4y?E11-fS6T>UG^>9oV8czp)NS1Xoy_J?=83c9x8g?Z8c|MI%)4xaV+-?rkl zK+2r`&mmp`limlA{qbLc5^q3_WdhRq%#9bX2?TZ|W${bAi0N<_jOXhEda+4SK3=Eh z@3#i-c03-4oj6x>-D94Lj}NQ5W?WQyzA4Qf(@!{k#0ZKa5MT!4c$Nl)JK`7FH{7L} zy?p;Uk)s6c1O^5cARWO9bVNg7Uy}0`lNnzXJNX0OIQU;P4HCN?DO*i(I`U>1_poOh$KwIq&&K9|?JYKUC&k*;u{$7vMw{6JgN1i(Sx56x)ZnLUT& zmloI4Bd7&{)`v5KgSr=z%-vcpz69nm8U?Z-(7seAa3D{Cq_p;XFWy9DvnzH7VGZRO z=vAlMf{%TzCtB)Bs6hqO(HjszSAc*J5GOD' ( 62) + { 0x3fc, 10}, // '?' ( 63) + { 0x1ffa, 13}, // '@' ( 64) + { 0x21, 6}, // 'A' ( 65) + { 0x5d, 7}, // 'B' ( 66) + { 0x5e, 7}, // 'C' ( 67) + { 0x5f, 7}, // 'D' ( 68) + { 0x60, 7}, // 'E' ( 69) + { 0x61, 7}, // 'F' ( 70) + { 0x62, 7}, // 'G' ( 71) + { 0x63, 7}, // 'H' ( 72) + { 0x64, 7}, // 'I' ( 73) + { 0x65, 7}, // 'J' ( 74) + { 0x66, 7}, // 'K' ( 75) + { 0x67, 7}, // 'L' ( 76) + { 0x68, 7}, // 'M' ( 77) + { 0x69, 7}, // 'N' ( 78) + { 0x6a, 7}, // 'O' ( 79) + { 0x6b, 7}, // 'P' ( 80) + { 0x6c, 7}, // 'Q' ( 81) + { 0x6d, 7}, // 'R' ( 82) + { 0x6e, 7}, // 'S' ( 83) + { 0x6f, 7}, // 'T' ( 84) + { 0x70, 7}, // 'U' ( 85) + { 0x71, 7}, // 'V' ( 86) + { 0x72, 7}, // 'W' ( 87) + { 0xfc, 8}, // 'X' ( 88) + { 0x73, 7}, // 'Y' ( 89) + { 0xfd, 8}, // 'Z' ( 90) + { 0x1ffb, 13}, // '[' ( 91) + { 0x7fff0, 19}, // '\' ( 92) + { 0x1ffc, 13}, // ']' ( 93) + { 0x3ffc, 14}, // '^' ( 94) + { 0x22, 6}, // '_' ( 95) + { 0x7ffd, 15}, // '`' ( 96) + { 0x3, 5}, // 'a' ( 97) + { 0x23, 6}, // 'b' ( 98) + { 0x4, 5}, // 'c' ( 99) + { 0x24, 6}, // 'd' (100) + { 0x5, 5}, // 'e' (101) + { 0x25, 6}, // 'f' (102) + { 0x26, 6}, // 'g' (103) + { 0x27, 6}, // 'h' (104) + { 0x6, 5}, // 'i' (105) + { 0x74, 7}, // 'j' (106) + { 0x75, 7}, // 'k' (107) + { 0x28, 6}, // 'l' (108) + { 0x29, 6}, // 'm' (109) + { 0x2a, 6}, // 'n' (110) + { 0x7, 5}, // 'o' (111) + { 0x2b, 6}, // 'p' (112) + { 0x76, 7}, // 'q' (113) + { 0x2c, 6}, // 'r' (114) + { 0x8, 5}, // 's' (115) + { 0x9, 5}, // 't' (116) + { 0x2d, 6}, // 'u' (117) + { 0x77, 7}, // 'v' (118) + { 0x78, 7}, // 'w' (119) + { 0x79, 7}, // 'x' (120) + { 0x7a, 7}, // 'y' (121) + { 0x7b, 7}, // 'z' (122) + { 0x7ffe, 15}, // '{' (123) + { 0x7fc, 11}, // '|' (124) + { 0x3ffd, 14}, // '}' (125) + { 0x1ffd, 13}, // '~' (126) + { 0xffffffc, 28}, // (127) + { 0xfffe6, 20}, // (128) + { 0x3fffd2, 22}, // (129) + { 0xfffe7, 20}, // (130) + { 0xfffe8, 20}, // (131) + { 0x3fffd3, 22}, // (132) + { 0x3fffd4, 22}, // (133) + { 0x3fffd5, 22}, // (134) + { 0x7fffd9, 23}, // (135) + { 0x3fffd6, 22}, // (136) + { 0x7fffda, 23}, // (137) + { 0x7fffdb, 23}, // (138) + { 0x7fffdc, 23}, // (139) + { 0x7fffdd, 23}, // (140) + { 0x7fffde, 23}, // (141) + { 0xffffeb, 24}, // (142) + { 0x7fffdf, 23}, // (143) + { 0xffffec, 24}, // (144) + { 0xffffed, 24}, // (145) + { 0x3fffd7, 22}, // (146) + { 0x7fffe0, 23}, // (147) + { 0xffffee, 24}, // (148) + { 0x7fffe1, 23}, // (149) + { 0x7fffe2, 23}, // (150) + { 0x7fffe3, 23}, // (151) + { 0x7fffe4, 23}, // (152) + { 0x1fffdc, 21}, // (153) + { 0x3fffd8, 22}, // (154) + { 0x7fffe5, 23}, // (155) + { 0x3fffd9, 22}, // (156) + { 0x7fffe6, 23}, // (157) + { 0x7fffe7, 23}, // (158) + { 0xffffef, 24}, // (159) + { 0x3fffda, 22}, // (160) + { 0x1fffdd, 21}, // (161) + { 0xfffe9, 20}, // (162) + { 0x3fffdb, 22}, // (163) + { 0x3fffdc, 22}, // (164) + { 0x7fffe8, 23}, // (165) + { 0x7fffe9, 23}, // (166) + { 0x1fffde, 21}, // (167) + { 0x7fffea, 23}, // (168) + { 0x3fffdd, 22}, // (169) + { 0x3fffde, 22}, // (170) + { 0xfffff0, 24}, // (171) + { 0x1fffdf, 21}, // (172) + { 0x3fffdf, 22}, // (173) + { 0x7fffeb, 23}, // (174) + { 0x7fffec, 23}, // (175) + { 0x1fffe0, 21}, // (176) + { 0x1fffe1, 21}, // (177) + { 0x3fffe0, 22}, // (178) + { 0x1fffe2, 21}, // (179) + { 0x7fffed, 23}, // (180) + { 0x3fffe1, 22}, // (181) + { 0x7fffee, 23}, // (182) + { 0x7fffef, 23}, // (183) + { 0xfffea, 20}, // (184) + { 0x3fffe2, 22}, // (185) + { 0x3fffe3, 22}, // (186) + { 0x3fffe4, 22}, // (187) + { 0x7ffff0, 23}, // (188) + { 0x3fffe5, 22}, // (189) + { 0x3fffe6, 22}, // (190) + { 0x7ffff1, 23}, // (191) + { 0x3ffffe0, 26}, // (192) + { 0x3ffffe1, 26}, // (193) + { 0xfffeb, 20}, // (194) + { 0x7fff1, 19}, // (195) + { 0x3fffe7, 22}, // (196) + { 0x7ffff2, 23}, // (197) + { 0x3fffe8, 22}, // (198) + { 0x1ffffec, 25}, // (199) + { 0x3ffffe2, 26}, // (200) + { 0x3ffffe3, 26}, // (201) + { 0x3ffffe4, 26}, // (202) + { 0x7ffffde, 27}, // (203) + { 0x7ffffdf, 27}, // (204) + { 0x3ffffe5, 26}, // (205) + { 0xfffff1, 24}, // (206) + { 0x1ffffed, 25}, // (207) + { 0x7fff2, 19}, // (208) + { 0x1fffe3, 21}, // (209) + { 0x3ffffe6, 26}, // (210) + { 0x7ffffe0, 27}, // (211) + { 0x7ffffe1, 27}, // (212) + { 0x3ffffe7, 26}, // (213) + { 0x7ffffe2, 27}, // (214) + { 0xfffff2, 24}, // (215) + { 0x1fffe4, 21}, // (216) + { 0x1fffe5, 21}, // (217) + { 0x3ffffe8, 26}, // (218) + { 0x3ffffe9, 26}, // (219) + { 0xffffffd, 28}, // (220) + { 0x7ffffe3, 27}, // (221) + { 0x7ffffe4, 27}, // (222) + { 0x7ffffe5, 27}, // (223) + { 0xfffec, 20}, // (224) + { 0xfffff3, 24}, // (225) + { 0xfffed, 20}, // (226) + { 0x1fffe6, 21}, // (227) + { 0x3fffe9, 22}, // (228) + { 0x1fffe7, 21}, // (229) + { 0x1fffe8, 21}, // (230) + { 0x7ffff3, 23}, // (231) + { 0x3fffea, 22}, // (232) + { 0x3fffeb, 22}, // (233) + { 0x1ffffee, 25}, // (234) + { 0x1ffffef, 25}, // (235) + { 0xfffff4, 24}, // (236) + { 0xfffff5, 24}, // (237) + { 0x3ffffea, 26}, // (238) + { 0x7ffff4, 23}, // (239) + { 0x3ffffeb, 26}, // (240) + { 0x7ffffe6, 27}, // (241) + { 0x3ffffec, 26}, // (242) + { 0x3ffffed, 26}, // (243) + { 0x7ffffe7, 27}, // (244) + { 0x7ffffe8, 27}, // (245) + { 0x7ffffe9, 27}, // (246) + { 0x7ffffea, 27}, // (247) + { 0x7ffffeb, 27}, // (248) + { 0xffffffe, 28}, // (249) + { 0x7ffffec, 27}, // (250) + { 0x7ffffed, 27}, // (251) + { 0x7ffffee, 27}, // (252) + { 0x7ffffef, 27}, // (253) + { 0x7fffff0, 27}, // (254) + { 0x3ffffee, 26}, // (255) + { 0x3fffffff, 30} // EOS (256) +}; + + +struct decode_el +{ + uint8_t state; + uint8_t flags; + uint8_t sym; +}; + +static const struct decode_el decode_tables[256][16] = +{ + /* 0 */ + { + { 4, 0x00, 0 }, + { 5, 0x00, 0 }, + { 7, 0x00, 0 }, + { 8, 0x00, 0 }, + { 11, 0x00, 0 }, + { 12, 0x00, 0 }, + { 16, 0x00, 0 }, + { 19, 0x00, 0 }, + { 25, 0x00, 0 }, + { 28, 0x00, 0 }, + { 32, 0x00, 0 }, + { 35, 0x00, 0 }, + { 42, 0x00, 0 }, + { 49, 0x00, 0 }, + { 57, 0x00, 0 }, + { 64, 0x01, 0 }, + }, + /* 1 */ + { + { 0, 0x03, 48 }, + { 0, 0x03, 49 }, + { 0, 0x03, 50 }, + { 0, 0x03, 97 }, + { 0, 0x03, 99 }, + { 0, 0x03, 101 }, + { 0, 0x03, 105 }, + { 0, 0x03, 111 }, + { 0, 0x03, 115 }, + { 0, 0x03, 116 }, + { 13, 0x00, 0 }, + { 14, 0x00, 0 }, + { 17, 0x00, 0 }, + { 18, 0x00, 0 }, + { 20, 0x00, 0 }, + { 21, 0x00, 0 }, + }, + /* 2 */ + { + { 1, 0x02, 48 }, + { 22, 0x03, 48 }, + { 1, 0x02, 49 }, + { 22, 0x03, 49 }, + { 1, 0x02, 50 }, + { 22, 0x03, 50 }, + { 1, 0x02, 97 }, + { 22, 0x03, 97 }, + { 1, 0x02, 99 }, + { 22, 0x03, 99 }, + { 1, 0x02, 101 }, + { 22, 0x03, 101 }, + { 1, 0x02, 105 }, + { 22, 0x03, 105 }, + { 1, 0x02, 111 }, + { 22, 0x03, 111 }, + }, + /* 3 */ + { + { 2, 0x02, 48 }, + { 9, 0x02, 48 }, + { 23, 0x02, 48 }, + { 40, 0x03, 48 }, + { 2, 0x02, 49 }, + { 9, 0x02, 49 }, + { 23, 0x02, 49 }, + { 40, 0x03, 49 }, + { 2, 0x02, 50 }, + { 9, 0x02, 50 }, + { 23, 0x02, 50 }, + { 40, 0x03, 50 }, + { 2, 0x02, 97 }, + { 9, 0x02, 97 }, + { 23, 0x02, 97 }, + { 40, 0x03, 97 }, + }, + /* 4 */ + { + { 3, 0x02, 48 }, + { 6, 0x02, 48 }, + { 10, 0x02, 48 }, + { 15, 0x02, 48 }, + { 24, 0x02, 48 }, + { 31, 0x02, 48 }, + { 41, 0x02, 48 }, + { 56, 0x03, 48 }, + { 3, 0x02, 49 }, + { 6, 0x02, 49 }, + { 10, 0x02, 49 }, + { 15, 0x02, 49 }, + { 24, 0x02, 49 }, + { 31, 0x02, 49 }, + { 41, 0x02, 49 }, + { 56, 0x03, 49 }, + }, + /* 5 */ + { + { 3, 0x02, 50 }, + { 6, 0x02, 50 }, + { 10, 0x02, 50 }, + { 15, 0x02, 50 }, + { 24, 0x02, 50 }, + { 31, 0x02, 50 }, + { 41, 0x02, 50 }, + { 56, 0x03, 50 }, + { 3, 0x02, 97 }, + { 6, 0x02, 97 }, + { 10, 0x02, 97 }, + { 15, 0x02, 97 }, + { 24, 0x02, 97 }, + { 31, 0x02, 97 }, + { 41, 0x02, 97 }, + { 56, 0x03, 97 }, + }, + /* 6 */ + { + { 2, 0x02, 99 }, + { 9, 0x02, 99 }, + { 23, 0x02, 99 }, + { 40, 0x03, 99 }, + { 2, 0x02, 101 }, + { 9, 0x02, 101 }, + { 23, 0x02, 101 }, + { 40, 0x03, 101 }, + { 2, 0x02, 105 }, + { 9, 0x02, 105 }, + { 23, 0x02, 105 }, + { 40, 0x03, 105 }, + { 2, 0x02, 111 }, + { 9, 0x02, 111 }, + { 23, 0x02, 111 }, + { 40, 0x03, 111 }, + }, + /* 7 */ + { + { 3, 0x02, 99 }, + { 6, 0x02, 99 }, + { 10, 0x02, 99 }, + { 15, 0x02, 99 }, + { 24, 0x02, 99 }, + { 31, 0x02, 99 }, + { 41, 0x02, 99 }, + { 56, 0x03, 99 }, + { 3, 0x02, 101 }, + { 6, 0x02, 101 }, + { 10, 0x02, 101 }, + { 15, 0x02, 101 }, + { 24, 0x02, 101 }, + { 31, 0x02, 101 }, + { 41, 0x02, 101 }, + { 56, 0x03, 101 }, + }, + /* 8 */ + { + { 3, 0x02, 105 }, + { 6, 0x02, 105 }, + { 10, 0x02, 105 }, + { 15, 0x02, 105 }, + { 24, 0x02, 105 }, + { 31, 0x02, 105 }, + { 41, 0x02, 105 }, + { 56, 0x03, 105 }, + { 3, 0x02, 111 }, + { 6, 0x02, 111 }, + { 10, 0x02, 111 }, + { 15, 0x02, 111 }, + { 24, 0x02, 111 }, + { 31, 0x02, 111 }, + { 41, 0x02, 111 }, + { 56, 0x03, 111 }, + }, + /* 9 */ + { + { 1, 0x02, 115 }, + { 22, 0x03, 115 }, + { 1, 0x02, 116 }, + { 22, 0x03, 116 }, + { 0, 0x03, 32 }, + { 0, 0x03, 37 }, + { 0, 0x03, 45 }, + { 0, 0x03, 46 }, + { 0, 0x03, 47 }, + { 0, 0x03, 51 }, + { 0, 0x03, 52 }, + { 0, 0x03, 53 }, + { 0, 0x03, 54 }, + { 0, 0x03, 55 }, + { 0, 0x03, 56 }, + { 0, 0x03, 57 }, + }, + /* 10 */ + { + { 2, 0x02, 115 }, + { 9, 0x02, 115 }, + { 23, 0x02, 115 }, + { 40, 0x03, 115 }, + { 2, 0x02, 116 }, + { 9, 0x02, 116 }, + { 23, 0x02, 116 }, + { 40, 0x03, 116 }, + { 1, 0x02, 32 }, + { 22, 0x03, 32 }, + { 1, 0x02, 37 }, + { 22, 0x03, 37 }, + { 1, 0x02, 45 }, + { 22, 0x03, 45 }, + { 1, 0x02, 46 }, + { 22, 0x03, 46 }, + }, + /* 11 */ + { + { 3, 0x02, 115 }, + { 6, 0x02, 115 }, + { 10, 0x02, 115 }, + { 15, 0x02, 115 }, + { 24, 0x02, 115 }, + { 31, 0x02, 115 }, + { 41, 0x02, 115 }, + { 56, 0x03, 115 }, + { 3, 0x02, 116 }, + { 6, 0x02, 116 }, + { 10, 0x02, 116 }, + { 15, 0x02, 116 }, + { 24, 0x02, 116 }, + { 31, 0x02, 116 }, + { 41, 0x02, 116 }, + { 56, 0x03, 116 }, + }, + /* 12 */ + { + { 2, 0x02, 32 }, + { 9, 0x02, 32 }, + { 23, 0x02, 32 }, + { 40, 0x03, 32 }, + { 2, 0x02, 37 }, + { 9, 0x02, 37 }, + { 23, 0x02, 37 }, + { 40, 0x03, 37 }, + { 2, 0x02, 45 }, + { 9, 0x02, 45 }, + { 23, 0x02, 45 }, + { 40, 0x03, 45 }, + { 2, 0x02, 46 }, + { 9, 0x02, 46 }, + { 23, 0x02, 46 }, + { 40, 0x03, 46 }, + }, + /* 13 */ + { + { 3, 0x02, 32 }, + { 6, 0x02, 32 }, + { 10, 0x02, 32 }, + { 15, 0x02, 32 }, + { 24, 0x02, 32 }, + { 31, 0x02, 32 }, + { 41, 0x02, 32 }, + { 56, 0x03, 32 }, + { 3, 0x02, 37 }, + { 6, 0x02, 37 }, + { 10, 0x02, 37 }, + { 15, 0x02, 37 }, + { 24, 0x02, 37 }, + { 31, 0x02, 37 }, + { 41, 0x02, 37 }, + { 56, 0x03, 37 }, + }, + /* 14 */ + { + { 3, 0x02, 45 }, + { 6, 0x02, 45 }, + { 10, 0x02, 45 }, + { 15, 0x02, 45 }, + { 24, 0x02, 45 }, + { 31, 0x02, 45 }, + { 41, 0x02, 45 }, + { 56, 0x03, 45 }, + { 3, 0x02, 46 }, + { 6, 0x02, 46 }, + { 10, 0x02, 46 }, + { 15, 0x02, 46 }, + { 24, 0x02, 46 }, + { 31, 0x02, 46 }, + { 41, 0x02, 46 }, + { 56, 0x03, 46 }, + }, + /* 15 */ + { + { 1, 0x02, 47 }, + { 22, 0x03, 47 }, + { 1, 0x02, 51 }, + { 22, 0x03, 51 }, + { 1, 0x02, 52 }, + { 22, 0x03, 52 }, + { 1, 0x02, 53 }, + { 22, 0x03, 53 }, + { 1, 0x02, 54 }, + { 22, 0x03, 54 }, + { 1, 0x02, 55 }, + { 22, 0x03, 55 }, + { 1, 0x02, 56 }, + { 22, 0x03, 56 }, + { 1, 0x02, 57 }, + { 22, 0x03, 57 }, + }, + /* 16 */ + { + { 2, 0x02, 47 }, + { 9, 0x02, 47 }, + { 23, 0x02, 47 }, + { 40, 0x03, 47 }, + { 2, 0x02, 51 }, + { 9, 0x02, 51 }, + { 23, 0x02, 51 }, + { 40, 0x03, 51 }, + { 2, 0x02, 52 }, + { 9, 0x02, 52 }, + { 23, 0x02, 52 }, + { 40, 0x03, 52 }, + { 2, 0x02, 53 }, + { 9, 0x02, 53 }, + { 23, 0x02, 53 }, + { 40, 0x03, 53 }, + }, + /* 17 */ + { + { 3, 0x02, 47 }, + { 6, 0x02, 47 }, + { 10, 0x02, 47 }, + { 15, 0x02, 47 }, + { 24, 0x02, 47 }, + { 31, 0x02, 47 }, + { 41, 0x02, 47 }, + { 56, 0x03, 47 }, + { 3, 0x02, 51 }, + { 6, 0x02, 51 }, + { 10, 0x02, 51 }, + { 15, 0x02, 51 }, + { 24, 0x02, 51 }, + { 31, 0x02, 51 }, + { 41, 0x02, 51 }, + { 56, 0x03, 51 }, + }, + /* 18 */ + { + { 3, 0x02, 52 }, + { 6, 0x02, 52 }, + { 10, 0x02, 52 }, + { 15, 0x02, 52 }, + { 24, 0x02, 52 }, + { 31, 0x02, 52 }, + { 41, 0x02, 52 }, + { 56, 0x03, 52 }, + { 3, 0x02, 53 }, + { 6, 0x02, 53 }, + { 10, 0x02, 53 }, + { 15, 0x02, 53 }, + { 24, 0x02, 53 }, + { 31, 0x02, 53 }, + { 41, 0x02, 53 }, + { 56, 0x03, 53 }, + }, + /* 19 */ + { + { 2, 0x02, 54 }, + { 9, 0x02, 54 }, + { 23, 0x02, 54 }, + { 40, 0x03, 54 }, + { 2, 0x02, 55 }, + { 9, 0x02, 55 }, + { 23, 0x02, 55 }, + { 40, 0x03, 55 }, + { 2, 0x02, 56 }, + { 9, 0x02, 56 }, + { 23, 0x02, 56 }, + { 40, 0x03, 56 }, + { 2, 0x02, 57 }, + { 9, 0x02, 57 }, + { 23, 0x02, 57 }, + { 40, 0x03, 57 }, + }, + /* 20 */ + { + { 3, 0x02, 54 }, + { 6, 0x02, 54 }, + { 10, 0x02, 54 }, + { 15, 0x02, 54 }, + { 24, 0x02, 54 }, + { 31, 0x02, 54 }, + { 41, 0x02, 54 }, + { 56, 0x03, 54 }, + { 3, 0x02, 55 }, + { 6, 0x02, 55 }, + { 10, 0x02, 55 }, + { 15, 0x02, 55 }, + { 24, 0x02, 55 }, + { 31, 0x02, 55 }, + { 41, 0x02, 55 }, + { 56, 0x03, 55 }, + }, + /* 21 */ + { + { 3, 0x02, 56 }, + { 6, 0x02, 56 }, + { 10, 0x02, 56 }, + { 15, 0x02, 56 }, + { 24, 0x02, 56 }, + { 31, 0x02, 56 }, + { 41, 0x02, 56 }, + { 56, 0x03, 56 }, + { 3, 0x02, 57 }, + { 6, 0x02, 57 }, + { 10, 0x02, 57 }, + { 15, 0x02, 57 }, + { 24, 0x02, 57 }, + { 31, 0x02, 57 }, + { 41, 0x02, 57 }, + { 56, 0x03, 57 }, + }, + /* 22 */ + { + { 26, 0x00, 0 }, + { 27, 0x00, 0 }, + { 29, 0x00, 0 }, + { 30, 0x00, 0 }, + { 33, 0x00, 0 }, + { 34, 0x00, 0 }, + { 36, 0x00, 0 }, + { 37, 0x00, 0 }, + { 43, 0x00, 0 }, + { 46, 0x00, 0 }, + { 50, 0x00, 0 }, + { 53, 0x00, 0 }, + { 58, 0x00, 0 }, + { 61, 0x00, 0 }, + { 65, 0x00, 0 }, + { 68, 0x01, 0 }, + }, + /* 23 */ + { + { 0, 0x03, 61 }, + { 0, 0x03, 65 }, + { 0, 0x03, 95 }, + { 0, 0x03, 98 }, + { 0, 0x03, 100 }, + { 0, 0x03, 102 }, + { 0, 0x03, 103 }, + { 0, 0x03, 104 }, + { 0, 0x03, 108 }, + { 0, 0x03, 109 }, + { 0, 0x03, 110 }, + { 0, 0x03, 112 }, + { 0, 0x03, 114 }, + { 0, 0x03, 117 }, + { 38, 0x00, 0 }, + { 39, 0x00, 0 }, + }, + /* 24 */ + { + { 1, 0x02, 61 }, + { 22, 0x03, 61 }, + { 1, 0x02, 65 }, + { 22, 0x03, 65 }, + { 1, 0x02, 95 }, + { 22, 0x03, 95 }, + { 1, 0x02, 98 }, + { 22, 0x03, 98 }, + { 1, 0x02, 100 }, + { 22, 0x03, 100 }, + { 1, 0x02, 102 }, + { 22, 0x03, 102 }, + { 1, 0x02, 103 }, + { 22, 0x03, 103 }, + { 1, 0x02, 104 }, + { 22, 0x03, 104 }, + }, + /* 25 */ + { + { 2, 0x02, 61 }, + { 9, 0x02, 61 }, + { 23, 0x02, 61 }, + { 40, 0x03, 61 }, + { 2, 0x02, 65 }, + { 9, 0x02, 65 }, + { 23, 0x02, 65 }, + { 40, 0x03, 65 }, + { 2, 0x02, 95 }, + { 9, 0x02, 95 }, + { 23, 0x02, 95 }, + { 40, 0x03, 95 }, + { 2, 0x02, 98 }, + { 9, 0x02, 98 }, + { 23, 0x02, 98 }, + { 40, 0x03, 98 }, + }, + /* 26 */ + { + { 3, 0x02, 61 }, + { 6, 0x02, 61 }, + { 10, 0x02, 61 }, + { 15, 0x02, 61 }, + { 24, 0x02, 61 }, + { 31, 0x02, 61 }, + { 41, 0x02, 61 }, + { 56, 0x03, 61 }, + { 3, 0x02, 65 }, + { 6, 0x02, 65 }, + { 10, 0x02, 65 }, + { 15, 0x02, 65 }, + { 24, 0x02, 65 }, + { 31, 0x02, 65 }, + { 41, 0x02, 65 }, + { 56, 0x03, 65 }, + }, + /* 27 */ + { + { 3, 0x02, 95 }, + { 6, 0x02, 95 }, + { 10, 0x02, 95 }, + { 15, 0x02, 95 }, + { 24, 0x02, 95 }, + { 31, 0x02, 95 }, + { 41, 0x02, 95 }, + { 56, 0x03, 95 }, + { 3, 0x02, 98 }, + { 6, 0x02, 98 }, + { 10, 0x02, 98 }, + { 15, 0x02, 98 }, + { 24, 0x02, 98 }, + { 31, 0x02, 98 }, + { 41, 0x02, 98 }, + { 56, 0x03, 98 }, + }, + /* 28 */ + { + { 2, 0x02, 100 }, + { 9, 0x02, 100 }, + { 23, 0x02, 100 }, + { 40, 0x03, 100 }, + { 2, 0x02, 102 }, + { 9, 0x02, 102 }, + { 23, 0x02, 102 }, + { 40, 0x03, 102 }, + { 2, 0x02, 103 }, + { 9, 0x02, 103 }, + { 23, 0x02, 103 }, + { 40, 0x03, 103 }, + { 2, 0x02, 104 }, + { 9, 0x02, 104 }, + { 23, 0x02, 104 }, + { 40, 0x03, 104 }, + }, + /* 29 */ + { + { 3, 0x02, 100 }, + { 6, 0x02, 100 }, + { 10, 0x02, 100 }, + { 15, 0x02, 100 }, + { 24, 0x02, 100 }, + { 31, 0x02, 100 }, + { 41, 0x02, 100 }, + { 56, 0x03, 100 }, + { 3, 0x02, 102 }, + { 6, 0x02, 102 }, + { 10, 0x02, 102 }, + { 15, 0x02, 102 }, + { 24, 0x02, 102 }, + { 31, 0x02, 102 }, + { 41, 0x02, 102 }, + { 56, 0x03, 102 }, + }, + /* 30 */ + { + { 3, 0x02, 103 }, + { 6, 0x02, 103 }, + { 10, 0x02, 103 }, + { 15, 0x02, 103 }, + { 24, 0x02, 103 }, + { 31, 0x02, 103 }, + { 41, 0x02, 103 }, + { 56, 0x03, 103 }, + { 3, 0x02, 104 }, + { 6, 0x02, 104 }, + { 10, 0x02, 104 }, + { 15, 0x02, 104 }, + { 24, 0x02, 104 }, + { 31, 0x02, 104 }, + { 41, 0x02, 104 }, + { 56, 0x03, 104 }, + }, + /* 31 */ + { + { 1, 0x02, 108 }, + { 22, 0x03, 108 }, + { 1, 0x02, 109 }, + { 22, 0x03, 109 }, + { 1, 0x02, 110 }, + { 22, 0x03, 110 }, + { 1, 0x02, 112 }, + { 22, 0x03, 112 }, + { 1, 0x02, 114 }, + { 22, 0x03, 114 }, + { 1, 0x02, 117 }, + { 22, 0x03, 117 }, + { 0, 0x03, 58 }, + { 0, 0x03, 66 }, + { 0, 0x03, 67 }, + { 0, 0x03, 68 }, + }, + /* 32 */ + { + { 2, 0x02, 108 }, + { 9, 0x02, 108 }, + { 23, 0x02, 108 }, + { 40, 0x03, 108 }, + { 2, 0x02, 109 }, + { 9, 0x02, 109 }, + { 23, 0x02, 109 }, + { 40, 0x03, 109 }, + { 2, 0x02, 110 }, + { 9, 0x02, 110 }, + { 23, 0x02, 110 }, + { 40, 0x03, 110 }, + { 2, 0x02, 112 }, + { 9, 0x02, 112 }, + { 23, 0x02, 112 }, + { 40, 0x03, 112 }, + }, + /* 33 */ + { + { 3, 0x02, 108 }, + { 6, 0x02, 108 }, + { 10, 0x02, 108 }, + { 15, 0x02, 108 }, + { 24, 0x02, 108 }, + { 31, 0x02, 108 }, + { 41, 0x02, 108 }, + { 56, 0x03, 108 }, + { 3, 0x02, 109 }, + { 6, 0x02, 109 }, + { 10, 0x02, 109 }, + { 15, 0x02, 109 }, + { 24, 0x02, 109 }, + { 31, 0x02, 109 }, + { 41, 0x02, 109 }, + { 56, 0x03, 109 }, + }, + /* 34 */ + { + { 3, 0x02, 110 }, + { 6, 0x02, 110 }, + { 10, 0x02, 110 }, + { 15, 0x02, 110 }, + { 24, 0x02, 110 }, + { 31, 0x02, 110 }, + { 41, 0x02, 110 }, + { 56, 0x03, 110 }, + { 3, 0x02, 112 }, + { 6, 0x02, 112 }, + { 10, 0x02, 112 }, + { 15, 0x02, 112 }, + { 24, 0x02, 112 }, + { 31, 0x02, 112 }, + { 41, 0x02, 112 }, + { 56, 0x03, 112 }, + }, + /* 35 */ + { + { 2, 0x02, 114 }, + { 9, 0x02, 114 }, + { 23, 0x02, 114 }, + { 40, 0x03, 114 }, + { 2, 0x02, 117 }, + { 9, 0x02, 117 }, + { 23, 0x02, 117 }, + { 40, 0x03, 117 }, + { 1, 0x02, 58 }, + { 22, 0x03, 58 }, + { 1, 0x02, 66 }, + { 22, 0x03, 66 }, + { 1, 0x02, 67 }, + { 22, 0x03, 67 }, + { 1, 0x02, 68 }, + { 22, 0x03, 68 }, + }, + /* 36 */ + { + { 3, 0x02, 114 }, + { 6, 0x02, 114 }, + { 10, 0x02, 114 }, + { 15, 0x02, 114 }, + { 24, 0x02, 114 }, + { 31, 0x02, 114 }, + { 41, 0x02, 114 }, + { 56, 0x03, 114 }, + { 3, 0x02, 117 }, + { 6, 0x02, 117 }, + { 10, 0x02, 117 }, + { 15, 0x02, 117 }, + { 24, 0x02, 117 }, + { 31, 0x02, 117 }, + { 41, 0x02, 117 }, + { 56, 0x03, 117 }, + }, + /* 37 */ + { + { 2, 0x02, 58 }, + { 9, 0x02, 58 }, + { 23, 0x02, 58 }, + { 40, 0x03, 58 }, + { 2, 0x02, 66 }, + { 9, 0x02, 66 }, + { 23, 0x02, 66 }, + { 40, 0x03, 66 }, + { 2, 0x02, 67 }, + { 9, 0x02, 67 }, + { 23, 0x02, 67 }, + { 40, 0x03, 67 }, + { 2, 0x02, 68 }, + { 9, 0x02, 68 }, + { 23, 0x02, 68 }, + { 40, 0x03, 68 }, + }, + /* 38 */ + { + { 3, 0x02, 58 }, + { 6, 0x02, 58 }, + { 10, 0x02, 58 }, + { 15, 0x02, 58 }, + { 24, 0x02, 58 }, + { 31, 0x02, 58 }, + { 41, 0x02, 58 }, + { 56, 0x03, 58 }, + { 3, 0x02, 66 }, + { 6, 0x02, 66 }, + { 10, 0x02, 66 }, + { 15, 0x02, 66 }, + { 24, 0x02, 66 }, + { 31, 0x02, 66 }, + { 41, 0x02, 66 }, + { 56, 0x03, 66 }, + }, + /* 39 */ + { + { 3, 0x02, 67 }, + { 6, 0x02, 67 }, + { 10, 0x02, 67 }, + { 15, 0x02, 67 }, + { 24, 0x02, 67 }, + { 31, 0x02, 67 }, + { 41, 0x02, 67 }, + { 56, 0x03, 67 }, + { 3, 0x02, 68 }, + { 6, 0x02, 68 }, + { 10, 0x02, 68 }, + { 15, 0x02, 68 }, + { 24, 0x02, 68 }, + { 31, 0x02, 68 }, + { 41, 0x02, 68 }, + { 56, 0x03, 68 }, + }, + /* 40 */ + { + { 44, 0x00, 0 }, + { 45, 0x00, 0 }, + { 47, 0x00, 0 }, + { 48, 0x00, 0 }, + { 51, 0x00, 0 }, + { 52, 0x00, 0 }, + { 54, 0x00, 0 }, + { 55, 0x00, 0 }, + { 59, 0x00, 0 }, + { 60, 0x00, 0 }, + { 62, 0x00, 0 }, + { 63, 0x00, 0 }, + { 66, 0x00, 0 }, + { 67, 0x00, 0 }, + { 69, 0x00, 0 }, + { 72, 0x01, 0 }, + }, + /* 41 */ + { + { 0, 0x03, 69 }, + { 0, 0x03, 70 }, + { 0, 0x03, 71 }, + { 0, 0x03, 72 }, + { 0, 0x03, 73 }, + { 0, 0x03, 74 }, + { 0, 0x03, 75 }, + { 0, 0x03, 76 }, + { 0, 0x03, 77 }, + { 0, 0x03, 78 }, + { 0, 0x03, 79 }, + { 0, 0x03, 80 }, + { 0, 0x03, 81 }, + { 0, 0x03, 82 }, + { 0, 0x03, 83 }, + { 0, 0x03, 84 }, + }, + /* 42 */ + { + { 1, 0x02, 69 }, + { 22, 0x03, 69 }, + { 1, 0x02, 70 }, + { 22, 0x03, 70 }, + { 1, 0x02, 71 }, + { 22, 0x03, 71 }, + { 1, 0x02, 72 }, + { 22, 0x03, 72 }, + { 1, 0x02, 73 }, + { 22, 0x03, 73 }, + { 1, 0x02, 74 }, + { 22, 0x03, 74 }, + { 1, 0x02, 75 }, + { 22, 0x03, 75 }, + { 1, 0x02, 76 }, + { 22, 0x03, 76 }, + }, + /* 43 */ + { + { 2, 0x02, 69 }, + { 9, 0x02, 69 }, + { 23, 0x02, 69 }, + { 40, 0x03, 69 }, + { 2, 0x02, 70 }, + { 9, 0x02, 70 }, + { 23, 0x02, 70 }, + { 40, 0x03, 70 }, + { 2, 0x02, 71 }, + { 9, 0x02, 71 }, + { 23, 0x02, 71 }, + { 40, 0x03, 71 }, + { 2, 0x02, 72 }, + { 9, 0x02, 72 }, + { 23, 0x02, 72 }, + { 40, 0x03, 72 }, + }, + /* 44 */ + { + { 3, 0x02, 69 }, + { 6, 0x02, 69 }, + { 10, 0x02, 69 }, + { 15, 0x02, 69 }, + { 24, 0x02, 69 }, + { 31, 0x02, 69 }, + { 41, 0x02, 69 }, + { 56, 0x03, 69 }, + { 3, 0x02, 70 }, + { 6, 0x02, 70 }, + { 10, 0x02, 70 }, + { 15, 0x02, 70 }, + { 24, 0x02, 70 }, + { 31, 0x02, 70 }, + { 41, 0x02, 70 }, + { 56, 0x03, 70 }, + }, + /* 45 */ + { + { 3, 0x02, 71 }, + { 6, 0x02, 71 }, + { 10, 0x02, 71 }, + { 15, 0x02, 71 }, + { 24, 0x02, 71 }, + { 31, 0x02, 71 }, + { 41, 0x02, 71 }, + { 56, 0x03, 71 }, + { 3, 0x02, 72 }, + { 6, 0x02, 72 }, + { 10, 0x02, 72 }, + { 15, 0x02, 72 }, + { 24, 0x02, 72 }, + { 31, 0x02, 72 }, + { 41, 0x02, 72 }, + { 56, 0x03, 72 }, + }, + /* 46 */ + { + { 2, 0x02, 73 }, + { 9, 0x02, 73 }, + { 23, 0x02, 73 }, + { 40, 0x03, 73 }, + { 2, 0x02, 74 }, + { 9, 0x02, 74 }, + { 23, 0x02, 74 }, + { 40, 0x03, 74 }, + { 2, 0x02, 75 }, + { 9, 0x02, 75 }, + { 23, 0x02, 75 }, + { 40, 0x03, 75 }, + { 2, 0x02, 76 }, + { 9, 0x02, 76 }, + { 23, 0x02, 76 }, + { 40, 0x03, 76 }, + }, + /* 47 */ + { + { 3, 0x02, 73 }, + { 6, 0x02, 73 }, + { 10, 0x02, 73 }, + { 15, 0x02, 73 }, + { 24, 0x02, 73 }, + { 31, 0x02, 73 }, + { 41, 0x02, 73 }, + { 56, 0x03, 73 }, + { 3, 0x02, 74 }, + { 6, 0x02, 74 }, + { 10, 0x02, 74 }, + { 15, 0x02, 74 }, + { 24, 0x02, 74 }, + { 31, 0x02, 74 }, + { 41, 0x02, 74 }, + { 56, 0x03, 74 }, + }, + /* 48 */ + { + { 3, 0x02, 75 }, + { 6, 0x02, 75 }, + { 10, 0x02, 75 }, + { 15, 0x02, 75 }, + { 24, 0x02, 75 }, + { 31, 0x02, 75 }, + { 41, 0x02, 75 }, + { 56, 0x03, 75 }, + { 3, 0x02, 76 }, + { 6, 0x02, 76 }, + { 10, 0x02, 76 }, + { 15, 0x02, 76 }, + { 24, 0x02, 76 }, + { 31, 0x02, 76 }, + { 41, 0x02, 76 }, + { 56, 0x03, 76 }, + }, + /* 49 */ + { + { 1, 0x02, 77 }, + { 22, 0x03, 77 }, + { 1, 0x02, 78 }, + { 22, 0x03, 78 }, + { 1, 0x02, 79 }, + { 22, 0x03, 79 }, + { 1, 0x02, 80 }, + { 22, 0x03, 80 }, + { 1, 0x02, 81 }, + { 22, 0x03, 81 }, + { 1, 0x02, 82 }, + { 22, 0x03, 82 }, + { 1, 0x02, 83 }, + { 22, 0x03, 83 }, + { 1, 0x02, 84 }, + { 22, 0x03, 84 }, + }, + /* 50 */ + { + { 2, 0x02, 77 }, + { 9, 0x02, 77 }, + { 23, 0x02, 77 }, + { 40, 0x03, 77 }, + { 2, 0x02, 78 }, + { 9, 0x02, 78 }, + { 23, 0x02, 78 }, + { 40, 0x03, 78 }, + { 2, 0x02, 79 }, + { 9, 0x02, 79 }, + { 23, 0x02, 79 }, + { 40, 0x03, 79 }, + { 2, 0x02, 80 }, + { 9, 0x02, 80 }, + { 23, 0x02, 80 }, + { 40, 0x03, 80 }, + }, + /* 51 */ + { + { 3, 0x02, 77 }, + { 6, 0x02, 77 }, + { 10, 0x02, 77 }, + { 15, 0x02, 77 }, + { 24, 0x02, 77 }, + { 31, 0x02, 77 }, + { 41, 0x02, 77 }, + { 56, 0x03, 77 }, + { 3, 0x02, 78 }, + { 6, 0x02, 78 }, + { 10, 0x02, 78 }, + { 15, 0x02, 78 }, + { 24, 0x02, 78 }, + { 31, 0x02, 78 }, + { 41, 0x02, 78 }, + { 56, 0x03, 78 }, + }, + /* 52 */ + { + { 3, 0x02, 79 }, + { 6, 0x02, 79 }, + { 10, 0x02, 79 }, + { 15, 0x02, 79 }, + { 24, 0x02, 79 }, + { 31, 0x02, 79 }, + { 41, 0x02, 79 }, + { 56, 0x03, 79 }, + { 3, 0x02, 80 }, + { 6, 0x02, 80 }, + { 10, 0x02, 80 }, + { 15, 0x02, 80 }, + { 24, 0x02, 80 }, + { 31, 0x02, 80 }, + { 41, 0x02, 80 }, + { 56, 0x03, 80 }, + }, + /* 53 */ + { + { 2, 0x02, 81 }, + { 9, 0x02, 81 }, + { 23, 0x02, 81 }, + { 40, 0x03, 81 }, + { 2, 0x02, 82 }, + { 9, 0x02, 82 }, + { 23, 0x02, 82 }, + { 40, 0x03, 82 }, + { 2, 0x02, 83 }, + { 9, 0x02, 83 }, + { 23, 0x02, 83 }, + { 40, 0x03, 83 }, + { 2, 0x02, 84 }, + { 9, 0x02, 84 }, + { 23, 0x02, 84 }, + { 40, 0x03, 84 }, + }, + /* 54 */ + { + { 3, 0x02, 81 }, + { 6, 0x02, 81 }, + { 10, 0x02, 81 }, + { 15, 0x02, 81 }, + { 24, 0x02, 81 }, + { 31, 0x02, 81 }, + { 41, 0x02, 81 }, + { 56, 0x03, 81 }, + { 3, 0x02, 82 }, + { 6, 0x02, 82 }, + { 10, 0x02, 82 }, + { 15, 0x02, 82 }, + { 24, 0x02, 82 }, + { 31, 0x02, 82 }, + { 41, 0x02, 82 }, + { 56, 0x03, 82 }, + }, + /* 55 */ + { + { 3, 0x02, 83 }, + { 6, 0x02, 83 }, + { 10, 0x02, 83 }, + { 15, 0x02, 83 }, + { 24, 0x02, 83 }, + { 31, 0x02, 83 }, + { 41, 0x02, 83 }, + { 56, 0x03, 83 }, + { 3, 0x02, 84 }, + { 6, 0x02, 84 }, + { 10, 0x02, 84 }, + { 15, 0x02, 84 }, + { 24, 0x02, 84 }, + { 31, 0x02, 84 }, + { 41, 0x02, 84 }, + { 56, 0x03, 84 }, + }, + /* 56 */ + { + { 0, 0x03, 85 }, + { 0, 0x03, 86 }, + { 0, 0x03, 87 }, + { 0, 0x03, 89 }, + { 0, 0x03, 106 }, + { 0, 0x03, 107 }, + { 0, 0x03, 113 }, + { 0, 0x03, 118 }, + { 0, 0x03, 119 }, + { 0, 0x03, 120 }, + { 0, 0x03, 121 }, + { 0, 0x03, 122 }, + { 70, 0x00, 0 }, + { 71, 0x00, 0 }, + { 73, 0x00, 0 }, + { 74, 0x01, 0 }, + }, + /* 57 */ + { + { 1, 0x02, 85 }, + { 22, 0x03, 85 }, + { 1, 0x02, 86 }, + { 22, 0x03, 86 }, + { 1, 0x02, 87 }, + { 22, 0x03, 87 }, + { 1, 0x02, 89 }, + { 22, 0x03, 89 }, + { 1, 0x02, 106 }, + { 22, 0x03, 106 }, + { 1, 0x02, 107 }, + { 22, 0x03, 107 }, + { 1, 0x02, 113 }, + { 22, 0x03, 113 }, + { 1, 0x02, 118 }, + { 22, 0x03, 118 }, + }, + /* 58 */ + { + { 2, 0x02, 85 }, + { 9, 0x02, 85 }, + { 23, 0x02, 85 }, + { 40, 0x03, 85 }, + { 2, 0x02, 86 }, + { 9, 0x02, 86 }, + { 23, 0x02, 86 }, + { 40, 0x03, 86 }, + { 2, 0x02, 87 }, + { 9, 0x02, 87 }, + { 23, 0x02, 87 }, + { 40, 0x03, 87 }, + { 2, 0x02, 89 }, + { 9, 0x02, 89 }, + { 23, 0x02, 89 }, + { 40, 0x03, 89 }, + }, + /* 59 */ + { + { 3, 0x02, 85 }, + { 6, 0x02, 85 }, + { 10, 0x02, 85 }, + { 15, 0x02, 85 }, + { 24, 0x02, 85 }, + { 31, 0x02, 85 }, + { 41, 0x02, 85 }, + { 56, 0x03, 85 }, + { 3, 0x02, 86 }, + { 6, 0x02, 86 }, + { 10, 0x02, 86 }, + { 15, 0x02, 86 }, + { 24, 0x02, 86 }, + { 31, 0x02, 86 }, + { 41, 0x02, 86 }, + { 56, 0x03, 86 }, + }, + /* 60 */ + { + { 3, 0x02, 87 }, + { 6, 0x02, 87 }, + { 10, 0x02, 87 }, + { 15, 0x02, 87 }, + { 24, 0x02, 87 }, + { 31, 0x02, 87 }, + { 41, 0x02, 87 }, + { 56, 0x03, 87 }, + { 3, 0x02, 89 }, + { 6, 0x02, 89 }, + { 10, 0x02, 89 }, + { 15, 0x02, 89 }, + { 24, 0x02, 89 }, + { 31, 0x02, 89 }, + { 41, 0x02, 89 }, + { 56, 0x03, 89 }, + }, + /* 61 */ + { + { 2, 0x02, 106 }, + { 9, 0x02, 106 }, + { 23, 0x02, 106 }, + { 40, 0x03, 106 }, + { 2, 0x02, 107 }, + { 9, 0x02, 107 }, + { 23, 0x02, 107 }, + { 40, 0x03, 107 }, + { 2, 0x02, 113 }, + { 9, 0x02, 113 }, + { 23, 0x02, 113 }, + { 40, 0x03, 113 }, + { 2, 0x02, 118 }, + { 9, 0x02, 118 }, + { 23, 0x02, 118 }, + { 40, 0x03, 118 }, + }, + /* 62 */ + { + { 3, 0x02, 106 }, + { 6, 0x02, 106 }, + { 10, 0x02, 106 }, + { 15, 0x02, 106 }, + { 24, 0x02, 106 }, + { 31, 0x02, 106 }, + { 41, 0x02, 106 }, + { 56, 0x03, 106 }, + { 3, 0x02, 107 }, + { 6, 0x02, 107 }, + { 10, 0x02, 107 }, + { 15, 0x02, 107 }, + { 24, 0x02, 107 }, + { 31, 0x02, 107 }, + { 41, 0x02, 107 }, + { 56, 0x03, 107 }, + }, + /* 63 */ + { + { 3, 0x02, 113 }, + { 6, 0x02, 113 }, + { 10, 0x02, 113 }, + { 15, 0x02, 113 }, + { 24, 0x02, 113 }, + { 31, 0x02, 113 }, + { 41, 0x02, 113 }, + { 56, 0x03, 113 }, + { 3, 0x02, 118 }, + { 6, 0x02, 118 }, + { 10, 0x02, 118 }, + { 15, 0x02, 118 }, + { 24, 0x02, 118 }, + { 31, 0x02, 118 }, + { 41, 0x02, 118 }, + { 56, 0x03, 118 }, + }, + /* 64 */ + { + { 1, 0x02, 119 }, + { 22, 0x03, 119 }, + { 1, 0x02, 120 }, + { 22, 0x03, 120 }, + { 1, 0x02, 121 }, + { 22, 0x03, 121 }, + { 1, 0x02, 122 }, + { 22, 0x03, 122 }, + { 0, 0x03, 38 }, + { 0, 0x03, 42 }, + { 0, 0x03, 44 }, + { 0, 0x03, 59 }, + { 0, 0x03, 88 }, + { 0, 0x03, 90 }, + { 75, 0x00, 0 }, + { 78, 0x00, 0 }, + }, + /* 65 */ + { + { 2, 0x02, 119 }, + { 9, 0x02, 119 }, + { 23, 0x02, 119 }, + { 40, 0x03, 119 }, + { 2, 0x02, 120 }, + { 9, 0x02, 120 }, + { 23, 0x02, 120 }, + { 40, 0x03, 120 }, + { 2, 0x02, 121 }, + { 9, 0x02, 121 }, + { 23, 0x02, 121 }, + { 40, 0x03, 121 }, + { 2, 0x02, 122 }, + { 9, 0x02, 122 }, + { 23, 0x02, 122 }, + { 40, 0x03, 122 }, + }, + /* 66 */ + { + { 3, 0x02, 119 }, + { 6, 0x02, 119 }, + { 10, 0x02, 119 }, + { 15, 0x02, 119 }, + { 24, 0x02, 119 }, + { 31, 0x02, 119 }, + { 41, 0x02, 119 }, + { 56, 0x03, 119 }, + { 3, 0x02, 120 }, + { 6, 0x02, 120 }, + { 10, 0x02, 120 }, + { 15, 0x02, 120 }, + { 24, 0x02, 120 }, + { 31, 0x02, 120 }, + { 41, 0x02, 120 }, + { 56, 0x03, 120 }, + }, + /* 67 */ + { + { 3, 0x02, 121 }, + { 6, 0x02, 121 }, + { 10, 0x02, 121 }, + { 15, 0x02, 121 }, + { 24, 0x02, 121 }, + { 31, 0x02, 121 }, + { 41, 0x02, 121 }, + { 56, 0x03, 121 }, + { 3, 0x02, 122 }, + { 6, 0x02, 122 }, + { 10, 0x02, 122 }, + { 15, 0x02, 122 }, + { 24, 0x02, 122 }, + { 31, 0x02, 122 }, + { 41, 0x02, 122 }, + { 56, 0x03, 122 }, + }, + /* 68 */ + { + { 1, 0x02, 38 }, + { 22, 0x03, 38 }, + { 1, 0x02, 42 }, + { 22, 0x03, 42 }, + { 1, 0x02, 44 }, + { 22, 0x03, 44 }, + { 1, 0x02, 59 }, + { 22, 0x03, 59 }, + { 1, 0x02, 88 }, + { 22, 0x03, 88 }, + { 1, 0x02, 90 }, + { 22, 0x03, 90 }, + { 76, 0x00, 0 }, + { 77, 0x00, 0 }, + { 79, 0x00, 0 }, + { 81, 0x00, 0 }, + }, + /* 69 */ + { + { 2, 0x02, 38 }, + { 9, 0x02, 38 }, + { 23, 0x02, 38 }, + { 40, 0x03, 38 }, + { 2, 0x02, 42 }, + { 9, 0x02, 42 }, + { 23, 0x02, 42 }, + { 40, 0x03, 42 }, + { 2, 0x02, 44 }, + { 9, 0x02, 44 }, + { 23, 0x02, 44 }, + { 40, 0x03, 44 }, + { 2, 0x02, 59 }, + { 9, 0x02, 59 }, + { 23, 0x02, 59 }, + { 40, 0x03, 59 }, + }, + /* 70 */ + { + { 3, 0x02, 38 }, + { 6, 0x02, 38 }, + { 10, 0x02, 38 }, + { 15, 0x02, 38 }, + { 24, 0x02, 38 }, + { 31, 0x02, 38 }, + { 41, 0x02, 38 }, + { 56, 0x03, 38 }, + { 3, 0x02, 42 }, + { 6, 0x02, 42 }, + { 10, 0x02, 42 }, + { 15, 0x02, 42 }, + { 24, 0x02, 42 }, + { 31, 0x02, 42 }, + { 41, 0x02, 42 }, + { 56, 0x03, 42 }, + }, + /* 71 */ + { + { 3, 0x02, 44 }, + { 6, 0x02, 44 }, + { 10, 0x02, 44 }, + { 15, 0x02, 44 }, + { 24, 0x02, 44 }, + { 31, 0x02, 44 }, + { 41, 0x02, 44 }, + { 56, 0x03, 44 }, + { 3, 0x02, 59 }, + { 6, 0x02, 59 }, + { 10, 0x02, 59 }, + { 15, 0x02, 59 }, + { 24, 0x02, 59 }, + { 31, 0x02, 59 }, + { 41, 0x02, 59 }, + { 56, 0x03, 59 }, + }, + /* 72 */ + { + { 2, 0x02, 88 }, + { 9, 0x02, 88 }, + { 23, 0x02, 88 }, + { 40, 0x03, 88 }, + { 2, 0x02, 90 }, + { 9, 0x02, 90 }, + { 23, 0x02, 90 }, + { 40, 0x03, 90 }, + { 0, 0x03, 33 }, + { 0, 0x03, 34 }, + { 0, 0x03, 40 }, + { 0, 0x03, 41 }, + { 0, 0x03, 63 }, + { 80, 0x00, 0 }, + { 82, 0x00, 0 }, + { 84, 0x00, 0 }, + }, + /* 73 */ + { + { 3, 0x02, 88 }, + { 6, 0x02, 88 }, + { 10, 0x02, 88 }, + { 15, 0x02, 88 }, + { 24, 0x02, 88 }, + { 31, 0x02, 88 }, + { 41, 0x02, 88 }, + { 56, 0x03, 88 }, + { 3, 0x02, 90 }, + { 6, 0x02, 90 }, + { 10, 0x02, 90 }, + { 15, 0x02, 90 }, + { 24, 0x02, 90 }, + { 31, 0x02, 90 }, + { 41, 0x02, 90 }, + { 56, 0x03, 90 }, + }, + /* 74 */ + { + { 1, 0x02, 33 }, + { 22, 0x03, 33 }, + { 1, 0x02, 34 }, + { 22, 0x03, 34 }, + { 1, 0x02, 40 }, + { 22, 0x03, 40 }, + { 1, 0x02, 41 }, + { 22, 0x03, 41 }, + { 1, 0x02, 63 }, + { 22, 0x03, 63 }, + { 0, 0x03, 39 }, + { 0, 0x03, 43 }, + { 0, 0x03, 124 }, + { 83, 0x00, 0 }, + { 85, 0x00, 0 }, + { 88, 0x00, 0 }, + }, + /* 75 */ + { + { 2, 0x02, 33 }, + { 9, 0x02, 33 }, + { 23, 0x02, 33 }, + { 40, 0x03, 33 }, + { 2, 0x02, 34 }, + { 9, 0x02, 34 }, + { 23, 0x02, 34 }, + { 40, 0x03, 34 }, + { 2, 0x02, 40 }, + { 9, 0x02, 40 }, + { 23, 0x02, 40 }, + { 40, 0x03, 40 }, + { 2, 0x02, 41 }, + { 9, 0x02, 41 }, + { 23, 0x02, 41 }, + { 40, 0x03, 41 }, + }, + /* 76 */ + { + { 3, 0x02, 33 }, + { 6, 0x02, 33 }, + { 10, 0x02, 33 }, + { 15, 0x02, 33 }, + { 24, 0x02, 33 }, + { 31, 0x02, 33 }, + { 41, 0x02, 33 }, + { 56, 0x03, 33 }, + { 3, 0x02, 34 }, + { 6, 0x02, 34 }, + { 10, 0x02, 34 }, + { 15, 0x02, 34 }, + { 24, 0x02, 34 }, + { 31, 0x02, 34 }, + { 41, 0x02, 34 }, + { 56, 0x03, 34 }, + }, + /* 77 */ + { + { 3, 0x02, 40 }, + { 6, 0x02, 40 }, + { 10, 0x02, 40 }, + { 15, 0x02, 40 }, + { 24, 0x02, 40 }, + { 31, 0x02, 40 }, + { 41, 0x02, 40 }, + { 56, 0x03, 40 }, + { 3, 0x02, 41 }, + { 6, 0x02, 41 }, + { 10, 0x02, 41 }, + { 15, 0x02, 41 }, + { 24, 0x02, 41 }, + { 31, 0x02, 41 }, + { 41, 0x02, 41 }, + { 56, 0x03, 41 }, + }, + /* 78 */ + { + { 2, 0x02, 63 }, + { 9, 0x02, 63 }, + { 23, 0x02, 63 }, + { 40, 0x03, 63 }, + { 1, 0x02, 39 }, + { 22, 0x03, 39 }, + { 1, 0x02, 43 }, + { 22, 0x03, 43 }, + { 1, 0x02, 124 }, + { 22, 0x03, 124 }, + { 0, 0x03, 35 }, + { 0, 0x03, 62 }, + { 86, 0x00, 0 }, + { 87, 0x00, 0 }, + { 89, 0x00, 0 }, + { 90, 0x00, 0 }, + }, + /* 79 */ + { + { 3, 0x02, 63 }, + { 6, 0x02, 63 }, + { 10, 0x02, 63 }, + { 15, 0x02, 63 }, + { 24, 0x02, 63 }, + { 31, 0x02, 63 }, + { 41, 0x02, 63 }, + { 56, 0x03, 63 }, + { 2, 0x02, 39 }, + { 9, 0x02, 39 }, + { 23, 0x02, 39 }, + { 40, 0x03, 39 }, + { 2, 0x02, 43 }, + { 9, 0x02, 43 }, + { 23, 0x02, 43 }, + { 40, 0x03, 43 }, + }, + /* 80 */ + { + { 3, 0x02, 39 }, + { 6, 0x02, 39 }, + { 10, 0x02, 39 }, + { 15, 0x02, 39 }, + { 24, 0x02, 39 }, + { 31, 0x02, 39 }, + { 41, 0x02, 39 }, + { 56, 0x03, 39 }, + { 3, 0x02, 43 }, + { 6, 0x02, 43 }, + { 10, 0x02, 43 }, + { 15, 0x02, 43 }, + { 24, 0x02, 43 }, + { 31, 0x02, 43 }, + { 41, 0x02, 43 }, + { 56, 0x03, 43 }, + }, + /* 81 */ + { + { 2, 0x02, 124 }, + { 9, 0x02, 124 }, + { 23, 0x02, 124 }, + { 40, 0x03, 124 }, + { 1, 0x02, 35 }, + { 22, 0x03, 35 }, + { 1, 0x02, 62 }, + { 22, 0x03, 62 }, + { 0, 0x03, 0 }, + { 0, 0x03, 36 }, + { 0, 0x03, 64 }, + { 0, 0x03, 91 }, + { 0, 0x03, 93 }, + { 0, 0x03, 126 }, + { 91, 0x00, 0 }, + { 92, 0x00, 0 }, + }, + /* 82 */ + { + { 3, 0x02, 124 }, + { 6, 0x02, 124 }, + { 10, 0x02, 124 }, + { 15, 0x02, 124 }, + { 24, 0x02, 124 }, + { 31, 0x02, 124 }, + { 41, 0x02, 124 }, + { 56, 0x03, 124 }, + { 2, 0x02, 35 }, + { 9, 0x02, 35 }, + { 23, 0x02, 35 }, + { 40, 0x03, 35 }, + { 2, 0x02, 62 }, + { 9, 0x02, 62 }, + { 23, 0x02, 62 }, + { 40, 0x03, 62 }, + }, + /* 83 */ + { + { 3, 0x02, 35 }, + { 6, 0x02, 35 }, + { 10, 0x02, 35 }, + { 15, 0x02, 35 }, + { 24, 0x02, 35 }, + { 31, 0x02, 35 }, + { 41, 0x02, 35 }, + { 56, 0x03, 35 }, + { 3, 0x02, 62 }, + { 6, 0x02, 62 }, + { 10, 0x02, 62 }, + { 15, 0x02, 62 }, + { 24, 0x02, 62 }, + { 31, 0x02, 62 }, + { 41, 0x02, 62 }, + { 56, 0x03, 62 }, + }, + /* 84 */ + { + { 1, 0x02, 0 }, + { 22, 0x03, 0 }, + { 1, 0x02, 36 }, + { 22, 0x03, 36 }, + { 1, 0x02, 64 }, + { 22, 0x03, 64 }, + { 1, 0x02, 91 }, + { 22, 0x03, 91 }, + { 1, 0x02, 93 }, + { 22, 0x03, 93 }, + { 1, 0x02, 126 }, + { 22, 0x03, 126 }, + { 0, 0x03, 94 }, + { 0, 0x03, 125 }, + { 93, 0x00, 0 }, + { 94, 0x00, 0 }, + }, + /* 85 */ + { + { 2, 0x02, 0 }, + { 9, 0x02, 0 }, + { 23, 0x02, 0 }, + { 40, 0x03, 0 }, + { 2, 0x02, 36 }, + { 9, 0x02, 36 }, + { 23, 0x02, 36 }, + { 40, 0x03, 36 }, + { 2, 0x02, 64 }, + { 9, 0x02, 64 }, + { 23, 0x02, 64 }, + { 40, 0x03, 64 }, + { 2, 0x02, 91 }, + { 9, 0x02, 91 }, + { 23, 0x02, 91 }, + { 40, 0x03, 91 }, + }, + /* 86 */ + { + { 3, 0x02, 0 }, + { 6, 0x02, 0 }, + { 10, 0x02, 0 }, + { 15, 0x02, 0 }, + { 24, 0x02, 0 }, + { 31, 0x02, 0 }, + { 41, 0x02, 0 }, + { 56, 0x03, 0 }, + { 3, 0x02, 36 }, + { 6, 0x02, 36 }, + { 10, 0x02, 36 }, + { 15, 0x02, 36 }, + { 24, 0x02, 36 }, + { 31, 0x02, 36 }, + { 41, 0x02, 36 }, + { 56, 0x03, 36 }, + }, + /* 87 */ + { + { 3, 0x02, 64 }, + { 6, 0x02, 64 }, + { 10, 0x02, 64 }, + { 15, 0x02, 64 }, + { 24, 0x02, 64 }, + { 31, 0x02, 64 }, + { 41, 0x02, 64 }, + { 56, 0x03, 64 }, + { 3, 0x02, 91 }, + { 6, 0x02, 91 }, + { 10, 0x02, 91 }, + { 15, 0x02, 91 }, + { 24, 0x02, 91 }, + { 31, 0x02, 91 }, + { 41, 0x02, 91 }, + { 56, 0x03, 91 }, + }, + /* 88 */ + { + { 2, 0x02, 93 }, + { 9, 0x02, 93 }, + { 23, 0x02, 93 }, + { 40, 0x03, 93 }, + { 2, 0x02, 126 }, + { 9, 0x02, 126 }, + { 23, 0x02, 126 }, + { 40, 0x03, 126 }, + { 1, 0x02, 94 }, + { 22, 0x03, 94 }, + { 1, 0x02, 125 }, + { 22, 0x03, 125 }, + { 0, 0x03, 60 }, + { 0, 0x03, 96 }, + { 0, 0x03, 123 }, + { 95, 0x00, 0 }, + }, + /* 89 */ + { + { 3, 0x02, 93 }, + { 6, 0x02, 93 }, + { 10, 0x02, 93 }, + { 15, 0x02, 93 }, + { 24, 0x02, 93 }, + { 31, 0x02, 93 }, + { 41, 0x02, 93 }, + { 56, 0x03, 93 }, + { 3, 0x02, 126 }, + { 6, 0x02, 126 }, + { 10, 0x02, 126 }, + { 15, 0x02, 126 }, + { 24, 0x02, 126 }, + { 31, 0x02, 126 }, + { 41, 0x02, 126 }, + { 56, 0x03, 126 }, + }, + /* 90 */ + { + { 2, 0x02, 94 }, + { 9, 0x02, 94 }, + { 23, 0x02, 94 }, + { 40, 0x03, 94 }, + { 2, 0x02, 125 }, + { 9, 0x02, 125 }, + { 23, 0x02, 125 }, + { 40, 0x03, 125 }, + { 1, 0x02, 60 }, + { 22, 0x03, 60 }, + { 1, 0x02, 96 }, + { 22, 0x03, 96 }, + { 1, 0x02, 123 }, + { 22, 0x03, 123 }, + { 96, 0x00, 0 }, + { 110, 0x00, 0 }, + }, + /* 91 */ + { + { 3, 0x02, 94 }, + { 6, 0x02, 94 }, + { 10, 0x02, 94 }, + { 15, 0x02, 94 }, + { 24, 0x02, 94 }, + { 31, 0x02, 94 }, + { 41, 0x02, 94 }, + { 56, 0x03, 94 }, + { 3, 0x02, 125 }, + { 6, 0x02, 125 }, + { 10, 0x02, 125 }, + { 15, 0x02, 125 }, + { 24, 0x02, 125 }, + { 31, 0x02, 125 }, + { 41, 0x02, 125 }, + { 56, 0x03, 125 }, + }, + /* 92 */ + { + { 2, 0x02, 60 }, + { 9, 0x02, 60 }, + { 23, 0x02, 60 }, + { 40, 0x03, 60 }, + { 2, 0x02, 96 }, + { 9, 0x02, 96 }, + { 23, 0x02, 96 }, + { 40, 0x03, 96 }, + { 2, 0x02, 123 }, + { 9, 0x02, 123 }, + { 23, 0x02, 123 }, + { 40, 0x03, 123 }, + { 97, 0x00, 0 }, + { 101, 0x00, 0 }, + { 111, 0x00, 0 }, + { 133, 0x00, 0 }, + }, + /* 93 */ + { + { 3, 0x02, 60 }, + { 6, 0x02, 60 }, + { 10, 0x02, 60 }, + { 15, 0x02, 60 }, + { 24, 0x02, 60 }, + { 31, 0x02, 60 }, + { 41, 0x02, 60 }, + { 56, 0x03, 60 }, + { 3, 0x02, 96 }, + { 6, 0x02, 96 }, + { 10, 0x02, 96 }, + { 15, 0x02, 96 }, + { 24, 0x02, 96 }, + { 31, 0x02, 96 }, + { 41, 0x02, 96 }, + { 56, 0x03, 96 }, + }, + /* 94 */ + { + { 3, 0x02, 123 }, + { 6, 0x02, 123 }, + { 10, 0x02, 123 }, + { 15, 0x02, 123 }, + { 24, 0x02, 123 }, + { 31, 0x02, 123 }, + { 41, 0x02, 123 }, + { 56, 0x03, 123 }, + { 98, 0x00, 0 }, + { 99, 0x00, 0 }, + { 102, 0x00, 0 }, + { 105, 0x00, 0 }, + { 112, 0x00, 0 }, + { 119, 0x00, 0 }, + { 134, 0x00, 0 }, + { 153, 0x00, 0 }, + }, + /* 95 */ + { + { 0, 0x03, 92 }, + { 0, 0x03, 195 }, + { 0, 0x03, 208 }, + { 100, 0x00, 0 }, + { 103, 0x00, 0 }, + { 104, 0x00, 0 }, + { 106, 0x00, 0 }, + { 107, 0x00, 0 }, + { 113, 0x00, 0 }, + { 116, 0x00, 0 }, + { 120, 0x00, 0 }, + { 126, 0x00, 0 }, + { 135, 0x00, 0 }, + { 142, 0x00, 0 }, + { 154, 0x00, 0 }, + { 169, 0x00, 0 }, + }, + /* 96 */ + { + { 1, 0x02, 92 }, + { 22, 0x03, 92 }, + { 1, 0x02, 195 }, + { 22, 0x03, 195 }, + { 1, 0x02, 208 }, + { 22, 0x03, 208 }, + { 0, 0x03, 128 }, + { 0, 0x03, 130 }, + { 0, 0x03, 131 }, + { 0, 0x03, 162 }, + { 0, 0x03, 184 }, + { 0, 0x03, 194 }, + { 0, 0x03, 224 }, + { 0, 0x03, 226 }, + { 108, 0x00, 0 }, + { 109, 0x00, 0 }, + }, + /* 97 */ + { + { 2, 0x02, 92 }, + { 9, 0x02, 92 }, + { 23, 0x02, 92 }, + { 40, 0x03, 92 }, + { 2, 0x02, 195 }, + { 9, 0x02, 195 }, + { 23, 0x02, 195 }, + { 40, 0x03, 195 }, + { 2, 0x02, 208 }, + { 9, 0x02, 208 }, + { 23, 0x02, 208 }, + { 40, 0x03, 208 }, + { 1, 0x02, 128 }, + { 22, 0x03, 128 }, + { 1, 0x02, 130 }, + { 22, 0x03, 130 }, + }, + /* 98 */ + { + { 3, 0x02, 92 }, + { 6, 0x02, 92 }, + { 10, 0x02, 92 }, + { 15, 0x02, 92 }, + { 24, 0x02, 92 }, + { 31, 0x02, 92 }, + { 41, 0x02, 92 }, + { 56, 0x03, 92 }, + { 3, 0x02, 195 }, + { 6, 0x02, 195 }, + { 10, 0x02, 195 }, + { 15, 0x02, 195 }, + { 24, 0x02, 195 }, + { 31, 0x02, 195 }, + { 41, 0x02, 195 }, + { 56, 0x03, 195 }, + }, + /* 99 */ + { + { 3, 0x02, 208 }, + { 6, 0x02, 208 }, + { 10, 0x02, 208 }, + { 15, 0x02, 208 }, + { 24, 0x02, 208 }, + { 31, 0x02, 208 }, + { 41, 0x02, 208 }, + { 56, 0x03, 208 }, + { 2, 0x02, 128 }, + { 9, 0x02, 128 }, + { 23, 0x02, 128 }, + { 40, 0x03, 128 }, + { 2, 0x02, 130 }, + { 9, 0x02, 130 }, + { 23, 0x02, 130 }, + { 40, 0x03, 130 }, + }, + /* 100 */ + { + { 3, 0x02, 128 }, + { 6, 0x02, 128 }, + { 10, 0x02, 128 }, + { 15, 0x02, 128 }, + { 24, 0x02, 128 }, + { 31, 0x02, 128 }, + { 41, 0x02, 128 }, + { 56, 0x03, 128 }, + { 3, 0x02, 130 }, + { 6, 0x02, 130 }, + { 10, 0x02, 130 }, + { 15, 0x02, 130 }, + { 24, 0x02, 130 }, + { 31, 0x02, 130 }, + { 41, 0x02, 130 }, + { 56, 0x03, 130 }, + }, + /* 101 */ + { + { 1, 0x02, 131 }, + { 22, 0x03, 131 }, + { 1, 0x02, 162 }, + { 22, 0x03, 162 }, + { 1, 0x02, 184 }, + { 22, 0x03, 184 }, + { 1, 0x02, 194 }, + { 22, 0x03, 194 }, + { 1, 0x02, 224 }, + { 22, 0x03, 224 }, + { 1, 0x02, 226 }, + { 22, 0x03, 226 }, + { 0, 0x03, 153 }, + { 0, 0x03, 161 }, + { 0, 0x03, 167 }, + { 0, 0x03, 172 }, + }, + /* 102 */ + { + { 2, 0x02, 131 }, + { 9, 0x02, 131 }, + { 23, 0x02, 131 }, + { 40, 0x03, 131 }, + { 2, 0x02, 162 }, + { 9, 0x02, 162 }, + { 23, 0x02, 162 }, + { 40, 0x03, 162 }, + { 2, 0x02, 184 }, + { 9, 0x02, 184 }, + { 23, 0x02, 184 }, + { 40, 0x03, 184 }, + { 2, 0x02, 194 }, + { 9, 0x02, 194 }, + { 23, 0x02, 194 }, + { 40, 0x03, 194 }, + }, + /* 103 */ + { + { 3, 0x02, 131 }, + { 6, 0x02, 131 }, + { 10, 0x02, 131 }, + { 15, 0x02, 131 }, + { 24, 0x02, 131 }, + { 31, 0x02, 131 }, + { 41, 0x02, 131 }, + { 56, 0x03, 131 }, + { 3, 0x02, 162 }, + { 6, 0x02, 162 }, + { 10, 0x02, 162 }, + { 15, 0x02, 162 }, + { 24, 0x02, 162 }, + { 31, 0x02, 162 }, + { 41, 0x02, 162 }, + { 56, 0x03, 162 }, + }, + /* 104 */ + { + { 3, 0x02, 184 }, + { 6, 0x02, 184 }, + { 10, 0x02, 184 }, + { 15, 0x02, 184 }, + { 24, 0x02, 184 }, + { 31, 0x02, 184 }, + { 41, 0x02, 184 }, + { 56, 0x03, 184 }, + { 3, 0x02, 194 }, + { 6, 0x02, 194 }, + { 10, 0x02, 194 }, + { 15, 0x02, 194 }, + { 24, 0x02, 194 }, + { 31, 0x02, 194 }, + { 41, 0x02, 194 }, + { 56, 0x03, 194 }, + }, + /* 105 */ + { + { 2, 0x02, 224 }, + { 9, 0x02, 224 }, + { 23, 0x02, 224 }, + { 40, 0x03, 224 }, + { 2, 0x02, 226 }, + { 9, 0x02, 226 }, + { 23, 0x02, 226 }, + { 40, 0x03, 226 }, + { 1, 0x02, 153 }, + { 22, 0x03, 153 }, + { 1, 0x02, 161 }, + { 22, 0x03, 161 }, + { 1, 0x02, 167 }, + { 22, 0x03, 167 }, + { 1, 0x02, 172 }, + { 22, 0x03, 172 }, + }, + /* 106 */ + { + { 3, 0x02, 224 }, + { 6, 0x02, 224 }, + { 10, 0x02, 224 }, + { 15, 0x02, 224 }, + { 24, 0x02, 224 }, + { 31, 0x02, 224 }, + { 41, 0x02, 224 }, + { 56, 0x03, 224 }, + { 3, 0x02, 226 }, + { 6, 0x02, 226 }, + { 10, 0x02, 226 }, + { 15, 0x02, 226 }, + { 24, 0x02, 226 }, + { 31, 0x02, 226 }, + { 41, 0x02, 226 }, + { 56, 0x03, 226 }, + }, + /* 107 */ + { + { 2, 0x02, 153 }, + { 9, 0x02, 153 }, + { 23, 0x02, 153 }, + { 40, 0x03, 153 }, + { 2, 0x02, 161 }, + { 9, 0x02, 161 }, + { 23, 0x02, 161 }, + { 40, 0x03, 161 }, + { 2, 0x02, 167 }, + { 9, 0x02, 167 }, + { 23, 0x02, 167 }, + { 40, 0x03, 167 }, + { 2, 0x02, 172 }, + { 9, 0x02, 172 }, + { 23, 0x02, 172 }, + { 40, 0x03, 172 }, + }, + /* 108 */ + { + { 3, 0x02, 153 }, + { 6, 0x02, 153 }, + { 10, 0x02, 153 }, + { 15, 0x02, 153 }, + { 24, 0x02, 153 }, + { 31, 0x02, 153 }, + { 41, 0x02, 153 }, + { 56, 0x03, 153 }, + { 3, 0x02, 161 }, + { 6, 0x02, 161 }, + { 10, 0x02, 161 }, + { 15, 0x02, 161 }, + { 24, 0x02, 161 }, + { 31, 0x02, 161 }, + { 41, 0x02, 161 }, + { 56, 0x03, 161 }, + }, + /* 109 */ + { + { 3, 0x02, 167 }, + { 6, 0x02, 167 }, + { 10, 0x02, 167 }, + { 15, 0x02, 167 }, + { 24, 0x02, 167 }, + { 31, 0x02, 167 }, + { 41, 0x02, 167 }, + { 56, 0x03, 167 }, + { 3, 0x02, 172 }, + { 6, 0x02, 172 }, + { 10, 0x02, 172 }, + { 15, 0x02, 172 }, + { 24, 0x02, 172 }, + { 31, 0x02, 172 }, + { 41, 0x02, 172 }, + { 56, 0x03, 172 }, + }, + /* 110 */ + { + { 114, 0x00, 0 }, + { 115, 0x00, 0 }, + { 117, 0x00, 0 }, + { 118, 0x00, 0 }, + { 121, 0x00, 0 }, + { 123, 0x00, 0 }, + { 127, 0x00, 0 }, + { 130, 0x00, 0 }, + { 136, 0x00, 0 }, + { 139, 0x00, 0 }, + { 143, 0x00, 0 }, + { 146, 0x00, 0 }, + { 155, 0x00, 0 }, + { 162, 0x00, 0 }, + { 170, 0x00, 0 }, + { 180, 0x00, 0 }, + }, + /* 111 */ + { + { 0, 0x03, 176 }, + { 0, 0x03, 177 }, + { 0, 0x03, 179 }, + { 0, 0x03, 209 }, + { 0, 0x03, 216 }, + { 0, 0x03, 217 }, + { 0, 0x03, 227 }, + { 0, 0x03, 229 }, + { 0, 0x03, 230 }, + { 122, 0x00, 0 }, + { 124, 0x00, 0 }, + { 125, 0x00, 0 }, + { 128, 0x00, 0 }, + { 129, 0x00, 0 }, + { 131, 0x00, 0 }, + { 132, 0x00, 0 }, + }, + /* 112 */ + { + { 1, 0x02, 176 }, + { 22, 0x03, 176 }, + { 1, 0x02, 177 }, + { 22, 0x03, 177 }, + { 1, 0x02, 179 }, + { 22, 0x03, 179 }, + { 1, 0x02, 209 }, + { 22, 0x03, 209 }, + { 1, 0x02, 216 }, + { 22, 0x03, 216 }, + { 1, 0x02, 217 }, + { 22, 0x03, 217 }, + { 1, 0x02, 227 }, + { 22, 0x03, 227 }, + { 1, 0x02, 229 }, + { 22, 0x03, 229 }, + }, + /* 113 */ + { + { 2, 0x02, 176 }, + { 9, 0x02, 176 }, + { 23, 0x02, 176 }, + { 40, 0x03, 176 }, + { 2, 0x02, 177 }, + { 9, 0x02, 177 }, + { 23, 0x02, 177 }, + { 40, 0x03, 177 }, + { 2, 0x02, 179 }, + { 9, 0x02, 179 }, + { 23, 0x02, 179 }, + { 40, 0x03, 179 }, + { 2, 0x02, 209 }, + { 9, 0x02, 209 }, + { 23, 0x02, 209 }, + { 40, 0x03, 209 }, + }, + /* 114 */ + { + { 3, 0x02, 176 }, + { 6, 0x02, 176 }, + { 10, 0x02, 176 }, + { 15, 0x02, 176 }, + { 24, 0x02, 176 }, + { 31, 0x02, 176 }, + { 41, 0x02, 176 }, + { 56, 0x03, 176 }, + { 3, 0x02, 177 }, + { 6, 0x02, 177 }, + { 10, 0x02, 177 }, + { 15, 0x02, 177 }, + { 24, 0x02, 177 }, + { 31, 0x02, 177 }, + { 41, 0x02, 177 }, + { 56, 0x03, 177 }, + }, + /* 115 */ + { + { 3, 0x02, 179 }, + { 6, 0x02, 179 }, + { 10, 0x02, 179 }, + { 15, 0x02, 179 }, + { 24, 0x02, 179 }, + { 31, 0x02, 179 }, + { 41, 0x02, 179 }, + { 56, 0x03, 179 }, + { 3, 0x02, 209 }, + { 6, 0x02, 209 }, + { 10, 0x02, 209 }, + { 15, 0x02, 209 }, + { 24, 0x02, 209 }, + { 31, 0x02, 209 }, + { 41, 0x02, 209 }, + { 56, 0x03, 209 }, + }, + /* 116 */ + { + { 2, 0x02, 216 }, + { 9, 0x02, 216 }, + { 23, 0x02, 216 }, + { 40, 0x03, 216 }, + { 2, 0x02, 217 }, + { 9, 0x02, 217 }, + { 23, 0x02, 217 }, + { 40, 0x03, 217 }, + { 2, 0x02, 227 }, + { 9, 0x02, 227 }, + { 23, 0x02, 227 }, + { 40, 0x03, 227 }, + { 2, 0x02, 229 }, + { 9, 0x02, 229 }, + { 23, 0x02, 229 }, + { 40, 0x03, 229 }, + }, + /* 117 */ + { + { 3, 0x02, 216 }, + { 6, 0x02, 216 }, + { 10, 0x02, 216 }, + { 15, 0x02, 216 }, + { 24, 0x02, 216 }, + { 31, 0x02, 216 }, + { 41, 0x02, 216 }, + { 56, 0x03, 216 }, + { 3, 0x02, 217 }, + { 6, 0x02, 217 }, + { 10, 0x02, 217 }, + { 15, 0x02, 217 }, + { 24, 0x02, 217 }, + { 31, 0x02, 217 }, + { 41, 0x02, 217 }, + { 56, 0x03, 217 }, + }, + /* 118 */ + { + { 3, 0x02, 227 }, + { 6, 0x02, 227 }, + { 10, 0x02, 227 }, + { 15, 0x02, 227 }, + { 24, 0x02, 227 }, + { 31, 0x02, 227 }, + { 41, 0x02, 227 }, + { 56, 0x03, 227 }, + { 3, 0x02, 229 }, + { 6, 0x02, 229 }, + { 10, 0x02, 229 }, + { 15, 0x02, 229 }, + { 24, 0x02, 229 }, + { 31, 0x02, 229 }, + { 41, 0x02, 229 }, + { 56, 0x03, 229 }, + }, + /* 119 */ + { + { 1, 0x02, 230 }, + { 22, 0x03, 230 }, + { 0, 0x03, 129 }, + { 0, 0x03, 132 }, + { 0, 0x03, 133 }, + { 0, 0x03, 134 }, + { 0, 0x03, 136 }, + { 0, 0x03, 146 }, + { 0, 0x03, 154 }, + { 0, 0x03, 156 }, + { 0, 0x03, 160 }, + { 0, 0x03, 163 }, + { 0, 0x03, 164 }, + { 0, 0x03, 169 }, + { 0, 0x03, 170 }, + { 0, 0x03, 173 }, + }, + /* 120 */ + { + { 2, 0x02, 230 }, + { 9, 0x02, 230 }, + { 23, 0x02, 230 }, + { 40, 0x03, 230 }, + { 1, 0x02, 129 }, + { 22, 0x03, 129 }, + { 1, 0x02, 132 }, + { 22, 0x03, 132 }, + { 1, 0x02, 133 }, + { 22, 0x03, 133 }, + { 1, 0x02, 134 }, + { 22, 0x03, 134 }, + { 1, 0x02, 136 }, + { 22, 0x03, 136 }, + { 1, 0x02, 146 }, + { 22, 0x03, 146 }, + }, + /* 121 */ + { + { 3, 0x02, 230 }, + { 6, 0x02, 230 }, + { 10, 0x02, 230 }, + { 15, 0x02, 230 }, + { 24, 0x02, 230 }, + { 31, 0x02, 230 }, + { 41, 0x02, 230 }, + { 56, 0x03, 230 }, + { 2, 0x02, 129 }, + { 9, 0x02, 129 }, + { 23, 0x02, 129 }, + { 40, 0x03, 129 }, + { 2, 0x02, 132 }, + { 9, 0x02, 132 }, + { 23, 0x02, 132 }, + { 40, 0x03, 132 }, + }, + /* 122 */ + { + { 3, 0x02, 129 }, + { 6, 0x02, 129 }, + { 10, 0x02, 129 }, + { 15, 0x02, 129 }, + { 24, 0x02, 129 }, + { 31, 0x02, 129 }, + { 41, 0x02, 129 }, + { 56, 0x03, 129 }, + { 3, 0x02, 132 }, + { 6, 0x02, 132 }, + { 10, 0x02, 132 }, + { 15, 0x02, 132 }, + { 24, 0x02, 132 }, + { 31, 0x02, 132 }, + { 41, 0x02, 132 }, + { 56, 0x03, 132 }, + }, + /* 123 */ + { + { 2, 0x02, 133 }, + { 9, 0x02, 133 }, + { 23, 0x02, 133 }, + { 40, 0x03, 133 }, + { 2, 0x02, 134 }, + { 9, 0x02, 134 }, + { 23, 0x02, 134 }, + { 40, 0x03, 134 }, + { 2, 0x02, 136 }, + { 9, 0x02, 136 }, + { 23, 0x02, 136 }, + { 40, 0x03, 136 }, + { 2, 0x02, 146 }, + { 9, 0x02, 146 }, + { 23, 0x02, 146 }, + { 40, 0x03, 146 }, + }, + /* 124 */ + { + { 3, 0x02, 133 }, + { 6, 0x02, 133 }, + { 10, 0x02, 133 }, + { 15, 0x02, 133 }, + { 24, 0x02, 133 }, + { 31, 0x02, 133 }, + { 41, 0x02, 133 }, + { 56, 0x03, 133 }, + { 3, 0x02, 134 }, + { 6, 0x02, 134 }, + { 10, 0x02, 134 }, + { 15, 0x02, 134 }, + { 24, 0x02, 134 }, + { 31, 0x02, 134 }, + { 41, 0x02, 134 }, + { 56, 0x03, 134 }, + }, + /* 125 */ + { + { 3, 0x02, 136 }, + { 6, 0x02, 136 }, + { 10, 0x02, 136 }, + { 15, 0x02, 136 }, + { 24, 0x02, 136 }, + { 31, 0x02, 136 }, + { 41, 0x02, 136 }, + { 56, 0x03, 136 }, + { 3, 0x02, 146 }, + { 6, 0x02, 146 }, + { 10, 0x02, 146 }, + { 15, 0x02, 146 }, + { 24, 0x02, 146 }, + { 31, 0x02, 146 }, + { 41, 0x02, 146 }, + { 56, 0x03, 146 }, + }, + /* 126 */ + { + { 1, 0x02, 154 }, + { 22, 0x03, 154 }, + { 1, 0x02, 156 }, + { 22, 0x03, 156 }, + { 1, 0x02, 160 }, + { 22, 0x03, 160 }, + { 1, 0x02, 163 }, + { 22, 0x03, 163 }, + { 1, 0x02, 164 }, + { 22, 0x03, 164 }, + { 1, 0x02, 169 }, + { 22, 0x03, 169 }, + { 1, 0x02, 170 }, + { 22, 0x03, 170 }, + { 1, 0x02, 173 }, + { 22, 0x03, 173 }, + }, + /* 127 */ + { + { 2, 0x02, 154 }, + { 9, 0x02, 154 }, + { 23, 0x02, 154 }, + { 40, 0x03, 154 }, + { 2, 0x02, 156 }, + { 9, 0x02, 156 }, + { 23, 0x02, 156 }, + { 40, 0x03, 156 }, + { 2, 0x02, 160 }, + { 9, 0x02, 160 }, + { 23, 0x02, 160 }, + { 40, 0x03, 160 }, + { 2, 0x02, 163 }, + { 9, 0x02, 163 }, + { 23, 0x02, 163 }, + { 40, 0x03, 163 }, + }, + /* 128 */ + { + { 3, 0x02, 154 }, + { 6, 0x02, 154 }, + { 10, 0x02, 154 }, + { 15, 0x02, 154 }, + { 24, 0x02, 154 }, + { 31, 0x02, 154 }, + { 41, 0x02, 154 }, + { 56, 0x03, 154 }, + { 3, 0x02, 156 }, + { 6, 0x02, 156 }, + { 10, 0x02, 156 }, + { 15, 0x02, 156 }, + { 24, 0x02, 156 }, + { 31, 0x02, 156 }, + { 41, 0x02, 156 }, + { 56, 0x03, 156 }, + }, + /* 129 */ + { + { 3, 0x02, 160 }, + { 6, 0x02, 160 }, + { 10, 0x02, 160 }, + { 15, 0x02, 160 }, + { 24, 0x02, 160 }, + { 31, 0x02, 160 }, + { 41, 0x02, 160 }, + { 56, 0x03, 160 }, + { 3, 0x02, 163 }, + { 6, 0x02, 163 }, + { 10, 0x02, 163 }, + { 15, 0x02, 163 }, + { 24, 0x02, 163 }, + { 31, 0x02, 163 }, + { 41, 0x02, 163 }, + { 56, 0x03, 163 }, + }, + /* 130 */ + { + { 2, 0x02, 164 }, + { 9, 0x02, 164 }, + { 23, 0x02, 164 }, + { 40, 0x03, 164 }, + { 2, 0x02, 169 }, + { 9, 0x02, 169 }, + { 23, 0x02, 169 }, + { 40, 0x03, 169 }, + { 2, 0x02, 170 }, + { 9, 0x02, 170 }, + { 23, 0x02, 170 }, + { 40, 0x03, 170 }, + { 2, 0x02, 173 }, + { 9, 0x02, 173 }, + { 23, 0x02, 173 }, + { 40, 0x03, 173 }, + }, + /* 131 */ + { + { 3, 0x02, 164 }, + { 6, 0x02, 164 }, + { 10, 0x02, 164 }, + { 15, 0x02, 164 }, + { 24, 0x02, 164 }, + { 31, 0x02, 164 }, + { 41, 0x02, 164 }, + { 56, 0x03, 164 }, + { 3, 0x02, 169 }, + { 6, 0x02, 169 }, + { 10, 0x02, 169 }, + { 15, 0x02, 169 }, + { 24, 0x02, 169 }, + { 31, 0x02, 169 }, + { 41, 0x02, 169 }, + { 56, 0x03, 169 }, + }, + /* 132 */ + { + { 3, 0x02, 170 }, + { 6, 0x02, 170 }, + { 10, 0x02, 170 }, + { 15, 0x02, 170 }, + { 24, 0x02, 170 }, + { 31, 0x02, 170 }, + { 41, 0x02, 170 }, + { 56, 0x03, 170 }, + { 3, 0x02, 173 }, + { 6, 0x02, 173 }, + { 10, 0x02, 173 }, + { 15, 0x02, 173 }, + { 24, 0x02, 173 }, + { 31, 0x02, 173 }, + { 41, 0x02, 173 }, + { 56, 0x03, 173 }, + }, + /* 133 */ + { + { 137, 0x00, 0 }, + { 138, 0x00, 0 }, + { 140, 0x00, 0 }, + { 141, 0x00, 0 }, + { 144, 0x00, 0 }, + { 145, 0x00, 0 }, + { 147, 0x00, 0 }, + { 150, 0x00, 0 }, + { 156, 0x00, 0 }, + { 159, 0x00, 0 }, + { 163, 0x00, 0 }, + { 166, 0x00, 0 }, + { 171, 0x00, 0 }, + { 174, 0x00, 0 }, + { 181, 0x00, 0 }, + { 190, 0x00, 0 }, + }, + /* 134 */ + { + { 0, 0x03, 178 }, + { 0, 0x03, 181 }, + { 0, 0x03, 185 }, + { 0, 0x03, 186 }, + { 0, 0x03, 187 }, + { 0, 0x03, 189 }, + { 0, 0x03, 190 }, + { 0, 0x03, 196 }, + { 0, 0x03, 198 }, + { 0, 0x03, 228 }, + { 0, 0x03, 232 }, + { 0, 0x03, 233 }, + { 148, 0x00, 0 }, + { 149, 0x00, 0 }, + { 151, 0x00, 0 }, + { 152, 0x00, 0 }, + }, + /* 135 */ + { + { 1, 0x02, 178 }, + { 22, 0x03, 178 }, + { 1, 0x02, 181 }, + { 22, 0x03, 181 }, + { 1, 0x02, 185 }, + { 22, 0x03, 185 }, + { 1, 0x02, 186 }, + { 22, 0x03, 186 }, + { 1, 0x02, 187 }, + { 22, 0x03, 187 }, + { 1, 0x02, 189 }, + { 22, 0x03, 189 }, + { 1, 0x02, 190 }, + { 22, 0x03, 190 }, + { 1, 0x02, 196 }, + { 22, 0x03, 196 }, + }, + /* 136 */ + { + { 2, 0x02, 178 }, + { 9, 0x02, 178 }, + { 23, 0x02, 178 }, + { 40, 0x03, 178 }, + { 2, 0x02, 181 }, + { 9, 0x02, 181 }, + { 23, 0x02, 181 }, + { 40, 0x03, 181 }, + { 2, 0x02, 185 }, + { 9, 0x02, 185 }, + { 23, 0x02, 185 }, + { 40, 0x03, 185 }, + { 2, 0x02, 186 }, + { 9, 0x02, 186 }, + { 23, 0x02, 186 }, + { 40, 0x03, 186 }, + }, + /* 137 */ + { + { 3, 0x02, 178 }, + { 6, 0x02, 178 }, + { 10, 0x02, 178 }, + { 15, 0x02, 178 }, + { 24, 0x02, 178 }, + { 31, 0x02, 178 }, + { 41, 0x02, 178 }, + { 56, 0x03, 178 }, + { 3, 0x02, 181 }, + { 6, 0x02, 181 }, + { 10, 0x02, 181 }, + { 15, 0x02, 181 }, + { 24, 0x02, 181 }, + { 31, 0x02, 181 }, + { 41, 0x02, 181 }, + { 56, 0x03, 181 }, + }, + /* 138 */ + { + { 3, 0x02, 185 }, + { 6, 0x02, 185 }, + { 10, 0x02, 185 }, + { 15, 0x02, 185 }, + { 24, 0x02, 185 }, + { 31, 0x02, 185 }, + { 41, 0x02, 185 }, + { 56, 0x03, 185 }, + { 3, 0x02, 186 }, + { 6, 0x02, 186 }, + { 10, 0x02, 186 }, + { 15, 0x02, 186 }, + { 24, 0x02, 186 }, + { 31, 0x02, 186 }, + { 41, 0x02, 186 }, + { 56, 0x03, 186 }, + }, + /* 139 */ + { + { 2, 0x02, 187 }, + { 9, 0x02, 187 }, + { 23, 0x02, 187 }, + { 40, 0x03, 187 }, + { 2, 0x02, 189 }, + { 9, 0x02, 189 }, + { 23, 0x02, 189 }, + { 40, 0x03, 189 }, + { 2, 0x02, 190 }, + { 9, 0x02, 190 }, + { 23, 0x02, 190 }, + { 40, 0x03, 190 }, + { 2, 0x02, 196 }, + { 9, 0x02, 196 }, + { 23, 0x02, 196 }, + { 40, 0x03, 196 }, + }, + /* 140 */ + { + { 3, 0x02, 187 }, + { 6, 0x02, 187 }, + { 10, 0x02, 187 }, + { 15, 0x02, 187 }, + { 24, 0x02, 187 }, + { 31, 0x02, 187 }, + { 41, 0x02, 187 }, + { 56, 0x03, 187 }, + { 3, 0x02, 189 }, + { 6, 0x02, 189 }, + { 10, 0x02, 189 }, + { 15, 0x02, 189 }, + { 24, 0x02, 189 }, + { 31, 0x02, 189 }, + { 41, 0x02, 189 }, + { 56, 0x03, 189 }, + }, + /* 141 */ + { + { 3, 0x02, 190 }, + { 6, 0x02, 190 }, + { 10, 0x02, 190 }, + { 15, 0x02, 190 }, + { 24, 0x02, 190 }, + { 31, 0x02, 190 }, + { 41, 0x02, 190 }, + { 56, 0x03, 190 }, + { 3, 0x02, 196 }, + { 6, 0x02, 196 }, + { 10, 0x02, 196 }, + { 15, 0x02, 196 }, + { 24, 0x02, 196 }, + { 31, 0x02, 196 }, + { 41, 0x02, 196 }, + { 56, 0x03, 196 }, + }, + /* 142 */ + { + { 1, 0x02, 198 }, + { 22, 0x03, 198 }, + { 1, 0x02, 228 }, + { 22, 0x03, 228 }, + { 1, 0x02, 232 }, + { 22, 0x03, 232 }, + { 1, 0x02, 233 }, + { 22, 0x03, 233 }, + { 0, 0x03, 1 }, + { 0, 0x03, 135 }, + { 0, 0x03, 137 }, + { 0, 0x03, 138 }, + { 0, 0x03, 139 }, + { 0, 0x03, 140 }, + { 0, 0x03, 141 }, + { 0, 0x03, 143 }, + }, + /* 143 */ + { + { 2, 0x02, 198 }, + { 9, 0x02, 198 }, + { 23, 0x02, 198 }, + { 40, 0x03, 198 }, + { 2, 0x02, 228 }, + { 9, 0x02, 228 }, + { 23, 0x02, 228 }, + { 40, 0x03, 228 }, + { 2, 0x02, 232 }, + { 9, 0x02, 232 }, + { 23, 0x02, 232 }, + { 40, 0x03, 232 }, + { 2, 0x02, 233 }, + { 9, 0x02, 233 }, + { 23, 0x02, 233 }, + { 40, 0x03, 233 }, + }, + /* 144 */ + { + { 3, 0x02, 198 }, + { 6, 0x02, 198 }, + { 10, 0x02, 198 }, + { 15, 0x02, 198 }, + { 24, 0x02, 198 }, + { 31, 0x02, 198 }, + { 41, 0x02, 198 }, + { 56, 0x03, 198 }, + { 3, 0x02, 228 }, + { 6, 0x02, 228 }, + { 10, 0x02, 228 }, + { 15, 0x02, 228 }, + { 24, 0x02, 228 }, + { 31, 0x02, 228 }, + { 41, 0x02, 228 }, + { 56, 0x03, 228 }, + }, + /* 145 */ + { + { 3, 0x02, 232 }, + { 6, 0x02, 232 }, + { 10, 0x02, 232 }, + { 15, 0x02, 232 }, + { 24, 0x02, 232 }, + { 31, 0x02, 232 }, + { 41, 0x02, 232 }, + { 56, 0x03, 232 }, + { 3, 0x02, 233 }, + { 6, 0x02, 233 }, + { 10, 0x02, 233 }, + { 15, 0x02, 233 }, + { 24, 0x02, 233 }, + { 31, 0x02, 233 }, + { 41, 0x02, 233 }, + { 56, 0x03, 233 }, + }, + /* 146 */ + { + { 1, 0x02, 1 }, + { 22, 0x03, 1 }, + { 1, 0x02, 135 }, + { 22, 0x03, 135 }, + { 1, 0x02, 137 }, + { 22, 0x03, 137 }, + { 1, 0x02, 138 }, + { 22, 0x03, 138 }, + { 1, 0x02, 139 }, + { 22, 0x03, 139 }, + { 1, 0x02, 140 }, + { 22, 0x03, 140 }, + { 1, 0x02, 141 }, + { 22, 0x03, 141 }, + { 1, 0x02, 143 }, + { 22, 0x03, 143 }, + }, + /* 147 */ + { + { 2, 0x02, 1 }, + { 9, 0x02, 1 }, + { 23, 0x02, 1 }, + { 40, 0x03, 1 }, + { 2, 0x02, 135 }, + { 9, 0x02, 135 }, + { 23, 0x02, 135 }, + { 40, 0x03, 135 }, + { 2, 0x02, 137 }, + { 9, 0x02, 137 }, + { 23, 0x02, 137 }, + { 40, 0x03, 137 }, + { 2, 0x02, 138 }, + { 9, 0x02, 138 }, + { 23, 0x02, 138 }, + { 40, 0x03, 138 }, + }, + /* 148 */ + { + { 3, 0x02, 1 }, + { 6, 0x02, 1 }, + { 10, 0x02, 1 }, + { 15, 0x02, 1 }, + { 24, 0x02, 1 }, + { 31, 0x02, 1 }, + { 41, 0x02, 1 }, + { 56, 0x03, 1 }, + { 3, 0x02, 135 }, + { 6, 0x02, 135 }, + { 10, 0x02, 135 }, + { 15, 0x02, 135 }, + { 24, 0x02, 135 }, + { 31, 0x02, 135 }, + { 41, 0x02, 135 }, + { 56, 0x03, 135 }, + }, + /* 149 */ + { + { 3, 0x02, 137 }, + { 6, 0x02, 137 }, + { 10, 0x02, 137 }, + { 15, 0x02, 137 }, + { 24, 0x02, 137 }, + { 31, 0x02, 137 }, + { 41, 0x02, 137 }, + { 56, 0x03, 137 }, + { 3, 0x02, 138 }, + { 6, 0x02, 138 }, + { 10, 0x02, 138 }, + { 15, 0x02, 138 }, + { 24, 0x02, 138 }, + { 31, 0x02, 138 }, + { 41, 0x02, 138 }, + { 56, 0x03, 138 }, + }, + /* 150 */ + { + { 2, 0x02, 139 }, + { 9, 0x02, 139 }, + { 23, 0x02, 139 }, + { 40, 0x03, 139 }, + { 2, 0x02, 140 }, + { 9, 0x02, 140 }, + { 23, 0x02, 140 }, + { 40, 0x03, 140 }, + { 2, 0x02, 141 }, + { 9, 0x02, 141 }, + { 23, 0x02, 141 }, + { 40, 0x03, 141 }, + { 2, 0x02, 143 }, + { 9, 0x02, 143 }, + { 23, 0x02, 143 }, + { 40, 0x03, 143 }, + }, + /* 151 */ + { + { 3, 0x02, 139 }, + { 6, 0x02, 139 }, + { 10, 0x02, 139 }, + { 15, 0x02, 139 }, + { 24, 0x02, 139 }, + { 31, 0x02, 139 }, + { 41, 0x02, 139 }, + { 56, 0x03, 139 }, + { 3, 0x02, 140 }, + { 6, 0x02, 140 }, + { 10, 0x02, 140 }, + { 15, 0x02, 140 }, + { 24, 0x02, 140 }, + { 31, 0x02, 140 }, + { 41, 0x02, 140 }, + { 56, 0x03, 140 }, + }, + /* 152 */ + { + { 3, 0x02, 141 }, + { 6, 0x02, 141 }, + { 10, 0x02, 141 }, + { 15, 0x02, 141 }, + { 24, 0x02, 141 }, + { 31, 0x02, 141 }, + { 41, 0x02, 141 }, + { 56, 0x03, 141 }, + { 3, 0x02, 143 }, + { 6, 0x02, 143 }, + { 10, 0x02, 143 }, + { 15, 0x02, 143 }, + { 24, 0x02, 143 }, + { 31, 0x02, 143 }, + { 41, 0x02, 143 }, + { 56, 0x03, 143 }, + }, + /* 153 */ + { + { 157, 0x00, 0 }, + { 158, 0x00, 0 }, + { 160, 0x00, 0 }, + { 161, 0x00, 0 }, + { 164, 0x00, 0 }, + { 165, 0x00, 0 }, + { 167, 0x00, 0 }, + { 168, 0x00, 0 }, + { 172, 0x00, 0 }, + { 173, 0x00, 0 }, + { 175, 0x00, 0 }, + { 177, 0x00, 0 }, + { 182, 0x00, 0 }, + { 185, 0x00, 0 }, + { 191, 0x00, 0 }, + { 207, 0x00, 0 }, + }, + /* 154 */ + { + { 0, 0x03, 147 }, + { 0, 0x03, 149 }, + { 0, 0x03, 150 }, + { 0, 0x03, 151 }, + { 0, 0x03, 152 }, + { 0, 0x03, 155 }, + { 0, 0x03, 157 }, + { 0, 0x03, 158 }, + { 0, 0x03, 165 }, + { 0, 0x03, 166 }, + { 0, 0x03, 168 }, + { 0, 0x03, 174 }, + { 0, 0x03, 175 }, + { 0, 0x03, 180 }, + { 0, 0x03, 182 }, + { 0, 0x03, 183 }, + }, + /* 155 */ + { + { 1, 0x02, 147 }, + { 22, 0x03, 147 }, + { 1, 0x02, 149 }, + { 22, 0x03, 149 }, + { 1, 0x02, 150 }, + { 22, 0x03, 150 }, + { 1, 0x02, 151 }, + { 22, 0x03, 151 }, + { 1, 0x02, 152 }, + { 22, 0x03, 152 }, + { 1, 0x02, 155 }, + { 22, 0x03, 155 }, + { 1, 0x02, 157 }, + { 22, 0x03, 157 }, + { 1, 0x02, 158 }, + { 22, 0x03, 158 }, + }, + /* 156 */ + { + { 2, 0x02, 147 }, + { 9, 0x02, 147 }, + { 23, 0x02, 147 }, + { 40, 0x03, 147 }, + { 2, 0x02, 149 }, + { 9, 0x02, 149 }, + { 23, 0x02, 149 }, + { 40, 0x03, 149 }, + { 2, 0x02, 150 }, + { 9, 0x02, 150 }, + { 23, 0x02, 150 }, + { 40, 0x03, 150 }, + { 2, 0x02, 151 }, + { 9, 0x02, 151 }, + { 23, 0x02, 151 }, + { 40, 0x03, 151 }, + }, + /* 157 */ + { + { 3, 0x02, 147 }, + { 6, 0x02, 147 }, + { 10, 0x02, 147 }, + { 15, 0x02, 147 }, + { 24, 0x02, 147 }, + { 31, 0x02, 147 }, + { 41, 0x02, 147 }, + { 56, 0x03, 147 }, + { 3, 0x02, 149 }, + { 6, 0x02, 149 }, + { 10, 0x02, 149 }, + { 15, 0x02, 149 }, + { 24, 0x02, 149 }, + { 31, 0x02, 149 }, + { 41, 0x02, 149 }, + { 56, 0x03, 149 }, + }, + /* 158 */ + { + { 3, 0x02, 150 }, + { 6, 0x02, 150 }, + { 10, 0x02, 150 }, + { 15, 0x02, 150 }, + { 24, 0x02, 150 }, + { 31, 0x02, 150 }, + { 41, 0x02, 150 }, + { 56, 0x03, 150 }, + { 3, 0x02, 151 }, + { 6, 0x02, 151 }, + { 10, 0x02, 151 }, + { 15, 0x02, 151 }, + { 24, 0x02, 151 }, + { 31, 0x02, 151 }, + { 41, 0x02, 151 }, + { 56, 0x03, 151 }, + }, + /* 159 */ + { + { 2, 0x02, 152 }, + { 9, 0x02, 152 }, + { 23, 0x02, 152 }, + { 40, 0x03, 152 }, + { 2, 0x02, 155 }, + { 9, 0x02, 155 }, + { 23, 0x02, 155 }, + { 40, 0x03, 155 }, + { 2, 0x02, 157 }, + { 9, 0x02, 157 }, + { 23, 0x02, 157 }, + { 40, 0x03, 157 }, + { 2, 0x02, 158 }, + { 9, 0x02, 158 }, + { 23, 0x02, 158 }, + { 40, 0x03, 158 }, + }, + /* 160 */ + { + { 3, 0x02, 152 }, + { 6, 0x02, 152 }, + { 10, 0x02, 152 }, + { 15, 0x02, 152 }, + { 24, 0x02, 152 }, + { 31, 0x02, 152 }, + { 41, 0x02, 152 }, + { 56, 0x03, 152 }, + { 3, 0x02, 155 }, + { 6, 0x02, 155 }, + { 10, 0x02, 155 }, + { 15, 0x02, 155 }, + { 24, 0x02, 155 }, + { 31, 0x02, 155 }, + { 41, 0x02, 155 }, + { 56, 0x03, 155 }, + }, + /* 161 */ + { + { 3, 0x02, 157 }, + { 6, 0x02, 157 }, + { 10, 0x02, 157 }, + { 15, 0x02, 157 }, + { 24, 0x02, 157 }, + { 31, 0x02, 157 }, + { 41, 0x02, 157 }, + { 56, 0x03, 157 }, + { 3, 0x02, 158 }, + { 6, 0x02, 158 }, + { 10, 0x02, 158 }, + { 15, 0x02, 158 }, + { 24, 0x02, 158 }, + { 31, 0x02, 158 }, + { 41, 0x02, 158 }, + { 56, 0x03, 158 }, + }, + /* 162 */ + { + { 1, 0x02, 165 }, + { 22, 0x03, 165 }, + { 1, 0x02, 166 }, + { 22, 0x03, 166 }, + { 1, 0x02, 168 }, + { 22, 0x03, 168 }, + { 1, 0x02, 174 }, + { 22, 0x03, 174 }, + { 1, 0x02, 175 }, + { 22, 0x03, 175 }, + { 1, 0x02, 180 }, + { 22, 0x03, 180 }, + { 1, 0x02, 182 }, + { 22, 0x03, 182 }, + { 1, 0x02, 183 }, + { 22, 0x03, 183 }, + }, + /* 163 */ + { + { 2, 0x02, 165 }, + { 9, 0x02, 165 }, + { 23, 0x02, 165 }, + { 40, 0x03, 165 }, + { 2, 0x02, 166 }, + { 9, 0x02, 166 }, + { 23, 0x02, 166 }, + { 40, 0x03, 166 }, + { 2, 0x02, 168 }, + { 9, 0x02, 168 }, + { 23, 0x02, 168 }, + { 40, 0x03, 168 }, + { 2, 0x02, 174 }, + { 9, 0x02, 174 }, + { 23, 0x02, 174 }, + { 40, 0x03, 174 }, + }, + /* 164 */ + { + { 3, 0x02, 165 }, + { 6, 0x02, 165 }, + { 10, 0x02, 165 }, + { 15, 0x02, 165 }, + { 24, 0x02, 165 }, + { 31, 0x02, 165 }, + { 41, 0x02, 165 }, + { 56, 0x03, 165 }, + { 3, 0x02, 166 }, + { 6, 0x02, 166 }, + { 10, 0x02, 166 }, + { 15, 0x02, 166 }, + { 24, 0x02, 166 }, + { 31, 0x02, 166 }, + { 41, 0x02, 166 }, + { 56, 0x03, 166 }, + }, + /* 165 */ + { + { 3, 0x02, 168 }, + { 6, 0x02, 168 }, + { 10, 0x02, 168 }, + { 15, 0x02, 168 }, + { 24, 0x02, 168 }, + { 31, 0x02, 168 }, + { 41, 0x02, 168 }, + { 56, 0x03, 168 }, + { 3, 0x02, 174 }, + { 6, 0x02, 174 }, + { 10, 0x02, 174 }, + { 15, 0x02, 174 }, + { 24, 0x02, 174 }, + { 31, 0x02, 174 }, + { 41, 0x02, 174 }, + { 56, 0x03, 174 }, + }, + /* 166 */ + { + { 2, 0x02, 175 }, + { 9, 0x02, 175 }, + { 23, 0x02, 175 }, + { 40, 0x03, 175 }, + { 2, 0x02, 180 }, + { 9, 0x02, 180 }, + { 23, 0x02, 180 }, + { 40, 0x03, 180 }, + { 2, 0x02, 182 }, + { 9, 0x02, 182 }, + { 23, 0x02, 182 }, + { 40, 0x03, 182 }, + { 2, 0x02, 183 }, + { 9, 0x02, 183 }, + { 23, 0x02, 183 }, + { 40, 0x03, 183 }, + }, + /* 167 */ + { + { 3, 0x02, 175 }, + { 6, 0x02, 175 }, + { 10, 0x02, 175 }, + { 15, 0x02, 175 }, + { 24, 0x02, 175 }, + { 31, 0x02, 175 }, + { 41, 0x02, 175 }, + { 56, 0x03, 175 }, + { 3, 0x02, 180 }, + { 6, 0x02, 180 }, + { 10, 0x02, 180 }, + { 15, 0x02, 180 }, + { 24, 0x02, 180 }, + { 31, 0x02, 180 }, + { 41, 0x02, 180 }, + { 56, 0x03, 180 }, + }, + /* 168 */ + { + { 3, 0x02, 182 }, + { 6, 0x02, 182 }, + { 10, 0x02, 182 }, + { 15, 0x02, 182 }, + { 24, 0x02, 182 }, + { 31, 0x02, 182 }, + { 41, 0x02, 182 }, + { 56, 0x03, 182 }, + { 3, 0x02, 183 }, + { 6, 0x02, 183 }, + { 10, 0x02, 183 }, + { 15, 0x02, 183 }, + { 24, 0x02, 183 }, + { 31, 0x02, 183 }, + { 41, 0x02, 183 }, + { 56, 0x03, 183 }, + }, + /* 169 */ + { + { 0, 0x03, 188 }, + { 0, 0x03, 191 }, + { 0, 0x03, 197 }, + { 0, 0x03, 231 }, + { 0, 0x03, 239 }, + { 176, 0x00, 0 }, + { 178, 0x00, 0 }, + { 179, 0x00, 0 }, + { 183, 0x00, 0 }, + { 184, 0x00, 0 }, + { 186, 0x00, 0 }, + { 187, 0x00, 0 }, + { 192, 0x00, 0 }, + { 199, 0x00, 0 }, + { 208, 0x00, 0 }, + { 223, 0x00, 0 }, + }, + /* 170 */ + { + { 1, 0x02, 188 }, + { 22, 0x03, 188 }, + { 1, 0x02, 191 }, + { 22, 0x03, 191 }, + { 1, 0x02, 197 }, + { 22, 0x03, 197 }, + { 1, 0x02, 231 }, + { 22, 0x03, 231 }, + { 1, 0x02, 239 }, + { 22, 0x03, 239 }, + { 0, 0x03, 9 }, + { 0, 0x03, 142 }, + { 0, 0x03, 144 }, + { 0, 0x03, 145 }, + { 0, 0x03, 148 }, + { 0, 0x03, 159 }, + }, + /* 171 */ + { + { 2, 0x02, 188 }, + { 9, 0x02, 188 }, + { 23, 0x02, 188 }, + { 40, 0x03, 188 }, + { 2, 0x02, 191 }, + { 9, 0x02, 191 }, + { 23, 0x02, 191 }, + { 40, 0x03, 191 }, + { 2, 0x02, 197 }, + { 9, 0x02, 197 }, + { 23, 0x02, 197 }, + { 40, 0x03, 197 }, + { 2, 0x02, 231 }, + { 9, 0x02, 231 }, + { 23, 0x02, 231 }, + { 40, 0x03, 231 }, + }, + /* 172 */ + { + { 3, 0x02, 188 }, + { 6, 0x02, 188 }, + { 10, 0x02, 188 }, + { 15, 0x02, 188 }, + { 24, 0x02, 188 }, + { 31, 0x02, 188 }, + { 41, 0x02, 188 }, + { 56, 0x03, 188 }, + { 3, 0x02, 191 }, + { 6, 0x02, 191 }, + { 10, 0x02, 191 }, + { 15, 0x02, 191 }, + { 24, 0x02, 191 }, + { 31, 0x02, 191 }, + { 41, 0x02, 191 }, + { 56, 0x03, 191 }, + }, + /* 173 */ + { + { 3, 0x02, 197 }, + { 6, 0x02, 197 }, + { 10, 0x02, 197 }, + { 15, 0x02, 197 }, + { 24, 0x02, 197 }, + { 31, 0x02, 197 }, + { 41, 0x02, 197 }, + { 56, 0x03, 197 }, + { 3, 0x02, 231 }, + { 6, 0x02, 231 }, + { 10, 0x02, 231 }, + { 15, 0x02, 231 }, + { 24, 0x02, 231 }, + { 31, 0x02, 231 }, + { 41, 0x02, 231 }, + { 56, 0x03, 231 }, + }, + /* 174 */ + { + { 2, 0x02, 239 }, + { 9, 0x02, 239 }, + { 23, 0x02, 239 }, + { 40, 0x03, 239 }, + { 1, 0x02, 9 }, + { 22, 0x03, 9 }, + { 1, 0x02, 142 }, + { 22, 0x03, 142 }, + { 1, 0x02, 144 }, + { 22, 0x03, 144 }, + { 1, 0x02, 145 }, + { 22, 0x03, 145 }, + { 1, 0x02, 148 }, + { 22, 0x03, 148 }, + { 1, 0x02, 159 }, + { 22, 0x03, 159 }, + }, + /* 175 */ + { + { 3, 0x02, 239 }, + { 6, 0x02, 239 }, + { 10, 0x02, 239 }, + { 15, 0x02, 239 }, + { 24, 0x02, 239 }, + { 31, 0x02, 239 }, + { 41, 0x02, 239 }, + { 56, 0x03, 239 }, + { 2, 0x02, 9 }, + { 9, 0x02, 9 }, + { 23, 0x02, 9 }, + { 40, 0x03, 9 }, + { 2, 0x02, 142 }, + { 9, 0x02, 142 }, + { 23, 0x02, 142 }, + { 40, 0x03, 142 }, + }, + /* 176 */ + { + { 3, 0x02, 9 }, + { 6, 0x02, 9 }, + { 10, 0x02, 9 }, + { 15, 0x02, 9 }, + { 24, 0x02, 9 }, + { 31, 0x02, 9 }, + { 41, 0x02, 9 }, + { 56, 0x03, 9 }, + { 3, 0x02, 142 }, + { 6, 0x02, 142 }, + { 10, 0x02, 142 }, + { 15, 0x02, 142 }, + { 24, 0x02, 142 }, + { 31, 0x02, 142 }, + { 41, 0x02, 142 }, + { 56, 0x03, 142 }, + }, + /* 177 */ + { + { 2, 0x02, 144 }, + { 9, 0x02, 144 }, + { 23, 0x02, 144 }, + { 40, 0x03, 144 }, + { 2, 0x02, 145 }, + { 9, 0x02, 145 }, + { 23, 0x02, 145 }, + { 40, 0x03, 145 }, + { 2, 0x02, 148 }, + { 9, 0x02, 148 }, + { 23, 0x02, 148 }, + { 40, 0x03, 148 }, + { 2, 0x02, 159 }, + { 9, 0x02, 159 }, + { 23, 0x02, 159 }, + { 40, 0x03, 159 }, + }, + /* 178 */ + { + { 3, 0x02, 144 }, + { 6, 0x02, 144 }, + { 10, 0x02, 144 }, + { 15, 0x02, 144 }, + { 24, 0x02, 144 }, + { 31, 0x02, 144 }, + { 41, 0x02, 144 }, + { 56, 0x03, 144 }, + { 3, 0x02, 145 }, + { 6, 0x02, 145 }, + { 10, 0x02, 145 }, + { 15, 0x02, 145 }, + { 24, 0x02, 145 }, + { 31, 0x02, 145 }, + { 41, 0x02, 145 }, + { 56, 0x03, 145 }, + }, + /* 179 */ + { + { 3, 0x02, 148 }, + { 6, 0x02, 148 }, + { 10, 0x02, 148 }, + { 15, 0x02, 148 }, + { 24, 0x02, 148 }, + { 31, 0x02, 148 }, + { 41, 0x02, 148 }, + { 56, 0x03, 148 }, + { 3, 0x02, 159 }, + { 6, 0x02, 159 }, + { 10, 0x02, 159 }, + { 15, 0x02, 159 }, + { 24, 0x02, 159 }, + { 31, 0x02, 159 }, + { 41, 0x02, 159 }, + { 56, 0x03, 159 }, + }, + /* 180 */ + { + { 0, 0x03, 171 }, + { 0, 0x03, 206 }, + { 0, 0x03, 215 }, + { 0, 0x03, 225 }, + { 0, 0x03, 236 }, + { 0, 0x03, 237 }, + { 188, 0x00, 0 }, + { 189, 0x00, 0 }, + { 193, 0x00, 0 }, + { 196, 0x00, 0 }, + { 200, 0x00, 0 }, + { 203, 0x00, 0 }, + { 209, 0x00, 0 }, + { 216, 0x00, 0 }, + { 224, 0x00, 0 }, + { 238, 0x00, 0 }, + }, + /* 181 */ + { + { 1, 0x02, 171 }, + { 22, 0x03, 171 }, + { 1, 0x02, 206 }, + { 22, 0x03, 206 }, + { 1, 0x02, 215 }, + { 22, 0x03, 215 }, + { 1, 0x02, 225 }, + { 22, 0x03, 225 }, + { 1, 0x02, 236 }, + { 22, 0x03, 236 }, + { 1, 0x02, 237 }, + { 22, 0x03, 237 }, + { 0, 0x03, 199 }, + { 0, 0x03, 207 }, + { 0, 0x03, 234 }, + { 0, 0x03, 235 }, + }, + /* 182 */ + { + { 2, 0x02, 171 }, + { 9, 0x02, 171 }, + { 23, 0x02, 171 }, + { 40, 0x03, 171 }, + { 2, 0x02, 206 }, + { 9, 0x02, 206 }, + { 23, 0x02, 206 }, + { 40, 0x03, 206 }, + { 2, 0x02, 215 }, + { 9, 0x02, 215 }, + { 23, 0x02, 215 }, + { 40, 0x03, 215 }, + { 2, 0x02, 225 }, + { 9, 0x02, 225 }, + { 23, 0x02, 225 }, + { 40, 0x03, 225 }, + }, + /* 183 */ + { + { 3, 0x02, 171 }, + { 6, 0x02, 171 }, + { 10, 0x02, 171 }, + { 15, 0x02, 171 }, + { 24, 0x02, 171 }, + { 31, 0x02, 171 }, + { 41, 0x02, 171 }, + { 56, 0x03, 171 }, + { 3, 0x02, 206 }, + { 6, 0x02, 206 }, + { 10, 0x02, 206 }, + { 15, 0x02, 206 }, + { 24, 0x02, 206 }, + { 31, 0x02, 206 }, + { 41, 0x02, 206 }, + { 56, 0x03, 206 }, + }, + /* 184 */ + { + { 3, 0x02, 215 }, + { 6, 0x02, 215 }, + { 10, 0x02, 215 }, + { 15, 0x02, 215 }, + { 24, 0x02, 215 }, + { 31, 0x02, 215 }, + { 41, 0x02, 215 }, + { 56, 0x03, 215 }, + { 3, 0x02, 225 }, + { 6, 0x02, 225 }, + { 10, 0x02, 225 }, + { 15, 0x02, 225 }, + { 24, 0x02, 225 }, + { 31, 0x02, 225 }, + { 41, 0x02, 225 }, + { 56, 0x03, 225 }, + }, + /* 185 */ + { + { 2, 0x02, 236 }, + { 9, 0x02, 236 }, + { 23, 0x02, 236 }, + { 40, 0x03, 236 }, + { 2, 0x02, 237 }, + { 9, 0x02, 237 }, + { 23, 0x02, 237 }, + { 40, 0x03, 237 }, + { 1, 0x02, 199 }, + { 22, 0x03, 199 }, + { 1, 0x02, 207 }, + { 22, 0x03, 207 }, + { 1, 0x02, 234 }, + { 22, 0x03, 234 }, + { 1, 0x02, 235 }, + { 22, 0x03, 235 }, + }, + /* 186 */ + { + { 3, 0x02, 236 }, + { 6, 0x02, 236 }, + { 10, 0x02, 236 }, + { 15, 0x02, 236 }, + { 24, 0x02, 236 }, + { 31, 0x02, 236 }, + { 41, 0x02, 236 }, + { 56, 0x03, 236 }, + { 3, 0x02, 237 }, + { 6, 0x02, 237 }, + { 10, 0x02, 237 }, + { 15, 0x02, 237 }, + { 24, 0x02, 237 }, + { 31, 0x02, 237 }, + { 41, 0x02, 237 }, + { 56, 0x03, 237 }, + }, + /* 187 */ + { + { 2, 0x02, 199 }, + { 9, 0x02, 199 }, + { 23, 0x02, 199 }, + { 40, 0x03, 199 }, + { 2, 0x02, 207 }, + { 9, 0x02, 207 }, + { 23, 0x02, 207 }, + { 40, 0x03, 207 }, + { 2, 0x02, 234 }, + { 9, 0x02, 234 }, + { 23, 0x02, 234 }, + { 40, 0x03, 234 }, + { 2, 0x02, 235 }, + { 9, 0x02, 235 }, + { 23, 0x02, 235 }, + { 40, 0x03, 235 }, + }, + /* 188 */ + { + { 3, 0x02, 199 }, + { 6, 0x02, 199 }, + { 10, 0x02, 199 }, + { 15, 0x02, 199 }, + { 24, 0x02, 199 }, + { 31, 0x02, 199 }, + { 41, 0x02, 199 }, + { 56, 0x03, 199 }, + { 3, 0x02, 207 }, + { 6, 0x02, 207 }, + { 10, 0x02, 207 }, + { 15, 0x02, 207 }, + { 24, 0x02, 207 }, + { 31, 0x02, 207 }, + { 41, 0x02, 207 }, + { 56, 0x03, 207 }, + }, + /* 189 */ + { + { 3, 0x02, 234 }, + { 6, 0x02, 234 }, + { 10, 0x02, 234 }, + { 15, 0x02, 234 }, + { 24, 0x02, 234 }, + { 31, 0x02, 234 }, + { 41, 0x02, 234 }, + { 56, 0x03, 234 }, + { 3, 0x02, 235 }, + { 6, 0x02, 235 }, + { 10, 0x02, 235 }, + { 15, 0x02, 235 }, + { 24, 0x02, 235 }, + { 31, 0x02, 235 }, + { 41, 0x02, 235 }, + { 56, 0x03, 235 }, + }, + /* 190 */ + { + { 194, 0x00, 0 }, + { 195, 0x00, 0 }, + { 197, 0x00, 0 }, + { 198, 0x00, 0 }, + { 201, 0x00, 0 }, + { 202, 0x00, 0 }, + { 204, 0x00, 0 }, + { 205, 0x00, 0 }, + { 210, 0x00, 0 }, + { 213, 0x00, 0 }, + { 217, 0x00, 0 }, + { 220, 0x00, 0 }, + { 225, 0x00, 0 }, + { 231, 0x00, 0 }, + { 239, 0x00, 0 }, + { 246, 0x00, 0 }, + }, + /* 191 */ + { + { 0, 0x03, 192 }, + { 0, 0x03, 193 }, + { 0, 0x03, 200 }, + { 0, 0x03, 201 }, + { 0, 0x03, 202 }, + { 0, 0x03, 205 }, + { 0, 0x03, 210 }, + { 0, 0x03, 213 }, + { 0, 0x03, 218 }, + { 0, 0x03, 219 }, + { 0, 0x03, 238 }, + { 0, 0x03, 240 }, + { 0, 0x03, 242 }, + { 0, 0x03, 243 }, + { 0, 0x03, 255 }, + { 206, 0x00, 0 }, + }, + /* 192 */ + { + { 1, 0x02, 192 }, + { 22, 0x03, 192 }, + { 1, 0x02, 193 }, + { 22, 0x03, 193 }, + { 1, 0x02, 200 }, + { 22, 0x03, 200 }, + { 1, 0x02, 201 }, + { 22, 0x03, 201 }, + { 1, 0x02, 202 }, + { 22, 0x03, 202 }, + { 1, 0x02, 205 }, + { 22, 0x03, 205 }, + { 1, 0x02, 210 }, + { 22, 0x03, 210 }, + { 1, 0x02, 213 }, + { 22, 0x03, 213 }, + }, + /* 193 */ + { + { 2, 0x02, 192 }, + { 9, 0x02, 192 }, + { 23, 0x02, 192 }, + { 40, 0x03, 192 }, + { 2, 0x02, 193 }, + { 9, 0x02, 193 }, + { 23, 0x02, 193 }, + { 40, 0x03, 193 }, + { 2, 0x02, 200 }, + { 9, 0x02, 200 }, + { 23, 0x02, 200 }, + { 40, 0x03, 200 }, + { 2, 0x02, 201 }, + { 9, 0x02, 201 }, + { 23, 0x02, 201 }, + { 40, 0x03, 201 }, + }, + /* 194 */ + { + { 3, 0x02, 192 }, + { 6, 0x02, 192 }, + { 10, 0x02, 192 }, + { 15, 0x02, 192 }, + { 24, 0x02, 192 }, + { 31, 0x02, 192 }, + { 41, 0x02, 192 }, + { 56, 0x03, 192 }, + { 3, 0x02, 193 }, + { 6, 0x02, 193 }, + { 10, 0x02, 193 }, + { 15, 0x02, 193 }, + { 24, 0x02, 193 }, + { 31, 0x02, 193 }, + { 41, 0x02, 193 }, + { 56, 0x03, 193 }, + }, + /* 195 */ + { + { 3, 0x02, 200 }, + { 6, 0x02, 200 }, + { 10, 0x02, 200 }, + { 15, 0x02, 200 }, + { 24, 0x02, 200 }, + { 31, 0x02, 200 }, + { 41, 0x02, 200 }, + { 56, 0x03, 200 }, + { 3, 0x02, 201 }, + { 6, 0x02, 201 }, + { 10, 0x02, 201 }, + { 15, 0x02, 201 }, + { 24, 0x02, 201 }, + { 31, 0x02, 201 }, + { 41, 0x02, 201 }, + { 56, 0x03, 201 }, + }, + /* 196 */ + { + { 2, 0x02, 202 }, + { 9, 0x02, 202 }, + { 23, 0x02, 202 }, + { 40, 0x03, 202 }, + { 2, 0x02, 205 }, + { 9, 0x02, 205 }, + { 23, 0x02, 205 }, + { 40, 0x03, 205 }, + { 2, 0x02, 210 }, + { 9, 0x02, 210 }, + { 23, 0x02, 210 }, + { 40, 0x03, 210 }, + { 2, 0x02, 213 }, + { 9, 0x02, 213 }, + { 23, 0x02, 213 }, + { 40, 0x03, 213 }, + }, + /* 197 */ + { + { 3, 0x02, 202 }, + { 6, 0x02, 202 }, + { 10, 0x02, 202 }, + { 15, 0x02, 202 }, + { 24, 0x02, 202 }, + { 31, 0x02, 202 }, + { 41, 0x02, 202 }, + { 56, 0x03, 202 }, + { 3, 0x02, 205 }, + { 6, 0x02, 205 }, + { 10, 0x02, 205 }, + { 15, 0x02, 205 }, + { 24, 0x02, 205 }, + { 31, 0x02, 205 }, + { 41, 0x02, 205 }, + { 56, 0x03, 205 }, + }, + /* 198 */ + { + { 3, 0x02, 210 }, + { 6, 0x02, 210 }, + { 10, 0x02, 210 }, + { 15, 0x02, 210 }, + { 24, 0x02, 210 }, + { 31, 0x02, 210 }, + { 41, 0x02, 210 }, + { 56, 0x03, 210 }, + { 3, 0x02, 213 }, + { 6, 0x02, 213 }, + { 10, 0x02, 213 }, + { 15, 0x02, 213 }, + { 24, 0x02, 213 }, + { 31, 0x02, 213 }, + { 41, 0x02, 213 }, + { 56, 0x03, 213 }, + }, + /* 199 */ + { + { 1, 0x02, 218 }, + { 22, 0x03, 218 }, + { 1, 0x02, 219 }, + { 22, 0x03, 219 }, + { 1, 0x02, 238 }, + { 22, 0x03, 238 }, + { 1, 0x02, 240 }, + { 22, 0x03, 240 }, + { 1, 0x02, 242 }, + { 22, 0x03, 242 }, + { 1, 0x02, 243 }, + { 22, 0x03, 243 }, + { 1, 0x02, 255 }, + { 22, 0x03, 255 }, + { 0, 0x03, 203 }, + { 0, 0x03, 204 }, + }, + /* 200 */ + { + { 2, 0x02, 218 }, + { 9, 0x02, 218 }, + { 23, 0x02, 218 }, + { 40, 0x03, 218 }, + { 2, 0x02, 219 }, + { 9, 0x02, 219 }, + { 23, 0x02, 219 }, + { 40, 0x03, 219 }, + { 2, 0x02, 238 }, + { 9, 0x02, 238 }, + { 23, 0x02, 238 }, + { 40, 0x03, 238 }, + { 2, 0x02, 240 }, + { 9, 0x02, 240 }, + { 23, 0x02, 240 }, + { 40, 0x03, 240 }, + }, + /* 201 */ + { + { 3, 0x02, 218 }, + { 6, 0x02, 218 }, + { 10, 0x02, 218 }, + { 15, 0x02, 218 }, + { 24, 0x02, 218 }, + { 31, 0x02, 218 }, + { 41, 0x02, 218 }, + { 56, 0x03, 218 }, + { 3, 0x02, 219 }, + { 6, 0x02, 219 }, + { 10, 0x02, 219 }, + { 15, 0x02, 219 }, + { 24, 0x02, 219 }, + { 31, 0x02, 219 }, + { 41, 0x02, 219 }, + { 56, 0x03, 219 }, + }, + /* 202 */ + { + { 3, 0x02, 238 }, + { 6, 0x02, 238 }, + { 10, 0x02, 238 }, + { 15, 0x02, 238 }, + { 24, 0x02, 238 }, + { 31, 0x02, 238 }, + { 41, 0x02, 238 }, + { 56, 0x03, 238 }, + { 3, 0x02, 240 }, + { 6, 0x02, 240 }, + { 10, 0x02, 240 }, + { 15, 0x02, 240 }, + { 24, 0x02, 240 }, + { 31, 0x02, 240 }, + { 41, 0x02, 240 }, + { 56, 0x03, 240 }, + }, + /* 203 */ + { + { 2, 0x02, 242 }, + { 9, 0x02, 242 }, + { 23, 0x02, 242 }, + { 40, 0x03, 242 }, + { 2, 0x02, 243 }, + { 9, 0x02, 243 }, + { 23, 0x02, 243 }, + { 40, 0x03, 243 }, + { 2, 0x02, 255 }, + { 9, 0x02, 255 }, + { 23, 0x02, 255 }, + { 40, 0x03, 255 }, + { 1, 0x02, 203 }, + { 22, 0x03, 203 }, + { 1, 0x02, 204 }, + { 22, 0x03, 204 }, + }, + /* 204 */ + { + { 3, 0x02, 242 }, + { 6, 0x02, 242 }, + { 10, 0x02, 242 }, + { 15, 0x02, 242 }, + { 24, 0x02, 242 }, + { 31, 0x02, 242 }, + { 41, 0x02, 242 }, + { 56, 0x03, 242 }, + { 3, 0x02, 243 }, + { 6, 0x02, 243 }, + { 10, 0x02, 243 }, + { 15, 0x02, 243 }, + { 24, 0x02, 243 }, + { 31, 0x02, 243 }, + { 41, 0x02, 243 }, + { 56, 0x03, 243 }, + }, + /* 205 */ + { + { 3, 0x02, 255 }, + { 6, 0x02, 255 }, + { 10, 0x02, 255 }, + { 15, 0x02, 255 }, + { 24, 0x02, 255 }, + { 31, 0x02, 255 }, + { 41, 0x02, 255 }, + { 56, 0x03, 255 }, + { 2, 0x02, 203 }, + { 9, 0x02, 203 }, + { 23, 0x02, 203 }, + { 40, 0x03, 203 }, + { 2, 0x02, 204 }, + { 9, 0x02, 204 }, + { 23, 0x02, 204 }, + { 40, 0x03, 204 }, + }, + /* 206 */ + { + { 3, 0x02, 203 }, + { 6, 0x02, 203 }, + { 10, 0x02, 203 }, + { 15, 0x02, 203 }, + { 24, 0x02, 203 }, + { 31, 0x02, 203 }, + { 41, 0x02, 203 }, + { 56, 0x03, 203 }, + { 3, 0x02, 204 }, + { 6, 0x02, 204 }, + { 10, 0x02, 204 }, + { 15, 0x02, 204 }, + { 24, 0x02, 204 }, + { 31, 0x02, 204 }, + { 41, 0x02, 204 }, + { 56, 0x03, 204 }, + }, + /* 207 */ + { + { 211, 0x00, 0 }, + { 212, 0x00, 0 }, + { 214, 0x00, 0 }, + { 215, 0x00, 0 }, + { 218, 0x00, 0 }, + { 219, 0x00, 0 }, + { 221, 0x00, 0 }, + { 222, 0x00, 0 }, + { 226, 0x00, 0 }, + { 228, 0x00, 0 }, + { 232, 0x00, 0 }, + { 235, 0x00, 0 }, + { 240, 0x00, 0 }, + { 243, 0x00, 0 }, + { 247, 0x00, 0 }, + { 250, 0x00, 0 }, + }, + /* 208 */ + { + { 0, 0x03, 211 }, + { 0, 0x03, 212 }, + { 0, 0x03, 214 }, + { 0, 0x03, 221 }, + { 0, 0x03, 222 }, + { 0, 0x03, 223 }, + { 0, 0x03, 241 }, + { 0, 0x03, 244 }, + { 0, 0x03, 245 }, + { 0, 0x03, 246 }, + { 0, 0x03, 247 }, + { 0, 0x03, 248 }, + { 0, 0x03, 250 }, + { 0, 0x03, 251 }, + { 0, 0x03, 252 }, + { 0, 0x03, 253 }, + }, + /* 209 */ + { + { 1, 0x02, 211 }, + { 22, 0x03, 211 }, + { 1, 0x02, 212 }, + { 22, 0x03, 212 }, + { 1, 0x02, 214 }, + { 22, 0x03, 214 }, + { 1, 0x02, 221 }, + { 22, 0x03, 221 }, + { 1, 0x02, 222 }, + { 22, 0x03, 222 }, + { 1, 0x02, 223 }, + { 22, 0x03, 223 }, + { 1, 0x02, 241 }, + { 22, 0x03, 241 }, + { 1, 0x02, 244 }, + { 22, 0x03, 244 }, + }, + /* 210 */ + { + { 2, 0x02, 211 }, + { 9, 0x02, 211 }, + { 23, 0x02, 211 }, + { 40, 0x03, 211 }, + { 2, 0x02, 212 }, + { 9, 0x02, 212 }, + { 23, 0x02, 212 }, + { 40, 0x03, 212 }, + { 2, 0x02, 214 }, + { 9, 0x02, 214 }, + { 23, 0x02, 214 }, + { 40, 0x03, 214 }, + { 2, 0x02, 221 }, + { 9, 0x02, 221 }, + { 23, 0x02, 221 }, + { 40, 0x03, 221 }, + }, + /* 211 */ + { + { 3, 0x02, 211 }, + { 6, 0x02, 211 }, + { 10, 0x02, 211 }, + { 15, 0x02, 211 }, + { 24, 0x02, 211 }, + { 31, 0x02, 211 }, + { 41, 0x02, 211 }, + { 56, 0x03, 211 }, + { 3, 0x02, 212 }, + { 6, 0x02, 212 }, + { 10, 0x02, 212 }, + { 15, 0x02, 212 }, + { 24, 0x02, 212 }, + { 31, 0x02, 212 }, + { 41, 0x02, 212 }, + { 56, 0x03, 212 }, + }, + /* 212 */ + { + { 3, 0x02, 214 }, + { 6, 0x02, 214 }, + { 10, 0x02, 214 }, + { 15, 0x02, 214 }, + { 24, 0x02, 214 }, + { 31, 0x02, 214 }, + { 41, 0x02, 214 }, + { 56, 0x03, 214 }, + { 3, 0x02, 221 }, + { 6, 0x02, 221 }, + { 10, 0x02, 221 }, + { 15, 0x02, 221 }, + { 24, 0x02, 221 }, + { 31, 0x02, 221 }, + { 41, 0x02, 221 }, + { 56, 0x03, 221 }, + }, + /* 213 */ + { + { 2, 0x02, 222 }, + { 9, 0x02, 222 }, + { 23, 0x02, 222 }, + { 40, 0x03, 222 }, + { 2, 0x02, 223 }, + { 9, 0x02, 223 }, + { 23, 0x02, 223 }, + { 40, 0x03, 223 }, + { 2, 0x02, 241 }, + { 9, 0x02, 241 }, + { 23, 0x02, 241 }, + { 40, 0x03, 241 }, + { 2, 0x02, 244 }, + { 9, 0x02, 244 }, + { 23, 0x02, 244 }, + { 40, 0x03, 244 }, + }, + /* 214 */ + { + { 3, 0x02, 222 }, + { 6, 0x02, 222 }, + { 10, 0x02, 222 }, + { 15, 0x02, 222 }, + { 24, 0x02, 222 }, + { 31, 0x02, 222 }, + { 41, 0x02, 222 }, + { 56, 0x03, 222 }, + { 3, 0x02, 223 }, + { 6, 0x02, 223 }, + { 10, 0x02, 223 }, + { 15, 0x02, 223 }, + { 24, 0x02, 223 }, + { 31, 0x02, 223 }, + { 41, 0x02, 223 }, + { 56, 0x03, 223 }, + }, + /* 215 */ + { + { 3, 0x02, 241 }, + { 6, 0x02, 241 }, + { 10, 0x02, 241 }, + { 15, 0x02, 241 }, + { 24, 0x02, 241 }, + { 31, 0x02, 241 }, + { 41, 0x02, 241 }, + { 56, 0x03, 241 }, + { 3, 0x02, 244 }, + { 6, 0x02, 244 }, + { 10, 0x02, 244 }, + { 15, 0x02, 244 }, + { 24, 0x02, 244 }, + { 31, 0x02, 244 }, + { 41, 0x02, 244 }, + { 56, 0x03, 244 }, + }, + /* 216 */ + { + { 1, 0x02, 245 }, + { 22, 0x03, 245 }, + { 1, 0x02, 246 }, + { 22, 0x03, 246 }, + { 1, 0x02, 247 }, + { 22, 0x03, 247 }, + { 1, 0x02, 248 }, + { 22, 0x03, 248 }, + { 1, 0x02, 250 }, + { 22, 0x03, 250 }, + { 1, 0x02, 251 }, + { 22, 0x03, 251 }, + { 1, 0x02, 252 }, + { 22, 0x03, 252 }, + { 1, 0x02, 253 }, + { 22, 0x03, 253 }, + }, + /* 217 */ + { + { 2, 0x02, 245 }, + { 9, 0x02, 245 }, + { 23, 0x02, 245 }, + { 40, 0x03, 245 }, + { 2, 0x02, 246 }, + { 9, 0x02, 246 }, + { 23, 0x02, 246 }, + { 40, 0x03, 246 }, + { 2, 0x02, 247 }, + { 9, 0x02, 247 }, + { 23, 0x02, 247 }, + { 40, 0x03, 247 }, + { 2, 0x02, 248 }, + { 9, 0x02, 248 }, + { 23, 0x02, 248 }, + { 40, 0x03, 248 }, + }, + /* 218 */ + { + { 3, 0x02, 245 }, + { 6, 0x02, 245 }, + { 10, 0x02, 245 }, + { 15, 0x02, 245 }, + { 24, 0x02, 245 }, + { 31, 0x02, 245 }, + { 41, 0x02, 245 }, + { 56, 0x03, 245 }, + { 3, 0x02, 246 }, + { 6, 0x02, 246 }, + { 10, 0x02, 246 }, + { 15, 0x02, 246 }, + { 24, 0x02, 246 }, + { 31, 0x02, 246 }, + { 41, 0x02, 246 }, + { 56, 0x03, 246 }, + }, + /* 219 */ + { + { 3, 0x02, 247 }, + { 6, 0x02, 247 }, + { 10, 0x02, 247 }, + { 15, 0x02, 247 }, + { 24, 0x02, 247 }, + { 31, 0x02, 247 }, + { 41, 0x02, 247 }, + { 56, 0x03, 247 }, + { 3, 0x02, 248 }, + { 6, 0x02, 248 }, + { 10, 0x02, 248 }, + { 15, 0x02, 248 }, + { 24, 0x02, 248 }, + { 31, 0x02, 248 }, + { 41, 0x02, 248 }, + { 56, 0x03, 248 }, + }, + /* 220 */ + { + { 2, 0x02, 250 }, + { 9, 0x02, 250 }, + { 23, 0x02, 250 }, + { 40, 0x03, 250 }, + { 2, 0x02, 251 }, + { 9, 0x02, 251 }, + { 23, 0x02, 251 }, + { 40, 0x03, 251 }, + { 2, 0x02, 252 }, + { 9, 0x02, 252 }, + { 23, 0x02, 252 }, + { 40, 0x03, 252 }, + { 2, 0x02, 253 }, + { 9, 0x02, 253 }, + { 23, 0x02, 253 }, + { 40, 0x03, 253 }, + }, + /* 221 */ + { + { 3, 0x02, 250 }, + { 6, 0x02, 250 }, + { 10, 0x02, 250 }, + { 15, 0x02, 250 }, + { 24, 0x02, 250 }, + { 31, 0x02, 250 }, + { 41, 0x02, 250 }, + { 56, 0x03, 250 }, + { 3, 0x02, 251 }, + { 6, 0x02, 251 }, + { 10, 0x02, 251 }, + { 15, 0x02, 251 }, + { 24, 0x02, 251 }, + { 31, 0x02, 251 }, + { 41, 0x02, 251 }, + { 56, 0x03, 251 }, + }, + /* 222 */ + { + { 3, 0x02, 252 }, + { 6, 0x02, 252 }, + { 10, 0x02, 252 }, + { 15, 0x02, 252 }, + { 24, 0x02, 252 }, + { 31, 0x02, 252 }, + { 41, 0x02, 252 }, + { 56, 0x03, 252 }, + { 3, 0x02, 253 }, + { 6, 0x02, 253 }, + { 10, 0x02, 253 }, + { 15, 0x02, 253 }, + { 24, 0x02, 253 }, + { 31, 0x02, 253 }, + { 41, 0x02, 253 }, + { 56, 0x03, 253 }, + }, + /* 223 */ + { + { 0, 0x03, 254 }, + { 227, 0x00, 0 }, + { 229, 0x00, 0 }, + { 230, 0x00, 0 }, + { 233, 0x00, 0 }, + { 234, 0x00, 0 }, + { 236, 0x00, 0 }, + { 237, 0x00, 0 }, + { 241, 0x00, 0 }, + { 242, 0x00, 0 }, + { 244, 0x00, 0 }, + { 245, 0x00, 0 }, + { 248, 0x00, 0 }, + { 249, 0x00, 0 }, + { 251, 0x00, 0 }, + { 252, 0x00, 0 }, + }, + /* 224 */ + { + { 1, 0x02, 254 }, + { 22, 0x03, 254 }, + { 0, 0x03, 2 }, + { 0, 0x03, 3 }, + { 0, 0x03, 4 }, + { 0, 0x03, 5 }, + { 0, 0x03, 6 }, + { 0, 0x03, 7 }, + { 0, 0x03, 8 }, + { 0, 0x03, 11 }, + { 0, 0x03, 12 }, + { 0, 0x03, 14 }, + { 0, 0x03, 15 }, + { 0, 0x03, 16 }, + { 0, 0x03, 17 }, + { 0, 0x03, 18 }, + }, + /* 225 */ + { + { 2, 0x02, 254 }, + { 9, 0x02, 254 }, + { 23, 0x02, 254 }, + { 40, 0x03, 254 }, + { 1, 0x02, 2 }, + { 22, 0x03, 2 }, + { 1, 0x02, 3 }, + { 22, 0x03, 3 }, + { 1, 0x02, 4 }, + { 22, 0x03, 4 }, + { 1, 0x02, 5 }, + { 22, 0x03, 5 }, + { 1, 0x02, 6 }, + { 22, 0x03, 6 }, + { 1, 0x02, 7 }, + { 22, 0x03, 7 }, + }, + /* 226 */ + { + { 3, 0x02, 254 }, + { 6, 0x02, 254 }, + { 10, 0x02, 254 }, + { 15, 0x02, 254 }, + { 24, 0x02, 254 }, + { 31, 0x02, 254 }, + { 41, 0x02, 254 }, + { 56, 0x03, 254 }, + { 2, 0x02, 2 }, + { 9, 0x02, 2 }, + { 23, 0x02, 2 }, + { 40, 0x03, 2 }, + { 2, 0x02, 3 }, + { 9, 0x02, 3 }, + { 23, 0x02, 3 }, + { 40, 0x03, 3 }, + }, + /* 227 */ + { + { 3, 0x02, 2 }, + { 6, 0x02, 2 }, + { 10, 0x02, 2 }, + { 15, 0x02, 2 }, + { 24, 0x02, 2 }, + { 31, 0x02, 2 }, + { 41, 0x02, 2 }, + { 56, 0x03, 2 }, + { 3, 0x02, 3 }, + { 6, 0x02, 3 }, + { 10, 0x02, 3 }, + { 15, 0x02, 3 }, + { 24, 0x02, 3 }, + { 31, 0x02, 3 }, + { 41, 0x02, 3 }, + { 56, 0x03, 3 }, + }, + /* 228 */ + { + { 2, 0x02, 4 }, + { 9, 0x02, 4 }, + { 23, 0x02, 4 }, + { 40, 0x03, 4 }, + { 2, 0x02, 5 }, + { 9, 0x02, 5 }, + { 23, 0x02, 5 }, + { 40, 0x03, 5 }, + { 2, 0x02, 6 }, + { 9, 0x02, 6 }, + { 23, 0x02, 6 }, + { 40, 0x03, 6 }, + { 2, 0x02, 7 }, + { 9, 0x02, 7 }, + { 23, 0x02, 7 }, + { 40, 0x03, 7 }, + }, + /* 229 */ + { + { 3, 0x02, 4 }, + { 6, 0x02, 4 }, + { 10, 0x02, 4 }, + { 15, 0x02, 4 }, + { 24, 0x02, 4 }, + { 31, 0x02, 4 }, + { 41, 0x02, 4 }, + { 56, 0x03, 4 }, + { 3, 0x02, 5 }, + { 6, 0x02, 5 }, + { 10, 0x02, 5 }, + { 15, 0x02, 5 }, + { 24, 0x02, 5 }, + { 31, 0x02, 5 }, + { 41, 0x02, 5 }, + { 56, 0x03, 5 }, + }, + /* 230 */ + { + { 3, 0x02, 6 }, + { 6, 0x02, 6 }, + { 10, 0x02, 6 }, + { 15, 0x02, 6 }, + { 24, 0x02, 6 }, + { 31, 0x02, 6 }, + { 41, 0x02, 6 }, + { 56, 0x03, 6 }, + { 3, 0x02, 7 }, + { 6, 0x02, 7 }, + { 10, 0x02, 7 }, + { 15, 0x02, 7 }, + { 24, 0x02, 7 }, + { 31, 0x02, 7 }, + { 41, 0x02, 7 }, + { 56, 0x03, 7 }, + }, + /* 231 */ + { + { 1, 0x02, 8 }, + { 22, 0x03, 8 }, + { 1, 0x02, 11 }, + { 22, 0x03, 11 }, + { 1, 0x02, 12 }, + { 22, 0x03, 12 }, + { 1, 0x02, 14 }, + { 22, 0x03, 14 }, + { 1, 0x02, 15 }, + { 22, 0x03, 15 }, + { 1, 0x02, 16 }, + { 22, 0x03, 16 }, + { 1, 0x02, 17 }, + { 22, 0x03, 17 }, + { 1, 0x02, 18 }, + { 22, 0x03, 18 }, + }, + /* 232 */ + { + { 2, 0x02, 8 }, + { 9, 0x02, 8 }, + { 23, 0x02, 8 }, + { 40, 0x03, 8 }, + { 2, 0x02, 11 }, + { 9, 0x02, 11 }, + { 23, 0x02, 11 }, + { 40, 0x03, 11 }, + { 2, 0x02, 12 }, + { 9, 0x02, 12 }, + { 23, 0x02, 12 }, + { 40, 0x03, 12 }, + { 2, 0x02, 14 }, + { 9, 0x02, 14 }, + { 23, 0x02, 14 }, + { 40, 0x03, 14 }, + }, + /* 233 */ + { + { 3, 0x02, 8 }, + { 6, 0x02, 8 }, + { 10, 0x02, 8 }, + { 15, 0x02, 8 }, + { 24, 0x02, 8 }, + { 31, 0x02, 8 }, + { 41, 0x02, 8 }, + { 56, 0x03, 8 }, + { 3, 0x02, 11 }, + { 6, 0x02, 11 }, + { 10, 0x02, 11 }, + { 15, 0x02, 11 }, + { 24, 0x02, 11 }, + { 31, 0x02, 11 }, + { 41, 0x02, 11 }, + { 56, 0x03, 11 }, + }, + /* 234 */ + { + { 3, 0x02, 12 }, + { 6, 0x02, 12 }, + { 10, 0x02, 12 }, + { 15, 0x02, 12 }, + { 24, 0x02, 12 }, + { 31, 0x02, 12 }, + { 41, 0x02, 12 }, + { 56, 0x03, 12 }, + { 3, 0x02, 14 }, + { 6, 0x02, 14 }, + { 10, 0x02, 14 }, + { 15, 0x02, 14 }, + { 24, 0x02, 14 }, + { 31, 0x02, 14 }, + { 41, 0x02, 14 }, + { 56, 0x03, 14 }, + }, + /* 235 */ + { + { 2, 0x02, 15 }, + { 9, 0x02, 15 }, + { 23, 0x02, 15 }, + { 40, 0x03, 15 }, + { 2, 0x02, 16 }, + { 9, 0x02, 16 }, + { 23, 0x02, 16 }, + { 40, 0x03, 16 }, + { 2, 0x02, 17 }, + { 9, 0x02, 17 }, + { 23, 0x02, 17 }, + { 40, 0x03, 17 }, + { 2, 0x02, 18 }, + { 9, 0x02, 18 }, + { 23, 0x02, 18 }, + { 40, 0x03, 18 }, + }, + /* 236 */ + { + { 3, 0x02, 15 }, + { 6, 0x02, 15 }, + { 10, 0x02, 15 }, + { 15, 0x02, 15 }, + { 24, 0x02, 15 }, + { 31, 0x02, 15 }, + { 41, 0x02, 15 }, + { 56, 0x03, 15 }, + { 3, 0x02, 16 }, + { 6, 0x02, 16 }, + { 10, 0x02, 16 }, + { 15, 0x02, 16 }, + { 24, 0x02, 16 }, + { 31, 0x02, 16 }, + { 41, 0x02, 16 }, + { 56, 0x03, 16 }, + }, + /* 237 */ + { + { 3, 0x02, 17 }, + { 6, 0x02, 17 }, + { 10, 0x02, 17 }, + { 15, 0x02, 17 }, + { 24, 0x02, 17 }, + { 31, 0x02, 17 }, + { 41, 0x02, 17 }, + { 56, 0x03, 17 }, + { 3, 0x02, 18 }, + { 6, 0x02, 18 }, + { 10, 0x02, 18 }, + { 15, 0x02, 18 }, + { 24, 0x02, 18 }, + { 31, 0x02, 18 }, + { 41, 0x02, 18 }, + { 56, 0x03, 18 }, + }, + /* 238 */ + { + { 0, 0x03, 19 }, + { 0, 0x03, 20 }, + { 0, 0x03, 21 }, + { 0, 0x03, 23 }, + { 0, 0x03, 24 }, + { 0, 0x03, 25 }, + { 0, 0x03, 26 }, + { 0, 0x03, 27 }, + { 0, 0x03, 28 }, + { 0, 0x03, 29 }, + { 0, 0x03, 30 }, + { 0, 0x03, 31 }, + { 0, 0x03, 127 }, + { 0, 0x03, 220 }, + { 0, 0x03, 249 }, + { 253, 0x00, 0 }, + }, + /* 239 */ + { + { 1, 0x02, 19 }, + { 22, 0x03, 19 }, + { 1, 0x02, 20 }, + { 22, 0x03, 20 }, + { 1, 0x02, 21 }, + { 22, 0x03, 21 }, + { 1, 0x02, 23 }, + { 22, 0x03, 23 }, + { 1, 0x02, 24 }, + { 22, 0x03, 24 }, + { 1, 0x02, 25 }, + { 22, 0x03, 25 }, + { 1, 0x02, 26 }, + { 22, 0x03, 26 }, + { 1, 0x02, 27 }, + { 22, 0x03, 27 }, + }, + /* 240 */ + { + { 2, 0x02, 19 }, + { 9, 0x02, 19 }, + { 23, 0x02, 19 }, + { 40, 0x03, 19 }, + { 2, 0x02, 20 }, + { 9, 0x02, 20 }, + { 23, 0x02, 20 }, + { 40, 0x03, 20 }, + { 2, 0x02, 21 }, + { 9, 0x02, 21 }, + { 23, 0x02, 21 }, + { 40, 0x03, 21 }, + { 2, 0x02, 23 }, + { 9, 0x02, 23 }, + { 23, 0x02, 23 }, + { 40, 0x03, 23 }, + }, + /* 241 */ + { + { 3, 0x02, 19 }, + { 6, 0x02, 19 }, + { 10, 0x02, 19 }, + { 15, 0x02, 19 }, + { 24, 0x02, 19 }, + { 31, 0x02, 19 }, + { 41, 0x02, 19 }, + { 56, 0x03, 19 }, + { 3, 0x02, 20 }, + { 6, 0x02, 20 }, + { 10, 0x02, 20 }, + { 15, 0x02, 20 }, + { 24, 0x02, 20 }, + { 31, 0x02, 20 }, + { 41, 0x02, 20 }, + { 56, 0x03, 20 }, + }, + /* 242 */ + { + { 3, 0x02, 21 }, + { 6, 0x02, 21 }, + { 10, 0x02, 21 }, + { 15, 0x02, 21 }, + { 24, 0x02, 21 }, + { 31, 0x02, 21 }, + { 41, 0x02, 21 }, + { 56, 0x03, 21 }, + { 3, 0x02, 23 }, + { 6, 0x02, 23 }, + { 10, 0x02, 23 }, + { 15, 0x02, 23 }, + { 24, 0x02, 23 }, + { 31, 0x02, 23 }, + { 41, 0x02, 23 }, + { 56, 0x03, 23 }, + }, + /* 243 */ + { + { 2, 0x02, 24 }, + { 9, 0x02, 24 }, + { 23, 0x02, 24 }, + { 40, 0x03, 24 }, + { 2, 0x02, 25 }, + { 9, 0x02, 25 }, + { 23, 0x02, 25 }, + { 40, 0x03, 25 }, + { 2, 0x02, 26 }, + { 9, 0x02, 26 }, + { 23, 0x02, 26 }, + { 40, 0x03, 26 }, + { 2, 0x02, 27 }, + { 9, 0x02, 27 }, + { 23, 0x02, 27 }, + { 40, 0x03, 27 }, + }, + /* 244 */ + { + { 3, 0x02, 24 }, + { 6, 0x02, 24 }, + { 10, 0x02, 24 }, + { 15, 0x02, 24 }, + { 24, 0x02, 24 }, + { 31, 0x02, 24 }, + { 41, 0x02, 24 }, + { 56, 0x03, 24 }, + { 3, 0x02, 25 }, + { 6, 0x02, 25 }, + { 10, 0x02, 25 }, + { 15, 0x02, 25 }, + { 24, 0x02, 25 }, + { 31, 0x02, 25 }, + { 41, 0x02, 25 }, + { 56, 0x03, 25 }, + }, + /* 245 */ + { + { 3, 0x02, 26 }, + { 6, 0x02, 26 }, + { 10, 0x02, 26 }, + { 15, 0x02, 26 }, + { 24, 0x02, 26 }, + { 31, 0x02, 26 }, + { 41, 0x02, 26 }, + { 56, 0x03, 26 }, + { 3, 0x02, 27 }, + { 6, 0x02, 27 }, + { 10, 0x02, 27 }, + { 15, 0x02, 27 }, + { 24, 0x02, 27 }, + { 31, 0x02, 27 }, + { 41, 0x02, 27 }, + { 56, 0x03, 27 }, + }, + /* 246 */ + { + { 1, 0x02, 28 }, + { 22, 0x03, 28 }, + { 1, 0x02, 29 }, + { 22, 0x03, 29 }, + { 1, 0x02, 30 }, + { 22, 0x03, 30 }, + { 1, 0x02, 31 }, + { 22, 0x03, 31 }, + { 1, 0x02, 127 }, + { 22, 0x03, 127 }, + { 1, 0x02, 220 }, + { 22, 0x03, 220 }, + { 1, 0x02, 249 }, + { 22, 0x03, 249 }, + { 254, 0x00, 0 }, + { 255, 0x00, 0 }, + }, + /* 247 */ + { + { 2, 0x02, 28 }, + { 9, 0x02, 28 }, + { 23, 0x02, 28 }, + { 40, 0x03, 28 }, + { 2, 0x02, 29 }, + { 9, 0x02, 29 }, + { 23, 0x02, 29 }, + { 40, 0x03, 29 }, + { 2, 0x02, 30 }, + { 9, 0x02, 30 }, + { 23, 0x02, 30 }, + { 40, 0x03, 30 }, + { 2, 0x02, 31 }, + { 9, 0x02, 31 }, + { 23, 0x02, 31 }, + { 40, 0x03, 31 }, + }, + /* 248 */ + { + { 3, 0x02, 28 }, + { 6, 0x02, 28 }, + { 10, 0x02, 28 }, + { 15, 0x02, 28 }, + { 24, 0x02, 28 }, + { 31, 0x02, 28 }, + { 41, 0x02, 28 }, + { 56, 0x03, 28 }, + { 3, 0x02, 29 }, + { 6, 0x02, 29 }, + { 10, 0x02, 29 }, + { 15, 0x02, 29 }, + { 24, 0x02, 29 }, + { 31, 0x02, 29 }, + { 41, 0x02, 29 }, + { 56, 0x03, 29 }, + }, + /* 249 */ + { + { 3, 0x02, 30 }, + { 6, 0x02, 30 }, + { 10, 0x02, 30 }, + { 15, 0x02, 30 }, + { 24, 0x02, 30 }, + { 31, 0x02, 30 }, + { 41, 0x02, 30 }, + { 56, 0x03, 30 }, + { 3, 0x02, 31 }, + { 6, 0x02, 31 }, + { 10, 0x02, 31 }, + { 15, 0x02, 31 }, + { 24, 0x02, 31 }, + { 31, 0x02, 31 }, + { 41, 0x02, 31 }, + { 56, 0x03, 31 }, + }, + /* 250 */ + { + { 2, 0x02, 127 }, + { 9, 0x02, 127 }, + { 23, 0x02, 127 }, + { 40, 0x03, 127 }, + { 2, 0x02, 220 }, + { 9, 0x02, 220 }, + { 23, 0x02, 220 }, + { 40, 0x03, 220 }, + { 2, 0x02, 249 }, + { 9, 0x02, 249 }, + { 23, 0x02, 249 }, + { 40, 0x03, 249 }, + { 0, 0x03, 10 }, + { 0, 0x03, 13 }, + { 0, 0x03, 22 }, + { 0, 0x04, 0 }, + }, + /* 251 */ + { + { 3, 0x02, 127 }, + { 6, 0x02, 127 }, + { 10, 0x02, 127 }, + { 15, 0x02, 127 }, + { 24, 0x02, 127 }, + { 31, 0x02, 127 }, + { 41, 0x02, 127 }, + { 56, 0x03, 127 }, + { 3, 0x02, 220 }, + { 6, 0x02, 220 }, + { 10, 0x02, 220 }, + { 15, 0x02, 220 }, + { 24, 0x02, 220 }, + { 31, 0x02, 220 }, + { 41, 0x02, 220 }, + { 56, 0x03, 220 }, + }, + /* 252 */ + { + { 3, 0x02, 249 }, + { 6, 0x02, 249 }, + { 10, 0x02, 249 }, + { 15, 0x02, 249 }, + { 24, 0x02, 249 }, + { 31, 0x02, 249 }, + { 41, 0x02, 249 }, + { 56, 0x03, 249 }, + { 1, 0x02, 10 }, + { 22, 0x03, 10 }, + { 1, 0x02, 13 }, + { 22, 0x03, 13 }, + { 1, 0x02, 22 }, + { 22, 0x03, 22 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + }, + /* 253 */ + { + { 2, 0x02, 10 }, + { 9, 0x02, 10 }, + { 23, 0x02, 10 }, + { 40, 0x03, 10 }, + { 2, 0x02, 13 }, + { 9, 0x02, 13 }, + { 23, 0x02, 13 }, + { 40, 0x03, 13 }, + { 2, 0x02, 22 }, + { 9, 0x02, 22 }, + { 23, 0x02, 22 }, + { 40, 0x03, 22 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + }, + /* 254 */ + { + { 3, 0x02, 10 }, + { 6, 0x02, 10 }, + { 10, 0x02, 10 }, + { 15, 0x02, 10 }, + { 24, 0x02, 10 }, + { 31, 0x02, 10 }, + { 41, 0x02, 10 }, + { 56, 0x03, 10 }, + { 3, 0x02, 13 }, + { 6, 0x02, 13 }, + { 10, 0x02, 13 }, + { 15, 0x02, 13 }, + { 24, 0x02, 13 }, + { 31, 0x02, 13 }, + { 41, 0x02, 13 }, + { 56, 0x03, 13 }, + }, + /* 255 */ + { + { 3, 0x02, 22 }, + { 6, 0x02, 22 }, + { 10, 0x02, 22 }, + { 15, 0x02, 22 }, + { 24, 0x02, 22 }, + { 31, 0x02, 22 }, + { 41, 0x02, 22 }, + { 56, 0x03, 22 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + }, +}; + +#if LS_QPACK_USE_LARGE_TABLES +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define I(i,j) ((j<<8)|i) +#else +#define I(i,j) ((i<<8)|j) +#endif +/* On 32-bit platforms the longest code would cause undefined behavior + * when `bits' is shifted (you can't shift 32-bit value by 32 bits). + * Setting this value to 64 make the entry invalid and forces the encoder + * to use the slower loop. In other words, the longest output sequence + * is 32 bits on 64-bit platforms and 31 bits on 32-bit platforms. + */ +#if UINTPTR_MAX == 18446744073709551615ull +#define X32 32 +#else +#define X32 64 +#endif +static const struct henc { unsigned lens; uint32_t code; } hencs[] = +{ + [I(0,0)] = {26,0x3FF1FF8}, + [I(1,0)] = {64,0}, + [I(2,0)] = {64,0}, + [I(3,0)] = {64,0}, + [I(4,0)] = {64,0}, + [I(5,0)] = {64,0}, + [I(6,0)] = {64,0}, + [I(7,0)] = {64,0}, + [I(8,0)] = {64,0}, + [I(9,0)] = {64,0}, + [I(10,0)] = {64,0}, + [I(11,0)] = {64,0}, + [I(12,0)] = {64,0}, + [I(13,0)] = {64,0}, + [I(14,0)] = {64,0}, + [I(15,0)] = {64,0}, + [I(16,0)] = {64,0}, + [I(17,0)] = {64,0}, + [I(18,0)] = {64,0}, + [I(19,0)] = {64,0}, + [I(20,0)] = {64,0}, + [I(21,0)] = {64,0}, + [I(22,0)] = {64,0}, + [I(23,0)] = {64,0}, + [I(24,0)] = {64,0}, + [I(25,0)] = {64,0}, + [I(26,0)] = {64,0}, + [I(27,0)] = {64,0}, + [I(28,0)] = {64,0}, + [I(29,0)] = {64,0}, + [I(30,0)] = {64,0}, + [I(31,0)] = {64,0}, + [I(32,0)] = {19,0x29FF8}, + [I(33,0)] = {23,0x7F1FF8}, + [I(34,0)] = {23,0x7F3FF8}, + [I(35,0)] = {25,0x1FF5FF8}, + [I(36,0)] = {26,0x3FF3FF8}, + [I(37,0)] = {19,0x2BFF8}, + [I(38,0)] = {21,0x1F1FF8}, + [I(39,0)] = {24,0xFF5FF8}, + [I(40,0)] = {23,0x7F5FF8}, + [I(41,0)] = {23,0x7F7FF8}, + [I(42,0)] = {21,0x1F3FF8}, + [I(43,0)] = {24,0xFF7FF8}, + [I(44,0)] = {21,0x1F5FF8}, + [I(45,0)] = {19,0x2DFF8}, + [I(46,0)] = {19,0x2FFF8}, + [I(47,0)] = {19,0x31FF8}, + [I(48,0)] = {18,0x1FF8}, + [I(49,0)] = {18,0x3FF8}, + [I(50,0)] = {18,0x5FF8}, + [I(51,0)] = {19,0x33FF8}, + [I(52,0)] = {19,0x35FF8}, + [I(53,0)] = {19,0x37FF8}, + [I(54,0)] = {19,0x39FF8}, + [I(55,0)] = {19,0x3BFF8}, + [I(56,0)] = {19,0x3DFF8}, + [I(57,0)] = {19,0x3FFF8}, + [I(58,0)] = {20,0xB9FF8}, + [I(59,0)] = {21,0x1F7FF8}, + [I(60,0)] = {28,0xFFF9FF8}, + [I(61,0)] = {19,0x41FF8}, + [I(62,0)] = {25,0x1FF7FF8}, + [I(63,0)] = {23,0x7F9FF8}, + [I(64,0)] = {26,0x3FF5FF8}, + [I(65,0)] = {19,0x43FF8}, + [I(66,0)] = {20,0xBBFF8}, + [I(67,0)] = {20,0xBDFF8}, + [I(68,0)] = {20,0xBFFF8}, + [I(69,0)] = {20,0xC1FF8}, + [I(70,0)] = {20,0xC3FF8}, + [I(71,0)] = {20,0xC5FF8}, + [I(72,0)] = {20,0xC7FF8}, + [I(73,0)] = {20,0xC9FF8}, + [I(74,0)] = {20,0xCBFF8}, + [I(75,0)] = {20,0xCDFF8}, + [I(76,0)] = {20,0xCFFF8}, + [I(77,0)] = {20,0xD1FF8}, + [I(78,0)] = {20,0xD3FF8}, + [I(79,0)] = {20,0xD5FF8}, + [I(80,0)] = {20,0xD7FF8}, + [I(81,0)] = {20,0xD9FF8}, + [I(82,0)] = {20,0xDBFF8}, + [I(83,0)] = {20,0xDDFF8}, + [I(84,0)] = {20,0xDFFF8}, + [I(85,0)] = {20,0xE1FF8}, + [I(86,0)] = {20,0xE3FF8}, + [I(87,0)] = {20,0xE5FF8}, + [I(88,0)] = {21,0x1F9FF8}, + [I(89,0)] = {20,0xE7FF8}, + [I(90,0)] = {21,0x1FBFF8}, + [I(91,0)] = {26,0x3FF7FF8}, + [I(92,0)] = {X32,0xFFFE1FF8}, + [I(93,0)] = {26,0x3FF9FF8}, + [I(94,0)] = {27,0x7FF9FF8}, + [I(95,0)] = {19,0x45FF8}, + [I(96,0)] = {28,0xFFFBFF8}, + [I(97,0)] = {18,0x7FF8}, + [I(98,0)] = {19,0x47FF8}, + [I(99,0)] = {18,0x9FF8}, + [I(100,0)] = {19,0x49FF8}, + [I(101,0)] = {18,0xBFF8}, + [I(102,0)] = {19,0x4BFF8}, + [I(103,0)] = {19,0x4DFF8}, + [I(104,0)] = {19,0x4FFF8}, + [I(105,0)] = {18,0xDFF8}, + [I(106,0)] = {20,0xE9FF8}, + [I(107,0)] = {20,0xEBFF8}, + [I(108,0)] = {19,0x51FF8}, + [I(109,0)] = {19,0x53FF8}, + [I(110,0)] = {19,0x55FF8}, + [I(111,0)] = {18,0xFFF8}, + [I(112,0)] = {19,0x57FF8}, + [I(113,0)] = {20,0xEDFF8}, + [I(114,0)] = {19,0x59FF8}, + [I(115,0)] = {18,0x11FF8}, + [I(116,0)] = {18,0x13FF8}, + [I(117,0)] = {19,0x5BFF8}, + [I(118,0)] = {20,0xEFFF8}, + [I(119,0)] = {20,0xF1FF8}, + [I(120,0)] = {20,0xF3FF8}, + [I(121,0)] = {20,0xF5FF8}, + [I(122,0)] = {20,0xF7FF8}, + [I(123,0)] = {28,0xFFFDFF8}, + [I(124,0)] = {24,0xFF9FF8}, + [I(125,0)] = {27,0x7FFBFF8}, + [I(126,0)] = {26,0x3FFBFF8}, + [I(127,0)] = {64,0}, + [I(128,0)] = {64,0}, + [I(129,0)] = {64,0}, + [I(130,0)] = {64,0}, + [I(131,0)] = {64,0}, + [I(132,0)] = {64,0}, + [I(133,0)] = {64,0}, + [I(134,0)] = {64,0}, + [I(135,0)] = {64,0}, + [I(136,0)] = {64,0}, + [I(137,0)] = {64,0}, + [I(138,0)] = {64,0}, + [I(139,0)] = {64,0}, + [I(140,0)] = {64,0}, + [I(141,0)] = {64,0}, + [I(142,0)] = {64,0}, + [I(143,0)] = {64,0}, + [I(144,0)] = {64,0}, + [I(145,0)] = {64,0}, + [I(146,0)] = {64,0}, + [I(147,0)] = {64,0}, + [I(148,0)] = {64,0}, + [I(149,0)] = {64,0}, + [I(150,0)] = {64,0}, + [I(151,0)] = {64,0}, + [I(152,0)] = {64,0}, + [I(153,0)] = {64,0}, + [I(154,0)] = {64,0}, + [I(155,0)] = {64,0}, + [I(156,0)] = {64,0}, + [I(157,0)] = {64,0}, + [I(158,0)] = {64,0}, + [I(159,0)] = {64,0}, + [I(160,0)] = {64,0}, + [I(161,0)] = {64,0}, + [I(162,0)] = {64,0}, + [I(163,0)] = {64,0}, + [I(164,0)] = {64,0}, + [I(165,0)] = {64,0}, + [I(166,0)] = {64,0}, + [I(167,0)] = {64,0}, + [I(168,0)] = {64,0}, + [I(169,0)] = {64,0}, + [I(170,0)] = {64,0}, + [I(171,0)] = {64,0}, + [I(172,0)] = {64,0}, + [I(173,0)] = {64,0}, + [I(174,0)] = {64,0}, + [I(175,0)] = {64,0}, + [I(176,0)] = {64,0}, + [I(177,0)] = {64,0}, + [I(178,0)] = {64,0}, + [I(179,0)] = {64,0}, + [I(180,0)] = {64,0}, + [I(181,0)] = {64,0}, + [I(182,0)] = {64,0}, + [I(183,0)] = {64,0}, + [I(184,0)] = {64,0}, + [I(185,0)] = {64,0}, + [I(186,0)] = {64,0}, + [I(187,0)] = {64,0}, + [I(188,0)] = {64,0}, + [I(189,0)] = {64,0}, + [I(190,0)] = {64,0}, + [I(191,0)] = {64,0}, + [I(192,0)] = {64,0}, + [I(193,0)] = {64,0}, + [I(194,0)] = {64,0}, + [I(195,0)] = {X32,0xFFFE3FF8}, + [I(196,0)] = {64,0}, + [I(197,0)] = {64,0}, + [I(198,0)] = {64,0}, + [I(199,0)] = {64,0}, + [I(200,0)] = {64,0}, + [I(201,0)] = {64,0}, + [I(202,0)] = {64,0}, + [I(203,0)] = {64,0}, + [I(204,0)] = {64,0}, + [I(205,0)] = {64,0}, + [I(206,0)] = {64,0}, + [I(207,0)] = {64,0}, + [I(208,0)] = {X32,0xFFFE5FF8}, + [I(209,0)] = {64,0}, + [I(210,0)] = {64,0}, + [I(211,0)] = {64,0}, + [I(212,0)] = {64,0}, + [I(213,0)] = {64,0}, + [I(214,0)] = {64,0}, + [I(215,0)] = {64,0}, + [I(216,0)] = {64,0}, + [I(217,0)] = {64,0}, + [I(218,0)] = {64,0}, + [I(219,0)] = {64,0}, + [I(220,0)] = {64,0}, + [I(221,0)] = {64,0}, + [I(222,0)] = {64,0}, + [I(223,0)] = {64,0}, + [I(224,0)] = {64,0}, + [I(225,0)] = {64,0}, + [I(226,0)] = {64,0}, + [I(227,0)] = {64,0}, + [I(228,0)] = {64,0}, + [I(229,0)] = {64,0}, + [I(230,0)] = {64,0}, + [I(231,0)] = {64,0}, + [I(232,0)] = {64,0}, + [I(233,0)] = {64,0}, + [I(234,0)] = {64,0}, + [I(235,0)] = {64,0}, + [I(236,0)] = {64,0}, + [I(237,0)] = {64,0}, + [I(238,0)] = {64,0}, + [I(239,0)] = {64,0}, + [I(240,0)] = {64,0}, + [I(241,0)] = {64,0}, + [I(242,0)] = {64,0}, + [I(243,0)] = {64,0}, + [I(244,0)] = {64,0}, + [I(245,0)] = {64,0}, + [I(246,0)] = {64,0}, + [I(247,0)] = {64,0}, + [I(248,0)] = {64,0}, + [I(249,0)] = {64,0}, + [I(250,0)] = {64,0}, + [I(251,0)] = {64,0}, + [I(252,0)] = {64,0}, + [I(253,0)] = {64,0}, + [I(254,0)] = {64,0}, + [I(255,0)] = {64,0}, + [I(0,1)] = {64,0}, + [I(1,1)] = {64,0}, + [I(2,1)] = {64,0}, + [I(3,1)] = {64,0}, + [I(4,1)] = {64,0}, + [I(5,1)] = {64,0}, + [I(6,1)] = {64,0}, + [I(7,1)] = {64,0}, + [I(8,1)] = {64,0}, + [I(9,1)] = {64,0}, + [I(10,1)] = {64,0}, + [I(11,1)] = {64,0}, + [I(12,1)] = {64,0}, + [I(13,1)] = {64,0}, + [I(14,1)] = {64,0}, + [I(15,1)] = {64,0}, + [I(16,1)] = {64,0}, + [I(17,1)] = {64,0}, + [I(18,1)] = {64,0}, + [I(19,1)] = {64,0}, + [I(20,1)] = {64,0}, + [I(21,1)] = {64,0}, + [I(22,1)] = {64,0}, + [I(23,1)] = {64,0}, + [I(24,1)] = {64,0}, + [I(25,1)] = {64,0}, + [I(26,1)] = {64,0}, + [I(27,1)] = {64,0}, + [I(28,1)] = {64,0}, + [I(29,1)] = {64,0}, + [I(30,1)] = {64,0}, + [I(31,1)] = {64,0}, + [I(32,1)] = {29,0xA7FFFD8}, + [I(33,1)] = {64,0}, + [I(34,1)] = {64,0}, + [I(35,1)] = {64,0}, + [I(36,1)] = {64,0}, + [I(37,1)] = {29,0xAFFFFD8}, + [I(38,1)] = {31,0x7C7FFFD8}, + [I(39,1)] = {64,0}, + [I(40,1)] = {64,0}, + [I(41,1)] = {64,0}, + [I(42,1)] = {31,0x7CFFFFD8}, + [I(43,1)] = {64,0}, + [I(44,1)] = {31,0x7D7FFFD8}, + [I(45,1)] = {29,0xB7FFFD8}, + [I(46,1)] = {29,0xBFFFFD8}, + [I(47,1)] = {29,0xC7FFFD8}, + [I(48,1)] = {28,0x7FFFD8}, + [I(49,1)] = {28,0xFFFFD8}, + [I(50,1)] = {28,0x17FFFD8}, + [I(51,1)] = {29,0xCFFFFD8}, + [I(52,1)] = {29,0xD7FFFD8}, + [I(53,1)] = {29,0xDFFFFD8}, + [I(54,1)] = {29,0xE7FFFD8}, + [I(55,1)] = {29,0xEFFFFD8}, + [I(56,1)] = {29,0xF7FFFD8}, + [I(57,1)] = {29,0xFFFFFD8}, + [I(58,1)] = {30,0x2E7FFFD8}, + [I(59,1)] = {31,0x7DFFFFD8}, + [I(60,1)] = {64,0}, + [I(61,1)] = {29,0x107FFFD8}, + [I(62,1)] = {64,0}, + [I(63,1)] = {64,0}, + [I(64,1)] = {64,0}, + [I(65,1)] = {29,0x10FFFFD8}, + [I(66,1)] = {30,0x2EFFFFD8}, + [I(67,1)] = {30,0x2F7FFFD8}, + [I(68,1)] = {30,0x2FFFFFD8}, + [I(69,1)] = {30,0x307FFFD8}, + [I(70,1)] = {30,0x30FFFFD8}, + [I(71,1)] = {30,0x317FFFD8}, + [I(72,1)] = {30,0x31FFFFD8}, + [I(73,1)] = {30,0x327FFFD8}, + [I(74,1)] = {30,0x32FFFFD8}, + [I(75,1)] = {30,0x337FFFD8}, + [I(76,1)] = {30,0x33FFFFD8}, + [I(77,1)] = {30,0x347FFFD8}, + [I(78,1)] = {30,0x34FFFFD8}, + [I(79,1)] = {30,0x357FFFD8}, + [I(80,1)] = {30,0x35FFFFD8}, + [I(81,1)] = {30,0x367FFFD8}, + [I(82,1)] = {30,0x36FFFFD8}, + [I(83,1)] = {30,0x377FFFD8}, + [I(84,1)] = {30,0x37FFFFD8}, + [I(85,1)] = {30,0x387FFFD8}, + [I(86,1)] = {30,0x38FFFFD8}, + [I(87,1)] = {30,0x397FFFD8}, + [I(88,1)] = {31,0x7E7FFFD8}, + [I(89,1)] = {30,0x39FFFFD8}, + [I(90,1)] = {31,0x7EFFFFD8}, + [I(91,1)] = {64,0}, + [I(92,1)] = {64,0}, + [I(93,1)] = {64,0}, + [I(94,1)] = {64,0}, + [I(95,1)] = {29,0x117FFFD8}, + [I(96,1)] = {64,0}, + [I(97,1)] = {28,0x1FFFFD8}, + [I(98,1)] = {29,0x11FFFFD8}, + [I(99,1)] = {28,0x27FFFD8}, + [I(100,1)] = {29,0x127FFFD8}, + [I(101,1)] = {28,0x2FFFFD8}, + [I(102,1)] = {29,0x12FFFFD8}, + [I(103,1)] = {29,0x137FFFD8}, + [I(104,1)] = {29,0x13FFFFD8}, + [I(105,1)] = {28,0x37FFFD8}, + [I(106,1)] = {30,0x3A7FFFD8}, + [I(107,1)] = {30,0x3AFFFFD8}, + [I(108,1)] = {29,0x147FFFD8}, + [I(109,1)] = {29,0x14FFFFD8}, + [I(110,1)] = {29,0x157FFFD8}, + [I(111,1)] = {28,0x3FFFFD8}, + [I(112,1)] = {29,0x15FFFFD8}, + [I(113,1)] = {30,0x3B7FFFD8}, + [I(114,1)] = {29,0x167FFFD8}, + [I(115,1)] = {28,0x47FFFD8}, + [I(116,1)] = {28,0x4FFFFD8}, + [I(117,1)] = {29,0x16FFFFD8}, + [I(118,1)] = {30,0x3BFFFFD8}, + [I(119,1)] = {30,0x3C7FFFD8}, + [I(120,1)] = {30,0x3CFFFFD8}, + [I(121,1)] = {30,0x3D7FFFD8}, + [I(122,1)] = {30,0x3DFFFFD8}, + [I(123,1)] = {64,0}, + [I(124,1)] = {64,0}, + [I(125,1)] = {64,0}, + [I(126,1)] = {64,0}, + [I(127,1)] = {64,0}, + [I(128,1)] = {64,0}, + [I(129,1)] = {64,0}, + [I(130,1)] = {64,0}, + [I(131,1)] = {64,0}, + [I(132,1)] = {64,0}, + [I(133,1)] = {64,0}, + [I(134,1)] = {64,0}, + [I(135,1)] = {64,0}, + [I(136,1)] = {64,0}, + [I(137,1)] = {64,0}, + [I(138,1)] = {64,0}, + [I(139,1)] = {64,0}, + [I(140,1)] = {64,0}, + [I(141,1)] = {64,0}, + [I(142,1)] = {64,0}, + [I(143,1)] = {64,0}, + [I(144,1)] = {64,0}, + [I(145,1)] = {64,0}, + [I(146,1)] = {64,0}, + [I(147,1)] = {64,0}, + [I(148,1)] = {64,0}, + [I(149,1)] = {64,0}, + [I(150,1)] = {64,0}, + [I(151,1)] = {64,0}, + [I(152,1)] = {64,0}, + [I(153,1)] = {64,0}, + [I(154,1)] = {64,0}, + [I(155,1)] = {64,0}, + [I(156,1)] = {64,0}, + [I(157,1)] = {64,0}, + [I(158,1)] = {64,0}, + [I(159,1)] = {64,0}, + [I(160,1)] = {64,0}, + [I(161,1)] = {64,0}, + [I(162,1)] = {64,0}, + [I(163,1)] = {64,0}, + [I(164,1)] = {64,0}, + [I(165,1)] = {64,0}, + [I(166,1)] = {64,0}, + [I(167,1)] = {64,0}, + [I(168,1)] = {64,0}, + [I(169,1)] = {64,0}, + [I(170,1)] = {64,0}, + [I(171,1)] = {64,0}, + [I(172,1)] = {64,0}, + [I(173,1)] = {64,0}, + [I(174,1)] = {64,0}, + [I(175,1)] = {64,0}, + [I(176,1)] = {64,0}, + [I(177,1)] = {64,0}, + [I(178,1)] = {64,0}, + [I(179,1)] = {64,0}, + [I(180,1)] = {64,0}, + [I(181,1)] = {64,0}, + [I(182,1)] = {64,0}, + [I(183,1)] = {64,0}, + [I(184,1)] = {64,0}, + [I(185,1)] = {64,0}, + [I(186,1)] = {64,0}, + [I(187,1)] = {64,0}, + [I(188,1)] = {64,0}, + [I(189,1)] = {64,0}, + [I(190,1)] = {64,0}, + [I(191,1)] = {64,0}, + [I(192,1)] = {64,0}, + [I(193,1)] = {64,0}, + [I(194,1)] = {64,0}, + [I(195,1)] = {64,0}, + [I(196,1)] = {64,0}, + [I(197,1)] = {64,0}, + [I(198,1)] = {64,0}, + [I(199,1)] = {64,0}, + [I(200,1)] = {64,0}, + [I(201,1)] = {64,0}, + [I(202,1)] = {64,0}, + [I(203,1)] = {64,0}, + [I(204,1)] = {64,0}, + [I(205,1)] = {64,0}, + [I(206,1)] = {64,0}, + [I(207,1)] = {64,0}, + [I(208,1)] = {64,0}, + [I(209,1)] = {64,0}, + [I(210,1)] = {64,0}, + [I(211,1)] = {64,0}, + [I(212,1)] = {64,0}, + [I(213,1)] = {64,0}, + [I(214,1)] = {64,0}, + [I(215,1)] = {64,0}, + [I(216,1)] = {64,0}, + [I(217,1)] = {64,0}, + [I(218,1)] = {64,0}, + [I(219,1)] = {64,0}, + [I(220,1)] = {64,0}, + [I(221,1)] = {64,0}, + [I(222,1)] = {64,0}, + [I(223,1)] = {64,0}, + [I(224,1)] = {64,0}, + [I(225,1)] = {64,0}, + [I(226,1)] = {64,0}, + [I(227,1)] = {64,0}, + [I(228,1)] = {64,0}, + [I(229,1)] = {64,0}, + [I(230,1)] = {64,0}, + [I(231,1)] = {64,0}, + [I(232,1)] = {64,0}, + [I(233,1)] = {64,0}, + [I(234,1)] = {64,0}, + [I(235,1)] = {64,0}, + [I(236,1)] = {64,0}, + [I(237,1)] = {64,0}, + [I(238,1)] = {64,0}, + [I(239,1)] = {64,0}, + [I(240,1)] = {64,0}, + [I(241,1)] = {64,0}, + [I(242,1)] = {64,0}, + [I(243,1)] = {64,0}, + [I(244,1)] = {64,0}, + [I(245,1)] = {64,0}, + [I(246,1)] = {64,0}, + [I(247,1)] = {64,0}, + [I(248,1)] = {64,0}, + [I(249,1)] = {64,0}, + [I(250,1)] = {64,0}, + [I(251,1)] = {64,0}, + [I(252,1)] = {64,0}, + [I(253,1)] = {64,0}, + [I(254,1)] = {64,0}, + [I(255,1)] = {64,0}, + [I(0,2)] = {64,0}, + [I(1,2)] = {64,0}, + [I(2,2)] = {64,0}, + [I(3,2)] = {64,0}, + [I(4,2)] = {64,0}, + [I(5,2)] = {64,0}, + [I(6,2)] = {64,0}, + [I(7,2)] = {64,0}, + [I(8,2)] = {64,0}, + [I(9,2)] = {64,0}, + [I(10,2)] = {64,0}, + [I(11,2)] = {64,0}, + [I(12,2)] = {64,0}, + [I(13,2)] = {64,0}, + [I(14,2)] = {64,0}, + [I(15,2)] = {64,0}, + [I(16,2)] = {64,0}, + [I(17,2)] = {64,0}, + [I(18,2)] = {64,0}, + [I(19,2)] = {64,0}, + [I(20,2)] = {64,0}, + [I(21,2)] = {64,0}, + [I(22,2)] = {64,0}, + [I(23,2)] = {64,0}, + [I(24,2)] = {64,0}, + [I(25,2)] = {64,0}, + [I(26,2)] = {64,0}, + [I(27,2)] = {64,0}, + [I(28,2)] = {64,0}, + [I(29,2)] = {64,0}, + [I(30,2)] = {64,0}, + [I(31,2)] = {64,0}, + [I(32,2)] = {64,0}, + [I(33,2)] = {64,0}, + [I(34,2)] = {64,0}, + [I(35,2)] = {64,0}, + [I(36,2)] = {64,0}, + [I(37,2)] = {64,0}, + [I(38,2)] = {64,0}, + [I(39,2)] = {64,0}, + [I(40,2)] = {64,0}, + [I(41,2)] = {64,0}, + [I(42,2)] = {64,0}, + [I(43,2)] = {64,0}, + [I(44,2)] = {64,0}, + [I(45,2)] = {64,0}, + [I(46,2)] = {64,0}, + [I(47,2)] = {64,0}, + [I(48,2)] = {64,0}, + [I(49,2)] = {64,0}, + [I(50,2)] = {64,0}, + [I(51,2)] = {64,0}, + [I(52,2)] = {64,0}, + [I(53,2)] = {64,0}, + [I(54,2)] = {64,0}, + [I(55,2)] = {64,0}, + [I(56,2)] = {64,0}, + [I(57,2)] = {64,0}, + [I(58,2)] = {64,0}, + [I(59,2)] = {64,0}, + [I(60,2)] = {64,0}, + [I(61,2)] = {64,0}, + [I(62,2)] = {64,0}, + [I(63,2)] = {64,0}, + [I(64,2)] = {64,0}, + [I(65,2)] = {64,0}, + [I(66,2)] = {64,0}, + [I(67,2)] = {64,0}, + [I(68,2)] = {64,0}, + [I(69,2)] = {64,0}, + [I(70,2)] = {64,0}, + [I(71,2)] = {64,0}, + [I(72,2)] = {64,0}, + [I(73,2)] = {64,0}, + [I(74,2)] = {64,0}, + [I(75,2)] = {64,0}, + [I(76,2)] = {64,0}, + [I(77,2)] = {64,0}, + [I(78,2)] = {64,0}, + [I(79,2)] = {64,0}, + [I(80,2)] = {64,0}, + [I(81,2)] = {64,0}, + [I(82,2)] = {64,0}, + [I(83,2)] = {64,0}, + [I(84,2)] = {64,0}, + [I(85,2)] = {64,0}, + [I(86,2)] = {64,0}, + [I(87,2)] = {64,0}, + [I(88,2)] = {64,0}, + [I(89,2)] = {64,0}, + [I(90,2)] = {64,0}, + [I(91,2)] = {64,0}, + [I(92,2)] = {64,0}, + [I(93,2)] = {64,0}, + [I(94,2)] = {64,0}, + [I(95,2)] = {64,0}, + [I(96,2)] = {64,0}, + [I(97,2)] = {64,0}, + [I(98,2)] = {64,0}, + [I(99,2)] = {64,0}, + [I(100,2)] = {64,0}, + [I(101,2)] = {64,0}, + [I(102,2)] = {64,0}, + [I(103,2)] = {64,0}, + [I(104,2)] = {64,0}, + [I(105,2)] = {64,0}, + [I(106,2)] = {64,0}, + [I(107,2)] = {64,0}, + [I(108,2)] = {64,0}, + [I(109,2)] = {64,0}, + [I(110,2)] = {64,0}, + [I(111,2)] = {64,0}, + [I(112,2)] = {64,0}, + [I(113,2)] = {64,0}, + [I(114,2)] = {64,0}, + [I(115,2)] = {64,0}, + [I(116,2)] = {64,0}, + [I(117,2)] = {64,0}, + [I(118,2)] = {64,0}, + [I(119,2)] = {64,0}, + [I(120,2)] = {64,0}, + [I(121,2)] = {64,0}, + [I(122,2)] = {64,0}, + [I(123,2)] = {64,0}, + [I(124,2)] = {64,0}, + [I(125,2)] = {64,0}, + [I(126,2)] = {64,0}, + [I(127,2)] = {64,0}, + [I(128,2)] = {64,0}, + [I(129,2)] = {64,0}, + [I(130,2)] = {64,0}, + [I(131,2)] = {64,0}, + [I(132,2)] = {64,0}, + [I(133,2)] = {64,0}, + [I(134,2)] = {64,0}, + [I(135,2)] = {64,0}, + [I(136,2)] = {64,0}, + [I(137,2)] = {64,0}, + [I(138,2)] = {64,0}, + [I(139,2)] = {64,0}, + [I(140,2)] = {64,0}, + [I(141,2)] = {64,0}, + [I(142,2)] = {64,0}, + [I(143,2)] = {64,0}, + [I(144,2)] = {64,0}, + [I(145,2)] = {64,0}, + [I(146,2)] = {64,0}, + [I(147,2)] = {64,0}, + [I(148,2)] = {64,0}, + [I(149,2)] = {64,0}, + [I(150,2)] = {64,0}, + [I(151,2)] = {64,0}, + [I(152,2)] = {64,0}, + [I(153,2)] = {64,0}, + [I(154,2)] = {64,0}, + [I(155,2)] = {64,0}, + [I(156,2)] = {64,0}, + [I(157,2)] = {64,0}, + [I(158,2)] = {64,0}, + [I(159,2)] = {64,0}, + [I(160,2)] = {64,0}, + [I(161,2)] = {64,0}, + [I(162,2)] = {64,0}, + [I(163,2)] = {64,0}, + [I(164,2)] = {64,0}, + [I(165,2)] = {64,0}, + [I(166,2)] = {64,0}, + [I(167,2)] = {64,0}, + [I(168,2)] = {64,0}, + [I(169,2)] = {64,0}, + [I(170,2)] = {64,0}, + [I(171,2)] = {64,0}, + [I(172,2)] = {64,0}, + [I(173,2)] = {64,0}, + [I(174,2)] = {64,0}, + [I(175,2)] = {64,0}, + [I(176,2)] = {64,0}, + [I(177,2)] = {64,0}, + [I(178,2)] = {64,0}, + [I(179,2)] = {64,0}, + [I(180,2)] = {64,0}, + [I(181,2)] = {64,0}, + [I(182,2)] = {64,0}, + [I(183,2)] = {64,0}, + [I(184,2)] = {64,0}, + [I(185,2)] = {64,0}, + [I(186,2)] = {64,0}, + [I(187,2)] = {64,0}, + [I(188,2)] = {64,0}, + [I(189,2)] = {64,0}, + [I(190,2)] = {64,0}, + [I(191,2)] = {64,0}, + [I(192,2)] = {64,0}, + [I(193,2)] = {64,0}, + [I(194,2)] = {64,0}, + [I(195,2)] = {64,0}, + [I(196,2)] = {64,0}, + [I(197,2)] = {64,0}, + [I(198,2)] = {64,0}, + [I(199,2)] = {64,0}, + [I(200,2)] = {64,0}, + [I(201,2)] = {64,0}, + [I(202,2)] = {64,0}, + [I(203,2)] = {64,0}, + [I(204,2)] = {64,0}, + [I(205,2)] = {64,0}, + [I(206,2)] = {64,0}, + [I(207,2)] = {64,0}, + [I(208,2)] = {64,0}, + [I(209,2)] = {64,0}, + [I(210,2)] = {64,0}, + [I(211,2)] = {64,0}, + [I(212,2)] = {64,0}, + [I(213,2)] = {64,0}, + [I(214,2)] = {64,0}, + [I(215,2)] = {64,0}, + [I(216,2)] = {64,0}, + [I(217,2)] = {64,0}, + [I(218,2)] = {64,0}, + [I(219,2)] = {64,0}, + [I(220,2)] = {64,0}, + [I(221,2)] = {64,0}, + [I(222,2)] = {64,0}, + [I(223,2)] = {64,0}, + [I(224,2)] = {64,0}, + [I(225,2)] = {64,0}, + [I(226,2)] = {64,0}, + [I(227,2)] = {64,0}, + [I(228,2)] = {64,0}, + [I(229,2)] = {64,0}, + [I(230,2)] = {64,0}, + [I(231,2)] = {64,0}, + [I(232,2)] = {64,0}, + [I(233,2)] = {64,0}, + [I(234,2)] = {64,0}, + [I(235,2)] = {64,0}, + [I(236,2)] = {64,0}, + [I(237,2)] = {64,0}, + [I(238,2)] = {64,0}, + [I(239,2)] = {64,0}, + [I(240,2)] = {64,0}, + [I(241,2)] = {64,0}, + [I(242,2)] = {64,0}, + [I(243,2)] = {64,0}, + [I(244,2)] = {64,0}, + [I(245,2)] = {64,0}, + [I(246,2)] = {64,0}, + [I(247,2)] = {64,0}, + [I(248,2)] = {64,0}, + [I(249,2)] = {64,0}, + [I(250,2)] = {64,0}, + [I(251,2)] = {64,0}, + [I(252,2)] = {64,0}, + [I(253,2)] = {64,0}, + [I(254,2)] = {64,0}, + [I(255,2)] = {64,0}, + [I(0,3)] = {64,0}, + [I(1,3)] = {64,0}, + [I(2,3)] = {64,0}, + [I(3,3)] = {64,0}, + [I(4,3)] = {64,0}, + [I(5,3)] = {64,0}, + [I(6,3)] = {64,0}, + [I(7,3)] = {64,0}, + [I(8,3)] = {64,0}, + [I(9,3)] = {64,0}, + [I(10,3)] = {64,0}, + [I(11,3)] = {64,0}, + [I(12,3)] = {64,0}, + [I(13,3)] = {64,0}, + [I(14,3)] = {64,0}, + [I(15,3)] = {64,0}, + [I(16,3)] = {64,0}, + [I(17,3)] = {64,0}, + [I(18,3)] = {64,0}, + [I(19,3)] = {64,0}, + [I(20,3)] = {64,0}, + [I(21,3)] = {64,0}, + [I(22,3)] = {64,0}, + [I(23,3)] = {64,0}, + [I(24,3)] = {64,0}, + [I(25,3)] = {64,0}, + [I(26,3)] = {64,0}, + [I(27,3)] = {64,0}, + [I(28,3)] = {64,0}, + [I(29,3)] = {64,0}, + [I(30,3)] = {64,0}, + [I(31,3)] = {64,0}, + [I(32,3)] = {64,0}, + [I(33,3)] = {64,0}, + [I(34,3)] = {64,0}, + [I(35,3)] = {64,0}, + [I(36,3)] = {64,0}, + [I(37,3)] = {64,0}, + [I(38,3)] = {64,0}, + [I(39,3)] = {64,0}, + [I(40,3)] = {64,0}, + [I(41,3)] = {64,0}, + [I(42,3)] = {64,0}, + [I(43,3)] = {64,0}, + [I(44,3)] = {64,0}, + [I(45,3)] = {64,0}, + [I(46,3)] = {64,0}, + [I(47,3)] = {64,0}, + [I(48,3)] = {64,0}, + [I(49,3)] = {64,0}, + [I(50,3)] = {64,0}, + [I(51,3)] = {64,0}, + [I(52,3)] = {64,0}, + [I(53,3)] = {64,0}, + [I(54,3)] = {64,0}, + [I(55,3)] = {64,0}, + [I(56,3)] = {64,0}, + [I(57,3)] = {64,0}, + [I(58,3)] = {64,0}, + [I(59,3)] = {64,0}, + [I(60,3)] = {64,0}, + [I(61,3)] = {64,0}, + [I(62,3)] = {64,0}, + [I(63,3)] = {64,0}, + [I(64,3)] = {64,0}, + [I(65,3)] = {64,0}, + [I(66,3)] = {64,0}, + [I(67,3)] = {64,0}, + [I(68,3)] = {64,0}, + [I(69,3)] = {64,0}, + [I(70,3)] = {64,0}, + [I(71,3)] = {64,0}, + [I(72,3)] = {64,0}, + [I(73,3)] = {64,0}, + [I(74,3)] = {64,0}, + [I(75,3)] = {64,0}, + [I(76,3)] = {64,0}, + [I(77,3)] = {64,0}, + [I(78,3)] = {64,0}, + [I(79,3)] = {64,0}, + [I(80,3)] = {64,0}, + [I(81,3)] = {64,0}, + [I(82,3)] = {64,0}, + [I(83,3)] = {64,0}, + [I(84,3)] = {64,0}, + [I(85,3)] = {64,0}, + [I(86,3)] = {64,0}, + [I(87,3)] = {64,0}, + [I(88,3)] = {64,0}, + [I(89,3)] = {64,0}, + [I(90,3)] = {64,0}, + [I(91,3)] = {64,0}, + [I(92,3)] = {64,0}, + [I(93,3)] = {64,0}, + [I(94,3)] = {64,0}, + [I(95,3)] = {64,0}, + [I(96,3)] = {64,0}, + [I(97,3)] = {64,0}, + [I(98,3)] = {64,0}, + [I(99,3)] = {64,0}, + [I(100,3)] = {64,0}, + [I(101,3)] = {64,0}, + [I(102,3)] = {64,0}, + [I(103,3)] = {64,0}, + [I(104,3)] = {64,0}, + [I(105,3)] = {64,0}, + [I(106,3)] = {64,0}, + [I(107,3)] = {64,0}, + [I(108,3)] = {64,0}, + [I(109,3)] = {64,0}, + [I(110,3)] = {64,0}, + [I(111,3)] = {64,0}, + [I(112,3)] = {64,0}, + [I(113,3)] = {64,0}, + [I(114,3)] = {64,0}, + [I(115,3)] = {64,0}, + [I(116,3)] = {64,0}, + [I(117,3)] = {64,0}, + [I(118,3)] = {64,0}, + [I(119,3)] = {64,0}, + [I(120,3)] = {64,0}, + [I(121,3)] = {64,0}, + [I(122,3)] = {64,0}, + [I(123,3)] = {64,0}, + [I(124,3)] = {64,0}, + [I(125,3)] = {64,0}, + [I(126,3)] = {64,0}, + [I(127,3)] = {64,0}, + [I(128,3)] = {64,0}, + [I(129,3)] = {64,0}, + [I(130,3)] = {64,0}, + [I(131,3)] = {64,0}, + [I(132,3)] = {64,0}, + [I(133,3)] = {64,0}, + [I(134,3)] = {64,0}, + [I(135,3)] = {64,0}, + [I(136,3)] = {64,0}, + [I(137,3)] = {64,0}, + [I(138,3)] = {64,0}, + [I(139,3)] = {64,0}, + [I(140,3)] = {64,0}, + [I(141,3)] = {64,0}, + [I(142,3)] = {64,0}, + [I(143,3)] = {64,0}, + [I(144,3)] = {64,0}, + [I(145,3)] = {64,0}, + [I(146,3)] = {64,0}, + [I(147,3)] = {64,0}, + [I(148,3)] = {64,0}, + [I(149,3)] = {64,0}, + [I(150,3)] = {64,0}, + [I(151,3)] = {64,0}, + [I(152,3)] = {64,0}, + [I(153,3)] = {64,0}, + [I(154,3)] = {64,0}, + [I(155,3)] = {64,0}, + [I(156,3)] = {64,0}, + [I(157,3)] = {64,0}, + [I(158,3)] = {64,0}, + [I(159,3)] = {64,0}, + [I(160,3)] = {64,0}, + [I(161,3)] = {64,0}, + [I(162,3)] = {64,0}, + [I(163,3)] = {64,0}, + [I(164,3)] = {64,0}, + [I(165,3)] = {64,0}, + [I(166,3)] = {64,0}, + [I(167,3)] = {64,0}, + [I(168,3)] = {64,0}, + [I(169,3)] = {64,0}, + [I(170,3)] = {64,0}, + [I(171,3)] = {64,0}, + [I(172,3)] = {64,0}, + [I(173,3)] = {64,0}, + [I(174,3)] = {64,0}, + [I(175,3)] = {64,0}, + [I(176,3)] = {64,0}, + [I(177,3)] = {64,0}, + [I(178,3)] = {64,0}, + [I(179,3)] = {64,0}, + [I(180,3)] = {64,0}, + [I(181,3)] = {64,0}, + [I(182,3)] = {64,0}, + [I(183,3)] = {64,0}, + [I(184,3)] = {64,0}, + [I(185,3)] = {64,0}, + [I(186,3)] = {64,0}, + [I(187,3)] = {64,0}, + [I(188,3)] = {64,0}, + [I(189,3)] = {64,0}, + [I(190,3)] = {64,0}, + [I(191,3)] = {64,0}, + [I(192,3)] = {64,0}, + [I(193,3)] = {64,0}, + [I(194,3)] = {64,0}, + [I(195,3)] = {64,0}, + [I(196,3)] = {64,0}, + [I(197,3)] = {64,0}, + [I(198,3)] = {64,0}, + [I(199,3)] = {64,0}, + [I(200,3)] = {64,0}, + [I(201,3)] = {64,0}, + [I(202,3)] = {64,0}, + [I(203,3)] = {64,0}, + [I(204,3)] = {64,0}, + [I(205,3)] = {64,0}, + [I(206,3)] = {64,0}, + [I(207,3)] = {64,0}, + [I(208,3)] = {64,0}, + [I(209,3)] = {64,0}, + [I(210,3)] = {64,0}, + [I(211,3)] = {64,0}, + [I(212,3)] = {64,0}, + [I(213,3)] = {64,0}, + [I(214,3)] = {64,0}, + [I(215,3)] = {64,0}, + [I(216,3)] = {64,0}, + [I(217,3)] = {64,0}, + [I(218,3)] = {64,0}, + [I(219,3)] = {64,0}, + [I(220,3)] = {64,0}, + [I(221,3)] = {64,0}, + [I(222,3)] = {64,0}, + [I(223,3)] = {64,0}, + [I(224,3)] = {64,0}, + [I(225,3)] = {64,0}, + [I(226,3)] = {64,0}, + [I(227,3)] = {64,0}, + [I(228,3)] = {64,0}, + [I(229,3)] = {64,0}, + [I(230,3)] = {64,0}, + [I(231,3)] = {64,0}, + [I(232,3)] = {64,0}, + [I(233,3)] = {64,0}, + [I(234,3)] = {64,0}, + [I(235,3)] = {64,0}, + [I(236,3)] = {64,0}, + [I(237,3)] = {64,0}, + [I(238,3)] = {64,0}, + [I(239,3)] = {64,0}, + [I(240,3)] = {64,0}, + [I(241,3)] = {64,0}, + [I(242,3)] = {64,0}, + [I(243,3)] = {64,0}, + [I(244,3)] = {64,0}, + [I(245,3)] = {64,0}, + [I(246,3)] = {64,0}, + [I(247,3)] = {64,0}, + [I(248,3)] = {64,0}, + [I(249,3)] = {64,0}, + [I(250,3)] = {64,0}, + [I(251,3)] = {64,0}, + [I(252,3)] = {64,0}, + [I(253,3)] = {64,0}, + [I(254,3)] = {64,0}, + [I(255,3)] = {64,0}, + [I(0,4)] = {64,0}, + [I(1,4)] = {64,0}, + [I(2,4)] = {64,0}, + [I(3,4)] = {64,0}, + [I(4,4)] = {64,0}, + [I(5,4)] = {64,0}, + [I(6,4)] = {64,0}, + [I(7,4)] = {64,0}, + [I(8,4)] = {64,0}, + [I(9,4)] = {64,0}, + [I(10,4)] = {64,0}, + [I(11,4)] = {64,0}, + [I(12,4)] = {64,0}, + [I(13,4)] = {64,0}, + [I(14,4)] = {64,0}, + [I(15,4)] = {64,0}, + [I(16,4)] = {64,0}, + [I(17,4)] = {64,0}, + [I(18,4)] = {64,0}, + [I(19,4)] = {64,0}, + [I(20,4)] = {64,0}, + [I(21,4)] = {64,0}, + [I(22,4)] = {64,0}, + [I(23,4)] = {64,0}, + [I(24,4)] = {64,0}, + [I(25,4)] = {64,0}, + [I(26,4)] = {64,0}, + [I(27,4)] = {64,0}, + [I(28,4)] = {64,0}, + [I(29,4)] = {64,0}, + [I(30,4)] = {64,0}, + [I(31,4)] = {64,0}, + [I(32,4)] = {64,0}, + [I(33,4)] = {64,0}, + [I(34,4)] = {64,0}, + [I(35,4)] = {64,0}, + [I(36,4)] = {64,0}, + [I(37,4)] = {64,0}, + [I(38,4)] = {64,0}, + [I(39,4)] = {64,0}, + [I(40,4)] = {64,0}, + [I(41,4)] = {64,0}, + [I(42,4)] = {64,0}, + [I(43,4)] = {64,0}, + [I(44,4)] = {64,0}, + [I(45,4)] = {64,0}, + [I(46,4)] = {64,0}, + [I(47,4)] = {64,0}, + [I(48,4)] = {64,0}, + [I(49,4)] = {64,0}, + [I(50,4)] = {64,0}, + [I(51,4)] = {64,0}, + [I(52,4)] = {64,0}, + [I(53,4)] = {64,0}, + [I(54,4)] = {64,0}, + [I(55,4)] = {64,0}, + [I(56,4)] = {64,0}, + [I(57,4)] = {64,0}, + [I(58,4)] = {64,0}, + [I(59,4)] = {64,0}, + [I(60,4)] = {64,0}, + [I(61,4)] = {64,0}, + [I(62,4)] = {64,0}, + [I(63,4)] = {64,0}, + [I(64,4)] = {64,0}, + [I(65,4)] = {64,0}, + [I(66,4)] = {64,0}, + [I(67,4)] = {64,0}, + [I(68,4)] = {64,0}, + [I(69,4)] = {64,0}, + [I(70,4)] = {64,0}, + [I(71,4)] = {64,0}, + [I(72,4)] = {64,0}, + [I(73,4)] = {64,0}, + [I(74,4)] = {64,0}, + [I(75,4)] = {64,0}, + [I(76,4)] = {64,0}, + [I(77,4)] = {64,0}, + [I(78,4)] = {64,0}, + [I(79,4)] = {64,0}, + [I(80,4)] = {64,0}, + [I(81,4)] = {64,0}, + [I(82,4)] = {64,0}, + [I(83,4)] = {64,0}, + [I(84,4)] = {64,0}, + [I(85,4)] = {64,0}, + [I(86,4)] = {64,0}, + [I(87,4)] = {64,0}, + [I(88,4)] = {64,0}, + [I(89,4)] = {64,0}, + [I(90,4)] = {64,0}, + [I(91,4)] = {64,0}, + [I(92,4)] = {64,0}, + [I(93,4)] = {64,0}, + [I(94,4)] = {64,0}, + [I(95,4)] = {64,0}, + [I(96,4)] = {64,0}, + [I(97,4)] = {64,0}, + [I(98,4)] = {64,0}, + [I(99,4)] = {64,0}, + [I(100,4)] = {64,0}, + [I(101,4)] = {64,0}, + [I(102,4)] = {64,0}, + [I(103,4)] = {64,0}, + [I(104,4)] = {64,0}, + [I(105,4)] = {64,0}, + [I(106,4)] = {64,0}, + [I(107,4)] = {64,0}, + [I(108,4)] = {64,0}, + [I(109,4)] = {64,0}, + [I(110,4)] = {64,0}, + [I(111,4)] = {64,0}, + [I(112,4)] = {64,0}, + [I(113,4)] = {64,0}, + [I(114,4)] = {64,0}, + [I(115,4)] = {64,0}, + [I(116,4)] = {64,0}, + [I(117,4)] = {64,0}, + [I(118,4)] = {64,0}, + [I(119,4)] = {64,0}, + [I(120,4)] = {64,0}, + [I(121,4)] = {64,0}, + [I(122,4)] = {64,0}, + [I(123,4)] = {64,0}, + [I(124,4)] = {64,0}, + [I(125,4)] = {64,0}, + [I(126,4)] = {64,0}, + [I(127,4)] = {64,0}, + [I(128,4)] = {64,0}, + [I(129,4)] = {64,0}, + [I(130,4)] = {64,0}, + [I(131,4)] = {64,0}, + [I(132,4)] = {64,0}, + [I(133,4)] = {64,0}, + [I(134,4)] = {64,0}, + [I(135,4)] = {64,0}, + [I(136,4)] = {64,0}, + [I(137,4)] = {64,0}, + [I(138,4)] = {64,0}, + [I(139,4)] = {64,0}, + [I(140,4)] = {64,0}, + [I(141,4)] = {64,0}, + [I(142,4)] = {64,0}, + [I(143,4)] = {64,0}, + [I(144,4)] = {64,0}, + [I(145,4)] = {64,0}, + [I(146,4)] = {64,0}, + [I(147,4)] = {64,0}, + [I(148,4)] = {64,0}, + [I(149,4)] = {64,0}, + [I(150,4)] = {64,0}, + [I(151,4)] = {64,0}, + [I(152,4)] = {64,0}, + [I(153,4)] = {64,0}, + [I(154,4)] = {64,0}, + [I(155,4)] = {64,0}, + [I(156,4)] = {64,0}, + [I(157,4)] = {64,0}, + [I(158,4)] = {64,0}, + [I(159,4)] = {64,0}, + [I(160,4)] = {64,0}, + [I(161,4)] = {64,0}, + [I(162,4)] = {64,0}, + [I(163,4)] = {64,0}, + [I(164,4)] = {64,0}, + [I(165,4)] = {64,0}, + [I(166,4)] = {64,0}, + [I(167,4)] = {64,0}, + [I(168,4)] = {64,0}, + [I(169,4)] = {64,0}, + [I(170,4)] = {64,0}, + [I(171,4)] = {64,0}, + [I(172,4)] = {64,0}, + [I(173,4)] = {64,0}, + [I(174,4)] = {64,0}, + [I(175,4)] = {64,0}, + [I(176,4)] = {64,0}, + [I(177,4)] = {64,0}, + [I(178,4)] = {64,0}, + [I(179,4)] = {64,0}, + [I(180,4)] = {64,0}, + [I(181,4)] = {64,0}, + [I(182,4)] = {64,0}, + [I(183,4)] = {64,0}, + [I(184,4)] = {64,0}, + [I(185,4)] = {64,0}, + [I(186,4)] = {64,0}, + [I(187,4)] = {64,0}, + [I(188,4)] = {64,0}, + [I(189,4)] = {64,0}, + [I(190,4)] = {64,0}, + [I(191,4)] = {64,0}, + [I(192,4)] = {64,0}, + [I(193,4)] = {64,0}, + [I(194,4)] = {64,0}, + [I(195,4)] = {64,0}, + [I(196,4)] = {64,0}, + [I(197,4)] = {64,0}, + [I(198,4)] = {64,0}, + [I(199,4)] = {64,0}, + [I(200,4)] = {64,0}, + [I(201,4)] = {64,0}, + [I(202,4)] = {64,0}, + [I(203,4)] = {64,0}, + [I(204,4)] = {64,0}, + [I(205,4)] = {64,0}, + [I(206,4)] = {64,0}, + [I(207,4)] = {64,0}, + [I(208,4)] = {64,0}, + [I(209,4)] = {64,0}, + [I(210,4)] = {64,0}, + [I(211,4)] = {64,0}, + [I(212,4)] = {64,0}, + [I(213,4)] = {64,0}, + [I(214,4)] = {64,0}, + [I(215,4)] = {64,0}, + [I(216,4)] = {64,0}, + [I(217,4)] = {64,0}, + [I(218,4)] = {64,0}, + [I(219,4)] = {64,0}, + [I(220,4)] = {64,0}, + [I(221,4)] = {64,0}, + [I(222,4)] = {64,0}, + [I(223,4)] = {64,0}, + [I(224,4)] = {64,0}, + [I(225,4)] = {64,0}, + [I(226,4)] = {64,0}, + [I(227,4)] = {64,0}, + [I(228,4)] = {64,0}, + [I(229,4)] = {64,0}, + [I(230,4)] = {64,0}, + [I(231,4)] = {64,0}, + [I(232,4)] = {64,0}, + [I(233,4)] = {64,0}, + [I(234,4)] = {64,0}, + [I(235,4)] = {64,0}, + [I(236,4)] = {64,0}, + [I(237,4)] = {64,0}, + [I(238,4)] = {64,0}, + [I(239,4)] = {64,0}, + [I(240,4)] = {64,0}, + [I(241,4)] = {64,0}, + [I(242,4)] = {64,0}, + [I(243,4)] = {64,0}, + [I(244,4)] = {64,0}, + [I(245,4)] = {64,0}, + [I(246,4)] = {64,0}, + [I(247,4)] = {64,0}, + [I(248,4)] = {64,0}, + [I(249,4)] = {64,0}, + [I(250,4)] = {64,0}, + [I(251,4)] = {64,0}, + [I(252,4)] = {64,0}, + [I(253,4)] = {64,0}, + [I(254,4)] = {64,0}, + [I(255,4)] = {64,0}, + [I(0,5)] = {64,0}, + [I(1,5)] = {64,0}, + [I(2,5)] = {64,0}, + [I(3,5)] = {64,0}, + [I(4,5)] = {64,0}, + [I(5,5)] = {64,0}, + [I(6,5)] = {64,0}, + [I(7,5)] = {64,0}, + [I(8,5)] = {64,0}, + [I(9,5)] = {64,0}, + [I(10,5)] = {64,0}, + [I(11,5)] = {64,0}, + [I(12,5)] = {64,0}, + [I(13,5)] = {64,0}, + [I(14,5)] = {64,0}, + [I(15,5)] = {64,0}, + [I(16,5)] = {64,0}, + [I(17,5)] = {64,0}, + [I(18,5)] = {64,0}, + [I(19,5)] = {64,0}, + [I(20,5)] = {64,0}, + [I(21,5)] = {64,0}, + [I(22,5)] = {64,0}, + [I(23,5)] = {64,0}, + [I(24,5)] = {64,0}, + [I(25,5)] = {64,0}, + [I(26,5)] = {64,0}, + [I(27,5)] = {64,0}, + [I(28,5)] = {64,0}, + [I(29,5)] = {64,0}, + [I(30,5)] = {64,0}, + [I(31,5)] = {64,0}, + [I(32,5)] = {64,0}, + [I(33,5)] = {64,0}, + [I(34,5)] = {64,0}, + [I(35,5)] = {64,0}, + [I(36,5)] = {64,0}, + [I(37,5)] = {64,0}, + [I(38,5)] = {64,0}, + [I(39,5)] = {64,0}, + [I(40,5)] = {64,0}, + [I(41,5)] = {64,0}, + [I(42,5)] = {64,0}, + [I(43,5)] = {64,0}, + [I(44,5)] = {64,0}, + [I(45,5)] = {64,0}, + [I(46,5)] = {64,0}, + [I(47,5)] = {64,0}, + [I(48,5)] = {64,0}, + [I(49,5)] = {64,0}, + [I(50,5)] = {64,0}, + [I(51,5)] = {64,0}, + [I(52,5)] = {64,0}, + [I(53,5)] = {64,0}, + [I(54,5)] = {64,0}, + [I(55,5)] = {64,0}, + [I(56,5)] = {64,0}, + [I(57,5)] = {64,0}, + [I(58,5)] = {64,0}, + [I(59,5)] = {64,0}, + [I(60,5)] = {64,0}, + [I(61,5)] = {64,0}, + [I(62,5)] = {64,0}, + [I(63,5)] = {64,0}, + [I(64,5)] = {64,0}, + [I(65,5)] = {64,0}, + [I(66,5)] = {64,0}, + [I(67,5)] = {64,0}, + [I(68,5)] = {64,0}, + [I(69,5)] = {64,0}, + [I(70,5)] = {64,0}, + [I(71,5)] = {64,0}, + [I(72,5)] = {64,0}, + [I(73,5)] = {64,0}, + [I(74,5)] = {64,0}, + [I(75,5)] = {64,0}, + [I(76,5)] = {64,0}, + [I(77,5)] = {64,0}, + [I(78,5)] = {64,0}, + [I(79,5)] = {64,0}, + [I(80,5)] = {64,0}, + [I(81,5)] = {64,0}, + [I(82,5)] = {64,0}, + [I(83,5)] = {64,0}, + [I(84,5)] = {64,0}, + [I(85,5)] = {64,0}, + [I(86,5)] = {64,0}, + [I(87,5)] = {64,0}, + [I(88,5)] = {64,0}, + [I(89,5)] = {64,0}, + [I(90,5)] = {64,0}, + [I(91,5)] = {64,0}, + [I(92,5)] = {64,0}, + [I(93,5)] = {64,0}, + [I(94,5)] = {64,0}, + [I(95,5)] = {64,0}, + [I(96,5)] = {64,0}, + [I(97,5)] = {64,0}, + [I(98,5)] = {64,0}, + [I(99,5)] = {64,0}, + [I(100,5)] = {64,0}, + [I(101,5)] = {64,0}, + [I(102,5)] = {64,0}, + [I(103,5)] = {64,0}, + [I(104,5)] = {64,0}, + [I(105,5)] = {64,0}, + [I(106,5)] = {64,0}, + [I(107,5)] = {64,0}, + [I(108,5)] = {64,0}, + [I(109,5)] = {64,0}, + [I(110,5)] = {64,0}, + [I(111,5)] = {64,0}, + [I(112,5)] = {64,0}, + [I(113,5)] = {64,0}, + [I(114,5)] = {64,0}, + [I(115,5)] = {64,0}, + [I(116,5)] = {64,0}, + [I(117,5)] = {64,0}, + [I(118,5)] = {64,0}, + [I(119,5)] = {64,0}, + [I(120,5)] = {64,0}, + [I(121,5)] = {64,0}, + [I(122,5)] = {64,0}, + [I(123,5)] = {64,0}, + [I(124,5)] = {64,0}, + [I(125,5)] = {64,0}, + [I(126,5)] = {64,0}, + [I(127,5)] = {64,0}, + [I(128,5)] = {64,0}, + [I(129,5)] = {64,0}, + [I(130,5)] = {64,0}, + [I(131,5)] = {64,0}, + [I(132,5)] = {64,0}, + [I(133,5)] = {64,0}, + [I(134,5)] = {64,0}, + [I(135,5)] = {64,0}, + [I(136,5)] = {64,0}, + [I(137,5)] = {64,0}, + [I(138,5)] = {64,0}, + [I(139,5)] = {64,0}, + [I(140,5)] = {64,0}, + [I(141,5)] = {64,0}, + [I(142,5)] = {64,0}, + [I(143,5)] = {64,0}, + [I(144,5)] = {64,0}, + [I(145,5)] = {64,0}, + [I(146,5)] = {64,0}, + [I(147,5)] = {64,0}, + [I(148,5)] = {64,0}, + [I(149,5)] = {64,0}, + [I(150,5)] = {64,0}, + [I(151,5)] = {64,0}, + [I(152,5)] = {64,0}, + [I(153,5)] = {64,0}, + [I(154,5)] = {64,0}, + [I(155,5)] = {64,0}, + [I(156,5)] = {64,0}, + [I(157,5)] = {64,0}, + [I(158,5)] = {64,0}, + [I(159,5)] = {64,0}, + [I(160,5)] = {64,0}, + [I(161,5)] = {64,0}, + [I(162,5)] = {64,0}, + [I(163,5)] = {64,0}, + [I(164,5)] = {64,0}, + [I(165,5)] = {64,0}, + [I(166,5)] = {64,0}, + [I(167,5)] = {64,0}, + [I(168,5)] = {64,0}, + [I(169,5)] = {64,0}, + [I(170,5)] = {64,0}, + [I(171,5)] = {64,0}, + [I(172,5)] = {64,0}, + [I(173,5)] = {64,0}, + [I(174,5)] = {64,0}, + [I(175,5)] = {64,0}, + [I(176,5)] = {64,0}, + [I(177,5)] = {64,0}, + [I(178,5)] = {64,0}, + [I(179,5)] = {64,0}, + [I(180,5)] = {64,0}, + [I(181,5)] = {64,0}, + [I(182,5)] = {64,0}, + [I(183,5)] = {64,0}, + [I(184,5)] = {64,0}, + [I(185,5)] = {64,0}, + [I(186,5)] = {64,0}, + [I(187,5)] = {64,0}, + [I(188,5)] = {64,0}, + [I(189,5)] = {64,0}, + [I(190,5)] = {64,0}, + [I(191,5)] = {64,0}, + [I(192,5)] = {64,0}, + [I(193,5)] = {64,0}, + [I(194,5)] = {64,0}, + [I(195,5)] = {64,0}, + [I(196,5)] = {64,0}, + [I(197,5)] = {64,0}, + [I(198,5)] = {64,0}, + [I(199,5)] = {64,0}, + [I(200,5)] = {64,0}, + [I(201,5)] = {64,0}, + [I(202,5)] = {64,0}, + [I(203,5)] = {64,0}, + [I(204,5)] = {64,0}, + [I(205,5)] = {64,0}, + [I(206,5)] = {64,0}, + [I(207,5)] = {64,0}, + [I(208,5)] = {64,0}, + [I(209,5)] = {64,0}, + [I(210,5)] = {64,0}, + [I(211,5)] = {64,0}, + [I(212,5)] = {64,0}, + [I(213,5)] = {64,0}, + [I(214,5)] = {64,0}, + [I(215,5)] = {64,0}, + [I(216,5)] = {64,0}, + [I(217,5)] = {64,0}, + [I(218,5)] = {64,0}, + [I(219,5)] = {64,0}, + [I(220,5)] = {64,0}, + [I(221,5)] = {64,0}, + [I(222,5)] = {64,0}, + [I(223,5)] = {64,0}, + [I(224,5)] = {64,0}, + [I(225,5)] = {64,0}, + [I(226,5)] = {64,0}, + [I(227,5)] = {64,0}, + [I(228,5)] = {64,0}, + [I(229,5)] = {64,0}, + [I(230,5)] = {64,0}, + [I(231,5)] = {64,0}, + [I(232,5)] = {64,0}, + [I(233,5)] = {64,0}, + [I(234,5)] = {64,0}, + [I(235,5)] = {64,0}, + [I(236,5)] = {64,0}, + [I(237,5)] = {64,0}, + [I(238,5)] = {64,0}, + [I(239,5)] = {64,0}, + [I(240,5)] = {64,0}, + [I(241,5)] = {64,0}, + [I(242,5)] = {64,0}, + [I(243,5)] = {64,0}, + [I(244,5)] = {64,0}, + [I(245,5)] = {64,0}, + [I(246,5)] = {64,0}, + [I(247,5)] = {64,0}, + [I(248,5)] = {64,0}, + [I(249,5)] = {64,0}, + [I(250,5)] = {64,0}, + [I(251,5)] = {64,0}, + [I(252,5)] = {64,0}, + [I(253,5)] = {64,0}, + [I(254,5)] = {64,0}, + [I(255,5)] = {64,0}, + [I(0,6)] = {64,0}, + [I(1,6)] = {64,0}, + [I(2,6)] = {64,0}, + [I(3,6)] = {64,0}, + [I(4,6)] = {64,0}, + [I(5,6)] = {64,0}, + [I(6,6)] = {64,0}, + [I(7,6)] = {64,0}, + [I(8,6)] = {64,0}, + [I(9,6)] = {64,0}, + [I(10,6)] = {64,0}, + [I(11,6)] = {64,0}, + [I(12,6)] = {64,0}, + [I(13,6)] = {64,0}, + [I(14,6)] = {64,0}, + [I(15,6)] = {64,0}, + [I(16,6)] = {64,0}, + [I(17,6)] = {64,0}, + [I(18,6)] = {64,0}, + [I(19,6)] = {64,0}, + [I(20,6)] = {64,0}, + [I(21,6)] = {64,0}, + [I(22,6)] = {64,0}, + [I(23,6)] = {64,0}, + [I(24,6)] = {64,0}, + [I(25,6)] = {64,0}, + [I(26,6)] = {64,0}, + [I(27,6)] = {64,0}, + [I(28,6)] = {64,0}, + [I(29,6)] = {64,0}, + [I(30,6)] = {64,0}, + [I(31,6)] = {64,0}, + [I(32,6)] = {64,0}, + [I(33,6)] = {64,0}, + [I(34,6)] = {64,0}, + [I(35,6)] = {64,0}, + [I(36,6)] = {64,0}, + [I(37,6)] = {64,0}, + [I(38,6)] = {64,0}, + [I(39,6)] = {64,0}, + [I(40,6)] = {64,0}, + [I(41,6)] = {64,0}, + [I(42,6)] = {64,0}, + [I(43,6)] = {64,0}, + [I(44,6)] = {64,0}, + [I(45,6)] = {64,0}, + [I(46,6)] = {64,0}, + [I(47,6)] = {64,0}, + [I(48,6)] = {64,0}, + [I(49,6)] = {64,0}, + [I(50,6)] = {64,0}, + [I(51,6)] = {64,0}, + [I(52,6)] = {64,0}, + [I(53,6)] = {64,0}, + [I(54,6)] = {64,0}, + [I(55,6)] = {64,0}, + [I(56,6)] = {64,0}, + [I(57,6)] = {64,0}, + [I(58,6)] = {64,0}, + [I(59,6)] = {64,0}, + [I(60,6)] = {64,0}, + [I(61,6)] = {64,0}, + [I(62,6)] = {64,0}, + [I(63,6)] = {64,0}, + [I(64,6)] = {64,0}, + [I(65,6)] = {64,0}, + [I(66,6)] = {64,0}, + [I(67,6)] = {64,0}, + [I(68,6)] = {64,0}, + [I(69,6)] = {64,0}, + [I(70,6)] = {64,0}, + [I(71,6)] = {64,0}, + [I(72,6)] = {64,0}, + [I(73,6)] = {64,0}, + [I(74,6)] = {64,0}, + [I(75,6)] = {64,0}, + [I(76,6)] = {64,0}, + [I(77,6)] = {64,0}, + [I(78,6)] = {64,0}, + [I(79,6)] = {64,0}, + [I(80,6)] = {64,0}, + [I(81,6)] = {64,0}, + [I(82,6)] = {64,0}, + [I(83,6)] = {64,0}, + [I(84,6)] = {64,0}, + [I(85,6)] = {64,0}, + [I(86,6)] = {64,0}, + [I(87,6)] = {64,0}, + [I(88,6)] = {64,0}, + [I(89,6)] = {64,0}, + [I(90,6)] = {64,0}, + [I(91,6)] = {64,0}, + [I(92,6)] = {64,0}, + [I(93,6)] = {64,0}, + [I(94,6)] = {64,0}, + [I(95,6)] = {64,0}, + [I(96,6)] = {64,0}, + [I(97,6)] = {64,0}, + [I(98,6)] = {64,0}, + [I(99,6)] = {64,0}, + [I(100,6)] = {64,0}, + [I(101,6)] = {64,0}, + [I(102,6)] = {64,0}, + [I(103,6)] = {64,0}, + [I(104,6)] = {64,0}, + [I(105,6)] = {64,0}, + [I(106,6)] = {64,0}, + [I(107,6)] = {64,0}, + [I(108,6)] = {64,0}, + [I(109,6)] = {64,0}, + [I(110,6)] = {64,0}, + [I(111,6)] = {64,0}, + [I(112,6)] = {64,0}, + [I(113,6)] = {64,0}, + [I(114,6)] = {64,0}, + [I(115,6)] = {64,0}, + [I(116,6)] = {64,0}, + [I(117,6)] = {64,0}, + [I(118,6)] = {64,0}, + [I(119,6)] = {64,0}, + [I(120,6)] = {64,0}, + [I(121,6)] = {64,0}, + [I(122,6)] = {64,0}, + [I(123,6)] = {64,0}, + [I(124,6)] = {64,0}, + [I(125,6)] = {64,0}, + [I(126,6)] = {64,0}, + [I(127,6)] = {64,0}, + [I(128,6)] = {64,0}, + [I(129,6)] = {64,0}, + [I(130,6)] = {64,0}, + [I(131,6)] = {64,0}, + [I(132,6)] = {64,0}, + [I(133,6)] = {64,0}, + [I(134,6)] = {64,0}, + [I(135,6)] = {64,0}, + [I(136,6)] = {64,0}, + [I(137,6)] = {64,0}, + [I(138,6)] = {64,0}, + [I(139,6)] = {64,0}, + [I(140,6)] = {64,0}, + [I(141,6)] = {64,0}, + [I(142,6)] = {64,0}, + [I(143,6)] = {64,0}, + [I(144,6)] = {64,0}, + [I(145,6)] = {64,0}, + [I(146,6)] = {64,0}, + [I(147,6)] = {64,0}, + [I(148,6)] = {64,0}, + [I(149,6)] = {64,0}, + [I(150,6)] = {64,0}, + [I(151,6)] = {64,0}, + [I(152,6)] = {64,0}, + [I(153,6)] = {64,0}, + [I(154,6)] = {64,0}, + [I(155,6)] = {64,0}, + [I(156,6)] = {64,0}, + [I(157,6)] = {64,0}, + [I(158,6)] = {64,0}, + [I(159,6)] = {64,0}, + [I(160,6)] = {64,0}, + [I(161,6)] = {64,0}, + [I(162,6)] = {64,0}, + [I(163,6)] = {64,0}, + [I(164,6)] = {64,0}, + [I(165,6)] = {64,0}, + [I(166,6)] = {64,0}, + [I(167,6)] = {64,0}, + [I(168,6)] = {64,0}, + [I(169,6)] = {64,0}, + [I(170,6)] = {64,0}, + [I(171,6)] = {64,0}, + [I(172,6)] = {64,0}, + [I(173,6)] = {64,0}, + [I(174,6)] = {64,0}, + [I(175,6)] = {64,0}, + [I(176,6)] = {64,0}, + [I(177,6)] = {64,0}, + [I(178,6)] = {64,0}, + [I(179,6)] = {64,0}, + [I(180,6)] = {64,0}, + [I(181,6)] = {64,0}, + [I(182,6)] = {64,0}, + [I(183,6)] = {64,0}, + [I(184,6)] = {64,0}, + [I(185,6)] = {64,0}, + [I(186,6)] = {64,0}, + [I(187,6)] = {64,0}, + [I(188,6)] = {64,0}, + [I(189,6)] = {64,0}, + [I(190,6)] = {64,0}, + [I(191,6)] = {64,0}, + [I(192,6)] = {64,0}, + [I(193,6)] = {64,0}, + [I(194,6)] = {64,0}, + [I(195,6)] = {64,0}, + [I(196,6)] = {64,0}, + [I(197,6)] = {64,0}, + [I(198,6)] = {64,0}, + [I(199,6)] = {64,0}, + [I(200,6)] = {64,0}, + [I(201,6)] = {64,0}, + [I(202,6)] = {64,0}, + [I(203,6)] = {64,0}, + [I(204,6)] = {64,0}, + [I(205,6)] = {64,0}, + [I(206,6)] = {64,0}, + [I(207,6)] = {64,0}, + [I(208,6)] = {64,0}, + [I(209,6)] = {64,0}, + [I(210,6)] = {64,0}, + [I(211,6)] = {64,0}, + [I(212,6)] = {64,0}, + [I(213,6)] = {64,0}, + [I(214,6)] = {64,0}, + [I(215,6)] = {64,0}, + [I(216,6)] = {64,0}, + [I(217,6)] = {64,0}, + [I(218,6)] = {64,0}, + [I(219,6)] = {64,0}, + [I(220,6)] = {64,0}, + [I(221,6)] = {64,0}, + [I(222,6)] = {64,0}, + [I(223,6)] = {64,0}, + [I(224,6)] = {64,0}, + [I(225,6)] = {64,0}, + [I(226,6)] = {64,0}, + [I(227,6)] = {64,0}, + [I(228,6)] = {64,0}, + [I(229,6)] = {64,0}, + [I(230,6)] = {64,0}, + [I(231,6)] = {64,0}, + [I(232,6)] = {64,0}, + [I(233,6)] = {64,0}, + [I(234,6)] = {64,0}, + [I(235,6)] = {64,0}, + [I(236,6)] = {64,0}, + [I(237,6)] = {64,0}, + [I(238,6)] = {64,0}, + [I(239,6)] = {64,0}, + [I(240,6)] = {64,0}, + [I(241,6)] = {64,0}, + [I(242,6)] = {64,0}, + [I(243,6)] = {64,0}, + [I(244,6)] = {64,0}, + [I(245,6)] = {64,0}, + [I(246,6)] = {64,0}, + [I(247,6)] = {64,0}, + [I(248,6)] = {64,0}, + [I(249,6)] = {64,0}, + [I(250,6)] = {64,0}, + [I(251,6)] = {64,0}, + [I(252,6)] = {64,0}, + [I(253,6)] = {64,0}, + [I(254,6)] = {64,0}, + [I(255,6)] = {64,0}, + [I(0,7)] = {64,0}, + [I(1,7)] = {64,0}, + [I(2,7)] = {64,0}, + [I(3,7)] = {64,0}, + [I(4,7)] = {64,0}, + [I(5,7)] = {64,0}, + [I(6,7)] = {64,0}, + [I(7,7)] = {64,0}, + [I(8,7)] = {64,0}, + [I(9,7)] = {64,0}, + [I(10,7)] = {64,0}, + [I(11,7)] = {64,0}, + [I(12,7)] = {64,0}, + [I(13,7)] = {64,0}, + [I(14,7)] = {64,0}, + [I(15,7)] = {64,0}, + [I(16,7)] = {64,0}, + [I(17,7)] = {64,0}, + [I(18,7)] = {64,0}, + [I(19,7)] = {64,0}, + [I(20,7)] = {64,0}, + [I(21,7)] = {64,0}, + [I(22,7)] = {64,0}, + [I(23,7)] = {64,0}, + [I(24,7)] = {64,0}, + [I(25,7)] = {64,0}, + [I(26,7)] = {64,0}, + [I(27,7)] = {64,0}, + [I(28,7)] = {64,0}, + [I(29,7)] = {64,0}, + [I(30,7)] = {64,0}, + [I(31,7)] = {64,0}, + [I(32,7)] = {64,0}, + [I(33,7)] = {64,0}, + [I(34,7)] = {64,0}, + [I(35,7)] = {64,0}, + [I(36,7)] = {64,0}, + [I(37,7)] = {64,0}, + [I(38,7)] = {64,0}, + [I(39,7)] = {64,0}, + [I(40,7)] = {64,0}, + [I(41,7)] = {64,0}, + [I(42,7)] = {64,0}, + [I(43,7)] = {64,0}, + [I(44,7)] = {64,0}, + [I(45,7)] = {64,0}, + [I(46,7)] = {64,0}, + [I(47,7)] = {64,0}, + [I(48,7)] = {64,0}, + [I(49,7)] = {64,0}, + [I(50,7)] = {64,0}, + [I(51,7)] = {64,0}, + [I(52,7)] = {64,0}, + [I(53,7)] = {64,0}, + [I(54,7)] = {64,0}, + [I(55,7)] = {64,0}, + [I(56,7)] = {64,0}, + [I(57,7)] = {64,0}, + [I(58,7)] = {64,0}, + [I(59,7)] = {64,0}, + [I(60,7)] = {64,0}, + [I(61,7)] = {64,0}, + [I(62,7)] = {64,0}, + [I(63,7)] = {64,0}, + [I(64,7)] = {64,0}, + [I(65,7)] = {64,0}, + [I(66,7)] = {64,0}, + [I(67,7)] = {64,0}, + [I(68,7)] = {64,0}, + [I(69,7)] = {64,0}, + [I(70,7)] = {64,0}, + [I(71,7)] = {64,0}, + [I(72,7)] = {64,0}, + [I(73,7)] = {64,0}, + [I(74,7)] = {64,0}, + [I(75,7)] = {64,0}, + [I(76,7)] = {64,0}, + [I(77,7)] = {64,0}, + [I(78,7)] = {64,0}, + [I(79,7)] = {64,0}, + [I(80,7)] = {64,0}, + [I(81,7)] = {64,0}, + [I(82,7)] = {64,0}, + [I(83,7)] = {64,0}, + [I(84,7)] = {64,0}, + [I(85,7)] = {64,0}, + [I(86,7)] = {64,0}, + [I(87,7)] = {64,0}, + [I(88,7)] = {64,0}, + [I(89,7)] = {64,0}, + [I(90,7)] = {64,0}, + [I(91,7)] = {64,0}, + [I(92,7)] = {64,0}, + [I(93,7)] = {64,0}, + [I(94,7)] = {64,0}, + [I(95,7)] = {64,0}, + [I(96,7)] = {64,0}, + [I(97,7)] = {64,0}, + [I(98,7)] = {64,0}, + [I(99,7)] = {64,0}, + [I(100,7)] = {64,0}, + [I(101,7)] = {64,0}, + [I(102,7)] = {64,0}, + [I(103,7)] = {64,0}, + [I(104,7)] = {64,0}, + [I(105,7)] = {64,0}, + [I(106,7)] = {64,0}, + [I(107,7)] = {64,0}, + [I(108,7)] = {64,0}, + [I(109,7)] = {64,0}, + [I(110,7)] = {64,0}, + [I(111,7)] = {64,0}, + [I(112,7)] = {64,0}, + [I(113,7)] = {64,0}, + [I(114,7)] = {64,0}, + [I(115,7)] = {64,0}, + [I(116,7)] = {64,0}, + [I(117,7)] = {64,0}, + [I(118,7)] = {64,0}, + [I(119,7)] = {64,0}, + [I(120,7)] = {64,0}, + [I(121,7)] = {64,0}, + [I(122,7)] = {64,0}, + [I(123,7)] = {64,0}, + [I(124,7)] = {64,0}, + [I(125,7)] = {64,0}, + [I(126,7)] = {64,0}, + [I(127,7)] = {64,0}, + [I(128,7)] = {64,0}, + [I(129,7)] = {64,0}, + [I(130,7)] = {64,0}, + [I(131,7)] = {64,0}, + [I(132,7)] = {64,0}, + [I(133,7)] = {64,0}, + [I(134,7)] = {64,0}, + [I(135,7)] = {64,0}, + [I(136,7)] = {64,0}, + [I(137,7)] = {64,0}, + [I(138,7)] = {64,0}, + [I(139,7)] = {64,0}, + [I(140,7)] = {64,0}, + [I(141,7)] = {64,0}, + [I(142,7)] = {64,0}, + [I(143,7)] = {64,0}, + [I(144,7)] = {64,0}, + [I(145,7)] = {64,0}, + [I(146,7)] = {64,0}, + [I(147,7)] = {64,0}, + [I(148,7)] = {64,0}, + [I(149,7)] = {64,0}, + [I(150,7)] = {64,0}, + [I(151,7)] = {64,0}, + [I(152,7)] = {64,0}, + [I(153,7)] = {64,0}, + [I(154,7)] = {64,0}, + [I(155,7)] = {64,0}, + [I(156,7)] = {64,0}, + [I(157,7)] = {64,0}, + [I(158,7)] = {64,0}, + [I(159,7)] = {64,0}, + [I(160,7)] = {64,0}, + [I(161,7)] = {64,0}, + [I(162,7)] = {64,0}, + [I(163,7)] = {64,0}, + [I(164,7)] = {64,0}, + [I(165,7)] = {64,0}, + [I(166,7)] = {64,0}, + [I(167,7)] = {64,0}, + [I(168,7)] = {64,0}, + [I(169,7)] = {64,0}, + [I(170,7)] = {64,0}, + [I(171,7)] = {64,0}, + [I(172,7)] = {64,0}, + [I(173,7)] = {64,0}, + [I(174,7)] = {64,0}, + [I(175,7)] = {64,0}, + [I(176,7)] = {64,0}, + [I(177,7)] = {64,0}, + [I(178,7)] = {64,0}, + [I(179,7)] = {64,0}, + [I(180,7)] = {64,0}, + [I(181,7)] = {64,0}, + [I(182,7)] = {64,0}, + [I(183,7)] = {64,0}, + [I(184,7)] = {64,0}, + [I(185,7)] = {64,0}, + [I(186,7)] = {64,0}, + [I(187,7)] = {64,0}, + [I(188,7)] = {64,0}, + [I(189,7)] = {64,0}, + [I(190,7)] = {64,0}, + [I(191,7)] = {64,0}, + [I(192,7)] = {64,0}, + [I(193,7)] = {64,0}, + [I(194,7)] = {64,0}, + [I(195,7)] = {64,0}, + [I(196,7)] = {64,0}, + [I(197,7)] = {64,0}, + [I(198,7)] = {64,0}, + [I(199,7)] = {64,0}, + [I(200,7)] = {64,0}, + [I(201,7)] = {64,0}, + [I(202,7)] = {64,0}, + [I(203,7)] = {64,0}, + [I(204,7)] = {64,0}, + [I(205,7)] = {64,0}, + [I(206,7)] = {64,0}, + [I(207,7)] = {64,0}, + [I(208,7)] = {64,0}, + [I(209,7)] = {64,0}, + [I(210,7)] = {64,0}, + [I(211,7)] = {64,0}, + [I(212,7)] = {64,0}, + [I(213,7)] = {64,0}, + [I(214,7)] = {64,0}, + [I(215,7)] = {64,0}, + [I(216,7)] = {64,0}, + [I(217,7)] = {64,0}, + [I(218,7)] = {64,0}, + [I(219,7)] = {64,0}, + [I(220,7)] = {64,0}, + [I(221,7)] = {64,0}, + [I(222,7)] = {64,0}, + [I(223,7)] = {64,0}, + [I(224,7)] = {64,0}, + [I(225,7)] = {64,0}, + [I(226,7)] = {64,0}, + [I(227,7)] = {64,0}, + [I(228,7)] = {64,0}, + [I(229,7)] = {64,0}, + [I(230,7)] = {64,0}, + [I(231,7)] = {64,0}, + [I(232,7)] = {64,0}, + [I(233,7)] = {64,0}, + [I(234,7)] = {64,0}, + [I(235,7)] = {64,0}, + [I(236,7)] = {64,0}, + [I(237,7)] = {64,0}, + [I(238,7)] = {64,0}, + [I(239,7)] = {64,0}, + [I(240,7)] = {64,0}, + [I(241,7)] = {64,0}, + [I(242,7)] = {64,0}, + [I(243,7)] = {64,0}, + [I(244,7)] = {64,0}, + [I(245,7)] = {64,0}, + [I(246,7)] = {64,0}, + [I(247,7)] = {64,0}, + [I(248,7)] = {64,0}, + [I(249,7)] = {64,0}, + [I(250,7)] = {64,0}, + [I(251,7)] = {64,0}, + [I(252,7)] = {64,0}, + [I(253,7)] = {64,0}, + [I(254,7)] = {64,0}, + [I(255,7)] = {64,0}, + [I(0,8)] = {64,0}, + [I(1,8)] = {64,0}, + [I(2,8)] = {64,0}, + [I(3,8)] = {64,0}, + [I(4,8)] = {64,0}, + [I(5,8)] = {64,0}, + [I(6,8)] = {64,0}, + [I(7,8)] = {64,0}, + [I(8,8)] = {64,0}, + [I(9,8)] = {64,0}, + [I(10,8)] = {64,0}, + [I(11,8)] = {64,0}, + [I(12,8)] = {64,0}, + [I(13,8)] = {64,0}, + [I(14,8)] = {64,0}, + [I(15,8)] = {64,0}, + [I(16,8)] = {64,0}, + [I(17,8)] = {64,0}, + [I(18,8)] = {64,0}, + [I(19,8)] = {64,0}, + [I(20,8)] = {64,0}, + [I(21,8)] = {64,0}, + [I(22,8)] = {64,0}, + [I(23,8)] = {64,0}, + [I(24,8)] = {64,0}, + [I(25,8)] = {64,0}, + [I(26,8)] = {64,0}, + [I(27,8)] = {64,0}, + [I(28,8)] = {64,0}, + [I(29,8)] = {64,0}, + [I(30,8)] = {64,0}, + [I(31,8)] = {64,0}, + [I(32,8)] = {64,0}, + [I(33,8)] = {64,0}, + [I(34,8)] = {64,0}, + [I(35,8)] = {64,0}, + [I(36,8)] = {64,0}, + [I(37,8)] = {64,0}, + [I(38,8)] = {64,0}, + [I(39,8)] = {64,0}, + [I(40,8)] = {64,0}, + [I(41,8)] = {64,0}, + [I(42,8)] = {64,0}, + [I(43,8)] = {64,0}, + [I(44,8)] = {64,0}, + [I(45,8)] = {64,0}, + [I(46,8)] = {64,0}, + [I(47,8)] = {64,0}, + [I(48,8)] = {64,0}, + [I(49,8)] = {64,0}, + [I(50,8)] = {64,0}, + [I(51,8)] = {64,0}, + [I(52,8)] = {64,0}, + [I(53,8)] = {64,0}, + [I(54,8)] = {64,0}, + [I(55,8)] = {64,0}, + [I(56,8)] = {64,0}, + [I(57,8)] = {64,0}, + [I(58,8)] = {64,0}, + [I(59,8)] = {64,0}, + [I(60,8)] = {64,0}, + [I(61,8)] = {64,0}, + [I(62,8)] = {64,0}, + [I(63,8)] = {64,0}, + [I(64,8)] = {64,0}, + [I(65,8)] = {64,0}, + [I(66,8)] = {64,0}, + [I(67,8)] = {64,0}, + [I(68,8)] = {64,0}, + [I(69,8)] = {64,0}, + [I(70,8)] = {64,0}, + [I(71,8)] = {64,0}, + [I(72,8)] = {64,0}, + [I(73,8)] = {64,0}, + [I(74,8)] = {64,0}, + [I(75,8)] = {64,0}, + [I(76,8)] = {64,0}, + [I(77,8)] = {64,0}, + [I(78,8)] = {64,0}, + [I(79,8)] = {64,0}, + [I(80,8)] = {64,0}, + [I(81,8)] = {64,0}, + [I(82,8)] = {64,0}, + [I(83,8)] = {64,0}, + [I(84,8)] = {64,0}, + [I(85,8)] = {64,0}, + [I(86,8)] = {64,0}, + [I(87,8)] = {64,0}, + [I(88,8)] = {64,0}, + [I(89,8)] = {64,0}, + [I(90,8)] = {64,0}, + [I(91,8)] = {64,0}, + [I(92,8)] = {64,0}, + [I(93,8)] = {64,0}, + [I(94,8)] = {64,0}, + [I(95,8)] = {64,0}, + [I(96,8)] = {64,0}, + [I(97,8)] = {64,0}, + [I(98,8)] = {64,0}, + [I(99,8)] = {64,0}, + [I(100,8)] = {64,0}, + [I(101,8)] = {64,0}, + [I(102,8)] = {64,0}, + [I(103,8)] = {64,0}, + [I(104,8)] = {64,0}, + [I(105,8)] = {64,0}, + [I(106,8)] = {64,0}, + [I(107,8)] = {64,0}, + [I(108,8)] = {64,0}, + [I(109,8)] = {64,0}, + [I(110,8)] = {64,0}, + [I(111,8)] = {64,0}, + [I(112,8)] = {64,0}, + [I(113,8)] = {64,0}, + [I(114,8)] = {64,0}, + [I(115,8)] = {64,0}, + [I(116,8)] = {64,0}, + [I(117,8)] = {64,0}, + [I(118,8)] = {64,0}, + [I(119,8)] = {64,0}, + [I(120,8)] = {64,0}, + [I(121,8)] = {64,0}, + [I(122,8)] = {64,0}, + [I(123,8)] = {64,0}, + [I(124,8)] = {64,0}, + [I(125,8)] = {64,0}, + [I(126,8)] = {64,0}, + [I(127,8)] = {64,0}, + [I(128,8)] = {64,0}, + [I(129,8)] = {64,0}, + [I(130,8)] = {64,0}, + [I(131,8)] = {64,0}, + [I(132,8)] = {64,0}, + [I(133,8)] = {64,0}, + [I(134,8)] = {64,0}, + [I(135,8)] = {64,0}, + [I(136,8)] = {64,0}, + [I(137,8)] = {64,0}, + [I(138,8)] = {64,0}, + [I(139,8)] = {64,0}, + [I(140,8)] = {64,0}, + [I(141,8)] = {64,0}, + [I(142,8)] = {64,0}, + [I(143,8)] = {64,0}, + [I(144,8)] = {64,0}, + [I(145,8)] = {64,0}, + [I(146,8)] = {64,0}, + [I(147,8)] = {64,0}, + [I(148,8)] = {64,0}, + [I(149,8)] = {64,0}, + [I(150,8)] = {64,0}, + [I(151,8)] = {64,0}, + [I(152,8)] = {64,0}, + [I(153,8)] = {64,0}, + [I(154,8)] = {64,0}, + [I(155,8)] = {64,0}, + [I(156,8)] = {64,0}, + [I(157,8)] = {64,0}, + [I(158,8)] = {64,0}, + [I(159,8)] = {64,0}, + [I(160,8)] = {64,0}, + [I(161,8)] = {64,0}, + [I(162,8)] = {64,0}, + [I(163,8)] = {64,0}, + [I(164,8)] = {64,0}, + [I(165,8)] = {64,0}, + [I(166,8)] = {64,0}, + [I(167,8)] = {64,0}, + [I(168,8)] = {64,0}, + [I(169,8)] = {64,0}, + [I(170,8)] = {64,0}, + [I(171,8)] = {64,0}, + [I(172,8)] = {64,0}, + [I(173,8)] = {64,0}, + [I(174,8)] = {64,0}, + [I(175,8)] = {64,0}, + [I(176,8)] = {64,0}, + [I(177,8)] = {64,0}, + [I(178,8)] = {64,0}, + [I(179,8)] = {64,0}, + [I(180,8)] = {64,0}, + [I(181,8)] = {64,0}, + [I(182,8)] = {64,0}, + [I(183,8)] = {64,0}, + [I(184,8)] = {64,0}, + [I(185,8)] = {64,0}, + [I(186,8)] = {64,0}, + [I(187,8)] = {64,0}, + [I(188,8)] = {64,0}, + [I(189,8)] = {64,0}, + [I(190,8)] = {64,0}, + [I(191,8)] = {64,0}, + [I(192,8)] = {64,0}, + [I(193,8)] = {64,0}, + [I(194,8)] = {64,0}, + [I(195,8)] = {64,0}, + [I(196,8)] = {64,0}, + [I(197,8)] = {64,0}, + [I(198,8)] = {64,0}, + [I(199,8)] = {64,0}, + [I(200,8)] = {64,0}, + [I(201,8)] = {64,0}, + [I(202,8)] = {64,0}, + [I(203,8)] = {64,0}, + [I(204,8)] = {64,0}, + [I(205,8)] = {64,0}, + [I(206,8)] = {64,0}, + [I(207,8)] = {64,0}, + [I(208,8)] = {64,0}, + [I(209,8)] = {64,0}, + [I(210,8)] = {64,0}, + [I(211,8)] = {64,0}, + [I(212,8)] = {64,0}, + [I(213,8)] = {64,0}, + [I(214,8)] = {64,0}, + [I(215,8)] = {64,0}, + [I(216,8)] = {64,0}, + [I(217,8)] = {64,0}, + [I(218,8)] = {64,0}, + [I(219,8)] = {64,0}, + [I(220,8)] = {64,0}, + [I(221,8)] = {64,0}, + [I(222,8)] = {64,0}, + [I(223,8)] = {64,0}, + [I(224,8)] = {64,0}, + [I(225,8)] = {64,0}, + [I(226,8)] = {64,0}, + [I(227,8)] = {64,0}, + [I(228,8)] = {64,0}, + [I(229,8)] = {64,0}, + [I(230,8)] = {64,0}, + [I(231,8)] = {64,0}, + [I(232,8)] = {64,0}, + [I(233,8)] = {64,0}, + [I(234,8)] = {64,0}, + [I(235,8)] = {64,0}, + [I(236,8)] = {64,0}, + [I(237,8)] = {64,0}, + [I(238,8)] = {64,0}, + [I(239,8)] = {64,0}, + [I(240,8)] = {64,0}, + [I(241,8)] = {64,0}, + [I(242,8)] = {64,0}, + [I(243,8)] = {64,0}, + [I(244,8)] = {64,0}, + [I(245,8)] = {64,0}, + [I(246,8)] = {64,0}, + [I(247,8)] = {64,0}, + [I(248,8)] = {64,0}, + [I(249,8)] = {64,0}, + [I(250,8)] = {64,0}, + [I(251,8)] = {64,0}, + [I(252,8)] = {64,0}, + [I(253,8)] = {64,0}, + [I(254,8)] = {64,0}, + [I(255,8)] = {64,0}, + [I(0,9)] = {64,0}, + [I(1,9)] = {64,0}, + [I(2,9)] = {64,0}, + [I(3,9)] = {64,0}, + [I(4,9)] = {64,0}, + [I(5,9)] = {64,0}, + [I(6,9)] = {64,0}, + [I(7,9)] = {64,0}, + [I(8,9)] = {64,0}, + [I(9,9)] = {64,0}, + [I(10,9)] = {64,0}, + [I(11,9)] = {64,0}, + [I(12,9)] = {64,0}, + [I(13,9)] = {64,0}, + [I(14,9)] = {64,0}, + [I(15,9)] = {64,0}, + [I(16,9)] = {64,0}, + [I(17,9)] = {64,0}, + [I(18,9)] = {64,0}, + [I(19,9)] = {64,0}, + [I(20,9)] = {64,0}, + [I(21,9)] = {64,0}, + [I(22,9)] = {64,0}, + [I(23,9)] = {64,0}, + [I(24,9)] = {64,0}, + [I(25,9)] = {64,0}, + [I(26,9)] = {64,0}, + [I(27,9)] = {64,0}, + [I(28,9)] = {64,0}, + [I(29,9)] = {64,0}, + [I(30,9)] = {64,0}, + [I(31,9)] = {64,0}, + [I(32,9)] = {30,0x14FFFFEA}, + [I(33,9)] = {64,0}, + [I(34,9)] = {64,0}, + [I(35,9)] = {64,0}, + [I(36,9)] = {64,0}, + [I(37,9)] = {30,0x15FFFFEA}, + [I(38,9)] = {X32,0xF8FFFFEA}, + [I(39,9)] = {64,0}, + [I(40,9)] = {64,0}, + [I(41,9)] = {64,0}, + [I(42,9)] = {X32,0xF9FFFFEA}, + [I(43,9)] = {64,0}, + [I(44,9)] = {X32,0xFAFFFFEA}, + [I(45,9)] = {30,0x16FFFFEA}, + [I(46,9)] = {30,0x17FFFFEA}, + [I(47,9)] = {30,0x18FFFFEA}, + [I(48,9)] = {29,0xFFFFEA}, + [I(49,9)] = {29,0x1FFFFEA}, + [I(50,9)] = {29,0x2FFFFEA}, + [I(51,9)] = {30,0x19FFFFEA}, + [I(52,9)] = {30,0x1AFFFFEA}, + [I(53,9)] = {30,0x1BFFFFEA}, + [I(54,9)] = {30,0x1CFFFFEA}, + [I(55,9)] = {30,0x1DFFFFEA}, + [I(56,9)] = {30,0x1EFFFFEA}, + [I(57,9)] = {30,0x1FFFFFEA}, + [I(58,9)] = {31,0x5CFFFFEA}, + [I(59,9)] = {X32,0xFBFFFFEA}, + [I(60,9)] = {64,0}, + [I(61,9)] = {30,0x20FFFFEA}, + [I(62,9)] = {64,0}, + [I(63,9)] = {64,0}, + [I(64,9)] = {64,0}, + [I(65,9)] = {30,0x21FFFFEA}, + [I(66,9)] = {31,0x5DFFFFEA}, + [I(67,9)] = {31,0x5EFFFFEA}, + [I(68,9)] = {31,0x5FFFFFEA}, + [I(69,9)] = {31,0x60FFFFEA}, + [I(70,9)] = {31,0x61FFFFEA}, + [I(71,9)] = {31,0x62FFFFEA}, + [I(72,9)] = {31,0x63FFFFEA}, + [I(73,9)] = {31,0x64FFFFEA}, + [I(74,9)] = {31,0x65FFFFEA}, + [I(75,9)] = {31,0x66FFFFEA}, + [I(76,9)] = {31,0x67FFFFEA}, + [I(77,9)] = {31,0x68FFFFEA}, + [I(78,9)] = {31,0x69FFFFEA}, + [I(79,9)] = {31,0x6AFFFFEA}, + [I(80,9)] = {31,0x6BFFFFEA}, + [I(81,9)] = {31,0x6CFFFFEA}, + [I(82,9)] = {31,0x6DFFFFEA}, + [I(83,9)] = {31,0x6EFFFFEA}, + [I(84,9)] = {31,0x6FFFFFEA}, + [I(85,9)] = {31,0x70FFFFEA}, + [I(86,9)] = {31,0x71FFFFEA}, + [I(87,9)] = {31,0x72FFFFEA}, + [I(88,9)] = {X32,0xFCFFFFEA}, + [I(89,9)] = {31,0x73FFFFEA}, + [I(90,9)] = {X32,0xFDFFFFEA}, + [I(91,9)] = {64,0}, + [I(92,9)] = {64,0}, + [I(93,9)] = {64,0}, + [I(94,9)] = {64,0}, + [I(95,9)] = {30,0x22FFFFEA}, + [I(96,9)] = {64,0}, + [I(97,9)] = {29,0x3FFFFEA}, + [I(98,9)] = {30,0x23FFFFEA}, + [I(99,9)] = {29,0x4FFFFEA}, + [I(100,9)] = {30,0x24FFFFEA}, + [I(101,9)] = {29,0x5FFFFEA}, + [I(102,9)] = {30,0x25FFFFEA}, + [I(103,9)] = {30,0x26FFFFEA}, + [I(104,9)] = {30,0x27FFFFEA}, + [I(105,9)] = {29,0x6FFFFEA}, + [I(106,9)] = {31,0x74FFFFEA}, + [I(107,9)] = {31,0x75FFFFEA}, + [I(108,9)] = {30,0x28FFFFEA}, + [I(109,9)] = {30,0x29FFFFEA}, + [I(110,9)] = {30,0x2AFFFFEA}, + [I(111,9)] = {29,0x7FFFFEA}, + [I(112,9)] = {30,0x2BFFFFEA}, + [I(113,9)] = {31,0x76FFFFEA}, + [I(114,9)] = {30,0x2CFFFFEA}, + [I(115,9)] = {29,0x8FFFFEA}, + [I(116,9)] = {29,0x9FFFFEA}, + [I(117,9)] = {30,0x2DFFFFEA}, + [I(118,9)] = {31,0x77FFFFEA}, + [I(119,9)] = {31,0x78FFFFEA}, + [I(120,9)] = {31,0x79FFFFEA}, + [I(121,9)] = {31,0x7AFFFFEA}, + [I(122,9)] = {31,0x7BFFFFEA}, + [I(123,9)] = {64,0}, + [I(124,9)] = {64,0}, + [I(125,9)] = {64,0}, + [I(126,9)] = {64,0}, + [I(127,9)] = {64,0}, + [I(128,9)] = {64,0}, + [I(129,9)] = {64,0}, + [I(130,9)] = {64,0}, + [I(131,9)] = {64,0}, + [I(132,9)] = {64,0}, + [I(133,9)] = {64,0}, + [I(134,9)] = {64,0}, + [I(135,9)] = {64,0}, + [I(136,9)] = {64,0}, + [I(137,9)] = {64,0}, + [I(138,9)] = {64,0}, + [I(139,9)] = {64,0}, + [I(140,9)] = {64,0}, + [I(141,9)] = {64,0}, + [I(142,9)] = {64,0}, + [I(143,9)] = {64,0}, + [I(144,9)] = {64,0}, + [I(145,9)] = {64,0}, + [I(146,9)] = {64,0}, + [I(147,9)] = {64,0}, + [I(148,9)] = {64,0}, + [I(149,9)] = {64,0}, + [I(150,9)] = {64,0}, + [I(151,9)] = {64,0}, + [I(152,9)] = {64,0}, + [I(153,9)] = {64,0}, + [I(154,9)] = {64,0}, + [I(155,9)] = {64,0}, + [I(156,9)] = {64,0}, + [I(157,9)] = {64,0}, + [I(158,9)] = {64,0}, + [I(159,9)] = {64,0}, + [I(160,9)] = {64,0}, + [I(161,9)] = {64,0}, + [I(162,9)] = {64,0}, + [I(163,9)] = {64,0}, + [I(164,9)] = {64,0}, + [I(165,9)] = {64,0}, + [I(166,9)] = {64,0}, + [I(167,9)] = {64,0}, + [I(168,9)] = {64,0}, + [I(169,9)] = {64,0}, + [I(170,9)] = {64,0}, + [I(171,9)] = {64,0}, + [I(172,9)] = {64,0}, + [I(173,9)] = {64,0}, + [I(174,9)] = {64,0}, + [I(175,9)] = {64,0}, + [I(176,9)] = {64,0}, + [I(177,9)] = {64,0}, + [I(178,9)] = {64,0}, + [I(179,9)] = {64,0}, + [I(180,9)] = {64,0}, + [I(181,9)] = {64,0}, + [I(182,9)] = {64,0}, + [I(183,9)] = {64,0}, + [I(184,9)] = {64,0}, + [I(185,9)] = {64,0}, + [I(186,9)] = {64,0}, + [I(187,9)] = {64,0}, + [I(188,9)] = {64,0}, + [I(189,9)] = {64,0}, + [I(190,9)] = {64,0}, + [I(191,9)] = {64,0}, + [I(192,9)] = {64,0}, + [I(193,9)] = {64,0}, + [I(194,9)] = {64,0}, + [I(195,9)] = {64,0}, + [I(196,9)] = {64,0}, + [I(197,9)] = {64,0}, + [I(198,9)] = {64,0}, + [I(199,9)] = {64,0}, + [I(200,9)] = {64,0}, + [I(201,9)] = {64,0}, + [I(202,9)] = {64,0}, + [I(203,9)] = {64,0}, + [I(204,9)] = {64,0}, + [I(205,9)] = {64,0}, + [I(206,9)] = {64,0}, + [I(207,9)] = {64,0}, + [I(208,9)] = {64,0}, + [I(209,9)] = {64,0}, + [I(210,9)] = {64,0}, + [I(211,9)] = {64,0}, + [I(212,9)] = {64,0}, + [I(213,9)] = {64,0}, + [I(214,9)] = {64,0}, + [I(215,9)] = {64,0}, + [I(216,9)] = {64,0}, + [I(217,9)] = {64,0}, + [I(218,9)] = {64,0}, + [I(219,9)] = {64,0}, + [I(220,9)] = {64,0}, + [I(221,9)] = {64,0}, + [I(222,9)] = {64,0}, + [I(223,9)] = {64,0}, + [I(224,9)] = {64,0}, + [I(225,9)] = {64,0}, + [I(226,9)] = {64,0}, + [I(227,9)] = {64,0}, + [I(228,9)] = {64,0}, + [I(229,9)] = {64,0}, + [I(230,9)] = {64,0}, + [I(231,9)] = {64,0}, + [I(232,9)] = {64,0}, + [I(233,9)] = {64,0}, + [I(234,9)] = {64,0}, + [I(235,9)] = {64,0}, + [I(236,9)] = {64,0}, + [I(237,9)] = {64,0}, + [I(238,9)] = {64,0}, + [I(239,9)] = {64,0}, + [I(240,9)] = {64,0}, + [I(241,9)] = {64,0}, + [I(242,9)] = {64,0}, + [I(243,9)] = {64,0}, + [I(244,9)] = {64,0}, + [I(245,9)] = {64,0}, + [I(246,9)] = {64,0}, + [I(247,9)] = {64,0}, + [I(248,9)] = {64,0}, + [I(249,9)] = {64,0}, + [I(250,9)] = {64,0}, + [I(251,9)] = {64,0}, + [I(252,9)] = {64,0}, + [I(253,9)] = {64,0}, + [I(254,9)] = {64,0}, + [I(255,9)] = {64,0}, + [I(0,10)] = {64,0}, + [I(1,10)] = {64,0}, + [I(2,10)] = {64,0}, + [I(3,10)] = {64,0}, + [I(4,10)] = {64,0}, + [I(5,10)] = {64,0}, + [I(6,10)] = {64,0}, + [I(7,10)] = {64,0}, + [I(8,10)] = {64,0}, + [I(9,10)] = {64,0}, + [I(10,10)] = {64,0}, + [I(11,10)] = {64,0}, + [I(12,10)] = {64,0}, + [I(13,10)] = {64,0}, + [I(14,10)] = {64,0}, + [I(15,10)] = {64,0}, + [I(16,10)] = {64,0}, + [I(17,10)] = {64,0}, + [I(18,10)] = {64,0}, + [I(19,10)] = {64,0}, + [I(20,10)] = {64,0}, + [I(21,10)] = {64,0}, + [I(22,10)] = {64,0}, + [I(23,10)] = {64,0}, + [I(24,10)] = {64,0}, + [I(25,10)] = {64,0}, + [I(26,10)] = {64,0}, + [I(27,10)] = {64,0}, + [I(28,10)] = {64,0}, + [I(29,10)] = {64,0}, + [I(30,10)] = {64,0}, + [I(31,10)] = {64,0}, + [I(32,10)] = {64,0}, + [I(33,10)] = {64,0}, + [I(34,10)] = {64,0}, + [I(35,10)] = {64,0}, + [I(36,10)] = {64,0}, + [I(37,10)] = {64,0}, + [I(38,10)] = {64,0}, + [I(39,10)] = {64,0}, + [I(40,10)] = {64,0}, + [I(41,10)] = {64,0}, + [I(42,10)] = {64,0}, + [I(43,10)] = {64,0}, + [I(44,10)] = {64,0}, + [I(45,10)] = {64,0}, + [I(46,10)] = {64,0}, + [I(47,10)] = {64,0}, + [I(48,10)] = {64,0}, + [I(49,10)] = {64,0}, + [I(50,10)] = {64,0}, + [I(51,10)] = {64,0}, + [I(52,10)] = {64,0}, + [I(53,10)] = {64,0}, + [I(54,10)] = {64,0}, + [I(55,10)] = {64,0}, + [I(56,10)] = {64,0}, + [I(57,10)] = {64,0}, + [I(58,10)] = {64,0}, + [I(59,10)] = {64,0}, + [I(60,10)] = {64,0}, + [I(61,10)] = {64,0}, + [I(62,10)] = {64,0}, + [I(63,10)] = {64,0}, + [I(64,10)] = {64,0}, + [I(65,10)] = {64,0}, + [I(66,10)] = {64,0}, + [I(67,10)] = {64,0}, + [I(68,10)] = {64,0}, + [I(69,10)] = {64,0}, + [I(70,10)] = {64,0}, + [I(71,10)] = {64,0}, + [I(72,10)] = {64,0}, + [I(73,10)] = {64,0}, + [I(74,10)] = {64,0}, + [I(75,10)] = {64,0}, + [I(76,10)] = {64,0}, + [I(77,10)] = {64,0}, + [I(78,10)] = {64,0}, + [I(79,10)] = {64,0}, + [I(80,10)] = {64,0}, + [I(81,10)] = {64,0}, + [I(82,10)] = {64,0}, + [I(83,10)] = {64,0}, + [I(84,10)] = {64,0}, + [I(85,10)] = {64,0}, + [I(86,10)] = {64,0}, + [I(87,10)] = {64,0}, + [I(88,10)] = {64,0}, + [I(89,10)] = {64,0}, + [I(90,10)] = {64,0}, + [I(91,10)] = {64,0}, + [I(92,10)] = {64,0}, + [I(93,10)] = {64,0}, + [I(94,10)] = {64,0}, + [I(95,10)] = {64,0}, + [I(96,10)] = {64,0}, + [I(97,10)] = {64,0}, + [I(98,10)] = {64,0}, + [I(99,10)] = {64,0}, + [I(100,10)] = {64,0}, + [I(101,10)] = {64,0}, + [I(102,10)] = {64,0}, + [I(103,10)] = {64,0}, + [I(104,10)] = {64,0}, + [I(105,10)] = {64,0}, + [I(106,10)] = {64,0}, + [I(107,10)] = {64,0}, + [I(108,10)] = {64,0}, + [I(109,10)] = {64,0}, + [I(110,10)] = {64,0}, + [I(111,10)] = {64,0}, + [I(112,10)] = {64,0}, + [I(113,10)] = {64,0}, + [I(114,10)] = {64,0}, + [I(115,10)] = {64,0}, + [I(116,10)] = {64,0}, + [I(117,10)] = {64,0}, + [I(118,10)] = {64,0}, + [I(119,10)] = {64,0}, + [I(120,10)] = {64,0}, + [I(121,10)] = {64,0}, + [I(122,10)] = {64,0}, + [I(123,10)] = {64,0}, + [I(124,10)] = {64,0}, + [I(125,10)] = {64,0}, + [I(126,10)] = {64,0}, + [I(127,10)] = {64,0}, + [I(128,10)] = {64,0}, + [I(129,10)] = {64,0}, + [I(130,10)] = {64,0}, + [I(131,10)] = {64,0}, + [I(132,10)] = {64,0}, + [I(133,10)] = {64,0}, + [I(134,10)] = {64,0}, + [I(135,10)] = {64,0}, + [I(136,10)] = {64,0}, + [I(137,10)] = {64,0}, + [I(138,10)] = {64,0}, + [I(139,10)] = {64,0}, + [I(140,10)] = {64,0}, + [I(141,10)] = {64,0}, + [I(142,10)] = {64,0}, + [I(143,10)] = {64,0}, + [I(144,10)] = {64,0}, + [I(145,10)] = {64,0}, + [I(146,10)] = {64,0}, + [I(147,10)] = {64,0}, + [I(148,10)] = {64,0}, + [I(149,10)] = {64,0}, + [I(150,10)] = {64,0}, + [I(151,10)] = {64,0}, + [I(152,10)] = {64,0}, + [I(153,10)] = {64,0}, + [I(154,10)] = {64,0}, + [I(155,10)] = {64,0}, + [I(156,10)] = {64,0}, + [I(157,10)] = {64,0}, + [I(158,10)] = {64,0}, + [I(159,10)] = {64,0}, + [I(160,10)] = {64,0}, + [I(161,10)] = {64,0}, + [I(162,10)] = {64,0}, + [I(163,10)] = {64,0}, + [I(164,10)] = {64,0}, + [I(165,10)] = {64,0}, + [I(166,10)] = {64,0}, + [I(167,10)] = {64,0}, + [I(168,10)] = {64,0}, + [I(169,10)] = {64,0}, + [I(170,10)] = {64,0}, + [I(171,10)] = {64,0}, + [I(172,10)] = {64,0}, + [I(173,10)] = {64,0}, + [I(174,10)] = {64,0}, + [I(175,10)] = {64,0}, + [I(176,10)] = {64,0}, + [I(177,10)] = {64,0}, + [I(178,10)] = {64,0}, + [I(179,10)] = {64,0}, + [I(180,10)] = {64,0}, + [I(181,10)] = {64,0}, + [I(182,10)] = {64,0}, + [I(183,10)] = {64,0}, + [I(184,10)] = {64,0}, + [I(185,10)] = {64,0}, + [I(186,10)] = {64,0}, + [I(187,10)] = {64,0}, + [I(188,10)] = {64,0}, + [I(189,10)] = {64,0}, + [I(190,10)] = {64,0}, + [I(191,10)] = {64,0}, + [I(192,10)] = {64,0}, + [I(193,10)] = {64,0}, + [I(194,10)] = {64,0}, + [I(195,10)] = {64,0}, + [I(196,10)] = {64,0}, + [I(197,10)] = {64,0}, + [I(198,10)] = {64,0}, + [I(199,10)] = {64,0}, + [I(200,10)] = {64,0}, + [I(201,10)] = {64,0}, + [I(202,10)] = {64,0}, + [I(203,10)] = {64,0}, + [I(204,10)] = {64,0}, + [I(205,10)] = {64,0}, + [I(206,10)] = {64,0}, + [I(207,10)] = {64,0}, + [I(208,10)] = {64,0}, + [I(209,10)] = {64,0}, + [I(210,10)] = {64,0}, + [I(211,10)] = {64,0}, + [I(212,10)] = {64,0}, + [I(213,10)] = {64,0}, + [I(214,10)] = {64,0}, + [I(215,10)] = {64,0}, + [I(216,10)] = {64,0}, + [I(217,10)] = {64,0}, + [I(218,10)] = {64,0}, + [I(219,10)] = {64,0}, + [I(220,10)] = {64,0}, + [I(221,10)] = {64,0}, + [I(222,10)] = {64,0}, + [I(223,10)] = {64,0}, + [I(224,10)] = {64,0}, + [I(225,10)] = {64,0}, + [I(226,10)] = {64,0}, + [I(227,10)] = {64,0}, + [I(228,10)] = {64,0}, + [I(229,10)] = {64,0}, + [I(230,10)] = {64,0}, + [I(231,10)] = {64,0}, + [I(232,10)] = {64,0}, + [I(233,10)] = {64,0}, + [I(234,10)] = {64,0}, + [I(235,10)] = {64,0}, + [I(236,10)] = {64,0}, + [I(237,10)] = {64,0}, + [I(238,10)] = {64,0}, + [I(239,10)] = {64,0}, + [I(240,10)] = {64,0}, + [I(241,10)] = {64,0}, + [I(242,10)] = {64,0}, + [I(243,10)] = {64,0}, + [I(244,10)] = {64,0}, + [I(245,10)] = {64,0}, + [I(246,10)] = {64,0}, + [I(247,10)] = {64,0}, + [I(248,10)] = {64,0}, + [I(249,10)] = {64,0}, + [I(250,10)] = {64,0}, + [I(251,10)] = {64,0}, + [I(252,10)] = {64,0}, + [I(253,10)] = {64,0}, + [I(254,10)] = {64,0}, + [I(255,10)] = {64,0}, + [I(0,11)] = {64,0}, + [I(1,11)] = {64,0}, + [I(2,11)] = {64,0}, + [I(3,11)] = {64,0}, + [I(4,11)] = {64,0}, + [I(5,11)] = {64,0}, + [I(6,11)] = {64,0}, + [I(7,11)] = {64,0}, + [I(8,11)] = {64,0}, + [I(9,11)] = {64,0}, + [I(10,11)] = {64,0}, + [I(11,11)] = {64,0}, + [I(12,11)] = {64,0}, + [I(13,11)] = {64,0}, + [I(14,11)] = {64,0}, + [I(15,11)] = {64,0}, + [I(16,11)] = {64,0}, + [I(17,11)] = {64,0}, + [I(18,11)] = {64,0}, + [I(19,11)] = {64,0}, + [I(20,11)] = {64,0}, + [I(21,11)] = {64,0}, + [I(22,11)] = {64,0}, + [I(23,11)] = {64,0}, + [I(24,11)] = {64,0}, + [I(25,11)] = {64,0}, + [I(26,11)] = {64,0}, + [I(27,11)] = {64,0}, + [I(28,11)] = {64,0}, + [I(29,11)] = {64,0}, + [I(30,11)] = {64,0}, + [I(31,11)] = {64,0}, + [I(32,11)] = {64,0}, + [I(33,11)] = {64,0}, + [I(34,11)] = {64,0}, + [I(35,11)] = {64,0}, + [I(36,11)] = {64,0}, + [I(37,11)] = {64,0}, + [I(38,11)] = {64,0}, + [I(39,11)] = {64,0}, + [I(40,11)] = {64,0}, + [I(41,11)] = {64,0}, + [I(42,11)] = {64,0}, + [I(43,11)] = {64,0}, + [I(44,11)] = {64,0}, + [I(45,11)] = {64,0}, + [I(46,11)] = {64,0}, + [I(47,11)] = {64,0}, + [I(48,11)] = {64,0}, + [I(49,11)] = {64,0}, + [I(50,11)] = {64,0}, + [I(51,11)] = {64,0}, + [I(52,11)] = {64,0}, + [I(53,11)] = {64,0}, + [I(54,11)] = {64,0}, + [I(55,11)] = {64,0}, + [I(56,11)] = {64,0}, + [I(57,11)] = {64,0}, + [I(58,11)] = {64,0}, + [I(59,11)] = {64,0}, + [I(60,11)] = {64,0}, + [I(61,11)] = {64,0}, + [I(62,11)] = {64,0}, + [I(63,11)] = {64,0}, + [I(64,11)] = {64,0}, + [I(65,11)] = {64,0}, + [I(66,11)] = {64,0}, + [I(67,11)] = {64,0}, + [I(68,11)] = {64,0}, + [I(69,11)] = {64,0}, + [I(70,11)] = {64,0}, + [I(71,11)] = {64,0}, + [I(72,11)] = {64,0}, + [I(73,11)] = {64,0}, + [I(74,11)] = {64,0}, + [I(75,11)] = {64,0}, + [I(76,11)] = {64,0}, + [I(77,11)] = {64,0}, + [I(78,11)] = {64,0}, + [I(79,11)] = {64,0}, + [I(80,11)] = {64,0}, + [I(81,11)] = {64,0}, + [I(82,11)] = {64,0}, + [I(83,11)] = {64,0}, + [I(84,11)] = {64,0}, + [I(85,11)] = {64,0}, + [I(86,11)] = {64,0}, + [I(87,11)] = {64,0}, + [I(88,11)] = {64,0}, + [I(89,11)] = {64,0}, + [I(90,11)] = {64,0}, + [I(91,11)] = {64,0}, + [I(92,11)] = {64,0}, + [I(93,11)] = {64,0}, + [I(94,11)] = {64,0}, + [I(95,11)] = {64,0}, + [I(96,11)] = {64,0}, + [I(97,11)] = {64,0}, + [I(98,11)] = {64,0}, + [I(99,11)] = {64,0}, + [I(100,11)] = {64,0}, + [I(101,11)] = {64,0}, + [I(102,11)] = {64,0}, + [I(103,11)] = {64,0}, + [I(104,11)] = {64,0}, + [I(105,11)] = {64,0}, + [I(106,11)] = {64,0}, + [I(107,11)] = {64,0}, + [I(108,11)] = {64,0}, + [I(109,11)] = {64,0}, + [I(110,11)] = {64,0}, + [I(111,11)] = {64,0}, + [I(112,11)] = {64,0}, + [I(113,11)] = {64,0}, + [I(114,11)] = {64,0}, + [I(115,11)] = {64,0}, + [I(116,11)] = {64,0}, + [I(117,11)] = {64,0}, + [I(118,11)] = {64,0}, + [I(119,11)] = {64,0}, + [I(120,11)] = {64,0}, + [I(121,11)] = {64,0}, + [I(122,11)] = {64,0}, + [I(123,11)] = {64,0}, + [I(124,11)] = {64,0}, + [I(125,11)] = {64,0}, + [I(126,11)] = {64,0}, + [I(127,11)] = {64,0}, + [I(128,11)] = {64,0}, + [I(129,11)] = {64,0}, + [I(130,11)] = {64,0}, + [I(131,11)] = {64,0}, + [I(132,11)] = {64,0}, + [I(133,11)] = {64,0}, + [I(134,11)] = {64,0}, + [I(135,11)] = {64,0}, + [I(136,11)] = {64,0}, + [I(137,11)] = {64,0}, + [I(138,11)] = {64,0}, + [I(139,11)] = {64,0}, + [I(140,11)] = {64,0}, + [I(141,11)] = {64,0}, + [I(142,11)] = {64,0}, + [I(143,11)] = {64,0}, + [I(144,11)] = {64,0}, + [I(145,11)] = {64,0}, + [I(146,11)] = {64,0}, + [I(147,11)] = {64,0}, + [I(148,11)] = {64,0}, + [I(149,11)] = {64,0}, + [I(150,11)] = {64,0}, + [I(151,11)] = {64,0}, + [I(152,11)] = {64,0}, + [I(153,11)] = {64,0}, + [I(154,11)] = {64,0}, + [I(155,11)] = {64,0}, + [I(156,11)] = {64,0}, + [I(157,11)] = {64,0}, + [I(158,11)] = {64,0}, + [I(159,11)] = {64,0}, + [I(160,11)] = {64,0}, + [I(161,11)] = {64,0}, + [I(162,11)] = {64,0}, + [I(163,11)] = {64,0}, + [I(164,11)] = {64,0}, + [I(165,11)] = {64,0}, + [I(166,11)] = {64,0}, + [I(167,11)] = {64,0}, + [I(168,11)] = {64,0}, + [I(169,11)] = {64,0}, + [I(170,11)] = {64,0}, + [I(171,11)] = {64,0}, + [I(172,11)] = {64,0}, + [I(173,11)] = {64,0}, + [I(174,11)] = {64,0}, + [I(175,11)] = {64,0}, + [I(176,11)] = {64,0}, + [I(177,11)] = {64,0}, + [I(178,11)] = {64,0}, + [I(179,11)] = {64,0}, + [I(180,11)] = {64,0}, + [I(181,11)] = {64,0}, + [I(182,11)] = {64,0}, + [I(183,11)] = {64,0}, + [I(184,11)] = {64,0}, + [I(185,11)] = {64,0}, + [I(186,11)] = {64,0}, + [I(187,11)] = {64,0}, + [I(188,11)] = {64,0}, + [I(189,11)] = {64,0}, + [I(190,11)] = {64,0}, + [I(191,11)] = {64,0}, + [I(192,11)] = {64,0}, + [I(193,11)] = {64,0}, + [I(194,11)] = {64,0}, + [I(195,11)] = {64,0}, + [I(196,11)] = {64,0}, + [I(197,11)] = {64,0}, + [I(198,11)] = {64,0}, + [I(199,11)] = {64,0}, + [I(200,11)] = {64,0}, + [I(201,11)] = {64,0}, + [I(202,11)] = {64,0}, + [I(203,11)] = {64,0}, + [I(204,11)] = {64,0}, + [I(205,11)] = {64,0}, + [I(206,11)] = {64,0}, + [I(207,11)] = {64,0}, + [I(208,11)] = {64,0}, + [I(209,11)] = {64,0}, + [I(210,11)] = {64,0}, + [I(211,11)] = {64,0}, + [I(212,11)] = {64,0}, + [I(213,11)] = {64,0}, + [I(214,11)] = {64,0}, + [I(215,11)] = {64,0}, + [I(216,11)] = {64,0}, + [I(217,11)] = {64,0}, + [I(218,11)] = {64,0}, + [I(219,11)] = {64,0}, + [I(220,11)] = {64,0}, + [I(221,11)] = {64,0}, + [I(222,11)] = {64,0}, + [I(223,11)] = {64,0}, + [I(224,11)] = {64,0}, + [I(225,11)] = {64,0}, + [I(226,11)] = {64,0}, + [I(227,11)] = {64,0}, + [I(228,11)] = {64,0}, + [I(229,11)] = {64,0}, + [I(230,11)] = {64,0}, + [I(231,11)] = {64,0}, + [I(232,11)] = {64,0}, + [I(233,11)] = {64,0}, + [I(234,11)] = {64,0}, + [I(235,11)] = {64,0}, + [I(236,11)] = {64,0}, + [I(237,11)] = {64,0}, + [I(238,11)] = {64,0}, + [I(239,11)] = {64,0}, + [I(240,11)] = {64,0}, + [I(241,11)] = {64,0}, + [I(242,11)] = {64,0}, + [I(243,11)] = {64,0}, + [I(244,11)] = {64,0}, + [I(245,11)] = {64,0}, + [I(246,11)] = {64,0}, + [I(247,11)] = {64,0}, + [I(248,11)] = {64,0}, + [I(249,11)] = {64,0}, + [I(250,11)] = {64,0}, + [I(251,11)] = {64,0}, + [I(252,11)] = {64,0}, + [I(253,11)] = {64,0}, + [I(254,11)] = {64,0}, + [I(255,11)] = {64,0}, + [I(0,12)] = {64,0}, + [I(1,12)] = {64,0}, + [I(2,12)] = {64,0}, + [I(3,12)] = {64,0}, + [I(4,12)] = {64,0}, + [I(5,12)] = {64,0}, + [I(6,12)] = {64,0}, + [I(7,12)] = {64,0}, + [I(8,12)] = {64,0}, + [I(9,12)] = {64,0}, + [I(10,12)] = {64,0}, + [I(11,12)] = {64,0}, + [I(12,12)] = {64,0}, + [I(13,12)] = {64,0}, + [I(14,12)] = {64,0}, + [I(15,12)] = {64,0}, + [I(16,12)] = {64,0}, + [I(17,12)] = {64,0}, + [I(18,12)] = {64,0}, + [I(19,12)] = {64,0}, + [I(20,12)] = {64,0}, + [I(21,12)] = {64,0}, + [I(22,12)] = {64,0}, + [I(23,12)] = {64,0}, + [I(24,12)] = {64,0}, + [I(25,12)] = {64,0}, + [I(26,12)] = {64,0}, + [I(27,12)] = {64,0}, + [I(28,12)] = {64,0}, + [I(29,12)] = {64,0}, + [I(30,12)] = {64,0}, + [I(31,12)] = {64,0}, + [I(32,12)] = {64,0}, + [I(33,12)] = {64,0}, + [I(34,12)] = {64,0}, + [I(35,12)] = {64,0}, + [I(36,12)] = {64,0}, + [I(37,12)] = {64,0}, + [I(38,12)] = {64,0}, + [I(39,12)] = {64,0}, + [I(40,12)] = {64,0}, + [I(41,12)] = {64,0}, + [I(42,12)] = {64,0}, + [I(43,12)] = {64,0}, + [I(44,12)] = {64,0}, + [I(45,12)] = {64,0}, + [I(46,12)] = {64,0}, + [I(47,12)] = {64,0}, + [I(48,12)] = {64,0}, + [I(49,12)] = {64,0}, + [I(50,12)] = {64,0}, + [I(51,12)] = {64,0}, + [I(52,12)] = {64,0}, + [I(53,12)] = {64,0}, + [I(54,12)] = {64,0}, + [I(55,12)] = {64,0}, + [I(56,12)] = {64,0}, + [I(57,12)] = {64,0}, + [I(58,12)] = {64,0}, + [I(59,12)] = {64,0}, + [I(60,12)] = {64,0}, + [I(61,12)] = {64,0}, + [I(62,12)] = {64,0}, + [I(63,12)] = {64,0}, + [I(64,12)] = {64,0}, + [I(65,12)] = {64,0}, + [I(66,12)] = {64,0}, + [I(67,12)] = {64,0}, + [I(68,12)] = {64,0}, + [I(69,12)] = {64,0}, + [I(70,12)] = {64,0}, + [I(71,12)] = {64,0}, + [I(72,12)] = {64,0}, + [I(73,12)] = {64,0}, + [I(74,12)] = {64,0}, + [I(75,12)] = {64,0}, + [I(76,12)] = {64,0}, + [I(77,12)] = {64,0}, + [I(78,12)] = {64,0}, + [I(79,12)] = {64,0}, + [I(80,12)] = {64,0}, + [I(81,12)] = {64,0}, + [I(82,12)] = {64,0}, + [I(83,12)] = {64,0}, + [I(84,12)] = {64,0}, + [I(85,12)] = {64,0}, + [I(86,12)] = {64,0}, + [I(87,12)] = {64,0}, + [I(88,12)] = {64,0}, + [I(89,12)] = {64,0}, + [I(90,12)] = {64,0}, + [I(91,12)] = {64,0}, + [I(92,12)] = {64,0}, + [I(93,12)] = {64,0}, + [I(94,12)] = {64,0}, + [I(95,12)] = {64,0}, + [I(96,12)] = {64,0}, + [I(97,12)] = {64,0}, + [I(98,12)] = {64,0}, + [I(99,12)] = {64,0}, + [I(100,12)] = {64,0}, + [I(101,12)] = {64,0}, + [I(102,12)] = {64,0}, + [I(103,12)] = {64,0}, + [I(104,12)] = {64,0}, + [I(105,12)] = {64,0}, + [I(106,12)] = {64,0}, + [I(107,12)] = {64,0}, + [I(108,12)] = {64,0}, + [I(109,12)] = {64,0}, + [I(110,12)] = {64,0}, + [I(111,12)] = {64,0}, + [I(112,12)] = {64,0}, + [I(113,12)] = {64,0}, + [I(114,12)] = {64,0}, + [I(115,12)] = {64,0}, + [I(116,12)] = {64,0}, + [I(117,12)] = {64,0}, + [I(118,12)] = {64,0}, + [I(119,12)] = {64,0}, + [I(120,12)] = {64,0}, + [I(121,12)] = {64,0}, + [I(122,12)] = {64,0}, + [I(123,12)] = {64,0}, + [I(124,12)] = {64,0}, + [I(125,12)] = {64,0}, + [I(126,12)] = {64,0}, + [I(127,12)] = {64,0}, + [I(128,12)] = {64,0}, + [I(129,12)] = {64,0}, + [I(130,12)] = {64,0}, + [I(131,12)] = {64,0}, + [I(132,12)] = {64,0}, + [I(133,12)] = {64,0}, + [I(134,12)] = {64,0}, + [I(135,12)] = {64,0}, + [I(136,12)] = {64,0}, + [I(137,12)] = {64,0}, + [I(138,12)] = {64,0}, + [I(139,12)] = {64,0}, + [I(140,12)] = {64,0}, + [I(141,12)] = {64,0}, + [I(142,12)] = {64,0}, + [I(143,12)] = {64,0}, + [I(144,12)] = {64,0}, + [I(145,12)] = {64,0}, + [I(146,12)] = {64,0}, + [I(147,12)] = {64,0}, + [I(148,12)] = {64,0}, + [I(149,12)] = {64,0}, + [I(150,12)] = {64,0}, + [I(151,12)] = {64,0}, + [I(152,12)] = {64,0}, + [I(153,12)] = {64,0}, + [I(154,12)] = {64,0}, + [I(155,12)] = {64,0}, + [I(156,12)] = {64,0}, + [I(157,12)] = {64,0}, + [I(158,12)] = {64,0}, + [I(159,12)] = {64,0}, + [I(160,12)] = {64,0}, + [I(161,12)] = {64,0}, + [I(162,12)] = {64,0}, + [I(163,12)] = {64,0}, + [I(164,12)] = {64,0}, + [I(165,12)] = {64,0}, + [I(166,12)] = {64,0}, + [I(167,12)] = {64,0}, + [I(168,12)] = {64,0}, + [I(169,12)] = {64,0}, + [I(170,12)] = {64,0}, + [I(171,12)] = {64,0}, + [I(172,12)] = {64,0}, + [I(173,12)] = {64,0}, + [I(174,12)] = {64,0}, + [I(175,12)] = {64,0}, + [I(176,12)] = {64,0}, + [I(177,12)] = {64,0}, + [I(178,12)] = {64,0}, + [I(179,12)] = {64,0}, + [I(180,12)] = {64,0}, + [I(181,12)] = {64,0}, + [I(182,12)] = {64,0}, + [I(183,12)] = {64,0}, + [I(184,12)] = {64,0}, + [I(185,12)] = {64,0}, + [I(186,12)] = {64,0}, + [I(187,12)] = {64,0}, + [I(188,12)] = {64,0}, + [I(189,12)] = {64,0}, + [I(190,12)] = {64,0}, + [I(191,12)] = {64,0}, + [I(192,12)] = {64,0}, + [I(193,12)] = {64,0}, + [I(194,12)] = {64,0}, + [I(195,12)] = {64,0}, + [I(196,12)] = {64,0}, + [I(197,12)] = {64,0}, + [I(198,12)] = {64,0}, + [I(199,12)] = {64,0}, + [I(200,12)] = {64,0}, + [I(201,12)] = {64,0}, + [I(202,12)] = {64,0}, + [I(203,12)] = {64,0}, + [I(204,12)] = {64,0}, + [I(205,12)] = {64,0}, + [I(206,12)] = {64,0}, + [I(207,12)] = {64,0}, + [I(208,12)] = {64,0}, + [I(209,12)] = {64,0}, + [I(210,12)] = {64,0}, + [I(211,12)] = {64,0}, + [I(212,12)] = {64,0}, + [I(213,12)] = {64,0}, + [I(214,12)] = {64,0}, + [I(215,12)] = {64,0}, + [I(216,12)] = {64,0}, + [I(217,12)] = {64,0}, + [I(218,12)] = {64,0}, + [I(219,12)] = {64,0}, + [I(220,12)] = {64,0}, + [I(221,12)] = {64,0}, + [I(222,12)] = {64,0}, + [I(223,12)] = {64,0}, + [I(224,12)] = {64,0}, + [I(225,12)] = {64,0}, + [I(226,12)] = {64,0}, + [I(227,12)] = {64,0}, + [I(228,12)] = {64,0}, + [I(229,12)] = {64,0}, + [I(230,12)] = {64,0}, + [I(231,12)] = {64,0}, + [I(232,12)] = {64,0}, + [I(233,12)] = {64,0}, + [I(234,12)] = {64,0}, + [I(235,12)] = {64,0}, + [I(236,12)] = {64,0}, + [I(237,12)] = {64,0}, + [I(238,12)] = {64,0}, + [I(239,12)] = {64,0}, + [I(240,12)] = {64,0}, + [I(241,12)] = {64,0}, + [I(242,12)] = {64,0}, + [I(243,12)] = {64,0}, + [I(244,12)] = {64,0}, + [I(245,12)] = {64,0}, + [I(246,12)] = {64,0}, + [I(247,12)] = {64,0}, + [I(248,12)] = {64,0}, + [I(249,12)] = {64,0}, + [I(250,12)] = {64,0}, + [I(251,12)] = {64,0}, + [I(252,12)] = {64,0}, + [I(253,12)] = {64,0}, + [I(254,12)] = {64,0}, + [I(255,12)] = {64,0}, + [I(0,13)] = {64,0}, + [I(1,13)] = {64,0}, + [I(2,13)] = {64,0}, + [I(3,13)] = {64,0}, + [I(4,13)] = {64,0}, + [I(5,13)] = {64,0}, + [I(6,13)] = {64,0}, + [I(7,13)] = {64,0}, + [I(8,13)] = {64,0}, + [I(9,13)] = {64,0}, + [I(10,13)] = {64,0}, + [I(11,13)] = {64,0}, + [I(12,13)] = {64,0}, + [I(13,13)] = {64,0}, + [I(14,13)] = {64,0}, + [I(15,13)] = {64,0}, + [I(16,13)] = {64,0}, + [I(17,13)] = {64,0}, + [I(18,13)] = {64,0}, + [I(19,13)] = {64,0}, + [I(20,13)] = {64,0}, + [I(21,13)] = {64,0}, + [I(22,13)] = {64,0}, + [I(23,13)] = {64,0}, + [I(24,13)] = {64,0}, + [I(25,13)] = {64,0}, + [I(26,13)] = {64,0}, + [I(27,13)] = {64,0}, + [I(28,13)] = {64,0}, + [I(29,13)] = {64,0}, + [I(30,13)] = {64,0}, + [I(31,13)] = {64,0}, + [I(32,13)] = {64,0}, + [I(33,13)] = {64,0}, + [I(34,13)] = {64,0}, + [I(35,13)] = {64,0}, + [I(36,13)] = {64,0}, + [I(37,13)] = {64,0}, + [I(38,13)] = {64,0}, + [I(39,13)] = {64,0}, + [I(40,13)] = {64,0}, + [I(41,13)] = {64,0}, + [I(42,13)] = {64,0}, + [I(43,13)] = {64,0}, + [I(44,13)] = {64,0}, + [I(45,13)] = {64,0}, + [I(46,13)] = {64,0}, + [I(47,13)] = {64,0}, + [I(48,13)] = {64,0}, + [I(49,13)] = {64,0}, + [I(50,13)] = {64,0}, + [I(51,13)] = {64,0}, + [I(52,13)] = {64,0}, + [I(53,13)] = {64,0}, + [I(54,13)] = {64,0}, + [I(55,13)] = {64,0}, + [I(56,13)] = {64,0}, + [I(57,13)] = {64,0}, + [I(58,13)] = {64,0}, + [I(59,13)] = {64,0}, + [I(60,13)] = {64,0}, + [I(61,13)] = {64,0}, + [I(62,13)] = {64,0}, + [I(63,13)] = {64,0}, + [I(64,13)] = {64,0}, + [I(65,13)] = {64,0}, + [I(66,13)] = {64,0}, + [I(67,13)] = {64,0}, + [I(68,13)] = {64,0}, + [I(69,13)] = {64,0}, + [I(70,13)] = {64,0}, + [I(71,13)] = {64,0}, + [I(72,13)] = {64,0}, + [I(73,13)] = {64,0}, + [I(74,13)] = {64,0}, + [I(75,13)] = {64,0}, + [I(76,13)] = {64,0}, + [I(77,13)] = {64,0}, + [I(78,13)] = {64,0}, + [I(79,13)] = {64,0}, + [I(80,13)] = {64,0}, + [I(81,13)] = {64,0}, + [I(82,13)] = {64,0}, + [I(83,13)] = {64,0}, + [I(84,13)] = {64,0}, + [I(85,13)] = {64,0}, + [I(86,13)] = {64,0}, + [I(87,13)] = {64,0}, + [I(88,13)] = {64,0}, + [I(89,13)] = {64,0}, + [I(90,13)] = {64,0}, + [I(91,13)] = {64,0}, + [I(92,13)] = {64,0}, + [I(93,13)] = {64,0}, + [I(94,13)] = {64,0}, + [I(95,13)] = {64,0}, + [I(96,13)] = {64,0}, + [I(97,13)] = {64,0}, + [I(98,13)] = {64,0}, + [I(99,13)] = {64,0}, + [I(100,13)] = {64,0}, + [I(101,13)] = {64,0}, + [I(102,13)] = {64,0}, + [I(103,13)] = {64,0}, + [I(104,13)] = {64,0}, + [I(105,13)] = {64,0}, + [I(106,13)] = {64,0}, + [I(107,13)] = {64,0}, + [I(108,13)] = {64,0}, + [I(109,13)] = {64,0}, + [I(110,13)] = {64,0}, + [I(111,13)] = {64,0}, + [I(112,13)] = {64,0}, + [I(113,13)] = {64,0}, + [I(114,13)] = {64,0}, + [I(115,13)] = {64,0}, + [I(116,13)] = {64,0}, + [I(117,13)] = {64,0}, + [I(118,13)] = {64,0}, + [I(119,13)] = {64,0}, + [I(120,13)] = {64,0}, + [I(121,13)] = {64,0}, + [I(122,13)] = {64,0}, + [I(123,13)] = {64,0}, + [I(124,13)] = {64,0}, + [I(125,13)] = {64,0}, + [I(126,13)] = {64,0}, + [I(127,13)] = {64,0}, + [I(128,13)] = {64,0}, + [I(129,13)] = {64,0}, + [I(130,13)] = {64,0}, + [I(131,13)] = {64,0}, + [I(132,13)] = {64,0}, + [I(133,13)] = {64,0}, + [I(134,13)] = {64,0}, + [I(135,13)] = {64,0}, + [I(136,13)] = {64,0}, + [I(137,13)] = {64,0}, + [I(138,13)] = {64,0}, + [I(139,13)] = {64,0}, + [I(140,13)] = {64,0}, + [I(141,13)] = {64,0}, + [I(142,13)] = {64,0}, + [I(143,13)] = {64,0}, + [I(144,13)] = {64,0}, + [I(145,13)] = {64,0}, + [I(146,13)] = {64,0}, + [I(147,13)] = {64,0}, + [I(148,13)] = {64,0}, + [I(149,13)] = {64,0}, + [I(150,13)] = {64,0}, + [I(151,13)] = {64,0}, + [I(152,13)] = {64,0}, + [I(153,13)] = {64,0}, + [I(154,13)] = {64,0}, + [I(155,13)] = {64,0}, + [I(156,13)] = {64,0}, + [I(157,13)] = {64,0}, + [I(158,13)] = {64,0}, + [I(159,13)] = {64,0}, + [I(160,13)] = {64,0}, + [I(161,13)] = {64,0}, + [I(162,13)] = {64,0}, + [I(163,13)] = {64,0}, + [I(164,13)] = {64,0}, + [I(165,13)] = {64,0}, + [I(166,13)] = {64,0}, + [I(167,13)] = {64,0}, + [I(168,13)] = {64,0}, + [I(169,13)] = {64,0}, + [I(170,13)] = {64,0}, + [I(171,13)] = {64,0}, + [I(172,13)] = {64,0}, + [I(173,13)] = {64,0}, + [I(174,13)] = {64,0}, + [I(175,13)] = {64,0}, + [I(176,13)] = {64,0}, + [I(177,13)] = {64,0}, + [I(178,13)] = {64,0}, + [I(179,13)] = {64,0}, + [I(180,13)] = {64,0}, + [I(181,13)] = {64,0}, + [I(182,13)] = {64,0}, + [I(183,13)] = {64,0}, + [I(184,13)] = {64,0}, + [I(185,13)] = {64,0}, + [I(186,13)] = {64,0}, + [I(187,13)] = {64,0}, + [I(188,13)] = {64,0}, + [I(189,13)] = {64,0}, + [I(190,13)] = {64,0}, + [I(191,13)] = {64,0}, + [I(192,13)] = {64,0}, + [I(193,13)] = {64,0}, + [I(194,13)] = {64,0}, + [I(195,13)] = {64,0}, + [I(196,13)] = {64,0}, + [I(197,13)] = {64,0}, + [I(198,13)] = {64,0}, + [I(199,13)] = {64,0}, + [I(200,13)] = {64,0}, + [I(201,13)] = {64,0}, + [I(202,13)] = {64,0}, + [I(203,13)] = {64,0}, + [I(204,13)] = {64,0}, + [I(205,13)] = {64,0}, + [I(206,13)] = {64,0}, + [I(207,13)] = {64,0}, + [I(208,13)] = {64,0}, + [I(209,13)] = {64,0}, + [I(210,13)] = {64,0}, + [I(211,13)] = {64,0}, + [I(212,13)] = {64,0}, + [I(213,13)] = {64,0}, + [I(214,13)] = {64,0}, + [I(215,13)] = {64,0}, + [I(216,13)] = {64,0}, + [I(217,13)] = {64,0}, + [I(218,13)] = {64,0}, + [I(219,13)] = {64,0}, + [I(220,13)] = {64,0}, + [I(221,13)] = {64,0}, + [I(222,13)] = {64,0}, + [I(223,13)] = {64,0}, + [I(224,13)] = {64,0}, + [I(225,13)] = {64,0}, + [I(226,13)] = {64,0}, + [I(227,13)] = {64,0}, + [I(228,13)] = {64,0}, + [I(229,13)] = {64,0}, + [I(230,13)] = {64,0}, + [I(231,13)] = {64,0}, + [I(232,13)] = {64,0}, + [I(233,13)] = {64,0}, + [I(234,13)] = {64,0}, + [I(235,13)] = {64,0}, + [I(236,13)] = {64,0}, + [I(237,13)] = {64,0}, + [I(238,13)] = {64,0}, + [I(239,13)] = {64,0}, + [I(240,13)] = {64,0}, + [I(241,13)] = {64,0}, + [I(242,13)] = {64,0}, + [I(243,13)] = {64,0}, + [I(244,13)] = {64,0}, + [I(245,13)] = {64,0}, + [I(246,13)] = {64,0}, + [I(247,13)] = {64,0}, + [I(248,13)] = {64,0}, + [I(249,13)] = {64,0}, + [I(250,13)] = {64,0}, + [I(251,13)] = {64,0}, + [I(252,13)] = {64,0}, + [I(253,13)] = {64,0}, + [I(254,13)] = {64,0}, + [I(255,13)] = {64,0}, + [I(0,14)] = {64,0}, + [I(1,14)] = {64,0}, + [I(2,14)] = {64,0}, + [I(3,14)] = {64,0}, + [I(4,14)] = {64,0}, + [I(5,14)] = {64,0}, + [I(6,14)] = {64,0}, + [I(7,14)] = {64,0}, + [I(8,14)] = {64,0}, + [I(9,14)] = {64,0}, + [I(10,14)] = {64,0}, + [I(11,14)] = {64,0}, + [I(12,14)] = {64,0}, + [I(13,14)] = {64,0}, + [I(14,14)] = {64,0}, + [I(15,14)] = {64,0}, + [I(16,14)] = {64,0}, + [I(17,14)] = {64,0}, + [I(18,14)] = {64,0}, + [I(19,14)] = {64,0}, + [I(20,14)] = {64,0}, + [I(21,14)] = {64,0}, + [I(22,14)] = {64,0}, + [I(23,14)] = {64,0}, + [I(24,14)] = {64,0}, + [I(25,14)] = {64,0}, + [I(26,14)] = {64,0}, + [I(27,14)] = {64,0}, + [I(28,14)] = {64,0}, + [I(29,14)] = {64,0}, + [I(30,14)] = {64,0}, + [I(31,14)] = {64,0}, + [I(32,14)] = {64,0}, + [I(33,14)] = {64,0}, + [I(34,14)] = {64,0}, + [I(35,14)] = {64,0}, + [I(36,14)] = {64,0}, + [I(37,14)] = {64,0}, + [I(38,14)] = {64,0}, + [I(39,14)] = {64,0}, + [I(40,14)] = {64,0}, + [I(41,14)] = {64,0}, + [I(42,14)] = {64,0}, + [I(43,14)] = {64,0}, + [I(44,14)] = {64,0}, + [I(45,14)] = {64,0}, + [I(46,14)] = {64,0}, + [I(47,14)] = {64,0}, + [I(48,14)] = {64,0}, + [I(49,14)] = {64,0}, + [I(50,14)] = {64,0}, + [I(51,14)] = {64,0}, + [I(52,14)] = {64,0}, + [I(53,14)] = {64,0}, + [I(54,14)] = {64,0}, + [I(55,14)] = {64,0}, + [I(56,14)] = {64,0}, + [I(57,14)] = {64,0}, + [I(58,14)] = {64,0}, + [I(59,14)] = {64,0}, + [I(60,14)] = {64,0}, + [I(61,14)] = {64,0}, + [I(62,14)] = {64,0}, + [I(63,14)] = {64,0}, + [I(64,14)] = {64,0}, + [I(65,14)] = {64,0}, + [I(66,14)] = {64,0}, + [I(67,14)] = {64,0}, + [I(68,14)] = {64,0}, + [I(69,14)] = {64,0}, + [I(70,14)] = {64,0}, + [I(71,14)] = {64,0}, + [I(72,14)] = {64,0}, + [I(73,14)] = {64,0}, + [I(74,14)] = {64,0}, + [I(75,14)] = {64,0}, + [I(76,14)] = {64,0}, + [I(77,14)] = {64,0}, + [I(78,14)] = {64,0}, + [I(79,14)] = {64,0}, + [I(80,14)] = {64,0}, + [I(81,14)] = {64,0}, + [I(82,14)] = {64,0}, + [I(83,14)] = {64,0}, + [I(84,14)] = {64,0}, + [I(85,14)] = {64,0}, + [I(86,14)] = {64,0}, + [I(87,14)] = {64,0}, + [I(88,14)] = {64,0}, + [I(89,14)] = {64,0}, + [I(90,14)] = {64,0}, + [I(91,14)] = {64,0}, + [I(92,14)] = {64,0}, + [I(93,14)] = {64,0}, + [I(94,14)] = {64,0}, + [I(95,14)] = {64,0}, + [I(96,14)] = {64,0}, + [I(97,14)] = {64,0}, + [I(98,14)] = {64,0}, + [I(99,14)] = {64,0}, + [I(100,14)] = {64,0}, + [I(101,14)] = {64,0}, + [I(102,14)] = {64,0}, + [I(103,14)] = {64,0}, + [I(104,14)] = {64,0}, + [I(105,14)] = {64,0}, + [I(106,14)] = {64,0}, + [I(107,14)] = {64,0}, + [I(108,14)] = {64,0}, + [I(109,14)] = {64,0}, + [I(110,14)] = {64,0}, + [I(111,14)] = {64,0}, + [I(112,14)] = {64,0}, + [I(113,14)] = {64,0}, + [I(114,14)] = {64,0}, + [I(115,14)] = {64,0}, + [I(116,14)] = {64,0}, + [I(117,14)] = {64,0}, + [I(118,14)] = {64,0}, + [I(119,14)] = {64,0}, + [I(120,14)] = {64,0}, + [I(121,14)] = {64,0}, + [I(122,14)] = {64,0}, + [I(123,14)] = {64,0}, + [I(124,14)] = {64,0}, + [I(125,14)] = {64,0}, + [I(126,14)] = {64,0}, + [I(127,14)] = {64,0}, + [I(128,14)] = {64,0}, + [I(129,14)] = {64,0}, + [I(130,14)] = {64,0}, + [I(131,14)] = {64,0}, + [I(132,14)] = {64,0}, + [I(133,14)] = {64,0}, + [I(134,14)] = {64,0}, + [I(135,14)] = {64,0}, + [I(136,14)] = {64,0}, + [I(137,14)] = {64,0}, + [I(138,14)] = {64,0}, + [I(139,14)] = {64,0}, + [I(140,14)] = {64,0}, + [I(141,14)] = {64,0}, + [I(142,14)] = {64,0}, + [I(143,14)] = {64,0}, + [I(144,14)] = {64,0}, + [I(145,14)] = {64,0}, + [I(146,14)] = {64,0}, + [I(147,14)] = {64,0}, + [I(148,14)] = {64,0}, + [I(149,14)] = {64,0}, + [I(150,14)] = {64,0}, + [I(151,14)] = {64,0}, + [I(152,14)] = {64,0}, + [I(153,14)] = {64,0}, + [I(154,14)] = {64,0}, + [I(155,14)] = {64,0}, + [I(156,14)] = {64,0}, + [I(157,14)] = {64,0}, + [I(158,14)] = {64,0}, + [I(159,14)] = {64,0}, + [I(160,14)] = {64,0}, + [I(161,14)] = {64,0}, + [I(162,14)] = {64,0}, + [I(163,14)] = {64,0}, + [I(164,14)] = {64,0}, + [I(165,14)] = {64,0}, + [I(166,14)] = {64,0}, + [I(167,14)] = {64,0}, + [I(168,14)] = {64,0}, + [I(169,14)] = {64,0}, + [I(170,14)] = {64,0}, + [I(171,14)] = {64,0}, + [I(172,14)] = {64,0}, + [I(173,14)] = {64,0}, + [I(174,14)] = {64,0}, + [I(175,14)] = {64,0}, + [I(176,14)] = {64,0}, + [I(177,14)] = {64,0}, + [I(178,14)] = {64,0}, + [I(179,14)] = {64,0}, + [I(180,14)] = {64,0}, + [I(181,14)] = {64,0}, + [I(182,14)] = {64,0}, + [I(183,14)] = {64,0}, + [I(184,14)] = {64,0}, + [I(185,14)] = {64,0}, + [I(186,14)] = {64,0}, + [I(187,14)] = {64,0}, + [I(188,14)] = {64,0}, + [I(189,14)] = {64,0}, + [I(190,14)] = {64,0}, + [I(191,14)] = {64,0}, + [I(192,14)] = {64,0}, + [I(193,14)] = {64,0}, + [I(194,14)] = {64,0}, + [I(195,14)] = {64,0}, + [I(196,14)] = {64,0}, + [I(197,14)] = {64,0}, + [I(198,14)] = {64,0}, + [I(199,14)] = {64,0}, + [I(200,14)] = {64,0}, + [I(201,14)] = {64,0}, + [I(202,14)] = {64,0}, + [I(203,14)] = {64,0}, + [I(204,14)] = {64,0}, + [I(205,14)] = {64,0}, + [I(206,14)] = {64,0}, + [I(207,14)] = {64,0}, + [I(208,14)] = {64,0}, + [I(209,14)] = {64,0}, + [I(210,14)] = {64,0}, + [I(211,14)] = {64,0}, + [I(212,14)] = {64,0}, + [I(213,14)] = {64,0}, + [I(214,14)] = {64,0}, + [I(215,14)] = {64,0}, + [I(216,14)] = {64,0}, + [I(217,14)] = {64,0}, + [I(218,14)] = {64,0}, + [I(219,14)] = {64,0}, + [I(220,14)] = {64,0}, + [I(221,14)] = {64,0}, + [I(222,14)] = {64,0}, + [I(223,14)] = {64,0}, + [I(224,14)] = {64,0}, + [I(225,14)] = {64,0}, + [I(226,14)] = {64,0}, + [I(227,14)] = {64,0}, + [I(228,14)] = {64,0}, + [I(229,14)] = {64,0}, + [I(230,14)] = {64,0}, + [I(231,14)] = {64,0}, + [I(232,14)] = {64,0}, + [I(233,14)] = {64,0}, + [I(234,14)] = {64,0}, + [I(235,14)] = {64,0}, + [I(236,14)] = {64,0}, + [I(237,14)] = {64,0}, + [I(238,14)] = {64,0}, + [I(239,14)] = {64,0}, + [I(240,14)] = {64,0}, + [I(241,14)] = {64,0}, + [I(242,14)] = {64,0}, + [I(243,14)] = {64,0}, + [I(244,14)] = {64,0}, + [I(245,14)] = {64,0}, + [I(246,14)] = {64,0}, + [I(247,14)] = {64,0}, + [I(248,14)] = {64,0}, + [I(249,14)] = {64,0}, + [I(250,14)] = {64,0}, + [I(251,14)] = {64,0}, + [I(252,14)] = {64,0}, + [I(253,14)] = {64,0}, + [I(254,14)] = {64,0}, + [I(255,14)] = {64,0}, + [I(0,15)] = {64,0}, + [I(1,15)] = {64,0}, + [I(2,15)] = {64,0}, + [I(3,15)] = {64,0}, + [I(4,15)] = {64,0}, + [I(5,15)] = {64,0}, + [I(6,15)] = {64,0}, + [I(7,15)] = {64,0}, + [I(8,15)] = {64,0}, + [I(9,15)] = {64,0}, + [I(10,15)] = {64,0}, + [I(11,15)] = {64,0}, + [I(12,15)] = {64,0}, + [I(13,15)] = {64,0}, + [I(14,15)] = {64,0}, + [I(15,15)] = {64,0}, + [I(16,15)] = {64,0}, + [I(17,15)] = {64,0}, + [I(18,15)] = {64,0}, + [I(19,15)] = {64,0}, + [I(20,15)] = {64,0}, + [I(21,15)] = {64,0}, + [I(22,15)] = {64,0}, + [I(23,15)] = {64,0}, + [I(24,15)] = {64,0}, + [I(25,15)] = {64,0}, + [I(26,15)] = {64,0}, + [I(27,15)] = {64,0}, + [I(28,15)] = {64,0}, + [I(29,15)] = {64,0}, + [I(30,15)] = {64,0}, + [I(31,15)] = {64,0}, + [I(32,15)] = {64,0}, + [I(33,15)] = {64,0}, + [I(34,15)] = {64,0}, + [I(35,15)] = {64,0}, + [I(36,15)] = {64,0}, + [I(37,15)] = {64,0}, + [I(38,15)] = {64,0}, + [I(39,15)] = {64,0}, + [I(40,15)] = {64,0}, + [I(41,15)] = {64,0}, + [I(42,15)] = {64,0}, + [I(43,15)] = {64,0}, + [I(44,15)] = {64,0}, + [I(45,15)] = {64,0}, + [I(46,15)] = {64,0}, + [I(47,15)] = {64,0}, + [I(48,15)] = {64,0}, + [I(49,15)] = {64,0}, + [I(50,15)] = {64,0}, + [I(51,15)] = {64,0}, + [I(52,15)] = {64,0}, + [I(53,15)] = {64,0}, + [I(54,15)] = {64,0}, + [I(55,15)] = {64,0}, + [I(56,15)] = {64,0}, + [I(57,15)] = {64,0}, + [I(58,15)] = {64,0}, + [I(59,15)] = {64,0}, + [I(60,15)] = {64,0}, + [I(61,15)] = {64,0}, + [I(62,15)] = {64,0}, + [I(63,15)] = {64,0}, + [I(64,15)] = {64,0}, + [I(65,15)] = {64,0}, + [I(66,15)] = {64,0}, + [I(67,15)] = {64,0}, + [I(68,15)] = {64,0}, + [I(69,15)] = {64,0}, + [I(70,15)] = {64,0}, + [I(71,15)] = {64,0}, + [I(72,15)] = {64,0}, + [I(73,15)] = {64,0}, + [I(74,15)] = {64,0}, + [I(75,15)] = {64,0}, + [I(76,15)] = {64,0}, + [I(77,15)] = {64,0}, + [I(78,15)] = {64,0}, + [I(79,15)] = {64,0}, + [I(80,15)] = {64,0}, + [I(81,15)] = {64,0}, + [I(82,15)] = {64,0}, + [I(83,15)] = {64,0}, + [I(84,15)] = {64,0}, + [I(85,15)] = {64,0}, + [I(86,15)] = {64,0}, + [I(87,15)] = {64,0}, + [I(88,15)] = {64,0}, + [I(89,15)] = {64,0}, + [I(90,15)] = {64,0}, + [I(91,15)] = {64,0}, + [I(92,15)] = {64,0}, + [I(93,15)] = {64,0}, + [I(94,15)] = {64,0}, + [I(95,15)] = {64,0}, + [I(96,15)] = {64,0}, + [I(97,15)] = {64,0}, + [I(98,15)] = {64,0}, + [I(99,15)] = {64,0}, + [I(100,15)] = {64,0}, + [I(101,15)] = {64,0}, + [I(102,15)] = {64,0}, + [I(103,15)] = {64,0}, + [I(104,15)] = {64,0}, + [I(105,15)] = {64,0}, + [I(106,15)] = {64,0}, + [I(107,15)] = {64,0}, + [I(108,15)] = {64,0}, + [I(109,15)] = {64,0}, + [I(110,15)] = {64,0}, + [I(111,15)] = {64,0}, + [I(112,15)] = {64,0}, + [I(113,15)] = {64,0}, + [I(114,15)] = {64,0}, + [I(115,15)] = {64,0}, + [I(116,15)] = {64,0}, + [I(117,15)] = {64,0}, + [I(118,15)] = {64,0}, + [I(119,15)] = {64,0}, + [I(120,15)] = {64,0}, + [I(121,15)] = {64,0}, + [I(122,15)] = {64,0}, + [I(123,15)] = {64,0}, + [I(124,15)] = {64,0}, + [I(125,15)] = {64,0}, + [I(126,15)] = {64,0}, + [I(127,15)] = {64,0}, + [I(128,15)] = {64,0}, + [I(129,15)] = {64,0}, + [I(130,15)] = {64,0}, + [I(131,15)] = {64,0}, + [I(132,15)] = {64,0}, + [I(133,15)] = {64,0}, + [I(134,15)] = {64,0}, + [I(135,15)] = {64,0}, + [I(136,15)] = {64,0}, + [I(137,15)] = {64,0}, + [I(138,15)] = {64,0}, + [I(139,15)] = {64,0}, + [I(140,15)] = {64,0}, + [I(141,15)] = {64,0}, + [I(142,15)] = {64,0}, + [I(143,15)] = {64,0}, + [I(144,15)] = {64,0}, + [I(145,15)] = {64,0}, + [I(146,15)] = {64,0}, + [I(147,15)] = {64,0}, + [I(148,15)] = {64,0}, + [I(149,15)] = {64,0}, + [I(150,15)] = {64,0}, + [I(151,15)] = {64,0}, + [I(152,15)] = {64,0}, + [I(153,15)] = {64,0}, + [I(154,15)] = {64,0}, + [I(155,15)] = {64,0}, + [I(156,15)] = {64,0}, + [I(157,15)] = {64,0}, + [I(158,15)] = {64,0}, + [I(159,15)] = {64,0}, + [I(160,15)] = {64,0}, + [I(161,15)] = {64,0}, + [I(162,15)] = {64,0}, + [I(163,15)] = {64,0}, + [I(164,15)] = {64,0}, + [I(165,15)] = {64,0}, + [I(166,15)] = {64,0}, + [I(167,15)] = {64,0}, + [I(168,15)] = {64,0}, + [I(169,15)] = {64,0}, + [I(170,15)] = {64,0}, + [I(171,15)] = {64,0}, + [I(172,15)] = {64,0}, + [I(173,15)] = {64,0}, + [I(174,15)] = {64,0}, + [I(175,15)] = {64,0}, + [I(176,15)] = {64,0}, + [I(177,15)] = {64,0}, + [I(178,15)] = {64,0}, + [I(179,15)] = {64,0}, + [I(180,15)] = {64,0}, + [I(181,15)] = {64,0}, + [I(182,15)] = {64,0}, + [I(183,15)] = {64,0}, + [I(184,15)] = {64,0}, + [I(185,15)] = {64,0}, + [I(186,15)] = {64,0}, + [I(187,15)] = {64,0}, + [I(188,15)] = {64,0}, + [I(189,15)] = {64,0}, + [I(190,15)] = {64,0}, + [I(191,15)] = {64,0}, + [I(192,15)] = {64,0}, + [I(193,15)] = {64,0}, + [I(194,15)] = {64,0}, + [I(195,15)] = {64,0}, + [I(196,15)] = {64,0}, + [I(197,15)] = {64,0}, + [I(198,15)] = {64,0}, + [I(199,15)] = {64,0}, + [I(200,15)] = {64,0}, + [I(201,15)] = {64,0}, + [I(202,15)] = {64,0}, + [I(203,15)] = {64,0}, + [I(204,15)] = {64,0}, + [I(205,15)] = {64,0}, + [I(206,15)] = {64,0}, + [I(207,15)] = {64,0}, + [I(208,15)] = {64,0}, + [I(209,15)] = {64,0}, + [I(210,15)] = {64,0}, + [I(211,15)] = {64,0}, + [I(212,15)] = {64,0}, + [I(213,15)] = {64,0}, + [I(214,15)] = {64,0}, + [I(215,15)] = {64,0}, + [I(216,15)] = {64,0}, + [I(217,15)] = {64,0}, + [I(218,15)] = {64,0}, + [I(219,15)] = {64,0}, + [I(220,15)] = {64,0}, + [I(221,15)] = {64,0}, + [I(222,15)] = {64,0}, + [I(223,15)] = {64,0}, + [I(224,15)] = {64,0}, + [I(225,15)] = {64,0}, + [I(226,15)] = {64,0}, + [I(227,15)] = {64,0}, + [I(228,15)] = {64,0}, + [I(229,15)] = {64,0}, + [I(230,15)] = {64,0}, + [I(231,15)] = {64,0}, + [I(232,15)] = {64,0}, + [I(233,15)] = {64,0}, + [I(234,15)] = {64,0}, + [I(235,15)] = {64,0}, + [I(236,15)] = {64,0}, + [I(237,15)] = {64,0}, + [I(238,15)] = {64,0}, + [I(239,15)] = {64,0}, + [I(240,15)] = {64,0}, + [I(241,15)] = {64,0}, + [I(242,15)] = {64,0}, + [I(243,15)] = {64,0}, + [I(244,15)] = {64,0}, + [I(245,15)] = {64,0}, + [I(246,15)] = {64,0}, + [I(247,15)] = {64,0}, + [I(248,15)] = {64,0}, + [I(249,15)] = {64,0}, + [I(250,15)] = {64,0}, + [I(251,15)] = {64,0}, + [I(252,15)] = {64,0}, + [I(253,15)] = {64,0}, + [I(254,15)] = {64,0}, + [I(255,15)] = {64,0}, + [I(0,16)] = {64,0}, + [I(1,16)] = {64,0}, + [I(2,16)] = {64,0}, + [I(3,16)] = {64,0}, + [I(4,16)] = {64,0}, + [I(5,16)] = {64,0}, + [I(6,16)] = {64,0}, + [I(7,16)] = {64,0}, + [I(8,16)] = {64,0}, + [I(9,16)] = {64,0}, + [I(10,16)] = {64,0}, + [I(11,16)] = {64,0}, + [I(12,16)] = {64,0}, + [I(13,16)] = {64,0}, + [I(14,16)] = {64,0}, + [I(15,16)] = {64,0}, + [I(16,16)] = {64,0}, + [I(17,16)] = {64,0}, + [I(18,16)] = {64,0}, + [I(19,16)] = {64,0}, + [I(20,16)] = {64,0}, + [I(21,16)] = {64,0}, + [I(22,16)] = {64,0}, + [I(23,16)] = {64,0}, + [I(24,16)] = {64,0}, + [I(25,16)] = {64,0}, + [I(26,16)] = {64,0}, + [I(27,16)] = {64,0}, + [I(28,16)] = {64,0}, + [I(29,16)] = {64,0}, + [I(30,16)] = {64,0}, + [I(31,16)] = {64,0}, + [I(32,16)] = {64,0}, + [I(33,16)] = {64,0}, + [I(34,16)] = {64,0}, + [I(35,16)] = {64,0}, + [I(36,16)] = {64,0}, + [I(37,16)] = {64,0}, + [I(38,16)] = {64,0}, + [I(39,16)] = {64,0}, + [I(40,16)] = {64,0}, + [I(41,16)] = {64,0}, + [I(42,16)] = {64,0}, + [I(43,16)] = {64,0}, + [I(44,16)] = {64,0}, + [I(45,16)] = {64,0}, + [I(46,16)] = {64,0}, + [I(47,16)] = {64,0}, + [I(48,16)] = {64,0}, + [I(49,16)] = {64,0}, + [I(50,16)] = {64,0}, + [I(51,16)] = {64,0}, + [I(52,16)] = {64,0}, + [I(53,16)] = {64,0}, + [I(54,16)] = {64,0}, + [I(55,16)] = {64,0}, + [I(56,16)] = {64,0}, + [I(57,16)] = {64,0}, + [I(58,16)] = {64,0}, + [I(59,16)] = {64,0}, + [I(60,16)] = {64,0}, + [I(61,16)] = {64,0}, + [I(62,16)] = {64,0}, + [I(63,16)] = {64,0}, + [I(64,16)] = {64,0}, + [I(65,16)] = {64,0}, + [I(66,16)] = {64,0}, + [I(67,16)] = {64,0}, + [I(68,16)] = {64,0}, + [I(69,16)] = {64,0}, + [I(70,16)] = {64,0}, + [I(71,16)] = {64,0}, + [I(72,16)] = {64,0}, + [I(73,16)] = {64,0}, + [I(74,16)] = {64,0}, + [I(75,16)] = {64,0}, + [I(76,16)] = {64,0}, + [I(77,16)] = {64,0}, + [I(78,16)] = {64,0}, + [I(79,16)] = {64,0}, + [I(80,16)] = {64,0}, + [I(81,16)] = {64,0}, + [I(82,16)] = {64,0}, + [I(83,16)] = {64,0}, + [I(84,16)] = {64,0}, + [I(85,16)] = {64,0}, + [I(86,16)] = {64,0}, + [I(87,16)] = {64,0}, + [I(88,16)] = {64,0}, + [I(89,16)] = {64,0}, + [I(90,16)] = {64,0}, + [I(91,16)] = {64,0}, + [I(92,16)] = {64,0}, + [I(93,16)] = {64,0}, + [I(94,16)] = {64,0}, + [I(95,16)] = {64,0}, + [I(96,16)] = {64,0}, + [I(97,16)] = {64,0}, + [I(98,16)] = {64,0}, + [I(99,16)] = {64,0}, + [I(100,16)] = {64,0}, + [I(101,16)] = {64,0}, + [I(102,16)] = {64,0}, + [I(103,16)] = {64,0}, + [I(104,16)] = {64,0}, + [I(105,16)] = {64,0}, + [I(106,16)] = {64,0}, + [I(107,16)] = {64,0}, + [I(108,16)] = {64,0}, + [I(109,16)] = {64,0}, + [I(110,16)] = {64,0}, + [I(111,16)] = {64,0}, + [I(112,16)] = {64,0}, + [I(113,16)] = {64,0}, + [I(114,16)] = {64,0}, + [I(115,16)] = {64,0}, + [I(116,16)] = {64,0}, + [I(117,16)] = {64,0}, + [I(118,16)] = {64,0}, + [I(119,16)] = {64,0}, + [I(120,16)] = {64,0}, + [I(121,16)] = {64,0}, + [I(122,16)] = {64,0}, + [I(123,16)] = {64,0}, + [I(124,16)] = {64,0}, + [I(125,16)] = {64,0}, + [I(126,16)] = {64,0}, + [I(127,16)] = {64,0}, + [I(128,16)] = {64,0}, + [I(129,16)] = {64,0}, + [I(130,16)] = {64,0}, + [I(131,16)] = {64,0}, + [I(132,16)] = {64,0}, + [I(133,16)] = {64,0}, + [I(134,16)] = {64,0}, + [I(135,16)] = {64,0}, + [I(136,16)] = {64,0}, + [I(137,16)] = {64,0}, + [I(138,16)] = {64,0}, + [I(139,16)] = {64,0}, + [I(140,16)] = {64,0}, + [I(141,16)] = {64,0}, + [I(142,16)] = {64,0}, + [I(143,16)] = {64,0}, + [I(144,16)] = {64,0}, + [I(145,16)] = {64,0}, + [I(146,16)] = {64,0}, + [I(147,16)] = {64,0}, + [I(148,16)] = {64,0}, + [I(149,16)] = {64,0}, + [I(150,16)] = {64,0}, + [I(151,16)] = {64,0}, + [I(152,16)] = {64,0}, + [I(153,16)] = {64,0}, + [I(154,16)] = {64,0}, + [I(155,16)] = {64,0}, + [I(156,16)] = {64,0}, + [I(157,16)] = {64,0}, + [I(158,16)] = {64,0}, + [I(159,16)] = {64,0}, + [I(160,16)] = {64,0}, + [I(161,16)] = {64,0}, + [I(162,16)] = {64,0}, + [I(163,16)] = {64,0}, + [I(164,16)] = {64,0}, + [I(165,16)] = {64,0}, + [I(166,16)] = {64,0}, + [I(167,16)] = {64,0}, + [I(168,16)] = {64,0}, + [I(169,16)] = {64,0}, + [I(170,16)] = {64,0}, + [I(171,16)] = {64,0}, + [I(172,16)] = {64,0}, + [I(173,16)] = {64,0}, + [I(174,16)] = {64,0}, + [I(175,16)] = {64,0}, + [I(176,16)] = {64,0}, + [I(177,16)] = {64,0}, + [I(178,16)] = {64,0}, + [I(179,16)] = {64,0}, + [I(180,16)] = {64,0}, + [I(181,16)] = {64,0}, + [I(182,16)] = {64,0}, + [I(183,16)] = {64,0}, + [I(184,16)] = {64,0}, + [I(185,16)] = {64,0}, + [I(186,16)] = {64,0}, + [I(187,16)] = {64,0}, + [I(188,16)] = {64,0}, + [I(189,16)] = {64,0}, + [I(190,16)] = {64,0}, + [I(191,16)] = {64,0}, + [I(192,16)] = {64,0}, + [I(193,16)] = {64,0}, + [I(194,16)] = {64,0}, + [I(195,16)] = {64,0}, + [I(196,16)] = {64,0}, + [I(197,16)] = {64,0}, + [I(198,16)] = {64,0}, + [I(199,16)] = {64,0}, + [I(200,16)] = {64,0}, + [I(201,16)] = {64,0}, + [I(202,16)] = {64,0}, + [I(203,16)] = {64,0}, + [I(204,16)] = {64,0}, + [I(205,16)] = {64,0}, + [I(206,16)] = {64,0}, + [I(207,16)] = {64,0}, + [I(208,16)] = {64,0}, + [I(209,16)] = {64,0}, + [I(210,16)] = {64,0}, + [I(211,16)] = {64,0}, + [I(212,16)] = {64,0}, + [I(213,16)] = {64,0}, + [I(214,16)] = {64,0}, + [I(215,16)] = {64,0}, + [I(216,16)] = {64,0}, + [I(217,16)] = {64,0}, + [I(218,16)] = {64,0}, + [I(219,16)] = {64,0}, + [I(220,16)] = {64,0}, + [I(221,16)] = {64,0}, + [I(222,16)] = {64,0}, + [I(223,16)] = {64,0}, + [I(224,16)] = {64,0}, + [I(225,16)] = {64,0}, + [I(226,16)] = {64,0}, + [I(227,16)] = {64,0}, + [I(228,16)] = {64,0}, + [I(229,16)] = {64,0}, + [I(230,16)] = {64,0}, + [I(231,16)] = {64,0}, + [I(232,16)] = {64,0}, + [I(233,16)] = {64,0}, + [I(234,16)] = {64,0}, + [I(235,16)] = {64,0}, + [I(236,16)] = {64,0}, + [I(237,16)] = {64,0}, + [I(238,16)] = {64,0}, + [I(239,16)] = {64,0}, + [I(240,16)] = {64,0}, + [I(241,16)] = {64,0}, + [I(242,16)] = {64,0}, + [I(243,16)] = {64,0}, + [I(244,16)] = {64,0}, + [I(245,16)] = {64,0}, + [I(246,16)] = {64,0}, + [I(247,16)] = {64,0}, + [I(248,16)] = {64,0}, + [I(249,16)] = {64,0}, + [I(250,16)] = {64,0}, + [I(251,16)] = {64,0}, + [I(252,16)] = {64,0}, + [I(253,16)] = {64,0}, + [I(254,16)] = {64,0}, + [I(255,16)] = {64,0}, + [I(0,17)] = {64,0}, + [I(1,17)] = {64,0}, + [I(2,17)] = {64,0}, + [I(3,17)] = {64,0}, + [I(4,17)] = {64,0}, + [I(5,17)] = {64,0}, + [I(6,17)] = {64,0}, + [I(7,17)] = {64,0}, + [I(8,17)] = {64,0}, + [I(9,17)] = {64,0}, + [I(10,17)] = {64,0}, + [I(11,17)] = {64,0}, + [I(12,17)] = {64,0}, + [I(13,17)] = {64,0}, + [I(14,17)] = {64,0}, + [I(15,17)] = {64,0}, + [I(16,17)] = {64,0}, + [I(17,17)] = {64,0}, + [I(18,17)] = {64,0}, + [I(19,17)] = {64,0}, + [I(20,17)] = {64,0}, + [I(21,17)] = {64,0}, + [I(22,17)] = {64,0}, + [I(23,17)] = {64,0}, + [I(24,17)] = {64,0}, + [I(25,17)] = {64,0}, + [I(26,17)] = {64,0}, + [I(27,17)] = {64,0}, + [I(28,17)] = {64,0}, + [I(29,17)] = {64,0}, + [I(30,17)] = {64,0}, + [I(31,17)] = {64,0}, + [I(32,17)] = {64,0}, + [I(33,17)] = {64,0}, + [I(34,17)] = {64,0}, + [I(35,17)] = {64,0}, + [I(36,17)] = {64,0}, + [I(37,17)] = {64,0}, + [I(38,17)] = {64,0}, + [I(39,17)] = {64,0}, + [I(40,17)] = {64,0}, + [I(41,17)] = {64,0}, + [I(42,17)] = {64,0}, + [I(43,17)] = {64,0}, + [I(44,17)] = {64,0}, + [I(45,17)] = {64,0}, + [I(46,17)] = {64,0}, + [I(47,17)] = {64,0}, + [I(48,17)] = {64,0}, + [I(49,17)] = {64,0}, + [I(50,17)] = {64,0}, + [I(51,17)] = {64,0}, + [I(52,17)] = {64,0}, + [I(53,17)] = {64,0}, + [I(54,17)] = {64,0}, + [I(55,17)] = {64,0}, + [I(56,17)] = {64,0}, + [I(57,17)] = {64,0}, + [I(58,17)] = {64,0}, + [I(59,17)] = {64,0}, + [I(60,17)] = {64,0}, + [I(61,17)] = {64,0}, + [I(62,17)] = {64,0}, + [I(63,17)] = {64,0}, + [I(64,17)] = {64,0}, + [I(65,17)] = {64,0}, + [I(66,17)] = {64,0}, + [I(67,17)] = {64,0}, + [I(68,17)] = {64,0}, + [I(69,17)] = {64,0}, + [I(70,17)] = {64,0}, + [I(71,17)] = {64,0}, + [I(72,17)] = {64,0}, + [I(73,17)] = {64,0}, + [I(74,17)] = {64,0}, + [I(75,17)] = {64,0}, + [I(76,17)] = {64,0}, + [I(77,17)] = {64,0}, + [I(78,17)] = {64,0}, + [I(79,17)] = {64,0}, + [I(80,17)] = {64,0}, + [I(81,17)] = {64,0}, + [I(82,17)] = {64,0}, + [I(83,17)] = {64,0}, + [I(84,17)] = {64,0}, + [I(85,17)] = {64,0}, + [I(86,17)] = {64,0}, + [I(87,17)] = {64,0}, + [I(88,17)] = {64,0}, + [I(89,17)] = {64,0}, + [I(90,17)] = {64,0}, + [I(91,17)] = {64,0}, + [I(92,17)] = {64,0}, + [I(93,17)] = {64,0}, + [I(94,17)] = {64,0}, + [I(95,17)] = {64,0}, + [I(96,17)] = {64,0}, + [I(97,17)] = {64,0}, + [I(98,17)] = {64,0}, + [I(99,17)] = {64,0}, + [I(100,17)] = {64,0}, + [I(101,17)] = {64,0}, + [I(102,17)] = {64,0}, + [I(103,17)] = {64,0}, + [I(104,17)] = {64,0}, + [I(105,17)] = {64,0}, + [I(106,17)] = {64,0}, + [I(107,17)] = {64,0}, + [I(108,17)] = {64,0}, + [I(109,17)] = {64,0}, + [I(110,17)] = {64,0}, + [I(111,17)] = {64,0}, + [I(112,17)] = {64,0}, + [I(113,17)] = {64,0}, + [I(114,17)] = {64,0}, + [I(115,17)] = {64,0}, + [I(116,17)] = {64,0}, + [I(117,17)] = {64,0}, + [I(118,17)] = {64,0}, + [I(119,17)] = {64,0}, + [I(120,17)] = {64,0}, + [I(121,17)] = {64,0}, + [I(122,17)] = {64,0}, + [I(123,17)] = {64,0}, + [I(124,17)] = {64,0}, + [I(125,17)] = {64,0}, + [I(126,17)] = {64,0}, + [I(127,17)] = {64,0}, + [I(128,17)] = {64,0}, + [I(129,17)] = {64,0}, + [I(130,17)] = {64,0}, + [I(131,17)] = {64,0}, + [I(132,17)] = {64,0}, + [I(133,17)] = {64,0}, + [I(134,17)] = {64,0}, + [I(135,17)] = {64,0}, + [I(136,17)] = {64,0}, + [I(137,17)] = {64,0}, + [I(138,17)] = {64,0}, + [I(139,17)] = {64,0}, + [I(140,17)] = {64,0}, + [I(141,17)] = {64,0}, + [I(142,17)] = {64,0}, + [I(143,17)] = {64,0}, + [I(144,17)] = {64,0}, + [I(145,17)] = {64,0}, + [I(146,17)] = {64,0}, + [I(147,17)] = {64,0}, + [I(148,17)] = {64,0}, + [I(149,17)] = {64,0}, + [I(150,17)] = {64,0}, + [I(151,17)] = {64,0}, + [I(152,17)] = {64,0}, + [I(153,17)] = {64,0}, + [I(154,17)] = {64,0}, + [I(155,17)] = {64,0}, + [I(156,17)] = {64,0}, + [I(157,17)] = {64,0}, + [I(158,17)] = {64,0}, + [I(159,17)] = {64,0}, + [I(160,17)] = {64,0}, + [I(161,17)] = {64,0}, + [I(162,17)] = {64,0}, + [I(163,17)] = {64,0}, + [I(164,17)] = {64,0}, + [I(165,17)] = {64,0}, + [I(166,17)] = {64,0}, + [I(167,17)] = {64,0}, + [I(168,17)] = {64,0}, + [I(169,17)] = {64,0}, + [I(170,17)] = {64,0}, + [I(171,17)] = {64,0}, + [I(172,17)] = {64,0}, + [I(173,17)] = {64,0}, + [I(174,17)] = {64,0}, + [I(175,17)] = {64,0}, + [I(176,17)] = {64,0}, + [I(177,17)] = {64,0}, + [I(178,17)] = {64,0}, + [I(179,17)] = {64,0}, + [I(180,17)] = {64,0}, + [I(181,17)] = {64,0}, + [I(182,17)] = {64,0}, + [I(183,17)] = {64,0}, + [I(184,17)] = {64,0}, + [I(185,17)] = {64,0}, + [I(186,17)] = {64,0}, + [I(187,17)] = {64,0}, + [I(188,17)] = {64,0}, + [I(189,17)] = {64,0}, + [I(190,17)] = {64,0}, + [I(191,17)] = {64,0}, + [I(192,17)] = {64,0}, + [I(193,17)] = {64,0}, + [I(194,17)] = {64,0}, + [I(195,17)] = {64,0}, + [I(196,17)] = {64,0}, + [I(197,17)] = {64,0}, + [I(198,17)] = {64,0}, + [I(199,17)] = {64,0}, + [I(200,17)] = {64,0}, + [I(201,17)] = {64,0}, + [I(202,17)] = {64,0}, + [I(203,17)] = {64,0}, + [I(204,17)] = {64,0}, + [I(205,17)] = {64,0}, + [I(206,17)] = {64,0}, + [I(207,17)] = {64,0}, + [I(208,17)] = {64,0}, + [I(209,17)] = {64,0}, + [I(210,17)] = {64,0}, + [I(211,17)] = {64,0}, + [I(212,17)] = {64,0}, + [I(213,17)] = {64,0}, + [I(214,17)] = {64,0}, + [I(215,17)] = {64,0}, + [I(216,17)] = {64,0}, + [I(217,17)] = {64,0}, + [I(218,17)] = {64,0}, + [I(219,17)] = {64,0}, + [I(220,17)] = {64,0}, + [I(221,17)] = {64,0}, + [I(222,17)] = {64,0}, + [I(223,17)] = {64,0}, + [I(224,17)] = {64,0}, + [I(225,17)] = {64,0}, + [I(226,17)] = {64,0}, + [I(227,17)] = {64,0}, + [I(228,17)] = {64,0}, + [I(229,17)] = {64,0}, + [I(230,17)] = {64,0}, + [I(231,17)] = {64,0}, + [I(232,17)] = {64,0}, + [I(233,17)] = {64,0}, + [I(234,17)] = {64,0}, + [I(235,17)] = {64,0}, + [I(236,17)] = {64,0}, + [I(237,17)] = {64,0}, + [I(238,17)] = {64,0}, + [I(239,17)] = {64,0}, + [I(240,17)] = {64,0}, + [I(241,17)] = {64,0}, + [I(242,17)] = {64,0}, + [I(243,17)] = {64,0}, + [I(244,17)] = {64,0}, + [I(245,17)] = {64,0}, + [I(246,17)] = {64,0}, + [I(247,17)] = {64,0}, + [I(248,17)] = {64,0}, + [I(249,17)] = {64,0}, + [I(250,17)] = {64,0}, + [I(251,17)] = {64,0}, + [I(252,17)] = {64,0}, + [I(253,17)] = {64,0}, + [I(254,17)] = {64,0}, + [I(255,17)] = {64,0}, + [I(0,18)] = {64,0}, + [I(1,18)] = {64,0}, + [I(2,18)] = {64,0}, + [I(3,18)] = {64,0}, + [I(4,18)] = {64,0}, + [I(5,18)] = {64,0}, + [I(6,18)] = {64,0}, + [I(7,18)] = {64,0}, + [I(8,18)] = {64,0}, + [I(9,18)] = {64,0}, + [I(10,18)] = {64,0}, + [I(11,18)] = {64,0}, + [I(12,18)] = {64,0}, + [I(13,18)] = {64,0}, + [I(14,18)] = {64,0}, + [I(15,18)] = {64,0}, + [I(16,18)] = {64,0}, + [I(17,18)] = {64,0}, + [I(18,18)] = {64,0}, + [I(19,18)] = {64,0}, + [I(20,18)] = {64,0}, + [I(21,18)] = {64,0}, + [I(22,18)] = {64,0}, + [I(23,18)] = {64,0}, + [I(24,18)] = {64,0}, + [I(25,18)] = {64,0}, + [I(26,18)] = {64,0}, + [I(27,18)] = {64,0}, + [I(28,18)] = {64,0}, + [I(29,18)] = {64,0}, + [I(30,18)] = {64,0}, + [I(31,18)] = {64,0}, + [I(32,18)] = {64,0}, + [I(33,18)] = {64,0}, + [I(34,18)] = {64,0}, + [I(35,18)] = {64,0}, + [I(36,18)] = {64,0}, + [I(37,18)] = {64,0}, + [I(38,18)] = {64,0}, + [I(39,18)] = {64,0}, + [I(40,18)] = {64,0}, + [I(41,18)] = {64,0}, + [I(42,18)] = {64,0}, + [I(43,18)] = {64,0}, + [I(44,18)] = {64,0}, + [I(45,18)] = {64,0}, + [I(46,18)] = {64,0}, + [I(47,18)] = {64,0}, + [I(48,18)] = {64,0}, + [I(49,18)] = {64,0}, + [I(50,18)] = {64,0}, + [I(51,18)] = {64,0}, + [I(52,18)] = {64,0}, + [I(53,18)] = {64,0}, + [I(54,18)] = {64,0}, + [I(55,18)] = {64,0}, + [I(56,18)] = {64,0}, + [I(57,18)] = {64,0}, + [I(58,18)] = {64,0}, + [I(59,18)] = {64,0}, + [I(60,18)] = {64,0}, + [I(61,18)] = {64,0}, + [I(62,18)] = {64,0}, + [I(63,18)] = {64,0}, + [I(64,18)] = {64,0}, + [I(65,18)] = {64,0}, + [I(66,18)] = {64,0}, + [I(67,18)] = {64,0}, + [I(68,18)] = {64,0}, + [I(69,18)] = {64,0}, + [I(70,18)] = {64,0}, + [I(71,18)] = {64,0}, + [I(72,18)] = {64,0}, + [I(73,18)] = {64,0}, + [I(74,18)] = {64,0}, + [I(75,18)] = {64,0}, + [I(76,18)] = {64,0}, + [I(77,18)] = {64,0}, + [I(78,18)] = {64,0}, + [I(79,18)] = {64,0}, + [I(80,18)] = {64,0}, + [I(81,18)] = {64,0}, + [I(82,18)] = {64,0}, + [I(83,18)] = {64,0}, + [I(84,18)] = {64,0}, + [I(85,18)] = {64,0}, + [I(86,18)] = {64,0}, + [I(87,18)] = {64,0}, + [I(88,18)] = {64,0}, + [I(89,18)] = {64,0}, + [I(90,18)] = {64,0}, + [I(91,18)] = {64,0}, + [I(92,18)] = {64,0}, + [I(93,18)] = {64,0}, + [I(94,18)] = {64,0}, + [I(95,18)] = {64,0}, + [I(96,18)] = {64,0}, + [I(97,18)] = {64,0}, + [I(98,18)] = {64,0}, + [I(99,18)] = {64,0}, + [I(100,18)] = {64,0}, + [I(101,18)] = {64,0}, + [I(102,18)] = {64,0}, + [I(103,18)] = {64,0}, + [I(104,18)] = {64,0}, + [I(105,18)] = {64,0}, + [I(106,18)] = {64,0}, + [I(107,18)] = {64,0}, + [I(108,18)] = {64,0}, + [I(109,18)] = {64,0}, + [I(110,18)] = {64,0}, + [I(111,18)] = {64,0}, + [I(112,18)] = {64,0}, + [I(113,18)] = {64,0}, + [I(114,18)] = {64,0}, + [I(115,18)] = {64,0}, + [I(116,18)] = {64,0}, + [I(117,18)] = {64,0}, + [I(118,18)] = {64,0}, + [I(119,18)] = {64,0}, + [I(120,18)] = {64,0}, + [I(121,18)] = {64,0}, + [I(122,18)] = {64,0}, + [I(123,18)] = {64,0}, + [I(124,18)] = {64,0}, + [I(125,18)] = {64,0}, + [I(126,18)] = {64,0}, + [I(127,18)] = {64,0}, + [I(128,18)] = {64,0}, + [I(129,18)] = {64,0}, + [I(130,18)] = {64,0}, + [I(131,18)] = {64,0}, + [I(132,18)] = {64,0}, + [I(133,18)] = {64,0}, + [I(134,18)] = {64,0}, + [I(135,18)] = {64,0}, + [I(136,18)] = {64,0}, + [I(137,18)] = {64,0}, + [I(138,18)] = {64,0}, + [I(139,18)] = {64,0}, + [I(140,18)] = {64,0}, + [I(141,18)] = {64,0}, + [I(142,18)] = {64,0}, + [I(143,18)] = {64,0}, + [I(144,18)] = {64,0}, + [I(145,18)] = {64,0}, + [I(146,18)] = {64,0}, + [I(147,18)] = {64,0}, + [I(148,18)] = {64,0}, + [I(149,18)] = {64,0}, + [I(150,18)] = {64,0}, + [I(151,18)] = {64,0}, + [I(152,18)] = {64,0}, + [I(153,18)] = {64,0}, + [I(154,18)] = {64,0}, + [I(155,18)] = {64,0}, + [I(156,18)] = {64,0}, + [I(157,18)] = {64,0}, + [I(158,18)] = {64,0}, + [I(159,18)] = {64,0}, + [I(160,18)] = {64,0}, + [I(161,18)] = {64,0}, + [I(162,18)] = {64,0}, + [I(163,18)] = {64,0}, + [I(164,18)] = {64,0}, + [I(165,18)] = {64,0}, + [I(166,18)] = {64,0}, + [I(167,18)] = {64,0}, + [I(168,18)] = {64,0}, + [I(169,18)] = {64,0}, + [I(170,18)] = {64,0}, + [I(171,18)] = {64,0}, + [I(172,18)] = {64,0}, + [I(173,18)] = {64,0}, + [I(174,18)] = {64,0}, + [I(175,18)] = {64,0}, + [I(176,18)] = {64,0}, + [I(177,18)] = {64,0}, + [I(178,18)] = {64,0}, + [I(179,18)] = {64,0}, + [I(180,18)] = {64,0}, + [I(181,18)] = {64,0}, + [I(182,18)] = {64,0}, + [I(183,18)] = {64,0}, + [I(184,18)] = {64,0}, + [I(185,18)] = {64,0}, + [I(186,18)] = {64,0}, + [I(187,18)] = {64,0}, + [I(188,18)] = {64,0}, + [I(189,18)] = {64,0}, + [I(190,18)] = {64,0}, + [I(191,18)] = {64,0}, + [I(192,18)] = {64,0}, + [I(193,18)] = {64,0}, + [I(194,18)] = {64,0}, + [I(195,18)] = {64,0}, + [I(196,18)] = {64,0}, + [I(197,18)] = {64,0}, + [I(198,18)] = {64,0}, + [I(199,18)] = {64,0}, + [I(200,18)] = {64,0}, + [I(201,18)] = {64,0}, + [I(202,18)] = {64,0}, + [I(203,18)] = {64,0}, + [I(204,18)] = {64,0}, + [I(205,18)] = {64,0}, + [I(206,18)] = {64,0}, + [I(207,18)] = {64,0}, + [I(208,18)] = {64,0}, + [I(209,18)] = {64,0}, + [I(210,18)] = {64,0}, + [I(211,18)] = {64,0}, + [I(212,18)] = {64,0}, + [I(213,18)] = {64,0}, + [I(214,18)] = {64,0}, + [I(215,18)] = {64,0}, + [I(216,18)] = {64,0}, + [I(217,18)] = {64,0}, + [I(218,18)] = {64,0}, + [I(219,18)] = {64,0}, + [I(220,18)] = {64,0}, + [I(221,18)] = {64,0}, + [I(222,18)] = {64,0}, + [I(223,18)] = {64,0}, + [I(224,18)] = {64,0}, + [I(225,18)] = {64,0}, + [I(226,18)] = {64,0}, + [I(227,18)] = {64,0}, + [I(228,18)] = {64,0}, + [I(229,18)] = {64,0}, + [I(230,18)] = {64,0}, + [I(231,18)] = {64,0}, + [I(232,18)] = {64,0}, + [I(233,18)] = {64,0}, + [I(234,18)] = {64,0}, + [I(235,18)] = {64,0}, + [I(236,18)] = {64,0}, + [I(237,18)] = {64,0}, + [I(238,18)] = {64,0}, + [I(239,18)] = {64,0}, + [I(240,18)] = {64,0}, + [I(241,18)] = {64,0}, + [I(242,18)] = {64,0}, + [I(243,18)] = {64,0}, + [I(244,18)] = {64,0}, + [I(245,18)] = {64,0}, + [I(246,18)] = {64,0}, + [I(247,18)] = {64,0}, + [I(248,18)] = {64,0}, + [I(249,18)] = {64,0}, + [I(250,18)] = {64,0}, + [I(251,18)] = {64,0}, + [I(252,18)] = {64,0}, + [I(253,18)] = {64,0}, + [I(254,18)] = {64,0}, + [I(255,18)] = {64,0}, + [I(0,19)] = {64,0}, + [I(1,19)] = {64,0}, + [I(2,19)] = {64,0}, + [I(3,19)] = {64,0}, + [I(4,19)] = {64,0}, + [I(5,19)] = {64,0}, + [I(6,19)] = {64,0}, + [I(7,19)] = {64,0}, + [I(8,19)] = {64,0}, + [I(9,19)] = {64,0}, + [I(10,19)] = {64,0}, + [I(11,19)] = {64,0}, + [I(12,19)] = {64,0}, + [I(13,19)] = {64,0}, + [I(14,19)] = {64,0}, + [I(15,19)] = {64,0}, + [I(16,19)] = {64,0}, + [I(17,19)] = {64,0}, + [I(18,19)] = {64,0}, + [I(19,19)] = {64,0}, + [I(20,19)] = {64,0}, + [I(21,19)] = {64,0}, + [I(22,19)] = {64,0}, + [I(23,19)] = {64,0}, + [I(24,19)] = {64,0}, + [I(25,19)] = {64,0}, + [I(26,19)] = {64,0}, + [I(27,19)] = {64,0}, + [I(28,19)] = {64,0}, + [I(29,19)] = {64,0}, + [I(30,19)] = {64,0}, + [I(31,19)] = {64,0}, + [I(32,19)] = {64,0}, + [I(33,19)] = {64,0}, + [I(34,19)] = {64,0}, + [I(35,19)] = {64,0}, + [I(36,19)] = {64,0}, + [I(37,19)] = {64,0}, + [I(38,19)] = {64,0}, + [I(39,19)] = {64,0}, + [I(40,19)] = {64,0}, + [I(41,19)] = {64,0}, + [I(42,19)] = {64,0}, + [I(43,19)] = {64,0}, + [I(44,19)] = {64,0}, + [I(45,19)] = {64,0}, + [I(46,19)] = {64,0}, + [I(47,19)] = {64,0}, + [I(48,19)] = {64,0}, + [I(49,19)] = {64,0}, + [I(50,19)] = {64,0}, + [I(51,19)] = {64,0}, + [I(52,19)] = {64,0}, + [I(53,19)] = {64,0}, + [I(54,19)] = {64,0}, + [I(55,19)] = {64,0}, + [I(56,19)] = {64,0}, + [I(57,19)] = {64,0}, + [I(58,19)] = {64,0}, + [I(59,19)] = {64,0}, + [I(60,19)] = {64,0}, + [I(61,19)] = {64,0}, + [I(62,19)] = {64,0}, + [I(63,19)] = {64,0}, + [I(64,19)] = {64,0}, + [I(65,19)] = {64,0}, + [I(66,19)] = {64,0}, + [I(67,19)] = {64,0}, + [I(68,19)] = {64,0}, + [I(69,19)] = {64,0}, + [I(70,19)] = {64,0}, + [I(71,19)] = {64,0}, + [I(72,19)] = {64,0}, + [I(73,19)] = {64,0}, + [I(74,19)] = {64,0}, + [I(75,19)] = {64,0}, + [I(76,19)] = {64,0}, + [I(77,19)] = {64,0}, + [I(78,19)] = {64,0}, + [I(79,19)] = {64,0}, + [I(80,19)] = {64,0}, + [I(81,19)] = {64,0}, + [I(82,19)] = {64,0}, + [I(83,19)] = {64,0}, + [I(84,19)] = {64,0}, + [I(85,19)] = {64,0}, + [I(86,19)] = {64,0}, + [I(87,19)] = {64,0}, + [I(88,19)] = {64,0}, + [I(89,19)] = {64,0}, + [I(90,19)] = {64,0}, + [I(91,19)] = {64,0}, + [I(92,19)] = {64,0}, + [I(93,19)] = {64,0}, + [I(94,19)] = {64,0}, + [I(95,19)] = {64,0}, + [I(96,19)] = {64,0}, + [I(97,19)] = {64,0}, + [I(98,19)] = {64,0}, + [I(99,19)] = {64,0}, + [I(100,19)] = {64,0}, + [I(101,19)] = {64,0}, + [I(102,19)] = {64,0}, + [I(103,19)] = {64,0}, + [I(104,19)] = {64,0}, + [I(105,19)] = {64,0}, + [I(106,19)] = {64,0}, + [I(107,19)] = {64,0}, + [I(108,19)] = {64,0}, + [I(109,19)] = {64,0}, + [I(110,19)] = {64,0}, + [I(111,19)] = {64,0}, + [I(112,19)] = {64,0}, + [I(113,19)] = {64,0}, + [I(114,19)] = {64,0}, + [I(115,19)] = {64,0}, + [I(116,19)] = {64,0}, + [I(117,19)] = {64,0}, + [I(118,19)] = {64,0}, + [I(119,19)] = {64,0}, + [I(120,19)] = {64,0}, + [I(121,19)] = {64,0}, + [I(122,19)] = {64,0}, + [I(123,19)] = {64,0}, + [I(124,19)] = {64,0}, + [I(125,19)] = {64,0}, + [I(126,19)] = {64,0}, + [I(127,19)] = {64,0}, + [I(128,19)] = {64,0}, + [I(129,19)] = {64,0}, + [I(130,19)] = {64,0}, + [I(131,19)] = {64,0}, + [I(132,19)] = {64,0}, + [I(133,19)] = {64,0}, + [I(134,19)] = {64,0}, + [I(135,19)] = {64,0}, + [I(136,19)] = {64,0}, + [I(137,19)] = {64,0}, + [I(138,19)] = {64,0}, + [I(139,19)] = {64,0}, + [I(140,19)] = {64,0}, + [I(141,19)] = {64,0}, + [I(142,19)] = {64,0}, + [I(143,19)] = {64,0}, + [I(144,19)] = {64,0}, + [I(145,19)] = {64,0}, + [I(146,19)] = {64,0}, + [I(147,19)] = {64,0}, + [I(148,19)] = {64,0}, + [I(149,19)] = {64,0}, + [I(150,19)] = {64,0}, + [I(151,19)] = {64,0}, + [I(152,19)] = {64,0}, + [I(153,19)] = {64,0}, + [I(154,19)] = {64,0}, + [I(155,19)] = {64,0}, + [I(156,19)] = {64,0}, + [I(157,19)] = {64,0}, + [I(158,19)] = {64,0}, + [I(159,19)] = {64,0}, + [I(160,19)] = {64,0}, + [I(161,19)] = {64,0}, + [I(162,19)] = {64,0}, + [I(163,19)] = {64,0}, + [I(164,19)] = {64,0}, + [I(165,19)] = {64,0}, + [I(166,19)] = {64,0}, + [I(167,19)] = {64,0}, + [I(168,19)] = {64,0}, + [I(169,19)] = {64,0}, + [I(170,19)] = {64,0}, + [I(171,19)] = {64,0}, + [I(172,19)] = {64,0}, + [I(173,19)] = {64,0}, + [I(174,19)] = {64,0}, + [I(175,19)] = {64,0}, + [I(176,19)] = {64,0}, + [I(177,19)] = {64,0}, + [I(178,19)] = {64,0}, + [I(179,19)] = {64,0}, + [I(180,19)] = {64,0}, + [I(181,19)] = {64,0}, + [I(182,19)] = {64,0}, + [I(183,19)] = {64,0}, + [I(184,19)] = {64,0}, + [I(185,19)] = {64,0}, + [I(186,19)] = {64,0}, + [I(187,19)] = {64,0}, + [I(188,19)] = {64,0}, + [I(189,19)] = {64,0}, + [I(190,19)] = {64,0}, + [I(191,19)] = {64,0}, + [I(192,19)] = {64,0}, + [I(193,19)] = {64,0}, + [I(194,19)] = {64,0}, + [I(195,19)] = {64,0}, + [I(196,19)] = {64,0}, + [I(197,19)] = {64,0}, + [I(198,19)] = {64,0}, + [I(199,19)] = {64,0}, + [I(200,19)] = {64,0}, + [I(201,19)] = {64,0}, + [I(202,19)] = {64,0}, + [I(203,19)] = {64,0}, + [I(204,19)] = {64,0}, + [I(205,19)] = {64,0}, + [I(206,19)] = {64,0}, + [I(207,19)] = {64,0}, + [I(208,19)] = {64,0}, + [I(209,19)] = {64,0}, + [I(210,19)] = {64,0}, + [I(211,19)] = {64,0}, + [I(212,19)] = {64,0}, + [I(213,19)] = {64,0}, + [I(214,19)] = {64,0}, + [I(215,19)] = {64,0}, + [I(216,19)] = {64,0}, + [I(217,19)] = {64,0}, + [I(218,19)] = {64,0}, + [I(219,19)] = {64,0}, + [I(220,19)] = {64,0}, + [I(221,19)] = {64,0}, + [I(222,19)] = {64,0}, + [I(223,19)] = {64,0}, + [I(224,19)] = {64,0}, + [I(225,19)] = {64,0}, + [I(226,19)] = {64,0}, + [I(227,19)] = {64,0}, + [I(228,19)] = {64,0}, + [I(229,19)] = {64,0}, + [I(230,19)] = {64,0}, + [I(231,19)] = {64,0}, + [I(232,19)] = {64,0}, + [I(233,19)] = {64,0}, + [I(234,19)] = {64,0}, + [I(235,19)] = {64,0}, + [I(236,19)] = {64,0}, + [I(237,19)] = {64,0}, + [I(238,19)] = {64,0}, + [I(239,19)] = {64,0}, + [I(240,19)] = {64,0}, + [I(241,19)] = {64,0}, + [I(242,19)] = {64,0}, + [I(243,19)] = {64,0}, + [I(244,19)] = {64,0}, + [I(245,19)] = {64,0}, + [I(246,19)] = {64,0}, + [I(247,19)] = {64,0}, + [I(248,19)] = {64,0}, + [I(249,19)] = {64,0}, + [I(250,19)] = {64,0}, + [I(251,19)] = {64,0}, + [I(252,19)] = {64,0}, + [I(253,19)] = {64,0}, + [I(254,19)] = {64,0}, + [I(255,19)] = {64,0}, + [I(0,20)] = {64,0}, + [I(1,20)] = {64,0}, + [I(2,20)] = {64,0}, + [I(3,20)] = {64,0}, + [I(4,20)] = {64,0}, + [I(5,20)] = {64,0}, + [I(6,20)] = {64,0}, + [I(7,20)] = {64,0}, + [I(8,20)] = {64,0}, + [I(9,20)] = {64,0}, + [I(10,20)] = {64,0}, + [I(11,20)] = {64,0}, + [I(12,20)] = {64,0}, + [I(13,20)] = {64,0}, + [I(14,20)] = {64,0}, + [I(15,20)] = {64,0}, + [I(16,20)] = {64,0}, + [I(17,20)] = {64,0}, + [I(18,20)] = {64,0}, + [I(19,20)] = {64,0}, + [I(20,20)] = {64,0}, + [I(21,20)] = {64,0}, + [I(22,20)] = {64,0}, + [I(23,20)] = {64,0}, + [I(24,20)] = {64,0}, + [I(25,20)] = {64,0}, + [I(26,20)] = {64,0}, + [I(27,20)] = {64,0}, + [I(28,20)] = {64,0}, + [I(29,20)] = {64,0}, + [I(30,20)] = {64,0}, + [I(31,20)] = {64,0}, + [I(32,20)] = {64,0}, + [I(33,20)] = {64,0}, + [I(34,20)] = {64,0}, + [I(35,20)] = {64,0}, + [I(36,20)] = {64,0}, + [I(37,20)] = {64,0}, + [I(38,20)] = {64,0}, + [I(39,20)] = {64,0}, + [I(40,20)] = {64,0}, + [I(41,20)] = {64,0}, + [I(42,20)] = {64,0}, + [I(43,20)] = {64,0}, + [I(44,20)] = {64,0}, + [I(45,20)] = {64,0}, + [I(46,20)] = {64,0}, + [I(47,20)] = {64,0}, + [I(48,20)] = {64,0}, + [I(49,20)] = {64,0}, + [I(50,20)] = {64,0}, + [I(51,20)] = {64,0}, + [I(52,20)] = {64,0}, + [I(53,20)] = {64,0}, + [I(54,20)] = {64,0}, + [I(55,20)] = {64,0}, + [I(56,20)] = {64,0}, + [I(57,20)] = {64,0}, + [I(58,20)] = {64,0}, + [I(59,20)] = {64,0}, + [I(60,20)] = {64,0}, + [I(61,20)] = {64,0}, + [I(62,20)] = {64,0}, + [I(63,20)] = {64,0}, + [I(64,20)] = {64,0}, + [I(65,20)] = {64,0}, + [I(66,20)] = {64,0}, + [I(67,20)] = {64,0}, + [I(68,20)] = {64,0}, + [I(69,20)] = {64,0}, + [I(70,20)] = {64,0}, + [I(71,20)] = {64,0}, + [I(72,20)] = {64,0}, + [I(73,20)] = {64,0}, + [I(74,20)] = {64,0}, + [I(75,20)] = {64,0}, + [I(76,20)] = {64,0}, + [I(77,20)] = {64,0}, + [I(78,20)] = {64,0}, + [I(79,20)] = {64,0}, + [I(80,20)] = {64,0}, + [I(81,20)] = {64,0}, + [I(82,20)] = {64,0}, + [I(83,20)] = {64,0}, + [I(84,20)] = {64,0}, + [I(85,20)] = {64,0}, + [I(86,20)] = {64,0}, + [I(87,20)] = {64,0}, + [I(88,20)] = {64,0}, + [I(89,20)] = {64,0}, + [I(90,20)] = {64,0}, + [I(91,20)] = {64,0}, + [I(92,20)] = {64,0}, + [I(93,20)] = {64,0}, + [I(94,20)] = {64,0}, + [I(95,20)] = {64,0}, + [I(96,20)] = {64,0}, + [I(97,20)] = {64,0}, + [I(98,20)] = {64,0}, + [I(99,20)] = {64,0}, + [I(100,20)] = {64,0}, + [I(101,20)] = {64,0}, + [I(102,20)] = {64,0}, + [I(103,20)] = {64,0}, + [I(104,20)] = {64,0}, + [I(105,20)] = {64,0}, + [I(106,20)] = {64,0}, + [I(107,20)] = {64,0}, + [I(108,20)] = {64,0}, + [I(109,20)] = {64,0}, + [I(110,20)] = {64,0}, + [I(111,20)] = {64,0}, + [I(112,20)] = {64,0}, + [I(113,20)] = {64,0}, + [I(114,20)] = {64,0}, + [I(115,20)] = {64,0}, + [I(116,20)] = {64,0}, + [I(117,20)] = {64,0}, + [I(118,20)] = {64,0}, + [I(119,20)] = {64,0}, + [I(120,20)] = {64,0}, + [I(121,20)] = {64,0}, + [I(122,20)] = {64,0}, + [I(123,20)] = {64,0}, + [I(124,20)] = {64,0}, + [I(125,20)] = {64,0}, + [I(126,20)] = {64,0}, + [I(127,20)] = {64,0}, + [I(128,20)] = {64,0}, + [I(129,20)] = {64,0}, + [I(130,20)] = {64,0}, + [I(131,20)] = {64,0}, + [I(132,20)] = {64,0}, + [I(133,20)] = {64,0}, + [I(134,20)] = {64,0}, + [I(135,20)] = {64,0}, + [I(136,20)] = {64,0}, + [I(137,20)] = {64,0}, + [I(138,20)] = {64,0}, + [I(139,20)] = {64,0}, + [I(140,20)] = {64,0}, + [I(141,20)] = {64,0}, + [I(142,20)] = {64,0}, + [I(143,20)] = {64,0}, + [I(144,20)] = {64,0}, + [I(145,20)] = {64,0}, + [I(146,20)] = {64,0}, + [I(147,20)] = {64,0}, + [I(148,20)] = {64,0}, + [I(149,20)] = {64,0}, + [I(150,20)] = {64,0}, + [I(151,20)] = {64,0}, + [I(152,20)] = {64,0}, + [I(153,20)] = {64,0}, + [I(154,20)] = {64,0}, + [I(155,20)] = {64,0}, + [I(156,20)] = {64,0}, + [I(157,20)] = {64,0}, + [I(158,20)] = {64,0}, + [I(159,20)] = {64,0}, + [I(160,20)] = {64,0}, + [I(161,20)] = {64,0}, + [I(162,20)] = {64,0}, + [I(163,20)] = {64,0}, + [I(164,20)] = {64,0}, + [I(165,20)] = {64,0}, + [I(166,20)] = {64,0}, + [I(167,20)] = {64,0}, + [I(168,20)] = {64,0}, + [I(169,20)] = {64,0}, + [I(170,20)] = {64,0}, + [I(171,20)] = {64,0}, + [I(172,20)] = {64,0}, + [I(173,20)] = {64,0}, + [I(174,20)] = {64,0}, + [I(175,20)] = {64,0}, + [I(176,20)] = {64,0}, + [I(177,20)] = {64,0}, + [I(178,20)] = {64,0}, + [I(179,20)] = {64,0}, + [I(180,20)] = {64,0}, + [I(181,20)] = {64,0}, + [I(182,20)] = {64,0}, + [I(183,20)] = {64,0}, + [I(184,20)] = {64,0}, + [I(185,20)] = {64,0}, + [I(186,20)] = {64,0}, + [I(187,20)] = {64,0}, + [I(188,20)] = {64,0}, + [I(189,20)] = {64,0}, + [I(190,20)] = {64,0}, + [I(191,20)] = {64,0}, + [I(192,20)] = {64,0}, + [I(193,20)] = {64,0}, + [I(194,20)] = {64,0}, + [I(195,20)] = {64,0}, + [I(196,20)] = {64,0}, + [I(197,20)] = {64,0}, + [I(198,20)] = {64,0}, + [I(199,20)] = {64,0}, + [I(200,20)] = {64,0}, + [I(201,20)] = {64,0}, + [I(202,20)] = {64,0}, + [I(203,20)] = {64,0}, + [I(204,20)] = {64,0}, + [I(205,20)] = {64,0}, + [I(206,20)] = {64,0}, + [I(207,20)] = {64,0}, + [I(208,20)] = {64,0}, + [I(209,20)] = {64,0}, + [I(210,20)] = {64,0}, + [I(211,20)] = {64,0}, + [I(212,20)] = {64,0}, + [I(213,20)] = {64,0}, + [I(214,20)] = {64,0}, + [I(215,20)] = {64,0}, + [I(216,20)] = {64,0}, + [I(217,20)] = {64,0}, + [I(218,20)] = {64,0}, + [I(219,20)] = {64,0}, + [I(220,20)] = {64,0}, + [I(221,20)] = {64,0}, + [I(222,20)] = {64,0}, + [I(223,20)] = {64,0}, + [I(224,20)] = {64,0}, + [I(225,20)] = {64,0}, + [I(226,20)] = {64,0}, + [I(227,20)] = {64,0}, + [I(228,20)] = {64,0}, + [I(229,20)] = {64,0}, + [I(230,20)] = {64,0}, + [I(231,20)] = {64,0}, + [I(232,20)] = {64,0}, + [I(233,20)] = {64,0}, + [I(234,20)] = {64,0}, + [I(235,20)] = {64,0}, + [I(236,20)] = {64,0}, + [I(237,20)] = {64,0}, + [I(238,20)] = {64,0}, + [I(239,20)] = {64,0}, + [I(240,20)] = {64,0}, + [I(241,20)] = {64,0}, + [I(242,20)] = {64,0}, + [I(243,20)] = {64,0}, + [I(244,20)] = {64,0}, + [I(245,20)] = {64,0}, + [I(246,20)] = {64,0}, + [I(247,20)] = {64,0}, + [I(248,20)] = {64,0}, + [I(249,20)] = {64,0}, + [I(250,20)] = {64,0}, + [I(251,20)] = {64,0}, + [I(252,20)] = {64,0}, + [I(253,20)] = {64,0}, + [I(254,20)] = {64,0}, + [I(255,20)] = {64,0}, + [I(0,21)] = {64,0}, + [I(1,21)] = {64,0}, + [I(2,21)] = {64,0}, + [I(3,21)] = {64,0}, + [I(4,21)] = {64,0}, + [I(5,21)] = {64,0}, + [I(6,21)] = {64,0}, + [I(7,21)] = {64,0}, + [I(8,21)] = {64,0}, + [I(9,21)] = {64,0}, + [I(10,21)] = {64,0}, + [I(11,21)] = {64,0}, + [I(12,21)] = {64,0}, + [I(13,21)] = {64,0}, + [I(14,21)] = {64,0}, + [I(15,21)] = {64,0}, + [I(16,21)] = {64,0}, + [I(17,21)] = {64,0}, + [I(18,21)] = {64,0}, + [I(19,21)] = {64,0}, + [I(20,21)] = {64,0}, + [I(21,21)] = {64,0}, + [I(22,21)] = {64,0}, + [I(23,21)] = {64,0}, + [I(24,21)] = {64,0}, + [I(25,21)] = {64,0}, + [I(26,21)] = {64,0}, + [I(27,21)] = {64,0}, + [I(28,21)] = {64,0}, + [I(29,21)] = {64,0}, + [I(30,21)] = {64,0}, + [I(31,21)] = {64,0}, + [I(32,21)] = {64,0}, + [I(33,21)] = {64,0}, + [I(34,21)] = {64,0}, + [I(35,21)] = {64,0}, + [I(36,21)] = {64,0}, + [I(37,21)] = {64,0}, + [I(38,21)] = {64,0}, + [I(39,21)] = {64,0}, + [I(40,21)] = {64,0}, + [I(41,21)] = {64,0}, + [I(42,21)] = {64,0}, + [I(43,21)] = {64,0}, + [I(44,21)] = {64,0}, + [I(45,21)] = {64,0}, + [I(46,21)] = {64,0}, + [I(47,21)] = {64,0}, + [I(48,21)] = {64,0}, + [I(49,21)] = {64,0}, + [I(50,21)] = {64,0}, + [I(51,21)] = {64,0}, + [I(52,21)] = {64,0}, + [I(53,21)] = {64,0}, + [I(54,21)] = {64,0}, + [I(55,21)] = {64,0}, + [I(56,21)] = {64,0}, + [I(57,21)] = {64,0}, + [I(58,21)] = {64,0}, + [I(59,21)] = {64,0}, + [I(60,21)] = {64,0}, + [I(61,21)] = {64,0}, + [I(62,21)] = {64,0}, + [I(63,21)] = {64,0}, + [I(64,21)] = {64,0}, + [I(65,21)] = {64,0}, + [I(66,21)] = {64,0}, + [I(67,21)] = {64,0}, + [I(68,21)] = {64,0}, + [I(69,21)] = {64,0}, + [I(70,21)] = {64,0}, + [I(71,21)] = {64,0}, + [I(72,21)] = {64,0}, + [I(73,21)] = {64,0}, + [I(74,21)] = {64,0}, + [I(75,21)] = {64,0}, + [I(76,21)] = {64,0}, + [I(77,21)] = {64,0}, + [I(78,21)] = {64,0}, + [I(79,21)] = {64,0}, + [I(80,21)] = {64,0}, + [I(81,21)] = {64,0}, + [I(82,21)] = {64,0}, + [I(83,21)] = {64,0}, + [I(84,21)] = {64,0}, + [I(85,21)] = {64,0}, + [I(86,21)] = {64,0}, + [I(87,21)] = {64,0}, + [I(88,21)] = {64,0}, + [I(89,21)] = {64,0}, + [I(90,21)] = {64,0}, + [I(91,21)] = {64,0}, + [I(92,21)] = {64,0}, + [I(93,21)] = {64,0}, + [I(94,21)] = {64,0}, + [I(95,21)] = {64,0}, + [I(96,21)] = {64,0}, + [I(97,21)] = {64,0}, + [I(98,21)] = {64,0}, + [I(99,21)] = {64,0}, + [I(100,21)] = {64,0}, + [I(101,21)] = {64,0}, + [I(102,21)] = {64,0}, + [I(103,21)] = {64,0}, + [I(104,21)] = {64,0}, + [I(105,21)] = {64,0}, + [I(106,21)] = {64,0}, + [I(107,21)] = {64,0}, + [I(108,21)] = {64,0}, + [I(109,21)] = {64,0}, + [I(110,21)] = {64,0}, + [I(111,21)] = {64,0}, + [I(112,21)] = {64,0}, + [I(113,21)] = {64,0}, + [I(114,21)] = {64,0}, + [I(115,21)] = {64,0}, + [I(116,21)] = {64,0}, + [I(117,21)] = {64,0}, + [I(118,21)] = {64,0}, + [I(119,21)] = {64,0}, + [I(120,21)] = {64,0}, + [I(121,21)] = {64,0}, + [I(122,21)] = {64,0}, + [I(123,21)] = {64,0}, + [I(124,21)] = {64,0}, + [I(125,21)] = {64,0}, + [I(126,21)] = {64,0}, + [I(127,21)] = {64,0}, + [I(128,21)] = {64,0}, + [I(129,21)] = {64,0}, + [I(130,21)] = {64,0}, + [I(131,21)] = {64,0}, + [I(132,21)] = {64,0}, + [I(133,21)] = {64,0}, + [I(134,21)] = {64,0}, + [I(135,21)] = {64,0}, + [I(136,21)] = {64,0}, + [I(137,21)] = {64,0}, + [I(138,21)] = {64,0}, + [I(139,21)] = {64,0}, + [I(140,21)] = {64,0}, + [I(141,21)] = {64,0}, + [I(142,21)] = {64,0}, + [I(143,21)] = {64,0}, + [I(144,21)] = {64,0}, + [I(145,21)] = {64,0}, + [I(146,21)] = {64,0}, + [I(147,21)] = {64,0}, + [I(148,21)] = {64,0}, + [I(149,21)] = {64,0}, + [I(150,21)] = {64,0}, + [I(151,21)] = {64,0}, + [I(152,21)] = {64,0}, + [I(153,21)] = {64,0}, + [I(154,21)] = {64,0}, + [I(155,21)] = {64,0}, + [I(156,21)] = {64,0}, + [I(157,21)] = {64,0}, + [I(158,21)] = {64,0}, + [I(159,21)] = {64,0}, + [I(160,21)] = {64,0}, + [I(161,21)] = {64,0}, + [I(162,21)] = {64,0}, + [I(163,21)] = {64,0}, + [I(164,21)] = {64,0}, + [I(165,21)] = {64,0}, + [I(166,21)] = {64,0}, + [I(167,21)] = {64,0}, + [I(168,21)] = {64,0}, + [I(169,21)] = {64,0}, + [I(170,21)] = {64,0}, + [I(171,21)] = {64,0}, + [I(172,21)] = {64,0}, + [I(173,21)] = {64,0}, + [I(174,21)] = {64,0}, + [I(175,21)] = {64,0}, + [I(176,21)] = {64,0}, + [I(177,21)] = {64,0}, + [I(178,21)] = {64,0}, + [I(179,21)] = {64,0}, + [I(180,21)] = {64,0}, + [I(181,21)] = {64,0}, + [I(182,21)] = {64,0}, + [I(183,21)] = {64,0}, + [I(184,21)] = {64,0}, + [I(185,21)] = {64,0}, + [I(186,21)] = {64,0}, + [I(187,21)] = {64,0}, + [I(188,21)] = {64,0}, + [I(189,21)] = {64,0}, + [I(190,21)] = {64,0}, + [I(191,21)] = {64,0}, + [I(192,21)] = {64,0}, + [I(193,21)] = {64,0}, + [I(194,21)] = {64,0}, + [I(195,21)] = {64,0}, + [I(196,21)] = {64,0}, + [I(197,21)] = {64,0}, + [I(198,21)] = {64,0}, + [I(199,21)] = {64,0}, + [I(200,21)] = {64,0}, + [I(201,21)] = {64,0}, + [I(202,21)] = {64,0}, + [I(203,21)] = {64,0}, + [I(204,21)] = {64,0}, + [I(205,21)] = {64,0}, + [I(206,21)] = {64,0}, + [I(207,21)] = {64,0}, + [I(208,21)] = {64,0}, + [I(209,21)] = {64,0}, + [I(210,21)] = {64,0}, + [I(211,21)] = {64,0}, + [I(212,21)] = {64,0}, + [I(213,21)] = {64,0}, + [I(214,21)] = {64,0}, + [I(215,21)] = {64,0}, + [I(216,21)] = {64,0}, + [I(217,21)] = {64,0}, + [I(218,21)] = {64,0}, + [I(219,21)] = {64,0}, + [I(220,21)] = {64,0}, + [I(221,21)] = {64,0}, + [I(222,21)] = {64,0}, + [I(223,21)] = {64,0}, + [I(224,21)] = {64,0}, + [I(225,21)] = {64,0}, + [I(226,21)] = {64,0}, + [I(227,21)] = {64,0}, + [I(228,21)] = {64,0}, + [I(229,21)] = {64,0}, + [I(230,21)] = {64,0}, + [I(231,21)] = {64,0}, + [I(232,21)] = {64,0}, + [I(233,21)] = {64,0}, + [I(234,21)] = {64,0}, + [I(235,21)] = {64,0}, + [I(236,21)] = {64,0}, + [I(237,21)] = {64,0}, + [I(238,21)] = {64,0}, + [I(239,21)] = {64,0}, + [I(240,21)] = {64,0}, + [I(241,21)] = {64,0}, + [I(242,21)] = {64,0}, + [I(243,21)] = {64,0}, + [I(244,21)] = {64,0}, + [I(245,21)] = {64,0}, + [I(246,21)] = {64,0}, + [I(247,21)] = {64,0}, + [I(248,21)] = {64,0}, + [I(249,21)] = {64,0}, + [I(250,21)] = {64,0}, + [I(251,21)] = {64,0}, + [I(252,21)] = {64,0}, + [I(253,21)] = {64,0}, + [I(254,21)] = {64,0}, + [I(255,21)] = {64,0}, + [I(0,22)] = {64,0}, + [I(1,22)] = {64,0}, + [I(2,22)] = {64,0}, + [I(3,22)] = {64,0}, + [I(4,22)] = {64,0}, + [I(5,22)] = {64,0}, + [I(6,22)] = {64,0}, + [I(7,22)] = {64,0}, + [I(8,22)] = {64,0}, + [I(9,22)] = {64,0}, + [I(10,22)] = {64,0}, + [I(11,22)] = {64,0}, + [I(12,22)] = {64,0}, + [I(13,22)] = {64,0}, + [I(14,22)] = {64,0}, + [I(15,22)] = {64,0}, + [I(16,22)] = {64,0}, + [I(17,22)] = {64,0}, + [I(18,22)] = {64,0}, + [I(19,22)] = {64,0}, + [I(20,22)] = {64,0}, + [I(21,22)] = {64,0}, + [I(22,22)] = {64,0}, + [I(23,22)] = {64,0}, + [I(24,22)] = {64,0}, + [I(25,22)] = {64,0}, + [I(26,22)] = {64,0}, + [I(27,22)] = {64,0}, + [I(28,22)] = {64,0}, + [I(29,22)] = {64,0}, + [I(30,22)] = {64,0}, + [I(31,22)] = {64,0}, + [I(32,22)] = {64,0}, + [I(33,22)] = {64,0}, + [I(34,22)] = {64,0}, + [I(35,22)] = {64,0}, + [I(36,22)] = {64,0}, + [I(37,22)] = {64,0}, + [I(38,22)] = {64,0}, + [I(39,22)] = {64,0}, + [I(40,22)] = {64,0}, + [I(41,22)] = {64,0}, + [I(42,22)] = {64,0}, + [I(43,22)] = {64,0}, + [I(44,22)] = {64,0}, + [I(45,22)] = {64,0}, + [I(46,22)] = {64,0}, + [I(47,22)] = {64,0}, + [I(48,22)] = {64,0}, + [I(49,22)] = {64,0}, + [I(50,22)] = {64,0}, + [I(51,22)] = {64,0}, + [I(52,22)] = {64,0}, + [I(53,22)] = {64,0}, + [I(54,22)] = {64,0}, + [I(55,22)] = {64,0}, + [I(56,22)] = {64,0}, + [I(57,22)] = {64,0}, + [I(58,22)] = {64,0}, + [I(59,22)] = {64,0}, + [I(60,22)] = {64,0}, + [I(61,22)] = {64,0}, + [I(62,22)] = {64,0}, + [I(63,22)] = {64,0}, + [I(64,22)] = {64,0}, + [I(65,22)] = {64,0}, + [I(66,22)] = {64,0}, + [I(67,22)] = {64,0}, + [I(68,22)] = {64,0}, + [I(69,22)] = {64,0}, + [I(70,22)] = {64,0}, + [I(71,22)] = {64,0}, + [I(72,22)] = {64,0}, + [I(73,22)] = {64,0}, + [I(74,22)] = {64,0}, + [I(75,22)] = {64,0}, + [I(76,22)] = {64,0}, + [I(77,22)] = {64,0}, + [I(78,22)] = {64,0}, + [I(79,22)] = {64,0}, + [I(80,22)] = {64,0}, + [I(81,22)] = {64,0}, + [I(82,22)] = {64,0}, + [I(83,22)] = {64,0}, + [I(84,22)] = {64,0}, + [I(85,22)] = {64,0}, + [I(86,22)] = {64,0}, + [I(87,22)] = {64,0}, + [I(88,22)] = {64,0}, + [I(89,22)] = {64,0}, + [I(90,22)] = {64,0}, + [I(91,22)] = {64,0}, + [I(92,22)] = {64,0}, + [I(93,22)] = {64,0}, + [I(94,22)] = {64,0}, + [I(95,22)] = {64,0}, + [I(96,22)] = {64,0}, + [I(97,22)] = {64,0}, + [I(98,22)] = {64,0}, + [I(99,22)] = {64,0}, + [I(100,22)] = {64,0}, + [I(101,22)] = {64,0}, + [I(102,22)] = {64,0}, + [I(103,22)] = {64,0}, + [I(104,22)] = {64,0}, + [I(105,22)] = {64,0}, + [I(106,22)] = {64,0}, + [I(107,22)] = {64,0}, + [I(108,22)] = {64,0}, + [I(109,22)] = {64,0}, + [I(110,22)] = {64,0}, + [I(111,22)] = {64,0}, + [I(112,22)] = {64,0}, + [I(113,22)] = {64,0}, + [I(114,22)] = {64,0}, + [I(115,22)] = {64,0}, + [I(116,22)] = {64,0}, + [I(117,22)] = {64,0}, + [I(118,22)] = {64,0}, + [I(119,22)] = {64,0}, + [I(120,22)] = {64,0}, + [I(121,22)] = {64,0}, + [I(122,22)] = {64,0}, + [I(123,22)] = {64,0}, + [I(124,22)] = {64,0}, + [I(125,22)] = {64,0}, + [I(126,22)] = {64,0}, + [I(127,22)] = {64,0}, + [I(128,22)] = {64,0}, + [I(129,22)] = {64,0}, + [I(130,22)] = {64,0}, + [I(131,22)] = {64,0}, + [I(132,22)] = {64,0}, + [I(133,22)] = {64,0}, + [I(134,22)] = {64,0}, + [I(135,22)] = {64,0}, + [I(136,22)] = {64,0}, + [I(137,22)] = {64,0}, + [I(138,22)] = {64,0}, + [I(139,22)] = {64,0}, + [I(140,22)] = {64,0}, + [I(141,22)] = {64,0}, + [I(142,22)] = {64,0}, + [I(143,22)] = {64,0}, + [I(144,22)] = {64,0}, + [I(145,22)] = {64,0}, + [I(146,22)] = {64,0}, + [I(147,22)] = {64,0}, + [I(148,22)] = {64,0}, + [I(149,22)] = {64,0}, + [I(150,22)] = {64,0}, + [I(151,22)] = {64,0}, + [I(152,22)] = {64,0}, + [I(153,22)] = {64,0}, + [I(154,22)] = {64,0}, + [I(155,22)] = {64,0}, + [I(156,22)] = {64,0}, + [I(157,22)] = {64,0}, + [I(158,22)] = {64,0}, + [I(159,22)] = {64,0}, + [I(160,22)] = {64,0}, + [I(161,22)] = {64,0}, + [I(162,22)] = {64,0}, + [I(163,22)] = {64,0}, + [I(164,22)] = {64,0}, + [I(165,22)] = {64,0}, + [I(166,22)] = {64,0}, + [I(167,22)] = {64,0}, + [I(168,22)] = {64,0}, + [I(169,22)] = {64,0}, + [I(170,22)] = {64,0}, + [I(171,22)] = {64,0}, + [I(172,22)] = {64,0}, + [I(173,22)] = {64,0}, + [I(174,22)] = {64,0}, + [I(175,22)] = {64,0}, + [I(176,22)] = {64,0}, + [I(177,22)] = {64,0}, + [I(178,22)] = {64,0}, + [I(179,22)] = {64,0}, + [I(180,22)] = {64,0}, + [I(181,22)] = {64,0}, + [I(182,22)] = {64,0}, + [I(183,22)] = {64,0}, + [I(184,22)] = {64,0}, + [I(185,22)] = {64,0}, + [I(186,22)] = {64,0}, + [I(187,22)] = {64,0}, + [I(188,22)] = {64,0}, + [I(189,22)] = {64,0}, + [I(190,22)] = {64,0}, + [I(191,22)] = {64,0}, + [I(192,22)] = {64,0}, + [I(193,22)] = {64,0}, + [I(194,22)] = {64,0}, + [I(195,22)] = {64,0}, + [I(196,22)] = {64,0}, + [I(197,22)] = {64,0}, + [I(198,22)] = {64,0}, + [I(199,22)] = {64,0}, + [I(200,22)] = {64,0}, + [I(201,22)] = {64,0}, + [I(202,22)] = {64,0}, + [I(203,22)] = {64,0}, + [I(204,22)] = {64,0}, + [I(205,22)] = {64,0}, + [I(206,22)] = {64,0}, + [I(207,22)] = {64,0}, + [I(208,22)] = {64,0}, + [I(209,22)] = {64,0}, + [I(210,22)] = {64,0}, + [I(211,22)] = {64,0}, + [I(212,22)] = {64,0}, + [I(213,22)] = {64,0}, + [I(214,22)] = {64,0}, + [I(215,22)] = {64,0}, + [I(216,22)] = {64,0}, + [I(217,22)] = {64,0}, + [I(218,22)] = {64,0}, + [I(219,22)] = {64,0}, + [I(220,22)] = {64,0}, + [I(221,22)] = {64,0}, + [I(222,22)] = {64,0}, + [I(223,22)] = {64,0}, + [I(224,22)] = {64,0}, + [I(225,22)] = {64,0}, + [I(226,22)] = {64,0}, + [I(227,22)] = {64,0}, + [I(228,22)] = {64,0}, + [I(229,22)] = {64,0}, + [I(230,22)] = {64,0}, + [I(231,22)] = {64,0}, + [I(232,22)] = {64,0}, + [I(233,22)] = {64,0}, + [I(234,22)] = {64,0}, + [I(235,22)] = {64,0}, + [I(236,22)] = {64,0}, + [I(237,22)] = {64,0}, + [I(238,22)] = {64,0}, + [I(239,22)] = {64,0}, + [I(240,22)] = {64,0}, + [I(241,22)] = {64,0}, + [I(242,22)] = {64,0}, + [I(243,22)] = {64,0}, + [I(244,22)] = {64,0}, + [I(245,22)] = {64,0}, + [I(246,22)] = {64,0}, + [I(247,22)] = {64,0}, + [I(248,22)] = {64,0}, + [I(249,22)] = {64,0}, + [I(250,22)] = {64,0}, + [I(251,22)] = {64,0}, + [I(252,22)] = {64,0}, + [I(253,22)] = {64,0}, + [I(254,22)] = {64,0}, + [I(255,22)] = {64,0}, + [I(0,23)] = {64,0}, + [I(1,23)] = {64,0}, + [I(2,23)] = {64,0}, + [I(3,23)] = {64,0}, + [I(4,23)] = {64,0}, + [I(5,23)] = {64,0}, + [I(6,23)] = {64,0}, + [I(7,23)] = {64,0}, + [I(8,23)] = {64,0}, + [I(9,23)] = {64,0}, + [I(10,23)] = {64,0}, + [I(11,23)] = {64,0}, + [I(12,23)] = {64,0}, + [I(13,23)] = {64,0}, + [I(14,23)] = {64,0}, + [I(15,23)] = {64,0}, + [I(16,23)] = {64,0}, + [I(17,23)] = {64,0}, + [I(18,23)] = {64,0}, + [I(19,23)] = {64,0}, + [I(20,23)] = {64,0}, + [I(21,23)] = {64,0}, + [I(22,23)] = {64,0}, + [I(23,23)] = {64,0}, + [I(24,23)] = {64,0}, + [I(25,23)] = {64,0}, + [I(26,23)] = {64,0}, + [I(27,23)] = {64,0}, + [I(28,23)] = {64,0}, + [I(29,23)] = {64,0}, + [I(30,23)] = {64,0}, + [I(31,23)] = {64,0}, + [I(32,23)] = {64,0}, + [I(33,23)] = {64,0}, + [I(34,23)] = {64,0}, + [I(35,23)] = {64,0}, + [I(36,23)] = {64,0}, + [I(37,23)] = {64,0}, + [I(38,23)] = {64,0}, + [I(39,23)] = {64,0}, + [I(40,23)] = {64,0}, + [I(41,23)] = {64,0}, + [I(42,23)] = {64,0}, + [I(43,23)] = {64,0}, + [I(44,23)] = {64,0}, + [I(45,23)] = {64,0}, + [I(46,23)] = {64,0}, + [I(47,23)] = {64,0}, + [I(48,23)] = {64,0}, + [I(49,23)] = {64,0}, + [I(50,23)] = {64,0}, + [I(51,23)] = {64,0}, + [I(52,23)] = {64,0}, + [I(53,23)] = {64,0}, + [I(54,23)] = {64,0}, + [I(55,23)] = {64,0}, + [I(56,23)] = {64,0}, + [I(57,23)] = {64,0}, + [I(58,23)] = {64,0}, + [I(59,23)] = {64,0}, + [I(60,23)] = {64,0}, + [I(61,23)] = {64,0}, + [I(62,23)] = {64,0}, + [I(63,23)] = {64,0}, + [I(64,23)] = {64,0}, + [I(65,23)] = {64,0}, + [I(66,23)] = {64,0}, + [I(67,23)] = {64,0}, + [I(68,23)] = {64,0}, + [I(69,23)] = {64,0}, + [I(70,23)] = {64,0}, + [I(71,23)] = {64,0}, + [I(72,23)] = {64,0}, + [I(73,23)] = {64,0}, + [I(74,23)] = {64,0}, + [I(75,23)] = {64,0}, + [I(76,23)] = {64,0}, + [I(77,23)] = {64,0}, + [I(78,23)] = {64,0}, + [I(79,23)] = {64,0}, + [I(80,23)] = {64,0}, + [I(81,23)] = {64,0}, + [I(82,23)] = {64,0}, + [I(83,23)] = {64,0}, + [I(84,23)] = {64,0}, + [I(85,23)] = {64,0}, + [I(86,23)] = {64,0}, + [I(87,23)] = {64,0}, + [I(88,23)] = {64,0}, + [I(89,23)] = {64,0}, + [I(90,23)] = {64,0}, + [I(91,23)] = {64,0}, + [I(92,23)] = {64,0}, + [I(93,23)] = {64,0}, + [I(94,23)] = {64,0}, + [I(95,23)] = {64,0}, + [I(96,23)] = {64,0}, + [I(97,23)] = {64,0}, + [I(98,23)] = {64,0}, + [I(99,23)] = {64,0}, + [I(100,23)] = {64,0}, + [I(101,23)] = {64,0}, + [I(102,23)] = {64,0}, + [I(103,23)] = {64,0}, + [I(104,23)] = {64,0}, + [I(105,23)] = {64,0}, + [I(106,23)] = {64,0}, + [I(107,23)] = {64,0}, + [I(108,23)] = {64,0}, + [I(109,23)] = {64,0}, + [I(110,23)] = {64,0}, + [I(111,23)] = {64,0}, + [I(112,23)] = {64,0}, + [I(113,23)] = {64,0}, + [I(114,23)] = {64,0}, + [I(115,23)] = {64,0}, + [I(116,23)] = {64,0}, + [I(117,23)] = {64,0}, + [I(118,23)] = {64,0}, + [I(119,23)] = {64,0}, + [I(120,23)] = {64,0}, + [I(121,23)] = {64,0}, + [I(122,23)] = {64,0}, + [I(123,23)] = {64,0}, + [I(124,23)] = {64,0}, + [I(125,23)] = {64,0}, + [I(126,23)] = {64,0}, + [I(127,23)] = {64,0}, + [I(128,23)] = {64,0}, + [I(129,23)] = {64,0}, + [I(130,23)] = {64,0}, + [I(131,23)] = {64,0}, + [I(132,23)] = {64,0}, + [I(133,23)] = {64,0}, + [I(134,23)] = {64,0}, + [I(135,23)] = {64,0}, + [I(136,23)] = {64,0}, + [I(137,23)] = {64,0}, + [I(138,23)] = {64,0}, + [I(139,23)] = {64,0}, + [I(140,23)] = {64,0}, + [I(141,23)] = {64,0}, + [I(142,23)] = {64,0}, + [I(143,23)] = {64,0}, + [I(144,23)] = {64,0}, + [I(145,23)] = {64,0}, + [I(146,23)] = {64,0}, + [I(147,23)] = {64,0}, + [I(148,23)] = {64,0}, + [I(149,23)] = {64,0}, + [I(150,23)] = {64,0}, + [I(151,23)] = {64,0}, + [I(152,23)] = {64,0}, + [I(153,23)] = {64,0}, + [I(154,23)] = {64,0}, + [I(155,23)] = {64,0}, + [I(156,23)] = {64,0}, + [I(157,23)] = {64,0}, + [I(158,23)] = {64,0}, + [I(159,23)] = {64,0}, + [I(160,23)] = {64,0}, + [I(161,23)] = {64,0}, + [I(162,23)] = {64,0}, + [I(163,23)] = {64,0}, + [I(164,23)] = {64,0}, + [I(165,23)] = {64,0}, + [I(166,23)] = {64,0}, + [I(167,23)] = {64,0}, + [I(168,23)] = {64,0}, + [I(169,23)] = {64,0}, + [I(170,23)] = {64,0}, + [I(171,23)] = {64,0}, + [I(172,23)] = {64,0}, + [I(173,23)] = {64,0}, + [I(174,23)] = {64,0}, + [I(175,23)] = {64,0}, + [I(176,23)] = {64,0}, + [I(177,23)] = {64,0}, + [I(178,23)] = {64,0}, + [I(179,23)] = {64,0}, + [I(180,23)] = {64,0}, + [I(181,23)] = {64,0}, + [I(182,23)] = {64,0}, + [I(183,23)] = {64,0}, + [I(184,23)] = {64,0}, + [I(185,23)] = {64,0}, + [I(186,23)] = {64,0}, + [I(187,23)] = {64,0}, + [I(188,23)] = {64,0}, + [I(189,23)] = {64,0}, + [I(190,23)] = {64,0}, + [I(191,23)] = {64,0}, + [I(192,23)] = {64,0}, + [I(193,23)] = {64,0}, + [I(194,23)] = {64,0}, + [I(195,23)] = {64,0}, + [I(196,23)] = {64,0}, + [I(197,23)] = {64,0}, + [I(198,23)] = {64,0}, + [I(199,23)] = {64,0}, + [I(200,23)] = {64,0}, + [I(201,23)] = {64,0}, + [I(202,23)] = {64,0}, + [I(203,23)] = {64,0}, + [I(204,23)] = {64,0}, + [I(205,23)] = {64,0}, + [I(206,23)] = {64,0}, + [I(207,23)] = {64,0}, + [I(208,23)] = {64,0}, + [I(209,23)] = {64,0}, + [I(210,23)] = {64,0}, + [I(211,23)] = {64,0}, + [I(212,23)] = {64,0}, + [I(213,23)] = {64,0}, + [I(214,23)] = {64,0}, + [I(215,23)] = {64,0}, + [I(216,23)] = {64,0}, + [I(217,23)] = {64,0}, + [I(218,23)] = {64,0}, + [I(219,23)] = {64,0}, + [I(220,23)] = {64,0}, + [I(221,23)] = {64,0}, + [I(222,23)] = {64,0}, + [I(223,23)] = {64,0}, + [I(224,23)] = {64,0}, + [I(225,23)] = {64,0}, + [I(226,23)] = {64,0}, + [I(227,23)] = {64,0}, + [I(228,23)] = {64,0}, + [I(229,23)] = {64,0}, + [I(230,23)] = {64,0}, + [I(231,23)] = {64,0}, + [I(232,23)] = {64,0}, + [I(233,23)] = {64,0}, + [I(234,23)] = {64,0}, + [I(235,23)] = {64,0}, + [I(236,23)] = {64,0}, + [I(237,23)] = {64,0}, + [I(238,23)] = {64,0}, + [I(239,23)] = {64,0}, + [I(240,23)] = {64,0}, + [I(241,23)] = {64,0}, + [I(242,23)] = {64,0}, + [I(243,23)] = {64,0}, + [I(244,23)] = {64,0}, + [I(245,23)] = {64,0}, + [I(246,23)] = {64,0}, + [I(247,23)] = {64,0}, + [I(248,23)] = {64,0}, + [I(249,23)] = {64,0}, + [I(250,23)] = {64,0}, + [I(251,23)] = {64,0}, + [I(252,23)] = {64,0}, + [I(253,23)] = {64,0}, + [I(254,23)] = {64,0}, + [I(255,23)] = {64,0}, + [I(0,24)] = {64,0}, + [I(1,24)] = {64,0}, + [I(2,24)] = {64,0}, + [I(3,24)] = {64,0}, + [I(4,24)] = {64,0}, + [I(5,24)] = {64,0}, + [I(6,24)] = {64,0}, + [I(7,24)] = {64,0}, + [I(8,24)] = {64,0}, + [I(9,24)] = {64,0}, + [I(10,24)] = {64,0}, + [I(11,24)] = {64,0}, + [I(12,24)] = {64,0}, + [I(13,24)] = {64,0}, + [I(14,24)] = {64,0}, + [I(15,24)] = {64,0}, + [I(16,24)] = {64,0}, + [I(17,24)] = {64,0}, + [I(18,24)] = {64,0}, + [I(19,24)] = {64,0}, + [I(20,24)] = {64,0}, + [I(21,24)] = {64,0}, + [I(22,24)] = {64,0}, + [I(23,24)] = {64,0}, + [I(24,24)] = {64,0}, + [I(25,24)] = {64,0}, + [I(26,24)] = {64,0}, + [I(27,24)] = {64,0}, + [I(28,24)] = {64,0}, + [I(29,24)] = {64,0}, + [I(30,24)] = {64,0}, + [I(31,24)] = {64,0}, + [I(32,24)] = {64,0}, + [I(33,24)] = {64,0}, + [I(34,24)] = {64,0}, + [I(35,24)] = {64,0}, + [I(36,24)] = {64,0}, + [I(37,24)] = {64,0}, + [I(38,24)] = {64,0}, + [I(39,24)] = {64,0}, + [I(40,24)] = {64,0}, + [I(41,24)] = {64,0}, + [I(42,24)] = {64,0}, + [I(43,24)] = {64,0}, + [I(44,24)] = {64,0}, + [I(45,24)] = {64,0}, + [I(46,24)] = {64,0}, + [I(47,24)] = {64,0}, + [I(48,24)] = {64,0}, + [I(49,24)] = {64,0}, + [I(50,24)] = {64,0}, + [I(51,24)] = {64,0}, + [I(52,24)] = {64,0}, + [I(53,24)] = {64,0}, + [I(54,24)] = {64,0}, + [I(55,24)] = {64,0}, + [I(56,24)] = {64,0}, + [I(57,24)] = {64,0}, + [I(58,24)] = {64,0}, + [I(59,24)] = {64,0}, + [I(60,24)] = {64,0}, + [I(61,24)] = {64,0}, + [I(62,24)] = {64,0}, + [I(63,24)] = {64,0}, + [I(64,24)] = {64,0}, + [I(65,24)] = {64,0}, + [I(66,24)] = {64,0}, + [I(67,24)] = {64,0}, + [I(68,24)] = {64,0}, + [I(69,24)] = {64,0}, + [I(70,24)] = {64,0}, + [I(71,24)] = {64,0}, + [I(72,24)] = {64,0}, + [I(73,24)] = {64,0}, + [I(74,24)] = {64,0}, + [I(75,24)] = {64,0}, + [I(76,24)] = {64,0}, + [I(77,24)] = {64,0}, + [I(78,24)] = {64,0}, + [I(79,24)] = {64,0}, + [I(80,24)] = {64,0}, + [I(81,24)] = {64,0}, + [I(82,24)] = {64,0}, + [I(83,24)] = {64,0}, + [I(84,24)] = {64,0}, + [I(85,24)] = {64,0}, + [I(86,24)] = {64,0}, + [I(87,24)] = {64,0}, + [I(88,24)] = {64,0}, + [I(89,24)] = {64,0}, + [I(90,24)] = {64,0}, + [I(91,24)] = {64,0}, + [I(92,24)] = {64,0}, + [I(93,24)] = {64,0}, + [I(94,24)] = {64,0}, + [I(95,24)] = {64,0}, + [I(96,24)] = {64,0}, + [I(97,24)] = {64,0}, + [I(98,24)] = {64,0}, + [I(99,24)] = {64,0}, + [I(100,24)] = {64,0}, + [I(101,24)] = {64,0}, + [I(102,24)] = {64,0}, + [I(103,24)] = {64,0}, + [I(104,24)] = {64,0}, + [I(105,24)] = {64,0}, + [I(106,24)] = {64,0}, + [I(107,24)] = {64,0}, + [I(108,24)] = {64,0}, + [I(109,24)] = {64,0}, + [I(110,24)] = {64,0}, + [I(111,24)] = {64,0}, + [I(112,24)] = {64,0}, + [I(113,24)] = {64,0}, + [I(114,24)] = {64,0}, + [I(115,24)] = {64,0}, + [I(116,24)] = {64,0}, + [I(117,24)] = {64,0}, + [I(118,24)] = {64,0}, + [I(119,24)] = {64,0}, + [I(120,24)] = {64,0}, + [I(121,24)] = {64,0}, + [I(122,24)] = {64,0}, + [I(123,24)] = {64,0}, + [I(124,24)] = {64,0}, + [I(125,24)] = {64,0}, + [I(126,24)] = {64,0}, + [I(127,24)] = {64,0}, + [I(128,24)] = {64,0}, + [I(129,24)] = {64,0}, + [I(130,24)] = {64,0}, + [I(131,24)] = {64,0}, + [I(132,24)] = {64,0}, + [I(133,24)] = {64,0}, + [I(134,24)] = {64,0}, + [I(135,24)] = {64,0}, + [I(136,24)] = {64,0}, + [I(137,24)] = {64,0}, + [I(138,24)] = {64,0}, + [I(139,24)] = {64,0}, + [I(140,24)] = {64,0}, + [I(141,24)] = {64,0}, + [I(142,24)] = {64,0}, + [I(143,24)] = {64,0}, + [I(144,24)] = {64,0}, + [I(145,24)] = {64,0}, + [I(146,24)] = {64,0}, + [I(147,24)] = {64,0}, + [I(148,24)] = {64,0}, + [I(149,24)] = {64,0}, + [I(150,24)] = {64,0}, + [I(151,24)] = {64,0}, + [I(152,24)] = {64,0}, + [I(153,24)] = {64,0}, + [I(154,24)] = {64,0}, + [I(155,24)] = {64,0}, + [I(156,24)] = {64,0}, + [I(157,24)] = {64,0}, + [I(158,24)] = {64,0}, + [I(159,24)] = {64,0}, + [I(160,24)] = {64,0}, + [I(161,24)] = {64,0}, + [I(162,24)] = {64,0}, + [I(163,24)] = {64,0}, + [I(164,24)] = {64,0}, + [I(165,24)] = {64,0}, + [I(166,24)] = {64,0}, + [I(167,24)] = {64,0}, + [I(168,24)] = {64,0}, + [I(169,24)] = {64,0}, + [I(170,24)] = {64,0}, + [I(171,24)] = {64,0}, + [I(172,24)] = {64,0}, + [I(173,24)] = {64,0}, + [I(174,24)] = {64,0}, + [I(175,24)] = {64,0}, + [I(176,24)] = {64,0}, + [I(177,24)] = {64,0}, + [I(178,24)] = {64,0}, + [I(179,24)] = {64,0}, + [I(180,24)] = {64,0}, + [I(181,24)] = {64,0}, + [I(182,24)] = {64,0}, + [I(183,24)] = {64,0}, + [I(184,24)] = {64,0}, + [I(185,24)] = {64,0}, + [I(186,24)] = {64,0}, + [I(187,24)] = {64,0}, + [I(188,24)] = {64,0}, + [I(189,24)] = {64,0}, + [I(190,24)] = {64,0}, + [I(191,24)] = {64,0}, + [I(192,24)] = {64,0}, + [I(193,24)] = {64,0}, + [I(194,24)] = {64,0}, + [I(195,24)] = {64,0}, + [I(196,24)] = {64,0}, + [I(197,24)] = {64,0}, + [I(198,24)] = {64,0}, + [I(199,24)] = {64,0}, + [I(200,24)] = {64,0}, + [I(201,24)] = {64,0}, + [I(202,24)] = {64,0}, + [I(203,24)] = {64,0}, + [I(204,24)] = {64,0}, + [I(205,24)] = {64,0}, + [I(206,24)] = {64,0}, + [I(207,24)] = {64,0}, + [I(208,24)] = {64,0}, + [I(209,24)] = {64,0}, + [I(210,24)] = {64,0}, + [I(211,24)] = {64,0}, + [I(212,24)] = {64,0}, + [I(213,24)] = {64,0}, + [I(214,24)] = {64,0}, + [I(215,24)] = {64,0}, + [I(216,24)] = {64,0}, + [I(217,24)] = {64,0}, + [I(218,24)] = {64,0}, + [I(219,24)] = {64,0}, + [I(220,24)] = {64,0}, + [I(221,24)] = {64,0}, + [I(222,24)] = {64,0}, + [I(223,24)] = {64,0}, + [I(224,24)] = {64,0}, + [I(225,24)] = {64,0}, + [I(226,24)] = {64,0}, + [I(227,24)] = {64,0}, + [I(228,24)] = {64,0}, + [I(229,24)] = {64,0}, + [I(230,24)] = {64,0}, + [I(231,24)] = {64,0}, + [I(232,24)] = {64,0}, + [I(233,24)] = {64,0}, + [I(234,24)] = {64,0}, + [I(235,24)] = {64,0}, + [I(236,24)] = {64,0}, + [I(237,24)] = {64,0}, + [I(238,24)] = {64,0}, + [I(239,24)] = {64,0}, + [I(240,24)] = {64,0}, + [I(241,24)] = {64,0}, + [I(242,24)] = {64,0}, + [I(243,24)] = {64,0}, + [I(244,24)] = {64,0}, + [I(245,24)] = {64,0}, + [I(246,24)] = {64,0}, + [I(247,24)] = {64,0}, + [I(248,24)] = {64,0}, + [I(249,24)] = {64,0}, + [I(250,24)] = {64,0}, + [I(251,24)] = {64,0}, + [I(252,24)] = {64,0}, + [I(253,24)] = {64,0}, + [I(254,24)] = {64,0}, + [I(255,24)] = {64,0}, + [I(0,25)] = {64,0}, + [I(1,25)] = {64,0}, + [I(2,25)] = {64,0}, + [I(3,25)] = {64,0}, + [I(4,25)] = {64,0}, + [I(5,25)] = {64,0}, + [I(6,25)] = {64,0}, + [I(7,25)] = {64,0}, + [I(8,25)] = {64,0}, + [I(9,25)] = {64,0}, + [I(10,25)] = {64,0}, + [I(11,25)] = {64,0}, + [I(12,25)] = {64,0}, + [I(13,25)] = {64,0}, + [I(14,25)] = {64,0}, + [I(15,25)] = {64,0}, + [I(16,25)] = {64,0}, + [I(17,25)] = {64,0}, + [I(18,25)] = {64,0}, + [I(19,25)] = {64,0}, + [I(20,25)] = {64,0}, + [I(21,25)] = {64,0}, + [I(22,25)] = {64,0}, + [I(23,25)] = {64,0}, + [I(24,25)] = {64,0}, + [I(25,25)] = {64,0}, + [I(26,25)] = {64,0}, + [I(27,25)] = {64,0}, + [I(28,25)] = {64,0}, + [I(29,25)] = {64,0}, + [I(30,25)] = {64,0}, + [I(31,25)] = {64,0}, + [I(32,25)] = {64,0}, + [I(33,25)] = {64,0}, + [I(34,25)] = {64,0}, + [I(35,25)] = {64,0}, + [I(36,25)] = {64,0}, + [I(37,25)] = {64,0}, + [I(38,25)] = {64,0}, + [I(39,25)] = {64,0}, + [I(40,25)] = {64,0}, + [I(41,25)] = {64,0}, + [I(42,25)] = {64,0}, + [I(43,25)] = {64,0}, + [I(44,25)] = {64,0}, + [I(45,25)] = {64,0}, + [I(46,25)] = {64,0}, + [I(47,25)] = {64,0}, + [I(48,25)] = {64,0}, + [I(49,25)] = {64,0}, + [I(50,25)] = {64,0}, + [I(51,25)] = {64,0}, + [I(52,25)] = {64,0}, + [I(53,25)] = {64,0}, + [I(54,25)] = {64,0}, + [I(55,25)] = {64,0}, + [I(56,25)] = {64,0}, + [I(57,25)] = {64,0}, + [I(58,25)] = {64,0}, + [I(59,25)] = {64,0}, + [I(60,25)] = {64,0}, + [I(61,25)] = {64,0}, + [I(62,25)] = {64,0}, + [I(63,25)] = {64,0}, + [I(64,25)] = {64,0}, + [I(65,25)] = {64,0}, + [I(66,25)] = {64,0}, + [I(67,25)] = {64,0}, + [I(68,25)] = {64,0}, + [I(69,25)] = {64,0}, + [I(70,25)] = {64,0}, + [I(71,25)] = {64,0}, + [I(72,25)] = {64,0}, + [I(73,25)] = {64,0}, + [I(74,25)] = {64,0}, + [I(75,25)] = {64,0}, + [I(76,25)] = {64,0}, + [I(77,25)] = {64,0}, + [I(78,25)] = {64,0}, + [I(79,25)] = {64,0}, + [I(80,25)] = {64,0}, + [I(81,25)] = {64,0}, + [I(82,25)] = {64,0}, + [I(83,25)] = {64,0}, + [I(84,25)] = {64,0}, + [I(85,25)] = {64,0}, + [I(86,25)] = {64,0}, + [I(87,25)] = {64,0}, + [I(88,25)] = {64,0}, + [I(89,25)] = {64,0}, + [I(90,25)] = {64,0}, + [I(91,25)] = {64,0}, + [I(92,25)] = {64,0}, + [I(93,25)] = {64,0}, + [I(94,25)] = {64,0}, + [I(95,25)] = {64,0}, + [I(96,25)] = {64,0}, + [I(97,25)] = {64,0}, + [I(98,25)] = {64,0}, + [I(99,25)] = {64,0}, + [I(100,25)] = {64,0}, + [I(101,25)] = {64,0}, + [I(102,25)] = {64,0}, + [I(103,25)] = {64,0}, + [I(104,25)] = {64,0}, + [I(105,25)] = {64,0}, + [I(106,25)] = {64,0}, + [I(107,25)] = {64,0}, + [I(108,25)] = {64,0}, + [I(109,25)] = {64,0}, + [I(110,25)] = {64,0}, + [I(111,25)] = {64,0}, + [I(112,25)] = {64,0}, + [I(113,25)] = {64,0}, + [I(114,25)] = {64,0}, + [I(115,25)] = {64,0}, + [I(116,25)] = {64,0}, + [I(117,25)] = {64,0}, + [I(118,25)] = {64,0}, + [I(119,25)] = {64,0}, + [I(120,25)] = {64,0}, + [I(121,25)] = {64,0}, + [I(122,25)] = {64,0}, + [I(123,25)] = {64,0}, + [I(124,25)] = {64,0}, + [I(125,25)] = {64,0}, + [I(126,25)] = {64,0}, + [I(127,25)] = {64,0}, + [I(128,25)] = {64,0}, + [I(129,25)] = {64,0}, + [I(130,25)] = {64,0}, + [I(131,25)] = {64,0}, + [I(132,25)] = {64,0}, + [I(133,25)] = {64,0}, + [I(134,25)] = {64,0}, + [I(135,25)] = {64,0}, + [I(136,25)] = {64,0}, + [I(137,25)] = {64,0}, + [I(138,25)] = {64,0}, + [I(139,25)] = {64,0}, + [I(140,25)] = {64,0}, + [I(141,25)] = {64,0}, + [I(142,25)] = {64,0}, + [I(143,25)] = {64,0}, + [I(144,25)] = {64,0}, + [I(145,25)] = {64,0}, + [I(146,25)] = {64,0}, + [I(147,25)] = {64,0}, + [I(148,25)] = {64,0}, + [I(149,25)] = {64,0}, + [I(150,25)] = {64,0}, + [I(151,25)] = {64,0}, + [I(152,25)] = {64,0}, + [I(153,25)] = {64,0}, + [I(154,25)] = {64,0}, + [I(155,25)] = {64,0}, + [I(156,25)] = {64,0}, + [I(157,25)] = {64,0}, + [I(158,25)] = {64,0}, + [I(159,25)] = {64,0}, + [I(160,25)] = {64,0}, + [I(161,25)] = {64,0}, + [I(162,25)] = {64,0}, + [I(163,25)] = {64,0}, + [I(164,25)] = {64,0}, + [I(165,25)] = {64,0}, + [I(166,25)] = {64,0}, + [I(167,25)] = {64,0}, + [I(168,25)] = {64,0}, + [I(169,25)] = {64,0}, + [I(170,25)] = {64,0}, + [I(171,25)] = {64,0}, + [I(172,25)] = {64,0}, + [I(173,25)] = {64,0}, + [I(174,25)] = {64,0}, + [I(175,25)] = {64,0}, + [I(176,25)] = {64,0}, + [I(177,25)] = {64,0}, + [I(178,25)] = {64,0}, + [I(179,25)] = {64,0}, + [I(180,25)] = {64,0}, + [I(181,25)] = {64,0}, + [I(182,25)] = {64,0}, + [I(183,25)] = {64,0}, + [I(184,25)] = {64,0}, + [I(185,25)] = {64,0}, + [I(186,25)] = {64,0}, + [I(187,25)] = {64,0}, + [I(188,25)] = {64,0}, + [I(189,25)] = {64,0}, + [I(190,25)] = {64,0}, + [I(191,25)] = {64,0}, + [I(192,25)] = {64,0}, + [I(193,25)] = {64,0}, + [I(194,25)] = {64,0}, + [I(195,25)] = {64,0}, + [I(196,25)] = {64,0}, + [I(197,25)] = {64,0}, + [I(198,25)] = {64,0}, + [I(199,25)] = {64,0}, + [I(200,25)] = {64,0}, + [I(201,25)] = {64,0}, + [I(202,25)] = {64,0}, + [I(203,25)] = {64,0}, + [I(204,25)] = {64,0}, + [I(205,25)] = {64,0}, + [I(206,25)] = {64,0}, + [I(207,25)] = {64,0}, + [I(208,25)] = {64,0}, + [I(209,25)] = {64,0}, + [I(210,25)] = {64,0}, + [I(211,25)] = {64,0}, + [I(212,25)] = {64,0}, + [I(213,25)] = {64,0}, + [I(214,25)] = {64,0}, + [I(215,25)] = {64,0}, + [I(216,25)] = {64,0}, + [I(217,25)] = {64,0}, + [I(218,25)] = {64,0}, + [I(219,25)] = {64,0}, + [I(220,25)] = {64,0}, + [I(221,25)] = {64,0}, + [I(222,25)] = {64,0}, + [I(223,25)] = {64,0}, + [I(224,25)] = {64,0}, + [I(225,25)] = {64,0}, + [I(226,25)] = {64,0}, + [I(227,25)] = {64,0}, + [I(228,25)] = {64,0}, + [I(229,25)] = {64,0}, + [I(230,25)] = {64,0}, + [I(231,25)] = {64,0}, + [I(232,25)] = {64,0}, + [I(233,25)] = {64,0}, + [I(234,25)] = {64,0}, + [I(235,25)] = {64,0}, + [I(236,25)] = {64,0}, + [I(237,25)] = {64,0}, + [I(238,25)] = {64,0}, + [I(239,25)] = {64,0}, + [I(240,25)] = {64,0}, + [I(241,25)] = {64,0}, + [I(242,25)] = {64,0}, + [I(243,25)] = {64,0}, + [I(244,25)] = {64,0}, + [I(245,25)] = {64,0}, + [I(246,25)] = {64,0}, + [I(247,25)] = {64,0}, + [I(248,25)] = {64,0}, + [I(249,25)] = {64,0}, + [I(250,25)] = {64,0}, + [I(251,25)] = {64,0}, + [I(252,25)] = {64,0}, + [I(253,25)] = {64,0}, + [I(254,25)] = {64,0}, + [I(255,25)] = {64,0}, + [I(0,26)] = {64,0}, + [I(1,26)] = {64,0}, + [I(2,26)] = {64,0}, + [I(3,26)] = {64,0}, + [I(4,26)] = {64,0}, + [I(5,26)] = {64,0}, + [I(6,26)] = {64,0}, + [I(7,26)] = {64,0}, + [I(8,26)] = {64,0}, + [I(9,26)] = {64,0}, + [I(10,26)] = {64,0}, + [I(11,26)] = {64,0}, + [I(12,26)] = {64,0}, + [I(13,26)] = {64,0}, + [I(14,26)] = {64,0}, + [I(15,26)] = {64,0}, + [I(16,26)] = {64,0}, + [I(17,26)] = {64,0}, + [I(18,26)] = {64,0}, + [I(19,26)] = {64,0}, + [I(20,26)] = {64,0}, + [I(21,26)] = {64,0}, + [I(22,26)] = {64,0}, + [I(23,26)] = {64,0}, + [I(24,26)] = {64,0}, + [I(25,26)] = {64,0}, + [I(26,26)] = {64,0}, + [I(27,26)] = {64,0}, + [I(28,26)] = {64,0}, + [I(29,26)] = {64,0}, + [I(30,26)] = {64,0}, + [I(31,26)] = {64,0}, + [I(32,26)] = {64,0}, + [I(33,26)] = {64,0}, + [I(34,26)] = {64,0}, + [I(35,26)] = {64,0}, + [I(36,26)] = {64,0}, + [I(37,26)] = {64,0}, + [I(38,26)] = {64,0}, + [I(39,26)] = {64,0}, + [I(40,26)] = {64,0}, + [I(41,26)] = {64,0}, + [I(42,26)] = {64,0}, + [I(43,26)] = {64,0}, + [I(44,26)] = {64,0}, + [I(45,26)] = {64,0}, + [I(46,26)] = {64,0}, + [I(47,26)] = {64,0}, + [I(48,26)] = {64,0}, + [I(49,26)] = {64,0}, + [I(50,26)] = {64,0}, + [I(51,26)] = {64,0}, + [I(52,26)] = {64,0}, + [I(53,26)] = {64,0}, + [I(54,26)] = {64,0}, + [I(55,26)] = {64,0}, + [I(56,26)] = {64,0}, + [I(57,26)] = {64,0}, + [I(58,26)] = {64,0}, + [I(59,26)] = {64,0}, + [I(60,26)] = {64,0}, + [I(61,26)] = {64,0}, + [I(62,26)] = {64,0}, + [I(63,26)] = {64,0}, + [I(64,26)] = {64,0}, + [I(65,26)] = {64,0}, + [I(66,26)] = {64,0}, + [I(67,26)] = {64,0}, + [I(68,26)] = {64,0}, + [I(69,26)] = {64,0}, + [I(70,26)] = {64,0}, + [I(71,26)] = {64,0}, + [I(72,26)] = {64,0}, + [I(73,26)] = {64,0}, + [I(74,26)] = {64,0}, + [I(75,26)] = {64,0}, + [I(76,26)] = {64,0}, + [I(77,26)] = {64,0}, + [I(78,26)] = {64,0}, + [I(79,26)] = {64,0}, + [I(80,26)] = {64,0}, + [I(81,26)] = {64,0}, + [I(82,26)] = {64,0}, + [I(83,26)] = {64,0}, + [I(84,26)] = {64,0}, + [I(85,26)] = {64,0}, + [I(86,26)] = {64,0}, + [I(87,26)] = {64,0}, + [I(88,26)] = {64,0}, + [I(89,26)] = {64,0}, + [I(90,26)] = {64,0}, + [I(91,26)] = {64,0}, + [I(92,26)] = {64,0}, + [I(93,26)] = {64,0}, + [I(94,26)] = {64,0}, + [I(95,26)] = {64,0}, + [I(96,26)] = {64,0}, + [I(97,26)] = {64,0}, + [I(98,26)] = {64,0}, + [I(99,26)] = {64,0}, + [I(100,26)] = {64,0}, + [I(101,26)] = {64,0}, + [I(102,26)] = {64,0}, + [I(103,26)] = {64,0}, + [I(104,26)] = {64,0}, + [I(105,26)] = {64,0}, + [I(106,26)] = {64,0}, + [I(107,26)] = {64,0}, + [I(108,26)] = {64,0}, + [I(109,26)] = {64,0}, + [I(110,26)] = {64,0}, + [I(111,26)] = {64,0}, + [I(112,26)] = {64,0}, + [I(113,26)] = {64,0}, + [I(114,26)] = {64,0}, + [I(115,26)] = {64,0}, + [I(116,26)] = {64,0}, + [I(117,26)] = {64,0}, + [I(118,26)] = {64,0}, + [I(119,26)] = {64,0}, + [I(120,26)] = {64,0}, + [I(121,26)] = {64,0}, + [I(122,26)] = {64,0}, + [I(123,26)] = {64,0}, + [I(124,26)] = {64,0}, + [I(125,26)] = {64,0}, + [I(126,26)] = {64,0}, + [I(127,26)] = {64,0}, + [I(128,26)] = {64,0}, + [I(129,26)] = {64,0}, + [I(130,26)] = {64,0}, + [I(131,26)] = {64,0}, + [I(132,26)] = {64,0}, + [I(133,26)] = {64,0}, + [I(134,26)] = {64,0}, + [I(135,26)] = {64,0}, + [I(136,26)] = {64,0}, + [I(137,26)] = {64,0}, + [I(138,26)] = {64,0}, + [I(139,26)] = {64,0}, + [I(140,26)] = {64,0}, + [I(141,26)] = {64,0}, + [I(142,26)] = {64,0}, + [I(143,26)] = {64,0}, + [I(144,26)] = {64,0}, + [I(145,26)] = {64,0}, + [I(146,26)] = {64,0}, + [I(147,26)] = {64,0}, + [I(148,26)] = {64,0}, + [I(149,26)] = {64,0}, + [I(150,26)] = {64,0}, + [I(151,26)] = {64,0}, + [I(152,26)] = {64,0}, + [I(153,26)] = {64,0}, + [I(154,26)] = {64,0}, + [I(155,26)] = {64,0}, + [I(156,26)] = {64,0}, + [I(157,26)] = {64,0}, + [I(158,26)] = {64,0}, + [I(159,26)] = {64,0}, + [I(160,26)] = {64,0}, + [I(161,26)] = {64,0}, + [I(162,26)] = {64,0}, + [I(163,26)] = {64,0}, + [I(164,26)] = {64,0}, + [I(165,26)] = {64,0}, + [I(166,26)] = {64,0}, + [I(167,26)] = {64,0}, + [I(168,26)] = {64,0}, + [I(169,26)] = {64,0}, + [I(170,26)] = {64,0}, + [I(171,26)] = {64,0}, + [I(172,26)] = {64,0}, + [I(173,26)] = {64,0}, + [I(174,26)] = {64,0}, + [I(175,26)] = {64,0}, + [I(176,26)] = {64,0}, + [I(177,26)] = {64,0}, + [I(178,26)] = {64,0}, + [I(179,26)] = {64,0}, + [I(180,26)] = {64,0}, + [I(181,26)] = {64,0}, + [I(182,26)] = {64,0}, + [I(183,26)] = {64,0}, + [I(184,26)] = {64,0}, + [I(185,26)] = {64,0}, + [I(186,26)] = {64,0}, + [I(187,26)] = {64,0}, + [I(188,26)] = {64,0}, + [I(189,26)] = {64,0}, + [I(190,26)] = {64,0}, + [I(191,26)] = {64,0}, + [I(192,26)] = {64,0}, + [I(193,26)] = {64,0}, + [I(194,26)] = {64,0}, + [I(195,26)] = {64,0}, + [I(196,26)] = {64,0}, + [I(197,26)] = {64,0}, + [I(198,26)] = {64,0}, + [I(199,26)] = {64,0}, + [I(200,26)] = {64,0}, + [I(201,26)] = {64,0}, + [I(202,26)] = {64,0}, + [I(203,26)] = {64,0}, + [I(204,26)] = {64,0}, + [I(205,26)] = {64,0}, + [I(206,26)] = {64,0}, + [I(207,26)] = {64,0}, + [I(208,26)] = {64,0}, + [I(209,26)] = {64,0}, + [I(210,26)] = {64,0}, + [I(211,26)] = {64,0}, + [I(212,26)] = {64,0}, + [I(213,26)] = {64,0}, + [I(214,26)] = {64,0}, + [I(215,26)] = {64,0}, + [I(216,26)] = {64,0}, + [I(217,26)] = {64,0}, + [I(218,26)] = {64,0}, + [I(219,26)] = {64,0}, + [I(220,26)] = {64,0}, + [I(221,26)] = {64,0}, + [I(222,26)] = {64,0}, + [I(223,26)] = {64,0}, + [I(224,26)] = {64,0}, + [I(225,26)] = {64,0}, + [I(226,26)] = {64,0}, + [I(227,26)] = {64,0}, + [I(228,26)] = {64,0}, + [I(229,26)] = {64,0}, + [I(230,26)] = {64,0}, + [I(231,26)] = {64,0}, + [I(232,26)] = {64,0}, + [I(233,26)] = {64,0}, + [I(234,26)] = {64,0}, + [I(235,26)] = {64,0}, + [I(236,26)] = {64,0}, + [I(237,26)] = {64,0}, + [I(238,26)] = {64,0}, + [I(239,26)] = {64,0}, + [I(240,26)] = {64,0}, + [I(241,26)] = {64,0}, + [I(242,26)] = {64,0}, + [I(243,26)] = {64,0}, + [I(244,26)] = {64,0}, + [I(245,26)] = {64,0}, + [I(246,26)] = {64,0}, + [I(247,26)] = {64,0}, + [I(248,26)] = {64,0}, + [I(249,26)] = {64,0}, + [I(250,26)] = {64,0}, + [I(251,26)] = {64,0}, + [I(252,26)] = {64,0}, + [I(253,26)] = {64,0}, + [I(254,26)] = {64,0}, + [I(255,26)] = {64,0}, + [I(0,27)] = {64,0}, + [I(1,27)] = {64,0}, + [I(2,27)] = {64,0}, + [I(3,27)] = {64,0}, + [I(4,27)] = {64,0}, + [I(5,27)] = {64,0}, + [I(6,27)] = {64,0}, + [I(7,27)] = {64,0}, + [I(8,27)] = {64,0}, + [I(9,27)] = {64,0}, + [I(10,27)] = {64,0}, + [I(11,27)] = {64,0}, + [I(12,27)] = {64,0}, + [I(13,27)] = {64,0}, + [I(14,27)] = {64,0}, + [I(15,27)] = {64,0}, + [I(16,27)] = {64,0}, + [I(17,27)] = {64,0}, + [I(18,27)] = {64,0}, + [I(19,27)] = {64,0}, + [I(20,27)] = {64,0}, + [I(21,27)] = {64,0}, + [I(22,27)] = {64,0}, + [I(23,27)] = {64,0}, + [I(24,27)] = {64,0}, + [I(25,27)] = {64,0}, + [I(26,27)] = {64,0}, + [I(27,27)] = {64,0}, + [I(28,27)] = {64,0}, + [I(29,27)] = {64,0}, + [I(30,27)] = {64,0}, + [I(31,27)] = {64,0}, + [I(32,27)] = {64,0}, + [I(33,27)] = {64,0}, + [I(34,27)] = {64,0}, + [I(35,27)] = {64,0}, + [I(36,27)] = {64,0}, + [I(37,27)] = {64,0}, + [I(38,27)] = {64,0}, + [I(39,27)] = {64,0}, + [I(40,27)] = {64,0}, + [I(41,27)] = {64,0}, + [I(42,27)] = {64,0}, + [I(43,27)] = {64,0}, + [I(44,27)] = {64,0}, + [I(45,27)] = {64,0}, + [I(46,27)] = {64,0}, + [I(47,27)] = {64,0}, + [I(48,27)] = {64,0}, + [I(49,27)] = {64,0}, + [I(50,27)] = {64,0}, + [I(51,27)] = {64,0}, + [I(52,27)] = {64,0}, + [I(53,27)] = {64,0}, + [I(54,27)] = {64,0}, + [I(55,27)] = {64,0}, + [I(56,27)] = {64,0}, + [I(57,27)] = {64,0}, + [I(58,27)] = {64,0}, + [I(59,27)] = {64,0}, + [I(60,27)] = {64,0}, + [I(61,27)] = {64,0}, + [I(62,27)] = {64,0}, + [I(63,27)] = {64,0}, + [I(64,27)] = {64,0}, + [I(65,27)] = {64,0}, + [I(66,27)] = {64,0}, + [I(67,27)] = {64,0}, + [I(68,27)] = {64,0}, + [I(69,27)] = {64,0}, + [I(70,27)] = {64,0}, + [I(71,27)] = {64,0}, + [I(72,27)] = {64,0}, + [I(73,27)] = {64,0}, + [I(74,27)] = {64,0}, + [I(75,27)] = {64,0}, + [I(76,27)] = {64,0}, + [I(77,27)] = {64,0}, + [I(78,27)] = {64,0}, + [I(79,27)] = {64,0}, + [I(80,27)] = {64,0}, + [I(81,27)] = {64,0}, + [I(82,27)] = {64,0}, + [I(83,27)] = {64,0}, + [I(84,27)] = {64,0}, + [I(85,27)] = {64,0}, + [I(86,27)] = {64,0}, + [I(87,27)] = {64,0}, + [I(88,27)] = {64,0}, + [I(89,27)] = {64,0}, + [I(90,27)] = {64,0}, + [I(91,27)] = {64,0}, + [I(92,27)] = {64,0}, + [I(93,27)] = {64,0}, + [I(94,27)] = {64,0}, + [I(95,27)] = {64,0}, + [I(96,27)] = {64,0}, + [I(97,27)] = {64,0}, + [I(98,27)] = {64,0}, + [I(99,27)] = {64,0}, + [I(100,27)] = {64,0}, + [I(101,27)] = {64,0}, + [I(102,27)] = {64,0}, + [I(103,27)] = {64,0}, + [I(104,27)] = {64,0}, + [I(105,27)] = {64,0}, + [I(106,27)] = {64,0}, + [I(107,27)] = {64,0}, + [I(108,27)] = {64,0}, + [I(109,27)] = {64,0}, + [I(110,27)] = {64,0}, + [I(111,27)] = {64,0}, + [I(112,27)] = {64,0}, + [I(113,27)] = {64,0}, + [I(114,27)] = {64,0}, + [I(115,27)] = {64,0}, + [I(116,27)] = {64,0}, + [I(117,27)] = {64,0}, + [I(118,27)] = {64,0}, + [I(119,27)] = {64,0}, + [I(120,27)] = {64,0}, + [I(121,27)] = {64,0}, + [I(122,27)] = {64,0}, + [I(123,27)] = {64,0}, + [I(124,27)] = {64,0}, + [I(125,27)] = {64,0}, + [I(126,27)] = {64,0}, + [I(127,27)] = {64,0}, + [I(128,27)] = {64,0}, + [I(129,27)] = {64,0}, + [I(130,27)] = {64,0}, + [I(131,27)] = {64,0}, + [I(132,27)] = {64,0}, + [I(133,27)] = {64,0}, + [I(134,27)] = {64,0}, + [I(135,27)] = {64,0}, + [I(136,27)] = {64,0}, + [I(137,27)] = {64,0}, + [I(138,27)] = {64,0}, + [I(139,27)] = {64,0}, + [I(140,27)] = {64,0}, + [I(141,27)] = {64,0}, + [I(142,27)] = {64,0}, + [I(143,27)] = {64,0}, + [I(144,27)] = {64,0}, + [I(145,27)] = {64,0}, + [I(146,27)] = {64,0}, + [I(147,27)] = {64,0}, + [I(148,27)] = {64,0}, + [I(149,27)] = {64,0}, + [I(150,27)] = {64,0}, + [I(151,27)] = {64,0}, + [I(152,27)] = {64,0}, + [I(153,27)] = {64,0}, + [I(154,27)] = {64,0}, + [I(155,27)] = {64,0}, + [I(156,27)] = {64,0}, + [I(157,27)] = {64,0}, + [I(158,27)] = {64,0}, + [I(159,27)] = {64,0}, + [I(160,27)] = {64,0}, + [I(161,27)] = {64,0}, + [I(162,27)] = {64,0}, + [I(163,27)] = {64,0}, + [I(164,27)] = {64,0}, + [I(165,27)] = {64,0}, + [I(166,27)] = {64,0}, + [I(167,27)] = {64,0}, + [I(168,27)] = {64,0}, + [I(169,27)] = {64,0}, + [I(170,27)] = {64,0}, + [I(171,27)] = {64,0}, + [I(172,27)] = {64,0}, + [I(173,27)] = {64,0}, + [I(174,27)] = {64,0}, + [I(175,27)] = {64,0}, + [I(176,27)] = {64,0}, + [I(177,27)] = {64,0}, + [I(178,27)] = {64,0}, + [I(179,27)] = {64,0}, + [I(180,27)] = {64,0}, + [I(181,27)] = {64,0}, + [I(182,27)] = {64,0}, + [I(183,27)] = {64,0}, + [I(184,27)] = {64,0}, + [I(185,27)] = {64,0}, + [I(186,27)] = {64,0}, + [I(187,27)] = {64,0}, + [I(188,27)] = {64,0}, + [I(189,27)] = {64,0}, + [I(190,27)] = {64,0}, + [I(191,27)] = {64,0}, + [I(192,27)] = {64,0}, + [I(193,27)] = {64,0}, + [I(194,27)] = {64,0}, + [I(195,27)] = {64,0}, + [I(196,27)] = {64,0}, + [I(197,27)] = {64,0}, + [I(198,27)] = {64,0}, + [I(199,27)] = {64,0}, + [I(200,27)] = {64,0}, + [I(201,27)] = {64,0}, + [I(202,27)] = {64,0}, + [I(203,27)] = {64,0}, + [I(204,27)] = {64,0}, + [I(205,27)] = {64,0}, + [I(206,27)] = {64,0}, + [I(207,27)] = {64,0}, + [I(208,27)] = {64,0}, + [I(209,27)] = {64,0}, + [I(210,27)] = {64,0}, + [I(211,27)] = {64,0}, + [I(212,27)] = {64,0}, + [I(213,27)] = {64,0}, + [I(214,27)] = {64,0}, + [I(215,27)] = {64,0}, + [I(216,27)] = {64,0}, + [I(217,27)] = {64,0}, + [I(218,27)] = {64,0}, + [I(219,27)] = {64,0}, + [I(220,27)] = {64,0}, + [I(221,27)] = {64,0}, + [I(222,27)] = {64,0}, + [I(223,27)] = {64,0}, + [I(224,27)] = {64,0}, + [I(225,27)] = {64,0}, + [I(226,27)] = {64,0}, + [I(227,27)] = {64,0}, + [I(228,27)] = {64,0}, + [I(229,27)] = {64,0}, + [I(230,27)] = {64,0}, + [I(231,27)] = {64,0}, + [I(232,27)] = {64,0}, + [I(233,27)] = {64,0}, + [I(234,27)] = {64,0}, + [I(235,27)] = {64,0}, + [I(236,27)] = {64,0}, + [I(237,27)] = {64,0}, + [I(238,27)] = {64,0}, + [I(239,27)] = {64,0}, + [I(240,27)] = {64,0}, + [I(241,27)] = {64,0}, + [I(242,27)] = {64,0}, + [I(243,27)] = {64,0}, + [I(244,27)] = {64,0}, + [I(245,27)] = {64,0}, + [I(246,27)] = {64,0}, + [I(247,27)] = {64,0}, + [I(248,27)] = {64,0}, + [I(249,27)] = {64,0}, + [I(250,27)] = {64,0}, + [I(251,27)] = {64,0}, + [I(252,27)] = {64,0}, + [I(253,27)] = {64,0}, + [I(254,27)] = {64,0}, + [I(255,27)] = {64,0}, + [I(0,28)] = {64,0}, + [I(1,28)] = {64,0}, + [I(2,28)] = {64,0}, + [I(3,28)] = {64,0}, + [I(4,28)] = {64,0}, + [I(5,28)] = {64,0}, + [I(6,28)] = {64,0}, + [I(7,28)] = {64,0}, + [I(8,28)] = {64,0}, + [I(9,28)] = {64,0}, + [I(10,28)] = {64,0}, + [I(11,28)] = {64,0}, + [I(12,28)] = {64,0}, + [I(13,28)] = {64,0}, + [I(14,28)] = {64,0}, + [I(15,28)] = {64,0}, + [I(16,28)] = {64,0}, + [I(17,28)] = {64,0}, + [I(18,28)] = {64,0}, + [I(19,28)] = {64,0}, + [I(20,28)] = {64,0}, + [I(21,28)] = {64,0}, + [I(22,28)] = {64,0}, + [I(23,28)] = {64,0}, + [I(24,28)] = {64,0}, + [I(25,28)] = {64,0}, + [I(26,28)] = {64,0}, + [I(27,28)] = {64,0}, + [I(28,28)] = {64,0}, + [I(29,28)] = {64,0}, + [I(30,28)] = {64,0}, + [I(31,28)] = {64,0}, + [I(32,28)] = {64,0}, + [I(33,28)] = {64,0}, + [I(34,28)] = {64,0}, + [I(35,28)] = {64,0}, + [I(36,28)] = {64,0}, + [I(37,28)] = {64,0}, + [I(38,28)] = {64,0}, + [I(39,28)] = {64,0}, + [I(40,28)] = {64,0}, + [I(41,28)] = {64,0}, + [I(42,28)] = {64,0}, + [I(43,28)] = {64,0}, + [I(44,28)] = {64,0}, + [I(45,28)] = {64,0}, + [I(46,28)] = {64,0}, + [I(47,28)] = {64,0}, + [I(48,28)] = {64,0}, + [I(49,28)] = {64,0}, + [I(50,28)] = {64,0}, + [I(51,28)] = {64,0}, + [I(52,28)] = {64,0}, + [I(53,28)] = {64,0}, + [I(54,28)] = {64,0}, + [I(55,28)] = {64,0}, + [I(56,28)] = {64,0}, + [I(57,28)] = {64,0}, + [I(58,28)] = {64,0}, + [I(59,28)] = {64,0}, + [I(60,28)] = {64,0}, + [I(61,28)] = {64,0}, + [I(62,28)] = {64,0}, + [I(63,28)] = {64,0}, + [I(64,28)] = {64,0}, + [I(65,28)] = {64,0}, + [I(66,28)] = {64,0}, + [I(67,28)] = {64,0}, + [I(68,28)] = {64,0}, + [I(69,28)] = {64,0}, + [I(70,28)] = {64,0}, + [I(71,28)] = {64,0}, + [I(72,28)] = {64,0}, + [I(73,28)] = {64,0}, + [I(74,28)] = {64,0}, + [I(75,28)] = {64,0}, + [I(76,28)] = {64,0}, + [I(77,28)] = {64,0}, + [I(78,28)] = {64,0}, + [I(79,28)] = {64,0}, + [I(80,28)] = {64,0}, + [I(81,28)] = {64,0}, + [I(82,28)] = {64,0}, + [I(83,28)] = {64,0}, + [I(84,28)] = {64,0}, + [I(85,28)] = {64,0}, + [I(86,28)] = {64,0}, + [I(87,28)] = {64,0}, + [I(88,28)] = {64,0}, + [I(89,28)] = {64,0}, + [I(90,28)] = {64,0}, + [I(91,28)] = {64,0}, + [I(92,28)] = {64,0}, + [I(93,28)] = {64,0}, + [I(94,28)] = {64,0}, + [I(95,28)] = {64,0}, + [I(96,28)] = {64,0}, + [I(97,28)] = {64,0}, + [I(98,28)] = {64,0}, + [I(99,28)] = {64,0}, + [I(100,28)] = {64,0}, + [I(101,28)] = {64,0}, + [I(102,28)] = {64,0}, + [I(103,28)] = {64,0}, + [I(104,28)] = {64,0}, + [I(105,28)] = {64,0}, + [I(106,28)] = {64,0}, + [I(107,28)] = {64,0}, + [I(108,28)] = {64,0}, + [I(109,28)] = {64,0}, + [I(110,28)] = {64,0}, + [I(111,28)] = {64,0}, + [I(112,28)] = {64,0}, + [I(113,28)] = {64,0}, + [I(114,28)] = {64,0}, + [I(115,28)] = {64,0}, + [I(116,28)] = {64,0}, + [I(117,28)] = {64,0}, + [I(118,28)] = {64,0}, + [I(119,28)] = {64,0}, + [I(120,28)] = {64,0}, + [I(121,28)] = {64,0}, + [I(122,28)] = {64,0}, + [I(123,28)] = {64,0}, + [I(124,28)] = {64,0}, + [I(125,28)] = {64,0}, + [I(126,28)] = {64,0}, + [I(127,28)] = {64,0}, + [I(128,28)] = {64,0}, + [I(129,28)] = {64,0}, + [I(130,28)] = {64,0}, + [I(131,28)] = {64,0}, + [I(132,28)] = {64,0}, + [I(133,28)] = {64,0}, + [I(134,28)] = {64,0}, + [I(135,28)] = {64,0}, + [I(136,28)] = {64,0}, + [I(137,28)] = {64,0}, + [I(138,28)] = {64,0}, + [I(139,28)] = {64,0}, + [I(140,28)] = {64,0}, + [I(141,28)] = {64,0}, + [I(142,28)] = {64,0}, + [I(143,28)] = {64,0}, + [I(144,28)] = {64,0}, + [I(145,28)] = {64,0}, + [I(146,28)] = {64,0}, + [I(147,28)] = {64,0}, + [I(148,28)] = {64,0}, + [I(149,28)] = {64,0}, + [I(150,28)] = {64,0}, + [I(151,28)] = {64,0}, + [I(152,28)] = {64,0}, + [I(153,28)] = {64,0}, + [I(154,28)] = {64,0}, + [I(155,28)] = {64,0}, + [I(156,28)] = {64,0}, + [I(157,28)] = {64,0}, + [I(158,28)] = {64,0}, + [I(159,28)] = {64,0}, + [I(160,28)] = {64,0}, + [I(161,28)] = {64,0}, + [I(162,28)] = {64,0}, + [I(163,28)] = {64,0}, + [I(164,28)] = {64,0}, + [I(165,28)] = {64,0}, + [I(166,28)] = {64,0}, + [I(167,28)] = {64,0}, + [I(168,28)] = {64,0}, + [I(169,28)] = {64,0}, + [I(170,28)] = {64,0}, + [I(171,28)] = {64,0}, + [I(172,28)] = {64,0}, + [I(173,28)] = {64,0}, + [I(174,28)] = {64,0}, + [I(175,28)] = {64,0}, + [I(176,28)] = {64,0}, + [I(177,28)] = {64,0}, + [I(178,28)] = {64,0}, + [I(179,28)] = {64,0}, + [I(180,28)] = {64,0}, + [I(181,28)] = {64,0}, + [I(182,28)] = {64,0}, + [I(183,28)] = {64,0}, + [I(184,28)] = {64,0}, + [I(185,28)] = {64,0}, + [I(186,28)] = {64,0}, + [I(187,28)] = {64,0}, + [I(188,28)] = {64,0}, + [I(189,28)] = {64,0}, + [I(190,28)] = {64,0}, + [I(191,28)] = {64,0}, + [I(192,28)] = {64,0}, + [I(193,28)] = {64,0}, + [I(194,28)] = {64,0}, + [I(195,28)] = {64,0}, + [I(196,28)] = {64,0}, + [I(197,28)] = {64,0}, + [I(198,28)] = {64,0}, + [I(199,28)] = {64,0}, + [I(200,28)] = {64,0}, + [I(201,28)] = {64,0}, + [I(202,28)] = {64,0}, + [I(203,28)] = {64,0}, + [I(204,28)] = {64,0}, + [I(205,28)] = {64,0}, + [I(206,28)] = {64,0}, + [I(207,28)] = {64,0}, + [I(208,28)] = {64,0}, + [I(209,28)] = {64,0}, + [I(210,28)] = {64,0}, + [I(211,28)] = {64,0}, + [I(212,28)] = {64,0}, + [I(213,28)] = {64,0}, + [I(214,28)] = {64,0}, + [I(215,28)] = {64,0}, + [I(216,28)] = {64,0}, + [I(217,28)] = {64,0}, + [I(218,28)] = {64,0}, + [I(219,28)] = {64,0}, + [I(220,28)] = {64,0}, + [I(221,28)] = {64,0}, + [I(222,28)] = {64,0}, + [I(223,28)] = {64,0}, + [I(224,28)] = {64,0}, + [I(225,28)] = {64,0}, + [I(226,28)] = {64,0}, + [I(227,28)] = {64,0}, + [I(228,28)] = {64,0}, + [I(229,28)] = {64,0}, + [I(230,28)] = {64,0}, + [I(231,28)] = {64,0}, + [I(232,28)] = {64,0}, + [I(233,28)] = {64,0}, + [I(234,28)] = {64,0}, + [I(235,28)] = {64,0}, + [I(236,28)] = {64,0}, + [I(237,28)] = {64,0}, + [I(238,28)] = {64,0}, + [I(239,28)] = {64,0}, + [I(240,28)] = {64,0}, + [I(241,28)] = {64,0}, + [I(242,28)] = {64,0}, + [I(243,28)] = {64,0}, + [I(244,28)] = {64,0}, + [I(245,28)] = {64,0}, + [I(246,28)] = {64,0}, + [I(247,28)] = {64,0}, + [I(248,28)] = {64,0}, + [I(249,28)] = {64,0}, + [I(250,28)] = {64,0}, + [I(251,28)] = {64,0}, + [I(252,28)] = {64,0}, + [I(253,28)] = {64,0}, + [I(254,28)] = {64,0}, + [I(255,28)] = {64,0}, + [I(0,29)] = {64,0}, + [I(1,29)] = {64,0}, + [I(2,29)] = {64,0}, + [I(3,29)] = {64,0}, + [I(4,29)] = {64,0}, + [I(5,29)] = {64,0}, + [I(6,29)] = {64,0}, + [I(7,29)] = {64,0}, + [I(8,29)] = {64,0}, + [I(9,29)] = {64,0}, + [I(10,29)] = {64,0}, + [I(11,29)] = {64,0}, + [I(12,29)] = {64,0}, + [I(13,29)] = {64,0}, + [I(14,29)] = {64,0}, + [I(15,29)] = {64,0}, + [I(16,29)] = {64,0}, + [I(17,29)] = {64,0}, + [I(18,29)] = {64,0}, + [I(19,29)] = {64,0}, + [I(20,29)] = {64,0}, + [I(21,29)] = {64,0}, + [I(22,29)] = {64,0}, + [I(23,29)] = {64,0}, + [I(24,29)] = {64,0}, + [I(25,29)] = {64,0}, + [I(26,29)] = {64,0}, + [I(27,29)] = {64,0}, + [I(28,29)] = {64,0}, + [I(29,29)] = {64,0}, + [I(30,29)] = {64,0}, + [I(31,29)] = {64,0}, + [I(32,29)] = {64,0}, + [I(33,29)] = {64,0}, + [I(34,29)] = {64,0}, + [I(35,29)] = {64,0}, + [I(36,29)] = {64,0}, + [I(37,29)] = {64,0}, + [I(38,29)] = {64,0}, + [I(39,29)] = {64,0}, + [I(40,29)] = {64,0}, + [I(41,29)] = {64,0}, + [I(42,29)] = {64,0}, + [I(43,29)] = {64,0}, + [I(44,29)] = {64,0}, + [I(45,29)] = {64,0}, + [I(46,29)] = {64,0}, + [I(47,29)] = {64,0}, + [I(48,29)] = {64,0}, + [I(49,29)] = {64,0}, + [I(50,29)] = {64,0}, + [I(51,29)] = {64,0}, + [I(52,29)] = {64,0}, + [I(53,29)] = {64,0}, + [I(54,29)] = {64,0}, + [I(55,29)] = {64,0}, + [I(56,29)] = {64,0}, + [I(57,29)] = {64,0}, + [I(58,29)] = {64,0}, + [I(59,29)] = {64,0}, + [I(60,29)] = {64,0}, + [I(61,29)] = {64,0}, + [I(62,29)] = {64,0}, + [I(63,29)] = {64,0}, + [I(64,29)] = {64,0}, + [I(65,29)] = {64,0}, + [I(66,29)] = {64,0}, + [I(67,29)] = {64,0}, + [I(68,29)] = {64,0}, + [I(69,29)] = {64,0}, + [I(70,29)] = {64,0}, + [I(71,29)] = {64,0}, + [I(72,29)] = {64,0}, + [I(73,29)] = {64,0}, + [I(74,29)] = {64,0}, + [I(75,29)] = {64,0}, + [I(76,29)] = {64,0}, + [I(77,29)] = {64,0}, + [I(78,29)] = {64,0}, + [I(79,29)] = {64,0}, + [I(80,29)] = {64,0}, + [I(81,29)] = {64,0}, + [I(82,29)] = {64,0}, + [I(83,29)] = {64,0}, + [I(84,29)] = {64,0}, + [I(85,29)] = {64,0}, + [I(86,29)] = {64,0}, + [I(87,29)] = {64,0}, + [I(88,29)] = {64,0}, + [I(89,29)] = {64,0}, + [I(90,29)] = {64,0}, + [I(91,29)] = {64,0}, + [I(92,29)] = {64,0}, + [I(93,29)] = {64,0}, + [I(94,29)] = {64,0}, + [I(95,29)] = {64,0}, + [I(96,29)] = {64,0}, + [I(97,29)] = {64,0}, + [I(98,29)] = {64,0}, + [I(99,29)] = {64,0}, + [I(100,29)] = {64,0}, + [I(101,29)] = {64,0}, + [I(102,29)] = {64,0}, + [I(103,29)] = {64,0}, + [I(104,29)] = {64,0}, + [I(105,29)] = {64,0}, + [I(106,29)] = {64,0}, + [I(107,29)] = {64,0}, + [I(108,29)] = {64,0}, + [I(109,29)] = {64,0}, + [I(110,29)] = {64,0}, + [I(111,29)] = {64,0}, + [I(112,29)] = {64,0}, + [I(113,29)] = {64,0}, + [I(114,29)] = {64,0}, + [I(115,29)] = {64,0}, + [I(116,29)] = {64,0}, + [I(117,29)] = {64,0}, + [I(118,29)] = {64,0}, + [I(119,29)] = {64,0}, + [I(120,29)] = {64,0}, + [I(121,29)] = {64,0}, + [I(122,29)] = {64,0}, + [I(123,29)] = {64,0}, + [I(124,29)] = {64,0}, + [I(125,29)] = {64,0}, + [I(126,29)] = {64,0}, + [I(127,29)] = {64,0}, + [I(128,29)] = {64,0}, + [I(129,29)] = {64,0}, + [I(130,29)] = {64,0}, + [I(131,29)] = {64,0}, + [I(132,29)] = {64,0}, + [I(133,29)] = {64,0}, + [I(134,29)] = {64,0}, + [I(135,29)] = {64,0}, + [I(136,29)] = {64,0}, + [I(137,29)] = {64,0}, + [I(138,29)] = {64,0}, + [I(139,29)] = {64,0}, + [I(140,29)] = {64,0}, + [I(141,29)] = {64,0}, + [I(142,29)] = {64,0}, + [I(143,29)] = {64,0}, + [I(144,29)] = {64,0}, + [I(145,29)] = {64,0}, + [I(146,29)] = {64,0}, + [I(147,29)] = {64,0}, + [I(148,29)] = {64,0}, + [I(149,29)] = {64,0}, + [I(150,29)] = {64,0}, + [I(151,29)] = {64,0}, + [I(152,29)] = {64,0}, + [I(153,29)] = {64,0}, + [I(154,29)] = {64,0}, + [I(155,29)] = {64,0}, + [I(156,29)] = {64,0}, + [I(157,29)] = {64,0}, + [I(158,29)] = {64,0}, + [I(159,29)] = {64,0}, + [I(160,29)] = {64,0}, + [I(161,29)] = {64,0}, + [I(162,29)] = {64,0}, + [I(163,29)] = {64,0}, + [I(164,29)] = {64,0}, + [I(165,29)] = {64,0}, + [I(166,29)] = {64,0}, + [I(167,29)] = {64,0}, + [I(168,29)] = {64,0}, + [I(169,29)] = {64,0}, + [I(170,29)] = {64,0}, + [I(171,29)] = {64,0}, + [I(172,29)] = {64,0}, + [I(173,29)] = {64,0}, + [I(174,29)] = {64,0}, + [I(175,29)] = {64,0}, + [I(176,29)] = {64,0}, + [I(177,29)] = {64,0}, + [I(178,29)] = {64,0}, + [I(179,29)] = {64,0}, + [I(180,29)] = {64,0}, + [I(181,29)] = {64,0}, + [I(182,29)] = {64,0}, + [I(183,29)] = {64,0}, + [I(184,29)] = {64,0}, + [I(185,29)] = {64,0}, + [I(186,29)] = {64,0}, + [I(187,29)] = {64,0}, + [I(188,29)] = {64,0}, + [I(189,29)] = {64,0}, + [I(190,29)] = {64,0}, + [I(191,29)] = {64,0}, + [I(192,29)] = {64,0}, + [I(193,29)] = {64,0}, + [I(194,29)] = {64,0}, + [I(195,29)] = {64,0}, + [I(196,29)] = {64,0}, + [I(197,29)] = {64,0}, + [I(198,29)] = {64,0}, + [I(199,29)] = {64,0}, + [I(200,29)] = {64,0}, + [I(201,29)] = {64,0}, + [I(202,29)] = {64,0}, + [I(203,29)] = {64,0}, + [I(204,29)] = {64,0}, + [I(205,29)] = {64,0}, + [I(206,29)] = {64,0}, + [I(207,29)] = {64,0}, + [I(208,29)] = {64,0}, + [I(209,29)] = {64,0}, + [I(210,29)] = {64,0}, + [I(211,29)] = {64,0}, + [I(212,29)] = {64,0}, + [I(213,29)] = {64,0}, + [I(214,29)] = {64,0}, + [I(215,29)] = {64,0}, + [I(216,29)] = {64,0}, + [I(217,29)] = {64,0}, + [I(218,29)] = {64,0}, + [I(219,29)] = {64,0}, + [I(220,29)] = {64,0}, + [I(221,29)] = {64,0}, + [I(222,29)] = {64,0}, + [I(223,29)] = {64,0}, + [I(224,29)] = {64,0}, + [I(225,29)] = {64,0}, + [I(226,29)] = {64,0}, + [I(227,29)] = {64,0}, + [I(228,29)] = {64,0}, + [I(229,29)] = {64,0}, + [I(230,29)] = {64,0}, + [I(231,29)] = {64,0}, + [I(232,29)] = {64,0}, + [I(233,29)] = {64,0}, + [I(234,29)] = {64,0}, + [I(235,29)] = {64,0}, + [I(236,29)] = {64,0}, + [I(237,29)] = {64,0}, + [I(238,29)] = {64,0}, + [I(239,29)] = {64,0}, + [I(240,29)] = {64,0}, + [I(241,29)] = {64,0}, + [I(242,29)] = {64,0}, + [I(243,29)] = {64,0}, + [I(244,29)] = {64,0}, + [I(245,29)] = {64,0}, + [I(246,29)] = {64,0}, + [I(247,29)] = {64,0}, + [I(248,29)] = {64,0}, + [I(249,29)] = {64,0}, + [I(250,29)] = {64,0}, + [I(251,29)] = {64,0}, + [I(252,29)] = {64,0}, + [I(253,29)] = {64,0}, + [I(254,29)] = {64,0}, + [I(255,29)] = {64,0}, + [I(0,30)] = {64,0}, + [I(1,30)] = {64,0}, + [I(2,30)] = {64,0}, + [I(3,30)] = {64,0}, + [I(4,30)] = {64,0}, + [I(5,30)] = {64,0}, + [I(6,30)] = {64,0}, + [I(7,30)] = {64,0}, + [I(8,30)] = {64,0}, + [I(9,30)] = {64,0}, + [I(10,30)] = {64,0}, + [I(11,30)] = {64,0}, + [I(12,30)] = {64,0}, + [I(13,30)] = {64,0}, + [I(14,30)] = {64,0}, + [I(15,30)] = {64,0}, + [I(16,30)] = {64,0}, + [I(17,30)] = {64,0}, + [I(18,30)] = {64,0}, + [I(19,30)] = {64,0}, + [I(20,30)] = {64,0}, + [I(21,30)] = {64,0}, + [I(22,30)] = {64,0}, + [I(23,30)] = {64,0}, + [I(24,30)] = {64,0}, + [I(25,30)] = {64,0}, + [I(26,30)] = {64,0}, + [I(27,30)] = {64,0}, + [I(28,30)] = {64,0}, + [I(29,30)] = {64,0}, + [I(30,30)] = {64,0}, + [I(31,30)] = {64,0}, + [I(32,30)] = {64,0}, + [I(33,30)] = {64,0}, + [I(34,30)] = {64,0}, + [I(35,30)] = {64,0}, + [I(36,30)] = {64,0}, + [I(37,30)] = {64,0}, + [I(38,30)] = {64,0}, + [I(39,30)] = {64,0}, + [I(40,30)] = {64,0}, + [I(41,30)] = {64,0}, + [I(42,30)] = {64,0}, + [I(43,30)] = {64,0}, + [I(44,30)] = {64,0}, + [I(45,30)] = {64,0}, + [I(46,30)] = {64,0}, + [I(47,30)] = {64,0}, + [I(48,30)] = {64,0}, + [I(49,30)] = {64,0}, + [I(50,30)] = {64,0}, + [I(51,30)] = {64,0}, + [I(52,30)] = {64,0}, + [I(53,30)] = {64,0}, + [I(54,30)] = {64,0}, + [I(55,30)] = {64,0}, + [I(56,30)] = {64,0}, + [I(57,30)] = {64,0}, + [I(58,30)] = {64,0}, + [I(59,30)] = {64,0}, + [I(60,30)] = {64,0}, + [I(61,30)] = {64,0}, + [I(62,30)] = {64,0}, + [I(63,30)] = {64,0}, + [I(64,30)] = {64,0}, + [I(65,30)] = {64,0}, + [I(66,30)] = {64,0}, + [I(67,30)] = {64,0}, + [I(68,30)] = {64,0}, + [I(69,30)] = {64,0}, + [I(70,30)] = {64,0}, + [I(71,30)] = {64,0}, + [I(72,30)] = {64,0}, + [I(73,30)] = {64,0}, + [I(74,30)] = {64,0}, + [I(75,30)] = {64,0}, + [I(76,30)] = {64,0}, + [I(77,30)] = {64,0}, + [I(78,30)] = {64,0}, + [I(79,30)] = {64,0}, + [I(80,30)] = {64,0}, + [I(81,30)] = {64,0}, + [I(82,30)] = {64,0}, + [I(83,30)] = {64,0}, + [I(84,30)] = {64,0}, + [I(85,30)] = {64,0}, + [I(86,30)] = {64,0}, + [I(87,30)] = {64,0}, + [I(88,30)] = {64,0}, + [I(89,30)] = {64,0}, + [I(90,30)] = {64,0}, + [I(91,30)] = {64,0}, + [I(92,30)] = {64,0}, + [I(93,30)] = {64,0}, + [I(94,30)] = {64,0}, + [I(95,30)] = {64,0}, + [I(96,30)] = {64,0}, + [I(97,30)] = {64,0}, + [I(98,30)] = {64,0}, + [I(99,30)] = {64,0}, + [I(100,30)] = {64,0}, + [I(101,30)] = {64,0}, + [I(102,30)] = {64,0}, + [I(103,30)] = {64,0}, + [I(104,30)] = {64,0}, + [I(105,30)] = {64,0}, + [I(106,30)] = {64,0}, + [I(107,30)] = {64,0}, + [I(108,30)] = {64,0}, + [I(109,30)] = {64,0}, + [I(110,30)] = {64,0}, + [I(111,30)] = {64,0}, + [I(112,30)] = {64,0}, + [I(113,30)] = {64,0}, + [I(114,30)] = {64,0}, + [I(115,30)] = {64,0}, + [I(116,30)] = {64,0}, + [I(117,30)] = {64,0}, + [I(118,30)] = {64,0}, + [I(119,30)] = {64,0}, + [I(120,30)] = {64,0}, + [I(121,30)] = {64,0}, + [I(122,30)] = {64,0}, + [I(123,30)] = {64,0}, + [I(124,30)] = {64,0}, + [I(125,30)] = {64,0}, + [I(126,30)] = {64,0}, + [I(127,30)] = {64,0}, + [I(128,30)] = {64,0}, + [I(129,30)] = {64,0}, + [I(130,30)] = {64,0}, + [I(131,30)] = {64,0}, + [I(132,30)] = {64,0}, + [I(133,30)] = {64,0}, + [I(134,30)] = {64,0}, + [I(135,30)] = {64,0}, + [I(136,30)] = {64,0}, + [I(137,30)] = {64,0}, + [I(138,30)] = {64,0}, + [I(139,30)] = {64,0}, + [I(140,30)] = {64,0}, + [I(141,30)] = {64,0}, + [I(142,30)] = {64,0}, + [I(143,30)] = {64,0}, + [I(144,30)] = {64,0}, + [I(145,30)] = {64,0}, + [I(146,30)] = {64,0}, + [I(147,30)] = {64,0}, + [I(148,30)] = {64,0}, + [I(149,30)] = {64,0}, + [I(150,30)] = {64,0}, + [I(151,30)] = {64,0}, + [I(152,30)] = {64,0}, + [I(153,30)] = {64,0}, + [I(154,30)] = {64,0}, + [I(155,30)] = {64,0}, + [I(156,30)] = {64,0}, + [I(157,30)] = {64,0}, + [I(158,30)] = {64,0}, + [I(159,30)] = {64,0}, + [I(160,30)] = {64,0}, + [I(161,30)] = {64,0}, + [I(162,30)] = {64,0}, + [I(163,30)] = {64,0}, + [I(164,30)] = {64,0}, + [I(165,30)] = {64,0}, + [I(166,30)] = {64,0}, + [I(167,30)] = {64,0}, + [I(168,30)] = {64,0}, + [I(169,30)] = {64,0}, + [I(170,30)] = {64,0}, + [I(171,30)] = {64,0}, + [I(172,30)] = {64,0}, + [I(173,30)] = {64,0}, + [I(174,30)] = {64,0}, + [I(175,30)] = {64,0}, + [I(176,30)] = {64,0}, + [I(177,30)] = {64,0}, + [I(178,30)] = {64,0}, + [I(179,30)] = {64,0}, + [I(180,30)] = {64,0}, + [I(181,30)] = {64,0}, + [I(182,30)] = {64,0}, + [I(183,30)] = {64,0}, + [I(184,30)] = {64,0}, + [I(185,30)] = {64,0}, + [I(186,30)] = {64,0}, + [I(187,30)] = {64,0}, + [I(188,30)] = {64,0}, + [I(189,30)] = {64,0}, + [I(190,30)] = {64,0}, + [I(191,30)] = {64,0}, + [I(192,30)] = {64,0}, + [I(193,30)] = {64,0}, + [I(194,30)] = {64,0}, + [I(195,30)] = {64,0}, + [I(196,30)] = {64,0}, + [I(197,30)] = {64,0}, + [I(198,30)] = {64,0}, + [I(199,30)] = {64,0}, + [I(200,30)] = {64,0}, + [I(201,30)] = {64,0}, + [I(202,30)] = {64,0}, + [I(203,30)] = {64,0}, + [I(204,30)] = {64,0}, + [I(205,30)] = {64,0}, + [I(206,30)] = {64,0}, + [I(207,30)] = {64,0}, + [I(208,30)] = {64,0}, + [I(209,30)] = {64,0}, + [I(210,30)] = {64,0}, + [I(211,30)] = {64,0}, + [I(212,30)] = {64,0}, + [I(213,30)] = {64,0}, + [I(214,30)] = {64,0}, + [I(215,30)] = {64,0}, + [I(216,30)] = {64,0}, + [I(217,30)] = {64,0}, + [I(218,30)] = {64,0}, + [I(219,30)] = {64,0}, + [I(220,30)] = {64,0}, + [I(221,30)] = {64,0}, + [I(222,30)] = {64,0}, + [I(223,30)] = {64,0}, + [I(224,30)] = {64,0}, + [I(225,30)] = {64,0}, + [I(226,30)] = {64,0}, + [I(227,30)] = {64,0}, + [I(228,30)] = {64,0}, + [I(229,30)] = {64,0}, + [I(230,30)] = {64,0}, + [I(231,30)] = {64,0}, + [I(232,30)] = {64,0}, + [I(233,30)] = {64,0}, + [I(234,30)] = {64,0}, + [I(235,30)] = {64,0}, + [I(236,30)] = {64,0}, + [I(237,30)] = {64,0}, + [I(238,30)] = {64,0}, + [I(239,30)] = {64,0}, + [I(240,30)] = {64,0}, + [I(241,30)] = {64,0}, + [I(242,30)] = {64,0}, + [I(243,30)] = {64,0}, + [I(244,30)] = {64,0}, + [I(245,30)] = {64,0}, + [I(246,30)] = {64,0}, + [I(247,30)] = {64,0}, + [I(248,30)] = {64,0}, + [I(249,30)] = {64,0}, + [I(250,30)] = {64,0}, + [I(251,30)] = {64,0}, + [I(252,30)] = {64,0}, + [I(253,30)] = {64,0}, + [I(254,30)] = {64,0}, + [I(255,30)] = {64,0}, + [I(0,31)] = {64,0}, + [I(1,31)] = {64,0}, + [I(2,31)] = {64,0}, + [I(3,31)] = {64,0}, + [I(4,31)] = {64,0}, + [I(5,31)] = {64,0}, + [I(6,31)] = {64,0}, + [I(7,31)] = {64,0}, + [I(8,31)] = {64,0}, + [I(9,31)] = {64,0}, + [I(10,31)] = {64,0}, + [I(11,31)] = {64,0}, + [I(12,31)] = {64,0}, + [I(13,31)] = {64,0}, + [I(14,31)] = {64,0}, + [I(15,31)] = {64,0}, + [I(16,31)] = {64,0}, + [I(17,31)] = {64,0}, + [I(18,31)] = {64,0}, + [I(19,31)] = {64,0}, + [I(20,31)] = {64,0}, + [I(21,31)] = {64,0}, + [I(22,31)] = {64,0}, + [I(23,31)] = {64,0}, + [I(24,31)] = {64,0}, + [I(25,31)] = {64,0}, + [I(26,31)] = {64,0}, + [I(27,31)] = {64,0}, + [I(28,31)] = {64,0}, + [I(29,31)] = {64,0}, + [I(30,31)] = {64,0}, + [I(31,31)] = {64,0}, + [I(32,31)] = {64,0}, + [I(33,31)] = {64,0}, + [I(34,31)] = {64,0}, + [I(35,31)] = {64,0}, + [I(36,31)] = {64,0}, + [I(37,31)] = {64,0}, + [I(38,31)] = {64,0}, + [I(39,31)] = {64,0}, + [I(40,31)] = {64,0}, + [I(41,31)] = {64,0}, + [I(42,31)] = {64,0}, + [I(43,31)] = {64,0}, + [I(44,31)] = {64,0}, + [I(45,31)] = {64,0}, + [I(46,31)] = {64,0}, + [I(47,31)] = {64,0}, + [I(48,31)] = {64,0}, + [I(49,31)] = {64,0}, + [I(50,31)] = {64,0}, + [I(51,31)] = {64,0}, + [I(52,31)] = {64,0}, + [I(53,31)] = {64,0}, + [I(54,31)] = {64,0}, + [I(55,31)] = {64,0}, + [I(56,31)] = {64,0}, + [I(57,31)] = {64,0}, + [I(58,31)] = {64,0}, + [I(59,31)] = {64,0}, + [I(60,31)] = {64,0}, + [I(61,31)] = {64,0}, + [I(62,31)] = {64,0}, + [I(63,31)] = {64,0}, + [I(64,31)] = {64,0}, + [I(65,31)] = {64,0}, + [I(66,31)] = {64,0}, + [I(67,31)] = {64,0}, + [I(68,31)] = {64,0}, + [I(69,31)] = {64,0}, + [I(70,31)] = {64,0}, + [I(71,31)] = {64,0}, + [I(72,31)] = {64,0}, + [I(73,31)] = {64,0}, + [I(74,31)] = {64,0}, + [I(75,31)] = {64,0}, + [I(76,31)] = {64,0}, + [I(77,31)] = {64,0}, + [I(78,31)] = {64,0}, + [I(79,31)] = {64,0}, + [I(80,31)] = {64,0}, + [I(81,31)] = {64,0}, + [I(82,31)] = {64,0}, + [I(83,31)] = {64,0}, + [I(84,31)] = {64,0}, + [I(85,31)] = {64,0}, + [I(86,31)] = {64,0}, + [I(87,31)] = {64,0}, + [I(88,31)] = {64,0}, + [I(89,31)] = {64,0}, + [I(90,31)] = {64,0}, + [I(91,31)] = {64,0}, + [I(92,31)] = {64,0}, + [I(93,31)] = {64,0}, + [I(94,31)] = {64,0}, + [I(95,31)] = {64,0}, + [I(96,31)] = {64,0}, + [I(97,31)] = {64,0}, + [I(98,31)] = {64,0}, + [I(99,31)] = {64,0}, + [I(100,31)] = {64,0}, + [I(101,31)] = {64,0}, + [I(102,31)] = {64,0}, + [I(103,31)] = {64,0}, + [I(104,31)] = {64,0}, + [I(105,31)] = {64,0}, + [I(106,31)] = {64,0}, + [I(107,31)] = {64,0}, + [I(108,31)] = {64,0}, + [I(109,31)] = {64,0}, + [I(110,31)] = {64,0}, + [I(111,31)] = {64,0}, + [I(112,31)] = {64,0}, + [I(113,31)] = {64,0}, + [I(114,31)] = {64,0}, + [I(115,31)] = {64,0}, + [I(116,31)] = {64,0}, + [I(117,31)] = {64,0}, + [I(118,31)] = {64,0}, + [I(119,31)] = {64,0}, + [I(120,31)] = {64,0}, + [I(121,31)] = {64,0}, + [I(122,31)] = {64,0}, + [I(123,31)] = {64,0}, + [I(124,31)] = {64,0}, + [I(125,31)] = {64,0}, + [I(126,31)] = {64,0}, + [I(127,31)] = {64,0}, + [I(128,31)] = {64,0}, + [I(129,31)] = {64,0}, + [I(130,31)] = {64,0}, + [I(131,31)] = {64,0}, + [I(132,31)] = {64,0}, + [I(133,31)] = {64,0}, + [I(134,31)] = {64,0}, + [I(135,31)] = {64,0}, + [I(136,31)] = {64,0}, + [I(137,31)] = {64,0}, + [I(138,31)] = {64,0}, + [I(139,31)] = {64,0}, + [I(140,31)] = {64,0}, + [I(141,31)] = {64,0}, + [I(142,31)] = {64,0}, + [I(143,31)] = {64,0}, + [I(144,31)] = {64,0}, + [I(145,31)] = {64,0}, + [I(146,31)] = {64,0}, + [I(147,31)] = {64,0}, + [I(148,31)] = {64,0}, + [I(149,31)] = {64,0}, + [I(150,31)] = {64,0}, + [I(151,31)] = {64,0}, + [I(152,31)] = {64,0}, + [I(153,31)] = {64,0}, + [I(154,31)] = {64,0}, + [I(155,31)] = {64,0}, + [I(156,31)] = {64,0}, + [I(157,31)] = {64,0}, + [I(158,31)] = {64,0}, + [I(159,31)] = {64,0}, + [I(160,31)] = {64,0}, + [I(161,31)] = {64,0}, + [I(162,31)] = {64,0}, + [I(163,31)] = {64,0}, + [I(164,31)] = {64,0}, + [I(165,31)] = {64,0}, + [I(166,31)] = {64,0}, + [I(167,31)] = {64,0}, + [I(168,31)] = {64,0}, + [I(169,31)] = {64,0}, + [I(170,31)] = {64,0}, + [I(171,31)] = {64,0}, + [I(172,31)] = {64,0}, + [I(173,31)] = {64,0}, + [I(174,31)] = {64,0}, + [I(175,31)] = {64,0}, + [I(176,31)] = {64,0}, + [I(177,31)] = {64,0}, + [I(178,31)] = {64,0}, + [I(179,31)] = {64,0}, + [I(180,31)] = {64,0}, + [I(181,31)] = {64,0}, + [I(182,31)] = {64,0}, + [I(183,31)] = {64,0}, + [I(184,31)] = {64,0}, + [I(185,31)] = {64,0}, + [I(186,31)] = {64,0}, + [I(187,31)] = {64,0}, + [I(188,31)] = {64,0}, + [I(189,31)] = {64,0}, + [I(190,31)] = {64,0}, + [I(191,31)] = {64,0}, + [I(192,31)] = {64,0}, + [I(193,31)] = {64,0}, + [I(194,31)] = {64,0}, + [I(195,31)] = {64,0}, + [I(196,31)] = {64,0}, + [I(197,31)] = {64,0}, + [I(198,31)] = {64,0}, + [I(199,31)] = {64,0}, + [I(200,31)] = {64,0}, + [I(201,31)] = {64,0}, + [I(202,31)] = {64,0}, + [I(203,31)] = {64,0}, + [I(204,31)] = {64,0}, + [I(205,31)] = {64,0}, + [I(206,31)] = {64,0}, + [I(207,31)] = {64,0}, + [I(208,31)] = {64,0}, + [I(209,31)] = {64,0}, + [I(210,31)] = {64,0}, + [I(211,31)] = {64,0}, + [I(212,31)] = {64,0}, + [I(213,31)] = {64,0}, + [I(214,31)] = {64,0}, + [I(215,31)] = {64,0}, + [I(216,31)] = {64,0}, + [I(217,31)] = {64,0}, + [I(218,31)] = {64,0}, + [I(219,31)] = {64,0}, + [I(220,31)] = {64,0}, + [I(221,31)] = {64,0}, + [I(222,31)] = {64,0}, + [I(223,31)] = {64,0}, + [I(224,31)] = {64,0}, + [I(225,31)] = {64,0}, + [I(226,31)] = {64,0}, + [I(227,31)] = {64,0}, + [I(228,31)] = {64,0}, + [I(229,31)] = {64,0}, + [I(230,31)] = {64,0}, + [I(231,31)] = {64,0}, + [I(232,31)] = {64,0}, + [I(233,31)] = {64,0}, + [I(234,31)] = {64,0}, + [I(235,31)] = {64,0}, + [I(236,31)] = {64,0}, + [I(237,31)] = {64,0}, + [I(238,31)] = {64,0}, + [I(239,31)] = {64,0}, + [I(240,31)] = {64,0}, + [I(241,31)] = {64,0}, + [I(242,31)] = {64,0}, + [I(243,31)] = {64,0}, + [I(244,31)] = {64,0}, + [I(245,31)] = {64,0}, + [I(246,31)] = {64,0}, + [I(247,31)] = {64,0}, + [I(248,31)] = {64,0}, + [I(249,31)] = {64,0}, + [I(250,31)] = {64,0}, + [I(251,31)] = {64,0}, + [I(252,31)] = {64,0}, + [I(253,31)] = {64,0}, + [I(254,31)] = {64,0}, + [I(255,31)] = {64,0}, + [I(0,32)] = {19,0x7FE14}, + [I(1,32)] = {29,0x1FFFF614}, + [I(2,32)] = {64,0}, + [I(3,32)] = {64,0}, + [I(4,32)] = {64,0}, + [I(5,32)] = {64,0}, + [I(6,32)] = {64,0}, + [I(7,32)] = {64,0}, + [I(8,32)] = {64,0}, + [I(9,32)] = {30,0x3FFFFA94}, + [I(10,32)] = {64,0}, + [I(11,32)] = {64,0}, + [I(12,32)] = {64,0}, + [I(13,32)] = {64,0}, + [I(14,32)] = {64,0}, + [I(15,32)] = {64,0}, + [I(16,32)] = {64,0}, + [I(17,32)] = {64,0}, + [I(18,32)] = {64,0}, + [I(19,32)] = {64,0}, + [I(20,32)] = {64,0}, + [I(21,32)] = {64,0}, + [I(22,32)] = {64,0}, + [I(23,32)] = {64,0}, + [I(24,32)] = {64,0}, + [I(25,32)] = {64,0}, + [I(26,32)] = {64,0}, + [I(27,32)] = {64,0}, + [I(28,32)] = {64,0}, + [I(29,32)] = {64,0}, + [I(30,32)] = {64,0}, + [I(31,32)] = {64,0}, + [I(32,32)] = {12,0x514}, + [I(33,32)] = {16,0xFE14}, + [I(34,32)] = {16,0xFE54}, + [I(35,32)] = {18,0x3FE94}, + [I(36,32)] = {19,0x7FE54}, + [I(37,32)] = {12,0x554}, + [I(38,32)] = {14,0x3E14}, + [I(39,32)] = {17,0x1FE94}, + [I(40,32)] = {16,0xFE94}, + [I(41,32)] = {16,0xFED4}, + [I(42,32)] = {14,0x3E54}, + [I(43,32)] = {17,0x1FED4}, + [I(44,32)] = {14,0x3E94}, + [I(45,32)] = {12,0x594}, + [I(46,32)] = {12,0x5D4}, + [I(47,32)] = {12,0x614}, + [I(48,32)] = {11,0x14}, + [I(49,32)] = {11,0x54}, + [I(50,32)] = {11,0x94}, + [I(51,32)] = {12,0x654}, + [I(52,32)] = {12,0x694}, + [I(53,32)] = {12,0x6D4}, + [I(54,32)] = {12,0x714}, + [I(55,32)] = {12,0x754}, + [I(56,32)] = {12,0x794}, + [I(57,32)] = {12,0x7D4}, + [I(58,32)] = {13,0x1714}, + [I(59,32)] = {14,0x3ED4}, + [I(60,32)] = {21,0x1FFF14}, + [I(61,32)] = {12,0x814}, + [I(62,32)] = {18,0x3FED4}, + [I(63,32)] = {16,0xFF14}, + [I(64,32)] = {19,0x7FE94}, + [I(65,32)] = {12,0x854}, + [I(66,32)] = {13,0x1754}, + [I(67,32)] = {13,0x1794}, + [I(68,32)] = {13,0x17D4}, + [I(69,32)] = {13,0x1814}, + [I(70,32)] = {13,0x1854}, + [I(71,32)] = {13,0x1894}, + [I(72,32)] = {13,0x18D4}, + [I(73,32)] = {13,0x1914}, + [I(74,32)] = {13,0x1954}, + [I(75,32)] = {13,0x1994}, + [I(76,32)] = {13,0x19D4}, + [I(77,32)] = {13,0x1A14}, + [I(78,32)] = {13,0x1A54}, + [I(79,32)] = {13,0x1A94}, + [I(80,32)] = {13,0x1AD4}, + [I(81,32)] = {13,0x1B14}, + [I(82,32)] = {13,0x1B54}, + [I(83,32)] = {13,0x1B94}, + [I(84,32)] = {13,0x1BD4}, + [I(85,32)] = {13,0x1C14}, + [I(86,32)] = {13,0x1C54}, + [I(87,32)] = {13,0x1C94}, + [I(88,32)] = {14,0x3F14}, + [I(89,32)] = {13,0x1CD4}, + [I(90,32)] = {14,0x3F54}, + [I(91,32)] = {19,0x7FED4}, + [I(92,32)] = {25,0x1FFFC14}, + [I(93,32)] = {19,0x7FF14}, + [I(94,32)] = {20,0xFFF14}, + [I(95,32)] = {12,0x894}, + [I(96,32)] = {21,0x1FFF54}, + [I(97,32)] = {11,0xD4}, + [I(98,32)] = {12,0x8D4}, + [I(99,32)] = {11,0x114}, + [I(100,32)] = {12,0x914}, + [I(101,32)] = {11,0x154}, + [I(102,32)] = {12,0x954}, + [I(103,32)] = {12,0x994}, + [I(104,32)] = {12,0x9D4}, + [I(105,32)] = {11,0x194}, + [I(106,32)] = {13,0x1D14}, + [I(107,32)] = {13,0x1D54}, + [I(108,32)] = {12,0xA14}, + [I(109,32)] = {12,0xA54}, + [I(110,32)] = {12,0xA94}, + [I(111,32)] = {11,0x1D4}, + [I(112,32)] = {12,0xAD4}, + [I(113,32)] = {13,0x1D94}, + [I(114,32)] = {12,0xB14}, + [I(115,32)] = {11,0x214}, + [I(116,32)] = {11,0x254}, + [I(117,32)] = {12,0xB54}, + [I(118,32)] = {13,0x1DD4}, + [I(119,32)] = {13,0x1E14}, + [I(120,32)] = {13,0x1E54}, + [I(121,32)] = {13,0x1E94}, + [I(122,32)] = {13,0x1ED4}, + [I(123,32)] = {21,0x1FFF94}, + [I(124,32)] = {17,0x1FF14}, + [I(125,32)] = {20,0xFFF54}, + [I(126,32)] = {19,0x7FF54}, + [I(127,32)] = {64,0}, + [I(128,32)] = {26,0x3FFF994}, + [I(129,32)] = {28,0xFFFF494}, + [I(130,32)] = {26,0x3FFF9D4}, + [I(131,32)] = {26,0x3FFFA14}, + [I(132,32)] = {28,0xFFFF4D4}, + [I(133,32)] = {28,0xFFFF514}, + [I(134,32)] = {28,0xFFFF554}, + [I(135,32)] = {29,0x1FFFF654}, + [I(136,32)] = {28,0xFFFF594}, + [I(137,32)] = {29,0x1FFFF694}, + [I(138,32)] = {29,0x1FFFF6D4}, + [I(139,32)] = {29,0x1FFFF714}, + [I(140,32)] = {29,0x1FFFF754}, + [I(141,32)] = {29,0x1FFFF794}, + [I(142,32)] = {30,0x3FFFFAD4}, + [I(143,32)] = {29,0x1FFFF7D4}, + [I(144,32)] = {30,0x3FFFFB14}, + [I(145,32)] = {30,0x3FFFFB54}, + [I(146,32)] = {28,0xFFFF5D4}, + [I(147,32)] = {29,0x1FFFF814}, + [I(148,32)] = {30,0x3FFFFB94}, + [I(149,32)] = {29,0x1FFFF854}, + [I(150,32)] = {29,0x1FFFF894}, + [I(151,32)] = {29,0x1FFFF8D4}, + [I(152,32)] = {29,0x1FFFF914}, + [I(153,32)] = {27,0x7FFF714}, + [I(154,32)] = {28,0xFFFF614}, + [I(155,32)] = {29,0x1FFFF954}, + [I(156,32)] = {28,0xFFFF654}, + [I(157,32)] = {29,0x1FFFF994}, + [I(158,32)] = {29,0x1FFFF9D4}, + [I(159,32)] = {30,0x3FFFFBD4}, + [I(160,32)] = {28,0xFFFF694}, + [I(161,32)] = {27,0x7FFF754}, + [I(162,32)] = {26,0x3FFFA54}, + [I(163,32)] = {28,0xFFFF6D4}, + [I(164,32)] = {28,0xFFFF714}, + [I(165,32)] = {29,0x1FFFFA14}, + [I(166,32)] = {29,0x1FFFFA54}, + [I(167,32)] = {27,0x7FFF794}, + [I(168,32)] = {29,0x1FFFFA94}, + [I(169,32)] = {28,0xFFFF754}, + [I(170,32)] = {28,0xFFFF794}, + [I(171,32)] = {30,0x3FFFFC14}, + [I(172,32)] = {27,0x7FFF7D4}, + [I(173,32)] = {28,0xFFFF7D4}, + [I(174,32)] = {29,0x1FFFFAD4}, + [I(175,32)] = {29,0x1FFFFB14}, + [I(176,32)] = {27,0x7FFF814}, + [I(177,32)] = {27,0x7FFF854}, + [I(178,32)] = {28,0xFFFF814}, + [I(179,32)] = {27,0x7FFF894}, + [I(180,32)] = {29,0x1FFFFB54}, + [I(181,32)] = {28,0xFFFF854}, + [I(182,32)] = {29,0x1FFFFB94}, + [I(183,32)] = {29,0x1FFFFBD4}, + [I(184,32)] = {26,0x3FFFA94}, + [I(185,32)] = {28,0xFFFF894}, + [I(186,32)] = {28,0xFFFF8D4}, + [I(187,32)] = {28,0xFFFF914}, + [I(188,32)] = {29,0x1FFFFC14}, + [I(189,32)] = {28,0xFFFF954}, + [I(190,32)] = {28,0xFFFF994}, + [I(191,32)] = {29,0x1FFFFC54}, + [I(192,32)] = {X32,0xFFFFF814}, + [I(193,32)] = {X32,0xFFFFF854}, + [I(194,32)] = {26,0x3FFFAD4}, + [I(195,32)] = {25,0x1FFFC54}, + [I(196,32)] = {28,0xFFFF9D4}, + [I(197,32)] = {29,0x1FFFFC94}, + [I(198,32)] = {28,0xFFFFA14}, + [I(199,32)] = {31,0x7FFFFB14}, + [I(200,32)] = {X32,0xFFFFF894}, + [I(201,32)] = {X32,0xFFFFF8D4}, + [I(202,32)] = {X32,0xFFFFF914}, + [I(203,32)] = {64,0}, + [I(204,32)] = {64,0}, + [I(205,32)] = {X32,0xFFFFF954}, + [I(206,32)] = {30,0x3FFFFC54}, + [I(207,32)] = {31,0x7FFFFB54}, + [I(208,32)] = {25,0x1FFFC94}, + [I(209,32)] = {27,0x7FFF8D4}, + [I(210,32)] = {X32,0xFFFFF994}, + [I(211,32)] = {64,0}, + [I(212,32)] = {64,0}, + [I(213,32)] = {X32,0xFFFFF9D4}, + [I(214,32)] = {64,0}, + [I(215,32)] = {30,0x3FFFFC94}, + [I(216,32)] = {27,0x7FFF914}, + [I(217,32)] = {27,0x7FFF954}, + [I(218,32)] = {X32,0xFFFFFA14}, + [I(219,32)] = {X32,0xFFFFFA54}, + [I(220,32)] = {64,0}, + [I(221,32)] = {64,0}, + [I(222,32)] = {64,0}, + [I(223,32)] = {64,0}, + [I(224,32)] = {26,0x3FFFB14}, + [I(225,32)] = {30,0x3FFFFCD4}, + [I(226,32)] = {26,0x3FFFB54}, + [I(227,32)] = {27,0x7FFF994}, + [I(228,32)] = {28,0xFFFFA54}, + [I(229,32)] = {27,0x7FFF9D4}, + [I(230,32)] = {27,0x7FFFA14}, + [I(231,32)] = {29,0x1FFFFCD4}, + [I(232,32)] = {28,0xFFFFA94}, + [I(233,32)] = {28,0xFFFFAD4}, + [I(234,32)] = {31,0x7FFFFB94}, + [I(235,32)] = {31,0x7FFFFBD4}, + [I(236,32)] = {30,0x3FFFFD14}, + [I(237,32)] = {30,0x3FFFFD54}, + [I(238,32)] = {X32,0xFFFFFA94}, + [I(239,32)] = {29,0x1FFFFD14}, + [I(240,32)] = {X32,0xFFFFFAD4}, + [I(241,32)] = {64,0}, + [I(242,32)] = {X32,0xFFFFFB14}, + [I(243,32)] = {X32,0xFFFFFB54}, + [I(244,32)] = {64,0}, + [I(245,32)] = {64,0}, + [I(246,32)] = {64,0}, + [I(247,32)] = {64,0}, + [I(248,32)] = {64,0}, + [I(249,32)] = {64,0}, + [I(250,32)] = {64,0}, + [I(251,32)] = {64,0}, + [I(252,32)] = {64,0}, + [I(253,32)] = {64,0}, + [I(254,32)] = {64,0}, + [I(255,32)] = {X32,0xFFFFFB94}, + [I(0,33)] = {23,0x7FE3F8}, + [I(1,33)] = {64,0}, + [I(2,33)] = {64,0}, + [I(3,33)] = {64,0}, + [I(4,33)] = {64,0}, + [I(5,33)] = {64,0}, + [I(6,33)] = {64,0}, + [I(7,33)] = {64,0}, + [I(8,33)] = {64,0}, + [I(9,33)] = {64,0}, + [I(10,33)] = {64,0}, + [I(11,33)] = {64,0}, + [I(12,33)] = {64,0}, + [I(13,33)] = {64,0}, + [I(14,33)] = {64,0}, + [I(15,33)] = {64,0}, + [I(16,33)] = {64,0}, + [I(17,33)] = {64,0}, + [I(18,33)] = {64,0}, + [I(19,33)] = {64,0}, + [I(20,33)] = {64,0}, + [I(21,33)] = {64,0}, + [I(22,33)] = {64,0}, + [I(23,33)] = {64,0}, + [I(24,33)] = {64,0}, + [I(25,33)] = {64,0}, + [I(26,33)] = {64,0}, + [I(27,33)] = {64,0}, + [I(28,33)] = {64,0}, + [I(29,33)] = {64,0}, + [I(30,33)] = {64,0}, + [I(31,33)] = {64,0}, + [I(32,33)] = {16,0x53F8}, + [I(33,33)] = {20,0xFE3F8}, + [I(34,33)] = {20,0xFE7F8}, + [I(35,33)] = {22,0x3FEBF8}, + [I(36,33)] = {23,0x7FE7F8}, + [I(37,33)] = {16,0x57F8}, + [I(38,33)] = {18,0x3E3F8}, + [I(39,33)] = {21,0x1FEBF8}, + [I(40,33)] = {20,0xFEBF8}, + [I(41,33)] = {20,0xFEFF8}, + [I(42,33)] = {18,0x3E7F8}, + [I(43,33)] = {21,0x1FEFF8}, + [I(44,33)] = {18,0x3EBF8}, + [I(45,33)] = {16,0x5BF8}, + [I(46,33)] = {16,0x5FF8}, + [I(47,33)] = {16,0x63F8}, + [I(48,33)] = {15,0x3F8}, + [I(49,33)] = {15,0x7F8}, + [I(50,33)] = {15,0xBF8}, + [I(51,33)] = {16,0x67F8}, + [I(52,33)] = {16,0x6BF8}, + [I(53,33)] = {16,0x6FF8}, + [I(54,33)] = {16,0x73F8}, + [I(55,33)] = {16,0x77F8}, + [I(56,33)] = {16,0x7BF8}, + [I(57,33)] = {16,0x7FF8}, + [I(58,33)] = {17,0x173F8}, + [I(59,33)] = {18,0x3EFF8}, + [I(60,33)] = {25,0x1FFF3F8}, + [I(61,33)] = {16,0x83F8}, + [I(62,33)] = {22,0x3FEFF8}, + [I(63,33)] = {20,0xFF3F8}, + [I(64,33)] = {23,0x7FEBF8}, + [I(65,33)] = {16,0x87F8}, + [I(66,33)] = {17,0x177F8}, + [I(67,33)] = {17,0x17BF8}, + [I(68,33)] = {17,0x17FF8}, + [I(69,33)] = {17,0x183F8}, + [I(70,33)] = {17,0x187F8}, + [I(71,33)] = {17,0x18BF8}, + [I(72,33)] = {17,0x18FF8}, + [I(73,33)] = {17,0x193F8}, + [I(74,33)] = {17,0x197F8}, + [I(75,33)] = {17,0x19BF8}, + [I(76,33)] = {17,0x19FF8}, + [I(77,33)] = {17,0x1A3F8}, + [I(78,33)] = {17,0x1A7F8}, + [I(79,33)] = {17,0x1ABF8}, + [I(80,33)] = {17,0x1AFF8}, + [I(81,33)] = {17,0x1B3F8}, + [I(82,33)] = {17,0x1B7F8}, + [I(83,33)] = {17,0x1BBF8}, + [I(84,33)] = {17,0x1BFF8}, + [I(85,33)] = {17,0x1C3F8}, + [I(86,33)] = {17,0x1C7F8}, + [I(87,33)] = {17,0x1CBF8}, + [I(88,33)] = {18,0x3F3F8}, + [I(89,33)] = {17,0x1CFF8}, + [I(90,33)] = {18,0x3F7F8}, + [I(91,33)] = {23,0x7FEFF8}, + [I(92,33)] = {29,0x1FFFC3F8}, + [I(93,33)] = {23,0x7FF3F8}, + [I(94,33)] = {24,0xFFF3F8}, + [I(95,33)] = {16,0x8BF8}, + [I(96,33)] = {25,0x1FFF7F8}, + [I(97,33)] = {15,0xFF8}, + [I(98,33)] = {16,0x8FF8}, + [I(99,33)] = {15,0x13F8}, + [I(100,33)] = {16,0x93F8}, + [I(101,33)] = {15,0x17F8}, + [I(102,33)] = {16,0x97F8}, + [I(103,33)] = {16,0x9BF8}, + [I(104,33)] = {16,0x9FF8}, + [I(105,33)] = {15,0x1BF8}, + [I(106,33)] = {17,0x1D3F8}, + [I(107,33)] = {17,0x1D7F8}, + [I(108,33)] = {16,0xA3F8}, + [I(109,33)] = {16,0xA7F8}, + [I(110,33)] = {16,0xABF8}, + [I(111,33)] = {15,0x1FF8}, + [I(112,33)] = {16,0xAFF8}, + [I(113,33)] = {17,0x1DBF8}, + [I(114,33)] = {16,0xB3F8}, + [I(115,33)] = {15,0x23F8}, + [I(116,33)] = {15,0x27F8}, + [I(117,33)] = {16,0xB7F8}, + [I(118,33)] = {17,0x1DFF8}, + [I(119,33)] = {17,0x1E3F8}, + [I(120,33)] = {17,0x1E7F8}, + [I(121,33)] = {17,0x1EBF8}, + [I(122,33)] = {17,0x1EFF8}, + [I(123,33)] = {25,0x1FFFBF8}, + [I(124,33)] = {21,0x1FF3F8}, + [I(125,33)] = {24,0xFFF7F8}, + [I(126,33)] = {23,0x7FF7F8}, + [I(127,33)] = {64,0}, + [I(128,33)] = {30,0x3FFF9BF8}, + [I(129,33)] = {X32,0xFFFF4BF8}, + [I(130,33)] = {30,0x3FFF9FF8}, + [I(131,33)] = {30,0x3FFFA3F8}, + [I(132,33)] = {X32,0xFFFF4FF8}, + [I(133,33)] = {X32,0xFFFF53F8}, + [I(134,33)] = {X32,0xFFFF57F8}, + [I(135,33)] = {64,0}, + [I(136,33)] = {X32,0xFFFF5BF8}, + [I(137,33)] = {64,0}, + [I(138,33)] = {64,0}, + [I(139,33)] = {64,0}, + [I(140,33)] = {64,0}, + [I(141,33)] = {64,0}, + [I(142,33)] = {64,0}, + [I(143,33)] = {64,0}, + [I(144,33)] = {64,0}, + [I(145,33)] = {64,0}, + [I(146,33)] = {X32,0xFFFF5FF8}, + [I(147,33)] = {64,0}, + [I(148,33)] = {64,0}, + [I(149,33)] = {64,0}, + [I(150,33)] = {64,0}, + [I(151,33)] = {64,0}, + [I(152,33)] = {64,0}, + [I(153,33)] = {31,0x7FFF73F8}, + [I(154,33)] = {X32,0xFFFF63F8}, + [I(155,33)] = {64,0}, + [I(156,33)] = {X32,0xFFFF67F8}, + [I(157,33)] = {64,0}, + [I(158,33)] = {64,0}, + [I(159,33)] = {64,0}, + [I(160,33)] = {X32,0xFFFF6BF8}, + [I(161,33)] = {31,0x7FFF77F8}, + [I(162,33)] = {30,0x3FFFA7F8}, + [I(163,33)] = {X32,0xFFFF6FF8}, + [I(164,33)] = {X32,0xFFFF73F8}, + [I(165,33)] = {64,0}, + [I(166,33)] = {64,0}, + [I(167,33)] = {31,0x7FFF7BF8}, + [I(168,33)] = {64,0}, + [I(169,33)] = {X32,0xFFFF77F8}, + [I(170,33)] = {X32,0xFFFF7BF8}, + [I(171,33)] = {64,0}, + [I(172,33)] = {31,0x7FFF7FF8}, + [I(173,33)] = {X32,0xFFFF7FF8}, + [I(174,33)] = {64,0}, + [I(175,33)] = {64,0}, + [I(176,33)] = {31,0x7FFF83F8}, + [I(177,33)] = {31,0x7FFF87F8}, + [I(178,33)] = {X32,0xFFFF83F8}, + [I(179,33)] = {31,0x7FFF8BF8}, + [I(180,33)] = {64,0}, + [I(181,33)] = {X32,0xFFFF87F8}, + [I(182,33)] = {64,0}, + [I(183,33)] = {64,0}, + [I(184,33)] = {30,0x3FFFABF8}, + [I(185,33)] = {X32,0xFFFF8BF8}, + [I(186,33)] = {X32,0xFFFF8FF8}, + [I(187,33)] = {X32,0xFFFF93F8}, + [I(188,33)] = {64,0}, + [I(189,33)] = {X32,0xFFFF97F8}, + [I(190,33)] = {X32,0xFFFF9BF8}, + [I(191,33)] = {64,0}, + [I(192,33)] = {64,0}, + [I(193,33)] = {64,0}, + [I(194,33)] = {30,0x3FFFAFF8}, + [I(195,33)] = {29,0x1FFFC7F8}, + [I(196,33)] = {X32,0xFFFF9FF8}, + [I(197,33)] = {64,0}, + [I(198,33)] = {X32,0xFFFFA3F8}, + [I(199,33)] = {64,0}, + [I(200,33)] = {64,0}, + [I(201,33)] = {64,0}, + [I(202,33)] = {64,0}, + [I(203,33)] = {64,0}, + [I(204,33)] = {64,0}, + [I(205,33)] = {64,0}, + [I(206,33)] = {64,0}, + [I(207,33)] = {64,0}, + [I(208,33)] = {29,0x1FFFCBF8}, + [I(209,33)] = {31,0x7FFF8FF8}, + [I(210,33)] = {64,0}, + [I(211,33)] = {64,0}, + [I(212,33)] = {64,0}, + [I(213,33)] = {64,0}, + [I(214,33)] = {64,0}, + [I(215,33)] = {64,0}, + [I(216,33)] = {31,0x7FFF93F8}, + [I(217,33)] = {31,0x7FFF97F8}, + [I(218,33)] = {64,0}, + [I(219,33)] = {64,0}, + [I(220,33)] = {64,0}, + [I(221,33)] = {64,0}, + [I(222,33)] = {64,0}, + [I(223,33)] = {64,0}, + [I(224,33)] = {30,0x3FFFB3F8}, + [I(225,33)] = {64,0}, + [I(226,33)] = {30,0x3FFFB7F8}, + [I(227,33)] = {31,0x7FFF9BF8}, + [I(228,33)] = {X32,0xFFFFA7F8}, + [I(229,33)] = {31,0x7FFF9FF8}, + [I(230,33)] = {31,0x7FFFA3F8}, + [I(231,33)] = {64,0}, + [I(232,33)] = {X32,0xFFFFABF8}, + [I(233,33)] = {X32,0xFFFFAFF8}, + [I(234,33)] = {64,0}, + [I(235,33)] = {64,0}, + [I(236,33)] = {64,0}, + [I(237,33)] = {64,0}, + [I(238,33)] = {64,0}, + [I(239,33)] = {64,0}, + [I(240,33)] = {64,0}, + [I(241,33)] = {64,0}, + [I(242,33)] = {64,0}, + [I(243,33)] = {64,0}, + [I(244,33)] = {64,0}, + [I(245,33)] = {64,0}, + [I(246,33)] = {64,0}, + [I(247,33)] = {64,0}, + [I(248,33)] = {64,0}, + [I(249,33)] = {64,0}, + [I(250,33)] = {64,0}, + [I(251,33)] = {64,0}, + [I(252,33)] = {64,0}, + [I(253,33)] = {64,0}, + [I(254,33)] = {64,0}, + [I(255,33)] = {64,0}, + [I(0,34)] = {23,0x7FE3F9}, + [I(1,34)] = {64,0}, + [I(2,34)] = {64,0}, + [I(3,34)] = {64,0}, + [I(4,34)] = {64,0}, + [I(5,34)] = {64,0}, + [I(6,34)] = {64,0}, + [I(7,34)] = {64,0}, + [I(8,34)] = {64,0}, + [I(9,34)] = {64,0}, + [I(10,34)] = {64,0}, + [I(11,34)] = {64,0}, + [I(12,34)] = {64,0}, + [I(13,34)] = {64,0}, + [I(14,34)] = {64,0}, + [I(15,34)] = {64,0}, + [I(16,34)] = {64,0}, + [I(17,34)] = {64,0}, + [I(18,34)] = {64,0}, + [I(19,34)] = {64,0}, + [I(20,34)] = {64,0}, + [I(21,34)] = {64,0}, + [I(22,34)] = {64,0}, + [I(23,34)] = {64,0}, + [I(24,34)] = {64,0}, + [I(25,34)] = {64,0}, + [I(26,34)] = {64,0}, + [I(27,34)] = {64,0}, + [I(28,34)] = {64,0}, + [I(29,34)] = {64,0}, + [I(30,34)] = {64,0}, + [I(31,34)] = {64,0}, + [I(32,34)] = {16,0x53F9}, + [I(33,34)] = {20,0xFE3F9}, + [I(34,34)] = {20,0xFE7F9}, + [I(35,34)] = {22,0x3FEBF9}, + [I(36,34)] = {23,0x7FE7F9}, + [I(37,34)] = {16,0x57F9}, + [I(38,34)] = {18,0x3E3F9}, + [I(39,34)] = {21,0x1FEBF9}, + [I(40,34)] = {20,0xFEBF9}, + [I(41,34)] = {20,0xFEFF9}, + [I(42,34)] = {18,0x3E7F9}, + [I(43,34)] = {21,0x1FEFF9}, + [I(44,34)] = {18,0x3EBF9}, + [I(45,34)] = {16,0x5BF9}, + [I(46,34)] = {16,0x5FF9}, + [I(47,34)] = {16,0x63F9}, + [I(48,34)] = {15,0x3F9}, + [I(49,34)] = {15,0x7F9}, + [I(50,34)] = {15,0xBF9}, + [I(51,34)] = {16,0x67F9}, + [I(52,34)] = {16,0x6BF9}, + [I(53,34)] = {16,0x6FF9}, + [I(54,34)] = {16,0x73F9}, + [I(55,34)] = {16,0x77F9}, + [I(56,34)] = {16,0x7BF9}, + [I(57,34)] = {16,0x7FF9}, + [I(58,34)] = {17,0x173F9}, + [I(59,34)] = {18,0x3EFF9}, + [I(60,34)] = {25,0x1FFF3F9}, + [I(61,34)] = {16,0x83F9}, + [I(62,34)] = {22,0x3FEFF9}, + [I(63,34)] = {20,0xFF3F9}, + [I(64,34)] = {23,0x7FEBF9}, + [I(65,34)] = {16,0x87F9}, + [I(66,34)] = {17,0x177F9}, + [I(67,34)] = {17,0x17BF9}, + [I(68,34)] = {17,0x17FF9}, + [I(69,34)] = {17,0x183F9}, + [I(70,34)] = {17,0x187F9}, + [I(71,34)] = {17,0x18BF9}, + [I(72,34)] = {17,0x18FF9}, + [I(73,34)] = {17,0x193F9}, + [I(74,34)] = {17,0x197F9}, + [I(75,34)] = {17,0x19BF9}, + [I(76,34)] = {17,0x19FF9}, + [I(77,34)] = {17,0x1A3F9}, + [I(78,34)] = {17,0x1A7F9}, + [I(79,34)] = {17,0x1ABF9}, + [I(80,34)] = {17,0x1AFF9}, + [I(81,34)] = {17,0x1B3F9}, + [I(82,34)] = {17,0x1B7F9}, + [I(83,34)] = {17,0x1BBF9}, + [I(84,34)] = {17,0x1BFF9}, + [I(85,34)] = {17,0x1C3F9}, + [I(86,34)] = {17,0x1C7F9}, + [I(87,34)] = {17,0x1CBF9}, + [I(88,34)] = {18,0x3F3F9}, + [I(89,34)] = {17,0x1CFF9}, + [I(90,34)] = {18,0x3F7F9}, + [I(91,34)] = {23,0x7FEFF9}, + [I(92,34)] = {29,0x1FFFC3F9}, + [I(93,34)] = {23,0x7FF3F9}, + [I(94,34)] = {24,0xFFF3F9}, + [I(95,34)] = {16,0x8BF9}, + [I(96,34)] = {25,0x1FFF7F9}, + [I(97,34)] = {15,0xFF9}, + [I(98,34)] = {16,0x8FF9}, + [I(99,34)] = {15,0x13F9}, + [I(100,34)] = {16,0x93F9}, + [I(101,34)] = {15,0x17F9}, + [I(102,34)] = {16,0x97F9}, + [I(103,34)] = {16,0x9BF9}, + [I(104,34)] = {16,0x9FF9}, + [I(105,34)] = {15,0x1BF9}, + [I(106,34)] = {17,0x1D3F9}, + [I(107,34)] = {17,0x1D7F9}, + [I(108,34)] = {16,0xA3F9}, + [I(109,34)] = {16,0xA7F9}, + [I(110,34)] = {16,0xABF9}, + [I(111,34)] = {15,0x1FF9}, + [I(112,34)] = {16,0xAFF9}, + [I(113,34)] = {17,0x1DBF9}, + [I(114,34)] = {16,0xB3F9}, + [I(115,34)] = {15,0x23F9}, + [I(116,34)] = {15,0x27F9}, + [I(117,34)] = {16,0xB7F9}, + [I(118,34)] = {17,0x1DFF9}, + [I(119,34)] = {17,0x1E3F9}, + [I(120,34)] = {17,0x1E7F9}, + [I(121,34)] = {17,0x1EBF9}, + [I(122,34)] = {17,0x1EFF9}, + [I(123,34)] = {25,0x1FFFBF9}, + [I(124,34)] = {21,0x1FF3F9}, + [I(125,34)] = {24,0xFFF7F9}, + [I(126,34)] = {23,0x7FF7F9}, + [I(127,34)] = {64,0}, + [I(128,34)] = {30,0x3FFF9BF9}, + [I(129,34)] = {X32,0xFFFF4BF9}, + [I(130,34)] = {30,0x3FFF9FF9}, + [I(131,34)] = {30,0x3FFFA3F9}, + [I(132,34)] = {X32,0xFFFF4FF9}, + [I(133,34)] = {X32,0xFFFF53F9}, + [I(134,34)] = {X32,0xFFFF57F9}, + [I(135,34)] = {64,0}, + [I(136,34)] = {X32,0xFFFF5BF9}, + [I(137,34)] = {64,0}, + [I(138,34)] = {64,0}, + [I(139,34)] = {64,0}, + [I(140,34)] = {64,0}, + [I(141,34)] = {64,0}, + [I(142,34)] = {64,0}, + [I(143,34)] = {64,0}, + [I(144,34)] = {64,0}, + [I(145,34)] = {64,0}, + [I(146,34)] = {X32,0xFFFF5FF9}, + [I(147,34)] = {64,0}, + [I(148,34)] = {64,0}, + [I(149,34)] = {64,0}, + [I(150,34)] = {64,0}, + [I(151,34)] = {64,0}, + [I(152,34)] = {64,0}, + [I(153,34)] = {31,0x7FFF73F9}, + [I(154,34)] = {X32,0xFFFF63F9}, + [I(155,34)] = {64,0}, + [I(156,34)] = {X32,0xFFFF67F9}, + [I(157,34)] = {64,0}, + [I(158,34)] = {64,0}, + [I(159,34)] = {64,0}, + [I(160,34)] = {X32,0xFFFF6BF9}, + [I(161,34)] = {31,0x7FFF77F9}, + [I(162,34)] = {30,0x3FFFA7F9}, + [I(163,34)] = {X32,0xFFFF6FF9}, + [I(164,34)] = {X32,0xFFFF73F9}, + [I(165,34)] = {64,0}, + [I(166,34)] = {64,0}, + [I(167,34)] = {31,0x7FFF7BF9}, + [I(168,34)] = {64,0}, + [I(169,34)] = {X32,0xFFFF77F9}, + [I(170,34)] = {X32,0xFFFF7BF9}, + [I(171,34)] = {64,0}, + [I(172,34)] = {31,0x7FFF7FF9}, + [I(173,34)] = {X32,0xFFFF7FF9}, + [I(174,34)] = {64,0}, + [I(175,34)] = {64,0}, + [I(176,34)] = {31,0x7FFF83F9}, + [I(177,34)] = {31,0x7FFF87F9}, + [I(178,34)] = {X32,0xFFFF83F9}, + [I(179,34)] = {31,0x7FFF8BF9}, + [I(180,34)] = {64,0}, + [I(181,34)] = {X32,0xFFFF87F9}, + [I(182,34)] = {64,0}, + [I(183,34)] = {64,0}, + [I(184,34)] = {30,0x3FFFABF9}, + [I(185,34)] = {X32,0xFFFF8BF9}, + [I(186,34)] = {X32,0xFFFF8FF9}, + [I(187,34)] = {X32,0xFFFF93F9}, + [I(188,34)] = {64,0}, + [I(189,34)] = {X32,0xFFFF97F9}, + [I(190,34)] = {X32,0xFFFF9BF9}, + [I(191,34)] = {64,0}, + [I(192,34)] = {64,0}, + [I(193,34)] = {64,0}, + [I(194,34)] = {30,0x3FFFAFF9}, + [I(195,34)] = {29,0x1FFFC7F9}, + [I(196,34)] = {X32,0xFFFF9FF9}, + [I(197,34)] = {64,0}, + [I(198,34)] = {X32,0xFFFFA3F9}, + [I(199,34)] = {64,0}, + [I(200,34)] = {64,0}, + [I(201,34)] = {64,0}, + [I(202,34)] = {64,0}, + [I(203,34)] = {64,0}, + [I(204,34)] = {64,0}, + [I(205,34)] = {64,0}, + [I(206,34)] = {64,0}, + [I(207,34)] = {64,0}, + [I(208,34)] = {29,0x1FFFCBF9}, + [I(209,34)] = {31,0x7FFF8FF9}, + [I(210,34)] = {64,0}, + [I(211,34)] = {64,0}, + [I(212,34)] = {64,0}, + [I(213,34)] = {64,0}, + [I(214,34)] = {64,0}, + [I(215,34)] = {64,0}, + [I(216,34)] = {31,0x7FFF93F9}, + [I(217,34)] = {31,0x7FFF97F9}, + [I(218,34)] = {64,0}, + [I(219,34)] = {64,0}, + [I(220,34)] = {64,0}, + [I(221,34)] = {64,0}, + [I(222,34)] = {64,0}, + [I(223,34)] = {64,0}, + [I(224,34)] = {30,0x3FFFB3F9}, + [I(225,34)] = {64,0}, + [I(226,34)] = {30,0x3FFFB7F9}, + [I(227,34)] = {31,0x7FFF9BF9}, + [I(228,34)] = {X32,0xFFFFA7F9}, + [I(229,34)] = {31,0x7FFF9FF9}, + [I(230,34)] = {31,0x7FFFA3F9}, + [I(231,34)] = {64,0}, + [I(232,34)] = {X32,0xFFFFABF9}, + [I(233,34)] = {X32,0xFFFFAFF9}, + [I(234,34)] = {64,0}, + [I(235,34)] = {64,0}, + [I(236,34)] = {64,0}, + [I(237,34)] = {64,0}, + [I(238,34)] = {64,0}, + [I(239,34)] = {64,0}, + [I(240,34)] = {64,0}, + [I(241,34)] = {64,0}, + [I(242,34)] = {64,0}, + [I(243,34)] = {64,0}, + [I(244,34)] = {64,0}, + [I(245,34)] = {64,0}, + [I(246,34)] = {64,0}, + [I(247,34)] = {64,0}, + [I(248,34)] = {64,0}, + [I(249,34)] = {64,0}, + [I(250,34)] = {64,0}, + [I(251,34)] = {64,0}, + [I(252,34)] = {64,0}, + [I(253,34)] = {64,0}, + [I(254,34)] = {64,0}, + [I(255,34)] = {64,0}, + [I(0,35)] = {25,0x1FF8FFA}, + [I(1,35)] = {64,0}, + [I(2,35)] = {64,0}, + [I(3,35)] = {64,0}, + [I(4,35)] = {64,0}, + [I(5,35)] = {64,0}, + [I(6,35)] = {64,0}, + [I(7,35)] = {64,0}, + [I(8,35)] = {64,0}, + [I(9,35)] = {64,0}, + [I(10,35)] = {64,0}, + [I(11,35)] = {64,0}, + [I(12,35)] = {64,0}, + [I(13,35)] = {64,0}, + [I(14,35)] = {64,0}, + [I(15,35)] = {64,0}, + [I(16,35)] = {64,0}, + [I(17,35)] = {64,0}, + [I(18,35)] = {64,0}, + [I(19,35)] = {64,0}, + [I(20,35)] = {64,0}, + [I(21,35)] = {64,0}, + [I(22,35)] = {64,0}, + [I(23,35)] = {64,0}, + [I(24,35)] = {64,0}, + [I(25,35)] = {64,0}, + [I(26,35)] = {64,0}, + [I(27,35)] = {64,0}, + [I(28,35)] = {64,0}, + [I(29,35)] = {64,0}, + [I(30,35)] = {64,0}, + [I(31,35)] = {64,0}, + [I(32,35)] = {18,0x14FFA}, + [I(33,35)] = {22,0x3F8FFA}, + [I(34,35)] = {22,0x3F9FFA}, + [I(35,35)] = {24,0xFFAFFA}, + [I(36,35)] = {25,0x1FF9FFA}, + [I(37,35)] = {18,0x15FFA}, + [I(38,35)] = {20,0xF8FFA}, + [I(39,35)] = {23,0x7FAFFA}, + [I(40,35)] = {22,0x3FAFFA}, + [I(41,35)] = {22,0x3FBFFA}, + [I(42,35)] = {20,0xF9FFA}, + [I(43,35)] = {23,0x7FBFFA}, + [I(44,35)] = {20,0xFAFFA}, + [I(45,35)] = {18,0x16FFA}, + [I(46,35)] = {18,0x17FFA}, + [I(47,35)] = {18,0x18FFA}, + [I(48,35)] = {17,0xFFA}, + [I(49,35)] = {17,0x1FFA}, + [I(50,35)] = {17,0x2FFA}, + [I(51,35)] = {18,0x19FFA}, + [I(52,35)] = {18,0x1AFFA}, + [I(53,35)] = {18,0x1BFFA}, + [I(54,35)] = {18,0x1CFFA}, + [I(55,35)] = {18,0x1DFFA}, + [I(56,35)] = {18,0x1EFFA}, + [I(57,35)] = {18,0x1FFFA}, + [I(58,35)] = {19,0x5CFFA}, + [I(59,35)] = {20,0xFBFFA}, + [I(60,35)] = {27,0x7FFCFFA}, + [I(61,35)] = {18,0x20FFA}, + [I(62,35)] = {24,0xFFBFFA}, + [I(63,35)] = {22,0x3FCFFA}, + [I(64,35)] = {25,0x1FFAFFA}, + [I(65,35)] = {18,0x21FFA}, + [I(66,35)] = {19,0x5DFFA}, + [I(67,35)] = {19,0x5EFFA}, + [I(68,35)] = {19,0x5FFFA}, + [I(69,35)] = {19,0x60FFA}, + [I(70,35)] = {19,0x61FFA}, + [I(71,35)] = {19,0x62FFA}, + [I(72,35)] = {19,0x63FFA}, + [I(73,35)] = {19,0x64FFA}, + [I(74,35)] = {19,0x65FFA}, + [I(75,35)] = {19,0x66FFA}, + [I(76,35)] = {19,0x67FFA}, + [I(77,35)] = {19,0x68FFA}, + [I(78,35)] = {19,0x69FFA}, + [I(79,35)] = {19,0x6AFFA}, + [I(80,35)] = {19,0x6BFFA}, + [I(81,35)] = {19,0x6CFFA}, + [I(82,35)] = {19,0x6DFFA}, + [I(83,35)] = {19,0x6EFFA}, + [I(84,35)] = {19,0x6FFFA}, + [I(85,35)] = {19,0x70FFA}, + [I(86,35)] = {19,0x71FFA}, + [I(87,35)] = {19,0x72FFA}, + [I(88,35)] = {20,0xFCFFA}, + [I(89,35)] = {19,0x73FFA}, + [I(90,35)] = {20,0xFDFFA}, + [I(91,35)] = {25,0x1FFBFFA}, + [I(92,35)] = {31,0x7FFF0FFA}, + [I(93,35)] = {25,0x1FFCFFA}, + [I(94,35)] = {26,0x3FFCFFA}, + [I(95,35)] = {18,0x22FFA}, + [I(96,35)] = {27,0x7FFDFFA}, + [I(97,35)] = {17,0x3FFA}, + [I(98,35)] = {18,0x23FFA}, + [I(99,35)] = {17,0x4FFA}, + [I(100,35)] = {18,0x24FFA}, + [I(101,35)] = {17,0x5FFA}, + [I(102,35)] = {18,0x25FFA}, + [I(103,35)] = {18,0x26FFA}, + [I(104,35)] = {18,0x27FFA}, + [I(105,35)] = {17,0x6FFA}, + [I(106,35)] = {19,0x74FFA}, + [I(107,35)] = {19,0x75FFA}, + [I(108,35)] = {18,0x28FFA}, + [I(109,35)] = {18,0x29FFA}, + [I(110,35)] = {18,0x2AFFA}, + [I(111,35)] = {17,0x7FFA}, + [I(112,35)] = {18,0x2BFFA}, + [I(113,35)] = {19,0x76FFA}, + [I(114,35)] = {18,0x2CFFA}, + [I(115,35)] = {17,0x8FFA}, + [I(116,35)] = {17,0x9FFA}, + [I(117,35)] = {18,0x2DFFA}, + [I(118,35)] = {19,0x77FFA}, + [I(119,35)] = {19,0x78FFA}, + [I(120,35)] = {19,0x79FFA}, + [I(121,35)] = {19,0x7AFFA}, + [I(122,35)] = {19,0x7BFFA}, + [I(123,35)] = {27,0x7FFEFFA}, + [I(124,35)] = {23,0x7FCFFA}, + [I(125,35)] = {26,0x3FFDFFA}, + [I(126,35)] = {25,0x1FFDFFA}, + [I(127,35)] = {64,0}, + [I(128,35)] = {X32,0xFFFE6FFA}, + [I(129,35)] = {64,0}, + [I(130,35)] = {X32,0xFFFE7FFA}, + [I(131,35)] = {X32,0xFFFE8FFA}, + [I(132,35)] = {64,0}, + [I(133,35)] = {64,0}, + [I(134,35)] = {64,0}, + [I(135,35)] = {64,0}, + [I(136,35)] = {64,0}, + [I(137,35)] = {64,0}, + [I(138,35)] = {64,0}, + [I(139,35)] = {64,0}, + [I(140,35)] = {64,0}, + [I(141,35)] = {64,0}, + [I(142,35)] = {64,0}, + [I(143,35)] = {64,0}, + [I(144,35)] = {64,0}, + [I(145,35)] = {64,0}, + [I(146,35)] = {64,0}, + [I(147,35)] = {64,0}, + [I(148,35)] = {64,0}, + [I(149,35)] = {64,0}, + [I(150,35)] = {64,0}, + [I(151,35)] = {64,0}, + [I(152,35)] = {64,0}, + [I(153,35)] = {64,0}, + [I(154,35)] = {64,0}, + [I(155,35)] = {64,0}, + [I(156,35)] = {64,0}, + [I(157,35)] = {64,0}, + [I(158,35)] = {64,0}, + [I(159,35)] = {64,0}, + [I(160,35)] = {64,0}, + [I(161,35)] = {64,0}, + [I(162,35)] = {X32,0xFFFE9FFA}, + [I(163,35)] = {64,0}, + [I(164,35)] = {64,0}, + [I(165,35)] = {64,0}, + [I(166,35)] = {64,0}, + [I(167,35)] = {64,0}, + [I(168,35)] = {64,0}, + [I(169,35)] = {64,0}, + [I(170,35)] = {64,0}, + [I(171,35)] = {64,0}, + [I(172,35)] = {64,0}, + [I(173,35)] = {64,0}, + [I(174,35)] = {64,0}, + [I(175,35)] = {64,0}, + [I(176,35)] = {64,0}, + [I(177,35)] = {64,0}, + [I(178,35)] = {64,0}, + [I(179,35)] = {64,0}, + [I(180,35)] = {64,0}, + [I(181,35)] = {64,0}, + [I(182,35)] = {64,0}, + [I(183,35)] = {64,0}, + [I(184,35)] = {X32,0xFFFEAFFA}, + [I(185,35)] = {64,0}, + [I(186,35)] = {64,0}, + [I(187,35)] = {64,0}, + [I(188,35)] = {64,0}, + [I(189,35)] = {64,0}, + [I(190,35)] = {64,0}, + [I(191,35)] = {64,0}, + [I(192,35)] = {64,0}, + [I(193,35)] = {64,0}, + [I(194,35)] = {X32,0xFFFEBFFA}, + [I(195,35)] = {31,0x7FFF1FFA}, + [I(196,35)] = {64,0}, + [I(197,35)] = {64,0}, + [I(198,35)] = {64,0}, + [I(199,35)] = {64,0}, + [I(200,35)] = {64,0}, + [I(201,35)] = {64,0}, + [I(202,35)] = {64,0}, + [I(203,35)] = {64,0}, + [I(204,35)] = {64,0}, + [I(205,35)] = {64,0}, + [I(206,35)] = {64,0}, + [I(207,35)] = {64,0}, + [I(208,35)] = {31,0x7FFF2FFA}, + [I(209,35)] = {64,0}, + [I(210,35)] = {64,0}, + [I(211,35)] = {64,0}, + [I(212,35)] = {64,0}, + [I(213,35)] = {64,0}, + [I(214,35)] = {64,0}, + [I(215,35)] = {64,0}, + [I(216,35)] = {64,0}, + [I(217,35)] = {64,0}, + [I(218,35)] = {64,0}, + [I(219,35)] = {64,0}, + [I(220,35)] = {64,0}, + [I(221,35)] = {64,0}, + [I(222,35)] = {64,0}, + [I(223,35)] = {64,0}, + [I(224,35)] = {X32,0xFFFECFFA}, + [I(225,35)] = {64,0}, + [I(226,35)] = {X32,0xFFFEDFFA}, + [I(227,35)] = {64,0}, + [I(228,35)] = {64,0}, + [I(229,35)] = {64,0}, + [I(230,35)] = {64,0}, + [I(231,35)] = {64,0}, + [I(232,35)] = {64,0}, + [I(233,35)] = {64,0}, + [I(234,35)] = {64,0}, + [I(235,35)] = {64,0}, + [I(236,35)] = {64,0}, + [I(237,35)] = {64,0}, + [I(238,35)] = {64,0}, + [I(239,35)] = {64,0}, + [I(240,35)] = {64,0}, + [I(241,35)] = {64,0}, + [I(242,35)] = {64,0}, + [I(243,35)] = {64,0}, + [I(244,35)] = {64,0}, + [I(245,35)] = {64,0}, + [I(246,35)] = {64,0}, + [I(247,35)] = {64,0}, + [I(248,35)] = {64,0}, + [I(249,35)] = {64,0}, + [I(250,35)] = {64,0}, + [I(251,35)] = {64,0}, + [I(252,35)] = {64,0}, + [I(253,35)] = {64,0}, + [I(254,35)] = {64,0}, + [I(255,35)] = {64,0}, + [I(0,36)] = {26,0x3FF1FF9}, + [I(1,36)] = {64,0}, + [I(2,36)] = {64,0}, + [I(3,36)] = {64,0}, + [I(4,36)] = {64,0}, + [I(5,36)] = {64,0}, + [I(6,36)] = {64,0}, + [I(7,36)] = {64,0}, + [I(8,36)] = {64,0}, + [I(9,36)] = {64,0}, + [I(10,36)] = {64,0}, + [I(11,36)] = {64,0}, + [I(12,36)] = {64,0}, + [I(13,36)] = {64,0}, + [I(14,36)] = {64,0}, + [I(15,36)] = {64,0}, + [I(16,36)] = {64,0}, + [I(17,36)] = {64,0}, + [I(18,36)] = {64,0}, + [I(19,36)] = {64,0}, + [I(20,36)] = {64,0}, + [I(21,36)] = {64,0}, + [I(22,36)] = {64,0}, + [I(23,36)] = {64,0}, + [I(24,36)] = {64,0}, + [I(25,36)] = {64,0}, + [I(26,36)] = {64,0}, + [I(27,36)] = {64,0}, + [I(28,36)] = {64,0}, + [I(29,36)] = {64,0}, + [I(30,36)] = {64,0}, + [I(31,36)] = {64,0}, + [I(32,36)] = {19,0x29FF9}, + [I(33,36)] = {23,0x7F1FF9}, + [I(34,36)] = {23,0x7F3FF9}, + [I(35,36)] = {25,0x1FF5FF9}, + [I(36,36)] = {26,0x3FF3FF9}, + [I(37,36)] = {19,0x2BFF9}, + [I(38,36)] = {21,0x1F1FF9}, + [I(39,36)] = {24,0xFF5FF9}, + [I(40,36)] = {23,0x7F5FF9}, + [I(41,36)] = {23,0x7F7FF9}, + [I(42,36)] = {21,0x1F3FF9}, + [I(43,36)] = {24,0xFF7FF9}, + [I(44,36)] = {21,0x1F5FF9}, + [I(45,36)] = {19,0x2DFF9}, + [I(46,36)] = {19,0x2FFF9}, + [I(47,36)] = {19,0x31FF9}, + [I(48,36)] = {18,0x1FF9}, + [I(49,36)] = {18,0x3FF9}, + [I(50,36)] = {18,0x5FF9}, + [I(51,36)] = {19,0x33FF9}, + [I(52,36)] = {19,0x35FF9}, + [I(53,36)] = {19,0x37FF9}, + [I(54,36)] = {19,0x39FF9}, + [I(55,36)] = {19,0x3BFF9}, + [I(56,36)] = {19,0x3DFF9}, + [I(57,36)] = {19,0x3FFF9}, + [I(58,36)] = {20,0xB9FF9}, + [I(59,36)] = {21,0x1F7FF9}, + [I(60,36)] = {28,0xFFF9FF9}, + [I(61,36)] = {19,0x41FF9}, + [I(62,36)] = {25,0x1FF7FF9}, + [I(63,36)] = {23,0x7F9FF9}, + [I(64,36)] = {26,0x3FF5FF9}, + [I(65,36)] = {19,0x43FF9}, + [I(66,36)] = {20,0xBBFF9}, + [I(67,36)] = {20,0xBDFF9}, + [I(68,36)] = {20,0xBFFF9}, + [I(69,36)] = {20,0xC1FF9}, + [I(70,36)] = {20,0xC3FF9}, + [I(71,36)] = {20,0xC5FF9}, + [I(72,36)] = {20,0xC7FF9}, + [I(73,36)] = {20,0xC9FF9}, + [I(74,36)] = {20,0xCBFF9}, + [I(75,36)] = {20,0xCDFF9}, + [I(76,36)] = {20,0xCFFF9}, + [I(77,36)] = {20,0xD1FF9}, + [I(78,36)] = {20,0xD3FF9}, + [I(79,36)] = {20,0xD5FF9}, + [I(80,36)] = {20,0xD7FF9}, + [I(81,36)] = {20,0xD9FF9}, + [I(82,36)] = {20,0xDBFF9}, + [I(83,36)] = {20,0xDDFF9}, + [I(84,36)] = {20,0xDFFF9}, + [I(85,36)] = {20,0xE1FF9}, + [I(86,36)] = {20,0xE3FF9}, + [I(87,36)] = {20,0xE5FF9}, + [I(88,36)] = {21,0x1F9FF9}, + [I(89,36)] = {20,0xE7FF9}, + [I(90,36)] = {21,0x1FBFF9}, + [I(91,36)] = {26,0x3FF7FF9}, + [I(92,36)] = {X32,0xFFFE1FF9}, + [I(93,36)] = {26,0x3FF9FF9}, + [I(94,36)] = {27,0x7FF9FF9}, + [I(95,36)] = {19,0x45FF9}, + [I(96,36)] = {28,0xFFFBFF9}, + [I(97,36)] = {18,0x7FF9}, + [I(98,36)] = {19,0x47FF9}, + [I(99,36)] = {18,0x9FF9}, + [I(100,36)] = {19,0x49FF9}, + [I(101,36)] = {18,0xBFF9}, + [I(102,36)] = {19,0x4BFF9}, + [I(103,36)] = {19,0x4DFF9}, + [I(104,36)] = {19,0x4FFF9}, + [I(105,36)] = {18,0xDFF9}, + [I(106,36)] = {20,0xE9FF9}, + [I(107,36)] = {20,0xEBFF9}, + [I(108,36)] = {19,0x51FF9}, + [I(109,36)] = {19,0x53FF9}, + [I(110,36)] = {19,0x55FF9}, + [I(111,36)] = {18,0xFFF9}, + [I(112,36)] = {19,0x57FF9}, + [I(113,36)] = {20,0xEDFF9}, + [I(114,36)] = {19,0x59FF9}, + [I(115,36)] = {18,0x11FF9}, + [I(116,36)] = {18,0x13FF9}, + [I(117,36)] = {19,0x5BFF9}, + [I(118,36)] = {20,0xEFFF9}, + [I(119,36)] = {20,0xF1FF9}, + [I(120,36)] = {20,0xF3FF9}, + [I(121,36)] = {20,0xF5FF9}, + [I(122,36)] = {20,0xF7FF9}, + [I(123,36)] = {28,0xFFFDFF9}, + [I(124,36)] = {24,0xFF9FF9}, + [I(125,36)] = {27,0x7FFBFF9}, + [I(126,36)] = {26,0x3FFBFF9}, + [I(127,36)] = {64,0}, + [I(128,36)] = {64,0}, + [I(129,36)] = {64,0}, + [I(130,36)] = {64,0}, + [I(131,36)] = {64,0}, + [I(132,36)] = {64,0}, + [I(133,36)] = {64,0}, + [I(134,36)] = {64,0}, + [I(135,36)] = {64,0}, + [I(136,36)] = {64,0}, + [I(137,36)] = {64,0}, + [I(138,36)] = {64,0}, + [I(139,36)] = {64,0}, + [I(140,36)] = {64,0}, + [I(141,36)] = {64,0}, + [I(142,36)] = {64,0}, + [I(143,36)] = {64,0}, + [I(144,36)] = {64,0}, + [I(145,36)] = {64,0}, + [I(146,36)] = {64,0}, + [I(147,36)] = {64,0}, + [I(148,36)] = {64,0}, + [I(149,36)] = {64,0}, + [I(150,36)] = {64,0}, + [I(151,36)] = {64,0}, + [I(152,36)] = {64,0}, + [I(153,36)] = {64,0}, + [I(154,36)] = {64,0}, + [I(155,36)] = {64,0}, + [I(156,36)] = {64,0}, + [I(157,36)] = {64,0}, + [I(158,36)] = {64,0}, + [I(159,36)] = {64,0}, + [I(160,36)] = {64,0}, + [I(161,36)] = {64,0}, + [I(162,36)] = {64,0}, + [I(163,36)] = {64,0}, + [I(164,36)] = {64,0}, + [I(165,36)] = {64,0}, + [I(166,36)] = {64,0}, + [I(167,36)] = {64,0}, + [I(168,36)] = {64,0}, + [I(169,36)] = {64,0}, + [I(170,36)] = {64,0}, + [I(171,36)] = {64,0}, + [I(172,36)] = {64,0}, + [I(173,36)] = {64,0}, + [I(174,36)] = {64,0}, + [I(175,36)] = {64,0}, + [I(176,36)] = {64,0}, + [I(177,36)] = {64,0}, + [I(178,36)] = {64,0}, + [I(179,36)] = {64,0}, + [I(180,36)] = {64,0}, + [I(181,36)] = {64,0}, + [I(182,36)] = {64,0}, + [I(183,36)] = {64,0}, + [I(184,36)] = {64,0}, + [I(185,36)] = {64,0}, + [I(186,36)] = {64,0}, + [I(187,36)] = {64,0}, + [I(188,36)] = {64,0}, + [I(189,36)] = {64,0}, + [I(190,36)] = {64,0}, + [I(191,36)] = {64,0}, + [I(192,36)] = {64,0}, + [I(193,36)] = {64,0}, + [I(194,36)] = {64,0}, + [I(195,36)] = {X32,0xFFFE3FF9}, + [I(196,36)] = {64,0}, + [I(197,36)] = {64,0}, + [I(198,36)] = {64,0}, + [I(199,36)] = {64,0}, + [I(200,36)] = {64,0}, + [I(201,36)] = {64,0}, + [I(202,36)] = {64,0}, + [I(203,36)] = {64,0}, + [I(204,36)] = {64,0}, + [I(205,36)] = {64,0}, + [I(206,36)] = {64,0}, + [I(207,36)] = {64,0}, + [I(208,36)] = {X32,0xFFFE5FF9}, + [I(209,36)] = {64,0}, + [I(210,36)] = {64,0}, + [I(211,36)] = {64,0}, + [I(212,36)] = {64,0}, + [I(213,36)] = {64,0}, + [I(214,36)] = {64,0}, + [I(215,36)] = {64,0}, + [I(216,36)] = {64,0}, + [I(217,36)] = {64,0}, + [I(218,36)] = {64,0}, + [I(219,36)] = {64,0}, + [I(220,36)] = {64,0}, + [I(221,36)] = {64,0}, + [I(222,36)] = {64,0}, + [I(223,36)] = {64,0}, + [I(224,36)] = {64,0}, + [I(225,36)] = {64,0}, + [I(226,36)] = {64,0}, + [I(227,36)] = {64,0}, + [I(228,36)] = {64,0}, + [I(229,36)] = {64,0}, + [I(230,36)] = {64,0}, + [I(231,36)] = {64,0}, + [I(232,36)] = {64,0}, + [I(233,36)] = {64,0}, + [I(234,36)] = {64,0}, + [I(235,36)] = {64,0}, + [I(236,36)] = {64,0}, + [I(237,36)] = {64,0}, + [I(238,36)] = {64,0}, + [I(239,36)] = {64,0}, + [I(240,36)] = {64,0}, + [I(241,36)] = {64,0}, + [I(242,36)] = {64,0}, + [I(243,36)] = {64,0}, + [I(244,36)] = {64,0}, + [I(245,36)] = {64,0}, + [I(246,36)] = {64,0}, + [I(247,36)] = {64,0}, + [I(248,36)] = {64,0}, + [I(249,36)] = {64,0}, + [I(250,36)] = {64,0}, + [I(251,36)] = {64,0}, + [I(252,36)] = {64,0}, + [I(253,36)] = {64,0}, + [I(254,36)] = {64,0}, + [I(255,36)] = {64,0}, + [I(0,37)] = {19,0x7FE15}, + [I(1,37)] = {29,0x1FFFF615}, + [I(2,37)] = {64,0}, + [I(3,37)] = {64,0}, + [I(4,37)] = {64,0}, + [I(5,37)] = {64,0}, + [I(6,37)] = {64,0}, + [I(7,37)] = {64,0}, + [I(8,37)] = {64,0}, + [I(9,37)] = {30,0x3FFFFA95}, + [I(10,37)] = {64,0}, + [I(11,37)] = {64,0}, + [I(12,37)] = {64,0}, + [I(13,37)] = {64,0}, + [I(14,37)] = {64,0}, + [I(15,37)] = {64,0}, + [I(16,37)] = {64,0}, + [I(17,37)] = {64,0}, + [I(18,37)] = {64,0}, + [I(19,37)] = {64,0}, + [I(20,37)] = {64,0}, + [I(21,37)] = {64,0}, + [I(22,37)] = {64,0}, + [I(23,37)] = {64,0}, + [I(24,37)] = {64,0}, + [I(25,37)] = {64,0}, + [I(26,37)] = {64,0}, + [I(27,37)] = {64,0}, + [I(28,37)] = {64,0}, + [I(29,37)] = {64,0}, + [I(30,37)] = {64,0}, + [I(31,37)] = {64,0}, + [I(32,37)] = {12,0x515}, + [I(33,37)] = {16,0xFE15}, + [I(34,37)] = {16,0xFE55}, + [I(35,37)] = {18,0x3FE95}, + [I(36,37)] = {19,0x7FE55}, + [I(37,37)] = {12,0x555}, + [I(38,37)] = {14,0x3E15}, + [I(39,37)] = {17,0x1FE95}, + [I(40,37)] = {16,0xFE95}, + [I(41,37)] = {16,0xFED5}, + [I(42,37)] = {14,0x3E55}, + [I(43,37)] = {17,0x1FED5}, + [I(44,37)] = {14,0x3E95}, + [I(45,37)] = {12,0x595}, + [I(46,37)] = {12,0x5D5}, + [I(47,37)] = {12,0x615}, + [I(48,37)] = {11,0x15}, + [I(49,37)] = {11,0x55}, + [I(50,37)] = {11,0x95}, + [I(51,37)] = {12,0x655}, + [I(52,37)] = {12,0x695}, + [I(53,37)] = {12,0x6D5}, + [I(54,37)] = {12,0x715}, + [I(55,37)] = {12,0x755}, + [I(56,37)] = {12,0x795}, + [I(57,37)] = {12,0x7D5}, + [I(58,37)] = {13,0x1715}, + [I(59,37)] = {14,0x3ED5}, + [I(60,37)] = {21,0x1FFF15}, + [I(61,37)] = {12,0x815}, + [I(62,37)] = {18,0x3FED5}, + [I(63,37)] = {16,0xFF15}, + [I(64,37)] = {19,0x7FE95}, + [I(65,37)] = {12,0x855}, + [I(66,37)] = {13,0x1755}, + [I(67,37)] = {13,0x1795}, + [I(68,37)] = {13,0x17D5}, + [I(69,37)] = {13,0x1815}, + [I(70,37)] = {13,0x1855}, + [I(71,37)] = {13,0x1895}, + [I(72,37)] = {13,0x18D5}, + [I(73,37)] = {13,0x1915}, + [I(74,37)] = {13,0x1955}, + [I(75,37)] = {13,0x1995}, + [I(76,37)] = {13,0x19D5}, + [I(77,37)] = {13,0x1A15}, + [I(78,37)] = {13,0x1A55}, + [I(79,37)] = {13,0x1A95}, + [I(80,37)] = {13,0x1AD5}, + [I(81,37)] = {13,0x1B15}, + [I(82,37)] = {13,0x1B55}, + [I(83,37)] = {13,0x1B95}, + [I(84,37)] = {13,0x1BD5}, + [I(85,37)] = {13,0x1C15}, + [I(86,37)] = {13,0x1C55}, + [I(87,37)] = {13,0x1C95}, + [I(88,37)] = {14,0x3F15}, + [I(89,37)] = {13,0x1CD5}, + [I(90,37)] = {14,0x3F55}, + [I(91,37)] = {19,0x7FED5}, + [I(92,37)] = {25,0x1FFFC15}, + [I(93,37)] = {19,0x7FF15}, + [I(94,37)] = {20,0xFFF15}, + [I(95,37)] = {12,0x895}, + [I(96,37)] = {21,0x1FFF55}, + [I(97,37)] = {11,0xD5}, + [I(98,37)] = {12,0x8D5}, + [I(99,37)] = {11,0x115}, + [I(100,37)] = {12,0x915}, + [I(101,37)] = {11,0x155}, + [I(102,37)] = {12,0x955}, + [I(103,37)] = {12,0x995}, + [I(104,37)] = {12,0x9D5}, + [I(105,37)] = {11,0x195}, + [I(106,37)] = {13,0x1D15}, + [I(107,37)] = {13,0x1D55}, + [I(108,37)] = {12,0xA15}, + [I(109,37)] = {12,0xA55}, + [I(110,37)] = {12,0xA95}, + [I(111,37)] = {11,0x1D5}, + [I(112,37)] = {12,0xAD5}, + [I(113,37)] = {13,0x1D95}, + [I(114,37)] = {12,0xB15}, + [I(115,37)] = {11,0x215}, + [I(116,37)] = {11,0x255}, + [I(117,37)] = {12,0xB55}, + [I(118,37)] = {13,0x1DD5}, + [I(119,37)] = {13,0x1E15}, + [I(120,37)] = {13,0x1E55}, + [I(121,37)] = {13,0x1E95}, + [I(122,37)] = {13,0x1ED5}, + [I(123,37)] = {21,0x1FFF95}, + [I(124,37)] = {17,0x1FF15}, + [I(125,37)] = {20,0xFFF55}, + [I(126,37)] = {19,0x7FF55}, + [I(127,37)] = {64,0}, + [I(128,37)] = {26,0x3FFF995}, + [I(129,37)] = {28,0xFFFF495}, + [I(130,37)] = {26,0x3FFF9D5}, + [I(131,37)] = {26,0x3FFFA15}, + [I(132,37)] = {28,0xFFFF4D5}, + [I(133,37)] = {28,0xFFFF515}, + [I(134,37)] = {28,0xFFFF555}, + [I(135,37)] = {29,0x1FFFF655}, + [I(136,37)] = {28,0xFFFF595}, + [I(137,37)] = {29,0x1FFFF695}, + [I(138,37)] = {29,0x1FFFF6D5}, + [I(139,37)] = {29,0x1FFFF715}, + [I(140,37)] = {29,0x1FFFF755}, + [I(141,37)] = {29,0x1FFFF795}, + [I(142,37)] = {30,0x3FFFFAD5}, + [I(143,37)] = {29,0x1FFFF7D5}, + [I(144,37)] = {30,0x3FFFFB15}, + [I(145,37)] = {30,0x3FFFFB55}, + [I(146,37)] = {28,0xFFFF5D5}, + [I(147,37)] = {29,0x1FFFF815}, + [I(148,37)] = {30,0x3FFFFB95}, + [I(149,37)] = {29,0x1FFFF855}, + [I(150,37)] = {29,0x1FFFF895}, + [I(151,37)] = {29,0x1FFFF8D5}, + [I(152,37)] = {29,0x1FFFF915}, + [I(153,37)] = {27,0x7FFF715}, + [I(154,37)] = {28,0xFFFF615}, + [I(155,37)] = {29,0x1FFFF955}, + [I(156,37)] = {28,0xFFFF655}, + [I(157,37)] = {29,0x1FFFF995}, + [I(158,37)] = {29,0x1FFFF9D5}, + [I(159,37)] = {30,0x3FFFFBD5}, + [I(160,37)] = {28,0xFFFF695}, + [I(161,37)] = {27,0x7FFF755}, + [I(162,37)] = {26,0x3FFFA55}, + [I(163,37)] = {28,0xFFFF6D5}, + [I(164,37)] = {28,0xFFFF715}, + [I(165,37)] = {29,0x1FFFFA15}, + [I(166,37)] = {29,0x1FFFFA55}, + [I(167,37)] = {27,0x7FFF795}, + [I(168,37)] = {29,0x1FFFFA95}, + [I(169,37)] = {28,0xFFFF755}, + [I(170,37)] = {28,0xFFFF795}, + [I(171,37)] = {30,0x3FFFFC15}, + [I(172,37)] = {27,0x7FFF7D5}, + [I(173,37)] = {28,0xFFFF7D5}, + [I(174,37)] = {29,0x1FFFFAD5}, + [I(175,37)] = {29,0x1FFFFB15}, + [I(176,37)] = {27,0x7FFF815}, + [I(177,37)] = {27,0x7FFF855}, + [I(178,37)] = {28,0xFFFF815}, + [I(179,37)] = {27,0x7FFF895}, + [I(180,37)] = {29,0x1FFFFB55}, + [I(181,37)] = {28,0xFFFF855}, + [I(182,37)] = {29,0x1FFFFB95}, + [I(183,37)] = {29,0x1FFFFBD5}, + [I(184,37)] = {26,0x3FFFA95}, + [I(185,37)] = {28,0xFFFF895}, + [I(186,37)] = {28,0xFFFF8D5}, + [I(187,37)] = {28,0xFFFF915}, + [I(188,37)] = {29,0x1FFFFC15}, + [I(189,37)] = {28,0xFFFF955}, + [I(190,37)] = {28,0xFFFF995}, + [I(191,37)] = {29,0x1FFFFC55}, + [I(192,37)] = {X32,0xFFFFF815}, + [I(193,37)] = {X32,0xFFFFF855}, + [I(194,37)] = {26,0x3FFFAD5}, + [I(195,37)] = {25,0x1FFFC55}, + [I(196,37)] = {28,0xFFFF9D5}, + [I(197,37)] = {29,0x1FFFFC95}, + [I(198,37)] = {28,0xFFFFA15}, + [I(199,37)] = {31,0x7FFFFB15}, + [I(200,37)] = {X32,0xFFFFF895}, + [I(201,37)] = {X32,0xFFFFF8D5}, + [I(202,37)] = {X32,0xFFFFF915}, + [I(203,37)] = {64,0}, + [I(204,37)] = {64,0}, + [I(205,37)] = {X32,0xFFFFF955}, + [I(206,37)] = {30,0x3FFFFC55}, + [I(207,37)] = {31,0x7FFFFB55}, + [I(208,37)] = {25,0x1FFFC95}, + [I(209,37)] = {27,0x7FFF8D5}, + [I(210,37)] = {X32,0xFFFFF995}, + [I(211,37)] = {64,0}, + [I(212,37)] = {64,0}, + [I(213,37)] = {X32,0xFFFFF9D5}, + [I(214,37)] = {64,0}, + [I(215,37)] = {30,0x3FFFFC95}, + [I(216,37)] = {27,0x7FFF915}, + [I(217,37)] = {27,0x7FFF955}, + [I(218,37)] = {X32,0xFFFFFA15}, + [I(219,37)] = {X32,0xFFFFFA55}, + [I(220,37)] = {64,0}, + [I(221,37)] = {64,0}, + [I(222,37)] = {64,0}, + [I(223,37)] = {64,0}, + [I(224,37)] = {26,0x3FFFB15}, + [I(225,37)] = {30,0x3FFFFCD5}, + [I(226,37)] = {26,0x3FFFB55}, + [I(227,37)] = {27,0x7FFF995}, + [I(228,37)] = {28,0xFFFFA55}, + [I(229,37)] = {27,0x7FFF9D5}, + [I(230,37)] = {27,0x7FFFA15}, + [I(231,37)] = {29,0x1FFFFCD5}, + [I(232,37)] = {28,0xFFFFA95}, + [I(233,37)] = {28,0xFFFFAD5}, + [I(234,37)] = {31,0x7FFFFB95}, + [I(235,37)] = {31,0x7FFFFBD5}, + [I(236,37)] = {30,0x3FFFFD15}, + [I(237,37)] = {30,0x3FFFFD55}, + [I(238,37)] = {X32,0xFFFFFA95}, + [I(239,37)] = {29,0x1FFFFD15}, + [I(240,37)] = {X32,0xFFFFFAD5}, + [I(241,37)] = {64,0}, + [I(242,37)] = {X32,0xFFFFFB15}, + [I(243,37)] = {X32,0xFFFFFB55}, + [I(244,37)] = {64,0}, + [I(245,37)] = {64,0}, + [I(246,37)] = {64,0}, + [I(247,37)] = {64,0}, + [I(248,37)] = {64,0}, + [I(249,37)] = {64,0}, + [I(250,37)] = {64,0}, + [I(251,37)] = {64,0}, + [I(252,37)] = {64,0}, + [I(253,37)] = {64,0}, + [I(254,37)] = {64,0}, + [I(255,37)] = {X32,0xFFFFFB95}, + [I(0,38)] = {21,0x1FF8F8}, + [I(1,38)] = {31,0x7FFFD8F8}, + [I(2,38)] = {64,0}, + [I(3,38)] = {64,0}, + [I(4,38)] = {64,0}, + [I(5,38)] = {64,0}, + [I(6,38)] = {64,0}, + [I(7,38)] = {64,0}, + [I(8,38)] = {64,0}, + [I(9,38)] = {X32,0xFFFFEAF8}, + [I(10,38)] = {64,0}, + [I(11,38)] = {64,0}, + [I(12,38)] = {64,0}, + [I(13,38)] = {64,0}, + [I(14,38)] = {64,0}, + [I(15,38)] = {64,0}, + [I(16,38)] = {64,0}, + [I(17,38)] = {64,0}, + [I(18,38)] = {64,0}, + [I(19,38)] = {64,0}, + [I(20,38)] = {64,0}, + [I(21,38)] = {64,0}, + [I(22,38)] = {64,0}, + [I(23,38)] = {64,0}, + [I(24,38)] = {64,0}, + [I(25,38)] = {64,0}, + [I(26,38)] = {64,0}, + [I(27,38)] = {64,0}, + [I(28,38)] = {64,0}, + [I(29,38)] = {64,0}, + [I(30,38)] = {64,0}, + [I(31,38)] = {64,0}, + [I(32,38)] = {14,0x14F8}, + [I(33,38)] = {18,0x3F8F8}, + [I(34,38)] = {18,0x3F9F8}, + [I(35,38)] = {20,0xFFAF8}, + [I(36,38)] = {21,0x1FF9F8}, + [I(37,38)] = {14,0x15F8}, + [I(38,38)] = {16,0xF8F8}, + [I(39,38)] = {19,0x7FAF8}, + [I(40,38)] = {18,0x3FAF8}, + [I(41,38)] = {18,0x3FBF8}, + [I(42,38)] = {16,0xF9F8}, + [I(43,38)] = {19,0x7FBF8}, + [I(44,38)] = {16,0xFAF8}, + [I(45,38)] = {14,0x16F8}, + [I(46,38)] = {14,0x17F8}, + [I(47,38)] = {14,0x18F8}, + [I(48,38)] = {13,0xF8}, + [I(49,38)] = {13,0x1F8}, + [I(50,38)] = {13,0x2F8}, + [I(51,38)] = {14,0x19F8}, + [I(52,38)] = {14,0x1AF8}, + [I(53,38)] = {14,0x1BF8}, + [I(54,38)] = {14,0x1CF8}, + [I(55,38)] = {14,0x1DF8}, + [I(56,38)] = {14,0x1EF8}, + [I(57,38)] = {14,0x1FF8}, + [I(58,38)] = {15,0x5CF8}, + [I(59,38)] = {16,0xFBF8}, + [I(60,38)] = {23,0x7FFCF8}, + [I(61,38)] = {14,0x20F8}, + [I(62,38)] = {20,0xFFBF8}, + [I(63,38)] = {18,0x3FCF8}, + [I(64,38)] = {21,0x1FFAF8}, + [I(65,38)] = {14,0x21F8}, + [I(66,38)] = {15,0x5DF8}, + [I(67,38)] = {15,0x5EF8}, + [I(68,38)] = {15,0x5FF8}, + [I(69,38)] = {15,0x60F8}, + [I(70,38)] = {15,0x61F8}, + [I(71,38)] = {15,0x62F8}, + [I(72,38)] = {15,0x63F8}, + [I(73,38)] = {15,0x64F8}, + [I(74,38)] = {15,0x65F8}, + [I(75,38)] = {15,0x66F8}, + [I(76,38)] = {15,0x67F8}, + [I(77,38)] = {15,0x68F8}, + [I(78,38)] = {15,0x69F8}, + [I(79,38)] = {15,0x6AF8}, + [I(80,38)] = {15,0x6BF8}, + [I(81,38)] = {15,0x6CF8}, + [I(82,38)] = {15,0x6DF8}, + [I(83,38)] = {15,0x6EF8}, + [I(84,38)] = {15,0x6FF8}, + [I(85,38)] = {15,0x70F8}, + [I(86,38)] = {15,0x71F8}, + [I(87,38)] = {15,0x72F8}, + [I(88,38)] = {16,0xFCF8}, + [I(89,38)] = {15,0x73F8}, + [I(90,38)] = {16,0xFDF8}, + [I(91,38)] = {21,0x1FFBF8}, + [I(92,38)] = {27,0x7FFF0F8}, + [I(93,38)] = {21,0x1FFCF8}, + [I(94,38)] = {22,0x3FFCF8}, + [I(95,38)] = {14,0x22F8}, + [I(96,38)] = {23,0x7FFDF8}, + [I(97,38)] = {13,0x3F8}, + [I(98,38)] = {14,0x23F8}, + [I(99,38)] = {13,0x4F8}, + [I(100,38)] = {14,0x24F8}, + [I(101,38)] = {13,0x5F8}, + [I(102,38)] = {14,0x25F8}, + [I(103,38)] = {14,0x26F8}, + [I(104,38)] = {14,0x27F8}, + [I(105,38)] = {13,0x6F8}, + [I(106,38)] = {15,0x74F8}, + [I(107,38)] = {15,0x75F8}, + [I(108,38)] = {14,0x28F8}, + [I(109,38)] = {14,0x29F8}, + [I(110,38)] = {14,0x2AF8}, + [I(111,38)] = {13,0x7F8}, + [I(112,38)] = {14,0x2BF8}, + [I(113,38)] = {15,0x76F8}, + [I(114,38)] = {14,0x2CF8}, + [I(115,38)] = {13,0x8F8}, + [I(116,38)] = {13,0x9F8}, + [I(117,38)] = {14,0x2DF8}, + [I(118,38)] = {15,0x77F8}, + [I(119,38)] = {15,0x78F8}, + [I(120,38)] = {15,0x79F8}, + [I(121,38)] = {15,0x7AF8}, + [I(122,38)] = {15,0x7BF8}, + [I(123,38)] = {23,0x7FFEF8}, + [I(124,38)] = {19,0x7FCF8}, + [I(125,38)] = {22,0x3FFDF8}, + [I(126,38)] = {21,0x1FFDF8}, + [I(127,38)] = {64,0}, + [I(128,38)] = {28,0xFFFE6F8}, + [I(129,38)] = {30,0x3FFFD2F8}, + [I(130,38)] = {28,0xFFFE7F8}, + [I(131,38)] = {28,0xFFFE8F8}, + [I(132,38)] = {30,0x3FFFD3F8}, + [I(133,38)] = {30,0x3FFFD4F8}, + [I(134,38)] = {30,0x3FFFD5F8}, + [I(135,38)] = {31,0x7FFFD9F8}, + [I(136,38)] = {30,0x3FFFD6F8}, + [I(137,38)] = {31,0x7FFFDAF8}, + [I(138,38)] = {31,0x7FFFDBF8}, + [I(139,38)] = {31,0x7FFFDCF8}, + [I(140,38)] = {31,0x7FFFDDF8}, + [I(141,38)] = {31,0x7FFFDEF8}, + [I(142,38)] = {X32,0xFFFFEBF8}, + [I(143,38)] = {31,0x7FFFDFF8}, + [I(144,38)] = {X32,0xFFFFECF8}, + [I(145,38)] = {X32,0xFFFFEDF8}, + [I(146,38)] = {30,0x3FFFD7F8}, + [I(147,38)] = {31,0x7FFFE0F8}, + [I(148,38)] = {X32,0xFFFFEEF8}, + [I(149,38)] = {31,0x7FFFE1F8}, + [I(150,38)] = {31,0x7FFFE2F8}, + [I(151,38)] = {31,0x7FFFE3F8}, + [I(152,38)] = {31,0x7FFFE4F8}, + [I(153,38)] = {29,0x1FFFDCF8}, + [I(154,38)] = {30,0x3FFFD8F8}, + [I(155,38)] = {31,0x7FFFE5F8}, + [I(156,38)] = {30,0x3FFFD9F8}, + [I(157,38)] = {31,0x7FFFE6F8}, + [I(158,38)] = {31,0x7FFFE7F8}, + [I(159,38)] = {X32,0xFFFFEFF8}, + [I(160,38)] = {30,0x3FFFDAF8}, + [I(161,38)] = {29,0x1FFFDDF8}, + [I(162,38)] = {28,0xFFFE9F8}, + [I(163,38)] = {30,0x3FFFDBF8}, + [I(164,38)] = {30,0x3FFFDCF8}, + [I(165,38)] = {31,0x7FFFE8F8}, + [I(166,38)] = {31,0x7FFFE9F8}, + [I(167,38)] = {29,0x1FFFDEF8}, + [I(168,38)] = {31,0x7FFFEAF8}, + [I(169,38)] = {30,0x3FFFDDF8}, + [I(170,38)] = {30,0x3FFFDEF8}, + [I(171,38)] = {X32,0xFFFFF0F8}, + [I(172,38)] = {29,0x1FFFDFF8}, + [I(173,38)] = {30,0x3FFFDFF8}, + [I(174,38)] = {31,0x7FFFEBF8}, + [I(175,38)] = {31,0x7FFFECF8}, + [I(176,38)] = {29,0x1FFFE0F8}, + [I(177,38)] = {29,0x1FFFE1F8}, + [I(178,38)] = {30,0x3FFFE0F8}, + [I(179,38)] = {29,0x1FFFE2F8}, + [I(180,38)] = {31,0x7FFFEDF8}, + [I(181,38)] = {30,0x3FFFE1F8}, + [I(182,38)] = {31,0x7FFFEEF8}, + [I(183,38)] = {31,0x7FFFEFF8}, + [I(184,38)] = {28,0xFFFEAF8}, + [I(185,38)] = {30,0x3FFFE2F8}, + [I(186,38)] = {30,0x3FFFE3F8}, + [I(187,38)] = {30,0x3FFFE4F8}, + [I(188,38)] = {31,0x7FFFF0F8}, + [I(189,38)] = {30,0x3FFFE5F8}, + [I(190,38)] = {30,0x3FFFE6F8}, + [I(191,38)] = {31,0x7FFFF1F8}, + [I(192,38)] = {64,0}, + [I(193,38)] = {64,0}, + [I(194,38)] = {28,0xFFFEBF8}, + [I(195,38)] = {27,0x7FFF1F8}, + [I(196,38)] = {30,0x3FFFE7F8}, + [I(197,38)] = {31,0x7FFFF2F8}, + [I(198,38)] = {30,0x3FFFE8F8}, + [I(199,38)] = {64,0}, + [I(200,38)] = {64,0}, + [I(201,38)] = {64,0}, + [I(202,38)] = {64,0}, + [I(203,38)] = {64,0}, + [I(204,38)] = {64,0}, + [I(205,38)] = {64,0}, + [I(206,38)] = {X32,0xFFFFF1F8}, + [I(207,38)] = {64,0}, + [I(208,38)] = {27,0x7FFF2F8}, + [I(209,38)] = {29,0x1FFFE3F8}, + [I(210,38)] = {64,0}, + [I(211,38)] = {64,0}, + [I(212,38)] = {64,0}, + [I(213,38)] = {64,0}, + [I(214,38)] = {64,0}, + [I(215,38)] = {X32,0xFFFFF2F8}, + [I(216,38)] = {29,0x1FFFE4F8}, + [I(217,38)] = {29,0x1FFFE5F8}, + [I(218,38)] = {64,0}, + [I(219,38)] = {64,0}, + [I(220,38)] = {64,0}, + [I(221,38)] = {64,0}, + [I(222,38)] = {64,0}, + [I(223,38)] = {64,0}, + [I(224,38)] = {28,0xFFFECF8}, + [I(225,38)] = {X32,0xFFFFF3F8}, + [I(226,38)] = {28,0xFFFEDF8}, + [I(227,38)] = {29,0x1FFFE6F8}, + [I(228,38)] = {30,0x3FFFE9F8}, + [I(229,38)] = {29,0x1FFFE7F8}, + [I(230,38)] = {29,0x1FFFE8F8}, + [I(231,38)] = {31,0x7FFFF3F8}, + [I(232,38)] = {30,0x3FFFEAF8}, + [I(233,38)] = {30,0x3FFFEBF8}, + [I(234,38)] = {64,0}, + [I(235,38)] = {64,0}, + [I(236,38)] = {X32,0xFFFFF4F8}, + [I(237,38)] = {X32,0xFFFFF5F8}, + [I(238,38)] = {64,0}, + [I(239,38)] = {31,0x7FFFF4F8}, + [I(240,38)] = {64,0}, + [I(241,38)] = {64,0}, + [I(242,38)] = {64,0}, + [I(243,38)] = {64,0}, + [I(244,38)] = {64,0}, + [I(245,38)] = {64,0}, + [I(246,38)] = {64,0}, + [I(247,38)] = {64,0}, + [I(248,38)] = {64,0}, + [I(249,38)] = {64,0}, + [I(250,38)] = {64,0}, + [I(251,38)] = {64,0}, + [I(252,38)] = {64,0}, + [I(253,38)] = {64,0}, + [I(254,38)] = {64,0}, + [I(255,38)] = {64,0}, + [I(0,39)] = {24,0xFFC7FA}, + [I(1,39)] = {64,0}, + [I(2,39)] = {64,0}, + [I(3,39)] = {64,0}, + [I(4,39)] = {64,0}, + [I(5,39)] = {64,0}, + [I(6,39)] = {64,0}, + [I(7,39)] = {64,0}, + [I(8,39)] = {64,0}, + [I(9,39)] = {64,0}, + [I(10,39)] = {64,0}, + [I(11,39)] = {64,0}, + [I(12,39)] = {64,0}, + [I(13,39)] = {64,0}, + [I(14,39)] = {64,0}, + [I(15,39)] = {64,0}, + [I(16,39)] = {64,0}, + [I(17,39)] = {64,0}, + [I(18,39)] = {64,0}, + [I(19,39)] = {64,0}, + [I(20,39)] = {64,0}, + [I(21,39)] = {64,0}, + [I(22,39)] = {64,0}, + [I(23,39)] = {64,0}, + [I(24,39)] = {64,0}, + [I(25,39)] = {64,0}, + [I(26,39)] = {64,0}, + [I(27,39)] = {64,0}, + [I(28,39)] = {64,0}, + [I(29,39)] = {64,0}, + [I(30,39)] = {64,0}, + [I(31,39)] = {64,0}, + [I(32,39)] = {17,0xA7FA}, + [I(33,39)] = {21,0x1FC7FA}, + [I(34,39)] = {21,0x1FCFFA}, + [I(35,39)] = {23,0x7FD7FA}, + [I(36,39)] = {24,0xFFCFFA}, + [I(37,39)] = {17,0xAFFA}, + [I(38,39)] = {19,0x7C7FA}, + [I(39,39)] = {22,0x3FD7FA}, + [I(40,39)] = {21,0x1FD7FA}, + [I(41,39)] = {21,0x1FDFFA}, + [I(42,39)] = {19,0x7CFFA}, + [I(43,39)] = {22,0x3FDFFA}, + [I(44,39)] = {19,0x7D7FA}, + [I(45,39)] = {17,0xB7FA}, + [I(46,39)] = {17,0xBFFA}, + [I(47,39)] = {17,0xC7FA}, + [I(48,39)] = {16,0x7FA}, + [I(49,39)] = {16,0xFFA}, + [I(50,39)] = {16,0x17FA}, + [I(51,39)] = {17,0xCFFA}, + [I(52,39)] = {17,0xD7FA}, + [I(53,39)] = {17,0xDFFA}, + [I(54,39)] = {17,0xE7FA}, + [I(55,39)] = {17,0xEFFA}, + [I(56,39)] = {17,0xF7FA}, + [I(57,39)] = {17,0xFFFA}, + [I(58,39)] = {18,0x2E7FA}, + [I(59,39)] = {19,0x7DFFA}, + [I(60,39)] = {26,0x3FFE7FA}, + [I(61,39)] = {17,0x107FA}, + [I(62,39)] = {23,0x7FDFFA}, + [I(63,39)] = {21,0x1FE7FA}, + [I(64,39)] = {24,0xFFD7FA}, + [I(65,39)] = {17,0x10FFA}, + [I(66,39)] = {18,0x2EFFA}, + [I(67,39)] = {18,0x2F7FA}, + [I(68,39)] = {18,0x2FFFA}, + [I(69,39)] = {18,0x307FA}, + [I(70,39)] = {18,0x30FFA}, + [I(71,39)] = {18,0x317FA}, + [I(72,39)] = {18,0x31FFA}, + [I(73,39)] = {18,0x327FA}, + [I(74,39)] = {18,0x32FFA}, + [I(75,39)] = {18,0x337FA}, + [I(76,39)] = {18,0x33FFA}, + [I(77,39)] = {18,0x347FA}, + [I(78,39)] = {18,0x34FFA}, + [I(79,39)] = {18,0x357FA}, + [I(80,39)] = {18,0x35FFA}, + [I(81,39)] = {18,0x367FA}, + [I(82,39)] = {18,0x36FFA}, + [I(83,39)] = {18,0x377FA}, + [I(84,39)] = {18,0x37FFA}, + [I(85,39)] = {18,0x387FA}, + [I(86,39)] = {18,0x38FFA}, + [I(87,39)] = {18,0x397FA}, + [I(88,39)] = {19,0x7E7FA}, + [I(89,39)] = {18,0x39FFA}, + [I(90,39)] = {19,0x7EFFA}, + [I(91,39)] = {24,0xFFDFFA}, + [I(92,39)] = {30,0x3FFF87FA}, + [I(93,39)] = {24,0xFFE7FA}, + [I(94,39)] = {25,0x1FFE7FA}, + [I(95,39)] = {17,0x117FA}, + [I(96,39)] = {26,0x3FFEFFA}, + [I(97,39)] = {16,0x1FFA}, + [I(98,39)] = {17,0x11FFA}, + [I(99,39)] = {16,0x27FA}, + [I(100,39)] = {17,0x127FA}, + [I(101,39)] = {16,0x2FFA}, + [I(102,39)] = {17,0x12FFA}, + [I(103,39)] = {17,0x137FA}, + [I(104,39)] = {17,0x13FFA}, + [I(105,39)] = {16,0x37FA}, + [I(106,39)] = {18,0x3A7FA}, + [I(107,39)] = {18,0x3AFFA}, + [I(108,39)] = {17,0x147FA}, + [I(109,39)] = {17,0x14FFA}, + [I(110,39)] = {17,0x157FA}, + [I(111,39)] = {16,0x3FFA}, + [I(112,39)] = {17,0x15FFA}, + [I(113,39)] = {18,0x3B7FA}, + [I(114,39)] = {17,0x167FA}, + [I(115,39)] = {16,0x47FA}, + [I(116,39)] = {16,0x4FFA}, + [I(117,39)] = {17,0x16FFA}, + [I(118,39)] = {18,0x3BFFA}, + [I(119,39)] = {18,0x3C7FA}, + [I(120,39)] = {18,0x3CFFA}, + [I(121,39)] = {18,0x3D7FA}, + [I(122,39)] = {18,0x3DFFA}, + [I(123,39)] = {26,0x3FFF7FA}, + [I(124,39)] = {22,0x3FE7FA}, + [I(125,39)] = {25,0x1FFEFFA}, + [I(126,39)] = {24,0xFFEFFA}, + [I(127,39)] = {64,0}, + [I(128,39)] = {31,0x7FFF37FA}, + [I(129,39)] = {64,0}, + [I(130,39)] = {31,0x7FFF3FFA}, + [I(131,39)] = {31,0x7FFF47FA}, + [I(132,39)] = {64,0}, + [I(133,39)] = {64,0}, + [I(134,39)] = {64,0}, + [I(135,39)] = {64,0}, + [I(136,39)] = {64,0}, + [I(137,39)] = {64,0}, + [I(138,39)] = {64,0}, + [I(139,39)] = {64,0}, + [I(140,39)] = {64,0}, + [I(141,39)] = {64,0}, + [I(142,39)] = {64,0}, + [I(143,39)] = {64,0}, + [I(144,39)] = {64,0}, + [I(145,39)] = {64,0}, + [I(146,39)] = {64,0}, + [I(147,39)] = {64,0}, + [I(148,39)] = {64,0}, + [I(149,39)] = {64,0}, + [I(150,39)] = {64,0}, + [I(151,39)] = {64,0}, + [I(152,39)] = {64,0}, + [I(153,39)] = {X32,0xFFFEE7FA}, + [I(154,39)] = {64,0}, + [I(155,39)] = {64,0}, + [I(156,39)] = {64,0}, + [I(157,39)] = {64,0}, + [I(158,39)] = {64,0}, + [I(159,39)] = {64,0}, + [I(160,39)] = {64,0}, + [I(161,39)] = {X32,0xFFFEEFFA}, + [I(162,39)] = {31,0x7FFF4FFA}, + [I(163,39)] = {64,0}, + [I(164,39)] = {64,0}, + [I(165,39)] = {64,0}, + [I(166,39)] = {64,0}, + [I(167,39)] = {X32,0xFFFEF7FA}, + [I(168,39)] = {64,0}, + [I(169,39)] = {64,0}, + [I(170,39)] = {64,0}, + [I(171,39)] = {64,0}, + [I(172,39)] = {X32,0xFFFEFFFA}, + [I(173,39)] = {64,0}, + [I(174,39)] = {64,0}, + [I(175,39)] = {64,0}, + [I(176,39)] = {X32,0xFFFF07FA}, + [I(177,39)] = {X32,0xFFFF0FFA}, + [I(178,39)] = {64,0}, + [I(179,39)] = {X32,0xFFFF17FA}, + [I(180,39)] = {64,0}, + [I(181,39)] = {64,0}, + [I(182,39)] = {64,0}, + [I(183,39)] = {64,0}, + [I(184,39)] = {31,0x7FFF57FA}, + [I(185,39)] = {64,0}, + [I(186,39)] = {64,0}, + [I(187,39)] = {64,0}, + [I(188,39)] = {64,0}, + [I(189,39)] = {64,0}, + [I(190,39)] = {64,0}, + [I(191,39)] = {64,0}, + [I(192,39)] = {64,0}, + [I(193,39)] = {64,0}, + [I(194,39)] = {31,0x7FFF5FFA}, + [I(195,39)] = {30,0x3FFF8FFA}, + [I(196,39)] = {64,0}, + [I(197,39)] = {64,0}, + [I(198,39)] = {64,0}, + [I(199,39)] = {64,0}, + [I(200,39)] = {64,0}, + [I(201,39)] = {64,0}, + [I(202,39)] = {64,0}, + [I(203,39)] = {64,0}, + [I(204,39)] = {64,0}, + [I(205,39)] = {64,0}, + [I(206,39)] = {64,0}, + [I(207,39)] = {64,0}, + [I(208,39)] = {30,0x3FFF97FA}, + [I(209,39)] = {X32,0xFFFF1FFA}, + [I(210,39)] = {64,0}, + [I(211,39)] = {64,0}, + [I(212,39)] = {64,0}, + [I(213,39)] = {64,0}, + [I(214,39)] = {64,0}, + [I(215,39)] = {64,0}, + [I(216,39)] = {X32,0xFFFF27FA}, + [I(217,39)] = {X32,0xFFFF2FFA}, + [I(218,39)] = {64,0}, + [I(219,39)] = {64,0}, + [I(220,39)] = {64,0}, + [I(221,39)] = {64,0}, + [I(222,39)] = {64,0}, + [I(223,39)] = {64,0}, + [I(224,39)] = {31,0x7FFF67FA}, + [I(225,39)] = {64,0}, + [I(226,39)] = {31,0x7FFF6FFA}, + [I(227,39)] = {X32,0xFFFF37FA}, + [I(228,39)] = {64,0}, + [I(229,39)] = {X32,0xFFFF3FFA}, + [I(230,39)] = {X32,0xFFFF47FA}, + [I(231,39)] = {64,0}, + [I(232,39)] = {64,0}, + [I(233,39)] = {64,0}, + [I(234,39)] = {64,0}, + [I(235,39)] = {64,0}, + [I(236,39)] = {64,0}, + [I(237,39)] = {64,0}, + [I(238,39)] = {64,0}, + [I(239,39)] = {64,0}, + [I(240,39)] = {64,0}, + [I(241,39)] = {64,0}, + [I(242,39)] = {64,0}, + [I(243,39)] = {64,0}, + [I(244,39)] = {64,0}, + [I(245,39)] = {64,0}, + [I(246,39)] = {64,0}, + [I(247,39)] = {64,0}, + [I(248,39)] = {64,0}, + [I(249,39)] = {64,0}, + [I(250,39)] = {64,0}, + [I(251,39)] = {64,0}, + [I(252,39)] = {64,0}, + [I(253,39)] = {64,0}, + [I(254,39)] = {64,0}, + [I(255,39)] = {64,0}, + [I(0,40)] = {23,0x7FE3FA}, + [I(1,40)] = {64,0}, + [I(2,40)] = {64,0}, + [I(3,40)] = {64,0}, + [I(4,40)] = {64,0}, + [I(5,40)] = {64,0}, + [I(6,40)] = {64,0}, + [I(7,40)] = {64,0}, + [I(8,40)] = {64,0}, + [I(9,40)] = {64,0}, + [I(10,40)] = {64,0}, + [I(11,40)] = {64,0}, + [I(12,40)] = {64,0}, + [I(13,40)] = {64,0}, + [I(14,40)] = {64,0}, + [I(15,40)] = {64,0}, + [I(16,40)] = {64,0}, + [I(17,40)] = {64,0}, + [I(18,40)] = {64,0}, + [I(19,40)] = {64,0}, + [I(20,40)] = {64,0}, + [I(21,40)] = {64,0}, + [I(22,40)] = {64,0}, + [I(23,40)] = {64,0}, + [I(24,40)] = {64,0}, + [I(25,40)] = {64,0}, + [I(26,40)] = {64,0}, + [I(27,40)] = {64,0}, + [I(28,40)] = {64,0}, + [I(29,40)] = {64,0}, + [I(30,40)] = {64,0}, + [I(31,40)] = {64,0}, + [I(32,40)] = {16,0x53FA}, + [I(33,40)] = {20,0xFE3FA}, + [I(34,40)] = {20,0xFE7FA}, + [I(35,40)] = {22,0x3FEBFA}, + [I(36,40)] = {23,0x7FE7FA}, + [I(37,40)] = {16,0x57FA}, + [I(38,40)] = {18,0x3E3FA}, + [I(39,40)] = {21,0x1FEBFA}, + [I(40,40)] = {20,0xFEBFA}, + [I(41,40)] = {20,0xFEFFA}, + [I(42,40)] = {18,0x3E7FA}, + [I(43,40)] = {21,0x1FEFFA}, + [I(44,40)] = {18,0x3EBFA}, + [I(45,40)] = {16,0x5BFA}, + [I(46,40)] = {16,0x5FFA}, + [I(47,40)] = {16,0x63FA}, + [I(48,40)] = {15,0x3FA}, + [I(49,40)] = {15,0x7FA}, + [I(50,40)] = {15,0xBFA}, + [I(51,40)] = {16,0x67FA}, + [I(52,40)] = {16,0x6BFA}, + [I(53,40)] = {16,0x6FFA}, + [I(54,40)] = {16,0x73FA}, + [I(55,40)] = {16,0x77FA}, + [I(56,40)] = {16,0x7BFA}, + [I(57,40)] = {16,0x7FFA}, + [I(58,40)] = {17,0x173FA}, + [I(59,40)] = {18,0x3EFFA}, + [I(60,40)] = {25,0x1FFF3FA}, + [I(61,40)] = {16,0x83FA}, + [I(62,40)] = {22,0x3FEFFA}, + [I(63,40)] = {20,0xFF3FA}, + [I(64,40)] = {23,0x7FEBFA}, + [I(65,40)] = {16,0x87FA}, + [I(66,40)] = {17,0x177FA}, + [I(67,40)] = {17,0x17BFA}, + [I(68,40)] = {17,0x17FFA}, + [I(69,40)] = {17,0x183FA}, + [I(70,40)] = {17,0x187FA}, + [I(71,40)] = {17,0x18BFA}, + [I(72,40)] = {17,0x18FFA}, + [I(73,40)] = {17,0x193FA}, + [I(74,40)] = {17,0x197FA}, + [I(75,40)] = {17,0x19BFA}, + [I(76,40)] = {17,0x19FFA}, + [I(77,40)] = {17,0x1A3FA}, + [I(78,40)] = {17,0x1A7FA}, + [I(79,40)] = {17,0x1ABFA}, + [I(80,40)] = {17,0x1AFFA}, + [I(81,40)] = {17,0x1B3FA}, + [I(82,40)] = {17,0x1B7FA}, + [I(83,40)] = {17,0x1BBFA}, + [I(84,40)] = {17,0x1BFFA}, + [I(85,40)] = {17,0x1C3FA}, + [I(86,40)] = {17,0x1C7FA}, + [I(87,40)] = {17,0x1CBFA}, + [I(88,40)] = {18,0x3F3FA}, + [I(89,40)] = {17,0x1CFFA}, + [I(90,40)] = {18,0x3F7FA}, + [I(91,40)] = {23,0x7FEFFA}, + [I(92,40)] = {29,0x1FFFC3FA}, + [I(93,40)] = {23,0x7FF3FA}, + [I(94,40)] = {24,0xFFF3FA}, + [I(95,40)] = {16,0x8BFA}, + [I(96,40)] = {25,0x1FFF7FA}, + [I(97,40)] = {15,0xFFA}, + [I(98,40)] = {16,0x8FFA}, + [I(99,40)] = {15,0x13FA}, + [I(100,40)] = {16,0x93FA}, + [I(101,40)] = {15,0x17FA}, + [I(102,40)] = {16,0x97FA}, + [I(103,40)] = {16,0x9BFA}, + [I(104,40)] = {16,0x9FFA}, + [I(105,40)] = {15,0x1BFA}, + [I(106,40)] = {17,0x1D3FA}, + [I(107,40)] = {17,0x1D7FA}, + [I(108,40)] = {16,0xA3FA}, + [I(109,40)] = {16,0xA7FA}, + [I(110,40)] = {16,0xABFA}, + [I(111,40)] = {15,0x1FFA}, + [I(112,40)] = {16,0xAFFA}, + [I(113,40)] = {17,0x1DBFA}, + [I(114,40)] = {16,0xB3FA}, + [I(115,40)] = {15,0x23FA}, + [I(116,40)] = {15,0x27FA}, + [I(117,40)] = {16,0xB7FA}, + [I(118,40)] = {17,0x1DFFA}, + [I(119,40)] = {17,0x1E3FA}, + [I(120,40)] = {17,0x1E7FA}, + [I(121,40)] = {17,0x1EBFA}, + [I(122,40)] = {17,0x1EFFA}, + [I(123,40)] = {25,0x1FFFBFA}, + [I(124,40)] = {21,0x1FF3FA}, + [I(125,40)] = {24,0xFFF7FA}, + [I(126,40)] = {23,0x7FF7FA}, + [I(127,40)] = {64,0}, + [I(128,40)] = {30,0x3FFF9BFA}, + [I(129,40)] = {X32,0xFFFF4BFA}, + [I(130,40)] = {30,0x3FFF9FFA}, + [I(131,40)] = {30,0x3FFFA3FA}, + [I(132,40)] = {X32,0xFFFF4FFA}, + [I(133,40)] = {X32,0xFFFF53FA}, + [I(134,40)] = {X32,0xFFFF57FA}, + [I(135,40)] = {64,0}, + [I(136,40)] = {X32,0xFFFF5BFA}, + [I(137,40)] = {64,0}, + [I(138,40)] = {64,0}, + [I(139,40)] = {64,0}, + [I(140,40)] = {64,0}, + [I(141,40)] = {64,0}, + [I(142,40)] = {64,0}, + [I(143,40)] = {64,0}, + [I(144,40)] = {64,0}, + [I(145,40)] = {64,0}, + [I(146,40)] = {X32,0xFFFF5FFA}, + [I(147,40)] = {64,0}, + [I(148,40)] = {64,0}, + [I(149,40)] = {64,0}, + [I(150,40)] = {64,0}, + [I(151,40)] = {64,0}, + [I(152,40)] = {64,0}, + [I(153,40)] = {31,0x7FFF73FA}, + [I(154,40)] = {X32,0xFFFF63FA}, + [I(155,40)] = {64,0}, + [I(156,40)] = {X32,0xFFFF67FA}, + [I(157,40)] = {64,0}, + [I(158,40)] = {64,0}, + [I(159,40)] = {64,0}, + [I(160,40)] = {X32,0xFFFF6BFA}, + [I(161,40)] = {31,0x7FFF77FA}, + [I(162,40)] = {30,0x3FFFA7FA}, + [I(163,40)] = {X32,0xFFFF6FFA}, + [I(164,40)] = {X32,0xFFFF73FA}, + [I(165,40)] = {64,0}, + [I(166,40)] = {64,0}, + [I(167,40)] = {31,0x7FFF7BFA}, + [I(168,40)] = {64,0}, + [I(169,40)] = {X32,0xFFFF77FA}, + [I(170,40)] = {X32,0xFFFF7BFA}, + [I(171,40)] = {64,0}, + [I(172,40)] = {31,0x7FFF7FFA}, + [I(173,40)] = {X32,0xFFFF7FFA}, + [I(174,40)] = {64,0}, + [I(175,40)] = {64,0}, + [I(176,40)] = {31,0x7FFF83FA}, + [I(177,40)] = {31,0x7FFF87FA}, + [I(178,40)] = {X32,0xFFFF83FA}, + [I(179,40)] = {31,0x7FFF8BFA}, + [I(180,40)] = {64,0}, + [I(181,40)] = {X32,0xFFFF87FA}, + [I(182,40)] = {64,0}, + [I(183,40)] = {64,0}, + [I(184,40)] = {30,0x3FFFABFA}, + [I(185,40)] = {X32,0xFFFF8BFA}, + [I(186,40)] = {X32,0xFFFF8FFA}, + [I(187,40)] = {X32,0xFFFF93FA}, + [I(188,40)] = {64,0}, + [I(189,40)] = {X32,0xFFFF97FA}, + [I(190,40)] = {X32,0xFFFF9BFA}, + [I(191,40)] = {64,0}, + [I(192,40)] = {64,0}, + [I(193,40)] = {64,0}, + [I(194,40)] = {30,0x3FFFAFFA}, + [I(195,40)] = {29,0x1FFFC7FA}, + [I(196,40)] = {X32,0xFFFF9FFA}, + [I(197,40)] = {64,0}, + [I(198,40)] = {X32,0xFFFFA3FA}, + [I(199,40)] = {64,0}, + [I(200,40)] = {64,0}, + [I(201,40)] = {64,0}, + [I(202,40)] = {64,0}, + [I(203,40)] = {64,0}, + [I(204,40)] = {64,0}, + [I(205,40)] = {64,0}, + [I(206,40)] = {64,0}, + [I(207,40)] = {64,0}, + [I(208,40)] = {29,0x1FFFCBFA}, + [I(209,40)] = {31,0x7FFF8FFA}, + [I(210,40)] = {64,0}, + [I(211,40)] = {64,0}, + [I(212,40)] = {64,0}, + [I(213,40)] = {64,0}, + [I(214,40)] = {64,0}, + [I(215,40)] = {64,0}, + [I(216,40)] = {31,0x7FFF93FA}, + [I(217,40)] = {31,0x7FFF97FA}, + [I(218,40)] = {64,0}, + [I(219,40)] = {64,0}, + [I(220,40)] = {64,0}, + [I(221,40)] = {64,0}, + [I(222,40)] = {64,0}, + [I(223,40)] = {64,0}, + [I(224,40)] = {30,0x3FFFB3FA}, + [I(225,40)] = {64,0}, + [I(226,40)] = {30,0x3FFFB7FA}, + [I(227,40)] = {31,0x7FFF9BFA}, + [I(228,40)] = {X32,0xFFFFA7FA}, + [I(229,40)] = {31,0x7FFF9FFA}, + [I(230,40)] = {31,0x7FFFA3FA}, + [I(231,40)] = {64,0}, + [I(232,40)] = {X32,0xFFFFABFA}, + [I(233,40)] = {X32,0xFFFFAFFA}, + [I(234,40)] = {64,0}, + [I(235,40)] = {64,0}, + [I(236,40)] = {64,0}, + [I(237,40)] = {64,0}, + [I(238,40)] = {64,0}, + [I(239,40)] = {64,0}, + [I(240,40)] = {64,0}, + [I(241,40)] = {64,0}, + [I(242,40)] = {64,0}, + [I(243,40)] = {64,0}, + [I(244,40)] = {64,0}, + [I(245,40)] = {64,0}, + [I(246,40)] = {64,0}, + [I(247,40)] = {64,0}, + [I(248,40)] = {64,0}, + [I(249,40)] = {64,0}, + [I(250,40)] = {64,0}, + [I(251,40)] = {64,0}, + [I(252,40)] = {64,0}, + [I(253,40)] = {64,0}, + [I(254,40)] = {64,0}, + [I(255,40)] = {64,0}, + [I(0,41)] = {23,0x7FE3FB}, + [I(1,41)] = {64,0}, + [I(2,41)] = {64,0}, + [I(3,41)] = {64,0}, + [I(4,41)] = {64,0}, + [I(5,41)] = {64,0}, + [I(6,41)] = {64,0}, + [I(7,41)] = {64,0}, + [I(8,41)] = {64,0}, + [I(9,41)] = {64,0}, + [I(10,41)] = {64,0}, + [I(11,41)] = {64,0}, + [I(12,41)] = {64,0}, + [I(13,41)] = {64,0}, + [I(14,41)] = {64,0}, + [I(15,41)] = {64,0}, + [I(16,41)] = {64,0}, + [I(17,41)] = {64,0}, + [I(18,41)] = {64,0}, + [I(19,41)] = {64,0}, + [I(20,41)] = {64,0}, + [I(21,41)] = {64,0}, + [I(22,41)] = {64,0}, + [I(23,41)] = {64,0}, + [I(24,41)] = {64,0}, + [I(25,41)] = {64,0}, + [I(26,41)] = {64,0}, + [I(27,41)] = {64,0}, + [I(28,41)] = {64,0}, + [I(29,41)] = {64,0}, + [I(30,41)] = {64,0}, + [I(31,41)] = {64,0}, + [I(32,41)] = {16,0x53FB}, + [I(33,41)] = {20,0xFE3FB}, + [I(34,41)] = {20,0xFE7FB}, + [I(35,41)] = {22,0x3FEBFB}, + [I(36,41)] = {23,0x7FE7FB}, + [I(37,41)] = {16,0x57FB}, + [I(38,41)] = {18,0x3E3FB}, + [I(39,41)] = {21,0x1FEBFB}, + [I(40,41)] = {20,0xFEBFB}, + [I(41,41)] = {20,0xFEFFB}, + [I(42,41)] = {18,0x3E7FB}, + [I(43,41)] = {21,0x1FEFFB}, + [I(44,41)] = {18,0x3EBFB}, + [I(45,41)] = {16,0x5BFB}, + [I(46,41)] = {16,0x5FFB}, + [I(47,41)] = {16,0x63FB}, + [I(48,41)] = {15,0x3FB}, + [I(49,41)] = {15,0x7FB}, + [I(50,41)] = {15,0xBFB}, + [I(51,41)] = {16,0x67FB}, + [I(52,41)] = {16,0x6BFB}, + [I(53,41)] = {16,0x6FFB}, + [I(54,41)] = {16,0x73FB}, + [I(55,41)] = {16,0x77FB}, + [I(56,41)] = {16,0x7BFB}, + [I(57,41)] = {16,0x7FFB}, + [I(58,41)] = {17,0x173FB}, + [I(59,41)] = {18,0x3EFFB}, + [I(60,41)] = {25,0x1FFF3FB}, + [I(61,41)] = {16,0x83FB}, + [I(62,41)] = {22,0x3FEFFB}, + [I(63,41)] = {20,0xFF3FB}, + [I(64,41)] = {23,0x7FEBFB}, + [I(65,41)] = {16,0x87FB}, + [I(66,41)] = {17,0x177FB}, + [I(67,41)] = {17,0x17BFB}, + [I(68,41)] = {17,0x17FFB}, + [I(69,41)] = {17,0x183FB}, + [I(70,41)] = {17,0x187FB}, + [I(71,41)] = {17,0x18BFB}, + [I(72,41)] = {17,0x18FFB}, + [I(73,41)] = {17,0x193FB}, + [I(74,41)] = {17,0x197FB}, + [I(75,41)] = {17,0x19BFB}, + [I(76,41)] = {17,0x19FFB}, + [I(77,41)] = {17,0x1A3FB}, + [I(78,41)] = {17,0x1A7FB}, + [I(79,41)] = {17,0x1ABFB}, + [I(80,41)] = {17,0x1AFFB}, + [I(81,41)] = {17,0x1B3FB}, + [I(82,41)] = {17,0x1B7FB}, + [I(83,41)] = {17,0x1BBFB}, + [I(84,41)] = {17,0x1BFFB}, + [I(85,41)] = {17,0x1C3FB}, + [I(86,41)] = {17,0x1C7FB}, + [I(87,41)] = {17,0x1CBFB}, + [I(88,41)] = {18,0x3F3FB}, + [I(89,41)] = {17,0x1CFFB}, + [I(90,41)] = {18,0x3F7FB}, + [I(91,41)] = {23,0x7FEFFB}, + [I(92,41)] = {29,0x1FFFC3FB}, + [I(93,41)] = {23,0x7FF3FB}, + [I(94,41)] = {24,0xFFF3FB}, + [I(95,41)] = {16,0x8BFB}, + [I(96,41)] = {25,0x1FFF7FB}, + [I(97,41)] = {15,0xFFB}, + [I(98,41)] = {16,0x8FFB}, + [I(99,41)] = {15,0x13FB}, + [I(100,41)] = {16,0x93FB}, + [I(101,41)] = {15,0x17FB}, + [I(102,41)] = {16,0x97FB}, + [I(103,41)] = {16,0x9BFB}, + [I(104,41)] = {16,0x9FFB}, + [I(105,41)] = {15,0x1BFB}, + [I(106,41)] = {17,0x1D3FB}, + [I(107,41)] = {17,0x1D7FB}, + [I(108,41)] = {16,0xA3FB}, + [I(109,41)] = {16,0xA7FB}, + [I(110,41)] = {16,0xABFB}, + [I(111,41)] = {15,0x1FFB}, + [I(112,41)] = {16,0xAFFB}, + [I(113,41)] = {17,0x1DBFB}, + [I(114,41)] = {16,0xB3FB}, + [I(115,41)] = {15,0x23FB}, + [I(116,41)] = {15,0x27FB}, + [I(117,41)] = {16,0xB7FB}, + [I(118,41)] = {17,0x1DFFB}, + [I(119,41)] = {17,0x1E3FB}, + [I(120,41)] = {17,0x1E7FB}, + [I(121,41)] = {17,0x1EBFB}, + [I(122,41)] = {17,0x1EFFB}, + [I(123,41)] = {25,0x1FFFBFB}, + [I(124,41)] = {21,0x1FF3FB}, + [I(125,41)] = {24,0xFFF7FB}, + [I(126,41)] = {23,0x7FF7FB}, + [I(127,41)] = {64,0}, + [I(128,41)] = {30,0x3FFF9BFB}, + [I(129,41)] = {X32,0xFFFF4BFB}, + [I(130,41)] = {30,0x3FFF9FFB}, + [I(131,41)] = {30,0x3FFFA3FB}, + [I(132,41)] = {X32,0xFFFF4FFB}, + [I(133,41)] = {X32,0xFFFF53FB}, + [I(134,41)] = {X32,0xFFFF57FB}, + [I(135,41)] = {64,0}, + [I(136,41)] = {X32,0xFFFF5BFB}, + [I(137,41)] = {64,0}, + [I(138,41)] = {64,0}, + [I(139,41)] = {64,0}, + [I(140,41)] = {64,0}, + [I(141,41)] = {64,0}, + [I(142,41)] = {64,0}, + [I(143,41)] = {64,0}, + [I(144,41)] = {64,0}, + [I(145,41)] = {64,0}, + [I(146,41)] = {X32,0xFFFF5FFB}, + [I(147,41)] = {64,0}, + [I(148,41)] = {64,0}, + [I(149,41)] = {64,0}, + [I(150,41)] = {64,0}, + [I(151,41)] = {64,0}, + [I(152,41)] = {64,0}, + [I(153,41)] = {31,0x7FFF73FB}, + [I(154,41)] = {X32,0xFFFF63FB}, + [I(155,41)] = {64,0}, + [I(156,41)] = {X32,0xFFFF67FB}, + [I(157,41)] = {64,0}, + [I(158,41)] = {64,0}, + [I(159,41)] = {64,0}, + [I(160,41)] = {X32,0xFFFF6BFB}, + [I(161,41)] = {31,0x7FFF77FB}, + [I(162,41)] = {30,0x3FFFA7FB}, + [I(163,41)] = {X32,0xFFFF6FFB}, + [I(164,41)] = {X32,0xFFFF73FB}, + [I(165,41)] = {64,0}, + [I(166,41)] = {64,0}, + [I(167,41)] = {31,0x7FFF7BFB}, + [I(168,41)] = {64,0}, + [I(169,41)] = {X32,0xFFFF77FB}, + [I(170,41)] = {X32,0xFFFF7BFB}, + [I(171,41)] = {64,0}, + [I(172,41)] = {31,0x7FFF7FFB}, + [I(173,41)] = {X32,0xFFFF7FFB}, + [I(174,41)] = {64,0}, + [I(175,41)] = {64,0}, + [I(176,41)] = {31,0x7FFF83FB}, + [I(177,41)] = {31,0x7FFF87FB}, + [I(178,41)] = {X32,0xFFFF83FB}, + [I(179,41)] = {31,0x7FFF8BFB}, + [I(180,41)] = {64,0}, + [I(181,41)] = {X32,0xFFFF87FB}, + [I(182,41)] = {64,0}, + [I(183,41)] = {64,0}, + [I(184,41)] = {30,0x3FFFABFB}, + [I(185,41)] = {X32,0xFFFF8BFB}, + [I(186,41)] = {X32,0xFFFF8FFB}, + [I(187,41)] = {X32,0xFFFF93FB}, + [I(188,41)] = {64,0}, + [I(189,41)] = {X32,0xFFFF97FB}, + [I(190,41)] = {X32,0xFFFF9BFB}, + [I(191,41)] = {64,0}, + [I(192,41)] = {64,0}, + [I(193,41)] = {64,0}, + [I(194,41)] = {30,0x3FFFAFFB}, + [I(195,41)] = {29,0x1FFFC7FB}, + [I(196,41)] = {X32,0xFFFF9FFB}, + [I(197,41)] = {64,0}, + [I(198,41)] = {X32,0xFFFFA3FB}, + [I(199,41)] = {64,0}, + [I(200,41)] = {64,0}, + [I(201,41)] = {64,0}, + [I(202,41)] = {64,0}, + [I(203,41)] = {64,0}, + [I(204,41)] = {64,0}, + [I(205,41)] = {64,0}, + [I(206,41)] = {64,0}, + [I(207,41)] = {64,0}, + [I(208,41)] = {29,0x1FFFCBFB}, + [I(209,41)] = {31,0x7FFF8FFB}, + [I(210,41)] = {64,0}, + [I(211,41)] = {64,0}, + [I(212,41)] = {64,0}, + [I(213,41)] = {64,0}, + [I(214,41)] = {64,0}, + [I(215,41)] = {64,0}, + [I(216,41)] = {31,0x7FFF93FB}, + [I(217,41)] = {31,0x7FFF97FB}, + [I(218,41)] = {64,0}, + [I(219,41)] = {64,0}, + [I(220,41)] = {64,0}, + [I(221,41)] = {64,0}, + [I(222,41)] = {64,0}, + [I(223,41)] = {64,0}, + [I(224,41)] = {30,0x3FFFB3FB}, + [I(225,41)] = {64,0}, + [I(226,41)] = {30,0x3FFFB7FB}, + [I(227,41)] = {31,0x7FFF9BFB}, + [I(228,41)] = {X32,0xFFFFA7FB}, + [I(229,41)] = {31,0x7FFF9FFB}, + [I(230,41)] = {31,0x7FFFA3FB}, + [I(231,41)] = {64,0}, + [I(232,41)] = {X32,0xFFFFABFB}, + [I(233,41)] = {X32,0xFFFFAFFB}, + [I(234,41)] = {64,0}, + [I(235,41)] = {64,0}, + [I(236,41)] = {64,0}, + [I(237,41)] = {64,0}, + [I(238,41)] = {64,0}, + [I(239,41)] = {64,0}, + [I(240,41)] = {64,0}, + [I(241,41)] = {64,0}, + [I(242,41)] = {64,0}, + [I(243,41)] = {64,0}, + [I(244,41)] = {64,0}, + [I(245,41)] = {64,0}, + [I(246,41)] = {64,0}, + [I(247,41)] = {64,0}, + [I(248,41)] = {64,0}, + [I(249,41)] = {64,0}, + [I(250,41)] = {64,0}, + [I(251,41)] = {64,0}, + [I(252,41)] = {64,0}, + [I(253,41)] = {64,0}, + [I(254,41)] = {64,0}, + [I(255,41)] = {64,0}, + [I(0,42)] = {21,0x1FF8F9}, + [I(1,42)] = {31,0x7FFFD8F9}, + [I(2,42)] = {64,0}, + [I(3,42)] = {64,0}, + [I(4,42)] = {64,0}, + [I(5,42)] = {64,0}, + [I(6,42)] = {64,0}, + [I(7,42)] = {64,0}, + [I(8,42)] = {64,0}, + [I(9,42)] = {X32,0xFFFFEAF9}, + [I(10,42)] = {64,0}, + [I(11,42)] = {64,0}, + [I(12,42)] = {64,0}, + [I(13,42)] = {64,0}, + [I(14,42)] = {64,0}, + [I(15,42)] = {64,0}, + [I(16,42)] = {64,0}, + [I(17,42)] = {64,0}, + [I(18,42)] = {64,0}, + [I(19,42)] = {64,0}, + [I(20,42)] = {64,0}, + [I(21,42)] = {64,0}, + [I(22,42)] = {64,0}, + [I(23,42)] = {64,0}, + [I(24,42)] = {64,0}, + [I(25,42)] = {64,0}, + [I(26,42)] = {64,0}, + [I(27,42)] = {64,0}, + [I(28,42)] = {64,0}, + [I(29,42)] = {64,0}, + [I(30,42)] = {64,0}, + [I(31,42)] = {64,0}, + [I(32,42)] = {14,0x14F9}, + [I(33,42)] = {18,0x3F8F9}, + [I(34,42)] = {18,0x3F9F9}, + [I(35,42)] = {20,0xFFAF9}, + [I(36,42)] = {21,0x1FF9F9}, + [I(37,42)] = {14,0x15F9}, + [I(38,42)] = {16,0xF8F9}, + [I(39,42)] = {19,0x7FAF9}, + [I(40,42)] = {18,0x3FAF9}, + [I(41,42)] = {18,0x3FBF9}, + [I(42,42)] = {16,0xF9F9}, + [I(43,42)] = {19,0x7FBF9}, + [I(44,42)] = {16,0xFAF9}, + [I(45,42)] = {14,0x16F9}, + [I(46,42)] = {14,0x17F9}, + [I(47,42)] = {14,0x18F9}, + [I(48,42)] = {13,0xF9}, + [I(49,42)] = {13,0x1F9}, + [I(50,42)] = {13,0x2F9}, + [I(51,42)] = {14,0x19F9}, + [I(52,42)] = {14,0x1AF9}, + [I(53,42)] = {14,0x1BF9}, + [I(54,42)] = {14,0x1CF9}, + [I(55,42)] = {14,0x1DF9}, + [I(56,42)] = {14,0x1EF9}, + [I(57,42)] = {14,0x1FF9}, + [I(58,42)] = {15,0x5CF9}, + [I(59,42)] = {16,0xFBF9}, + [I(60,42)] = {23,0x7FFCF9}, + [I(61,42)] = {14,0x20F9}, + [I(62,42)] = {20,0xFFBF9}, + [I(63,42)] = {18,0x3FCF9}, + [I(64,42)] = {21,0x1FFAF9}, + [I(65,42)] = {14,0x21F9}, + [I(66,42)] = {15,0x5DF9}, + [I(67,42)] = {15,0x5EF9}, + [I(68,42)] = {15,0x5FF9}, + [I(69,42)] = {15,0x60F9}, + [I(70,42)] = {15,0x61F9}, + [I(71,42)] = {15,0x62F9}, + [I(72,42)] = {15,0x63F9}, + [I(73,42)] = {15,0x64F9}, + [I(74,42)] = {15,0x65F9}, + [I(75,42)] = {15,0x66F9}, + [I(76,42)] = {15,0x67F9}, + [I(77,42)] = {15,0x68F9}, + [I(78,42)] = {15,0x69F9}, + [I(79,42)] = {15,0x6AF9}, + [I(80,42)] = {15,0x6BF9}, + [I(81,42)] = {15,0x6CF9}, + [I(82,42)] = {15,0x6DF9}, + [I(83,42)] = {15,0x6EF9}, + [I(84,42)] = {15,0x6FF9}, + [I(85,42)] = {15,0x70F9}, + [I(86,42)] = {15,0x71F9}, + [I(87,42)] = {15,0x72F9}, + [I(88,42)] = {16,0xFCF9}, + [I(89,42)] = {15,0x73F9}, + [I(90,42)] = {16,0xFDF9}, + [I(91,42)] = {21,0x1FFBF9}, + [I(92,42)] = {27,0x7FFF0F9}, + [I(93,42)] = {21,0x1FFCF9}, + [I(94,42)] = {22,0x3FFCF9}, + [I(95,42)] = {14,0x22F9}, + [I(96,42)] = {23,0x7FFDF9}, + [I(97,42)] = {13,0x3F9}, + [I(98,42)] = {14,0x23F9}, + [I(99,42)] = {13,0x4F9}, + [I(100,42)] = {14,0x24F9}, + [I(101,42)] = {13,0x5F9}, + [I(102,42)] = {14,0x25F9}, + [I(103,42)] = {14,0x26F9}, + [I(104,42)] = {14,0x27F9}, + [I(105,42)] = {13,0x6F9}, + [I(106,42)] = {15,0x74F9}, + [I(107,42)] = {15,0x75F9}, + [I(108,42)] = {14,0x28F9}, + [I(109,42)] = {14,0x29F9}, + [I(110,42)] = {14,0x2AF9}, + [I(111,42)] = {13,0x7F9}, + [I(112,42)] = {14,0x2BF9}, + [I(113,42)] = {15,0x76F9}, + [I(114,42)] = {14,0x2CF9}, + [I(115,42)] = {13,0x8F9}, + [I(116,42)] = {13,0x9F9}, + [I(117,42)] = {14,0x2DF9}, + [I(118,42)] = {15,0x77F9}, + [I(119,42)] = {15,0x78F9}, + [I(120,42)] = {15,0x79F9}, + [I(121,42)] = {15,0x7AF9}, + [I(122,42)] = {15,0x7BF9}, + [I(123,42)] = {23,0x7FFEF9}, + [I(124,42)] = {19,0x7FCF9}, + [I(125,42)] = {22,0x3FFDF9}, + [I(126,42)] = {21,0x1FFDF9}, + [I(127,42)] = {64,0}, + [I(128,42)] = {28,0xFFFE6F9}, + [I(129,42)] = {30,0x3FFFD2F9}, + [I(130,42)] = {28,0xFFFE7F9}, + [I(131,42)] = {28,0xFFFE8F9}, + [I(132,42)] = {30,0x3FFFD3F9}, + [I(133,42)] = {30,0x3FFFD4F9}, + [I(134,42)] = {30,0x3FFFD5F9}, + [I(135,42)] = {31,0x7FFFD9F9}, + [I(136,42)] = {30,0x3FFFD6F9}, + [I(137,42)] = {31,0x7FFFDAF9}, + [I(138,42)] = {31,0x7FFFDBF9}, + [I(139,42)] = {31,0x7FFFDCF9}, + [I(140,42)] = {31,0x7FFFDDF9}, + [I(141,42)] = {31,0x7FFFDEF9}, + [I(142,42)] = {X32,0xFFFFEBF9}, + [I(143,42)] = {31,0x7FFFDFF9}, + [I(144,42)] = {X32,0xFFFFECF9}, + [I(145,42)] = {X32,0xFFFFEDF9}, + [I(146,42)] = {30,0x3FFFD7F9}, + [I(147,42)] = {31,0x7FFFE0F9}, + [I(148,42)] = {X32,0xFFFFEEF9}, + [I(149,42)] = {31,0x7FFFE1F9}, + [I(150,42)] = {31,0x7FFFE2F9}, + [I(151,42)] = {31,0x7FFFE3F9}, + [I(152,42)] = {31,0x7FFFE4F9}, + [I(153,42)] = {29,0x1FFFDCF9}, + [I(154,42)] = {30,0x3FFFD8F9}, + [I(155,42)] = {31,0x7FFFE5F9}, + [I(156,42)] = {30,0x3FFFD9F9}, + [I(157,42)] = {31,0x7FFFE6F9}, + [I(158,42)] = {31,0x7FFFE7F9}, + [I(159,42)] = {X32,0xFFFFEFF9}, + [I(160,42)] = {30,0x3FFFDAF9}, + [I(161,42)] = {29,0x1FFFDDF9}, + [I(162,42)] = {28,0xFFFE9F9}, + [I(163,42)] = {30,0x3FFFDBF9}, + [I(164,42)] = {30,0x3FFFDCF9}, + [I(165,42)] = {31,0x7FFFE8F9}, + [I(166,42)] = {31,0x7FFFE9F9}, + [I(167,42)] = {29,0x1FFFDEF9}, + [I(168,42)] = {31,0x7FFFEAF9}, + [I(169,42)] = {30,0x3FFFDDF9}, + [I(170,42)] = {30,0x3FFFDEF9}, + [I(171,42)] = {X32,0xFFFFF0F9}, + [I(172,42)] = {29,0x1FFFDFF9}, + [I(173,42)] = {30,0x3FFFDFF9}, + [I(174,42)] = {31,0x7FFFEBF9}, + [I(175,42)] = {31,0x7FFFECF9}, + [I(176,42)] = {29,0x1FFFE0F9}, + [I(177,42)] = {29,0x1FFFE1F9}, + [I(178,42)] = {30,0x3FFFE0F9}, + [I(179,42)] = {29,0x1FFFE2F9}, + [I(180,42)] = {31,0x7FFFEDF9}, + [I(181,42)] = {30,0x3FFFE1F9}, + [I(182,42)] = {31,0x7FFFEEF9}, + [I(183,42)] = {31,0x7FFFEFF9}, + [I(184,42)] = {28,0xFFFEAF9}, + [I(185,42)] = {30,0x3FFFE2F9}, + [I(186,42)] = {30,0x3FFFE3F9}, + [I(187,42)] = {30,0x3FFFE4F9}, + [I(188,42)] = {31,0x7FFFF0F9}, + [I(189,42)] = {30,0x3FFFE5F9}, + [I(190,42)] = {30,0x3FFFE6F9}, + [I(191,42)] = {31,0x7FFFF1F9}, + [I(192,42)] = {64,0}, + [I(193,42)] = {64,0}, + [I(194,42)] = {28,0xFFFEBF9}, + [I(195,42)] = {27,0x7FFF1F9}, + [I(196,42)] = {30,0x3FFFE7F9}, + [I(197,42)] = {31,0x7FFFF2F9}, + [I(198,42)] = {30,0x3FFFE8F9}, + [I(199,42)] = {64,0}, + [I(200,42)] = {64,0}, + [I(201,42)] = {64,0}, + [I(202,42)] = {64,0}, + [I(203,42)] = {64,0}, + [I(204,42)] = {64,0}, + [I(205,42)] = {64,0}, + [I(206,42)] = {X32,0xFFFFF1F9}, + [I(207,42)] = {64,0}, + [I(208,42)] = {27,0x7FFF2F9}, + [I(209,42)] = {29,0x1FFFE3F9}, + [I(210,42)] = {64,0}, + [I(211,42)] = {64,0}, + [I(212,42)] = {64,0}, + [I(213,42)] = {64,0}, + [I(214,42)] = {64,0}, + [I(215,42)] = {X32,0xFFFFF2F9}, + [I(216,42)] = {29,0x1FFFE4F9}, + [I(217,42)] = {29,0x1FFFE5F9}, + [I(218,42)] = {64,0}, + [I(219,42)] = {64,0}, + [I(220,42)] = {64,0}, + [I(221,42)] = {64,0}, + [I(222,42)] = {64,0}, + [I(223,42)] = {64,0}, + [I(224,42)] = {28,0xFFFECF9}, + [I(225,42)] = {X32,0xFFFFF3F9}, + [I(226,42)] = {28,0xFFFEDF9}, + [I(227,42)] = {29,0x1FFFE6F9}, + [I(228,42)] = {30,0x3FFFE9F9}, + [I(229,42)] = {29,0x1FFFE7F9}, + [I(230,42)] = {29,0x1FFFE8F9}, + [I(231,42)] = {31,0x7FFFF3F9}, + [I(232,42)] = {30,0x3FFFEAF9}, + [I(233,42)] = {30,0x3FFFEBF9}, + [I(234,42)] = {64,0}, + [I(235,42)] = {64,0}, + [I(236,42)] = {X32,0xFFFFF4F9}, + [I(237,42)] = {X32,0xFFFFF5F9}, + [I(238,42)] = {64,0}, + [I(239,42)] = {31,0x7FFFF4F9}, + [I(240,42)] = {64,0}, + [I(241,42)] = {64,0}, + [I(242,42)] = {64,0}, + [I(243,42)] = {64,0}, + [I(244,42)] = {64,0}, + [I(245,42)] = {64,0}, + [I(246,42)] = {64,0}, + [I(247,42)] = {64,0}, + [I(248,42)] = {64,0}, + [I(249,42)] = {64,0}, + [I(250,42)] = {64,0}, + [I(251,42)] = {64,0}, + [I(252,42)] = {64,0}, + [I(253,42)] = {64,0}, + [I(254,42)] = {64,0}, + [I(255,42)] = {64,0}, + [I(0,43)] = {24,0xFFC7FB}, + [I(1,43)] = {64,0}, + [I(2,43)] = {64,0}, + [I(3,43)] = {64,0}, + [I(4,43)] = {64,0}, + [I(5,43)] = {64,0}, + [I(6,43)] = {64,0}, + [I(7,43)] = {64,0}, + [I(8,43)] = {64,0}, + [I(9,43)] = {64,0}, + [I(10,43)] = {64,0}, + [I(11,43)] = {64,0}, + [I(12,43)] = {64,0}, + [I(13,43)] = {64,0}, + [I(14,43)] = {64,0}, + [I(15,43)] = {64,0}, + [I(16,43)] = {64,0}, + [I(17,43)] = {64,0}, + [I(18,43)] = {64,0}, + [I(19,43)] = {64,0}, + [I(20,43)] = {64,0}, + [I(21,43)] = {64,0}, + [I(22,43)] = {64,0}, + [I(23,43)] = {64,0}, + [I(24,43)] = {64,0}, + [I(25,43)] = {64,0}, + [I(26,43)] = {64,0}, + [I(27,43)] = {64,0}, + [I(28,43)] = {64,0}, + [I(29,43)] = {64,0}, + [I(30,43)] = {64,0}, + [I(31,43)] = {64,0}, + [I(32,43)] = {17,0xA7FB}, + [I(33,43)] = {21,0x1FC7FB}, + [I(34,43)] = {21,0x1FCFFB}, + [I(35,43)] = {23,0x7FD7FB}, + [I(36,43)] = {24,0xFFCFFB}, + [I(37,43)] = {17,0xAFFB}, + [I(38,43)] = {19,0x7C7FB}, + [I(39,43)] = {22,0x3FD7FB}, + [I(40,43)] = {21,0x1FD7FB}, + [I(41,43)] = {21,0x1FDFFB}, + [I(42,43)] = {19,0x7CFFB}, + [I(43,43)] = {22,0x3FDFFB}, + [I(44,43)] = {19,0x7D7FB}, + [I(45,43)] = {17,0xB7FB}, + [I(46,43)] = {17,0xBFFB}, + [I(47,43)] = {17,0xC7FB}, + [I(48,43)] = {16,0x7FB}, + [I(49,43)] = {16,0xFFB}, + [I(50,43)] = {16,0x17FB}, + [I(51,43)] = {17,0xCFFB}, + [I(52,43)] = {17,0xD7FB}, + [I(53,43)] = {17,0xDFFB}, + [I(54,43)] = {17,0xE7FB}, + [I(55,43)] = {17,0xEFFB}, + [I(56,43)] = {17,0xF7FB}, + [I(57,43)] = {17,0xFFFB}, + [I(58,43)] = {18,0x2E7FB}, + [I(59,43)] = {19,0x7DFFB}, + [I(60,43)] = {26,0x3FFE7FB}, + [I(61,43)] = {17,0x107FB}, + [I(62,43)] = {23,0x7FDFFB}, + [I(63,43)] = {21,0x1FE7FB}, + [I(64,43)] = {24,0xFFD7FB}, + [I(65,43)] = {17,0x10FFB}, + [I(66,43)] = {18,0x2EFFB}, + [I(67,43)] = {18,0x2F7FB}, + [I(68,43)] = {18,0x2FFFB}, + [I(69,43)] = {18,0x307FB}, + [I(70,43)] = {18,0x30FFB}, + [I(71,43)] = {18,0x317FB}, + [I(72,43)] = {18,0x31FFB}, + [I(73,43)] = {18,0x327FB}, + [I(74,43)] = {18,0x32FFB}, + [I(75,43)] = {18,0x337FB}, + [I(76,43)] = {18,0x33FFB}, + [I(77,43)] = {18,0x347FB}, + [I(78,43)] = {18,0x34FFB}, + [I(79,43)] = {18,0x357FB}, + [I(80,43)] = {18,0x35FFB}, + [I(81,43)] = {18,0x367FB}, + [I(82,43)] = {18,0x36FFB}, + [I(83,43)] = {18,0x377FB}, + [I(84,43)] = {18,0x37FFB}, + [I(85,43)] = {18,0x387FB}, + [I(86,43)] = {18,0x38FFB}, + [I(87,43)] = {18,0x397FB}, + [I(88,43)] = {19,0x7E7FB}, + [I(89,43)] = {18,0x39FFB}, + [I(90,43)] = {19,0x7EFFB}, + [I(91,43)] = {24,0xFFDFFB}, + [I(92,43)] = {30,0x3FFF87FB}, + [I(93,43)] = {24,0xFFE7FB}, + [I(94,43)] = {25,0x1FFE7FB}, + [I(95,43)] = {17,0x117FB}, + [I(96,43)] = {26,0x3FFEFFB}, + [I(97,43)] = {16,0x1FFB}, + [I(98,43)] = {17,0x11FFB}, + [I(99,43)] = {16,0x27FB}, + [I(100,43)] = {17,0x127FB}, + [I(101,43)] = {16,0x2FFB}, + [I(102,43)] = {17,0x12FFB}, + [I(103,43)] = {17,0x137FB}, + [I(104,43)] = {17,0x13FFB}, + [I(105,43)] = {16,0x37FB}, + [I(106,43)] = {18,0x3A7FB}, + [I(107,43)] = {18,0x3AFFB}, + [I(108,43)] = {17,0x147FB}, + [I(109,43)] = {17,0x14FFB}, + [I(110,43)] = {17,0x157FB}, + [I(111,43)] = {16,0x3FFB}, + [I(112,43)] = {17,0x15FFB}, + [I(113,43)] = {18,0x3B7FB}, + [I(114,43)] = {17,0x167FB}, + [I(115,43)] = {16,0x47FB}, + [I(116,43)] = {16,0x4FFB}, + [I(117,43)] = {17,0x16FFB}, + [I(118,43)] = {18,0x3BFFB}, + [I(119,43)] = {18,0x3C7FB}, + [I(120,43)] = {18,0x3CFFB}, + [I(121,43)] = {18,0x3D7FB}, + [I(122,43)] = {18,0x3DFFB}, + [I(123,43)] = {26,0x3FFF7FB}, + [I(124,43)] = {22,0x3FE7FB}, + [I(125,43)] = {25,0x1FFEFFB}, + [I(126,43)] = {24,0xFFEFFB}, + [I(127,43)] = {64,0}, + [I(128,43)] = {31,0x7FFF37FB}, + [I(129,43)] = {64,0}, + [I(130,43)] = {31,0x7FFF3FFB}, + [I(131,43)] = {31,0x7FFF47FB}, + [I(132,43)] = {64,0}, + [I(133,43)] = {64,0}, + [I(134,43)] = {64,0}, + [I(135,43)] = {64,0}, + [I(136,43)] = {64,0}, + [I(137,43)] = {64,0}, + [I(138,43)] = {64,0}, + [I(139,43)] = {64,0}, + [I(140,43)] = {64,0}, + [I(141,43)] = {64,0}, + [I(142,43)] = {64,0}, + [I(143,43)] = {64,0}, + [I(144,43)] = {64,0}, + [I(145,43)] = {64,0}, + [I(146,43)] = {64,0}, + [I(147,43)] = {64,0}, + [I(148,43)] = {64,0}, + [I(149,43)] = {64,0}, + [I(150,43)] = {64,0}, + [I(151,43)] = {64,0}, + [I(152,43)] = {64,0}, + [I(153,43)] = {X32,0xFFFEE7FB}, + [I(154,43)] = {64,0}, + [I(155,43)] = {64,0}, + [I(156,43)] = {64,0}, + [I(157,43)] = {64,0}, + [I(158,43)] = {64,0}, + [I(159,43)] = {64,0}, + [I(160,43)] = {64,0}, + [I(161,43)] = {X32,0xFFFEEFFB}, + [I(162,43)] = {31,0x7FFF4FFB}, + [I(163,43)] = {64,0}, + [I(164,43)] = {64,0}, + [I(165,43)] = {64,0}, + [I(166,43)] = {64,0}, + [I(167,43)] = {X32,0xFFFEF7FB}, + [I(168,43)] = {64,0}, + [I(169,43)] = {64,0}, + [I(170,43)] = {64,0}, + [I(171,43)] = {64,0}, + [I(172,43)] = {X32,0xFFFEFFFB}, + [I(173,43)] = {64,0}, + [I(174,43)] = {64,0}, + [I(175,43)] = {64,0}, + [I(176,43)] = {X32,0xFFFF07FB}, + [I(177,43)] = {X32,0xFFFF0FFB}, + [I(178,43)] = {64,0}, + [I(179,43)] = {X32,0xFFFF17FB}, + [I(180,43)] = {64,0}, + [I(181,43)] = {64,0}, + [I(182,43)] = {64,0}, + [I(183,43)] = {64,0}, + [I(184,43)] = {31,0x7FFF57FB}, + [I(185,43)] = {64,0}, + [I(186,43)] = {64,0}, + [I(187,43)] = {64,0}, + [I(188,43)] = {64,0}, + [I(189,43)] = {64,0}, + [I(190,43)] = {64,0}, + [I(191,43)] = {64,0}, + [I(192,43)] = {64,0}, + [I(193,43)] = {64,0}, + [I(194,43)] = {31,0x7FFF5FFB}, + [I(195,43)] = {30,0x3FFF8FFB}, + [I(196,43)] = {64,0}, + [I(197,43)] = {64,0}, + [I(198,43)] = {64,0}, + [I(199,43)] = {64,0}, + [I(200,43)] = {64,0}, + [I(201,43)] = {64,0}, + [I(202,43)] = {64,0}, + [I(203,43)] = {64,0}, + [I(204,43)] = {64,0}, + [I(205,43)] = {64,0}, + [I(206,43)] = {64,0}, + [I(207,43)] = {64,0}, + [I(208,43)] = {30,0x3FFF97FB}, + [I(209,43)] = {X32,0xFFFF1FFB}, + [I(210,43)] = {64,0}, + [I(211,43)] = {64,0}, + [I(212,43)] = {64,0}, + [I(213,43)] = {64,0}, + [I(214,43)] = {64,0}, + [I(215,43)] = {64,0}, + [I(216,43)] = {X32,0xFFFF27FB}, + [I(217,43)] = {X32,0xFFFF2FFB}, + [I(218,43)] = {64,0}, + [I(219,43)] = {64,0}, + [I(220,43)] = {64,0}, + [I(221,43)] = {64,0}, + [I(222,43)] = {64,0}, + [I(223,43)] = {64,0}, + [I(224,43)] = {31,0x7FFF67FB}, + [I(225,43)] = {64,0}, + [I(226,43)] = {31,0x7FFF6FFB}, + [I(227,43)] = {X32,0xFFFF37FB}, + [I(228,43)] = {64,0}, + [I(229,43)] = {X32,0xFFFF3FFB}, + [I(230,43)] = {X32,0xFFFF47FB}, + [I(231,43)] = {64,0}, + [I(232,43)] = {64,0}, + [I(233,43)] = {64,0}, + [I(234,43)] = {64,0}, + [I(235,43)] = {64,0}, + [I(236,43)] = {64,0}, + [I(237,43)] = {64,0}, + [I(238,43)] = {64,0}, + [I(239,43)] = {64,0}, + [I(240,43)] = {64,0}, + [I(241,43)] = {64,0}, + [I(242,43)] = {64,0}, + [I(243,43)] = {64,0}, + [I(244,43)] = {64,0}, + [I(245,43)] = {64,0}, + [I(246,43)] = {64,0}, + [I(247,43)] = {64,0}, + [I(248,43)] = {64,0}, + [I(249,43)] = {64,0}, + [I(250,43)] = {64,0}, + [I(251,43)] = {64,0}, + [I(252,43)] = {64,0}, + [I(253,43)] = {64,0}, + [I(254,43)] = {64,0}, + [I(255,43)] = {64,0}, + [I(0,44)] = {21,0x1FF8FA}, + [I(1,44)] = {31,0x7FFFD8FA}, + [I(2,44)] = {64,0}, + [I(3,44)] = {64,0}, + [I(4,44)] = {64,0}, + [I(5,44)] = {64,0}, + [I(6,44)] = {64,0}, + [I(7,44)] = {64,0}, + [I(8,44)] = {64,0}, + [I(9,44)] = {X32,0xFFFFEAFA}, + [I(10,44)] = {64,0}, + [I(11,44)] = {64,0}, + [I(12,44)] = {64,0}, + [I(13,44)] = {64,0}, + [I(14,44)] = {64,0}, + [I(15,44)] = {64,0}, + [I(16,44)] = {64,0}, + [I(17,44)] = {64,0}, + [I(18,44)] = {64,0}, + [I(19,44)] = {64,0}, + [I(20,44)] = {64,0}, + [I(21,44)] = {64,0}, + [I(22,44)] = {64,0}, + [I(23,44)] = {64,0}, + [I(24,44)] = {64,0}, + [I(25,44)] = {64,0}, + [I(26,44)] = {64,0}, + [I(27,44)] = {64,0}, + [I(28,44)] = {64,0}, + [I(29,44)] = {64,0}, + [I(30,44)] = {64,0}, + [I(31,44)] = {64,0}, + [I(32,44)] = {14,0x14FA}, + [I(33,44)] = {18,0x3F8FA}, + [I(34,44)] = {18,0x3F9FA}, + [I(35,44)] = {20,0xFFAFA}, + [I(36,44)] = {21,0x1FF9FA}, + [I(37,44)] = {14,0x15FA}, + [I(38,44)] = {16,0xF8FA}, + [I(39,44)] = {19,0x7FAFA}, + [I(40,44)] = {18,0x3FAFA}, + [I(41,44)] = {18,0x3FBFA}, + [I(42,44)] = {16,0xF9FA}, + [I(43,44)] = {19,0x7FBFA}, + [I(44,44)] = {16,0xFAFA}, + [I(45,44)] = {14,0x16FA}, + [I(46,44)] = {14,0x17FA}, + [I(47,44)] = {14,0x18FA}, + [I(48,44)] = {13,0xFA}, + [I(49,44)] = {13,0x1FA}, + [I(50,44)] = {13,0x2FA}, + [I(51,44)] = {14,0x19FA}, + [I(52,44)] = {14,0x1AFA}, + [I(53,44)] = {14,0x1BFA}, + [I(54,44)] = {14,0x1CFA}, + [I(55,44)] = {14,0x1DFA}, + [I(56,44)] = {14,0x1EFA}, + [I(57,44)] = {14,0x1FFA}, + [I(58,44)] = {15,0x5CFA}, + [I(59,44)] = {16,0xFBFA}, + [I(60,44)] = {23,0x7FFCFA}, + [I(61,44)] = {14,0x20FA}, + [I(62,44)] = {20,0xFFBFA}, + [I(63,44)] = {18,0x3FCFA}, + [I(64,44)] = {21,0x1FFAFA}, + [I(65,44)] = {14,0x21FA}, + [I(66,44)] = {15,0x5DFA}, + [I(67,44)] = {15,0x5EFA}, + [I(68,44)] = {15,0x5FFA}, + [I(69,44)] = {15,0x60FA}, + [I(70,44)] = {15,0x61FA}, + [I(71,44)] = {15,0x62FA}, + [I(72,44)] = {15,0x63FA}, + [I(73,44)] = {15,0x64FA}, + [I(74,44)] = {15,0x65FA}, + [I(75,44)] = {15,0x66FA}, + [I(76,44)] = {15,0x67FA}, + [I(77,44)] = {15,0x68FA}, + [I(78,44)] = {15,0x69FA}, + [I(79,44)] = {15,0x6AFA}, + [I(80,44)] = {15,0x6BFA}, + [I(81,44)] = {15,0x6CFA}, + [I(82,44)] = {15,0x6DFA}, + [I(83,44)] = {15,0x6EFA}, + [I(84,44)] = {15,0x6FFA}, + [I(85,44)] = {15,0x70FA}, + [I(86,44)] = {15,0x71FA}, + [I(87,44)] = {15,0x72FA}, + [I(88,44)] = {16,0xFCFA}, + [I(89,44)] = {15,0x73FA}, + [I(90,44)] = {16,0xFDFA}, + [I(91,44)] = {21,0x1FFBFA}, + [I(92,44)] = {27,0x7FFF0FA}, + [I(93,44)] = {21,0x1FFCFA}, + [I(94,44)] = {22,0x3FFCFA}, + [I(95,44)] = {14,0x22FA}, + [I(96,44)] = {23,0x7FFDFA}, + [I(97,44)] = {13,0x3FA}, + [I(98,44)] = {14,0x23FA}, + [I(99,44)] = {13,0x4FA}, + [I(100,44)] = {14,0x24FA}, + [I(101,44)] = {13,0x5FA}, + [I(102,44)] = {14,0x25FA}, + [I(103,44)] = {14,0x26FA}, + [I(104,44)] = {14,0x27FA}, + [I(105,44)] = {13,0x6FA}, + [I(106,44)] = {15,0x74FA}, + [I(107,44)] = {15,0x75FA}, + [I(108,44)] = {14,0x28FA}, + [I(109,44)] = {14,0x29FA}, + [I(110,44)] = {14,0x2AFA}, + [I(111,44)] = {13,0x7FA}, + [I(112,44)] = {14,0x2BFA}, + [I(113,44)] = {15,0x76FA}, + [I(114,44)] = {14,0x2CFA}, + [I(115,44)] = {13,0x8FA}, + [I(116,44)] = {13,0x9FA}, + [I(117,44)] = {14,0x2DFA}, + [I(118,44)] = {15,0x77FA}, + [I(119,44)] = {15,0x78FA}, + [I(120,44)] = {15,0x79FA}, + [I(121,44)] = {15,0x7AFA}, + [I(122,44)] = {15,0x7BFA}, + [I(123,44)] = {23,0x7FFEFA}, + [I(124,44)] = {19,0x7FCFA}, + [I(125,44)] = {22,0x3FFDFA}, + [I(126,44)] = {21,0x1FFDFA}, + [I(127,44)] = {64,0}, + [I(128,44)] = {28,0xFFFE6FA}, + [I(129,44)] = {30,0x3FFFD2FA}, + [I(130,44)] = {28,0xFFFE7FA}, + [I(131,44)] = {28,0xFFFE8FA}, + [I(132,44)] = {30,0x3FFFD3FA}, + [I(133,44)] = {30,0x3FFFD4FA}, + [I(134,44)] = {30,0x3FFFD5FA}, + [I(135,44)] = {31,0x7FFFD9FA}, + [I(136,44)] = {30,0x3FFFD6FA}, + [I(137,44)] = {31,0x7FFFDAFA}, + [I(138,44)] = {31,0x7FFFDBFA}, + [I(139,44)] = {31,0x7FFFDCFA}, + [I(140,44)] = {31,0x7FFFDDFA}, + [I(141,44)] = {31,0x7FFFDEFA}, + [I(142,44)] = {X32,0xFFFFEBFA}, + [I(143,44)] = {31,0x7FFFDFFA}, + [I(144,44)] = {X32,0xFFFFECFA}, + [I(145,44)] = {X32,0xFFFFEDFA}, + [I(146,44)] = {30,0x3FFFD7FA}, + [I(147,44)] = {31,0x7FFFE0FA}, + [I(148,44)] = {X32,0xFFFFEEFA}, + [I(149,44)] = {31,0x7FFFE1FA}, + [I(150,44)] = {31,0x7FFFE2FA}, + [I(151,44)] = {31,0x7FFFE3FA}, + [I(152,44)] = {31,0x7FFFE4FA}, + [I(153,44)] = {29,0x1FFFDCFA}, + [I(154,44)] = {30,0x3FFFD8FA}, + [I(155,44)] = {31,0x7FFFE5FA}, + [I(156,44)] = {30,0x3FFFD9FA}, + [I(157,44)] = {31,0x7FFFE6FA}, + [I(158,44)] = {31,0x7FFFE7FA}, + [I(159,44)] = {X32,0xFFFFEFFA}, + [I(160,44)] = {30,0x3FFFDAFA}, + [I(161,44)] = {29,0x1FFFDDFA}, + [I(162,44)] = {28,0xFFFE9FA}, + [I(163,44)] = {30,0x3FFFDBFA}, + [I(164,44)] = {30,0x3FFFDCFA}, + [I(165,44)] = {31,0x7FFFE8FA}, + [I(166,44)] = {31,0x7FFFE9FA}, + [I(167,44)] = {29,0x1FFFDEFA}, + [I(168,44)] = {31,0x7FFFEAFA}, + [I(169,44)] = {30,0x3FFFDDFA}, + [I(170,44)] = {30,0x3FFFDEFA}, + [I(171,44)] = {X32,0xFFFFF0FA}, + [I(172,44)] = {29,0x1FFFDFFA}, + [I(173,44)] = {30,0x3FFFDFFA}, + [I(174,44)] = {31,0x7FFFEBFA}, + [I(175,44)] = {31,0x7FFFECFA}, + [I(176,44)] = {29,0x1FFFE0FA}, + [I(177,44)] = {29,0x1FFFE1FA}, + [I(178,44)] = {30,0x3FFFE0FA}, + [I(179,44)] = {29,0x1FFFE2FA}, + [I(180,44)] = {31,0x7FFFEDFA}, + [I(181,44)] = {30,0x3FFFE1FA}, + [I(182,44)] = {31,0x7FFFEEFA}, + [I(183,44)] = {31,0x7FFFEFFA}, + [I(184,44)] = {28,0xFFFEAFA}, + [I(185,44)] = {30,0x3FFFE2FA}, + [I(186,44)] = {30,0x3FFFE3FA}, + [I(187,44)] = {30,0x3FFFE4FA}, + [I(188,44)] = {31,0x7FFFF0FA}, + [I(189,44)] = {30,0x3FFFE5FA}, + [I(190,44)] = {30,0x3FFFE6FA}, + [I(191,44)] = {31,0x7FFFF1FA}, + [I(192,44)] = {64,0}, + [I(193,44)] = {64,0}, + [I(194,44)] = {28,0xFFFEBFA}, + [I(195,44)] = {27,0x7FFF1FA}, + [I(196,44)] = {30,0x3FFFE7FA}, + [I(197,44)] = {31,0x7FFFF2FA}, + [I(198,44)] = {30,0x3FFFE8FA}, + [I(199,44)] = {64,0}, + [I(200,44)] = {64,0}, + [I(201,44)] = {64,0}, + [I(202,44)] = {64,0}, + [I(203,44)] = {64,0}, + [I(204,44)] = {64,0}, + [I(205,44)] = {64,0}, + [I(206,44)] = {X32,0xFFFFF1FA}, + [I(207,44)] = {64,0}, + [I(208,44)] = {27,0x7FFF2FA}, + [I(209,44)] = {29,0x1FFFE3FA}, + [I(210,44)] = {64,0}, + [I(211,44)] = {64,0}, + [I(212,44)] = {64,0}, + [I(213,44)] = {64,0}, + [I(214,44)] = {64,0}, + [I(215,44)] = {X32,0xFFFFF2FA}, + [I(216,44)] = {29,0x1FFFE4FA}, + [I(217,44)] = {29,0x1FFFE5FA}, + [I(218,44)] = {64,0}, + [I(219,44)] = {64,0}, + [I(220,44)] = {64,0}, + [I(221,44)] = {64,0}, + [I(222,44)] = {64,0}, + [I(223,44)] = {64,0}, + [I(224,44)] = {28,0xFFFECFA}, + [I(225,44)] = {X32,0xFFFFF3FA}, + [I(226,44)] = {28,0xFFFEDFA}, + [I(227,44)] = {29,0x1FFFE6FA}, + [I(228,44)] = {30,0x3FFFE9FA}, + [I(229,44)] = {29,0x1FFFE7FA}, + [I(230,44)] = {29,0x1FFFE8FA}, + [I(231,44)] = {31,0x7FFFF3FA}, + [I(232,44)] = {30,0x3FFFEAFA}, + [I(233,44)] = {30,0x3FFFEBFA}, + [I(234,44)] = {64,0}, + [I(235,44)] = {64,0}, + [I(236,44)] = {X32,0xFFFFF4FA}, + [I(237,44)] = {X32,0xFFFFF5FA}, + [I(238,44)] = {64,0}, + [I(239,44)] = {31,0x7FFFF4FA}, + [I(240,44)] = {64,0}, + [I(241,44)] = {64,0}, + [I(242,44)] = {64,0}, + [I(243,44)] = {64,0}, + [I(244,44)] = {64,0}, + [I(245,44)] = {64,0}, + [I(246,44)] = {64,0}, + [I(247,44)] = {64,0}, + [I(248,44)] = {64,0}, + [I(249,44)] = {64,0}, + [I(250,44)] = {64,0}, + [I(251,44)] = {64,0}, + [I(252,44)] = {64,0}, + [I(253,44)] = {64,0}, + [I(254,44)] = {64,0}, + [I(255,44)] = {64,0}, + [I(0,45)] = {19,0x7FE16}, + [I(1,45)] = {29,0x1FFFF616}, + [I(2,45)] = {64,0}, + [I(3,45)] = {64,0}, + [I(4,45)] = {64,0}, + [I(5,45)] = {64,0}, + [I(6,45)] = {64,0}, + [I(7,45)] = {64,0}, + [I(8,45)] = {64,0}, + [I(9,45)] = {30,0x3FFFFA96}, + [I(10,45)] = {64,0}, + [I(11,45)] = {64,0}, + [I(12,45)] = {64,0}, + [I(13,45)] = {64,0}, + [I(14,45)] = {64,0}, + [I(15,45)] = {64,0}, + [I(16,45)] = {64,0}, + [I(17,45)] = {64,0}, + [I(18,45)] = {64,0}, + [I(19,45)] = {64,0}, + [I(20,45)] = {64,0}, + [I(21,45)] = {64,0}, + [I(22,45)] = {64,0}, + [I(23,45)] = {64,0}, + [I(24,45)] = {64,0}, + [I(25,45)] = {64,0}, + [I(26,45)] = {64,0}, + [I(27,45)] = {64,0}, + [I(28,45)] = {64,0}, + [I(29,45)] = {64,0}, + [I(30,45)] = {64,0}, + [I(31,45)] = {64,0}, + [I(32,45)] = {12,0x516}, + [I(33,45)] = {16,0xFE16}, + [I(34,45)] = {16,0xFE56}, + [I(35,45)] = {18,0x3FE96}, + [I(36,45)] = {19,0x7FE56}, + [I(37,45)] = {12,0x556}, + [I(38,45)] = {14,0x3E16}, + [I(39,45)] = {17,0x1FE96}, + [I(40,45)] = {16,0xFE96}, + [I(41,45)] = {16,0xFED6}, + [I(42,45)] = {14,0x3E56}, + [I(43,45)] = {17,0x1FED6}, + [I(44,45)] = {14,0x3E96}, + [I(45,45)] = {12,0x596}, + [I(46,45)] = {12,0x5D6}, + [I(47,45)] = {12,0x616}, + [I(48,45)] = {11,0x16}, + [I(49,45)] = {11,0x56}, + [I(50,45)] = {11,0x96}, + [I(51,45)] = {12,0x656}, + [I(52,45)] = {12,0x696}, + [I(53,45)] = {12,0x6D6}, + [I(54,45)] = {12,0x716}, + [I(55,45)] = {12,0x756}, + [I(56,45)] = {12,0x796}, + [I(57,45)] = {12,0x7D6}, + [I(58,45)] = {13,0x1716}, + [I(59,45)] = {14,0x3ED6}, + [I(60,45)] = {21,0x1FFF16}, + [I(61,45)] = {12,0x816}, + [I(62,45)] = {18,0x3FED6}, + [I(63,45)] = {16,0xFF16}, + [I(64,45)] = {19,0x7FE96}, + [I(65,45)] = {12,0x856}, + [I(66,45)] = {13,0x1756}, + [I(67,45)] = {13,0x1796}, + [I(68,45)] = {13,0x17D6}, + [I(69,45)] = {13,0x1816}, + [I(70,45)] = {13,0x1856}, + [I(71,45)] = {13,0x1896}, + [I(72,45)] = {13,0x18D6}, + [I(73,45)] = {13,0x1916}, + [I(74,45)] = {13,0x1956}, + [I(75,45)] = {13,0x1996}, + [I(76,45)] = {13,0x19D6}, + [I(77,45)] = {13,0x1A16}, + [I(78,45)] = {13,0x1A56}, + [I(79,45)] = {13,0x1A96}, + [I(80,45)] = {13,0x1AD6}, + [I(81,45)] = {13,0x1B16}, + [I(82,45)] = {13,0x1B56}, + [I(83,45)] = {13,0x1B96}, + [I(84,45)] = {13,0x1BD6}, + [I(85,45)] = {13,0x1C16}, + [I(86,45)] = {13,0x1C56}, + [I(87,45)] = {13,0x1C96}, + [I(88,45)] = {14,0x3F16}, + [I(89,45)] = {13,0x1CD6}, + [I(90,45)] = {14,0x3F56}, + [I(91,45)] = {19,0x7FED6}, + [I(92,45)] = {25,0x1FFFC16}, + [I(93,45)] = {19,0x7FF16}, + [I(94,45)] = {20,0xFFF16}, + [I(95,45)] = {12,0x896}, + [I(96,45)] = {21,0x1FFF56}, + [I(97,45)] = {11,0xD6}, + [I(98,45)] = {12,0x8D6}, + [I(99,45)] = {11,0x116}, + [I(100,45)] = {12,0x916}, + [I(101,45)] = {11,0x156}, + [I(102,45)] = {12,0x956}, + [I(103,45)] = {12,0x996}, + [I(104,45)] = {12,0x9D6}, + [I(105,45)] = {11,0x196}, + [I(106,45)] = {13,0x1D16}, + [I(107,45)] = {13,0x1D56}, + [I(108,45)] = {12,0xA16}, + [I(109,45)] = {12,0xA56}, + [I(110,45)] = {12,0xA96}, + [I(111,45)] = {11,0x1D6}, + [I(112,45)] = {12,0xAD6}, + [I(113,45)] = {13,0x1D96}, + [I(114,45)] = {12,0xB16}, + [I(115,45)] = {11,0x216}, + [I(116,45)] = {11,0x256}, + [I(117,45)] = {12,0xB56}, + [I(118,45)] = {13,0x1DD6}, + [I(119,45)] = {13,0x1E16}, + [I(120,45)] = {13,0x1E56}, + [I(121,45)] = {13,0x1E96}, + [I(122,45)] = {13,0x1ED6}, + [I(123,45)] = {21,0x1FFF96}, + [I(124,45)] = {17,0x1FF16}, + [I(125,45)] = {20,0xFFF56}, + [I(126,45)] = {19,0x7FF56}, + [I(127,45)] = {64,0}, + [I(128,45)] = {26,0x3FFF996}, + [I(129,45)] = {28,0xFFFF496}, + [I(130,45)] = {26,0x3FFF9D6}, + [I(131,45)] = {26,0x3FFFA16}, + [I(132,45)] = {28,0xFFFF4D6}, + [I(133,45)] = {28,0xFFFF516}, + [I(134,45)] = {28,0xFFFF556}, + [I(135,45)] = {29,0x1FFFF656}, + [I(136,45)] = {28,0xFFFF596}, + [I(137,45)] = {29,0x1FFFF696}, + [I(138,45)] = {29,0x1FFFF6D6}, + [I(139,45)] = {29,0x1FFFF716}, + [I(140,45)] = {29,0x1FFFF756}, + [I(141,45)] = {29,0x1FFFF796}, + [I(142,45)] = {30,0x3FFFFAD6}, + [I(143,45)] = {29,0x1FFFF7D6}, + [I(144,45)] = {30,0x3FFFFB16}, + [I(145,45)] = {30,0x3FFFFB56}, + [I(146,45)] = {28,0xFFFF5D6}, + [I(147,45)] = {29,0x1FFFF816}, + [I(148,45)] = {30,0x3FFFFB96}, + [I(149,45)] = {29,0x1FFFF856}, + [I(150,45)] = {29,0x1FFFF896}, + [I(151,45)] = {29,0x1FFFF8D6}, + [I(152,45)] = {29,0x1FFFF916}, + [I(153,45)] = {27,0x7FFF716}, + [I(154,45)] = {28,0xFFFF616}, + [I(155,45)] = {29,0x1FFFF956}, + [I(156,45)] = {28,0xFFFF656}, + [I(157,45)] = {29,0x1FFFF996}, + [I(158,45)] = {29,0x1FFFF9D6}, + [I(159,45)] = {30,0x3FFFFBD6}, + [I(160,45)] = {28,0xFFFF696}, + [I(161,45)] = {27,0x7FFF756}, + [I(162,45)] = {26,0x3FFFA56}, + [I(163,45)] = {28,0xFFFF6D6}, + [I(164,45)] = {28,0xFFFF716}, + [I(165,45)] = {29,0x1FFFFA16}, + [I(166,45)] = {29,0x1FFFFA56}, + [I(167,45)] = {27,0x7FFF796}, + [I(168,45)] = {29,0x1FFFFA96}, + [I(169,45)] = {28,0xFFFF756}, + [I(170,45)] = {28,0xFFFF796}, + [I(171,45)] = {30,0x3FFFFC16}, + [I(172,45)] = {27,0x7FFF7D6}, + [I(173,45)] = {28,0xFFFF7D6}, + [I(174,45)] = {29,0x1FFFFAD6}, + [I(175,45)] = {29,0x1FFFFB16}, + [I(176,45)] = {27,0x7FFF816}, + [I(177,45)] = {27,0x7FFF856}, + [I(178,45)] = {28,0xFFFF816}, + [I(179,45)] = {27,0x7FFF896}, + [I(180,45)] = {29,0x1FFFFB56}, + [I(181,45)] = {28,0xFFFF856}, + [I(182,45)] = {29,0x1FFFFB96}, + [I(183,45)] = {29,0x1FFFFBD6}, + [I(184,45)] = {26,0x3FFFA96}, + [I(185,45)] = {28,0xFFFF896}, + [I(186,45)] = {28,0xFFFF8D6}, + [I(187,45)] = {28,0xFFFF916}, + [I(188,45)] = {29,0x1FFFFC16}, + [I(189,45)] = {28,0xFFFF956}, + [I(190,45)] = {28,0xFFFF996}, + [I(191,45)] = {29,0x1FFFFC56}, + [I(192,45)] = {X32,0xFFFFF816}, + [I(193,45)] = {X32,0xFFFFF856}, + [I(194,45)] = {26,0x3FFFAD6}, + [I(195,45)] = {25,0x1FFFC56}, + [I(196,45)] = {28,0xFFFF9D6}, + [I(197,45)] = {29,0x1FFFFC96}, + [I(198,45)] = {28,0xFFFFA16}, + [I(199,45)] = {31,0x7FFFFB16}, + [I(200,45)] = {X32,0xFFFFF896}, + [I(201,45)] = {X32,0xFFFFF8D6}, + [I(202,45)] = {X32,0xFFFFF916}, + [I(203,45)] = {64,0}, + [I(204,45)] = {64,0}, + [I(205,45)] = {X32,0xFFFFF956}, + [I(206,45)] = {30,0x3FFFFC56}, + [I(207,45)] = {31,0x7FFFFB56}, + [I(208,45)] = {25,0x1FFFC96}, + [I(209,45)] = {27,0x7FFF8D6}, + [I(210,45)] = {X32,0xFFFFF996}, + [I(211,45)] = {64,0}, + [I(212,45)] = {64,0}, + [I(213,45)] = {X32,0xFFFFF9D6}, + [I(214,45)] = {64,0}, + [I(215,45)] = {30,0x3FFFFC96}, + [I(216,45)] = {27,0x7FFF916}, + [I(217,45)] = {27,0x7FFF956}, + [I(218,45)] = {X32,0xFFFFFA16}, + [I(219,45)] = {X32,0xFFFFFA56}, + [I(220,45)] = {64,0}, + [I(221,45)] = {64,0}, + [I(222,45)] = {64,0}, + [I(223,45)] = {64,0}, + [I(224,45)] = {26,0x3FFFB16}, + [I(225,45)] = {30,0x3FFFFCD6}, + [I(226,45)] = {26,0x3FFFB56}, + [I(227,45)] = {27,0x7FFF996}, + [I(228,45)] = {28,0xFFFFA56}, + [I(229,45)] = {27,0x7FFF9D6}, + [I(230,45)] = {27,0x7FFFA16}, + [I(231,45)] = {29,0x1FFFFCD6}, + [I(232,45)] = {28,0xFFFFA96}, + [I(233,45)] = {28,0xFFFFAD6}, + [I(234,45)] = {31,0x7FFFFB96}, + [I(235,45)] = {31,0x7FFFFBD6}, + [I(236,45)] = {30,0x3FFFFD16}, + [I(237,45)] = {30,0x3FFFFD56}, + [I(238,45)] = {X32,0xFFFFFA96}, + [I(239,45)] = {29,0x1FFFFD16}, + [I(240,45)] = {X32,0xFFFFFAD6}, + [I(241,45)] = {64,0}, + [I(242,45)] = {X32,0xFFFFFB16}, + [I(243,45)] = {X32,0xFFFFFB56}, + [I(244,45)] = {64,0}, + [I(245,45)] = {64,0}, + [I(246,45)] = {64,0}, + [I(247,45)] = {64,0}, + [I(248,45)] = {64,0}, + [I(249,45)] = {64,0}, + [I(250,45)] = {64,0}, + [I(251,45)] = {64,0}, + [I(252,45)] = {64,0}, + [I(253,45)] = {64,0}, + [I(254,45)] = {64,0}, + [I(255,45)] = {X32,0xFFFFFB96}, + [I(0,46)] = {19,0x7FE17}, + [I(1,46)] = {29,0x1FFFF617}, + [I(2,46)] = {64,0}, + [I(3,46)] = {64,0}, + [I(4,46)] = {64,0}, + [I(5,46)] = {64,0}, + [I(6,46)] = {64,0}, + [I(7,46)] = {64,0}, + [I(8,46)] = {64,0}, + [I(9,46)] = {30,0x3FFFFA97}, + [I(10,46)] = {64,0}, + [I(11,46)] = {64,0}, + [I(12,46)] = {64,0}, + [I(13,46)] = {64,0}, + [I(14,46)] = {64,0}, + [I(15,46)] = {64,0}, + [I(16,46)] = {64,0}, + [I(17,46)] = {64,0}, + [I(18,46)] = {64,0}, + [I(19,46)] = {64,0}, + [I(20,46)] = {64,0}, + [I(21,46)] = {64,0}, + [I(22,46)] = {64,0}, + [I(23,46)] = {64,0}, + [I(24,46)] = {64,0}, + [I(25,46)] = {64,0}, + [I(26,46)] = {64,0}, + [I(27,46)] = {64,0}, + [I(28,46)] = {64,0}, + [I(29,46)] = {64,0}, + [I(30,46)] = {64,0}, + [I(31,46)] = {64,0}, + [I(32,46)] = {12,0x517}, + [I(33,46)] = {16,0xFE17}, + [I(34,46)] = {16,0xFE57}, + [I(35,46)] = {18,0x3FE97}, + [I(36,46)] = {19,0x7FE57}, + [I(37,46)] = {12,0x557}, + [I(38,46)] = {14,0x3E17}, + [I(39,46)] = {17,0x1FE97}, + [I(40,46)] = {16,0xFE97}, + [I(41,46)] = {16,0xFED7}, + [I(42,46)] = {14,0x3E57}, + [I(43,46)] = {17,0x1FED7}, + [I(44,46)] = {14,0x3E97}, + [I(45,46)] = {12,0x597}, + [I(46,46)] = {12,0x5D7}, + [I(47,46)] = {12,0x617}, + [I(48,46)] = {11,0x17}, + [I(49,46)] = {11,0x57}, + [I(50,46)] = {11,0x97}, + [I(51,46)] = {12,0x657}, + [I(52,46)] = {12,0x697}, + [I(53,46)] = {12,0x6D7}, + [I(54,46)] = {12,0x717}, + [I(55,46)] = {12,0x757}, + [I(56,46)] = {12,0x797}, + [I(57,46)] = {12,0x7D7}, + [I(58,46)] = {13,0x1717}, + [I(59,46)] = {14,0x3ED7}, + [I(60,46)] = {21,0x1FFF17}, + [I(61,46)] = {12,0x817}, + [I(62,46)] = {18,0x3FED7}, + [I(63,46)] = {16,0xFF17}, + [I(64,46)] = {19,0x7FE97}, + [I(65,46)] = {12,0x857}, + [I(66,46)] = {13,0x1757}, + [I(67,46)] = {13,0x1797}, + [I(68,46)] = {13,0x17D7}, + [I(69,46)] = {13,0x1817}, + [I(70,46)] = {13,0x1857}, + [I(71,46)] = {13,0x1897}, + [I(72,46)] = {13,0x18D7}, + [I(73,46)] = {13,0x1917}, + [I(74,46)] = {13,0x1957}, + [I(75,46)] = {13,0x1997}, + [I(76,46)] = {13,0x19D7}, + [I(77,46)] = {13,0x1A17}, + [I(78,46)] = {13,0x1A57}, + [I(79,46)] = {13,0x1A97}, + [I(80,46)] = {13,0x1AD7}, + [I(81,46)] = {13,0x1B17}, + [I(82,46)] = {13,0x1B57}, + [I(83,46)] = {13,0x1B97}, + [I(84,46)] = {13,0x1BD7}, + [I(85,46)] = {13,0x1C17}, + [I(86,46)] = {13,0x1C57}, + [I(87,46)] = {13,0x1C97}, + [I(88,46)] = {14,0x3F17}, + [I(89,46)] = {13,0x1CD7}, + [I(90,46)] = {14,0x3F57}, + [I(91,46)] = {19,0x7FED7}, + [I(92,46)] = {25,0x1FFFC17}, + [I(93,46)] = {19,0x7FF17}, + [I(94,46)] = {20,0xFFF17}, + [I(95,46)] = {12,0x897}, + [I(96,46)] = {21,0x1FFF57}, + [I(97,46)] = {11,0xD7}, + [I(98,46)] = {12,0x8D7}, + [I(99,46)] = {11,0x117}, + [I(100,46)] = {12,0x917}, + [I(101,46)] = {11,0x157}, + [I(102,46)] = {12,0x957}, + [I(103,46)] = {12,0x997}, + [I(104,46)] = {12,0x9D7}, + [I(105,46)] = {11,0x197}, + [I(106,46)] = {13,0x1D17}, + [I(107,46)] = {13,0x1D57}, + [I(108,46)] = {12,0xA17}, + [I(109,46)] = {12,0xA57}, + [I(110,46)] = {12,0xA97}, + [I(111,46)] = {11,0x1D7}, + [I(112,46)] = {12,0xAD7}, + [I(113,46)] = {13,0x1D97}, + [I(114,46)] = {12,0xB17}, + [I(115,46)] = {11,0x217}, + [I(116,46)] = {11,0x257}, + [I(117,46)] = {12,0xB57}, + [I(118,46)] = {13,0x1DD7}, + [I(119,46)] = {13,0x1E17}, + [I(120,46)] = {13,0x1E57}, + [I(121,46)] = {13,0x1E97}, + [I(122,46)] = {13,0x1ED7}, + [I(123,46)] = {21,0x1FFF97}, + [I(124,46)] = {17,0x1FF17}, + [I(125,46)] = {20,0xFFF57}, + [I(126,46)] = {19,0x7FF57}, + [I(127,46)] = {64,0}, + [I(128,46)] = {26,0x3FFF997}, + [I(129,46)] = {28,0xFFFF497}, + [I(130,46)] = {26,0x3FFF9D7}, + [I(131,46)] = {26,0x3FFFA17}, + [I(132,46)] = {28,0xFFFF4D7}, + [I(133,46)] = {28,0xFFFF517}, + [I(134,46)] = {28,0xFFFF557}, + [I(135,46)] = {29,0x1FFFF657}, + [I(136,46)] = {28,0xFFFF597}, + [I(137,46)] = {29,0x1FFFF697}, + [I(138,46)] = {29,0x1FFFF6D7}, + [I(139,46)] = {29,0x1FFFF717}, + [I(140,46)] = {29,0x1FFFF757}, + [I(141,46)] = {29,0x1FFFF797}, + [I(142,46)] = {30,0x3FFFFAD7}, + [I(143,46)] = {29,0x1FFFF7D7}, + [I(144,46)] = {30,0x3FFFFB17}, + [I(145,46)] = {30,0x3FFFFB57}, + [I(146,46)] = {28,0xFFFF5D7}, + [I(147,46)] = {29,0x1FFFF817}, + [I(148,46)] = {30,0x3FFFFB97}, + [I(149,46)] = {29,0x1FFFF857}, + [I(150,46)] = {29,0x1FFFF897}, + [I(151,46)] = {29,0x1FFFF8D7}, + [I(152,46)] = {29,0x1FFFF917}, + [I(153,46)] = {27,0x7FFF717}, + [I(154,46)] = {28,0xFFFF617}, + [I(155,46)] = {29,0x1FFFF957}, + [I(156,46)] = {28,0xFFFF657}, + [I(157,46)] = {29,0x1FFFF997}, + [I(158,46)] = {29,0x1FFFF9D7}, + [I(159,46)] = {30,0x3FFFFBD7}, + [I(160,46)] = {28,0xFFFF697}, + [I(161,46)] = {27,0x7FFF757}, + [I(162,46)] = {26,0x3FFFA57}, + [I(163,46)] = {28,0xFFFF6D7}, + [I(164,46)] = {28,0xFFFF717}, + [I(165,46)] = {29,0x1FFFFA17}, + [I(166,46)] = {29,0x1FFFFA57}, + [I(167,46)] = {27,0x7FFF797}, + [I(168,46)] = {29,0x1FFFFA97}, + [I(169,46)] = {28,0xFFFF757}, + [I(170,46)] = {28,0xFFFF797}, + [I(171,46)] = {30,0x3FFFFC17}, + [I(172,46)] = {27,0x7FFF7D7}, + [I(173,46)] = {28,0xFFFF7D7}, + [I(174,46)] = {29,0x1FFFFAD7}, + [I(175,46)] = {29,0x1FFFFB17}, + [I(176,46)] = {27,0x7FFF817}, + [I(177,46)] = {27,0x7FFF857}, + [I(178,46)] = {28,0xFFFF817}, + [I(179,46)] = {27,0x7FFF897}, + [I(180,46)] = {29,0x1FFFFB57}, + [I(181,46)] = {28,0xFFFF857}, + [I(182,46)] = {29,0x1FFFFB97}, + [I(183,46)] = {29,0x1FFFFBD7}, + [I(184,46)] = {26,0x3FFFA97}, + [I(185,46)] = {28,0xFFFF897}, + [I(186,46)] = {28,0xFFFF8D7}, + [I(187,46)] = {28,0xFFFF917}, + [I(188,46)] = {29,0x1FFFFC17}, + [I(189,46)] = {28,0xFFFF957}, + [I(190,46)] = {28,0xFFFF997}, + [I(191,46)] = {29,0x1FFFFC57}, + [I(192,46)] = {X32,0xFFFFF817}, + [I(193,46)] = {X32,0xFFFFF857}, + [I(194,46)] = {26,0x3FFFAD7}, + [I(195,46)] = {25,0x1FFFC57}, + [I(196,46)] = {28,0xFFFF9D7}, + [I(197,46)] = {29,0x1FFFFC97}, + [I(198,46)] = {28,0xFFFFA17}, + [I(199,46)] = {31,0x7FFFFB17}, + [I(200,46)] = {X32,0xFFFFF897}, + [I(201,46)] = {X32,0xFFFFF8D7}, + [I(202,46)] = {X32,0xFFFFF917}, + [I(203,46)] = {64,0}, + [I(204,46)] = {64,0}, + [I(205,46)] = {X32,0xFFFFF957}, + [I(206,46)] = {30,0x3FFFFC57}, + [I(207,46)] = {31,0x7FFFFB57}, + [I(208,46)] = {25,0x1FFFC97}, + [I(209,46)] = {27,0x7FFF8D7}, + [I(210,46)] = {X32,0xFFFFF997}, + [I(211,46)] = {64,0}, + [I(212,46)] = {64,0}, + [I(213,46)] = {X32,0xFFFFF9D7}, + [I(214,46)] = {64,0}, + [I(215,46)] = {30,0x3FFFFC97}, + [I(216,46)] = {27,0x7FFF917}, + [I(217,46)] = {27,0x7FFF957}, + [I(218,46)] = {X32,0xFFFFFA17}, + [I(219,46)] = {X32,0xFFFFFA57}, + [I(220,46)] = {64,0}, + [I(221,46)] = {64,0}, + [I(222,46)] = {64,0}, + [I(223,46)] = {64,0}, + [I(224,46)] = {26,0x3FFFB17}, + [I(225,46)] = {30,0x3FFFFCD7}, + [I(226,46)] = {26,0x3FFFB57}, + [I(227,46)] = {27,0x7FFF997}, + [I(228,46)] = {28,0xFFFFA57}, + [I(229,46)] = {27,0x7FFF9D7}, + [I(230,46)] = {27,0x7FFFA17}, + [I(231,46)] = {29,0x1FFFFCD7}, + [I(232,46)] = {28,0xFFFFA97}, + [I(233,46)] = {28,0xFFFFAD7}, + [I(234,46)] = {31,0x7FFFFB97}, + [I(235,46)] = {31,0x7FFFFBD7}, + [I(236,46)] = {30,0x3FFFFD17}, + [I(237,46)] = {30,0x3FFFFD57}, + [I(238,46)] = {X32,0xFFFFFA97}, + [I(239,46)] = {29,0x1FFFFD17}, + [I(240,46)] = {X32,0xFFFFFAD7}, + [I(241,46)] = {64,0}, + [I(242,46)] = {X32,0xFFFFFB17}, + [I(243,46)] = {X32,0xFFFFFB57}, + [I(244,46)] = {64,0}, + [I(245,46)] = {64,0}, + [I(246,46)] = {64,0}, + [I(247,46)] = {64,0}, + [I(248,46)] = {64,0}, + [I(249,46)] = {64,0}, + [I(250,46)] = {64,0}, + [I(251,46)] = {64,0}, + [I(252,46)] = {64,0}, + [I(253,46)] = {64,0}, + [I(254,46)] = {64,0}, + [I(255,46)] = {X32,0xFFFFFB97}, + [I(0,47)] = {19,0x7FE18}, + [I(1,47)] = {29,0x1FFFF618}, + [I(2,47)] = {64,0}, + [I(3,47)] = {64,0}, + [I(4,47)] = {64,0}, + [I(5,47)] = {64,0}, + [I(6,47)] = {64,0}, + [I(7,47)] = {64,0}, + [I(8,47)] = {64,0}, + [I(9,47)] = {30,0x3FFFFA98}, + [I(10,47)] = {64,0}, + [I(11,47)] = {64,0}, + [I(12,47)] = {64,0}, + [I(13,47)] = {64,0}, + [I(14,47)] = {64,0}, + [I(15,47)] = {64,0}, + [I(16,47)] = {64,0}, + [I(17,47)] = {64,0}, + [I(18,47)] = {64,0}, + [I(19,47)] = {64,0}, + [I(20,47)] = {64,0}, + [I(21,47)] = {64,0}, + [I(22,47)] = {64,0}, + [I(23,47)] = {64,0}, + [I(24,47)] = {64,0}, + [I(25,47)] = {64,0}, + [I(26,47)] = {64,0}, + [I(27,47)] = {64,0}, + [I(28,47)] = {64,0}, + [I(29,47)] = {64,0}, + [I(30,47)] = {64,0}, + [I(31,47)] = {64,0}, + [I(32,47)] = {12,0x518}, + [I(33,47)] = {16,0xFE18}, + [I(34,47)] = {16,0xFE58}, + [I(35,47)] = {18,0x3FE98}, + [I(36,47)] = {19,0x7FE58}, + [I(37,47)] = {12,0x558}, + [I(38,47)] = {14,0x3E18}, + [I(39,47)] = {17,0x1FE98}, + [I(40,47)] = {16,0xFE98}, + [I(41,47)] = {16,0xFED8}, + [I(42,47)] = {14,0x3E58}, + [I(43,47)] = {17,0x1FED8}, + [I(44,47)] = {14,0x3E98}, + [I(45,47)] = {12,0x598}, + [I(46,47)] = {12,0x5D8}, + [I(47,47)] = {12,0x618}, + [I(48,47)] = {11,0x18}, + [I(49,47)] = {11,0x58}, + [I(50,47)] = {11,0x98}, + [I(51,47)] = {12,0x658}, + [I(52,47)] = {12,0x698}, + [I(53,47)] = {12,0x6D8}, + [I(54,47)] = {12,0x718}, + [I(55,47)] = {12,0x758}, + [I(56,47)] = {12,0x798}, + [I(57,47)] = {12,0x7D8}, + [I(58,47)] = {13,0x1718}, + [I(59,47)] = {14,0x3ED8}, + [I(60,47)] = {21,0x1FFF18}, + [I(61,47)] = {12,0x818}, + [I(62,47)] = {18,0x3FED8}, + [I(63,47)] = {16,0xFF18}, + [I(64,47)] = {19,0x7FE98}, + [I(65,47)] = {12,0x858}, + [I(66,47)] = {13,0x1758}, + [I(67,47)] = {13,0x1798}, + [I(68,47)] = {13,0x17D8}, + [I(69,47)] = {13,0x1818}, + [I(70,47)] = {13,0x1858}, + [I(71,47)] = {13,0x1898}, + [I(72,47)] = {13,0x18D8}, + [I(73,47)] = {13,0x1918}, + [I(74,47)] = {13,0x1958}, + [I(75,47)] = {13,0x1998}, + [I(76,47)] = {13,0x19D8}, + [I(77,47)] = {13,0x1A18}, + [I(78,47)] = {13,0x1A58}, + [I(79,47)] = {13,0x1A98}, + [I(80,47)] = {13,0x1AD8}, + [I(81,47)] = {13,0x1B18}, + [I(82,47)] = {13,0x1B58}, + [I(83,47)] = {13,0x1B98}, + [I(84,47)] = {13,0x1BD8}, + [I(85,47)] = {13,0x1C18}, + [I(86,47)] = {13,0x1C58}, + [I(87,47)] = {13,0x1C98}, + [I(88,47)] = {14,0x3F18}, + [I(89,47)] = {13,0x1CD8}, + [I(90,47)] = {14,0x3F58}, + [I(91,47)] = {19,0x7FED8}, + [I(92,47)] = {25,0x1FFFC18}, + [I(93,47)] = {19,0x7FF18}, + [I(94,47)] = {20,0xFFF18}, + [I(95,47)] = {12,0x898}, + [I(96,47)] = {21,0x1FFF58}, + [I(97,47)] = {11,0xD8}, + [I(98,47)] = {12,0x8D8}, + [I(99,47)] = {11,0x118}, + [I(100,47)] = {12,0x918}, + [I(101,47)] = {11,0x158}, + [I(102,47)] = {12,0x958}, + [I(103,47)] = {12,0x998}, + [I(104,47)] = {12,0x9D8}, + [I(105,47)] = {11,0x198}, + [I(106,47)] = {13,0x1D18}, + [I(107,47)] = {13,0x1D58}, + [I(108,47)] = {12,0xA18}, + [I(109,47)] = {12,0xA58}, + [I(110,47)] = {12,0xA98}, + [I(111,47)] = {11,0x1D8}, + [I(112,47)] = {12,0xAD8}, + [I(113,47)] = {13,0x1D98}, + [I(114,47)] = {12,0xB18}, + [I(115,47)] = {11,0x218}, + [I(116,47)] = {11,0x258}, + [I(117,47)] = {12,0xB58}, + [I(118,47)] = {13,0x1DD8}, + [I(119,47)] = {13,0x1E18}, + [I(120,47)] = {13,0x1E58}, + [I(121,47)] = {13,0x1E98}, + [I(122,47)] = {13,0x1ED8}, + [I(123,47)] = {21,0x1FFF98}, + [I(124,47)] = {17,0x1FF18}, + [I(125,47)] = {20,0xFFF58}, + [I(126,47)] = {19,0x7FF58}, + [I(127,47)] = {64,0}, + [I(128,47)] = {26,0x3FFF998}, + [I(129,47)] = {28,0xFFFF498}, + [I(130,47)] = {26,0x3FFF9D8}, + [I(131,47)] = {26,0x3FFFA18}, + [I(132,47)] = {28,0xFFFF4D8}, + [I(133,47)] = {28,0xFFFF518}, + [I(134,47)] = {28,0xFFFF558}, + [I(135,47)] = {29,0x1FFFF658}, + [I(136,47)] = {28,0xFFFF598}, + [I(137,47)] = {29,0x1FFFF698}, + [I(138,47)] = {29,0x1FFFF6D8}, + [I(139,47)] = {29,0x1FFFF718}, + [I(140,47)] = {29,0x1FFFF758}, + [I(141,47)] = {29,0x1FFFF798}, + [I(142,47)] = {30,0x3FFFFAD8}, + [I(143,47)] = {29,0x1FFFF7D8}, + [I(144,47)] = {30,0x3FFFFB18}, + [I(145,47)] = {30,0x3FFFFB58}, + [I(146,47)] = {28,0xFFFF5D8}, + [I(147,47)] = {29,0x1FFFF818}, + [I(148,47)] = {30,0x3FFFFB98}, + [I(149,47)] = {29,0x1FFFF858}, + [I(150,47)] = {29,0x1FFFF898}, + [I(151,47)] = {29,0x1FFFF8D8}, + [I(152,47)] = {29,0x1FFFF918}, + [I(153,47)] = {27,0x7FFF718}, + [I(154,47)] = {28,0xFFFF618}, + [I(155,47)] = {29,0x1FFFF958}, + [I(156,47)] = {28,0xFFFF658}, + [I(157,47)] = {29,0x1FFFF998}, + [I(158,47)] = {29,0x1FFFF9D8}, + [I(159,47)] = {30,0x3FFFFBD8}, + [I(160,47)] = {28,0xFFFF698}, + [I(161,47)] = {27,0x7FFF758}, + [I(162,47)] = {26,0x3FFFA58}, + [I(163,47)] = {28,0xFFFF6D8}, + [I(164,47)] = {28,0xFFFF718}, + [I(165,47)] = {29,0x1FFFFA18}, + [I(166,47)] = {29,0x1FFFFA58}, + [I(167,47)] = {27,0x7FFF798}, + [I(168,47)] = {29,0x1FFFFA98}, + [I(169,47)] = {28,0xFFFF758}, + [I(170,47)] = {28,0xFFFF798}, + [I(171,47)] = {30,0x3FFFFC18}, + [I(172,47)] = {27,0x7FFF7D8}, + [I(173,47)] = {28,0xFFFF7D8}, + [I(174,47)] = {29,0x1FFFFAD8}, + [I(175,47)] = {29,0x1FFFFB18}, + [I(176,47)] = {27,0x7FFF818}, + [I(177,47)] = {27,0x7FFF858}, + [I(178,47)] = {28,0xFFFF818}, + [I(179,47)] = {27,0x7FFF898}, + [I(180,47)] = {29,0x1FFFFB58}, + [I(181,47)] = {28,0xFFFF858}, + [I(182,47)] = {29,0x1FFFFB98}, + [I(183,47)] = {29,0x1FFFFBD8}, + [I(184,47)] = {26,0x3FFFA98}, + [I(185,47)] = {28,0xFFFF898}, + [I(186,47)] = {28,0xFFFF8D8}, + [I(187,47)] = {28,0xFFFF918}, + [I(188,47)] = {29,0x1FFFFC18}, + [I(189,47)] = {28,0xFFFF958}, + [I(190,47)] = {28,0xFFFF998}, + [I(191,47)] = {29,0x1FFFFC58}, + [I(192,47)] = {X32,0xFFFFF818}, + [I(193,47)] = {X32,0xFFFFF858}, + [I(194,47)] = {26,0x3FFFAD8}, + [I(195,47)] = {25,0x1FFFC58}, + [I(196,47)] = {28,0xFFFF9D8}, + [I(197,47)] = {29,0x1FFFFC98}, + [I(198,47)] = {28,0xFFFFA18}, + [I(199,47)] = {31,0x7FFFFB18}, + [I(200,47)] = {X32,0xFFFFF898}, + [I(201,47)] = {X32,0xFFFFF8D8}, + [I(202,47)] = {X32,0xFFFFF918}, + [I(203,47)] = {64,0}, + [I(204,47)] = {64,0}, + [I(205,47)] = {X32,0xFFFFF958}, + [I(206,47)] = {30,0x3FFFFC58}, + [I(207,47)] = {31,0x7FFFFB58}, + [I(208,47)] = {25,0x1FFFC98}, + [I(209,47)] = {27,0x7FFF8D8}, + [I(210,47)] = {X32,0xFFFFF998}, + [I(211,47)] = {64,0}, + [I(212,47)] = {64,0}, + [I(213,47)] = {X32,0xFFFFF9D8}, + [I(214,47)] = {64,0}, + [I(215,47)] = {30,0x3FFFFC98}, + [I(216,47)] = {27,0x7FFF918}, + [I(217,47)] = {27,0x7FFF958}, + [I(218,47)] = {X32,0xFFFFFA18}, + [I(219,47)] = {X32,0xFFFFFA58}, + [I(220,47)] = {64,0}, + [I(221,47)] = {64,0}, + [I(222,47)] = {64,0}, + [I(223,47)] = {64,0}, + [I(224,47)] = {26,0x3FFFB18}, + [I(225,47)] = {30,0x3FFFFCD8}, + [I(226,47)] = {26,0x3FFFB58}, + [I(227,47)] = {27,0x7FFF998}, + [I(228,47)] = {28,0xFFFFA58}, + [I(229,47)] = {27,0x7FFF9D8}, + [I(230,47)] = {27,0x7FFFA18}, + [I(231,47)] = {29,0x1FFFFCD8}, + [I(232,47)] = {28,0xFFFFA98}, + [I(233,47)] = {28,0xFFFFAD8}, + [I(234,47)] = {31,0x7FFFFB98}, + [I(235,47)] = {31,0x7FFFFBD8}, + [I(236,47)] = {30,0x3FFFFD18}, + [I(237,47)] = {30,0x3FFFFD58}, + [I(238,47)] = {X32,0xFFFFFA98}, + [I(239,47)] = {29,0x1FFFFD18}, + [I(240,47)] = {X32,0xFFFFFAD8}, + [I(241,47)] = {64,0}, + [I(242,47)] = {X32,0xFFFFFB18}, + [I(243,47)] = {X32,0xFFFFFB58}, + [I(244,47)] = {64,0}, + [I(245,47)] = {64,0}, + [I(246,47)] = {64,0}, + [I(247,47)] = {64,0}, + [I(248,47)] = {64,0}, + [I(249,47)] = {64,0}, + [I(250,47)] = {64,0}, + [I(251,47)] = {64,0}, + [I(252,47)] = {64,0}, + [I(253,47)] = {64,0}, + [I(254,47)] = {64,0}, + [I(255,47)] = {X32,0xFFFFFB98}, + [I(0,48)] = {18,0x3FF00}, + [I(1,48)] = {28,0xFFFFB00}, + [I(2,48)] = {64,0}, + [I(3,48)] = {64,0}, + [I(4,48)] = {64,0}, + [I(5,48)] = {64,0}, + [I(6,48)] = {64,0}, + [I(7,48)] = {64,0}, + [I(8,48)] = {64,0}, + [I(9,48)] = {29,0x1FFFFD40}, + [I(10,48)] = {64,0}, + [I(11,48)] = {64,0}, + [I(12,48)] = {64,0}, + [I(13,48)] = {64,0}, + [I(14,48)] = {64,0}, + [I(15,48)] = {64,0}, + [I(16,48)] = {64,0}, + [I(17,48)] = {64,0}, + [I(18,48)] = {64,0}, + [I(19,48)] = {64,0}, + [I(20,48)] = {64,0}, + [I(21,48)] = {64,0}, + [I(22,48)] = {64,0}, + [I(23,48)] = {64,0}, + [I(24,48)] = {64,0}, + [I(25,48)] = {64,0}, + [I(26,48)] = {64,0}, + [I(27,48)] = {64,0}, + [I(28,48)] = {64,0}, + [I(29,48)] = {64,0}, + [I(30,48)] = {64,0}, + [I(31,48)] = {64,0}, + [I(32,48)] = {11,0x280}, + [I(33,48)] = {15,0x7F00}, + [I(34,48)] = {15,0x7F20}, + [I(35,48)] = {17,0x1FF40}, + [I(36,48)] = {18,0x3FF20}, + [I(37,48)] = {11,0x2A0}, + [I(38,48)] = {13,0x1F00}, + [I(39,48)] = {16,0xFF40}, + [I(40,48)] = {15,0x7F40}, + [I(41,48)] = {15,0x7F60}, + [I(42,48)] = {13,0x1F20}, + [I(43,48)] = {16,0xFF60}, + [I(44,48)] = {13,0x1F40}, + [I(45,48)] = {11,0x2C0}, + [I(46,48)] = {11,0x2E0}, + [I(47,48)] = {11,0x300}, + [I(48,48)] = {10,0x0}, + [I(49,48)] = {10,0x20}, + [I(50,48)] = {10,0x40}, + [I(51,48)] = {11,0x320}, + [I(52,48)] = {11,0x340}, + [I(53,48)] = {11,0x360}, + [I(54,48)] = {11,0x380}, + [I(55,48)] = {11,0x3A0}, + [I(56,48)] = {11,0x3C0}, + [I(57,48)] = {11,0x3E0}, + [I(58,48)] = {12,0xB80}, + [I(59,48)] = {13,0x1F60}, + [I(60,48)] = {20,0xFFF80}, + [I(61,48)] = {11,0x400}, + [I(62,48)] = {17,0x1FF60}, + [I(63,48)] = {15,0x7F80}, + [I(64,48)] = {18,0x3FF40}, + [I(65,48)] = {11,0x420}, + [I(66,48)] = {12,0xBA0}, + [I(67,48)] = {12,0xBC0}, + [I(68,48)] = {12,0xBE0}, + [I(69,48)] = {12,0xC00}, + [I(70,48)] = {12,0xC20}, + [I(71,48)] = {12,0xC40}, + [I(72,48)] = {12,0xC60}, + [I(73,48)] = {12,0xC80}, + [I(74,48)] = {12,0xCA0}, + [I(75,48)] = {12,0xCC0}, + [I(76,48)] = {12,0xCE0}, + [I(77,48)] = {12,0xD00}, + [I(78,48)] = {12,0xD20}, + [I(79,48)] = {12,0xD40}, + [I(80,48)] = {12,0xD60}, + [I(81,48)] = {12,0xD80}, + [I(82,48)] = {12,0xDA0}, + [I(83,48)] = {12,0xDC0}, + [I(84,48)] = {12,0xDE0}, + [I(85,48)] = {12,0xE00}, + [I(86,48)] = {12,0xE20}, + [I(87,48)] = {12,0xE40}, + [I(88,48)] = {13,0x1F80}, + [I(89,48)] = {12,0xE60}, + [I(90,48)] = {13,0x1FA0}, + [I(91,48)] = {18,0x3FF60}, + [I(92,48)] = {24,0xFFFE00}, + [I(93,48)] = {18,0x3FF80}, + [I(94,48)] = {19,0x7FF80}, + [I(95,48)] = {11,0x440}, + [I(96,48)] = {20,0xFFFA0}, + [I(97,48)] = {10,0x60}, + [I(98,48)] = {11,0x460}, + [I(99,48)] = {10,0x80}, + [I(100,48)] = {11,0x480}, + [I(101,48)] = {10,0xA0}, + [I(102,48)] = {11,0x4A0}, + [I(103,48)] = {11,0x4C0}, + [I(104,48)] = {11,0x4E0}, + [I(105,48)] = {10,0xC0}, + [I(106,48)] = {12,0xE80}, + [I(107,48)] = {12,0xEA0}, + [I(108,48)] = {11,0x500}, + [I(109,48)] = {11,0x520}, + [I(110,48)] = {11,0x540}, + [I(111,48)] = {10,0xE0}, + [I(112,48)] = {11,0x560}, + [I(113,48)] = {12,0xEC0}, + [I(114,48)] = {11,0x580}, + [I(115,48)] = {10,0x100}, + [I(116,48)] = {10,0x120}, + [I(117,48)] = {11,0x5A0}, + [I(118,48)] = {12,0xEE0}, + [I(119,48)] = {12,0xF00}, + [I(120,48)] = {12,0xF20}, + [I(121,48)] = {12,0xF40}, + [I(122,48)] = {12,0xF60}, + [I(123,48)] = {20,0xFFFC0}, + [I(124,48)] = {16,0xFF80}, + [I(125,48)] = {19,0x7FFA0}, + [I(126,48)] = {18,0x3FFA0}, + [I(127,48)] = {64,0}, + [I(128,48)] = {25,0x1FFFCC0}, + [I(129,48)] = {27,0x7FFFA40}, + [I(130,48)] = {25,0x1FFFCE0}, + [I(131,48)] = {25,0x1FFFD00}, + [I(132,48)] = {27,0x7FFFA60}, + [I(133,48)] = {27,0x7FFFA80}, + [I(134,48)] = {27,0x7FFFAA0}, + [I(135,48)] = {28,0xFFFFB20}, + [I(136,48)] = {27,0x7FFFAC0}, + [I(137,48)] = {28,0xFFFFB40}, + [I(138,48)] = {28,0xFFFFB60}, + [I(139,48)] = {28,0xFFFFB80}, + [I(140,48)] = {28,0xFFFFBA0}, + [I(141,48)] = {28,0xFFFFBC0}, + [I(142,48)] = {29,0x1FFFFD60}, + [I(143,48)] = {28,0xFFFFBE0}, + [I(144,48)] = {29,0x1FFFFD80}, + [I(145,48)] = {29,0x1FFFFDA0}, + [I(146,48)] = {27,0x7FFFAE0}, + [I(147,48)] = {28,0xFFFFC00}, + [I(148,48)] = {29,0x1FFFFDC0}, + [I(149,48)] = {28,0xFFFFC20}, + [I(150,48)] = {28,0xFFFFC40}, + [I(151,48)] = {28,0xFFFFC60}, + [I(152,48)] = {28,0xFFFFC80}, + [I(153,48)] = {26,0x3FFFB80}, + [I(154,48)] = {27,0x7FFFB00}, + [I(155,48)] = {28,0xFFFFCA0}, + [I(156,48)] = {27,0x7FFFB20}, + [I(157,48)] = {28,0xFFFFCC0}, + [I(158,48)] = {28,0xFFFFCE0}, + [I(159,48)] = {29,0x1FFFFDE0}, + [I(160,48)] = {27,0x7FFFB40}, + [I(161,48)] = {26,0x3FFFBA0}, + [I(162,48)] = {25,0x1FFFD20}, + [I(163,48)] = {27,0x7FFFB60}, + [I(164,48)] = {27,0x7FFFB80}, + [I(165,48)] = {28,0xFFFFD00}, + [I(166,48)] = {28,0xFFFFD20}, + [I(167,48)] = {26,0x3FFFBC0}, + [I(168,48)] = {28,0xFFFFD40}, + [I(169,48)] = {27,0x7FFFBA0}, + [I(170,48)] = {27,0x7FFFBC0}, + [I(171,48)] = {29,0x1FFFFE00}, + [I(172,48)] = {26,0x3FFFBE0}, + [I(173,48)] = {27,0x7FFFBE0}, + [I(174,48)] = {28,0xFFFFD60}, + [I(175,48)] = {28,0xFFFFD80}, + [I(176,48)] = {26,0x3FFFC00}, + [I(177,48)] = {26,0x3FFFC20}, + [I(178,48)] = {27,0x7FFFC00}, + [I(179,48)] = {26,0x3FFFC40}, + [I(180,48)] = {28,0xFFFFDA0}, + [I(181,48)] = {27,0x7FFFC20}, + [I(182,48)] = {28,0xFFFFDC0}, + [I(183,48)] = {28,0xFFFFDE0}, + [I(184,48)] = {25,0x1FFFD40}, + [I(185,48)] = {27,0x7FFFC40}, + [I(186,48)] = {27,0x7FFFC60}, + [I(187,48)] = {27,0x7FFFC80}, + [I(188,48)] = {28,0xFFFFE00}, + [I(189,48)] = {27,0x7FFFCA0}, + [I(190,48)] = {27,0x7FFFCC0}, + [I(191,48)] = {28,0xFFFFE20}, + [I(192,48)] = {31,0x7FFFFC00}, + [I(193,48)] = {31,0x7FFFFC20}, + [I(194,48)] = {25,0x1FFFD60}, + [I(195,48)] = {24,0xFFFE20}, + [I(196,48)] = {27,0x7FFFCE0}, + [I(197,48)] = {28,0xFFFFE40}, + [I(198,48)] = {27,0x7FFFD00}, + [I(199,48)] = {30,0x3FFFFD80}, + [I(200,48)] = {31,0x7FFFFC40}, + [I(201,48)] = {31,0x7FFFFC60}, + [I(202,48)] = {31,0x7FFFFC80}, + [I(203,48)] = {X32,0xFFFFFBC0}, + [I(204,48)] = {X32,0xFFFFFBE0}, + [I(205,48)] = {31,0x7FFFFCA0}, + [I(206,48)] = {29,0x1FFFFE20}, + [I(207,48)] = {30,0x3FFFFDA0}, + [I(208,48)] = {24,0xFFFE40}, + [I(209,48)] = {26,0x3FFFC60}, + [I(210,48)] = {31,0x7FFFFCC0}, + [I(211,48)] = {X32,0xFFFFFC00}, + [I(212,48)] = {X32,0xFFFFFC20}, + [I(213,48)] = {31,0x7FFFFCE0}, + [I(214,48)] = {X32,0xFFFFFC40}, + [I(215,48)] = {29,0x1FFFFE40}, + [I(216,48)] = {26,0x3FFFC80}, + [I(217,48)] = {26,0x3FFFCA0}, + [I(218,48)] = {31,0x7FFFFD00}, + [I(219,48)] = {31,0x7FFFFD20}, + [I(220,48)] = {64,0}, + [I(221,48)] = {X32,0xFFFFFC60}, + [I(222,48)] = {X32,0xFFFFFC80}, + [I(223,48)] = {X32,0xFFFFFCA0}, + [I(224,48)] = {25,0x1FFFD80}, + [I(225,48)] = {29,0x1FFFFE60}, + [I(226,48)] = {25,0x1FFFDA0}, + [I(227,48)] = {26,0x3FFFCC0}, + [I(228,48)] = {27,0x7FFFD20}, + [I(229,48)] = {26,0x3FFFCE0}, + [I(230,48)] = {26,0x3FFFD00}, + [I(231,48)] = {28,0xFFFFE60}, + [I(232,48)] = {27,0x7FFFD40}, + [I(233,48)] = {27,0x7FFFD60}, + [I(234,48)] = {30,0x3FFFFDC0}, + [I(235,48)] = {30,0x3FFFFDE0}, + [I(236,48)] = {29,0x1FFFFE80}, + [I(237,48)] = {29,0x1FFFFEA0}, + [I(238,48)] = {31,0x7FFFFD40}, + [I(239,48)] = {28,0xFFFFE80}, + [I(240,48)] = {31,0x7FFFFD60}, + [I(241,48)] = {X32,0xFFFFFCC0}, + [I(242,48)] = {31,0x7FFFFD80}, + [I(243,48)] = {31,0x7FFFFDA0}, + [I(244,48)] = {X32,0xFFFFFCE0}, + [I(245,48)] = {X32,0xFFFFFD00}, + [I(246,48)] = {X32,0xFFFFFD20}, + [I(247,48)] = {X32,0xFFFFFD40}, + [I(248,48)] = {X32,0xFFFFFD60}, + [I(249,48)] = {64,0}, + [I(250,48)] = {X32,0xFFFFFD80}, + [I(251,48)] = {X32,0xFFFFFDA0}, + [I(252,48)] = {X32,0xFFFFFDC0}, + [I(253,48)] = {X32,0xFFFFFDE0}, + [I(254,48)] = {X32,0xFFFFFE00}, + [I(255,48)] = {31,0x7FFFFDC0}, + [I(0,49)] = {18,0x3FF01}, + [I(1,49)] = {28,0xFFFFB01}, + [I(2,49)] = {64,0}, + [I(3,49)] = {64,0}, + [I(4,49)] = {64,0}, + [I(5,49)] = {64,0}, + [I(6,49)] = {64,0}, + [I(7,49)] = {64,0}, + [I(8,49)] = {64,0}, + [I(9,49)] = {29,0x1FFFFD41}, + [I(10,49)] = {64,0}, + [I(11,49)] = {64,0}, + [I(12,49)] = {64,0}, + [I(13,49)] = {64,0}, + [I(14,49)] = {64,0}, + [I(15,49)] = {64,0}, + [I(16,49)] = {64,0}, + [I(17,49)] = {64,0}, + [I(18,49)] = {64,0}, + [I(19,49)] = {64,0}, + [I(20,49)] = {64,0}, + [I(21,49)] = {64,0}, + [I(22,49)] = {64,0}, + [I(23,49)] = {64,0}, + [I(24,49)] = {64,0}, + [I(25,49)] = {64,0}, + [I(26,49)] = {64,0}, + [I(27,49)] = {64,0}, + [I(28,49)] = {64,0}, + [I(29,49)] = {64,0}, + [I(30,49)] = {64,0}, + [I(31,49)] = {64,0}, + [I(32,49)] = {11,0x281}, + [I(33,49)] = {15,0x7F01}, + [I(34,49)] = {15,0x7F21}, + [I(35,49)] = {17,0x1FF41}, + [I(36,49)] = {18,0x3FF21}, + [I(37,49)] = {11,0x2A1}, + [I(38,49)] = {13,0x1F01}, + [I(39,49)] = {16,0xFF41}, + [I(40,49)] = {15,0x7F41}, + [I(41,49)] = {15,0x7F61}, + [I(42,49)] = {13,0x1F21}, + [I(43,49)] = {16,0xFF61}, + [I(44,49)] = {13,0x1F41}, + [I(45,49)] = {11,0x2C1}, + [I(46,49)] = {11,0x2E1}, + [I(47,49)] = {11,0x301}, + [I(48,49)] = {10,0x1}, + [I(49,49)] = {10,0x21}, + [I(50,49)] = {10,0x41}, + [I(51,49)] = {11,0x321}, + [I(52,49)] = {11,0x341}, + [I(53,49)] = {11,0x361}, + [I(54,49)] = {11,0x381}, + [I(55,49)] = {11,0x3A1}, + [I(56,49)] = {11,0x3C1}, + [I(57,49)] = {11,0x3E1}, + [I(58,49)] = {12,0xB81}, + [I(59,49)] = {13,0x1F61}, + [I(60,49)] = {20,0xFFF81}, + [I(61,49)] = {11,0x401}, + [I(62,49)] = {17,0x1FF61}, + [I(63,49)] = {15,0x7F81}, + [I(64,49)] = {18,0x3FF41}, + [I(65,49)] = {11,0x421}, + [I(66,49)] = {12,0xBA1}, + [I(67,49)] = {12,0xBC1}, + [I(68,49)] = {12,0xBE1}, + [I(69,49)] = {12,0xC01}, + [I(70,49)] = {12,0xC21}, + [I(71,49)] = {12,0xC41}, + [I(72,49)] = {12,0xC61}, + [I(73,49)] = {12,0xC81}, + [I(74,49)] = {12,0xCA1}, + [I(75,49)] = {12,0xCC1}, + [I(76,49)] = {12,0xCE1}, + [I(77,49)] = {12,0xD01}, + [I(78,49)] = {12,0xD21}, + [I(79,49)] = {12,0xD41}, + [I(80,49)] = {12,0xD61}, + [I(81,49)] = {12,0xD81}, + [I(82,49)] = {12,0xDA1}, + [I(83,49)] = {12,0xDC1}, + [I(84,49)] = {12,0xDE1}, + [I(85,49)] = {12,0xE01}, + [I(86,49)] = {12,0xE21}, + [I(87,49)] = {12,0xE41}, + [I(88,49)] = {13,0x1F81}, + [I(89,49)] = {12,0xE61}, + [I(90,49)] = {13,0x1FA1}, + [I(91,49)] = {18,0x3FF61}, + [I(92,49)] = {24,0xFFFE01}, + [I(93,49)] = {18,0x3FF81}, + [I(94,49)] = {19,0x7FF81}, + [I(95,49)] = {11,0x441}, + [I(96,49)] = {20,0xFFFA1}, + [I(97,49)] = {10,0x61}, + [I(98,49)] = {11,0x461}, + [I(99,49)] = {10,0x81}, + [I(100,49)] = {11,0x481}, + [I(101,49)] = {10,0xA1}, + [I(102,49)] = {11,0x4A1}, + [I(103,49)] = {11,0x4C1}, + [I(104,49)] = {11,0x4E1}, + [I(105,49)] = {10,0xC1}, + [I(106,49)] = {12,0xE81}, + [I(107,49)] = {12,0xEA1}, + [I(108,49)] = {11,0x501}, + [I(109,49)] = {11,0x521}, + [I(110,49)] = {11,0x541}, + [I(111,49)] = {10,0xE1}, + [I(112,49)] = {11,0x561}, + [I(113,49)] = {12,0xEC1}, + [I(114,49)] = {11,0x581}, + [I(115,49)] = {10,0x101}, + [I(116,49)] = {10,0x121}, + [I(117,49)] = {11,0x5A1}, + [I(118,49)] = {12,0xEE1}, + [I(119,49)] = {12,0xF01}, + [I(120,49)] = {12,0xF21}, + [I(121,49)] = {12,0xF41}, + [I(122,49)] = {12,0xF61}, + [I(123,49)] = {20,0xFFFC1}, + [I(124,49)] = {16,0xFF81}, + [I(125,49)] = {19,0x7FFA1}, + [I(126,49)] = {18,0x3FFA1}, + [I(127,49)] = {64,0}, + [I(128,49)] = {25,0x1FFFCC1}, + [I(129,49)] = {27,0x7FFFA41}, + [I(130,49)] = {25,0x1FFFCE1}, + [I(131,49)] = {25,0x1FFFD01}, + [I(132,49)] = {27,0x7FFFA61}, + [I(133,49)] = {27,0x7FFFA81}, + [I(134,49)] = {27,0x7FFFAA1}, + [I(135,49)] = {28,0xFFFFB21}, + [I(136,49)] = {27,0x7FFFAC1}, + [I(137,49)] = {28,0xFFFFB41}, + [I(138,49)] = {28,0xFFFFB61}, + [I(139,49)] = {28,0xFFFFB81}, + [I(140,49)] = {28,0xFFFFBA1}, + [I(141,49)] = {28,0xFFFFBC1}, + [I(142,49)] = {29,0x1FFFFD61}, + [I(143,49)] = {28,0xFFFFBE1}, + [I(144,49)] = {29,0x1FFFFD81}, + [I(145,49)] = {29,0x1FFFFDA1}, + [I(146,49)] = {27,0x7FFFAE1}, + [I(147,49)] = {28,0xFFFFC01}, + [I(148,49)] = {29,0x1FFFFDC1}, + [I(149,49)] = {28,0xFFFFC21}, + [I(150,49)] = {28,0xFFFFC41}, + [I(151,49)] = {28,0xFFFFC61}, + [I(152,49)] = {28,0xFFFFC81}, + [I(153,49)] = {26,0x3FFFB81}, + [I(154,49)] = {27,0x7FFFB01}, + [I(155,49)] = {28,0xFFFFCA1}, + [I(156,49)] = {27,0x7FFFB21}, + [I(157,49)] = {28,0xFFFFCC1}, + [I(158,49)] = {28,0xFFFFCE1}, + [I(159,49)] = {29,0x1FFFFDE1}, + [I(160,49)] = {27,0x7FFFB41}, + [I(161,49)] = {26,0x3FFFBA1}, + [I(162,49)] = {25,0x1FFFD21}, + [I(163,49)] = {27,0x7FFFB61}, + [I(164,49)] = {27,0x7FFFB81}, + [I(165,49)] = {28,0xFFFFD01}, + [I(166,49)] = {28,0xFFFFD21}, + [I(167,49)] = {26,0x3FFFBC1}, + [I(168,49)] = {28,0xFFFFD41}, + [I(169,49)] = {27,0x7FFFBA1}, + [I(170,49)] = {27,0x7FFFBC1}, + [I(171,49)] = {29,0x1FFFFE01}, + [I(172,49)] = {26,0x3FFFBE1}, + [I(173,49)] = {27,0x7FFFBE1}, + [I(174,49)] = {28,0xFFFFD61}, + [I(175,49)] = {28,0xFFFFD81}, + [I(176,49)] = {26,0x3FFFC01}, + [I(177,49)] = {26,0x3FFFC21}, + [I(178,49)] = {27,0x7FFFC01}, + [I(179,49)] = {26,0x3FFFC41}, + [I(180,49)] = {28,0xFFFFDA1}, + [I(181,49)] = {27,0x7FFFC21}, + [I(182,49)] = {28,0xFFFFDC1}, + [I(183,49)] = {28,0xFFFFDE1}, + [I(184,49)] = {25,0x1FFFD41}, + [I(185,49)] = {27,0x7FFFC41}, + [I(186,49)] = {27,0x7FFFC61}, + [I(187,49)] = {27,0x7FFFC81}, + [I(188,49)] = {28,0xFFFFE01}, + [I(189,49)] = {27,0x7FFFCA1}, + [I(190,49)] = {27,0x7FFFCC1}, + [I(191,49)] = {28,0xFFFFE21}, + [I(192,49)] = {31,0x7FFFFC01}, + [I(193,49)] = {31,0x7FFFFC21}, + [I(194,49)] = {25,0x1FFFD61}, + [I(195,49)] = {24,0xFFFE21}, + [I(196,49)] = {27,0x7FFFCE1}, + [I(197,49)] = {28,0xFFFFE41}, + [I(198,49)] = {27,0x7FFFD01}, + [I(199,49)] = {30,0x3FFFFD81}, + [I(200,49)] = {31,0x7FFFFC41}, + [I(201,49)] = {31,0x7FFFFC61}, + [I(202,49)] = {31,0x7FFFFC81}, + [I(203,49)] = {X32,0xFFFFFBC1}, + [I(204,49)] = {X32,0xFFFFFBE1}, + [I(205,49)] = {31,0x7FFFFCA1}, + [I(206,49)] = {29,0x1FFFFE21}, + [I(207,49)] = {30,0x3FFFFDA1}, + [I(208,49)] = {24,0xFFFE41}, + [I(209,49)] = {26,0x3FFFC61}, + [I(210,49)] = {31,0x7FFFFCC1}, + [I(211,49)] = {X32,0xFFFFFC01}, + [I(212,49)] = {X32,0xFFFFFC21}, + [I(213,49)] = {31,0x7FFFFCE1}, + [I(214,49)] = {X32,0xFFFFFC41}, + [I(215,49)] = {29,0x1FFFFE41}, + [I(216,49)] = {26,0x3FFFC81}, + [I(217,49)] = {26,0x3FFFCA1}, + [I(218,49)] = {31,0x7FFFFD01}, + [I(219,49)] = {31,0x7FFFFD21}, + [I(220,49)] = {64,0}, + [I(221,49)] = {X32,0xFFFFFC61}, + [I(222,49)] = {X32,0xFFFFFC81}, + [I(223,49)] = {X32,0xFFFFFCA1}, + [I(224,49)] = {25,0x1FFFD81}, + [I(225,49)] = {29,0x1FFFFE61}, + [I(226,49)] = {25,0x1FFFDA1}, + [I(227,49)] = {26,0x3FFFCC1}, + [I(228,49)] = {27,0x7FFFD21}, + [I(229,49)] = {26,0x3FFFCE1}, + [I(230,49)] = {26,0x3FFFD01}, + [I(231,49)] = {28,0xFFFFE61}, + [I(232,49)] = {27,0x7FFFD41}, + [I(233,49)] = {27,0x7FFFD61}, + [I(234,49)] = {30,0x3FFFFDC1}, + [I(235,49)] = {30,0x3FFFFDE1}, + [I(236,49)] = {29,0x1FFFFE81}, + [I(237,49)] = {29,0x1FFFFEA1}, + [I(238,49)] = {31,0x7FFFFD41}, + [I(239,49)] = {28,0xFFFFE81}, + [I(240,49)] = {31,0x7FFFFD61}, + [I(241,49)] = {X32,0xFFFFFCC1}, + [I(242,49)] = {31,0x7FFFFD81}, + [I(243,49)] = {31,0x7FFFFDA1}, + [I(244,49)] = {X32,0xFFFFFCE1}, + [I(245,49)] = {X32,0xFFFFFD01}, + [I(246,49)] = {X32,0xFFFFFD21}, + [I(247,49)] = {X32,0xFFFFFD41}, + [I(248,49)] = {X32,0xFFFFFD61}, + [I(249,49)] = {64,0}, + [I(250,49)] = {X32,0xFFFFFD81}, + [I(251,49)] = {X32,0xFFFFFDA1}, + [I(252,49)] = {X32,0xFFFFFDC1}, + [I(253,49)] = {X32,0xFFFFFDE1}, + [I(254,49)] = {X32,0xFFFFFE01}, + [I(255,49)] = {31,0x7FFFFDC1}, + [I(0,50)] = {18,0x3FF02}, + [I(1,50)] = {28,0xFFFFB02}, + [I(2,50)] = {64,0}, + [I(3,50)] = {64,0}, + [I(4,50)] = {64,0}, + [I(5,50)] = {64,0}, + [I(6,50)] = {64,0}, + [I(7,50)] = {64,0}, + [I(8,50)] = {64,0}, + [I(9,50)] = {29,0x1FFFFD42}, + [I(10,50)] = {64,0}, + [I(11,50)] = {64,0}, + [I(12,50)] = {64,0}, + [I(13,50)] = {64,0}, + [I(14,50)] = {64,0}, + [I(15,50)] = {64,0}, + [I(16,50)] = {64,0}, + [I(17,50)] = {64,0}, + [I(18,50)] = {64,0}, + [I(19,50)] = {64,0}, + [I(20,50)] = {64,0}, + [I(21,50)] = {64,0}, + [I(22,50)] = {64,0}, + [I(23,50)] = {64,0}, + [I(24,50)] = {64,0}, + [I(25,50)] = {64,0}, + [I(26,50)] = {64,0}, + [I(27,50)] = {64,0}, + [I(28,50)] = {64,0}, + [I(29,50)] = {64,0}, + [I(30,50)] = {64,0}, + [I(31,50)] = {64,0}, + [I(32,50)] = {11,0x282}, + [I(33,50)] = {15,0x7F02}, + [I(34,50)] = {15,0x7F22}, + [I(35,50)] = {17,0x1FF42}, + [I(36,50)] = {18,0x3FF22}, + [I(37,50)] = {11,0x2A2}, + [I(38,50)] = {13,0x1F02}, + [I(39,50)] = {16,0xFF42}, + [I(40,50)] = {15,0x7F42}, + [I(41,50)] = {15,0x7F62}, + [I(42,50)] = {13,0x1F22}, + [I(43,50)] = {16,0xFF62}, + [I(44,50)] = {13,0x1F42}, + [I(45,50)] = {11,0x2C2}, + [I(46,50)] = {11,0x2E2}, + [I(47,50)] = {11,0x302}, + [I(48,50)] = {10,0x2}, + [I(49,50)] = {10,0x22}, + [I(50,50)] = {10,0x42}, + [I(51,50)] = {11,0x322}, + [I(52,50)] = {11,0x342}, + [I(53,50)] = {11,0x362}, + [I(54,50)] = {11,0x382}, + [I(55,50)] = {11,0x3A2}, + [I(56,50)] = {11,0x3C2}, + [I(57,50)] = {11,0x3E2}, + [I(58,50)] = {12,0xB82}, + [I(59,50)] = {13,0x1F62}, + [I(60,50)] = {20,0xFFF82}, + [I(61,50)] = {11,0x402}, + [I(62,50)] = {17,0x1FF62}, + [I(63,50)] = {15,0x7F82}, + [I(64,50)] = {18,0x3FF42}, + [I(65,50)] = {11,0x422}, + [I(66,50)] = {12,0xBA2}, + [I(67,50)] = {12,0xBC2}, + [I(68,50)] = {12,0xBE2}, + [I(69,50)] = {12,0xC02}, + [I(70,50)] = {12,0xC22}, + [I(71,50)] = {12,0xC42}, + [I(72,50)] = {12,0xC62}, + [I(73,50)] = {12,0xC82}, + [I(74,50)] = {12,0xCA2}, + [I(75,50)] = {12,0xCC2}, + [I(76,50)] = {12,0xCE2}, + [I(77,50)] = {12,0xD02}, + [I(78,50)] = {12,0xD22}, + [I(79,50)] = {12,0xD42}, + [I(80,50)] = {12,0xD62}, + [I(81,50)] = {12,0xD82}, + [I(82,50)] = {12,0xDA2}, + [I(83,50)] = {12,0xDC2}, + [I(84,50)] = {12,0xDE2}, + [I(85,50)] = {12,0xE02}, + [I(86,50)] = {12,0xE22}, + [I(87,50)] = {12,0xE42}, + [I(88,50)] = {13,0x1F82}, + [I(89,50)] = {12,0xE62}, + [I(90,50)] = {13,0x1FA2}, + [I(91,50)] = {18,0x3FF62}, + [I(92,50)] = {24,0xFFFE02}, + [I(93,50)] = {18,0x3FF82}, + [I(94,50)] = {19,0x7FF82}, + [I(95,50)] = {11,0x442}, + [I(96,50)] = {20,0xFFFA2}, + [I(97,50)] = {10,0x62}, + [I(98,50)] = {11,0x462}, + [I(99,50)] = {10,0x82}, + [I(100,50)] = {11,0x482}, + [I(101,50)] = {10,0xA2}, + [I(102,50)] = {11,0x4A2}, + [I(103,50)] = {11,0x4C2}, + [I(104,50)] = {11,0x4E2}, + [I(105,50)] = {10,0xC2}, + [I(106,50)] = {12,0xE82}, + [I(107,50)] = {12,0xEA2}, + [I(108,50)] = {11,0x502}, + [I(109,50)] = {11,0x522}, + [I(110,50)] = {11,0x542}, + [I(111,50)] = {10,0xE2}, + [I(112,50)] = {11,0x562}, + [I(113,50)] = {12,0xEC2}, + [I(114,50)] = {11,0x582}, + [I(115,50)] = {10,0x102}, + [I(116,50)] = {10,0x122}, + [I(117,50)] = {11,0x5A2}, + [I(118,50)] = {12,0xEE2}, + [I(119,50)] = {12,0xF02}, + [I(120,50)] = {12,0xF22}, + [I(121,50)] = {12,0xF42}, + [I(122,50)] = {12,0xF62}, + [I(123,50)] = {20,0xFFFC2}, + [I(124,50)] = {16,0xFF82}, + [I(125,50)] = {19,0x7FFA2}, + [I(126,50)] = {18,0x3FFA2}, + [I(127,50)] = {64,0}, + [I(128,50)] = {25,0x1FFFCC2}, + [I(129,50)] = {27,0x7FFFA42}, + [I(130,50)] = {25,0x1FFFCE2}, + [I(131,50)] = {25,0x1FFFD02}, + [I(132,50)] = {27,0x7FFFA62}, + [I(133,50)] = {27,0x7FFFA82}, + [I(134,50)] = {27,0x7FFFAA2}, + [I(135,50)] = {28,0xFFFFB22}, + [I(136,50)] = {27,0x7FFFAC2}, + [I(137,50)] = {28,0xFFFFB42}, + [I(138,50)] = {28,0xFFFFB62}, + [I(139,50)] = {28,0xFFFFB82}, + [I(140,50)] = {28,0xFFFFBA2}, + [I(141,50)] = {28,0xFFFFBC2}, + [I(142,50)] = {29,0x1FFFFD62}, + [I(143,50)] = {28,0xFFFFBE2}, + [I(144,50)] = {29,0x1FFFFD82}, + [I(145,50)] = {29,0x1FFFFDA2}, + [I(146,50)] = {27,0x7FFFAE2}, + [I(147,50)] = {28,0xFFFFC02}, + [I(148,50)] = {29,0x1FFFFDC2}, + [I(149,50)] = {28,0xFFFFC22}, + [I(150,50)] = {28,0xFFFFC42}, + [I(151,50)] = {28,0xFFFFC62}, + [I(152,50)] = {28,0xFFFFC82}, + [I(153,50)] = {26,0x3FFFB82}, + [I(154,50)] = {27,0x7FFFB02}, + [I(155,50)] = {28,0xFFFFCA2}, + [I(156,50)] = {27,0x7FFFB22}, + [I(157,50)] = {28,0xFFFFCC2}, + [I(158,50)] = {28,0xFFFFCE2}, + [I(159,50)] = {29,0x1FFFFDE2}, + [I(160,50)] = {27,0x7FFFB42}, + [I(161,50)] = {26,0x3FFFBA2}, + [I(162,50)] = {25,0x1FFFD22}, + [I(163,50)] = {27,0x7FFFB62}, + [I(164,50)] = {27,0x7FFFB82}, + [I(165,50)] = {28,0xFFFFD02}, + [I(166,50)] = {28,0xFFFFD22}, + [I(167,50)] = {26,0x3FFFBC2}, + [I(168,50)] = {28,0xFFFFD42}, + [I(169,50)] = {27,0x7FFFBA2}, + [I(170,50)] = {27,0x7FFFBC2}, + [I(171,50)] = {29,0x1FFFFE02}, + [I(172,50)] = {26,0x3FFFBE2}, + [I(173,50)] = {27,0x7FFFBE2}, + [I(174,50)] = {28,0xFFFFD62}, + [I(175,50)] = {28,0xFFFFD82}, + [I(176,50)] = {26,0x3FFFC02}, + [I(177,50)] = {26,0x3FFFC22}, + [I(178,50)] = {27,0x7FFFC02}, + [I(179,50)] = {26,0x3FFFC42}, + [I(180,50)] = {28,0xFFFFDA2}, + [I(181,50)] = {27,0x7FFFC22}, + [I(182,50)] = {28,0xFFFFDC2}, + [I(183,50)] = {28,0xFFFFDE2}, + [I(184,50)] = {25,0x1FFFD42}, + [I(185,50)] = {27,0x7FFFC42}, + [I(186,50)] = {27,0x7FFFC62}, + [I(187,50)] = {27,0x7FFFC82}, + [I(188,50)] = {28,0xFFFFE02}, + [I(189,50)] = {27,0x7FFFCA2}, + [I(190,50)] = {27,0x7FFFCC2}, + [I(191,50)] = {28,0xFFFFE22}, + [I(192,50)] = {31,0x7FFFFC02}, + [I(193,50)] = {31,0x7FFFFC22}, + [I(194,50)] = {25,0x1FFFD62}, + [I(195,50)] = {24,0xFFFE22}, + [I(196,50)] = {27,0x7FFFCE2}, + [I(197,50)] = {28,0xFFFFE42}, + [I(198,50)] = {27,0x7FFFD02}, + [I(199,50)] = {30,0x3FFFFD82}, + [I(200,50)] = {31,0x7FFFFC42}, + [I(201,50)] = {31,0x7FFFFC62}, + [I(202,50)] = {31,0x7FFFFC82}, + [I(203,50)] = {X32,0xFFFFFBC2}, + [I(204,50)] = {X32,0xFFFFFBE2}, + [I(205,50)] = {31,0x7FFFFCA2}, + [I(206,50)] = {29,0x1FFFFE22}, + [I(207,50)] = {30,0x3FFFFDA2}, + [I(208,50)] = {24,0xFFFE42}, + [I(209,50)] = {26,0x3FFFC62}, + [I(210,50)] = {31,0x7FFFFCC2}, + [I(211,50)] = {X32,0xFFFFFC02}, + [I(212,50)] = {X32,0xFFFFFC22}, + [I(213,50)] = {31,0x7FFFFCE2}, + [I(214,50)] = {X32,0xFFFFFC42}, + [I(215,50)] = {29,0x1FFFFE42}, + [I(216,50)] = {26,0x3FFFC82}, + [I(217,50)] = {26,0x3FFFCA2}, + [I(218,50)] = {31,0x7FFFFD02}, + [I(219,50)] = {31,0x7FFFFD22}, + [I(220,50)] = {64,0}, + [I(221,50)] = {X32,0xFFFFFC62}, + [I(222,50)] = {X32,0xFFFFFC82}, + [I(223,50)] = {X32,0xFFFFFCA2}, + [I(224,50)] = {25,0x1FFFD82}, + [I(225,50)] = {29,0x1FFFFE62}, + [I(226,50)] = {25,0x1FFFDA2}, + [I(227,50)] = {26,0x3FFFCC2}, + [I(228,50)] = {27,0x7FFFD22}, + [I(229,50)] = {26,0x3FFFCE2}, + [I(230,50)] = {26,0x3FFFD02}, + [I(231,50)] = {28,0xFFFFE62}, + [I(232,50)] = {27,0x7FFFD42}, + [I(233,50)] = {27,0x7FFFD62}, + [I(234,50)] = {30,0x3FFFFDC2}, + [I(235,50)] = {30,0x3FFFFDE2}, + [I(236,50)] = {29,0x1FFFFE82}, + [I(237,50)] = {29,0x1FFFFEA2}, + [I(238,50)] = {31,0x7FFFFD42}, + [I(239,50)] = {28,0xFFFFE82}, + [I(240,50)] = {31,0x7FFFFD62}, + [I(241,50)] = {X32,0xFFFFFCC2}, + [I(242,50)] = {31,0x7FFFFD82}, + [I(243,50)] = {31,0x7FFFFDA2}, + [I(244,50)] = {X32,0xFFFFFCE2}, + [I(245,50)] = {X32,0xFFFFFD02}, + [I(246,50)] = {X32,0xFFFFFD22}, + [I(247,50)] = {X32,0xFFFFFD42}, + [I(248,50)] = {X32,0xFFFFFD62}, + [I(249,50)] = {64,0}, + [I(250,50)] = {X32,0xFFFFFD82}, + [I(251,50)] = {X32,0xFFFFFDA2}, + [I(252,50)] = {X32,0xFFFFFDC2}, + [I(253,50)] = {X32,0xFFFFFDE2}, + [I(254,50)] = {X32,0xFFFFFE02}, + [I(255,50)] = {31,0x7FFFFDC2}, + [I(0,51)] = {19,0x7FE19}, + [I(1,51)] = {29,0x1FFFF619}, + [I(2,51)] = {64,0}, + [I(3,51)] = {64,0}, + [I(4,51)] = {64,0}, + [I(5,51)] = {64,0}, + [I(6,51)] = {64,0}, + [I(7,51)] = {64,0}, + [I(8,51)] = {64,0}, + [I(9,51)] = {30,0x3FFFFA99}, + [I(10,51)] = {64,0}, + [I(11,51)] = {64,0}, + [I(12,51)] = {64,0}, + [I(13,51)] = {64,0}, + [I(14,51)] = {64,0}, + [I(15,51)] = {64,0}, + [I(16,51)] = {64,0}, + [I(17,51)] = {64,0}, + [I(18,51)] = {64,0}, + [I(19,51)] = {64,0}, + [I(20,51)] = {64,0}, + [I(21,51)] = {64,0}, + [I(22,51)] = {64,0}, + [I(23,51)] = {64,0}, + [I(24,51)] = {64,0}, + [I(25,51)] = {64,0}, + [I(26,51)] = {64,0}, + [I(27,51)] = {64,0}, + [I(28,51)] = {64,0}, + [I(29,51)] = {64,0}, + [I(30,51)] = {64,0}, + [I(31,51)] = {64,0}, + [I(32,51)] = {12,0x519}, + [I(33,51)] = {16,0xFE19}, + [I(34,51)] = {16,0xFE59}, + [I(35,51)] = {18,0x3FE99}, + [I(36,51)] = {19,0x7FE59}, + [I(37,51)] = {12,0x559}, + [I(38,51)] = {14,0x3E19}, + [I(39,51)] = {17,0x1FE99}, + [I(40,51)] = {16,0xFE99}, + [I(41,51)] = {16,0xFED9}, + [I(42,51)] = {14,0x3E59}, + [I(43,51)] = {17,0x1FED9}, + [I(44,51)] = {14,0x3E99}, + [I(45,51)] = {12,0x599}, + [I(46,51)] = {12,0x5D9}, + [I(47,51)] = {12,0x619}, + [I(48,51)] = {11,0x19}, + [I(49,51)] = {11,0x59}, + [I(50,51)] = {11,0x99}, + [I(51,51)] = {12,0x659}, + [I(52,51)] = {12,0x699}, + [I(53,51)] = {12,0x6D9}, + [I(54,51)] = {12,0x719}, + [I(55,51)] = {12,0x759}, + [I(56,51)] = {12,0x799}, + [I(57,51)] = {12,0x7D9}, + [I(58,51)] = {13,0x1719}, + [I(59,51)] = {14,0x3ED9}, + [I(60,51)] = {21,0x1FFF19}, + [I(61,51)] = {12,0x819}, + [I(62,51)] = {18,0x3FED9}, + [I(63,51)] = {16,0xFF19}, + [I(64,51)] = {19,0x7FE99}, + [I(65,51)] = {12,0x859}, + [I(66,51)] = {13,0x1759}, + [I(67,51)] = {13,0x1799}, + [I(68,51)] = {13,0x17D9}, + [I(69,51)] = {13,0x1819}, + [I(70,51)] = {13,0x1859}, + [I(71,51)] = {13,0x1899}, + [I(72,51)] = {13,0x18D9}, + [I(73,51)] = {13,0x1919}, + [I(74,51)] = {13,0x1959}, + [I(75,51)] = {13,0x1999}, + [I(76,51)] = {13,0x19D9}, + [I(77,51)] = {13,0x1A19}, + [I(78,51)] = {13,0x1A59}, + [I(79,51)] = {13,0x1A99}, + [I(80,51)] = {13,0x1AD9}, + [I(81,51)] = {13,0x1B19}, + [I(82,51)] = {13,0x1B59}, + [I(83,51)] = {13,0x1B99}, + [I(84,51)] = {13,0x1BD9}, + [I(85,51)] = {13,0x1C19}, + [I(86,51)] = {13,0x1C59}, + [I(87,51)] = {13,0x1C99}, + [I(88,51)] = {14,0x3F19}, + [I(89,51)] = {13,0x1CD9}, + [I(90,51)] = {14,0x3F59}, + [I(91,51)] = {19,0x7FED9}, + [I(92,51)] = {25,0x1FFFC19}, + [I(93,51)] = {19,0x7FF19}, + [I(94,51)] = {20,0xFFF19}, + [I(95,51)] = {12,0x899}, + [I(96,51)] = {21,0x1FFF59}, + [I(97,51)] = {11,0xD9}, + [I(98,51)] = {12,0x8D9}, + [I(99,51)] = {11,0x119}, + [I(100,51)] = {12,0x919}, + [I(101,51)] = {11,0x159}, + [I(102,51)] = {12,0x959}, + [I(103,51)] = {12,0x999}, + [I(104,51)] = {12,0x9D9}, + [I(105,51)] = {11,0x199}, + [I(106,51)] = {13,0x1D19}, + [I(107,51)] = {13,0x1D59}, + [I(108,51)] = {12,0xA19}, + [I(109,51)] = {12,0xA59}, + [I(110,51)] = {12,0xA99}, + [I(111,51)] = {11,0x1D9}, + [I(112,51)] = {12,0xAD9}, + [I(113,51)] = {13,0x1D99}, + [I(114,51)] = {12,0xB19}, + [I(115,51)] = {11,0x219}, + [I(116,51)] = {11,0x259}, + [I(117,51)] = {12,0xB59}, + [I(118,51)] = {13,0x1DD9}, + [I(119,51)] = {13,0x1E19}, + [I(120,51)] = {13,0x1E59}, + [I(121,51)] = {13,0x1E99}, + [I(122,51)] = {13,0x1ED9}, + [I(123,51)] = {21,0x1FFF99}, + [I(124,51)] = {17,0x1FF19}, + [I(125,51)] = {20,0xFFF59}, + [I(126,51)] = {19,0x7FF59}, + [I(127,51)] = {64,0}, + [I(128,51)] = {26,0x3FFF999}, + [I(129,51)] = {28,0xFFFF499}, + [I(130,51)] = {26,0x3FFF9D9}, + [I(131,51)] = {26,0x3FFFA19}, + [I(132,51)] = {28,0xFFFF4D9}, + [I(133,51)] = {28,0xFFFF519}, + [I(134,51)] = {28,0xFFFF559}, + [I(135,51)] = {29,0x1FFFF659}, + [I(136,51)] = {28,0xFFFF599}, + [I(137,51)] = {29,0x1FFFF699}, + [I(138,51)] = {29,0x1FFFF6D9}, + [I(139,51)] = {29,0x1FFFF719}, + [I(140,51)] = {29,0x1FFFF759}, + [I(141,51)] = {29,0x1FFFF799}, + [I(142,51)] = {30,0x3FFFFAD9}, + [I(143,51)] = {29,0x1FFFF7D9}, + [I(144,51)] = {30,0x3FFFFB19}, + [I(145,51)] = {30,0x3FFFFB59}, + [I(146,51)] = {28,0xFFFF5D9}, + [I(147,51)] = {29,0x1FFFF819}, + [I(148,51)] = {30,0x3FFFFB99}, + [I(149,51)] = {29,0x1FFFF859}, + [I(150,51)] = {29,0x1FFFF899}, + [I(151,51)] = {29,0x1FFFF8D9}, + [I(152,51)] = {29,0x1FFFF919}, + [I(153,51)] = {27,0x7FFF719}, + [I(154,51)] = {28,0xFFFF619}, + [I(155,51)] = {29,0x1FFFF959}, + [I(156,51)] = {28,0xFFFF659}, + [I(157,51)] = {29,0x1FFFF999}, + [I(158,51)] = {29,0x1FFFF9D9}, + [I(159,51)] = {30,0x3FFFFBD9}, + [I(160,51)] = {28,0xFFFF699}, + [I(161,51)] = {27,0x7FFF759}, + [I(162,51)] = {26,0x3FFFA59}, + [I(163,51)] = {28,0xFFFF6D9}, + [I(164,51)] = {28,0xFFFF719}, + [I(165,51)] = {29,0x1FFFFA19}, + [I(166,51)] = {29,0x1FFFFA59}, + [I(167,51)] = {27,0x7FFF799}, + [I(168,51)] = {29,0x1FFFFA99}, + [I(169,51)] = {28,0xFFFF759}, + [I(170,51)] = {28,0xFFFF799}, + [I(171,51)] = {30,0x3FFFFC19}, + [I(172,51)] = {27,0x7FFF7D9}, + [I(173,51)] = {28,0xFFFF7D9}, + [I(174,51)] = {29,0x1FFFFAD9}, + [I(175,51)] = {29,0x1FFFFB19}, + [I(176,51)] = {27,0x7FFF819}, + [I(177,51)] = {27,0x7FFF859}, + [I(178,51)] = {28,0xFFFF819}, + [I(179,51)] = {27,0x7FFF899}, + [I(180,51)] = {29,0x1FFFFB59}, + [I(181,51)] = {28,0xFFFF859}, + [I(182,51)] = {29,0x1FFFFB99}, + [I(183,51)] = {29,0x1FFFFBD9}, + [I(184,51)] = {26,0x3FFFA99}, + [I(185,51)] = {28,0xFFFF899}, + [I(186,51)] = {28,0xFFFF8D9}, + [I(187,51)] = {28,0xFFFF919}, + [I(188,51)] = {29,0x1FFFFC19}, + [I(189,51)] = {28,0xFFFF959}, + [I(190,51)] = {28,0xFFFF999}, + [I(191,51)] = {29,0x1FFFFC59}, + [I(192,51)] = {X32,0xFFFFF819}, + [I(193,51)] = {X32,0xFFFFF859}, + [I(194,51)] = {26,0x3FFFAD9}, + [I(195,51)] = {25,0x1FFFC59}, + [I(196,51)] = {28,0xFFFF9D9}, + [I(197,51)] = {29,0x1FFFFC99}, + [I(198,51)] = {28,0xFFFFA19}, + [I(199,51)] = {31,0x7FFFFB19}, + [I(200,51)] = {X32,0xFFFFF899}, + [I(201,51)] = {X32,0xFFFFF8D9}, + [I(202,51)] = {X32,0xFFFFF919}, + [I(203,51)] = {64,0}, + [I(204,51)] = {64,0}, + [I(205,51)] = {X32,0xFFFFF959}, + [I(206,51)] = {30,0x3FFFFC59}, + [I(207,51)] = {31,0x7FFFFB59}, + [I(208,51)] = {25,0x1FFFC99}, + [I(209,51)] = {27,0x7FFF8D9}, + [I(210,51)] = {X32,0xFFFFF999}, + [I(211,51)] = {64,0}, + [I(212,51)] = {64,0}, + [I(213,51)] = {X32,0xFFFFF9D9}, + [I(214,51)] = {64,0}, + [I(215,51)] = {30,0x3FFFFC99}, + [I(216,51)] = {27,0x7FFF919}, + [I(217,51)] = {27,0x7FFF959}, + [I(218,51)] = {X32,0xFFFFFA19}, + [I(219,51)] = {X32,0xFFFFFA59}, + [I(220,51)] = {64,0}, + [I(221,51)] = {64,0}, + [I(222,51)] = {64,0}, + [I(223,51)] = {64,0}, + [I(224,51)] = {26,0x3FFFB19}, + [I(225,51)] = {30,0x3FFFFCD9}, + [I(226,51)] = {26,0x3FFFB59}, + [I(227,51)] = {27,0x7FFF999}, + [I(228,51)] = {28,0xFFFFA59}, + [I(229,51)] = {27,0x7FFF9D9}, + [I(230,51)] = {27,0x7FFFA19}, + [I(231,51)] = {29,0x1FFFFCD9}, + [I(232,51)] = {28,0xFFFFA99}, + [I(233,51)] = {28,0xFFFFAD9}, + [I(234,51)] = {31,0x7FFFFB99}, + [I(235,51)] = {31,0x7FFFFBD9}, + [I(236,51)] = {30,0x3FFFFD19}, + [I(237,51)] = {30,0x3FFFFD59}, + [I(238,51)] = {X32,0xFFFFFA99}, + [I(239,51)] = {29,0x1FFFFD19}, + [I(240,51)] = {X32,0xFFFFFAD9}, + [I(241,51)] = {64,0}, + [I(242,51)] = {X32,0xFFFFFB19}, + [I(243,51)] = {X32,0xFFFFFB59}, + [I(244,51)] = {64,0}, + [I(245,51)] = {64,0}, + [I(246,51)] = {64,0}, + [I(247,51)] = {64,0}, + [I(248,51)] = {64,0}, + [I(249,51)] = {64,0}, + [I(250,51)] = {64,0}, + [I(251,51)] = {64,0}, + [I(252,51)] = {64,0}, + [I(253,51)] = {64,0}, + [I(254,51)] = {64,0}, + [I(255,51)] = {X32,0xFFFFFB99}, + [I(0,52)] = {19,0x7FE1A}, + [I(1,52)] = {29,0x1FFFF61A}, + [I(2,52)] = {64,0}, + [I(3,52)] = {64,0}, + [I(4,52)] = {64,0}, + [I(5,52)] = {64,0}, + [I(6,52)] = {64,0}, + [I(7,52)] = {64,0}, + [I(8,52)] = {64,0}, + [I(9,52)] = {30,0x3FFFFA9A}, + [I(10,52)] = {64,0}, + [I(11,52)] = {64,0}, + [I(12,52)] = {64,0}, + [I(13,52)] = {64,0}, + [I(14,52)] = {64,0}, + [I(15,52)] = {64,0}, + [I(16,52)] = {64,0}, + [I(17,52)] = {64,0}, + [I(18,52)] = {64,0}, + [I(19,52)] = {64,0}, + [I(20,52)] = {64,0}, + [I(21,52)] = {64,0}, + [I(22,52)] = {64,0}, + [I(23,52)] = {64,0}, + [I(24,52)] = {64,0}, + [I(25,52)] = {64,0}, + [I(26,52)] = {64,0}, + [I(27,52)] = {64,0}, + [I(28,52)] = {64,0}, + [I(29,52)] = {64,0}, + [I(30,52)] = {64,0}, + [I(31,52)] = {64,0}, + [I(32,52)] = {12,0x51A}, + [I(33,52)] = {16,0xFE1A}, + [I(34,52)] = {16,0xFE5A}, + [I(35,52)] = {18,0x3FE9A}, + [I(36,52)] = {19,0x7FE5A}, + [I(37,52)] = {12,0x55A}, + [I(38,52)] = {14,0x3E1A}, + [I(39,52)] = {17,0x1FE9A}, + [I(40,52)] = {16,0xFE9A}, + [I(41,52)] = {16,0xFEDA}, + [I(42,52)] = {14,0x3E5A}, + [I(43,52)] = {17,0x1FEDA}, + [I(44,52)] = {14,0x3E9A}, + [I(45,52)] = {12,0x59A}, + [I(46,52)] = {12,0x5DA}, + [I(47,52)] = {12,0x61A}, + [I(48,52)] = {11,0x1A}, + [I(49,52)] = {11,0x5A}, + [I(50,52)] = {11,0x9A}, + [I(51,52)] = {12,0x65A}, + [I(52,52)] = {12,0x69A}, + [I(53,52)] = {12,0x6DA}, + [I(54,52)] = {12,0x71A}, + [I(55,52)] = {12,0x75A}, + [I(56,52)] = {12,0x79A}, + [I(57,52)] = {12,0x7DA}, + [I(58,52)] = {13,0x171A}, + [I(59,52)] = {14,0x3EDA}, + [I(60,52)] = {21,0x1FFF1A}, + [I(61,52)] = {12,0x81A}, + [I(62,52)] = {18,0x3FEDA}, + [I(63,52)] = {16,0xFF1A}, + [I(64,52)] = {19,0x7FE9A}, + [I(65,52)] = {12,0x85A}, + [I(66,52)] = {13,0x175A}, + [I(67,52)] = {13,0x179A}, + [I(68,52)] = {13,0x17DA}, + [I(69,52)] = {13,0x181A}, + [I(70,52)] = {13,0x185A}, + [I(71,52)] = {13,0x189A}, + [I(72,52)] = {13,0x18DA}, + [I(73,52)] = {13,0x191A}, + [I(74,52)] = {13,0x195A}, + [I(75,52)] = {13,0x199A}, + [I(76,52)] = {13,0x19DA}, + [I(77,52)] = {13,0x1A1A}, + [I(78,52)] = {13,0x1A5A}, + [I(79,52)] = {13,0x1A9A}, + [I(80,52)] = {13,0x1ADA}, + [I(81,52)] = {13,0x1B1A}, + [I(82,52)] = {13,0x1B5A}, + [I(83,52)] = {13,0x1B9A}, + [I(84,52)] = {13,0x1BDA}, + [I(85,52)] = {13,0x1C1A}, + [I(86,52)] = {13,0x1C5A}, + [I(87,52)] = {13,0x1C9A}, + [I(88,52)] = {14,0x3F1A}, + [I(89,52)] = {13,0x1CDA}, + [I(90,52)] = {14,0x3F5A}, + [I(91,52)] = {19,0x7FEDA}, + [I(92,52)] = {25,0x1FFFC1A}, + [I(93,52)] = {19,0x7FF1A}, + [I(94,52)] = {20,0xFFF1A}, + [I(95,52)] = {12,0x89A}, + [I(96,52)] = {21,0x1FFF5A}, + [I(97,52)] = {11,0xDA}, + [I(98,52)] = {12,0x8DA}, + [I(99,52)] = {11,0x11A}, + [I(100,52)] = {12,0x91A}, + [I(101,52)] = {11,0x15A}, + [I(102,52)] = {12,0x95A}, + [I(103,52)] = {12,0x99A}, + [I(104,52)] = {12,0x9DA}, + [I(105,52)] = {11,0x19A}, + [I(106,52)] = {13,0x1D1A}, + [I(107,52)] = {13,0x1D5A}, + [I(108,52)] = {12,0xA1A}, + [I(109,52)] = {12,0xA5A}, + [I(110,52)] = {12,0xA9A}, + [I(111,52)] = {11,0x1DA}, + [I(112,52)] = {12,0xADA}, + [I(113,52)] = {13,0x1D9A}, + [I(114,52)] = {12,0xB1A}, + [I(115,52)] = {11,0x21A}, + [I(116,52)] = {11,0x25A}, + [I(117,52)] = {12,0xB5A}, + [I(118,52)] = {13,0x1DDA}, + [I(119,52)] = {13,0x1E1A}, + [I(120,52)] = {13,0x1E5A}, + [I(121,52)] = {13,0x1E9A}, + [I(122,52)] = {13,0x1EDA}, + [I(123,52)] = {21,0x1FFF9A}, + [I(124,52)] = {17,0x1FF1A}, + [I(125,52)] = {20,0xFFF5A}, + [I(126,52)] = {19,0x7FF5A}, + [I(127,52)] = {64,0}, + [I(128,52)] = {26,0x3FFF99A}, + [I(129,52)] = {28,0xFFFF49A}, + [I(130,52)] = {26,0x3FFF9DA}, + [I(131,52)] = {26,0x3FFFA1A}, + [I(132,52)] = {28,0xFFFF4DA}, + [I(133,52)] = {28,0xFFFF51A}, + [I(134,52)] = {28,0xFFFF55A}, + [I(135,52)] = {29,0x1FFFF65A}, + [I(136,52)] = {28,0xFFFF59A}, + [I(137,52)] = {29,0x1FFFF69A}, + [I(138,52)] = {29,0x1FFFF6DA}, + [I(139,52)] = {29,0x1FFFF71A}, + [I(140,52)] = {29,0x1FFFF75A}, + [I(141,52)] = {29,0x1FFFF79A}, + [I(142,52)] = {30,0x3FFFFADA}, + [I(143,52)] = {29,0x1FFFF7DA}, + [I(144,52)] = {30,0x3FFFFB1A}, + [I(145,52)] = {30,0x3FFFFB5A}, + [I(146,52)] = {28,0xFFFF5DA}, + [I(147,52)] = {29,0x1FFFF81A}, + [I(148,52)] = {30,0x3FFFFB9A}, + [I(149,52)] = {29,0x1FFFF85A}, + [I(150,52)] = {29,0x1FFFF89A}, + [I(151,52)] = {29,0x1FFFF8DA}, + [I(152,52)] = {29,0x1FFFF91A}, + [I(153,52)] = {27,0x7FFF71A}, + [I(154,52)] = {28,0xFFFF61A}, + [I(155,52)] = {29,0x1FFFF95A}, + [I(156,52)] = {28,0xFFFF65A}, + [I(157,52)] = {29,0x1FFFF99A}, + [I(158,52)] = {29,0x1FFFF9DA}, + [I(159,52)] = {30,0x3FFFFBDA}, + [I(160,52)] = {28,0xFFFF69A}, + [I(161,52)] = {27,0x7FFF75A}, + [I(162,52)] = {26,0x3FFFA5A}, + [I(163,52)] = {28,0xFFFF6DA}, + [I(164,52)] = {28,0xFFFF71A}, + [I(165,52)] = {29,0x1FFFFA1A}, + [I(166,52)] = {29,0x1FFFFA5A}, + [I(167,52)] = {27,0x7FFF79A}, + [I(168,52)] = {29,0x1FFFFA9A}, + [I(169,52)] = {28,0xFFFF75A}, + [I(170,52)] = {28,0xFFFF79A}, + [I(171,52)] = {30,0x3FFFFC1A}, + [I(172,52)] = {27,0x7FFF7DA}, + [I(173,52)] = {28,0xFFFF7DA}, + [I(174,52)] = {29,0x1FFFFADA}, + [I(175,52)] = {29,0x1FFFFB1A}, + [I(176,52)] = {27,0x7FFF81A}, + [I(177,52)] = {27,0x7FFF85A}, + [I(178,52)] = {28,0xFFFF81A}, + [I(179,52)] = {27,0x7FFF89A}, + [I(180,52)] = {29,0x1FFFFB5A}, + [I(181,52)] = {28,0xFFFF85A}, + [I(182,52)] = {29,0x1FFFFB9A}, + [I(183,52)] = {29,0x1FFFFBDA}, + [I(184,52)] = {26,0x3FFFA9A}, + [I(185,52)] = {28,0xFFFF89A}, + [I(186,52)] = {28,0xFFFF8DA}, + [I(187,52)] = {28,0xFFFF91A}, + [I(188,52)] = {29,0x1FFFFC1A}, + [I(189,52)] = {28,0xFFFF95A}, + [I(190,52)] = {28,0xFFFF99A}, + [I(191,52)] = {29,0x1FFFFC5A}, + [I(192,52)] = {X32,0xFFFFF81A}, + [I(193,52)] = {X32,0xFFFFF85A}, + [I(194,52)] = {26,0x3FFFADA}, + [I(195,52)] = {25,0x1FFFC5A}, + [I(196,52)] = {28,0xFFFF9DA}, + [I(197,52)] = {29,0x1FFFFC9A}, + [I(198,52)] = {28,0xFFFFA1A}, + [I(199,52)] = {31,0x7FFFFB1A}, + [I(200,52)] = {X32,0xFFFFF89A}, + [I(201,52)] = {X32,0xFFFFF8DA}, + [I(202,52)] = {X32,0xFFFFF91A}, + [I(203,52)] = {64,0}, + [I(204,52)] = {64,0}, + [I(205,52)] = {X32,0xFFFFF95A}, + [I(206,52)] = {30,0x3FFFFC5A}, + [I(207,52)] = {31,0x7FFFFB5A}, + [I(208,52)] = {25,0x1FFFC9A}, + [I(209,52)] = {27,0x7FFF8DA}, + [I(210,52)] = {X32,0xFFFFF99A}, + [I(211,52)] = {64,0}, + [I(212,52)] = {64,0}, + [I(213,52)] = {X32,0xFFFFF9DA}, + [I(214,52)] = {64,0}, + [I(215,52)] = {30,0x3FFFFC9A}, + [I(216,52)] = {27,0x7FFF91A}, + [I(217,52)] = {27,0x7FFF95A}, + [I(218,52)] = {X32,0xFFFFFA1A}, + [I(219,52)] = {X32,0xFFFFFA5A}, + [I(220,52)] = {64,0}, + [I(221,52)] = {64,0}, + [I(222,52)] = {64,0}, + [I(223,52)] = {64,0}, + [I(224,52)] = {26,0x3FFFB1A}, + [I(225,52)] = {30,0x3FFFFCDA}, + [I(226,52)] = {26,0x3FFFB5A}, + [I(227,52)] = {27,0x7FFF99A}, + [I(228,52)] = {28,0xFFFFA5A}, + [I(229,52)] = {27,0x7FFF9DA}, + [I(230,52)] = {27,0x7FFFA1A}, + [I(231,52)] = {29,0x1FFFFCDA}, + [I(232,52)] = {28,0xFFFFA9A}, + [I(233,52)] = {28,0xFFFFADA}, + [I(234,52)] = {31,0x7FFFFB9A}, + [I(235,52)] = {31,0x7FFFFBDA}, + [I(236,52)] = {30,0x3FFFFD1A}, + [I(237,52)] = {30,0x3FFFFD5A}, + [I(238,52)] = {X32,0xFFFFFA9A}, + [I(239,52)] = {29,0x1FFFFD1A}, + [I(240,52)] = {X32,0xFFFFFADA}, + [I(241,52)] = {64,0}, + [I(242,52)] = {X32,0xFFFFFB1A}, + [I(243,52)] = {X32,0xFFFFFB5A}, + [I(244,52)] = {64,0}, + [I(245,52)] = {64,0}, + [I(246,52)] = {64,0}, + [I(247,52)] = {64,0}, + [I(248,52)] = {64,0}, + [I(249,52)] = {64,0}, + [I(250,52)] = {64,0}, + [I(251,52)] = {64,0}, + [I(252,52)] = {64,0}, + [I(253,52)] = {64,0}, + [I(254,52)] = {64,0}, + [I(255,52)] = {X32,0xFFFFFB9A}, + [I(0,53)] = {19,0x7FE1B}, + [I(1,53)] = {29,0x1FFFF61B}, + [I(2,53)] = {64,0}, + [I(3,53)] = {64,0}, + [I(4,53)] = {64,0}, + [I(5,53)] = {64,0}, + [I(6,53)] = {64,0}, + [I(7,53)] = {64,0}, + [I(8,53)] = {64,0}, + [I(9,53)] = {30,0x3FFFFA9B}, + [I(10,53)] = {64,0}, + [I(11,53)] = {64,0}, + [I(12,53)] = {64,0}, + [I(13,53)] = {64,0}, + [I(14,53)] = {64,0}, + [I(15,53)] = {64,0}, + [I(16,53)] = {64,0}, + [I(17,53)] = {64,0}, + [I(18,53)] = {64,0}, + [I(19,53)] = {64,0}, + [I(20,53)] = {64,0}, + [I(21,53)] = {64,0}, + [I(22,53)] = {64,0}, + [I(23,53)] = {64,0}, + [I(24,53)] = {64,0}, + [I(25,53)] = {64,0}, + [I(26,53)] = {64,0}, + [I(27,53)] = {64,0}, + [I(28,53)] = {64,0}, + [I(29,53)] = {64,0}, + [I(30,53)] = {64,0}, + [I(31,53)] = {64,0}, + [I(32,53)] = {12,0x51B}, + [I(33,53)] = {16,0xFE1B}, + [I(34,53)] = {16,0xFE5B}, + [I(35,53)] = {18,0x3FE9B}, + [I(36,53)] = {19,0x7FE5B}, + [I(37,53)] = {12,0x55B}, + [I(38,53)] = {14,0x3E1B}, + [I(39,53)] = {17,0x1FE9B}, + [I(40,53)] = {16,0xFE9B}, + [I(41,53)] = {16,0xFEDB}, + [I(42,53)] = {14,0x3E5B}, + [I(43,53)] = {17,0x1FEDB}, + [I(44,53)] = {14,0x3E9B}, + [I(45,53)] = {12,0x59B}, + [I(46,53)] = {12,0x5DB}, + [I(47,53)] = {12,0x61B}, + [I(48,53)] = {11,0x1B}, + [I(49,53)] = {11,0x5B}, + [I(50,53)] = {11,0x9B}, + [I(51,53)] = {12,0x65B}, + [I(52,53)] = {12,0x69B}, + [I(53,53)] = {12,0x6DB}, + [I(54,53)] = {12,0x71B}, + [I(55,53)] = {12,0x75B}, + [I(56,53)] = {12,0x79B}, + [I(57,53)] = {12,0x7DB}, + [I(58,53)] = {13,0x171B}, + [I(59,53)] = {14,0x3EDB}, + [I(60,53)] = {21,0x1FFF1B}, + [I(61,53)] = {12,0x81B}, + [I(62,53)] = {18,0x3FEDB}, + [I(63,53)] = {16,0xFF1B}, + [I(64,53)] = {19,0x7FE9B}, + [I(65,53)] = {12,0x85B}, + [I(66,53)] = {13,0x175B}, + [I(67,53)] = {13,0x179B}, + [I(68,53)] = {13,0x17DB}, + [I(69,53)] = {13,0x181B}, + [I(70,53)] = {13,0x185B}, + [I(71,53)] = {13,0x189B}, + [I(72,53)] = {13,0x18DB}, + [I(73,53)] = {13,0x191B}, + [I(74,53)] = {13,0x195B}, + [I(75,53)] = {13,0x199B}, + [I(76,53)] = {13,0x19DB}, + [I(77,53)] = {13,0x1A1B}, + [I(78,53)] = {13,0x1A5B}, + [I(79,53)] = {13,0x1A9B}, + [I(80,53)] = {13,0x1ADB}, + [I(81,53)] = {13,0x1B1B}, + [I(82,53)] = {13,0x1B5B}, + [I(83,53)] = {13,0x1B9B}, + [I(84,53)] = {13,0x1BDB}, + [I(85,53)] = {13,0x1C1B}, + [I(86,53)] = {13,0x1C5B}, + [I(87,53)] = {13,0x1C9B}, + [I(88,53)] = {14,0x3F1B}, + [I(89,53)] = {13,0x1CDB}, + [I(90,53)] = {14,0x3F5B}, + [I(91,53)] = {19,0x7FEDB}, + [I(92,53)] = {25,0x1FFFC1B}, + [I(93,53)] = {19,0x7FF1B}, + [I(94,53)] = {20,0xFFF1B}, + [I(95,53)] = {12,0x89B}, + [I(96,53)] = {21,0x1FFF5B}, + [I(97,53)] = {11,0xDB}, + [I(98,53)] = {12,0x8DB}, + [I(99,53)] = {11,0x11B}, + [I(100,53)] = {12,0x91B}, + [I(101,53)] = {11,0x15B}, + [I(102,53)] = {12,0x95B}, + [I(103,53)] = {12,0x99B}, + [I(104,53)] = {12,0x9DB}, + [I(105,53)] = {11,0x19B}, + [I(106,53)] = {13,0x1D1B}, + [I(107,53)] = {13,0x1D5B}, + [I(108,53)] = {12,0xA1B}, + [I(109,53)] = {12,0xA5B}, + [I(110,53)] = {12,0xA9B}, + [I(111,53)] = {11,0x1DB}, + [I(112,53)] = {12,0xADB}, + [I(113,53)] = {13,0x1D9B}, + [I(114,53)] = {12,0xB1B}, + [I(115,53)] = {11,0x21B}, + [I(116,53)] = {11,0x25B}, + [I(117,53)] = {12,0xB5B}, + [I(118,53)] = {13,0x1DDB}, + [I(119,53)] = {13,0x1E1B}, + [I(120,53)] = {13,0x1E5B}, + [I(121,53)] = {13,0x1E9B}, + [I(122,53)] = {13,0x1EDB}, + [I(123,53)] = {21,0x1FFF9B}, + [I(124,53)] = {17,0x1FF1B}, + [I(125,53)] = {20,0xFFF5B}, + [I(126,53)] = {19,0x7FF5B}, + [I(127,53)] = {64,0}, + [I(128,53)] = {26,0x3FFF99B}, + [I(129,53)] = {28,0xFFFF49B}, + [I(130,53)] = {26,0x3FFF9DB}, + [I(131,53)] = {26,0x3FFFA1B}, + [I(132,53)] = {28,0xFFFF4DB}, + [I(133,53)] = {28,0xFFFF51B}, + [I(134,53)] = {28,0xFFFF55B}, + [I(135,53)] = {29,0x1FFFF65B}, + [I(136,53)] = {28,0xFFFF59B}, + [I(137,53)] = {29,0x1FFFF69B}, + [I(138,53)] = {29,0x1FFFF6DB}, + [I(139,53)] = {29,0x1FFFF71B}, + [I(140,53)] = {29,0x1FFFF75B}, + [I(141,53)] = {29,0x1FFFF79B}, + [I(142,53)] = {30,0x3FFFFADB}, + [I(143,53)] = {29,0x1FFFF7DB}, + [I(144,53)] = {30,0x3FFFFB1B}, + [I(145,53)] = {30,0x3FFFFB5B}, + [I(146,53)] = {28,0xFFFF5DB}, + [I(147,53)] = {29,0x1FFFF81B}, + [I(148,53)] = {30,0x3FFFFB9B}, + [I(149,53)] = {29,0x1FFFF85B}, + [I(150,53)] = {29,0x1FFFF89B}, + [I(151,53)] = {29,0x1FFFF8DB}, + [I(152,53)] = {29,0x1FFFF91B}, + [I(153,53)] = {27,0x7FFF71B}, + [I(154,53)] = {28,0xFFFF61B}, + [I(155,53)] = {29,0x1FFFF95B}, + [I(156,53)] = {28,0xFFFF65B}, + [I(157,53)] = {29,0x1FFFF99B}, + [I(158,53)] = {29,0x1FFFF9DB}, + [I(159,53)] = {30,0x3FFFFBDB}, + [I(160,53)] = {28,0xFFFF69B}, + [I(161,53)] = {27,0x7FFF75B}, + [I(162,53)] = {26,0x3FFFA5B}, + [I(163,53)] = {28,0xFFFF6DB}, + [I(164,53)] = {28,0xFFFF71B}, + [I(165,53)] = {29,0x1FFFFA1B}, + [I(166,53)] = {29,0x1FFFFA5B}, + [I(167,53)] = {27,0x7FFF79B}, + [I(168,53)] = {29,0x1FFFFA9B}, + [I(169,53)] = {28,0xFFFF75B}, + [I(170,53)] = {28,0xFFFF79B}, + [I(171,53)] = {30,0x3FFFFC1B}, + [I(172,53)] = {27,0x7FFF7DB}, + [I(173,53)] = {28,0xFFFF7DB}, + [I(174,53)] = {29,0x1FFFFADB}, + [I(175,53)] = {29,0x1FFFFB1B}, + [I(176,53)] = {27,0x7FFF81B}, + [I(177,53)] = {27,0x7FFF85B}, + [I(178,53)] = {28,0xFFFF81B}, + [I(179,53)] = {27,0x7FFF89B}, + [I(180,53)] = {29,0x1FFFFB5B}, + [I(181,53)] = {28,0xFFFF85B}, + [I(182,53)] = {29,0x1FFFFB9B}, + [I(183,53)] = {29,0x1FFFFBDB}, + [I(184,53)] = {26,0x3FFFA9B}, + [I(185,53)] = {28,0xFFFF89B}, + [I(186,53)] = {28,0xFFFF8DB}, + [I(187,53)] = {28,0xFFFF91B}, + [I(188,53)] = {29,0x1FFFFC1B}, + [I(189,53)] = {28,0xFFFF95B}, + [I(190,53)] = {28,0xFFFF99B}, + [I(191,53)] = {29,0x1FFFFC5B}, + [I(192,53)] = {X32,0xFFFFF81B}, + [I(193,53)] = {X32,0xFFFFF85B}, + [I(194,53)] = {26,0x3FFFADB}, + [I(195,53)] = {25,0x1FFFC5B}, + [I(196,53)] = {28,0xFFFF9DB}, + [I(197,53)] = {29,0x1FFFFC9B}, + [I(198,53)] = {28,0xFFFFA1B}, + [I(199,53)] = {31,0x7FFFFB1B}, + [I(200,53)] = {X32,0xFFFFF89B}, + [I(201,53)] = {X32,0xFFFFF8DB}, + [I(202,53)] = {X32,0xFFFFF91B}, + [I(203,53)] = {64,0}, + [I(204,53)] = {64,0}, + [I(205,53)] = {X32,0xFFFFF95B}, + [I(206,53)] = {30,0x3FFFFC5B}, + [I(207,53)] = {31,0x7FFFFB5B}, + [I(208,53)] = {25,0x1FFFC9B}, + [I(209,53)] = {27,0x7FFF8DB}, + [I(210,53)] = {X32,0xFFFFF99B}, + [I(211,53)] = {64,0}, + [I(212,53)] = {64,0}, + [I(213,53)] = {X32,0xFFFFF9DB}, + [I(214,53)] = {64,0}, + [I(215,53)] = {30,0x3FFFFC9B}, + [I(216,53)] = {27,0x7FFF91B}, + [I(217,53)] = {27,0x7FFF95B}, + [I(218,53)] = {X32,0xFFFFFA1B}, + [I(219,53)] = {X32,0xFFFFFA5B}, + [I(220,53)] = {64,0}, + [I(221,53)] = {64,0}, + [I(222,53)] = {64,0}, + [I(223,53)] = {64,0}, + [I(224,53)] = {26,0x3FFFB1B}, + [I(225,53)] = {30,0x3FFFFCDB}, + [I(226,53)] = {26,0x3FFFB5B}, + [I(227,53)] = {27,0x7FFF99B}, + [I(228,53)] = {28,0xFFFFA5B}, + [I(229,53)] = {27,0x7FFF9DB}, + [I(230,53)] = {27,0x7FFFA1B}, + [I(231,53)] = {29,0x1FFFFCDB}, + [I(232,53)] = {28,0xFFFFA9B}, + [I(233,53)] = {28,0xFFFFADB}, + [I(234,53)] = {31,0x7FFFFB9B}, + [I(235,53)] = {31,0x7FFFFBDB}, + [I(236,53)] = {30,0x3FFFFD1B}, + [I(237,53)] = {30,0x3FFFFD5B}, + [I(238,53)] = {X32,0xFFFFFA9B}, + [I(239,53)] = {29,0x1FFFFD1B}, + [I(240,53)] = {X32,0xFFFFFADB}, + [I(241,53)] = {64,0}, + [I(242,53)] = {X32,0xFFFFFB1B}, + [I(243,53)] = {X32,0xFFFFFB5B}, + [I(244,53)] = {64,0}, + [I(245,53)] = {64,0}, + [I(246,53)] = {64,0}, + [I(247,53)] = {64,0}, + [I(248,53)] = {64,0}, + [I(249,53)] = {64,0}, + [I(250,53)] = {64,0}, + [I(251,53)] = {64,0}, + [I(252,53)] = {64,0}, + [I(253,53)] = {64,0}, + [I(254,53)] = {64,0}, + [I(255,53)] = {X32,0xFFFFFB9B}, + [I(0,54)] = {19,0x7FE1C}, + [I(1,54)] = {29,0x1FFFF61C}, + [I(2,54)] = {64,0}, + [I(3,54)] = {64,0}, + [I(4,54)] = {64,0}, + [I(5,54)] = {64,0}, + [I(6,54)] = {64,0}, + [I(7,54)] = {64,0}, + [I(8,54)] = {64,0}, + [I(9,54)] = {30,0x3FFFFA9C}, + [I(10,54)] = {64,0}, + [I(11,54)] = {64,0}, + [I(12,54)] = {64,0}, + [I(13,54)] = {64,0}, + [I(14,54)] = {64,0}, + [I(15,54)] = {64,0}, + [I(16,54)] = {64,0}, + [I(17,54)] = {64,0}, + [I(18,54)] = {64,0}, + [I(19,54)] = {64,0}, + [I(20,54)] = {64,0}, + [I(21,54)] = {64,0}, + [I(22,54)] = {64,0}, + [I(23,54)] = {64,0}, + [I(24,54)] = {64,0}, + [I(25,54)] = {64,0}, + [I(26,54)] = {64,0}, + [I(27,54)] = {64,0}, + [I(28,54)] = {64,0}, + [I(29,54)] = {64,0}, + [I(30,54)] = {64,0}, + [I(31,54)] = {64,0}, + [I(32,54)] = {12,0x51C}, + [I(33,54)] = {16,0xFE1C}, + [I(34,54)] = {16,0xFE5C}, + [I(35,54)] = {18,0x3FE9C}, + [I(36,54)] = {19,0x7FE5C}, + [I(37,54)] = {12,0x55C}, + [I(38,54)] = {14,0x3E1C}, + [I(39,54)] = {17,0x1FE9C}, + [I(40,54)] = {16,0xFE9C}, + [I(41,54)] = {16,0xFEDC}, + [I(42,54)] = {14,0x3E5C}, + [I(43,54)] = {17,0x1FEDC}, + [I(44,54)] = {14,0x3E9C}, + [I(45,54)] = {12,0x59C}, + [I(46,54)] = {12,0x5DC}, + [I(47,54)] = {12,0x61C}, + [I(48,54)] = {11,0x1C}, + [I(49,54)] = {11,0x5C}, + [I(50,54)] = {11,0x9C}, + [I(51,54)] = {12,0x65C}, + [I(52,54)] = {12,0x69C}, + [I(53,54)] = {12,0x6DC}, + [I(54,54)] = {12,0x71C}, + [I(55,54)] = {12,0x75C}, + [I(56,54)] = {12,0x79C}, + [I(57,54)] = {12,0x7DC}, + [I(58,54)] = {13,0x171C}, + [I(59,54)] = {14,0x3EDC}, + [I(60,54)] = {21,0x1FFF1C}, + [I(61,54)] = {12,0x81C}, + [I(62,54)] = {18,0x3FEDC}, + [I(63,54)] = {16,0xFF1C}, + [I(64,54)] = {19,0x7FE9C}, + [I(65,54)] = {12,0x85C}, + [I(66,54)] = {13,0x175C}, + [I(67,54)] = {13,0x179C}, + [I(68,54)] = {13,0x17DC}, + [I(69,54)] = {13,0x181C}, + [I(70,54)] = {13,0x185C}, + [I(71,54)] = {13,0x189C}, + [I(72,54)] = {13,0x18DC}, + [I(73,54)] = {13,0x191C}, + [I(74,54)] = {13,0x195C}, + [I(75,54)] = {13,0x199C}, + [I(76,54)] = {13,0x19DC}, + [I(77,54)] = {13,0x1A1C}, + [I(78,54)] = {13,0x1A5C}, + [I(79,54)] = {13,0x1A9C}, + [I(80,54)] = {13,0x1ADC}, + [I(81,54)] = {13,0x1B1C}, + [I(82,54)] = {13,0x1B5C}, + [I(83,54)] = {13,0x1B9C}, + [I(84,54)] = {13,0x1BDC}, + [I(85,54)] = {13,0x1C1C}, + [I(86,54)] = {13,0x1C5C}, + [I(87,54)] = {13,0x1C9C}, + [I(88,54)] = {14,0x3F1C}, + [I(89,54)] = {13,0x1CDC}, + [I(90,54)] = {14,0x3F5C}, + [I(91,54)] = {19,0x7FEDC}, + [I(92,54)] = {25,0x1FFFC1C}, + [I(93,54)] = {19,0x7FF1C}, + [I(94,54)] = {20,0xFFF1C}, + [I(95,54)] = {12,0x89C}, + [I(96,54)] = {21,0x1FFF5C}, + [I(97,54)] = {11,0xDC}, + [I(98,54)] = {12,0x8DC}, + [I(99,54)] = {11,0x11C}, + [I(100,54)] = {12,0x91C}, + [I(101,54)] = {11,0x15C}, + [I(102,54)] = {12,0x95C}, + [I(103,54)] = {12,0x99C}, + [I(104,54)] = {12,0x9DC}, + [I(105,54)] = {11,0x19C}, + [I(106,54)] = {13,0x1D1C}, + [I(107,54)] = {13,0x1D5C}, + [I(108,54)] = {12,0xA1C}, + [I(109,54)] = {12,0xA5C}, + [I(110,54)] = {12,0xA9C}, + [I(111,54)] = {11,0x1DC}, + [I(112,54)] = {12,0xADC}, + [I(113,54)] = {13,0x1D9C}, + [I(114,54)] = {12,0xB1C}, + [I(115,54)] = {11,0x21C}, + [I(116,54)] = {11,0x25C}, + [I(117,54)] = {12,0xB5C}, + [I(118,54)] = {13,0x1DDC}, + [I(119,54)] = {13,0x1E1C}, + [I(120,54)] = {13,0x1E5C}, + [I(121,54)] = {13,0x1E9C}, + [I(122,54)] = {13,0x1EDC}, + [I(123,54)] = {21,0x1FFF9C}, + [I(124,54)] = {17,0x1FF1C}, + [I(125,54)] = {20,0xFFF5C}, + [I(126,54)] = {19,0x7FF5C}, + [I(127,54)] = {64,0}, + [I(128,54)] = {26,0x3FFF99C}, + [I(129,54)] = {28,0xFFFF49C}, + [I(130,54)] = {26,0x3FFF9DC}, + [I(131,54)] = {26,0x3FFFA1C}, + [I(132,54)] = {28,0xFFFF4DC}, + [I(133,54)] = {28,0xFFFF51C}, + [I(134,54)] = {28,0xFFFF55C}, + [I(135,54)] = {29,0x1FFFF65C}, + [I(136,54)] = {28,0xFFFF59C}, + [I(137,54)] = {29,0x1FFFF69C}, + [I(138,54)] = {29,0x1FFFF6DC}, + [I(139,54)] = {29,0x1FFFF71C}, + [I(140,54)] = {29,0x1FFFF75C}, + [I(141,54)] = {29,0x1FFFF79C}, + [I(142,54)] = {30,0x3FFFFADC}, + [I(143,54)] = {29,0x1FFFF7DC}, + [I(144,54)] = {30,0x3FFFFB1C}, + [I(145,54)] = {30,0x3FFFFB5C}, + [I(146,54)] = {28,0xFFFF5DC}, + [I(147,54)] = {29,0x1FFFF81C}, + [I(148,54)] = {30,0x3FFFFB9C}, + [I(149,54)] = {29,0x1FFFF85C}, + [I(150,54)] = {29,0x1FFFF89C}, + [I(151,54)] = {29,0x1FFFF8DC}, + [I(152,54)] = {29,0x1FFFF91C}, + [I(153,54)] = {27,0x7FFF71C}, + [I(154,54)] = {28,0xFFFF61C}, + [I(155,54)] = {29,0x1FFFF95C}, + [I(156,54)] = {28,0xFFFF65C}, + [I(157,54)] = {29,0x1FFFF99C}, + [I(158,54)] = {29,0x1FFFF9DC}, + [I(159,54)] = {30,0x3FFFFBDC}, + [I(160,54)] = {28,0xFFFF69C}, + [I(161,54)] = {27,0x7FFF75C}, + [I(162,54)] = {26,0x3FFFA5C}, + [I(163,54)] = {28,0xFFFF6DC}, + [I(164,54)] = {28,0xFFFF71C}, + [I(165,54)] = {29,0x1FFFFA1C}, + [I(166,54)] = {29,0x1FFFFA5C}, + [I(167,54)] = {27,0x7FFF79C}, + [I(168,54)] = {29,0x1FFFFA9C}, + [I(169,54)] = {28,0xFFFF75C}, + [I(170,54)] = {28,0xFFFF79C}, + [I(171,54)] = {30,0x3FFFFC1C}, + [I(172,54)] = {27,0x7FFF7DC}, + [I(173,54)] = {28,0xFFFF7DC}, + [I(174,54)] = {29,0x1FFFFADC}, + [I(175,54)] = {29,0x1FFFFB1C}, + [I(176,54)] = {27,0x7FFF81C}, + [I(177,54)] = {27,0x7FFF85C}, + [I(178,54)] = {28,0xFFFF81C}, + [I(179,54)] = {27,0x7FFF89C}, + [I(180,54)] = {29,0x1FFFFB5C}, + [I(181,54)] = {28,0xFFFF85C}, + [I(182,54)] = {29,0x1FFFFB9C}, + [I(183,54)] = {29,0x1FFFFBDC}, + [I(184,54)] = {26,0x3FFFA9C}, + [I(185,54)] = {28,0xFFFF89C}, + [I(186,54)] = {28,0xFFFF8DC}, + [I(187,54)] = {28,0xFFFF91C}, + [I(188,54)] = {29,0x1FFFFC1C}, + [I(189,54)] = {28,0xFFFF95C}, + [I(190,54)] = {28,0xFFFF99C}, + [I(191,54)] = {29,0x1FFFFC5C}, + [I(192,54)] = {X32,0xFFFFF81C}, + [I(193,54)] = {X32,0xFFFFF85C}, + [I(194,54)] = {26,0x3FFFADC}, + [I(195,54)] = {25,0x1FFFC5C}, + [I(196,54)] = {28,0xFFFF9DC}, + [I(197,54)] = {29,0x1FFFFC9C}, + [I(198,54)] = {28,0xFFFFA1C}, + [I(199,54)] = {31,0x7FFFFB1C}, + [I(200,54)] = {X32,0xFFFFF89C}, + [I(201,54)] = {X32,0xFFFFF8DC}, + [I(202,54)] = {X32,0xFFFFF91C}, + [I(203,54)] = {64,0}, + [I(204,54)] = {64,0}, + [I(205,54)] = {X32,0xFFFFF95C}, + [I(206,54)] = {30,0x3FFFFC5C}, + [I(207,54)] = {31,0x7FFFFB5C}, + [I(208,54)] = {25,0x1FFFC9C}, + [I(209,54)] = {27,0x7FFF8DC}, + [I(210,54)] = {X32,0xFFFFF99C}, + [I(211,54)] = {64,0}, + [I(212,54)] = {64,0}, + [I(213,54)] = {X32,0xFFFFF9DC}, + [I(214,54)] = {64,0}, + [I(215,54)] = {30,0x3FFFFC9C}, + [I(216,54)] = {27,0x7FFF91C}, + [I(217,54)] = {27,0x7FFF95C}, + [I(218,54)] = {X32,0xFFFFFA1C}, + [I(219,54)] = {X32,0xFFFFFA5C}, + [I(220,54)] = {64,0}, + [I(221,54)] = {64,0}, + [I(222,54)] = {64,0}, + [I(223,54)] = {64,0}, + [I(224,54)] = {26,0x3FFFB1C}, + [I(225,54)] = {30,0x3FFFFCDC}, + [I(226,54)] = {26,0x3FFFB5C}, + [I(227,54)] = {27,0x7FFF99C}, + [I(228,54)] = {28,0xFFFFA5C}, + [I(229,54)] = {27,0x7FFF9DC}, + [I(230,54)] = {27,0x7FFFA1C}, + [I(231,54)] = {29,0x1FFFFCDC}, + [I(232,54)] = {28,0xFFFFA9C}, + [I(233,54)] = {28,0xFFFFADC}, + [I(234,54)] = {31,0x7FFFFB9C}, + [I(235,54)] = {31,0x7FFFFBDC}, + [I(236,54)] = {30,0x3FFFFD1C}, + [I(237,54)] = {30,0x3FFFFD5C}, + [I(238,54)] = {X32,0xFFFFFA9C}, + [I(239,54)] = {29,0x1FFFFD1C}, + [I(240,54)] = {X32,0xFFFFFADC}, + [I(241,54)] = {64,0}, + [I(242,54)] = {X32,0xFFFFFB1C}, + [I(243,54)] = {X32,0xFFFFFB5C}, + [I(244,54)] = {64,0}, + [I(245,54)] = {64,0}, + [I(246,54)] = {64,0}, + [I(247,54)] = {64,0}, + [I(248,54)] = {64,0}, + [I(249,54)] = {64,0}, + [I(250,54)] = {64,0}, + [I(251,54)] = {64,0}, + [I(252,54)] = {64,0}, + [I(253,54)] = {64,0}, + [I(254,54)] = {64,0}, + [I(255,54)] = {X32,0xFFFFFB9C}, + [I(0,55)] = {19,0x7FE1D}, + [I(1,55)] = {29,0x1FFFF61D}, + [I(2,55)] = {64,0}, + [I(3,55)] = {64,0}, + [I(4,55)] = {64,0}, + [I(5,55)] = {64,0}, + [I(6,55)] = {64,0}, + [I(7,55)] = {64,0}, + [I(8,55)] = {64,0}, + [I(9,55)] = {30,0x3FFFFA9D}, + [I(10,55)] = {64,0}, + [I(11,55)] = {64,0}, + [I(12,55)] = {64,0}, + [I(13,55)] = {64,0}, + [I(14,55)] = {64,0}, + [I(15,55)] = {64,0}, + [I(16,55)] = {64,0}, + [I(17,55)] = {64,0}, + [I(18,55)] = {64,0}, + [I(19,55)] = {64,0}, + [I(20,55)] = {64,0}, + [I(21,55)] = {64,0}, + [I(22,55)] = {64,0}, + [I(23,55)] = {64,0}, + [I(24,55)] = {64,0}, + [I(25,55)] = {64,0}, + [I(26,55)] = {64,0}, + [I(27,55)] = {64,0}, + [I(28,55)] = {64,0}, + [I(29,55)] = {64,0}, + [I(30,55)] = {64,0}, + [I(31,55)] = {64,0}, + [I(32,55)] = {12,0x51D}, + [I(33,55)] = {16,0xFE1D}, + [I(34,55)] = {16,0xFE5D}, + [I(35,55)] = {18,0x3FE9D}, + [I(36,55)] = {19,0x7FE5D}, + [I(37,55)] = {12,0x55D}, + [I(38,55)] = {14,0x3E1D}, + [I(39,55)] = {17,0x1FE9D}, + [I(40,55)] = {16,0xFE9D}, + [I(41,55)] = {16,0xFEDD}, + [I(42,55)] = {14,0x3E5D}, + [I(43,55)] = {17,0x1FEDD}, + [I(44,55)] = {14,0x3E9D}, + [I(45,55)] = {12,0x59D}, + [I(46,55)] = {12,0x5DD}, + [I(47,55)] = {12,0x61D}, + [I(48,55)] = {11,0x1D}, + [I(49,55)] = {11,0x5D}, + [I(50,55)] = {11,0x9D}, + [I(51,55)] = {12,0x65D}, + [I(52,55)] = {12,0x69D}, + [I(53,55)] = {12,0x6DD}, + [I(54,55)] = {12,0x71D}, + [I(55,55)] = {12,0x75D}, + [I(56,55)] = {12,0x79D}, + [I(57,55)] = {12,0x7DD}, + [I(58,55)] = {13,0x171D}, + [I(59,55)] = {14,0x3EDD}, + [I(60,55)] = {21,0x1FFF1D}, + [I(61,55)] = {12,0x81D}, + [I(62,55)] = {18,0x3FEDD}, + [I(63,55)] = {16,0xFF1D}, + [I(64,55)] = {19,0x7FE9D}, + [I(65,55)] = {12,0x85D}, + [I(66,55)] = {13,0x175D}, + [I(67,55)] = {13,0x179D}, + [I(68,55)] = {13,0x17DD}, + [I(69,55)] = {13,0x181D}, + [I(70,55)] = {13,0x185D}, + [I(71,55)] = {13,0x189D}, + [I(72,55)] = {13,0x18DD}, + [I(73,55)] = {13,0x191D}, + [I(74,55)] = {13,0x195D}, + [I(75,55)] = {13,0x199D}, + [I(76,55)] = {13,0x19DD}, + [I(77,55)] = {13,0x1A1D}, + [I(78,55)] = {13,0x1A5D}, + [I(79,55)] = {13,0x1A9D}, + [I(80,55)] = {13,0x1ADD}, + [I(81,55)] = {13,0x1B1D}, + [I(82,55)] = {13,0x1B5D}, + [I(83,55)] = {13,0x1B9D}, + [I(84,55)] = {13,0x1BDD}, + [I(85,55)] = {13,0x1C1D}, + [I(86,55)] = {13,0x1C5D}, + [I(87,55)] = {13,0x1C9D}, + [I(88,55)] = {14,0x3F1D}, + [I(89,55)] = {13,0x1CDD}, + [I(90,55)] = {14,0x3F5D}, + [I(91,55)] = {19,0x7FEDD}, + [I(92,55)] = {25,0x1FFFC1D}, + [I(93,55)] = {19,0x7FF1D}, + [I(94,55)] = {20,0xFFF1D}, + [I(95,55)] = {12,0x89D}, + [I(96,55)] = {21,0x1FFF5D}, + [I(97,55)] = {11,0xDD}, + [I(98,55)] = {12,0x8DD}, + [I(99,55)] = {11,0x11D}, + [I(100,55)] = {12,0x91D}, + [I(101,55)] = {11,0x15D}, + [I(102,55)] = {12,0x95D}, + [I(103,55)] = {12,0x99D}, + [I(104,55)] = {12,0x9DD}, + [I(105,55)] = {11,0x19D}, + [I(106,55)] = {13,0x1D1D}, + [I(107,55)] = {13,0x1D5D}, + [I(108,55)] = {12,0xA1D}, + [I(109,55)] = {12,0xA5D}, + [I(110,55)] = {12,0xA9D}, + [I(111,55)] = {11,0x1DD}, + [I(112,55)] = {12,0xADD}, + [I(113,55)] = {13,0x1D9D}, + [I(114,55)] = {12,0xB1D}, + [I(115,55)] = {11,0x21D}, + [I(116,55)] = {11,0x25D}, + [I(117,55)] = {12,0xB5D}, + [I(118,55)] = {13,0x1DDD}, + [I(119,55)] = {13,0x1E1D}, + [I(120,55)] = {13,0x1E5D}, + [I(121,55)] = {13,0x1E9D}, + [I(122,55)] = {13,0x1EDD}, + [I(123,55)] = {21,0x1FFF9D}, + [I(124,55)] = {17,0x1FF1D}, + [I(125,55)] = {20,0xFFF5D}, + [I(126,55)] = {19,0x7FF5D}, + [I(127,55)] = {64,0}, + [I(128,55)] = {26,0x3FFF99D}, + [I(129,55)] = {28,0xFFFF49D}, + [I(130,55)] = {26,0x3FFF9DD}, + [I(131,55)] = {26,0x3FFFA1D}, + [I(132,55)] = {28,0xFFFF4DD}, + [I(133,55)] = {28,0xFFFF51D}, + [I(134,55)] = {28,0xFFFF55D}, + [I(135,55)] = {29,0x1FFFF65D}, + [I(136,55)] = {28,0xFFFF59D}, + [I(137,55)] = {29,0x1FFFF69D}, + [I(138,55)] = {29,0x1FFFF6DD}, + [I(139,55)] = {29,0x1FFFF71D}, + [I(140,55)] = {29,0x1FFFF75D}, + [I(141,55)] = {29,0x1FFFF79D}, + [I(142,55)] = {30,0x3FFFFADD}, + [I(143,55)] = {29,0x1FFFF7DD}, + [I(144,55)] = {30,0x3FFFFB1D}, + [I(145,55)] = {30,0x3FFFFB5D}, + [I(146,55)] = {28,0xFFFF5DD}, + [I(147,55)] = {29,0x1FFFF81D}, + [I(148,55)] = {30,0x3FFFFB9D}, + [I(149,55)] = {29,0x1FFFF85D}, + [I(150,55)] = {29,0x1FFFF89D}, + [I(151,55)] = {29,0x1FFFF8DD}, + [I(152,55)] = {29,0x1FFFF91D}, + [I(153,55)] = {27,0x7FFF71D}, + [I(154,55)] = {28,0xFFFF61D}, + [I(155,55)] = {29,0x1FFFF95D}, + [I(156,55)] = {28,0xFFFF65D}, + [I(157,55)] = {29,0x1FFFF99D}, + [I(158,55)] = {29,0x1FFFF9DD}, + [I(159,55)] = {30,0x3FFFFBDD}, + [I(160,55)] = {28,0xFFFF69D}, + [I(161,55)] = {27,0x7FFF75D}, + [I(162,55)] = {26,0x3FFFA5D}, + [I(163,55)] = {28,0xFFFF6DD}, + [I(164,55)] = {28,0xFFFF71D}, + [I(165,55)] = {29,0x1FFFFA1D}, + [I(166,55)] = {29,0x1FFFFA5D}, + [I(167,55)] = {27,0x7FFF79D}, + [I(168,55)] = {29,0x1FFFFA9D}, + [I(169,55)] = {28,0xFFFF75D}, + [I(170,55)] = {28,0xFFFF79D}, + [I(171,55)] = {30,0x3FFFFC1D}, + [I(172,55)] = {27,0x7FFF7DD}, + [I(173,55)] = {28,0xFFFF7DD}, + [I(174,55)] = {29,0x1FFFFADD}, + [I(175,55)] = {29,0x1FFFFB1D}, + [I(176,55)] = {27,0x7FFF81D}, + [I(177,55)] = {27,0x7FFF85D}, + [I(178,55)] = {28,0xFFFF81D}, + [I(179,55)] = {27,0x7FFF89D}, + [I(180,55)] = {29,0x1FFFFB5D}, + [I(181,55)] = {28,0xFFFF85D}, + [I(182,55)] = {29,0x1FFFFB9D}, + [I(183,55)] = {29,0x1FFFFBDD}, + [I(184,55)] = {26,0x3FFFA9D}, + [I(185,55)] = {28,0xFFFF89D}, + [I(186,55)] = {28,0xFFFF8DD}, + [I(187,55)] = {28,0xFFFF91D}, + [I(188,55)] = {29,0x1FFFFC1D}, + [I(189,55)] = {28,0xFFFF95D}, + [I(190,55)] = {28,0xFFFF99D}, + [I(191,55)] = {29,0x1FFFFC5D}, + [I(192,55)] = {X32,0xFFFFF81D}, + [I(193,55)] = {X32,0xFFFFF85D}, + [I(194,55)] = {26,0x3FFFADD}, + [I(195,55)] = {25,0x1FFFC5D}, + [I(196,55)] = {28,0xFFFF9DD}, + [I(197,55)] = {29,0x1FFFFC9D}, + [I(198,55)] = {28,0xFFFFA1D}, + [I(199,55)] = {31,0x7FFFFB1D}, + [I(200,55)] = {X32,0xFFFFF89D}, + [I(201,55)] = {X32,0xFFFFF8DD}, + [I(202,55)] = {X32,0xFFFFF91D}, + [I(203,55)] = {64,0}, + [I(204,55)] = {64,0}, + [I(205,55)] = {X32,0xFFFFF95D}, + [I(206,55)] = {30,0x3FFFFC5D}, + [I(207,55)] = {31,0x7FFFFB5D}, + [I(208,55)] = {25,0x1FFFC9D}, + [I(209,55)] = {27,0x7FFF8DD}, + [I(210,55)] = {X32,0xFFFFF99D}, + [I(211,55)] = {64,0}, + [I(212,55)] = {64,0}, + [I(213,55)] = {X32,0xFFFFF9DD}, + [I(214,55)] = {64,0}, + [I(215,55)] = {30,0x3FFFFC9D}, + [I(216,55)] = {27,0x7FFF91D}, + [I(217,55)] = {27,0x7FFF95D}, + [I(218,55)] = {X32,0xFFFFFA1D}, + [I(219,55)] = {X32,0xFFFFFA5D}, + [I(220,55)] = {64,0}, + [I(221,55)] = {64,0}, + [I(222,55)] = {64,0}, + [I(223,55)] = {64,0}, + [I(224,55)] = {26,0x3FFFB1D}, + [I(225,55)] = {30,0x3FFFFCDD}, + [I(226,55)] = {26,0x3FFFB5D}, + [I(227,55)] = {27,0x7FFF99D}, + [I(228,55)] = {28,0xFFFFA5D}, + [I(229,55)] = {27,0x7FFF9DD}, + [I(230,55)] = {27,0x7FFFA1D}, + [I(231,55)] = {29,0x1FFFFCDD}, + [I(232,55)] = {28,0xFFFFA9D}, + [I(233,55)] = {28,0xFFFFADD}, + [I(234,55)] = {31,0x7FFFFB9D}, + [I(235,55)] = {31,0x7FFFFBDD}, + [I(236,55)] = {30,0x3FFFFD1D}, + [I(237,55)] = {30,0x3FFFFD5D}, + [I(238,55)] = {X32,0xFFFFFA9D}, + [I(239,55)] = {29,0x1FFFFD1D}, + [I(240,55)] = {X32,0xFFFFFADD}, + [I(241,55)] = {64,0}, + [I(242,55)] = {X32,0xFFFFFB1D}, + [I(243,55)] = {X32,0xFFFFFB5D}, + [I(244,55)] = {64,0}, + [I(245,55)] = {64,0}, + [I(246,55)] = {64,0}, + [I(247,55)] = {64,0}, + [I(248,55)] = {64,0}, + [I(249,55)] = {64,0}, + [I(250,55)] = {64,0}, + [I(251,55)] = {64,0}, + [I(252,55)] = {64,0}, + [I(253,55)] = {64,0}, + [I(254,55)] = {64,0}, + [I(255,55)] = {X32,0xFFFFFB9D}, + [I(0,56)] = {19,0x7FE1E}, + [I(1,56)] = {29,0x1FFFF61E}, + [I(2,56)] = {64,0}, + [I(3,56)] = {64,0}, + [I(4,56)] = {64,0}, + [I(5,56)] = {64,0}, + [I(6,56)] = {64,0}, + [I(7,56)] = {64,0}, + [I(8,56)] = {64,0}, + [I(9,56)] = {30,0x3FFFFA9E}, + [I(10,56)] = {64,0}, + [I(11,56)] = {64,0}, + [I(12,56)] = {64,0}, + [I(13,56)] = {64,0}, + [I(14,56)] = {64,0}, + [I(15,56)] = {64,0}, + [I(16,56)] = {64,0}, + [I(17,56)] = {64,0}, + [I(18,56)] = {64,0}, + [I(19,56)] = {64,0}, + [I(20,56)] = {64,0}, + [I(21,56)] = {64,0}, + [I(22,56)] = {64,0}, + [I(23,56)] = {64,0}, + [I(24,56)] = {64,0}, + [I(25,56)] = {64,0}, + [I(26,56)] = {64,0}, + [I(27,56)] = {64,0}, + [I(28,56)] = {64,0}, + [I(29,56)] = {64,0}, + [I(30,56)] = {64,0}, + [I(31,56)] = {64,0}, + [I(32,56)] = {12,0x51E}, + [I(33,56)] = {16,0xFE1E}, + [I(34,56)] = {16,0xFE5E}, + [I(35,56)] = {18,0x3FE9E}, + [I(36,56)] = {19,0x7FE5E}, + [I(37,56)] = {12,0x55E}, + [I(38,56)] = {14,0x3E1E}, + [I(39,56)] = {17,0x1FE9E}, + [I(40,56)] = {16,0xFE9E}, + [I(41,56)] = {16,0xFEDE}, + [I(42,56)] = {14,0x3E5E}, + [I(43,56)] = {17,0x1FEDE}, + [I(44,56)] = {14,0x3E9E}, + [I(45,56)] = {12,0x59E}, + [I(46,56)] = {12,0x5DE}, + [I(47,56)] = {12,0x61E}, + [I(48,56)] = {11,0x1E}, + [I(49,56)] = {11,0x5E}, + [I(50,56)] = {11,0x9E}, + [I(51,56)] = {12,0x65E}, + [I(52,56)] = {12,0x69E}, + [I(53,56)] = {12,0x6DE}, + [I(54,56)] = {12,0x71E}, + [I(55,56)] = {12,0x75E}, + [I(56,56)] = {12,0x79E}, + [I(57,56)] = {12,0x7DE}, + [I(58,56)] = {13,0x171E}, + [I(59,56)] = {14,0x3EDE}, + [I(60,56)] = {21,0x1FFF1E}, + [I(61,56)] = {12,0x81E}, + [I(62,56)] = {18,0x3FEDE}, + [I(63,56)] = {16,0xFF1E}, + [I(64,56)] = {19,0x7FE9E}, + [I(65,56)] = {12,0x85E}, + [I(66,56)] = {13,0x175E}, + [I(67,56)] = {13,0x179E}, + [I(68,56)] = {13,0x17DE}, + [I(69,56)] = {13,0x181E}, + [I(70,56)] = {13,0x185E}, + [I(71,56)] = {13,0x189E}, + [I(72,56)] = {13,0x18DE}, + [I(73,56)] = {13,0x191E}, + [I(74,56)] = {13,0x195E}, + [I(75,56)] = {13,0x199E}, + [I(76,56)] = {13,0x19DE}, + [I(77,56)] = {13,0x1A1E}, + [I(78,56)] = {13,0x1A5E}, + [I(79,56)] = {13,0x1A9E}, + [I(80,56)] = {13,0x1ADE}, + [I(81,56)] = {13,0x1B1E}, + [I(82,56)] = {13,0x1B5E}, + [I(83,56)] = {13,0x1B9E}, + [I(84,56)] = {13,0x1BDE}, + [I(85,56)] = {13,0x1C1E}, + [I(86,56)] = {13,0x1C5E}, + [I(87,56)] = {13,0x1C9E}, + [I(88,56)] = {14,0x3F1E}, + [I(89,56)] = {13,0x1CDE}, + [I(90,56)] = {14,0x3F5E}, + [I(91,56)] = {19,0x7FEDE}, + [I(92,56)] = {25,0x1FFFC1E}, + [I(93,56)] = {19,0x7FF1E}, + [I(94,56)] = {20,0xFFF1E}, + [I(95,56)] = {12,0x89E}, + [I(96,56)] = {21,0x1FFF5E}, + [I(97,56)] = {11,0xDE}, + [I(98,56)] = {12,0x8DE}, + [I(99,56)] = {11,0x11E}, + [I(100,56)] = {12,0x91E}, + [I(101,56)] = {11,0x15E}, + [I(102,56)] = {12,0x95E}, + [I(103,56)] = {12,0x99E}, + [I(104,56)] = {12,0x9DE}, + [I(105,56)] = {11,0x19E}, + [I(106,56)] = {13,0x1D1E}, + [I(107,56)] = {13,0x1D5E}, + [I(108,56)] = {12,0xA1E}, + [I(109,56)] = {12,0xA5E}, + [I(110,56)] = {12,0xA9E}, + [I(111,56)] = {11,0x1DE}, + [I(112,56)] = {12,0xADE}, + [I(113,56)] = {13,0x1D9E}, + [I(114,56)] = {12,0xB1E}, + [I(115,56)] = {11,0x21E}, + [I(116,56)] = {11,0x25E}, + [I(117,56)] = {12,0xB5E}, + [I(118,56)] = {13,0x1DDE}, + [I(119,56)] = {13,0x1E1E}, + [I(120,56)] = {13,0x1E5E}, + [I(121,56)] = {13,0x1E9E}, + [I(122,56)] = {13,0x1EDE}, + [I(123,56)] = {21,0x1FFF9E}, + [I(124,56)] = {17,0x1FF1E}, + [I(125,56)] = {20,0xFFF5E}, + [I(126,56)] = {19,0x7FF5E}, + [I(127,56)] = {64,0}, + [I(128,56)] = {26,0x3FFF99E}, + [I(129,56)] = {28,0xFFFF49E}, + [I(130,56)] = {26,0x3FFF9DE}, + [I(131,56)] = {26,0x3FFFA1E}, + [I(132,56)] = {28,0xFFFF4DE}, + [I(133,56)] = {28,0xFFFF51E}, + [I(134,56)] = {28,0xFFFF55E}, + [I(135,56)] = {29,0x1FFFF65E}, + [I(136,56)] = {28,0xFFFF59E}, + [I(137,56)] = {29,0x1FFFF69E}, + [I(138,56)] = {29,0x1FFFF6DE}, + [I(139,56)] = {29,0x1FFFF71E}, + [I(140,56)] = {29,0x1FFFF75E}, + [I(141,56)] = {29,0x1FFFF79E}, + [I(142,56)] = {30,0x3FFFFADE}, + [I(143,56)] = {29,0x1FFFF7DE}, + [I(144,56)] = {30,0x3FFFFB1E}, + [I(145,56)] = {30,0x3FFFFB5E}, + [I(146,56)] = {28,0xFFFF5DE}, + [I(147,56)] = {29,0x1FFFF81E}, + [I(148,56)] = {30,0x3FFFFB9E}, + [I(149,56)] = {29,0x1FFFF85E}, + [I(150,56)] = {29,0x1FFFF89E}, + [I(151,56)] = {29,0x1FFFF8DE}, + [I(152,56)] = {29,0x1FFFF91E}, + [I(153,56)] = {27,0x7FFF71E}, + [I(154,56)] = {28,0xFFFF61E}, + [I(155,56)] = {29,0x1FFFF95E}, + [I(156,56)] = {28,0xFFFF65E}, + [I(157,56)] = {29,0x1FFFF99E}, + [I(158,56)] = {29,0x1FFFF9DE}, + [I(159,56)] = {30,0x3FFFFBDE}, + [I(160,56)] = {28,0xFFFF69E}, + [I(161,56)] = {27,0x7FFF75E}, + [I(162,56)] = {26,0x3FFFA5E}, + [I(163,56)] = {28,0xFFFF6DE}, + [I(164,56)] = {28,0xFFFF71E}, + [I(165,56)] = {29,0x1FFFFA1E}, + [I(166,56)] = {29,0x1FFFFA5E}, + [I(167,56)] = {27,0x7FFF79E}, + [I(168,56)] = {29,0x1FFFFA9E}, + [I(169,56)] = {28,0xFFFF75E}, + [I(170,56)] = {28,0xFFFF79E}, + [I(171,56)] = {30,0x3FFFFC1E}, + [I(172,56)] = {27,0x7FFF7DE}, + [I(173,56)] = {28,0xFFFF7DE}, + [I(174,56)] = {29,0x1FFFFADE}, + [I(175,56)] = {29,0x1FFFFB1E}, + [I(176,56)] = {27,0x7FFF81E}, + [I(177,56)] = {27,0x7FFF85E}, + [I(178,56)] = {28,0xFFFF81E}, + [I(179,56)] = {27,0x7FFF89E}, + [I(180,56)] = {29,0x1FFFFB5E}, + [I(181,56)] = {28,0xFFFF85E}, + [I(182,56)] = {29,0x1FFFFB9E}, + [I(183,56)] = {29,0x1FFFFBDE}, + [I(184,56)] = {26,0x3FFFA9E}, + [I(185,56)] = {28,0xFFFF89E}, + [I(186,56)] = {28,0xFFFF8DE}, + [I(187,56)] = {28,0xFFFF91E}, + [I(188,56)] = {29,0x1FFFFC1E}, + [I(189,56)] = {28,0xFFFF95E}, + [I(190,56)] = {28,0xFFFF99E}, + [I(191,56)] = {29,0x1FFFFC5E}, + [I(192,56)] = {X32,0xFFFFF81E}, + [I(193,56)] = {X32,0xFFFFF85E}, + [I(194,56)] = {26,0x3FFFADE}, + [I(195,56)] = {25,0x1FFFC5E}, + [I(196,56)] = {28,0xFFFF9DE}, + [I(197,56)] = {29,0x1FFFFC9E}, + [I(198,56)] = {28,0xFFFFA1E}, + [I(199,56)] = {31,0x7FFFFB1E}, + [I(200,56)] = {X32,0xFFFFF89E}, + [I(201,56)] = {X32,0xFFFFF8DE}, + [I(202,56)] = {X32,0xFFFFF91E}, + [I(203,56)] = {64,0}, + [I(204,56)] = {64,0}, + [I(205,56)] = {X32,0xFFFFF95E}, + [I(206,56)] = {30,0x3FFFFC5E}, + [I(207,56)] = {31,0x7FFFFB5E}, + [I(208,56)] = {25,0x1FFFC9E}, + [I(209,56)] = {27,0x7FFF8DE}, + [I(210,56)] = {X32,0xFFFFF99E}, + [I(211,56)] = {64,0}, + [I(212,56)] = {64,0}, + [I(213,56)] = {X32,0xFFFFF9DE}, + [I(214,56)] = {64,0}, + [I(215,56)] = {30,0x3FFFFC9E}, + [I(216,56)] = {27,0x7FFF91E}, + [I(217,56)] = {27,0x7FFF95E}, + [I(218,56)] = {X32,0xFFFFFA1E}, + [I(219,56)] = {X32,0xFFFFFA5E}, + [I(220,56)] = {64,0}, + [I(221,56)] = {64,0}, + [I(222,56)] = {64,0}, + [I(223,56)] = {64,0}, + [I(224,56)] = {26,0x3FFFB1E}, + [I(225,56)] = {30,0x3FFFFCDE}, + [I(226,56)] = {26,0x3FFFB5E}, + [I(227,56)] = {27,0x7FFF99E}, + [I(228,56)] = {28,0xFFFFA5E}, + [I(229,56)] = {27,0x7FFF9DE}, + [I(230,56)] = {27,0x7FFFA1E}, + [I(231,56)] = {29,0x1FFFFCDE}, + [I(232,56)] = {28,0xFFFFA9E}, + [I(233,56)] = {28,0xFFFFADE}, + [I(234,56)] = {31,0x7FFFFB9E}, + [I(235,56)] = {31,0x7FFFFBDE}, + [I(236,56)] = {30,0x3FFFFD1E}, + [I(237,56)] = {30,0x3FFFFD5E}, + [I(238,56)] = {X32,0xFFFFFA9E}, + [I(239,56)] = {29,0x1FFFFD1E}, + [I(240,56)] = {X32,0xFFFFFADE}, + [I(241,56)] = {64,0}, + [I(242,56)] = {X32,0xFFFFFB1E}, + [I(243,56)] = {X32,0xFFFFFB5E}, + [I(244,56)] = {64,0}, + [I(245,56)] = {64,0}, + [I(246,56)] = {64,0}, + [I(247,56)] = {64,0}, + [I(248,56)] = {64,0}, + [I(249,56)] = {64,0}, + [I(250,56)] = {64,0}, + [I(251,56)] = {64,0}, + [I(252,56)] = {64,0}, + [I(253,56)] = {64,0}, + [I(254,56)] = {64,0}, + [I(255,56)] = {X32,0xFFFFFB9E}, + [I(0,57)] = {19,0x7FE1F}, + [I(1,57)] = {29,0x1FFFF61F}, + [I(2,57)] = {64,0}, + [I(3,57)] = {64,0}, + [I(4,57)] = {64,0}, + [I(5,57)] = {64,0}, + [I(6,57)] = {64,0}, + [I(7,57)] = {64,0}, + [I(8,57)] = {64,0}, + [I(9,57)] = {30,0x3FFFFA9F}, + [I(10,57)] = {64,0}, + [I(11,57)] = {64,0}, + [I(12,57)] = {64,0}, + [I(13,57)] = {64,0}, + [I(14,57)] = {64,0}, + [I(15,57)] = {64,0}, + [I(16,57)] = {64,0}, + [I(17,57)] = {64,0}, + [I(18,57)] = {64,0}, + [I(19,57)] = {64,0}, + [I(20,57)] = {64,0}, + [I(21,57)] = {64,0}, + [I(22,57)] = {64,0}, + [I(23,57)] = {64,0}, + [I(24,57)] = {64,0}, + [I(25,57)] = {64,0}, + [I(26,57)] = {64,0}, + [I(27,57)] = {64,0}, + [I(28,57)] = {64,0}, + [I(29,57)] = {64,0}, + [I(30,57)] = {64,0}, + [I(31,57)] = {64,0}, + [I(32,57)] = {12,0x51F}, + [I(33,57)] = {16,0xFE1F}, + [I(34,57)] = {16,0xFE5F}, + [I(35,57)] = {18,0x3FE9F}, + [I(36,57)] = {19,0x7FE5F}, + [I(37,57)] = {12,0x55F}, + [I(38,57)] = {14,0x3E1F}, + [I(39,57)] = {17,0x1FE9F}, + [I(40,57)] = {16,0xFE9F}, + [I(41,57)] = {16,0xFEDF}, + [I(42,57)] = {14,0x3E5F}, + [I(43,57)] = {17,0x1FEDF}, + [I(44,57)] = {14,0x3E9F}, + [I(45,57)] = {12,0x59F}, + [I(46,57)] = {12,0x5DF}, + [I(47,57)] = {12,0x61F}, + [I(48,57)] = {11,0x1F}, + [I(49,57)] = {11,0x5F}, + [I(50,57)] = {11,0x9F}, + [I(51,57)] = {12,0x65F}, + [I(52,57)] = {12,0x69F}, + [I(53,57)] = {12,0x6DF}, + [I(54,57)] = {12,0x71F}, + [I(55,57)] = {12,0x75F}, + [I(56,57)] = {12,0x79F}, + [I(57,57)] = {12,0x7DF}, + [I(58,57)] = {13,0x171F}, + [I(59,57)] = {14,0x3EDF}, + [I(60,57)] = {21,0x1FFF1F}, + [I(61,57)] = {12,0x81F}, + [I(62,57)] = {18,0x3FEDF}, + [I(63,57)] = {16,0xFF1F}, + [I(64,57)] = {19,0x7FE9F}, + [I(65,57)] = {12,0x85F}, + [I(66,57)] = {13,0x175F}, + [I(67,57)] = {13,0x179F}, + [I(68,57)] = {13,0x17DF}, + [I(69,57)] = {13,0x181F}, + [I(70,57)] = {13,0x185F}, + [I(71,57)] = {13,0x189F}, + [I(72,57)] = {13,0x18DF}, + [I(73,57)] = {13,0x191F}, + [I(74,57)] = {13,0x195F}, + [I(75,57)] = {13,0x199F}, + [I(76,57)] = {13,0x19DF}, + [I(77,57)] = {13,0x1A1F}, + [I(78,57)] = {13,0x1A5F}, + [I(79,57)] = {13,0x1A9F}, + [I(80,57)] = {13,0x1ADF}, + [I(81,57)] = {13,0x1B1F}, + [I(82,57)] = {13,0x1B5F}, + [I(83,57)] = {13,0x1B9F}, + [I(84,57)] = {13,0x1BDF}, + [I(85,57)] = {13,0x1C1F}, + [I(86,57)] = {13,0x1C5F}, + [I(87,57)] = {13,0x1C9F}, + [I(88,57)] = {14,0x3F1F}, + [I(89,57)] = {13,0x1CDF}, + [I(90,57)] = {14,0x3F5F}, + [I(91,57)] = {19,0x7FEDF}, + [I(92,57)] = {25,0x1FFFC1F}, + [I(93,57)] = {19,0x7FF1F}, + [I(94,57)] = {20,0xFFF1F}, + [I(95,57)] = {12,0x89F}, + [I(96,57)] = {21,0x1FFF5F}, + [I(97,57)] = {11,0xDF}, + [I(98,57)] = {12,0x8DF}, + [I(99,57)] = {11,0x11F}, + [I(100,57)] = {12,0x91F}, + [I(101,57)] = {11,0x15F}, + [I(102,57)] = {12,0x95F}, + [I(103,57)] = {12,0x99F}, + [I(104,57)] = {12,0x9DF}, + [I(105,57)] = {11,0x19F}, + [I(106,57)] = {13,0x1D1F}, + [I(107,57)] = {13,0x1D5F}, + [I(108,57)] = {12,0xA1F}, + [I(109,57)] = {12,0xA5F}, + [I(110,57)] = {12,0xA9F}, + [I(111,57)] = {11,0x1DF}, + [I(112,57)] = {12,0xADF}, + [I(113,57)] = {13,0x1D9F}, + [I(114,57)] = {12,0xB1F}, + [I(115,57)] = {11,0x21F}, + [I(116,57)] = {11,0x25F}, + [I(117,57)] = {12,0xB5F}, + [I(118,57)] = {13,0x1DDF}, + [I(119,57)] = {13,0x1E1F}, + [I(120,57)] = {13,0x1E5F}, + [I(121,57)] = {13,0x1E9F}, + [I(122,57)] = {13,0x1EDF}, + [I(123,57)] = {21,0x1FFF9F}, + [I(124,57)] = {17,0x1FF1F}, + [I(125,57)] = {20,0xFFF5F}, + [I(126,57)] = {19,0x7FF5F}, + [I(127,57)] = {64,0}, + [I(128,57)] = {26,0x3FFF99F}, + [I(129,57)] = {28,0xFFFF49F}, + [I(130,57)] = {26,0x3FFF9DF}, + [I(131,57)] = {26,0x3FFFA1F}, + [I(132,57)] = {28,0xFFFF4DF}, + [I(133,57)] = {28,0xFFFF51F}, + [I(134,57)] = {28,0xFFFF55F}, + [I(135,57)] = {29,0x1FFFF65F}, + [I(136,57)] = {28,0xFFFF59F}, + [I(137,57)] = {29,0x1FFFF69F}, + [I(138,57)] = {29,0x1FFFF6DF}, + [I(139,57)] = {29,0x1FFFF71F}, + [I(140,57)] = {29,0x1FFFF75F}, + [I(141,57)] = {29,0x1FFFF79F}, + [I(142,57)] = {30,0x3FFFFADF}, + [I(143,57)] = {29,0x1FFFF7DF}, + [I(144,57)] = {30,0x3FFFFB1F}, + [I(145,57)] = {30,0x3FFFFB5F}, + [I(146,57)] = {28,0xFFFF5DF}, + [I(147,57)] = {29,0x1FFFF81F}, + [I(148,57)] = {30,0x3FFFFB9F}, + [I(149,57)] = {29,0x1FFFF85F}, + [I(150,57)] = {29,0x1FFFF89F}, + [I(151,57)] = {29,0x1FFFF8DF}, + [I(152,57)] = {29,0x1FFFF91F}, + [I(153,57)] = {27,0x7FFF71F}, + [I(154,57)] = {28,0xFFFF61F}, + [I(155,57)] = {29,0x1FFFF95F}, + [I(156,57)] = {28,0xFFFF65F}, + [I(157,57)] = {29,0x1FFFF99F}, + [I(158,57)] = {29,0x1FFFF9DF}, + [I(159,57)] = {30,0x3FFFFBDF}, + [I(160,57)] = {28,0xFFFF69F}, + [I(161,57)] = {27,0x7FFF75F}, + [I(162,57)] = {26,0x3FFFA5F}, + [I(163,57)] = {28,0xFFFF6DF}, + [I(164,57)] = {28,0xFFFF71F}, + [I(165,57)] = {29,0x1FFFFA1F}, + [I(166,57)] = {29,0x1FFFFA5F}, + [I(167,57)] = {27,0x7FFF79F}, + [I(168,57)] = {29,0x1FFFFA9F}, + [I(169,57)] = {28,0xFFFF75F}, + [I(170,57)] = {28,0xFFFF79F}, + [I(171,57)] = {30,0x3FFFFC1F}, + [I(172,57)] = {27,0x7FFF7DF}, + [I(173,57)] = {28,0xFFFF7DF}, + [I(174,57)] = {29,0x1FFFFADF}, + [I(175,57)] = {29,0x1FFFFB1F}, + [I(176,57)] = {27,0x7FFF81F}, + [I(177,57)] = {27,0x7FFF85F}, + [I(178,57)] = {28,0xFFFF81F}, + [I(179,57)] = {27,0x7FFF89F}, + [I(180,57)] = {29,0x1FFFFB5F}, + [I(181,57)] = {28,0xFFFF85F}, + [I(182,57)] = {29,0x1FFFFB9F}, + [I(183,57)] = {29,0x1FFFFBDF}, + [I(184,57)] = {26,0x3FFFA9F}, + [I(185,57)] = {28,0xFFFF89F}, + [I(186,57)] = {28,0xFFFF8DF}, + [I(187,57)] = {28,0xFFFF91F}, + [I(188,57)] = {29,0x1FFFFC1F}, + [I(189,57)] = {28,0xFFFF95F}, + [I(190,57)] = {28,0xFFFF99F}, + [I(191,57)] = {29,0x1FFFFC5F}, + [I(192,57)] = {X32,0xFFFFF81F}, + [I(193,57)] = {X32,0xFFFFF85F}, + [I(194,57)] = {26,0x3FFFADF}, + [I(195,57)] = {25,0x1FFFC5F}, + [I(196,57)] = {28,0xFFFF9DF}, + [I(197,57)] = {29,0x1FFFFC9F}, + [I(198,57)] = {28,0xFFFFA1F}, + [I(199,57)] = {31,0x7FFFFB1F}, + [I(200,57)] = {X32,0xFFFFF89F}, + [I(201,57)] = {X32,0xFFFFF8DF}, + [I(202,57)] = {X32,0xFFFFF91F}, + [I(203,57)] = {64,0}, + [I(204,57)] = {64,0}, + [I(205,57)] = {X32,0xFFFFF95F}, + [I(206,57)] = {30,0x3FFFFC5F}, + [I(207,57)] = {31,0x7FFFFB5F}, + [I(208,57)] = {25,0x1FFFC9F}, + [I(209,57)] = {27,0x7FFF8DF}, + [I(210,57)] = {X32,0xFFFFF99F}, + [I(211,57)] = {64,0}, + [I(212,57)] = {64,0}, + [I(213,57)] = {X32,0xFFFFF9DF}, + [I(214,57)] = {64,0}, + [I(215,57)] = {30,0x3FFFFC9F}, + [I(216,57)] = {27,0x7FFF91F}, + [I(217,57)] = {27,0x7FFF95F}, + [I(218,57)] = {X32,0xFFFFFA1F}, + [I(219,57)] = {X32,0xFFFFFA5F}, + [I(220,57)] = {64,0}, + [I(221,57)] = {64,0}, + [I(222,57)] = {64,0}, + [I(223,57)] = {64,0}, + [I(224,57)] = {26,0x3FFFB1F}, + [I(225,57)] = {30,0x3FFFFCDF}, + [I(226,57)] = {26,0x3FFFB5F}, + [I(227,57)] = {27,0x7FFF99F}, + [I(228,57)] = {28,0xFFFFA5F}, + [I(229,57)] = {27,0x7FFF9DF}, + [I(230,57)] = {27,0x7FFFA1F}, + [I(231,57)] = {29,0x1FFFFCDF}, + [I(232,57)] = {28,0xFFFFA9F}, + [I(233,57)] = {28,0xFFFFADF}, + [I(234,57)] = {31,0x7FFFFB9F}, + [I(235,57)] = {31,0x7FFFFBDF}, + [I(236,57)] = {30,0x3FFFFD1F}, + [I(237,57)] = {30,0x3FFFFD5F}, + [I(238,57)] = {X32,0xFFFFFA9F}, + [I(239,57)] = {29,0x1FFFFD1F}, + [I(240,57)] = {X32,0xFFFFFADF}, + [I(241,57)] = {64,0}, + [I(242,57)] = {X32,0xFFFFFB1F}, + [I(243,57)] = {X32,0xFFFFFB5F}, + [I(244,57)] = {64,0}, + [I(245,57)] = {64,0}, + [I(246,57)] = {64,0}, + [I(247,57)] = {64,0}, + [I(248,57)] = {64,0}, + [I(249,57)] = {64,0}, + [I(250,57)] = {64,0}, + [I(251,57)] = {64,0}, + [I(252,57)] = {64,0}, + [I(253,57)] = {64,0}, + [I(254,57)] = {64,0}, + [I(255,57)] = {X32,0xFFFFFB9F}, + [I(0,58)] = {20,0xFFC5C}, + [I(1,58)] = {30,0x3FFFEC5C}, + [I(2,58)] = {64,0}, + [I(3,58)] = {64,0}, + [I(4,58)] = {64,0}, + [I(5,58)] = {64,0}, + [I(6,58)] = {64,0}, + [I(7,58)] = {64,0}, + [I(8,58)] = {64,0}, + [I(9,58)] = {31,0x7FFFF55C}, + [I(10,58)] = {64,0}, + [I(11,58)] = {64,0}, + [I(12,58)] = {64,0}, + [I(13,58)] = {64,0}, + [I(14,58)] = {64,0}, + [I(15,58)] = {64,0}, + [I(16,58)] = {64,0}, + [I(17,58)] = {64,0}, + [I(18,58)] = {64,0}, + [I(19,58)] = {64,0}, + [I(20,58)] = {64,0}, + [I(21,58)] = {64,0}, + [I(22,58)] = {64,0}, + [I(23,58)] = {64,0}, + [I(24,58)] = {64,0}, + [I(25,58)] = {64,0}, + [I(26,58)] = {64,0}, + [I(27,58)] = {64,0}, + [I(28,58)] = {64,0}, + [I(29,58)] = {64,0}, + [I(30,58)] = {64,0}, + [I(31,58)] = {64,0}, + [I(32,58)] = {13,0xA5C}, + [I(33,58)] = {17,0x1FC5C}, + [I(34,58)] = {17,0x1FCDC}, + [I(35,58)] = {19,0x7FD5C}, + [I(36,58)] = {20,0xFFCDC}, + [I(37,58)] = {13,0xADC}, + [I(38,58)] = {15,0x7C5C}, + [I(39,58)] = {18,0x3FD5C}, + [I(40,58)] = {17,0x1FD5C}, + [I(41,58)] = {17,0x1FDDC}, + [I(42,58)] = {15,0x7CDC}, + [I(43,58)] = {18,0x3FDDC}, + [I(44,58)] = {15,0x7D5C}, + [I(45,58)] = {13,0xB5C}, + [I(46,58)] = {13,0xBDC}, + [I(47,58)] = {13,0xC5C}, + [I(48,58)] = {12,0x5C}, + [I(49,58)] = {12,0xDC}, + [I(50,58)] = {12,0x15C}, + [I(51,58)] = {13,0xCDC}, + [I(52,58)] = {13,0xD5C}, + [I(53,58)] = {13,0xDDC}, + [I(54,58)] = {13,0xE5C}, + [I(55,58)] = {13,0xEDC}, + [I(56,58)] = {13,0xF5C}, + [I(57,58)] = {13,0xFDC}, + [I(58,58)] = {14,0x2E5C}, + [I(59,58)] = {15,0x7DDC}, + [I(60,58)] = {22,0x3FFE5C}, + [I(61,58)] = {13,0x105C}, + [I(62,58)] = {19,0x7FDDC}, + [I(63,58)] = {17,0x1FE5C}, + [I(64,58)] = {20,0xFFD5C}, + [I(65,58)] = {13,0x10DC}, + [I(66,58)] = {14,0x2EDC}, + [I(67,58)] = {14,0x2F5C}, + [I(68,58)] = {14,0x2FDC}, + [I(69,58)] = {14,0x305C}, + [I(70,58)] = {14,0x30DC}, + [I(71,58)] = {14,0x315C}, + [I(72,58)] = {14,0x31DC}, + [I(73,58)] = {14,0x325C}, + [I(74,58)] = {14,0x32DC}, + [I(75,58)] = {14,0x335C}, + [I(76,58)] = {14,0x33DC}, + [I(77,58)] = {14,0x345C}, + [I(78,58)] = {14,0x34DC}, + [I(79,58)] = {14,0x355C}, + [I(80,58)] = {14,0x35DC}, + [I(81,58)] = {14,0x365C}, + [I(82,58)] = {14,0x36DC}, + [I(83,58)] = {14,0x375C}, + [I(84,58)] = {14,0x37DC}, + [I(85,58)] = {14,0x385C}, + [I(86,58)] = {14,0x38DC}, + [I(87,58)] = {14,0x395C}, + [I(88,58)] = {15,0x7E5C}, + [I(89,58)] = {14,0x39DC}, + [I(90,58)] = {15,0x7EDC}, + [I(91,58)] = {20,0xFFDDC}, + [I(92,58)] = {26,0x3FFF85C}, + [I(93,58)] = {20,0xFFE5C}, + [I(94,58)] = {21,0x1FFE5C}, + [I(95,58)] = {13,0x115C}, + [I(96,58)] = {22,0x3FFEDC}, + [I(97,58)] = {12,0x1DC}, + [I(98,58)] = {13,0x11DC}, + [I(99,58)] = {12,0x25C}, + [I(100,58)] = {13,0x125C}, + [I(101,58)] = {12,0x2DC}, + [I(102,58)] = {13,0x12DC}, + [I(103,58)] = {13,0x135C}, + [I(104,58)] = {13,0x13DC}, + [I(105,58)] = {12,0x35C}, + [I(106,58)] = {14,0x3A5C}, + [I(107,58)] = {14,0x3ADC}, + [I(108,58)] = {13,0x145C}, + [I(109,58)] = {13,0x14DC}, + [I(110,58)] = {13,0x155C}, + [I(111,58)] = {12,0x3DC}, + [I(112,58)] = {13,0x15DC}, + [I(113,58)] = {14,0x3B5C}, + [I(114,58)] = {13,0x165C}, + [I(115,58)] = {12,0x45C}, + [I(116,58)] = {12,0x4DC}, + [I(117,58)] = {13,0x16DC}, + [I(118,58)] = {14,0x3BDC}, + [I(119,58)] = {14,0x3C5C}, + [I(120,58)] = {14,0x3CDC}, + [I(121,58)] = {14,0x3D5C}, + [I(122,58)] = {14,0x3DDC}, + [I(123,58)] = {22,0x3FFF5C}, + [I(124,58)] = {18,0x3FE5C}, + [I(125,58)] = {21,0x1FFEDC}, + [I(126,58)] = {20,0xFFEDC}, + [I(127,58)] = {64,0}, + [I(128,58)] = {27,0x7FFF35C}, + [I(129,58)] = {29,0x1FFFE95C}, + [I(130,58)] = {27,0x7FFF3DC}, + [I(131,58)] = {27,0x7FFF45C}, + [I(132,58)] = {29,0x1FFFE9DC}, + [I(133,58)] = {29,0x1FFFEA5C}, + [I(134,58)] = {29,0x1FFFEADC}, + [I(135,58)] = {30,0x3FFFECDC}, + [I(136,58)] = {29,0x1FFFEB5C}, + [I(137,58)] = {30,0x3FFFED5C}, + [I(138,58)] = {30,0x3FFFEDDC}, + [I(139,58)] = {30,0x3FFFEE5C}, + [I(140,58)] = {30,0x3FFFEEDC}, + [I(141,58)] = {30,0x3FFFEF5C}, + [I(142,58)] = {31,0x7FFFF5DC}, + [I(143,58)] = {30,0x3FFFEFDC}, + [I(144,58)] = {31,0x7FFFF65C}, + [I(145,58)] = {31,0x7FFFF6DC}, + [I(146,58)] = {29,0x1FFFEBDC}, + [I(147,58)] = {30,0x3FFFF05C}, + [I(148,58)] = {31,0x7FFFF75C}, + [I(149,58)] = {30,0x3FFFF0DC}, + [I(150,58)] = {30,0x3FFFF15C}, + [I(151,58)] = {30,0x3FFFF1DC}, + [I(152,58)] = {30,0x3FFFF25C}, + [I(153,58)] = {28,0xFFFEE5C}, + [I(154,58)] = {29,0x1FFFEC5C}, + [I(155,58)] = {30,0x3FFFF2DC}, + [I(156,58)] = {29,0x1FFFECDC}, + [I(157,58)] = {30,0x3FFFF35C}, + [I(158,58)] = {30,0x3FFFF3DC}, + [I(159,58)] = {31,0x7FFFF7DC}, + [I(160,58)] = {29,0x1FFFED5C}, + [I(161,58)] = {28,0xFFFEEDC}, + [I(162,58)] = {27,0x7FFF4DC}, + [I(163,58)] = {29,0x1FFFEDDC}, + [I(164,58)] = {29,0x1FFFEE5C}, + [I(165,58)] = {30,0x3FFFF45C}, + [I(166,58)] = {30,0x3FFFF4DC}, + [I(167,58)] = {28,0xFFFEF5C}, + [I(168,58)] = {30,0x3FFFF55C}, + [I(169,58)] = {29,0x1FFFEEDC}, + [I(170,58)] = {29,0x1FFFEF5C}, + [I(171,58)] = {31,0x7FFFF85C}, + [I(172,58)] = {28,0xFFFEFDC}, + [I(173,58)] = {29,0x1FFFEFDC}, + [I(174,58)] = {30,0x3FFFF5DC}, + [I(175,58)] = {30,0x3FFFF65C}, + [I(176,58)] = {28,0xFFFF05C}, + [I(177,58)] = {28,0xFFFF0DC}, + [I(178,58)] = {29,0x1FFFF05C}, + [I(179,58)] = {28,0xFFFF15C}, + [I(180,58)] = {30,0x3FFFF6DC}, + [I(181,58)] = {29,0x1FFFF0DC}, + [I(182,58)] = {30,0x3FFFF75C}, + [I(183,58)] = {30,0x3FFFF7DC}, + [I(184,58)] = {27,0x7FFF55C}, + [I(185,58)] = {29,0x1FFFF15C}, + [I(186,58)] = {29,0x1FFFF1DC}, + [I(187,58)] = {29,0x1FFFF25C}, + [I(188,58)] = {30,0x3FFFF85C}, + [I(189,58)] = {29,0x1FFFF2DC}, + [I(190,58)] = {29,0x1FFFF35C}, + [I(191,58)] = {30,0x3FFFF8DC}, + [I(192,58)] = {64,0}, + [I(193,58)] = {64,0}, + [I(194,58)] = {27,0x7FFF5DC}, + [I(195,58)] = {26,0x3FFF8DC}, + [I(196,58)] = {29,0x1FFFF3DC}, + [I(197,58)] = {30,0x3FFFF95C}, + [I(198,58)] = {29,0x1FFFF45C}, + [I(199,58)] = {X32,0xFFFFF65C}, + [I(200,58)] = {64,0}, + [I(201,58)] = {64,0}, + [I(202,58)] = {64,0}, + [I(203,58)] = {64,0}, + [I(204,58)] = {64,0}, + [I(205,58)] = {64,0}, + [I(206,58)] = {31,0x7FFFF8DC}, + [I(207,58)] = {X32,0xFFFFF6DC}, + [I(208,58)] = {26,0x3FFF95C}, + [I(209,58)] = {28,0xFFFF1DC}, + [I(210,58)] = {64,0}, + [I(211,58)] = {64,0}, + [I(212,58)] = {64,0}, + [I(213,58)] = {64,0}, + [I(214,58)] = {64,0}, + [I(215,58)] = {31,0x7FFFF95C}, + [I(216,58)] = {28,0xFFFF25C}, + [I(217,58)] = {28,0xFFFF2DC}, + [I(218,58)] = {64,0}, + [I(219,58)] = {64,0}, + [I(220,58)] = {64,0}, + [I(221,58)] = {64,0}, + [I(222,58)] = {64,0}, + [I(223,58)] = {64,0}, + [I(224,58)] = {27,0x7FFF65C}, + [I(225,58)] = {31,0x7FFFF9DC}, + [I(226,58)] = {27,0x7FFF6DC}, + [I(227,58)] = {28,0xFFFF35C}, + [I(228,58)] = {29,0x1FFFF4DC}, + [I(229,58)] = {28,0xFFFF3DC}, + [I(230,58)] = {28,0xFFFF45C}, + [I(231,58)] = {30,0x3FFFF9DC}, + [I(232,58)] = {29,0x1FFFF55C}, + [I(233,58)] = {29,0x1FFFF5DC}, + [I(234,58)] = {X32,0xFFFFF75C}, + [I(235,58)] = {X32,0xFFFFF7DC}, + [I(236,58)] = {31,0x7FFFFA5C}, + [I(237,58)] = {31,0x7FFFFADC}, + [I(238,58)] = {64,0}, + [I(239,58)] = {30,0x3FFFFA5C}, + [I(240,58)] = {64,0}, + [I(241,58)] = {64,0}, + [I(242,58)] = {64,0}, + [I(243,58)] = {64,0}, + [I(244,58)] = {64,0}, + [I(245,58)] = {64,0}, + [I(246,58)] = {64,0}, + [I(247,58)] = {64,0}, + [I(248,58)] = {64,0}, + [I(249,58)] = {64,0}, + [I(250,58)] = {64,0}, + [I(251,58)] = {64,0}, + [I(252,58)] = {64,0}, + [I(253,58)] = {64,0}, + [I(254,58)] = {64,0}, + [I(255,58)] = {64,0}, + [I(0,59)] = {21,0x1FF8FB}, + [I(1,59)] = {31,0x7FFFD8FB}, + [I(2,59)] = {64,0}, + [I(3,59)] = {64,0}, + [I(4,59)] = {64,0}, + [I(5,59)] = {64,0}, + [I(6,59)] = {64,0}, + [I(7,59)] = {64,0}, + [I(8,59)] = {64,0}, + [I(9,59)] = {X32,0xFFFFEAFB}, + [I(10,59)] = {64,0}, + [I(11,59)] = {64,0}, + [I(12,59)] = {64,0}, + [I(13,59)] = {64,0}, + [I(14,59)] = {64,0}, + [I(15,59)] = {64,0}, + [I(16,59)] = {64,0}, + [I(17,59)] = {64,0}, + [I(18,59)] = {64,0}, + [I(19,59)] = {64,0}, + [I(20,59)] = {64,0}, + [I(21,59)] = {64,0}, + [I(22,59)] = {64,0}, + [I(23,59)] = {64,0}, + [I(24,59)] = {64,0}, + [I(25,59)] = {64,0}, + [I(26,59)] = {64,0}, + [I(27,59)] = {64,0}, + [I(28,59)] = {64,0}, + [I(29,59)] = {64,0}, + [I(30,59)] = {64,0}, + [I(31,59)] = {64,0}, + [I(32,59)] = {14,0x14FB}, + [I(33,59)] = {18,0x3F8FB}, + [I(34,59)] = {18,0x3F9FB}, + [I(35,59)] = {20,0xFFAFB}, + [I(36,59)] = {21,0x1FF9FB}, + [I(37,59)] = {14,0x15FB}, + [I(38,59)] = {16,0xF8FB}, + [I(39,59)] = {19,0x7FAFB}, + [I(40,59)] = {18,0x3FAFB}, + [I(41,59)] = {18,0x3FBFB}, + [I(42,59)] = {16,0xF9FB}, + [I(43,59)] = {19,0x7FBFB}, + [I(44,59)] = {16,0xFAFB}, + [I(45,59)] = {14,0x16FB}, + [I(46,59)] = {14,0x17FB}, + [I(47,59)] = {14,0x18FB}, + [I(48,59)] = {13,0xFB}, + [I(49,59)] = {13,0x1FB}, + [I(50,59)] = {13,0x2FB}, + [I(51,59)] = {14,0x19FB}, + [I(52,59)] = {14,0x1AFB}, + [I(53,59)] = {14,0x1BFB}, + [I(54,59)] = {14,0x1CFB}, + [I(55,59)] = {14,0x1DFB}, + [I(56,59)] = {14,0x1EFB}, + [I(57,59)] = {14,0x1FFB}, + [I(58,59)] = {15,0x5CFB}, + [I(59,59)] = {16,0xFBFB}, + [I(60,59)] = {23,0x7FFCFB}, + [I(61,59)] = {14,0x20FB}, + [I(62,59)] = {20,0xFFBFB}, + [I(63,59)] = {18,0x3FCFB}, + [I(64,59)] = {21,0x1FFAFB}, + [I(65,59)] = {14,0x21FB}, + [I(66,59)] = {15,0x5DFB}, + [I(67,59)] = {15,0x5EFB}, + [I(68,59)] = {15,0x5FFB}, + [I(69,59)] = {15,0x60FB}, + [I(70,59)] = {15,0x61FB}, + [I(71,59)] = {15,0x62FB}, + [I(72,59)] = {15,0x63FB}, + [I(73,59)] = {15,0x64FB}, + [I(74,59)] = {15,0x65FB}, + [I(75,59)] = {15,0x66FB}, + [I(76,59)] = {15,0x67FB}, + [I(77,59)] = {15,0x68FB}, + [I(78,59)] = {15,0x69FB}, + [I(79,59)] = {15,0x6AFB}, + [I(80,59)] = {15,0x6BFB}, + [I(81,59)] = {15,0x6CFB}, + [I(82,59)] = {15,0x6DFB}, + [I(83,59)] = {15,0x6EFB}, + [I(84,59)] = {15,0x6FFB}, + [I(85,59)] = {15,0x70FB}, + [I(86,59)] = {15,0x71FB}, + [I(87,59)] = {15,0x72FB}, + [I(88,59)] = {16,0xFCFB}, + [I(89,59)] = {15,0x73FB}, + [I(90,59)] = {16,0xFDFB}, + [I(91,59)] = {21,0x1FFBFB}, + [I(92,59)] = {27,0x7FFF0FB}, + [I(93,59)] = {21,0x1FFCFB}, + [I(94,59)] = {22,0x3FFCFB}, + [I(95,59)] = {14,0x22FB}, + [I(96,59)] = {23,0x7FFDFB}, + [I(97,59)] = {13,0x3FB}, + [I(98,59)] = {14,0x23FB}, + [I(99,59)] = {13,0x4FB}, + [I(100,59)] = {14,0x24FB}, + [I(101,59)] = {13,0x5FB}, + [I(102,59)] = {14,0x25FB}, + [I(103,59)] = {14,0x26FB}, + [I(104,59)] = {14,0x27FB}, + [I(105,59)] = {13,0x6FB}, + [I(106,59)] = {15,0x74FB}, + [I(107,59)] = {15,0x75FB}, + [I(108,59)] = {14,0x28FB}, + [I(109,59)] = {14,0x29FB}, + [I(110,59)] = {14,0x2AFB}, + [I(111,59)] = {13,0x7FB}, + [I(112,59)] = {14,0x2BFB}, + [I(113,59)] = {15,0x76FB}, + [I(114,59)] = {14,0x2CFB}, + [I(115,59)] = {13,0x8FB}, + [I(116,59)] = {13,0x9FB}, + [I(117,59)] = {14,0x2DFB}, + [I(118,59)] = {15,0x77FB}, + [I(119,59)] = {15,0x78FB}, + [I(120,59)] = {15,0x79FB}, + [I(121,59)] = {15,0x7AFB}, + [I(122,59)] = {15,0x7BFB}, + [I(123,59)] = {23,0x7FFEFB}, + [I(124,59)] = {19,0x7FCFB}, + [I(125,59)] = {22,0x3FFDFB}, + [I(126,59)] = {21,0x1FFDFB}, + [I(127,59)] = {64,0}, + [I(128,59)] = {28,0xFFFE6FB}, + [I(129,59)] = {30,0x3FFFD2FB}, + [I(130,59)] = {28,0xFFFE7FB}, + [I(131,59)] = {28,0xFFFE8FB}, + [I(132,59)] = {30,0x3FFFD3FB}, + [I(133,59)] = {30,0x3FFFD4FB}, + [I(134,59)] = {30,0x3FFFD5FB}, + [I(135,59)] = {31,0x7FFFD9FB}, + [I(136,59)] = {30,0x3FFFD6FB}, + [I(137,59)] = {31,0x7FFFDAFB}, + [I(138,59)] = {31,0x7FFFDBFB}, + [I(139,59)] = {31,0x7FFFDCFB}, + [I(140,59)] = {31,0x7FFFDDFB}, + [I(141,59)] = {31,0x7FFFDEFB}, + [I(142,59)] = {X32,0xFFFFEBFB}, + [I(143,59)] = {31,0x7FFFDFFB}, + [I(144,59)] = {X32,0xFFFFECFB}, + [I(145,59)] = {X32,0xFFFFEDFB}, + [I(146,59)] = {30,0x3FFFD7FB}, + [I(147,59)] = {31,0x7FFFE0FB}, + [I(148,59)] = {X32,0xFFFFEEFB}, + [I(149,59)] = {31,0x7FFFE1FB}, + [I(150,59)] = {31,0x7FFFE2FB}, + [I(151,59)] = {31,0x7FFFE3FB}, + [I(152,59)] = {31,0x7FFFE4FB}, + [I(153,59)] = {29,0x1FFFDCFB}, + [I(154,59)] = {30,0x3FFFD8FB}, + [I(155,59)] = {31,0x7FFFE5FB}, + [I(156,59)] = {30,0x3FFFD9FB}, + [I(157,59)] = {31,0x7FFFE6FB}, + [I(158,59)] = {31,0x7FFFE7FB}, + [I(159,59)] = {X32,0xFFFFEFFB}, + [I(160,59)] = {30,0x3FFFDAFB}, + [I(161,59)] = {29,0x1FFFDDFB}, + [I(162,59)] = {28,0xFFFE9FB}, + [I(163,59)] = {30,0x3FFFDBFB}, + [I(164,59)] = {30,0x3FFFDCFB}, + [I(165,59)] = {31,0x7FFFE8FB}, + [I(166,59)] = {31,0x7FFFE9FB}, + [I(167,59)] = {29,0x1FFFDEFB}, + [I(168,59)] = {31,0x7FFFEAFB}, + [I(169,59)] = {30,0x3FFFDDFB}, + [I(170,59)] = {30,0x3FFFDEFB}, + [I(171,59)] = {X32,0xFFFFF0FB}, + [I(172,59)] = {29,0x1FFFDFFB}, + [I(173,59)] = {30,0x3FFFDFFB}, + [I(174,59)] = {31,0x7FFFEBFB}, + [I(175,59)] = {31,0x7FFFECFB}, + [I(176,59)] = {29,0x1FFFE0FB}, + [I(177,59)] = {29,0x1FFFE1FB}, + [I(178,59)] = {30,0x3FFFE0FB}, + [I(179,59)] = {29,0x1FFFE2FB}, + [I(180,59)] = {31,0x7FFFEDFB}, + [I(181,59)] = {30,0x3FFFE1FB}, + [I(182,59)] = {31,0x7FFFEEFB}, + [I(183,59)] = {31,0x7FFFEFFB}, + [I(184,59)] = {28,0xFFFEAFB}, + [I(185,59)] = {30,0x3FFFE2FB}, + [I(186,59)] = {30,0x3FFFE3FB}, + [I(187,59)] = {30,0x3FFFE4FB}, + [I(188,59)] = {31,0x7FFFF0FB}, + [I(189,59)] = {30,0x3FFFE5FB}, + [I(190,59)] = {30,0x3FFFE6FB}, + [I(191,59)] = {31,0x7FFFF1FB}, + [I(192,59)] = {64,0}, + [I(193,59)] = {64,0}, + [I(194,59)] = {28,0xFFFEBFB}, + [I(195,59)] = {27,0x7FFF1FB}, + [I(196,59)] = {30,0x3FFFE7FB}, + [I(197,59)] = {31,0x7FFFF2FB}, + [I(198,59)] = {30,0x3FFFE8FB}, + [I(199,59)] = {64,0}, + [I(200,59)] = {64,0}, + [I(201,59)] = {64,0}, + [I(202,59)] = {64,0}, + [I(203,59)] = {64,0}, + [I(204,59)] = {64,0}, + [I(205,59)] = {64,0}, + [I(206,59)] = {X32,0xFFFFF1FB}, + [I(207,59)] = {64,0}, + [I(208,59)] = {27,0x7FFF2FB}, + [I(209,59)] = {29,0x1FFFE3FB}, + [I(210,59)] = {64,0}, + [I(211,59)] = {64,0}, + [I(212,59)] = {64,0}, + [I(213,59)] = {64,0}, + [I(214,59)] = {64,0}, + [I(215,59)] = {X32,0xFFFFF2FB}, + [I(216,59)] = {29,0x1FFFE4FB}, + [I(217,59)] = {29,0x1FFFE5FB}, + [I(218,59)] = {64,0}, + [I(219,59)] = {64,0}, + [I(220,59)] = {64,0}, + [I(221,59)] = {64,0}, + [I(222,59)] = {64,0}, + [I(223,59)] = {64,0}, + [I(224,59)] = {28,0xFFFECFB}, + [I(225,59)] = {X32,0xFFFFF3FB}, + [I(226,59)] = {28,0xFFFEDFB}, + [I(227,59)] = {29,0x1FFFE6FB}, + [I(228,59)] = {30,0x3FFFE9FB}, + [I(229,59)] = {29,0x1FFFE7FB}, + [I(230,59)] = {29,0x1FFFE8FB}, + [I(231,59)] = {31,0x7FFFF3FB}, + [I(232,59)] = {30,0x3FFFEAFB}, + [I(233,59)] = {30,0x3FFFEBFB}, + [I(234,59)] = {64,0}, + [I(235,59)] = {64,0}, + [I(236,59)] = {X32,0xFFFFF4FB}, + [I(237,59)] = {X32,0xFFFFF5FB}, + [I(238,59)] = {64,0}, + [I(239,59)] = {31,0x7FFFF4FB}, + [I(240,59)] = {64,0}, + [I(241,59)] = {64,0}, + [I(242,59)] = {64,0}, + [I(243,59)] = {64,0}, + [I(244,59)] = {64,0}, + [I(245,59)] = {64,0}, + [I(246,59)] = {64,0}, + [I(247,59)] = {64,0}, + [I(248,59)] = {64,0}, + [I(249,59)] = {64,0}, + [I(250,59)] = {64,0}, + [I(251,59)] = {64,0}, + [I(252,59)] = {64,0}, + [I(253,59)] = {64,0}, + [I(254,59)] = {64,0}, + [I(255,59)] = {64,0}, + [I(0,60)] = {28,0xFFC7FFC}, + [I(1,60)] = {64,0}, + [I(2,60)] = {64,0}, + [I(3,60)] = {64,0}, + [I(4,60)] = {64,0}, + [I(5,60)] = {64,0}, + [I(6,60)] = {64,0}, + [I(7,60)] = {64,0}, + [I(8,60)] = {64,0}, + [I(9,60)] = {64,0}, + [I(10,60)] = {64,0}, + [I(11,60)] = {64,0}, + [I(12,60)] = {64,0}, + [I(13,60)] = {64,0}, + [I(14,60)] = {64,0}, + [I(15,60)] = {64,0}, + [I(16,60)] = {64,0}, + [I(17,60)] = {64,0}, + [I(18,60)] = {64,0}, + [I(19,60)] = {64,0}, + [I(20,60)] = {64,0}, + [I(21,60)] = {64,0}, + [I(22,60)] = {64,0}, + [I(23,60)] = {64,0}, + [I(24,60)] = {64,0}, + [I(25,60)] = {64,0}, + [I(26,60)] = {64,0}, + [I(27,60)] = {64,0}, + [I(28,60)] = {64,0}, + [I(29,60)] = {64,0}, + [I(30,60)] = {64,0}, + [I(31,60)] = {64,0}, + [I(32,60)] = {21,0xA7FFC}, + [I(33,60)] = {25,0x1FC7FFC}, + [I(34,60)] = {25,0x1FCFFFC}, + [I(35,60)] = {27,0x7FD7FFC}, + [I(36,60)] = {28,0xFFCFFFC}, + [I(37,60)] = {21,0xAFFFC}, + [I(38,60)] = {23,0x7C7FFC}, + [I(39,60)] = {26,0x3FD7FFC}, + [I(40,60)] = {25,0x1FD7FFC}, + [I(41,60)] = {25,0x1FDFFFC}, + [I(42,60)] = {23,0x7CFFFC}, + [I(43,60)] = {26,0x3FDFFFC}, + [I(44,60)] = {23,0x7D7FFC}, + [I(45,60)] = {21,0xB7FFC}, + [I(46,60)] = {21,0xBFFFC}, + [I(47,60)] = {21,0xC7FFC}, + [I(48,60)] = {20,0x7FFC}, + [I(49,60)] = {20,0xFFFC}, + [I(50,60)] = {20,0x17FFC}, + [I(51,60)] = {21,0xCFFFC}, + [I(52,60)] = {21,0xD7FFC}, + [I(53,60)] = {21,0xDFFFC}, + [I(54,60)] = {21,0xE7FFC}, + [I(55,60)] = {21,0xEFFFC}, + [I(56,60)] = {21,0xF7FFC}, + [I(57,60)] = {21,0xFFFFC}, + [I(58,60)] = {22,0x2E7FFC}, + [I(59,60)] = {23,0x7DFFFC}, + [I(60,60)] = {30,0x3FFE7FFC}, + [I(61,60)] = {21,0x107FFC}, + [I(62,60)] = {27,0x7FDFFFC}, + [I(63,60)] = {25,0x1FE7FFC}, + [I(64,60)] = {28,0xFFD7FFC}, + [I(65,60)] = {21,0x10FFFC}, + [I(66,60)] = {22,0x2EFFFC}, + [I(67,60)] = {22,0x2F7FFC}, + [I(68,60)] = {22,0x2FFFFC}, + [I(69,60)] = {22,0x307FFC}, + [I(70,60)] = {22,0x30FFFC}, + [I(71,60)] = {22,0x317FFC}, + [I(72,60)] = {22,0x31FFFC}, + [I(73,60)] = {22,0x327FFC}, + [I(74,60)] = {22,0x32FFFC}, + [I(75,60)] = {22,0x337FFC}, + [I(76,60)] = {22,0x33FFFC}, + [I(77,60)] = {22,0x347FFC}, + [I(78,60)] = {22,0x34FFFC}, + [I(79,60)] = {22,0x357FFC}, + [I(80,60)] = {22,0x35FFFC}, + [I(81,60)] = {22,0x367FFC}, + [I(82,60)] = {22,0x36FFFC}, + [I(83,60)] = {22,0x377FFC}, + [I(84,60)] = {22,0x37FFFC}, + [I(85,60)] = {22,0x387FFC}, + [I(86,60)] = {22,0x38FFFC}, + [I(87,60)] = {22,0x397FFC}, + [I(88,60)] = {23,0x7E7FFC}, + [I(89,60)] = {22,0x39FFFC}, + [I(90,60)] = {23,0x7EFFFC}, + [I(91,60)] = {28,0xFFDFFFC}, + [I(92,60)] = {64,0}, + [I(93,60)] = {28,0xFFE7FFC}, + [I(94,60)] = {29,0x1FFE7FFC}, + [I(95,60)] = {21,0x117FFC}, + [I(96,60)] = {30,0x3FFEFFFC}, + [I(97,60)] = {20,0x1FFFC}, + [I(98,60)] = {21,0x11FFFC}, + [I(99,60)] = {20,0x27FFC}, + [I(100,60)] = {21,0x127FFC}, + [I(101,60)] = {20,0x2FFFC}, + [I(102,60)] = {21,0x12FFFC}, + [I(103,60)] = {21,0x137FFC}, + [I(104,60)] = {21,0x13FFFC}, + [I(105,60)] = {20,0x37FFC}, + [I(106,60)] = {22,0x3A7FFC}, + [I(107,60)] = {22,0x3AFFFC}, + [I(108,60)] = {21,0x147FFC}, + [I(109,60)] = {21,0x14FFFC}, + [I(110,60)] = {21,0x157FFC}, + [I(111,60)] = {20,0x3FFFC}, + [I(112,60)] = {21,0x15FFFC}, + [I(113,60)] = {22,0x3B7FFC}, + [I(114,60)] = {21,0x167FFC}, + [I(115,60)] = {20,0x47FFC}, + [I(116,60)] = {20,0x4FFFC}, + [I(117,60)] = {21,0x16FFFC}, + [I(118,60)] = {22,0x3BFFFC}, + [I(119,60)] = {22,0x3C7FFC}, + [I(120,60)] = {22,0x3CFFFC}, + [I(121,60)] = {22,0x3D7FFC}, + [I(122,60)] = {22,0x3DFFFC}, + [I(123,60)] = {30,0x3FFF7FFC}, + [I(124,60)] = {26,0x3FE7FFC}, + [I(125,60)] = {29,0x1FFEFFFC}, + [I(126,60)] = {28,0xFFEFFFC}, + [I(127,60)] = {64,0}, + [I(128,60)] = {64,0}, + [I(129,60)] = {64,0}, + [I(130,60)] = {64,0}, + [I(131,60)] = {64,0}, + [I(132,60)] = {64,0}, + [I(133,60)] = {64,0}, + [I(134,60)] = {64,0}, + [I(135,60)] = {64,0}, + [I(136,60)] = {64,0}, + [I(137,60)] = {64,0}, + [I(138,60)] = {64,0}, + [I(139,60)] = {64,0}, + [I(140,60)] = {64,0}, + [I(141,60)] = {64,0}, + [I(142,60)] = {64,0}, + [I(143,60)] = {64,0}, + [I(144,60)] = {64,0}, + [I(145,60)] = {64,0}, + [I(146,60)] = {64,0}, + [I(147,60)] = {64,0}, + [I(148,60)] = {64,0}, + [I(149,60)] = {64,0}, + [I(150,60)] = {64,0}, + [I(151,60)] = {64,0}, + [I(152,60)] = {64,0}, + [I(153,60)] = {64,0}, + [I(154,60)] = {64,0}, + [I(155,60)] = {64,0}, + [I(156,60)] = {64,0}, + [I(157,60)] = {64,0}, + [I(158,60)] = {64,0}, + [I(159,60)] = {64,0}, + [I(160,60)] = {64,0}, + [I(161,60)] = {64,0}, + [I(162,60)] = {64,0}, + [I(163,60)] = {64,0}, + [I(164,60)] = {64,0}, + [I(165,60)] = {64,0}, + [I(166,60)] = {64,0}, + [I(167,60)] = {64,0}, + [I(168,60)] = {64,0}, + [I(169,60)] = {64,0}, + [I(170,60)] = {64,0}, + [I(171,60)] = {64,0}, + [I(172,60)] = {64,0}, + [I(173,60)] = {64,0}, + [I(174,60)] = {64,0}, + [I(175,60)] = {64,0}, + [I(176,60)] = {64,0}, + [I(177,60)] = {64,0}, + [I(178,60)] = {64,0}, + [I(179,60)] = {64,0}, + [I(180,60)] = {64,0}, + [I(181,60)] = {64,0}, + [I(182,60)] = {64,0}, + [I(183,60)] = {64,0}, + [I(184,60)] = {64,0}, + [I(185,60)] = {64,0}, + [I(186,60)] = {64,0}, + [I(187,60)] = {64,0}, + [I(188,60)] = {64,0}, + [I(189,60)] = {64,0}, + [I(190,60)] = {64,0}, + [I(191,60)] = {64,0}, + [I(192,60)] = {64,0}, + [I(193,60)] = {64,0}, + [I(194,60)] = {64,0}, + [I(195,60)] = {64,0}, + [I(196,60)] = {64,0}, + [I(197,60)] = {64,0}, + [I(198,60)] = {64,0}, + [I(199,60)] = {64,0}, + [I(200,60)] = {64,0}, + [I(201,60)] = {64,0}, + [I(202,60)] = {64,0}, + [I(203,60)] = {64,0}, + [I(204,60)] = {64,0}, + [I(205,60)] = {64,0}, + [I(206,60)] = {64,0}, + [I(207,60)] = {64,0}, + [I(208,60)] = {64,0}, + [I(209,60)] = {64,0}, + [I(210,60)] = {64,0}, + [I(211,60)] = {64,0}, + [I(212,60)] = {64,0}, + [I(213,60)] = {64,0}, + [I(214,60)] = {64,0}, + [I(215,60)] = {64,0}, + [I(216,60)] = {64,0}, + [I(217,60)] = {64,0}, + [I(218,60)] = {64,0}, + [I(219,60)] = {64,0}, + [I(220,60)] = {64,0}, + [I(221,60)] = {64,0}, + [I(222,60)] = {64,0}, + [I(223,60)] = {64,0}, + [I(224,60)] = {64,0}, + [I(225,60)] = {64,0}, + [I(226,60)] = {64,0}, + [I(227,60)] = {64,0}, + [I(228,60)] = {64,0}, + [I(229,60)] = {64,0}, + [I(230,60)] = {64,0}, + [I(231,60)] = {64,0}, + [I(232,60)] = {64,0}, + [I(233,60)] = {64,0}, + [I(234,60)] = {64,0}, + [I(235,60)] = {64,0}, + [I(236,60)] = {64,0}, + [I(237,60)] = {64,0}, + [I(238,60)] = {64,0}, + [I(239,60)] = {64,0}, + [I(240,60)] = {64,0}, + [I(241,60)] = {64,0}, + [I(242,60)] = {64,0}, + [I(243,60)] = {64,0}, + [I(244,60)] = {64,0}, + [I(245,60)] = {64,0}, + [I(246,60)] = {64,0}, + [I(247,60)] = {64,0}, + [I(248,60)] = {64,0}, + [I(249,60)] = {64,0}, + [I(250,60)] = {64,0}, + [I(251,60)] = {64,0}, + [I(252,60)] = {64,0}, + [I(253,60)] = {64,0}, + [I(254,60)] = {64,0}, + [I(255,60)] = {64,0}, + [I(0,61)] = {19,0x7FE20}, + [I(1,61)] = {29,0x1FFFF620}, + [I(2,61)] = {64,0}, + [I(3,61)] = {64,0}, + [I(4,61)] = {64,0}, + [I(5,61)] = {64,0}, + [I(6,61)] = {64,0}, + [I(7,61)] = {64,0}, + [I(8,61)] = {64,0}, + [I(9,61)] = {30,0x3FFFFAA0}, + [I(10,61)] = {64,0}, + [I(11,61)] = {64,0}, + [I(12,61)] = {64,0}, + [I(13,61)] = {64,0}, + [I(14,61)] = {64,0}, + [I(15,61)] = {64,0}, + [I(16,61)] = {64,0}, + [I(17,61)] = {64,0}, + [I(18,61)] = {64,0}, + [I(19,61)] = {64,0}, + [I(20,61)] = {64,0}, + [I(21,61)] = {64,0}, + [I(22,61)] = {64,0}, + [I(23,61)] = {64,0}, + [I(24,61)] = {64,0}, + [I(25,61)] = {64,0}, + [I(26,61)] = {64,0}, + [I(27,61)] = {64,0}, + [I(28,61)] = {64,0}, + [I(29,61)] = {64,0}, + [I(30,61)] = {64,0}, + [I(31,61)] = {64,0}, + [I(32,61)] = {12,0x520}, + [I(33,61)] = {16,0xFE20}, + [I(34,61)] = {16,0xFE60}, + [I(35,61)] = {18,0x3FEA0}, + [I(36,61)] = {19,0x7FE60}, + [I(37,61)] = {12,0x560}, + [I(38,61)] = {14,0x3E20}, + [I(39,61)] = {17,0x1FEA0}, + [I(40,61)] = {16,0xFEA0}, + [I(41,61)] = {16,0xFEE0}, + [I(42,61)] = {14,0x3E60}, + [I(43,61)] = {17,0x1FEE0}, + [I(44,61)] = {14,0x3EA0}, + [I(45,61)] = {12,0x5A0}, + [I(46,61)] = {12,0x5E0}, + [I(47,61)] = {12,0x620}, + [I(48,61)] = {11,0x20}, + [I(49,61)] = {11,0x60}, + [I(50,61)] = {11,0xA0}, + [I(51,61)] = {12,0x660}, + [I(52,61)] = {12,0x6A0}, + [I(53,61)] = {12,0x6E0}, + [I(54,61)] = {12,0x720}, + [I(55,61)] = {12,0x760}, + [I(56,61)] = {12,0x7A0}, + [I(57,61)] = {12,0x7E0}, + [I(58,61)] = {13,0x1720}, + [I(59,61)] = {14,0x3EE0}, + [I(60,61)] = {21,0x1FFF20}, + [I(61,61)] = {12,0x820}, + [I(62,61)] = {18,0x3FEE0}, + [I(63,61)] = {16,0xFF20}, + [I(64,61)] = {19,0x7FEA0}, + [I(65,61)] = {12,0x860}, + [I(66,61)] = {13,0x1760}, + [I(67,61)] = {13,0x17A0}, + [I(68,61)] = {13,0x17E0}, + [I(69,61)] = {13,0x1820}, + [I(70,61)] = {13,0x1860}, + [I(71,61)] = {13,0x18A0}, + [I(72,61)] = {13,0x18E0}, + [I(73,61)] = {13,0x1920}, + [I(74,61)] = {13,0x1960}, + [I(75,61)] = {13,0x19A0}, + [I(76,61)] = {13,0x19E0}, + [I(77,61)] = {13,0x1A20}, + [I(78,61)] = {13,0x1A60}, + [I(79,61)] = {13,0x1AA0}, + [I(80,61)] = {13,0x1AE0}, + [I(81,61)] = {13,0x1B20}, + [I(82,61)] = {13,0x1B60}, + [I(83,61)] = {13,0x1BA0}, + [I(84,61)] = {13,0x1BE0}, + [I(85,61)] = {13,0x1C20}, + [I(86,61)] = {13,0x1C60}, + [I(87,61)] = {13,0x1CA0}, + [I(88,61)] = {14,0x3F20}, + [I(89,61)] = {13,0x1CE0}, + [I(90,61)] = {14,0x3F60}, + [I(91,61)] = {19,0x7FEE0}, + [I(92,61)] = {25,0x1FFFC20}, + [I(93,61)] = {19,0x7FF20}, + [I(94,61)] = {20,0xFFF20}, + [I(95,61)] = {12,0x8A0}, + [I(96,61)] = {21,0x1FFF60}, + [I(97,61)] = {11,0xE0}, + [I(98,61)] = {12,0x8E0}, + [I(99,61)] = {11,0x120}, + [I(100,61)] = {12,0x920}, + [I(101,61)] = {11,0x160}, + [I(102,61)] = {12,0x960}, + [I(103,61)] = {12,0x9A0}, + [I(104,61)] = {12,0x9E0}, + [I(105,61)] = {11,0x1A0}, + [I(106,61)] = {13,0x1D20}, + [I(107,61)] = {13,0x1D60}, + [I(108,61)] = {12,0xA20}, + [I(109,61)] = {12,0xA60}, + [I(110,61)] = {12,0xAA0}, + [I(111,61)] = {11,0x1E0}, + [I(112,61)] = {12,0xAE0}, + [I(113,61)] = {13,0x1DA0}, + [I(114,61)] = {12,0xB20}, + [I(115,61)] = {11,0x220}, + [I(116,61)] = {11,0x260}, + [I(117,61)] = {12,0xB60}, + [I(118,61)] = {13,0x1DE0}, + [I(119,61)] = {13,0x1E20}, + [I(120,61)] = {13,0x1E60}, + [I(121,61)] = {13,0x1EA0}, + [I(122,61)] = {13,0x1EE0}, + [I(123,61)] = {21,0x1FFFA0}, + [I(124,61)] = {17,0x1FF20}, + [I(125,61)] = {20,0xFFF60}, + [I(126,61)] = {19,0x7FF60}, + [I(127,61)] = {64,0}, + [I(128,61)] = {26,0x3FFF9A0}, + [I(129,61)] = {28,0xFFFF4A0}, + [I(130,61)] = {26,0x3FFF9E0}, + [I(131,61)] = {26,0x3FFFA20}, + [I(132,61)] = {28,0xFFFF4E0}, + [I(133,61)] = {28,0xFFFF520}, + [I(134,61)] = {28,0xFFFF560}, + [I(135,61)] = {29,0x1FFFF660}, + [I(136,61)] = {28,0xFFFF5A0}, + [I(137,61)] = {29,0x1FFFF6A0}, + [I(138,61)] = {29,0x1FFFF6E0}, + [I(139,61)] = {29,0x1FFFF720}, + [I(140,61)] = {29,0x1FFFF760}, + [I(141,61)] = {29,0x1FFFF7A0}, + [I(142,61)] = {30,0x3FFFFAE0}, + [I(143,61)] = {29,0x1FFFF7E0}, + [I(144,61)] = {30,0x3FFFFB20}, + [I(145,61)] = {30,0x3FFFFB60}, + [I(146,61)] = {28,0xFFFF5E0}, + [I(147,61)] = {29,0x1FFFF820}, + [I(148,61)] = {30,0x3FFFFBA0}, + [I(149,61)] = {29,0x1FFFF860}, + [I(150,61)] = {29,0x1FFFF8A0}, + [I(151,61)] = {29,0x1FFFF8E0}, + [I(152,61)] = {29,0x1FFFF920}, + [I(153,61)] = {27,0x7FFF720}, + [I(154,61)] = {28,0xFFFF620}, + [I(155,61)] = {29,0x1FFFF960}, + [I(156,61)] = {28,0xFFFF660}, + [I(157,61)] = {29,0x1FFFF9A0}, + [I(158,61)] = {29,0x1FFFF9E0}, + [I(159,61)] = {30,0x3FFFFBE0}, + [I(160,61)] = {28,0xFFFF6A0}, + [I(161,61)] = {27,0x7FFF760}, + [I(162,61)] = {26,0x3FFFA60}, + [I(163,61)] = {28,0xFFFF6E0}, + [I(164,61)] = {28,0xFFFF720}, + [I(165,61)] = {29,0x1FFFFA20}, + [I(166,61)] = {29,0x1FFFFA60}, + [I(167,61)] = {27,0x7FFF7A0}, + [I(168,61)] = {29,0x1FFFFAA0}, + [I(169,61)] = {28,0xFFFF760}, + [I(170,61)] = {28,0xFFFF7A0}, + [I(171,61)] = {30,0x3FFFFC20}, + [I(172,61)] = {27,0x7FFF7E0}, + [I(173,61)] = {28,0xFFFF7E0}, + [I(174,61)] = {29,0x1FFFFAE0}, + [I(175,61)] = {29,0x1FFFFB20}, + [I(176,61)] = {27,0x7FFF820}, + [I(177,61)] = {27,0x7FFF860}, + [I(178,61)] = {28,0xFFFF820}, + [I(179,61)] = {27,0x7FFF8A0}, + [I(180,61)] = {29,0x1FFFFB60}, + [I(181,61)] = {28,0xFFFF860}, + [I(182,61)] = {29,0x1FFFFBA0}, + [I(183,61)] = {29,0x1FFFFBE0}, + [I(184,61)] = {26,0x3FFFAA0}, + [I(185,61)] = {28,0xFFFF8A0}, + [I(186,61)] = {28,0xFFFF8E0}, + [I(187,61)] = {28,0xFFFF920}, + [I(188,61)] = {29,0x1FFFFC20}, + [I(189,61)] = {28,0xFFFF960}, + [I(190,61)] = {28,0xFFFF9A0}, + [I(191,61)] = {29,0x1FFFFC60}, + [I(192,61)] = {X32,0xFFFFF820}, + [I(193,61)] = {X32,0xFFFFF860}, + [I(194,61)] = {26,0x3FFFAE0}, + [I(195,61)] = {25,0x1FFFC60}, + [I(196,61)] = {28,0xFFFF9E0}, + [I(197,61)] = {29,0x1FFFFCA0}, + [I(198,61)] = {28,0xFFFFA20}, + [I(199,61)] = {31,0x7FFFFB20}, + [I(200,61)] = {X32,0xFFFFF8A0}, + [I(201,61)] = {X32,0xFFFFF8E0}, + [I(202,61)] = {X32,0xFFFFF920}, + [I(203,61)] = {64,0}, + [I(204,61)] = {64,0}, + [I(205,61)] = {X32,0xFFFFF960}, + [I(206,61)] = {30,0x3FFFFC60}, + [I(207,61)] = {31,0x7FFFFB60}, + [I(208,61)] = {25,0x1FFFCA0}, + [I(209,61)] = {27,0x7FFF8E0}, + [I(210,61)] = {X32,0xFFFFF9A0}, + [I(211,61)] = {64,0}, + [I(212,61)] = {64,0}, + [I(213,61)] = {X32,0xFFFFF9E0}, + [I(214,61)] = {64,0}, + [I(215,61)] = {30,0x3FFFFCA0}, + [I(216,61)] = {27,0x7FFF920}, + [I(217,61)] = {27,0x7FFF960}, + [I(218,61)] = {X32,0xFFFFFA20}, + [I(219,61)] = {X32,0xFFFFFA60}, + [I(220,61)] = {64,0}, + [I(221,61)] = {64,0}, + [I(222,61)] = {64,0}, + [I(223,61)] = {64,0}, + [I(224,61)] = {26,0x3FFFB20}, + [I(225,61)] = {30,0x3FFFFCE0}, + [I(226,61)] = {26,0x3FFFB60}, + [I(227,61)] = {27,0x7FFF9A0}, + [I(228,61)] = {28,0xFFFFA60}, + [I(229,61)] = {27,0x7FFF9E0}, + [I(230,61)] = {27,0x7FFFA20}, + [I(231,61)] = {29,0x1FFFFCE0}, + [I(232,61)] = {28,0xFFFFAA0}, + [I(233,61)] = {28,0xFFFFAE0}, + [I(234,61)] = {31,0x7FFFFBA0}, + [I(235,61)] = {31,0x7FFFFBE0}, + [I(236,61)] = {30,0x3FFFFD20}, + [I(237,61)] = {30,0x3FFFFD60}, + [I(238,61)] = {X32,0xFFFFFAA0}, + [I(239,61)] = {29,0x1FFFFD20}, + [I(240,61)] = {X32,0xFFFFFAE0}, + [I(241,61)] = {64,0}, + [I(242,61)] = {X32,0xFFFFFB20}, + [I(243,61)] = {X32,0xFFFFFB60}, + [I(244,61)] = {64,0}, + [I(245,61)] = {64,0}, + [I(246,61)] = {64,0}, + [I(247,61)] = {64,0}, + [I(248,61)] = {64,0}, + [I(249,61)] = {64,0}, + [I(250,61)] = {64,0}, + [I(251,61)] = {64,0}, + [I(252,61)] = {64,0}, + [I(253,61)] = {64,0}, + [I(254,61)] = {64,0}, + [I(255,61)] = {X32,0xFFFFFBA0}, + [I(0,62)] = {25,0x1FF8FFB}, + [I(1,62)] = {64,0}, + [I(2,62)] = {64,0}, + [I(3,62)] = {64,0}, + [I(4,62)] = {64,0}, + [I(5,62)] = {64,0}, + [I(6,62)] = {64,0}, + [I(7,62)] = {64,0}, + [I(8,62)] = {64,0}, + [I(9,62)] = {64,0}, + [I(10,62)] = {64,0}, + [I(11,62)] = {64,0}, + [I(12,62)] = {64,0}, + [I(13,62)] = {64,0}, + [I(14,62)] = {64,0}, + [I(15,62)] = {64,0}, + [I(16,62)] = {64,0}, + [I(17,62)] = {64,0}, + [I(18,62)] = {64,0}, + [I(19,62)] = {64,0}, + [I(20,62)] = {64,0}, + [I(21,62)] = {64,0}, + [I(22,62)] = {64,0}, + [I(23,62)] = {64,0}, + [I(24,62)] = {64,0}, + [I(25,62)] = {64,0}, + [I(26,62)] = {64,0}, + [I(27,62)] = {64,0}, + [I(28,62)] = {64,0}, + [I(29,62)] = {64,0}, + [I(30,62)] = {64,0}, + [I(31,62)] = {64,0}, + [I(32,62)] = {18,0x14FFB}, + [I(33,62)] = {22,0x3F8FFB}, + [I(34,62)] = {22,0x3F9FFB}, + [I(35,62)] = {24,0xFFAFFB}, + [I(36,62)] = {25,0x1FF9FFB}, + [I(37,62)] = {18,0x15FFB}, + [I(38,62)] = {20,0xF8FFB}, + [I(39,62)] = {23,0x7FAFFB}, + [I(40,62)] = {22,0x3FAFFB}, + [I(41,62)] = {22,0x3FBFFB}, + [I(42,62)] = {20,0xF9FFB}, + [I(43,62)] = {23,0x7FBFFB}, + [I(44,62)] = {20,0xFAFFB}, + [I(45,62)] = {18,0x16FFB}, + [I(46,62)] = {18,0x17FFB}, + [I(47,62)] = {18,0x18FFB}, + [I(48,62)] = {17,0xFFB}, + [I(49,62)] = {17,0x1FFB}, + [I(50,62)] = {17,0x2FFB}, + [I(51,62)] = {18,0x19FFB}, + [I(52,62)] = {18,0x1AFFB}, + [I(53,62)] = {18,0x1BFFB}, + [I(54,62)] = {18,0x1CFFB}, + [I(55,62)] = {18,0x1DFFB}, + [I(56,62)] = {18,0x1EFFB}, + [I(57,62)] = {18,0x1FFFB}, + [I(58,62)] = {19,0x5CFFB}, + [I(59,62)] = {20,0xFBFFB}, + [I(60,62)] = {27,0x7FFCFFB}, + [I(61,62)] = {18,0x20FFB}, + [I(62,62)] = {24,0xFFBFFB}, + [I(63,62)] = {22,0x3FCFFB}, + [I(64,62)] = {25,0x1FFAFFB}, + [I(65,62)] = {18,0x21FFB}, + [I(66,62)] = {19,0x5DFFB}, + [I(67,62)] = {19,0x5EFFB}, + [I(68,62)] = {19,0x5FFFB}, + [I(69,62)] = {19,0x60FFB}, + [I(70,62)] = {19,0x61FFB}, + [I(71,62)] = {19,0x62FFB}, + [I(72,62)] = {19,0x63FFB}, + [I(73,62)] = {19,0x64FFB}, + [I(74,62)] = {19,0x65FFB}, + [I(75,62)] = {19,0x66FFB}, + [I(76,62)] = {19,0x67FFB}, + [I(77,62)] = {19,0x68FFB}, + [I(78,62)] = {19,0x69FFB}, + [I(79,62)] = {19,0x6AFFB}, + [I(80,62)] = {19,0x6BFFB}, + [I(81,62)] = {19,0x6CFFB}, + [I(82,62)] = {19,0x6DFFB}, + [I(83,62)] = {19,0x6EFFB}, + [I(84,62)] = {19,0x6FFFB}, + [I(85,62)] = {19,0x70FFB}, + [I(86,62)] = {19,0x71FFB}, + [I(87,62)] = {19,0x72FFB}, + [I(88,62)] = {20,0xFCFFB}, + [I(89,62)] = {19,0x73FFB}, + [I(90,62)] = {20,0xFDFFB}, + [I(91,62)] = {25,0x1FFBFFB}, + [I(92,62)] = {31,0x7FFF0FFB}, + [I(93,62)] = {25,0x1FFCFFB}, + [I(94,62)] = {26,0x3FFCFFB}, + [I(95,62)] = {18,0x22FFB}, + [I(96,62)] = {27,0x7FFDFFB}, + [I(97,62)] = {17,0x3FFB}, + [I(98,62)] = {18,0x23FFB}, + [I(99,62)] = {17,0x4FFB}, + [I(100,62)] = {18,0x24FFB}, + [I(101,62)] = {17,0x5FFB}, + [I(102,62)] = {18,0x25FFB}, + [I(103,62)] = {18,0x26FFB}, + [I(104,62)] = {18,0x27FFB}, + [I(105,62)] = {17,0x6FFB}, + [I(106,62)] = {19,0x74FFB}, + [I(107,62)] = {19,0x75FFB}, + [I(108,62)] = {18,0x28FFB}, + [I(109,62)] = {18,0x29FFB}, + [I(110,62)] = {18,0x2AFFB}, + [I(111,62)] = {17,0x7FFB}, + [I(112,62)] = {18,0x2BFFB}, + [I(113,62)] = {19,0x76FFB}, + [I(114,62)] = {18,0x2CFFB}, + [I(115,62)] = {17,0x8FFB}, + [I(116,62)] = {17,0x9FFB}, + [I(117,62)] = {18,0x2DFFB}, + [I(118,62)] = {19,0x77FFB}, + [I(119,62)] = {19,0x78FFB}, + [I(120,62)] = {19,0x79FFB}, + [I(121,62)] = {19,0x7AFFB}, + [I(122,62)] = {19,0x7BFFB}, + [I(123,62)] = {27,0x7FFEFFB}, + [I(124,62)] = {23,0x7FCFFB}, + [I(125,62)] = {26,0x3FFDFFB}, + [I(126,62)] = {25,0x1FFDFFB}, + [I(127,62)] = {64,0}, + [I(128,62)] = {X32,0xFFFE6FFB}, + [I(129,62)] = {64,0}, + [I(130,62)] = {X32,0xFFFE7FFB}, + [I(131,62)] = {X32,0xFFFE8FFB}, + [I(132,62)] = {64,0}, + [I(133,62)] = {64,0}, + [I(134,62)] = {64,0}, + [I(135,62)] = {64,0}, + [I(136,62)] = {64,0}, + [I(137,62)] = {64,0}, + [I(138,62)] = {64,0}, + [I(139,62)] = {64,0}, + [I(140,62)] = {64,0}, + [I(141,62)] = {64,0}, + [I(142,62)] = {64,0}, + [I(143,62)] = {64,0}, + [I(144,62)] = {64,0}, + [I(145,62)] = {64,0}, + [I(146,62)] = {64,0}, + [I(147,62)] = {64,0}, + [I(148,62)] = {64,0}, + [I(149,62)] = {64,0}, + [I(150,62)] = {64,0}, + [I(151,62)] = {64,0}, + [I(152,62)] = {64,0}, + [I(153,62)] = {64,0}, + [I(154,62)] = {64,0}, + [I(155,62)] = {64,0}, + [I(156,62)] = {64,0}, + [I(157,62)] = {64,0}, + [I(158,62)] = {64,0}, + [I(159,62)] = {64,0}, + [I(160,62)] = {64,0}, + [I(161,62)] = {64,0}, + [I(162,62)] = {X32,0xFFFE9FFB}, + [I(163,62)] = {64,0}, + [I(164,62)] = {64,0}, + [I(165,62)] = {64,0}, + [I(166,62)] = {64,0}, + [I(167,62)] = {64,0}, + [I(168,62)] = {64,0}, + [I(169,62)] = {64,0}, + [I(170,62)] = {64,0}, + [I(171,62)] = {64,0}, + [I(172,62)] = {64,0}, + [I(173,62)] = {64,0}, + [I(174,62)] = {64,0}, + [I(175,62)] = {64,0}, + [I(176,62)] = {64,0}, + [I(177,62)] = {64,0}, + [I(178,62)] = {64,0}, + [I(179,62)] = {64,0}, + [I(180,62)] = {64,0}, + [I(181,62)] = {64,0}, + [I(182,62)] = {64,0}, + [I(183,62)] = {64,0}, + [I(184,62)] = {X32,0xFFFEAFFB}, + [I(185,62)] = {64,0}, + [I(186,62)] = {64,0}, + [I(187,62)] = {64,0}, + [I(188,62)] = {64,0}, + [I(189,62)] = {64,0}, + [I(190,62)] = {64,0}, + [I(191,62)] = {64,0}, + [I(192,62)] = {64,0}, + [I(193,62)] = {64,0}, + [I(194,62)] = {X32,0xFFFEBFFB}, + [I(195,62)] = {31,0x7FFF1FFB}, + [I(196,62)] = {64,0}, + [I(197,62)] = {64,0}, + [I(198,62)] = {64,0}, + [I(199,62)] = {64,0}, + [I(200,62)] = {64,0}, + [I(201,62)] = {64,0}, + [I(202,62)] = {64,0}, + [I(203,62)] = {64,0}, + [I(204,62)] = {64,0}, + [I(205,62)] = {64,0}, + [I(206,62)] = {64,0}, + [I(207,62)] = {64,0}, + [I(208,62)] = {31,0x7FFF2FFB}, + [I(209,62)] = {64,0}, + [I(210,62)] = {64,0}, + [I(211,62)] = {64,0}, + [I(212,62)] = {64,0}, + [I(213,62)] = {64,0}, + [I(214,62)] = {64,0}, + [I(215,62)] = {64,0}, + [I(216,62)] = {64,0}, + [I(217,62)] = {64,0}, + [I(218,62)] = {64,0}, + [I(219,62)] = {64,0}, + [I(220,62)] = {64,0}, + [I(221,62)] = {64,0}, + [I(222,62)] = {64,0}, + [I(223,62)] = {64,0}, + [I(224,62)] = {X32,0xFFFECFFB}, + [I(225,62)] = {64,0}, + [I(226,62)] = {X32,0xFFFEDFFB}, + [I(227,62)] = {64,0}, + [I(228,62)] = {64,0}, + [I(229,62)] = {64,0}, + [I(230,62)] = {64,0}, + [I(231,62)] = {64,0}, + [I(232,62)] = {64,0}, + [I(233,62)] = {64,0}, + [I(234,62)] = {64,0}, + [I(235,62)] = {64,0}, + [I(236,62)] = {64,0}, + [I(237,62)] = {64,0}, + [I(238,62)] = {64,0}, + [I(239,62)] = {64,0}, + [I(240,62)] = {64,0}, + [I(241,62)] = {64,0}, + [I(242,62)] = {64,0}, + [I(243,62)] = {64,0}, + [I(244,62)] = {64,0}, + [I(245,62)] = {64,0}, + [I(246,62)] = {64,0}, + [I(247,62)] = {64,0}, + [I(248,62)] = {64,0}, + [I(249,62)] = {64,0}, + [I(250,62)] = {64,0}, + [I(251,62)] = {64,0}, + [I(252,62)] = {64,0}, + [I(253,62)] = {64,0}, + [I(254,62)] = {64,0}, + [I(255,62)] = {64,0}, + [I(0,63)] = {23,0x7FE3FC}, + [I(1,63)] = {64,0}, + [I(2,63)] = {64,0}, + [I(3,63)] = {64,0}, + [I(4,63)] = {64,0}, + [I(5,63)] = {64,0}, + [I(6,63)] = {64,0}, + [I(7,63)] = {64,0}, + [I(8,63)] = {64,0}, + [I(9,63)] = {64,0}, + [I(10,63)] = {64,0}, + [I(11,63)] = {64,0}, + [I(12,63)] = {64,0}, + [I(13,63)] = {64,0}, + [I(14,63)] = {64,0}, + [I(15,63)] = {64,0}, + [I(16,63)] = {64,0}, + [I(17,63)] = {64,0}, + [I(18,63)] = {64,0}, + [I(19,63)] = {64,0}, + [I(20,63)] = {64,0}, + [I(21,63)] = {64,0}, + [I(22,63)] = {64,0}, + [I(23,63)] = {64,0}, + [I(24,63)] = {64,0}, + [I(25,63)] = {64,0}, + [I(26,63)] = {64,0}, + [I(27,63)] = {64,0}, + [I(28,63)] = {64,0}, + [I(29,63)] = {64,0}, + [I(30,63)] = {64,0}, + [I(31,63)] = {64,0}, + [I(32,63)] = {16,0x53FC}, + [I(33,63)] = {20,0xFE3FC}, + [I(34,63)] = {20,0xFE7FC}, + [I(35,63)] = {22,0x3FEBFC}, + [I(36,63)] = {23,0x7FE7FC}, + [I(37,63)] = {16,0x57FC}, + [I(38,63)] = {18,0x3E3FC}, + [I(39,63)] = {21,0x1FEBFC}, + [I(40,63)] = {20,0xFEBFC}, + [I(41,63)] = {20,0xFEFFC}, + [I(42,63)] = {18,0x3E7FC}, + [I(43,63)] = {21,0x1FEFFC}, + [I(44,63)] = {18,0x3EBFC}, + [I(45,63)] = {16,0x5BFC}, + [I(46,63)] = {16,0x5FFC}, + [I(47,63)] = {16,0x63FC}, + [I(48,63)] = {15,0x3FC}, + [I(49,63)] = {15,0x7FC}, + [I(50,63)] = {15,0xBFC}, + [I(51,63)] = {16,0x67FC}, + [I(52,63)] = {16,0x6BFC}, + [I(53,63)] = {16,0x6FFC}, + [I(54,63)] = {16,0x73FC}, + [I(55,63)] = {16,0x77FC}, + [I(56,63)] = {16,0x7BFC}, + [I(57,63)] = {16,0x7FFC}, + [I(58,63)] = {17,0x173FC}, + [I(59,63)] = {18,0x3EFFC}, + [I(60,63)] = {25,0x1FFF3FC}, + [I(61,63)] = {16,0x83FC}, + [I(62,63)] = {22,0x3FEFFC}, + [I(63,63)] = {20,0xFF3FC}, + [I(64,63)] = {23,0x7FEBFC}, + [I(65,63)] = {16,0x87FC}, + [I(66,63)] = {17,0x177FC}, + [I(67,63)] = {17,0x17BFC}, + [I(68,63)] = {17,0x17FFC}, + [I(69,63)] = {17,0x183FC}, + [I(70,63)] = {17,0x187FC}, + [I(71,63)] = {17,0x18BFC}, + [I(72,63)] = {17,0x18FFC}, + [I(73,63)] = {17,0x193FC}, + [I(74,63)] = {17,0x197FC}, + [I(75,63)] = {17,0x19BFC}, + [I(76,63)] = {17,0x19FFC}, + [I(77,63)] = {17,0x1A3FC}, + [I(78,63)] = {17,0x1A7FC}, + [I(79,63)] = {17,0x1ABFC}, + [I(80,63)] = {17,0x1AFFC}, + [I(81,63)] = {17,0x1B3FC}, + [I(82,63)] = {17,0x1B7FC}, + [I(83,63)] = {17,0x1BBFC}, + [I(84,63)] = {17,0x1BFFC}, + [I(85,63)] = {17,0x1C3FC}, + [I(86,63)] = {17,0x1C7FC}, + [I(87,63)] = {17,0x1CBFC}, + [I(88,63)] = {18,0x3F3FC}, + [I(89,63)] = {17,0x1CFFC}, + [I(90,63)] = {18,0x3F7FC}, + [I(91,63)] = {23,0x7FEFFC}, + [I(92,63)] = {29,0x1FFFC3FC}, + [I(93,63)] = {23,0x7FF3FC}, + [I(94,63)] = {24,0xFFF3FC}, + [I(95,63)] = {16,0x8BFC}, + [I(96,63)] = {25,0x1FFF7FC}, + [I(97,63)] = {15,0xFFC}, + [I(98,63)] = {16,0x8FFC}, + [I(99,63)] = {15,0x13FC}, + [I(100,63)] = {16,0x93FC}, + [I(101,63)] = {15,0x17FC}, + [I(102,63)] = {16,0x97FC}, + [I(103,63)] = {16,0x9BFC}, + [I(104,63)] = {16,0x9FFC}, + [I(105,63)] = {15,0x1BFC}, + [I(106,63)] = {17,0x1D3FC}, + [I(107,63)] = {17,0x1D7FC}, + [I(108,63)] = {16,0xA3FC}, + [I(109,63)] = {16,0xA7FC}, + [I(110,63)] = {16,0xABFC}, + [I(111,63)] = {15,0x1FFC}, + [I(112,63)] = {16,0xAFFC}, + [I(113,63)] = {17,0x1DBFC}, + [I(114,63)] = {16,0xB3FC}, + [I(115,63)] = {15,0x23FC}, + [I(116,63)] = {15,0x27FC}, + [I(117,63)] = {16,0xB7FC}, + [I(118,63)] = {17,0x1DFFC}, + [I(119,63)] = {17,0x1E3FC}, + [I(120,63)] = {17,0x1E7FC}, + [I(121,63)] = {17,0x1EBFC}, + [I(122,63)] = {17,0x1EFFC}, + [I(123,63)] = {25,0x1FFFBFC}, + [I(124,63)] = {21,0x1FF3FC}, + [I(125,63)] = {24,0xFFF7FC}, + [I(126,63)] = {23,0x7FF7FC}, + [I(127,63)] = {64,0}, + [I(128,63)] = {30,0x3FFF9BFC}, + [I(129,63)] = {X32,0xFFFF4BFC}, + [I(130,63)] = {30,0x3FFF9FFC}, + [I(131,63)] = {30,0x3FFFA3FC}, + [I(132,63)] = {X32,0xFFFF4FFC}, + [I(133,63)] = {X32,0xFFFF53FC}, + [I(134,63)] = {X32,0xFFFF57FC}, + [I(135,63)] = {64,0}, + [I(136,63)] = {X32,0xFFFF5BFC}, + [I(137,63)] = {64,0}, + [I(138,63)] = {64,0}, + [I(139,63)] = {64,0}, + [I(140,63)] = {64,0}, + [I(141,63)] = {64,0}, + [I(142,63)] = {64,0}, + [I(143,63)] = {64,0}, + [I(144,63)] = {64,0}, + [I(145,63)] = {64,0}, + [I(146,63)] = {X32,0xFFFF5FFC}, + [I(147,63)] = {64,0}, + [I(148,63)] = {64,0}, + [I(149,63)] = {64,0}, + [I(150,63)] = {64,0}, + [I(151,63)] = {64,0}, + [I(152,63)] = {64,0}, + [I(153,63)] = {31,0x7FFF73FC}, + [I(154,63)] = {X32,0xFFFF63FC}, + [I(155,63)] = {64,0}, + [I(156,63)] = {X32,0xFFFF67FC}, + [I(157,63)] = {64,0}, + [I(158,63)] = {64,0}, + [I(159,63)] = {64,0}, + [I(160,63)] = {X32,0xFFFF6BFC}, + [I(161,63)] = {31,0x7FFF77FC}, + [I(162,63)] = {30,0x3FFFA7FC}, + [I(163,63)] = {X32,0xFFFF6FFC}, + [I(164,63)] = {X32,0xFFFF73FC}, + [I(165,63)] = {64,0}, + [I(166,63)] = {64,0}, + [I(167,63)] = {31,0x7FFF7BFC}, + [I(168,63)] = {64,0}, + [I(169,63)] = {X32,0xFFFF77FC}, + [I(170,63)] = {X32,0xFFFF7BFC}, + [I(171,63)] = {64,0}, + [I(172,63)] = {31,0x7FFF7FFC}, + [I(173,63)] = {X32,0xFFFF7FFC}, + [I(174,63)] = {64,0}, + [I(175,63)] = {64,0}, + [I(176,63)] = {31,0x7FFF83FC}, + [I(177,63)] = {31,0x7FFF87FC}, + [I(178,63)] = {X32,0xFFFF83FC}, + [I(179,63)] = {31,0x7FFF8BFC}, + [I(180,63)] = {64,0}, + [I(181,63)] = {X32,0xFFFF87FC}, + [I(182,63)] = {64,0}, + [I(183,63)] = {64,0}, + [I(184,63)] = {30,0x3FFFABFC}, + [I(185,63)] = {X32,0xFFFF8BFC}, + [I(186,63)] = {X32,0xFFFF8FFC}, + [I(187,63)] = {X32,0xFFFF93FC}, + [I(188,63)] = {64,0}, + [I(189,63)] = {X32,0xFFFF97FC}, + [I(190,63)] = {X32,0xFFFF9BFC}, + [I(191,63)] = {64,0}, + [I(192,63)] = {64,0}, + [I(193,63)] = {64,0}, + [I(194,63)] = {30,0x3FFFAFFC}, + [I(195,63)] = {29,0x1FFFC7FC}, + [I(196,63)] = {X32,0xFFFF9FFC}, + [I(197,63)] = {64,0}, + [I(198,63)] = {X32,0xFFFFA3FC}, + [I(199,63)] = {64,0}, + [I(200,63)] = {64,0}, + [I(201,63)] = {64,0}, + [I(202,63)] = {64,0}, + [I(203,63)] = {64,0}, + [I(204,63)] = {64,0}, + [I(205,63)] = {64,0}, + [I(206,63)] = {64,0}, + [I(207,63)] = {64,0}, + [I(208,63)] = {29,0x1FFFCBFC}, + [I(209,63)] = {31,0x7FFF8FFC}, + [I(210,63)] = {64,0}, + [I(211,63)] = {64,0}, + [I(212,63)] = {64,0}, + [I(213,63)] = {64,0}, + [I(214,63)] = {64,0}, + [I(215,63)] = {64,0}, + [I(216,63)] = {31,0x7FFF93FC}, + [I(217,63)] = {31,0x7FFF97FC}, + [I(218,63)] = {64,0}, + [I(219,63)] = {64,0}, + [I(220,63)] = {64,0}, + [I(221,63)] = {64,0}, + [I(222,63)] = {64,0}, + [I(223,63)] = {64,0}, + [I(224,63)] = {30,0x3FFFB3FC}, + [I(225,63)] = {64,0}, + [I(226,63)] = {30,0x3FFFB7FC}, + [I(227,63)] = {31,0x7FFF9BFC}, + [I(228,63)] = {X32,0xFFFFA7FC}, + [I(229,63)] = {31,0x7FFF9FFC}, + [I(230,63)] = {31,0x7FFFA3FC}, + [I(231,63)] = {64,0}, + [I(232,63)] = {X32,0xFFFFABFC}, + [I(233,63)] = {X32,0xFFFFAFFC}, + [I(234,63)] = {64,0}, + [I(235,63)] = {64,0}, + [I(236,63)] = {64,0}, + [I(237,63)] = {64,0}, + [I(238,63)] = {64,0}, + [I(239,63)] = {64,0}, + [I(240,63)] = {64,0}, + [I(241,63)] = {64,0}, + [I(242,63)] = {64,0}, + [I(243,63)] = {64,0}, + [I(244,63)] = {64,0}, + [I(245,63)] = {64,0}, + [I(246,63)] = {64,0}, + [I(247,63)] = {64,0}, + [I(248,63)] = {64,0}, + [I(249,63)] = {64,0}, + [I(250,63)] = {64,0}, + [I(251,63)] = {64,0}, + [I(252,63)] = {64,0}, + [I(253,63)] = {64,0}, + [I(254,63)] = {64,0}, + [I(255,63)] = {64,0}, + [I(0,64)] = {26,0x3FF1FFA}, + [I(1,64)] = {64,0}, + [I(2,64)] = {64,0}, + [I(3,64)] = {64,0}, + [I(4,64)] = {64,0}, + [I(5,64)] = {64,0}, + [I(6,64)] = {64,0}, + [I(7,64)] = {64,0}, + [I(8,64)] = {64,0}, + [I(9,64)] = {64,0}, + [I(10,64)] = {64,0}, + [I(11,64)] = {64,0}, + [I(12,64)] = {64,0}, + [I(13,64)] = {64,0}, + [I(14,64)] = {64,0}, + [I(15,64)] = {64,0}, + [I(16,64)] = {64,0}, + [I(17,64)] = {64,0}, + [I(18,64)] = {64,0}, + [I(19,64)] = {64,0}, + [I(20,64)] = {64,0}, + [I(21,64)] = {64,0}, + [I(22,64)] = {64,0}, + [I(23,64)] = {64,0}, + [I(24,64)] = {64,0}, + [I(25,64)] = {64,0}, + [I(26,64)] = {64,0}, + [I(27,64)] = {64,0}, + [I(28,64)] = {64,0}, + [I(29,64)] = {64,0}, + [I(30,64)] = {64,0}, + [I(31,64)] = {64,0}, + [I(32,64)] = {19,0x29FFA}, + [I(33,64)] = {23,0x7F1FFA}, + [I(34,64)] = {23,0x7F3FFA}, + [I(35,64)] = {25,0x1FF5FFA}, + [I(36,64)] = {26,0x3FF3FFA}, + [I(37,64)] = {19,0x2BFFA}, + [I(38,64)] = {21,0x1F1FFA}, + [I(39,64)] = {24,0xFF5FFA}, + [I(40,64)] = {23,0x7F5FFA}, + [I(41,64)] = {23,0x7F7FFA}, + [I(42,64)] = {21,0x1F3FFA}, + [I(43,64)] = {24,0xFF7FFA}, + [I(44,64)] = {21,0x1F5FFA}, + [I(45,64)] = {19,0x2DFFA}, + [I(46,64)] = {19,0x2FFFA}, + [I(47,64)] = {19,0x31FFA}, + [I(48,64)] = {18,0x1FFA}, + [I(49,64)] = {18,0x3FFA}, + [I(50,64)] = {18,0x5FFA}, + [I(51,64)] = {19,0x33FFA}, + [I(52,64)] = {19,0x35FFA}, + [I(53,64)] = {19,0x37FFA}, + [I(54,64)] = {19,0x39FFA}, + [I(55,64)] = {19,0x3BFFA}, + [I(56,64)] = {19,0x3DFFA}, + [I(57,64)] = {19,0x3FFFA}, + [I(58,64)] = {20,0xB9FFA}, + [I(59,64)] = {21,0x1F7FFA}, + [I(60,64)] = {28,0xFFF9FFA}, + [I(61,64)] = {19,0x41FFA}, + [I(62,64)] = {25,0x1FF7FFA}, + [I(63,64)] = {23,0x7F9FFA}, + [I(64,64)] = {26,0x3FF5FFA}, + [I(65,64)] = {19,0x43FFA}, + [I(66,64)] = {20,0xBBFFA}, + [I(67,64)] = {20,0xBDFFA}, + [I(68,64)] = {20,0xBFFFA}, + [I(69,64)] = {20,0xC1FFA}, + [I(70,64)] = {20,0xC3FFA}, + [I(71,64)] = {20,0xC5FFA}, + [I(72,64)] = {20,0xC7FFA}, + [I(73,64)] = {20,0xC9FFA}, + [I(74,64)] = {20,0xCBFFA}, + [I(75,64)] = {20,0xCDFFA}, + [I(76,64)] = {20,0xCFFFA}, + [I(77,64)] = {20,0xD1FFA}, + [I(78,64)] = {20,0xD3FFA}, + [I(79,64)] = {20,0xD5FFA}, + [I(80,64)] = {20,0xD7FFA}, + [I(81,64)] = {20,0xD9FFA}, + [I(82,64)] = {20,0xDBFFA}, + [I(83,64)] = {20,0xDDFFA}, + [I(84,64)] = {20,0xDFFFA}, + [I(85,64)] = {20,0xE1FFA}, + [I(86,64)] = {20,0xE3FFA}, + [I(87,64)] = {20,0xE5FFA}, + [I(88,64)] = {21,0x1F9FFA}, + [I(89,64)] = {20,0xE7FFA}, + [I(90,64)] = {21,0x1FBFFA}, + [I(91,64)] = {26,0x3FF7FFA}, + [I(92,64)] = {X32,0xFFFE1FFA}, + [I(93,64)] = {26,0x3FF9FFA}, + [I(94,64)] = {27,0x7FF9FFA}, + [I(95,64)] = {19,0x45FFA}, + [I(96,64)] = {28,0xFFFBFFA}, + [I(97,64)] = {18,0x7FFA}, + [I(98,64)] = {19,0x47FFA}, + [I(99,64)] = {18,0x9FFA}, + [I(100,64)] = {19,0x49FFA}, + [I(101,64)] = {18,0xBFFA}, + [I(102,64)] = {19,0x4BFFA}, + [I(103,64)] = {19,0x4DFFA}, + [I(104,64)] = {19,0x4FFFA}, + [I(105,64)] = {18,0xDFFA}, + [I(106,64)] = {20,0xE9FFA}, + [I(107,64)] = {20,0xEBFFA}, + [I(108,64)] = {19,0x51FFA}, + [I(109,64)] = {19,0x53FFA}, + [I(110,64)] = {19,0x55FFA}, + [I(111,64)] = {18,0xFFFA}, + [I(112,64)] = {19,0x57FFA}, + [I(113,64)] = {20,0xEDFFA}, + [I(114,64)] = {19,0x59FFA}, + [I(115,64)] = {18,0x11FFA}, + [I(116,64)] = {18,0x13FFA}, + [I(117,64)] = {19,0x5BFFA}, + [I(118,64)] = {20,0xEFFFA}, + [I(119,64)] = {20,0xF1FFA}, + [I(120,64)] = {20,0xF3FFA}, + [I(121,64)] = {20,0xF5FFA}, + [I(122,64)] = {20,0xF7FFA}, + [I(123,64)] = {28,0xFFFDFFA}, + [I(124,64)] = {24,0xFF9FFA}, + [I(125,64)] = {27,0x7FFBFFA}, + [I(126,64)] = {26,0x3FFBFFA}, + [I(127,64)] = {64,0}, + [I(128,64)] = {64,0}, + [I(129,64)] = {64,0}, + [I(130,64)] = {64,0}, + [I(131,64)] = {64,0}, + [I(132,64)] = {64,0}, + [I(133,64)] = {64,0}, + [I(134,64)] = {64,0}, + [I(135,64)] = {64,0}, + [I(136,64)] = {64,0}, + [I(137,64)] = {64,0}, + [I(138,64)] = {64,0}, + [I(139,64)] = {64,0}, + [I(140,64)] = {64,0}, + [I(141,64)] = {64,0}, + [I(142,64)] = {64,0}, + [I(143,64)] = {64,0}, + [I(144,64)] = {64,0}, + [I(145,64)] = {64,0}, + [I(146,64)] = {64,0}, + [I(147,64)] = {64,0}, + [I(148,64)] = {64,0}, + [I(149,64)] = {64,0}, + [I(150,64)] = {64,0}, + [I(151,64)] = {64,0}, + [I(152,64)] = {64,0}, + [I(153,64)] = {64,0}, + [I(154,64)] = {64,0}, + [I(155,64)] = {64,0}, + [I(156,64)] = {64,0}, + [I(157,64)] = {64,0}, + [I(158,64)] = {64,0}, + [I(159,64)] = {64,0}, + [I(160,64)] = {64,0}, + [I(161,64)] = {64,0}, + [I(162,64)] = {64,0}, + [I(163,64)] = {64,0}, + [I(164,64)] = {64,0}, + [I(165,64)] = {64,0}, + [I(166,64)] = {64,0}, + [I(167,64)] = {64,0}, + [I(168,64)] = {64,0}, + [I(169,64)] = {64,0}, + [I(170,64)] = {64,0}, + [I(171,64)] = {64,0}, + [I(172,64)] = {64,0}, + [I(173,64)] = {64,0}, + [I(174,64)] = {64,0}, + [I(175,64)] = {64,0}, + [I(176,64)] = {64,0}, + [I(177,64)] = {64,0}, + [I(178,64)] = {64,0}, + [I(179,64)] = {64,0}, + [I(180,64)] = {64,0}, + [I(181,64)] = {64,0}, + [I(182,64)] = {64,0}, + [I(183,64)] = {64,0}, + [I(184,64)] = {64,0}, + [I(185,64)] = {64,0}, + [I(186,64)] = {64,0}, + [I(187,64)] = {64,0}, + [I(188,64)] = {64,0}, + [I(189,64)] = {64,0}, + [I(190,64)] = {64,0}, + [I(191,64)] = {64,0}, + [I(192,64)] = {64,0}, + [I(193,64)] = {64,0}, + [I(194,64)] = {64,0}, + [I(195,64)] = {X32,0xFFFE3FFA}, + [I(196,64)] = {64,0}, + [I(197,64)] = {64,0}, + [I(198,64)] = {64,0}, + [I(199,64)] = {64,0}, + [I(200,64)] = {64,0}, + [I(201,64)] = {64,0}, + [I(202,64)] = {64,0}, + [I(203,64)] = {64,0}, + [I(204,64)] = {64,0}, + [I(205,64)] = {64,0}, + [I(206,64)] = {64,0}, + [I(207,64)] = {64,0}, + [I(208,64)] = {X32,0xFFFE5FFA}, + [I(209,64)] = {64,0}, + [I(210,64)] = {64,0}, + [I(211,64)] = {64,0}, + [I(212,64)] = {64,0}, + [I(213,64)] = {64,0}, + [I(214,64)] = {64,0}, + [I(215,64)] = {64,0}, + [I(216,64)] = {64,0}, + [I(217,64)] = {64,0}, + [I(218,64)] = {64,0}, + [I(219,64)] = {64,0}, + [I(220,64)] = {64,0}, + [I(221,64)] = {64,0}, + [I(222,64)] = {64,0}, + [I(223,64)] = {64,0}, + [I(224,64)] = {64,0}, + [I(225,64)] = {64,0}, + [I(226,64)] = {64,0}, + [I(227,64)] = {64,0}, + [I(228,64)] = {64,0}, + [I(229,64)] = {64,0}, + [I(230,64)] = {64,0}, + [I(231,64)] = {64,0}, + [I(232,64)] = {64,0}, + [I(233,64)] = {64,0}, + [I(234,64)] = {64,0}, + [I(235,64)] = {64,0}, + [I(236,64)] = {64,0}, + [I(237,64)] = {64,0}, + [I(238,64)] = {64,0}, + [I(239,64)] = {64,0}, + [I(240,64)] = {64,0}, + [I(241,64)] = {64,0}, + [I(242,64)] = {64,0}, + [I(243,64)] = {64,0}, + [I(244,64)] = {64,0}, + [I(245,64)] = {64,0}, + [I(246,64)] = {64,0}, + [I(247,64)] = {64,0}, + [I(248,64)] = {64,0}, + [I(249,64)] = {64,0}, + [I(250,64)] = {64,0}, + [I(251,64)] = {64,0}, + [I(252,64)] = {64,0}, + [I(253,64)] = {64,0}, + [I(254,64)] = {64,0}, + [I(255,64)] = {64,0}, + [I(0,65)] = {19,0x7FE21}, + [I(1,65)] = {29,0x1FFFF621}, + [I(2,65)] = {64,0}, + [I(3,65)] = {64,0}, + [I(4,65)] = {64,0}, + [I(5,65)] = {64,0}, + [I(6,65)] = {64,0}, + [I(7,65)] = {64,0}, + [I(8,65)] = {64,0}, + [I(9,65)] = {30,0x3FFFFAA1}, + [I(10,65)] = {64,0}, + [I(11,65)] = {64,0}, + [I(12,65)] = {64,0}, + [I(13,65)] = {64,0}, + [I(14,65)] = {64,0}, + [I(15,65)] = {64,0}, + [I(16,65)] = {64,0}, + [I(17,65)] = {64,0}, + [I(18,65)] = {64,0}, + [I(19,65)] = {64,0}, + [I(20,65)] = {64,0}, + [I(21,65)] = {64,0}, + [I(22,65)] = {64,0}, + [I(23,65)] = {64,0}, + [I(24,65)] = {64,0}, + [I(25,65)] = {64,0}, + [I(26,65)] = {64,0}, + [I(27,65)] = {64,0}, + [I(28,65)] = {64,0}, + [I(29,65)] = {64,0}, + [I(30,65)] = {64,0}, + [I(31,65)] = {64,0}, + [I(32,65)] = {12,0x521}, + [I(33,65)] = {16,0xFE21}, + [I(34,65)] = {16,0xFE61}, + [I(35,65)] = {18,0x3FEA1}, + [I(36,65)] = {19,0x7FE61}, + [I(37,65)] = {12,0x561}, + [I(38,65)] = {14,0x3E21}, + [I(39,65)] = {17,0x1FEA1}, + [I(40,65)] = {16,0xFEA1}, + [I(41,65)] = {16,0xFEE1}, + [I(42,65)] = {14,0x3E61}, + [I(43,65)] = {17,0x1FEE1}, + [I(44,65)] = {14,0x3EA1}, + [I(45,65)] = {12,0x5A1}, + [I(46,65)] = {12,0x5E1}, + [I(47,65)] = {12,0x621}, + [I(48,65)] = {11,0x21}, + [I(49,65)] = {11,0x61}, + [I(50,65)] = {11,0xA1}, + [I(51,65)] = {12,0x661}, + [I(52,65)] = {12,0x6A1}, + [I(53,65)] = {12,0x6E1}, + [I(54,65)] = {12,0x721}, + [I(55,65)] = {12,0x761}, + [I(56,65)] = {12,0x7A1}, + [I(57,65)] = {12,0x7E1}, + [I(58,65)] = {13,0x1721}, + [I(59,65)] = {14,0x3EE1}, + [I(60,65)] = {21,0x1FFF21}, + [I(61,65)] = {12,0x821}, + [I(62,65)] = {18,0x3FEE1}, + [I(63,65)] = {16,0xFF21}, + [I(64,65)] = {19,0x7FEA1}, + [I(65,65)] = {12,0x861}, + [I(66,65)] = {13,0x1761}, + [I(67,65)] = {13,0x17A1}, + [I(68,65)] = {13,0x17E1}, + [I(69,65)] = {13,0x1821}, + [I(70,65)] = {13,0x1861}, + [I(71,65)] = {13,0x18A1}, + [I(72,65)] = {13,0x18E1}, + [I(73,65)] = {13,0x1921}, + [I(74,65)] = {13,0x1961}, + [I(75,65)] = {13,0x19A1}, + [I(76,65)] = {13,0x19E1}, + [I(77,65)] = {13,0x1A21}, + [I(78,65)] = {13,0x1A61}, + [I(79,65)] = {13,0x1AA1}, + [I(80,65)] = {13,0x1AE1}, + [I(81,65)] = {13,0x1B21}, + [I(82,65)] = {13,0x1B61}, + [I(83,65)] = {13,0x1BA1}, + [I(84,65)] = {13,0x1BE1}, + [I(85,65)] = {13,0x1C21}, + [I(86,65)] = {13,0x1C61}, + [I(87,65)] = {13,0x1CA1}, + [I(88,65)] = {14,0x3F21}, + [I(89,65)] = {13,0x1CE1}, + [I(90,65)] = {14,0x3F61}, + [I(91,65)] = {19,0x7FEE1}, + [I(92,65)] = {25,0x1FFFC21}, + [I(93,65)] = {19,0x7FF21}, + [I(94,65)] = {20,0xFFF21}, + [I(95,65)] = {12,0x8A1}, + [I(96,65)] = {21,0x1FFF61}, + [I(97,65)] = {11,0xE1}, + [I(98,65)] = {12,0x8E1}, + [I(99,65)] = {11,0x121}, + [I(100,65)] = {12,0x921}, + [I(101,65)] = {11,0x161}, + [I(102,65)] = {12,0x961}, + [I(103,65)] = {12,0x9A1}, + [I(104,65)] = {12,0x9E1}, + [I(105,65)] = {11,0x1A1}, + [I(106,65)] = {13,0x1D21}, + [I(107,65)] = {13,0x1D61}, + [I(108,65)] = {12,0xA21}, + [I(109,65)] = {12,0xA61}, + [I(110,65)] = {12,0xAA1}, + [I(111,65)] = {11,0x1E1}, + [I(112,65)] = {12,0xAE1}, + [I(113,65)] = {13,0x1DA1}, + [I(114,65)] = {12,0xB21}, + [I(115,65)] = {11,0x221}, + [I(116,65)] = {11,0x261}, + [I(117,65)] = {12,0xB61}, + [I(118,65)] = {13,0x1DE1}, + [I(119,65)] = {13,0x1E21}, + [I(120,65)] = {13,0x1E61}, + [I(121,65)] = {13,0x1EA1}, + [I(122,65)] = {13,0x1EE1}, + [I(123,65)] = {21,0x1FFFA1}, + [I(124,65)] = {17,0x1FF21}, + [I(125,65)] = {20,0xFFF61}, + [I(126,65)] = {19,0x7FF61}, + [I(127,65)] = {64,0}, + [I(128,65)] = {26,0x3FFF9A1}, + [I(129,65)] = {28,0xFFFF4A1}, + [I(130,65)] = {26,0x3FFF9E1}, + [I(131,65)] = {26,0x3FFFA21}, + [I(132,65)] = {28,0xFFFF4E1}, + [I(133,65)] = {28,0xFFFF521}, + [I(134,65)] = {28,0xFFFF561}, + [I(135,65)] = {29,0x1FFFF661}, + [I(136,65)] = {28,0xFFFF5A1}, + [I(137,65)] = {29,0x1FFFF6A1}, + [I(138,65)] = {29,0x1FFFF6E1}, + [I(139,65)] = {29,0x1FFFF721}, + [I(140,65)] = {29,0x1FFFF761}, + [I(141,65)] = {29,0x1FFFF7A1}, + [I(142,65)] = {30,0x3FFFFAE1}, + [I(143,65)] = {29,0x1FFFF7E1}, + [I(144,65)] = {30,0x3FFFFB21}, + [I(145,65)] = {30,0x3FFFFB61}, + [I(146,65)] = {28,0xFFFF5E1}, + [I(147,65)] = {29,0x1FFFF821}, + [I(148,65)] = {30,0x3FFFFBA1}, + [I(149,65)] = {29,0x1FFFF861}, + [I(150,65)] = {29,0x1FFFF8A1}, + [I(151,65)] = {29,0x1FFFF8E1}, + [I(152,65)] = {29,0x1FFFF921}, + [I(153,65)] = {27,0x7FFF721}, + [I(154,65)] = {28,0xFFFF621}, + [I(155,65)] = {29,0x1FFFF961}, + [I(156,65)] = {28,0xFFFF661}, + [I(157,65)] = {29,0x1FFFF9A1}, + [I(158,65)] = {29,0x1FFFF9E1}, + [I(159,65)] = {30,0x3FFFFBE1}, + [I(160,65)] = {28,0xFFFF6A1}, + [I(161,65)] = {27,0x7FFF761}, + [I(162,65)] = {26,0x3FFFA61}, + [I(163,65)] = {28,0xFFFF6E1}, + [I(164,65)] = {28,0xFFFF721}, + [I(165,65)] = {29,0x1FFFFA21}, + [I(166,65)] = {29,0x1FFFFA61}, + [I(167,65)] = {27,0x7FFF7A1}, + [I(168,65)] = {29,0x1FFFFAA1}, + [I(169,65)] = {28,0xFFFF761}, + [I(170,65)] = {28,0xFFFF7A1}, + [I(171,65)] = {30,0x3FFFFC21}, + [I(172,65)] = {27,0x7FFF7E1}, + [I(173,65)] = {28,0xFFFF7E1}, + [I(174,65)] = {29,0x1FFFFAE1}, + [I(175,65)] = {29,0x1FFFFB21}, + [I(176,65)] = {27,0x7FFF821}, + [I(177,65)] = {27,0x7FFF861}, + [I(178,65)] = {28,0xFFFF821}, + [I(179,65)] = {27,0x7FFF8A1}, + [I(180,65)] = {29,0x1FFFFB61}, + [I(181,65)] = {28,0xFFFF861}, + [I(182,65)] = {29,0x1FFFFBA1}, + [I(183,65)] = {29,0x1FFFFBE1}, + [I(184,65)] = {26,0x3FFFAA1}, + [I(185,65)] = {28,0xFFFF8A1}, + [I(186,65)] = {28,0xFFFF8E1}, + [I(187,65)] = {28,0xFFFF921}, + [I(188,65)] = {29,0x1FFFFC21}, + [I(189,65)] = {28,0xFFFF961}, + [I(190,65)] = {28,0xFFFF9A1}, + [I(191,65)] = {29,0x1FFFFC61}, + [I(192,65)] = {X32,0xFFFFF821}, + [I(193,65)] = {X32,0xFFFFF861}, + [I(194,65)] = {26,0x3FFFAE1}, + [I(195,65)] = {25,0x1FFFC61}, + [I(196,65)] = {28,0xFFFF9E1}, + [I(197,65)] = {29,0x1FFFFCA1}, + [I(198,65)] = {28,0xFFFFA21}, + [I(199,65)] = {31,0x7FFFFB21}, + [I(200,65)] = {X32,0xFFFFF8A1}, + [I(201,65)] = {X32,0xFFFFF8E1}, + [I(202,65)] = {X32,0xFFFFF921}, + [I(203,65)] = {64,0}, + [I(204,65)] = {64,0}, + [I(205,65)] = {X32,0xFFFFF961}, + [I(206,65)] = {30,0x3FFFFC61}, + [I(207,65)] = {31,0x7FFFFB61}, + [I(208,65)] = {25,0x1FFFCA1}, + [I(209,65)] = {27,0x7FFF8E1}, + [I(210,65)] = {X32,0xFFFFF9A1}, + [I(211,65)] = {64,0}, + [I(212,65)] = {64,0}, + [I(213,65)] = {X32,0xFFFFF9E1}, + [I(214,65)] = {64,0}, + [I(215,65)] = {30,0x3FFFFCA1}, + [I(216,65)] = {27,0x7FFF921}, + [I(217,65)] = {27,0x7FFF961}, + [I(218,65)] = {X32,0xFFFFFA21}, + [I(219,65)] = {X32,0xFFFFFA61}, + [I(220,65)] = {64,0}, + [I(221,65)] = {64,0}, + [I(222,65)] = {64,0}, + [I(223,65)] = {64,0}, + [I(224,65)] = {26,0x3FFFB21}, + [I(225,65)] = {30,0x3FFFFCE1}, + [I(226,65)] = {26,0x3FFFB61}, + [I(227,65)] = {27,0x7FFF9A1}, + [I(228,65)] = {28,0xFFFFA61}, + [I(229,65)] = {27,0x7FFF9E1}, + [I(230,65)] = {27,0x7FFFA21}, + [I(231,65)] = {29,0x1FFFFCE1}, + [I(232,65)] = {28,0xFFFFAA1}, + [I(233,65)] = {28,0xFFFFAE1}, + [I(234,65)] = {31,0x7FFFFBA1}, + [I(235,65)] = {31,0x7FFFFBE1}, + [I(236,65)] = {30,0x3FFFFD21}, + [I(237,65)] = {30,0x3FFFFD61}, + [I(238,65)] = {X32,0xFFFFFAA1}, + [I(239,65)] = {29,0x1FFFFD21}, + [I(240,65)] = {X32,0xFFFFFAE1}, + [I(241,65)] = {64,0}, + [I(242,65)] = {X32,0xFFFFFB21}, + [I(243,65)] = {X32,0xFFFFFB61}, + [I(244,65)] = {64,0}, + [I(245,65)] = {64,0}, + [I(246,65)] = {64,0}, + [I(247,65)] = {64,0}, + [I(248,65)] = {64,0}, + [I(249,65)] = {64,0}, + [I(250,65)] = {64,0}, + [I(251,65)] = {64,0}, + [I(252,65)] = {64,0}, + [I(253,65)] = {64,0}, + [I(254,65)] = {64,0}, + [I(255,65)] = {X32,0xFFFFFBA1}, + [I(0,66)] = {20,0xFFC5D}, + [I(1,66)] = {30,0x3FFFEC5D}, + [I(2,66)] = {64,0}, + [I(3,66)] = {64,0}, + [I(4,66)] = {64,0}, + [I(5,66)] = {64,0}, + [I(6,66)] = {64,0}, + [I(7,66)] = {64,0}, + [I(8,66)] = {64,0}, + [I(9,66)] = {31,0x7FFFF55D}, + [I(10,66)] = {64,0}, + [I(11,66)] = {64,0}, + [I(12,66)] = {64,0}, + [I(13,66)] = {64,0}, + [I(14,66)] = {64,0}, + [I(15,66)] = {64,0}, + [I(16,66)] = {64,0}, + [I(17,66)] = {64,0}, + [I(18,66)] = {64,0}, + [I(19,66)] = {64,0}, + [I(20,66)] = {64,0}, + [I(21,66)] = {64,0}, + [I(22,66)] = {64,0}, + [I(23,66)] = {64,0}, + [I(24,66)] = {64,0}, + [I(25,66)] = {64,0}, + [I(26,66)] = {64,0}, + [I(27,66)] = {64,0}, + [I(28,66)] = {64,0}, + [I(29,66)] = {64,0}, + [I(30,66)] = {64,0}, + [I(31,66)] = {64,0}, + [I(32,66)] = {13,0xA5D}, + [I(33,66)] = {17,0x1FC5D}, + [I(34,66)] = {17,0x1FCDD}, + [I(35,66)] = {19,0x7FD5D}, + [I(36,66)] = {20,0xFFCDD}, + [I(37,66)] = {13,0xADD}, + [I(38,66)] = {15,0x7C5D}, + [I(39,66)] = {18,0x3FD5D}, + [I(40,66)] = {17,0x1FD5D}, + [I(41,66)] = {17,0x1FDDD}, + [I(42,66)] = {15,0x7CDD}, + [I(43,66)] = {18,0x3FDDD}, + [I(44,66)] = {15,0x7D5D}, + [I(45,66)] = {13,0xB5D}, + [I(46,66)] = {13,0xBDD}, + [I(47,66)] = {13,0xC5D}, + [I(48,66)] = {12,0x5D}, + [I(49,66)] = {12,0xDD}, + [I(50,66)] = {12,0x15D}, + [I(51,66)] = {13,0xCDD}, + [I(52,66)] = {13,0xD5D}, + [I(53,66)] = {13,0xDDD}, + [I(54,66)] = {13,0xE5D}, + [I(55,66)] = {13,0xEDD}, + [I(56,66)] = {13,0xF5D}, + [I(57,66)] = {13,0xFDD}, + [I(58,66)] = {14,0x2E5D}, + [I(59,66)] = {15,0x7DDD}, + [I(60,66)] = {22,0x3FFE5D}, + [I(61,66)] = {13,0x105D}, + [I(62,66)] = {19,0x7FDDD}, + [I(63,66)] = {17,0x1FE5D}, + [I(64,66)] = {20,0xFFD5D}, + [I(65,66)] = {13,0x10DD}, + [I(66,66)] = {14,0x2EDD}, + [I(67,66)] = {14,0x2F5D}, + [I(68,66)] = {14,0x2FDD}, + [I(69,66)] = {14,0x305D}, + [I(70,66)] = {14,0x30DD}, + [I(71,66)] = {14,0x315D}, + [I(72,66)] = {14,0x31DD}, + [I(73,66)] = {14,0x325D}, + [I(74,66)] = {14,0x32DD}, + [I(75,66)] = {14,0x335D}, + [I(76,66)] = {14,0x33DD}, + [I(77,66)] = {14,0x345D}, + [I(78,66)] = {14,0x34DD}, + [I(79,66)] = {14,0x355D}, + [I(80,66)] = {14,0x35DD}, + [I(81,66)] = {14,0x365D}, + [I(82,66)] = {14,0x36DD}, + [I(83,66)] = {14,0x375D}, + [I(84,66)] = {14,0x37DD}, + [I(85,66)] = {14,0x385D}, + [I(86,66)] = {14,0x38DD}, + [I(87,66)] = {14,0x395D}, + [I(88,66)] = {15,0x7E5D}, + [I(89,66)] = {14,0x39DD}, + [I(90,66)] = {15,0x7EDD}, + [I(91,66)] = {20,0xFFDDD}, + [I(92,66)] = {26,0x3FFF85D}, + [I(93,66)] = {20,0xFFE5D}, + [I(94,66)] = {21,0x1FFE5D}, + [I(95,66)] = {13,0x115D}, + [I(96,66)] = {22,0x3FFEDD}, + [I(97,66)] = {12,0x1DD}, + [I(98,66)] = {13,0x11DD}, + [I(99,66)] = {12,0x25D}, + [I(100,66)] = {13,0x125D}, + [I(101,66)] = {12,0x2DD}, + [I(102,66)] = {13,0x12DD}, + [I(103,66)] = {13,0x135D}, + [I(104,66)] = {13,0x13DD}, + [I(105,66)] = {12,0x35D}, + [I(106,66)] = {14,0x3A5D}, + [I(107,66)] = {14,0x3ADD}, + [I(108,66)] = {13,0x145D}, + [I(109,66)] = {13,0x14DD}, + [I(110,66)] = {13,0x155D}, + [I(111,66)] = {12,0x3DD}, + [I(112,66)] = {13,0x15DD}, + [I(113,66)] = {14,0x3B5D}, + [I(114,66)] = {13,0x165D}, + [I(115,66)] = {12,0x45D}, + [I(116,66)] = {12,0x4DD}, + [I(117,66)] = {13,0x16DD}, + [I(118,66)] = {14,0x3BDD}, + [I(119,66)] = {14,0x3C5D}, + [I(120,66)] = {14,0x3CDD}, + [I(121,66)] = {14,0x3D5D}, + [I(122,66)] = {14,0x3DDD}, + [I(123,66)] = {22,0x3FFF5D}, + [I(124,66)] = {18,0x3FE5D}, + [I(125,66)] = {21,0x1FFEDD}, + [I(126,66)] = {20,0xFFEDD}, + [I(127,66)] = {64,0}, + [I(128,66)] = {27,0x7FFF35D}, + [I(129,66)] = {29,0x1FFFE95D}, + [I(130,66)] = {27,0x7FFF3DD}, + [I(131,66)] = {27,0x7FFF45D}, + [I(132,66)] = {29,0x1FFFE9DD}, + [I(133,66)] = {29,0x1FFFEA5D}, + [I(134,66)] = {29,0x1FFFEADD}, + [I(135,66)] = {30,0x3FFFECDD}, + [I(136,66)] = {29,0x1FFFEB5D}, + [I(137,66)] = {30,0x3FFFED5D}, + [I(138,66)] = {30,0x3FFFEDDD}, + [I(139,66)] = {30,0x3FFFEE5D}, + [I(140,66)] = {30,0x3FFFEEDD}, + [I(141,66)] = {30,0x3FFFEF5D}, + [I(142,66)] = {31,0x7FFFF5DD}, + [I(143,66)] = {30,0x3FFFEFDD}, + [I(144,66)] = {31,0x7FFFF65D}, + [I(145,66)] = {31,0x7FFFF6DD}, + [I(146,66)] = {29,0x1FFFEBDD}, + [I(147,66)] = {30,0x3FFFF05D}, + [I(148,66)] = {31,0x7FFFF75D}, + [I(149,66)] = {30,0x3FFFF0DD}, + [I(150,66)] = {30,0x3FFFF15D}, + [I(151,66)] = {30,0x3FFFF1DD}, + [I(152,66)] = {30,0x3FFFF25D}, + [I(153,66)] = {28,0xFFFEE5D}, + [I(154,66)] = {29,0x1FFFEC5D}, + [I(155,66)] = {30,0x3FFFF2DD}, + [I(156,66)] = {29,0x1FFFECDD}, + [I(157,66)] = {30,0x3FFFF35D}, + [I(158,66)] = {30,0x3FFFF3DD}, + [I(159,66)] = {31,0x7FFFF7DD}, + [I(160,66)] = {29,0x1FFFED5D}, + [I(161,66)] = {28,0xFFFEEDD}, + [I(162,66)] = {27,0x7FFF4DD}, + [I(163,66)] = {29,0x1FFFEDDD}, + [I(164,66)] = {29,0x1FFFEE5D}, + [I(165,66)] = {30,0x3FFFF45D}, + [I(166,66)] = {30,0x3FFFF4DD}, + [I(167,66)] = {28,0xFFFEF5D}, + [I(168,66)] = {30,0x3FFFF55D}, + [I(169,66)] = {29,0x1FFFEEDD}, + [I(170,66)] = {29,0x1FFFEF5D}, + [I(171,66)] = {31,0x7FFFF85D}, + [I(172,66)] = {28,0xFFFEFDD}, + [I(173,66)] = {29,0x1FFFEFDD}, + [I(174,66)] = {30,0x3FFFF5DD}, + [I(175,66)] = {30,0x3FFFF65D}, + [I(176,66)] = {28,0xFFFF05D}, + [I(177,66)] = {28,0xFFFF0DD}, + [I(178,66)] = {29,0x1FFFF05D}, + [I(179,66)] = {28,0xFFFF15D}, + [I(180,66)] = {30,0x3FFFF6DD}, + [I(181,66)] = {29,0x1FFFF0DD}, + [I(182,66)] = {30,0x3FFFF75D}, + [I(183,66)] = {30,0x3FFFF7DD}, + [I(184,66)] = {27,0x7FFF55D}, + [I(185,66)] = {29,0x1FFFF15D}, + [I(186,66)] = {29,0x1FFFF1DD}, + [I(187,66)] = {29,0x1FFFF25D}, + [I(188,66)] = {30,0x3FFFF85D}, + [I(189,66)] = {29,0x1FFFF2DD}, + [I(190,66)] = {29,0x1FFFF35D}, + [I(191,66)] = {30,0x3FFFF8DD}, + [I(192,66)] = {64,0}, + [I(193,66)] = {64,0}, + [I(194,66)] = {27,0x7FFF5DD}, + [I(195,66)] = {26,0x3FFF8DD}, + [I(196,66)] = {29,0x1FFFF3DD}, + [I(197,66)] = {30,0x3FFFF95D}, + [I(198,66)] = {29,0x1FFFF45D}, + [I(199,66)] = {X32,0xFFFFF65D}, + [I(200,66)] = {64,0}, + [I(201,66)] = {64,0}, + [I(202,66)] = {64,0}, + [I(203,66)] = {64,0}, + [I(204,66)] = {64,0}, + [I(205,66)] = {64,0}, + [I(206,66)] = {31,0x7FFFF8DD}, + [I(207,66)] = {X32,0xFFFFF6DD}, + [I(208,66)] = {26,0x3FFF95D}, + [I(209,66)] = {28,0xFFFF1DD}, + [I(210,66)] = {64,0}, + [I(211,66)] = {64,0}, + [I(212,66)] = {64,0}, + [I(213,66)] = {64,0}, + [I(214,66)] = {64,0}, + [I(215,66)] = {31,0x7FFFF95D}, + [I(216,66)] = {28,0xFFFF25D}, + [I(217,66)] = {28,0xFFFF2DD}, + [I(218,66)] = {64,0}, + [I(219,66)] = {64,0}, + [I(220,66)] = {64,0}, + [I(221,66)] = {64,0}, + [I(222,66)] = {64,0}, + [I(223,66)] = {64,0}, + [I(224,66)] = {27,0x7FFF65D}, + [I(225,66)] = {31,0x7FFFF9DD}, + [I(226,66)] = {27,0x7FFF6DD}, + [I(227,66)] = {28,0xFFFF35D}, + [I(228,66)] = {29,0x1FFFF4DD}, + [I(229,66)] = {28,0xFFFF3DD}, + [I(230,66)] = {28,0xFFFF45D}, + [I(231,66)] = {30,0x3FFFF9DD}, + [I(232,66)] = {29,0x1FFFF55D}, + [I(233,66)] = {29,0x1FFFF5DD}, + [I(234,66)] = {X32,0xFFFFF75D}, + [I(235,66)] = {X32,0xFFFFF7DD}, + [I(236,66)] = {31,0x7FFFFA5D}, + [I(237,66)] = {31,0x7FFFFADD}, + [I(238,66)] = {64,0}, + [I(239,66)] = {30,0x3FFFFA5D}, + [I(240,66)] = {64,0}, + [I(241,66)] = {64,0}, + [I(242,66)] = {64,0}, + [I(243,66)] = {64,0}, + [I(244,66)] = {64,0}, + [I(245,66)] = {64,0}, + [I(246,66)] = {64,0}, + [I(247,66)] = {64,0}, + [I(248,66)] = {64,0}, + [I(249,66)] = {64,0}, + [I(250,66)] = {64,0}, + [I(251,66)] = {64,0}, + [I(252,66)] = {64,0}, + [I(253,66)] = {64,0}, + [I(254,66)] = {64,0}, + [I(255,66)] = {64,0}, + [I(0,67)] = {20,0xFFC5E}, + [I(1,67)] = {30,0x3FFFEC5E}, + [I(2,67)] = {64,0}, + [I(3,67)] = {64,0}, + [I(4,67)] = {64,0}, + [I(5,67)] = {64,0}, + [I(6,67)] = {64,0}, + [I(7,67)] = {64,0}, + [I(8,67)] = {64,0}, + [I(9,67)] = {31,0x7FFFF55E}, + [I(10,67)] = {64,0}, + [I(11,67)] = {64,0}, + [I(12,67)] = {64,0}, + [I(13,67)] = {64,0}, + [I(14,67)] = {64,0}, + [I(15,67)] = {64,0}, + [I(16,67)] = {64,0}, + [I(17,67)] = {64,0}, + [I(18,67)] = {64,0}, + [I(19,67)] = {64,0}, + [I(20,67)] = {64,0}, + [I(21,67)] = {64,0}, + [I(22,67)] = {64,0}, + [I(23,67)] = {64,0}, + [I(24,67)] = {64,0}, + [I(25,67)] = {64,0}, + [I(26,67)] = {64,0}, + [I(27,67)] = {64,0}, + [I(28,67)] = {64,0}, + [I(29,67)] = {64,0}, + [I(30,67)] = {64,0}, + [I(31,67)] = {64,0}, + [I(32,67)] = {13,0xA5E}, + [I(33,67)] = {17,0x1FC5E}, + [I(34,67)] = {17,0x1FCDE}, + [I(35,67)] = {19,0x7FD5E}, + [I(36,67)] = {20,0xFFCDE}, + [I(37,67)] = {13,0xADE}, + [I(38,67)] = {15,0x7C5E}, + [I(39,67)] = {18,0x3FD5E}, + [I(40,67)] = {17,0x1FD5E}, + [I(41,67)] = {17,0x1FDDE}, + [I(42,67)] = {15,0x7CDE}, + [I(43,67)] = {18,0x3FDDE}, + [I(44,67)] = {15,0x7D5E}, + [I(45,67)] = {13,0xB5E}, + [I(46,67)] = {13,0xBDE}, + [I(47,67)] = {13,0xC5E}, + [I(48,67)] = {12,0x5E}, + [I(49,67)] = {12,0xDE}, + [I(50,67)] = {12,0x15E}, + [I(51,67)] = {13,0xCDE}, + [I(52,67)] = {13,0xD5E}, + [I(53,67)] = {13,0xDDE}, + [I(54,67)] = {13,0xE5E}, + [I(55,67)] = {13,0xEDE}, + [I(56,67)] = {13,0xF5E}, + [I(57,67)] = {13,0xFDE}, + [I(58,67)] = {14,0x2E5E}, + [I(59,67)] = {15,0x7DDE}, + [I(60,67)] = {22,0x3FFE5E}, + [I(61,67)] = {13,0x105E}, + [I(62,67)] = {19,0x7FDDE}, + [I(63,67)] = {17,0x1FE5E}, + [I(64,67)] = {20,0xFFD5E}, + [I(65,67)] = {13,0x10DE}, + [I(66,67)] = {14,0x2EDE}, + [I(67,67)] = {14,0x2F5E}, + [I(68,67)] = {14,0x2FDE}, + [I(69,67)] = {14,0x305E}, + [I(70,67)] = {14,0x30DE}, + [I(71,67)] = {14,0x315E}, + [I(72,67)] = {14,0x31DE}, + [I(73,67)] = {14,0x325E}, + [I(74,67)] = {14,0x32DE}, + [I(75,67)] = {14,0x335E}, + [I(76,67)] = {14,0x33DE}, + [I(77,67)] = {14,0x345E}, + [I(78,67)] = {14,0x34DE}, + [I(79,67)] = {14,0x355E}, + [I(80,67)] = {14,0x35DE}, + [I(81,67)] = {14,0x365E}, + [I(82,67)] = {14,0x36DE}, + [I(83,67)] = {14,0x375E}, + [I(84,67)] = {14,0x37DE}, + [I(85,67)] = {14,0x385E}, + [I(86,67)] = {14,0x38DE}, + [I(87,67)] = {14,0x395E}, + [I(88,67)] = {15,0x7E5E}, + [I(89,67)] = {14,0x39DE}, + [I(90,67)] = {15,0x7EDE}, + [I(91,67)] = {20,0xFFDDE}, + [I(92,67)] = {26,0x3FFF85E}, + [I(93,67)] = {20,0xFFE5E}, + [I(94,67)] = {21,0x1FFE5E}, + [I(95,67)] = {13,0x115E}, + [I(96,67)] = {22,0x3FFEDE}, + [I(97,67)] = {12,0x1DE}, + [I(98,67)] = {13,0x11DE}, + [I(99,67)] = {12,0x25E}, + [I(100,67)] = {13,0x125E}, + [I(101,67)] = {12,0x2DE}, + [I(102,67)] = {13,0x12DE}, + [I(103,67)] = {13,0x135E}, + [I(104,67)] = {13,0x13DE}, + [I(105,67)] = {12,0x35E}, + [I(106,67)] = {14,0x3A5E}, + [I(107,67)] = {14,0x3ADE}, + [I(108,67)] = {13,0x145E}, + [I(109,67)] = {13,0x14DE}, + [I(110,67)] = {13,0x155E}, + [I(111,67)] = {12,0x3DE}, + [I(112,67)] = {13,0x15DE}, + [I(113,67)] = {14,0x3B5E}, + [I(114,67)] = {13,0x165E}, + [I(115,67)] = {12,0x45E}, + [I(116,67)] = {12,0x4DE}, + [I(117,67)] = {13,0x16DE}, + [I(118,67)] = {14,0x3BDE}, + [I(119,67)] = {14,0x3C5E}, + [I(120,67)] = {14,0x3CDE}, + [I(121,67)] = {14,0x3D5E}, + [I(122,67)] = {14,0x3DDE}, + [I(123,67)] = {22,0x3FFF5E}, + [I(124,67)] = {18,0x3FE5E}, + [I(125,67)] = {21,0x1FFEDE}, + [I(126,67)] = {20,0xFFEDE}, + [I(127,67)] = {64,0}, + [I(128,67)] = {27,0x7FFF35E}, + [I(129,67)] = {29,0x1FFFE95E}, + [I(130,67)] = {27,0x7FFF3DE}, + [I(131,67)] = {27,0x7FFF45E}, + [I(132,67)] = {29,0x1FFFE9DE}, + [I(133,67)] = {29,0x1FFFEA5E}, + [I(134,67)] = {29,0x1FFFEADE}, + [I(135,67)] = {30,0x3FFFECDE}, + [I(136,67)] = {29,0x1FFFEB5E}, + [I(137,67)] = {30,0x3FFFED5E}, + [I(138,67)] = {30,0x3FFFEDDE}, + [I(139,67)] = {30,0x3FFFEE5E}, + [I(140,67)] = {30,0x3FFFEEDE}, + [I(141,67)] = {30,0x3FFFEF5E}, + [I(142,67)] = {31,0x7FFFF5DE}, + [I(143,67)] = {30,0x3FFFEFDE}, + [I(144,67)] = {31,0x7FFFF65E}, + [I(145,67)] = {31,0x7FFFF6DE}, + [I(146,67)] = {29,0x1FFFEBDE}, + [I(147,67)] = {30,0x3FFFF05E}, + [I(148,67)] = {31,0x7FFFF75E}, + [I(149,67)] = {30,0x3FFFF0DE}, + [I(150,67)] = {30,0x3FFFF15E}, + [I(151,67)] = {30,0x3FFFF1DE}, + [I(152,67)] = {30,0x3FFFF25E}, + [I(153,67)] = {28,0xFFFEE5E}, + [I(154,67)] = {29,0x1FFFEC5E}, + [I(155,67)] = {30,0x3FFFF2DE}, + [I(156,67)] = {29,0x1FFFECDE}, + [I(157,67)] = {30,0x3FFFF35E}, + [I(158,67)] = {30,0x3FFFF3DE}, + [I(159,67)] = {31,0x7FFFF7DE}, + [I(160,67)] = {29,0x1FFFED5E}, + [I(161,67)] = {28,0xFFFEEDE}, + [I(162,67)] = {27,0x7FFF4DE}, + [I(163,67)] = {29,0x1FFFEDDE}, + [I(164,67)] = {29,0x1FFFEE5E}, + [I(165,67)] = {30,0x3FFFF45E}, + [I(166,67)] = {30,0x3FFFF4DE}, + [I(167,67)] = {28,0xFFFEF5E}, + [I(168,67)] = {30,0x3FFFF55E}, + [I(169,67)] = {29,0x1FFFEEDE}, + [I(170,67)] = {29,0x1FFFEF5E}, + [I(171,67)] = {31,0x7FFFF85E}, + [I(172,67)] = {28,0xFFFEFDE}, + [I(173,67)] = {29,0x1FFFEFDE}, + [I(174,67)] = {30,0x3FFFF5DE}, + [I(175,67)] = {30,0x3FFFF65E}, + [I(176,67)] = {28,0xFFFF05E}, + [I(177,67)] = {28,0xFFFF0DE}, + [I(178,67)] = {29,0x1FFFF05E}, + [I(179,67)] = {28,0xFFFF15E}, + [I(180,67)] = {30,0x3FFFF6DE}, + [I(181,67)] = {29,0x1FFFF0DE}, + [I(182,67)] = {30,0x3FFFF75E}, + [I(183,67)] = {30,0x3FFFF7DE}, + [I(184,67)] = {27,0x7FFF55E}, + [I(185,67)] = {29,0x1FFFF15E}, + [I(186,67)] = {29,0x1FFFF1DE}, + [I(187,67)] = {29,0x1FFFF25E}, + [I(188,67)] = {30,0x3FFFF85E}, + [I(189,67)] = {29,0x1FFFF2DE}, + [I(190,67)] = {29,0x1FFFF35E}, + [I(191,67)] = {30,0x3FFFF8DE}, + [I(192,67)] = {64,0}, + [I(193,67)] = {64,0}, + [I(194,67)] = {27,0x7FFF5DE}, + [I(195,67)] = {26,0x3FFF8DE}, + [I(196,67)] = {29,0x1FFFF3DE}, + [I(197,67)] = {30,0x3FFFF95E}, + [I(198,67)] = {29,0x1FFFF45E}, + [I(199,67)] = {X32,0xFFFFF65E}, + [I(200,67)] = {64,0}, + [I(201,67)] = {64,0}, + [I(202,67)] = {64,0}, + [I(203,67)] = {64,0}, + [I(204,67)] = {64,0}, + [I(205,67)] = {64,0}, + [I(206,67)] = {31,0x7FFFF8DE}, + [I(207,67)] = {X32,0xFFFFF6DE}, + [I(208,67)] = {26,0x3FFF95E}, + [I(209,67)] = {28,0xFFFF1DE}, + [I(210,67)] = {64,0}, + [I(211,67)] = {64,0}, + [I(212,67)] = {64,0}, + [I(213,67)] = {64,0}, + [I(214,67)] = {64,0}, + [I(215,67)] = {31,0x7FFFF95E}, + [I(216,67)] = {28,0xFFFF25E}, + [I(217,67)] = {28,0xFFFF2DE}, + [I(218,67)] = {64,0}, + [I(219,67)] = {64,0}, + [I(220,67)] = {64,0}, + [I(221,67)] = {64,0}, + [I(222,67)] = {64,0}, + [I(223,67)] = {64,0}, + [I(224,67)] = {27,0x7FFF65E}, + [I(225,67)] = {31,0x7FFFF9DE}, + [I(226,67)] = {27,0x7FFF6DE}, + [I(227,67)] = {28,0xFFFF35E}, + [I(228,67)] = {29,0x1FFFF4DE}, + [I(229,67)] = {28,0xFFFF3DE}, + [I(230,67)] = {28,0xFFFF45E}, + [I(231,67)] = {30,0x3FFFF9DE}, + [I(232,67)] = {29,0x1FFFF55E}, + [I(233,67)] = {29,0x1FFFF5DE}, + [I(234,67)] = {X32,0xFFFFF75E}, + [I(235,67)] = {X32,0xFFFFF7DE}, + [I(236,67)] = {31,0x7FFFFA5E}, + [I(237,67)] = {31,0x7FFFFADE}, + [I(238,67)] = {64,0}, + [I(239,67)] = {30,0x3FFFFA5E}, + [I(240,67)] = {64,0}, + [I(241,67)] = {64,0}, + [I(242,67)] = {64,0}, + [I(243,67)] = {64,0}, + [I(244,67)] = {64,0}, + [I(245,67)] = {64,0}, + [I(246,67)] = {64,0}, + [I(247,67)] = {64,0}, + [I(248,67)] = {64,0}, + [I(249,67)] = {64,0}, + [I(250,67)] = {64,0}, + [I(251,67)] = {64,0}, + [I(252,67)] = {64,0}, + [I(253,67)] = {64,0}, + [I(254,67)] = {64,0}, + [I(255,67)] = {64,0}, + [I(0,68)] = {20,0xFFC5F}, + [I(1,68)] = {30,0x3FFFEC5F}, + [I(2,68)] = {64,0}, + [I(3,68)] = {64,0}, + [I(4,68)] = {64,0}, + [I(5,68)] = {64,0}, + [I(6,68)] = {64,0}, + [I(7,68)] = {64,0}, + [I(8,68)] = {64,0}, + [I(9,68)] = {31,0x7FFFF55F}, + [I(10,68)] = {64,0}, + [I(11,68)] = {64,0}, + [I(12,68)] = {64,0}, + [I(13,68)] = {64,0}, + [I(14,68)] = {64,0}, + [I(15,68)] = {64,0}, + [I(16,68)] = {64,0}, + [I(17,68)] = {64,0}, + [I(18,68)] = {64,0}, + [I(19,68)] = {64,0}, + [I(20,68)] = {64,0}, + [I(21,68)] = {64,0}, + [I(22,68)] = {64,0}, + [I(23,68)] = {64,0}, + [I(24,68)] = {64,0}, + [I(25,68)] = {64,0}, + [I(26,68)] = {64,0}, + [I(27,68)] = {64,0}, + [I(28,68)] = {64,0}, + [I(29,68)] = {64,0}, + [I(30,68)] = {64,0}, + [I(31,68)] = {64,0}, + [I(32,68)] = {13,0xA5F}, + [I(33,68)] = {17,0x1FC5F}, + [I(34,68)] = {17,0x1FCDF}, + [I(35,68)] = {19,0x7FD5F}, + [I(36,68)] = {20,0xFFCDF}, + [I(37,68)] = {13,0xADF}, + [I(38,68)] = {15,0x7C5F}, + [I(39,68)] = {18,0x3FD5F}, + [I(40,68)] = {17,0x1FD5F}, + [I(41,68)] = {17,0x1FDDF}, + [I(42,68)] = {15,0x7CDF}, + [I(43,68)] = {18,0x3FDDF}, + [I(44,68)] = {15,0x7D5F}, + [I(45,68)] = {13,0xB5F}, + [I(46,68)] = {13,0xBDF}, + [I(47,68)] = {13,0xC5F}, + [I(48,68)] = {12,0x5F}, + [I(49,68)] = {12,0xDF}, + [I(50,68)] = {12,0x15F}, + [I(51,68)] = {13,0xCDF}, + [I(52,68)] = {13,0xD5F}, + [I(53,68)] = {13,0xDDF}, + [I(54,68)] = {13,0xE5F}, + [I(55,68)] = {13,0xEDF}, + [I(56,68)] = {13,0xF5F}, + [I(57,68)] = {13,0xFDF}, + [I(58,68)] = {14,0x2E5F}, + [I(59,68)] = {15,0x7DDF}, + [I(60,68)] = {22,0x3FFE5F}, + [I(61,68)] = {13,0x105F}, + [I(62,68)] = {19,0x7FDDF}, + [I(63,68)] = {17,0x1FE5F}, + [I(64,68)] = {20,0xFFD5F}, + [I(65,68)] = {13,0x10DF}, + [I(66,68)] = {14,0x2EDF}, + [I(67,68)] = {14,0x2F5F}, + [I(68,68)] = {14,0x2FDF}, + [I(69,68)] = {14,0x305F}, + [I(70,68)] = {14,0x30DF}, + [I(71,68)] = {14,0x315F}, + [I(72,68)] = {14,0x31DF}, + [I(73,68)] = {14,0x325F}, + [I(74,68)] = {14,0x32DF}, + [I(75,68)] = {14,0x335F}, + [I(76,68)] = {14,0x33DF}, + [I(77,68)] = {14,0x345F}, + [I(78,68)] = {14,0x34DF}, + [I(79,68)] = {14,0x355F}, + [I(80,68)] = {14,0x35DF}, + [I(81,68)] = {14,0x365F}, + [I(82,68)] = {14,0x36DF}, + [I(83,68)] = {14,0x375F}, + [I(84,68)] = {14,0x37DF}, + [I(85,68)] = {14,0x385F}, + [I(86,68)] = {14,0x38DF}, + [I(87,68)] = {14,0x395F}, + [I(88,68)] = {15,0x7E5F}, + [I(89,68)] = {14,0x39DF}, + [I(90,68)] = {15,0x7EDF}, + [I(91,68)] = {20,0xFFDDF}, + [I(92,68)] = {26,0x3FFF85F}, + [I(93,68)] = {20,0xFFE5F}, + [I(94,68)] = {21,0x1FFE5F}, + [I(95,68)] = {13,0x115F}, + [I(96,68)] = {22,0x3FFEDF}, + [I(97,68)] = {12,0x1DF}, + [I(98,68)] = {13,0x11DF}, + [I(99,68)] = {12,0x25F}, + [I(100,68)] = {13,0x125F}, + [I(101,68)] = {12,0x2DF}, + [I(102,68)] = {13,0x12DF}, + [I(103,68)] = {13,0x135F}, + [I(104,68)] = {13,0x13DF}, + [I(105,68)] = {12,0x35F}, + [I(106,68)] = {14,0x3A5F}, + [I(107,68)] = {14,0x3ADF}, + [I(108,68)] = {13,0x145F}, + [I(109,68)] = {13,0x14DF}, + [I(110,68)] = {13,0x155F}, + [I(111,68)] = {12,0x3DF}, + [I(112,68)] = {13,0x15DF}, + [I(113,68)] = {14,0x3B5F}, + [I(114,68)] = {13,0x165F}, + [I(115,68)] = {12,0x45F}, + [I(116,68)] = {12,0x4DF}, + [I(117,68)] = {13,0x16DF}, + [I(118,68)] = {14,0x3BDF}, + [I(119,68)] = {14,0x3C5F}, + [I(120,68)] = {14,0x3CDF}, + [I(121,68)] = {14,0x3D5F}, + [I(122,68)] = {14,0x3DDF}, + [I(123,68)] = {22,0x3FFF5F}, + [I(124,68)] = {18,0x3FE5F}, + [I(125,68)] = {21,0x1FFEDF}, + [I(126,68)] = {20,0xFFEDF}, + [I(127,68)] = {64,0}, + [I(128,68)] = {27,0x7FFF35F}, + [I(129,68)] = {29,0x1FFFE95F}, + [I(130,68)] = {27,0x7FFF3DF}, + [I(131,68)] = {27,0x7FFF45F}, + [I(132,68)] = {29,0x1FFFE9DF}, + [I(133,68)] = {29,0x1FFFEA5F}, + [I(134,68)] = {29,0x1FFFEADF}, + [I(135,68)] = {30,0x3FFFECDF}, + [I(136,68)] = {29,0x1FFFEB5F}, + [I(137,68)] = {30,0x3FFFED5F}, + [I(138,68)] = {30,0x3FFFEDDF}, + [I(139,68)] = {30,0x3FFFEE5F}, + [I(140,68)] = {30,0x3FFFEEDF}, + [I(141,68)] = {30,0x3FFFEF5F}, + [I(142,68)] = {31,0x7FFFF5DF}, + [I(143,68)] = {30,0x3FFFEFDF}, + [I(144,68)] = {31,0x7FFFF65F}, + [I(145,68)] = {31,0x7FFFF6DF}, + [I(146,68)] = {29,0x1FFFEBDF}, + [I(147,68)] = {30,0x3FFFF05F}, + [I(148,68)] = {31,0x7FFFF75F}, + [I(149,68)] = {30,0x3FFFF0DF}, + [I(150,68)] = {30,0x3FFFF15F}, + [I(151,68)] = {30,0x3FFFF1DF}, + [I(152,68)] = {30,0x3FFFF25F}, + [I(153,68)] = {28,0xFFFEE5F}, + [I(154,68)] = {29,0x1FFFEC5F}, + [I(155,68)] = {30,0x3FFFF2DF}, + [I(156,68)] = {29,0x1FFFECDF}, + [I(157,68)] = {30,0x3FFFF35F}, + [I(158,68)] = {30,0x3FFFF3DF}, + [I(159,68)] = {31,0x7FFFF7DF}, + [I(160,68)] = {29,0x1FFFED5F}, + [I(161,68)] = {28,0xFFFEEDF}, + [I(162,68)] = {27,0x7FFF4DF}, + [I(163,68)] = {29,0x1FFFEDDF}, + [I(164,68)] = {29,0x1FFFEE5F}, + [I(165,68)] = {30,0x3FFFF45F}, + [I(166,68)] = {30,0x3FFFF4DF}, + [I(167,68)] = {28,0xFFFEF5F}, + [I(168,68)] = {30,0x3FFFF55F}, + [I(169,68)] = {29,0x1FFFEEDF}, + [I(170,68)] = {29,0x1FFFEF5F}, + [I(171,68)] = {31,0x7FFFF85F}, + [I(172,68)] = {28,0xFFFEFDF}, + [I(173,68)] = {29,0x1FFFEFDF}, + [I(174,68)] = {30,0x3FFFF5DF}, + [I(175,68)] = {30,0x3FFFF65F}, + [I(176,68)] = {28,0xFFFF05F}, + [I(177,68)] = {28,0xFFFF0DF}, + [I(178,68)] = {29,0x1FFFF05F}, + [I(179,68)] = {28,0xFFFF15F}, + [I(180,68)] = {30,0x3FFFF6DF}, + [I(181,68)] = {29,0x1FFFF0DF}, + [I(182,68)] = {30,0x3FFFF75F}, + [I(183,68)] = {30,0x3FFFF7DF}, + [I(184,68)] = {27,0x7FFF55F}, + [I(185,68)] = {29,0x1FFFF15F}, + [I(186,68)] = {29,0x1FFFF1DF}, + [I(187,68)] = {29,0x1FFFF25F}, + [I(188,68)] = {30,0x3FFFF85F}, + [I(189,68)] = {29,0x1FFFF2DF}, + [I(190,68)] = {29,0x1FFFF35F}, + [I(191,68)] = {30,0x3FFFF8DF}, + [I(192,68)] = {64,0}, + [I(193,68)] = {64,0}, + [I(194,68)] = {27,0x7FFF5DF}, + [I(195,68)] = {26,0x3FFF8DF}, + [I(196,68)] = {29,0x1FFFF3DF}, + [I(197,68)] = {30,0x3FFFF95F}, + [I(198,68)] = {29,0x1FFFF45F}, + [I(199,68)] = {X32,0xFFFFF65F}, + [I(200,68)] = {64,0}, + [I(201,68)] = {64,0}, + [I(202,68)] = {64,0}, + [I(203,68)] = {64,0}, + [I(204,68)] = {64,0}, + [I(205,68)] = {64,0}, + [I(206,68)] = {31,0x7FFFF8DF}, + [I(207,68)] = {X32,0xFFFFF6DF}, + [I(208,68)] = {26,0x3FFF95F}, + [I(209,68)] = {28,0xFFFF1DF}, + [I(210,68)] = {64,0}, + [I(211,68)] = {64,0}, + [I(212,68)] = {64,0}, + [I(213,68)] = {64,0}, + [I(214,68)] = {64,0}, + [I(215,68)] = {31,0x7FFFF95F}, + [I(216,68)] = {28,0xFFFF25F}, + [I(217,68)] = {28,0xFFFF2DF}, + [I(218,68)] = {64,0}, + [I(219,68)] = {64,0}, + [I(220,68)] = {64,0}, + [I(221,68)] = {64,0}, + [I(222,68)] = {64,0}, + [I(223,68)] = {64,0}, + [I(224,68)] = {27,0x7FFF65F}, + [I(225,68)] = {31,0x7FFFF9DF}, + [I(226,68)] = {27,0x7FFF6DF}, + [I(227,68)] = {28,0xFFFF35F}, + [I(228,68)] = {29,0x1FFFF4DF}, + [I(229,68)] = {28,0xFFFF3DF}, + [I(230,68)] = {28,0xFFFF45F}, + [I(231,68)] = {30,0x3FFFF9DF}, + [I(232,68)] = {29,0x1FFFF55F}, + [I(233,68)] = {29,0x1FFFF5DF}, + [I(234,68)] = {X32,0xFFFFF75F}, + [I(235,68)] = {X32,0xFFFFF7DF}, + [I(236,68)] = {31,0x7FFFFA5F}, + [I(237,68)] = {31,0x7FFFFADF}, + [I(238,68)] = {64,0}, + [I(239,68)] = {30,0x3FFFFA5F}, + [I(240,68)] = {64,0}, + [I(241,68)] = {64,0}, + [I(242,68)] = {64,0}, + [I(243,68)] = {64,0}, + [I(244,68)] = {64,0}, + [I(245,68)] = {64,0}, + [I(246,68)] = {64,0}, + [I(247,68)] = {64,0}, + [I(248,68)] = {64,0}, + [I(249,68)] = {64,0}, + [I(250,68)] = {64,0}, + [I(251,68)] = {64,0}, + [I(252,68)] = {64,0}, + [I(253,68)] = {64,0}, + [I(254,68)] = {64,0}, + [I(255,68)] = {64,0}, + [I(0,69)] = {20,0xFFC60}, + [I(1,69)] = {30,0x3FFFEC60}, + [I(2,69)] = {64,0}, + [I(3,69)] = {64,0}, + [I(4,69)] = {64,0}, + [I(5,69)] = {64,0}, + [I(6,69)] = {64,0}, + [I(7,69)] = {64,0}, + [I(8,69)] = {64,0}, + [I(9,69)] = {31,0x7FFFF560}, + [I(10,69)] = {64,0}, + [I(11,69)] = {64,0}, + [I(12,69)] = {64,0}, + [I(13,69)] = {64,0}, + [I(14,69)] = {64,0}, + [I(15,69)] = {64,0}, + [I(16,69)] = {64,0}, + [I(17,69)] = {64,0}, + [I(18,69)] = {64,0}, + [I(19,69)] = {64,0}, + [I(20,69)] = {64,0}, + [I(21,69)] = {64,0}, + [I(22,69)] = {64,0}, + [I(23,69)] = {64,0}, + [I(24,69)] = {64,0}, + [I(25,69)] = {64,0}, + [I(26,69)] = {64,0}, + [I(27,69)] = {64,0}, + [I(28,69)] = {64,0}, + [I(29,69)] = {64,0}, + [I(30,69)] = {64,0}, + [I(31,69)] = {64,0}, + [I(32,69)] = {13,0xA60}, + [I(33,69)] = {17,0x1FC60}, + [I(34,69)] = {17,0x1FCE0}, + [I(35,69)] = {19,0x7FD60}, + [I(36,69)] = {20,0xFFCE0}, + [I(37,69)] = {13,0xAE0}, + [I(38,69)] = {15,0x7C60}, + [I(39,69)] = {18,0x3FD60}, + [I(40,69)] = {17,0x1FD60}, + [I(41,69)] = {17,0x1FDE0}, + [I(42,69)] = {15,0x7CE0}, + [I(43,69)] = {18,0x3FDE0}, + [I(44,69)] = {15,0x7D60}, + [I(45,69)] = {13,0xB60}, + [I(46,69)] = {13,0xBE0}, + [I(47,69)] = {13,0xC60}, + [I(48,69)] = {12,0x60}, + [I(49,69)] = {12,0xE0}, + [I(50,69)] = {12,0x160}, + [I(51,69)] = {13,0xCE0}, + [I(52,69)] = {13,0xD60}, + [I(53,69)] = {13,0xDE0}, + [I(54,69)] = {13,0xE60}, + [I(55,69)] = {13,0xEE0}, + [I(56,69)] = {13,0xF60}, + [I(57,69)] = {13,0xFE0}, + [I(58,69)] = {14,0x2E60}, + [I(59,69)] = {15,0x7DE0}, + [I(60,69)] = {22,0x3FFE60}, + [I(61,69)] = {13,0x1060}, + [I(62,69)] = {19,0x7FDE0}, + [I(63,69)] = {17,0x1FE60}, + [I(64,69)] = {20,0xFFD60}, + [I(65,69)] = {13,0x10E0}, + [I(66,69)] = {14,0x2EE0}, + [I(67,69)] = {14,0x2F60}, + [I(68,69)] = {14,0x2FE0}, + [I(69,69)] = {14,0x3060}, + [I(70,69)] = {14,0x30E0}, + [I(71,69)] = {14,0x3160}, + [I(72,69)] = {14,0x31E0}, + [I(73,69)] = {14,0x3260}, + [I(74,69)] = {14,0x32E0}, + [I(75,69)] = {14,0x3360}, + [I(76,69)] = {14,0x33E0}, + [I(77,69)] = {14,0x3460}, + [I(78,69)] = {14,0x34E0}, + [I(79,69)] = {14,0x3560}, + [I(80,69)] = {14,0x35E0}, + [I(81,69)] = {14,0x3660}, + [I(82,69)] = {14,0x36E0}, + [I(83,69)] = {14,0x3760}, + [I(84,69)] = {14,0x37E0}, + [I(85,69)] = {14,0x3860}, + [I(86,69)] = {14,0x38E0}, + [I(87,69)] = {14,0x3960}, + [I(88,69)] = {15,0x7E60}, + [I(89,69)] = {14,0x39E0}, + [I(90,69)] = {15,0x7EE0}, + [I(91,69)] = {20,0xFFDE0}, + [I(92,69)] = {26,0x3FFF860}, + [I(93,69)] = {20,0xFFE60}, + [I(94,69)] = {21,0x1FFE60}, + [I(95,69)] = {13,0x1160}, + [I(96,69)] = {22,0x3FFEE0}, + [I(97,69)] = {12,0x1E0}, + [I(98,69)] = {13,0x11E0}, + [I(99,69)] = {12,0x260}, + [I(100,69)] = {13,0x1260}, + [I(101,69)] = {12,0x2E0}, + [I(102,69)] = {13,0x12E0}, + [I(103,69)] = {13,0x1360}, + [I(104,69)] = {13,0x13E0}, + [I(105,69)] = {12,0x360}, + [I(106,69)] = {14,0x3A60}, + [I(107,69)] = {14,0x3AE0}, + [I(108,69)] = {13,0x1460}, + [I(109,69)] = {13,0x14E0}, + [I(110,69)] = {13,0x1560}, + [I(111,69)] = {12,0x3E0}, + [I(112,69)] = {13,0x15E0}, + [I(113,69)] = {14,0x3B60}, + [I(114,69)] = {13,0x1660}, + [I(115,69)] = {12,0x460}, + [I(116,69)] = {12,0x4E0}, + [I(117,69)] = {13,0x16E0}, + [I(118,69)] = {14,0x3BE0}, + [I(119,69)] = {14,0x3C60}, + [I(120,69)] = {14,0x3CE0}, + [I(121,69)] = {14,0x3D60}, + [I(122,69)] = {14,0x3DE0}, + [I(123,69)] = {22,0x3FFF60}, + [I(124,69)] = {18,0x3FE60}, + [I(125,69)] = {21,0x1FFEE0}, + [I(126,69)] = {20,0xFFEE0}, + [I(127,69)] = {64,0}, + [I(128,69)] = {27,0x7FFF360}, + [I(129,69)] = {29,0x1FFFE960}, + [I(130,69)] = {27,0x7FFF3E0}, + [I(131,69)] = {27,0x7FFF460}, + [I(132,69)] = {29,0x1FFFE9E0}, + [I(133,69)] = {29,0x1FFFEA60}, + [I(134,69)] = {29,0x1FFFEAE0}, + [I(135,69)] = {30,0x3FFFECE0}, + [I(136,69)] = {29,0x1FFFEB60}, + [I(137,69)] = {30,0x3FFFED60}, + [I(138,69)] = {30,0x3FFFEDE0}, + [I(139,69)] = {30,0x3FFFEE60}, + [I(140,69)] = {30,0x3FFFEEE0}, + [I(141,69)] = {30,0x3FFFEF60}, + [I(142,69)] = {31,0x7FFFF5E0}, + [I(143,69)] = {30,0x3FFFEFE0}, + [I(144,69)] = {31,0x7FFFF660}, + [I(145,69)] = {31,0x7FFFF6E0}, + [I(146,69)] = {29,0x1FFFEBE0}, + [I(147,69)] = {30,0x3FFFF060}, + [I(148,69)] = {31,0x7FFFF760}, + [I(149,69)] = {30,0x3FFFF0E0}, + [I(150,69)] = {30,0x3FFFF160}, + [I(151,69)] = {30,0x3FFFF1E0}, + [I(152,69)] = {30,0x3FFFF260}, + [I(153,69)] = {28,0xFFFEE60}, + [I(154,69)] = {29,0x1FFFEC60}, + [I(155,69)] = {30,0x3FFFF2E0}, + [I(156,69)] = {29,0x1FFFECE0}, + [I(157,69)] = {30,0x3FFFF360}, + [I(158,69)] = {30,0x3FFFF3E0}, + [I(159,69)] = {31,0x7FFFF7E0}, + [I(160,69)] = {29,0x1FFFED60}, + [I(161,69)] = {28,0xFFFEEE0}, + [I(162,69)] = {27,0x7FFF4E0}, + [I(163,69)] = {29,0x1FFFEDE0}, + [I(164,69)] = {29,0x1FFFEE60}, + [I(165,69)] = {30,0x3FFFF460}, + [I(166,69)] = {30,0x3FFFF4E0}, + [I(167,69)] = {28,0xFFFEF60}, + [I(168,69)] = {30,0x3FFFF560}, + [I(169,69)] = {29,0x1FFFEEE0}, + [I(170,69)] = {29,0x1FFFEF60}, + [I(171,69)] = {31,0x7FFFF860}, + [I(172,69)] = {28,0xFFFEFE0}, + [I(173,69)] = {29,0x1FFFEFE0}, + [I(174,69)] = {30,0x3FFFF5E0}, + [I(175,69)] = {30,0x3FFFF660}, + [I(176,69)] = {28,0xFFFF060}, + [I(177,69)] = {28,0xFFFF0E0}, + [I(178,69)] = {29,0x1FFFF060}, + [I(179,69)] = {28,0xFFFF160}, + [I(180,69)] = {30,0x3FFFF6E0}, + [I(181,69)] = {29,0x1FFFF0E0}, + [I(182,69)] = {30,0x3FFFF760}, + [I(183,69)] = {30,0x3FFFF7E0}, + [I(184,69)] = {27,0x7FFF560}, + [I(185,69)] = {29,0x1FFFF160}, + [I(186,69)] = {29,0x1FFFF1E0}, + [I(187,69)] = {29,0x1FFFF260}, + [I(188,69)] = {30,0x3FFFF860}, + [I(189,69)] = {29,0x1FFFF2E0}, + [I(190,69)] = {29,0x1FFFF360}, + [I(191,69)] = {30,0x3FFFF8E0}, + [I(192,69)] = {64,0}, + [I(193,69)] = {64,0}, + [I(194,69)] = {27,0x7FFF5E0}, + [I(195,69)] = {26,0x3FFF8E0}, + [I(196,69)] = {29,0x1FFFF3E0}, + [I(197,69)] = {30,0x3FFFF960}, + [I(198,69)] = {29,0x1FFFF460}, + [I(199,69)] = {X32,0xFFFFF660}, + [I(200,69)] = {64,0}, + [I(201,69)] = {64,0}, + [I(202,69)] = {64,0}, + [I(203,69)] = {64,0}, + [I(204,69)] = {64,0}, + [I(205,69)] = {64,0}, + [I(206,69)] = {31,0x7FFFF8E0}, + [I(207,69)] = {X32,0xFFFFF6E0}, + [I(208,69)] = {26,0x3FFF960}, + [I(209,69)] = {28,0xFFFF1E0}, + [I(210,69)] = {64,0}, + [I(211,69)] = {64,0}, + [I(212,69)] = {64,0}, + [I(213,69)] = {64,0}, + [I(214,69)] = {64,0}, + [I(215,69)] = {31,0x7FFFF960}, + [I(216,69)] = {28,0xFFFF260}, + [I(217,69)] = {28,0xFFFF2E0}, + [I(218,69)] = {64,0}, + [I(219,69)] = {64,0}, + [I(220,69)] = {64,0}, + [I(221,69)] = {64,0}, + [I(222,69)] = {64,0}, + [I(223,69)] = {64,0}, + [I(224,69)] = {27,0x7FFF660}, + [I(225,69)] = {31,0x7FFFF9E0}, + [I(226,69)] = {27,0x7FFF6E0}, + [I(227,69)] = {28,0xFFFF360}, + [I(228,69)] = {29,0x1FFFF4E0}, + [I(229,69)] = {28,0xFFFF3E0}, + [I(230,69)] = {28,0xFFFF460}, + [I(231,69)] = {30,0x3FFFF9E0}, + [I(232,69)] = {29,0x1FFFF560}, + [I(233,69)] = {29,0x1FFFF5E0}, + [I(234,69)] = {X32,0xFFFFF760}, + [I(235,69)] = {X32,0xFFFFF7E0}, + [I(236,69)] = {31,0x7FFFFA60}, + [I(237,69)] = {31,0x7FFFFAE0}, + [I(238,69)] = {64,0}, + [I(239,69)] = {30,0x3FFFFA60}, + [I(240,69)] = {64,0}, + [I(241,69)] = {64,0}, + [I(242,69)] = {64,0}, + [I(243,69)] = {64,0}, + [I(244,69)] = {64,0}, + [I(245,69)] = {64,0}, + [I(246,69)] = {64,0}, + [I(247,69)] = {64,0}, + [I(248,69)] = {64,0}, + [I(249,69)] = {64,0}, + [I(250,69)] = {64,0}, + [I(251,69)] = {64,0}, + [I(252,69)] = {64,0}, + [I(253,69)] = {64,0}, + [I(254,69)] = {64,0}, + [I(255,69)] = {64,0}, + [I(0,70)] = {20,0xFFC61}, + [I(1,70)] = {30,0x3FFFEC61}, + [I(2,70)] = {64,0}, + [I(3,70)] = {64,0}, + [I(4,70)] = {64,0}, + [I(5,70)] = {64,0}, + [I(6,70)] = {64,0}, + [I(7,70)] = {64,0}, + [I(8,70)] = {64,0}, + [I(9,70)] = {31,0x7FFFF561}, + [I(10,70)] = {64,0}, + [I(11,70)] = {64,0}, + [I(12,70)] = {64,0}, + [I(13,70)] = {64,0}, + [I(14,70)] = {64,0}, + [I(15,70)] = {64,0}, + [I(16,70)] = {64,0}, + [I(17,70)] = {64,0}, + [I(18,70)] = {64,0}, + [I(19,70)] = {64,0}, + [I(20,70)] = {64,0}, + [I(21,70)] = {64,0}, + [I(22,70)] = {64,0}, + [I(23,70)] = {64,0}, + [I(24,70)] = {64,0}, + [I(25,70)] = {64,0}, + [I(26,70)] = {64,0}, + [I(27,70)] = {64,0}, + [I(28,70)] = {64,0}, + [I(29,70)] = {64,0}, + [I(30,70)] = {64,0}, + [I(31,70)] = {64,0}, + [I(32,70)] = {13,0xA61}, + [I(33,70)] = {17,0x1FC61}, + [I(34,70)] = {17,0x1FCE1}, + [I(35,70)] = {19,0x7FD61}, + [I(36,70)] = {20,0xFFCE1}, + [I(37,70)] = {13,0xAE1}, + [I(38,70)] = {15,0x7C61}, + [I(39,70)] = {18,0x3FD61}, + [I(40,70)] = {17,0x1FD61}, + [I(41,70)] = {17,0x1FDE1}, + [I(42,70)] = {15,0x7CE1}, + [I(43,70)] = {18,0x3FDE1}, + [I(44,70)] = {15,0x7D61}, + [I(45,70)] = {13,0xB61}, + [I(46,70)] = {13,0xBE1}, + [I(47,70)] = {13,0xC61}, + [I(48,70)] = {12,0x61}, + [I(49,70)] = {12,0xE1}, + [I(50,70)] = {12,0x161}, + [I(51,70)] = {13,0xCE1}, + [I(52,70)] = {13,0xD61}, + [I(53,70)] = {13,0xDE1}, + [I(54,70)] = {13,0xE61}, + [I(55,70)] = {13,0xEE1}, + [I(56,70)] = {13,0xF61}, + [I(57,70)] = {13,0xFE1}, + [I(58,70)] = {14,0x2E61}, + [I(59,70)] = {15,0x7DE1}, + [I(60,70)] = {22,0x3FFE61}, + [I(61,70)] = {13,0x1061}, + [I(62,70)] = {19,0x7FDE1}, + [I(63,70)] = {17,0x1FE61}, + [I(64,70)] = {20,0xFFD61}, + [I(65,70)] = {13,0x10E1}, + [I(66,70)] = {14,0x2EE1}, + [I(67,70)] = {14,0x2F61}, + [I(68,70)] = {14,0x2FE1}, + [I(69,70)] = {14,0x3061}, + [I(70,70)] = {14,0x30E1}, + [I(71,70)] = {14,0x3161}, + [I(72,70)] = {14,0x31E1}, + [I(73,70)] = {14,0x3261}, + [I(74,70)] = {14,0x32E1}, + [I(75,70)] = {14,0x3361}, + [I(76,70)] = {14,0x33E1}, + [I(77,70)] = {14,0x3461}, + [I(78,70)] = {14,0x34E1}, + [I(79,70)] = {14,0x3561}, + [I(80,70)] = {14,0x35E1}, + [I(81,70)] = {14,0x3661}, + [I(82,70)] = {14,0x36E1}, + [I(83,70)] = {14,0x3761}, + [I(84,70)] = {14,0x37E1}, + [I(85,70)] = {14,0x3861}, + [I(86,70)] = {14,0x38E1}, + [I(87,70)] = {14,0x3961}, + [I(88,70)] = {15,0x7E61}, + [I(89,70)] = {14,0x39E1}, + [I(90,70)] = {15,0x7EE1}, + [I(91,70)] = {20,0xFFDE1}, + [I(92,70)] = {26,0x3FFF861}, + [I(93,70)] = {20,0xFFE61}, + [I(94,70)] = {21,0x1FFE61}, + [I(95,70)] = {13,0x1161}, + [I(96,70)] = {22,0x3FFEE1}, + [I(97,70)] = {12,0x1E1}, + [I(98,70)] = {13,0x11E1}, + [I(99,70)] = {12,0x261}, + [I(100,70)] = {13,0x1261}, + [I(101,70)] = {12,0x2E1}, + [I(102,70)] = {13,0x12E1}, + [I(103,70)] = {13,0x1361}, + [I(104,70)] = {13,0x13E1}, + [I(105,70)] = {12,0x361}, + [I(106,70)] = {14,0x3A61}, + [I(107,70)] = {14,0x3AE1}, + [I(108,70)] = {13,0x1461}, + [I(109,70)] = {13,0x14E1}, + [I(110,70)] = {13,0x1561}, + [I(111,70)] = {12,0x3E1}, + [I(112,70)] = {13,0x15E1}, + [I(113,70)] = {14,0x3B61}, + [I(114,70)] = {13,0x1661}, + [I(115,70)] = {12,0x461}, + [I(116,70)] = {12,0x4E1}, + [I(117,70)] = {13,0x16E1}, + [I(118,70)] = {14,0x3BE1}, + [I(119,70)] = {14,0x3C61}, + [I(120,70)] = {14,0x3CE1}, + [I(121,70)] = {14,0x3D61}, + [I(122,70)] = {14,0x3DE1}, + [I(123,70)] = {22,0x3FFF61}, + [I(124,70)] = {18,0x3FE61}, + [I(125,70)] = {21,0x1FFEE1}, + [I(126,70)] = {20,0xFFEE1}, + [I(127,70)] = {64,0}, + [I(128,70)] = {27,0x7FFF361}, + [I(129,70)] = {29,0x1FFFE961}, + [I(130,70)] = {27,0x7FFF3E1}, + [I(131,70)] = {27,0x7FFF461}, + [I(132,70)] = {29,0x1FFFE9E1}, + [I(133,70)] = {29,0x1FFFEA61}, + [I(134,70)] = {29,0x1FFFEAE1}, + [I(135,70)] = {30,0x3FFFECE1}, + [I(136,70)] = {29,0x1FFFEB61}, + [I(137,70)] = {30,0x3FFFED61}, + [I(138,70)] = {30,0x3FFFEDE1}, + [I(139,70)] = {30,0x3FFFEE61}, + [I(140,70)] = {30,0x3FFFEEE1}, + [I(141,70)] = {30,0x3FFFEF61}, + [I(142,70)] = {31,0x7FFFF5E1}, + [I(143,70)] = {30,0x3FFFEFE1}, + [I(144,70)] = {31,0x7FFFF661}, + [I(145,70)] = {31,0x7FFFF6E1}, + [I(146,70)] = {29,0x1FFFEBE1}, + [I(147,70)] = {30,0x3FFFF061}, + [I(148,70)] = {31,0x7FFFF761}, + [I(149,70)] = {30,0x3FFFF0E1}, + [I(150,70)] = {30,0x3FFFF161}, + [I(151,70)] = {30,0x3FFFF1E1}, + [I(152,70)] = {30,0x3FFFF261}, + [I(153,70)] = {28,0xFFFEE61}, + [I(154,70)] = {29,0x1FFFEC61}, + [I(155,70)] = {30,0x3FFFF2E1}, + [I(156,70)] = {29,0x1FFFECE1}, + [I(157,70)] = {30,0x3FFFF361}, + [I(158,70)] = {30,0x3FFFF3E1}, + [I(159,70)] = {31,0x7FFFF7E1}, + [I(160,70)] = {29,0x1FFFED61}, + [I(161,70)] = {28,0xFFFEEE1}, + [I(162,70)] = {27,0x7FFF4E1}, + [I(163,70)] = {29,0x1FFFEDE1}, + [I(164,70)] = {29,0x1FFFEE61}, + [I(165,70)] = {30,0x3FFFF461}, + [I(166,70)] = {30,0x3FFFF4E1}, + [I(167,70)] = {28,0xFFFEF61}, + [I(168,70)] = {30,0x3FFFF561}, + [I(169,70)] = {29,0x1FFFEEE1}, + [I(170,70)] = {29,0x1FFFEF61}, + [I(171,70)] = {31,0x7FFFF861}, + [I(172,70)] = {28,0xFFFEFE1}, + [I(173,70)] = {29,0x1FFFEFE1}, + [I(174,70)] = {30,0x3FFFF5E1}, + [I(175,70)] = {30,0x3FFFF661}, + [I(176,70)] = {28,0xFFFF061}, + [I(177,70)] = {28,0xFFFF0E1}, + [I(178,70)] = {29,0x1FFFF061}, + [I(179,70)] = {28,0xFFFF161}, + [I(180,70)] = {30,0x3FFFF6E1}, + [I(181,70)] = {29,0x1FFFF0E1}, + [I(182,70)] = {30,0x3FFFF761}, + [I(183,70)] = {30,0x3FFFF7E1}, + [I(184,70)] = {27,0x7FFF561}, + [I(185,70)] = {29,0x1FFFF161}, + [I(186,70)] = {29,0x1FFFF1E1}, + [I(187,70)] = {29,0x1FFFF261}, + [I(188,70)] = {30,0x3FFFF861}, + [I(189,70)] = {29,0x1FFFF2E1}, + [I(190,70)] = {29,0x1FFFF361}, + [I(191,70)] = {30,0x3FFFF8E1}, + [I(192,70)] = {64,0}, + [I(193,70)] = {64,0}, + [I(194,70)] = {27,0x7FFF5E1}, + [I(195,70)] = {26,0x3FFF8E1}, + [I(196,70)] = {29,0x1FFFF3E1}, + [I(197,70)] = {30,0x3FFFF961}, + [I(198,70)] = {29,0x1FFFF461}, + [I(199,70)] = {X32,0xFFFFF661}, + [I(200,70)] = {64,0}, + [I(201,70)] = {64,0}, + [I(202,70)] = {64,0}, + [I(203,70)] = {64,0}, + [I(204,70)] = {64,0}, + [I(205,70)] = {64,0}, + [I(206,70)] = {31,0x7FFFF8E1}, + [I(207,70)] = {X32,0xFFFFF6E1}, + [I(208,70)] = {26,0x3FFF961}, + [I(209,70)] = {28,0xFFFF1E1}, + [I(210,70)] = {64,0}, + [I(211,70)] = {64,0}, + [I(212,70)] = {64,0}, + [I(213,70)] = {64,0}, + [I(214,70)] = {64,0}, + [I(215,70)] = {31,0x7FFFF961}, + [I(216,70)] = {28,0xFFFF261}, + [I(217,70)] = {28,0xFFFF2E1}, + [I(218,70)] = {64,0}, + [I(219,70)] = {64,0}, + [I(220,70)] = {64,0}, + [I(221,70)] = {64,0}, + [I(222,70)] = {64,0}, + [I(223,70)] = {64,0}, + [I(224,70)] = {27,0x7FFF661}, + [I(225,70)] = {31,0x7FFFF9E1}, + [I(226,70)] = {27,0x7FFF6E1}, + [I(227,70)] = {28,0xFFFF361}, + [I(228,70)] = {29,0x1FFFF4E1}, + [I(229,70)] = {28,0xFFFF3E1}, + [I(230,70)] = {28,0xFFFF461}, + [I(231,70)] = {30,0x3FFFF9E1}, + [I(232,70)] = {29,0x1FFFF561}, + [I(233,70)] = {29,0x1FFFF5E1}, + [I(234,70)] = {X32,0xFFFFF761}, + [I(235,70)] = {X32,0xFFFFF7E1}, + [I(236,70)] = {31,0x7FFFFA61}, + [I(237,70)] = {31,0x7FFFFAE1}, + [I(238,70)] = {64,0}, + [I(239,70)] = {30,0x3FFFFA61}, + [I(240,70)] = {64,0}, + [I(241,70)] = {64,0}, + [I(242,70)] = {64,0}, + [I(243,70)] = {64,0}, + [I(244,70)] = {64,0}, + [I(245,70)] = {64,0}, + [I(246,70)] = {64,0}, + [I(247,70)] = {64,0}, + [I(248,70)] = {64,0}, + [I(249,70)] = {64,0}, + [I(250,70)] = {64,0}, + [I(251,70)] = {64,0}, + [I(252,70)] = {64,0}, + [I(253,70)] = {64,0}, + [I(254,70)] = {64,0}, + [I(255,70)] = {64,0}, + [I(0,71)] = {20,0xFFC62}, + [I(1,71)] = {30,0x3FFFEC62}, + [I(2,71)] = {64,0}, + [I(3,71)] = {64,0}, + [I(4,71)] = {64,0}, + [I(5,71)] = {64,0}, + [I(6,71)] = {64,0}, + [I(7,71)] = {64,0}, + [I(8,71)] = {64,0}, + [I(9,71)] = {31,0x7FFFF562}, + [I(10,71)] = {64,0}, + [I(11,71)] = {64,0}, + [I(12,71)] = {64,0}, + [I(13,71)] = {64,0}, + [I(14,71)] = {64,0}, + [I(15,71)] = {64,0}, + [I(16,71)] = {64,0}, + [I(17,71)] = {64,0}, + [I(18,71)] = {64,0}, + [I(19,71)] = {64,0}, + [I(20,71)] = {64,0}, + [I(21,71)] = {64,0}, + [I(22,71)] = {64,0}, + [I(23,71)] = {64,0}, + [I(24,71)] = {64,0}, + [I(25,71)] = {64,0}, + [I(26,71)] = {64,0}, + [I(27,71)] = {64,0}, + [I(28,71)] = {64,0}, + [I(29,71)] = {64,0}, + [I(30,71)] = {64,0}, + [I(31,71)] = {64,0}, + [I(32,71)] = {13,0xA62}, + [I(33,71)] = {17,0x1FC62}, + [I(34,71)] = {17,0x1FCE2}, + [I(35,71)] = {19,0x7FD62}, + [I(36,71)] = {20,0xFFCE2}, + [I(37,71)] = {13,0xAE2}, + [I(38,71)] = {15,0x7C62}, + [I(39,71)] = {18,0x3FD62}, + [I(40,71)] = {17,0x1FD62}, + [I(41,71)] = {17,0x1FDE2}, + [I(42,71)] = {15,0x7CE2}, + [I(43,71)] = {18,0x3FDE2}, + [I(44,71)] = {15,0x7D62}, + [I(45,71)] = {13,0xB62}, + [I(46,71)] = {13,0xBE2}, + [I(47,71)] = {13,0xC62}, + [I(48,71)] = {12,0x62}, + [I(49,71)] = {12,0xE2}, + [I(50,71)] = {12,0x162}, + [I(51,71)] = {13,0xCE2}, + [I(52,71)] = {13,0xD62}, + [I(53,71)] = {13,0xDE2}, + [I(54,71)] = {13,0xE62}, + [I(55,71)] = {13,0xEE2}, + [I(56,71)] = {13,0xF62}, + [I(57,71)] = {13,0xFE2}, + [I(58,71)] = {14,0x2E62}, + [I(59,71)] = {15,0x7DE2}, + [I(60,71)] = {22,0x3FFE62}, + [I(61,71)] = {13,0x1062}, + [I(62,71)] = {19,0x7FDE2}, + [I(63,71)] = {17,0x1FE62}, + [I(64,71)] = {20,0xFFD62}, + [I(65,71)] = {13,0x10E2}, + [I(66,71)] = {14,0x2EE2}, + [I(67,71)] = {14,0x2F62}, + [I(68,71)] = {14,0x2FE2}, + [I(69,71)] = {14,0x3062}, + [I(70,71)] = {14,0x30E2}, + [I(71,71)] = {14,0x3162}, + [I(72,71)] = {14,0x31E2}, + [I(73,71)] = {14,0x3262}, + [I(74,71)] = {14,0x32E2}, + [I(75,71)] = {14,0x3362}, + [I(76,71)] = {14,0x33E2}, + [I(77,71)] = {14,0x3462}, + [I(78,71)] = {14,0x34E2}, + [I(79,71)] = {14,0x3562}, + [I(80,71)] = {14,0x35E2}, + [I(81,71)] = {14,0x3662}, + [I(82,71)] = {14,0x36E2}, + [I(83,71)] = {14,0x3762}, + [I(84,71)] = {14,0x37E2}, + [I(85,71)] = {14,0x3862}, + [I(86,71)] = {14,0x38E2}, + [I(87,71)] = {14,0x3962}, + [I(88,71)] = {15,0x7E62}, + [I(89,71)] = {14,0x39E2}, + [I(90,71)] = {15,0x7EE2}, + [I(91,71)] = {20,0xFFDE2}, + [I(92,71)] = {26,0x3FFF862}, + [I(93,71)] = {20,0xFFE62}, + [I(94,71)] = {21,0x1FFE62}, + [I(95,71)] = {13,0x1162}, + [I(96,71)] = {22,0x3FFEE2}, + [I(97,71)] = {12,0x1E2}, + [I(98,71)] = {13,0x11E2}, + [I(99,71)] = {12,0x262}, + [I(100,71)] = {13,0x1262}, + [I(101,71)] = {12,0x2E2}, + [I(102,71)] = {13,0x12E2}, + [I(103,71)] = {13,0x1362}, + [I(104,71)] = {13,0x13E2}, + [I(105,71)] = {12,0x362}, + [I(106,71)] = {14,0x3A62}, + [I(107,71)] = {14,0x3AE2}, + [I(108,71)] = {13,0x1462}, + [I(109,71)] = {13,0x14E2}, + [I(110,71)] = {13,0x1562}, + [I(111,71)] = {12,0x3E2}, + [I(112,71)] = {13,0x15E2}, + [I(113,71)] = {14,0x3B62}, + [I(114,71)] = {13,0x1662}, + [I(115,71)] = {12,0x462}, + [I(116,71)] = {12,0x4E2}, + [I(117,71)] = {13,0x16E2}, + [I(118,71)] = {14,0x3BE2}, + [I(119,71)] = {14,0x3C62}, + [I(120,71)] = {14,0x3CE2}, + [I(121,71)] = {14,0x3D62}, + [I(122,71)] = {14,0x3DE2}, + [I(123,71)] = {22,0x3FFF62}, + [I(124,71)] = {18,0x3FE62}, + [I(125,71)] = {21,0x1FFEE2}, + [I(126,71)] = {20,0xFFEE2}, + [I(127,71)] = {64,0}, + [I(128,71)] = {27,0x7FFF362}, + [I(129,71)] = {29,0x1FFFE962}, + [I(130,71)] = {27,0x7FFF3E2}, + [I(131,71)] = {27,0x7FFF462}, + [I(132,71)] = {29,0x1FFFE9E2}, + [I(133,71)] = {29,0x1FFFEA62}, + [I(134,71)] = {29,0x1FFFEAE2}, + [I(135,71)] = {30,0x3FFFECE2}, + [I(136,71)] = {29,0x1FFFEB62}, + [I(137,71)] = {30,0x3FFFED62}, + [I(138,71)] = {30,0x3FFFEDE2}, + [I(139,71)] = {30,0x3FFFEE62}, + [I(140,71)] = {30,0x3FFFEEE2}, + [I(141,71)] = {30,0x3FFFEF62}, + [I(142,71)] = {31,0x7FFFF5E2}, + [I(143,71)] = {30,0x3FFFEFE2}, + [I(144,71)] = {31,0x7FFFF662}, + [I(145,71)] = {31,0x7FFFF6E2}, + [I(146,71)] = {29,0x1FFFEBE2}, + [I(147,71)] = {30,0x3FFFF062}, + [I(148,71)] = {31,0x7FFFF762}, + [I(149,71)] = {30,0x3FFFF0E2}, + [I(150,71)] = {30,0x3FFFF162}, + [I(151,71)] = {30,0x3FFFF1E2}, + [I(152,71)] = {30,0x3FFFF262}, + [I(153,71)] = {28,0xFFFEE62}, + [I(154,71)] = {29,0x1FFFEC62}, + [I(155,71)] = {30,0x3FFFF2E2}, + [I(156,71)] = {29,0x1FFFECE2}, + [I(157,71)] = {30,0x3FFFF362}, + [I(158,71)] = {30,0x3FFFF3E2}, + [I(159,71)] = {31,0x7FFFF7E2}, + [I(160,71)] = {29,0x1FFFED62}, + [I(161,71)] = {28,0xFFFEEE2}, + [I(162,71)] = {27,0x7FFF4E2}, + [I(163,71)] = {29,0x1FFFEDE2}, + [I(164,71)] = {29,0x1FFFEE62}, + [I(165,71)] = {30,0x3FFFF462}, + [I(166,71)] = {30,0x3FFFF4E2}, + [I(167,71)] = {28,0xFFFEF62}, + [I(168,71)] = {30,0x3FFFF562}, + [I(169,71)] = {29,0x1FFFEEE2}, + [I(170,71)] = {29,0x1FFFEF62}, + [I(171,71)] = {31,0x7FFFF862}, + [I(172,71)] = {28,0xFFFEFE2}, + [I(173,71)] = {29,0x1FFFEFE2}, + [I(174,71)] = {30,0x3FFFF5E2}, + [I(175,71)] = {30,0x3FFFF662}, + [I(176,71)] = {28,0xFFFF062}, + [I(177,71)] = {28,0xFFFF0E2}, + [I(178,71)] = {29,0x1FFFF062}, + [I(179,71)] = {28,0xFFFF162}, + [I(180,71)] = {30,0x3FFFF6E2}, + [I(181,71)] = {29,0x1FFFF0E2}, + [I(182,71)] = {30,0x3FFFF762}, + [I(183,71)] = {30,0x3FFFF7E2}, + [I(184,71)] = {27,0x7FFF562}, + [I(185,71)] = {29,0x1FFFF162}, + [I(186,71)] = {29,0x1FFFF1E2}, + [I(187,71)] = {29,0x1FFFF262}, + [I(188,71)] = {30,0x3FFFF862}, + [I(189,71)] = {29,0x1FFFF2E2}, + [I(190,71)] = {29,0x1FFFF362}, + [I(191,71)] = {30,0x3FFFF8E2}, + [I(192,71)] = {64,0}, + [I(193,71)] = {64,0}, + [I(194,71)] = {27,0x7FFF5E2}, + [I(195,71)] = {26,0x3FFF8E2}, + [I(196,71)] = {29,0x1FFFF3E2}, + [I(197,71)] = {30,0x3FFFF962}, + [I(198,71)] = {29,0x1FFFF462}, + [I(199,71)] = {X32,0xFFFFF662}, + [I(200,71)] = {64,0}, + [I(201,71)] = {64,0}, + [I(202,71)] = {64,0}, + [I(203,71)] = {64,0}, + [I(204,71)] = {64,0}, + [I(205,71)] = {64,0}, + [I(206,71)] = {31,0x7FFFF8E2}, + [I(207,71)] = {X32,0xFFFFF6E2}, + [I(208,71)] = {26,0x3FFF962}, + [I(209,71)] = {28,0xFFFF1E2}, + [I(210,71)] = {64,0}, + [I(211,71)] = {64,0}, + [I(212,71)] = {64,0}, + [I(213,71)] = {64,0}, + [I(214,71)] = {64,0}, + [I(215,71)] = {31,0x7FFFF962}, + [I(216,71)] = {28,0xFFFF262}, + [I(217,71)] = {28,0xFFFF2E2}, + [I(218,71)] = {64,0}, + [I(219,71)] = {64,0}, + [I(220,71)] = {64,0}, + [I(221,71)] = {64,0}, + [I(222,71)] = {64,0}, + [I(223,71)] = {64,0}, + [I(224,71)] = {27,0x7FFF662}, + [I(225,71)] = {31,0x7FFFF9E2}, + [I(226,71)] = {27,0x7FFF6E2}, + [I(227,71)] = {28,0xFFFF362}, + [I(228,71)] = {29,0x1FFFF4E2}, + [I(229,71)] = {28,0xFFFF3E2}, + [I(230,71)] = {28,0xFFFF462}, + [I(231,71)] = {30,0x3FFFF9E2}, + [I(232,71)] = {29,0x1FFFF562}, + [I(233,71)] = {29,0x1FFFF5E2}, + [I(234,71)] = {X32,0xFFFFF762}, + [I(235,71)] = {X32,0xFFFFF7E2}, + [I(236,71)] = {31,0x7FFFFA62}, + [I(237,71)] = {31,0x7FFFFAE2}, + [I(238,71)] = {64,0}, + [I(239,71)] = {30,0x3FFFFA62}, + [I(240,71)] = {64,0}, + [I(241,71)] = {64,0}, + [I(242,71)] = {64,0}, + [I(243,71)] = {64,0}, + [I(244,71)] = {64,0}, + [I(245,71)] = {64,0}, + [I(246,71)] = {64,0}, + [I(247,71)] = {64,0}, + [I(248,71)] = {64,0}, + [I(249,71)] = {64,0}, + [I(250,71)] = {64,0}, + [I(251,71)] = {64,0}, + [I(252,71)] = {64,0}, + [I(253,71)] = {64,0}, + [I(254,71)] = {64,0}, + [I(255,71)] = {64,0}, + [I(0,72)] = {20,0xFFC63}, + [I(1,72)] = {30,0x3FFFEC63}, + [I(2,72)] = {64,0}, + [I(3,72)] = {64,0}, + [I(4,72)] = {64,0}, + [I(5,72)] = {64,0}, + [I(6,72)] = {64,0}, + [I(7,72)] = {64,0}, + [I(8,72)] = {64,0}, + [I(9,72)] = {31,0x7FFFF563}, + [I(10,72)] = {64,0}, + [I(11,72)] = {64,0}, + [I(12,72)] = {64,0}, + [I(13,72)] = {64,0}, + [I(14,72)] = {64,0}, + [I(15,72)] = {64,0}, + [I(16,72)] = {64,0}, + [I(17,72)] = {64,0}, + [I(18,72)] = {64,0}, + [I(19,72)] = {64,0}, + [I(20,72)] = {64,0}, + [I(21,72)] = {64,0}, + [I(22,72)] = {64,0}, + [I(23,72)] = {64,0}, + [I(24,72)] = {64,0}, + [I(25,72)] = {64,0}, + [I(26,72)] = {64,0}, + [I(27,72)] = {64,0}, + [I(28,72)] = {64,0}, + [I(29,72)] = {64,0}, + [I(30,72)] = {64,0}, + [I(31,72)] = {64,0}, + [I(32,72)] = {13,0xA63}, + [I(33,72)] = {17,0x1FC63}, + [I(34,72)] = {17,0x1FCE3}, + [I(35,72)] = {19,0x7FD63}, + [I(36,72)] = {20,0xFFCE3}, + [I(37,72)] = {13,0xAE3}, + [I(38,72)] = {15,0x7C63}, + [I(39,72)] = {18,0x3FD63}, + [I(40,72)] = {17,0x1FD63}, + [I(41,72)] = {17,0x1FDE3}, + [I(42,72)] = {15,0x7CE3}, + [I(43,72)] = {18,0x3FDE3}, + [I(44,72)] = {15,0x7D63}, + [I(45,72)] = {13,0xB63}, + [I(46,72)] = {13,0xBE3}, + [I(47,72)] = {13,0xC63}, + [I(48,72)] = {12,0x63}, + [I(49,72)] = {12,0xE3}, + [I(50,72)] = {12,0x163}, + [I(51,72)] = {13,0xCE3}, + [I(52,72)] = {13,0xD63}, + [I(53,72)] = {13,0xDE3}, + [I(54,72)] = {13,0xE63}, + [I(55,72)] = {13,0xEE3}, + [I(56,72)] = {13,0xF63}, + [I(57,72)] = {13,0xFE3}, + [I(58,72)] = {14,0x2E63}, + [I(59,72)] = {15,0x7DE3}, + [I(60,72)] = {22,0x3FFE63}, + [I(61,72)] = {13,0x1063}, + [I(62,72)] = {19,0x7FDE3}, + [I(63,72)] = {17,0x1FE63}, + [I(64,72)] = {20,0xFFD63}, + [I(65,72)] = {13,0x10E3}, + [I(66,72)] = {14,0x2EE3}, + [I(67,72)] = {14,0x2F63}, + [I(68,72)] = {14,0x2FE3}, + [I(69,72)] = {14,0x3063}, + [I(70,72)] = {14,0x30E3}, + [I(71,72)] = {14,0x3163}, + [I(72,72)] = {14,0x31E3}, + [I(73,72)] = {14,0x3263}, + [I(74,72)] = {14,0x32E3}, + [I(75,72)] = {14,0x3363}, + [I(76,72)] = {14,0x33E3}, + [I(77,72)] = {14,0x3463}, + [I(78,72)] = {14,0x34E3}, + [I(79,72)] = {14,0x3563}, + [I(80,72)] = {14,0x35E3}, + [I(81,72)] = {14,0x3663}, + [I(82,72)] = {14,0x36E3}, + [I(83,72)] = {14,0x3763}, + [I(84,72)] = {14,0x37E3}, + [I(85,72)] = {14,0x3863}, + [I(86,72)] = {14,0x38E3}, + [I(87,72)] = {14,0x3963}, + [I(88,72)] = {15,0x7E63}, + [I(89,72)] = {14,0x39E3}, + [I(90,72)] = {15,0x7EE3}, + [I(91,72)] = {20,0xFFDE3}, + [I(92,72)] = {26,0x3FFF863}, + [I(93,72)] = {20,0xFFE63}, + [I(94,72)] = {21,0x1FFE63}, + [I(95,72)] = {13,0x1163}, + [I(96,72)] = {22,0x3FFEE3}, + [I(97,72)] = {12,0x1E3}, + [I(98,72)] = {13,0x11E3}, + [I(99,72)] = {12,0x263}, + [I(100,72)] = {13,0x1263}, + [I(101,72)] = {12,0x2E3}, + [I(102,72)] = {13,0x12E3}, + [I(103,72)] = {13,0x1363}, + [I(104,72)] = {13,0x13E3}, + [I(105,72)] = {12,0x363}, + [I(106,72)] = {14,0x3A63}, + [I(107,72)] = {14,0x3AE3}, + [I(108,72)] = {13,0x1463}, + [I(109,72)] = {13,0x14E3}, + [I(110,72)] = {13,0x1563}, + [I(111,72)] = {12,0x3E3}, + [I(112,72)] = {13,0x15E3}, + [I(113,72)] = {14,0x3B63}, + [I(114,72)] = {13,0x1663}, + [I(115,72)] = {12,0x463}, + [I(116,72)] = {12,0x4E3}, + [I(117,72)] = {13,0x16E3}, + [I(118,72)] = {14,0x3BE3}, + [I(119,72)] = {14,0x3C63}, + [I(120,72)] = {14,0x3CE3}, + [I(121,72)] = {14,0x3D63}, + [I(122,72)] = {14,0x3DE3}, + [I(123,72)] = {22,0x3FFF63}, + [I(124,72)] = {18,0x3FE63}, + [I(125,72)] = {21,0x1FFEE3}, + [I(126,72)] = {20,0xFFEE3}, + [I(127,72)] = {64,0}, + [I(128,72)] = {27,0x7FFF363}, + [I(129,72)] = {29,0x1FFFE963}, + [I(130,72)] = {27,0x7FFF3E3}, + [I(131,72)] = {27,0x7FFF463}, + [I(132,72)] = {29,0x1FFFE9E3}, + [I(133,72)] = {29,0x1FFFEA63}, + [I(134,72)] = {29,0x1FFFEAE3}, + [I(135,72)] = {30,0x3FFFECE3}, + [I(136,72)] = {29,0x1FFFEB63}, + [I(137,72)] = {30,0x3FFFED63}, + [I(138,72)] = {30,0x3FFFEDE3}, + [I(139,72)] = {30,0x3FFFEE63}, + [I(140,72)] = {30,0x3FFFEEE3}, + [I(141,72)] = {30,0x3FFFEF63}, + [I(142,72)] = {31,0x7FFFF5E3}, + [I(143,72)] = {30,0x3FFFEFE3}, + [I(144,72)] = {31,0x7FFFF663}, + [I(145,72)] = {31,0x7FFFF6E3}, + [I(146,72)] = {29,0x1FFFEBE3}, + [I(147,72)] = {30,0x3FFFF063}, + [I(148,72)] = {31,0x7FFFF763}, + [I(149,72)] = {30,0x3FFFF0E3}, + [I(150,72)] = {30,0x3FFFF163}, + [I(151,72)] = {30,0x3FFFF1E3}, + [I(152,72)] = {30,0x3FFFF263}, + [I(153,72)] = {28,0xFFFEE63}, + [I(154,72)] = {29,0x1FFFEC63}, + [I(155,72)] = {30,0x3FFFF2E3}, + [I(156,72)] = {29,0x1FFFECE3}, + [I(157,72)] = {30,0x3FFFF363}, + [I(158,72)] = {30,0x3FFFF3E3}, + [I(159,72)] = {31,0x7FFFF7E3}, + [I(160,72)] = {29,0x1FFFED63}, + [I(161,72)] = {28,0xFFFEEE3}, + [I(162,72)] = {27,0x7FFF4E3}, + [I(163,72)] = {29,0x1FFFEDE3}, + [I(164,72)] = {29,0x1FFFEE63}, + [I(165,72)] = {30,0x3FFFF463}, + [I(166,72)] = {30,0x3FFFF4E3}, + [I(167,72)] = {28,0xFFFEF63}, + [I(168,72)] = {30,0x3FFFF563}, + [I(169,72)] = {29,0x1FFFEEE3}, + [I(170,72)] = {29,0x1FFFEF63}, + [I(171,72)] = {31,0x7FFFF863}, + [I(172,72)] = {28,0xFFFEFE3}, + [I(173,72)] = {29,0x1FFFEFE3}, + [I(174,72)] = {30,0x3FFFF5E3}, + [I(175,72)] = {30,0x3FFFF663}, + [I(176,72)] = {28,0xFFFF063}, + [I(177,72)] = {28,0xFFFF0E3}, + [I(178,72)] = {29,0x1FFFF063}, + [I(179,72)] = {28,0xFFFF163}, + [I(180,72)] = {30,0x3FFFF6E3}, + [I(181,72)] = {29,0x1FFFF0E3}, + [I(182,72)] = {30,0x3FFFF763}, + [I(183,72)] = {30,0x3FFFF7E3}, + [I(184,72)] = {27,0x7FFF563}, + [I(185,72)] = {29,0x1FFFF163}, + [I(186,72)] = {29,0x1FFFF1E3}, + [I(187,72)] = {29,0x1FFFF263}, + [I(188,72)] = {30,0x3FFFF863}, + [I(189,72)] = {29,0x1FFFF2E3}, + [I(190,72)] = {29,0x1FFFF363}, + [I(191,72)] = {30,0x3FFFF8E3}, + [I(192,72)] = {64,0}, + [I(193,72)] = {64,0}, + [I(194,72)] = {27,0x7FFF5E3}, + [I(195,72)] = {26,0x3FFF8E3}, + [I(196,72)] = {29,0x1FFFF3E3}, + [I(197,72)] = {30,0x3FFFF963}, + [I(198,72)] = {29,0x1FFFF463}, + [I(199,72)] = {X32,0xFFFFF663}, + [I(200,72)] = {64,0}, + [I(201,72)] = {64,0}, + [I(202,72)] = {64,0}, + [I(203,72)] = {64,0}, + [I(204,72)] = {64,0}, + [I(205,72)] = {64,0}, + [I(206,72)] = {31,0x7FFFF8E3}, + [I(207,72)] = {X32,0xFFFFF6E3}, + [I(208,72)] = {26,0x3FFF963}, + [I(209,72)] = {28,0xFFFF1E3}, + [I(210,72)] = {64,0}, + [I(211,72)] = {64,0}, + [I(212,72)] = {64,0}, + [I(213,72)] = {64,0}, + [I(214,72)] = {64,0}, + [I(215,72)] = {31,0x7FFFF963}, + [I(216,72)] = {28,0xFFFF263}, + [I(217,72)] = {28,0xFFFF2E3}, + [I(218,72)] = {64,0}, + [I(219,72)] = {64,0}, + [I(220,72)] = {64,0}, + [I(221,72)] = {64,0}, + [I(222,72)] = {64,0}, + [I(223,72)] = {64,0}, + [I(224,72)] = {27,0x7FFF663}, + [I(225,72)] = {31,0x7FFFF9E3}, + [I(226,72)] = {27,0x7FFF6E3}, + [I(227,72)] = {28,0xFFFF363}, + [I(228,72)] = {29,0x1FFFF4E3}, + [I(229,72)] = {28,0xFFFF3E3}, + [I(230,72)] = {28,0xFFFF463}, + [I(231,72)] = {30,0x3FFFF9E3}, + [I(232,72)] = {29,0x1FFFF563}, + [I(233,72)] = {29,0x1FFFF5E3}, + [I(234,72)] = {X32,0xFFFFF763}, + [I(235,72)] = {X32,0xFFFFF7E3}, + [I(236,72)] = {31,0x7FFFFA63}, + [I(237,72)] = {31,0x7FFFFAE3}, + [I(238,72)] = {64,0}, + [I(239,72)] = {30,0x3FFFFA63}, + [I(240,72)] = {64,0}, + [I(241,72)] = {64,0}, + [I(242,72)] = {64,0}, + [I(243,72)] = {64,0}, + [I(244,72)] = {64,0}, + [I(245,72)] = {64,0}, + [I(246,72)] = {64,0}, + [I(247,72)] = {64,0}, + [I(248,72)] = {64,0}, + [I(249,72)] = {64,0}, + [I(250,72)] = {64,0}, + [I(251,72)] = {64,0}, + [I(252,72)] = {64,0}, + [I(253,72)] = {64,0}, + [I(254,72)] = {64,0}, + [I(255,72)] = {64,0}, + [I(0,73)] = {20,0xFFC64}, + [I(1,73)] = {30,0x3FFFEC64}, + [I(2,73)] = {64,0}, + [I(3,73)] = {64,0}, + [I(4,73)] = {64,0}, + [I(5,73)] = {64,0}, + [I(6,73)] = {64,0}, + [I(7,73)] = {64,0}, + [I(8,73)] = {64,0}, + [I(9,73)] = {31,0x7FFFF564}, + [I(10,73)] = {64,0}, + [I(11,73)] = {64,0}, + [I(12,73)] = {64,0}, + [I(13,73)] = {64,0}, + [I(14,73)] = {64,0}, + [I(15,73)] = {64,0}, + [I(16,73)] = {64,0}, + [I(17,73)] = {64,0}, + [I(18,73)] = {64,0}, + [I(19,73)] = {64,0}, + [I(20,73)] = {64,0}, + [I(21,73)] = {64,0}, + [I(22,73)] = {64,0}, + [I(23,73)] = {64,0}, + [I(24,73)] = {64,0}, + [I(25,73)] = {64,0}, + [I(26,73)] = {64,0}, + [I(27,73)] = {64,0}, + [I(28,73)] = {64,0}, + [I(29,73)] = {64,0}, + [I(30,73)] = {64,0}, + [I(31,73)] = {64,0}, + [I(32,73)] = {13,0xA64}, + [I(33,73)] = {17,0x1FC64}, + [I(34,73)] = {17,0x1FCE4}, + [I(35,73)] = {19,0x7FD64}, + [I(36,73)] = {20,0xFFCE4}, + [I(37,73)] = {13,0xAE4}, + [I(38,73)] = {15,0x7C64}, + [I(39,73)] = {18,0x3FD64}, + [I(40,73)] = {17,0x1FD64}, + [I(41,73)] = {17,0x1FDE4}, + [I(42,73)] = {15,0x7CE4}, + [I(43,73)] = {18,0x3FDE4}, + [I(44,73)] = {15,0x7D64}, + [I(45,73)] = {13,0xB64}, + [I(46,73)] = {13,0xBE4}, + [I(47,73)] = {13,0xC64}, + [I(48,73)] = {12,0x64}, + [I(49,73)] = {12,0xE4}, + [I(50,73)] = {12,0x164}, + [I(51,73)] = {13,0xCE4}, + [I(52,73)] = {13,0xD64}, + [I(53,73)] = {13,0xDE4}, + [I(54,73)] = {13,0xE64}, + [I(55,73)] = {13,0xEE4}, + [I(56,73)] = {13,0xF64}, + [I(57,73)] = {13,0xFE4}, + [I(58,73)] = {14,0x2E64}, + [I(59,73)] = {15,0x7DE4}, + [I(60,73)] = {22,0x3FFE64}, + [I(61,73)] = {13,0x1064}, + [I(62,73)] = {19,0x7FDE4}, + [I(63,73)] = {17,0x1FE64}, + [I(64,73)] = {20,0xFFD64}, + [I(65,73)] = {13,0x10E4}, + [I(66,73)] = {14,0x2EE4}, + [I(67,73)] = {14,0x2F64}, + [I(68,73)] = {14,0x2FE4}, + [I(69,73)] = {14,0x3064}, + [I(70,73)] = {14,0x30E4}, + [I(71,73)] = {14,0x3164}, + [I(72,73)] = {14,0x31E4}, + [I(73,73)] = {14,0x3264}, + [I(74,73)] = {14,0x32E4}, + [I(75,73)] = {14,0x3364}, + [I(76,73)] = {14,0x33E4}, + [I(77,73)] = {14,0x3464}, + [I(78,73)] = {14,0x34E4}, + [I(79,73)] = {14,0x3564}, + [I(80,73)] = {14,0x35E4}, + [I(81,73)] = {14,0x3664}, + [I(82,73)] = {14,0x36E4}, + [I(83,73)] = {14,0x3764}, + [I(84,73)] = {14,0x37E4}, + [I(85,73)] = {14,0x3864}, + [I(86,73)] = {14,0x38E4}, + [I(87,73)] = {14,0x3964}, + [I(88,73)] = {15,0x7E64}, + [I(89,73)] = {14,0x39E4}, + [I(90,73)] = {15,0x7EE4}, + [I(91,73)] = {20,0xFFDE4}, + [I(92,73)] = {26,0x3FFF864}, + [I(93,73)] = {20,0xFFE64}, + [I(94,73)] = {21,0x1FFE64}, + [I(95,73)] = {13,0x1164}, + [I(96,73)] = {22,0x3FFEE4}, + [I(97,73)] = {12,0x1E4}, + [I(98,73)] = {13,0x11E4}, + [I(99,73)] = {12,0x264}, + [I(100,73)] = {13,0x1264}, + [I(101,73)] = {12,0x2E4}, + [I(102,73)] = {13,0x12E4}, + [I(103,73)] = {13,0x1364}, + [I(104,73)] = {13,0x13E4}, + [I(105,73)] = {12,0x364}, + [I(106,73)] = {14,0x3A64}, + [I(107,73)] = {14,0x3AE4}, + [I(108,73)] = {13,0x1464}, + [I(109,73)] = {13,0x14E4}, + [I(110,73)] = {13,0x1564}, + [I(111,73)] = {12,0x3E4}, + [I(112,73)] = {13,0x15E4}, + [I(113,73)] = {14,0x3B64}, + [I(114,73)] = {13,0x1664}, + [I(115,73)] = {12,0x464}, + [I(116,73)] = {12,0x4E4}, + [I(117,73)] = {13,0x16E4}, + [I(118,73)] = {14,0x3BE4}, + [I(119,73)] = {14,0x3C64}, + [I(120,73)] = {14,0x3CE4}, + [I(121,73)] = {14,0x3D64}, + [I(122,73)] = {14,0x3DE4}, + [I(123,73)] = {22,0x3FFF64}, + [I(124,73)] = {18,0x3FE64}, + [I(125,73)] = {21,0x1FFEE4}, + [I(126,73)] = {20,0xFFEE4}, + [I(127,73)] = {64,0}, + [I(128,73)] = {27,0x7FFF364}, + [I(129,73)] = {29,0x1FFFE964}, + [I(130,73)] = {27,0x7FFF3E4}, + [I(131,73)] = {27,0x7FFF464}, + [I(132,73)] = {29,0x1FFFE9E4}, + [I(133,73)] = {29,0x1FFFEA64}, + [I(134,73)] = {29,0x1FFFEAE4}, + [I(135,73)] = {30,0x3FFFECE4}, + [I(136,73)] = {29,0x1FFFEB64}, + [I(137,73)] = {30,0x3FFFED64}, + [I(138,73)] = {30,0x3FFFEDE4}, + [I(139,73)] = {30,0x3FFFEE64}, + [I(140,73)] = {30,0x3FFFEEE4}, + [I(141,73)] = {30,0x3FFFEF64}, + [I(142,73)] = {31,0x7FFFF5E4}, + [I(143,73)] = {30,0x3FFFEFE4}, + [I(144,73)] = {31,0x7FFFF664}, + [I(145,73)] = {31,0x7FFFF6E4}, + [I(146,73)] = {29,0x1FFFEBE4}, + [I(147,73)] = {30,0x3FFFF064}, + [I(148,73)] = {31,0x7FFFF764}, + [I(149,73)] = {30,0x3FFFF0E4}, + [I(150,73)] = {30,0x3FFFF164}, + [I(151,73)] = {30,0x3FFFF1E4}, + [I(152,73)] = {30,0x3FFFF264}, + [I(153,73)] = {28,0xFFFEE64}, + [I(154,73)] = {29,0x1FFFEC64}, + [I(155,73)] = {30,0x3FFFF2E4}, + [I(156,73)] = {29,0x1FFFECE4}, + [I(157,73)] = {30,0x3FFFF364}, + [I(158,73)] = {30,0x3FFFF3E4}, + [I(159,73)] = {31,0x7FFFF7E4}, + [I(160,73)] = {29,0x1FFFED64}, + [I(161,73)] = {28,0xFFFEEE4}, + [I(162,73)] = {27,0x7FFF4E4}, + [I(163,73)] = {29,0x1FFFEDE4}, + [I(164,73)] = {29,0x1FFFEE64}, + [I(165,73)] = {30,0x3FFFF464}, + [I(166,73)] = {30,0x3FFFF4E4}, + [I(167,73)] = {28,0xFFFEF64}, + [I(168,73)] = {30,0x3FFFF564}, + [I(169,73)] = {29,0x1FFFEEE4}, + [I(170,73)] = {29,0x1FFFEF64}, + [I(171,73)] = {31,0x7FFFF864}, + [I(172,73)] = {28,0xFFFEFE4}, + [I(173,73)] = {29,0x1FFFEFE4}, + [I(174,73)] = {30,0x3FFFF5E4}, + [I(175,73)] = {30,0x3FFFF664}, + [I(176,73)] = {28,0xFFFF064}, + [I(177,73)] = {28,0xFFFF0E4}, + [I(178,73)] = {29,0x1FFFF064}, + [I(179,73)] = {28,0xFFFF164}, + [I(180,73)] = {30,0x3FFFF6E4}, + [I(181,73)] = {29,0x1FFFF0E4}, + [I(182,73)] = {30,0x3FFFF764}, + [I(183,73)] = {30,0x3FFFF7E4}, + [I(184,73)] = {27,0x7FFF564}, + [I(185,73)] = {29,0x1FFFF164}, + [I(186,73)] = {29,0x1FFFF1E4}, + [I(187,73)] = {29,0x1FFFF264}, + [I(188,73)] = {30,0x3FFFF864}, + [I(189,73)] = {29,0x1FFFF2E4}, + [I(190,73)] = {29,0x1FFFF364}, + [I(191,73)] = {30,0x3FFFF8E4}, + [I(192,73)] = {64,0}, + [I(193,73)] = {64,0}, + [I(194,73)] = {27,0x7FFF5E4}, + [I(195,73)] = {26,0x3FFF8E4}, + [I(196,73)] = {29,0x1FFFF3E4}, + [I(197,73)] = {30,0x3FFFF964}, + [I(198,73)] = {29,0x1FFFF464}, + [I(199,73)] = {X32,0xFFFFF664}, + [I(200,73)] = {64,0}, + [I(201,73)] = {64,0}, + [I(202,73)] = {64,0}, + [I(203,73)] = {64,0}, + [I(204,73)] = {64,0}, + [I(205,73)] = {64,0}, + [I(206,73)] = {31,0x7FFFF8E4}, + [I(207,73)] = {X32,0xFFFFF6E4}, + [I(208,73)] = {26,0x3FFF964}, + [I(209,73)] = {28,0xFFFF1E4}, + [I(210,73)] = {64,0}, + [I(211,73)] = {64,0}, + [I(212,73)] = {64,0}, + [I(213,73)] = {64,0}, + [I(214,73)] = {64,0}, + [I(215,73)] = {31,0x7FFFF964}, + [I(216,73)] = {28,0xFFFF264}, + [I(217,73)] = {28,0xFFFF2E4}, + [I(218,73)] = {64,0}, + [I(219,73)] = {64,0}, + [I(220,73)] = {64,0}, + [I(221,73)] = {64,0}, + [I(222,73)] = {64,0}, + [I(223,73)] = {64,0}, + [I(224,73)] = {27,0x7FFF664}, + [I(225,73)] = {31,0x7FFFF9E4}, + [I(226,73)] = {27,0x7FFF6E4}, + [I(227,73)] = {28,0xFFFF364}, + [I(228,73)] = {29,0x1FFFF4E4}, + [I(229,73)] = {28,0xFFFF3E4}, + [I(230,73)] = {28,0xFFFF464}, + [I(231,73)] = {30,0x3FFFF9E4}, + [I(232,73)] = {29,0x1FFFF564}, + [I(233,73)] = {29,0x1FFFF5E4}, + [I(234,73)] = {X32,0xFFFFF764}, + [I(235,73)] = {X32,0xFFFFF7E4}, + [I(236,73)] = {31,0x7FFFFA64}, + [I(237,73)] = {31,0x7FFFFAE4}, + [I(238,73)] = {64,0}, + [I(239,73)] = {30,0x3FFFFA64}, + [I(240,73)] = {64,0}, + [I(241,73)] = {64,0}, + [I(242,73)] = {64,0}, + [I(243,73)] = {64,0}, + [I(244,73)] = {64,0}, + [I(245,73)] = {64,0}, + [I(246,73)] = {64,0}, + [I(247,73)] = {64,0}, + [I(248,73)] = {64,0}, + [I(249,73)] = {64,0}, + [I(250,73)] = {64,0}, + [I(251,73)] = {64,0}, + [I(252,73)] = {64,0}, + [I(253,73)] = {64,0}, + [I(254,73)] = {64,0}, + [I(255,73)] = {64,0}, + [I(0,74)] = {20,0xFFC65}, + [I(1,74)] = {30,0x3FFFEC65}, + [I(2,74)] = {64,0}, + [I(3,74)] = {64,0}, + [I(4,74)] = {64,0}, + [I(5,74)] = {64,0}, + [I(6,74)] = {64,0}, + [I(7,74)] = {64,0}, + [I(8,74)] = {64,0}, + [I(9,74)] = {31,0x7FFFF565}, + [I(10,74)] = {64,0}, + [I(11,74)] = {64,0}, + [I(12,74)] = {64,0}, + [I(13,74)] = {64,0}, + [I(14,74)] = {64,0}, + [I(15,74)] = {64,0}, + [I(16,74)] = {64,0}, + [I(17,74)] = {64,0}, + [I(18,74)] = {64,0}, + [I(19,74)] = {64,0}, + [I(20,74)] = {64,0}, + [I(21,74)] = {64,0}, + [I(22,74)] = {64,0}, + [I(23,74)] = {64,0}, + [I(24,74)] = {64,0}, + [I(25,74)] = {64,0}, + [I(26,74)] = {64,0}, + [I(27,74)] = {64,0}, + [I(28,74)] = {64,0}, + [I(29,74)] = {64,0}, + [I(30,74)] = {64,0}, + [I(31,74)] = {64,0}, + [I(32,74)] = {13,0xA65}, + [I(33,74)] = {17,0x1FC65}, + [I(34,74)] = {17,0x1FCE5}, + [I(35,74)] = {19,0x7FD65}, + [I(36,74)] = {20,0xFFCE5}, + [I(37,74)] = {13,0xAE5}, + [I(38,74)] = {15,0x7C65}, + [I(39,74)] = {18,0x3FD65}, + [I(40,74)] = {17,0x1FD65}, + [I(41,74)] = {17,0x1FDE5}, + [I(42,74)] = {15,0x7CE5}, + [I(43,74)] = {18,0x3FDE5}, + [I(44,74)] = {15,0x7D65}, + [I(45,74)] = {13,0xB65}, + [I(46,74)] = {13,0xBE5}, + [I(47,74)] = {13,0xC65}, + [I(48,74)] = {12,0x65}, + [I(49,74)] = {12,0xE5}, + [I(50,74)] = {12,0x165}, + [I(51,74)] = {13,0xCE5}, + [I(52,74)] = {13,0xD65}, + [I(53,74)] = {13,0xDE5}, + [I(54,74)] = {13,0xE65}, + [I(55,74)] = {13,0xEE5}, + [I(56,74)] = {13,0xF65}, + [I(57,74)] = {13,0xFE5}, + [I(58,74)] = {14,0x2E65}, + [I(59,74)] = {15,0x7DE5}, + [I(60,74)] = {22,0x3FFE65}, + [I(61,74)] = {13,0x1065}, + [I(62,74)] = {19,0x7FDE5}, + [I(63,74)] = {17,0x1FE65}, + [I(64,74)] = {20,0xFFD65}, + [I(65,74)] = {13,0x10E5}, + [I(66,74)] = {14,0x2EE5}, + [I(67,74)] = {14,0x2F65}, + [I(68,74)] = {14,0x2FE5}, + [I(69,74)] = {14,0x3065}, + [I(70,74)] = {14,0x30E5}, + [I(71,74)] = {14,0x3165}, + [I(72,74)] = {14,0x31E5}, + [I(73,74)] = {14,0x3265}, + [I(74,74)] = {14,0x32E5}, + [I(75,74)] = {14,0x3365}, + [I(76,74)] = {14,0x33E5}, + [I(77,74)] = {14,0x3465}, + [I(78,74)] = {14,0x34E5}, + [I(79,74)] = {14,0x3565}, + [I(80,74)] = {14,0x35E5}, + [I(81,74)] = {14,0x3665}, + [I(82,74)] = {14,0x36E5}, + [I(83,74)] = {14,0x3765}, + [I(84,74)] = {14,0x37E5}, + [I(85,74)] = {14,0x3865}, + [I(86,74)] = {14,0x38E5}, + [I(87,74)] = {14,0x3965}, + [I(88,74)] = {15,0x7E65}, + [I(89,74)] = {14,0x39E5}, + [I(90,74)] = {15,0x7EE5}, + [I(91,74)] = {20,0xFFDE5}, + [I(92,74)] = {26,0x3FFF865}, + [I(93,74)] = {20,0xFFE65}, + [I(94,74)] = {21,0x1FFE65}, + [I(95,74)] = {13,0x1165}, + [I(96,74)] = {22,0x3FFEE5}, + [I(97,74)] = {12,0x1E5}, + [I(98,74)] = {13,0x11E5}, + [I(99,74)] = {12,0x265}, + [I(100,74)] = {13,0x1265}, + [I(101,74)] = {12,0x2E5}, + [I(102,74)] = {13,0x12E5}, + [I(103,74)] = {13,0x1365}, + [I(104,74)] = {13,0x13E5}, + [I(105,74)] = {12,0x365}, + [I(106,74)] = {14,0x3A65}, + [I(107,74)] = {14,0x3AE5}, + [I(108,74)] = {13,0x1465}, + [I(109,74)] = {13,0x14E5}, + [I(110,74)] = {13,0x1565}, + [I(111,74)] = {12,0x3E5}, + [I(112,74)] = {13,0x15E5}, + [I(113,74)] = {14,0x3B65}, + [I(114,74)] = {13,0x1665}, + [I(115,74)] = {12,0x465}, + [I(116,74)] = {12,0x4E5}, + [I(117,74)] = {13,0x16E5}, + [I(118,74)] = {14,0x3BE5}, + [I(119,74)] = {14,0x3C65}, + [I(120,74)] = {14,0x3CE5}, + [I(121,74)] = {14,0x3D65}, + [I(122,74)] = {14,0x3DE5}, + [I(123,74)] = {22,0x3FFF65}, + [I(124,74)] = {18,0x3FE65}, + [I(125,74)] = {21,0x1FFEE5}, + [I(126,74)] = {20,0xFFEE5}, + [I(127,74)] = {64,0}, + [I(128,74)] = {27,0x7FFF365}, + [I(129,74)] = {29,0x1FFFE965}, + [I(130,74)] = {27,0x7FFF3E5}, + [I(131,74)] = {27,0x7FFF465}, + [I(132,74)] = {29,0x1FFFE9E5}, + [I(133,74)] = {29,0x1FFFEA65}, + [I(134,74)] = {29,0x1FFFEAE5}, + [I(135,74)] = {30,0x3FFFECE5}, + [I(136,74)] = {29,0x1FFFEB65}, + [I(137,74)] = {30,0x3FFFED65}, + [I(138,74)] = {30,0x3FFFEDE5}, + [I(139,74)] = {30,0x3FFFEE65}, + [I(140,74)] = {30,0x3FFFEEE5}, + [I(141,74)] = {30,0x3FFFEF65}, + [I(142,74)] = {31,0x7FFFF5E5}, + [I(143,74)] = {30,0x3FFFEFE5}, + [I(144,74)] = {31,0x7FFFF665}, + [I(145,74)] = {31,0x7FFFF6E5}, + [I(146,74)] = {29,0x1FFFEBE5}, + [I(147,74)] = {30,0x3FFFF065}, + [I(148,74)] = {31,0x7FFFF765}, + [I(149,74)] = {30,0x3FFFF0E5}, + [I(150,74)] = {30,0x3FFFF165}, + [I(151,74)] = {30,0x3FFFF1E5}, + [I(152,74)] = {30,0x3FFFF265}, + [I(153,74)] = {28,0xFFFEE65}, + [I(154,74)] = {29,0x1FFFEC65}, + [I(155,74)] = {30,0x3FFFF2E5}, + [I(156,74)] = {29,0x1FFFECE5}, + [I(157,74)] = {30,0x3FFFF365}, + [I(158,74)] = {30,0x3FFFF3E5}, + [I(159,74)] = {31,0x7FFFF7E5}, + [I(160,74)] = {29,0x1FFFED65}, + [I(161,74)] = {28,0xFFFEEE5}, + [I(162,74)] = {27,0x7FFF4E5}, + [I(163,74)] = {29,0x1FFFEDE5}, + [I(164,74)] = {29,0x1FFFEE65}, + [I(165,74)] = {30,0x3FFFF465}, + [I(166,74)] = {30,0x3FFFF4E5}, + [I(167,74)] = {28,0xFFFEF65}, + [I(168,74)] = {30,0x3FFFF565}, + [I(169,74)] = {29,0x1FFFEEE5}, + [I(170,74)] = {29,0x1FFFEF65}, + [I(171,74)] = {31,0x7FFFF865}, + [I(172,74)] = {28,0xFFFEFE5}, + [I(173,74)] = {29,0x1FFFEFE5}, + [I(174,74)] = {30,0x3FFFF5E5}, + [I(175,74)] = {30,0x3FFFF665}, + [I(176,74)] = {28,0xFFFF065}, + [I(177,74)] = {28,0xFFFF0E5}, + [I(178,74)] = {29,0x1FFFF065}, + [I(179,74)] = {28,0xFFFF165}, + [I(180,74)] = {30,0x3FFFF6E5}, + [I(181,74)] = {29,0x1FFFF0E5}, + [I(182,74)] = {30,0x3FFFF765}, + [I(183,74)] = {30,0x3FFFF7E5}, + [I(184,74)] = {27,0x7FFF565}, + [I(185,74)] = {29,0x1FFFF165}, + [I(186,74)] = {29,0x1FFFF1E5}, + [I(187,74)] = {29,0x1FFFF265}, + [I(188,74)] = {30,0x3FFFF865}, + [I(189,74)] = {29,0x1FFFF2E5}, + [I(190,74)] = {29,0x1FFFF365}, + [I(191,74)] = {30,0x3FFFF8E5}, + [I(192,74)] = {64,0}, + [I(193,74)] = {64,0}, + [I(194,74)] = {27,0x7FFF5E5}, + [I(195,74)] = {26,0x3FFF8E5}, + [I(196,74)] = {29,0x1FFFF3E5}, + [I(197,74)] = {30,0x3FFFF965}, + [I(198,74)] = {29,0x1FFFF465}, + [I(199,74)] = {X32,0xFFFFF665}, + [I(200,74)] = {64,0}, + [I(201,74)] = {64,0}, + [I(202,74)] = {64,0}, + [I(203,74)] = {64,0}, + [I(204,74)] = {64,0}, + [I(205,74)] = {64,0}, + [I(206,74)] = {31,0x7FFFF8E5}, + [I(207,74)] = {X32,0xFFFFF6E5}, + [I(208,74)] = {26,0x3FFF965}, + [I(209,74)] = {28,0xFFFF1E5}, + [I(210,74)] = {64,0}, + [I(211,74)] = {64,0}, + [I(212,74)] = {64,0}, + [I(213,74)] = {64,0}, + [I(214,74)] = {64,0}, + [I(215,74)] = {31,0x7FFFF965}, + [I(216,74)] = {28,0xFFFF265}, + [I(217,74)] = {28,0xFFFF2E5}, + [I(218,74)] = {64,0}, + [I(219,74)] = {64,0}, + [I(220,74)] = {64,0}, + [I(221,74)] = {64,0}, + [I(222,74)] = {64,0}, + [I(223,74)] = {64,0}, + [I(224,74)] = {27,0x7FFF665}, + [I(225,74)] = {31,0x7FFFF9E5}, + [I(226,74)] = {27,0x7FFF6E5}, + [I(227,74)] = {28,0xFFFF365}, + [I(228,74)] = {29,0x1FFFF4E5}, + [I(229,74)] = {28,0xFFFF3E5}, + [I(230,74)] = {28,0xFFFF465}, + [I(231,74)] = {30,0x3FFFF9E5}, + [I(232,74)] = {29,0x1FFFF565}, + [I(233,74)] = {29,0x1FFFF5E5}, + [I(234,74)] = {X32,0xFFFFF765}, + [I(235,74)] = {X32,0xFFFFF7E5}, + [I(236,74)] = {31,0x7FFFFA65}, + [I(237,74)] = {31,0x7FFFFAE5}, + [I(238,74)] = {64,0}, + [I(239,74)] = {30,0x3FFFFA65}, + [I(240,74)] = {64,0}, + [I(241,74)] = {64,0}, + [I(242,74)] = {64,0}, + [I(243,74)] = {64,0}, + [I(244,74)] = {64,0}, + [I(245,74)] = {64,0}, + [I(246,74)] = {64,0}, + [I(247,74)] = {64,0}, + [I(248,74)] = {64,0}, + [I(249,74)] = {64,0}, + [I(250,74)] = {64,0}, + [I(251,74)] = {64,0}, + [I(252,74)] = {64,0}, + [I(253,74)] = {64,0}, + [I(254,74)] = {64,0}, + [I(255,74)] = {64,0}, + [I(0,75)] = {20,0xFFC66}, + [I(1,75)] = {30,0x3FFFEC66}, + [I(2,75)] = {64,0}, + [I(3,75)] = {64,0}, + [I(4,75)] = {64,0}, + [I(5,75)] = {64,0}, + [I(6,75)] = {64,0}, + [I(7,75)] = {64,0}, + [I(8,75)] = {64,0}, + [I(9,75)] = {31,0x7FFFF566}, + [I(10,75)] = {64,0}, + [I(11,75)] = {64,0}, + [I(12,75)] = {64,0}, + [I(13,75)] = {64,0}, + [I(14,75)] = {64,0}, + [I(15,75)] = {64,0}, + [I(16,75)] = {64,0}, + [I(17,75)] = {64,0}, + [I(18,75)] = {64,0}, + [I(19,75)] = {64,0}, + [I(20,75)] = {64,0}, + [I(21,75)] = {64,0}, + [I(22,75)] = {64,0}, + [I(23,75)] = {64,0}, + [I(24,75)] = {64,0}, + [I(25,75)] = {64,0}, + [I(26,75)] = {64,0}, + [I(27,75)] = {64,0}, + [I(28,75)] = {64,0}, + [I(29,75)] = {64,0}, + [I(30,75)] = {64,0}, + [I(31,75)] = {64,0}, + [I(32,75)] = {13,0xA66}, + [I(33,75)] = {17,0x1FC66}, + [I(34,75)] = {17,0x1FCE6}, + [I(35,75)] = {19,0x7FD66}, + [I(36,75)] = {20,0xFFCE6}, + [I(37,75)] = {13,0xAE6}, + [I(38,75)] = {15,0x7C66}, + [I(39,75)] = {18,0x3FD66}, + [I(40,75)] = {17,0x1FD66}, + [I(41,75)] = {17,0x1FDE6}, + [I(42,75)] = {15,0x7CE6}, + [I(43,75)] = {18,0x3FDE6}, + [I(44,75)] = {15,0x7D66}, + [I(45,75)] = {13,0xB66}, + [I(46,75)] = {13,0xBE6}, + [I(47,75)] = {13,0xC66}, + [I(48,75)] = {12,0x66}, + [I(49,75)] = {12,0xE6}, + [I(50,75)] = {12,0x166}, + [I(51,75)] = {13,0xCE6}, + [I(52,75)] = {13,0xD66}, + [I(53,75)] = {13,0xDE6}, + [I(54,75)] = {13,0xE66}, + [I(55,75)] = {13,0xEE6}, + [I(56,75)] = {13,0xF66}, + [I(57,75)] = {13,0xFE6}, + [I(58,75)] = {14,0x2E66}, + [I(59,75)] = {15,0x7DE6}, + [I(60,75)] = {22,0x3FFE66}, + [I(61,75)] = {13,0x1066}, + [I(62,75)] = {19,0x7FDE6}, + [I(63,75)] = {17,0x1FE66}, + [I(64,75)] = {20,0xFFD66}, + [I(65,75)] = {13,0x10E6}, + [I(66,75)] = {14,0x2EE6}, + [I(67,75)] = {14,0x2F66}, + [I(68,75)] = {14,0x2FE6}, + [I(69,75)] = {14,0x3066}, + [I(70,75)] = {14,0x30E6}, + [I(71,75)] = {14,0x3166}, + [I(72,75)] = {14,0x31E6}, + [I(73,75)] = {14,0x3266}, + [I(74,75)] = {14,0x32E6}, + [I(75,75)] = {14,0x3366}, + [I(76,75)] = {14,0x33E6}, + [I(77,75)] = {14,0x3466}, + [I(78,75)] = {14,0x34E6}, + [I(79,75)] = {14,0x3566}, + [I(80,75)] = {14,0x35E6}, + [I(81,75)] = {14,0x3666}, + [I(82,75)] = {14,0x36E6}, + [I(83,75)] = {14,0x3766}, + [I(84,75)] = {14,0x37E6}, + [I(85,75)] = {14,0x3866}, + [I(86,75)] = {14,0x38E6}, + [I(87,75)] = {14,0x3966}, + [I(88,75)] = {15,0x7E66}, + [I(89,75)] = {14,0x39E6}, + [I(90,75)] = {15,0x7EE6}, + [I(91,75)] = {20,0xFFDE6}, + [I(92,75)] = {26,0x3FFF866}, + [I(93,75)] = {20,0xFFE66}, + [I(94,75)] = {21,0x1FFE66}, + [I(95,75)] = {13,0x1166}, + [I(96,75)] = {22,0x3FFEE6}, + [I(97,75)] = {12,0x1E6}, + [I(98,75)] = {13,0x11E6}, + [I(99,75)] = {12,0x266}, + [I(100,75)] = {13,0x1266}, + [I(101,75)] = {12,0x2E6}, + [I(102,75)] = {13,0x12E6}, + [I(103,75)] = {13,0x1366}, + [I(104,75)] = {13,0x13E6}, + [I(105,75)] = {12,0x366}, + [I(106,75)] = {14,0x3A66}, + [I(107,75)] = {14,0x3AE6}, + [I(108,75)] = {13,0x1466}, + [I(109,75)] = {13,0x14E6}, + [I(110,75)] = {13,0x1566}, + [I(111,75)] = {12,0x3E6}, + [I(112,75)] = {13,0x15E6}, + [I(113,75)] = {14,0x3B66}, + [I(114,75)] = {13,0x1666}, + [I(115,75)] = {12,0x466}, + [I(116,75)] = {12,0x4E6}, + [I(117,75)] = {13,0x16E6}, + [I(118,75)] = {14,0x3BE6}, + [I(119,75)] = {14,0x3C66}, + [I(120,75)] = {14,0x3CE6}, + [I(121,75)] = {14,0x3D66}, + [I(122,75)] = {14,0x3DE6}, + [I(123,75)] = {22,0x3FFF66}, + [I(124,75)] = {18,0x3FE66}, + [I(125,75)] = {21,0x1FFEE6}, + [I(126,75)] = {20,0xFFEE6}, + [I(127,75)] = {64,0}, + [I(128,75)] = {27,0x7FFF366}, + [I(129,75)] = {29,0x1FFFE966}, + [I(130,75)] = {27,0x7FFF3E6}, + [I(131,75)] = {27,0x7FFF466}, + [I(132,75)] = {29,0x1FFFE9E6}, + [I(133,75)] = {29,0x1FFFEA66}, + [I(134,75)] = {29,0x1FFFEAE6}, + [I(135,75)] = {30,0x3FFFECE6}, + [I(136,75)] = {29,0x1FFFEB66}, + [I(137,75)] = {30,0x3FFFED66}, + [I(138,75)] = {30,0x3FFFEDE6}, + [I(139,75)] = {30,0x3FFFEE66}, + [I(140,75)] = {30,0x3FFFEEE6}, + [I(141,75)] = {30,0x3FFFEF66}, + [I(142,75)] = {31,0x7FFFF5E6}, + [I(143,75)] = {30,0x3FFFEFE6}, + [I(144,75)] = {31,0x7FFFF666}, + [I(145,75)] = {31,0x7FFFF6E6}, + [I(146,75)] = {29,0x1FFFEBE6}, + [I(147,75)] = {30,0x3FFFF066}, + [I(148,75)] = {31,0x7FFFF766}, + [I(149,75)] = {30,0x3FFFF0E6}, + [I(150,75)] = {30,0x3FFFF166}, + [I(151,75)] = {30,0x3FFFF1E6}, + [I(152,75)] = {30,0x3FFFF266}, + [I(153,75)] = {28,0xFFFEE66}, + [I(154,75)] = {29,0x1FFFEC66}, + [I(155,75)] = {30,0x3FFFF2E6}, + [I(156,75)] = {29,0x1FFFECE6}, + [I(157,75)] = {30,0x3FFFF366}, + [I(158,75)] = {30,0x3FFFF3E6}, + [I(159,75)] = {31,0x7FFFF7E6}, + [I(160,75)] = {29,0x1FFFED66}, + [I(161,75)] = {28,0xFFFEEE6}, + [I(162,75)] = {27,0x7FFF4E6}, + [I(163,75)] = {29,0x1FFFEDE6}, + [I(164,75)] = {29,0x1FFFEE66}, + [I(165,75)] = {30,0x3FFFF466}, + [I(166,75)] = {30,0x3FFFF4E6}, + [I(167,75)] = {28,0xFFFEF66}, + [I(168,75)] = {30,0x3FFFF566}, + [I(169,75)] = {29,0x1FFFEEE6}, + [I(170,75)] = {29,0x1FFFEF66}, + [I(171,75)] = {31,0x7FFFF866}, + [I(172,75)] = {28,0xFFFEFE6}, + [I(173,75)] = {29,0x1FFFEFE6}, + [I(174,75)] = {30,0x3FFFF5E6}, + [I(175,75)] = {30,0x3FFFF666}, + [I(176,75)] = {28,0xFFFF066}, + [I(177,75)] = {28,0xFFFF0E6}, + [I(178,75)] = {29,0x1FFFF066}, + [I(179,75)] = {28,0xFFFF166}, + [I(180,75)] = {30,0x3FFFF6E6}, + [I(181,75)] = {29,0x1FFFF0E6}, + [I(182,75)] = {30,0x3FFFF766}, + [I(183,75)] = {30,0x3FFFF7E6}, + [I(184,75)] = {27,0x7FFF566}, + [I(185,75)] = {29,0x1FFFF166}, + [I(186,75)] = {29,0x1FFFF1E6}, + [I(187,75)] = {29,0x1FFFF266}, + [I(188,75)] = {30,0x3FFFF866}, + [I(189,75)] = {29,0x1FFFF2E6}, + [I(190,75)] = {29,0x1FFFF366}, + [I(191,75)] = {30,0x3FFFF8E6}, + [I(192,75)] = {64,0}, + [I(193,75)] = {64,0}, + [I(194,75)] = {27,0x7FFF5E6}, + [I(195,75)] = {26,0x3FFF8E6}, + [I(196,75)] = {29,0x1FFFF3E6}, + [I(197,75)] = {30,0x3FFFF966}, + [I(198,75)] = {29,0x1FFFF466}, + [I(199,75)] = {X32,0xFFFFF666}, + [I(200,75)] = {64,0}, + [I(201,75)] = {64,0}, + [I(202,75)] = {64,0}, + [I(203,75)] = {64,0}, + [I(204,75)] = {64,0}, + [I(205,75)] = {64,0}, + [I(206,75)] = {31,0x7FFFF8E6}, + [I(207,75)] = {X32,0xFFFFF6E6}, + [I(208,75)] = {26,0x3FFF966}, + [I(209,75)] = {28,0xFFFF1E6}, + [I(210,75)] = {64,0}, + [I(211,75)] = {64,0}, + [I(212,75)] = {64,0}, + [I(213,75)] = {64,0}, + [I(214,75)] = {64,0}, + [I(215,75)] = {31,0x7FFFF966}, + [I(216,75)] = {28,0xFFFF266}, + [I(217,75)] = {28,0xFFFF2E6}, + [I(218,75)] = {64,0}, + [I(219,75)] = {64,0}, + [I(220,75)] = {64,0}, + [I(221,75)] = {64,0}, + [I(222,75)] = {64,0}, + [I(223,75)] = {64,0}, + [I(224,75)] = {27,0x7FFF666}, + [I(225,75)] = {31,0x7FFFF9E6}, + [I(226,75)] = {27,0x7FFF6E6}, + [I(227,75)] = {28,0xFFFF366}, + [I(228,75)] = {29,0x1FFFF4E6}, + [I(229,75)] = {28,0xFFFF3E6}, + [I(230,75)] = {28,0xFFFF466}, + [I(231,75)] = {30,0x3FFFF9E6}, + [I(232,75)] = {29,0x1FFFF566}, + [I(233,75)] = {29,0x1FFFF5E6}, + [I(234,75)] = {X32,0xFFFFF766}, + [I(235,75)] = {X32,0xFFFFF7E6}, + [I(236,75)] = {31,0x7FFFFA66}, + [I(237,75)] = {31,0x7FFFFAE6}, + [I(238,75)] = {64,0}, + [I(239,75)] = {30,0x3FFFFA66}, + [I(240,75)] = {64,0}, + [I(241,75)] = {64,0}, + [I(242,75)] = {64,0}, + [I(243,75)] = {64,0}, + [I(244,75)] = {64,0}, + [I(245,75)] = {64,0}, + [I(246,75)] = {64,0}, + [I(247,75)] = {64,0}, + [I(248,75)] = {64,0}, + [I(249,75)] = {64,0}, + [I(250,75)] = {64,0}, + [I(251,75)] = {64,0}, + [I(252,75)] = {64,0}, + [I(253,75)] = {64,0}, + [I(254,75)] = {64,0}, + [I(255,75)] = {64,0}, + [I(0,76)] = {20,0xFFC67}, + [I(1,76)] = {30,0x3FFFEC67}, + [I(2,76)] = {64,0}, + [I(3,76)] = {64,0}, + [I(4,76)] = {64,0}, + [I(5,76)] = {64,0}, + [I(6,76)] = {64,0}, + [I(7,76)] = {64,0}, + [I(8,76)] = {64,0}, + [I(9,76)] = {31,0x7FFFF567}, + [I(10,76)] = {64,0}, + [I(11,76)] = {64,0}, + [I(12,76)] = {64,0}, + [I(13,76)] = {64,0}, + [I(14,76)] = {64,0}, + [I(15,76)] = {64,0}, + [I(16,76)] = {64,0}, + [I(17,76)] = {64,0}, + [I(18,76)] = {64,0}, + [I(19,76)] = {64,0}, + [I(20,76)] = {64,0}, + [I(21,76)] = {64,0}, + [I(22,76)] = {64,0}, + [I(23,76)] = {64,0}, + [I(24,76)] = {64,0}, + [I(25,76)] = {64,0}, + [I(26,76)] = {64,0}, + [I(27,76)] = {64,0}, + [I(28,76)] = {64,0}, + [I(29,76)] = {64,0}, + [I(30,76)] = {64,0}, + [I(31,76)] = {64,0}, + [I(32,76)] = {13,0xA67}, + [I(33,76)] = {17,0x1FC67}, + [I(34,76)] = {17,0x1FCE7}, + [I(35,76)] = {19,0x7FD67}, + [I(36,76)] = {20,0xFFCE7}, + [I(37,76)] = {13,0xAE7}, + [I(38,76)] = {15,0x7C67}, + [I(39,76)] = {18,0x3FD67}, + [I(40,76)] = {17,0x1FD67}, + [I(41,76)] = {17,0x1FDE7}, + [I(42,76)] = {15,0x7CE7}, + [I(43,76)] = {18,0x3FDE7}, + [I(44,76)] = {15,0x7D67}, + [I(45,76)] = {13,0xB67}, + [I(46,76)] = {13,0xBE7}, + [I(47,76)] = {13,0xC67}, + [I(48,76)] = {12,0x67}, + [I(49,76)] = {12,0xE7}, + [I(50,76)] = {12,0x167}, + [I(51,76)] = {13,0xCE7}, + [I(52,76)] = {13,0xD67}, + [I(53,76)] = {13,0xDE7}, + [I(54,76)] = {13,0xE67}, + [I(55,76)] = {13,0xEE7}, + [I(56,76)] = {13,0xF67}, + [I(57,76)] = {13,0xFE7}, + [I(58,76)] = {14,0x2E67}, + [I(59,76)] = {15,0x7DE7}, + [I(60,76)] = {22,0x3FFE67}, + [I(61,76)] = {13,0x1067}, + [I(62,76)] = {19,0x7FDE7}, + [I(63,76)] = {17,0x1FE67}, + [I(64,76)] = {20,0xFFD67}, + [I(65,76)] = {13,0x10E7}, + [I(66,76)] = {14,0x2EE7}, + [I(67,76)] = {14,0x2F67}, + [I(68,76)] = {14,0x2FE7}, + [I(69,76)] = {14,0x3067}, + [I(70,76)] = {14,0x30E7}, + [I(71,76)] = {14,0x3167}, + [I(72,76)] = {14,0x31E7}, + [I(73,76)] = {14,0x3267}, + [I(74,76)] = {14,0x32E7}, + [I(75,76)] = {14,0x3367}, + [I(76,76)] = {14,0x33E7}, + [I(77,76)] = {14,0x3467}, + [I(78,76)] = {14,0x34E7}, + [I(79,76)] = {14,0x3567}, + [I(80,76)] = {14,0x35E7}, + [I(81,76)] = {14,0x3667}, + [I(82,76)] = {14,0x36E7}, + [I(83,76)] = {14,0x3767}, + [I(84,76)] = {14,0x37E7}, + [I(85,76)] = {14,0x3867}, + [I(86,76)] = {14,0x38E7}, + [I(87,76)] = {14,0x3967}, + [I(88,76)] = {15,0x7E67}, + [I(89,76)] = {14,0x39E7}, + [I(90,76)] = {15,0x7EE7}, + [I(91,76)] = {20,0xFFDE7}, + [I(92,76)] = {26,0x3FFF867}, + [I(93,76)] = {20,0xFFE67}, + [I(94,76)] = {21,0x1FFE67}, + [I(95,76)] = {13,0x1167}, + [I(96,76)] = {22,0x3FFEE7}, + [I(97,76)] = {12,0x1E7}, + [I(98,76)] = {13,0x11E7}, + [I(99,76)] = {12,0x267}, + [I(100,76)] = {13,0x1267}, + [I(101,76)] = {12,0x2E7}, + [I(102,76)] = {13,0x12E7}, + [I(103,76)] = {13,0x1367}, + [I(104,76)] = {13,0x13E7}, + [I(105,76)] = {12,0x367}, + [I(106,76)] = {14,0x3A67}, + [I(107,76)] = {14,0x3AE7}, + [I(108,76)] = {13,0x1467}, + [I(109,76)] = {13,0x14E7}, + [I(110,76)] = {13,0x1567}, + [I(111,76)] = {12,0x3E7}, + [I(112,76)] = {13,0x15E7}, + [I(113,76)] = {14,0x3B67}, + [I(114,76)] = {13,0x1667}, + [I(115,76)] = {12,0x467}, + [I(116,76)] = {12,0x4E7}, + [I(117,76)] = {13,0x16E7}, + [I(118,76)] = {14,0x3BE7}, + [I(119,76)] = {14,0x3C67}, + [I(120,76)] = {14,0x3CE7}, + [I(121,76)] = {14,0x3D67}, + [I(122,76)] = {14,0x3DE7}, + [I(123,76)] = {22,0x3FFF67}, + [I(124,76)] = {18,0x3FE67}, + [I(125,76)] = {21,0x1FFEE7}, + [I(126,76)] = {20,0xFFEE7}, + [I(127,76)] = {64,0}, + [I(128,76)] = {27,0x7FFF367}, + [I(129,76)] = {29,0x1FFFE967}, + [I(130,76)] = {27,0x7FFF3E7}, + [I(131,76)] = {27,0x7FFF467}, + [I(132,76)] = {29,0x1FFFE9E7}, + [I(133,76)] = {29,0x1FFFEA67}, + [I(134,76)] = {29,0x1FFFEAE7}, + [I(135,76)] = {30,0x3FFFECE7}, + [I(136,76)] = {29,0x1FFFEB67}, + [I(137,76)] = {30,0x3FFFED67}, + [I(138,76)] = {30,0x3FFFEDE7}, + [I(139,76)] = {30,0x3FFFEE67}, + [I(140,76)] = {30,0x3FFFEEE7}, + [I(141,76)] = {30,0x3FFFEF67}, + [I(142,76)] = {31,0x7FFFF5E7}, + [I(143,76)] = {30,0x3FFFEFE7}, + [I(144,76)] = {31,0x7FFFF667}, + [I(145,76)] = {31,0x7FFFF6E7}, + [I(146,76)] = {29,0x1FFFEBE7}, + [I(147,76)] = {30,0x3FFFF067}, + [I(148,76)] = {31,0x7FFFF767}, + [I(149,76)] = {30,0x3FFFF0E7}, + [I(150,76)] = {30,0x3FFFF167}, + [I(151,76)] = {30,0x3FFFF1E7}, + [I(152,76)] = {30,0x3FFFF267}, + [I(153,76)] = {28,0xFFFEE67}, + [I(154,76)] = {29,0x1FFFEC67}, + [I(155,76)] = {30,0x3FFFF2E7}, + [I(156,76)] = {29,0x1FFFECE7}, + [I(157,76)] = {30,0x3FFFF367}, + [I(158,76)] = {30,0x3FFFF3E7}, + [I(159,76)] = {31,0x7FFFF7E7}, + [I(160,76)] = {29,0x1FFFED67}, + [I(161,76)] = {28,0xFFFEEE7}, + [I(162,76)] = {27,0x7FFF4E7}, + [I(163,76)] = {29,0x1FFFEDE7}, + [I(164,76)] = {29,0x1FFFEE67}, + [I(165,76)] = {30,0x3FFFF467}, + [I(166,76)] = {30,0x3FFFF4E7}, + [I(167,76)] = {28,0xFFFEF67}, + [I(168,76)] = {30,0x3FFFF567}, + [I(169,76)] = {29,0x1FFFEEE7}, + [I(170,76)] = {29,0x1FFFEF67}, + [I(171,76)] = {31,0x7FFFF867}, + [I(172,76)] = {28,0xFFFEFE7}, + [I(173,76)] = {29,0x1FFFEFE7}, + [I(174,76)] = {30,0x3FFFF5E7}, + [I(175,76)] = {30,0x3FFFF667}, + [I(176,76)] = {28,0xFFFF067}, + [I(177,76)] = {28,0xFFFF0E7}, + [I(178,76)] = {29,0x1FFFF067}, + [I(179,76)] = {28,0xFFFF167}, + [I(180,76)] = {30,0x3FFFF6E7}, + [I(181,76)] = {29,0x1FFFF0E7}, + [I(182,76)] = {30,0x3FFFF767}, + [I(183,76)] = {30,0x3FFFF7E7}, + [I(184,76)] = {27,0x7FFF567}, + [I(185,76)] = {29,0x1FFFF167}, + [I(186,76)] = {29,0x1FFFF1E7}, + [I(187,76)] = {29,0x1FFFF267}, + [I(188,76)] = {30,0x3FFFF867}, + [I(189,76)] = {29,0x1FFFF2E7}, + [I(190,76)] = {29,0x1FFFF367}, + [I(191,76)] = {30,0x3FFFF8E7}, + [I(192,76)] = {64,0}, + [I(193,76)] = {64,0}, + [I(194,76)] = {27,0x7FFF5E7}, + [I(195,76)] = {26,0x3FFF8E7}, + [I(196,76)] = {29,0x1FFFF3E7}, + [I(197,76)] = {30,0x3FFFF967}, + [I(198,76)] = {29,0x1FFFF467}, + [I(199,76)] = {X32,0xFFFFF667}, + [I(200,76)] = {64,0}, + [I(201,76)] = {64,0}, + [I(202,76)] = {64,0}, + [I(203,76)] = {64,0}, + [I(204,76)] = {64,0}, + [I(205,76)] = {64,0}, + [I(206,76)] = {31,0x7FFFF8E7}, + [I(207,76)] = {X32,0xFFFFF6E7}, + [I(208,76)] = {26,0x3FFF967}, + [I(209,76)] = {28,0xFFFF1E7}, + [I(210,76)] = {64,0}, + [I(211,76)] = {64,0}, + [I(212,76)] = {64,0}, + [I(213,76)] = {64,0}, + [I(214,76)] = {64,0}, + [I(215,76)] = {31,0x7FFFF967}, + [I(216,76)] = {28,0xFFFF267}, + [I(217,76)] = {28,0xFFFF2E7}, + [I(218,76)] = {64,0}, + [I(219,76)] = {64,0}, + [I(220,76)] = {64,0}, + [I(221,76)] = {64,0}, + [I(222,76)] = {64,0}, + [I(223,76)] = {64,0}, + [I(224,76)] = {27,0x7FFF667}, + [I(225,76)] = {31,0x7FFFF9E7}, + [I(226,76)] = {27,0x7FFF6E7}, + [I(227,76)] = {28,0xFFFF367}, + [I(228,76)] = {29,0x1FFFF4E7}, + [I(229,76)] = {28,0xFFFF3E7}, + [I(230,76)] = {28,0xFFFF467}, + [I(231,76)] = {30,0x3FFFF9E7}, + [I(232,76)] = {29,0x1FFFF567}, + [I(233,76)] = {29,0x1FFFF5E7}, + [I(234,76)] = {X32,0xFFFFF767}, + [I(235,76)] = {X32,0xFFFFF7E7}, + [I(236,76)] = {31,0x7FFFFA67}, + [I(237,76)] = {31,0x7FFFFAE7}, + [I(238,76)] = {64,0}, + [I(239,76)] = {30,0x3FFFFA67}, + [I(240,76)] = {64,0}, + [I(241,76)] = {64,0}, + [I(242,76)] = {64,0}, + [I(243,76)] = {64,0}, + [I(244,76)] = {64,0}, + [I(245,76)] = {64,0}, + [I(246,76)] = {64,0}, + [I(247,76)] = {64,0}, + [I(248,76)] = {64,0}, + [I(249,76)] = {64,0}, + [I(250,76)] = {64,0}, + [I(251,76)] = {64,0}, + [I(252,76)] = {64,0}, + [I(253,76)] = {64,0}, + [I(254,76)] = {64,0}, + [I(255,76)] = {64,0}, + [I(0,77)] = {20,0xFFC68}, + [I(1,77)] = {30,0x3FFFEC68}, + [I(2,77)] = {64,0}, + [I(3,77)] = {64,0}, + [I(4,77)] = {64,0}, + [I(5,77)] = {64,0}, + [I(6,77)] = {64,0}, + [I(7,77)] = {64,0}, + [I(8,77)] = {64,0}, + [I(9,77)] = {31,0x7FFFF568}, + [I(10,77)] = {64,0}, + [I(11,77)] = {64,0}, + [I(12,77)] = {64,0}, + [I(13,77)] = {64,0}, + [I(14,77)] = {64,0}, + [I(15,77)] = {64,0}, + [I(16,77)] = {64,0}, + [I(17,77)] = {64,0}, + [I(18,77)] = {64,0}, + [I(19,77)] = {64,0}, + [I(20,77)] = {64,0}, + [I(21,77)] = {64,0}, + [I(22,77)] = {64,0}, + [I(23,77)] = {64,0}, + [I(24,77)] = {64,0}, + [I(25,77)] = {64,0}, + [I(26,77)] = {64,0}, + [I(27,77)] = {64,0}, + [I(28,77)] = {64,0}, + [I(29,77)] = {64,0}, + [I(30,77)] = {64,0}, + [I(31,77)] = {64,0}, + [I(32,77)] = {13,0xA68}, + [I(33,77)] = {17,0x1FC68}, + [I(34,77)] = {17,0x1FCE8}, + [I(35,77)] = {19,0x7FD68}, + [I(36,77)] = {20,0xFFCE8}, + [I(37,77)] = {13,0xAE8}, + [I(38,77)] = {15,0x7C68}, + [I(39,77)] = {18,0x3FD68}, + [I(40,77)] = {17,0x1FD68}, + [I(41,77)] = {17,0x1FDE8}, + [I(42,77)] = {15,0x7CE8}, + [I(43,77)] = {18,0x3FDE8}, + [I(44,77)] = {15,0x7D68}, + [I(45,77)] = {13,0xB68}, + [I(46,77)] = {13,0xBE8}, + [I(47,77)] = {13,0xC68}, + [I(48,77)] = {12,0x68}, + [I(49,77)] = {12,0xE8}, + [I(50,77)] = {12,0x168}, + [I(51,77)] = {13,0xCE8}, + [I(52,77)] = {13,0xD68}, + [I(53,77)] = {13,0xDE8}, + [I(54,77)] = {13,0xE68}, + [I(55,77)] = {13,0xEE8}, + [I(56,77)] = {13,0xF68}, + [I(57,77)] = {13,0xFE8}, + [I(58,77)] = {14,0x2E68}, + [I(59,77)] = {15,0x7DE8}, + [I(60,77)] = {22,0x3FFE68}, + [I(61,77)] = {13,0x1068}, + [I(62,77)] = {19,0x7FDE8}, + [I(63,77)] = {17,0x1FE68}, + [I(64,77)] = {20,0xFFD68}, + [I(65,77)] = {13,0x10E8}, + [I(66,77)] = {14,0x2EE8}, + [I(67,77)] = {14,0x2F68}, + [I(68,77)] = {14,0x2FE8}, + [I(69,77)] = {14,0x3068}, + [I(70,77)] = {14,0x30E8}, + [I(71,77)] = {14,0x3168}, + [I(72,77)] = {14,0x31E8}, + [I(73,77)] = {14,0x3268}, + [I(74,77)] = {14,0x32E8}, + [I(75,77)] = {14,0x3368}, + [I(76,77)] = {14,0x33E8}, + [I(77,77)] = {14,0x3468}, + [I(78,77)] = {14,0x34E8}, + [I(79,77)] = {14,0x3568}, + [I(80,77)] = {14,0x35E8}, + [I(81,77)] = {14,0x3668}, + [I(82,77)] = {14,0x36E8}, + [I(83,77)] = {14,0x3768}, + [I(84,77)] = {14,0x37E8}, + [I(85,77)] = {14,0x3868}, + [I(86,77)] = {14,0x38E8}, + [I(87,77)] = {14,0x3968}, + [I(88,77)] = {15,0x7E68}, + [I(89,77)] = {14,0x39E8}, + [I(90,77)] = {15,0x7EE8}, + [I(91,77)] = {20,0xFFDE8}, + [I(92,77)] = {26,0x3FFF868}, + [I(93,77)] = {20,0xFFE68}, + [I(94,77)] = {21,0x1FFE68}, + [I(95,77)] = {13,0x1168}, + [I(96,77)] = {22,0x3FFEE8}, + [I(97,77)] = {12,0x1E8}, + [I(98,77)] = {13,0x11E8}, + [I(99,77)] = {12,0x268}, + [I(100,77)] = {13,0x1268}, + [I(101,77)] = {12,0x2E8}, + [I(102,77)] = {13,0x12E8}, + [I(103,77)] = {13,0x1368}, + [I(104,77)] = {13,0x13E8}, + [I(105,77)] = {12,0x368}, + [I(106,77)] = {14,0x3A68}, + [I(107,77)] = {14,0x3AE8}, + [I(108,77)] = {13,0x1468}, + [I(109,77)] = {13,0x14E8}, + [I(110,77)] = {13,0x1568}, + [I(111,77)] = {12,0x3E8}, + [I(112,77)] = {13,0x15E8}, + [I(113,77)] = {14,0x3B68}, + [I(114,77)] = {13,0x1668}, + [I(115,77)] = {12,0x468}, + [I(116,77)] = {12,0x4E8}, + [I(117,77)] = {13,0x16E8}, + [I(118,77)] = {14,0x3BE8}, + [I(119,77)] = {14,0x3C68}, + [I(120,77)] = {14,0x3CE8}, + [I(121,77)] = {14,0x3D68}, + [I(122,77)] = {14,0x3DE8}, + [I(123,77)] = {22,0x3FFF68}, + [I(124,77)] = {18,0x3FE68}, + [I(125,77)] = {21,0x1FFEE8}, + [I(126,77)] = {20,0xFFEE8}, + [I(127,77)] = {64,0}, + [I(128,77)] = {27,0x7FFF368}, + [I(129,77)] = {29,0x1FFFE968}, + [I(130,77)] = {27,0x7FFF3E8}, + [I(131,77)] = {27,0x7FFF468}, + [I(132,77)] = {29,0x1FFFE9E8}, + [I(133,77)] = {29,0x1FFFEA68}, + [I(134,77)] = {29,0x1FFFEAE8}, + [I(135,77)] = {30,0x3FFFECE8}, + [I(136,77)] = {29,0x1FFFEB68}, + [I(137,77)] = {30,0x3FFFED68}, + [I(138,77)] = {30,0x3FFFEDE8}, + [I(139,77)] = {30,0x3FFFEE68}, + [I(140,77)] = {30,0x3FFFEEE8}, + [I(141,77)] = {30,0x3FFFEF68}, + [I(142,77)] = {31,0x7FFFF5E8}, + [I(143,77)] = {30,0x3FFFEFE8}, + [I(144,77)] = {31,0x7FFFF668}, + [I(145,77)] = {31,0x7FFFF6E8}, + [I(146,77)] = {29,0x1FFFEBE8}, + [I(147,77)] = {30,0x3FFFF068}, + [I(148,77)] = {31,0x7FFFF768}, + [I(149,77)] = {30,0x3FFFF0E8}, + [I(150,77)] = {30,0x3FFFF168}, + [I(151,77)] = {30,0x3FFFF1E8}, + [I(152,77)] = {30,0x3FFFF268}, + [I(153,77)] = {28,0xFFFEE68}, + [I(154,77)] = {29,0x1FFFEC68}, + [I(155,77)] = {30,0x3FFFF2E8}, + [I(156,77)] = {29,0x1FFFECE8}, + [I(157,77)] = {30,0x3FFFF368}, + [I(158,77)] = {30,0x3FFFF3E8}, + [I(159,77)] = {31,0x7FFFF7E8}, + [I(160,77)] = {29,0x1FFFED68}, + [I(161,77)] = {28,0xFFFEEE8}, + [I(162,77)] = {27,0x7FFF4E8}, + [I(163,77)] = {29,0x1FFFEDE8}, + [I(164,77)] = {29,0x1FFFEE68}, + [I(165,77)] = {30,0x3FFFF468}, + [I(166,77)] = {30,0x3FFFF4E8}, + [I(167,77)] = {28,0xFFFEF68}, + [I(168,77)] = {30,0x3FFFF568}, + [I(169,77)] = {29,0x1FFFEEE8}, + [I(170,77)] = {29,0x1FFFEF68}, + [I(171,77)] = {31,0x7FFFF868}, + [I(172,77)] = {28,0xFFFEFE8}, + [I(173,77)] = {29,0x1FFFEFE8}, + [I(174,77)] = {30,0x3FFFF5E8}, + [I(175,77)] = {30,0x3FFFF668}, + [I(176,77)] = {28,0xFFFF068}, + [I(177,77)] = {28,0xFFFF0E8}, + [I(178,77)] = {29,0x1FFFF068}, + [I(179,77)] = {28,0xFFFF168}, + [I(180,77)] = {30,0x3FFFF6E8}, + [I(181,77)] = {29,0x1FFFF0E8}, + [I(182,77)] = {30,0x3FFFF768}, + [I(183,77)] = {30,0x3FFFF7E8}, + [I(184,77)] = {27,0x7FFF568}, + [I(185,77)] = {29,0x1FFFF168}, + [I(186,77)] = {29,0x1FFFF1E8}, + [I(187,77)] = {29,0x1FFFF268}, + [I(188,77)] = {30,0x3FFFF868}, + [I(189,77)] = {29,0x1FFFF2E8}, + [I(190,77)] = {29,0x1FFFF368}, + [I(191,77)] = {30,0x3FFFF8E8}, + [I(192,77)] = {64,0}, + [I(193,77)] = {64,0}, + [I(194,77)] = {27,0x7FFF5E8}, + [I(195,77)] = {26,0x3FFF8E8}, + [I(196,77)] = {29,0x1FFFF3E8}, + [I(197,77)] = {30,0x3FFFF968}, + [I(198,77)] = {29,0x1FFFF468}, + [I(199,77)] = {X32,0xFFFFF668}, + [I(200,77)] = {64,0}, + [I(201,77)] = {64,0}, + [I(202,77)] = {64,0}, + [I(203,77)] = {64,0}, + [I(204,77)] = {64,0}, + [I(205,77)] = {64,0}, + [I(206,77)] = {31,0x7FFFF8E8}, + [I(207,77)] = {X32,0xFFFFF6E8}, + [I(208,77)] = {26,0x3FFF968}, + [I(209,77)] = {28,0xFFFF1E8}, + [I(210,77)] = {64,0}, + [I(211,77)] = {64,0}, + [I(212,77)] = {64,0}, + [I(213,77)] = {64,0}, + [I(214,77)] = {64,0}, + [I(215,77)] = {31,0x7FFFF968}, + [I(216,77)] = {28,0xFFFF268}, + [I(217,77)] = {28,0xFFFF2E8}, + [I(218,77)] = {64,0}, + [I(219,77)] = {64,0}, + [I(220,77)] = {64,0}, + [I(221,77)] = {64,0}, + [I(222,77)] = {64,0}, + [I(223,77)] = {64,0}, + [I(224,77)] = {27,0x7FFF668}, + [I(225,77)] = {31,0x7FFFF9E8}, + [I(226,77)] = {27,0x7FFF6E8}, + [I(227,77)] = {28,0xFFFF368}, + [I(228,77)] = {29,0x1FFFF4E8}, + [I(229,77)] = {28,0xFFFF3E8}, + [I(230,77)] = {28,0xFFFF468}, + [I(231,77)] = {30,0x3FFFF9E8}, + [I(232,77)] = {29,0x1FFFF568}, + [I(233,77)] = {29,0x1FFFF5E8}, + [I(234,77)] = {X32,0xFFFFF768}, + [I(235,77)] = {X32,0xFFFFF7E8}, + [I(236,77)] = {31,0x7FFFFA68}, + [I(237,77)] = {31,0x7FFFFAE8}, + [I(238,77)] = {64,0}, + [I(239,77)] = {30,0x3FFFFA68}, + [I(240,77)] = {64,0}, + [I(241,77)] = {64,0}, + [I(242,77)] = {64,0}, + [I(243,77)] = {64,0}, + [I(244,77)] = {64,0}, + [I(245,77)] = {64,0}, + [I(246,77)] = {64,0}, + [I(247,77)] = {64,0}, + [I(248,77)] = {64,0}, + [I(249,77)] = {64,0}, + [I(250,77)] = {64,0}, + [I(251,77)] = {64,0}, + [I(252,77)] = {64,0}, + [I(253,77)] = {64,0}, + [I(254,77)] = {64,0}, + [I(255,77)] = {64,0}, + [I(0,78)] = {20,0xFFC69}, + [I(1,78)] = {30,0x3FFFEC69}, + [I(2,78)] = {64,0}, + [I(3,78)] = {64,0}, + [I(4,78)] = {64,0}, + [I(5,78)] = {64,0}, + [I(6,78)] = {64,0}, + [I(7,78)] = {64,0}, + [I(8,78)] = {64,0}, + [I(9,78)] = {31,0x7FFFF569}, + [I(10,78)] = {64,0}, + [I(11,78)] = {64,0}, + [I(12,78)] = {64,0}, + [I(13,78)] = {64,0}, + [I(14,78)] = {64,0}, + [I(15,78)] = {64,0}, + [I(16,78)] = {64,0}, + [I(17,78)] = {64,0}, + [I(18,78)] = {64,0}, + [I(19,78)] = {64,0}, + [I(20,78)] = {64,0}, + [I(21,78)] = {64,0}, + [I(22,78)] = {64,0}, + [I(23,78)] = {64,0}, + [I(24,78)] = {64,0}, + [I(25,78)] = {64,0}, + [I(26,78)] = {64,0}, + [I(27,78)] = {64,0}, + [I(28,78)] = {64,0}, + [I(29,78)] = {64,0}, + [I(30,78)] = {64,0}, + [I(31,78)] = {64,0}, + [I(32,78)] = {13,0xA69}, + [I(33,78)] = {17,0x1FC69}, + [I(34,78)] = {17,0x1FCE9}, + [I(35,78)] = {19,0x7FD69}, + [I(36,78)] = {20,0xFFCE9}, + [I(37,78)] = {13,0xAE9}, + [I(38,78)] = {15,0x7C69}, + [I(39,78)] = {18,0x3FD69}, + [I(40,78)] = {17,0x1FD69}, + [I(41,78)] = {17,0x1FDE9}, + [I(42,78)] = {15,0x7CE9}, + [I(43,78)] = {18,0x3FDE9}, + [I(44,78)] = {15,0x7D69}, + [I(45,78)] = {13,0xB69}, + [I(46,78)] = {13,0xBE9}, + [I(47,78)] = {13,0xC69}, + [I(48,78)] = {12,0x69}, + [I(49,78)] = {12,0xE9}, + [I(50,78)] = {12,0x169}, + [I(51,78)] = {13,0xCE9}, + [I(52,78)] = {13,0xD69}, + [I(53,78)] = {13,0xDE9}, + [I(54,78)] = {13,0xE69}, + [I(55,78)] = {13,0xEE9}, + [I(56,78)] = {13,0xF69}, + [I(57,78)] = {13,0xFE9}, + [I(58,78)] = {14,0x2E69}, + [I(59,78)] = {15,0x7DE9}, + [I(60,78)] = {22,0x3FFE69}, + [I(61,78)] = {13,0x1069}, + [I(62,78)] = {19,0x7FDE9}, + [I(63,78)] = {17,0x1FE69}, + [I(64,78)] = {20,0xFFD69}, + [I(65,78)] = {13,0x10E9}, + [I(66,78)] = {14,0x2EE9}, + [I(67,78)] = {14,0x2F69}, + [I(68,78)] = {14,0x2FE9}, + [I(69,78)] = {14,0x3069}, + [I(70,78)] = {14,0x30E9}, + [I(71,78)] = {14,0x3169}, + [I(72,78)] = {14,0x31E9}, + [I(73,78)] = {14,0x3269}, + [I(74,78)] = {14,0x32E9}, + [I(75,78)] = {14,0x3369}, + [I(76,78)] = {14,0x33E9}, + [I(77,78)] = {14,0x3469}, + [I(78,78)] = {14,0x34E9}, + [I(79,78)] = {14,0x3569}, + [I(80,78)] = {14,0x35E9}, + [I(81,78)] = {14,0x3669}, + [I(82,78)] = {14,0x36E9}, + [I(83,78)] = {14,0x3769}, + [I(84,78)] = {14,0x37E9}, + [I(85,78)] = {14,0x3869}, + [I(86,78)] = {14,0x38E9}, + [I(87,78)] = {14,0x3969}, + [I(88,78)] = {15,0x7E69}, + [I(89,78)] = {14,0x39E9}, + [I(90,78)] = {15,0x7EE9}, + [I(91,78)] = {20,0xFFDE9}, + [I(92,78)] = {26,0x3FFF869}, + [I(93,78)] = {20,0xFFE69}, + [I(94,78)] = {21,0x1FFE69}, + [I(95,78)] = {13,0x1169}, + [I(96,78)] = {22,0x3FFEE9}, + [I(97,78)] = {12,0x1E9}, + [I(98,78)] = {13,0x11E9}, + [I(99,78)] = {12,0x269}, + [I(100,78)] = {13,0x1269}, + [I(101,78)] = {12,0x2E9}, + [I(102,78)] = {13,0x12E9}, + [I(103,78)] = {13,0x1369}, + [I(104,78)] = {13,0x13E9}, + [I(105,78)] = {12,0x369}, + [I(106,78)] = {14,0x3A69}, + [I(107,78)] = {14,0x3AE9}, + [I(108,78)] = {13,0x1469}, + [I(109,78)] = {13,0x14E9}, + [I(110,78)] = {13,0x1569}, + [I(111,78)] = {12,0x3E9}, + [I(112,78)] = {13,0x15E9}, + [I(113,78)] = {14,0x3B69}, + [I(114,78)] = {13,0x1669}, + [I(115,78)] = {12,0x469}, + [I(116,78)] = {12,0x4E9}, + [I(117,78)] = {13,0x16E9}, + [I(118,78)] = {14,0x3BE9}, + [I(119,78)] = {14,0x3C69}, + [I(120,78)] = {14,0x3CE9}, + [I(121,78)] = {14,0x3D69}, + [I(122,78)] = {14,0x3DE9}, + [I(123,78)] = {22,0x3FFF69}, + [I(124,78)] = {18,0x3FE69}, + [I(125,78)] = {21,0x1FFEE9}, + [I(126,78)] = {20,0xFFEE9}, + [I(127,78)] = {64,0}, + [I(128,78)] = {27,0x7FFF369}, + [I(129,78)] = {29,0x1FFFE969}, + [I(130,78)] = {27,0x7FFF3E9}, + [I(131,78)] = {27,0x7FFF469}, + [I(132,78)] = {29,0x1FFFE9E9}, + [I(133,78)] = {29,0x1FFFEA69}, + [I(134,78)] = {29,0x1FFFEAE9}, + [I(135,78)] = {30,0x3FFFECE9}, + [I(136,78)] = {29,0x1FFFEB69}, + [I(137,78)] = {30,0x3FFFED69}, + [I(138,78)] = {30,0x3FFFEDE9}, + [I(139,78)] = {30,0x3FFFEE69}, + [I(140,78)] = {30,0x3FFFEEE9}, + [I(141,78)] = {30,0x3FFFEF69}, + [I(142,78)] = {31,0x7FFFF5E9}, + [I(143,78)] = {30,0x3FFFEFE9}, + [I(144,78)] = {31,0x7FFFF669}, + [I(145,78)] = {31,0x7FFFF6E9}, + [I(146,78)] = {29,0x1FFFEBE9}, + [I(147,78)] = {30,0x3FFFF069}, + [I(148,78)] = {31,0x7FFFF769}, + [I(149,78)] = {30,0x3FFFF0E9}, + [I(150,78)] = {30,0x3FFFF169}, + [I(151,78)] = {30,0x3FFFF1E9}, + [I(152,78)] = {30,0x3FFFF269}, + [I(153,78)] = {28,0xFFFEE69}, + [I(154,78)] = {29,0x1FFFEC69}, + [I(155,78)] = {30,0x3FFFF2E9}, + [I(156,78)] = {29,0x1FFFECE9}, + [I(157,78)] = {30,0x3FFFF369}, + [I(158,78)] = {30,0x3FFFF3E9}, + [I(159,78)] = {31,0x7FFFF7E9}, + [I(160,78)] = {29,0x1FFFED69}, + [I(161,78)] = {28,0xFFFEEE9}, + [I(162,78)] = {27,0x7FFF4E9}, + [I(163,78)] = {29,0x1FFFEDE9}, + [I(164,78)] = {29,0x1FFFEE69}, + [I(165,78)] = {30,0x3FFFF469}, + [I(166,78)] = {30,0x3FFFF4E9}, + [I(167,78)] = {28,0xFFFEF69}, + [I(168,78)] = {30,0x3FFFF569}, + [I(169,78)] = {29,0x1FFFEEE9}, + [I(170,78)] = {29,0x1FFFEF69}, + [I(171,78)] = {31,0x7FFFF869}, + [I(172,78)] = {28,0xFFFEFE9}, + [I(173,78)] = {29,0x1FFFEFE9}, + [I(174,78)] = {30,0x3FFFF5E9}, + [I(175,78)] = {30,0x3FFFF669}, + [I(176,78)] = {28,0xFFFF069}, + [I(177,78)] = {28,0xFFFF0E9}, + [I(178,78)] = {29,0x1FFFF069}, + [I(179,78)] = {28,0xFFFF169}, + [I(180,78)] = {30,0x3FFFF6E9}, + [I(181,78)] = {29,0x1FFFF0E9}, + [I(182,78)] = {30,0x3FFFF769}, + [I(183,78)] = {30,0x3FFFF7E9}, + [I(184,78)] = {27,0x7FFF569}, + [I(185,78)] = {29,0x1FFFF169}, + [I(186,78)] = {29,0x1FFFF1E9}, + [I(187,78)] = {29,0x1FFFF269}, + [I(188,78)] = {30,0x3FFFF869}, + [I(189,78)] = {29,0x1FFFF2E9}, + [I(190,78)] = {29,0x1FFFF369}, + [I(191,78)] = {30,0x3FFFF8E9}, + [I(192,78)] = {64,0}, + [I(193,78)] = {64,0}, + [I(194,78)] = {27,0x7FFF5E9}, + [I(195,78)] = {26,0x3FFF8E9}, + [I(196,78)] = {29,0x1FFFF3E9}, + [I(197,78)] = {30,0x3FFFF969}, + [I(198,78)] = {29,0x1FFFF469}, + [I(199,78)] = {X32,0xFFFFF669}, + [I(200,78)] = {64,0}, + [I(201,78)] = {64,0}, + [I(202,78)] = {64,0}, + [I(203,78)] = {64,0}, + [I(204,78)] = {64,0}, + [I(205,78)] = {64,0}, + [I(206,78)] = {31,0x7FFFF8E9}, + [I(207,78)] = {X32,0xFFFFF6E9}, + [I(208,78)] = {26,0x3FFF969}, + [I(209,78)] = {28,0xFFFF1E9}, + [I(210,78)] = {64,0}, + [I(211,78)] = {64,0}, + [I(212,78)] = {64,0}, + [I(213,78)] = {64,0}, + [I(214,78)] = {64,0}, + [I(215,78)] = {31,0x7FFFF969}, + [I(216,78)] = {28,0xFFFF269}, + [I(217,78)] = {28,0xFFFF2E9}, + [I(218,78)] = {64,0}, + [I(219,78)] = {64,0}, + [I(220,78)] = {64,0}, + [I(221,78)] = {64,0}, + [I(222,78)] = {64,0}, + [I(223,78)] = {64,0}, + [I(224,78)] = {27,0x7FFF669}, + [I(225,78)] = {31,0x7FFFF9E9}, + [I(226,78)] = {27,0x7FFF6E9}, + [I(227,78)] = {28,0xFFFF369}, + [I(228,78)] = {29,0x1FFFF4E9}, + [I(229,78)] = {28,0xFFFF3E9}, + [I(230,78)] = {28,0xFFFF469}, + [I(231,78)] = {30,0x3FFFF9E9}, + [I(232,78)] = {29,0x1FFFF569}, + [I(233,78)] = {29,0x1FFFF5E9}, + [I(234,78)] = {X32,0xFFFFF769}, + [I(235,78)] = {X32,0xFFFFF7E9}, + [I(236,78)] = {31,0x7FFFFA69}, + [I(237,78)] = {31,0x7FFFFAE9}, + [I(238,78)] = {64,0}, + [I(239,78)] = {30,0x3FFFFA69}, + [I(240,78)] = {64,0}, + [I(241,78)] = {64,0}, + [I(242,78)] = {64,0}, + [I(243,78)] = {64,0}, + [I(244,78)] = {64,0}, + [I(245,78)] = {64,0}, + [I(246,78)] = {64,0}, + [I(247,78)] = {64,0}, + [I(248,78)] = {64,0}, + [I(249,78)] = {64,0}, + [I(250,78)] = {64,0}, + [I(251,78)] = {64,0}, + [I(252,78)] = {64,0}, + [I(253,78)] = {64,0}, + [I(254,78)] = {64,0}, + [I(255,78)] = {64,0}, + [I(0,79)] = {20,0xFFC6A}, + [I(1,79)] = {30,0x3FFFEC6A}, + [I(2,79)] = {64,0}, + [I(3,79)] = {64,0}, + [I(4,79)] = {64,0}, + [I(5,79)] = {64,0}, + [I(6,79)] = {64,0}, + [I(7,79)] = {64,0}, + [I(8,79)] = {64,0}, + [I(9,79)] = {31,0x7FFFF56A}, + [I(10,79)] = {64,0}, + [I(11,79)] = {64,0}, + [I(12,79)] = {64,0}, + [I(13,79)] = {64,0}, + [I(14,79)] = {64,0}, + [I(15,79)] = {64,0}, + [I(16,79)] = {64,0}, + [I(17,79)] = {64,0}, + [I(18,79)] = {64,0}, + [I(19,79)] = {64,0}, + [I(20,79)] = {64,0}, + [I(21,79)] = {64,0}, + [I(22,79)] = {64,0}, + [I(23,79)] = {64,0}, + [I(24,79)] = {64,0}, + [I(25,79)] = {64,0}, + [I(26,79)] = {64,0}, + [I(27,79)] = {64,0}, + [I(28,79)] = {64,0}, + [I(29,79)] = {64,0}, + [I(30,79)] = {64,0}, + [I(31,79)] = {64,0}, + [I(32,79)] = {13,0xA6A}, + [I(33,79)] = {17,0x1FC6A}, + [I(34,79)] = {17,0x1FCEA}, + [I(35,79)] = {19,0x7FD6A}, + [I(36,79)] = {20,0xFFCEA}, + [I(37,79)] = {13,0xAEA}, + [I(38,79)] = {15,0x7C6A}, + [I(39,79)] = {18,0x3FD6A}, + [I(40,79)] = {17,0x1FD6A}, + [I(41,79)] = {17,0x1FDEA}, + [I(42,79)] = {15,0x7CEA}, + [I(43,79)] = {18,0x3FDEA}, + [I(44,79)] = {15,0x7D6A}, + [I(45,79)] = {13,0xB6A}, + [I(46,79)] = {13,0xBEA}, + [I(47,79)] = {13,0xC6A}, + [I(48,79)] = {12,0x6A}, + [I(49,79)] = {12,0xEA}, + [I(50,79)] = {12,0x16A}, + [I(51,79)] = {13,0xCEA}, + [I(52,79)] = {13,0xD6A}, + [I(53,79)] = {13,0xDEA}, + [I(54,79)] = {13,0xE6A}, + [I(55,79)] = {13,0xEEA}, + [I(56,79)] = {13,0xF6A}, + [I(57,79)] = {13,0xFEA}, + [I(58,79)] = {14,0x2E6A}, + [I(59,79)] = {15,0x7DEA}, + [I(60,79)] = {22,0x3FFE6A}, + [I(61,79)] = {13,0x106A}, + [I(62,79)] = {19,0x7FDEA}, + [I(63,79)] = {17,0x1FE6A}, + [I(64,79)] = {20,0xFFD6A}, + [I(65,79)] = {13,0x10EA}, + [I(66,79)] = {14,0x2EEA}, + [I(67,79)] = {14,0x2F6A}, + [I(68,79)] = {14,0x2FEA}, + [I(69,79)] = {14,0x306A}, + [I(70,79)] = {14,0x30EA}, + [I(71,79)] = {14,0x316A}, + [I(72,79)] = {14,0x31EA}, + [I(73,79)] = {14,0x326A}, + [I(74,79)] = {14,0x32EA}, + [I(75,79)] = {14,0x336A}, + [I(76,79)] = {14,0x33EA}, + [I(77,79)] = {14,0x346A}, + [I(78,79)] = {14,0x34EA}, + [I(79,79)] = {14,0x356A}, + [I(80,79)] = {14,0x35EA}, + [I(81,79)] = {14,0x366A}, + [I(82,79)] = {14,0x36EA}, + [I(83,79)] = {14,0x376A}, + [I(84,79)] = {14,0x37EA}, + [I(85,79)] = {14,0x386A}, + [I(86,79)] = {14,0x38EA}, + [I(87,79)] = {14,0x396A}, + [I(88,79)] = {15,0x7E6A}, + [I(89,79)] = {14,0x39EA}, + [I(90,79)] = {15,0x7EEA}, + [I(91,79)] = {20,0xFFDEA}, + [I(92,79)] = {26,0x3FFF86A}, + [I(93,79)] = {20,0xFFE6A}, + [I(94,79)] = {21,0x1FFE6A}, + [I(95,79)] = {13,0x116A}, + [I(96,79)] = {22,0x3FFEEA}, + [I(97,79)] = {12,0x1EA}, + [I(98,79)] = {13,0x11EA}, + [I(99,79)] = {12,0x26A}, + [I(100,79)] = {13,0x126A}, + [I(101,79)] = {12,0x2EA}, + [I(102,79)] = {13,0x12EA}, + [I(103,79)] = {13,0x136A}, + [I(104,79)] = {13,0x13EA}, + [I(105,79)] = {12,0x36A}, + [I(106,79)] = {14,0x3A6A}, + [I(107,79)] = {14,0x3AEA}, + [I(108,79)] = {13,0x146A}, + [I(109,79)] = {13,0x14EA}, + [I(110,79)] = {13,0x156A}, + [I(111,79)] = {12,0x3EA}, + [I(112,79)] = {13,0x15EA}, + [I(113,79)] = {14,0x3B6A}, + [I(114,79)] = {13,0x166A}, + [I(115,79)] = {12,0x46A}, + [I(116,79)] = {12,0x4EA}, + [I(117,79)] = {13,0x16EA}, + [I(118,79)] = {14,0x3BEA}, + [I(119,79)] = {14,0x3C6A}, + [I(120,79)] = {14,0x3CEA}, + [I(121,79)] = {14,0x3D6A}, + [I(122,79)] = {14,0x3DEA}, + [I(123,79)] = {22,0x3FFF6A}, + [I(124,79)] = {18,0x3FE6A}, + [I(125,79)] = {21,0x1FFEEA}, + [I(126,79)] = {20,0xFFEEA}, + [I(127,79)] = {64,0}, + [I(128,79)] = {27,0x7FFF36A}, + [I(129,79)] = {29,0x1FFFE96A}, + [I(130,79)] = {27,0x7FFF3EA}, + [I(131,79)] = {27,0x7FFF46A}, + [I(132,79)] = {29,0x1FFFE9EA}, + [I(133,79)] = {29,0x1FFFEA6A}, + [I(134,79)] = {29,0x1FFFEAEA}, + [I(135,79)] = {30,0x3FFFECEA}, + [I(136,79)] = {29,0x1FFFEB6A}, + [I(137,79)] = {30,0x3FFFED6A}, + [I(138,79)] = {30,0x3FFFEDEA}, + [I(139,79)] = {30,0x3FFFEE6A}, + [I(140,79)] = {30,0x3FFFEEEA}, + [I(141,79)] = {30,0x3FFFEF6A}, + [I(142,79)] = {31,0x7FFFF5EA}, + [I(143,79)] = {30,0x3FFFEFEA}, + [I(144,79)] = {31,0x7FFFF66A}, + [I(145,79)] = {31,0x7FFFF6EA}, + [I(146,79)] = {29,0x1FFFEBEA}, + [I(147,79)] = {30,0x3FFFF06A}, + [I(148,79)] = {31,0x7FFFF76A}, + [I(149,79)] = {30,0x3FFFF0EA}, + [I(150,79)] = {30,0x3FFFF16A}, + [I(151,79)] = {30,0x3FFFF1EA}, + [I(152,79)] = {30,0x3FFFF26A}, + [I(153,79)] = {28,0xFFFEE6A}, + [I(154,79)] = {29,0x1FFFEC6A}, + [I(155,79)] = {30,0x3FFFF2EA}, + [I(156,79)] = {29,0x1FFFECEA}, + [I(157,79)] = {30,0x3FFFF36A}, + [I(158,79)] = {30,0x3FFFF3EA}, + [I(159,79)] = {31,0x7FFFF7EA}, + [I(160,79)] = {29,0x1FFFED6A}, + [I(161,79)] = {28,0xFFFEEEA}, + [I(162,79)] = {27,0x7FFF4EA}, + [I(163,79)] = {29,0x1FFFEDEA}, + [I(164,79)] = {29,0x1FFFEE6A}, + [I(165,79)] = {30,0x3FFFF46A}, + [I(166,79)] = {30,0x3FFFF4EA}, + [I(167,79)] = {28,0xFFFEF6A}, + [I(168,79)] = {30,0x3FFFF56A}, + [I(169,79)] = {29,0x1FFFEEEA}, + [I(170,79)] = {29,0x1FFFEF6A}, + [I(171,79)] = {31,0x7FFFF86A}, + [I(172,79)] = {28,0xFFFEFEA}, + [I(173,79)] = {29,0x1FFFEFEA}, + [I(174,79)] = {30,0x3FFFF5EA}, + [I(175,79)] = {30,0x3FFFF66A}, + [I(176,79)] = {28,0xFFFF06A}, + [I(177,79)] = {28,0xFFFF0EA}, + [I(178,79)] = {29,0x1FFFF06A}, + [I(179,79)] = {28,0xFFFF16A}, + [I(180,79)] = {30,0x3FFFF6EA}, + [I(181,79)] = {29,0x1FFFF0EA}, + [I(182,79)] = {30,0x3FFFF76A}, + [I(183,79)] = {30,0x3FFFF7EA}, + [I(184,79)] = {27,0x7FFF56A}, + [I(185,79)] = {29,0x1FFFF16A}, + [I(186,79)] = {29,0x1FFFF1EA}, + [I(187,79)] = {29,0x1FFFF26A}, + [I(188,79)] = {30,0x3FFFF86A}, + [I(189,79)] = {29,0x1FFFF2EA}, + [I(190,79)] = {29,0x1FFFF36A}, + [I(191,79)] = {30,0x3FFFF8EA}, + [I(192,79)] = {64,0}, + [I(193,79)] = {64,0}, + [I(194,79)] = {27,0x7FFF5EA}, + [I(195,79)] = {26,0x3FFF8EA}, + [I(196,79)] = {29,0x1FFFF3EA}, + [I(197,79)] = {30,0x3FFFF96A}, + [I(198,79)] = {29,0x1FFFF46A}, + [I(199,79)] = {X32,0xFFFFF66A}, + [I(200,79)] = {64,0}, + [I(201,79)] = {64,0}, + [I(202,79)] = {64,0}, + [I(203,79)] = {64,0}, + [I(204,79)] = {64,0}, + [I(205,79)] = {64,0}, + [I(206,79)] = {31,0x7FFFF8EA}, + [I(207,79)] = {X32,0xFFFFF6EA}, + [I(208,79)] = {26,0x3FFF96A}, + [I(209,79)] = {28,0xFFFF1EA}, + [I(210,79)] = {64,0}, + [I(211,79)] = {64,0}, + [I(212,79)] = {64,0}, + [I(213,79)] = {64,0}, + [I(214,79)] = {64,0}, + [I(215,79)] = {31,0x7FFFF96A}, + [I(216,79)] = {28,0xFFFF26A}, + [I(217,79)] = {28,0xFFFF2EA}, + [I(218,79)] = {64,0}, + [I(219,79)] = {64,0}, + [I(220,79)] = {64,0}, + [I(221,79)] = {64,0}, + [I(222,79)] = {64,0}, + [I(223,79)] = {64,0}, + [I(224,79)] = {27,0x7FFF66A}, + [I(225,79)] = {31,0x7FFFF9EA}, + [I(226,79)] = {27,0x7FFF6EA}, + [I(227,79)] = {28,0xFFFF36A}, + [I(228,79)] = {29,0x1FFFF4EA}, + [I(229,79)] = {28,0xFFFF3EA}, + [I(230,79)] = {28,0xFFFF46A}, + [I(231,79)] = {30,0x3FFFF9EA}, + [I(232,79)] = {29,0x1FFFF56A}, + [I(233,79)] = {29,0x1FFFF5EA}, + [I(234,79)] = {X32,0xFFFFF76A}, + [I(235,79)] = {X32,0xFFFFF7EA}, + [I(236,79)] = {31,0x7FFFFA6A}, + [I(237,79)] = {31,0x7FFFFAEA}, + [I(238,79)] = {64,0}, + [I(239,79)] = {30,0x3FFFFA6A}, + [I(240,79)] = {64,0}, + [I(241,79)] = {64,0}, + [I(242,79)] = {64,0}, + [I(243,79)] = {64,0}, + [I(244,79)] = {64,0}, + [I(245,79)] = {64,0}, + [I(246,79)] = {64,0}, + [I(247,79)] = {64,0}, + [I(248,79)] = {64,0}, + [I(249,79)] = {64,0}, + [I(250,79)] = {64,0}, + [I(251,79)] = {64,0}, + [I(252,79)] = {64,0}, + [I(253,79)] = {64,0}, + [I(254,79)] = {64,0}, + [I(255,79)] = {64,0}, + [I(0,80)] = {20,0xFFC6B}, + [I(1,80)] = {30,0x3FFFEC6B}, + [I(2,80)] = {64,0}, + [I(3,80)] = {64,0}, + [I(4,80)] = {64,0}, + [I(5,80)] = {64,0}, + [I(6,80)] = {64,0}, + [I(7,80)] = {64,0}, + [I(8,80)] = {64,0}, + [I(9,80)] = {31,0x7FFFF56B}, + [I(10,80)] = {64,0}, + [I(11,80)] = {64,0}, + [I(12,80)] = {64,0}, + [I(13,80)] = {64,0}, + [I(14,80)] = {64,0}, + [I(15,80)] = {64,0}, + [I(16,80)] = {64,0}, + [I(17,80)] = {64,0}, + [I(18,80)] = {64,0}, + [I(19,80)] = {64,0}, + [I(20,80)] = {64,0}, + [I(21,80)] = {64,0}, + [I(22,80)] = {64,0}, + [I(23,80)] = {64,0}, + [I(24,80)] = {64,0}, + [I(25,80)] = {64,0}, + [I(26,80)] = {64,0}, + [I(27,80)] = {64,0}, + [I(28,80)] = {64,0}, + [I(29,80)] = {64,0}, + [I(30,80)] = {64,0}, + [I(31,80)] = {64,0}, + [I(32,80)] = {13,0xA6B}, + [I(33,80)] = {17,0x1FC6B}, + [I(34,80)] = {17,0x1FCEB}, + [I(35,80)] = {19,0x7FD6B}, + [I(36,80)] = {20,0xFFCEB}, + [I(37,80)] = {13,0xAEB}, + [I(38,80)] = {15,0x7C6B}, + [I(39,80)] = {18,0x3FD6B}, + [I(40,80)] = {17,0x1FD6B}, + [I(41,80)] = {17,0x1FDEB}, + [I(42,80)] = {15,0x7CEB}, + [I(43,80)] = {18,0x3FDEB}, + [I(44,80)] = {15,0x7D6B}, + [I(45,80)] = {13,0xB6B}, + [I(46,80)] = {13,0xBEB}, + [I(47,80)] = {13,0xC6B}, + [I(48,80)] = {12,0x6B}, + [I(49,80)] = {12,0xEB}, + [I(50,80)] = {12,0x16B}, + [I(51,80)] = {13,0xCEB}, + [I(52,80)] = {13,0xD6B}, + [I(53,80)] = {13,0xDEB}, + [I(54,80)] = {13,0xE6B}, + [I(55,80)] = {13,0xEEB}, + [I(56,80)] = {13,0xF6B}, + [I(57,80)] = {13,0xFEB}, + [I(58,80)] = {14,0x2E6B}, + [I(59,80)] = {15,0x7DEB}, + [I(60,80)] = {22,0x3FFE6B}, + [I(61,80)] = {13,0x106B}, + [I(62,80)] = {19,0x7FDEB}, + [I(63,80)] = {17,0x1FE6B}, + [I(64,80)] = {20,0xFFD6B}, + [I(65,80)] = {13,0x10EB}, + [I(66,80)] = {14,0x2EEB}, + [I(67,80)] = {14,0x2F6B}, + [I(68,80)] = {14,0x2FEB}, + [I(69,80)] = {14,0x306B}, + [I(70,80)] = {14,0x30EB}, + [I(71,80)] = {14,0x316B}, + [I(72,80)] = {14,0x31EB}, + [I(73,80)] = {14,0x326B}, + [I(74,80)] = {14,0x32EB}, + [I(75,80)] = {14,0x336B}, + [I(76,80)] = {14,0x33EB}, + [I(77,80)] = {14,0x346B}, + [I(78,80)] = {14,0x34EB}, + [I(79,80)] = {14,0x356B}, + [I(80,80)] = {14,0x35EB}, + [I(81,80)] = {14,0x366B}, + [I(82,80)] = {14,0x36EB}, + [I(83,80)] = {14,0x376B}, + [I(84,80)] = {14,0x37EB}, + [I(85,80)] = {14,0x386B}, + [I(86,80)] = {14,0x38EB}, + [I(87,80)] = {14,0x396B}, + [I(88,80)] = {15,0x7E6B}, + [I(89,80)] = {14,0x39EB}, + [I(90,80)] = {15,0x7EEB}, + [I(91,80)] = {20,0xFFDEB}, + [I(92,80)] = {26,0x3FFF86B}, + [I(93,80)] = {20,0xFFE6B}, + [I(94,80)] = {21,0x1FFE6B}, + [I(95,80)] = {13,0x116B}, + [I(96,80)] = {22,0x3FFEEB}, + [I(97,80)] = {12,0x1EB}, + [I(98,80)] = {13,0x11EB}, + [I(99,80)] = {12,0x26B}, + [I(100,80)] = {13,0x126B}, + [I(101,80)] = {12,0x2EB}, + [I(102,80)] = {13,0x12EB}, + [I(103,80)] = {13,0x136B}, + [I(104,80)] = {13,0x13EB}, + [I(105,80)] = {12,0x36B}, + [I(106,80)] = {14,0x3A6B}, + [I(107,80)] = {14,0x3AEB}, + [I(108,80)] = {13,0x146B}, + [I(109,80)] = {13,0x14EB}, + [I(110,80)] = {13,0x156B}, + [I(111,80)] = {12,0x3EB}, + [I(112,80)] = {13,0x15EB}, + [I(113,80)] = {14,0x3B6B}, + [I(114,80)] = {13,0x166B}, + [I(115,80)] = {12,0x46B}, + [I(116,80)] = {12,0x4EB}, + [I(117,80)] = {13,0x16EB}, + [I(118,80)] = {14,0x3BEB}, + [I(119,80)] = {14,0x3C6B}, + [I(120,80)] = {14,0x3CEB}, + [I(121,80)] = {14,0x3D6B}, + [I(122,80)] = {14,0x3DEB}, + [I(123,80)] = {22,0x3FFF6B}, + [I(124,80)] = {18,0x3FE6B}, + [I(125,80)] = {21,0x1FFEEB}, + [I(126,80)] = {20,0xFFEEB}, + [I(127,80)] = {64,0}, + [I(128,80)] = {27,0x7FFF36B}, + [I(129,80)] = {29,0x1FFFE96B}, + [I(130,80)] = {27,0x7FFF3EB}, + [I(131,80)] = {27,0x7FFF46B}, + [I(132,80)] = {29,0x1FFFE9EB}, + [I(133,80)] = {29,0x1FFFEA6B}, + [I(134,80)] = {29,0x1FFFEAEB}, + [I(135,80)] = {30,0x3FFFECEB}, + [I(136,80)] = {29,0x1FFFEB6B}, + [I(137,80)] = {30,0x3FFFED6B}, + [I(138,80)] = {30,0x3FFFEDEB}, + [I(139,80)] = {30,0x3FFFEE6B}, + [I(140,80)] = {30,0x3FFFEEEB}, + [I(141,80)] = {30,0x3FFFEF6B}, + [I(142,80)] = {31,0x7FFFF5EB}, + [I(143,80)] = {30,0x3FFFEFEB}, + [I(144,80)] = {31,0x7FFFF66B}, + [I(145,80)] = {31,0x7FFFF6EB}, + [I(146,80)] = {29,0x1FFFEBEB}, + [I(147,80)] = {30,0x3FFFF06B}, + [I(148,80)] = {31,0x7FFFF76B}, + [I(149,80)] = {30,0x3FFFF0EB}, + [I(150,80)] = {30,0x3FFFF16B}, + [I(151,80)] = {30,0x3FFFF1EB}, + [I(152,80)] = {30,0x3FFFF26B}, + [I(153,80)] = {28,0xFFFEE6B}, + [I(154,80)] = {29,0x1FFFEC6B}, + [I(155,80)] = {30,0x3FFFF2EB}, + [I(156,80)] = {29,0x1FFFECEB}, + [I(157,80)] = {30,0x3FFFF36B}, + [I(158,80)] = {30,0x3FFFF3EB}, + [I(159,80)] = {31,0x7FFFF7EB}, + [I(160,80)] = {29,0x1FFFED6B}, + [I(161,80)] = {28,0xFFFEEEB}, + [I(162,80)] = {27,0x7FFF4EB}, + [I(163,80)] = {29,0x1FFFEDEB}, + [I(164,80)] = {29,0x1FFFEE6B}, + [I(165,80)] = {30,0x3FFFF46B}, + [I(166,80)] = {30,0x3FFFF4EB}, + [I(167,80)] = {28,0xFFFEF6B}, + [I(168,80)] = {30,0x3FFFF56B}, + [I(169,80)] = {29,0x1FFFEEEB}, + [I(170,80)] = {29,0x1FFFEF6B}, + [I(171,80)] = {31,0x7FFFF86B}, + [I(172,80)] = {28,0xFFFEFEB}, + [I(173,80)] = {29,0x1FFFEFEB}, + [I(174,80)] = {30,0x3FFFF5EB}, + [I(175,80)] = {30,0x3FFFF66B}, + [I(176,80)] = {28,0xFFFF06B}, + [I(177,80)] = {28,0xFFFF0EB}, + [I(178,80)] = {29,0x1FFFF06B}, + [I(179,80)] = {28,0xFFFF16B}, + [I(180,80)] = {30,0x3FFFF6EB}, + [I(181,80)] = {29,0x1FFFF0EB}, + [I(182,80)] = {30,0x3FFFF76B}, + [I(183,80)] = {30,0x3FFFF7EB}, + [I(184,80)] = {27,0x7FFF56B}, + [I(185,80)] = {29,0x1FFFF16B}, + [I(186,80)] = {29,0x1FFFF1EB}, + [I(187,80)] = {29,0x1FFFF26B}, + [I(188,80)] = {30,0x3FFFF86B}, + [I(189,80)] = {29,0x1FFFF2EB}, + [I(190,80)] = {29,0x1FFFF36B}, + [I(191,80)] = {30,0x3FFFF8EB}, + [I(192,80)] = {64,0}, + [I(193,80)] = {64,0}, + [I(194,80)] = {27,0x7FFF5EB}, + [I(195,80)] = {26,0x3FFF8EB}, + [I(196,80)] = {29,0x1FFFF3EB}, + [I(197,80)] = {30,0x3FFFF96B}, + [I(198,80)] = {29,0x1FFFF46B}, + [I(199,80)] = {X32,0xFFFFF66B}, + [I(200,80)] = {64,0}, + [I(201,80)] = {64,0}, + [I(202,80)] = {64,0}, + [I(203,80)] = {64,0}, + [I(204,80)] = {64,0}, + [I(205,80)] = {64,0}, + [I(206,80)] = {31,0x7FFFF8EB}, + [I(207,80)] = {X32,0xFFFFF6EB}, + [I(208,80)] = {26,0x3FFF96B}, + [I(209,80)] = {28,0xFFFF1EB}, + [I(210,80)] = {64,0}, + [I(211,80)] = {64,0}, + [I(212,80)] = {64,0}, + [I(213,80)] = {64,0}, + [I(214,80)] = {64,0}, + [I(215,80)] = {31,0x7FFFF96B}, + [I(216,80)] = {28,0xFFFF26B}, + [I(217,80)] = {28,0xFFFF2EB}, + [I(218,80)] = {64,0}, + [I(219,80)] = {64,0}, + [I(220,80)] = {64,0}, + [I(221,80)] = {64,0}, + [I(222,80)] = {64,0}, + [I(223,80)] = {64,0}, + [I(224,80)] = {27,0x7FFF66B}, + [I(225,80)] = {31,0x7FFFF9EB}, + [I(226,80)] = {27,0x7FFF6EB}, + [I(227,80)] = {28,0xFFFF36B}, + [I(228,80)] = {29,0x1FFFF4EB}, + [I(229,80)] = {28,0xFFFF3EB}, + [I(230,80)] = {28,0xFFFF46B}, + [I(231,80)] = {30,0x3FFFF9EB}, + [I(232,80)] = {29,0x1FFFF56B}, + [I(233,80)] = {29,0x1FFFF5EB}, + [I(234,80)] = {X32,0xFFFFF76B}, + [I(235,80)] = {X32,0xFFFFF7EB}, + [I(236,80)] = {31,0x7FFFFA6B}, + [I(237,80)] = {31,0x7FFFFAEB}, + [I(238,80)] = {64,0}, + [I(239,80)] = {30,0x3FFFFA6B}, + [I(240,80)] = {64,0}, + [I(241,80)] = {64,0}, + [I(242,80)] = {64,0}, + [I(243,80)] = {64,0}, + [I(244,80)] = {64,0}, + [I(245,80)] = {64,0}, + [I(246,80)] = {64,0}, + [I(247,80)] = {64,0}, + [I(248,80)] = {64,0}, + [I(249,80)] = {64,0}, + [I(250,80)] = {64,0}, + [I(251,80)] = {64,0}, + [I(252,80)] = {64,0}, + [I(253,80)] = {64,0}, + [I(254,80)] = {64,0}, + [I(255,80)] = {64,0}, + [I(0,81)] = {20,0xFFC6C}, + [I(1,81)] = {30,0x3FFFEC6C}, + [I(2,81)] = {64,0}, + [I(3,81)] = {64,0}, + [I(4,81)] = {64,0}, + [I(5,81)] = {64,0}, + [I(6,81)] = {64,0}, + [I(7,81)] = {64,0}, + [I(8,81)] = {64,0}, + [I(9,81)] = {31,0x7FFFF56C}, + [I(10,81)] = {64,0}, + [I(11,81)] = {64,0}, + [I(12,81)] = {64,0}, + [I(13,81)] = {64,0}, + [I(14,81)] = {64,0}, + [I(15,81)] = {64,0}, + [I(16,81)] = {64,0}, + [I(17,81)] = {64,0}, + [I(18,81)] = {64,0}, + [I(19,81)] = {64,0}, + [I(20,81)] = {64,0}, + [I(21,81)] = {64,0}, + [I(22,81)] = {64,0}, + [I(23,81)] = {64,0}, + [I(24,81)] = {64,0}, + [I(25,81)] = {64,0}, + [I(26,81)] = {64,0}, + [I(27,81)] = {64,0}, + [I(28,81)] = {64,0}, + [I(29,81)] = {64,0}, + [I(30,81)] = {64,0}, + [I(31,81)] = {64,0}, + [I(32,81)] = {13,0xA6C}, + [I(33,81)] = {17,0x1FC6C}, + [I(34,81)] = {17,0x1FCEC}, + [I(35,81)] = {19,0x7FD6C}, + [I(36,81)] = {20,0xFFCEC}, + [I(37,81)] = {13,0xAEC}, + [I(38,81)] = {15,0x7C6C}, + [I(39,81)] = {18,0x3FD6C}, + [I(40,81)] = {17,0x1FD6C}, + [I(41,81)] = {17,0x1FDEC}, + [I(42,81)] = {15,0x7CEC}, + [I(43,81)] = {18,0x3FDEC}, + [I(44,81)] = {15,0x7D6C}, + [I(45,81)] = {13,0xB6C}, + [I(46,81)] = {13,0xBEC}, + [I(47,81)] = {13,0xC6C}, + [I(48,81)] = {12,0x6C}, + [I(49,81)] = {12,0xEC}, + [I(50,81)] = {12,0x16C}, + [I(51,81)] = {13,0xCEC}, + [I(52,81)] = {13,0xD6C}, + [I(53,81)] = {13,0xDEC}, + [I(54,81)] = {13,0xE6C}, + [I(55,81)] = {13,0xEEC}, + [I(56,81)] = {13,0xF6C}, + [I(57,81)] = {13,0xFEC}, + [I(58,81)] = {14,0x2E6C}, + [I(59,81)] = {15,0x7DEC}, + [I(60,81)] = {22,0x3FFE6C}, + [I(61,81)] = {13,0x106C}, + [I(62,81)] = {19,0x7FDEC}, + [I(63,81)] = {17,0x1FE6C}, + [I(64,81)] = {20,0xFFD6C}, + [I(65,81)] = {13,0x10EC}, + [I(66,81)] = {14,0x2EEC}, + [I(67,81)] = {14,0x2F6C}, + [I(68,81)] = {14,0x2FEC}, + [I(69,81)] = {14,0x306C}, + [I(70,81)] = {14,0x30EC}, + [I(71,81)] = {14,0x316C}, + [I(72,81)] = {14,0x31EC}, + [I(73,81)] = {14,0x326C}, + [I(74,81)] = {14,0x32EC}, + [I(75,81)] = {14,0x336C}, + [I(76,81)] = {14,0x33EC}, + [I(77,81)] = {14,0x346C}, + [I(78,81)] = {14,0x34EC}, + [I(79,81)] = {14,0x356C}, + [I(80,81)] = {14,0x35EC}, + [I(81,81)] = {14,0x366C}, + [I(82,81)] = {14,0x36EC}, + [I(83,81)] = {14,0x376C}, + [I(84,81)] = {14,0x37EC}, + [I(85,81)] = {14,0x386C}, + [I(86,81)] = {14,0x38EC}, + [I(87,81)] = {14,0x396C}, + [I(88,81)] = {15,0x7E6C}, + [I(89,81)] = {14,0x39EC}, + [I(90,81)] = {15,0x7EEC}, + [I(91,81)] = {20,0xFFDEC}, + [I(92,81)] = {26,0x3FFF86C}, + [I(93,81)] = {20,0xFFE6C}, + [I(94,81)] = {21,0x1FFE6C}, + [I(95,81)] = {13,0x116C}, + [I(96,81)] = {22,0x3FFEEC}, + [I(97,81)] = {12,0x1EC}, + [I(98,81)] = {13,0x11EC}, + [I(99,81)] = {12,0x26C}, + [I(100,81)] = {13,0x126C}, + [I(101,81)] = {12,0x2EC}, + [I(102,81)] = {13,0x12EC}, + [I(103,81)] = {13,0x136C}, + [I(104,81)] = {13,0x13EC}, + [I(105,81)] = {12,0x36C}, + [I(106,81)] = {14,0x3A6C}, + [I(107,81)] = {14,0x3AEC}, + [I(108,81)] = {13,0x146C}, + [I(109,81)] = {13,0x14EC}, + [I(110,81)] = {13,0x156C}, + [I(111,81)] = {12,0x3EC}, + [I(112,81)] = {13,0x15EC}, + [I(113,81)] = {14,0x3B6C}, + [I(114,81)] = {13,0x166C}, + [I(115,81)] = {12,0x46C}, + [I(116,81)] = {12,0x4EC}, + [I(117,81)] = {13,0x16EC}, + [I(118,81)] = {14,0x3BEC}, + [I(119,81)] = {14,0x3C6C}, + [I(120,81)] = {14,0x3CEC}, + [I(121,81)] = {14,0x3D6C}, + [I(122,81)] = {14,0x3DEC}, + [I(123,81)] = {22,0x3FFF6C}, + [I(124,81)] = {18,0x3FE6C}, + [I(125,81)] = {21,0x1FFEEC}, + [I(126,81)] = {20,0xFFEEC}, + [I(127,81)] = {64,0}, + [I(128,81)] = {27,0x7FFF36C}, + [I(129,81)] = {29,0x1FFFE96C}, + [I(130,81)] = {27,0x7FFF3EC}, + [I(131,81)] = {27,0x7FFF46C}, + [I(132,81)] = {29,0x1FFFE9EC}, + [I(133,81)] = {29,0x1FFFEA6C}, + [I(134,81)] = {29,0x1FFFEAEC}, + [I(135,81)] = {30,0x3FFFECEC}, + [I(136,81)] = {29,0x1FFFEB6C}, + [I(137,81)] = {30,0x3FFFED6C}, + [I(138,81)] = {30,0x3FFFEDEC}, + [I(139,81)] = {30,0x3FFFEE6C}, + [I(140,81)] = {30,0x3FFFEEEC}, + [I(141,81)] = {30,0x3FFFEF6C}, + [I(142,81)] = {31,0x7FFFF5EC}, + [I(143,81)] = {30,0x3FFFEFEC}, + [I(144,81)] = {31,0x7FFFF66C}, + [I(145,81)] = {31,0x7FFFF6EC}, + [I(146,81)] = {29,0x1FFFEBEC}, + [I(147,81)] = {30,0x3FFFF06C}, + [I(148,81)] = {31,0x7FFFF76C}, + [I(149,81)] = {30,0x3FFFF0EC}, + [I(150,81)] = {30,0x3FFFF16C}, + [I(151,81)] = {30,0x3FFFF1EC}, + [I(152,81)] = {30,0x3FFFF26C}, + [I(153,81)] = {28,0xFFFEE6C}, + [I(154,81)] = {29,0x1FFFEC6C}, + [I(155,81)] = {30,0x3FFFF2EC}, + [I(156,81)] = {29,0x1FFFECEC}, + [I(157,81)] = {30,0x3FFFF36C}, + [I(158,81)] = {30,0x3FFFF3EC}, + [I(159,81)] = {31,0x7FFFF7EC}, + [I(160,81)] = {29,0x1FFFED6C}, + [I(161,81)] = {28,0xFFFEEEC}, + [I(162,81)] = {27,0x7FFF4EC}, + [I(163,81)] = {29,0x1FFFEDEC}, + [I(164,81)] = {29,0x1FFFEE6C}, + [I(165,81)] = {30,0x3FFFF46C}, + [I(166,81)] = {30,0x3FFFF4EC}, + [I(167,81)] = {28,0xFFFEF6C}, + [I(168,81)] = {30,0x3FFFF56C}, + [I(169,81)] = {29,0x1FFFEEEC}, + [I(170,81)] = {29,0x1FFFEF6C}, + [I(171,81)] = {31,0x7FFFF86C}, + [I(172,81)] = {28,0xFFFEFEC}, + [I(173,81)] = {29,0x1FFFEFEC}, + [I(174,81)] = {30,0x3FFFF5EC}, + [I(175,81)] = {30,0x3FFFF66C}, + [I(176,81)] = {28,0xFFFF06C}, + [I(177,81)] = {28,0xFFFF0EC}, + [I(178,81)] = {29,0x1FFFF06C}, + [I(179,81)] = {28,0xFFFF16C}, + [I(180,81)] = {30,0x3FFFF6EC}, + [I(181,81)] = {29,0x1FFFF0EC}, + [I(182,81)] = {30,0x3FFFF76C}, + [I(183,81)] = {30,0x3FFFF7EC}, + [I(184,81)] = {27,0x7FFF56C}, + [I(185,81)] = {29,0x1FFFF16C}, + [I(186,81)] = {29,0x1FFFF1EC}, + [I(187,81)] = {29,0x1FFFF26C}, + [I(188,81)] = {30,0x3FFFF86C}, + [I(189,81)] = {29,0x1FFFF2EC}, + [I(190,81)] = {29,0x1FFFF36C}, + [I(191,81)] = {30,0x3FFFF8EC}, + [I(192,81)] = {64,0}, + [I(193,81)] = {64,0}, + [I(194,81)] = {27,0x7FFF5EC}, + [I(195,81)] = {26,0x3FFF8EC}, + [I(196,81)] = {29,0x1FFFF3EC}, + [I(197,81)] = {30,0x3FFFF96C}, + [I(198,81)] = {29,0x1FFFF46C}, + [I(199,81)] = {X32,0xFFFFF66C}, + [I(200,81)] = {64,0}, + [I(201,81)] = {64,0}, + [I(202,81)] = {64,0}, + [I(203,81)] = {64,0}, + [I(204,81)] = {64,0}, + [I(205,81)] = {64,0}, + [I(206,81)] = {31,0x7FFFF8EC}, + [I(207,81)] = {X32,0xFFFFF6EC}, + [I(208,81)] = {26,0x3FFF96C}, + [I(209,81)] = {28,0xFFFF1EC}, + [I(210,81)] = {64,0}, + [I(211,81)] = {64,0}, + [I(212,81)] = {64,0}, + [I(213,81)] = {64,0}, + [I(214,81)] = {64,0}, + [I(215,81)] = {31,0x7FFFF96C}, + [I(216,81)] = {28,0xFFFF26C}, + [I(217,81)] = {28,0xFFFF2EC}, + [I(218,81)] = {64,0}, + [I(219,81)] = {64,0}, + [I(220,81)] = {64,0}, + [I(221,81)] = {64,0}, + [I(222,81)] = {64,0}, + [I(223,81)] = {64,0}, + [I(224,81)] = {27,0x7FFF66C}, + [I(225,81)] = {31,0x7FFFF9EC}, + [I(226,81)] = {27,0x7FFF6EC}, + [I(227,81)] = {28,0xFFFF36C}, + [I(228,81)] = {29,0x1FFFF4EC}, + [I(229,81)] = {28,0xFFFF3EC}, + [I(230,81)] = {28,0xFFFF46C}, + [I(231,81)] = {30,0x3FFFF9EC}, + [I(232,81)] = {29,0x1FFFF56C}, + [I(233,81)] = {29,0x1FFFF5EC}, + [I(234,81)] = {X32,0xFFFFF76C}, + [I(235,81)] = {X32,0xFFFFF7EC}, + [I(236,81)] = {31,0x7FFFFA6C}, + [I(237,81)] = {31,0x7FFFFAEC}, + [I(238,81)] = {64,0}, + [I(239,81)] = {30,0x3FFFFA6C}, + [I(240,81)] = {64,0}, + [I(241,81)] = {64,0}, + [I(242,81)] = {64,0}, + [I(243,81)] = {64,0}, + [I(244,81)] = {64,0}, + [I(245,81)] = {64,0}, + [I(246,81)] = {64,0}, + [I(247,81)] = {64,0}, + [I(248,81)] = {64,0}, + [I(249,81)] = {64,0}, + [I(250,81)] = {64,0}, + [I(251,81)] = {64,0}, + [I(252,81)] = {64,0}, + [I(253,81)] = {64,0}, + [I(254,81)] = {64,0}, + [I(255,81)] = {64,0}, + [I(0,82)] = {20,0xFFC6D}, + [I(1,82)] = {30,0x3FFFEC6D}, + [I(2,82)] = {64,0}, + [I(3,82)] = {64,0}, + [I(4,82)] = {64,0}, + [I(5,82)] = {64,0}, + [I(6,82)] = {64,0}, + [I(7,82)] = {64,0}, + [I(8,82)] = {64,0}, + [I(9,82)] = {31,0x7FFFF56D}, + [I(10,82)] = {64,0}, + [I(11,82)] = {64,0}, + [I(12,82)] = {64,0}, + [I(13,82)] = {64,0}, + [I(14,82)] = {64,0}, + [I(15,82)] = {64,0}, + [I(16,82)] = {64,0}, + [I(17,82)] = {64,0}, + [I(18,82)] = {64,0}, + [I(19,82)] = {64,0}, + [I(20,82)] = {64,0}, + [I(21,82)] = {64,0}, + [I(22,82)] = {64,0}, + [I(23,82)] = {64,0}, + [I(24,82)] = {64,0}, + [I(25,82)] = {64,0}, + [I(26,82)] = {64,0}, + [I(27,82)] = {64,0}, + [I(28,82)] = {64,0}, + [I(29,82)] = {64,0}, + [I(30,82)] = {64,0}, + [I(31,82)] = {64,0}, + [I(32,82)] = {13,0xA6D}, + [I(33,82)] = {17,0x1FC6D}, + [I(34,82)] = {17,0x1FCED}, + [I(35,82)] = {19,0x7FD6D}, + [I(36,82)] = {20,0xFFCED}, + [I(37,82)] = {13,0xAED}, + [I(38,82)] = {15,0x7C6D}, + [I(39,82)] = {18,0x3FD6D}, + [I(40,82)] = {17,0x1FD6D}, + [I(41,82)] = {17,0x1FDED}, + [I(42,82)] = {15,0x7CED}, + [I(43,82)] = {18,0x3FDED}, + [I(44,82)] = {15,0x7D6D}, + [I(45,82)] = {13,0xB6D}, + [I(46,82)] = {13,0xBED}, + [I(47,82)] = {13,0xC6D}, + [I(48,82)] = {12,0x6D}, + [I(49,82)] = {12,0xED}, + [I(50,82)] = {12,0x16D}, + [I(51,82)] = {13,0xCED}, + [I(52,82)] = {13,0xD6D}, + [I(53,82)] = {13,0xDED}, + [I(54,82)] = {13,0xE6D}, + [I(55,82)] = {13,0xEED}, + [I(56,82)] = {13,0xF6D}, + [I(57,82)] = {13,0xFED}, + [I(58,82)] = {14,0x2E6D}, + [I(59,82)] = {15,0x7DED}, + [I(60,82)] = {22,0x3FFE6D}, + [I(61,82)] = {13,0x106D}, + [I(62,82)] = {19,0x7FDED}, + [I(63,82)] = {17,0x1FE6D}, + [I(64,82)] = {20,0xFFD6D}, + [I(65,82)] = {13,0x10ED}, + [I(66,82)] = {14,0x2EED}, + [I(67,82)] = {14,0x2F6D}, + [I(68,82)] = {14,0x2FED}, + [I(69,82)] = {14,0x306D}, + [I(70,82)] = {14,0x30ED}, + [I(71,82)] = {14,0x316D}, + [I(72,82)] = {14,0x31ED}, + [I(73,82)] = {14,0x326D}, + [I(74,82)] = {14,0x32ED}, + [I(75,82)] = {14,0x336D}, + [I(76,82)] = {14,0x33ED}, + [I(77,82)] = {14,0x346D}, + [I(78,82)] = {14,0x34ED}, + [I(79,82)] = {14,0x356D}, + [I(80,82)] = {14,0x35ED}, + [I(81,82)] = {14,0x366D}, + [I(82,82)] = {14,0x36ED}, + [I(83,82)] = {14,0x376D}, + [I(84,82)] = {14,0x37ED}, + [I(85,82)] = {14,0x386D}, + [I(86,82)] = {14,0x38ED}, + [I(87,82)] = {14,0x396D}, + [I(88,82)] = {15,0x7E6D}, + [I(89,82)] = {14,0x39ED}, + [I(90,82)] = {15,0x7EED}, + [I(91,82)] = {20,0xFFDED}, + [I(92,82)] = {26,0x3FFF86D}, + [I(93,82)] = {20,0xFFE6D}, + [I(94,82)] = {21,0x1FFE6D}, + [I(95,82)] = {13,0x116D}, + [I(96,82)] = {22,0x3FFEED}, + [I(97,82)] = {12,0x1ED}, + [I(98,82)] = {13,0x11ED}, + [I(99,82)] = {12,0x26D}, + [I(100,82)] = {13,0x126D}, + [I(101,82)] = {12,0x2ED}, + [I(102,82)] = {13,0x12ED}, + [I(103,82)] = {13,0x136D}, + [I(104,82)] = {13,0x13ED}, + [I(105,82)] = {12,0x36D}, + [I(106,82)] = {14,0x3A6D}, + [I(107,82)] = {14,0x3AED}, + [I(108,82)] = {13,0x146D}, + [I(109,82)] = {13,0x14ED}, + [I(110,82)] = {13,0x156D}, + [I(111,82)] = {12,0x3ED}, + [I(112,82)] = {13,0x15ED}, + [I(113,82)] = {14,0x3B6D}, + [I(114,82)] = {13,0x166D}, + [I(115,82)] = {12,0x46D}, + [I(116,82)] = {12,0x4ED}, + [I(117,82)] = {13,0x16ED}, + [I(118,82)] = {14,0x3BED}, + [I(119,82)] = {14,0x3C6D}, + [I(120,82)] = {14,0x3CED}, + [I(121,82)] = {14,0x3D6D}, + [I(122,82)] = {14,0x3DED}, + [I(123,82)] = {22,0x3FFF6D}, + [I(124,82)] = {18,0x3FE6D}, + [I(125,82)] = {21,0x1FFEED}, + [I(126,82)] = {20,0xFFEED}, + [I(127,82)] = {64,0}, + [I(128,82)] = {27,0x7FFF36D}, + [I(129,82)] = {29,0x1FFFE96D}, + [I(130,82)] = {27,0x7FFF3ED}, + [I(131,82)] = {27,0x7FFF46D}, + [I(132,82)] = {29,0x1FFFE9ED}, + [I(133,82)] = {29,0x1FFFEA6D}, + [I(134,82)] = {29,0x1FFFEAED}, + [I(135,82)] = {30,0x3FFFECED}, + [I(136,82)] = {29,0x1FFFEB6D}, + [I(137,82)] = {30,0x3FFFED6D}, + [I(138,82)] = {30,0x3FFFEDED}, + [I(139,82)] = {30,0x3FFFEE6D}, + [I(140,82)] = {30,0x3FFFEEED}, + [I(141,82)] = {30,0x3FFFEF6D}, + [I(142,82)] = {31,0x7FFFF5ED}, + [I(143,82)] = {30,0x3FFFEFED}, + [I(144,82)] = {31,0x7FFFF66D}, + [I(145,82)] = {31,0x7FFFF6ED}, + [I(146,82)] = {29,0x1FFFEBED}, + [I(147,82)] = {30,0x3FFFF06D}, + [I(148,82)] = {31,0x7FFFF76D}, + [I(149,82)] = {30,0x3FFFF0ED}, + [I(150,82)] = {30,0x3FFFF16D}, + [I(151,82)] = {30,0x3FFFF1ED}, + [I(152,82)] = {30,0x3FFFF26D}, + [I(153,82)] = {28,0xFFFEE6D}, + [I(154,82)] = {29,0x1FFFEC6D}, + [I(155,82)] = {30,0x3FFFF2ED}, + [I(156,82)] = {29,0x1FFFECED}, + [I(157,82)] = {30,0x3FFFF36D}, + [I(158,82)] = {30,0x3FFFF3ED}, + [I(159,82)] = {31,0x7FFFF7ED}, + [I(160,82)] = {29,0x1FFFED6D}, + [I(161,82)] = {28,0xFFFEEED}, + [I(162,82)] = {27,0x7FFF4ED}, + [I(163,82)] = {29,0x1FFFEDED}, + [I(164,82)] = {29,0x1FFFEE6D}, + [I(165,82)] = {30,0x3FFFF46D}, + [I(166,82)] = {30,0x3FFFF4ED}, + [I(167,82)] = {28,0xFFFEF6D}, + [I(168,82)] = {30,0x3FFFF56D}, + [I(169,82)] = {29,0x1FFFEEED}, + [I(170,82)] = {29,0x1FFFEF6D}, + [I(171,82)] = {31,0x7FFFF86D}, + [I(172,82)] = {28,0xFFFEFED}, + [I(173,82)] = {29,0x1FFFEFED}, + [I(174,82)] = {30,0x3FFFF5ED}, + [I(175,82)] = {30,0x3FFFF66D}, + [I(176,82)] = {28,0xFFFF06D}, + [I(177,82)] = {28,0xFFFF0ED}, + [I(178,82)] = {29,0x1FFFF06D}, + [I(179,82)] = {28,0xFFFF16D}, + [I(180,82)] = {30,0x3FFFF6ED}, + [I(181,82)] = {29,0x1FFFF0ED}, + [I(182,82)] = {30,0x3FFFF76D}, + [I(183,82)] = {30,0x3FFFF7ED}, + [I(184,82)] = {27,0x7FFF56D}, + [I(185,82)] = {29,0x1FFFF16D}, + [I(186,82)] = {29,0x1FFFF1ED}, + [I(187,82)] = {29,0x1FFFF26D}, + [I(188,82)] = {30,0x3FFFF86D}, + [I(189,82)] = {29,0x1FFFF2ED}, + [I(190,82)] = {29,0x1FFFF36D}, + [I(191,82)] = {30,0x3FFFF8ED}, + [I(192,82)] = {64,0}, + [I(193,82)] = {64,0}, + [I(194,82)] = {27,0x7FFF5ED}, + [I(195,82)] = {26,0x3FFF8ED}, + [I(196,82)] = {29,0x1FFFF3ED}, + [I(197,82)] = {30,0x3FFFF96D}, + [I(198,82)] = {29,0x1FFFF46D}, + [I(199,82)] = {X32,0xFFFFF66D}, + [I(200,82)] = {64,0}, + [I(201,82)] = {64,0}, + [I(202,82)] = {64,0}, + [I(203,82)] = {64,0}, + [I(204,82)] = {64,0}, + [I(205,82)] = {64,0}, + [I(206,82)] = {31,0x7FFFF8ED}, + [I(207,82)] = {X32,0xFFFFF6ED}, + [I(208,82)] = {26,0x3FFF96D}, + [I(209,82)] = {28,0xFFFF1ED}, + [I(210,82)] = {64,0}, + [I(211,82)] = {64,0}, + [I(212,82)] = {64,0}, + [I(213,82)] = {64,0}, + [I(214,82)] = {64,0}, + [I(215,82)] = {31,0x7FFFF96D}, + [I(216,82)] = {28,0xFFFF26D}, + [I(217,82)] = {28,0xFFFF2ED}, + [I(218,82)] = {64,0}, + [I(219,82)] = {64,0}, + [I(220,82)] = {64,0}, + [I(221,82)] = {64,0}, + [I(222,82)] = {64,0}, + [I(223,82)] = {64,0}, + [I(224,82)] = {27,0x7FFF66D}, + [I(225,82)] = {31,0x7FFFF9ED}, + [I(226,82)] = {27,0x7FFF6ED}, + [I(227,82)] = {28,0xFFFF36D}, + [I(228,82)] = {29,0x1FFFF4ED}, + [I(229,82)] = {28,0xFFFF3ED}, + [I(230,82)] = {28,0xFFFF46D}, + [I(231,82)] = {30,0x3FFFF9ED}, + [I(232,82)] = {29,0x1FFFF56D}, + [I(233,82)] = {29,0x1FFFF5ED}, + [I(234,82)] = {X32,0xFFFFF76D}, + [I(235,82)] = {X32,0xFFFFF7ED}, + [I(236,82)] = {31,0x7FFFFA6D}, + [I(237,82)] = {31,0x7FFFFAED}, + [I(238,82)] = {64,0}, + [I(239,82)] = {30,0x3FFFFA6D}, + [I(240,82)] = {64,0}, + [I(241,82)] = {64,0}, + [I(242,82)] = {64,0}, + [I(243,82)] = {64,0}, + [I(244,82)] = {64,0}, + [I(245,82)] = {64,0}, + [I(246,82)] = {64,0}, + [I(247,82)] = {64,0}, + [I(248,82)] = {64,0}, + [I(249,82)] = {64,0}, + [I(250,82)] = {64,0}, + [I(251,82)] = {64,0}, + [I(252,82)] = {64,0}, + [I(253,82)] = {64,0}, + [I(254,82)] = {64,0}, + [I(255,82)] = {64,0}, + [I(0,83)] = {20,0xFFC6E}, + [I(1,83)] = {30,0x3FFFEC6E}, + [I(2,83)] = {64,0}, + [I(3,83)] = {64,0}, + [I(4,83)] = {64,0}, + [I(5,83)] = {64,0}, + [I(6,83)] = {64,0}, + [I(7,83)] = {64,0}, + [I(8,83)] = {64,0}, + [I(9,83)] = {31,0x7FFFF56E}, + [I(10,83)] = {64,0}, + [I(11,83)] = {64,0}, + [I(12,83)] = {64,0}, + [I(13,83)] = {64,0}, + [I(14,83)] = {64,0}, + [I(15,83)] = {64,0}, + [I(16,83)] = {64,0}, + [I(17,83)] = {64,0}, + [I(18,83)] = {64,0}, + [I(19,83)] = {64,0}, + [I(20,83)] = {64,0}, + [I(21,83)] = {64,0}, + [I(22,83)] = {64,0}, + [I(23,83)] = {64,0}, + [I(24,83)] = {64,0}, + [I(25,83)] = {64,0}, + [I(26,83)] = {64,0}, + [I(27,83)] = {64,0}, + [I(28,83)] = {64,0}, + [I(29,83)] = {64,0}, + [I(30,83)] = {64,0}, + [I(31,83)] = {64,0}, + [I(32,83)] = {13,0xA6E}, + [I(33,83)] = {17,0x1FC6E}, + [I(34,83)] = {17,0x1FCEE}, + [I(35,83)] = {19,0x7FD6E}, + [I(36,83)] = {20,0xFFCEE}, + [I(37,83)] = {13,0xAEE}, + [I(38,83)] = {15,0x7C6E}, + [I(39,83)] = {18,0x3FD6E}, + [I(40,83)] = {17,0x1FD6E}, + [I(41,83)] = {17,0x1FDEE}, + [I(42,83)] = {15,0x7CEE}, + [I(43,83)] = {18,0x3FDEE}, + [I(44,83)] = {15,0x7D6E}, + [I(45,83)] = {13,0xB6E}, + [I(46,83)] = {13,0xBEE}, + [I(47,83)] = {13,0xC6E}, + [I(48,83)] = {12,0x6E}, + [I(49,83)] = {12,0xEE}, + [I(50,83)] = {12,0x16E}, + [I(51,83)] = {13,0xCEE}, + [I(52,83)] = {13,0xD6E}, + [I(53,83)] = {13,0xDEE}, + [I(54,83)] = {13,0xE6E}, + [I(55,83)] = {13,0xEEE}, + [I(56,83)] = {13,0xF6E}, + [I(57,83)] = {13,0xFEE}, + [I(58,83)] = {14,0x2E6E}, + [I(59,83)] = {15,0x7DEE}, + [I(60,83)] = {22,0x3FFE6E}, + [I(61,83)] = {13,0x106E}, + [I(62,83)] = {19,0x7FDEE}, + [I(63,83)] = {17,0x1FE6E}, + [I(64,83)] = {20,0xFFD6E}, + [I(65,83)] = {13,0x10EE}, + [I(66,83)] = {14,0x2EEE}, + [I(67,83)] = {14,0x2F6E}, + [I(68,83)] = {14,0x2FEE}, + [I(69,83)] = {14,0x306E}, + [I(70,83)] = {14,0x30EE}, + [I(71,83)] = {14,0x316E}, + [I(72,83)] = {14,0x31EE}, + [I(73,83)] = {14,0x326E}, + [I(74,83)] = {14,0x32EE}, + [I(75,83)] = {14,0x336E}, + [I(76,83)] = {14,0x33EE}, + [I(77,83)] = {14,0x346E}, + [I(78,83)] = {14,0x34EE}, + [I(79,83)] = {14,0x356E}, + [I(80,83)] = {14,0x35EE}, + [I(81,83)] = {14,0x366E}, + [I(82,83)] = {14,0x36EE}, + [I(83,83)] = {14,0x376E}, + [I(84,83)] = {14,0x37EE}, + [I(85,83)] = {14,0x386E}, + [I(86,83)] = {14,0x38EE}, + [I(87,83)] = {14,0x396E}, + [I(88,83)] = {15,0x7E6E}, + [I(89,83)] = {14,0x39EE}, + [I(90,83)] = {15,0x7EEE}, + [I(91,83)] = {20,0xFFDEE}, + [I(92,83)] = {26,0x3FFF86E}, + [I(93,83)] = {20,0xFFE6E}, + [I(94,83)] = {21,0x1FFE6E}, + [I(95,83)] = {13,0x116E}, + [I(96,83)] = {22,0x3FFEEE}, + [I(97,83)] = {12,0x1EE}, + [I(98,83)] = {13,0x11EE}, + [I(99,83)] = {12,0x26E}, + [I(100,83)] = {13,0x126E}, + [I(101,83)] = {12,0x2EE}, + [I(102,83)] = {13,0x12EE}, + [I(103,83)] = {13,0x136E}, + [I(104,83)] = {13,0x13EE}, + [I(105,83)] = {12,0x36E}, + [I(106,83)] = {14,0x3A6E}, + [I(107,83)] = {14,0x3AEE}, + [I(108,83)] = {13,0x146E}, + [I(109,83)] = {13,0x14EE}, + [I(110,83)] = {13,0x156E}, + [I(111,83)] = {12,0x3EE}, + [I(112,83)] = {13,0x15EE}, + [I(113,83)] = {14,0x3B6E}, + [I(114,83)] = {13,0x166E}, + [I(115,83)] = {12,0x46E}, + [I(116,83)] = {12,0x4EE}, + [I(117,83)] = {13,0x16EE}, + [I(118,83)] = {14,0x3BEE}, + [I(119,83)] = {14,0x3C6E}, + [I(120,83)] = {14,0x3CEE}, + [I(121,83)] = {14,0x3D6E}, + [I(122,83)] = {14,0x3DEE}, + [I(123,83)] = {22,0x3FFF6E}, + [I(124,83)] = {18,0x3FE6E}, + [I(125,83)] = {21,0x1FFEEE}, + [I(126,83)] = {20,0xFFEEE}, + [I(127,83)] = {64,0}, + [I(128,83)] = {27,0x7FFF36E}, + [I(129,83)] = {29,0x1FFFE96E}, + [I(130,83)] = {27,0x7FFF3EE}, + [I(131,83)] = {27,0x7FFF46E}, + [I(132,83)] = {29,0x1FFFE9EE}, + [I(133,83)] = {29,0x1FFFEA6E}, + [I(134,83)] = {29,0x1FFFEAEE}, + [I(135,83)] = {30,0x3FFFECEE}, + [I(136,83)] = {29,0x1FFFEB6E}, + [I(137,83)] = {30,0x3FFFED6E}, + [I(138,83)] = {30,0x3FFFEDEE}, + [I(139,83)] = {30,0x3FFFEE6E}, + [I(140,83)] = {30,0x3FFFEEEE}, + [I(141,83)] = {30,0x3FFFEF6E}, + [I(142,83)] = {31,0x7FFFF5EE}, + [I(143,83)] = {30,0x3FFFEFEE}, + [I(144,83)] = {31,0x7FFFF66E}, + [I(145,83)] = {31,0x7FFFF6EE}, + [I(146,83)] = {29,0x1FFFEBEE}, + [I(147,83)] = {30,0x3FFFF06E}, + [I(148,83)] = {31,0x7FFFF76E}, + [I(149,83)] = {30,0x3FFFF0EE}, + [I(150,83)] = {30,0x3FFFF16E}, + [I(151,83)] = {30,0x3FFFF1EE}, + [I(152,83)] = {30,0x3FFFF26E}, + [I(153,83)] = {28,0xFFFEE6E}, + [I(154,83)] = {29,0x1FFFEC6E}, + [I(155,83)] = {30,0x3FFFF2EE}, + [I(156,83)] = {29,0x1FFFECEE}, + [I(157,83)] = {30,0x3FFFF36E}, + [I(158,83)] = {30,0x3FFFF3EE}, + [I(159,83)] = {31,0x7FFFF7EE}, + [I(160,83)] = {29,0x1FFFED6E}, + [I(161,83)] = {28,0xFFFEEEE}, + [I(162,83)] = {27,0x7FFF4EE}, + [I(163,83)] = {29,0x1FFFEDEE}, + [I(164,83)] = {29,0x1FFFEE6E}, + [I(165,83)] = {30,0x3FFFF46E}, + [I(166,83)] = {30,0x3FFFF4EE}, + [I(167,83)] = {28,0xFFFEF6E}, + [I(168,83)] = {30,0x3FFFF56E}, + [I(169,83)] = {29,0x1FFFEEEE}, + [I(170,83)] = {29,0x1FFFEF6E}, + [I(171,83)] = {31,0x7FFFF86E}, + [I(172,83)] = {28,0xFFFEFEE}, + [I(173,83)] = {29,0x1FFFEFEE}, + [I(174,83)] = {30,0x3FFFF5EE}, + [I(175,83)] = {30,0x3FFFF66E}, + [I(176,83)] = {28,0xFFFF06E}, + [I(177,83)] = {28,0xFFFF0EE}, + [I(178,83)] = {29,0x1FFFF06E}, + [I(179,83)] = {28,0xFFFF16E}, + [I(180,83)] = {30,0x3FFFF6EE}, + [I(181,83)] = {29,0x1FFFF0EE}, + [I(182,83)] = {30,0x3FFFF76E}, + [I(183,83)] = {30,0x3FFFF7EE}, + [I(184,83)] = {27,0x7FFF56E}, + [I(185,83)] = {29,0x1FFFF16E}, + [I(186,83)] = {29,0x1FFFF1EE}, + [I(187,83)] = {29,0x1FFFF26E}, + [I(188,83)] = {30,0x3FFFF86E}, + [I(189,83)] = {29,0x1FFFF2EE}, + [I(190,83)] = {29,0x1FFFF36E}, + [I(191,83)] = {30,0x3FFFF8EE}, + [I(192,83)] = {64,0}, + [I(193,83)] = {64,0}, + [I(194,83)] = {27,0x7FFF5EE}, + [I(195,83)] = {26,0x3FFF8EE}, + [I(196,83)] = {29,0x1FFFF3EE}, + [I(197,83)] = {30,0x3FFFF96E}, + [I(198,83)] = {29,0x1FFFF46E}, + [I(199,83)] = {X32,0xFFFFF66E}, + [I(200,83)] = {64,0}, + [I(201,83)] = {64,0}, + [I(202,83)] = {64,0}, + [I(203,83)] = {64,0}, + [I(204,83)] = {64,0}, + [I(205,83)] = {64,0}, + [I(206,83)] = {31,0x7FFFF8EE}, + [I(207,83)] = {X32,0xFFFFF6EE}, + [I(208,83)] = {26,0x3FFF96E}, + [I(209,83)] = {28,0xFFFF1EE}, + [I(210,83)] = {64,0}, + [I(211,83)] = {64,0}, + [I(212,83)] = {64,0}, + [I(213,83)] = {64,0}, + [I(214,83)] = {64,0}, + [I(215,83)] = {31,0x7FFFF96E}, + [I(216,83)] = {28,0xFFFF26E}, + [I(217,83)] = {28,0xFFFF2EE}, + [I(218,83)] = {64,0}, + [I(219,83)] = {64,0}, + [I(220,83)] = {64,0}, + [I(221,83)] = {64,0}, + [I(222,83)] = {64,0}, + [I(223,83)] = {64,0}, + [I(224,83)] = {27,0x7FFF66E}, + [I(225,83)] = {31,0x7FFFF9EE}, + [I(226,83)] = {27,0x7FFF6EE}, + [I(227,83)] = {28,0xFFFF36E}, + [I(228,83)] = {29,0x1FFFF4EE}, + [I(229,83)] = {28,0xFFFF3EE}, + [I(230,83)] = {28,0xFFFF46E}, + [I(231,83)] = {30,0x3FFFF9EE}, + [I(232,83)] = {29,0x1FFFF56E}, + [I(233,83)] = {29,0x1FFFF5EE}, + [I(234,83)] = {X32,0xFFFFF76E}, + [I(235,83)] = {X32,0xFFFFF7EE}, + [I(236,83)] = {31,0x7FFFFA6E}, + [I(237,83)] = {31,0x7FFFFAEE}, + [I(238,83)] = {64,0}, + [I(239,83)] = {30,0x3FFFFA6E}, + [I(240,83)] = {64,0}, + [I(241,83)] = {64,0}, + [I(242,83)] = {64,0}, + [I(243,83)] = {64,0}, + [I(244,83)] = {64,0}, + [I(245,83)] = {64,0}, + [I(246,83)] = {64,0}, + [I(247,83)] = {64,0}, + [I(248,83)] = {64,0}, + [I(249,83)] = {64,0}, + [I(250,83)] = {64,0}, + [I(251,83)] = {64,0}, + [I(252,83)] = {64,0}, + [I(253,83)] = {64,0}, + [I(254,83)] = {64,0}, + [I(255,83)] = {64,0}, + [I(0,84)] = {20,0xFFC6F}, + [I(1,84)] = {30,0x3FFFEC6F}, + [I(2,84)] = {64,0}, + [I(3,84)] = {64,0}, + [I(4,84)] = {64,0}, + [I(5,84)] = {64,0}, + [I(6,84)] = {64,0}, + [I(7,84)] = {64,0}, + [I(8,84)] = {64,0}, + [I(9,84)] = {31,0x7FFFF56F}, + [I(10,84)] = {64,0}, + [I(11,84)] = {64,0}, + [I(12,84)] = {64,0}, + [I(13,84)] = {64,0}, + [I(14,84)] = {64,0}, + [I(15,84)] = {64,0}, + [I(16,84)] = {64,0}, + [I(17,84)] = {64,0}, + [I(18,84)] = {64,0}, + [I(19,84)] = {64,0}, + [I(20,84)] = {64,0}, + [I(21,84)] = {64,0}, + [I(22,84)] = {64,0}, + [I(23,84)] = {64,0}, + [I(24,84)] = {64,0}, + [I(25,84)] = {64,0}, + [I(26,84)] = {64,0}, + [I(27,84)] = {64,0}, + [I(28,84)] = {64,0}, + [I(29,84)] = {64,0}, + [I(30,84)] = {64,0}, + [I(31,84)] = {64,0}, + [I(32,84)] = {13,0xA6F}, + [I(33,84)] = {17,0x1FC6F}, + [I(34,84)] = {17,0x1FCEF}, + [I(35,84)] = {19,0x7FD6F}, + [I(36,84)] = {20,0xFFCEF}, + [I(37,84)] = {13,0xAEF}, + [I(38,84)] = {15,0x7C6F}, + [I(39,84)] = {18,0x3FD6F}, + [I(40,84)] = {17,0x1FD6F}, + [I(41,84)] = {17,0x1FDEF}, + [I(42,84)] = {15,0x7CEF}, + [I(43,84)] = {18,0x3FDEF}, + [I(44,84)] = {15,0x7D6F}, + [I(45,84)] = {13,0xB6F}, + [I(46,84)] = {13,0xBEF}, + [I(47,84)] = {13,0xC6F}, + [I(48,84)] = {12,0x6F}, + [I(49,84)] = {12,0xEF}, + [I(50,84)] = {12,0x16F}, + [I(51,84)] = {13,0xCEF}, + [I(52,84)] = {13,0xD6F}, + [I(53,84)] = {13,0xDEF}, + [I(54,84)] = {13,0xE6F}, + [I(55,84)] = {13,0xEEF}, + [I(56,84)] = {13,0xF6F}, + [I(57,84)] = {13,0xFEF}, + [I(58,84)] = {14,0x2E6F}, + [I(59,84)] = {15,0x7DEF}, + [I(60,84)] = {22,0x3FFE6F}, + [I(61,84)] = {13,0x106F}, + [I(62,84)] = {19,0x7FDEF}, + [I(63,84)] = {17,0x1FE6F}, + [I(64,84)] = {20,0xFFD6F}, + [I(65,84)] = {13,0x10EF}, + [I(66,84)] = {14,0x2EEF}, + [I(67,84)] = {14,0x2F6F}, + [I(68,84)] = {14,0x2FEF}, + [I(69,84)] = {14,0x306F}, + [I(70,84)] = {14,0x30EF}, + [I(71,84)] = {14,0x316F}, + [I(72,84)] = {14,0x31EF}, + [I(73,84)] = {14,0x326F}, + [I(74,84)] = {14,0x32EF}, + [I(75,84)] = {14,0x336F}, + [I(76,84)] = {14,0x33EF}, + [I(77,84)] = {14,0x346F}, + [I(78,84)] = {14,0x34EF}, + [I(79,84)] = {14,0x356F}, + [I(80,84)] = {14,0x35EF}, + [I(81,84)] = {14,0x366F}, + [I(82,84)] = {14,0x36EF}, + [I(83,84)] = {14,0x376F}, + [I(84,84)] = {14,0x37EF}, + [I(85,84)] = {14,0x386F}, + [I(86,84)] = {14,0x38EF}, + [I(87,84)] = {14,0x396F}, + [I(88,84)] = {15,0x7E6F}, + [I(89,84)] = {14,0x39EF}, + [I(90,84)] = {15,0x7EEF}, + [I(91,84)] = {20,0xFFDEF}, + [I(92,84)] = {26,0x3FFF86F}, + [I(93,84)] = {20,0xFFE6F}, + [I(94,84)] = {21,0x1FFE6F}, + [I(95,84)] = {13,0x116F}, + [I(96,84)] = {22,0x3FFEEF}, + [I(97,84)] = {12,0x1EF}, + [I(98,84)] = {13,0x11EF}, + [I(99,84)] = {12,0x26F}, + [I(100,84)] = {13,0x126F}, + [I(101,84)] = {12,0x2EF}, + [I(102,84)] = {13,0x12EF}, + [I(103,84)] = {13,0x136F}, + [I(104,84)] = {13,0x13EF}, + [I(105,84)] = {12,0x36F}, + [I(106,84)] = {14,0x3A6F}, + [I(107,84)] = {14,0x3AEF}, + [I(108,84)] = {13,0x146F}, + [I(109,84)] = {13,0x14EF}, + [I(110,84)] = {13,0x156F}, + [I(111,84)] = {12,0x3EF}, + [I(112,84)] = {13,0x15EF}, + [I(113,84)] = {14,0x3B6F}, + [I(114,84)] = {13,0x166F}, + [I(115,84)] = {12,0x46F}, + [I(116,84)] = {12,0x4EF}, + [I(117,84)] = {13,0x16EF}, + [I(118,84)] = {14,0x3BEF}, + [I(119,84)] = {14,0x3C6F}, + [I(120,84)] = {14,0x3CEF}, + [I(121,84)] = {14,0x3D6F}, + [I(122,84)] = {14,0x3DEF}, + [I(123,84)] = {22,0x3FFF6F}, + [I(124,84)] = {18,0x3FE6F}, + [I(125,84)] = {21,0x1FFEEF}, + [I(126,84)] = {20,0xFFEEF}, + [I(127,84)] = {64,0}, + [I(128,84)] = {27,0x7FFF36F}, + [I(129,84)] = {29,0x1FFFE96F}, + [I(130,84)] = {27,0x7FFF3EF}, + [I(131,84)] = {27,0x7FFF46F}, + [I(132,84)] = {29,0x1FFFE9EF}, + [I(133,84)] = {29,0x1FFFEA6F}, + [I(134,84)] = {29,0x1FFFEAEF}, + [I(135,84)] = {30,0x3FFFECEF}, + [I(136,84)] = {29,0x1FFFEB6F}, + [I(137,84)] = {30,0x3FFFED6F}, + [I(138,84)] = {30,0x3FFFEDEF}, + [I(139,84)] = {30,0x3FFFEE6F}, + [I(140,84)] = {30,0x3FFFEEEF}, + [I(141,84)] = {30,0x3FFFEF6F}, + [I(142,84)] = {31,0x7FFFF5EF}, + [I(143,84)] = {30,0x3FFFEFEF}, + [I(144,84)] = {31,0x7FFFF66F}, + [I(145,84)] = {31,0x7FFFF6EF}, + [I(146,84)] = {29,0x1FFFEBEF}, + [I(147,84)] = {30,0x3FFFF06F}, + [I(148,84)] = {31,0x7FFFF76F}, + [I(149,84)] = {30,0x3FFFF0EF}, + [I(150,84)] = {30,0x3FFFF16F}, + [I(151,84)] = {30,0x3FFFF1EF}, + [I(152,84)] = {30,0x3FFFF26F}, + [I(153,84)] = {28,0xFFFEE6F}, + [I(154,84)] = {29,0x1FFFEC6F}, + [I(155,84)] = {30,0x3FFFF2EF}, + [I(156,84)] = {29,0x1FFFECEF}, + [I(157,84)] = {30,0x3FFFF36F}, + [I(158,84)] = {30,0x3FFFF3EF}, + [I(159,84)] = {31,0x7FFFF7EF}, + [I(160,84)] = {29,0x1FFFED6F}, + [I(161,84)] = {28,0xFFFEEEF}, + [I(162,84)] = {27,0x7FFF4EF}, + [I(163,84)] = {29,0x1FFFEDEF}, + [I(164,84)] = {29,0x1FFFEE6F}, + [I(165,84)] = {30,0x3FFFF46F}, + [I(166,84)] = {30,0x3FFFF4EF}, + [I(167,84)] = {28,0xFFFEF6F}, + [I(168,84)] = {30,0x3FFFF56F}, + [I(169,84)] = {29,0x1FFFEEEF}, + [I(170,84)] = {29,0x1FFFEF6F}, + [I(171,84)] = {31,0x7FFFF86F}, + [I(172,84)] = {28,0xFFFEFEF}, + [I(173,84)] = {29,0x1FFFEFEF}, + [I(174,84)] = {30,0x3FFFF5EF}, + [I(175,84)] = {30,0x3FFFF66F}, + [I(176,84)] = {28,0xFFFF06F}, + [I(177,84)] = {28,0xFFFF0EF}, + [I(178,84)] = {29,0x1FFFF06F}, + [I(179,84)] = {28,0xFFFF16F}, + [I(180,84)] = {30,0x3FFFF6EF}, + [I(181,84)] = {29,0x1FFFF0EF}, + [I(182,84)] = {30,0x3FFFF76F}, + [I(183,84)] = {30,0x3FFFF7EF}, + [I(184,84)] = {27,0x7FFF56F}, + [I(185,84)] = {29,0x1FFFF16F}, + [I(186,84)] = {29,0x1FFFF1EF}, + [I(187,84)] = {29,0x1FFFF26F}, + [I(188,84)] = {30,0x3FFFF86F}, + [I(189,84)] = {29,0x1FFFF2EF}, + [I(190,84)] = {29,0x1FFFF36F}, + [I(191,84)] = {30,0x3FFFF8EF}, + [I(192,84)] = {64,0}, + [I(193,84)] = {64,0}, + [I(194,84)] = {27,0x7FFF5EF}, + [I(195,84)] = {26,0x3FFF8EF}, + [I(196,84)] = {29,0x1FFFF3EF}, + [I(197,84)] = {30,0x3FFFF96F}, + [I(198,84)] = {29,0x1FFFF46F}, + [I(199,84)] = {X32,0xFFFFF66F}, + [I(200,84)] = {64,0}, + [I(201,84)] = {64,0}, + [I(202,84)] = {64,0}, + [I(203,84)] = {64,0}, + [I(204,84)] = {64,0}, + [I(205,84)] = {64,0}, + [I(206,84)] = {31,0x7FFFF8EF}, + [I(207,84)] = {X32,0xFFFFF6EF}, + [I(208,84)] = {26,0x3FFF96F}, + [I(209,84)] = {28,0xFFFF1EF}, + [I(210,84)] = {64,0}, + [I(211,84)] = {64,0}, + [I(212,84)] = {64,0}, + [I(213,84)] = {64,0}, + [I(214,84)] = {64,0}, + [I(215,84)] = {31,0x7FFFF96F}, + [I(216,84)] = {28,0xFFFF26F}, + [I(217,84)] = {28,0xFFFF2EF}, + [I(218,84)] = {64,0}, + [I(219,84)] = {64,0}, + [I(220,84)] = {64,0}, + [I(221,84)] = {64,0}, + [I(222,84)] = {64,0}, + [I(223,84)] = {64,0}, + [I(224,84)] = {27,0x7FFF66F}, + [I(225,84)] = {31,0x7FFFF9EF}, + [I(226,84)] = {27,0x7FFF6EF}, + [I(227,84)] = {28,0xFFFF36F}, + [I(228,84)] = {29,0x1FFFF4EF}, + [I(229,84)] = {28,0xFFFF3EF}, + [I(230,84)] = {28,0xFFFF46F}, + [I(231,84)] = {30,0x3FFFF9EF}, + [I(232,84)] = {29,0x1FFFF56F}, + [I(233,84)] = {29,0x1FFFF5EF}, + [I(234,84)] = {X32,0xFFFFF76F}, + [I(235,84)] = {X32,0xFFFFF7EF}, + [I(236,84)] = {31,0x7FFFFA6F}, + [I(237,84)] = {31,0x7FFFFAEF}, + [I(238,84)] = {64,0}, + [I(239,84)] = {30,0x3FFFFA6F}, + [I(240,84)] = {64,0}, + [I(241,84)] = {64,0}, + [I(242,84)] = {64,0}, + [I(243,84)] = {64,0}, + [I(244,84)] = {64,0}, + [I(245,84)] = {64,0}, + [I(246,84)] = {64,0}, + [I(247,84)] = {64,0}, + [I(248,84)] = {64,0}, + [I(249,84)] = {64,0}, + [I(250,84)] = {64,0}, + [I(251,84)] = {64,0}, + [I(252,84)] = {64,0}, + [I(253,84)] = {64,0}, + [I(254,84)] = {64,0}, + [I(255,84)] = {64,0}, + [I(0,85)] = {20,0xFFC70}, + [I(1,85)] = {30,0x3FFFEC70}, + [I(2,85)] = {64,0}, + [I(3,85)] = {64,0}, + [I(4,85)] = {64,0}, + [I(5,85)] = {64,0}, + [I(6,85)] = {64,0}, + [I(7,85)] = {64,0}, + [I(8,85)] = {64,0}, + [I(9,85)] = {31,0x7FFFF570}, + [I(10,85)] = {64,0}, + [I(11,85)] = {64,0}, + [I(12,85)] = {64,0}, + [I(13,85)] = {64,0}, + [I(14,85)] = {64,0}, + [I(15,85)] = {64,0}, + [I(16,85)] = {64,0}, + [I(17,85)] = {64,0}, + [I(18,85)] = {64,0}, + [I(19,85)] = {64,0}, + [I(20,85)] = {64,0}, + [I(21,85)] = {64,0}, + [I(22,85)] = {64,0}, + [I(23,85)] = {64,0}, + [I(24,85)] = {64,0}, + [I(25,85)] = {64,0}, + [I(26,85)] = {64,0}, + [I(27,85)] = {64,0}, + [I(28,85)] = {64,0}, + [I(29,85)] = {64,0}, + [I(30,85)] = {64,0}, + [I(31,85)] = {64,0}, + [I(32,85)] = {13,0xA70}, + [I(33,85)] = {17,0x1FC70}, + [I(34,85)] = {17,0x1FCF0}, + [I(35,85)] = {19,0x7FD70}, + [I(36,85)] = {20,0xFFCF0}, + [I(37,85)] = {13,0xAF0}, + [I(38,85)] = {15,0x7C70}, + [I(39,85)] = {18,0x3FD70}, + [I(40,85)] = {17,0x1FD70}, + [I(41,85)] = {17,0x1FDF0}, + [I(42,85)] = {15,0x7CF0}, + [I(43,85)] = {18,0x3FDF0}, + [I(44,85)] = {15,0x7D70}, + [I(45,85)] = {13,0xB70}, + [I(46,85)] = {13,0xBF0}, + [I(47,85)] = {13,0xC70}, + [I(48,85)] = {12,0x70}, + [I(49,85)] = {12,0xF0}, + [I(50,85)] = {12,0x170}, + [I(51,85)] = {13,0xCF0}, + [I(52,85)] = {13,0xD70}, + [I(53,85)] = {13,0xDF0}, + [I(54,85)] = {13,0xE70}, + [I(55,85)] = {13,0xEF0}, + [I(56,85)] = {13,0xF70}, + [I(57,85)] = {13,0xFF0}, + [I(58,85)] = {14,0x2E70}, + [I(59,85)] = {15,0x7DF0}, + [I(60,85)] = {22,0x3FFE70}, + [I(61,85)] = {13,0x1070}, + [I(62,85)] = {19,0x7FDF0}, + [I(63,85)] = {17,0x1FE70}, + [I(64,85)] = {20,0xFFD70}, + [I(65,85)] = {13,0x10F0}, + [I(66,85)] = {14,0x2EF0}, + [I(67,85)] = {14,0x2F70}, + [I(68,85)] = {14,0x2FF0}, + [I(69,85)] = {14,0x3070}, + [I(70,85)] = {14,0x30F0}, + [I(71,85)] = {14,0x3170}, + [I(72,85)] = {14,0x31F0}, + [I(73,85)] = {14,0x3270}, + [I(74,85)] = {14,0x32F0}, + [I(75,85)] = {14,0x3370}, + [I(76,85)] = {14,0x33F0}, + [I(77,85)] = {14,0x3470}, + [I(78,85)] = {14,0x34F0}, + [I(79,85)] = {14,0x3570}, + [I(80,85)] = {14,0x35F0}, + [I(81,85)] = {14,0x3670}, + [I(82,85)] = {14,0x36F0}, + [I(83,85)] = {14,0x3770}, + [I(84,85)] = {14,0x37F0}, + [I(85,85)] = {14,0x3870}, + [I(86,85)] = {14,0x38F0}, + [I(87,85)] = {14,0x3970}, + [I(88,85)] = {15,0x7E70}, + [I(89,85)] = {14,0x39F0}, + [I(90,85)] = {15,0x7EF0}, + [I(91,85)] = {20,0xFFDF0}, + [I(92,85)] = {26,0x3FFF870}, + [I(93,85)] = {20,0xFFE70}, + [I(94,85)] = {21,0x1FFE70}, + [I(95,85)] = {13,0x1170}, + [I(96,85)] = {22,0x3FFEF0}, + [I(97,85)] = {12,0x1F0}, + [I(98,85)] = {13,0x11F0}, + [I(99,85)] = {12,0x270}, + [I(100,85)] = {13,0x1270}, + [I(101,85)] = {12,0x2F0}, + [I(102,85)] = {13,0x12F0}, + [I(103,85)] = {13,0x1370}, + [I(104,85)] = {13,0x13F0}, + [I(105,85)] = {12,0x370}, + [I(106,85)] = {14,0x3A70}, + [I(107,85)] = {14,0x3AF0}, + [I(108,85)] = {13,0x1470}, + [I(109,85)] = {13,0x14F0}, + [I(110,85)] = {13,0x1570}, + [I(111,85)] = {12,0x3F0}, + [I(112,85)] = {13,0x15F0}, + [I(113,85)] = {14,0x3B70}, + [I(114,85)] = {13,0x1670}, + [I(115,85)] = {12,0x470}, + [I(116,85)] = {12,0x4F0}, + [I(117,85)] = {13,0x16F0}, + [I(118,85)] = {14,0x3BF0}, + [I(119,85)] = {14,0x3C70}, + [I(120,85)] = {14,0x3CF0}, + [I(121,85)] = {14,0x3D70}, + [I(122,85)] = {14,0x3DF0}, + [I(123,85)] = {22,0x3FFF70}, + [I(124,85)] = {18,0x3FE70}, + [I(125,85)] = {21,0x1FFEF0}, + [I(126,85)] = {20,0xFFEF0}, + [I(127,85)] = {64,0}, + [I(128,85)] = {27,0x7FFF370}, + [I(129,85)] = {29,0x1FFFE970}, + [I(130,85)] = {27,0x7FFF3F0}, + [I(131,85)] = {27,0x7FFF470}, + [I(132,85)] = {29,0x1FFFE9F0}, + [I(133,85)] = {29,0x1FFFEA70}, + [I(134,85)] = {29,0x1FFFEAF0}, + [I(135,85)] = {30,0x3FFFECF0}, + [I(136,85)] = {29,0x1FFFEB70}, + [I(137,85)] = {30,0x3FFFED70}, + [I(138,85)] = {30,0x3FFFEDF0}, + [I(139,85)] = {30,0x3FFFEE70}, + [I(140,85)] = {30,0x3FFFEEF0}, + [I(141,85)] = {30,0x3FFFEF70}, + [I(142,85)] = {31,0x7FFFF5F0}, + [I(143,85)] = {30,0x3FFFEFF0}, + [I(144,85)] = {31,0x7FFFF670}, + [I(145,85)] = {31,0x7FFFF6F0}, + [I(146,85)] = {29,0x1FFFEBF0}, + [I(147,85)] = {30,0x3FFFF070}, + [I(148,85)] = {31,0x7FFFF770}, + [I(149,85)] = {30,0x3FFFF0F0}, + [I(150,85)] = {30,0x3FFFF170}, + [I(151,85)] = {30,0x3FFFF1F0}, + [I(152,85)] = {30,0x3FFFF270}, + [I(153,85)] = {28,0xFFFEE70}, + [I(154,85)] = {29,0x1FFFEC70}, + [I(155,85)] = {30,0x3FFFF2F0}, + [I(156,85)] = {29,0x1FFFECF0}, + [I(157,85)] = {30,0x3FFFF370}, + [I(158,85)] = {30,0x3FFFF3F0}, + [I(159,85)] = {31,0x7FFFF7F0}, + [I(160,85)] = {29,0x1FFFED70}, + [I(161,85)] = {28,0xFFFEEF0}, + [I(162,85)] = {27,0x7FFF4F0}, + [I(163,85)] = {29,0x1FFFEDF0}, + [I(164,85)] = {29,0x1FFFEE70}, + [I(165,85)] = {30,0x3FFFF470}, + [I(166,85)] = {30,0x3FFFF4F0}, + [I(167,85)] = {28,0xFFFEF70}, + [I(168,85)] = {30,0x3FFFF570}, + [I(169,85)] = {29,0x1FFFEEF0}, + [I(170,85)] = {29,0x1FFFEF70}, + [I(171,85)] = {31,0x7FFFF870}, + [I(172,85)] = {28,0xFFFEFF0}, + [I(173,85)] = {29,0x1FFFEFF0}, + [I(174,85)] = {30,0x3FFFF5F0}, + [I(175,85)] = {30,0x3FFFF670}, + [I(176,85)] = {28,0xFFFF070}, + [I(177,85)] = {28,0xFFFF0F0}, + [I(178,85)] = {29,0x1FFFF070}, + [I(179,85)] = {28,0xFFFF170}, + [I(180,85)] = {30,0x3FFFF6F0}, + [I(181,85)] = {29,0x1FFFF0F0}, + [I(182,85)] = {30,0x3FFFF770}, + [I(183,85)] = {30,0x3FFFF7F0}, + [I(184,85)] = {27,0x7FFF570}, + [I(185,85)] = {29,0x1FFFF170}, + [I(186,85)] = {29,0x1FFFF1F0}, + [I(187,85)] = {29,0x1FFFF270}, + [I(188,85)] = {30,0x3FFFF870}, + [I(189,85)] = {29,0x1FFFF2F0}, + [I(190,85)] = {29,0x1FFFF370}, + [I(191,85)] = {30,0x3FFFF8F0}, + [I(192,85)] = {64,0}, + [I(193,85)] = {64,0}, + [I(194,85)] = {27,0x7FFF5F0}, + [I(195,85)] = {26,0x3FFF8F0}, + [I(196,85)] = {29,0x1FFFF3F0}, + [I(197,85)] = {30,0x3FFFF970}, + [I(198,85)] = {29,0x1FFFF470}, + [I(199,85)] = {X32,0xFFFFF670}, + [I(200,85)] = {64,0}, + [I(201,85)] = {64,0}, + [I(202,85)] = {64,0}, + [I(203,85)] = {64,0}, + [I(204,85)] = {64,0}, + [I(205,85)] = {64,0}, + [I(206,85)] = {31,0x7FFFF8F0}, + [I(207,85)] = {X32,0xFFFFF6F0}, + [I(208,85)] = {26,0x3FFF970}, + [I(209,85)] = {28,0xFFFF1F0}, + [I(210,85)] = {64,0}, + [I(211,85)] = {64,0}, + [I(212,85)] = {64,0}, + [I(213,85)] = {64,0}, + [I(214,85)] = {64,0}, + [I(215,85)] = {31,0x7FFFF970}, + [I(216,85)] = {28,0xFFFF270}, + [I(217,85)] = {28,0xFFFF2F0}, + [I(218,85)] = {64,0}, + [I(219,85)] = {64,0}, + [I(220,85)] = {64,0}, + [I(221,85)] = {64,0}, + [I(222,85)] = {64,0}, + [I(223,85)] = {64,0}, + [I(224,85)] = {27,0x7FFF670}, + [I(225,85)] = {31,0x7FFFF9F0}, + [I(226,85)] = {27,0x7FFF6F0}, + [I(227,85)] = {28,0xFFFF370}, + [I(228,85)] = {29,0x1FFFF4F0}, + [I(229,85)] = {28,0xFFFF3F0}, + [I(230,85)] = {28,0xFFFF470}, + [I(231,85)] = {30,0x3FFFF9F0}, + [I(232,85)] = {29,0x1FFFF570}, + [I(233,85)] = {29,0x1FFFF5F0}, + [I(234,85)] = {X32,0xFFFFF770}, + [I(235,85)] = {X32,0xFFFFF7F0}, + [I(236,85)] = {31,0x7FFFFA70}, + [I(237,85)] = {31,0x7FFFFAF0}, + [I(238,85)] = {64,0}, + [I(239,85)] = {30,0x3FFFFA70}, + [I(240,85)] = {64,0}, + [I(241,85)] = {64,0}, + [I(242,85)] = {64,0}, + [I(243,85)] = {64,0}, + [I(244,85)] = {64,0}, + [I(245,85)] = {64,0}, + [I(246,85)] = {64,0}, + [I(247,85)] = {64,0}, + [I(248,85)] = {64,0}, + [I(249,85)] = {64,0}, + [I(250,85)] = {64,0}, + [I(251,85)] = {64,0}, + [I(252,85)] = {64,0}, + [I(253,85)] = {64,0}, + [I(254,85)] = {64,0}, + [I(255,85)] = {64,0}, + [I(0,86)] = {20,0xFFC71}, + [I(1,86)] = {30,0x3FFFEC71}, + [I(2,86)] = {64,0}, + [I(3,86)] = {64,0}, + [I(4,86)] = {64,0}, + [I(5,86)] = {64,0}, + [I(6,86)] = {64,0}, + [I(7,86)] = {64,0}, + [I(8,86)] = {64,0}, + [I(9,86)] = {31,0x7FFFF571}, + [I(10,86)] = {64,0}, + [I(11,86)] = {64,0}, + [I(12,86)] = {64,0}, + [I(13,86)] = {64,0}, + [I(14,86)] = {64,0}, + [I(15,86)] = {64,0}, + [I(16,86)] = {64,0}, + [I(17,86)] = {64,0}, + [I(18,86)] = {64,0}, + [I(19,86)] = {64,0}, + [I(20,86)] = {64,0}, + [I(21,86)] = {64,0}, + [I(22,86)] = {64,0}, + [I(23,86)] = {64,0}, + [I(24,86)] = {64,0}, + [I(25,86)] = {64,0}, + [I(26,86)] = {64,0}, + [I(27,86)] = {64,0}, + [I(28,86)] = {64,0}, + [I(29,86)] = {64,0}, + [I(30,86)] = {64,0}, + [I(31,86)] = {64,0}, + [I(32,86)] = {13,0xA71}, + [I(33,86)] = {17,0x1FC71}, + [I(34,86)] = {17,0x1FCF1}, + [I(35,86)] = {19,0x7FD71}, + [I(36,86)] = {20,0xFFCF1}, + [I(37,86)] = {13,0xAF1}, + [I(38,86)] = {15,0x7C71}, + [I(39,86)] = {18,0x3FD71}, + [I(40,86)] = {17,0x1FD71}, + [I(41,86)] = {17,0x1FDF1}, + [I(42,86)] = {15,0x7CF1}, + [I(43,86)] = {18,0x3FDF1}, + [I(44,86)] = {15,0x7D71}, + [I(45,86)] = {13,0xB71}, + [I(46,86)] = {13,0xBF1}, + [I(47,86)] = {13,0xC71}, + [I(48,86)] = {12,0x71}, + [I(49,86)] = {12,0xF1}, + [I(50,86)] = {12,0x171}, + [I(51,86)] = {13,0xCF1}, + [I(52,86)] = {13,0xD71}, + [I(53,86)] = {13,0xDF1}, + [I(54,86)] = {13,0xE71}, + [I(55,86)] = {13,0xEF1}, + [I(56,86)] = {13,0xF71}, + [I(57,86)] = {13,0xFF1}, + [I(58,86)] = {14,0x2E71}, + [I(59,86)] = {15,0x7DF1}, + [I(60,86)] = {22,0x3FFE71}, + [I(61,86)] = {13,0x1071}, + [I(62,86)] = {19,0x7FDF1}, + [I(63,86)] = {17,0x1FE71}, + [I(64,86)] = {20,0xFFD71}, + [I(65,86)] = {13,0x10F1}, + [I(66,86)] = {14,0x2EF1}, + [I(67,86)] = {14,0x2F71}, + [I(68,86)] = {14,0x2FF1}, + [I(69,86)] = {14,0x3071}, + [I(70,86)] = {14,0x30F1}, + [I(71,86)] = {14,0x3171}, + [I(72,86)] = {14,0x31F1}, + [I(73,86)] = {14,0x3271}, + [I(74,86)] = {14,0x32F1}, + [I(75,86)] = {14,0x3371}, + [I(76,86)] = {14,0x33F1}, + [I(77,86)] = {14,0x3471}, + [I(78,86)] = {14,0x34F1}, + [I(79,86)] = {14,0x3571}, + [I(80,86)] = {14,0x35F1}, + [I(81,86)] = {14,0x3671}, + [I(82,86)] = {14,0x36F1}, + [I(83,86)] = {14,0x3771}, + [I(84,86)] = {14,0x37F1}, + [I(85,86)] = {14,0x3871}, + [I(86,86)] = {14,0x38F1}, + [I(87,86)] = {14,0x3971}, + [I(88,86)] = {15,0x7E71}, + [I(89,86)] = {14,0x39F1}, + [I(90,86)] = {15,0x7EF1}, + [I(91,86)] = {20,0xFFDF1}, + [I(92,86)] = {26,0x3FFF871}, + [I(93,86)] = {20,0xFFE71}, + [I(94,86)] = {21,0x1FFE71}, + [I(95,86)] = {13,0x1171}, + [I(96,86)] = {22,0x3FFEF1}, + [I(97,86)] = {12,0x1F1}, + [I(98,86)] = {13,0x11F1}, + [I(99,86)] = {12,0x271}, + [I(100,86)] = {13,0x1271}, + [I(101,86)] = {12,0x2F1}, + [I(102,86)] = {13,0x12F1}, + [I(103,86)] = {13,0x1371}, + [I(104,86)] = {13,0x13F1}, + [I(105,86)] = {12,0x371}, + [I(106,86)] = {14,0x3A71}, + [I(107,86)] = {14,0x3AF1}, + [I(108,86)] = {13,0x1471}, + [I(109,86)] = {13,0x14F1}, + [I(110,86)] = {13,0x1571}, + [I(111,86)] = {12,0x3F1}, + [I(112,86)] = {13,0x15F1}, + [I(113,86)] = {14,0x3B71}, + [I(114,86)] = {13,0x1671}, + [I(115,86)] = {12,0x471}, + [I(116,86)] = {12,0x4F1}, + [I(117,86)] = {13,0x16F1}, + [I(118,86)] = {14,0x3BF1}, + [I(119,86)] = {14,0x3C71}, + [I(120,86)] = {14,0x3CF1}, + [I(121,86)] = {14,0x3D71}, + [I(122,86)] = {14,0x3DF1}, + [I(123,86)] = {22,0x3FFF71}, + [I(124,86)] = {18,0x3FE71}, + [I(125,86)] = {21,0x1FFEF1}, + [I(126,86)] = {20,0xFFEF1}, + [I(127,86)] = {64,0}, + [I(128,86)] = {27,0x7FFF371}, + [I(129,86)] = {29,0x1FFFE971}, + [I(130,86)] = {27,0x7FFF3F1}, + [I(131,86)] = {27,0x7FFF471}, + [I(132,86)] = {29,0x1FFFE9F1}, + [I(133,86)] = {29,0x1FFFEA71}, + [I(134,86)] = {29,0x1FFFEAF1}, + [I(135,86)] = {30,0x3FFFECF1}, + [I(136,86)] = {29,0x1FFFEB71}, + [I(137,86)] = {30,0x3FFFED71}, + [I(138,86)] = {30,0x3FFFEDF1}, + [I(139,86)] = {30,0x3FFFEE71}, + [I(140,86)] = {30,0x3FFFEEF1}, + [I(141,86)] = {30,0x3FFFEF71}, + [I(142,86)] = {31,0x7FFFF5F1}, + [I(143,86)] = {30,0x3FFFEFF1}, + [I(144,86)] = {31,0x7FFFF671}, + [I(145,86)] = {31,0x7FFFF6F1}, + [I(146,86)] = {29,0x1FFFEBF1}, + [I(147,86)] = {30,0x3FFFF071}, + [I(148,86)] = {31,0x7FFFF771}, + [I(149,86)] = {30,0x3FFFF0F1}, + [I(150,86)] = {30,0x3FFFF171}, + [I(151,86)] = {30,0x3FFFF1F1}, + [I(152,86)] = {30,0x3FFFF271}, + [I(153,86)] = {28,0xFFFEE71}, + [I(154,86)] = {29,0x1FFFEC71}, + [I(155,86)] = {30,0x3FFFF2F1}, + [I(156,86)] = {29,0x1FFFECF1}, + [I(157,86)] = {30,0x3FFFF371}, + [I(158,86)] = {30,0x3FFFF3F1}, + [I(159,86)] = {31,0x7FFFF7F1}, + [I(160,86)] = {29,0x1FFFED71}, + [I(161,86)] = {28,0xFFFEEF1}, + [I(162,86)] = {27,0x7FFF4F1}, + [I(163,86)] = {29,0x1FFFEDF1}, + [I(164,86)] = {29,0x1FFFEE71}, + [I(165,86)] = {30,0x3FFFF471}, + [I(166,86)] = {30,0x3FFFF4F1}, + [I(167,86)] = {28,0xFFFEF71}, + [I(168,86)] = {30,0x3FFFF571}, + [I(169,86)] = {29,0x1FFFEEF1}, + [I(170,86)] = {29,0x1FFFEF71}, + [I(171,86)] = {31,0x7FFFF871}, + [I(172,86)] = {28,0xFFFEFF1}, + [I(173,86)] = {29,0x1FFFEFF1}, + [I(174,86)] = {30,0x3FFFF5F1}, + [I(175,86)] = {30,0x3FFFF671}, + [I(176,86)] = {28,0xFFFF071}, + [I(177,86)] = {28,0xFFFF0F1}, + [I(178,86)] = {29,0x1FFFF071}, + [I(179,86)] = {28,0xFFFF171}, + [I(180,86)] = {30,0x3FFFF6F1}, + [I(181,86)] = {29,0x1FFFF0F1}, + [I(182,86)] = {30,0x3FFFF771}, + [I(183,86)] = {30,0x3FFFF7F1}, + [I(184,86)] = {27,0x7FFF571}, + [I(185,86)] = {29,0x1FFFF171}, + [I(186,86)] = {29,0x1FFFF1F1}, + [I(187,86)] = {29,0x1FFFF271}, + [I(188,86)] = {30,0x3FFFF871}, + [I(189,86)] = {29,0x1FFFF2F1}, + [I(190,86)] = {29,0x1FFFF371}, + [I(191,86)] = {30,0x3FFFF8F1}, + [I(192,86)] = {64,0}, + [I(193,86)] = {64,0}, + [I(194,86)] = {27,0x7FFF5F1}, + [I(195,86)] = {26,0x3FFF8F1}, + [I(196,86)] = {29,0x1FFFF3F1}, + [I(197,86)] = {30,0x3FFFF971}, + [I(198,86)] = {29,0x1FFFF471}, + [I(199,86)] = {X32,0xFFFFF671}, + [I(200,86)] = {64,0}, + [I(201,86)] = {64,0}, + [I(202,86)] = {64,0}, + [I(203,86)] = {64,0}, + [I(204,86)] = {64,0}, + [I(205,86)] = {64,0}, + [I(206,86)] = {31,0x7FFFF8F1}, + [I(207,86)] = {X32,0xFFFFF6F1}, + [I(208,86)] = {26,0x3FFF971}, + [I(209,86)] = {28,0xFFFF1F1}, + [I(210,86)] = {64,0}, + [I(211,86)] = {64,0}, + [I(212,86)] = {64,0}, + [I(213,86)] = {64,0}, + [I(214,86)] = {64,0}, + [I(215,86)] = {31,0x7FFFF971}, + [I(216,86)] = {28,0xFFFF271}, + [I(217,86)] = {28,0xFFFF2F1}, + [I(218,86)] = {64,0}, + [I(219,86)] = {64,0}, + [I(220,86)] = {64,0}, + [I(221,86)] = {64,0}, + [I(222,86)] = {64,0}, + [I(223,86)] = {64,0}, + [I(224,86)] = {27,0x7FFF671}, + [I(225,86)] = {31,0x7FFFF9F1}, + [I(226,86)] = {27,0x7FFF6F1}, + [I(227,86)] = {28,0xFFFF371}, + [I(228,86)] = {29,0x1FFFF4F1}, + [I(229,86)] = {28,0xFFFF3F1}, + [I(230,86)] = {28,0xFFFF471}, + [I(231,86)] = {30,0x3FFFF9F1}, + [I(232,86)] = {29,0x1FFFF571}, + [I(233,86)] = {29,0x1FFFF5F1}, + [I(234,86)] = {X32,0xFFFFF771}, + [I(235,86)] = {X32,0xFFFFF7F1}, + [I(236,86)] = {31,0x7FFFFA71}, + [I(237,86)] = {31,0x7FFFFAF1}, + [I(238,86)] = {64,0}, + [I(239,86)] = {30,0x3FFFFA71}, + [I(240,86)] = {64,0}, + [I(241,86)] = {64,0}, + [I(242,86)] = {64,0}, + [I(243,86)] = {64,0}, + [I(244,86)] = {64,0}, + [I(245,86)] = {64,0}, + [I(246,86)] = {64,0}, + [I(247,86)] = {64,0}, + [I(248,86)] = {64,0}, + [I(249,86)] = {64,0}, + [I(250,86)] = {64,0}, + [I(251,86)] = {64,0}, + [I(252,86)] = {64,0}, + [I(253,86)] = {64,0}, + [I(254,86)] = {64,0}, + [I(255,86)] = {64,0}, + [I(0,87)] = {20,0xFFC72}, + [I(1,87)] = {30,0x3FFFEC72}, + [I(2,87)] = {64,0}, + [I(3,87)] = {64,0}, + [I(4,87)] = {64,0}, + [I(5,87)] = {64,0}, + [I(6,87)] = {64,0}, + [I(7,87)] = {64,0}, + [I(8,87)] = {64,0}, + [I(9,87)] = {31,0x7FFFF572}, + [I(10,87)] = {64,0}, + [I(11,87)] = {64,0}, + [I(12,87)] = {64,0}, + [I(13,87)] = {64,0}, + [I(14,87)] = {64,0}, + [I(15,87)] = {64,0}, + [I(16,87)] = {64,0}, + [I(17,87)] = {64,0}, + [I(18,87)] = {64,0}, + [I(19,87)] = {64,0}, + [I(20,87)] = {64,0}, + [I(21,87)] = {64,0}, + [I(22,87)] = {64,0}, + [I(23,87)] = {64,0}, + [I(24,87)] = {64,0}, + [I(25,87)] = {64,0}, + [I(26,87)] = {64,0}, + [I(27,87)] = {64,0}, + [I(28,87)] = {64,0}, + [I(29,87)] = {64,0}, + [I(30,87)] = {64,0}, + [I(31,87)] = {64,0}, + [I(32,87)] = {13,0xA72}, + [I(33,87)] = {17,0x1FC72}, + [I(34,87)] = {17,0x1FCF2}, + [I(35,87)] = {19,0x7FD72}, + [I(36,87)] = {20,0xFFCF2}, + [I(37,87)] = {13,0xAF2}, + [I(38,87)] = {15,0x7C72}, + [I(39,87)] = {18,0x3FD72}, + [I(40,87)] = {17,0x1FD72}, + [I(41,87)] = {17,0x1FDF2}, + [I(42,87)] = {15,0x7CF2}, + [I(43,87)] = {18,0x3FDF2}, + [I(44,87)] = {15,0x7D72}, + [I(45,87)] = {13,0xB72}, + [I(46,87)] = {13,0xBF2}, + [I(47,87)] = {13,0xC72}, + [I(48,87)] = {12,0x72}, + [I(49,87)] = {12,0xF2}, + [I(50,87)] = {12,0x172}, + [I(51,87)] = {13,0xCF2}, + [I(52,87)] = {13,0xD72}, + [I(53,87)] = {13,0xDF2}, + [I(54,87)] = {13,0xE72}, + [I(55,87)] = {13,0xEF2}, + [I(56,87)] = {13,0xF72}, + [I(57,87)] = {13,0xFF2}, + [I(58,87)] = {14,0x2E72}, + [I(59,87)] = {15,0x7DF2}, + [I(60,87)] = {22,0x3FFE72}, + [I(61,87)] = {13,0x1072}, + [I(62,87)] = {19,0x7FDF2}, + [I(63,87)] = {17,0x1FE72}, + [I(64,87)] = {20,0xFFD72}, + [I(65,87)] = {13,0x10F2}, + [I(66,87)] = {14,0x2EF2}, + [I(67,87)] = {14,0x2F72}, + [I(68,87)] = {14,0x2FF2}, + [I(69,87)] = {14,0x3072}, + [I(70,87)] = {14,0x30F2}, + [I(71,87)] = {14,0x3172}, + [I(72,87)] = {14,0x31F2}, + [I(73,87)] = {14,0x3272}, + [I(74,87)] = {14,0x32F2}, + [I(75,87)] = {14,0x3372}, + [I(76,87)] = {14,0x33F2}, + [I(77,87)] = {14,0x3472}, + [I(78,87)] = {14,0x34F2}, + [I(79,87)] = {14,0x3572}, + [I(80,87)] = {14,0x35F2}, + [I(81,87)] = {14,0x3672}, + [I(82,87)] = {14,0x36F2}, + [I(83,87)] = {14,0x3772}, + [I(84,87)] = {14,0x37F2}, + [I(85,87)] = {14,0x3872}, + [I(86,87)] = {14,0x38F2}, + [I(87,87)] = {14,0x3972}, + [I(88,87)] = {15,0x7E72}, + [I(89,87)] = {14,0x39F2}, + [I(90,87)] = {15,0x7EF2}, + [I(91,87)] = {20,0xFFDF2}, + [I(92,87)] = {26,0x3FFF872}, + [I(93,87)] = {20,0xFFE72}, + [I(94,87)] = {21,0x1FFE72}, + [I(95,87)] = {13,0x1172}, + [I(96,87)] = {22,0x3FFEF2}, + [I(97,87)] = {12,0x1F2}, + [I(98,87)] = {13,0x11F2}, + [I(99,87)] = {12,0x272}, + [I(100,87)] = {13,0x1272}, + [I(101,87)] = {12,0x2F2}, + [I(102,87)] = {13,0x12F2}, + [I(103,87)] = {13,0x1372}, + [I(104,87)] = {13,0x13F2}, + [I(105,87)] = {12,0x372}, + [I(106,87)] = {14,0x3A72}, + [I(107,87)] = {14,0x3AF2}, + [I(108,87)] = {13,0x1472}, + [I(109,87)] = {13,0x14F2}, + [I(110,87)] = {13,0x1572}, + [I(111,87)] = {12,0x3F2}, + [I(112,87)] = {13,0x15F2}, + [I(113,87)] = {14,0x3B72}, + [I(114,87)] = {13,0x1672}, + [I(115,87)] = {12,0x472}, + [I(116,87)] = {12,0x4F2}, + [I(117,87)] = {13,0x16F2}, + [I(118,87)] = {14,0x3BF2}, + [I(119,87)] = {14,0x3C72}, + [I(120,87)] = {14,0x3CF2}, + [I(121,87)] = {14,0x3D72}, + [I(122,87)] = {14,0x3DF2}, + [I(123,87)] = {22,0x3FFF72}, + [I(124,87)] = {18,0x3FE72}, + [I(125,87)] = {21,0x1FFEF2}, + [I(126,87)] = {20,0xFFEF2}, + [I(127,87)] = {64,0}, + [I(128,87)] = {27,0x7FFF372}, + [I(129,87)] = {29,0x1FFFE972}, + [I(130,87)] = {27,0x7FFF3F2}, + [I(131,87)] = {27,0x7FFF472}, + [I(132,87)] = {29,0x1FFFE9F2}, + [I(133,87)] = {29,0x1FFFEA72}, + [I(134,87)] = {29,0x1FFFEAF2}, + [I(135,87)] = {30,0x3FFFECF2}, + [I(136,87)] = {29,0x1FFFEB72}, + [I(137,87)] = {30,0x3FFFED72}, + [I(138,87)] = {30,0x3FFFEDF2}, + [I(139,87)] = {30,0x3FFFEE72}, + [I(140,87)] = {30,0x3FFFEEF2}, + [I(141,87)] = {30,0x3FFFEF72}, + [I(142,87)] = {31,0x7FFFF5F2}, + [I(143,87)] = {30,0x3FFFEFF2}, + [I(144,87)] = {31,0x7FFFF672}, + [I(145,87)] = {31,0x7FFFF6F2}, + [I(146,87)] = {29,0x1FFFEBF2}, + [I(147,87)] = {30,0x3FFFF072}, + [I(148,87)] = {31,0x7FFFF772}, + [I(149,87)] = {30,0x3FFFF0F2}, + [I(150,87)] = {30,0x3FFFF172}, + [I(151,87)] = {30,0x3FFFF1F2}, + [I(152,87)] = {30,0x3FFFF272}, + [I(153,87)] = {28,0xFFFEE72}, + [I(154,87)] = {29,0x1FFFEC72}, + [I(155,87)] = {30,0x3FFFF2F2}, + [I(156,87)] = {29,0x1FFFECF2}, + [I(157,87)] = {30,0x3FFFF372}, + [I(158,87)] = {30,0x3FFFF3F2}, + [I(159,87)] = {31,0x7FFFF7F2}, + [I(160,87)] = {29,0x1FFFED72}, + [I(161,87)] = {28,0xFFFEEF2}, + [I(162,87)] = {27,0x7FFF4F2}, + [I(163,87)] = {29,0x1FFFEDF2}, + [I(164,87)] = {29,0x1FFFEE72}, + [I(165,87)] = {30,0x3FFFF472}, + [I(166,87)] = {30,0x3FFFF4F2}, + [I(167,87)] = {28,0xFFFEF72}, + [I(168,87)] = {30,0x3FFFF572}, + [I(169,87)] = {29,0x1FFFEEF2}, + [I(170,87)] = {29,0x1FFFEF72}, + [I(171,87)] = {31,0x7FFFF872}, + [I(172,87)] = {28,0xFFFEFF2}, + [I(173,87)] = {29,0x1FFFEFF2}, + [I(174,87)] = {30,0x3FFFF5F2}, + [I(175,87)] = {30,0x3FFFF672}, + [I(176,87)] = {28,0xFFFF072}, + [I(177,87)] = {28,0xFFFF0F2}, + [I(178,87)] = {29,0x1FFFF072}, + [I(179,87)] = {28,0xFFFF172}, + [I(180,87)] = {30,0x3FFFF6F2}, + [I(181,87)] = {29,0x1FFFF0F2}, + [I(182,87)] = {30,0x3FFFF772}, + [I(183,87)] = {30,0x3FFFF7F2}, + [I(184,87)] = {27,0x7FFF572}, + [I(185,87)] = {29,0x1FFFF172}, + [I(186,87)] = {29,0x1FFFF1F2}, + [I(187,87)] = {29,0x1FFFF272}, + [I(188,87)] = {30,0x3FFFF872}, + [I(189,87)] = {29,0x1FFFF2F2}, + [I(190,87)] = {29,0x1FFFF372}, + [I(191,87)] = {30,0x3FFFF8F2}, + [I(192,87)] = {64,0}, + [I(193,87)] = {64,0}, + [I(194,87)] = {27,0x7FFF5F2}, + [I(195,87)] = {26,0x3FFF8F2}, + [I(196,87)] = {29,0x1FFFF3F2}, + [I(197,87)] = {30,0x3FFFF972}, + [I(198,87)] = {29,0x1FFFF472}, + [I(199,87)] = {X32,0xFFFFF672}, + [I(200,87)] = {64,0}, + [I(201,87)] = {64,0}, + [I(202,87)] = {64,0}, + [I(203,87)] = {64,0}, + [I(204,87)] = {64,0}, + [I(205,87)] = {64,0}, + [I(206,87)] = {31,0x7FFFF8F2}, + [I(207,87)] = {X32,0xFFFFF6F2}, + [I(208,87)] = {26,0x3FFF972}, + [I(209,87)] = {28,0xFFFF1F2}, + [I(210,87)] = {64,0}, + [I(211,87)] = {64,0}, + [I(212,87)] = {64,0}, + [I(213,87)] = {64,0}, + [I(214,87)] = {64,0}, + [I(215,87)] = {31,0x7FFFF972}, + [I(216,87)] = {28,0xFFFF272}, + [I(217,87)] = {28,0xFFFF2F2}, + [I(218,87)] = {64,0}, + [I(219,87)] = {64,0}, + [I(220,87)] = {64,0}, + [I(221,87)] = {64,0}, + [I(222,87)] = {64,0}, + [I(223,87)] = {64,0}, + [I(224,87)] = {27,0x7FFF672}, + [I(225,87)] = {31,0x7FFFF9F2}, + [I(226,87)] = {27,0x7FFF6F2}, + [I(227,87)] = {28,0xFFFF372}, + [I(228,87)] = {29,0x1FFFF4F2}, + [I(229,87)] = {28,0xFFFF3F2}, + [I(230,87)] = {28,0xFFFF472}, + [I(231,87)] = {30,0x3FFFF9F2}, + [I(232,87)] = {29,0x1FFFF572}, + [I(233,87)] = {29,0x1FFFF5F2}, + [I(234,87)] = {X32,0xFFFFF772}, + [I(235,87)] = {X32,0xFFFFF7F2}, + [I(236,87)] = {31,0x7FFFFA72}, + [I(237,87)] = {31,0x7FFFFAF2}, + [I(238,87)] = {64,0}, + [I(239,87)] = {30,0x3FFFFA72}, + [I(240,87)] = {64,0}, + [I(241,87)] = {64,0}, + [I(242,87)] = {64,0}, + [I(243,87)] = {64,0}, + [I(244,87)] = {64,0}, + [I(245,87)] = {64,0}, + [I(246,87)] = {64,0}, + [I(247,87)] = {64,0}, + [I(248,87)] = {64,0}, + [I(249,87)] = {64,0}, + [I(250,87)] = {64,0}, + [I(251,87)] = {64,0}, + [I(252,87)] = {64,0}, + [I(253,87)] = {64,0}, + [I(254,87)] = {64,0}, + [I(255,87)] = {64,0}, + [I(0,88)] = {21,0x1FF8FC}, + [I(1,88)] = {31,0x7FFFD8FC}, + [I(2,88)] = {64,0}, + [I(3,88)] = {64,0}, + [I(4,88)] = {64,0}, + [I(5,88)] = {64,0}, + [I(6,88)] = {64,0}, + [I(7,88)] = {64,0}, + [I(8,88)] = {64,0}, + [I(9,88)] = {X32,0xFFFFEAFC}, + [I(10,88)] = {64,0}, + [I(11,88)] = {64,0}, + [I(12,88)] = {64,0}, + [I(13,88)] = {64,0}, + [I(14,88)] = {64,0}, + [I(15,88)] = {64,0}, + [I(16,88)] = {64,0}, + [I(17,88)] = {64,0}, + [I(18,88)] = {64,0}, + [I(19,88)] = {64,0}, + [I(20,88)] = {64,0}, + [I(21,88)] = {64,0}, + [I(22,88)] = {64,0}, + [I(23,88)] = {64,0}, + [I(24,88)] = {64,0}, + [I(25,88)] = {64,0}, + [I(26,88)] = {64,0}, + [I(27,88)] = {64,0}, + [I(28,88)] = {64,0}, + [I(29,88)] = {64,0}, + [I(30,88)] = {64,0}, + [I(31,88)] = {64,0}, + [I(32,88)] = {14,0x14FC}, + [I(33,88)] = {18,0x3F8FC}, + [I(34,88)] = {18,0x3F9FC}, + [I(35,88)] = {20,0xFFAFC}, + [I(36,88)] = {21,0x1FF9FC}, + [I(37,88)] = {14,0x15FC}, + [I(38,88)] = {16,0xF8FC}, + [I(39,88)] = {19,0x7FAFC}, + [I(40,88)] = {18,0x3FAFC}, + [I(41,88)] = {18,0x3FBFC}, + [I(42,88)] = {16,0xF9FC}, + [I(43,88)] = {19,0x7FBFC}, + [I(44,88)] = {16,0xFAFC}, + [I(45,88)] = {14,0x16FC}, + [I(46,88)] = {14,0x17FC}, + [I(47,88)] = {14,0x18FC}, + [I(48,88)] = {13,0xFC}, + [I(49,88)] = {13,0x1FC}, + [I(50,88)] = {13,0x2FC}, + [I(51,88)] = {14,0x19FC}, + [I(52,88)] = {14,0x1AFC}, + [I(53,88)] = {14,0x1BFC}, + [I(54,88)] = {14,0x1CFC}, + [I(55,88)] = {14,0x1DFC}, + [I(56,88)] = {14,0x1EFC}, + [I(57,88)] = {14,0x1FFC}, + [I(58,88)] = {15,0x5CFC}, + [I(59,88)] = {16,0xFBFC}, + [I(60,88)] = {23,0x7FFCFC}, + [I(61,88)] = {14,0x20FC}, + [I(62,88)] = {20,0xFFBFC}, + [I(63,88)] = {18,0x3FCFC}, + [I(64,88)] = {21,0x1FFAFC}, + [I(65,88)] = {14,0x21FC}, + [I(66,88)] = {15,0x5DFC}, + [I(67,88)] = {15,0x5EFC}, + [I(68,88)] = {15,0x5FFC}, + [I(69,88)] = {15,0x60FC}, + [I(70,88)] = {15,0x61FC}, + [I(71,88)] = {15,0x62FC}, + [I(72,88)] = {15,0x63FC}, + [I(73,88)] = {15,0x64FC}, + [I(74,88)] = {15,0x65FC}, + [I(75,88)] = {15,0x66FC}, + [I(76,88)] = {15,0x67FC}, + [I(77,88)] = {15,0x68FC}, + [I(78,88)] = {15,0x69FC}, + [I(79,88)] = {15,0x6AFC}, + [I(80,88)] = {15,0x6BFC}, + [I(81,88)] = {15,0x6CFC}, + [I(82,88)] = {15,0x6DFC}, + [I(83,88)] = {15,0x6EFC}, + [I(84,88)] = {15,0x6FFC}, + [I(85,88)] = {15,0x70FC}, + [I(86,88)] = {15,0x71FC}, + [I(87,88)] = {15,0x72FC}, + [I(88,88)] = {16,0xFCFC}, + [I(89,88)] = {15,0x73FC}, + [I(90,88)] = {16,0xFDFC}, + [I(91,88)] = {21,0x1FFBFC}, + [I(92,88)] = {27,0x7FFF0FC}, + [I(93,88)] = {21,0x1FFCFC}, + [I(94,88)] = {22,0x3FFCFC}, + [I(95,88)] = {14,0x22FC}, + [I(96,88)] = {23,0x7FFDFC}, + [I(97,88)] = {13,0x3FC}, + [I(98,88)] = {14,0x23FC}, + [I(99,88)] = {13,0x4FC}, + [I(100,88)] = {14,0x24FC}, + [I(101,88)] = {13,0x5FC}, + [I(102,88)] = {14,0x25FC}, + [I(103,88)] = {14,0x26FC}, + [I(104,88)] = {14,0x27FC}, + [I(105,88)] = {13,0x6FC}, + [I(106,88)] = {15,0x74FC}, + [I(107,88)] = {15,0x75FC}, + [I(108,88)] = {14,0x28FC}, + [I(109,88)] = {14,0x29FC}, + [I(110,88)] = {14,0x2AFC}, + [I(111,88)] = {13,0x7FC}, + [I(112,88)] = {14,0x2BFC}, + [I(113,88)] = {15,0x76FC}, + [I(114,88)] = {14,0x2CFC}, + [I(115,88)] = {13,0x8FC}, + [I(116,88)] = {13,0x9FC}, + [I(117,88)] = {14,0x2DFC}, + [I(118,88)] = {15,0x77FC}, + [I(119,88)] = {15,0x78FC}, + [I(120,88)] = {15,0x79FC}, + [I(121,88)] = {15,0x7AFC}, + [I(122,88)] = {15,0x7BFC}, + [I(123,88)] = {23,0x7FFEFC}, + [I(124,88)] = {19,0x7FCFC}, + [I(125,88)] = {22,0x3FFDFC}, + [I(126,88)] = {21,0x1FFDFC}, + [I(127,88)] = {64,0}, + [I(128,88)] = {28,0xFFFE6FC}, + [I(129,88)] = {30,0x3FFFD2FC}, + [I(130,88)] = {28,0xFFFE7FC}, + [I(131,88)] = {28,0xFFFE8FC}, + [I(132,88)] = {30,0x3FFFD3FC}, + [I(133,88)] = {30,0x3FFFD4FC}, + [I(134,88)] = {30,0x3FFFD5FC}, + [I(135,88)] = {31,0x7FFFD9FC}, + [I(136,88)] = {30,0x3FFFD6FC}, + [I(137,88)] = {31,0x7FFFDAFC}, + [I(138,88)] = {31,0x7FFFDBFC}, + [I(139,88)] = {31,0x7FFFDCFC}, + [I(140,88)] = {31,0x7FFFDDFC}, + [I(141,88)] = {31,0x7FFFDEFC}, + [I(142,88)] = {X32,0xFFFFEBFC}, + [I(143,88)] = {31,0x7FFFDFFC}, + [I(144,88)] = {X32,0xFFFFECFC}, + [I(145,88)] = {X32,0xFFFFEDFC}, + [I(146,88)] = {30,0x3FFFD7FC}, + [I(147,88)] = {31,0x7FFFE0FC}, + [I(148,88)] = {X32,0xFFFFEEFC}, + [I(149,88)] = {31,0x7FFFE1FC}, + [I(150,88)] = {31,0x7FFFE2FC}, + [I(151,88)] = {31,0x7FFFE3FC}, + [I(152,88)] = {31,0x7FFFE4FC}, + [I(153,88)] = {29,0x1FFFDCFC}, + [I(154,88)] = {30,0x3FFFD8FC}, + [I(155,88)] = {31,0x7FFFE5FC}, + [I(156,88)] = {30,0x3FFFD9FC}, + [I(157,88)] = {31,0x7FFFE6FC}, + [I(158,88)] = {31,0x7FFFE7FC}, + [I(159,88)] = {X32,0xFFFFEFFC}, + [I(160,88)] = {30,0x3FFFDAFC}, + [I(161,88)] = {29,0x1FFFDDFC}, + [I(162,88)] = {28,0xFFFE9FC}, + [I(163,88)] = {30,0x3FFFDBFC}, + [I(164,88)] = {30,0x3FFFDCFC}, + [I(165,88)] = {31,0x7FFFE8FC}, + [I(166,88)] = {31,0x7FFFE9FC}, + [I(167,88)] = {29,0x1FFFDEFC}, + [I(168,88)] = {31,0x7FFFEAFC}, + [I(169,88)] = {30,0x3FFFDDFC}, + [I(170,88)] = {30,0x3FFFDEFC}, + [I(171,88)] = {X32,0xFFFFF0FC}, + [I(172,88)] = {29,0x1FFFDFFC}, + [I(173,88)] = {30,0x3FFFDFFC}, + [I(174,88)] = {31,0x7FFFEBFC}, + [I(175,88)] = {31,0x7FFFECFC}, + [I(176,88)] = {29,0x1FFFE0FC}, + [I(177,88)] = {29,0x1FFFE1FC}, + [I(178,88)] = {30,0x3FFFE0FC}, + [I(179,88)] = {29,0x1FFFE2FC}, + [I(180,88)] = {31,0x7FFFEDFC}, + [I(181,88)] = {30,0x3FFFE1FC}, + [I(182,88)] = {31,0x7FFFEEFC}, + [I(183,88)] = {31,0x7FFFEFFC}, + [I(184,88)] = {28,0xFFFEAFC}, + [I(185,88)] = {30,0x3FFFE2FC}, + [I(186,88)] = {30,0x3FFFE3FC}, + [I(187,88)] = {30,0x3FFFE4FC}, + [I(188,88)] = {31,0x7FFFF0FC}, + [I(189,88)] = {30,0x3FFFE5FC}, + [I(190,88)] = {30,0x3FFFE6FC}, + [I(191,88)] = {31,0x7FFFF1FC}, + [I(192,88)] = {64,0}, + [I(193,88)] = {64,0}, + [I(194,88)] = {28,0xFFFEBFC}, + [I(195,88)] = {27,0x7FFF1FC}, + [I(196,88)] = {30,0x3FFFE7FC}, + [I(197,88)] = {31,0x7FFFF2FC}, + [I(198,88)] = {30,0x3FFFE8FC}, + [I(199,88)] = {64,0}, + [I(200,88)] = {64,0}, + [I(201,88)] = {64,0}, + [I(202,88)] = {64,0}, + [I(203,88)] = {64,0}, + [I(204,88)] = {64,0}, + [I(205,88)] = {64,0}, + [I(206,88)] = {X32,0xFFFFF1FC}, + [I(207,88)] = {64,0}, + [I(208,88)] = {27,0x7FFF2FC}, + [I(209,88)] = {29,0x1FFFE3FC}, + [I(210,88)] = {64,0}, + [I(211,88)] = {64,0}, + [I(212,88)] = {64,0}, + [I(213,88)] = {64,0}, + [I(214,88)] = {64,0}, + [I(215,88)] = {X32,0xFFFFF2FC}, + [I(216,88)] = {29,0x1FFFE4FC}, + [I(217,88)] = {29,0x1FFFE5FC}, + [I(218,88)] = {64,0}, + [I(219,88)] = {64,0}, + [I(220,88)] = {64,0}, + [I(221,88)] = {64,0}, + [I(222,88)] = {64,0}, + [I(223,88)] = {64,0}, + [I(224,88)] = {28,0xFFFECFC}, + [I(225,88)] = {X32,0xFFFFF3FC}, + [I(226,88)] = {28,0xFFFEDFC}, + [I(227,88)] = {29,0x1FFFE6FC}, + [I(228,88)] = {30,0x3FFFE9FC}, + [I(229,88)] = {29,0x1FFFE7FC}, + [I(230,88)] = {29,0x1FFFE8FC}, + [I(231,88)] = {31,0x7FFFF3FC}, + [I(232,88)] = {30,0x3FFFEAFC}, + [I(233,88)] = {30,0x3FFFEBFC}, + [I(234,88)] = {64,0}, + [I(235,88)] = {64,0}, + [I(236,88)] = {X32,0xFFFFF4FC}, + [I(237,88)] = {X32,0xFFFFF5FC}, + [I(238,88)] = {64,0}, + [I(239,88)] = {31,0x7FFFF4FC}, + [I(240,88)] = {64,0}, + [I(241,88)] = {64,0}, + [I(242,88)] = {64,0}, + [I(243,88)] = {64,0}, + [I(244,88)] = {64,0}, + [I(245,88)] = {64,0}, + [I(246,88)] = {64,0}, + [I(247,88)] = {64,0}, + [I(248,88)] = {64,0}, + [I(249,88)] = {64,0}, + [I(250,88)] = {64,0}, + [I(251,88)] = {64,0}, + [I(252,88)] = {64,0}, + [I(253,88)] = {64,0}, + [I(254,88)] = {64,0}, + [I(255,88)] = {64,0}, + [I(0,89)] = {20,0xFFC73}, + [I(1,89)] = {30,0x3FFFEC73}, + [I(2,89)] = {64,0}, + [I(3,89)] = {64,0}, + [I(4,89)] = {64,0}, + [I(5,89)] = {64,0}, + [I(6,89)] = {64,0}, + [I(7,89)] = {64,0}, + [I(8,89)] = {64,0}, + [I(9,89)] = {31,0x7FFFF573}, + [I(10,89)] = {64,0}, + [I(11,89)] = {64,0}, + [I(12,89)] = {64,0}, + [I(13,89)] = {64,0}, + [I(14,89)] = {64,0}, + [I(15,89)] = {64,0}, + [I(16,89)] = {64,0}, + [I(17,89)] = {64,0}, + [I(18,89)] = {64,0}, + [I(19,89)] = {64,0}, + [I(20,89)] = {64,0}, + [I(21,89)] = {64,0}, + [I(22,89)] = {64,0}, + [I(23,89)] = {64,0}, + [I(24,89)] = {64,0}, + [I(25,89)] = {64,0}, + [I(26,89)] = {64,0}, + [I(27,89)] = {64,0}, + [I(28,89)] = {64,0}, + [I(29,89)] = {64,0}, + [I(30,89)] = {64,0}, + [I(31,89)] = {64,0}, + [I(32,89)] = {13,0xA73}, + [I(33,89)] = {17,0x1FC73}, + [I(34,89)] = {17,0x1FCF3}, + [I(35,89)] = {19,0x7FD73}, + [I(36,89)] = {20,0xFFCF3}, + [I(37,89)] = {13,0xAF3}, + [I(38,89)] = {15,0x7C73}, + [I(39,89)] = {18,0x3FD73}, + [I(40,89)] = {17,0x1FD73}, + [I(41,89)] = {17,0x1FDF3}, + [I(42,89)] = {15,0x7CF3}, + [I(43,89)] = {18,0x3FDF3}, + [I(44,89)] = {15,0x7D73}, + [I(45,89)] = {13,0xB73}, + [I(46,89)] = {13,0xBF3}, + [I(47,89)] = {13,0xC73}, + [I(48,89)] = {12,0x73}, + [I(49,89)] = {12,0xF3}, + [I(50,89)] = {12,0x173}, + [I(51,89)] = {13,0xCF3}, + [I(52,89)] = {13,0xD73}, + [I(53,89)] = {13,0xDF3}, + [I(54,89)] = {13,0xE73}, + [I(55,89)] = {13,0xEF3}, + [I(56,89)] = {13,0xF73}, + [I(57,89)] = {13,0xFF3}, + [I(58,89)] = {14,0x2E73}, + [I(59,89)] = {15,0x7DF3}, + [I(60,89)] = {22,0x3FFE73}, + [I(61,89)] = {13,0x1073}, + [I(62,89)] = {19,0x7FDF3}, + [I(63,89)] = {17,0x1FE73}, + [I(64,89)] = {20,0xFFD73}, + [I(65,89)] = {13,0x10F3}, + [I(66,89)] = {14,0x2EF3}, + [I(67,89)] = {14,0x2F73}, + [I(68,89)] = {14,0x2FF3}, + [I(69,89)] = {14,0x3073}, + [I(70,89)] = {14,0x30F3}, + [I(71,89)] = {14,0x3173}, + [I(72,89)] = {14,0x31F3}, + [I(73,89)] = {14,0x3273}, + [I(74,89)] = {14,0x32F3}, + [I(75,89)] = {14,0x3373}, + [I(76,89)] = {14,0x33F3}, + [I(77,89)] = {14,0x3473}, + [I(78,89)] = {14,0x34F3}, + [I(79,89)] = {14,0x3573}, + [I(80,89)] = {14,0x35F3}, + [I(81,89)] = {14,0x3673}, + [I(82,89)] = {14,0x36F3}, + [I(83,89)] = {14,0x3773}, + [I(84,89)] = {14,0x37F3}, + [I(85,89)] = {14,0x3873}, + [I(86,89)] = {14,0x38F3}, + [I(87,89)] = {14,0x3973}, + [I(88,89)] = {15,0x7E73}, + [I(89,89)] = {14,0x39F3}, + [I(90,89)] = {15,0x7EF3}, + [I(91,89)] = {20,0xFFDF3}, + [I(92,89)] = {26,0x3FFF873}, + [I(93,89)] = {20,0xFFE73}, + [I(94,89)] = {21,0x1FFE73}, + [I(95,89)] = {13,0x1173}, + [I(96,89)] = {22,0x3FFEF3}, + [I(97,89)] = {12,0x1F3}, + [I(98,89)] = {13,0x11F3}, + [I(99,89)] = {12,0x273}, + [I(100,89)] = {13,0x1273}, + [I(101,89)] = {12,0x2F3}, + [I(102,89)] = {13,0x12F3}, + [I(103,89)] = {13,0x1373}, + [I(104,89)] = {13,0x13F3}, + [I(105,89)] = {12,0x373}, + [I(106,89)] = {14,0x3A73}, + [I(107,89)] = {14,0x3AF3}, + [I(108,89)] = {13,0x1473}, + [I(109,89)] = {13,0x14F3}, + [I(110,89)] = {13,0x1573}, + [I(111,89)] = {12,0x3F3}, + [I(112,89)] = {13,0x15F3}, + [I(113,89)] = {14,0x3B73}, + [I(114,89)] = {13,0x1673}, + [I(115,89)] = {12,0x473}, + [I(116,89)] = {12,0x4F3}, + [I(117,89)] = {13,0x16F3}, + [I(118,89)] = {14,0x3BF3}, + [I(119,89)] = {14,0x3C73}, + [I(120,89)] = {14,0x3CF3}, + [I(121,89)] = {14,0x3D73}, + [I(122,89)] = {14,0x3DF3}, + [I(123,89)] = {22,0x3FFF73}, + [I(124,89)] = {18,0x3FE73}, + [I(125,89)] = {21,0x1FFEF3}, + [I(126,89)] = {20,0xFFEF3}, + [I(127,89)] = {64,0}, + [I(128,89)] = {27,0x7FFF373}, + [I(129,89)] = {29,0x1FFFE973}, + [I(130,89)] = {27,0x7FFF3F3}, + [I(131,89)] = {27,0x7FFF473}, + [I(132,89)] = {29,0x1FFFE9F3}, + [I(133,89)] = {29,0x1FFFEA73}, + [I(134,89)] = {29,0x1FFFEAF3}, + [I(135,89)] = {30,0x3FFFECF3}, + [I(136,89)] = {29,0x1FFFEB73}, + [I(137,89)] = {30,0x3FFFED73}, + [I(138,89)] = {30,0x3FFFEDF3}, + [I(139,89)] = {30,0x3FFFEE73}, + [I(140,89)] = {30,0x3FFFEEF3}, + [I(141,89)] = {30,0x3FFFEF73}, + [I(142,89)] = {31,0x7FFFF5F3}, + [I(143,89)] = {30,0x3FFFEFF3}, + [I(144,89)] = {31,0x7FFFF673}, + [I(145,89)] = {31,0x7FFFF6F3}, + [I(146,89)] = {29,0x1FFFEBF3}, + [I(147,89)] = {30,0x3FFFF073}, + [I(148,89)] = {31,0x7FFFF773}, + [I(149,89)] = {30,0x3FFFF0F3}, + [I(150,89)] = {30,0x3FFFF173}, + [I(151,89)] = {30,0x3FFFF1F3}, + [I(152,89)] = {30,0x3FFFF273}, + [I(153,89)] = {28,0xFFFEE73}, + [I(154,89)] = {29,0x1FFFEC73}, + [I(155,89)] = {30,0x3FFFF2F3}, + [I(156,89)] = {29,0x1FFFECF3}, + [I(157,89)] = {30,0x3FFFF373}, + [I(158,89)] = {30,0x3FFFF3F3}, + [I(159,89)] = {31,0x7FFFF7F3}, + [I(160,89)] = {29,0x1FFFED73}, + [I(161,89)] = {28,0xFFFEEF3}, + [I(162,89)] = {27,0x7FFF4F3}, + [I(163,89)] = {29,0x1FFFEDF3}, + [I(164,89)] = {29,0x1FFFEE73}, + [I(165,89)] = {30,0x3FFFF473}, + [I(166,89)] = {30,0x3FFFF4F3}, + [I(167,89)] = {28,0xFFFEF73}, + [I(168,89)] = {30,0x3FFFF573}, + [I(169,89)] = {29,0x1FFFEEF3}, + [I(170,89)] = {29,0x1FFFEF73}, + [I(171,89)] = {31,0x7FFFF873}, + [I(172,89)] = {28,0xFFFEFF3}, + [I(173,89)] = {29,0x1FFFEFF3}, + [I(174,89)] = {30,0x3FFFF5F3}, + [I(175,89)] = {30,0x3FFFF673}, + [I(176,89)] = {28,0xFFFF073}, + [I(177,89)] = {28,0xFFFF0F3}, + [I(178,89)] = {29,0x1FFFF073}, + [I(179,89)] = {28,0xFFFF173}, + [I(180,89)] = {30,0x3FFFF6F3}, + [I(181,89)] = {29,0x1FFFF0F3}, + [I(182,89)] = {30,0x3FFFF773}, + [I(183,89)] = {30,0x3FFFF7F3}, + [I(184,89)] = {27,0x7FFF573}, + [I(185,89)] = {29,0x1FFFF173}, + [I(186,89)] = {29,0x1FFFF1F3}, + [I(187,89)] = {29,0x1FFFF273}, + [I(188,89)] = {30,0x3FFFF873}, + [I(189,89)] = {29,0x1FFFF2F3}, + [I(190,89)] = {29,0x1FFFF373}, + [I(191,89)] = {30,0x3FFFF8F3}, + [I(192,89)] = {64,0}, + [I(193,89)] = {64,0}, + [I(194,89)] = {27,0x7FFF5F3}, + [I(195,89)] = {26,0x3FFF8F3}, + [I(196,89)] = {29,0x1FFFF3F3}, + [I(197,89)] = {30,0x3FFFF973}, + [I(198,89)] = {29,0x1FFFF473}, + [I(199,89)] = {X32,0xFFFFF673}, + [I(200,89)] = {64,0}, + [I(201,89)] = {64,0}, + [I(202,89)] = {64,0}, + [I(203,89)] = {64,0}, + [I(204,89)] = {64,0}, + [I(205,89)] = {64,0}, + [I(206,89)] = {31,0x7FFFF8F3}, + [I(207,89)] = {X32,0xFFFFF6F3}, + [I(208,89)] = {26,0x3FFF973}, + [I(209,89)] = {28,0xFFFF1F3}, + [I(210,89)] = {64,0}, + [I(211,89)] = {64,0}, + [I(212,89)] = {64,0}, + [I(213,89)] = {64,0}, + [I(214,89)] = {64,0}, + [I(215,89)] = {31,0x7FFFF973}, + [I(216,89)] = {28,0xFFFF273}, + [I(217,89)] = {28,0xFFFF2F3}, + [I(218,89)] = {64,0}, + [I(219,89)] = {64,0}, + [I(220,89)] = {64,0}, + [I(221,89)] = {64,0}, + [I(222,89)] = {64,0}, + [I(223,89)] = {64,0}, + [I(224,89)] = {27,0x7FFF673}, + [I(225,89)] = {31,0x7FFFF9F3}, + [I(226,89)] = {27,0x7FFF6F3}, + [I(227,89)] = {28,0xFFFF373}, + [I(228,89)] = {29,0x1FFFF4F3}, + [I(229,89)] = {28,0xFFFF3F3}, + [I(230,89)] = {28,0xFFFF473}, + [I(231,89)] = {30,0x3FFFF9F3}, + [I(232,89)] = {29,0x1FFFF573}, + [I(233,89)] = {29,0x1FFFF5F3}, + [I(234,89)] = {X32,0xFFFFF773}, + [I(235,89)] = {X32,0xFFFFF7F3}, + [I(236,89)] = {31,0x7FFFFA73}, + [I(237,89)] = {31,0x7FFFFAF3}, + [I(238,89)] = {64,0}, + [I(239,89)] = {30,0x3FFFFA73}, + [I(240,89)] = {64,0}, + [I(241,89)] = {64,0}, + [I(242,89)] = {64,0}, + [I(243,89)] = {64,0}, + [I(244,89)] = {64,0}, + [I(245,89)] = {64,0}, + [I(246,89)] = {64,0}, + [I(247,89)] = {64,0}, + [I(248,89)] = {64,0}, + [I(249,89)] = {64,0}, + [I(250,89)] = {64,0}, + [I(251,89)] = {64,0}, + [I(252,89)] = {64,0}, + [I(253,89)] = {64,0}, + [I(254,89)] = {64,0}, + [I(255,89)] = {64,0}, + [I(0,90)] = {21,0x1FF8FD}, + [I(1,90)] = {31,0x7FFFD8FD}, + [I(2,90)] = {64,0}, + [I(3,90)] = {64,0}, + [I(4,90)] = {64,0}, + [I(5,90)] = {64,0}, + [I(6,90)] = {64,0}, + [I(7,90)] = {64,0}, + [I(8,90)] = {64,0}, + [I(9,90)] = {X32,0xFFFFEAFD}, + [I(10,90)] = {64,0}, + [I(11,90)] = {64,0}, + [I(12,90)] = {64,0}, + [I(13,90)] = {64,0}, + [I(14,90)] = {64,0}, + [I(15,90)] = {64,0}, + [I(16,90)] = {64,0}, + [I(17,90)] = {64,0}, + [I(18,90)] = {64,0}, + [I(19,90)] = {64,0}, + [I(20,90)] = {64,0}, + [I(21,90)] = {64,0}, + [I(22,90)] = {64,0}, + [I(23,90)] = {64,0}, + [I(24,90)] = {64,0}, + [I(25,90)] = {64,0}, + [I(26,90)] = {64,0}, + [I(27,90)] = {64,0}, + [I(28,90)] = {64,0}, + [I(29,90)] = {64,0}, + [I(30,90)] = {64,0}, + [I(31,90)] = {64,0}, + [I(32,90)] = {14,0x14FD}, + [I(33,90)] = {18,0x3F8FD}, + [I(34,90)] = {18,0x3F9FD}, + [I(35,90)] = {20,0xFFAFD}, + [I(36,90)] = {21,0x1FF9FD}, + [I(37,90)] = {14,0x15FD}, + [I(38,90)] = {16,0xF8FD}, + [I(39,90)] = {19,0x7FAFD}, + [I(40,90)] = {18,0x3FAFD}, + [I(41,90)] = {18,0x3FBFD}, + [I(42,90)] = {16,0xF9FD}, + [I(43,90)] = {19,0x7FBFD}, + [I(44,90)] = {16,0xFAFD}, + [I(45,90)] = {14,0x16FD}, + [I(46,90)] = {14,0x17FD}, + [I(47,90)] = {14,0x18FD}, + [I(48,90)] = {13,0xFD}, + [I(49,90)] = {13,0x1FD}, + [I(50,90)] = {13,0x2FD}, + [I(51,90)] = {14,0x19FD}, + [I(52,90)] = {14,0x1AFD}, + [I(53,90)] = {14,0x1BFD}, + [I(54,90)] = {14,0x1CFD}, + [I(55,90)] = {14,0x1DFD}, + [I(56,90)] = {14,0x1EFD}, + [I(57,90)] = {14,0x1FFD}, + [I(58,90)] = {15,0x5CFD}, + [I(59,90)] = {16,0xFBFD}, + [I(60,90)] = {23,0x7FFCFD}, + [I(61,90)] = {14,0x20FD}, + [I(62,90)] = {20,0xFFBFD}, + [I(63,90)] = {18,0x3FCFD}, + [I(64,90)] = {21,0x1FFAFD}, + [I(65,90)] = {14,0x21FD}, + [I(66,90)] = {15,0x5DFD}, + [I(67,90)] = {15,0x5EFD}, + [I(68,90)] = {15,0x5FFD}, + [I(69,90)] = {15,0x60FD}, + [I(70,90)] = {15,0x61FD}, + [I(71,90)] = {15,0x62FD}, + [I(72,90)] = {15,0x63FD}, + [I(73,90)] = {15,0x64FD}, + [I(74,90)] = {15,0x65FD}, + [I(75,90)] = {15,0x66FD}, + [I(76,90)] = {15,0x67FD}, + [I(77,90)] = {15,0x68FD}, + [I(78,90)] = {15,0x69FD}, + [I(79,90)] = {15,0x6AFD}, + [I(80,90)] = {15,0x6BFD}, + [I(81,90)] = {15,0x6CFD}, + [I(82,90)] = {15,0x6DFD}, + [I(83,90)] = {15,0x6EFD}, + [I(84,90)] = {15,0x6FFD}, + [I(85,90)] = {15,0x70FD}, + [I(86,90)] = {15,0x71FD}, + [I(87,90)] = {15,0x72FD}, + [I(88,90)] = {16,0xFCFD}, + [I(89,90)] = {15,0x73FD}, + [I(90,90)] = {16,0xFDFD}, + [I(91,90)] = {21,0x1FFBFD}, + [I(92,90)] = {27,0x7FFF0FD}, + [I(93,90)] = {21,0x1FFCFD}, + [I(94,90)] = {22,0x3FFCFD}, + [I(95,90)] = {14,0x22FD}, + [I(96,90)] = {23,0x7FFDFD}, + [I(97,90)] = {13,0x3FD}, + [I(98,90)] = {14,0x23FD}, + [I(99,90)] = {13,0x4FD}, + [I(100,90)] = {14,0x24FD}, + [I(101,90)] = {13,0x5FD}, + [I(102,90)] = {14,0x25FD}, + [I(103,90)] = {14,0x26FD}, + [I(104,90)] = {14,0x27FD}, + [I(105,90)] = {13,0x6FD}, + [I(106,90)] = {15,0x74FD}, + [I(107,90)] = {15,0x75FD}, + [I(108,90)] = {14,0x28FD}, + [I(109,90)] = {14,0x29FD}, + [I(110,90)] = {14,0x2AFD}, + [I(111,90)] = {13,0x7FD}, + [I(112,90)] = {14,0x2BFD}, + [I(113,90)] = {15,0x76FD}, + [I(114,90)] = {14,0x2CFD}, + [I(115,90)] = {13,0x8FD}, + [I(116,90)] = {13,0x9FD}, + [I(117,90)] = {14,0x2DFD}, + [I(118,90)] = {15,0x77FD}, + [I(119,90)] = {15,0x78FD}, + [I(120,90)] = {15,0x79FD}, + [I(121,90)] = {15,0x7AFD}, + [I(122,90)] = {15,0x7BFD}, + [I(123,90)] = {23,0x7FFEFD}, + [I(124,90)] = {19,0x7FCFD}, + [I(125,90)] = {22,0x3FFDFD}, + [I(126,90)] = {21,0x1FFDFD}, + [I(127,90)] = {64,0}, + [I(128,90)] = {28,0xFFFE6FD}, + [I(129,90)] = {30,0x3FFFD2FD}, + [I(130,90)] = {28,0xFFFE7FD}, + [I(131,90)] = {28,0xFFFE8FD}, + [I(132,90)] = {30,0x3FFFD3FD}, + [I(133,90)] = {30,0x3FFFD4FD}, + [I(134,90)] = {30,0x3FFFD5FD}, + [I(135,90)] = {31,0x7FFFD9FD}, + [I(136,90)] = {30,0x3FFFD6FD}, + [I(137,90)] = {31,0x7FFFDAFD}, + [I(138,90)] = {31,0x7FFFDBFD}, + [I(139,90)] = {31,0x7FFFDCFD}, + [I(140,90)] = {31,0x7FFFDDFD}, + [I(141,90)] = {31,0x7FFFDEFD}, + [I(142,90)] = {X32,0xFFFFEBFD}, + [I(143,90)] = {31,0x7FFFDFFD}, + [I(144,90)] = {X32,0xFFFFECFD}, + [I(145,90)] = {X32,0xFFFFEDFD}, + [I(146,90)] = {30,0x3FFFD7FD}, + [I(147,90)] = {31,0x7FFFE0FD}, + [I(148,90)] = {X32,0xFFFFEEFD}, + [I(149,90)] = {31,0x7FFFE1FD}, + [I(150,90)] = {31,0x7FFFE2FD}, + [I(151,90)] = {31,0x7FFFE3FD}, + [I(152,90)] = {31,0x7FFFE4FD}, + [I(153,90)] = {29,0x1FFFDCFD}, + [I(154,90)] = {30,0x3FFFD8FD}, + [I(155,90)] = {31,0x7FFFE5FD}, + [I(156,90)] = {30,0x3FFFD9FD}, + [I(157,90)] = {31,0x7FFFE6FD}, + [I(158,90)] = {31,0x7FFFE7FD}, + [I(159,90)] = {X32,0xFFFFEFFD}, + [I(160,90)] = {30,0x3FFFDAFD}, + [I(161,90)] = {29,0x1FFFDDFD}, + [I(162,90)] = {28,0xFFFE9FD}, + [I(163,90)] = {30,0x3FFFDBFD}, + [I(164,90)] = {30,0x3FFFDCFD}, + [I(165,90)] = {31,0x7FFFE8FD}, + [I(166,90)] = {31,0x7FFFE9FD}, + [I(167,90)] = {29,0x1FFFDEFD}, + [I(168,90)] = {31,0x7FFFEAFD}, + [I(169,90)] = {30,0x3FFFDDFD}, + [I(170,90)] = {30,0x3FFFDEFD}, + [I(171,90)] = {X32,0xFFFFF0FD}, + [I(172,90)] = {29,0x1FFFDFFD}, + [I(173,90)] = {30,0x3FFFDFFD}, + [I(174,90)] = {31,0x7FFFEBFD}, + [I(175,90)] = {31,0x7FFFECFD}, + [I(176,90)] = {29,0x1FFFE0FD}, + [I(177,90)] = {29,0x1FFFE1FD}, + [I(178,90)] = {30,0x3FFFE0FD}, + [I(179,90)] = {29,0x1FFFE2FD}, + [I(180,90)] = {31,0x7FFFEDFD}, + [I(181,90)] = {30,0x3FFFE1FD}, + [I(182,90)] = {31,0x7FFFEEFD}, + [I(183,90)] = {31,0x7FFFEFFD}, + [I(184,90)] = {28,0xFFFEAFD}, + [I(185,90)] = {30,0x3FFFE2FD}, + [I(186,90)] = {30,0x3FFFE3FD}, + [I(187,90)] = {30,0x3FFFE4FD}, + [I(188,90)] = {31,0x7FFFF0FD}, + [I(189,90)] = {30,0x3FFFE5FD}, + [I(190,90)] = {30,0x3FFFE6FD}, + [I(191,90)] = {31,0x7FFFF1FD}, + [I(192,90)] = {64,0}, + [I(193,90)] = {64,0}, + [I(194,90)] = {28,0xFFFEBFD}, + [I(195,90)] = {27,0x7FFF1FD}, + [I(196,90)] = {30,0x3FFFE7FD}, + [I(197,90)] = {31,0x7FFFF2FD}, + [I(198,90)] = {30,0x3FFFE8FD}, + [I(199,90)] = {64,0}, + [I(200,90)] = {64,0}, + [I(201,90)] = {64,0}, + [I(202,90)] = {64,0}, + [I(203,90)] = {64,0}, + [I(204,90)] = {64,0}, + [I(205,90)] = {64,0}, + [I(206,90)] = {X32,0xFFFFF1FD}, + [I(207,90)] = {64,0}, + [I(208,90)] = {27,0x7FFF2FD}, + [I(209,90)] = {29,0x1FFFE3FD}, + [I(210,90)] = {64,0}, + [I(211,90)] = {64,0}, + [I(212,90)] = {64,0}, + [I(213,90)] = {64,0}, + [I(214,90)] = {64,0}, + [I(215,90)] = {X32,0xFFFFF2FD}, + [I(216,90)] = {29,0x1FFFE4FD}, + [I(217,90)] = {29,0x1FFFE5FD}, + [I(218,90)] = {64,0}, + [I(219,90)] = {64,0}, + [I(220,90)] = {64,0}, + [I(221,90)] = {64,0}, + [I(222,90)] = {64,0}, + [I(223,90)] = {64,0}, + [I(224,90)] = {28,0xFFFECFD}, + [I(225,90)] = {X32,0xFFFFF3FD}, + [I(226,90)] = {28,0xFFFEDFD}, + [I(227,90)] = {29,0x1FFFE6FD}, + [I(228,90)] = {30,0x3FFFE9FD}, + [I(229,90)] = {29,0x1FFFE7FD}, + [I(230,90)] = {29,0x1FFFE8FD}, + [I(231,90)] = {31,0x7FFFF3FD}, + [I(232,90)] = {30,0x3FFFEAFD}, + [I(233,90)] = {30,0x3FFFEBFD}, + [I(234,90)] = {64,0}, + [I(235,90)] = {64,0}, + [I(236,90)] = {X32,0xFFFFF4FD}, + [I(237,90)] = {X32,0xFFFFF5FD}, + [I(238,90)] = {64,0}, + [I(239,90)] = {31,0x7FFFF4FD}, + [I(240,90)] = {64,0}, + [I(241,90)] = {64,0}, + [I(242,90)] = {64,0}, + [I(243,90)] = {64,0}, + [I(244,90)] = {64,0}, + [I(245,90)] = {64,0}, + [I(246,90)] = {64,0}, + [I(247,90)] = {64,0}, + [I(248,90)] = {64,0}, + [I(249,90)] = {64,0}, + [I(250,90)] = {64,0}, + [I(251,90)] = {64,0}, + [I(252,90)] = {64,0}, + [I(253,90)] = {64,0}, + [I(254,90)] = {64,0}, + [I(255,90)] = {64,0}, + [I(0,91)] = {26,0x3FF1FFB}, + [I(1,91)] = {64,0}, + [I(2,91)] = {64,0}, + [I(3,91)] = {64,0}, + [I(4,91)] = {64,0}, + [I(5,91)] = {64,0}, + [I(6,91)] = {64,0}, + [I(7,91)] = {64,0}, + [I(8,91)] = {64,0}, + [I(9,91)] = {64,0}, + [I(10,91)] = {64,0}, + [I(11,91)] = {64,0}, + [I(12,91)] = {64,0}, + [I(13,91)] = {64,0}, + [I(14,91)] = {64,0}, + [I(15,91)] = {64,0}, + [I(16,91)] = {64,0}, + [I(17,91)] = {64,0}, + [I(18,91)] = {64,0}, + [I(19,91)] = {64,0}, + [I(20,91)] = {64,0}, + [I(21,91)] = {64,0}, + [I(22,91)] = {64,0}, + [I(23,91)] = {64,0}, + [I(24,91)] = {64,0}, + [I(25,91)] = {64,0}, + [I(26,91)] = {64,0}, + [I(27,91)] = {64,0}, + [I(28,91)] = {64,0}, + [I(29,91)] = {64,0}, + [I(30,91)] = {64,0}, + [I(31,91)] = {64,0}, + [I(32,91)] = {19,0x29FFB}, + [I(33,91)] = {23,0x7F1FFB}, + [I(34,91)] = {23,0x7F3FFB}, + [I(35,91)] = {25,0x1FF5FFB}, + [I(36,91)] = {26,0x3FF3FFB}, + [I(37,91)] = {19,0x2BFFB}, + [I(38,91)] = {21,0x1F1FFB}, + [I(39,91)] = {24,0xFF5FFB}, + [I(40,91)] = {23,0x7F5FFB}, + [I(41,91)] = {23,0x7F7FFB}, + [I(42,91)] = {21,0x1F3FFB}, + [I(43,91)] = {24,0xFF7FFB}, + [I(44,91)] = {21,0x1F5FFB}, + [I(45,91)] = {19,0x2DFFB}, + [I(46,91)] = {19,0x2FFFB}, + [I(47,91)] = {19,0x31FFB}, + [I(48,91)] = {18,0x1FFB}, + [I(49,91)] = {18,0x3FFB}, + [I(50,91)] = {18,0x5FFB}, + [I(51,91)] = {19,0x33FFB}, + [I(52,91)] = {19,0x35FFB}, + [I(53,91)] = {19,0x37FFB}, + [I(54,91)] = {19,0x39FFB}, + [I(55,91)] = {19,0x3BFFB}, + [I(56,91)] = {19,0x3DFFB}, + [I(57,91)] = {19,0x3FFFB}, + [I(58,91)] = {20,0xB9FFB}, + [I(59,91)] = {21,0x1F7FFB}, + [I(60,91)] = {28,0xFFF9FFB}, + [I(61,91)] = {19,0x41FFB}, + [I(62,91)] = {25,0x1FF7FFB}, + [I(63,91)] = {23,0x7F9FFB}, + [I(64,91)] = {26,0x3FF5FFB}, + [I(65,91)] = {19,0x43FFB}, + [I(66,91)] = {20,0xBBFFB}, + [I(67,91)] = {20,0xBDFFB}, + [I(68,91)] = {20,0xBFFFB}, + [I(69,91)] = {20,0xC1FFB}, + [I(70,91)] = {20,0xC3FFB}, + [I(71,91)] = {20,0xC5FFB}, + [I(72,91)] = {20,0xC7FFB}, + [I(73,91)] = {20,0xC9FFB}, + [I(74,91)] = {20,0xCBFFB}, + [I(75,91)] = {20,0xCDFFB}, + [I(76,91)] = {20,0xCFFFB}, + [I(77,91)] = {20,0xD1FFB}, + [I(78,91)] = {20,0xD3FFB}, + [I(79,91)] = {20,0xD5FFB}, + [I(80,91)] = {20,0xD7FFB}, + [I(81,91)] = {20,0xD9FFB}, + [I(82,91)] = {20,0xDBFFB}, + [I(83,91)] = {20,0xDDFFB}, + [I(84,91)] = {20,0xDFFFB}, + [I(85,91)] = {20,0xE1FFB}, + [I(86,91)] = {20,0xE3FFB}, + [I(87,91)] = {20,0xE5FFB}, + [I(88,91)] = {21,0x1F9FFB}, + [I(89,91)] = {20,0xE7FFB}, + [I(90,91)] = {21,0x1FBFFB}, + [I(91,91)] = {26,0x3FF7FFB}, + [I(92,91)] = {X32,0xFFFE1FFB}, + [I(93,91)] = {26,0x3FF9FFB}, + [I(94,91)] = {27,0x7FF9FFB}, + [I(95,91)] = {19,0x45FFB}, + [I(96,91)] = {28,0xFFFBFFB}, + [I(97,91)] = {18,0x7FFB}, + [I(98,91)] = {19,0x47FFB}, + [I(99,91)] = {18,0x9FFB}, + [I(100,91)] = {19,0x49FFB}, + [I(101,91)] = {18,0xBFFB}, + [I(102,91)] = {19,0x4BFFB}, + [I(103,91)] = {19,0x4DFFB}, + [I(104,91)] = {19,0x4FFFB}, + [I(105,91)] = {18,0xDFFB}, + [I(106,91)] = {20,0xE9FFB}, + [I(107,91)] = {20,0xEBFFB}, + [I(108,91)] = {19,0x51FFB}, + [I(109,91)] = {19,0x53FFB}, + [I(110,91)] = {19,0x55FFB}, + [I(111,91)] = {18,0xFFFB}, + [I(112,91)] = {19,0x57FFB}, + [I(113,91)] = {20,0xEDFFB}, + [I(114,91)] = {19,0x59FFB}, + [I(115,91)] = {18,0x11FFB}, + [I(116,91)] = {18,0x13FFB}, + [I(117,91)] = {19,0x5BFFB}, + [I(118,91)] = {20,0xEFFFB}, + [I(119,91)] = {20,0xF1FFB}, + [I(120,91)] = {20,0xF3FFB}, + [I(121,91)] = {20,0xF5FFB}, + [I(122,91)] = {20,0xF7FFB}, + [I(123,91)] = {28,0xFFFDFFB}, + [I(124,91)] = {24,0xFF9FFB}, + [I(125,91)] = {27,0x7FFBFFB}, + [I(126,91)] = {26,0x3FFBFFB}, + [I(127,91)] = {64,0}, + [I(128,91)] = {64,0}, + [I(129,91)] = {64,0}, + [I(130,91)] = {64,0}, + [I(131,91)] = {64,0}, + [I(132,91)] = {64,0}, + [I(133,91)] = {64,0}, + [I(134,91)] = {64,0}, + [I(135,91)] = {64,0}, + [I(136,91)] = {64,0}, + [I(137,91)] = {64,0}, + [I(138,91)] = {64,0}, + [I(139,91)] = {64,0}, + [I(140,91)] = {64,0}, + [I(141,91)] = {64,0}, + [I(142,91)] = {64,0}, + [I(143,91)] = {64,0}, + [I(144,91)] = {64,0}, + [I(145,91)] = {64,0}, + [I(146,91)] = {64,0}, + [I(147,91)] = {64,0}, + [I(148,91)] = {64,0}, + [I(149,91)] = {64,0}, + [I(150,91)] = {64,0}, + [I(151,91)] = {64,0}, + [I(152,91)] = {64,0}, + [I(153,91)] = {64,0}, + [I(154,91)] = {64,0}, + [I(155,91)] = {64,0}, + [I(156,91)] = {64,0}, + [I(157,91)] = {64,0}, + [I(158,91)] = {64,0}, + [I(159,91)] = {64,0}, + [I(160,91)] = {64,0}, + [I(161,91)] = {64,0}, + [I(162,91)] = {64,0}, + [I(163,91)] = {64,0}, + [I(164,91)] = {64,0}, + [I(165,91)] = {64,0}, + [I(166,91)] = {64,0}, + [I(167,91)] = {64,0}, + [I(168,91)] = {64,0}, + [I(169,91)] = {64,0}, + [I(170,91)] = {64,0}, + [I(171,91)] = {64,0}, + [I(172,91)] = {64,0}, + [I(173,91)] = {64,0}, + [I(174,91)] = {64,0}, + [I(175,91)] = {64,0}, + [I(176,91)] = {64,0}, + [I(177,91)] = {64,0}, + [I(178,91)] = {64,0}, + [I(179,91)] = {64,0}, + [I(180,91)] = {64,0}, + [I(181,91)] = {64,0}, + [I(182,91)] = {64,0}, + [I(183,91)] = {64,0}, + [I(184,91)] = {64,0}, + [I(185,91)] = {64,0}, + [I(186,91)] = {64,0}, + [I(187,91)] = {64,0}, + [I(188,91)] = {64,0}, + [I(189,91)] = {64,0}, + [I(190,91)] = {64,0}, + [I(191,91)] = {64,0}, + [I(192,91)] = {64,0}, + [I(193,91)] = {64,0}, + [I(194,91)] = {64,0}, + [I(195,91)] = {X32,0xFFFE3FFB}, + [I(196,91)] = {64,0}, + [I(197,91)] = {64,0}, + [I(198,91)] = {64,0}, + [I(199,91)] = {64,0}, + [I(200,91)] = {64,0}, + [I(201,91)] = {64,0}, + [I(202,91)] = {64,0}, + [I(203,91)] = {64,0}, + [I(204,91)] = {64,0}, + [I(205,91)] = {64,0}, + [I(206,91)] = {64,0}, + [I(207,91)] = {64,0}, + [I(208,91)] = {X32,0xFFFE5FFB}, + [I(209,91)] = {64,0}, + [I(210,91)] = {64,0}, + [I(211,91)] = {64,0}, + [I(212,91)] = {64,0}, + [I(213,91)] = {64,0}, + [I(214,91)] = {64,0}, + [I(215,91)] = {64,0}, + [I(216,91)] = {64,0}, + [I(217,91)] = {64,0}, + [I(218,91)] = {64,0}, + [I(219,91)] = {64,0}, + [I(220,91)] = {64,0}, + [I(221,91)] = {64,0}, + [I(222,91)] = {64,0}, + [I(223,91)] = {64,0}, + [I(224,91)] = {64,0}, + [I(225,91)] = {64,0}, + [I(226,91)] = {64,0}, + [I(227,91)] = {64,0}, + [I(228,91)] = {64,0}, + [I(229,91)] = {64,0}, + [I(230,91)] = {64,0}, + [I(231,91)] = {64,0}, + [I(232,91)] = {64,0}, + [I(233,91)] = {64,0}, + [I(234,91)] = {64,0}, + [I(235,91)] = {64,0}, + [I(236,91)] = {64,0}, + [I(237,91)] = {64,0}, + [I(238,91)] = {64,0}, + [I(239,91)] = {64,0}, + [I(240,91)] = {64,0}, + [I(241,91)] = {64,0}, + [I(242,91)] = {64,0}, + [I(243,91)] = {64,0}, + [I(244,91)] = {64,0}, + [I(245,91)] = {64,0}, + [I(246,91)] = {64,0}, + [I(247,91)] = {64,0}, + [I(248,91)] = {64,0}, + [I(249,91)] = {64,0}, + [I(250,91)] = {64,0}, + [I(251,91)] = {64,0}, + [I(252,91)] = {64,0}, + [I(253,91)] = {64,0}, + [I(254,91)] = {64,0}, + [I(255,91)] = {64,0}, + [I(0,92)] = {X32,0xFFC7FFF0}, + [I(1,92)] = {64,0}, + [I(2,92)] = {64,0}, + [I(3,92)] = {64,0}, + [I(4,92)] = {64,0}, + [I(5,92)] = {64,0}, + [I(6,92)] = {64,0}, + [I(7,92)] = {64,0}, + [I(8,92)] = {64,0}, + [I(9,92)] = {64,0}, + [I(10,92)] = {64,0}, + [I(11,92)] = {64,0}, + [I(12,92)] = {64,0}, + [I(13,92)] = {64,0}, + [I(14,92)] = {64,0}, + [I(15,92)] = {64,0}, + [I(16,92)] = {64,0}, + [I(17,92)] = {64,0}, + [I(18,92)] = {64,0}, + [I(19,92)] = {64,0}, + [I(20,92)] = {64,0}, + [I(21,92)] = {64,0}, + [I(22,92)] = {64,0}, + [I(23,92)] = {64,0}, + [I(24,92)] = {64,0}, + [I(25,92)] = {64,0}, + [I(26,92)] = {64,0}, + [I(27,92)] = {64,0}, + [I(28,92)] = {64,0}, + [I(29,92)] = {64,0}, + [I(30,92)] = {64,0}, + [I(31,92)] = {64,0}, + [I(32,92)] = {25,0xA7FFF0}, + [I(33,92)] = {29,0x1FC7FFF0}, + [I(34,92)] = {29,0x1FCFFFF0}, + [I(35,92)] = {31,0x7FD7FFF0}, + [I(36,92)] = {X32,0xFFCFFFF0}, + [I(37,92)] = {25,0xAFFFF0}, + [I(38,92)] = {27,0x7C7FFF0}, + [I(39,92)] = {30,0x3FD7FFF0}, + [I(40,92)] = {29,0x1FD7FFF0}, + [I(41,92)] = {29,0x1FDFFFF0}, + [I(42,92)] = {27,0x7CFFFF0}, + [I(43,92)] = {30,0x3FDFFFF0}, + [I(44,92)] = {27,0x7D7FFF0}, + [I(45,92)] = {25,0xB7FFF0}, + [I(46,92)] = {25,0xBFFFF0}, + [I(47,92)] = {25,0xC7FFF0}, + [I(48,92)] = {24,0x7FFF0}, + [I(49,92)] = {24,0xFFFF0}, + [I(50,92)] = {24,0x17FFF0}, + [I(51,92)] = {25,0xCFFFF0}, + [I(52,92)] = {25,0xD7FFF0}, + [I(53,92)] = {25,0xDFFFF0}, + [I(54,92)] = {25,0xE7FFF0}, + [I(55,92)] = {25,0xEFFFF0}, + [I(56,92)] = {25,0xF7FFF0}, + [I(57,92)] = {25,0xFFFFF0}, + [I(58,92)] = {26,0x2E7FFF0}, + [I(59,92)] = {27,0x7DFFFF0}, + [I(60,92)] = {64,0}, + [I(61,92)] = {25,0x107FFF0}, + [I(62,92)] = {31,0x7FDFFFF0}, + [I(63,92)] = {29,0x1FE7FFF0}, + [I(64,92)] = {X32,0xFFD7FFF0}, + [I(65,92)] = {25,0x10FFFF0}, + [I(66,92)] = {26,0x2EFFFF0}, + [I(67,92)] = {26,0x2F7FFF0}, + [I(68,92)] = {26,0x2FFFFF0}, + [I(69,92)] = {26,0x307FFF0}, + [I(70,92)] = {26,0x30FFFF0}, + [I(71,92)] = {26,0x317FFF0}, + [I(72,92)] = {26,0x31FFFF0}, + [I(73,92)] = {26,0x327FFF0}, + [I(74,92)] = {26,0x32FFFF0}, + [I(75,92)] = {26,0x337FFF0}, + [I(76,92)] = {26,0x33FFFF0}, + [I(77,92)] = {26,0x347FFF0}, + [I(78,92)] = {26,0x34FFFF0}, + [I(79,92)] = {26,0x357FFF0}, + [I(80,92)] = {26,0x35FFFF0}, + [I(81,92)] = {26,0x367FFF0}, + [I(82,92)] = {26,0x36FFFF0}, + [I(83,92)] = {26,0x377FFF0}, + [I(84,92)] = {26,0x37FFFF0}, + [I(85,92)] = {26,0x387FFF0}, + [I(86,92)] = {26,0x38FFFF0}, + [I(87,92)] = {26,0x397FFF0}, + [I(88,92)] = {27,0x7E7FFF0}, + [I(89,92)] = {26,0x39FFFF0}, + [I(90,92)] = {27,0x7EFFFF0}, + [I(91,92)] = {X32,0xFFDFFFF0}, + [I(92,92)] = {64,0}, + [I(93,92)] = {X32,0xFFE7FFF0}, + [I(94,92)] = {64,0}, + [I(95,92)] = {25,0x117FFF0}, + [I(96,92)] = {64,0}, + [I(97,92)] = {24,0x1FFFF0}, + [I(98,92)] = {25,0x11FFFF0}, + [I(99,92)] = {24,0x27FFF0}, + [I(100,92)] = {25,0x127FFF0}, + [I(101,92)] = {24,0x2FFFF0}, + [I(102,92)] = {25,0x12FFFF0}, + [I(103,92)] = {25,0x137FFF0}, + [I(104,92)] = {25,0x13FFFF0}, + [I(105,92)] = {24,0x37FFF0}, + [I(106,92)] = {26,0x3A7FFF0}, + [I(107,92)] = {26,0x3AFFFF0}, + [I(108,92)] = {25,0x147FFF0}, + [I(109,92)] = {25,0x14FFFF0}, + [I(110,92)] = {25,0x157FFF0}, + [I(111,92)] = {24,0x3FFFF0}, + [I(112,92)] = {25,0x15FFFF0}, + [I(113,92)] = {26,0x3B7FFF0}, + [I(114,92)] = {25,0x167FFF0}, + [I(115,92)] = {24,0x47FFF0}, + [I(116,92)] = {24,0x4FFFF0}, + [I(117,92)] = {25,0x16FFFF0}, + [I(118,92)] = {26,0x3BFFFF0}, + [I(119,92)] = {26,0x3C7FFF0}, + [I(120,92)] = {26,0x3CFFFF0}, + [I(121,92)] = {26,0x3D7FFF0}, + [I(122,92)] = {26,0x3DFFFF0}, + [I(123,92)] = {64,0}, + [I(124,92)] = {30,0x3FE7FFF0}, + [I(125,92)] = {64,0}, + [I(126,92)] = {X32,0xFFEFFFF0}, + [I(127,92)] = {64,0}, + [I(128,92)] = {64,0}, + [I(129,92)] = {64,0}, + [I(130,92)] = {64,0}, + [I(131,92)] = {64,0}, + [I(132,92)] = {64,0}, + [I(133,92)] = {64,0}, + [I(134,92)] = {64,0}, + [I(135,92)] = {64,0}, + [I(136,92)] = {64,0}, + [I(137,92)] = {64,0}, + [I(138,92)] = {64,0}, + [I(139,92)] = {64,0}, + [I(140,92)] = {64,0}, + [I(141,92)] = {64,0}, + [I(142,92)] = {64,0}, + [I(143,92)] = {64,0}, + [I(144,92)] = {64,0}, + [I(145,92)] = {64,0}, + [I(146,92)] = {64,0}, + [I(147,92)] = {64,0}, + [I(148,92)] = {64,0}, + [I(149,92)] = {64,0}, + [I(150,92)] = {64,0}, + [I(151,92)] = {64,0}, + [I(152,92)] = {64,0}, + [I(153,92)] = {64,0}, + [I(154,92)] = {64,0}, + [I(155,92)] = {64,0}, + [I(156,92)] = {64,0}, + [I(157,92)] = {64,0}, + [I(158,92)] = {64,0}, + [I(159,92)] = {64,0}, + [I(160,92)] = {64,0}, + [I(161,92)] = {64,0}, + [I(162,92)] = {64,0}, + [I(163,92)] = {64,0}, + [I(164,92)] = {64,0}, + [I(165,92)] = {64,0}, + [I(166,92)] = {64,0}, + [I(167,92)] = {64,0}, + [I(168,92)] = {64,0}, + [I(169,92)] = {64,0}, + [I(170,92)] = {64,0}, + [I(171,92)] = {64,0}, + [I(172,92)] = {64,0}, + [I(173,92)] = {64,0}, + [I(174,92)] = {64,0}, + [I(175,92)] = {64,0}, + [I(176,92)] = {64,0}, + [I(177,92)] = {64,0}, + [I(178,92)] = {64,0}, + [I(179,92)] = {64,0}, + [I(180,92)] = {64,0}, + [I(181,92)] = {64,0}, + [I(182,92)] = {64,0}, + [I(183,92)] = {64,0}, + [I(184,92)] = {64,0}, + [I(185,92)] = {64,0}, + [I(186,92)] = {64,0}, + [I(187,92)] = {64,0}, + [I(188,92)] = {64,0}, + [I(189,92)] = {64,0}, + [I(190,92)] = {64,0}, + [I(191,92)] = {64,0}, + [I(192,92)] = {64,0}, + [I(193,92)] = {64,0}, + [I(194,92)] = {64,0}, + [I(195,92)] = {64,0}, + [I(196,92)] = {64,0}, + [I(197,92)] = {64,0}, + [I(198,92)] = {64,0}, + [I(199,92)] = {64,0}, + [I(200,92)] = {64,0}, + [I(201,92)] = {64,0}, + [I(202,92)] = {64,0}, + [I(203,92)] = {64,0}, + [I(204,92)] = {64,0}, + [I(205,92)] = {64,0}, + [I(206,92)] = {64,0}, + [I(207,92)] = {64,0}, + [I(208,92)] = {64,0}, + [I(209,92)] = {64,0}, + [I(210,92)] = {64,0}, + [I(211,92)] = {64,0}, + [I(212,92)] = {64,0}, + [I(213,92)] = {64,0}, + [I(214,92)] = {64,0}, + [I(215,92)] = {64,0}, + [I(216,92)] = {64,0}, + [I(217,92)] = {64,0}, + [I(218,92)] = {64,0}, + [I(219,92)] = {64,0}, + [I(220,92)] = {64,0}, + [I(221,92)] = {64,0}, + [I(222,92)] = {64,0}, + [I(223,92)] = {64,0}, + [I(224,92)] = {64,0}, + [I(225,92)] = {64,0}, + [I(226,92)] = {64,0}, + [I(227,92)] = {64,0}, + [I(228,92)] = {64,0}, + [I(229,92)] = {64,0}, + [I(230,92)] = {64,0}, + [I(231,92)] = {64,0}, + [I(232,92)] = {64,0}, + [I(233,92)] = {64,0}, + [I(234,92)] = {64,0}, + [I(235,92)] = {64,0}, + [I(236,92)] = {64,0}, + [I(237,92)] = {64,0}, + [I(238,92)] = {64,0}, + [I(239,92)] = {64,0}, + [I(240,92)] = {64,0}, + [I(241,92)] = {64,0}, + [I(242,92)] = {64,0}, + [I(243,92)] = {64,0}, + [I(244,92)] = {64,0}, + [I(245,92)] = {64,0}, + [I(246,92)] = {64,0}, + [I(247,92)] = {64,0}, + [I(248,92)] = {64,0}, + [I(249,92)] = {64,0}, + [I(250,92)] = {64,0}, + [I(251,92)] = {64,0}, + [I(252,92)] = {64,0}, + [I(253,92)] = {64,0}, + [I(254,92)] = {64,0}, + [I(255,92)] = {64,0}, + [I(0,93)] = {26,0x3FF1FFC}, + [I(1,93)] = {64,0}, + [I(2,93)] = {64,0}, + [I(3,93)] = {64,0}, + [I(4,93)] = {64,0}, + [I(5,93)] = {64,0}, + [I(6,93)] = {64,0}, + [I(7,93)] = {64,0}, + [I(8,93)] = {64,0}, + [I(9,93)] = {64,0}, + [I(10,93)] = {64,0}, + [I(11,93)] = {64,0}, + [I(12,93)] = {64,0}, + [I(13,93)] = {64,0}, + [I(14,93)] = {64,0}, + [I(15,93)] = {64,0}, + [I(16,93)] = {64,0}, + [I(17,93)] = {64,0}, + [I(18,93)] = {64,0}, + [I(19,93)] = {64,0}, + [I(20,93)] = {64,0}, + [I(21,93)] = {64,0}, + [I(22,93)] = {64,0}, + [I(23,93)] = {64,0}, + [I(24,93)] = {64,0}, + [I(25,93)] = {64,0}, + [I(26,93)] = {64,0}, + [I(27,93)] = {64,0}, + [I(28,93)] = {64,0}, + [I(29,93)] = {64,0}, + [I(30,93)] = {64,0}, + [I(31,93)] = {64,0}, + [I(32,93)] = {19,0x29FFC}, + [I(33,93)] = {23,0x7F1FFC}, + [I(34,93)] = {23,0x7F3FFC}, + [I(35,93)] = {25,0x1FF5FFC}, + [I(36,93)] = {26,0x3FF3FFC}, + [I(37,93)] = {19,0x2BFFC}, + [I(38,93)] = {21,0x1F1FFC}, + [I(39,93)] = {24,0xFF5FFC}, + [I(40,93)] = {23,0x7F5FFC}, + [I(41,93)] = {23,0x7F7FFC}, + [I(42,93)] = {21,0x1F3FFC}, + [I(43,93)] = {24,0xFF7FFC}, + [I(44,93)] = {21,0x1F5FFC}, + [I(45,93)] = {19,0x2DFFC}, + [I(46,93)] = {19,0x2FFFC}, + [I(47,93)] = {19,0x31FFC}, + [I(48,93)] = {18,0x1FFC}, + [I(49,93)] = {18,0x3FFC}, + [I(50,93)] = {18,0x5FFC}, + [I(51,93)] = {19,0x33FFC}, + [I(52,93)] = {19,0x35FFC}, + [I(53,93)] = {19,0x37FFC}, + [I(54,93)] = {19,0x39FFC}, + [I(55,93)] = {19,0x3BFFC}, + [I(56,93)] = {19,0x3DFFC}, + [I(57,93)] = {19,0x3FFFC}, + [I(58,93)] = {20,0xB9FFC}, + [I(59,93)] = {21,0x1F7FFC}, + [I(60,93)] = {28,0xFFF9FFC}, + [I(61,93)] = {19,0x41FFC}, + [I(62,93)] = {25,0x1FF7FFC}, + [I(63,93)] = {23,0x7F9FFC}, + [I(64,93)] = {26,0x3FF5FFC}, + [I(65,93)] = {19,0x43FFC}, + [I(66,93)] = {20,0xBBFFC}, + [I(67,93)] = {20,0xBDFFC}, + [I(68,93)] = {20,0xBFFFC}, + [I(69,93)] = {20,0xC1FFC}, + [I(70,93)] = {20,0xC3FFC}, + [I(71,93)] = {20,0xC5FFC}, + [I(72,93)] = {20,0xC7FFC}, + [I(73,93)] = {20,0xC9FFC}, + [I(74,93)] = {20,0xCBFFC}, + [I(75,93)] = {20,0xCDFFC}, + [I(76,93)] = {20,0xCFFFC}, + [I(77,93)] = {20,0xD1FFC}, + [I(78,93)] = {20,0xD3FFC}, + [I(79,93)] = {20,0xD5FFC}, + [I(80,93)] = {20,0xD7FFC}, + [I(81,93)] = {20,0xD9FFC}, + [I(82,93)] = {20,0xDBFFC}, + [I(83,93)] = {20,0xDDFFC}, + [I(84,93)] = {20,0xDFFFC}, + [I(85,93)] = {20,0xE1FFC}, + [I(86,93)] = {20,0xE3FFC}, + [I(87,93)] = {20,0xE5FFC}, + [I(88,93)] = {21,0x1F9FFC}, + [I(89,93)] = {20,0xE7FFC}, + [I(90,93)] = {21,0x1FBFFC}, + [I(91,93)] = {26,0x3FF7FFC}, + [I(92,93)] = {X32,0xFFFE1FFC}, + [I(93,93)] = {26,0x3FF9FFC}, + [I(94,93)] = {27,0x7FF9FFC}, + [I(95,93)] = {19,0x45FFC}, + [I(96,93)] = {28,0xFFFBFFC}, + [I(97,93)] = {18,0x7FFC}, + [I(98,93)] = {19,0x47FFC}, + [I(99,93)] = {18,0x9FFC}, + [I(100,93)] = {19,0x49FFC}, + [I(101,93)] = {18,0xBFFC}, + [I(102,93)] = {19,0x4BFFC}, + [I(103,93)] = {19,0x4DFFC}, + [I(104,93)] = {19,0x4FFFC}, + [I(105,93)] = {18,0xDFFC}, + [I(106,93)] = {20,0xE9FFC}, + [I(107,93)] = {20,0xEBFFC}, + [I(108,93)] = {19,0x51FFC}, + [I(109,93)] = {19,0x53FFC}, + [I(110,93)] = {19,0x55FFC}, + [I(111,93)] = {18,0xFFFC}, + [I(112,93)] = {19,0x57FFC}, + [I(113,93)] = {20,0xEDFFC}, + [I(114,93)] = {19,0x59FFC}, + [I(115,93)] = {18,0x11FFC}, + [I(116,93)] = {18,0x13FFC}, + [I(117,93)] = {19,0x5BFFC}, + [I(118,93)] = {20,0xEFFFC}, + [I(119,93)] = {20,0xF1FFC}, + [I(120,93)] = {20,0xF3FFC}, + [I(121,93)] = {20,0xF5FFC}, + [I(122,93)] = {20,0xF7FFC}, + [I(123,93)] = {28,0xFFFDFFC}, + [I(124,93)] = {24,0xFF9FFC}, + [I(125,93)] = {27,0x7FFBFFC}, + [I(126,93)] = {26,0x3FFBFFC}, + [I(127,93)] = {64,0}, + [I(128,93)] = {64,0}, + [I(129,93)] = {64,0}, + [I(130,93)] = {64,0}, + [I(131,93)] = {64,0}, + [I(132,93)] = {64,0}, + [I(133,93)] = {64,0}, + [I(134,93)] = {64,0}, + [I(135,93)] = {64,0}, + [I(136,93)] = {64,0}, + [I(137,93)] = {64,0}, + [I(138,93)] = {64,0}, + [I(139,93)] = {64,0}, + [I(140,93)] = {64,0}, + [I(141,93)] = {64,0}, + [I(142,93)] = {64,0}, + [I(143,93)] = {64,0}, + [I(144,93)] = {64,0}, + [I(145,93)] = {64,0}, + [I(146,93)] = {64,0}, + [I(147,93)] = {64,0}, + [I(148,93)] = {64,0}, + [I(149,93)] = {64,0}, + [I(150,93)] = {64,0}, + [I(151,93)] = {64,0}, + [I(152,93)] = {64,0}, + [I(153,93)] = {64,0}, + [I(154,93)] = {64,0}, + [I(155,93)] = {64,0}, + [I(156,93)] = {64,0}, + [I(157,93)] = {64,0}, + [I(158,93)] = {64,0}, + [I(159,93)] = {64,0}, + [I(160,93)] = {64,0}, + [I(161,93)] = {64,0}, + [I(162,93)] = {64,0}, + [I(163,93)] = {64,0}, + [I(164,93)] = {64,0}, + [I(165,93)] = {64,0}, + [I(166,93)] = {64,0}, + [I(167,93)] = {64,0}, + [I(168,93)] = {64,0}, + [I(169,93)] = {64,0}, + [I(170,93)] = {64,0}, + [I(171,93)] = {64,0}, + [I(172,93)] = {64,0}, + [I(173,93)] = {64,0}, + [I(174,93)] = {64,0}, + [I(175,93)] = {64,0}, + [I(176,93)] = {64,0}, + [I(177,93)] = {64,0}, + [I(178,93)] = {64,0}, + [I(179,93)] = {64,0}, + [I(180,93)] = {64,0}, + [I(181,93)] = {64,0}, + [I(182,93)] = {64,0}, + [I(183,93)] = {64,0}, + [I(184,93)] = {64,0}, + [I(185,93)] = {64,0}, + [I(186,93)] = {64,0}, + [I(187,93)] = {64,0}, + [I(188,93)] = {64,0}, + [I(189,93)] = {64,0}, + [I(190,93)] = {64,0}, + [I(191,93)] = {64,0}, + [I(192,93)] = {64,0}, + [I(193,93)] = {64,0}, + [I(194,93)] = {64,0}, + [I(195,93)] = {X32,0xFFFE3FFC}, + [I(196,93)] = {64,0}, + [I(197,93)] = {64,0}, + [I(198,93)] = {64,0}, + [I(199,93)] = {64,0}, + [I(200,93)] = {64,0}, + [I(201,93)] = {64,0}, + [I(202,93)] = {64,0}, + [I(203,93)] = {64,0}, + [I(204,93)] = {64,0}, + [I(205,93)] = {64,0}, + [I(206,93)] = {64,0}, + [I(207,93)] = {64,0}, + [I(208,93)] = {X32,0xFFFE5FFC}, + [I(209,93)] = {64,0}, + [I(210,93)] = {64,0}, + [I(211,93)] = {64,0}, + [I(212,93)] = {64,0}, + [I(213,93)] = {64,0}, + [I(214,93)] = {64,0}, + [I(215,93)] = {64,0}, + [I(216,93)] = {64,0}, + [I(217,93)] = {64,0}, + [I(218,93)] = {64,0}, + [I(219,93)] = {64,0}, + [I(220,93)] = {64,0}, + [I(221,93)] = {64,0}, + [I(222,93)] = {64,0}, + [I(223,93)] = {64,0}, + [I(224,93)] = {64,0}, + [I(225,93)] = {64,0}, + [I(226,93)] = {64,0}, + [I(227,93)] = {64,0}, + [I(228,93)] = {64,0}, + [I(229,93)] = {64,0}, + [I(230,93)] = {64,0}, + [I(231,93)] = {64,0}, + [I(232,93)] = {64,0}, + [I(233,93)] = {64,0}, + [I(234,93)] = {64,0}, + [I(235,93)] = {64,0}, + [I(236,93)] = {64,0}, + [I(237,93)] = {64,0}, + [I(238,93)] = {64,0}, + [I(239,93)] = {64,0}, + [I(240,93)] = {64,0}, + [I(241,93)] = {64,0}, + [I(242,93)] = {64,0}, + [I(243,93)] = {64,0}, + [I(244,93)] = {64,0}, + [I(245,93)] = {64,0}, + [I(246,93)] = {64,0}, + [I(247,93)] = {64,0}, + [I(248,93)] = {64,0}, + [I(249,93)] = {64,0}, + [I(250,93)] = {64,0}, + [I(251,93)] = {64,0}, + [I(252,93)] = {64,0}, + [I(253,93)] = {64,0}, + [I(254,93)] = {64,0}, + [I(255,93)] = {64,0}, + [I(0,94)] = {27,0x7FE3FFC}, + [I(1,94)] = {64,0}, + [I(2,94)] = {64,0}, + [I(3,94)] = {64,0}, + [I(4,94)] = {64,0}, + [I(5,94)] = {64,0}, + [I(6,94)] = {64,0}, + [I(7,94)] = {64,0}, + [I(8,94)] = {64,0}, + [I(9,94)] = {64,0}, + [I(10,94)] = {64,0}, + [I(11,94)] = {64,0}, + [I(12,94)] = {64,0}, + [I(13,94)] = {64,0}, + [I(14,94)] = {64,0}, + [I(15,94)] = {64,0}, + [I(16,94)] = {64,0}, + [I(17,94)] = {64,0}, + [I(18,94)] = {64,0}, + [I(19,94)] = {64,0}, + [I(20,94)] = {64,0}, + [I(21,94)] = {64,0}, + [I(22,94)] = {64,0}, + [I(23,94)] = {64,0}, + [I(24,94)] = {64,0}, + [I(25,94)] = {64,0}, + [I(26,94)] = {64,0}, + [I(27,94)] = {64,0}, + [I(28,94)] = {64,0}, + [I(29,94)] = {64,0}, + [I(30,94)] = {64,0}, + [I(31,94)] = {64,0}, + [I(32,94)] = {20,0x53FFC}, + [I(33,94)] = {24,0xFE3FFC}, + [I(34,94)] = {24,0xFE7FFC}, + [I(35,94)] = {26,0x3FEBFFC}, + [I(36,94)] = {27,0x7FE7FFC}, + [I(37,94)] = {20,0x57FFC}, + [I(38,94)] = {22,0x3E3FFC}, + [I(39,94)] = {25,0x1FEBFFC}, + [I(40,94)] = {24,0xFEBFFC}, + [I(41,94)] = {24,0xFEFFFC}, + [I(42,94)] = {22,0x3E7FFC}, + [I(43,94)] = {25,0x1FEFFFC}, + [I(44,94)] = {22,0x3EBFFC}, + [I(45,94)] = {20,0x5BFFC}, + [I(46,94)] = {20,0x5FFFC}, + [I(47,94)] = {20,0x63FFC}, + [I(48,94)] = {19,0x3FFC}, + [I(49,94)] = {19,0x7FFC}, + [I(50,94)] = {19,0xBFFC}, + [I(51,94)] = {20,0x67FFC}, + [I(52,94)] = {20,0x6BFFC}, + [I(53,94)] = {20,0x6FFFC}, + [I(54,94)] = {20,0x73FFC}, + [I(55,94)] = {20,0x77FFC}, + [I(56,94)] = {20,0x7BFFC}, + [I(57,94)] = {20,0x7FFFC}, + [I(58,94)] = {21,0x173FFC}, + [I(59,94)] = {22,0x3EFFFC}, + [I(60,94)] = {29,0x1FFF3FFC}, + [I(61,94)] = {20,0x83FFC}, + [I(62,94)] = {26,0x3FEFFFC}, + [I(63,94)] = {24,0xFF3FFC}, + [I(64,94)] = {27,0x7FEBFFC}, + [I(65,94)] = {20,0x87FFC}, + [I(66,94)] = {21,0x177FFC}, + [I(67,94)] = {21,0x17BFFC}, + [I(68,94)] = {21,0x17FFFC}, + [I(69,94)] = {21,0x183FFC}, + [I(70,94)] = {21,0x187FFC}, + [I(71,94)] = {21,0x18BFFC}, + [I(72,94)] = {21,0x18FFFC}, + [I(73,94)] = {21,0x193FFC}, + [I(74,94)] = {21,0x197FFC}, + [I(75,94)] = {21,0x19BFFC}, + [I(76,94)] = {21,0x19FFFC}, + [I(77,94)] = {21,0x1A3FFC}, + [I(78,94)] = {21,0x1A7FFC}, + [I(79,94)] = {21,0x1ABFFC}, + [I(80,94)] = {21,0x1AFFFC}, + [I(81,94)] = {21,0x1B3FFC}, + [I(82,94)] = {21,0x1B7FFC}, + [I(83,94)] = {21,0x1BBFFC}, + [I(84,94)] = {21,0x1BFFFC}, + [I(85,94)] = {21,0x1C3FFC}, + [I(86,94)] = {21,0x1C7FFC}, + [I(87,94)] = {21,0x1CBFFC}, + [I(88,94)] = {22,0x3F3FFC}, + [I(89,94)] = {21,0x1CFFFC}, + [I(90,94)] = {22,0x3F7FFC}, + [I(91,94)] = {27,0x7FEFFFC}, + [I(92,94)] = {64,0}, + [I(93,94)] = {27,0x7FF3FFC}, + [I(94,94)] = {28,0xFFF3FFC}, + [I(95,94)] = {20,0x8BFFC}, + [I(96,94)] = {29,0x1FFF7FFC}, + [I(97,94)] = {19,0xFFFC}, + [I(98,94)] = {20,0x8FFFC}, + [I(99,94)] = {19,0x13FFC}, + [I(100,94)] = {20,0x93FFC}, + [I(101,94)] = {19,0x17FFC}, + [I(102,94)] = {20,0x97FFC}, + [I(103,94)] = {20,0x9BFFC}, + [I(104,94)] = {20,0x9FFFC}, + [I(105,94)] = {19,0x1BFFC}, + [I(106,94)] = {21,0x1D3FFC}, + [I(107,94)] = {21,0x1D7FFC}, + [I(108,94)] = {20,0xA3FFC}, + [I(109,94)] = {20,0xA7FFC}, + [I(110,94)] = {20,0xABFFC}, + [I(111,94)] = {19,0x1FFFC}, + [I(112,94)] = {20,0xAFFFC}, + [I(113,94)] = {21,0x1DBFFC}, + [I(114,94)] = {20,0xB3FFC}, + [I(115,94)] = {19,0x23FFC}, + [I(116,94)] = {19,0x27FFC}, + [I(117,94)] = {20,0xB7FFC}, + [I(118,94)] = {21,0x1DFFFC}, + [I(119,94)] = {21,0x1E3FFC}, + [I(120,94)] = {21,0x1E7FFC}, + [I(121,94)] = {21,0x1EBFFC}, + [I(122,94)] = {21,0x1EFFFC}, + [I(123,94)] = {29,0x1FFFBFFC}, + [I(124,94)] = {25,0x1FF3FFC}, + [I(125,94)] = {28,0xFFF7FFC}, + [I(126,94)] = {27,0x7FF7FFC}, + [I(127,94)] = {64,0}, + [I(128,94)] = {64,0}, + [I(129,94)] = {64,0}, + [I(130,94)] = {64,0}, + [I(131,94)] = {64,0}, + [I(132,94)] = {64,0}, + [I(133,94)] = {64,0}, + [I(134,94)] = {64,0}, + [I(135,94)] = {64,0}, + [I(136,94)] = {64,0}, + [I(137,94)] = {64,0}, + [I(138,94)] = {64,0}, + [I(139,94)] = {64,0}, + [I(140,94)] = {64,0}, + [I(141,94)] = {64,0}, + [I(142,94)] = {64,0}, + [I(143,94)] = {64,0}, + [I(144,94)] = {64,0}, + [I(145,94)] = {64,0}, + [I(146,94)] = {64,0}, + [I(147,94)] = {64,0}, + [I(148,94)] = {64,0}, + [I(149,94)] = {64,0}, + [I(150,94)] = {64,0}, + [I(151,94)] = {64,0}, + [I(152,94)] = {64,0}, + [I(153,94)] = {64,0}, + [I(154,94)] = {64,0}, + [I(155,94)] = {64,0}, + [I(156,94)] = {64,0}, + [I(157,94)] = {64,0}, + [I(158,94)] = {64,0}, + [I(159,94)] = {64,0}, + [I(160,94)] = {64,0}, + [I(161,94)] = {64,0}, + [I(162,94)] = {64,0}, + [I(163,94)] = {64,0}, + [I(164,94)] = {64,0}, + [I(165,94)] = {64,0}, + [I(166,94)] = {64,0}, + [I(167,94)] = {64,0}, + [I(168,94)] = {64,0}, + [I(169,94)] = {64,0}, + [I(170,94)] = {64,0}, + [I(171,94)] = {64,0}, + [I(172,94)] = {64,0}, + [I(173,94)] = {64,0}, + [I(174,94)] = {64,0}, + [I(175,94)] = {64,0}, + [I(176,94)] = {64,0}, + [I(177,94)] = {64,0}, + [I(178,94)] = {64,0}, + [I(179,94)] = {64,0}, + [I(180,94)] = {64,0}, + [I(181,94)] = {64,0}, + [I(182,94)] = {64,0}, + [I(183,94)] = {64,0}, + [I(184,94)] = {64,0}, + [I(185,94)] = {64,0}, + [I(186,94)] = {64,0}, + [I(187,94)] = {64,0}, + [I(188,94)] = {64,0}, + [I(189,94)] = {64,0}, + [I(190,94)] = {64,0}, + [I(191,94)] = {64,0}, + [I(192,94)] = {64,0}, + [I(193,94)] = {64,0}, + [I(194,94)] = {64,0}, + [I(195,94)] = {64,0}, + [I(196,94)] = {64,0}, + [I(197,94)] = {64,0}, + [I(198,94)] = {64,0}, + [I(199,94)] = {64,0}, + [I(200,94)] = {64,0}, + [I(201,94)] = {64,0}, + [I(202,94)] = {64,0}, + [I(203,94)] = {64,0}, + [I(204,94)] = {64,0}, + [I(205,94)] = {64,0}, + [I(206,94)] = {64,0}, + [I(207,94)] = {64,0}, + [I(208,94)] = {64,0}, + [I(209,94)] = {64,0}, + [I(210,94)] = {64,0}, + [I(211,94)] = {64,0}, + [I(212,94)] = {64,0}, + [I(213,94)] = {64,0}, + [I(214,94)] = {64,0}, + [I(215,94)] = {64,0}, + [I(216,94)] = {64,0}, + [I(217,94)] = {64,0}, + [I(218,94)] = {64,0}, + [I(219,94)] = {64,0}, + [I(220,94)] = {64,0}, + [I(221,94)] = {64,0}, + [I(222,94)] = {64,0}, + [I(223,94)] = {64,0}, + [I(224,94)] = {64,0}, + [I(225,94)] = {64,0}, + [I(226,94)] = {64,0}, + [I(227,94)] = {64,0}, + [I(228,94)] = {64,0}, + [I(229,94)] = {64,0}, + [I(230,94)] = {64,0}, + [I(231,94)] = {64,0}, + [I(232,94)] = {64,0}, + [I(233,94)] = {64,0}, + [I(234,94)] = {64,0}, + [I(235,94)] = {64,0}, + [I(236,94)] = {64,0}, + [I(237,94)] = {64,0}, + [I(238,94)] = {64,0}, + [I(239,94)] = {64,0}, + [I(240,94)] = {64,0}, + [I(241,94)] = {64,0}, + [I(242,94)] = {64,0}, + [I(243,94)] = {64,0}, + [I(244,94)] = {64,0}, + [I(245,94)] = {64,0}, + [I(246,94)] = {64,0}, + [I(247,94)] = {64,0}, + [I(248,94)] = {64,0}, + [I(249,94)] = {64,0}, + [I(250,94)] = {64,0}, + [I(251,94)] = {64,0}, + [I(252,94)] = {64,0}, + [I(253,94)] = {64,0}, + [I(254,94)] = {64,0}, + [I(255,94)] = {64,0}, + [I(0,95)] = {19,0x7FE22}, + [I(1,95)] = {29,0x1FFFF622}, + [I(2,95)] = {64,0}, + [I(3,95)] = {64,0}, + [I(4,95)] = {64,0}, + [I(5,95)] = {64,0}, + [I(6,95)] = {64,0}, + [I(7,95)] = {64,0}, + [I(8,95)] = {64,0}, + [I(9,95)] = {30,0x3FFFFAA2}, + [I(10,95)] = {64,0}, + [I(11,95)] = {64,0}, + [I(12,95)] = {64,0}, + [I(13,95)] = {64,0}, + [I(14,95)] = {64,0}, + [I(15,95)] = {64,0}, + [I(16,95)] = {64,0}, + [I(17,95)] = {64,0}, + [I(18,95)] = {64,0}, + [I(19,95)] = {64,0}, + [I(20,95)] = {64,0}, + [I(21,95)] = {64,0}, + [I(22,95)] = {64,0}, + [I(23,95)] = {64,0}, + [I(24,95)] = {64,0}, + [I(25,95)] = {64,0}, + [I(26,95)] = {64,0}, + [I(27,95)] = {64,0}, + [I(28,95)] = {64,0}, + [I(29,95)] = {64,0}, + [I(30,95)] = {64,0}, + [I(31,95)] = {64,0}, + [I(32,95)] = {12,0x522}, + [I(33,95)] = {16,0xFE22}, + [I(34,95)] = {16,0xFE62}, + [I(35,95)] = {18,0x3FEA2}, + [I(36,95)] = {19,0x7FE62}, + [I(37,95)] = {12,0x562}, + [I(38,95)] = {14,0x3E22}, + [I(39,95)] = {17,0x1FEA2}, + [I(40,95)] = {16,0xFEA2}, + [I(41,95)] = {16,0xFEE2}, + [I(42,95)] = {14,0x3E62}, + [I(43,95)] = {17,0x1FEE2}, + [I(44,95)] = {14,0x3EA2}, + [I(45,95)] = {12,0x5A2}, + [I(46,95)] = {12,0x5E2}, + [I(47,95)] = {12,0x622}, + [I(48,95)] = {11,0x22}, + [I(49,95)] = {11,0x62}, + [I(50,95)] = {11,0xA2}, + [I(51,95)] = {12,0x662}, + [I(52,95)] = {12,0x6A2}, + [I(53,95)] = {12,0x6E2}, + [I(54,95)] = {12,0x722}, + [I(55,95)] = {12,0x762}, + [I(56,95)] = {12,0x7A2}, + [I(57,95)] = {12,0x7E2}, + [I(58,95)] = {13,0x1722}, + [I(59,95)] = {14,0x3EE2}, + [I(60,95)] = {21,0x1FFF22}, + [I(61,95)] = {12,0x822}, + [I(62,95)] = {18,0x3FEE2}, + [I(63,95)] = {16,0xFF22}, + [I(64,95)] = {19,0x7FEA2}, + [I(65,95)] = {12,0x862}, + [I(66,95)] = {13,0x1762}, + [I(67,95)] = {13,0x17A2}, + [I(68,95)] = {13,0x17E2}, + [I(69,95)] = {13,0x1822}, + [I(70,95)] = {13,0x1862}, + [I(71,95)] = {13,0x18A2}, + [I(72,95)] = {13,0x18E2}, + [I(73,95)] = {13,0x1922}, + [I(74,95)] = {13,0x1962}, + [I(75,95)] = {13,0x19A2}, + [I(76,95)] = {13,0x19E2}, + [I(77,95)] = {13,0x1A22}, + [I(78,95)] = {13,0x1A62}, + [I(79,95)] = {13,0x1AA2}, + [I(80,95)] = {13,0x1AE2}, + [I(81,95)] = {13,0x1B22}, + [I(82,95)] = {13,0x1B62}, + [I(83,95)] = {13,0x1BA2}, + [I(84,95)] = {13,0x1BE2}, + [I(85,95)] = {13,0x1C22}, + [I(86,95)] = {13,0x1C62}, + [I(87,95)] = {13,0x1CA2}, + [I(88,95)] = {14,0x3F22}, + [I(89,95)] = {13,0x1CE2}, + [I(90,95)] = {14,0x3F62}, + [I(91,95)] = {19,0x7FEE2}, + [I(92,95)] = {25,0x1FFFC22}, + [I(93,95)] = {19,0x7FF22}, + [I(94,95)] = {20,0xFFF22}, + [I(95,95)] = {12,0x8A2}, + [I(96,95)] = {21,0x1FFF62}, + [I(97,95)] = {11,0xE2}, + [I(98,95)] = {12,0x8E2}, + [I(99,95)] = {11,0x122}, + [I(100,95)] = {12,0x922}, + [I(101,95)] = {11,0x162}, + [I(102,95)] = {12,0x962}, + [I(103,95)] = {12,0x9A2}, + [I(104,95)] = {12,0x9E2}, + [I(105,95)] = {11,0x1A2}, + [I(106,95)] = {13,0x1D22}, + [I(107,95)] = {13,0x1D62}, + [I(108,95)] = {12,0xA22}, + [I(109,95)] = {12,0xA62}, + [I(110,95)] = {12,0xAA2}, + [I(111,95)] = {11,0x1E2}, + [I(112,95)] = {12,0xAE2}, + [I(113,95)] = {13,0x1DA2}, + [I(114,95)] = {12,0xB22}, + [I(115,95)] = {11,0x222}, + [I(116,95)] = {11,0x262}, + [I(117,95)] = {12,0xB62}, + [I(118,95)] = {13,0x1DE2}, + [I(119,95)] = {13,0x1E22}, + [I(120,95)] = {13,0x1E62}, + [I(121,95)] = {13,0x1EA2}, + [I(122,95)] = {13,0x1EE2}, + [I(123,95)] = {21,0x1FFFA2}, + [I(124,95)] = {17,0x1FF22}, + [I(125,95)] = {20,0xFFF62}, + [I(126,95)] = {19,0x7FF62}, + [I(127,95)] = {64,0}, + [I(128,95)] = {26,0x3FFF9A2}, + [I(129,95)] = {28,0xFFFF4A2}, + [I(130,95)] = {26,0x3FFF9E2}, + [I(131,95)] = {26,0x3FFFA22}, + [I(132,95)] = {28,0xFFFF4E2}, + [I(133,95)] = {28,0xFFFF522}, + [I(134,95)] = {28,0xFFFF562}, + [I(135,95)] = {29,0x1FFFF662}, + [I(136,95)] = {28,0xFFFF5A2}, + [I(137,95)] = {29,0x1FFFF6A2}, + [I(138,95)] = {29,0x1FFFF6E2}, + [I(139,95)] = {29,0x1FFFF722}, + [I(140,95)] = {29,0x1FFFF762}, + [I(141,95)] = {29,0x1FFFF7A2}, + [I(142,95)] = {30,0x3FFFFAE2}, + [I(143,95)] = {29,0x1FFFF7E2}, + [I(144,95)] = {30,0x3FFFFB22}, + [I(145,95)] = {30,0x3FFFFB62}, + [I(146,95)] = {28,0xFFFF5E2}, + [I(147,95)] = {29,0x1FFFF822}, + [I(148,95)] = {30,0x3FFFFBA2}, + [I(149,95)] = {29,0x1FFFF862}, + [I(150,95)] = {29,0x1FFFF8A2}, + [I(151,95)] = {29,0x1FFFF8E2}, + [I(152,95)] = {29,0x1FFFF922}, + [I(153,95)] = {27,0x7FFF722}, + [I(154,95)] = {28,0xFFFF622}, + [I(155,95)] = {29,0x1FFFF962}, + [I(156,95)] = {28,0xFFFF662}, + [I(157,95)] = {29,0x1FFFF9A2}, + [I(158,95)] = {29,0x1FFFF9E2}, + [I(159,95)] = {30,0x3FFFFBE2}, + [I(160,95)] = {28,0xFFFF6A2}, + [I(161,95)] = {27,0x7FFF762}, + [I(162,95)] = {26,0x3FFFA62}, + [I(163,95)] = {28,0xFFFF6E2}, + [I(164,95)] = {28,0xFFFF722}, + [I(165,95)] = {29,0x1FFFFA22}, + [I(166,95)] = {29,0x1FFFFA62}, + [I(167,95)] = {27,0x7FFF7A2}, + [I(168,95)] = {29,0x1FFFFAA2}, + [I(169,95)] = {28,0xFFFF762}, + [I(170,95)] = {28,0xFFFF7A2}, + [I(171,95)] = {30,0x3FFFFC22}, + [I(172,95)] = {27,0x7FFF7E2}, + [I(173,95)] = {28,0xFFFF7E2}, + [I(174,95)] = {29,0x1FFFFAE2}, + [I(175,95)] = {29,0x1FFFFB22}, + [I(176,95)] = {27,0x7FFF822}, + [I(177,95)] = {27,0x7FFF862}, + [I(178,95)] = {28,0xFFFF822}, + [I(179,95)] = {27,0x7FFF8A2}, + [I(180,95)] = {29,0x1FFFFB62}, + [I(181,95)] = {28,0xFFFF862}, + [I(182,95)] = {29,0x1FFFFBA2}, + [I(183,95)] = {29,0x1FFFFBE2}, + [I(184,95)] = {26,0x3FFFAA2}, + [I(185,95)] = {28,0xFFFF8A2}, + [I(186,95)] = {28,0xFFFF8E2}, + [I(187,95)] = {28,0xFFFF922}, + [I(188,95)] = {29,0x1FFFFC22}, + [I(189,95)] = {28,0xFFFF962}, + [I(190,95)] = {28,0xFFFF9A2}, + [I(191,95)] = {29,0x1FFFFC62}, + [I(192,95)] = {X32,0xFFFFF822}, + [I(193,95)] = {X32,0xFFFFF862}, + [I(194,95)] = {26,0x3FFFAE2}, + [I(195,95)] = {25,0x1FFFC62}, + [I(196,95)] = {28,0xFFFF9E2}, + [I(197,95)] = {29,0x1FFFFCA2}, + [I(198,95)] = {28,0xFFFFA22}, + [I(199,95)] = {31,0x7FFFFB22}, + [I(200,95)] = {X32,0xFFFFF8A2}, + [I(201,95)] = {X32,0xFFFFF8E2}, + [I(202,95)] = {X32,0xFFFFF922}, + [I(203,95)] = {64,0}, + [I(204,95)] = {64,0}, + [I(205,95)] = {X32,0xFFFFF962}, + [I(206,95)] = {30,0x3FFFFC62}, + [I(207,95)] = {31,0x7FFFFB62}, + [I(208,95)] = {25,0x1FFFCA2}, + [I(209,95)] = {27,0x7FFF8E2}, + [I(210,95)] = {X32,0xFFFFF9A2}, + [I(211,95)] = {64,0}, + [I(212,95)] = {64,0}, + [I(213,95)] = {X32,0xFFFFF9E2}, + [I(214,95)] = {64,0}, + [I(215,95)] = {30,0x3FFFFCA2}, + [I(216,95)] = {27,0x7FFF922}, + [I(217,95)] = {27,0x7FFF962}, + [I(218,95)] = {X32,0xFFFFFA22}, + [I(219,95)] = {X32,0xFFFFFA62}, + [I(220,95)] = {64,0}, + [I(221,95)] = {64,0}, + [I(222,95)] = {64,0}, + [I(223,95)] = {64,0}, + [I(224,95)] = {26,0x3FFFB22}, + [I(225,95)] = {30,0x3FFFFCE2}, + [I(226,95)] = {26,0x3FFFB62}, + [I(227,95)] = {27,0x7FFF9A2}, + [I(228,95)] = {28,0xFFFFA62}, + [I(229,95)] = {27,0x7FFF9E2}, + [I(230,95)] = {27,0x7FFFA22}, + [I(231,95)] = {29,0x1FFFFCE2}, + [I(232,95)] = {28,0xFFFFAA2}, + [I(233,95)] = {28,0xFFFFAE2}, + [I(234,95)] = {31,0x7FFFFBA2}, + [I(235,95)] = {31,0x7FFFFBE2}, + [I(236,95)] = {30,0x3FFFFD22}, + [I(237,95)] = {30,0x3FFFFD62}, + [I(238,95)] = {X32,0xFFFFFAA2}, + [I(239,95)] = {29,0x1FFFFD22}, + [I(240,95)] = {X32,0xFFFFFAE2}, + [I(241,95)] = {64,0}, + [I(242,95)] = {X32,0xFFFFFB22}, + [I(243,95)] = {X32,0xFFFFFB62}, + [I(244,95)] = {64,0}, + [I(245,95)] = {64,0}, + [I(246,95)] = {64,0}, + [I(247,95)] = {64,0}, + [I(248,95)] = {64,0}, + [I(249,95)] = {64,0}, + [I(250,95)] = {64,0}, + [I(251,95)] = {64,0}, + [I(252,95)] = {64,0}, + [I(253,95)] = {64,0}, + [I(254,95)] = {64,0}, + [I(255,95)] = {X32,0xFFFFFBA2}, + [I(0,96)] = {28,0xFFC7FFD}, + [I(1,96)] = {64,0}, + [I(2,96)] = {64,0}, + [I(3,96)] = {64,0}, + [I(4,96)] = {64,0}, + [I(5,96)] = {64,0}, + [I(6,96)] = {64,0}, + [I(7,96)] = {64,0}, + [I(8,96)] = {64,0}, + [I(9,96)] = {64,0}, + [I(10,96)] = {64,0}, + [I(11,96)] = {64,0}, + [I(12,96)] = {64,0}, + [I(13,96)] = {64,0}, + [I(14,96)] = {64,0}, + [I(15,96)] = {64,0}, + [I(16,96)] = {64,0}, + [I(17,96)] = {64,0}, + [I(18,96)] = {64,0}, + [I(19,96)] = {64,0}, + [I(20,96)] = {64,0}, + [I(21,96)] = {64,0}, + [I(22,96)] = {64,0}, + [I(23,96)] = {64,0}, + [I(24,96)] = {64,0}, + [I(25,96)] = {64,0}, + [I(26,96)] = {64,0}, + [I(27,96)] = {64,0}, + [I(28,96)] = {64,0}, + [I(29,96)] = {64,0}, + [I(30,96)] = {64,0}, + [I(31,96)] = {64,0}, + [I(32,96)] = {21,0xA7FFD}, + [I(33,96)] = {25,0x1FC7FFD}, + [I(34,96)] = {25,0x1FCFFFD}, + [I(35,96)] = {27,0x7FD7FFD}, + [I(36,96)] = {28,0xFFCFFFD}, + [I(37,96)] = {21,0xAFFFD}, + [I(38,96)] = {23,0x7C7FFD}, + [I(39,96)] = {26,0x3FD7FFD}, + [I(40,96)] = {25,0x1FD7FFD}, + [I(41,96)] = {25,0x1FDFFFD}, + [I(42,96)] = {23,0x7CFFFD}, + [I(43,96)] = {26,0x3FDFFFD}, + [I(44,96)] = {23,0x7D7FFD}, + [I(45,96)] = {21,0xB7FFD}, + [I(46,96)] = {21,0xBFFFD}, + [I(47,96)] = {21,0xC7FFD}, + [I(48,96)] = {20,0x7FFD}, + [I(49,96)] = {20,0xFFFD}, + [I(50,96)] = {20,0x17FFD}, + [I(51,96)] = {21,0xCFFFD}, + [I(52,96)] = {21,0xD7FFD}, + [I(53,96)] = {21,0xDFFFD}, + [I(54,96)] = {21,0xE7FFD}, + [I(55,96)] = {21,0xEFFFD}, + [I(56,96)] = {21,0xF7FFD}, + [I(57,96)] = {21,0xFFFFD}, + [I(58,96)] = {22,0x2E7FFD}, + [I(59,96)] = {23,0x7DFFFD}, + [I(60,96)] = {30,0x3FFE7FFD}, + [I(61,96)] = {21,0x107FFD}, + [I(62,96)] = {27,0x7FDFFFD}, + [I(63,96)] = {25,0x1FE7FFD}, + [I(64,96)] = {28,0xFFD7FFD}, + [I(65,96)] = {21,0x10FFFD}, + [I(66,96)] = {22,0x2EFFFD}, + [I(67,96)] = {22,0x2F7FFD}, + [I(68,96)] = {22,0x2FFFFD}, + [I(69,96)] = {22,0x307FFD}, + [I(70,96)] = {22,0x30FFFD}, + [I(71,96)] = {22,0x317FFD}, + [I(72,96)] = {22,0x31FFFD}, + [I(73,96)] = {22,0x327FFD}, + [I(74,96)] = {22,0x32FFFD}, + [I(75,96)] = {22,0x337FFD}, + [I(76,96)] = {22,0x33FFFD}, + [I(77,96)] = {22,0x347FFD}, + [I(78,96)] = {22,0x34FFFD}, + [I(79,96)] = {22,0x357FFD}, + [I(80,96)] = {22,0x35FFFD}, + [I(81,96)] = {22,0x367FFD}, + [I(82,96)] = {22,0x36FFFD}, + [I(83,96)] = {22,0x377FFD}, + [I(84,96)] = {22,0x37FFFD}, + [I(85,96)] = {22,0x387FFD}, + [I(86,96)] = {22,0x38FFFD}, + [I(87,96)] = {22,0x397FFD}, + [I(88,96)] = {23,0x7E7FFD}, + [I(89,96)] = {22,0x39FFFD}, + [I(90,96)] = {23,0x7EFFFD}, + [I(91,96)] = {28,0xFFDFFFD}, + [I(92,96)] = {64,0}, + [I(93,96)] = {28,0xFFE7FFD}, + [I(94,96)] = {29,0x1FFE7FFD}, + [I(95,96)] = {21,0x117FFD}, + [I(96,96)] = {30,0x3FFEFFFD}, + [I(97,96)] = {20,0x1FFFD}, + [I(98,96)] = {21,0x11FFFD}, + [I(99,96)] = {20,0x27FFD}, + [I(100,96)] = {21,0x127FFD}, + [I(101,96)] = {20,0x2FFFD}, + [I(102,96)] = {21,0x12FFFD}, + [I(103,96)] = {21,0x137FFD}, + [I(104,96)] = {21,0x13FFFD}, + [I(105,96)] = {20,0x37FFD}, + [I(106,96)] = {22,0x3A7FFD}, + [I(107,96)] = {22,0x3AFFFD}, + [I(108,96)] = {21,0x147FFD}, + [I(109,96)] = {21,0x14FFFD}, + [I(110,96)] = {21,0x157FFD}, + [I(111,96)] = {20,0x3FFFD}, + [I(112,96)] = {21,0x15FFFD}, + [I(113,96)] = {22,0x3B7FFD}, + [I(114,96)] = {21,0x167FFD}, + [I(115,96)] = {20,0x47FFD}, + [I(116,96)] = {20,0x4FFFD}, + [I(117,96)] = {21,0x16FFFD}, + [I(118,96)] = {22,0x3BFFFD}, + [I(119,96)] = {22,0x3C7FFD}, + [I(120,96)] = {22,0x3CFFFD}, + [I(121,96)] = {22,0x3D7FFD}, + [I(122,96)] = {22,0x3DFFFD}, + [I(123,96)] = {30,0x3FFF7FFD}, + [I(124,96)] = {26,0x3FE7FFD}, + [I(125,96)] = {29,0x1FFEFFFD}, + [I(126,96)] = {28,0xFFEFFFD}, + [I(127,96)] = {64,0}, + [I(128,96)] = {64,0}, + [I(129,96)] = {64,0}, + [I(130,96)] = {64,0}, + [I(131,96)] = {64,0}, + [I(132,96)] = {64,0}, + [I(133,96)] = {64,0}, + [I(134,96)] = {64,0}, + [I(135,96)] = {64,0}, + [I(136,96)] = {64,0}, + [I(137,96)] = {64,0}, + [I(138,96)] = {64,0}, + [I(139,96)] = {64,0}, + [I(140,96)] = {64,0}, + [I(141,96)] = {64,0}, + [I(142,96)] = {64,0}, + [I(143,96)] = {64,0}, + [I(144,96)] = {64,0}, + [I(145,96)] = {64,0}, + [I(146,96)] = {64,0}, + [I(147,96)] = {64,0}, + [I(148,96)] = {64,0}, + [I(149,96)] = {64,0}, + [I(150,96)] = {64,0}, + [I(151,96)] = {64,0}, + [I(152,96)] = {64,0}, + [I(153,96)] = {64,0}, + [I(154,96)] = {64,0}, + [I(155,96)] = {64,0}, + [I(156,96)] = {64,0}, + [I(157,96)] = {64,0}, + [I(158,96)] = {64,0}, + [I(159,96)] = {64,0}, + [I(160,96)] = {64,0}, + [I(161,96)] = {64,0}, + [I(162,96)] = {64,0}, + [I(163,96)] = {64,0}, + [I(164,96)] = {64,0}, + [I(165,96)] = {64,0}, + [I(166,96)] = {64,0}, + [I(167,96)] = {64,0}, + [I(168,96)] = {64,0}, + [I(169,96)] = {64,0}, + [I(170,96)] = {64,0}, + [I(171,96)] = {64,0}, + [I(172,96)] = {64,0}, + [I(173,96)] = {64,0}, + [I(174,96)] = {64,0}, + [I(175,96)] = {64,0}, + [I(176,96)] = {64,0}, + [I(177,96)] = {64,0}, + [I(178,96)] = {64,0}, + [I(179,96)] = {64,0}, + [I(180,96)] = {64,0}, + [I(181,96)] = {64,0}, + [I(182,96)] = {64,0}, + [I(183,96)] = {64,0}, + [I(184,96)] = {64,0}, + [I(185,96)] = {64,0}, + [I(186,96)] = {64,0}, + [I(187,96)] = {64,0}, + [I(188,96)] = {64,0}, + [I(189,96)] = {64,0}, + [I(190,96)] = {64,0}, + [I(191,96)] = {64,0}, + [I(192,96)] = {64,0}, + [I(193,96)] = {64,0}, + [I(194,96)] = {64,0}, + [I(195,96)] = {64,0}, + [I(196,96)] = {64,0}, + [I(197,96)] = {64,0}, + [I(198,96)] = {64,0}, + [I(199,96)] = {64,0}, + [I(200,96)] = {64,0}, + [I(201,96)] = {64,0}, + [I(202,96)] = {64,0}, + [I(203,96)] = {64,0}, + [I(204,96)] = {64,0}, + [I(205,96)] = {64,0}, + [I(206,96)] = {64,0}, + [I(207,96)] = {64,0}, + [I(208,96)] = {64,0}, + [I(209,96)] = {64,0}, + [I(210,96)] = {64,0}, + [I(211,96)] = {64,0}, + [I(212,96)] = {64,0}, + [I(213,96)] = {64,0}, + [I(214,96)] = {64,0}, + [I(215,96)] = {64,0}, + [I(216,96)] = {64,0}, + [I(217,96)] = {64,0}, + [I(218,96)] = {64,0}, + [I(219,96)] = {64,0}, + [I(220,96)] = {64,0}, + [I(221,96)] = {64,0}, + [I(222,96)] = {64,0}, + [I(223,96)] = {64,0}, + [I(224,96)] = {64,0}, + [I(225,96)] = {64,0}, + [I(226,96)] = {64,0}, + [I(227,96)] = {64,0}, + [I(228,96)] = {64,0}, + [I(229,96)] = {64,0}, + [I(230,96)] = {64,0}, + [I(231,96)] = {64,0}, + [I(232,96)] = {64,0}, + [I(233,96)] = {64,0}, + [I(234,96)] = {64,0}, + [I(235,96)] = {64,0}, + [I(236,96)] = {64,0}, + [I(237,96)] = {64,0}, + [I(238,96)] = {64,0}, + [I(239,96)] = {64,0}, + [I(240,96)] = {64,0}, + [I(241,96)] = {64,0}, + [I(242,96)] = {64,0}, + [I(243,96)] = {64,0}, + [I(244,96)] = {64,0}, + [I(245,96)] = {64,0}, + [I(246,96)] = {64,0}, + [I(247,96)] = {64,0}, + [I(248,96)] = {64,0}, + [I(249,96)] = {64,0}, + [I(250,96)] = {64,0}, + [I(251,96)] = {64,0}, + [I(252,96)] = {64,0}, + [I(253,96)] = {64,0}, + [I(254,96)] = {64,0}, + [I(255,96)] = {64,0}, + [I(0,97)] = {18,0x3FF03}, + [I(1,97)] = {28,0xFFFFB03}, + [I(2,97)] = {64,0}, + [I(3,97)] = {64,0}, + [I(4,97)] = {64,0}, + [I(5,97)] = {64,0}, + [I(6,97)] = {64,0}, + [I(7,97)] = {64,0}, + [I(8,97)] = {64,0}, + [I(9,97)] = {29,0x1FFFFD43}, + [I(10,97)] = {64,0}, + [I(11,97)] = {64,0}, + [I(12,97)] = {64,0}, + [I(13,97)] = {64,0}, + [I(14,97)] = {64,0}, + [I(15,97)] = {64,0}, + [I(16,97)] = {64,0}, + [I(17,97)] = {64,0}, + [I(18,97)] = {64,0}, + [I(19,97)] = {64,0}, + [I(20,97)] = {64,0}, + [I(21,97)] = {64,0}, + [I(22,97)] = {64,0}, + [I(23,97)] = {64,0}, + [I(24,97)] = {64,0}, + [I(25,97)] = {64,0}, + [I(26,97)] = {64,0}, + [I(27,97)] = {64,0}, + [I(28,97)] = {64,0}, + [I(29,97)] = {64,0}, + [I(30,97)] = {64,0}, + [I(31,97)] = {64,0}, + [I(32,97)] = {11,0x283}, + [I(33,97)] = {15,0x7F03}, + [I(34,97)] = {15,0x7F23}, + [I(35,97)] = {17,0x1FF43}, + [I(36,97)] = {18,0x3FF23}, + [I(37,97)] = {11,0x2A3}, + [I(38,97)] = {13,0x1F03}, + [I(39,97)] = {16,0xFF43}, + [I(40,97)] = {15,0x7F43}, + [I(41,97)] = {15,0x7F63}, + [I(42,97)] = {13,0x1F23}, + [I(43,97)] = {16,0xFF63}, + [I(44,97)] = {13,0x1F43}, + [I(45,97)] = {11,0x2C3}, + [I(46,97)] = {11,0x2E3}, + [I(47,97)] = {11,0x303}, + [I(48,97)] = {10,0x3}, + [I(49,97)] = {10,0x23}, + [I(50,97)] = {10,0x43}, + [I(51,97)] = {11,0x323}, + [I(52,97)] = {11,0x343}, + [I(53,97)] = {11,0x363}, + [I(54,97)] = {11,0x383}, + [I(55,97)] = {11,0x3A3}, + [I(56,97)] = {11,0x3C3}, + [I(57,97)] = {11,0x3E3}, + [I(58,97)] = {12,0xB83}, + [I(59,97)] = {13,0x1F63}, + [I(60,97)] = {20,0xFFF83}, + [I(61,97)] = {11,0x403}, + [I(62,97)] = {17,0x1FF63}, + [I(63,97)] = {15,0x7F83}, + [I(64,97)] = {18,0x3FF43}, + [I(65,97)] = {11,0x423}, + [I(66,97)] = {12,0xBA3}, + [I(67,97)] = {12,0xBC3}, + [I(68,97)] = {12,0xBE3}, + [I(69,97)] = {12,0xC03}, + [I(70,97)] = {12,0xC23}, + [I(71,97)] = {12,0xC43}, + [I(72,97)] = {12,0xC63}, + [I(73,97)] = {12,0xC83}, + [I(74,97)] = {12,0xCA3}, + [I(75,97)] = {12,0xCC3}, + [I(76,97)] = {12,0xCE3}, + [I(77,97)] = {12,0xD03}, + [I(78,97)] = {12,0xD23}, + [I(79,97)] = {12,0xD43}, + [I(80,97)] = {12,0xD63}, + [I(81,97)] = {12,0xD83}, + [I(82,97)] = {12,0xDA3}, + [I(83,97)] = {12,0xDC3}, + [I(84,97)] = {12,0xDE3}, + [I(85,97)] = {12,0xE03}, + [I(86,97)] = {12,0xE23}, + [I(87,97)] = {12,0xE43}, + [I(88,97)] = {13,0x1F83}, + [I(89,97)] = {12,0xE63}, + [I(90,97)] = {13,0x1FA3}, + [I(91,97)] = {18,0x3FF63}, + [I(92,97)] = {24,0xFFFE03}, + [I(93,97)] = {18,0x3FF83}, + [I(94,97)] = {19,0x7FF83}, + [I(95,97)] = {11,0x443}, + [I(96,97)] = {20,0xFFFA3}, + [I(97,97)] = {10,0x63}, + [I(98,97)] = {11,0x463}, + [I(99,97)] = {10,0x83}, + [I(100,97)] = {11,0x483}, + [I(101,97)] = {10,0xA3}, + [I(102,97)] = {11,0x4A3}, + [I(103,97)] = {11,0x4C3}, + [I(104,97)] = {11,0x4E3}, + [I(105,97)] = {10,0xC3}, + [I(106,97)] = {12,0xE83}, + [I(107,97)] = {12,0xEA3}, + [I(108,97)] = {11,0x503}, + [I(109,97)] = {11,0x523}, + [I(110,97)] = {11,0x543}, + [I(111,97)] = {10,0xE3}, + [I(112,97)] = {11,0x563}, + [I(113,97)] = {12,0xEC3}, + [I(114,97)] = {11,0x583}, + [I(115,97)] = {10,0x103}, + [I(116,97)] = {10,0x123}, + [I(117,97)] = {11,0x5A3}, + [I(118,97)] = {12,0xEE3}, + [I(119,97)] = {12,0xF03}, + [I(120,97)] = {12,0xF23}, + [I(121,97)] = {12,0xF43}, + [I(122,97)] = {12,0xF63}, + [I(123,97)] = {20,0xFFFC3}, + [I(124,97)] = {16,0xFF83}, + [I(125,97)] = {19,0x7FFA3}, + [I(126,97)] = {18,0x3FFA3}, + [I(127,97)] = {64,0}, + [I(128,97)] = {25,0x1FFFCC3}, + [I(129,97)] = {27,0x7FFFA43}, + [I(130,97)] = {25,0x1FFFCE3}, + [I(131,97)] = {25,0x1FFFD03}, + [I(132,97)] = {27,0x7FFFA63}, + [I(133,97)] = {27,0x7FFFA83}, + [I(134,97)] = {27,0x7FFFAA3}, + [I(135,97)] = {28,0xFFFFB23}, + [I(136,97)] = {27,0x7FFFAC3}, + [I(137,97)] = {28,0xFFFFB43}, + [I(138,97)] = {28,0xFFFFB63}, + [I(139,97)] = {28,0xFFFFB83}, + [I(140,97)] = {28,0xFFFFBA3}, + [I(141,97)] = {28,0xFFFFBC3}, + [I(142,97)] = {29,0x1FFFFD63}, + [I(143,97)] = {28,0xFFFFBE3}, + [I(144,97)] = {29,0x1FFFFD83}, + [I(145,97)] = {29,0x1FFFFDA3}, + [I(146,97)] = {27,0x7FFFAE3}, + [I(147,97)] = {28,0xFFFFC03}, + [I(148,97)] = {29,0x1FFFFDC3}, + [I(149,97)] = {28,0xFFFFC23}, + [I(150,97)] = {28,0xFFFFC43}, + [I(151,97)] = {28,0xFFFFC63}, + [I(152,97)] = {28,0xFFFFC83}, + [I(153,97)] = {26,0x3FFFB83}, + [I(154,97)] = {27,0x7FFFB03}, + [I(155,97)] = {28,0xFFFFCA3}, + [I(156,97)] = {27,0x7FFFB23}, + [I(157,97)] = {28,0xFFFFCC3}, + [I(158,97)] = {28,0xFFFFCE3}, + [I(159,97)] = {29,0x1FFFFDE3}, + [I(160,97)] = {27,0x7FFFB43}, + [I(161,97)] = {26,0x3FFFBA3}, + [I(162,97)] = {25,0x1FFFD23}, + [I(163,97)] = {27,0x7FFFB63}, + [I(164,97)] = {27,0x7FFFB83}, + [I(165,97)] = {28,0xFFFFD03}, + [I(166,97)] = {28,0xFFFFD23}, + [I(167,97)] = {26,0x3FFFBC3}, + [I(168,97)] = {28,0xFFFFD43}, + [I(169,97)] = {27,0x7FFFBA3}, + [I(170,97)] = {27,0x7FFFBC3}, + [I(171,97)] = {29,0x1FFFFE03}, + [I(172,97)] = {26,0x3FFFBE3}, + [I(173,97)] = {27,0x7FFFBE3}, + [I(174,97)] = {28,0xFFFFD63}, + [I(175,97)] = {28,0xFFFFD83}, + [I(176,97)] = {26,0x3FFFC03}, + [I(177,97)] = {26,0x3FFFC23}, + [I(178,97)] = {27,0x7FFFC03}, + [I(179,97)] = {26,0x3FFFC43}, + [I(180,97)] = {28,0xFFFFDA3}, + [I(181,97)] = {27,0x7FFFC23}, + [I(182,97)] = {28,0xFFFFDC3}, + [I(183,97)] = {28,0xFFFFDE3}, + [I(184,97)] = {25,0x1FFFD43}, + [I(185,97)] = {27,0x7FFFC43}, + [I(186,97)] = {27,0x7FFFC63}, + [I(187,97)] = {27,0x7FFFC83}, + [I(188,97)] = {28,0xFFFFE03}, + [I(189,97)] = {27,0x7FFFCA3}, + [I(190,97)] = {27,0x7FFFCC3}, + [I(191,97)] = {28,0xFFFFE23}, + [I(192,97)] = {31,0x7FFFFC03}, + [I(193,97)] = {31,0x7FFFFC23}, + [I(194,97)] = {25,0x1FFFD63}, + [I(195,97)] = {24,0xFFFE23}, + [I(196,97)] = {27,0x7FFFCE3}, + [I(197,97)] = {28,0xFFFFE43}, + [I(198,97)] = {27,0x7FFFD03}, + [I(199,97)] = {30,0x3FFFFD83}, + [I(200,97)] = {31,0x7FFFFC43}, + [I(201,97)] = {31,0x7FFFFC63}, + [I(202,97)] = {31,0x7FFFFC83}, + [I(203,97)] = {X32,0xFFFFFBC3}, + [I(204,97)] = {X32,0xFFFFFBE3}, + [I(205,97)] = {31,0x7FFFFCA3}, + [I(206,97)] = {29,0x1FFFFE23}, + [I(207,97)] = {30,0x3FFFFDA3}, + [I(208,97)] = {24,0xFFFE43}, + [I(209,97)] = {26,0x3FFFC63}, + [I(210,97)] = {31,0x7FFFFCC3}, + [I(211,97)] = {X32,0xFFFFFC03}, + [I(212,97)] = {X32,0xFFFFFC23}, + [I(213,97)] = {31,0x7FFFFCE3}, + [I(214,97)] = {X32,0xFFFFFC43}, + [I(215,97)] = {29,0x1FFFFE43}, + [I(216,97)] = {26,0x3FFFC83}, + [I(217,97)] = {26,0x3FFFCA3}, + [I(218,97)] = {31,0x7FFFFD03}, + [I(219,97)] = {31,0x7FFFFD23}, + [I(220,97)] = {64,0}, + [I(221,97)] = {X32,0xFFFFFC63}, + [I(222,97)] = {X32,0xFFFFFC83}, + [I(223,97)] = {X32,0xFFFFFCA3}, + [I(224,97)] = {25,0x1FFFD83}, + [I(225,97)] = {29,0x1FFFFE63}, + [I(226,97)] = {25,0x1FFFDA3}, + [I(227,97)] = {26,0x3FFFCC3}, + [I(228,97)] = {27,0x7FFFD23}, + [I(229,97)] = {26,0x3FFFCE3}, + [I(230,97)] = {26,0x3FFFD03}, + [I(231,97)] = {28,0xFFFFE63}, + [I(232,97)] = {27,0x7FFFD43}, + [I(233,97)] = {27,0x7FFFD63}, + [I(234,97)] = {30,0x3FFFFDC3}, + [I(235,97)] = {30,0x3FFFFDE3}, + [I(236,97)] = {29,0x1FFFFE83}, + [I(237,97)] = {29,0x1FFFFEA3}, + [I(238,97)] = {31,0x7FFFFD43}, + [I(239,97)] = {28,0xFFFFE83}, + [I(240,97)] = {31,0x7FFFFD63}, + [I(241,97)] = {X32,0xFFFFFCC3}, + [I(242,97)] = {31,0x7FFFFD83}, + [I(243,97)] = {31,0x7FFFFDA3}, + [I(244,97)] = {X32,0xFFFFFCE3}, + [I(245,97)] = {X32,0xFFFFFD03}, + [I(246,97)] = {X32,0xFFFFFD23}, + [I(247,97)] = {X32,0xFFFFFD43}, + [I(248,97)] = {X32,0xFFFFFD63}, + [I(249,97)] = {64,0}, + [I(250,97)] = {X32,0xFFFFFD83}, + [I(251,97)] = {X32,0xFFFFFDA3}, + [I(252,97)] = {X32,0xFFFFFDC3}, + [I(253,97)] = {X32,0xFFFFFDE3}, + [I(254,97)] = {X32,0xFFFFFE03}, + [I(255,97)] = {31,0x7FFFFDC3}, + [I(0,98)] = {19,0x7FE23}, + [I(1,98)] = {29,0x1FFFF623}, + [I(2,98)] = {64,0}, + [I(3,98)] = {64,0}, + [I(4,98)] = {64,0}, + [I(5,98)] = {64,0}, + [I(6,98)] = {64,0}, + [I(7,98)] = {64,0}, + [I(8,98)] = {64,0}, + [I(9,98)] = {30,0x3FFFFAA3}, + [I(10,98)] = {64,0}, + [I(11,98)] = {64,0}, + [I(12,98)] = {64,0}, + [I(13,98)] = {64,0}, + [I(14,98)] = {64,0}, + [I(15,98)] = {64,0}, + [I(16,98)] = {64,0}, + [I(17,98)] = {64,0}, + [I(18,98)] = {64,0}, + [I(19,98)] = {64,0}, + [I(20,98)] = {64,0}, + [I(21,98)] = {64,0}, + [I(22,98)] = {64,0}, + [I(23,98)] = {64,0}, + [I(24,98)] = {64,0}, + [I(25,98)] = {64,0}, + [I(26,98)] = {64,0}, + [I(27,98)] = {64,0}, + [I(28,98)] = {64,0}, + [I(29,98)] = {64,0}, + [I(30,98)] = {64,0}, + [I(31,98)] = {64,0}, + [I(32,98)] = {12,0x523}, + [I(33,98)] = {16,0xFE23}, + [I(34,98)] = {16,0xFE63}, + [I(35,98)] = {18,0x3FEA3}, + [I(36,98)] = {19,0x7FE63}, + [I(37,98)] = {12,0x563}, + [I(38,98)] = {14,0x3E23}, + [I(39,98)] = {17,0x1FEA3}, + [I(40,98)] = {16,0xFEA3}, + [I(41,98)] = {16,0xFEE3}, + [I(42,98)] = {14,0x3E63}, + [I(43,98)] = {17,0x1FEE3}, + [I(44,98)] = {14,0x3EA3}, + [I(45,98)] = {12,0x5A3}, + [I(46,98)] = {12,0x5E3}, + [I(47,98)] = {12,0x623}, + [I(48,98)] = {11,0x23}, + [I(49,98)] = {11,0x63}, + [I(50,98)] = {11,0xA3}, + [I(51,98)] = {12,0x663}, + [I(52,98)] = {12,0x6A3}, + [I(53,98)] = {12,0x6E3}, + [I(54,98)] = {12,0x723}, + [I(55,98)] = {12,0x763}, + [I(56,98)] = {12,0x7A3}, + [I(57,98)] = {12,0x7E3}, + [I(58,98)] = {13,0x1723}, + [I(59,98)] = {14,0x3EE3}, + [I(60,98)] = {21,0x1FFF23}, + [I(61,98)] = {12,0x823}, + [I(62,98)] = {18,0x3FEE3}, + [I(63,98)] = {16,0xFF23}, + [I(64,98)] = {19,0x7FEA3}, + [I(65,98)] = {12,0x863}, + [I(66,98)] = {13,0x1763}, + [I(67,98)] = {13,0x17A3}, + [I(68,98)] = {13,0x17E3}, + [I(69,98)] = {13,0x1823}, + [I(70,98)] = {13,0x1863}, + [I(71,98)] = {13,0x18A3}, + [I(72,98)] = {13,0x18E3}, + [I(73,98)] = {13,0x1923}, + [I(74,98)] = {13,0x1963}, + [I(75,98)] = {13,0x19A3}, + [I(76,98)] = {13,0x19E3}, + [I(77,98)] = {13,0x1A23}, + [I(78,98)] = {13,0x1A63}, + [I(79,98)] = {13,0x1AA3}, + [I(80,98)] = {13,0x1AE3}, + [I(81,98)] = {13,0x1B23}, + [I(82,98)] = {13,0x1B63}, + [I(83,98)] = {13,0x1BA3}, + [I(84,98)] = {13,0x1BE3}, + [I(85,98)] = {13,0x1C23}, + [I(86,98)] = {13,0x1C63}, + [I(87,98)] = {13,0x1CA3}, + [I(88,98)] = {14,0x3F23}, + [I(89,98)] = {13,0x1CE3}, + [I(90,98)] = {14,0x3F63}, + [I(91,98)] = {19,0x7FEE3}, + [I(92,98)] = {25,0x1FFFC23}, + [I(93,98)] = {19,0x7FF23}, + [I(94,98)] = {20,0xFFF23}, + [I(95,98)] = {12,0x8A3}, + [I(96,98)] = {21,0x1FFF63}, + [I(97,98)] = {11,0xE3}, + [I(98,98)] = {12,0x8E3}, + [I(99,98)] = {11,0x123}, + [I(100,98)] = {12,0x923}, + [I(101,98)] = {11,0x163}, + [I(102,98)] = {12,0x963}, + [I(103,98)] = {12,0x9A3}, + [I(104,98)] = {12,0x9E3}, + [I(105,98)] = {11,0x1A3}, + [I(106,98)] = {13,0x1D23}, + [I(107,98)] = {13,0x1D63}, + [I(108,98)] = {12,0xA23}, + [I(109,98)] = {12,0xA63}, + [I(110,98)] = {12,0xAA3}, + [I(111,98)] = {11,0x1E3}, + [I(112,98)] = {12,0xAE3}, + [I(113,98)] = {13,0x1DA3}, + [I(114,98)] = {12,0xB23}, + [I(115,98)] = {11,0x223}, + [I(116,98)] = {11,0x263}, + [I(117,98)] = {12,0xB63}, + [I(118,98)] = {13,0x1DE3}, + [I(119,98)] = {13,0x1E23}, + [I(120,98)] = {13,0x1E63}, + [I(121,98)] = {13,0x1EA3}, + [I(122,98)] = {13,0x1EE3}, + [I(123,98)] = {21,0x1FFFA3}, + [I(124,98)] = {17,0x1FF23}, + [I(125,98)] = {20,0xFFF63}, + [I(126,98)] = {19,0x7FF63}, + [I(127,98)] = {64,0}, + [I(128,98)] = {26,0x3FFF9A3}, + [I(129,98)] = {28,0xFFFF4A3}, + [I(130,98)] = {26,0x3FFF9E3}, + [I(131,98)] = {26,0x3FFFA23}, + [I(132,98)] = {28,0xFFFF4E3}, + [I(133,98)] = {28,0xFFFF523}, + [I(134,98)] = {28,0xFFFF563}, + [I(135,98)] = {29,0x1FFFF663}, + [I(136,98)] = {28,0xFFFF5A3}, + [I(137,98)] = {29,0x1FFFF6A3}, + [I(138,98)] = {29,0x1FFFF6E3}, + [I(139,98)] = {29,0x1FFFF723}, + [I(140,98)] = {29,0x1FFFF763}, + [I(141,98)] = {29,0x1FFFF7A3}, + [I(142,98)] = {30,0x3FFFFAE3}, + [I(143,98)] = {29,0x1FFFF7E3}, + [I(144,98)] = {30,0x3FFFFB23}, + [I(145,98)] = {30,0x3FFFFB63}, + [I(146,98)] = {28,0xFFFF5E3}, + [I(147,98)] = {29,0x1FFFF823}, + [I(148,98)] = {30,0x3FFFFBA3}, + [I(149,98)] = {29,0x1FFFF863}, + [I(150,98)] = {29,0x1FFFF8A3}, + [I(151,98)] = {29,0x1FFFF8E3}, + [I(152,98)] = {29,0x1FFFF923}, + [I(153,98)] = {27,0x7FFF723}, + [I(154,98)] = {28,0xFFFF623}, + [I(155,98)] = {29,0x1FFFF963}, + [I(156,98)] = {28,0xFFFF663}, + [I(157,98)] = {29,0x1FFFF9A3}, + [I(158,98)] = {29,0x1FFFF9E3}, + [I(159,98)] = {30,0x3FFFFBE3}, + [I(160,98)] = {28,0xFFFF6A3}, + [I(161,98)] = {27,0x7FFF763}, + [I(162,98)] = {26,0x3FFFA63}, + [I(163,98)] = {28,0xFFFF6E3}, + [I(164,98)] = {28,0xFFFF723}, + [I(165,98)] = {29,0x1FFFFA23}, + [I(166,98)] = {29,0x1FFFFA63}, + [I(167,98)] = {27,0x7FFF7A3}, + [I(168,98)] = {29,0x1FFFFAA3}, + [I(169,98)] = {28,0xFFFF763}, + [I(170,98)] = {28,0xFFFF7A3}, + [I(171,98)] = {30,0x3FFFFC23}, + [I(172,98)] = {27,0x7FFF7E3}, + [I(173,98)] = {28,0xFFFF7E3}, + [I(174,98)] = {29,0x1FFFFAE3}, + [I(175,98)] = {29,0x1FFFFB23}, + [I(176,98)] = {27,0x7FFF823}, + [I(177,98)] = {27,0x7FFF863}, + [I(178,98)] = {28,0xFFFF823}, + [I(179,98)] = {27,0x7FFF8A3}, + [I(180,98)] = {29,0x1FFFFB63}, + [I(181,98)] = {28,0xFFFF863}, + [I(182,98)] = {29,0x1FFFFBA3}, + [I(183,98)] = {29,0x1FFFFBE3}, + [I(184,98)] = {26,0x3FFFAA3}, + [I(185,98)] = {28,0xFFFF8A3}, + [I(186,98)] = {28,0xFFFF8E3}, + [I(187,98)] = {28,0xFFFF923}, + [I(188,98)] = {29,0x1FFFFC23}, + [I(189,98)] = {28,0xFFFF963}, + [I(190,98)] = {28,0xFFFF9A3}, + [I(191,98)] = {29,0x1FFFFC63}, + [I(192,98)] = {X32,0xFFFFF823}, + [I(193,98)] = {X32,0xFFFFF863}, + [I(194,98)] = {26,0x3FFFAE3}, + [I(195,98)] = {25,0x1FFFC63}, + [I(196,98)] = {28,0xFFFF9E3}, + [I(197,98)] = {29,0x1FFFFCA3}, + [I(198,98)] = {28,0xFFFFA23}, + [I(199,98)] = {31,0x7FFFFB23}, + [I(200,98)] = {X32,0xFFFFF8A3}, + [I(201,98)] = {X32,0xFFFFF8E3}, + [I(202,98)] = {X32,0xFFFFF923}, + [I(203,98)] = {64,0}, + [I(204,98)] = {64,0}, + [I(205,98)] = {X32,0xFFFFF963}, + [I(206,98)] = {30,0x3FFFFC63}, + [I(207,98)] = {31,0x7FFFFB63}, + [I(208,98)] = {25,0x1FFFCA3}, + [I(209,98)] = {27,0x7FFF8E3}, + [I(210,98)] = {X32,0xFFFFF9A3}, + [I(211,98)] = {64,0}, + [I(212,98)] = {64,0}, + [I(213,98)] = {X32,0xFFFFF9E3}, + [I(214,98)] = {64,0}, + [I(215,98)] = {30,0x3FFFFCA3}, + [I(216,98)] = {27,0x7FFF923}, + [I(217,98)] = {27,0x7FFF963}, + [I(218,98)] = {X32,0xFFFFFA23}, + [I(219,98)] = {X32,0xFFFFFA63}, + [I(220,98)] = {64,0}, + [I(221,98)] = {64,0}, + [I(222,98)] = {64,0}, + [I(223,98)] = {64,0}, + [I(224,98)] = {26,0x3FFFB23}, + [I(225,98)] = {30,0x3FFFFCE3}, + [I(226,98)] = {26,0x3FFFB63}, + [I(227,98)] = {27,0x7FFF9A3}, + [I(228,98)] = {28,0xFFFFA63}, + [I(229,98)] = {27,0x7FFF9E3}, + [I(230,98)] = {27,0x7FFFA23}, + [I(231,98)] = {29,0x1FFFFCE3}, + [I(232,98)] = {28,0xFFFFAA3}, + [I(233,98)] = {28,0xFFFFAE3}, + [I(234,98)] = {31,0x7FFFFBA3}, + [I(235,98)] = {31,0x7FFFFBE3}, + [I(236,98)] = {30,0x3FFFFD23}, + [I(237,98)] = {30,0x3FFFFD63}, + [I(238,98)] = {X32,0xFFFFFAA3}, + [I(239,98)] = {29,0x1FFFFD23}, + [I(240,98)] = {X32,0xFFFFFAE3}, + [I(241,98)] = {64,0}, + [I(242,98)] = {X32,0xFFFFFB23}, + [I(243,98)] = {X32,0xFFFFFB63}, + [I(244,98)] = {64,0}, + [I(245,98)] = {64,0}, + [I(246,98)] = {64,0}, + [I(247,98)] = {64,0}, + [I(248,98)] = {64,0}, + [I(249,98)] = {64,0}, + [I(250,98)] = {64,0}, + [I(251,98)] = {64,0}, + [I(252,98)] = {64,0}, + [I(253,98)] = {64,0}, + [I(254,98)] = {64,0}, + [I(255,98)] = {X32,0xFFFFFBA3}, + [I(0,99)] = {18,0x3FF04}, + [I(1,99)] = {28,0xFFFFB04}, + [I(2,99)] = {64,0}, + [I(3,99)] = {64,0}, + [I(4,99)] = {64,0}, + [I(5,99)] = {64,0}, + [I(6,99)] = {64,0}, + [I(7,99)] = {64,0}, + [I(8,99)] = {64,0}, + [I(9,99)] = {29,0x1FFFFD44}, + [I(10,99)] = {64,0}, + [I(11,99)] = {64,0}, + [I(12,99)] = {64,0}, + [I(13,99)] = {64,0}, + [I(14,99)] = {64,0}, + [I(15,99)] = {64,0}, + [I(16,99)] = {64,0}, + [I(17,99)] = {64,0}, + [I(18,99)] = {64,0}, + [I(19,99)] = {64,0}, + [I(20,99)] = {64,0}, + [I(21,99)] = {64,0}, + [I(22,99)] = {64,0}, + [I(23,99)] = {64,0}, + [I(24,99)] = {64,0}, + [I(25,99)] = {64,0}, + [I(26,99)] = {64,0}, + [I(27,99)] = {64,0}, + [I(28,99)] = {64,0}, + [I(29,99)] = {64,0}, + [I(30,99)] = {64,0}, + [I(31,99)] = {64,0}, + [I(32,99)] = {11,0x284}, + [I(33,99)] = {15,0x7F04}, + [I(34,99)] = {15,0x7F24}, + [I(35,99)] = {17,0x1FF44}, + [I(36,99)] = {18,0x3FF24}, + [I(37,99)] = {11,0x2A4}, + [I(38,99)] = {13,0x1F04}, + [I(39,99)] = {16,0xFF44}, + [I(40,99)] = {15,0x7F44}, + [I(41,99)] = {15,0x7F64}, + [I(42,99)] = {13,0x1F24}, + [I(43,99)] = {16,0xFF64}, + [I(44,99)] = {13,0x1F44}, + [I(45,99)] = {11,0x2C4}, + [I(46,99)] = {11,0x2E4}, + [I(47,99)] = {11,0x304}, + [I(48,99)] = {10,0x4}, + [I(49,99)] = {10,0x24}, + [I(50,99)] = {10,0x44}, + [I(51,99)] = {11,0x324}, + [I(52,99)] = {11,0x344}, + [I(53,99)] = {11,0x364}, + [I(54,99)] = {11,0x384}, + [I(55,99)] = {11,0x3A4}, + [I(56,99)] = {11,0x3C4}, + [I(57,99)] = {11,0x3E4}, + [I(58,99)] = {12,0xB84}, + [I(59,99)] = {13,0x1F64}, + [I(60,99)] = {20,0xFFF84}, + [I(61,99)] = {11,0x404}, + [I(62,99)] = {17,0x1FF64}, + [I(63,99)] = {15,0x7F84}, + [I(64,99)] = {18,0x3FF44}, + [I(65,99)] = {11,0x424}, + [I(66,99)] = {12,0xBA4}, + [I(67,99)] = {12,0xBC4}, + [I(68,99)] = {12,0xBE4}, + [I(69,99)] = {12,0xC04}, + [I(70,99)] = {12,0xC24}, + [I(71,99)] = {12,0xC44}, + [I(72,99)] = {12,0xC64}, + [I(73,99)] = {12,0xC84}, + [I(74,99)] = {12,0xCA4}, + [I(75,99)] = {12,0xCC4}, + [I(76,99)] = {12,0xCE4}, + [I(77,99)] = {12,0xD04}, + [I(78,99)] = {12,0xD24}, + [I(79,99)] = {12,0xD44}, + [I(80,99)] = {12,0xD64}, + [I(81,99)] = {12,0xD84}, + [I(82,99)] = {12,0xDA4}, + [I(83,99)] = {12,0xDC4}, + [I(84,99)] = {12,0xDE4}, + [I(85,99)] = {12,0xE04}, + [I(86,99)] = {12,0xE24}, + [I(87,99)] = {12,0xE44}, + [I(88,99)] = {13,0x1F84}, + [I(89,99)] = {12,0xE64}, + [I(90,99)] = {13,0x1FA4}, + [I(91,99)] = {18,0x3FF64}, + [I(92,99)] = {24,0xFFFE04}, + [I(93,99)] = {18,0x3FF84}, + [I(94,99)] = {19,0x7FF84}, + [I(95,99)] = {11,0x444}, + [I(96,99)] = {20,0xFFFA4}, + [I(97,99)] = {10,0x64}, + [I(98,99)] = {11,0x464}, + [I(99,99)] = {10,0x84}, + [I(100,99)] = {11,0x484}, + [I(101,99)] = {10,0xA4}, + [I(102,99)] = {11,0x4A4}, + [I(103,99)] = {11,0x4C4}, + [I(104,99)] = {11,0x4E4}, + [I(105,99)] = {10,0xC4}, + [I(106,99)] = {12,0xE84}, + [I(107,99)] = {12,0xEA4}, + [I(108,99)] = {11,0x504}, + [I(109,99)] = {11,0x524}, + [I(110,99)] = {11,0x544}, + [I(111,99)] = {10,0xE4}, + [I(112,99)] = {11,0x564}, + [I(113,99)] = {12,0xEC4}, + [I(114,99)] = {11,0x584}, + [I(115,99)] = {10,0x104}, + [I(116,99)] = {10,0x124}, + [I(117,99)] = {11,0x5A4}, + [I(118,99)] = {12,0xEE4}, + [I(119,99)] = {12,0xF04}, + [I(120,99)] = {12,0xF24}, + [I(121,99)] = {12,0xF44}, + [I(122,99)] = {12,0xF64}, + [I(123,99)] = {20,0xFFFC4}, + [I(124,99)] = {16,0xFF84}, + [I(125,99)] = {19,0x7FFA4}, + [I(126,99)] = {18,0x3FFA4}, + [I(127,99)] = {64,0}, + [I(128,99)] = {25,0x1FFFCC4}, + [I(129,99)] = {27,0x7FFFA44}, + [I(130,99)] = {25,0x1FFFCE4}, + [I(131,99)] = {25,0x1FFFD04}, + [I(132,99)] = {27,0x7FFFA64}, + [I(133,99)] = {27,0x7FFFA84}, + [I(134,99)] = {27,0x7FFFAA4}, + [I(135,99)] = {28,0xFFFFB24}, + [I(136,99)] = {27,0x7FFFAC4}, + [I(137,99)] = {28,0xFFFFB44}, + [I(138,99)] = {28,0xFFFFB64}, + [I(139,99)] = {28,0xFFFFB84}, + [I(140,99)] = {28,0xFFFFBA4}, + [I(141,99)] = {28,0xFFFFBC4}, + [I(142,99)] = {29,0x1FFFFD64}, + [I(143,99)] = {28,0xFFFFBE4}, + [I(144,99)] = {29,0x1FFFFD84}, + [I(145,99)] = {29,0x1FFFFDA4}, + [I(146,99)] = {27,0x7FFFAE4}, + [I(147,99)] = {28,0xFFFFC04}, + [I(148,99)] = {29,0x1FFFFDC4}, + [I(149,99)] = {28,0xFFFFC24}, + [I(150,99)] = {28,0xFFFFC44}, + [I(151,99)] = {28,0xFFFFC64}, + [I(152,99)] = {28,0xFFFFC84}, + [I(153,99)] = {26,0x3FFFB84}, + [I(154,99)] = {27,0x7FFFB04}, + [I(155,99)] = {28,0xFFFFCA4}, + [I(156,99)] = {27,0x7FFFB24}, + [I(157,99)] = {28,0xFFFFCC4}, + [I(158,99)] = {28,0xFFFFCE4}, + [I(159,99)] = {29,0x1FFFFDE4}, + [I(160,99)] = {27,0x7FFFB44}, + [I(161,99)] = {26,0x3FFFBA4}, + [I(162,99)] = {25,0x1FFFD24}, + [I(163,99)] = {27,0x7FFFB64}, + [I(164,99)] = {27,0x7FFFB84}, + [I(165,99)] = {28,0xFFFFD04}, + [I(166,99)] = {28,0xFFFFD24}, + [I(167,99)] = {26,0x3FFFBC4}, + [I(168,99)] = {28,0xFFFFD44}, + [I(169,99)] = {27,0x7FFFBA4}, + [I(170,99)] = {27,0x7FFFBC4}, + [I(171,99)] = {29,0x1FFFFE04}, + [I(172,99)] = {26,0x3FFFBE4}, + [I(173,99)] = {27,0x7FFFBE4}, + [I(174,99)] = {28,0xFFFFD64}, + [I(175,99)] = {28,0xFFFFD84}, + [I(176,99)] = {26,0x3FFFC04}, + [I(177,99)] = {26,0x3FFFC24}, + [I(178,99)] = {27,0x7FFFC04}, + [I(179,99)] = {26,0x3FFFC44}, + [I(180,99)] = {28,0xFFFFDA4}, + [I(181,99)] = {27,0x7FFFC24}, + [I(182,99)] = {28,0xFFFFDC4}, + [I(183,99)] = {28,0xFFFFDE4}, + [I(184,99)] = {25,0x1FFFD44}, + [I(185,99)] = {27,0x7FFFC44}, + [I(186,99)] = {27,0x7FFFC64}, + [I(187,99)] = {27,0x7FFFC84}, + [I(188,99)] = {28,0xFFFFE04}, + [I(189,99)] = {27,0x7FFFCA4}, + [I(190,99)] = {27,0x7FFFCC4}, + [I(191,99)] = {28,0xFFFFE24}, + [I(192,99)] = {31,0x7FFFFC04}, + [I(193,99)] = {31,0x7FFFFC24}, + [I(194,99)] = {25,0x1FFFD64}, + [I(195,99)] = {24,0xFFFE24}, + [I(196,99)] = {27,0x7FFFCE4}, + [I(197,99)] = {28,0xFFFFE44}, + [I(198,99)] = {27,0x7FFFD04}, + [I(199,99)] = {30,0x3FFFFD84}, + [I(200,99)] = {31,0x7FFFFC44}, + [I(201,99)] = {31,0x7FFFFC64}, + [I(202,99)] = {31,0x7FFFFC84}, + [I(203,99)] = {X32,0xFFFFFBC4}, + [I(204,99)] = {X32,0xFFFFFBE4}, + [I(205,99)] = {31,0x7FFFFCA4}, + [I(206,99)] = {29,0x1FFFFE24}, + [I(207,99)] = {30,0x3FFFFDA4}, + [I(208,99)] = {24,0xFFFE44}, + [I(209,99)] = {26,0x3FFFC64}, + [I(210,99)] = {31,0x7FFFFCC4}, + [I(211,99)] = {X32,0xFFFFFC04}, + [I(212,99)] = {X32,0xFFFFFC24}, + [I(213,99)] = {31,0x7FFFFCE4}, + [I(214,99)] = {X32,0xFFFFFC44}, + [I(215,99)] = {29,0x1FFFFE44}, + [I(216,99)] = {26,0x3FFFC84}, + [I(217,99)] = {26,0x3FFFCA4}, + [I(218,99)] = {31,0x7FFFFD04}, + [I(219,99)] = {31,0x7FFFFD24}, + [I(220,99)] = {64,0}, + [I(221,99)] = {X32,0xFFFFFC64}, + [I(222,99)] = {X32,0xFFFFFC84}, + [I(223,99)] = {X32,0xFFFFFCA4}, + [I(224,99)] = {25,0x1FFFD84}, + [I(225,99)] = {29,0x1FFFFE64}, + [I(226,99)] = {25,0x1FFFDA4}, + [I(227,99)] = {26,0x3FFFCC4}, + [I(228,99)] = {27,0x7FFFD24}, + [I(229,99)] = {26,0x3FFFCE4}, + [I(230,99)] = {26,0x3FFFD04}, + [I(231,99)] = {28,0xFFFFE64}, + [I(232,99)] = {27,0x7FFFD44}, + [I(233,99)] = {27,0x7FFFD64}, + [I(234,99)] = {30,0x3FFFFDC4}, + [I(235,99)] = {30,0x3FFFFDE4}, + [I(236,99)] = {29,0x1FFFFE84}, + [I(237,99)] = {29,0x1FFFFEA4}, + [I(238,99)] = {31,0x7FFFFD44}, + [I(239,99)] = {28,0xFFFFE84}, + [I(240,99)] = {31,0x7FFFFD64}, + [I(241,99)] = {X32,0xFFFFFCC4}, + [I(242,99)] = {31,0x7FFFFD84}, + [I(243,99)] = {31,0x7FFFFDA4}, + [I(244,99)] = {X32,0xFFFFFCE4}, + [I(245,99)] = {X32,0xFFFFFD04}, + [I(246,99)] = {X32,0xFFFFFD24}, + [I(247,99)] = {X32,0xFFFFFD44}, + [I(248,99)] = {X32,0xFFFFFD64}, + [I(249,99)] = {64,0}, + [I(250,99)] = {X32,0xFFFFFD84}, + [I(251,99)] = {X32,0xFFFFFDA4}, + [I(252,99)] = {X32,0xFFFFFDC4}, + [I(253,99)] = {X32,0xFFFFFDE4}, + [I(254,99)] = {X32,0xFFFFFE04}, + [I(255,99)] = {31,0x7FFFFDC4}, + [I(0,100)] = {19,0x7FE24}, + [I(1,100)] = {29,0x1FFFF624}, + [I(2,100)] = {64,0}, + [I(3,100)] = {64,0}, + [I(4,100)] = {64,0}, + [I(5,100)] = {64,0}, + [I(6,100)] = {64,0}, + [I(7,100)] = {64,0}, + [I(8,100)] = {64,0}, + [I(9,100)] = {30,0x3FFFFAA4}, + [I(10,100)] = {64,0}, + [I(11,100)] = {64,0}, + [I(12,100)] = {64,0}, + [I(13,100)] = {64,0}, + [I(14,100)] = {64,0}, + [I(15,100)] = {64,0}, + [I(16,100)] = {64,0}, + [I(17,100)] = {64,0}, + [I(18,100)] = {64,0}, + [I(19,100)] = {64,0}, + [I(20,100)] = {64,0}, + [I(21,100)] = {64,0}, + [I(22,100)] = {64,0}, + [I(23,100)] = {64,0}, + [I(24,100)] = {64,0}, + [I(25,100)] = {64,0}, + [I(26,100)] = {64,0}, + [I(27,100)] = {64,0}, + [I(28,100)] = {64,0}, + [I(29,100)] = {64,0}, + [I(30,100)] = {64,0}, + [I(31,100)] = {64,0}, + [I(32,100)] = {12,0x524}, + [I(33,100)] = {16,0xFE24}, + [I(34,100)] = {16,0xFE64}, + [I(35,100)] = {18,0x3FEA4}, + [I(36,100)] = {19,0x7FE64}, + [I(37,100)] = {12,0x564}, + [I(38,100)] = {14,0x3E24}, + [I(39,100)] = {17,0x1FEA4}, + [I(40,100)] = {16,0xFEA4}, + [I(41,100)] = {16,0xFEE4}, + [I(42,100)] = {14,0x3E64}, + [I(43,100)] = {17,0x1FEE4}, + [I(44,100)] = {14,0x3EA4}, + [I(45,100)] = {12,0x5A4}, + [I(46,100)] = {12,0x5E4}, + [I(47,100)] = {12,0x624}, + [I(48,100)] = {11,0x24}, + [I(49,100)] = {11,0x64}, + [I(50,100)] = {11,0xA4}, + [I(51,100)] = {12,0x664}, + [I(52,100)] = {12,0x6A4}, + [I(53,100)] = {12,0x6E4}, + [I(54,100)] = {12,0x724}, + [I(55,100)] = {12,0x764}, + [I(56,100)] = {12,0x7A4}, + [I(57,100)] = {12,0x7E4}, + [I(58,100)] = {13,0x1724}, + [I(59,100)] = {14,0x3EE4}, + [I(60,100)] = {21,0x1FFF24}, + [I(61,100)] = {12,0x824}, + [I(62,100)] = {18,0x3FEE4}, + [I(63,100)] = {16,0xFF24}, + [I(64,100)] = {19,0x7FEA4}, + [I(65,100)] = {12,0x864}, + [I(66,100)] = {13,0x1764}, + [I(67,100)] = {13,0x17A4}, + [I(68,100)] = {13,0x17E4}, + [I(69,100)] = {13,0x1824}, + [I(70,100)] = {13,0x1864}, + [I(71,100)] = {13,0x18A4}, + [I(72,100)] = {13,0x18E4}, + [I(73,100)] = {13,0x1924}, + [I(74,100)] = {13,0x1964}, + [I(75,100)] = {13,0x19A4}, + [I(76,100)] = {13,0x19E4}, + [I(77,100)] = {13,0x1A24}, + [I(78,100)] = {13,0x1A64}, + [I(79,100)] = {13,0x1AA4}, + [I(80,100)] = {13,0x1AE4}, + [I(81,100)] = {13,0x1B24}, + [I(82,100)] = {13,0x1B64}, + [I(83,100)] = {13,0x1BA4}, + [I(84,100)] = {13,0x1BE4}, + [I(85,100)] = {13,0x1C24}, + [I(86,100)] = {13,0x1C64}, + [I(87,100)] = {13,0x1CA4}, + [I(88,100)] = {14,0x3F24}, + [I(89,100)] = {13,0x1CE4}, + [I(90,100)] = {14,0x3F64}, + [I(91,100)] = {19,0x7FEE4}, + [I(92,100)] = {25,0x1FFFC24}, + [I(93,100)] = {19,0x7FF24}, + [I(94,100)] = {20,0xFFF24}, + [I(95,100)] = {12,0x8A4}, + [I(96,100)] = {21,0x1FFF64}, + [I(97,100)] = {11,0xE4}, + [I(98,100)] = {12,0x8E4}, + [I(99,100)] = {11,0x124}, + [I(100,100)] = {12,0x924}, + [I(101,100)] = {11,0x164}, + [I(102,100)] = {12,0x964}, + [I(103,100)] = {12,0x9A4}, + [I(104,100)] = {12,0x9E4}, + [I(105,100)] = {11,0x1A4}, + [I(106,100)] = {13,0x1D24}, + [I(107,100)] = {13,0x1D64}, + [I(108,100)] = {12,0xA24}, + [I(109,100)] = {12,0xA64}, + [I(110,100)] = {12,0xAA4}, + [I(111,100)] = {11,0x1E4}, + [I(112,100)] = {12,0xAE4}, + [I(113,100)] = {13,0x1DA4}, + [I(114,100)] = {12,0xB24}, + [I(115,100)] = {11,0x224}, + [I(116,100)] = {11,0x264}, + [I(117,100)] = {12,0xB64}, + [I(118,100)] = {13,0x1DE4}, + [I(119,100)] = {13,0x1E24}, + [I(120,100)] = {13,0x1E64}, + [I(121,100)] = {13,0x1EA4}, + [I(122,100)] = {13,0x1EE4}, + [I(123,100)] = {21,0x1FFFA4}, + [I(124,100)] = {17,0x1FF24}, + [I(125,100)] = {20,0xFFF64}, + [I(126,100)] = {19,0x7FF64}, + [I(127,100)] = {64,0}, + [I(128,100)] = {26,0x3FFF9A4}, + [I(129,100)] = {28,0xFFFF4A4}, + [I(130,100)] = {26,0x3FFF9E4}, + [I(131,100)] = {26,0x3FFFA24}, + [I(132,100)] = {28,0xFFFF4E4}, + [I(133,100)] = {28,0xFFFF524}, + [I(134,100)] = {28,0xFFFF564}, + [I(135,100)] = {29,0x1FFFF664}, + [I(136,100)] = {28,0xFFFF5A4}, + [I(137,100)] = {29,0x1FFFF6A4}, + [I(138,100)] = {29,0x1FFFF6E4}, + [I(139,100)] = {29,0x1FFFF724}, + [I(140,100)] = {29,0x1FFFF764}, + [I(141,100)] = {29,0x1FFFF7A4}, + [I(142,100)] = {30,0x3FFFFAE4}, + [I(143,100)] = {29,0x1FFFF7E4}, + [I(144,100)] = {30,0x3FFFFB24}, + [I(145,100)] = {30,0x3FFFFB64}, + [I(146,100)] = {28,0xFFFF5E4}, + [I(147,100)] = {29,0x1FFFF824}, + [I(148,100)] = {30,0x3FFFFBA4}, + [I(149,100)] = {29,0x1FFFF864}, + [I(150,100)] = {29,0x1FFFF8A4}, + [I(151,100)] = {29,0x1FFFF8E4}, + [I(152,100)] = {29,0x1FFFF924}, + [I(153,100)] = {27,0x7FFF724}, + [I(154,100)] = {28,0xFFFF624}, + [I(155,100)] = {29,0x1FFFF964}, + [I(156,100)] = {28,0xFFFF664}, + [I(157,100)] = {29,0x1FFFF9A4}, + [I(158,100)] = {29,0x1FFFF9E4}, + [I(159,100)] = {30,0x3FFFFBE4}, + [I(160,100)] = {28,0xFFFF6A4}, + [I(161,100)] = {27,0x7FFF764}, + [I(162,100)] = {26,0x3FFFA64}, + [I(163,100)] = {28,0xFFFF6E4}, + [I(164,100)] = {28,0xFFFF724}, + [I(165,100)] = {29,0x1FFFFA24}, + [I(166,100)] = {29,0x1FFFFA64}, + [I(167,100)] = {27,0x7FFF7A4}, + [I(168,100)] = {29,0x1FFFFAA4}, + [I(169,100)] = {28,0xFFFF764}, + [I(170,100)] = {28,0xFFFF7A4}, + [I(171,100)] = {30,0x3FFFFC24}, + [I(172,100)] = {27,0x7FFF7E4}, + [I(173,100)] = {28,0xFFFF7E4}, + [I(174,100)] = {29,0x1FFFFAE4}, + [I(175,100)] = {29,0x1FFFFB24}, + [I(176,100)] = {27,0x7FFF824}, + [I(177,100)] = {27,0x7FFF864}, + [I(178,100)] = {28,0xFFFF824}, + [I(179,100)] = {27,0x7FFF8A4}, + [I(180,100)] = {29,0x1FFFFB64}, + [I(181,100)] = {28,0xFFFF864}, + [I(182,100)] = {29,0x1FFFFBA4}, + [I(183,100)] = {29,0x1FFFFBE4}, + [I(184,100)] = {26,0x3FFFAA4}, + [I(185,100)] = {28,0xFFFF8A4}, + [I(186,100)] = {28,0xFFFF8E4}, + [I(187,100)] = {28,0xFFFF924}, + [I(188,100)] = {29,0x1FFFFC24}, + [I(189,100)] = {28,0xFFFF964}, + [I(190,100)] = {28,0xFFFF9A4}, + [I(191,100)] = {29,0x1FFFFC64}, + [I(192,100)] = {X32,0xFFFFF824}, + [I(193,100)] = {X32,0xFFFFF864}, + [I(194,100)] = {26,0x3FFFAE4}, + [I(195,100)] = {25,0x1FFFC64}, + [I(196,100)] = {28,0xFFFF9E4}, + [I(197,100)] = {29,0x1FFFFCA4}, + [I(198,100)] = {28,0xFFFFA24}, + [I(199,100)] = {31,0x7FFFFB24}, + [I(200,100)] = {X32,0xFFFFF8A4}, + [I(201,100)] = {X32,0xFFFFF8E4}, + [I(202,100)] = {X32,0xFFFFF924}, + [I(203,100)] = {64,0}, + [I(204,100)] = {64,0}, + [I(205,100)] = {X32,0xFFFFF964}, + [I(206,100)] = {30,0x3FFFFC64}, + [I(207,100)] = {31,0x7FFFFB64}, + [I(208,100)] = {25,0x1FFFCA4}, + [I(209,100)] = {27,0x7FFF8E4}, + [I(210,100)] = {X32,0xFFFFF9A4}, + [I(211,100)] = {64,0}, + [I(212,100)] = {64,0}, + [I(213,100)] = {X32,0xFFFFF9E4}, + [I(214,100)] = {64,0}, + [I(215,100)] = {30,0x3FFFFCA4}, + [I(216,100)] = {27,0x7FFF924}, + [I(217,100)] = {27,0x7FFF964}, + [I(218,100)] = {X32,0xFFFFFA24}, + [I(219,100)] = {X32,0xFFFFFA64}, + [I(220,100)] = {64,0}, + [I(221,100)] = {64,0}, + [I(222,100)] = {64,0}, + [I(223,100)] = {64,0}, + [I(224,100)] = {26,0x3FFFB24}, + [I(225,100)] = {30,0x3FFFFCE4}, + [I(226,100)] = {26,0x3FFFB64}, + [I(227,100)] = {27,0x7FFF9A4}, + [I(228,100)] = {28,0xFFFFA64}, + [I(229,100)] = {27,0x7FFF9E4}, + [I(230,100)] = {27,0x7FFFA24}, + [I(231,100)] = {29,0x1FFFFCE4}, + [I(232,100)] = {28,0xFFFFAA4}, + [I(233,100)] = {28,0xFFFFAE4}, + [I(234,100)] = {31,0x7FFFFBA4}, + [I(235,100)] = {31,0x7FFFFBE4}, + [I(236,100)] = {30,0x3FFFFD24}, + [I(237,100)] = {30,0x3FFFFD64}, + [I(238,100)] = {X32,0xFFFFFAA4}, + [I(239,100)] = {29,0x1FFFFD24}, + [I(240,100)] = {X32,0xFFFFFAE4}, + [I(241,100)] = {64,0}, + [I(242,100)] = {X32,0xFFFFFB24}, + [I(243,100)] = {X32,0xFFFFFB64}, + [I(244,100)] = {64,0}, + [I(245,100)] = {64,0}, + [I(246,100)] = {64,0}, + [I(247,100)] = {64,0}, + [I(248,100)] = {64,0}, + [I(249,100)] = {64,0}, + [I(250,100)] = {64,0}, + [I(251,100)] = {64,0}, + [I(252,100)] = {64,0}, + [I(253,100)] = {64,0}, + [I(254,100)] = {64,0}, + [I(255,100)] = {X32,0xFFFFFBA4}, + [I(0,101)] = {18,0x3FF05}, + [I(1,101)] = {28,0xFFFFB05}, + [I(2,101)] = {64,0}, + [I(3,101)] = {64,0}, + [I(4,101)] = {64,0}, + [I(5,101)] = {64,0}, + [I(6,101)] = {64,0}, + [I(7,101)] = {64,0}, + [I(8,101)] = {64,0}, + [I(9,101)] = {29,0x1FFFFD45}, + [I(10,101)] = {64,0}, + [I(11,101)] = {64,0}, + [I(12,101)] = {64,0}, + [I(13,101)] = {64,0}, + [I(14,101)] = {64,0}, + [I(15,101)] = {64,0}, + [I(16,101)] = {64,0}, + [I(17,101)] = {64,0}, + [I(18,101)] = {64,0}, + [I(19,101)] = {64,0}, + [I(20,101)] = {64,0}, + [I(21,101)] = {64,0}, + [I(22,101)] = {64,0}, + [I(23,101)] = {64,0}, + [I(24,101)] = {64,0}, + [I(25,101)] = {64,0}, + [I(26,101)] = {64,0}, + [I(27,101)] = {64,0}, + [I(28,101)] = {64,0}, + [I(29,101)] = {64,0}, + [I(30,101)] = {64,0}, + [I(31,101)] = {64,0}, + [I(32,101)] = {11,0x285}, + [I(33,101)] = {15,0x7F05}, + [I(34,101)] = {15,0x7F25}, + [I(35,101)] = {17,0x1FF45}, + [I(36,101)] = {18,0x3FF25}, + [I(37,101)] = {11,0x2A5}, + [I(38,101)] = {13,0x1F05}, + [I(39,101)] = {16,0xFF45}, + [I(40,101)] = {15,0x7F45}, + [I(41,101)] = {15,0x7F65}, + [I(42,101)] = {13,0x1F25}, + [I(43,101)] = {16,0xFF65}, + [I(44,101)] = {13,0x1F45}, + [I(45,101)] = {11,0x2C5}, + [I(46,101)] = {11,0x2E5}, + [I(47,101)] = {11,0x305}, + [I(48,101)] = {10,0x5}, + [I(49,101)] = {10,0x25}, + [I(50,101)] = {10,0x45}, + [I(51,101)] = {11,0x325}, + [I(52,101)] = {11,0x345}, + [I(53,101)] = {11,0x365}, + [I(54,101)] = {11,0x385}, + [I(55,101)] = {11,0x3A5}, + [I(56,101)] = {11,0x3C5}, + [I(57,101)] = {11,0x3E5}, + [I(58,101)] = {12,0xB85}, + [I(59,101)] = {13,0x1F65}, + [I(60,101)] = {20,0xFFF85}, + [I(61,101)] = {11,0x405}, + [I(62,101)] = {17,0x1FF65}, + [I(63,101)] = {15,0x7F85}, + [I(64,101)] = {18,0x3FF45}, + [I(65,101)] = {11,0x425}, + [I(66,101)] = {12,0xBA5}, + [I(67,101)] = {12,0xBC5}, + [I(68,101)] = {12,0xBE5}, + [I(69,101)] = {12,0xC05}, + [I(70,101)] = {12,0xC25}, + [I(71,101)] = {12,0xC45}, + [I(72,101)] = {12,0xC65}, + [I(73,101)] = {12,0xC85}, + [I(74,101)] = {12,0xCA5}, + [I(75,101)] = {12,0xCC5}, + [I(76,101)] = {12,0xCE5}, + [I(77,101)] = {12,0xD05}, + [I(78,101)] = {12,0xD25}, + [I(79,101)] = {12,0xD45}, + [I(80,101)] = {12,0xD65}, + [I(81,101)] = {12,0xD85}, + [I(82,101)] = {12,0xDA5}, + [I(83,101)] = {12,0xDC5}, + [I(84,101)] = {12,0xDE5}, + [I(85,101)] = {12,0xE05}, + [I(86,101)] = {12,0xE25}, + [I(87,101)] = {12,0xE45}, + [I(88,101)] = {13,0x1F85}, + [I(89,101)] = {12,0xE65}, + [I(90,101)] = {13,0x1FA5}, + [I(91,101)] = {18,0x3FF65}, + [I(92,101)] = {24,0xFFFE05}, + [I(93,101)] = {18,0x3FF85}, + [I(94,101)] = {19,0x7FF85}, + [I(95,101)] = {11,0x445}, + [I(96,101)] = {20,0xFFFA5}, + [I(97,101)] = {10,0x65}, + [I(98,101)] = {11,0x465}, + [I(99,101)] = {10,0x85}, + [I(100,101)] = {11,0x485}, + [I(101,101)] = {10,0xA5}, + [I(102,101)] = {11,0x4A5}, + [I(103,101)] = {11,0x4C5}, + [I(104,101)] = {11,0x4E5}, + [I(105,101)] = {10,0xC5}, + [I(106,101)] = {12,0xE85}, + [I(107,101)] = {12,0xEA5}, + [I(108,101)] = {11,0x505}, + [I(109,101)] = {11,0x525}, + [I(110,101)] = {11,0x545}, + [I(111,101)] = {10,0xE5}, + [I(112,101)] = {11,0x565}, + [I(113,101)] = {12,0xEC5}, + [I(114,101)] = {11,0x585}, + [I(115,101)] = {10,0x105}, + [I(116,101)] = {10,0x125}, + [I(117,101)] = {11,0x5A5}, + [I(118,101)] = {12,0xEE5}, + [I(119,101)] = {12,0xF05}, + [I(120,101)] = {12,0xF25}, + [I(121,101)] = {12,0xF45}, + [I(122,101)] = {12,0xF65}, + [I(123,101)] = {20,0xFFFC5}, + [I(124,101)] = {16,0xFF85}, + [I(125,101)] = {19,0x7FFA5}, + [I(126,101)] = {18,0x3FFA5}, + [I(127,101)] = {64,0}, + [I(128,101)] = {25,0x1FFFCC5}, + [I(129,101)] = {27,0x7FFFA45}, + [I(130,101)] = {25,0x1FFFCE5}, + [I(131,101)] = {25,0x1FFFD05}, + [I(132,101)] = {27,0x7FFFA65}, + [I(133,101)] = {27,0x7FFFA85}, + [I(134,101)] = {27,0x7FFFAA5}, + [I(135,101)] = {28,0xFFFFB25}, + [I(136,101)] = {27,0x7FFFAC5}, + [I(137,101)] = {28,0xFFFFB45}, + [I(138,101)] = {28,0xFFFFB65}, + [I(139,101)] = {28,0xFFFFB85}, + [I(140,101)] = {28,0xFFFFBA5}, + [I(141,101)] = {28,0xFFFFBC5}, + [I(142,101)] = {29,0x1FFFFD65}, + [I(143,101)] = {28,0xFFFFBE5}, + [I(144,101)] = {29,0x1FFFFD85}, + [I(145,101)] = {29,0x1FFFFDA5}, + [I(146,101)] = {27,0x7FFFAE5}, + [I(147,101)] = {28,0xFFFFC05}, + [I(148,101)] = {29,0x1FFFFDC5}, + [I(149,101)] = {28,0xFFFFC25}, + [I(150,101)] = {28,0xFFFFC45}, + [I(151,101)] = {28,0xFFFFC65}, + [I(152,101)] = {28,0xFFFFC85}, + [I(153,101)] = {26,0x3FFFB85}, + [I(154,101)] = {27,0x7FFFB05}, + [I(155,101)] = {28,0xFFFFCA5}, + [I(156,101)] = {27,0x7FFFB25}, + [I(157,101)] = {28,0xFFFFCC5}, + [I(158,101)] = {28,0xFFFFCE5}, + [I(159,101)] = {29,0x1FFFFDE5}, + [I(160,101)] = {27,0x7FFFB45}, + [I(161,101)] = {26,0x3FFFBA5}, + [I(162,101)] = {25,0x1FFFD25}, + [I(163,101)] = {27,0x7FFFB65}, + [I(164,101)] = {27,0x7FFFB85}, + [I(165,101)] = {28,0xFFFFD05}, + [I(166,101)] = {28,0xFFFFD25}, + [I(167,101)] = {26,0x3FFFBC5}, + [I(168,101)] = {28,0xFFFFD45}, + [I(169,101)] = {27,0x7FFFBA5}, + [I(170,101)] = {27,0x7FFFBC5}, + [I(171,101)] = {29,0x1FFFFE05}, + [I(172,101)] = {26,0x3FFFBE5}, + [I(173,101)] = {27,0x7FFFBE5}, + [I(174,101)] = {28,0xFFFFD65}, + [I(175,101)] = {28,0xFFFFD85}, + [I(176,101)] = {26,0x3FFFC05}, + [I(177,101)] = {26,0x3FFFC25}, + [I(178,101)] = {27,0x7FFFC05}, + [I(179,101)] = {26,0x3FFFC45}, + [I(180,101)] = {28,0xFFFFDA5}, + [I(181,101)] = {27,0x7FFFC25}, + [I(182,101)] = {28,0xFFFFDC5}, + [I(183,101)] = {28,0xFFFFDE5}, + [I(184,101)] = {25,0x1FFFD45}, + [I(185,101)] = {27,0x7FFFC45}, + [I(186,101)] = {27,0x7FFFC65}, + [I(187,101)] = {27,0x7FFFC85}, + [I(188,101)] = {28,0xFFFFE05}, + [I(189,101)] = {27,0x7FFFCA5}, + [I(190,101)] = {27,0x7FFFCC5}, + [I(191,101)] = {28,0xFFFFE25}, + [I(192,101)] = {31,0x7FFFFC05}, + [I(193,101)] = {31,0x7FFFFC25}, + [I(194,101)] = {25,0x1FFFD65}, + [I(195,101)] = {24,0xFFFE25}, + [I(196,101)] = {27,0x7FFFCE5}, + [I(197,101)] = {28,0xFFFFE45}, + [I(198,101)] = {27,0x7FFFD05}, + [I(199,101)] = {30,0x3FFFFD85}, + [I(200,101)] = {31,0x7FFFFC45}, + [I(201,101)] = {31,0x7FFFFC65}, + [I(202,101)] = {31,0x7FFFFC85}, + [I(203,101)] = {X32,0xFFFFFBC5}, + [I(204,101)] = {X32,0xFFFFFBE5}, + [I(205,101)] = {31,0x7FFFFCA5}, + [I(206,101)] = {29,0x1FFFFE25}, + [I(207,101)] = {30,0x3FFFFDA5}, + [I(208,101)] = {24,0xFFFE45}, + [I(209,101)] = {26,0x3FFFC65}, + [I(210,101)] = {31,0x7FFFFCC5}, + [I(211,101)] = {X32,0xFFFFFC05}, + [I(212,101)] = {X32,0xFFFFFC25}, + [I(213,101)] = {31,0x7FFFFCE5}, + [I(214,101)] = {X32,0xFFFFFC45}, + [I(215,101)] = {29,0x1FFFFE45}, + [I(216,101)] = {26,0x3FFFC85}, + [I(217,101)] = {26,0x3FFFCA5}, + [I(218,101)] = {31,0x7FFFFD05}, + [I(219,101)] = {31,0x7FFFFD25}, + [I(220,101)] = {64,0}, + [I(221,101)] = {X32,0xFFFFFC65}, + [I(222,101)] = {X32,0xFFFFFC85}, + [I(223,101)] = {X32,0xFFFFFCA5}, + [I(224,101)] = {25,0x1FFFD85}, + [I(225,101)] = {29,0x1FFFFE65}, + [I(226,101)] = {25,0x1FFFDA5}, + [I(227,101)] = {26,0x3FFFCC5}, + [I(228,101)] = {27,0x7FFFD25}, + [I(229,101)] = {26,0x3FFFCE5}, + [I(230,101)] = {26,0x3FFFD05}, + [I(231,101)] = {28,0xFFFFE65}, + [I(232,101)] = {27,0x7FFFD45}, + [I(233,101)] = {27,0x7FFFD65}, + [I(234,101)] = {30,0x3FFFFDC5}, + [I(235,101)] = {30,0x3FFFFDE5}, + [I(236,101)] = {29,0x1FFFFE85}, + [I(237,101)] = {29,0x1FFFFEA5}, + [I(238,101)] = {31,0x7FFFFD45}, + [I(239,101)] = {28,0xFFFFE85}, + [I(240,101)] = {31,0x7FFFFD65}, + [I(241,101)] = {X32,0xFFFFFCC5}, + [I(242,101)] = {31,0x7FFFFD85}, + [I(243,101)] = {31,0x7FFFFDA5}, + [I(244,101)] = {X32,0xFFFFFCE5}, + [I(245,101)] = {X32,0xFFFFFD05}, + [I(246,101)] = {X32,0xFFFFFD25}, + [I(247,101)] = {X32,0xFFFFFD45}, + [I(248,101)] = {X32,0xFFFFFD65}, + [I(249,101)] = {64,0}, + [I(250,101)] = {X32,0xFFFFFD85}, + [I(251,101)] = {X32,0xFFFFFDA5}, + [I(252,101)] = {X32,0xFFFFFDC5}, + [I(253,101)] = {X32,0xFFFFFDE5}, + [I(254,101)] = {X32,0xFFFFFE05}, + [I(255,101)] = {31,0x7FFFFDC5}, + [I(0,102)] = {19,0x7FE25}, + [I(1,102)] = {29,0x1FFFF625}, + [I(2,102)] = {64,0}, + [I(3,102)] = {64,0}, + [I(4,102)] = {64,0}, + [I(5,102)] = {64,0}, + [I(6,102)] = {64,0}, + [I(7,102)] = {64,0}, + [I(8,102)] = {64,0}, + [I(9,102)] = {30,0x3FFFFAA5}, + [I(10,102)] = {64,0}, + [I(11,102)] = {64,0}, + [I(12,102)] = {64,0}, + [I(13,102)] = {64,0}, + [I(14,102)] = {64,0}, + [I(15,102)] = {64,0}, + [I(16,102)] = {64,0}, + [I(17,102)] = {64,0}, + [I(18,102)] = {64,0}, + [I(19,102)] = {64,0}, + [I(20,102)] = {64,0}, + [I(21,102)] = {64,0}, + [I(22,102)] = {64,0}, + [I(23,102)] = {64,0}, + [I(24,102)] = {64,0}, + [I(25,102)] = {64,0}, + [I(26,102)] = {64,0}, + [I(27,102)] = {64,0}, + [I(28,102)] = {64,0}, + [I(29,102)] = {64,0}, + [I(30,102)] = {64,0}, + [I(31,102)] = {64,0}, + [I(32,102)] = {12,0x525}, + [I(33,102)] = {16,0xFE25}, + [I(34,102)] = {16,0xFE65}, + [I(35,102)] = {18,0x3FEA5}, + [I(36,102)] = {19,0x7FE65}, + [I(37,102)] = {12,0x565}, + [I(38,102)] = {14,0x3E25}, + [I(39,102)] = {17,0x1FEA5}, + [I(40,102)] = {16,0xFEA5}, + [I(41,102)] = {16,0xFEE5}, + [I(42,102)] = {14,0x3E65}, + [I(43,102)] = {17,0x1FEE5}, + [I(44,102)] = {14,0x3EA5}, + [I(45,102)] = {12,0x5A5}, + [I(46,102)] = {12,0x5E5}, + [I(47,102)] = {12,0x625}, + [I(48,102)] = {11,0x25}, + [I(49,102)] = {11,0x65}, + [I(50,102)] = {11,0xA5}, + [I(51,102)] = {12,0x665}, + [I(52,102)] = {12,0x6A5}, + [I(53,102)] = {12,0x6E5}, + [I(54,102)] = {12,0x725}, + [I(55,102)] = {12,0x765}, + [I(56,102)] = {12,0x7A5}, + [I(57,102)] = {12,0x7E5}, + [I(58,102)] = {13,0x1725}, + [I(59,102)] = {14,0x3EE5}, + [I(60,102)] = {21,0x1FFF25}, + [I(61,102)] = {12,0x825}, + [I(62,102)] = {18,0x3FEE5}, + [I(63,102)] = {16,0xFF25}, + [I(64,102)] = {19,0x7FEA5}, + [I(65,102)] = {12,0x865}, + [I(66,102)] = {13,0x1765}, + [I(67,102)] = {13,0x17A5}, + [I(68,102)] = {13,0x17E5}, + [I(69,102)] = {13,0x1825}, + [I(70,102)] = {13,0x1865}, + [I(71,102)] = {13,0x18A5}, + [I(72,102)] = {13,0x18E5}, + [I(73,102)] = {13,0x1925}, + [I(74,102)] = {13,0x1965}, + [I(75,102)] = {13,0x19A5}, + [I(76,102)] = {13,0x19E5}, + [I(77,102)] = {13,0x1A25}, + [I(78,102)] = {13,0x1A65}, + [I(79,102)] = {13,0x1AA5}, + [I(80,102)] = {13,0x1AE5}, + [I(81,102)] = {13,0x1B25}, + [I(82,102)] = {13,0x1B65}, + [I(83,102)] = {13,0x1BA5}, + [I(84,102)] = {13,0x1BE5}, + [I(85,102)] = {13,0x1C25}, + [I(86,102)] = {13,0x1C65}, + [I(87,102)] = {13,0x1CA5}, + [I(88,102)] = {14,0x3F25}, + [I(89,102)] = {13,0x1CE5}, + [I(90,102)] = {14,0x3F65}, + [I(91,102)] = {19,0x7FEE5}, + [I(92,102)] = {25,0x1FFFC25}, + [I(93,102)] = {19,0x7FF25}, + [I(94,102)] = {20,0xFFF25}, + [I(95,102)] = {12,0x8A5}, + [I(96,102)] = {21,0x1FFF65}, + [I(97,102)] = {11,0xE5}, + [I(98,102)] = {12,0x8E5}, + [I(99,102)] = {11,0x125}, + [I(100,102)] = {12,0x925}, + [I(101,102)] = {11,0x165}, + [I(102,102)] = {12,0x965}, + [I(103,102)] = {12,0x9A5}, + [I(104,102)] = {12,0x9E5}, + [I(105,102)] = {11,0x1A5}, + [I(106,102)] = {13,0x1D25}, + [I(107,102)] = {13,0x1D65}, + [I(108,102)] = {12,0xA25}, + [I(109,102)] = {12,0xA65}, + [I(110,102)] = {12,0xAA5}, + [I(111,102)] = {11,0x1E5}, + [I(112,102)] = {12,0xAE5}, + [I(113,102)] = {13,0x1DA5}, + [I(114,102)] = {12,0xB25}, + [I(115,102)] = {11,0x225}, + [I(116,102)] = {11,0x265}, + [I(117,102)] = {12,0xB65}, + [I(118,102)] = {13,0x1DE5}, + [I(119,102)] = {13,0x1E25}, + [I(120,102)] = {13,0x1E65}, + [I(121,102)] = {13,0x1EA5}, + [I(122,102)] = {13,0x1EE5}, + [I(123,102)] = {21,0x1FFFA5}, + [I(124,102)] = {17,0x1FF25}, + [I(125,102)] = {20,0xFFF65}, + [I(126,102)] = {19,0x7FF65}, + [I(127,102)] = {64,0}, + [I(128,102)] = {26,0x3FFF9A5}, + [I(129,102)] = {28,0xFFFF4A5}, + [I(130,102)] = {26,0x3FFF9E5}, + [I(131,102)] = {26,0x3FFFA25}, + [I(132,102)] = {28,0xFFFF4E5}, + [I(133,102)] = {28,0xFFFF525}, + [I(134,102)] = {28,0xFFFF565}, + [I(135,102)] = {29,0x1FFFF665}, + [I(136,102)] = {28,0xFFFF5A5}, + [I(137,102)] = {29,0x1FFFF6A5}, + [I(138,102)] = {29,0x1FFFF6E5}, + [I(139,102)] = {29,0x1FFFF725}, + [I(140,102)] = {29,0x1FFFF765}, + [I(141,102)] = {29,0x1FFFF7A5}, + [I(142,102)] = {30,0x3FFFFAE5}, + [I(143,102)] = {29,0x1FFFF7E5}, + [I(144,102)] = {30,0x3FFFFB25}, + [I(145,102)] = {30,0x3FFFFB65}, + [I(146,102)] = {28,0xFFFF5E5}, + [I(147,102)] = {29,0x1FFFF825}, + [I(148,102)] = {30,0x3FFFFBA5}, + [I(149,102)] = {29,0x1FFFF865}, + [I(150,102)] = {29,0x1FFFF8A5}, + [I(151,102)] = {29,0x1FFFF8E5}, + [I(152,102)] = {29,0x1FFFF925}, + [I(153,102)] = {27,0x7FFF725}, + [I(154,102)] = {28,0xFFFF625}, + [I(155,102)] = {29,0x1FFFF965}, + [I(156,102)] = {28,0xFFFF665}, + [I(157,102)] = {29,0x1FFFF9A5}, + [I(158,102)] = {29,0x1FFFF9E5}, + [I(159,102)] = {30,0x3FFFFBE5}, + [I(160,102)] = {28,0xFFFF6A5}, + [I(161,102)] = {27,0x7FFF765}, + [I(162,102)] = {26,0x3FFFA65}, + [I(163,102)] = {28,0xFFFF6E5}, + [I(164,102)] = {28,0xFFFF725}, + [I(165,102)] = {29,0x1FFFFA25}, + [I(166,102)] = {29,0x1FFFFA65}, + [I(167,102)] = {27,0x7FFF7A5}, + [I(168,102)] = {29,0x1FFFFAA5}, + [I(169,102)] = {28,0xFFFF765}, + [I(170,102)] = {28,0xFFFF7A5}, + [I(171,102)] = {30,0x3FFFFC25}, + [I(172,102)] = {27,0x7FFF7E5}, + [I(173,102)] = {28,0xFFFF7E5}, + [I(174,102)] = {29,0x1FFFFAE5}, + [I(175,102)] = {29,0x1FFFFB25}, + [I(176,102)] = {27,0x7FFF825}, + [I(177,102)] = {27,0x7FFF865}, + [I(178,102)] = {28,0xFFFF825}, + [I(179,102)] = {27,0x7FFF8A5}, + [I(180,102)] = {29,0x1FFFFB65}, + [I(181,102)] = {28,0xFFFF865}, + [I(182,102)] = {29,0x1FFFFBA5}, + [I(183,102)] = {29,0x1FFFFBE5}, + [I(184,102)] = {26,0x3FFFAA5}, + [I(185,102)] = {28,0xFFFF8A5}, + [I(186,102)] = {28,0xFFFF8E5}, + [I(187,102)] = {28,0xFFFF925}, + [I(188,102)] = {29,0x1FFFFC25}, + [I(189,102)] = {28,0xFFFF965}, + [I(190,102)] = {28,0xFFFF9A5}, + [I(191,102)] = {29,0x1FFFFC65}, + [I(192,102)] = {X32,0xFFFFF825}, + [I(193,102)] = {X32,0xFFFFF865}, + [I(194,102)] = {26,0x3FFFAE5}, + [I(195,102)] = {25,0x1FFFC65}, + [I(196,102)] = {28,0xFFFF9E5}, + [I(197,102)] = {29,0x1FFFFCA5}, + [I(198,102)] = {28,0xFFFFA25}, + [I(199,102)] = {31,0x7FFFFB25}, + [I(200,102)] = {X32,0xFFFFF8A5}, + [I(201,102)] = {X32,0xFFFFF8E5}, + [I(202,102)] = {X32,0xFFFFF925}, + [I(203,102)] = {64,0}, + [I(204,102)] = {64,0}, + [I(205,102)] = {X32,0xFFFFF965}, + [I(206,102)] = {30,0x3FFFFC65}, + [I(207,102)] = {31,0x7FFFFB65}, + [I(208,102)] = {25,0x1FFFCA5}, + [I(209,102)] = {27,0x7FFF8E5}, + [I(210,102)] = {X32,0xFFFFF9A5}, + [I(211,102)] = {64,0}, + [I(212,102)] = {64,0}, + [I(213,102)] = {X32,0xFFFFF9E5}, + [I(214,102)] = {64,0}, + [I(215,102)] = {30,0x3FFFFCA5}, + [I(216,102)] = {27,0x7FFF925}, + [I(217,102)] = {27,0x7FFF965}, + [I(218,102)] = {X32,0xFFFFFA25}, + [I(219,102)] = {X32,0xFFFFFA65}, + [I(220,102)] = {64,0}, + [I(221,102)] = {64,0}, + [I(222,102)] = {64,0}, + [I(223,102)] = {64,0}, + [I(224,102)] = {26,0x3FFFB25}, + [I(225,102)] = {30,0x3FFFFCE5}, + [I(226,102)] = {26,0x3FFFB65}, + [I(227,102)] = {27,0x7FFF9A5}, + [I(228,102)] = {28,0xFFFFA65}, + [I(229,102)] = {27,0x7FFF9E5}, + [I(230,102)] = {27,0x7FFFA25}, + [I(231,102)] = {29,0x1FFFFCE5}, + [I(232,102)] = {28,0xFFFFAA5}, + [I(233,102)] = {28,0xFFFFAE5}, + [I(234,102)] = {31,0x7FFFFBA5}, + [I(235,102)] = {31,0x7FFFFBE5}, + [I(236,102)] = {30,0x3FFFFD25}, + [I(237,102)] = {30,0x3FFFFD65}, + [I(238,102)] = {X32,0xFFFFFAA5}, + [I(239,102)] = {29,0x1FFFFD25}, + [I(240,102)] = {X32,0xFFFFFAE5}, + [I(241,102)] = {64,0}, + [I(242,102)] = {X32,0xFFFFFB25}, + [I(243,102)] = {X32,0xFFFFFB65}, + [I(244,102)] = {64,0}, + [I(245,102)] = {64,0}, + [I(246,102)] = {64,0}, + [I(247,102)] = {64,0}, + [I(248,102)] = {64,0}, + [I(249,102)] = {64,0}, + [I(250,102)] = {64,0}, + [I(251,102)] = {64,0}, + [I(252,102)] = {64,0}, + [I(253,102)] = {64,0}, + [I(254,102)] = {64,0}, + [I(255,102)] = {X32,0xFFFFFBA5}, + [I(0,103)] = {19,0x7FE26}, + [I(1,103)] = {29,0x1FFFF626}, + [I(2,103)] = {64,0}, + [I(3,103)] = {64,0}, + [I(4,103)] = {64,0}, + [I(5,103)] = {64,0}, + [I(6,103)] = {64,0}, + [I(7,103)] = {64,0}, + [I(8,103)] = {64,0}, + [I(9,103)] = {30,0x3FFFFAA6}, + [I(10,103)] = {64,0}, + [I(11,103)] = {64,0}, + [I(12,103)] = {64,0}, + [I(13,103)] = {64,0}, + [I(14,103)] = {64,0}, + [I(15,103)] = {64,0}, + [I(16,103)] = {64,0}, + [I(17,103)] = {64,0}, + [I(18,103)] = {64,0}, + [I(19,103)] = {64,0}, + [I(20,103)] = {64,0}, + [I(21,103)] = {64,0}, + [I(22,103)] = {64,0}, + [I(23,103)] = {64,0}, + [I(24,103)] = {64,0}, + [I(25,103)] = {64,0}, + [I(26,103)] = {64,0}, + [I(27,103)] = {64,0}, + [I(28,103)] = {64,0}, + [I(29,103)] = {64,0}, + [I(30,103)] = {64,0}, + [I(31,103)] = {64,0}, + [I(32,103)] = {12,0x526}, + [I(33,103)] = {16,0xFE26}, + [I(34,103)] = {16,0xFE66}, + [I(35,103)] = {18,0x3FEA6}, + [I(36,103)] = {19,0x7FE66}, + [I(37,103)] = {12,0x566}, + [I(38,103)] = {14,0x3E26}, + [I(39,103)] = {17,0x1FEA6}, + [I(40,103)] = {16,0xFEA6}, + [I(41,103)] = {16,0xFEE6}, + [I(42,103)] = {14,0x3E66}, + [I(43,103)] = {17,0x1FEE6}, + [I(44,103)] = {14,0x3EA6}, + [I(45,103)] = {12,0x5A6}, + [I(46,103)] = {12,0x5E6}, + [I(47,103)] = {12,0x626}, + [I(48,103)] = {11,0x26}, + [I(49,103)] = {11,0x66}, + [I(50,103)] = {11,0xA6}, + [I(51,103)] = {12,0x666}, + [I(52,103)] = {12,0x6A6}, + [I(53,103)] = {12,0x6E6}, + [I(54,103)] = {12,0x726}, + [I(55,103)] = {12,0x766}, + [I(56,103)] = {12,0x7A6}, + [I(57,103)] = {12,0x7E6}, + [I(58,103)] = {13,0x1726}, + [I(59,103)] = {14,0x3EE6}, + [I(60,103)] = {21,0x1FFF26}, + [I(61,103)] = {12,0x826}, + [I(62,103)] = {18,0x3FEE6}, + [I(63,103)] = {16,0xFF26}, + [I(64,103)] = {19,0x7FEA6}, + [I(65,103)] = {12,0x866}, + [I(66,103)] = {13,0x1766}, + [I(67,103)] = {13,0x17A6}, + [I(68,103)] = {13,0x17E6}, + [I(69,103)] = {13,0x1826}, + [I(70,103)] = {13,0x1866}, + [I(71,103)] = {13,0x18A6}, + [I(72,103)] = {13,0x18E6}, + [I(73,103)] = {13,0x1926}, + [I(74,103)] = {13,0x1966}, + [I(75,103)] = {13,0x19A6}, + [I(76,103)] = {13,0x19E6}, + [I(77,103)] = {13,0x1A26}, + [I(78,103)] = {13,0x1A66}, + [I(79,103)] = {13,0x1AA6}, + [I(80,103)] = {13,0x1AE6}, + [I(81,103)] = {13,0x1B26}, + [I(82,103)] = {13,0x1B66}, + [I(83,103)] = {13,0x1BA6}, + [I(84,103)] = {13,0x1BE6}, + [I(85,103)] = {13,0x1C26}, + [I(86,103)] = {13,0x1C66}, + [I(87,103)] = {13,0x1CA6}, + [I(88,103)] = {14,0x3F26}, + [I(89,103)] = {13,0x1CE6}, + [I(90,103)] = {14,0x3F66}, + [I(91,103)] = {19,0x7FEE6}, + [I(92,103)] = {25,0x1FFFC26}, + [I(93,103)] = {19,0x7FF26}, + [I(94,103)] = {20,0xFFF26}, + [I(95,103)] = {12,0x8A6}, + [I(96,103)] = {21,0x1FFF66}, + [I(97,103)] = {11,0xE6}, + [I(98,103)] = {12,0x8E6}, + [I(99,103)] = {11,0x126}, + [I(100,103)] = {12,0x926}, + [I(101,103)] = {11,0x166}, + [I(102,103)] = {12,0x966}, + [I(103,103)] = {12,0x9A6}, + [I(104,103)] = {12,0x9E6}, + [I(105,103)] = {11,0x1A6}, + [I(106,103)] = {13,0x1D26}, + [I(107,103)] = {13,0x1D66}, + [I(108,103)] = {12,0xA26}, + [I(109,103)] = {12,0xA66}, + [I(110,103)] = {12,0xAA6}, + [I(111,103)] = {11,0x1E6}, + [I(112,103)] = {12,0xAE6}, + [I(113,103)] = {13,0x1DA6}, + [I(114,103)] = {12,0xB26}, + [I(115,103)] = {11,0x226}, + [I(116,103)] = {11,0x266}, + [I(117,103)] = {12,0xB66}, + [I(118,103)] = {13,0x1DE6}, + [I(119,103)] = {13,0x1E26}, + [I(120,103)] = {13,0x1E66}, + [I(121,103)] = {13,0x1EA6}, + [I(122,103)] = {13,0x1EE6}, + [I(123,103)] = {21,0x1FFFA6}, + [I(124,103)] = {17,0x1FF26}, + [I(125,103)] = {20,0xFFF66}, + [I(126,103)] = {19,0x7FF66}, + [I(127,103)] = {64,0}, + [I(128,103)] = {26,0x3FFF9A6}, + [I(129,103)] = {28,0xFFFF4A6}, + [I(130,103)] = {26,0x3FFF9E6}, + [I(131,103)] = {26,0x3FFFA26}, + [I(132,103)] = {28,0xFFFF4E6}, + [I(133,103)] = {28,0xFFFF526}, + [I(134,103)] = {28,0xFFFF566}, + [I(135,103)] = {29,0x1FFFF666}, + [I(136,103)] = {28,0xFFFF5A6}, + [I(137,103)] = {29,0x1FFFF6A6}, + [I(138,103)] = {29,0x1FFFF6E6}, + [I(139,103)] = {29,0x1FFFF726}, + [I(140,103)] = {29,0x1FFFF766}, + [I(141,103)] = {29,0x1FFFF7A6}, + [I(142,103)] = {30,0x3FFFFAE6}, + [I(143,103)] = {29,0x1FFFF7E6}, + [I(144,103)] = {30,0x3FFFFB26}, + [I(145,103)] = {30,0x3FFFFB66}, + [I(146,103)] = {28,0xFFFF5E6}, + [I(147,103)] = {29,0x1FFFF826}, + [I(148,103)] = {30,0x3FFFFBA6}, + [I(149,103)] = {29,0x1FFFF866}, + [I(150,103)] = {29,0x1FFFF8A6}, + [I(151,103)] = {29,0x1FFFF8E6}, + [I(152,103)] = {29,0x1FFFF926}, + [I(153,103)] = {27,0x7FFF726}, + [I(154,103)] = {28,0xFFFF626}, + [I(155,103)] = {29,0x1FFFF966}, + [I(156,103)] = {28,0xFFFF666}, + [I(157,103)] = {29,0x1FFFF9A6}, + [I(158,103)] = {29,0x1FFFF9E6}, + [I(159,103)] = {30,0x3FFFFBE6}, + [I(160,103)] = {28,0xFFFF6A6}, + [I(161,103)] = {27,0x7FFF766}, + [I(162,103)] = {26,0x3FFFA66}, + [I(163,103)] = {28,0xFFFF6E6}, + [I(164,103)] = {28,0xFFFF726}, + [I(165,103)] = {29,0x1FFFFA26}, + [I(166,103)] = {29,0x1FFFFA66}, + [I(167,103)] = {27,0x7FFF7A6}, + [I(168,103)] = {29,0x1FFFFAA6}, + [I(169,103)] = {28,0xFFFF766}, + [I(170,103)] = {28,0xFFFF7A6}, + [I(171,103)] = {30,0x3FFFFC26}, + [I(172,103)] = {27,0x7FFF7E6}, + [I(173,103)] = {28,0xFFFF7E6}, + [I(174,103)] = {29,0x1FFFFAE6}, + [I(175,103)] = {29,0x1FFFFB26}, + [I(176,103)] = {27,0x7FFF826}, + [I(177,103)] = {27,0x7FFF866}, + [I(178,103)] = {28,0xFFFF826}, + [I(179,103)] = {27,0x7FFF8A6}, + [I(180,103)] = {29,0x1FFFFB66}, + [I(181,103)] = {28,0xFFFF866}, + [I(182,103)] = {29,0x1FFFFBA6}, + [I(183,103)] = {29,0x1FFFFBE6}, + [I(184,103)] = {26,0x3FFFAA6}, + [I(185,103)] = {28,0xFFFF8A6}, + [I(186,103)] = {28,0xFFFF8E6}, + [I(187,103)] = {28,0xFFFF926}, + [I(188,103)] = {29,0x1FFFFC26}, + [I(189,103)] = {28,0xFFFF966}, + [I(190,103)] = {28,0xFFFF9A6}, + [I(191,103)] = {29,0x1FFFFC66}, + [I(192,103)] = {X32,0xFFFFF826}, + [I(193,103)] = {X32,0xFFFFF866}, + [I(194,103)] = {26,0x3FFFAE6}, + [I(195,103)] = {25,0x1FFFC66}, + [I(196,103)] = {28,0xFFFF9E6}, + [I(197,103)] = {29,0x1FFFFCA6}, + [I(198,103)] = {28,0xFFFFA26}, + [I(199,103)] = {31,0x7FFFFB26}, + [I(200,103)] = {X32,0xFFFFF8A6}, + [I(201,103)] = {X32,0xFFFFF8E6}, + [I(202,103)] = {X32,0xFFFFF926}, + [I(203,103)] = {64,0}, + [I(204,103)] = {64,0}, + [I(205,103)] = {X32,0xFFFFF966}, + [I(206,103)] = {30,0x3FFFFC66}, + [I(207,103)] = {31,0x7FFFFB66}, + [I(208,103)] = {25,0x1FFFCA6}, + [I(209,103)] = {27,0x7FFF8E6}, + [I(210,103)] = {X32,0xFFFFF9A6}, + [I(211,103)] = {64,0}, + [I(212,103)] = {64,0}, + [I(213,103)] = {X32,0xFFFFF9E6}, + [I(214,103)] = {64,0}, + [I(215,103)] = {30,0x3FFFFCA6}, + [I(216,103)] = {27,0x7FFF926}, + [I(217,103)] = {27,0x7FFF966}, + [I(218,103)] = {X32,0xFFFFFA26}, + [I(219,103)] = {X32,0xFFFFFA66}, + [I(220,103)] = {64,0}, + [I(221,103)] = {64,0}, + [I(222,103)] = {64,0}, + [I(223,103)] = {64,0}, + [I(224,103)] = {26,0x3FFFB26}, + [I(225,103)] = {30,0x3FFFFCE6}, + [I(226,103)] = {26,0x3FFFB66}, + [I(227,103)] = {27,0x7FFF9A6}, + [I(228,103)] = {28,0xFFFFA66}, + [I(229,103)] = {27,0x7FFF9E6}, + [I(230,103)] = {27,0x7FFFA26}, + [I(231,103)] = {29,0x1FFFFCE6}, + [I(232,103)] = {28,0xFFFFAA6}, + [I(233,103)] = {28,0xFFFFAE6}, + [I(234,103)] = {31,0x7FFFFBA6}, + [I(235,103)] = {31,0x7FFFFBE6}, + [I(236,103)] = {30,0x3FFFFD26}, + [I(237,103)] = {30,0x3FFFFD66}, + [I(238,103)] = {X32,0xFFFFFAA6}, + [I(239,103)] = {29,0x1FFFFD26}, + [I(240,103)] = {X32,0xFFFFFAE6}, + [I(241,103)] = {64,0}, + [I(242,103)] = {X32,0xFFFFFB26}, + [I(243,103)] = {X32,0xFFFFFB66}, + [I(244,103)] = {64,0}, + [I(245,103)] = {64,0}, + [I(246,103)] = {64,0}, + [I(247,103)] = {64,0}, + [I(248,103)] = {64,0}, + [I(249,103)] = {64,0}, + [I(250,103)] = {64,0}, + [I(251,103)] = {64,0}, + [I(252,103)] = {64,0}, + [I(253,103)] = {64,0}, + [I(254,103)] = {64,0}, + [I(255,103)] = {X32,0xFFFFFBA6}, + [I(0,104)] = {19,0x7FE27}, + [I(1,104)] = {29,0x1FFFF627}, + [I(2,104)] = {64,0}, + [I(3,104)] = {64,0}, + [I(4,104)] = {64,0}, + [I(5,104)] = {64,0}, + [I(6,104)] = {64,0}, + [I(7,104)] = {64,0}, + [I(8,104)] = {64,0}, + [I(9,104)] = {30,0x3FFFFAA7}, + [I(10,104)] = {64,0}, + [I(11,104)] = {64,0}, + [I(12,104)] = {64,0}, + [I(13,104)] = {64,0}, + [I(14,104)] = {64,0}, + [I(15,104)] = {64,0}, + [I(16,104)] = {64,0}, + [I(17,104)] = {64,0}, + [I(18,104)] = {64,0}, + [I(19,104)] = {64,0}, + [I(20,104)] = {64,0}, + [I(21,104)] = {64,0}, + [I(22,104)] = {64,0}, + [I(23,104)] = {64,0}, + [I(24,104)] = {64,0}, + [I(25,104)] = {64,0}, + [I(26,104)] = {64,0}, + [I(27,104)] = {64,0}, + [I(28,104)] = {64,0}, + [I(29,104)] = {64,0}, + [I(30,104)] = {64,0}, + [I(31,104)] = {64,0}, + [I(32,104)] = {12,0x527}, + [I(33,104)] = {16,0xFE27}, + [I(34,104)] = {16,0xFE67}, + [I(35,104)] = {18,0x3FEA7}, + [I(36,104)] = {19,0x7FE67}, + [I(37,104)] = {12,0x567}, + [I(38,104)] = {14,0x3E27}, + [I(39,104)] = {17,0x1FEA7}, + [I(40,104)] = {16,0xFEA7}, + [I(41,104)] = {16,0xFEE7}, + [I(42,104)] = {14,0x3E67}, + [I(43,104)] = {17,0x1FEE7}, + [I(44,104)] = {14,0x3EA7}, + [I(45,104)] = {12,0x5A7}, + [I(46,104)] = {12,0x5E7}, + [I(47,104)] = {12,0x627}, + [I(48,104)] = {11,0x27}, + [I(49,104)] = {11,0x67}, + [I(50,104)] = {11,0xA7}, + [I(51,104)] = {12,0x667}, + [I(52,104)] = {12,0x6A7}, + [I(53,104)] = {12,0x6E7}, + [I(54,104)] = {12,0x727}, + [I(55,104)] = {12,0x767}, + [I(56,104)] = {12,0x7A7}, + [I(57,104)] = {12,0x7E7}, + [I(58,104)] = {13,0x1727}, + [I(59,104)] = {14,0x3EE7}, + [I(60,104)] = {21,0x1FFF27}, + [I(61,104)] = {12,0x827}, + [I(62,104)] = {18,0x3FEE7}, + [I(63,104)] = {16,0xFF27}, + [I(64,104)] = {19,0x7FEA7}, + [I(65,104)] = {12,0x867}, + [I(66,104)] = {13,0x1767}, + [I(67,104)] = {13,0x17A7}, + [I(68,104)] = {13,0x17E7}, + [I(69,104)] = {13,0x1827}, + [I(70,104)] = {13,0x1867}, + [I(71,104)] = {13,0x18A7}, + [I(72,104)] = {13,0x18E7}, + [I(73,104)] = {13,0x1927}, + [I(74,104)] = {13,0x1967}, + [I(75,104)] = {13,0x19A7}, + [I(76,104)] = {13,0x19E7}, + [I(77,104)] = {13,0x1A27}, + [I(78,104)] = {13,0x1A67}, + [I(79,104)] = {13,0x1AA7}, + [I(80,104)] = {13,0x1AE7}, + [I(81,104)] = {13,0x1B27}, + [I(82,104)] = {13,0x1B67}, + [I(83,104)] = {13,0x1BA7}, + [I(84,104)] = {13,0x1BE7}, + [I(85,104)] = {13,0x1C27}, + [I(86,104)] = {13,0x1C67}, + [I(87,104)] = {13,0x1CA7}, + [I(88,104)] = {14,0x3F27}, + [I(89,104)] = {13,0x1CE7}, + [I(90,104)] = {14,0x3F67}, + [I(91,104)] = {19,0x7FEE7}, + [I(92,104)] = {25,0x1FFFC27}, + [I(93,104)] = {19,0x7FF27}, + [I(94,104)] = {20,0xFFF27}, + [I(95,104)] = {12,0x8A7}, + [I(96,104)] = {21,0x1FFF67}, + [I(97,104)] = {11,0xE7}, + [I(98,104)] = {12,0x8E7}, + [I(99,104)] = {11,0x127}, + [I(100,104)] = {12,0x927}, + [I(101,104)] = {11,0x167}, + [I(102,104)] = {12,0x967}, + [I(103,104)] = {12,0x9A7}, + [I(104,104)] = {12,0x9E7}, + [I(105,104)] = {11,0x1A7}, + [I(106,104)] = {13,0x1D27}, + [I(107,104)] = {13,0x1D67}, + [I(108,104)] = {12,0xA27}, + [I(109,104)] = {12,0xA67}, + [I(110,104)] = {12,0xAA7}, + [I(111,104)] = {11,0x1E7}, + [I(112,104)] = {12,0xAE7}, + [I(113,104)] = {13,0x1DA7}, + [I(114,104)] = {12,0xB27}, + [I(115,104)] = {11,0x227}, + [I(116,104)] = {11,0x267}, + [I(117,104)] = {12,0xB67}, + [I(118,104)] = {13,0x1DE7}, + [I(119,104)] = {13,0x1E27}, + [I(120,104)] = {13,0x1E67}, + [I(121,104)] = {13,0x1EA7}, + [I(122,104)] = {13,0x1EE7}, + [I(123,104)] = {21,0x1FFFA7}, + [I(124,104)] = {17,0x1FF27}, + [I(125,104)] = {20,0xFFF67}, + [I(126,104)] = {19,0x7FF67}, + [I(127,104)] = {64,0}, + [I(128,104)] = {26,0x3FFF9A7}, + [I(129,104)] = {28,0xFFFF4A7}, + [I(130,104)] = {26,0x3FFF9E7}, + [I(131,104)] = {26,0x3FFFA27}, + [I(132,104)] = {28,0xFFFF4E7}, + [I(133,104)] = {28,0xFFFF527}, + [I(134,104)] = {28,0xFFFF567}, + [I(135,104)] = {29,0x1FFFF667}, + [I(136,104)] = {28,0xFFFF5A7}, + [I(137,104)] = {29,0x1FFFF6A7}, + [I(138,104)] = {29,0x1FFFF6E7}, + [I(139,104)] = {29,0x1FFFF727}, + [I(140,104)] = {29,0x1FFFF767}, + [I(141,104)] = {29,0x1FFFF7A7}, + [I(142,104)] = {30,0x3FFFFAE7}, + [I(143,104)] = {29,0x1FFFF7E7}, + [I(144,104)] = {30,0x3FFFFB27}, + [I(145,104)] = {30,0x3FFFFB67}, + [I(146,104)] = {28,0xFFFF5E7}, + [I(147,104)] = {29,0x1FFFF827}, + [I(148,104)] = {30,0x3FFFFBA7}, + [I(149,104)] = {29,0x1FFFF867}, + [I(150,104)] = {29,0x1FFFF8A7}, + [I(151,104)] = {29,0x1FFFF8E7}, + [I(152,104)] = {29,0x1FFFF927}, + [I(153,104)] = {27,0x7FFF727}, + [I(154,104)] = {28,0xFFFF627}, + [I(155,104)] = {29,0x1FFFF967}, + [I(156,104)] = {28,0xFFFF667}, + [I(157,104)] = {29,0x1FFFF9A7}, + [I(158,104)] = {29,0x1FFFF9E7}, + [I(159,104)] = {30,0x3FFFFBE7}, + [I(160,104)] = {28,0xFFFF6A7}, + [I(161,104)] = {27,0x7FFF767}, + [I(162,104)] = {26,0x3FFFA67}, + [I(163,104)] = {28,0xFFFF6E7}, + [I(164,104)] = {28,0xFFFF727}, + [I(165,104)] = {29,0x1FFFFA27}, + [I(166,104)] = {29,0x1FFFFA67}, + [I(167,104)] = {27,0x7FFF7A7}, + [I(168,104)] = {29,0x1FFFFAA7}, + [I(169,104)] = {28,0xFFFF767}, + [I(170,104)] = {28,0xFFFF7A7}, + [I(171,104)] = {30,0x3FFFFC27}, + [I(172,104)] = {27,0x7FFF7E7}, + [I(173,104)] = {28,0xFFFF7E7}, + [I(174,104)] = {29,0x1FFFFAE7}, + [I(175,104)] = {29,0x1FFFFB27}, + [I(176,104)] = {27,0x7FFF827}, + [I(177,104)] = {27,0x7FFF867}, + [I(178,104)] = {28,0xFFFF827}, + [I(179,104)] = {27,0x7FFF8A7}, + [I(180,104)] = {29,0x1FFFFB67}, + [I(181,104)] = {28,0xFFFF867}, + [I(182,104)] = {29,0x1FFFFBA7}, + [I(183,104)] = {29,0x1FFFFBE7}, + [I(184,104)] = {26,0x3FFFAA7}, + [I(185,104)] = {28,0xFFFF8A7}, + [I(186,104)] = {28,0xFFFF8E7}, + [I(187,104)] = {28,0xFFFF927}, + [I(188,104)] = {29,0x1FFFFC27}, + [I(189,104)] = {28,0xFFFF967}, + [I(190,104)] = {28,0xFFFF9A7}, + [I(191,104)] = {29,0x1FFFFC67}, + [I(192,104)] = {X32,0xFFFFF827}, + [I(193,104)] = {X32,0xFFFFF867}, + [I(194,104)] = {26,0x3FFFAE7}, + [I(195,104)] = {25,0x1FFFC67}, + [I(196,104)] = {28,0xFFFF9E7}, + [I(197,104)] = {29,0x1FFFFCA7}, + [I(198,104)] = {28,0xFFFFA27}, + [I(199,104)] = {31,0x7FFFFB27}, + [I(200,104)] = {X32,0xFFFFF8A7}, + [I(201,104)] = {X32,0xFFFFF8E7}, + [I(202,104)] = {X32,0xFFFFF927}, + [I(203,104)] = {64,0}, + [I(204,104)] = {64,0}, + [I(205,104)] = {X32,0xFFFFF967}, + [I(206,104)] = {30,0x3FFFFC67}, + [I(207,104)] = {31,0x7FFFFB67}, + [I(208,104)] = {25,0x1FFFCA7}, + [I(209,104)] = {27,0x7FFF8E7}, + [I(210,104)] = {X32,0xFFFFF9A7}, + [I(211,104)] = {64,0}, + [I(212,104)] = {64,0}, + [I(213,104)] = {X32,0xFFFFF9E7}, + [I(214,104)] = {64,0}, + [I(215,104)] = {30,0x3FFFFCA7}, + [I(216,104)] = {27,0x7FFF927}, + [I(217,104)] = {27,0x7FFF967}, + [I(218,104)] = {X32,0xFFFFFA27}, + [I(219,104)] = {X32,0xFFFFFA67}, + [I(220,104)] = {64,0}, + [I(221,104)] = {64,0}, + [I(222,104)] = {64,0}, + [I(223,104)] = {64,0}, + [I(224,104)] = {26,0x3FFFB27}, + [I(225,104)] = {30,0x3FFFFCE7}, + [I(226,104)] = {26,0x3FFFB67}, + [I(227,104)] = {27,0x7FFF9A7}, + [I(228,104)] = {28,0xFFFFA67}, + [I(229,104)] = {27,0x7FFF9E7}, + [I(230,104)] = {27,0x7FFFA27}, + [I(231,104)] = {29,0x1FFFFCE7}, + [I(232,104)] = {28,0xFFFFAA7}, + [I(233,104)] = {28,0xFFFFAE7}, + [I(234,104)] = {31,0x7FFFFBA7}, + [I(235,104)] = {31,0x7FFFFBE7}, + [I(236,104)] = {30,0x3FFFFD27}, + [I(237,104)] = {30,0x3FFFFD67}, + [I(238,104)] = {X32,0xFFFFFAA7}, + [I(239,104)] = {29,0x1FFFFD27}, + [I(240,104)] = {X32,0xFFFFFAE7}, + [I(241,104)] = {64,0}, + [I(242,104)] = {X32,0xFFFFFB27}, + [I(243,104)] = {X32,0xFFFFFB67}, + [I(244,104)] = {64,0}, + [I(245,104)] = {64,0}, + [I(246,104)] = {64,0}, + [I(247,104)] = {64,0}, + [I(248,104)] = {64,0}, + [I(249,104)] = {64,0}, + [I(250,104)] = {64,0}, + [I(251,104)] = {64,0}, + [I(252,104)] = {64,0}, + [I(253,104)] = {64,0}, + [I(254,104)] = {64,0}, + [I(255,104)] = {X32,0xFFFFFBA7}, + [I(0,105)] = {18,0x3FF06}, + [I(1,105)] = {28,0xFFFFB06}, + [I(2,105)] = {64,0}, + [I(3,105)] = {64,0}, + [I(4,105)] = {64,0}, + [I(5,105)] = {64,0}, + [I(6,105)] = {64,0}, + [I(7,105)] = {64,0}, + [I(8,105)] = {64,0}, + [I(9,105)] = {29,0x1FFFFD46}, + [I(10,105)] = {64,0}, + [I(11,105)] = {64,0}, + [I(12,105)] = {64,0}, + [I(13,105)] = {64,0}, + [I(14,105)] = {64,0}, + [I(15,105)] = {64,0}, + [I(16,105)] = {64,0}, + [I(17,105)] = {64,0}, + [I(18,105)] = {64,0}, + [I(19,105)] = {64,0}, + [I(20,105)] = {64,0}, + [I(21,105)] = {64,0}, + [I(22,105)] = {64,0}, + [I(23,105)] = {64,0}, + [I(24,105)] = {64,0}, + [I(25,105)] = {64,0}, + [I(26,105)] = {64,0}, + [I(27,105)] = {64,0}, + [I(28,105)] = {64,0}, + [I(29,105)] = {64,0}, + [I(30,105)] = {64,0}, + [I(31,105)] = {64,0}, + [I(32,105)] = {11,0x286}, + [I(33,105)] = {15,0x7F06}, + [I(34,105)] = {15,0x7F26}, + [I(35,105)] = {17,0x1FF46}, + [I(36,105)] = {18,0x3FF26}, + [I(37,105)] = {11,0x2A6}, + [I(38,105)] = {13,0x1F06}, + [I(39,105)] = {16,0xFF46}, + [I(40,105)] = {15,0x7F46}, + [I(41,105)] = {15,0x7F66}, + [I(42,105)] = {13,0x1F26}, + [I(43,105)] = {16,0xFF66}, + [I(44,105)] = {13,0x1F46}, + [I(45,105)] = {11,0x2C6}, + [I(46,105)] = {11,0x2E6}, + [I(47,105)] = {11,0x306}, + [I(48,105)] = {10,0x6}, + [I(49,105)] = {10,0x26}, + [I(50,105)] = {10,0x46}, + [I(51,105)] = {11,0x326}, + [I(52,105)] = {11,0x346}, + [I(53,105)] = {11,0x366}, + [I(54,105)] = {11,0x386}, + [I(55,105)] = {11,0x3A6}, + [I(56,105)] = {11,0x3C6}, + [I(57,105)] = {11,0x3E6}, + [I(58,105)] = {12,0xB86}, + [I(59,105)] = {13,0x1F66}, + [I(60,105)] = {20,0xFFF86}, + [I(61,105)] = {11,0x406}, + [I(62,105)] = {17,0x1FF66}, + [I(63,105)] = {15,0x7F86}, + [I(64,105)] = {18,0x3FF46}, + [I(65,105)] = {11,0x426}, + [I(66,105)] = {12,0xBA6}, + [I(67,105)] = {12,0xBC6}, + [I(68,105)] = {12,0xBE6}, + [I(69,105)] = {12,0xC06}, + [I(70,105)] = {12,0xC26}, + [I(71,105)] = {12,0xC46}, + [I(72,105)] = {12,0xC66}, + [I(73,105)] = {12,0xC86}, + [I(74,105)] = {12,0xCA6}, + [I(75,105)] = {12,0xCC6}, + [I(76,105)] = {12,0xCE6}, + [I(77,105)] = {12,0xD06}, + [I(78,105)] = {12,0xD26}, + [I(79,105)] = {12,0xD46}, + [I(80,105)] = {12,0xD66}, + [I(81,105)] = {12,0xD86}, + [I(82,105)] = {12,0xDA6}, + [I(83,105)] = {12,0xDC6}, + [I(84,105)] = {12,0xDE6}, + [I(85,105)] = {12,0xE06}, + [I(86,105)] = {12,0xE26}, + [I(87,105)] = {12,0xE46}, + [I(88,105)] = {13,0x1F86}, + [I(89,105)] = {12,0xE66}, + [I(90,105)] = {13,0x1FA6}, + [I(91,105)] = {18,0x3FF66}, + [I(92,105)] = {24,0xFFFE06}, + [I(93,105)] = {18,0x3FF86}, + [I(94,105)] = {19,0x7FF86}, + [I(95,105)] = {11,0x446}, + [I(96,105)] = {20,0xFFFA6}, + [I(97,105)] = {10,0x66}, + [I(98,105)] = {11,0x466}, + [I(99,105)] = {10,0x86}, + [I(100,105)] = {11,0x486}, + [I(101,105)] = {10,0xA6}, + [I(102,105)] = {11,0x4A6}, + [I(103,105)] = {11,0x4C6}, + [I(104,105)] = {11,0x4E6}, + [I(105,105)] = {10,0xC6}, + [I(106,105)] = {12,0xE86}, + [I(107,105)] = {12,0xEA6}, + [I(108,105)] = {11,0x506}, + [I(109,105)] = {11,0x526}, + [I(110,105)] = {11,0x546}, + [I(111,105)] = {10,0xE6}, + [I(112,105)] = {11,0x566}, + [I(113,105)] = {12,0xEC6}, + [I(114,105)] = {11,0x586}, + [I(115,105)] = {10,0x106}, + [I(116,105)] = {10,0x126}, + [I(117,105)] = {11,0x5A6}, + [I(118,105)] = {12,0xEE6}, + [I(119,105)] = {12,0xF06}, + [I(120,105)] = {12,0xF26}, + [I(121,105)] = {12,0xF46}, + [I(122,105)] = {12,0xF66}, + [I(123,105)] = {20,0xFFFC6}, + [I(124,105)] = {16,0xFF86}, + [I(125,105)] = {19,0x7FFA6}, + [I(126,105)] = {18,0x3FFA6}, + [I(127,105)] = {64,0}, + [I(128,105)] = {25,0x1FFFCC6}, + [I(129,105)] = {27,0x7FFFA46}, + [I(130,105)] = {25,0x1FFFCE6}, + [I(131,105)] = {25,0x1FFFD06}, + [I(132,105)] = {27,0x7FFFA66}, + [I(133,105)] = {27,0x7FFFA86}, + [I(134,105)] = {27,0x7FFFAA6}, + [I(135,105)] = {28,0xFFFFB26}, + [I(136,105)] = {27,0x7FFFAC6}, + [I(137,105)] = {28,0xFFFFB46}, + [I(138,105)] = {28,0xFFFFB66}, + [I(139,105)] = {28,0xFFFFB86}, + [I(140,105)] = {28,0xFFFFBA6}, + [I(141,105)] = {28,0xFFFFBC6}, + [I(142,105)] = {29,0x1FFFFD66}, + [I(143,105)] = {28,0xFFFFBE6}, + [I(144,105)] = {29,0x1FFFFD86}, + [I(145,105)] = {29,0x1FFFFDA6}, + [I(146,105)] = {27,0x7FFFAE6}, + [I(147,105)] = {28,0xFFFFC06}, + [I(148,105)] = {29,0x1FFFFDC6}, + [I(149,105)] = {28,0xFFFFC26}, + [I(150,105)] = {28,0xFFFFC46}, + [I(151,105)] = {28,0xFFFFC66}, + [I(152,105)] = {28,0xFFFFC86}, + [I(153,105)] = {26,0x3FFFB86}, + [I(154,105)] = {27,0x7FFFB06}, + [I(155,105)] = {28,0xFFFFCA6}, + [I(156,105)] = {27,0x7FFFB26}, + [I(157,105)] = {28,0xFFFFCC6}, + [I(158,105)] = {28,0xFFFFCE6}, + [I(159,105)] = {29,0x1FFFFDE6}, + [I(160,105)] = {27,0x7FFFB46}, + [I(161,105)] = {26,0x3FFFBA6}, + [I(162,105)] = {25,0x1FFFD26}, + [I(163,105)] = {27,0x7FFFB66}, + [I(164,105)] = {27,0x7FFFB86}, + [I(165,105)] = {28,0xFFFFD06}, + [I(166,105)] = {28,0xFFFFD26}, + [I(167,105)] = {26,0x3FFFBC6}, + [I(168,105)] = {28,0xFFFFD46}, + [I(169,105)] = {27,0x7FFFBA6}, + [I(170,105)] = {27,0x7FFFBC6}, + [I(171,105)] = {29,0x1FFFFE06}, + [I(172,105)] = {26,0x3FFFBE6}, + [I(173,105)] = {27,0x7FFFBE6}, + [I(174,105)] = {28,0xFFFFD66}, + [I(175,105)] = {28,0xFFFFD86}, + [I(176,105)] = {26,0x3FFFC06}, + [I(177,105)] = {26,0x3FFFC26}, + [I(178,105)] = {27,0x7FFFC06}, + [I(179,105)] = {26,0x3FFFC46}, + [I(180,105)] = {28,0xFFFFDA6}, + [I(181,105)] = {27,0x7FFFC26}, + [I(182,105)] = {28,0xFFFFDC6}, + [I(183,105)] = {28,0xFFFFDE6}, + [I(184,105)] = {25,0x1FFFD46}, + [I(185,105)] = {27,0x7FFFC46}, + [I(186,105)] = {27,0x7FFFC66}, + [I(187,105)] = {27,0x7FFFC86}, + [I(188,105)] = {28,0xFFFFE06}, + [I(189,105)] = {27,0x7FFFCA6}, + [I(190,105)] = {27,0x7FFFCC6}, + [I(191,105)] = {28,0xFFFFE26}, + [I(192,105)] = {31,0x7FFFFC06}, + [I(193,105)] = {31,0x7FFFFC26}, + [I(194,105)] = {25,0x1FFFD66}, + [I(195,105)] = {24,0xFFFE26}, + [I(196,105)] = {27,0x7FFFCE6}, + [I(197,105)] = {28,0xFFFFE46}, + [I(198,105)] = {27,0x7FFFD06}, + [I(199,105)] = {30,0x3FFFFD86}, + [I(200,105)] = {31,0x7FFFFC46}, + [I(201,105)] = {31,0x7FFFFC66}, + [I(202,105)] = {31,0x7FFFFC86}, + [I(203,105)] = {X32,0xFFFFFBC6}, + [I(204,105)] = {X32,0xFFFFFBE6}, + [I(205,105)] = {31,0x7FFFFCA6}, + [I(206,105)] = {29,0x1FFFFE26}, + [I(207,105)] = {30,0x3FFFFDA6}, + [I(208,105)] = {24,0xFFFE46}, + [I(209,105)] = {26,0x3FFFC66}, + [I(210,105)] = {31,0x7FFFFCC6}, + [I(211,105)] = {X32,0xFFFFFC06}, + [I(212,105)] = {X32,0xFFFFFC26}, + [I(213,105)] = {31,0x7FFFFCE6}, + [I(214,105)] = {X32,0xFFFFFC46}, + [I(215,105)] = {29,0x1FFFFE46}, + [I(216,105)] = {26,0x3FFFC86}, + [I(217,105)] = {26,0x3FFFCA6}, + [I(218,105)] = {31,0x7FFFFD06}, + [I(219,105)] = {31,0x7FFFFD26}, + [I(220,105)] = {64,0}, + [I(221,105)] = {X32,0xFFFFFC66}, + [I(222,105)] = {X32,0xFFFFFC86}, + [I(223,105)] = {X32,0xFFFFFCA6}, + [I(224,105)] = {25,0x1FFFD86}, + [I(225,105)] = {29,0x1FFFFE66}, + [I(226,105)] = {25,0x1FFFDA6}, + [I(227,105)] = {26,0x3FFFCC6}, + [I(228,105)] = {27,0x7FFFD26}, + [I(229,105)] = {26,0x3FFFCE6}, + [I(230,105)] = {26,0x3FFFD06}, + [I(231,105)] = {28,0xFFFFE66}, + [I(232,105)] = {27,0x7FFFD46}, + [I(233,105)] = {27,0x7FFFD66}, + [I(234,105)] = {30,0x3FFFFDC6}, + [I(235,105)] = {30,0x3FFFFDE6}, + [I(236,105)] = {29,0x1FFFFE86}, + [I(237,105)] = {29,0x1FFFFEA6}, + [I(238,105)] = {31,0x7FFFFD46}, + [I(239,105)] = {28,0xFFFFE86}, + [I(240,105)] = {31,0x7FFFFD66}, + [I(241,105)] = {X32,0xFFFFFCC6}, + [I(242,105)] = {31,0x7FFFFD86}, + [I(243,105)] = {31,0x7FFFFDA6}, + [I(244,105)] = {X32,0xFFFFFCE6}, + [I(245,105)] = {X32,0xFFFFFD06}, + [I(246,105)] = {X32,0xFFFFFD26}, + [I(247,105)] = {X32,0xFFFFFD46}, + [I(248,105)] = {X32,0xFFFFFD66}, + [I(249,105)] = {64,0}, + [I(250,105)] = {X32,0xFFFFFD86}, + [I(251,105)] = {X32,0xFFFFFDA6}, + [I(252,105)] = {X32,0xFFFFFDC6}, + [I(253,105)] = {X32,0xFFFFFDE6}, + [I(254,105)] = {X32,0xFFFFFE06}, + [I(255,105)] = {31,0x7FFFFDC6}, + [I(0,106)] = {20,0xFFC74}, + [I(1,106)] = {30,0x3FFFEC74}, + [I(2,106)] = {64,0}, + [I(3,106)] = {64,0}, + [I(4,106)] = {64,0}, + [I(5,106)] = {64,0}, + [I(6,106)] = {64,0}, + [I(7,106)] = {64,0}, + [I(8,106)] = {64,0}, + [I(9,106)] = {31,0x7FFFF574}, + [I(10,106)] = {64,0}, + [I(11,106)] = {64,0}, + [I(12,106)] = {64,0}, + [I(13,106)] = {64,0}, + [I(14,106)] = {64,0}, + [I(15,106)] = {64,0}, + [I(16,106)] = {64,0}, + [I(17,106)] = {64,0}, + [I(18,106)] = {64,0}, + [I(19,106)] = {64,0}, + [I(20,106)] = {64,0}, + [I(21,106)] = {64,0}, + [I(22,106)] = {64,0}, + [I(23,106)] = {64,0}, + [I(24,106)] = {64,0}, + [I(25,106)] = {64,0}, + [I(26,106)] = {64,0}, + [I(27,106)] = {64,0}, + [I(28,106)] = {64,0}, + [I(29,106)] = {64,0}, + [I(30,106)] = {64,0}, + [I(31,106)] = {64,0}, + [I(32,106)] = {13,0xA74}, + [I(33,106)] = {17,0x1FC74}, + [I(34,106)] = {17,0x1FCF4}, + [I(35,106)] = {19,0x7FD74}, + [I(36,106)] = {20,0xFFCF4}, + [I(37,106)] = {13,0xAF4}, + [I(38,106)] = {15,0x7C74}, + [I(39,106)] = {18,0x3FD74}, + [I(40,106)] = {17,0x1FD74}, + [I(41,106)] = {17,0x1FDF4}, + [I(42,106)] = {15,0x7CF4}, + [I(43,106)] = {18,0x3FDF4}, + [I(44,106)] = {15,0x7D74}, + [I(45,106)] = {13,0xB74}, + [I(46,106)] = {13,0xBF4}, + [I(47,106)] = {13,0xC74}, + [I(48,106)] = {12,0x74}, + [I(49,106)] = {12,0xF4}, + [I(50,106)] = {12,0x174}, + [I(51,106)] = {13,0xCF4}, + [I(52,106)] = {13,0xD74}, + [I(53,106)] = {13,0xDF4}, + [I(54,106)] = {13,0xE74}, + [I(55,106)] = {13,0xEF4}, + [I(56,106)] = {13,0xF74}, + [I(57,106)] = {13,0xFF4}, + [I(58,106)] = {14,0x2E74}, + [I(59,106)] = {15,0x7DF4}, + [I(60,106)] = {22,0x3FFE74}, + [I(61,106)] = {13,0x1074}, + [I(62,106)] = {19,0x7FDF4}, + [I(63,106)] = {17,0x1FE74}, + [I(64,106)] = {20,0xFFD74}, + [I(65,106)] = {13,0x10F4}, + [I(66,106)] = {14,0x2EF4}, + [I(67,106)] = {14,0x2F74}, + [I(68,106)] = {14,0x2FF4}, + [I(69,106)] = {14,0x3074}, + [I(70,106)] = {14,0x30F4}, + [I(71,106)] = {14,0x3174}, + [I(72,106)] = {14,0x31F4}, + [I(73,106)] = {14,0x3274}, + [I(74,106)] = {14,0x32F4}, + [I(75,106)] = {14,0x3374}, + [I(76,106)] = {14,0x33F4}, + [I(77,106)] = {14,0x3474}, + [I(78,106)] = {14,0x34F4}, + [I(79,106)] = {14,0x3574}, + [I(80,106)] = {14,0x35F4}, + [I(81,106)] = {14,0x3674}, + [I(82,106)] = {14,0x36F4}, + [I(83,106)] = {14,0x3774}, + [I(84,106)] = {14,0x37F4}, + [I(85,106)] = {14,0x3874}, + [I(86,106)] = {14,0x38F4}, + [I(87,106)] = {14,0x3974}, + [I(88,106)] = {15,0x7E74}, + [I(89,106)] = {14,0x39F4}, + [I(90,106)] = {15,0x7EF4}, + [I(91,106)] = {20,0xFFDF4}, + [I(92,106)] = {26,0x3FFF874}, + [I(93,106)] = {20,0xFFE74}, + [I(94,106)] = {21,0x1FFE74}, + [I(95,106)] = {13,0x1174}, + [I(96,106)] = {22,0x3FFEF4}, + [I(97,106)] = {12,0x1F4}, + [I(98,106)] = {13,0x11F4}, + [I(99,106)] = {12,0x274}, + [I(100,106)] = {13,0x1274}, + [I(101,106)] = {12,0x2F4}, + [I(102,106)] = {13,0x12F4}, + [I(103,106)] = {13,0x1374}, + [I(104,106)] = {13,0x13F4}, + [I(105,106)] = {12,0x374}, + [I(106,106)] = {14,0x3A74}, + [I(107,106)] = {14,0x3AF4}, + [I(108,106)] = {13,0x1474}, + [I(109,106)] = {13,0x14F4}, + [I(110,106)] = {13,0x1574}, + [I(111,106)] = {12,0x3F4}, + [I(112,106)] = {13,0x15F4}, + [I(113,106)] = {14,0x3B74}, + [I(114,106)] = {13,0x1674}, + [I(115,106)] = {12,0x474}, + [I(116,106)] = {12,0x4F4}, + [I(117,106)] = {13,0x16F4}, + [I(118,106)] = {14,0x3BF4}, + [I(119,106)] = {14,0x3C74}, + [I(120,106)] = {14,0x3CF4}, + [I(121,106)] = {14,0x3D74}, + [I(122,106)] = {14,0x3DF4}, + [I(123,106)] = {22,0x3FFF74}, + [I(124,106)] = {18,0x3FE74}, + [I(125,106)] = {21,0x1FFEF4}, + [I(126,106)] = {20,0xFFEF4}, + [I(127,106)] = {64,0}, + [I(128,106)] = {27,0x7FFF374}, + [I(129,106)] = {29,0x1FFFE974}, + [I(130,106)] = {27,0x7FFF3F4}, + [I(131,106)] = {27,0x7FFF474}, + [I(132,106)] = {29,0x1FFFE9F4}, + [I(133,106)] = {29,0x1FFFEA74}, + [I(134,106)] = {29,0x1FFFEAF4}, + [I(135,106)] = {30,0x3FFFECF4}, + [I(136,106)] = {29,0x1FFFEB74}, + [I(137,106)] = {30,0x3FFFED74}, + [I(138,106)] = {30,0x3FFFEDF4}, + [I(139,106)] = {30,0x3FFFEE74}, + [I(140,106)] = {30,0x3FFFEEF4}, + [I(141,106)] = {30,0x3FFFEF74}, + [I(142,106)] = {31,0x7FFFF5F4}, + [I(143,106)] = {30,0x3FFFEFF4}, + [I(144,106)] = {31,0x7FFFF674}, + [I(145,106)] = {31,0x7FFFF6F4}, + [I(146,106)] = {29,0x1FFFEBF4}, + [I(147,106)] = {30,0x3FFFF074}, + [I(148,106)] = {31,0x7FFFF774}, + [I(149,106)] = {30,0x3FFFF0F4}, + [I(150,106)] = {30,0x3FFFF174}, + [I(151,106)] = {30,0x3FFFF1F4}, + [I(152,106)] = {30,0x3FFFF274}, + [I(153,106)] = {28,0xFFFEE74}, + [I(154,106)] = {29,0x1FFFEC74}, + [I(155,106)] = {30,0x3FFFF2F4}, + [I(156,106)] = {29,0x1FFFECF4}, + [I(157,106)] = {30,0x3FFFF374}, + [I(158,106)] = {30,0x3FFFF3F4}, + [I(159,106)] = {31,0x7FFFF7F4}, + [I(160,106)] = {29,0x1FFFED74}, + [I(161,106)] = {28,0xFFFEEF4}, + [I(162,106)] = {27,0x7FFF4F4}, + [I(163,106)] = {29,0x1FFFEDF4}, + [I(164,106)] = {29,0x1FFFEE74}, + [I(165,106)] = {30,0x3FFFF474}, + [I(166,106)] = {30,0x3FFFF4F4}, + [I(167,106)] = {28,0xFFFEF74}, + [I(168,106)] = {30,0x3FFFF574}, + [I(169,106)] = {29,0x1FFFEEF4}, + [I(170,106)] = {29,0x1FFFEF74}, + [I(171,106)] = {31,0x7FFFF874}, + [I(172,106)] = {28,0xFFFEFF4}, + [I(173,106)] = {29,0x1FFFEFF4}, + [I(174,106)] = {30,0x3FFFF5F4}, + [I(175,106)] = {30,0x3FFFF674}, + [I(176,106)] = {28,0xFFFF074}, + [I(177,106)] = {28,0xFFFF0F4}, + [I(178,106)] = {29,0x1FFFF074}, + [I(179,106)] = {28,0xFFFF174}, + [I(180,106)] = {30,0x3FFFF6F4}, + [I(181,106)] = {29,0x1FFFF0F4}, + [I(182,106)] = {30,0x3FFFF774}, + [I(183,106)] = {30,0x3FFFF7F4}, + [I(184,106)] = {27,0x7FFF574}, + [I(185,106)] = {29,0x1FFFF174}, + [I(186,106)] = {29,0x1FFFF1F4}, + [I(187,106)] = {29,0x1FFFF274}, + [I(188,106)] = {30,0x3FFFF874}, + [I(189,106)] = {29,0x1FFFF2F4}, + [I(190,106)] = {29,0x1FFFF374}, + [I(191,106)] = {30,0x3FFFF8F4}, + [I(192,106)] = {64,0}, + [I(193,106)] = {64,0}, + [I(194,106)] = {27,0x7FFF5F4}, + [I(195,106)] = {26,0x3FFF8F4}, + [I(196,106)] = {29,0x1FFFF3F4}, + [I(197,106)] = {30,0x3FFFF974}, + [I(198,106)] = {29,0x1FFFF474}, + [I(199,106)] = {X32,0xFFFFF674}, + [I(200,106)] = {64,0}, + [I(201,106)] = {64,0}, + [I(202,106)] = {64,0}, + [I(203,106)] = {64,0}, + [I(204,106)] = {64,0}, + [I(205,106)] = {64,0}, + [I(206,106)] = {31,0x7FFFF8F4}, + [I(207,106)] = {X32,0xFFFFF6F4}, + [I(208,106)] = {26,0x3FFF974}, + [I(209,106)] = {28,0xFFFF1F4}, + [I(210,106)] = {64,0}, + [I(211,106)] = {64,0}, + [I(212,106)] = {64,0}, + [I(213,106)] = {64,0}, + [I(214,106)] = {64,0}, + [I(215,106)] = {31,0x7FFFF974}, + [I(216,106)] = {28,0xFFFF274}, + [I(217,106)] = {28,0xFFFF2F4}, + [I(218,106)] = {64,0}, + [I(219,106)] = {64,0}, + [I(220,106)] = {64,0}, + [I(221,106)] = {64,0}, + [I(222,106)] = {64,0}, + [I(223,106)] = {64,0}, + [I(224,106)] = {27,0x7FFF674}, + [I(225,106)] = {31,0x7FFFF9F4}, + [I(226,106)] = {27,0x7FFF6F4}, + [I(227,106)] = {28,0xFFFF374}, + [I(228,106)] = {29,0x1FFFF4F4}, + [I(229,106)] = {28,0xFFFF3F4}, + [I(230,106)] = {28,0xFFFF474}, + [I(231,106)] = {30,0x3FFFF9F4}, + [I(232,106)] = {29,0x1FFFF574}, + [I(233,106)] = {29,0x1FFFF5F4}, + [I(234,106)] = {X32,0xFFFFF774}, + [I(235,106)] = {X32,0xFFFFF7F4}, + [I(236,106)] = {31,0x7FFFFA74}, + [I(237,106)] = {31,0x7FFFFAF4}, + [I(238,106)] = {64,0}, + [I(239,106)] = {30,0x3FFFFA74}, + [I(240,106)] = {64,0}, + [I(241,106)] = {64,0}, + [I(242,106)] = {64,0}, + [I(243,106)] = {64,0}, + [I(244,106)] = {64,0}, + [I(245,106)] = {64,0}, + [I(246,106)] = {64,0}, + [I(247,106)] = {64,0}, + [I(248,106)] = {64,0}, + [I(249,106)] = {64,0}, + [I(250,106)] = {64,0}, + [I(251,106)] = {64,0}, + [I(252,106)] = {64,0}, + [I(253,106)] = {64,0}, + [I(254,106)] = {64,0}, + [I(255,106)] = {64,0}, + [I(0,107)] = {20,0xFFC75}, + [I(1,107)] = {30,0x3FFFEC75}, + [I(2,107)] = {64,0}, + [I(3,107)] = {64,0}, + [I(4,107)] = {64,0}, + [I(5,107)] = {64,0}, + [I(6,107)] = {64,0}, + [I(7,107)] = {64,0}, + [I(8,107)] = {64,0}, + [I(9,107)] = {31,0x7FFFF575}, + [I(10,107)] = {64,0}, + [I(11,107)] = {64,0}, + [I(12,107)] = {64,0}, + [I(13,107)] = {64,0}, + [I(14,107)] = {64,0}, + [I(15,107)] = {64,0}, + [I(16,107)] = {64,0}, + [I(17,107)] = {64,0}, + [I(18,107)] = {64,0}, + [I(19,107)] = {64,0}, + [I(20,107)] = {64,0}, + [I(21,107)] = {64,0}, + [I(22,107)] = {64,0}, + [I(23,107)] = {64,0}, + [I(24,107)] = {64,0}, + [I(25,107)] = {64,0}, + [I(26,107)] = {64,0}, + [I(27,107)] = {64,0}, + [I(28,107)] = {64,0}, + [I(29,107)] = {64,0}, + [I(30,107)] = {64,0}, + [I(31,107)] = {64,0}, + [I(32,107)] = {13,0xA75}, + [I(33,107)] = {17,0x1FC75}, + [I(34,107)] = {17,0x1FCF5}, + [I(35,107)] = {19,0x7FD75}, + [I(36,107)] = {20,0xFFCF5}, + [I(37,107)] = {13,0xAF5}, + [I(38,107)] = {15,0x7C75}, + [I(39,107)] = {18,0x3FD75}, + [I(40,107)] = {17,0x1FD75}, + [I(41,107)] = {17,0x1FDF5}, + [I(42,107)] = {15,0x7CF5}, + [I(43,107)] = {18,0x3FDF5}, + [I(44,107)] = {15,0x7D75}, + [I(45,107)] = {13,0xB75}, + [I(46,107)] = {13,0xBF5}, + [I(47,107)] = {13,0xC75}, + [I(48,107)] = {12,0x75}, + [I(49,107)] = {12,0xF5}, + [I(50,107)] = {12,0x175}, + [I(51,107)] = {13,0xCF5}, + [I(52,107)] = {13,0xD75}, + [I(53,107)] = {13,0xDF5}, + [I(54,107)] = {13,0xE75}, + [I(55,107)] = {13,0xEF5}, + [I(56,107)] = {13,0xF75}, + [I(57,107)] = {13,0xFF5}, + [I(58,107)] = {14,0x2E75}, + [I(59,107)] = {15,0x7DF5}, + [I(60,107)] = {22,0x3FFE75}, + [I(61,107)] = {13,0x1075}, + [I(62,107)] = {19,0x7FDF5}, + [I(63,107)] = {17,0x1FE75}, + [I(64,107)] = {20,0xFFD75}, + [I(65,107)] = {13,0x10F5}, + [I(66,107)] = {14,0x2EF5}, + [I(67,107)] = {14,0x2F75}, + [I(68,107)] = {14,0x2FF5}, + [I(69,107)] = {14,0x3075}, + [I(70,107)] = {14,0x30F5}, + [I(71,107)] = {14,0x3175}, + [I(72,107)] = {14,0x31F5}, + [I(73,107)] = {14,0x3275}, + [I(74,107)] = {14,0x32F5}, + [I(75,107)] = {14,0x3375}, + [I(76,107)] = {14,0x33F5}, + [I(77,107)] = {14,0x3475}, + [I(78,107)] = {14,0x34F5}, + [I(79,107)] = {14,0x3575}, + [I(80,107)] = {14,0x35F5}, + [I(81,107)] = {14,0x3675}, + [I(82,107)] = {14,0x36F5}, + [I(83,107)] = {14,0x3775}, + [I(84,107)] = {14,0x37F5}, + [I(85,107)] = {14,0x3875}, + [I(86,107)] = {14,0x38F5}, + [I(87,107)] = {14,0x3975}, + [I(88,107)] = {15,0x7E75}, + [I(89,107)] = {14,0x39F5}, + [I(90,107)] = {15,0x7EF5}, + [I(91,107)] = {20,0xFFDF5}, + [I(92,107)] = {26,0x3FFF875}, + [I(93,107)] = {20,0xFFE75}, + [I(94,107)] = {21,0x1FFE75}, + [I(95,107)] = {13,0x1175}, + [I(96,107)] = {22,0x3FFEF5}, + [I(97,107)] = {12,0x1F5}, + [I(98,107)] = {13,0x11F5}, + [I(99,107)] = {12,0x275}, + [I(100,107)] = {13,0x1275}, + [I(101,107)] = {12,0x2F5}, + [I(102,107)] = {13,0x12F5}, + [I(103,107)] = {13,0x1375}, + [I(104,107)] = {13,0x13F5}, + [I(105,107)] = {12,0x375}, + [I(106,107)] = {14,0x3A75}, + [I(107,107)] = {14,0x3AF5}, + [I(108,107)] = {13,0x1475}, + [I(109,107)] = {13,0x14F5}, + [I(110,107)] = {13,0x1575}, + [I(111,107)] = {12,0x3F5}, + [I(112,107)] = {13,0x15F5}, + [I(113,107)] = {14,0x3B75}, + [I(114,107)] = {13,0x1675}, + [I(115,107)] = {12,0x475}, + [I(116,107)] = {12,0x4F5}, + [I(117,107)] = {13,0x16F5}, + [I(118,107)] = {14,0x3BF5}, + [I(119,107)] = {14,0x3C75}, + [I(120,107)] = {14,0x3CF5}, + [I(121,107)] = {14,0x3D75}, + [I(122,107)] = {14,0x3DF5}, + [I(123,107)] = {22,0x3FFF75}, + [I(124,107)] = {18,0x3FE75}, + [I(125,107)] = {21,0x1FFEF5}, + [I(126,107)] = {20,0xFFEF5}, + [I(127,107)] = {64,0}, + [I(128,107)] = {27,0x7FFF375}, + [I(129,107)] = {29,0x1FFFE975}, + [I(130,107)] = {27,0x7FFF3F5}, + [I(131,107)] = {27,0x7FFF475}, + [I(132,107)] = {29,0x1FFFE9F5}, + [I(133,107)] = {29,0x1FFFEA75}, + [I(134,107)] = {29,0x1FFFEAF5}, + [I(135,107)] = {30,0x3FFFECF5}, + [I(136,107)] = {29,0x1FFFEB75}, + [I(137,107)] = {30,0x3FFFED75}, + [I(138,107)] = {30,0x3FFFEDF5}, + [I(139,107)] = {30,0x3FFFEE75}, + [I(140,107)] = {30,0x3FFFEEF5}, + [I(141,107)] = {30,0x3FFFEF75}, + [I(142,107)] = {31,0x7FFFF5F5}, + [I(143,107)] = {30,0x3FFFEFF5}, + [I(144,107)] = {31,0x7FFFF675}, + [I(145,107)] = {31,0x7FFFF6F5}, + [I(146,107)] = {29,0x1FFFEBF5}, + [I(147,107)] = {30,0x3FFFF075}, + [I(148,107)] = {31,0x7FFFF775}, + [I(149,107)] = {30,0x3FFFF0F5}, + [I(150,107)] = {30,0x3FFFF175}, + [I(151,107)] = {30,0x3FFFF1F5}, + [I(152,107)] = {30,0x3FFFF275}, + [I(153,107)] = {28,0xFFFEE75}, + [I(154,107)] = {29,0x1FFFEC75}, + [I(155,107)] = {30,0x3FFFF2F5}, + [I(156,107)] = {29,0x1FFFECF5}, + [I(157,107)] = {30,0x3FFFF375}, + [I(158,107)] = {30,0x3FFFF3F5}, + [I(159,107)] = {31,0x7FFFF7F5}, + [I(160,107)] = {29,0x1FFFED75}, + [I(161,107)] = {28,0xFFFEEF5}, + [I(162,107)] = {27,0x7FFF4F5}, + [I(163,107)] = {29,0x1FFFEDF5}, + [I(164,107)] = {29,0x1FFFEE75}, + [I(165,107)] = {30,0x3FFFF475}, + [I(166,107)] = {30,0x3FFFF4F5}, + [I(167,107)] = {28,0xFFFEF75}, + [I(168,107)] = {30,0x3FFFF575}, + [I(169,107)] = {29,0x1FFFEEF5}, + [I(170,107)] = {29,0x1FFFEF75}, + [I(171,107)] = {31,0x7FFFF875}, + [I(172,107)] = {28,0xFFFEFF5}, + [I(173,107)] = {29,0x1FFFEFF5}, + [I(174,107)] = {30,0x3FFFF5F5}, + [I(175,107)] = {30,0x3FFFF675}, + [I(176,107)] = {28,0xFFFF075}, + [I(177,107)] = {28,0xFFFF0F5}, + [I(178,107)] = {29,0x1FFFF075}, + [I(179,107)] = {28,0xFFFF175}, + [I(180,107)] = {30,0x3FFFF6F5}, + [I(181,107)] = {29,0x1FFFF0F5}, + [I(182,107)] = {30,0x3FFFF775}, + [I(183,107)] = {30,0x3FFFF7F5}, + [I(184,107)] = {27,0x7FFF575}, + [I(185,107)] = {29,0x1FFFF175}, + [I(186,107)] = {29,0x1FFFF1F5}, + [I(187,107)] = {29,0x1FFFF275}, + [I(188,107)] = {30,0x3FFFF875}, + [I(189,107)] = {29,0x1FFFF2F5}, + [I(190,107)] = {29,0x1FFFF375}, + [I(191,107)] = {30,0x3FFFF8F5}, + [I(192,107)] = {64,0}, + [I(193,107)] = {64,0}, + [I(194,107)] = {27,0x7FFF5F5}, + [I(195,107)] = {26,0x3FFF8F5}, + [I(196,107)] = {29,0x1FFFF3F5}, + [I(197,107)] = {30,0x3FFFF975}, + [I(198,107)] = {29,0x1FFFF475}, + [I(199,107)] = {X32,0xFFFFF675}, + [I(200,107)] = {64,0}, + [I(201,107)] = {64,0}, + [I(202,107)] = {64,0}, + [I(203,107)] = {64,0}, + [I(204,107)] = {64,0}, + [I(205,107)] = {64,0}, + [I(206,107)] = {31,0x7FFFF8F5}, + [I(207,107)] = {X32,0xFFFFF6F5}, + [I(208,107)] = {26,0x3FFF975}, + [I(209,107)] = {28,0xFFFF1F5}, + [I(210,107)] = {64,0}, + [I(211,107)] = {64,0}, + [I(212,107)] = {64,0}, + [I(213,107)] = {64,0}, + [I(214,107)] = {64,0}, + [I(215,107)] = {31,0x7FFFF975}, + [I(216,107)] = {28,0xFFFF275}, + [I(217,107)] = {28,0xFFFF2F5}, + [I(218,107)] = {64,0}, + [I(219,107)] = {64,0}, + [I(220,107)] = {64,0}, + [I(221,107)] = {64,0}, + [I(222,107)] = {64,0}, + [I(223,107)] = {64,0}, + [I(224,107)] = {27,0x7FFF675}, + [I(225,107)] = {31,0x7FFFF9F5}, + [I(226,107)] = {27,0x7FFF6F5}, + [I(227,107)] = {28,0xFFFF375}, + [I(228,107)] = {29,0x1FFFF4F5}, + [I(229,107)] = {28,0xFFFF3F5}, + [I(230,107)] = {28,0xFFFF475}, + [I(231,107)] = {30,0x3FFFF9F5}, + [I(232,107)] = {29,0x1FFFF575}, + [I(233,107)] = {29,0x1FFFF5F5}, + [I(234,107)] = {X32,0xFFFFF775}, + [I(235,107)] = {X32,0xFFFFF7F5}, + [I(236,107)] = {31,0x7FFFFA75}, + [I(237,107)] = {31,0x7FFFFAF5}, + [I(238,107)] = {64,0}, + [I(239,107)] = {30,0x3FFFFA75}, + [I(240,107)] = {64,0}, + [I(241,107)] = {64,0}, + [I(242,107)] = {64,0}, + [I(243,107)] = {64,0}, + [I(244,107)] = {64,0}, + [I(245,107)] = {64,0}, + [I(246,107)] = {64,0}, + [I(247,107)] = {64,0}, + [I(248,107)] = {64,0}, + [I(249,107)] = {64,0}, + [I(250,107)] = {64,0}, + [I(251,107)] = {64,0}, + [I(252,107)] = {64,0}, + [I(253,107)] = {64,0}, + [I(254,107)] = {64,0}, + [I(255,107)] = {64,0}, + [I(0,108)] = {19,0x7FE28}, + [I(1,108)] = {29,0x1FFFF628}, + [I(2,108)] = {64,0}, + [I(3,108)] = {64,0}, + [I(4,108)] = {64,0}, + [I(5,108)] = {64,0}, + [I(6,108)] = {64,0}, + [I(7,108)] = {64,0}, + [I(8,108)] = {64,0}, + [I(9,108)] = {30,0x3FFFFAA8}, + [I(10,108)] = {64,0}, + [I(11,108)] = {64,0}, + [I(12,108)] = {64,0}, + [I(13,108)] = {64,0}, + [I(14,108)] = {64,0}, + [I(15,108)] = {64,0}, + [I(16,108)] = {64,0}, + [I(17,108)] = {64,0}, + [I(18,108)] = {64,0}, + [I(19,108)] = {64,0}, + [I(20,108)] = {64,0}, + [I(21,108)] = {64,0}, + [I(22,108)] = {64,0}, + [I(23,108)] = {64,0}, + [I(24,108)] = {64,0}, + [I(25,108)] = {64,0}, + [I(26,108)] = {64,0}, + [I(27,108)] = {64,0}, + [I(28,108)] = {64,0}, + [I(29,108)] = {64,0}, + [I(30,108)] = {64,0}, + [I(31,108)] = {64,0}, + [I(32,108)] = {12,0x528}, + [I(33,108)] = {16,0xFE28}, + [I(34,108)] = {16,0xFE68}, + [I(35,108)] = {18,0x3FEA8}, + [I(36,108)] = {19,0x7FE68}, + [I(37,108)] = {12,0x568}, + [I(38,108)] = {14,0x3E28}, + [I(39,108)] = {17,0x1FEA8}, + [I(40,108)] = {16,0xFEA8}, + [I(41,108)] = {16,0xFEE8}, + [I(42,108)] = {14,0x3E68}, + [I(43,108)] = {17,0x1FEE8}, + [I(44,108)] = {14,0x3EA8}, + [I(45,108)] = {12,0x5A8}, + [I(46,108)] = {12,0x5E8}, + [I(47,108)] = {12,0x628}, + [I(48,108)] = {11,0x28}, + [I(49,108)] = {11,0x68}, + [I(50,108)] = {11,0xA8}, + [I(51,108)] = {12,0x668}, + [I(52,108)] = {12,0x6A8}, + [I(53,108)] = {12,0x6E8}, + [I(54,108)] = {12,0x728}, + [I(55,108)] = {12,0x768}, + [I(56,108)] = {12,0x7A8}, + [I(57,108)] = {12,0x7E8}, + [I(58,108)] = {13,0x1728}, + [I(59,108)] = {14,0x3EE8}, + [I(60,108)] = {21,0x1FFF28}, + [I(61,108)] = {12,0x828}, + [I(62,108)] = {18,0x3FEE8}, + [I(63,108)] = {16,0xFF28}, + [I(64,108)] = {19,0x7FEA8}, + [I(65,108)] = {12,0x868}, + [I(66,108)] = {13,0x1768}, + [I(67,108)] = {13,0x17A8}, + [I(68,108)] = {13,0x17E8}, + [I(69,108)] = {13,0x1828}, + [I(70,108)] = {13,0x1868}, + [I(71,108)] = {13,0x18A8}, + [I(72,108)] = {13,0x18E8}, + [I(73,108)] = {13,0x1928}, + [I(74,108)] = {13,0x1968}, + [I(75,108)] = {13,0x19A8}, + [I(76,108)] = {13,0x19E8}, + [I(77,108)] = {13,0x1A28}, + [I(78,108)] = {13,0x1A68}, + [I(79,108)] = {13,0x1AA8}, + [I(80,108)] = {13,0x1AE8}, + [I(81,108)] = {13,0x1B28}, + [I(82,108)] = {13,0x1B68}, + [I(83,108)] = {13,0x1BA8}, + [I(84,108)] = {13,0x1BE8}, + [I(85,108)] = {13,0x1C28}, + [I(86,108)] = {13,0x1C68}, + [I(87,108)] = {13,0x1CA8}, + [I(88,108)] = {14,0x3F28}, + [I(89,108)] = {13,0x1CE8}, + [I(90,108)] = {14,0x3F68}, + [I(91,108)] = {19,0x7FEE8}, + [I(92,108)] = {25,0x1FFFC28}, + [I(93,108)] = {19,0x7FF28}, + [I(94,108)] = {20,0xFFF28}, + [I(95,108)] = {12,0x8A8}, + [I(96,108)] = {21,0x1FFF68}, + [I(97,108)] = {11,0xE8}, + [I(98,108)] = {12,0x8E8}, + [I(99,108)] = {11,0x128}, + [I(100,108)] = {12,0x928}, + [I(101,108)] = {11,0x168}, + [I(102,108)] = {12,0x968}, + [I(103,108)] = {12,0x9A8}, + [I(104,108)] = {12,0x9E8}, + [I(105,108)] = {11,0x1A8}, + [I(106,108)] = {13,0x1D28}, + [I(107,108)] = {13,0x1D68}, + [I(108,108)] = {12,0xA28}, + [I(109,108)] = {12,0xA68}, + [I(110,108)] = {12,0xAA8}, + [I(111,108)] = {11,0x1E8}, + [I(112,108)] = {12,0xAE8}, + [I(113,108)] = {13,0x1DA8}, + [I(114,108)] = {12,0xB28}, + [I(115,108)] = {11,0x228}, + [I(116,108)] = {11,0x268}, + [I(117,108)] = {12,0xB68}, + [I(118,108)] = {13,0x1DE8}, + [I(119,108)] = {13,0x1E28}, + [I(120,108)] = {13,0x1E68}, + [I(121,108)] = {13,0x1EA8}, + [I(122,108)] = {13,0x1EE8}, + [I(123,108)] = {21,0x1FFFA8}, + [I(124,108)] = {17,0x1FF28}, + [I(125,108)] = {20,0xFFF68}, + [I(126,108)] = {19,0x7FF68}, + [I(127,108)] = {64,0}, + [I(128,108)] = {26,0x3FFF9A8}, + [I(129,108)] = {28,0xFFFF4A8}, + [I(130,108)] = {26,0x3FFF9E8}, + [I(131,108)] = {26,0x3FFFA28}, + [I(132,108)] = {28,0xFFFF4E8}, + [I(133,108)] = {28,0xFFFF528}, + [I(134,108)] = {28,0xFFFF568}, + [I(135,108)] = {29,0x1FFFF668}, + [I(136,108)] = {28,0xFFFF5A8}, + [I(137,108)] = {29,0x1FFFF6A8}, + [I(138,108)] = {29,0x1FFFF6E8}, + [I(139,108)] = {29,0x1FFFF728}, + [I(140,108)] = {29,0x1FFFF768}, + [I(141,108)] = {29,0x1FFFF7A8}, + [I(142,108)] = {30,0x3FFFFAE8}, + [I(143,108)] = {29,0x1FFFF7E8}, + [I(144,108)] = {30,0x3FFFFB28}, + [I(145,108)] = {30,0x3FFFFB68}, + [I(146,108)] = {28,0xFFFF5E8}, + [I(147,108)] = {29,0x1FFFF828}, + [I(148,108)] = {30,0x3FFFFBA8}, + [I(149,108)] = {29,0x1FFFF868}, + [I(150,108)] = {29,0x1FFFF8A8}, + [I(151,108)] = {29,0x1FFFF8E8}, + [I(152,108)] = {29,0x1FFFF928}, + [I(153,108)] = {27,0x7FFF728}, + [I(154,108)] = {28,0xFFFF628}, + [I(155,108)] = {29,0x1FFFF968}, + [I(156,108)] = {28,0xFFFF668}, + [I(157,108)] = {29,0x1FFFF9A8}, + [I(158,108)] = {29,0x1FFFF9E8}, + [I(159,108)] = {30,0x3FFFFBE8}, + [I(160,108)] = {28,0xFFFF6A8}, + [I(161,108)] = {27,0x7FFF768}, + [I(162,108)] = {26,0x3FFFA68}, + [I(163,108)] = {28,0xFFFF6E8}, + [I(164,108)] = {28,0xFFFF728}, + [I(165,108)] = {29,0x1FFFFA28}, + [I(166,108)] = {29,0x1FFFFA68}, + [I(167,108)] = {27,0x7FFF7A8}, + [I(168,108)] = {29,0x1FFFFAA8}, + [I(169,108)] = {28,0xFFFF768}, + [I(170,108)] = {28,0xFFFF7A8}, + [I(171,108)] = {30,0x3FFFFC28}, + [I(172,108)] = {27,0x7FFF7E8}, + [I(173,108)] = {28,0xFFFF7E8}, + [I(174,108)] = {29,0x1FFFFAE8}, + [I(175,108)] = {29,0x1FFFFB28}, + [I(176,108)] = {27,0x7FFF828}, + [I(177,108)] = {27,0x7FFF868}, + [I(178,108)] = {28,0xFFFF828}, + [I(179,108)] = {27,0x7FFF8A8}, + [I(180,108)] = {29,0x1FFFFB68}, + [I(181,108)] = {28,0xFFFF868}, + [I(182,108)] = {29,0x1FFFFBA8}, + [I(183,108)] = {29,0x1FFFFBE8}, + [I(184,108)] = {26,0x3FFFAA8}, + [I(185,108)] = {28,0xFFFF8A8}, + [I(186,108)] = {28,0xFFFF8E8}, + [I(187,108)] = {28,0xFFFF928}, + [I(188,108)] = {29,0x1FFFFC28}, + [I(189,108)] = {28,0xFFFF968}, + [I(190,108)] = {28,0xFFFF9A8}, + [I(191,108)] = {29,0x1FFFFC68}, + [I(192,108)] = {X32,0xFFFFF828}, + [I(193,108)] = {X32,0xFFFFF868}, + [I(194,108)] = {26,0x3FFFAE8}, + [I(195,108)] = {25,0x1FFFC68}, + [I(196,108)] = {28,0xFFFF9E8}, + [I(197,108)] = {29,0x1FFFFCA8}, + [I(198,108)] = {28,0xFFFFA28}, + [I(199,108)] = {31,0x7FFFFB28}, + [I(200,108)] = {X32,0xFFFFF8A8}, + [I(201,108)] = {X32,0xFFFFF8E8}, + [I(202,108)] = {X32,0xFFFFF928}, + [I(203,108)] = {64,0}, + [I(204,108)] = {64,0}, + [I(205,108)] = {X32,0xFFFFF968}, + [I(206,108)] = {30,0x3FFFFC68}, + [I(207,108)] = {31,0x7FFFFB68}, + [I(208,108)] = {25,0x1FFFCA8}, + [I(209,108)] = {27,0x7FFF8E8}, + [I(210,108)] = {X32,0xFFFFF9A8}, + [I(211,108)] = {64,0}, + [I(212,108)] = {64,0}, + [I(213,108)] = {X32,0xFFFFF9E8}, + [I(214,108)] = {64,0}, + [I(215,108)] = {30,0x3FFFFCA8}, + [I(216,108)] = {27,0x7FFF928}, + [I(217,108)] = {27,0x7FFF968}, + [I(218,108)] = {X32,0xFFFFFA28}, + [I(219,108)] = {X32,0xFFFFFA68}, + [I(220,108)] = {64,0}, + [I(221,108)] = {64,0}, + [I(222,108)] = {64,0}, + [I(223,108)] = {64,0}, + [I(224,108)] = {26,0x3FFFB28}, + [I(225,108)] = {30,0x3FFFFCE8}, + [I(226,108)] = {26,0x3FFFB68}, + [I(227,108)] = {27,0x7FFF9A8}, + [I(228,108)] = {28,0xFFFFA68}, + [I(229,108)] = {27,0x7FFF9E8}, + [I(230,108)] = {27,0x7FFFA28}, + [I(231,108)] = {29,0x1FFFFCE8}, + [I(232,108)] = {28,0xFFFFAA8}, + [I(233,108)] = {28,0xFFFFAE8}, + [I(234,108)] = {31,0x7FFFFBA8}, + [I(235,108)] = {31,0x7FFFFBE8}, + [I(236,108)] = {30,0x3FFFFD28}, + [I(237,108)] = {30,0x3FFFFD68}, + [I(238,108)] = {X32,0xFFFFFAA8}, + [I(239,108)] = {29,0x1FFFFD28}, + [I(240,108)] = {X32,0xFFFFFAE8}, + [I(241,108)] = {64,0}, + [I(242,108)] = {X32,0xFFFFFB28}, + [I(243,108)] = {X32,0xFFFFFB68}, + [I(244,108)] = {64,0}, + [I(245,108)] = {64,0}, + [I(246,108)] = {64,0}, + [I(247,108)] = {64,0}, + [I(248,108)] = {64,0}, + [I(249,108)] = {64,0}, + [I(250,108)] = {64,0}, + [I(251,108)] = {64,0}, + [I(252,108)] = {64,0}, + [I(253,108)] = {64,0}, + [I(254,108)] = {64,0}, + [I(255,108)] = {X32,0xFFFFFBA8}, + [I(0,109)] = {19,0x7FE29}, + [I(1,109)] = {29,0x1FFFF629}, + [I(2,109)] = {64,0}, + [I(3,109)] = {64,0}, + [I(4,109)] = {64,0}, + [I(5,109)] = {64,0}, + [I(6,109)] = {64,0}, + [I(7,109)] = {64,0}, + [I(8,109)] = {64,0}, + [I(9,109)] = {30,0x3FFFFAA9}, + [I(10,109)] = {64,0}, + [I(11,109)] = {64,0}, + [I(12,109)] = {64,0}, + [I(13,109)] = {64,0}, + [I(14,109)] = {64,0}, + [I(15,109)] = {64,0}, + [I(16,109)] = {64,0}, + [I(17,109)] = {64,0}, + [I(18,109)] = {64,0}, + [I(19,109)] = {64,0}, + [I(20,109)] = {64,0}, + [I(21,109)] = {64,0}, + [I(22,109)] = {64,0}, + [I(23,109)] = {64,0}, + [I(24,109)] = {64,0}, + [I(25,109)] = {64,0}, + [I(26,109)] = {64,0}, + [I(27,109)] = {64,0}, + [I(28,109)] = {64,0}, + [I(29,109)] = {64,0}, + [I(30,109)] = {64,0}, + [I(31,109)] = {64,0}, + [I(32,109)] = {12,0x529}, + [I(33,109)] = {16,0xFE29}, + [I(34,109)] = {16,0xFE69}, + [I(35,109)] = {18,0x3FEA9}, + [I(36,109)] = {19,0x7FE69}, + [I(37,109)] = {12,0x569}, + [I(38,109)] = {14,0x3E29}, + [I(39,109)] = {17,0x1FEA9}, + [I(40,109)] = {16,0xFEA9}, + [I(41,109)] = {16,0xFEE9}, + [I(42,109)] = {14,0x3E69}, + [I(43,109)] = {17,0x1FEE9}, + [I(44,109)] = {14,0x3EA9}, + [I(45,109)] = {12,0x5A9}, + [I(46,109)] = {12,0x5E9}, + [I(47,109)] = {12,0x629}, + [I(48,109)] = {11,0x29}, + [I(49,109)] = {11,0x69}, + [I(50,109)] = {11,0xA9}, + [I(51,109)] = {12,0x669}, + [I(52,109)] = {12,0x6A9}, + [I(53,109)] = {12,0x6E9}, + [I(54,109)] = {12,0x729}, + [I(55,109)] = {12,0x769}, + [I(56,109)] = {12,0x7A9}, + [I(57,109)] = {12,0x7E9}, + [I(58,109)] = {13,0x1729}, + [I(59,109)] = {14,0x3EE9}, + [I(60,109)] = {21,0x1FFF29}, + [I(61,109)] = {12,0x829}, + [I(62,109)] = {18,0x3FEE9}, + [I(63,109)] = {16,0xFF29}, + [I(64,109)] = {19,0x7FEA9}, + [I(65,109)] = {12,0x869}, + [I(66,109)] = {13,0x1769}, + [I(67,109)] = {13,0x17A9}, + [I(68,109)] = {13,0x17E9}, + [I(69,109)] = {13,0x1829}, + [I(70,109)] = {13,0x1869}, + [I(71,109)] = {13,0x18A9}, + [I(72,109)] = {13,0x18E9}, + [I(73,109)] = {13,0x1929}, + [I(74,109)] = {13,0x1969}, + [I(75,109)] = {13,0x19A9}, + [I(76,109)] = {13,0x19E9}, + [I(77,109)] = {13,0x1A29}, + [I(78,109)] = {13,0x1A69}, + [I(79,109)] = {13,0x1AA9}, + [I(80,109)] = {13,0x1AE9}, + [I(81,109)] = {13,0x1B29}, + [I(82,109)] = {13,0x1B69}, + [I(83,109)] = {13,0x1BA9}, + [I(84,109)] = {13,0x1BE9}, + [I(85,109)] = {13,0x1C29}, + [I(86,109)] = {13,0x1C69}, + [I(87,109)] = {13,0x1CA9}, + [I(88,109)] = {14,0x3F29}, + [I(89,109)] = {13,0x1CE9}, + [I(90,109)] = {14,0x3F69}, + [I(91,109)] = {19,0x7FEE9}, + [I(92,109)] = {25,0x1FFFC29}, + [I(93,109)] = {19,0x7FF29}, + [I(94,109)] = {20,0xFFF29}, + [I(95,109)] = {12,0x8A9}, + [I(96,109)] = {21,0x1FFF69}, + [I(97,109)] = {11,0xE9}, + [I(98,109)] = {12,0x8E9}, + [I(99,109)] = {11,0x129}, + [I(100,109)] = {12,0x929}, + [I(101,109)] = {11,0x169}, + [I(102,109)] = {12,0x969}, + [I(103,109)] = {12,0x9A9}, + [I(104,109)] = {12,0x9E9}, + [I(105,109)] = {11,0x1A9}, + [I(106,109)] = {13,0x1D29}, + [I(107,109)] = {13,0x1D69}, + [I(108,109)] = {12,0xA29}, + [I(109,109)] = {12,0xA69}, + [I(110,109)] = {12,0xAA9}, + [I(111,109)] = {11,0x1E9}, + [I(112,109)] = {12,0xAE9}, + [I(113,109)] = {13,0x1DA9}, + [I(114,109)] = {12,0xB29}, + [I(115,109)] = {11,0x229}, + [I(116,109)] = {11,0x269}, + [I(117,109)] = {12,0xB69}, + [I(118,109)] = {13,0x1DE9}, + [I(119,109)] = {13,0x1E29}, + [I(120,109)] = {13,0x1E69}, + [I(121,109)] = {13,0x1EA9}, + [I(122,109)] = {13,0x1EE9}, + [I(123,109)] = {21,0x1FFFA9}, + [I(124,109)] = {17,0x1FF29}, + [I(125,109)] = {20,0xFFF69}, + [I(126,109)] = {19,0x7FF69}, + [I(127,109)] = {64,0}, + [I(128,109)] = {26,0x3FFF9A9}, + [I(129,109)] = {28,0xFFFF4A9}, + [I(130,109)] = {26,0x3FFF9E9}, + [I(131,109)] = {26,0x3FFFA29}, + [I(132,109)] = {28,0xFFFF4E9}, + [I(133,109)] = {28,0xFFFF529}, + [I(134,109)] = {28,0xFFFF569}, + [I(135,109)] = {29,0x1FFFF669}, + [I(136,109)] = {28,0xFFFF5A9}, + [I(137,109)] = {29,0x1FFFF6A9}, + [I(138,109)] = {29,0x1FFFF6E9}, + [I(139,109)] = {29,0x1FFFF729}, + [I(140,109)] = {29,0x1FFFF769}, + [I(141,109)] = {29,0x1FFFF7A9}, + [I(142,109)] = {30,0x3FFFFAE9}, + [I(143,109)] = {29,0x1FFFF7E9}, + [I(144,109)] = {30,0x3FFFFB29}, + [I(145,109)] = {30,0x3FFFFB69}, + [I(146,109)] = {28,0xFFFF5E9}, + [I(147,109)] = {29,0x1FFFF829}, + [I(148,109)] = {30,0x3FFFFBA9}, + [I(149,109)] = {29,0x1FFFF869}, + [I(150,109)] = {29,0x1FFFF8A9}, + [I(151,109)] = {29,0x1FFFF8E9}, + [I(152,109)] = {29,0x1FFFF929}, + [I(153,109)] = {27,0x7FFF729}, + [I(154,109)] = {28,0xFFFF629}, + [I(155,109)] = {29,0x1FFFF969}, + [I(156,109)] = {28,0xFFFF669}, + [I(157,109)] = {29,0x1FFFF9A9}, + [I(158,109)] = {29,0x1FFFF9E9}, + [I(159,109)] = {30,0x3FFFFBE9}, + [I(160,109)] = {28,0xFFFF6A9}, + [I(161,109)] = {27,0x7FFF769}, + [I(162,109)] = {26,0x3FFFA69}, + [I(163,109)] = {28,0xFFFF6E9}, + [I(164,109)] = {28,0xFFFF729}, + [I(165,109)] = {29,0x1FFFFA29}, + [I(166,109)] = {29,0x1FFFFA69}, + [I(167,109)] = {27,0x7FFF7A9}, + [I(168,109)] = {29,0x1FFFFAA9}, + [I(169,109)] = {28,0xFFFF769}, + [I(170,109)] = {28,0xFFFF7A9}, + [I(171,109)] = {30,0x3FFFFC29}, + [I(172,109)] = {27,0x7FFF7E9}, + [I(173,109)] = {28,0xFFFF7E9}, + [I(174,109)] = {29,0x1FFFFAE9}, + [I(175,109)] = {29,0x1FFFFB29}, + [I(176,109)] = {27,0x7FFF829}, + [I(177,109)] = {27,0x7FFF869}, + [I(178,109)] = {28,0xFFFF829}, + [I(179,109)] = {27,0x7FFF8A9}, + [I(180,109)] = {29,0x1FFFFB69}, + [I(181,109)] = {28,0xFFFF869}, + [I(182,109)] = {29,0x1FFFFBA9}, + [I(183,109)] = {29,0x1FFFFBE9}, + [I(184,109)] = {26,0x3FFFAA9}, + [I(185,109)] = {28,0xFFFF8A9}, + [I(186,109)] = {28,0xFFFF8E9}, + [I(187,109)] = {28,0xFFFF929}, + [I(188,109)] = {29,0x1FFFFC29}, + [I(189,109)] = {28,0xFFFF969}, + [I(190,109)] = {28,0xFFFF9A9}, + [I(191,109)] = {29,0x1FFFFC69}, + [I(192,109)] = {X32,0xFFFFF829}, + [I(193,109)] = {X32,0xFFFFF869}, + [I(194,109)] = {26,0x3FFFAE9}, + [I(195,109)] = {25,0x1FFFC69}, + [I(196,109)] = {28,0xFFFF9E9}, + [I(197,109)] = {29,0x1FFFFCA9}, + [I(198,109)] = {28,0xFFFFA29}, + [I(199,109)] = {31,0x7FFFFB29}, + [I(200,109)] = {X32,0xFFFFF8A9}, + [I(201,109)] = {X32,0xFFFFF8E9}, + [I(202,109)] = {X32,0xFFFFF929}, + [I(203,109)] = {64,0}, + [I(204,109)] = {64,0}, + [I(205,109)] = {X32,0xFFFFF969}, + [I(206,109)] = {30,0x3FFFFC69}, + [I(207,109)] = {31,0x7FFFFB69}, + [I(208,109)] = {25,0x1FFFCA9}, + [I(209,109)] = {27,0x7FFF8E9}, + [I(210,109)] = {X32,0xFFFFF9A9}, + [I(211,109)] = {64,0}, + [I(212,109)] = {64,0}, + [I(213,109)] = {X32,0xFFFFF9E9}, + [I(214,109)] = {64,0}, + [I(215,109)] = {30,0x3FFFFCA9}, + [I(216,109)] = {27,0x7FFF929}, + [I(217,109)] = {27,0x7FFF969}, + [I(218,109)] = {X32,0xFFFFFA29}, + [I(219,109)] = {X32,0xFFFFFA69}, + [I(220,109)] = {64,0}, + [I(221,109)] = {64,0}, + [I(222,109)] = {64,0}, + [I(223,109)] = {64,0}, + [I(224,109)] = {26,0x3FFFB29}, + [I(225,109)] = {30,0x3FFFFCE9}, + [I(226,109)] = {26,0x3FFFB69}, + [I(227,109)] = {27,0x7FFF9A9}, + [I(228,109)] = {28,0xFFFFA69}, + [I(229,109)] = {27,0x7FFF9E9}, + [I(230,109)] = {27,0x7FFFA29}, + [I(231,109)] = {29,0x1FFFFCE9}, + [I(232,109)] = {28,0xFFFFAA9}, + [I(233,109)] = {28,0xFFFFAE9}, + [I(234,109)] = {31,0x7FFFFBA9}, + [I(235,109)] = {31,0x7FFFFBE9}, + [I(236,109)] = {30,0x3FFFFD29}, + [I(237,109)] = {30,0x3FFFFD69}, + [I(238,109)] = {X32,0xFFFFFAA9}, + [I(239,109)] = {29,0x1FFFFD29}, + [I(240,109)] = {X32,0xFFFFFAE9}, + [I(241,109)] = {64,0}, + [I(242,109)] = {X32,0xFFFFFB29}, + [I(243,109)] = {X32,0xFFFFFB69}, + [I(244,109)] = {64,0}, + [I(245,109)] = {64,0}, + [I(246,109)] = {64,0}, + [I(247,109)] = {64,0}, + [I(248,109)] = {64,0}, + [I(249,109)] = {64,0}, + [I(250,109)] = {64,0}, + [I(251,109)] = {64,0}, + [I(252,109)] = {64,0}, + [I(253,109)] = {64,0}, + [I(254,109)] = {64,0}, + [I(255,109)] = {X32,0xFFFFFBA9}, + [I(0,110)] = {19,0x7FE2A}, + [I(1,110)] = {29,0x1FFFF62A}, + [I(2,110)] = {64,0}, + [I(3,110)] = {64,0}, + [I(4,110)] = {64,0}, + [I(5,110)] = {64,0}, + [I(6,110)] = {64,0}, + [I(7,110)] = {64,0}, + [I(8,110)] = {64,0}, + [I(9,110)] = {30,0x3FFFFAAA}, + [I(10,110)] = {64,0}, + [I(11,110)] = {64,0}, + [I(12,110)] = {64,0}, + [I(13,110)] = {64,0}, + [I(14,110)] = {64,0}, + [I(15,110)] = {64,0}, + [I(16,110)] = {64,0}, + [I(17,110)] = {64,0}, + [I(18,110)] = {64,0}, + [I(19,110)] = {64,0}, + [I(20,110)] = {64,0}, + [I(21,110)] = {64,0}, + [I(22,110)] = {64,0}, + [I(23,110)] = {64,0}, + [I(24,110)] = {64,0}, + [I(25,110)] = {64,0}, + [I(26,110)] = {64,0}, + [I(27,110)] = {64,0}, + [I(28,110)] = {64,0}, + [I(29,110)] = {64,0}, + [I(30,110)] = {64,0}, + [I(31,110)] = {64,0}, + [I(32,110)] = {12,0x52A}, + [I(33,110)] = {16,0xFE2A}, + [I(34,110)] = {16,0xFE6A}, + [I(35,110)] = {18,0x3FEAA}, + [I(36,110)] = {19,0x7FE6A}, + [I(37,110)] = {12,0x56A}, + [I(38,110)] = {14,0x3E2A}, + [I(39,110)] = {17,0x1FEAA}, + [I(40,110)] = {16,0xFEAA}, + [I(41,110)] = {16,0xFEEA}, + [I(42,110)] = {14,0x3E6A}, + [I(43,110)] = {17,0x1FEEA}, + [I(44,110)] = {14,0x3EAA}, + [I(45,110)] = {12,0x5AA}, + [I(46,110)] = {12,0x5EA}, + [I(47,110)] = {12,0x62A}, + [I(48,110)] = {11,0x2A}, + [I(49,110)] = {11,0x6A}, + [I(50,110)] = {11,0xAA}, + [I(51,110)] = {12,0x66A}, + [I(52,110)] = {12,0x6AA}, + [I(53,110)] = {12,0x6EA}, + [I(54,110)] = {12,0x72A}, + [I(55,110)] = {12,0x76A}, + [I(56,110)] = {12,0x7AA}, + [I(57,110)] = {12,0x7EA}, + [I(58,110)] = {13,0x172A}, + [I(59,110)] = {14,0x3EEA}, + [I(60,110)] = {21,0x1FFF2A}, + [I(61,110)] = {12,0x82A}, + [I(62,110)] = {18,0x3FEEA}, + [I(63,110)] = {16,0xFF2A}, + [I(64,110)] = {19,0x7FEAA}, + [I(65,110)] = {12,0x86A}, + [I(66,110)] = {13,0x176A}, + [I(67,110)] = {13,0x17AA}, + [I(68,110)] = {13,0x17EA}, + [I(69,110)] = {13,0x182A}, + [I(70,110)] = {13,0x186A}, + [I(71,110)] = {13,0x18AA}, + [I(72,110)] = {13,0x18EA}, + [I(73,110)] = {13,0x192A}, + [I(74,110)] = {13,0x196A}, + [I(75,110)] = {13,0x19AA}, + [I(76,110)] = {13,0x19EA}, + [I(77,110)] = {13,0x1A2A}, + [I(78,110)] = {13,0x1A6A}, + [I(79,110)] = {13,0x1AAA}, + [I(80,110)] = {13,0x1AEA}, + [I(81,110)] = {13,0x1B2A}, + [I(82,110)] = {13,0x1B6A}, + [I(83,110)] = {13,0x1BAA}, + [I(84,110)] = {13,0x1BEA}, + [I(85,110)] = {13,0x1C2A}, + [I(86,110)] = {13,0x1C6A}, + [I(87,110)] = {13,0x1CAA}, + [I(88,110)] = {14,0x3F2A}, + [I(89,110)] = {13,0x1CEA}, + [I(90,110)] = {14,0x3F6A}, + [I(91,110)] = {19,0x7FEEA}, + [I(92,110)] = {25,0x1FFFC2A}, + [I(93,110)] = {19,0x7FF2A}, + [I(94,110)] = {20,0xFFF2A}, + [I(95,110)] = {12,0x8AA}, + [I(96,110)] = {21,0x1FFF6A}, + [I(97,110)] = {11,0xEA}, + [I(98,110)] = {12,0x8EA}, + [I(99,110)] = {11,0x12A}, + [I(100,110)] = {12,0x92A}, + [I(101,110)] = {11,0x16A}, + [I(102,110)] = {12,0x96A}, + [I(103,110)] = {12,0x9AA}, + [I(104,110)] = {12,0x9EA}, + [I(105,110)] = {11,0x1AA}, + [I(106,110)] = {13,0x1D2A}, + [I(107,110)] = {13,0x1D6A}, + [I(108,110)] = {12,0xA2A}, + [I(109,110)] = {12,0xA6A}, + [I(110,110)] = {12,0xAAA}, + [I(111,110)] = {11,0x1EA}, + [I(112,110)] = {12,0xAEA}, + [I(113,110)] = {13,0x1DAA}, + [I(114,110)] = {12,0xB2A}, + [I(115,110)] = {11,0x22A}, + [I(116,110)] = {11,0x26A}, + [I(117,110)] = {12,0xB6A}, + [I(118,110)] = {13,0x1DEA}, + [I(119,110)] = {13,0x1E2A}, + [I(120,110)] = {13,0x1E6A}, + [I(121,110)] = {13,0x1EAA}, + [I(122,110)] = {13,0x1EEA}, + [I(123,110)] = {21,0x1FFFAA}, + [I(124,110)] = {17,0x1FF2A}, + [I(125,110)] = {20,0xFFF6A}, + [I(126,110)] = {19,0x7FF6A}, + [I(127,110)] = {64,0}, + [I(128,110)] = {26,0x3FFF9AA}, + [I(129,110)] = {28,0xFFFF4AA}, + [I(130,110)] = {26,0x3FFF9EA}, + [I(131,110)] = {26,0x3FFFA2A}, + [I(132,110)] = {28,0xFFFF4EA}, + [I(133,110)] = {28,0xFFFF52A}, + [I(134,110)] = {28,0xFFFF56A}, + [I(135,110)] = {29,0x1FFFF66A}, + [I(136,110)] = {28,0xFFFF5AA}, + [I(137,110)] = {29,0x1FFFF6AA}, + [I(138,110)] = {29,0x1FFFF6EA}, + [I(139,110)] = {29,0x1FFFF72A}, + [I(140,110)] = {29,0x1FFFF76A}, + [I(141,110)] = {29,0x1FFFF7AA}, + [I(142,110)] = {30,0x3FFFFAEA}, + [I(143,110)] = {29,0x1FFFF7EA}, + [I(144,110)] = {30,0x3FFFFB2A}, + [I(145,110)] = {30,0x3FFFFB6A}, + [I(146,110)] = {28,0xFFFF5EA}, + [I(147,110)] = {29,0x1FFFF82A}, + [I(148,110)] = {30,0x3FFFFBAA}, + [I(149,110)] = {29,0x1FFFF86A}, + [I(150,110)] = {29,0x1FFFF8AA}, + [I(151,110)] = {29,0x1FFFF8EA}, + [I(152,110)] = {29,0x1FFFF92A}, + [I(153,110)] = {27,0x7FFF72A}, + [I(154,110)] = {28,0xFFFF62A}, + [I(155,110)] = {29,0x1FFFF96A}, + [I(156,110)] = {28,0xFFFF66A}, + [I(157,110)] = {29,0x1FFFF9AA}, + [I(158,110)] = {29,0x1FFFF9EA}, + [I(159,110)] = {30,0x3FFFFBEA}, + [I(160,110)] = {28,0xFFFF6AA}, + [I(161,110)] = {27,0x7FFF76A}, + [I(162,110)] = {26,0x3FFFA6A}, + [I(163,110)] = {28,0xFFFF6EA}, + [I(164,110)] = {28,0xFFFF72A}, + [I(165,110)] = {29,0x1FFFFA2A}, + [I(166,110)] = {29,0x1FFFFA6A}, + [I(167,110)] = {27,0x7FFF7AA}, + [I(168,110)] = {29,0x1FFFFAAA}, + [I(169,110)] = {28,0xFFFF76A}, + [I(170,110)] = {28,0xFFFF7AA}, + [I(171,110)] = {30,0x3FFFFC2A}, + [I(172,110)] = {27,0x7FFF7EA}, + [I(173,110)] = {28,0xFFFF7EA}, + [I(174,110)] = {29,0x1FFFFAEA}, + [I(175,110)] = {29,0x1FFFFB2A}, + [I(176,110)] = {27,0x7FFF82A}, + [I(177,110)] = {27,0x7FFF86A}, + [I(178,110)] = {28,0xFFFF82A}, + [I(179,110)] = {27,0x7FFF8AA}, + [I(180,110)] = {29,0x1FFFFB6A}, + [I(181,110)] = {28,0xFFFF86A}, + [I(182,110)] = {29,0x1FFFFBAA}, + [I(183,110)] = {29,0x1FFFFBEA}, + [I(184,110)] = {26,0x3FFFAAA}, + [I(185,110)] = {28,0xFFFF8AA}, + [I(186,110)] = {28,0xFFFF8EA}, + [I(187,110)] = {28,0xFFFF92A}, + [I(188,110)] = {29,0x1FFFFC2A}, + [I(189,110)] = {28,0xFFFF96A}, + [I(190,110)] = {28,0xFFFF9AA}, + [I(191,110)] = {29,0x1FFFFC6A}, + [I(192,110)] = {X32,0xFFFFF82A}, + [I(193,110)] = {X32,0xFFFFF86A}, + [I(194,110)] = {26,0x3FFFAEA}, + [I(195,110)] = {25,0x1FFFC6A}, + [I(196,110)] = {28,0xFFFF9EA}, + [I(197,110)] = {29,0x1FFFFCAA}, + [I(198,110)] = {28,0xFFFFA2A}, + [I(199,110)] = {31,0x7FFFFB2A}, + [I(200,110)] = {X32,0xFFFFF8AA}, + [I(201,110)] = {X32,0xFFFFF8EA}, + [I(202,110)] = {X32,0xFFFFF92A}, + [I(203,110)] = {64,0}, + [I(204,110)] = {64,0}, + [I(205,110)] = {X32,0xFFFFF96A}, + [I(206,110)] = {30,0x3FFFFC6A}, + [I(207,110)] = {31,0x7FFFFB6A}, + [I(208,110)] = {25,0x1FFFCAA}, + [I(209,110)] = {27,0x7FFF8EA}, + [I(210,110)] = {X32,0xFFFFF9AA}, + [I(211,110)] = {64,0}, + [I(212,110)] = {64,0}, + [I(213,110)] = {X32,0xFFFFF9EA}, + [I(214,110)] = {64,0}, + [I(215,110)] = {30,0x3FFFFCAA}, + [I(216,110)] = {27,0x7FFF92A}, + [I(217,110)] = {27,0x7FFF96A}, + [I(218,110)] = {X32,0xFFFFFA2A}, + [I(219,110)] = {X32,0xFFFFFA6A}, + [I(220,110)] = {64,0}, + [I(221,110)] = {64,0}, + [I(222,110)] = {64,0}, + [I(223,110)] = {64,0}, + [I(224,110)] = {26,0x3FFFB2A}, + [I(225,110)] = {30,0x3FFFFCEA}, + [I(226,110)] = {26,0x3FFFB6A}, + [I(227,110)] = {27,0x7FFF9AA}, + [I(228,110)] = {28,0xFFFFA6A}, + [I(229,110)] = {27,0x7FFF9EA}, + [I(230,110)] = {27,0x7FFFA2A}, + [I(231,110)] = {29,0x1FFFFCEA}, + [I(232,110)] = {28,0xFFFFAAA}, + [I(233,110)] = {28,0xFFFFAEA}, + [I(234,110)] = {31,0x7FFFFBAA}, + [I(235,110)] = {31,0x7FFFFBEA}, + [I(236,110)] = {30,0x3FFFFD2A}, + [I(237,110)] = {30,0x3FFFFD6A}, + [I(238,110)] = {X32,0xFFFFFAAA}, + [I(239,110)] = {29,0x1FFFFD2A}, + [I(240,110)] = {X32,0xFFFFFAEA}, + [I(241,110)] = {64,0}, + [I(242,110)] = {X32,0xFFFFFB2A}, + [I(243,110)] = {X32,0xFFFFFB6A}, + [I(244,110)] = {64,0}, + [I(245,110)] = {64,0}, + [I(246,110)] = {64,0}, + [I(247,110)] = {64,0}, + [I(248,110)] = {64,0}, + [I(249,110)] = {64,0}, + [I(250,110)] = {64,0}, + [I(251,110)] = {64,0}, + [I(252,110)] = {64,0}, + [I(253,110)] = {64,0}, + [I(254,110)] = {64,0}, + [I(255,110)] = {X32,0xFFFFFBAA}, + [I(0,111)] = {18,0x3FF07}, + [I(1,111)] = {28,0xFFFFB07}, + [I(2,111)] = {64,0}, + [I(3,111)] = {64,0}, + [I(4,111)] = {64,0}, + [I(5,111)] = {64,0}, + [I(6,111)] = {64,0}, + [I(7,111)] = {64,0}, + [I(8,111)] = {64,0}, + [I(9,111)] = {29,0x1FFFFD47}, + [I(10,111)] = {64,0}, + [I(11,111)] = {64,0}, + [I(12,111)] = {64,0}, + [I(13,111)] = {64,0}, + [I(14,111)] = {64,0}, + [I(15,111)] = {64,0}, + [I(16,111)] = {64,0}, + [I(17,111)] = {64,0}, + [I(18,111)] = {64,0}, + [I(19,111)] = {64,0}, + [I(20,111)] = {64,0}, + [I(21,111)] = {64,0}, + [I(22,111)] = {64,0}, + [I(23,111)] = {64,0}, + [I(24,111)] = {64,0}, + [I(25,111)] = {64,0}, + [I(26,111)] = {64,0}, + [I(27,111)] = {64,0}, + [I(28,111)] = {64,0}, + [I(29,111)] = {64,0}, + [I(30,111)] = {64,0}, + [I(31,111)] = {64,0}, + [I(32,111)] = {11,0x287}, + [I(33,111)] = {15,0x7F07}, + [I(34,111)] = {15,0x7F27}, + [I(35,111)] = {17,0x1FF47}, + [I(36,111)] = {18,0x3FF27}, + [I(37,111)] = {11,0x2A7}, + [I(38,111)] = {13,0x1F07}, + [I(39,111)] = {16,0xFF47}, + [I(40,111)] = {15,0x7F47}, + [I(41,111)] = {15,0x7F67}, + [I(42,111)] = {13,0x1F27}, + [I(43,111)] = {16,0xFF67}, + [I(44,111)] = {13,0x1F47}, + [I(45,111)] = {11,0x2C7}, + [I(46,111)] = {11,0x2E7}, + [I(47,111)] = {11,0x307}, + [I(48,111)] = {10,0x7}, + [I(49,111)] = {10,0x27}, + [I(50,111)] = {10,0x47}, + [I(51,111)] = {11,0x327}, + [I(52,111)] = {11,0x347}, + [I(53,111)] = {11,0x367}, + [I(54,111)] = {11,0x387}, + [I(55,111)] = {11,0x3A7}, + [I(56,111)] = {11,0x3C7}, + [I(57,111)] = {11,0x3E7}, + [I(58,111)] = {12,0xB87}, + [I(59,111)] = {13,0x1F67}, + [I(60,111)] = {20,0xFFF87}, + [I(61,111)] = {11,0x407}, + [I(62,111)] = {17,0x1FF67}, + [I(63,111)] = {15,0x7F87}, + [I(64,111)] = {18,0x3FF47}, + [I(65,111)] = {11,0x427}, + [I(66,111)] = {12,0xBA7}, + [I(67,111)] = {12,0xBC7}, + [I(68,111)] = {12,0xBE7}, + [I(69,111)] = {12,0xC07}, + [I(70,111)] = {12,0xC27}, + [I(71,111)] = {12,0xC47}, + [I(72,111)] = {12,0xC67}, + [I(73,111)] = {12,0xC87}, + [I(74,111)] = {12,0xCA7}, + [I(75,111)] = {12,0xCC7}, + [I(76,111)] = {12,0xCE7}, + [I(77,111)] = {12,0xD07}, + [I(78,111)] = {12,0xD27}, + [I(79,111)] = {12,0xD47}, + [I(80,111)] = {12,0xD67}, + [I(81,111)] = {12,0xD87}, + [I(82,111)] = {12,0xDA7}, + [I(83,111)] = {12,0xDC7}, + [I(84,111)] = {12,0xDE7}, + [I(85,111)] = {12,0xE07}, + [I(86,111)] = {12,0xE27}, + [I(87,111)] = {12,0xE47}, + [I(88,111)] = {13,0x1F87}, + [I(89,111)] = {12,0xE67}, + [I(90,111)] = {13,0x1FA7}, + [I(91,111)] = {18,0x3FF67}, + [I(92,111)] = {24,0xFFFE07}, + [I(93,111)] = {18,0x3FF87}, + [I(94,111)] = {19,0x7FF87}, + [I(95,111)] = {11,0x447}, + [I(96,111)] = {20,0xFFFA7}, + [I(97,111)] = {10,0x67}, + [I(98,111)] = {11,0x467}, + [I(99,111)] = {10,0x87}, + [I(100,111)] = {11,0x487}, + [I(101,111)] = {10,0xA7}, + [I(102,111)] = {11,0x4A7}, + [I(103,111)] = {11,0x4C7}, + [I(104,111)] = {11,0x4E7}, + [I(105,111)] = {10,0xC7}, + [I(106,111)] = {12,0xE87}, + [I(107,111)] = {12,0xEA7}, + [I(108,111)] = {11,0x507}, + [I(109,111)] = {11,0x527}, + [I(110,111)] = {11,0x547}, + [I(111,111)] = {10,0xE7}, + [I(112,111)] = {11,0x567}, + [I(113,111)] = {12,0xEC7}, + [I(114,111)] = {11,0x587}, + [I(115,111)] = {10,0x107}, + [I(116,111)] = {10,0x127}, + [I(117,111)] = {11,0x5A7}, + [I(118,111)] = {12,0xEE7}, + [I(119,111)] = {12,0xF07}, + [I(120,111)] = {12,0xF27}, + [I(121,111)] = {12,0xF47}, + [I(122,111)] = {12,0xF67}, + [I(123,111)] = {20,0xFFFC7}, + [I(124,111)] = {16,0xFF87}, + [I(125,111)] = {19,0x7FFA7}, + [I(126,111)] = {18,0x3FFA7}, + [I(127,111)] = {64,0}, + [I(128,111)] = {25,0x1FFFCC7}, + [I(129,111)] = {27,0x7FFFA47}, + [I(130,111)] = {25,0x1FFFCE7}, + [I(131,111)] = {25,0x1FFFD07}, + [I(132,111)] = {27,0x7FFFA67}, + [I(133,111)] = {27,0x7FFFA87}, + [I(134,111)] = {27,0x7FFFAA7}, + [I(135,111)] = {28,0xFFFFB27}, + [I(136,111)] = {27,0x7FFFAC7}, + [I(137,111)] = {28,0xFFFFB47}, + [I(138,111)] = {28,0xFFFFB67}, + [I(139,111)] = {28,0xFFFFB87}, + [I(140,111)] = {28,0xFFFFBA7}, + [I(141,111)] = {28,0xFFFFBC7}, + [I(142,111)] = {29,0x1FFFFD67}, + [I(143,111)] = {28,0xFFFFBE7}, + [I(144,111)] = {29,0x1FFFFD87}, + [I(145,111)] = {29,0x1FFFFDA7}, + [I(146,111)] = {27,0x7FFFAE7}, + [I(147,111)] = {28,0xFFFFC07}, + [I(148,111)] = {29,0x1FFFFDC7}, + [I(149,111)] = {28,0xFFFFC27}, + [I(150,111)] = {28,0xFFFFC47}, + [I(151,111)] = {28,0xFFFFC67}, + [I(152,111)] = {28,0xFFFFC87}, + [I(153,111)] = {26,0x3FFFB87}, + [I(154,111)] = {27,0x7FFFB07}, + [I(155,111)] = {28,0xFFFFCA7}, + [I(156,111)] = {27,0x7FFFB27}, + [I(157,111)] = {28,0xFFFFCC7}, + [I(158,111)] = {28,0xFFFFCE7}, + [I(159,111)] = {29,0x1FFFFDE7}, + [I(160,111)] = {27,0x7FFFB47}, + [I(161,111)] = {26,0x3FFFBA7}, + [I(162,111)] = {25,0x1FFFD27}, + [I(163,111)] = {27,0x7FFFB67}, + [I(164,111)] = {27,0x7FFFB87}, + [I(165,111)] = {28,0xFFFFD07}, + [I(166,111)] = {28,0xFFFFD27}, + [I(167,111)] = {26,0x3FFFBC7}, + [I(168,111)] = {28,0xFFFFD47}, + [I(169,111)] = {27,0x7FFFBA7}, + [I(170,111)] = {27,0x7FFFBC7}, + [I(171,111)] = {29,0x1FFFFE07}, + [I(172,111)] = {26,0x3FFFBE7}, + [I(173,111)] = {27,0x7FFFBE7}, + [I(174,111)] = {28,0xFFFFD67}, + [I(175,111)] = {28,0xFFFFD87}, + [I(176,111)] = {26,0x3FFFC07}, + [I(177,111)] = {26,0x3FFFC27}, + [I(178,111)] = {27,0x7FFFC07}, + [I(179,111)] = {26,0x3FFFC47}, + [I(180,111)] = {28,0xFFFFDA7}, + [I(181,111)] = {27,0x7FFFC27}, + [I(182,111)] = {28,0xFFFFDC7}, + [I(183,111)] = {28,0xFFFFDE7}, + [I(184,111)] = {25,0x1FFFD47}, + [I(185,111)] = {27,0x7FFFC47}, + [I(186,111)] = {27,0x7FFFC67}, + [I(187,111)] = {27,0x7FFFC87}, + [I(188,111)] = {28,0xFFFFE07}, + [I(189,111)] = {27,0x7FFFCA7}, + [I(190,111)] = {27,0x7FFFCC7}, + [I(191,111)] = {28,0xFFFFE27}, + [I(192,111)] = {31,0x7FFFFC07}, + [I(193,111)] = {31,0x7FFFFC27}, + [I(194,111)] = {25,0x1FFFD67}, + [I(195,111)] = {24,0xFFFE27}, + [I(196,111)] = {27,0x7FFFCE7}, + [I(197,111)] = {28,0xFFFFE47}, + [I(198,111)] = {27,0x7FFFD07}, + [I(199,111)] = {30,0x3FFFFD87}, + [I(200,111)] = {31,0x7FFFFC47}, + [I(201,111)] = {31,0x7FFFFC67}, + [I(202,111)] = {31,0x7FFFFC87}, + [I(203,111)] = {X32,0xFFFFFBC7}, + [I(204,111)] = {X32,0xFFFFFBE7}, + [I(205,111)] = {31,0x7FFFFCA7}, + [I(206,111)] = {29,0x1FFFFE27}, + [I(207,111)] = {30,0x3FFFFDA7}, + [I(208,111)] = {24,0xFFFE47}, + [I(209,111)] = {26,0x3FFFC67}, + [I(210,111)] = {31,0x7FFFFCC7}, + [I(211,111)] = {X32,0xFFFFFC07}, + [I(212,111)] = {X32,0xFFFFFC27}, + [I(213,111)] = {31,0x7FFFFCE7}, + [I(214,111)] = {X32,0xFFFFFC47}, + [I(215,111)] = {29,0x1FFFFE47}, + [I(216,111)] = {26,0x3FFFC87}, + [I(217,111)] = {26,0x3FFFCA7}, + [I(218,111)] = {31,0x7FFFFD07}, + [I(219,111)] = {31,0x7FFFFD27}, + [I(220,111)] = {64,0}, + [I(221,111)] = {X32,0xFFFFFC67}, + [I(222,111)] = {X32,0xFFFFFC87}, + [I(223,111)] = {X32,0xFFFFFCA7}, + [I(224,111)] = {25,0x1FFFD87}, + [I(225,111)] = {29,0x1FFFFE67}, + [I(226,111)] = {25,0x1FFFDA7}, + [I(227,111)] = {26,0x3FFFCC7}, + [I(228,111)] = {27,0x7FFFD27}, + [I(229,111)] = {26,0x3FFFCE7}, + [I(230,111)] = {26,0x3FFFD07}, + [I(231,111)] = {28,0xFFFFE67}, + [I(232,111)] = {27,0x7FFFD47}, + [I(233,111)] = {27,0x7FFFD67}, + [I(234,111)] = {30,0x3FFFFDC7}, + [I(235,111)] = {30,0x3FFFFDE7}, + [I(236,111)] = {29,0x1FFFFE87}, + [I(237,111)] = {29,0x1FFFFEA7}, + [I(238,111)] = {31,0x7FFFFD47}, + [I(239,111)] = {28,0xFFFFE87}, + [I(240,111)] = {31,0x7FFFFD67}, + [I(241,111)] = {X32,0xFFFFFCC7}, + [I(242,111)] = {31,0x7FFFFD87}, + [I(243,111)] = {31,0x7FFFFDA7}, + [I(244,111)] = {X32,0xFFFFFCE7}, + [I(245,111)] = {X32,0xFFFFFD07}, + [I(246,111)] = {X32,0xFFFFFD27}, + [I(247,111)] = {X32,0xFFFFFD47}, + [I(248,111)] = {X32,0xFFFFFD67}, + [I(249,111)] = {64,0}, + [I(250,111)] = {X32,0xFFFFFD87}, + [I(251,111)] = {X32,0xFFFFFDA7}, + [I(252,111)] = {X32,0xFFFFFDC7}, + [I(253,111)] = {X32,0xFFFFFDE7}, + [I(254,111)] = {X32,0xFFFFFE07}, + [I(255,111)] = {31,0x7FFFFDC7}, + [I(0,112)] = {19,0x7FE2B}, + [I(1,112)] = {29,0x1FFFF62B}, + [I(2,112)] = {64,0}, + [I(3,112)] = {64,0}, + [I(4,112)] = {64,0}, + [I(5,112)] = {64,0}, + [I(6,112)] = {64,0}, + [I(7,112)] = {64,0}, + [I(8,112)] = {64,0}, + [I(9,112)] = {30,0x3FFFFAAB}, + [I(10,112)] = {64,0}, + [I(11,112)] = {64,0}, + [I(12,112)] = {64,0}, + [I(13,112)] = {64,0}, + [I(14,112)] = {64,0}, + [I(15,112)] = {64,0}, + [I(16,112)] = {64,0}, + [I(17,112)] = {64,0}, + [I(18,112)] = {64,0}, + [I(19,112)] = {64,0}, + [I(20,112)] = {64,0}, + [I(21,112)] = {64,0}, + [I(22,112)] = {64,0}, + [I(23,112)] = {64,0}, + [I(24,112)] = {64,0}, + [I(25,112)] = {64,0}, + [I(26,112)] = {64,0}, + [I(27,112)] = {64,0}, + [I(28,112)] = {64,0}, + [I(29,112)] = {64,0}, + [I(30,112)] = {64,0}, + [I(31,112)] = {64,0}, + [I(32,112)] = {12,0x52B}, + [I(33,112)] = {16,0xFE2B}, + [I(34,112)] = {16,0xFE6B}, + [I(35,112)] = {18,0x3FEAB}, + [I(36,112)] = {19,0x7FE6B}, + [I(37,112)] = {12,0x56B}, + [I(38,112)] = {14,0x3E2B}, + [I(39,112)] = {17,0x1FEAB}, + [I(40,112)] = {16,0xFEAB}, + [I(41,112)] = {16,0xFEEB}, + [I(42,112)] = {14,0x3E6B}, + [I(43,112)] = {17,0x1FEEB}, + [I(44,112)] = {14,0x3EAB}, + [I(45,112)] = {12,0x5AB}, + [I(46,112)] = {12,0x5EB}, + [I(47,112)] = {12,0x62B}, + [I(48,112)] = {11,0x2B}, + [I(49,112)] = {11,0x6B}, + [I(50,112)] = {11,0xAB}, + [I(51,112)] = {12,0x66B}, + [I(52,112)] = {12,0x6AB}, + [I(53,112)] = {12,0x6EB}, + [I(54,112)] = {12,0x72B}, + [I(55,112)] = {12,0x76B}, + [I(56,112)] = {12,0x7AB}, + [I(57,112)] = {12,0x7EB}, + [I(58,112)] = {13,0x172B}, + [I(59,112)] = {14,0x3EEB}, + [I(60,112)] = {21,0x1FFF2B}, + [I(61,112)] = {12,0x82B}, + [I(62,112)] = {18,0x3FEEB}, + [I(63,112)] = {16,0xFF2B}, + [I(64,112)] = {19,0x7FEAB}, + [I(65,112)] = {12,0x86B}, + [I(66,112)] = {13,0x176B}, + [I(67,112)] = {13,0x17AB}, + [I(68,112)] = {13,0x17EB}, + [I(69,112)] = {13,0x182B}, + [I(70,112)] = {13,0x186B}, + [I(71,112)] = {13,0x18AB}, + [I(72,112)] = {13,0x18EB}, + [I(73,112)] = {13,0x192B}, + [I(74,112)] = {13,0x196B}, + [I(75,112)] = {13,0x19AB}, + [I(76,112)] = {13,0x19EB}, + [I(77,112)] = {13,0x1A2B}, + [I(78,112)] = {13,0x1A6B}, + [I(79,112)] = {13,0x1AAB}, + [I(80,112)] = {13,0x1AEB}, + [I(81,112)] = {13,0x1B2B}, + [I(82,112)] = {13,0x1B6B}, + [I(83,112)] = {13,0x1BAB}, + [I(84,112)] = {13,0x1BEB}, + [I(85,112)] = {13,0x1C2B}, + [I(86,112)] = {13,0x1C6B}, + [I(87,112)] = {13,0x1CAB}, + [I(88,112)] = {14,0x3F2B}, + [I(89,112)] = {13,0x1CEB}, + [I(90,112)] = {14,0x3F6B}, + [I(91,112)] = {19,0x7FEEB}, + [I(92,112)] = {25,0x1FFFC2B}, + [I(93,112)] = {19,0x7FF2B}, + [I(94,112)] = {20,0xFFF2B}, + [I(95,112)] = {12,0x8AB}, + [I(96,112)] = {21,0x1FFF6B}, + [I(97,112)] = {11,0xEB}, + [I(98,112)] = {12,0x8EB}, + [I(99,112)] = {11,0x12B}, + [I(100,112)] = {12,0x92B}, + [I(101,112)] = {11,0x16B}, + [I(102,112)] = {12,0x96B}, + [I(103,112)] = {12,0x9AB}, + [I(104,112)] = {12,0x9EB}, + [I(105,112)] = {11,0x1AB}, + [I(106,112)] = {13,0x1D2B}, + [I(107,112)] = {13,0x1D6B}, + [I(108,112)] = {12,0xA2B}, + [I(109,112)] = {12,0xA6B}, + [I(110,112)] = {12,0xAAB}, + [I(111,112)] = {11,0x1EB}, + [I(112,112)] = {12,0xAEB}, + [I(113,112)] = {13,0x1DAB}, + [I(114,112)] = {12,0xB2B}, + [I(115,112)] = {11,0x22B}, + [I(116,112)] = {11,0x26B}, + [I(117,112)] = {12,0xB6B}, + [I(118,112)] = {13,0x1DEB}, + [I(119,112)] = {13,0x1E2B}, + [I(120,112)] = {13,0x1E6B}, + [I(121,112)] = {13,0x1EAB}, + [I(122,112)] = {13,0x1EEB}, + [I(123,112)] = {21,0x1FFFAB}, + [I(124,112)] = {17,0x1FF2B}, + [I(125,112)] = {20,0xFFF6B}, + [I(126,112)] = {19,0x7FF6B}, + [I(127,112)] = {64,0}, + [I(128,112)] = {26,0x3FFF9AB}, + [I(129,112)] = {28,0xFFFF4AB}, + [I(130,112)] = {26,0x3FFF9EB}, + [I(131,112)] = {26,0x3FFFA2B}, + [I(132,112)] = {28,0xFFFF4EB}, + [I(133,112)] = {28,0xFFFF52B}, + [I(134,112)] = {28,0xFFFF56B}, + [I(135,112)] = {29,0x1FFFF66B}, + [I(136,112)] = {28,0xFFFF5AB}, + [I(137,112)] = {29,0x1FFFF6AB}, + [I(138,112)] = {29,0x1FFFF6EB}, + [I(139,112)] = {29,0x1FFFF72B}, + [I(140,112)] = {29,0x1FFFF76B}, + [I(141,112)] = {29,0x1FFFF7AB}, + [I(142,112)] = {30,0x3FFFFAEB}, + [I(143,112)] = {29,0x1FFFF7EB}, + [I(144,112)] = {30,0x3FFFFB2B}, + [I(145,112)] = {30,0x3FFFFB6B}, + [I(146,112)] = {28,0xFFFF5EB}, + [I(147,112)] = {29,0x1FFFF82B}, + [I(148,112)] = {30,0x3FFFFBAB}, + [I(149,112)] = {29,0x1FFFF86B}, + [I(150,112)] = {29,0x1FFFF8AB}, + [I(151,112)] = {29,0x1FFFF8EB}, + [I(152,112)] = {29,0x1FFFF92B}, + [I(153,112)] = {27,0x7FFF72B}, + [I(154,112)] = {28,0xFFFF62B}, + [I(155,112)] = {29,0x1FFFF96B}, + [I(156,112)] = {28,0xFFFF66B}, + [I(157,112)] = {29,0x1FFFF9AB}, + [I(158,112)] = {29,0x1FFFF9EB}, + [I(159,112)] = {30,0x3FFFFBEB}, + [I(160,112)] = {28,0xFFFF6AB}, + [I(161,112)] = {27,0x7FFF76B}, + [I(162,112)] = {26,0x3FFFA6B}, + [I(163,112)] = {28,0xFFFF6EB}, + [I(164,112)] = {28,0xFFFF72B}, + [I(165,112)] = {29,0x1FFFFA2B}, + [I(166,112)] = {29,0x1FFFFA6B}, + [I(167,112)] = {27,0x7FFF7AB}, + [I(168,112)] = {29,0x1FFFFAAB}, + [I(169,112)] = {28,0xFFFF76B}, + [I(170,112)] = {28,0xFFFF7AB}, + [I(171,112)] = {30,0x3FFFFC2B}, + [I(172,112)] = {27,0x7FFF7EB}, + [I(173,112)] = {28,0xFFFF7EB}, + [I(174,112)] = {29,0x1FFFFAEB}, + [I(175,112)] = {29,0x1FFFFB2B}, + [I(176,112)] = {27,0x7FFF82B}, + [I(177,112)] = {27,0x7FFF86B}, + [I(178,112)] = {28,0xFFFF82B}, + [I(179,112)] = {27,0x7FFF8AB}, + [I(180,112)] = {29,0x1FFFFB6B}, + [I(181,112)] = {28,0xFFFF86B}, + [I(182,112)] = {29,0x1FFFFBAB}, + [I(183,112)] = {29,0x1FFFFBEB}, + [I(184,112)] = {26,0x3FFFAAB}, + [I(185,112)] = {28,0xFFFF8AB}, + [I(186,112)] = {28,0xFFFF8EB}, + [I(187,112)] = {28,0xFFFF92B}, + [I(188,112)] = {29,0x1FFFFC2B}, + [I(189,112)] = {28,0xFFFF96B}, + [I(190,112)] = {28,0xFFFF9AB}, + [I(191,112)] = {29,0x1FFFFC6B}, + [I(192,112)] = {X32,0xFFFFF82B}, + [I(193,112)] = {X32,0xFFFFF86B}, + [I(194,112)] = {26,0x3FFFAEB}, + [I(195,112)] = {25,0x1FFFC6B}, + [I(196,112)] = {28,0xFFFF9EB}, + [I(197,112)] = {29,0x1FFFFCAB}, + [I(198,112)] = {28,0xFFFFA2B}, + [I(199,112)] = {31,0x7FFFFB2B}, + [I(200,112)] = {X32,0xFFFFF8AB}, + [I(201,112)] = {X32,0xFFFFF8EB}, + [I(202,112)] = {X32,0xFFFFF92B}, + [I(203,112)] = {64,0}, + [I(204,112)] = {64,0}, + [I(205,112)] = {X32,0xFFFFF96B}, + [I(206,112)] = {30,0x3FFFFC6B}, + [I(207,112)] = {31,0x7FFFFB6B}, + [I(208,112)] = {25,0x1FFFCAB}, + [I(209,112)] = {27,0x7FFF8EB}, + [I(210,112)] = {X32,0xFFFFF9AB}, + [I(211,112)] = {64,0}, + [I(212,112)] = {64,0}, + [I(213,112)] = {X32,0xFFFFF9EB}, + [I(214,112)] = {64,0}, + [I(215,112)] = {30,0x3FFFFCAB}, + [I(216,112)] = {27,0x7FFF92B}, + [I(217,112)] = {27,0x7FFF96B}, + [I(218,112)] = {X32,0xFFFFFA2B}, + [I(219,112)] = {X32,0xFFFFFA6B}, + [I(220,112)] = {64,0}, + [I(221,112)] = {64,0}, + [I(222,112)] = {64,0}, + [I(223,112)] = {64,0}, + [I(224,112)] = {26,0x3FFFB2B}, + [I(225,112)] = {30,0x3FFFFCEB}, + [I(226,112)] = {26,0x3FFFB6B}, + [I(227,112)] = {27,0x7FFF9AB}, + [I(228,112)] = {28,0xFFFFA6B}, + [I(229,112)] = {27,0x7FFF9EB}, + [I(230,112)] = {27,0x7FFFA2B}, + [I(231,112)] = {29,0x1FFFFCEB}, + [I(232,112)] = {28,0xFFFFAAB}, + [I(233,112)] = {28,0xFFFFAEB}, + [I(234,112)] = {31,0x7FFFFBAB}, + [I(235,112)] = {31,0x7FFFFBEB}, + [I(236,112)] = {30,0x3FFFFD2B}, + [I(237,112)] = {30,0x3FFFFD6B}, + [I(238,112)] = {X32,0xFFFFFAAB}, + [I(239,112)] = {29,0x1FFFFD2B}, + [I(240,112)] = {X32,0xFFFFFAEB}, + [I(241,112)] = {64,0}, + [I(242,112)] = {X32,0xFFFFFB2B}, + [I(243,112)] = {X32,0xFFFFFB6B}, + [I(244,112)] = {64,0}, + [I(245,112)] = {64,0}, + [I(246,112)] = {64,0}, + [I(247,112)] = {64,0}, + [I(248,112)] = {64,0}, + [I(249,112)] = {64,0}, + [I(250,112)] = {64,0}, + [I(251,112)] = {64,0}, + [I(252,112)] = {64,0}, + [I(253,112)] = {64,0}, + [I(254,112)] = {64,0}, + [I(255,112)] = {X32,0xFFFFFBAB}, + [I(0,113)] = {20,0xFFC76}, + [I(1,113)] = {30,0x3FFFEC76}, + [I(2,113)] = {64,0}, + [I(3,113)] = {64,0}, + [I(4,113)] = {64,0}, + [I(5,113)] = {64,0}, + [I(6,113)] = {64,0}, + [I(7,113)] = {64,0}, + [I(8,113)] = {64,0}, + [I(9,113)] = {31,0x7FFFF576}, + [I(10,113)] = {64,0}, + [I(11,113)] = {64,0}, + [I(12,113)] = {64,0}, + [I(13,113)] = {64,0}, + [I(14,113)] = {64,0}, + [I(15,113)] = {64,0}, + [I(16,113)] = {64,0}, + [I(17,113)] = {64,0}, + [I(18,113)] = {64,0}, + [I(19,113)] = {64,0}, + [I(20,113)] = {64,0}, + [I(21,113)] = {64,0}, + [I(22,113)] = {64,0}, + [I(23,113)] = {64,0}, + [I(24,113)] = {64,0}, + [I(25,113)] = {64,0}, + [I(26,113)] = {64,0}, + [I(27,113)] = {64,0}, + [I(28,113)] = {64,0}, + [I(29,113)] = {64,0}, + [I(30,113)] = {64,0}, + [I(31,113)] = {64,0}, + [I(32,113)] = {13,0xA76}, + [I(33,113)] = {17,0x1FC76}, + [I(34,113)] = {17,0x1FCF6}, + [I(35,113)] = {19,0x7FD76}, + [I(36,113)] = {20,0xFFCF6}, + [I(37,113)] = {13,0xAF6}, + [I(38,113)] = {15,0x7C76}, + [I(39,113)] = {18,0x3FD76}, + [I(40,113)] = {17,0x1FD76}, + [I(41,113)] = {17,0x1FDF6}, + [I(42,113)] = {15,0x7CF6}, + [I(43,113)] = {18,0x3FDF6}, + [I(44,113)] = {15,0x7D76}, + [I(45,113)] = {13,0xB76}, + [I(46,113)] = {13,0xBF6}, + [I(47,113)] = {13,0xC76}, + [I(48,113)] = {12,0x76}, + [I(49,113)] = {12,0xF6}, + [I(50,113)] = {12,0x176}, + [I(51,113)] = {13,0xCF6}, + [I(52,113)] = {13,0xD76}, + [I(53,113)] = {13,0xDF6}, + [I(54,113)] = {13,0xE76}, + [I(55,113)] = {13,0xEF6}, + [I(56,113)] = {13,0xF76}, + [I(57,113)] = {13,0xFF6}, + [I(58,113)] = {14,0x2E76}, + [I(59,113)] = {15,0x7DF6}, + [I(60,113)] = {22,0x3FFE76}, + [I(61,113)] = {13,0x1076}, + [I(62,113)] = {19,0x7FDF6}, + [I(63,113)] = {17,0x1FE76}, + [I(64,113)] = {20,0xFFD76}, + [I(65,113)] = {13,0x10F6}, + [I(66,113)] = {14,0x2EF6}, + [I(67,113)] = {14,0x2F76}, + [I(68,113)] = {14,0x2FF6}, + [I(69,113)] = {14,0x3076}, + [I(70,113)] = {14,0x30F6}, + [I(71,113)] = {14,0x3176}, + [I(72,113)] = {14,0x31F6}, + [I(73,113)] = {14,0x3276}, + [I(74,113)] = {14,0x32F6}, + [I(75,113)] = {14,0x3376}, + [I(76,113)] = {14,0x33F6}, + [I(77,113)] = {14,0x3476}, + [I(78,113)] = {14,0x34F6}, + [I(79,113)] = {14,0x3576}, + [I(80,113)] = {14,0x35F6}, + [I(81,113)] = {14,0x3676}, + [I(82,113)] = {14,0x36F6}, + [I(83,113)] = {14,0x3776}, + [I(84,113)] = {14,0x37F6}, + [I(85,113)] = {14,0x3876}, + [I(86,113)] = {14,0x38F6}, + [I(87,113)] = {14,0x3976}, + [I(88,113)] = {15,0x7E76}, + [I(89,113)] = {14,0x39F6}, + [I(90,113)] = {15,0x7EF6}, + [I(91,113)] = {20,0xFFDF6}, + [I(92,113)] = {26,0x3FFF876}, + [I(93,113)] = {20,0xFFE76}, + [I(94,113)] = {21,0x1FFE76}, + [I(95,113)] = {13,0x1176}, + [I(96,113)] = {22,0x3FFEF6}, + [I(97,113)] = {12,0x1F6}, + [I(98,113)] = {13,0x11F6}, + [I(99,113)] = {12,0x276}, + [I(100,113)] = {13,0x1276}, + [I(101,113)] = {12,0x2F6}, + [I(102,113)] = {13,0x12F6}, + [I(103,113)] = {13,0x1376}, + [I(104,113)] = {13,0x13F6}, + [I(105,113)] = {12,0x376}, + [I(106,113)] = {14,0x3A76}, + [I(107,113)] = {14,0x3AF6}, + [I(108,113)] = {13,0x1476}, + [I(109,113)] = {13,0x14F6}, + [I(110,113)] = {13,0x1576}, + [I(111,113)] = {12,0x3F6}, + [I(112,113)] = {13,0x15F6}, + [I(113,113)] = {14,0x3B76}, + [I(114,113)] = {13,0x1676}, + [I(115,113)] = {12,0x476}, + [I(116,113)] = {12,0x4F6}, + [I(117,113)] = {13,0x16F6}, + [I(118,113)] = {14,0x3BF6}, + [I(119,113)] = {14,0x3C76}, + [I(120,113)] = {14,0x3CF6}, + [I(121,113)] = {14,0x3D76}, + [I(122,113)] = {14,0x3DF6}, + [I(123,113)] = {22,0x3FFF76}, + [I(124,113)] = {18,0x3FE76}, + [I(125,113)] = {21,0x1FFEF6}, + [I(126,113)] = {20,0xFFEF6}, + [I(127,113)] = {64,0}, + [I(128,113)] = {27,0x7FFF376}, + [I(129,113)] = {29,0x1FFFE976}, + [I(130,113)] = {27,0x7FFF3F6}, + [I(131,113)] = {27,0x7FFF476}, + [I(132,113)] = {29,0x1FFFE9F6}, + [I(133,113)] = {29,0x1FFFEA76}, + [I(134,113)] = {29,0x1FFFEAF6}, + [I(135,113)] = {30,0x3FFFECF6}, + [I(136,113)] = {29,0x1FFFEB76}, + [I(137,113)] = {30,0x3FFFED76}, + [I(138,113)] = {30,0x3FFFEDF6}, + [I(139,113)] = {30,0x3FFFEE76}, + [I(140,113)] = {30,0x3FFFEEF6}, + [I(141,113)] = {30,0x3FFFEF76}, + [I(142,113)] = {31,0x7FFFF5F6}, + [I(143,113)] = {30,0x3FFFEFF6}, + [I(144,113)] = {31,0x7FFFF676}, + [I(145,113)] = {31,0x7FFFF6F6}, + [I(146,113)] = {29,0x1FFFEBF6}, + [I(147,113)] = {30,0x3FFFF076}, + [I(148,113)] = {31,0x7FFFF776}, + [I(149,113)] = {30,0x3FFFF0F6}, + [I(150,113)] = {30,0x3FFFF176}, + [I(151,113)] = {30,0x3FFFF1F6}, + [I(152,113)] = {30,0x3FFFF276}, + [I(153,113)] = {28,0xFFFEE76}, + [I(154,113)] = {29,0x1FFFEC76}, + [I(155,113)] = {30,0x3FFFF2F6}, + [I(156,113)] = {29,0x1FFFECF6}, + [I(157,113)] = {30,0x3FFFF376}, + [I(158,113)] = {30,0x3FFFF3F6}, + [I(159,113)] = {31,0x7FFFF7F6}, + [I(160,113)] = {29,0x1FFFED76}, + [I(161,113)] = {28,0xFFFEEF6}, + [I(162,113)] = {27,0x7FFF4F6}, + [I(163,113)] = {29,0x1FFFEDF6}, + [I(164,113)] = {29,0x1FFFEE76}, + [I(165,113)] = {30,0x3FFFF476}, + [I(166,113)] = {30,0x3FFFF4F6}, + [I(167,113)] = {28,0xFFFEF76}, + [I(168,113)] = {30,0x3FFFF576}, + [I(169,113)] = {29,0x1FFFEEF6}, + [I(170,113)] = {29,0x1FFFEF76}, + [I(171,113)] = {31,0x7FFFF876}, + [I(172,113)] = {28,0xFFFEFF6}, + [I(173,113)] = {29,0x1FFFEFF6}, + [I(174,113)] = {30,0x3FFFF5F6}, + [I(175,113)] = {30,0x3FFFF676}, + [I(176,113)] = {28,0xFFFF076}, + [I(177,113)] = {28,0xFFFF0F6}, + [I(178,113)] = {29,0x1FFFF076}, + [I(179,113)] = {28,0xFFFF176}, + [I(180,113)] = {30,0x3FFFF6F6}, + [I(181,113)] = {29,0x1FFFF0F6}, + [I(182,113)] = {30,0x3FFFF776}, + [I(183,113)] = {30,0x3FFFF7F6}, + [I(184,113)] = {27,0x7FFF576}, + [I(185,113)] = {29,0x1FFFF176}, + [I(186,113)] = {29,0x1FFFF1F6}, + [I(187,113)] = {29,0x1FFFF276}, + [I(188,113)] = {30,0x3FFFF876}, + [I(189,113)] = {29,0x1FFFF2F6}, + [I(190,113)] = {29,0x1FFFF376}, + [I(191,113)] = {30,0x3FFFF8F6}, + [I(192,113)] = {64,0}, + [I(193,113)] = {64,0}, + [I(194,113)] = {27,0x7FFF5F6}, + [I(195,113)] = {26,0x3FFF8F6}, + [I(196,113)] = {29,0x1FFFF3F6}, + [I(197,113)] = {30,0x3FFFF976}, + [I(198,113)] = {29,0x1FFFF476}, + [I(199,113)] = {X32,0xFFFFF676}, + [I(200,113)] = {64,0}, + [I(201,113)] = {64,0}, + [I(202,113)] = {64,0}, + [I(203,113)] = {64,0}, + [I(204,113)] = {64,0}, + [I(205,113)] = {64,0}, + [I(206,113)] = {31,0x7FFFF8F6}, + [I(207,113)] = {X32,0xFFFFF6F6}, + [I(208,113)] = {26,0x3FFF976}, + [I(209,113)] = {28,0xFFFF1F6}, + [I(210,113)] = {64,0}, + [I(211,113)] = {64,0}, + [I(212,113)] = {64,0}, + [I(213,113)] = {64,0}, + [I(214,113)] = {64,0}, + [I(215,113)] = {31,0x7FFFF976}, + [I(216,113)] = {28,0xFFFF276}, + [I(217,113)] = {28,0xFFFF2F6}, + [I(218,113)] = {64,0}, + [I(219,113)] = {64,0}, + [I(220,113)] = {64,0}, + [I(221,113)] = {64,0}, + [I(222,113)] = {64,0}, + [I(223,113)] = {64,0}, + [I(224,113)] = {27,0x7FFF676}, + [I(225,113)] = {31,0x7FFFF9F6}, + [I(226,113)] = {27,0x7FFF6F6}, + [I(227,113)] = {28,0xFFFF376}, + [I(228,113)] = {29,0x1FFFF4F6}, + [I(229,113)] = {28,0xFFFF3F6}, + [I(230,113)] = {28,0xFFFF476}, + [I(231,113)] = {30,0x3FFFF9F6}, + [I(232,113)] = {29,0x1FFFF576}, + [I(233,113)] = {29,0x1FFFF5F6}, + [I(234,113)] = {X32,0xFFFFF776}, + [I(235,113)] = {X32,0xFFFFF7F6}, + [I(236,113)] = {31,0x7FFFFA76}, + [I(237,113)] = {31,0x7FFFFAF6}, + [I(238,113)] = {64,0}, + [I(239,113)] = {30,0x3FFFFA76}, + [I(240,113)] = {64,0}, + [I(241,113)] = {64,0}, + [I(242,113)] = {64,0}, + [I(243,113)] = {64,0}, + [I(244,113)] = {64,0}, + [I(245,113)] = {64,0}, + [I(246,113)] = {64,0}, + [I(247,113)] = {64,0}, + [I(248,113)] = {64,0}, + [I(249,113)] = {64,0}, + [I(250,113)] = {64,0}, + [I(251,113)] = {64,0}, + [I(252,113)] = {64,0}, + [I(253,113)] = {64,0}, + [I(254,113)] = {64,0}, + [I(255,113)] = {64,0}, + [I(0,114)] = {19,0x7FE2C}, + [I(1,114)] = {29,0x1FFFF62C}, + [I(2,114)] = {64,0}, + [I(3,114)] = {64,0}, + [I(4,114)] = {64,0}, + [I(5,114)] = {64,0}, + [I(6,114)] = {64,0}, + [I(7,114)] = {64,0}, + [I(8,114)] = {64,0}, + [I(9,114)] = {30,0x3FFFFAAC}, + [I(10,114)] = {64,0}, + [I(11,114)] = {64,0}, + [I(12,114)] = {64,0}, + [I(13,114)] = {64,0}, + [I(14,114)] = {64,0}, + [I(15,114)] = {64,0}, + [I(16,114)] = {64,0}, + [I(17,114)] = {64,0}, + [I(18,114)] = {64,0}, + [I(19,114)] = {64,0}, + [I(20,114)] = {64,0}, + [I(21,114)] = {64,0}, + [I(22,114)] = {64,0}, + [I(23,114)] = {64,0}, + [I(24,114)] = {64,0}, + [I(25,114)] = {64,0}, + [I(26,114)] = {64,0}, + [I(27,114)] = {64,0}, + [I(28,114)] = {64,0}, + [I(29,114)] = {64,0}, + [I(30,114)] = {64,0}, + [I(31,114)] = {64,0}, + [I(32,114)] = {12,0x52C}, + [I(33,114)] = {16,0xFE2C}, + [I(34,114)] = {16,0xFE6C}, + [I(35,114)] = {18,0x3FEAC}, + [I(36,114)] = {19,0x7FE6C}, + [I(37,114)] = {12,0x56C}, + [I(38,114)] = {14,0x3E2C}, + [I(39,114)] = {17,0x1FEAC}, + [I(40,114)] = {16,0xFEAC}, + [I(41,114)] = {16,0xFEEC}, + [I(42,114)] = {14,0x3E6C}, + [I(43,114)] = {17,0x1FEEC}, + [I(44,114)] = {14,0x3EAC}, + [I(45,114)] = {12,0x5AC}, + [I(46,114)] = {12,0x5EC}, + [I(47,114)] = {12,0x62C}, + [I(48,114)] = {11,0x2C}, + [I(49,114)] = {11,0x6C}, + [I(50,114)] = {11,0xAC}, + [I(51,114)] = {12,0x66C}, + [I(52,114)] = {12,0x6AC}, + [I(53,114)] = {12,0x6EC}, + [I(54,114)] = {12,0x72C}, + [I(55,114)] = {12,0x76C}, + [I(56,114)] = {12,0x7AC}, + [I(57,114)] = {12,0x7EC}, + [I(58,114)] = {13,0x172C}, + [I(59,114)] = {14,0x3EEC}, + [I(60,114)] = {21,0x1FFF2C}, + [I(61,114)] = {12,0x82C}, + [I(62,114)] = {18,0x3FEEC}, + [I(63,114)] = {16,0xFF2C}, + [I(64,114)] = {19,0x7FEAC}, + [I(65,114)] = {12,0x86C}, + [I(66,114)] = {13,0x176C}, + [I(67,114)] = {13,0x17AC}, + [I(68,114)] = {13,0x17EC}, + [I(69,114)] = {13,0x182C}, + [I(70,114)] = {13,0x186C}, + [I(71,114)] = {13,0x18AC}, + [I(72,114)] = {13,0x18EC}, + [I(73,114)] = {13,0x192C}, + [I(74,114)] = {13,0x196C}, + [I(75,114)] = {13,0x19AC}, + [I(76,114)] = {13,0x19EC}, + [I(77,114)] = {13,0x1A2C}, + [I(78,114)] = {13,0x1A6C}, + [I(79,114)] = {13,0x1AAC}, + [I(80,114)] = {13,0x1AEC}, + [I(81,114)] = {13,0x1B2C}, + [I(82,114)] = {13,0x1B6C}, + [I(83,114)] = {13,0x1BAC}, + [I(84,114)] = {13,0x1BEC}, + [I(85,114)] = {13,0x1C2C}, + [I(86,114)] = {13,0x1C6C}, + [I(87,114)] = {13,0x1CAC}, + [I(88,114)] = {14,0x3F2C}, + [I(89,114)] = {13,0x1CEC}, + [I(90,114)] = {14,0x3F6C}, + [I(91,114)] = {19,0x7FEEC}, + [I(92,114)] = {25,0x1FFFC2C}, + [I(93,114)] = {19,0x7FF2C}, + [I(94,114)] = {20,0xFFF2C}, + [I(95,114)] = {12,0x8AC}, + [I(96,114)] = {21,0x1FFF6C}, + [I(97,114)] = {11,0xEC}, + [I(98,114)] = {12,0x8EC}, + [I(99,114)] = {11,0x12C}, + [I(100,114)] = {12,0x92C}, + [I(101,114)] = {11,0x16C}, + [I(102,114)] = {12,0x96C}, + [I(103,114)] = {12,0x9AC}, + [I(104,114)] = {12,0x9EC}, + [I(105,114)] = {11,0x1AC}, + [I(106,114)] = {13,0x1D2C}, + [I(107,114)] = {13,0x1D6C}, + [I(108,114)] = {12,0xA2C}, + [I(109,114)] = {12,0xA6C}, + [I(110,114)] = {12,0xAAC}, + [I(111,114)] = {11,0x1EC}, + [I(112,114)] = {12,0xAEC}, + [I(113,114)] = {13,0x1DAC}, + [I(114,114)] = {12,0xB2C}, + [I(115,114)] = {11,0x22C}, + [I(116,114)] = {11,0x26C}, + [I(117,114)] = {12,0xB6C}, + [I(118,114)] = {13,0x1DEC}, + [I(119,114)] = {13,0x1E2C}, + [I(120,114)] = {13,0x1E6C}, + [I(121,114)] = {13,0x1EAC}, + [I(122,114)] = {13,0x1EEC}, + [I(123,114)] = {21,0x1FFFAC}, + [I(124,114)] = {17,0x1FF2C}, + [I(125,114)] = {20,0xFFF6C}, + [I(126,114)] = {19,0x7FF6C}, + [I(127,114)] = {64,0}, + [I(128,114)] = {26,0x3FFF9AC}, + [I(129,114)] = {28,0xFFFF4AC}, + [I(130,114)] = {26,0x3FFF9EC}, + [I(131,114)] = {26,0x3FFFA2C}, + [I(132,114)] = {28,0xFFFF4EC}, + [I(133,114)] = {28,0xFFFF52C}, + [I(134,114)] = {28,0xFFFF56C}, + [I(135,114)] = {29,0x1FFFF66C}, + [I(136,114)] = {28,0xFFFF5AC}, + [I(137,114)] = {29,0x1FFFF6AC}, + [I(138,114)] = {29,0x1FFFF6EC}, + [I(139,114)] = {29,0x1FFFF72C}, + [I(140,114)] = {29,0x1FFFF76C}, + [I(141,114)] = {29,0x1FFFF7AC}, + [I(142,114)] = {30,0x3FFFFAEC}, + [I(143,114)] = {29,0x1FFFF7EC}, + [I(144,114)] = {30,0x3FFFFB2C}, + [I(145,114)] = {30,0x3FFFFB6C}, + [I(146,114)] = {28,0xFFFF5EC}, + [I(147,114)] = {29,0x1FFFF82C}, + [I(148,114)] = {30,0x3FFFFBAC}, + [I(149,114)] = {29,0x1FFFF86C}, + [I(150,114)] = {29,0x1FFFF8AC}, + [I(151,114)] = {29,0x1FFFF8EC}, + [I(152,114)] = {29,0x1FFFF92C}, + [I(153,114)] = {27,0x7FFF72C}, + [I(154,114)] = {28,0xFFFF62C}, + [I(155,114)] = {29,0x1FFFF96C}, + [I(156,114)] = {28,0xFFFF66C}, + [I(157,114)] = {29,0x1FFFF9AC}, + [I(158,114)] = {29,0x1FFFF9EC}, + [I(159,114)] = {30,0x3FFFFBEC}, + [I(160,114)] = {28,0xFFFF6AC}, + [I(161,114)] = {27,0x7FFF76C}, + [I(162,114)] = {26,0x3FFFA6C}, + [I(163,114)] = {28,0xFFFF6EC}, + [I(164,114)] = {28,0xFFFF72C}, + [I(165,114)] = {29,0x1FFFFA2C}, + [I(166,114)] = {29,0x1FFFFA6C}, + [I(167,114)] = {27,0x7FFF7AC}, + [I(168,114)] = {29,0x1FFFFAAC}, + [I(169,114)] = {28,0xFFFF76C}, + [I(170,114)] = {28,0xFFFF7AC}, + [I(171,114)] = {30,0x3FFFFC2C}, + [I(172,114)] = {27,0x7FFF7EC}, + [I(173,114)] = {28,0xFFFF7EC}, + [I(174,114)] = {29,0x1FFFFAEC}, + [I(175,114)] = {29,0x1FFFFB2C}, + [I(176,114)] = {27,0x7FFF82C}, + [I(177,114)] = {27,0x7FFF86C}, + [I(178,114)] = {28,0xFFFF82C}, + [I(179,114)] = {27,0x7FFF8AC}, + [I(180,114)] = {29,0x1FFFFB6C}, + [I(181,114)] = {28,0xFFFF86C}, + [I(182,114)] = {29,0x1FFFFBAC}, + [I(183,114)] = {29,0x1FFFFBEC}, + [I(184,114)] = {26,0x3FFFAAC}, + [I(185,114)] = {28,0xFFFF8AC}, + [I(186,114)] = {28,0xFFFF8EC}, + [I(187,114)] = {28,0xFFFF92C}, + [I(188,114)] = {29,0x1FFFFC2C}, + [I(189,114)] = {28,0xFFFF96C}, + [I(190,114)] = {28,0xFFFF9AC}, + [I(191,114)] = {29,0x1FFFFC6C}, + [I(192,114)] = {X32,0xFFFFF82C}, + [I(193,114)] = {X32,0xFFFFF86C}, + [I(194,114)] = {26,0x3FFFAEC}, + [I(195,114)] = {25,0x1FFFC6C}, + [I(196,114)] = {28,0xFFFF9EC}, + [I(197,114)] = {29,0x1FFFFCAC}, + [I(198,114)] = {28,0xFFFFA2C}, + [I(199,114)] = {31,0x7FFFFB2C}, + [I(200,114)] = {X32,0xFFFFF8AC}, + [I(201,114)] = {X32,0xFFFFF8EC}, + [I(202,114)] = {X32,0xFFFFF92C}, + [I(203,114)] = {64,0}, + [I(204,114)] = {64,0}, + [I(205,114)] = {X32,0xFFFFF96C}, + [I(206,114)] = {30,0x3FFFFC6C}, + [I(207,114)] = {31,0x7FFFFB6C}, + [I(208,114)] = {25,0x1FFFCAC}, + [I(209,114)] = {27,0x7FFF8EC}, + [I(210,114)] = {X32,0xFFFFF9AC}, + [I(211,114)] = {64,0}, + [I(212,114)] = {64,0}, + [I(213,114)] = {X32,0xFFFFF9EC}, + [I(214,114)] = {64,0}, + [I(215,114)] = {30,0x3FFFFCAC}, + [I(216,114)] = {27,0x7FFF92C}, + [I(217,114)] = {27,0x7FFF96C}, + [I(218,114)] = {X32,0xFFFFFA2C}, + [I(219,114)] = {X32,0xFFFFFA6C}, + [I(220,114)] = {64,0}, + [I(221,114)] = {64,0}, + [I(222,114)] = {64,0}, + [I(223,114)] = {64,0}, + [I(224,114)] = {26,0x3FFFB2C}, + [I(225,114)] = {30,0x3FFFFCEC}, + [I(226,114)] = {26,0x3FFFB6C}, + [I(227,114)] = {27,0x7FFF9AC}, + [I(228,114)] = {28,0xFFFFA6C}, + [I(229,114)] = {27,0x7FFF9EC}, + [I(230,114)] = {27,0x7FFFA2C}, + [I(231,114)] = {29,0x1FFFFCEC}, + [I(232,114)] = {28,0xFFFFAAC}, + [I(233,114)] = {28,0xFFFFAEC}, + [I(234,114)] = {31,0x7FFFFBAC}, + [I(235,114)] = {31,0x7FFFFBEC}, + [I(236,114)] = {30,0x3FFFFD2C}, + [I(237,114)] = {30,0x3FFFFD6C}, + [I(238,114)] = {X32,0xFFFFFAAC}, + [I(239,114)] = {29,0x1FFFFD2C}, + [I(240,114)] = {X32,0xFFFFFAEC}, + [I(241,114)] = {64,0}, + [I(242,114)] = {X32,0xFFFFFB2C}, + [I(243,114)] = {X32,0xFFFFFB6C}, + [I(244,114)] = {64,0}, + [I(245,114)] = {64,0}, + [I(246,114)] = {64,0}, + [I(247,114)] = {64,0}, + [I(248,114)] = {64,0}, + [I(249,114)] = {64,0}, + [I(250,114)] = {64,0}, + [I(251,114)] = {64,0}, + [I(252,114)] = {64,0}, + [I(253,114)] = {64,0}, + [I(254,114)] = {64,0}, + [I(255,114)] = {X32,0xFFFFFBAC}, + [I(0,115)] = {18,0x3FF08}, + [I(1,115)] = {28,0xFFFFB08}, + [I(2,115)] = {64,0}, + [I(3,115)] = {64,0}, + [I(4,115)] = {64,0}, + [I(5,115)] = {64,0}, + [I(6,115)] = {64,0}, + [I(7,115)] = {64,0}, + [I(8,115)] = {64,0}, + [I(9,115)] = {29,0x1FFFFD48}, + [I(10,115)] = {64,0}, + [I(11,115)] = {64,0}, + [I(12,115)] = {64,0}, + [I(13,115)] = {64,0}, + [I(14,115)] = {64,0}, + [I(15,115)] = {64,0}, + [I(16,115)] = {64,0}, + [I(17,115)] = {64,0}, + [I(18,115)] = {64,0}, + [I(19,115)] = {64,0}, + [I(20,115)] = {64,0}, + [I(21,115)] = {64,0}, + [I(22,115)] = {64,0}, + [I(23,115)] = {64,0}, + [I(24,115)] = {64,0}, + [I(25,115)] = {64,0}, + [I(26,115)] = {64,0}, + [I(27,115)] = {64,0}, + [I(28,115)] = {64,0}, + [I(29,115)] = {64,0}, + [I(30,115)] = {64,0}, + [I(31,115)] = {64,0}, + [I(32,115)] = {11,0x288}, + [I(33,115)] = {15,0x7F08}, + [I(34,115)] = {15,0x7F28}, + [I(35,115)] = {17,0x1FF48}, + [I(36,115)] = {18,0x3FF28}, + [I(37,115)] = {11,0x2A8}, + [I(38,115)] = {13,0x1F08}, + [I(39,115)] = {16,0xFF48}, + [I(40,115)] = {15,0x7F48}, + [I(41,115)] = {15,0x7F68}, + [I(42,115)] = {13,0x1F28}, + [I(43,115)] = {16,0xFF68}, + [I(44,115)] = {13,0x1F48}, + [I(45,115)] = {11,0x2C8}, + [I(46,115)] = {11,0x2E8}, + [I(47,115)] = {11,0x308}, + [I(48,115)] = {10,0x8}, + [I(49,115)] = {10,0x28}, + [I(50,115)] = {10,0x48}, + [I(51,115)] = {11,0x328}, + [I(52,115)] = {11,0x348}, + [I(53,115)] = {11,0x368}, + [I(54,115)] = {11,0x388}, + [I(55,115)] = {11,0x3A8}, + [I(56,115)] = {11,0x3C8}, + [I(57,115)] = {11,0x3E8}, + [I(58,115)] = {12,0xB88}, + [I(59,115)] = {13,0x1F68}, + [I(60,115)] = {20,0xFFF88}, + [I(61,115)] = {11,0x408}, + [I(62,115)] = {17,0x1FF68}, + [I(63,115)] = {15,0x7F88}, + [I(64,115)] = {18,0x3FF48}, + [I(65,115)] = {11,0x428}, + [I(66,115)] = {12,0xBA8}, + [I(67,115)] = {12,0xBC8}, + [I(68,115)] = {12,0xBE8}, + [I(69,115)] = {12,0xC08}, + [I(70,115)] = {12,0xC28}, + [I(71,115)] = {12,0xC48}, + [I(72,115)] = {12,0xC68}, + [I(73,115)] = {12,0xC88}, + [I(74,115)] = {12,0xCA8}, + [I(75,115)] = {12,0xCC8}, + [I(76,115)] = {12,0xCE8}, + [I(77,115)] = {12,0xD08}, + [I(78,115)] = {12,0xD28}, + [I(79,115)] = {12,0xD48}, + [I(80,115)] = {12,0xD68}, + [I(81,115)] = {12,0xD88}, + [I(82,115)] = {12,0xDA8}, + [I(83,115)] = {12,0xDC8}, + [I(84,115)] = {12,0xDE8}, + [I(85,115)] = {12,0xE08}, + [I(86,115)] = {12,0xE28}, + [I(87,115)] = {12,0xE48}, + [I(88,115)] = {13,0x1F88}, + [I(89,115)] = {12,0xE68}, + [I(90,115)] = {13,0x1FA8}, + [I(91,115)] = {18,0x3FF68}, + [I(92,115)] = {24,0xFFFE08}, + [I(93,115)] = {18,0x3FF88}, + [I(94,115)] = {19,0x7FF88}, + [I(95,115)] = {11,0x448}, + [I(96,115)] = {20,0xFFFA8}, + [I(97,115)] = {10,0x68}, + [I(98,115)] = {11,0x468}, + [I(99,115)] = {10,0x88}, + [I(100,115)] = {11,0x488}, + [I(101,115)] = {10,0xA8}, + [I(102,115)] = {11,0x4A8}, + [I(103,115)] = {11,0x4C8}, + [I(104,115)] = {11,0x4E8}, + [I(105,115)] = {10,0xC8}, + [I(106,115)] = {12,0xE88}, + [I(107,115)] = {12,0xEA8}, + [I(108,115)] = {11,0x508}, + [I(109,115)] = {11,0x528}, + [I(110,115)] = {11,0x548}, + [I(111,115)] = {10,0xE8}, + [I(112,115)] = {11,0x568}, + [I(113,115)] = {12,0xEC8}, + [I(114,115)] = {11,0x588}, + [I(115,115)] = {10,0x108}, + [I(116,115)] = {10,0x128}, + [I(117,115)] = {11,0x5A8}, + [I(118,115)] = {12,0xEE8}, + [I(119,115)] = {12,0xF08}, + [I(120,115)] = {12,0xF28}, + [I(121,115)] = {12,0xF48}, + [I(122,115)] = {12,0xF68}, + [I(123,115)] = {20,0xFFFC8}, + [I(124,115)] = {16,0xFF88}, + [I(125,115)] = {19,0x7FFA8}, + [I(126,115)] = {18,0x3FFA8}, + [I(127,115)] = {64,0}, + [I(128,115)] = {25,0x1FFFCC8}, + [I(129,115)] = {27,0x7FFFA48}, + [I(130,115)] = {25,0x1FFFCE8}, + [I(131,115)] = {25,0x1FFFD08}, + [I(132,115)] = {27,0x7FFFA68}, + [I(133,115)] = {27,0x7FFFA88}, + [I(134,115)] = {27,0x7FFFAA8}, + [I(135,115)] = {28,0xFFFFB28}, + [I(136,115)] = {27,0x7FFFAC8}, + [I(137,115)] = {28,0xFFFFB48}, + [I(138,115)] = {28,0xFFFFB68}, + [I(139,115)] = {28,0xFFFFB88}, + [I(140,115)] = {28,0xFFFFBA8}, + [I(141,115)] = {28,0xFFFFBC8}, + [I(142,115)] = {29,0x1FFFFD68}, + [I(143,115)] = {28,0xFFFFBE8}, + [I(144,115)] = {29,0x1FFFFD88}, + [I(145,115)] = {29,0x1FFFFDA8}, + [I(146,115)] = {27,0x7FFFAE8}, + [I(147,115)] = {28,0xFFFFC08}, + [I(148,115)] = {29,0x1FFFFDC8}, + [I(149,115)] = {28,0xFFFFC28}, + [I(150,115)] = {28,0xFFFFC48}, + [I(151,115)] = {28,0xFFFFC68}, + [I(152,115)] = {28,0xFFFFC88}, + [I(153,115)] = {26,0x3FFFB88}, + [I(154,115)] = {27,0x7FFFB08}, + [I(155,115)] = {28,0xFFFFCA8}, + [I(156,115)] = {27,0x7FFFB28}, + [I(157,115)] = {28,0xFFFFCC8}, + [I(158,115)] = {28,0xFFFFCE8}, + [I(159,115)] = {29,0x1FFFFDE8}, + [I(160,115)] = {27,0x7FFFB48}, + [I(161,115)] = {26,0x3FFFBA8}, + [I(162,115)] = {25,0x1FFFD28}, + [I(163,115)] = {27,0x7FFFB68}, + [I(164,115)] = {27,0x7FFFB88}, + [I(165,115)] = {28,0xFFFFD08}, + [I(166,115)] = {28,0xFFFFD28}, + [I(167,115)] = {26,0x3FFFBC8}, + [I(168,115)] = {28,0xFFFFD48}, + [I(169,115)] = {27,0x7FFFBA8}, + [I(170,115)] = {27,0x7FFFBC8}, + [I(171,115)] = {29,0x1FFFFE08}, + [I(172,115)] = {26,0x3FFFBE8}, + [I(173,115)] = {27,0x7FFFBE8}, + [I(174,115)] = {28,0xFFFFD68}, + [I(175,115)] = {28,0xFFFFD88}, + [I(176,115)] = {26,0x3FFFC08}, + [I(177,115)] = {26,0x3FFFC28}, + [I(178,115)] = {27,0x7FFFC08}, + [I(179,115)] = {26,0x3FFFC48}, + [I(180,115)] = {28,0xFFFFDA8}, + [I(181,115)] = {27,0x7FFFC28}, + [I(182,115)] = {28,0xFFFFDC8}, + [I(183,115)] = {28,0xFFFFDE8}, + [I(184,115)] = {25,0x1FFFD48}, + [I(185,115)] = {27,0x7FFFC48}, + [I(186,115)] = {27,0x7FFFC68}, + [I(187,115)] = {27,0x7FFFC88}, + [I(188,115)] = {28,0xFFFFE08}, + [I(189,115)] = {27,0x7FFFCA8}, + [I(190,115)] = {27,0x7FFFCC8}, + [I(191,115)] = {28,0xFFFFE28}, + [I(192,115)] = {31,0x7FFFFC08}, + [I(193,115)] = {31,0x7FFFFC28}, + [I(194,115)] = {25,0x1FFFD68}, + [I(195,115)] = {24,0xFFFE28}, + [I(196,115)] = {27,0x7FFFCE8}, + [I(197,115)] = {28,0xFFFFE48}, + [I(198,115)] = {27,0x7FFFD08}, + [I(199,115)] = {30,0x3FFFFD88}, + [I(200,115)] = {31,0x7FFFFC48}, + [I(201,115)] = {31,0x7FFFFC68}, + [I(202,115)] = {31,0x7FFFFC88}, + [I(203,115)] = {X32,0xFFFFFBC8}, + [I(204,115)] = {X32,0xFFFFFBE8}, + [I(205,115)] = {31,0x7FFFFCA8}, + [I(206,115)] = {29,0x1FFFFE28}, + [I(207,115)] = {30,0x3FFFFDA8}, + [I(208,115)] = {24,0xFFFE48}, + [I(209,115)] = {26,0x3FFFC68}, + [I(210,115)] = {31,0x7FFFFCC8}, + [I(211,115)] = {X32,0xFFFFFC08}, + [I(212,115)] = {X32,0xFFFFFC28}, + [I(213,115)] = {31,0x7FFFFCE8}, + [I(214,115)] = {X32,0xFFFFFC48}, + [I(215,115)] = {29,0x1FFFFE48}, + [I(216,115)] = {26,0x3FFFC88}, + [I(217,115)] = {26,0x3FFFCA8}, + [I(218,115)] = {31,0x7FFFFD08}, + [I(219,115)] = {31,0x7FFFFD28}, + [I(220,115)] = {64,0}, + [I(221,115)] = {X32,0xFFFFFC68}, + [I(222,115)] = {X32,0xFFFFFC88}, + [I(223,115)] = {X32,0xFFFFFCA8}, + [I(224,115)] = {25,0x1FFFD88}, + [I(225,115)] = {29,0x1FFFFE68}, + [I(226,115)] = {25,0x1FFFDA8}, + [I(227,115)] = {26,0x3FFFCC8}, + [I(228,115)] = {27,0x7FFFD28}, + [I(229,115)] = {26,0x3FFFCE8}, + [I(230,115)] = {26,0x3FFFD08}, + [I(231,115)] = {28,0xFFFFE68}, + [I(232,115)] = {27,0x7FFFD48}, + [I(233,115)] = {27,0x7FFFD68}, + [I(234,115)] = {30,0x3FFFFDC8}, + [I(235,115)] = {30,0x3FFFFDE8}, + [I(236,115)] = {29,0x1FFFFE88}, + [I(237,115)] = {29,0x1FFFFEA8}, + [I(238,115)] = {31,0x7FFFFD48}, + [I(239,115)] = {28,0xFFFFE88}, + [I(240,115)] = {31,0x7FFFFD68}, + [I(241,115)] = {X32,0xFFFFFCC8}, + [I(242,115)] = {31,0x7FFFFD88}, + [I(243,115)] = {31,0x7FFFFDA8}, + [I(244,115)] = {X32,0xFFFFFCE8}, + [I(245,115)] = {X32,0xFFFFFD08}, + [I(246,115)] = {X32,0xFFFFFD28}, + [I(247,115)] = {X32,0xFFFFFD48}, + [I(248,115)] = {X32,0xFFFFFD68}, + [I(249,115)] = {64,0}, + [I(250,115)] = {X32,0xFFFFFD88}, + [I(251,115)] = {X32,0xFFFFFDA8}, + [I(252,115)] = {X32,0xFFFFFDC8}, + [I(253,115)] = {X32,0xFFFFFDE8}, + [I(254,115)] = {X32,0xFFFFFE08}, + [I(255,115)] = {31,0x7FFFFDC8}, + [I(0,116)] = {18,0x3FF09}, + [I(1,116)] = {28,0xFFFFB09}, + [I(2,116)] = {64,0}, + [I(3,116)] = {64,0}, + [I(4,116)] = {64,0}, + [I(5,116)] = {64,0}, + [I(6,116)] = {64,0}, + [I(7,116)] = {64,0}, + [I(8,116)] = {64,0}, + [I(9,116)] = {29,0x1FFFFD49}, + [I(10,116)] = {64,0}, + [I(11,116)] = {64,0}, + [I(12,116)] = {64,0}, + [I(13,116)] = {64,0}, + [I(14,116)] = {64,0}, + [I(15,116)] = {64,0}, + [I(16,116)] = {64,0}, + [I(17,116)] = {64,0}, + [I(18,116)] = {64,0}, + [I(19,116)] = {64,0}, + [I(20,116)] = {64,0}, + [I(21,116)] = {64,0}, + [I(22,116)] = {64,0}, + [I(23,116)] = {64,0}, + [I(24,116)] = {64,0}, + [I(25,116)] = {64,0}, + [I(26,116)] = {64,0}, + [I(27,116)] = {64,0}, + [I(28,116)] = {64,0}, + [I(29,116)] = {64,0}, + [I(30,116)] = {64,0}, + [I(31,116)] = {64,0}, + [I(32,116)] = {11,0x289}, + [I(33,116)] = {15,0x7F09}, + [I(34,116)] = {15,0x7F29}, + [I(35,116)] = {17,0x1FF49}, + [I(36,116)] = {18,0x3FF29}, + [I(37,116)] = {11,0x2A9}, + [I(38,116)] = {13,0x1F09}, + [I(39,116)] = {16,0xFF49}, + [I(40,116)] = {15,0x7F49}, + [I(41,116)] = {15,0x7F69}, + [I(42,116)] = {13,0x1F29}, + [I(43,116)] = {16,0xFF69}, + [I(44,116)] = {13,0x1F49}, + [I(45,116)] = {11,0x2C9}, + [I(46,116)] = {11,0x2E9}, + [I(47,116)] = {11,0x309}, + [I(48,116)] = {10,0x9}, + [I(49,116)] = {10,0x29}, + [I(50,116)] = {10,0x49}, + [I(51,116)] = {11,0x329}, + [I(52,116)] = {11,0x349}, + [I(53,116)] = {11,0x369}, + [I(54,116)] = {11,0x389}, + [I(55,116)] = {11,0x3A9}, + [I(56,116)] = {11,0x3C9}, + [I(57,116)] = {11,0x3E9}, + [I(58,116)] = {12,0xB89}, + [I(59,116)] = {13,0x1F69}, + [I(60,116)] = {20,0xFFF89}, + [I(61,116)] = {11,0x409}, + [I(62,116)] = {17,0x1FF69}, + [I(63,116)] = {15,0x7F89}, + [I(64,116)] = {18,0x3FF49}, + [I(65,116)] = {11,0x429}, + [I(66,116)] = {12,0xBA9}, + [I(67,116)] = {12,0xBC9}, + [I(68,116)] = {12,0xBE9}, + [I(69,116)] = {12,0xC09}, + [I(70,116)] = {12,0xC29}, + [I(71,116)] = {12,0xC49}, + [I(72,116)] = {12,0xC69}, + [I(73,116)] = {12,0xC89}, + [I(74,116)] = {12,0xCA9}, + [I(75,116)] = {12,0xCC9}, + [I(76,116)] = {12,0xCE9}, + [I(77,116)] = {12,0xD09}, + [I(78,116)] = {12,0xD29}, + [I(79,116)] = {12,0xD49}, + [I(80,116)] = {12,0xD69}, + [I(81,116)] = {12,0xD89}, + [I(82,116)] = {12,0xDA9}, + [I(83,116)] = {12,0xDC9}, + [I(84,116)] = {12,0xDE9}, + [I(85,116)] = {12,0xE09}, + [I(86,116)] = {12,0xE29}, + [I(87,116)] = {12,0xE49}, + [I(88,116)] = {13,0x1F89}, + [I(89,116)] = {12,0xE69}, + [I(90,116)] = {13,0x1FA9}, + [I(91,116)] = {18,0x3FF69}, + [I(92,116)] = {24,0xFFFE09}, + [I(93,116)] = {18,0x3FF89}, + [I(94,116)] = {19,0x7FF89}, + [I(95,116)] = {11,0x449}, + [I(96,116)] = {20,0xFFFA9}, + [I(97,116)] = {10,0x69}, + [I(98,116)] = {11,0x469}, + [I(99,116)] = {10,0x89}, + [I(100,116)] = {11,0x489}, + [I(101,116)] = {10,0xA9}, + [I(102,116)] = {11,0x4A9}, + [I(103,116)] = {11,0x4C9}, + [I(104,116)] = {11,0x4E9}, + [I(105,116)] = {10,0xC9}, + [I(106,116)] = {12,0xE89}, + [I(107,116)] = {12,0xEA9}, + [I(108,116)] = {11,0x509}, + [I(109,116)] = {11,0x529}, + [I(110,116)] = {11,0x549}, + [I(111,116)] = {10,0xE9}, + [I(112,116)] = {11,0x569}, + [I(113,116)] = {12,0xEC9}, + [I(114,116)] = {11,0x589}, + [I(115,116)] = {10,0x109}, + [I(116,116)] = {10,0x129}, + [I(117,116)] = {11,0x5A9}, + [I(118,116)] = {12,0xEE9}, + [I(119,116)] = {12,0xF09}, + [I(120,116)] = {12,0xF29}, + [I(121,116)] = {12,0xF49}, + [I(122,116)] = {12,0xF69}, + [I(123,116)] = {20,0xFFFC9}, + [I(124,116)] = {16,0xFF89}, + [I(125,116)] = {19,0x7FFA9}, + [I(126,116)] = {18,0x3FFA9}, + [I(127,116)] = {64,0}, + [I(128,116)] = {25,0x1FFFCC9}, + [I(129,116)] = {27,0x7FFFA49}, + [I(130,116)] = {25,0x1FFFCE9}, + [I(131,116)] = {25,0x1FFFD09}, + [I(132,116)] = {27,0x7FFFA69}, + [I(133,116)] = {27,0x7FFFA89}, + [I(134,116)] = {27,0x7FFFAA9}, + [I(135,116)] = {28,0xFFFFB29}, + [I(136,116)] = {27,0x7FFFAC9}, + [I(137,116)] = {28,0xFFFFB49}, + [I(138,116)] = {28,0xFFFFB69}, + [I(139,116)] = {28,0xFFFFB89}, + [I(140,116)] = {28,0xFFFFBA9}, + [I(141,116)] = {28,0xFFFFBC9}, + [I(142,116)] = {29,0x1FFFFD69}, + [I(143,116)] = {28,0xFFFFBE9}, + [I(144,116)] = {29,0x1FFFFD89}, + [I(145,116)] = {29,0x1FFFFDA9}, + [I(146,116)] = {27,0x7FFFAE9}, + [I(147,116)] = {28,0xFFFFC09}, + [I(148,116)] = {29,0x1FFFFDC9}, + [I(149,116)] = {28,0xFFFFC29}, + [I(150,116)] = {28,0xFFFFC49}, + [I(151,116)] = {28,0xFFFFC69}, + [I(152,116)] = {28,0xFFFFC89}, + [I(153,116)] = {26,0x3FFFB89}, + [I(154,116)] = {27,0x7FFFB09}, + [I(155,116)] = {28,0xFFFFCA9}, + [I(156,116)] = {27,0x7FFFB29}, + [I(157,116)] = {28,0xFFFFCC9}, + [I(158,116)] = {28,0xFFFFCE9}, + [I(159,116)] = {29,0x1FFFFDE9}, + [I(160,116)] = {27,0x7FFFB49}, + [I(161,116)] = {26,0x3FFFBA9}, + [I(162,116)] = {25,0x1FFFD29}, + [I(163,116)] = {27,0x7FFFB69}, + [I(164,116)] = {27,0x7FFFB89}, + [I(165,116)] = {28,0xFFFFD09}, + [I(166,116)] = {28,0xFFFFD29}, + [I(167,116)] = {26,0x3FFFBC9}, + [I(168,116)] = {28,0xFFFFD49}, + [I(169,116)] = {27,0x7FFFBA9}, + [I(170,116)] = {27,0x7FFFBC9}, + [I(171,116)] = {29,0x1FFFFE09}, + [I(172,116)] = {26,0x3FFFBE9}, + [I(173,116)] = {27,0x7FFFBE9}, + [I(174,116)] = {28,0xFFFFD69}, + [I(175,116)] = {28,0xFFFFD89}, + [I(176,116)] = {26,0x3FFFC09}, + [I(177,116)] = {26,0x3FFFC29}, + [I(178,116)] = {27,0x7FFFC09}, + [I(179,116)] = {26,0x3FFFC49}, + [I(180,116)] = {28,0xFFFFDA9}, + [I(181,116)] = {27,0x7FFFC29}, + [I(182,116)] = {28,0xFFFFDC9}, + [I(183,116)] = {28,0xFFFFDE9}, + [I(184,116)] = {25,0x1FFFD49}, + [I(185,116)] = {27,0x7FFFC49}, + [I(186,116)] = {27,0x7FFFC69}, + [I(187,116)] = {27,0x7FFFC89}, + [I(188,116)] = {28,0xFFFFE09}, + [I(189,116)] = {27,0x7FFFCA9}, + [I(190,116)] = {27,0x7FFFCC9}, + [I(191,116)] = {28,0xFFFFE29}, + [I(192,116)] = {31,0x7FFFFC09}, + [I(193,116)] = {31,0x7FFFFC29}, + [I(194,116)] = {25,0x1FFFD69}, + [I(195,116)] = {24,0xFFFE29}, + [I(196,116)] = {27,0x7FFFCE9}, + [I(197,116)] = {28,0xFFFFE49}, + [I(198,116)] = {27,0x7FFFD09}, + [I(199,116)] = {30,0x3FFFFD89}, + [I(200,116)] = {31,0x7FFFFC49}, + [I(201,116)] = {31,0x7FFFFC69}, + [I(202,116)] = {31,0x7FFFFC89}, + [I(203,116)] = {X32,0xFFFFFBC9}, + [I(204,116)] = {X32,0xFFFFFBE9}, + [I(205,116)] = {31,0x7FFFFCA9}, + [I(206,116)] = {29,0x1FFFFE29}, + [I(207,116)] = {30,0x3FFFFDA9}, + [I(208,116)] = {24,0xFFFE49}, + [I(209,116)] = {26,0x3FFFC69}, + [I(210,116)] = {31,0x7FFFFCC9}, + [I(211,116)] = {X32,0xFFFFFC09}, + [I(212,116)] = {X32,0xFFFFFC29}, + [I(213,116)] = {31,0x7FFFFCE9}, + [I(214,116)] = {X32,0xFFFFFC49}, + [I(215,116)] = {29,0x1FFFFE49}, + [I(216,116)] = {26,0x3FFFC89}, + [I(217,116)] = {26,0x3FFFCA9}, + [I(218,116)] = {31,0x7FFFFD09}, + [I(219,116)] = {31,0x7FFFFD29}, + [I(220,116)] = {64,0}, + [I(221,116)] = {X32,0xFFFFFC69}, + [I(222,116)] = {X32,0xFFFFFC89}, + [I(223,116)] = {X32,0xFFFFFCA9}, + [I(224,116)] = {25,0x1FFFD89}, + [I(225,116)] = {29,0x1FFFFE69}, + [I(226,116)] = {25,0x1FFFDA9}, + [I(227,116)] = {26,0x3FFFCC9}, + [I(228,116)] = {27,0x7FFFD29}, + [I(229,116)] = {26,0x3FFFCE9}, + [I(230,116)] = {26,0x3FFFD09}, + [I(231,116)] = {28,0xFFFFE69}, + [I(232,116)] = {27,0x7FFFD49}, + [I(233,116)] = {27,0x7FFFD69}, + [I(234,116)] = {30,0x3FFFFDC9}, + [I(235,116)] = {30,0x3FFFFDE9}, + [I(236,116)] = {29,0x1FFFFE89}, + [I(237,116)] = {29,0x1FFFFEA9}, + [I(238,116)] = {31,0x7FFFFD49}, + [I(239,116)] = {28,0xFFFFE89}, + [I(240,116)] = {31,0x7FFFFD69}, + [I(241,116)] = {X32,0xFFFFFCC9}, + [I(242,116)] = {31,0x7FFFFD89}, + [I(243,116)] = {31,0x7FFFFDA9}, + [I(244,116)] = {X32,0xFFFFFCE9}, + [I(245,116)] = {X32,0xFFFFFD09}, + [I(246,116)] = {X32,0xFFFFFD29}, + [I(247,116)] = {X32,0xFFFFFD49}, + [I(248,116)] = {X32,0xFFFFFD69}, + [I(249,116)] = {64,0}, + [I(250,116)] = {X32,0xFFFFFD89}, + [I(251,116)] = {X32,0xFFFFFDA9}, + [I(252,116)] = {X32,0xFFFFFDC9}, + [I(253,116)] = {X32,0xFFFFFDE9}, + [I(254,116)] = {X32,0xFFFFFE09}, + [I(255,116)] = {31,0x7FFFFDC9}, + [I(0,117)] = {19,0x7FE2D}, + [I(1,117)] = {29,0x1FFFF62D}, + [I(2,117)] = {64,0}, + [I(3,117)] = {64,0}, + [I(4,117)] = {64,0}, + [I(5,117)] = {64,0}, + [I(6,117)] = {64,0}, + [I(7,117)] = {64,0}, + [I(8,117)] = {64,0}, + [I(9,117)] = {30,0x3FFFFAAD}, + [I(10,117)] = {64,0}, + [I(11,117)] = {64,0}, + [I(12,117)] = {64,0}, + [I(13,117)] = {64,0}, + [I(14,117)] = {64,0}, + [I(15,117)] = {64,0}, + [I(16,117)] = {64,0}, + [I(17,117)] = {64,0}, + [I(18,117)] = {64,0}, + [I(19,117)] = {64,0}, + [I(20,117)] = {64,0}, + [I(21,117)] = {64,0}, + [I(22,117)] = {64,0}, + [I(23,117)] = {64,0}, + [I(24,117)] = {64,0}, + [I(25,117)] = {64,0}, + [I(26,117)] = {64,0}, + [I(27,117)] = {64,0}, + [I(28,117)] = {64,0}, + [I(29,117)] = {64,0}, + [I(30,117)] = {64,0}, + [I(31,117)] = {64,0}, + [I(32,117)] = {12,0x52D}, + [I(33,117)] = {16,0xFE2D}, + [I(34,117)] = {16,0xFE6D}, + [I(35,117)] = {18,0x3FEAD}, + [I(36,117)] = {19,0x7FE6D}, + [I(37,117)] = {12,0x56D}, + [I(38,117)] = {14,0x3E2D}, + [I(39,117)] = {17,0x1FEAD}, + [I(40,117)] = {16,0xFEAD}, + [I(41,117)] = {16,0xFEED}, + [I(42,117)] = {14,0x3E6D}, + [I(43,117)] = {17,0x1FEED}, + [I(44,117)] = {14,0x3EAD}, + [I(45,117)] = {12,0x5AD}, + [I(46,117)] = {12,0x5ED}, + [I(47,117)] = {12,0x62D}, + [I(48,117)] = {11,0x2D}, + [I(49,117)] = {11,0x6D}, + [I(50,117)] = {11,0xAD}, + [I(51,117)] = {12,0x66D}, + [I(52,117)] = {12,0x6AD}, + [I(53,117)] = {12,0x6ED}, + [I(54,117)] = {12,0x72D}, + [I(55,117)] = {12,0x76D}, + [I(56,117)] = {12,0x7AD}, + [I(57,117)] = {12,0x7ED}, + [I(58,117)] = {13,0x172D}, + [I(59,117)] = {14,0x3EED}, + [I(60,117)] = {21,0x1FFF2D}, + [I(61,117)] = {12,0x82D}, + [I(62,117)] = {18,0x3FEED}, + [I(63,117)] = {16,0xFF2D}, + [I(64,117)] = {19,0x7FEAD}, + [I(65,117)] = {12,0x86D}, + [I(66,117)] = {13,0x176D}, + [I(67,117)] = {13,0x17AD}, + [I(68,117)] = {13,0x17ED}, + [I(69,117)] = {13,0x182D}, + [I(70,117)] = {13,0x186D}, + [I(71,117)] = {13,0x18AD}, + [I(72,117)] = {13,0x18ED}, + [I(73,117)] = {13,0x192D}, + [I(74,117)] = {13,0x196D}, + [I(75,117)] = {13,0x19AD}, + [I(76,117)] = {13,0x19ED}, + [I(77,117)] = {13,0x1A2D}, + [I(78,117)] = {13,0x1A6D}, + [I(79,117)] = {13,0x1AAD}, + [I(80,117)] = {13,0x1AED}, + [I(81,117)] = {13,0x1B2D}, + [I(82,117)] = {13,0x1B6D}, + [I(83,117)] = {13,0x1BAD}, + [I(84,117)] = {13,0x1BED}, + [I(85,117)] = {13,0x1C2D}, + [I(86,117)] = {13,0x1C6D}, + [I(87,117)] = {13,0x1CAD}, + [I(88,117)] = {14,0x3F2D}, + [I(89,117)] = {13,0x1CED}, + [I(90,117)] = {14,0x3F6D}, + [I(91,117)] = {19,0x7FEED}, + [I(92,117)] = {25,0x1FFFC2D}, + [I(93,117)] = {19,0x7FF2D}, + [I(94,117)] = {20,0xFFF2D}, + [I(95,117)] = {12,0x8AD}, + [I(96,117)] = {21,0x1FFF6D}, + [I(97,117)] = {11,0xED}, + [I(98,117)] = {12,0x8ED}, + [I(99,117)] = {11,0x12D}, + [I(100,117)] = {12,0x92D}, + [I(101,117)] = {11,0x16D}, + [I(102,117)] = {12,0x96D}, + [I(103,117)] = {12,0x9AD}, + [I(104,117)] = {12,0x9ED}, + [I(105,117)] = {11,0x1AD}, + [I(106,117)] = {13,0x1D2D}, + [I(107,117)] = {13,0x1D6D}, + [I(108,117)] = {12,0xA2D}, + [I(109,117)] = {12,0xA6D}, + [I(110,117)] = {12,0xAAD}, + [I(111,117)] = {11,0x1ED}, + [I(112,117)] = {12,0xAED}, + [I(113,117)] = {13,0x1DAD}, + [I(114,117)] = {12,0xB2D}, + [I(115,117)] = {11,0x22D}, + [I(116,117)] = {11,0x26D}, + [I(117,117)] = {12,0xB6D}, + [I(118,117)] = {13,0x1DED}, + [I(119,117)] = {13,0x1E2D}, + [I(120,117)] = {13,0x1E6D}, + [I(121,117)] = {13,0x1EAD}, + [I(122,117)] = {13,0x1EED}, + [I(123,117)] = {21,0x1FFFAD}, + [I(124,117)] = {17,0x1FF2D}, + [I(125,117)] = {20,0xFFF6D}, + [I(126,117)] = {19,0x7FF6D}, + [I(127,117)] = {64,0}, + [I(128,117)] = {26,0x3FFF9AD}, + [I(129,117)] = {28,0xFFFF4AD}, + [I(130,117)] = {26,0x3FFF9ED}, + [I(131,117)] = {26,0x3FFFA2D}, + [I(132,117)] = {28,0xFFFF4ED}, + [I(133,117)] = {28,0xFFFF52D}, + [I(134,117)] = {28,0xFFFF56D}, + [I(135,117)] = {29,0x1FFFF66D}, + [I(136,117)] = {28,0xFFFF5AD}, + [I(137,117)] = {29,0x1FFFF6AD}, + [I(138,117)] = {29,0x1FFFF6ED}, + [I(139,117)] = {29,0x1FFFF72D}, + [I(140,117)] = {29,0x1FFFF76D}, + [I(141,117)] = {29,0x1FFFF7AD}, + [I(142,117)] = {30,0x3FFFFAED}, + [I(143,117)] = {29,0x1FFFF7ED}, + [I(144,117)] = {30,0x3FFFFB2D}, + [I(145,117)] = {30,0x3FFFFB6D}, + [I(146,117)] = {28,0xFFFF5ED}, + [I(147,117)] = {29,0x1FFFF82D}, + [I(148,117)] = {30,0x3FFFFBAD}, + [I(149,117)] = {29,0x1FFFF86D}, + [I(150,117)] = {29,0x1FFFF8AD}, + [I(151,117)] = {29,0x1FFFF8ED}, + [I(152,117)] = {29,0x1FFFF92D}, + [I(153,117)] = {27,0x7FFF72D}, + [I(154,117)] = {28,0xFFFF62D}, + [I(155,117)] = {29,0x1FFFF96D}, + [I(156,117)] = {28,0xFFFF66D}, + [I(157,117)] = {29,0x1FFFF9AD}, + [I(158,117)] = {29,0x1FFFF9ED}, + [I(159,117)] = {30,0x3FFFFBED}, + [I(160,117)] = {28,0xFFFF6AD}, + [I(161,117)] = {27,0x7FFF76D}, + [I(162,117)] = {26,0x3FFFA6D}, + [I(163,117)] = {28,0xFFFF6ED}, + [I(164,117)] = {28,0xFFFF72D}, + [I(165,117)] = {29,0x1FFFFA2D}, + [I(166,117)] = {29,0x1FFFFA6D}, + [I(167,117)] = {27,0x7FFF7AD}, + [I(168,117)] = {29,0x1FFFFAAD}, + [I(169,117)] = {28,0xFFFF76D}, + [I(170,117)] = {28,0xFFFF7AD}, + [I(171,117)] = {30,0x3FFFFC2D}, + [I(172,117)] = {27,0x7FFF7ED}, + [I(173,117)] = {28,0xFFFF7ED}, + [I(174,117)] = {29,0x1FFFFAED}, + [I(175,117)] = {29,0x1FFFFB2D}, + [I(176,117)] = {27,0x7FFF82D}, + [I(177,117)] = {27,0x7FFF86D}, + [I(178,117)] = {28,0xFFFF82D}, + [I(179,117)] = {27,0x7FFF8AD}, + [I(180,117)] = {29,0x1FFFFB6D}, + [I(181,117)] = {28,0xFFFF86D}, + [I(182,117)] = {29,0x1FFFFBAD}, + [I(183,117)] = {29,0x1FFFFBED}, + [I(184,117)] = {26,0x3FFFAAD}, + [I(185,117)] = {28,0xFFFF8AD}, + [I(186,117)] = {28,0xFFFF8ED}, + [I(187,117)] = {28,0xFFFF92D}, + [I(188,117)] = {29,0x1FFFFC2D}, + [I(189,117)] = {28,0xFFFF96D}, + [I(190,117)] = {28,0xFFFF9AD}, + [I(191,117)] = {29,0x1FFFFC6D}, + [I(192,117)] = {X32,0xFFFFF82D}, + [I(193,117)] = {X32,0xFFFFF86D}, + [I(194,117)] = {26,0x3FFFAED}, + [I(195,117)] = {25,0x1FFFC6D}, + [I(196,117)] = {28,0xFFFF9ED}, + [I(197,117)] = {29,0x1FFFFCAD}, + [I(198,117)] = {28,0xFFFFA2D}, + [I(199,117)] = {31,0x7FFFFB2D}, + [I(200,117)] = {X32,0xFFFFF8AD}, + [I(201,117)] = {X32,0xFFFFF8ED}, + [I(202,117)] = {X32,0xFFFFF92D}, + [I(203,117)] = {64,0}, + [I(204,117)] = {64,0}, + [I(205,117)] = {X32,0xFFFFF96D}, + [I(206,117)] = {30,0x3FFFFC6D}, + [I(207,117)] = {31,0x7FFFFB6D}, + [I(208,117)] = {25,0x1FFFCAD}, + [I(209,117)] = {27,0x7FFF8ED}, + [I(210,117)] = {X32,0xFFFFF9AD}, + [I(211,117)] = {64,0}, + [I(212,117)] = {64,0}, + [I(213,117)] = {X32,0xFFFFF9ED}, + [I(214,117)] = {64,0}, + [I(215,117)] = {30,0x3FFFFCAD}, + [I(216,117)] = {27,0x7FFF92D}, + [I(217,117)] = {27,0x7FFF96D}, + [I(218,117)] = {X32,0xFFFFFA2D}, + [I(219,117)] = {X32,0xFFFFFA6D}, + [I(220,117)] = {64,0}, + [I(221,117)] = {64,0}, + [I(222,117)] = {64,0}, + [I(223,117)] = {64,0}, + [I(224,117)] = {26,0x3FFFB2D}, + [I(225,117)] = {30,0x3FFFFCED}, + [I(226,117)] = {26,0x3FFFB6D}, + [I(227,117)] = {27,0x7FFF9AD}, + [I(228,117)] = {28,0xFFFFA6D}, + [I(229,117)] = {27,0x7FFF9ED}, + [I(230,117)] = {27,0x7FFFA2D}, + [I(231,117)] = {29,0x1FFFFCED}, + [I(232,117)] = {28,0xFFFFAAD}, + [I(233,117)] = {28,0xFFFFAED}, + [I(234,117)] = {31,0x7FFFFBAD}, + [I(235,117)] = {31,0x7FFFFBED}, + [I(236,117)] = {30,0x3FFFFD2D}, + [I(237,117)] = {30,0x3FFFFD6D}, + [I(238,117)] = {X32,0xFFFFFAAD}, + [I(239,117)] = {29,0x1FFFFD2D}, + [I(240,117)] = {X32,0xFFFFFAED}, + [I(241,117)] = {64,0}, + [I(242,117)] = {X32,0xFFFFFB2D}, + [I(243,117)] = {X32,0xFFFFFB6D}, + [I(244,117)] = {64,0}, + [I(245,117)] = {64,0}, + [I(246,117)] = {64,0}, + [I(247,117)] = {64,0}, + [I(248,117)] = {64,0}, + [I(249,117)] = {64,0}, + [I(250,117)] = {64,0}, + [I(251,117)] = {64,0}, + [I(252,117)] = {64,0}, + [I(253,117)] = {64,0}, + [I(254,117)] = {64,0}, + [I(255,117)] = {X32,0xFFFFFBAD}, + [I(0,118)] = {20,0xFFC77}, + [I(1,118)] = {30,0x3FFFEC77}, + [I(2,118)] = {64,0}, + [I(3,118)] = {64,0}, + [I(4,118)] = {64,0}, + [I(5,118)] = {64,0}, + [I(6,118)] = {64,0}, + [I(7,118)] = {64,0}, + [I(8,118)] = {64,0}, + [I(9,118)] = {31,0x7FFFF577}, + [I(10,118)] = {64,0}, + [I(11,118)] = {64,0}, + [I(12,118)] = {64,0}, + [I(13,118)] = {64,0}, + [I(14,118)] = {64,0}, + [I(15,118)] = {64,0}, + [I(16,118)] = {64,0}, + [I(17,118)] = {64,0}, + [I(18,118)] = {64,0}, + [I(19,118)] = {64,0}, + [I(20,118)] = {64,0}, + [I(21,118)] = {64,0}, + [I(22,118)] = {64,0}, + [I(23,118)] = {64,0}, + [I(24,118)] = {64,0}, + [I(25,118)] = {64,0}, + [I(26,118)] = {64,0}, + [I(27,118)] = {64,0}, + [I(28,118)] = {64,0}, + [I(29,118)] = {64,0}, + [I(30,118)] = {64,0}, + [I(31,118)] = {64,0}, + [I(32,118)] = {13,0xA77}, + [I(33,118)] = {17,0x1FC77}, + [I(34,118)] = {17,0x1FCF7}, + [I(35,118)] = {19,0x7FD77}, + [I(36,118)] = {20,0xFFCF7}, + [I(37,118)] = {13,0xAF7}, + [I(38,118)] = {15,0x7C77}, + [I(39,118)] = {18,0x3FD77}, + [I(40,118)] = {17,0x1FD77}, + [I(41,118)] = {17,0x1FDF7}, + [I(42,118)] = {15,0x7CF7}, + [I(43,118)] = {18,0x3FDF7}, + [I(44,118)] = {15,0x7D77}, + [I(45,118)] = {13,0xB77}, + [I(46,118)] = {13,0xBF7}, + [I(47,118)] = {13,0xC77}, + [I(48,118)] = {12,0x77}, + [I(49,118)] = {12,0xF7}, + [I(50,118)] = {12,0x177}, + [I(51,118)] = {13,0xCF7}, + [I(52,118)] = {13,0xD77}, + [I(53,118)] = {13,0xDF7}, + [I(54,118)] = {13,0xE77}, + [I(55,118)] = {13,0xEF7}, + [I(56,118)] = {13,0xF77}, + [I(57,118)] = {13,0xFF7}, + [I(58,118)] = {14,0x2E77}, + [I(59,118)] = {15,0x7DF7}, + [I(60,118)] = {22,0x3FFE77}, + [I(61,118)] = {13,0x1077}, + [I(62,118)] = {19,0x7FDF7}, + [I(63,118)] = {17,0x1FE77}, + [I(64,118)] = {20,0xFFD77}, + [I(65,118)] = {13,0x10F7}, + [I(66,118)] = {14,0x2EF7}, + [I(67,118)] = {14,0x2F77}, + [I(68,118)] = {14,0x2FF7}, + [I(69,118)] = {14,0x3077}, + [I(70,118)] = {14,0x30F7}, + [I(71,118)] = {14,0x3177}, + [I(72,118)] = {14,0x31F7}, + [I(73,118)] = {14,0x3277}, + [I(74,118)] = {14,0x32F7}, + [I(75,118)] = {14,0x3377}, + [I(76,118)] = {14,0x33F7}, + [I(77,118)] = {14,0x3477}, + [I(78,118)] = {14,0x34F7}, + [I(79,118)] = {14,0x3577}, + [I(80,118)] = {14,0x35F7}, + [I(81,118)] = {14,0x3677}, + [I(82,118)] = {14,0x36F7}, + [I(83,118)] = {14,0x3777}, + [I(84,118)] = {14,0x37F7}, + [I(85,118)] = {14,0x3877}, + [I(86,118)] = {14,0x38F7}, + [I(87,118)] = {14,0x3977}, + [I(88,118)] = {15,0x7E77}, + [I(89,118)] = {14,0x39F7}, + [I(90,118)] = {15,0x7EF7}, + [I(91,118)] = {20,0xFFDF7}, + [I(92,118)] = {26,0x3FFF877}, + [I(93,118)] = {20,0xFFE77}, + [I(94,118)] = {21,0x1FFE77}, + [I(95,118)] = {13,0x1177}, + [I(96,118)] = {22,0x3FFEF7}, + [I(97,118)] = {12,0x1F7}, + [I(98,118)] = {13,0x11F7}, + [I(99,118)] = {12,0x277}, + [I(100,118)] = {13,0x1277}, + [I(101,118)] = {12,0x2F7}, + [I(102,118)] = {13,0x12F7}, + [I(103,118)] = {13,0x1377}, + [I(104,118)] = {13,0x13F7}, + [I(105,118)] = {12,0x377}, + [I(106,118)] = {14,0x3A77}, + [I(107,118)] = {14,0x3AF7}, + [I(108,118)] = {13,0x1477}, + [I(109,118)] = {13,0x14F7}, + [I(110,118)] = {13,0x1577}, + [I(111,118)] = {12,0x3F7}, + [I(112,118)] = {13,0x15F7}, + [I(113,118)] = {14,0x3B77}, + [I(114,118)] = {13,0x1677}, + [I(115,118)] = {12,0x477}, + [I(116,118)] = {12,0x4F7}, + [I(117,118)] = {13,0x16F7}, + [I(118,118)] = {14,0x3BF7}, + [I(119,118)] = {14,0x3C77}, + [I(120,118)] = {14,0x3CF7}, + [I(121,118)] = {14,0x3D77}, + [I(122,118)] = {14,0x3DF7}, + [I(123,118)] = {22,0x3FFF77}, + [I(124,118)] = {18,0x3FE77}, + [I(125,118)] = {21,0x1FFEF7}, + [I(126,118)] = {20,0xFFEF7}, + [I(127,118)] = {64,0}, + [I(128,118)] = {27,0x7FFF377}, + [I(129,118)] = {29,0x1FFFE977}, + [I(130,118)] = {27,0x7FFF3F7}, + [I(131,118)] = {27,0x7FFF477}, + [I(132,118)] = {29,0x1FFFE9F7}, + [I(133,118)] = {29,0x1FFFEA77}, + [I(134,118)] = {29,0x1FFFEAF7}, + [I(135,118)] = {30,0x3FFFECF7}, + [I(136,118)] = {29,0x1FFFEB77}, + [I(137,118)] = {30,0x3FFFED77}, + [I(138,118)] = {30,0x3FFFEDF7}, + [I(139,118)] = {30,0x3FFFEE77}, + [I(140,118)] = {30,0x3FFFEEF7}, + [I(141,118)] = {30,0x3FFFEF77}, + [I(142,118)] = {31,0x7FFFF5F7}, + [I(143,118)] = {30,0x3FFFEFF7}, + [I(144,118)] = {31,0x7FFFF677}, + [I(145,118)] = {31,0x7FFFF6F7}, + [I(146,118)] = {29,0x1FFFEBF7}, + [I(147,118)] = {30,0x3FFFF077}, + [I(148,118)] = {31,0x7FFFF777}, + [I(149,118)] = {30,0x3FFFF0F7}, + [I(150,118)] = {30,0x3FFFF177}, + [I(151,118)] = {30,0x3FFFF1F7}, + [I(152,118)] = {30,0x3FFFF277}, + [I(153,118)] = {28,0xFFFEE77}, + [I(154,118)] = {29,0x1FFFEC77}, + [I(155,118)] = {30,0x3FFFF2F7}, + [I(156,118)] = {29,0x1FFFECF7}, + [I(157,118)] = {30,0x3FFFF377}, + [I(158,118)] = {30,0x3FFFF3F7}, + [I(159,118)] = {31,0x7FFFF7F7}, + [I(160,118)] = {29,0x1FFFED77}, + [I(161,118)] = {28,0xFFFEEF7}, + [I(162,118)] = {27,0x7FFF4F7}, + [I(163,118)] = {29,0x1FFFEDF7}, + [I(164,118)] = {29,0x1FFFEE77}, + [I(165,118)] = {30,0x3FFFF477}, + [I(166,118)] = {30,0x3FFFF4F7}, + [I(167,118)] = {28,0xFFFEF77}, + [I(168,118)] = {30,0x3FFFF577}, + [I(169,118)] = {29,0x1FFFEEF7}, + [I(170,118)] = {29,0x1FFFEF77}, + [I(171,118)] = {31,0x7FFFF877}, + [I(172,118)] = {28,0xFFFEFF7}, + [I(173,118)] = {29,0x1FFFEFF7}, + [I(174,118)] = {30,0x3FFFF5F7}, + [I(175,118)] = {30,0x3FFFF677}, + [I(176,118)] = {28,0xFFFF077}, + [I(177,118)] = {28,0xFFFF0F7}, + [I(178,118)] = {29,0x1FFFF077}, + [I(179,118)] = {28,0xFFFF177}, + [I(180,118)] = {30,0x3FFFF6F7}, + [I(181,118)] = {29,0x1FFFF0F7}, + [I(182,118)] = {30,0x3FFFF777}, + [I(183,118)] = {30,0x3FFFF7F7}, + [I(184,118)] = {27,0x7FFF577}, + [I(185,118)] = {29,0x1FFFF177}, + [I(186,118)] = {29,0x1FFFF1F7}, + [I(187,118)] = {29,0x1FFFF277}, + [I(188,118)] = {30,0x3FFFF877}, + [I(189,118)] = {29,0x1FFFF2F7}, + [I(190,118)] = {29,0x1FFFF377}, + [I(191,118)] = {30,0x3FFFF8F7}, + [I(192,118)] = {64,0}, + [I(193,118)] = {64,0}, + [I(194,118)] = {27,0x7FFF5F7}, + [I(195,118)] = {26,0x3FFF8F7}, + [I(196,118)] = {29,0x1FFFF3F7}, + [I(197,118)] = {30,0x3FFFF977}, + [I(198,118)] = {29,0x1FFFF477}, + [I(199,118)] = {X32,0xFFFFF677}, + [I(200,118)] = {64,0}, + [I(201,118)] = {64,0}, + [I(202,118)] = {64,0}, + [I(203,118)] = {64,0}, + [I(204,118)] = {64,0}, + [I(205,118)] = {64,0}, + [I(206,118)] = {31,0x7FFFF8F7}, + [I(207,118)] = {X32,0xFFFFF6F7}, + [I(208,118)] = {26,0x3FFF977}, + [I(209,118)] = {28,0xFFFF1F7}, + [I(210,118)] = {64,0}, + [I(211,118)] = {64,0}, + [I(212,118)] = {64,0}, + [I(213,118)] = {64,0}, + [I(214,118)] = {64,0}, + [I(215,118)] = {31,0x7FFFF977}, + [I(216,118)] = {28,0xFFFF277}, + [I(217,118)] = {28,0xFFFF2F7}, + [I(218,118)] = {64,0}, + [I(219,118)] = {64,0}, + [I(220,118)] = {64,0}, + [I(221,118)] = {64,0}, + [I(222,118)] = {64,0}, + [I(223,118)] = {64,0}, + [I(224,118)] = {27,0x7FFF677}, + [I(225,118)] = {31,0x7FFFF9F7}, + [I(226,118)] = {27,0x7FFF6F7}, + [I(227,118)] = {28,0xFFFF377}, + [I(228,118)] = {29,0x1FFFF4F7}, + [I(229,118)] = {28,0xFFFF3F7}, + [I(230,118)] = {28,0xFFFF477}, + [I(231,118)] = {30,0x3FFFF9F7}, + [I(232,118)] = {29,0x1FFFF577}, + [I(233,118)] = {29,0x1FFFF5F7}, + [I(234,118)] = {X32,0xFFFFF777}, + [I(235,118)] = {X32,0xFFFFF7F7}, + [I(236,118)] = {31,0x7FFFFA77}, + [I(237,118)] = {31,0x7FFFFAF7}, + [I(238,118)] = {64,0}, + [I(239,118)] = {30,0x3FFFFA77}, + [I(240,118)] = {64,0}, + [I(241,118)] = {64,0}, + [I(242,118)] = {64,0}, + [I(243,118)] = {64,0}, + [I(244,118)] = {64,0}, + [I(245,118)] = {64,0}, + [I(246,118)] = {64,0}, + [I(247,118)] = {64,0}, + [I(248,118)] = {64,0}, + [I(249,118)] = {64,0}, + [I(250,118)] = {64,0}, + [I(251,118)] = {64,0}, + [I(252,118)] = {64,0}, + [I(253,118)] = {64,0}, + [I(254,118)] = {64,0}, + [I(255,118)] = {64,0}, + [I(0,119)] = {20,0xFFC78}, + [I(1,119)] = {30,0x3FFFEC78}, + [I(2,119)] = {64,0}, + [I(3,119)] = {64,0}, + [I(4,119)] = {64,0}, + [I(5,119)] = {64,0}, + [I(6,119)] = {64,0}, + [I(7,119)] = {64,0}, + [I(8,119)] = {64,0}, + [I(9,119)] = {31,0x7FFFF578}, + [I(10,119)] = {64,0}, + [I(11,119)] = {64,0}, + [I(12,119)] = {64,0}, + [I(13,119)] = {64,0}, + [I(14,119)] = {64,0}, + [I(15,119)] = {64,0}, + [I(16,119)] = {64,0}, + [I(17,119)] = {64,0}, + [I(18,119)] = {64,0}, + [I(19,119)] = {64,0}, + [I(20,119)] = {64,0}, + [I(21,119)] = {64,0}, + [I(22,119)] = {64,0}, + [I(23,119)] = {64,0}, + [I(24,119)] = {64,0}, + [I(25,119)] = {64,0}, + [I(26,119)] = {64,0}, + [I(27,119)] = {64,0}, + [I(28,119)] = {64,0}, + [I(29,119)] = {64,0}, + [I(30,119)] = {64,0}, + [I(31,119)] = {64,0}, + [I(32,119)] = {13,0xA78}, + [I(33,119)] = {17,0x1FC78}, + [I(34,119)] = {17,0x1FCF8}, + [I(35,119)] = {19,0x7FD78}, + [I(36,119)] = {20,0xFFCF8}, + [I(37,119)] = {13,0xAF8}, + [I(38,119)] = {15,0x7C78}, + [I(39,119)] = {18,0x3FD78}, + [I(40,119)] = {17,0x1FD78}, + [I(41,119)] = {17,0x1FDF8}, + [I(42,119)] = {15,0x7CF8}, + [I(43,119)] = {18,0x3FDF8}, + [I(44,119)] = {15,0x7D78}, + [I(45,119)] = {13,0xB78}, + [I(46,119)] = {13,0xBF8}, + [I(47,119)] = {13,0xC78}, + [I(48,119)] = {12,0x78}, + [I(49,119)] = {12,0xF8}, + [I(50,119)] = {12,0x178}, + [I(51,119)] = {13,0xCF8}, + [I(52,119)] = {13,0xD78}, + [I(53,119)] = {13,0xDF8}, + [I(54,119)] = {13,0xE78}, + [I(55,119)] = {13,0xEF8}, + [I(56,119)] = {13,0xF78}, + [I(57,119)] = {13,0xFF8}, + [I(58,119)] = {14,0x2E78}, + [I(59,119)] = {15,0x7DF8}, + [I(60,119)] = {22,0x3FFE78}, + [I(61,119)] = {13,0x1078}, + [I(62,119)] = {19,0x7FDF8}, + [I(63,119)] = {17,0x1FE78}, + [I(64,119)] = {20,0xFFD78}, + [I(65,119)] = {13,0x10F8}, + [I(66,119)] = {14,0x2EF8}, + [I(67,119)] = {14,0x2F78}, + [I(68,119)] = {14,0x2FF8}, + [I(69,119)] = {14,0x3078}, + [I(70,119)] = {14,0x30F8}, + [I(71,119)] = {14,0x3178}, + [I(72,119)] = {14,0x31F8}, + [I(73,119)] = {14,0x3278}, + [I(74,119)] = {14,0x32F8}, + [I(75,119)] = {14,0x3378}, + [I(76,119)] = {14,0x33F8}, + [I(77,119)] = {14,0x3478}, + [I(78,119)] = {14,0x34F8}, + [I(79,119)] = {14,0x3578}, + [I(80,119)] = {14,0x35F8}, + [I(81,119)] = {14,0x3678}, + [I(82,119)] = {14,0x36F8}, + [I(83,119)] = {14,0x3778}, + [I(84,119)] = {14,0x37F8}, + [I(85,119)] = {14,0x3878}, + [I(86,119)] = {14,0x38F8}, + [I(87,119)] = {14,0x3978}, + [I(88,119)] = {15,0x7E78}, + [I(89,119)] = {14,0x39F8}, + [I(90,119)] = {15,0x7EF8}, + [I(91,119)] = {20,0xFFDF8}, + [I(92,119)] = {26,0x3FFF878}, + [I(93,119)] = {20,0xFFE78}, + [I(94,119)] = {21,0x1FFE78}, + [I(95,119)] = {13,0x1178}, + [I(96,119)] = {22,0x3FFEF8}, + [I(97,119)] = {12,0x1F8}, + [I(98,119)] = {13,0x11F8}, + [I(99,119)] = {12,0x278}, + [I(100,119)] = {13,0x1278}, + [I(101,119)] = {12,0x2F8}, + [I(102,119)] = {13,0x12F8}, + [I(103,119)] = {13,0x1378}, + [I(104,119)] = {13,0x13F8}, + [I(105,119)] = {12,0x378}, + [I(106,119)] = {14,0x3A78}, + [I(107,119)] = {14,0x3AF8}, + [I(108,119)] = {13,0x1478}, + [I(109,119)] = {13,0x14F8}, + [I(110,119)] = {13,0x1578}, + [I(111,119)] = {12,0x3F8}, + [I(112,119)] = {13,0x15F8}, + [I(113,119)] = {14,0x3B78}, + [I(114,119)] = {13,0x1678}, + [I(115,119)] = {12,0x478}, + [I(116,119)] = {12,0x4F8}, + [I(117,119)] = {13,0x16F8}, + [I(118,119)] = {14,0x3BF8}, + [I(119,119)] = {14,0x3C78}, + [I(120,119)] = {14,0x3CF8}, + [I(121,119)] = {14,0x3D78}, + [I(122,119)] = {14,0x3DF8}, + [I(123,119)] = {22,0x3FFF78}, + [I(124,119)] = {18,0x3FE78}, + [I(125,119)] = {21,0x1FFEF8}, + [I(126,119)] = {20,0xFFEF8}, + [I(127,119)] = {64,0}, + [I(128,119)] = {27,0x7FFF378}, + [I(129,119)] = {29,0x1FFFE978}, + [I(130,119)] = {27,0x7FFF3F8}, + [I(131,119)] = {27,0x7FFF478}, + [I(132,119)] = {29,0x1FFFE9F8}, + [I(133,119)] = {29,0x1FFFEA78}, + [I(134,119)] = {29,0x1FFFEAF8}, + [I(135,119)] = {30,0x3FFFECF8}, + [I(136,119)] = {29,0x1FFFEB78}, + [I(137,119)] = {30,0x3FFFED78}, + [I(138,119)] = {30,0x3FFFEDF8}, + [I(139,119)] = {30,0x3FFFEE78}, + [I(140,119)] = {30,0x3FFFEEF8}, + [I(141,119)] = {30,0x3FFFEF78}, + [I(142,119)] = {31,0x7FFFF5F8}, + [I(143,119)] = {30,0x3FFFEFF8}, + [I(144,119)] = {31,0x7FFFF678}, + [I(145,119)] = {31,0x7FFFF6F8}, + [I(146,119)] = {29,0x1FFFEBF8}, + [I(147,119)] = {30,0x3FFFF078}, + [I(148,119)] = {31,0x7FFFF778}, + [I(149,119)] = {30,0x3FFFF0F8}, + [I(150,119)] = {30,0x3FFFF178}, + [I(151,119)] = {30,0x3FFFF1F8}, + [I(152,119)] = {30,0x3FFFF278}, + [I(153,119)] = {28,0xFFFEE78}, + [I(154,119)] = {29,0x1FFFEC78}, + [I(155,119)] = {30,0x3FFFF2F8}, + [I(156,119)] = {29,0x1FFFECF8}, + [I(157,119)] = {30,0x3FFFF378}, + [I(158,119)] = {30,0x3FFFF3F8}, + [I(159,119)] = {31,0x7FFFF7F8}, + [I(160,119)] = {29,0x1FFFED78}, + [I(161,119)] = {28,0xFFFEEF8}, + [I(162,119)] = {27,0x7FFF4F8}, + [I(163,119)] = {29,0x1FFFEDF8}, + [I(164,119)] = {29,0x1FFFEE78}, + [I(165,119)] = {30,0x3FFFF478}, + [I(166,119)] = {30,0x3FFFF4F8}, + [I(167,119)] = {28,0xFFFEF78}, + [I(168,119)] = {30,0x3FFFF578}, + [I(169,119)] = {29,0x1FFFEEF8}, + [I(170,119)] = {29,0x1FFFEF78}, + [I(171,119)] = {31,0x7FFFF878}, + [I(172,119)] = {28,0xFFFEFF8}, + [I(173,119)] = {29,0x1FFFEFF8}, + [I(174,119)] = {30,0x3FFFF5F8}, + [I(175,119)] = {30,0x3FFFF678}, + [I(176,119)] = {28,0xFFFF078}, + [I(177,119)] = {28,0xFFFF0F8}, + [I(178,119)] = {29,0x1FFFF078}, + [I(179,119)] = {28,0xFFFF178}, + [I(180,119)] = {30,0x3FFFF6F8}, + [I(181,119)] = {29,0x1FFFF0F8}, + [I(182,119)] = {30,0x3FFFF778}, + [I(183,119)] = {30,0x3FFFF7F8}, + [I(184,119)] = {27,0x7FFF578}, + [I(185,119)] = {29,0x1FFFF178}, + [I(186,119)] = {29,0x1FFFF1F8}, + [I(187,119)] = {29,0x1FFFF278}, + [I(188,119)] = {30,0x3FFFF878}, + [I(189,119)] = {29,0x1FFFF2F8}, + [I(190,119)] = {29,0x1FFFF378}, + [I(191,119)] = {30,0x3FFFF8F8}, + [I(192,119)] = {64,0}, + [I(193,119)] = {64,0}, + [I(194,119)] = {27,0x7FFF5F8}, + [I(195,119)] = {26,0x3FFF8F8}, + [I(196,119)] = {29,0x1FFFF3F8}, + [I(197,119)] = {30,0x3FFFF978}, + [I(198,119)] = {29,0x1FFFF478}, + [I(199,119)] = {X32,0xFFFFF678}, + [I(200,119)] = {64,0}, + [I(201,119)] = {64,0}, + [I(202,119)] = {64,0}, + [I(203,119)] = {64,0}, + [I(204,119)] = {64,0}, + [I(205,119)] = {64,0}, + [I(206,119)] = {31,0x7FFFF8F8}, + [I(207,119)] = {X32,0xFFFFF6F8}, + [I(208,119)] = {26,0x3FFF978}, + [I(209,119)] = {28,0xFFFF1F8}, + [I(210,119)] = {64,0}, + [I(211,119)] = {64,0}, + [I(212,119)] = {64,0}, + [I(213,119)] = {64,0}, + [I(214,119)] = {64,0}, + [I(215,119)] = {31,0x7FFFF978}, + [I(216,119)] = {28,0xFFFF278}, + [I(217,119)] = {28,0xFFFF2F8}, + [I(218,119)] = {64,0}, + [I(219,119)] = {64,0}, + [I(220,119)] = {64,0}, + [I(221,119)] = {64,0}, + [I(222,119)] = {64,0}, + [I(223,119)] = {64,0}, + [I(224,119)] = {27,0x7FFF678}, + [I(225,119)] = {31,0x7FFFF9F8}, + [I(226,119)] = {27,0x7FFF6F8}, + [I(227,119)] = {28,0xFFFF378}, + [I(228,119)] = {29,0x1FFFF4F8}, + [I(229,119)] = {28,0xFFFF3F8}, + [I(230,119)] = {28,0xFFFF478}, + [I(231,119)] = {30,0x3FFFF9F8}, + [I(232,119)] = {29,0x1FFFF578}, + [I(233,119)] = {29,0x1FFFF5F8}, + [I(234,119)] = {X32,0xFFFFF778}, + [I(235,119)] = {X32,0xFFFFF7F8}, + [I(236,119)] = {31,0x7FFFFA78}, + [I(237,119)] = {31,0x7FFFFAF8}, + [I(238,119)] = {64,0}, + [I(239,119)] = {30,0x3FFFFA78}, + [I(240,119)] = {64,0}, + [I(241,119)] = {64,0}, + [I(242,119)] = {64,0}, + [I(243,119)] = {64,0}, + [I(244,119)] = {64,0}, + [I(245,119)] = {64,0}, + [I(246,119)] = {64,0}, + [I(247,119)] = {64,0}, + [I(248,119)] = {64,0}, + [I(249,119)] = {64,0}, + [I(250,119)] = {64,0}, + [I(251,119)] = {64,0}, + [I(252,119)] = {64,0}, + [I(253,119)] = {64,0}, + [I(254,119)] = {64,0}, + [I(255,119)] = {64,0}, + [I(0,120)] = {20,0xFFC79}, + [I(1,120)] = {30,0x3FFFEC79}, + [I(2,120)] = {64,0}, + [I(3,120)] = {64,0}, + [I(4,120)] = {64,0}, + [I(5,120)] = {64,0}, + [I(6,120)] = {64,0}, + [I(7,120)] = {64,0}, + [I(8,120)] = {64,0}, + [I(9,120)] = {31,0x7FFFF579}, + [I(10,120)] = {64,0}, + [I(11,120)] = {64,0}, + [I(12,120)] = {64,0}, + [I(13,120)] = {64,0}, + [I(14,120)] = {64,0}, + [I(15,120)] = {64,0}, + [I(16,120)] = {64,0}, + [I(17,120)] = {64,0}, + [I(18,120)] = {64,0}, + [I(19,120)] = {64,0}, + [I(20,120)] = {64,0}, + [I(21,120)] = {64,0}, + [I(22,120)] = {64,0}, + [I(23,120)] = {64,0}, + [I(24,120)] = {64,0}, + [I(25,120)] = {64,0}, + [I(26,120)] = {64,0}, + [I(27,120)] = {64,0}, + [I(28,120)] = {64,0}, + [I(29,120)] = {64,0}, + [I(30,120)] = {64,0}, + [I(31,120)] = {64,0}, + [I(32,120)] = {13,0xA79}, + [I(33,120)] = {17,0x1FC79}, + [I(34,120)] = {17,0x1FCF9}, + [I(35,120)] = {19,0x7FD79}, + [I(36,120)] = {20,0xFFCF9}, + [I(37,120)] = {13,0xAF9}, + [I(38,120)] = {15,0x7C79}, + [I(39,120)] = {18,0x3FD79}, + [I(40,120)] = {17,0x1FD79}, + [I(41,120)] = {17,0x1FDF9}, + [I(42,120)] = {15,0x7CF9}, + [I(43,120)] = {18,0x3FDF9}, + [I(44,120)] = {15,0x7D79}, + [I(45,120)] = {13,0xB79}, + [I(46,120)] = {13,0xBF9}, + [I(47,120)] = {13,0xC79}, + [I(48,120)] = {12,0x79}, + [I(49,120)] = {12,0xF9}, + [I(50,120)] = {12,0x179}, + [I(51,120)] = {13,0xCF9}, + [I(52,120)] = {13,0xD79}, + [I(53,120)] = {13,0xDF9}, + [I(54,120)] = {13,0xE79}, + [I(55,120)] = {13,0xEF9}, + [I(56,120)] = {13,0xF79}, + [I(57,120)] = {13,0xFF9}, + [I(58,120)] = {14,0x2E79}, + [I(59,120)] = {15,0x7DF9}, + [I(60,120)] = {22,0x3FFE79}, + [I(61,120)] = {13,0x1079}, + [I(62,120)] = {19,0x7FDF9}, + [I(63,120)] = {17,0x1FE79}, + [I(64,120)] = {20,0xFFD79}, + [I(65,120)] = {13,0x10F9}, + [I(66,120)] = {14,0x2EF9}, + [I(67,120)] = {14,0x2F79}, + [I(68,120)] = {14,0x2FF9}, + [I(69,120)] = {14,0x3079}, + [I(70,120)] = {14,0x30F9}, + [I(71,120)] = {14,0x3179}, + [I(72,120)] = {14,0x31F9}, + [I(73,120)] = {14,0x3279}, + [I(74,120)] = {14,0x32F9}, + [I(75,120)] = {14,0x3379}, + [I(76,120)] = {14,0x33F9}, + [I(77,120)] = {14,0x3479}, + [I(78,120)] = {14,0x34F9}, + [I(79,120)] = {14,0x3579}, + [I(80,120)] = {14,0x35F9}, + [I(81,120)] = {14,0x3679}, + [I(82,120)] = {14,0x36F9}, + [I(83,120)] = {14,0x3779}, + [I(84,120)] = {14,0x37F9}, + [I(85,120)] = {14,0x3879}, + [I(86,120)] = {14,0x38F9}, + [I(87,120)] = {14,0x3979}, + [I(88,120)] = {15,0x7E79}, + [I(89,120)] = {14,0x39F9}, + [I(90,120)] = {15,0x7EF9}, + [I(91,120)] = {20,0xFFDF9}, + [I(92,120)] = {26,0x3FFF879}, + [I(93,120)] = {20,0xFFE79}, + [I(94,120)] = {21,0x1FFE79}, + [I(95,120)] = {13,0x1179}, + [I(96,120)] = {22,0x3FFEF9}, + [I(97,120)] = {12,0x1F9}, + [I(98,120)] = {13,0x11F9}, + [I(99,120)] = {12,0x279}, + [I(100,120)] = {13,0x1279}, + [I(101,120)] = {12,0x2F9}, + [I(102,120)] = {13,0x12F9}, + [I(103,120)] = {13,0x1379}, + [I(104,120)] = {13,0x13F9}, + [I(105,120)] = {12,0x379}, + [I(106,120)] = {14,0x3A79}, + [I(107,120)] = {14,0x3AF9}, + [I(108,120)] = {13,0x1479}, + [I(109,120)] = {13,0x14F9}, + [I(110,120)] = {13,0x1579}, + [I(111,120)] = {12,0x3F9}, + [I(112,120)] = {13,0x15F9}, + [I(113,120)] = {14,0x3B79}, + [I(114,120)] = {13,0x1679}, + [I(115,120)] = {12,0x479}, + [I(116,120)] = {12,0x4F9}, + [I(117,120)] = {13,0x16F9}, + [I(118,120)] = {14,0x3BF9}, + [I(119,120)] = {14,0x3C79}, + [I(120,120)] = {14,0x3CF9}, + [I(121,120)] = {14,0x3D79}, + [I(122,120)] = {14,0x3DF9}, + [I(123,120)] = {22,0x3FFF79}, + [I(124,120)] = {18,0x3FE79}, + [I(125,120)] = {21,0x1FFEF9}, + [I(126,120)] = {20,0xFFEF9}, + [I(127,120)] = {64,0}, + [I(128,120)] = {27,0x7FFF379}, + [I(129,120)] = {29,0x1FFFE979}, + [I(130,120)] = {27,0x7FFF3F9}, + [I(131,120)] = {27,0x7FFF479}, + [I(132,120)] = {29,0x1FFFE9F9}, + [I(133,120)] = {29,0x1FFFEA79}, + [I(134,120)] = {29,0x1FFFEAF9}, + [I(135,120)] = {30,0x3FFFECF9}, + [I(136,120)] = {29,0x1FFFEB79}, + [I(137,120)] = {30,0x3FFFED79}, + [I(138,120)] = {30,0x3FFFEDF9}, + [I(139,120)] = {30,0x3FFFEE79}, + [I(140,120)] = {30,0x3FFFEEF9}, + [I(141,120)] = {30,0x3FFFEF79}, + [I(142,120)] = {31,0x7FFFF5F9}, + [I(143,120)] = {30,0x3FFFEFF9}, + [I(144,120)] = {31,0x7FFFF679}, + [I(145,120)] = {31,0x7FFFF6F9}, + [I(146,120)] = {29,0x1FFFEBF9}, + [I(147,120)] = {30,0x3FFFF079}, + [I(148,120)] = {31,0x7FFFF779}, + [I(149,120)] = {30,0x3FFFF0F9}, + [I(150,120)] = {30,0x3FFFF179}, + [I(151,120)] = {30,0x3FFFF1F9}, + [I(152,120)] = {30,0x3FFFF279}, + [I(153,120)] = {28,0xFFFEE79}, + [I(154,120)] = {29,0x1FFFEC79}, + [I(155,120)] = {30,0x3FFFF2F9}, + [I(156,120)] = {29,0x1FFFECF9}, + [I(157,120)] = {30,0x3FFFF379}, + [I(158,120)] = {30,0x3FFFF3F9}, + [I(159,120)] = {31,0x7FFFF7F9}, + [I(160,120)] = {29,0x1FFFED79}, + [I(161,120)] = {28,0xFFFEEF9}, + [I(162,120)] = {27,0x7FFF4F9}, + [I(163,120)] = {29,0x1FFFEDF9}, + [I(164,120)] = {29,0x1FFFEE79}, + [I(165,120)] = {30,0x3FFFF479}, + [I(166,120)] = {30,0x3FFFF4F9}, + [I(167,120)] = {28,0xFFFEF79}, + [I(168,120)] = {30,0x3FFFF579}, + [I(169,120)] = {29,0x1FFFEEF9}, + [I(170,120)] = {29,0x1FFFEF79}, + [I(171,120)] = {31,0x7FFFF879}, + [I(172,120)] = {28,0xFFFEFF9}, + [I(173,120)] = {29,0x1FFFEFF9}, + [I(174,120)] = {30,0x3FFFF5F9}, + [I(175,120)] = {30,0x3FFFF679}, + [I(176,120)] = {28,0xFFFF079}, + [I(177,120)] = {28,0xFFFF0F9}, + [I(178,120)] = {29,0x1FFFF079}, + [I(179,120)] = {28,0xFFFF179}, + [I(180,120)] = {30,0x3FFFF6F9}, + [I(181,120)] = {29,0x1FFFF0F9}, + [I(182,120)] = {30,0x3FFFF779}, + [I(183,120)] = {30,0x3FFFF7F9}, + [I(184,120)] = {27,0x7FFF579}, + [I(185,120)] = {29,0x1FFFF179}, + [I(186,120)] = {29,0x1FFFF1F9}, + [I(187,120)] = {29,0x1FFFF279}, + [I(188,120)] = {30,0x3FFFF879}, + [I(189,120)] = {29,0x1FFFF2F9}, + [I(190,120)] = {29,0x1FFFF379}, + [I(191,120)] = {30,0x3FFFF8F9}, + [I(192,120)] = {64,0}, + [I(193,120)] = {64,0}, + [I(194,120)] = {27,0x7FFF5F9}, + [I(195,120)] = {26,0x3FFF8F9}, + [I(196,120)] = {29,0x1FFFF3F9}, + [I(197,120)] = {30,0x3FFFF979}, + [I(198,120)] = {29,0x1FFFF479}, + [I(199,120)] = {X32,0xFFFFF679}, + [I(200,120)] = {64,0}, + [I(201,120)] = {64,0}, + [I(202,120)] = {64,0}, + [I(203,120)] = {64,0}, + [I(204,120)] = {64,0}, + [I(205,120)] = {64,0}, + [I(206,120)] = {31,0x7FFFF8F9}, + [I(207,120)] = {X32,0xFFFFF6F9}, + [I(208,120)] = {26,0x3FFF979}, + [I(209,120)] = {28,0xFFFF1F9}, + [I(210,120)] = {64,0}, + [I(211,120)] = {64,0}, + [I(212,120)] = {64,0}, + [I(213,120)] = {64,0}, + [I(214,120)] = {64,0}, + [I(215,120)] = {31,0x7FFFF979}, + [I(216,120)] = {28,0xFFFF279}, + [I(217,120)] = {28,0xFFFF2F9}, + [I(218,120)] = {64,0}, + [I(219,120)] = {64,0}, + [I(220,120)] = {64,0}, + [I(221,120)] = {64,0}, + [I(222,120)] = {64,0}, + [I(223,120)] = {64,0}, + [I(224,120)] = {27,0x7FFF679}, + [I(225,120)] = {31,0x7FFFF9F9}, + [I(226,120)] = {27,0x7FFF6F9}, + [I(227,120)] = {28,0xFFFF379}, + [I(228,120)] = {29,0x1FFFF4F9}, + [I(229,120)] = {28,0xFFFF3F9}, + [I(230,120)] = {28,0xFFFF479}, + [I(231,120)] = {30,0x3FFFF9F9}, + [I(232,120)] = {29,0x1FFFF579}, + [I(233,120)] = {29,0x1FFFF5F9}, + [I(234,120)] = {X32,0xFFFFF779}, + [I(235,120)] = {X32,0xFFFFF7F9}, + [I(236,120)] = {31,0x7FFFFA79}, + [I(237,120)] = {31,0x7FFFFAF9}, + [I(238,120)] = {64,0}, + [I(239,120)] = {30,0x3FFFFA79}, + [I(240,120)] = {64,0}, + [I(241,120)] = {64,0}, + [I(242,120)] = {64,0}, + [I(243,120)] = {64,0}, + [I(244,120)] = {64,0}, + [I(245,120)] = {64,0}, + [I(246,120)] = {64,0}, + [I(247,120)] = {64,0}, + [I(248,120)] = {64,0}, + [I(249,120)] = {64,0}, + [I(250,120)] = {64,0}, + [I(251,120)] = {64,0}, + [I(252,120)] = {64,0}, + [I(253,120)] = {64,0}, + [I(254,120)] = {64,0}, + [I(255,120)] = {64,0}, + [I(0,121)] = {20,0xFFC7A}, + [I(1,121)] = {30,0x3FFFEC7A}, + [I(2,121)] = {64,0}, + [I(3,121)] = {64,0}, + [I(4,121)] = {64,0}, + [I(5,121)] = {64,0}, + [I(6,121)] = {64,0}, + [I(7,121)] = {64,0}, + [I(8,121)] = {64,0}, + [I(9,121)] = {31,0x7FFFF57A}, + [I(10,121)] = {64,0}, + [I(11,121)] = {64,0}, + [I(12,121)] = {64,0}, + [I(13,121)] = {64,0}, + [I(14,121)] = {64,0}, + [I(15,121)] = {64,0}, + [I(16,121)] = {64,0}, + [I(17,121)] = {64,0}, + [I(18,121)] = {64,0}, + [I(19,121)] = {64,0}, + [I(20,121)] = {64,0}, + [I(21,121)] = {64,0}, + [I(22,121)] = {64,0}, + [I(23,121)] = {64,0}, + [I(24,121)] = {64,0}, + [I(25,121)] = {64,0}, + [I(26,121)] = {64,0}, + [I(27,121)] = {64,0}, + [I(28,121)] = {64,0}, + [I(29,121)] = {64,0}, + [I(30,121)] = {64,0}, + [I(31,121)] = {64,0}, + [I(32,121)] = {13,0xA7A}, + [I(33,121)] = {17,0x1FC7A}, + [I(34,121)] = {17,0x1FCFA}, + [I(35,121)] = {19,0x7FD7A}, + [I(36,121)] = {20,0xFFCFA}, + [I(37,121)] = {13,0xAFA}, + [I(38,121)] = {15,0x7C7A}, + [I(39,121)] = {18,0x3FD7A}, + [I(40,121)] = {17,0x1FD7A}, + [I(41,121)] = {17,0x1FDFA}, + [I(42,121)] = {15,0x7CFA}, + [I(43,121)] = {18,0x3FDFA}, + [I(44,121)] = {15,0x7D7A}, + [I(45,121)] = {13,0xB7A}, + [I(46,121)] = {13,0xBFA}, + [I(47,121)] = {13,0xC7A}, + [I(48,121)] = {12,0x7A}, + [I(49,121)] = {12,0xFA}, + [I(50,121)] = {12,0x17A}, + [I(51,121)] = {13,0xCFA}, + [I(52,121)] = {13,0xD7A}, + [I(53,121)] = {13,0xDFA}, + [I(54,121)] = {13,0xE7A}, + [I(55,121)] = {13,0xEFA}, + [I(56,121)] = {13,0xF7A}, + [I(57,121)] = {13,0xFFA}, + [I(58,121)] = {14,0x2E7A}, + [I(59,121)] = {15,0x7DFA}, + [I(60,121)] = {22,0x3FFE7A}, + [I(61,121)] = {13,0x107A}, + [I(62,121)] = {19,0x7FDFA}, + [I(63,121)] = {17,0x1FE7A}, + [I(64,121)] = {20,0xFFD7A}, + [I(65,121)] = {13,0x10FA}, + [I(66,121)] = {14,0x2EFA}, + [I(67,121)] = {14,0x2F7A}, + [I(68,121)] = {14,0x2FFA}, + [I(69,121)] = {14,0x307A}, + [I(70,121)] = {14,0x30FA}, + [I(71,121)] = {14,0x317A}, + [I(72,121)] = {14,0x31FA}, + [I(73,121)] = {14,0x327A}, + [I(74,121)] = {14,0x32FA}, + [I(75,121)] = {14,0x337A}, + [I(76,121)] = {14,0x33FA}, + [I(77,121)] = {14,0x347A}, + [I(78,121)] = {14,0x34FA}, + [I(79,121)] = {14,0x357A}, + [I(80,121)] = {14,0x35FA}, + [I(81,121)] = {14,0x367A}, + [I(82,121)] = {14,0x36FA}, + [I(83,121)] = {14,0x377A}, + [I(84,121)] = {14,0x37FA}, + [I(85,121)] = {14,0x387A}, + [I(86,121)] = {14,0x38FA}, + [I(87,121)] = {14,0x397A}, + [I(88,121)] = {15,0x7E7A}, + [I(89,121)] = {14,0x39FA}, + [I(90,121)] = {15,0x7EFA}, + [I(91,121)] = {20,0xFFDFA}, + [I(92,121)] = {26,0x3FFF87A}, + [I(93,121)] = {20,0xFFE7A}, + [I(94,121)] = {21,0x1FFE7A}, + [I(95,121)] = {13,0x117A}, + [I(96,121)] = {22,0x3FFEFA}, + [I(97,121)] = {12,0x1FA}, + [I(98,121)] = {13,0x11FA}, + [I(99,121)] = {12,0x27A}, + [I(100,121)] = {13,0x127A}, + [I(101,121)] = {12,0x2FA}, + [I(102,121)] = {13,0x12FA}, + [I(103,121)] = {13,0x137A}, + [I(104,121)] = {13,0x13FA}, + [I(105,121)] = {12,0x37A}, + [I(106,121)] = {14,0x3A7A}, + [I(107,121)] = {14,0x3AFA}, + [I(108,121)] = {13,0x147A}, + [I(109,121)] = {13,0x14FA}, + [I(110,121)] = {13,0x157A}, + [I(111,121)] = {12,0x3FA}, + [I(112,121)] = {13,0x15FA}, + [I(113,121)] = {14,0x3B7A}, + [I(114,121)] = {13,0x167A}, + [I(115,121)] = {12,0x47A}, + [I(116,121)] = {12,0x4FA}, + [I(117,121)] = {13,0x16FA}, + [I(118,121)] = {14,0x3BFA}, + [I(119,121)] = {14,0x3C7A}, + [I(120,121)] = {14,0x3CFA}, + [I(121,121)] = {14,0x3D7A}, + [I(122,121)] = {14,0x3DFA}, + [I(123,121)] = {22,0x3FFF7A}, + [I(124,121)] = {18,0x3FE7A}, + [I(125,121)] = {21,0x1FFEFA}, + [I(126,121)] = {20,0xFFEFA}, + [I(127,121)] = {64,0}, + [I(128,121)] = {27,0x7FFF37A}, + [I(129,121)] = {29,0x1FFFE97A}, + [I(130,121)] = {27,0x7FFF3FA}, + [I(131,121)] = {27,0x7FFF47A}, + [I(132,121)] = {29,0x1FFFE9FA}, + [I(133,121)] = {29,0x1FFFEA7A}, + [I(134,121)] = {29,0x1FFFEAFA}, + [I(135,121)] = {30,0x3FFFECFA}, + [I(136,121)] = {29,0x1FFFEB7A}, + [I(137,121)] = {30,0x3FFFED7A}, + [I(138,121)] = {30,0x3FFFEDFA}, + [I(139,121)] = {30,0x3FFFEE7A}, + [I(140,121)] = {30,0x3FFFEEFA}, + [I(141,121)] = {30,0x3FFFEF7A}, + [I(142,121)] = {31,0x7FFFF5FA}, + [I(143,121)] = {30,0x3FFFEFFA}, + [I(144,121)] = {31,0x7FFFF67A}, + [I(145,121)] = {31,0x7FFFF6FA}, + [I(146,121)] = {29,0x1FFFEBFA}, + [I(147,121)] = {30,0x3FFFF07A}, + [I(148,121)] = {31,0x7FFFF77A}, + [I(149,121)] = {30,0x3FFFF0FA}, + [I(150,121)] = {30,0x3FFFF17A}, + [I(151,121)] = {30,0x3FFFF1FA}, + [I(152,121)] = {30,0x3FFFF27A}, + [I(153,121)] = {28,0xFFFEE7A}, + [I(154,121)] = {29,0x1FFFEC7A}, + [I(155,121)] = {30,0x3FFFF2FA}, + [I(156,121)] = {29,0x1FFFECFA}, + [I(157,121)] = {30,0x3FFFF37A}, + [I(158,121)] = {30,0x3FFFF3FA}, + [I(159,121)] = {31,0x7FFFF7FA}, + [I(160,121)] = {29,0x1FFFED7A}, + [I(161,121)] = {28,0xFFFEEFA}, + [I(162,121)] = {27,0x7FFF4FA}, + [I(163,121)] = {29,0x1FFFEDFA}, + [I(164,121)] = {29,0x1FFFEE7A}, + [I(165,121)] = {30,0x3FFFF47A}, + [I(166,121)] = {30,0x3FFFF4FA}, + [I(167,121)] = {28,0xFFFEF7A}, + [I(168,121)] = {30,0x3FFFF57A}, + [I(169,121)] = {29,0x1FFFEEFA}, + [I(170,121)] = {29,0x1FFFEF7A}, + [I(171,121)] = {31,0x7FFFF87A}, + [I(172,121)] = {28,0xFFFEFFA}, + [I(173,121)] = {29,0x1FFFEFFA}, + [I(174,121)] = {30,0x3FFFF5FA}, + [I(175,121)] = {30,0x3FFFF67A}, + [I(176,121)] = {28,0xFFFF07A}, + [I(177,121)] = {28,0xFFFF0FA}, + [I(178,121)] = {29,0x1FFFF07A}, + [I(179,121)] = {28,0xFFFF17A}, + [I(180,121)] = {30,0x3FFFF6FA}, + [I(181,121)] = {29,0x1FFFF0FA}, + [I(182,121)] = {30,0x3FFFF77A}, + [I(183,121)] = {30,0x3FFFF7FA}, + [I(184,121)] = {27,0x7FFF57A}, + [I(185,121)] = {29,0x1FFFF17A}, + [I(186,121)] = {29,0x1FFFF1FA}, + [I(187,121)] = {29,0x1FFFF27A}, + [I(188,121)] = {30,0x3FFFF87A}, + [I(189,121)] = {29,0x1FFFF2FA}, + [I(190,121)] = {29,0x1FFFF37A}, + [I(191,121)] = {30,0x3FFFF8FA}, + [I(192,121)] = {64,0}, + [I(193,121)] = {64,0}, + [I(194,121)] = {27,0x7FFF5FA}, + [I(195,121)] = {26,0x3FFF8FA}, + [I(196,121)] = {29,0x1FFFF3FA}, + [I(197,121)] = {30,0x3FFFF97A}, + [I(198,121)] = {29,0x1FFFF47A}, + [I(199,121)] = {X32,0xFFFFF67A}, + [I(200,121)] = {64,0}, + [I(201,121)] = {64,0}, + [I(202,121)] = {64,0}, + [I(203,121)] = {64,0}, + [I(204,121)] = {64,0}, + [I(205,121)] = {64,0}, + [I(206,121)] = {31,0x7FFFF8FA}, + [I(207,121)] = {X32,0xFFFFF6FA}, + [I(208,121)] = {26,0x3FFF97A}, + [I(209,121)] = {28,0xFFFF1FA}, + [I(210,121)] = {64,0}, + [I(211,121)] = {64,0}, + [I(212,121)] = {64,0}, + [I(213,121)] = {64,0}, + [I(214,121)] = {64,0}, + [I(215,121)] = {31,0x7FFFF97A}, + [I(216,121)] = {28,0xFFFF27A}, + [I(217,121)] = {28,0xFFFF2FA}, + [I(218,121)] = {64,0}, + [I(219,121)] = {64,0}, + [I(220,121)] = {64,0}, + [I(221,121)] = {64,0}, + [I(222,121)] = {64,0}, + [I(223,121)] = {64,0}, + [I(224,121)] = {27,0x7FFF67A}, + [I(225,121)] = {31,0x7FFFF9FA}, + [I(226,121)] = {27,0x7FFF6FA}, + [I(227,121)] = {28,0xFFFF37A}, + [I(228,121)] = {29,0x1FFFF4FA}, + [I(229,121)] = {28,0xFFFF3FA}, + [I(230,121)] = {28,0xFFFF47A}, + [I(231,121)] = {30,0x3FFFF9FA}, + [I(232,121)] = {29,0x1FFFF57A}, + [I(233,121)] = {29,0x1FFFF5FA}, + [I(234,121)] = {X32,0xFFFFF77A}, + [I(235,121)] = {X32,0xFFFFF7FA}, + [I(236,121)] = {31,0x7FFFFA7A}, + [I(237,121)] = {31,0x7FFFFAFA}, + [I(238,121)] = {64,0}, + [I(239,121)] = {30,0x3FFFFA7A}, + [I(240,121)] = {64,0}, + [I(241,121)] = {64,0}, + [I(242,121)] = {64,0}, + [I(243,121)] = {64,0}, + [I(244,121)] = {64,0}, + [I(245,121)] = {64,0}, + [I(246,121)] = {64,0}, + [I(247,121)] = {64,0}, + [I(248,121)] = {64,0}, + [I(249,121)] = {64,0}, + [I(250,121)] = {64,0}, + [I(251,121)] = {64,0}, + [I(252,121)] = {64,0}, + [I(253,121)] = {64,0}, + [I(254,121)] = {64,0}, + [I(255,121)] = {64,0}, + [I(0,122)] = {20,0xFFC7B}, + [I(1,122)] = {30,0x3FFFEC7B}, + [I(2,122)] = {64,0}, + [I(3,122)] = {64,0}, + [I(4,122)] = {64,0}, + [I(5,122)] = {64,0}, + [I(6,122)] = {64,0}, + [I(7,122)] = {64,0}, + [I(8,122)] = {64,0}, + [I(9,122)] = {31,0x7FFFF57B}, + [I(10,122)] = {64,0}, + [I(11,122)] = {64,0}, + [I(12,122)] = {64,0}, + [I(13,122)] = {64,0}, + [I(14,122)] = {64,0}, + [I(15,122)] = {64,0}, + [I(16,122)] = {64,0}, + [I(17,122)] = {64,0}, + [I(18,122)] = {64,0}, + [I(19,122)] = {64,0}, + [I(20,122)] = {64,0}, + [I(21,122)] = {64,0}, + [I(22,122)] = {64,0}, + [I(23,122)] = {64,0}, + [I(24,122)] = {64,0}, + [I(25,122)] = {64,0}, + [I(26,122)] = {64,0}, + [I(27,122)] = {64,0}, + [I(28,122)] = {64,0}, + [I(29,122)] = {64,0}, + [I(30,122)] = {64,0}, + [I(31,122)] = {64,0}, + [I(32,122)] = {13,0xA7B}, + [I(33,122)] = {17,0x1FC7B}, + [I(34,122)] = {17,0x1FCFB}, + [I(35,122)] = {19,0x7FD7B}, + [I(36,122)] = {20,0xFFCFB}, + [I(37,122)] = {13,0xAFB}, + [I(38,122)] = {15,0x7C7B}, + [I(39,122)] = {18,0x3FD7B}, + [I(40,122)] = {17,0x1FD7B}, + [I(41,122)] = {17,0x1FDFB}, + [I(42,122)] = {15,0x7CFB}, + [I(43,122)] = {18,0x3FDFB}, + [I(44,122)] = {15,0x7D7B}, + [I(45,122)] = {13,0xB7B}, + [I(46,122)] = {13,0xBFB}, + [I(47,122)] = {13,0xC7B}, + [I(48,122)] = {12,0x7B}, + [I(49,122)] = {12,0xFB}, + [I(50,122)] = {12,0x17B}, + [I(51,122)] = {13,0xCFB}, + [I(52,122)] = {13,0xD7B}, + [I(53,122)] = {13,0xDFB}, + [I(54,122)] = {13,0xE7B}, + [I(55,122)] = {13,0xEFB}, + [I(56,122)] = {13,0xF7B}, + [I(57,122)] = {13,0xFFB}, + [I(58,122)] = {14,0x2E7B}, + [I(59,122)] = {15,0x7DFB}, + [I(60,122)] = {22,0x3FFE7B}, + [I(61,122)] = {13,0x107B}, + [I(62,122)] = {19,0x7FDFB}, + [I(63,122)] = {17,0x1FE7B}, + [I(64,122)] = {20,0xFFD7B}, + [I(65,122)] = {13,0x10FB}, + [I(66,122)] = {14,0x2EFB}, + [I(67,122)] = {14,0x2F7B}, + [I(68,122)] = {14,0x2FFB}, + [I(69,122)] = {14,0x307B}, + [I(70,122)] = {14,0x30FB}, + [I(71,122)] = {14,0x317B}, + [I(72,122)] = {14,0x31FB}, + [I(73,122)] = {14,0x327B}, + [I(74,122)] = {14,0x32FB}, + [I(75,122)] = {14,0x337B}, + [I(76,122)] = {14,0x33FB}, + [I(77,122)] = {14,0x347B}, + [I(78,122)] = {14,0x34FB}, + [I(79,122)] = {14,0x357B}, + [I(80,122)] = {14,0x35FB}, + [I(81,122)] = {14,0x367B}, + [I(82,122)] = {14,0x36FB}, + [I(83,122)] = {14,0x377B}, + [I(84,122)] = {14,0x37FB}, + [I(85,122)] = {14,0x387B}, + [I(86,122)] = {14,0x38FB}, + [I(87,122)] = {14,0x397B}, + [I(88,122)] = {15,0x7E7B}, + [I(89,122)] = {14,0x39FB}, + [I(90,122)] = {15,0x7EFB}, + [I(91,122)] = {20,0xFFDFB}, + [I(92,122)] = {26,0x3FFF87B}, + [I(93,122)] = {20,0xFFE7B}, + [I(94,122)] = {21,0x1FFE7B}, + [I(95,122)] = {13,0x117B}, + [I(96,122)] = {22,0x3FFEFB}, + [I(97,122)] = {12,0x1FB}, + [I(98,122)] = {13,0x11FB}, + [I(99,122)] = {12,0x27B}, + [I(100,122)] = {13,0x127B}, + [I(101,122)] = {12,0x2FB}, + [I(102,122)] = {13,0x12FB}, + [I(103,122)] = {13,0x137B}, + [I(104,122)] = {13,0x13FB}, + [I(105,122)] = {12,0x37B}, + [I(106,122)] = {14,0x3A7B}, + [I(107,122)] = {14,0x3AFB}, + [I(108,122)] = {13,0x147B}, + [I(109,122)] = {13,0x14FB}, + [I(110,122)] = {13,0x157B}, + [I(111,122)] = {12,0x3FB}, + [I(112,122)] = {13,0x15FB}, + [I(113,122)] = {14,0x3B7B}, + [I(114,122)] = {13,0x167B}, + [I(115,122)] = {12,0x47B}, + [I(116,122)] = {12,0x4FB}, + [I(117,122)] = {13,0x16FB}, + [I(118,122)] = {14,0x3BFB}, + [I(119,122)] = {14,0x3C7B}, + [I(120,122)] = {14,0x3CFB}, + [I(121,122)] = {14,0x3D7B}, + [I(122,122)] = {14,0x3DFB}, + [I(123,122)] = {22,0x3FFF7B}, + [I(124,122)] = {18,0x3FE7B}, + [I(125,122)] = {21,0x1FFEFB}, + [I(126,122)] = {20,0xFFEFB}, + [I(127,122)] = {64,0}, + [I(128,122)] = {27,0x7FFF37B}, + [I(129,122)] = {29,0x1FFFE97B}, + [I(130,122)] = {27,0x7FFF3FB}, + [I(131,122)] = {27,0x7FFF47B}, + [I(132,122)] = {29,0x1FFFE9FB}, + [I(133,122)] = {29,0x1FFFEA7B}, + [I(134,122)] = {29,0x1FFFEAFB}, + [I(135,122)] = {30,0x3FFFECFB}, + [I(136,122)] = {29,0x1FFFEB7B}, + [I(137,122)] = {30,0x3FFFED7B}, + [I(138,122)] = {30,0x3FFFEDFB}, + [I(139,122)] = {30,0x3FFFEE7B}, + [I(140,122)] = {30,0x3FFFEEFB}, + [I(141,122)] = {30,0x3FFFEF7B}, + [I(142,122)] = {31,0x7FFFF5FB}, + [I(143,122)] = {30,0x3FFFEFFB}, + [I(144,122)] = {31,0x7FFFF67B}, + [I(145,122)] = {31,0x7FFFF6FB}, + [I(146,122)] = {29,0x1FFFEBFB}, + [I(147,122)] = {30,0x3FFFF07B}, + [I(148,122)] = {31,0x7FFFF77B}, + [I(149,122)] = {30,0x3FFFF0FB}, + [I(150,122)] = {30,0x3FFFF17B}, + [I(151,122)] = {30,0x3FFFF1FB}, + [I(152,122)] = {30,0x3FFFF27B}, + [I(153,122)] = {28,0xFFFEE7B}, + [I(154,122)] = {29,0x1FFFEC7B}, + [I(155,122)] = {30,0x3FFFF2FB}, + [I(156,122)] = {29,0x1FFFECFB}, + [I(157,122)] = {30,0x3FFFF37B}, + [I(158,122)] = {30,0x3FFFF3FB}, + [I(159,122)] = {31,0x7FFFF7FB}, + [I(160,122)] = {29,0x1FFFED7B}, + [I(161,122)] = {28,0xFFFEEFB}, + [I(162,122)] = {27,0x7FFF4FB}, + [I(163,122)] = {29,0x1FFFEDFB}, + [I(164,122)] = {29,0x1FFFEE7B}, + [I(165,122)] = {30,0x3FFFF47B}, + [I(166,122)] = {30,0x3FFFF4FB}, + [I(167,122)] = {28,0xFFFEF7B}, + [I(168,122)] = {30,0x3FFFF57B}, + [I(169,122)] = {29,0x1FFFEEFB}, + [I(170,122)] = {29,0x1FFFEF7B}, + [I(171,122)] = {31,0x7FFFF87B}, + [I(172,122)] = {28,0xFFFEFFB}, + [I(173,122)] = {29,0x1FFFEFFB}, + [I(174,122)] = {30,0x3FFFF5FB}, + [I(175,122)] = {30,0x3FFFF67B}, + [I(176,122)] = {28,0xFFFF07B}, + [I(177,122)] = {28,0xFFFF0FB}, + [I(178,122)] = {29,0x1FFFF07B}, + [I(179,122)] = {28,0xFFFF17B}, + [I(180,122)] = {30,0x3FFFF6FB}, + [I(181,122)] = {29,0x1FFFF0FB}, + [I(182,122)] = {30,0x3FFFF77B}, + [I(183,122)] = {30,0x3FFFF7FB}, + [I(184,122)] = {27,0x7FFF57B}, + [I(185,122)] = {29,0x1FFFF17B}, + [I(186,122)] = {29,0x1FFFF1FB}, + [I(187,122)] = {29,0x1FFFF27B}, + [I(188,122)] = {30,0x3FFFF87B}, + [I(189,122)] = {29,0x1FFFF2FB}, + [I(190,122)] = {29,0x1FFFF37B}, + [I(191,122)] = {30,0x3FFFF8FB}, + [I(192,122)] = {64,0}, + [I(193,122)] = {64,0}, + [I(194,122)] = {27,0x7FFF5FB}, + [I(195,122)] = {26,0x3FFF8FB}, + [I(196,122)] = {29,0x1FFFF3FB}, + [I(197,122)] = {30,0x3FFFF97B}, + [I(198,122)] = {29,0x1FFFF47B}, + [I(199,122)] = {X32,0xFFFFF67B}, + [I(200,122)] = {64,0}, + [I(201,122)] = {64,0}, + [I(202,122)] = {64,0}, + [I(203,122)] = {64,0}, + [I(204,122)] = {64,0}, + [I(205,122)] = {64,0}, + [I(206,122)] = {31,0x7FFFF8FB}, + [I(207,122)] = {X32,0xFFFFF6FB}, + [I(208,122)] = {26,0x3FFF97B}, + [I(209,122)] = {28,0xFFFF1FB}, + [I(210,122)] = {64,0}, + [I(211,122)] = {64,0}, + [I(212,122)] = {64,0}, + [I(213,122)] = {64,0}, + [I(214,122)] = {64,0}, + [I(215,122)] = {31,0x7FFFF97B}, + [I(216,122)] = {28,0xFFFF27B}, + [I(217,122)] = {28,0xFFFF2FB}, + [I(218,122)] = {64,0}, + [I(219,122)] = {64,0}, + [I(220,122)] = {64,0}, + [I(221,122)] = {64,0}, + [I(222,122)] = {64,0}, + [I(223,122)] = {64,0}, + [I(224,122)] = {27,0x7FFF67B}, + [I(225,122)] = {31,0x7FFFF9FB}, + [I(226,122)] = {27,0x7FFF6FB}, + [I(227,122)] = {28,0xFFFF37B}, + [I(228,122)] = {29,0x1FFFF4FB}, + [I(229,122)] = {28,0xFFFF3FB}, + [I(230,122)] = {28,0xFFFF47B}, + [I(231,122)] = {30,0x3FFFF9FB}, + [I(232,122)] = {29,0x1FFFF57B}, + [I(233,122)] = {29,0x1FFFF5FB}, + [I(234,122)] = {X32,0xFFFFF77B}, + [I(235,122)] = {X32,0xFFFFF7FB}, + [I(236,122)] = {31,0x7FFFFA7B}, + [I(237,122)] = {31,0x7FFFFAFB}, + [I(238,122)] = {64,0}, + [I(239,122)] = {30,0x3FFFFA7B}, + [I(240,122)] = {64,0}, + [I(241,122)] = {64,0}, + [I(242,122)] = {64,0}, + [I(243,122)] = {64,0}, + [I(244,122)] = {64,0}, + [I(245,122)] = {64,0}, + [I(246,122)] = {64,0}, + [I(247,122)] = {64,0}, + [I(248,122)] = {64,0}, + [I(249,122)] = {64,0}, + [I(250,122)] = {64,0}, + [I(251,122)] = {64,0}, + [I(252,122)] = {64,0}, + [I(253,122)] = {64,0}, + [I(254,122)] = {64,0}, + [I(255,122)] = {64,0}, + [I(0,123)] = {28,0xFFC7FFE}, + [I(1,123)] = {64,0}, + [I(2,123)] = {64,0}, + [I(3,123)] = {64,0}, + [I(4,123)] = {64,0}, + [I(5,123)] = {64,0}, + [I(6,123)] = {64,0}, + [I(7,123)] = {64,0}, + [I(8,123)] = {64,0}, + [I(9,123)] = {64,0}, + [I(10,123)] = {64,0}, + [I(11,123)] = {64,0}, + [I(12,123)] = {64,0}, + [I(13,123)] = {64,0}, + [I(14,123)] = {64,0}, + [I(15,123)] = {64,0}, + [I(16,123)] = {64,0}, + [I(17,123)] = {64,0}, + [I(18,123)] = {64,0}, + [I(19,123)] = {64,0}, + [I(20,123)] = {64,0}, + [I(21,123)] = {64,0}, + [I(22,123)] = {64,0}, + [I(23,123)] = {64,0}, + [I(24,123)] = {64,0}, + [I(25,123)] = {64,0}, + [I(26,123)] = {64,0}, + [I(27,123)] = {64,0}, + [I(28,123)] = {64,0}, + [I(29,123)] = {64,0}, + [I(30,123)] = {64,0}, + [I(31,123)] = {64,0}, + [I(32,123)] = {21,0xA7FFE}, + [I(33,123)] = {25,0x1FC7FFE}, + [I(34,123)] = {25,0x1FCFFFE}, + [I(35,123)] = {27,0x7FD7FFE}, + [I(36,123)] = {28,0xFFCFFFE}, + [I(37,123)] = {21,0xAFFFE}, + [I(38,123)] = {23,0x7C7FFE}, + [I(39,123)] = {26,0x3FD7FFE}, + [I(40,123)] = {25,0x1FD7FFE}, + [I(41,123)] = {25,0x1FDFFFE}, + [I(42,123)] = {23,0x7CFFFE}, + [I(43,123)] = {26,0x3FDFFFE}, + [I(44,123)] = {23,0x7D7FFE}, + [I(45,123)] = {21,0xB7FFE}, + [I(46,123)] = {21,0xBFFFE}, + [I(47,123)] = {21,0xC7FFE}, + [I(48,123)] = {20,0x7FFE}, + [I(49,123)] = {20,0xFFFE}, + [I(50,123)] = {20,0x17FFE}, + [I(51,123)] = {21,0xCFFFE}, + [I(52,123)] = {21,0xD7FFE}, + [I(53,123)] = {21,0xDFFFE}, + [I(54,123)] = {21,0xE7FFE}, + [I(55,123)] = {21,0xEFFFE}, + [I(56,123)] = {21,0xF7FFE}, + [I(57,123)] = {21,0xFFFFE}, + [I(58,123)] = {22,0x2E7FFE}, + [I(59,123)] = {23,0x7DFFFE}, + [I(60,123)] = {30,0x3FFE7FFE}, + [I(61,123)] = {21,0x107FFE}, + [I(62,123)] = {27,0x7FDFFFE}, + [I(63,123)] = {25,0x1FE7FFE}, + [I(64,123)] = {28,0xFFD7FFE}, + [I(65,123)] = {21,0x10FFFE}, + [I(66,123)] = {22,0x2EFFFE}, + [I(67,123)] = {22,0x2F7FFE}, + [I(68,123)] = {22,0x2FFFFE}, + [I(69,123)] = {22,0x307FFE}, + [I(70,123)] = {22,0x30FFFE}, + [I(71,123)] = {22,0x317FFE}, + [I(72,123)] = {22,0x31FFFE}, + [I(73,123)] = {22,0x327FFE}, + [I(74,123)] = {22,0x32FFFE}, + [I(75,123)] = {22,0x337FFE}, + [I(76,123)] = {22,0x33FFFE}, + [I(77,123)] = {22,0x347FFE}, + [I(78,123)] = {22,0x34FFFE}, + [I(79,123)] = {22,0x357FFE}, + [I(80,123)] = {22,0x35FFFE}, + [I(81,123)] = {22,0x367FFE}, + [I(82,123)] = {22,0x36FFFE}, + [I(83,123)] = {22,0x377FFE}, + [I(84,123)] = {22,0x37FFFE}, + [I(85,123)] = {22,0x387FFE}, + [I(86,123)] = {22,0x38FFFE}, + [I(87,123)] = {22,0x397FFE}, + [I(88,123)] = {23,0x7E7FFE}, + [I(89,123)] = {22,0x39FFFE}, + [I(90,123)] = {23,0x7EFFFE}, + [I(91,123)] = {28,0xFFDFFFE}, + [I(92,123)] = {64,0}, + [I(93,123)] = {28,0xFFE7FFE}, + [I(94,123)] = {29,0x1FFE7FFE}, + [I(95,123)] = {21,0x117FFE}, + [I(96,123)] = {30,0x3FFEFFFE}, + [I(97,123)] = {20,0x1FFFE}, + [I(98,123)] = {21,0x11FFFE}, + [I(99,123)] = {20,0x27FFE}, + [I(100,123)] = {21,0x127FFE}, + [I(101,123)] = {20,0x2FFFE}, + [I(102,123)] = {21,0x12FFFE}, + [I(103,123)] = {21,0x137FFE}, + [I(104,123)] = {21,0x13FFFE}, + [I(105,123)] = {20,0x37FFE}, + [I(106,123)] = {22,0x3A7FFE}, + [I(107,123)] = {22,0x3AFFFE}, + [I(108,123)] = {21,0x147FFE}, + [I(109,123)] = {21,0x14FFFE}, + [I(110,123)] = {21,0x157FFE}, + [I(111,123)] = {20,0x3FFFE}, + [I(112,123)] = {21,0x15FFFE}, + [I(113,123)] = {22,0x3B7FFE}, + [I(114,123)] = {21,0x167FFE}, + [I(115,123)] = {20,0x47FFE}, + [I(116,123)] = {20,0x4FFFE}, + [I(117,123)] = {21,0x16FFFE}, + [I(118,123)] = {22,0x3BFFFE}, + [I(119,123)] = {22,0x3C7FFE}, + [I(120,123)] = {22,0x3CFFFE}, + [I(121,123)] = {22,0x3D7FFE}, + [I(122,123)] = {22,0x3DFFFE}, + [I(123,123)] = {30,0x3FFF7FFE}, + [I(124,123)] = {26,0x3FE7FFE}, + [I(125,123)] = {29,0x1FFEFFFE}, + [I(126,123)] = {28,0xFFEFFFE}, + [I(127,123)] = {64,0}, + [I(128,123)] = {64,0}, + [I(129,123)] = {64,0}, + [I(130,123)] = {64,0}, + [I(131,123)] = {64,0}, + [I(132,123)] = {64,0}, + [I(133,123)] = {64,0}, + [I(134,123)] = {64,0}, + [I(135,123)] = {64,0}, + [I(136,123)] = {64,0}, + [I(137,123)] = {64,0}, + [I(138,123)] = {64,0}, + [I(139,123)] = {64,0}, + [I(140,123)] = {64,0}, + [I(141,123)] = {64,0}, + [I(142,123)] = {64,0}, + [I(143,123)] = {64,0}, + [I(144,123)] = {64,0}, + [I(145,123)] = {64,0}, + [I(146,123)] = {64,0}, + [I(147,123)] = {64,0}, + [I(148,123)] = {64,0}, + [I(149,123)] = {64,0}, + [I(150,123)] = {64,0}, + [I(151,123)] = {64,0}, + [I(152,123)] = {64,0}, + [I(153,123)] = {64,0}, + [I(154,123)] = {64,0}, + [I(155,123)] = {64,0}, + [I(156,123)] = {64,0}, + [I(157,123)] = {64,0}, + [I(158,123)] = {64,0}, + [I(159,123)] = {64,0}, + [I(160,123)] = {64,0}, + [I(161,123)] = {64,0}, + [I(162,123)] = {64,0}, + [I(163,123)] = {64,0}, + [I(164,123)] = {64,0}, + [I(165,123)] = {64,0}, + [I(166,123)] = {64,0}, + [I(167,123)] = {64,0}, + [I(168,123)] = {64,0}, + [I(169,123)] = {64,0}, + [I(170,123)] = {64,0}, + [I(171,123)] = {64,0}, + [I(172,123)] = {64,0}, + [I(173,123)] = {64,0}, + [I(174,123)] = {64,0}, + [I(175,123)] = {64,0}, + [I(176,123)] = {64,0}, + [I(177,123)] = {64,0}, + [I(178,123)] = {64,0}, + [I(179,123)] = {64,0}, + [I(180,123)] = {64,0}, + [I(181,123)] = {64,0}, + [I(182,123)] = {64,0}, + [I(183,123)] = {64,0}, + [I(184,123)] = {64,0}, + [I(185,123)] = {64,0}, + [I(186,123)] = {64,0}, + [I(187,123)] = {64,0}, + [I(188,123)] = {64,0}, + [I(189,123)] = {64,0}, + [I(190,123)] = {64,0}, + [I(191,123)] = {64,0}, + [I(192,123)] = {64,0}, + [I(193,123)] = {64,0}, + [I(194,123)] = {64,0}, + [I(195,123)] = {64,0}, + [I(196,123)] = {64,0}, + [I(197,123)] = {64,0}, + [I(198,123)] = {64,0}, + [I(199,123)] = {64,0}, + [I(200,123)] = {64,0}, + [I(201,123)] = {64,0}, + [I(202,123)] = {64,0}, + [I(203,123)] = {64,0}, + [I(204,123)] = {64,0}, + [I(205,123)] = {64,0}, + [I(206,123)] = {64,0}, + [I(207,123)] = {64,0}, + [I(208,123)] = {64,0}, + [I(209,123)] = {64,0}, + [I(210,123)] = {64,0}, + [I(211,123)] = {64,0}, + [I(212,123)] = {64,0}, + [I(213,123)] = {64,0}, + [I(214,123)] = {64,0}, + [I(215,123)] = {64,0}, + [I(216,123)] = {64,0}, + [I(217,123)] = {64,0}, + [I(218,123)] = {64,0}, + [I(219,123)] = {64,0}, + [I(220,123)] = {64,0}, + [I(221,123)] = {64,0}, + [I(222,123)] = {64,0}, + [I(223,123)] = {64,0}, + [I(224,123)] = {64,0}, + [I(225,123)] = {64,0}, + [I(226,123)] = {64,0}, + [I(227,123)] = {64,0}, + [I(228,123)] = {64,0}, + [I(229,123)] = {64,0}, + [I(230,123)] = {64,0}, + [I(231,123)] = {64,0}, + [I(232,123)] = {64,0}, + [I(233,123)] = {64,0}, + [I(234,123)] = {64,0}, + [I(235,123)] = {64,0}, + [I(236,123)] = {64,0}, + [I(237,123)] = {64,0}, + [I(238,123)] = {64,0}, + [I(239,123)] = {64,0}, + [I(240,123)] = {64,0}, + [I(241,123)] = {64,0}, + [I(242,123)] = {64,0}, + [I(243,123)] = {64,0}, + [I(244,123)] = {64,0}, + [I(245,123)] = {64,0}, + [I(246,123)] = {64,0}, + [I(247,123)] = {64,0}, + [I(248,123)] = {64,0}, + [I(249,123)] = {64,0}, + [I(250,123)] = {64,0}, + [I(251,123)] = {64,0}, + [I(252,123)] = {64,0}, + [I(253,123)] = {64,0}, + [I(254,123)] = {64,0}, + [I(255,123)] = {64,0}, + [I(0,124)] = {24,0xFFC7FC}, + [I(1,124)] = {64,0}, + [I(2,124)] = {64,0}, + [I(3,124)] = {64,0}, + [I(4,124)] = {64,0}, + [I(5,124)] = {64,0}, + [I(6,124)] = {64,0}, + [I(7,124)] = {64,0}, + [I(8,124)] = {64,0}, + [I(9,124)] = {64,0}, + [I(10,124)] = {64,0}, + [I(11,124)] = {64,0}, + [I(12,124)] = {64,0}, + [I(13,124)] = {64,0}, + [I(14,124)] = {64,0}, + [I(15,124)] = {64,0}, + [I(16,124)] = {64,0}, + [I(17,124)] = {64,0}, + [I(18,124)] = {64,0}, + [I(19,124)] = {64,0}, + [I(20,124)] = {64,0}, + [I(21,124)] = {64,0}, + [I(22,124)] = {64,0}, + [I(23,124)] = {64,0}, + [I(24,124)] = {64,0}, + [I(25,124)] = {64,0}, + [I(26,124)] = {64,0}, + [I(27,124)] = {64,0}, + [I(28,124)] = {64,0}, + [I(29,124)] = {64,0}, + [I(30,124)] = {64,0}, + [I(31,124)] = {64,0}, + [I(32,124)] = {17,0xA7FC}, + [I(33,124)] = {21,0x1FC7FC}, + [I(34,124)] = {21,0x1FCFFC}, + [I(35,124)] = {23,0x7FD7FC}, + [I(36,124)] = {24,0xFFCFFC}, + [I(37,124)] = {17,0xAFFC}, + [I(38,124)] = {19,0x7C7FC}, + [I(39,124)] = {22,0x3FD7FC}, + [I(40,124)] = {21,0x1FD7FC}, + [I(41,124)] = {21,0x1FDFFC}, + [I(42,124)] = {19,0x7CFFC}, + [I(43,124)] = {22,0x3FDFFC}, + [I(44,124)] = {19,0x7D7FC}, + [I(45,124)] = {17,0xB7FC}, + [I(46,124)] = {17,0xBFFC}, + [I(47,124)] = {17,0xC7FC}, + [I(48,124)] = {16,0x7FC}, + [I(49,124)] = {16,0xFFC}, + [I(50,124)] = {16,0x17FC}, + [I(51,124)] = {17,0xCFFC}, + [I(52,124)] = {17,0xD7FC}, + [I(53,124)] = {17,0xDFFC}, + [I(54,124)] = {17,0xE7FC}, + [I(55,124)] = {17,0xEFFC}, + [I(56,124)] = {17,0xF7FC}, + [I(57,124)] = {17,0xFFFC}, + [I(58,124)] = {18,0x2E7FC}, + [I(59,124)] = {19,0x7DFFC}, + [I(60,124)] = {26,0x3FFE7FC}, + [I(61,124)] = {17,0x107FC}, + [I(62,124)] = {23,0x7FDFFC}, + [I(63,124)] = {21,0x1FE7FC}, + [I(64,124)] = {24,0xFFD7FC}, + [I(65,124)] = {17,0x10FFC}, + [I(66,124)] = {18,0x2EFFC}, + [I(67,124)] = {18,0x2F7FC}, + [I(68,124)] = {18,0x2FFFC}, + [I(69,124)] = {18,0x307FC}, + [I(70,124)] = {18,0x30FFC}, + [I(71,124)] = {18,0x317FC}, + [I(72,124)] = {18,0x31FFC}, + [I(73,124)] = {18,0x327FC}, + [I(74,124)] = {18,0x32FFC}, + [I(75,124)] = {18,0x337FC}, + [I(76,124)] = {18,0x33FFC}, + [I(77,124)] = {18,0x347FC}, + [I(78,124)] = {18,0x34FFC}, + [I(79,124)] = {18,0x357FC}, + [I(80,124)] = {18,0x35FFC}, + [I(81,124)] = {18,0x367FC}, + [I(82,124)] = {18,0x36FFC}, + [I(83,124)] = {18,0x377FC}, + [I(84,124)] = {18,0x37FFC}, + [I(85,124)] = {18,0x387FC}, + [I(86,124)] = {18,0x38FFC}, + [I(87,124)] = {18,0x397FC}, + [I(88,124)] = {19,0x7E7FC}, + [I(89,124)] = {18,0x39FFC}, + [I(90,124)] = {19,0x7EFFC}, + [I(91,124)] = {24,0xFFDFFC}, + [I(92,124)] = {30,0x3FFF87FC}, + [I(93,124)] = {24,0xFFE7FC}, + [I(94,124)] = {25,0x1FFE7FC}, + [I(95,124)] = {17,0x117FC}, + [I(96,124)] = {26,0x3FFEFFC}, + [I(97,124)] = {16,0x1FFC}, + [I(98,124)] = {17,0x11FFC}, + [I(99,124)] = {16,0x27FC}, + [I(100,124)] = {17,0x127FC}, + [I(101,124)] = {16,0x2FFC}, + [I(102,124)] = {17,0x12FFC}, + [I(103,124)] = {17,0x137FC}, + [I(104,124)] = {17,0x13FFC}, + [I(105,124)] = {16,0x37FC}, + [I(106,124)] = {18,0x3A7FC}, + [I(107,124)] = {18,0x3AFFC}, + [I(108,124)] = {17,0x147FC}, + [I(109,124)] = {17,0x14FFC}, + [I(110,124)] = {17,0x157FC}, + [I(111,124)] = {16,0x3FFC}, + [I(112,124)] = {17,0x15FFC}, + [I(113,124)] = {18,0x3B7FC}, + [I(114,124)] = {17,0x167FC}, + [I(115,124)] = {16,0x47FC}, + [I(116,124)] = {16,0x4FFC}, + [I(117,124)] = {17,0x16FFC}, + [I(118,124)] = {18,0x3BFFC}, + [I(119,124)] = {18,0x3C7FC}, + [I(120,124)] = {18,0x3CFFC}, + [I(121,124)] = {18,0x3D7FC}, + [I(122,124)] = {18,0x3DFFC}, + [I(123,124)] = {26,0x3FFF7FC}, + [I(124,124)] = {22,0x3FE7FC}, + [I(125,124)] = {25,0x1FFEFFC}, + [I(126,124)] = {24,0xFFEFFC}, + [I(127,124)] = {64,0}, + [I(128,124)] = {31,0x7FFF37FC}, + [I(129,124)] = {64,0}, + [I(130,124)] = {31,0x7FFF3FFC}, + [I(131,124)] = {31,0x7FFF47FC}, + [I(132,124)] = {64,0}, + [I(133,124)] = {64,0}, + [I(134,124)] = {64,0}, + [I(135,124)] = {64,0}, + [I(136,124)] = {64,0}, + [I(137,124)] = {64,0}, + [I(138,124)] = {64,0}, + [I(139,124)] = {64,0}, + [I(140,124)] = {64,0}, + [I(141,124)] = {64,0}, + [I(142,124)] = {64,0}, + [I(143,124)] = {64,0}, + [I(144,124)] = {64,0}, + [I(145,124)] = {64,0}, + [I(146,124)] = {64,0}, + [I(147,124)] = {64,0}, + [I(148,124)] = {64,0}, + [I(149,124)] = {64,0}, + [I(150,124)] = {64,0}, + [I(151,124)] = {64,0}, + [I(152,124)] = {64,0}, + [I(153,124)] = {X32,0xFFFEE7FC}, + [I(154,124)] = {64,0}, + [I(155,124)] = {64,0}, + [I(156,124)] = {64,0}, + [I(157,124)] = {64,0}, + [I(158,124)] = {64,0}, + [I(159,124)] = {64,0}, + [I(160,124)] = {64,0}, + [I(161,124)] = {X32,0xFFFEEFFC}, + [I(162,124)] = {31,0x7FFF4FFC}, + [I(163,124)] = {64,0}, + [I(164,124)] = {64,0}, + [I(165,124)] = {64,0}, + [I(166,124)] = {64,0}, + [I(167,124)] = {X32,0xFFFEF7FC}, + [I(168,124)] = {64,0}, + [I(169,124)] = {64,0}, + [I(170,124)] = {64,0}, + [I(171,124)] = {64,0}, + [I(172,124)] = {X32,0xFFFEFFFC}, + [I(173,124)] = {64,0}, + [I(174,124)] = {64,0}, + [I(175,124)] = {64,0}, + [I(176,124)] = {X32,0xFFFF07FC}, + [I(177,124)] = {X32,0xFFFF0FFC}, + [I(178,124)] = {64,0}, + [I(179,124)] = {X32,0xFFFF17FC}, + [I(180,124)] = {64,0}, + [I(181,124)] = {64,0}, + [I(182,124)] = {64,0}, + [I(183,124)] = {64,0}, + [I(184,124)] = {31,0x7FFF57FC}, + [I(185,124)] = {64,0}, + [I(186,124)] = {64,0}, + [I(187,124)] = {64,0}, + [I(188,124)] = {64,0}, + [I(189,124)] = {64,0}, + [I(190,124)] = {64,0}, + [I(191,124)] = {64,0}, + [I(192,124)] = {64,0}, + [I(193,124)] = {64,0}, + [I(194,124)] = {31,0x7FFF5FFC}, + [I(195,124)] = {30,0x3FFF8FFC}, + [I(196,124)] = {64,0}, + [I(197,124)] = {64,0}, + [I(198,124)] = {64,0}, + [I(199,124)] = {64,0}, + [I(200,124)] = {64,0}, + [I(201,124)] = {64,0}, + [I(202,124)] = {64,0}, + [I(203,124)] = {64,0}, + [I(204,124)] = {64,0}, + [I(205,124)] = {64,0}, + [I(206,124)] = {64,0}, + [I(207,124)] = {64,0}, + [I(208,124)] = {30,0x3FFF97FC}, + [I(209,124)] = {X32,0xFFFF1FFC}, + [I(210,124)] = {64,0}, + [I(211,124)] = {64,0}, + [I(212,124)] = {64,0}, + [I(213,124)] = {64,0}, + [I(214,124)] = {64,0}, + [I(215,124)] = {64,0}, + [I(216,124)] = {X32,0xFFFF27FC}, + [I(217,124)] = {X32,0xFFFF2FFC}, + [I(218,124)] = {64,0}, + [I(219,124)] = {64,0}, + [I(220,124)] = {64,0}, + [I(221,124)] = {64,0}, + [I(222,124)] = {64,0}, + [I(223,124)] = {64,0}, + [I(224,124)] = {31,0x7FFF67FC}, + [I(225,124)] = {64,0}, + [I(226,124)] = {31,0x7FFF6FFC}, + [I(227,124)] = {X32,0xFFFF37FC}, + [I(228,124)] = {64,0}, + [I(229,124)] = {X32,0xFFFF3FFC}, + [I(230,124)] = {X32,0xFFFF47FC}, + [I(231,124)] = {64,0}, + [I(232,124)] = {64,0}, + [I(233,124)] = {64,0}, + [I(234,124)] = {64,0}, + [I(235,124)] = {64,0}, + [I(236,124)] = {64,0}, + [I(237,124)] = {64,0}, + [I(238,124)] = {64,0}, + [I(239,124)] = {64,0}, + [I(240,124)] = {64,0}, + [I(241,124)] = {64,0}, + [I(242,124)] = {64,0}, + [I(243,124)] = {64,0}, + [I(244,124)] = {64,0}, + [I(245,124)] = {64,0}, + [I(246,124)] = {64,0}, + [I(247,124)] = {64,0}, + [I(248,124)] = {64,0}, + [I(249,124)] = {64,0}, + [I(250,124)] = {64,0}, + [I(251,124)] = {64,0}, + [I(252,124)] = {64,0}, + [I(253,124)] = {64,0}, + [I(254,124)] = {64,0}, + [I(255,124)] = {64,0}, + [I(0,125)] = {27,0x7FE3FFD}, + [I(1,125)] = {64,0}, + [I(2,125)] = {64,0}, + [I(3,125)] = {64,0}, + [I(4,125)] = {64,0}, + [I(5,125)] = {64,0}, + [I(6,125)] = {64,0}, + [I(7,125)] = {64,0}, + [I(8,125)] = {64,0}, + [I(9,125)] = {64,0}, + [I(10,125)] = {64,0}, + [I(11,125)] = {64,0}, + [I(12,125)] = {64,0}, + [I(13,125)] = {64,0}, + [I(14,125)] = {64,0}, + [I(15,125)] = {64,0}, + [I(16,125)] = {64,0}, + [I(17,125)] = {64,0}, + [I(18,125)] = {64,0}, + [I(19,125)] = {64,0}, + [I(20,125)] = {64,0}, + [I(21,125)] = {64,0}, + [I(22,125)] = {64,0}, + [I(23,125)] = {64,0}, + [I(24,125)] = {64,0}, + [I(25,125)] = {64,0}, + [I(26,125)] = {64,0}, + [I(27,125)] = {64,0}, + [I(28,125)] = {64,0}, + [I(29,125)] = {64,0}, + [I(30,125)] = {64,0}, + [I(31,125)] = {64,0}, + [I(32,125)] = {20,0x53FFD}, + [I(33,125)] = {24,0xFE3FFD}, + [I(34,125)] = {24,0xFE7FFD}, + [I(35,125)] = {26,0x3FEBFFD}, + [I(36,125)] = {27,0x7FE7FFD}, + [I(37,125)] = {20,0x57FFD}, + [I(38,125)] = {22,0x3E3FFD}, + [I(39,125)] = {25,0x1FEBFFD}, + [I(40,125)] = {24,0xFEBFFD}, + [I(41,125)] = {24,0xFEFFFD}, + [I(42,125)] = {22,0x3E7FFD}, + [I(43,125)] = {25,0x1FEFFFD}, + [I(44,125)] = {22,0x3EBFFD}, + [I(45,125)] = {20,0x5BFFD}, + [I(46,125)] = {20,0x5FFFD}, + [I(47,125)] = {20,0x63FFD}, + [I(48,125)] = {19,0x3FFD}, + [I(49,125)] = {19,0x7FFD}, + [I(50,125)] = {19,0xBFFD}, + [I(51,125)] = {20,0x67FFD}, + [I(52,125)] = {20,0x6BFFD}, + [I(53,125)] = {20,0x6FFFD}, + [I(54,125)] = {20,0x73FFD}, + [I(55,125)] = {20,0x77FFD}, + [I(56,125)] = {20,0x7BFFD}, + [I(57,125)] = {20,0x7FFFD}, + [I(58,125)] = {21,0x173FFD}, + [I(59,125)] = {22,0x3EFFFD}, + [I(60,125)] = {29,0x1FFF3FFD}, + [I(61,125)] = {20,0x83FFD}, + [I(62,125)] = {26,0x3FEFFFD}, + [I(63,125)] = {24,0xFF3FFD}, + [I(64,125)] = {27,0x7FEBFFD}, + [I(65,125)] = {20,0x87FFD}, + [I(66,125)] = {21,0x177FFD}, + [I(67,125)] = {21,0x17BFFD}, + [I(68,125)] = {21,0x17FFFD}, + [I(69,125)] = {21,0x183FFD}, + [I(70,125)] = {21,0x187FFD}, + [I(71,125)] = {21,0x18BFFD}, + [I(72,125)] = {21,0x18FFFD}, + [I(73,125)] = {21,0x193FFD}, + [I(74,125)] = {21,0x197FFD}, + [I(75,125)] = {21,0x19BFFD}, + [I(76,125)] = {21,0x19FFFD}, + [I(77,125)] = {21,0x1A3FFD}, + [I(78,125)] = {21,0x1A7FFD}, + [I(79,125)] = {21,0x1ABFFD}, + [I(80,125)] = {21,0x1AFFFD}, + [I(81,125)] = {21,0x1B3FFD}, + [I(82,125)] = {21,0x1B7FFD}, + [I(83,125)] = {21,0x1BBFFD}, + [I(84,125)] = {21,0x1BFFFD}, + [I(85,125)] = {21,0x1C3FFD}, + [I(86,125)] = {21,0x1C7FFD}, + [I(87,125)] = {21,0x1CBFFD}, + [I(88,125)] = {22,0x3F3FFD}, + [I(89,125)] = {21,0x1CFFFD}, + [I(90,125)] = {22,0x3F7FFD}, + [I(91,125)] = {27,0x7FEFFFD}, + [I(92,125)] = {64,0}, + [I(93,125)] = {27,0x7FF3FFD}, + [I(94,125)] = {28,0xFFF3FFD}, + [I(95,125)] = {20,0x8BFFD}, + [I(96,125)] = {29,0x1FFF7FFD}, + [I(97,125)] = {19,0xFFFD}, + [I(98,125)] = {20,0x8FFFD}, + [I(99,125)] = {19,0x13FFD}, + [I(100,125)] = {20,0x93FFD}, + [I(101,125)] = {19,0x17FFD}, + [I(102,125)] = {20,0x97FFD}, + [I(103,125)] = {20,0x9BFFD}, + [I(104,125)] = {20,0x9FFFD}, + [I(105,125)] = {19,0x1BFFD}, + [I(106,125)] = {21,0x1D3FFD}, + [I(107,125)] = {21,0x1D7FFD}, + [I(108,125)] = {20,0xA3FFD}, + [I(109,125)] = {20,0xA7FFD}, + [I(110,125)] = {20,0xABFFD}, + [I(111,125)] = {19,0x1FFFD}, + [I(112,125)] = {20,0xAFFFD}, + [I(113,125)] = {21,0x1DBFFD}, + [I(114,125)] = {20,0xB3FFD}, + [I(115,125)] = {19,0x23FFD}, + [I(116,125)] = {19,0x27FFD}, + [I(117,125)] = {20,0xB7FFD}, + [I(118,125)] = {21,0x1DFFFD}, + [I(119,125)] = {21,0x1E3FFD}, + [I(120,125)] = {21,0x1E7FFD}, + [I(121,125)] = {21,0x1EBFFD}, + [I(122,125)] = {21,0x1EFFFD}, + [I(123,125)] = {29,0x1FFFBFFD}, + [I(124,125)] = {25,0x1FF3FFD}, + [I(125,125)] = {28,0xFFF7FFD}, + [I(126,125)] = {27,0x7FF7FFD}, + [I(127,125)] = {64,0}, + [I(128,125)] = {64,0}, + [I(129,125)] = {64,0}, + [I(130,125)] = {64,0}, + [I(131,125)] = {64,0}, + [I(132,125)] = {64,0}, + [I(133,125)] = {64,0}, + [I(134,125)] = {64,0}, + [I(135,125)] = {64,0}, + [I(136,125)] = {64,0}, + [I(137,125)] = {64,0}, + [I(138,125)] = {64,0}, + [I(139,125)] = {64,0}, + [I(140,125)] = {64,0}, + [I(141,125)] = {64,0}, + [I(142,125)] = {64,0}, + [I(143,125)] = {64,0}, + [I(144,125)] = {64,0}, + [I(145,125)] = {64,0}, + [I(146,125)] = {64,0}, + [I(147,125)] = {64,0}, + [I(148,125)] = {64,0}, + [I(149,125)] = {64,0}, + [I(150,125)] = {64,0}, + [I(151,125)] = {64,0}, + [I(152,125)] = {64,0}, + [I(153,125)] = {64,0}, + [I(154,125)] = {64,0}, + [I(155,125)] = {64,0}, + [I(156,125)] = {64,0}, + [I(157,125)] = {64,0}, + [I(158,125)] = {64,0}, + [I(159,125)] = {64,0}, + [I(160,125)] = {64,0}, + [I(161,125)] = {64,0}, + [I(162,125)] = {64,0}, + [I(163,125)] = {64,0}, + [I(164,125)] = {64,0}, + [I(165,125)] = {64,0}, + [I(166,125)] = {64,0}, + [I(167,125)] = {64,0}, + [I(168,125)] = {64,0}, + [I(169,125)] = {64,0}, + [I(170,125)] = {64,0}, + [I(171,125)] = {64,0}, + [I(172,125)] = {64,0}, + [I(173,125)] = {64,0}, + [I(174,125)] = {64,0}, + [I(175,125)] = {64,0}, + [I(176,125)] = {64,0}, + [I(177,125)] = {64,0}, + [I(178,125)] = {64,0}, + [I(179,125)] = {64,0}, + [I(180,125)] = {64,0}, + [I(181,125)] = {64,0}, + [I(182,125)] = {64,0}, + [I(183,125)] = {64,0}, + [I(184,125)] = {64,0}, + [I(185,125)] = {64,0}, + [I(186,125)] = {64,0}, + [I(187,125)] = {64,0}, + [I(188,125)] = {64,0}, + [I(189,125)] = {64,0}, + [I(190,125)] = {64,0}, + [I(191,125)] = {64,0}, + [I(192,125)] = {64,0}, + [I(193,125)] = {64,0}, + [I(194,125)] = {64,0}, + [I(195,125)] = {64,0}, + [I(196,125)] = {64,0}, + [I(197,125)] = {64,0}, + [I(198,125)] = {64,0}, + [I(199,125)] = {64,0}, + [I(200,125)] = {64,0}, + [I(201,125)] = {64,0}, + [I(202,125)] = {64,0}, + [I(203,125)] = {64,0}, + [I(204,125)] = {64,0}, + [I(205,125)] = {64,0}, + [I(206,125)] = {64,0}, + [I(207,125)] = {64,0}, + [I(208,125)] = {64,0}, + [I(209,125)] = {64,0}, + [I(210,125)] = {64,0}, + [I(211,125)] = {64,0}, + [I(212,125)] = {64,0}, + [I(213,125)] = {64,0}, + [I(214,125)] = {64,0}, + [I(215,125)] = {64,0}, + [I(216,125)] = {64,0}, + [I(217,125)] = {64,0}, + [I(218,125)] = {64,0}, + [I(219,125)] = {64,0}, + [I(220,125)] = {64,0}, + [I(221,125)] = {64,0}, + [I(222,125)] = {64,0}, + [I(223,125)] = {64,0}, + [I(224,125)] = {64,0}, + [I(225,125)] = {64,0}, + [I(226,125)] = {64,0}, + [I(227,125)] = {64,0}, + [I(228,125)] = {64,0}, + [I(229,125)] = {64,0}, + [I(230,125)] = {64,0}, + [I(231,125)] = {64,0}, + [I(232,125)] = {64,0}, + [I(233,125)] = {64,0}, + [I(234,125)] = {64,0}, + [I(235,125)] = {64,0}, + [I(236,125)] = {64,0}, + [I(237,125)] = {64,0}, + [I(238,125)] = {64,0}, + [I(239,125)] = {64,0}, + [I(240,125)] = {64,0}, + [I(241,125)] = {64,0}, + [I(242,125)] = {64,0}, + [I(243,125)] = {64,0}, + [I(244,125)] = {64,0}, + [I(245,125)] = {64,0}, + [I(246,125)] = {64,0}, + [I(247,125)] = {64,0}, + [I(248,125)] = {64,0}, + [I(249,125)] = {64,0}, + [I(250,125)] = {64,0}, + [I(251,125)] = {64,0}, + [I(252,125)] = {64,0}, + [I(253,125)] = {64,0}, + [I(254,125)] = {64,0}, + [I(255,125)] = {64,0}, + [I(0,126)] = {26,0x3FF1FFD}, + [I(1,126)] = {64,0}, + [I(2,126)] = {64,0}, + [I(3,126)] = {64,0}, + [I(4,126)] = {64,0}, + [I(5,126)] = {64,0}, + [I(6,126)] = {64,0}, + [I(7,126)] = {64,0}, + [I(8,126)] = {64,0}, + [I(9,126)] = {64,0}, + [I(10,126)] = {64,0}, + [I(11,126)] = {64,0}, + [I(12,126)] = {64,0}, + [I(13,126)] = {64,0}, + [I(14,126)] = {64,0}, + [I(15,126)] = {64,0}, + [I(16,126)] = {64,0}, + [I(17,126)] = {64,0}, + [I(18,126)] = {64,0}, + [I(19,126)] = {64,0}, + [I(20,126)] = {64,0}, + [I(21,126)] = {64,0}, + [I(22,126)] = {64,0}, + [I(23,126)] = {64,0}, + [I(24,126)] = {64,0}, + [I(25,126)] = {64,0}, + [I(26,126)] = {64,0}, + [I(27,126)] = {64,0}, + [I(28,126)] = {64,0}, + [I(29,126)] = {64,0}, + [I(30,126)] = {64,0}, + [I(31,126)] = {64,0}, + [I(32,126)] = {19,0x29FFD}, + [I(33,126)] = {23,0x7F1FFD}, + [I(34,126)] = {23,0x7F3FFD}, + [I(35,126)] = {25,0x1FF5FFD}, + [I(36,126)] = {26,0x3FF3FFD}, + [I(37,126)] = {19,0x2BFFD}, + [I(38,126)] = {21,0x1F1FFD}, + [I(39,126)] = {24,0xFF5FFD}, + [I(40,126)] = {23,0x7F5FFD}, + [I(41,126)] = {23,0x7F7FFD}, + [I(42,126)] = {21,0x1F3FFD}, + [I(43,126)] = {24,0xFF7FFD}, + [I(44,126)] = {21,0x1F5FFD}, + [I(45,126)] = {19,0x2DFFD}, + [I(46,126)] = {19,0x2FFFD}, + [I(47,126)] = {19,0x31FFD}, + [I(48,126)] = {18,0x1FFD}, + [I(49,126)] = {18,0x3FFD}, + [I(50,126)] = {18,0x5FFD}, + [I(51,126)] = {19,0x33FFD}, + [I(52,126)] = {19,0x35FFD}, + [I(53,126)] = {19,0x37FFD}, + [I(54,126)] = {19,0x39FFD}, + [I(55,126)] = {19,0x3BFFD}, + [I(56,126)] = {19,0x3DFFD}, + [I(57,126)] = {19,0x3FFFD}, + [I(58,126)] = {20,0xB9FFD}, + [I(59,126)] = {21,0x1F7FFD}, + [I(60,126)] = {28,0xFFF9FFD}, + [I(61,126)] = {19,0x41FFD}, + [I(62,126)] = {25,0x1FF7FFD}, + [I(63,126)] = {23,0x7F9FFD}, + [I(64,126)] = {26,0x3FF5FFD}, + [I(65,126)] = {19,0x43FFD}, + [I(66,126)] = {20,0xBBFFD}, + [I(67,126)] = {20,0xBDFFD}, + [I(68,126)] = {20,0xBFFFD}, + [I(69,126)] = {20,0xC1FFD}, + [I(70,126)] = {20,0xC3FFD}, + [I(71,126)] = {20,0xC5FFD}, + [I(72,126)] = {20,0xC7FFD}, + [I(73,126)] = {20,0xC9FFD}, + [I(74,126)] = {20,0xCBFFD}, + [I(75,126)] = {20,0xCDFFD}, + [I(76,126)] = {20,0xCFFFD}, + [I(77,126)] = {20,0xD1FFD}, + [I(78,126)] = {20,0xD3FFD}, + [I(79,126)] = {20,0xD5FFD}, + [I(80,126)] = {20,0xD7FFD}, + [I(81,126)] = {20,0xD9FFD}, + [I(82,126)] = {20,0xDBFFD}, + [I(83,126)] = {20,0xDDFFD}, + [I(84,126)] = {20,0xDFFFD}, + [I(85,126)] = {20,0xE1FFD}, + [I(86,126)] = {20,0xE3FFD}, + [I(87,126)] = {20,0xE5FFD}, + [I(88,126)] = {21,0x1F9FFD}, + [I(89,126)] = {20,0xE7FFD}, + [I(90,126)] = {21,0x1FBFFD}, + [I(91,126)] = {26,0x3FF7FFD}, + [I(92,126)] = {X32,0xFFFE1FFD}, + [I(93,126)] = {26,0x3FF9FFD}, + [I(94,126)] = {27,0x7FF9FFD}, + [I(95,126)] = {19,0x45FFD}, + [I(96,126)] = {28,0xFFFBFFD}, + [I(97,126)] = {18,0x7FFD}, + [I(98,126)] = {19,0x47FFD}, + [I(99,126)] = {18,0x9FFD}, + [I(100,126)] = {19,0x49FFD}, + [I(101,126)] = {18,0xBFFD}, + [I(102,126)] = {19,0x4BFFD}, + [I(103,126)] = {19,0x4DFFD}, + [I(104,126)] = {19,0x4FFFD}, + [I(105,126)] = {18,0xDFFD}, + [I(106,126)] = {20,0xE9FFD}, + [I(107,126)] = {20,0xEBFFD}, + [I(108,126)] = {19,0x51FFD}, + [I(109,126)] = {19,0x53FFD}, + [I(110,126)] = {19,0x55FFD}, + [I(111,126)] = {18,0xFFFD}, + [I(112,126)] = {19,0x57FFD}, + [I(113,126)] = {20,0xEDFFD}, + [I(114,126)] = {19,0x59FFD}, + [I(115,126)] = {18,0x11FFD}, + [I(116,126)] = {18,0x13FFD}, + [I(117,126)] = {19,0x5BFFD}, + [I(118,126)] = {20,0xEFFFD}, + [I(119,126)] = {20,0xF1FFD}, + [I(120,126)] = {20,0xF3FFD}, + [I(121,126)] = {20,0xF5FFD}, + [I(122,126)] = {20,0xF7FFD}, + [I(123,126)] = {28,0xFFFDFFD}, + [I(124,126)] = {24,0xFF9FFD}, + [I(125,126)] = {27,0x7FFBFFD}, + [I(126,126)] = {26,0x3FFBFFD}, + [I(127,126)] = {64,0}, + [I(128,126)] = {64,0}, + [I(129,126)] = {64,0}, + [I(130,126)] = {64,0}, + [I(131,126)] = {64,0}, + [I(132,126)] = {64,0}, + [I(133,126)] = {64,0}, + [I(134,126)] = {64,0}, + [I(135,126)] = {64,0}, + [I(136,126)] = {64,0}, + [I(137,126)] = {64,0}, + [I(138,126)] = {64,0}, + [I(139,126)] = {64,0}, + [I(140,126)] = {64,0}, + [I(141,126)] = {64,0}, + [I(142,126)] = {64,0}, + [I(143,126)] = {64,0}, + [I(144,126)] = {64,0}, + [I(145,126)] = {64,0}, + [I(146,126)] = {64,0}, + [I(147,126)] = {64,0}, + [I(148,126)] = {64,0}, + [I(149,126)] = {64,0}, + [I(150,126)] = {64,0}, + [I(151,126)] = {64,0}, + [I(152,126)] = {64,0}, + [I(153,126)] = {64,0}, + [I(154,126)] = {64,0}, + [I(155,126)] = {64,0}, + [I(156,126)] = {64,0}, + [I(157,126)] = {64,0}, + [I(158,126)] = {64,0}, + [I(159,126)] = {64,0}, + [I(160,126)] = {64,0}, + [I(161,126)] = {64,0}, + [I(162,126)] = {64,0}, + [I(163,126)] = {64,0}, + [I(164,126)] = {64,0}, + [I(165,126)] = {64,0}, + [I(166,126)] = {64,0}, + [I(167,126)] = {64,0}, + [I(168,126)] = {64,0}, + [I(169,126)] = {64,0}, + [I(170,126)] = {64,0}, + [I(171,126)] = {64,0}, + [I(172,126)] = {64,0}, + [I(173,126)] = {64,0}, + [I(174,126)] = {64,0}, + [I(175,126)] = {64,0}, + [I(176,126)] = {64,0}, + [I(177,126)] = {64,0}, + [I(178,126)] = {64,0}, + [I(179,126)] = {64,0}, + [I(180,126)] = {64,0}, + [I(181,126)] = {64,0}, + [I(182,126)] = {64,0}, + [I(183,126)] = {64,0}, + [I(184,126)] = {64,0}, + [I(185,126)] = {64,0}, + [I(186,126)] = {64,0}, + [I(187,126)] = {64,0}, + [I(188,126)] = {64,0}, + [I(189,126)] = {64,0}, + [I(190,126)] = {64,0}, + [I(191,126)] = {64,0}, + [I(192,126)] = {64,0}, + [I(193,126)] = {64,0}, + [I(194,126)] = {64,0}, + [I(195,126)] = {X32,0xFFFE3FFD}, + [I(196,126)] = {64,0}, + [I(197,126)] = {64,0}, + [I(198,126)] = {64,0}, + [I(199,126)] = {64,0}, + [I(200,126)] = {64,0}, + [I(201,126)] = {64,0}, + [I(202,126)] = {64,0}, + [I(203,126)] = {64,0}, + [I(204,126)] = {64,0}, + [I(205,126)] = {64,0}, + [I(206,126)] = {64,0}, + [I(207,126)] = {64,0}, + [I(208,126)] = {X32,0xFFFE5FFD}, + [I(209,126)] = {64,0}, + [I(210,126)] = {64,0}, + [I(211,126)] = {64,0}, + [I(212,126)] = {64,0}, + [I(213,126)] = {64,0}, + [I(214,126)] = {64,0}, + [I(215,126)] = {64,0}, + [I(216,126)] = {64,0}, + [I(217,126)] = {64,0}, + [I(218,126)] = {64,0}, + [I(219,126)] = {64,0}, + [I(220,126)] = {64,0}, + [I(221,126)] = {64,0}, + [I(222,126)] = {64,0}, + [I(223,126)] = {64,0}, + [I(224,126)] = {64,0}, + [I(225,126)] = {64,0}, + [I(226,126)] = {64,0}, + [I(227,126)] = {64,0}, + [I(228,126)] = {64,0}, + [I(229,126)] = {64,0}, + [I(230,126)] = {64,0}, + [I(231,126)] = {64,0}, + [I(232,126)] = {64,0}, + [I(233,126)] = {64,0}, + [I(234,126)] = {64,0}, + [I(235,126)] = {64,0}, + [I(236,126)] = {64,0}, + [I(237,126)] = {64,0}, + [I(238,126)] = {64,0}, + [I(239,126)] = {64,0}, + [I(240,126)] = {64,0}, + [I(241,126)] = {64,0}, + [I(242,126)] = {64,0}, + [I(243,126)] = {64,0}, + [I(244,126)] = {64,0}, + [I(245,126)] = {64,0}, + [I(246,126)] = {64,0}, + [I(247,126)] = {64,0}, + [I(248,126)] = {64,0}, + [I(249,126)] = {64,0}, + [I(250,126)] = {64,0}, + [I(251,126)] = {64,0}, + [I(252,126)] = {64,0}, + [I(253,126)] = {64,0}, + [I(254,126)] = {64,0}, + [I(255,126)] = {64,0}, + [I(0,127)] = {64,0}, + [I(1,127)] = {64,0}, + [I(2,127)] = {64,0}, + [I(3,127)] = {64,0}, + [I(4,127)] = {64,0}, + [I(5,127)] = {64,0}, + [I(6,127)] = {64,0}, + [I(7,127)] = {64,0}, + [I(8,127)] = {64,0}, + [I(9,127)] = {64,0}, + [I(10,127)] = {64,0}, + [I(11,127)] = {64,0}, + [I(12,127)] = {64,0}, + [I(13,127)] = {64,0}, + [I(14,127)] = {64,0}, + [I(15,127)] = {64,0}, + [I(16,127)] = {64,0}, + [I(17,127)] = {64,0}, + [I(18,127)] = {64,0}, + [I(19,127)] = {64,0}, + [I(20,127)] = {64,0}, + [I(21,127)] = {64,0}, + [I(22,127)] = {64,0}, + [I(23,127)] = {64,0}, + [I(24,127)] = {64,0}, + [I(25,127)] = {64,0}, + [I(26,127)] = {64,0}, + [I(27,127)] = {64,0}, + [I(28,127)] = {64,0}, + [I(29,127)] = {64,0}, + [I(30,127)] = {64,0}, + [I(31,127)] = {64,0}, + [I(32,127)] = {64,0}, + [I(33,127)] = {64,0}, + [I(34,127)] = {64,0}, + [I(35,127)] = {64,0}, + [I(36,127)] = {64,0}, + [I(37,127)] = {64,0}, + [I(38,127)] = {64,0}, + [I(39,127)] = {64,0}, + [I(40,127)] = {64,0}, + [I(41,127)] = {64,0}, + [I(42,127)] = {64,0}, + [I(43,127)] = {64,0}, + [I(44,127)] = {64,0}, + [I(45,127)] = {64,0}, + [I(46,127)] = {64,0}, + [I(47,127)] = {64,0}, + [I(48,127)] = {64,0}, + [I(49,127)] = {64,0}, + [I(50,127)] = {64,0}, + [I(51,127)] = {64,0}, + [I(52,127)] = {64,0}, + [I(53,127)] = {64,0}, + [I(54,127)] = {64,0}, + [I(55,127)] = {64,0}, + [I(56,127)] = {64,0}, + [I(57,127)] = {64,0}, + [I(58,127)] = {64,0}, + [I(59,127)] = {64,0}, + [I(60,127)] = {64,0}, + [I(61,127)] = {64,0}, + [I(62,127)] = {64,0}, + [I(63,127)] = {64,0}, + [I(64,127)] = {64,0}, + [I(65,127)] = {64,0}, + [I(66,127)] = {64,0}, + [I(67,127)] = {64,0}, + [I(68,127)] = {64,0}, + [I(69,127)] = {64,0}, + [I(70,127)] = {64,0}, + [I(71,127)] = {64,0}, + [I(72,127)] = {64,0}, + [I(73,127)] = {64,0}, + [I(74,127)] = {64,0}, + [I(75,127)] = {64,0}, + [I(76,127)] = {64,0}, + [I(77,127)] = {64,0}, + [I(78,127)] = {64,0}, + [I(79,127)] = {64,0}, + [I(80,127)] = {64,0}, + [I(81,127)] = {64,0}, + [I(82,127)] = {64,0}, + [I(83,127)] = {64,0}, + [I(84,127)] = {64,0}, + [I(85,127)] = {64,0}, + [I(86,127)] = {64,0}, + [I(87,127)] = {64,0}, + [I(88,127)] = {64,0}, + [I(89,127)] = {64,0}, + [I(90,127)] = {64,0}, + [I(91,127)] = {64,0}, + [I(92,127)] = {64,0}, + [I(93,127)] = {64,0}, + [I(94,127)] = {64,0}, + [I(95,127)] = {64,0}, + [I(96,127)] = {64,0}, + [I(97,127)] = {64,0}, + [I(98,127)] = {64,0}, + [I(99,127)] = {64,0}, + [I(100,127)] = {64,0}, + [I(101,127)] = {64,0}, + [I(102,127)] = {64,0}, + [I(103,127)] = {64,0}, + [I(104,127)] = {64,0}, + [I(105,127)] = {64,0}, + [I(106,127)] = {64,0}, + [I(107,127)] = {64,0}, + [I(108,127)] = {64,0}, + [I(109,127)] = {64,0}, + [I(110,127)] = {64,0}, + [I(111,127)] = {64,0}, + [I(112,127)] = {64,0}, + [I(113,127)] = {64,0}, + [I(114,127)] = {64,0}, + [I(115,127)] = {64,0}, + [I(116,127)] = {64,0}, + [I(117,127)] = {64,0}, + [I(118,127)] = {64,0}, + [I(119,127)] = {64,0}, + [I(120,127)] = {64,0}, + [I(121,127)] = {64,0}, + [I(122,127)] = {64,0}, + [I(123,127)] = {64,0}, + [I(124,127)] = {64,0}, + [I(125,127)] = {64,0}, + [I(126,127)] = {64,0}, + [I(127,127)] = {64,0}, + [I(128,127)] = {64,0}, + [I(129,127)] = {64,0}, + [I(130,127)] = {64,0}, + [I(131,127)] = {64,0}, + [I(132,127)] = {64,0}, + [I(133,127)] = {64,0}, + [I(134,127)] = {64,0}, + [I(135,127)] = {64,0}, + [I(136,127)] = {64,0}, + [I(137,127)] = {64,0}, + [I(138,127)] = {64,0}, + [I(139,127)] = {64,0}, + [I(140,127)] = {64,0}, + [I(141,127)] = {64,0}, + [I(142,127)] = {64,0}, + [I(143,127)] = {64,0}, + [I(144,127)] = {64,0}, + [I(145,127)] = {64,0}, + [I(146,127)] = {64,0}, + [I(147,127)] = {64,0}, + [I(148,127)] = {64,0}, + [I(149,127)] = {64,0}, + [I(150,127)] = {64,0}, + [I(151,127)] = {64,0}, + [I(152,127)] = {64,0}, + [I(153,127)] = {64,0}, + [I(154,127)] = {64,0}, + [I(155,127)] = {64,0}, + [I(156,127)] = {64,0}, + [I(157,127)] = {64,0}, + [I(158,127)] = {64,0}, + [I(159,127)] = {64,0}, + [I(160,127)] = {64,0}, + [I(161,127)] = {64,0}, + [I(162,127)] = {64,0}, + [I(163,127)] = {64,0}, + [I(164,127)] = {64,0}, + [I(165,127)] = {64,0}, + [I(166,127)] = {64,0}, + [I(167,127)] = {64,0}, + [I(168,127)] = {64,0}, + [I(169,127)] = {64,0}, + [I(170,127)] = {64,0}, + [I(171,127)] = {64,0}, + [I(172,127)] = {64,0}, + [I(173,127)] = {64,0}, + [I(174,127)] = {64,0}, + [I(175,127)] = {64,0}, + [I(176,127)] = {64,0}, + [I(177,127)] = {64,0}, + [I(178,127)] = {64,0}, + [I(179,127)] = {64,0}, + [I(180,127)] = {64,0}, + [I(181,127)] = {64,0}, + [I(182,127)] = {64,0}, + [I(183,127)] = {64,0}, + [I(184,127)] = {64,0}, + [I(185,127)] = {64,0}, + [I(186,127)] = {64,0}, + [I(187,127)] = {64,0}, + [I(188,127)] = {64,0}, + [I(189,127)] = {64,0}, + [I(190,127)] = {64,0}, + [I(191,127)] = {64,0}, + [I(192,127)] = {64,0}, + [I(193,127)] = {64,0}, + [I(194,127)] = {64,0}, + [I(195,127)] = {64,0}, + [I(196,127)] = {64,0}, + [I(197,127)] = {64,0}, + [I(198,127)] = {64,0}, + [I(199,127)] = {64,0}, + [I(200,127)] = {64,0}, + [I(201,127)] = {64,0}, + [I(202,127)] = {64,0}, + [I(203,127)] = {64,0}, + [I(204,127)] = {64,0}, + [I(205,127)] = {64,0}, + [I(206,127)] = {64,0}, + [I(207,127)] = {64,0}, + [I(208,127)] = {64,0}, + [I(209,127)] = {64,0}, + [I(210,127)] = {64,0}, + [I(211,127)] = {64,0}, + [I(212,127)] = {64,0}, + [I(213,127)] = {64,0}, + [I(214,127)] = {64,0}, + [I(215,127)] = {64,0}, + [I(216,127)] = {64,0}, + [I(217,127)] = {64,0}, + [I(218,127)] = {64,0}, + [I(219,127)] = {64,0}, + [I(220,127)] = {64,0}, + [I(221,127)] = {64,0}, + [I(222,127)] = {64,0}, + [I(223,127)] = {64,0}, + [I(224,127)] = {64,0}, + [I(225,127)] = {64,0}, + [I(226,127)] = {64,0}, + [I(227,127)] = {64,0}, + [I(228,127)] = {64,0}, + [I(229,127)] = {64,0}, + [I(230,127)] = {64,0}, + [I(231,127)] = {64,0}, + [I(232,127)] = {64,0}, + [I(233,127)] = {64,0}, + [I(234,127)] = {64,0}, + [I(235,127)] = {64,0}, + [I(236,127)] = {64,0}, + [I(237,127)] = {64,0}, + [I(238,127)] = {64,0}, + [I(239,127)] = {64,0}, + [I(240,127)] = {64,0}, + [I(241,127)] = {64,0}, + [I(242,127)] = {64,0}, + [I(243,127)] = {64,0}, + [I(244,127)] = {64,0}, + [I(245,127)] = {64,0}, + [I(246,127)] = {64,0}, + [I(247,127)] = {64,0}, + [I(248,127)] = {64,0}, + [I(249,127)] = {64,0}, + [I(250,127)] = {64,0}, + [I(251,127)] = {64,0}, + [I(252,127)] = {64,0}, + [I(253,127)] = {64,0}, + [I(254,127)] = {64,0}, + [I(255,127)] = {64,0}, + [I(0,128)] = {64,0}, + [I(1,128)] = {64,0}, + [I(2,128)] = {64,0}, + [I(3,128)] = {64,0}, + [I(4,128)] = {64,0}, + [I(5,128)] = {64,0}, + [I(6,128)] = {64,0}, + [I(7,128)] = {64,0}, + [I(8,128)] = {64,0}, + [I(9,128)] = {64,0}, + [I(10,128)] = {64,0}, + [I(11,128)] = {64,0}, + [I(12,128)] = {64,0}, + [I(13,128)] = {64,0}, + [I(14,128)] = {64,0}, + [I(15,128)] = {64,0}, + [I(16,128)] = {64,0}, + [I(17,128)] = {64,0}, + [I(18,128)] = {64,0}, + [I(19,128)] = {64,0}, + [I(20,128)] = {64,0}, + [I(21,128)] = {64,0}, + [I(22,128)] = {64,0}, + [I(23,128)] = {64,0}, + [I(24,128)] = {64,0}, + [I(25,128)] = {64,0}, + [I(26,128)] = {64,0}, + [I(27,128)] = {64,0}, + [I(28,128)] = {64,0}, + [I(29,128)] = {64,0}, + [I(30,128)] = {64,0}, + [I(31,128)] = {64,0}, + [I(32,128)] = {26,0x14FFFE6}, + [I(33,128)] = {30,0x3F8FFFE6}, + [I(34,128)] = {30,0x3F9FFFE6}, + [I(35,128)] = {X32,0xFFAFFFE6}, + [I(36,128)] = {64,0}, + [I(37,128)] = {26,0x15FFFE6}, + [I(38,128)] = {28,0xF8FFFE6}, + [I(39,128)] = {31,0x7FAFFFE6}, + [I(40,128)] = {30,0x3FAFFFE6}, + [I(41,128)] = {30,0x3FBFFFE6}, + [I(42,128)] = {28,0xF9FFFE6}, + [I(43,128)] = {31,0x7FBFFFE6}, + [I(44,128)] = {28,0xFAFFFE6}, + [I(45,128)] = {26,0x16FFFE6}, + [I(46,128)] = {26,0x17FFFE6}, + [I(47,128)] = {26,0x18FFFE6}, + [I(48,128)] = {25,0xFFFE6}, + [I(49,128)] = {25,0x1FFFE6}, + [I(50,128)] = {25,0x2FFFE6}, + [I(51,128)] = {26,0x19FFFE6}, + [I(52,128)] = {26,0x1AFFFE6}, + [I(53,128)] = {26,0x1BFFFE6}, + [I(54,128)] = {26,0x1CFFFE6}, + [I(55,128)] = {26,0x1DFFFE6}, + [I(56,128)] = {26,0x1EFFFE6}, + [I(57,128)] = {26,0x1FFFFE6}, + [I(58,128)] = {27,0x5CFFFE6}, + [I(59,128)] = {28,0xFBFFFE6}, + [I(60,128)] = {64,0}, + [I(61,128)] = {26,0x20FFFE6}, + [I(62,128)] = {X32,0xFFBFFFE6}, + [I(63,128)] = {30,0x3FCFFFE6}, + [I(64,128)] = {64,0}, + [I(65,128)] = {26,0x21FFFE6}, + [I(66,128)] = {27,0x5DFFFE6}, + [I(67,128)] = {27,0x5EFFFE6}, + [I(68,128)] = {27,0x5FFFFE6}, + [I(69,128)] = {27,0x60FFFE6}, + [I(70,128)] = {27,0x61FFFE6}, + [I(71,128)] = {27,0x62FFFE6}, + [I(72,128)] = {27,0x63FFFE6}, + [I(73,128)] = {27,0x64FFFE6}, + [I(74,128)] = {27,0x65FFFE6}, + [I(75,128)] = {27,0x66FFFE6}, + [I(76,128)] = {27,0x67FFFE6}, + [I(77,128)] = {27,0x68FFFE6}, + [I(78,128)] = {27,0x69FFFE6}, + [I(79,128)] = {27,0x6AFFFE6}, + [I(80,128)] = {27,0x6BFFFE6}, + [I(81,128)] = {27,0x6CFFFE6}, + [I(82,128)] = {27,0x6DFFFE6}, + [I(83,128)] = {27,0x6EFFFE6}, + [I(84,128)] = {27,0x6FFFFE6}, + [I(85,128)] = {27,0x70FFFE6}, + [I(86,128)] = {27,0x71FFFE6}, + [I(87,128)] = {27,0x72FFFE6}, + [I(88,128)] = {28,0xFCFFFE6}, + [I(89,128)] = {27,0x73FFFE6}, + [I(90,128)] = {28,0xFDFFFE6}, + [I(91,128)] = {64,0}, + [I(92,128)] = {64,0}, + [I(93,128)] = {64,0}, + [I(94,128)] = {64,0}, + [I(95,128)] = {26,0x22FFFE6}, + [I(96,128)] = {64,0}, + [I(97,128)] = {25,0x3FFFE6}, + [I(98,128)] = {26,0x23FFFE6}, + [I(99,128)] = {25,0x4FFFE6}, + [I(100,128)] = {26,0x24FFFE6}, + [I(101,128)] = {25,0x5FFFE6}, + [I(102,128)] = {26,0x25FFFE6}, + [I(103,128)] = {26,0x26FFFE6}, + [I(104,128)] = {26,0x27FFFE6}, + [I(105,128)] = {25,0x6FFFE6}, + [I(106,128)] = {27,0x74FFFE6}, + [I(107,128)] = {27,0x75FFFE6}, + [I(108,128)] = {26,0x28FFFE6}, + [I(109,128)] = {26,0x29FFFE6}, + [I(110,128)] = {26,0x2AFFFE6}, + [I(111,128)] = {25,0x7FFFE6}, + [I(112,128)] = {26,0x2BFFFE6}, + [I(113,128)] = {27,0x76FFFE6}, + [I(114,128)] = {26,0x2CFFFE6}, + [I(115,128)] = {25,0x8FFFE6}, + [I(116,128)] = {25,0x9FFFE6}, + [I(117,128)] = {26,0x2DFFFE6}, + [I(118,128)] = {27,0x77FFFE6}, + [I(119,128)] = {27,0x78FFFE6}, + [I(120,128)] = {27,0x79FFFE6}, + [I(121,128)] = {27,0x7AFFFE6}, + [I(122,128)] = {27,0x7BFFFE6}, + [I(123,128)] = {64,0}, + [I(124,128)] = {31,0x7FCFFFE6}, + [I(125,128)] = {64,0}, + [I(126,128)] = {64,0}, + [I(127,128)] = {64,0}, + [I(128,128)] = {64,0}, + [I(129,128)] = {64,0}, + [I(130,128)] = {64,0}, + [I(131,128)] = {64,0}, + [I(132,128)] = {64,0}, + [I(133,128)] = {64,0}, + [I(134,128)] = {64,0}, + [I(135,128)] = {64,0}, + [I(136,128)] = {64,0}, + [I(137,128)] = {64,0}, + [I(138,128)] = {64,0}, + [I(139,128)] = {64,0}, + [I(140,128)] = {64,0}, + [I(141,128)] = {64,0}, + [I(142,128)] = {64,0}, + [I(143,128)] = {64,0}, + [I(144,128)] = {64,0}, + [I(145,128)] = {64,0}, + [I(146,128)] = {64,0}, + [I(147,128)] = {64,0}, + [I(148,128)] = {64,0}, + [I(149,128)] = {64,0}, + [I(150,128)] = {64,0}, + [I(151,128)] = {64,0}, + [I(152,128)] = {64,0}, + [I(153,128)] = {64,0}, + [I(154,128)] = {64,0}, + [I(155,128)] = {64,0}, + [I(156,128)] = {64,0}, + [I(157,128)] = {64,0}, + [I(158,128)] = {64,0}, + [I(159,128)] = {64,0}, + [I(160,128)] = {64,0}, + [I(161,128)] = {64,0}, + [I(162,128)] = {64,0}, + [I(163,128)] = {64,0}, + [I(164,128)] = {64,0}, + [I(165,128)] = {64,0}, + [I(166,128)] = {64,0}, + [I(167,128)] = {64,0}, + [I(168,128)] = {64,0}, + [I(169,128)] = {64,0}, + [I(170,128)] = {64,0}, + [I(171,128)] = {64,0}, + [I(172,128)] = {64,0}, + [I(173,128)] = {64,0}, + [I(174,128)] = {64,0}, + [I(175,128)] = {64,0}, + [I(176,128)] = {64,0}, + [I(177,128)] = {64,0}, + [I(178,128)] = {64,0}, + [I(179,128)] = {64,0}, + [I(180,128)] = {64,0}, + [I(181,128)] = {64,0}, + [I(182,128)] = {64,0}, + [I(183,128)] = {64,0}, + [I(184,128)] = {64,0}, + [I(185,128)] = {64,0}, + [I(186,128)] = {64,0}, + [I(187,128)] = {64,0}, + [I(188,128)] = {64,0}, + [I(189,128)] = {64,0}, + [I(190,128)] = {64,0}, + [I(191,128)] = {64,0}, + [I(192,128)] = {64,0}, + [I(193,128)] = {64,0}, + [I(194,128)] = {64,0}, + [I(195,128)] = {64,0}, + [I(196,128)] = {64,0}, + [I(197,128)] = {64,0}, + [I(198,128)] = {64,0}, + [I(199,128)] = {64,0}, + [I(200,128)] = {64,0}, + [I(201,128)] = {64,0}, + [I(202,128)] = {64,0}, + [I(203,128)] = {64,0}, + [I(204,128)] = {64,0}, + [I(205,128)] = {64,0}, + [I(206,128)] = {64,0}, + [I(207,128)] = {64,0}, + [I(208,128)] = {64,0}, + [I(209,128)] = {64,0}, + [I(210,128)] = {64,0}, + [I(211,128)] = {64,0}, + [I(212,128)] = {64,0}, + [I(213,128)] = {64,0}, + [I(214,128)] = {64,0}, + [I(215,128)] = {64,0}, + [I(216,128)] = {64,0}, + [I(217,128)] = {64,0}, + [I(218,128)] = {64,0}, + [I(219,128)] = {64,0}, + [I(220,128)] = {64,0}, + [I(221,128)] = {64,0}, + [I(222,128)] = {64,0}, + [I(223,128)] = {64,0}, + [I(224,128)] = {64,0}, + [I(225,128)] = {64,0}, + [I(226,128)] = {64,0}, + [I(227,128)] = {64,0}, + [I(228,128)] = {64,0}, + [I(229,128)] = {64,0}, + [I(230,128)] = {64,0}, + [I(231,128)] = {64,0}, + [I(232,128)] = {64,0}, + [I(233,128)] = {64,0}, + [I(234,128)] = {64,0}, + [I(235,128)] = {64,0}, + [I(236,128)] = {64,0}, + [I(237,128)] = {64,0}, + [I(238,128)] = {64,0}, + [I(239,128)] = {64,0}, + [I(240,128)] = {64,0}, + [I(241,128)] = {64,0}, + [I(242,128)] = {64,0}, + [I(243,128)] = {64,0}, + [I(244,128)] = {64,0}, + [I(245,128)] = {64,0}, + [I(246,128)] = {64,0}, + [I(247,128)] = {64,0}, + [I(248,128)] = {64,0}, + [I(249,128)] = {64,0}, + [I(250,128)] = {64,0}, + [I(251,128)] = {64,0}, + [I(252,128)] = {64,0}, + [I(253,128)] = {64,0}, + [I(254,128)] = {64,0}, + [I(255,128)] = {64,0}, + [I(0,129)] = {64,0}, + [I(1,129)] = {64,0}, + [I(2,129)] = {64,0}, + [I(3,129)] = {64,0}, + [I(4,129)] = {64,0}, + [I(5,129)] = {64,0}, + [I(6,129)] = {64,0}, + [I(7,129)] = {64,0}, + [I(8,129)] = {64,0}, + [I(9,129)] = {64,0}, + [I(10,129)] = {64,0}, + [I(11,129)] = {64,0}, + [I(12,129)] = {64,0}, + [I(13,129)] = {64,0}, + [I(14,129)] = {64,0}, + [I(15,129)] = {64,0}, + [I(16,129)] = {64,0}, + [I(17,129)] = {64,0}, + [I(18,129)] = {64,0}, + [I(19,129)] = {64,0}, + [I(20,129)] = {64,0}, + [I(21,129)] = {64,0}, + [I(22,129)] = {64,0}, + [I(23,129)] = {64,0}, + [I(24,129)] = {64,0}, + [I(25,129)] = {64,0}, + [I(26,129)] = {64,0}, + [I(27,129)] = {64,0}, + [I(28,129)] = {64,0}, + [I(29,129)] = {64,0}, + [I(30,129)] = {64,0}, + [I(31,129)] = {64,0}, + [I(32,129)] = {28,0x53FFFD2}, + [I(33,129)] = {X32,0xFE3FFFD2}, + [I(34,129)] = {X32,0xFE7FFFD2}, + [I(35,129)] = {64,0}, + [I(36,129)] = {64,0}, + [I(37,129)] = {28,0x57FFFD2}, + [I(38,129)] = {30,0x3E3FFFD2}, + [I(39,129)] = {64,0}, + [I(40,129)] = {X32,0xFEBFFFD2}, + [I(41,129)] = {X32,0xFEFFFFD2}, + [I(42,129)] = {30,0x3E7FFFD2}, + [I(43,129)] = {64,0}, + [I(44,129)] = {30,0x3EBFFFD2}, + [I(45,129)] = {28,0x5BFFFD2}, + [I(46,129)] = {28,0x5FFFFD2}, + [I(47,129)] = {28,0x63FFFD2}, + [I(48,129)] = {27,0x3FFFD2}, + [I(49,129)] = {27,0x7FFFD2}, + [I(50,129)] = {27,0xBFFFD2}, + [I(51,129)] = {28,0x67FFFD2}, + [I(52,129)] = {28,0x6BFFFD2}, + [I(53,129)] = {28,0x6FFFFD2}, + [I(54,129)] = {28,0x73FFFD2}, + [I(55,129)] = {28,0x77FFFD2}, + [I(56,129)] = {28,0x7BFFFD2}, + [I(57,129)] = {28,0x7FFFFD2}, + [I(58,129)] = {29,0x173FFFD2}, + [I(59,129)] = {30,0x3EFFFFD2}, + [I(60,129)] = {64,0}, + [I(61,129)] = {28,0x83FFFD2}, + [I(62,129)] = {64,0}, + [I(63,129)] = {X32,0xFF3FFFD2}, + [I(64,129)] = {64,0}, + [I(65,129)] = {28,0x87FFFD2}, + [I(66,129)] = {29,0x177FFFD2}, + [I(67,129)] = {29,0x17BFFFD2}, + [I(68,129)] = {29,0x17FFFFD2}, + [I(69,129)] = {29,0x183FFFD2}, + [I(70,129)] = {29,0x187FFFD2}, + [I(71,129)] = {29,0x18BFFFD2}, + [I(72,129)] = {29,0x18FFFFD2}, + [I(73,129)] = {29,0x193FFFD2}, + [I(74,129)] = {29,0x197FFFD2}, + [I(75,129)] = {29,0x19BFFFD2}, + [I(76,129)] = {29,0x19FFFFD2}, + [I(77,129)] = {29,0x1A3FFFD2}, + [I(78,129)] = {29,0x1A7FFFD2}, + [I(79,129)] = {29,0x1ABFFFD2}, + [I(80,129)] = {29,0x1AFFFFD2}, + [I(81,129)] = {29,0x1B3FFFD2}, + [I(82,129)] = {29,0x1B7FFFD2}, + [I(83,129)] = {29,0x1BBFFFD2}, + [I(84,129)] = {29,0x1BFFFFD2}, + [I(85,129)] = {29,0x1C3FFFD2}, + [I(86,129)] = {29,0x1C7FFFD2}, + [I(87,129)] = {29,0x1CBFFFD2}, + [I(88,129)] = {30,0x3F3FFFD2}, + [I(89,129)] = {29,0x1CFFFFD2}, + [I(90,129)] = {30,0x3F7FFFD2}, + [I(91,129)] = {64,0}, + [I(92,129)] = {64,0}, + [I(93,129)] = {64,0}, + [I(94,129)] = {64,0}, + [I(95,129)] = {28,0x8BFFFD2}, + [I(96,129)] = {64,0}, + [I(97,129)] = {27,0xFFFFD2}, + [I(98,129)] = {28,0x8FFFFD2}, + [I(99,129)] = {27,0x13FFFD2}, + [I(100,129)] = {28,0x93FFFD2}, + [I(101,129)] = {27,0x17FFFD2}, + [I(102,129)] = {28,0x97FFFD2}, + [I(103,129)] = {28,0x9BFFFD2}, + [I(104,129)] = {28,0x9FFFFD2}, + [I(105,129)] = {27,0x1BFFFD2}, + [I(106,129)] = {29,0x1D3FFFD2}, + [I(107,129)] = {29,0x1D7FFFD2}, + [I(108,129)] = {28,0xA3FFFD2}, + [I(109,129)] = {28,0xA7FFFD2}, + [I(110,129)] = {28,0xABFFFD2}, + [I(111,129)] = {27,0x1FFFFD2}, + [I(112,129)] = {28,0xAFFFFD2}, + [I(113,129)] = {29,0x1DBFFFD2}, + [I(114,129)] = {28,0xB3FFFD2}, + [I(115,129)] = {27,0x23FFFD2}, + [I(116,129)] = {27,0x27FFFD2}, + [I(117,129)] = {28,0xB7FFFD2}, + [I(118,129)] = {29,0x1DFFFFD2}, + [I(119,129)] = {29,0x1E3FFFD2}, + [I(120,129)] = {29,0x1E7FFFD2}, + [I(121,129)] = {29,0x1EBFFFD2}, + [I(122,129)] = {29,0x1EFFFFD2}, + [I(123,129)] = {64,0}, + [I(124,129)] = {64,0}, + [I(125,129)] = {64,0}, + [I(126,129)] = {64,0}, + [I(127,129)] = {64,0}, + [I(128,129)] = {64,0}, + [I(129,129)] = {64,0}, + [I(130,129)] = {64,0}, + [I(131,129)] = {64,0}, + [I(132,129)] = {64,0}, + [I(133,129)] = {64,0}, + [I(134,129)] = {64,0}, + [I(135,129)] = {64,0}, + [I(136,129)] = {64,0}, + [I(137,129)] = {64,0}, + [I(138,129)] = {64,0}, + [I(139,129)] = {64,0}, + [I(140,129)] = {64,0}, + [I(141,129)] = {64,0}, + [I(142,129)] = {64,0}, + [I(143,129)] = {64,0}, + [I(144,129)] = {64,0}, + [I(145,129)] = {64,0}, + [I(146,129)] = {64,0}, + [I(147,129)] = {64,0}, + [I(148,129)] = {64,0}, + [I(149,129)] = {64,0}, + [I(150,129)] = {64,0}, + [I(151,129)] = {64,0}, + [I(152,129)] = {64,0}, + [I(153,129)] = {64,0}, + [I(154,129)] = {64,0}, + [I(155,129)] = {64,0}, + [I(156,129)] = {64,0}, + [I(157,129)] = {64,0}, + [I(158,129)] = {64,0}, + [I(159,129)] = {64,0}, + [I(160,129)] = {64,0}, + [I(161,129)] = {64,0}, + [I(162,129)] = {64,0}, + [I(163,129)] = {64,0}, + [I(164,129)] = {64,0}, + [I(165,129)] = {64,0}, + [I(166,129)] = {64,0}, + [I(167,129)] = {64,0}, + [I(168,129)] = {64,0}, + [I(169,129)] = {64,0}, + [I(170,129)] = {64,0}, + [I(171,129)] = {64,0}, + [I(172,129)] = {64,0}, + [I(173,129)] = {64,0}, + [I(174,129)] = {64,0}, + [I(175,129)] = {64,0}, + [I(176,129)] = {64,0}, + [I(177,129)] = {64,0}, + [I(178,129)] = {64,0}, + [I(179,129)] = {64,0}, + [I(180,129)] = {64,0}, + [I(181,129)] = {64,0}, + [I(182,129)] = {64,0}, + [I(183,129)] = {64,0}, + [I(184,129)] = {64,0}, + [I(185,129)] = {64,0}, + [I(186,129)] = {64,0}, + [I(187,129)] = {64,0}, + [I(188,129)] = {64,0}, + [I(189,129)] = {64,0}, + [I(190,129)] = {64,0}, + [I(191,129)] = {64,0}, + [I(192,129)] = {64,0}, + [I(193,129)] = {64,0}, + [I(194,129)] = {64,0}, + [I(195,129)] = {64,0}, + [I(196,129)] = {64,0}, + [I(197,129)] = {64,0}, + [I(198,129)] = {64,0}, + [I(199,129)] = {64,0}, + [I(200,129)] = {64,0}, + [I(201,129)] = {64,0}, + [I(202,129)] = {64,0}, + [I(203,129)] = {64,0}, + [I(204,129)] = {64,0}, + [I(205,129)] = {64,0}, + [I(206,129)] = {64,0}, + [I(207,129)] = {64,0}, + [I(208,129)] = {64,0}, + [I(209,129)] = {64,0}, + [I(210,129)] = {64,0}, + [I(211,129)] = {64,0}, + [I(212,129)] = {64,0}, + [I(213,129)] = {64,0}, + [I(214,129)] = {64,0}, + [I(215,129)] = {64,0}, + [I(216,129)] = {64,0}, + [I(217,129)] = {64,0}, + [I(218,129)] = {64,0}, + [I(219,129)] = {64,0}, + [I(220,129)] = {64,0}, + [I(221,129)] = {64,0}, + [I(222,129)] = {64,0}, + [I(223,129)] = {64,0}, + [I(224,129)] = {64,0}, + [I(225,129)] = {64,0}, + [I(226,129)] = {64,0}, + [I(227,129)] = {64,0}, + [I(228,129)] = {64,0}, + [I(229,129)] = {64,0}, + [I(230,129)] = {64,0}, + [I(231,129)] = {64,0}, + [I(232,129)] = {64,0}, + [I(233,129)] = {64,0}, + [I(234,129)] = {64,0}, + [I(235,129)] = {64,0}, + [I(236,129)] = {64,0}, + [I(237,129)] = {64,0}, + [I(238,129)] = {64,0}, + [I(239,129)] = {64,0}, + [I(240,129)] = {64,0}, + [I(241,129)] = {64,0}, + [I(242,129)] = {64,0}, + [I(243,129)] = {64,0}, + [I(244,129)] = {64,0}, + [I(245,129)] = {64,0}, + [I(246,129)] = {64,0}, + [I(247,129)] = {64,0}, + [I(248,129)] = {64,0}, + [I(249,129)] = {64,0}, + [I(250,129)] = {64,0}, + [I(251,129)] = {64,0}, + [I(252,129)] = {64,0}, + [I(253,129)] = {64,0}, + [I(254,129)] = {64,0}, + [I(255,129)] = {64,0}, + [I(0,130)] = {64,0}, + [I(1,130)] = {64,0}, + [I(2,130)] = {64,0}, + [I(3,130)] = {64,0}, + [I(4,130)] = {64,0}, + [I(5,130)] = {64,0}, + [I(6,130)] = {64,0}, + [I(7,130)] = {64,0}, + [I(8,130)] = {64,0}, + [I(9,130)] = {64,0}, + [I(10,130)] = {64,0}, + [I(11,130)] = {64,0}, + [I(12,130)] = {64,0}, + [I(13,130)] = {64,0}, + [I(14,130)] = {64,0}, + [I(15,130)] = {64,0}, + [I(16,130)] = {64,0}, + [I(17,130)] = {64,0}, + [I(18,130)] = {64,0}, + [I(19,130)] = {64,0}, + [I(20,130)] = {64,0}, + [I(21,130)] = {64,0}, + [I(22,130)] = {64,0}, + [I(23,130)] = {64,0}, + [I(24,130)] = {64,0}, + [I(25,130)] = {64,0}, + [I(26,130)] = {64,0}, + [I(27,130)] = {64,0}, + [I(28,130)] = {64,0}, + [I(29,130)] = {64,0}, + [I(30,130)] = {64,0}, + [I(31,130)] = {64,0}, + [I(32,130)] = {26,0x14FFFE7}, + [I(33,130)] = {30,0x3F8FFFE7}, + [I(34,130)] = {30,0x3F9FFFE7}, + [I(35,130)] = {X32,0xFFAFFFE7}, + [I(36,130)] = {64,0}, + [I(37,130)] = {26,0x15FFFE7}, + [I(38,130)] = {28,0xF8FFFE7}, + [I(39,130)] = {31,0x7FAFFFE7}, + [I(40,130)] = {30,0x3FAFFFE7}, + [I(41,130)] = {30,0x3FBFFFE7}, + [I(42,130)] = {28,0xF9FFFE7}, + [I(43,130)] = {31,0x7FBFFFE7}, + [I(44,130)] = {28,0xFAFFFE7}, + [I(45,130)] = {26,0x16FFFE7}, + [I(46,130)] = {26,0x17FFFE7}, + [I(47,130)] = {26,0x18FFFE7}, + [I(48,130)] = {25,0xFFFE7}, + [I(49,130)] = {25,0x1FFFE7}, + [I(50,130)] = {25,0x2FFFE7}, + [I(51,130)] = {26,0x19FFFE7}, + [I(52,130)] = {26,0x1AFFFE7}, + [I(53,130)] = {26,0x1BFFFE7}, + [I(54,130)] = {26,0x1CFFFE7}, + [I(55,130)] = {26,0x1DFFFE7}, + [I(56,130)] = {26,0x1EFFFE7}, + [I(57,130)] = {26,0x1FFFFE7}, + [I(58,130)] = {27,0x5CFFFE7}, + [I(59,130)] = {28,0xFBFFFE7}, + [I(60,130)] = {64,0}, + [I(61,130)] = {26,0x20FFFE7}, + [I(62,130)] = {X32,0xFFBFFFE7}, + [I(63,130)] = {30,0x3FCFFFE7}, + [I(64,130)] = {64,0}, + [I(65,130)] = {26,0x21FFFE7}, + [I(66,130)] = {27,0x5DFFFE7}, + [I(67,130)] = {27,0x5EFFFE7}, + [I(68,130)] = {27,0x5FFFFE7}, + [I(69,130)] = {27,0x60FFFE7}, + [I(70,130)] = {27,0x61FFFE7}, + [I(71,130)] = {27,0x62FFFE7}, + [I(72,130)] = {27,0x63FFFE7}, + [I(73,130)] = {27,0x64FFFE7}, + [I(74,130)] = {27,0x65FFFE7}, + [I(75,130)] = {27,0x66FFFE7}, + [I(76,130)] = {27,0x67FFFE7}, + [I(77,130)] = {27,0x68FFFE7}, + [I(78,130)] = {27,0x69FFFE7}, + [I(79,130)] = {27,0x6AFFFE7}, + [I(80,130)] = {27,0x6BFFFE7}, + [I(81,130)] = {27,0x6CFFFE7}, + [I(82,130)] = {27,0x6DFFFE7}, + [I(83,130)] = {27,0x6EFFFE7}, + [I(84,130)] = {27,0x6FFFFE7}, + [I(85,130)] = {27,0x70FFFE7}, + [I(86,130)] = {27,0x71FFFE7}, + [I(87,130)] = {27,0x72FFFE7}, + [I(88,130)] = {28,0xFCFFFE7}, + [I(89,130)] = {27,0x73FFFE7}, + [I(90,130)] = {28,0xFDFFFE7}, + [I(91,130)] = {64,0}, + [I(92,130)] = {64,0}, + [I(93,130)] = {64,0}, + [I(94,130)] = {64,0}, + [I(95,130)] = {26,0x22FFFE7}, + [I(96,130)] = {64,0}, + [I(97,130)] = {25,0x3FFFE7}, + [I(98,130)] = {26,0x23FFFE7}, + [I(99,130)] = {25,0x4FFFE7}, + [I(100,130)] = {26,0x24FFFE7}, + [I(101,130)] = {25,0x5FFFE7}, + [I(102,130)] = {26,0x25FFFE7}, + [I(103,130)] = {26,0x26FFFE7}, + [I(104,130)] = {26,0x27FFFE7}, + [I(105,130)] = {25,0x6FFFE7}, + [I(106,130)] = {27,0x74FFFE7}, + [I(107,130)] = {27,0x75FFFE7}, + [I(108,130)] = {26,0x28FFFE7}, + [I(109,130)] = {26,0x29FFFE7}, + [I(110,130)] = {26,0x2AFFFE7}, + [I(111,130)] = {25,0x7FFFE7}, + [I(112,130)] = {26,0x2BFFFE7}, + [I(113,130)] = {27,0x76FFFE7}, + [I(114,130)] = {26,0x2CFFFE7}, + [I(115,130)] = {25,0x8FFFE7}, + [I(116,130)] = {25,0x9FFFE7}, + [I(117,130)] = {26,0x2DFFFE7}, + [I(118,130)] = {27,0x77FFFE7}, + [I(119,130)] = {27,0x78FFFE7}, + [I(120,130)] = {27,0x79FFFE7}, + [I(121,130)] = {27,0x7AFFFE7}, + [I(122,130)] = {27,0x7BFFFE7}, + [I(123,130)] = {64,0}, + [I(124,130)] = {31,0x7FCFFFE7}, + [I(125,130)] = {64,0}, + [I(126,130)] = {64,0}, + [I(127,130)] = {64,0}, + [I(128,130)] = {64,0}, + [I(129,130)] = {64,0}, + [I(130,130)] = {64,0}, + [I(131,130)] = {64,0}, + [I(132,130)] = {64,0}, + [I(133,130)] = {64,0}, + [I(134,130)] = {64,0}, + [I(135,130)] = {64,0}, + [I(136,130)] = {64,0}, + [I(137,130)] = {64,0}, + [I(138,130)] = {64,0}, + [I(139,130)] = {64,0}, + [I(140,130)] = {64,0}, + [I(141,130)] = {64,0}, + [I(142,130)] = {64,0}, + [I(143,130)] = {64,0}, + [I(144,130)] = {64,0}, + [I(145,130)] = {64,0}, + [I(146,130)] = {64,0}, + [I(147,130)] = {64,0}, + [I(148,130)] = {64,0}, + [I(149,130)] = {64,0}, + [I(150,130)] = {64,0}, + [I(151,130)] = {64,0}, + [I(152,130)] = {64,0}, + [I(153,130)] = {64,0}, + [I(154,130)] = {64,0}, + [I(155,130)] = {64,0}, + [I(156,130)] = {64,0}, + [I(157,130)] = {64,0}, + [I(158,130)] = {64,0}, + [I(159,130)] = {64,0}, + [I(160,130)] = {64,0}, + [I(161,130)] = {64,0}, + [I(162,130)] = {64,0}, + [I(163,130)] = {64,0}, + [I(164,130)] = {64,0}, + [I(165,130)] = {64,0}, + [I(166,130)] = {64,0}, + [I(167,130)] = {64,0}, + [I(168,130)] = {64,0}, + [I(169,130)] = {64,0}, + [I(170,130)] = {64,0}, + [I(171,130)] = {64,0}, + [I(172,130)] = {64,0}, + [I(173,130)] = {64,0}, + [I(174,130)] = {64,0}, + [I(175,130)] = {64,0}, + [I(176,130)] = {64,0}, + [I(177,130)] = {64,0}, + [I(178,130)] = {64,0}, + [I(179,130)] = {64,0}, + [I(180,130)] = {64,0}, + [I(181,130)] = {64,0}, + [I(182,130)] = {64,0}, + [I(183,130)] = {64,0}, + [I(184,130)] = {64,0}, + [I(185,130)] = {64,0}, + [I(186,130)] = {64,0}, + [I(187,130)] = {64,0}, + [I(188,130)] = {64,0}, + [I(189,130)] = {64,0}, + [I(190,130)] = {64,0}, + [I(191,130)] = {64,0}, + [I(192,130)] = {64,0}, + [I(193,130)] = {64,0}, + [I(194,130)] = {64,0}, + [I(195,130)] = {64,0}, + [I(196,130)] = {64,0}, + [I(197,130)] = {64,0}, + [I(198,130)] = {64,0}, + [I(199,130)] = {64,0}, + [I(200,130)] = {64,0}, + [I(201,130)] = {64,0}, + [I(202,130)] = {64,0}, + [I(203,130)] = {64,0}, + [I(204,130)] = {64,0}, + [I(205,130)] = {64,0}, + [I(206,130)] = {64,0}, + [I(207,130)] = {64,0}, + [I(208,130)] = {64,0}, + [I(209,130)] = {64,0}, + [I(210,130)] = {64,0}, + [I(211,130)] = {64,0}, + [I(212,130)] = {64,0}, + [I(213,130)] = {64,0}, + [I(214,130)] = {64,0}, + [I(215,130)] = {64,0}, + [I(216,130)] = {64,0}, + [I(217,130)] = {64,0}, + [I(218,130)] = {64,0}, + [I(219,130)] = {64,0}, + [I(220,130)] = {64,0}, + [I(221,130)] = {64,0}, + [I(222,130)] = {64,0}, + [I(223,130)] = {64,0}, + [I(224,130)] = {64,0}, + [I(225,130)] = {64,0}, + [I(226,130)] = {64,0}, + [I(227,130)] = {64,0}, + [I(228,130)] = {64,0}, + [I(229,130)] = {64,0}, + [I(230,130)] = {64,0}, + [I(231,130)] = {64,0}, + [I(232,130)] = {64,0}, + [I(233,130)] = {64,0}, + [I(234,130)] = {64,0}, + [I(235,130)] = {64,0}, + [I(236,130)] = {64,0}, + [I(237,130)] = {64,0}, + [I(238,130)] = {64,0}, + [I(239,130)] = {64,0}, + [I(240,130)] = {64,0}, + [I(241,130)] = {64,0}, + [I(242,130)] = {64,0}, + [I(243,130)] = {64,0}, + [I(244,130)] = {64,0}, + [I(245,130)] = {64,0}, + [I(246,130)] = {64,0}, + [I(247,130)] = {64,0}, + [I(248,130)] = {64,0}, + [I(249,130)] = {64,0}, + [I(250,130)] = {64,0}, + [I(251,130)] = {64,0}, + [I(252,130)] = {64,0}, + [I(253,130)] = {64,0}, + [I(254,130)] = {64,0}, + [I(255,130)] = {64,0}, + [I(0,131)] = {64,0}, + [I(1,131)] = {64,0}, + [I(2,131)] = {64,0}, + [I(3,131)] = {64,0}, + [I(4,131)] = {64,0}, + [I(5,131)] = {64,0}, + [I(6,131)] = {64,0}, + [I(7,131)] = {64,0}, + [I(8,131)] = {64,0}, + [I(9,131)] = {64,0}, + [I(10,131)] = {64,0}, + [I(11,131)] = {64,0}, + [I(12,131)] = {64,0}, + [I(13,131)] = {64,0}, + [I(14,131)] = {64,0}, + [I(15,131)] = {64,0}, + [I(16,131)] = {64,0}, + [I(17,131)] = {64,0}, + [I(18,131)] = {64,0}, + [I(19,131)] = {64,0}, + [I(20,131)] = {64,0}, + [I(21,131)] = {64,0}, + [I(22,131)] = {64,0}, + [I(23,131)] = {64,0}, + [I(24,131)] = {64,0}, + [I(25,131)] = {64,0}, + [I(26,131)] = {64,0}, + [I(27,131)] = {64,0}, + [I(28,131)] = {64,0}, + [I(29,131)] = {64,0}, + [I(30,131)] = {64,0}, + [I(31,131)] = {64,0}, + [I(32,131)] = {26,0x14FFFE8}, + [I(33,131)] = {30,0x3F8FFFE8}, + [I(34,131)] = {30,0x3F9FFFE8}, + [I(35,131)] = {X32,0xFFAFFFE8}, + [I(36,131)] = {64,0}, + [I(37,131)] = {26,0x15FFFE8}, + [I(38,131)] = {28,0xF8FFFE8}, + [I(39,131)] = {31,0x7FAFFFE8}, + [I(40,131)] = {30,0x3FAFFFE8}, + [I(41,131)] = {30,0x3FBFFFE8}, + [I(42,131)] = {28,0xF9FFFE8}, + [I(43,131)] = {31,0x7FBFFFE8}, + [I(44,131)] = {28,0xFAFFFE8}, + [I(45,131)] = {26,0x16FFFE8}, + [I(46,131)] = {26,0x17FFFE8}, + [I(47,131)] = {26,0x18FFFE8}, + [I(48,131)] = {25,0xFFFE8}, + [I(49,131)] = {25,0x1FFFE8}, + [I(50,131)] = {25,0x2FFFE8}, + [I(51,131)] = {26,0x19FFFE8}, + [I(52,131)] = {26,0x1AFFFE8}, + [I(53,131)] = {26,0x1BFFFE8}, + [I(54,131)] = {26,0x1CFFFE8}, + [I(55,131)] = {26,0x1DFFFE8}, + [I(56,131)] = {26,0x1EFFFE8}, + [I(57,131)] = {26,0x1FFFFE8}, + [I(58,131)] = {27,0x5CFFFE8}, + [I(59,131)] = {28,0xFBFFFE8}, + [I(60,131)] = {64,0}, + [I(61,131)] = {26,0x20FFFE8}, + [I(62,131)] = {X32,0xFFBFFFE8}, + [I(63,131)] = {30,0x3FCFFFE8}, + [I(64,131)] = {64,0}, + [I(65,131)] = {26,0x21FFFE8}, + [I(66,131)] = {27,0x5DFFFE8}, + [I(67,131)] = {27,0x5EFFFE8}, + [I(68,131)] = {27,0x5FFFFE8}, + [I(69,131)] = {27,0x60FFFE8}, + [I(70,131)] = {27,0x61FFFE8}, + [I(71,131)] = {27,0x62FFFE8}, + [I(72,131)] = {27,0x63FFFE8}, + [I(73,131)] = {27,0x64FFFE8}, + [I(74,131)] = {27,0x65FFFE8}, + [I(75,131)] = {27,0x66FFFE8}, + [I(76,131)] = {27,0x67FFFE8}, + [I(77,131)] = {27,0x68FFFE8}, + [I(78,131)] = {27,0x69FFFE8}, + [I(79,131)] = {27,0x6AFFFE8}, + [I(80,131)] = {27,0x6BFFFE8}, + [I(81,131)] = {27,0x6CFFFE8}, + [I(82,131)] = {27,0x6DFFFE8}, + [I(83,131)] = {27,0x6EFFFE8}, + [I(84,131)] = {27,0x6FFFFE8}, + [I(85,131)] = {27,0x70FFFE8}, + [I(86,131)] = {27,0x71FFFE8}, + [I(87,131)] = {27,0x72FFFE8}, + [I(88,131)] = {28,0xFCFFFE8}, + [I(89,131)] = {27,0x73FFFE8}, + [I(90,131)] = {28,0xFDFFFE8}, + [I(91,131)] = {64,0}, + [I(92,131)] = {64,0}, + [I(93,131)] = {64,0}, + [I(94,131)] = {64,0}, + [I(95,131)] = {26,0x22FFFE8}, + [I(96,131)] = {64,0}, + [I(97,131)] = {25,0x3FFFE8}, + [I(98,131)] = {26,0x23FFFE8}, + [I(99,131)] = {25,0x4FFFE8}, + [I(100,131)] = {26,0x24FFFE8}, + [I(101,131)] = {25,0x5FFFE8}, + [I(102,131)] = {26,0x25FFFE8}, + [I(103,131)] = {26,0x26FFFE8}, + [I(104,131)] = {26,0x27FFFE8}, + [I(105,131)] = {25,0x6FFFE8}, + [I(106,131)] = {27,0x74FFFE8}, + [I(107,131)] = {27,0x75FFFE8}, + [I(108,131)] = {26,0x28FFFE8}, + [I(109,131)] = {26,0x29FFFE8}, + [I(110,131)] = {26,0x2AFFFE8}, + [I(111,131)] = {25,0x7FFFE8}, + [I(112,131)] = {26,0x2BFFFE8}, + [I(113,131)] = {27,0x76FFFE8}, + [I(114,131)] = {26,0x2CFFFE8}, + [I(115,131)] = {25,0x8FFFE8}, + [I(116,131)] = {25,0x9FFFE8}, + [I(117,131)] = {26,0x2DFFFE8}, + [I(118,131)] = {27,0x77FFFE8}, + [I(119,131)] = {27,0x78FFFE8}, + [I(120,131)] = {27,0x79FFFE8}, + [I(121,131)] = {27,0x7AFFFE8}, + [I(122,131)] = {27,0x7BFFFE8}, + [I(123,131)] = {64,0}, + [I(124,131)] = {31,0x7FCFFFE8}, + [I(125,131)] = {64,0}, + [I(126,131)] = {64,0}, + [I(127,131)] = {64,0}, + [I(128,131)] = {64,0}, + [I(129,131)] = {64,0}, + [I(130,131)] = {64,0}, + [I(131,131)] = {64,0}, + [I(132,131)] = {64,0}, + [I(133,131)] = {64,0}, + [I(134,131)] = {64,0}, + [I(135,131)] = {64,0}, + [I(136,131)] = {64,0}, + [I(137,131)] = {64,0}, + [I(138,131)] = {64,0}, + [I(139,131)] = {64,0}, + [I(140,131)] = {64,0}, + [I(141,131)] = {64,0}, + [I(142,131)] = {64,0}, + [I(143,131)] = {64,0}, + [I(144,131)] = {64,0}, + [I(145,131)] = {64,0}, + [I(146,131)] = {64,0}, + [I(147,131)] = {64,0}, + [I(148,131)] = {64,0}, + [I(149,131)] = {64,0}, + [I(150,131)] = {64,0}, + [I(151,131)] = {64,0}, + [I(152,131)] = {64,0}, + [I(153,131)] = {64,0}, + [I(154,131)] = {64,0}, + [I(155,131)] = {64,0}, + [I(156,131)] = {64,0}, + [I(157,131)] = {64,0}, + [I(158,131)] = {64,0}, + [I(159,131)] = {64,0}, + [I(160,131)] = {64,0}, + [I(161,131)] = {64,0}, + [I(162,131)] = {64,0}, + [I(163,131)] = {64,0}, + [I(164,131)] = {64,0}, + [I(165,131)] = {64,0}, + [I(166,131)] = {64,0}, + [I(167,131)] = {64,0}, + [I(168,131)] = {64,0}, + [I(169,131)] = {64,0}, + [I(170,131)] = {64,0}, + [I(171,131)] = {64,0}, + [I(172,131)] = {64,0}, + [I(173,131)] = {64,0}, + [I(174,131)] = {64,0}, + [I(175,131)] = {64,0}, + [I(176,131)] = {64,0}, + [I(177,131)] = {64,0}, + [I(178,131)] = {64,0}, + [I(179,131)] = {64,0}, + [I(180,131)] = {64,0}, + [I(181,131)] = {64,0}, + [I(182,131)] = {64,0}, + [I(183,131)] = {64,0}, + [I(184,131)] = {64,0}, + [I(185,131)] = {64,0}, + [I(186,131)] = {64,0}, + [I(187,131)] = {64,0}, + [I(188,131)] = {64,0}, + [I(189,131)] = {64,0}, + [I(190,131)] = {64,0}, + [I(191,131)] = {64,0}, + [I(192,131)] = {64,0}, + [I(193,131)] = {64,0}, + [I(194,131)] = {64,0}, + [I(195,131)] = {64,0}, + [I(196,131)] = {64,0}, + [I(197,131)] = {64,0}, + [I(198,131)] = {64,0}, + [I(199,131)] = {64,0}, + [I(200,131)] = {64,0}, + [I(201,131)] = {64,0}, + [I(202,131)] = {64,0}, + [I(203,131)] = {64,0}, + [I(204,131)] = {64,0}, + [I(205,131)] = {64,0}, + [I(206,131)] = {64,0}, + [I(207,131)] = {64,0}, + [I(208,131)] = {64,0}, + [I(209,131)] = {64,0}, + [I(210,131)] = {64,0}, + [I(211,131)] = {64,0}, + [I(212,131)] = {64,0}, + [I(213,131)] = {64,0}, + [I(214,131)] = {64,0}, + [I(215,131)] = {64,0}, + [I(216,131)] = {64,0}, + [I(217,131)] = {64,0}, + [I(218,131)] = {64,0}, + [I(219,131)] = {64,0}, + [I(220,131)] = {64,0}, + [I(221,131)] = {64,0}, + [I(222,131)] = {64,0}, + [I(223,131)] = {64,0}, + [I(224,131)] = {64,0}, + [I(225,131)] = {64,0}, + [I(226,131)] = {64,0}, + [I(227,131)] = {64,0}, + [I(228,131)] = {64,0}, + [I(229,131)] = {64,0}, + [I(230,131)] = {64,0}, + [I(231,131)] = {64,0}, + [I(232,131)] = {64,0}, + [I(233,131)] = {64,0}, + [I(234,131)] = {64,0}, + [I(235,131)] = {64,0}, + [I(236,131)] = {64,0}, + [I(237,131)] = {64,0}, + [I(238,131)] = {64,0}, + [I(239,131)] = {64,0}, + [I(240,131)] = {64,0}, + [I(241,131)] = {64,0}, + [I(242,131)] = {64,0}, + [I(243,131)] = {64,0}, + [I(244,131)] = {64,0}, + [I(245,131)] = {64,0}, + [I(246,131)] = {64,0}, + [I(247,131)] = {64,0}, + [I(248,131)] = {64,0}, + [I(249,131)] = {64,0}, + [I(250,131)] = {64,0}, + [I(251,131)] = {64,0}, + [I(252,131)] = {64,0}, + [I(253,131)] = {64,0}, + [I(254,131)] = {64,0}, + [I(255,131)] = {64,0}, + [I(0,132)] = {64,0}, + [I(1,132)] = {64,0}, + [I(2,132)] = {64,0}, + [I(3,132)] = {64,0}, + [I(4,132)] = {64,0}, + [I(5,132)] = {64,0}, + [I(6,132)] = {64,0}, + [I(7,132)] = {64,0}, + [I(8,132)] = {64,0}, + [I(9,132)] = {64,0}, + [I(10,132)] = {64,0}, + [I(11,132)] = {64,0}, + [I(12,132)] = {64,0}, + [I(13,132)] = {64,0}, + [I(14,132)] = {64,0}, + [I(15,132)] = {64,0}, + [I(16,132)] = {64,0}, + [I(17,132)] = {64,0}, + [I(18,132)] = {64,0}, + [I(19,132)] = {64,0}, + [I(20,132)] = {64,0}, + [I(21,132)] = {64,0}, + [I(22,132)] = {64,0}, + [I(23,132)] = {64,0}, + [I(24,132)] = {64,0}, + [I(25,132)] = {64,0}, + [I(26,132)] = {64,0}, + [I(27,132)] = {64,0}, + [I(28,132)] = {64,0}, + [I(29,132)] = {64,0}, + [I(30,132)] = {64,0}, + [I(31,132)] = {64,0}, + [I(32,132)] = {28,0x53FFFD3}, + [I(33,132)] = {X32,0xFE3FFFD3}, + [I(34,132)] = {X32,0xFE7FFFD3}, + [I(35,132)] = {64,0}, + [I(36,132)] = {64,0}, + [I(37,132)] = {28,0x57FFFD3}, + [I(38,132)] = {30,0x3E3FFFD3}, + [I(39,132)] = {64,0}, + [I(40,132)] = {X32,0xFEBFFFD3}, + [I(41,132)] = {X32,0xFEFFFFD3}, + [I(42,132)] = {30,0x3E7FFFD3}, + [I(43,132)] = {64,0}, + [I(44,132)] = {30,0x3EBFFFD3}, + [I(45,132)] = {28,0x5BFFFD3}, + [I(46,132)] = {28,0x5FFFFD3}, + [I(47,132)] = {28,0x63FFFD3}, + [I(48,132)] = {27,0x3FFFD3}, + [I(49,132)] = {27,0x7FFFD3}, + [I(50,132)] = {27,0xBFFFD3}, + [I(51,132)] = {28,0x67FFFD3}, + [I(52,132)] = {28,0x6BFFFD3}, + [I(53,132)] = {28,0x6FFFFD3}, + [I(54,132)] = {28,0x73FFFD3}, + [I(55,132)] = {28,0x77FFFD3}, + [I(56,132)] = {28,0x7BFFFD3}, + [I(57,132)] = {28,0x7FFFFD3}, + [I(58,132)] = {29,0x173FFFD3}, + [I(59,132)] = {30,0x3EFFFFD3}, + [I(60,132)] = {64,0}, + [I(61,132)] = {28,0x83FFFD3}, + [I(62,132)] = {64,0}, + [I(63,132)] = {X32,0xFF3FFFD3}, + [I(64,132)] = {64,0}, + [I(65,132)] = {28,0x87FFFD3}, + [I(66,132)] = {29,0x177FFFD3}, + [I(67,132)] = {29,0x17BFFFD3}, + [I(68,132)] = {29,0x17FFFFD3}, + [I(69,132)] = {29,0x183FFFD3}, + [I(70,132)] = {29,0x187FFFD3}, + [I(71,132)] = {29,0x18BFFFD3}, + [I(72,132)] = {29,0x18FFFFD3}, + [I(73,132)] = {29,0x193FFFD3}, + [I(74,132)] = {29,0x197FFFD3}, + [I(75,132)] = {29,0x19BFFFD3}, + [I(76,132)] = {29,0x19FFFFD3}, + [I(77,132)] = {29,0x1A3FFFD3}, + [I(78,132)] = {29,0x1A7FFFD3}, + [I(79,132)] = {29,0x1ABFFFD3}, + [I(80,132)] = {29,0x1AFFFFD3}, + [I(81,132)] = {29,0x1B3FFFD3}, + [I(82,132)] = {29,0x1B7FFFD3}, + [I(83,132)] = {29,0x1BBFFFD3}, + [I(84,132)] = {29,0x1BFFFFD3}, + [I(85,132)] = {29,0x1C3FFFD3}, + [I(86,132)] = {29,0x1C7FFFD3}, + [I(87,132)] = {29,0x1CBFFFD3}, + [I(88,132)] = {30,0x3F3FFFD3}, + [I(89,132)] = {29,0x1CFFFFD3}, + [I(90,132)] = {30,0x3F7FFFD3}, + [I(91,132)] = {64,0}, + [I(92,132)] = {64,0}, + [I(93,132)] = {64,0}, + [I(94,132)] = {64,0}, + [I(95,132)] = {28,0x8BFFFD3}, + [I(96,132)] = {64,0}, + [I(97,132)] = {27,0xFFFFD3}, + [I(98,132)] = {28,0x8FFFFD3}, + [I(99,132)] = {27,0x13FFFD3}, + [I(100,132)] = {28,0x93FFFD3}, + [I(101,132)] = {27,0x17FFFD3}, + [I(102,132)] = {28,0x97FFFD3}, + [I(103,132)] = {28,0x9BFFFD3}, + [I(104,132)] = {28,0x9FFFFD3}, + [I(105,132)] = {27,0x1BFFFD3}, + [I(106,132)] = {29,0x1D3FFFD3}, + [I(107,132)] = {29,0x1D7FFFD3}, + [I(108,132)] = {28,0xA3FFFD3}, + [I(109,132)] = {28,0xA7FFFD3}, + [I(110,132)] = {28,0xABFFFD3}, + [I(111,132)] = {27,0x1FFFFD3}, + [I(112,132)] = {28,0xAFFFFD3}, + [I(113,132)] = {29,0x1DBFFFD3}, + [I(114,132)] = {28,0xB3FFFD3}, + [I(115,132)] = {27,0x23FFFD3}, + [I(116,132)] = {27,0x27FFFD3}, + [I(117,132)] = {28,0xB7FFFD3}, + [I(118,132)] = {29,0x1DFFFFD3}, + [I(119,132)] = {29,0x1E3FFFD3}, + [I(120,132)] = {29,0x1E7FFFD3}, + [I(121,132)] = {29,0x1EBFFFD3}, + [I(122,132)] = {29,0x1EFFFFD3}, + [I(123,132)] = {64,0}, + [I(124,132)] = {64,0}, + [I(125,132)] = {64,0}, + [I(126,132)] = {64,0}, + [I(127,132)] = {64,0}, + [I(128,132)] = {64,0}, + [I(129,132)] = {64,0}, + [I(130,132)] = {64,0}, + [I(131,132)] = {64,0}, + [I(132,132)] = {64,0}, + [I(133,132)] = {64,0}, + [I(134,132)] = {64,0}, + [I(135,132)] = {64,0}, + [I(136,132)] = {64,0}, + [I(137,132)] = {64,0}, + [I(138,132)] = {64,0}, + [I(139,132)] = {64,0}, + [I(140,132)] = {64,0}, + [I(141,132)] = {64,0}, + [I(142,132)] = {64,0}, + [I(143,132)] = {64,0}, + [I(144,132)] = {64,0}, + [I(145,132)] = {64,0}, + [I(146,132)] = {64,0}, + [I(147,132)] = {64,0}, + [I(148,132)] = {64,0}, + [I(149,132)] = {64,0}, + [I(150,132)] = {64,0}, + [I(151,132)] = {64,0}, + [I(152,132)] = {64,0}, + [I(153,132)] = {64,0}, + [I(154,132)] = {64,0}, + [I(155,132)] = {64,0}, + [I(156,132)] = {64,0}, + [I(157,132)] = {64,0}, + [I(158,132)] = {64,0}, + [I(159,132)] = {64,0}, + [I(160,132)] = {64,0}, + [I(161,132)] = {64,0}, + [I(162,132)] = {64,0}, + [I(163,132)] = {64,0}, + [I(164,132)] = {64,0}, + [I(165,132)] = {64,0}, + [I(166,132)] = {64,0}, + [I(167,132)] = {64,0}, + [I(168,132)] = {64,0}, + [I(169,132)] = {64,0}, + [I(170,132)] = {64,0}, + [I(171,132)] = {64,0}, + [I(172,132)] = {64,0}, + [I(173,132)] = {64,0}, + [I(174,132)] = {64,0}, + [I(175,132)] = {64,0}, + [I(176,132)] = {64,0}, + [I(177,132)] = {64,0}, + [I(178,132)] = {64,0}, + [I(179,132)] = {64,0}, + [I(180,132)] = {64,0}, + [I(181,132)] = {64,0}, + [I(182,132)] = {64,0}, + [I(183,132)] = {64,0}, + [I(184,132)] = {64,0}, + [I(185,132)] = {64,0}, + [I(186,132)] = {64,0}, + [I(187,132)] = {64,0}, + [I(188,132)] = {64,0}, + [I(189,132)] = {64,0}, + [I(190,132)] = {64,0}, + [I(191,132)] = {64,0}, + [I(192,132)] = {64,0}, + [I(193,132)] = {64,0}, + [I(194,132)] = {64,0}, + [I(195,132)] = {64,0}, + [I(196,132)] = {64,0}, + [I(197,132)] = {64,0}, + [I(198,132)] = {64,0}, + [I(199,132)] = {64,0}, + [I(200,132)] = {64,0}, + [I(201,132)] = {64,0}, + [I(202,132)] = {64,0}, + [I(203,132)] = {64,0}, + [I(204,132)] = {64,0}, + [I(205,132)] = {64,0}, + [I(206,132)] = {64,0}, + [I(207,132)] = {64,0}, + [I(208,132)] = {64,0}, + [I(209,132)] = {64,0}, + [I(210,132)] = {64,0}, + [I(211,132)] = {64,0}, + [I(212,132)] = {64,0}, + [I(213,132)] = {64,0}, + [I(214,132)] = {64,0}, + [I(215,132)] = {64,0}, + [I(216,132)] = {64,0}, + [I(217,132)] = {64,0}, + [I(218,132)] = {64,0}, + [I(219,132)] = {64,0}, + [I(220,132)] = {64,0}, + [I(221,132)] = {64,0}, + [I(222,132)] = {64,0}, + [I(223,132)] = {64,0}, + [I(224,132)] = {64,0}, + [I(225,132)] = {64,0}, + [I(226,132)] = {64,0}, + [I(227,132)] = {64,0}, + [I(228,132)] = {64,0}, + [I(229,132)] = {64,0}, + [I(230,132)] = {64,0}, + [I(231,132)] = {64,0}, + [I(232,132)] = {64,0}, + [I(233,132)] = {64,0}, + [I(234,132)] = {64,0}, + [I(235,132)] = {64,0}, + [I(236,132)] = {64,0}, + [I(237,132)] = {64,0}, + [I(238,132)] = {64,0}, + [I(239,132)] = {64,0}, + [I(240,132)] = {64,0}, + [I(241,132)] = {64,0}, + [I(242,132)] = {64,0}, + [I(243,132)] = {64,0}, + [I(244,132)] = {64,0}, + [I(245,132)] = {64,0}, + [I(246,132)] = {64,0}, + [I(247,132)] = {64,0}, + [I(248,132)] = {64,0}, + [I(249,132)] = {64,0}, + [I(250,132)] = {64,0}, + [I(251,132)] = {64,0}, + [I(252,132)] = {64,0}, + [I(253,132)] = {64,0}, + [I(254,132)] = {64,0}, + [I(255,132)] = {64,0}, + [I(0,133)] = {64,0}, + [I(1,133)] = {64,0}, + [I(2,133)] = {64,0}, + [I(3,133)] = {64,0}, + [I(4,133)] = {64,0}, + [I(5,133)] = {64,0}, + [I(6,133)] = {64,0}, + [I(7,133)] = {64,0}, + [I(8,133)] = {64,0}, + [I(9,133)] = {64,0}, + [I(10,133)] = {64,0}, + [I(11,133)] = {64,0}, + [I(12,133)] = {64,0}, + [I(13,133)] = {64,0}, + [I(14,133)] = {64,0}, + [I(15,133)] = {64,0}, + [I(16,133)] = {64,0}, + [I(17,133)] = {64,0}, + [I(18,133)] = {64,0}, + [I(19,133)] = {64,0}, + [I(20,133)] = {64,0}, + [I(21,133)] = {64,0}, + [I(22,133)] = {64,0}, + [I(23,133)] = {64,0}, + [I(24,133)] = {64,0}, + [I(25,133)] = {64,0}, + [I(26,133)] = {64,0}, + [I(27,133)] = {64,0}, + [I(28,133)] = {64,0}, + [I(29,133)] = {64,0}, + [I(30,133)] = {64,0}, + [I(31,133)] = {64,0}, + [I(32,133)] = {28,0x53FFFD4}, + [I(33,133)] = {X32,0xFE3FFFD4}, + [I(34,133)] = {X32,0xFE7FFFD4}, + [I(35,133)] = {64,0}, + [I(36,133)] = {64,0}, + [I(37,133)] = {28,0x57FFFD4}, + [I(38,133)] = {30,0x3E3FFFD4}, + [I(39,133)] = {64,0}, + [I(40,133)] = {X32,0xFEBFFFD4}, + [I(41,133)] = {X32,0xFEFFFFD4}, + [I(42,133)] = {30,0x3E7FFFD4}, + [I(43,133)] = {64,0}, + [I(44,133)] = {30,0x3EBFFFD4}, + [I(45,133)] = {28,0x5BFFFD4}, + [I(46,133)] = {28,0x5FFFFD4}, + [I(47,133)] = {28,0x63FFFD4}, + [I(48,133)] = {27,0x3FFFD4}, + [I(49,133)] = {27,0x7FFFD4}, + [I(50,133)] = {27,0xBFFFD4}, + [I(51,133)] = {28,0x67FFFD4}, + [I(52,133)] = {28,0x6BFFFD4}, + [I(53,133)] = {28,0x6FFFFD4}, + [I(54,133)] = {28,0x73FFFD4}, + [I(55,133)] = {28,0x77FFFD4}, + [I(56,133)] = {28,0x7BFFFD4}, + [I(57,133)] = {28,0x7FFFFD4}, + [I(58,133)] = {29,0x173FFFD4}, + [I(59,133)] = {30,0x3EFFFFD4}, + [I(60,133)] = {64,0}, + [I(61,133)] = {28,0x83FFFD4}, + [I(62,133)] = {64,0}, + [I(63,133)] = {X32,0xFF3FFFD4}, + [I(64,133)] = {64,0}, + [I(65,133)] = {28,0x87FFFD4}, + [I(66,133)] = {29,0x177FFFD4}, + [I(67,133)] = {29,0x17BFFFD4}, + [I(68,133)] = {29,0x17FFFFD4}, + [I(69,133)] = {29,0x183FFFD4}, + [I(70,133)] = {29,0x187FFFD4}, + [I(71,133)] = {29,0x18BFFFD4}, + [I(72,133)] = {29,0x18FFFFD4}, + [I(73,133)] = {29,0x193FFFD4}, + [I(74,133)] = {29,0x197FFFD4}, + [I(75,133)] = {29,0x19BFFFD4}, + [I(76,133)] = {29,0x19FFFFD4}, + [I(77,133)] = {29,0x1A3FFFD4}, + [I(78,133)] = {29,0x1A7FFFD4}, + [I(79,133)] = {29,0x1ABFFFD4}, + [I(80,133)] = {29,0x1AFFFFD4}, + [I(81,133)] = {29,0x1B3FFFD4}, + [I(82,133)] = {29,0x1B7FFFD4}, + [I(83,133)] = {29,0x1BBFFFD4}, + [I(84,133)] = {29,0x1BFFFFD4}, + [I(85,133)] = {29,0x1C3FFFD4}, + [I(86,133)] = {29,0x1C7FFFD4}, + [I(87,133)] = {29,0x1CBFFFD4}, + [I(88,133)] = {30,0x3F3FFFD4}, + [I(89,133)] = {29,0x1CFFFFD4}, + [I(90,133)] = {30,0x3F7FFFD4}, + [I(91,133)] = {64,0}, + [I(92,133)] = {64,0}, + [I(93,133)] = {64,0}, + [I(94,133)] = {64,0}, + [I(95,133)] = {28,0x8BFFFD4}, + [I(96,133)] = {64,0}, + [I(97,133)] = {27,0xFFFFD4}, + [I(98,133)] = {28,0x8FFFFD4}, + [I(99,133)] = {27,0x13FFFD4}, + [I(100,133)] = {28,0x93FFFD4}, + [I(101,133)] = {27,0x17FFFD4}, + [I(102,133)] = {28,0x97FFFD4}, + [I(103,133)] = {28,0x9BFFFD4}, + [I(104,133)] = {28,0x9FFFFD4}, + [I(105,133)] = {27,0x1BFFFD4}, + [I(106,133)] = {29,0x1D3FFFD4}, + [I(107,133)] = {29,0x1D7FFFD4}, + [I(108,133)] = {28,0xA3FFFD4}, + [I(109,133)] = {28,0xA7FFFD4}, + [I(110,133)] = {28,0xABFFFD4}, + [I(111,133)] = {27,0x1FFFFD4}, + [I(112,133)] = {28,0xAFFFFD4}, + [I(113,133)] = {29,0x1DBFFFD4}, + [I(114,133)] = {28,0xB3FFFD4}, + [I(115,133)] = {27,0x23FFFD4}, + [I(116,133)] = {27,0x27FFFD4}, + [I(117,133)] = {28,0xB7FFFD4}, + [I(118,133)] = {29,0x1DFFFFD4}, + [I(119,133)] = {29,0x1E3FFFD4}, + [I(120,133)] = {29,0x1E7FFFD4}, + [I(121,133)] = {29,0x1EBFFFD4}, + [I(122,133)] = {29,0x1EFFFFD4}, + [I(123,133)] = {64,0}, + [I(124,133)] = {64,0}, + [I(125,133)] = {64,0}, + [I(126,133)] = {64,0}, + [I(127,133)] = {64,0}, + [I(128,133)] = {64,0}, + [I(129,133)] = {64,0}, + [I(130,133)] = {64,0}, + [I(131,133)] = {64,0}, + [I(132,133)] = {64,0}, + [I(133,133)] = {64,0}, + [I(134,133)] = {64,0}, + [I(135,133)] = {64,0}, + [I(136,133)] = {64,0}, + [I(137,133)] = {64,0}, + [I(138,133)] = {64,0}, + [I(139,133)] = {64,0}, + [I(140,133)] = {64,0}, + [I(141,133)] = {64,0}, + [I(142,133)] = {64,0}, + [I(143,133)] = {64,0}, + [I(144,133)] = {64,0}, + [I(145,133)] = {64,0}, + [I(146,133)] = {64,0}, + [I(147,133)] = {64,0}, + [I(148,133)] = {64,0}, + [I(149,133)] = {64,0}, + [I(150,133)] = {64,0}, + [I(151,133)] = {64,0}, + [I(152,133)] = {64,0}, + [I(153,133)] = {64,0}, + [I(154,133)] = {64,0}, + [I(155,133)] = {64,0}, + [I(156,133)] = {64,0}, + [I(157,133)] = {64,0}, + [I(158,133)] = {64,0}, + [I(159,133)] = {64,0}, + [I(160,133)] = {64,0}, + [I(161,133)] = {64,0}, + [I(162,133)] = {64,0}, + [I(163,133)] = {64,0}, + [I(164,133)] = {64,0}, + [I(165,133)] = {64,0}, + [I(166,133)] = {64,0}, + [I(167,133)] = {64,0}, + [I(168,133)] = {64,0}, + [I(169,133)] = {64,0}, + [I(170,133)] = {64,0}, + [I(171,133)] = {64,0}, + [I(172,133)] = {64,0}, + [I(173,133)] = {64,0}, + [I(174,133)] = {64,0}, + [I(175,133)] = {64,0}, + [I(176,133)] = {64,0}, + [I(177,133)] = {64,0}, + [I(178,133)] = {64,0}, + [I(179,133)] = {64,0}, + [I(180,133)] = {64,0}, + [I(181,133)] = {64,0}, + [I(182,133)] = {64,0}, + [I(183,133)] = {64,0}, + [I(184,133)] = {64,0}, + [I(185,133)] = {64,0}, + [I(186,133)] = {64,0}, + [I(187,133)] = {64,0}, + [I(188,133)] = {64,0}, + [I(189,133)] = {64,0}, + [I(190,133)] = {64,0}, + [I(191,133)] = {64,0}, + [I(192,133)] = {64,0}, + [I(193,133)] = {64,0}, + [I(194,133)] = {64,0}, + [I(195,133)] = {64,0}, + [I(196,133)] = {64,0}, + [I(197,133)] = {64,0}, + [I(198,133)] = {64,0}, + [I(199,133)] = {64,0}, + [I(200,133)] = {64,0}, + [I(201,133)] = {64,0}, + [I(202,133)] = {64,0}, + [I(203,133)] = {64,0}, + [I(204,133)] = {64,0}, + [I(205,133)] = {64,0}, + [I(206,133)] = {64,0}, + [I(207,133)] = {64,0}, + [I(208,133)] = {64,0}, + [I(209,133)] = {64,0}, + [I(210,133)] = {64,0}, + [I(211,133)] = {64,0}, + [I(212,133)] = {64,0}, + [I(213,133)] = {64,0}, + [I(214,133)] = {64,0}, + [I(215,133)] = {64,0}, + [I(216,133)] = {64,0}, + [I(217,133)] = {64,0}, + [I(218,133)] = {64,0}, + [I(219,133)] = {64,0}, + [I(220,133)] = {64,0}, + [I(221,133)] = {64,0}, + [I(222,133)] = {64,0}, + [I(223,133)] = {64,0}, + [I(224,133)] = {64,0}, + [I(225,133)] = {64,0}, + [I(226,133)] = {64,0}, + [I(227,133)] = {64,0}, + [I(228,133)] = {64,0}, + [I(229,133)] = {64,0}, + [I(230,133)] = {64,0}, + [I(231,133)] = {64,0}, + [I(232,133)] = {64,0}, + [I(233,133)] = {64,0}, + [I(234,133)] = {64,0}, + [I(235,133)] = {64,0}, + [I(236,133)] = {64,0}, + [I(237,133)] = {64,0}, + [I(238,133)] = {64,0}, + [I(239,133)] = {64,0}, + [I(240,133)] = {64,0}, + [I(241,133)] = {64,0}, + [I(242,133)] = {64,0}, + [I(243,133)] = {64,0}, + [I(244,133)] = {64,0}, + [I(245,133)] = {64,0}, + [I(246,133)] = {64,0}, + [I(247,133)] = {64,0}, + [I(248,133)] = {64,0}, + [I(249,133)] = {64,0}, + [I(250,133)] = {64,0}, + [I(251,133)] = {64,0}, + [I(252,133)] = {64,0}, + [I(253,133)] = {64,0}, + [I(254,133)] = {64,0}, + [I(255,133)] = {64,0}, + [I(0,134)] = {64,0}, + [I(1,134)] = {64,0}, + [I(2,134)] = {64,0}, + [I(3,134)] = {64,0}, + [I(4,134)] = {64,0}, + [I(5,134)] = {64,0}, + [I(6,134)] = {64,0}, + [I(7,134)] = {64,0}, + [I(8,134)] = {64,0}, + [I(9,134)] = {64,0}, + [I(10,134)] = {64,0}, + [I(11,134)] = {64,0}, + [I(12,134)] = {64,0}, + [I(13,134)] = {64,0}, + [I(14,134)] = {64,0}, + [I(15,134)] = {64,0}, + [I(16,134)] = {64,0}, + [I(17,134)] = {64,0}, + [I(18,134)] = {64,0}, + [I(19,134)] = {64,0}, + [I(20,134)] = {64,0}, + [I(21,134)] = {64,0}, + [I(22,134)] = {64,0}, + [I(23,134)] = {64,0}, + [I(24,134)] = {64,0}, + [I(25,134)] = {64,0}, + [I(26,134)] = {64,0}, + [I(27,134)] = {64,0}, + [I(28,134)] = {64,0}, + [I(29,134)] = {64,0}, + [I(30,134)] = {64,0}, + [I(31,134)] = {64,0}, + [I(32,134)] = {28,0x53FFFD5}, + [I(33,134)] = {X32,0xFE3FFFD5}, + [I(34,134)] = {X32,0xFE7FFFD5}, + [I(35,134)] = {64,0}, + [I(36,134)] = {64,0}, + [I(37,134)] = {28,0x57FFFD5}, + [I(38,134)] = {30,0x3E3FFFD5}, + [I(39,134)] = {64,0}, + [I(40,134)] = {X32,0xFEBFFFD5}, + [I(41,134)] = {X32,0xFEFFFFD5}, + [I(42,134)] = {30,0x3E7FFFD5}, + [I(43,134)] = {64,0}, + [I(44,134)] = {30,0x3EBFFFD5}, + [I(45,134)] = {28,0x5BFFFD5}, + [I(46,134)] = {28,0x5FFFFD5}, + [I(47,134)] = {28,0x63FFFD5}, + [I(48,134)] = {27,0x3FFFD5}, + [I(49,134)] = {27,0x7FFFD5}, + [I(50,134)] = {27,0xBFFFD5}, + [I(51,134)] = {28,0x67FFFD5}, + [I(52,134)] = {28,0x6BFFFD5}, + [I(53,134)] = {28,0x6FFFFD5}, + [I(54,134)] = {28,0x73FFFD5}, + [I(55,134)] = {28,0x77FFFD5}, + [I(56,134)] = {28,0x7BFFFD5}, + [I(57,134)] = {28,0x7FFFFD5}, + [I(58,134)] = {29,0x173FFFD5}, + [I(59,134)] = {30,0x3EFFFFD5}, + [I(60,134)] = {64,0}, + [I(61,134)] = {28,0x83FFFD5}, + [I(62,134)] = {64,0}, + [I(63,134)] = {X32,0xFF3FFFD5}, + [I(64,134)] = {64,0}, + [I(65,134)] = {28,0x87FFFD5}, + [I(66,134)] = {29,0x177FFFD5}, + [I(67,134)] = {29,0x17BFFFD5}, + [I(68,134)] = {29,0x17FFFFD5}, + [I(69,134)] = {29,0x183FFFD5}, + [I(70,134)] = {29,0x187FFFD5}, + [I(71,134)] = {29,0x18BFFFD5}, + [I(72,134)] = {29,0x18FFFFD5}, + [I(73,134)] = {29,0x193FFFD5}, + [I(74,134)] = {29,0x197FFFD5}, + [I(75,134)] = {29,0x19BFFFD5}, + [I(76,134)] = {29,0x19FFFFD5}, + [I(77,134)] = {29,0x1A3FFFD5}, + [I(78,134)] = {29,0x1A7FFFD5}, + [I(79,134)] = {29,0x1ABFFFD5}, + [I(80,134)] = {29,0x1AFFFFD5}, + [I(81,134)] = {29,0x1B3FFFD5}, + [I(82,134)] = {29,0x1B7FFFD5}, + [I(83,134)] = {29,0x1BBFFFD5}, + [I(84,134)] = {29,0x1BFFFFD5}, + [I(85,134)] = {29,0x1C3FFFD5}, + [I(86,134)] = {29,0x1C7FFFD5}, + [I(87,134)] = {29,0x1CBFFFD5}, + [I(88,134)] = {30,0x3F3FFFD5}, + [I(89,134)] = {29,0x1CFFFFD5}, + [I(90,134)] = {30,0x3F7FFFD5}, + [I(91,134)] = {64,0}, + [I(92,134)] = {64,0}, + [I(93,134)] = {64,0}, + [I(94,134)] = {64,0}, + [I(95,134)] = {28,0x8BFFFD5}, + [I(96,134)] = {64,0}, + [I(97,134)] = {27,0xFFFFD5}, + [I(98,134)] = {28,0x8FFFFD5}, + [I(99,134)] = {27,0x13FFFD5}, + [I(100,134)] = {28,0x93FFFD5}, + [I(101,134)] = {27,0x17FFFD5}, + [I(102,134)] = {28,0x97FFFD5}, + [I(103,134)] = {28,0x9BFFFD5}, + [I(104,134)] = {28,0x9FFFFD5}, + [I(105,134)] = {27,0x1BFFFD5}, + [I(106,134)] = {29,0x1D3FFFD5}, + [I(107,134)] = {29,0x1D7FFFD5}, + [I(108,134)] = {28,0xA3FFFD5}, + [I(109,134)] = {28,0xA7FFFD5}, + [I(110,134)] = {28,0xABFFFD5}, + [I(111,134)] = {27,0x1FFFFD5}, + [I(112,134)] = {28,0xAFFFFD5}, + [I(113,134)] = {29,0x1DBFFFD5}, + [I(114,134)] = {28,0xB3FFFD5}, + [I(115,134)] = {27,0x23FFFD5}, + [I(116,134)] = {27,0x27FFFD5}, + [I(117,134)] = {28,0xB7FFFD5}, + [I(118,134)] = {29,0x1DFFFFD5}, + [I(119,134)] = {29,0x1E3FFFD5}, + [I(120,134)] = {29,0x1E7FFFD5}, + [I(121,134)] = {29,0x1EBFFFD5}, + [I(122,134)] = {29,0x1EFFFFD5}, + [I(123,134)] = {64,0}, + [I(124,134)] = {64,0}, + [I(125,134)] = {64,0}, + [I(126,134)] = {64,0}, + [I(127,134)] = {64,0}, + [I(128,134)] = {64,0}, + [I(129,134)] = {64,0}, + [I(130,134)] = {64,0}, + [I(131,134)] = {64,0}, + [I(132,134)] = {64,0}, + [I(133,134)] = {64,0}, + [I(134,134)] = {64,0}, + [I(135,134)] = {64,0}, + [I(136,134)] = {64,0}, + [I(137,134)] = {64,0}, + [I(138,134)] = {64,0}, + [I(139,134)] = {64,0}, + [I(140,134)] = {64,0}, + [I(141,134)] = {64,0}, + [I(142,134)] = {64,0}, + [I(143,134)] = {64,0}, + [I(144,134)] = {64,0}, + [I(145,134)] = {64,0}, + [I(146,134)] = {64,0}, + [I(147,134)] = {64,0}, + [I(148,134)] = {64,0}, + [I(149,134)] = {64,0}, + [I(150,134)] = {64,0}, + [I(151,134)] = {64,0}, + [I(152,134)] = {64,0}, + [I(153,134)] = {64,0}, + [I(154,134)] = {64,0}, + [I(155,134)] = {64,0}, + [I(156,134)] = {64,0}, + [I(157,134)] = {64,0}, + [I(158,134)] = {64,0}, + [I(159,134)] = {64,0}, + [I(160,134)] = {64,0}, + [I(161,134)] = {64,0}, + [I(162,134)] = {64,0}, + [I(163,134)] = {64,0}, + [I(164,134)] = {64,0}, + [I(165,134)] = {64,0}, + [I(166,134)] = {64,0}, + [I(167,134)] = {64,0}, + [I(168,134)] = {64,0}, + [I(169,134)] = {64,0}, + [I(170,134)] = {64,0}, + [I(171,134)] = {64,0}, + [I(172,134)] = {64,0}, + [I(173,134)] = {64,0}, + [I(174,134)] = {64,0}, + [I(175,134)] = {64,0}, + [I(176,134)] = {64,0}, + [I(177,134)] = {64,0}, + [I(178,134)] = {64,0}, + [I(179,134)] = {64,0}, + [I(180,134)] = {64,0}, + [I(181,134)] = {64,0}, + [I(182,134)] = {64,0}, + [I(183,134)] = {64,0}, + [I(184,134)] = {64,0}, + [I(185,134)] = {64,0}, + [I(186,134)] = {64,0}, + [I(187,134)] = {64,0}, + [I(188,134)] = {64,0}, + [I(189,134)] = {64,0}, + [I(190,134)] = {64,0}, + [I(191,134)] = {64,0}, + [I(192,134)] = {64,0}, + [I(193,134)] = {64,0}, + [I(194,134)] = {64,0}, + [I(195,134)] = {64,0}, + [I(196,134)] = {64,0}, + [I(197,134)] = {64,0}, + [I(198,134)] = {64,0}, + [I(199,134)] = {64,0}, + [I(200,134)] = {64,0}, + [I(201,134)] = {64,0}, + [I(202,134)] = {64,0}, + [I(203,134)] = {64,0}, + [I(204,134)] = {64,0}, + [I(205,134)] = {64,0}, + [I(206,134)] = {64,0}, + [I(207,134)] = {64,0}, + [I(208,134)] = {64,0}, + [I(209,134)] = {64,0}, + [I(210,134)] = {64,0}, + [I(211,134)] = {64,0}, + [I(212,134)] = {64,0}, + [I(213,134)] = {64,0}, + [I(214,134)] = {64,0}, + [I(215,134)] = {64,0}, + [I(216,134)] = {64,0}, + [I(217,134)] = {64,0}, + [I(218,134)] = {64,0}, + [I(219,134)] = {64,0}, + [I(220,134)] = {64,0}, + [I(221,134)] = {64,0}, + [I(222,134)] = {64,0}, + [I(223,134)] = {64,0}, + [I(224,134)] = {64,0}, + [I(225,134)] = {64,0}, + [I(226,134)] = {64,0}, + [I(227,134)] = {64,0}, + [I(228,134)] = {64,0}, + [I(229,134)] = {64,0}, + [I(230,134)] = {64,0}, + [I(231,134)] = {64,0}, + [I(232,134)] = {64,0}, + [I(233,134)] = {64,0}, + [I(234,134)] = {64,0}, + [I(235,134)] = {64,0}, + [I(236,134)] = {64,0}, + [I(237,134)] = {64,0}, + [I(238,134)] = {64,0}, + [I(239,134)] = {64,0}, + [I(240,134)] = {64,0}, + [I(241,134)] = {64,0}, + [I(242,134)] = {64,0}, + [I(243,134)] = {64,0}, + [I(244,134)] = {64,0}, + [I(245,134)] = {64,0}, + [I(246,134)] = {64,0}, + [I(247,134)] = {64,0}, + [I(248,134)] = {64,0}, + [I(249,134)] = {64,0}, + [I(250,134)] = {64,0}, + [I(251,134)] = {64,0}, + [I(252,134)] = {64,0}, + [I(253,134)] = {64,0}, + [I(254,134)] = {64,0}, + [I(255,134)] = {64,0}, + [I(0,135)] = {64,0}, + [I(1,135)] = {64,0}, + [I(2,135)] = {64,0}, + [I(3,135)] = {64,0}, + [I(4,135)] = {64,0}, + [I(5,135)] = {64,0}, + [I(6,135)] = {64,0}, + [I(7,135)] = {64,0}, + [I(8,135)] = {64,0}, + [I(9,135)] = {64,0}, + [I(10,135)] = {64,0}, + [I(11,135)] = {64,0}, + [I(12,135)] = {64,0}, + [I(13,135)] = {64,0}, + [I(14,135)] = {64,0}, + [I(15,135)] = {64,0}, + [I(16,135)] = {64,0}, + [I(17,135)] = {64,0}, + [I(18,135)] = {64,0}, + [I(19,135)] = {64,0}, + [I(20,135)] = {64,0}, + [I(21,135)] = {64,0}, + [I(22,135)] = {64,0}, + [I(23,135)] = {64,0}, + [I(24,135)] = {64,0}, + [I(25,135)] = {64,0}, + [I(26,135)] = {64,0}, + [I(27,135)] = {64,0}, + [I(28,135)] = {64,0}, + [I(29,135)] = {64,0}, + [I(30,135)] = {64,0}, + [I(31,135)] = {64,0}, + [I(32,135)] = {29,0xA7FFFD9}, + [I(33,135)] = {64,0}, + [I(34,135)] = {64,0}, + [I(35,135)] = {64,0}, + [I(36,135)] = {64,0}, + [I(37,135)] = {29,0xAFFFFD9}, + [I(38,135)] = {31,0x7C7FFFD9}, + [I(39,135)] = {64,0}, + [I(40,135)] = {64,0}, + [I(41,135)] = {64,0}, + [I(42,135)] = {31,0x7CFFFFD9}, + [I(43,135)] = {64,0}, + [I(44,135)] = {31,0x7D7FFFD9}, + [I(45,135)] = {29,0xB7FFFD9}, + [I(46,135)] = {29,0xBFFFFD9}, + [I(47,135)] = {29,0xC7FFFD9}, + [I(48,135)] = {28,0x7FFFD9}, + [I(49,135)] = {28,0xFFFFD9}, + [I(50,135)] = {28,0x17FFFD9}, + [I(51,135)] = {29,0xCFFFFD9}, + [I(52,135)] = {29,0xD7FFFD9}, + [I(53,135)] = {29,0xDFFFFD9}, + [I(54,135)] = {29,0xE7FFFD9}, + [I(55,135)] = {29,0xEFFFFD9}, + [I(56,135)] = {29,0xF7FFFD9}, + [I(57,135)] = {29,0xFFFFFD9}, + [I(58,135)] = {30,0x2E7FFFD9}, + [I(59,135)] = {31,0x7DFFFFD9}, + [I(60,135)] = {64,0}, + [I(61,135)] = {29,0x107FFFD9}, + [I(62,135)] = {64,0}, + [I(63,135)] = {64,0}, + [I(64,135)] = {64,0}, + [I(65,135)] = {29,0x10FFFFD9}, + [I(66,135)] = {30,0x2EFFFFD9}, + [I(67,135)] = {30,0x2F7FFFD9}, + [I(68,135)] = {30,0x2FFFFFD9}, + [I(69,135)] = {30,0x307FFFD9}, + [I(70,135)] = {30,0x30FFFFD9}, + [I(71,135)] = {30,0x317FFFD9}, + [I(72,135)] = {30,0x31FFFFD9}, + [I(73,135)] = {30,0x327FFFD9}, + [I(74,135)] = {30,0x32FFFFD9}, + [I(75,135)] = {30,0x337FFFD9}, + [I(76,135)] = {30,0x33FFFFD9}, + [I(77,135)] = {30,0x347FFFD9}, + [I(78,135)] = {30,0x34FFFFD9}, + [I(79,135)] = {30,0x357FFFD9}, + [I(80,135)] = {30,0x35FFFFD9}, + [I(81,135)] = {30,0x367FFFD9}, + [I(82,135)] = {30,0x36FFFFD9}, + [I(83,135)] = {30,0x377FFFD9}, + [I(84,135)] = {30,0x37FFFFD9}, + [I(85,135)] = {30,0x387FFFD9}, + [I(86,135)] = {30,0x38FFFFD9}, + [I(87,135)] = {30,0x397FFFD9}, + [I(88,135)] = {31,0x7E7FFFD9}, + [I(89,135)] = {30,0x39FFFFD9}, + [I(90,135)] = {31,0x7EFFFFD9}, + [I(91,135)] = {64,0}, + [I(92,135)] = {64,0}, + [I(93,135)] = {64,0}, + [I(94,135)] = {64,0}, + [I(95,135)] = {29,0x117FFFD9}, + [I(96,135)] = {64,0}, + [I(97,135)] = {28,0x1FFFFD9}, + [I(98,135)] = {29,0x11FFFFD9}, + [I(99,135)] = {28,0x27FFFD9}, + [I(100,135)] = {29,0x127FFFD9}, + [I(101,135)] = {28,0x2FFFFD9}, + [I(102,135)] = {29,0x12FFFFD9}, + [I(103,135)] = {29,0x137FFFD9}, + [I(104,135)] = {29,0x13FFFFD9}, + [I(105,135)] = {28,0x37FFFD9}, + [I(106,135)] = {30,0x3A7FFFD9}, + [I(107,135)] = {30,0x3AFFFFD9}, + [I(108,135)] = {29,0x147FFFD9}, + [I(109,135)] = {29,0x14FFFFD9}, + [I(110,135)] = {29,0x157FFFD9}, + [I(111,135)] = {28,0x3FFFFD9}, + [I(112,135)] = {29,0x15FFFFD9}, + [I(113,135)] = {30,0x3B7FFFD9}, + [I(114,135)] = {29,0x167FFFD9}, + [I(115,135)] = {28,0x47FFFD9}, + [I(116,135)] = {28,0x4FFFFD9}, + [I(117,135)] = {29,0x16FFFFD9}, + [I(118,135)] = {30,0x3BFFFFD9}, + [I(119,135)] = {30,0x3C7FFFD9}, + [I(120,135)] = {30,0x3CFFFFD9}, + [I(121,135)] = {30,0x3D7FFFD9}, + [I(122,135)] = {30,0x3DFFFFD9}, + [I(123,135)] = {64,0}, + [I(124,135)] = {64,0}, + [I(125,135)] = {64,0}, + [I(126,135)] = {64,0}, + [I(127,135)] = {64,0}, + [I(128,135)] = {64,0}, + [I(129,135)] = {64,0}, + [I(130,135)] = {64,0}, + [I(131,135)] = {64,0}, + [I(132,135)] = {64,0}, + [I(133,135)] = {64,0}, + [I(134,135)] = {64,0}, + [I(135,135)] = {64,0}, + [I(136,135)] = {64,0}, + [I(137,135)] = {64,0}, + [I(138,135)] = {64,0}, + [I(139,135)] = {64,0}, + [I(140,135)] = {64,0}, + [I(141,135)] = {64,0}, + [I(142,135)] = {64,0}, + [I(143,135)] = {64,0}, + [I(144,135)] = {64,0}, + [I(145,135)] = {64,0}, + [I(146,135)] = {64,0}, + [I(147,135)] = {64,0}, + [I(148,135)] = {64,0}, + [I(149,135)] = {64,0}, + [I(150,135)] = {64,0}, + [I(151,135)] = {64,0}, + [I(152,135)] = {64,0}, + [I(153,135)] = {64,0}, + [I(154,135)] = {64,0}, + [I(155,135)] = {64,0}, + [I(156,135)] = {64,0}, + [I(157,135)] = {64,0}, + [I(158,135)] = {64,0}, + [I(159,135)] = {64,0}, + [I(160,135)] = {64,0}, + [I(161,135)] = {64,0}, + [I(162,135)] = {64,0}, + [I(163,135)] = {64,0}, + [I(164,135)] = {64,0}, + [I(165,135)] = {64,0}, + [I(166,135)] = {64,0}, + [I(167,135)] = {64,0}, + [I(168,135)] = {64,0}, + [I(169,135)] = {64,0}, + [I(170,135)] = {64,0}, + [I(171,135)] = {64,0}, + [I(172,135)] = {64,0}, + [I(173,135)] = {64,0}, + [I(174,135)] = {64,0}, + [I(175,135)] = {64,0}, + [I(176,135)] = {64,0}, + [I(177,135)] = {64,0}, + [I(178,135)] = {64,0}, + [I(179,135)] = {64,0}, + [I(180,135)] = {64,0}, + [I(181,135)] = {64,0}, + [I(182,135)] = {64,0}, + [I(183,135)] = {64,0}, + [I(184,135)] = {64,0}, + [I(185,135)] = {64,0}, + [I(186,135)] = {64,0}, + [I(187,135)] = {64,0}, + [I(188,135)] = {64,0}, + [I(189,135)] = {64,0}, + [I(190,135)] = {64,0}, + [I(191,135)] = {64,0}, + [I(192,135)] = {64,0}, + [I(193,135)] = {64,0}, + [I(194,135)] = {64,0}, + [I(195,135)] = {64,0}, + [I(196,135)] = {64,0}, + [I(197,135)] = {64,0}, + [I(198,135)] = {64,0}, + [I(199,135)] = {64,0}, + [I(200,135)] = {64,0}, + [I(201,135)] = {64,0}, + [I(202,135)] = {64,0}, + [I(203,135)] = {64,0}, + [I(204,135)] = {64,0}, + [I(205,135)] = {64,0}, + [I(206,135)] = {64,0}, + [I(207,135)] = {64,0}, + [I(208,135)] = {64,0}, + [I(209,135)] = {64,0}, + [I(210,135)] = {64,0}, + [I(211,135)] = {64,0}, + [I(212,135)] = {64,0}, + [I(213,135)] = {64,0}, + [I(214,135)] = {64,0}, + [I(215,135)] = {64,0}, + [I(216,135)] = {64,0}, + [I(217,135)] = {64,0}, + [I(218,135)] = {64,0}, + [I(219,135)] = {64,0}, + [I(220,135)] = {64,0}, + [I(221,135)] = {64,0}, + [I(222,135)] = {64,0}, + [I(223,135)] = {64,0}, + [I(224,135)] = {64,0}, + [I(225,135)] = {64,0}, + [I(226,135)] = {64,0}, + [I(227,135)] = {64,0}, + [I(228,135)] = {64,0}, + [I(229,135)] = {64,0}, + [I(230,135)] = {64,0}, + [I(231,135)] = {64,0}, + [I(232,135)] = {64,0}, + [I(233,135)] = {64,0}, + [I(234,135)] = {64,0}, + [I(235,135)] = {64,0}, + [I(236,135)] = {64,0}, + [I(237,135)] = {64,0}, + [I(238,135)] = {64,0}, + [I(239,135)] = {64,0}, + [I(240,135)] = {64,0}, + [I(241,135)] = {64,0}, + [I(242,135)] = {64,0}, + [I(243,135)] = {64,0}, + [I(244,135)] = {64,0}, + [I(245,135)] = {64,0}, + [I(246,135)] = {64,0}, + [I(247,135)] = {64,0}, + [I(248,135)] = {64,0}, + [I(249,135)] = {64,0}, + [I(250,135)] = {64,0}, + [I(251,135)] = {64,0}, + [I(252,135)] = {64,0}, + [I(253,135)] = {64,0}, + [I(254,135)] = {64,0}, + [I(255,135)] = {64,0}, + [I(0,136)] = {64,0}, + [I(1,136)] = {64,0}, + [I(2,136)] = {64,0}, + [I(3,136)] = {64,0}, + [I(4,136)] = {64,0}, + [I(5,136)] = {64,0}, + [I(6,136)] = {64,0}, + [I(7,136)] = {64,0}, + [I(8,136)] = {64,0}, + [I(9,136)] = {64,0}, + [I(10,136)] = {64,0}, + [I(11,136)] = {64,0}, + [I(12,136)] = {64,0}, + [I(13,136)] = {64,0}, + [I(14,136)] = {64,0}, + [I(15,136)] = {64,0}, + [I(16,136)] = {64,0}, + [I(17,136)] = {64,0}, + [I(18,136)] = {64,0}, + [I(19,136)] = {64,0}, + [I(20,136)] = {64,0}, + [I(21,136)] = {64,0}, + [I(22,136)] = {64,0}, + [I(23,136)] = {64,0}, + [I(24,136)] = {64,0}, + [I(25,136)] = {64,0}, + [I(26,136)] = {64,0}, + [I(27,136)] = {64,0}, + [I(28,136)] = {64,0}, + [I(29,136)] = {64,0}, + [I(30,136)] = {64,0}, + [I(31,136)] = {64,0}, + [I(32,136)] = {28,0x53FFFD6}, + [I(33,136)] = {X32,0xFE3FFFD6}, + [I(34,136)] = {X32,0xFE7FFFD6}, + [I(35,136)] = {64,0}, + [I(36,136)] = {64,0}, + [I(37,136)] = {28,0x57FFFD6}, + [I(38,136)] = {30,0x3E3FFFD6}, + [I(39,136)] = {64,0}, + [I(40,136)] = {X32,0xFEBFFFD6}, + [I(41,136)] = {X32,0xFEFFFFD6}, + [I(42,136)] = {30,0x3E7FFFD6}, + [I(43,136)] = {64,0}, + [I(44,136)] = {30,0x3EBFFFD6}, + [I(45,136)] = {28,0x5BFFFD6}, + [I(46,136)] = {28,0x5FFFFD6}, + [I(47,136)] = {28,0x63FFFD6}, + [I(48,136)] = {27,0x3FFFD6}, + [I(49,136)] = {27,0x7FFFD6}, + [I(50,136)] = {27,0xBFFFD6}, + [I(51,136)] = {28,0x67FFFD6}, + [I(52,136)] = {28,0x6BFFFD6}, + [I(53,136)] = {28,0x6FFFFD6}, + [I(54,136)] = {28,0x73FFFD6}, + [I(55,136)] = {28,0x77FFFD6}, + [I(56,136)] = {28,0x7BFFFD6}, + [I(57,136)] = {28,0x7FFFFD6}, + [I(58,136)] = {29,0x173FFFD6}, + [I(59,136)] = {30,0x3EFFFFD6}, + [I(60,136)] = {64,0}, + [I(61,136)] = {28,0x83FFFD6}, + [I(62,136)] = {64,0}, + [I(63,136)] = {X32,0xFF3FFFD6}, + [I(64,136)] = {64,0}, + [I(65,136)] = {28,0x87FFFD6}, + [I(66,136)] = {29,0x177FFFD6}, + [I(67,136)] = {29,0x17BFFFD6}, + [I(68,136)] = {29,0x17FFFFD6}, + [I(69,136)] = {29,0x183FFFD6}, + [I(70,136)] = {29,0x187FFFD6}, + [I(71,136)] = {29,0x18BFFFD6}, + [I(72,136)] = {29,0x18FFFFD6}, + [I(73,136)] = {29,0x193FFFD6}, + [I(74,136)] = {29,0x197FFFD6}, + [I(75,136)] = {29,0x19BFFFD6}, + [I(76,136)] = {29,0x19FFFFD6}, + [I(77,136)] = {29,0x1A3FFFD6}, + [I(78,136)] = {29,0x1A7FFFD6}, + [I(79,136)] = {29,0x1ABFFFD6}, + [I(80,136)] = {29,0x1AFFFFD6}, + [I(81,136)] = {29,0x1B3FFFD6}, + [I(82,136)] = {29,0x1B7FFFD6}, + [I(83,136)] = {29,0x1BBFFFD6}, + [I(84,136)] = {29,0x1BFFFFD6}, + [I(85,136)] = {29,0x1C3FFFD6}, + [I(86,136)] = {29,0x1C7FFFD6}, + [I(87,136)] = {29,0x1CBFFFD6}, + [I(88,136)] = {30,0x3F3FFFD6}, + [I(89,136)] = {29,0x1CFFFFD6}, + [I(90,136)] = {30,0x3F7FFFD6}, + [I(91,136)] = {64,0}, + [I(92,136)] = {64,0}, + [I(93,136)] = {64,0}, + [I(94,136)] = {64,0}, + [I(95,136)] = {28,0x8BFFFD6}, + [I(96,136)] = {64,0}, + [I(97,136)] = {27,0xFFFFD6}, + [I(98,136)] = {28,0x8FFFFD6}, + [I(99,136)] = {27,0x13FFFD6}, + [I(100,136)] = {28,0x93FFFD6}, + [I(101,136)] = {27,0x17FFFD6}, + [I(102,136)] = {28,0x97FFFD6}, + [I(103,136)] = {28,0x9BFFFD6}, + [I(104,136)] = {28,0x9FFFFD6}, + [I(105,136)] = {27,0x1BFFFD6}, + [I(106,136)] = {29,0x1D3FFFD6}, + [I(107,136)] = {29,0x1D7FFFD6}, + [I(108,136)] = {28,0xA3FFFD6}, + [I(109,136)] = {28,0xA7FFFD6}, + [I(110,136)] = {28,0xABFFFD6}, + [I(111,136)] = {27,0x1FFFFD6}, + [I(112,136)] = {28,0xAFFFFD6}, + [I(113,136)] = {29,0x1DBFFFD6}, + [I(114,136)] = {28,0xB3FFFD6}, + [I(115,136)] = {27,0x23FFFD6}, + [I(116,136)] = {27,0x27FFFD6}, + [I(117,136)] = {28,0xB7FFFD6}, + [I(118,136)] = {29,0x1DFFFFD6}, + [I(119,136)] = {29,0x1E3FFFD6}, + [I(120,136)] = {29,0x1E7FFFD6}, + [I(121,136)] = {29,0x1EBFFFD6}, + [I(122,136)] = {29,0x1EFFFFD6}, + [I(123,136)] = {64,0}, + [I(124,136)] = {64,0}, + [I(125,136)] = {64,0}, + [I(126,136)] = {64,0}, + [I(127,136)] = {64,0}, + [I(128,136)] = {64,0}, + [I(129,136)] = {64,0}, + [I(130,136)] = {64,0}, + [I(131,136)] = {64,0}, + [I(132,136)] = {64,0}, + [I(133,136)] = {64,0}, + [I(134,136)] = {64,0}, + [I(135,136)] = {64,0}, + [I(136,136)] = {64,0}, + [I(137,136)] = {64,0}, + [I(138,136)] = {64,0}, + [I(139,136)] = {64,0}, + [I(140,136)] = {64,0}, + [I(141,136)] = {64,0}, + [I(142,136)] = {64,0}, + [I(143,136)] = {64,0}, + [I(144,136)] = {64,0}, + [I(145,136)] = {64,0}, + [I(146,136)] = {64,0}, + [I(147,136)] = {64,0}, + [I(148,136)] = {64,0}, + [I(149,136)] = {64,0}, + [I(150,136)] = {64,0}, + [I(151,136)] = {64,0}, + [I(152,136)] = {64,0}, + [I(153,136)] = {64,0}, + [I(154,136)] = {64,0}, + [I(155,136)] = {64,0}, + [I(156,136)] = {64,0}, + [I(157,136)] = {64,0}, + [I(158,136)] = {64,0}, + [I(159,136)] = {64,0}, + [I(160,136)] = {64,0}, + [I(161,136)] = {64,0}, + [I(162,136)] = {64,0}, + [I(163,136)] = {64,0}, + [I(164,136)] = {64,0}, + [I(165,136)] = {64,0}, + [I(166,136)] = {64,0}, + [I(167,136)] = {64,0}, + [I(168,136)] = {64,0}, + [I(169,136)] = {64,0}, + [I(170,136)] = {64,0}, + [I(171,136)] = {64,0}, + [I(172,136)] = {64,0}, + [I(173,136)] = {64,0}, + [I(174,136)] = {64,0}, + [I(175,136)] = {64,0}, + [I(176,136)] = {64,0}, + [I(177,136)] = {64,0}, + [I(178,136)] = {64,0}, + [I(179,136)] = {64,0}, + [I(180,136)] = {64,0}, + [I(181,136)] = {64,0}, + [I(182,136)] = {64,0}, + [I(183,136)] = {64,0}, + [I(184,136)] = {64,0}, + [I(185,136)] = {64,0}, + [I(186,136)] = {64,0}, + [I(187,136)] = {64,0}, + [I(188,136)] = {64,0}, + [I(189,136)] = {64,0}, + [I(190,136)] = {64,0}, + [I(191,136)] = {64,0}, + [I(192,136)] = {64,0}, + [I(193,136)] = {64,0}, + [I(194,136)] = {64,0}, + [I(195,136)] = {64,0}, + [I(196,136)] = {64,0}, + [I(197,136)] = {64,0}, + [I(198,136)] = {64,0}, + [I(199,136)] = {64,0}, + [I(200,136)] = {64,0}, + [I(201,136)] = {64,0}, + [I(202,136)] = {64,0}, + [I(203,136)] = {64,0}, + [I(204,136)] = {64,0}, + [I(205,136)] = {64,0}, + [I(206,136)] = {64,0}, + [I(207,136)] = {64,0}, + [I(208,136)] = {64,0}, + [I(209,136)] = {64,0}, + [I(210,136)] = {64,0}, + [I(211,136)] = {64,0}, + [I(212,136)] = {64,0}, + [I(213,136)] = {64,0}, + [I(214,136)] = {64,0}, + [I(215,136)] = {64,0}, + [I(216,136)] = {64,0}, + [I(217,136)] = {64,0}, + [I(218,136)] = {64,0}, + [I(219,136)] = {64,0}, + [I(220,136)] = {64,0}, + [I(221,136)] = {64,0}, + [I(222,136)] = {64,0}, + [I(223,136)] = {64,0}, + [I(224,136)] = {64,0}, + [I(225,136)] = {64,0}, + [I(226,136)] = {64,0}, + [I(227,136)] = {64,0}, + [I(228,136)] = {64,0}, + [I(229,136)] = {64,0}, + [I(230,136)] = {64,0}, + [I(231,136)] = {64,0}, + [I(232,136)] = {64,0}, + [I(233,136)] = {64,0}, + [I(234,136)] = {64,0}, + [I(235,136)] = {64,0}, + [I(236,136)] = {64,0}, + [I(237,136)] = {64,0}, + [I(238,136)] = {64,0}, + [I(239,136)] = {64,0}, + [I(240,136)] = {64,0}, + [I(241,136)] = {64,0}, + [I(242,136)] = {64,0}, + [I(243,136)] = {64,0}, + [I(244,136)] = {64,0}, + [I(245,136)] = {64,0}, + [I(246,136)] = {64,0}, + [I(247,136)] = {64,0}, + [I(248,136)] = {64,0}, + [I(249,136)] = {64,0}, + [I(250,136)] = {64,0}, + [I(251,136)] = {64,0}, + [I(252,136)] = {64,0}, + [I(253,136)] = {64,0}, + [I(254,136)] = {64,0}, + [I(255,136)] = {64,0}, + [I(0,137)] = {64,0}, + [I(1,137)] = {64,0}, + [I(2,137)] = {64,0}, + [I(3,137)] = {64,0}, + [I(4,137)] = {64,0}, + [I(5,137)] = {64,0}, + [I(6,137)] = {64,0}, + [I(7,137)] = {64,0}, + [I(8,137)] = {64,0}, + [I(9,137)] = {64,0}, + [I(10,137)] = {64,0}, + [I(11,137)] = {64,0}, + [I(12,137)] = {64,0}, + [I(13,137)] = {64,0}, + [I(14,137)] = {64,0}, + [I(15,137)] = {64,0}, + [I(16,137)] = {64,0}, + [I(17,137)] = {64,0}, + [I(18,137)] = {64,0}, + [I(19,137)] = {64,0}, + [I(20,137)] = {64,0}, + [I(21,137)] = {64,0}, + [I(22,137)] = {64,0}, + [I(23,137)] = {64,0}, + [I(24,137)] = {64,0}, + [I(25,137)] = {64,0}, + [I(26,137)] = {64,0}, + [I(27,137)] = {64,0}, + [I(28,137)] = {64,0}, + [I(29,137)] = {64,0}, + [I(30,137)] = {64,0}, + [I(31,137)] = {64,0}, + [I(32,137)] = {29,0xA7FFFDA}, + [I(33,137)] = {64,0}, + [I(34,137)] = {64,0}, + [I(35,137)] = {64,0}, + [I(36,137)] = {64,0}, + [I(37,137)] = {29,0xAFFFFDA}, + [I(38,137)] = {31,0x7C7FFFDA}, + [I(39,137)] = {64,0}, + [I(40,137)] = {64,0}, + [I(41,137)] = {64,0}, + [I(42,137)] = {31,0x7CFFFFDA}, + [I(43,137)] = {64,0}, + [I(44,137)] = {31,0x7D7FFFDA}, + [I(45,137)] = {29,0xB7FFFDA}, + [I(46,137)] = {29,0xBFFFFDA}, + [I(47,137)] = {29,0xC7FFFDA}, + [I(48,137)] = {28,0x7FFFDA}, + [I(49,137)] = {28,0xFFFFDA}, + [I(50,137)] = {28,0x17FFFDA}, + [I(51,137)] = {29,0xCFFFFDA}, + [I(52,137)] = {29,0xD7FFFDA}, + [I(53,137)] = {29,0xDFFFFDA}, + [I(54,137)] = {29,0xE7FFFDA}, + [I(55,137)] = {29,0xEFFFFDA}, + [I(56,137)] = {29,0xF7FFFDA}, + [I(57,137)] = {29,0xFFFFFDA}, + [I(58,137)] = {30,0x2E7FFFDA}, + [I(59,137)] = {31,0x7DFFFFDA}, + [I(60,137)] = {64,0}, + [I(61,137)] = {29,0x107FFFDA}, + [I(62,137)] = {64,0}, + [I(63,137)] = {64,0}, + [I(64,137)] = {64,0}, + [I(65,137)] = {29,0x10FFFFDA}, + [I(66,137)] = {30,0x2EFFFFDA}, + [I(67,137)] = {30,0x2F7FFFDA}, + [I(68,137)] = {30,0x2FFFFFDA}, + [I(69,137)] = {30,0x307FFFDA}, + [I(70,137)] = {30,0x30FFFFDA}, + [I(71,137)] = {30,0x317FFFDA}, + [I(72,137)] = {30,0x31FFFFDA}, + [I(73,137)] = {30,0x327FFFDA}, + [I(74,137)] = {30,0x32FFFFDA}, + [I(75,137)] = {30,0x337FFFDA}, + [I(76,137)] = {30,0x33FFFFDA}, + [I(77,137)] = {30,0x347FFFDA}, + [I(78,137)] = {30,0x34FFFFDA}, + [I(79,137)] = {30,0x357FFFDA}, + [I(80,137)] = {30,0x35FFFFDA}, + [I(81,137)] = {30,0x367FFFDA}, + [I(82,137)] = {30,0x36FFFFDA}, + [I(83,137)] = {30,0x377FFFDA}, + [I(84,137)] = {30,0x37FFFFDA}, + [I(85,137)] = {30,0x387FFFDA}, + [I(86,137)] = {30,0x38FFFFDA}, + [I(87,137)] = {30,0x397FFFDA}, + [I(88,137)] = {31,0x7E7FFFDA}, + [I(89,137)] = {30,0x39FFFFDA}, + [I(90,137)] = {31,0x7EFFFFDA}, + [I(91,137)] = {64,0}, + [I(92,137)] = {64,0}, + [I(93,137)] = {64,0}, + [I(94,137)] = {64,0}, + [I(95,137)] = {29,0x117FFFDA}, + [I(96,137)] = {64,0}, + [I(97,137)] = {28,0x1FFFFDA}, + [I(98,137)] = {29,0x11FFFFDA}, + [I(99,137)] = {28,0x27FFFDA}, + [I(100,137)] = {29,0x127FFFDA}, + [I(101,137)] = {28,0x2FFFFDA}, + [I(102,137)] = {29,0x12FFFFDA}, + [I(103,137)] = {29,0x137FFFDA}, + [I(104,137)] = {29,0x13FFFFDA}, + [I(105,137)] = {28,0x37FFFDA}, + [I(106,137)] = {30,0x3A7FFFDA}, + [I(107,137)] = {30,0x3AFFFFDA}, + [I(108,137)] = {29,0x147FFFDA}, + [I(109,137)] = {29,0x14FFFFDA}, + [I(110,137)] = {29,0x157FFFDA}, + [I(111,137)] = {28,0x3FFFFDA}, + [I(112,137)] = {29,0x15FFFFDA}, + [I(113,137)] = {30,0x3B7FFFDA}, + [I(114,137)] = {29,0x167FFFDA}, + [I(115,137)] = {28,0x47FFFDA}, + [I(116,137)] = {28,0x4FFFFDA}, + [I(117,137)] = {29,0x16FFFFDA}, + [I(118,137)] = {30,0x3BFFFFDA}, + [I(119,137)] = {30,0x3C7FFFDA}, + [I(120,137)] = {30,0x3CFFFFDA}, + [I(121,137)] = {30,0x3D7FFFDA}, + [I(122,137)] = {30,0x3DFFFFDA}, + [I(123,137)] = {64,0}, + [I(124,137)] = {64,0}, + [I(125,137)] = {64,0}, + [I(126,137)] = {64,0}, + [I(127,137)] = {64,0}, + [I(128,137)] = {64,0}, + [I(129,137)] = {64,0}, + [I(130,137)] = {64,0}, + [I(131,137)] = {64,0}, + [I(132,137)] = {64,0}, + [I(133,137)] = {64,0}, + [I(134,137)] = {64,0}, + [I(135,137)] = {64,0}, + [I(136,137)] = {64,0}, + [I(137,137)] = {64,0}, + [I(138,137)] = {64,0}, + [I(139,137)] = {64,0}, + [I(140,137)] = {64,0}, + [I(141,137)] = {64,0}, + [I(142,137)] = {64,0}, + [I(143,137)] = {64,0}, + [I(144,137)] = {64,0}, + [I(145,137)] = {64,0}, + [I(146,137)] = {64,0}, + [I(147,137)] = {64,0}, + [I(148,137)] = {64,0}, + [I(149,137)] = {64,0}, + [I(150,137)] = {64,0}, + [I(151,137)] = {64,0}, + [I(152,137)] = {64,0}, + [I(153,137)] = {64,0}, + [I(154,137)] = {64,0}, + [I(155,137)] = {64,0}, + [I(156,137)] = {64,0}, + [I(157,137)] = {64,0}, + [I(158,137)] = {64,0}, + [I(159,137)] = {64,0}, + [I(160,137)] = {64,0}, + [I(161,137)] = {64,0}, + [I(162,137)] = {64,0}, + [I(163,137)] = {64,0}, + [I(164,137)] = {64,0}, + [I(165,137)] = {64,0}, + [I(166,137)] = {64,0}, + [I(167,137)] = {64,0}, + [I(168,137)] = {64,0}, + [I(169,137)] = {64,0}, + [I(170,137)] = {64,0}, + [I(171,137)] = {64,0}, + [I(172,137)] = {64,0}, + [I(173,137)] = {64,0}, + [I(174,137)] = {64,0}, + [I(175,137)] = {64,0}, + [I(176,137)] = {64,0}, + [I(177,137)] = {64,0}, + [I(178,137)] = {64,0}, + [I(179,137)] = {64,0}, + [I(180,137)] = {64,0}, + [I(181,137)] = {64,0}, + [I(182,137)] = {64,0}, + [I(183,137)] = {64,0}, + [I(184,137)] = {64,0}, + [I(185,137)] = {64,0}, + [I(186,137)] = {64,0}, + [I(187,137)] = {64,0}, + [I(188,137)] = {64,0}, + [I(189,137)] = {64,0}, + [I(190,137)] = {64,0}, + [I(191,137)] = {64,0}, + [I(192,137)] = {64,0}, + [I(193,137)] = {64,0}, + [I(194,137)] = {64,0}, + [I(195,137)] = {64,0}, + [I(196,137)] = {64,0}, + [I(197,137)] = {64,0}, + [I(198,137)] = {64,0}, + [I(199,137)] = {64,0}, + [I(200,137)] = {64,0}, + [I(201,137)] = {64,0}, + [I(202,137)] = {64,0}, + [I(203,137)] = {64,0}, + [I(204,137)] = {64,0}, + [I(205,137)] = {64,0}, + [I(206,137)] = {64,0}, + [I(207,137)] = {64,0}, + [I(208,137)] = {64,0}, + [I(209,137)] = {64,0}, + [I(210,137)] = {64,0}, + [I(211,137)] = {64,0}, + [I(212,137)] = {64,0}, + [I(213,137)] = {64,0}, + [I(214,137)] = {64,0}, + [I(215,137)] = {64,0}, + [I(216,137)] = {64,0}, + [I(217,137)] = {64,0}, + [I(218,137)] = {64,0}, + [I(219,137)] = {64,0}, + [I(220,137)] = {64,0}, + [I(221,137)] = {64,0}, + [I(222,137)] = {64,0}, + [I(223,137)] = {64,0}, + [I(224,137)] = {64,0}, + [I(225,137)] = {64,0}, + [I(226,137)] = {64,0}, + [I(227,137)] = {64,0}, + [I(228,137)] = {64,0}, + [I(229,137)] = {64,0}, + [I(230,137)] = {64,0}, + [I(231,137)] = {64,0}, + [I(232,137)] = {64,0}, + [I(233,137)] = {64,0}, + [I(234,137)] = {64,0}, + [I(235,137)] = {64,0}, + [I(236,137)] = {64,0}, + [I(237,137)] = {64,0}, + [I(238,137)] = {64,0}, + [I(239,137)] = {64,0}, + [I(240,137)] = {64,0}, + [I(241,137)] = {64,0}, + [I(242,137)] = {64,0}, + [I(243,137)] = {64,0}, + [I(244,137)] = {64,0}, + [I(245,137)] = {64,0}, + [I(246,137)] = {64,0}, + [I(247,137)] = {64,0}, + [I(248,137)] = {64,0}, + [I(249,137)] = {64,0}, + [I(250,137)] = {64,0}, + [I(251,137)] = {64,0}, + [I(252,137)] = {64,0}, + [I(253,137)] = {64,0}, + [I(254,137)] = {64,0}, + [I(255,137)] = {64,0}, + [I(0,138)] = {64,0}, + [I(1,138)] = {64,0}, + [I(2,138)] = {64,0}, + [I(3,138)] = {64,0}, + [I(4,138)] = {64,0}, + [I(5,138)] = {64,0}, + [I(6,138)] = {64,0}, + [I(7,138)] = {64,0}, + [I(8,138)] = {64,0}, + [I(9,138)] = {64,0}, + [I(10,138)] = {64,0}, + [I(11,138)] = {64,0}, + [I(12,138)] = {64,0}, + [I(13,138)] = {64,0}, + [I(14,138)] = {64,0}, + [I(15,138)] = {64,0}, + [I(16,138)] = {64,0}, + [I(17,138)] = {64,0}, + [I(18,138)] = {64,0}, + [I(19,138)] = {64,0}, + [I(20,138)] = {64,0}, + [I(21,138)] = {64,0}, + [I(22,138)] = {64,0}, + [I(23,138)] = {64,0}, + [I(24,138)] = {64,0}, + [I(25,138)] = {64,0}, + [I(26,138)] = {64,0}, + [I(27,138)] = {64,0}, + [I(28,138)] = {64,0}, + [I(29,138)] = {64,0}, + [I(30,138)] = {64,0}, + [I(31,138)] = {64,0}, + [I(32,138)] = {29,0xA7FFFDB}, + [I(33,138)] = {64,0}, + [I(34,138)] = {64,0}, + [I(35,138)] = {64,0}, + [I(36,138)] = {64,0}, + [I(37,138)] = {29,0xAFFFFDB}, + [I(38,138)] = {31,0x7C7FFFDB}, + [I(39,138)] = {64,0}, + [I(40,138)] = {64,0}, + [I(41,138)] = {64,0}, + [I(42,138)] = {31,0x7CFFFFDB}, + [I(43,138)] = {64,0}, + [I(44,138)] = {31,0x7D7FFFDB}, + [I(45,138)] = {29,0xB7FFFDB}, + [I(46,138)] = {29,0xBFFFFDB}, + [I(47,138)] = {29,0xC7FFFDB}, + [I(48,138)] = {28,0x7FFFDB}, + [I(49,138)] = {28,0xFFFFDB}, + [I(50,138)] = {28,0x17FFFDB}, + [I(51,138)] = {29,0xCFFFFDB}, + [I(52,138)] = {29,0xD7FFFDB}, + [I(53,138)] = {29,0xDFFFFDB}, + [I(54,138)] = {29,0xE7FFFDB}, + [I(55,138)] = {29,0xEFFFFDB}, + [I(56,138)] = {29,0xF7FFFDB}, + [I(57,138)] = {29,0xFFFFFDB}, + [I(58,138)] = {30,0x2E7FFFDB}, + [I(59,138)] = {31,0x7DFFFFDB}, + [I(60,138)] = {64,0}, + [I(61,138)] = {29,0x107FFFDB}, + [I(62,138)] = {64,0}, + [I(63,138)] = {64,0}, + [I(64,138)] = {64,0}, + [I(65,138)] = {29,0x10FFFFDB}, + [I(66,138)] = {30,0x2EFFFFDB}, + [I(67,138)] = {30,0x2F7FFFDB}, + [I(68,138)] = {30,0x2FFFFFDB}, + [I(69,138)] = {30,0x307FFFDB}, + [I(70,138)] = {30,0x30FFFFDB}, + [I(71,138)] = {30,0x317FFFDB}, + [I(72,138)] = {30,0x31FFFFDB}, + [I(73,138)] = {30,0x327FFFDB}, + [I(74,138)] = {30,0x32FFFFDB}, + [I(75,138)] = {30,0x337FFFDB}, + [I(76,138)] = {30,0x33FFFFDB}, + [I(77,138)] = {30,0x347FFFDB}, + [I(78,138)] = {30,0x34FFFFDB}, + [I(79,138)] = {30,0x357FFFDB}, + [I(80,138)] = {30,0x35FFFFDB}, + [I(81,138)] = {30,0x367FFFDB}, + [I(82,138)] = {30,0x36FFFFDB}, + [I(83,138)] = {30,0x377FFFDB}, + [I(84,138)] = {30,0x37FFFFDB}, + [I(85,138)] = {30,0x387FFFDB}, + [I(86,138)] = {30,0x38FFFFDB}, + [I(87,138)] = {30,0x397FFFDB}, + [I(88,138)] = {31,0x7E7FFFDB}, + [I(89,138)] = {30,0x39FFFFDB}, + [I(90,138)] = {31,0x7EFFFFDB}, + [I(91,138)] = {64,0}, + [I(92,138)] = {64,0}, + [I(93,138)] = {64,0}, + [I(94,138)] = {64,0}, + [I(95,138)] = {29,0x117FFFDB}, + [I(96,138)] = {64,0}, + [I(97,138)] = {28,0x1FFFFDB}, + [I(98,138)] = {29,0x11FFFFDB}, + [I(99,138)] = {28,0x27FFFDB}, + [I(100,138)] = {29,0x127FFFDB}, + [I(101,138)] = {28,0x2FFFFDB}, + [I(102,138)] = {29,0x12FFFFDB}, + [I(103,138)] = {29,0x137FFFDB}, + [I(104,138)] = {29,0x13FFFFDB}, + [I(105,138)] = {28,0x37FFFDB}, + [I(106,138)] = {30,0x3A7FFFDB}, + [I(107,138)] = {30,0x3AFFFFDB}, + [I(108,138)] = {29,0x147FFFDB}, + [I(109,138)] = {29,0x14FFFFDB}, + [I(110,138)] = {29,0x157FFFDB}, + [I(111,138)] = {28,0x3FFFFDB}, + [I(112,138)] = {29,0x15FFFFDB}, + [I(113,138)] = {30,0x3B7FFFDB}, + [I(114,138)] = {29,0x167FFFDB}, + [I(115,138)] = {28,0x47FFFDB}, + [I(116,138)] = {28,0x4FFFFDB}, + [I(117,138)] = {29,0x16FFFFDB}, + [I(118,138)] = {30,0x3BFFFFDB}, + [I(119,138)] = {30,0x3C7FFFDB}, + [I(120,138)] = {30,0x3CFFFFDB}, + [I(121,138)] = {30,0x3D7FFFDB}, + [I(122,138)] = {30,0x3DFFFFDB}, + [I(123,138)] = {64,0}, + [I(124,138)] = {64,0}, + [I(125,138)] = {64,0}, + [I(126,138)] = {64,0}, + [I(127,138)] = {64,0}, + [I(128,138)] = {64,0}, + [I(129,138)] = {64,0}, + [I(130,138)] = {64,0}, + [I(131,138)] = {64,0}, + [I(132,138)] = {64,0}, + [I(133,138)] = {64,0}, + [I(134,138)] = {64,0}, + [I(135,138)] = {64,0}, + [I(136,138)] = {64,0}, + [I(137,138)] = {64,0}, + [I(138,138)] = {64,0}, + [I(139,138)] = {64,0}, + [I(140,138)] = {64,0}, + [I(141,138)] = {64,0}, + [I(142,138)] = {64,0}, + [I(143,138)] = {64,0}, + [I(144,138)] = {64,0}, + [I(145,138)] = {64,0}, + [I(146,138)] = {64,0}, + [I(147,138)] = {64,0}, + [I(148,138)] = {64,0}, + [I(149,138)] = {64,0}, + [I(150,138)] = {64,0}, + [I(151,138)] = {64,0}, + [I(152,138)] = {64,0}, + [I(153,138)] = {64,0}, + [I(154,138)] = {64,0}, + [I(155,138)] = {64,0}, + [I(156,138)] = {64,0}, + [I(157,138)] = {64,0}, + [I(158,138)] = {64,0}, + [I(159,138)] = {64,0}, + [I(160,138)] = {64,0}, + [I(161,138)] = {64,0}, + [I(162,138)] = {64,0}, + [I(163,138)] = {64,0}, + [I(164,138)] = {64,0}, + [I(165,138)] = {64,0}, + [I(166,138)] = {64,0}, + [I(167,138)] = {64,0}, + [I(168,138)] = {64,0}, + [I(169,138)] = {64,0}, + [I(170,138)] = {64,0}, + [I(171,138)] = {64,0}, + [I(172,138)] = {64,0}, + [I(173,138)] = {64,0}, + [I(174,138)] = {64,0}, + [I(175,138)] = {64,0}, + [I(176,138)] = {64,0}, + [I(177,138)] = {64,0}, + [I(178,138)] = {64,0}, + [I(179,138)] = {64,0}, + [I(180,138)] = {64,0}, + [I(181,138)] = {64,0}, + [I(182,138)] = {64,0}, + [I(183,138)] = {64,0}, + [I(184,138)] = {64,0}, + [I(185,138)] = {64,0}, + [I(186,138)] = {64,0}, + [I(187,138)] = {64,0}, + [I(188,138)] = {64,0}, + [I(189,138)] = {64,0}, + [I(190,138)] = {64,0}, + [I(191,138)] = {64,0}, + [I(192,138)] = {64,0}, + [I(193,138)] = {64,0}, + [I(194,138)] = {64,0}, + [I(195,138)] = {64,0}, + [I(196,138)] = {64,0}, + [I(197,138)] = {64,0}, + [I(198,138)] = {64,0}, + [I(199,138)] = {64,0}, + [I(200,138)] = {64,0}, + [I(201,138)] = {64,0}, + [I(202,138)] = {64,0}, + [I(203,138)] = {64,0}, + [I(204,138)] = {64,0}, + [I(205,138)] = {64,0}, + [I(206,138)] = {64,0}, + [I(207,138)] = {64,0}, + [I(208,138)] = {64,0}, + [I(209,138)] = {64,0}, + [I(210,138)] = {64,0}, + [I(211,138)] = {64,0}, + [I(212,138)] = {64,0}, + [I(213,138)] = {64,0}, + [I(214,138)] = {64,0}, + [I(215,138)] = {64,0}, + [I(216,138)] = {64,0}, + [I(217,138)] = {64,0}, + [I(218,138)] = {64,0}, + [I(219,138)] = {64,0}, + [I(220,138)] = {64,0}, + [I(221,138)] = {64,0}, + [I(222,138)] = {64,0}, + [I(223,138)] = {64,0}, + [I(224,138)] = {64,0}, + [I(225,138)] = {64,0}, + [I(226,138)] = {64,0}, + [I(227,138)] = {64,0}, + [I(228,138)] = {64,0}, + [I(229,138)] = {64,0}, + [I(230,138)] = {64,0}, + [I(231,138)] = {64,0}, + [I(232,138)] = {64,0}, + [I(233,138)] = {64,0}, + [I(234,138)] = {64,0}, + [I(235,138)] = {64,0}, + [I(236,138)] = {64,0}, + [I(237,138)] = {64,0}, + [I(238,138)] = {64,0}, + [I(239,138)] = {64,0}, + [I(240,138)] = {64,0}, + [I(241,138)] = {64,0}, + [I(242,138)] = {64,0}, + [I(243,138)] = {64,0}, + [I(244,138)] = {64,0}, + [I(245,138)] = {64,0}, + [I(246,138)] = {64,0}, + [I(247,138)] = {64,0}, + [I(248,138)] = {64,0}, + [I(249,138)] = {64,0}, + [I(250,138)] = {64,0}, + [I(251,138)] = {64,0}, + [I(252,138)] = {64,0}, + [I(253,138)] = {64,0}, + [I(254,138)] = {64,0}, + [I(255,138)] = {64,0}, + [I(0,139)] = {64,0}, + [I(1,139)] = {64,0}, + [I(2,139)] = {64,0}, + [I(3,139)] = {64,0}, + [I(4,139)] = {64,0}, + [I(5,139)] = {64,0}, + [I(6,139)] = {64,0}, + [I(7,139)] = {64,0}, + [I(8,139)] = {64,0}, + [I(9,139)] = {64,0}, + [I(10,139)] = {64,0}, + [I(11,139)] = {64,0}, + [I(12,139)] = {64,0}, + [I(13,139)] = {64,0}, + [I(14,139)] = {64,0}, + [I(15,139)] = {64,0}, + [I(16,139)] = {64,0}, + [I(17,139)] = {64,0}, + [I(18,139)] = {64,0}, + [I(19,139)] = {64,0}, + [I(20,139)] = {64,0}, + [I(21,139)] = {64,0}, + [I(22,139)] = {64,0}, + [I(23,139)] = {64,0}, + [I(24,139)] = {64,0}, + [I(25,139)] = {64,0}, + [I(26,139)] = {64,0}, + [I(27,139)] = {64,0}, + [I(28,139)] = {64,0}, + [I(29,139)] = {64,0}, + [I(30,139)] = {64,0}, + [I(31,139)] = {64,0}, + [I(32,139)] = {29,0xA7FFFDC}, + [I(33,139)] = {64,0}, + [I(34,139)] = {64,0}, + [I(35,139)] = {64,0}, + [I(36,139)] = {64,0}, + [I(37,139)] = {29,0xAFFFFDC}, + [I(38,139)] = {31,0x7C7FFFDC}, + [I(39,139)] = {64,0}, + [I(40,139)] = {64,0}, + [I(41,139)] = {64,0}, + [I(42,139)] = {31,0x7CFFFFDC}, + [I(43,139)] = {64,0}, + [I(44,139)] = {31,0x7D7FFFDC}, + [I(45,139)] = {29,0xB7FFFDC}, + [I(46,139)] = {29,0xBFFFFDC}, + [I(47,139)] = {29,0xC7FFFDC}, + [I(48,139)] = {28,0x7FFFDC}, + [I(49,139)] = {28,0xFFFFDC}, + [I(50,139)] = {28,0x17FFFDC}, + [I(51,139)] = {29,0xCFFFFDC}, + [I(52,139)] = {29,0xD7FFFDC}, + [I(53,139)] = {29,0xDFFFFDC}, + [I(54,139)] = {29,0xE7FFFDC}, + [I(55,139)] = {29,0xEFFFFDC}, + [I(56,139)] = {29,0xF7FFFDC}, + [I(57,139)] = {29,0xFFFFFDC}, + [I(58,139)] = {30,0x2E7FFFDC}, + [I(59,139)] = {31,0x7DFFFFDC}, + [I(60,139)] = {64,0}, + [I(61,139)] = {29,0x107FFFDC}, + [I(62,139)] = {64,0}, + [I(63,139)] = {64,0}, + [I(64,139)] = {64,0}, + [I(65,139)] = {29,0x10FFFFDC}, + [I(66,139)] = {30,0x2EFFFFDC}, + [I(67,139)] = {30,0x2F7FFFDC}, + [I(68,139)] = {30,0x2FFFFFDC}, + [I(69,139)] = {30,0x307FFFDC}, + [I(70,139)] = {30,0x30FFFFDC}, + [I(71,139)] = {30,0x317FFFDC}, + [I(72,139)] = {30,0x31FFFFDC}, + [I(73,139)] = {30,0x327FFFDC}, + [I(74,139)] = {30,0x32FFFFDC}, + [I(75,139)] = {30,0x337FFFDC}, + [I(76,139)] = {30,0x33FFFFDC}, + [I(77,139)] = {30,0x347FFFDC}, + [I(78,139)] = {30,0x34FFFFDC}, + [I(79,139)] = {30,0x357FFFDC}, + [I(80,139)] = {30,0x35FFFFDC}, + [I(81,139)] = {30,0x367FFFDC}, + [I(82,139)] = {30,0x36FFFFDC}, + [I(83,139)] = {30,0x377FFFDC}, + [I(84,139)] = {30,0x37FFFFDC}, + [I(85,139)] = {30,0x387FFFDC}, + [I(86,139)] = {30,0x38FFFFDC}, + [I(87,139)] = {30,0x397FFFDC}, + [I(88,139)] = {31,0x7E7FFFDC}, + [I(89,139)] = {30,0x39FFFFDC}, + [I(90,139)] = {31,0x7EFFFFDC}, + [I(91,139)] = {64,0}, + [I(92,139)] = {64,0}, + [I(93,139)] = {64,0}, + [I(94,139)] = {64,0}, + [I(95,139)] = {29,0x117FFFDC}, + [I(96,139)] = {64,0}, + [I(97,139)] = {28,0x1FFFFDC}, + [I(98,139)] = {29,0x11FFFFDC}, + [I(99,139)] = {28,0x27FFFDC}, + [I(100,139)] = {29,0x127FFFDC}, + [I(101,139)] = {28,0x2FFFFDC}, + [I(102,139)] = {29,0x12FFFFDC}, + [I(103,139)] = {29,0x137FFFDC}, + [I(104,139)] = {29,0x13FFFFDC}, + [I(105,139)] = {28,0x37FFFDC}, + [I(106,139)] = {30,0x3A7FFFDC}, + [I(107,139)] = {30,0x3AFFFFDC}, + [I(108,139)] = {29,0x147FFFDC}, + [I(109,139)] = {29,0x14FFFFDC}, + [I(110,139)] = {29,0x157FFFDC}, + [I(111,139)] = {28,0x3FFFFDC}, + [I(112,139)] = {29,0x15FFFFDC}, + [I(113,139)] = {30,0x3B7FFFDC}, + [I(114,139)] = {29,0x167FFFDC}, + [I(115,139)] = {28,0x47FFFDC}, + [I(116,139)] = {28,0x4FFFFDC}, + [I(117,139)] = {29,0x16FFFFDC}, + [I(118,139)] = {30,0x3BFFFFDC}, + [I(119,139)] = {30,0x3C7FFFDC}, + [I(120,139)] = {30,0x3CFFFFDC}, + [I(121,139)] = {30,0x3D7FFFDC}, + [I(122,139)] = {30,0x3DFFFFDC}, + [I(123,139)] = {64,0}, + [I(124,139)] = {64,0}, + [I(125,139)] = {64,0}, + [I(126,139)] = {64,0}, + [I(127,139)] = {64,0}, + [I(128,139)] = {64,0}, + [I(129,139)] = {64,0}, + [I(130,139)] = {64,0}, + [I(131,139)] = {64,0}, + [I(132,139)] = {64,0}, + [I(133,139)] = {64,0}, + [I(134,139)] = {64,0}, + [I(135,139)] = {64,0}, + [I(136,139)] = {64,0}, + [I(137,139)] = {64,0}, + [I(138,139)] = {64,0}, + [I(139,139)] = {64,0}, + [I(140,139)] = {64,0}, + [I(141,139)] = {64,0}, + [I(142,139)] = {64,0}, + [I(143,139)] = {64,0}, + [I(144,139)] = {64,0}, + [I(145,139)] = {64,0}, + [I(146,139)] = {64,0}, + [I(147,139)] = {64,0}, + [I(148,139)] = {64,0}, + [I(149,139)] = {64,0}, + [I(150,139)] = {64,0}, + [I(151,139)] = {64,0}, + [I(152,139)] = {64,0}, + [I(153,139)] = {64,0}, + [I(154,139)] = {64,0}, + [I(155,139)] = {64,0}, + [I(156,139)] = {64,0}, + [I(157,139)] = {64,0}, + [I(158,139)] = {64,0}, + [I(159,139)] = {64,0}, + [I(160,139)] = {64,0}, + [I(161,139)] = {64,0}, + [I(162,139)] = {64,0}, + [I(163,139)] = {64,0}, + [I(164,139)] = {64,0}, + [I(165,139)] = {64,0}, + [I(166,139)] = {64,0}, + [I(167,139)] = {64,0}, + [I(168,139)] = {64,0}, + [I(169,139)] = {64,0}, + [I(170,139)] = {64,0}, + [I(171,139)] = {64,0}, + [I(172,139)] = {64,0}, + [I(173,139)] = {64,0}, + [I(174,139)] = {64,0}, + [I(175,139)] = {64,0}, + [I(176,139)] = {64,0}, + [I(177,139)] = {64,0}, + [I(178,139)] = {64,0}, + [I(179,139)] = {64,0}, + [I(180,139)] = {64,0}, + [I(181,139)] = {64,0}, + [I(182,139)] = {64,0}, + [I(183,139)] = {64,0}, + [I(184,139)] = {64,0}, + [I(185,139)] = {64,0}, + [I(186,139)] = {64,0}, + [I(187,139)] = {64,0}, + [I(188,139)] = {64,0}, + [I(189,139)] = {64,0}, + [I(190,139)] = {64,0}, + [I(191,139)] = {64,0}, + [I(192,139)] = {64,0}, + [I(193,139)] = {64,0}, + [I(194,139)] = {64,0}, + [I(195,139)] = {64,0}, + [I(196,139)] = {64,0}, + [I(197,139)] = {64,0}, + [I(198,139)] = {64,0}, + [I(199,139)] = {64,0}, + [I(200,139)] = {64,0}, + [I(201,139)] = {64,0}, + [I(202,139)] = {64,0}, + [I(203,139)] = {64,0}, + [I(204,139)] = {64,0}, + [I(205,139)] = {64,0}, + [I(206,139)] = {64,0}, + [I(207,139)] = {64,0}, + [I(208,139)] = {64,0}, + [I(209,139)] = {64,0}, + [I(210,139)] = {64,0}, + [I(211,139)] = {64,0}, + [I(212,139)] = {64,0}, + [I(213,139)] = {64,0}, + [I(214,139)] = {64,0}, + [I(215,139)] = {64,0}, + [I(216,139)] = {64,0}, + [I(217,139)] = {64,0}, + [I(218,139)] = {64,0}, + [I(219,139)] = {64,0}, + [I(220,139)] = {64,0}, + [I(221,139)] = {64,0}, + [I(222,139)] = {64,0}, + [I(223,139)] = {64,0}, + [I(224,139)] = {64,0}, + [I(225,139)] = {64,0}, + [I(226,139)] = {64,0}, + [I(227,139)] = {64,0}, + [I(228,139)] = {64,0}, + [I(229,139)] = {64,0}, + [I(230,139)] = {64,0}, + [I(231,139)] = {64,0}, + [I(232,139)] = {64,0}, + [I(233,139)] = {64,0}, + [I(234,139)] = {64,0}, + [I(235,139)] = {64,0}, + [I(236,139)] = {64,0}, + [I(237,139)] = {64,0}, + [I(238,139)] = {64,0}, + [I(239,139)] = {64,0}, + [I(240,139)] = {64,0}, + [I(241,139)] = {64,0}, + [I(242,139)] = {64,0}, + [I(243,139)] = {64,0}, + [I(244,139)] = {64,0}, + [I(245,139)] = {64,0}, + [I(246,139)] = {64,0}, + [I(247,139)] = {64,0}, + [I(248,139)] = {64,0}, + [I(249,139)] = {64,0}, + [I(250,139)] = {64,0}, + [I(251,139)] = {64,0}, + [I(252,139)] = {64,0}, + [I(253,139)] = {64,0}, + [I(254,139)] = {64,0}, + [I(255,139)] = {64,0}, + [I(0,140)] = {64,0}, + [I(1,140)] = {64,0}, + [I(2,140)] = {64,0}, + [I(3,140)] = {64,0}, + [I(4,140)] = {64,0}, + [I(5,140)] = {64,0}, + [I(6,140)] = {64,0}, + [I(7,140)] = {64,0}, + [I(8,140)] = {64,0}, + [I(9,140)] = {64,0}, + [I(10,140)] = {64,0}, + [I(11,140)] = {64,0}, + [I(12,140)] = {64,0}, + [I(13,140)] = {64,0}, + [I(14,140)] = {64,0}, + [I(15,140)] = {64,0}, + [I(16,140)] = {64,0}, + [I(17,140)] = {64,0}, + [I(18,140)] = {64,0}, + [I(19,140)] = {64,0}, + [I(20,140)] = {64,0}, + [I(21,140)] = {64,0}, + [I(22,140)] = {64,0}, + [I(23,140)] = {64,0}, + [I(24,140)] = {64,0}, + [I(25,140)] = {64,0}, + [I(26,140)] = {64,0}, + [I(27,140)] = {64,0}, + [I(28,140)] = {64,0}, + [I(29,140)] = {64,0}, + [I(30,140)] = {64,0}, + [I(31,140)] = {64,0}, + [I(32,140)] = {29,0xA7FFFDD}, + [I(33,140)] = {64,0}, + [I(34,140)] = {64,0}, + [I(35,140)] = {64,0}, + [I(36,140)] = {64,0}, + [I(37,140)] = {29,0xAFFFFDD}, + [I(38,140)] = {31,0x7C7FFFDD}, + [I(39,140)] = {64,0}, + [I(40,140)] = {64,0}, + [I(41,140)] = {64,0}, + [I(42,140)] = {31,0x7CFFFFDD}, + [I(43,140)] = {64,0}, + [I(44,140)] = {31,0x7D7FFFDD}, + [I(45,140)] = {29,0xB7FFFDD}, + [I(46,140)] = {29,0xBFFFFDD}, + [I(47,140)] = {29,0xC7FFFDD}, + [I(48,140)] = {28,0x7FFFDD}, + [I(49,140)] = {28,0xFFFFDD}, + [I(50,140)] = {28,0x17FFFDD}, + [I(51,140)] = {29,0xCFFFFDD}, + [I(52,140)] = {29,0xD7FFFDD}, + [I(53,140)] = {29,0xDFFFFDD}, + [I(54,140)] = {29,0xE7FFFDD}, + [I(55,140)] = {29,0xEFFFFDD}, + [I(56,140)] = {29,0xF7FFFDD}, + [I(57,140)] = {29,0xFFFFFDD}, + [I(58,140)] = {30,0x2E7FFFDD}, + [I(59,140)] = {31,0x7DFFFFDD}, + [I(60,140)] = {64,0}, + [I(61,140)] = {29,0x107FFFDD}, + [I(62,140)] = {64,0}, + [I(63,140)] = {64,0}, + [I(64,140)] = {64,0}, + [I(65,140)] = {29,0x10FFFFDD}, + [I(66,140)] = {30,0x2EFFFFDD}, + [I(67,140)] = {30,0x2F7FFFDD}, + [I(68,140)] = {30,0x2FFFFFDD}, + [I(69,140)] = {30,0x307FFFDD}, + [I(70,140)] = {30,0x30FFFFDD}, + [I(71,140)] = {30,0x317FFFDD}, + [I(72,140)] = {30,0x31FFFFDD}, + [I(73,140)] = {30,0x327FFFDD}, + [I(74,140)] = {30,0x32FFFFDD}, + [I(75,140)] = {30,0x337FFFDD}, + [I(76,140)] = {30,0x33FFFFDD}, + [I(77,140)] = {30,0x347FFFDD}, + [I(78,140)] = {30,0x34FFFFDD}, + [I(79,140)] = {30,0x357FFFDD}, + [I(80,140)] = {30,0x35FFFFDD}, + [I(81,140)] = {30,0x367FFFDD}, + [I(82,140)] = {30,0x36FFFFDD}, + [I(83,140)] = {30,0x377FFFDD}, + [I(84,140)] = {30,0x37FFFFDD}, + [I(85,140)] = {30,0x387FFFDD}, + [I(86,140)] = {30,0x38FFFFDD}, + [I(87,140)] = {30,0x397FFFDD}, + [I(88,140)] = {31,0x7E7FFFDD}, + [I(89,140)] = {30,0x39FFFFDD}, + [I(90,140)] = {31,0x7EFFFFDD}, + [I(91,140)] = {64,0}, + [I(92,140)] = {64,0}, + [I(93,140)] = {64,0}, + [I(94,140)] = {64,0}, + [I(95,140)] = {29,0x117FFFDD}, + [I(96,140)] = {64,0}, + [I(97,140)] = {28,0x1FFFFDD}, + [I(98,140)] = {29,0x11FFFFDD}, + [I(99,140)] = {28,0x27FFFDD}, + [I(100,140)] = {29,0x127FFFDD}, + [I(101,140)] = {28,0x2FFFFDD}, + [I(102,140)] = {29,0x12FFFFDD}, + [I(103,140)] = {29,0x137FFFDD}, + [I(104,140)] = {29,0x13FFFFDD}, + [I(105,140)] = {28,0x37FFFDD}, + [I(106,140)] = {30,0x3A7FFFDD}, + [I(107,140)] = {30,0x3AFFFFDD}, + [I(108,140)] = {29,0x147FFFDD}, + [I(109,140)] = {29,0x14FFFFDD}, + [I(110,140)] = {29,0x157FFFDD}, + [I(111,140)] = {28,0x3FFFFDD}, + [I(112,140)] = {29,0x15FFFFDD}, + [I(113,140)] = {30,0x3B7FFFDD}, + [I(114,140)] = {29,0x167FFFDD}, + [I(115,140)] = {28,0x47FFFDD}, + [I(116,140)] = {28,0x4FFFFDD}, + [I(117,140)] = {29,0x16FFFFDD}, + [I(118,140)] = {30,0x3BFFFFDD}, + [I(119,140)] = {30,0x3C7FFFDD}, + [I(120,140)] = {30,0x3CFFFFDD}, + [I(121,140)] = {30,0x3D7FFFDD}, + [I(122,140)] = {30,0x3DFFFFDD}, + [I(123,140)] = {64,0}, + [I(124,140)] = {64,0}, + [I(125,140)] = {64,0}, + [I(126,140)] = {64,0}, + [I(127,140)] = {64,0}, + [I(128,140)] = {64,0}, + [I(129,140)] = {64,0}, + [I(130,140)] = {64,0}, + [I(131,140)] = {64,0}, + [I(132,140)] = {64,0}, + [I(133,140)] = {64,0}, + [I(134,140)] = {64,0}, + [I(135,140)] = {64,0}, + [I(136,140)] = {64,0}, + [I(137,140)] = {64,0}, + [I(138,140)] = {64,0}, + [I(139,140)] = {64,0}, + [I(140,140)] = {64,0}, + [I(141,140)] = {64,0}, + [I(142,140)] = {64,0}, + [I(143,140)] = {64,0}, + [I(144,140)] = {64,0}, + [I(145,140)] = {64,0}, + [I(146,140)] = {64,0}, + [I(147,140)] = {64,0}, + [I(148,140)] = {64,0}, + [I(149,140)] = {64,0}, + [I(150,140)] = {64,0}, + [I(151,140)] = {64,0}, + [I(152,140)] = {64,0}, + [I(153,140)] = {64,0}, + [I(154,140)] = {64,0}, + [I(155,140)] = {64,0}, + [I(156,140)] = {64,0}, + [I(157,140)] = {64,0}, + [I(158,140)] = {64,0}, + [I(159,140)] = {64,0}, + [I(160,140)] = {64,0}, + [I(161,140)] = {64,0}, + [I(162,140)] = {64,0}, + [I(163,140)] = {64,0}, + [I(164,140)] = {64,0}, + [I(165,140)] = {64,0}, + [I(166,140)] = {64,0}, + [I(167,140)] = {64,0}, + [I(168,140)] = {64,0}, + [I(169,140)] = {64,0}, + [I(170,140)] = {64,0}, + [I(171,140)] = {64,0}, + [I(172,140)] = {64,0}, + [I(173,140)] = {64,0}, + [I(174,140)] = {64,0}, + [I(175,140)] = {64,0}, + [I(176,140)] = {64,0}, + [I(177,140)] = {64,0}, + [I(178,140)] = {64,0}, + [I(179,140)] = {64,0}, + [I(180,140)] = {64,0}, + [I(181,140)] = {64,0}, + [I(182,140)] = {64,0}, + [I(183,140)] = {64,0}, + [I(184,140)] = {64,0}, + [I(185,140)] = {64,0}, + [I(186,140)] = {64,0}, + [I(187,140)] = {64,0}, + [I(188,140)] = {64,0}, + [I(189,140)] = {64,0}, + [I(190,140)] = {64,0}, + [I(191,140)] = {64,0}, + [I(192,140)] = {64,0}, + [I(193,140)] = {64,0}, + [I(194,140)] = {64,0}, + [I(195,140)] = {64,0}, + [I(196,140)] = {64,0}, + [I(197,140)] = {64,0}, + [I(198,140)] = {64,0}, + [I(199,140)] = {64,0}, + [I(200,140)] = {64,0}, + [I(201,140)] = {64,0}, + [I(202,140)] = {64,0}, + [I(203,140)] = {64,0}, + [I(204,140)] = {64,0}, + [I(205,140)] = {64,0}, + [I(206,140)] = {64,0}, + [I(207,140)] = {64,0}, + [I(208,140)] = {64,0}, + [I(209,140)] = {64,0}, + [I(210,140)] = {64,0}, + [I(211,140)] = {64,0}, + [I(212,140)] = {64,0}, + [I(213,140)] = {64,0}, + [I(214,140)] = {64,0}, + [I(215,140)] = {64,0}, + [I(216,140)] = {64,0}, + [I(217,140)] = {64,0}, + [I(218,140)] = {64,0}, + [I(219,140)] = {64,0}, + [I(220,140)] = {64,0}, + [I(221,140)] = {64,0}, + [I(222,140)] = {64,0}, + [I(223,140)] = {64,0}, + [I(224,140)] = {64,0}, + [I(225,140)] = {64,0}, + [I(226,140)] = {64,0}, + [I(227,140)] = {64,0}, + [I(228,140)] = {64,0}, + [I(229,140)] = {64,0}, + [I(230,140)] = {64,0}, + [I(231,140)] = {64,0}, + [I(232,140)] = {64,0}, + [I(233,140)] = {64,0}, + [I(234,140)] = {64,0}, + [I(235,140)] = {64,0}, + [I(236,140)] = {64,0}, + [I(237,140)] = {64,0}, + [I(238,140)] = {64,0}, + [I(239,140)] = {64,0}, + [I(240,140)] = {64,0}, + [I(241,140)] = {64,0}, + [I(242,140)] = {64,0}, + [I(243,140)] = {64,0}, + [I(244,140)] = {64,0}, + [I(245,140)] = {64,0}, + [I(246,140)] = {64,0}, + [I(247,140)] = {64,0}, + [I(248,140)] = {64,0}, + [I(249,140)] = {64,0}, + [I(250,140)] = {64,0}, + [I(251,140)] = {64,0}, + [I(252,140)] = {64,0}, + [I(253,140)] = {64,0}, + [I(254,140)] = {64,0}, + [I(255,140)] = {64,0}, + [I(0,141)] = {64,0}, + [I(1,141)] = {64,0}, + [I(2,141)] = {64,0}, + [I(3,141)] = {64,0}, + [I(4,141)] = {64,0}, + [I(5,141)] = {64,0}, + [I(6,141)] = {64,0}, + [I(7,141)] = {64,0}, + [I(8,141)] = {64,0}, + [I(9,141)] = {64,0}, + [I(10,141)] = {64,0}, + [I(11,141)] = {64,0}, + [I(12,141)] = {64,0}, + [I(13,141)] = {64,0}, + [I(14,141)] = {64,0}, + [I(15,141)] = {64,0}, + [I(16,141)] = {64,0}, + [I(17,141)] = {64,0}, + [I(18,141)] = {64,0}, + [I(19,141)] = {64,0}, + [I(20,141)] = {64,0}, + [I(21,141)] = {64,0}, + [I(22,141)] = {64,0}, + [I(23,141)] = {64,0}, + [I(24,141)] = {64,0}, + [I(25,141)] = {64,0}, + [I(26,141)] = {64,0}, + [I(27,141)] = {64,0}, + [I(28,141)] = {64,0}, + [I(29,141)] = {64,0}, + [I(30,141)] = {64,0}, + [I(31,141)] = {64,0}, + [I(32,141)] = {29,0xA7FFFDE}, + [I(33,141)] = {64,0}, + [I(34,141)] = {64,0}, + [I(35,141)] = {64,0}, + [I(36,141)] = {64,0}, + [I(37,141)] = {29,0xAFFFFDE}, + [I(38,141)] = {31,0x7C7FFFDE}, + [I(39,141)] = {64,0}, + [I(40,141)] = {64,0}, + [I(41,141)] = {64,0}, + [I(42,141)] = {31,0x7CFFFFDE}, + [I(43,141)] = {64,0}, + [I(44,141)] = {31,0x7D7FFFDE}, + [I(45,141)] = {29,0xB7FFFDE}, + [I(46,141)] = {29,0xBFFFFDE}, + [I(47,141)] = {29,0xC7FFFDE}, + [I(48,141)] = {28,0x7FFFDE}, + [I(49,141)] = {28,0xFFFFDE}, + [I(50,141)] = {28,0x17FFFDE}, + [I(51,141)] = {29,0xCFFFFDE}, + [I(52,141)] = {29,0xD7FFFDE}, + [I(53,141)] = {29,0xDFFFFDE}, + [I(54,141)] = {29,0xE7FFFDE}, + [I(55,141)] = {29,0xEFFFFDE}, + [I(56,141)] = {29,0xF7FFFDE}, + [I(57,141)] = {29,0xFFFFFDE}, + [I(58,141)] = {30,0x2E7FFFDE}, + [I(59,141)] = {31,0x7DFFFFDE}, + [I(60,141)] = {64,0}, + [I(61,141)] = {29,0x107FFFDE}, + [I(62,141)] = {64,0}, + [I(63,141)] = {64,0}, + [I(64,141)] = {64,0}, + [I(65,141)] = {29,0x10FFFFDE}, + [I(66,141)] = {30,0x2EFFFFDE}, + [I(67,141)] = {30,0x2F7FFFDE}, + [I(68,141)] = {30,0x2FFFFFDE}, + [I(69,141)] = {30,0x307FFFDE}, + [I(70,141)] = {30,0x30FFFFDE}, + [I(71,141)] = {30,0x317FFFDE}, + [I(72,141)] = {30,0x31FFFFDE}, + [I(73,141)] = {30,0x327FFFDE}, + [I(74,141)] = {30,0x32FFFFDE}, + [I(75,141)] = {30,0x337FFFDE}, + [I(76,141)] = {30,0x33FFFFDE}, + [I(77,141)] = {30,0x347FFFDE}, + [I(78,141)] = {30,0x34FFFFDE}, + [I(79,141)] = {30,0x357FFFDE}, + [I(80,141)] = {30,0x35FFFFDE}, + [I(81,141)] = {30,0x367FFFDE}, + [I(82,141)] = {30,0x36FFFFDE}, + [I(83,141)] = {30,0x377FFFDE}, + [I(84,141)] = {30,0x37FFFFDE}, + [I(85,141)] = {30,0x387FFFDE}, + [I(86,141)] = {30,0x38FFFFDE}, + [I(87,141)] = {30,0x397FFFDE}, + [I(88,141)] = {31,0x7E7FFFDE}, + [I(89,141)] = {30,0x39FFFFDE}, + [I(90,141)] = {31,0x7EFFFFDE}, + [I(91,141)] = {64,0}, + [I(92,141)] = {64,0}, + [I(93,141)] = {64,0}, + [I(94,141)] = {64,0}, + [I(95,141)] = {29,0x117FFFDE}, + [I(96,141)] = {64,0}, + [I(97,141)] = {28,0x1FFFFDE}, + [I(98,141)] = {29,0x11FFFFDE}, + [I(99,141)] = {28,0x27FFFDE}, + [I(100,141)] = {29,0x127FFFDE}, + [I(101,141)] = {28,0x2FFFFDE}, + [I(102,141)] = {29,0x12FFFFDE}, + [I(103,141)] = {29,0x137FFFDE}, + [I(104,141)] = {29,0x13FFFFDE}, + [I(105,141)] = {28,0x37FFFDE}, + [I(106,141)] = {30,0x3A7FFFDE}, + [I(107,141)] = {30,0x3AFFFFDE}, + [I(108,141)] = {29,0x147FFFDE}, + [I(109,141)] = {29,0x14FFFFDE}, + [I(110,141)] = {29,0x157FFFDE}, + [I(111,141)] = {28,0x3FFFFDE}, + [I(112,141)] = {29,0x15FFFFDE}, + [I(113,141)] = {30,0x3B7FFFDE}, + [I(114,141)] = {29,0x167FFFDE}, + [I(115,141)] = {28,0x47FFFDE}, + [I(116,141)] = {28,0x4FFFFDE}, + [I(117,141)] = {29,0x16FFFFDE}, + [I(118,141)] = {30,0x3BFFFFDE}, + [I(119,141)] = {30,0x3C7FFFDE}, + [I(120,141)] = {30,0x3CFFFFDE}, + [I(121,141)] = {30,0x3D7FFFDE}, + [I(122,141)] = {30,0x3DFFFFDE}, + [I(123,141)] = {64,0}, + [I(124,141)] = {64,0}, + [I(125,141)] = {64,0}, + [I(126,141)] = {64,0}, + [I(127,141)] = {64,0}, + [I(128,141)] = {64,0}, + [I(129,141)] = {64,0}, + [I(130,141)] = {64,0}, + [I(131,141)] = {64,0}, + [I(132,141)] = {64,0}, + [I(133,141)] = {64,0}, + [I(134,141)] = {64,0}, + [I(135,141)] = {64,0}, + [I(136,141)] = {64,0}, + [I(137,141)] = {64,0}, + [I(138,141)] = {64,0}, + [I(139,141)] = {64,0}, + [I(140,141)] = {64,0}, + [I(141,141)] = {64,0}, + [I(142,141)] = {64,0}, + [I(143,141)] = {64,0}, + [I(144,141)] = {64,0}, + [I(145,141)] = {64,0}, + [I(146,141)] = {64,0}, + [I(147,141)] = {64,0}, + [I(148,141)] = {64,0}, + [I(149,141)] = {64,0}, + [I(150,141)] = {64,0}, + [I(151,141)] = {64,0}, + [I(152,141)] = {64,0}, + [I(153,141)] = {64,0}, + [I(154,141)] = {64,0}, + [I(155,141)] = {64,0}, + [I(156,141)] = {64,0}, + [I(157,141)] = {64,0}, + [I(158,141)] = {64,0}, + [I(159,141)] = {64,0}, + [I(160,141)] = {64,0}, + [I(161,141)] = {64,0}, + [I(162,141)] = {64,0}, + [I(163,141)] = {64,0}, + [I(164,141)] = {64,0}, + [I(165,141)] = {64,0}, + [I(166,141)] = {64,0}, + [I(167,141)] = {64,0}, + [I(168,141)] = {64,0}, + [I(169,141)] = {64,0}, + [I(170,141)] = {64,0}, + [I(171,141)] = {64,0}, + [I(172,141)] = {64,0}, + [I(173,141)] = {64,0}, + [I(174,141)] = {64,0}, + [I(175,141)] = {64,0}, + [I(176,141)] = {64,0}, + [I(177,141)] = {64,0}, + [I(178,141)] = {64,0}, + [I(179,141)] = {64,0}, + [I(180,141)] = {64,0}, + [I(181,141)] = {64,0}, + [I(182,141)] = {64,0}, + [I(183,141)] = {64,0}, + [I(184,141)] = {64,0}, + [I(185,141)] = {64,0}, + [I(186,141)] = {64,0}, + [I(187,141)] = {64,0}, + [I(188,141)] = {64,0}, + [I(189,141)] = {64,0}, + [I(190,141)] = {64,0}, + [I(191,141)] = {64,0}, + [I(192,141)] = {64,0}, + [I(193,141)] = {64,0}, + [I(194,141)] = {64,0}, + [I(195,141)] = {64,0}, + [I(196,141)] = {64,0}, + [I(197,141)] = {64,0}, + [I(198,141)] = {64,0}, + [I(199,141)] = {64,0}, + [I(200,141)] = {64,0}, + [I(201,141)] = {64,0}, + [I(202,141)] = {64,0}, + [I(203,141)] = {64,0}, + [I(204,141)] = {64,0}, + [I(205,141)] = {64,0}, + [I(206,141)] = {64,0}, + [I(207,141)] = {64,0}, + [I(208,141)] = {64,0}, + [I(209,141)] = {64,0}, + [I(210,141)] = {64,0}, + [I(211,141)] = {64,0}, + [I(212,141)] = {64,0}, + [I(213,141)] = {64,0}, + [I(214,141)] = {64,0}, + [I(215,141)] = {64,0}, + [I(216,141)] = {64,0}, + [I(217,141)] = {64,0}, + [I(218,141)] = {64,0}, + [I(219,141)] = {64,0}, + [I(220,141)] = {64,0}, + [I(221,141)] = {64,0}, + [I(222,141)] = {64,0}, + [I(223,141)] = {64,0}, + [I(224,141)] = {64,0}, + [I(225,141)] = {64,0}, + [I(226,141)] = {64,0}, + [I(227,141)] = {64,0}, + [I(228,141)] = {64,0}, + [I(229,141)] = {64,0}, + [I(230,141)] = {64,0}, + [I(231,141)] = {64,0}, + [I(232,141)] = {64,0}, + [I(233,141)] = {64,0}, + [I(234,141)] = {64,0}, + [I(235,141)] = {64,0}, + [I(236,141)] = {64,0}, + [I(237,141)] = {64,0}, + [I(238,141)] = {64,0}, + [I(239,141)] = {64,0}, + [I(240,141)] = {64,0}, + [I(241,141)] = {64,0}, + [I(242,141)] = {64,0}, + [I(243,141)] = {64,0}, + [I(244,141)] = {64,0}, + [I(245,141)] = {64,0}, + [I(246,141)] = {64,0}, + [I(247,141)] = {64,0}, + [I(248,141)] = {64,0}, + [I(249,141)] = {64,0}, + [I(250,141)] = {64,0}, + [I(251,141)] = {64,0}, + [I(252,141)] = {64,0}, + [I(253,141)] = {64,0}, + [I(254,141)] = {64,0}, + [I(255,141)] = {64,0}, + [I(0,142)] = {64,0}, + [I(1,142)] = {64,0}, + [I(2,142)] = {64,0}, + [I(3,142)] = {64,0}, + [I(4,142)] = {64,0}, + [I(5,142)] = {64,0}, + [I(6,142)] = {64,0}, + [I(7,142)] = {64,0}, + [I(8,142)] = {64,0}, + [I(9,142)] = {64,0}, + [I(10,142)] = {64,0}, + [I(11,142)] = {64,0}, + [I(12,142)] = {64,0}, + [I(13,142)] = {64,0}, + [I(14,142)] = {64,0}, + [I(15,142)] = {64,0}, + [I(16,142)] = {64,0}, + [I(17,142)] = {64,0}, + [I(18,142)] = {64,0}, + [I(19,142)] = {64,0}, + [I(20,142)] = {64,0}, + [I(21,142)] = {64,0}, + [I(22,142)] = {64,0}, + [I(23,142)] = {64,0}, + [I(24,142)] = {64,0}, + [I(25,142)] = {64,0}, + [I(26,142)] = {64,0}, + [I(27,142)] = {64,0}, + [I(28,142)] = {64,0}, + [I(29,142)] = {64,0}, + [I(30,142)] = {64,0}, + [I(31,142)] = {64,0}, + [I(32,142)] = {30,0x14FFFFEB}, + [I(33,142)] = {64,0}, + [I(34,142)] = {64,0}, + [I(35,142)] = {64,0}, + [I(36,142)] = {64,0}, + [I(37,142)] = {30,0x15FFFFEB}, + [I(38,142)] = {X32,0xF8FFFFEB}, + [I(39,142)] = {64,0}, + [I(40,142)] = {64,0}, + [I(41,142)] = {64,0}, + [I(42,142)] = {X32,0xF9FFFFEB}, + [I(43,142)] = {64,0}, + [I(44,142)] = {X32,0xFAFFFFEB}, + [I(45,142)] = {30,0x16FFFFEB}, + [I(46,142)] = {30,0x17FFFFEB}, + [I(47,142)] = {30,0x18FFFFEB}, + [I(48,142)] = {29,0xFFFFEB}, + [I(49,142)] = {29,0x1FFFFEB}, + [I(50,142)] = {29,0x2FFFFEB}, + [I(51,142)] = {30,0x19FFFFEB}, + [I(52,142)] = {30,0x1AFFFFEB}, + [I(53,142)] = {30,0x1BFFFFEB}, + [I(54,142)] = {30,0x1CFFFFEB}, + [I(55,142)] = {30,0x1DFFFFEB}, + [I(56,142)] = {30,0x1EFFFFEB}, + [I(57,142)] = {30,0x1FFFFFEB}, + [I(58,142)] = {31,0x5CFFFFEB}, + [I(59,142)] = {X32,0xFBFFFFEB}, + [I(60,142)] = {64,0}, + [I(61,142)] = {30,0x20FFFFEB}, + [I(62,142)] = {64,0}, + [I(63,142)] = {64,0}, + [I(64,142)] = {64,0}, + [I(65,142)] = {30,0x21FFFFEB}, + [I(66,142)] = {31,0x5DFFFFEB}, + [I(67,142)] = {31,0x5EFFFFEB}, + [I(68,142)] = {31,0x5FFFFFEB}, + [I(69,142)] = {31,0x60FFFFEB}, + [I(70,142)] = {31,0x61FFFFEB}, + [I(71,142)] = {31,0x62FFFFEB}, + [I(72,142)] = {31,0x63FFFFEB}, + [I(73,142)] = {31,0x64FFFFEB}, + [I(74,142)] = {31,0x65FFFFEB}, + [I(75,142)] = {31,0x66FFFFEB}, + [I(76,142)] = {31,0x67FFFFEB}, + [I(77,142)] = {31,0x68FFFFEB}, + [I(78,142)] = {31,0x69FFFFEB}, + [I(79,142)] = {31,0x6AFFFFEB}, + [I(80,142)] = {31,0x6BFFFFEB}, + [I(81,142)] = {31,0x6CFFFFEB}, + [I(82,142)] = {31,0x6DFFFFEB}, + [I(83,142)] = {31,0x6EFFFFEB}, + [I(84,142)] = {31,0x6FFFFFEB}, + [I(85,142)] = {31,0x70FFFFEB}, + [I(86,142)] = {31,0x71FFFFEB}, + [I(87,142)] = {31,0x72FFFFEB}, + [I(88,142)] = {X32,0xFCFFFFEB}, + [I(89,142)] = {31,0x73FFFFEB}, + [I(90,142)] = {X32,0xFDFFFFEB}, + [I(91,142)] = {64,0}, + [I(92,142)] = {64,0}, + [I(93,142)] = {64,0}, + [I(94,142)] = {64,0}, + [I(95,142)] = {30,0x22FFFFEB}, + [I(96,142)] = {64,0}, + [I(97,142)] = {29,0x3FFFFEB}, + [I(98,142)] = {30,0x23FFFFEB}, + [I(99,142)] = {29,0x4FFFFEB}, + [I(100,142)] = {30,0x24FFFFEB}, + [I(101,142)] = {29,0x5FFFFEB}, + [I(102,142)] = {30,0x25FFFFEB}, + [I(103,142)] = {30,0x26FFFFEB}, + [I(104,142)] = {30,0x27FFFFEB}, + [I(105,142)] = {29,0x6FFFFEB}, + [I(106,142)] = {31,0x74FFFFEB}, + [I(107,142)] = {31,0x75FFFFEB}, + [I(108,142)] = {30,0x28FFFFEB}, + [I(109,142)] = {30,0x29FFFFEB}, + [I(110,142)] = {30,0x2AFFFFEB}, + [I(111,142)] = {29,0x7FFFFEB}, + [I(112,142)] = {30,0x2BFFFFEB}, + [I(113,142)] = {31,0x76FFFFEB}, + [I(114,142)] = {30,0x2CFFFFEB}, + [I(115,142)] = {29,0x8FFFFEB}, + [I(116,142)] = {29,0x9FFFFEB}, + [I(117,142)] = {30,0x2DFFFFEB}, + [I(118,142)] = {31,0x77FFFFEB}, + [I(119,142)] = {31,0x78FFFFEB}, + [I(120,142)] = {31,0x79FFFFEB}, + [I(121,142)] = {31,0x7AFFFFEB}, + [I(122,142)] = {31,0x7BFFFFEB}, + [I(123,142)] = {64,0}, + [I(124,142)] = {64,0}, + [I(125,142)] = {64,0}, + [I(126,142)] = {64,0}, + [I(127,142)] = {64,0}, + [I(128,142)] = {64,0}, + [I(129,142)] = {64,0}, + [I(130,142)] = {64,0}, + [I(131,142)] = {64,0}, + [I(132,142)] = {64,0}, + [I(133,142)] = {64,0}, + [I(134,142)] = {64,0}, + [I(135,142)] = {64,0}, + [I(136,142)] = {64,0}, + [I(137,142)] = {64,0}, + [I(138,142)] = {64,0}, + [I(139,142)] = {64,0}, + [I(140,142)] = {64,0}, + [I(141,142)] = {64,0}, + [I(142,142)] = {64,0}, + [I(143,142)] = {64,0}, + [I(144,142)] = {64,0}, + [I(145,142)] = {64,0}, + [I(146,142)] = {64,0}, + [I(147,142)] = {64,0}, + [I(148,142)] = {64,0}, + [I(149,142)] = {64,0}, + [I(150,142)] = {64,0}, + [I(151,142)] = {64,0}, + [I(152,142)] = {64,0}, + [I(153,142)] = {64,0}, + [I(154,142)] = {64,0}, + [I(155,142)] = {64,0}, + [I(156,142)] = {64,0}, + [I(157,142)] = {64,0}, + [I(158,142)] = {64,0}, + [I(159,142)] = {64,0}, + [I(160,142)] = {64,0}, + [I(161,142)] = {64,0}, + [I(162,142)] = {64,0}, + [I(163,142)] = {64,0}, + [I(164,142)] = {64,0}, + [I(165,142)] = {64,0}, + [I(166,142)] = {64,0}, + [I(167,142)] = {64,0}, + [I(168,142)] = {64,0}, + [I(169,142)] = {64,0}, + [I(170,142)] = {64,0}, + [I(171,142)] = {64,0}, + [I(172,142)] = {64,0}, + [I(173,142)] = {64,0}, + [I(174,142)] = {64,0}, + [I(175,142)] = {64,0}, + [I(176,142)] = {64,0}, + [I(177,142)] = {64,0}, + [I(178,142)] = {64,0}, + [I(179,142)] = {64,0}, + [I(180,142)] = {64,0}, + [I(181,142)] = {64,0}, + [I(182,142)] = {64,0}, + [I(183,142)] = {64,0}, + [I(184,142)] = {64,0}, + [I(185,142)] = {64,0}, + [I(186,142)] = {64,0}, + [I(187,142)] = {64,0}, + [I(188,142)] = {64,0}, + [I(189,142)] = {64,0}, + [I(190,142)] = {64,0}, + [I(191,142)] = {64,0}, + [I(192,142)] = {64,0}, + [I(193,142)] = {64,0}, + [I(194,142)] = {64,0}, + [I(195,142)] = {64,0}, + [I(196,142)] = {64,0}, + [I(197,142)] = {64,0}, + [I(198,142)] = {64,0}, + [I(199,142)] = {64,0}, + [I(200,142)] = {64,0}, + [I(201,142)] = {64,0}, + [I(202,142)] = {64,0}, + [I(203,142)] = {64,0}, + [I(204,142)] = {64,0}, + [I(205,142)] = {64,0}, + [I(206,142)] = {64,0}, + [I(207,142)] = {64,0}, + [I(208,142)] = {64,0}, + [I(209,142)] = {64,0}, + [I(210,142)] = {64,0}, + [I(211,142)] = {64,0}, + [I(212,142)] = {64,0}, + [I(213,142)] = {64,0}, + [I(214,142)] = {64,0}, + [I(215,142)] = {64,0}, + [I(216,142)] = {64,0}, + [I(217,142)] = {64,0}, + [I(218,142)] = {64,0}, + [I(219,142)] = {64,0}, + [I(220,142)] = {64,0}, + [I(221,142)] = {64,0}, + [I(222,142)] = {64,0}, + [I(223,142)] = {64,0}, + [I(224,142)] = {64,0}, + [I(225,142)] = {64,0}, + [I(226,142)] = {64,0}, + [I(227,142)] = {64,0}, + [I(228,142)] = {64,0}, + [I(229,142)] = {64,0}, + [I(230,142)] = {64,0}, + [I(231,142)] = {64,0}, + [I(232,142)] = {64,0}, + [I(233,142)] = {64,0}, + [I(234,142)] = {64,0}, + [I(235,142)] = {64,0}, + [I(236,142)] = {64,0}, + [I(237,142)] = {64,0}, + [I(238,142)] = {64,0}, + [I(239,142)] = {64,0}, + [I(240,142)] = {64,0}, + [I(241,142)] = {64,0}, + [I(242,142)] = {64,0}, + [I(243,142)] = {64,0}, + [I(244,142)] = {64,0}, + [I(245,142)] = {64,0}, + [I(246,142)] = {64,0}, + [I(247,142)] = {64,0}, + [I(248,142)] = {64,0}, + [I(249,142)] = {64,0}, + [I(250,142)] = {64,0}, + [I(251,142)] = {64,0}, + [I(252,142)] = {64,0}, + [I(253,142)] = {64,0}, + [I(254,142)] = {64,0}, + [I(255,142)] = {64,0}, + [I(0,143)] = {64,0}, + [I(1,143)] = {64,0}, + [I(2,143)] = {64,0}, + [I(3,143)] = {64,0}, + [I(4,143)] = {64,0}, + [I(5,143)] = {64,0}, + [I(6,143)] = {64,0}, + [I(7,143)] = {64,0}, + [I(8,143)] = {64,0}, + [I(9,143)] = {64,0}, + [I(10,143)] = {64,0}, + [I(11,143)] = {64,0}, + [I(12,143)] = {64,0}, + [I(13,143)] = {64,0}, + [I(14,143)] = {64,0}, + [I(15,143)] = {64,0}, + [I(16,143)] = {64,0}, + [I(17,143)] = {64,0}, + [I(18,143)] = {64,0}, + [I(19,143)] = {64,0}, + [I(20,143)] = {64,0}, + [I(21,143)] = {64,0}, + [I(22,143)] = {64,0}, + [I(23,143)] = {64,0}, + [I(24,143)] = {64,0}, + [I(25,143)] = {64,0}, + [I(26,143)] = {64,0}, + [I(27,143)] = {64,0}, + [I(28,143)] = {64,0}, + [I(29,143)] = {64,0}, + [I(30,143)] = {64,0}, + [I(31,143)] = {64,0}, + [I(32,143)] = {29,0xA7FFFDF}, + [I(33,143)] = {64,0}, + [I(34,143)] = {64,0}, + [I(35,143)] = {64,0}, + [I(36,143)] = {64,0}, + [I(37,143)] = {29,0xAFFFFDF}, + [I(38,143)] = {31,0x7C7FFFDF}, + [I(39,143)] = {64,0}, + [I(40,143)] = {64,0}, + [I(41,143)] = {64,0}, + [I(42,143)] = {31,0x7CFFFFDF}, + [I(43,143)] = {64,0}, + [I(44,143)] = {31,0x7D7FFFDF}, + [I(45,143)] = {29,0xB7FFFDF}, + [I(46,143)] = {29,0xBFFFFDF}, + [I(47,143)] = {29,0xC7FFFDF}, + [I(48,143)] = {28,0x7FFFDF}, + [I(49,143)] = {28,0xFFFFDF}, + [I(50,143)] = {28,0x17FFFDF}, + [I(51,143)] = {29,0xCFFFFDF}, + [I(52,143)] = {29,0xD7FFFDF}, + [I(53,143)] = {29,0xDFFFFDF}, + [I(54,143)] = {29,0xE7FFFDF}, + [I(55,143)] = {29,0xEFFFFDF}, + [I(56,143)] = {29,0xF7FFFDF}, + [I(57,143)] = {29,0xFFFFFDF}, + [I(58,143)] = {30,0x2E7FFFDF}, + [I(59,143)] = {31,0x7DFFFFDF}, + [I(60,143)] = {64,0}, + [I(61,143)] = {29,0x107FFFDF}, + [I(62,143)] = {64,0}, + [I(63,143)] = {64,0}, + [I(64,143)] = {64,0}, + [I(65,143)] = {29,0x10FFFFDF}, + [I(66,143)] = {30,0x2EFFFFDF}, + [I(67,143)] = {30,0x2F7FFFDF}, + [I(68,143)] = {30,0x2FFFFFDF}, + [I(69,143)] = {30,0x307FFFDF}, + [I(70,143)] = {30,0x30FFFFDF}, + [I(71,143)] = {30,0x317FFFDF}, + [I(72,143)] = {30,0x31FFFFDF}, + [I(73,143)] = {30,0x327FFFDF}, + [I(74,143)] = {30,0x32FFFFDF}, + [I(75,143)] = {30,0x337FFFDF}, + [I(76,143)] = {30,0x33FFFFDF}, + [I(77,143)] = {30,0x347FFFDF}, + [I(78,143)] = {30,0x34FFFFDF}, + [I(79,143)] = {30,0x357FFFDF}, + [I(80,143)] = {30,0x35FFFFDF}, + [I(81,143)] = {30,0x367FFFDF}, + [I(82,143)] = {30,0x36FFFFDF}, + [I(83,143)] = {30,0x377FFFDF}, + [I(84,143)] = {30,0x37FFFFDF}, + [I(85,143)] = {30,0x387FFFDF}, + [I(86,143)] = {30,0x38FFFFDF}, + [I(87,143)] = {30,0x397FFFDF}, + [I(88,143)] = {31,0x7E7FFFDF}, + [I(89,143)] = {30,0x39FFFFDF}, + [I(90,143)] = {31,0x7EFFFFDF}, + [I(91,143)] = {64,0}, + [I(92,143)] = {64,0}, + [I(93,143)] = {64,0}, + [I(94,143)] = {64,0}, + [I(95,143)] = {29,0x117FFFDF}, + [I(96,143)] = {64,0}, + [I(97,143)] = {28,0x1FFFFDF}, + [I(98,143)] = {29,0x11FFFFDF}, + [I(99,143)] = {28,0x27FFFDF}, + [I(100,143)] = {29,0x127FFFDF}, + [I(101,143)] = {28,0x2FFFFDF}, + [I(102,143)] = {29,0x12FFFFDF}, + [I(103,143)] = {29,0x137FFFDF}, + [I(104,143)] = {29,0x13FFFFDF}, + [I(105,143)] = {28,0x37FFFDF}, + [I(106,143)] = {30,0x3A7FFFDF}, + [I(107,143)] = {30,0x3AFFFFDF}, + [I(108,143)] = {29,0x147FFFDF}, + [I(109,143)] = {29,0x14FFFFDF}, + [I(110,143)] = {29,0x157FFFDF}, + [I(111,143)] = {28,0x3FFFFDF}, + [I(112,143)] = {29,0x15FFFFDF}, + [I(113,143)] = {30,0x3B7FFFDF}, + [I(114,143)] = {29,0x167FFFDF}, + [I(115,143)] = {28,0x47FFFDF}, + [I(116,143)] = {28,0x4FFFFDF}, + [I(117,143)] = {29,0x16FFFFDF}, + [I(118,143)] = {30,0x3BFFFFDF}, + [I(119,143)] = {30,0x3C7FFFDF}, + [I(120,143)] = {30,0x3CFFFFDF}, + [I(121,143)] = {30,0x3D7FFFDF}, + [I(122,143)] = {30,0x3DFFFFDF}, + [I(123,143)] = {64,0}, + [I(124,143)] = {64,0}, + [I(125,143)] = {64,0}, + [I(126,143)] = {64,0}, + [I(127,143)] = {64,0}, + [I(128,143)] = {64,0}, + [I(129,143)] = {64,0}, + [I(130,143)] = {64,0}, + [I(131,143)] = {64,0}, + [I(132,143)] = {64,0}, + [I(133,143)] = {64,0}, + [I(134,143)] = {64,0}, + [I(135,143)] = {64,0}, + [I(136,143)] = {64,0}, + [I(137,143)] = {64,0}, + [I(138,143)] = {64,0}, + [I(139,143)] = {64,0}, + [I(140,143)] = {64,0}, + [I(141,143)] = {64,0}, + [I(142,143)] = {64,0}, + [I(143,143)] = {64,0}, + [I(144,143)] = {64,0}, + [I(145,143)] = {64,0}, + [I(146,143)] = {64,0}, + [I(147,143)] = {64,0}, + [I(148,143)] = {64,0}, + [I(149,143)] = {64,0}, + [I(150,143)] = {64,0}, + [I(151,143)] = {64,0}, + [I(152,143)] = {64,0}, + [I(153,143)] = {64,0}, + [I(154,143)] = {64,0}, + [I(155,143)] = {64,0}, + [I(156,143)] = {64,0}, + [I(157,143)] = {64,0}, + [I(158,143)] = {64,0}, + [I(159,143)] = {64,0}, + [I(160,143)] = {64,0}, + [I(161,143)] = {64,0}, + [I(162,143)] = {64,0}, + [I(163,143)] = {64,0}, + [I(164,143)] = {64,0}, + [I(165,143)] = {64,0}, + [I(166,143)] = {64,0}, + [I(167,143)] = {64,0}, + [I(168,143)] = {64,0}, + [I(169,143)] = {64,0}, + [I(170,143)] = {64,0}, + [I(171,143)] = {64,0}, + [I(172,143)] = {64,0}, + [I(173,143)] = {64,0}, + [I(174,143)] = {64,0}, + [I(175,143)] = {64,0}, + [I(176,143)] = {64,0}, + [I(177,143)] = {64,0}, + [I(178,143)] = {64,0}, + [I(179,143)] = {64,0}, + [I(180,143)] = {64,0}, + [I(181,143)] = {64,0}, + [I(182,143)] = {64,0}, + [I(183,143)] = {64,0}, + [I(184,143)] = {64,0}, + [I(185,143)] = {64,0}, + [I(186,143)] = {64,0}, + [I(187,143)] = {64,0}, + [I(188,143)] = {64,0}, + [I(189,143)] = {64,0}, + [I(190,143)] = {64,0}, + [I(191,143)] = {64,0}, + [I(192,143)] = {64,0}, + [I(193,143)] = {64,0}, + [I(194,143)] = {64,0}, + [I(195,143)] = {64,0}, + [I(196,143)] = {64,0}, + [I(197,143)] = {64,0}, + [I(198,143)] = {64,0}, + [I(199,143)] = {64,0}, + [I(200,143)] = {64,0}, + [I(201,143)] = {64,0}, + [I(202,143)] = {64,0}, + [I(203,143)] = {64,0}, + [I(204,143)] = {64,0}, + [I(205,143)] = {64,0}, + [I(206,143)] = {64,0}, + [I(207,143)] = {64,0}, + [I(208,143)] = {64,0}, + [I(209,143)] = {64,0}, + [I(210,143)] = {64,0}, + [I(211,143)] = {64,0}, + [I(212,143)] = {64,0}, + [I(213,143)] = {64,0}, + [I(214,143)] = {64,0}, + [I(215,143)] = {64,0}, + [I(216,143)] = {64,0}, + [I(217,143)] = {64,0}, + [I(218,143)] = {64,0}, + [I(219,143)] = {64,0}, + [I(220,143)] = {64,0}, + [I(221,143)] = {64,0}, + [I(222,143)] = {64,0}, + [I(223,143)] = {64,0}, + [I(224,143)] = {64,0}, + [I(225,143)] = {64,0}, + [I(226,143)] = {64,0}, + [I(227,143)] = {64,0}, + [I(228,143)] = {64,0}, + [I(229,143)] = {64,0}, + [I(230,143)] = {64,0}, + [I(231,143)] = {64,0}, + [I(232,143)] = {64,0}, + [I(233,143)] = {64,0}, + [I(234,143)] = {64,0}, + [I(235,143)] = {64,0}, + [I(236,143)] = {64,0}, + [I(237,143)] = {64,0}, + [I(238,143)] = {64,0}, + [I(239,143)] = {64,0}, + [I(240,143)] = {64,0}, + [I(241,143)] = {64,0}, + [I(242,143)] = {64,0}, + [I(243,143)] = {64,0}, + [I(244,143)] = {64,0}, + [I(245,143)] = {64,0}, + [I(246,143)] = {64,0}, + [I(247,143)] = {64,0}, + [I(248,143)] = {64,0}, + [I(249,143)] = {64,0}, + [I(250,143)] = {64,0}, + [I(251,143)] = {64,0}, + [I(252,143)] = {64,0}, + [I(253,143)] = {64,0}, + [I(254,143)] = {64,0}, + [I(255,143)] = {64,0}, + [I(0,144)] = {64,0}, + [I(1,144)] = {64,0}, + [I(2,144)] = {64,0}, + [I(3,144)] = {64,0}, + [I(4,144)] = {64,0}, + [I(5,144)] = {64,0}, + [I(6,144)] = {64,0}, + [I(7,144)] = {64,0}, + [I(8,144)] = {64,0}, + [I(9,144)] = {64,0}, + [I(10,144)] = {64,0}, + [I(11,144)] = {64,0}, + [I(12,144)] = {64,0}, + [I(13,144)] = {64,0}, + [I(14,144)] = {64,0}, + [I(15,144)] = {64,0}, + [I(16,144)] = {64,0}, + [I(17,144)] = {64,0}, + [I(18,144)] = {64,0}, + [I(19,144)] = {64,0}, + [I(20,144)] = {64,0}, + [I(21,144)] = {64,0}, + [I(22,144)] = {64,0}, + [I(23,144)] = {64,0}, + [I(24,144)] = {64,0}, + [I(25,144)] = {64,0}, + [I(26,144)] = {64,0}, + [I(27,144)] = {64,0}, + [I(28,144)] = {64,0}, + [I(29,144)] = {64,0}, + [I(30,144)] = {64,0}, + [I(31,144)] = {64,0}, + [I(32,144)] = {30,0x14FFFFEC}, + [I(33,144)] = {64,0}, + [I(34,144)] = {64,0}, + [I(35,144)] = {64,0}, + [I(36,144)] = {64,0}, + [I(37,144)] = {30,0x15FFFFEC}, + [I(38,144)] = {X32,0xF8FFFFEC}, + [I(39,144)] = {64,0}, + [I(40,144)] = {64,0}, + [I(41,144)] = {64,0}, + [I(42,144)] = {X32,0xF9FFFFEC}, + [I(43,144)] = {64,0}, + [I(44,144)] = {X32,0xFAFFFFEC}, + [I(45,144)] = {30,0x16FFFFEC}, + [I(46,144)] = {30,0x17FFFFEC}, + [I(47,144)] = {30,0x18FFFFEC}, + [I(48,144)] = {29,0xFFFFEC}, + [I(49,144)] = {29,0x1FFFFEC}, + [I(50,144)] = {29,0x2FFFFEC}, + [I(51,144)] = {30,0x19FFFFEC}, + [I(52,144)] = {30,0x1AFFFFEC}, + [I(53,144)] = {30,0x1BFFFFEC}, + [I(54,144)] = {30,0x1CFFFFEC}, + [I(55,144)] = {30,0x1DFFFFEC}, + [I(56,144)] = {30,0x1EFFFFEC}, + [I(57,144)] = {30,0x1FFFFFEC}, + [I(58,144)] = {31,0x5CFFFFEC}, + [I(59,144)] = {X32,0xFBFFFFEC}, + [I(60,144)] = {64,0}, + [I(61,144)] = {30,0x20FFFFEC}, + [I(62,144)] = {64,0}, + [I(63,144)] = {64,0}, + [I(64,144)] = {64,0}, + [I(65,144)] = {30,0x21FFFFEC}, + [I(66,144)] = {31,0x5DFFFFEC}, + [I(67,144)] = {31,0x5EFFFFEC}, + [I(68,144)] = {31,0x5FFFFFEC}, + [I(69,144)] = {31,0x60FFFFEC}, + [I(70,144)] = {31,0x61FFFFEC}, + [I(71,144)] = {31,0x62FFFFEC}, + [I(72,144)] = {31,0x63FFFFEC}, + [I(73,144)] = {31,0x64FFFFEC}, + [I(74,144)] = {31,0x65FFFFEC}, + [I(75,144)] = {31,0x66FFFFEC}, + [I(76,144)] = {31,0x67FFFFEC}, + [I(77,144)] = {31,0x68FFFFEC}, + [I(78,144)] = {31,0x69FFFFEC}, + [I(79,144)] = {31,0x6AFFFFEC}, + [I(80,144)] = {31,0x6BFFFFEC}, + [I(81,144)] = {31,0x6CFFFFEC}, + [I(82,144)] = {31,0x6DFFFFEC}, + [I(83,144)] = {31,0x6EFFFFEC}, + [I(84,144)] = {31,0x6FFFFFEC}, + [I(85,144)] = {31,0x70FFFFEC}, + [I(86,144)] = {31,0x71FFFFEC}, + [I(87,144)] = {31,0x72FFFFEC}, + [I(88,144)] = {X32,0xFCFFFFEC}, + [I(89,144)] = {31,0x73FFFFEC}, + [I(90,144)] = {X32,0xFDFFFFEC}, + [I(91,144)] = {64,0}, + [I(92,144)] = {64,0}, + [I(93,144)] = {64,0}, + [I(94,144)] = {64,0}, + [I(95,144)] = {30,0x22FFFFEC}, + [I(96,144)] = {64,0}, + [I(97,144)] = {29,0x3FFFFEC}, + [I(98,144)] = {30,0x23FFFFEC}, + [I(99,144)] = {29,0x4FFFFEC}, + [I(100,144)] = {30,0x24FFFFEC}, + [I(101,144)] = {29,0x5FFFFEC}, + [I(102,144)] = {30,0x25FFFFEC}, + [I(103,144)] = {30,0x26FFFFEC}, + [I(104,144)] = {30,0x27FFFFEC}, + [I(105,144)] = {29,0x6FFFFEC}, + [I(106,144)] = {31,0x74FFFFEC}, + [I(107,144)] = {31,0x75FFFFEC}, + [I(108,144)] = {30,0x28FFFFEC}, + [I(109,144)] = {30,0x29FFFFEC}, + [I(110,144)] = {30,0x2AFFFFEC}, + [I(111,144)] = {29,0x7FFFFEC}, + [I(112,144)] = {30,0x2BFFFFEC}, + [I(113,144)] = {31,0x76FFFFEC}, + [I(114,144)] = {30,0x2CFFFFEC}, + [I(115,144)] = {29,0x8FFFFEC}, + [I(116,144)] = {29,0x9FFFFEC}, + [I(117,144)] = {30,0x2DFFFFEC}, + [I(118,144)] = {31,0x77FFFFEC}, + [I(119,144)] = {31,0x78FFFFEC}, + [I(120,144)] = {31,0x79FFFFEC}, + [I(121,144)] = {31,0x7AFFFFEC}, + [I(122,144)] = {31,0x7BFFFFEC}, + [I(123,144)] = {64,0}, + [I(124,144)] = {64,0}, + [I(125,144)] = {64,0}, + [I(126,144)] = {64,0}, + [I(127,144)] = {64,0}, + [I(128,144)] = {64,0}, + [I(129,144)] = {64,0}, + [I(130,144)] = {64,0}, + [I(131,144)] = {64,0}, + [I(132,144)] = {64,0}, + [I(133,144)] = {64,0}, + [I(134,144)] = {64,0}, + [I(135,144)] = {64,0}, + [I(136,144)] = {64,0}, + [I(137,144)] = {64,0}, + [I(138,144)] = {64,0}, + [I(139,144)] = {64,0}, + [I(140,144)] = {64,0}, + [I(141,144)] = {64,0}, + [I(142,144)] = {64,0}, + [I(143,144)] = {64,0}, + [I(144,144)] = {64,0}, + [I(145,144)] = {64,0}, + [I(146,144)] = {64,0}, + [I(147,144)] = {64,0}, + [I(148,144)] = {64,0}, + [I(149,144)] = {64,0}, + [I(150,144)] = {64,0}, + [I(151,144)] = {64,0}, + [I(152,144)] = {64,0}, + [I(153,144)] = {64,0}, + [I(154,144)] = {64,0}, + [I(155,144)] = {64,0}, + [I(156,144)] = {64,0}, + [I(157,144)] = {64,0}, + [I(158,144)] = {64,0}, + [I(159,144)] = {64,0}, + [I(160,144)] = {64,0}, + [I(161,144)] = {64,0}, + [I(162,144)] = {64,0}, + [I(163,144)] = {64,0}, + [I(164,144)] = {64,0}, + [I(165,144)] = {64,0}, + [I(166,144)] = {64,0}, + [I(167,144)] = {64,0}, + [I(168,144)] = {64,0}, + [I(169,144)] = {64,0}, + [I(170,144)] = {64,0}, + [I(171,144)] = {64,0}, + [I(172,144)] = {64,0}, + [I(173,144)] = {64,0}, + [I(174,144)] = {64,0}, + [I(175,144)] = {64,0}, + [I(176,144)] = {64,0}, + [I(177,144)] = {64,0}, + [I(178,144)] = {64,0}, + [I(179,144)] = {64,0}, + [I(180,144)] = {64,0}, + [I(181,144)] = {64,0}, + [I(182,144)] = {64,0}, + [I(183,144)] = {64,0}, + [I(184,144)] = {64,0}, + [I(185,144)] = {64,0}, + [I(186,144)] = {64,0}, + [I(187,144)] = {64,0}, + [I(188,144)] = {64,0}, + [I(189,144)] = {64,0}, + [I(190,144)] = {64,0}, + [I(191,144)] = {64,0}, + [I(192,144)] = {64,0}, + [I(193,144)] = {64,0}, + [I(194,144)] = {64,0}, + [I(195,144)] = {64,0}, + [I(196,144)] = {64,0}, + [I(197,144)] = {64,0}, + [I(198,144)] = {64,0}, + [I(199,144)] = {64,0}, + [I(200,144)] = {64,0}, + [I(201,144)] = {64,0}, + [I(202,144)] = {64,0}, + [I(203,144)] = {64,0}, + [I(204,144)] = {64,0}, + [I(205,144)] = {64,0}, + [I(206,144)] = {64,0}, + [I(207,144)] = {64,0}, + [I(208,144)] = {64,0}, + [I(209,144)] = {64,0}, + [I(210,144)] = {64,0}, + [I(211,144)] = {64,0}, + [I(212,144)] = {64,0}, + [I(213,144)] = {64,0}, + [I(214,144)] = {64,0}, + [I(215,144)] = {64,0}, + [I(216,144)] = {64,0}, + [I(217,144)] = {64,0}, + [I(218,144)] = {64,0}, + [I(219,144)] = {64,0}, + [I(220,144)] = {64,0}, + [I(221,144)] = {64,0}, + [I(222,144)] = {64,0}, + [I(223,144)] = {64,0}, + [I(224,144)] = {64,0}, + [I(225,144)] = {64,0}, + [I(226,144)] = {64,0}, + [I(227,144)] = {64,0}, + [I(228,144)] = {64,0}, + [I(229,144)] = {64,0}, + [I(230,144)] = {64,0}, + [I(231,144)] = {64,0}, + [I(232,144)] = {64,0}, + [I(233,144)] = {64,0}, + [I(234,144)] = {64,0}, + [I(235,144)] = {64,0}, + [I(236,144)] = {64,0}, + [I(237,144)] = {64,0}, + [I(238,144)] = {64,0}, + [I(239,144)] = {64,0}, + [I(240,144)] = {64,0}, + [I(241,144)] = {64,0}, + [I(242,144)] = {64,0}, + [I(243,144)] = {64,0}, + [I(244,144)] = {64,0}, + [I(245,144)] = {64,0}, + [I(246,144)] = {64,0}, + [I(247,144)] = {64,0}, + [I(248,144)] = {64,0}, + [I(249,144)] = {64,0}, + [I(250,144)] = {64,0}, + [I(251,144)] = {64,0}, + [I(252,144)] = {64,0}, + [I(253,144)] = {64,0}, + [I(254,144)] = {64,0}, + [I(255,144)] = {64,0}, + [I(0,145)] = {64,0}, + [I(1,145)] = {64,0}, + [I(2,145)] = {64,0}, + [I(3,145)] = {64,0}, + [I(4,145)] = {64,0}, + [I(5,145)] = {64,0}, + [I(6,145)] = {64,0}, + [I(7,145)] = {64,0}, + [I(8,145)] = {64,0}, + [I(9,145)] = {64,0}, + [I(10,145)] = {64,0}, + [I(11,145)] = {64,0}, + [I(12,145)] = {64,0}, + [I(13,145)] = {64,0}, + [I(14,145)] = {64,0}, + [I(15,145)] = {64,0}, + [I(16,145)] = {64,0}, + [I(17,145)] = {64,0}, + [I(18,145)] = {64,0}, + [I(19,145)] = {64,0}, + [I(20,145)] = {64,0}, + [I(21,145)] = {64,0}, + [I(22,145)] = {64,0}, + [I(23,145)] = {64,0}, + [I(24,145)] = {64,0}, + [I(25,145)] = {64,0}, + [I(26,145)] = {64,0}, + [I(27,145)] = {64,0}, + [I(28,145)] = {64,0}, + [I(29,145)] = {64,0}, + [I(30,145)] = {64,0}, + [I(31,145)] = {64,0}, + [I(32,145)] = {30,0x14FFFFED}, + [I(33,145)] = {64,0}, + [I(34,145)] = {64,0}, + [I(35,145)] = {64,0}, + [I(36,145)] = {64,0}, + [I(37,145)] = {30,0x15FFFFED}, + [I(38,145)] = {X32,0xF8FFFFED}, + [I(39,145)] = {64,0}, + [I(40,145)] = {64,0}, + [I(41,145)] = {64,0}, + [I(42,145)] = {X32,0xF9FFFFED}, + [I(43,145)] = {64,0}, + [I(44,145)] = {X32,0xFAFFFFED}, + [I(45,145)] = {30,0x16FFFFED}, + [I(46,145)] = {30,0x17FFFFED}, + [I(47,145)] = {30,0x18FFFFED}, + [I(48,145)] = {29,0xFFFFED}, + [I(49,145)] = {29,0x1FFFFED}, + [I(50,145)] = {29,0x2FFFFED}, + [I(51,145)] = {30,0x19FFFFED}, + [I(52,145)] = {30,0x1AFFFFED}, + [I(53,145)] = {30,0x1BFFFFED}, + [I(54,145)] = {30,0x1CFFFFED}, + [I(55,145)] = {30,0x1DFFFFED}, + [I(56,145)] = {30,0x1EFFFFED}, + [I(57,145)] = {30,0x1FFFFFED}, + [I(58,145)] = {31,0x5CFFFFED}, + [I(59,145)] = {X32,0xFBFFFFED}, + [I(60,145)] = {64,0}, + [I(61,145)] = {30,0x20FFFFED}, + [I(62,145)] = {64,0}, + [I(63,145)] = {64,0}, + [I(64,145)] = {64,0}, + [I(65,145)] = {30,0x21FFFFED}, + [I(66,145)] = {31,0x5DFFFFED}, + [I(67,145)] = {31,0x5EFFFFED}, + [I(68,145)] = {31,0x5FFFFFED}, + [I(69,145)] = {31,0x60FFFFED}, + [I(70,145)] = {31,0x61FFFFED}, + [I(71,145)] = {31,0x62FFFFED}, + [I(72,145)] = {31,0x63FFFFED}, + [I(73,145)] = {31,0x64FFFFED}, + [I(74,145)] = {31,0x65FFFFED}, + [I(75,145)] = {31,0x66FFFFED}, + [I(76,145)] = {31,0x67FFFFED}, + [I(77,145)] = {31,0x68FFFFED}, + [I(78,145)] = {31,0x69FFFFED}, + [I(79,145)] = {31,0x6AFFFFED}, + [I(80,145)] = {31,0x6BFFFFED}, + [I(81,145)] = {31,0x6CFFFFED}, + [I(82,145)] = {31,0x6DFFFFED}, + [I(83,145)] = {31,0x6EFFFFED}, + [I(84,145)] = {31,0x6FFFFFED}, + [I(85,145)] = {31,0x70FFFFED}, + [I(86,145)] = {31,0x71FFFFED}, + [I(87,145)] = {31,0x72FFFFED}, + [I(88,145)] = {X32,0xFCFFFFED}, + [I(89,145)] = {31,0x73FFFFED}, + [I(90,145)] = {X32,0xFDFFFFED}, + [I(91,145)] = {64,0}, + [I(92,145)] = {64,0}, + [I(93,145)] = {64,0}, + [I(94,145)] = {64,0}, + [I(95,145)] = {30,0x22FFFFED}, + [I(96,145)] = {64,0}, + [I(97,145)] = {29,0x3FFFFED}, + [I(98,145)] = {30,0x23FFFFED}, + [I(99,145)] = {29,0x4FFFFED}, + [I(100,145)] = {30,0x24FFFFED}, + [I(101,145)] = {29,0x5FFFFED}, + [I(102,145)] = {30,0x25FFFFED}, + [I(103,145)] = {30,0x26FFFFED}, + [I(104,145)] = {30,0x27FFFFED}, + [I(105,145)] = {29,0x6FFFFED}, + [I(106,145)] = {31,0x74FFFFED}, + [I(107,145)] = {31,0x75FFFFED}, + [I(108,145)] = {30,0x28FFFFED}, + [I(109,145)] = {30,0x29FFFFED}, + [I(110,145)] = {30,0x2AFFFFED}, + [I(111,145)] = {29,0x7FFFFED}, + [I(112,145)] = {30,0x2BFFFFED}, + [I(113,145)] = {31,0x76FFFFED}, + [I(114,145)] = {30,0x2CFFFFED}, + [I(115,145)] = {29,0x8FFFFED}, + [I(116,145)] = {29,0x9FFFFED}, + [I(117,145)] = {30,0x2DFFFFED}, + [I(118,145)] = {31,0x77FFFFED}, + [I(119,145)] = {31,0x78FFFFED}, + [I(120,145)] = {31,0x79FFFFED}, + [I(121,145)] = {31,0x7AFFFFED}, + [I(122,145)] = {31,0x7BFFFFED}, + [I(123,145)] = {64,0}, + [I(124,145)] = {64,0}, + [I(125,145)] = {64,0}, + [I(126,145)] = {64,0}, + [I(127,145)] = {64,0}, + [I(128,145)] = {64,0}, + [I(129,145)] = {64,0}, + [I(130,145)] = {64,0}, + [I(131,145)] = {64,0}, + [I(132,145)] = {64,0}, + [I(133,145)] = {64,0}, + [I(134,145)] = {64,0}, + [I(135,145)] = {64,0}, + [I(136,145)] = {64,0}, + [I(137,145)] = {64,0}, + [I(138,145)] = {64,0}, + [I(139,145)] = {64,0}, + [I(140,145)] = {64,0}, + [I(141,145)] = {64,0}, + [I(142,145)] = {64,0}, + [I(143,145)] = {64,0}, + [I(144,145)] = {64,0}, + [I(145,145)] = {64,0}, + [I(146,145)] = {64,0}, + [I(147,145)] = {64,0}, + [I(148,145)] = {64,0}, + [I(149,145)] = {64,0}, + [I(150,145)] = {64,0}, + [I(151,145)] = {64,0}, + [I(152,145)] = {64,0}, + [I(153,145)] = {64,0}, + [I(154,145)] = {64,0}, + [I(155,145)] = {64,0}, + [I(156,145)] = {64,0}, + [I(157,145)] = {64,0}, + [I(158,145)] = {64,0}, + [I(159,145)] = {64,0}, + [I(160,145)] = {64,0}, + [I(161,145)] = {64,0}, + [I(162,145)] = {64,0}, + [I(163,145)] = {64,0}, + [I(164,145)] = {64,0}, + [I(165,145)] = {64,0}, + [I(166,145)] = {64,0}, + [I(167,145)] = {64,0}, + [I(168,145)] = {64,0}, + [I(169,145)] = {64,0}, + [I(170,145)] = {64,0}, + [I(171,145)] = {64,0}, + [I(172,145)] = {64,0}, + [I(173,145)] = {64,0}, + [I(174,145)] = {64,0}, + [I(175,145)] = {64,0}, + [I(176,145)] = {64,0}, + [I(177,145)] = {64,0}, + [I(178,145)] = {64,0}, + [I(179,145)] = {64,0}, + [I(180,145)] = {64,0}, + [I(181,145)] = {64,0}, + [I(182,145)] = {64,0}, + [I(183,145)] = {64,0}, + [I(184,145)] = {64,0}, + [I(185,145)] = {64,0}, + [I(186,145)] = {64,0}, + [I(187,145)] = {64,0}, + [I(188,145)] = {64,0}, + [I(189,145)] = {64,0}, + [I(190,145)] = {64,0}, + [I(191,145)] = {64,0}, + [I(192,145)] = {64,0}, + [I(193,145)] = {64,0}, + [I(194,145)] = {64,0}, + [I(195,145)] = {64,0}, + [I(196,145)] = {64,0}, + [I(197,145)] = {64,0}, + [I(198,145)] = {64,0}, + [I(199,145)] = {64,0}, + [I(200,145)] = {64,0}, + [I(201,145)] = {64,0}, + [I(202,145)] = {64,0}, + [I(203,145)] = {64,0}, + [I(204,145)] = {64,0}, + [I(205,145)] = {64,0}, + [I(206,145)] = {64,0}, + [I(207,145)] = {64,0}, + [I(208,145)] = {64,0}, + [I(209,145)] = {64,0}, + [I(210,145)] = {64,0}, + [I(211,145)] = {64,0}, + [I(212,145)] = {64,0}, + [I(213,145)] = {64,0}, + [I(214,145)] = {64,0}, + [I(215,145)] = {64,0}, + [I(216,145)] = {64,0}, + [I(217,145)] = {64,0}, + [I(218,145)] = {64,0}, + [I(219,145)] = {64,0}, + [I(220,145)] = {64,0}, + [I(221,145)] = {64,0}, + [I(222,145)] = {64,0}, + [I(223,145)] = {64,0}, + [I(224,145)] = {64,0}, + [I(225,145)] = {64,0}, + [I(226,145)] = {64,0}, + [I(227,145)] = {64,0}, + [I(228,145)] = {64,0}, + [I(229,145)] = {64,0}, + [I(230,145)] = {64,0}, + [I(231,145)] = {64,0}, + [I(232,145)] = {64,0}, + [I(233,145)] = {64,0}, + [I(234,145)] = {64,0}, + [I(235,145)] = {64,0}, + [I(236,145)] = {64,0}, + [I(237,145)] = {64,0}, + [I(238,145)] = {64,0}, + [I(239,145)] = {64,0}, + [I(240,145)] = {64,0}, + [I(241,145)] = {64,0}, + [I(242,145)] = {64,0}, + [I(243,145)] = {64,0}, + [I(244,145)] = {64,0}, + [I(245,145)] = {64,0}, + [I(246,145)] = {64,0}, + [I(247,145)] = {64,0}, + [I(248,145)] = {64,0}, + [I(249,145)] = {64,0}, + [I(250,145)] = {64,0}, + [I(251,145)] = {64,0}, + [I(252,145)] = {64,0}, + [I(253,145)] = {64,0}, + [I(254,145)] = {64,0}, + [I(255,145)] = {64,0}, + [I(0,146)] = {64,0}, + [I(1,146)] = {64,0}, + [I(2,146)] = {64,0}, + [I(3,146)] = {64,0}, + [I(4,146)] = {64,0}, + [I(5,146)] = {64,0}, + [I(6,146)] = {64,0}, + [I(7,146)] = {64,0}, + [I(8,146)] = {64,0}, + [I(9,146)] = {64,0}, + [I(10,146)] = {64,0}, + [I(11,146)] = {64,0}, + [I(12,146)] = {64,0}, + [I(13,146)] = {64,0}, + [I(14,146)] = {64,0}, + [I(15,146)] = {64,0}, + [I(16,146)] = {64,0}, + [I(17,146)] = {64,0}, + [I(18,146)] = {64,0}, + [I(19,146)] = {64,0}, + [I(20,146)] = {64,0}, + [I(21,146)] = {64,0}, + [I(22,146)] = {64,0}, + [I(23,146)] = {64,0}, + [I(24,146)] = {64,0}, + [I(25,146)] = {64,0}, + [I(26,146)] = {64,0}, + [I(27,146)] = {64,0}, + [I(28,146)] = {64,0}, + [I(29,146)] = {64,0}, + [I(30,146)] = {64,0}, + [I(31,146)] = {64,0}, + [I(32,146)] = {28,0x53FFFD7}, + [I(33,146)] = {X32,0xFE3FFFD7}, + [I(34,146)] = {X32,0xFE7FFFD7}, + [I(35,146)] = {64,0}, + [I(36,146)] = {64,0}, + [I(37,146)] = {28,0x57FFFD7}, + [I(38,146)] = {30,0x3E3FFFD7}, + [I(39,146)] = {64,0}, + [I(40,146)] = {X32,0xFEBFFFD7}, + [I(41,146)] = {X32,0xFEFFFFD7}, + [I(42,146)] = {30,0x3E7FFFD7}, + [I(43,146)] = {64,0}, + [I(44,146)] = {30,0x3EBFFFD7}, + [I(45,146)] = {28,0x5BFFFD7}, + [I(46,146)] = {28,0x5FFFFD7}, + [I(47,146)] = {28,0x63FFFD7}, + [I(48,146)] = {27,0x3FFFD7}, + [I(49,146)] = {27,0x7FFFD7}, + [I(50,146)] = {27,0xBFFFD7}, + [I(51,146)] = {28,0x67FFFD7}, + [I(52,146)] = {28,0x6BFFFD7}, + [I(53,146)] = {28,0x6FFFFD7}, + [I(54,146)] = {28,0x73FFFD7}, + [I(55,146)] = {28,0x77FFFD7}, + [I(56,146)] = {28,0x7BFFFD7}, + [I(57,146)] = {28,0x7FFFFD7}, + [I(58,146)] = {29,0x173FFFD7}, + [I(59,146)] = {30,0x3EFFFFD7}, + [I(60,146)] = {64,0}, + [I(61,146)] = {28,0x83FFFD7}, + [I(62,146)] = {64,0}, + [I(63,146)] = {X32,0xFF3FFFD7}, + [I(64,146)] = {64,0}, + [I(65,146)] = {28,0x87FFFD7}, + [I(66,146)] = {29,0x177FFFD7}, + [I(67,146)] = {29,0x17BFFFD7}, + [I(68,146)] = {29,0x17FFFFD7}, + [I(69,146)] = {29,0x183FFFD7}, + [I(70,146)] = {29,0x187FFFD7}, + [I(71,146)] = {29,0x18BFFFD7}, + [I(72,146)] = {29,0x18FFFFD7}, + [I(73,146)] = {29,0x193FFFD7}, + [I(74,146)] = {29,0x197FFFD7}, + [I(75,146)] = {29,0x19BFFFD7}, + [I(76,146)] = {29,0x19FFFFD7}, + [I(77,146)] = {29,0x1A3FFFD7}, + [I(78,146)] = {29,0x1A7FFFD7}, + [I(79,146)] = {29,0x1ABFFFD7}, + [I(80,146)] = {29,0x1AFFFFD7}, + [I(81,146)] = {29,0x1B3FFFD7}, + [I(82,146)] = {29,0x1B7FFFD7}, + [I(83,146)] = {29,0x1BBFFFD7}, + [I(84,146)] = {29,0x1BFFFFD7}, + [I(85,146)] = {29,0x1C3FFFD7}, + [I(86,146)] = {29,0x1C7FFFD7}, + [I(87,146)] = {29,0x1CBFFFD7}, + [I(88,146)] = {30,0x3F3FFFD7}, + [I(89,146)] = {29,0x1CFFFFD7}, + [I(90,146)] = {30,0x3F7FFFD7}, + [I(91,146)] = {64,0}, + [I(92,146)] = {64,0}, + [I(93,146)] = {64,0}, + [I(94,146)] = {64,0}, + [I(95,146)] = {28,0x8BFFFD7}, + [I(96,146)] = {64,0}, + [I(97,146)] = {27,0xFFFFD7}, + [I(98,146)] = {28,0x8FFFFD7}, + [I(99,146)] = {27,0x13FFFD7}, + [I(100,146)] = {28,0x93FFFD7}, + [I(101,146)] = {27,0x17FFFD7}, + [I(102,146)] = {28,0x97FFFD7}, + [I(103,146)] = {28,0x9BFFFD7}, + [I(104,146)] = {28,0x9FFFFD7}, + [I(105,146)] = {27,0x1BFFFD7}, + [I(106,146)] = {29,0x1D3FFFD7}, + [I(107,146)] = {29,0x1D7FFFD7}, + [I(108,146)] = {28,0xA3FFFD7}, + [I(109,146)] = {28,0xA7FFFD7}, + [I(110,146)] = {28,0xABFFFD7}, + [I(111,146)] = {27,0x1FFFFD7}, + [I(112,146)] = {28,0xAFFFFD7}, + [I(113,146)] = {29,0x1DBFFFD7}, + [I(114,146)] = {28,0xB3FFFD7}, + [I(115,146)] = {27,0x23FFFD7}, + [I(116,146)] = {27,0x27FFFD7}, + [I(117,146)] = {28,0xB7FFFD7}, + [I(118,146)] = {29,0x1DFFFFD7}, + [I(119,146)] = {29,0x1E3FFFD7}, + [I(120,146)] = {29,0x1E7FFFD7}, + [I(121,146)] = {29,0x1EBFFFD7}, + [I(122,146)] = {29,0x1EFFFFD7}, + [I(123,146)] = {64,0}, + [I(124,146)] = {64,0}, + [I(125,146)] = {64,0}, + [I(126,146)] = {64,0}, + [I(127,146)] = {64,0}, + [I(128,146)] = {64,0}, + [I(129,146)] = {64,0}, + [I(130,146)] = {64,0}, + [I(131,146)] = {64,0}, + [I(132,146)] = {64,0}, + [I(133,146)] = {64,0}, + [I(134,146)] = {64,0}, + [I(135,146)] = {64,0}, + [I(136,146)] = {64,0}, + [I(137,146)] = {64,0}, + [I(138,146)] = {64,0}, + [I(139,146)] = {64,0}, + [I(140,146)] = {64,0}, + [I(141,146)] = {64,0}, + [I(142,146)] = {64,0}, + [I(143,146)] = {64,0}, + [I(144,146)] = {64,0}, + [I(145,146)] = {64,0}, + [I(146,146)] = {64,0}, + [I(147,146)] = {64,0}, + [I(148,146)] = {64,0}, + [I(149,146)] = {64,0}, + [I(150,146)] = {64,0}, + [I(151,146)] = {64,0}, + [I(152,146)] = {64,0}, + [I(153,146)] = {64,0}, + [I(154,146)] = {64,0}, + [I(155,146)] = {64,0}, + [I(156,146)] = {64,0}, + [I(157,146)] = {64,0}, + [I(158,146)] = {64,0}, + [I(159,146)] = {64,0}, + [I(160,146)] = {64,0}, + [I(161,146)] = {64,0}, + [I(162,146)] = {64,0}, + [I(163,146)] = {64,0}, + [I(164,146)] = {64,0}, + [I(165,146)] = {64,0}, + [I(166,146)] = {64,0}, + [I(167,146)] = {64,0}, + [I(168,146)] = {64,0}, + [I(169,146)] = {64,0}, + [I(170,146)] = {64,0}, + [I(171,146)] = {64,0}, + [I(172,146)] = {64,0}, + [I(173,146)] = {64,0}, + [I(174,146)] = {64,0}, + [I(175,146)] = {64,0}, + [I(176,146)] = {64,0}, + [I(177,146)] = {64,0}, + [I(178,146)] = {64,0}, + [I(179,146)] = {64,0}, + [I(180,146)] = {64,0}, + [I(181,146)] = {64,0}, + [I(182,146)] = {64,0}, + [I(183,146)] = {64,0}, + [I(184,146)] = {64,0}, + [I(185,146)] = {64,0}, + [I(186,146)] = {64,0}, + [I(187,146)] = {64,0}, + [I(188,146)] = {64,0}, + [I(189,146)] = {64,0}, + [I(190,146)] = {64,0}, + [I(191,146)] = {64,0}, + [I(192,146)] = {64,0}, + [I(193,146)] = {64,0}, + [I(194,146)] = {64,0}, + [I(195,146)] = {64,0}, + [I(196,146)] = {64,0}, + [I(197,146)] = {64,0}, + [I(198,146)] = {64,0}, + [I(199,146)] = {64,0}, + [I(200,146)] = {64,0}, + [I(201,146)] = {64,0}, + [I(202,146)] = {64,0}, + [I(203,146)] = {64,0}, + [I(204,146)] = {64,0}, + [I(205,146)] = {64,0}, + [I(206,146)] = {64,0}, + [I(207,146)] = {64,0}, + [I(208,146)] = {64,0}, + [I(209,146)] = {64,0}, + [I(210,146)] = {64,0}, + [I(211,146)] = {64,0}, + [I(212,146)] = {64,0}, + [I(213,146)] = {64,0}, + [I(214,146)] = {64,0}, + [I(215,146)] = {64,0}, + [I(216,146)] = {64,0}, + [I(217,146)] = {64,0}, + [I(218,146)] = {64,0}, + [I(219,146)] = {64,0}, + [I(220,146)] = {64,0}, + [I(221,146)] = {64,0}, + [I(222,146)] = {64,0}, + [I(223,146)] = {64,0}, + [I(224,146)] = {64,0}, + [I(225,146)] = {64,0}, + [I(226,146)] = {64,0}, + [I(227,146)] = {64,0}, + [I(228,146)] = {64,0}, + [I(229,146)] = {64,0}, + [I(230,146)] = {64,0}, + [I(231,146)] = {64,0}, + [I(232,146)] = {64,0}, + [I(233,146)] = {64,0}, + [I(234,146)] = {64,0}, + [I(235,146)] = {64,0}, + [I(236,146)] = {64,0}, + [I(237,146)] = {64,0}, + [I(238,146)] = {64,0}, + [I(239,146)] = {64,0}, + [I(240,146)] = {64,0}, + [I(241,146)] = {64,0}, + [I(242,146)] = {64,0}, + [I(243,146)] = {64,0}, + [I(244,146)] = {64,0}, + [I(245,146)] = {64,0}, + [I(246,146)] = {64,0}, + [I(247,146)] = {64,0}, + [I(248,146)] = {64,0}, + [I(249,146)] = {64,0}, + [I(250,146)] = {64,0}, + [I(251,146)] = {64,0}, + [I(252,146)] = {64,0}, + [I(253,146)] = {64,0}, + [I(254,146)] = {64,0}, + [I(255,146)] = {64,0}, + [I(0,147)] = {64,0}, + [I(1,147)] = {64,0}, + [I(2,147)] = {64,0}, + [I(3,147)] = {64,0}, + [I(4,147)] = {64,0}, + [I(5,147)] = {64,0}, + [I(6,147)] = {64,0}, + [I(7,147)] = {64,0}, + [I(8,147)] = {64,0}, + [I(9,147)] = {64,0}, + [I(10,147)] = {64,0}, + [I(11,147)] = {64,0}, + [I(12,147)] = {64,0}, + [I(13,147)] = {64,0}, + [I(14,147)] = {64,0}, + [I(15,147)] = {64,0}, + [I(16,147)] = {64,0}, + [I(17,147)] = {64,0}, + [I(18,147)] = {64,0}, + [I(19,147)] = {64,0}, + [I(20,147)] = {64,0}, + [I(21,147)] = {64,0}, + [I(22,147)] = {64,0}, + [I(23,147)] = {64,0}, + [I(24,147)] = {64,0}, + [I(25,147)] = {64,0}, + [I(26,147)] = {64,0}, + [I(27,147)] = {64,0}, + [I(28,147)] = {64,0}, + [I(29,147)] = {64,0}, + [I(30,147)] = {64,0}, + [I(31,147)] = {64,0}, + [I(32,147)] = {29,0xA7FFFE0}, + [I(33,147)] = {64,0}, + [I(34,147)] = {64,0}, + [I(35,147)] = {64,0}, + [I(36,147)] = {64,0}, + [I(37,147)] = {29,0xAFFFFE0}, + [I(38,147)] = {31,0x7C7FFFE0}, + [I(39,147)] = {64,0}, + [I(40,147)] = {64,0}, + [I(41,147)] = {64,0}, + [I(42,147)] = {31,0x7CFFFFE0}, + [I(43,147)] = {64,0}, + [I(44,147)] = {31,0x7D7FFFE0}, + [I(45,147)] = {29,0xB7FFFE0}, + [I(46,147)] = {29,0xBFFFFE0}, + [I(47,147)] = {29,0xC7FFFE0}, + [I(48,147)] = {28,0x7FFFE0}, + [I(49,147)] = {28,0xFFFFE0}, + [I(50,147)] = {28,0x17FFFE0}, + [I(51,147)] = {29,0xCFFFFE0}, + [I(52,147)] = {29,0xD7FFFE0}, + [I(53,147)] = {29,0xDFFFFE0}, + [I(54,147)] = {29,0xE7FFFE0}, + [I(55,147)] = {29,0xEFFFFE0}, + [I(56,147)] = {29,0xF7FFFE0}, + [I(57,147)] = {29,0xFFFFFE0}, + [I(58,147)] = {30,0x2E7FFFE0}, + [I(59,147)] = {31,0x7DFFFFE0}, + [I(60,147)] = {64,0}, + [I(61,147)] = {29,0x107FFFE0}, + [I(62,147)] = {64,0}, + [I(63,147)] = {64,0}, + [I(64,147)] = {64,0}, + [I(65,147)] = {29,0x10FFFFE0}, + [I(66,147)] = {30,0x2EFFFFE0}, + [I(67,147)] = {30,0x2F7FFFE0}, + [I(68,147)] = {30,0x2FFFFFE0}, + [I(69,147)] = {30,0x307FFFE0}, + [I(70,147)] = {30,0x30FFFFE0}, + [I(71,147)] = {30,0x317FFFE0}, + [I(72,147)] = {30,0x31FFFFE0}, + [I(73,147)] = {30,0x327FFFE0}, + [I(74,147)] = {30,0x32FFFFE0}, + [I(75,147)] = {30,0x337FFFE0}, + [I(76,147)] = {30,0x33FFFFE0}, + [I(77,147)] = {30,0x347FFFE0}, + [I(78,147)] = {30,0x34FFFFE0}, + [I(79,147)] = {30,0x357FFFE0}, + [I(80,147)] = {30,0x35FFFFE0}, + [I(81,147)] = {30,0x367FFFE0}, + [I(82,147)] = {30,0x36FFFFE0}, + [I(83,147)] = {30,0x377FFFE0}, + [I(84,147)] = {30,0x37FFFFE0}, + [I(85,147)] = {30,0x387FFFE0}, + [I(86,147)] = {30,0x38FFFFE0}, + [I(87,147)] = {30,0x397FFFE0}, + [I(88,147)] = {31,0x7E7FFFE0}, + [I(89,147)] = {30,0x39FFFFE0}, + [I(90,147)] = {31,0x7EFFFFE0}, + [I(91,147)] = {64,0}, + [I(92,147)] = {64,0}, + [I(93,147)] = {64,0}, + [I(94,147)] = {64,0}, + [I(95,147)] = {29,0x117FFFE0}, + [I(96,147)] = {64,0}, + [I(97,147)] = {28,0x1FFFFE0}, + [I(98,147)] = {29,0x11FFFFE0}, + [I(99,147)] = {28,0x27FFFE0}, + [I(100,147)] = {29,0x127FFFE0}, + [I(101,147)] = {28,0x2FFFFE0}, + [I(102,147)] = {29,0x12FFFFE0}, + [I(103,147)] = {29,0x137FFFE0}, + [I(104,147)] = {29,0x13FFFFE0}, + [I(105,147)] = {28,0x37FFFE0}, + [I(106,147)] = {30,0x3A7FFFE0}, + [I(107,147)] = {30,0x3AFFFFE0}, + [I(108,147)] = {29,0x147FFFE0}, + [I(109,147)] = {29,0x14FFFFE0}, + [I(110,147)] = {29,0x157FFFE0}, + [I(111,147)] = {28,0x3FFFFE0}, + [I(112,147)] = {29,0x15FFFFE0}, + [I(113,147)] = {30,0x3B7FFFE0}, + [I(114,147)] = {29,0x167FFFE0}, + [I(115,147)] = {28,0x47FFFE0}, + [I(116,147)] = {28,0x4FFFFE0}, + [I(117,147)] = {29,0x16FFFFE0}, + [I(118,147)] = {30,0x3BFFFFE0}, + [I(119,147)] = {30,0x3C7FFFE0}, + [I(120,147)] = {30,0x3CFFFFE0}, + [I(121,147)] = {30,0x3D7FFFE0}, + [I(122,147)] = {30,0x3DFFFFE0}, + [I(123,147)] = {64,0}, + [I(124,147)] = {64,0}, + [I(125,147)] = {64,0}, + [I(126,147)] = {64,0}, + [I(127,147)] = {64,0}, + [I(128,147)] = {64,0}, + [I(129,147)] = {64,0}, + [I(130,147)] = {64,0}, + [I(131,147)] = {64,0}, + [I(132,147)] = {64,0}, + [I(133,147)] = {64,0}, + [I(134,147)] = {64,0}, + [I(135,147)] = {64,0}, + [I(136,147)] = {64,0}, + [I(137,147)] = {64,0}, + [I(138,147)] = {64,0}, + [I(139,147)] = {64,0}, + [I(140,147)] = {64,0}, + [I(141,147)] = {64,0}, + [I(142,147)] = {64,0}, + [I(143,147)] = {64,0}, + [I(144,147)] = {64,0}, + [I(145,147)] = {64,0}, + [I(146,147)] = {64,0}, + [I(147,147)] = {64,0}, + [I(148,147)] = {64,0}, + [I(149,147)] = {64,0}, + [I(150,147)] = {64,0}, + [I(151,147)] = {64,0}, + [I(152,147)] = {64,0}, + [I(153,147)] = {64,0}, + [I(154,147)] = {64,0}, + [I(155,147)] = {64,0}, + [I(156,147)] = {64,0}, + [I(157,147)] = {64,0}, + [I(158,147)] = {64,0}, + [I(159,147)] = {64,0}, + [I(160,147)] = {64,0}, + [I(161,147)] = {64,0}, + [I(162,147)] = {64,0}, + [I(163,147)] = {64,0}, + [I(164,147)] = {64,0}, + [I(165,147)] = {64,0}, + [I(166,147)] = {64,0}, + [I(167,147)] = {64,0}, + [I(168,147)] = {64,0}, + [I(169,147)] = {64,0}, + [I(170,147)] = {64,0}, + [I(171,147)] = {64,0}, + [I(172,147)] = {64,0}, + [I(173,147)] = {64,0}, + [I(174,147)] = {64,0}, + [I(175,147)] = {64,0}, + [I(176,147)] = {64,0}, + [I(177,147)] = {64,0}, + [I(178,147)] = {64,0}, + [I(179,147)] = {64,0}, + [I(180,147)] = {64,0}, + [I(181,147)] = {64,0}, + [I(182,147)] = {64,0}, + [I(183,147)] = {64,0}, + [I(184,147)] = {64,0}, + [I(185,147)] = {64,0}, + [I(186,147)] = {64,0}, + [I(187,147)] = {64,0}, + [I(188,147)] = {64,0}, + [I(189,147)] = {64,0}, + [I(190,147)] = {64,0}, + [I(191,147)] = {64,0}, + [I(192,147)] = {64,0}, + [I(193,147)] = {64,0}, + [I(194,147)] = {64,0}, + [I(195,147)] = {64,0}, + [I(196,147)] = {64,0}, + [I(197,147)] = {64,0}, + [I(198,147)] = {64,0}, + [I(199,147)] = {64,0}, + [I(200,147)] = {64,0}, + [I(201,147)] = {64,0}, + [I(202,147)] = {64,0}, + [I(203,147)] = {64,0}, + [I(204,147)] = {64,0}, + [I(205,147)] = {64,0}, + [I(206,147)] = {64,0}, + [I(207,147)] = {64,0}, + [I(208,147)] = {64,0}, + [I(209,147)] = {64,0}, + [I(210,147)] = {64,0}, + [I(211,147)] = {64,0}, + [I(212,147)] = {64,0}, + [I(213,147)] = {64,0}, + [I(214,147)] = {64,0}, + [I(215,147)] = {64,0}, + [I(216,147)] = {64,0}, + [I(217,147)] = {64,0}, + [I(218,147)] = {64,0}, + [I(219,147)] = {64,0}, + [I(220,147)] = {64,0}, + [I(221,147)] = {64,0}, + [I(222,147)] = {64,0}, + [I(223,147)] = {64,0}, + [I(224,147)] = {64,0}, + [I(225,147)] = {64,0}, + [I(226,147)] = {64,0}, + [I(227,147)] = {64,0}, + [I(228,147)] = {64,0}, + [I(229,147)] = {64,0}, + [I(230,147)] = {64,0}, + [I(231,147)] = {64,0}, + [I(232,147)] = {64,0}, + [I(233,147)] = {64,0}, + [I(234,147)] = {64,0}, + [I(235,147)] = {64,0}, + [I(236,147)] = {64,0}, + [I(237,147)] = {64,0}, + [I(238,147)] = {64,0}, + [I(239,147)] = {64,0}, + [I(240,147)] = {64,0}, + [I(241,147)] = {64,0}, + [I(242,147)] = {64,0}, + [I(243,147)] = {64,0}, + [I(244,147)] = {64,0}, + [I(245,147)] = {64,0}, + [I(246,147)] = {64,0}, + [I(247,147)] = {64,0}, + [I(248,147)] = {64,0}, + [I(249,147)] = {64,0}, + [I(250,147)] = {64,0}, + [I(251,147)] = {64,0}, + [I(252,147)] = {64,0}, + [I(253,147)] = {64,0}, + [I(254,147)] = {64,0}, + [I(255,147)] = {64,0}, + [I(0,148)] = {64,0}, + [I(1,148)] = {64,0}, + [I(2,148)] = {64,0}, + [I(3,148)] = {64,0}, + [I(4,148)] = {64,0}, + [I(5,148)] = {64,0}, + [I(6,148)] = {64,0}, + [I(7,148)] = {64,0}, + [I(8,148)] = {64,0}, + [I(9,148)] = {64,0}, + [I(10,148)] = {64,0}, + [I(11,148)] = {64,0}, + [I(12,148)] = {64,0}, + [I(13,148)] = {64,0}, + [I(14,148)] = {64,0}, + [I(15,148)] = {64,0}, + [I(16,148)] = {64,0}, + [I(17,148)] = {64,0}, + [I(18,148)] = {64,0}, + [I(19,148)] = {64,0}, + [I(20,148)] = {64,0}, + [I(21,148)] = {64,0}, + [I(22,148)] = {64,0}, + [I(23,148)] = {64,0}, + [I(24,148)] = {64,0}, + [I(25,148)] = {64,0}, + [I(26,148)] = {64,0}, + [I(27,148)] = {64,0}, + [I(28,148)] = {64,0}, + [I(29,148)] = {64,0}, + [I(30,148)] = {64,0}, + [I(31,148)] = {64,0}, + [I(32,148)] = {30,0x14FFFFEE}, + [I(33,148)] = {64,0}, + [I(34,148)] = {64,0}, + [I(35,148)] = {64,0}, + [I(36,148)] = {64,0}, + [I(37,148)] = {30,0x15FFFFEE}, + [I(38,148)] = {X32,0xF8FFFFEE}, + [I(39,148)] = {64,0}, + [I(40,148)] = {64,0}, + [I(41,148)] = {64,0}, + [I(42,148)] = {X32,0xF9FFFFEE}, + [I(43,148)] = {64,0}, + [I(44,148)] = {X32,0xFAFFFFEE}, + [I(45,148)] = {30,0x16FFFFEE}, + [I(46,148)] = {30,0x17FFFFEE}, + [I(47,148)] = {30,0x18FFFFEE}, + [I(48,148)] = {29,0xFFFFEE}, + [I(49,148)] = {29,0x1FFFFEE}, + [I(50,148)] = {29,0x2FFFFEE}, + [I(51,148)] = {30,0x19FFFFEE}, + [I(52,148)] = {30,0x1AFFFFEE}, + [I(53,148)] = {30,0x1BFFFFEE}, + [I(54,148)] = {30,0x1CFFFFEE}, + [I(55,148)] = {30,0x1DFFFFEE}, + [I(56,148)] = {30,0x1EFFFFEE}, + [I(57,148)] = {30,0x1FFFFFEE}, + [I(58,148)] = {31,0x5CFFFFEE}, + [I(59,148)] = {X32,0xFBFFFFEE}, + [I(60,148)] = {64,0}, + [I(61,148)] = {30,0x20FFFFEE}, + [I(62,148)] = {64,0}, + [I(63,148)] = {64,0}, + [I(64,148)] = {64,0}, + [I(65,148)] = {30,0x21FFFFEE}, + [I(66,148)] = {31,0x5DFFFFEE}, + [I(67,148)] = {31,0x5EFFFFEE}, + [I(68,148)] = {31,0x5FFFFFEE}, + [I(69,148)] = {31,0x60FFFFEE}, + [I(70,148)] = {31,0x61FFFFEE}, + [I(71,148)] = {31,0x62FFFFEE}, + [I(72,148)] = {31,0x63FFFFEE}, + [I(73,148)] = {31,0x64FFFFEE}, + [I(74,148)] = {31,0x65FFFFEE}, + [I(75,148)] = {31,0x66FFFFEE}, + [I(76,148)] = {31,0x67FFFFEE}, + [I(77,148)] = {31,0x68FFFFEE}, + [I(78,148)] = {31,0x69FFFFEE}, + [I(79,148)] = {31,0x6AFFFFEE}, + [I(80,148)] = {31,0x6BFFFFEE}, + [I(81,148)] = {31,0x6CFFFFEE}, + [I(82,148)] = {31,0x6DFFFFEE}, + [I(83,148)] = {31,0x6EFFFFEE}, + [I(84,148)] = {31,0x6FFFFFEE}, + [I(85,148)] = {31,0x70FFFFEE}, + [I(86,148)] = {31,0x71FFFFEE}, + [I(87,148)] = {31,0x72FFFFEE}, + [I(88,148)] = {X32,0xFCFFFFEE}, + [I(89,148)] = {31,0x73FFFFEE}, + [I(90,148)] = {X32,0xFDFFFFEE}, + [I(91,148)] = {64,0}, + [I(92,148)] = {64,0}, + [I(93,148)] = {64,0}, + [I(94,148)] = {64,0}, + [I(95,148)] = {30,0x22FFFFEE}, + [I(96,148)] = {64,0}, + [I(97,148)] = {29,0x3FFFFEE}, + [I(98,148)] = {30,0x23FFFFEE}, + [I(99,148)] = {29,0x4FFFFEE}, + [I(100,148)] = {30,0x24FFFFEE}, + [I(101,148)] = {29,0x5FFFFEE}, + [I(102,148)] = {30,0x25FFFFEE}, + [I(103,148)] = {30,0x26FFFFEE}, + [I(104,148)] = {30,0x27FFFFEE}, + [I(105,148)] = {29,0x6FFFFEE}, + [I(106,148)] = {31,0x74FFFFEE}, + [I(107,148)] = {31,0x75FFFFEE}, + [I(108,148)] = {30,0x28FFFFEE}, + [I(109,148)] = {30,0x29FFFFEE}, + [I(110,148)] = {30,0x2AFFFFEE}, + [I(111,148)] = {29,0x7FFFFEE}, + [I(112,148)] = {30,0x2BFFFFEE}, + [I(113,148)] = {31,0x76FFFFEE}, + [I(114,148)] = {30,0x2CFFFFEE}, + [I(115,148)] = {29,0x8FFFFEE}, + [I(116,148)] = {29,0x9FFFFEE}, + [I(117,148)] = {30,0x2DFFFFEE}, + [I(118,148)] = {31,0x77FFFFEE}, + [I(119,148)] = {31,0x78FFFFEE}, + [I(120,148)] = {31,0x79FFFFEE}, + [I(121,148)] = {31,0x7AFFFFEE}, + [I(122,148)] = {31,0x7BFFFFEE}, + [I(123,148)] = {64,0}, + [I(124,148)] = {64,0}, + [I(125,148)] = {64,0}, + [I(126,148)] = {64,0}, + [I(127,148)] = {64,0}, + [I(128,148)] = {64,0}, + [I(129,148)] = {64,0}, + [I(130,148)] = {64,0}, + [I(131,148)] = {64,0}, + [I(132,148)] = {64,0}, + [I(133,148)] = {64,0}, + [I(134,148)] = {64,0}, + [I(135,148)] = {64,0}, + [I(136,148)] = {64,0}, + [I(137,148)] = {64,0}, + [I(138,148)] = {64,0}, + [I(139,148)] = {64,0}, + [I(140,148)] = {64,0}, + [I(141,148)] = {64,0}, + [I(142,148)] = {64,0}, + [I(143,148)] = {64,0}, + [I(144,148)] = {64,0}, + [I(145,148)] = {64,0}, + [I(146,148)] = {64,0}, + [I(147,148)] = {64,0}, + [I(148,148)] = {64,0}, + [I(149,148)] = {64,0}, + [I(150,148)] = {64,0}, + [I(151,148)] = {64,0}, + [I(152,148)] = {64,0}, + [I(153,148)] = {64,0}, + [I(154,148)] = {64,0}, + [I(155,148)] = {64,0}, + [I(156,148)] = {64,0}, + [I(157,148)] = {64,0}, + [I(158,148)] = {64,0}, + [I(159,148)] = {64,0}, + [I(160,148)] = {64,0}, + [I(161,148)] = {64,0}, + [I(162,148)] = {64,0}, + [I(163,148)] = {64,0}, + [I(164,148)] = {64,0}, + [I(165,148)] = {64,0}, + [I(166,148)] = {64,0}, + [I(167,148)] = {64,0}, + [I(168,148)] = {64,0}, + [I(169,148)] = {64,0}, + [I(170,148)] = {64,0}, + [I(171,148)] = {64,0}, + [I(172,148)] = {64,0}, + [I(173,148)] = {64,0}, + [I(174,148)] = {64,0}, + [I(175,148)] = {64,0}, + [I(176,148)] = {64,0}, + [I(177,148)] = {64,0}, + [I(178,148)] = {64,0}, + [I(179,148)] = {64,0}, + [I(180,148)] = {64,0}, + [I(181,148)] = {64,0}, + [I(182,148)] = {64,0}, + [I(183,148)] = {64,0}, + [I(184,148)] = {64,0}, + [I(185,148)] = {64,0}, + [I(186,148)] = {64,0}, + [I(187,148)] = {64,0}, + [I(188,148)] = {64,0}, + [I(189,148)] = {64,0}, + [I(190,148)] = {64,0}, + [I(191,148)] = {64,0}, + [I(192,148)] = {64,0}, + [I(193,148)] = {64,0}, + [I(194,148)] = {64,0}, + [I(195,148)] = {64,0}, + [I(196,148)] = {64,0}, + [I(197,148)] = {64,0}, + [I(198,148)] = {64,0}, + [I(199,148)] = {64,0}, + [I(200,148)] = {64,0}, + [I(201,148)] = {64,0}, + [I(202,148)] = {64,0}, + [I(203,148)] = {64,0}, + [I(204,148)] = {64,0}, + [I(205,148)] = {64,0}, + [I(206,148)] = {64,0}, + [I(207,148)] = {64,0}, + [I(208,148)] = {64,0}, + [I(209,148)] = {64,0}, + [I(210,148)] = {64,0}, + [I(211,148)] = {64,0}, + [I(212,148)] = {64,0}, + [I(213,148)] = {64,0}, + [I(214,148)] = {64,0}, + [I(215,148)] = {64,0}, + [I(216,148)] = {64,0}, + [I(217,148)] = {64,0}, + [I(218,148)] = {64,0}, + [I(219,148)] = {64,0}, + [I(220,148)] = {64,0}, + [I(221,148)] = {64,0}, + [I(222,148)] = {64,0}, + [I(223,148)] = {64,0}, + [I(224,148)] = {64,0}, + [I(225,148)] = {64,0}, + [I(226,148)] = {64,0}, + [I(227,148)] = {64,0}, + [I(228,148)] = {64,0}, + [I(229,148)] = {64,0}, + [I(230,148)] = {64,0}, + [I(231,148)] = {64,0}, + [I(232,148)] = {64,0}, + [I(233,148)] = {64,0}, + [I(234,148)] = {64,0}, + [I(235,148)] = {64,0}, + [I(236,148)] = {64,0}, + [I(237,148)] = {64,0}, + [I(238,148)] = {64,0}, + [I(239,148)] = {64,0}, + [I(240,148)] = {64,0}, + [I(241,148)] = {64,0}, + [I(242,148)] = {64,0}, + [I(243,148)] = {64,0}, + [I(244,148)] = {64,0}, + [I(245,148)] = {64,0}, + [I(246,148)] = {64,0}, + [I(247,148)] = {64,0}, + [I(248,148)] = {64,0}, + [I(249,148)] = {64,0}, + [I(250,148)] = {64,0}, + [I(251,148)] = {64,0}, + [I(252,148)] = {64,0}, + [I(253,148)] = {64,0}, + [I(254,148)] = {64,0}, + [I(255,148)] = {64,0}, + [I(0,149)] = {64,0}, + [I(1,149)] = {64,0}, + [I(2,149)] = {64,0}, + [I(3,149)] = {64,0}, + [I(4,149)] = {64,0}, + [I(5,149)] = {64,0}, + [I(6,149)] = {64,0}, + [I(7,149)] = {64,0}, + [I(8,149)] = {64,0}, + [I(9,149)] = {64,0}, + [I(10,149)] = {64,0}, + [I(11,149)] = {64,0}, + [I(12,149)] = {64,0}, + [I(13,149)] = {64,0}, + [I(14,149)] = {64,0}, + [I(15,149)] = {64,0}, + [I(16,149)] = {64,0}, + [I(17,149)] = {64,0}, + [I(18,149)] = {64,0}, + [I(19,149)] = {64,0}, + [I(20,149)] = {64,0}, + [I(21,149)] = {64,0}, + [I(22,149)] = {64,0}, + [I(23,149)] = {64,0}, + [I(24,149)] = {64,0}, + [I(25,149)] = {64,0}, + [I(26,149)] = {64,0}, + [I(27,149)] = {64,0}, + [I(28,149)] = {64,0}, + [I(29,149)] = {64,0}, + [I(30,149)] = {64,0}, + [I(31,149)] = {64,0}, + [I(32,149)] = {29,0xA7FFFE1}, + [I(33,149)] = {64,0}, + [I(34,149)] = {64,0}, + [I(35,149)] = {64,0}, + [I(36,149)] = {64,0}, + [I(37,149)] = {29,0xAFFFFE1}, + [I(38,149)] = {31,0x7C7FFFE1}, + [I(39,149)] = {64,0}, + [I(40,149)] = {64,0}, + [I(41,149)] = {64,0}, + [I(42,149)] = {31,0x7CFFFFE1}, + [I(43,149)] = {64,0}, + [I(44,149)] = {31,0x7D7FFFE1}, + [I(45,149)] = {29,0xB7FFFE1}, + [I(46,149)] = {29,0xBFFFFE1}, + [I(47,149)] = {29,0xC7FFFE1}, + [I(48,149)] = {28,0x7FFFE1}, + [I(49,149)] = {28,0xFFFFE1}, + [I(50,149)] = {28,0x17FFFE1}, + [I(51,149)] = {29,0xCFFFFE1}, + [I(52,149)] = {29,0xD7FFFE1}, + [I(53,149)] = {29,0xDFFFFE1}, + [I(54,149)] = {29,0xE7FFFE1}, + [I(55,149)] = {29,0xEFFFFE1}, + [I(56,149)] = {29,0xF7FFFE1}, + [I(57,149)] = {29,0xFFFFFE1}, + [I(58,149)] = {30,0x2E7FFFE1}, + [I(59,149)] = {31,0x7DFFFFE1}, + [I(60,149)] = {64,0}, + [I(61,149)] = {29,0x107FFFE1}, + [I(62,149)] = {64,0}, + [I(63,149)] = {64,0}, + [I(64,149)] = {64,0}, + [I(65,149)] = {29,0x10FFFFE1}, + [I(66,149)] = {30,0x2EFFFFE1}, + [I(67,149)] = {30,0x2F7FFFE1}, + [I(68,149)] = {30,0x2FFFFFE1}, + [I(69,149)] = {30,0x307FFFE1}, + [I(70,149)] = {30,0x30FFFFE1}, + [I(71,149)] = {30,0x317FFFE1}, + [I(72,149)] = {30,0x31FFFFE1}, + [I(73,149)] = {30,0x327FFFE1}, + [I(74,149)] = {30,0x32FFFFE1}, + [I(75,149)] = {30,0x337FFFE1}, + [I(76,149)] = {30,0x33FFFFE1}, + [I(77,149)] = {30,0x347FFFE1}, + [I(78,149)] = {30,0x34FFFFE1}, + [I(79,149)] = {30,0x357FFFE1}, + [I(80,149)] = {30,0x35FFFFE1}, + [I(81,149)] = {30,0x367FFFE1}, + [I(82,149)] = {30,0x36FFFFE1}, + [I(83,149)] = {30,0x377FFFE1}, + [I(84,149)] = {30,0x37FFFFE1}, + [I(85,149)] = {30,0x387FFFE1}, + [I(86,149)] = {30,0x38FFFFE1}, + [I(87,149)] = {30,0x397FFFE1}, + [I(88,149)] = {31,0x7E7FFFE1}, + [I(89,149)] = {30,0x39FFFFE1}, + [I(90,149)] = {31,0x7EFFFFE1}, + [I(91,149)] = {64,0}, + [I(92,149)] = {64,0}, + [I(93,149)] = {64,0}, + [I(94,149)] = {64,0}, + [I(95,149)] = {29,0x117FFFE1}, + [I(96,149)] = {64,0}, + [I(97,149)] = {28,0x1FFFFE1}, + [I(98,149)] = {29,0x11FFFFE1}, + [I(99,149)] = {28,0x27FFFE1}, + [I(100,149)] = {29,0x127FFFE1}, + [I(101,149)] = {28,0x2FFFFE1}, + [I(102,149)] = {29,0x12FFFFE1}, + [I(103,149)] = {29,0x137FFFE1}, + [I(104,149)] = {29,0x13FFFFE1}, + [I(105,149)] = {28,0x37FFFE1}, + [I(106,149)] = {30,0x3A7FFFE1}, + [I(107,149)] = {30,0x3AFFFFE1}, + [I(108,149)] = {29,0x147FFFE1}, + [I(109,149)] = {29,0x14FFFFE1}, + [I(110,149)] = {29,0x157FFFE1}, + [I(111,149)] = {28,0x3FFFFE1}, + [I(112,149)] = {29,0x15FFFFE1}, + [I(113,149)] = {30,0x3B7FFFE1}, + [I(114,149)] = {29,0x167FFFE1}, + [I(115,149)] = {28,0x47FFFE1}, + [I(116,149)] = {28,0x4FFFFE1}, + [I(117,149)] = {29,0x16FFFFE1}, + [I(118,149)] = {30,0x3BFFFFE1}, + [I(119,149)] = {30,0x3C7FFFE1}, + [I(120,149)] = {30,0x3CFFFFE1}, + [I(121,149)] = {30,0x3D7FFFE1}, + [I(122,149)] = {30,0x3DFFFFE1}, + [I(123,149)] = {64,0}, + [I(124,149)] = {64,0}, + [I(125,149)] = {64,0}, + [I(126,149)] = {64,0}, + [I(127,149)] = {64,0}, + [I(128,149)] = {64,0}, + [I(129,149)] = {64,0}, + [I(130,149)] = {64,0}, + [I(131,149)] = {64,0}, + [I(132,149)] = {64,0}, + [I(133,149)] = {64,0}, + [I(134,149)] = {64,0}, + [I(135,149)] = {64,0}, + [I(136,149)] = {64,0}, + [I(137,149)] = {64,0}, + [I(138,149)] = {64,0}, + [I(139,149)] = {64,0}, + [I(140,149)] = {64,0}, + [I(141,149)] = {64,0}, + [I(142,149)] = {64,0}, + [I(143,149)] = {64,0}, + [I(144,149)] = {64,0}, + [I(145,149)] = {64,0}, + [I(146,149)] = {64,0}, + [I(147,149)] = {64,0}, + [I(148,149)] = {64,0}, + [I(149,149)] = {64,0}, + [I(150,149)] = {64,0}, + [I(151,149)] = {64,0}, + [I(152,149)] = {64,0}, + [I(153,149)] = {64,0}, + [I(154,149)] = {64,0}, + [I(155,149)] = {64,0}, + [I(156,149)] = {64,0}, + [I(157,149)] = {64,0}, + [I(158,149)] = {64,0}, + [I(159,149)] = {64,0}, + [I(160,149)] = {64,0}, + [I(161,149)] = {64,0}, + [I(162,149)] = {64,0}, + [I(163,149)] = {64,0}, + [I(164,149)] = {64,0}, + [I(165,149)] = {64,0}, + [I(166,149)] = {64,0}, + [I(167,149)] = {64,0}, + [I(168,149)] = {64,0}, + [I(169,149)] = {64,0}, + [I(170,149)] = {64,0}, + [I(171,149)] = {64,0}, + [I(172,149)] = {64,0}, + [I(173,149)] = {64,0}, + [I(174,149)] = {64,0}, + [I(175,149)] = {64,0}, + [I(176,149)] = {64,0}, + [I(177,149)] = {64,0}, + [I(178,149)] = {64,0}, + [I(179,149)] = {64,0}, + [I(180,149)] = {64,0}, + [I(181,149)] = {64,0}, + [I(182,149)] = {64,0}, + [I(183,149)] = {64,0}, + [I(184,149)] = {64,0}, + [I(185,149)] = {64,0}, + [I(186,149)] = {64,0}, + [I(187,149)] = {64,0}, + [I(188,149)] = {64,0}, + [I(189,149)] = {64,0}, + [I(190,149)] = {64,0}, + [I(191,149)] = {64,0}, + [I(192,149)] = {64,0}, + [I(193,149)] = {64,0}, + [I(194,149)] = {64,0}, + [I(195,149)] = {64,0}, + [I(196,149)] = {64,0}, + [I(197,149)] = {64,0}, + [I(198,149)] = {64,0}, + [I(199,149)] = {64,0}, + [I(200,149)] = {64,0}, + [I(201,149)] = {64,0}, + [I(202,149)] = {64,0}, + [I(203,149)] = {64,0}, + [I(204,149)] = {64,0}, + [I(205,149)] = {64,0}, + [I(206,149)] = {64,0}, + [I(207,149)] = {64,0}, + [I(208,149)] = {64,0}, + [I(209,149)] = {64,0}, + [I(210,149)] = {64,0}, + [I(211,149)] = {64,0}, + [I(212,149)] = {64,0}, + [I(213,149)] = {64,0}, + [I(214,149)] = {64,0}, + [I(215,149)] = {64,0}, + [I(216,149)] = {64,0}, + [I(217,149)] = {64,0}, + [I(218,149)] = {64,0}, + [I(219,149)] = {64,0}, + [I(220,149)] = {64,0}, + [I(221,149)] = {64,0}, + [I(222,149)] = {64,0}, + [I(223,149)] = {64,0}, + [I(224,149)] = {64,0}, + [I(225,149)] = {64,0}, + [I(226,149)] = {64,0}, + [I(227,149)] = {64,0}, + [I(228,149)] = {64,0}, + [I(229,149)] = {64,0}, + [I(230,149)] = {64,0}, + [I(231,149)] = {64,0}, + [I(232,149)] = {64,0}, + [I(233,149)] = {64,0}, + [I(234,149)] = {64,0}, + [I(235,149)] = {64,0}, + [I(236,149)] = {64,0}, + [I(237,149)] = {64,0}, + [I(238,149)] = {64,0}, + [I(239,149)] = {64,0}, + [I(240,149)] = {64,0}, + [I(241,149)] = {64,0}, + [I(242,149)] = {64,0}, + [I(243,149)] = {64,0}, + [I(244,149)] = {64,0}, + [I(245,149)] = {64,0}, + [I(246,149)] = {64,0}, + [I(247,149)] = {64,0}, + [I(248,149)] = {64,0}, + [I(249,149)] = {64,0}, + [I(250,149)] = {64,0}, + [I(251,149)] = {64,0}, + [I(252,149)] = {64,0}, + [I(253,149)] = {64,0}, + [I(254,149)] = {64,0}, + [I(255,149)] = {64,0}, + [I(0,150)] = {64,0}, + [I(1,150)] = {64,0}, + [I(2,150)] = {64,0}, + [I(3,150)] = {64,0}, + [I(4,150)] = {64,0}, + [I(5,150)] = {64,0}, + [I(6,150)] = {64,0}, + [I(7,150)] = {64,0}, + [I(8,150)] = {64,0}, + [I(9,150)] = {64,0}, + [I(10,150)] = {64,0}, + [I(11,150)] = {64,0}, + [I(12,150)] = {64,0}, + [I(13,150)] = {64,0}, + [I(14,150)] = {64,0}, + [I(15,150)] = {64,0}, + [I(16,150)] = {64,0}, + [I(17,150)] = {64,0}, + [I(18,150)] = {64,0}, + [I(19,150)] = {64,0}, + [I(20,150)] = {64,0}, + [I(21,150)] = {64,0}, + [I(22,150)] = {64,0}, + [I(23,150)] = {64,0}, + [I(24,150)] = {64,0}, + [I(25,150)] = {64,0}, + [I(26,150)] = {64,0}, + [I(27,150)] = {64,0}, + [I(28,150)] = {64,0}, + [I(29,150)] = {64,0}, + [I(30,150)] = {64,0}, + [I(31,150)] = {64,0}, + [I(32,150)] = {29,0xA7FFFE2}, + [I(33,150)] = {64,0}, + [I(34,150)] = {64,0}, + [I(35,150)] = {64,0}, + [I(36,150)] = {64,0}, + [I(37,150)] = {29,0xAFFFFE2}, + [I(38,150)] = {31,0x7C7FFFE2}, + [I(39,150)] = {64,0}, + [I(40,150)] = {64,0}, + [I(41,150)] = {64,0}, + [I(42,150)] = {31,0x7CFFFFE2}, + [I(43,150)] = {64,0}, + [I(44,150)] = {31,0x7D7FFFE2}, + [I(45,150)] = {29,0xB7FFFE2}, + [I(46,150)] = {29,0xBFFFFE2}, + [I(47,150)] = {29,0xC7FFFE2}, + [I(48,150)] = {28,0x7FFFE2}, + [I(49,150)] = {28,0xFFFFE2}, + [I(50,150)] = {28,0x17FFFE2}, + [I(51,150)] = {29,0xCFFFFE2}, + [I(52,150)] = {29,0xD7FFFE2}, + [I(53,150)] = {29,0xDFFFFE2}, + [I(54,150)] = {29,0xE7FFFE2}, + [I(55,150)] = {29,0xEFFFFE2}, + [I(56,150)] = {29,0xF7FFFE2}, + [I(57,150)] = {29,0xFFFFFE2}, + [I(58,150)] = {30,0x2E7FFFE2}, + [I(59,150)] = {31,0x7DFFFFE2}, + [I(60,150)] = {64,0}, + [I(61,150)] = {29,0x107FFFE2}, + [I(62,150)] = {64,0}, + [I(63,150)] = {64,0}, + [I(64,150)] = {64,0}, + [I(65,150)] = {29,0x10FFFFE2}, + [I(66,150)] = {30,0x2EFFFFE2}, + [I(67,150)] = {30,0x2F7FFFE2}, + [I(68,150)] = {30,0x2FFFFFE2}, + [I(69,150)] = {30,0x307FFFE2}, + [I(70,150)] = {30,0x30FFFFE2}, + [I(71,150)] = {30,0x317FFFE2}, + [I(72,150)] = {30,0x31FFFFE2}, + [I(73,150)] = {30,0x327FFFE2}, + [I(74,150)] = {30,0x32FFFFE2}, + [I(75,150)] = {30,0x337FFFE2}, + [I(76,150)] = {30,0x33FFFFE2}, + [I(77,150)] = {30,0x347FFFE2}, + [I(78,150)] = {30,0x34FFFFE2}, + [I(79,150)] = {30,0x357FFFE2}, + [I(80,150)] = {30,0x35FFFFE2}, + [I(81,150)] = {30,0x367FFFE2}, + [I(82,150)] = {30,0x36FFFFE2}, + [I(83,150)] = {30,0x377FFFE2}, + [I(84,150)] = {30,0x37FFFFE2}, + [I(85,150)] = {30,0x387FFFE2}, + [I(86,150)] = {30,0x38FFFFE2}, + [I(87,150)] = {30,0x397FFFE2}, + [I(88,150)] = {31,0x7E7FFFE2}, + [I(89,150)] = {30,0x39FFFFE2}, + [I(90,150)] = {31,0x7EFFFFE2}, + [I(91,150)] = {64,0}, + [I(92,150)] = {64,0}, + [I(93,150)] = {64,0}, + [I(94,150)] = {64,0}, + [I(95,150)] = {29,0x117FFFE2}, + [I(96,150)] = {64,0}, + [I(97,150)] = {28,0x1FFFFE2}, + [I(98,150)] = {29,0x11FFFFE2}, + [I(99,150)] = {28,0x27FFFE2}, + [I(100,150)] = {29,0x127FFFE2}, + [I(101,150)] = {28,0x2FFFFE2}, + [I(102,150)] = {29,0x12FFFFE2}, + [I(103,150)] = {29,0x137FFFE2}, + [I(104,150)] = {29,0x13FFFFE2}, + [I(105,150)] = {28,0x37FFFE2}, + [I(106,150)] = {30,0x3A7FFFE2}, + [I(107,150)] = {30,0x3AFFFFE2}, + [I(108,150)] = {29,0x147FFFE2}, + [I(109,150)] = {29,0x14FFFFE2}, + [I(110,150)] = {29,0x157FFFE2}, + [I(111,150)] = {28,0x3FFFFE2}, + [I(112,150)] = {29,0x15FFFFE2}, + [I(113,150)] = {30,0x3B7FFFE2}, + [I(114,150)] = {29,0x167FFFE2}, + [I(115,150)] = {28,0x47FFFE2}, + [I(116,150)] = {28,0x4FFFFE2}, + [I(117,150)] = {29,0x16FFFFE2}, + [I(118,150)] = {30,0x3BFFFFE2}, + [I(119,150)] = {30,0x3C7FFFE2}, + [I(120,150)] = {30,0x3CFFFFE2}, + [I(121,150)] = {30,0x3D7FFFE2}, + [I(122,150)] = {30,0x3DFFFFE2}, + [I(123,150)] = {64,0}, + [I(124,150)] = {64,0}, + [I(125,150)] = {64,0}, + [I(126,150)] = {64,0}, + [I(127,150)] = {64,0}, + [I(128,150)] = {64,0}, + [I(129,150)] = {64,0}, + [I(130,150)] = {64,0}, + [I(131,150)] = {64,0}, + [I(132,150)] = {64,0}, + [I(133,150)] = {64,0}, + [I(134,150)] = {64,0}, + [I(135,150)] = {64,0}, + [I(136,150)] = {64,0}, + [I(137,150)] = {64,0}, + [I(138,150)] = {64,0}, + [I(139,150)] = {64,0}, + [I(140,150)] = {64,0}, + [I(141,150)] = {64,0}, + [I(142,150)] = {64,0}, + [I(143,150)] = {64,0}, + [I(144,150)] = {64,0}, + [I(145,150)] = {64,0}, + [I(146,150)] = {64,0}, + [I(147,150)] = {64,0}, + [I(148,150)] = {64,0}, + [I(149,150)] = {64,0}, + [I(150,150)] = {64,0}, + [I(151,150)] = {64,0}, + [I(152,150)] = {64,0}, + [I(153,150)] = {64,0}, + [I(154,150)] = {64,0}, + [I(155,150)] = {64,0}, + [I(156,150)] = {64,0}, + [I(157,150)] = {64,0}, + [I(158,150)] = {64,0}, + [I(159,150)] = {64,0}, + [I(160,150)] = {64,0}, + [I(161,150)] = {64,0}, + [I(162,150)] = {64,0}, + [I(163,150)] = {64,0}, + [I(164,150)] = {64,0}, + [I(165,150)] = {64,0}, + [I(166,150)] = {64,0}, + [I(167,150)] = {64,0}, + [I(168,150)] = {64,0}, + [I(169,150)] = {64,0}, + [I(170,150)] = {64,0}, + [I(171,150)] = {64,0}, + [I(172,150)] = {64,0}, + [I(173,150)] = {64,0}, + [I(174,150)] = {64,0}, + [I(175,150)] = {64,0}, + [I(176,150)] = {64,0}, + [I(177,150)] = {64,0}, + [I(178,150)] = {64,0}, + [I(179,150)] = {64,0}, + [I(180,150)] = {64,0}, + [I(181,150)] = {64,0}, + [I(182,150)] = {64,0}, + [I(183,150)] = {64,0}, + [I(184,150)] = {64,0}, + [I(185,150)] = {64,0}, + [I(186,150)] = {64,0}, + [I(187,150)] = {64,0}, + [I(188,150)] = {64,0}, + [I(189,150)] = {64,0}, + [I(190,150)] = {64,0}, + [I(191,150)] = {64,0}, + [I(192,150)] = {64,0}, + [I(193,150)] = {64,0}, + [I(194,150)] = {64,0}, + [I(195,150)] = {64,0}, + [I(196,150)] = {64,0}, + [I(197,150)] = {64,0}, + [I(198,150)] = {64,0}, + [I(199,150)] = {64,0}, + [I(200,150)] = {64,0}, + [I(201,150)] = {64,0}, + [I(202,150)] = {64,0}, + [I(203,150)] = {64,0}, + [I(204,150)] = {64,0}, + [I(205,150)] = {64,0}, + [I(206,150)] = {64,0}, + [I(207,150)] = {64,0}, + [I(208,150)] = {64,0}, + [I(209,150)] = {64,0}, + [I(210,150)] = {64,0}, + [I(211,150)] = {64,0}, + [I(212,150)] = {64,0}, + [I(213,150)] = {64,0}, + [I(214,150)] = {64,0}, + [I(215,150)] = {64,0}, + [I(216,150)] = {64,0}, + [I(217,150)] = {64,0}, + [I(218,150)] = {64,0}, + [I(219,150)] = {64,0}, + [I(220,150)] = {64,0}, + [I(221,150)] = {64,0}, + [I(222,150)] = {64,0}, + [I(223,150)] = {64,0}, + [I(224,150)] = {64,0}, + [I(225,150)] = {64,0}, + [I(226,150)] = {64,0}, + [I(227,150)] = {64,0}, + [I(228,150)] = {64,0}, + [I(229,150)] = {64,0}, + [I(230,150)] = {64,0}, + [I(231,150)] = {64,0}, + [I(232,150)] = {64,0}, + [I(233,150)] = {64,0}, + [I(234,150)] = {64,0}, + [I(235,150)] = {64,0}, + [I(236,150)] = {64,0}, + [I(237,150)] = {64,0}, + [I(238,150)] = {64,0}, + [I(239,150)] = {64,0}, + [I(240,150)] = {64,0}, + [I(241,150)] = {64,0}, + [I(242,150)] = {64,0}, + [I(243,150)] = {64,0}, + [I(244,150)] = {64,0}, + [I(245,150)] = {64,0}, + [I(246,150)] = {64,0}, + [I(247,150)] = {64,0}, + [I(248,150)] = {64,0}, + [I(249,150)] = {64,0}, + [I(250,150)] = {64,0}, + [I(251,150)] = {64,0}, + [I(252,150)] = {64,0}, + [I(253,150)] = {64,0}, + [I(254,150)] = {64,0}, + [I(255,150)] = {64,0}, + [I(0,151)] = {64,0}, + [I(1,151)] = {64,0}, + [I(2,151)] = {64,0}, + [I(3,151)] = {64,0}, + [I(4,151)] = {64,0}, + [I(5,151)] = {64,0}, + [I(6,151)] = {64,0}, + [I(7,151)] = {64,0}, + [I(8,151)] = {64,0}, + [I(9,151)] = {64,0}, + [I(10,151)] = {64,0}, + [I(11,151)] = {64,0}, + [I(12,151)] = {64,0}, + [I(13,151)] = {64,0}, + [I(14,151)] = {64,0}, + [I(15,151)] = {64,0}, + [I(16,151)] = {64,0}, + [I(17,151)] = {64,0}, + [I(18,151)] = {64,0}, + [I(19,151)] = {64,0}, + [I(20,151)] = {64,0}, + [I(21,151)] = {64,0}, + [I(22,151)] = {64,0}, + [I(23,151)] = {64,0}, + [I(24,151)] = {64,0}, + [I(25,151)] = {64,0}, + [I(26,151)] = {64,0}, + [I(27,151)] = {64,0}, + [I(28,151)] = {64,0}, + [I(29,151)] = {64,0}, + [I(30,151)] = {64,0}, + [I(31,151)] = {64,0}, + [I(32,151)] = {29,0xA7FFFE3}, + [I(33,151)] = {64,0}, + [I(34,151)] = {64,0}, + [I(35,151)] = {64,0}, + [I(36,151)] = {64,0}, + [I(37,151)] = {29,0xAFFFFE3}, + [I(38,151)] = {31,0x7C7FFFE3}, + [I(39,151)] = {64,0}, + [I(40,151)] = {64,0}, + [I(41,151)] = {64,0}, + [I(42,151)] = {31,0x7CFFFFE3}, + [I(43,151)] = {64,0}, + [I(44,151)] = {31,0x7D7FFFE3}, + [I(45,151)] = {29,0xB7FFFE3}, + [I(46,151)] = {29,0xBFFFFE3}, + [I(47,151)] = {29,0xC7FFFE3}, + [I(48,151)] = {28,0x7FFFE3}, + [I(49,151)] = {28,0xFFFFE3}, + [I(50,151)] = {28,0x17FFFE3}, + [I(51,151)] = {29,0xCFFFFE3}, + [I(52,151)] = {29,0xD7FFFE3}, + [I(53,151)] = {29,0xDFFFFE3}, + [I(54,151)] = {29,0xE7FFFE3}, + [I(55,151)] = {29,0xEFFFFE3}, + [I(56,151)] = {29,0xF7FFFE3}, + [I(57,151)] = {29,0xFFFFFE3}, + [I(58,151)] = {30,0x2E7FFFE3}, + [I(59,151)] = {31,0x7DFFFFE3}, + [I(60,151)] = {64,0}, + [I(61,151)] = {29,0x107FFFE3}, + [I(62,151)] = {64,0}, + [I(63,151)] = {64,0}, + [I(64,151)] = {64,0}, + [I(65,151)] = {29,0x10FFFFE3}, + [I(66,151)] = {30,0x2EFFFFE3}, + [I(67,151)] = {30,0x2F7FFFE3}, + [I(68,151)] = {30,0x2FFFFFE3}, + [I(69,151)] = {30,0x307FFFE3}, + [I(70,151)] = {30,0x30FFFFE3}, + [I(71,151)] = {30,0x317FFFE3}, + [I(72,151)] = {30,0x31FFFFE3}, + [I(73,151)] = {30,0x327FFFE3}, + [I(74,151)] = {30,0x32FFFFE3}, + [I(75,151)] = {30,0x337FFFE3}, + [I(76,151)] = {30,0x33FFFFE3}, + [I(77,151)] = {30,0x347FFFE3}, + [I(78,151)] = {30,0x34FFFFE3}, + [I(79,151)] = {30,0x357FFFE3}, + [I(80,151)] = {30,0x35FFFFE3}, + [I(81,151)] = {30,0x367FFFE3}, + [I(82,151)] = {30,0x36FFFFE3}, + [I(83,151)] = {30,0x377FFFE3}, + [I(84,151)] = {30,0x37FFFFE3}, + [I(85,151)] = {30,0x387FFFE3}, + [I(86,151)] = {30,0x38FFFFE3}, + [I(87,151)] = {30,0x397FFFE3}, + [I(88,151)] = {31,0x7E7FFFE3}, + [I(89,151)] = {30,0x39FFFFE3}, + [I(90,151)] = {31,0x7EFFFFE3}, + [I(91,151)] = {64,0}, + [I(92,151)] = {64,0}, + [I(93,151)] = {64,0}, + [I(94,151)] = {64,0}, + [I(95,151)] = {29,0x117FFFE3}, + [I(96,151)] = {64,0}, + [I(97,151)] = {28,0x1FFFFE3}, + [I(98,151)] = {29,0x11FFFFE3}, + [I(99,151)] = {28,0x27FFFE3}, + [I(100,151)] = {29,0x127FFFE3}, + [I(101,151)] = {28,0x2FFFFE3}, + [I(102,151)] = {29,0x12FFFFE3}, + [I(103,151)] = {29,0x137FFFE3}, + [I(104,151)] = {29,0x13FFFFE3}, + [I(105,151)] = {28,0x37FFFE3}, + [I(106,151)] = {30,0x3A7FFFE3}, + [I(107,151)] = {30,0x3AFFFFE3}, + [I(108,151)] = {29,0x147FFFE3}, + [I(109,151)] = {29,0x14FFFFE3}, + [I(110,151)] = {29,0x157FFFE3}, + [I(111,151)] = {28,0x3FFFFE3}, + [I(112,151)] = {29,0x15FFFFE3}, + [I(113,151)] = {30,0x3B7FFFE3}, + [I(114,151)] = {29,0x167FFFE3}, + [I(115,151)] = {28,0x47FFFE3}, + [I(116,151)] = {28,0x4FFFFE3}, + [I(117,151)] = {29,0x16FFFFE3}, + [I(118,151)] = {30,0x3BFFFFE3}, + [I(119,151)] = {30,0x3C7FFFE3}, + [I(120,151)] = {30,0x3CFFFFE3}, + [I(121,151)] = {30,0x3D7FFFE3}, + [I(122,151)] = {30,0x3DFFFFE3}, + [I(123,151)] = {64,0}, + [I(124,151)] = {64,0}, + [I(125,151)] = {64,0}, + [I(126,151)] = {64,0}, + [I(127,151)] = {64,0}, + [I(128,151)] = {64,0}, + [I(129,151)] = {64,0}, + [I(130,151)] = {64,0}, + [I(131,151)] = {64,0}, + [I(132,151)] = {64,0}, + [I(133,151)] = {64,0}, + [I(134,151)] = {64,0}, + [I(135,151)] = {64,0}, + [I(136,151)] = {64,0}, + [I(137,151)] = {64,0}, + [I(138,151)] = {64,0}, + [I(139,151)] = {64,0}, + [I(140,151)] = {64,0}, + [I(141,151)] = {64,0}, + [I(142,151)] = {64,0}, + [I(143,151)] = {64,0}, + [I(144,151)] = {64,0}, + [I(145,151)] = {64,0}, + [I(146,151)] = {64,0}, + [I(147,151)] = {64,0}, + [I(148,151)] = {64,0}, + [I(149,151)] = {64,0}, + [I(150,151)] = {64,0}, + [I(151,151)] = {64,0}, + [I(152,151)] = {64,0}, + [I(153,151)] = {64,0}, + [I(154,151)] = {64,0}, + [I(155,151)] = {64,0}, + [I(156,151)] = {64,0}, + [I(157,151)] = {64,0}, + [I(158,151)] = {64,0}, + [I(159,151)] = {64,0}, + [I(160,151)] = {64,0}, + [I(161,151)] = {64,0}, + [I(162,151)] = {64,0}, + [I(163,151)] = {64,0}, + [I(164,151)] = {64,0}, + [I(165,151)] = {64,0}, + [I(166,151)] = {64,0}, + [I(167,151)] = {64,0}, + [I(168,151)] = {64,0}, + [I(169,151)] = {64,0}, + [I(170,151)] = {64,0}, + [I(171,151)] = {64,0}, + [I(172,151)] = {64,0}, + [I(173,151)] = {64,0}, + [I(174,151)] = {64,0}, + [I(175,151)] = {64,0}, + [I(176,151)] = {64,0}, + [I(177,151)] = {64,0}, + [I(178,151)] = {64,0}, + [I(179,151)] = {64,0}, + [I(180,151)] = {64,0}, + [I(181,151)] = {64,0}, + [I(182,151)] = {64,0}, + [I(183,151)] = {64,0}, + [I(184,151)] = {64,0}, + [I(185,151)] = {64,0}, + [I(186,151)] = {64,0}, + [I(187,151)] = {64,0}, + [I(188,151)] = {64,0}, + [I(189,151)] = {64,0}, + [I(190,151)] = {64,0}, + [I(191,151)] = {64,0}, + [I(192,151)] = {64,0}, + [I(193,151)] = {64,0}, + [I(194,151)] = {64,0}, + [I(195,151)] = {64,0}, + [I(196,151)] = {64,0}, + [I(197,151)] = {64,0}, + [I(198,151)] = {64,0}, + [I(199,151)] = {64,0}, + [I(200,151)] = {64,0}, + [I(201,151)] = {64,0}, + [I(202,151)] = {64,0}, + [I(203,151)] = {64,0}, + [I(204,151)] = {64,0}, + [I(205,151)] = {64,0}, + [I(206,151)] = {64,0}, + [I(207,151)] = {64,0}, + [I(208,151)] = {64,0}, + [I(209,151)] = {64,0}, + [I(210,151)] = {64,0}, + [I(211,151)] = {64,0}, + [I(212,151)] = {64,0}, + [I(213,151)] = {64,0}, + [I(214,151)] = {64,0}, + [I(215,151)] = {64,0}, + [I(216,151)] = {64,0}, + [I(217,151)] = {64,0}, + [I(218,151)] = {64,0}, + [I(219,151)] = {64,0}, + [I(220,151)] = {64,0}, + [I(221,151)] = {64,0}, + [I(222,151)] = {64,0}, + [I(223,151)] = {64,0}, + [I(224,151)] = {64,0}, + [I(225,151)] = {64,0}, + [I(226,151)] = {64,0}, + [I(227,151)] = {64,0}, + [I(228,151)] = {64,0}, + [I(229,151)] = {64,0}, + [I(230,151)] = {64,0}, + [I(231,151)] = {64,0}, + [I(232,151)] = {64,0}, + [I(233,151)] = {64,0}, + [I(234,151)] = {64,0}, + [I(235,151)] = {64,0}, + [I(236,151)] = {64,0}, + [I(237,151)] = {64,0}, + [I(238,151)] = {64,0}, + [I(239,151)] = {64,0}, + [I(240,151)] = {64,0}, + [I(241,151)] = {64,0}, + [I(242,151)] = {64,0}, + [I(243,151)] = {64,0}, + [I(244,151)] = {64,0}, + [I(245,151)] = {64,0}, + [I(246,151)] = {64,0}, + [I(247,151)] = {64,0}, + [I(248,151)] = {64,0}, + [I(249,151)] = {64,0}, + [I(250,151)] = {64,0}, + [I(251,151)] = {64,0}, + [I(252,151)] = {64,0}, + [I(253,151)] = {64,0}, + [I(254,151)] = {64,0}, + [I(255,151)] = {64,0}, + [I(0,152)] = {64,0}, + [I(1,152)] = {64,0}, + [I(2,152)] = {64,0}, + [I(3,152)] = {64,0}, + [I(4,152)] = {64,0}, + [I(5,152)] = {64,0}, + [I(6,152)] = {64,0}, + [I(7,152)] = {64,0}, + [I(8,152)] = {64,0}, + [I(9,152)] = {64,0}, + [I(10,152)] = {64,0}, + [I(11,152)] = {64,0}, + [I(12,152)] = {64,0}, + [I(13,152)] = {64,0}, + [I(14,152)] = {64,0}, + [I(15,152)] = {64,0}, + [I(16,152)] = {64,0}, + [I(17,152)] = {64,0}, + [I(18,152)] = {64,0}, + [I(19,152)] = {64,0}, + [I(20,152)] = {64,0}, + [I(21,152)] = {64,0}, + [I(22,152)] = {64,0}, + [I(23,152)] = {64,0}, + [I(24,152)] = {64,0}, + [I(25,152)] = {64,0}, + [I(26,152)] = {64,0}, + [I(27,152)] = {64,0}, + [I(28,152)] = {64,0}, + [I(29,152)] = {64,0}, + [I(30,152)] = {64,0}, + [I(31,152)] = {64,0}, + [I(32,152)] = {29,0xA7FFFE4}, + [I(33,152)] = {64,0}, + [I(34,152)] = {64,0}, + [I(35,152)] = {64,0}, + [I(36,152)] = {64,0}, + [I(37,152)] = {29,0xAFFFFE4}, + [I(38,152)] = {31,0x7C7FFFE4}, + [I(39,152)] = {64,0}, + [I(40,152)] = {64,0}, + [I(41,152)] = {64,0}, + [I(42,152)] = {31,0x7CFFFFE4}, + [I(43,152)] = {64,0}, + [I(44,152)] = {31,0x7D7FFFE4}, + [I(45,152)] = {29,0xB7FFFE4}, + [I(46,152)] = {29,0xBFFFFE4}, + [I(47,152)] = {29,0xC7FFFE4}, + [I(48,152)] = {28,0x7FFFE4}, + [I(49,152)] = {28,0xFFFFE4}, + [I(50,152)] = {28,0x17FFFE4}, + [I(51,152)] = {29,0xCFFFFE4}, + [I(52,152)] = {29,0xD7FFFE4}, + [I(53,152)] = {29,0xDFFFFE4}, + [I(54,152)] = {29,0xE7FFFE4}, + [I(55,152)] = {29,0xEFFFFE4}, + [I(56,152)] = {29,0xF7FFFE4}, + [I(57,152)] = {29,0xFFFFFE4}, + [I(58,152)] = {30,0x2E7FFFE4}, + [I(59,152)] = {31,0x7DFFFFE4}, + [I(60,152)] = {64,0}, + [I(61,152)] = {29,0x107FFFE4}, + [I(62,152)] = {64,0}, + [I(63,152)] = {64,0}, + [I(64,152)] = {64,0}, + [I(65,152)] = {29,0x10FFFFE4}, + [I(66,152)] = {30,0x2EFFFFE4}, + [I(67,152)] = {30,0x2F7FFFE4}, + [I(68,152)] = {30,0x2FFFFFE4}, + [I(69,152)] = {30,0x307FFFE4}, + [I(70,152)] = {30,0x30FFFFE4}, + [I(71,152)] = {30,0x317FFFE4}, + [I(72,152)] = {30,0x31FFFFE4}, + [I(73,152)] = {30,0x327FFFE4}, + [I(74,152)] = {30,0x32FFFFE4}, + [I(75,152)] = {30,0x337FFFE4}, + [I(76,152)] = {30,0x33FFFFE4}, + [I(77,152)] = {30,0x347FFFE4}, + [I(78,152)] = {30,0x34FFFFE4}, + [I(79,152)] = {30,0x357FFFE4}, + [I(80,152)] = {30,0x35FFFFE4}, + [I(81,152)] = {30,0x367FFFE4}, + [I(82,152)] = {30,0x36FFFFE4}, + [I(83,152)] = {30,0x377FFFE4}, + [I(84,152)] = {30,0x37FFFFE4}, + [I(85,152)] = {30,0x387FFFE4}, + [I(86,152)] = {30,0x38FFFFE4}, + [I(87,152)] = {30,0x397FFFE4}, + [I(88,152)] = {31,0x7E7FFFE4}, + [I(89,152)] = {30,0x39FFFFE4}, + [I(90,152)] = {31,0x7EFFFFE4}, + [I(91,152)] = {64,0}, + [I(92,152)] = {64,0}, + [I(93,152)] = {64,0}, + [I(94,152)] = {64,0}, + [I(95,152)] = {29,0x117FFFE4}, + [I(96,152)] = {64,0}, + [I(97,152)] = {28,0x1FFFFE4}, + [I(98,152)] = {29,0x11FFFFE4}, + [I(99,152)] = {28,0x27FFFE4}, + [I(100,152)] = {29,0x127FFFE4}, + [I(101,152)] = {28,0x2FFFFE4}, + [I(102,152)] = {29,0x12FFFFE4}, + [I(103,152)] = {29,0x137FFFE4}, + [I(104,152)] = {29,0x13FFFFE4}, + [I(105,152)] = {28,0x37FFFE4}, + [I(106,152)] = {30,0x3A7FFFE4}, + [I(107,152)] = {30,0x3AFFFFE4}, + [I(108,152)] = {29,0x147FFFE4}, + [I(109,152)] = {29,0x14FFFFE4}, + [I(110,152)] = {29,0x157FFFE4}, + [I(111,152)] = {28,0x3FFFFE4}, + [I(112,152)] = {29,0x15FFFFE4}, + [I(113,152)] = {30,0x3B7FFFE4}, + [I(114,152)] = {29,0x167FFFE4}, + [I(115,152)] = {28,0x47FFFE4}, + [I(116,152)] = {28,0x4FFFFE4}, + [I(117,152)] = {29,0x16FFFFE4}, + [I(118,152)] = {30,0x3BFFFFE4}, + [I(119,152)] = {30,0x3C7FFFE4}, + [I(120,152)] = {30,0x3CFFFFE4}, + [I(121,152)] = {30,0x3D7FFFE4}, + [I(122,152)] = {30,0x3DFFFFE4}, + [I(123,152)] = {64,0}, + [I(124,152)] = {64,0}, + [I(125,152)] = {64,0}, + [I(126,152)] = {64,0}, + [I(127,152)] = {64,0}, + [I(128,152)] = {64,0}, + [I(129,152)] = {64,0}, + [I(130,152)] = {64,0}, + [I(131,152)] = {64,0}, + [I(132,152)] = {64,0}, + [I(133,152)] = {64,0}, + [I(134,152)] = {64,0}, + [I(135,152)] = {64,0}, + [I(136,152)] = {64,0}, + [I(137,152)] = {64,0}, + [I(138,152)] = {64,0}, + [I(139,152)] = {64,0}, + [I(140,152)] = {64,0}, + [I(141,152)] = {64,0}, + [I(142,152)] = {64,0}, + [I(143,152)] = {64,0}, + [I(144,152)] = {64,0}, + [I(145,152)] = {64,0}, + [I(146,152)] = {64,0}, + [I(147,152)] = {64,0}, + [I(148,152)] = {64,0}, + [I(149,152)] = {64,0}, + [I(150,152)] = {64,0}, + [I(151,152)] = {64,0}, + [I(152,152)] = {64,0}, + [I(153,152)] = {64,0}, + [I(154,152)] = {64,0}, + [I(155,152)] = {64,0}, + [I(156,152)] = {64,0}, + [I(157,152)] = {64,0}, + [I(158,152)] = {64,0}, + [I(159,152)] = {64,0}, + [I(160,152)] = {64,0}, + [I(161,152)] = {64,0}, + [I(162,152)] = {64,0}, + [I(163,152)] = {64,0}, + [I(164,152)] = {64,0}, + [I(165,152)] = {64,0}, + [I(166,152)] = {64,0}, + [I(167,152)] = {64,0}, + [I(168,152)] = {64,0}, + [I(169,152)] = {64,0}, + [I(170,152)] = {64,0}, + [I(171,152)] = {64,0}, + [I(172,152)] = {64,0}, + [I(173,152)] = {64,0}, + [I(174,152)] = {64,0}, + [I(175,152)] = {64,0}, + [I(176,152)] = {64,0}, + [I(177,152)] = {64,0}, + [I(178,152)] = {64,0}, + [I(179,152)] = {64,0}, + [I(180,152)] = {64,0}, + [I(181,152)] = {64,0}, + [I(182,152)] = {64,0}, + [I(183,152)] = {64,0}, + [I(184,152)] = {64,0}, + [I(185,152)] = {64,0}, + [I(186,152)] = {64,0}, + [I(187,152)] = {64,0}, + [I(188,152)] = {64,0}, + [I(189,152)] = {64,0}, + [I(190,152)] = {64,0}, + [I(191,152)] = {64,0}, + [I(192,152)] = {64,0}, + [I(193,152)] = {64,0}, + [I(194,152)] = {64,0}, + [I(195,152)] = {64,0}, + [I(196,152)] = {64,0}, + [I(197,152)] = {64,0}, + [I(198,152)] = {64,0}, + [I(199,152)] = {64,0}, + [I(200,152)] = {64,0}, + [I(201,152)] = {64,0}, + [I(202,152)] = {64,0}, + [I(203,152)] = {64,0}, + [I(204,152)] = {64,0}, + [I(205,152)] = {64,0}, + [I(206,152)] = {64,0}, + [I(207,152)] = {64,0}, + [I(208,152)] = {64,0}, + [I(209,152)] = {64,0}, + [I(210,152)] = {64,0}, + [I(211,152)] = {64,0}, + [I(212,152)] = {64,0}, + [I(213,152)] = {64,0}, + [I(214,152)] = {64,0}, + [I(215,152)] = {64,0}, + [I(216,152)] = {64,0}, + [I(217,152)] = {64,0}, + [I(218,152)] = {64,0}, + [I(219,152)] = {64,0}, + [I(220,152)] = {64,0}, + [I(221,152)] = {64,0}, + [I(222,152)] = {64,0}, + [I(223,152)] = {64,0}, + [I(224,152)] = {64,0}, + [I(225,152)] = {64,0}, + [I(226,152)] = {64,0}, + [I(227,152)] = {64,0}, + [I(228,152)] = {64,0}, + [I(229,152)] = {64,0}, + [I(230,152)] = {64,0}, + [I(231,152)] = {64,0}, + [I(232,152)] = {64,0}, + [I(233,152)] = {64,0}, + [I(234,152)] = {64,0}, + [I(235,152)] = {64,0}, + [I(236,152)] = {64,0}, + [I(237,152)] = {64,0}, + [I(238,152)] = {64,0}, + [I(239,152)] = {64,0}, + [I(240,152)] = {64,0}, + [I(241,152)] = {64,0}, + [I(242,152)] = {64,0}, + [I(243,152)] = {64,0}, + [I(244,152)] = {64,0}, + [I(245,152)] = {64,0}, + [I(246,152)] = {64,0}, + [I(247,152)] = {64,0}, + [I(248,152)] = {64,0}, + [I(249,152)] = {64,0}, + [I(250,152)] = {64,0}, + [I(251,152)] = {64,0}, + [I(252,152)] = {64,0}, + [I(253,152)] = {64,0}, + [I(254,152)] = {64,0}, + [I(255,152)] = {64,0}, + [I(0,153)] = {64,0}, + [I(1,153)] = {64,0}, + [I(2,153)] = {64,0}, + [I(3,153)] = {64,0}, + [I(4,153)] = {64,0}, + [I(5,153)] = {64,0}, + [I(6,153)] = {64,0}, + [I(7,153)] = {64,0}, + [I(8,153)] = {64,0}, + [I(9,153)] = {64,0}, + [I(10,153)] = {64,0}, + [I(11,153)] = {64,0}, + [I(12,153)] = {64,0}, + [I(13,153)] = {64,0}, + [I(14,153)] = {64,0}, + [I(15,153)] = {64,0}, + [I(16,153)] = {64,0}, + [I(17,153)] = {64,0}, + [I(18,153)] = {64,0}, + [I(19,153)] = {64,0}, + [I(20,153)] = {64,0}, + [I(21,153)] = {64,0}, + [I(22,153)] = {64,0}, + [I(23,153)] = {64,0}, + [I(24,153)] = {64,0}, + [I(25,153)] = {64,0}, + [I(26,153)] = {64,0}, + [I(27,153)] = {64,0}, + [I(28,153)] = {64,0}, + [I(29,153)] = {64,0}, + [I(30,153)] = {64,0}, + [I(31,153)] = {64,0}, + [I(32,153)] = {27,0x29FFFDC}, + [I(33,153)] = {31,0x7F1FFFDC}, + [I(34,153)] = {31,0x7F3FFFDC}, + [I(35,153)] = {64,0}, + [I(36,153)] = {64,0}, + [I(37,153)] = {27,0x2BFFFDC}, + [I(38,153)] = {29,0x1F1FFFDC}, + [I(39,153)] = {X32,0xFF5FFFDC}, + [I(40,153)] = {31,0x7F5FFFDC}, + [I(41,153)] = {31,0x7F7FFFDC}, + [I(42,153)] = {29,0x1F3FFFDC}, + [I(43,153)] = {X32,0xFF7FFFDC}, + [I(44,153)] = {29,0x1F5FFFDC}, + [I(45,153)] = {27,0x2DFFFDC}, + [I(46,153)] = {27,0x2FFFFDC}, + [I(47,153)] = {27,0x31FFFDC}, + [I(48,153)] = {26,0x1FFFDC}, + [I(49,153)] = {26,0x3FFFDC}, + [I(50,153)] = {26,0x5FFFDC}, + [I(51,153)] = {27,0x33FFFDC}, + [I(52,153)] = {27,0x35FFFDC}, + [I(53,153)] = {27,0x37FFFDC}, + [I(54,153)] = {27,0x39FFFDC}, + [I(55,153)] = {27,0x3BFFFDC}, + [I(56,153)] = {27,0x3DFFFDC}, + [I(57,153)] = {27,0x3FFFFDC}, + [I(58,153)] = {28,0xB9FFFDC}, + [I(59,153)] = {29,0x1F7FFFDC}, + [I(60,153)] = {64,0}, + [I(61,153)] = {27,0x41FFFDC}, + [I(62,153)] = {64,0}, + [I(63,153)] = {31,0x7F9FFFDC}, + [I(64,153)] = {64,0}, + [I(65,153)] = {27,0x43FFFDC}, + [I(66,153)] = {28,0xBBFFFDC}, + [I(67,153)] = {28,0xBDFFFDC}, + [I(68,153)] = {28,0xBFFFFDC}, + [I(69,153)] = {28,0xC1FFFDC}, + [I(70,153)] = {28,0xC3FFFDC}, + [I(71,153)] = {28,0xC5FFFDC}, + [I(72,153)] = {28,0xC7FFFDC}, + [I(73,153)] = {28,0xC9FFFDC}, + [I(74,153)] = {28,0xCBFFFDC}, + [I(75,153)] = {28,0xCDFFFDC}, + [I(76,153)] = {28,0xCFFFFDC}, + [I(77,153)] = {28,0xD1FFFDC}, + [I(78,153)] = {28,0xD3FFFDC}, + [I(79,153)] = {28,0xD5FFFDC}, + [I(80,153)] = {28,0xD7FFFDC}, + [I(81,153)] = {28,0xD9FFFDC}, + [I(82,153)] = {28,0xDBFFFDC}, + [I(83,153)] = {28,0xDDFFFDC}, + [I(84,153)] = {28,0xDFFFFDC}, + [I(85,153)] = {28,0xE1FFFDC}, + [I(86,153)] = {28,0xE3FFFDC}, + [I(87,153)] = {28,0xE5FFFDC}, + [I(88,153)] = {29,0x1F9FFFDC}, + [I(89,153)] = {28,0xE7FFFDC}, + [I(90,153)] = {29,0x1FBFFFDC}, + [I(91,153)] = {64,0}, + [I(92,153)] = {64,0}, + [I(93,153)] = {64,0}, + [I(94,153)] = {64,0}, + [I(95,153)] = {27,0x45FFFDC}, + [I(96,153)] = {64,0}, + [I(97,153)] = {26,0x7FFFDC}, + [I(98,153)] = {27,0x47FFFDC}, + [I(99,153)] = {26,0x9FFFDC}, + [I(100,153)] = {27,0x49FFFDC}, + [I(101,153)] = {26,0xBFFFDC}, + [I(102,153)] = {27,0x4BFFFDC}, + [I(103,153)] = {27,0x4DFFFDC}, + [I(104,153)] = {27,0x4FFFFDC}, + [I(105,153)] = {26,0xDFFFDC}, + [I(106,153)] = {28,0xE9FFFDC}, + [I(107,153)] = {28,0xEBFFFDC}, + [I(108,153)] = {27,0x51FFFDC}, + [I(109,153)] = {27,0x53FFFDC}, + [I(110,153)] = {27,0x55FFFDC}, + [I(111,153)] = {26,0xFFFFDC}, + [I(112,153)] = {27,0x57FFFDC}, + [I(113,153)] = {28,0xEDFFFDC}, + [I(114,153)] = {27,0x59FFFDC}, + [I(115,153)] = {26,0x11FFFDC}, + [I(116,153)] = {26,0x13FFFDC}, + [I(117,153)] = {27,0x5BFFFDC}, + [I(118,153)] = {28,0xEFFFFDC}, + [I(119,153)] = {28,0xF1FFFDC}, + [I(120,153)] = {28,0xF3FFFDC}, + [I(121,153)] = {28,0xF5FFFDC}, + [I(122,153)] = {28,0xF7FFFDC}, + [I(123,153)] = {64,0}, + [I(124,153)] = {X32,0xFF9FFFDC}, + [I(125,153)] = {64,0}, + [I(126,153)] = {64,0}, + [I(127,153)] = {64,0}, + [I(128,153)] = {64,0}, + [I(129,153)] = {64,0}, + [I(130,153)] = {64,0}, + [I(131,153)] = {64,0}, + [I(132,153)] = {64,0}, + [I(133,153)] = {64,0}, + [I(134,153)] = {64,0}, + [I(135,153)] = {64,0}, + [I(136,153)] = {64,0}, + [I(137,153)] = {64,0}, + [I(138,153)] = {64,0}, + [I(139,153)] = {64,0}, + [I(140,153)] = {64,0}, + [I(141,153)] = {64,0}, + [I(142,153)] = {64,0}, + [I(143,153)] = {64,0}, + [I(144,153)] = {64,0}, + [I(145,153)] = {64,0}, + [I(146,153)] = {64,0}, + [I(147,153)] = {64,0}, + [I(148,153)] = {64,0}, + [I(149,153)] = {64,0}, + [I(150,153)] = {64,0}, + [I(151,153)] = {64,0}, + [I(152,153)] = {64,0}, + [I(153,153)] = {64,0}, + [I(154,153)] = {64,0}, + [I(155,153)] = {64,0}, + [I(156,153)] = {64,0}, + [I(157,153)] = {64,0}, + [I(158,153)] = {64,0}, + [I(159,153)] = {64,0}, + [I(160,153)] = {64,0}, + [I(161,153)] = {64,0}, + [I(162,153)] = {64,0}, + [I(163,153)] = {64,0}, + [I(164,153)] = {64,0}, + [I(165,153)] = {64,0}, + [I(166,153)] = {64,0}, + [I(167,153)] = {64,0}, + [I(168,153)] = {64,0}, + [I(169,153)] = {64,0}, + [I(170,153)] = {64,0}, + [I(171,153)] = {64,0}, + [I(172,153)] = {64,0}, + [I(173,153)] = {64,0}, + [I(174,153)] = {64,0}, + [I(175,153)] = {64,0}, + [I(176,153)] = {64,0}, + [I(177,153)] = {64,0}, + [I(178,153)] = {64,0}, + [I(179,153)] = {64,0}, + [I(180,153)] = {64,0}, + [I(181,153)] = {64,0}, + [I(182,153)] = {64,0}, + [I(183,153)] = {64,0}, + [I(184,153)] = {64,0}, + [I(185,153)] = {64,0}, + [I(186,153)] = {64,0}, + [I(187,153)] = {64,0}, + [I(188,153)] = {64,0}, + [I(189,153)] = {64,0}, + [I(190,153)] = {64,0}, + [I(191,153)] = {64,0}, + [I(192,153)] = {64,0}, + [I(193,153)] = {64,0}, + [I(194,153)] = {64,0}, + [I(195,153)] = {64,0}, + [I(196,153)] = {64,0}, + [I(197,153)] = {64,0}, + [I(198,153)] = {64,0}, + [I(199,153)] = {64,0}, + [I(200,153)] = {64,0}, + [I(201,153)] = {64,0}, + [I(202,153)] = {64,0}, + [I(203,153)] = {64,0}, + [I(204,153)] = {64,0}, + [I(205,153)] = {64,0}, + [I(206,153)] = {64,0}, + [I(207,153)] = {64,0}, + [I(208,153)] = {64,0}, + [I(209,153)] = {64,0}, + [I(210,153)] = {64,0}, + [I(211,153)] = {64,0}, + [I(212,153)] = {64,0}, + [I(213,153)] = {64,0}, + [I(214,153)] = {64,0}, + [I(215,153)] = {64,0}, + [I(216,153)] = {64,0}, + [I(217,153)] = {64,0}, + [I(218,153)] = {64,0}, + [I(219,153)] = {64,0}, + [I(220,153)] = {64,0}, + [I(221,153)] = {64,0}, + [I(222,153)] = {64,0}, + [I(223,153)] = {64,0}, + [I(224,153)] = {64,0}, + [I(225,153)] = {64,0}, + [I(226,153)] = {64,0}, + [I(227,153)] = {64,0}, + [I(228,153)] = {64,0}, + [I(229,153)] = {64,0}, + [I(230,153)] = {64,0}, + [I(231,153)] = {64,0}, + [I(232,153)] = {64,0}, + [I(233,153)] = {64,0}, + [I(234,153)] = {64,0}, + [I(235,153)] = {64,0}, + [I(236,153)] = {64,0}, + [I(237,153)] = {64,0}, + [I(238,153)] = {64,0}, + [I(239,153)] = {64,0}, + [I(240,153)] = {64,0}, + [I(241,153)] = {64,0}, + [I(242,153)] = {64,0}, + [I(243,153)] = {64,0}, + [I(244,153)] = {64,0}, + [I(245,153)] = {64,0}, + [I(246,153)] = {64,0}, + [I(247,153)] = {64,0}, + [I(248,153)] = {64,0}, + [I(249,153)] = {64,0}, + [I(250,153)] = {64,0}, + [I(251,153)] = {64,0}, + [I(252,153)] = {64,0}, + [I(253,153)] = {64,0}, + [I(254,153)] = {64,0}, + [I(255,153)] = {64,0}, + [I(0,154)] = {64,0}, + [I(1,154)] = {64,0}, + [I(2,154)] = {64,0}, + [I(3,154)] = {64,0}, + [I(4,154)] = {64,0}, + [I(5,154)] = {64,0}, + [I(6,154)] = {64,0}, + [I(7,154)] = {64,0}, + [I(8,154)] = {64,0}, + [I(9,154)] = {64,0}, + [I(10,154)] = {64,0}, + [I(11,154)] = {64,0}, + [I(12,154)] = {64,0}, + [I(13,154)] = {64,0}, + [I(14,154)] = {64,0}, + [I(15,154)] = {64,0}, + [I(16,154)] = {64,0}, + [I(17,154)] = {64,0}, + [I(18,154)] = {64,0}, + [I(19,154)] = {64,0}, + [I(20,154)] = {64,0}, + [I(21,154)] = {64,0}, + [I(22,154)] = {64,0}, + [I(23,154)] = {64,0}, + [I(24,154)] = {64,0}, + [I(25,154)] = {64,0}, + [I(26,154)] = {64,0}, + [I(27,154)] = {64,0}, + [I(28,154)] = {64,0}, + [I(29,154)] = {64,0}, + [I(30,154)] = {64,0}, + [I(31,154)] = {64,0}, + [I(32,154)] = {28,0x53FFFD8}, + [I(33,154)] = {X32,0xFE3FFFD8}, + [I(34,154)] = {X32,0xFE7FFFD8}, + [I(35,154)] = {64,0}, + [I(36,154)] = {64,0}, + [I(37,154)] = {28,0x57FFFD8}, + [I(38,154)] = {30,0x3E3FFFD8}, + [I(39,154)] = {64,0}, + [I(40,154)] = {X32,0xFEBFFFD8}, + [I(41,154)] = {X32,0xFEFFFFD8}, + [I(42,154)] = {30,0x3E7FFFD8}, + [I(43,154)] = {64,0}, + [I(44,154)] = {30,0x3EBFFFD8}, + [I(45,154)] = {28,0x5BFFFD8}, + [I(46,154)] = {28,0x5FFFFD8}, + [I(47,154)] = {28,0x63FFFD8}, + [I(48,154)] = {27,0x3FFFD8}, + [I(49,154)] = {27,0x7FFFD8}, + [I(50,154)] = {27,0xBFFFD8}, + [I(51,154)] = {28,0x67FFFD8}, + [I(52,154)] = {28,0x6BFFFD8}, + [I(53,154)] = {28,0x6FFFFD8}, + [I(54,154)] = {28,0x73FFFD8}, + [I(55,154)] = {28,0x77FFFD8}, + [I(56,154)] = {28,0x7BFFFD8}, + [I(57,154)] = {28,0x7FFFFD8}, + [I(58,154)] = {29,0x173FFFD8}, + [I(59,154)] = {30,0x3EFFFFD8}, + [I(60,154)] = {64,0}, + [I(61,154)] = {28,0x83FFFD8}, + [I(62,154)] = {64,0}, + [I(63,154)] = {X32,0xFF3FFFD8}, + [I(64,154)] = {64,0}, + [I(65,154)] = {28,0x87FFFD8}, + [I(66,154)] = {29,0x177FFFD8}, + [I(67,154)] = {29,0x17BFFFD8}, + [I(68,154)] = {29,0x17FFFFD8}, + [I(69,154)] = {29,0x183FFFD8}, + [I(70,154)] = {29,0x187FFFD8}, + [I(71,154)] = {29,0x18BFFFD8}, + [I(72,154)] = {29,0x18FFFFD8}, + [I(73,154)] = {29,0x193FFFD8}, + [I(74,154)] = {29,0x197FFFD8}, + [I(75,154)] = {29,0x19BFFFD8}, + [I(76,154)] = {29,0x19FFFFD8}, + [I(77,154)] = {29,0x1A3FFFD8}, + [I(78,154)] = {29,0x1A7FFFD8}, + [I(79,154)] = {29,0x1ABFFFD8}, + [I(80,154)] = {29,0x1AFFFFD8}, + [I(81,154)] = {29,0x1B3FFFD8}, + [I(82,154)] = {29,0x1B7FFFD8}, + [I(83,154)] = {29,0x1BBFFFD8}, + [I(84,154)] = {29,0x1BFFFFD8}, + [I(85,154)] = {29,0x1C3FFFD8}, + [I(86,154)] = {29,0x1C7FFFD8}, + [I(87,154)] = {29,0x1CBFFFD8}, + [I(88,154)] = {30,0x3F3FFFD8}, + [I(89,154)] = {29,0x1CFFFFD8}, + [I(90,154)] = {30,0x3F7FFFD8}, + [I(91,154)] = {64,0}, + [I(92,154)] = {64,0}, + [I(93,154)] = {64,0}, + [I(94,154)] = {64,0}, + [I(95,154)] = {28,0x8BFFFD8}, + [I(96,154)] = {64,0}, + [I(97,154)] = {27,0xFFFFD8}, + [I(98,154)] = {28,0x8FFFFD8}, + [I(99,154)] = {27,0x13FFFD8}, + [I(100,154)] = {28,0x93FFFD8}, + [I(101,154)] = {27,0x17FFFD8}, + [I(102,154)] = {28,0x97FFFD8}, + [I(103,154)] = {28,0x9BFFFD8}, + [I(104,154)] = {28,0x9FFFFD8}, + [I(105,154)] = {27,0x1BFFFD8}, + [I(106,154)] = {29,0x1D3FFFD8}, + [I(107,154)] = {29,0x1D7FFFD8}, + [I(108,154)] = {28,0xA3FFFD8}, + [I(109,154)] = {28,0xA7FFFD8}, + [I(110,154)] = {28,0xABFFFD8}, + [I(111,154)] = {27,0x1FFFFD8}, + [I(112,154)] = {28,0xAFFFFD8}, + [I(113,154)] = {29,0x1DBFFFD8}, + [I(114,154)] = {28,0xB3FFFD8}, + [I(115,154)] = {27,0x23FFFD8}, + [I(116,154)] = {27,0x27FFFD8}, + [I(117,154)] = {28,0xB7FFFD8}, + [I(118,154)] = {29,0x1DFFFFD8}, + [I(119,154)] = {29,0x1E3FFFD8}, + [I(120,154)] = {29,0x1E7FFFD8}, + [I(121,154)] = {29,0x1EBFFFD8}, + [I(122,154)] = {29,0x1EFFFFD8}, + [I(123,154)] = {64,0}, + [I(124,154)] = {64,0}, + [I(125,154)] = {64,0}, + [I(126,154)] = {64,0}, + [I(127,154)] = {64,0}, + [I(128,154)] = {64,0}, + [I(129,154)] = {64,0}, + [I(130,154)] = {64,0}, + [I(131,154)] = {64,0}, + [I(132,154)] = {64,0}, + [I(133,154)] = {64,0}, + [I(134,154)] = {64,0}, + [I(135,154)] = {64,0}, + [I(136,154)] = {64,0}, + [I(137,154)] = {64,0}, + [I(138,154)] = {64,0}, + [I(139,154)] = {64,0}, + [I(140,154)] = {64,0}, + [I(141,154)] = {64,0}, + [I(142,154)] = {64,0}, + [I(143,154)] = {64,0}, + [I(144,154)] = {64,0}, + [I(145,154)] = {64,0}, + [I(146,154)] = {64,0}, + [I(147,154)] = {64,0}, + [I(148,154)] = {64,0}, + [I(149,154)] = {64,0}, + [I(150,154)] = {64,0}, + [I(151,154)] = {64,0}, + [I(152,154)] = {64,0}, + [I(153,154)] = {64,0}, + [I(154,154)] = {64,0}, + [I(155,154)] = {64,0}, + [I(156,154)] = {64,0}, + [I(157,154)] = {64,0}, + [I(158,154)] = {64,0}, + [I(159,154)] = {64,0}, + [I(160,154)] = {64,0}, + [I(161,154)] = {64,0}, + [I(162,154)] = {64,0}, + [I(163,154)] = {64,0}, + [I(164,154)] = {64,0}, + [I(165,154)] = {64,0}, + [I(166,154)] = {64,0}, + [I(167,154)] = {64,0}, + [I(168,154)] = {64,0}, + [I(169,154)] = {64,0}, + [I(170,154)] = {64,0}, + [I(171,154)] = {64,0}, + [I(172,154)] = {64,0}, + [I(173,154)] = {64,0}, + [I(174,154)] = {64,0}, + [I(175,154)] = {64,0}, + [I(176,154)] = {64,0}, + [I(177,154)] = {64,0}, + [I(178,154)] = {64,0}, + [I(179,154)] = {64,0}, + [I(180,154)] = {64,0}, + [I(181,154)] = {64,0}, + [I(182,154)] = {64,0}, + [I(183,154)] = {64,0}, + [I(184,154)] = {64,0}, + [I(185,154)] = {64,0}, + [I(186,154)] = {64,0}, + [I(187,154)] = {64,0}, + [I(188,154)] = {64,0}, + [I(189,154)] = {64,0}, + [I(190,154)] = {64,0}, + [I(191,154)] = {64,0}, + [I(192,154)] = {64,0}, + [I(193,154)] = {64,0}, + [I(194,154)] = {64,0}, + [I(195,154)] = {64,0}, + [I(196,154)] = {64,0}, + [I(197,154)] = {64,0}, + [I(198,154)] = {64,0}, + [I(199,154)] = {64,0}, + [I(200,154)] = {64,0}, + [I(201,154)] = {64,0}, + [I(202,154)] = {64,0}, + [I(203,154)] = {64,0}, + [I(204,154)] = {64,0}, + [I(205,154)] = {64,0}, + [I(206,154)] = {64,0}, + [I(207,154)] = {64,0}, + [I(208,154)] = {64,0}, + [I(209,154)] = {64,0}, + [I(210,154)] = {64,0}, + [I(211,154)] = {64,0}, + [I(212,154)] = {64,0}, + [I(213,154)] = {64,0}, + [I(214,154)] = {64,0}, + [I(215,154)] = {64,0}, + [I(216,154)] = {64,0}, + [I(217,154)] = {64,0}, + [I(218,154)] = {64,0}, + [I(219,154)] = {64,0}, + [I(220,154)] = {64,0}, + [I(221,154)] = {64,0}, + [I(222,154)] = {64,0}, + [I(223,154)] = {64,0}, + [I(224,154)] = {64,0}, + [I(225,154)] = {64,0}, + [I(226,154)] = {64,0}, + [I(227,154)] = {64,0}, + [I(228,154)] = {64,0}, + [I(229,154)] = {64,0}, + [I(230,154)] = {64,0}, + [I(231,154)] = {64,0}, + [I(232,154)] = {64,0}, + [I(233,154)] = {64,0}, + [I(234,154)] = {64,0}, + [I(235,154)] = {64,0}, + [I(236,154)] = {64,0}, + [I(237,154)] = {64,0}, + [I(238,154)] = {64,0}, + [I(239,154)] = {64,0}, + [I(240,154)] = {64,0}, + [I(241,154)] = {64,0}, + [I(242,154)] = {64,0}, + [I(243,154)] = {64,0}, + [I(244,154)] = {64,0}, + [I(245,154)] = {64,0}, + [I(246,154)] = {64,0}, + [I(247,154)] = {64,0}, + [I(248,154)] = {64,0}, + [I(249,154)] = {64,0}, + [I(250,154)] = {64,0}, + [I(251,154)] = {64,0}, + [I(252,154)] = {64,0}, + [I(253,154)] = {64,0}, + [I(254,154)] = {64,0}, + [I(255,154)] = {64,0}, + [I(0,155)] = {64,0}, + [I(1,155)] = {64,0}, + [I(2,155)] = {64,0}, + [I(3,155)] = {64,0}, + [I(4,155)] = {64,0}, + [I(5,155)] = {64,0}, + [I(6,155)] = {64,0}, + [I(7,155)] = {64,0}, + [I(8,155)] = {64,0}, + [I(9,155)] = {64,0}, + [I(10,155)] = {64,0}, + [I(11,155)] = {64,0}, + [I(12,155)] = {64,0}, + [I(13,155)] = {64,0}, + [I(14,155)] = {64,0}, + [I(15,155)] = {64,0}, + [I(16,155)] = {64,0}, + [I(17,155)] = {64,0}, + [I(18,155)] = {64,0}, + [I(19,155)] = {64,0}, + [I(20,155)] = {64,0}, + [I(21,155)] = {64,0}, + [I(22,155)] = {64,0}, + [I(23,155)] = {64,0}, + [I(24,155)] = {64,0}, + [I(25,155)] = {64,0}, + [I(26,155)] = {64,0}, + [I(27,155)] = {64,0}, + [I(28,155)] = {64,0}, + [I(29,155)] = {64,0}, + [I(30,155)] = {64,0}, + [I(31,155)] = {64,0}, + [I(32,155)] = {29,0xA7FFFE5}, + [I(33,155)] = {64,0}, + [I(34,155)] = {64,0}, + [I(35,155)] = {64,0}, + [I(36,155)] = {64,0}, + [I(37,155)] = {29,0xAFFFFE5}, + [I(38,155)] = {31,0x7C7FFFE5}, + [I(39,155)] = {64,0}, + [I(40,155)] = {64,0}, + [I(41,155)] = {64,0}, + [I(42,155)] = {31,0x7CFFFFE5}, + [I(43,155)] = {64,0}, + [I(44,155)] = {31,0x7D7FFFE5}, + [I(45,155)] = {29,0xB7FFFE5}, + [I(46,155)] = {29,0xBFFFFE5}, + [I(47,155)] = {29,0xC7FFFE5}, + [I(48,155)] = {28,0x7FFFE5}, + [I(49,155)] = {28,0xFFFFE5}, + [I(50,155)] = {28,0x17FFFE5}, + [I(51,155)] = {29,0xCFFFFE5}, + [I(52,155)] = {29,0xD7FFFE5}, + [I(53,155)] = {29,0xDFFFFE5}, + [I(54,155)] = {29,0xE7FFFE5}, + [I(55,155)] = {29,0xEFFFFE5}, + [I(56,155)] = {29,0xF7FFFE5}, + [I(57,155)] = {29,0xFFFFFE5}, + [I(58,155)] = {30,0x2E7FFFE5}, + [I(59,155)] = {31,0x7DFFFFE5}, + [I(60,155)] = {64,0}, + [I(61,155)] = {29,0x107FFFE5}, + [I(62,155)] = {64,0}, + [I(63,155)] = {64,0}, + [I(64,155)] = {64,0}, + [I(65,155)] = {29,0x10FFFFE5}, + [I(66,155)] = {30,0x2EFFFFE5}, + [I(67,155)] = {30,0x2F7FFFE5}, + [I(68,155)] = {30,0x2FFFFFE5}, + [I(69,155)] = {30,0x307FFFE5}, + [I(70,155)] = {30,0x30FFFFE5}, + [I(71,155)] = {30,0x317FFFE5}, + [I(72,155)] = {30,0x31FFFFE5}, + [I(73,155)] = {30,0x327FFFE5}, + [I(74,155)] = {30,0x32FFFFE5}, + [I(75,155)] = {30,0x337FFFE5}, + [I(76,155)] = {30,0x33FFFFE5}, + [I(77,155)] = {30,0x347FFFE5}, + [I(78,155)] = {30,0x34FFFFE5}, + [I(79,155)] = {30,0x357FFFE5}, + [I(80,155)] = {30,0x35FFFFE5}, + [I(81,155)] = {30,0x367FFFE5}, + [I(82,155)] = {30,0x36FFFFE5}, + [I(83,155)] = {30,0x377FFFE5}, + [I(84,155)] = {30,0x37FFFFE5}, + [I(85,155)] = {30,0x387FFFE5}, + [I(86,155)] = {30,0x38FFFFE5}, + [I(87,155)] = {30,0x397FFFE5}, + [I(88,155)] = {31,0x7E7FFFE5}, + [I(89,155)] = {30,0x39FFFFE5}, + [I(90,155)] = {31,0x7EFFFFE5}, + [I(91,155)] = {64,0}, + [I(92,155)] = {64,0}, + [I(93,155)] = {64,0}, + [I(94,155)] = {64,0}, + [I(95,155)] = {29,0x117FFFE5}, + [I(96,155)] = {64,0}, + [I(97,155)] = {28,0x1FFFFE5}, + [I(98,155)] = {29,0x11FFFFE5}, + [I(99,155)] = {28,0x27FFFE5}, + [I(100,155)] = {29,0x127FFFE5}, + [I(101,155)] = {28,0x2FFFFE5}, + [I(102,155)] = {29,0x12FFFFE5}, + [I(103,155)] = {29,0x137FFFE5}, + [I(104,155)] = {29,0x13FFFFE5}, + [I(105,155)] = {28,0x37FFFE5}, + [I(106,155)] = {30,0x3A7FFFE5}, + [I(107,155)] = {30,0x3AFFFFE5}, + [I(108,155)] = {29,0x147FFFE5}, + [I(109,155)] = {29,0x14FFFFE5}, + [I(110,155)] = {29,0x157FFFE5}, + [I(111,155)] = {28,0x3FFFFE5}, + [I(112,155)] = {29,0x15FFFFE5}, + [I(113,155)] = {30,0x3B7FFFE5}, + [I(114,155)] = {29,0x167FFFE5}, + [I(115,155)] = {28,0x47FFFE5}, + [I(116,155)] = {28,0x4FFFFE5}, + [I(117,155)] = {29,0x16FFFFE5}, + [I(118,155)] = {30,0x3BFFFFE5}, + [I(119,155)] = {30,0x3C7FFFE5}, + [I(120,155)] = {30,0x3CFFFFE5}, + [I(121,155)] = {30,0x3D7FFFE5}, + [I(122,155)] = {30,0x3DFFFFE5}, + [I(123,155)] = {64,0}, + [I(124,155)] = {64,0}, + [I(125,155)] = {64,0}, + [I(126,155)] = {64,0}, + [I(127,155)] = {64,0}, + [I(128,155)] = {64,0}, + [I(129,155)] = {64,0}, + [I(130,155)] = {64,0}, + [I(131,155)] = {64,0}, + [I(132,155)] = {64,0}, + [I(133,155)] = {64,0}, + [I(134,155)] = {64,0}, + [I(135,155)] = {64,0}, + [I(136,155)] = {64,0}, + [I(137,155)] = {64,0}, + [I(138,155)] = {64,0}, + [I(139,155)] = {64,0}, + [I(140,155)] = {64,0}, + [I(141,155)] = {64,0}, + [I(142,155)] = {64,0}, + [I(143,155)] = {64,0}, + [I(144,155)] = {64,0}, + [I(145,155)] = {64,0}, + [I(146,155)] = {64,0}, + [I(147,155)] = {64,0}, + [I(148,155)] = {64,0}, + [I(149,155)] = {64,0}, + [I(150,155)] = {64,0}, + [I(151,155)] = {64,0}, + [I(152,155)] = {64,0}, + [I(153,155)] = {64,0}, + [I(154,155)] = {64,0}, + [I(155,155)] = {64,0}, + [I(156,155)] = {64,0}, + [I(157,155)] = {64,0}, + [I(158,155)] = {64,0}, + [I(159,155)] = {64,0}, + [I(160,155)] = {64,0}, + [I(161,155)] = {64,0}, + [I(162,155)] = {64,0}, + [I(163,155)] = {64,0}, + [I(164,155)] = {64,0}, + [I(165,155)] = {64,0}, + [I(166,155)] = {64,0}, + [I(167,155)] = {64,0}, + [I(168,155)] = {64,0}, + [I(169,155)] = {64,0}, + [I(170,155)] = {64,0}, + [I(171,155)] = {64,0}, + [I(172,155)] = {64,0}, + [I(173,155)] = {64,0}, + [I(174,155)] = {64,0}, + [I(175,155)] = {64,0}, + [I(176,155)] = {64,0}, + [I(177,155)] = {64,0}, + [I(178,155)] = {64,0}, + [I(179,155)] = {64,0}, + [I(180,155)] = {64,0}, + [I(181,155)] = {64,0}, + [I(182,155)] = {64,0}, + [I(183,155)] = {64,0}, + [I(184,155)] = {64,0}, + [I(185,155)] = {64,0}, + [I(186,155)] = {64,0}, + [I(187,155)] = {64,0}, + [I(188,155)] = {64,0}, + [I(189,155)] = {64,0}, + [I(190,155)] = {64,0}, + [I(191,155)] = {64,0}, + [I(192,155)] = {64,0}, + [I(193,155)] = {64,0}, + [I(194,155)] = {64,0}, + [I(195,155)] = {64,0}, + [I(196,155)] = {64,0}, + [I(197,155)] = {64,0}, + [I(198,155)] = {64,0}, + [I(199,155)] = {64,0}, + [I(200,155)] = {64,0}, + [I(201,155)] = {64,0}, + [I(202,155)] = {64,0}, + [I(203,155)] = {64,0}, + [I(204,155)] = {64,0}, + [I(205,155)] = {64,0}, + [I(206,155)] = {64,0}, + [I(207,155)] = {64,0}, + [I(208,155)] = {64,0}, + [I(209,155)] = {64,0}, + [I(210,155)] = {64,0}, + [I(211,155)] = {64,0}, + [I(212,155)] = {64,0}, + [I(213,155)] = {64,0}, + [I(214,155)] = {64,0}, + [I(215,155)] = {64,0}, + [I(216,155)] = {64,0}, + [I(217,155)] = {64,0}, + [I(218,155)] = {64,0}, + [I(219,155)] = {64,0}, + [I(220,155)] = {64,0}, + [I(221,155)] = {64,0}, + [I(222,155)] = {64,0}, + [I(223,155)] = {64,0}, + [I(224,155)] = {64,0}, + [I(225,155)] = {64,0}, + [I(226,155)] = {64,0}, + [I(227,155)] = {64,0}, + [I(228,155)] = {64,0}, + [I(229,155)] = {64,0}, + [I(230,155)] = {64,0}, + [I(231,155)] = {64,0}, + [I(232,155)] = {64,0}, + [I(233,155)] = {64,0}, + [I(234,155)] = {64,0}, + [I(235,155)] = {64,0}, + [I(236,155)] = {64,0}, + [I(237,155)] = {64,0}, + [I(238,155)] = {64,0}, + [I(239,155)] = {64,0}, + [I(240,155)] = {64,0}, + [I(241,155)] = {64,0}, + [I(242,155)] = {64,0}, + [I(243,155)] = {64,0}, + [I(244,155)] = {64,0}, + [I(245,155)] = {64,0}, + [I(246,155)] = {64,0}, + [I(247,155)] = {64,0}, + [I(248,155)] = {64,0}, + [I(249,155)] = {64,0}, + [I(250,155)] = {64,0}, + [I(251,155)] = {64,0}, + [I(252,155)] = {64,0}, + [I(253,155)] = {64,0}, + [I(254,155)] = {64,0}, + [I(255,155)] = {64,0}, + [I(0,156)] = {64,0}, + [I(1,156)] = {64,0}, + [I(2,156)] = {64,0}, + [I(3,156)] = {64,0}, + [I(4,156)] = {64,0}, + [I(5,156)] = {64,0}, + [I(6,156)] = {64,0}, + [I(7,156)] = {64,0}, + [I(8,156)] = {64,0}, + [I(9,156)] = {64,0}, + [I(10,156)] = {64,0}, + [I(11,156)] = {64,0}, + [I(12,156)] = {64,0}, + [I(13,156)] = {64,0}, + [I(14,156)] = {64,0}, + [I(15,156)] = {64,0}, + [I(16,156)] = {64,0}, + [I(17,156)] = {64,0}, + [I(18,156)] = {64,0}, + [I(19,156)] = {64,0}, + [I(20,156)] = {64,0}, + [I(21,156)] = {64,0}, + [I(22,156)] = {64,0}, + [I(23,156)] = {64,0}, + [I(24,156)] = {64,0}, + [I(25,156)] = {64,0}, + [I(26,156)] = {64,0}, + [I(27,156)] = {64,0}, + [I(28,156)] = {64,0}, + [I(29,156)] = {64,0}, + [I(30,156)] = {64,0}, + [I(31,156)] = {64,0}, + [I(32,156)] = {28,0x53FFFD9}, + [I(33,156)] = {X32,0xFE3FFFD9}, + [I(34,156)] = {X32,0xFE7FFFD9}, + [I(35,156)] = {64,0}, + [I(36,156)] = {64,0}, + [I(37,156)] = {28,0x57FFFD9}, + [I(38,156)] = {30,0x3E3FFFD9}, + [I(39,156)] = {64,0}, + [I(40,156)] = {X32,0xFEBFFFD9}, + [I(41,156)] = {X32,0xFEFFFFD9}, + [I(42,156)] = {30,0x3E7FFFD9}, + [I(43,156)] = {64,0}, + [I(44,156)] = {30,0x3EBFFFD9}, + [I(45,156)] = {28,0x5BFFFD9}, + [I(46,156)] = {28,0x5FFFFD9}, + [I(47,156)] = {28,0x63FFFD9}, + [I(48,156)] = {27,0x3FFFD9}, + [I(49,156)] = {27,0x7FFFD9}, + [I(50,156)] = {27,0xBFFFD9}, + [I(51,156)] = {28,0x67FFFD9}, + [I(52,156)] = {28,0x6BFFFD9}, + [I(53,156)] = {28,0x6FFFFD9}, + [I(54,156)] = {28,0x73FFFD9}, + [I(55,156)] = {28,0x77FFFD9}, + [I(56,156)] = {28,0x7BFFFD9}, + [I(57,156)] = {28,0x7FFFFD9}, + [I(58,156)] = {29,0x173FFFD9}, + [I(59,156)] = {30,0x3EFFFFD9}, + [I(60,156)] = {64,0}, + [I(61,156)] = {28,0x83FFFD9}, + [I(62,156)] = {64,0}, + [I(63,156)] = {X32,0xFF3FFFD9}, + [I(64,156)] = {64,0}, + [I(65,156)] = {28,0x87FFFD9}, + [I(66,156)] = {29,0x177FFFD9}, + [I(67,156)] = {29,0x17BFFFD9}, + [I(68,156)] = {29,0x17FFFFD9}, + [I(69,156)] = {29,0x183FFFD9}, + [I(70,156)] = {29,0x187FFFD9}, + [I(71,156)] = {29,0x18BFFFD9}, + [I(72,156)] = {29,0x18FFFFD9}, + [I(73,156)] = {29,0x193FFFD9}, + [I(74,156)] = {29,0x197FFFD9}, + [I(75,156)] = {29,0x19BFFFD9}, + [I(76,156)] = {29,0x19FFFFD9}, + [I(77,156)] = {29,0x1A3FFFD9}, + [I(78,156)] = {29,0x1A7FFFD9}, + [I(79,156)] = {29,0x1ABFFFD9}, + [I(80,156)] = {29,0x1AFFFFD9}, + [I(81,156)] = {29,0x1B3FFFD9}, + [I(82,156)] = {29,0x1B7FFFD9}, + [I(83,156)] = {29,0x1BBFFFD9}, + [I(84,156)] = {29,0x1BFFFFD9}, + [I(85,156)] = {29,0x1C3FFFD9}, + [I(86,156)] = {29,0x1C7FFFD9}, + [I(87,156)] = {29,0x1CBFFFD9}, + [I(88,156)] = {30,0x3F3FFFD9}, + [I(89,156)] = {29,0x1CFFFFD9}, + [I(90,156)] = {30,0x3F7FFFD9}, + [I(91,156)] = {64,0}, + [I(92,156)] = {64,0}, + [I(93,156)] = {64,0}, + [I(94,156)] = {64,0}, + [I(95,156)] = {28,0x8BFFFD9}, + [I(96,156)] = {64,0}, + [I(97,156)] = {27,0xFFFFD9}, + [I(98,156)] = {28,0x8FFFFD9}, + [I(99,156)] = {27,0x13FFFD9}, + [I(100,156)] = {28,0x93FFFD9}, + [I(101,156)] = {27,0x17FFFD9}, + [I(102,156)] = {28,0x97FFFD9}, + [I(103,156)] = {28,0x9BFFFD9}, + [I(104,156)] = {28,0x9FFFFD9}, + [I(105,156)] = {27,0x1BFFFD9}, + [I(106,156)] = {29,0x1D3FFFD9}, + [I(107,156)] = {29,0x1D7FFFD9}, + [I(108,156)] = {28,0xA3FFFD9}, + [I(109,156)] = {28,0xA7FFFD9}, + [I(110,156)] = {28,0xABFFFD9}, + [I(111,156)] = {27,0x1FFFFD9}, + [I(112,156)] = {28,0xAFFFFD9}, + [I(113,156)] = {29,0x1DBFFFD9}, + [I(114,156)] = {28,0xB3FFFD9}, + [I(115,156)] = {27,0x23FFFD9}, + [I(116,156)] = {27,0x27FFFD9}, + [I(117,156)] = {28,0xB7FFFD9}, + [I(118,156)] = {29,0x1DFFFFD9}, + [I(119,156)] = {29,0x1E3FFFD9}, + [I(120,156)] = {29,0x1E7FFFD9}, + [I(121,156)] = {29,0x1EBFFFD9}, + [I(122,156)] = {29,0x1EFFFFD9}, + [I(123,156)] = {64,0}, + [I(124,156)] = {64,0}, + [I(125,156)] = {64,0}, + [I(126,156)] = {64,0}, + [I(127,156)] = {64,0}, + [I(128,156)] = {64,0}, + [I(129,156)] = {64,0}, + [I(130,156)] = {64,0}, + [I(131,156)] = {64,0}, + [I(132,156)] = {64,0}, + [I(133,156)] = {64,0}, + [I(134,156)] = {64,0}, + [I(135,156)] = {64,0}, + [I(136,156)] = {64,0}, + [I(137,156)] = {64,0}, + [I(138,156)] = {64,0}, + [I(139,156)] = {64,0}, + [I(140,156)] = {64,0}, + [I(141,156)] = {64,0}, + [I(142,156)] = {64,0}, + [I(143,156)] = {64,0}, + [I(144,156)] = {64,0}, + [I(145,156)] = {64,0}, + [I(146,156)] = {64,0}, + [I(147,156)] = {64,0}, + [I(148,156)] = {64,0}, + [I(149,156)] = {64,0}, + [I(150,156)] = {64,0}, + [I(151,156)] = {64,0}, + [I(152,156)] = {64,0}, + [I(153,156)] = {64,0}, + [I(154,156)] = {64,0}, + [I(155,156)] = {64,0}, + [I(156,156)] = {64,0}, + [I(157,156)] = {64,0}, + [I(158,156)] = {64,0}, + [I(159,156)] = {64,0}, + [I(160,156)] = {64,0}, + [I(161,156)] = {64,0}, + [I(162,156)] = {64,0}, + [I(163,156)] = {64,0}, + [I(164,156)] = {64,0}, + [I(165,156)] = {64,0}, + [I(166,156)] = {64,0}, + [I(167,156)] = {64,0}, + [I(168,156)] = {64,0}, + [I(169,156)] = {64,0}, + [I(170,156)] = {64,0}, + [I(171,156)] = {64,0}, + [I(172,156)] = {64,0}, + [I(173,156)] = {64,0}, + [I(174,156)] = {64,0}, + [I(175,156)] = {64,0}, + [I(176,156)] = {64,0}, + [I(177,156)] = {64,0}, + [I(178,156)] = {64,0}, + [I(179,156)] = {64,0}, + [I(180,156)] = {64,0}, + [I(181,156)] = {64,0}, + [I(182,156)] = {64,0}, + [I(183,156)] = {64,0}, + [I(184,156)] = {64,0}, + [I(185,156)] = {64,0}, + [I(186,156)] = {64,0}, + [I(187,156)] = {64,0}, + [I(188,156)] = {64,0}, + [I(189,156)] = {64,0}, + [I(190,156)] = {64,0}, + [I(191,156)] = {64,0}, + [I(192,156)] = {64,0}, + [I(193,156)] = {64,0}, + [I(194,156)] = {64,0}, + [I(195,156)] = {64,0}, + [I(196,156)] = {64,0}, + [I(197,156)] = {64,0}, + [I(198,156)] = {64,0}, + [I(199,156)] = {64,0}, + [I(200,156)] = {64,0}, + [I(201,156)] = {64,0}, + [I(202,156)] = {64,0}, + [I(203,156)] = {64,0}, + [I(204,156)] = {64,0}, + [I(205,156)] = {64,0}, + [I(206,156)] = {64,0}, + [I(207,156)] = {64,0}, + [I(208,156)] = {64,0}, + [I(209,156)] = {64,0}, + [I(210,156)] = {64,0}, + [I(211,156)] = {64,0}, + [I(212,156)] = {64,0}, + [I(213,156)] = {64,0}, + [I(214,156)] = {64,0}, + [I(215,156)] = {64,0}, + [I(216,156)] = {64,0}, + [I(217,156)] = {64,0}, + [I(218,156)] = {64,0}, + [I(219,156)] = {64,0}, + [I(220,156)] = {64,0}, + [I(221,156)] = {64,0}, + [I(222,156)] = {64,0}, + [I(223,156)] = {64,0}, + [I(224,156)] = {64,0}, + [I(225,156)] = {64,0}, + [I(226,156)] = {64,0}, + [I(227,156)] = {64,0}, + [I(228,156)] = {64,0}, + [I(229,156)] = {64,0}, + [I(230,156)] = {64,0}, + [I(231,156)] = {64,0}, + [I(232,156)] = {64,0}, + [I(233,156)] = {64,0}, + [I(234,156)] = {64,0}, + [I(235,156)] = {64,0}, + [I(236,156)] = {64,0}, + [I(237,156)] = {64,0}, + [I(238,156)] = {64,0}, + [I(239,156)] = {64,0}, + [I(240,156)] = {64,0}, + [I(241,156)] = {64,0}, + [I(242,156)] = {64,0}, + [I(243,156)] = {64,0}, + [I(244,156)] = {64,0}, + [I(245,156)] = {64,0}, + [I(246,156)] = {64,0}, + [I(247,156)] = {64,0}, + [I(248,156)] = {64,0}, + [I(249,156)] = {64,0}, + [I(250,156)] = {64,0}, + [I(251,156)] = {64,0}, + [I(252,156)] = {64,0}, + [I(253,156)] = {64,0}, + [I(254,156)] = {64,0}, + [I(255,156)] = {64,0}, + [I(0,157)] = {64,0}, + [I(1,157)] = {64,0}, + [I(2,157)] = {64,0}, + [I(3,157)] = {64,0}, + [I(4,157)] = {64,0}, + [I(5,157)] = {64,0}, + [I(6,157)] = {64,0}, + [I(7,157)] = {64,0}, + [I(8,157)] = {64,0}, + [I(9,157)] = {64,0}, + [I(10,157)] = {64,0}, + [I(11,157)] = {64,0}, + [I(12,157)] = {64,0}, + [I(13,157)] = {64,0}, + [I(14,157)] = {64,0}, + [I(15,157)] = {64,0}, + [I(16,157)] = {64,0}, + [I(17,157)] = {64,0}, + [I(18,157)] = {64,0}, + [I(19,157)] = {64,0}, + [I(20,157)] = {64,0}, + [I(21,157)] = {64,0}, + [I(22,157)] = {64,0}, + [I(23,157)] = {64,0}, + [I(24,157)] = {64,0}, + [I(25,157)] = {64,0}, + [I(26,157)] = {64,0}, + [I(27,157)] = {64,0}, + [I(28,157)] = {64,0}, + [I(29,157)] = {64,0}, + [I(30,157)] = {64,0}, + [I(31,157)] = {64,0}, + [I(32,157)] = {29,0xA7FFFE6}, + [I(33,157)] = {64,0}, + [I(34,157)] = {64,0}, + [I(35,157)] = {64,0}, + [I(36,157)] = {64,0}, + [I(37,157)] = {29,0xAFFFFE6}, + [I(38,157)] = {31,0x7C7FFFE6}, + [I(39,157)] = {64,0}, + [I(40,157)] = {64,0}, + [I(41,157)] = {64,0}, + [I(42,157)] = {31,0x7CFFFFE6}, + [I(43,157)] = {64,0}, + [I(44,157)] = {31,0x7D7FFFE6}, + [I(45,157)] = {29,0xB7FFFE6}, + [I(46,157)] = {29,0xBFFFFE6}, + [I(47,157)] = {29,0xC7FFFE6}, + [I(48,157)] = {28,0x7FFFE6}, + [I(49,157)] = {28,0xFFFFE6}, + [I(50,157)] = {28,0x17FFFE6}, + [I(51,157)] = {29,0xCFFFFE6}, + [I(52,157)] = {29,0xD7FFFE6}, + [I(53,157)] = {29,0xDFFFFE6}, + [I(54,157)] = {29,0xE7FFFE6}, + [I(55,157)] = {29,0xEFFFFE6}, + [I(56,157)] = {29,0xF7FFFE6}, + [I(57,157)] = {29,0xFFFFFE6}, + [I(58,157)] = {30,0x2E7FFFE6}, + [I(59,157)] = {31,0x7DFFFFE6}, + [I(60,157)] = {64,0}, + [I(61,157)] = {29,0x107FFFE6}, + [I(62,157)] = {64,0}, + [I(63,157)] = {64,0}, + [I(64,157)] = {64,0}, + [I(65,157)] = {29,0x10FFFFE6}, + [I(66,157)] = {30,0x2EFFFFE6}, + [I(67,157)] = {30,0x2F7FFFE6}, + [I(68,157)] = {30,0x2FFFFFE6}, + [I(69,157)] = {30,0x307FFFE6}, + [I(70,157)] = {30,0x30FFFFE6}, + [I(71,157)] = {30,0x317FFFE6}, + [I(72,157)] = {30,0x31FFFFE6}, + [I(73,157)] = {30,0x327FFFE6}, + [I(74,157)] = {30,0x32FFFFE6}, + [I(75,157)] = {30,0x337FFFE6}, + [I(76,157)] = {30,0x33FFFFE6}, + [I(77,157)] = {30,0x347FFFE6}, + [I(78,157)] = {30,0x34FFFFE6}, + [I(79,157)] = {30,0x357FFFE6}, + [I(80,157)] = {30,0x35FFFFE6}, + [I(81,157)] = {30,0x367FFFE6}, + [I(82,157)] = {30,0x36FFFFE6}, + [I(83,157)] = {30,0x377FFFE6}, + [I(84,157)] = {30,0x37FFFFE6}, + [I(85,157)] = {30,0x387FFFE6}, + [I(86,157)] = {30,0x38FFFFE6}, + [I(87,157)] = {30,0x397FFFE6}, + [I(88,157)] = {31,0x7E7FFFE6}, + [I(89,157)] = {30,0x39FFFFE6}, + [I(90,157)] = {31,0x7EFFFFE6}, + [I(91,157)] = {64,0}, + [I(92,157)] = {64,0}, + [I(93,157)] = {64,0}, + [I(94,157)] = {64,0}, + [I(95,157)] = {29,0x117FFFE6}, + [I(96,157)] = {64,0}, + [I(97,157)] = {28,0x1FFFFE6}, + [I(98,157)] = {29,0x11FFFFE6}, + [I(99,157)] = {28,0x27FFFE6}, + [I(100,157)] = {29,0x127FFFE6}, + [I(101,157)] = {28,0x2FFFFE6}, + [I(102,157)] = {29,0x12FFFFE6}, + [I(103,157)] = {29,0x137FFFE6}, + [I(104,157)] = {29,0x13FFFFE6}, + [I(105,157)] = {28,0x37FFFE6}, + [I(106,157)] = {30,0x3A7FFFE6}, + [I(107,157)] = {30,0x3AFFFFE6}, + [I(108,157)] = {29,0x147FFFE6}, + [I(109,157)] = {29,0x14FFFFE6}, + [I(110,157)] = {29,0x157FFFE6}, + [I(111,157)] = {28,0x3FFFFE6}, + [I(112,157)] = {29,0x15FFFFE6}, + [I(113,157)] = {30,0x3B7FFFE6}, + [I(114,157)] = {29,0x167FFFE6}, + [I(115,157)] = {28,0x47FFFE6}, + [I(116,157)] = {28,0x4FFFFE6}, + [I(117,157)] = {29,0x16FFFFE6}, + [I(118,157)] = {30,0x3BFFFFE6}, + [I(119,157)] = {30,0x3C7FFFE6}, + [I(120,157)] = {30,0x3CFFFFE6}, + [I(121,157)] = {30,0x3D7FFFE6}, + [I(122,157)] = {30,0x3DFFFFE6}, + [I(123,157)] = {64,0}, + [I(124,157)] = {64,0}, + [I(125,157)] = {64,0}, + [I(126,157)] = {64,0}, + [I(127,157)] = {64,0}, + [I(128,157)] = {64,0}, + [I(129,157)] = {64,0}, + [I(130,157)] = {64,0}, + [I(131,157)] = {64,0}, + [I(132,157)] = {64,0}, + [I(133,157)] = {64,0}, + [I(134,157)] = {64,0}, + [I(135,157)] = {64,0}, + [I(136,157)] = {64,0}, + [I(137,157)] = {64,0}, + [I(138,157)] = {64,0}, + [I(139,157)] = {64,0}, + [I(140,157)] = {64,0}, + [I(141,157)] = {64,0}, + [I(142,157)] = {64,0}, + [I(143,157)] = {64,0}, + [I(144,157)] = {64,0}, + [I(145,157)] = {64,0}, + [I(146,157)] = {64,0}, + [I(147,157)] = {64,0}, + [I(148,157)] = {64,0}, + [I(149,157)] = {64,0}, + [I(150,157)] = {64,0}, + [I(151,157)] = {64,0}, + [I(152,157)] = {64,0}, + [I(153,157)] = {64,0}, + [I(154,157)] = {64,0}, + [I(155,157)] = {64,0}, + [I(156,157)] = {64,0}, + [I(157,157)] = {64,0}, + [I(158,157)] = {64,0}, + [I(159,157)] = {64,0}, + [I(160,157)] = {64,0}, + [I(161,157)] = {64,0}, + [I(162,157)] = {64,0}, + [I(163,157)] = {64,0}, + [I(164,157)] = {64,0}, + [I(165,157)] = {64,0}, + [I(166,157)] = {64,0}, + [I(167,157)] = {64,0}, + [I(168,157)] = {64,0}, + [I(169,157)] = {64,0}, + [I(170,157)] = {64,0}, + [I(171,157)] = {64,0}, + [I(172,157)] = {64,0}, + [I(173,157)] = {64,0}, + [I(174,157)] = {64,0}, + [I(175,157)] = {64,0}, + [I(176,157)] = {64,0}, + [I(177,157)] = {64,0}, + [I(178,157)] = {64,0}, + [I(179,157)] = {64,0}, + [I(180,157)] = {64,0}, + [I(181,157)] = {64,0}, + [I(182,157)] = {64,0}, + [I(183,157)] = {64,0}, + [I(184,157)] = {64,0}, + [I(185,157)] = {64,0}, + [I(186,157)] = {64,0}, + [I(187,157)] = {64,0}, + [I(188,157)] = {64,0}, + [I(189,157)] = {64,0}, + [I(190,157)] = {64,0}, + [I(191,157)] = {64,0}, + [I(192,157)] = {64,0}, + [I(193,157)] = {64,0}, + [I(194,157)] = {64,0}, + [I(195,157)] = {64,0}, + [I(196,157)] = {64,0}, + [I(197,157)] = {64,0}, + [I(198,157)] = {64,0}, + [I(199,157)] = {64,0}, + [I(200,157)] = {64,0}, + [I(201,157)] = {64,0}, + [I(202,157)] = {64,0}, + [I(203,157)] = {64,0}, + [I(204,157)] = {64,0}, + [I(205,157)] = {64,0}, + [I(206,157)] = {64,0}, + [I(207,157)] = {64,0}, + [I(208,157)] = {64,0}, + [I(209,157)] = {64,0}, + [I(210,157)] = {64,0}, + [I(211,157)] = {64,0}, + [I(212,157)] = {64,0}, + [I(213,157)] = {64,0}, + [I(214,157)] = {64,0}, + [I(215,157)] = {64,0}, + [I(216,157)] = {64,0}, + [I(217,157)] = {64,0}, + [I(218,157)] = {64,0}, + [I(219,157)] = {64,0}, + [I(220,157)] = {64,0}, + [I(221,157)] = {64,0}, + [I(222,157)] = {64,0}, + [I(223,157)] = {64,0}, + [I(224,157)] = {64,0}, + [I(225,157)] = {64,0}, + [I(226,157)] = {64,0}, + [I(227,157)] = {64,0}, + [I(228,157)] = {64,0}, + [I(229,157)] = {64,0}, + [I(230,157)] = {64,0}, + [I(231,157)] = {64,0}, + [I(232,157)] = {64,0}, + [I(233,157)] = {64,0}, + [I(234,157)] = {64,0}, + [I(235,157)] = {64,0}, + [I(236,157)] = {64,0}, + [I(237,157)] = {64,0}, + [I(238,157)] = {64,0}, + [I(239,157)] = {64,0}, + [I(240,157)] = {64,0}, + [I(241,157)] = {64,0}, + [I(242,157)] = {64,0}, + [I(243,157)] = {64,0}, + [I(244,157)] = {64,0}, + [I(245,157)] = {64,0}, + [I(246,157)] = {64,0}, + [I(247,157)] = {64,0}, + [I(248,157)] = {64,0}, + [I(249,157)] = {64,0}, + [I(250,157)] = {64,0}, + [I(251,157)] = {64,0}, + [I(252,157)] = {64,0}, + [I(253,157)] = {64,0}, + [I(254,157)] = {64,0}, + [I(255,157)] = {64,0}, + [I(0,158)] = {64,0}, + [I(1,158)] = {64,0}, + [I(2,158)] = {64,0}, + [I(3,158)] = {64,0}, + [I(4,158)] = {64,0}, + [I(5,158)] = {64,0}, + [I(6,158)] = {64,0}, + [I(7,158)] = {64,0}, + [I(8,158)] = {64,0}, + [I(9,158)] = {64,0}, + [I(10,158)] = {64,0}, + [I(11,158)] = {64,0}, + [I(12,158)] = {64,0}, + [I(13,158)] = {64,0}, + [I(14,158)] = {64,0}, + [I(15,158)] = {64,0}, + [I(16,158)] = {64,0}, + [I(17,158)] = {64,0}, + [I(18,158)] = {64,0}, + [I(19,158)] = {64,0}, + [I(20,158)] = {64,0}, + [I(21,158)] = {64,0}, + [I(22,158)] = {64,0}, + [I(23,158)] = {64,0}, + [I(24,158)] = {64,0}, + [I(25,158)] = {64,0}, + [I(26,158)] = {64,0}, + [I(27,158)] = {64,0}, + [I(28,158)] = {64,0}, + [I(29,158)] = {64,0}, + [I(30,158)] = {64,0}, + [I(31,158)] = {64,0}, + [I(32,158)] = {29,0xA7FFFE7}, + [I(33,158)] = {64,0}, + [I(34,158)] = {64,0}, + [I(35,158)] = {64,0}, + [I(36,158)] = {64,0}, + [I(37,158)] = {29,0xAFFFFE7}, + [I(38,158)] = {31,0x7C7FFFE7}, + [I(39,158)] = {64,0}, + [I(40,158)] = {64,0}, + [I(41,158)] = {64,0}, + [I(42,158)] = {31,0x7CFFFFE7}, + [I(43,158)] = {64,0}, + [I(44,158)] = {31,0x7D7FFFE7}, + [I(45,158)] = {29,0xB7FFFE7}, + [I(46,158)] = {29,0xBFFFFE7}, + [I(47,158)] = {29,0xC7FFFE7}, + [I(48,158)] = {28,0x7FFFE7}, + [I(49,158)] = {28,0xFFFFE7}, + [I(50,158)] = {28,0x17FFFE7}, + [I(51,158)] = {29,0xCFFFFE7}, + [I(52,158)] = {29,0xD7FFFE7}, + [I(53,158)] = {29,0xDFFFFE7}, + [I(54,158)] = {29,0xE7FFFE7}, + [I(55,158)] = {29,0xEFFFFE7}, + [I(56,158)] = {29,0xF7FFFE7}, + [I(57,158)] = {29,0xFFFFFE7}, + [I(58,158)] = {30,0x2E7FFFE7}, + [I(59,158)] = {31,0x7DFFFFE7}, + [I(60,158)] = {64,0}, + [I(61,158)] = {29,0x107FFFE7}, + [I(62,158)] = {64,0}, + [I(63,158)] = {64,0}, + [I(64,158)] = {64,0}, + [I(65,158)] = {29,0x10FFFFE7}, + [I(66,158)] = {30,0x2EFFFFE7}, + [I(67,158)] = {30,0x2F7FFFE7}, + [I(68,158)] = {30,0x2FFFFFE7}, + [I(69,158)] = {30,0x307FFFE7}, + [I(70,158)] = {30,0x30FFFFE7}, + [I(71,158)] = {30,0x317FFFE7}, + [I(72,158)] = {30,0x31FFFFE7}, + [I(73,158)] = {30,0x327FFFE7}, + [I(74,158)] = {30,0x32FFFFE7}, + [I(75,158)] = {30,0x337FFFE7}, + [I(76,158)] = {30,0x33FFFFE7}, + [I(77,158)] = {30,0x347FFFE7}, + [I(78,158)] = {30,0x34FFFFE7}, + [I(79,158)] = {30,0x357FFFE7}, + [I(80,158)] = {30,0x35FFFFE7}, + [I(81,158)] = {30,0x367FFFE7}, + [I(82,158)] = {30,0x36FFFFE7}, + [I(83,158)] = {30,0x377FFFE7}, + [I(84,158)] = {30,0x37FFFFE7}, + [I(85,158)] = {30,0x387FFFE7}, + [I(86,158)] = {30,0x38FFFFE7}, + [I(87,158)] = {30,0x397FFFE7}, + [I(88,158)] = {31,0x7E7FFFE7}, + [I(89,158)] = {30,0x39FFFFE7}, + [I(90,158)] = {31,0x7EFFFFE7}, + [I(91,158)] = {64,0}, + [I(92,158)] = {64,0}, + [I(93,158)] = {64,0}, + [I(94,158)] = {64,0}, + [I(95,158)] = {29,0x117FFFE7}, + [I(96,158)] = {64,0}, + [I(97,158)] = {28,0x1FFFFE7}, + [I(98,158)] = {29,0x11FFFFE7}, + [I(99,158)] = {28,0x27FFFE7}, + [I(100,158)] = {29,0x127FFFE7}, + [I(101,158)] = {28,0x2FFFFE7}, + [I(102,158)] = {29,0x12FFFFE7}, + [I(103,158)] = {29,0x137FFFE7}, + [I(104,158)] = {29,0x13FFFFE7}, + [I(105,158)] = {28,0x37FFFE7}, + [I(106,158)] = {30,0x3A7FFFE7}, + [I(107,158)] = {30,0x3AFFFFE7}, + [I(108,158)] = {29,0x147FFFE7}, + [I(109,158)] = {29,0x14FFFFE7}, + [I(110,158)] = {29,0x157FFFE7}, + [I(111,158)] = {28,0x3FFFFE7}, + [I(112,158)] = {29,0x15FFFFE7}, + [I(113,158)] = {30,0x3B7FFFE7}, + [I(114,158)] = {29,0x167FFFE7}, + [I(115,158)] = {28,0x47FFFE7}, + [I(116,158)] = {28,0x4FFFFE7}, + [I(117,158)] = {29,0x16FFFFE7}, + [I(118,158)] = {30,0x3BFFFFE7}, + [I(119,158)] = {30,0x3C7FFFE7}, + [I(120,158)] = {30,0x3CFFFFE7}, + [I(121,158)] = {30,0x3D7FFFE7}, + [I(122,158)] = {30,0x3DFFFFE7}, + [I(123,158)] = {64,0}, + [I(124,158)] = {64,0}, + [I(125,158)] = {64,0}, + [I(126,158)] = {64,0}, + [I(127,158)] = {64,0}, + [I(128,158)] = {64,0}, + [I(129,158)] = {64,0}, + [I(130,158)] = {64,0}, + [I(131,158)] = {64,0}, + [I(132,158)] = {64,0}, + [I(133,158)] = {64,0}, + [I(134,158)] = {64,0}, + [I(135,158)] = {64,0}, + [I(136,158)] = {64,0}, + [I(137,158)] = {64,0}, + [I(138,158)] = {64,0}, + [I(139,158)] = {64,0}, + [I(140,158)] = {64,0}, + [I(141,158)] = {64,0}, + [I(142,158)] = {64,0}, + [I(143,158)] = {64,0}, + [I(144,158)] = {64,0}, + [I(145,158)] = {64,0}, + [I(146,158)] = {64,0}, + [I(147,158)] = {64,0}, + [I(148,158)] = {64,0}, + [I(149,158)] = {64,0}, + [I(150,158)] = {64,0}, + [I(151,158)] = {64,0}, + [I(152,158)] = {64,0}, + [I(153,158)] = {64,0}, + [I(154,158)] = {64,0}, + [I(155,158)] = {64,0}, + [I(156,158)] = {64,0}, + [I(157,158)] = {64,0}, + [I(158,158)] = {64,0}, + [I(159,158)] = {64,0}, + [I(160,158)] = {64,0}, + [I(161,158)] = {64,0}, + [I(162,158)] = {64,0}, + [I(163,158)] = {64,0}, + [I(164,158)] = {64,0}, + [I(165,158)] = {64,0}, + [I(166,158)] = {64,0}, + [I(167,158)] = {64,0}, + [I(168,158)] = {64,0}, + [I(169,158)] = {64,0}, + [I(170,158)] = {64,0}, + [I(171,158)] = {64,0}, + [I(172,158)] = {64,0}, + [I(173,158)] = {64,0}, + [I(174,158)] = {64,0}, + [I(175,158)] = {64,0}, + [I(176,158)] = {64,0}, + [I(177,158)] = {64,0}, + [I(178,158)] = {64,0}, + [I(179,158)] = {64,0}, + [I(180,158)] = {64,0}, + [I(181,158)] = {64,0}, + [I(182,158)] = {64,0}, + [I(183,158)] = {64,0}, + [I(184,158)] = {64,0}, + [I(185,158)] = {64,0}, + [I(186,158)] = {64,0}, + [I(187,158)] = {64,0}, + [I(188,158)] = {64,0}, + [I(189,158)] = {64,0}, + [I(190,158)] = {64,0}, + [I(191,158)] = {64,0}, + [I(192,158)] = {64,0}, + [I(193,158)] = {64,0}, + [I(194,158)] = {64,0}, + [I(195,158)] = {64,0}, + [I(196,158)] = {64,0}, + [I(197,158)] = {64,0}, + [I(198,158)] = {64,0}, + [I(199,158)] = {64,0}, + [I(200,158)] = {64,0}, + [I(201,158)] = {64,0}, + [I(202,158)] = {64,0}, + [I(203,158)] = {64,0}, + [I(204,158)] = {64,0}, + [I(205,158)] = {64,0}, + [I(206,158)] = {64,0}, + [I(207,158)] = {64,0}, + [I(208,158)] = {64,0}, + [I(209,158)] = {64,0}, + [I(210,158)] = {64,0}, + [I(211,158)] = {64,0}, + [I(212,158)] = {64,0}, + [I(213,158)] = {64,0}, + [I(214,158)] = {64,0}, + [I(215,158)] = {64,0}, + [I(216,158)] = {64,0}, + [I(217,158)] = {64,0}, + [I(218,158)] = {64,0}, + [I(219,158)] = {64,0}, + [I(220,158)] = {64,0}, + [I(221,158)] = {64,0}, + [I(222,158)] = {64,0}, + [I(223,158)] = {64,0}, + [I(224,158)] = {64,0}, + [I(225,158)] = {64,0}, + [I(226,158)] = {64,0}, + [I(227,158)] = {64,0}, + [I(228,158)] = {64,0}, + [I(229,158)] = {64,0}, + [I(230,158)] = {64,0}, + [I(231,158)] = {64,0}, + [I(232,158)] = {64,0}, + [I(233,158)] = {64,0}, + [I(234,158)] = {64,0}, + [I(235,158)] = {64,0}, + [I(236,158)] = {64,0}, + [I(237,158)] = {64,0}, + [I(238,158)] = {64,0}, + [I(239,158)] = {64,0}, + [I(240,158)] = {64,0}, + [I(241,158)] = {64,0}, + [I(242,158)] = {64,0}, + [I(243,158)] = {64,0}, + [I(244,158)] = {64,0}, + [I(245,158)] = {64,0}, + [I(246,158)] = {64,0}, + [I(247,158)] = {64,0}, + [I(248,158)] = {64,0}, + [I(249,158)] = {64,0}, + [I(250,158)] = {64,0}, + [I(251,158)] = {64,0}, + [I(252,158)] = {64,0}, + [I(253,158)] = {64,0}, + [I(254,158)] = {64,0}, + [I(255,158)] = {64,0}, + [I(0,159)] = {64,0}, + [I(1,159)] = {64,0}, + [I(2,159)] = {64,0}, + [I(3,159)] = {64,0}, + [I(4,159)] = {64,0}, + [I(5,159)] = {64,0}, + [I(6,159)] = {64,0}, + [I(7,159)] = {64,0}, + [I(8,159)] = {64,0}, + [I(9,159)] = {64,0}, + [I(10,159)] = {64,0}, + [I(11,159)] = {64,0}, + [I(12,159)] = {64,0}, + [I(13,159)] = {64,0}, + [I(14,159)] = {64,0}, + [I(15,159)] = {64,0}, + [I(16,159)] = {64,0}, + [I(17,159)] = {64,0}, + [I(18,159)] = {64,0}, + [I(19,159)] = {64,0}, + [I(20,159)] = {64,0}, + [I(21,159)] = {64,0}, + [I(22,159)] = {64,0}, + [I(23,159)] = {64,0}, + [I(24,159)] = {64,0}, + [I(25,159)] = {64,0}, + [I(26,159)] = {64,0}, + [I(27,159)] = {64,0}, + [I(28,159)] = {64,0}, + [I(29,159)] = {64,0}, + [I(30,159)] = {64,0}, + [I(31,159)] = {64,0}, + [I(32,159)] = {30,0x14FFFFEF}, + [I(33,159)] = {64,0}, + [I(34,159)] = {64,0}, + [I(35,159)] = {64,0}, + [I(36,159)] = {64,0}, + [I(37,159)] = {30,0x15FFFFEF}, + [I(38,159)] = {X32,0xF8FFFFEF}, + [I(39,159)] = {64,0}, + [I(40,159)] = {64,0}, + [I(41,159)] = {64,0}, + [I(42,159)] = {X32,0xF9FFFFEF}, + [I(43,159)] = {64,0}, + [I(44,159)] = {X32,0xFAFFFFEF}, + [I(45,159)] = {30,0x16FFFFEF}, + [I(46,159)] = {30,0x17FFFFEF}, + [I(47,159)] = {30,0x18FFFFEF}, + [I(48,159)] = {29,0xFFFFEF}, + [I(49,159)] = {29,0x1FFFFEF}, + [I(50,159)] = {29,0x2FFFFEF}, + [I(51,159)] = {30,0x19FFFFEF}, + [I(52,159)] = {30,0x1AFFFFEF}, + [I(53,159)] = {30,0x1BFFFFEF}, + [I(54,159)] = {30,0x1CFFFFEF}, + [I(55,159)] = {30,0x1DFFFFEF}, + [I(56,159)] = {30,0x1EFFFFEF}, + [I(57,159)] = {30,0x1FFFFFEF}, + [I(58,159)] = {31,0x5CFFFFEF}, + [I(59,159)] = {X32,0xFBFFFFEF}, + [I(60,159)] = {64,0}, + [I(61,159)] = {30,0x20FFFFEF}, + [I(62,159)] = {64,0}, + [I(63,159)] = {64,0}, + [I(64,159)] = {64,0}, + [I(65,159)] = {30,0x21FFFFEF}, + [I(66,159)] = {31,0x5DFFFFEF}, + [I(67,159)] = {31,0x5EFFFFEF}, + [I(68,159)] = {31,0x5FFFFFEF}, + [I(69,159)] = {31,0x60FFFFEF}, + [I(70,159)] = {31,0x61FFFFEF}, + [I(71,159)] = {31,0x62FFFFEF}, + [I(72,159)] = {31,0x63FFFFEF}, + [I(73,159)] = {31,0x64FFFFEF}, + [I(74,159)] = {31,0x65FFFFEF}, + [I(75,159)] = {31,0x66FFFFEF}, + [I(76,159)] = {31,0x67FFFFEF}, + [I(77,159)] = {31,0x68FFFFEF}, + [I(78,159)] = {31,0x69FFFFEF}, + [I(79,159)] = {31,0x6AFFFFEF}, + [I(80,159)] = {31,0x6BFFFFEF}, + [I(81,159)] = {31,0x6CFFFFEF}, + [I(82,159)] = {31,0x6DFFFFEF}, + [I(83,159)] = {31,0x6EFFFFEF}, + [I(84,159)] = {31,0x6FFFFFEF}, + [I(85,159)] = {31,0x70FFFFEF}, + [I(86,159)] = {31,0x71FFFFEF}, + [I(87,159)] = {31,0x72FFFFEF}, + [I(88,159)] = {X32,0xFCFFFFEF}, + [I(89,159)] = {31,0x73FFFFEF}, + [I(90,159)] = {X32,0xFDFFFFEF}, + [I(91,159)] = {64,0}, + [I(92,159)] = {64,0}, + [I(93,159)] = {64,0}, + [I(94,159)] = {64,0}, + [I(95,159)] = {30,0x22FFFFEF}, + [I(96,159)] = {64,0}, + [I(97,159)] = {29,0x3FFFFEF}, + [I(98,159)] = {30,0x23FFFFEF}, + [I(99,159)] = {29,0x4FFFFEF}, + [I(100,159)] = {30,0x24FFFFEF}, + [I(101,159)] = {29,0x5FFFFEF}, + [I(102,159)] = {30,0x25FFFFEF}, + [I(103,159)] = {30,0x26FFFFEF}, + [I(104,159)] = {30,0x27FFFFEF}, + [I(105,159)] = {29,0x6FFFFEF}, + [I(106,159)] = {31,0x74FFFFEF}, + [I(107,159)] = {31,0x75FFFFEF}, + [I(108,159)] = {30,0x28FFFFEF}, + [I(109,159)] = {30,0x29FFFFEF}, + [I(110,159)] = {30,0x2AFFFFEF}, + [I(111,159)] = {29,0x7FFFFEF}, + [I(112,159)] = {30,0x2BFFFFEF}, + [I(113,159)] = {31,0x76FFFFEF}, + [I(114,159)] = {30,0x2CFFFFEF}, + [I(115,159)] = {29,0x8FFFFEF}, + [I(116,159)] = {29,0x9FFFFEF}, + [I(117,159)] = {30,0x2DFFFFEF}, + [I(118,159)] = {31,0x77FFFFEF}, + [I(119,159)] = {31,0x78FFFFEF}, + [I(120,159)] = {31,0x79FFFFEF}, + [I(121,159)] = {31,0x7AFFFFEF}, + [I(122,159)] = {31,0x7BFFFFEF}, + [I(123,159)] = {64,0}, + [I(124,159)] = {64,0}, + [I(125,159)] = {64,0}, + [I(126,159)] = {64,0}, + [I(127,159)] = {64,0}, + [I(128,159)] = {64,0}, + [I(129,159)] = {64,0}, + [I(130,159)] = {64,0}, + [I(131,159)] = {64,0}, + [I(132,159)] = {64,0}, + [I(133,159)] = {64,0}, + [I(134,159)] = {64,0}, + [I(135,159)] = {64,0}, + [I(136,159)] = {64,0}, + [I(137,159)] = {64,0}, + [I(138,159)] = {64,0}, + [I(139,159)] = {64,0}, + [I(140,159)] = {64,0}, + [I(141,159)] = {64,0}, + [I(142,159)] = {64,0}, + [I(143,159)] = {64,0}, + [I(144,159)] = {64,0}, + [I(145,159)] = {64,0}, + [I(146,159)] = {64,0}, + [I(147,159)] = {64,0}, + [I(148,159)] = {64,0}, + [I(149,159)] = {64,0}, + [I(150,159)] = {64,0}, + [I(151,159)] = {64,0}, + [I(152,159)] = {64,0}, + [I(153,159)] = {64,0}, + [I(154,159)] = {64,0}, + [I(155,159)] = {64,0}, + [I(156,159)] = {64,0}, + [I(157,159)] = {64,0}, + [I(158,159)] = {64,0}, + [I(159,159)] = {64,0}, + [I(160,159)] = {64,0}, + [I(161,159)] = {64,0}, + [I(162,159)] = {64,0}, + [I(163,159)] = {64,0}, + [I(164,159)] = {64,0}, + [I(165,159)] = {64,0}, + [I(166,159)] = {64,0}, + [I(167,159)] = {64,0}, + [I(168,159)] = {64,0}, + [I(169,159)] = {64,0}, + [I(170,159)] = {64,0}, + [I(171,159)] = {64,0}, + [I(172,159)] = {64,0}, + [I(173,159)] = {64,0}, + [I(174,159)] = {64,0}, + [I(175,159)] = {64,0}, + [I(176,159)] = {64,0}, + [I(177,159)] = {64,0}, + [I(178,159)] = {64,0}, + [I(179,159)] = {64,0}, + [I(180,159)] = {64,0}, + [I(181,159)] = {64,0}, + [I(182,159)] = {64,0}, + [I(183,159)] = {64,0}, + [I(184,159)] = {64,0}, + [I(185,159)] = {64,0}, + [I(186,159)] = {64,0}, + [I(187,159)] = {64,0}, + [I(188,159)] = {64,0}, + [I(189,159)] = {64,0}, + [I(190,159)] = {64,0}, + [I(191,159)] = {64,0}, + [I(192,159)] = {64,0}, + [I(193,159)] = {64,0}, + [I(194,159)] = {64,0}, + [I(195,159)] = {64,0}, + [I(196,159)] = {64,0}, + [I(197,159)] = {64,0}, + [I(198,159)] = {64,0}, + [I(199,159)] = {64,0}, + [I(200,159)] = {64,0}, + [I(201,159)] = {64,0}, + [I(202,159)] = {64,0}, + [I(203,159)] = {64,0}, + [I(204,159)] = {64,0}, + [I(205,159)] = {64,0}, + [I(206,159)] = {64,0}, + [I(207,159)] = {64,0}, + [I(208,159)] = {64,0}, + [I(209,159)] = {64,0}, + [I(210,159)] = {64,0}, + [I(211,159)] = {64,0}, + [I(212,159)] = {64,0}, + [I(213,159)] = {64,0}, + [I(214,159)] = {64,0}, + [I(215,159)] = {64,0}, + [I(216,159)] = {64,0}, + [I(217,159)] = {64,0}, + [I(218,159)] = {64,0}, + [I(219,159)] = {64,0}, + [I(220,159)] = {64,0}, + [I(221,159)] = {64,0}, + [I(222,159)] = {64,0}, + [I(223,159)] = {64,0}, + [I(224,159)] = {64,0}, + [I(225,159)] = {64,0}, + [I(226,159)] = {64,0}, + [I(227,159)] = {64,0}, + [I(228,159)] = {64,0}, + [I(229,159)] = {64,0}, + [I(230,159)] = {64,0}, + [I(231,159)] = {64,0}, + [I(232,159)] = {64,0}, + [I(233,159)] = {64,0}, + [I(234,159)] = {64,0}, + [I(235,159)] = {64,0}, + [I(236,159)] = {64,0}, + [I(237,159)] = {64,0}, + [I(238,159)] = {64,0}, + [I(239,159)] = {64,0}, + [I(240,159)] = {64,0}, + [I(241,159)] = {64,0}, + [I(242,159)] = {64,0}, + [I(243,159)] = {64,0}, + [I(244,159)] = {64,0}, + [I(245,159)] = {64,0}, + [I(246,159)] = {64,0}, + [I(247,159)] = {64,0}, + [I(248,159)] = {64,0}, + [I(249,159)] = {64,0}, + [I(250,159)] = {64,0}, + [I(251,159)] = {64,0}, + [I(252,159)] = {64,0}, + [I(253,159)] = {64,0}, + [I(254,159)] = {64,0}, + [I(255,159)] = {64,0}, + [I(0,160)] = {64,0}, + [I(1,160)] = {64,0}, + [I(2,160)] = {64,0}, + [I(3,160)] = {64,0}, + [I(4,160)] = {64,0}, + [I(5,160)] = {64,0}, + [I(6,160)] = {64,0}, + [I(7,160)] = {64,0}, + [I(8,160)] = {64,0}, + [I(9,160)] = {64,0}, + [I(10,160)] = {64,0}, + [I(11,160)] = {64,0}, + [I(12,160)] = {64,0}, + [I(13,160)] = {64,0}, + [I(14,160)] = {64,0}, + [I(15,160)] = {64,0}, + [I(16,160)] = {64,0}, + [I(17,160)] = {64,0}, + [I(18,160)] = {64,0}, + [I(19,160)] = {64,0}, + [I(20,160)] = {64,0}, + [I(21,160)] = {64,0}, + [I(22,160)] = {64,0}, + [I(23,160)] = {64,0}, + [I(24,160)] = {64,0}, + [I(25,160)] = {64,0}, + [I(26,160)] = {64,0}, + [I(27,160)] = {64,0}, + [I(28,160)] = {64,0}, + [I(29,160)] = {64,0}, + [I(30,160)] = {64,0}, + [I(31,160)] = {64,0}, + [I(32,160)] = {28,0x53FFFDA}, + [I(33,160)] = {X32,0xFE3FFFDA}, + [I(34,160)] = {X32,0xFE7FFFDA}, + [I(35,160)] = {64,0}, + [I(36,160)] = {64,0}, + [I(37,160)] = {28,0x57FFFDA}, + [I(38,160)] = {30,0x3E3FFFDA}, + [I(39,160)] = {64,0}, + [I(40,160)] = {X32,0xFEBFFFDA}, + [I(41,160)] = {X32,0xFEFFFFDA}, + [I(42,160)] = {30,0x3E7FFFDA}, + [I(43,160)] = {64,0}, + [I(44,160)] = {30,0x3EBFFFDA}, + [I(45,160)] = {28,0x5BFFFDA}, + [I(46,160)] = {28,0x5FFFFDA}, + [I(47,160)] = {28,0x63FFFDA}, + [I(48,160)] = {27,0x3FFFDA}, + [I(49,160)] = {27,0x7FFFDA}, + [I(50,160)] = {27,0xBFFFDA}, + [I(51,160)] = {28,0x67FFFDA}, + [I(52,160)] = {28,0x6BFFFDA}, + [I(53,160)] = {28,0x6FFFFDA}, + [I(54,160)] = {28,0x73FFFDA}, + [I(55,160)] = {28,0x77FFFDA}, + [I(56,160)] = {28,0x7BFFFDA}, + [I(57,160)] = {28,0x7FFFFDA}, + [I(58,160)] = {29,0x173FFFDA}, + [I(59,160)] = {30,0x3EFFFFDA}, + [I(60,160)] = {64,0}, + [I(61,160)] = {28,0x83FFFDA}, + [I(62,160)] = {64,0}, + [I(63,160)] = {X32,0xFF3FFFDA}, + [I(64,160)] = {64,0}, + [I(65,160)] = {28,0x87FFFDA}, + [I(66,160)] = {29,0x177FFFDA}, + [I(67,160)] = {29,0x17BFFFDA}, + [I(68,160)] = {29,0x17FFFFDA}, + [I(69,160)] = {29,0x183FFFDA}, + [I(70,160)] = {29,0x187FFFDA}, + [I(71,160)] = {29,0x18BFFFDA}, + [I(72,160)] = {29,0x18FFFFDA}, + [I(73,160)] = {29,0x193FFFDA}, + [I(74,160)] = {29,0x197FFFDA}, + [I(75,160)] = {29,0x19BFFFDA}, + [I(76,160)] = {29,0x19FFFFDA}, + [I(77,160)] = {29,0x1A3FFFDA}, + [I(78,160)] = {29,0x1A7FFFDA}, + [I(79,160)] = {29,0x1ABFFFDA}, + [I(80,160)] = {29,0x1AFFFFDA}, + [I(81,160)] = {29,0x1B3FFFDA}, + [I(82,160)] = {29,0x1B7FFFDA}, + [I(83,160)] = {29,0x1BBFFFDA}, + [I(84,160)] = {29,0x1BFFFFDA}, + [I(85,160)] = {29,0x1C3FFFDA}, + [I(86,160)] = {29,0x1C7FFFDA}, + [I(87,160)] = {29,0x1CBFFFDA}, + [I(88,160)] = {30,0x3F3FFFDA}, + [I(89,160)] = {29,0x1CFFFFDA}, + [I(90,160)] = {30,0x3F7FFFDA}, + [I(91,160)] = {64,0}, + [I(92,160)] = {64,0}, + [I(93,160)] = {64,0}, + [I(94,160)] = {64,0}, + [I(95,160)] = {28,0x8BFFFDA}, + [I(96,160)] = {64,0}, + [I(97,160)] = {27,0xFFFFDA}, + [I(98,160)] = {28,0x8FFFFDA}, + [I(99,160)] = {27,0x13FFFDA}, + [I(100,160)] = {28,0x93FFFDA}, + [I(101,160)] = {27,0x17FFFDA}, + [I(102,160)] = {28,0x97FFFDA}, + [I(103,160)] = {28,0x9BFFFDA}, + [I(104,160)] = {28,0x9FFFFDA}, + [I(105,160)] = {27,0x1BFFFDA}, + [I(106,160)] = {29,0x1D3FFFDA}, + [I(107,160)] = {29,0x1D7FFFDA}, + [I(108,160)] = {28,0xA3FFFDA}, + [I(109,160)] = {28,0xA7FFFDA}, + [I(110,160)] = {28,0xABFFFDA}, + [I(111,160)] = {27,0x1FFFFDA}, + [I(112,160)] = {28,0xAFFFFDA}, + [I(113,160)] = {29,0x1DBFFFDA}, + [I(114,160)] = {28,0xB3FFFDA}, + [I(115,160)] = {27,0x23FFFDA}, + [I(116,160)] = {27,0x27FFFDA}, + [I(117,160)] = {28,0xB7FFFDA}, + [I(118,160)] = {29,0x1DFFFFDA}, + [I(119,160)] = {29,0x1E3FFFDA}, + [I(120,160)] = {29,0x1E7FFFDA}, + [I(121,160)] = {29,0x1EBFFFDA}, + [I(122,160)] = {29,0x1EFFFFDA}, + [I(123,160)] = {64,0}, + [I(124,160)] = {64,0}, + [I(125,160)] = {64,0}, + [I(126,160)] = {64,0}, + [I(127,160)] = {64,0}, + [I(128,160)] = {64,0}, + [I(129,160)] = {64,0}, + [I(130,160)] = {64,0}, + [I(131,160)] = {64,0}, + [I(132,160)] = {64,0}, + [I(133,160)] = {64,0}, + [I(134,160)] = {64,0}, + [I(135,160)] = {64,0}, + [I(136,160)] = {64,0}, + [I(137,160)] = {64,0}, + [I(138,160)] = {64,0}, + [I(139,160)] = {64,0}, + [I(140,160)] = {64,0}, + [I(141,160)] = {64,0}, + [I(142,160)] = {64,0}, + [I(143,160)] = {64,0}, + [I(144,160)] = {64,0}, + [I(145,160)] = {64,0}, + [I(146,160)] = {64,0}, + [I(147,160)] = {64,0}, + [I(148,160)] = {64,0}, + [I(149,160)] = {64,0}, + [I(150,160)] = {64,0}, + [I(151,160)] = {64,0}, + [I(152,160)] = {64,0}, + [I(153,160)] = {64,0}, + [I(154,160)] = {64,0}, + [I(155,160)] = {64,0}, + [I(156,160)] = {64,0}, + [I(157,160)] = {64,0}, + [I(158,160)] = {64,0}, + [I(159,160)] = {64,0}, + [I(160,160)] = {64,0}, + [I(161,160)] = {64,0}, + [I(162,160)] = {64,0}, + [I(163,160)] = {64,0}, + [I(164,160)] = {64,0}, + [I(165,160)] = {64,0}, + [I(166,160)] = {64,0}, + [I(167,160)] = {64,0}, + [I(168,160)] = {64,0}, + [I(169,160)] = {64,0}, + [I(170,160)] = {64,0}, + [I(171,160)] = {64,0}, + [I(172,160)] = {64,0}, + [I(173,160)] = {64,0}, + [I(174,160)] = {64,0}, + [I(175,160)] = {64,0}, + [I(176,160)] = {64,0}, + [I(177,160)] = {64,0}, + [I(178,160)] = {64,0}, + [I(179,160)] = {64,0}, + [I(180,160)] = {64,0}, + [I(181,160)] = {64,0}, + [I(182,160)] = {64,0}, + [I(183,160)] = {64,0}, + [I(184,160)] = {64,0}, + [I(185,160)] = {64,0}, + [I(186,160)] = {64,0}, + [I(187,160)] = {64,0}, + [I(188,160)] = {64,0}, + [I(189,160)] = {64,0}, + [I(190,160)] = {64,0}, + [I(191,160)] = {64,0}, + [I(192,160)] = {64,0}, + [I(193,160)] = {64,0}, + [I(194,160)] = {64,0}, + [I(195,160)] = {64,0}, + [I(196,160)] = {64,0}, + [I(197,160)] = {64,0}, + [I(198,160)] = {64,0}, + [I(199,160)] = {64,0}, + [I(200,160)] = {64,0}, + [I(201,160)] = {64,0}, + [I(202,160)] = {64,0}, + [I(203,160)] = {64,0}, + [I(204,160)] = {64,0}, + [I(205,160)] = {64,0}, + [I(206,160)] = {64,0}, + [I(207,160)] = {64,0}, + [I(208,160)] = {64,0}, + [I(209,160)] = {64,0}, + [I(210,160)] = {64,0}, + [I(211,160)] = {64,0}, + [I(212,160)] = {64,0}, + [I(213,160)] = {64,0}, + [I(214,160)] = {64,0}, + [I(215,160)] = {64,0}, + [I(216,160)] = {64,0}, + [I(217,160)] = {64,0}, + [I(218,160)] = {64,0}, + [I(219,160)] = {64,0}, + [I(220,160)] = {64,0}, + [I(221,160)] = {64,0}, + [I(222,160)] = {64,0}, + [I(223,160)] = {64,0}, + [I(224,160)] = {64,0}, + [I(225,160)] = {64,0}, + [I(226,160)] = {64,0}, + [I(227,160)] = {64,0}, + [I(228,160)] = {64,0}, + [I(229,160)] = {64,0}, + [I(230,160)] = {64,0}, + [I(231,160)] = {64,0}, + [I(232,160)] = {64,0}, + [I(233,160)] = {64,0}, + [I(234,160)] = {64,0}, + [I(235,160)] = {64,0}, + [I(236,160)] = {64,0}, + [I(237,160)] = {64,0}, + [I(238,160)] = {64,0}, + [I(239,160)] = {64,0}, + [I(240,160)] = {64,0}, + [I(241,160)] = {64,0}, + [I(242,160)] = {64,0}, + [I(243,160)] = {64,0}, + [I(244,160)] = {64,0}, + [I(245,160)] = {64,0}, + [I(246,160)] = {64,0}, + [I(247,160)] = {64,0}, + [I(248,160)] = {64,0}, + [I(249,160)] = {64,0}, + [I(250,160)] = {64,0}, + [I(251,160)] = {64,0}, + [I(252,160)] = {64,0}, + [I(253,160)] = {64,0}, + [I(254,160)] = {64,0}, + [I(255,160)] = {64,0}, + [I(0,161)] = {64,0}, + [I(1,161)] = {64,0}, + [I(2,161)] = {64,0}, + [I(3,161)] = {64,0}, + [I(4,161)] = {64,0}, + [I(5,161)] = {64,0}, + [I(6,161)] = {64,0}, + [I(7,161)] = {64,0}, + [I(8,161)] = {64,0}, + [I(9,161)] = {64,0}, + [I(10,161)] = {64,0}, + [I(11,161)] = {64,0}, + [I(12,161)] = {64,0}, + [I(13,161)] = {64,0}, + [I(14,161)] = {64,0}, + [I(15,161)] = {64,0}, + [I(16,161)] = {64,0}, + [I(17,161)] = {64,0}, + [I(18,161)] = {64,0}, + [I(19,161)] = {64,0}, + [I(20,161)] = {64,0}, + [I(21,161)] = {64,0}, + [I(22,161)] = {64,0}, + [I(23,161)] = {64,0}, + [I(24,161)] = {64,0}, + [I(25,161)] = {64,0}, + [I(26,161)] = {64,0}, + [I(27,161)] = {64,0}, + [I(28,161)] = {64,0}, + [I(29,161)] = {64,0}, + [I(30,161)] = {64,0}, + [I(31,161)] = {64,0}, + [I(32,161)] = {27,0x29FFFDD}, + [I(33,161)] = {31,0x7F1FFFDD}, + [I(34,161)] = {31,0x7F3FFFDD}, + [I(35,161)] = {64,0}, + [I(36,161)] = {64,0}, + [I(37,161)] = {27,0x2BFFFDD}, + [I(38,161)] = {29,0x1F1FFFDD}, + [I(39,161)] = {X32,0xFF5FFFDD}, + [I(40,161)] = {31,0x7F5FFFDD}, + [I(41,161)] = {31,0x7F7FFFDD}, + [I(42,161)] = {29,0x1F3FFFDD}, + [I(43,161)] = {X32,0xFF7FFFDD}, + [I(44,161)] = {29,0x1F5FFFDD}, + [I(45,161)] = {27,0x2DFFFDD}, + [I(46,161)] = {27,0x2FFFFDD}, + [I(47,161)] = {27,0x31FFFDD}, + [I(48,161)] = {26,0x1FFFDD}, + [I(49,161)] = {26,0x3FFFDD}, + [I(50,161)] = {26,0x5FFFDD}, + [I(51,161)] = {27,0x33FFFDD}, + [I(52,161)] = {27,0x35FFFDD}, + [I(53,161)] = {27,0x37FFFDD}, + [I(54,161)] = {27,0x39FFFDD}, + [I(55,161)] = {27,0x3BFFFDD}, + [I(56,161)] = {27,0x3DFFFDD}, + [I(57,161)] = {27,0x3FFFFDD}, + [I(58,161)] = {28,0xB9FFFDD}, + [I(59,161)] = {29,0x1F7FFFDD}, + [I(60,161)] = {64,0}, + [I(61,161)] = {27,0x41FFFDD}, + [I(62,161)] = {64,0}, + [I(63,161)] = {31,0x7F9FFFDD}, + [I(64,161)] = {64,0}, + [I(65,161)] = {27,0x43FFFDD}, + [I(66,161)] = {28,0xBBFFFDD}, + [I(67,161)] = {28,0xBDFFFDD}, + [I(68,161)] = {28,0xBFFFFDD}, + [I(69,161)] = {28,0xC1FFFDD}, + [I(70,161)] = {28,0xC3FFFDD}, + [I(71,161)] = {28,0xC5FFFDD}, + [I(72,161)] = {28,0xC7FFFDD}, + [I(73,161)] = {28,0xC9FFFDD}, + [I(74,161)] = {28,0xCBFFFDD}, + [I(75,161)] = {28,0xCDFFFDD}, + [I(76,161)] = {28,0xCFFFFDD}, + [I(77,161)] = {28,0xD1FFFDD}, + [I(78,161)] = {28,0xD3FFFDD}, + [I(79,161)] = {28,0xD5FFFDD}, + [I(80,161)] = {28,0xD7FFFDD}, + [I(81,161)] = {28,0xD9FFFDD}, + [I(82,161)] = {28,0xDBFFFDD}, + [I(83,161)] = {28,0xDDFFFDD}, + [I(84,161)] = {28,0xDFFFFDD}, + [I(85,161)] = {28,0xE1FFFDD}, + [I(86,161)] = {28,0xE3FFFDD}, + [I(87,161)] = {28,0xE5FFFDD}, + [I(88,161)] = {29,0x1F9FFFDD}, + [I(89,161)] = {28,0xE7FFFDD}, + [I(90,161)] = {29,0x1FBFFFDD}, + [I(91,161)] = {64,0}, + [I(92,161)] = {64,0}, + [I(93,161)] = {64,0}, + [I(94,161)] = {64,0}, + [I(95,161)] = {27,0x45FFFDD}, + [I(96,161)] = {64,0}, + [I(97,161)] = {26,0x7FFFDD}, + [I(98,161)] = {27,0x47FFFDD}, + [I(99,161)] = {26,0x9FFFDD}, + [I(100,161)] = {27,0x49FFFDD}, + [I(101,161)] = {26,0xBFFFDD}, + [I(102,161)] = {27,0x4BFFFDD}, + [I(103,161)] = {27,0x4DFFFDD}, + [I(104,161)] = {27,0x4FFFFDD}, + [I(105,161)] = {26,0xDFFFDD}, + [I(106,161)] = {28,0xE9FFFDD}, + [I(107,161)] = {28,0xEBFFFDD}, + [I(108,161)] = {27,0x51FFFDD}, + [I(109,161)] = {27,0x53FFFDD}, + [I(110,161)] = {27,0x55FFFDD}, + [I(111,161)] = {26,0xFFFFDD}, + [I(112,161)] = {27,0x57FFFDD}, + [I(113,161)] = {28,0xEDFFFDD}, + [I(114,161)] = {27,0x59FFFDD}, + [I(115,161)] = {26,0x11FFFDD}, + [I(116,161)] = {26,0x13FFFDD}, + [I(117,161)] = {27,0x5BFFFDD}, + [I(118,161)] = {28,0xEFFFFDD}, + [I(119,161)] = {28,0xF1FFFDD}, + [I(120,161)] = {28,0xF3FFFDD}, + [I(121,161)] = {28,0xF5FFFDD}, + [I(122,161)] = {28,0xF7FFFDD}, + [I(123,161)] = {64,0}, + [I(124,161)] = {X32,0xFF9FFFDD}, + [I(125,161)] = {64,0}, + [I(126,161)] = {64,0}, + [I(127,161)] = {64,0}, + [I(128,161)] = {64,0}, + [I(129,161)] = {64,0}, + [I(130,161)] = {64,0}, + [I(131,161)] = {64,0}, + [I(132,161)] = {64,0}, + [I(133,161)] = {64,0}, + [I(134,161)] = {64,0}, + [I(135,161)] = {64,0}, + [I(136,161)] = {64,0}, + [I(137,161)] = {64,0}, + [I(138,161)] = {64,0}, + [I(139,161)] = {64,0}, + [I(140,161)] = {64,0}, + [I(141,161)] = {64,0}, + [I(142,161)] = {64,0}, + [I(143,161)] = {64,0}, + [I(144,161)] = {64,0}, + [I(145,161)] = {64,0}, + [I(146,161)] = {64,0}, + [I(147,161)] = {64,0}, + [I(148,161)] = {64,0}, + [I(149,161)] = {64,0}, + [I(150,161)] = {64,0}, + [I(151,161)] = {64,0}, + [I(152,161)] = {64,0}, + [I(153,161)] = {64,0}, + [I(154,161)] = {64,0}, + [I(155,161)] = {64,0}, + [I(156,161)] = {64,0}, + [I(157,161)] = {64,0}, + [I(158,161)] = {64,0}, + [I(159,161)] = {64,0}, + [I(160,161)] = {64,0}, + [I(161,161)] = {64,0}, + [I(162,161)] = {64,0}, + [I(163,161)] = {64,0}, + [I(164,161)] = {64,0}, + [I(165,161)] = {64,0}, + [I(166,161)] = {64,0}, + [I(167,161)] = {64,0}, + [I(168,161)] = {64,0}, + [I(169,161)] = {64,0}, + [I(170,161)] = {64,0}, + [I(171,161)] = {64,0}, + [I(172,161)] = {64,0}, + [I(173,161)] = {64,0}, + [I(174,161)] = {64,0}, + [I(175,161)] = {64,0}, + [I(176,161)] = {64,0}, + [I(177,161)] = {64,0}, + [I(178,161)] = {64,0}, + [I(179,161)] = {64,0}, + [I(180,161)] = {64,0}, + [I(181,161)] = {64,0}, + [I(182,161)] = {64,0}, + [I(183,161)] = {64,0}, + [I(184,161)] = {64,0}, + [I(185,161)] = {64,0}, + [I(186,161)] = {64,0}, + [I(187,161)] = {64,0}, + [I(188,161)] = {64,0}, + [I(189,161)] = {64,0}, + [I(190,161)] = {64,0}, + [I(191,161)] = {64,0}, + [I(192,161)] = {64,0}, + [I(193,161)] = {64,0}, + [I(194,161)] = {64,0}, + [I(195,161)] = {64,0}, + [I(196,161)] = {64,0}, + [I(197,161)] = {64,0}, + [I(198,161)] = {64,0}, + [I(199,161)] = {64,0}, + [I(200,161)] = {64,0}, + [I(201,161)] = {64,0}, + [I(202,161)] = {64,0}, + [I(203,161)] = {64,0}, + [I(204,161)] = {64,0}, + [I(205,161)] = {64,0}, + [I(206,161)] = {64,0}, + [I(207,161)] = {64,0}, + [I(208,161)] = {64,0}, + [I(209,161)] = {64,0}, + [I(210,161)] = {64,0}, + [I(211,161)] = {64,0}, + [I(212,161)] = {64,0}, + [I(213,161)] = {64,0}, + [I(214,161)] = {64,0}, + [I(215,161)] = {64,0}, + [I(216,161)] = {64,0}, + [I(217,161)] = {64,0}, + [I(218,161)] = {64,0}, + [I(219,161)] = {64,0}, + [I(220,161)] = {64,0}, + [I(221,161)] = {64,0}, + [I(222,161)] = {64,0}, + [I(223,161)] = {64,0}, + [I(224,161)] = {64,0}, + [I(225,161)] = {64,0}, + [I(226,161)] = {64,0}, + [I(227,161)] = {64,0}, + [I(228,161)] = {64,0}, + [I(229,161)] = {64,0}, + [I(230,161)] = {64,0}, + [I(231,161)] = {64,0}, + [I(232,161)] = {64,0}, + [I(233,161)] = {64,0}, + [I(234,161)] = {64,0}, + [I(235,161)] = {64,0}, + [I(236,161)] = {64,0}, + [I(237,161)] = {64,0}, + [I(238,161)] = {64,0}, + [I(239,161)] = {64,0}, + [I(240,161)] = {64,0}, + [I(241,161)] = {64,0}, + [I(242,161)] = {64,0}, + [I(243,161)] = {64,0}, + [I(244,161)] = {64,0}, + [I(245,161)] = {64,0}, + [I(246,161)] = {64,0}, + [I(247,161)] = {64,0}, + [I(248,161)] = {64,0}, + [I(249,161)] = {64,0}, + [I(250,161)] = {64,0}, + [I(251,161)] = {64,0}, + [I(252,161)] = {64,0}, + [I(253,161)] = {64,0}, + [I(254,161)] = {64,0}, + [I(255,161)] = {64,0}, + [I(0,162)] = {64,0}, + [I(1,162)] = {64,0}, + [I(2,162)] = {64,0}, + [I(3,162)] = {64,0}, + [I(4,162)] = {64,0}, + [I(5,162)] = {64,0}, + [I(6,162)] = {64,0}, + [I(7,162)] = {64,0}, + [I(8,162)] = {64,0}, + [I(9,162)] = {64,0}, + [I(10,162)] = {64,0}, + [I(11,162)] = {64,0}, + [I(12,162)] = {64,0}, + [I(13,162)] = {64,0}, + [I(14,162)] = {64,0}, + [I(15,162)] = {64,0}, + [I(16,162)] = {64,0}, + [I(17,162)] = {64,0}, + [I(18,162)] = {64,0}, + [I(19,162)] = {64,0}, + [I(20,162)] = {64,0}, + [I(21,162)] = {64,0}, + [I(22,162)] = {64,0}, + [I(23,162)] = {64,0}, + [I(24,162)] = {64,0}, + [I(25,162)] = {64,0}, + [I(26,162)] = {64,0}, + [I(27,162)] = {64,0}, + [I(28,162)] = {64,0}, + [I(29,162)] = {64,0}, + [I(30,162)] = {64,0}, + [I(31,162)] = {64,0}, + [I(32,162)] = {26,0x14FFFE9}, + [I(33,162)] = {30,0x3F8FFFE9}, + [I(34,162)] = {30,0x3F9FFFE9}, + [I(35,162)] = {X32,0xFFAFFFE9}, + [I(36,162)] = {64,0}, + [I(37,162)] = {26,0x15FFFE9}, + [I(38,162)] = {28,0xF8FFFE9}, + [I(39,162)] = {31,0x7FAFFFE9}, + [I(40,162)] = {30,0x3FAFFFE9}, + [I(41,162)] = {30,0x3FBFFFE9}, + [I(42,162)] = {28,0xF9FFFE9}, + [I(43,162)] = {31,0x7FBFFFE9}, + [I(44,162)] = {28,0xFAFFFE9}, + [I(45,162)] = {26,0x16FFFE9}, + [I(46,162)] = {26,0x17FFFE9}, + [I(47,162)] = {26,0x18FFFE9}, + [I(48,162)] = {25,0xFFFE9}, + [I(49,162)] = {25,0x1FFFE9}, + [I(50,162)] = {25,0x2FFFE9}, + [I(51,162)] = {26,0x19FFFE9}, + [I(52,162)] = {26,0x1AFFFE9}, + [I(53,162)] = {26,0x1BFFFE9}, + [I(54,162)] = {26,0x1CFFFE9}, + [I(55,162)] = {26,0x1DFFFE9}, + [I(56,162)] = {26,0x1EFFFE9}, + [I(57,162)] = {26,0x1FFFFE9}, + [I(58,162)] = {27,0x5CFFFE9}, + [I(59,162)] = {28,0xFBFFFE9}, + [I(60,162)] = {64,0}, + [I(61,162)] = {26,0x20FFFE9}, + [I(62,162)] = {X32,0xFFBFFFE9}, + [I(63,162)] = {30,0x3FCFFFE9}, + [I(64,162)] = {64,0}, + [I(65,162)] = {26,0x21FFFE9}, + [I(66,162)] = {27,0x5DFFFE9}, + [I(67,162)] = {27,0x5EFFFE9}, + [I(68,162)] = {27,0x5FFFFE9}, + [I(69,162)] = {27,0x60FFFE9}, + [I(70,162)] = {27,0x61FFFE9}, + [I(71,162)] = {27,0x62FFFE9}, + [I(72,162)] = {27,0x63FFFE9}, + [I(73,162)] = {27,0x64FFFE9}, + [I(74,162)] = {27,0x65FFFE9}, + [I(75,162)] = {27,0x66FFFE9}, + [I(76,162)] = {27,0x67FFFE9}, + [I(77,162)] = {27,0x68FFFE9}, + [I(78,162)] = {27,0x69FFFE9}, + [I(79,162)] = {27,0x6AFFFE9}, + [I(80,162)] = {27,0x6BFFFE9}, + [I(81,162)] = {27,0x6CFFFE9}, + [I(82,162)] = {27,0x6DFFFE9}, + [I(83,162)] = {27,0x6EFFFE9}, + [I(84,162)] = {27,0x6FFFFE9}, + [I(85,162)] = {27,0x70FFFE9}, + [I(86,162)] = {27,0x71FFFE9}, + [I(87,162)] = {27,0x72FFFE9}, + [I(88,162)] = {28,0xFCFFFE9}, + [I(89,162)] = {27,0x73FFFE9}, + [I(90,162)] = {28,0xFDFFFE9}, + [I(91,162)] = {64,0}, + [I(92,162)] = {64,0}, + [I(93,162)] = {64,0}, + [I(94,162)] = {64,0}, + [I(95,162)] = {26,0x22FFFE9}, + [I(96,162)] = {64,0}, + [I(97,162)] = {25,0x3FFFE9}, + [I(98,162)] = {26,0x23FFFE9}, + [I(99,162)] = {25,0x4FFFE9}, + [I(100,162)] = {26,0x24FFFE9}, + [I(101,162)] = {25,0x5FFFE9}, + [I(102,162)] = {26,0x25FFFE9}, + [I(103,162)] = {26,0x26FFFE9}, + [I(104,162)] = {26,0x27FFFE9}, + [I(105,162)] = {25,0x6FFFE9}, + [I(106,162)] = {27,0x74FFFE9}, + [I(107,162)] = {27,0x75FFFE9}, + [I(108,162)] = {26,0x28FFFE9}, + [I(109,162)] = {26,0x29FFFE9}, + [I(110,162)] = {26,0x2AFFFE9}, + [I(111,162)] = {25,0x7FFFE9}, + [I(112,162)] = {26,0x2BFFFE9}, + [I(113,162)] = {27,0x76FFFE9}, + [I(114,162)] = {26,0x2CFFFE9}, + [I(115,162)] = {25,0x8FFFE9}, + [I(116,162)] = {25,0x9FFFE9}, + [I(117,162)] = {26,0x2DFFFE9}, + [I(118,162)] = {27,0x77FFFE9}, + [I(119,162)] = {27,0x78FFFE9}, + [I(120,162)] = {27,0x79FFFE9}, + [I(121,162)] = {27,0x7AFFFE9}, + [I(122,162)] = {27,0x7BFFFE9}, + [I(123,162)] = {64,0}, + [I(124,162)] = {31,0x7FCFFFE9}, + [I(125,162)] = {64,0}, + [I(126,162)] = {64,0}, + [I(127,162)] = {64,0}, + [I(128,162)] = {64,0}, + [I(129,162)] = {64,0}, + [I(130,162)] = {64,0}, + [I(131,162)] = {64,0}, + [I(132,162)] = {64,0}, + [I(133,162)] = {64,0}, + [I(134,162)] = {64,0}, + [I(135,162)] = {64,0}, + [I(136,162)] = {64,0}, + [I(137,162)] = {64,0}, + [I(138,162)] = {64,0}, + [I(139,162)] = {64,0}, + [I(140,162)] = {64,0}, + [I(141,162)] = {64,0}, + [I(142,162)] = {64,0}, + [I(143,162)] = {64,0}, + [I(144,162)] = {64,0}, + [I(145,162)] = {64,0}, + [I(146,162)] = {64,0}, + [I(147,162)] = {64,0}, + [I(148,162)] = {64,0}, + [I(149,162)] = {64,0}, + [I(150,162)] = {64,0}, + [I(151,162)] = {64,0}, + [I(152,162)] = {64,0}, + [I(153,162)] = {64,0}, + [I(154,162)] = {64,0}, + [I(155,162)] = {64,0}, + [I(156,162)] = {64,0}, + [I(157,162)] = {64,0}, + [I(158,162)] = {64,0}, + [I(159,162)] = {64,0}, + [I(160,162)] = {64,0}, + [I(161,162)] = {64,0}, + [I(162,162)] = {64,0}, + [I(163,162)] = {64,0}, + [I(164,162)] = {64,0}, + [I(165,162)] = {64,0}, + [I(166,162)] = {64,0}, + [I(167,162)] = {64,0}, + [I(168,162)] = {64,0}, + [I(169,162)] = {64,0}, + [I(170,162)] = {64,0}, + [I(171,162)] = {64,0}, + [I(172,162)] = {64,0}, + [I(173,162)] = {64,0}, + [I(174,162)] = {64,0}, + [I(175,162)] = {64,0}, + [I(176,162)] = {64,0}, + [I(177,162)] = {64,0}, + [I(178,162)] = {64,0}, + [I(179,162)] = {64,0}, + [I(180,162)] = {64,0}, + [I(181,162)] = {64,0}, + [I(182,162)] = {64,0}, + [I(183,162)] = {64,0}, + [I(184,162)] = {64,0}, + [I(185,162)] = {64,0}, + [I(186,162)] = {64,0}, + [I(187,162)] = {64,0}, + [I(188,162)] = {64,0}, + [I(189,162)] = {64,0}, + [I(190,162)] = {64,0}, + [I(191,162)] = {64,0}, + [I(192,162)] = {64,0}, + [I(193,162)] = {64,0}, + [I(194,162)] = {64,0}, + [I(195,162)] = {64,0}, + [I(196,162)] = {64,0}, + [I(197,162)] = {64,0}, + [I(198,162)] = {64,0}, + [I(199,162)] = {64,0}, + [I(200,162)] = {64,0}, + [I(201,162)] = {64,0}, + [I(202,162)] = {64,0}, + [I(203,162)] = {64,0}, + [I(204,162)] = {64,0}, + [I(205,162)] = {64,0}, + [I(206,162)] = {64,0}, + [I(207,162)] = {64,0}, + [I(208,162)] = {64,0}, + [I(209,162)] = {64,0}, + [I(210,162)] = {64,0}, + [I(211,162)] = {64,0}, + [I(212,162)] = {64,0}, + [I(213,162)] = {64,0}, + [I(214,162)] = {64,0}, + [I(215,162)] = {64,0}, + [I(216,162)] = {64,0}, + [I(217,162)] = {64,0}, + [I(218,162)] = {64,0}, + [I(219,162)] = {64,0}, + [I(220,162)] = {64,0}, + [I(221,162)] = {64,0}, + [I(222,162)] = {64,0}, + [I(223,162)] = {64,0}, + [I(224,162)] = {64,0}, + [I(225,162)] = {64,0}, + [I(226,162)] = {64,0}, + [I(227,162)] = {64,0}, + [I(228,162)] = {64,0}, + [I(229,162)] = {64,0}, + [I(230,162)] = {64,0}, + [I(231,162)] = {64,0}, + [I(232,162)] = {64,0}, + [I(233,162)] = {64,0}, + [I(234,162)] = {64,0}, + [I(235,162)] = {64,0}, + [I(236,162)] = {64,0}, + [I(237,162)] = {64,0}, + [I(238,162)] = {64,0}, + [I(239,162)] = {64,0}, + [I(240,162)] = {64,0}, + [I(241,162)] = {64,0}, + [I(242,162)] = {64,0}, + [I(243,162)] = {64,0}, + [I(244,162)] = {64,0}, + [I(245,162)] = {64,0}, + [I(246,162)] = {64,0}, + [I(247,162)] = {64,0}, + [I(248,162)] = {64,0}, + [I(249,162)] = {64,0}, + [I(250,162)] = {64,0}, + [I(251,162)] = {64,0}, + [I(252,162)] = {64,0}, + [I(253,162)] = {64,0}, + [I(254,162)] = {64,0}, + [I(255,162)] = {64,0}, + [I(0,163)] = {64,0}, + [I(1,163)] = {64,0}, + [I(2,163)] = {64,0}, + [I(3,163)] = {64,0}, + [I(4,163)] = {64,0}, + [I(5,163)] = {64,0}, + [I(6,163)] = {64,0}, + [I(7,163)] = {64,0}, + [I(8,163)] = {64,0}, + [I(9,163)] = {64,0}, + [I(10,163)] = {64,0}, + [I(11,163)] = {64,0}, + [I(12,163)] = {64,0}, + [I(13,163)] = {64,0}, + [I(14,163)] = {64,0}, + [I(15,163)] = {64,0}, + [I(16,163)] = {64,0}, + [I(17,163)] = {64,0}, + [I(18,163)] = {64,0}, + [I(19,163)] = {64,0}, + [I(20,163)] = {64,0}, + [I(21,163)] = {64,0}, + [I(22,163)] = {64,0}, + [I(23,163)] = {64,0}, + [I(24,163)] = {64,0}, + [I(25,163)] = {64,0}, + [I(26,163)] = {64,0}, + [I(27,163)] = {64,0}, + [I(28,163)] = {64,0}, + [I(29,163)] = {64,0}, + [I(30,163)] = {64,0}, + [I(31,163)] = {64,0}, + [I(32,163)] = {28,0x53FFFDB}, + [I(33,163)] = {X32,0xFE3FFFDB}, + [I(34,163)] = {X32,0xFE7FFFDB}, + [I(35,163)] = {64,0}, + [I(36,163)] = {64,0}, + [I(37,163)] = {28,0x57FFFDB}, + [I(38,163)] = {30,0x3E3FFFDB}, + [I(39,163)] = {64,0}, + [I(40,163)] = {X32,0xFEBFFFDB}, + [I(41,163)] = {X32,0xFEFFFFDB}, + [I(42,163)] = {30,0x3E7FFFDB}, + [I(43,163)] = {64,0}, + [I(44,163)] = {30,0x3EBFFFDB}, + [I(45,163)] = {28,0x5BFFFDB}, + [I(46,163)] = {28,0x5FFFFDB}, + [I(47,163)] = {28,0x63FFFDB}, + [I(48,163)] = {27,0x3FFFDB}, + [I(49,163)] = {27,0x7FFFDB}, + [I(50,163)] = {27,0xBFFFDB}, + [I(51,163)] = {28,0x67FFFDB}, + [I(52,163)] = {28,0x6BFFFDB}, + [I(53,163)] = {28,0x6FFFFDB}, + [I(54,163)] = {28,0x73FFFDB}, + [I(55,163)] = {28,0x77FFFDB}, + [I(56,163)] = {28,0x7BFFFDB}, + [I(57,163)] = {28,0x7FFFFDB}, + [I(58,163)] = {29,0x173FFFDB}, + [I(59,163)] = {30,0x3EFFFFDB}, + [I(60,163)] = {64,0}, + [I(61,163)] = {28,0x83FFFDB}, + [I(62,163)] = {64,0}, + [I(63,163)] = {X32,0xFF3FFFDB}, + [I(64,163)] = {64,0}, + [I(65,163)] = {28,0x87FFFDB}, + [I(66,163)] = {29,0x177FFFDB}, + [I(67,163)] = {29,0x17BFFFDB}, + [I(68,163)] = {29,0x17FFFFDB}, + [I(69,163)] = {29,0x183FFFDB}, + [I(70,163)] = {29,0x187FFFDB}, + [I(71,163)] = {29,0x18BFFFDB}, + [I(72,163)] = {29,0x18FFFFDB}, + [I(73,163)] = {29,0x193FFFDB}, + [I(74,163)] = {29,0x197FFFDB}, + [I(75,163)] = {29,0x19BFFFDB}, + [I(76,163)] = {29,0x19FFFFDB}, + [I(77,163)] = {29,0x1A3FFFDB}, + [I(78,163)] = {29,0x1A7FFFDB}, + [I(79,163)] = {29,0x1ABFFFDB}, + [I(80,163)] = {29,0x1AFFFFDB}, + [I(81,163)] = {29,0x1B3FFFDB}, + [I(82,163)] = {29,0x1B7FFFDB}, + [I(83,163)] = {29,0x1BBFFFDB}, + [I(84,163)] = {29,0x1BFFFFDB}, + [I(85,163)] = {29,0x1C3FFFDB}, + [I(86,163)] = {29,0x1C7FFFDB}, + [I(87,163)] = {29,0x1CBFFFDB}, + [I(88,163)] = {30,0x3F3FFFDB}, + [I(89,163)] = {29,0x1CFFFFDB}, + [I(90,163)] = {30,0x3F7FFFDB}, + [I(91,163)] = {64,0}, + [I(92,163)] = {64,0}, + [I(93,163)] = {64,0}, + [I(94,163)] = {64,0}, + [I(95,163)] = {28,0x8BFFFDB}, + [I(96,163)] = {64,0}, + [I(97,163)] = {27,0xFFFFDB}, + [I(98,163)] = {28,0x8FFFFDB}, + [I(99,163)] = {27,0x13FFFDB}, + [I(100,163)] = {28,0x93FFFDB}, + [I(101,163)] = {27,0x17FFFDB}, + [I(102,163)] = {28,0x97FFFDB}, + [I(103,163)] = {28,0x9BFFFDB}, + [I(104,163)] = {28,0x9FFFFDB}, + [I(105,163)] = {27,0x1BFFFDB}, + [I(106,163)] = {29,0x1D3FFFDB}, + [I(107,163)] = {29,0x1D7FFFDB}, + [I(108,163)] = {28,0xA3FFFDB}, + [I(109,163)] = {28,0xA7FFFDB}, + [I(110,163)] = {28,0xABFFFDB}, + [I(111,163)] = {27,0x1FFFFDB}, + [I(112,163)] = {28,0xAFFFFDB}, + [I(113,163)] = {29,0x1DBFFFDB}, + [I(114,163)] = {28,0xB3FFFDB}, + [I(115,163)] = {27,0x23FFFDB}, + [I(116,163)] = {27,0x27FFFDB}, + [I(117,163)] = {28,0xB7FFFDB}, + [I(118,163)] = {29,0x1DFFFFDB}, + [I(119,163)] = {29,0x1E3FFFDB}, + [I(120,163)] = {29,0x1E7FFFDB}, + [I(121,163)] = {29,0x1EBFFFDB}, + [I(122,163)] = {29,0x1EFFFFDB}, + [I(123,163)] = {64,0}, + [I(124,163)] = {64,0}, + [I(125,163)] = {64,0}, + [I(126,163)] = {64,0}, + [I(127,163)] = {64,0}, + [I(128,163)] = {64,0}, + [I(129,163)] = {64,0}, + [I(130,163)] = {64,0}, + [I(131,163)] = {64,0}, + [I(132,163)] = {64,0}, + [I(133,163)] = {64,0}, + [I(134,163)] = {64,0}, + [I(135,163)] = {64,0}, + [I(136,163)] = {64,0}, + [I(137,163)] = {64,0}, + [I(138,163)] = {64,0}, + [I(139,163)] = {64,0}, + [I(140,163)] = {64,0}, + [I(141,163)] = {64,0}, + [I(142,163)] = {64,0}, + [I(143,163)] = {64,0}, + [I(144,163)] = {64,0}, + [I(145,163)] = {64,0}, + [I(146,163)] = {64,0}, + [I(147,163)] = {64,0}, + [I(148,163)] = {64,0}, + [I(149,163)] = {64,0}, + [I(150,163)] = {64,0}, + [I(151,163)] = {64,0}, + [I(152,163)] = {64,0}, + [I(153,163)] = {64,0}, + [I(154,163)] = {64,0}, + [I(155,163)] = {64,0}, + [I(156,163)] = {64,0}, + [I(157,163)] = {64,0}, + [I(158,163)] = {64,0}, + [I(159,163)] = {64,0}, + [I(160,163)] = {64,0}, + [I(161,163)] = {64,0}, + [I(162,163)] = {64,0}, + [I(163,163)] = {64,0}, + [I(164,163)] = {64,0}, + [I(165,163)] = {64,0}, + [I(166,163)] = {64,0}, + [I(167,163)] = {64,0}, + [I(168,163)] = {64,0}, + [I(169,163)] = {64,0}, + [I(170,163)] = {64,0}, + [I(171,163)] = {64,0}, + [I(172,163)] = {64,0}, + [I(173,163)] = {64,0}, + [I(174,163)] = {64,0}, + [I(175,163)] = {64,0}, + [I(176,163)] = {64,0}, + [I(177,163)] = {64,0}, + [I(178,163)] = {64,0}, + [I(179,163)] = {64,0}, + [I(180,163)] = {64,0}, + [I(181,163)] = {64,0}, + [I(182,163)] = {64,0}, + [I(183,163)] = {64,0}, + [I(184,163)] = {64,0}, + [I(185,163)] = {64,0}, + [I(186,163)] = {64,0}, + [I(187,163)] = {64,0}, + [I(188,163)] = {64,0}, + [I(189,163)] = {64,0}, + [I(190,163)] = {64,0}, + [I(191,163)] = {64,0}, + [I(192,163)] = {64,0}, + [I(193,163)] = {64,0}, + [I(194,163)] = {64,0}, + [I(195,163)] = {64,0}, + [I(196,163)] = {64,0}, + [I(197,163)] = {64,0}, + [I(198,163)] = {64,0}, + [I(199,163)] = {64,0}, + [I(200,163)] = {64,0}, + [I(201,163)] = {64,0}, + [I(202,163)] = {64,0}, + [I(203,163)] = {64,0}, + [I(204,163)] = {64,0}, + [I(205,163)] = {64,0}, + [I(206,163)] = {64,0}, + [I(207,163)] = {64,0}, + [I(208,163)] = {64,0}, + [I(209,163)] = {64,0}, + [I(210,163)] = {64,0}, + [I(211,163)] = {64,0}, + [I(212,163)] = {64,0}, + [I(213,163)] = {64,0}, + [I(214,163)] = {64,0}, + [I(215,163)] = {64,0}, + [I(216,163)] = {64,0}, + [I(217,163)] = {64,0}, + [I(218,163)] = {64,0}, + [I(219,163)] = {64,0}, + [I(220,163)] = {64,0}, + [I(221,163)] = {64,0}, + [I(222,163)] = {64,0}, + [I(223,163)] = {64,0}, + [I(224,163)] = {64,0}, + [I(225,163)] = {64,0}, + [I(226,163)] = {64,0}, + [I(227,163)] = {64,0}, + [I(228,163)] = {64,0}, + [I(229,163)] = {64,0}, + [I(230,163)] = {64,0}, + [I(231,163)] = {64,0}, + [I(232,163)] = {64,0}, + [I(233,163)] = {64,0}, + [I(234,163)] = {64,0}, + [I(235,163)] = {64,0}, + [I(236,163)] = {64,0}, + [I(237,163)] = {64,0}, + [I(238,163)] = {64,0}, + [I(239,163)] = {64,0}, + [I(240,163)] = {64,0}, + [I(241,163)] = {64,0}, + [I(242,163)] = {64,0}, + [I(243,163)] = {64,0}, + [I(244,163)] = {64,0}, + [I(245,163)] = {64,0}, + [I(246,163)] = {64,0}, + [I(247,163)] = {64,0}, + [I(248,163)] = {64,0}, + [I(249,163)] = {64,0}, + [I(250,163)] = {64,0}, + [I(251,163)] = {64,0}, + [I(252,163)] = {64,0}, + [I(253,163)] = {64,0}, + [I(254,163)] = {64,0}, + [I(255,163)] = {64,0}, + [I(0,164)] = {64,0}, + [I(1,164)] = {64,0}, + [I(2,164)] = {64,0}, + [I(3,164)] = {64,0}, + [I(4,164)] = {64,0}, + [I(5,164)] = {64,0}, + [I(6,164)] = {64,0}, + [I(7,164)] = {64,0}, + [I(8,164)] = {64,0}, + [I(9,164)] = {64,0}, + [I(10,164)] = {64,0}, + [I(11,164)] = {64,0}, + [I(12,164)] = {64,0}, + [I(13,164)] = {64,0}, + [I(14,164)] = {64,0}, + [I(15,164)] = {64,0}, + [I(16,164)] = {64,0}, + [I(17,164)] = {64,0}, + [I(18,164)] = {64,0}, + [I(19,164)] = {64,0}, + [I(20,164)] = {64,0}, + [I(21,164)] = {64,0}, + [I(22,164)] = {64,0}, + [I(23,164)] = {64,0}, + [I(24,164)] = {64,0}, + [I(25,164)] = {64,0}, + [I(26,164)] = {64,0}, + [I(27,164)] = {64,0}, + [I(28,164)] = {64,0}, + [I(29,164)] = {64,0}, + [I(30,164)] = {64,0}, + [I(31,164)] = {64,0}, + [I(32,164)] = {28,0x53FFFDC}, + [I(33,164)] = {X32,0xFE3FFFDC}, + [I(34,164)] = {X32,0xFE7FFFDC}, + [I(35,164)] = {64,0}, + [I(36,164)] = {64,0}, + [I(37,164)] = {28,0x57FFFDC}, + [I(38,164)] = {30,0x3E3FFFDC}, + [I(39,164)] = {64,0}, + [I(40,164)] = {X32,0xFEBFFFDC}, + [I(41,164)] = {X32,0xFEFFFFDC}, + [I(42,164)] = {30,0x3E7FFFDC}, + [I(43,164)] = {64,0}, + [I(44,164)] = {30,0x3EBFFFDC}, + [I(45,164)] = {28,0x5BFFFDC}, + [I(46,164)] = {28,0x5FFFFDC}, + [I(47,164)] = {28,0x63FFFDC}, + [I(48,164)] = {27,0x3FFFDC}, + [I(49,164)] = {27,0x7FFFDC}, + [I(50,164)] = {27,0xBFFFDC}, + [I(51,164)] = {28,0x67FFFDC}, + [I(52,164)] = {28,0x6BFFFDC}, + [I(53,164)] = {28,0x6FFFFDC}, + [I(54,164)] = {28,0x73FFFDC}, + [I(55,164)] = {28,0x77FFFDC}, + [I(56,164)] = {28,0x7BFFFDC}, + [I(57,164)] = {28,0x7FFFFDC}, + [I(58,164)] = {29,0x173FFFDC}, + [I(59,164)] = {30,0x3EFFFFDC}, + [I(60,164)] = {64,0}, + [I(61,164)] = {28,0x83FFFDC}, + [I(62,164)] = {64,0}, + [I(63,164)] = {X32,0xFF3FFFDC}, + [I(64,164)] = {64,0}, + [I(65,164)] = {28,0x87FFFDC}, + [I(66,164)] = {29,0x177FFFDC}, + [I(67,164)] = {29,0x17BFFFDC}, + [I(68,164)] = {29,0x17FFFFDC}, + [I(69,164)] = {29,0x183FFFDC}, + [I(70,164)] = {29,0x187FFFDC}, + [I(71,164)] = {29,0x18BFFFDC}, + [I(72,164)] = {29,0x18FFFFDC}, + [I(73,164)] = {29,0x193FFFDC}, + [I(74,164)] = {29,0x197FFFDC}, + [I(75,164)] = {29,0x19BFFFDC}, + [I(76,164)] = {29,0x19FFFFDC}, + [I(77,164)] = {29,0x1A3FFFDC}, + [I(78,164)] = {29,0x1A7FFFDC}, + [I(79,164)] = {29,0x1ABFFFDC}, + [I(80,164)] = {29,0x1AFFFFDC}, + [I(81,164)] = {29,0x1B3FFFDC}, + [I(82,164)] = {29,0x1B7FFFDC}, + [I(83,164)] = {29,0x1BBFFFDC}, + [I(84,164)] = {29,0x1BFFFFDC}, + [I(85,164)] = {29,0x1C3FFFDC}, + [I(86,164)] = {29,0x1C7FFFDC}, + [I(87,164)] = {29,0x1CBFFFDC}, + [I(88,164)] = {30,0x3F3FFFDC}, + [I(89,164)] = {29,0x1CFFFFDC}, + [I(90,164)] = {30,0x3F7FFFDC}, + [I(91,164)] = {64,0}, + [I(92,164)] = {64,0}, + [I(93,164)] = {64,0}, + [I(94,164)] = {64,0}, + [I(95,164)] = {28,0x8BFFFDC}, + [I(96,164)] = {64,0}, + [I(97,164)] = {27,0xFFFFDC}, + [I(98,164)] = {28,0x8FFFFDC}, + [I(99,164)] = {27,0x13FFFDC}, + [I(100,164)] = {28,0x93FFFDC}, + [I(101,164)] = {27,0x17FFFDC}, + [I(102,164)] = {28,0x97FFFDC}, + [I(103,164)] = {28,0x9BFFFDC}, + [I(104,164)] = {28,0x9FFFFDC}, + [I(105,164)] = {27,0x1BFFFDC}, + [I(106,164)] = {29,0x1D3FFFDC}, + [I(107,164)] = {29,0x1D7FFFDC}, + [I(108,164)] = {28,0xA3FFFDC}, + [I(109,164)] = {28,0xA7FFFDC}, + [I(110,164)] = {28,0xABFFFDC}, + [I(111,164)] = {27,0x1FFFFDC}, + [I(112,164)] = {28,0xAFFFFDC}, + [I(113,164)] = {29,0x1DBFFFDC}, + [I(114,164)] = {28,0xB3FFFDC}, + [I(115,164)] = {27,0x23FFFDC}, + [I(116,164)] = {27,0x27FFFDC}, + [I(117,164)] = {28,0xB7FFFDC}, + [I(118,164)] = {29,0x1DFFFFDC}, + [I(119,164)] = {29,0x1E3FFFDC}, + [I(120,164)] = {29,0x1E7FFFDC}, + [I(121,164)] = {29,0x1EBFFFDC}, + [I(122,164)] = {29,0x1EFFFFDC}, + [I(123,164)] = {64,0}, + [I(124,164)] = {64,0}, + [I(125,164)] = {64,0}, + [I(126,164)] = {64,0}, + [I(127,164)] = {64,0}, + [I(128,164)] = {64,0}, + [I(129,164)] = {64,0}, + [I(130,164)] = {64,0}, + [I(131,164)] = {64,0}, + [I(132,164)] = {64,0}, + [I(133,164)] = {64,0}, + [I(134,164)] = {64,0}, + [I(135,164)] = {64,0}, + [I(136,164)] = {64,0}, + [I(137,164)] = {64,0}, + [I(138,164)] = {64,0}, + [I(139,164)] = {64,0}, + [I(140,164)] = {64,0}, + [I(141,164)] = {64,0}, + [I(142,164)] = {64,0}, + [I(143,164)] = {64,0}, + [I(144,164)] = {64,0}, + [I(145,164)] = {64,0}, + [I(146,164)] = {64,0}, + [I(147,164)] = {64,0}, + [I(148,164)] = {64,0}, + [I(149,164)] = {64,0}, + [I(150,164)] = {64,0}, + [I(151,164)] = {64,0}, + [I(152,164)] = {64,0}, + [I(153,164)] = {64,0}, + [I(154,164)] = {64,0}, + [I(155,164)] = {64,0}, + [I(156,164)] = {64,0}, + [I(157,164)] = {64,0}, + [I(158,164)] = {64,0}, + [I(159,164)] = {64,0}, + [I(160,164)] = {64,0}, + [I(161,164)] = {64,0}, + [I(162,164)] = {64,0}, + [I(163,164)] = {64,0}, + [I(164,164)] = {64,0}, + [I(165,164)] = {64,0}, + [I(166,164)] = {64,0}, + [I(167,164)] = {64,0}, + [I(168,164)] = {64,0}, + [I(169,164)] = {64,0}, + [I(170,164)] = {64,0}, + [I(171,164)] = {64,0}, + [I(172,164)] = {64,0}, + [I(173,164)] = {64,0}, + [I(174,164)] = {64,0}, + [I(175,164)] = {64,0}, + [I(176,164)] = {64,0}, + [I(177,164)] = {64,0}, + [I(178,164)] = {64,0}, + [I(179,164)] = {64,0}, + [I(180,164)] = {64,0}, + [I(181,164)] = {64,0}, + [I(182,164)] = {64,0}, + [I(183,164)] = {64,0}, + [I(184,164)] = {64,0}, + [I(185,164)] = {64,0}, + [I(186,164)] = {64,0}, + [I(187,164)] = {64,0}, + [I(188,164)] = {64,0}, + [I(189,164)] = {64,0}, + [I(190,164)] = {64,0}, + [I(191,164)] = {64,0}, + [I(192,164)] = {64,0}, + [I(193,164)] = {64,0}, + [I(194,164)] = {64,0}, + [I(195,164)] = {64,0}, + [I(196,164)] = {64,0}, + [I(197,164)] = {64,0}, + [I(198,164)] = {64,0}, + [I(199,164)] = {64,0}, + [I(200,164)] = {64,0}, + [I(201,164)] = {64,0}, + [I(202,164)] = {64,0}, + [I(203,164)] = {64,0}, + [I(204,164)] = {64,0}, + [I(205,164)] = {64,0}, + [I(206,164)] = {64,0}, + [I(207,164)] = {64,0}, + [I(208,164)] = {64,0}, + [I(209,164)] = {64,0}, + [I(210,164)] = {64,0}, + [I(211,164)] = {64,0}, + [I(212,164)] = {64,0}, + [I(213,164)] = {64,0}, + [I(214,164)] = {64,0}, + [I(215,164)] = {64,0}, + [I(216,164)] = {64,0}, + [I(217,164)] = {64,0}, + [I(218,164)] = {64,0}, + [I(219,164)] = {64,0}, + [I(220,164)] = {64,0}, + [I(221,164)] = {64,0}, + [I(222,164)] = {64,0}, + [I(223,164)] = {64,0}, + [I(224,164)] = {64,0}, + [I(225,164)] = {64,0}, + [I(226,164)] = {64,0}, + [I(227,164)] = {64,0}, + [I(228,164)] = {64,0}, + [I(229,164)] = {64,0}, + [I(230,164)] = {64,0}, + [I(231,164)] = {64,0}, + [I(232,164)] = {64,0}, + [I(233,164)] = {64,0}, + [I(234,164)] = {64,0}, + [I(235,164)] = {64,0}, + [I(236,164)] = {64,0}, + [I(237,164)] = {64,0}, + [I(238,164)] = {64,0}, + [I(239,164)] = {64,0}, + [I(240,164)] = {64,0}, + [I(241,164)] = {64,0}, + [I(242,164)] = {64,0}, + [I(243,164)] = {64,0}, + [I(244,164)] = {64,0}, + [I(245,164)] = {64,0}, + [I(246,164)] = {64,0}, + [I(247,164)] = {64,0}, + [I(248,164)] = {64,0}, + [I(249,164)] = {64,0}, + [I(250,164)] = {64,0}, + [I(251,164)] = {64,0}, + [I(252,164)] = {64,0}, + [I(253,164)] = {64,0}, + [I(254,164)] = {64,0}, + [I(255,164)] = {64,0}, + [I(0,165)] = {64,0}, + [I(1,165)] = {64,0}, + [I(2,165)] = {64,0}, + [I(3,165)] = {64,0}, + [I(4,165)] = {64,0}, + [I(5,165)] = {64,0}, + [I(6,165)] = {64,0}, + [I(7,165)] = {64,0}, + [I(8,165)] = {64,0}, + [I(9,165)] = {64,0}, + [I(10,165)] = {64,0}, + [I(11,165)] = {64,0}, + [I(12,165)] = {64,0}, + [I(13,165)] = {64,0}, + [I(14,165)] = {64,0}, + [I(15,165)] = {64,0}, + [I(16,165)] = {64,0}, + [I(17,165)] = {64,0}, + [I(18,165)] = {64,0}, + [I(19,165)] = {64,0}, + [I(20,165)] = {64,0}, + [I(21,165)] = {64,0}, + [I(22,165)] = {64,0}, + [I(23,165)] = {64,0}, + [I(24,165)] = {64,0}, + [I(25,165)] = {64,0}, + [I(26,165)] = {64,0}, + [I(27,165)] = {64,0}, + [I(28,165)] = {64,0}, + [I(29,165)] = {64,0}, + [I(30,165)] = {64,0}, + [I(31,165)] = {64,0}, + [I(32,165)] = {29,0xA7FFFE8}, + [I(33,165)] = {64,0}, + [I(34,165)] = {64,0}, + [I(35,165)] = {64,0}, + [I(36,165)] = {64,0}, + [I(37,165)] = {29,0xAFFFFE8}, + [I(38,165)] = {31,0x7C7FFFE8}, + [I(39,165)] = {64,0}, + [I(40,165)] = {64,0}, + [I(41,165)] = {64,0}, + [I(42,165)] = {31,0x7CFFFFE8}, + [I(43,165)] = {64,0}, + [I(44,165)] = {31,0x7D7FFFE8}, + [I(45,165)] = {29,0xB7FFFE8}, + [I(46,165)] = {29,0xBFFFFE8}, + [I(47,165)] = {29,0xC7FFFE8}, + [I(48,165)] = {28,0x7FFFE8}, + [I(49,165)] = {28,0xFFFFE8}, + [I(50,165)] = {28,0x17FFFE8}, + [I(51,165)] = {29,0xCFFFFE8}, + [I(52,165)] = {29,0xD7FFFE8}, + [I(53,165)] = {29,0xDFFFFE8}, + [I(54,165)] = {29,0xE7FFFE8}, + [I(55,165)] = {29,0xEFFFFE8}, + [I(56,165)] = {29,0xF7FFFE8}, + [I(57,165)] = {29,0xFFFFFE8}, + [I(58,165)] = {30,0x2E7FFFE8}, + [I(59,165)] = {31,0x7DFFFFE8}, + [I(60,165)] = {64,0}, + [I(61,165)] = {29,0x107FFFE8}, + [I(62,165)] = {64,0}, + [I(63,165)] = {64,0}, + [I(64,165)] = {64,0}, + [I(65,165)] = {29,0x10FFFFE8}, + [I(66,165)] = {30,0x2EFFFFE8}, + [I(67,165)] = {30,0x2F7FFFE8}, + [I(68,165)] = {30,0x2FFFFFE8}, + [I(69,165)] = {30,0x307FFFE8}, + [I(70,165)] = {30,0x30FFFFE8}, + [I(71,165)] = {30,0x317FFFE8}, + [I(72,165)] = {30,0x31FFFFE8}, + [I(73,165)] = {30,0x327FFFE8}, + [I(74,165)] = {30,0x32FFFFE8}, + [I(75,165)] = {30,0x337FFFE8}, + [I(76,165)] = {30,0x33FFFFE8}, + [I(77,165)] = {30,0x347FFFE8}, + [I(78,165)] = {30,0x34FFFFE8}, + [I(79,165)] = {30,0x357FFFE8}, + [I(80,165)] = {30,0x35FFFFE8}, + [I(81,165)] = {30,0x367FFFE8}, + [I(82,165)] = {30,0x36FFFFE8}, + [I(83,165)] = {30,0x377FFFE8}, + [I(84,165)] = {30,0x37FFFFE8}, + [I(85,165)] = {30,0x387FFFE8}, + [I(86,165)] = {30,0x38FFFFE8}, + [I(87,165)] = {30,0x397FFFE8}, + [I(88,165)] = {31,0x7E7FFFE8}, + [I(89,165)] = {30,0x39FFFFE8}, + [I(90,165)] = {31,0x7EFFFFE8}, + [I(91,165)] = {64,0}, + [I(92,165)] = {64,0}, + [I(93,165)] = {64,0}, + [I(94,165)] = {64,0}, + [I(95,165)] = {29,0x117FFFE8}, + [I(96,165)] = {64,0}, + [I(97,165)] = {28,0x1FFFFE8}, + [I(98,165)] = {29,0x11FFFFE8}, + [I(99,165)] = {28,0x27FFFE8}, + [I(100,165)] = {29,0x127FFFE8}, + [I(101,165)] = {28,0x2FFFFE8}, + [I(102,165)] = {29,0x12FFFFE8}, + [I(103,165)] = {29,0x137FFFE8}, + [I(104,165)] = {29,0x13FFFFE8}, + [I(105,165)] = {28,0x37FFFE8}, + [I(106,165)] = {30,0x3A7FFFE8}, + [I(107,165)] = {30,0x3AFFFFE8}, + [I(108,165)] = {29,0x147FFFE8}, + [I(109,165)] = {29,0x14FFFFE8}, + [I(110,165)] = {29,0x157FFFE8}, + [I(111,165)] = {28,0x3FFFFE8}, + [I(112,165)] = {29,0x15FFFFE8}, + [I(113,165)] = {30,0x3B7FFFE8}, + [I(114,165)] = {29,0x167FFFE8}, + [I(115,165)] = {28,0x47FFFE8}, + [I(116,165)] = {28,0x4FFFFE8}, + [I(117,165)] = {29,0x16FFFFE8}, + [I(118,165)] = {30,0x3BFFFFE8}, + [I(119,165)] = {30,0x3C7FFFE8}, + [I(120,165)] = {30,0x3CFFFFE8}, + [I(121,165)] = {30,0x3D7FFFE8}, + [I(122,165)] = {30,0x3DFFFFE8}, + [I(123,165)] = {64,0}, + [I(124,165)] = {64,0}, + [I(125,165)] = {64,0}, + [I(126,165)] = {64,0}, + [I(127,165)] = {64,0}, + [I(128,165)] = {64,0}, + [I(129,165)] = {64,0}, + [I(130,165)] = {64,0}, + [I(131,165)] = {64,0}, + [I(132,165)] = {64,0}, + [I(133,165)] = {64,0}, + [I(134,165)] = {64,0}, + [I(135,165)] = {64,0}, + [I(136,165)] = {64,0}, + [I(137,165)] = {64,0}, + [I(138,165)] = {64,0}, + [I(139,165)] = {64,0}, + [I(140,165)] = {64,0}, + [I(141,165)] = {64,0}, + [I(142,165)] = {64,0}, + [I(143,165)] = {64,0}, + [I(144,165)] = {64,0}, + [I(145,165)] = {64,0}, + [I(146,165)] = {64,0}, + [I(147,165)] = {64,0}, + [I(148,165)] = {64,0}, + [I(149,165)] = {64,0}, + [I(150,165)] = {64,0}, + [I(151,165)] = {64,0}, + [I(152,165)] = {64,0}, + [I(153,165)] = {64,0}, + [I(154,165)] = {64,0}, + [I(155,165)] = {64,0}, + [I(156,165)] = {64,0}, + [I(157,165)] = {64,0}, + [I(158,165)] = {64,0}, + [I(159,165)] = {64,0}, + [I(160,165)] = {64,0}, + [I(161,165)] = {64,0}, + [I(162,165)] = {64,0}, + [I(163,165)] = {64,0}, + [I(164,165)] = {64,0}, + [I(165,165)] = {64,0}, + [I(166,165)] = {64,0}, + [I(167,165)] = {64,0}, + [I(168,165)] = {64,0}, + [I(169,165)] = {64,0}, + [I(170,165)] = {64,0}, + [I(171,165)] = {64,0}, + [I(172,165)] = {64,0}, + [I(173,165)] = {64,0}, + [I(174,165)] = {64,0}, + [I(175,165)] = {64,0}, + [I(176,165)] = {64,0}, + [I(177,165)] = {64,0}, + [I(178,165)] = {64,0}, + [I(179,165)] = {64,0}, + [I(180,165)] = {64,0}, + [I(181,165)] = {64,0}, + [I(182,165)] = {64,0}, + [I(183,165)] = {64,0}, + [I(184,165)] = {64,0}, + [I(185,165)] = {64,0}, + [I(186,165)] = {64,0}, + [I(187,165)] = {64,0}, + [I(188,165)] = {64,0}, + [I(189,165)] = {64,0}, + [I(190,165)] = {64,0}, + [I(191,165)] = {64,0}, + [I(192,165)] = {64,0}, + [I(193,165)] = {64,0}, + [I(194,165)] = {64,0}, + [I(195,165)] = {64,0}, + [I(196,165)] = {64,0}, + [I(197,165)] = {64,0}, + [I(198,165)] = {64,0}, + [I(199,165)] = {64,0}, + [I(200,165)] = {64,0}, + [I(201,165)] = {64,0}, + [I(202,165)] = {64,0}, + [I(203,165)] = {64,0}, + [I(204,165)] = {64,0}, + [I(205,165)] = {64,0}, + [I(206,165)] = {64,0}, + [I(207,165)] = {64,0}, + [I(208,165)] = {64,0}, + [I(209,165)] = {64,0}, + [I(210,165)] = {64,0}, + [I(211,165)] = {64,0}, + [I(212,165)] = {64,0}, + [I(213,165)] = {64,0}, + [I(214,165)] = {64,0}, + [I(215,165)] = {64,0}, + [I(216,165)] = {64,0}, + [I(217,165)] = {64,0}, + [I(218,165)] = {64,0}, + [I(219,165)] = {64,0}, + [I(220,165)] = {64,0}, + [I(221,165)] = {64,0}, + [I(222,165)] = {64,0}, + [I(223,165)] = {64,0}, + [I(224,165)] = {64,0}, + [I(225,165)] = {64,0}, + [I(226,165)] = {64,0}, + [I(227,165)] = {64,0}, + [I(228,165)] = {64,0}, + [I(229,165)] = {64,0}, + [I(230,165)] = {64,0}, + [I(231,165)] = {64,0}, + [I(232,165)] = {64,0}, + [I(233,165)] = {64,0}, + [I(234,165)] = {64,0}, + [I(235,165)] = {64,0}, + [I(236,165)] = {64,0}, + [I(237,165)] = {64,0}, + [I(238,165)] = {64,0}, + [I(239,165)] = {64,0}, + [I(240,165)] = {64,0}, + [I(241,165)] = {64,0}, + [I(242,165)] = {64,0}, + [I(243,165)] = {64,0}, + [I(244,165)] = {64,0}, + [I(245,165)] = {64,0}, + [I(246,165)] = {64,0}, + [I(247,165)] = {64,0}, + [I(248,165)] = {64,0}, + [I(249,165)] = {64,0}, + [I(250,165)] = {64,0}, + [I(251,165)] = {64,0}, + [I(252,165)] = {64,0}, + [I(253,165)] = {64,0}, + [I(254,165)] = {64,0}, + [I(255,165)] = {64,0}, + [I(0,166)] = {64,0}, + [I(1,166)] = {64,0}, + [I(2,166)] = {64,0}, + [I(3,166)] = {64,0}, + [I(4,166)] = {64,0}, + [I(5,166)] = {64,0}, + [I(6,166)] = {64,0}, + [I(7,166)] = {64,0}, + [I(8,166)] = {64,0}, + [I(9,166)] = {64,0}, + [I(10,166)] = {64,0}, + [I(11,166)] = {64,0}, + [I(12,166)] = {64,0}, + [I(13,166)] = {64,0}, + [I(14,166)] = {64,0}, + [I(15,166)] = {64,0}, + [I(16,166)] = {64,0}, + [I(17,166)] = {64,0}, + [I(18,166)] = {64,0}, + [I(19,166)] = {64,0}, + [I(20,166)] = {64,0}, + [I(21,166)] = {64,0}, + [I(22,166)] = {64,0}, + [I(23,166)] = {64,0}, + [I(24,166)] = {64,0}, + [I(25,166)] = {64,0}, + [I(26,166)] = {64,0}, + [I(27,166)] = {64,0}, + [I(28,166)] = {64,0}, + [I(29,166)] = {64,0}, + [I(30,166)] = {64,0}, + [I(31,166)] = {64,0}, + [I(32,166)] = {29,0xA7FFFE9}, + [I(33,166)] = {64,0}, + [I(34,166)] = {64,0}, + [I(35,166)] = {64,0}, + [I(36,166)] = {64,0}, + [I(37,166)] = {29,0xAFFFFE9}, + [I(38,166)] = {31,0x7C7FFFE9}, + [I(39,166)] = {64,0}, + [I(40,166)] = {64,0}, + [I(41,166)] = {64,0}, + [I(42,166)] = {31,0x7CFFFFE9}, + [I(43,166)] = {64,0}, + [I(44,166)] = {31,0x7D7FFFE9}, + [I(45,166)] = {29,0xB7FFFE9}, + [I(46,166)] = {29,0xBFFFFE9}, + [I(47,166)] = {29,0xC7FFFE9}, + [I(48,166)] = {28,0x7FFFE9}, + [I(49,166)] = {28,0xFFFFE9}, + [I(50,166)] = {28,0x17FFFE9}, + [I(51,166)] = {29,0xCFFFFE9}, + [I(52,166)] = {29,0xD7FFFE9}, + [I(53,166)] = {29,0xDFFFFE9}, + [I(54,166)] = {29,0xE7FFFE9}, + [I(55,166)] = {29,0xEFFFFE9}, + [I(56,166)] = {29,0xF7FFFE9}, + [I(57,166)] = {29,0xFFFFFE9}, + [I(58,166)] = {30,0x2E7FFFE9}, + [I(59,166)] = {31,0x7DFFFFE9}, + [I(60,166)] = {64,0}, + [I(61,166)] = {29,0x107FFFE9}, + [I(62,166)] = {64,0}, + [I(63,166)] = {64,0}, + [I(64,166)] = {64,0}, + [I(65,166)] = {29,0x10FFFFE9}, + [I(66,166)] = {30,0x2EFFFFE9}, + [I(67,166)] = {30,0x2F7FFFE9}, + [I(68,166)] = {30,0x2FFFFFE9}, + [I(69,166)] = {30,0x307FFFE9}, + [I(70,166)] = {30,0x30FFFFE9}, + [I(71,166)] = {30,0x317FFFE9}, + [I(72,166)] = {30,0x31FFFFE9}, + [I(73,166)] = {30,0x327FFFE9}, + [I(74,166)] = {30,0x32FFFFE9}, + [I(75,166)] = {30,0x337FFFE9}, + [I(76,166)] = {30,0x33FFFFE9}, + [I(77,166)] = {30,0x347FFFE9}, + [I(78,166)] = {30,0x34FFFFE9}, + [I(79,166)] = {30,0x357FFFE9}, + [I(80,166)] = {30,0x35FFFFE9}, + [I(81,166)] = {30,0x367FFFE9}, + [I(82,166)] = {30,0x36FFFFE9}, + [I(83,166)] = {30,0x377FFFE9}, + [I(84,166)] = {30,0x37FFFFE9}, + [I(85,166)] = {30,0x387FFFE9}, + [I(86,166)] = {30,0x38FFFFE9}, + [I(87,166)] = {30,0x397FFFE9}, + [I(88,166)] = {31,0x7E7FFFE9}, + [I(89,166)] = {30,0x39FFFFE9}, + [I(90,166)] = {31,0x7EFFFFE9}, + [I(91,166)] = {64,0}, + [I(92,166)] = {64,0}, + [I(93,166)] = {64,0}, + [I(94,166)] = {64,0}, + [I(95,166)] = {29,0x117FFFE9}, + [I(96,166)] = {64,0}, + [I(97,166)] = {28,0x1FFFFE9}, + [I(98,166)] = {29,0x11FFFFE9}, + [I(99,166)] = {28,0x27FFFE9}, + [I(100,166)] = {29,0x127FFFE9}, + [I(101,166)] = {28,0x2FFFFE9}, + [I(102,166)] = {29,0x12FFFFE9}, + [I(103,166)] = {29,0x137FFFE9}, + [I(104,166)] = {29,0x13FFFFE9}, + [I(105,166)] = {28,0x37FFFE9}, + [I(106,166)] = {30,0x3A7FFFE9}, + [I(107,166)] = {30,0x3AFFFFE9}, + [I(108,166)] = {29,0x147FFFE9}, + [I(109,166)] = {29,0x14FFFFE9}, + [I(110,166)] = {29,0x157FFFE9}, + [I(111,166)] = {28,0x3FFFFE9}, + [I(112,166)] = {29,0x15FFFFE9}, + [I(113,166)] = {30,0x3B7FFFE9}, + [I(114,166)] = {29,0x167FFFE9}, + [I(115,166)] = {28,0x47FFFE9}, + [I(116,166)] = {28,0x4FFFFE9}, + [I(117,166)] = {29,0x16FFFFE9}, + [I(118,166)] = {30,0x3BFFFFE9}, + [I(119,166)] = {30,0x3C7FFFE9}, + [I(120,166)] = {30,0x3CFFFFE9}, + [I(121,166)] = {30,0x3D7FFFE9}, + [I(122,166)] = {30,0x3DFFFFE9}, + [I(123,166)] = {64,0}, + [I(124,166)] = {64,0}, + [I(125,166)] = {64,0}, + [I(126,166)] = {64,0}, + [I(127,166)] = {64,0}, + [I(128,166)] = {64,0}, + [I(129,166)] = {64,0}, + [I(130,166)] = {64,0}, + [I(131,166)] = {64,0}, + [I(132,166)] = {64,0}, + [I(133,166)] = {64,0}, + [I(134,166)] = {64,0}, + [I(135,166)] = {64,0}, + [I(136,166)] = {64,0}, + [I(137,166)] = {64,0}, + [I(138,166)] = {64,0}, + [I(139,166)] = {64,0}, + [I(140,166)] = {64,0}, + [I(141,166)] = {64,0}, + [I(142,166)] = {64,0}, + [I(143,166)] = {64,0}, + [I(144,166)] = {64,0}, + [I(145,166)] = {64,0}, + [I(146,166)] = {64,0}, + [I(147,166)] = {64,0}, + [I(148,166)] = {64,0}, + [I(149,166)] = {64,0}, + [I(150,166)] = {64,0}, + [I(151,166)] = {64,0}, + [I(152,166)] = {64,0}, + [I(153,166)] = {64,0}, + [I(154,166)] = {64,0}, + [I(155,166)] = {64,0}, + [I(156,166)] = {64,0}, + [I(157,166)] = {64,0}, + [I(158,166)] = {64,0}, + [I(159,166)] = {64,0}, + [I(160,166)] = {64,0}, + [I(161,166)] = {64,0}, + [I(162,166)] = {64,0}, + [I(163,166)] = {64,0}, + [I(164,166)] = {64,0}, + [I(165,166)] = {64,0}, + [I(166,166)] = {64,0}, + [I(167,166)] = {64,0}, + [I(168,166)] = {64,0}, + [I(169,166)] = {64,0}, + [I(170,166)] = {64,0}, + [I(171,166)] = {64,0}, + [I(172,166)] = {64,0}, + [I(173,166)] = {64,0}, + [I(174,166)] = {64,0}, + [I(175,166)] = {64,0}, + [I(176,166)] = {64,0}, + [I(177,166)] = {64,0}, + [I(178,166)] = {64,0}, + [I(179,166)] = {64,0}, + [I(180,166)] = {64,0}, + [I(181,166)] = {64,0}, + [I(182,166)] = {64,0}, + [I(183,166)] = {64,0}, + [I(184,166)] = {64,0}, + [I(185,166)] = {64,0}, + [I(186,166)] = {64,0}, + [I(187,166)] = {64,0}, + [I(188,166)] = {64,0}, + [I(189,166)] = {64,0}, + [I(190,166)] = {64,0}, + [I(191,166)] = {64,0}, + [I(192,166)] = {64,0}, + [I(193,166)] = {64,0}, + [I(194,166)] = {64,0}, + [I(195,166)] = {64,0}, + [I(196,166)] = {64,0}, + [I(197,166)] = {64,0}, + [I(198,166)] = {64,0}, + [I(199,166)] = {64,0}, + [I(200,166)] = {64,0}, + [I(201,166)] = {64,0}, + [I(202,166)] = {64,0}, + [I(203,166)] = {64,0}, + [I(204,166)] = {64,0}, + [I(205,166)] = {64,0}, + [I(206,166)] = {64,0}, + [I(207,166)] = {64,0}, + [I(208,166)] = {64,0}, + [I(209,166)] = {64,0}, + [I(210,166)] = {64,0}, + [I(211,166)] = {64,0}, + [I(212,166)] = {64,0}, + [I(213,166)] = {64,0}, + [I(214,166)] = {64,0}, + [I(215,166)] = {64,0}, + [I(216,166)] = {64,0}, + [I(217,166)] = {64,0}, + [I(218,166)] = {64,0}, + [I(219,166)] = {64,0}, + [I(220,166)] = {64,0}, + [I(221,166)] = {64,0}, + [I(222,166)] = {64,0}, + [I(223,166)] = {64,0}, + [I(224,166)] = {64,0}, + [I(225,166)] = {64,0}, + [I(226,166)] = {64,0}, + [I(227,166)] = {64,0}, + [I(228,166)] = {64,0}, + [I(229,166)] = {64,0}, + [I(230,166)] = {64,0}, + [I(231,166)] = {64,0}, + [I(232,166)] = {64,0}, + [I(233,166)] = {64,0}, + [I(234,166)] = {64,0}, + [I(235,166)] = {64,0}, + [I(236,166)] = {64,0}, + [I(237,166)] = {64,0}, + [I(238,166)] = {64,0}, + [I(239,166)] = {64,0}, + [I(240,166)] = {64,0}, + [I(241,166)] = {64,0}, + [I(242,166)] = {64,0}, + [I(243,166)] = {64,0}, + [I(244,166)] = {64,0}, + [I(245,166)] = {64,0}, + [I(246,166)] = {64,0}, + [I(247,166)] = {64,0}, + [I(248,166)] = {64,0}, + [I(249,166)] = {64,0}, + [I(250,166)] = {64,0}, + [I(251,166)] = {64,0}, + [I(252,166)] = {64,0}, + [I(253,166)] = {64,0}, + [I(254,166)] = {64,0}, + [I(255,166)] = {64,0}, + [I(0,167)] = {64,0}, + [I(1,167)] = {64,0}, + [I(2,167)] = {64,0}, + [I(3,167)] = {64,0}, + [I(4,167)] = {64,0}, + [I(5,167)] = {64,0}, + [I(6,167)] = {64,0}, + [I(7,167)] = {64,0}, + [I(8,167)] = {64,0}, + [I(9,167)] = {64,0}, + [I(10,167)] = {64,0}, + [I(11,167)] = {64,0}, + [I(12,167)] = {64,0}, + [I(13,167)] = {64,0}, + [I(14,167)] = {64,0}, + [I(15,167)] = {64,0}, + [I(16,167)] = {64,0}, + [I(17,167)] = {64,0}, + [I(18,167)] = {64,0}, + [I(19,167)] = {64,0}, + [I(20,167)] = {64,0}, + [I(21,167)] = {64,0}, + [I(22,167)] = {64,0}, + [I(23,167)] = {64,0}, + [I(24,167)] = {64,0}, + [I(25,167)] = {64,0}, + [I(26,167)] = {64,0}, + [I(27,167)] = {64,0}, + [I(28,167)] = {64,0}, + [I(29,167)] = {64,0}, + [I(30,167)] = {64,0}, + [I(31,167)] = {64,0}, + [I(32,167)] = {27,0x29FFFDE}, + [I(33,167)] = {31,0x7F1FFFDE}, + [I(34,167)] = {31,0x7F3FFFDE}, + [I(35,167)] = {64,0}, + [I(36,167)] = {64,0}, + [I(37,167)] = {27,0x2BFFFDE}, + [I(38,167)] = {29,0x1F1FFFDE}, + [I(39,167)] = {X32,0xFF5FFFDE}, + [I(40,167)] = {31,0x7F5FFFDE}, + [I(41,167)] = {31,0x7F7FFFDE}, + [I(42,167)] = {29,0x1F3FFFDE}, + [I(43,167)] = {X32,0xFF7FFFDE}, + [I(44,167)] = {29,0x1F5FFFDE}, + [I(45,167)] = {27,0x2DFFFDE}, + [I(46,167)] = {27,0x2FFFFDE}, + [I(47,167)] = {27,0x31FFFDE}, + [I(48,167)] = {26,0x1FFFDE}, + [I(49,167)] = {26,0x3FFFDE}, + [I(50,167)] = {26,0x5FFFDE}, + [I(51,167)] = {27,0x33FFFDE}, + [I(52,167)] = {27,0x35FFFDE}, + [I(53,167)] = {27,0x37FFFDE}, + [I(54,167)] = {27,0x39FFFDE}, + [I(55,167)] = {27,0x3BFFFDE}, + [I(56,167)] = {27,0x3DFFFDE}, + [I(57,167)] = {27,0x3FFFFDE}, + [I(58,167)] = {28,0xB9FFFDE}, + [I(59,167)] = {29,0x1F7FFFDE}, + [I(60,167)] = {64,0}, + [I(61,167)] = {27,0x41FFFDE}, + [I(62,167)] = {64,0}, + [I(63,167)] = {31,0x7F9FFFDE}, + [I(64,167)] = {64,0}, + [I(65,167)] = {27,0x43FFFDE}, + [I(66,167)] = {28,0xBBFFFDE}, + [I(67,167)] = {28,0xBDFFFDE}, + [I(68,167)] = {28,0xBFFFFDE}, + [I(69,167)] = {28,0xC1FFFDE}, + [I(70,167)] = {28,0xC3FFFDE}, + [I(71,167)] = {28,0xC5FFFDE}, + [I(72,167)] = {28,0xC7FFFDE}, + [I(73,167)] = {28,0xC9FFFDE}, + [I(74,167)] = {28,0xCBFFFDE}, + [I(75,167)] = {28,0xCDFFFDE}, + [I(76,167)] = {28,0xCFFFFDE}, + [I(77,167)] = {28,0xD1FFFDE}, + [I(78,167)] = {28,0xD3FFFDE}, + [I(79,167)] = {28,0xD5FFFDE}, + [I(80,167)] = {28,0xD7FFFDE}, + [I(81,167)] = {28,0xD9FFFDE}, + [I(82,167)] = {28,0xDBFFFDE}, + [I(83,167)] = {28,0xDDFFFDE}, + [I(84,167)] = {28,0xDFFFFDE}, + [I(85,167)] = {28,0xE1FFFDE}, + [I(86,167)] = {28,0xE3FFFDE}, + [I(87,167)] = {28,0xE5FFFDE}, + [I(88,167)] = {29,0x1F9FFFDE}, + [I(89,167)] = {28,0xE7FFFDE}, + [I(90,167)] = {29,0x1FBFFFDE}, + [I(91,167)] = {64,0}, + [I(92,167)] = {64,0}, + [I(93,167)] = {64,0}, + [I(94,167)] = {64,0}, + [I(95,167)] = {27,0x45FFFDE}, + [I(96,167)] = {64,0}, + [I(97,167)] = {26,0x7FFFDE}, + [I(98,167)] = {27,0x47FFFDE}, + [I(99,167)] = {26,0x9FFFDE}, + [I(100,167)] = {27,0x49FFFDE}, + [I(101,167)] = {26,0xBFFFDE}, + [I(102,167)] = {27,0x4BFFFDE}, + [I(103,167)] = {27,0x4DFFFDE}, + [I(104,167)] = {27,0x4FFFFDE}, + [I(105,167)] = {26,0xDFFFDE}, + [I(106,167)] = {28,0xE9FFFDE}, + [I(107,167)] = {28,0xEBFFFDE}, + [I(108,167)] = {27,0x51FFFDE}, + [I(109,167)] = {27,0x53FFFDE}, + [I(110,167)] = {27,0x55FFFDE}, + [I(111,167)] = {26,0xFFFFDE}, + [I(112,167)] = {27,0x57FFFDE}, + [I(113,167)] = {28,0xEDFFFDE}, + [I(114,167)] = {27,0x59FFFDE}, + [I(115,167)] = {26,0x11FFFDE}, + [I(116,167)] = {26,0x13FFFDE}, + [I(117,167)] = {27,0x5BFFFDE}, + [I(118,167)] = {28,0xEFFFFDE}, + [I(119,167)] = {28,0xF1FFFDE}, + [I(120,167)] = {28,0xF3FFFDE}, + [I(121,167)] = {28,0xF5FFFDE}, + [I(122,167)] = {28,0xF7FFFDE}, + [I(123,167)] = {64,0}, + [I(124,167)] = {X32,0xFF9FFFDE}, + [I(125,167)] = {64,0}, + [I(126,167)] = {64,0}, + [I(127,167)] = {64,0}, + [I(128,167)] = {64,0}, + [I(129,167)] = {64,0}, + [I(130,167)] = {64,0}, + [I(131,167)] = {64,0}, + [I(132,167)] = {64,0}, + [I(133,167)] = {64,0}, + [I(134,167)] = {64,0}, + [I(135,167)] = {64,0}, + [I(136,167)] = {64,0}, + [I(137,167)] = {64,0}, + [I(138,167)] = {64,0}, + [I(139,167)] = {64,0}, + [I(140,167)] = {64,0}, + [I(141,167)] = {64,0}, + [I(142,167)] = {64,0}, + [I(143,167)] = {64,0}, + [I(144,167)] = {64,0}, + [I(145,167)] = {64,0}, + [I(146,167)] = {64,0}, + [I(147,167)] = {64,0}, + [I(148,167)] = {64,0}, + [I(149,167)] = {64,0}, + [I(150,167)] = {64,0}, + [I(151,167)] = {64,0}, + [I(152,167)] = {64,0}, + [I(153,167)] = {64,0}, + [I(154,167)] = {64,0}, + [I(155,167)] = {64,0}, + [I(156,167)] = {64,0}, + [I(157,167)] = {64,0}, + [I(158,167)] = {64,0}, + [I(159,167)] = {64,0}, + [I(160,167)] = {64,0}, + [I(161,167)] = {64,0}, + [I(162,167)] = {64,0}, + [I(163,167)] = {64,0}, + [I(164,167)] = {64,0}, + [I(165,167)] = {64,0}, + [I(166,167)] = {64,0}, + [I(167,167)] = {64,0}, + [I(168,167)] = {64,0}, + [I(169,167)] = {64,0}, + [I(170,167)] = {64,0}, + [I(171,167)] = {64,0}, + [I(172,167)] = {64,0}, + [I(173,167)] = {64,0}, + [I(174,167)] = {64,0}, + [I(175,167)] = {64,0}, + [I(176,167)] = {64,0}, + [I(177,167)] = {64,0}, + [I(178,167)] = {64,0}, + [I(179,167)] = {64,0}, + [I(180,167)] = {64,0}, + [I(181,167)] = {64,0}, + [I(182,167)] = {64,0}, + [I(183,167)] = {64,0}, + [I(184,167)] = {64,0}, + [I(185,167)] = {64,0}, + [I(186,167)] = {64,0}, + [I(187,167)] = {64,0}, + [I(188,167)] = {64,0}, + [I(189,167)] = {64,0}, + [I(190,167)] = {64,0}, + [I(191,167)] = {64,0}, + [I(192,167)] = {64,0}, + [I(193,167)] = {64,0}, + [I(194,167)] = {64,0}, + [I(195,167)] = {64,0}, + [I(196,167)] = {64,0}, + [I(197,167)] = {64,0}, + [I(198,167)] = {64,0}, + [I(199,167)] = {64,0}, + [I(200,167)] = {64,0}, + [I(201,167)] = {64,0}, + [I(202,167)] = {64,0}, + [I(203,167)] = {64,0}, + [I(204,167)] = {64,0}, + [I(205,167)] = {64,0}, + [I(206,167)] = {64,0}, + [I(207,167)] = {64,0}, + [I(208,167)] = {64,0}, + [I(209,167)] = {64,0}, + [I(210,167)] = {64,0}, + [I(211,167)] = {64,0}, + [I(212,167)] = {64,0}, + [I(213,167)] = {64,0}, + [I(214,167)] = {64,0}, + [I(215,167)] = {64,0}, + [I(216,167)] = {64,0}, + [I(217,167)] = {64,0}, + [I(218,167)] = {64,0}, + [I(219,167)] = {64,0}, + [I(220,167)] = {64,0}, + [I(221,167)] = {64,0}, + [I(222,167)] = {64,0}, + [I(223,167)] = {64,0}, + [I(224,167)] = {64,0}, + [I(225,167)] = {64,0}, + [I(226,167)] = {64,0}, + [I(227,167)] = {64,0}, + [I(228,167)] = {64,0}, + [I(229,167)] = {64,0}, + [I(230,167)] = {64,0}, + [I(231,167)] = {64,0}, + [I(232,167)] = {64,0}, + [I(233,167)] = {64,0}, + [I(234,167)] = {64,0}, + [I(235,167)] = {64,0}, + [I(236,167)] = {64,0}, + [I(237,167)] = {64,0}, + [I(238,167)] = {64,0}, + [I(239,167)] = {64,0}, + [I(240,167)] = {64,0}, + [I(241,167)] = {64,0}, + [I(242,167)] = {64,0}, + [I(243,167)] = {64,0}, + [I(244,167)] = {64,0}, + [I(245,167)] = {64,0}, + [I(246,167)] = {64,0}, + [I(247,167)] = {64,0}, + [I(248,167)] = {64,0}, + [I(249,167)] = {64,0}, + [I(250,167)] = {64,0}, + [I(251,167)] = {64,0}, + [I(252,167)] = {64,0}, + [I(253,167)] = {64,0}, + [I(254,167)] = {64,0}, + [I(255,167)] = {64,0}, + [I(0,168)] = {64,0}, + [I(1,168)] = {64,0}, + [I(2,168)] = {64,0}, + [I(3,168)] = {64,0}, + [I(4,168)] = {64,0}, + [I(5,168)] = {64,0}, + [I(6,168)] = {64,0}, + [I(7,168)] = {64,0}, + [I(8,168)] = {64,0}, + [I(9,168)] = {64,0}, + [I(10,168)] = {64,0}, + [I(11,168)] = {64,0}, + [I(12,168)] = {64,0}, + [I(13,168)] = {64,0}, + [I(14,168)] = {64,0}, + [I(15,168)] = {64,0}, + [I(16,168)] = {64,0}, + [I(17,168)] = {64,0}, + [I(18,168)] = {64,0}, + [I(19,168)] = {64,0}, + [I(20,168)] = {64,0}, + [I(21,168)] = {64,0}, + [I(22,168)] = {64,0}, + [I(23,168)] = {64,0}, + [I(24,168)] = {64,0}, + [I(25,168)] = {64,0}, + [I(26,168)] = {64,0}, + [I(27,168)] = {64,0}, + [I(28,168)] = {64,0}, + [I(29,168)] = {64,0}, + [I(30,168)] = {64,0}, + [I(31,168)] = {64,0}, + [I(32,168)] = {29,0xA7FFFEA}, + [I(33,168)] = {64,0}, + [I(34,168)] = {64,0}, + [I(35,168)] = {64,0}, + [I(36,168)] = {64,0}, + [I(37,168)] = {29,0xAFFFFEA}, + [I(38,168)] = {31,0x7C7FFFEA}, + [I(39,168)] = {64,0}, + [I(40,168)] = {64,0}, + [I(41,168)] = {64,0}, + [I(42,168)] = {31,0x7CFFFFEA}, + [I(43,168)] = {64,0}, + [I(44,168)] = {31,0x7D7FFFEA}, + [I(45,168)] = {29,0xB7FFFEA}, + [I(46,168)] = {29,0xBFFFFEA}, + [I(47,168)] = {29,0xC7FFFEA}, + [I(48,168)] = {28,0x7FFFEA}, + [I(49,168)] = {28,0xFFFFEA}, + [I(50,168)] = {28,0x17FFFEA}, + [I(51,168)] = {29,0xCFFFFEA}, + [I(52,168)] = {29,0xD7FFFEA}, + [I(53,168)] = {29,0xDFFFFEA}, + [I(54,168)] = {29,0xE7FFFEA}, + [I(55,168)] = {29,0xEFFFFEA}, + [I(56,168)] = {29,0xF7FFFEA}, + [I(57,168)] = {29,0xFFFFFEA}, + [I(58,168)] = {30,0x2E7FFFEA}, + [I(59,168)] = {31,0x7DFFFFEA}, + [I(60,168)] = {64,0}, + [I(61,168)] = {29,0x107FFFEA}, + [I(62,168)] = {64,0}, + [I(63,168)] = {64,0}, + [I(64,168)] = {64,0}, + [I(65,168)] = {29,0x10FFFFEA}, + [I(66,168)] = {30,0x2EFFFFEA}, + [I(67,168)] = {30,0x2F7FFFEA}, + [I(68,168)] = {30,0x2FFFFFEA}, + [I(69,168)] = {30,0x307FFFEA}, + [I(70,168)] = {30,0x30FFFFEA}, + [I(71,168)] = {30,0x317FFFEA}, + [I(72,168)] = {30,0x31FFFFEA}, + [I(73,168)] = {30,0x327FFFEA}, + [I(74,168)] = {30,0x32FFFFEA}, + [I(75,168)] = {30,0x337FFFEA}, + [I(76,168)] = {30,0x33FFFFEA}, + [I(77,168)] = {30,0x347FFFEA}, + [I(78,168)] = {30,0x34FFFFEA}, + [I(79,168)] = {30,0x357FFFEA}, + [I(80,168)] = {30,0x35FFFFEA}, + [I(81,168)] = {30,0x367FFFEA}, + [I(82,168)] = {30,0x36FFFFEA}, + [I(83,168)] = {30,0x377FFFEA}, + [I(84,168)] = {30,0x37FFFFEA}, + [I(85,168)] = {30,0x387FFFEA}, + [I(86,168)] = {30,0x38FFFFEA}, + [I(87,168)] = {30,0x397FFFEA}, + [I(88,168)] = {31,0x7E7FFFEA}, + [I(89,168)] = {30,0x39FFFFEA}, + [I(90,168)] = {31,0x7EFFFFEA}, + [I(91,168)] = {64,0}, + [I(92,168)] = {64,0}, + [I(93,168)] = {64,0}, + [I(94,168)] = {64,0}, + [I(95,168)] = {29,0x117FFFEA}, + [I(96,168)] = {64,0}, + [I(97,168)] = {28,0x1FFFFEA}, + [I(98,168)] = {29,0x11FFFFEA}, + [I(99,168)] = {28,0x27FFFEA}, + [I(100,168)] = {29,0x127FFFEA}, + [I(101,168)] = {28,0x2FFFFEA}, + [I(102,168)] = {29,0x12FFFFEA}, + [I(103,168)] = {29,0x137FFFEA}, + [I(104,168)] = {29,0x13FFFFEA}, + [I(105,168)] = {28,0x37FFFEA}, + [I(106,168)] = {30,0x3A7FFFEA}, + [I(107,168)] = {30,0x3AFFFFEA}, + [I(108,168)] = {29,0x147FFFEA}, + [I(109,168)] = {29,0x14FFFFEA}, + [I(110,168)] = {29,0x157FFFEA}, + [I(111,168)] = {28,0x3FFFFEA}, + [I(112,168)] = {29,0x15FFFFEA}, + [I(113,168)] = {30,0x3B7FFFEA}, + [I(114,168)] = {29,0x167FFFEA}, + [I(115,168)] = {28,0x47FFFEA}, + [I(116,168)] = {28,0x4FFFFEA}, + [I(117,168)] = {29,0x16FFFFEA}, + [I(118,168)] = {30,0x3BFFFFEA}, + [I(119,168)] = {30,0x3C7FFFEA}, + [I(120,168)] = {30,0x3CFFFFEA}, + [I(121,168)] = {30,0x3D7FFFEA}, + [I(122,168)] = {30,0x3DFFFFEA}, + [I(123,168)] = {64,0}, + [I(124,168)] = {64,0}, + [I(125,168)] = {64,0}, + [I(126,168)] = {64,0}, + [I(127,168)] = {64,0}, + [I(128,168)] = {64,0}, + [I(129,168)] = {64,0}, + [I(130,168)] = {64,0}, + [I(131,168)] = {64,0}, + [I(132,168)] = {64,0}, + [I(133,168)] = {64,0}, + [I(134,168)] = {64,0}, + [I(135,168)] = {64,0}, + [I(136,168)] = {64,0}, + [I(137,168)] = {64,0}, + [I(138,168)] = {64,0}, + [I(139,168)] = {64,0}, + [I(140,168)] = {64,0}, + [I(141,168)] = {64,0}, + [I(142,168)] = {64,0}, + [I(143,168)] = {64,0}, + [I(144,168)] = {64,0}, + [I(145,168)] = {64,0}, + [I(146,168)] = {64,0}, + [I(147,168)] = {64,0}, + [I(148,168)] = {64,0}, + [I(149,168)] = {64,0}, + [I(150,168)] = {64,0}, + [I(151,168)] = {64,0}, + [I(152,168)] = {64,0}, + [I(153,168)] = {64,0}, + [I(154,168)] = {64,0}, + [I(155,168)] = {64,0}, + [I(156,168)] = {64,0}, + [I(157,168)] = {64,0}, + [I(158,168)] = {64,0}, + [I(159,168)] = {64,0}, + [I(160,168)] = {64,0}, + [I(161,168)] = {64,0}, + [I(162,168)] = {64,0}, + [I(163,168)] = {64,0}, + [I(164,168)] = {64,0}, + [I(165,168)] = {64,0}, + [I(166,168)] = {64,0}, + [I(167,168)] = {64,0}, + [I(168,168)] = {64,0}, + [I(169,168)] = {64,0}, + [I(170,168)] = {64,0}, + [I(171,168)] = {64,0}, + [I(172,168)] = {64,0}, + [I(173,168)] = {64,0}, + [I(174,168)] = {64,0}, + [I(175,168)] = {64,0}, + [I(176,168)] = {64,0}, + [I(177,168)] = {64,0}, + [I(178,168)] = {64,0}, + [I(179,168)] = {64,0}, + [I(180,168)] = {64,0}, + [I(181,168)] = {64,0}, + [I(182,168)] = {64,0}, + [I(183,168)] = {64,0}, + [I(184,168)] = {64,0}, + [I(185,168)] = {64,0}, + [I(186,168)] = {64,0}, + [I(187,168)] = {64,0}, + [I(188,168)] = {64,0}, + [I(189,168)] = {64,0}, + [I(190,168)] = {64,0}, + [I(191,168)] = {64,0}, + [I(192,168)] = {64,0}, + [I(193,168)] = {64,0}, + [I(194,168)] = {64,0}, + [I(195,168)] = {64,0}, + [I(196,168)] = {64,0}, + [I(197,168)] = {64,0}, + [I(198,168)] = {64,0}, + [I(199,168)] = {64,0}, + [I(200,168)] = {64,0}, + [I(201,168)] = {64,0}, + [I(202,168)] = {64,0}, + [I(203,168)] = {64,0}, + [I(204,168)] = {64,0}, + [I(205,168)] = {64,0}, + [I(206,168)] = {64,0}, + [I(207,168)] = {64,0}, + [I(208,168)] = {64,0}, + [I(209,168)] = {64,0}, + [I(210,168)] = {64,0}, + [I(211,168)] = {64,0}, + [I(212,168)] = {64,0}, + [I(213,168)] = {64,0}, + [I(214,168)] = {64,0}, + [I(215,168)] = {64,0}, + [I(216,168)] = {64,0}, + [I(217,168)] = {64,0}, + [I(218,168)] = {64,0}, + [I(219,168)] = {64,0}, + [I(220,168)] = {64,0}, + [I(221,168)] = {64,0}, + [I(222,168)] = {64,0}, + [I(223,168)] = {64,0}, + [I(224,168)] = {64,0}, + [I(225,168)] = {64,0}, + [I(226,168)] = {64,0}, + [I(227,168)] = {64,0}, + [I(228,168)] = {64,0}, + [I(229,168)] = {64,0}, + [I(230,168)] = {64,0}, + [I(231,168)] = {64,0}, + [I(232,168)] = {64,0}, + [I(233,168)] = {64,0}, + [I(234,168)] = {64,0}, + [I(235,168)] = {64,0}, + [I(236,168)] = {64,0}, + [I(237,168)] = {64,0}, + [I(238,168)] = {64,0}, + [I(239,168)] = {64,0}, + [I(240,168)] = {64,0}, + [I(241,168)] = {64,0}, + [I(242,168)] = {64,0}, + [I(243,168)] = {64,0}, + [I(244,168)] = {64,0}, + [I(245,168)] = {64,0}, + [I(246,168)] = {64,0}, + [I(247,168)] = {64,0}, + [I(248,168)] = {64,0}, + [I(249,168)] = {64,0}, + [I(250,168)] = {64,0}, + [I(251,168)] = {64,0}, + [I(252,168)] = {64,0}, + [I(253,168)] = {64,0}, + [I(254,168)] = {64,0}, + [I(255,168)] = {64,0}, + [I(0,169)] = {64,0}, + [I(1,169)] = {64,0}, + [I(2,169)] = {64,0}, + [I(3,169)] = {64,0}, + [I(4,169)] = {64,0}, + [I(5,169)] = {64,0}, + [I(6,169)] = {64,0}, + [I(7,169)] = {64,0}, + [I(8,169)] = {64,0}, + [I(9,169)] = {64,0}, + [I(10,169)] = {64,0}, + [I(11,169)] = {64,0}, + [I(12,169)] = {64,0}, + [I(13,169)] = {64,0}, + [I(14,169)] = {64,0}, + [I(15,169)] = {64,0}, + [I(16,169)] = {64,0}, + [I(17,169)] = {64,0}, + [I(18,169)] = {64,0}, + [I(19,169)] = {64,0}, + [I(20,169)] = {64,0}, + [I(21,169)] = {64,0}, + [I(22,169)] = {64,0}, + [I(23,169)] = {64,0}, + [I(24,169)] = {64,0}, + [I(25,169)] = {64,0}, + [I(26,169)] = {64,0}, + [I(27,169)] = {64,0}, + [I(28,169)] = {64,0}, + [I(29,169)] = {64,0}, + [I(30,169)] = {64,0}, + [I(31,169)] = {64,0}, + [I(32,169)] = {28,0x53FFFDD}, + [I(33,169)] = {X32,0xFE3FFFDD}, + [I(34,169)] = {X32,0xFE7FFFDD}, + [I(35,169)] = {64,0}, + [I(36,169)] = {64,0}, + [I(37,169)] = {28,0x57FFFDD}, + [I(38,169)] = {30,0x3E3FFFDD}, + [I(39,169)] = {64,0}, + [I(40,169)] = {X32,0xFEBFFFDD}, + [I(41,169)] = {X32,0xFEFFFFDD}, + [I(42,169)] = {30,0x3E7FFFDD}, + [I(43,169)] = {64,0}, + [I(44,169)] = {30,0x3EBFFFDD}, + [I(45,169)] = {28,0x5BFFFDD}, + [I(46,169)] = {28,0x5FFFFDD}, + [I(47,169)] = {28,0x63FFFDD}, + [I(48,169)] = {27,0x3FFFDD}, + [I(49,169)] = {27,0x7FFFDD}, + [I(50,169)] = {27,0xBFFFDD}, + [I(51,169)] = {28,0x67FFFDD}, + [I(52,169)] = {28,0x6BFFFDD}, + [I(53,169)] = {28,0x6FFFFDD}, + [I(54,169)] = {28,0x73FFFDD}, + [I(55,169)] = {28,0x77FFFDD}, + [I(56,169)] = {28,0x7BFFFDD}, + [I(57,169)] = {28,0x7FFFFDD}, + [I(58,169)] = {29,0x173FFFDD}, + [I(59,169)] = {30,0x3EFFFFDD}, + [I(60,169)] = {64,0}, + [I(61,169)] = {28,0x83FFFDD}, + [I(62,169)] = {64,0}, + [I(63,169)] = {X32,0xFF3FFFDD}, + [I(64,169)] = {64,0}, + [I(65,169)] = {28,0x87FFFDD}, + [I(66,169)] = {29,0x177FFFDD}, + [I(67,169)] = {29,0x17BFFFDD}, + [I(68,169)] = {29,0x17FFFFDD}, + [I(69,169)] = {29,0x183FFFDD}, + [I(70,169)] = {29,0x187FFFDD}, + [I(71,169)] = {29,0x18BFFFDD}, + [I(72,169)] = {29,0x18FFFFDD}, + [I(73,169)] = {29,0x193FFFDD}, + [I(74,169)] = {29,0x197FFFDD}, + [I(75,169)] = {29,0x19BFFFDD}, + [I(76,169)] = {29,0x19FFFFDD}, + [I(77,169)] = {29,0x1A3FFFDD}, + [I(78,169)] = {29,0x1A7FFFDD}, + [I(79,169)] = {29,0x1ABFFFDD}, + [I(80,169)] = {29,0x1AFFFFDD}, + [I(81,169)] = {29,0x1B3FFFDD}, + [I(82,169)] = {29,0x1B7FFFDD}, + [I(83,169)] = {29,0x1BBFFFDD}, + [I(84,169)] = {29,0x1BFFFFDD}, + [I(85,169)] = {29,0x1C3FFFDD}, + [I(86,169)] = {29,0x1C7FFFDD}, + [I(87,169)] = {29,0x1CBFFFDD}, + [I(88,169)] = {30,0x3F3FFFDD}, + [I(89,169)] = {29,0x1CFFFFDD}, + [I(90,169)] = {30,0x3F7FFFDD}, + [I(91,169)] = {64,0}, + [I(92,169)] = {64,0}, + [I(93,169)] = {64,0}, + [I(94,169)] = {64,0}, + [I(95,169)] = {28,0x8BFFFDD}, + [I(96,169)] = {64,0}, + [I(97,169)] = {27,0xFFFFDD}, + [I(98,169)] = {28,0x8FFFFDD}, + [I(99,169)] = {27,0x13FFFDD}, + [I(100,169)] = {28,0x93FFFDD}, + [I(101,169)] = {27,0x17FFFDD}, + [I(102,169)] = {28,0x97FFFDD}, + [I(103,169)] = {28,0x9BFFFDD}, + [I(104,169)] = {28,0x9FFFFDD}, + [I(105,169)] = {27,0x1BFFFDD}, + [I(106,169)] = {29,0x1D3FFFDD}, + [I(107,169)] = {29,0x1D7FFFDD}, + [I(108,169)] = {28,0xA3FFFDD}, + [I(109,169)] = {28,0xA7FFFDD}, + [I(110,169)] = {28,0xABFFFDD}, + [I(111,169)] = {27,0x1FFFFDD}, + [I(112,169)] = {28,0xAFFFFDD}, + [I(113,169)] = {29,0x1DBFFFDD}, + [I(114,169)] = {28,0xB3FFFDD}, + [I(115,169)] = {27,0x23FFFDD}, + [I(116,169)] = {27,0x27FFFDD}, + [I(117,169)] = {28,0xB7FFFDD}, + [I(118,169)] = {29,0x1DFFFFDD}, + [I(119,169)] = {29,0x1E3FFFDD}, + [I(120,169)] = {29,0x1E7FFFDD}, + [I(121,169)] = {29,0x1EBFFFDD}, + [I(122,169)] = {29,0x1EFFFFDD}, + [I(123,169)] = {64,0}, + [I(124,169)] = {64,0}, + [I(125,169)] = {64,0}, + [I(126,169)] = {64,0}, + [I(127,169)] = {64,0}, + [I(128,169)] = {64,0}, + [I(129,169)] = {64,0}, + [I(130,169)] = {64,0}, + [I(131,169)] = {64,0}, + [I(132,169)] = {64,0}, + [I(133,169)] = {64,0}, + [I(134,169)] = {64,0}, + [I(135,169)] = {64,0}, + [I(136,169)] = {64,0}, + [I(137,169)] = {64,0}, + [I(138,169)] = {64,0}, + [I(139,169)] = {64,0}, + [I(140,169)] = {64,0}, + [I(141,169)] = {64,0}, + [I(142,169)] = {64,0}, + [I(143,169)] = {64,0}, + [I(144,169)] = {64,0}, + [I(145,169)] = {64,0}, + [I(146,169)] = {64,0}, + [I(147,169)] = {64,0}, + [I(148,169)] = {64,0}, + [I(149,169)] = {64,0}, + [I(150,169)] = {64,0}, + [I(151,169)] = {64,0}, + [I(152,169)] = {64,0}, + [I(153,169)] = {64,0}, + [I(154,169)] = {64,0}, + [I(155,169)] = {64,0}, + [I(156,169)] = {64,0}, + [I(157,169)] = {64,0}, + [I(158,169)] = {64,0}, + [I(159,169)] = {64,0}, + [I(160,169)] = {64,0}, + [I(161,169)] = {64,0}, + [I(162,169)] = {64,0}, + [I(163,169)] = {64,0}, + [I(164,169)] = {64,0}, + [I(165,169)] = {64,0}, + [I(166,169)] = {64,0}, + [I(167,169)] = {64,0}, + [I(168,169)] = {64,0}, + [I(169,169)] = {64,0}, + [I(170,169)] = {64,0}, + [I(171,169)] = {64,0}, + [I(172,169)] = {64,0}, + [I(173,169)] = {64,0}, + [I(174,169)] = {64,0}, + [I(175,169)] = {64,0}, + [I(176,169)] = {64,0}, + [I(177,169)] = {64,0}, + [I(178,169)] = {64,0}, + [I(179,169)] = {64,0}, + [I(180,169)] = {64,0}, + [I(181,169)] = {64,0}, + [I(182,169)] = {64,0}, + [I(183,169)] = {64,0}, + [I(184,169)] = {64,0}, + [I(185,169)] = {64,0}, + [I(186,169)] = {64,0}, + [I(187,169)] = {64,0}, + [I(188,169)] = {64,0}, + [I(189,169)] = {64,0}, + [I(190,169)] = {64,0}, + [I(191,169)] = {64,0}, + [I(192,169)] = {64,0}, + [I(193,169)] = {64,0}, + [I(194,169)] = {64,0}, + [I(195,169)] = {64,0}, + [I(196,169)] = {64,0}, + [I(197,169)] = {64,0}, + [I(198,169)] = {64,0}, + [I(199,169)] = {64,0}, + [I(200,169)] = {64,0}, + [I(201,169)] = {64,0}, + [I(202,169)] = {64,0}, + [I(203,169)] = {64,0}, + [I(204,169)] = {64,0}, + [I(205,169)] = {64,0}, + [I(206,169)] = {64,0}, + [I(207,169)] = {64,0}, + [I(208,169)] = {64,0}, + [I(209,169)] = {64,0}, + [I(210,169)] = {64,0}, + [I(211,169)] = {64,0}, + [I(212,169)] = {64,0}, + [I(213,169)] = {64,0}, + [I(214,169)] = {64,0}, + [I(215,169)] = {64,0}, + [I(216,169)] = {64,0}, + [I(217,169)] = {64,0}, + [I(218,169)] = {64,0}, + [I(219,169)] = {64,0}, + [I(220,169)] = {64,0}, + [I(221,169)] = {64,0}, + [I(222,169)] = {64,0}, + [I(223,169)] = {64,0}, + [I(224,169)] = {64,0}, + [I(225,169)] = {64,0}, + [I(226,169)] = {64,0}, + [I(227,169)] = {64,0}, + [I(228,169)] = {64,0}, + [I(229,169)] = {64,0}, + [I(230,169)] = {64,0}, + [I(231,169)] = {64,0}, + [I(232,169)] = {64,0}, + [I(233,169)] = {64,0}, + [I(234,169)] = {64,0}, + [I(235,169)] = {64,0}, + [I(236,169)] = {64,0}, + [I(237,169)] = {64,0}, + [I(238,169)] = {64,0}, + [I(239,169)] = {64,0}, + [I(240,169)] = {64,0}, + [I(241,169)] = {64,0}, + [I(242,169)] = {64,0}, + [I(243,169)] = {64,0}, + [I(244,169)] = {64,0}, + [I(245,169)] = {64,0}, + [I(246,169)] = {64,0}, + [I(247,169)] = {64,0}, + [I(248,169)] = {64,0}, + [I(249,169)] = {64,0}, + [I(250,169)] = {64,0}, + [I(251,169)] = {64,0}, + [I(252,169)] = {64,0}, + [I(253,169)] = {64,0}, + [I(254,169)] = {64,0}, + [I(255,169)] = {64,0}, + [I(0,170)] = {64,0}, + [I(1,170)] = {64,0}, + [I(2,170)] = {64,0}, + [I(3,170)] = {64,0}, + [I(4,170)] = {64,0}, + [I(5,170)] = {64,0}, + [I(6,170)] = {64,0}, + [I(7,170)] = {64,0}, + [I(8,170)] = {64,0}, + [I(9,170)] = {64,0}, + [I(10,170)] = {64,0}, + [I(11,170)] = {64,0}, + [I(12,170)] = {64,0}, + [I(13,170)] = {64,0}, + [I(14,170)] = {64,0}, + [I(15,170)] = {64,0}, + [I(16,170)] = {64,0}, + [I(17,170)] = {64,0}, + [I(18,170)] = {64,0}, + [I(19,170)] = {64,0}, + [I(20,170)] = {64,0}, + [I(21,170)] = {64,0}, + [I(22,170)] = {64,0}, + [I(23,170)] = {64,0}, + [I(24,170)] = {64,0}, + [I(25,170)] = {64,0}, + [I(26,170)] = {64,0}, + [I(27,170)] = {64,0}, + [I(28,170)] = {64,0}, + [I(29,170)] = {64,0}, + [I(30,170)] = {64,0}, + [I(31,170)] = {64,0}, + [I(32,170)] = {28,0x53FFFDE}, + [I(33,170)] = {X32,0xFE3FFFDE}, + [I(34,170)] = {X32,0xFE7FFFDE}, + [I(35,170)] = {64,0}, + [I(36,170)] = {64,0}, + [I(37,170)] = {28,0x57FFFDE}, + [I(38,170)] = {30,0x3E3FFFDE}, + [I(39,170)] = {64,0}, + [I(40,170)] = {X32,0xFEBFFFDE}, + [I(41,170)] = {X32,0xFEFFFFDE}, + [I(42,170)] = {30,0x3E7FFFDE}, + [I(43,170)] = {64,0}, + [I(44,170)] = {30,0x3EBFFFDE}, + [I(45,170)] = {28,0x5BFFFDE}, + [I(46,170)] = {28,0x5FFFFDE}, + [I(47,170)] = {28,0x63FFFDE}, + [I(48,170)] = {27,0x3FFFDE}, + [I(49,170)] = {27,0x7FFFDE}, + [I(50,170)] = {27,0xBFFFDE}, + [I(51,170)] = {28,0x67FFFDE}, + [I(52,170)] = {28,0x6BFFFDE}, + [I(53,170)] = {28,0x6FFFFDE}, + [I(54,170)] = {28,0x73FFFDE}, + [I(55,170)] = {28,0x77FFFDE}, + [I(56,170)] = {28,0x7BFFFDE}, + [I(57,170)] = {28,0x7FFFFDE}, + [I(58,170)] = {29,0x173FFFDE}, + [I(59,170)] = {30,0x3EFFFFDE}, + [I(60,170)] = {64,0}, + [I(61,170)] = {28,0x83FFFDE}, + [I(62,170)] = {64,0}, + [I(63,170)] = {X32,0xFF3FFFDE}, + [I(64,170)] = {64,0}, + [I(65,170)] = {28,0x87FFFDE}, + [I(66,170)] = {29,0x177FFFDE}, + [I(67,170)] = {29,0x17BFFFDE}, + [I(68,170)] = {29,0x17FFFFDE}, + [I(69,170)] = {29,0x183FFFDE}, + [I(70,170)] = {29,0x187FFFDE}, + [I(71,170)] = {29,0x18BFFFDE}, + [I(72,170)] = {29,0x18FFFFDE}, + [I(73,170)] = {29,0x193FFFDE}, + [I(74,170)] = {29,0x197FFFDE}, + [I(75,170)] = {29,0x19BFFFDE}, + [I(76,170)] = {29,0x19FFFFDE}, + [I(77,170)] = {29,0x1A3FFFDE}, + [I(78,170)] = {29,0x1A7FFFDE}, + [I(79,170)] = {29,0x1ABFFFDE}, + [I(80,170)] = {29,0x1AFFFFDE}, + [I(81,170)] = {29,0x1B3FFFDE}, + [I(82,170)] = {29,0x1B7FFFDE}, + [I(83,170)] = {29,0x1BBFFFDE}, + [I(84,170)] = {29,0x1BFFFFDE}, + [I(85,170)] = {29,0x1C3FFFDE}, + [I(86,170)] = {29,0x1C7FFFDE}, + [I(87,170)] = {29,0x1CBFFFDE}, + [I(88,170)] = {30,0x3F3FFFDE}, + [I(89,170)] = {29,0x1CFFFFDE}, + [I(90,170)] = {30,0x3F7FFFDE}, + [I(91,170)] = {64,0}, + [I(92,170)] = {64,0}, + [I(93,170)] = {64,0}, + [I(94,170)] = {64,0}, + [I(95,170)] = {28,0x8BFFFDE}, + [I(96,170)] = {64,0}, + [I(97,170)] = {27,0xFFFFDE}, + [I(98,170)] = {28,0x8FFFFDE}, + [I(99,170)] = {27,0x13FFFDE}, + [I(100,170)] = {28,0x93FFFDE}, + [I(101,170)] = {27,0x17FFFDE}, + [I(102,170)] = {28,0x97FFFDE}, + [I(103,170)] = {28,0x9BFFFDE}, + [I(104,170)] = {28,0x9FFFFDE}, + [I(105,170)] = {27,0x1BFFFDE}, + [I(106,170)] = {29,0x1D3FFFDE}, + [I(107,170)] = {29,0x1D7FFFDE}, + [I(108,170)] = {28,0xA3FFFDE}, + [I(109,170)] = {28,0xA7FFFDE}, + [I(110,170)] = {28,0xABFFFDE}, + [I(111,170)] = {27,0x1FFFFDE}, + [I(112,170)] = {28,0xAFFFFDE}, + [I(113,170)] = {29,0x1DBFFFDE}, + [I(114,170)] = {28,0xB3FFFDE}, + [I(115,170)] = {27,0x23FFFDE}, + [I(116,170)] = {27,0x27FFFDE}, + [I(117,170)] = {28,0xB7FFFDE}, + [I(118,170)] = {29,0x1DFFFFDE}, + [I(119,170)] = {29,0x1E3FFFDE}, + [I(120,170)] = {29,0x1E7FFFDE}, + [I(121,170)] = {29,0x1EBFFFDE}, + [I(122,170)] = {29,0x1EFFFFDE}, + [I(123,170)] = {64,0}, + [I(124,170)] = {64,0}, + [I(125,170)] = {64,0}, + [I(126,170)] = {64,0}, + [I(127,170)] = {64,0}, + [I(128,170)] = {64,0}, + [I(129,170)] = {64,0}, + [I(130,170)] = {64,0}, + [I(131,170)] = {64,0}, + [I(132,170)] = {64,0}, + [I(133,170)] = {64,0}, + [I(134,170)] = {64,0}, + [I(135,170)] = {64,0}, + [I(136,170)] = {64,0}, + [I(137,170)] = {64,0}, + [I(138,170)] = {64,0}, + [I(139,170)] = {64,0}, + [I(140,170)] = {64,0}, + [I(141,170)] = {64,0}, + [I(142,170)] = {64,0}, + [I(143,170)] = {64,0}, + [I(144,170)] = {64,0}, + [I(145,170)] = {64,0}, + [I(146,170)] = {64,0}, + [I(147,170)] = {64,0}, + [I(148,170)] = {64,0}, + [I(149,170)] = {64,0}, + [I(150,170)] = {64,0}, + [I(151,170)] = {64,0}, + [I(152,170)] = {64,0}, + [I(153,170)] = {64,0}, + [I(154,170)] = {64,0}, + [I(155,170)] = {64,0}, + [I(156,170)] = {64,0}, + [I(157,170)] = {64,0}, + [I(158,170)] = {64,0}, + [I(159,170)] = {64,0}, + [I(160,170)] = {64,0}, + [I(161,170)] = {64,0}, + [I(162,170)] = {64,0}, + [I(163,170)] = {64,0}, + [I(164,170)] = {64,0}, + [I(165,170)] = {64,0}, + [I(166,170)] = {64,0}, + [I(167,170)] = {64,0}, + [I(168,170)] = {64,0}, + [I(169,170)] = {64,0}, + [I(170,170)] = {64,0}, + [I(171,170)] = {64,0}, + [I(172,170)] = {64,0}, + [I(173,170)] = {64,0}, + [I(174,170)] = {64,0}, + [I(175,170)] = {64,0}, + [I(176,170)] = {64,0}, + [I(177,170)] = {64,0}, + [I(178,170)] = {64,0}, + [I(179,170)] = {64,0}, + [I(180,170)] = {64,0}, + [I(181,170)] = {64,0}, + [I(182,170)] = {64,0}, + [I(183,170)] = {64,0}, + [I(184,170)] = {64,0}, + [I(185,170)] = {64,0}, + [I(186,170)] = {64,0}, + [I(187,170)] = {64,0}, + [I(188,170)] = {64,0}, + [I(189,170)] = {64,0}, + [I(190,170)] = {64,0}, + [I(191,170)] = {64,0}, + [I(192,170)] = {64,0}, + [I(193,170)] = {64,0}, + [I(194,170)] = {64,0}, + [I(195,170)] = {64,0}, + [I(196,170)] = {64,0}, + [I(197,170)] = {64,0}, + [I(198,170)] = {64,0}, + [I(199,170)] = {64,0}, + [I(200,170)] = {64,0}, + [I(201,170)] = {64,0}, + [I(202,170)] = {64,0}, + [I(203,170)] = {64,0}, + [I(204,170)] = {64,0}, + [I(205,170)] = {64,0}, + [I(206,170)] = {64,0}, + [I(207,170)] = {64,0}, + [I(208,170)] = {64,0}, + [I(209,170)] = {64,0}, + [I(210,170)] = {64,0}, + [I(211,170)] = {64,0}, + [I(212,170)] = {64,0}, + [I(213,170)] = {64,0}, + [I(214,170)] = {64,0}, + [I(215,170)] = {64,0}, + [I(216,170)] = {64,0}, + [I(217,170)] = {64,0}, + [I(218,170)] = {64,0}, + [I(219,170)] = {64,0}, + [I(220,170)] = {64,0}, + [I(221,170)] = {64,0}, + [I(222,170)] = {64,0}, + [I(223,170)] = {64,0}, + [I(224,170)] = {64,0}, + [I(225,170)] = {64,0}, + [I(226,170)] = {64,0}, + [I(227,170)] = {64,0}, + [I(228,170)] = {64,0}, + [I(229,170)] = {64,0}, + [I(230,170)] = {64,0}, + [I(231,170)] = {64,0}, + [I(232,170)] = {64,0}, + [I(233,170)] = {64,0}, + [I(234,170)] = {64,0}, + [I(235,170)] = {64,0}, + [I(236,170)] = {64,0}, + [I(237,170)] = {64,0}, + [I(238,170)] = {64,0}, + [I(239,170)] = {64,0}, + [I(240,170)] = {64,0}, + [I(241,170)] = {64,0}, + [I(242,170)] = {64,0}, + [I(243,170)] = {64,0}, + [I(244,170)] = {64,0}, + [I(245,170)] = {64,0}, + [I(246,170)] = {64,0}, + [I(247,170)] = {64,0}, + [I(248,170)] = {64,0}, + [I(249,170)] = {64,0}, + [I(250,170)] = {64,0}, + [I(251,170)] = {64,0}, + [I(252,170)] = {64,0}, + [I(253,170)] = {64,0}, + [I(254,170)] = {64,0}, + [I(255,170)] = {64,0}, + [I(0,171)] = {64,0}, + [I(1,171)] = {64,0}, + [I(2,171)] = {64,0}, + [I(3,171)] = {64,0}, + [I(4,171)] = {64,0}, + [I(5,171)] = {64,0}, + [I(6,171)] = {64,0}, + [I(7,171)] = {64,0}, + [I(8,171)] = {64,0}, + [I(9,171)] = {64,0}, + [I(10,171)] = {64,0}, + [I(11,171)] = {64,0}, + [I(12,171)] = {64,0}, + [I(13,171)] = {64,0}, + [I(14,171)] = {64,0}, + [I(15,171)] = {64,0}, + [I(16,171)] = {64,0}, + [I(17,171)] = {64,0}, + [I(18,171)] = {64,0}, + [I(19,171)] = {64,0}, + [I(20,171)] = {64,0}, + [I(21,171)] = {64,0}, + [I(22,171)] = {64,0}, + [I(23,171)] = {64,0}, + [I(24,171)] = {64,0}, + [I(25,171)] = {64,0}, + [I(26,171)] = {64,0}, + [I(27,171)] = {64,0}, + [I(28,171)] = {64,0}, + [I(29,171)] = {64,0}, + [I(30,171)] = {64,0}, + [I(31,171)] = {64,0}, + [I(32,171)] = {30,0x14FFFFF0}, + [I(33,171)] = {64,0}, + [I(34,171)] = {64,0}, + [I(35,171)] = {64,0}, + [I(36,171)] = {64,0}, + [I(37,171)] = {30,0x15FFFFF0}, + [I(38,171)] = {X32,0xF8FFFFF0}, + [I(39,171)] = {64,0}, + [I(40,171)] = {64,0}, + [I(41,171)] = {64,0}, + [I(42,171)] = {X32,0xF9FFFFF0}, + [I(43,171)] = {64,0}, + [I(44,171)] = {X32,0xFAFFFFF0}, + [I(45,171)] = {30,0x16FFFFF0}, + [I(46,171)] = {30,0x17FFFFF0}, + [I(47,171)] = {30,0x18FFFFF0}, + [I(48,171)] = {29,0xFFFFF0}, + [I(49,171)] = {29,0x1FFFFF0}, + [I(50,171)] = {29,0x2FFFFF0}, + [I(51,171)] = {30,0x19FFFFF0}, + [I(52,171)] = {30,0x1AFFFFF0}, + [I(53,171)] = {30,0x1BFFFFF0}, + [I(54,171)] = {30,0x1CFFFFF0}, + [I(55,171)] = {30,0x1DFFFFF0}, + [I(56,171)] = {30,0x1EFFFFF0}, + [I(57,171)] = {30,0x1FFFFFF0}, + [I(58,171)] = {31,0x5CFFFFF0}, + [I(59,171)] = {X32,0xFBFFFFF0}, + [I(60,171)] = {64,0}, + [I(61,171)] = {30,0x20FFFFF0}, + [I(62,171)] = {64,0}, + [I(63,171)] = {64,0}, + [I(64,171)] = {64,0}, + [I(65,171)] = {30,0x21FFFFF0}, + [I(66,171)] = {31,0x5DFFFFF0}, + [I(67,171)] = {31,0x5EFFFFF0}, + [I(68,171)] = {31,0x5FFFFFF0}, + [I(69,171)] = {31,0x60FFFFF0}, + [I(70,171)] = {31,0x61FFFFF0}, + [I(71,171)] = {31,0x62FFFFF0}, + [I(72,171)] = {31,0x63FFFFF0}, + [I(73,171)] = {31,0x64FFFFF0}, + [I(74,171)] = {31,0x65FFFFF0}, + [I(75,171)] = {31,0x66FFFFF0}, + [I(76,171)] = {31,0x67FFFFF0}, + [I(77,171)] = {31,0x68FFFFF0}, + [I(78,171)] = {31,0x69FFFFF0}, + [I(79,171)] = {31,0x6AFFFFF0}, + [I(80,171)] = {31,0x6BFFFFF0}, + [I(81,171)] = {31,0x6CFFFFF0}, + [I(82,171)] = {31,0x6DFFFFF0}, + [I(83,171)] = {31,0x6EFFFFF0}, + [I(84,171)] = {31,0x6FFFFFF0}, + [I(85,171)] = {31,0x70FFFFF0}, + [I(86,171)] = {31,0x71FFFFF0}, + [I(87,171)] = {31,0x72FFFFF0}, + [I(88,171)] = {X32,0xFCFFFFF0}, + [I(89,171)] = {31,0x73FFFFF0}, + [I(90,171)] = {X32,0xFDFFFFF0}, + [I(91,171)] = {64,0}, + [I(92,171)] = {64,0}, + [I(93,171)] = {64,0}, + [I(94,171)] = {64,0}, + [I(95,171)] = {30,0x22FFFFF0}, + [I(96,171)] = {64,0}, + [I(97,171)] = {29,0x3FFFFF0}, + [I(98,171)] = {30,0x23FFFFF0}, + [I(99,171)] = {29,0x4FFFFF0}, + [I(100,171)] = {30,0x24FFFFF0}, + [I(101,171)] = {29,0x5FFFFF0}, + [I(102,171)] = {30,0x25FFFFF0}, + [I(103,171)] = {30,0x26FFFFF0}, + [I(104,171)] = {30,0x27FFFFF0}, + [I(105,171)] = {29,0x6FFFFF0}, + [I(106,171)] = {31,0x74FFFFF0}, + [I(107,171)] = {31,0x75FFFFF0}, + [I(108,171)] = {30,0x28FFFFF0}, + [I(109,171)] = {30,0x29FFFFF0}, + [I(110,171)] = {30,0x2AFFFFF0}, + [I(111,171)] = {29,0x7FFFFF0}, + [I(112,171)] = {30,0x2BFFFFF0}, + [I(113,171)] = {31,0x76FFFFF0}, + [I(114,171)] = {30,0x2CFFFFF0}, + [I(115,171)] = {29,0x8FFFFF0}, + [I(116,171)] = {29,0x9FFFFF0}, + [I(117,171)] = {30,0x2DFFFFF0}, + [I(118,171)] = {31,0x77FFFFF0}, + [I(119,171)] = {31,0x78FFFFF0}, + [I(120,171)] = {31,0x79FFFFF0}, + [I(121,171)] = {31,0x7AFFFFF0}, + [I(122,171)] = {31,0x7BFFFFF0}, + [I(123,171)] = {64,0}, + [I(124,171)] = {64,0}, + [I(125,171)] = {64,0}, + [I(126,171)] = {64,0}, + [I(127,171)] = {64,0}, + [I(128,171)] = {64,0}, + [I(129,171)] = {64,0}, + [I(130,171)] = {64,0}, + [I(131,171)] = {64,0}, + [I(132,171)] = {64,0}, + [I(133,171)] = {64,0}, + [I(134,171)] = {64,0}, + [I(135,171)] = {64,0}, + [I(136,171)] = {64,0}, + [I(137,171)] = {64,0}, + [I(138,171)] = {64,0}, + [I(139,171)] = {64,0}, + [I(140,171)] = {64,0}, + [I(141,171)] = {64,0}, + [I(142,171)] = {64,0}, + [I(143,171)] = {64,0}, + [I(144,171)] = {64,0}, + [I(145,171)] = {64,0}, + [I(146,171)] = {64,0}, + [I(147,171)] = {64,0}, + [I(148,171)] = {64,0}, + [I(149,171)] = {64,0}, + [I(150,171)] = {64,0}, + [I(151,171)] = {64,0}, + [I(152,171)] = {64,0}, + [I(153,171)] = {64,0}, + [I(154,171)] = {64,0}, + [I(155,171)] = {64,0}, + [I(156,171)] = {64,0}, + [I(157,171)] = {64,0}, + [I(158,171)] = {64,0}, + [I(159,171)] = {64,0}, + [I(160,171)] = {64,0}, + [I(161,171)] = {64,0}, + [I(162,171)] = {64,0}, + [I(163,171)] = {64,0}, + [I(164,171)] = {64,0}, + [I(165,171)] = {64,0}, + [I(166,171)] = {64,0}, + [I(167,171)] = {64,0}, + [I(168,171)] = {64,0}, + [I(169,171)] = {64,0}, + [I(170,171)] = {64,0}, + [I(171,171)] = {64,0}, + [I(172,171)] = {64,0}, + [I(173,171)] = {64,0}, + [I(174,171)] = {64,0}, + [I(175,171)] = {64,0}, + [I(176,171)] = {64,0}, + [I(177,171)] = {64,0}, + [I(178,171)] = {64,0}, + [I(179,171)] = {64,0}, + [I(180,171)] = {64,0}, + [I(181,171)] = {64,0}, + [I(182,171)] = {64,0}, + [I(183,171)] = {64,0}, + [I(184,171)] = {64,0}, + [I(185,171)] = {64,0}, + [I(186,171)] = {64,0}, + [I(187,171)] = {64,0}, + [I(188,171)] = {64,0}, + [I(189,171)] = {64,0}, + [I(190,171)] = {64,0}, + [I(191,171)] = {64,0}, + [I(192,171)] = {64,0}, + [I(193,171)] = {64,0}, + [I(194,171)] = {64,0}, + [I(195,171)] = {64,0}, + [I(196,171)] = {64,0}, + [I(197,171)] = {64,0}, + [I(198,171)] = {64,0}, + [I(199,171)] = {64,0}, + [I(200,171)] = {64,0}, + [I(201,171)] = {64,0}, + [I(202,171)] = {64,0}, + [I(203,171)] = {64,0}, + [I(204,171)] = {64,0}, + [I(205,171)] = {64,0}, + [I(206,171)] = {64,0}, + [I(207,171)] = {64,0}, + [I(208,171)] = {64,0}, + [I(209,171)] = {64,0}, + [I(210,171)] = {64,0}, + [I(211,171)] = {64,0}, + [I(212,171)] = {64,0}, + [I(213,171)] = {64,0}, + [I(214,171)] = {64,0}, + [I(215,171)] = {64,0}, + [I(216,171)] = {64,0}, + [I(217,171)] = {64,0}, + [I(218,171)] = {64,0}, + [I(219,171)] = {64,0}, + [I(220,171)] = {64,0}, + [I(221,171)] = {64,0}, + [I(222,171)] = {64,0}, + [I(223,171)] = {64,0}, + [I(224,171)] = {64,0}, + [I(225,171)] = {64,0}, + [I(226,171)] = {64,0}, + [I(227,171)] = {64,0}, + [I(228,171)] = {64,0}, + [I(229,171)] = {64,0}, + [I(230,171)] = {64,0}, + [I(231,171)] = {64,0}, + [I(232,171)] = {64,0}, + [I(233,171)] = {64,0}, + [I(234,171)] = {64,0}, + [I(235,171)] = {64,0}, + [I(236,171)] = {64,0}, + [I(237,171)] = {64,0}, + [I(238,171)] = {64,0}, + [I(239,171)] = {64,0}, + [I(240,171)] = {64,0}, + [I(241,171)] = {64,0}, + [I(242,171)] = {64,0}, + [I(243,171)] = {64,0}, + [I(244,171)] = {64,0}, + [I(245,171)] = {64,0}, + [I(246,171)] = {64,0}, + [I(247,171)] = {64,0}, + [I(248,171)] = {64,0}, + [I(249,171)] = {64,0}, + [I(250,171)] = {64,0}, + [I(251,171)] = {64,0}, + [I(252,171)] = {64,0}, + [I(253,171)] = {64,0}, + [I(254,171)] = {64,0}, + [I(255,171)] = {64,0}, + [I(0,172)] = {64,0}, + [I(1,172)] = {64,0}, + [I(2,172)] = {64,0}, + [I(3,172)] = {64,0}, + [I(4,172)] = {64,0}, + [I(5,172)] = {64,0}, + [I(6,172)] = {64,0}, + [I(7,172)] = {64,0}, + [I(8,172)] = {64,0}, + [I(9,172)] = {64,0}, + [I(10,172)] = {64,0}, + [I(11,172)] = {64,0}, + [I(12,172)] = {64,0}, + [I(13,172)] = {64,0}, + [I(14,172)] = {64,0}, + [I(15,172)] = {64,0}, + [I(16,172)] = {64,0}, + [I(17,172)] = {64,0}, + [I(18,172)] = {64,0}, + [I(19,172)] = {64,0}, + [I(20,172)] = {64,0}, + [I(21,172)] = {64,0}, + [I(22,172)] = {64,0}, + [I(23,172)] = {64,0}, + [I(24,172)] = {64,0}, + [I(25,172)] = {64,0}, + [I(26,172)] = {64,0}, + [I(27,172)] = {64,0}, + [I(28,172)] = {64,0}, + [I(29,172)] = {64,0}, + [I(30,172)] = {64,0}, + [I(31,172)] = {64,0}, + [I(32,172)] = {27,0x29FFFDF}, + [I(33,172)] = {31,0x7F1FFFDF}, + [I(34,172)] = {31,0x7F3FFFDF}, + [I(35,172)] = {64,0}, + [I(36,172)] = {64,0}, + [I(37,172)] = {27,0x2BFFFDF}, + [I(38,172)] = {29,0x1F1FFFDF}, + [I(39,172)] = {X32,0xFF5FFFDF}, + [I(40,172)] = {31,0x7F5FFFDF}, + [I(41,172)] = {31,0x7F7FFFDF}, + [I(42,172)] = {29,0x1F3FFFDF}, + [I(43,172)] = {X32,0xFF7FFFDF}, + [I(44,172)] = {29,0x1F5FFFDF}, + [I(45,172)] = {27,0x2DFFFDF}, + [I(46,172)] = {27,0x2FFFFDF}, + [I(47,172)] = {27,0x31FFFDF}, + [I(48,172)] = {26,0x1FFFDF}, + [I(49,172)] = {26,0x3FFFDF}, + [I(50,172)] = {26,0x5FFFDF}, + [I(51,172)] = {27,0x33FFFDF}, + [I(52,172)] = {27,0x35FFFDF}, + [I(53,172)] = {27,0x37FFFDF}, + [I(54,172)] = {27,0x39FFFDF}, + [I(55,172)] = {27,0x3BFFFDF}, + [I(56,172)] = {27,0x3DFFFDF}, + [I(57,172)] = {27,0x3FFFFDF}, + [I(58,172)] = {28,0xB9FFFDF}, + [I(59,172)] = {29,0x1F7FFFDF}, + [I(60,172)] = {64,0}, + [I(61,172)] = {27,0x41FFFDF}, + [I(62,172)] = {64,0}, + [I(63,172)] = {31,0x7F9FFFDF}, + [I(64,172)] = {64,0}, + [I(65,172)] = {27,0x43FFFDF}, + [I(66,172)] = {28,0xBBFFFDF}, + [I(67,172)] = {28,0xBDFFFDF}, + [I(68,172)] = {28,0xBFFFFDF}, + [I(69,172)] = {28,0xC1FFFDF}, + [I(70,172)] = {28,0xC3FFFDF}, + [I(71,172)] = {28,0xC5FFFDF}, + [I(72,172)] = {28,0xC7FFFDF}, + [I(73,172)] = {28,0xC9FFFDF}, + [I(74,172)] = {28,0xCBFFFDF}, + [I(75,172)] = {28,0xCDFFFDF}, + [I(76,172)] = {28,0xCFFFFDF}, + [I(77,172)] = {28,0xD1FFFDF}, + [I(78,172)] = {28,0xD3FFFDF}, + [I(79,172)] = {28,0xD5FFFDF}, + [I(80,172)] = {28,0xD7FFFDF}, + [I(81,172)] = {28,0xD9FFFDF}, + [I(82,172)] = {28,0xDBFFFDF}, + [I(83,172)] = {28,0xDDFFFDF}, + [I(84,172)] = {28,0xDFFFFDF}, + [I(85,172)] = {28,0xE1FFFDF}, + [I(86,172)] = {28,0xE3FFFDF}, + [I(87,172)] = {28,0xE5FFFDF}, + [I(88,172)] = {29,0x1F9FFFDF}, + [I(89,172)] = {28,0xE7FFFDF}, + [I(90,172)] = {29,0x1FBFFFDF}, + [I(91,172)] = {64,0}, + [I(92,172)] = {64,0}, + [I(93,172)] = {64,0}, + [I(94,172)] = {64,0}, + [I(95,172)] = {27,0x45FFFDF}, + [I(96,172)] = {64,0}, + [I(97,172)] = {26,0x7FFFDF}, + [I(98,172)] = {27,0x47FFFDF}, + [I(99,172)] = {26,0x9FFFDF}, + [I(100,172)] = {27,0x49FFFDF}, + [I(101,172)] = {26,0xBFFFDF}, + [I(102,172)] = {27,0x4BFFFDF}, + [I(103,172)] = {27,0x4DFFFDF}, + [I(104,172)] = {27,0x4FFFFDF}, + [I(105,172)] = {26,0xDFFFDF}, + [I(106,172)] = {28,0xE9FFFDF}, + [I(107,172)] = {28,0xEBFFFDF}, + [I(108,172)] = {27,0x51FFFDF}, + [I(109,172)] = {27,0x53FFFDF}, + [I(110,172)] = {27,0x55FFFDF}, + [I(111,172)] = {26,0xFFFFDF}, + [I(112,172)] = {27,0x57FFFDF}, + [I(113,172)] = {28,0xEDFFFDF}, + [I(114,172)] = {27,0x59FFFDF}, + [I(115,172)] = {26,0x11FFFDF}, + [I(116,172)] = {26,0x13FFFDF}, + [I(117,172)] = {27,0x5BFFFDF}, + [I(118,172)] = {28,0xEFFFFDF}, + [I(119,172)] = {28,0xF1FFFDF}, + [I(120,172)] = {28,0xF3FFFDF}, + [I(121,172)] = {28,0xF5FFFDF}, + [I(122,172)] = {28,0xF7FFFDF}, + [I(123,172)] = {64,0}, + [I(124,172)] = {X32,0xFF9FFFDF}, + [I(125,172)] = {64,0}, + [I(126,172)] = {64,0}, + [I(127,172)] = {64,0}, + [I(128,172)] = {64,0}, + [I(129,172)] = {64,0}, + [I(130,172)] = {64,0}, + [I(131,172)] = {64,0}, + [I(132,172)] = {64,0}, + [I(133,172)] = {64,0}, + [I(134,172)] = {64,0}, + [I(135,172)] = {64,0}, + [I(136,172)] = {64,0}, + [I(137,172)] = {64,0}, + [I(138,172)] = {64,0}, + [I(139,172)] = {64,0}, + [I(140,172)] = {64,0}, + [I(141,172)] = {64,0}, + [I(142,172)] = {64,0}, + [I(143,172)] = {64,0}, + [I(144,172)] = {64,0}, + [I(145,172)] = {64,0}, + [I(146,172)] = {64,0}, + [I(147,172)] = {64,0}, + [I(148,172)] = {64,0}, + [I(149,172)] = {64,0}, + [I(150,172)] = {64,0}, + [I(151,172)] = {64,0}, + [I(152,172)] = {64,0}, + [I(153,172)] = {64,0}, + [I(154,172)] = {64,0}, + [I(155,172)] = {64,0}, + [I(156,172)] = {64,0}, + [I(157,172)] = {64,0}, + [I(158,172)] = {64,0}, + [I(159,172)] = {64,0}, + [I(160,172)] = {64,0}, + [I(161,172)] = {64,0}, + [I(162,172)] = {64,0}, + [I(163,172)] = {64,0}, + [I(164,172)] = {64,0}, + [I(165,172)] = {64,0}, + [I(166,172)] = {64,0}, + [I(167,172)] = {64,0}, + [I(168,172)] = {64,0}, + [I(169,172)] = {64,0}, + [I(170,172)] = {64,0}, + [I(171,172)] = {64,0}, + [I(172,172)] = {64,0}, + [I(173,172)] = {64,0}, + [I(174,172)] = {64,0}, + [I(175,172)] = {64,0}, + [I(176,172)] = {64,0}, + [I(177,172)] = {64,0}, + [I(178,172)] = {64,0}, + [I(179,172)] = {64,0}, + [I(180,172)] = {64,0}, + [I(181,172)] = {64,0}, + [I(182,172)] = {64,0}, + [I(183,172)] = {64,0}, + [I(184,172)] = {64,0}, + [I(185,172)] = {64,0}, + [I(186,172)] = {64,0}, + [I(187,172)] = {64,0}, + [I(188,172)] = {64,0}, + [I(189,172)] = {64,0}, + [I(190,172)] = {64,0}, + [I(191,172)] = {64,0}, + [I(192,172)] = {64,0}, + [I(193,172)] = {64,0}, + [I(194,172)] = {64,0}, + [I(195,172)] = {64,0}, + [I(196,172)] = {64,0}, + [I(197,172)] = {64,0}, + [I(198,172)] = {64,0}, + [I(199,172)] = {64,0}, + [I(200,172)] = {64,0}, + [I(201,172)] = {64,0}, + [I(202,172)] = {64,0}, + [I(203,172)] = {64,0}, + [I(204,172)] = {64,0}, + [I(205,172)] = {64,0}, + [I(206,172)] = {64,0}, + [I(207,172)] = {64,0}, + [I(208,172)] = {64,0}, + [I(209,172)] = {64,0}, + [I(210,172)] = {64,0}, + [I(211,172)] = {64,0}, + [I(212,172)] = {64,0}, + [I(213,172)] = {64,0}, + [I(214,172)] = {64,0}, + [I(215,172)] = {64,0}, + [I(216,172)] = {64,0}, + [I(217,172)] = {64,0}, + [I(218,172)] = {64,0}, + [I(219,172)] = {64,0}, + [I(220,172)] = {64,0}, + [I(221,172)] = {64,0}, + [I(222,172)] = {64,0}, + [I(223,172)] = {64,0}, + [I(224,172)] = {64,0}, + [I(225,172)] = {64,0}, + [I(226,172)] = {64,0}, + [I(227,172)] = {64,0}, + [I(228,172)] = {64,0}, + [I(229,172)] = {64,0}, + [I(230,172)] = {64,0}, + [I(231,172)] = {64,0}, + [I(232,172)] = {64,0}, + [I(233,172)] = {64,0}, + [I(234,172)] = {64,0}, + [I(235,172)] = {64,0}, + [I(236,172)] = {64,0}, + [I(237,172)] = {64,0}, + [I(238,172)] = {64,0}, + [I(239,172)] = {64,0}, + [I(240,172)] = {64,0}, + [I(241,172)] = {64,0}, + [I(242,172)] = {64,0}, + [I(243,172)] = {64,0}, + [I(244,172)] = {64,0}, + [I(245,172)] = {64,0}, + [I(246,172)] = {64,0}, + [I(247,172)] = {64,0}, + [I(248,172)] = {64,0}, + [I(249,172)] = {64,0}, + [I(250,172)] = {64,0}, + [I(251,172)] = {64,0}, + [I(252,172)] = {64,0}, + [I(253,172)] = {64,0}, + [I(254,172)] = {64,0}, + [I(255,172)] = {64,0}, + [I(0,173)] = {64,0}, + [I(1,173)] = {64,0}, + [I(2,173)] = {64,0}, + [I(3,173)] = {64,0}, + [I(4,173)] = {64,0}, + [I(5,173)] = {64,0}, + [I(6,173)] = {64,0}, + [I(7,173)] = {64,0}, + [I(8,173)] = {64,0}, + [I(9,173)] = {64,0}, + [I(10,173)] = {64,0}, + [I(11,173)] = {64,0}, + [I(12,173)] = {64,0}, + [I(13,173)] = {64,0}, + [I(14,173)] = {64,0}, + [I(15,173)] = {64,0}, + [I(16,173)] = {64,0}, + [I(17,173)] = {64,0}, + [I(18,173)] = {64,0}, + [I(19,173)] = {64,0}, + [I(20,173)] = {64,0}, + [I(21,173)] = {64,0}, + [I(22,173)] = {64,0}, + [I(23,173)] = {64,0}, + [I(24,173)] = {64,0}, + [I(25,173)] = {64,0}, + [I(26,173)] = {64,0}, + [I(27,173)] = {64,0}, + [I(28,173)] = {64,0}, + [I(29,173)] = {64,0}, + [I(30,173)] = {64,0}, + [I(31,173)] = {64,0}, + [I(32,173)] = {28,0x53FFFDF}, + [I(33,173)] = {X32,0xFE3FFFDF}, + [I(34,173)] = {X32,0xFE7FFFDF}, + [I(35,173)] = {64,0}, + [I(36,173)] = {64,0}, + [I(37,173)] = {28,0x57FFFDF}, + [I(38,173)] = {30,0x3E3FFFDF}, + [I(39,173)] = {64,0}, + [I(40,173)] = {X32,0xFEBFFFDF}, + [I(41,173)] = {X32,0xFEFFFFDF}, + [I(42,173)] = {30,0x3E7FFFDF}, + [I(43,173)] = {64,0}, + [I(44,173)] = {30,0x3EBFFFDF}, + [I(45,173)] = {28,0x5BFFFDF}, + [I(46,173)] = {28,0x5FFFFDF}, + [I(47,173)] = {28,0x63FFFDF}, + [I(48,173)] = {27,0x3FFFDF}, + [I(49,173)] = {27,0x7FFFDF}, + [I(50,173)] = {27,0xBFFFDF}, + [I(51,173)] = {28,0x67FFFDF}, + [I(52,173)] = {28,0x6BFFFDF}, + [I(53,173)] = {28,0x6FFFFDF}, + [I(54,173)] = {28,0x73FFFDF}, + [I(55,173)] = {28,0x77FFFDF}, + [I(56,173)] = {28,0x7BFFFDF}, + [I(57,173)] = {28,0x7FFFFDF}, + [I(58,173)] = {29,0x173FFFDF}, + [I(59,173)] = {30,0x3EFFFFDF}, + [I(60,173)] = {64,0}, + [I(61,173)] = {28,0x83FFFDF}, + [I(62,173)] = {64,0}, + [I(63,173)] = {X32,0xFF3FFFDF}, + [I(64,173)] = {64,0}, + [I(65,173)] = {28,0x87FFFDF}, + [I(66,173)] = {29,0x177FFFDF}, + [I(67,173)] = {29,0x17BFFFDF}, + [I(68,173)] = {29,0x17FFFFDF}, + [I(69,173)] = {29,0x183FFFDF}, + [I(70,173)] = {29,0x187FFFDF}, + [I(71,173)] = {29,0x18BFFFDF}, + [I(72,173)] = {29,0x18FFFFDF}, + [I(73,173)] = {29,0x193FFFDF}, + [I(74,173)] = {29,0x197FFFDF}, + [I(75,173)] = {29,0x19BFFFDF}, + [I(76,173)] = {29,0x19FFFFDF}, + [I(77,173)] = {29,0x1A3FFFDF}, + [I(78,173)] = {29,0x1A7FFFDF}, + [I(79,173)] = {29,0x1ABFFFDF}, + [I(80,173)] = {29,0x1AFFFFDF}, + [I(81,173)] = {29,0x1B3FFFDF}, + [I(82,173)] = {29,0x1B7FFFDF}, + [I(83,173)] = {29,0x1BBFFFDF}, + [I(84,173)] = {29,0x1BFFFFDF}, + [I(85,173)] = {29,0x1C3FFFDF}, + [I(86,173)] = {29,0x1C7FFFDF}, + [I(87,173)] = {29,0x1CBFFFDF}, + [I(88,173)] = {30,0x3F3FFFDF}, + [I(89,173)] = {29,0x1CFFFFDF}, + [I(90,173)] = {30,0x3F7FFFDF}, + [I(91,173)] = {64,0}, + [I(92,173)] = {64,0}, + [I(93,173)] = {64,0}, + [I(94,173)] = {64,0}, + [I(95,173)] = {28,0x8BFFFDF}, + [I(96,173)] = {64,0}, + [I(97,173)] = {27,0xFFFFDF}, + [I(98,173)] = {28,0x8FFFFDF}, + [I(99,173)] = {27,0x13FFFDF}, + [I(100,173)] = {28,0x93FFFDF}, + [I(101,173)] = {27,0x17FFFDF}, + [I(102,173)] = {28,0x97FFFDF}, + [I(103,173)] = {28,0x9BFFFDF}, + [I(104,173)] = {28,0x9FFFFDF}, + [I(105,173)] = {27,0x1BFFFDF}, + [I(106,173)] = {29,0x1D3FFFDF}, + [I(107,173)] = {29,0x1D7FFFDF}, + [I(108,173)] = {28,0xA3FFFDF}, + [I(109,173)] = {28,0xA7FFFDF}, + [I(110,173)] = {28,0xABFFFDF}, + [I(111,173)] = {27,0x1FFFFDF}, + [I(112,173)] = {28,0xAFFFFDF}, + [I(113,173)] = {29,0x1DBFFFDF}, + [I(114,173)] = {28,0xB3FFFDF}, + [I(115,173)] = {27,0x23FFFDF}, + [I(116,173)] = {27,0x27FFFDF}, + [I(117,173)] = {28,0xB7FFFDF}, + [I(118,173)] = {29,0x1DFFFFDF}, + [I(119,173)] = {29,0x1E3FFFDF}, + [I(120,173)] = {29,0x1E7FFFDF}, + [I(121,173)] = {29,0x1EBFFFDF}, + [I(122,173)] = {29,0x1EFFFFDF}, + [I(123,173)] = {64,0}, + [I(124,173)] = {64,0}, + [I(125,173)] = {64,0}, + [I(126,173)] = {64,0}, + [I(127,173)] = {64,0}, + [I(128,173)] = {64,0}, + [I(129,173)] = {64,0}, + [I(130,173)] = {64,0}, + [I(131,173)] = {64,0}, + [I(132,173)] = {64,0}, + [I(133,173)] = {64,0}, + [I(134,173)] = {64,0}, + [I(135,173)] = {64,0}, + [I(136,173)] = {64,0}, + [I(137,173)] = {64,0}, + [I(138,173)] = {64,0}, + [I(139,173)] = {64,0}, + [I(140,173)] = {64,0}, + [I(141,173)] = {64,0}, + [I(142,173)] = {64,0}, + [I(143,173)] = {64,0}, + [I(144,173)] = {64,0}, + [I(145,173)] = {64,0}, + [I(146,173)] = {64,0}, + [I(147,173)] = {64,0}, + [I(148,173)] = {64,0}, + [I(149,173)] = {64,0}, + [I(150,173)] = {64,0}, + [I(151,173)] = {64,0}, + [I(152,173)] = {64,0}, + [I(153,173)] = {64,0}, + [I(154,173)] = {64,0}, + [I(155,173)] = {64,0}, + [I(156,173)] = {64,0}, + [I(157,173)] = {64,0}, + [I(158,173)] = {64,0}, + [I(159,173)] = {64,0}, + [I(160,173)] = {64,0}, + [I(161,173)] = {64,0}, + [I(162,173)] = {64,0}, + [I(163,173)] = {64,0}, + [I(164,173)] = {64,0}, + [I(165,173)] = {64,0}, + [I(166,173)] = {64,0}, + [I(167,173)] = {64,0}, + [I(168,173)] = {64,0}, + [I(169,173)] = {64,0}, + [I(170,173)] = {64,0}, + [I(171,173)] = {64,0}, + [I(172,173)] = {64,0}, + [I(173,173)] = {64,0}, + [I(174,173)] = {64,0}, + [I(175,173)] = {64,0}, + [I(176,173)] = {64,0}, + [I(177,173)] = {64,0}, + [I(178,173)] = {64,0}, + [I(179,173)] = {64,0}, + [I(180,173)] = {64,0}, + [I(181,173)] = {64,0}, + [I(182,173)] = {64,0}, + [I(183,173)] = {64,0}, + [I(184,173)] = {64,0}, + [I(185,173)] = {64,0}, + [I(186,173)] = {64,0}, + [I(187,173)] = {64,0}, + [I(188,173)] = {64,0}, + [I(189,173)] = {64,0}, + [I(190,173)] = {64,0}, + [I(191,173)] = {64,0}, + [I(192,173)] = {64,0}, + [I(193,173)] = {64,0}, + [I(194,173)] = {64,0}, + [I(195,173)] = {64,0}, + [I(196,173)] = {64,0}, + [I(197,173)] = {64,0}, + [I(198,173)] = {64,0}, + [I(199,173)] = {64,0}, + [I(200,173)] = {64,0}, + [I(201,173)] = {64,0}, + [I(202,173)] = {64,0}, + [I(203,173)] = {64,0}, + [I(204,173)] = {64,0}, + [I(205,173)] = {64,0}, + [I(206,173)] = {64,0}, + [I(207,173)] = {64,0}, + [I(208,173)] = {64,0}, + [I(209,173)] = {64,0}, + [I(210,173)] = {64,0}, + [I(211,173)] = {64,0}, + [I(212,173)] = {64,0}, + [I(213,173)] = {64,0}, + [I(214,173)] = {64,0}, + [I(215,173)] = {64,0}, + [I(216,173)] = {64,0}, + [I(217,173)] = {64,0}, + [I(218,173)] = {64,0}, + [I(219,173)] = {64,0}, + [I(220,173)] = {64,0}, + [I(221,173)] = {64,0}, + [I(222,173)] = {64,0}, + [I(223,173)] = {64,0}, + [I(224,173)] = {64,0}, + [I(225,173)] = {64,0}, + [I(226,173)] = {64,0}, + [I(227,173)] = {64,0}, + [I(228,173)] = {64,0}, + [I(229,173)] = {64,0}, + [I(230,173)] = {64,0}, + [I(231,173)] = {64,0}, + [I(232,173)] = {64,0}, + [I(233,173)] = {64,0}, + [I(234,173)] = {64,0}, + [I(235,173)] = {64,0}, + [I(236,173)] = {64,0}, + [I(237,173)] = {64,0}, + [I(238,173)] = {64,0}, + [I(239,173)] = {64,0}, + [I(240,173)] = {64,0}, + [I(241,173)] = {64,0}, + [I(242,173)] = {64,0}, + [I(243,173)] = {64,0}, + [I(244,173)] = {64,0}, + [I(245,173)] = {64,0}, + [I(246,173)] = {64,0}, + [I(247,173)] = {64,0}, + [I(248,173)] = {64,0}, + [I(249,173)] = {64,0}, + [I(250,173)] = {64,0}, + [I(251,173)] = {64,0}, + [I(252,173)] = {64,0}, + [I(253,173)] = {64,0}, + [I(254,173)] = {64,0}, + [I(255,173)] = {64,0}, + [I(0,174)] = {64,0}, + [I(1,174)] = {64,0}, + [I(2,174)] = {64,0}, + [I(3,174)] = {64,0}, + [I(4,174)] = {64,0}, + [I(5,174)] = {64,0}, + [I(6,174)] = {64,0}, + [I(7,174)] = {64,0}, + [I(8,174)] = {64,0}, + [I(9,174)] = {64,0}, + [I(10,174)] = {64,0}, + [I(11,174)] = {64,0}, + [I(12,174)] = {64,0}, + [I(13,174)] = {64,0}, + [I(14,174)] = {64,0}, + [I(15,174)] = {64,0}, + [I(16,174)] = {64,0}, + [I(17,174)] = {64,0}, + [I(18,174)] = {64,0}, + [I(19,174)] = {64,0}, + [I(20,174)] = {64,0}, + [I(21,174)] = {64,0}, + [I(22,174)] = {64,0}, + [I(23,174)] = {64,0}, + [I(24,174)] = {64,0}, + [I(25,174)] = {64,0}, + [I(26,174)] = {64,0}, + [I(27,174)] = {64,0}, + [I(28,174)] = {64,0}, + [I(29,174)] = {64,0}, + [I(30,174)] = {64,0}, + [I(31,174)] = {64,0}, + [I(32,174)] = {29,0xA7FFFEB}, + [I(33,174)] = {64,0}, + [I(34,174)] = {64,0}, + [I(35,174)] = {64,0}, + [I(36,174)] = {64,0}, + [I(37,174)] = {29,0xAFFFFEB}, + [I(38,174)] = {31,0x7C7FFFEB}, + [I(39,174)] = {64,0}, + [I(40,174)] = {64,0}, + [I(41,174)] = {64,0}, + [I(42,174)] = {31,0x7CFFFFEB}, + [I(43,174)] = {64,0}, + [I(44,174)] = {31,0x7D7FFFEB}, + [I(45,174)] = {29,0xB7FFFEB}, + [I(46,174)] = {29,0xBFFFFEB}, + [I(47,174)] = {29,0xC7FFFEB}, + [I(48,174)] = {28,0x7FFFEB}, + [I(49,174)] = {28,0xFFFFEB}, + [I(50,174)] = {28,0x17FFFEB}, + [I(51,174)] = {29,0xCFFFFEB}, + [I(52,174)] = {29,0xD7FFFEB}, + [I(53,174)] = {29,0xDFFFFEB}, + [I(54,174)] = {29,0xE7FFFEB}, + [I(55,174)] = {29,0xEFFFFEB}, + [I(56,174)] = {29,0xF7FFFEB}, + [I(57,174)] = {29,0xFFFFFEB}, + [I(58,174)] = {30,0x2E7FFFEB}, + [I(59,174)] = {31,0x7DFFFFEB}, + [I(60,174)] = {64,0}, + [I(61,174)] = {29,0x107FFFEB}, + [I(62,174)] = {64,0}, + [I(63,174)] = {64,0}, + [I(64,174)] = {64,0}, + [I(65,174)] = {29,0x10FFFFEB}, + [I(66,174)] = {30,0x2EFFFFEB}, + [I(67,174)] = {30,0x2F7FFFEB}, + [I(68,174)] = {30,0x2FFFFFEB}, + [I(69,174)] = {30,0x307FFFEB}, + [I(70,174)] = {30,0x30FFFFEB}, + [I(71,174)] = {30,0x317FFFEB}, + [I(72,174)] = {30,0x31FFFFEB}, + [I(73,174)] = {30,0x327FFFEB}, + [I(74,174)] = {30,0x32FFFFEB}, + [I(75,174)] = {30,0x337FFFEB}, + [I(76,174)] = {30,0x33FFFFEB}, + [I(77,174)] = {30,0x347FFFEB}, + [I(78,174)] = {30,0x34FFFFEB}, + [I(79,174)] = {30,0x357FFFEB}, + [I(80,174)] = {30,0x35FFFFEB}, + [I(81,174)] = {30,0x367FFFEB}, + [I(82,174)] = {30,0x36FFFFEB}, + [I(83,174)] = {30,0x377FFFEB}, + [I(84,174)] = {30,0x37FFFFEB}, + [I(85,174)] = {30,0x387FFFEB}, + [I(86,174)] = {30,0x38FFFFEB}, + [I(87,174)] = {30,0x397FFFEB}, + [I(88,174)] = {31,0x7E7FFFEB}, + [I(89,174)] = {30,0x39FFFFEB}, + [I(90,174)] = {31,0x7EFFFFEB}, + [I(91,174)] = {64,0}, + [I(92,174)] = {64,0}, + [I(93,174)] = {64,0}, + [I(94,174)] = {64,0}, + [I(95,174)] = {29,0x117FFFEB}, + [I(96,174)] = {64,0}, + [I(97,174)] = {28,0x1FFFFEB}, + [I(98,174)] = {29,0x11FFFFEB}, + [I(99,174)] = {28,0x27FFFEB}, + [I(100,174)] = {29,0x127FFFEB}, + [I(101,174)] = {28,0x2FFFFEB}, + [I(102,174)] = {29,0x12FFFFEB}, + [I(103,174)] = {29,0x137FFFEB}, + [I(104,174)] = {29,0x13FFFFEB}, + [I(105,174)] = {28,0x37FFFEB}, + [I(106,174)] = {30,0x3A7FFFEB}, + [I(107,174)] = {30,0x3AFFFFEB}, + [I(108,174)] = {29,0x147FFFEB}, + [I(109,174)] = {29,0x14FFFFEB}, + [I(110,174)] = {29,0x157FFFEB}, + [I(111,174)] = {28,0x3FFFFEB}, + [I(112,174)] = {29,0x15FFFFEB}, + [I(113,174)] = {30,0x3B7FFFEB}, + [I(114,174)] = {29,0x167FFFEB}, + [I(115,174)] = {28,0x47FFFEB}, + [I(116,174)] = {28,0x4FFFFEB}, + [I(117,174)] = {29,0x16FFFFEB}, + [I(118,174)] = {30,0x3BFFFFEB}, + [I(119,174)] = {30,0x3C7FFFEB}, + [I(120,174)] = {30,0x3CFFFFEB}, + [I(121,174)] = {30,0x3D7FFFEB}, + [I(122,174)] = {30,0x3DFFFFEB}, + [I(123,174)] = {64,0}, + [I(124,174)] = {64,0}, + [I(125,174)] = {64,0}, + [I(126,174)] = {64,0}, + [I(127,174)] = {64,0}, + [I(128,174)] = {64,0}, + [I(129,174)] = {64,0}, + [I(130,174)] = {64,0}, + [I(131,174)] = {64,0}, + [I(132,174)] = {64,0}, + [I(133,174)] = {64,0}, + [I(134,174)] = {64,0}, + [I(135,174)] = {64,0}, + [I(136,174)] = {64,0}, + [I(137,174)] = {64,0}, + [I(138,174)] = {64,0}, + [I(139,174)] = {64,0}, + [I(140,174)] = {64,0}, + [I(141,174)] = {64,0}, + [I(142,174)] = {64,0}, + [I(143,174)] = {64,0}, + [I(144,174)] = {64,0}, + [I(145,174)] = {64,0}, + [I(146,174)] = {64,0}, + [I(147,174)] = {64,0}, + [I(148,174)] = {64,0}, + [I(149,174)] = {64,0}, + [I(150,174)] = {64,0}, + [I(151,174)] = {64,0}, + [I(152,174)] = {64,0}, + [I(153,174)] = {64,0}, + [I(154,174)] = {64,0}, + [I(155,174)] = {64,0}, + [I(156,174)] = {64,0}, + [I(157,174)] = {64,0}, + [I(158,174)] = {64,0}, + [I(159,174)] = {64,0}, + [I(160,174)] = {64,0}, + [I(161,174)] = {64,0}, + [I(162,174)] = {64,0}, + [I(163,174)] = {64,0}, + [I(164,174)] = {64,0}, + [I(165,174)] = {64,0}, + [I(166,174)] = {64,0}, + [I(167,174)] = {64,0}, + [I(168,174)] = {64,0}, + [I(169,174)] = {64,0}, + [I(170,174)] = {64,0}, + [I(171,174)] = {64,0}, + [I(172,174)] = {64,0}, + [I(173,174)] = {64,0}, + [I(174,174)] = {64,0}, + [I(175,174)] = {64,0}, + [I(176,174)] = {64,0}, + [I(177,174)] = {64,0}, + [I(178,174)] = {64,0}, + [I(179,174)] = {64,0}, + [I(180,174)] = {64,0}, + [I(181,174)] = {64,0}, + [I(182,174)] = {64,0}, + [I(183,174)] = {64,0}, + [I(184,174)] = {64,0}, + [I(185,174)] = {64,0}, + [I(186,174)] = {64,0}, + [I(187,174)] = {64,0}, + [I(188,174)] = {64,0}, + [I(189,174)] = {64,0}, + [I(190,174)] = {64,0}, + [I(191,174)] = {64,0}, + [I(192,174)] = {64,0}, + [I(193,174)] = {64,0}, + [I(194,174)] = {64,0}, + [I(195,174)] = {64,0}, + [I(196,174)] = {64,0}, + [I(197,174)] = {64,0}, + [I(198,174)] = {64,0}, + [I(199,174)] = {64,0}, + [I(200,174)] = {64,0}, + [I(201,174)] = {64,0}, + [I(202,174)] = {64,0}, + [I(203,174)] = {64,0}, + [I(204,174)] = {64,0}, + [I(205,174)] = {64,0}, + [I(206,174)] = {64,0}, + [I(207,174)] = {64,0}, + [I(208,174)] = {64,0}, + [I(209,174)] = {64,0}, + [I(210,174)] = {64,0}, + [I(211,174)] = {64,0}, + [I(212,174)] = {64,0}, + [I(213,174)] = {64,0}, + [I(214,174)] = {64,0}, + [I(215,174)] = {64,0}, + [I(216,174)] = {64,0}, + [I(217,174)] = {64,0}, + [I(218,174)] = {64,0}, + [I(219,174)] = {64,0}, + [I(220,174)] = {64,0}, + [I(221,174)] = {64,0}, + [I(222,174)] = {64,0}, + [I(223,174)] = {64,0}, + [I(224,174)] = {64,0}, + [I(225,174)] = {64,0}, + [I(226,174)] = {64,0}, + [I(227,174)] = {64,0}, + [I(228,174)] = {64,0}, + [I(229,174)] = {64,0}, + [I(230,174)] = {64,0}, + [I(231,174)] = {64,0}, + [I(232,174)] = {64,0}, + [I(233,174)] = {64,0}, + [I(234,174)] = {64,0}, + [I(235,174)] = {64,0}, + [I(236,174)] = {64,0}, + [I(237,174)] = {64,0}, + [I(238,174)] = {64,0}, + [I(239,174)] = {64,0}, + [I(240,174)] = {64,0}, + [I(241,174)] = {64,0}, + [I(242,174)] = {64,0}, + [I(243,174)] = {64,0}, + [I(244,174)] = {64,0}, + [I(245,174)] = {64,0}, + [I(246,174)] = {64,0}, + [I(247,174)] = {64,0}, + [I(248,174)] = {64,0}, + [I(249,174)] = {64,0}, + [I(250,174)] = {64,0}, + [I(251,174)] = {64,0}, + [I(252,174)] = {64,0}, + [I(253,174)] = {64,0}, + [I(254,174)] = {64,0}, + [I(255,174)] = {64,0}, + [I(0,175)] = {64,0}, + [I(1,175)] = {64,0}, + [I(2,175)] = {64,0}, + [I(3,175)] = {64,0}, + [I(4,175)] = {64,0}, + [I(5,175)] = {64,0}, + [I(6,175)] = {64,0}, + [I(7,175)] = {64,0}, + [I(8,175)] = {64,0}, + [I(9,175)] = {64,0}, + [I(10,175)] = {64,0}, + [I(11,175)] = {64,0}, + [I(12,175)] = {64,0}, + [I(13,175)] = {64,0}, + [I(14,175)] = {64,0}, + [I(15,175)] = {64,0}, + [I(16,175)] = {64,0}, + [I(17,175)] = {64,0}, + [I(18,175)] = {64,0}, + [I(19,175)] = {64,0}, + [I(20,175)] = {64,0}, + [I(21,175)] = {64,0}, + [I(22,175)] = {64,0}, + [I(23,175)] = {64,0}, + [I(24,175)] = {64,0}, + [I(25,175)] = {64,0}, + [I(26,175)] = {64,0}, + [I(27,175)] = {64,0}, + [I(28,175)] = {64,0}, + [I(29,175)] = {64,0}, + [I(30,175)] = {64,0}, + [I(31,175)] = {64,0}, + [I(32,175)] = {29,0xA7FFFEC}, + [I(33,175)] = {64,0}, + [I(34,175)] = {64,0}, + [I(35,175)] = {64,0}, + [I(36,175)] = {64,0}, + [I(37,175)] = {29,0xAFFFFEC}, + [I(38,175)] = {31,0x7C7FFFEC}, + [I(39,175)] = {64,0}, + [I(40,175)] = {64,0}, + [I(41,175)] = {64,0}, + [I(42,175)] = {31,0x7CFFFFEC}, + [I(43,175)] = {64,0}, + [I(44,175)] = {31,0x7D7FFFEC}, + [I(45,175)] = {29,0xB7FFFEC}, + [I(46,175)] = {29,0xBFFFFEC}, + [I(47,175)] = {29,0xC7FFFEC}, + [I(48,175)] = {28,0x7FFFEC}, + [I(49,175)] = {28,0xFFFFEC}, + [I(50,175)] = {28,0x17FFFEC}, + [I(51,175)] = {29,0xCFFFFEC}, + [I(52,175)] = {29,0xD7FFFEC}, + [I(53,175)] = {29,0xDFFFFEC}, + [I(54,175)] = {29,0xE7FFFEC}, + [I(55,175)] = {29,0xEFFFFEC}, + [I(56,175)] = {29,0xF7FFFEC}, + [I(57,175)] = {29,0xFFFFFEC}, + [I(58,175)] = {30,0x2E7FFFEC}, + [I(59,175)] = {31,0x7DFFFFEC}, + [I(60,175)] = {64,0}, + [I(61,175)] = {29,0x107FFFEC}, + [I(62,175)] = {64,0}, + [I(63,175)] = {64,0}, + [I(64,175)] = {64,0}, + [I(65,175)] = {29,0x10FFFFEC}, + [I(66,175)] = {30,0x2EFFFFEC}, + [I(67,175)] = {30,0x2F7FFFEC}, + [I(68,175)] = {30,0x2FFFFFEC}, + [I(69,175)] = {30,0x307FFFEC}, + [I(70,175)] = {30,0x30FFFFEC}, + [I(71,175)] = {30,0x317FFFEC}, + [I(72,175)] = {30,0x31FFFFEC}, + [I(73,175)] = {30,0x327FFFEC}, + [I(74,175)] = {30,0x32FFFFEC}, + [I(75,175)] = {30,0x337FFFEC}, + [I(76,175)] = {30,0x33FFFFEC}, + [I(77,175)] = {30,0x347FFFEC}, + [I(78,175)] = {30,0x34FFFFEC}, + [I(79,175)] = {30,0x357FFFEC}, + [I(80,175)] = {30,0x35FFFFEC}, + [I(81,175)] = {30,0x367FFFEC}, + [I(82,175)] = {30,0x36FFFFEC}, + [I(83,175)] = {30,0x377FFFEC}, + [I(84,175)] = {30,0x37FFFFEC}, + [I(85,175)] = {30,0x387FFFEC}, + [I(86,175)] = {30,0x38FFFFEC}, + [I(87,175)] = {30,0x397FFFEC}, + [I(88,175)] = {31,0x7E7FFFEC}, + [I(89,175)] = {30,0x39FFFFEC}, + [I(90,175)] = {31,0x7EFFFFEC}, + [I(91,175)] = {64,0}, + [I(92,175)] = {64,0}, + [I(93,175)] = {64,0}, + [I(94,175)] = {64,0}, + [I(95,175)] = {29,0x117FFFEC}, + [I(96,175)] = {64,0}, + [I(97,175)] = {28,0x1FFFFEC}, + [I(98,175)] = {29,0x11FFFFEC}, + [I(99,175)] = {28,0x27FFFEC}, + [I(100,175)] = {29,0x127FFFEC}, + [I(101,175)] = {28,0x2FFFFEC}, + [I(102,175)] = {29,0x12FFFFEC}, + [I(103,175)] = {29,0x137FFFEC}, + [I(104,175)] = {29,0x13FFFFEC}, + [I(105,175)] = {28,0x37FFFEC}, + [I(106,175)] = {30,0x3A7FFFEC}, + [I(107,175)] = {30,0x3AFFFFEC}, + [I(108,175)] = {29,0x147FFFEC}, + [I(109,175)] = {29,0x14FFFFEC}, + [I(110,175)] = {29,0x157FFFEC}, + [I(111,175)] = {28,0x3FFFFEC}, + [I(112,175)] = {29,0x15FFFFEC}, + [I(113,175)] = {30,0x3B7FFFEC}, + [I(114,175)] = {29,0x167FFFEC}, + [I(115,175)] = {28,0x47FFFEC}, + [I(116,175)] = {28,0x4FFFFEC}, + [I(117,175)] = {29,0x16FFFFEC}, + [I(118,175)] = {30,0x3BFFFFEC}, + [I(119,175)] = {30,0x3C7FFFEC}, + [I(120,175)] = {30,0x3CFFFFEC}, + [I(121,175)] = {30,0x3D7FFFEC}, + [I(122,175)] = {30,0x3DFFFFEC}, + [I(123,175)] = {64,0}, + [I(124,175)] = {64,0}, + [I(125,175)] = {64,0}, + [I(126,175)] = {64,0}, + [I(127,175)] = {64,0}, + [I(128,175)] = {64,0}, + [I(129,175)] = {64,0}, + [I(130,175)] = {64,0}, + [I(131,175)] = {64,0}, + [I(132,175)] = {64,0}, + [I(133,175)] = {64,0}, + [I(134,175)] = {64,0}, + [I(135,175)] = {64,0}, + [I(136,175)] = {64,0}, + [I(137,175)] = {64,0}, + [I(138,175)] = {64,0}, + [I(139,175)] = {64,0}, + [I(140,175)] = {64,0}, + [I(141,175)] = {64,0}, + [I(142,175)] = {64,0}, + [I(143,175)] = {64,0}, + [I(144,175)] = {64,0}, + [I(145,175)] = {64,0}, + [I(146,175)] = {64,0}, + [I(147,175)] = {64,0}, + [I(148,175)] = {64,0}, + [I(149,175)] = {64,0}, + [I(150,175)] = {64,0}, + [I(151,175)] = {64,0}, + [I(152,175)] = {64,0}, + [I(153,175)] = {64,0}, + [I(154,175)] = {64,0}, + [I(155,175)] = {64,0}, + [I(156,175)] = {64,0}, + [I(157,175)] = {64,0}, + [I(158,175)] = {64,0}, + [I(159,175)] = {64,0}, + [I(160,175)] = {64,0}, + [I(161,175)] = {64,0}, + [I(162,175)] = {64,0}, + [I(163,175)] = {64,0}, + [I(164,175)] = {64,0}, + [I(165,175)] = {64,0}, + [I(166,175)] = {64,0}, + [I(167,175)] = {64,0}, + [I(168,175)] = {64,0}, + [I(169,175)] = {64,0}, + [I(170,175)] = {64,0}, + [I(171,175)] = {64,0}, + [I(172,175)] = {64,0}, + [I(173,175)] = {64,0}, + [I(174,175)] = {64,0}, + [I(175,175)] = {64,0}, + [I(176,175)] = {64,0}, + [I(177,175)] = {64,0}, + [I(178,175)] = {64,0}, + [I(179,175)] = {64,0}, + [I(180,175)] = {64,0}, + [I(181,175)] = {64,0}, + [I(182,175)] = {64,0}, + [I(183,175)] = {64,0}, + [I(184,175)] = {64,0}, + [I(185,175)] = {64,0}, + [I(186,175)] = {64,0}, + [I(187,175)] = {64,0}, + [I(188,175)] = {64,0}, + [I(189,175)] = {64,0}, + [I(190,175)] = {64,0}, + [I(191,175)] = {64,0}, + [I(192,175)] = {64,0}, + [I(193,175)] = {64,0}, + [I(194,175)] = {64,0}, + [I(195,175)] = {64,0}, + [I(196,175)] = {64,0}, + [I(197,175)] = {64,0}, + [I(198,175)] = {64,0}, + [I(199,175)] = {64,0}, + [I(200,175)] = {64,0}, + [I(201,175)] = {64,0}, + [I(202,175)] = {64,0}, + [I(203,175)] = {64,0}, + [I(204,175)] = {64,0}, + [I(205,175)] = {64,0}, + [I(206,175)] = {64,0}, + [I(207,175)] = {64,0}, + [I(208,175)] = {64,0}, + [I(209,175)] = {64,0}, + [I(210,175)] = {64,0}, + [I(211,175)] = {64,0}, + [I(212,175)] = {64,0}, + [I(213,175)] = {64,0}, + [I(214,175)] = {64,0}, + [I(215,175)] = {64,0}, + [I(216,175)] = {64,0}, + [I(217,175)] = {64,0}, + [I(218,175)] = {64,0}, + [I(219,175)] = {64,0}, + [I(220,175)] = {64,0}, + [I(221,175)] = {64,0}, + [I(222,175)] = {64,0}, + [I(223,175)] = {64,0}, + [I(224,175)] = {64,0}, + [I(225,175)] = {64,0}, + [I(226,175)] = {64,0}, + [I(227,175)] = {64,0}, + [I(228,175)] = {64,0}, + [I(229,175)] = {64,0}, + [I(230,175)] = {64,0}, + [I(231,175)] = {64,0}, + [I(232,175)] = {64,0}, + [I(233,175)] = {64,0}, + [I(234,175)] = {64,0}, + [I(235,175)] = {64,0}, + [I(236,175)] = {64,0}, + [I(237,175)] = {64,0}, + [I(238,175)] = {64,0}, + [I(239,175)] = {64,0}, + [I(240,175)] = {64,0}, + [I(241,175)] = {64,0}, + [I(242,175)] = {64,0}, + [I(243,175)] = {64,0}, + [I(244,175)] = {64,0}, + [I(245,175)] = {64,0}, + [I(246,175)] = {64,0}, + [I(247,175)] = {64,0}, + [I(248,175)] = {64,0}, + [I(249,175)] = {64,0}, + [I(250,175)] = {64,0}, + [I(251,175)] = {64,0}, + [I(252,175)] = {64,0}, + [I(253,175)] = {64,0}, + [I(254,175)] = {64,0}, + [I(255,175)] = {64,0}, + [I(0,176)] = {64,0}, + [I(1,176)] = {64,0}, + [I(2,176)] = {64,0}, + [I(3,176)] = {64,0}, + [I(4,176)] = {64,0}, + [I(5,176)] = {64,0}, + [I(6,176)] = {64,0}, + [I(7,176)] = {64,0}, + [I(8,176)] = {64,0}, + [I(9,176)] = {64,0}, + [I(10,176)] = {64,0}, + [I(11,176)] = {64,0}, + [I(12,176)] = {64,0}, + [I(13,176)] = {64,0}, + [I(14,176)] = {64,0}, + [I(15,176)] = {64,0}, + [I(16,176)] = {64,0}, + [I(17,176)] = {64,0}, + [I(18,176)] = {64,0}, + [I(19,176)] = {64,0}, + [I(20,176)] = {64,0}, + [I(21,176)] = {64,0}, + [I(22,176)] = {64,0}, + [I(23,176)] = {64,0}, + [I(24,176)] = {64,0}, + [I(25,176)] = {64,0}, + [I(26,176)] = {64,0}, + [I(27,176)] = {64,0}, + [I(28,176)] = {64,0}, + [I(29,176)] = {64,0}, + [I(30,176)] = {64,0}, + [I(31,176)] = {64,0}, + [I(32,176)] = {27,0x29FFFE0}, + [I(33,176)] = {31,0x7F1FFFE0}, + [I(34,176)] = {31,0x7F3FFFE0}, + [I(35,176)] = {64,0}, + [I(36,176)] = {64,0}, + [I(37,176)] = {27,0x2BFFFE0}, + [I(38,176)] = {29,0x1F1FFFE0}, + [I(39,176)] = {X32,0xFF5FFFE0}, + [I(40,176)] = {31,0x7F5FFFE0}, + [I(41,176)] = {31,0x7F7FFFE0}, + [I(42,176)] = {29,0x1F3FFFE0}, + [I(43,176)] = {X32,0xFF7FFFE0}, + [I(44,176)] = {29,0x1F5FFFE0}, + [I(45,176)] = {27,0x2DFFFE0}, + [I(46,176)] = {27,0x2FFFFE0}, + [I(47,176)] = {27,0x31FFFE0}, + [I(48,176)] = {26,0x1FFFE0}, + [I(49,176)] = {26,0x3FFFE0}, + [I(50,176)] = {26,0x5FFFE0}, + [I(51,176)] = {27,0x33FFFE0}, + [I(52,176)] = {27,0x35FFFE0}, + [I(53,176)] = {27,0x37FFFE0}, + [I(54,176)] = {27,0x39FFFE0}, + [I(55,176)] = {27,0x3BFFFE0}, + [I(56,176)] = {27,0x3DFFFE0}, + [I(57,176)] = {27,0x3FFFFE0}, + [I(58,176)] = {28,0xB9FFFE0}, + [I(59,176)] = {29,0x1F7FFFE0}, + [I(60,176)] = {64,0}, + [I(61,176)] = {27,0x41FFFE0}, + [I(62,176)] = {64,0}, + [I(63,176)] = {31,0x7F9FFFE0}, + [I(64,176)] = {64,0}, + [I(65,176)] = {27,0x43FFFE0}, + [I(66,176)] = {28,0xBBFFFE0}, + [I(67,176)] = {28,0xBDFFFE0}, + [I(68,176)] = {28,0xBFFFFE0}, + [I(69,176)] = {28,0xC1FFFE0}, + [I(70,176)] = {28,0xC3FFFE0}, + [I(71,176)] = {28,0xC5FFFE0}, + [I(72,176)] = {28,0xC7FFFE0}, + [I(73,176)] = {28,0xC9FFFE0}, + [I(74,176)] = {28,0xCBFFFE0}, + [I(75,176)] = {28,0xCDFFFE0}, + [I(76,176)] = {28,0xCFFFFE0}, + [I(77,176)] = {28,0xD1FFFE0}, + [I(78,176)] = {28,0xD3FFFE0}, + [I(79,176)] = {28,0xD5FFFE0}, + [I(80,176)] = {28,0xD7FFFE0}, + [I(81,176)] = {28,0xD9FFFE0}, + [I(82,176)] = {28,0xDBFFFE0}, + [I(83,176)] = {28,0xDDFFFE0}, + [I(84,176)] = {28,0xDFFFFE0}, + [I(85,176)] = {28,0xE1FFFE0}, + [I(86,176)] = {28,0xE3FFFE0}, + [I(87,176)] = {28,0xE5FFFE0}, + [I(88,176)] = {29,0x1F9FFFE0}, + [I(89,176)] = {28,0xE7FFFE0}, + [I(90,176)] = {29,0x1FBFFFE0}, + [I(91,176)] = {64,0}, + [I(92,176)] = {64,0}, + [I(93,176)] = {64,0}, + [I(94,176)] = {64,0}, + [I(95,176)] = {27,0x45FFFE0}, + [I(96,176)] = {64,0}, + [I(97,176)] = {26,0x7FFFE0}, + [I(98,176)] = {27,0x47FFFE0}, + [I(99,176)] = {26,0x9FFFE0}, + [I(100,176)] = {27,0x49FFFE0}, + [I(101,176)] = {26,0xBFFFE0}, + [I(102,176)] = {27,0x4BFFFE0}, + [I(103,176)] = {27,0x4DFFFE0}, + [I(104,176)] = {27,0x4FFFFE0}, + [I(105,176)] = {26,0xDFFFE0}, + [I(106,176)] = {28,0xE9FFFE0}, + [I(107,176)] = {28,0xEBFFFE0}, + [I(108,176)] = {27,0x51FFFE0}, + [I(109,176)] = {27,0x53FFFE0}, + [I(110,176)] = {27,0x55FFFE0}, + [I(111,176)] = {26,0xFFFFE0}, + [I(112,176)] = {27,0x57FFFE0}, + [I(113,176)] = {28,0xEDFFFE0}, + [I(114,176)] = {27,0x59FFFE0}, + [I(115,176)] = {26,0x11FFFE0}, + [I(116,176)] = {26,0x13FFFE0}, + [I(117,176)] = {27,0x5BFFFE0}, + [I(118,176)] = {28,0xEFFFFE0}, + [I(119,176)] = {28,0xF1FFFE0}, + [I(120,176)] = {28,0xF3FFFE0}, + [I(121,176)] = {28,0xF5FFFE0}, + [I(122,176)] = {28,0xF7FFFE0}, + [I(123,176)] = {64,0}, + [I(124,176)] = {X32,0xFF9FFFE0}, + [I(125,176)] = {64,0}, + [I(126,176)] = {64,0}, + [I(127,176)] = {64,0}, + [I(128,176)] = {64,0}, + [I(129,176)] = {64,0}, + [I(130,176)] = {64,0}, + [I(131,176)] = {64,0}, + [I(132,176)] = {64,0}, + [I(133,176)] = {64,0}, + [I(134,176)] = {64,0}, + [I(135,176)] = {64,0}, + [I(136,176)] = {64,0}, + [I(137,176)] = {64,0}, + [I(138,176)] = {64,0}, + [I(139,176)] = {64,0}, + [I(140,176)] = {64,0}, + [I(141,176)] = {64,0}, + [I(142,176)] = {64,0}, + [I(143,176)] = {64,0}, + [I(144,176)] = {64,0}, + [I(145,176)] = {64,0}, + [I(146,176)] = {64,0}, + [I(147,176)] = {64,0}, + [I(148,176)] = {64,0}, + [I(149,176)] = {64,0}, + [I(150,176)] = {64,0}, + [I(151,176)] = {64,0}, + [I(152,176)] = {64,0}, + [I(153,176)] = {64,0}, + [I(154,176)] = {64,0}, + [I(155,176)] = {64,0}, + [I(156,176)] = {64,0}, + [I(157,176)] = {64,0}, + [I(158,176)] = {64,0}, + [I(159,176)] = {64,0}, + [I(160,176)] = {64,0}, + [I(161,176)] = {64,0}, + [I(162,176)] = {64,0}, + [I(163,176)] = {64,0}, + [I(164,176)] = {64,0}, + [I(165,176)] = {64,0}, + [I(166,176)] = {64,0}, + [I(167,176)] = {64,0}, + [I(168,176)] = {64,0}, + [I(169,176)] = {64,0}, + [I(170,176)] = {64,0}, + [I(171,176)] = {64,0}, + [I(172,176)] = {64,0}, + [I(173,176)] = {64,0}, + [I(174,176)] = {64,0}, + [I(175,176)] = {64,0}, + [I(176,176)] = {64,0}, + [I(177,176)] = {64,0}, + [I(178,176)] = {64,0}, + [I(179,176)] = {64,0}, + [I(180,176)] = {64,0}, + [I(181,176)] = {64,0}, + [I(182,176)] = {64,0}, + [I(183,176)] = {64,0}, + [I(184,176)] = {64,0}, + [I(185,176)] = {64,0}, + [I(186,176)] = {64,0}, + [I(187,176)] = {64,0}, + [I(188,176)] = {64,0}, + [I(189,176)] = {64,0}, + [I(190,176)] = {64,0}, + [I(191,176)] = {64,0}, + [I(192,176)] = {64,0}, + [I(193,176)] = {64,0}, + [I(194,176)] = {64,0}, + [I(195,176)] = {64,0}, + [I(196,176)] = {64,0}, + [I(197,176)] = {64,0}, + [I(198,176)] = {64,0}, + [I(199,176)] = {64,0}, + [I(200,176)] = {64,0}, + [I(201,176)] = {64,0}, + [I(202,176)] = {64,0}, + [I(203,176)] = {64,0}, + [I(204,176)] = {64,0}, + [I(205,176)] = {64,0}, + [I(206,176)] = {64,0}, + [I(207,176)] = {64,0}, + [I(208,176)] = {64,0}, + [I(209,176)] = {64,0}, + [I(210,176)] = {64,0}, + [I(211,176)] = {64,0}, + [I(212,176)] = {64,0}, + [I(213,176)] = {64,0}, + [I(214,176)] = {64,0}, + [I(215,176)] = {64,0}, + [I(216,176)] = {64,0}, + [I(217,176)] = {64,0}, + [I(218,176)] = {64,0}, + [I(219,176)] = {64,0}, + [I(220,176)] = {64,0}, + [I(221,176)] = {64,0}, + [I(222,176)] = {64,0}, + [I(223,176)] = {64,0}, + [I(224,176)] = {64,0}, + [I(225,176)] = {64,0}, + [I(226,176)] = {64,0}, + [I(227,176)] = {64,0}, + [I(228,176)] = {64,0}, + [I(229,176)] = {64,0}, + [I(230,176)] = {64,0}, + [I(231,176)] = {64,0}, + [I(232,176)] = {64,0}, + [I(233,176)] = {64,0}, + [I(234,176)] = {64,0}, + [I(235,176)] = {64,0}, + [I(236,176)] = {64,0}, + [I(237,176)] = {64,0}, + [I(238,176)] = {64,0}, + [I(239,176)] = {64,0}, + [I(240,176)] = {64,0}, + [I(241,176)] = {64,0}, + [I(242,176)] = {64,0}, + [I(243,176)] = {64,0}, + [I(244,176)] = {64,0}, + [I(245,176)] = {64,0}, + [I(246,176)] = {64,0}, + [I(247,176)] = {64,0}, + [I(248,176)] = {64,0}, + [I(249,176)] = {64,0}, + [I(250,176)] = {64,0}, + [I(251,176)] = {64,0}, + [I(252,176)] = {64,0}, + [I(253,176)] = {64,0}, + [I(254,176)] = {64,0}, + [I(255,176)] = {64,0}, + [I(0,177)] = {64,0}, + [I(1,177)] = {64,0}, + [I(2,177)] = {64,0}, + [I(3,177)] = {64,0}, + [I(4,177)] = {64,0}, + [I(5,177)] = {64,0}, + [I(6,177)] = {64,0}, + [I(7,177)] = {64,0}, + [I(8,177)] = {64,0}, + [I(9,177)] = {64,0}, + [I(10,177)] = {64,0}, + [I(11,177)] = {64,0}, + [I(12,177)] = {64,0}, + [I(13,177)] = {64,0}, + [I(14,177)] = {64,0}, + [I(15,177)] = {64,0}, + [I(16,177)] = {64,0}, + [I(17,177)] = {64,0}, + [I(18,177)] = {64,0}, + [I(19,177)] = {64,0}, + [I(20,177)] = {64,0}, + [I(21,177)] = {64,0}, + [I(22,177)] = {64,0}, + [I(23,177)] = {64,0}, + [I(24,177)] = {64,0}, + [I(25,177)] = {64,0}, + [I(26,177)] = {64,0}, + [I(27,177)] = {64,0}, + [I(28,177)] = {64,0}, + [I(29,177)] = {64,0}, + [I(30,177)] = {64,0}, + [I(31,177)] = {64,0}, + [I(32,177)] = {27,0x29FFFE1}, + [I(33,177)] = {31,0x7F1FFFE1}, + [I(34,177)] = {31,0x7F3FFFE1}, + [I(35,177)] = {64,0}, + [I(36,177)] = {64,0}, + [I(37,177)] = {27,0x2BFFFE1}, + [I(38,177)] = {29,0x1F1FFFE1}, + [I(39,177)] = {X32,0xFF5FFFE1}, + [I(40,177)] = {31,0x7F5FFFE1}, + [I(41,177)] = {31,0x7F7FFFE1}, + [I(42,177)] = {29,0x1F3FFFE1}, + [I(43,177)] = {X32,0xFF7FFFE1}, + [I(44,177)] = {29,0x1F5FFFE1}, + [I(45,177)] = {27,0x2DFFFE1}, + [I(46,177)] = {27,0x2FFFFE1}, + [I(47,177)] = {27,0x31FFFE1}, + [I(48,177)] = {26,0x1FFFE1}, + [I(49,177)] = {26,0x3FFFE1}, + [I(50,177)] = {26,0x5FFFE1}, + [I(51,177)] = {27,0x33FFFE1}, + [I(52,177)] = {27,0x35FFFE1}, + [I(53,177)] = {27,0x37FFFE1}, + [I(54,177)] = {27,0x39FFFE1}, + [I(55,177)] = {27,0x3BFFFE1}, + [I(56,177)] = {27,0x3DFFFE1}, + [I(57,177)] = {27,0x3FFFFE1}, + [I(58,177)] = {28,0xB9FFFE1}, + [I(59,177)] = {29,0x1F7FFFE1}, + [I(60,177)] = {64,0}, + [I(61,177)] = {27,0x41FFFE1}, + [I(62,177)] = {64,0}, + [I(63,177)] = {31,0x7F9FFFE1}, + [I(64,177)] = {64,0}, + [I(65,177)] = {27,0x43FFFE1}, + [I(66,177)] = {28,0xBBFFFE1}, + [I(67,177)] = {28,0xBDFFFE1}, + [I(68,177)] = {28,0xBFFFFE1}, + [I(69,177)] = {28,0xC1FFFE1}, + [I(70,177)] = {28,0xC3FFFE1}, + [I(71,177)] = {28,0xC5FFFE1}, + [I(72,177)] = {28,0xC7FFFE1}, + [I(73,177)] = {28,0xC9FFFE1}, + [I(74,177)] = {28,0xCBFFFE1}, + [I(75,177)] = {28,0xCDFFFE1}, + [I(76,177)] = {28,0xCFFFFE1}, + [I(77,177)] = {28,0xD1FFFE1}, + [I(78,177)] = {28,0xD3FFFE1}, + [I(79,177)] = {28,0xD5FFFE1}, + [I(80,177)] = {28,0xD7FFFE1}, + [I(81,177)] = {28,0xD9FFFE1}, + [I(82,177)] = {28,0xDBFFFE1}, + [I(83,177)] = {28,0xDDFFFE1}, + [I(84,177)] = {28,0xDFFFFE1}, + [I(85,177)] = {28,0xE1FFFE1}, + [I(86,177)] = {28,0xE3FFFE1}, + [I(87,177)] = {28,0xE5FFFE1}, + [I(88,177)] = {29,0x1F9FFFE1}, + [I(89,177)] = {28,0xE7FFFE1}, + [I(90,177)] = {29,0x1FBFFFE1}, + [I(91,177)] = {64,0}, + [I(92,177)] = {64,0}, + [I(93,177)] = {64,0}, + [I(94,177)] = {64,0}, + [I(95,177)] = {27,0x45FFFE1}, + [I(96,177)] = {64,0}, + [I(97,177)] = {26,0x7FFFE1}, + [I(98,177)] = {27,0x47FFFE1}, + [I(99,177)] = {26,0x9FFFE1}, + [I(100,177)] = {27,0x49FFFE1}, + [I(101,177)] = {26,0xBFFFE1}, + [I(102,177)] = {27,0x4BFFFE1}, + [I(103,177)] = {27,0x4DFFFE1}, + [I(104,177)] = {27,0x4FFFFE1}, + [I(105,177)] = {26,0xDFFFE1}, + [I(106,177)] = {28,0xE9FFFE1}, + [I(107,177)] = {28,0xEBFFFE1}, + [I(108,177)] = {27,0x51FFFE1}, + [I(109,177)] = {27,0x53FFFE1}, + [I(110,177)] = {27,0x55FFFE1}, + [I(111,177)] = {26,0xFFFFE1}, + [I(112,177)] = {27,0x57FFFE1}, + [I(113,177)] = {28,0xEDFFFE1}, + [I(114,177)] = {27,0x59FFFE1}, + [I(115,177)] = {26,0x11FFFE1}, + [I(116,177)] = {26,0x13FFFE1}, + [I(117,177)] = {27,0x5BFFFE1}, + [I(118,177)] = {28,0xEFFFFE1}, + [I(119,177)] = {28,0xF1FFFE1}, + [I(120,177)] = {28,0xF3FFFE1}, + [I(121,177)] = {28,0xF5FFFE1}, + [I(122,177)] = {28,0xF7FFFE1}, + [I(123,177)] = {64,0}, + [I(124,177)] = {X32,0xFF9FFFE1}, + [I(125,177)] = {64,0}, + [I(126,177)] = {64,0}, + [I(127,177)] = {64,0}, + [I(128,177)] = {64,0}, + [I(129,177)] = {64,0}, + [I(130,177)] = {64,0}, + [I(131,177)] = {64,0}, + [I(132,177)] = {64,0}, + [I(133,177)] = {64,0}, + [I(134,177)] = {64,0}, + [I(135,177)] = {64,0}, + [I(136,177)] = {64,0}, + [I(137,177)] = {64,0}, + [I(138,177)] = {64,0}, + [I(139,177)] = {64,0}, + [I(140,177)] = {64,0}, + [I(141,177)] = {64,0}, + [I(142,177)] = {64,0}, + [I(143,177)] = {64,0}, + [I(144,177)] = {64,0}, + [I(145,177)] = {64,0}, + [I(146,177)] = {64,0}, + [I(147,177)] = {64,0}, + [I(148,177)] = {64,0}, + [I(149,177)] = {64,0}, + [I(150,177)] = {64,0}, + [I(151,177)] = {64,0}, + [I(152,177)] = {64,0}, + [I(153,177)] = {64,0}, + [I(154,177)] = {64,0}, + [I(155,177)] = {64,0}, + [I(156,177)] = {64,0}, + [I(157,177)] = {64,0}, + [I(158,177)] = {64,0}, + [I(159,177)] = {64,0}, + [I(160,177)] = {64,0}, + [I(161,177)] = {64,0}, + [I(162,177)] = {64,0}, + [I(163,177)] = {64,0}, + [I(164,177)] = {64,0}, + [I(165,177)] = {64,0}, + [I(166,177)] = {64,0}, + [I(167,177)] = {64,0}, + [I(168,177)] = {64,0}, + [I(169,177)] = {64,0}, + [I(170,177)] = {64,0}, + [I(171,177)] = {64,0}, + [I(172,177)] = {64,0}, + [I(173,177)] = {64,0}, + [I(174,177)] = {64,0}, + [I(175,177)] = {64,0}, + [I(176,177)] = {64,0}, + [I(177,177)] = {64,0}, + [I(178,177)] = {64,0}, + [I(179,177)] = {64,0}, + [I(180,177)] = {64,0}, + [I(181,177)] = {64,0}, + [I(182,177)] = {64,0}, + [I(183,177)] = {64,0}, + [I(184,177)] = {64,0}, + [I(185,177)] = {64,0}, + [I(186,177)] = {64,0}, + [I(187,177)] = {64,0}, + [I(188,177)] = {64,0}, + [I(189,177)] = {64,0}, + [I(190,177)] = {64,0}, + [I(191,177)] = {64,0}, + [I(192,177)] = {64,0}, + [I(193,177)] = {64,0}, + [I(194,177)] = {64,0}, + [I(195,177)] = {64,0}, + [I(196,177)] = {64,0}, + [I(197,177)] = {64,0}, + [I(198,177)] = {64,0}, + [I(199,177)] = {64,0}, + [I(200,177)] = {64,0}, + [I(201,177)] = {64,0}, + [I(202,177)] = {64,0}, + [I(203,177)] = {64,0}, + [I(204,177)] = {64,0}, + [I(205,177)] = {64,0}, + [I(206,177)] = {64,0}, + [I(207,177)] = {64,0}, + [I(208,177)] = {64,0}, + [I(209,177)] = {64,0}, + [I(210,177)] = {64,0}, + [I(211,177)] = {64,0}, + [I(212,177)] = {64,0}, + [I(213,177)] = {64,0}, + [I(214,177)] = {64,0}, + [I(215,177)] = {64,0}, + [I(216,177)] = {64,0}, + [I(217,177)] = {64,0}, + [I(218,177)] = {64,0}, + [I(219,177)] = {64,0}, + [I(220,177)] = {64,0}, + [I(221,177)] = {64,0}, + [I(222,177)] = {64,0}, + [I(223,177)] = {64,0}, + [I(224,177)] = {64,0}, + [I(225,177)] = {64,0}, + [I(226,177)] = {64,0}, + [I(227,177)] = {64,0}, + [I(228,177)] = {64,0}, + [I(229,177)] = {64,0}, + [I(230,177)] = {64,0}, + [I(231,177)] = {64,0}, + [I(232,177)] = {64,0}, + [I(233,177)] = {64,0}, + [I(234,177)] = {64,0}, + [I(235,177)] = {64,0}, + [I(236,177)] = {64,0}, + [I(237,177)] = {64,0}, + [I(238,177)] = {64,0}, + [I(239,177)] = {64,0}, + [I(240,177)] = {64,0}, + [I(241,177)] = {64,0}, + [I(242,177)] = {64,0}, + [I(243,177)] = {64,0}, + [I(244,177)] = {64,0}, + [I(245,177)] = {64,0}, + [I(246,177)] = {64,0}, + [I(247,177)] = {64,0}, + [I(248,177)] = {64,0}, + [I(249,177)] = {64,0}, + [I(250,177)] = {64,0}, + [I(251,177)] = {64,0}, + [I(252,177)] = {64,0}, + [I(253,177)] = {64,0}, + [I(254,177)] = {64,0}, + [I(255,177)] = {64,0}, + [I(0,178)] = {64,0}, + [I(1,178)] = {64,0}, + [I(2,178)] = {64,0}, + [I(3,178)] = {64,0}, + [I(4,178)] = {64,0}, + [I(5,178)] = {64,0}, + [I(6,178)] = {64,0}, + [I(7,178)] = {64,0}, + [I(8,178)] = {64,0}, + [I(9,178)] = {64,0}, + [I(10,178)] = {64,0}, + [I(11,178)] = {64,0}, + [I(12,178)] = {64,0}, + [I(13,178)] = {64,0}, + [I(14,178)] = {64,0}, + [I(15,178)] = {64,0}, + [I(16,178)] = {64,0}, + [I(17,178)] = {64,0}, + [I(18,178)] = {64,0}, + [I(19,178)] = {64,0}, + [I(20,178)] = {64,0}, + [I(21,178)] = {64,0}, + [I(22,178)] = {64,0}, + [I(23,178)] = {64,0}, + [I(24,178)] = {64,0}, + [I(25,178)] = {64,0}, + [I(26,178)] = {64,0}, + [I(27,178)] = {64,0}, + [I(28,178)] = {64,0}, + [I(29,178)] = {64,0}, + [I(30,178)] = {64,0}, + [I(31,178)] = {64,0}, + [I(32,178)] = {28,0x53FFFE0}, + [I(33,178)] = {X32,0xFE3FFFE0}, + [I(34,178)] = {X32,0xFE7FFFE0}, + [I(35,178)] = {64,0}, + [I(36,178)] = {64,0}, + [I(37,178)] = {28,0x57FFFE0}, + [I(38,178)] = {30,0x3E3FFFE0}, + [I(39,178)] = {64,0}, + [I(40,178)] = {X32,0xFEBFFFE0}, + [I(41,178)] = {X32,0xFEFFFFE0}, + [I(42,178)] = {30,0x3E7FFFE0}, + [I(43,178)] = {64,0}, + [I(44,178)] = {30,0x3EBFFFE0}, + [I(45,178)] = {28,0x5BFFFE0}, + [I(46,178)] = {28,0x5FFFFE0}, + [I(47,178)] = {28,0x63FFFE0}, + [I(48,178)] = {27,0x3FFFE0}, + [I(49,178)] = {27,0x7FFFE0}, + [I(50,178)] = {27,0xBFFFE0}, + [I(51,178)] = {28,0x67FFFE0}, + [I(52,178)] = {28,0x6BFFFE0}, + [I(53,178)] = {28,0x6FFFFE0}, + [I(54,178)] = {28,0x73FFFE0}, + [I(55,178)] = {28,0x77FFFE0}, + [I(56,178)] = {28,0x7BFFFE0}, + [I(57,178)] = {28,0x7FFFFE0}, + [I(58,178)] = {29,0x173FFFE0}, + [I(59,178)] = {30,0x3EFFFFE0}, + [I(60,178)] = {64,0}, + [I(61,178)] = {28,0x83FFFE0}, + [I(62,178)] = {64,0}, + [I(63,178)] = {X32,0xFF3FFFE0}, + [I(64,178)] = {64,0}, + [I(65,178)] = {28,0x87FFFE0}, + [I(66,178)] = {29,0x177FFFE0}, + [I(67,178)] = {29,0x17BFFFE0}, + [I(68,178)] = {29,0x17FFFFE0}, + [I(69,178)] = {29,0x183FFFE0}, + [I(70,178)] = {29,0x187FFFE0}, + [I(71,178)] = {29,0x18BFFFE0}, + [I(72,178)] = {29,0x18FFFFE0}, + [I(73,178)] = {29,0x193FFFE0}, + [I(74,178)] = {29,0x197FFFE0}, + [I(75,178)] = {29,0x19BFFFE0}, + [I(76,178)] = {29,0x19FFFFE0}, + [I(77,178)] = {29,0x1A3FFFE0}, + [I(78,178)] = {29,0x1A7FFFE0}, + [I(79,178)] = {29,0x1ABFFFE0}, + [I(80,178)] = {29,0x1AFFFFE0}, + [I(81,178)] = {29,0x1B3FFFE0}, + [I(82,178)] = {29,0x1B7FFFE0}, + [I(83,178)] = {29,0x1BBFFFE0}, + [I(84,178)] = {29,0x1BFFFFE0}, + [I(85,178)] = {29,0x1C3FFFE0}, + [I(86,178)] = {29,0x1C7FFFE0}, + [I(87,178)] = {29,0x1CBFFFE0}, + [I(88,178)] = {30,0x3F3FFFE0}, + [I(89,178)] = {29,0x1CFFFFE0}, + [I(90,178)] = {30,0x3F7FFFE0}, + [I(91,178)] = {64,0}, + [I(92,178)] = {64,0}, + [I(93,178)] = {64,0}, + [I(94,178)] = {64,0}, + [I(95,178)] = {28,0x8BFFFE0}, + [I(96,178)] = {64,0}, + [I(97,178)] = {27,0xFFFFE0}, + [I(98,178)] = {28,0x8FFFFE0}, + [I(99,178)] = {27,0x13FFFE0}, + [I(100,178)] = {28,0x93FFFE0}, + [I(101,178)] = {27,0x17FFFE0}, + [I(102,178)] = {28,0x97FFFE0}, + [I(103,178)] = {28,0x9BFFFE0}, + [I(104,178)] = {28,0x9FFFFE0}, + [I(105,178)] = {27,0x1BFFFE0}, + [I(106,178)] = {29,0x1D3FFFE0}, + [I(107,178)] = {29,0x1D7FFFE0}, + [I(108,178)] = {28,0xA3FFFE0}, + [I(109,178)] = {28,0xA7FFFE0}, + [I(110,178)] = {28,0xABFFFE0}, + [I(111,178)] = {27,0x1FFFFE0}, + [I(112,178)] = {28,0xAFFFFE0}, + [I(113,178)] = {29,0x1DBFFFE0}, + [I(114,178)] = {28,0xB3FFFE0}, + [I(115,178)] = {27,0x23FFFE0}, + [I(116,178)] = {27,0x27FFFE0}, + [I(117,178)] = {28,0xB7FFFE0}, + [I(118,178)] = {29,0x1DFFFFE0}, + [I(119,178)] = {29,0x1E3FFFE0}, + [I(120,178)] = {29,0x1E7FFFE0}, + [I(121,178)] = {29,0x1EBFFFE0}, + [I(122,178)] = {29,0x1EFFFFE0}, + [I(123,178)] = {64,0}, + [I(124,178)] = {64,0}, + [I(125,178)] = {64,0}, + [I(126,178)] = {64,0}, + [I(127,178)] = {64,0}, + [I(128,178)] = {64,0}, + [I(129,178)] = {64,0}, + [I(130,178)] = {64,0}, + [I(131,178)] = {64,0}, + [I(132,178)] = {64,0}, + [I(133,178)] = {64,0}, + [I(134,178)] = {64,0}, + [I(135,178)] = {64,0}, + [I(136,178)] = {64,0}, + [I(137,178)] = {64,0}, + [I(138,178)] = {64,0}, + [I(139,178)] = {64,0}, + [I(140,178)] = {64,0}, + [I(141,178)] = {64,0}, + [I(142,178)] = {64,0}, + [I(143,178)] = {64,0}, + [I(144,178)] = {64,0}, + [I(145,178)] = {64,0}, + [I(146,178)] = {64,0}, + [I(147,178)] = {64,0}, + [I(148,178)] = {64,0}, + [I(149,178)] = {64,0}, + [I(150,178)] = {64,0}, + [I(151,178)] = {64,0}, + [I(152,178)] = {64,0}, + [I(153,178)] = {64,0}, + [I(154,178)] = {64,0}, + [I(155,178)] = {64,0}, + [I(156,178)] = {64,0}, + [I(157,178)] = {64,0}, + [I(158,178)] = {64,0}, + [I(159,178)] = {64,0}, + [I(160,178)] = {64,0}, + [I(161,178)] = {64,0}, + [I(162,178)] = {64,0}, + [I(163,178)] = {64,0}, + [I(164,178)] = {64,0}, + [I(165,178)] = {64,0}, + [I(166,178)] = {64,0}, + [I(167,178)] = {64,0}, + [I(168,178)] = {64,0}, + [I(169,178)] = {64,0}, + [I(170,178)] = {64,0}, + [I(171,178)] = {64,0}, + [I(172,178)] = {64,0}, + [I(173,178)] = {64,0}, + [I(174,178)] = {64,0}, + [I(175,178)] = {64,0}, + [I(176,178)] = {64,0}, + [I(177,178)] = {64,0}, + [I(178,178)] = {64,0}, + [I(179,178)] = {64,0}, + [I(180,178)] = {64,0}, + [I(181,178)] = {64,0}, + [I(182,178)] = {64,0}, + [I(183,178)] = {64,0}, + [I(184,178)] = {64,0}, + [I(185,178)] = {64,0}, + [I(186,178)] = {64,0}, + [I(187,178)] = {64,0}, + [I(188,178)] = {64,0}, + [I(189,178)] = {64,0}, + [I(190,178)] = {64,0}, + [I(191,178)] = {64,0}, + [I(192,178)] = {64,0}, + [I(193,178)] = {64,0}, + [I(194,178)] = {64,0}, + [I(195,178)] = {64,0}, + [I(196,178)] = {64,0}, + [I(197,178)] = {64,0}, + [I(198,178)] = {64,0}, + [I(199,178)] = {64,0}, + [I(200,178)] = {64,0}, + [I(201,178)] = {64,0}, + [I(202,178)] = {64,0}, + [I(203,178)] = {64,0}, + [I(204,178)] = {64,0}, + [I(205,178)] = {64,0}, + [I(206,178)] = {64,0}, + [I(207,178)] = {64,0}, + [I(208,178)] = {64,0}, + [I(209,178)] = {64,0}, + [I(210,178)] = {64,0}, + [I(211,178)] = {64,0}, + [I(212,178)] = {64,0}, + [I(213,178)] = {64,0}, + [I(214,178)] = {64,0}, + [I(215,178)] = {64,0}, + [I(216,178)] = {64,0}, + [I(217,178)] = {64,0}, + [I(218,178)] = {64,0}, + [I(219,178)] = {64,0}, + [I(220,178)] = {64,0}, + [I(221,178)] = {64,0}, + [I(222,178)] = {64,0}, + [I(223,178)] = {64,0}, + [I(224,178)] = {64,0}, + [I(225,178)] = {64,0}, + [I(226,178)] = {64,0}, + [I(227,178)] = {64,0}, + [I(228,178)] = {64,0}, + [I(229,178)] = {64,0}, + [I(230,178)] = {64,0}, + [I(231,178)] = {64,0}, + [I(232,178)] = {64,0}, + [I(233,178)] = {64,0}, + [I(234,178)] = {64,0}, + [I(235,178)] = {64,0}, + [I(236,178)] = {64,0}, + [I(237,178)] = {64,0}, + [I(238,178)] = {64,0}, + [I(239,178)] = {64,0}, + [I(240,178)] = {64,0}, + [I(241,178)] = {64,0}, + [I(242,178)] = {64,0}, + [I(243,178)] = {64,0}, + [I(244,178)] = {64,0}, + [I(245,178)] = {64,0}, + [I(246,178)] = {64,0}, + [I(247,178)] = {64,0}, + [I(248,178)] = {64,0}, + [I(249,178)] = {64,0}, + [I(250,178)] = {64,0}, + [I(251,178)] = {64,0}, + [I(252,178)] = {64,0}, + [I(253,178)] = {64,0}, + [I(254,178)] = {64,0}, + [I(255,178)] = {64,0}, + [I(0,179)] = {64,0}, + [I(1,179)] = {64,0}, + [I(2,179)] = {64,0}, + [I(3,179)] = {64,0}, + [I(4,179)] = {64,0}, + [I(5,179)] = {64,0}, + [I(6,179)] = {64,0}, + [I(7,179)] = {64,0}, + [I(8,179)] = {64,0}, + [I(9,179)] = {64,0}, + [I(10,179)] = {64,0}, + [I(11,179)] = {64,0}, + [I(12,179)] = {64,0}, + [I(13,179)] = {64,0}, + [I(14,179)] = {64,0}, + [I(15,179)] = {64,0}, + [I(16,179)] = {64,0}, + [I(17,179)] = {64,0}, + [I(18,179)] = {64,0}, + [I(19,179)] = {64,0}, + [I(20,179)] = {64,0}, + [I(21,179)] = {64,0}, + [I(22,179)] = {64,0}, + [I(23,179)] = {64,0}, + [I(24,179)] = {64,0}, + [I(25,179)] = {64,0}, + [I(26,179)] = {64,0}, + [I(27,179)] = {64,0}, + [I(28,179)] = {64,0}, + [I(29,179)] = {64,0}, + [I(30,179)] = {64,0}, + [I(31,179)] = {64,0}, + [I(32,179)] = {27,0x29FFFE2}, + [I(33,179)] = {31,0x7F1FFFE2}, + [I(34,179)] = {31,0x7F3FFFE2}, + [I(35,179)] = {64,0}, + [I(36,179)] = {64,0}, + [I(37,179)] = {27,0x2BFFFE2}, + [I(38,179)] = {29,0x1F1FFFE2}, + [I(39,179)] = {X32,0xFF5FFFE2}, + [I(40,179)] = {31,0x7F5FFFE2}, + [I(41,179)] = {31,0x7F7FFFE2}, + [I(42,179)] = {29,0x1F3FFFE2}, + [I(43,179)] = {X32,0xFF7FFFE2}, + [I(44,179)] = {29,0x1F5FFFE2}, + [I(45,179)] = {27,0x2DFFFE2}, + [I(46,179)] = {27,0x2FFFFE2}, + [I(47,179)] = {27,0x31FFFE2}, + [I(48,179)] = {26,0x1FFFE2}, + [I(49,179)] = {26,0x3FFFE2}, + [I(50,179)] = {26,0x5FFFE2}, + [I(51,179)] = {27,0x33FFFE2}, + [I(52,179)] = {27,0x35FFFE2}, + [I(53,179)] = {27,0x37FFFE2}, + [I(54,179)] = {27,0x39FFFE2}, + [I(55,179)] = {27,0x3BFFFE2}, + [I(56,179)] = {27,0x3DFFFE2}, + [I(57,179)] = {27,0x3FFFFE2}, + [I(58,179)] = {28,0xB9FFFE2}, + [I(59,179)] = {29,0x1F7FFFE2}, + [I(60,179)] = {64,0}, + [I(61,179)] = {27,0x41FFFE2}, + [I(62,179)] = {64,0}, + [I(63,179)] = {31,0x7F9FFFE2}, + [I(64,179)] = {64,0}, + [I(65,179)] = {27,0x43FFFE2}, + [I(66,179)] = {28,0xBBFFFE2}, + [I(67,179)] = {28,0xBDFFFE2}, + [I(68,179)] = {28,0xBFFFFE2}, + [I(69,179)] = {28,0xC1FFFE2}, + [I(70,179)] = {28,0xC3FFFE2}, + [I(71,179)] = {28,0xC5FFFE2}, + [I(72,179)] = {28,0xC7FFFE2}, + [I(73,179)] = {28,0xC9FFFE2}, + [I(74,179)] = {28,0xCBFFFE2}, + [I(75,179)] = {28,0xCDFFFE2}, + [I(76,179)] = {28,0xCFFFFE2}, + [I(77,179)] = {28,0xD1FFFE2}, + [I(78,179)] = {28,0xD3FFFE2}, + [I(79,179)] = {28,0xD5FFFE2}, + [I(80,179)] = {28,0xD7FFFE2}, + [I(81,179)] = {28,0xD9FFFE2}, + [I(82,179)] = {28,0xDBFFFE2}, + [I(83,179)] = {28,0xDDFFFE2}, + [I(84,179)] = {28,0xDFFFFE2}, + [I(85,179)] = {28,0xE1FFFE2}, + [I(86,179)] = {28,0xE3FFFE2}, + [I(87,179)] = {28,0xE5FFFE2}, + [I(88,179)] = {29,0x1F9FFFE2}, + [I(89,179)] = {28,0xE7FFFE2}, + [I(90,179)] = {29,0x1FBFFFE2}, + [I(91,179)] = {64,0}, + [I(92,179)] = {64,0}, + [I(93,179)] = {64,0}, + [I(94,179)] = {64,0}, + [I(95,179)] = {27,0x45FFFE2}, + [I(96,179)] = {64,0}, + [I(97,179)] = {26,0x7FFFE2}, + [I(98,179)] = {27,0x47FFFE2}, + [I(99,179)] = {26,0x9FFFE2}, + [I(100,179)] = {27,0x49FFFE2}, + [I(101,179)] = {26,0xBFFFE2}, + [I(102,179)] = {27,0x4BFFFE2}, + [I(103,179)] = {27,0x4DFFFE2}, + [I(104,179)] = {27,0x4FFFFE2}, + [I(105,179)] = {26,0xDFFFE2}, + [I(106,179)] = {28,0xE9FFFE2}, + [I(107,179)] = {28,0xEBFFFE2}, + [I(108,179)] = {27,0x51FFFE2}, + [I(109,179)] = {27,0x53FFFE2}, + [I(110,179)] = {27,0x55FFFE2}, + [I(111,179)] = {26,0xFFFFE2}, + [I(112,179)] = {27,0x57FFFE2}, + [I(113,179)] = {28,0xEDFFFE2}, + [I(114,179)] = {27,0x59FFFE2}, + [I(115,179)] = {26,0x11FFFE2}, + [I(116,179)] = {26,0x13FFFE2}, + [I(117,179)] = {27,0x5BFFFE2}, + [I(118,179)] = {28,0xEFFFFE2}, + [I(119,179)] = {28,0xF1FFFE2}, + [I(120,179)] = {28,0xF3FFFE2}, + [I(121,179)] = {28,0xF5FFFE2}, + [I(122,179)] = {28,0xF7FFFE2}, + [I(123,179)] = {64,0}, + [I(124,179)] = {X32,0xFF9FFFE2}, + [I(125,179)] = {64,0}, + [I(126,179)] = {64,0}, + [I(127,179)] = {64,0}, + [I(128,179)] = {64,0}, + [I(129,179)] = {64,0}, + [I(130,179)] = {64,0}, + [I(131,179)] = {64,0}, + [I(132,179)] = {64,0}, + [I(133,179)] = {64,0}, + [I(134,179)] = {64,0}, + [I(135,179)] = {64,0}, + [I(136,179)] = {64,0}, + [I(137,179)] = {64,0}, + [I(138,179)] = {64,0}, + [I(139,179)] = {64,0}, + [I(140,179)] = {64,0}, + [I(141,179)] = {64,0}, + [I(142,179)] = {64,0}, + [I(143,179)] = {64,0}, + [I(144,179)] = {64,0}, + [I(145,179)] = {64,0}, + [I(146,179)] = {64,0}, + [I(147,179)] = {64,0}, + [I(148,179)] = {64,0}, + [I(149,179)] = {64,0}, + [I(150,179)] = {64,0}, + [I(151,179)] = {64,0}, + [I(152,179)] = {64,0}, + [I(153,179)] = {64,0}, + [I(154,179)] = {64,0}, + [I(155,179)] = {64,0}, + [I(156,179)] = {64,0}, + [I(157,179)] = {64,0}, + [I(158,179)] = {64,0}, + [I(159,179)] = {64,0}, + [I(160,179)] = {64,0}, + [I(161,179)] = {64,0}, + [I(162,179)] = {64,0}, + [I(163,179)] = {64,0}, + [I(164,179)] = {64,0}, + [I(165,179)] = {64,0}, + [I(166,179)] = {64,0}, + [I(167,179)] = {64,0}, + [I(168,179)] = {64,0}, + [I(169,179)] = {64,0}, + [I(170,179)] = {64,0}, + [I(171,179)] = {64,0}, + [I(172,179)] = {64,0}, + [I(173,179)] = {64,0}, + [I(174,179)] = {64,0}, + [I(175,179)] = {64,0}, + [I(176,179)] = {64,0}, + [I(177,179)] = {64,0}, + [I(178,179)] = {64,0}, + [I(179,179)] = {64,0}, + [I(180,179)] = {64,0}, + [I(181,179)] = {64,0}, + [I(182,179)] = {64,0}, + [I(183,179)] = {64,0}, + [I(184,179)] = {64,0}, + [I(185,179)] = {64,0}, + [I(186,179)] = {64,0}, + [I(187,179)] = {64,0}, + [I(188,179)] = {64,0}, + [I(189,179)] = {64,0}, + [I(190,179)] = {64,0}, + [I(191,179)] = {64,0}, + [I(192,179)] = {64,0}, + [I(193,179)] = {64,0}, + [I(194,179)] = {64,0}, + [I(195,179)] = {64,0}, + [I(196,179)] = {64,0}, + [I(197,179)] = {64,0}, + [I(198,179)] = {64,0}, + [I(199,179)] = {64,0}, + [I(200,179)] = {64,0}, + [I(201,179)] = {64,0}, + [I(202,179)] = {64,0}, + [I(203,179)] = {64,0}, + [I(204,179)] = {64,0}, + [I(205,179)] = {64,0}, + [I(206,179)] = {64,0}, + [I(207,179)] = {64,0}, + [I(208,179)] = {64,0}, + [I(209,179)] = {64,0}, + [I(210,179)] = {64,0}, + [I(211,179)] = {64,0}, + [I(212,179)] = {64,0}, + [I(213,179)] = {64,0}, + [I(214,179)] = {64,0}, + [I(215,179)] = {64,0}, + [I(216,179)] = {64,0}, + [I(217,179)] = {64,0}, + [I(218,179)] = {64,0}, + [I(219,179)] = {64,0}, + [I(220,179)] = {64,0}, + [I(221,179)] = {64,0}, + [I(222,179)] = {64,0}, + [I(223,179)] = {64,0}, + [I(224,179)] = {64,0}, + [I(225,179)] = {64,0}, + [I(226,179)] = {64,0}, + [I(227,179)] = {64,0}, + [I(228,179)] = {64,0}, + [I(229,179)] = {64,0}, + [I(230,179)] = {64,0}, + [I(231,179)] = {64,0}, + [I(232,179)] = {64,0}, + [I(233,179)] = {64,0}, + [I(234,179)] = {64,0}, + [I(235,179)] = {64,0}, + [I(236,179)] = {64,0}, + [I(237,179)] = {64,0}, + [I(238,179)] = {64,0}, + [I(239,179)] = {64,0}, + [I(240,179)] = {64,0}, + [I(241,179)] = {64,0}, + [I(242,179)] = {64,0}, + [I(243,179)] = {64,0}, + [I(244,179)] = {64,0}, + [I(245,179)] = {64,0}, + [I(246,179)] = {64,0}, + [I(247,179)] = {64,0}, + [I(248,179)] = {64,0}, + [I(249,179)] = {64,0}, + [I(250,179)] = {64,0}, + [I(251,179)] = {64,0}, + [I(252,179)] = {64,0}, + [I(253,179)] = {64,0}, + [I(254,179)] = {64,0}, + [I(255,179)] = {64,0}, + [I(0,180)] = {64,0}, + [I(1,180)] = {64,0}, + [I(2,180)] = {64,0}, + [I(3,180)] = {64,0}, + [I(4,180)] = {64,0}, + [I(5,180)] = {64,0}, + [I(6,180)] = {64,0}, + [I(7,180)] = {64,0}, + [I(8,180)] = {64,0}, + [I(9,180)] = {64,0}, + [I(10,180)] = {64,0}, + [I(11,180)] = {64,0}, + [I(12,180)] = {64,0}, + [I(13,180)] = {64,0}, + [I(14,180)] = {64,0}, + [I(15,180)] = {64,0}, + [I(16,180)] = {64,0}, + [I(17,180)] = {64,0}, + [I(18,180)] = {64,0}, + [I(19,180)] = {64,0}, + [I(20,180)] = {64,0}, + [I(21,180)] = {64,0}, + [I(22,180)] = {64,0}, + [I(23,180)] = {64,0}, + [I(24,180)] = {64,0}, + [I(25,180)] = {64,0}, + [I(26,180)] = {64,0}, + [I(27,180)] = {64,0}, + [I(28,180)] = {64,0}, + [I(29,180)] = {64,0}, + [I(30,180)] = {64,0}, + [I(31,180)] = {64,0}, + [I(32,180)] = {29,0xA7FFFED}, + [I(33,180)] = {64,0}, + [I(34,180)] = {64,0}, + [I(35,180)] = {64,0}, + [I(36,180)] = {64,0}, + [I(37,180)] = {29,0xAFFFFED}, + [I(38,180)] = {31,0x7C7FFFED}, + [I(39,180)] = {64,0}, + [I(40,180)] = {64,0}, + [I(41,180)] = {64,0}, + [I(42,180)] = {31,0x7CFFFFED}, + [I(43,180)] = {64,0}, + [I(44,180)] = {31,0x7D7FFFED}, + [I(45,180)] = {29,0xB7FFFED}, + [I(46,180)] = {29,0xBFFFFED}, + [I(47,180)] = {29,0xC7FFFED}, + [I(48,180)] = {28,0x7FFFED}, + [I(49,180)] = {28,0xFFFFED}, + [I(50,180)] = {28,0x17FFFED}, + [I(51,180)] = {29,0xCFFFFED}, + [I(52,180)] = {29,0xD7FFFED}, + [I(53,180)] = {29,0xDFFFFED}, + [I(54,180)] = {29,0xE7FFFED}, + [I(55,180)] = {29,0xEFFFFED}, + [I(56,180)] = {29,0xF7FFFED}, + [I(57,180)] = {29,0xFFFFFED}, + [I(58,180)] = {30,0x2E7FFFED}, + [I(59,180)] = {31,0x7DFFFFED}, + [I(60,180)] = {64,0}, + [I(61,180)] = {29,0x107FFFED}, + [I(62,180)] = {64,0}, + [I(63,180)] = {64,0}, + [I(64,180)] = {64,0}, + [I(65,180)] = {29,0x10FFFFED}, + [I(66,180)] = {30,0x2EFFFFED}, + [I(67,180)] = {30,0x2F7FFFED}, + [I(68,180)] = {30,0x2FFFFFED}, + [I(69,180)] = {30,0x307FFFED}, + [I(70,180)] = {30,0x30FFFFED}, + [I(71,180)] = {30,0x317FFFED}, + [I(72,180)] = {30,0x31FFFFED}, + [I(73,180)] = {30,0x327FFFED}, + [I(74,180)] = {30,0x32FFFFED}, + [I(75,180)] = {30,0x337FFFED}, + [I(76,180)] = {30,0x33FFFFED}, + [I(77,180)] = {30,0x347FFFED}, + [I(78,180)] = {30,0x34FFFFED}, + [I(79,180)] = {30,0x357FFFED}, + [I(80,180)] = {30,0x35FFFFED}, + [I(81,180)] = {30,0x367FFFED}, + [I(82,180)] = {30,0x36FFFFED}, + [I(83,180)] = {30,0x377FFFED}, + [I(84,180)] = {30,0x37FFFFED}, + [I(85,180)] = {30,0x387FFFED}, + [I(86,180)] = {30,0x38FFFFED}, + [I(87,180)] = {30,0x397FFFED}, + [I(88,180)] = {31,0x7E7FFFED}, + [I(89,180)] = {30,0x39FFFFED}, + [I(90,180)] = {31,0x7EFFFFED}, + [I(91,180)] = {64,0}, + [I(92,180)] = {64,0}, + [I(93,180)] = {64,0}, + [I(94,180)] = {64,0}, + [I(95,180)] = {29,0x117FFFED}, + [I(96,180)] = {64,0}, + [I(97,180)] = {28,0x1FFFFED}, + [I(98,180)] = {29,0x11FFFFED}, + [I(99,180)] = {28,0x27FFFED}, + [I(100,180)] = {29,0x127FFFED}, + [I(101,180)] = {28,0x2FFFFED}, + [I(102,180)] = {29,0x12FFFFED}, + [I(103,180)] = {29,0x137FFFED}, + [I(104,180)] = {29,0x13FFFFED}, + [I(105,180)] = {28,0x37FFFED}, + [I(106,180)] = {30,0x3A7FFFED}, + [I(107,180)] = {30,0x3AFFFFED}, + [I(108,180)] = {29,0x147FFFED}, + [I(109,180)] = {29,0x14FFFFED}, + [I(110,180)] = {29,0x157FFFED}, + [I(111,180)] = {28,0x3FFFFED}, + [I(112,180)] = {29,0x15FFFFED}, + [I(113,180)] = {30,0x3B7FFFED}, + [I(114,180)] = {29,0x167FFFED}, + [I(115,180)] = {28,0x47FFFED}, + [I(116,180)] = {28,0x4FFFFED}, + [I(117,180)] = {29,0x16FFFFED}, + [I(118,180)] = {30,0x3BFFFFED}, + [I(119,180)] = {30,0x3C7FFFED}, + [I(120,180)] = {30,0x3CFFFFED}, + [I(121,180)] = {30,0x3D7FFFED}, + [I(122,180)] = {30,0x3DFFFFED}, + [I(123,180)] = {64,0}, + [I(124,180)] = {64,0}, + [I(125,180)] = {64,0}, + [I(126,180)] = {64,0}, + [I(127,180)] = {64,0}, + [I(128,180)] = {64,0}, + [I(129,180)] = {64,0}, + [I(130,180)] = {64,0}, + [I(131,180)] = {64,0}, + [I(132,180)] = {64,0}, + [I(133,180)] = {64,0}, + [I(134,180)] = {64,0}, + [I(135,180)] = {64,0}, + [I(136,180)] = {64,0}, + [I(137,180)] = {64,0}, + [I(138,180)] = {64,0}, + [I(139,180)] = {64,0}, + [I(140,180)] = {64,0}, + [I(141,180)] = {64,0}, + [I(142,180)] = {64,0}, + [I(143,180)] = {64,0}, + [I(144,180)] = {64,0}, + [I(145,180)] = {64,0}, + [I(146,180)] = {64,0}, + [I(147,180)] = {64,0}, + [I(148,180)] = {64,0}, + [I(149,180)] = {64,0}, + [I(150,180)] = {64,0}, + [I(151,180)] = {64,0}, + [I(152,180)] = {64,0}, + [I(153,180)] = {64,0}, + [I(154,180)] = {64,0}, + [I(155,180)] = {64,0}, + [I(156,180)] = {64,0}, + [I(157,180)] = {64,0}, + [I(158,180)] = {64,0}, + [I(159,180)] = {64,0}, + [I(160,180)] = {64,0}, + [I(161,180)] = {64,0}, + [I(162,180)] = {64,0}, + [I(163,180)] = {64,0}, + [I(164,180)] = {64,0}, + [I(165,180)] = {64,0}, + [I(166,180)] = {64,0}, + [I(167,180)] = {64,0}, + [I(168,180)] = {64,0}, + [I(169,180)] = {64,0}, + [I(170,180)] = {64,0}, + [I(171,180)] = {64,0}, + [I(172,180)] = {64,0}, + [I(173,180)] = {64,0}, + [I(174,180)] = {64,0}, + [I(175,180)] = {64,0}, + [I(176,180)] = {64,0}, + [I(177,180)] = {64,0}, + [I(178,180)] = {64,0}, + [I(179,180)] = {64,0}, + [I(180,180)] = {64,0}, + [I(181,180)] = {64,0}, + [I(182,180)] = {64,0}, + [I(183,180)] = {64,0}, + [I(184,180)] = {64,0}, + [I(185,180)] = {64,0}, + [I(186,180)] = {64,0}, + [I(187,180)] = {64,0}, + [I(188,180)] = {64,0}, + [I(189,180)] = {64,0}, + [I(190,180)] = {64,0}, + [I(191,180)] = {64,0}, + [I(192,180)] = {64,0}, + [I(193,180)] = {64,0}, + [I(194,180)] = {64,0}, + [I(195,180)] = {64,0}, + [I(196,180)] = {64,0}, + [I(197,180)] = {64,0}, + [I(198,180)] = {64,0}, + [I(199,180)] = {64,0}, + [I(200,180)] = {64,0}, + [I(201,180)] = {64,0}, + [I(202,180)] = {64,0}, + [I(203,180)] = {64,0}, + [I(204,180)] = {64,0}, + [I(205,180)] = {64,0}, + [I(206,180)] = {64,0}, + [I(207,180)] = {64,0}, + [I(208,180)] = {64,0}, + [I(209,180)] = {64,0}, + [I(210,180)] = {64,0}, + [I(211,180)] = {64,0}, + [I(212,180)] = {64,0}, + [I(213,180)] = {64,0}, + [I(214,180)] = {64,0}, + [I(215,180)] = {64,0}, + [I(216,180)] = {64,0}, + [I(217,180)] = {64,0}, + [I(218,180)] = {64,0}, + [I(219,180)] = {64,0}, + [I(220,180)] = {64,0}, + [I(221,180)] = {64,0}, + [I(222,180)] = {64,0}, + [I(223,180)] = {64,0}, + [I(224,180)] = {64,0}, + [I(225,180)] = {64,0}, + [I(226,180)] = {64,0}, + [I(227,180)] = {64,0}, + [I(228,180)] = {64,0}, + [I(229,180)] = {64,0}, + [I(230,180)] = {64,0}, + [I(231,180)] = {64,0}, + [I(232,180)] = {64,0}, + [I(233,180)] = {64,0}, + [I(234,180)] = {64,0}, + [I(235,180)] = {64,0}, + [I(236,180)] = {64,0}, + [I(237,180)] = {64,0}, + [I(238,180)] = {64,0}, + [I(239,180)] = {64,0}, + [I(240,180)] = {64,0}, + [I(241,180)] = {64,0}, + [I(242,180)] = {64,0}, + [I(243,180)] = {64,0}, + [I(244,180)] = {64,0}, + [I(245,180)] = {64,0}, + [I(246,180)] = {64,0}, + [I(247,180)] = {64,0}, + [I(248,180)] = {64,0}, + [I(249,180)] = {64,0}, + [I(250,180)] = {64,0}, + [I(251,180)] = {64,0}, + [I(252,180)] = {64,0}, + [I(253,180)] = {64,0}, + [I(254,180)] = {64,0}, + [I(255,180)] = {64,0}, + [I(0,181)] = {64,0}, + [I(1,181)] = {64,0}, + [I(2,181)] = {64,0}, + [I(3,181)] = {64,0}, + [I(4,181)] = {64,0}, + [I(5,181)] = {64,0}, + [I(6,181)] = {64,0}, + [I(7,181)] = {64,0}, + [I(8,181)] = {64,0}, + [I(9,181)] = {64,0}, + [I(10,181)] = {64,0}, + [I(11,181)] = {64,0}, + [I(12,181)] = {64,0}, + [I(13,181)] = {64,0}, + [I(14,181)] = {64,0}, + [I(15,181)] = {64,0}, + [I(16,181)] = {64,0}, + [I(17,181)] = {64,0}, + [I(18,181)] = {64,0}, + [I(19,181)] = {64,0}, + [I(20,181)] = {64,0}, + [I(21,181)] = {64,0}, + [I(22,181)] = {64,0}, + [I(23,181)] = {64,0}, + [I(24,181)] = {64,0}, + [I(25,181)] = {64,0}, + [I(26,181)] = {64,0}, + [I(27,181)] = {64,0}, + [I(28,181)] = {64,0}, + [I(29,181)] = {64,0}, + [I(30,181)] = {64,0}, + [I(31,181)] = {64,0}, + [I(32,181)] = {28,0x53FFFE1}, + [I(33,181)] = {X32,0xFE3FFFE1}, + [I(34,181)] = {X32,0xFE7FFFE1}, + [I(35,181)] = {64,0}, + [I(36,181)] = {64,0}, + [I(37,181)] = {28,0x57FFFE1}, + [I(38,181)] = {30,0x3E3FFFE1}, + [I(39,181)] = {64,0}, + [I(40,181)] = {X32,0xFEBFFFE1}, + [I(41,181)] = {X32,0xFEFFFFE1}, + [I(42,181)] = {30,0x3E7FFFE1}, + [I(43,181)] = {64,0}, + [I(44,181)] = {30,0x3EBFFFE1}, + [I(45,181)] = {28,0x5BFFFE1}, + [I(46,181)] = {28,0x5FFFFE1}, + [I(47,181)] = {28,0x63FFFE1}, + [I(48,181)] = {27,0x3FFFE1}, + [I(49,181)] = {27,0x7FFFE1}, + [I(50,181)] = {27,0xBFFFE1}, + [I(51,181)] = {28,0x67FFFE1}, + [I(52,181)] = {28,0x6BFFFE1}, + [I(53,181)] = {28,0x6FFFFE1}, + [I(54,181)] = {28,0x73FFFE1}, + [I(55,181)] = {28,0x77FFFE1}, + [I(56,181)] = {28,0x7BFFFE1}, + [I(57,181)] = {28,0x7FFFFE1}, + [I(58,181)] = {29,0x173FFFE1}, + [I(59,181)] = {30,0x3EFFFFE1}, + [I(60,181)] = {64,0}, + [I(61,181)] = {28,0x83FFFE1}, + [I(62,181)] = {64,0}, + [I(63,181)] = {X32,0xFF3FFFE1}, + [I(64,181)] = {64,0}, + [I(65,181)] = {28,0x87FFFE1}, + [I(66,181)] = {29,0x177FFFE1}, + [I(67,181)] = {29,0x17BFFFE1}, + [I(68,181)] = {29,0x17FFFFE1}, + [I(69,181)] = {29,0x183FFFE1}, + [I(70,181)] = {29,0x187FFFE1}, + [I(71,181)] = {29,0x18BFFFE1}, + [I(72,181)] = {29,0x18FFFFE1}, + [I(73,181)] = {29,0x193FFFE1}, + [I(74,181)] = {29,0x197FFFE1}, + [I(75,181)] = {29,0x19BFFFE1}, + [I(76,181)] = {29,0x19FFFFE1}, + [I(77,181)] = {29,0x1A3FFFE1}, + [I(78,181)] = {29,0x1A7FFFE1}, + [I(79,181)] = {29,0x1ABFFFE1}, + [I(80,181)] = {29,0x1AFFFFE1}, + [I(81,181)] = {29,0x1B3FFFE1}, + [I(82,181)] = {29,0x1B7FFFE1}, + [I(83,181)] = {29,0x1BBFFFE1}, + [I(84,181)] = {29,0x1BFFFFE1}, + [I(85,181)] = {29,0x1C3FFFE1}, + [I(86,181)] = {29,0x1C7FFFE1}, + [I(87,181)] = {29,0x1CBFFFE1}, + [I(88,181)] = {30,0x3F3FFFE1}, + [I(89,181)] = {29,0x1CFFFFE1}, + [I(90,181)] = {30,0x3F7FFFE1}, + [I(91,181)] = {64,0}, + [I(92,181)] = {64,0}, + [I(93,181)] = {64,0}, + [I(94,181)] = {64,0}, + [I(95,181)] = {28,0x8BFFFE1}, + [I(96,181)] = {64,0}, + [I(97,181)] = {27,0xFFFFE1}, + [I(98,181)] = {28,0x8FFFFE1}, + [I(99,181)] = {27,0x13FFFE1}, + [I(100,181)] = {28,0x93FFFE1}, + [I(101,181)] = {27,0x17FFFE1}, + [I(102,181)] = {28,0x97FFFE1}, + [I(103,181)] = {28,0x9BFFFE1}, + [I(104,181)] = {28,0x9FFFFE1}, + [I(105,181)] = {27,0x1BFFFE1}, + [I(106,181)] = {29,0x1D3FFFE1}, + [I(107,181)] = {29,0x1D7FFFE1}, + [I(108,181)] = {28,0xA3FFFE1}, + [I(109,181)] = {28,0xA7FFFE1}, + [I(110,181)] = {28,0xABFFFE1}, + [I(111,181)] = {27,0x1FFFFE1}, + [I(112,181)] = {28,0xAFFFFE1}, + [I(113,181)] = {29,0x1DBFFFE1}, + [I(114,181)] = {28,0xB3FFFE1}, + [I(115,181)] = {27,0x23FFFE1}, + [I(116,181)] = {27,0x27FFFE1}, + [I(117,181)] = {28,0xB7FFFE1}, + [I(118,181)] = {29,0x1DFFFFE1}, + [I(119,181)] = {29,0x1E3FFFE1}, + [I(120,181)] = {29,0x1E7FFFE1}, + [I(121,181)] = {29,0x1EBFFFE1}, + [I(122,181)] = {29,0x1EFFFFE1}, + [I(123,181)] = {64,0}, + [I(124,181)] = {64,0}, + [I(125,181)] = {64,0}, + [I(126,181)] = {64,0}, + [I(127,181)] = {64,0}, + [I(128,181)] = {64,0}, + [I(129,181)] = {64,0}, + [I(130,181)] = {64,0}, + [I(131,181)] = {64,0}, + [I(132,181)] = {64,0}, + [I(133,181)] = {64,0}, + [I(134,181)] = {64,0}, + [I(135,181)] = {64,0}, + [I(136,181)] = {64,0}, + [I(137,181)] = {64,0}, + [I(138,181)] = {64,0}, + [I(139,181)] = {64,0}, + [I(140,181)] = {64,0}, + [I(141,181)] = {64,0}, + [I(142,181)] = {64,0}, + [I(143,181)] = {64,0}, + [I(144,181)] = {64,0}, + [I(145,181)] = {64,0}, + [I(146,181)] = {64,0}, + [I(147,181)] = {64,0}, + [I(148,181)] = {64,0}, + [I(149,181)] = {64,0}, + [I(150,181)] = {64,0}, + [I(151,181)] = {64,0}, + [I(152,181)] = {64,0}, + [I(153,181)] = {64,0}, + [I(154,181)] = {64,0}, + [I(155,181)] = {64,0}, + [I(156,181)] = {64,0}, + [I(157,181)] = {64,0}, + [I(158,181)] = {64,0}, + [I(159,181)] = {64,0}, + [I(160,181)] = {64,0}, + [I(161,181)] = {64,0}, + [I(162,181)] = {64,0}, + [I(163,181)] = {64,0}, + [I(164,181)] = {64,0}, + [I(165,181)] = {64,0}, + [I(166,181)] = {64,0}, + [I(167,181)] = {64,0}, + [I(168,181)] = {64,0}, + [I(169,181)] = {64,0}, + [I(170,181)] = {64,0}, + [I(171,181)] = {64,0}, + [I(172,181)] = {64,0}, + [I(173,181)] = {64,0}, + [I(174,181)] = {64,0}, + [I(175,181)] = {64,0}, + [I(176,181)] = {64,0}, + [I(177,181)] = {64,0}, + [I(178,181)] = {64,0}, + [I(179,181)] = {64,0}, + [I(180,181)] = {64,0}, + [I(181,181)] = {64,0}, + [I(182,181)] = {64,0}, + [I(183,181)] = {64,0}, + [I(184,181)] = {64,0}, + [I(185,181)] = {64,0}, + [I(186,181)] = {64,0}, + [I(187,181)] = {64,0}, + [I(188,181)] = {64,0}, + [I(189,181)] = {64,0}, + [I(190,181)] = {64,0}, + [I(191,181)] = {64,0}, + [I(192,181)] = {64,0}, + [I(193,181)] = {64,0}, + [I(194,181)] = {64,0}, + [I(195,181)] = {64,0}, + [I(196,181)] = {64,0}, + [I(197,181)] = {64,0}, + [I(198,181)] = {64,0}, + [I(199,181)] = {64,0}, + [I(200,181)] = {64,0}, + [I(201,181)] = {64,0}, + [I(202,181)] = {64,0}, + [I(203,181)] = {64,0}, + [I(204,181)] = {64,0}, + [I(205,181)] = {64,0}, + [I(206,181)] = {64,0}, + [I(207,181)] = {64,0}, + [I(208,181)] = {64,0}, + [I(209,181)] = {64,0}, + [I(210,181)] = {64,0}, + [I(211,181)] = {64,0}, + [I(212,181)] = {64,0}, + [I(213,181)] = {64,0}, + [I(214,181)] = {64,0}, + [I(215,181)] = {64,0}, + [I(216,181)] = {64,0}, + [I(217,181)] = {64,0}, + [I(218,181)] = {64,0}, + [I(219,181)] = {64,0}, + [I(220,181)] = {64,0}, + [I(221,181)] = {64,0}, + [I(222,181)] = {64,0}, + [I(223,181)] = {64,0}, + [I(224,181)] = {64,0}, + [I(225,181)] = {64,0}, + [I(226,181)] = {64,0}, + [I(227,181)] = {64,0}, + [I(228,181)] = {64,0}, + [I(229,181)] = {64,0}, + [I(230,181)] = {64,0}, + [I(231,181)] = {64,0}, + [I(232,181)] = {64,0}, + [I(233,181)] = {64,0}, + [I(234,181)] = {64,0}, + [I(235,181)] = {64,0}, + [I(236,181)] = {64,0}, + [I(237,181)] = {64,0}, + [I(238,181)] = {64,0}, + [I(239,181)] = {64,0}, + [I(240,181)] = {64,0}, + [I(241,181)] = {64,0}, + [I(242,181)] = {64,0}, + [I(243,181)] = {64,0}, + [I(244,181)] = {64,0}, + [I(245,181)] = {64,0}, + [I(246,181)] = {64,0}, + [I(247,181)] = {64,0}, + [I(248,181)] = {64,0}, + [I(249,181)] = {64,0}, + [I(250,181)] = {64,0}, + [I(251,181)] = {64,0}, + [I(252,181)] = {64,0}, + [I(253,181)] = {64,0}, + [I(254,181)] = {64,0}, + [I(255,181)] = {64,0}, + [I(0,182)] = {64,0}, + [I(1,182)] = {64,0}, + [I(2,182)] = {64,0}, + [I(3,182)] = {64,0}, + [I(4,182)] = {64,0}, + [I(5,182)] = {64,0}, + [I(6,182)] = {64,0}, + [I(7,182)] = {64,0}, + [I(8,182)] = {64,0}, + [I(9,182)] = {64,0}, + [I(10,182)] = {64,0}, + [I(11,182)] = {64,0}, + [I(12,182)] = {64,0}, + [I(13,182)] = {64,0}, + [I(14,182)] = {64,0}, + [I(15,182)] = {64,0}, + [I(16,182)] = {64,0}, + [I(17,182)] = {64,0}, + [I(18,182)] = {64,0}, + [I(19,182)] = {64,0}, + [I(20,182)] = {64,0}, + [I(21,182)] = {64,0}, + [I(22,182)] = {64,0}, + [I(23,182)] = {64,0}, + [I(24,182)] = {64,0}, + [I(25,182)] = {64,0}, + [I(26,182)] = {64,0}, + [I(27,182)] = {64,0}, + [I(28,182)] = {64,0}, + [I(29,182)] = {64,0}, + [I(30,182)] = {64,0}, + [I(31,182)] = {64,0}, + [I(32,182)] = {29,0xA7FFFEE}, + [I(33,182)] = {64,0}, + [I(34,182)] = {64,0}, + [I(35,182)] = {64,0}, + [I(36,182)] = {64,0}, + [I(37,182)] = {29,0xAFFFFEE}, + [I(38,182)] = {31,0x7C7FFFEE}, + [I(39,182)] = {64,0}, + [I(40,182)] = {64,0}, + [I(41,182)] = {64,0}, + [I(42,182)] = {31,0x7CFFFFEE}, + [I(43,182)] = {64,0}, + [I(44,182)] = {31,0x7D7FFFEE}, + [I(45,182)] = {29,0xB7FFFEE}, + [I(46,182)] = {29,0xBFFFFEE}, + [I(47,182)] = {29,0xC7FFFEE}, + [I(48,182)] = {28,0x7FFFEE}, + [I(49,182)] = {28,0xFFFFEE}, + [I(50,182)] = {28,0x17FFFEE}, + [I(51,182)] = {29,0xCFFFFEE}, + [I(52,182)] = {29,0xD7FFFEE}, + [I(53,182)] = {29,0xDFFFFEE}, + [I(54,182)] = {29,0xE7FFFEE}, + [I(55,182)] = {29,0xEFFFFEE}, + [I(56,182)] = {29,0xF7FFFEE}, + [I(57,182)] = {29,0xFFFFFEE}, + [I(58,182)] = {30,0x2E7FFFEE}, + [I(59,182)] = {31,0x7DFFFFEE}, + [I(60,182)] = {64,0}, + [I(61,182)] = {29,0x107FFFEE}, + [I(62,182)] = {64,0}, + [I(63,182)] = {64,0}, + [I(64,182)] = {64,0}, + [I(65,182)] = {29,0x10FFFFEE}, + [I(66,182)] = {30,0x2EFFFFEE}, + [I(67,182)] = {30,0x2F7FFFEE}, + [I(68,182)] = {30,0x2FFFFFEE}, + [I(69,182)] = {30,0x307FFFEE}, + [I(70,182)] = {30,0x30FFFFEE}, + [I(71,182)] = {30,0x317FFFEE}, + [I(72,182)] = {30,0x31FFFFEE}, + [I(73,182)] = {30,0x327FFFEE}, + [I(74,182)] = {30,0x32FFFFEE}, + [I(75,182)] = {30,0x337FFFEE}, + [I(76,182)] = {30,0x33FFFFEE}, + [I(77,182)] = {30,0x347FFFEE}, + [I(78,182)] = {30,0x34FFFFEE}, + [I(79,182)] = {30,0x357FFFEE}, + [I(80,182)] = {30,0x35FFFFEE}, + [I(81,182)] = {30,0x367FFFEE}, + [I(82,182)] = {30,0x36FFFFEE}, + [I(83,182)] = {30,0x377FFFEE}, + [I(84,182)] = {30,0x37FFFFEE}, + [I(85,182)] = {30,0x387FFFEE}, + [I(86,182)] = {30,0x38FFFFEE}, + [I(87,182)] = {30,0x397FFFEE}, + [I(88,182)] = {31,0x7E7FFFEE}, + [I(89,182)] = {30,0x39FFFFEE}, + [I(90,182)] = {31,0x7EFFFFEE}, + [I(91,182)] = {64,0}, + [I(92,182)] = {64,0}, + [I(93,182)] = {64,0}, + [I(94,182)] = {64,0}, + [I(95,182)] = {29,0x117FFFEE}, + [I(96,182)] = {64,0}, + [I(97,182)] = {28,0x1FFFFEE}, + [I(98,182)] = {29,0x11FFFFEE}, + [I(99,182)] = {28,0x27FFFEE}, + [I(100,182)] = {29,0x127FFFEE}, + [I(101,182)] = {28,0x2FFFFEE}, + [I(102,182)] = {29,0x12FFFFEE}, + [I(103,182)] = {29,0x137FFFEE}, + [I(104,182)] = {29,0x13FFFFEE}, + [I(105,182)] = {28,0x37FFFEE}, + [I(106,182)] = {30,0x3A7FFFEE}, + [I(107,182)] = {30,0x3AFFFFEE}, + [I(108,182)] = {29,0x147FFFEE}, + [I(109,182)] = {29,0x14FFFFEE}, + [I(110,182)] = {29,0x157FFFEE}, + [I(111,182)] = {28,0x3FFFFEE}, + [I(112,182)] = {29,0x15FFFFEE}, + [I(113,182)] = {30,0x3B7FFFEE}, + [I(114,182)] = {29,0x167FFFEE}, + [I(115,182)] = {28,0x47FFFEE}, + [I(116,182)] = {28,0x4FFFFEE}, + [I(117,182)] = {29,0x16FFFFEE}, + [I(118,182)] = {30,0x3BFFFFEE}, + [I(119,182)] = {30,0x3C7FFFEE}, + [I(120,182)] = {30,0x3CFFFFEE}, + [I(121,182)] = {30,0x3D7FFFEE}, + [I(122,182)] = {30,0x3DFFFFEE}, + [I(123,182)] = {64,0}, + [I(124,182)] = {64,0}, + [I(125,182)] = {64,0}, + [I(126,182)] = {64,0}, + [I(127,182)] = {64,0}, + [I(128,182)] = {64,0}, + [I(129,182)] = {64,0}, + [I(130,182)] = {64,0}, + [I(131,182)] = {64,0}, + [I(132,182)] = {64,0}, + [I(133,182)] = {64,0}, + [I(134,182)] = {64,0}, + [I(135,182)] = {64,0}, + [I(136,182)] = {64,0}, + [I(137,182)] = {64,0}, + [I(138,182)] = {64,0}, + [I(139,182)] = {64,0}, + [I(140,182)] = {64,0}, + [I(141,182)] = {64,0}, + [I(142,182)] = {64,0}, + [I(143,182)] = {64,0}, + [I(144,182)] = {64,0}, + [I(145,182)] = {64,0}, + [I(146,182)] = {64,0}, + [I(147,182)] = {64,0}, + [I(148,182)] = {64,0}, + [I(149,182)] = {64,0}, + [I(150,182)] = {64,0}, + [I(151,182)] = {64,0}, + [I(152,182)] = {64,0}, + [I(153,182)] = {64,0}, + [I(154,182)] = {64,0}, + [I(155,182)] = {64,0}, + [I(156,182)] = {64,0}, + [I(157,182)] = {64,0}, + [I(158,182)] = {64,0}, + [I(159,182)] = {64,0}, + [I(160,182)] = {64,0}, + [I(161,182)] = {64,0}, + [I(162,182)] = {64,0}, + [I(163,182)] = {64,0}, + [I(164,182)] = {64,0}, + [I(165,182)] = {64,0}, + [I(166,182)] = {64,0}, + [I(167,182)] = {64,0}, + [I(168,182)] = {64,0}, + [I(169,182)] = {64,0}, + [I(170,182)] = {64,0}, + [I(171,182)] = {64,0}, + [I(172,182)] = {64,0}, + [I(173,182)] = {64,0}, + [I(174,182)] = {64,0}, + [I(175,182)] = {64,0}, + [I(176,182)] = {64,0}, + [I(177,182)] = {64,0}, + [I(178,182)] = {64,0}, + [I(179,182)] = {64,0}, + [I(180,182)] = {64,0}, + [I(181,182)] = {64,0}, + [I(182,182)] = {64,0}, + [I(183,182)] = {64,0}, + [I(184,182)] = {64,0}, + [I(185,182)] = {64,0}, + [I(186,182)] = {64,0}, + [I(187,182)] = {64,0}, + [I(188,182)] = {64,0}, + [I(189,182)] = {64,0}, + [I(190,182)] = {64,0}, + [I(191,182)] = {64,0}, + [I(192,182)] = {64,0}, + [I(193,182)] = {64,0}, + [I(194,182)] = {64,0}, + [I(195,182)] = {64,0}, + [I(196,182)] = {64,0}, + [I(197,182)] = {64,0}, + [I(198,182)] = {64,0}, + [I(199,182)] = {64,0}, + [I(200,182)] = {64,0}, + [I(201,182)] = {64,0}, + [I(202,182)] = {64,0}, + [I(203,182)] = {64,0}, + [I(204,182)] = {64,0}, + [I(205,182)] = {64,0}, + [I(206,182)] = {64,0}, + [I(207,182)] = {64,0}, + [I(208,182)] = {64,0}, + [I(209,182)] = {64,0}, + [I(210,182)] = {64,0}, + [I(211,182)] = {64,0}, + [I(212,182)] = {64,0}, + [I(213,182)] = {64,0}, + [I(214,182)] = {64,0}, + [I(215,182)] = {64,0}, + [I(216,182)] = {64,0}, + [I(217,182)] = {64,0}, + [I(218,182)] = {64,0}, + [I(219,182)] = {64,0}, + [I(220,182)] = {64,0}, + [I(221,182)] = {64,0}, + [I(222,182)] = {64,0}, + [I(223,182)] = {64,0}, + [I(224,182)] = {64,0}, + [I(225,182)] = {64,0}, + [I(226,182)] = {64,0}, + [I(227,182)] = {64,0}, + [I(228,182)] = {64,0}, + [I(229,182)] = {64,0}, + [I(230,182)] = {64,0}, + [I(231,182)] = {64,0}, + [I(232,182)] = {64,0}, + [I(233,182)] = {64,0}, + [I(234,182)] = {64,0}, + [I(235,182)] = {64,0}, + [I(236,182)] = {64,0}, + [I(237,182)] = {64,0}, + [I(238,182)] = {64,0}, + [I(239,182)] = {64,0}, + [I(240,182)] = {64,0}, + [I(241,182)] = {64,0}, + [I(242,182)] = {64,0}, + [I(243,182)] = {64,0}, + [I(244,182)] = {64,0}, + [I(245,182)] = {64,0}, + [I(246,182)] = {64,0}, + [I(247,182)] = {64,0}, + [I(248,182)] = {64,0}, + [I(249,182)] = {64,0}, + [I(250,182)] = {64,0}, + [I(251,182)] = {64,0}, + [I(252,182)] = {64,0}, + [I(253,182)] = {64,0}, + [I(254,182)] = {64,0}, + [I(255,182)] = {64,0}, + [I(0,183)] = {64,0}, + [I(1,183)] = {64,0}, + [I(2,183)] = {64,0}, + [I(3,183)] = {64,0}, + [I(4,183)] = {64,0}, + [I(5,183)] = {64,0}, + [I(6,183)] = {64,0}, + [I(7,183)] = {64,0}, + [I(8,183)] = {64,0}, + [I(9,183)] = {64,0}, + [I(10,183)] = {64,0}, + [I(11,183)] = {64,0}, + [I(12,183)] = {64,0}, + [I(13,183)] = {64,0}, + [I(14,183)] = {64,0}, + [I(15,183)] = {64,0}, + [I(16,183)] = {64,0}, + [I(17,183)] = {64,0}, + [I(18,183)] = {64,0}, + [I(19,183)] = {64,0}, + [I(20,183)] = {64,0}, + [I(21,183)] = {64,0}, + [I(22,183)] = {64,0}, + [I(23,183)] = {64,0}, + [I(24,183)] = {64,0}, + [I(25,183)] = {64,0}, + [I(26,183)] = {64,0}, + [I(27,183)] = {64,0}, + [I(28,183)] = {64,0}, + [I(29,183)] = {64,0}, + [I(30,183)] = {64,0}, + [I(31,183)] = {64,0}, + [I(32,183)] = {29,0xA7FFFEF}, + [I(33,183)] = {64,0}, + [I(34,183)] = {64,0}, + [I(35,183)] = {64,0}, + [I(36,183)] = {64,0}, + [I(37,183)] = {29,0xAFFFFEF}, + [I(38,183)] = {31,0x7C7FFFEF}, + [I(39,183)] = {64,0}, + [I(40,183)] = {64,0}, + [I(41,183)] = {64,0}, + [I(42,183)] = {31,0x7CFFFFEF}, + [I(43,183)] = {64,0}, + [I(44,183)] = {31,0x7D7FFFEF}, + [I(45,183)] = {29,0xB7FFFEF}, + [I(46,183)] = {29,0xBFFFFEF}, + [I(47,183)] = {29,0xC7FFFEF}, + [I(48,183)] = {28,0x7FFFEF}, + [I(49,183)] = {28,0xFFFFEF}, + [I(50,183)] = {28,0x17FFFEF}, + [I(51,183)] = {29,0xCFFFFEF}, + [I(52,183)] = {29,0xD7FFFEF}, + [I(53,183)] = {29,0xDFFFFEF}, + [I(54,183)] = {29,0xE7FFFEF}, + [I(55,183)] = {29,0xEFFFFEF}, + [I(56,183)] = {29,0xF7FFFEF}, + [I(57,183)] = {29,0xFFFFFEF}, + [I(58,183)] = {30,0x2E7FFFEF}, + [I(59,183)] = {31,0x7DFFFFEF}, + [I(60,183)] = {64,0}, + [I(61,183)] = {29,0x107FFFEF}, + [I(62,183)] = {64,0}, + [I(63,183)] = {64,0}, + [I(64,183)] = {64,0}, + [I(65,183)] = {29,0x10FFFFEF}, + [I(66,183)] = {30,0x2EFFFFEF}, + [I(67,183)] = {30,0x2F7FFFEF}, + [I(68,183)] = {30,0x2FFFFFEF}, + [I(69,183)] = {30,0x307FFFEF}, + [I(70,183)] = {30,0x30FFFFEF}, + [I(71,183)] = {30,0x317FFFEF}, + [I(72,183)] = {30,0x31FFFFEF}, + [I(73,183)] = {30,0x327FFFEF}, + [I(74,183)] = {30,0x32FFFFEF}, + [I(75,183)] = {30,0x337FFFEF}, + [I(76,183)] = {30,0x33FFFFEF}, + [I(77,183)] = {30,0x347FFFEF}, + [I(78,183)] = {30,0x34FFFFEF}, + [I(79,183)] = {30,0x357FFFEF}, + [I(80,183)] = {30,0x35FFFFEF}, + [I(81,183)] = {30,0x367FFFEF}, + [I(82,183)] = {30,0x36FFFFEF}, + [I(83,183)] = {30,0x377FFFEF}, + [I(84,183)] = {30,0x37FFFFEF}, + [I(85,183)] = {30,0x387FFFEF}, + [I(86,183)] = {30,0x38FFFFEF}, + [I(87,183)] = {30,0x397FFFEF}, + [I(88,183)] = {31,0x7E7FFFEF}, + [I(89,183)] = {30,0x39FFFFEF}, + [I(90,183)] = {31,0x7EFFFFEF}, + [I(91,183)] = {64,0}, + [I(92,183)] = {64,0}, + [I(93,183)] = {64,0}, + [I(94,183)] = {64,0}, + [I(95,183)] = {29,0x117FFFEF}, + [I(96,183)] = {64,0}, + [I(97,183)] = {28,0x1FFFFEF}, + [I(98,183)] = {29,0x11FFFFEF}, + [I(99,183)] = {28,0x27FFFEF}, + [I(100,183)] = {29,0x127FFFEF}, + [I(101,183)] = {28,0x2FFFFEF}, + [I(102,183)] = {29,0x12FFFFEF}, + [I(103,183)] = {29,0x137FFFEF}, + [I(104,183)] = {29,0x13FFFFEF}, + [I(105,183)] = {28,0x37FFFEF}, + [I(106,183)] = {30,0x3A7FFFEF}, + [I(107,183)] = {30,0x3AFFFFEF}, + [I(108,183)] = {29,0x147FFFEF}, + [I(109,183)] = {29,0x14FFFFEF}, + [I(110,183)] = {29,0x157FFFEF}, + [I(111,183)] = {28,0x3FFFFEF}, + [I(112,183)] = {29,0x15FFFFEF}, + [I(113,183)] = {30,0x3B7FFFEF}, + [I(114,183)] = {29,0x167FFFEF}, + [I(115,183)] = {28,0x47FFFEF}, + [I(116,183)] = {28,0x4FFFFEF}, + [I(117,183)] = {29,0x16FFFFEF}, + [I(118,183)] = {30,0x3BFFFFEF}, + [I(119,183)] = {30,0x3C7FFFEF}, + [I(120,183)] = {30,0x3CFFFFEF}, + [I(121,183)] = {30,0x3D7FFFEF}, + [I(122,183)] = {30,0x3DFFFFEF}, + [I(123,183)] = {64,0}, + [I(124,183)] = {64,0}, + [I(125,183)] = {64,0}, + [I(126,183)] = {64,0}, + [I(127,183)] = {64,0}, + [I(128,183)] = {64,0}, + [I(129,183)] = {64,0}, + [I(130,183)] = {64,0}, + [I(131,183)] = {64,0}, + [I(132,183)] = {64,0}, + [I(133,183)] = {64,0}, + [I(134,183)] = {64,0}, + [I(135,183)] = {64,0}, + [I(136,183)] = {64,0}, + [I(137,183)] = {64,0}, + [I(138,183)] = {64,0}, + [I(139,183)] = {64,0}, + [I(140,183)] = {64,0}, + [I(141,183)] = {64,0}, + [I(142,183)] = {64,0}, + [I(143,183)] = {64,0}, + [I(144,183)] = {64,0}, + [I(145,183)] = {64,0}, + [I(146,183)] = {64,0}, + [I(147,183)] = {64,0}, + [I(148,183)] = {64,0}, + [I(149,183)] = {64,0}, + [I(150,183)] = {64,0}, + [I(151,183)] = {64,0}, + [I(152,183)] = {64,0}, + [I(153,183)] = {64,0}, + [I(154,183)] = {64,0}, + [I(155,183)] = {64,0}, + [I(156,183)] = {64,0}, + [I(157,183)] = {64,0}, + [I(158,183)] = {64,0}, + [I(159,183)] = {64,0}, + [I(160,183)] = {64,0}, + [I(161,183)] = {64,0}, + [I(162,183)] = {64,0}, + [I(163,183)] = {64,0}, + [I(164,183)] = {64,0}, + [I(165,183)] = {64,0}, + [I(166,183)] = {64,0}, + [I(167,183)] = {64,0}, + [I(168,183)] = {64,0}, + [I(169,183)] = {64,0}, + [I(170,183)] = {64,0}, + [I(171,183)] = {64,0}, + [I(172,183)] = {64,0}, + [I(173,183)] = {64,0}, + [I(174,183)] = {64,0}, + [I(175,183)] = {64,0}, + [I(176,183)] = {64,0}, + [I(177,183)] = {64,0}, + [I(178,183)] = {64,0}, + [I(179,183)] = {64,0}, + [I(180,183)] = {64,0}, + [I(181,183)] = {64,0}, + [I(182,183)] = {64,0}, + [I(183,183)] = {64,0}, + [I(184,183)] = {64,0}, + [I(185,183)] = {64,0}, + [I(186,183)] = {64,0}, + [I(187,183)] = {64,0}, + [I(188,183)] = {64,0}, + [I(189,183)] = {64,0}, + [I(190,183)] = {64,0}, + [I(191,183)] = {64,0}, + [I(192,183)] = {64,0}, + [I(193,183)] = {64,0}, + [I(194,183)] = {64,0}, + [I(195,183)] = {64,0}, + [I(196,183)] = {64,0}, + [I(197,183)] = {64,0}, + [I(198,183)] = {64,0}, + [I(199,183)] = {64,0}, + [I(200,183)] = {64,0}, + [I(201,183)] = {64,0}, + [I(202,183)] = {64,0}, + [I(203,183)] = {64,0}, + [I(204,183)] = {64,0}, + [I(205,183)] = {64,0}, + [I(206,183)] = {64,0}, + [I(207,183)] = {64,0}, + [I(208,183)] = {64,0}, + [I(209,183)] = {64,0}, + [I(210,183)] = {64,0}, + [I(211,183)] = {64,0}, + [I(212,183)] = {64,0}, + [I(213,183)] = {64,0}, + [I(214,183)] = {64,0}, + [I(215,183)] = {64,0}, + [I(216,183)] = {64,0}, + [I(217,183)] = {64,0}, + [I(218,183)] = {64,0}, + [I(219,183)] = {64,0}, + [I(220,183)] = {64,0}, + [I(221,183)] = {64,0}, + [I(222,183)] = {64,0}, + [I(223,183)] = {64,0}, + [I(224,183)] = {64,0}, + [I(225,183)] = {64,0}, + [I(226,183)] = {64,0}, + [I(227,183)] = {64,0}, + [I(228,183)] = {64,0}, + [I(229,183)] = {64,0}, + [I(230,183)] = {64,0}, + [I(231,183)] = {64,0}, + [I(232,183)] = {64,0}, + [I(233,183)] = {64,0}, + [I(234,183)] = {64,0}, + [I(235,183)] = {64,0}, + [I(236,183)] = {64,0}, + [I(237,183)] = {64,0}, + [I(238,183)] = {64,0}, + [I(239,183)] = {64,0}, + [I(240,183)] = {64,0}, + [I(241,183)] = {64,0}, + [I(242,183)] = {64,0}, + [I(243,183)] = {64,0}, + [I(244,183)] = {64,0}, + [I(245,183)] = {64,0}, + [I(246,183)] = {64,0}, + [I(247,183)] = {64,0}, + [I(248,183)] = {64,0}, + [I(249,183)] = {64,0}, + [I(250,183)] = {64,0}, + [I(251,183)] = {64,0}, + [I(252,183)] = {64,0}, + [I(253,183)] = {64,0}, + [I(254,183)] = {64,0}, + [I(255,183)] = {64,0}, + [I(0,184)] = {64,0}, + [I(1,184)] = {64,0}, + [I(2,184)] = {64,0}, + [I(3,184)] = {64,0}, + [I(4,184)] = {64,0}, + [I(5,184)] = {64,0}, + [I(6,184)] = {64,0}, + [I(7,184)] = {64,0}, + [I(8,184)] = {64,0}, + [I(9,184)] = {64,0}, + [I(10,184)] = {64,0}, + [I(11,184)] = {64,0}, + [I(12,184)] = {64,0}, + [I(13,184)] = {64,0}, + [I(14,184)] = {64,0}, + [I(15,184)] = {64,0}, + [I(16,184)] = {64,0}, + [I(17,184)] = {64,0}, + [I(18,184)] = {64,0}, + [I(19,184)] = {64,0}, + [I(20,184)] = {64,0}, + [I(21,184)] = {64,0}, + [I(22,184)] = {64,0}, + [I(23,184)] = {64,0}, + [I(24,184)] = {64,0}, + [I(25,184)] = {64,0}, + [I(26,184)] = {64,0}, + [I(27,184)] = {64,0}, + [I(28,184)] = {64,0}, + [I(29,184)] = {64,0}, + [I(30,184)] = {64,0}, + [I(31,184)] = {64,0}, + [I(32,184)] = {26,0x14FFFEA}, + [I(33,184)] = {30,0x3F8FFFEA}, + [I(34,184)] = {30,0x3F9FFFEA}, + [I(35,184)] = {X32,0xFFAFFFEA}, + [I(36,184)] = {64,0}, + [I(37,184)] = {26,0x15FFFEA}, + [I(38,184)] = {28,0xF8FFFEA}, + [I(39,184)] = {31,0x7FAFFFEA}, + [I(40,184)] = {30,0x3FAFFFEA}, + [I(41,184)] = {30,0x3FBFFFEA}, + [I(42,184)] = {28,0xF9FFFEA}, + [I(43,184)] = {31,0x7FBFFFEA}, + [I(44,184)] = {28,0xFAFFFEA}, + [I(45,184)] = {26,0x16FFFEA}, + [I(46,184)] = {26,0x17FFFEA}, + [I(47,184)] = {26,0x18FFFEA}, + [I(48,184)] = {25,0xFFFEA}, + [I(49,184)] = {25,0x1FFFEA}, + [I(50,184)] = {25,0x2FFFEA}, + [I(51,184)] = {26,0x19FFFEA}, + [I(52,184)] = {26,0x1AFFFEA}, + [I(53,184)] = {26,0x1BFFFEA}, + [I(54,184)] = {26,0x1CFFFEA}, + [I(55,184)] = {26,0x1DFFFEA}, + [I(56,184)] = {26,0x1EFFFEA}, + [I(57,184)] = {26,0x1FFFFEA}, + [I(58,184)] = {27,0x5CFFFEA}, + [I(59,184)] = {28,0xFBFFFEA}, + [I(60,184)] = {64,0}, + [I(61,184)] = {26,0x20FFFEA}, + [I(62,184)] = {X32,0xFFBFFFEA}, + [I(63,184)] = {30,0x3FCFFFEA}, + [I(64,184)] = {64,0}, + [I(65,184)] = {26,0x21FFFEA}, + [I(66,184)] = {27,0x5DFFFEA}, + [I(67,184)] = {27,0x5EFFFEA}, + [I(68,184)] = {27,0x5FFFFEA}, + [I(69,184)] = {27,0x60FFFEA}, + [I(70,184)] = {27,0x61FFFEA}, + [I(71,184)] = {27,0x62FFFEA}, + [I(72,184)] = {27,0x63FFFEA}, + [I(73,184)] = {27,0x64FFFEA}, + [I(74,184)] = {27,0x65FFFEA}, + [I(75,184)] = {27,0x66FFFEA}, + [I(76,184)] = {27,0x67FFFEA}, + [I(77,184)] = {27,0x68FFFEA}, + [I(78,184)] = {27,0x69FFFEA}, + [I(79,184)] = {27,0x6AFFFEA}, + [I(80,184)] = {27,0x6BFFFEA}, + [I(81,184)] = {27,0x6CFFFEA}, + [I(82,184)] = {27,0x6DFFFEA}, + [I(83,184)] = {27,0x6EFFFEA}, + [I(84,184)] = {27,0x6FFFFEA}, + [I(85,184)] = {27,0x70FFFEA}, + [I(86,184)] = {27,0x71FFFEA}, + [I(87,184)] = {27,0x72FFFEA}, + [I(88,184)] = {28,0xFCFFFEA}, + [I(89,184)] = {27,0x73FFFEA}, + [I(90,184)] = {28,0xFDFFFEA}, + [I(91,184)] = {64,0}, + [I(92,184)] = {64,0}, + [I(93,184)] = {64,0}, + [I(94,184)] = {64,0}, + [I(95,184)] = {26,0x22FFFEA}, + [I(96,184)] = {64,0}, + [I(97,184)] = {25,0x3FFFEA}, + [I(98,184)] = {26,0x23FFFEA}, + [I(99,184)] = {25,0x4FFFEA}, + [I(100,184)] = {26,0x24FFFEA}, + [I(101,184)] = {25,0x5FFFEA}, + [I(102,184)] = {26,0x25FFFEA}, + [I(103,184)] = {26,0x26FFFEA}, + [I(104,184)] = {26,0x27FFFEA}, + [I(105,184)] = {25,0x6FFFEA}, + [I(106,184)] = {27,0x74FFFEA}, + [I(107,184)] = {27,0x75FFFEA}, + [I(108,184)] = {26,0x28FFFEA}, + [I(109,184)] = {26,0x29FFFEA}, + [I(110,184)] = {26,0x2AFFFEA}, + [I(111,184)] = {25,0x7FFFEA}, + [I(112,184)] = {26,0x2BFFFEA}, + [I(113,184)] = {27,0x76FFFEA}, + [I(114,184)] = {26,0x2CFFFEA}, + [I(115,184)] = {25,0x8FFFEA}, + [I(116,184)] = {25,0x9FFFEA}, + [I(117,184)] = {26,0x2DFFFEA}, + [I(118,184)] = {27,0x77FFFEA}, + [I(119,184)] = {27,0x78FFFEA}, + [I(120,184)] = {27,0x79FFFEA}, + [I(121,184)] = {27,0x7AFFFEA}, + [I(122,184)] = {27,0x7BFFFEA}, + [I(123,184)] = {64,0}, + [I(124,184)] = {31,0x7FCFFFEA}, + [I(125,184)] = {64,0}, + [I(126,184)] = {64,0}, + [I(127,184)] = {64,0}, + [I(128,184)] = {64,0}, + [I(129,184)] = {64,0}, + [I(130,184)] = {64,0}, + [I(131,184)] = {64,0}, + [I(132,184)] = {64,0}, + [I(133,184)] = {64,0}, + [I(134,184)] = {64,0}, + [I(135,184)] = {64,0}, + [I(136,184)] = {64,0}, + [I(137,184)] = {64,0}, + [I(138,184)] = {64,0}, + [I(139,184)] = {64,0}, + [I(140,184)] = {64,0}, + [I(141,184)] = {64,0}, + [I(142,184)] = {64,0}, + [I(143,184)] = {64,0}, + [I(144,184)] = {64,0}, + [I(145,184)] = {64,0}, + [I(146,184)] = {64,0}, + [I(147,184)] = {64,0}, + [I(148,184)] = {64,0}, + [I(149,184)] = {64,0}, + [I(150,184)] = {64,0}, + [I(151,184)] = {64,0}, + [I(152,184)] = {64,0}, + [I(153,184)] = {64,0}, + [I(154,184)] = {64,0}, + [I(155,184)] = {64,0}, + [I(156,184)] = {64,0}, + [I(157,184)] = {64,0}, + [I(158,184)] = {64,0}, + [I(159,184)] = {64,0}, + [I(160,184)] = {64,0}, + [I(161,184)] = {64,0}, + [I(162,184)] = {64,0}, + [I(163,184)] = {64,0}, + [I(164,184)] = {64,0}, + [I(165,184)] = {64,0}, + [I(166,184)] = {64,0}, + [I(167,184)] = {64,0}, + [I(168,184)] = {64,0}, + [I(169,184)] = {64,0}, + [I(170,184)] = {64,0}, + [I(171,184)] = {64,0}, + [I(172,184)] = {64,0}, + [I(173,184)] = {64,0}, + [I(174,184)] = {64,0}, + [I(175,184)] = {64,0}, + [I(176,184)] = {64,0}, + [I(177,184)] = {64,0}, + [I(178,184)] = {64,0}, + [I(179,184)] = {64,0}, + [I(180,184)] = {64,0}, + [I(181,184)] = {64,0}, + [I(182,184)] = {64,0}, + [I(183,184)] = {64,0}, + [I(184,184)] = {64,0}, + [I(185,184)] = {64,0}, + [I(186,184)] = {64,0}, + [I(187,184)] = {64,0}, + [I(188,184)] = {64,0}, + [I(189,184)] = {64,0}, + [I(190,184)] = {64,0}, + [I(191,184)] = {64,0}, + [I(192,184)] = {64,0}, + [I(193,184)] = {64,0}, + [I(194,184)] = {64,0}, + [I(195,184)] = {64,0}, + [I(196,184)] = {64,0}, + [I(197,184)] = {64,0}, + [I(198,184)] = {64,0}, + [I(199,184)] = {64,0}, + [I(200,184)] = {64,0}, + [I(201,184)] = {64,0}, + [I(202,184)] = {64,0}, + [I(203,184)] = {64,0}, + [I(204,184)] = {64,0}, + [I(205,184)] = {64,0}, + [I(206,184)] = {64,0}, + [I(207,184)] = {64,0}, + [I(208,184)] = {64,0}, + [I(209,184)] = {64,0}, + [I(210,184)] = {64,0}, + [I(211,184)] = {64,0}, + [I(212,184)] = {64,0}, + [I(213,184)] = {64,0}, + [I(214,184)] = {64,0}, + [I(215,184)] = {64,0}, + [I(216,184)] = {64,0}, + [I(217,184)] = {64,0}, + [I(218,184)] = {64,0}, + [I(219,184)] = {64,0}, + [I(220,184)] = {64,0}, + [I(221,184)] = {64,0}, + [I(222,184)] = {64,0}, + [I(223,184)] = {64,0}, + [I(224,184)] = {64,0}, + [I(225,184)] = {64,0}, + [I(226,184)] = {64,0}, + [I(227,184)] = {64,0}, + [I(228,184)] = {64,0}, + [I(229,184)] = {64,0}, + [I(230,184)] = {64,0}, + [I(231,184)] = {64,0}, + [I(232,184)] = {64,0}, + [I(233,184)] = {64,0}, + [I(234,184)] = {64,0}, + [I(235,184)] = {64,0}, + [I(236,184)] = {64,0}, + [I(237,184)] = {64,0}, + [I(238,184)] = {64,0}, + [I(239,184)] = {64,0}, + [I(240,184)] = {64,0}, + [I(241,184)] = {64,0}, + [I(242,184)] = {64,0}, + [I(243,184)] = {64,0}, + [I(244,184)] = {64,0}, + [I(245,184)] = {64,0}, + [I(246,184)] = {64,0}, + [I(247,184)] = {64,0}, + [I(248,184)] = {64,0}, + [I(249,184)] = {64,0}, + [I(250,184)] = {64,0}, + [I(251,184)] = {64,0}, + [I(252,184)] = {64,0}, + [I(253,184)] = {64,0}, + [I(254,184)] = {64,0}, + [I(255,184)] = {64,0}, + [I(0,185)] = {64,0}, + [I(1,185)] = {64,0}, + [I(2,185)] = {64,0}, + [I(3,185)] = {64,0}, + [I(4,185)] = {64,0}, + [I(5,185)] = {64,0}, + [I(6,185)] = {64,0}, + [I(7,185)] = {64,0}, + [I(8,185)] = {64,0}, + [I(9,185)] = {64,0}, + [I(10,185)] = {64,0}, + [I(11,185)] = {64,0}, + [I(12,185)] = {64,0}, + [I(13,185)] = {64,0}, + [I(14,185)] = {64,0}, + [I(15,185)] = {64,0}, + [I(16,185)] = {64,0}, + [I(17,185)] = {64,0}, + [I(18,185)] = {64,0}, + [I(19,185)] = {64,0}, + [I(20,185)] = {64,0}, + [I(21,185)] = {64,0}, + [I(22,185)] = {64,0}, + [I(23,185)] = {64,0}, + [I(24,185)] = {64,0}, + [I(25,185)] = {64,0}, + [I(26,185)] = {64,0}, + [I(27,185)] = {64,0}, + [I(28,185)] = {64,0}, + [I(29,185)] = {64,0}, + [I(30,185)] = {64,0}, + [I(31,185)] = {64,0}, + [I(32,185)] = {28,0x53FFFE2}, + [I(33,185)] = {X32,0xFE3FFFE2}, + [I(34,185)] = {X32,0xFE7FFFE2}, + [I(35,185)] = {64,0}, + [I(36,185)] = {64,0}, + [I(37,185)] = {28,0x57FFFE2}, + [I(38,185)] = {30,0x3E3FFFE2}, + [I(39,185)] = {64,0}, + [I(40,185)] = {X32,0xFEBFFFE2}, + [I(41,185)] = {X32,0xFEFFFFE2}, + [I(42,185)] = {30,0x3E7FFFE2}, + [I(43,185)] = {64,0}, + [I(44,185)] = {30,0x3EBFFFE2}, + [I(45,185)] = {28,0x5BFFFE2}, + [I(46,185)] = {28,0x5FFFFE2}, + [I(47,185)] = {28,0x63FFFE2}, + [I(48,185)] = {27,0x3FFFE2}, + [I(49,185)] = {27,0x7FFFE2}, + [I(50,185)] = {27,0xBFFFE2}, + [I(51,185)] = {28,0x67FFFE2}, + [I(52,185)] = {28,0x6BFFFE2}, + [I(53,185)] = {28,0x6FFFFE2}, + [I(54,185)] = {28,0x73FFFE2}, + [I(55,185)] = {28,0x77FFFE2}, + [I(56,185)] = {28,0x7BFFFE2}, + [I(57,185)] = {28,0x7FFFFE2}, + [I(58,185)] = {29,0x173FFFE2}, + [I(59,185)] = {30,0x3EFFFFE2}, + [I(60,185)] = {64,0}, + [I(61,185)] = {28,0x83FFFE2}, + [I(62,185)] = {64,0}, + [I(63,185)] = {X32,0xFF3FFFE2}, + [I(64,185)] = {64,0}, + [I(65,185)] = {28,0x87FFFE2}, + [I(66,185)] = {29,0x177FFFE2}, + [I(67,185)] = {29,0x17BFFFE2}, + [I(68,185)] = {29,0x17FFFFE2}, + [I(69,185)] = {29,0x183FFFE2}, + [I(70,185)] = {29,0x187FFFE2}, + [I(71,185)] = {29,0x18BFFFE2}, + [I(72,185)] = {29,0x18FFFFE2}, + [I(73,185)] = {29,0x193FFFE2}, + [I(74,185)] = {29,0x197FFFE2}, + [I(75,185)] = {29,0x19BFFFE2}, + [I(76,185)] = {29,0x19FFFFE2}, + [I(77,185)] = {29,0x1A3FFFE2}, + [I(78,185)] = {29,0x1A7FFFE2}, + [I(79,185)] = {29,0x1ABFFFE2}, + [I(80,185)] = {29,0x1AFFFFE2}, + [I(81,185)] = {29,0x1B3FFFE2}, + [I(82,185)] = {29,0x1B7FFFE2}, + [I(83,185)] = {29,0x1BBFFFE2}, + [I(84,185)] = {29,0x1BFFFFE2}, + [I(85,185)] = {29,0x1C3FFFE2}, + [I(86,185)] = {29,0x1C7FFFE2}, + [I(87,185)] = {29,0x1CBFFFE2}, + [I(88,185)] = {30,0x3F3FFFE2}, + [I(89,185)] = {29,0x1CFFFFE2}, + [I(90,185)] = {30,0x3F7FFFE2}, + [I(91,185)] = {64,0}, + [I(92,185)] = {64,0}, + [I(93,185)] = {64,0}, + [I(94,185)] = {64,0}, + [I(95,185)] = {28,0x8BFFFE2}, + [I(96,185)] = {64,0}, + [I(97,185)] = {27,0xFFFFE2}, + [I(98,185)] = {28,0x8FFFFE2}, + [I(99,185)] = {27,0x13FFFE2}, + [I(100,185)] = {28,0x93FFFE2}, + [I(101,185)] = {27,0x17FFFE2}, + [I(102,185)] = {28,0x97FFFE2}, + [I(103,185)] = {28,0x9BFFFE2}, + [I(104,185)] = {28,0x9FFFFE2}, + [I(105,185)] = {27,0x1BFFFE2}, + [I(106,185)] = {29,0x1D3FFFE2}, + [I(107,185)] = {29,0x1D7FFFE2}, + [I(108,185)] = {28,0xA3FFFE2}, + [I(109,185)] = {28,0xA7FFFE2}, + [I(110,185)] = {28,0xABFFFE2}, + [I(111,185)] = {27,0x1FFFFE2}, + [I(112,185)] = {28,0xAFFFFE2}, + [I(113,185)] = {29,0x1DBFFFE2}, + [I(114,185)] = {28,0xB3FFFE2}, + [I(115,185)] = {27,0x23FFFE2}, + [I(116,185)] = {27,0x27FFFE2}, + [I(117,185)] = {28,0xB7FFFE2}, + [I(118,185)] = {29,0x1DFFFFE2}, + [I(119,185)] = {29,0x1E3FFFE2}, + [I(120,185)] = {29,0x1E7FFFE2}, + [I(121,185)] = {29,0x1EBFFFE2}, + [I(122,185)] = {29,0x1EFFFFE2}, + [I(123,185)] = {64,0}, + [I(124,185)] = {64,0}, + [I(125,185)] = {64,0}, + [I(126,185)] = {64,0}, + [I(127,185)] = {64,0}, + [I(128,185)] = {64,0}, + [I(129,185)] = {64,0}, + [I(130,185)] = {64,0}, + [I(131,185)] = {64,0}, + [I(132,185)] = {64,0}, + [I(133,185)] = {64,0}, + [I(134,185)] = {64,0}, + [I(135,185)] = {64,0}, + [I(136,185)] = {64,0}, + [I(137,185)] = {64,0}, + [I(138,185)] = {64,0}, + [I(139,185)] = {64,0}, + [I(140,185)] = {64,0}, + [I(141,185)] = {64,0}, + [I(142,185)] = {64,0}, + [I(143,185)] = {64,0}, + [I(144,185)] = {64,0}, + [I(145,185)] = {64,0}, + [I(146,185)] = {64,0}, + [I(147,185)] = {64,0}, + [I(148,185)] = {64,0}, + [I(149,185)] = {64,0}, + [I(150,185)] = {64,0}, + [I(151,185)] = {64,0}, + [I(152,185)] = {64,0}, + [I(153,185)] = {64,0}, + [I(154,185)] = {64,0}, + [I(155,185)] = {64,0}, + [I(156,185)] = {64,0}, + [I(157,185)] = {64,0}, + [I(158,185)] = {64,0}, + [I(159,185)] = {64,0}, + [I(160,185)] = {64,0}, + [I(161,185)] = {64,0}, + [I(162,185)] = {64,0}, + [I(163,185)] = {64,0}, + [I(164,185)] = {64,0}, + [I(165,185)] = {64,0}, + [I(166,185)] = {64,0}, + [I(167,185)] = {64,0}, + [I(168,185)] = {64,0}, + [I(169,185)] = {64,0}, + [I(170,185)] = {64,0}, + [I(171,185)] = {64,0}, + [I(172,185)] = {64,0}, + [I(173,185)] = {64,0}, + [I(174,185)] = {64,0}, + [I(175,185)] = {64,0}, + [I(176,185)] = {64,0}, + [I(177,185)] = {64,0}, + [I(178,185)] = {64,0}, + [I(179,185)] = {64,0}, + [I(180,185)] = {64,0}, + [I(181,185)] = {64,0}, + [I(182,185)] = {64,0}, + [I(183,185)] = {64,0}, + [I(184,185)] = {64,0}, + [I(185,185)] = {64,0}, + [I(186,185)] = {64,0}, + [I(187,185)] = {64,0}, + [I(188,185)] = {64,0}, + [I(189,185)] = {64,0}, + [I(190,185)] = {64,0}, + [I(191,185)] = {64,0}, + [I(192,185)] = {64,0}, + [I(193,185)] = {64,0}, + [I(194,185)] = {64,0}, + [I(195,185)] = {64,0}, + [I(196,185)] = {64,0}, + [I(197,185)] = {64,0}, + [I(198,185)] = {64,0}, + [I(199,185)] = {64,0}, + [I(200,185)] = {64,0}, + [I(201,185)] = {64,0}, + [I(202,185)] = {64,0}, + [I(203,185)] = {64,0}, + [I(204,185)] = {64,0}, + [I(205,185)] = {64,0}, + [I(206,185)] = {64,0}, + [I(207,185)] = {64,0}, + [I(208,185)] = {64,0}, + [I(209,185)] = {64,0}, + [I(210,185)] = {64,0}, + [I(211,185)] = {64,0}, + [I(212,185)] = {64,0}, + [I(213,185)] = {64,0}, + [I(214,185)] = {64,0}, + [I(215,185)] = {64,0}, + [I(216,185)] = {64,0}, + [I(217,185)] = {64,0}, + [I(218,185)] = {64,0}, + [I(219,185)] = {64,0}, + [I(220,185)] = {64,0}, + [I(221,185)] = {64,0}, + [I(222,185)] = {64,0}, + [I(223,185)] = {64,0}, + [I(224,185)] = {64,0}, + [I(225,185)] = {64,0}, + [I(226,185)] = {64,0}, + [I(227,185)] = {64,0}, + [I(228,185)] = {64,0}, + [I(229,185)] = {64,0}, + [I(230,185)] = {64,0}, + [I(231,185)] = {64,0}, + [I(232,185)] = {64,0}, + [I(233,185)] = {64,0}, + [I(234,185)] = {64,0}, + [I(235,185)] = {64,0}, + [I(236,185)] = {64,0}, + [I(237,185)] = {64,0}, + [I(238,185)] = {64,0}, + [I(239,185)] = {64,0}, + [I(240,185)] = {64,0}, + [I(241,185)] = {64,0}, + [I(242,185)] = {64,0}, + [I(243,185)] = {64,0}, + [I(244,185)] = {64,0}, + [I(245,185)] = {64,0}, + [I(246,185)] = {64,0}, + [I(247,185)] = {64,0}, + [I(248,185)] = {64,0}, + [I(249,185)] = {64,0}, + [I(250,185)] = {64,0}, + [I(251,185)] = {64,0}, + [I(252,185)] = {64,0}, + [I(253,185)] = {64,0}, + [I(254,185)] = {64,0}, + [I(255,185)] = {64,0}, + [I(0,186)] = {64,0}, + [I(1,186)] = {64,0}, + [I(2,186)] = {64,0}, + [I(3,186)] = {64,0}, + [I(4,186)] = {64,0}, + [I(5,186)] = {64,0}, + [I(6,186)] = {64,0}, + [I(7,186)] = {64,0}, + [I(8,186)] = {64,0}, + [I(9,186)] = {64,0}, + [I(10,186)] = {64,0}, + [I(11,186)] = {64,0}, + [I(12,186)] = {64,0}, + [I(13,186)] = {64,0}, + [I(14,186)] = {64,0}, + [I(15,186)] = {64,0}, + [I(16,186)] = {64,0}, + [I(17,186)] = {64,0}, + [I(18,186)] = {64,0}, + [I(19,186)] = {64,0}, + [I(20,186)] = {64,0}, + [I(21,186)] = {64,0}, + [I(22,186)] = {64,0}, + [I(23,186)] = {64,0}, + [I(24,186)] = {64,0}, + [I(25,186)] = {64,0}, + [I(26,186)] = {64,0}, + [I(27,186)] = {64,0}, + [I(28,186)] = {64,0}, + [I(29,186)] = {64,0}, + [I(30,186)] = {64,0}, + [I(31,186)] = {64,0}, + [I(32,186)] = {28,0x53FFFE3}, + [I(33,186)] = {X32,0xFE3FFFE3}, + [I(34,186)] = {X32,0xFE7FFFE3}, + [I(35,186)] = {64,0}, + [I(36,186)] = {64,0}, + [I(37,186)] = {28,0x57FFFE3}, + [I(38,186)] = {30,0x3E3FFFE3}, + [I(39,186)] = {64,0}, + [I(40,186)] = {X32,0xFEBFFFE3}, + [I(41,186)] = {X32,0xFEFFFFE3}, + [I(42,186)] = {30,0x3E7FFFE3}, + [I(43,186)] = {64,0}, + [I(44,186)] = {30,0x3EBFFFE3}, + [I(45,186)] = {28,0x5BFFFE3}, + [I(46,186)] = {28,0x5FFFFE3}, + [I(47,186)] = {28,0x63FFFE3}, + [I(48,186)] = {27,0x3FFFE3}, + [I(49,186)] = {27,0x7FFFE3}, + [I(50,186)] = {27,0xBFFFE3}, + [I(51,186)] = {28,0x67FFFE3}, + [I(52,186)] = {28,0x6BFFFE3}, + [I(53,186)] = {28,0x6FFFFE3}, + [I(54,186)] = {28,0x73FFFE3}, + [I(55,186)] = {28,0x77FFFE3}, + [I(56,186)] = {28,0x7BFFFE3}, + [I(57,186)] = {28,0x7FFFFE3}, + [I(58,186)] = {29,0x173FFFE3}, + [I(59,186)] = {30,0x3EFFFFE3}, + [I(60,186)] = {64,0}, + [I(61,186)] = {28,0x83FFFE3}, + [I(62,186)] = {64,0}, + [I(63,186)] = {X32,0xFF3FFFE3}, + [I(64,186)] = {64,0}, + [I(65,186)] = {28,0x87FFFE3}, + [I(66,186)] = {29,0x177FFFE3}, + [I(67,186)] = {29,0x17BFFFE3}, + [I(68,186)] = {29,0x17FFFFE3}, + [I(69,186)] = {29,0x183FFFE3}, + [I(70,186)] = {29,0x187FFFE3}, + [I(71,186)] = {29,0x18BFFFE3}, + [I(72,186)] = {29,0x18FFFFE3}, + [I(73,186)] = {29,0x193FFFE3}, + [I(74,186)] = {29,0x197FFFE3}, + [I(75,186)] = {29,0x19BFFFE3}, + [I(76,186)] = {29,0x19FFFFE3}, + [I(77,186)] = {29,0x1A3FFFE3}, + [I(78,186)] = {29,0x1A7FFFE3}, + [I(79,186)] = {29,0x1ABFFFE3}, + [I(80,186)] = {29,0x1AFFFFE3}, + [I(81,186)] = {29,0x1B3FFFE3}, + [I(82,186)] = {29,0x1B7FFFE3}, + [I(83,186)] = {29,0x1BBFFFE3}, + [I(84,186)] = {29,0x1BFFFFE3}, + [I(85,186)] = {29,0x1C3FFFE3}, + [I(86,186)] = {29,0x1C7FFFE3}, + [I(87,186)] = {29,0x1CBFFFE3}, + [I(88,186)] = {30,0x3F3FFFE3}, + [I(89,186)] = {29,0x1CFFFFE3}, + [I(90,186)] = {30,0x3F7FFFE3}, + [I(91,186)] = {64,0}, + [I(92,186)] = {64,0}, + [I(93,186)] = {64,0}, + [I(94,186)] = {64,0}, + [I(95,186)] = {28,0x8BFFFE3}, + [I(96,186)] = {64,0}, + [I(97,186)] = {27,0xFFFFE3}, + [I(98,186)] = {28,0x8FFFFE3}, + [I(99,186)] = {27,0x13FFFE3}, + [I(100,186)] = {28,0x93FFFE3}, + [I(101,186)] = {27,0x17FFFE3}, + [I(102,186)] = {28,0x97FFFE3}, + [I(103,186)] = {28,0x9BFFFE3}, + [I(104,186)] = {28,0x9FFFFE3}, + [I(105,186)] = {27,0x1BFFFE3}, + [I(106,186)] = {29,0x1D3FFFE3}, + [I(107,186)] = {29,0x1D7FFFE3}, + [I(108,186)] = {28,0xA3FFFE3}, + [I(109,186)] = {28,0xA7FFFE3}, + [I(110,186)] = {28,0xABFFFE3}, + [I(111,186)] = {27,0x1FFFFE3}, + [I(112,186)] = {28,0xAFFFFE3}, + [I(113,186)] = {29,0x1DBFFFE3}, + [I(114,186)] = {28,0xB3FFFE3}, + [I(115,186)] = {27,0x23FFFE3}, + [I(116,186)] = {27,0x27FFFE3}, + [I(117,186)] = {28,0xB7FFFE3}, + [I(118,186)] = {29,0x1DFFFFE3}, + [I(119,186)] = {29,0x1E3FFFE3}, + [I(120,186)] = {29,0x1E7FFFE3}, + [I(121,186)] = {29,0x1EBFFFE3}, + [I(122,186)] = {29,0x1EFFFFE3}, + [I(123,186)] = {64,0}, + [I(124,186)] = {64,0}, + [I(125,186)] = {64,0}, + [I(126,186)] = {64,0}, + [I(127,186)] = {64,0}, + [I(128,186)] = {64,0}, + [I(129,186)] = {64,0}, + [I(130,186)] = {64,0}, + [I(131,186)] = {64,0}, + [I(132,186)] = {64,0}, + [I(133,186)] = {64,0}, + [I(134,186)] = {64,0}, + [I(135,186)] = {64,0}, + [I(136,186)] = {64,0}, + [I(137,186)] = {64,0}, + [I(138,186)] = {64,0}, + [I(139,186)] = {64,0}, + [I(140,186)] = {64,0}, + [I(141,186)] = {64,0}, + [I(142,186)] = {64,0}, + [I(143,186)] = {64,0}, + [I(144,186)] = {64,0}, + [I(145,186)] = {64,0}, + [I(146,186)] = {64,0}, + [I(147,186)] = {64,0}, + [I(148,186)] = {64,0}, + [I(149,186)] = {64,0}, + [I(150,186)] = {64,0}, + [I(151,186)] = {64,0}, + [I(152,186)] = {64,0}, + [I(153,186)] = {64,0}, + [I(154,186)] = {64,0}, + [I(155,186)] = {64,0}, + [I(156,186)] = {64,0}, + [I(157,186)] = {64,0}, + [I(158,186)] = {64,0}, + [I(159,186)] = {64,0}, + [I(160,186)] = {64,0}, + [I(161,186)] = {64,0}, + [I(162,186)] = {64,0}, + [I(163,186)] = {64,0}, + [I(164,186)] = {64,0}, + [I(165,186)] = {64,0}, + [I(166,186)] = {64,0}, + [I(167,186)] = {64,0}, + [I(168,186)] = {64,0}, + [I(169,186)] = {64,0}, + [I(170,186)] = {64,0}, + [I(171,186)] = {64,0}, + [I(172,186)] = {64,0}, + [I(173,186)] = {64,0}, + [I(174,186)] = {64,0}, + [I(175,186)] = {64,0}, + [I(176,186)] = {64,0}, + [I(177,186)] = {64,0}, + [I(178,186)] = {64,0}, + [I(179,186)] = {64,0}, + [I(180,186)] = {64,0}, + [I(181,186)] = {64,0}, + [I(182,186)] = {64,0}, + [I(183,186)] = {64,0}, + [I(184,186)] = {64,0}, + [I(185,186)] = {64,0}, + [I(186,186)] = {64,0}, + [I(187,186)] = {64,0}, + [I(188,186)] = {64,0}, + [I(189,186)] = {64,0}, + [I(190,186)] = {64,0}, + [I(191,186)] = {64,0}, + [I(192,186)] = {64,0}, + [I(193,186)] = {64,0}, + [I(194,186)] = {64,0}, + [I(195,186)] = {64,0}, + [I(196,186)] = {64,0}, + [I(197,186)] = {64,0}, + [I(198,186)] = {64,0}, + [I(199,186)] = {64,0}, + [I(200,186)] = {64,0}, + [I(201,186)] = {64,0}, + [I(202,186)] = {64,0}, + [I(203,186)] = {64,0}, + [I(204,186)] = {64,0}, + [I(205,186)] = {64,0}, + [I(206,186)] = {64,0}, + [I(207,186)] = {64,0}, + [I(208,186)] = {64,0}, + [I(209,186)] = {64,0}, + [I(210,186)] = {64,0}, + [I(211,186)] = {64,0}, + [I(212,186)] = {64,0}, + [I(213,186)] = {64,0}, + [I(214,186)] = {64,0}, + [I(215,186)] = {64,0}, + [I(216,186)] = {64,0}, + [I(217,186)] = {64,0}, + [I(218,186)] = {64,0}, + [I(219,186)] = {64,0}, + [I(220,186)] = {64,0}, + [I(221,186)] = {64,0}, + [I(222,186)] = {64,0}, + [I(223,186)] = {64,0}, + [I(224,186)] = {64,0}, + [I(225,186)] = {64,0}, + [I(226,186)] = {64,0}, + [I(227,186)] = {64,0}, + [I(228,186)] = {64,0}, + [I(229,186)] = {64,0}, + [I(230,186)] = {64,0}, + [I(231,186)] = {64,0}, + [I(232,186)] = {64,0}, + [I(233,186)] = {64,0}, + [I(234,186)] = {64,0}, + [I(235,186)] = {64,0}, + [I(236,186)] = {64,0}, + [I(237,186)] = {64,0}, + [I(238,186)] = {64,0}, + [I(239,186)] = {64,0}, + [I(240,186)] = {64,0}, + [I(241,186)] = {64,0}, + [I(242,186)] = {64,0}, + [I(243,186)] = {64,0}, + [I(244,186)] = {64,0}, + [I(245,186)] = {64,0}, + [I(246,186)] = {64,0}, + [I(247,186)] = {64,0}, + [I(248,186)] = {64,0}, + [I(249,186)] = {64,0}, + [I(250,186)] = {64,0}, + [I(251,186)] = {64,0}, + [I(252,186)] = {64,0}, + [I(253,186)] = {64,0}, + [I(254,186)] = {64,0}, + [I(255,186)] = {64,0}, + [I(0,187)] = {64,0}, + [I(1,187)] = {64,0}, + [I(2,187)] = {64,0}, + [I(3,187)] = {64,0}, + [I(4,187)] = {64,0}, + [I(5,187)] = {64,0}, + [I(6,187)] = {64,0}, + [I(7,187)] = {64,0}, + [I(8,187)] = {64,0}, + [I(9,187)] = {64,0}, + [I(10,187)] = {64,0}, + [I(11,187)] = {64,0}, + [I(12,187)] = {64,0}, + [I(13,187)] = {64,0}, + [I(14,187)] = {64,0}, + [I(15,187)] = {64,0}, + [I(16,187)] = {64,0}, + [I(17,187)] = {64,0}, + [I(18,187)] = {64,0}, + [I(19,187)] = {64,0}, + [I(20,187)] = {64,0}, + [I(21,187)] = {64,0}, + [I(22,187)] = {64,0}, + [I(23,187)] = {64,0}, + [I(24,187)] = {64,0}, + [I(25,187)] = {64,0}, + [I(26,187)] = {64,0}, + [I(27,187)] = {64,0}, + [I(28,187)] = {64,0}, + [I(29,187)] = {64,0}, + [I(30,187)] = {64,0}, + [I(31,187)] = {64,0}, + [I(32,187)] = {28,0x53FFFE4}, + [I(33,187)] = {X32,0xFE3FFFE4}, + [I(34,187)] = {X32,0xFE7FFFE4}, + [I(35,187)] = {64,0}, + [I(36,187)] = {64,0}, + [I(37,187)] = {28,0x57FFFE4}, + [I(38,187)] = {30,0x3E3FFFE4}, + [I(39,187)] = {64,0}, + [I(40,187)] = {X32,0xFEBFFFE4}, + [I(41,187)] = {X32,0xFEFFFFE4}, + [I(42,187)] = {30,0x3E7FFFE4}, + [I(43,187)] = {64,0}, + [I(44,187)] = {30,0x3EBFFFE4}, + [I(45,187)] = {28,0x5BFFFE4}, + [I(46,187)] = {28,0x5FFFFE4}, + [I(47,187)] = {28,0x63FFFE4}, + [I(48,187)] = {27,0x3FFFE4}, + [I(49,187)] = {27,0x7FFFE4}, + [I(50,187)] = {27,0xBFFFE4}, + [I(51,187)] = {28,0x67FFFE4}, + [I(52,187)] = {28,0x6BFFFE4}, + [I(53,187)] = {28,0x6FFFFE4}, + [I(54,187)] = {28,0x73FFFE4}, + [I(55,187)] = {28,0x77FFFE4}, + [I(56,187)] = {28,0x7BFFFE4}, + [I(57,187)] = {28,0x7FFFFE4}, + [I(58,187)] = {29,0x173FFFE4}, + [I(59,187)] = {30,0x3EFFFFE4}, + [I(60,187)] = {64,0}, + [I(61,187)] = {28,0x83FFFE4}, + [I(62,187)] = {64,0}, + [I(63,187)] = {X32,0xFF3FFFE4}, + [I(64,187)] = {64,0}, + [I(65,187)] = {28,0x87FFFE4}, + [I(66,187)] = {29,0x177FFFE4}, + [I(67,187)] = {29,0x17BFFFE4}, + [I(68,187)] = {29,0x17FFFFE4}, + [I(69,187)] = {29,0x183FFFE4}, + [I(70,187)] = {29,0x187FFFE4}, + [I(71,187)] = {29,0x18BFFFE4}, + [I(72,187)] = {29,0x18FFFFE4}, + [I(73,187)] = {29,0x193FFFE4}, + [I(74,187)] = {29,0x197FFFE4}, + [I(75,187)] = {29,0x19BFFFE4}, + [I(76,187)] = {29,0x19FFFFE4}, + [I(77,187)] = {29,0x1A3FFFE4}, + [I(78,187)] = {29,0x1A7FFFE4}, + [I(79,187)] = {29,0x1ABFFFE4}, + [I(80,187)] = {29,0x1AFFFFE4}, + [I(81,187)] = {29,0x1B3FFFE4}, + [I(82,187)] = {29,0x1B7FFFE4}, + [I(83,187)] = {29,0x1BBFFFE4}, + [I(84,187)] = {29,0x1BFFFFE4}, + [I(85,187)] = {29,0x1C3FFFE4}, + [I(86,187)] = {29,0x1C7FFFE4}, + [I(87,187)] = {29,0x1CBFFFE4}, + [I(88,187)] = {30,0x3F3FFFE4}, + [I(89,187)] = {29,0x1CFFFFE4}, + [I(90,187)] = {30,0x3F7FFFE4}, + [I(91,187)] = {64,0}, + [I(92,187)] = {64,0}, + [I(93,187)] = {64,0}, + [I(94,187)] = {64,0}, + [I(95,187)] = {28,0x8BFFFE4}, + [I(96,187)] = {64,0}, + [I(97,187)] = {27,0xFFFFE4}, + [I(98,187)] = {28,0x8FFFFE4}, + [I(99,187)] = {27,0x13FFFE4}, + [I(100,187)] = {28,0x93FFFE4}, + [I(101,187)] = {27,0x17FFFE4}, + [I(102,187)] = {28,0x97FFFE4}, + [I(103,187)] = {28,0x9BFFFE4}, + [I(104,187)] = {28,0x9FFFFE4}, + [I(105,187)] = {27,0x1BFFFE4}, + [I(106,187)] = {29,0x1D3FFFE4}, + [I(107,187)] = {29,0x1D7FFFE4}, + [I(108,187)] = {28,0xA3FFFE4}, + [I(109,187)] = {28,0xA7FFFE4}, + [I(110,187)] = {28,0xABFFFE4}, + [I(111,187)] = {27,0x1FFFFE4}, + [I(112,187)] = {28,0xAFFFFE4}, + [I(113,187)] = {29,0x1DBFFFE4}, + [I(114,187)] = {28,0xB3FFFE4}, + [I(115,187)] = {27,0x23FFFE4}, + [I(116,187)] = {27,0x27FFFE4}, + [I(117,187)] = {28,0xB7FFFE4}, + [I(118,187)] = {29,0x1DFFFFE4}, + [I(119,187)] = {29,0x1E3FFFE4}, + [I(120,187)] = {29,0x1E7FFFE4}, + [I(121,187)] = {29,0x1EBFFFE4}, + [I(122,187)] = {29,0x1EFFFFE4}, + [I(123,187)] = {64,0}, + [I(124,187)] = {64,0}, + [I(125,187)] = {64,0}, + [I(126,187)] = {64,0}, + [I(127,187)] = {64,0}, + [I(128,187)] = {64,0}, + [I(129,187)] = {64,0}, + [I(130,187)] = {64,0}, + [I(131,187)] = {64,0}, + [I(132,187)] = {64,0}, + [I(133,187)] = {64,0}, + [I(134,187)] = {64,0}, + [I(135,187)] = {64,0}, + [I(136,187)] = {64,0}, + [I(137,187)] = {64,0}, + [I(138,187)] = {64,0}, + [I(139,187)] = {64,0}, + [I(140,187)] = {64,0}, + [I(141,187)] = {64,0}, + [I(142,187)] = {64,0}, + [I(143,187)] = {64,0}, + [I(144,187)] = {64,0}, + [I(145,187)] = {64,0}, + [I(146,187)] = {64,0}, + [I(147,187)] = {64,0}, + [I(148,187)] = {64,0}, + [I(149,187)] = {64,0}, + [I(150,187)] = {64,0}, + [I(151,187)] = {64,0}, + [I(152,187)] = {64,0}, + [I(153,187)] = {64,0}, + [I(154,187)] = {64,0}, + [I(155,187)] = {64,0}, + [I(156,187)] = {64,0}, + [I(157,187)] = {64,0}, + [I(158,187)] = {64,0}, + [I(159,187)] = {64,0}, + [I(160,187)] = {64,0}, + [I(161,187)] = {64,0}, + [I(162,187)] = {64,0}, + [I(163,187)] = {64,0}, + [I(164,187)] = {64,0}, + [I(165,187)] = {64,0}, + [I(166,187)] = {64,0}, + [I(167,187)] = {64,0}, + [I(168,187)] = {64,0}, + [I(169,187)] = {64,0}, + [I(170,187)] = {64,0}, + [I(171,187)] = {64,0}, + [I(172,187)] = {64,0}, + [I(173,187)] = {64,0}, + [I(174,187)] = {64,0}, + [I(175,187)] = {64,0}, + [I(176,187)] = {64,0}, + [I(177,187)] = {64,0}, + [I(178,187)] = {64,0}, + [I(179,187)] = {64,0}, + [I(180,187)] = {64,0}, + [I(181,187)] = {64,0}, + [I(182,187)] = {64,0}, + [I(183,187)] = {64,0}, + [I(184,187)] = {64,0}, + [I(185,187)] = {64,0}, + [I(186,187)] = {64,0}, + [I(187,187)] = {64,0}, + [I(188,187)] = {64,0}, + [I(189,187)] = {64,0}, + [I(190,187)] = {64,0}, + [I(191,187)] = {64,0}, + [I(192,187)] = {64,0}, + [I(193,187)] = {64,0}, + [I(194,187)] = {64,0}, + [I(195,187)] = {64,0}, + [I(196,187)] = {64,0}, + [I(197,187)] = {64,0}, + [I(198,187)] = {64,0}, + [I(199,187)] = {64,0}, + [I(200,187)] = {64,0}, + [I(201,187)] = {64,0}, + [I(202,187)] = {64,0}, + [I(203,187)] = {64,0}, + [I(204,187)] = {64,0}, + [I(205,187)] = {64,0}, + [I(206,187)] = {64,0}, + [I(207,187)] = {64,0}, + [I(208,187)] = {64,0}, + [I(209,187)] = {64,0}, + [I(210,187)] = {64,0}, + [I(211,187)] = {64,0}, + [I(212,187)] = {64,0}, + [I(213,187)] = {64,0}, + [I(214,187)] = {64,0}, + [I(215,187)] = {64,0}, + [I(216,187)] = {64,0}, + [I(217,187)] = {64,0}, + [I(218,187)] = {64,0}, + [I(219,187)] = {64,0}, + [I(220,187)] = {64,0}, + [I(221,187)] = {64,0}, + [I(222,187)] = {64,0}, + [I(223,187)] = {64,0}, + [I(224,187)] = {64,0}, + [I(225,187)] = {64,0}, + [I(226,187)] = {64,0}, + [I(227,187)] = {64,0}, + [I(228,187)] = {64,0}, + [I(229,187)] = {64,0}, + [I(230,187)] = {64,0}, + [I(231,187)] = {64,0}, + [I(232,187)] = {64,0}, + [I(233,187)] = {64,0}, + [I(234,187)] = {64,0}, + [I(235,187)] = {64,0}, + [I(236,187)] = {64,0}, + [I(237,187)] = {64,0}, + [I(238,187)] = {64,0}, + [I(239,187)] = {64,0}, + [I(240,187)] = {64,0}, + [I(241,187)] = {64,0}, + [I(242,187)] = {64,0}, + [I(243,187)] = {64,0}, + [I(244,187)] = {64,0}, + [I(245,187)] = {64,0}, + [I(246,187)] = {64,0}, + [I(247,187)] = {64,0}, + [I(248,187)] = {64,0}, + [I(249,187)] = {64,0}, + [I(250,187)] = {64,0}, + [I(251,187)] = {64,0}, + [I(252,187)] = {64,0}, + [I(253,187)] = {64,0}, + [I(254,187)] = {64,0}, + [I(255,187)] = {64,0}, + [I(0,188)] = {64,0}, + [I(1,188)] = {64,0}, + [I(2,188)] = {64,0}, + [I(3,188)] = {64,0}, + [I(4,188)] = {64,0}, + [I(5,188)] = {64,0}, + [I(6,188)] = {64,0}, + [I(7,188)] = {64,0}, + [I(8,188)] = {64,0}, + [I(9,188)] = {64,0}, + [I(10,188)] = {64,0}, + [I(11,188)] = {64,0}, + [I(12,188)] = {64,0}, + [I(13,188)] = {64,0}, + [I(14,188)] = {64,0}, + [I(15,188)] = {64,0}, + [I(16,188)] = {64,0}, + [I(17,188)] = {64,0}, + [I(18,188)] = {64,0}, + [I(19,188)] = {64,0}, + [I(20,188)] = {64,0}, + [I(21,188)] = {64,0}, + [I(22,188)] = {64,0}, + [I(23,188)] = {64,0}, + [I(24,188)] = {64,0}, + [I(25,188)] = {64,0}, + [I(26,188)] = {64,0}, + [I(27,188)] = {64,0}, + [I(28,188)] = {64,0}, + [I(29,188)] = {64,0}, + [I(30,188)] = {64,0}, + [I(31,188)] = {64,0}, + [I(32,188)] = {29,0xA7FFFF0}, + [I(33,188)] = {64,0}, + [I(34,188)] = {64,0}, + [I(35,188)] = {64,0}, + [I(36,188)] = {64,0}, + [I(37,188)] = {29,0xAFFFFF0}, + [I(38,188)] = {31,0x7C7FFFF0}, + [I(39,188)] = {64,0}, + [I(40,188)] = {64,0}, + [I(41,188)] = {64,0}, + [I(42,188)] = {31,0x7CFFFFF0}, + [I(43,188)] = {64,0}, + [I(44,188)] = {31,0x7D7FFFF0}, + [I(45,188)] = {29,0xB7FFFF0}, + [I(46,188)] = {29,0xBFFFFF0}, + [I(47,188)] = {29,0xC7FFFF0}, + [I(48,188)] = {28,0x7FFFF0}, + [I(49,188)] = {28,0xFFFFF0}, + [I(50,188)] = {28,0x17FFFF0}, + [I(51,188)] = {29,0xCFFFFF0}, + [I(52,188)] = {29,0xD7FFFF0}, + [I(53,188)] = {29,0xDFFFFF0}, + [I(54,188)] = {29,0xE7FFFF0}, + [I(55,188)] = {29,0xEFFFFF0}, + [I(56,188)] = {29,0xF7FFFF0}, + [I(57,188)] = {29,0xFFFFFF0}, + [I(58,188)] = {30,0x2E7FFFF0}, + [I(59,188)] = {31,0x7DFFFFF0}, + [I(60,188)] = {64,0}, + [I(61,188)] = {29,0x107FFFF0}, + [I(62,188)] = {64,0}, + [I(63,188)] = {64,0}, + [I(64,188)] = {64,0}, + [I(65,188)] = {29,0x10FFFFF0}, + [I(66,188)] = {30,0x2EFFFFF0}, + [I(67,188)] = {30,0x2F7FFFF0}, + [I(68,188)] = {30,0x2FFFFFF0}, + [I(69,188)] = {30,0x307FFFF0}, + [I(70,188)] = {30,0x30FFFFF0}, + [I(71,188)] = {30,0x317FFFF0}, + [I(72,188)] = {30,0x31FFFFF0}, + [I(73,188)] = {30,0x327FFFF0}, + [I(74,188)] = {30,0x32FFFFF0}, + [I(75,188)] = {30,0x337FFFF0}, + [I(76,188)] = {30,0x33FFFFF0}, + [I(77,188)] = {30,0x347FFFF0}, + [I(78,188)] = {30,0x34FFFFF0}, + [I(79,188)] = {30,0x357FFFF0}, + [I(80,188)] = {30,0x35FFFFF0}, + [I(81,188)] = {30,0x367FFFF0}, + [I(82,188)] = {30,0x36FFFFF0}, + [I(83,188)] = {30,0x377FFFF0}, + [I(84,188)] = {30,0x37FFFFF0}, + [I(85,188)] = {30,0x387FFFF0}, + [I(86,188)] = {30,0x38FFFFF0}, + [I(87,188)] = {30,0x397FFFF0}, + [I(88,188)] = {31,0x7E7FFFF0}, + [I(89,188)] = {30,0x39FFFFF0}, + [I(90,188)] = {31,0x7EFFFFF0}, + [I(91,188)] = {64,0}, + [I(92,188)] = {64,0}, + [I(93,188)] = {64,0}, + [I(94,188)] = {64,0}, + [I(95,188)] = {29,0x117FFFF0}, + [I(96,188)] = {64,0}, + [I(97,188)] = {28,0x1FFFFF0}, + [I(98,188)] = {29,0x11FFFFF0}, + [I(99,188)] = {28,0x27FFFF0}, + [I(100,188)] = {29,0x127FFFF0}, + [I(101,188)] = {28,0x2FFFFF0}, + [I(102,188)] = {29,0x12FFFFF0}, + [I(103,188)] = {29,0x137FFFF0}, + [I(104,188)] = {29,0x13FFFFF0}, + [I(105,188)] = {28,0x37FFFF0}, + [I(106,188)] = {30,0x3A7FFFF0}, + [I(107,188)] = {30,0x3AFFFFF0}, + [I(108,188)] = {29,0x147FFFF0}, + [I(109,188)] = {29,0x14FFFFF0}, + [I(110,188)] = {29,0x157FFFF0}, + [I(111,188)] = {28,0x3FFFFF0}, + [I(112,188)] = {29,0x15FFFFF0}, + [I(113,188)] = {30,0x3B7FFFF0}, + [I(114,188)] = {29,0x167FFFF0}, + [I(115,188)] = {28,0x47FFFF0}, + [I(116,188)] = {28,0x4FFFFF0}, + [I(117,188)] = {29,0x16FFFFF0}, + [I(118,188)] = {30,0x3BFFFFF0}, + [I(119,188)] = {30,0x3C7FFFF0}, + [I(120,188)] = {30,0x3CFFFFF0}, + [I(121,188)] = {30,0x3D7FFFF0}, + [I(122,188)] = {30,0x3DFFFFF0}, + [I(123,188)] = {64,0}, + [I(124,188)] = {64,0}, + [I(125,188)] = {64,0}, + [I(126,188)] = {64,0}, + [I(127,188)] = {64,0}, + [I(128,188)] = {64,0}, + [I(129,188)] = {64,0}, + [I(130,188)] = {64,0}, + [I(131,188)] = {64,0}, + [I(132,188)] = {64,0}, + [I(133,188)] = {64,0}, + [I(134,188)] = {64,0}, + [I(135,188)] = {64,0}, + [I(136,188)] = {64,0}, + [I(137,188)] = {64,0}, + [I(138,188)] = {64,0}, + [I(139,188)] = {64,0}, + [I(140,188)] = {64,0}, + [I(141,188)] = {64,0}, + [I(142,188)] = {64,0}, + [I(143,188)] = {64,0}, + [I(144,188)] = {64,0}, + [I(145,188)] = {64,0}, + [I(146,188)] = {64,0}, + [I(147,188)] = {64,0}, + [I(148,188)] = {64,0}, + [I(149,188)] = {64,0}, + [I(150,188)] = {64,0}, + [I(151,188)] = {64,0}, + [I(152,188)] = {64,0}, + [I(153,188)] = {64,0}, + [I(154,188)] = {64,0}, + [I(155,188)] = {64,0}, + [I(156,188)] = {64,0}, + [I(157,188)] = {64,0}, + [I(158,188)] = {64,0}, + [I(159,188)] = {64,0}, + [I(160,188)] = {64,0}, + [I(161,188)] = {64,0}, + [I(162,188)] = {64,0}, + [I(163,188)] = {64,0}, + [I(164,188)] = {64,0}, + [I(165,188)] = {64,0}, + [I(166,188)] = {64,0}, + [I(167,188)] = {64,0}, + [I(168,188)] = {64,0}, + [I(169,188)] = {64,0}, + [I(170,188)] = {64,0}, + [I(171,188)] = {64,0}, + [I(172,188)] = {64,0}, + [I(173,188)] = {64,0}, + [I(174,188)] = {64,0}, + [I(175,188)] = {64,0}, + [I(176,188)] = {64,0}, + [I(177,188)] = {64,0}, + [I(178,188)] = {64,0}, + [I(179,188)] = {64,0}, + [I(180,188)] = {64,0}, + [I(181,188)] = {64,0}, + [I(182,188)] = {64,0}, + [I(183,188)] = {64,0}, + [I(184,188)] = {64,0}, + [I(185,188)] = {64,0}, + [I(186,188)] = {64,0}, + [I(187,188)] = {64,0}, + [I(188,188)] = {64,0}, + [I(189,188)] = {64,0}, + [I(190,188)] = {64,0}, + [I(191,188)] = {64,0}, + [I(192,188)] = {64,0}, + [I(193,188)] = {64,0}, + [I(194,188)] = {64,0}, + [I(195,188)] = {64,0}, + [I(196,188)] = {64,0}, + [I(197,188)] = {64,0}, + [I(198,188)] = {64,0}, + [I(199,188)] = {64,0}, + [I(200,188)] = {64,0}, + [I(201,188)] = {64,0}, + [I(202,188)] = {64,0}, + [I(203,188)] = {64,0}, + [I(204,188)] = {64,0}, + [I(205,188)] = {64,0}, + [I(206,188)] = {64,0}, + [I(207,188)] = {64,0}, + [I(208,188)] = {64,0}, + [I(209,188)] = {64,0}, + [I(210,188)] = {64,0}, + [I(211,188)] = {64,0}, + [I(212,188)] = {64,0}, + [I(213,188)] = {64,0}, + [I(214,188)] = {64,0}, + [I(215,188)] = {64,0}, + [I(216,188)] = {64,0}, + [I(217,188)] = {64,0}, + [I(218,188)] = {64,0}, + [I(219,188)] = {64,0}, + [I(220,188)] = {64,0}, + [I(221,188)] = {64,0}, + [I(222,188)] = {64,0}, + [I(223,188)] = {64,0}, + [I(224,188)] = {64,0}, + [I(225,188)] = {64,0}, + [I(226,188)] = {64,0}, + [I(227,188)] = {64,0}, + [I(228,188)] = {64,0}, + [I(229,188)] = {64,0}, + [I(230,188)] = {64,0}, + [I(231,188)] = {64,0}, + [I(232,188)] = {64,0}, + [I(233,188)] = {64,0}, + [I(234,188)] = {64,0}, + [I(235,188)] = {64,0}, + [I(236,188)] = {64,0}, + [I(237,188)] = {64,0}, + [I(238,188)] = {64,0}, + [I(239,188)] = {64,0}, + [I(240,188)] = {64,0}, + [I(241,188)] = {64,0}, + [I(242,188)] = {64,0}, + [I(243,188)] = {64,0}, + [I(244,188)] = {64,0}, + [I(245,188)] = {64,0}, + [I(246,188)] = {64,0}, + [I(247,188)] = {64,0}, + [I(248,188)] = {64,0}, + [I(249,188)] = {64,0}, + [I(250,188)] = {64,0}, + [I(251,188)] = {64,0}, + [I(252,188)] = {64,0}, + [I(253,188)] = {64,0}, + [I(254,188)] = {64,0}, + [I(255,188)] = {64,0}, + [I(0,189)] = {64,0}, + [I(1,189)] = {64,0}, + [I(2,189)] = {64,0}, + [I(3,189)] = {64,0}, + [I(4,189)] = {64,0}, + [I(5,189)] = {64,0}, + [I(6,189)] = {64,0}, + [I(7,189)] = {64,0}, + [I(8,189)] = {64,0}, + [I(9,189)] = {64,0}, + [I(10,189)] = {64,0}, + [I(11,189)] = {64,0}, + [I(12,189)] = {64,0}, + [I(13,189)] = {64,0}, + [I(14,189)] = {64,0}, + [I(15,189)] = {64,0}, + [I(16,189)] = {64,0}, + [I(17,189)] = {64,0}, + [I(18,189)] = {64,0}, + [I(19,189)] = {64,0}, + [I(20,189)] = {64,0}, + [I(21,189)] = {64,0}, + [I(22,189)] = {64,0}, + [I(23,189)] = {64,0}, + [I(24,189)] = {64,0}, + [I(25,189)] = {64,0}, + [I(26,189)] = {64,0}, + [I(27,189)] = {64,0}, + [I(28,189)] = {64,0}, + [I(29,189)] = {64,0}, + [I(30,189)] = {64,0}, + [I(31,189)] = {64,0}, + [I(32,189)] = {28,0x53FFFE5}, + [I(33,189)] = {X32,0xFE3FFFE5}, + [I(34,189)] = {X32,0xFE7FFFE5}, + [I(35,189)] = {64,0}, + [I(36,189)] = {64,0}, + [I(37,189)] = {28,0x57FFFE5}, + [I(38,189)] = {30,0x3E3FFFE5}, + [I(39,189)] = {64,0}, + [I(40,189)] = {X32,0xFEBFFFE5}, + [I(41,189)] = {X32,0xFEFFFFE5}, + [I(42,189)] = {30,0x3E7FFFE5}, + [I(43,189)] = {64,0}, + [I(44,189)] = {30,0x3EBFFFE5}, + [I(45,189)] = {28,0x5BFFFE5}, + [I(46,189)] = {28,0x5FFFFE5}, + [I(47,189)] = {28,0x63FFFE5}, + [I(48,189)] = {27,0x3FFFE5}, + [I(49,189)] = {27,0x7FFFE5}, + [I(50,189)] = {27,0xBFFFE5}, + [I(51,189)] = {28,0x67FFFE5}, + [I(52,189)] = {28,0x6BFFFE5}, + [I(53,189)] = {28,0x6FFFFE5}, + [I(54,189)] = {28,0x73FFFE5}, + [I(55,189)] = {28,0x77FFFE5}, + [I(56,189)] = {28,0x7BFFFE5}, + [I(57,189)] = {28,0x7FFFFE5}, + [I(58,189)] = {29,0x173FFFE5}, + [I(59,189)] = {30,0x3EFFFFE5}, + [I(60,189)] = {64,0}, + [I(61,189)] = {28,0x83FFFE5}, + [I(62,189)] = {64,0}, + [I(63,189)] = {X32,0xFF3FFFE5}, + [I(64,189)] = {64,0}, + [I(65,189)] = {28,0x87FFFE5}, + [I(66,189)] = {29,0x177FFFE5}, + [I(67,189)] = {29,0x17BFFFE5}, + [I(68,189)] = {29,0x17FFFFE5}, + [I(69,189)] = {29,0x183FFFE5}, + [I(70,189)] = {29,0x187FFFE5}, + [I(71,189)] = {29,0x18BFFFE5}, + [I(72,189)] = {29,0x18FFFFE5}, + [I(73,189)] = {29,0x193FFFE5}, + [I(74,189)] = {29,0x197FFFE5}, + [I(75,189)] = {29,0x19BFFFE5}, + [I(76,189)] = {29,0x19FFFFE5}, + [I(77,189)] = {29,0x1A3FFFE5}, + [I(78,189)] = {29,0x1A7FFFE5}, + [I(79,189)] = {29,0x1ABFFFE5}, + [I(80,189)] = {29,0x1AFFFFE5}, + [I(81,189)] = {29,0x1B3FFFE5}, + [I(82,189)] = {29,0x1B7FFFE5}, + [I(83,189)] = {29,0x1BBFFFE5}, + [I(84,189)] = {29,0x1BFFFFE5}, + [I(85,189)] = {29,0x1C3FFFE5}, + [I(86,189)] = {29,0x1C7FFFE5}, + [I(87,189)] = {29,0x1CBFFFE5}, + [I(88,189)] = {30,0x3F3FFFE5}, + [I(89,189)] = {29,0x1CFFFFE5}, + [I(90,189)] = {30,0x3F7FFFE5}, + [I(91,189)] = {64,0}, + [I(92,189)] = {64,0}, + [I(93,189)] = {64,0}, + [I(94,189)] = {64,0}, + [I(95,189)] = {28,0x8BFFFE5}, + [I(96,189)] = {64,0}, + [I(97,189)] = {27,0xFFFFE5}, + [I(98,189)] = {28,0x8FFFFE5}, + [I(99,189)] = {27,0x13FFFE5}, + [I(100,189)] = {28,0x93FFFE5}, + [I(101,189)] = {27,0x17FFFE5}, + [I(102,189)] = {28,0x97FFFE5}, + [I(103,189)] = {28,0x9BFFFE5}, + [I(104,189)] = {28,0x9FFFFE5}, + [I(105,189)] = {27,0x1BFFFE5}, + [I(106,189)] = {29,0x1D3FFFE5}, + [I(107,189)] = {29,0x1D7FFFE5}, + [I(108,189)] = {28,0xA3FFFE5}, + [I(109,189)] = {28,0xA7FFFE5}, + [I(110,189)] = {28,0xABFFFE5}, + [I(111,189)] = {27,0x1FFFFE5}, + [I(112,189)] = {28,0xAFFFFE5}, + [I(113,189)] = {29,0x1DBFFFE5}, + [I(114,189)] = {28,0xB3FFFE5}, + [I(115,189)] = {27,0x23FFFE5}, + [I(116,189)] = {27,0x27FFFE5}, + [I(117,189)] = {28,0xB7FFFE5}, + [I(118,189)] = {29,0x1DFFFFE5}, + [I(119,189)] = {29,0x1E3FFFE5}, + [I(120,189)] = {29,0x1E7FFFE5}, + [I(121,189)] = {29,0x1EBFFFE5}, + [I(122,189)] = {29,0x1EFFFFE5}, + [I(123,189)] = {64,0}, + [I(124,189)] = {64,0}, + [I(125,189)] = {64,0}, + [I(126,189)] = {64,0}, + [I(127,189)] = {64,0}, + [I(128,189)] = {64,0}, + [I(129,189)] = {64,0}, + [I(130,189)] = {64,0}, + [I(131,189)] = {64,0}, + [I(132,189)] = {64,0}, + [I(133,189)] = {64,0}, + [I(134,189)] = {64,0}, + [I(135,189)] = {64,0}, + [I(136,189)] = {64,0}, + [I(137,189)] = {64,0}, + [I(138,189)] = {64,0}, + [I(139,189)] = {64,0}, + [I(140,189)] = {64,0}, + [I(141,189)] = {64,0}, + [I(142,189)] = {64,0}, + [I(143,189)] = {64,0}, + [I(144,189)] = {64,0}, + [I(145,189)] = {64,0}, + [I(146,189)] = {64,0}, + [I(147,189)] = {64,0}, + [I(148,189)] = {64,0}, + [I(149,189)] = {64,0}, + [I(150,189)] = {64,0}, + [I(151,189)] = {64,0}, + [I(152,189)] = {64,0}, + [I(153,189)] = {64,0}, + [I(154,189)] = {64,0}, + [I(155,189)] = {64,0}, + [I(156,189)] = {64,0}, + [I(157,189)] = {64,0}, + [I(158,189)] = {64,0}, + [I(159,189)] = {64,0}, + [I(160,189)] = {64,0}, + [I(161,189)] = {64,0}, + [I(162,189)] = {64,0}, + [I(163,189)] = {64,0}, + [I(164,189)] = {64,0}, + [I(165,189)] = {64,0}, + [I(166,189)] = {64,0}, + [I(167,189)] = {64,0}, + [I(168,189)] = {64,0}, + [I(169,189)] = {64,0}, + [I(170,189)] = {64,0}, + [I(171,189)] = {64,0}, + [I(172,189)] = {64,0}, + [I(173,189)] = {64,0}, + [I(174,189)] = {64,0}, + [I(175,189)] = {64,0}, + [I(176,189)] = {64,0}, + [I(177,189)] = {64,0}, + [I(178,189)] = {64,0}, + [I(179,189)] = {64,0}, + [I(180,189)] = {64,0}, + [I(181,189)] = {64,0}, + [I(182,189)] = {64,0}, + [I(183,189)] = {64,0}, + [I(184,189)] = {64,0}, + [I(185,189)] = {64,0}, + [I(186,189)] = {64,0}, + [I(187,189)] = {64,0}, + [I(188,189)] = {64,0}, + [I(189,189)] = {64,0}, + [I(190,189)] = {64,0}, + [I(191,189)] = {64,0}, + [I(192,189)] = {64,0}, + [I(193,189)] = {64,0}, + [I(194,189)] = {64,0}, + [I(195,189)] = {64,0}, + [I(196,189)] = {64,0}, + [I(197,189)] = {64,0}, + [I(198,189)] = {64,0}, + [I(199,189)] = {64,0}, + [I(200,189)] = {64,0}, + [I(201,189)] = {64,0}, + [I(202,189)] = {64,0}, + [I(203,189)] = {64,0}, + [I(204,189)] = {64,0}, + [I(205,189)] = {64,0}, + [I(206,189)] = {64,0}, + [I(207,189)] = {64,0}, + [I(208,189)] = {64,0}, + [I(209,189)] = {64,0}, + [I(210,189)] = {64,0}, + [I(211,189)] = {64,0}, + [I(212,189)] = {64,0}, + [I(213,189)] = {64,0}, + [I(214,189)] = {64,0}, + [I(215,189)] = {64,0}, + [I(216,189)] = {64,0}, + [I(217,189)] = {64,0}, + [I(218,189)] = {64,0}, + [I(219,189)] = {64,0}, + [I(220,189)] = {64,0}, + [I(221,189)] = {64,0}, + [I(222,189)] = {64,0}, + [I(223,189)] = {64,0}, + [I(224,189)] = {64,0}, + [I(225,189)] = {64,0}, + [I(226,189)] = {64,0}, + [I(227,189)] = {64,0}, + [I(228,189)] = {64,0}, + [I(229,189)] = {64,0}, + [I(230,189)] = {64,0}, + [I(231,189)] = {64,0}, + [I(232,189)] = {64,0}, + [I(233,189)] = {64,0}, + [I(234,189)] = {64,0}, + [I(235,189)] = {64,0}, + [I(236,189)] = {64,0}, + [I(237,189)] = {64,0}, + [I(238,189)] = {64,0}, + [I(239,189)] = {64,0}, + [I(240,189)] = {64,0}, + [I(241,189)] = {64,0}, + [I(242,189)] = {64,0}, + [I(243,189)] = {64,0}, + [I(244,189)] = {64,0}, + [I(245,189)] = {64,0}, + [I(246,189)] = {64,0}, + [I(247,189)] = {64,0}, + [I(248,189)] = {64,0}, + [I(249,189)] = {64,0}, + [I(250,189)] = {64,0}, + [I(251,189)] = {64,0}, + [I(252,189)] = {64,0}, + [I(253,189)] = {64,0}, + [I(254,189)] = {64,0}, + [I(255,189)] = {64,0}, + [I(0,190)] = {64,0}, + [I(1,190)] = {64,0}, + [I(2,190)] = {64,0}, + [I(3,190)] = {64,0}, + [I(4,190)] = {64,0}, + [I(5,190)] = {64,0}, + [I(6,190)] = {64,0}, + [I(7,190)] = {64,0}, + [I(8,190)] = {64,0}, + [I(9,190)] = {64,0}, + [I(10,190)] = {64,0}, + [I(11,190)] = {64,0}, + [I(12,190)] = {64,0}, + [I(13,190)] = {64,0}, + [I(14,190)] = {64,0}, + [I(15,190)] = {64,0}, + [I(16,190)] = {64,0}, + [I(17,190)] = {64,0}, + [I(18,190)] = {64,0}, + [I(19,190)] = {64,0}, + [I(20,190)] = {64,0}, + [I(21,190)] = {64,0}, + [I(22,190)] = {64,0}, + [I(23,190)] = {64,0}, + [I(24,190)] = {64,0}, + [I(25,190)] = {64,0}, + [I(26,190)] = {64,0}, + [I(27,190)] = {64,0}, + [I(28,190)] = {64,0}, + [I(29,190)] = {64,0}, + [I(30,190)] = {64,0}, + [I(31,190)] = {64,0}, + [I(32,190)] = {28,0x53FFFE6}, + [I(33,190)] = {X32,0xFE3FFFE6}, + [I(34,190)] = {X32,0xFE7FFFE6}, + [I(35,190)] = {64,0}, + [I(36,190)] = {64,0}, + [I(37,190)] = {28,0x57FFFE6}, + [I(38,190)] = {30,0x3E3FFFE6}, + [I(39,190)] = {64,0}, + [I(40,190)] = {X32,0xFEBFFFE6}, + [I(41,190)] = {X32,0xFEFFFFE6}, + [I(42,190)] = {30,0x3E7FFFE6}, + [I(43,190)] = {64,0}, + [I(44,190)] = {30,0x3EBFFFE6}, + [I(45,190)] = {28,0x5BFFFE6}, + [I(46,190)] = {28,0x5FFFFE6}, + [I(47,190)] = {28,0x63FFFE6}, + [I(48,190)] = {27,0x3FFFE6}, + [I(49,190)] = {27,0x7FFFE6}, + [I(50,190)] = {27,0xBFFFE6}, + [I(51,190)] = {28,0x67FFFE6}, + [I(52,190)] = {28,0x6BFFFE6}, + [I(53,190)] = {28,0x6FFFFE6}, + [I(54,190)] = {28,0x73FFFE6}, + [I(55,190)] = {28,0x77FFFE6}, + [I(56,190)] = {28,0x7BFFFE6}, + [I(57,190)] = {28,0x7FFFFE6}, + [I(58,190)] = {29,0x173FFFE6}, + [I(59,190)] = {30,0x3EFFFFE6}, + [I(60,190)] = {64,0}, + [I(61,190)] = {28,0x83FFFE6}, + [I(62,190)] = {64,0}, + [I(63,190)] = {X32,0xFF3FFFE6}, + [I(64,190)] = {64,0}, + [I(65,190)] = {28,0x87FFFE6}, + [I(66,190)] = {29,0x177FFFE6}, + [I(67,190)] = {29,0x17BFFFE6}, + [I(68,190)] = {29,0x17FFFFE6}, + [I(69,190)] = {29,0x183FFFE6}, + [I(70,190)] = {29,0x187FFFE6}, + [I(71,190)] = {29,0x18BFFFE6}, + [I(72,190)] = {29,0x18FFFFE6}, + [I(73,190)] = {29,0x193FFFE6}, + [I(74,190)] = {29,0x197FFFE6}, + [I(75,190)] = {29,0x19BFFFE6}, + [I(76,190)] = {29,0x19FFFFE6}, + [I(77,190)] = {29,0x1A3FFFE6}, + [I(78,190)] = {29,0x1A7FFFE6}, + [I(79,190)] = {29,0x1ABFFFE6}, + [I(80,190)] = {29,0x1AFFFFE6}, + [I(81,190)] = {29,0x1B3FFFE6}, + [I(82,190)] = {29,0x1B7FFFE6}, + [I(83,190)] = {29,0x1BBFFFE6}, + [I(84,190)] = {29,0x1BFFFFE6}, + [I(85,190)] = {29,0x1C3FFFE6}, + [I(86,190)] = {29,0x1C7FFFE6}, + [I(87,190)] = {29,0x1CBFFFE6}, + [I(88,190)] = {30,0x3F3FFFE6}, + [I(89,190)] = {29,0x1CFFFFE6}, + [I(90,190)] = {30,0x3F7FFFE6}, + [I(91,190)] = {64,0}, + [I(92,190)] = {64,0}, + [I(93,190)] = {64,0}, + [I(94,190)] = {64,0}, + [I(95,190)] = {28,0x8BFFFE6}, + [I(96,190)] = {64,0}, + [I(97,190)] = {27,0xFFFFE6}, + [I(98,190)] = {28,0x8FFFFE6}, + [I(99,190)] = {27,0x13FFFE6}, + [I(100,190)] = {28,0x93FFFE6}, + [I(101,190)] = {27,0x17FFFE6}, + [I(102,190)] = {28,0x97FFFE6}, + [I(103,190)] = {28,0x9BFFFE6}, + [I(104,190)] = {28,0x9FFFFE6}, + [I(105,190)] = {27,0x1BFFFE6}, + [I(106,190)] = {29,0x1D3FFFE6}, + [I(107,190)] = {29,0x1D7FFFE6}, + [I(108,190)] = {28,0xA3FFFE6}, + [I(109,190)] = {28,0xA7FFFE6}, + [I(110,190)] = {28,0xABFFFE6}, + [I(111,190)] = {27,0x1FFFFE6}, + [I(112,190)] = {28,0xAFFFFE6}, + [I(113,190)] = {29,0x1DBFFFE6}, + [I(114,190)] = {28,0xB3FFFE6}, + [I(115,190)] = {27,0x23FFFE6}, + [I(116,190)] = {27,0x27FFFE6}, + [I(117,190)] = {28,0xB7FFFE6}, + [I(118,190)] = {29,0x1DFFFFE6}, + [I(119,190)] = {29,0x1E3FFFE6}, + [I(120,190)] = {29,0x1E7FFFE6}, + [I(121,190)] = {29,0x1EBFFFE6}, + [I(122,190)] = {29,0x1EFFFFE6}, + [I(123,190)] = {64,0}, + [I(124,190)] = {64,0}, + [I(125,190)] = {64,0}, + [I(126,190)] = {64,0}, + [I(127,190)] = {64,0}, + [I(128,190)] = {64,0}, + [I(129,190)] = {64,0}, + [I(130,190)] = {64,0}, + [I(131,190)] = {64,0}, + [I(132,190)] = {64,0}, + [I(133,190)] = {64,0}, + [I(134,190)] = {64,0}, + [I(135,190)] = {64,0}, + [I(136,190)] = {64,0}, + [I(137,190)] = {64,0}, + [I(138,190)] = {64,0}, + [I(139,190)] = {64,0}, + [I(140,190)] = {64,0}, + [I(141,190)] = {64,0}, + [I(142,190)] = {64,0}, + [I(143,190)] = {64,0}, + [I(144,190)] = {64,0}, + [I(145,190)] = {64,0}, + [I(146,190)] = {64,0}, + [I(147,190)] = {64,0}, + [I(148,190)] = {64,0}, + [I(149,190)] = {64,0}, + [I(150,190)] = {64,0}, + [I(151,190)] = {64,0}, + [I(152,190)] = {64,0}, + [I(153,190)] = {64,0}, + [I(154,190)] = {64,0}, + [I(155,190)] = {64,0}, + [I(156,190)] = {64,0}, + [I(157,190)] = {64,0}, + [I(158,190)] = {64,0}, + [I(159,190)] = {64,0}, + [I(160,190)] = {64,0}, + [I(161,190)] = {64,0}, + [I(162,190)] = {64,0}, + [I(163,190)] = {64,0}, + [I(164,190)] = {64,0}, + [I(165,190)] = {64,0}, + [I(166,190)] = {64,0}, + [I(167,190)] = {64,0}, + [I(168,190)] = {64,0}, + [I(169,190)] = {64,0}, + [I(170,190)] = {64,0}, + [I(171,190)] = {64,0}, + [I(172,190)] = {64,0}, + [I(173,190)] = {64,0}, + [I(174,190)] = {64,0}, + [I(175,190)] = {64,0}, + [I(176,190)] = {64,0}, + [I(177,190)] = {64,0}, + [I(178,190)] = {64,0}, + [I(179,190)] = {64,0}, + [I(180,190)] = {64,0}, + [I(181,190)] = {64,0}, + [I(182,190)] = {64,0}, + [I(183,190)] = {64,0}, + [I(184,190)] = {64,0}, + [I(185,190)] = {64,0}, + [I(186,190)] = {64,0}, + [I(187,190)] = {64,0}, + [I(188,190)] = {64,0}, + [I(189,190)] = {64,0}, + [I(190,190)] = {64,0}, + [I(191,190)] = {64,0}, + [I(192,190)] = {64,0}, + [I(193,190)] = {64,0}, + [I(194,190)] = {64,0}, + [I(195,190)] = {64,0}, + [I(196,190)] = {64,0}, + [I(197,190)] = {64,0}, + [I(198,190)] = {64,0}, + [I(199,190)] = {64,0}, + [I(200,190)] = {64,0}, + [I(201,190)] = {64,0}, + [I(202,190)] = {64,0}, + [I(203,190)] = {64,0}, + [I(204,190)] = {64,0}, + [I(205,190)] = {64,0}, + [I(206,190)] = {64,0}, + [I(207,190)] = {64,0}, + [I(208,190)] = {64,0}, + [I(209,190)] = {64,0}, + [I(210,190)] = {64,0}, + [I(211,190)] = {64,0}, + [I(212,190)] = {64,0}, + [I(213,190)] = {64,0}, + [I(214,190)] = {64,0}, + [I(215,190)] = {64,0}, + [I(216,190)] = {64,0}, + [I(217,190)] = {64,0}, + [I(218,190)] = {64,0}, + [I(219,190)] = {64,0}, + [I(220,190)] = {64,0}, + [I(221,190)] = {64,0}, + [I(222,190)] = {64,0}, + [I(223,190)] = {64,0}, + [I(224,190)] = {64,0}, + [I(225,190)] = {64,0}, + [I(226,190)] = {64,0}, + [I(227,190)] = {64,0}, + [I(228,190)] = {64,0}, + [I(229,190)] = {64,0}, + [I(230,190)] = {64,0}, + [I(231,190)] = {64,0}, + [I(232,190)] = {64,0}, + [I(233,190)] = {64,0}, + [I(234,190)] = {64,0}, + [I(235,190)] = {64,0}, + [I(236,190)] = {64,0}, + [I(237,190)] = {64,0}, + [I(238,190)] = {64,0}, + [I(239,190)] = {64,0}, + [I(240,190)] = {64,0}, + [I(241,190)] = {64,0}, + [I(242,190)] = {64,0}, + [I(243,190)] = {64,0}, + [I(244,190)] = {64,0}, + [I(245,190)] = {64,0}, + [I(246,190)] = {64,0}, + [I(247,190)] = {64,0}, + [I(248,190)] = {64,0}, + [I(249,190)] = {64,0}, + [I(250,190)] = {64,0}, + [I(251,190)] = {64,0}, + [I(252,190)] = {64,0}, + [I(253,190)] = {64,0}, + [I(254,190)] = {64,0}, + [I(255,190)] = {64,0}, + [I(0,191)] = {64,0}, + [I(1,191)] = {64,0}, + [I(2,191)] = {64,0}, + [I(3,191)] = {64,0}, + [I(4,191)] = {64,0}, + [I(5,191)] = {64,0}, + [I(6,191)] = {64,0}, + [I(7,191)] = {64,0}, + [I(8,191)] = {64,0}, + [I(9,191)] = {64,0}, + [I(10,191)] = {64,0}, + [I(11,191)] = {64,0}, + [I(12,191)] = {64,0}, + [I(13,191)] = {64,0}, + [I(14,191)] = {64,0}, + [I(15,191)] = {64,0}, + [I(16,191)] = {64,0}, + [I(17,191)] = {64,0}, + [I(18,191)] = {64,0}, + [I(19,191)] = {64,0}, + [I(20,191)] = {64,0}, + [I(21,191)] = {64,0}, + [I(22,191)] = {64,0}, + [I(23,191)] = {64,0}, + [I(24,191)] = {64,0}, + [I(25,191)] = {64,0}, + [I(26,191)] = {64,0}, + [I(27,191)] = {64,0}, + [I(28,191)] = {64,0}, + [I(29,191)] = {64,0}, + [I(30,191)] = {64,0}, + [I(31,191)] = {64,0}, + [I(32,191)] = {29,0xA7FFFF1}, + [I(33,191)] = {64,0}, + [I(34,191)] = {64,0}, + [I(35,191)] = {64,0}, + [I(36,191)] = {64,0}, + [I(37,191)] = {29,0xAFFFFF1}, + [I(38,191)] = {31,0x7C7FFFF1}, + [I(39,191)] = {64,0}, + [I(40,191)] = {64,0}, + [I(41,191)] = {64,0}, + [I(42,191)] = {31,0x7CFFFFF1}, + [I(43,191)] = {64,0}, + [I(44,191)] = {31,0x7D7FFFF1}, + [I(45,191)] = {29,0xB7FFFF1}, + [I(46,191)] = {29,0xBFFFFF1}, + [I(47,191)] = {29,0xC7FFFF1}, + [I(48,191)] = {28,0x7FFFF1}, + [I(49,191)] = {28,0xFFFFF1}, + [I(50,191)] = {28,0x17FFFF1}, + [I(51,191)] = {29,0xCFFFFF1}, + [I(52,191)] = {29,0xD7FFFF1}, + [I(53,191)] = {29,0xDFFFFF1}, + [I(54,191)] = {29,0xE7FFFF1}, + [I(55,191)] = {29,0xEFFFFF1}, + [I(56,191)] = {29,0xF7FFFF1}, + [I(57,191)] = {29,0xFFFFFF1}, + [I(58,191)] = {30,0x2E7FFFF1}, + [I(59,191)] = {31,0x7DFFFFF1}, + [I(60,191)] = {64,0}, + [I(61,191)] = {29,0x107FFFF1}, + [I(62,191)] = {64,0}, + [I(63,191)] = {64,0}, + [I(64,191)] = {64,0}, + [I(65,191)] = {29,0x10FFFFF1}, + [I(66,191)] = {30,0x2EFFFFF1}, + [I(67,191)] = {30,0x2F7FFFF1}, + [I(68,191)] = {30,0x2FFFFFF1}, + [I(69,191)] = {30,0x307FFFF1}, + [I(70,191)] = {30,0x30FFFFF1}, + [I(71,191)] = {30,0x317FFFF1}, + [I(72,191)] = {30,0x31FFFFF1}, + [I(73,191)] = {30,0x327FFFF1}, + [I(74,191)] = {30,0x32FFFFF1}, + [I(75,191)] = {30,0x337FFFF1}, + [I(76,191)] = {30,0x33FFFFF1}, + [I(77,191)] = {30,0x347FFFF1}, + [I(78,191)] = {30,0x34FFFFF1}, + [I(79,191)] = {30,0x357FFFF1}, + [I(80,191)] = {30,0x35FFFFF1}, + [I(81,191)] = {30,0x367FFFF1}, + [I(82,191)] = {30,0x36FFFFF1}, + [I(83,191)] = {30,0x377FFFF1}, + [I(84,191)] = {30,0x37FFFFF1}, + [I(85,191)] = {30,0x387FFFF1}, + [I(86,191)] = {30,0x38FFFFF1}, + [I(87,191)] = {30,0x397FFFF1}, + [I(88,191)] = {31,0x7E7FFFF1}, + [I(89,191)] = {30,0x39FFFFF1}, + [I(90,191)] = {31,0x7EFFFFF1}, + [I(91,191)] = {64,0}, + [I(92,191)] = {64,0}, + [I(93,191)] = {64,0}, + [I(94,191)] = {64,0}, + [I(95,191)] = {29,0x117FFFF1}, + [I(96,191)] = {64,0}, + [I(97,191)] = {28,0x1FFFFF1}, + [I(98,191)] = {29,0x11FFFFF1}, + [I(99,191)] = {28,0x27FFFF1}, + [I(100,191)] = {29,0x127FFFF1}, + [I(101,191)] = {28,0x2FFFFF1}, + [I(102,191)] = {29,0x12FFFFF1}, + [I(103,191)] = {29,0x137FFFF1}, + [I(104,191)] = {29,0x13FFFFF1}, + [I(105,191)] = {28,0x37FFFF1}, + [I(106,191)] = {30,0x3A7FFFF1}, + [I(107,191)] = {30,0x3AFFFFF1}, + [I(108,191)] = {29,0x147FFFF1}, + [I(109,191)] = {29,0x14FFFFF1}, + [I(110,191)] = {29,0x157FFFF1}, + [I(111,191)] = {28,0x3FFFFF1}, + [I(112,191)] = {29,0x15FFFFF1}, + [I(113,191)] = {30,0x3B7FFFF1}, + [I(114,191)] = {29,0x167FFFF1}, + [I(115,191)] = {28,0x47FFFF1}, + [I(116,191)] = {28,0x4FFFFF1}, + [I(117,191)] = {29,0x16FFFFF1}, + [I(118,191)] = {30,0x3BFFFFF1}, + [I(119,191)] = {30,0x3C7FFFF1}, + [I(120,191)] = {30,0x3CFFFFF1}, + [I(121,191)] = {30,0x3D7FFFF1}, + [I(122,191)] = {30,0x3DFFFFF1}, + [I(123,191)] = {64,0}, + [I(124,191)] = {64,0}, + [I(125,191)] = {64,0}, + [I(126,191)] = {64,0}, + [I(127,191)] = {64,0}, + [I(128,191)] = {64,0}, + [I(129,191)] = {64,0}, + [I(130,191)] = {64,0}, + [I(131,191)] = {64,0}, + [I(132,191)] = {64,0}, + [I(133,191)] = {64,0}, + [I(134,191)] = {64,0}, + [I(135,191)] = {64,0}, + [I(136,191)] = {64,0}, + [I(137,191)] = {64,0}, + [I(138,191)] = {64,0}, + [I(139,191)] = {64,0}, + [I(140,191)] = {64,0}, + [I(141,191)] = {64,0}, + [I(142,191)] = {64,0}, + [I(143,191)] = {64,0}, + [I(144,191)] = {64,0}, + [I(145,191)] = {64,0}, + [I(146,191)] = {64,0}, + [I(147,191)] = {64,0}, + [I(148,191)] = {64,0}, + [I(149,191)] = {64,0}, + [I(150,191)] = {64,0}, + [I(151,191)] = {64,0}, + [I(152,191)] = {64,0}, + [I(153,191)] = {64,0}, + [I(154,191)] = {64,0}, + [I(155,191)] = {64,0}, + [I(156,191)] = {64,0}, + [I(157,191)] = {64,0}, + [I(158,191)] = {64,0}, + [I(159,191)] = {64,0}, + [I(160,191)] = {64,0}, + [I(161,191)] = {64,0}, + [I(162,191)] = {64,0}, + [I(163,191)] = {64,0}, + [I(164,191)] = {64,0}, + [I(165,191)] = {64,0}, + [I(166,191)] = {64,0}, + [I(167,191)] = {64,0}, + [I(168,191)] = {64,0}, + [I(169,191)] = {64,0}, + [I(170,191)] = {64,0}, + [I(171,191)] = {64,0}, + [I(172,191)] = {64,0}, + [I(173,191)] = {64,0}, + [I(174,191)] = {64,0}, + [I(175,191)] = {64,0}, + [I(176,191)] = {64,0}, + [I(177,191)] = {64,0}, + [I(178,191)] = {64,0}, + [I(179,191)] = {64,0}, + [I(180,191)] = {64,0}, + [I(181,191)] = {64,0}, + [I(182,191)] = {64,0}, + [I(183,191)] = {64,0}, + [I(184,191)] = {64,0}, + [I(185,191)] = {64,0}, + [I(186,191)] = {64,0}, + [I(187,191)] = {64,0}, + [I(188,191)] = {64,0}, + [I(189,191)] = {64,0}, + [I(190,191)] = {64,0}, + [I(191,191)] = {64,0}, + [I(192,191)] = {64,0}, + [I(193,191)] = {64,0}, + [I(194,191)] = {64,0}, + [I(195,191)] = {64,0}, + [I(196,191)] = {64,0}, + [I(197,191)] = {64,0}, + [I(198,191)] = {64,0}, + [I(199,191)] = {64,0}, + [I(200,191)] = {64,0}, + [I(201,191)] = {64,0}, + [I(202,191)] = {64,0}, + [I(203,191)] = {64,0}, + [I(204,191)] = {64,0}, + [I(205,191)] = {64,0}, + [I(206,191)] = {64,0}, + [I(207,191)] = {64,0}, + [I(208,191)] = {64,0}, + [I(209,191)] = {64,0}, + [I(210,191)] = {64,0}, + [I(211,191)] = {64,0}, + [I(212,191)] = {64,0}, + [I(213,191)] = {64,0}, + [I(214,191)] = {64,0}, + [I(215,191)] = {64,0}, + [I(216,191)] = {64,0}, + [I(217,191)] = {64,0}, + [I(218,191)] = {64,0}, + [I(219,191)] = {64,0}, + [I(220,191)] = {64,0}, + [I(221,191)] = {64,0}, + [I(222,191)] = {64,0}, + [I(223,191)] = {64,0}, + [I(224,191)] = {64,0}, + [I(225,191)] = {64,0}, + [I(226,191)] = {64,0}, + [I(227,191)] = {64,0}, + [I(228,191)] = {64,0}, + [I(229,191)] = {64,0}, + [I(230,191)] = {64,0}, + [I(231,191)] = {64,0}, + [I(232,191)] = {64,0}, + [I(233,191)] = {64,0}, + [I(234,191)] = {64,0}, + [I(235,191)] = {64,0}, + [I(236,191)] = {64,0}, + [I(237,191)] = {64,0}, + [I(238,191)] = {64,0}, + [I(239,191)] = {64,0}, + [I(240,191)] = {64,0}, + [I(241,191)] = {64,0}, + [I(242,191)] = {64,0}, + [I(243,191)] = {64,0}, + [I(244,191)] = {64,0}, + [I(245,191)] = {64,0}, + [I(246,191)] = {64,0}, + [I(247,191)] = {64,0}, + [I(248,191)] = {64,0}, + [I(249,191)] = {64,0}, + [I(250,191)] = {64,0}, + [I(251,191)] = {64,0}, + [I(252,191)] = {64,0}, + [I(253,191)] = {64,0}, + [I(254,191)] = {64,0}, + [I(255,191)] = {64,0}, + [I(0,192)] = {64,0}, + [I(1,192)] = {64,0}, + [I(2,192)] = {64,0}, + [I(3,192)] = {64,0}, + [I(4,192)] = {64,0}, + [I(5,192)] = {64,0}, + [I(6,192)] = {64,0}, + [I(7,192)] = {64,0}, + [I(8,192)] = {64,0}, + [I(9,192)] = {64,0}, + [I(10,192)] = {64,0}, + [I(11,192)] = {64,0}, + [I(12,192)] = {64,0}, + [I(13,192)] = {64,0}, + [I(14,192)] = {64,0}, + [I(15,192)] = {64,0}, + [I(16,192)] = {64,0}, + [I(17,192)] = {64,0}, + [I(18,192)] = {64,0}, + [I(19,192)] = {64,0}, + [I(20,192)] = {64,0}, + [I(21,192)] = {64,0}, + [I(22,192)] = {64,0}, + [I(23,192)] = {64,0}, + [I(24,192)] = {64,0}, + [I(25,192)] = {64,0}, + [I(26,192)] = {64,0}, + [I(27,192)] = {64,0}, + [I(28,192)] = {64,0}, + [I(29,192)] = {64,0}, + [I(30,192)] = {64,0}, + [I(31,192)] = {64,0}, + [I(32,192)] = {X32,0x53FFFFE0}, + [I(33,192)] = {64,0}, + [I(34,192)] = {64,0}, + [I(35,192)] = {64,0}, + [I(36,192)] = {64,0}, + [I(37,192)] = {X32,0x57FFFFE0}, + [I(38,192)] = {64,0}, + [I(39,192)] = {64,0}, + [I(40,192)] = {64,0}, + [I(41,192)] = {64,0}, + [I(42,192)] = {64,0}, + [I(43,192)] = {64,0}, + [I(44,192)] = {64,0}, + [I(45,192)] = {X32,0x5BFFFFE0}, + [I(46,192)] = {X32,0x5FFFFFE0}, + [I(47,192)] = {X32,0x63FFFFE0}, + [I(48,192)] = {31,0x3FFFFE0}, + [I(49,192)] = {31,0x7FFFFE0}, + [I(50,192)] = {31,0xBFFFFE0}, + [I(51,192)] = {X32,0x67FFFFE0}, + [I(52,192)] = {X32,0x6BFFFFE0}, + [I(53,192)] = {X32,0x6FFFFFE0}, + [I(54,192)] = {X32,0x73FFFFE0}, + [I(55,192)] = {X32,0x77FFFFE0}, + [I(56,192)] = {X32,0x7BFFFFE0}, + [I(57,192)] = {X32,0x7FFFFFE0}, + [I(58,192)] = {64,0}, + [I(59,192)] = {64,0}, + [I(60,192)] = {64,0}, + [I(61,192)] = {X32,0x83FFFFE0}, + [I(62,192)] = {64,0}, + [I(63,192)] = {64,0}, + [I(64,192)] = {64,0}, + [I(65,192)] = {X32,0x87FFFFE0}, + [I(66,192)] = {64,0}, + [I(67,192)] = {64,0}, + [I(68,192)] = {64,0}, + [I(69,192)] = {64,0}, + [I(70,192)] = {64,0}, + [I(71,192)] = {64,0}, + [I(72,192)] = {64,0}, + [I(73,192)] = {64,0}, + [I(74,192)] = {64,0}, + [I(75,192)] = {64,0}, + [I(76,192)] = {64,0}, + [I(77,192)] = {64,0}, + [I(78,192)] = {64,0}, + [I(79,192)] = {64,0}, + [I(80,192)] = {64,0}, + [I(81,192)] = {64,0}, + [I(82,192)] = {64,0}, + [I(83,192)] = {64,0}, + [I(84,192)] = {64,0}, + [I(85,192)] = {64,0}, + [I(86,192)] = {64,0}, + [I(87,192)] = {64,0}, + [I(88,192)] = {64,0}, + [I(89,192)] = {64,0}, + [I(90,192)] = {64,0}, + [I(91,192)] = {64,0}, + [I(92,192)] = {64,0}, + [I(93,192)] = {64,0}, + [I(94,192)] = {64,0}, + [I(95,192)] = {X32,0x8BFFFFE0}, + [I(96,192)] = {64,0}, + [I(97,192)] = {31,0xFFFFFE0}, + [I(98,192)] = {X32,0x8FFFFFE0}, + [I(99,192)] = {31,0x13FFFFE0}, + [I(100,192)] = {X32,0x93FFFFE0}, + [I(101,192)] = {31,0x17FFFFE0}, + [I(102,192)] = {X32,0x97FFFFE0}, + [I(103,192)] = {X32,0x9BFFFFE0}, + [I(104,192)] = {X32,0x9FFFFFE0}, + [I(105,192)] = {31,0x1BFFFFE0}, + [I(106,192)] = {64,0}, + [I(107,192)] = {64,0}, + [I(108,192)] = {X32,0xA3FFFFE0}, + [I(109,192)] = {X32,0xA7FFFFE0}, + [I(110,192)] = {X32,0xABFFFFE0}, + [I(111,192)] = {31,0x1FFFFFE0}, + [I(112,192)] = {X32,0xAFFFFFE0}, + [I(113,192)] = {64,0}, + [I(114,192)] = {X32,0xB3FFFFE0}, + [I(115,192)] = {31,0x23FFFFE0}, + [I(116,192)] = {31,0x27FFFFE0}, + [I(117,192)] = {X32,0xB7FFFFE0}, + [I(118,192)] = {64,0}, + [I(119,192)] = {64,0}, + [I(120,192)] = {64,0}, + [I(121,192)] = {64,0}, + [I(122,192)] = {64,0}, + [I(123,192)] = {64,0}, + [I(124,192)] = {64,0}, + [I(125,192)] = {64,0}, + [I(126,192)] = {64,0}, + [I(127,192)] = {64,0}, + [I(128,192)] = {64,0}, + [I(129,192)] = {64,0}, + [I(130,192)] = {64,0}, + [I(131,192)] = {64,0}, + [I(132,192)] = {64,0}, + [I(133,192)] = {64,0}, + [I(134,192)] = {64,0}, + [I(135,192)] = {64,0}, + [I(136,192)] = {64,0}, + [I(137,192)] = {64,0}, + [I(138,192)] = {64,0}, + [I(139,192)] = {64,0}, + [I(140,192)] = {64,0}, + [I(141,192)] = {64,0}, + [I(142,192)] = {64,0}, + [I(143,192)] = {64,0}, + [I(144,192)] = {64,0}, + [I(145,192)] = {64,0}, + [I(146,192)] = {64,0}, + [I(147,192)] = {64,0}, + [I(148,192)] = {64,0}, + [I(149,192)] = {64,0}, + [I(150,192)] = {64,0}, + [I(151,192)] = {64,0}, + [I(152,192)] = {64,0}, + [I(153,192)] = {64,0}, + [I(154,192)] = {64,0}, + [I(155,192)] = {64,0}, + [I(156,192)] = {64,0}, + [I(157,192)] = {64,0}, + [I(158,192)] = {64,0}, + [I(159,192)] = {64,0}, + [I(160,192)] = {64,0}, + [I(161,192)] = {64,0}, + [I(162,192)] = {64,0}, + [I(163,192)] = {64,0}, + [I(164,192)] = {64,0}, + [I(165,192)] = {64,0}, + [I(166,192)] = {64,0}, + [I(167,192)] = {64,0}, + [I(168,192)] = {64,0}, + [I(169,192)] = {64,0}, + [I(170,192)] = {64,0}, + [I(171,192)] = {64,0}, + [I(172,192)] = {64,0}, + [I(173,192)] = {64,0}, + [I(174,192)] = {64,0}, + [I(175,192)] = {64,0}, + [I(176,192)] = {64,0}, + [I(177,192)] = {64,0}, + [I(178,192)] = {64,0}, + [I(179,192)] = {64,0}, + [I(180,192)] = {64,0}, + [I(181,192)] = {64,0}, + [I(182,192)] = {64,0}, + [I(183,192)] = {64,0}, + [I(184,192)] = {64,0}, + [I(185,192)] = {64,0}, + [I(186,192)] = {64,0}, + [I(187,192)] = {64,0}, + [I(188,192)] = {64,0}, + [I(189,192)] = {64,0}, + [I(190,192)] = {64,0}, + [I(191,192)] = {64,0}, + [I(192,192)] = {64,0}, + [I(193,192)] = {64,0}, + [I(194,192)] = {64,0}, + [I(195,192)] = {64,0}, + [I(196,192)] = {64,0}, + [I(197,192)] = {64,0}, + [I(198,192)] = {64,0}, + [I(199,192)] = {64,0}, + [I(200,192)] = {64,0}, + [I(201,192)] = {64,0}, + [I(202,192)] = {64,0}, + [I(203,192)] = {64,0}, + [I(204,192)] = {64,0}, + [I(205,192)] = {64,0}, + [I(206,192)] = {64,0}, + [I(207,192)] = {64,0}, + [I(208,192)] = {64,0}, + [I(209,192)] = {64,0}, + [I(210,192)] = {64,0}, + [I(211,192)] = {64,0}, + [I(212,192)] = {64,0}, + [I(213,192)] = {64,0}, + [I(214,192)] = {64,0}, + [I(215,192)] = {64,0}, + [I(216,192)] = {64,0}, + [I(217,192)] = {64,0}, + [I(218,192)] = {64,0}, + [I(219,192)] = {64,0}, + [I(220,192)] = {64,0}, + [I(221,192)] = {64,0}, + [I(222,192)] = {64,0}, + [I(223,192)] = {64,0}, + [I(224,192)] = {64,0}, + [I(225,192)] = {64,0}, + [I(226,192)] = {64,0}, + [I(227,192)] = {64,0}, + [I(228,192)] = {64,0}, + [I(229,192)] = {64,0}, + [I(230,192)] = {64,0}, + [I(231,192)] = {64,0}, + [I(232,192)] = {64,0}, + [I(233,192)] = {64,0}, + [I(234,192)] = {64,0}, + [I(235,192)] = {64,0}, + [I(236,192)] = {64,0}, + [I(237,192)] = {64,0}, + [I(238,192)] = {64,0}, + [I(239,192)] = {64,0}, + [I(240,192)] = {64,0}, + [I(241,192)] = {64,0}, + [I(242,192)] = {64,0}, + [I(243,192)] = {64,0}, + [I(244,192)] = {64,0}, + [I(245,192)] = {64,0}, + [I(246,192)] = {64,0}, + [I(247,192)] = {64,0}, + [I(248,192)] = {64,0}, + [I(249,192)] = {64,0}, + [I(250,192)] = {64,0}, + [I(251,192)] = {64,0}, + [I(252,192)] = {64,0}, + [I(253,192)] = {64,0}, + [I(254,192)] = {64,0}, + [I(255,192)] = {64,0}, + [I(0,193)] = {64,0}, + [I(1,193)] = {64,0}, + [I(2,193)] = {64,0}, + [I(3,193)] = {64,0}, + [I(4,193)] = {64,0}, + [I(5,193)] = {64,0}, + [I(6,193)] = {64,0}, + [I(7,193)] = {64,0}, + [I(8,193)] = {64,0}, + [I(9,193)] = {64,0}, + [I(10,193)] = {64,0}, + [I(11,193)] = {64,0}, + [I(12,193)] = {64,0}, + [I(13,193)] = {64,0}, + [I(14,193)] = {64,0}, + [I(15,193)] = {64,0}, + [I(16,193)] = {64,0}, + [I(17,193)] = {64,0}, + [I(18,193)] = {64,0}, + [I(19,193)] = {64,0}, + [I(20,193)] = {64,0}, + [I(21,193)] = {64,0}, + [I(22,193)] = {64,0}, + [I(23,193)] = {64,0}, + [I(24,193)] = {64,0}, + [I(25,193)] = {64,0}, + [I(26,193)] = {64,0}, + [I(27,193)] = {64,0}, + [I(28,193)] = {64,0}, + [I(29,193)] = {64,0}, + [I(30,193)] = {64,0}, + [I(31,193)] = {64,0}, + [I(32,193)] = {X32,0x53FFFFE1}, + [I(33,193)] = {64,0}, + [I(34,193)] = {64,0}, + [I(35,193)] = {64,0}, + [I(36,193)] = {64,0}, + [I(37,193)] = {X32,0x57FFFFE1}, + [I(38,193)] = {64,0}, + [I(39,193)] = {64,0}, + [I(40,193)] = {64,0}, + [I(41,193)] = {64,0}, + [I(42,193)] = {64,0}, + [I(43,193)] = {64,0}, + [I(44,193)] = {64,0}, + [I(45,193)] = {X32,0x5BFFFFE1}, + [I(46,193)] = {X32,0x5FFFFFE1}, + [I(47,193)] = {X32,0x63FFFFE1}, + [I(48,193)] = {31,0x3FFFFE1}, + [I(49,193)] = {31,0x7FFFFE1}, + [I(50,193)] = {31,0xBFFFFE1}, + [I(51,193)] = {X32,0x67FFFFE1}, + [I(52,193)] = {X32,0x6BFFFFE1}, + [I(53,193)] = {X32,0x6FFFFFE1}, + [I(54,193)] = {X32,0x73FFFFE1}, + [I(55,193)] = {X32,0x77FFFFE1}, + [I(56,193)] = {X32,0x7BFFFFE1}, + [I(57,193)] = {X32,0x7FFFFFE1}, + [I(58,193)] = {64,0}, + [I(59,193)] = {64,0}, + [I(60,193)] = {64,0}, + [I(61,193)] = {X32,0x83FFFFE1}, + [I(62,193)] = {64,0}, + [I(63,193)] = {64,0}, + [I(64,193)] = {64,0}, + [I(65,193)] = {X32,0x87FFFFE1}, + [I(66,193)] = {64,0}, + [I(67,193)] = {64,0}, + [I(68,193)] = {64,0}, + [I(69,193)] = {64,0}, + [I(70,193)] = {64,0}, + [I(71,193)] = {64,0}, + [I(72,193)] = {64,0}, + [I(73,193)] = {64,0}, + [I(74,193)] = {64,0}, + [I(75,193)] = {64,0}, + [I(76,193)] = {64,0}, + [I(77,193)] = {64,0}, + [I(78,193)] = {64,0}, + [I(79,193)] = {64,0}, + [I(80,193)] = {64,0}, + [I(81,193)] = {64,0}, + [I(82,193)] = {64,0}, + [I(83,193)] = {64,0}, + [I(84,193)] = {64,0}, + [I(85,193)] = {64,0}, + [I(86,193)] = {64,0}, + [I(87,193)] = {64,0}, + [I(88,193)] = {64,0}, + [I(89,193)] = {64,0}, + [I(90,193)] = {64,0}, + [I(91,193)] = {64,0}, + [I(92,193)] = {64,0}, + [I(93,193)] = {64,0}, + [I(94,193)] = {64,0}, + [I(95,193)] = {X32,0x8BFFFFE1}, + [I(96,193)] = {64,0}, + [I(97,193)] = {31,0xFFFFFE1}, + [I(98,193)] = {X32,0x8FFFFFE1}, + [I(99,193)] = {31,0x13FFFFE1}, + [I(100,193)] = {X32,0x93FFFFE1}, + [I(101,193)] = {31,0x17FFFFE1}, + [I(102,193)] = {X32,0x97FFFFE1}, + [I(103,193)] = {X32,0x9BFFFFE1}, + [I(104,193)] = {X32,0x9FFFFFE1}, + [I(105,193)] = {31,0x1BFFFFE1}, + [I(106,193)] = {64,0}, + [I(107,193)] = {64,0}, + [I(108,193)] = {X32,0xA3FFFFE1}, + [I(109,193)] = {X32,0xA7FFFFE1}, + [I(110,193)] = {X32,0xABFFFFE1}, + [I(111,193)] = {31,0x1FFFFFE1}, + [I(112,193)] = {X32,0xAFFFFFE1}, + [I(113,193)] = {64,0}, + [I(114,193)] = {X32,0xB3FFFFE1}, + [I(115,193)] = {31,0x23FFFFE1}, + [I(116,193)] = {31,0x27FFFFE1}, + [I(117,193)] = {X32,0xB7FFFFE1}, + [I(118,193)] = {64,0}, + [I(119,193)] = {64,0}, + [I(120,193)] = {64,0}, + [I(121,193)] = {64,0}, + [I(122,193)] = {64,0}, + [I(123,193)] = {64,0}, + [I(124,193)] = {64,0}, + [I(125,193)] = {64,0}, + [I(126,193)] = {64,0}, + [I(127,193)] = {64,0}, + [I(128,193)] = {64,0}, + [I(129,193)] = {64,0}, + [I(130,193)] = {64,0}, + [I(131,193)] = {64,0}, + [I(132,193)] = {64,0}, + [I(133,193)] = {64,0}, + [I(134,193)] = {64,0}, + [I(135,193)] = {64,0}, + [I(136,193)] = {64,0}, + [I(137,193)] = {64,0}, + [I(138,193)] = {64,0}, + [I(139,193)] = {64,0}, + [I(140,193)] = {64,0}, + [I(141,193)] = {64,0}, + [I(142,193)] = {64,0}, + [I(143,193)] = {64,0}, + [I(144,193)] = {64,0}, + [I(145,193)] = {64,0}, + [I(146,193)] = {64,0}, + [I(147,193)] = {64,0}, + [I(148,193)] = {64,0}, + [I(149,193)] = {64,0}, + [I(150,193)] = {64,0}, + [I(151,193)] = {64,0}, + [I(152,193)] = {64,0}, + [I(153,193)] = {64,0}, + [I(154,193)] = {64,0}, + [I(155,193)] = {64,0}, + [I(156,193)] = {64,0}, + [I(157,193)] = {64,0}, + [I(158,193)] = {64,0}, + [I(159,193)] = {64,0}, + [I(160,193)] = {64,0}, + [I(161,193)] = {64,0}, + [I(162,193)] = {64,0}, + [I(163,193)] = {64,0}, + [I(164,193)] = {64,0}, + [I(165,193)] = {64,0}, + [I(166,193)] = {64,0}, + [I(167,193)] = {64,0}, + [I(168,193)] = {64,0}, + [I(169,193)] = {64,0}, + [I(170,193)] = {64,0}, + [I(171,193)] = {64,0}, + [I(172,193)] = {64,0}, + [I(173,193)] = {64,0}, + [I(174,193)] = {64,0}, + [I(175,193)] = {64,0}, + [I(176,193)] = {64,0}, + [I(177,193)] = {64,0}, + [I(178,193)] = {64,0}, + [I(179,193)] = {64,0}, + [I(180,193)] = {64,0}, + [I(181,193)] = {64,0}, + [I(182,193)] = {64,0}, + [I(183,193)] = {64,0}, + [I(184,193)] = {64,0}, + [I(185,193)] = {64,0}, + [I(186,193)] = {64,0}, + [I(187,193)] = {64,0}, + [I(188,193)] = {64,0}, + [I(189,193)] = {64,0}, + [I(190,193)] = {64,0}, + [I(191,193)] = {64,0}, + [I(192,193)] = {64,0}, + [I(193,193)] = {64,0}, + [I(194,193)] = {64,0}, + [I(195,193)] = {64,0}, + [I(196,193)] = {64,0}, + [I(197,193)] = {64,0}, + [I(198,193)] = {64,0}, + [I(199,193)] = {64,0}, + [I(200,193)] = {64,0}, + [I(201,193)] = {64,0}, + [I(202,193)] = {64,0}, + [I(203,193)] = {64,0}, + [I(204,193)] = {64,0}, + [I(205,193)] = {64,0}, + [I(206,193)] = {64,0}, + [I(207,193)] = {64,0}, + [I(208,193)] = {64,0}, + [I(209,193)] = {64,0}, + [I(210,193)] = {64,0}, + [I(211,193)] = {64,0}, + [I(212,193)] = {64,0}, + [I(213,193)] = {64,0}, + [I(214,193)] = {64,0}, + [I(215,193)] = {64,0}, + [I(216,193)] = {64,0}, + [I(217,193)] = {64,0}, + [I(218,193)] = {64,0}, + [I(219,193)] = {64,0}, + [I(220,193)] = {64,0}, + [I(221,193)] = {64,0}, + [I(222,193)] = {64,0}, + [I(223,193)] = {64,0}, + [I(224,193)] = {64,0}, + [I(225,193)] = {64,0}, + [I(226,193)] = {64,0}, + [I(227,193)] = {64,0}, + [I(228,193)] = {64,0}, + [I(229,193)] = {64,0}, + [I(230,193)] = {64,0}, + [I(231,193)] = {64,0}, + [I(232,193)] = {64,0}, + [I(233,193)] = {64,0}, + [I(234,193)] = {64,0}, + [I(235,193)] = {64,0}, + [I(236,193)] = {64,0}, + [I(237,193)] = {64,0}, + [I(238,193)] = {64,0}, + [I(239,193)] = {64,0}, + [I(240,193)] = {64,0}, + [I(241,193)] = {64,0}, + [I(242,193)] = {64,0}, + [I(243,193)] = {64,0}, + [I(244,193)] = {64,0}, + [I(245,193)] = {64,0}, + [I(246,193)] = {64,0}, + [I(247,193)] = {64,0}, + [I(248,193)] = {64,0}, + [I(249,193)] = {64,0}, + [I(250,193)] = {64,0}, + [I(251,193)] = {64,0}, + [I(252,193)] = {64,0}, + [I(253,193)] = {64,0}, + [I(254,193)] = {64,0}, + [I(255,193)] = {64,0}, + [I(0,194)] = {64,0}, + [I(1,194)] = {64,0}, + [I(2,194)] = {64,0}, + [I(3,194)] = {64,0}, + [I(4,194)] = {64,0}, + [I(5,194)] = {64,0}, + [I(6,194)] = {64,0}, + [I(7,194)] = {64,0}, + [I(8,194)] = {64,0}, + [I(9,194)] = {64,0}, + [I(10,194)] = {64,0}, + [I(11,194)] = {64,0}, + [I(12,194)] = {64,0}, + [I(13,194)] = {64,0}, + [I(14,194)] = {64,0}, + [I(15,194)] = {64,0}, + [I(16,194)] = {64,0}, + [I(17,194)] = {64,0}, + [I(18,194)] = {64,0}, + [I(19,194)] = {64,0}, + [I(20,194)] = {64,0}, + [I(21,194)] = {64,0}, + [I(22,194)] = {64,0}, + [I(23,194)] = {64,0}, + [I(24,194)] = {64,0}, + [I(25,194)] = {64,0}, + [I(26,194)] = {64,0}, + [I(27,194)] = {64,0}, + [I(28,194)] = {64,0}, + [I(29,194)] = {64,0}, + [I(30,194)] = {64,0}, + [I(31,194)] = {64,0}, + [I(32,194)] = {26,0x14FFFEB}, + [I(33,194)] = {30,0x3F8FFFEB}, + [I(34,194)] = {30,0x3F9FFFEB}, + [I(35,194)] = {X32,0xFFAFFFEB}, + [I(36,194)] = {64,0}, + [I(37,194)] = {26,0x15FFFEB}, + [I(38,194)] = {28,0xF8FFFEB}, + [I(39,194)] = {31,0x7FAFFFEB}, + [I(40,194)] = {30,0x3FAFFFEB}, + [I(41,194)] = {30,0x3FBFFFEB}, + [I(42,194)] = {28,0xF9FFFEB}, + [I(43,194)] = {31,0x7FBFFFEB}, + [I(44,194)] = {28,0xFAFFFEB}, + [I(45,194)] = {26,0x16FFFEB}, + [I(46,194)] = {26,0x17FFFEB}, + [I(47,194)] = {26,0x18FFFEB}, + [I(48,194)] = {25,0xFFFEB}, + [I(49,194)] = {25,0x1FFFEB}, + [I(50,194)] = {25,0x2FFFEB}, + [I(51,194)] = {26,0x19FFFEB}, + [I(52,194)] = {26,0x1AFFFEB}, + [I(53,194)] = {26,0x1BFFFEB}, + [I(54,194)] = {26,0x1CFFFEB}, + [I(55,194)] = {26,0x1DFFFEB}, + [I(56,194)] = {26,0x1EFFFEB}, + [I(57,194)] = {26,0x1FFFFEB}, + [I(58,194)] = {27,0x5CFFFEB}, + [I(59,194)] = {28,0xFBFFFEB}, + [I(60,194)] = {64,0}, + [I(61,194)] = {26,0x20FFFEB}, + [I(62,194)] = {X32,0xFFBFFFEB}, + [I(63,194)] = {30,0x3FCFFFEB}, + [I(64,194)] = {64,0}, + [I(65,194)] = {26,0x21FFFEB}, + [I(66,194)] = {27,0x5DFFFEB}, + [I(67,194)] = {27,0x5EFFFEB}, + [I(68,194)] = {27,0x5FFFFEB}, + [I(69,194)] = {27,0x60FFFEB}, + [I(70,194)] = {27,0x61FFFEB}, + [I(71,194)] = {27,0x62FFFEB}, + [I(72,194)] = {27,0x63FFFEB}, + [I(73,194)] = {27,0x64FFFEB}, + [I(74,194)] = {27,0x65FFFEB}, + [I(75,194)] = {27,0x66FFFEB}, + [I(76,194)] = {27,0x67FFFEB}, + [I(77,194)] = {27,0x68FFFEB}, + [I(78,194)] = {27,0x69FFFEB}, + [I(79,194)] = {27,0x6AFFFEB}, + [I(80,194)] = {27,0x6BFFFEB}, + [I(81,194)] = {27,0x6CFFFEB}, + [I(82,194)] = {27,0x6DFFFEB}, + [I(83,194)] = {27,0x6EFFFEB}, + [I(84,194)] = {27,0x6FFFFEB}, + [I(85,194)] = {27,0x70FFFEB}, + [I(86,194)] = {27,0x71FFFEB}, + [I(87,194)] = {27,0x72FFFEB}, + [I(88,194)] = {28,0xFCFFFEB}, + [I(89,194)] = {27,0x73FFFEB}, + [I(90,194)] = {28,0xFDFFFEB}, + [I(91,194)] = {64,0}, + [I(92,194)] = {64,0}, + [I(93,194)] = {64,0}, + [I(94,194)] = {64,0}, + [I(95,194)] = {26,0x22FFFEB}, + [I(96,194)] = {64,0}, + [I(97,194)] = {25,0x3FFFEB}, + [I(98,194)] = {26,0x23FFFEB}, + [I(99,194)] = {25,0x4FFFEB}, + [I(100,194)] = {26,0x24FFFEB}, + [I(101,194)] = {25,0x5FFFEB}, + [I(102,194)] = {26,0x25FFFEB}, + [I(103,194)] = {26,0x26FFFEB}, + [I(104,194)] = {26,0x27FFFEB}, + [I(105,194)] = {25,0x6FFFEB}, + [I(106,194)] = {27,0x74FFFEB}, + [I(107,194)] = {27,0x75FFFEB}, + [I(108,194)] = {26,0x28FFFEB}, + [I(109,194)] = {26,0x29FFFEB}, + [I(110,194)] = {26,0x2AFFFEB}, + [I(111,194)] = {25,0x7FFFEB}, + [I(112,194)] = {26,0x2BFFFEB}, + [I(113,194)] = {27,0x76FFFEB}, + [I(114,194)] = {26,0x2CFFFEB}, + [I(115,194)] = {25,0x8FFFEB}, + [I(116,194)] = {25,0x9FFFEB}, + [I(117,194)] = {26,0x2DFFFEB}, + [I(118,194)] = {27,0x77FFFEB}, + [I(119,194)] = {27,0x78FFFEB}, + [I(120,194)] = {27,0x79FFFEB}, + [I(121,194)] = {27,0x7AFFFEB}, + [I(122,194)] = {27,0x7BFFFEB}, + [I(123,194)] = {64,0}, + [I(124,194)] = {31,0x7FCFFFEB}, + [I(125,194)] = {64,0}, + [I(126,194)] = {64,0}, + [I(127,194)] = {64,0}, + [I(128,194)] = {64,0}, + [I(129,194)] = {64,0}, + [I(130,194)] = {64,0}, + [I(131,194)] = {64,0}, + [I(132,194)] = {64,0}, + [I(133,194)] = {64,0}, + [I(134,194)] = {64,0}, + [I(135,194)] = {64,0}, + [I(136,194)] = {64,0}, + [I(137,194)] = {64,0}, + [I(138,194)] = {64,0}, + [I(139,194)] = {64,0}, + [I(140,194)] = {64,0}, + [I(141,194)] = {64,0}, + [I(142,194)] = {64,0}, + [I(143,194)] = {64,0}, + [I(144,194)] = {64,0}, + [I(145,194)] = {64,0}, + [I(146,194)] = {64,0}, + [I(147,194)] = {64,0}, + [I(148,194)] = {64,0}, + [I(149,194)] = {64,0}, + [I(150,194)] = {64,0}, + [I(151,194)] = {64,0}, + [I(152,194)] = {64,0}, + [I(153,194)] = {64,0}, + [I(154,194)] = {64,0}, + [I(155,194)] = {64,0}, + [I(156,194)] = {64,0}, + [I(157,194)] = {64,0}, + [I(158,194)] = {64,0}, + [I(159,194)] = {64,0}, + [I(160,194)] = {64,0}, + [I(161,194)] = {64,0}, + [I(162,194)] = {64,0}, + [I(163,194)] = {64,0}, + [I(164,194)] = {64,0}, + [I(165,194)] = {64,0}, + [I(166,194)] = {64,0}, + [I(167,194)] = {64,0}, + [I(168,194)] = {64,0}, + [I(169,194)] = {64,0}, + [I(170,194)] = {64,0}, + [I(171,194)] = {64,0}, + [I(172,194)] = {64,0}, + [I(173,194)] = {64,0}, + [I(174,194)] = {64,0}, + [I(175,194)] = {64,0}, + [I(176,194)] = {64,0}, + [I(177,194)] = {64,0}, + [I(178,194)] = {64,0}, + [I(179,194)] = {64,0}, + [I(180,194)] = {64,0}, + [I(181,194)] = {64,0}, + [I(182,194)] = {64,0}, + [I(183,194)] = {64,0}, + [I(184,194)] = {64,0}, + [I(185,194)] = {64,0}, + [I(186,194)] = {64,0}, + [I(187,194)] = {64,0}, + [I(188,194)] = {64,0}, + [I(189,194)] = {64,0}, + [I(190,194)] = {64,0}, + [I(191,194)] = {64,0}, + [I(192,194)] = {64,0}, + [I(193,194)] = {64,0}, + [I(194,194)] = {64,0}, + [I(195,194)] = {64,0}, + [I(196,194)] = {64,0}, + [I(197,194)] = {64,0}, + [I(198,194)] = {64,0}, + [I(199,194)] = {64,0}, + [I(200,194)] = {64,0}, + [I(201,194)] = {64,0}, + [I(202,194)] = {64,0}, + [I(203,194)] = {64,0}, + [I(204,194)] = {64,0}, + [I(205,194)] = {64,0}, + [I(206,194)] = {64,0}, + [I(207,194)] = {64,0}, + [I(208,194)] = {64,0}, + [I(209,194)] = {64,0}, + [I(210,194)] = {64,0}, + [I(211,194)] = {64,0}, + [I(212,194)] = {64,0}, + [I(213,194)] = {64,0}, + [I(214,194)] = {64,0}, + [I(215,194)] = {64,0}, + [I(216,194)] = {64,0}, + [I(217,194)] = {64,0}, + [I(218,194)] = {64,0}, + [I(219,194)] = {64,0}, + [I(220,194)] = {64,0}, + [I(221,194)] = {64,0}, + [I(222,194)] = {64,0}, + [I(223,194)] = {64,0}, + [I(224,194)] = {64,0}, + [I(225,194)] = {64,0}, + [I(226,194)] = {64,0}, + [I(227,194)] = {64,0}, + [I(228,194)] = {64,0}, + [I(229,194)] = {64,0}, + [I(230,194)] = {64,0}, + [I(231,194)] = {64,0}, + [I(232,194)] = {64,0}, + [I(233,194)] = {64,0}, + [I(234,194)] = {64,0}, + [I(235,194)] = {64,0}, + [I(236,194)] = {64,0}, + [I(237,194)] = {64,0}, + [I(238,194)] = {64,0}, + [I(239,194)] = {64,0}, + [I(240,194)] = {64,0}, + [I(241,194)] = {64,0}, + [I(242,194)] = {64,0}, + [I(243,194)] = {64,0}, + [I(244,194)] = {64,0}, + [I(245,194)] = {64,0}, + [I(246,194)] = {64,0}, + [I(247,194)] = {64,0}, + [I(248,194)] = {64,0}, + [I(249,194)] = {64,0}, + [I(250,194)] = {64,0}, + [I(251,194)] = {64,0}, + [I(252,194)] = {64,0}, + [I(253,194)] = {64,0}, + [I(254,194)] = {64,0}, + [I(255,194)] = {64,0}, + [I(0,195)] = {X32,0xFFC7FFF1}, + [I(1,195)] = {64,0}, + [I(2,195)] = {64,0}, + [I(3,195)] = {64,0}, + [I(4,195)] = {64,0}, + [I(5,195)] = {64,0}, + [I(6,195)] = {64,0}, + [I(7,195)] = {64,0}, + [I(8,195)] = {64,0}, + [I(9,195)] = {64,0}, + [I(10,195)] = {64,0}, + [I(11,195)] = {64,0}, + [I(12,195)] = {64,0}, + [I(13,195)] = {64,0}, + [I(14,195)] = {64,0}, + [I(15,195)] = {64,0}, + [I(16,195)] = {64,0}, + [I(17,195)] = {64,0}, + [I(18,195)] = {64,0}, + [I(19,195)] = {64,0}, + [I(20,195)] = {64,0}, + [I(21,195)] = {64,0}, + [I(22,195)] = {64,0}, + [I(23,195)] = {64,0}, + [I(24,195)] = {64,0}, + [I(25,195)] = {64,0}, + [I(26,195)] = {64,0}, + [I(27,195)] = {64,0}, + [I(28,195)] = {64,0}, + [I(29,195)] = {64,0}, + [I(30,195)] = {64,0}, + [I(31,195)] = {64,0}, + [I(32,195)] = {25,0xA7FFF1}, + [I(33,195)] = {29,0x1FC7FFF1}, + [I(34,195)] = {29,0x1FCFFFF1}, + [I(35,195)] = {31,0x7FD7FFF1}, + [I(36,195)] = {X32,0xFFCFFFF1}, + [I(37,195)] = {25,0xAFFFF1}, + [I(38,195)] = {27,0x7C7FFF1}, + [I(39,195)] = {30,0x3FD7FFF1}, + [I(40,195)] = {29,0x1FD7FFF1}, + [I(41,195)] = {29,0x1FDFFFF1}, + [I(42,195)] = {27,0x7CFFFF1}, + [I(43,195)] = {30,0x3FDFFFF1}, + [I(44,195)] = {27,0x7D7FFF1}, + [I(45,195)] = {25,0xB7FFF1}, + [I(46,195)] = {25,0xBFFFF1}, + [I(47,195)] = {25,0xC7FFF1}, + [I(48,195)] = {24,0x7FFF1}, + [I(49,195)] = {24,0xFFFF1}, + [I(50,195)] = {24,0x17FFF1}, + [I(51,195)] = {25,0xCFFFF1}, + [I(52,195)] = {25,0xD7FFF1}, + [I(53,195)] = {25,0xDFFFF1}, + [I(54,195)] = {25,0xE7FFF1}, + [I(55,195)] = {25,0xEFFFF1}, + [I(56,195)] = {25,0xF7FFF1}, + [I(57,195)] = {25,0xFFFFF1}, + [I(58,195)] = {26,0x2E7FFF1}, + [I(59,195)] = {27,0x7DFFFF1}, + [I(60,195)] = {64,0}, + [I(61,195)] = {25,0x107FFF1}, + [I(62,195)] = {31,0x7FDFFFF1}, + [I(63,195)] = {29,0x1FE7FFF1}, + [I(64,195)] = {X32,0xFFD7FFF1}, + [I(65,195)] = {25,0x10FFFF1}, + [I(66,195)] = {26,0x2EFFFF1}, + [I(67,195)] = {26,0x2F7FFF1}, + [I(68,195)] = {26,0x2FFFFF1}, + [I(69,195)] = {26,0x307FFF1}, + [I(70,195)] = {26,0x30FFFF1}, + [I(71,195)] = {26,0x317FFF1}, + [I(72,195)] = {26,0x31FFFF1}, + [I(73,195)] = {26,0x327FFF1}, + [I(74,195)] = {26,0x32FFFF1}, + [I(75,195)] = {26,0x337FFF1}, + [I(76,195)] = {26,0x33FFFF1}, + [I(77,195)] = {26,0x347FFF1}, + [I(78,195)] = {26,0x34FFFF1}, + [I(79,195)] = {26,0x357FFF1}, + [I(80,195)] = {26,0x35FFFF1}, + [I(81,195)] = {26,0x367FFF1}, + [I(82,195)] = {26,0x36FFFF1}, + [I(83,195)] = {26,0x377FFF1}, + [I(84,195)] = {26,0x37FFFF1}, + [I(85,195)] = {26,0x387FFF1}, + [I(86,195)] = {26,0x38FFFF1}, + [I(87,195)] = {26,0x397FFF1}, + [I(88,195)] = {27,0x7E7FFF1}, + [I(89,195)] = {26,0x39FFFF1}, + [I(90,195)] = {27,0x7EFFFF1}, + [I(91,195)] = {X32,0xFFDFFFF1}, + [I(92,195)] = {64,0}, + [I(93,195)] = {X32,0xFFE7FFF1}, + [I(94,195)] = {64,0}, + [I(95,195)] = {25,0x117FFF1}, + [I(96,195)] = {64,0}, + [I(97,195)] = {24,0x1FFFF1}, + [I(98,195)] = {25,0x11FFFF1}, + [I(99,195)] = {24,0x27FFF1}, + [I(100,195)] = {25,0x127FFF1}, + [I(101,195)] = {24,0x2FFFF1}, + [I(102,195)] = {25,0x12FFFF1}, + [I(103,195)] = {25,0x137FFF1}, + [I(104,195)] = {25,0x13FFFF1}, + [I(105,195)] = {24,0x37FFF1}, + [I(106,195)] = {26,0x3A7FFF1}, + [I(107,195)] = {26,0x3AFFFF1}, + [I(108,195)] = {25,0x147FFF1}, + [I(109,195)] = {25,0x14FFFF1}, + [I(110,195)] = {25,0x157FFF1}, + [I(111,195)] = {24,0x3FFFF1}, + [I(112,195)] = {25,0x15FFFF1}, + [I(113,195)] = {26,0x3B7FFF1}, + [I(114,195)] = {25,0x167FFF1}, + [I(115,195)] = {24,0x47FFF1}, + [I(116,195)] = {24,0x4FFFF1}, + [I(117,195)] = {25,0x16FFFF1}, + [I(118,195)] = {26,0x3BFFFF1}, + [I(119,195)] = {26,0x3C7FFF1}, + [I(120,195)] = {26,0x3CFFFF1}, + [I(121,195)] = {26,0x3D7FFF1}, + [I(122,195)] = {26,0x3DFFFF1}, + [I(123,195)] = {64,0}, + [I(124,195)] = {30,0x3FE7FFF1}, + [I(125,195)] = {64,0}, + [I(126,195)] = {X32,0xFFEFFFF1}, + [I(127,195)] = {64,0}, + [I(128,195)] = {64,0}, + [I(129,195)] = {64,0}, + [I(130,195)] = {64,0}, + [I(131,195)] = {64,0}, + [I(132,195)] = {64,0}, + [I(133,195)] = {64,0}, + [I(134,195)] = {64,0}, + [I(135,195)] = {64,0}, + [I(136,195)] = {64,0}, + [I(137,195)] = {64,0}, + [I(138,195)] = {64,0}, + [I(139,195)] = {64,0}, + [I(140,195)] = {64,0}, + [I(141,195)] = {64,0}, + [I(142,195)] = {64,0}, + [I(143,195)] = {64,0}, + [I(144,195)] = {64,0}, + [I(145,195)] = {64,0}, + [I(146,195)] = {64,0}, + [I(147,195)] = {64,0}, + [I(148,195)] = {64,0}, + [I(149,195)] = {64,0}, + [I(150,195)] = {64,0}, + [I(151,195)] = {64,0}, + [I(152,195)] = {64,0}, + [I(153,195)] = {64,0}, + [I(154,195)] = {64,0}, + [I(155,195)] = {64,0}, + [I(156,195)] = {64,0}, + [I(157,195)] = {64,0}, + [I(158,195)] = {64,0}, + [I(159,195)] = {64,0}, + [I(160,195)] = {64,0}, + [I(161,195)] = {64,0}, + [I(162,195)] = {64,0}, + [I(163,195)] = {64,0}, + [I(164,195)] = {64,0}, + [I(165,195)] = {64,0}, + [I(166,195)] = {64,0}, + [I(167,195)] = {64,0}, + [I(168,195)] = {64,0}, + [I(169,195)] = {64,0}, + [I(170,195)] = {64,0}, + [I(171,195)] = {64,0}, + [I(172,195)] = {64,0}, + [I(173,195)] = {64,0}, + [I(174,195)] = {64,0}, + [I(175,195)] = {64,0}, + [I(176,195)] = {64,0}, + [I(177,195)] = {64,0}, + [I(178,195)] = {64,0}, + [I(179,195)] = {64,0}, + [I(180,195)] = {64,0}, + [I(181,195)] = {64,0}, + [I(182,195)] = {64,0}, + [I(183,195)] = {64,0}, + [I(184,195)] = {64,0}, + [I(185,195)] = {64,0}, + [I(186,195)] = {64,0}, + [I(187,195)] = {64,0}, + [I(188,195)] = {64,0}, + [I(189,195)] = {64,0}, + [I(190,195)] = {64,0}, + [I(191,195)] = {64,0}, + [I(192,195)] = {64,0}, + [I(193,195)] = {64,0}, + [I(194,195)] = {64,0}, + [I(195,195)] = {64,0}, + [I(196,195)] = {64,0}, + [I(197,195)] = {64,0}, + [I(198,195)] = {64,0}, + [I(199,195)] = {64,0}, + [I(200,195)] = {64,0}, + [I(201,195)] = {64,0}, + [I(202,195)] = {64,0}, + [I(203,195)] = {64,0}, + [I(204,195)] = {64,0}, + [I(205,195)] = {64,0}, + [I(206,195)] = {64,0}, + [I(207,195)] = {64,0}, + [I(208,195)] = {64,0}, + [I(209,195)] = {64,0}, + [I(210,195)] = {64,0}, + [I(211,195)] = {64,0}, + [I(212,195)] = {64,0}, + [I(213,195)] = {64,0}, + [I(214,195)] = {64,0}, + [I(215,195)] = {64,0}, + [I(216,195)] = {64,0}, + [I(217,195)] = {64,0}, + [I(218,195)] = {64,0}, + [I(219,195)] = {64,0}, + [I(220,195)] = {64,0}, + [I(221,195)] = {64,0}, + [I(222,195)] = {64,0}, + [I(223,195)] = {64,0}, + [I(224,195)] = {64,0}, + [I(225,195)] = {64,0}, + [I(226,195)] = {64,0}, + [I(227,195)] = {64,0}, + [I(228,195)] = {64,0}, + [I(229,195)] = {64,0}, + [I(230,195)] = {64,0}, + [I(231,195)] = {64,0}, + [I(232,195)] = {64,0}, + [I(233,195)] = {64,0}, + [I(234,195)] = {64,0}, + [I(235,195)] = {64,0}, + [I(236,195)] = {64,0}, + [I(237,195)] = {64,0}, + [I(238,195)] = {64,0}, + [I(239,195)] = {64,0}, + [I(240,195)] = {64,0}, + [I(241,195)] = {64,0}, + [I(242,195)] = {64,0}, + [I(243,195)] = {64,0}, + [I(244,195)] = {64,0}, + [I(245,195)] = {64,0}, + [I(246,195)] = {64,0}, + [I(247,195)] = {64,0}, + [I(248,195)] = {64,0}, + [I(249,195)] = {64,0}, + [I(250,195)] = {64,0}, + [I(251,195)] = {64,0}, + [I(252,195)] = {64,0}, + [I(253,195)] = {64,0}, + [I(254,195)] = {64,0}, + [I(255,195)] = {64,0}, + [I(0,196)] = {64,0}, + [I(1,196)] = {64,0}, + [I(2,196)] = {64,0}, + [I(3,196)] = {64,0}, + [I(4,196)] = {64,0}, + [I(5,196)] = {64,0}, + [I(6,196)] = {64,0}, + [I(7,196)] = {64,0}, + [I(8,196)] = {64,0}, + [I(9,196)] = {64,0}, + [I(10,196)] = {64,0}, + [I(11,196)] = {64,0}, + [I(12,196)] = {64,0}, + [I(13,196)] = {64,0}, + [I(14,196)] = {64,0}, + [I(15,196)] = {64,0}, + [I(16,196)] = {64,0}, + [I(17,196)] = {64,0}, + [I(18,196)] = {64,0}, + [I(19,196)] = {64,0}, + [I(20,196)] = {64,0}, + [I(21,196)] = {64,0}, + [I(22,196)] = {64,0}, + [I(23,196)] = {64,0}, + [I(24,196)] = {64,0}, + [I(25,196)] = {64,0}, + [I(26,196)] = {64,0}, + [I(27,196)] = {64,0}, + [I(28,196)] = {64,0}, + [I(29,196)] = {64,0}, + [I(30,196)] = {64,0}, + [I(31,196)] = {64,0}, + [I(32,196)] = {28,0x53FFFE7}, + [I(33,196)] = {X32,0xFE3FFFE7}, + [I(34,196)] = {X32,0xFE7FFFE7}, + [I(35,196)] = {64,0}, + [I(36,196)] = {64,0}, + [I(37,196)] = {28,0x57FFFE7}, + [I(38,196)] = {30,0x3E3FFFE7}, + [I(39,196)] = {64,0}, + [I(40,196)] = {X32,0xFEBFFFE7}, + [I(41,196)] = {X32,0xFEFFFFE7}, + [I(42,196)] = {30,0x3E7FFFE7}, + [I(43,196)] = {64,0}, + [I(44,196)] = {30,0x3EBFFFE7}, + [I(45,196)] = {28,0x5BFFFE7}, + [I(46,196)] = {28,0x5FFFFE7}, + [I(47,196)] = {28,0x63FFFE7}, + [I(48,196)] = {27,0x3FFFE7}, + [I(49,196)] = {27,0x7FFFE7}, + [I(50,196)] = {27,0xBFFFE7}, + [I(51,196)] = {28,0x67FFFE7}, + [I(52,196)] = {28,0x6BFFFE7}, + [I(53,196)] = {28,0x6FFFFE7}, + [I(54,196)] = {28,0x73FFFE7}, + [I(55,196)] = {28,0x77FFFE7}, + [I(56,196)] = {28,0x7BFFFE7}, + [I(57,196)] = {28,0x7FFFFE7}, + [I(58,196)] = {29,0x173FFFE7}, + [I(59,196)] = {30,0x3EFFFFE7}, + [I(60,196)] = {64,0}, + [I(61,196)] = {28,0x83FFFE7}, + [I(62,196)] = {64,0}, + [I(63,196)] = {X32,0xFF3FFFE7}, + [I(64,196)] = {64,0}, + [I(65,196)] = {28,0x87FFFE7}, + [I(66,196)] = {29,0x177FFFE7}, + [I(67,196)] = {29,0x17BFFFE7}, + [I(68,196)] = {29,0x17FFFFE7}, + [I(69,196)] = {29,0x183FFFE7}, + [I(70,196)] = {29,0x187FFFE7}, + [I(71,196)] = {29,0x18BFFFE7}, + [I(72,196)] = {29,0x18FFFFE7}, + [I(73,196)] = {29,0x193FFFE7}, + [I(74,196)] = {29,0x197FFFE7}, + [I(75,196)] = {29,0x19BFFFE7}, + [I(76,196)] = {29,0x19FFFFE7}, + [I(77,196)] = {29,0x1A3FFFE7}, + [I(78,196)] = {29,0x1A7FFFE7}, + [I(79,196)] = {29,0x1ABFFFE7}, + [I(80,196)] = {29,0x1AFFFFE7}, + [I(81,196)] = {29,0x1B3FFFE7}, + [I(82,196)] = {29,0x1B7FFFE7}, + [I(83,196)] = {29,0x1BBFFFE7}, + [I(84,196)] = {29,0x1BFFFFE7}, + [I(85,196)] = {29,0x1C3FFFE7}, + [I(86,196)] = {29,0x1C7FFFE7}, + [I(87,196)] = {29,0x1CBFFFE7}, + [I(88,196)] = {30,0x3F3FFFE7}, + [I(89,196)] = {29,0x1CFFFFE7}, + [I(90,196)] = {30,0x3F7FFFE7}, + [I(91,196)] = {64,0}, + [I(92,196)] = {64,0}, + [I(93,196)] = {64,0}, + [I(94,196)] = {64,0}, + [I(95,196)] = {28,0x8BFFFE7}, + [I(96,196)] = {64,0}, + [I(97,196)] = {27,0xFFFFE7}, + [I(98,196)] = {28,0x8FFFFE7}, + [I(99,196)] = {27,0x13FFFE7}, + [I(100,196)] = {28,0x93FFFE7}, + [I(101,196)] = {27,0x17FFFE7}, + [I(102,196)] = {28,0x97FFFE7}, + [I(103,196)] = {28,0x9BFFFE7}, + [I(104,196)] = {28,0x9FFFFE7}, + [I(105,196)] = {27,0x1BFFFE7}, + [I(106,196)] = {29,0x1D3FFFE7}, + [I(107,196)] = {29,0x1D7FFFE7}, + [I(108,196)] = {28,0xA3FFFE7}, + [I(109,196)] = {28,0xA7FFFE7}, + [I(110,196)] = {28,0xABFFFE7}, + [I(111,196)] = {27,0x1FFFFE7}, + [I(112,196)] = {28,0xAFFFFE7}, + [I(113,196)] = {29,0x1DBFFFE7}, + [I(114,196)] = {28,0xB3FFFE7}, + [I(115,196)] = {27,0x23FFFE7}, + [I(116,196)] = {27,0x27FFFE7}, + [I(117,196)] = {28,0xB7FFFE7}, + [I(118,196)] = {29,0x1DFFFFE7}, + [I(119,196)] = {29,0x1E3FFFE7}, + [I(120,196)] = {29,0x1E7FFFE7}, + [I(121,196)] = {29,0x1EBFFFE7}, + [I(122,196)] = {29,0x1EFFFFE7}, + [I(123,196)] = {64,0}, + [I(124,196)] = {64,0}, + [I(125,196)] = {64,0}, + [I(126,196)] = {64,0}, + [I(127,196)] = {64,0}, + [I(128,196)] = {64,0}, + [I(129,196)] = {64,0}, + [I(130,196)] = {64,0}, + [I(131,196)] = {64,0}, + [I(132,196)] = {64,0}, + [I(133,196)] = {64,0}, + [I(134,196)] = {64,0}, + [I(135,196)] = {64,0}, + [I(136,196)] = {64,0}, + [I(137,196)] = {64,0}, + [I(138,196)] = {64,0}, + [I(139,196)] = {64,0}, + [I(140,196)] = {64,0}, + [I(141,196)] = {64,0}, + [I(142,196)] = {64,0}, + [I(143,196)] = {64,0}, + [I(144,196)] = {64,0}, + [I(145,196)] = {64,0}, + [I(146,196)] = {64,0}, + [I(147,196)] = {64,0}, + [I(148,196)] = {64,0}, + [I(149,196)] = {64,0}, + [I(150,196)] = {64,0}, + [I(151,196)] = {64,0}, + [I(152,196)] = {64,0}, + [I(153,196)] = {64,0}, + [I(154,196)] = {64,0}, + [I(155,196)] = {64,0}, + [I(156,196)] = {64,0}, + [I(157,196)] = {64,0}, + [I(158,196)] = {64,0}, + [I(159,196)] = {64,0}, + [I(160,196)] = {64,0}, + [I(161,196)] = {64,0}, + [I(162,196)] = {64,0}, + [I(163,196)] = {64,0}, + [I(164,196)] = {64,0}, + [I(165,196)] = {64,0}, + [I(166,196)] = {64,0}, + [I(167,196)] = {64,0}, + [I(168,196)] = {64,0}, + [I(169,196)] = {64,0}, + [I(170,196)] = {64,0}, + [I(171,196)] = {64,0}, + [I(172,196)] = {64,0}, + [I(173,196)] = {64,0}, + [I(174,196)] = {64,0}, + [I(175,196)] = {64,0}, + [I(176,196)] = {64,0}, + [I(177,196)] = {64,0}, + [I(178,196)] = {64,0}, + [I(179,196)] = {64,0}, + [I(180,196)] = {64,0}, + [I(181,196)] = {64,0}, + [I(182,196)] = {64,0}, + [I(183,196)] = {64,0}, + [I(184,196)] = {64,0}, + [I(185,196)] = {64,0}, + [I(186,196)] = {64,0}, + [I(187,196)] = {64,0}, + [I(188,196)] = {64,0}, + [I(189,196)] = {64,0}, + [I(190,196)] = {64,0}, + [I(191,196)] = {64,0}, + [I(192,196)] = {64,0}, + [I(193,196)] = {64,0}, + [I(194,196)] = {64,0}, + [I(195,196)] = {64,0}, + [I(196,196)] = {64,0}, + [I(197,196)] = {64,0}, + [I(198,196)] = {64,0}, + [I(199,196)] = {64,0}, + [I(200,196)] = {64,0}, + [I(201,196)] = {64,0}, + [I(202,196)] = {64,0}, + [I(203,196)] = {64,0}, + [I(204,196)] = {64,0}, + [I(205,196)] = {64,0}, + [I(206,196)] = {64,0}, + [I(207,196)] = {64,0}, + [I(208,196)] = {64,0}, + [I(209,196)] = {64,0}, + [I(210,196)] = {64,0}, + [I(211,196)] = {64,0}, + [I(212,196)] = {64,0}, + [I(213,196)] = {64,0}, + [I(214,196)] = {64,0}, + [I(215,196)] = {64,0}, + [I(216,196)] = {64,0}, + [I(217,196)] = {64,0}, + [I(218,196)] = {64,0}, + [I(219,196)] = {64,0}, + [I(220,196)] = {64,0}, + [I(221,196)] = {64,0}, + [I(222,196)] = {64,0}, + [I(223,196)] = {64,0}, + [I(224,196)] = {64,0}, + [I(225,196)] = {64,0}, + [I(226,196)] = {64,0}, + [I(227,196)] = {64,0}, + [I(228,196)] = {64,0}, + [I(229,196)] = {64,0}, + [I(230,196)] = {64,0}, + [I(231,196)] = {64,0}, + [I(232,196)] = {64,0}, + [I(233,196)] = {64,0}, + [I(234,196)] = {64,0}, + [I(235,196)] = {64,0}, + [I(236,196)] = {64,0}, + [I(237,196)] = {64,0}, + [I(238,196)] = {64,0}, + [I(239,196)] = {64,0}, + [I(240,196)] = {64,0}, + [I(241,196)] = {64,0}, + [I(242,196)] = {64,0}, + [I(243,196)] = {64,0}, + [I(244,196)] = {64,0}, + [I(245,196)] = {64,0}, + [I(246,196)] = {64,0}, + [I(247,196)] = {64,0}, + [I(248,196)] = {64,0}, + [I(249,196)] = {64,0}, + [I(250,196)] = {64,0}, + [I(251,196)] = {64,0}, + [I(252,196)] = {64,0}, + [I(253,196)] = {64,0}, + [I(254,196)] = {64,0}, + [I(255,196)] = {64,0}, + [I(0,197)] = {64,0}, + [I(1,197)] = {64,0}, + [I(2,197)] = {64,0}, + [I(3,197)] = {64,0}, + [I(4,197)] = {64,0}, + [I(5,197)] = {64,0}, + [I(6,197)] = {64,0}, + [I(7,197)] = {64,0}, + [I(8,197)] = {64,0}, + [I(9,197)] = {64,0}, + [I(10,197)] = {64,0}, + [I(11,197)] = {64,0}, + [I(12,197)] = {64,0}, + [I(13,197)] = {64,0}, + [I(14,197)] = {64,0}, + [I(15,197)] = {64,0}, + [I(16,197)] = {64,0}, + [I(17,197)] = {64,0}, + [I(18,197)] = {64,0}, + [I(19,197)] = {64,0}, + [I(20,197)] = {64,0}, + [I(21,197)] = {64,0}, + [I(22,197)] = {64,0}, + [I(23,197)] = {64,0}, + [I(24,197)] = {64,0}, + [I(25,197)] = {64,0}, + [I(26,197)] = {64,0}, + [I(27,197)] = {64,0}, + [I(28,197)] = {64,0}, + [I(29,197)] = {64,0}, + [I(30,197)] = {64,0}, + [I(31,197)] = {64,0}, + [I(32,197)] = {29,0xA7FFFF2}, + [I(33,197)] = {64,0}, + [I(34,197)] = {64,0}, + [I(35,197)] = {64,0}, + [I(36,197)] = {64,0}, + [I(37,197)] = {29,0xAFFFFF2}, + [I(38,197)] = {31,0x7C7FFFF2}, + [I(39,197)] = {64,0}, + [I(40,197)] = {64,0}, + [I(41,197)] = {64,0}, + [I(42,197)] = {31,0x7CFFFFF2}, + [I(43,197)] = {64,0}, + [I(44,197)] = {31,0x7D7FFFF2}, + [I(45,197)] = {29,0xB7FFFF2}, + [I(46,197)] = {29,0xBFFFFF2}, + [I(47,197)] = {29,0xC7FFFF2}, + [I(48,197)] = {28,0x7FFFF2}, + [I(49,197)] = {28,0xFFFFF2}, + [I(50,197)] = {28,0x17FFFF2}, + [I(51,197)] = {29,0xCFFFFF2}, + [I(52,197)] = {29,0xD7FFFF2}, + [I(53,197)] = {29,0xDFFFFF2}, + [I(54,197)] = {29,0xE7FFFF2}, + [I(55,197)] = {29,0xEFFFFF2}, + [I(56,197)] = {29,0xF7FFFF2}, + [I(57,197)] = {29,0xFFFFFF2}, + [I(58,197)] = {30,0x2E7FFFF2}, + [I(59,197)] = {31,0x7DFFFFF2}, + [I(60,197)] = {64,0}, + [I(61,197)] = {29,0x107FFFF2}, + [I(62,197)] = {64,0}, + [I(63,197)] = {64,0}, + [I(64,197)] = {64,0}, + [I(65,197)] = {29,0x10FFFFF2}, + [I(66,197)] = {30,0x2EFFFFF2}, + [I(67,197)] = {30,0x2F7FFFF2}, + [I(68,197)] = {30,0x2FFFFFF2}, + [I(69,197)] = {30,0x307FFFF2}, + [I(70,197)] = {30,0x30FFFFF2}, + [I(71,197)] = {30,0x317FFFF2}, + [I(72,197)] = {30,0x31FFFFF2}, + [I(73,197)] = {30,0x327FFFF2}, + [I(74,197)] = {30,0x32FFFFF2}, + [I(75,197)] = {30,0x337FFFF2}, + [I(76,197)] = {30,0x33FFFFF2}, + [I(77,197)] = {30,0x347FFFF2}, + [I(78,197)] = {30,0x34FFFFF2}, + [I(79,197)] = {30,0x357FFFF2}, + [I(80,197)] = {30,0x35FFFFF2}, + [I(81,197)] = {30,0x367FFFF2}, + [I(82,197)] = {30,0x36FFFFF2}, + [I(83,197)] = {30,0x377FFFF2}, + [I(84,197)] = {30,0x37FFFFF2}, + [I(85,197)] = {30,0x387FFFF2}, + [I(86,197)] = {30,0x38FFFFF2}, + [I(87,197)] = {30,0x397FFFF2}, + [I(88,197)] = {31,0x7E7FFFF2}, + [I(89,197)] = {30,0x39FFFFF2}, + [I(90,197)] = {31,0x7EFFFFF2}, + [I(91,197)] = {64,0}, + [I(92,197)] = {64,0}, + [I(93,197)] = {64,0}, + [I(94,197)] = {64,0}, + [I(95,197)] = {29,0x117FFFF2}, + [I(96,197)] = {64,0}, + [I(97,197)] = {28,0x1FFFFF2}, + [I(98,197)] = {29,0x11FFFFF2}, + [I(99,197)] = {28,0x27FFFF2}, + [I(100,197)] = {29,0x127FFFF2}, + [I(101,197)] = {28,0x2FFFFF2}, + [I(102,197)] = {29,0x12FFFFF2}, + [I(103,197)] = {29,0x137FFFF2}, + [I(104,197)] = {29,0x13FFFFF2}, + [I(105,197)] = {28,0x37FFFF2}, + [I(106,197)] = {30,0x3A7FFFF2}, + [I(107,197)] = {30,0x3AFFFFF2}, + [I(108,197)] = {29,0x147FFFF2}, + [I(109,197)] = {29,0x14FFFFF2}, + [I(110,197)] = {29,0x157FFFF2}, + [I(111,197)] = {28,0x3FFFFF2}, + [I(112,197)] = {29,0x15FFFFF2}, + [I(113,197)] = {30,0x3B7FFFF2}, + [I(114,197)] = {29,0x167FFFF2}, + [I(115,197)] = {28,0x47FFFF2}, + [I(116,197)] = {28,0x4FFFFF2}, + [I(117,197)] = {29,0x16FFFFF2}, + [I(118,197)] = {30,0x3BFFFFF2}, + [I(119,197)] = {30,0x3C7FFFF2}, + [I(120,197)] = {30,0x3CFFFFF2}, + [I(121,197)] = {30,0x3D7FFFF2}, + [I(122,197)] = {30,0x3DFFFFF2}, + [I(123,197)] = {64,0}, + [I(124,197)] = {64,0}, + [I(125,197)] = {64,0}, + [I(126,197)] = {64,0}, + [I(127,197)] = {64,0}, + [I(128,197)] = {64,0}, + [I(129,197)] = {64,0}, + [I(130,197)] = {64,0}, + [I(131,197)] = {64,0}, + [I(132,197)] = {64,0}, + [I(133,197)] = {64,0}, + [I(134,197)] = {64,0}, + [I(135,197)] = {64,0}, + [I(136,197)] = {64,0}, + [I(137,197)] = {64,0}, + [I(138,197)] = {64,0}, + [I(139,197)] = {64,0}, + [I(140,197)] = {64,0}, + [I(141,197)] = {64,0}, + [I(142,197)] = {64,0}, + [I(143,197)] = {64,0}, + [I(144,197)] = {64,0}, + [I(145,197)] = {64,0}, + [I(146,197)] = {64,0}, + [I(147,197)] = {64,0}, + [I(148,197)] = {64,0}, + [I(149,197)] = {64,0}, + [I(150,197)] = {64,0}, + [I(151,197)] = {64,0}, + [I(152,197)] = {64,0}, + [I(153,197)] = {64,0}, + [I(154,197)] = {64,0}, + [I(155,197)] = {64,0}, + [I(156,197)] = {64,0}, + [I(157,197)] = {64,0}, + [I(158,197)] = {64,0}, + [I(159,197)] = {64,0}, + [I(160,197)] = {64,0}, + [I(161,197)] = {64,0}, + [I(162,197)] = {64,0}, + [I(163,197)] = {64,0}, + [I(164,197)] = {64,0}, + [I(165,197)] = {64,0}, + [I(166,197)] = {64,0}, + [I(167,197)] = {64,0}, + [I(168,197)] = {64,0}, + [I(169,197)] = {64,0}, + [I(170,197)] = {64,0}, + [I(171,197)] = {64,0}, + [I(172,197)] = {64,0}, + [I(173,197)] = {64,0}, + [I(174,197)] = {64,0}, + [I(175,197)] = {64,0}, + [I(176,197)] = {64,0}, + [I(177,197)] = {64,0}, + [I(178,197)] = {64,0}, + [I(179,197)] = {64,0}, + [I(180,197)] = {64,0}, + [I(181,197)] = {64,0}, + [I(182,197)] = {64,0}, + [I(183,197)] = {64,0}, + [I(184,197)] = {64,0}, + [I(185,197)] = {64,0}, + [I(186,197)] = {64,0}, + [I(187,197)] = {64,0}, + [I(188,197)] = {64,0}, + [I(189,197)] = {64,0}, + [I(190,197)] = {64,0}, + [I(191,197)] = {64,0}, + [I(192,197)] = {64,0}, + [I(193,197)] = {64,0}, + [I(194,197)] = {64,0}, + [I(195,197)] = {64,0}, + [I(196,197)] = {64,0}, + [I(197,197)] = {64,0}, + [I(198,197)] = {64,0}, + [I(199,197)] = {64,0}, + [I(200,197)] = {64,0}, + [I(201,197)] = {64,0}, + [I(202,197)] = {64,0}, + [I(203,197)] = {64,0}, + [I(204,197)] = {64,0}, + [I(205,197)] = {64,0}, + [I(206,197)] = {64,0}, + [I(207,197)] = {64,0}, + [I(208,197)] = {64,0}, + [I(209,197)] = {64,0}, + [I(210,197)] = {64,0}, + [I(211,197)] = {64,0}, + [I(212,197)] = {64,0}, + [I(213,197)] = {64,0}, + [I(214,197)] = {64,0}, + [I(215,197)] = {64,0}, + [I(216,197)] = {64,0}, + [I(217,197)] = {64,0}, + [I(218,197)] = {64,0}, + [I(219,197)] = {64,0}, + [I(220,197)] = {64,0}, + [I(221,197)] = {64,0}, + [I(222,197)] = {64,0}, + [I(223,197)] = {64,0}, + [I(224,197)] = {64,0}, + [I(225,197)] = {64,0}, + [I(226,197)] = {64,0}, + [I(227,197)] = {64,0}, + [I(228,197)] = {64,0}, + [I(229,197)] = {64,0}, + [I(230,197)] = {64,0}, + [I(231,197)] = {64,0}, + [I(232,197)] = {64,0}, + [I(233,197)] = {64,0}, + [I(234,197)] = {64,0}, + [I(235,197)] = {64,0}, + [I(236,197)] = {64,0}, + [I(237,197)] = {64,0}, + [I(238,197)] = {64,0}, + [I(239,197)] = {64,0}, + [I(240,197)] = {64,0}, + [I(241,197)] = {64,0}, + [I(242,197)] = {64,0}, + [I(243,197)] = {64,0}, + [I(244,197)] = {64,0}, + [I(245,197)] = {64,0}, + [I(246,197)] = {64,0}, + [I(247,197)] = {64,0}, + [I(248,197)] = {64,0}, + [I(249,197)] = {64,0}, + [I(250,197)] = {64,0}, + [I(251,197)] = {64,0}, + [I(252,197)] = {64,0}, + [I(253,197)] = {64,0}, + [I(254,197)] = {64,0}, + [I(255,197)] = {64,0}, + [I(0,198)] = {64,0}, + [I(1,198)] = {64,0}, + [I(2,198)] = {64,0}, + [I(3,198)] = {64,0}, + [I(4,198)] = {64,0}, + [I(5,198)] = {64,0}, + [I(6,198)] = {64,0}, + [I(7,198)] = {64,0}, + [I(8,198)] = {64,0}, + [I(9,198)] = {64,0}, + [I(10,198)] = {64,0}, + [I(11,198)] = {64,0}, + [I(12,198)] = {64,0}, + [I(13,198)] = {64,0}, + [I(14,198)] = {64,0}, + [I(15,198)] = {64,0}, + [I(16,198)] = {64,0}, + [I(17,198)] = {64,0}, + [I(18,198)] = {64,0}, + [I(19,198)] = {64,0}, + [I(20,198)] = {64,0}, + [I(21,198)] = {64,0}, + [I(22,198)] = {64,0}, + [I(23,198)] = {64,0}, + [I(24,198)] = {64,0}, + [I(25,198)] = {64,0}, + [I(26,198)] = {64,0}, + [I(27,198)] = {64,0}, + [I(28,198)] = {64,0}, + [I(29,198)] = {64,0}, + [I(30,198)] = {64,0}, + [I(31,198)] = {64,0}, + [I(32,198)] = {28,0x53FFFE8}, + [I(33,198)] = {X32,0xFE3FFFE8}, + [I(34,198)] = {X32,0xFE7FFFE8}, + [I(35,198)] = {64,0}, + [I(36,198)] = {64,0}, + [I(37,198)] = {28,0x57FFFE8}, + [I(38,198)] = {30,0x3E3FFFE8}, + [I(39,198)] = {64,0}, + [I(40,198)] = {X32,0xFEBFFFE8}, + [I(41,198)] = {X32,0xFEFFFFE8}, + [I(42,198)] = {30,0x3E7FFFE8}, + [I(43,198)] = {64,0}, + [I(44,198)] = {30,0x3EBFFFE8}, + [I(45,198)] = {28,0x5BFFFE8}, + [I(46,198)] = {28,0x5FFFFE8}, + [I(47,198)] = {28,0x63FFFE8}, + [I(48,198)] = {27,0x3FFFE8}, + [I(49,198)] = {27,0x7FFFE8}, + [I(50,198)] = {27,0xBFFFE8}, + [I(51,198)] = {28,0x67FFFE8}, + [I(52,198)] = {28,0x6BFFFE8}, + [I(53,198)] = {28,0x6FFFFE8}, + [I(54,198)] = {28,0x73FFFE8}, + [I(55,198)] = {28,0x77FFFE8}, + [I(56,198)] = {28,0x7BFFFE8}, + [I(57,198)] = {28,0x7FFFFE8}, + [I(58,198)] = {29,0x173FFFE8}, + [I(59,198)] = {30,0x3EFFFFE8}, + [I(60,198)] = {64,0}, + [I(61,198)] = {28,0x83FFFE8}, + [I(62,198)] = {64,0}, + [I(63,198)] = {X32,0xFF3FFFE8}, + [I(64,198)] = {64,0}, + [I(65,198)] = {28,0x87FFFE8}, + [I(66,198)] = {29,0x177FFFE8}, + [I(67,198)] = {29,0x17BFFFE8}, + [I(68,198)] = {29,0x17FFFFE8}, + [I(69,198)] = {29,0x183FFFE8}, + [I(70,198)] = {29,0x187FFFE8}, + [I(71,198)] = {29,0x18BFFFE8}, + [I(72,198)] = {29,0x18FFFFE8}, + [I(73,198)] = {29,0x193FFFE8}, + [I(74,198)] = {29,0x197FFFE8}, + [I(75,198)] = {29,0x19BFFFE8}, + [I(76,198)] = {29,0x19FFFFE8}, + [I(77,198)] = {29,0x1A3FFFE8}, + [I(78,198)] = {29,0x1A7FFFE8}, + [I(79,198)] = {29,0x1ABFFFE8}, + [I(80,198)] = {29,0x1AFFFFE8}, + [I(81,198)] = {29,0x1B3FFFE8}, + [I(82,198)] = {29,0x1B7FFFE8}, + [I(83,198)] = {29,0x1BBFFFE8}, + [I(84,198)] = {29,0x1BFFFFE8}, + [I(85,198)] = {29,0x1C3FFFE8}, + [I(86,198)] = {29,0x1C7FFFE8}, + [I(87,198)] = {29,0x1CBFFFE8}, + [I(88,198)] = {30,0x3F3FFFE8}, + [I(89,198)] = {29,0x1CFFFFE8}, + [I(90,198)] = {30,0x3F7FFFE8}, + [I(91,198)] = {64,0}, + [I(92,198)] = {64,0}, + [I(93,198)] = {64,0}, + [I(94,198)] = {64,0}, + [I(95,198)] = {28,0x8BFFFE8}, + [I(96,198)] = {64,0}, + [I(97,198)] = {27,0xFFFFE8}, + [I(98,198)] = {28,0x8FFFFE8}, + [I(99,198)] = {27,0x13FFFE8}, + [I(100,198)] = {28,0x93FFFE8}, + [I(101,198)] = {27,0x17FFFE8}, + [I(102,198)] = {28,0x97FFFE8}, + [I(103,198)] = {28,0x9BFFFE8}, + [I(104,198)] = {28,0x9FFFFE8}, + [I(105,198)] = {27,0x1BFFFE8}, + [I(106,198)] = {29,0x1D3FFFE8}, + [I(107,198)] = {29,0x1D7FFFE8}, + [I(108,198)] = {28,0xA3FFFE8}, + [I(109,198)] = {28,0xA7FFFE8}, + [I(110,198)] = {28,0xABFFFE8}, + [I(111,198)] = {27,0x1FFFFE8}, + [I(112,198)] = {28,0xAFFFFE8}, + [I(113,198)] = {29,0x1DBFFFE8}, + [I(114,198)] = {28,0xB3FFFE8}, + [I(115,198)] = {27,0x23FFFE8}, + [I(116,198)] = {27,0x27FFFE8}, + [I(117,198)] = {28,0xB7FFFE8}, + [I(118,198)] = {29,0x1DFFFFE8}, + [I(119,198)] = {29,0x1E3FFFE8}, + [I(120,198)] = {29,0x1E7FFFE8}, + [I(121,198)] = {29,0x1EBFFFE8}, + [I(122,198)] = {29,0x1EFFFFE8}, + [I(123,198)] = {64,0}, + [I(124,198)] = {64,0}, + [I(125,198)] = {64,0}, + [I(126,198)] = {64,0}, + [I(127,198)] = {64,0}, + [I(128,198)] = {64,0}, + [I(129,198)] = {64,0}, + [I(130,198)] = {64,0}, + [I(131,198)] = {64,0}, + [I(132,198)] = {64,0}, + [I(133,198)] = {64,0}, + [I(134,198)] = {64,0}, + [I(135,198)] = {64,0}, + [I(136,198)] = {64,0}, + [I(137,198)] = {64,0}, + [I(138,198)] = {64,0}, + [I(139,198)] = {64,0}, + [I(140,198)] = {64,0}, + [I(141,198)] = {64,0}, + [I(142,198)] = {64,0}, + [I(143,198)] = {64,0}, + [I(144,198)] = {64,0}, + [I(145,198)] = {64,0}, + [I(146,198)] = {64,0}, + [I(147,198)] = {64,0}, + [I(148,198)] = {64,0}, + [I(149,198)] = {64,0}, + [I(150,198)] = {64,0}, + [I(151,198)] = {64,0}, + [I(152,198)] = {64,0}, + [I(153,198)] = {64,0}, + [I(154,198)] = {64,0}, + [I(155,198)] = {64,0}, + [I(156,198)] = {64,0}, + [I(157,198)] = {64,0}, + [I(158,198)] = {64,0}, + [I(159,198)] = {64,0}, + [I(160,198)] = {64,0}, + [I(161,198)] = {64,0}, + [I(162,198)] = {64,0}, + [I(163,198)] = {64,0}, + [I(164,198)] = {64,0}, + [I(165,198)] = {64,0}, + [I(166,198)] = {64,0}, + [I(167,198)] = {64,0}, + [I(168,198)] = {64,0}, + [I(169,198)] = {64,0}, + [I(170,198)] = {64,0}, + [I(171,198)] = {64,0}, + [I(172,198)] = {64,0}, + [I(173,198)] = {64,0}, + [I(174,198)] = {64,0}, + [I(175,198)] = {64,0}, + [I(176,198)] = {64,0}, + [I(177,198)] = {64,0}, + [I(178,198)] = {64,0}, + [I(179,198)] = {64,0}, + [I(180,198)] = {64,0}, + [I(181,198)] = {64,0}, + [I(182,198)] = {64,0}, + [I(183,198)] = {64,0}, + [I(184,198)] = {64,0}, + [I(185,198)] = {64,0}, + [I(186,198)] = {64,0}, + [I(187,198)] = {64,0}, + [I(188,198)] = {64,0}, + [I(189,198)] = {64,0}, + [I(190,198)] = {64,0}, + [I(191,198)] = {64,0}, + [I(192,198)] = {64,0}, + [I(193,198)] = {64,0}, + [I(194,198)] = {64,0}, + [I(195,198)] = {64,0}, + [I(196,198)] = {64,0}, + [I(197,198)] = {64,0}, + [I(198,198)] = {64,0}, + [I(199,198)] = {64,0}, + [I(200,198)] = {64,0}, + [I(201,198)] = {64,0}, + [I(202,198)] = {64,0}, + [I(203,198)] = {64,0}, + [I(204,198)] = {64,0}, + [I(205,198)] = {64,0}, + [I(206,198)] = {64,0}, + [I(207,198)] = {64,0}, + [I(208,198)] = {64,0}, + [I(209,198)] = {64,0}, + [I(210,198)] = {64,0}, + [I(211,198)] = {64,0}, + [I(212,198)] = {64,0}, + [I(213,198)] = {64,0}, + [I(214,198)] = {64,0}, + [I(215,198)] = {64,0}, + [I(216,198)] = {64,0}, + [I(217,198)] = {64,0}, + [I(218,198)] = {64,0}, + [I(219,198)] = {64,0}, + [I(220,198)] = {64,0}, + [I(221,198)] = {64,0}, + [I(222,198)] = {64,0}, + [I(223,198)] = {64,0}, + [I(224,198)] = {64,0}, + [I(225,198)] = {64,0}, + [I(226,198)] = {64,0}, + [I(227,198)] = {64,0}, + [I(228,198)] = {64,0}, + [I(229,198)] = {64,0}, + [I(230,198)] = {64,0}, + [I(231,198)] = {64,0}, + [I(232,198)] = {64,0}, + [I(233,198)] = {64,0}, + [I(234,198)] = {64,0}, + [I(235,198)] = {64,0}, + [I(236,198)] = {64,0}, + [I(237,198)] = {64,0}, + [I(238,198)] = {64,0}, + [I(239,198)] = {64,0}, + [I(240,198)] = {64,0}, + [I(241,198)] = {64,0}, + [I(242,198)] = {64,0}, + [I(243,198)] = {64,0}, + [I(244,198)] = {64,0}, + [I(245,198)] = {64,0}, + [I(246,198)] = {64,0}, + [I(247,198)] = {64,0}, + [I(248,198)] = {64,0}, + [I(249,198)] = {64,0}, + [I(250,198)] = {64,0}, + [I(251,198)] = {64,0}, + [I(252,198)] = {64,0}, + [I(253,198)] = {64,0}, + [I(254,198)] = {64,0}, + [I(255,198)] = {64,0}, + [I(0,199)] = {64,0}, + [I(1,199)] = {64,0}, + [I(2,199)] = {64,0}, + [I(3,199)] = {64,0}, + [I(4,199)] = {64,0}, + [I(5,199)] = {64,0}, + [I(6,199)] = {64,0}, + [I(7,199)] = {64,0}, + [I(8,199)] = {64,0}, + [I(9,199)] = {64,0}, + [I(10,199)] = {64,0}, + [I(11,199)] = {64,0}, + [I(12,199)] = {64,0}, + [I(13,199)] = {64,0}, + [I(14,199)] = {64,0}, + [I(15,199)] = {64,0}, + [I(16,199)] = {64,0}, + [I(17,199)] = {64,0}, + [I(18,199)] = {64,0}, + [I(19,199)] = {64,0}, + [I(20,199)] = {64,0}, + [I(21,199)] = {64,0}, + [I(22,199)] = {64,0}, + [I(23,199)] = {64,0}, + [I(24,199)] = {64,0}, + [I(25,199)] = {64,0}, + [I(26,199)] = {64,0}, + [I(27,199)] = {64,0}, + [I(28,199)] = {64,0}, + [I(29,199)] = {64,0}, + [I(30,199)] = {64,0}, + [I(31,199)] = {64,0}, + [I(32,199)] = {31,0x29FFFFEC}, + [I(33,199)] = {64,0}, + [I(34,199)] = {64,0}, + [I(35,199)] = {64,0}, + [I(36,199)] = {64,0}, + [I(37,199)] = {31,0x2BFFFFEC}, + [I(38,199)] = {64,0}, + [I(39,199)] = {64,0}, + [I(40,199)] = {64,0}, + [I(41,199)] = {64,0}, + [I(42,199)] = {64,0}, + [I(43,199)] = {64,0}, + [I(44,199)] = {64,0}, + [I(45,199)] = {31,0x2DFFFFEC}, + [I(46,199)] = {31,0x2FFFFFEC}, + [I(47,199)] = {31,0x31FFFFEC}, + [I(48,199)] = {30,0x1FFFFEC}, + [I(49,199)] = {30,0x3FFFFEC}, + [I(50,199)] = {30,0x5FFFFEC}, + [I(51,199)] = {31,0x33FFFFEC}, + [I(52,199)] = {31,0x35FFFFEC}, + [I(53,199)] = {31,0x37FFFFEC}, + [I(54,199)] = {31,0x39FFFFEC}, + [I(55,199)] = {31,0x3BFFFFEC}, + [I(56,199)] = {31,0x3DFFFFEC}, + [I(57,199)] = {31,0x3FFFFFEC}, + [I(58,199)] = {X32,0xB9FFFFEC}, + [I(59,199)] = {64,0}, + [I(60,199)] = {64,0}, + [I(61,199)] = {31,0x41FFFFEC}, + [I(62,199)] = {64,0}, + [I(63,199)] = {64,0}, + [I(64,199)] = {64,0}, + [I(65,199)] = {31,0x43FFFFEC}, + [I(66,199)] = {X32,0xBBFFFFEC}, + [I(67,199)] = {X32,0xBDFFFFEC}, + [I(68,199)] = {X32,0xBFFFFFEC}, + [I(69,199)] = {X32,0xC1FFFFEC}, + [I(70,199)] = {X32,0xC3FFFFEC}, + [I(71,199)] = {X32,0xC5FFFFEC}, + [I(72,199)] = {X32,0xC7FFFFEC}, + [I(73,199)] = {X32,0xC9FFFFEC}, + [I(74,199)] = {X32,0xCBFFFFEC}, + [I(75,199)] = {X32,0xCDFFFFEC}, + [I(76,199)] = {X32,0xCFFFFFEC}, + [I(77,199)] = {X32,0xD1FFFFEC}, + [I(78,199)] = {X32,0xD3FFFFEC}, + [I(79,199)] = {X32,0xD5FFFFEC}, + [I(80,199)] = {X32,0xD7FFFFEC}, + [I(81,199)] = {X32,0xD9FFFFEC}, + [I(82,199)] = {X32,0xDBFFFFEC}, + [I(83,199)] = {X32,0xDDFFFFEC}, + [I(84,199)] = {X32,0xDFFFFFEC}, + [I(85,199)] = {X32,0xE1FFFFEC}, + [I(86,199)] = {X32,0xE3FFFFEC}, + [I(87,199)] = {X32,0xE5FFFFEC}, + [I(88,199)] = {64,0}, + [I(89,199)] = {X32,0xE7FFFFEC}, + [I(90,199)] = {64,0}, + [I(91,199)] = {64,0}, + [I(92,199)] = {64,0}, + [I(93,199)] = {64,0}, + [I(94,199)] = {64,0}, + [I(95,199)] = {31,0x45FFFFEC}, + [I(96,199)] = {64,0}, + [I(97,199)] = {30,0x7FFFFEC}, + [I(98,199)] = {31,0x47FFFFEC}, + [I(99,199)] = {30,0x9FFFFEC}, + [I(100,199)] = {31,0x49FFFFEC}, + [I(101,199)] = {30,0xBFFFFEC}, + [I(102,199)] = {31,0x4BFFFFEC}, + [I(103,199)] = {31,0x4DFFFFEC}, + [I(104,199)] = {31,0x4FFFFFEC}, + [I(105,199)] = {30,0xDFFFFEC}, + [I(106,199)] = {X32,0xE9FFFFEC}, + [I(107,199)] = {X32,0xEBFFFFEC}, + [I(108,199)] = {31,0x51FFFFEC}, + [I(109,199)] = {31,0x53FFFFEC}, + [I(110,199)] = {31,0x55FFFFEC}, + [I(111,199)] = {30,0xFFFFFEC}, + [I(112,199)] = {31,0x57FFFFEC}, + [I(113,199)] = {X32,0xEDFFFFEC}, + [I(114,199)] = {31,0x59FFFFEC}, + [I(115,199)] = {30,0x11FFFFEC}, + [I(116,199)] = {30,0x13FFFFEC}, + [I(117,199)] = {31,0x5BFFFFEC}, + [I(118,199)] = {X32,0xEFFFFFEC}, + [I(119,199)] = {X32,0xF1FFFFEC}, + [I(120,199)] = {X32,0xF3FFFFEC}, + [I(121,199)] = {X32,0xF5FFFFEC}, + [I(122,199)] = {X32,0xF7FFFFEC}, + [I(123,199)] = {64,0}, + [I(124,199)] = {64,0}, + [I(125,199)] = {64,0}, + [I(126,199)] = {64,0}, + [I(127,199)] = {64,0}, + [I(128,199)] = {64,0}, + [I(129,199)] = {64,0}, + [I(130,199)] = {64,0}, + [I(131,199)] = {64,0}, + [I(132,199)] = {64,0}, + [I(133,199)] = {64,0}, + [I(134,199)] = {64,0}, + [I(135,199)] = {64,0}, + [I(136,199)] = {64,0}, + [I(137,199)] = {64,0}, + [I(138,199)] = {64,0}, + [I(139,199)] = {64,0}, + [I(140,199)] = {64,0}, + [I(141,199)] = {64,0}, + [I(142,199)] = {64,0}, + [I(143,199)] = {64,0}, + [I(144,199)] = {64,0}, + [I(145,199)] = {64,0}, + [I(146,199)] = {64,0}, + [I(147,199)] = {64,0}, + [I(148,199)] = {64,0}, + [I(149,199)] = {64,0}, + [I(150,199)] = {64,0}, + [I(151,199)] = {64,0}, + [I(152,199)] = {64,0}, + [I(153,199)] = {64,0}, + [I(154,199)] = {64,0}, + [I(155,199)] = {64,0}, + [I(156,199)] = {64,0}, + [I(157,199)] = {64,0}, + [I(158,199)] = {64,0}, + [I(159,199)] = {64,0}, + [I(160,199)] = {64,0}, + [I(161,199)] = {64,0}, + [I(162,199)] = {64,0}, + [I(163,199)] = {64,0}, + [I(164,199)] = {64,0}, + [I(165,199)] = {64,0}, + [I(166,199)] = {64,0}, + [I(167,199)] = {64,0}, + [I(168,199)] = {64,0}, + [I(169,199)] = {64,0}, + [I(170,199)] = {64,0}, + [I(171,199)] = {64,0}, + [I(172,199)] = {64,0}, + [I(173,199)] = {64,0}, + [I(174,199)] = {64,0}, + [I(175,199)] = {64,0}, + [I(176,199)] = {64,0}, + [I(177,199)] = {64,0}, + [I(178,199)] = {64,0}, + [I(179,199)] = {64,0}, + [I(180,199)] = {64,0}, + [I(181,199)] = {64,0}, + [I(182,199)] = {64,0}, + [I(183,199)] = {64,0}, + [I(184,199)] = {64,0}, + [I(185,199)] = {64,0}, + [I(186,199)] = {64,0}, + [I(187,199)] = {64,0}, + [I(188,199)] = {64,0}, + [I(189,199)] = {64,0}, + [I(190,199)] = {64,0}, + [I(191,199)] = {64,0}, + [I(192,199)] = {64,0}, + [I(193,199)] = {64,0}, + [I(194,199)] = {64,0}, + [I(195,199)] = {64,0}, + [I(196,199)] = {64,0}, + [I(197,199)] = {64,0}, + [I(198,199)] = {64,0}, + [I(199,199)] = {64,0}, + [I(200,199)] = {64,0}, + [I(201,199)] = {64,0}, + [I(202,199)] = {64,0}, + [I(203,199)] = {64,0}, + [I(204,199)] = {64,0}, + [I(205,199)] = {64,0}, + [I(206,199)] = {64,0}, + [I(207,199)] = {64,0}, + [I(208,199)] = {64,0}, + [I(209,199)] = {64,0}, + [I(210,199)] = {64,0}, + [I(211,199)] = {64,0}, + [I(212,199)] = {64,0}, + [I(213,199)] = {64,0}, + [I(214,199)] = {64,0}, + [I(215,199)] = {64,0}, + [I(216,199)] = {64,0}, + [I(217,199)] = {64,0}, + [I(218,199)] = {64,0}, + [I(219,199)] = {64,0}, + [I(220,199)] = {64,0}, + [I(221,199)] = {64,0}, + [I(222,199)] = {64,0}, + [I(223,199)] = {64,0}, + [I(224,199)] = {64,0}, + [I(225,199)] = {64,0}, + [I(226,199)] = {64,0}, + [I(227,199)] = {64,0}, + [I(228,199)] = {64,0}, + [I(229,199)] = {64,0}, + [I(230,199)] = {64,0}, + [I(231,199)] = {64,0}, + [I(232,199)] = {64,0}, + [I(233,199)] = {64,0}, + [I(234,199)] = {64,0}, + [I(235,199)] = {64,0}, + [I(236,199)] = {64,0}, + [I(237,199)] = {64,0}, + [I(238,199)] = {64,0}, + [I(239,199)] = {64,0}, + [I(240,199)] = {64,0}, + [I(241,199)] = {64,0}, + [I(242,199)] = {64,0}, + [I(243,199)] = {64,0}, + [I(244,199)] = {64,0}, + [I(245,199)] = {64,0}, + [I(246,199)] = {64,0}, + [I(247,199)] = {64,0}, + [I(248,199)] = {64,0}, + [I(249,199)] = {64,0}, + [I(250,199)] = {64,0}, + [I(251,199)] = {64,0}, + [I(252,199)] = {64,0}, + [I(253,199)] = {64,0}, + [I(254,199)] = {64,0}, + [I(255,199)] = {64,0}, + [I(0,200)] = {64,0}, + [I(1,200)] = {64,0}, + [I(2,200)] = {64,0}, + [I(3,200)] = {64,0}, + [I(4,200)] = {64,0}, + [I(5,200)] = {64,0}, + [I(6,200)] = {64,0}, + [I(7,200)] = {64,0}, + [I(8,200)] = {64,0}, + [I(9,200)] = {64,0}, + [I(10,200)] = {64,0}, + [I(11,200)] = {64,0}, + [I(12,200)] = {64,0}, + [I(13,200)] = {64,0}, + [I(14,200)] = {64,0}, + [I(15,200)] = {64,0}, + [I(16,200)] = {64,0}, + [I(17,200)] = {64,0}, + [I(18,200)] = {64,0}, + [I(19,200)] = {64,0}, + [I(20,200)] = {64,0}, + [I(21,200)] = {64,0}, + [I(22,200)] = {64,0}, + [I(23,200)] = {64,0}, + [I(24,200)] = {64,0}, + [I(25,200)] = {64,0}, + [I(26,200)] = {64,0}, + [I(27,200)] = {64,0}, + [I(28,200)] = {64,0}, + [I(29,200)] = {64,0}, + [I(30,200)] = {64,0}, + [I(31,200)] = {64,0}, + [I(32,200)] = {X32,0x53FFFFE2}, + [I(33,200)] = {64,0}, + [I(34,200)] = {64,0}, + [I(35,200)] = {64,0}, + [I(36,200)] = {64,0}, + [I(37,200)] = {X32,0x57FFFFE2}, + [I(38,200)] = {64,0}, + [I(39,200)] = {64,0}, + [I(40,200)] = {64,0}, + [I(41,200)] = {64,0}, + [I(42,200)] = {64,0}, + [I(43,200)] = {64,0}, + [I(44,200)] = {64,0}, + [I(45,200)] = {X32,0x5BFFFFE2}, + [I(46,200)] = {X32,0x5FFFFFE2}, + [I(47,200)] = {X32,0x63FFFFE2}, + [I(48,200)] = {31,0x3FFFFE2}, + [I(49,200)] = {31,0x7FFFFE2}, + [I(50,200)] = {31,0xBFFFFE2}, + [I(51,200)] = {X32,0x67FFFFE2}, + [I(52,200)] = {X32,0x6BFFFFE2}, + [I(53,200)] = {X32,0x6FFFFFE2}, + [I(54,200)] = {X32,0x73FFFFE2}, + [I(55,200)] = {X32,0x77FFFFE2}, + [I(56,200)] = {X32,0x7BFFFFE2}, + [I(57,200)] = {X32,0x7FFFFFE2}, + [I(58,200)] = {64,0}, + [I(59,200)] = {64,0}, + [I(60,200)] = {64,0}, + [I(61,200)] = {X32,0x83FFFFE2}, + [I(62,200)] = {64,0}, + [I(63,200)] = {64,0}, + [I(64,200)] = {64,0}, + [I(65,200)] = {X32,0x87FFFFE2}, + [I(66,200)] = {64,0}, + [I(67,200)] = {64,0}, + [I(68,200)] = {64,0}, + [I(69,200)] = {64,0}, + [I(70,200)] = {64,0}, + [I(71,200)] = {64,0}, + [I(72,200)] = {64,0}, + [I(73,200)] = {64,0}, + [I(74,200)] = {64,0}, + [I(75,200)] = {64,0}, + [I(76,200)] = {64,0}, + [I(77,200)] = {64,0}, + [I(78,200)] = {64,0}, + [I(79,200)] = {64,0}, + [I(80,200)] = {64,0}, + [I(81,200)] = {64,0}, + [I(82,200)] = {64,0}, + [I(83,200)] = {64,0}, + [I(84,200)] = {64,0}, + [I(85,200)] = {64,0}, + [I(86,200)] = {64,0}, + [I(87,200)] = {64,0}, + [I(88,200)] = {64,0}, + [I(89,200)] = {64,0}, + [I(90,200)] = {64,0}, + [I(91,200)] = {64,0}, + [I(92,200)] = {64,0}, + [I(93,200)] = {64,0}, + [I(94,200)] = {64,0}, + [I(95,200)] = {X32,0x8BFFFFE2}, + [I(96,200)] = {64,0}, + [I(97,200)] = {31,0xFFFFFE2}, + [I(98,200)] = {X32,0x8FFFFFE2}, + [I(99,200)] = {31,0x13FFFFE2}, + [I(100,200)] = {X32,0x93FFFFE2}, + [I(101,200)] = {31,0x17FFFFE2}, + [I(102,200)] = {X32,0x97FFFFE2}, + [I(103,200)] = {X32,0x9BFFFFE2}, + [I(104,200)] = {X32,0x9FFFFFE2}, + [I(105,200)] = {31,0x1BFFFFE2}, + [I(106,200)] = {64,0}, + [I(107,200)] = {64,0}, + [I(108,200)] = {X32,0xA3FFFFE2}, + [I(109,200)] = {X32,0xA7FFFFE2}, + [I(110,200)] = {X32,0xABFFFFE2}, + [I(111,200)] = {31,0x1FFFFFE2}, + [I(112,200)] = {X32,0xAFFFFFE2}, + [I(113,200)] = {64,0}, + [I(114,200)] = {X32,0xB3FFFFE2}, + [I(115,200)] = {31,0x23FFFFE2}, + [I(116,200)] = {31,0x27FFFFE2}, + [I(117,200)] = {X32,0xB7FFFFE2}, + [I(118,200)] = {64,0}, + [I(119,200)] = {64,0}, + [I(120,200)] = {64,0}, + [I(121,200)] = {64,0}, + [I(122,200)] = {64,0}, + [I(123,200)] = {64,0}, + [I(124,200)] = {64,0}, + [I(125,200)] = {64,0}, + [I(126,200)] = {64,0}, + [I(127,200)] = {64,0}, + [I(128,200)] = {64,0}, + [I(129,200)] = {64,0}, + [I(130,200)] = {64,0}, + [I(131,200)] = {64,0}, + [I(132,200)] = {64,0}, + [I(133,200)] = {64,0}, + [I(134,200)] = {64,0}, + [I(135,200)] = {64,0}, + [I(136,200)] = {64,0}, + [I(137,200)] = {64,0}, + [I(138,200)] = {64,0}, + [I(139,200)] = {64,0}, + [I(140,200)] = {64,0}, + [I(141,200)] = {64,0}, + [I(142,200)] = {64,0}, + [I(143,200)] = {64,0}, + [I(144,200)] = {64,0}, + [I(145,200)] = {64,0}, + [I(146,200)] = {64,0}, + [I(147,200)] = {64,0}, + [I(148,200)] = {64,0}, + [I(149,200)] = {64,0}, + [I(150,200)] = {64,0}, + [I(151,200)] = {64,0}, + [I(152,200)] = {64,0}, + [I(153,200)] = {64,0}, + [I(154,200)] = {64,0}, + [I(155,200)] = {64,0}, + [I(156,200)] = {64,0}, + [I(157,200)] = {64,0}, + [I(158,200)] = {64,0}, + [I(159,200)] = {64,0}, + [I(160,200)] = {64,0}, + [I(161,200)] = {64,0}, + [I(162,200)] = {64,0}, + [I(163,200)] = {64,0}, + [I(164,200)] = {64,0}, + [I(165,200)] = {64,0}, + [I(166,200)] = {64,0}, + [I(167,200)] = {64,0}, + [I(168,200)] = {64,0}, + [I(169,200)] = {64,0}, + [I(170,200)] = {64,0}, + [I(171,200)] = {64,0}, + [I(172,200)] = {64,0}, + [I(173,200)] = {64,0}, + [I(174,200)] = {64,0}, + [I(175,200)] = {64,0}, + [I(176,200)] = {64,0}, + [I(177,200)] = {64,0}, + [I(178,200)] = {64,0}, + [I(179,200)] = {64,0}, + [I(180,200)] = {64,0}, + [I(181,200)] = {64,0}, + [I(182,200)] = {64,0}, + [I(183,200)] = {64,0}, + [I(184,200)] = {64,0}, + [I(185,200)] = {64,0}, + [I(186,200)] = {64,0}, + [I(187,200)] = {64,0}, + [I(188,200)] = {64,0}, + [I(189,200)] = {64,0}, + [I(190,200)] = {64,0}, + [I(191,200)] = {64,0}, + [I(192,200)] = {64,0}, + [I(193,200)] = {64,0}, + [I(194,200)] = {64,0}, + [I(195,200)] = {64,0}, + [I(196,200)] = {64,0}, + [I(197,200)] = {64,0}, + [I(198,200)] = {64,0}, + [I(199,200)] = {64,0}, + [I(200,200)] = {64,0}, + [I(201,200)] = {64,0}, + [I(202,200)] = {64,0}, + [I(203,200)] = {64,0}, + [I(204,200)] = {64,0}, + [I(205,200)] = {64,0}, + [I(206,200)] = {64,0}, + [I(207,200)] = {64,0}, + [I(208,200)] = {64,0}, + [I(209,200)] = {64,0}, + [I(210,200)] = {64,0}, + [I(211,200)] = {64,0}, + [I(212,200)] = {64,0}, + [I(213,200)] = {64,0}, + [I(214,200)] = {64,0}, + [I(215,200)] = {64,0}, + [I(216,200)] = {64,0}, + [I(217,200)] = {64,0}, + [I(218,200)] = {64,0}, + [I(219,200)] = {64,0}, + [I(220,200)] = {64,0}, + [I(221,200)] = {64,0}, + [I(222,200)] = {64,0}, + [I(223,200)] = {64,0}, + [I(224,200)] = {64,0}, + [I(225,200)] = {64,0}, + [I(226,200)] = {64,0}, + [I(227,200)] = {64,0}, + [I(228,200)] = {64,0}, + [I(229,200)] = {64,0}, + [I(230,200)] = {64,0}, + [I(231,200)] = {64,0}, + [I(232,200)] = {64,0}, + [I(233,200)] = {64,0}, + [I(234,200)] = {64,0}, + [I(235,200)] = {64,0}, + [I(236,200)] = {64,0}, + [I(237,200)] = {64,0}, + [I(238,200)] = {64,0}, + [I(239,200)] = {64,0}, + [I(240,200)] = {64,0}, + [I(241,200)] = {64,0}, + [I(242,200)] = {64,0}, + [I(243,200)] = {64,0}, + [I(244,200)] = {64,0}, + [I(245,200)] = {64,0}, + [I(246,200)] = {64,0}, + [I(247,200)] = {64,0}, + [I(248,200)] = {64,0}, + [I(249,200)] = {64,0}, + [I(250,200)] = {64,0}, + [I(251,200)] = {64,0}, + [I(252,200)] = {64,0}, + [I(253,200)] = {64,0}, + [I(254,200)] = {64,0}, + [I(255,200)] = {64,0}, + [I(0,201)] = {64,0}, + [I(1,201)] = {64,0}, + [I(2,201)] = {64,0}, + [I(3,201)] = {64,0}, + [I(4,201)] = {64,0}, + [I(5,201)] = {64,0}, + [I(6,201)] = {64,0}, + [I(7,201)] = {64,0}, + [I(8,201)] = {64,0}, + [I(9,201)] = {64,0}, + [I(10,201)] = {64,0}, + [I(11,201)] = {64,0}, + [I(12,201)] = {64,0}, + [I(13,201)] = {64,0}, + [I(14,201)] = {64,0}, + [I(15,201)] = {64,0}, + [I(16,201)] = {64,0}, + [I(17,201)] = {64,0}, + [I(18,201)] = {64,0}, + [I(19,201)] = {64,0}, + [I(20,201)] = {64,0}, + [I(21,201)] = {64,0}, + [I(22,201)] = {64,0}, + [I(23,201)] = {64,0}, + [I(24,201)] = {64,0}, + [I(25,201)] = {64,0}, + [I(26,201)] = {64,0}, + [I(27,201)] = {64,0}, + [I(28,201)] = {64,0}, + [I(29,201)] = {64,0}, + [I(30,201)] = {64,0}, + [I(31,201)] = {64,0}, + [I(32,201)] = {X32,0x53FFFFE3}, + [I(33,201)] = {64,0}, + [I(34,201)] = {64,0}, + [I(35,201)] = {64,0}, + [I(36,201)] = {64,0}, + [I(37,201)] = {X32,0x57FFFFE3}, + [I(38,201)] = {64,0}, + [I(39,201)] = {64,0}, + [I(40,201)] = {64,0}, + [I(41,201)] = {64,0}, + [I(42,201)] = {64,0}, + [I(43,201)] = {64,0}, + [I(44,201)] = {64,0}, + [I(45,201)] = {X32,0x5BFFFFE3}, + [I(46,201)] = {X32,0x5FFFFFE3}, + [I(47,201)] = {X32,0x63FFFFE3}, + [I(48,201)] = {31,0x3FFFFE3}, + [I(49,201)] = {31,0x7FFFFE3}, + [I(50,201)] = {31,0xBFFFFE3}, + [I(51,201)] = {X32,0x67FFFFE3}, + [I(52,201)] = {X32,0x6BFFFFE3}, + [I(53,201)] = {X32,0x6FFFFFE3}, + [I(54,201)] = {X32,0x73FFFFE3}, + [I(55,201)] = {X32,0x77FFFFE3}, + [I(56,201)] = {X32,0x7BFFFFE3}, + [I(57,201)] = {X32,0x7FFFFFE3}, + [I(58,201)] = {64,0}, + [I(59,201)] = {64,0}, + [I(60,201)] = {64,0}, + [I(61,201)] = {X32,0x83FFFFE3}, + [I(62,201)] = {64,0}, + [I(63,201)] = {64,0}, + [I(64,201)] = {64,0}, + [I(65,201)] = {X32,0x87FFFFE3}, + [I(66,201)] = {64,0}, + [I(67,201)] = {64,0}, + [I(68,201)] = {64,0}, + [I(69,201)] = {64,0}, + [I(70,201)] = {64,0}, + [I(71,201)] = {64,0}, + [I(72,201)] = {64,0}, + [I(73,201)] = {64,0}, + [I(74,201)] = {64,0}, + [I(75,201)] = {64,0}, + [I(76,201)] = {64,0}, + [I(77,201)] = {64,0}, + [I(78,201)] = {64,0}, + [I(79,201)] = {64,0}, + [I(80,201)] = {64,0}, + [I(81,201)] = {64,0}, + [I(82,201)] = {64,0}, + [I(83,201)] = {64,0}, + [I(84,201)] = {64,0}, + [I(85,201)] = {64,0}, + [I(86,201)] = {64,0}, + [I(87,201)] = {64,0}, + [I(88,201)] = {64,0}, + [I(89,201)] = {64,0}, + [I(90,201)] = {64,0}, + [I(91,201)] = {64,0}, + [I(92,201)] = {64,0}, + [I(93,201)] = {64,0}, + [I(94,201)] = {64,0}, + [I(95,201)] = {X32,0x8BFFFFE3}, + [I(96,201)] = {64,0}, + [I(97,201)] = {31,0xFFFFFE3}, + [I(98,201)] = {X32,0x8FFFFFE3}, + [I(99,201)] = {31,0x13FFFFE3}, + [I(100,201)] = {X32,0x93FFFFE3}, + [I(101,201)] = {31,0x17FFFFE3}, + [I(102,201)] = {X32,0x97FFFFE3}, + [I(103,201)] = {X32,0x9BFFFFE3}, + [I(104,201)] = {X32,0x9FFFFFE3}, + [I(105,201)] = {31,0x1BFFFFE3}, + [I(106,201)] = {64,0}, + [I(107,201)] = {64,0}, + [I(108,201)] = {X32,0xA3FFFFE3}, + [I(109,201)] = {X32,0xA7FFFFE3}, + [I(110,201)] = {X32,0xABFFFFE3}, + [I(111,201)] = {31,0x1FFFFFE3}, + [I(112,201)] = {X32,0xAFFFFFE3}, + [I(113,201)] = {64,0}, + [I(114,201)] = {X32,0xB3FFFFE3}, + [I(115,201)] = {31,0x23FFFFE3}, + [I(116,201)] = {31,0x27FFFFE3}, + [I(117,201)] = {X32,0xB7FFFFE3}, + [I(118,201)] = {64,0}, + [I(119,201)] = {64,0}, + [I(120,201)] = {64,0}, + [I(121,201)] = {64,0}, + [I(122,201)] = {64,0}, + [I(123,201)] = {64,0}, + [I(124,201)] = {64,0}, + [I(125,201)] = {64,0}, + [I(126,201)] = {64,0}, + [I(127,201)] = {64,0}, + [I(128,201)] = {64,0}, + [I(129,201)] = {64,0}, + [I(130,201)] = {64,0}, + [I(131,201)] = {64,0}, + [I(132,201)] = {64,0}, + [I(133,201)] = {64,0}, + [I(134,201)] = {64,0}, + [I(135,201)] = {64,0}, + [I(136,201)] = {64,0}, + [I(137,201)] = {64,0}, + [I(138,201)] = {64,0}, + [I(139,201)] = {64,0}, + [I(140,201)] = {64,0}, + [I(141,201)] = {64,0}, + [I(142,201)] = {64,0}, + [I(143,201)] = {64,0}, + [I(144,201)] = {64,0}, + [I(145,201)] = {64,0}, + [I(146,201)] = {64,0}, + [I(147,201)] = {64,0}, + [I(148,201)] = {64,0}, + [I(149,201)] = {64,0}, + [I(150,201)] = {64,0}, + [I(151,201)] = {64,0}, + [I(152,201)] = {64,0}, + [I(153,201)] = {64,0}, + [I(154,201)] = {64,0}, + [I(155,201)] = {64,0}, + [I(156,201)] = {64,0}, + [I(157,201)] = {64,0}, + [I(158,201)] = {64,0}, + [I(159,201)] = {64,0}, + [I(160,201)] = {64,0}, + [I(161,201)] = {64,0}, + [I(162,201)] = {64,0}, + [I(163,201)] = {64,0}, + [I(164,201)] = {64,0}, + [I(165,201)] = {64,0}, + [I(166,201)] = {64,0}, + [I(167,201)] = {64,0}, + [I(168,201)] = {64,0}, + [I(169,201)] = {64,0}, + [I(170,201)] = {64,0}, + [I(171,201)] = {64,0}, + [I(172,201)] = {64,0}, + [I(173,201)] = {64,0}, + [I(174,201)] = {64,0}, + [I(175,201)] = {64,0}, + [I(176,201)] = {64,0}, + [I(177,201)] = {64,0}, + [I(178,201)] = {64,0}, + [I(179,201)] = {64,0}, + [I(180,201)] = {64,0}, + [I(181,201)] = {64,0}, + [I(182,201)] = {64,0}, + [I(183,201)] = {64,0}, + [I(184,201)] = {64,0}, + [I(185,201)] = {64,0}, + [I(186,201)] = {64,0}, + [I(187,201)] = {64,0}, + [I(188,201)] = {64,0}, + [I(189,201)] = {64,0}, + [I(190,201)] = {64,0}, + [I(191,201)] = {64,0}, + [I(192,201)] = {64,0}, + [I(193,201)] = {64,0}, + [I(194,201)] = {64,0}, + [I(195,201)] = {64,0}, + [I(196,201)] = {64,0}, + [I(197,201)] = {64,0}, + [I(198,201)] = {64,0}, + [I(199,201)] = {64,0}, + [I(200,201)] = {64,0}, + [I(201,201)] = {64,0}, + [I(202,201)] = {64,0}, + [I(203,201)] = {64,0}, + [I(204,201)] = {64,0}, + [I(205,201)] = {64,0}, + [I(206,201)] = {64,0}, + [I(207,201)] = {64,0}, + [I(208,201)] = {64,0}, + [I(209,201)] = {64,0}, + [I(210,201)] = {64,0}, + [I(211,201)] = {64,0}, + [I(212,201)] = {64,0}, + [I(213,201)] = {64,0}, + [I(214,201)] = {64,0}, + [I(215,201)] = {64,0}, + [I(216,201)] = {64,0}, + [I(217,201)] = {64,0}, + [I(218,201)] = {64,0}, + [I(219,201)] = {64,0}, + [I(220,201)] = {64,0}, + [I(221,201)] = {64,0}, + [I(222,201)] = {64,0}, + [I(223,201)] = {64,0}, + [I(224,201)] = {64,0}, + [I(225,201)] = {64,0}, + [I(226,201)] = {64,0}, + [I(227,201)] = {64,0}, + [I(228,201)] = {64,0}, + [I(229,201)] = {64,0}, + [I(230,201)] = {64,0}, + [I(231,201)] = {64,0}, + [I(232,201)] = {64,0}, + [I(233,201)] = {64,0}, + [I(234,201)] = {64,0}, + [I(235,201)] = {64,0}, + [I(236,201)] = {64,0}, + [I(237,201)] = {64,0}, + [I(238,201)] = {64,0}, + [I(239,201)] = {64,0}, + [I(240,201)] = {64,0}, + [I(241,201)] = {64,0}, + [I(242,201)] = {64,0}, + [I(243,201)] = {64,0}, + [I(244,201)] = {64,0}, + [I(245,201)] = {64,0}, + [I(246,201)] = {64,0}, + [I(247,201)] = {64,0}, + [I(248,201)] = {64,0}, + [I(249,201)] = {64,0}, + [I(250,201)] = {64,0}, + [I(251,201)] = {64,0}, + [I(252,201)] = {64,0}, + [I(253,201)] = {64,0}, + [I(254,201)] = {64,0}, + [I(255,201)] = {64,0}, + [I(0,202)] = {64,0}, + [I(1,202)] = {64,0}, + [I(2,202)] = {64,0}, + [I(3,202)] = {64,0}, + [I(4,202)] = {64,0}, + [I(5,202)] = {64,0}, + [I(6,202)] = {64,0}, + [I(7,202)] = {64,0}, + [I(8,202)] = {64,0}, + [I(9,202)] = {64,0}, + [I(10,202)] = {64,0}, + [I(11,202)] = {64,0}, + [I(12,202)] = {64,0}, + [I(13,202)] = {64,0}, + [I(14,202)] = {64,0}, + [I(15,202)] = {64,0}, + [I(16,202)] = {64,0}, + [I(17,202)] = {64,0}, + [I(18,202)] = {64,0}, + [I(19,202)] = {64,0}, + [I(20,202)] = {64,0}, + [I(21,202)] = {64,0}, + [I(22,202)] = {64,0}, + [I(23,202)] = {64,0}, + [I(24,202)] = {64,0}, + [I(25,202)] = {64,0}, + [I(26,202)] = {64,0}, + [I(27,202)] = {64,0}, + [I(28,202)] = {64,0}, + [I(29,202)] = {64,0}, + [I(30,202)] = {64,0}, + [I(31,202)] = {64,0}, + [I(32,202)] = {X32,0x53FFFFE4}, + [I(33,202)] = {64,0}, + [I(34,202)] = {64,0}, + [I(35,202)] = {64,0}, + [I(36,202)] = {64,0}, + [I(37,202)] = {X32,0x57FFFFE4}, + [I(38,202)] = {64,0}, + [I(39,202)] = {64,0}, + [I(40,202)] = {64,0}, + [I(41,202)] = {64,0}, + [I(42,202)] = {64,0}, + [I(43,202)] = {64,0}, + [I(44,202)] = {64,0}, + [I(45,202)] = {X32,0x5BFFFFE4}, + [I(46,202)] = {X32,0x5FFFFFE4}, + [I(47,202)] = {X32,0x63FFFFE4}, + [I(48,202)] = {31,0x3FFFFE4}, + [I(49,202)] = {31,0x7FFFFE4}, + [I(50,202)] = {31,0xBFFFFE4}, + [I(51,202)] = {X32,0x67FFFFE4}, + [I(52,202)] = {X32,0x6BFFFFE4}, + [I(53,202)] = {X32,0x6FFFFFE4}, + [I(54,202)] = {X32,0x73FFFFE4}, + [I(55,202)] = {X32,0x77FFFFE4}, + [I(56,202)] = {X32,0x7BFFFFE4}, + [I(57,202)] = {X32,0x7FFFFFE4}, + [I(58,202)] = {64,0}, + [I(59,202)] = {64,0}, + [I(60,202)] = {64,0}, + [I(61,202)] = {X32,0x83FFFFE4}, + [I(62,202)] = {64,0}, + [I(63,202)] = {64,0}, + [I(64,202)] = {64,0}, + [I(65,202)] = {X32,0x87FFFFE4}, + [I(66,202)] = {64,0}, + [I(67,202)] = {64,0}, + [I(68,202)] = {64,0}, + [I(69,202)] = {64,0}, + [I(70,202)] = {64,0}, + [I(71,202)] = {64,0}, + [I(72,202)] = {64,0}, + [I(73,202)] = {64,0}, + [I(74,202)] = {64,0}, + [I(75,202)] = {64,0}, + [I(76,202)] = {64,0}, + [I(77,202)] = {64,0}, + [I(78,202)] = {64,0}, + [I(79,202)] = {64,0}, + [I(80,202)] = {64,0}, + [I(81,202)] = {64,0}, + [I(82,202)] = {64,0}, + [I(83,202)] = {64,0}, + [I(84,202)] = {64,0}, + [I(85,202)] = {64,0}, + [I(86,202)] = {64,0}, + [I(87,202)] = {64,0}, + [I(88,202)] = {64,0}, + [I(89,202)] = {64,0}, + [I(90,202)] = {64,0}, + [I(91,202)] = {64,0}, + [I(92,202)] = {64,0}, + [I(93,202)] = {64,0}, + [I(94,202)] = {64,0}, + [I(95,202)] = {X32,0x8BFFFFE4}, + [I(96,202)] = {64,0}, + [I(97,202)] = {31,0xFFFFFE4}, + [I(98,202)] = {X32,0x8FFFFFE4}, + [I(99,202)] = {31,0x13FFFFE4}, + [I(100,202)] = {X32,0x93FFFFE4}, + [I(101,202)] = {31,0x17FFFFE4}, + [I(102,202)] = {X32,0x97FFFFE4}, + [I(103,202)] = {X32,0x9BFFFFE4}, + [I(104,202)] = {X32,0x9FFFFFE4}, + [I(105,202)] = {31,0x1BFFFFE4}, + [I(106,202)] = {64,0}, + [I(107,202)] = {64,0}, + [I(108,202)] = {X32,0xA3FFFFE4}, + [I(109,202)] = {X32,0xA7FFFFE4}, + [I(110,202)] = {X32,0xABFFFFE4}, + [I(111,202)] = {31,0x1FFFFFE4}, + [I(112,202)] = {X32,0xAFFFFFE4}, + [I(113,202)] = {64,0}, + [I(114,202)] = {X32,0xB3FFFFE4}, + [I(115,202)] = {31,0x23FFFFE4}, + [I(116,202)] = {31,0x27FFFFE4}, + [I(117,202)] = {X32,0xB7FFFFE4}, + [I(118,202)] = {64,0}, + [I(119,202)] = {64,0}, + [I(120,202)] = {64,0}, + [I(121,202)] = {64,0}, + [I(122,202)] = {64,0}, + [I(123,202)] = {64,0}, + [I(124,202)] = {64,0}, + [I(125,202)] = {64,0}, + [I(126,202)] = {64,0}, + [I(127,202)] = {64,0}, + [I(128,202)] = {64,0}, + [I(129,202)] = {64,0}, + [I(130,202)] = {64,0}, + [I(131,202)] = {64,0}, + [I(132,202)] = {64,0}, + [I(133,202)] = {64,0}, + [I(134,202)] = {64,0}, + [I(135,202)] = {64,0}, + [I(136,202)] = {64,0}, + [I(137,202)] = {64,0}, + [I(138,202)] = {64,0}, + [I(139,202)] = {64,0}, + [I(140,202)] = {64,0}, + [I(141,202)] = {64,0}, + [I(142,202)] = {64,0}, + [I(143,202)] = {64,0}, + [I(144,202)] = {64,0}, + [I(145,202)] = {64,0}, + [I(146,202)] = {64,0}, + [I(147,202)] = {64,0}, + [I(148,202)] = {64,0}, + [I(149,202)] = {64,0}, + [I(150,202)] = {64,0}, + [I(151,202)] = {64,0}, + [I(152,202)] = {64,0}, + [I(153,202)] = {64,0}, + [I(154,202)] = {64,0}, + [I(155,202)] = {64,0}, + [I(156,202)] = {64,0}, + [I(157,202)] = {64,0}, + [I(158,202)] = {64,0}, + [I(159,202)] = {64,0}, + [I(160,202)] = {64,0}, + [I(161,202)] = {64,0}, + [I(162,202)] = {64,0}, + [I(163,202)] = {64,0}, + [I(164,202)] = {64,0}, + [I(165,202)] = {64,0}, + [I(166,202)] = {64,0}, + [I(167,202)] = {64,0}, + [I(168,202)] = {64,0}, + [I(169,202)] = {64,0}, + [I(170,202)] = {64,0}, + [I(171,202)] = {64,0}, + [I(172,202)] = {64,0}, + [I(173,202)] = {64,0}, + [I(174,202)] = {64,0}, + [I(175,202)] = {64,0}, + [I(176,202)] = {64,0}, + [I(177,202)] = {64,0}, + [I(178,202)] = {64,0}, + [I(179,202)] = {64,0}, + [I(180,202)] = {64,0}, + [I(181,202)] = {64,0}, + [I(182,202)] = {64,0}, + [I(183,202)] = {64,0}, + [I(184,202)] = {64,0}, + [I(185,202)] = {64,0}, + [I(186,202)] = {64,0}, + [I(187,202)] = {64,0}, + [I(188,202)] = {64,0}, + [I(189,202)] = {64,0}, + [I(190,202)] = {64,0}, + [I(191,202)] = {64,0}, + [I(192,202)] = {64,0}, + [I(193,202)] = {64,0}, + [I(194,202)] = {64,0}, + [I(195,202)] = {64,0}, + [I(196,202)] = {64,0}, + [I(197,202)] = {64,0}, + [I(198,202)] = {64,0}, + [I(199,202)] = {64,0}, + [I(200,202)] = {64,0}, + [I(201,202)] = {64,0}, + [I(202,202)] = {64,0}, + [I(203,202)] = {64,0}, + [I(204,202)] = {64,0}, + [I(205,202)] = {64,0}, + [I(206,202)] = {64,0}, + [I(207,202)] = {64,0}, + [I(208,202)] = {64,0}, + [I(209,202)] = {64,0}, + [I(210,202)] = {64,0}, + [I(211,202)] = {64,0}, + [I(212,202)] = {64,0}, + [I(213,202)] = {64,0}, + [I(214,202)] = {64,0}, + [I(215,202)] = {64,0}, + [I(216,202)] = {64,0}, + [I(217,202)] = {64,0}, + [I(218,202)] = {64,0}, + [I(219,202)] = {64,0}, + [I(220,202)] = {64,0}, + [I(221,202)] = {64,0}, + [I(222,202)] = {64,0}, + [I(223,202)] = {64,0}, + [I(224,202)] = {64,0}, + [I(225,202)] = {64,0}, + [I(226,202)] = {64,0}, + [I(227,202)] = {64,0}, + [I(228,202)] = {64,0}, + [I(229,202)] = {64,0}, + [I(230,202)] = {64,0}, + [I(231,202)] = {64,0}, + [I(232,202)] = {64,0}, + [I(233,202)] = {64,0}, + [I(234,202)] = {64,0}, + [I(235,202)] = {64,0}, + [I(236,202)] = {64,0}, + [I(237,202)] = {64,0}, + [I(238,202)] = {64,0}, + [I(239,202)] = {64,0}, + [I(240,202)] = {64,0}, + [I(241,202)] = {64,0}, + [I(242,202)] = {64,0}, + [I(243,202)] = {64,0}, + [I(244,202)] = {64,0}, + [I(245,202)] = {64,0}, + [I(246,202)] = {64,0}, + [I(247,202)] = {64,0}, + [I(248,202)] = {64,0}, + [I(249,202)] = {64,0}, + [I(250,202)] = {64,0}, + [I(251,202)] = {64,0}, + [I(252,202)] = {64,0}, + [I(253,202)] = {64,0}, + [I(254,202)] = {64,0}, + [I(255,202)] = {64,0}, + [I(0,203)] = {64,0}, + [I(1,203)] = {64,0}, + [I(2,203)] = {64,0}, + [I(3,203)] = {64,0}, + [I(4,203)] = {64,0}, + [I(5,203)] = {64,0}, + [I(6,203)] = {64,0}, + [I(7,203)] = {64,0}, + [I(8,203)] = {64,0}, + [I(9,203)] = {64,0}, + [I(10,203)] = {64,0}, + [I(11,203)] = {64,0}, + [I(12,203)] = {64,0}, + [I(13,203)] = {64,0}, + [I(14,203)] = {64,0}, + [I(15,203)] = {64,0}, + [I(16,203)] = {64,0}, + [I(17,203)] = {64,0}, + [I(18,203)] = {64,0}, + [I(19,203)] = {64,0}, + [I(20,203)] = {64,0}, + [I(21,203)] = {64,0}, + [I(22,203)] = {64,0}, + [I(23,203)] = {64,0}, + [I(24,203)] = {64,0}, + [I(25,203)] = {64,0}, + [I(26,203)] = {64,0}, + [I(27,203)] = {64,0}, + [I(28,203)] = {64,0}, + [I(29,203)] = {64,0}, + [I(30,203)] = {64,0}, + [I(31,203)] = {64,0}, + [I(32,203)] = {64,0}, + [I(33,203)] = {64,0}, + [I(34,203)] = {64,0}, + [I(35,203)] = {64,0}, + [I(36,203)] = {64,0}, + [I(37,203)] = {64,0}, + [I(38,203)] = {64,0}, + [I(39,203)] = {64,0}, + [I(40,203)] = {64,0}, + [I(41,203)] = {64,0}, + [I(42,203)] = {64,0}, + [I(43,203)] = {64,0}, + [I(44,203)] = {64,0}, + [I(45,203)] = {64,0}, + [I(46,203)] = {64,0}, + [I(47,203)] = {64,0}, + [I(48,203)] = {X32,0x7FFFFDE}, + [I(49,203)] = {X32,0xFFFFFDE}, + [I(50,203)] = {X32,0x17FFFFDE}, + [I(51,203)] = {64,0}, + [I(52,203)] = {64,0}, + [I(53,203)] = {64,0}, + [I(54,203)] = {64,0}, + [I(55,203)] = {64,0}, + [I(56,203)] = {64,0}, + [I(57,203)] = {64,0}, + [I(58,203)] = {64,0}, + [I(59,203)] = {64,0}, + [I(60,203)] = {64,0}, + [I(61,203)] = {64,0}, + [I(62,203)] = {64,0}, + [I(63,203)] = {64,0}, + [I(64,203)] = {64,0}, + [I(65,203)] = {64,0}, + [I(66,203)] = {64,0}, + [I(67,203)] = {64,0}, + [I(68,203)] = {64,0}, + [I(69,203)] = {64,0}, + [I(70,203)] = {64,0}, + [I(71,203)] = {64,0}, + [I(72,203)] = {64,0}, + [I(73,203)] = {64,0}, + [I(74,203)] = {64,0}, + [I(75,203)] = {64,0}, + [I(76,203)] = {64,0}, + [I(77,203)] = {64,0}, + [I(78,203)] = {64,0}, + [I(79,203)] = {64,0}, + [I(80,203)] = {64,0}, + [I(81,203)] = {64,0}, + [I(82,203)] = {64,0}, + [I(83,203)] = {64,0}, + [I(84,203)] = {64,0}, + [I(85,203)] = {64,0}, + [I(86,203)] = {64,0}, + [I(87,203)] = {64,0}, + [I(88,203)] = {64,0}, + [I(89,203)] = {64,0}, + [I(90,203)] = {64,0}, + [I(91,203)] = {64,0}, + [I(92,203)] = {64,0}, + [I(93,203)] = {64,0}, + [I(94,203)] = {64,0}, + [I(95,203)] = {64,0}, + [I(96,203)] = {64,0}, + [I(97,203)] = {X32,0x1FFFFFDE}, + [I(98,203)] = {64,0}, + [I(99,203)] = {X32,0x27FFFFDE}, + [I(100,203)] = {64,0}, + [I(101,203)] = {X32,0x2FFFFFDE}, + [I(102,203)] = {64,0}, + [I(103,203)] = {64,0}, + [I(104,203)] = {64,0}, + [I(105,203)] = {X32,0x37FFFFDE}, + [I(106,203)] = {64,0}, + [I(107,203)] = {64,0}, + [I(108,203)] = {64,0}, + [I(109,203)] = {64,0}, + [I(110,203)] = {64,0}, + [I(111,203)] = {X32,0x3FFFFFDE}, + [I(112,203)] = {64,0}, + [I(113,203)] = {64,0}, + [I(114,203)] = {64,0}, + [I(115,203)] = {X32,0x47FFFFDE}, + [I(116,203)] = {X32,0x4FFFFFDE}, + [I(117,203)] = {64,0}, + [I(118,203)] = {64,0}, + [I(119,203)] = {64,0}, + [I(120,203)] = {64,0}, + [I(121,203)] = {64,0}, + [I(122,203)] = {64,0}, + [I(123,203)] = {64,0}, + [I(124,203)] = {64,0}, + [I(125,203)] = {64,0}, + [I(126,203)] = {64,0}, + [I(127,203)] = {64,0}, + [I(128,203)] = {64,0}, + [I(129,203)] = {64,0}, + [I(130,203)] = {64,0}, + [I(131,203)] = {64,0}, + [I(132,203)] = {64,0}, + [I(133,203)] = {64,0}, + [I(134,203)] = {64,0}, + [I(135,203)] = {64,0}, + [I(136,203)] = {64,0}, + [I(137,203)] = {64,0}, + [I(138,203)] = {64,0}, + [I(139,203)] = {64,0}, + [I(140,203)] = {64,0}, + [I(141,203)] = {64,0}, + [I(142,203)] = {64,0}, + [I(143,203)] = {64,0}, + [I(144,203)] = {64,0}, + [I(145,203)] = {64,0}, + [I(146,203)] = {64,0}, + [I(147,203)] = {64,0}, + [I(148,203)] = {64,0}, + [I(149,203)] = {64,0}, + [I(150,203)] = {64,0}, + [I(151,203)] = {64,0}, + [I(152,203)] = {64,0}, + [I(153,203)] = {64,0}, + [I(154,203)] = {64,0}, + [I(155,203)] = {64,0}, + [I(156,203)] = {64,0}, + [I(157,203)] = {64,0}, + [I(158,203)] = {64,0}, + [I(159,203)] = {64,0}, + [I(160,203)] = {64,0}, + [I(161,203)] = {64,0}, + [I(162,203)] = {64,0}, + [I(163,203)] = {64,0}, + [I(164,203)] = {64,0}, + [I(165,203)] = {64,0}, + [I(166,203)] = {64,0}, + [I(167,203)] = {64,0}, + [I(168,203)] = {64,0}, + [I(169,203)] = {64,0}, + [I(170,203)] = {64,0}, + [I(171,203)] = {64,0}, + [I(172,203)] = {64,0}, + [I(173,203)] = {64,0}, + [I(174,203)] = {64,0}, + [I(175,203)] = {64,0}, + [I(176,203)] = {64,0}, + [I(177,203)] = {64,0}, + [I(178,203)] = {64,0}, + [I(179,203)] = {64,0}, + [I(180,203)] = {64,0}, + [I(181,203)] = {64,0}, + [I(182,203)] = {64,0}, + [I(183,203)] = {64,0}, + [I(184,203)] = {64,0}, + [I(185,203)] = {64,0}, + [I(186,203)] = {64,0}, + [I(187,203)] = {64,0}, + [I(188,203)] = {64,0}, + [I(189,203)] = {64,0}, + [I(190,203)] = {64,0}, + [I(191,203)] = {64,0}, + [I(192,203)] = {64,0}, + [I(193,203)] = {64,0}, + [I(194,203)] = {64,0}, + [I(195,203)] = {64,0}, + [I(196,203)] = {64,0}, + [I(197,203)] = {64,0}, + [I(198,203)] = {64,0}, + [I(199,203)] = {64,0}, + [I(200,203)] = {64,0}, + [I(201,203)] = {64,0}, + [I(202,203)] = {64,0}, + [I(203,203)] = {64,0}, + [I(204,203)] = {64,0}, + [I(205,203)] = {64,0}, + [I(206,203)] = {64,0}, + [I(207,203)] = {64,0}, + [I(208,203)] = {64,0}, + [I(209,203)] = {64,0}, + [I(210,203)] = {64,0}, + [I(211,203)] = {64,0}, + [I(212,203)] = {64,0}, + [I(213,203)] = {64,0}, + [I(214,203)] = {64,0}, + [I(215,203)] = {64,0}, + [I(216,203)] = {64,0}, + [I(217,203)] = {64,0}, + [I(218,203)] = {64,0}, + [I(219,203)] = {64,0}, + [I(220,203)] = {64,0}, + [I(221,203)] = {64,0}, + [I(222,203)] = {64,0}, + [I(223,203)] = {64,0}, + [I(224,203)] = {64,0}, + [I(225,203)] = {64,0}, + [I(226,203)] = {64,0}, + [I(227,203)] = {64,0}, + [I(228,203)] = {64,0}, + [I(229,203)] = {64,0}, + [I(230,203)] = {64,0}, + [I(231,203)] = {64,0}, + [I(232,203)] = {64,0}, + [I(233,203)] = {64,0}, + [I(234,203)] = {64,0}, + [I(235,203)] = {64,0}, + [I(236,203)] = {64,0}, + [I(237,203)] = {64,0}, + [I(238,203)] = {64,0}, + [I(239,203)] = {64,0}, + [I(240,203)] = {64,0}, + [I(241,203)] = {64,0}, + [I(242,203)] = {64,0}, + [I(243,203)] = {64,0}, + [I(244,203)] = {64,0}, + [I(245,203)] = {64,0}, + [I(246,203)] = {64,0}, + [I(247,203)] = {64,0}, + [I(248,203)] = {64,0}, + [I(249,203)] = {64,0}, + [I(250,203)] = {64,0}, + [I(251,203)] = {64,0}, + [I(252,203)] = {64,0}, + [I(253,203)] = {64,0}, + [I(254,203)] = {64,0}, + [I(255,203)] = {64,0}, + [I(0,204)] = {64,0}, + [I(1,204)] = {64,0}, + [I(2,204)] = {64,0}, + [I(3,204)] = {64,0}, + [I(4,204)] = {64,0}, + [I(5,204)] = {64,0}, + [I(6,204)] = {64,0}, + [I(7,204)] = {64,0}, + [I(8,204)] = {64,0}, + [I(9,204)] = {64,0}, + [I(10,204)] = {64,0}, + [I(11,204)] = {64,0}, + [I(12,204)] = {64,0}, + [I(13,204)] = {64,0}, + [I(14,204)] = {64,0}, + [I(15,204)] = {64,0}, + [I(16,204)] = {64,0}, + [I(17,204)] = {64,0}, + [I(18,204)] = {64,0}, + [I(19,204)] = {64,0}, + [I(20,204)] = {64,0}, + [I(21,204)] = {64,0}, + [I(22,204)] = {64,0}, + [I(23,204)] = {64,0}, + [I(24,204)] = {64,0}, + [I(25,204)] = {64,0}, + [I(26,204)] = {64,0}, + [I(27,204)] = {64,0}, + [I(28,204)] = {64,0}, + [I(29,204)] = {64,0}, + [I(30,204)] = {64,0}, + [I(31,204)] = {64,0}, + [I(32,204)] = {64,0}, + [I(33,204)] = {64,0}, + [I(34,204)] = {64,0}, + [I(35,204)] = {64,0}, + [I(36,204)] = {64,0}, + [I(37,204)] = {64,0}, + [I(38,204)] = {64,0}, + [I(39,204)] = {64,0}, + [I(40,204)] = {64,0}, + [I(41,204)] = {64,0}, + [I(42,204)] = {64,0}, + [I(43,204)] = {64,0}, + [I(44,204)] = {64,0}, + [I(45,204)] = {64,0}, + [I(46,204)] = {64,0}, + [I(47,204)] = {64,0}, + [I(48,204)] = {X32,0x7FFFFDF}, + [I(49,204)] = {X32,0xFFFFFDF}, + [I(50,204)] = {X32,0x17FFFFDF}, + [I(51,204)] = {64,0}, + [I(52,204)] = {64,0}, + [I(53,204)] = {64,0}, + [I(54,204)] = {64,0}, + [I(55,204)] = {64,0}, + [I(56,204)] = {64,0}, + [I(57,204)] = {64,0}, + [I(58,204)] = {64,0}, + [I(59,204)] = {64,0}, + [I(60,204)] = {64,0}, + [I(61,204)] = {64,0}, + [I(62,204)] = {64,0}, + [I(63,204)] = {64,0}, + [I(64,204)] = {64,0}, + [I(65,204)] = {64,0}, + [I(66,204)] = {64,0}, + [I(67,204)] = {64,0}, + [I(68,204)] = {64,0}, + [I(69,204)] = {64,0}, + [I(70,204)] = {64,0}, + [I(71,204)] = {64,0}, + [I(72,204)] = {64,0}, + [I(73,204)] = {64,0}, + [I(74,204)] = {64,0}, + [I(75,204)] = {64,0}, + [I(76,204)] = {64,0}, + [I(77,204)] = {64,0}, + [I(78,204)] = {64,0}, + [I(79,204)] = {64,0}, + [I(80,204)] = {64,0}, + [I(81,204)] = {64,0}, + [I(82,204)] = {64,0}, + [I(83,204)] = {64,0}, + [I(84,204)] = {64,0}, + [I(85,204)] = {64,0}, + [I(86,204)] = {64,0}, + [I(87,204)] = {64,0}, + [I(88,204)] = {64,0}, + [I(89,204)] = {64,0}, + [I(90,204)] = {64,0}, + [I(91,204)] = {64,0}, + [I(92,204)] = {64,0}, + [I(93,204)] = {64,0}, + [I(94,204)] = {64,0}, + [I(95,204)] = {64,0}, + [I(96,204)] = {64,0}, + [I(97,204)] = {X32,0x1FFFFFDF}, + [I(98,204)] = {64,0}, + [I(99,204)] = {X32,0x27FFFFDF}, + [I(100,204)] = {64,0}, + [I(101,204)] = {X32,0x2FFFFFDF}, + [I(102,204)] = {64,0}, + [I(103,204)] = {64,0}, + [I(104,204)] = {64,0}, + [I(105,204)] = {X32,0x37FFFFDF}, + [I(106,204)] = {64,0}, + [I(107,204)] = {64,0}, + [I(108,204)] = {64,0}, + [I(109,204)] = {64,0}, + [I(110,204)] = {64,0}, + [I(111,204)] = {X32,0x3FFFFFDF}, + [I(112,204)] = {64,0}, + [I(113,204)] = {64,0}, + [I(114,204)] = {64,0}, + [I(115,204)] = {X32,0x47FFFFDF}, + [I(116,204)] = {X32,0x4FFFFFDF}, + [I(117,204)] = {64,0}, + [I(118,204)] = {64,0}, + [I(119,204)] = {64,0}, + [I(120,204)] = {64,0}, + [I(121,204)] = {64,0}, + [I(122,204)] = {64,0}, + [I(123,204)] = {64,0}, + [I(124,204)] = {64,0}, + [I(125,204)] = {64,0}, + [I(126,204)] = {64,0}, + [I(127,204)] = {64,0}, + [I(128,204)] = {64,0}, + [I(129,204)] = {64,0}, + [I(130,204)] = {64,0}, + [I(131,204)] = {64,0}, + [I(132,204)] = {64,0}, + [I(133,204)] = {64,0}, + [I(134,204)] = {64,0}, + [I(135,204)] = {64,0}, + [I(136,204)] = {64,0}, + [I(137,204)] = {64,0}, + [I(138,204)] = {64,0}, + [I(139,204)] = {64,0}, + [I(140,204)] = {64,0}, + [I(141,204)] = {64,0}, + [I(142,204)] = {64,0}, + [I(143,204)] = {64,0}, + [I(144,204)] = {64,0}, + [I(145,204)] = {64,0}, + [I(146,204)] = {64,0}, + [I(147,204)] = {64,0}, + [I(148,204)] = {64,0}, + [I(149,204)] = {64,0}, + [I(150,204)] = {64,0}, + [I(151,204)] = {64,0}, + [I(152,204)] = {64,0}, + [I(153,204)] = {64,0}, + [I(154,204)] = {64,0}, + [I(155,204)] = {64,0}, + [I(156,204)] = {64,0}, + [I(157,204)] = {64,0}, + [I(158,204)] = {64,0}, + [I(159,204)] = {64,0}, + [I(160,204)] = {64,0}, + [I(161,204)] = {64,0}, + [I(162,204)] = {64,0}, + [I(163,204)] = {64,0}, + [I(164,204)] = {64,0}, + [I(165,204)] = {64,0}, + [I(166,204)] = {64,0}, + [I(167,204)] = {64,0}, + [I(168,204)] = {64,0}, + [I(169,204)] = {64,0}, + [I(170,204)] = {64,0}, + [I(171,204)] = {64,0}, + [I(172,204)] = {64,0}, + [I(173,204)] = {64,0}, + [I(174,204)] = {64,0}, + [I(175,204)] = {64,0}, + [I(176,204)] = {64,0}, + [I(177,204)] = {64,0}, + [I(178,204)] = {64,0}, + [I(179,204)] = {64,0}, + [I(180,204)] = {64,0}, + [I(181,204)] = {64,0}, + [I(182,204)] = {64,0}, + [I(183,204)] = {64,0}, + [I(184,204)] = {64,0}, + [I(185,204)] = {64,0}, + [I(186,204)] = {64,0}, + [I(187,204)] = {64,0}, + [I(188,204)] = {64,0}, + [I(189,204)] = {64,0}, + [I(190,204)] = {64,0}, + [I(191,204)] = {64,0}, + [I(192,204)] = {64,0}, + [I(193,204)] = {64,0}, + [I(194,204)] = {64,0}, + [I(195,204)] = {64,0}, + [I(196,204)] = {64,0}, + [I(197,204)] = {64,0}, + [I(198,204)] = {64,0}, + [I(199,204)] = {64,0}, + [I(200,204)] = {64,0}, + [I(201,204)] = {64,0}, + [I(202,204)] = {64,0}, + [I(203,204)] = {64,0}, + [I(204,204)] = {64,0}, + [I(205,204)] = {64,0}, + [I(206,204)] = {64,0}, + [I(207,204)] = {64,0}, + [I(208,204)] = {64,0}, + [I(209,204)] = {64,0}, + [I(210,204)] = {64,0}, + [I(211,204)] = {64,0}, + [I(212,204)] = {64,0}, + [I(213,204)] = {64,0}, + [I(214,204)] = {64,0}, + [I(215,204)] = {64,0}, + [I(216,204)] = {64,0}, + [I(217,204)] = {64,0}, + [I(218,204)] = {64,0}, + [I(219,204)] = {64,0}, + [I(220,204)] = {64,0}, + [I(221,204)] = {64,0}, + [I(222,204)] = {64,0}, + [I(223,204)] = {64,0}, + [I(224,204)] = {64,0}, + [I(225,204)] = {64,0}, + [I(226,204)] = {64,0}, + [I(227,204)] = {64,0}, + [I(228,204)] = {64,0}, + [I(229,204)] = {64,0}, + [I(230,204)] = {64,0}, + [I(231,204)] = {64,0}, + [I(232,204)] = {64,0}, + [I(233,204)] = {64,0}, + [I(234,204)] = {64,0}, + [I(235,204)] = {64,0}, + [I(236,204)] = {64,0}, + [I(237,204)] = {64,0}, + [I(238,204)] = {64,0}, + [I(239,204)] = {64,0}, + [I(240,204)] = {64,0}, + [I(241,204)] = {64,0}, + [I(242,204)] = {64,0}, + [I(243,204)] = {64,0}, + [I(244,204)] = {64,0}, + [I(245,204)] = {64,0}, + [I(246,204)] = {64,0}, + [I(247,204)] = {64,0}, + [I(248,204)] = {64,0}, + [I(249,204)] = {64,0}, + [I(250,204)] = {64,0}, + [I(251,204)] = {64,0}, + [I(252,204)] = {64,0}, + [I(253,204)] = {64,0}, + [I(254,204)] = {64,0}, + [I(255,204)] = {64,0}, + [I(0,205)] = {64,0}, + [I(1,205)] = {64,0}, + [I(2,205)] = {64,0}, + [I(3,205)] = {64,0}, + [I(4,205)] = {64,0}, + [I(5,205)] = {64,0}, + [I(6,205)] = {64,0}, + [I(7,205)] = {64,0}, + [I(8,205)] = {64,0}, + [I(9,205)] = {64,0}, + [I(10,205)] = {64,0}, + [I(11,205)] = {64,0}, + [I(12,205)] = {64,0}, + [I(13,205)] = {64,0}, + [I(14,205)] = {64,0}, + [I(15,205)] = {64,0}, + [I(16,205)] = {64,0}, + [I(17,205)] = {64,0}, + [I(18,205)] = {64,0}, + [I(19,205)] = {64,0}, + [I(20,205)] = {64,0}, + [I(21,205)] = {64,0}, + [I(22,205)] = {64,0}, + [I(23,205)] = {64,0}, + [I(24,205)] = {64,0}, + [I(25,205)] = {64,0}, + [I(26,205)] = {64,0}, + [I(27,205)] = {64,0}, + [I(28,205)] = {64,0}, + [I(29,205)] = {64,0}, + [I(30,205)] = {64,0}, + [I(31,205)] = {64,0}, + [I(32,205)] = {X32,0x53FFFFE5}, + [I(33,205)] = {64,0}, + [I(34,205)] = {64,0}, + [I(35,205)] = {64,0}, + [I(36,205)] = {64,0}, + [I(37,205)] = {X32,0x57FFFFE5}, + [I(38,205)] = {64,0}, + [I(39,205)] = {64,0}, + [I(40,205)] = {64,0}, + [I(41,205)] = {64,0}, + [I(42,205)] = {64,0}, + [I(43,205)] = {64,0}, + [I(44,205)] = {64,0}, + [I(45,205)] = {X32,0x5BFFFFE5}, + [I(46,205)] = {X32,0x5FFFFFE5}, + [I(47,205)] = {X32,0x63FFFFE5}, + [I(48,205)] = {31,0x3FFFFE5}, + [I(49,205)] = {31,0x7FFFFE5}, + [I(50,205)] = {31,0xBFFFFE5}, + [I(51,205)] = {X32,0x67FFFFE5}, + [I(52,205)] = {X32,0x6BFFFFE5}, + [I(53,205)] = {X32,0x6FFFFFE5}, + [I(54,205)] = {X32,0x73FFFFE5}, + [I(55,205)] = {X32,0x77FFFFE5}, + [I(56,205)] = {X32,0x7BFFFFE5}, + [I(57,205)] = {X32,0x7FFFFFE5}, + [I(58,205)] = {64,0}, + [I(59,205)] = {64,0}, + [I(60,205)] = {64,0}, + [I(61,205)] = {X32,0x83FFFFE5}, + [I(62,205)] = {64,0}, + [I(63,205)] = {64,0}, + [I(64,205)] = {64,0}, + [I(65,205)] = {X32,0x87FFFFE5}, + [I(66,205)] = {64,0}, + [I(67,205)] = {64,0}, + [I(68,205)] = {64,0}, + [I(69,205)] = {64,0}, + [I(70,205)] = {64,0}, + [I(71,205)] = {64,0}, + [I(72,205)] = {64,0}, + [I(73,205)] = {64,0}, + [I(74,205)] = {64,0}, + [I(75,205)] = {64,0}, + [I(76,205)] = {64,0}, + [I(77,205)] = {64,0}, + [I(78,205)] = {64,0}, + [I(79,205)] = {64,0}, + [I(80,205)] = {64,0}, + [I(81,205)] = {64,0}, + [I(82,205)] = {64,0}, + [I(83,205)] = {64,0}, + [I(84,205)] = {64,0}, + [I(85,205)] = {64,0}, + [I(86,205)] = {64,0}, + [I(87,205)] = {64,0}, + [I(88,205)] = {64,0}, + [I(89,205)] = {64,0}, + [I(90,205)] = {64,0}, + [I(91,205)] = {64,0}, + [I(92,205)] = {64,0}, + [I(93,205)] = {64,0}, + [I(94,205)] = {64,0}, + [I(95,205)] = {X32,0x8BFFFFE5}, + [I(96,205)] = {64,0}, + [I(97,205)] = {31,0xFFFFFE5}, + [I(98,205)] = {X32,0x8FFFFFE5}, + [I(99,205)] = {31,0x13FFFFE5}, + [I(100,205)] = {X32,0x93FFFFE5}, + [I(101,205)] = {31,0x17FFFFE5}, + [I(102,205)] = {X32,0x97FFFFE5}, + [I(103,205)] = {X32,0x9BFFFFE5}, + [I(104,205)] = {X32,0x9FFFFFE5}, + [I(105,205)] = {31,0x1BFFFFE5}, + [I(106,205)] = {64,0}, + [I(107,205)] = {64,0}, + [I(108,205)] = {X32,0xA3FFFFE5}, + [I(109,205)] = {X32,0xA7FFFFE5}, + [I(110,205)] = {X32,0xABFFFFE5}, + [I(111,205)] = {31,0x1FFFFFE5}, + [I(112,205)] = {X32,0xAFFFFFE5}, + [I(113,205)] = {64,0}, + [I(114,205)] = {X32,0xB3FFFFE5}, + [I(115,205)] = {31,0x23FFFFE5}, + [I(116,205)] = {31,0x27FFFFE5}, + [I(117,205)] = {X32,0xB7FFFFE5}, + [I(118,205)] = {64,0}, + [I(119,205)] = {64,0}, + [I(120,205)] = {64,0}, + [I(121,205)] = {64,0}, + [I(122,205)] = {64,0}, + [I(123,205)] = {64,0}, + [I(124,205)] = {64,0}, + [I(125,205)] = {64,0}, + [I(126,205)] = {64,0}, + [I(127,205)] = {64,0}, + [I(128,205)] = {64,0}, + [I(129,205)] = {64,0}, + [I(130,205)] = {64,0}, + [I(131,205)] = {64,0}, + [I(132,205)] = {64,0}, + [I(133,205)] = {64,0}, + [I(134,205)] = {64,0}, + [I(135,205)] = {64,0}, + [I(136,205)] = {64,0}, + [I(137,205)] = {64,0}, + [I(138,205)] = {64,0}, + [I(139,205)] = {64,0}, + [I(140,205)] = {64,0}, + [I(141,205)] = {64,0}, + [I(142,205)] = {64,0}, + [I(143,205)] = {64,0}, + [I(144,205)] = {64,0}, + [I(145,205)] = {64,0}, + [I(146,205)] = {64,0}, + [I(147,205)] = {64,0}, + [I(148,205)] = {64,0}, + [I(149,205)] = {64,0}, + [I(150,205)] = {64,0}, + [I(151,205)] = {64,0}, + [I(152,205)] = {64,0}, + [I(153,205)] = {64,0}, + [I(154,205)] = {64,0}, + [I(155,205)] = {64,0}, + [I(156,205)] = {64,0}, + [I(157,205)] = {64,0}, + [I(158,205)] = {64,0}, + [I(159,205)] = {64,0}, + [I(160,205)] = {64,0}, + [I(161,205)] = {64,0}, + [I(162,205)] = {64,0}, + [I(163,205)] = {64,0}, + [I(164,205)] = {64,0}, + [I(165,205)] = {64,0}, + [I(166,205)] = {64,0}, + [I(167,205)] = {64,0}, + [I(168,205)] = {64,0}, + [I(169,205)] = {64,0}, + [I(170,205)] = {64,0}, + [I(171,205)] = {64,0}, + [I(172,205)] = {64,0}, + [I(173,205)] = {64,0}, + [I(174,205)] = {64,0}, + [I(175,205)] = {64,0}, + [I(176,205)] = {64,0}, + [I(177,205)] = {64,0}, + [I(178,205)] = {64,0}, + [I(179,205)] = {64,0}, + [I(180,205)] = {64,0}, + [I(181,205)] = {64,0}, + [I(182,205)] = {64,0}, + [I(183,205)] = {64,0}, + [I(184,205)] = {64,0}, + [I(185,205)] = {64,0}, + [I(186,205)] = {64,0}, + [I(187,205)] = {64,0}, + [I(188,205)] = {64,0}, + [I(189,205)] = {64,0}, + [I(190,205)] = {64,0}, + [I(191,205)] = {64,0}, + [I(192,205)] = {64,0}, + [I(193,205)] = {64,0}, + [I(194,205)] = {64,0}, + [I(195,205)] = {64,0}, + [I(196,205)] = {64,0}, + [I(197,205)] = {64,0}, + [I(198,205)] = {64,0}, + [I(199,205)] = {64,0}, + [I(200,205)] = {64,0}, + [I(201,205)] = {64,0}, + [I(202,205)] = {64,0}, + [I(203,205)] = {64,0}, + [I(204,205)] = {64,0}, + [I(205,205)] = {64,0}, + [I(206,205)] = {64,0}, + [I(207,205)] = {64,0}, + [I(208,205)] = {64,0}, + [I(209,205)] = {64,0}, + [I(210,205)] = {64,0}, + [I(211,205)] = {64,0}, + [I(212,205)] = {64,0}, + [I(213,205)] = {64,0}, + [I(214,205)] = {64,0}, + [I(215,205)] = {64,0}, + [I(216,205)] = {64,0}, + [I(217,205)] = {64,0}, + [I(218,205)] = {64,0}, + [I(219,205)] = {64,0}, + [I(220,205)] = {64,0}, + [I(221,205)] = {64,0}, + [I(222,205)] = {64,0}, + [I(223,205)] = {64,0}, + [I(224,205)] = {64,0}, + [I(225,205)] = {64,0}, + [I(226,205)] = {64,0}, + [I(227,205)] = {64,0}, + [I(228,205)] = {64,0}, + [I(229,205)] = {64,0}, + [I(230,205)] = {64,0}, + [I(231,205)] = {64,0}, + [I(232,205)] = {64,0}, + [I(233,205)] = {64,0}, + [I(234,205)] = {64,0}, + [I(235,205)] = {64,0}, + [I(236,205)] = {64,0}, + [I(237,205)] = {64,0}, + [I(238,205)] = {64,0}, + [I(239,205)] = {64,0}, + [I(240,205)] = {64,0}, + [I(241,205)] = {64,0}, + [I(242,205)] = {64,0}, + [I(243,205)] = {64,0}, + [I(244,205)] = {64,0}, + [I(245,205)] = {64,0}, + [I(246,205)] = {64,0}, + [I(247,205)] = {64,0}, + [I(248,205)] = {64,0}, + [I(249,205)] = {64,0}, + [I(250,205)] = {64,0}, + [I(251,205)] = {64,0}, + [I(252,205)] = {64,0}, + [I(253,205)] = {64,0}, + [I(254,205)] = {64,0}, + [I(255,205)] = {64,0}, + [I(0,206)] = {64,0}, + [I(1,206)] = {64,0}, + [I(2,206)] = {64,0}, + [I(3,206)] = {64,0}, + [I(4,206)] = {64,0}, + [I(5,206)] = {64,0}, + [I(6,206)] = {64,0}, + [I(7,206)] = {64,0}, + [I(8,206)] = {64,0}, + [I(9,206)] = {64,0}, + [I(10,206)] = {64,0}, + [I(11,206)] = {64,0}, + [I(12,206)] = {64,0}, + [I(13,206)] = {64,0}, + [I(14,206)] = {64,0}, + [I(15,206)] = {64,0}, + [I(16,206)] = {64,0}, + [I(17,206)] = {64,0}, + [I(18,206)] = {64,0}, + [I(19,206)] = {64,0}, + [I(20,206)] = {64,0}, + [I(21,206)] = {64,0}, + [I(22,206)] = {64,0}, + [I(23,206)] = {64,0}, + [I(24,206)] = {64,0}, + [I(25,206)] = {64,0}, + [I(26,206)] = {64,0}, + [I(27,206)] = {64,0}, + [I(28,206)] = {64,0}, + [I(29,206)] = {64,0}, + [I(30,206)] = {64,0}, + [I(31,206)] = {64,0}, + [I(32,206)] = {30,0x14FFFFF1}, + [I(33,206)] = {64,0}, + [I(34,206)] = {64,0}, + [I(35,206)] = {64,0}, + [I(36,206)] = {64,0}, + [I(37,206)] = {30,0x15FFFFF1}, + [I(38,206)] = {X32,0xF8FFFFF1}, + [I(39,206)] = {64,0}, + [I(40,206)] = {64,0}, + [I(41,206)] = {64,0}, + [I(42,206)] = {X32,0xF9FFFFF1}, + [I(43,206)] = {64,0}, + [I(44,206)] = {X32,0xFAFFFFF1}, + [I(45,206)] = {30,0x16FFFFF1}, + [I(46,206)] = {30,0x17FFFFF1}, + [I(47,206)] = {30,0x18FFFFF1}, + [I(48,206)] = {29,0xFFFFF1}, + [I(49,206)] = {29,0x1FFFFF1}, + [I(50,206)] = {29,0x2FFFFF1}, + [I(51,206)] = {30,0x19FFFFF1}, + [I(52,206)] = {30,0x1AFFFFF1}, + [I(53,206)] = {30,0x1BFFFFF1}, + [I(54,206)] = {30,0x1CFFFFF1}, + [I(55,206)] = {30,0x1DFFFFF1}, + [I(56,206)] = {30,0x1EFFFFF1}, + [I(57,206)] = {30,0x1FFFFFF1}, + [I(58,206)] = {31,0x5CFFFFF1}, + [I(59,206)] = {X32,0xFBFFFFF1}, + [I(60,206)] = {64,0}, + [I(61,206)] = {30,0x20FFFFF1}, + [I(62,206)] = {64,0}, + [I(63,206)] = {64,0}, + [I(64,206)] = {64,0}, + [I(65,206)] = {30,0x21FFFFF1}, + [I(66,206)] = {31,0x5DFFFFF1}, + [I(67,206)] = {31,0x5EFFFFF1}, + [I(68,206)] = {31,0x5FFFFFF1}, + [I(69,206)] = {31,0x60FFFFF1}, + [I(70,206)] = {31,0x61FFFFF1}, + [I(71,206)] = {31,0x62FFFFF1}, + [I(72,206)] = {31,0x63FFFFF1}, + [I(73,206)] = {31,0x64FFFFF1}, + [I(74,206)] = {31,0x65FFFFF1}, + [I(75,206)] = {31,0x66FFFFF1}, + [I(76,206)] = {31,0x67FFFFF1}, + [I(77,206)] = {31,0x68FFFFF1}, + [I(78,206)] = {31,0x69FFFFF1}, + [I(79,206)] = {31,0x6AFFFFF1}, + [I(80,206)] = {31,0x6BFFFFF1}, + [I(81,206)] = {31,0x6CFFFFF1}, + [I(82,206)] = {31,0x6DFFFFF1}, + [I(83,206)] = {31,0x6EFFFFF1}, + [I(84,206)] = {31,0x6FFFFFF1}, + [I(85,206)] = {31,0x70FFFFF1}, + [I(86,206)] = {31,0x71FFFFF1}, + [I(87,206)] = {31,0x72FFFFF1}, + [I(88,206)] = {X32,0xFCFFFFF1}, + [I(89,206)] = {31,0x73FFFFF1}, + [I(90,206)] = {X32,0xFDFFFFF1}, + [I(91,206)] = {64,0}, + [I(92,206)] = {64,0}, + [I(93,206)] = {64,0}, + [I(94,206)] = {64,0}, + [I(95,206)] = {30,0x22FFFFF1}, + [I(96,206)] = {64,0}, + [I(97,206)] = {29,0x3FFFFF1}, + [I(98,206)] = {30,0x23FFFFF1}, + [I(99,206)] = {29,0x4FFFFF1}, + [I(100,206)] = {30,0x24FFFFF1}, + [I(101,206)] = {29,0x5FFFFF1}, + [I(102,206)] = {30,0x25FFFFF1}, + [I(103,206)] = {30,0x26FFFFF1}, + [I(104,206)] = {30,0x27FFFFF1}, + [I(105,206)] = {29,0x6FFFFF1}, + [I(106,206)] = {31,0x74FFFFF1}, + [I(107,206)] = {31,0x75FFFFF1}, + [I(108,206)] = {30,0x28FFFFF1}, + [I(109,206)] = {30,0x29FFFFF1}, + [I(110,206)] = {30,0x2AFFFFF1}, + [I(111,206)] = {29,0x7FFFFF1}, + [I(112,206)] = {30,0x2BFFFFF1}, + [I(113,206)] = {31,0x76FFFFF1}, + [I(114,206)] = {30,0x2CFFFFF1}, + [I(115,206)] = {29,0x8FFFFF1}, + [I(116,206)] = {29,0x9FFFFF1}, + [I(117,206)] = {30,0x2DFFFFF1}, + [I(118,206)] = {31,0x77FFFFF1}, + [I(119,206)] = {31,0x78FFFFF1}, + [I(120,206)] = {31,0x79FFFFF1}, + [I(121,206)] = {31,0x7AFFFFF1}, + [I(122,206)] = {31,0x7BFFFFF1}, + [I(123,206)] = {64,0}, + [I(124,206)] = {64,0}, + [I(125,206)] = {64,0}, + [I(126,206)] = {64,0}, + [I(127,206)] = {64,0}, + [I(128,206)] = {64,0}, + [I(129,206)] = {64,0}, + [I(130,206)] = {64,0}, + [I(131,206)] = {64,0}, + [I(132,206)] = {64,0}, + [I(133,206)] = {64,0}, + [I(134,206)] = {64,0}, + [I(135,206)] = {64,0}, + [I(136,206)] = {64,0}, + [I(137,206)] = {64,0}, + [I(138,206)] = {64,0}, + [I(139,206)] = {64,0}, + [I(140,206)] = {64,0}, + [I(141,206)] = {64,0}, + [I(142,206)] = {64,0}, + [I(143,206)] = {64,0}, + [I(144,206)] = {64,0}, + [I(145,206)] = {64,0}, + [I(146,206)] = {64,0}, + [I(147,206)] = {64,0}, + [I(148,206)] = {64,0}, + [I(149,206)] = {64,0}, + [I(150,206)] = {64,0}, + [I(151,206)] = {64,0}, + [I(152,206)] = {64,0}, + [I(153,206)] = {64,0}, + [I(154,206)] = {64,0}, + [I(155,206)] = {64,0}, + [I(156,206)] = {64,0}, + [I(157,206)] = {64,0}, + [I(158,206)] = {64,0}, + [I(159,206)] = {64,0}, + [I(160,206)] = {64,0}, + [I(161,206)] = {64,0}, + [I(162,206)] = {64,0}, + [I(163,206)] = {64,0}, + [I(164,206)] = {64,0}, + [I(165,206)] = {64,0}, + [I(166,206)] = {64,0}, + [I(167,206)] = {64,0}, + [I(168,206)] = {64,0}, + [I(169,206)] = {64,0}, + [I(170,206)] = {64,0}, + [I(171,206)] = {64,0}, + [I(172,206)] = {64,0}, + [I(173,206)] = {64,0}, + [I(174,206)] = {64,0}, + [I(175,206)] = {64,0}, + [I(176,206)] = {64,0}, + [I(177,206)] = {64,0}, + [I(178,206)] = {64,0}, + [I(179,206)] = {64,0}, + [I(180,206)] = {64,0}, + [I(181,206)] = {64,0}, + [I(182,206)] = {64,0}, + [I(183,206)] = {64,0}, + [I(184,206)] = {64,0}, + [I(185,206)] = {64,0}, + [I(186,206)] = {64,0}, + [I(187,206)] = {64,0}, + [I(188,206)] = {64,0}, + [I(189,206)] = {64,0}, + [I(190,206)] = {64,0}, + [I(191,206)] = {64,0}, + [I(192,206)] = {64,0}, + [I(193,206)] = {64,0}, + [I(194,206)] = {64,0}, + [I(195,206)] = {64,0}, + [I(196,206)] = {64,0}, + [I(197,206)] = {64,0}, + [I(198,206)] = {64,0}, + [I(199,206)] = {64,0}, + [I(200,206)] = {64,0}, + [I(201,206)] = {64,0}, + [I(202,206)] = {64,0}, + [I(203,206)] = {64,0}, + [I(204,206)] = {64,0}, + [I(205,206)] = {64,0}, + [I(206,206)] = {64,0}, + [I(207,206)] = {64,0}, + [I(208,206)] = {64,0}, + [I(209,206)] = {64,0}, + [I(210,206)] = {64,0}, + [I(211,206)] = {64,0}, + [I(212,206)] = {64,0}, + [I(213,206)] = {64,0}, + [I(214,206)] = {64,0}, + [I(215,206)] = {64,0}, + [I(216,206)] = {64,0}, + [I(217,206)] = {64,0}, + [I(218,206)] = {64,0}, + [I(219,206)] = {64,0}, + [I(220,206)] = {64,0}, + [I(221,206)] = {64,0}, + [I(222,206)] = {64,0}, + [I(223,206)] = {64,0}, + [I(224,206)] = {64,0}, + [I(225,206)] = {64,0}, + [I(226,206)] = {64,0}, + [I(227,206)] = {64,0}, + [I(228,206)] = {64,0}, + [I(229,206)] = {64,0}, + [I(230,206)] = {64,0}, + [I(231,206)] = {64,0}, + [I(232,206)] = {64,0}, + [I(233,206)] = {64,0}, + [I(234,206)] = {64,0}, + [I(235,206)] = {64,0}, + [I(236,206)] = {64,0}, + [I(237,206)] = {64,0}, + [I(238,206)] = {64,0}, + [I(239,206)] = {64,0}, + [I(240,206)] = {64,0}, + [I(241,206)] = {64,0}, + [I(242,206)] = {64,0}, + [I(243,206)] = {64,0}, + [I(244,206)] = {64,0}, + [I(245,206)] = {64,0}, + [I(246,206)] = {64,0}, + [I(247,206)] = {64,0}, + [I(248,206)] = {64,0}, + [I(249,206)] = {64,0}, + [I(250,206)] = {64,0}, + [I(251,206)] = {64,0}, + [I(252,206)] = {64,0}, + [I(253,206)] = {64,0}, + [I(254,206)] = {64,0}, + [I(255,206)] = {64,0}, + [I(0,207)] = {64,0}, + [I(1,207)] = {64,0}, + [I(2,207)] = {64,0}, + [I(3,207)] = {64,0}, + [I(4,207)] = {64,0}, + [I(5,207)] = {64,0}, + [I(6,207)] = {64,0}, + [I(7,207)] = {64,0}, + [I(8,207)] = {64,0}, + [I(9,207)] = {64,0}, + [I(10,207)] = {64,0}, + [I(11,207)] = {64,0}, + [I(12,207)] = {64,0}, + [I(13,207)] = {64,0}, + [I(14,207)] = {64,0}, + [I(15,207)] = {64,0}, + [I(16,207)] = {64,0}, + [I(17,207)] = {64,0}, + [I(18,207)] = {64,0}, + [I(19,207)] = {64,0}, + [I(20,207)] = {64,0}, + [I(21,207)] = {64,0}, + [I(22,207)] = {64,0}, + [I(23,207)] = {64,0}, + [I(24,207)] = {64,0}, + [I(25,207)] = {64,0}, + [I(26,207)] = {64,0}, + [I(27,207)] = {64,0}, + [I(28,207)] = {64,0}, + [I(29,207)] = {64,0}, + [I(30,207)] = {64,0}, + [I(31,207)] = {64,0}, + [I(32,207)] = {31,0x29FFFFED}, + [I(33,207)] = {64,0}, + [I(34,207)] = {64,0}, + [I(35,207)] = {64,0}, + [I(36,207)] = {64,0}, + [I(37,207)] = {31,0x2BFFFFED}, + [I(38,207)] = {64,0}, + [I(39,207)] = {64,0}, + [I(40,207)] = {64,0}, + [I(41,207)] = {64,0}, + [I(42,207)] = {64,0}, + [I(43,207)] = {64,0}, + [I(44,207)] = {64,0}, + [I(45,207)] = {31,0x2DFFFFED}, + [I(46,207)] = {31,0x2FFFFFED}, + [I(47,207)] = {31,0x31FFFFED}, + [I(48,207)] = {30,0x1FFFFED}, + [I(49,207)] = {30,0x3FFFFED}, + [I(50,207)] = {30,0x5FFFFED}, + [I(51,207)] = {31,0x33FFFFED}, + [I(52,207)] = {31,0x35FFFFED}, + [I(53,207)] = {31,0x37FFFFED}, + [I(54,207)] = {31,0x39FFFFED}, + [I(55,207)] = {31,0x3BFFFFED}, + [I(56,207)] = {31,0x3DFFFFED}, + [I(57,207)] = {31,0x3FFFFFED}, + [I(58,207)] = {X32,0xB9FFFFED}, + [I(59,207)] = {64,0}, + [I(60,207)] = {64,0}, + [I(61,207)] = {31,0x41FFFFED}, + [I(62,207)] = {64,0}, + [I(63,207)] = {64,0}, + [I(64,207)] = {64,0}, + [I(65,207)] = {31,0x43FFFFED}, + [I(66,207)] = {X32,0xBBFFFFED}, + [I(67,207)] = {X32,0xBDFFFFED}, + [I(68,207)] = {X32,0xBFFFFFED}, + [I(69,207)] = {X32,0xC1FFFFED}, + [I(70,207)] = {X32,0xC3FFFFED}, + [I(71,207)] = {X32,0xC5FFFFED}, + [I(72,207)] = {X32,0xC7FFFFED}, + [I(73,207)] = {X32,0xC9FFFFED}, + [I(74,207)] = {X32,0xCBFFFFED}, + [I(75,207)] = {X32,0xCDFFFFED}, + [I(76,207)] = {X32,0xCFFFFFED}, + [I(77,207)] = {X32,0xD1FFFFED}, + [I(78,207)] = {X32,0xD3FFFFED}, + [I(79,207)] = {X32,0xD5FFFFED}, + [I(80,207)] = {X32,0xD7FFFFED}, + [I(81,207)] = {X32,0xD9FFFFED}, + [I(82,207)] = {X32,0xDBFFFFED}, + [I(83,207)] = {X32,0xDDFFFFED}, + [I(84,207)] = {X32,0xDFFFFFED}, + [I(85,207)] = {X32,0xE1FFFFED}, + [I(86,207)] = {X32,0xE3FFFFED}, + [I(87,207)] = {X32,0xE5FFFFED}, + [I(88,207)] = {64,0}, + [I(89,207)] = {X32,0xE7FFFFED}, + [I(90,207)] = {64,0}, + [I(91,207)] = {64,0}, + [I(92,207)] = {64,0}, + [I(93,207)] = {64,0}, + [I(94,207)] = {64,0}, + [I(95,207)] = {31,0x45FFFFED}, + [I(96,207)] = {64,0}, + [I(97,207)] = {30,0x7FFFFED}, + [I(98,207)] = {31,0x47FFFFED}, + [I(99,207)] = {30,0x9FFFFED}, + [I(100,207)] = {31,0x49FFFFED}, + [I(101,207)] = {30,0xBFFFFED}, + [I(102,207)] = {31,0x4BFFFFED}, + [I(103,207)] = {31,0x4DFFFFED}, + [I(104,207)] = {31,0x4FFFFFED}, + [I(105,207)] = {30,0xDFFFFED}, + [I(106,207)] = {X32,0xE9FFFFED}, + [I(107,207)] = {X32,0xEBFFFFED}, + [I(108,207)] = {31,0x51FFFFED}, + [I(109,207)] = {31,0x53FFFFED}, + [I(110,207)] = {31,0x55FFFFED}, + [I(111,207)] = {30,0xFFFFFED}, + [I(112,207)] = {31,0x57FFFFED}, + [I(113,207)] = {X32,0xEDFFFFED}, + [I(114,207)] = {31,0x59FFFFED}, + [I(115,207)] = {30,0x11FFFFED}, + [I(116,207)] = {30,0x13FFFFED}, + [I(117,207)] = {31,0x5BFFFFED}, + [I(118,207)] = {X32,0xEFFFFFED}, + [I(119,207)] = {X32,0xF1FFFFED}, + [I(120,207)] = {X32,0xF3FFFFED}, + [I(121,207)] = {X32,0xF5FFFFED}, + [I(122,207)] = {X32,0xF7FFFFED}, + [I(123,207)] = {64,0}, + [I(124,207)] = {64,0}, + [I(125,207)] = {64,0}, + [I(126,207)] = {64,0}, + [I(127,207)] = {64,0}, + [I(128,207)] = {64,0}, + [I(129,207)] = {64,0}, + [I(130,207)] = {64,0}, + [I(131,207)] = {64,0}, + [I(132,207)] = {64,0}, + [I(133,207)] = {64,0}, + [I(134,207)] = {64,0}, + [I(135,207)] = {64,0}, + [I(136,207)] = {64,0}, + [I(137,207)] = {64,0}, + [I(138,207)] = {64,0}, + [I(139,207)] = {64,0}, + [I(140,207)] = {64,0}, + [I(141,207)] = {64,0}, + [I(142,207)] = {64,0}, + [I(143,207)] = {64,0}, + [I(144,207)] = {64,0}, + [I(145,207)] = {64,0}, + [I(146,207)] = {64,0}, + [I(147,207)] = {64,0}, + [I(148,207)] = {64,0}, + [I(149,207)] = {64,0}, + [I(150,207)] = {64,0}, + [I(151,207)] = {64,0}, + [I(152,207)] = {64,0}, + [I(153,207)] = {64,0}, + [I(154,207)] = {64,0}, + [I(155,207)] = {64,0}, + [I(156,207)] = {64,0}, + [I(157,207)] = {64,0}, + [I(158,207)] = {64,0}, + [I(159,207)] = {64,0}, + [I(160,207)] = {64,0}, + [I(161,207)] = {64,0}, + [I(162,207)] = {64,0}, + [I(163,207)] = {64,0}, + [I(164,207)] = {64,0}, + [I(165,207)] = {64,0}, + [I(166,207)] = {64,0}, + [I(167,207)] = {64,0}, + [I(168,207)] = {64,0}, + [I(169,207)] = {64,0}, + [I(170,207)] = {64,0}, + [I(171,207)] = {64,0}, + [I(172,207)] = {64,0}, + [I(173,207)] = {64,0}, + [I(174,207)] = {64,0}, + [I(175,207)] = {64,0}, + [I(176,207)] = {64,0}, + [I(177,207)] = {64,0}, + [I(178,207)] = {64,0}, + [I(179,207)] = {64,0}, + [I(180,207)] = {64,0}, + [I(181,207)] = {64,0}, + [I(182,207)] = {64,0}, + [I(183,207)] = {64,0}, + [I(184,207)] = {64,0}, + [I(185,207)] = {64,0}, + [I(186,207)] = {64,0}, + [I(187,207)] = {64,0}, + [I(188,207)] = {64,0}, + [I(189,207)] = {64,0}, + [I(190,207)] = {64,0}, + [I(191,207)] = {64,0}, + [I(192,207)] = {64,0}, + [I(193,207)] = {64,0}, + [I(194,207)] = {64,0}, + [I(195,207)] = {64,0}, + [I(196,207)] = {64,0}, + [I(197,207)] = {64,0}, + [I(198,207)] = {64,0}, + [I(199,207)] = {64,0}, + [I(200,207)] = {64,0}, + [I(201,207)] = {64,0}, + [I(202,207)] = {64,0}, + [I(203,207)] = {64,0}, + [I(204,207)] = {64,0}, + [I(205,207)] = {64,0}, + [I(206,207)] = {64,0}, + [I(207,207)] = {64,0}, + [I(208,207)] = {64,0}, + [I(209,207)] = {64,0}, + [I(210,207)] = {64,0}, + [I(211,207)] = {64,0}, + [I(212,207)] = {64,0}, + [I(213,207)] = {64,0}, + [I(214,207)] = {64,0}, + [I(215,207)] = {64,0}, + [I(216,207)] = {64,0}, + [I(217,207)] = {64,0}, + [I(218,207)] = {64,0}, + [I(219,207)] = {64,0}, + [I(220,207)] = {64,0}, + [I(221,207)] = {64,0}, + [I(222,207)] = {64,0}, + [I(223,207)] = {64,0}, + [I(224,207)] = {64,0}, + [I(225,207)] = {64,0}, + [I(226,207)] = {64,0}, + [I(227,207)] = {64,0}, + [I(228,207)] = {64,0}, + [I(229,207)] = {64,0}, + [I(230,207)] = {64,0}, + [I(231,207)] = {64,0}, + [I(232,207)] = {64,0}, + [I(233,207)] = {64,0}, + [I(234,207)] = {64,0}, + [I(235,207)] = {64,0}, + [I(236,207)] = {64,0}, + [I(237,207)] = {64,0}, + [I(238,207)] = {64,0}, + [I(239,207)] = {64,0}, + [I(240,207)] = {64,0}, + [I(241,207)] = {64,0}, + [I(242,207)] = {64,0}, + [I(243,207)] = {64,0}, + [I(244,207)] = {64,0}, + [I(245,207)] = {64,0}, + [I(246,207)] = {64,0}, + [I(247,207)] = {64,0}, + [I(248,207)] = {64,0}, + [I(249,207)] = {64,0}, + [I(250,207)] = {64,0}, + [I(251,207)] = {64,0}, + [I(252,207)] = {64,0}, + [I(253,207)] = {64,0}, + [I(254,207)] = {64,0}, + [I(255,207)] = {64,0}, + [I(0,208)] = {X32,0xFFC7FFF2}, + [I(1,208)] = {64,0}, + [I(2,208)] = {64,0}, + [I(3,208)] = {64,0}, + [I(4,208)] = {64,0}, + [I(5,208)] = {64,0}, + [I(6,208)] = {64,0}, + [I(7,208)] = {64,0}, + [I(8,208)] = {64,0}, + [I(9,208)] = {64,0}, + [I(10,208)] = {64,0}, + [I(11,208)] = {64,0}, + [I(12,208)] = {64,0}, + [I(13,208)] = {64,0}, + [I(14,208)] = {64,0}, + [I(15,208)] = {64,0}, + [I(16,208)] = {64,0}, + [I(17,208)] = {64,0}, + [I(18,208)] = {64,0}, + [I(19,208)] = {64,0}, + [I(20,208)] = {64,0}, + [I(21,208)] = {64,0}, + [I(22,208)] = {64,0}, + [I(23,208)] = {64,0}, + [I(24,208)] = {64,0}, + [I(25,208)] = {64,0}, + [I(26,208)] = {64,0}, + [I(27,208)] = {64,0}, + [I(28,208)] = {64,0}, + [I(29,208)] = {64,0}, + [I(30,208)] = {64,0}, + [I(31,208)] = {64,0}, + [I(32,208)] = {25,0xA7FFF2}, + [I(33,208)] = {29,0x1FC7FFF2}, + [I(34,208)] = {29,0x1FCFFFF2}, + [I(35,208)] = {31,0x7FD7FFF2}, + [I(36,208)] = {X32,0xFFCFFFF2}, + [I(37,208)] = {25,0xAFFFF2}, + [I(38,208)] = {27,0x7C7FFF2}, + [I(39,208)] = {30,0x3FD7FFF2}, + [I(40,208)] = {29,0x1FD7FFF2}, + [I(41,208)] = {29,0x1FDFFFF2}, + [I(42,208)] = {27,0x7CFFFF2}, + [I(43,208)] = {30,0x3FDFFFF2}, + [I(44,208)] = {27,0x7D7FFF2}, + [I(45,208)] = {25,0xB7FFF2}, + [I(46,208)] = {25,0xBFFFF2}, + [I(47,208)] = {25,0xC7FFF2}, + [I(48,208)] = {24,0x7FFF2}, + [I(49,208)] = {24,0xFFFF2}, + [I(50,208)] = {24,0x17FFF2}, + [I(51,208)] = {25,0xCFFFF2}, + [I(52,208)] = {25,0xD7FFF2}, + [I(53,208)] = {25,0xDFFFF2}, + [I(54,208)] = {25,0xE7FFF2}, + [I(55,208)] = {25,0xEFFFF2}, + [I(56,208)] = {25,0xF7FFF2}, + [I(57,208)] = {25,0xFFFFF2}, + [I(58,208)] = {26,0x2E7FFF2}, + [I(59,208)] = {27,0x7DFFFF2}, + [I(60,208)] = {64,0}, + [I(61,208)] = {25,0x107FFF2}, + [I(62,208)] = {31,0x7FDFFFF2}, + [I(63,208)] = {29,0x1FE7FFF2}, + [I(64,208)] = {X32,0xFFD7FFF2}, + [I(65,208)] = {25,0x10FFFF2}, + [I(66,208)] = {26,0x2EFFFF2}, + [I(67,208)] = {26,0x2F7FFF2}, + [I(68,208)] = {26,0x2FFFFF2}, + [I(69,208)] = {26,0x307FFF2}, + [I(70,208)] = {26,0x30FFFF2}, + [I(71,208)] = {26,0x317FFF2}, + [I(72,208)] = {26,0x31FFFF2}, + [I(73,208)] = {26,0x327FFF2}, + [I(74,208)] = {26,0x32FFFF2}, + [I(75,208)] = {26,0x337FFF2}, + [I(76,208)] = {26,0x33FFFF2}, + [I(77,208)] = {26,0x347FFF2}, + [I(78,208)] = {26,0x34FFFF2}, + [I(79,208)] = {26,0x357FFF2}, + [I(80,208)] = {26,0x35FFFF2}, + [I(81,208)] = {26,0x367FFF2}, + [I(82,208)] = {26,0x36FFFF2}, + [I(83,208)] = {26,0x377FFF2}, + [I(84,208)] = {26,0x37FFFF2}, + [I(85,208)] = {26,0x387FFF2}, + [I(86,208)] = {26,0x38FFFF2}, + [I(87,208)] = {26,0x397FFF2}, + [I(88,208)] = {27,0x7E7FFF2}, + [I(89,208)] = {26,0x39FFFF2}, + [I(90,208)] = {27,0x7EFFFF2}, + [I(91,208)] = {X32,0xFFDFFFF2}, + [I(92,208)] = {64,0}, + [I(93,208)] = {X32,0xFFE7FFF2}, + [I(94,208)] = {64,0}, + [I(95,208)] = {25,0x117FFF2}, + [I(96,208)] = {64,0}, + [I(97,208)] = {24,0x1FFFF2}, + [I(98,208)] = {25,0x11FFFF2}, + [I(99,208)] = {24,0x27FFF2}, + [I(100,208)] = {25,0x127FFF2}, + [I(101,208)] = {24,0x2FFFF2}, + [I(102,208)] = {25,0x12FFFF2}, + [I(103,208)] = {25,0x137FFF2}, + [I(104,208)] = {25,0x13FFFF2}, + [I(105,208)] = {24,0x37FFF2}, + [I(106,208)] = {26,0x3A7FFF2}, + [I(107,208)] = {26,0x3AFFFF2}, + [I(108,208)] = {25,0x147FFF2}, + [I(109,208)] = {25,0x14FFFF2}, + [I(110,208)] = {25,0x157FFF2}, + [I(111,208)] = {24,0x3FFFF2}, + [I(112,208)] = {25,0x15FFFF2}, + [I(113,208)] = {26,0x3B7FFF2}, + [I(114,208)] = {25,0x167FFF2}, + [I(115,208)] = {24,0x47FFF2}, + [I(116,208)] = {24,0x4FFFF2}, + [I(117,208)] = {25,0x16FFFF2}, + [I(118,208)] = {26,0x3BFFFF2}, + [I(119,208)] = {26,0x3C7FFF2}, + [I(120,208)] = {26,0x3CFFFF2}, + [I(121,208)] = {26,0x3D7FFF2}, + [I(122,208)] = {26,0x3DFFFF2}, + [I(123,208)] = {64,0}, + [I(124,208)] = {30,0x3FE7FFF2}, + [I(125,208)] = {64,0}, + [I(126,208)] = {X32,0xFFEFFFF2}, + [I(127,208)] = {64,0}, + [I(128,208)] = {64,0}, + [I(129,208)] = {64,0}, + [I(130,208)] = {64,0}, + [I(131,208)] = {64,0}, + [I(132,208)] = {64,0}, + [I(133,208)] = {64,0}, + [I(134,208)] = {64,0}, + [I(135,208)] = {64,0}, + [I(136,208)] = {64,0}, + [I(137,208)] = {64,0}, + [I(138,208)] = {64,0}, + [I(139,208)] = {64,0}, + [I(140,208)] = {64,0}, + [I(141,208)] = {64,0}, + [I(142,208)] = {64,0}, + [I(143,208)] = {64,0}, + [I(144,208)] = {64,0}, + [I(145,208)] = {64,0}, + [I(146,208)] = {64,0}, + [I(147,208)] = {64,0}, + [I(148,208)] = {64,0}, + [I(149,208)] = {64,0}, + [I(150,208)] = {64,0}, + [I(151,208)] = {64,0}, + [I(152,208)] = {64,0}, + [I(153,208)] = {64,0}, + [I(154,208)] = {64,0}, + [I(155,208)] = {64,0}, + [I(156,208)] = {64,0}, + [I(157,208)] = {64,0}, + [I(158,208)] = {64,0}, + [I(159,208)] = {64,0}, + [I(160,208)] = {64,0}, + [I(161,208)] = {64,0}, + [I(162,208)] = {64,0}, + [I(163,208)] = {64,0}, + [I(164,208)] = {64,0}, + [I(165,208)] = {64,0}, + [I(166,208)] = {64,0}, + [I(167,208)] = {64,0}, + [I(168,208)] = {64,0}, + [I(169,208)] = {64,0}, + [I(170,208)] = {64,0}, + [I(171,208)] = {64,0}, + [I(172,208)] = {64,0}, + [I(173,208)] = {64,0}, + [I(174,208)] = {64,0}, + [I(175,208)] = {64,0}, + [I(176,208)] = {64,0}, + [I(177,208)] = {64,0}, + [I(178,208)] = {64,0}, + [I(179,208)] = {64,0}, + [I(180,208)] = {64,0}, + [I(181,208)] = {64,0}, + [I(182,208)] = {64,0}, + [I(183,208)] = {64,0}, + [I(184,208)] = {64,0}, + [I(185,208)] = {64,0}, + [I(186,208)] = {64,0}, + [I(187,208)] = {64,0}, + [I(188,208)] = {64,0}, + [I(189,208)] = {64,0}, + [I(190,208)] = {64,0}, + [I(191,208)] = {64,0}, + [I(192,208)] = {64,0}, + [I(193,208)] = {64,0}, + [I(194,208)] = {64,0}, + [I(195,208)] = {64,0}, + [I(196,208)] = {64,0}, + [I(197,208)] = {64,0}, + [I(198,208)] = {64,0}, + [I(199,208)] = {64,0}, + [I(200,208)] = {64,0}, + [I(201,208)] = {64,0}, + [I(202,208)] = {64,0}, + [I(203,208)] = {64,0}, + [I(204,208)] = {64,0}, + [I(205,208)] = {64,0}, + [I(206,208)] = {64,0}, + [I(207,208)] = {64,0}, + [I(208,208)] = {64,0}, + [I(209,208)] = {64,0}, + [I(210,208)] = {64,0}, + [I(211,208)] = {64,0}, + [I(212,208)] = {64,0}, + [I(213,208)] = {64,0}, + [I(214,208)] = {64,0}, + [I(215,208)] = {64,0}, + [I(216,208)] = {64,0}, + [I(217,208)] = {64,0}, + [I(218,208)] = {64,0}, + [I(219,208)] = {64,0}, + [I(220,208)] = {64,0}, + [I(221,208)] = {64,0}, + [I(222,208)] = {64,0}, + [I(223,208)] = {64,0}, + [I(224,208)] = {64,0}, + [I(225,208)] = {64,0}, + [I(226,208)] = {64,0}, + [I(227,208)] = {64,0}, + [I(228,208)] = {64,0}, + [I(229,208)] = {64,0}, + [I(230,208)] = {64,0}, + [I(231,208)] = {64,0}, + [I(232,208)] = {64,0}, + [I(233,208)] = {64,0}, + [I(234,208)] = {64,0}, + [I(235,208)] = {64,0}, + [I(236,208)] = {64,0}, + [I(237,208)] = {64,0}, + [I(238,208)] = {64,0}, + [I(239,208)] = {64,0}, + [I(240,208)] = {64,0}, + [I(241,208)] = {64,0}, + [I(242,208)] = {64,0}, + [I(243,208)] = {64,0}, + [I(244,208)] = {64,0}, + [I(245,208)] = {64,0}, + [I(246,208)] = {64,0}, + [I(247,208)] = {64,0}, + [I(248,208)] = {64,0}, + [I(249,208)] = {64,0}, + [I(250,208)] = {64,0}, + [I(251,208)] = {64,0}, + [I(252,208)] = {64,0}, + [I(253,208)] = {64,0}, + [I(254,208)] = {64,0}, + [I(255,208)] = {64,0}, + [I(0,209)] = {64,0}, + [I(1,209)] = {64,0}, + [I(2,209)] = {64,0}, + [I(3,209)] = {64,0}, + [I(4,209)] = {64,0}, + [I(5,209)] = {64,0}, + [I(6,209)] = {64,0}, + [I(7,209)] = {64,0}, + [I(8,209)] = {64,0}, + [I(9,209)] = {64,0}, + [I(10,209)] = {64,0}, + [I(11,209)] = {64,0}, + [I(12,209)] = {64,0}, + [I(13,209)] = {64,0}, + [I(14,209)] = {64,0}, + [I(15,209)] = {64,0}, + [I(16,209)] = {64,0}, + [I(17,209)] = {64,0}, + [I(18,209)] = {64,0}, + [I(19,209)] = {64,0}, + [I(20,209)] = {64,0}, + [I(21,209)] = {64,0}, + [I(22,209)] = {64,0}, + [I(23,209)] = {64,0}, + [I(24,209)] = {64,0}, + [I(25,209)] = {64,0}, + [I(26,209)] = {64,0}, + [I(27,209)] = {64,0}, + [I(28,209)] = {64,0}, + [I(29,209)] = {64,0}, + [I(30,209)] = {64,0}, + [I(31,209)] = {64,0}, + [I(32,209)] = {27,0x29FFFE3}, + [I(33,209)] = {31,0x7F1FFFE3}, + [I(34,209)] = {31,0x7F3FFFE3}, + [I(35,209)] = {64,0}, + [I(36,209)] = {64,0}, + [I(37,209)] = {27,0x2BFFFE3}, + [I(38,209)] = {29,0x1F1FFFE3}, + [I(39,209)] = {X32,0xFF5FFFE3}, + [I(40,209)] = {31,0x7F5FFFE3}, + [I(41,209)] = {31,0x7F7FFFE3}, + [I(42,209)] = {29,0x1F3FFFE3}, + [I(43,209)] = {X32,0xFF7FFFE3}, + [I(44,209)] = {29,0x1F5FFFE3}, + [I(45,209)] = {27,0x2DFFFE3}, + [I(46,209)] = {27,0x2FFFFE3}, + [I(47,209)] = {27,0x31FFFE3}, + [I(48,209)] = {26,0x1FFFE3}, + [I(49,209)] = {26,0x3FFFE3}, + [I(50,209)] = {26,0x5FFFE3}, + [I(51,209)] = {27,0x33FFFE3}, + [I(52,209)] = {27,0x35FFFE3}, + [I(53,209)] = {27,0x37FFFE3}, + [I(54,209)] = {27,0x39FFFE3}, + [I(55,209)] = {27,0x3BFFFE3}, + [I(56,209)] = {27,0x3DFFFE3}, + [I(57,209)] = {27,0x3FFFFE3}, + [I(58,209)] = {28,0xB9FFFE3}, + [I(59,209)] = {29,0x1F7FFFE3}, + [I(60,209)] = {64,0}, + [I(61,209)] = {27,0x41FFFE3}, + [I(62,209)] = {64,0}, + [I(63,209)] = {31,0x7F9FFFE3}, + [I(64,209)] = {64,0}, + [I(65,209)] = {27,0x43FFFE3}, + [I(66,209)] = {28,0xBBFFFE3}, + [I(67,209)] = {28,0xBDFFFE3}, + [I(68,209)] = {28,0xBFFFFE3}, + [I(69,209)] = {28,0xC1FFFE3}, + [I(70,209)] = {28,0xC3FFFE3}, + [I(71,209)] = {28,0xC5FFFE3}, + [I(72,209)] = {28,0xC7FFFE3}, + [I(73,209)] = {28,0xC9FFFE3}, + [I(74,209)] = {28,0xCBFFFE3}, + [I(75,209)] = {28,0xCDFFFE3}, + [I(76,209)] = {28,0xCFFFFE3}, + [I(77,209)] = {28,0xD1FFFE3}, + [I(78,209)] = {28,0xD3FFFE3}, + [I(79,209)] = {28,0xD5FFFE3}, + [I(80,209)] = {28,0xD7FFFE3}, + [I(81,209)] = {28,0xD9FFFE3}, + [I(82,209)] = {28,0xDBFFFE3}, + [I(83,209)] = {28,0xDDFFFE3}, + [I(84,209)] = {28,0xDFFFFE3}, + [I(85,209)] = {28,0xE1FFFE3}, + [I(86,209)] = {28,0xE3FFFE3}, + [I(87,209)] = {28,0xE5FFFE3}, + [I(88,209)] = {29,0x1F9FFFE3}, + [I(89,209)] = {28,0xE7FFFE3}, + [I(90,209)] = {29,0x1FBFFFE3}, + [I(91,209)] = {64,0}, + [I(92,209)] = {64,0}, + [I(93,209)] = {64,0}, + [I(94,209)] = {64,0}, + [I(95,209)] = {27,0x45FFFE3}, + [I(96,209)] = {64,0}, + [I(97,209)] = {26,0x7FFFE3}, + [I(98,209)] = {27,0x47FFFE3}, + [I(99,209)] = {26,0x9FFFE3}, + [I(100,209)] = {27,0x49FFFE3}, + [I(101,209)] = {26,0xBFFFE3}, + [I(102,209)] = {27,0x4BFFFE3}, + [I(103,209)] = {27,0x4DFFFE3}, + [I(104,209)] = {27,0x4FFFFE3}, + [I(105,209)] = {26,0xDFFFE3}, + [I(106,209)] = {28,0xE9FFFE3}, + [I(107,209)] = {28,0xEBFFFE3}, + [I(108,209)] = {27,0x51FFFE3}, + [I(109,209)] = {27,0x53FFFE3}, + [I(110,209)] = {27,0x55FFFE3}, + [I(111,209)] = {26,0xFFFFE3}, + [I(112,209)] = {27,0x57FFFE3}, + [I(113,209)] = {28,0xEDFFFE3}, + [I(114,209)] = {27,0x59FFFE3}, + [I(115,209)] = {26,0x11FFFE3}, + [I(116,209)] = {26,0x13FFFE3}, + [I(117,209)] = {27,0x5BFFFE3}, + [I(118,209)] = {28,0xEFFFFE3}, + [I(119,209)] = {28,0xF1FFFE3}, + [I(120,209)] = {28,0xF3FFFE3}, + [I(121,209)] = {28,0xF5FFFE3}, + [I(122,209)] = {28,0xF7FFFE3}, + [I(123,209)] = {64,0}, + [I(124,209)] = {X32,0xFF9FFFE3}, + [I(125,209)] = {64,0}, + [I(126,209)] = {64,0}, + [I(127,209)] = {64,0}, + [I(128,209)] = {64,0}, + [I(129,209)] = {64,0}, + [I(130,209)] = {64,0}, + [I(131,209)] = {64,0}, + [I(132,209)] = {64,0}, + [I(133,209)] = {64,0}, + [I(134,209)] = {64,0}, + [I(135,209)] = {64,0}, + [I(136,209)] = {64,0}, + [I(137,209)] = {64,0}, + [I(138,209)] = {64,0}, + [I(139,209)] = {64,0}, + [I(140,209)] = {64,0}, + [I(141,209)] = {64,0}, + [I(142,209)] = {64,0}, + [I(143,209)] = {64,0}, + [I(144,209)] = {64,0}, + [I(145,209)] = {64,0}, + [I(146,209)] = {64,0}, + [I(147,209)] = {64,0}, + [I(148,209)] = {64,0}, + [I(149,209)] = {64,0}, + [I(150,209)] = {64,0}, + [I(151,209)] = {64,0}, + [I(152,209)] = {64,0}, + [I(153,209)] = {64,0}, + [I(154,209)] = {64,0}, + [I(155,209)] = {64,0}, + [I(156,209)] = {64,0}, + [I(157,209)] = {64,0}, + [I(158,209)] = {64,0}, + [I(159,209)] = {64,0}, + [I(160,209)] = {64,0}, + [I(161,209)] = {64,0}, + [I(162,209)] = {64,0}, + [I(163,209)] = {64,0}, + [I(164,209)] = {64,0}, + [I(165,209)] = {64,0}, + [I(166,209)] = {64,0}, + [I(167,209)] = {64,0}, + [I(168,209)] = {64,0}, + [I(169,209)] = {64,0}, + [I(170,209)] = {64,0}, + [I(171,209)] = {64,0}, + [I(172,209)] = {64,0}, + [I(173,209)] = {64,0}, + [I(174,209)] = {64,0}, + [I(175,209)] = {64,0}, + [I(176,209)] = {64,0}, + [I(177,209)] = {64,0}, + [I(178,209)] = {64,0}, + [I(179,209)] = {64,0}, + [I(180,209)] = {64,0}, + [I(181,209)] = {64,0}, + [I(182,209)] = {64,0}, + [I(183,209)] = {64,0}, + [I(184,209)] = {64,0}, + [I(185,209)] = {64,0}, + [I(186,209)] = {64,0}, + [I(187,209)] = {64,0}, + [I(188,209)] = {64,0}, + [I(189,209)] = {64,0}, + [I(190,209)] = {64,0}, + [I(191,209)] = {64,0}, + [I(192,209)] = {64,0}, + [I(193,209)] = {64,0}, + [I(194,209)] = {64,0}, + [I(195,209)] = {64,0}, + [I(196,209)] = {64,0}, + [I(197,209)] = {64,0}, + [I(198,209)] = {64,0}, + [I(199,209)] = {64,0}, + [I(200,209)] = {64,0}, + [I(201,209)] = {64,0}, + [I(202,209)] = {64,0}, + [I(203,209)] = {64,0}, + [I(204,209)] = {64,0}, + [I(205,209)] = {64,0}, + [I(206,209)] = {64,0}, + [I(207,209)] = {64,0}, + [I(208,209)] = {64,0}, + [I(209,209)] = {64,0}, + [I(210,209)] = {64,0}, + [I(211,209)] = {64,0}, + [I(212,209)] = {64,0}, + [I(213,209)] = {64,0}, + [I(214,209)] = {64,0}, + [I(215,209)] = {64,0}, + [I(216,209)] = {64,0}, + [I(217,209)] = {64,0}, + [I(218,209)] = {64,0}, + [I(219,209)] = {64,0}, + [I(220,209)] = {64,0}, + [I(221,209)] = {64,0}, + [I(222,209)] = {64,0}, + [I(223,209)] = {64,0}, + [I(224,209)] = {64,0}, + [I(225,209)] = {64,0}, + [I(226,209)] = {64,0}, + [I(227,209)] = {64,0}, + [I(228,209)] = {64,0}, + [I(229,209)] = {64,0}, + [I(230,209)] = {64,0}, + [I(231,209)] = {64,0}, + [I(232,209)] = {64,0}, + [I(233,209)] = {64,0}, + [I(234,209)] = {64,0}, + [I(235,209)] = {64,0}, + [I(236,209)] = {64,0}, + [I(237,209)] = {64,0}, + [I(238,209)] = {64,0}, + [I(239,209)] = {64,0}, + [I(240,209)] = {64,0}, + [I(241,209)] = {64,0}, + [I(242,209)] = {64,0}, + [I(243,209)] = {64,0}, + [I(244,209)] = {64,0}, + [I(245,209)] = {64,0}, + [I(246,209)] = {64,0}, + [I(247,209)] = {64,0}, + [I(248,209)] = {64,0}, + [I(249,209)] = {64,0}, + [I(250,209)] = {64,0}, + [I(251,209)] = {64,0}, + [I(252,209)] = {64,0}, + [I(253,209)] = {64,0}, + [I(254,209)] = {64,0}, + [I(255,209)] = {64,0}, + [I(0,210)] = {64,0}, + [I(1,210)] = {64,0}, + [I(2,210)] = {64,0}, + [I(3,210)] = {64,0}, + [I(4,210)] = {64,0}, + [I(5,210)] = {64,0}, + [I(6,210)] = {64,0}, + [I(7,210)] = {64,0}, + [I(8,210)] = {64,0}, + [I(9,210)] = {64,0}, + [I(10,210)] = {64,0}, + [I(11,210)] = {64,0}, + [I(12,210)] = {64,0}, + [I(13,210)] = {64,0}, + [I(14,210)] = {64,0}, + [I(15,210)] = {64,0}, + [I(16,210)] = {64,0}, + [I(17,210)] = {64,0}, + [I(18,210)] = {64,0}, + [I(19,210)] = {64,0}, + [I(20,210)] = {64,0}, + [I(21,210)] = {64,0}, + [I(22,210)] = {64,0}, + [I(23,210)] = {64,0}, + [I(24,210)] = {64,0}, + [I(25,210)] = {64,0}, + [I(26,210)] = {64,0}, + [I(27,210)] = {64,0}, + [I(28,210)] = {64,0}, + [I(29,210)] = {64,0}, + [I(30,210)] = {64,0}, + [I(31,210)] = {64,0}, + [I(32,210)] = {X32,0x53FFFFE6}, + [I(33,210)] = {64,0}, + [I(34,210)] = {64,0}, + [I(35,210)] = {64,0}, + [I(36,210)] = {64,0}, + [I(37,210)] = {X32,0x57FFFFE6}, + [I(38,210)] = {64,0}, + [I(39,210)] = {64,0}, + [I(40,210)] = {64,0}, + [I(41,210)] = {64,0}, + [I(42,210)] = {64,0}, + [I(43,210)] = {64,0}, + [I(44,210)] = {64,0}, + [I(45,210)] = {X32,0x5BFFFFE6}, + [I(46,210)] = {X32,0x5FFFFFE6}, + [I(47,210)] = {X32,0x63FFFFE6}, + [I(48,210)] = {31,0x3FFFFE6}, + [I(49,210)] = {31,0x7FFFFE6}, + [I(50,210)] = {31,0xBFFFFE6}, + [I(51,210)] = {X32,0x67FFFFE6}, + [I(52,210)] = {X32,0x6BFFFFE6}, + [I(53,210)] = {X32,0x6FFFFFE6}, + [I(54,210)] = {X32,0x73FFFFE6}, + [I(55,210)] = {X32,0x77FFFFE6}, + [I(56,210)] = {X32,0x7BFFFFE6}, + [I(57,210)] = {X32,0x7FFFFFE6}, + [I(58,210)] = {64,0}, + [I(59,210)] = {64,0}, + [I(60,210)] = {64,0}, + [I(61,210)] = {X32,0x83FFFFE6}, + [I(62,210)] = {64,0}, + [I(63,210)] = {64,0}, + [I(64,210)] = {64,0}, + [I(65,210)] = {X32,0x87FFFFE6}, + [I(66,210)] = {64,0}, + [I(67,210)] = {64,0}, + [I(68,210)] = {64,0}, + [I(69,210)] = {64,0}, + [I(70,210)] = {64,0}, + [I(71,210)] = {64,0}, + [I(72,210)] = {64,0}, + [I(73,210)] = {64,0}, + [I(74,210)] = {64,0}, + [I(75,210)] = {64,0}, + [I(76,210)] = {64,0}, + [I(77,210)] = {64,0}, + [I(78,210)] = {64,0}, + [I(79,210)] = {64,0}, + [I(80,210)] = {64,0}, + [I(81,210)] = {64,0}, + [I(82,210)] = {64,0}, + [I(83,210)] = {64,0}, + [I(84,210)] = {64,0}, + [I(85,210)] = {64,0}, + [I(86,210)] = {64,0}, + [I(87,210)] = {64,0}, + [I(88,210)] = {64,0}, + [I(89,210)] = {64,0}, + [I(90,210)] = {64,0}, + [I(91,210)] = {64,0}, + [I(92,210)] = {64,0}, + [I(93,210)] = {64,0}, + [I(94,210)] = {64,0}, + [I(95,210)] = {X32,0x8BFFFFE6}, + [I(96,210)] = {64,0}, + [I(97,210)] = {31,0xFFFFFE6}, + [I(98,210)] = {X32,0x8FFFFFE6}, + [I(99,210)] = {31,0x13FFFFE6}, + [I(100,210)] = {X32,0x93FFFFE6}, + [I(101,210)] = {31,0x17FFFFE6}, + [I(102,210)] = {X32,0x97FFFFE6}, + [I(103,210)] = {X32,0x9BFFFFE6}, + [I(104,210)] = {X32,0x9FFFFFE6}, + [I(105,210)] = {31,0x1BFFFFE6}, + [I(106,210)] = {64,0}, + [I(107,210)] = {64,0}, + [I(108,210)] = {X32,0xA3FFFFE6}, + [I(109,210)] = {X32,0xA7FFFFE6}, + [I(110,210)] = {X32,0xABFFFFE6}, + [I(111,210)] = {31,0x1FFFFFE6}, + [I(112,210)] = {X32,0xAFFFFFE6}, + [I(113,210)] = {64,0}, + [I(114,210)] = {X32,0xB3FFFFE6}, + [I(115,210)] = {31,0x23FFFFE6}, + [I(116,210)] = {31,0x27FFFFE6}, + [I(117,210)] = {X32,0xB7FFFFE6}, + [I(118,210)] = {64,0}, + [I(119,210)] = {64,0}, + [I(120,210)] = {64,0}, + [I(121,210)] = {64,0}, + [I(122,210)] = {64,0}, + [I(123,210)] = {64,0}, + [I(124,210)] = {64,0}, + [I(125,210)] = {64,0}, + [I(126,210)] = {64,0}, + [I(127,210)] = {64,0}, + [I(128,210)] = {64,0}, + [I(129,210)] = {64,0}, + [I(130,210)] = {64,0}, + [I(131,210)] = {64,0}, + [I(132,210)] = {64,0}, + [I(133,210)] = {64,0}, + [I(134,210)] = {64,0}, + [I(135,210)] = {64,0}, + [I(136,210)] = {64,0}, + [I(137,210)] = {64,0}, + [I(138,210)] = {64,0}, + [I(139,210)] = {64,0}, + [I(140,210)] = {64,0}, + [I(141,210)] = {64,0}, + [I(142,210)] = {64,0}, + [I(143,210)] = {64,0}, + [I(144,210)] = {64,0}, + [I(145,210)] = {64,0}, + [I(146,210)] = {64,0}, + [I(147,210)] = {64,0}, + [I(148,210)] = {64,0}, + [I(149,210)] = {64,0}, + [I(150,210)] = {64,0}, + [I(151,210)] = {64,0}, + [I(152,210)] = {64,0}, + [I(153,210)] = {64,0}, + [I(154,210)] = {64,0}, + [I(155,210)] = {64,0}, + [I(156,210)] = {64,0}, + [I(157,210)] = {64,0}, + [I(158,210)] = {64,0}, + [I(159,210)] = {64,0}, + [I(160,210)] = {64,0}, + [I(161,210)] = {64,0}, + [I(162,210)] = {64,0}, + [I(163,210)] = {64,0}, + [I(164,210)] = {64,0}, + [I(165,210)] = {64,0}, + [I(166,210)] = {64,0}, + [I(167,210)] = {64,0}, + [I(168,210)] = {64,0}, + [I(169,210)] = {64,0}, + [I(170,210)] = {64,0}, + [I(171,210)] = {64,0}, + [I(172,210)] = {64,0}, + [I(173,210)] = {64,0}, + [I(174,210)] = {64,0}, + [I(175,210)] = {64,0}, + [I(176,210)] = {64,0}, + [I(177,210)] = {64,0}, + [I(178,210)] = {64,0}, + [I(179,210)] = {64,0}, + [I(180,210)] = {64,0}, + [I(181,210)] = {64,0}, + [I(182,210)] = {64,0}, + [I(183,210)] = {64,0}, + [I(184,210)] = {64,0}, + [I(185,210)] = {64,0}, + [I(186,210)] = {64,0}, + [I(187,210)] = {64,0}, + [I(188,210)] = {64,0}, + [I(189,210)] = {64,0}, + [I(190,210)] = {64,0}, + [I(191,210)] = {64,0}, + [I(192,210)] = {64,0}, + [I(193,210)] = {64,0}, + [I(194,210)] = {64,0}, + [I(195,210)] = {64,0}, + [I(196,210)] = {64,0}, + [I(197,210)] = {64,0}, + [I(198,210)] = {64,0}, + [I(199,210)] = {64,0}, + [I(200,210)] = {64,0}, + [I(201,210)] = {64,0}, + [I(202,210)] = {64,0}, + [I(203,210)] = {64,0}, + [I(204,210)] = {64,0}, + [I(205,210)] = {64,0}, + [I(206,210)] = {64,0}, + [I(207,210)] = {64,0}, + [I(208,210)] = {64,0}, + [I(209,210)] = {64,0}, + [I(210,210)] = {64,0}, + [I(211,210)] = {64,0}, + [I(212,210)] = {64,0}, + [I(213,210)] = {64,0}, + [I(214,210)] = {64,0}, + [I(215,210)] = {64,0}, + [I(216,210)] = {64,0}, + [I(217,210)] = {64,0}, + [I(218,210)] = {64,0}, + [I(219,210)] = {64,0}, + [I(220,210)] = {64,0}, + [I(221,210)] = {64,0}, + [I(222,210)] = {64,0}, + [I(223,210)] = {64,0}, + [I(224,210)] = {64,0}, + [I(225,210)] = {64,0}, + [I(226,210)] = {64,0}, + [I(227,210)] = {64,0}, + [I(228,210)] = {64,0}, + [I(229,210)] = {64,0}, + [I(230,210)] = {64,0}, + [I(231,210)] = {64,0}, + [I(232,210)] = {64,0}, + [I(233,210)] = {64,0}, + [I(234,210)] = {64,0}, + [I(235,210)] = {64,0}, + [I(236,210)] = {64,0}, + [I(237,210)] = {64,0}, + [I(238,210)] = {64,0}, + [I(239,210)] = {64,0}, + [I(240,210)] = {64,0}, + [I(241,210)] = {64,0}, + [I(242,210)] = {64,0}, + [I(243,210)] = {64,0}, + [I(244,210)] = {64,0}, + [I(245,210)] = {64,0}, + [I(246,210)] = {64,0}, + [I(247,210)] = {64,0}, + [I(248,210)] = {64,0}, + [I(249,210)] = {64,0}, + [I(250,210)] = {64,0}, + [I(251,210)] = {64,0}, + [I(252,210)] = {64,0}, + [I(253,210)] = {64,0}, + [I(254,210)] = {64,0}, + [I(255,210)] = {64,0}, + [I(0,211)] = {64,0}, + [I(1,211)] = {64,0}, + [I(2,211)] = {64,0}, + [I(3,211)] = {64,0}, + [I(4,211)] = {64,0}, + [I(5,211)] = {64,0}, + [I(6,211)] = {64,0}, + [I(7,211)] = {64,0}, + [I(8,211)] = {64,0}, + [I(9,211)] = {64,0}, + [I(10,211)] = {64,0}, + [I(11,211)] = {64,0}, + [I(12,211)] = {64,0}, + [I(13,211)] = {64,0}, + [I(14,211)] = {64,0}, + [I(15,211)] = {64,0}, + [I(16,211)] = {64,0}, + [I(17,211)] = {64,0}, + [I(18,211)] = {64,0}, + [I(19,211)] = {64,0}, + [I(20,211)] = {64,0}, + [I(21,211)] = {64,0}, + [I(22,211)] = {64,0}, + [I(23,211)] = {64,0}, + [I(24,211)] = {64,0}, + [I(25,211)] = {64,0}, + [I(26,211)] = {64,0}, + [I(27,211)] = {64,0}, + [I(28,211)] = {64,0}, + [I(29,211)] = {64,0}, + [I(30,211)] = {64,0}, + [I(31,211)] = {64,0}, + [I(32,211)] = {64,0}, + [I(33,211)] = {64,0}, + [I(34,211)] = {64,0}, + [I(35,211)] = {64,0}, + [I(36,211)] = {64,0}, + [I(37,211)] = {64,0}, + [I(38,211)] = {64,0}, + [I(39,211)] = {64,0}, + [I(40,211)] = {64,0}, + [I(41,211)] = {64,0}, + [I(42,211)] = {64,0}, + [I(43,211)] = {64,0}, + [I(44,211)] = {64,0}, + [I(45,211)] = {64,0}, + [I(46,211)] = {64,0}, + [I(47,211)] = {64,0}, + [I(48,211)] = {X32,0x7FFFFE0}, + [I(49,211)] = {X32,0xFFFFFE0}, + [I(50,211)] = {X32,0x17FFFFE0}, + [I(51,211)] = {64,0}, + [I(52,211)] = {64,0}, + [I(53,211)] = {64,0}, + [I(54,211)] = {64,0}, + [I(55,211)] = {64,0}, + [I(56,211)] = {64,0}, + [I(57,211)] = {64,0}, + [I(58,211)] = {64,0}, + [I(59,211)] = {64,0}, + [I(60,211)] = {64,0}, + [I(61,211)] = {64,0}, + [I(62,211)] = {64,0}, + [I(63,211)] = {64,0}, + [I(64,211)] = {64,0}, + [I(65,211)] = {64,0}, + [I(66,211)] = {64,0}, + [I(67,211)] = {64,0}, + [I(68,211)] = {64,0}, + [I(69,211)] = {64,0}, + [I(70,211)] = {64,0}, + [I(71,211)] = {64,0}, + [I(72,211)] = {64,0}, + [I(73,211)] = {64,0}, + [I(74,211)] = {64,0}, + [I(75,211)] = {64,0}, + [I(76,211)] = {64,0}, + [I(77,211)] = {64,0}, + [I(78,211)] = {64,0}, + [I(79,211)] = {64,0}, + [I(80,211)] = {64,0}, + [I(81,211)] = {64,0}, + [I(82,211)] = {64,0}, + [I(83,211)] = {64,0}, + [I(84,211)] = {64,0}, + [I(85,211)] = {64,0}, + [I(86,211)] = {64,0}, + [I(87,211)] = {64,0}, + [I(88,211)] = {64,0}, + [I(89,211)] = {64,0}, + [I(90,211)] = {64,0}, + [I(91,211)] = {64,0}, + [I(92,211)] = {64,0}, + [I(93,211)] = {64,0}, + [I(94,211)] = {64,0}, + [I(95,211)] = {64,0}, + [I(96,211)] = {64,0}, + [I(97,211)] = {X32,0x1FFFFFE0}, + [I(98,211)] = {64,0}, + [I(99,211)] = {X32,0x27FFFFE0}, + [I(100,211)] = {64,0}, + [I(101,211)] = {X32,0x2FFFFFE0}, + [I(102,211)] = {64,0}, + [I(103,211)] = {64,0}, + [I(104,211)] = {64,0}, + [I(105,211)] = {X32,0x37FFFFE0}, + [I(106,211)] = {64,0}, + [I(107,211)] = {64,0}, + [I(108,211)] = {64,0}, + [I(109,211)] = {64,0}, + [I(110,211)] = {64,0}, + [I(111,211)] = {X32,0x3FFFFFE0}, + [I(112,211)] = {64,0}, + [I(113,211)] = {64,0}, + [I(114,211)] = {64,0}, + [I(115,211)] = {X32,0x47FFFFE0}, + [I(116,211)] = {X32,0x4FFFFFE0}, + [I(117,211)] = {64,0}, + [I(118,211)] = {64,0}, + [I(119,211)] = {64,0}, + [I(120,211)] = {64,0}, + [I(121,211)] = {64,0}, + [I(122,211)] = {64,0}, + [I(123,211)] = {64,0}, + [I(124,211)] = {64,0}, + [I(125,211)] = {64,0}, + [I(126,211)] = {64,0}, + [I(127,211)] = {64,0}, + [I(128,211)] = {64,0}, + [I(129,211)] = {64,0}, + [I(130,211)] = {64,0}, + [I(131,211)] = {64,0}, + [I(132,211)] = {64,0}, + [I(133,211)] = {64,0}, + [I(134,211)] = {64,0}, + [I(135,211)] = {64,0}, + [I(136,211)] = {64,0}, + [I(137,211)] = {64,0}, + [I(138,211)] = {64,0}, + [I(139,211)] = {64,0}, + [I(140,211)] = {64,0}, + [I(141,211)] = {64,0}, + [I(142,211)] = {64,0}, + [I(143,211)] = {64,0}, + [I(144,211)] = {64,0}, + [I(145,211)] = {64,0}, + [I(146,211)] = {64,0}, + [I(147,211)] = {64,0}, + [I(148,211)] = {64,0}, + [I(149,211)] = {64,0}, + [I(150,211)] = {64,0}, + [I(151,211)] = {64,0}, + [I(152,211)] = {64,0}, + [I(153,211)] = {64,0}, + [I(154,211)] = {64,0}, + [I(155,211)] = {64,0}, + [I(156,211)] = {64,0}, + [I(157,211)] = {64,0}, + [I(158,211)] = {64,0}, + [I(159,211)] = {64,0}, + [I(160,211)] = {64,0}, + [I(161,211)] = {64,0}, + [I(162,211)] = {64,0}, + [I(163,211)] = {64,0}, + [I(164,211)] = {64,0}, + [I(165,211)] = {64,0}, + [I(166,211)] = {64,0}, + [I(167,211)] = {64,0}, + [I(168,211)] = {64,0}, + [I(169,211)] = {64,0}, + [I(170,211)] = {64,0}, + [I(171,211)] = {64,0}, + [I(172,211)] = {64,0}, + [I(173,211)] = {64,0}, + [I(174,211)] = {64,0}, + [I(175,211)] = {64,0}, + [I(176,211)] = {64,0}, + [I(177,211)] = {64,0}, + [I(178,211)] = {64,0}, + [I(179,211)] = {64,0}, + [I(180,211)] = {64,0}, + [I(181,211)] = {64,0}, + [I(182,211)] = {64,0}, + [I(183,211)] = {64,0}, + [I(184,211)] = {64,0}, + [I(185,211)] = {64,0}, + [I(186,211)] = {64,0}, + [I(187,211)] = {64,0}, + [I(188,211)] = {64,0}, + [I(189,211)] = {64,0}, + [I(190,211)] = {64,0}, + [I(191,211)] = {64,0}, + [I(192,211)] = {64,0}, + [I(193,211)] = {64,0}, + [I(194,211)] = {64,0}, + [I(195,211)] = {64,0}, + [I(196,211)] = {64,0}, + [I(197,211)] = {64,0}, + [I(198,211)] = {64,0}, + [I(199,211)] = {64,0}, + [I(200,211)] = {64,0}, + [I(201,211)] = {64,0}, + [I(202,211)] = {64,0}, + [I(203,211)] = {64,0}, + [I(204,211)] = {64,0}, + [I(205,211)] = {64,0}, + [I(206,211)] = {64,0}, + [I(207,211)] = {64,0}, + [I(208,211)] = {64,0}, + [I(209,211)] = {64,0}, + [I(210,211)] = {64,0}, + [I(211,211)] = {64,0}, + [I(212,211)] = {64,0}, + [I(213,211)] = {64,0}, + [I(214,211)] = {64,0}, + [I(215,211)] = {64,0}, + [I(216,211)] = {64,0}, + [I(217,211)] = {64,0}, + [I(218,211)] = {64,0}, + [I(219,211)] = {64,0}, + [I(220,211)] = {64,0}, + [I(221,211)] = {64,0}, + [I(222,211)] = {64,0}, + [I(223,211)] = {64,0}, + [I(224,211)] = {64,0}, + [I(225,211)] = {64,0}, + [I(226,211)] = {64,0}, + [I(227,211)] = {64,0}, + [I(228,211)] = {64,0}, + [I(229,211)] = {64,0}, + [I(230,211)] = {64,0}, + [I(231,211)] = {64,0}, + [I(232,211)] = {64,0}, + [I(233,211)] = {64,0}, + [I(234,211)] = {64,0}, + [I(235,211)] = {64,0}, + [I(236,211)] = {64,0}, + [I(237,211)] = {64,0}, + [I(238,211)] = {64,0}, + [I(239,211)] = {64,0}, + [I(240,211)] = {64,0}, + [I(241,211)] = {64,0}, + [I(242,211)] = {64,0}, + [I(243,211)] = {64,0}, + [I(244,211)] = {64,0}, + [I(245,211)] = {64,0}, + [I(246,211)] = {64,0}, + [I(247,211)] = {64,0}, + [I(248,211)] = {64,0}, + [I(249,211)] = {64,0}, + [I(250,211)] = {64,0}, + [I(251,211)] = {64,0}, + [I(252,211)] = {64,0}, + [I(253,211)] = {64,0}, + [I(254,211)] = {64,0}, + [I(255,211)] = {64,0}, + [I(0,212)] = {64,0}, + [I(1,212)] = {64,0}, + [I(2,212)] = {64,0}, + [I(3,212)] = {64,0}, + [I(4,212)] = {64,0}, + [I(5,212)] = {64,0}, + [I(6,212)] = {64,0}, + [I(7,212)] = {64,0}, + [I(8,212)] = {64,0}, + [I(9,212)] = {64,0}, + [I(10,212)] = {64,0}, + [I(11,212)] = {64,0}, + [I(12,212)] = {64,0}, + [I(13,212)] = {64,0}, + [I(14,212)] = {64,0}, + [I(15,212)] = {64,0}, + [I(16,212)] = {64,0}, + [I(17,212)] = {64,0}, + [I(18,212)] = {64,0}, + [I(19,212)] = {64,0}, + [I(20,212)] = {64,0}, + [I(21,212)] = {64,0}, + [I(22,212)] = {64,0}, + [I(23,212)] = {64,0}, + [I(24,212)] = {64,0}, + [I(25,212)] = {64,0}, + [I(26,212)] = {64,0}, + [I(27,212)] = {64,0}, + [I(28,212)] = {64,0}, + [I(29,212)] = {64,0}, + [I(30,212)] = {64,0}, + [I(31,212)] = {64,0}, + [I(32,212)] = {64,0}, + [I(33,212)] = {64,0}, + [I(34,212)] = {64,0}, + [I(35,212)] = {64,0}, + [I(36,212)] = {64,0}, + [I(37,212)] = {64,0}, + [I(38,212)] = {64,0}, + [I(39,212)] = {64,0}, + [I(40,212)] = {64,0}, + [I(41,212)] = {64,0}, + [I(42,212)] = {64,0}, + [I(43,212)] = {64,0}, + [I(44,212)] = {64,0}, + [I(45,212)] = {64,0}, + [I(46,212)] = {64,0}, + [I(47,212)] = {64,0}, + [I(48,212)] = {X32,0x7FFFFE1}, + [I(49,212)] = {X32,0xFFFFFE1}, + [I(50,212)] = {X32,0x17FFFFE1}, + [I(51,212)] = {64,0}, + [I(52,212)] = {64,0}, + [I(53,212)] = {64,0}, + [I(54,212)] = {64,0}, + [I(55,212)] = {64,0}, + [I(56,212)] = {64,0}, + [I(57,212)] = {64,0}, + [I(58,212)] = {64,0}, + [I(59,212)] = {64,0}, + [I(60,212)] = {64,0}, + [I(61,212)] = {64,0}, + [I(62,212)] = {64,0}, + [I(63,212)] = {64,0}, + [I(64,212)] = {64,0}, + [I(65,212)] = {64,0}, + [I(66,212)] = {64,0}, + [I(67,212)] = {64,0}, + [I(68,212)] = {64,0}, + [I(69,212)] = {64,0}, + [I(70,212)] = {64,0}, + [I(71,212)] = {64,0}, + [I(72,212)] = {64,0}, + [I(73,212)] = {64,0}, + [I(74,212)] = {64,0}, + [I(75,212)] = {64,0}, + [I(76,212)] = {64,0}, + [I(77,212)] = {64,0}, + [I(78,212)] = {64,0}, + [I(79,212)] = {64,0}, + [I(80,212)] = {64,0}, + [I(81,212)] = {64,0}, + [I(82,212)] = {64,0}, + [I(83,212)] = {64,0}, + [I(84,212)] = {64,0}, + [I(85,212)] = {64,0}, + [I(86,212)] = {64,0}, + [I(87,212)] = {64,0}, + [I(88,212)] = {64,0}, + [I(89,212)] = {64,0}, + [I(90,212)] = {64,0}, + [I(91,212)] = {64,0}, + [I(92,212)] = {64,0}, + [I(93,212)] = {64,0}, + [I(94,212)] = {64,0}, + [I(95,212)] = {64,0}, + [I(96,212)] = {64,0}, + [I(97,212)] = {X32,0x1FFFFFE1}, + [I(98,212)] = {64,0}, + [I(99,212)] = {X32,0x27FFFFE1}, + [I(100,212)] = {64,0}, + [I(101,212)] = {X32,0x2FFFFFE1}, + [I(102,212)] = {64,0}, + [I(103,212)] = {64,0}, + [I(104,212)] = {64,0}, + [I(105,212)] = {X32,0x37FFFFE1}, + [I(106,212)] = {64,0}, + [I(107,212)] = {64,0}, + [I(108,212)] = {64,0}, + [I(109,212)] = {64,0}, + [I(110,212)] = {64,0}, + [I(111,212)] = {X32,0x3FFFFFE1}, + [I(112,212)] = {64,0}, + [I(113,212)] = {64,0}, + [I(114,212)] = {64,0}, + [I(115,212)] = {X32,0x47FFFFE1}, + [I(116,212)] = {X32,0x4FFFFFE1}, + [I(117,212)] = {64,0}, + [I(118,212)] = {64,0}, + [I(119,212)] = {64,0}, + [I(120,212)] = {64,0}, + [I(121,212)] = {64,0}, + [I(122,212)] = {64,0}, + [I(123,212)] = {64,0}, + [I(124,212)] = {64,0}, + [I(125,212)] = {64,0}, + [I(126,212)] = {64,0}, + [I(127,212)] = {64,0}, + [I(128,212)] = {64,0}, + [I(129,212)] = {64,0}, + [I(130,212)] = {64,0}, + [I(131,212)] = {64,0}, + [I(132,212)] = {64,0}, + [I(133,212)] = {64,0}, + [I(134,212)] = {64,0}, + [I(135,212)] = {64,0}, + [I(136,212)] = {64,0}, + [I(137,212)] = {64,0}, + [I(138,212)] = {64,0}, + [I(139,212)] = {64,0}, + [I(140,212)] = {64,0}, + [I(141,212)] = {64,0}, + [I(142,212)] = {64,0}, + [I(143,212)] = {64,0}, + [I(144,212)] = {64,0}, + [I(145,212)] = {64,0}, + [I(146,212)] = {64,0}, + [I(147,212)] = {64,0}, + [I(148,212)] = {64,0}, + [I(149,212)] = {64,0}, + [I(150,212)] = {64,0}, + [I(151,212)] = {64,0}, + [I(152,212)] = {64,0}, + [I(153,212)] = {64,0}, + [I(154,212)] = {64,0}, + [I(155,212)] = {64,0}, + [I(156,212)] = {64,0}, + [I(157,212)] = {64,0}, + [I(158,212)] = {64,0}, + [I(159,212)] = {64,0}, + [I(160,212)] = {64,0}, + [I(161,212)] = {64,0}, + [I(162,212)] = {64,0}, + [I(163,212)] = {64,0}, + [I(164,212)] = {64,0}, + [I(165,212)] = {64,0}, + [I(166,212)] = {64,0}, + [I(167,212)] = {64,0}, + [I(168,212)] = {64,0}, + [I(169,212)] = {64,0}, + [I(170,212)] = {64,0}, + [I(171,212)] = {64,0}, + [I(172,212)] = {64,0}, + [I(173,212)] = {64,0}, + [I(174,212)] = {64,0}, + [I(175,212)] = {64,0}, + [I(176,212)] = {64,0}, + [I(177,212)] = {64,0}, + [I(178,212)] = {64,0}, + [I(179,212)] = {64,0}, + [I(180,212)] = {64,0}, + [I(181,212)] = {64,0}, + [I(182,212)] = {64,0}, + [I(183,212)] = {64,0}, + [I(184,212)] = {64,0}, + [I(185,212)] = {64,0}, + [I(186,212)] = {64,0}, + [I(187,212)] = {64,0}, + [I(188,212)] = {64,0}, + [I(189,212)] = {64,0}, + [I(190,212)] = {64,0}, + [I(191,212)] = {64,0}, + [I(192,212)] = {64,0}, + [I(193,212)] = {64,0}, + [I(194,212)] = {64,0}, + [I(195,212)] = {64,0}, + [I(196,212)] = {64,0}, + [I(197,212)] = {64,0}, + [I(198,212)] = {64,0}, + [I(199,212)] = {64,0}, + [I(200,212)] = {64,0}, + [I(201,212)] = {64,0}, + [I(202,212)] = {64,0}, + [I(203,212)] = {64,0}, + [I(204,212)] = {64,0}, + [I(205,212)] = {64,0}, + [I(206,212)] = {64,0}, + [I(207,212)] = {64,0}, + [I(208,212)] = {64,0}, + [I(209,212)] = {64,0}, + [I(210,212)] = {64,0}, + [I(211,212)] = {64,0}, + [I(212,212)] = {64,0}, + [I(213,212)] = {64,0}, + [I(214,212)] = {64,0}, + [I(215,212)] = {64,0}, + [I(216,212)] = {64,0}, + [I(217,212)] = {64,0}, + [I(218,212)] = {64,0}, + [I(219,212)] = {64,0}, + [I(220,212)] = {64,0}, + [I(221,212)] = {64,0}, + [I(222,212)] = {64,0}, + [I(223,212)] = {64,0}, + [I(224,212)] = {64,0}, + [I(225,212)] = {64,0}, + [I(226,212)] = {64,0}, + [I(227,212)] = {64,0}, + [I(228,212)] = {64,0}, + [I(229,212)] = {64,0}, + [I(230,212)] = {64,0}, + [I(231,212)] = {64,0}, + [I(232,212)] = {64,0}, + [I(233,212)] = {64,0}, + [I(234,212)] = {64,0}, + [I(235,212)] = {64,0}, + [I(236,212)] = {64,0}, + [I(237,212)] = {64,0}, + [I(238,212)] = {64,0}, + [I(239,212)] = {64,0}, + [I(240,212)] = {64,0}, + [I(241,212)] = {64,0}, + [I(242,212)] = {64,0}, + [I(243,212)] = {64,0}, + [I(244,212)] = {64,0}, + [I(245,212)] = {64,0}, + [I(246,212)] = {64,0}, + [I(247,212)] = {64,0}, + [I(248,212)] = {64,0}, + [I(249,212)] = {64,0}, + [I(250,212)] = {64,0}, + [I(251,212)] = {64,0}, + [I(252,212)] = {64,0}, + [I(253,212)] = {64,0}, + [I(254,212)] = {64,0}, + [I(255,212)] = {64,0}, + [I(0,213)] = {64,0}, + [I(1,213)] = {64,0}, + [I(2,213)] = {64,0}, + [I(3,213)] = {64,0}, + [I(4,213)] = {64,0}, + [I(5,213)] = {64,0}, + [I(6,213)] = {64,0}, + [I(7,213)] = {64,0}, + [I(8,213)] = {64,0}, + [I(9,213)] = {64,0}, + [I(10,213)] = {64,0}, + [I(11,213)] = {64,0}, + [I(12,213)] = {64,0}, + [I(13,213)] = {64,0}, + [I(14,213)] = {64,0}, + [I(15,213)] = {64,0}, + [I(16,213)] = {64,0}, + [I(17,213)] = {64,0}, + [I(18,213)] = {64,0}, + [I(19,213)] = {64,0}, + [I(20,213)] = {64,0}, + [I(21,213)] = {64,0}, + [I(22,213)] = {64,0}, + [I(23,213)] = {64,0}, + [I(24,213)] = {64,0}, + [I(25,213)] = {64,0}, + [I(26,213)] = {64,0}, + [I(27,213)] = {64,0}, + [I(28,213)] = {64,0}, + [I(29,213)] = {64,0}, + [I(30,213)] = {64,0}, + [I(31,213)] = {64,0}, + [I(32,213)] = {X32,0x53FFFFE7}, + [I(33,213)] = {64,0}, + [I(34,213)] = {64,0}, + [I(35,213)] = {64,0}, + [I(36,213)] = {64,0}, + [I(37,213)] = {X32,0x57FFFFE7}, + [I(38,213)] = {64,0}, + [I(39,213)] = {64,0}, + [I(40,213)] = {64,0}, + [I(41,213)] = {64,0}, + [I(42,213)] = {64,0}, + [I(43,213)] = {64,0}, + [I(44,213)] = {64,0}, + [I(45,213)] = {X32,0x5BFFFFE7}, + [I(46,213)] = {X32,0x5FFFFFE7}, + [I(47,213)] = {X32,0x63FFFFE7}, + [I(48,213)] = {31,0x3FFFFE7}, + [I(49,213)] = {31,0x7FFFFE7}, + [I(50,213)] = {31,0xBFFFFE7}, + [I(51,213)] = {X32,0x67FFFFE7}, + [I(52,213)] = {X32,0x6BFFFFE7}, + [I(53,213)] = {X32,0x6FFFFFE7}, + [I(54,213)] = {X32,0x73FFFFE7}, + [I(55,213)] = {X32,0x77FFFFE7}, + [I(56,213)] = {X32,0x7BFFFFE7}, + [I(57,213)] = {X32,0x7FFFFFE7}, + [I(58,213)] = {64,0}, + [I(59,213)] = {64,0}, + [I(60,213)] = {64,0}, + [I(61,213)] = {X32,0x83FFFFE7}, + [I(62,213)] = {64,0}, + [I(63,213)] = {64,0}, + [I(64,213)] = {64,0}, + [I(65,213)] = {X32,0x87FFFFE7}, + [I(66,213)] = {64,0}, + [I(67,213)] = {64,0}, + [I(68,213)] = {64,0}, + [I(69,213)] = {64,0}, + [I(70,213)] = {64,0}, + [I(71,213)] = {64,0}, + [I(72,213)] = {64,0}, + [I(73,213)] = {64,0}, + [I(74,213)] = {64,0}, + [I(75,213)] = {64,0}, + [I(76,213)] = {64,0}, + [I(77,213)] = {64,0}, + [I(78,213)] = {64,0}, + [I(79,213)] = {64,0}, + [I(80,213)] = {64,0}, + [I(81,213)] = {64,0}, + [I(82,213)] = {64,0}, + [I(83,213)] = {64,0}, + [I(84,213)] = {64,0}, + [I(85,213)] = {64,0}, + [I(86,213)] = {64,0}, + [I(87,213)] = {64,0}, + [I(88,213)] = {64,0}, + [I(89,213)] = {64,0}, + [I(90,213)] = {64,0}, + [I(91,213)] = {64,0}, + [I(92,213)] = {64,0}, + [I(93,213)] = {64,0}, + [I(94,213)] = {64,0}, + [I(95,213)] = {X32,0x8BFFFFE7}, + [I(96,213)] = {64,0}, + [I(97,213)] = {31,0xFFFFFE7}, + [I(98,213)] = {X32,0x8FFFFFE7}, + [I(99,213)] = {31,0x13FFFFE7}, + [I(100,213)] = {X32,0x93FFFFE7}, + [I(101,213)] = {31,0x17FFFFE7}, + [I(102,213)] = {X32,0x97FFFFE7}, + [I(103,213)] = {X32,0x9BFFFFE7}, + [I(104,213)] = {X32,0x9FFFFFE7}, + [I(105,213)] = {31,0x1BFFFFE7}, + [I(106,213)] = {64,0}, + [I(107,213)] = {64,0}, + [I(108,213)] = {X32,0xA3FFFFE7}, + [I(109,213)] = {X32,0xA7FFFFE7}, + [I(110,213)] = {X32,0xABFFFFE7}, + [I(111,213)] = {31,0x1FFFFFE7}, + [I(112,213)] = {X32,0xAFFFFFE7}, + [I(113,213)] = {64,0}, + [I(114,213)] = {X32,0xB3FFFFE7}, + [I(115,213)] = {31,0x23FFFFE7}, + [I(116,213)] = {31,0x27FFFFE7}, + [I(117,213)] = {X32,0xB7FFFFE7}, + [I(118,213)] = {64,0}, + [I(119,213)] = {64,0}, + [I(120,213)] = {64,0}, + [I(121,213)] = {64,0}, + [I(122,213)] = {64,0}, + [I(123,213)] = {64,0}, + [I(124,213)] = {64,0}, + [I(125,213)] = {64,0}, + [I(126,213)] = {64,0}, + [I(127,213)] = {64,0}, + [I(128,213)] = {64,0}, + [I(129,213)] = {64,0}, + [I(130,213)] = {64,0}, + [I(131,213)] = {64,0}, + [I(132,213)] = {64,0}, + [I(133,213)] = {64,0}, + [I(134,213)] = {64,0}, + [I(135,213)] = {64,0}, + [I(136,213)] = {64,0}, + [I(137,213)] = {64,0}, + [I(138,213)] = {64,0}, + [I(139,213)] = {64,0}, + [I(140,213)] = {64,0}, + [I(141,213)] = {64,0}, + [I(142,213)] = {64,0}, + [I(143,213)] = {64,0}, + [I(144,213)] = {64,0}, + [I(145,213)] = {64,0}, + [I(146,213)] = {64,0}, + [I(147,213)] = {64,0}, + [I(148,213)] = {64,0}, + [I(149,213)] = {64,0}, + [I(150,213)] = {64,0}, + [I(151,213)] = {64,0}, + [I(152,213)] = {64,0}, + [I(153,213)] = {64,0}, + [I(154,213)] = {64,0}, + [I(155,213)] = {64,0}, + [I(156,213)] = {64,0}, + [I(157,213)] = {64,0}, + [I(158,213)] = {64,0}, + [I(159,213)] = {64,0}, + [I(160,213)] = {64,0}, + [I(161,213)] = {64,0}, + [I(162,213)] = {64,0}, + [I(163,213)] = {64,0}, + [I(164,213)] = {64,0}, + [I(165,213)] = {64,0}, + [I(166,213)] = {64,0}, + [I(167,213)] = {64,0}, + [I(168,213)] = {64,0}, + [I(169,213)] = {64,0}, + [I(170,213)] = {64,0}, + [I(171,213)] = {64,0}, + [I(172,213)] = {64,0}, + [I(173,213)] = {64,0}, + [I(174,213)] = {64,0}, + [I(175,213)] = {64,0}, + [I(176,213)] = {64,0}, + [I(177,213)] = {64,0}, + [I(178,213)] = {64,0}, + [I(179,213)] = {64,0}, + [I(180,213)] = {64,0}, + [I(181,213)] = {64,0}, + [I(182,213)] = {64,0}, + [I(183,213)] = {64,0}, + [I(184,213)] = {64,0}, + [I(185,213)] = {64,0}, + [I(186,213)] = {64,0}, + [I(187,213)] = {64,0}, + [I(188,213)] = {64,0}, + [I(189,213)] = {64,0}, + [I(190,213)] = {64,0}, + [I(191,213)] = {64,0}, + [I(192,213)] = {64,0}, + [I(193,213)] = {64,0}, + [I(194,213)] = {64,0}, + [I(195,213)] = {64,0}, + [I(196,213)] = {64,0}, + [I(197,213)] = {64,0}, + [I(198,213)] = {64,0}, + [I(199,213)] = {64,0}, + [I(200,213)] = {64,0}, + [I(201,213)] = {64,0}, + [I(202,213)] = {64,0}, + [I(203,213)] = {64,0}, + [I(204,213)] = {64,0}, + [I(205,213)] = {64,0}, + [I(206,213)] = {64,0}, + [I(207,213)] = {64,0}, + [I(208,213)] = {64,0}, + [I(209,213)] = {64,0}, + [I(210,213)] = {64,0}, + [I(211,213)] = {64,0}, + [I(212,213)] = {64,0}, + [I(213,213)] = {64,0}, + [I(214,213)] = {64,0}, + [I(215,213)] = {64,0}, + [I(216,213)] = {64,0}, + [I(217,213)] = {64,0}, + [I(218,213)] = {64,0}, + [I(219,213)] = {64,0}, + [I(220,213)] = {64,0}, + [I(221,213)] = {64,0}, + [I(222,213)] = {64,0}, + [I(223,213)] = {64,0}, + [I(224,213)] = {64,0}, + [I(225,213)] = {64,0}, + [I(226,213)] = {64,0}, + [I(227,213)] = {64,0}, + [I(228,213)] = {64,0}, + [I(229,213)] = {64,0}, + [I(230,213)] = {64,0}, + [I(231,213)] = {64,0}, + [I(232,213)] = {64,0}, + [I(233,213)] = {64,0}, + [I(234,213)] = {64,0}, + [I(235,213)] = {64,0}, + [I(236,213)] = {64,0}, + [I(237,213)] = {64,0}, + [I(238,213)] = {64,0}, + [I(239,213)] = {64,0}, + [I(240,213)] = {64,0}, + [I(241,213)] = {64,0}, + [I(242,213)] = {64,0}, + [I(243,213)] = {64,0}, + [I(244,213)] = {64,0}, + [I(245,213)] = {64,0}, + [I(246,213)] = {64,0}, + [I(247,213)] = {64,0}, + [I(248,213)] = {64,0}, + [I(249,213)] = {64,0}, + [I(250,213)] = {64,0}, + [I(251,213)] = {64,0}, + [I(252,213)] = {64,0}, + [I(253,213)] = {64,0}, + [I(254,213)] = {64,0}, + [I(255,213)] = {64,0}, + [I(0,214)] = {64,0}, + [I(1,214)] = {64,0}, + [I(2,214)] = {64,0}, + [I(3,214)] = {64,0}, + [I(4,214)] = {64,0}, + [I(5,214)] = {64,0}, + [I(6,214)] = {64,0}, + [I(7,214)] = {64,0}, + [I(8,214)] = {64,0}, + [I(9,214)] = {64,0}, + [I(10,214)] = {64,0}, + [I(11,214)] = {64,0}, + [I(12,214)] = {64,0}, + [I(13,214)] = {64,0}, + [I(14,214)] = {64,0}, + [I(15,214)] = {64,0}, + [I(16,214)] = {64,0}, + [I(17,214)] = {64,0}, + [I(18,214)] = {64,0}, + [I(19,214)] = {64,0}, + [I(20,214)] = {64,0}, + [I(21,214)] = {64,0}, + [I(22,214)] = {64,0}, + [I(23,214)] = {64,0}, + [I(24,214)] = {64,0}, + [I(25,214)] = {64,0}, + [I(26,214)] = {64,0}, + [I(27,214)] = {64,0}, + [I(28,214)] = {64,0}, + [I(29,214)] = {64,0}, + [I(30,214)] = {64,0}, + [I(31,214)] = {64,0}, + [I(32,214)] = {64,0}, + [I(33,214)] = {64,0}, + [I(34,214)] = {64,0}, + [I(35,214)] = {64,0}, + [I(36,214)] = {64,0}, + [I(37,214)] = {64,0}, + [I(38,214)] = {64,0}, + [I(39,214)] = {64,0}, + [I(40,214)] = {64,0}, + [I(41,214)] = {64,0}, + [I(42,214)] = {64,0}, + [I(43,214)] = {64,0}, + [I(44,214)] = {64,0}, + [I(45,214)] = {64,0}, + [I(46,214)] = {64,0}, + [I(47,214)] = {64,0}, + [I(48,214)] = {X32,0x7FFFFE2}, + [I(49,214)] = {X32,0xFFFFFE2}, + [I(50,214)] = {X32,0x17FFFFE2}, + [I(51,214)] = {64,0}, + [I(52,214)] = {64,0}, + [I(53,214)] = {64,0}, + [I(54,214)] = {64,0}, + [I(55,214)] = {64,0}, + [I(56,214)] = {64,0}, + [I(57,214)] = {64,0}, + [I(58,214)] = {64,0}, + [I(59,214)] = {64,0}, + [I(60,214)] = {64,0}, + [I(61,214)] = {64,0}, + [I(62,214)] = {64,0}, + [I(63,214)] = {64,0}, + [I(64,214)] = {64,0}, + [I(65,214)] = {64,0}, + [I(66,214)] = {64,0}, + [I(67,214)] = {64,0}, + [I(68,214)] = {64,0}, + [I(69,214)] = {64,0}, + [I(70,214)] = {64,0}, + [I(71,214)] = {64,0}, + [I(72,214)] = {64,0}, + [I(73,214)] = {64,0}, + [I(74,214)] = {64,0}, + [I(75,214)] = {64,0}, + [I(76,214)] = {64,0}, + [I(77,214)] = {64,0}, + [I(78,214)] = {64,0}, + [I(79,214)] = {64,0}, + [I(80,214)] = {64,0}, + [I(81,214)] = {64,0}, + [I(82,214)] = {64,0}, + [I(83,214)] = {64,0}, + [I(84,214)] = {64,0}, + [I(85,214)] = {64,0}, + [I(86,214)] = {64,0}, + [I(87,214)] = {64,0}, + [I(88,214)] = {64,0}, + [I(89,214)] = {64,0}, + [I(90,214)] = {64,0}, + [I(91,214)] = {64,0}, + [I(92,214)] = {64,0}, + [I(93,214)] = {64,0}, + [I(94,214)] = {64,0}, + [I(95,214)] = {64,0}, + [I(96,214)] = {64,0}, + [I(97,214)] = {X32,0x1FFFFFE2}, + [I(98,214)] = {64,0}, + [I(99,214)] = {X32,0x27FFFFE2}, + [I(100,214)] = {64,0}, + [I(101,214)] = {X32,0x2FFFFFE2}, + [I(102,214)] = {64,0}, + [I(103,214)] = {64,0}, + [I(104,214)] = {64,0}, + [I(105,214)] = {X32,0x37FFFFE2}, + [I(106,214)] = {64,0}, + [I(107,214)] = {64,0}, + [I(108,214)] = {64,0}, + [I(109,214)] = {64,0}, + [I(110,214)] = {64,0}, + [I(111,214)] = {X32,0x3FFFFFE2}, + [I(112,214)] = {64,0}, + [I(113,214)] = {64,0}, + [I(114,214)] = {64,0}, + [I(115,214)] = {X32,0x47FFFFE2}, + [I(116,214)] = {X32,0x4FFFFFE2}, + [I(117,214)] = {64,0}, + [I(118,214)] = {64,0}, + [I(119,214)] = {64,0}, + [I(120,214)] = {64,0}, + [I(121,214)] = {64,0}, + [I(122,214)] = {64,0}, + [I(123,214)] = {64,0}, + [I(124,214)] = {64,0}, + [I(125,214)] = {64,0}, + [I(126,214)] = {64,0}, + [I(127,214)] = {64,0}, + [I(128,214)] = {64,0}, + [I(129,214)] = {64,0}, + [I(130,214)] = {64,0}, + [I(131,214)] = {64,0}, + [I(132,214)] = {64,0}, + [I(133,214)] = {64,0}, + [I(134,214)] = {64,0}, + [I(135,214)] = {64,0}, + [I(136,214)] = {64,0}, + [I(137,214)] = {64,0}, + [I(138,214)] = {64,0}, + [I(139,214)] = {64,0}, + [I(140,214)] = {64,0}, + [I(141,214)] = {64,0}, + [I(142,214)] = {64,0}, + [I(143,214)] = {64,0}, + [I(144,214)] = {64,0}, + [I(145,214)] = {64,0}, + [I(146,214)] = {64,0}, + [I(147,214)] = {64,0}, + [I(148,214)] = {64,0}, + [I(149,214)] = {64,0}, + [I(150,214)] = {64,0}, + [I(151,214)] = {64,0}, + [I(152,214)] = {64,0}, + [I(153,214)] = {64,0}, + [I(154,214)] = {64,0}, + [I(155,214)] = {64,0}, + [I(156,214)] = {64,0}, + [I(157,214)] = {64,0}, + [I(158,214)] = {64,0}, + [I(159,214)] = {64,0}, + [I(160,214)] = {64,0}, + [I(161,214)] = {64,0}, + [I(162,214)] = {64,0}, + [I(163,214)] = {64,0}, + [I(164,214)] = {64,0}, + [I(165,214)] = {64,0}, + [I(166,214)] = {64,0}, + [I(167,214)] = {64,0}, + [I(168,214)] = {64,0}, + [I(169,214)] = {64,0}, + [I(170,214)] = {64,0}, + [I(171,214)] = {64,0}, + [I(172,214)] = {64,0}, + [I(173,214)] = {64,0}, + [I(174,214)] = {64,0}, + [I(175,214)] = {64,0}, + [I(176,214)] = {64,0}, + [I(177,214)] = {64,0}, + [I(178,214)] = {64,0}, + [I(179,214)] = {64,0}, + [I(180,214)] = {64,0}, + [I(181,214)] = {64,0}, + [I(182,214)] = {64,0}, + [I(183,214)] = {64,0}, + [I(184,214)] = {64,0}, + [I(185,214)] = {64,0}, + [I(186,214)] = {64,0}, + [I(187,214)] = {64,0}, + [I(188,214)] = {64,0}, + [I(189,214)] = {64,0}, + [I(190,214)] = {64,0}, + [I(191,214)] = {64,0}, + [I(192,214)] = {64,0}, + [I(193,214)] = {64,0}, + [I(194,214)] = {64,0}, + [I(195,214)] = {64,0}, + [I(196,214)] = {64,0}, + [I(197,214)] = {64,0}, + [I(198,214)] = {64,0}, + [I(199,214)] = {64,0}, + [I(200,214)] = {64,0}, + [I(201,214)] = {64,0}, + [I(202,214)] = {64,0}, + [I(203,214)] = {64,0}, + [I(204,214)] = {64,0}, + [I(205,214)] = {64,0}, + [I(206,214)] = {64,0}, + [I(207,214)] = {64,0}, + [I(208,214)] = {64,0}, + [I(209,214)] = {64,0}, + [I(210,214)] = {64,0}, + [I(211,214)] = {64,0}, + [I(212,214)] = {64,0}, + [I(213,214)] = {64,0}, + [I(214,214)] = {64,0}, + [I(215,214)] = {64,0}, + [I(216,214)] = {64,0}, + [I(217,214)] = {64,0}, + [I(218,214)] = {64,0}, + [I(219,214)] = {64,0}, + [I(220,214)] = {64,0}, + [I(221,214)] = {64,0}, + [I(222,214)] = {64,0}, + [I(223,214)] = {64,0}, + [I(224,214)] = {64,0}, + [I(225,214)] = {64,0}, + [I(226,214)] = {64,0}, + [I(227,214)] = {64,0}, + [I(228,214)] = {64,0}, + [I(229,214)] = {64,0}, + [I(230,214)] = {64,0}, + [I(231,214)] = {64,0}, + [I(232,214)] = {64,0}, + [I(233,214)] = {64,0}, + [I(234,214)] = {64,0}, + [I(235,214)] = {64,0}, + [I(236,214)] = {64,0}, + [I(237,214)] = {64,0}, + [I(238,214)] = {64,0}, + [I(239,214)] = {64,0}, + [I(240,214)] = {64,0}, + [I(241,214)] = {64,0}, + [I(242,214)] = {64,0}, + [I(243,214)] = {64,0}, + [I(244,214)] = {64,0}, + [I(245,214)] = {64,0}, + [I(246,214)] = {64,0}, + [I(247,214)] = {64,0}, + [I(248,214)] = {64,0}, + [I(249,214)] = {64,0}, + [I(250,214)] = {64,0}, + [I(251,214)] = {64,0}, + [I(252,214)] = {64,0}, + [I(253,214)] = {64,0}, + [I(254,214)] = {64,0}, + [I(255,214)] = {64,0}, + [I(0,215)] = {64,0}, + [I(1,215)] = {64,0}, + [I(2,215)] = {64,0}, + [I(3,215)] = {64,0}, + [I(4,215)] = {64,0}, + [I(5,215)] = {64,0}, + [I(6,215)] = {64,0}, + [I(7,215)] = {64,0}, + [I(8,215)] = {64,0}, + [I(9,215)] = {64,0}, + [I(10,215)] = {64,0}, + [I(11,215)] = {64,0}, + [I(12,215)] = {64,0}, + [I(13,215)] = {64,0}, + [I(14,215)] = {64,0}, + [I(15,215)] = {64,0}, + [I(16,215)] = {64,0}, + [I(17,215)] = {64,0}, + [I(18,215)] = {64,0}, + [I(19,215)] = {64,0}, + [I(20,215)] = {64,0}, + [I(21,215)] = {64,0}, + [I(22,215)] = {64,0}, + [I(23,215)] = {64,0}, + [I(24,215)] = {64,0}, + [I(25,215)] = {64,0}, + [I(26,215)] = {64,0}, + [I(27,215)] = {64,0}, + [I(28,215)] = {64,0}, + [I(29,215)] = {64,0}, + [I(30,215)] = {64,0}, + [I(31,215)] = {64,0}, + [I(32,215)] = {30,0x14FFFFF2}, + [I(33,215)] = {64,0}, + [I(34,215)] = {64,0}, + [I(35,215)] = {64,0}, + [I(36,215)] = {64,0}, + [I(37,215)] = {30,0x15FFFFF2}, + [I(38,215)] = {X32,0xF8FFFFF2}, + [I(39,215)] = {64,0}, + [I(40,215)] = {64,0}, + [I(41,215)] = {64,0}, + [I(42,215)] = {X32,0xF9FFFFF2}, + [I(43,215)] = {64,0}, + [I(44,215)] = {X32,0xFAFFFFF2}, + [I(45,215)] = {30,0x16FFFFF2}, + [I(46,215)] = {30,0x17FFFFF2}, + [I(47,215)] = {30,0x18FFFFF2}, + [I(48,215)] = {29,0xFFFFF2}, + [I(49,215)] = {29,0x1FFFFF2}, + [I(50,215)] = {29,0x2FFFFF2}, + [I(51,215)] = {30,0x19FFFFF2}, + [I(52,215)] = {30,0x1AFFFFF2}, + [I(53,215)] = {30,0x1BFFFFF2}, + [I(54,215)] = {30,0x1CFFFFF2}, + [I(55,215)] = {30,0x1DFFFFF2}, + [I(56,215)] = {30,0x1EFFFFF2}, + [I(57,215)] = {30,0x1FFFFFF2}, + [I(58,215)] = {31,0x5CFFFFF2}, + [I(59,215)] = {X32,0xFBFFFFF2}, + [I(60,215)] = {64,0}, + [I(61,215)] = {30,0x20FFFFF2}, + [I(62,215)] = {64,0}, + [I(63,215)] = {64,0}, + [I(64,215)] = {64,0}, + [I(65,215)] = {30,0x21FFFFF2}, + [I(66,215)] = {31,0x5DFFFFF2}, + [I(67,215)] = {31,0x5EFFFFF2}, + [I(68,215)] = {31,0x5FFFFFF2}, + [I(69,215)] = {31,0x60FFFFF2}, + [I(70,215)] = {31,0x61FFFFF2}, + [I(71,215)] = {31,0x62FFFFF2}, + [I(72,215)] = {31,0x63FFFFF2}, + [I(73,215)] = {31,0x64FFFFF2}, + [I(74,215)] = {31,0x65FFFFF2}, + [I(75,215)] = {31,0x66FFFFF2}, + [I(76,215)] = {31,0x67FFFFF2}, + [I(77,215)] = {31,0x68FFFFF2}, + [I(78,215)] = {31,0x69FFFFF2}, + [I(79,215)] = {31,0x6AFFFFF2}, + [I(80,215)] = {31,0x6BFFFFF2}, + [I(81,215)] = {31,0x6CFFFFF2}, + [I(82,215)] = {31,0x6DFFFFF2}, + [I(83,215)] = {31,0x6EFFFFF2}, + [I(84,215)] = {31,0x6FFFFFF2}, + [I(85,215)] = {31,0x70FFFFF2}, + [I(86,215)] = {31,0x71FFFFF2}, + [I(87,215)] = {31,0x72FFFFF2}, + [I(88,215)] = {X32,0xFCFFFFF2}, + [I(89,215)] = {31,0x73FFFFF2}, + [I(90,215)] = {X32,0xFDFFFFF2}, + [I(91,215)] = {64,0}, + [I(92,215)] = {64,0}, + [I(93,215)] = {64,0}, + [I(94,215)] = {64,0}, + [I(95,215)] = {30,0x22FFFFF2}, + [I(96,215)] = {64,0}, + [I(97,215)] = {29,0x3FFFFF2}, + [I(98,215)] = {30,0x23FFFFF2}, + [I(99,215)] = {29,0x4FFFFF2}, + [I(100,215)] = {30,0x24FFFFF2}, + [I(101,215)] = {29,0x5FFFFF2}, + [I(102,215)] = {30,0x25FFFFF2}, + [I(103,215)] = {30,0x26FFFFF2}, + [I(104,215)] = {30,0x27FFFFF2}, + [I(105,215)] = {29,0x6FFFFF2}, + [I(106,215)] = {31,0x74FFFFF2}, + [I(107,215)] = {31,0x75FFFFF2}, + [I(108,215)] = {30,0x28FFFFF2}, + [I(109,215)] = {30,0x29FFFFF2}, + [I(110,215)] = {30,0x2AFFFFF2}, + [I(111,215)] = {29,0x7FFFFF2}, + [I(112,215)] = {30,0x2BFFFFF2}, + [I(113,215)] = {31,0x76FFFFF2}, + [I(114,215)] = {30,0x2CFFFFF2}, + [I(115,215)] = {29,0x8FFFFF2}, + [I(116,215)] = {29,0x9FFFFF2}, + [I(117,215)] = {30,0x2DFFFFF2}, + [I(118,215)] = {31,0x77FFFFF2}, + [I(119,215)] = {31,0x78FFFFF2}, + [I(120,215)] = {31,0x79FFFFF2}, + [I(121,215)] = {31,0x7AFFFFF2}, + [I(122,215)] = {31,0x7BFFFFF2}, + [I(123,215)] = {64,0}, + [I(124,215)] = {64,0}, + [I(125,215)] = {64,0}, + [I(126,215)] = {64,0}, + [I(127,215)] = {64,0}, + [I(128,215)] = {64,0}, + [I(129,215)] = {64,0}, + [I(130,215)] = {64,0}, + [I(131,215)] = {64,0}, + [I(132,215)] = {64,0}, + [I(133,215)] = {64,0}, + [I(134,215)] = {64,0}, + [I(135,215)] = {64,0}, + [I(136,215)] = {64,0}, + [I(137,215)] = {64,0}, + [I(138,215)] = {64,0}, + [I(139,215)] = {64,0}, + [I(140,215)] = {64,0}, + [I(141,215)] = {64,0}, + [I(142,215)] = {64,0}, + [I(143,215)] = {64,0}, + [I(144,215)] = {64,0}, + [I(145,215)] = {64,0}, + [I(146,215)] = {64,0}, + [I(147,215)] = {64,0}, + [I(148,215)] = {64,0}, + [I(149,215)] = {64,0}, + [I(150,215)] = {64,0}, + [I(151,215)] = {64,0}, + [I(152,215)] = {64,0}, + [I(153,215)] = {64,0}, + [I(154,215)] = {64,0}, + [I(155,215)] = {64,0}, + [I(156,215)] = {64,0}, + [I(157,215)] = {64,0}, + [I(158,215)] = {64,0}, + [I(159,215)] = {64,0}, + [I(160,215)] = {64,0}, + [I(161,215)] = {64,0}, + [I(162,215)] = {64,0}, + [I(163,215)] = {64,0}, + [I(164,215)] = {64,0}, + [I(165,215)] = {64,0}, + [I(166,215)] = {64,0}, + [I(167,215)] = {64,0}, + [I(168,215)] = {64,0}, + [I(169,215)] = {64,0}, + [I(170,215)] = {64,0}, + [I(171,215)] = {64,0}, + [I(172,215)] = {64,0}, + [I(173,215)] = {64,0}, + [I(174,215)] = {64,0}, + [I(175,215)] = {64,0}, + [I(176,215)] = {64,0}, + [I(177,215)] = {64,0}, + [I(178,215)] = {64,0}, + [I(179,215)] = {64,0}, + [I(180,215)] = {64,0}, + [I(181,215)] = {64,0}, + [I(182,215)] = {64,0}, + [I(183,215)] = {64,0}, + [I(184,215)] = {64,0}, + [I(185,215)] = {64,0}, + [I(186,215)] = {64,0}, + [I(187,215)] = {64,0}, + [I(188,215)] = {64,0}, + [I(189,215)] = {64,0}, + [I(190,215)] = {64,0}, + [I(191,215)] = {64,0}, + [I(192,215)] = {64,0}, + [I(193,215)] = {64,0}, + [I(194,215)] = {64,0}, + [I(195,215)] = {64,0}, + [I(196,215)] = {64,0}, + [I(197,215)] = {64,0}, + [I(198,215)] = {64,0}, + [I(199,215)] = {64,0}, + [I(200,215)] = {64,0}, + [I(201,215)] = {64,0}, + [I(202,215)] = {64,0}, + [I(203,215)] = {64,0}, + [I(204,215)] = {64,0}, + [I(205,215)] = {64,0}, + [I(206,215)] = {64,0}, + [I(207,215)] = {64,0}, + [I(208,215)] = {64,0}, + [I(209,215)] = {64,0}, + [I(210,215)] = {64,0}, + [I(211,215)] = {64,0}, + [I(212,215)] = {64,0}, + [I(213,215)] = {64,0}, + [I(214,215)] = {64,0}, + [I(215,215)] = {64,0}, + [I(216,215)] = {64,0}, + [I(217,215)] = {64,0}, + [I(218,215)] = {64,0}, + [I(219,215)] = {64,0}, + [I(220,215)] = {64,0}, + [I(221,215)] = {64,0}, + [I(222,215)] = {64,0}, + [I(223,215)] = {64,0}, + [I(224,215)] = {64,0}, + [I(225,215)] = {64,0}, + [I(226,215)] = {64,0}, + [I(227,215)] = {64,0}, + [I(228,215)] = {64,0}, + [I(229,215)] = {64,0}, + [I(230,215)] = {64,0}, + [I(231,215)] = {64,0}, + [I(232,215)] = {64,0}, + [I(233,215)] = {64,0}, + [I(234,215)] = {64,0}, + [I(235,215)] = {64,0}, + [I(236,215)] = {64,0}, + [I(237,215)] = {64,0}, + [I(238,215)] = {64,0}, + [I(239,215)] = {64,0}, + [I(240,215)] = {64,0}, + [I(241,215)] = {64,0}, + [I(242,215)] = {64,0}, + [I(243,215)] = {64,0}, + [I(244,215)] = {64,0}, + [I(245,215)] = {64,0}, + [I(246,215)] = {64,0}, + [I(247,215)] = {64,0}, + [I(248,215)] = {64,0}, + [I(249,215)] = {64,0}, + [I(250,215)] = {64,0}, + [I(251,215)] = {64,0}, + [I(252,215)] = {64,0}, + [I(253,215)] = {64,0}, + [I(254,215)] = {64,0}, + [I(255,215)] = {64,0}, + [I(0,216)] = {64,0}, + [I(1,216)] = {64,0}, + [I(2,216)] = {64,0}, + [I(3,216)] = {64,0}, + [I(4,216)] = {64,0}, + [I(5,216)] = {64,0}, + [I(6,216)] = {64,0}, + [I(7,216)] = {64,0}, + [I(8,216)] = {64,0}, + [I(9,216)] = {64,0}, + [I(10,216)] = {64,0}, + [I(11,216)] = {64,0}, + [I(12,216)] = {64,0}, + [I(13,216)] = {64,0}, + [I(14,216)] = {64,0}, + [I(15,216)] = {64,0}, + [I(16,216)] = {64,0}, + [I(17,216)] = {64,0}, + [I(18,216)] = {64,0}, + [I(19,216)] = {64,0}, + [I(20,216)] = {64,0}, + [I(21,216)] = {64,0}, + [I(22,216)] = {64,0}, + [I(23,216)] = {64,0}, + [I(24,216)] = {64,0}, + [I(25,216)] = {64,0}, + [I(26,216)] = {64,0}, + [I(27,216)] = {64,0}, + [I(28,216)] = {64,0}, + [I(29,216)] = {64,0}, + [I(30,216)] = {64,0}, + [I(31,216)] = {64,0}, + [I(32,216)] = {27,0x29FFFE4}, + [I(33,216)] = {31,0x7F1FFFE4}, + [I(34,216)] = {31,0x7F3FFFE4}, + [I(35,216)] = {64,0}, + [I(36,216)] = {64,0}, + [I(37,216)] = {27,0x2BFFFE4}, + [I(38,216)] = {29,0x1F1FFFE4}, + [I(39,216)] = {X32,0xFF5FFFE4}, + [I(40,216)] = {31,0x7F5FFFE4}, + [I(41,216)] = {31,0x7F7FFFE4}, + [I(42,216)] = {29,0x1F3FFFE4}, + [I(43,216)] = {X32,0xFF7FFFE4}, + [I(44,216)] = {29,0x1F5FFFE4}, + [I(45,216)] = {27,0x2DFFFE4}, + [I(46,216)] = {27,0x2FFFFE4}, + [I(47,216)] = {27,0x31FFFE4}, + [I(48,216)] = {26,0x1FFFE4}, + [I(49,216)] = {26,0x3FFFE4}, + [I(50,216)] = {26,0x5FFFE4}, + [I(51,216)] = {27,0x33FFFE4}, + [I(52,216)] = {27,0x35FFFE4}, + [I(53,216)] = {27,0x37FFFE4}, + [I(54,216)] = {27,0x39FFFE4}, + [I(55,216)] = {27,0x3BFFFE4}, + [I(56,216)] = {27,0x3DFFFE4}, + [I(57,216)] = {27,0x3FFFFE4}, + [I(58,216)] = {28,0xB9FFFE4}, + [I(59,216)] = {29,0x1F7FFFE4}, + [I(60,216)] = {64,0}, + [I(61,216)] = {27,0x41FFFE4}, + [I(62,216)] = {64,0}, + [I(63,216)] = {31,0x7F9FFFE4}, + [I(64,216)] = {64,0}, + [I(65,216)] = {27,0x43FFFE4}, + [I(66,216)] = {28,0xBBFFFE4}, + [I(67,216)] = {28,0xBDFFFE4}, + [I(68,216)] = {28,0xBFFFFE4}, + [I(69,216)] = {28,0xC1FFFE4}, + [I(70,216)] = {28,0xC3FFFE4}, + [I(71,216)] = {28,0xC5FFFE4}, + [I(72,216)] = {28,0xC7FFFE4}, + [I(73,216)] = {28,0xC9FFFE4}, + [I(74,216)] = {28,0xCBFFFE4}, + [I(75,216)] = {28,0xCDFFFE4}, + [I(76,216)] = {28,0xCFFFFE4}, + [I(77,216)] = {28,0xD1FFFE4}, + [I(78,216)] = {28,0xD3FFFE4}, + [I(79,216)] = {28,0xD5FFFE4}, + [I(80,216)] = {28,0xD7FFFE4}, + [I(81,216)] = {28,0xD9FFFE4}, + [I(82,216)] = {28,0xDBFFFE4}, + [I(83,216)] = {28,0xDDFFFE4}, + [I(84,216)] = {28,0xDFFFFE4}, + [I(85,216)] = {28,0xE1FFFE4}, + [I(86,216)] = {28,0xE3FFFE4}, + [I(87,216)] = {28,0xE5FFFE4}, + [I(88,216)] = {29,0x1F9FFFE4}, + [I(89,216)] = {28,0xE7FFFE4}, + [I(90,216)] = {29,0x1FBFFFE4}, + [I(91,216)] = {64,0}, + [I(92,216)] = {64,0}, + [I(93,216)] = {64,0}, + [I(94,216)] = {64,0}, + [I(95,216)] = {27,0x45FFFE4}, + [I(96,216)] = {64,0}, + [I(97,216)] = {26,0x7FFFE4}, + [I(98,216)] = {27,0x47FFFE4}, + [I(99,216)] = {26,0x9FFFE4}, + [I(100,216)] = {27,0x49FFFE4}, + [I(101,216)] = {26,0xBFFFE4}, + [I(102,216)] = {27,0x4BFFFE4}, + [I(103,216)] = {27,0x4DFFFE4}, + [I(104,216)] = {27,0x4FFFFE4}, + [I(105,216)] = {26,0xDFFFE4}, + [I(106,216)] = {28,0xE9FFFE4}, + [I(107,216)] = {28,0xEBFFFE4}, + [I(108,216)] = {27,0x51FFFE4}, + [I(109,216)] = {27,0x53FFFE4}, + [I(110,216)] = {27,0x55FFFE4}, + [I(111,216)] = {26,0xFFFFE4}, + [I(112,216)] = {27,0x57FFFE4}, + [I(113,216)] = {28,0xEDFFFE4}, + [I(114,216)] = {27,0x59FFFE4}, + [I(115,216)] = {26,0x11FFFE4}, + [I(116,216)] = {26,0x13FFFE4}, + [I(117,216)] = {27,0x5BFFFE4}, + [I(118,216)] = {28,0xEFFFFE4}, + [I(119,216)] = {28,0xF1FFFE4}, + [I(120,216)] = {28,0xF3FFFE4}, + [I(121,216)] = {28,0xF5FFFE4}, + [I(122,216)] = {28,0xF7FFFE4}, + [I(123,216)] = {64,0}, + [I(124,216)] = {X32,0xFF9FFFE4}, + [I(125,216)] = {64,0}, + [I(126,216)] = {64,0}, + [I(127,216)] = {64,0}, + [I(128,216)] = {64,0}, + [I(129,216)] = {64,0}, + [I(130,216)] = {64,0}, + [I(131,216)] = {64,0}, + [I(132,216)] = {64,0}, + [I(133,216)] = {64,0}, + [I(134,216)] = {64,0}, + [I(135,216)] = {64,0}, + [I(136,216)] = {64,0}, + [I(137,216)] = {64,0}, + [I(138,216)] = {64,0}, + [I(139,216)] = {64,0}, + [I(140,216)] = {64,0}, + [I(141,216)] = {64,0}, + [I(142,216)] = {64,0}, + [I(143,216)] = {64,0}, + [I(144,216)] = {64,0}, + [I(145,216)] = {64,0}, + [I(146,216)] = {64,0}, + [I(147,216)] = {64,0}, + [I(148,216)] = {64,0}, + [I(149,216)] = {64,0}, + [I(150,216)] = {64,0}, + [I(151,216)] = {64,0}, + [I(152,216)] = {64,0}, + [I(153,216)] = {64,0}, + [I(154,216)] = {64,0}, + [I(155,216)] = {64,0}, + [I(156,216)] = {64,0}, + [I(157,216)] = {64,0}, + [I(158,216)] = {64,0}, + [I(159,216)] = {64,0}, + [I(160,216)] = {64,0}, + [I(161,216)] = {64,0}, + [I(162,216)] = {64,0}, + [I(163,216)] = {64,0}, + [I(164,216)] = {64,0}, + [I(165,216)] = {64,0}, + [I(166,216)] = {64,0}, + [I(167,216)] = {64,0}, + [I(168,216)] = {64,0}, + [I(169,216)] = {64,0}, + [I(170,216)] = {64,0}, + [I(171,216)] = {64,0}, + [I(172,216)] = {64,0}, + [I(173,216)] = {64,0}, + [I(174,216)] = {64,0}, + [I(175,216)] = {64,0}, + [I(176,216)] = {64,0}, + [I(177,216)] = {64,0}, + [I(178,216)] = {64,0}, + [I(179,216)] = {64,0}, + [I(180,216)] = {64,0}, + [I(181,216)] = {64,0}, + [I(182,216)] = {64,0}, + [I(183,216)] = {64,0}, + [I(184,216)] = {64,0}, + [I(185,216)] = {64,0}, + [I(186,216)] = {64,0}, + [I(187,216)] = {64,0}, + [I(188,216)] = {64,0}, + [I(189,216)] = {64,0}, + [I(190,216)] = {64,0}, + [I(191,216)] = {64,0}, + [I(192,216)] = {64,0}, + [I(193,216)] = {64,0}, + [I(194,216)] = {64,0}, + [I(195,216)] = {64,0}, + [I(196,216)] = {64,0}, + [I(197,216)] = {64,0}, + [I(198,216)] = {64,0}, + [I(199,216)] = {64,0}, + [I(200,216)] = {64,0}, + [I(201,216)] = {64,0}, + [I(202,216)] = {64,0}, + [I(203,216)] = {64,0}, + [I(204,216)] = {64,0}, + [I(205,216)] = {64,0}, + [I(206,216)] = {64,0}, + [I(207,216)] = {64,0}, + [I(208,216)] = {64,0}, + [I(209,216)] = {64,0}, + [I(210,216)] = {64,0}, + [I(211,216)] = {64,0}, + [I(212,216)] = {64,0}, + [I(213,216)] = {64,0}, + [I(214,216)] = {64,0}, + [I(215,216)] = {64,0}, + [I(216,216)] = {64,0}, + [I(217,216)] = {64,0}, + [I(218,216)] = {64,0}, + [I(219,216)] = {64,0}, + [I(220,216)] = {64,0}, + [I(221,216)] = {64,0}, + [I(222,216)] = {64,0}, + [I(223,216)] = {64,0}, + [I(224,216)] = {64,0}, + [I(225,216)] = {64,0}, + [I(226,216)] = {64,0}, + [I(227,216)] = {64,0}, + [I(228,216)] = {64,0}, + [I(229,216)] = {64,0}, + [I(230,216)] = {64,0}, + [I(231,216)] = {64,0}, + [I(232,216)] = {64,0}, + [I(233,216)] = {64,0}, + [I(234,216)] = {64,0}, + [I(235,216)] = {64,0}, + [I(236,216)] = {64,0}, + [I(237,216)] = {64,0}, + [I(238,216)] = {64,0}, + [I(239,216)] = {64,0}, + [I(240,216)] = {64,0}, + [I(241,216)] = {64,0}, + [I(242,216)] = {64,0}, + [I(243,216)] = {64,0}, + [I(244,216)] = {64,0}, + [I(245,216)] = {64,0}, + [I(246,216)] = {64,0}, + [I(247,216)] = {64,0}, + [I(248,216)] = {64,0}, + [I(249,216)] = {64,0}, + [I(250,216)] = {64,0}, + [I(251,216)] = {64,0}, + [I(252,216)] = {64,0}, + [I(253,216)] = {64,0}, + [I(254,216)] = {64,0}, + [I(255,216)] = {64,0}, + [I(0,217)] = {64,0}, + [I(1,217)] = {64,0}, + [I(2,217)] = {64,0}, + [I(3,217)] = {64,0}, + [I(4,217)] = {64,0}, + [I(5,217)] = {64,0}, + [I(6,217)] = {64,0}, + [I(7,217)] = {64,0}, + [I(8,217)] = {64,0}, + [I(9,217)] = {64,0}, + [I(10,217)] = {64,0}, + [I(11,217)] = {64,0}, + [I(12,217)] = {64,0}, + [I(13,217)] = {64,0}, + [I(14,217)] = {64,0}, + [I(15,217)] = {64,0}, + [I(16,217)] = {64,0}, + [I(17,217)] = {64,0}, + [I(18,217)] = {64,0}, + [I(19,217)] = {64,0}, + [I(20,217)] = {64,0}, + [I(21,217)] = {64,0}, + [I(22,217)] = {64,0}, + [I(23,217)] = {64,0}, + [I(24,217)] = {64,0}, + [I(25,217)] = {64,0}, + [I(26,217)] = {64,0}, + [I(27,217)] = {64,0}, + [I(28,217)] = {64,0}, + [I(29,217)] = {64,0}, + [I(30,217)] = {64,0}, + [I(31,217)] = {64,0}, + [I(32,217)] = {27,0x29FFFE5}, + [I(33,217)] = {31,0x7F1FFFE5}, + [I(34,217)] = {31,0x7F3FFFE5}, + [I(35,217)] = {64,0}, + [I(36,217)] = {64,0}, + [I(37,217)] = {27,0x2BFFFE5}, + [I(38,217)] = {29,0x1F1FFFE5}, + [I(39,217)] = {X32,0xFF5FFFE5}, + [I(40,217)] = {31,0x7F5FFFE5}, + [I(41,217)] = {31,0x7F7FFFE5}, + [I(42,217)] = {29,0x1F3FFFE5}, + [I(43,217)] = {X32,0xFF7FFFE5}, + [I(44,217)] = {29,0x1F5FFFE5}, + [I(45,217)] = {27,0x2DFFFE5}, + [I(46,217)] = {27,0x2FFFFE5}, + [I(47,217)] = {27,0x31FFFE5}, + [I(48,217)] = {26,0x1FFFE5}, + [I(49,217)] = {26,0x3FFFE5}, + [I(50,217)] = {26,0x5FFFE5}, + [I(51,217)] = {27,0x33FFFE5}, + [I(52,217)] = {27,0x35FFFE5}, + [I(53,217)] = {27,0x37FFFE5}, + [I(54,217)] = {27,0x39FFFE5}, + [I(55,217)] = {27,0x3BFFFE5}, + [I(56,217)] = {27,0x3DFFFE5}, + [I(57,217)] = {27,0x3FFFFE5}, + [I(58,217)] = {28,0xB9FFFE5}, + [I(59,217)] = {29,0x1F7FFFE5}, + [I(60,217)] = {64,0}, + [I(61,217)] = {27,0x41FFFE5}, + [I(62,217)] = {64,0}, + [I(63,217)] = {31,0x7F9FFFE5}, + [I(64,217)] = {64,0}, + [I(65,217)] = {27,0x43FFFE5}, + [I(66,217)] = {28,0xBBFFFE5}, + [I(67,217)] = {28,0xBDFFFE5}, + [I(68,217)] = {28,0xBFFFFE5}, + [I(69,217)] = {28,0xC1FFFE5}, + [I(70,217)] = {28,0xC3FFFE5}, + [I(71,217)] = {28,0xC5FFFE5}, + [I(72,217)] = {28,0xC7FFFE5}, + [I(73,217)] = {28,0xC9FFFE5}, + [I(74,217)] = {28,0xCBFFFE5}, + [I(75,217)] = {28,0xCDFFFE5}, + [I(76,217)] = {28,0xCFFFFE5}, + [I(77,217)] = {28,0xD1FFFE5}, + [I(78,217)] = {28,0xD3FFFE5}, + [I(79,217)] = {28,0xD5FFFE5}, + [I(80,217)] = {28,0xD7FFFE5}, + [I(81,217)] = {28,0xD9FFFE5}, + [I(82,217)] = {28,0xDBFFFE5}, + [I(83,217)] = {28,0xDDFFFE5}, + [I(84,217)] = {28,0xDFFFFE5}, + [I(85,217)] = {28,0xE1FFFE5}, + [I(86,217)] = {28,0xE3FFFE5}, + [I(87,217)] = {28,0xE5FFFE5}, + [I(88,217)] = {29,0x1F9FFFE5}, + [I(89,217)] = {28,0xE7FFFE5}, + [I(90,217)] = {29,0x1FBFFFE5}, + [I(91,217)] = {64,0}, + [I(92,217)] = {64,0}, + [I(93,217)] = {64,0}, + [I(94,217)] = {64,0}, + [I(95,217)] = {27,0x45FFFE5}, + [I(96,217)] = {64,0}, + [I(97,217)] = {26,0x7FFFE5}, + [I(98,217)] = {27,0x47FFFE5}, + [I(99,217)] = {26,0x9FFFE5}, + [I(100,217)] = {27,0x49FFFE5}, + [I(101,217)] = {26,0xBFFFE5}, + [I(102,217)] = {27,0x4BFFFE5}, + [I(103,217)] = {27,0x4DFFFE5}, + [I(104,217)] = {27,0x4FFFFE5}, + [I(105,217)] = {26,0xDFFFE5}, + [I(106,217)] = {28,0xE9FFFE5}, + [I(107,217)] = {28,0xEBFFFE5}, + [I(108,217)] = {27,0x51FFFE5}, + [I(109,217)] = {27,0x53FFFE5}, + [I(110,217)] = {27,0x55FFFE5}, + [I(111,217)] = {26,0xFFFFE5}, + [I(112,217)] = {27,0x57FFFE5}, + [I(113,217)] = {28,0xEDFFFE5}, + [I(114,217)] = {27,0x59FFFE5}, + [I(115,217)] = {26,0x11FFFE5}, + [I(116,217)] = {26,0x13FFFE5}, + [I(117,217)] = {27,0x5BFFFE5}, + [I(118,217)] = {28,0xEFFFFE5}, + [I(119,217)] = {28,0xF1FFFE5}, + [I(120,217)] = {28,0xF3FFFE5}, + [I(121,217)] = {28,0xF5FFFE5}, + [I(122,217)] = {28,0xF7FFFE5}, + [I(123,217)] = {64,0}, + [I(124,217)] = {X32,0xFF9FFFE5}, + [I(125,217)] = {64,0}, + [I(126,217)] = {64,0}, + [I(127,217)] = {64,0}, + [I(128,217)] = {64,0}, + [I(129,217)] = {64,0}, + [I(130,217)] = {64,0}, + [I(131,217)] = {64,0}, + [I(132,217)] = {64,0}, + [I(133,217)] = {64,0}, + [I(134,217)] = {64,0}, + [I(135,217)] = {64,0}, + [I(136,217)] = {64,0}, + [I(137,217)] = {64,0}, + [I(138,217)] = {64,0}, + [I(139,217)] = {64,0}, + [I(140,217)] = {64,0}, + [I(141,217)] = {64,0}, + [I(142,217)] = {64,0}, + [I(143,217)] = {64,0}, + [I(144,217)] = {64,0}, + [I(145,217)] = {64,0}, + [I(146,217)] = {64,0}, + [I(147,217)] = {64,0}, + [I(148,217)] = {64,0}, + [I(149,217)] = {64,0}, + [I(150,217)] = {64,0}, + [I(151,217)] = {64,0}, + [I(152,217)] = {64,0}, + [I(153,217)] = {64,0}, + [I(154,217)] = {64,0}, + [I(155,217)] = {64,0}, + [I(156,217)] = {64,0}, + [I(157,217)] = {64,0}, + [I(158,217)] = {64,0}, + [I(159,217)] = {64,0}, + [I(160,217)] = {64,0}, + [I(161,217)] = {64,0}, + [I(162,217)] = {64,0}, + [I(163,217)] = {64,0}, + [I(164,217)] = {64,0}, + [I(165,217)] = {64,0}, + [I(166,217)] = {64,0}, + [I(167,217)] = {64,0}, + [I(168,217)] = {64,0}, + [I(169,217)] = {64,0}, + [I(170,217)] = {64,0}, + [I(171,217)] = {64,0}, + [I(172,217)] = {64,0}, + [I(173,217)] = {64,0}, + [I(174,217)] = {64,0}, + [I(175,217)] = {64,0}, + [I(176,217)] = {64,0}, + [I(177,217)] = {64,0}, + [I(178,217)] = {64,0}, + [I(179,217)] = {64,0}, + [I(180,217)] = {64,0}, + [I(181,217)] = {64,0}, + [I(182,217)] = {64,0}, + [I(183,217)] = {64,0}, + [I(184,217)] = {64,0}, + [I(185,217)] = {64,0}, + [I(186,217)] = {64,0}, + [I(187,217)] = {64,0}, + [I(188,217)] = {64,0}, + [I(189,217)] = {64,0}, + [I(190,217)] = {64,0}, + [I(191,217)] = {64,0}, + [I(192,217)] = {64,0}, + [I(193,217)] = {64,0}, + [I(194,217)] = {64,0}, + [I(195,217)] = {64,0}, + [I(196,217)] = {64,0}, + [I(197,217)] = {64,0}, + [I(198,217)] = {64,0}, + [I(199,217)] = {64,0}, + [I(200,217)] = {64,0}, + [I(201,217)] = {64,0}, + [I(202,217)] = {64,0}, + [I(203,217)] = {64,0}, + [I(204,217)] = {64,0}, + [I(205,217)] = {64,0}, + [I(206,217)] = {64,0}, + [I(207,217)] = {64,0}, + [I(208,217)] = {64,0}, + [I(209,217)] = {64,0}, + [I(210,217)] = {64,0}, + [I(211,217)] = {64,0}, + [I(212,217)] = {64,0}, + [I(213,217)] = {64,0}, + [I(214,217)] = {64,0}, + [I(215,217)] = {64,0}, + [I(216,217)] = {64,0}, + [I(217,217)] = {64,0}, + [I(218,217)] = {64,0}, + [I(219,217)] = {64,0}, + [I(220,217)] = {64,0}, + [I(221,217)] = {64,0}, + [I(222,217)] = {64,0}, + [I(223,217)] = {64,0}, + [I(224,217)] = {64,0}, + [I(225,217)] = {64,0}, + [I(226,217)] = {64,0}, + [I(227,217)] = {64,0}, + [I(228,217)] = {64,0}, + [I(229,217)] = {64,0}, + [I(230,217)] = {64,0}, + [I(231,217)] = {64,0}, + [I(232,217)] = {64,0}, + [I(233,217)] = {64,0}, + [I(234,217)] = {64,0}, + [I(235,217)] = {64,0}, + [I(236,217)] = {64,0}, + [I(237,217)] = {64,0}, + [I(238,217)] = {64,0}, + [I(239,217)] = {64,0}, + [I(240,217)] = {64,0}, + [I(241,217)] = {64,0}, + [I(242,217)] = {64,0}, + [I(243,217)] = {64,0}, + [I(244,217)] = {64,0}, + [I(245,217)] = {64,0}, + [I(246,217)] = {64,0}, + [I(247,217)] = {64,0}, + [I(248,217)] = {64,0}, + [I(249,217)] = {64,0}, + [I(250,217)] = {64,0}, + [I(251,217)] = {64,0}, + [I(252,217)] = {64,0}, + [I(253,217)] = {64,0}, + [I(254,217)] = {64,0}, + [I(255,217)] = {64,0}, + [I(0,218)] = {64,0}, + [I(1,218)] = {64,0}, + [I(2,218)] = {64,0}, + [I(3,218)] = {64,0}, + [I(4,218)] = {64,0}, + [I(5,218)] = {64,0}, + [I(6,218)] = {64,0}, + [I(7,218)] = {64,0}, + [I(8,218)] = {64,0}, + [I(9,218)] = {64,0}, + [I(10,218)] = {64,0}, + [I(11,218)] = {64,0}, + [I(12,218)] = {64,0}, + [I(13,218)] = {64,0}, + [I(14,218)] = {64,0}, + [I(15,218)] = {64,0}, + [I(16,218)] = {64,0}, + [I(17,218)] = {64,0}, + [I(18,218)] = {64,0}, + [I(19,218)] = {64,0}, + [I(20,218)] = {64,0}, + [I(21,218)] = {64,0}, + [I(22,218)] = {64,0}, + [I(23,218)] = {64,0}, + [I(24,218)] = {64,0}, + [I(25,218)] = {64,0}, + [I(26,218)] = {64,0}, + [I(27,218)] = {64,0}, + [I(28,218)] = {64,0}, + [I(29,218)] = {64,0}, + [I(30,218)] = {64,0}, + [I(31,218)] = {64,0}, + [I(32,218)] = {X32,0x53FFFFE8}, + [I(33,218)] = {64,0}, + [I(34,218)] = {64,0}, + [I(35,218)] = {64,0}, + [I(36,218)] = {64,0}, + [I(37,218)] = {X32,0x57FFFFE8}, + [I(38,218)] = {64,0}, + [I(39,218)] = {64,0}, + [I(40,218)] = {64,0}, + [I(41,218)] = {64,0}, + [I(42,218)] = {64,0}, + [I(43,218)] = {64,0}, + [I(44,218)] = {64,0}, + [I(45,218)] = {X32,0x5BFFFFE8}, + [I(46,218)] = {X32,0x5FFFFFE8}, + [I(47,218)] = {X32,0x63FFFFE8}, + [I(48,218)] = {31,0x3FFFFE8}, + [I(49,218)] = {31,0x7FFFFE8}, + [I(50,218)] = {31,0xBFFFFE8}, + [I(51,218)] = {X32,0x67FFFFE8}, + [I(52,218)] = {X32,0x6BFFFFE8}, + [I(53,218)] = {X32,0x6FFFFFE8}, + [I(54,218)] = {X32,0x73FFFFE8}, + [I(55,218)] = {X32,0x77FFFFE8}, + [I(56,218)] = {X32,0x7BFFFFE8}, + [I(57,218)] = {X32,0x7FFFFFE8}, + [I(58,218)] = {64,0}, + [I(59,218)] = {64,0}, + [I(60,218)] = {64,0}, + [I(61,218)] = {X32,0x83FFFFE8}, + [I(62,218)] = {64,0}, + [I(63,218)] = {64,0}, + [I(64,218)] = {64,0}, + [I(65,218)] = {X32,0x87FFFFE8}, + [I(66,218)] = {64,0}, + [I(67,218)] = {64,0}, + [I(68,218)] = {64,0}, + [I(69,218)] = {64,0}, + [I(70,218)] = {64,0}, + [I(71,218)] = {64,0}, + [I(72,218)] = {64,0}, + [I(73,218)] = {64,0}, + [I(74,218)] = {64,0}, + [I(75,218)] = {64,0}, + [I(76,218)] = {64,0}, + [I(77,218)] = {64,0}, + [I(78,218)] = {64,0}, + [I(79,218)] = {64,0}, + [I(80,218)] = {64,0}, + [I(81,218)] = {64,0}, + [I(82,218)] = {64,0}, + [I(83,218)] = {64,0}, + [I(84,218)] = {64,0}, + [I(85,218)] = {64,0}, + [I(86,218)] = {64,0}, + [I(87,218)] = {64,0}, + [I(88,218)] = {64,0}, + [I(89,218)] = {64,0}, + [I(90,218)] = {64,0}, + [I(91,218)] = {64,0}, + [I(92,218)] = {64,0}, + [I(93,218)] = {64,0}, + [I(94,218)] = {64,0}, + [I(95,218)] = {X32,0x8BFFFFE8}, + [I(96,218)] = {64,0}, + [I(97,218)] = {31,0xFFFFFE8}, + [I(98,218)] = {X32,0x8FFFFFE8}, + [I(99,218)] = {31,0x13FFFFE8}, + [I(100,218)] = {X32,0x93FFFFE8}, + [I(101,218)] = {31,0x17FFFFE8}, + [I(102,218)] = {X32,0x97FFFFE8}, + [I(103,218)] = {X32,0x9BFFFFE8}, + [I(104,218)] = {X32,0x9FFFFFE8}, + [I(105,218)] = {31,0x1BFFFFE8}, + [I(106,218)] = {64,0}, + [I(107,218)] = {64,0}, + [I(108,218)] = {X32,0xA3FFFFE8}, + [I(109,218)] = {X32,0xA7FFFFE8}, + [I(110,218)] = {X32,0xABFFFFE8}, + [I(111,218)] = {31,0x1FFFFFE8}, + [I(112,218)] = {X32,0xAFFFFFE8}, + [I(113,218)] = {64,0}, + [I(114,218)] = {X32,0xB3FFFFE8}, + [I(115,218)] = {31,0x23FFFFE8}, + [I(116,218)] = {31,0x27FFFFE8}, + [I(117,218)] = {X32,0xB7FFFFE8}, + [I(118,218)] = {64,0}, + [I(119,218)] = {64,0}, + [I(120,218)] = {64,0}, + [I(121,218)] = {64,0}, + [I(122,218)] = {64,0}, + [I(123,218)] = {64,0}, + [I(124,218)] = {64,0}, + [I(125,218)] = {64,0}, + [I(126,218)] = {64,0}, + [I(127,218)] = {64,0}, + [I(128,218)] = {64,0}, + [I(129,218)] = {64,0}, + [I(130,218)] = {64,0}, + [I(131,218)] = {64,0}, + [I(132,218)] = {64,0}, + [I(133,218)] = {64,0}, + [I(134,218)] = {64,0}, + [I(135,218)] = {64,0}, + [I(136,218)] = {64,0}, + [I(137,218)] = {64,0}, + [I(138,218)] = {64,0}, + [I(139,218)] = {64,0}, + [I(140,218)] = {64,0}, + [I(141,218)] = {64,0}, + [I(142,218)] = {64,0}, + [I(143,218)] = {64,0}, + [I(144,218)] = {64,0}, + [I(145,218)] = {64,0}, + [I(146,218)] = {64,0}, + [I(147,218)] = {64,0}, + [I(148,218)] = {64,0}, + [I(149,218)] = {64,0}, + [I(150,218)] = {64,0}, + [I(151,218)] = {64,0}, + [I(152,218)] = {64,0}, + [I(153,218)] = {64,0}, + [I(154,218)] = {64,0}, + [I(155,218)] = {64,0}, + [I(156,218)] = {64,0}, + [I(157,218)] = {64,0}, + [I(158,218)] = {64,0}, + [I(159,218)] = {64,0}, + [I(160,218)] = {64,0}, + [I(161,218)] = {64,0}, + [I(162,218)] = {64,0}, + [I(163,218)] = {64,0}, + [I(164,218)] = {64,0}, + [I(165,218)] = {64,0}, + [I(166,218)] = {64,0}, + [I(167,218)] = {64,0}, + [I(168,218)] = {64,0}, + [I(169,218)] = {64,0}, + [I(170,218)] = {64,0}, + [I(171,218)] = {64,0}, + [I(172,218)] = {64,0}, + [I(173,218)] = {64,0}, + [I(174,218)] = {64,0}, + [I(175,218)] = {64,0}, + [I(176,218)] = {64,0}, + [I(177,218)] = {64,0}, + [I(178,218)] = {64,0}, + [I(179,218)] = {64,0}, + [I(180,218)] = {64,0}, + [I(181,218)] = {64,0}, + [I(182,218)] = {64,0}, + [I(183,218)] = {64,0}, + [I(184,218)] = {64,0}, + [I(185,218)] = {64,0}, + [I(186,218)] = {64,0}, + [I(187,218)] = {64,0}, + [I(188,218)] = {64,0}, + [I(189,218)] = {64,0}, + [I(190,218)] = {64,0}, + [I(191,218)] = {64,0}, + [I(192,218)] = {64,0}, + [I(193,218)] = {64,0}, + [I(194,218)] = {64,0}, + [I(195,218)] = {64,0}, + [I(196,218)] = {64,0}, + [I(197,218)] = {64,0}, + [I(198,218)] = {64,0}, + [I(199,218)] = {64,0}, + [I(200,218)] = {64,0}, + [I(201,218)] = {64,0}, + [I(202,218)] = {64,0}, + [I(203,218)] = {64,0}, + [I(204,218)] = {64,0}, + [I(205,218)] = {64,0}, + [I(206,218)] = {64,0}, + [I(207,218)] = {64,0}, + [I(208,218)] = {64,0}, + [I(209,218)] = {64,0}, + [I(210,218)] = {64,0}, + [I(211,218)] = {64,0}, + [I(212,218)] = {64,0}, + [I(213,218)] = {64,0}, + [I(214,218)] = {64,0}, + [I(215,218)] = {64,0}, + [I(216,218)] = {64,0}, + [I(217,218)] = {64,0}, + [I(218,218)] = {64,0}, + [I(219,218)] = {64,0}, + [I(220,218)] = {64,0}, + [I(221,218)] = {64,0}, + [I(222,218)] = {64,0}, + [I(223,218)] = {64,0}, + [I(224,218)] = {64,0}, + [I(225,218)] = {64,0}, + [I(226,218)] = {64,0}, + [I(227,218)] = {64,0}, + [I(228,218)] = {64,0}, + [I(229,218)] = {64,0}, + [I(230,218)] = {64,0}, + [I(231,218)] = {64,0}, + [I(232,218)] = {64,0}, + [I(233,218)] = {64,0}, + [I(234,218)] = {64,0}, + [I(235,218)] = {64,0}, + [I(236,218)] = {64,0}, + [I(237,218)] = {64,0}, + [I(238,218)] = {64,0}, + [I(239,218)] = {64,0}, + [I(240,218)] = {64,0}, + [I(241,218)] = {64,0}, + [I(242,218)] = {64,0}, + [I(243,218)] = {64,0}, + [I(244,218)] = {64,0}, + [I(245,218)] = {64,0}, + [I(246,218)] = {64,0}, + [I(247,218)] = {64,0}, + [I(248,218)] = {64,0}, + [I(249,218)] = {64,0}, + [I(250,218)] = {64,0}, + [I(251,218)] = {64,0}, + [I(252,218)] = {64,0}, + [I(253,218)] = {64,0}, + [I(254,218)] = {64,0}, + [I(255,218)] = {64,0}, + [I(0,219)] = {64,0}, + [I(1,219)] = {64,0}, + [I(2,219)] = {64,0}, + [I(3,219)] = {64,0}, + [I(4,219)] = {64,0}, + [I(5,219)] = {64,0}, + [I(6,219)] = {64,0}, + [I(7,219)] = {64,0}, + [I(8,219)] = {64,0}, + [I(9,219)] = {64,0}, + [I(10,219)] = {64,0}, + [I(11,219)] = {64,0}, + [I(12,219)] = {64,0}, + [I(13,219)] = {64,0}, + [I(14,219)] = {64,0}, + [I(15,219)] = {64,0}, + [I(16,219)] = {64,0}, + [I(17,219)] = {64,0}, + [I(18,219)] = {64,0}, + [I(19,219)] = {64,0}, + [I(20,219)] = {64,0}, + [I(21,219)] = {64,0}, + [I(22,219)] = {64,0}, + [I(23,219)] = {64,0}, + [I(24,219)] = {64,0}, + [I(25,219)] = {64,0}, + [I(26,219)] = {64,0}, + [I(27,219)] = {64,0}, + [I(28,219)] = {64,0}, + [I(29,219)] = {64,0}, + [I(30,219)] = {64,0}, + [I(31,219)] = {64,0}, + [I(32,219)] = {X32,0x53FFFFE9}, + [I(33,219)] = {64,0}, + [I(34,219)] = {64,0}, + [I(35,219)] = {64,0}, + [I(36,219)] = {64,0}, + [I(37,219)] = {X32,0x57FFFFE9}, + [I(38,219)] = {64,0}, + [I(39,219)] = {64,0}, + [I(40,219)] = {64,0}, + [I(41,219)] = {64,0}, + [I(42,219)] = {64,0}, + [I(43,219)] = {64,0}, + [I(44,219)] = {64,0}, + [I(45,219)] = {X32,0x5BFFFFE9}, + [I(46,219)] = {X32,0x5FFFFFE9}, + [I(47,219)] = {X32,0x63FFFFE9}, + [I(48,219)] = {31,0x3FFFFE9}, + [I(49,219)] = {31,0x7FFFFE9}, + [I(50,219)] = {31,0xBFFFFE9}, + [I(51,219)] = {X32,0x67FFFFE9}, + [I(52,219)] = {X32,0x6BFFFFE9}, + [I(53,219)] = {X32,0x6FFFFFE9}, + [I(54,219)] = {X32,0x73FFFFE9}, + [I(55,219)] = {X32,0x77FFFFE9}, + [I(56,219)] = {X32,0x7BFFFFE9}, + [I(57,219)] = {X32,0x7FFFFFE9}, + [I(58,219)] = {64,0}, + [I(59,219)] = {64,0}, + [I(60,219)] = {64,0}, + [I(61,219)] = {X32,0x83FFFFE9}, + [I(62,219)] = {64,0}, + [I(63,219)] = {64,0}, + [I(64,219)] = {64,0}, + [I(65,219)] = {X32,0x87FFFFE9}, + [I(66,219)] = {64,0}, + [I(67,219)] = {64,0}, + [I(68,219)] = {64,0}, + [I(69,219)] = {64,0}, + [I(70,219)] = {64,0}, + [I(71,219)] = {64,0}, + [I(72,219)] = {64,0}, + [I(73,219)] = {64,0}, + [I(74,219)] = {64,0}, + [I(75,219)] = {64,0}, + [I(76,219)] = {64,0}, + [I(77,219)] = {64,0}, + [I(78,219)] = {64,0}, + [I(79,219)] = {64,0}, + [I(80,219)] = {64,0}, + [I(81,219)] = {64,0}, + [I(82,219)] = {64,0}, + [I(83,219)] = {64,0}, + [I(84,219)] = {64,0}, + [I(85,219)] = {64,0}, + [I(86,219)] = {64,0}, + [I(87,219)] = {64,0}, + [I(88,219)] = {64,0}, + [I(89,219)] = {64,0}, + [I(90,219)] = {64,0}, + [I(91,219)] = {64,0}, + [I(92,219)] = {64,0}, + [I(93,219)] = {64,0}, + [I(94,219)] = {64,0}, + [I(95,219)] = {X32,0x8BFFFFE9}, + [I(96,219)] = {64,0}, + [I(97,219)] = {31,0xFFFFFE9}, + [I(98,219)] = {X32,0x8FFFFFE9}, + [I(99,219)] = {31,0x13FFFFE9}, + [I(100,219)] = {X32,0x93FFFFE9}, + [I(101,219)] = {31,0x17FFFFE9}, + [I(102,219)] = {X32,0x97FFFFE9}, + [I(103,219)] = {X32,0x9BFFFFE9}, + [I(104,219)] = {X32,0x9FFFFFE9}, + [I(105,219)] = {31,0x1BFFFFE9}, + [I(106,219)] = {64,0}, + [I(107,219)] = {64,0}, + [I(108,219)] = {X32,0xA3FFFFE9}, + [I(109,219)] = {X32,0xA7FFFFE9}, + [I(110,219)] = {X32,0xABFFFFE9}, + [I(111,219)] = {31,0x1FFFFFE9}, + [I(112,219)] = {X32,0xAFFFFFE9}, + [I(113,219)] = {64,0}, + [I(114,219)] = {X32,0xB3FFFFE9}, + [I(115,219)] = {31,0x23FFFFE9}, + [I(116,219)] = {31,0x27FFFFE9}, + [I(117,219)] = {X32,0xB7FFFFE9}, + [I(118,219)] = {64,0}, + [I(119,219)] = {64,0}, + [I(120,219)] = {64,0}, + [I(121,219)] = {64,0}, + [I(122,219)] = {64,0}, + [I(123,219)] = {64,0}, + [I(124,219)] = {64,0}, + [I(125,219)] = {64,0}, + [I(126,219)] = {64,0}, + [I(127,219)] = {64,0}, + [I(128,219)] = {64,0}, + [I(129,219)] = {64,0}, + [I(130,219)] = {64,0}, + [I(131,219)] = {64,0}, + [I(132,219)] = {64,0}, + [I(133,219)] = {64,0}, + [I(134,219)] = {64,0}, + [I(135,219)] = {64,0}, + [I(136,219)] = {64,0}, + [I(137,219)] = {64,0}, + [I(138,219)] = {64,0}, + [I(139,219)] = {64,0}, + [I(140,219)] = {64,0}, + [I(141,219)] = {64,0}, + [I(142,219)] = {64,0}, + [I(143,219)] = {64,0}, + [I(144,219)] = {64,0}, + [I(145,219)] = {64,0}, + [I(146,219)] = {64,0}, + [I(147,219)] = {64,0}, + [I(148,219)] = {64,0}, + [I(149,219)] = {64,0}, + [I(150,219)] = {64,0}, + [I(151,219)] = {64,0}, + [I(152,219)] = {64,0}, + [I(153,219)] = {64,0}, + [I(154,219)] = {64,0}, + [I(155,219)] = {64,0}, + [I(156,219)] = {64,0}, + [I(157,219)] = {64,0}, + [I(158,219)] = {64,0}, + [I(159,219)] = {64,0}, + [I(160,219)] = {64,0}, + [I(161,219)] = {64,0}, + [I(162,219)] = {64,0}, + [I(163,219)] = {64,0}, + [I(164,219)] = {64,0}, + [I(165,219)] = {64,0}, + [I(166,219)] = {64,0}, + [I(167,219)] = {64,0}, + [I(168,219)] = {64,0}, + [I(169,219)] = {64,0}, + [I(170,219)] = {64,0}, + [I(171,219)] = {64,0}, + [I(172,219)] = {64,0}, + [I(173,219)] = {64,0}, + [I(174,219)] = {64,0}, + [I(175,219)] = {64,0}, + [I(176,219)] = {64,0}, + [I(177,219)] = {64,0}, + [I(178,219)] = {64,0}, + [I(179,219)] = {64,0}, + [I(180,219)] = {64,0}, + [I(181,219)] = {64,0}, + [I(182,219)] = {64,0}, + [I(183,219)] = {64,0}, + [I(184,219)] = {64,0}, + [I(185,219)] = {64,0}, + [I(186,219)] = {64,0}, + [I(187,219)] = {64,0}, + [I(188,219)] = {64,0}, + [I(189,219)] = {64,0}, + [I(190,219)] = {64,0}, + [I(191,219)] = {64,0}, + [I(192,219)] = {64,0}, + [I(193,219)] = {64,0}, + [I(194,219)] = {64,0}, + [I(195,219)] = {64,0}, + [I(196,219)] = {64,0}, + [I(197,219)] = {64,0}, + [I(198,219)] = {64,0}, + [I(199,219)] = {64,0}, + [I(200,219)] = {64,0}, + [I(201,219)] = {64,0}, + [I(202,219)] = {64,0}, + [I(203,219)] = {64,0}, + [I(204,219)] = {64,0}, + [I(205,219)] = {64,0}, + [I(206,219)] = {64,0}, + [I(207,219)] = {64,0}, + [I(208,219)] = {64,0}, + [I(209,219)] = {64,0}, + [I(210,219)] = {64,0}, + [I(211,219)] = {64,0}, + [I(212,219)] = {64,0}, + [I(213,219)] = {64,0}, + [I(214,219)] = {64,0}, + [I(215,219)] = {64,0}, + [I(216,219)] = {64,0}, + [I(217,219)] = {64,0}, + [I(218,219)] = {64,0}, + [I(219,219)] = {64,0}, + [I(220,219)] = {64,0}, + [I(221,219)] = {64,0}, + [I(222,219)] = {64,0}, + [I(223,219)] = {64,0}, + [I(224,219)] = {64,0}, + [I(225,219)] = {64,0}, + [I(226,219)] = {64,0}, + [I(227,219)] = {64,0}, + [I(228,219)] = {64,0}, + [I(229,219)] = {64,0}, + [I(230,219)] = {64,0}, + [I(231,219)] = {64,0}, + [I(232,219)] = {64,0}, + [I(233,219)] = {64,0}, + [I(234,219)] = {64,0}, + [I(235,219)] = {64,0}, + [I(236,219)] = {64,0}, + [I(237,219)] = {64,0}, + [I(238,219)] = {64,0}, + [I(239,219)] = {64,0}, + [I(240,219)] = {64,0}, + [I(241,219)] = {64,0}, + [I(242,219)] = {64,0}, + [I(243,219)] = {64,0}, + [I(244,219)] = {64,0}, + [I(245,219)] = {64,0}, + [I(246,219)] = {64,0}, + [I(247,219)] = {64,0}, + [I(248,219)] = {64,0}, + [I(249,219)] = {64,0}, + [I(250,219)] = {64,0}, + [I(251,219)] = {64,0}, + [I(252,219)] = {64,0}, + [I(253,219)] = {64,0}, + [I(254,219)] = {64,0}, + [I(255,219)] = {64,0}, + [I(0,220)] = {64,0}, + [I(1,220)] = {64,0}, + [I(2,220)] = {64,0}, + [I(3,220)] = {64,0}, + [I(4,220)] = {64,0}, + [I(5,220)] = {64,0}, + [I(6,220)] = {64,0}, + [I(7,220)] = {64,0}, + [I(8,220)] = {64,0}, + [I(9,220)] = {64,0}, + [I(10,220)] = {64,0}, + [I(11,220)] = {64,0}, + [I(12,220)] = {64,0}, + [I(13,220)] = {64,0}, + [I(14,220)] = {64,0}, + [I(15,220)] = {64,0}, + [I(16,220)] = {64,0}, + [I(17,220)] = {64,0}, + [I(18,220)] = {64,0}, + [I(19,220)] = {64,0}, + [I(20,220)] = {64,0}, + [I(21,220)] = {64,0}, + [I(22,220)] = {64,0}, + [I(23,220)] = {64,0}, + [I(24,220)] = {64,0}, + [I(25,220)] = {64,0}, + [I(26,220)] = {64,0}, + [I(27,220)] = {64,0}, + [I(28,220)] = {64,0}, + [I(29,220)] = {64,0}, + [I(30,220)] = {64,0}, + [I(31,220)] = {64,0}, + [I(32,220)] = {64,0}, + [I(33,220)] = {64,0}, + [I(34,220)] = {64,0}, + [I(35,220)] = {64,0}, + [I(36,220)] = {64,0}, + [I(37,220)] = {64,0}, + [I(38,220)] = {64,0}, + [I(39,220)] = {64,0}, + [I(40,220)] = {64,0}, + [I(41,220)] = {64,0}, + [I(42,220)] = {64,0}, + [I(43,220)] = {64,0}, + [I(44,220)] = {64,0}, + [I(45,220)] = {64,0}, + [I(46,220)] = {64,0}, + [I(47,220)] = {64,0}, + [I(48,220)] = {64,0}, + [I(49,220)] = {64,0}, + [I(50,220)] = {64,0}, + [I(51,220)] = {64,0}, + [I(52,220)] = {64,0}, + [I(53,220)] = {64,0}, + [I(54,220)] = {64,0}, + [I(55,220)] = {64,0}, + [I(56,220)] = {64,0}, + [I(57,220)] = {64,0}, + [I(58,220)] = {64,0}, + [I(59,220)] = {64,0}, + [I(60,220)] = {64,0}, + [I(61,220)] = {64,0}, + [I(62,220)] = {64,0}, + [I(63,220)] = {64,0}, + [I(64,220)] = {64,0}, + [I(65,220)] = {64,0}, + [I(66,220)] = {64,0}, + [I(67,220)] = {64,0}, + [I(68,220)] = {64,0}, + [I(69,220)] = {64,0}, + [I(70,220)] = {64,0}, + [I(71,220)] = {64,0}, + [I(72,220)] = {64,0}, + [I(73,220)] = {64,0}, + [I(74,220)] = {64,0}, + [I(75,220)] = {64,0}, + [I(76,220)] = {64,0}, + [I(77,220)] = {64,0}, + [I(78,220)] = {64,0}, + [I(79,220)] = {64,0}, + [I(80,220)] = {64,0}, + [I(81,220)] = {64,0}, + [I(82,220)] = {64,0}, + [I(83,220)] = {64,0}, + [I(84,220)] = {64,0}, + [I(85,220)] = {64,0}, + [I(86,220)] = {64,0}, + [I(87,220)] = {64,0}, + [I(88,220)] = {64,0}, + [I(89,220)] = {64,0}, + [I(90,220)] = {64,0}, + [I(91,220)] = {64,0}, + [I(92,220)] = {64,0}, + [I(93,220)] = {64,0}, + [I(94,220)] = {64,0}, + [I(95,220)] = {64,0}, + [I(96,220)] = {64,0}, + [I(97,220)] = {64,0}, + [I(98,220)] = {64,0}, + [I(99,220)] = {64,0}, + [I(100,220)] = {64,0}, + [I(101,220)] = {64,0}, + [I(102,220)] = {64,0}, + [I(103,220)] = {64,0}, + [I(104,220)] = {64,0}, + [I(105,220)] = {64,0}, + [I(106,220)] = {64,0}, + [I(107,220)] = {64,0}, + [I(108,220)] = {64,0}, + [I(109,220)] = {64,0}, + [I(110,220)] = {64,0}, + [I(111,220)] = {64,0}, + [I(112,220)] = {64,0}, + [I(113,220)] = {64,0}, + [I(114,220)] = {64,0}, + [I(115,220)] = {64,0}, + [I(116,220)] = {64,0}, + [I(117,220)] = {64,0}, + [I(118,220)] = {64,0}, + [I(119,220)] = {64,0}, + [I(120,220)] = {64,0}, + [I(121,220)] = {64,0}, + [I(122,220)] = {64,0}, + [I(123,220)] = {64,0}, + [I(124,220)] = {64,0}, + [I(125,220)] = {64,0}, + [I(126,220)] = {64,0}, + [I(127,220)] = {64,0}, + [I(128,220)] = {64,0}, + [I(129,220)] = {64,0}, + [I(130,220)] = {64,0}, + [I(131,220)] = {64,0}, + [I(132,220)] = {64,0}, + [I(133,220)] = {64,0}, + [I(134,220)] = {64,0}, + [I(135,220)] = {64,0}, + [I(136,220)] = {64,0}, + [I(137,220)] = {64,0}, + [I(138,220)] = {64,0}, + [I(139,220)] = {64,0}, + [I(140,220)] = {64,0}, + [I(141,220)] = {64,0}, + [I(142,220)] = {64,0}, + [I(143,220)] = {64,0}, + [I(144,220)] = {64,0}, + [I(145,220)] = {64,0}, + [I(146,220)] = {64,0}, + [I(147,220)] = {64,0}, + [I(148,220)] = {64,0}, + [I(149,220)] = {64,0}, + [I(150,220)] = {64,0}, + [I(151,220)] = {64,0}, + [I(152,220)] = {64,0}, + [I(153,220)] = {64,0}, + [I(154,220)] = {64,0}, + [I(155,220)] = {64,0}, + [I(156,220)] = {64,0}, + [I(157,220)] = {64,0}, + [I(158,220)] = {64,0}, + [I(159,220)] = {64,0}, + [I(160,220)] = {64,0}, + [I(161,220)] = {64,0}, + [I(162,220)] = {64,0}, + [I(163,220)] = {64,0}, + [I(164,220)] = {64,0}, + [I(165,220)] = {64,0}, + [I(166,220)] = {64,0}, + [I(167,220)] = {64,0}, + [I(168,220)] = {64,0}, + [I(169,220)] = {64,0}, + [I(170,220)] = {64,0}, + [I(171,220)] = {64,0}, + [I(172,220)] = {64,0}, + [I(173,220)] = {64,0}, + [I(174,220)] = {64,0}, + [I(175,220)] = {64,0}, + [I(176,220)] = {64,0}, + [I(177,220)] = {64,0}, + [I(178,220)] = {64,0}, + [I(179,220)] = {64,0}, + [I(180,220)] = {64,0}, + [I(181,220)] = {64,0}, + [I(182,220)] = {64,0}, + [I(183,220)] = {64,0}, + [I(184,220)] = {64,0}, + [I(185,220)] = {64,0}, + [I(186,220)] = {64,0}, + [I(187,220)] = {64,0}, + [I(188,220)] = {64,0}, + [I(189,220)] = {64,0}, + [I(190,220)] = {64,0}, + [I(191,220)] = {64,0}, + [I(192,220)] = {64,0}, + [I(193,220)] = {64,0}, + [I(194,220)] = {64,0}, + [I(195,220)] = {64,0}, + [I(196,220)] = {64,0}, + [I(197,220)] = {64,0}, + [I(198,220)] = {64,0}, + [I(199,220)] = {64,0}, + [I(200,220)] = {64,0}, + [I(201,220)] = {64,0}, + [I(202,220)] = {64,0}, + [I(203,220)] = {64,0}, + [I(204,220)] = {64,0}, + [I(205,220)] = {64,0}, + [I(206,220)] = {64,0}, + [I(207,220)] = {64,0}, + [I(208,220)] = {64,0}, + [I(209,220)] = {64,0}, + [I(210,220)] = {64,0}, + [I(211,220)] = {64,0}, + [I(212,220)] = {64,0}, + [I(213,220)] = {64,0}, + [I(214,220)] = {64,0}, + [I(215,220)] = {64,0}, + [I(216,220)] = {64,0}, + [I(217,220)] = {64,0}, + [I(218,220)] = {64,0}, + [I(219,220)] = {64,0}, + [I(220,220)] = {64,0}, + [I(221,220)] = {64,0}, + [I(222,220)] = {64,0}, + [I(223,220)] = {64,0}, + [I(224,220)] = {64,0}, + [I(225,220)] = {64,0}, + [I(226,220)] = {64,0}, + [I(227,220)] = {64,0}, + [I(228,220)] = {64,0}, + [I(229,220)] = {64,0}, + [I(230,220)] = {64,0}, + [I(231,220)] = {64,0}, + [I(232,220)] = {64,0}, + [I(233,220)] = {64,0}, + [I(234,220)] = {64,0}, + [I(235,220)] = {64,0}, + [I(236,220)] = {64,0}, + [I(237,220)] = {64,0}, + [I(238,220)] = {64,0}, + [I(239,220)] = {64,0}, + [I(240,220)] = {64,0}, + [I(241,220)] = {64,0}, + [I(242,220)] = {64,0}, + [I(243,220)] = {64,0}, + [I(244,220)] = {64,0}, + [I(245,220)] = {64,0}, + [I(246,220)] = {64,0}, + [I(247,220)] = {64,0}, + [I(248,220)] = {64,0}, + [I(249,220)] = {64,0}, + [I(250,220)] = {64,0}, + [I(251,220)] = {64,0}, + [I(252,220)] = {64,0}, + [I(253,220)] = {64,0}, + [I(254,220)] = {64,0}, + [I(255,220)] = {64,0}, + [I(0,221)] = {64,0}, + [I(1,221)] = {64,0}, + [I(2,221)] = {64,0}, + [I(3,221)] = {64,0}, + [I(4,221)] = {64,0}, + [I(5,221)] = {64,0}, + [I(6,221)] = {64,0}, + [I(7,221)] = {64,0}, + [I(8,221)] = {64,0}, + [I(9,221)] = {64,0}, + [I(10,221)] = {64,0}, + [I(11,221)] = {64,0}, + [I(12,221)] = {64,0}, + [I(13,221)] = {64,0}, + [I(14,221)] = {64,0}, + [I(15,221)] = {64,0}, + [I(16,221)] = {64,0}, + [I(17,221)] = {64,0}, + [I(18,221)] = {64,0}, + [I(19,221)] = {64,0}, + [I(20,221)] = {64,0}, + [I(21,221)] = {64,0}, + [I(22,221)] = {64,0}, + [I(23,221)] = {64,0}, + [I(24,221)] = {64,0}, + [I(25,221)] = {64,0}, + [I(26,221)] = {64,0}, + [I(27,221)] = {64,0}, + [I(28,221)] = {64,0}, + [I(29,221)] = {64,0}, + [I(30,221)] = {64,0}, + [I(31,221)] = {64,0}, + [I(32,221)] = {64,0}, + [I(33,221)] = {64,0}, + [I(34,221)] = {64,0}, + [I(35,221)] = {64,0}, + [I(36,221)] = {64,0}, + [I(37,221)] = {64,0}, + [I(38,221)] = {64,0}, + [I(39,221)] = {64,0}, + [I(40,221)] = {64,0}, + [I(41,221)] = {64,0}, + [I(42,221)] = {64,0}, + [I(43,221)] = {64,0}, + [I(44,221)] = {64,0}, + [I(45,221)] = {64,0}, + [I(46,221)] = {64,0}, + [I(47,221)] = {64,0}, + [I(48,221)] = {X32,0x7FFFFE3}, + [I(49,221)] = {X32,0xFFFFFE3}, + [I(50,221)] = {X32,0x17FFFFE3}, + [I(51,221)] = {64,0}, + [I(52,221)] = {64,0}, + [I(53,221)] = {64,0}, + [I(54,221)] = {64,0}, + [I(55,221)] = {64,0}, + [I(56,221)] = {64,0}, + [I(57,221)] = {64,0}, + [I(58,221)] = {64,0}, + [I(59,221)] = {64,0}, + [I(60,221)] = {64,0}, + [I(61,221)] = {64,0}, + [I(62,221)] = {64,0}, + [I(63,221)] = {64,0}, + [I(64,221)] = {64,0}, + [I(65,221)] = {64,0}, + [I(66,221)] = {64,0}, + [I(67,221)] = {64,0}, + [I(68,221)] = {64,0}, + [I(69,221)] = {64,0}, + [I(70,221)] = {64,0}, + [I(71,221)] = {64,0}, + [I(72,221)] = {64,0}, + [I(73,221)] = {64,0}, + [I(74,221)] = {64,0}, + [I(75,221)] = {64,0}, + [I(76,221)] = {64,0}, + [I(77,221)] = {64,0}, + [I(78,221)] = {64,0}, + [I(79,221)] = {64,0}, + [I(80,221)] = {64,0}, + [I(81,221)] = {64,0}, + [I(82,221)] = {64,0}, + [I(83,221)] = {64,0}, + [I(84,221)] = {64,0}, + [I(85,221)] = {64,0}, + [I(86,221)] = {64,0}, + [I(87,221)] = {64,0}, + [I(88,221)] = {64,0}, + [I(89,221)] = {64,0}, + [I(90,221)] = {64,0}, + [I(91,221)] = {64,0}, + [I(92,221)] = {64,0}, + [I(93,221)] = {64,0}, + [I(94,221)] = {64,0}, + [I(95,221)] = {64,0}, + [I(96,221)] = {64,0}, + [I(97,221)] = {X32,0x1FFFFFE3}, + [I(98,221)] = {64,0}, + [I(99,221)] = {X32,0x27FFFFE3}, + [I(100,221)] = {64,0}, + [I(101,221)] = {X32,0x2FFFFFE3}, + [I(102,221)] = {64,0}, + [I(103,221)] = {64,0}, + [I(104,221)] = {64,0}, + [I(105,221)] = {X32,0x37FFFFE3}, + [I(106,221)] = {64,0}, + [I(107,221)] = {64,0}, + [I(108,221)] = {64,0}, + [I(109,221)] = {64,0}, + [I(110,221)] = {64,0}, + [I(111,221)] = {X32,0x3FFFFFE3}, + [I(112,221)] = {64,0}, + [I(113,221)] = {64,0}, + [I(114,221)] = {64,0}, + [I(115,221)] = {X32,0x47FFFFE3}, + [I(116,221)] = {X32,0x4FFFFFE3}, + [I(117,221)] = {64,0}, + [I(118,221)] = {64,0}, + [I(119,221)] = {64,0}, + [I(120,221)] = {64,0}, + [I(121,221)] = {64,0}, + [I(122,221)] = {64,0}, + [I(123,221)] = {64,0}, + [I(124,221)] = {64,0}, + [I(125,221)] = {64,0}, + [I(126,221)] = {64,0}, + [I(127,221)] = {64,0}, + [I(128,221)] = {64,0}, + [I(129,221)] = {64,0}, + [I(130,221)] = {64,0}, + [I(131,221)] = {64,0}, + [I(132,221)] = {64,0}, + [I(133,221)] = {64,0}, + [I(134,221)] = {64,0}, + [I(135,221)] = {64,0}, + [I(136,221)] = {64,0}, + [I(137,221)] = {64,0}, + [I(138,221)] = {64,0}, + [I(139,221)] = {64,0}, + [I(140,221)] = {64,0}, + [I(141,221)] = {64,0}, + [I(142,221)] = {64,0}, + [I(143,221)] = {64,0}, + [I(144,221)] = {64,0}, + [I(145,221)] = {64,0}, + [I(146,221)] = {64,0}, + [I(147,221)] = {64,0}, + [I(148,221)] = {64,0}, + [I(149,221)] = {64,0}, + [I(150,221)] = {64,0}, + [I(151,221)] = {64,0}, + [I(152,221)] = {64,0}, + [I(153,221)] = {64,0}, + [I(154,221)] = {64,0}, + [I(155,221)] = {64,0}, + [I(156,221)] = {64,0}, + [I(157,221)] = {64,0}, + [I(158,221)] = {64,0}, + [I(159,221)] = {64,0}, + [I(160,221)] = {64,0}, + [I(161,221)] = {64,0}, + [I(162,221)] = {64,0}, + [I(163,221)] = {64,0}, + [I(164,221)] = {64,0}, + [I(165,221)] = {64,0}, + [I(166,221)] = {64,0}, + [I(167,221)] = {64,0}, + [I(168,221)] = {64,0}, + [I(169,221)] = {64,0}, + [I(170,221)] = {64,0}, + [I(171,221)] = {64,0}, + [I(172,221)] = {64,0}, + [I(173,221)] = {64,0}, + [I(174,221)] = {64,0}, + [I(175,221)] = {64,0}, + [I(176,221)] = {64,0}, + [I(177,221)] = {64,0}, + [I(178,221)] = {64,0}, + [I(179,221)] = {64,0}, + [I(180,221)] = {64,0}, + [I(181,221)] = {64,0}, + [I(182,221)] = {64,0}, + [I(183,221)] = {64,0}, + [I(184,221)] = {64,0}, + [I(185,221)] = {64,0}, + [I(186,221)] = {64,0}, + [I(187,221)] = {64,0}, + [I(188,221)] = {64,0}, + [I(189,221)] = {64,0}, + [I(190,221)] = {64,0}, + [I(191,221)] = {64,0}, + [I(192,221)] = {64,0}, + [I(193,221)] = {64,0}, + [I(194,221)] = {64,0}, + [I(195,221)] = {64,0}, + [I(196,221)] = {64,0}, + [I(197,221)] = {64,0}, + [I(198,221)] = {64,0}, + [I(199,221)] = {64,0}, + [I(200,221)] = {64,0}, + [I(201,221)] = {64,0}, + [I(202,221)] = {64,0}, + [I(203,221)] = {64,0}, + [I(204,221)] = {64,0}, + [I(205,221)] = {64,0}, + [I(206,221)] = {64,0}, + [I(207,221)] = {64,0}, + [I(208,221)] = {64,0}, + [I(209,221)] = {64,0}, + [I(210,221)] = {64,0}, + [I(211,221)] = {64,0}, + [I(212,221)] = {64,0}, + [I(213,221)] = {64,0}, + [I(214,221)] = {64,0}, + [I(215,221)] = {64,0}, + [I(216,221)] = {64,0}, + [I(217,221)] = {64,0}, + [I(218,221)] = {64,0}, + [I(219,221)] = {64,0}, + [I(220,221)] = {64,0}, + [I(221,221)] = {64,0}, + [I(222,221)] = {64,0}, + [I(223,221)] = {64,0}, + [I(224,221)] = {64,0}, + [I(225,221)] = {64,0}, + [I(226,221)] = {64,0}, + [I(227,221)] = {64,0}, + [I(228,221)] = {64,0}, + [I(229,221)] = {64,0}, + [I(230,221)] = {64,0}, + [I(231,221)] = {64,0}, + [I(232,221)] = {64,0}, + [I(233,221)] = {64,0}, + [I(234,221)] = {64,0}, + [I(235,221)] = {64,0}, + [I(236,221)] = {64,0}, + [I(237,221)] = {64,0}, + [I(238,221)] = {64,0}, + [I(239,221)] = {64,0}, + [I(240,221)] = {64,0}, + [I(241,221)] = {64,0}, + [I(242,221)] = {64,0}, + [I(243,221)] = {64,0}, + [I(244,221)] = {64,0}, + [I(245,221)] = {64,0}, + [I(246,221)] = {64,0}, + [I(247,221)] = {64,0}, + [I(248,221)] = {64,0}, + [I(249,221)] = {64,0}, + [I(250,221)] = {64,0}, + [I(251,221)] = {64,0}, + [I(252,221)] = {64,0}, + [I(253,221)] = {64,0}, + [I(254,221)] = {64,0}, + [I(255,221)] = {64,0}, + [I(0,222)] = {64,0}, + [I(1,222)] = {64,0}, + [I(2,222)] = {64,0}, + [I(3,222)] = {64,0}, + [I(4,222)] = {64,0}, + [I(5,222)] = {64,0}, + [I(6,222)] = {64,0}, + [I(7,222)] = {64,0}, + [I(8,222)] = {64,0}, + [I(9,222)] = {64,0}, + [I(10,222)] = {64,0}, + [I(11,222)] = {64,0}, + [I(12,222)] = {64,0}, + [I(13,222)] = {64,0}, + [I(14,222)] = {64,0}, + [I(15,222)] = {64,0}, + [I(16,222)] = {64,0}, + [I(17,222)] = {64,0}, + [I(18,222)] = {64,0}, + [I(19,222)] = {64,0}, + [I(20,222)] = {64,0}, + [I(21,222)] = {64,0}, + [I(22,222)] = {64,0}, + [I(23,222)] = {64,0}, + [I(24,222)] = {64,0}, + [I(25,222)] = {64,0}, + [I(26,222)] = {64,0}, + [I(27,222)] = {64,0}, + [I(28,222)] = {64,0}, + [I(29,222)] = {64,0}, + [I(30,222)] = {64,0}, + [I(31,222)] = {64,0}, + [I(32,222)] = {64,0}, + [I(33,222)] = {64,0}, + [I(34,222)] = {64,0}, + [I(35,222)] = {64,0}, + [I(36,222)] = {64,0}, + [I(37,222)] = {64,0}, + [I(38,222)] = {64,0}, + [I(39,222)] = {64,0}, + [I(40,222)] = {64,0}, + [I(41,222)] = {64,0}, + [I(42,222)] = {64,0}, + [I(43,222)] = {64,0}, + [I(44,222)] = {64,0}, + [I(45,222)] = {64,0}, + [I(46,222)] = {64,0}, + [I(47,222)] = {64,0}, + [I(48,222)] = {X32,0x7FFFFE4}, + [I(49,222)] = {X32,0xFFFFFE4}, + [I(50,222)] = {X32,0x17FFFFE4}, + [I(51,222)] = {64,0}, + [I(52,222)] = {64,0}, + [I(53,222)] = {64,0}, + [I(54,222)] = {64,0}, + [I(55,222)] = {64,0}, + [I(56,222)] = {64,0}, + [I(57,222)] = {64,0}, + [I(58,222)] = {64,0}, + [I(59,222)] = {64,0}, + [I(60,222)] = {64,0}, + [I(61,222)] = {64,0}, + [I(62,222)] = {64,0}, + [I(63,222)] = {64,0}, + [I(64,222)] = {64,0}, + [I(65,222)] = {64,0}, + [I(66,222)] = {64,0}, + [I(67,222)] = {64,0}, + [I(68,222)] = {64,0}, + [I(69,222)] = {64,0}, + [I(70,222)] = {64,0}, + [I(71,222)] = {64,0}, + [I(72,222)] = {64,0}, + [I(73,222)] = {64,0}, + [I(74,222)] = {64,0}, + [I(75,222)] = {64,0}, + [I(76,222)] = {64,0}, + [I(77,222)] = {64,0}, + [I(78,222)] = {64,0}, + [I(79,222)] = {64,0}, + [I(80,222)] = {64,0}, + [I(81,222)] = {64,0}, + [I(82,222)] = {64,0}, + [I(83,222)] = {64,0}, + [I(84,222)] = {64,0}, + [I(85,222)] = {64,0}, + [I(86,222)] = {64,0}, + [I(87,222)] = {64,0}, + [I(88,222)] = {64,0}, + [I(89,222)] = {64,0}, + [I(90,222)] = {64,0}, + [I(91,222)] = {64,0}, + [I(92,222)] = {64,0}, + [I(93,222)] = {64,0}, + [I(94,222)] = {64,0}, + [I(95,222)] = {64,0}, + [I(96,222)] = {64,0}, + [I(97,222)] = {X32,0x1FFFFFE4}, + [I(98,222)] = {64,0}, + [I(99,222)] = {X32,0x27FFFFE4}, + [I(100,222)] = {64,0}, + [I(101,222)] = {X32,0x2FFFFFE4}, + [I(102,222)] = {64,0}, + [I(103,222)] = {64,0}, + [I(104,222)] = {64,0}, + [I(105,222)] = {X32,0x37FFFFE4}, + [I(106,222)] = {64,0}, + [I(107,222)] = {64,0}, + [I(108,222)] = {64,0}, + [I(109,222)] = {64,0}, + [I(110,222)] = {64,0}, + [I(111,222)] = {X32,0x3FFFFFE4}, + [I(112,222)] = {64,0}, + [I(113,222)] = {64,0}, + [I(114,222)] = {64,0}, + [I(115,222)] = {X32,0x47FFFFE4}, + [I(116,222)] = {X32,0x4FFFFFE4}, + [I(117,222)] = {64,0}, + [I(118,222)] = {64,0}, + [I(119,222)] = {64,0}, + [I(120,222)] = {64,0}, + [I(121,222)] = {64,0}, + [I(122,222)] = {64,0}, + [I(123,222)] = {64,0}, + [I(124,222)] = {64,0}, + [I(125,222)] = {64,0}, + [I(126,222)] = {64,0}, + [I(127,222)] = {64,0}, + [I(128,222)] = {64,0}, + [I(129,222)] = {64,0}, + [I(130,222)] = {64,0}, + [I(131,222)] = {64,0}, + [I(132,222)] = {64,0}, + [I(133,222)] = {64,0}, + [I(134,222)] = {64,0}, + [I(135,222)] = {64,0}, + [I(136,222)] = {64,0}, + [I(137,222)] = {64,0}, + [I(138,222)] = {64,0}, + [I(139,222)] = {64,0}, + [I(140,222)] = {64,0}, + [I(141,222)] = {64,0}, + [I(142,222)] = {64,0}, + [I(143,222)] = {64,0}, + [I(144,222)] = {64,0}, + [I(145,222)] = {64,0}, + [I(146,222)] = {64,0}, + [I(147,222)] = {64,0}, + [I(148,222)] = {64,0}, + [I(149,222)] = {64,0}, + [I(150,222)] = {64,0}, + [I(151,222)] = {64,0}, + [I(152,222)] = {64,0}, + [I(153,222)] = {64,0}, + [I(154,222)] = {64,0}, + [I(155,222)] = {64,0}, + [I(156,222)] = {64,0}, + [I(157,222)] = {64,0}, + [I(158,222)] = {64,0}, + [I(159,222)] = {64,0}, + [I(160,222)] = {64,0}, + [I(161,222)] = {64,0}, + [I(162,222)] = {64,0}, + [I(163,222)] = {64,0}, + [I(164,222)] = {64,0}, + [I(165,222)] = {64,0}, + [I(166,222)] = {64,0}, + [I(167,222)] = {64,0}, + [I(168,222)] = {64,0}, + [I(169,222)] = {64,0}, + [I(170,222)] = {64,0}, + [I(171,222)] = {64,0}, + [I(172,222)] = {64,0}, + [I(173,222)] = {64,0}, + [I(174,222)] = {64,0}, + [I(175,222)] = {64,0}, + [I(176,222)] = {64,0}, + [I(177,222)] = {64,0}, + [I(178,222)] = {64,0}, + [I(179,222)] = {64,0}, + [I(180,222)] = {64,0}, + [I(181,222)] = {64,0}, + [I(182,222)] = {64,0}, + [I(183,222)] = {64,0}, + [I(184,222)] = {64,0}, + [I(185,222)] = {64,0}, + [I(186,222)] = {64,0}, + [I(187,222)] = {64,0}, + [I(188,222)] = {64,0}, + [I(189,222)] = {64,0}, + [I(190,222)] = {64,0}, + [I(191,222)] = {64,0}, + [I(192,222)] = {64,0}, + [I(193,222)] = {64,0}, + [I(194,222)] = {64,0}, + [I(195,222)] = {64,0}, + [I(196,222)] = {64,0}, + [I(197,222)] = {64,0}, + [I(198,222)] = {64,0}, + [I(199,222)] = {64,0}, + [I(200,222)] = {64,0}, + [I(201,222)] = {64,0}, + [I(202,222)] = {64,0}, + [I(203,222)] = {64,0}, + [I(204,222)] = {64,0}, + [I(205,222)] = {64,0}, + [I(206,222)] = {64,0}, + [I(207,222)] = {64,0}, + [I(208,222)] = {64,0}, + [I(209,222)] = {64,0}, + [I(210,222)] = {64,0}, + [I(211,222)] = {64,0}, + [I(212,222)] = {64,0}, + [I(213,222)] = {64,0}, + [I(214,222)] = {64,0}, + [I(215,222)] = {64,0}, + [I(216,222)] = {64,0}, + [I(217,222)] = {64,0}, + [I(218,222)] = {64,0}, + [I(219,222)] = {64,0}, + [I(220,222)] = {64,0}, + [I(221,222)] = {64,0}, + [I(222,222)] = {64,0}, + [I(223,222)] = {64,0}, + [I(224,222)] = {64,0}, + [I(225,222)] = {64,0}, + [I(226,222)] = {64,0}, + [I(227,222)] = {64,0}, + [I(228,222)] = {64,0}, + [I(229,222)] = {64,0}, + [I(230,222)] = {64,0}, + [I(231,222)] = {64,0}, + [I(232,222)] = {64,0}, + [I(233,222)] = {64,0}, + [I(234,222)] = {64,0}, + [I(235,222)] = {64,0}, + [I(236,222)] = {64,0}, + [I(237,222)] = {64,0}, + [I(238,222)] = {64,0}, + [I(239,222)] = {64,0}, + [I(240,222)] = {64,0}, + [I(241,222)] = {64,0}, + [I(242,222)] = {64,0}, + [I(243,222)] = {64,0}, + [I(244,222)] = {64,0}, + [I(245,222)] = {64,0}, + [I(246,222)] = {64,0}, + [I(247,222)] = {64,0}, + [I(248,222)] = {64,0}, + [I(249,222)] = {64,0}, + [I(250,222)] = {64,0}, + [I(251,222)] = {64,0}, + [I(252,222)] = {64,0}, + [I(253,222)] = {64,0}, + [I(254,222)] = {64,0}, + [I(255,222)] = {64,0}, + [I(0,223)] = {64,0}, + [I(1,223)] = {64,0}, + [I(2,223)] = {64,0}, + [I(3,223)] = {64,0}, + [I(4,223)] = {64,0}, + [I(5,223)] = {64,0}, + [I(6,223)] = {64,0}, + [I(7,223)] = {64,0}, + [I(8,223)] = {64,0}, + [I(9,223)] = {64,0}, + [I(10,223)] = {64,0}, + [I(11,223)] = {64,0}, + [I(12,223)] = {64,0}, + [I(13,223)] = {64,0}, + [I(14,223)] = {64,0}, + [I(15,223)] = {64,0}, + [I(16,223)] = {64,0}, + [I(17,223)] = {64,0}, + [I(18,223)] = {64,0}, + [I(19,223)] = {64,0}, + [I(20,223)] = {64,0}, + [I(21,223)] = {64,0}, + [I(22,223)] = {64,0}, + [I(23,223)] = {64,0}, + [I(24,223)] = {64,0}, + [I(25,223)] = {64,0}, + [I(26,223)] = {64,0}, + [I(27,223)] = {64,0}, + [I(28,223)] = {64,0}, + [I(29,223)] = {64,0}, + [I(30,223)] = {64,0}, + [I(31,223)] = {64,0}, + [I(32,223)] = {64,0}, + [I(33,223)] = {64,0}, + [I(34,223)] = {64,0}, + [I(35,223)] = {64,0}, + [I(36,223)] = {64,0}, + [I(37,223)] = {64,0}, + [I(38,223)] = {64,0}, + [I(39,223)] = {64,0}, + [I(40,223)] = {64,0}, + [I(41,223)] = {64,0}, + [I(42,223)] = {64,0}, + [I(43,223)] = {64,0}, + [I(44,223)] = {64,0}, + [I(45,223)] = {64,0}, + [I(46,223)] = {64,0}, + [I(47,223)] = {64,0}, + [I(48,223)] = {X32,0x7FFFFE5}, + [I(49,223)] = {X32,0xFFFFFE5}, + [I(50,223)] = {X32,0x17FFFFE5}, + [I(51,223)] = {64,0}, + [I(52,223)] = {64,0}, + [I(53,223)] = {64,0}, + [I(54,223)] = {64,0}, + [I(55,223)] = {64,0}, + [I(56,223)] = {64,0}, + [I(57,223)] = {64,0}, + [I(58,223)] = {64,0}, + [I(59,223)] = {64,0}, + [I(60,223)] = {64,0}, + [I(61,223)] = {64,0}, + [I(62,223)] = {64,0}, + [I(63,223)] = {64,0}, + [I(64,223)] = {64,0}, + [I(65,223)] = {64,0}, + [I(66,223)] = {64,0}, + [I(67,223)] = {64,0}, + [I(68,223)] = {64,0}, + [I(69,223)] = {64,0}, + [I(70,223)] = {64,0}, + [I(71,223)] = {64,0}, + [I(72,223)] = {64,0}, + [I(73,223)] = {64,0}, + [I(74,223)] = {64,0}, + [I(75,223)] = {64,0}, + [I(76,223)] = {64,0}, + [I(77,223)] = {64,0}, + [I(78,223)] = {64,0}, + [I(79,223)] = {64,0}, + [I(80,223)] = {64,0}, + [I(81,223)] = {64,0}, + [I(82,223)] = {64,0}, + [I(83,223)] = {64,0}, + [I(84,223)] = {64,0}, + [I(85,223)] = {64,0}, + [I(86,223)] = {64,0}, + [I(87,223)] = {64,0}, + [I(88,223)] = {64,0}, + [I(89,223)] = {64,0}, + [I(90,223)] = {64,0}, + [I(91,223)] = {64,0}, + [I(92,223)] = {64,0}, + [I(93,223)] = {64,0}, + [I(94,223)] = {64,0}, + [I(95,223)] = {64,0}, + [I(96,223)] = {64,0}, + [I(97,223)] = {X32,0x1FFFFFE5}, + [I(98,223)] = {64,0}, + [I(99,223)] = {X32,0x27FFFFE5}, + [I(100,223)] = {64,0}, + [I(101,223)] = {X32,0x2FFFFFE5}, + [I(102,223)] = {64,0}, + [I(103,223)] = {64,0}, + [I(104,223)] = {64,0}, + [I(105,223)] = {X32,0x37FFFFE5}, + [I(106,223)] = {64,0}, + [I(107,223)] = {64,0}, + [I(108,223)] = {64,0}, + [I(109,223)] = {64,0}, + [I(110,223)] = {64,0}, + [I(111,223)] = {X32,0x3FFFFFE5}, + [I(112,223)] = {64,0}, + [I(113,223)] = {64,0}, + [I(114,223)] = {64,0}, + [I(115,223)] = {X32,0x47FFFFE5}, + [I(116,223)] = {X32,0x4FFFFFE5}, + [I(117,223)] = {64,0}, + [I(118,223)] = {64,0}, + [I(119,223)] = {64,0}, + [I(120,223)] = {64,0}, + [I(121,223)] = {64,0}, + [I(122,223)] = {64,0}, + [I(123,223)] = {64,0}, + [I(124,223)] = {64,0}, + [I(125,223)] = {64,0}, + [I(126,223)] = {64,0}, + [I(127,223)] = {64,0}, + [I(128,223)] = {64,0}, + [I(129,223)] = {64,0}, + [I(130,223)] = {64,0}, + [I(131,223)] = {64,0}, + [I(132,223)] = {64,0}, + [I(133,223)] = {64,0}, + [I(134,223)] = {64,0}, + [I(135,223)] = {64,0}, + [I(136,223)] = {64,0}, + [I(137,223)] = {64,0}, + [I(138,223)] = {64,0}, + [I(139,223)] = {64,0}, + [I(140,223)] = {64,0}, + [I(141,223)] = {64,0}, + [I(142,223)] = {64,0}, + [I(143,223)] = {64,0}, + [I(144,223)] = {64,0}, + [I(145,223)] = {64,0}, + [I(146,223)] = {64,0}, + [I(147,223)] = {64,0}, + [I(148,223)] = {64,0}, + [I(149,223)] = {64,0}, + [I(150,223)] = {64,0}, + [I(151,223)] = {64,0}, + [I(152,223)] = {64,0}, + [I(153,223)] = {64,0}, + [I(154,223)] = {64,0}, + [I(155,223)] = {64,0}, + [I(156,223)] = {64,0}, + [I(157,223)] = {64,0}, + [I(158,223)] = {64,0}, + [I(159,223)] = {64,0}, + [I(160,223)] = {64,0}, + [I(161,223)] = {64,0}, + [I(162,223)] = {64,0}, + [I(163,223)] = {64,0}, + [I(164,223)] = {64,0}, + [I(165,223)] = {64,0}, + [I(166,223)] = {64,0}, + [I(167,223)] = {64,0}, + [I(168,223)] = {64,0}, + [I(169,223)] = {64,0}, + [I(170,223)] = {64,0}, + [I(171,223)] = {64,0}, + [I(172,223)] = {64,0}, + [I(173,223)] = {64,0}, + [I(174,223)] = {64,0}, + [I(175,223)] = {64,0}, + [I(176,223)] = {64,0}, + [I(177,223)] = {64,0}, + [I(178,223)] = {64,0}, + [I(179,223)] = {64,0}, + [I(180,223)] = {64,0}, + [I(181,223)] = {64,0}, + [I(182,223)] = {64,0}, + [I(183,223)] = {64,0}, + [I(184,223)] = {64,0}, + [I(185,223)] = {64,0}, + [I(186,223)] = {64,0}, + [I(187,223)] = {64,0}, + [I(188,223)] = {64,0}, + [I(189,223)] = {64,0}, + [I(190,223)] = {64,0}, + [I(191,223)] = {64,0}, + [I(192,223)] = {64,0}, + [I(193,223)] = {64,0}, + [I(194,223)] = {64,0}, + [I(195,223)] = {64,0}, + [I(196,223)] = {64,0}, + [I(197,223)] = {64,0}, + [I(198,223)] = {64,0}, + [I(199,223)] = {64,0}, + [I(200,223)] = {64,0}, + [I(201,223)] = {64,0}, + [I(202,223)] = {64,0}, + [I(203,223)] = {64,0}, + [I(204,223)] = {64,0}, + [I(205,223)] = {64,0}, + [I(206,223)] = {64,0}, + [I(207,223)] = {64,0}, + [I(208,223)] = {64,0}, + [I(209,223)] = {64,0}, + [I(210,223)] = {64,0}, + [I(211,223)] = {64,0}, + [I(212,223)] = {64,0}, + [I(213,223)] = {64,0}, + [I(214,223)] = {64,0}, + [I(215,223)] = {64,0}, + [I(216,223)] = {64,0}, + [I(217,223)] = {64,0}, + [I(218,223)] = {64,0}, + [I(219,223)] = {64,0}, + [I(220,223)] = {64,0}, + [I(221,223)] = {64,0}, + [I(222,223)] = {64,0}, + [I(223,223)] = {64,0}, + [I(224,223)] = {64,0}, + [I(225,223)] = {64,0}, + [I(226,223)] = {64,0}, + [I(227,223)] = {64,0}, + [I(228,223)] = {64,0}, + [I(229,223)] = {64,0}, + [I(230,223)] = {64,0}, + [I(231,223)] = {64,0}, + [I(232,223)] = {64,0}, + [I(233,223)] = {64,0}, + [I(234,223)] = {64,0}, + [I(235,223)] = {64,0}, + [I(236,223)] = {64,0}, + [I(237,223)] = {64,0}, + [I(238,223)] = {64,0}, + [I(239,223)] = {64,0}, + [I(240,223)] = {64,0}, + [I(241,223)] = {64,0}, + [I(242,223)] = {64,0}, + [I(243,223)] = {64,0}, + [I(244,223)] = {64,0}, + [I(245,223)] = {64,0}, + [I(246,223)] = {64,0}, + [I(247,223)] = {64,0}, + [I(248,223)] = {64,0}, + [I(249,223)] = {64,0}, + [I(250,223)] = {64,0}, + [I(251,223)] = {64,0}, + [I(252,223)] = {64,0}, + [I(253,223)] = {64,0}, + [I(254,223)] = {64,0}, + [I(255,223)] = {64,0}, + [I(0,224)] = {64,0}, + [I(1,224)] = {64,0}, + [I(2,224)] = {64,0}, + [I(3,224)] = {64,0}, + [I(4,224)] = {64,0}, + [I(5,224)] = {64,0}, + [I(6,224)] = {64,0}, + [I(7,224)] = {64,0}, + [I(8,224)] = {64,0}, + [I(9,224)] = {64,0}, + [I(10,224)] = {64,0}, + [I(11,224)] = {64,0}, + [I(12,224)] = {64,0}, + [I(13,224)] = {64,0}, + [I(14,224)] = {64,0}, + [I(15,224)] = {64,0}, + [I(16,224)] = {64,0}, + [I(17,224)] = {64,0}, + [I(18,224)] = {64,0}, + [I(19,224)] = {64,0}, + [I(20,224)] = {64,0}, + [I(21,224)] = {64,0}, + [I(22,224)] = {64,0}, + [I(23,224)] = {64,0}, + [I(24,224)] = {64,0}, + [I(25,224)] = {64,0}, + [I(26,224)] = {64,0}, + [I(27,224)] = {64,0}, + [I(28,224)] = {64,0}, + [I(29,224)] = {64,0}, + [I(30,224)] = {64,0}, + [I(31,224)] = {64,0}, + [I(32,224)] = {26,0x14FFFEC}, + [I(33,224)] = {30,0x3F8FFFEC}, + [I(34,224)] = {30,0x3F9FFFEC}, + [I(35,224)] = {X32,0xFFAFFFEC}, + [I(36,224)] = {64,0}, + [I(37,224)] = {26,0x15FFFEC}, + [I(38,224)] = {28,0xF8FFFEC}, + [I(39,224)] = {31,0x7FAFFFEC}, + [I(40,224)] = {30,0x3FAFFFEC}, + [I(41,224)] = {30,0x3FBFFFEC}, + [I(42,224)] = {28,0xF9FFFEC}, + [I(43,224)] = {31,0x7FBFFFEC}, + [I(44,224)] = {28,0xFAFFFEC}, + [I(45,224)] = {26,0x16FFFEC}, + [I(46,224)] = {26,0x17FFFEC}, + [I(47,224)] = {26,0x18FFFEC}, + [I(48,224)] = {25,0xFFFEC}, + [I(49,224)] = {25,0x1FFFEC}, + [I(50,224)] = {25,0x2FFFEC}, + [I(51,224)] = {26,0x19FFFEC}, + [I(52,224)] = {26,0x1AFFFEC}, + [I(53,224)] = {26,0x1BFFFEC}, + [I(54,224)] = {26,0x1CFFFEC}, + [I(55,224)] = {26,0x1DFFFEC}, + [I(56,224)] = {26,0x1EFFFEC}, + [I(57,224)] = {26,0x1FFFFEC}, + [I(58,224)] = {27,0x5CFFFEC}, + [I(59,224)] = {28,0xFBFFFEC}, + [I(60,224)] = {64,0}, + [I(61,224)] = {26,0x20FFFEC}, + [I(62,224)] = {X32,0xFFBFFFEC}, + [I(63,224)] = {30,0x3FCFFFEC}, + [I(64,224)] = {64,0}, + [I(65,224)] = {26,0x21FFFEC}, + [I(66,224)] = {27,0x5DFFFEC}, + [I(67,224)] = {27,0x5EFFFEC}, + [I(68,224)] = {27,0x5FFFFEC}, + [I(69,224)] = {27,0x60FFFEC}, + [I(70,224)] = {27,0x61FFFEC}, + [I(71,224)] = {27,0x62FFFEC}, + [I(72,224)] = {27,0x63FFFEC}, + [I(73,224)] = {27,0x64FFFEC}, + [I(74,224)] = {27,0x65FFFEC}, + [I(75,224)] = {27,0x66FFFEC}, + [I(76,224)] = {27,0x67FFFEC}, + [I(77,224)] = {27,0x68FFFEC}, + [I(78,224)] = {27,0x69FFFEC}, + [I(79,224)] = {27,0x6AFFFEC}, + [I(80,224)] = {27,0x6BFFFEC}, + [I(81,224)] = {27,0x6CFFFEC}, + [I(82,224)] = {27,0x6DFFFEC}, + [I(83,224)] = {27,0x6EFFFEC}, + [I(84,224)] = {27,0x6FFFFEC}, + [I(85,224)] = {27,0x70FFFEC}, + [I(86,224)] = {27,0x71FFFEC}, + [I(87,224)] = {27,0x72FFFEC}, + [I(88,224)] = {28,0xFCFFFEC}, + [I(89,224)] = {27,0x73FFFEC}, + [I(90,224)] = {28,0xFDFFFEC}, + [I(91,224)] = {64,0}, + [I(92,224)] = {64,0}, + [I(93,224)] = {64,0}, + [I(94,224)] = {64,0}, + [I(95,224)] = {26,0x22FFFEC}, + [I(96,224)] = {64,0}, + [I(97,224)] = {25,0x3FFFEC}, + [I(98,224)] = {26,0x23FFFEC}, + [I(99,224)] = {25,0x4FFFEC}, + [I(100,224)] = {26,0x24FFFEC}, + [I(101,224)] = {25,0x5FFFEC}, + [I(102,224)] = {26,0x25FFFEC}, + [I(103,224)] = {26,0x26FFFEC}, + [I(104,224)] = {26,0x27FFFEC}, + [I(105,224)] = {25,0x6FFFEC}, + [I(106,224)] = {27,0x74FFFEC}, + [I(107,224)] = {27,0x75FFFEC}, + [I(108,224)] = {26,0x28FFFEC}, + [I(109,224)] = {26,0x29FFFEC}, + [I(110,224)] = {26,0x2AFFFEC}, + [I(111,224)] = {25,0x7FFFEC}, + [I(112,224)] = {26,0x2BFFFEC}, + [I(113,224)] = {27,0x76FFFEC}, + [I(114,224)] = {26,0x2CFFFEC}, + [I(115,224)] = {25,0x8FFFEC}, + [I(116,224)] = {25,0x9FFFEC}, + [I(117,224)] = {26,0x2DFFFEC}, + [I(118,224)] = {27,0x77FFFEC}, + [I(119,224)] = {27,0x78FFFEC}, + [I(120,224)] = {27,0x79FFFEC}, + [I(121,224)] = {27,0x7AFFFEC}, + [I(122,224)] = {27,0x7BFFFEC}, + [I(123,224)] = {64,0}, + [I(124,224)] = {31,0x7FCFFFEC}, + [I(125,224)] = {64,0}, + [I(126,224)] = {64,0}, + [I(127,224)] = {64,0}, + [I(128,224)] = {64,0}, + [I(129,224)] = {64,0}, + [I(130,224)] = {64,0}, + [I(131,224)] = {64,0}, + [I(132,224)] = {64,0}, + [I(133,224)] = {64,0}, + [I(134,224)] = {64,0}, + [I(135,224)] = {64,0}, + [I(136,224)] = {64,0}, + [I(137,224)] = {64,0}, + [I(138,224)] = {64,0}, + [I(139,224)] = {64,0}, + [I(140,224)] = {64,0}, + [I(141,224)] = {64,0}, + [I(142,224)] = {64,0}, + [I(143,224)] = {64,0}, + [I(144,224)] = {64,0}, + [I(145,224)] = {64,0}, + [I(146,224)] = {64,0}, + [I(147,224)] = {64,0}, + [I(148,224)] = {64,0}, + [I(149,224)] = {64,0}, + [I(150,224)] = {64,0}, + [I(151,224)] = {64,0}, + [I(152,224)] = {64,0}, + [I(153,224)] = {64,0}, + [I(154,224)] = {64,0}, + [I(155,224)] = {64,0}, + [I(156,224)] = {64,0}, + [I(157,224)] = {64,0}, + [I(158,224)] = {64,0}, + [I(159,224)] = {64,0}, + [I(160,224)] = {64,0}, + [I(161,224)] = {64,0}, + [I(162,224)] = {64,0}, + [I(163,224)] = {64,0}, + [I(164,224)] = {64,0}, + [I(165,224)] = {64,0}, + [I(166,224)] = {64,0}, + [I(167,224)] = {64,0}, + [I(168,224)] = {64,0}, + [I(169,224)] = {64,0}, + [I(170,224)] = {64,0}, + [I(171,224)] = {64,0}, + [I(172,224)] = {64,0}, + [I(173,224)] = {64,0}, + [I(174,224)] = {64,0}, + [I(175,224)] = {64,0}, + [I(176,224)] = {64,0}, + [I(177,224)] = {64,0}, + [I(178,224)] = {64,0}, + [I(179,224)] = {64,0}, + [I(180,224)] = {64,0}, + [I(181,224)] = {64,0}, + [I(182,224)] = {64,0}, + [I(183,224)] = {64,0}, + [I(184,224)] = {64,0}, + [I(185,224)] = {64,0}, + [I(186,224)] = {64,0}, + [I(187,224)] = {64,0}, + [I(188,224)] = {64,0}, + [I(189,224)] = {64,0}, + [I(190,224)] = {64,0}, + [I(191,224)] = {64,0}, + [I(192,224)] = {64,0}, + [I(193,224)] = {64,0}, + [I(194,224)] = {64,0}, + [I(195,224)] = {64,0}, + [I(196,224)] = {64,0}, + [I(197,224)] = {64,0}, + [I(198,224)] = {64,0}, + [I(199,224)] = {64,0}, + [I(200,224)] = {64,0}, + [I(201,224)] = {64,0}, + [I(202,224)] = {64,0}, + [I(203,224)] = {64,0}, + [I(204,224)] = {64,0}, + [I(205,224)] = {64,0}, + [I(206,224)] = {64,0}, + [I(207,224)] = {64,0}, + [I(208,224)] = {64,0}, + [I(209,224)] = {64,0}, + [I(210,224)] = {64,0}, + [I(211,224)] = {64,0}, + [I(212,224)] = {64,0}, + [I(213,224)] = {64,0}, + [I(214,224)] = {64,0}, + [I(215,224)] = {64,0}, + [I(216,224)] = {64,0}, + [I(217,224)] = {64,0}, + [I(218,224)] = {64,0}, + [I(219,224)] = {64,0}, + [I(220,224)] = {64,0}, + [I(221,224)] = {64,0}, + [I(222,224)] = {64,0}, + [I(223,224)] = {64,0}, + [I(224,224)] = {64,0}, + [I(225,224)] = {64,0}, + [I(226,224)] = {64,0}, + [I(227,224)] = {64,0}, + [I(228,224)] = {64,0}, + [I(229,224)] = {64,0}, + [I(230,224)] = {64,0}, + [I(231,224)] = {64,0}, + [I(232,224)] = {64,0}, + [I(233,224)] = {64,0}, + [I(234,224)] = {64,0}, + [I(235,224)] = {64,0}, + [I(236,224)] = {64,0}, + [I(237,224)] = {64,0}, + [I(238,224)] = {64,0}, + [I(239,224)] = {64,0}, + [I(240,224)] = {64,0}, + [I(241,224)] = {64,0}, + [I(242,224)] = {64,0}, + [I(243,224)] = {64,0}, + [I(244,224)] = {64,0}, + [I(245,224)] = {64,0}, + [I(246,224)] = {64,0}, + [I(247,224)] = {64,0}, + [I(248,224)] = {64,0}, + [I(249,224)] = {64,0}, + [I(250,224)] = {64,0}, + [I(251,224)] = {64,0}, + [I(252,224)] = {64,0}, + [I(253,224)] = {64,0}, + [I(254,224)] = {64,0}, + [I(255,224)] = {64,0}, + [I(0,225)] = {64,0}, + [I(1,225)] = {64,0}, + [I(2,225)] = {64,0}, + [I(3,225)] = {64,0}, + [I(4,225)] = {64,0}, + [I(5,225)] = {64,0}, + [I(6,225)] = {64,0}, + [I(7,225)] = {64,0}, + [I(8,225)] = {64,0}, + [I(9,225)] = {64,0}, + [I(10,225)] = {64,0}, + [I(11,225)] = {64,0}, + [I(12,225)] = {64,0}, + [I(13,225)] = {64,0}, + [I(14,225)] = {64,0}, + [I(15,225)] = {64,0}, + [I(16,225)] = {64,0}, + [I(17,225)] = {64,0}, + [I(18,225)] = {64,0}, + [I(19,225)] = {64,0}, + [I(20,225)] = {64,0}, + [I(21,225)] = {64,0}, + [I(22,225)] = {64,0}, + [I(23,225)] = {64,0}, + [I(24,225)] = {64,0}, + [I(25,225)] = {64,0}, + [I(26,225)] = {64,0}, + [I(27,225)] = {64,0}, + [I(28,225)] = {64,0}, + [I(29,225)] = {64,0}, + [I(30,225)] = {64,0}, + [I(31,225)] = {64,0}, + [I(32,225)] = {30,0x14FFFFF3}, + [I(33,225)] = {64,0}, + [I(34,225)] = {64,0}, + [I(35,225)] = {64,0}, + [I(36,225)] = {64,0}, + [I(37,225)] = {30,0x15FFFFF3}, + [I(38,225)] = {X32,0xF8FFFFF3}, + [I(39,225)] = {64,0}, + [I(40,225)] = {64,0}, + [I(41,225)] = {64,0}, + [I(42,225)] = {X32,0xF9FFFFF3}, + [I(43,225)] = {64,0}, + [I(44,225)] = {X32,0xFAFFFFF3}, + [I(45,225)] = {30,0x16FFFFF3}, + [I(46,225)] = {30,0x17FFFFF3}, + [I(47,225)] = {30,0x18FFFFF3}, + [I(48,225)] = {29,0xFFFFF3}, + [I(49,225)] = {29,0x1FFFFF3}, + [I(50,225)] = {29,0x2FFFFF3}, + [I(51,225)] = {30,0x19FFFFF3}, + [I(52,225)] = {30,0x1AFFFFF3}, + [I(53,225)] = {30,0x1BFFFFF3}, + [I(54,225)] = {30,0x1CFFFFF3}, + [I(55,225)] = {30,0x1DFFFFF3}, + [I(56,225)] = {30,0x1EFFFFF3}, + [I(57,225)] = {30,0x1FFFFFF3}, + [I(58,225)] = {31,0x5CFFFFF3}, + [I(59,225)] = {X32,0xFBFFFFF3}, + [I(60,225)] = {64,0}, + [I(61,225)] = {30,0x20FFFFF3}, + [I(62,225)] = {64,0}, + [I(63,225)] = {64,0}, + [I(64,225)] = {64,0}, + [I(65,225)] = {30,0x21FFFFF3}, + [I(66,225)] = {31,0x5DFFFFF3}, + [I(67,225)] = {31,0x5EFFFFF3}, + [I(68,225)] = {31,0x5FFFFFF3}, + [I(69,225)] = {31,0x60FFFFF3}, + [I(70,225)] = {31,0x61FFFFF3}, + [I(71,225)] = {31,0x62FFFFF3}, + [I(72,225)] = {31,0x63FFFFF3}, + [I(73,225)] = {31,0x64FFFFF3}, + [I(74,225)] = {31,0x65FFFFF3}, + [I(75,225)] = {31,0x66FFFFF3}, + [I(76,225)] = {31,0x67FFFFF3}, + [I(77,225)] = {31,0x68FFFFF3}, + [I(78,225)] = {31,0x69FFFFF3}, + [I(79,225)] = {31,0x6AFFFFF3}, + [I(80,225)] = {31,0x6BFFFFF3}, + [I(81,225)] = {31,0x6CFFFFF3}, + [I(82,225)] = {31,0x6DFFFFF3}, + [I(83,225)] = {31,0x6EFFFFF3}, + [I(84,225)] = {31,0x6FFFFFF3}, + [I(85,225)] = {31,0x70FFFFF3}, + [I(86,225)] = {31,0x71FFFFF3}, + [I(87,225)] = {31,0x72FFFFF3}, + [I(88,225)] = {X32,0xFCFFFFF3}, + [I(89,225)] = {31,0x73FFFFF3}, + [I(90,225)] = {X32,0xFDFFFFF3}, + [I(91,225)] = {64,0}, + [I(92,225)] = {64,0}, + [I(93,225)] = {64,0}, + [I(94,225)] = {64,0}, + [I(95,225)] = {30,0x22FFFFF3}, + [I(96,225)] = {64,0}, + [I(97,225)] = {29,0x3FFFFF3}, + [I(98,225)] = {30,0x23FFFFF3}, + [I(99,225)] = {29,0x4FFFFF3}, + [I(100,225)] = {30,0x24FFFFF3}, + [I(101,225)] = {29,0x5FFFFF3}, + [I(102,225)] = {30,0x25FFFFF3}, + [I(103,225)] = {30,0x26FFFFF3}, + [I(104,225)] = {30,0x27FFFFF3}, + [I(105,225)] = {29,0x6FFFFF3}, + [I(106,225)] = {31,0x74FFFFF3}, + [I(107,225)] = {31,0x75FFFFF3}, + [I(108,225)] = {30,0x28FFFFF3}, + [I(109,225)] = {30,0x29FFFFF3}, + [I(110,225)] = {30,0x2AFFFFF3}, + [I(111,225)] = {29,0x7FFFFF3}, + [I(112,225)] = {30,0x2BFFFFF3}, + [I(113,225)] = {31,0x76FFFFF3}, + [I(114,225)] = {30,0x2CFFFFF3}, + [I(115,225)] = {29,0x8FFFFF3}, + [I(116,225)] = {29,0x9FFFFF3}, + [I(117,225)] = {30,0x2DFFFFF3}, + [I(118,225)] = {31,0x77FFFFF3}, + [I(119,225)] = {31,0x78FFFFF3}, + [I(120,225)] = {31,0x79FFFFF3}, + [I(121,225)] = {31,0x7AFFFFF3}, + [I(122,225)] = {31,0x7BFFFFF3}, + [I(123,225)] = {64,0}, + [I(124,225)] = {64,0}, + [I(125,225)] = {64,0}, + [I(126,225)] = {64,0}, + [I(127,225)] = {64,0}, + [I(128,225)] = {64,0}, + [I(129,225)] = {64,0}, + [I(130,225)] = {64,0}, + [I(131,225)] = {64,0}, + [I(132,225)] = {64,0}, + [I(133,225)] = {64,0}, + [I(134,225)] = {64,0}, + [I(135,225)] = {64,0}, + [I(136,225)] = {64,0}, + [I(137,225)] = {64,0}, + [I(138,225)] = {64,0}, + [I(139,225)] = {64,0}, + [I(140,225)] = {64,0}, + [I(141,225)] = {64,0}, + [I(142,225)] = {64,0}, + [I(143,225)] = {64,0}, + [I(144,225)] = {64,0}, + [I(145,225)] = {64,0}, + [I(146,225)] = {64,0}, + [I(147,225)] = {64,0}, + [I(148,225)] = {64,0}, + [I(149,225)] = {64,0}, + [I(150,225)] = {64,0}, + [I(151,225)] = {64,0}, + [I(152,225)] = {64,0}, + [I(153,225)] = {64,0}, + [I(154,225)] = {64,0}, + [I(155,225)] = {64,0}, + [I(156,225)] = {64,0}, + [I(157,225)] = {64,0}, + [I(158,225)] = {64,0}, + [I(159,225)] = {64,0}, + [I(160,225)] = {64,0}, + [I(161,225)] = {64,0}, + [I(162,225)] = {64,0}, + [I(163,225)] = {64,0}, + [I(164,225)] = {64,0}, + [I(165,225)] = {64,0}, + [I(166,225)] = {64,0}, + [I(167,225)] = {64,0}, + [I(168,225)] = {64,0}, + [I(169,225)] = {64,0}, + [I(170,225)] = {64,0}, + [I(171,225)] = {64,0}, + [I(172,225)] = {64,0}, + [I(173,225)] = {64,0}, + [I(174,225)] = {64,0}, + [I(175,225)] = {64,0}, + [I(176,225)] = {64,0}, + [I(177,225)] = {64,0}, + [I(178,225)] = {64,0}, + [I(179,225)] = {64,0}, + [I(180,225)] = {64,0}, + [I(181,225)] = {64,0}, + [I(182,225)] = {64,0}, + [I(183,225)] = {64,0}, + [I(184,225)] = {64,0}, + [I(185,225)] = {64,0}, + [I(186,225)] = {64,0}, + [I(187,225)] = {64,0}, + [I(188,225)] = {64,0}, + [I(189,225)] = {64,0}, + [I(190,225)] = {64,0}, + [I(191,225)] = {64,0}, + [I(192,225)] = {64,0}, + [I(193,225)] = {64,0}, + [I(194,225)] = {64,0}, + [I(195,225)] = {64,0}, + [I(196,225)] = {64,0}, + [I(197,225)] = {64,0}, + [I(198,225)] = {64,0}, + [I(199,225)] = {64,0}, + [I(200,225)] = {64,0}, + [I(201,225)] = {64,0}, + [I(202,225)] = {64,0}, + [I(203,225)] = {64,0}, + [I(204,225)] = {64,0}, + [I(205,225)] = {64,0}, + [I(206,225)] = {64,0}, + [I(207,225)] = {64,0}, + [I(208,225)] = {64,0}, + [I(209,225)] = {64,0}, + [I(210,225)] = {64,0}, + [I(211,225)] = {64,0}, + [I(212,225)] = {64,0}, + [I(213,225)] = {64,0}, + [I(214,225)] = {64,0}, + [I(215,225)] = {64,0}, + [I(216,225)] = {64,0}, + [I(217,225)] = {64,0}, + [I(218,225)] = {64,0}, + [I(219,225)] = {64,0}, + [I(220,225)] = {64,0}, + [I(221,225)] = {64,0}, + [I(222,225)] = {64,0}, + [I(223,225)] = {64,0}, + [I(224,225)] = {64,0}, + [I(225,225)] = {64,0}, + [I(226,225)] = {64,0}, + [I(227,225)] = {64,0}, + [I(228,225)] = {64,0}, + [I(229,225)] = {64,0}, + [I(230,225)] = {64,0}, + [I(231,225)] = {64,0}, + [I(232,225)] = {64,0}, + [I(233,225)] = {64,0}, + [I(234,225)] = {64,0}, + [I(235,225)] = {64,0}, + [I(236,225)] = {64,0}, + [I(237,225)] = {64,0}, + [I(238,225)] = {64,0}, + [I(239,225)] = {64,0}, + [I(240,225)] = {64,0}, + [I(241,225)] = {64,0}, + [I(242,225)] = {64,0}, + [I(243,225)] = {64,0}, + [I(244,225)] = {64,0}, + [I(245,225)] = {64,0}, + [I(246,225)] = {64,0}, + [I(247,225)] = {64,0}, + [I(248,225)] = {64,0}, + [I(249,225)] = {64,0}, + [I(250,225)] = {64,0}, + [I(251,225)] = {64,0}, + [I(252,225)] = {64,0}, + [I(253,225)] = {64,0}, + [I(254,225)] = {64,0}, + [I(255,225)] = {64,0}, + [I(0,226)] = {64,0}, + [I(1,226)] = {64,0}, + [I(2,226)] = {64,0}, + [I(3,226)] = {64,0}, + [I(4,226)] = {64,0}, + [I(5,226)] = {64,0}, + [I(6,226)] = {64,0}, + [I(7,226)] = {64,0}, + [I(8,226)] = {64,0}, + [I(9,226)] = {64,0}, + [I(10,226)] = {64,0}, + [I(11,226)] = {64,0}, + [I(12,226)] = {64,0}, + [I(13,226)] = {64,0}, + [I(14,226)] = {64,0}, + [I(15,226)] = {64,0}, + [I(16,226)] = {64,0}, + [I(17,226)] = {64,0}, + [I(18,226)] = {64,0}, + [I(19,226)] = {64,0}, + [I(20,226)] = {64,0}, + [I(21,226)] = {64,0}, + [I(22,226)] = {64,0}, + [I(23,226)] = {64,0}, + [I(24,226)] = {64,0}, + [I(25,226)] = {64,0}, + [I(26,226)] = {64,0}, + [I(27,226)] = {64,0}, + [I(28,226)] = {64,0}, + [I(29,226)] = {64,0}, + [I(30,226)] = {64,0}, + [I(31,226)] = {64,0}, + [I(32,226)] = {26,0x14FFFED}, + [I(33,226)] = {30,0x3F8FFFED}, + [I(34,226)] = {30,0x3F9FFFED}, + [I(35,226)] = {X32,0xFFAFFFED}, + [I(36,226)] = {64,0}, + [I(37,226)] = {26,0x15FFFED}, + [I(38,226)] = {28,0xF8FFFED}, + [I(39,226)] = {31,0x7FAFFFED}, + [I(40,226)] = {30,0x3FAFFFED}, + [I(41,226)] = {30,0x3FBFFFED}, + [I(42,226)] = {28,0xF9FFFED}, + [I(43,226)] = {31,0x7FBFFFED}, + [I(44,226)] = {28,0xFAFFFED}, + [I(45,226)] = {26,0x16FFFED}, + [I(46,226)] = {26,0x17FFFED}, + [I(47,226)] = {26,0x18FFFED}, + [I(48,226)] = {25,0xFFFED}, + [I(49,226)] = {25,0x1FFFED}, + [I(50,226)] = {25,0x2FFFED}, + [I(51,226)] = {26,0x19FFFED}, + [I(52,226)] = {26,0x1AFFFED}, + [I(53,226)] = {26,0x1BFFFED}, + [I(54,226)] = {26,0x1CFFFED}, + [I(55,226)] = {26,0x1DFFFED}, + [I(56,226)] = {26,0x1EFFFED}, + [I(57,226)] = {26,0x1FFFFED}, + [I(58,226)] = {27,0x5CFFFED}, + [I(59,226)] = {28,0xFBFFFED}, + [I(60,226)] = {64,0}, + [I(61,226)] = {26,0x20FFFED}, + [I(62,226)] = {X32,0xFFBFFFED}, + [I(63,226)] = {30,0x3FCFFFED}, + [I(64,226)] = {64,0}, + [I(65,226)] = {26,0x21FFFED}, + [I(66,226)] = {27,0x5DFFFED}, + [I(67,226)] = {27,0x5EFFFED}, + [I(68,226)] = {27,0x5FFFFED}, + [I(69,226)] = {27,0x60FFFED}, + [I(70,226)] = {27,0x61FFFED}, + [I(71,226)] = {27,0x62FFFED}, + [I(72,226)] = {27,0x63FFFED}, + [I(73,226)] = {27,0x64FFFED}, + [I(74,226)] = {27,0x65FFFED}, + [I(75,226)] = {27,0x66FFFED}, + [I(76,226)] = {27,0x67FFFED}, + [I(77,226)] = {27,0x68FFFED}, + [I(78,226)] = {27,0x69FFFED}, + [I(79,226)] = {27,0x6AFFFED}, + [I(80,226)] = {27,0x6BFFFED}, + [I(81,226)] = {27,0x6CFFFED}, + [I(82,226)] = {27,0x6DFFFED}, + [I(83,226)] = {27,0x6EFFFED}, + [I(84,226)] = {27,0x6FFFFED}, + [I(85,226)] = {27,0x70FFFED}, + [I(86,226)] = {27,0x71FFFED}, + [I(87,226)] = {27,0x72FFFED}, + [I(88,226)] = {28,0xFCFFFED}, + [I(89,226)] = {27,0x73FFFED}, + [I(90,226)] = {28,0xFDFFFED}, + [I(91,226)] = {64,0}, + [I(92,226)] = {64,0}, + [I(93,226)] = {64,0}, + [I(94,226)] = {64,0}, + [I(95,226)] = {26,0x22FFFED}, + [I(96,226)] = {64,0}, + [I(97,226)] = {25,0x3FFFED}, + [I(98,226)] = {26,0x23FFFED}, + [I(99,226)] = {25,0x4FFFED}, + [I(100,226)] = {26,0x24FFFED}, + [I(101,226)] = {25,0x5FFFED}, + [I(102,226)] = {26,0x25FFFED}, + [I(103,226)] = {26,0x26FFFED}, + [I(104,226)] = {26,0x27FFFED}, + [I(105,226)] = {25,0x6FFFED}, + [I(106,226)] = {27,0x74FFFED}, + [I(107,226)] = {27,0x75FFFED}, + [I(108,226)] = {26,0x28FFFED}, + [I(109,226)] = {26,0x29FFFED}, + [I(110,226)] = {26,0x2AFFFED}, + [I(111,226)] = {25,0x7FFFED}, + [I(112,226)] = {26,0x2BFFFED}, + [I(113,226)] = {27,0x76FFFED}, + [I(114,226)] = {26,0x2CFFFED}, + [I(115,226)] = {25,0x8FFFED}, + [I(116,226)] = {25,0x9FFFED}, + [I(117,226)] = {26,0x2DFFFED}, + [I(118,226)] = {27,0x77FFFED}, + [I(119,226)] = {27,0x78FFFED}, + [I(120,226)] = {27,0x79FFFED}, + [I(121,226)] = {27,0x7AFFFED}, + [I(122,226)] = {27,0x7BFFFED}, + [I(123,226)] = {64,0}, + [I(124,226)] = {31,0x7FCFFFED}, + [I(125,226)] = {64,0}, + [I(126,226)] = {64,0}, + [I(127,226)] = {64,0}, + [I(128,226)] = {64,0}, + [I(129,226)] = {64,0}, + [I(130,226)] = {64,0}, + [I(131,226)] = {64,0}, + [I(132,226)] = {64,0}, + [I(133,226)] = {64,0}, + [I(134,226)] = {64,0}, + [I(135,226)] = {64,0}, + [I(136,226)] = {64,0}, + [I(137,226)] = {64,0}, + [I(138,226)] = {64,0}, + [I(139,226)] = {64,0}, + [I(140,226)] = {64,0}, + [I(141,226)] = {64,0}, + [I(142,226)] = {64,0}, + [I(143,226)] = {64,0}, + [I(144,226)] = {64,0}, + [I(145,226)] = {64,0}, + [I(146,226)] = {64,0}, + [I(147,226)] = {64,0}, + [I(148,226)] = {64,0}, + [I(149,226)] = {64,0}, + [I(150,226)] = {64,0}, + [I(151,226)] = {64,0}, + [I(152,226)] = {64,0}, + [I(153,226)] = {64,0}, + [I(154,226)] = {64,0}, + [I(155,226)] = {64,0}, + [I(156,226)] = {64,0}, + [I(157,226)] = {64,0}, + [I(158,226)] = {64,0}, + [I(159,226)] = {64,0}, + [I(160,226)] = {64,0}, + [I(161,226)] = {64,0}, + [I(162,226)] = {64,0}, + [I(163,226)] = {64,0}, + [I(164,226)] = {64,0}, + [I(165,226)] = {64,0}, + [I(166,226)] = {64,0}, + [I(167,226)] = {64,0}, + [I(168,226)] = {64,0}, + [I(169,226)] = {64,0}, + [I(170,226)] = {64,0}, + [I(171,226)] = {64,0}, + [I(172,226)] = {64,0}, + [I(173,226)] = {64,0}, + [I(174,226)] = {64,0}, + [I(175,226)] = {64,0}, + [I(176,226)] = {64,0}, + [I(177,226)] = {64,0}, + [I(178,226)] = {64,0}, + [I(179,226)] = {64,0}, + [I(180,226)] = {64,0}, + [I(181,226)] = {64,0}, + [I(182,226)] = {64,0}, + [I(183,226)] = {64,0}, + [I(184,226)] = {64,0}, + [I(185,226)] = {64,0}, + [I(186,226)] = {64,0}, + [I(187,226)] = {64,0}, + [I(188,226)] = {64,0}, + [I(189,226)] = {64,0}, + [I(190,226)] = {64,0}, + [I(191,226)] = {64,0}, + [I(192,226)] = {64,0}, + [I(193,226)] = {64,0}, + [I(194,226)] = {64,0}, + [I(195,226)] = {64,0}, + [I(196,226)] = {64,0}, + [I(197,226)] = {64,0}, + [I(198,226)] = {64,0}, + [I(199,226)] = {64,0}, + [I(200,226)] = {64,0}, + [I(201,226)] = {64,0}, + [I(202,226)] = {64,0}, + [I(203,226)] = {64,0}, + [I(204,226)] = {64,0}, + [I(205,226)] = {64,0}, + [I(206,226)] = {64,0}, + [I(207,226)] = {64,0}, + [I(208,226)] = {64,0}, + [I(209,226)] = {64,0}, + [I(210,226)] = {64,0}, + [I(211,226)] = {64,0}, + [I(212,226)] = {64,0}, + [I(213,226)] = {64,0}, + [I(214,226)] = {64,0}, + [I(215,226)] = {64,0}, + [I(216,226)] = {64,0}, + [I(217,226)] = {64,0}, + [I(218,226)] = {64,0}, + [I(219,226)] = {64,0}, + [I(220,226)] = {64,0}, + [I(221,226)] = {64,0}, + [I(222,226)] = {64,0}, + [I(223,226)] = {64,0}, + [I(224,226)] = {64,0}, + [I(225,226)] = {64,0}, + [I(226,226)] = {64,0}, + [I(227,226)] = {64,0}, + [I(228,226)] = {64,0}, + [I(229,226)] = {64,0}, + [I(230,226)] = {64,0}, + [I(231,226)] = {64,0}, + [I(232,226)] = {64,0}, + [I(233,226)] = {64,0}, + [I(234,226)] = {64,0}, + [I(235,226)] = {64,0}, + [I(236,226)] = {64,0}, + [I(237,226)] = {64,0}, + [I(238,226)] = {64,0}, + [I(239,226)] = {64,0}, + [I(240,226)] = {64,0}, + [I(241,226)] = {64,0}, + [I(242,226)] = {64,0}, + [I(243,226)] = {64,0}, + [I(244,226)] = {64,0}, + [I(245,226)] = {64,0}, + [I(246,226)] = {64,0}, + [I(247,226)] = {64,0}, + [I(248,226)] = {64,0}, + [I(249,226)] = {64,0}, + [I(250,226)] = {64,0}, + [I(251,226)] = {64,0}, + [I(252,226)] = {64,0}, + [I(253,226)] = {64,0}, + [I(254,226)] = {64,0}, + [I(255,226)] = {64,0}, + [I(0,227)] = {64,0}, + [I(1,227)] = {64,0}, + [I(2,227)] = {64,0}, + [I(3,227)] = {64,0}, + [I(4,227)] = {64,0}, + [I(5,227)] = {64,0}, + [I(6,227)] = {64,0}, + [I(7,227)] = {64,0}, + [I(8,227)] = {64,0}, + [I(9,227)] = {64,0}, + [I(10,227)] = {64,0}, + [I(11,227)] = {64,0}, + [I(12,227)] = {64,0}, + [I(13,227)] = {64,0}, + [I(14,227)] = {64,0}, + [I(15,227)] = {64,0}, + [I(16,227)] = {64,0}, + [I(17,227)] = {64,0}, + [I(18,227)] = {64,0}, + [I(19,227)] = {64,0}, + [I(20,227)] = {64,0}, + [I(21,227)] = {64,0}, + [I(22,227)] = {64,0}, + [I(23,227)] = {64,0}, + [I(24,227)] = {64,0}, + [I(25,227)] = {64,0}, + [I(26,227)] = {64,0}, + [I(27,227)] = {64,0}, + [I(28,227)] = {64,0}, + [I(29,227)] = {64,0}, + [I(30,227)] = {64,0}, + [I(31,227)] = {64,0}, + [I(32,227)] = {27,0x29FFFE6}, + [I(33,227)] = {31,0x7F1FFFE6}, + [I(34,227)] = {31,0x7F3FFFE6}, + [I(35,227)] = {64,0}, + [I(36,227)] = {64,0}, + [I(37,227)] = {27,0x2BFFFE6}, + [I(38,227)] = {29,0x1F1FFFE6}, + [I(39,227)] = {X32,0xFF5FFFE6}, + [I(40,227)] = {31,0x7F5FFFE6}, + [I(41,227)] = {31,0x7F7FFFE6}, + [I(42,227)] = {29,0x1F3FFFE6}, + [I(43,227)] = {X32,0xFF7FFFE6}, + [I(44,227)] = {29,0x1F5FFFE6}, + [I(45,227)] = {27,0x2DFFFE6}, + [I(46,227)] = {27,0x2FFFFE6}, + [I(47,227)] = {27,0x31FFFE6}, + [I(48,227)] = {26,0x1FFFE6}, + [I(49,227)] = {26,0x3FFFE6}, + [I(50,227)] = {26,0x5FFFE6}, + [I(51,227)] = {27,0x33FFFE6}, + [I(52,227)] = {27,0x35FFFE6}, + [I(53,227)] = {27,0x37FFFE6}, + [I(54,227)] = {27,0x39FFFE6}, + [I(55,227)] = {27,0x3BFFFE6}, + [I(56,227)] = {27,0x3DFFFE6}, + [I(57,227)] = {27,0x3FFFFE6}, + [I(58,227)] = {28,0xB9FFFE6}, + [I(59,227)] = {29,0x1F7FFFE6}, + [I(60,227)] = {64,0}, + [I(61,227)] = {27,0x41FFFE6}, + [I(62,227)] = {64,0}, + [I(63,227)] = {31,0x7F9FFFE6}, + [I(64,227)] = {64,0}, + [I(65,227)] = {27,0x43FFFE6}, + [I(66,227)] = {28,0xBBFFFE6}, + [I(67,227)] = {28,0xBDFFFE6}, + [I(68,227)] = {28,0xBFFFFE6}, + [I(69,227)] = {28,0xC1FFFE6}, + [I(70,227)] = {28,0xC3FFFE6}, + [I(71,227)] = {28,0xC5FFFE6}, + [I(72,227)] = {28,0xC7FFFE6}, + [I(73,227)] = {28,0xC9FFFE6}, + [I(74,227)] = {28,0xCBFFFE6}, + [I(75,227)] = {28,0xCDFFFE6}, + [I(76,227)] = {28,0xCFFFFE6}, + [I(77,227)] = {28,0xD1FFFE6}, + [I(78,227)] = {28,0xD3FFFE6}, + [I(79,227)] = {28,0xD5FFFE6}, + [I(80,227)] = {28,0xD7FFFE6}, + [I(81,227)] = {28,0xD9FFFE6}, + [I(82,227)] = {28,0xDBFFFE6}, + [I(83,227)] = {28,0xDDFFFE6}, + [I(84,227)] = {28,0xDFFFFE6}, + [I(85,227)] = {28,0xE1FFFE6}, + [I(86,227)] = {28,0xE3FFFE6}, + [I(87,227)] = {28,0xE5FFFE6}, + [I(88,227)] = {29,0x1F9FFFE6}, + [I(89,227)] = {28,0xE7FFFE6}, + [I(90,227)] = {29,0x1FBFFFE6}, + [I(91,227)] = {64,0}, + [I(92,227)] = {64,0}, + [I(93,227)] = {64,0}, + [I(94,227)] = {64,0}, + [I(95,227)] = {27,0x45FFFE6}, + [I(96,227)] = {64,0}, + [I(97,227)] = {26,0x7FFFE6}, + [I(98,227)] = {27,0x47FFFE6}, + [I(99,227)] = {26,0x9FFFE6}, + [I(100,227)] = {27,0x49FFFE6}, + [I(101,227)] = {26,0xBFFFE6}, + [I(102,227)] = {27,0x4BFFFE6}, + [I(103,227)] = {27,0x4DFFFE6}, + [I(104,227)] = {27,0x4FFFFE6}, + [I(105,227)] = {26,0xDFFFE6}, + [I(106,227)] = {28,0xE9FFFE6}, + [I(107,227)] = {28,0xEBFFFE6}, + [I(108,227)] = {27,0x51FFFE6}, + [I(109,227)] = {27,0x53FFFE6}, + [I(110,227)] = {27,0x55FFFE6}, + [I(111,227)] = {26,0xFFFFE6}, + [I(112,227)] = {27,0x57FFFE6}, + [I(113,227)] = {28,0xEDFFFE6}, + [I(114,227)] = {27,0x59FFFE6}, + [I(115,227)] = {26,0x11FFFE6}, + [I(116,227)] = {26,0x13FFFE6}, + [I(117,227)] = {27,0x5BFFFE6}, + [I(118,227)] = {28,0xEFFFFE6}, + [I(119,227)] = {28,0xF1FFFE6}, + [I(120,227)] = {28,0xF3FFFE6}, + [I(121,227)] = {28,0xF5FFFE6}, + [I(122,227)] = {28,0xF7FFFE6}, + [I(123,227)] = {64,0}, + [I(124,227)] = {X32,0xFF9FFFE6}, + [I(125,227)] = {64,0}, + [I(126,227)] = {64,0}, + [I(127,227)] = {64,0}, + [I(128,227)] = {64,0}, + [I(129,227)] = {64,0}, + [I(130,227)] = {64,0}, + [I(131,227)] = {64,0}, + [I(132,227)] = {64,0}, + [I(133,227)] = {64,0}, + [I(134,227)] = {64,0}, + [I(135,227)] = {64,0}, + [I(136,227)] = {64,0}, + [I(137,227)] = {64,0}, + [I(138,227)] = {64,0}, + [I(139,227)] = {64,0}, + [I(140,227)] = {64,0}, + [I(141,227)] = {64,0}, + [I(142,227)] = {64,0}, + [I(143,227)] = {64,0}, + [I(144,227)] = {64,0}, + [I(145,227)] = {64,0}, + [I(146,227)] = {64,0}, + [I(147,227)] = {64,0}, + [I(148,227)] = {64,0}, + [I(149,227)] = {64,0}, + [I(150,227)] = {64,0}, + [I(151,227)] = {64,0}, + [I(152,227)] = {64,0}, + [I(153,227)] = {64,0}, + [I(154,227)] = {64,0}, + [I(155,227)] = {64,0}, + [I(156,227)] = {64,0}, + [I(157,227)] = {64,0}, + [I(158,227)] = {64,0}, + [I(159,227)] = {64,0}, + [I(160,227)] = {64,0}, + [I(161,227)] = {64,0}, + [I(162,227)] = {64,0}, + [I(163,227)] = {64,0}, + [I(164,227)] = {64,0}, + [I(165,227)] = {64,0}, + [I(166,227)] = {64,0}, + [I(167,227)] = {64,0}, + [I(168,227)] = {64,0}, + [I(169,227)] = {64,0}, + [I(170,227)] = {64,0}, + [I(171,227)] = {64,0}, + [I(172,227)] = {64,0}, + [I(173,227)] = {64,0}, + [I(174,227)] = {64,0}, + [I(175,227)] = {64,0}, + [I(176,227)] = {64,0}, + [I(177,227)] = {64,0}, + [I(178,227)] = {64,0}, + [I(179,227)] = {64,0}, + [I(180,227)] = {64,0}, + [I(181,227)] = {64,0}, + [I(182,227)] = {64,0}, + [I(183,227)] = {64,0}, + [I(184,227)] = {64,0}, + [I(185,227)] = {64,0}, + [I(186,227)] = {64,0}, + [I(187,227)] = {64,0}, + [I(188,227)] = {64,0}, + [I(189,227)] = {64,0}, + [I(190,227)] = {64,0}, + [I(191,227)] = {64,0}, + [I(192,227)] = {64,0}, + [I(193,227)] = {64,0}, + [I(194,227)] = {64,0}, + [I(195,227)] = {64,0}, + [I(196,227)] = {64,0}, + [I(197,227)] = {64,0}, + [I(198,227)] = {64,0}, + [I(199,227)] = {64,0}, + [I(200,227)] = {64,0}, + [I(201,227)] = {64,0}, + [I(202,227)] = {64,0}, + [I(203,227)] = {64,0}, + [I(204,227)] = {64,0}, + [I(205,227)] = {64,0}, + [I(206,227)] = {64,0}, + [I(207,227)] = {64,0}, + [I(208,227)] = {64,0}, + [I(209,227)] = {64,0}, + [I(210,227)] = {64,0}, + [I(211,227)] = {64,0}, + [I(212,227)] = {64,0}, + [I(213,227)] = {64,0}, + [I(214,227)] = {64,0}, + [I(215,227)] = {64,0}, + [I(216,227)] = {64,0}, + [I(217,227)] = {64,0}, + [I(218,227)] = {64,0}, + [I(219,227)] = {64,0}, + [I(220,227)] = {64,0}, + [I(221,227)] = {64,0}, + [I(222,227)] = {64,0}, + [I(223,227)] = {64,0}, + [I(224,227)] = {64,0}, + [I(225,227)] = {64,0}, + [I(226,227)] = {64,0}, + [I(227,227)] = {64,0}, + [I(228,227)] = {64,0}, + [I(229,227)] = {64,0}, + [I(230,227)] = {64,0}, + [I(231,227)] = {64,0}, + [I(232,227)] = {64,0}, + [I(233,227)] = {64,0}, + [I(234,227)] = {64,0}, + [I(235,227)] = {64,0}, + [I(236,227)] = {64,0}, + [I(237,227)] = {64,0}, + [I(238,227)] = {64,0}, + [I(239,227)] = {64,0}, + [I(240,227)] = {64,0}, + [I(241,227)] = {64,0}, + [I(242,227)] = {64,0}, + [I(243,227)] = {64,0}, + [I(244,227)] = {64,0}, + [I(245,227)] = {64,0}, + [I(246,227)] = {64,0}, + [I(247,227)] = {64,0}, + [I(248,227)] = {64,0}, + [I(249,227)] = {64,0}, + [I(250,227)] = {64,0}, + [I(251,227)] = {64,0}, + [I(252,227)] = {64,0}, + [I(253,227)] = {64,0}, + [I(254,227)] = {64,0}, + [I(255,227)] = {64,0}, + [I(0,228)] = {64,0}, + [I(1,228)] = {64,0}, + [I(2,228)] = {64,0}, + [I(3,228)] = {64,0}, + [I(4,228)] = {64,0}, + [I(5,228)] = {64,0}, + [I(6,228)] = {64,0}, + [I(7,228)] = {64,0}, + [I(8,228)] = {64,0}, + [I(9,228)] = {64,0}, + [I(10,228)] = {64,0}, + [I(11,228)] = {64,0}, + [I(12,228)] = {64,0}, + [I(13,228)] = {64,0}, + [I(14,228)] = {64,0}, + [I(15,228)] = {64,0}, + [I(16,228)] = {64,0}, + [I(17,228)] = {64,0}, + [I(18,228)] = {64,0}, + [I(19,228)] = {64,0}, + [I(20,228)] = {64,0}, + [I(21,228)] = {64,0}, + [I(22,228)] = {64,0}, + [I(23,228)] = {64,0}, + [I(24,228)] = {64,0}, + [I(25,228)] = {64,0}, + [I(26,228)] = {64,0}, + [I(27,228)] = {64,0}, + [I(28,228)] = {64,0}, + [I(29,228)] = {64,0}, + [I(30,228)] = {64,0}, + [I(31,228)] = {64,0}, + [I(32,228)] = {28,0x53FFFE9}, + [I(33,228)] = {X32,0xFE3FFFE9}, + [I(34,228)] = {X32,0xFE7FFFE9}, + [I(35,228)] = {64,0}, + [I(36,228)] = {64,0}, + [I(37,228)] = {28,0x57FFFE9}, + [I(38,228)] = {30,0x3E3FFFE9}, + [I(39,228)] = {64,0}, + [I(40,228)] = {X32,0xFEBFFFE9}, + [I(41,228)] = {X32,0xFEFFFFE9}, + [I(42,228)] = {30,0x3E7FFFE9}, + [I(43,228)] = {64,0}, + [I(44,228)] = {30,0x3EBFFFE9}, + [I(45,228)] = {28,0x5BFFFE9}, + [I(46,228)] = {28,0x5FFFFE9}, + [I(47,228)] = {28,0x63FFFE9}, + [I(48,228)] = {27,0x3FFFE9}, + [I(49,228)] = {27,0x7FFFE9}, + [I(50,228)] = {27,0xBFFFE9}, + [I(51,228)] = {28,0x67FFFE9}, + [I(52,228)] = {28,0x6BFFFE9}, + [I(53,228)] = {28,0x6FFFFE9}, + [I(54,228)] = {28,0x73FFFE9}, + [I(55,228)] = {28,0x77FFFE9}, + [I(56,228)] = {28,0x7BFFFE9}, + [I(57,228)] = {28,0x7FFFFE9}, + [I(58,228)] = {29,0x173FFFE9}, + [I(59,228)] = {30,0x3EFFFFE9}, + [I(60,228)] = {64,0}, + [I(61,228)] = {28,0x83FFFE9}, + [I(62,228)] = {64,0}, + [I(63,228)] = {X32,0xFF3FFFE9}, + [I(64,228)] = {64,0}, + [I(65,228)] = {28,0x87FFFE9}, + [I(66,228)] = {29,0x177FFFE9}, + [I(67,228)] = {29,0x17BFFFE9}, + [I(68,228)] = {29,0x17FFFFE9}, + [I(69,228)] = {29,0x183FFFE9}, + [I(70,228)] = {29,0x187FFFE9}, + [I(71,228)] = {29,0x18BFFFE9}, + [I(72,228)] = {29,0x18FFFFE9}, + [I(73,228)] = {29,0x193FFFE9}, + [I(74,228)] = {29,0x197FFFE9}, + [I(75,228)] = {29,0x19BFFFE9}, + [I(76,228)] = {29,0x19FFFFE9}, + [I(77,228)] = {29,0x1A3FFFE9}, + [I(78,228)] = {29,0x1A7FFFE9}, + [I(79,228)] = {29,0x1ABFFFE9}, + [I(80,228)] = {29,0x1AFFFFE9}, + [I(81,228)] = {29,0x1B3FFFE9}, + [I(82,228)] = {29,0x1B7FFFE9}, + [I(83,228)] = {29,0x1BBFFFE9}, + [I(84,228)] = {29,0x1BFFFFE9}, + [I(85,228)] = {29,0x1C3FFFE9}, + [I(86,228)] = {29,0x1C7FFFE9}, + [I(87,228)] = {29,0x1CBFFFE9}, + [I(88,228)] = {30,0x3F3FFFE9}, + [I(89,228)] = {29,0x1CFFFFE9}, + [I(90,228)] = {30,0x3F7FFFE9}, + [I(91,228)] = {64,0}, + [I(92,228)] = {64,0}, + [I(93,228)] = {64,0}, + [I(94,228)] = {64,0}, + [I(95,228)] = {28,0x8BFFFE9}, + [I(96,228)] = {64,0}, + [I(97,228)] = {27,0xFFFFE9}, + [I(98,228)] = {28,0x8FFFFE9}, + [I(99,228)] = {27,0x13FFFE9}, + [I(100,228)] = {28,0x93FFFE9}, + [I(101,228)] = {27,0x17FFFE9}, + [I(102,228)] = {28,0x97FFFE9}, + [I(103,228)] = {28,0x9BFFFE9}, + [I(104,228)] = {28,0x9FFFFE9}, + [I(105,228)] = {27,0x1BFFFE9}, + [I(106,228)] = {29,0x1D3FFFE9}, + [I(107,228)] = {29,0x1D7FFFE9}, + [I(108,228)] = {28,0xA3FFFE9}, + [I(109,228)] = {28,0xA7FFFE9}, + [I(110,228)] = {28,0xABFFFE9}, + [I(111,228)] = {27,0x1FFFFE9}, + [I(112,228)] = {28,0xAFFFFE9}, + [I(113,228)] = {29,0x1DBFFFE9}, + [I(114,228)] = {28,0xB3FFFE9}, + [I(115,228)] = {27,0x23FFFE9}, + [I(116,228)] = {27,0x27FFFE9}, + [I(117,228)] = {28,0xB7FFFE9}, + [I(118,228)] = {29,0x1DFFFFE9}, + [I(119,228)] = {29,0x1E3FFFE9}, + [I(120,228)] = {29,0x1E7FFFE9}, + [I(121,228)] = {29,0x1EBFFFE9}, + [I(122,228)] = {29,0x1EFFFFE9}, + [I(123,228)] = {64,0}, + [I(124,228)] = {64,0}, + [I(125,228)] = {64,0}, + [I(126,228)] = {64,0}, + [I(127,228)] = {64,0}, + [I(128,228)] = {64,0}, + [I(129,228)] = {64,0}, + [I(130,228)] = {64,0}, + [I(131,228)] = {64,0}, + [I(132,228)] = {64,0}, + [I(133,228)] = {64,0}, + [I(134,228)] = {64,0}, + [I(135,228)] = {64,0}, + [I(136,228)] = {64,0}, + [I(137,228)] = {64,0}, + [I(138,228)] = {64,0}, + [I(139,228)] = {64,0}, + [I(140,228)] = {64,0}, + [I(141,228)] = {64,0}, + [I(142,228)] = {64,0}, + [I(143,228)] = {64,0}, + [I(144,228)] = {64,0}, + [I(145,228)] = {64,0}, + [I(146,228)] = {64,0}, + [I(147,228)] = {64,0}, + [I(148,228)] = {64,0}, + [I(149,228)] = {64,0}, + [I(150,228)] = {64,0}, + [I(151,228)] = {64,0}, + [I(152,228)] = {64,0}, + [I(153,228)] = {64,0}, + [I(154,228)] = {64,0}, + [I(155,228)] = {64,0}, + [I(156,228)] = {64,0}, + [I(157,228)] = {64,0}, + [I(158,228)] = {64,0}, + [I(159,228)] = {64,0}, + [I(160,228)] = {64,0}, + [I(161,228)] = {64,0}, + [I(162,228)] = {64,0}, + [I(163,228)] = {64,0}, + [I(164,228)] = {64,0}, + [I(165,228)] = {64,0}, + [I(166,228)] = {64,0}, + [I(167,228)] = {64,0}, + [I(168,228)] = {64,0}, + [I(169,228)] = {64,0}, + [I(170,228)] = {64,0}, + [I(171,228)] = {64,0}, + [I(172,228)] = {64,0}, + [I(173,228)] = {64,0}, + [I(174,228)] = {64,0}, + [I(175,228)] = {64,0}, + [I(176,228)] = {64,0}, + [I(177,228)] = {64,0}, + [I(178,228)] = {64,0}, + [I(179,228)] = {64,0}, + [I(180,228)] = {64,0}, + [I(181,228)] = {64,0}, + [I(182,228)] = {64,0}, + [I(183,228)] = {64,0}, + [I(184,228)] = {64,0}, + [I(185,228)] = {64,0}, + [I(186,228)] = {64,0}, + [I(187,228)] = {64,0}, + [I(188,228)] = {64,0}, + [I(189,228)] = {64,0}, + [I(190,228)] = {64,0}, + [I(191,228)] = {64,0}, + [I(192,228)] = {64,0}, + [I(193,228)] = {64,0}, + [I(194,228)] = {64,0}, + [I(195,228)] = {64,0}, + [I(196,228)] = {64,0}, + [I(197,228)] = {64,0}, + [I(198,228)] = {64,0}, + [I(199,228)] = {64,0}, + [I(200,228)] = {64,0}, + [I(201,228)] = {64,0}, + [I(202,228)] = {64,0}, + [I(203,228)] = {64,0}, + [I(204,228)] = {64,0}, + [I(205,228)] = {64,0}, + [I(206,228)] = {64,0}, + [I(207,228)] = {64,0}, + [I(208,228)] = {64,0}, + [I(209,228)] = {64,0}, + [I(210,228)] = {64,0}, + [I(211,228)] = {64,0}, + [I(212,228)] = {64,0}, + [I(213,228)] = {64,0}, + [I(214,228)] = {64,0}, + [I(215,228)] = {64,0}, + [I(216,228)] = {64,0}, + [I(217,228)] = {64,0}, + [I(218,228)] = {64,0}, + [I(219,228)] = {64,0}, + [I(220,228)] = {64,0}, + [I(221,228)] = {64,0}, + [I(222,228)] = {64,0}, + [I(223,228)] = {64,0}, + [I(224,228)] = {64,0}, + [I(225,228)] = {64,0}, + [I(226,228)] = {64,0}, + [I(227,228)] = {64,0}, + [I(228,228)] = {64,0}, + [I(229,228)] = {64,0}, + [I(230,228)] = {64,0}, + [I(231,228)] = {64,0}, + [I(232,228)] = {64,0}, + [I(233,228)] = {64,0}, + [I(234,228)] = {64,0}, + [I(235,228)] = {64,0}, + [I(236,228)] = {64,0}, + [I(237,228)] = {64,0}, + [I(238,228)] = {64,0}, + [I(239,228)] = {64,0}, + [I(240,228)] = {64,0}, + [I(241,228)] = {64,0}, + [I(242,228)] = {64,0}, + [I(243,228)] = {64,0}, + [I(244,228)] = {64,0}, + [I(245,228)] = {64,0}, + [I(246,228)] = {64,0}, + [I(247,228)] = {64,0}, + [I(248,228)] = {64,0}, + [I(249,228)] = {64,0}, + [I(250,228)] = {64,0}, + [I(251,228)] = {64,0}, + [I(252,228)] = {64,0}, + [I(253,228)] = {64,0}, + [I(254,228)] = {64,0}, + [I(255,228)] = {64,0}, + [I(0,229)] = {64,0}, + [I(1,229)] = {64,0}, + [I(2,229)] = {64,0}, + [I(3,229)] = {64,0}, + [I(4,229)] = {64,0}, + [I(5,229)] = {64,0}, + [I(6,229)] = {64,0}, + [I(7,229)] = {64,0}, + [I(8,229)] = {64,0}, + [I(9,229)] = {64,0}, + [I(10,229)] = {64,0}, + [I(11,229)] = {64,0}, + [I(12,229)] = {64,0}, + [I(13,229)] = {64,0}, + [I(14,229)] = {64,0}, + [I(15,229)] = {64,0}, + [I(16,229)] = {64,0}, + [I(17,229)] = {64,0}, + [I(18,229)] = {64,0}, + [I(19,229)] = {64,0}, + [I(20,229)] = {64,0}, + [I(21,229)] = {64,0}, + [I(22,229)] = {64,0}, + [I(23,229)] = {64,0}, + [I(24,229)] = {64,0}, + [I(25,229)] = {64,0}, + [I(26,229)] = {64,0}, + [I(27,229)] = {64,0}, + [I(28,229)] = {64,0}, + [I(29,229)] = {64,0}, + [I(30,229)] = {64,0}, + [I(31,229)] = {64,0}, + [I(32,229)] = {27,0x29FFFE7}, + [I(33,229)] = {31,0x7F1FFFE7}, + [I(34,229)] = {31,0x7F3FFFE7}, + [I(35,229)] = {64,0}, + [I(36,229)] = {64,0}, + [I(37,229)] = {27,0x2BFFFE7}, + [I(38,229)] = {29,0x1F1FFFE7}, + [I(39,229)] = {X32,0xFF5FFFE7}, + [I(40,229)] = {31,0x7F5FFFE7}, + [I(41,229)] = {31,0x7F7FFFE7}, + [I(42,229)] = {29,0x1F3FFFE7}, + [I(43,229)] = {X32,0xFF7FFFE7}, + [I(44,229)] = {29,0x1F5FFFE7}, + [I(45,229)] = {27,0x2DFFFE7}, + [I(46,229)] = {27,0x2FFFFE7}, + [I(47,229)] = {27,0x31FFFE7}, + [I(48,229)] = {26,0x1FFFE7}, + [I(49,229)] = {26,0x3FFFE7}, + [I(50,229)] = {26,0x5FFFE7}, + [I(51,229)] = {27,0x33FFFE7}, + [I(52,229)] = {27,0x35FFFE7}, + [I(53,229)] = {27,0x37FFFE7}, + [I(54,229)] = {27,0x39FFFE7}, + [I(55,229)] = {27,0x3BFFFE7}, + [I(56,229)] = {27,0x3DFFFE7}, + [I(57,229)] = {27,0x3FFFFE7}, + [I(58,229)] = {28,0xB9FFFE7}, + [I(59,229)] = {29,0x1F7FFFE7}, + [I(60,229)] = {64,0}, + [I(61,229)] = {27,0x41FFFE7}, + [I(62,229)] = {64,0}, + [I(63,229)] = {31,0x7F9FFFE7}, + [I(64,229)] = {64,0}, + [I(65,229)] = {27,0x43FFFE7}, + [I(66,229)] = {28,0xBBFFFE7}, + [I(67,229)] = {28,0xBDFFFE7}, + [I(68,229)] = {28,0xBFFFFE7}, + [I(69,229)] = {28,0xC1FFFE7}, + [I(70,229)] = {28,0xC3FFFE7}, + [I(71,229)] = {28,0xC5FFFE7}, + [I(72,229)] = {28,0xC7FFFE7}, + [I(73,229)] = {28,0xC9FFFE7}, + [I(74,229)] = {28,0xCBFFFE7}, + [I(75,229)] = {28,0xCDFFFE7}, + [I(76,229)] = {28,0xCFFFFE7}, + [I(77,229)] = {28,0xD1FFFE7}, + [I(78,229)] = {28,0xD3FFFE7}, + [I(79,229)] = {28,0xD5FFFE7}, + [I(80,229)] = {28,0xD7FFFE7}, + [I(81,229)] = {28,0xD9FFFE7}, + [I(82,229)] = {28,0xDBFFFE7}, + [I(83,229)] = {28,0xDDFFFE7}, + [I(84,229)] = {28,0xDFFFFE7}, + [I(85,229)] = {28,0xE1FFFE7}, + [I(86,229)] = {28,0xE3FFFE7}, + [I(87,229)] = {28,0xE5FFFE7}, + [I(88,229)] = {29,0x1F9FFFE7}, + [I(89,229)] = {28,0xE7FFFE7}, + [I(90,229)] = {29,0x1FBFFFE7}, + [I(91,229)] = {64,0}, + [I(92,229)] = {64,0}, + [I(93,229)] = {64,0}, + [I(94,229)] = {64,0}, + [I(95,229)] = {27,0x45FFFE7}, + [I(96,229)] = {64,0}, + [I(97,229)] = {26,0x7FFFE7}, + [I(98,229)] = {27,0x47FFFE7}, + [I(99,229)] = {26,0x9FFFE7}, + [I(100,229)] = {27,0x49FFFE7}, + [I(101,229)] = {26,0xBFFFE7}, + [I(102,229)] = {27,0x4BFFFE7}, + [I(103,229)] = {27,0x4DFFFE7}, + [I(104,229)] = {27,0x4FFFFE7}, + [I(105,229)] = {26,0xDFFFE7}, + [I(106,229)] = {28,0xE9FFFE7}, + [I(107,229)] = {28,0xEBFFFE7}, + [I(108,229)] = {27,0x51FFFE7}, + [I(109,229)] = {27,0x53FFFE7}, + [I(110,229)] = {27,0x55FFFE7}, + [I(111,229)] = {26,0xFFFFE7}, + [I(112,229)] = {27,0x57FFFE7}, + [I(113,229)] = {28,0xEDFFFE7}, + [I(114,229)] = {27,0x59FFFE7}, + [I(115,229)] = {26,0x11FFFE7}, + [I(116,229)] = {26,0x13FFFE7}, + [I(117,229)] = {27,0x5BFFFE7}, + [I(118,229)] = {28,0xEFFFFE7}, + [I(119,229)] = {28,0xF1FFFE7}, + [I(120,229)] = {28,0xF3FFFE7}, + [I(121,229)] = {28,0xF5FFFE7}, + [I(122,229)] = {28,0xF7FFFE7}, + [I(123,229)] = {64,0}, + [I(124,229)] = {X32,0xFF9FFFE7}, + [I(125,229)] = {64,0}, + [I(126,229)] = {64,0}, + [I(127,229)] = {64,0}, + [I(128,229)] = {64,0}, + [I(129,229)] = {64,0}, + [I(130,229)] = {64,0}, + [I(131,229)] = {64,0}, + [I(132,229)] = {64,0}, + [I(133,229)] = {64,0}, + [I(134,229)] = {64,0}, + [I(135,229)] = {64,0}, + [I(136,229)] = {64,0}, + [I(137,229)] = {64,0}, + [I(138,229)] = {64,0}, + [I(139,229)] = {64,0}, + [I(140,229)] = {64,0}, + [I(141,229)] = {64,0}, + [I(142,229)] = {64,0}, + [I(143,229)] = {64,0}, + [I(144,229)] = {64,0}, + [I(145,229)] = {64,0}, + [I(146,229)] = {64,0}, + [I(147,229)] = {64,0}, + [I(148,229)] = {64,0}, + [I(149,229)] = {64,0}, + [I(150,229)] = {64,0}, + [I(151,229)] = {64,0}, + [I(152,229)] = {64,0}, + [I(153,229)] = {64,0}, + [I(154,229)] = {64,0}, + [I(155,229)] = {64,0}, + [I(156,229)] = {64,0}, + [I(157,229)] = {64,0}, + [I(158,229)] = {64,0}, + [I(159,229)] = {64,0}, + [I(160,229)] = {64,0}, + [I(161,229)] = {64,0}, + [I(162,229)] = {64,0}, + [I(163,229)] = {64,0}, + [I(164,229)] = {64,0}, + [I(165,229)] = {64,0}, + [I(166,229)] = {64,0}, + [I(167,229)] = {64,0}, + [I(168,229)] = {64,0}, + [I(169,229)] = {64,0}, + [I(170,229)] = {64,0}, + [I(171,229)] = {64,0}, + [I(172,229)] = {64,0}, + [I(173,229)] = {64,0}, + [I(174,229)] = {64,0}, + [I(175,229)] = {64,0}, + [I(176,229)] = {64,0}, + [I(177,229)] = {64,0}, + [I(178,229)] = {64,0}, + [I(179,229)] = {64,0}, + [I(180,229)] = {64,0}, + [I(181,229)] = {64,0}, + [I(182,229)] = {64,0}, + [I(183,229)] = {64,0}, + [I(184,229)] = {64,0}, + [I(185,229)] = {64,0}, + [I(186,229)] = {64,0}, + [I(187,229)] = {64,0}, + [I(188,229)] = {64,0}, + [I(189,229)] = {64,0}, + [I(190,229)] = {64,0}, + [I(191,229)] = {64,0}, + [I(192,229)] = {64,0}, + [I(193,229)] = {64,0}, + [I(194,229)] = {64,0}, + [I(195,229)] = {64,0}, + [I(196,229)] = {64,0}, + [I(197,229)] = {64,0}, + [I(198,229)] = {64,0}, + [I(199,229)] = {64,0}, + [I(200,229)] = {64,0}, + [I(201,229)] = {64,0}, + [I(202,229)] = {64,0}, + [I(203,229)] = {64,0}, + [I(204,229)] = {64,0}, + [I(205,229)] = {64,0}, + [I(206,229)] = {64,0}, + [I(207,229)] = {64,0}, + [I(208,229)] = {64,0}, + [I(209,229)] = {64,0}, + [I(210,229)] = {64,0}, + [I(211,229)] = {64,0}, + [I(212,229)] = {64,0}, + [I(213,229)] = {64,0}, + [I(214,229)] = {64,0}, + [I(215,229)] = {64,0}, + [I(216,229)] = {64,0}, + [I(217,229)] = {64,0}, + [I(218,229)] = {64,0}, + [I(219,229)] = {64,0}, + [I(220,229)] = {64,0}, + [I(221,229)] = {64,0}, + [I(222,229)] = {64,0}, + [I(223,229)] = {64,0}, + [I(224,229)] = {64,0}, + [I(225,229)] = {64,0}, + [I(226,229)] = {64,0}, + [I(227,229)] = {64,0}, + [I(228,229)] = {64,0}, + [I(229,229)] = {64,0}, + [I(230,229)] = {64,0}, + [I(231,229)] = {64,0}, + [I(232,229)] = {64,0}, + [I(233,229)] = {64,0}, + [I(234,229)] = {64,0}, + [I(235,229)] = {64,0}, + [I(236,229)] = {64,0}, + [I(237,229)] = {64,0}, + [I(238,229)] = {64,0}, + [I(239,229)] = {64,0}, + [I(240,229)] = {64,0}, + [I(241,229)] = {64,0}, + [I(242,229)] = {64,0}, + [I(243,229)] = {64,0}, + [I(244,229)] = {64,0}, + [I(245,229)] = {64,0}, + [I(246,229)] = {64,0}, + [I(247,229)] = {64,0}, + [I(248,229)] = {64,0}, + [I(249,229)] = {64,0}, + [I(250,229)] = {64,0}, + [I(251,229)] = {64,0}, + [I(252,229)] = {64,0}, + [I(253,229)] = {64,0}, + [I(254,229)] = {64,0}, + [I(255,229)] = {64,0}, + [I(0,230)] = {64,0}, + [I(1,230)] = {64,0}, + [I(2,230)] = {64,0}, + [I(3,230)] = {64,0}, + [I(4,230)] = {64,0}, + [I(5,230)] = {64,0}, + [I(6,230)] = {64,0}, + [I(7,230)] = {64,0}, + [I(8,230)] = {64,0}, + [I(9,230)] = {64,0}, + [I(10,230)] = {64,0}, + [I(11,230)] = {64,0}, + [I(12,230)] = {64,0}, + [I(13,230)] = {64,0}, + [I(14,230)] = {64,0}, + [I(15,230)] = {64,0}, + [I(16,230)] = {64,0}, + [I(17,230)] = {64,0}, + [I(18,230)] = {64,0}, + [I(19,230)] = {64,0}, + [I(20,230)] = {64,0}, + [I(21,230)] = {64,0}, + [I(22,230)] = {64,0}, + [I(23,230)] = {64,0}, + [I(24,230)] = {64,0}, + [I(25,230)] = {64,0}, + [I(26,230)] = {64,0}, + [I(27,230)] = {64,0}, + [I(28,230)] = {64,0}, + [I(29,230)] = {64,0}, + [I(30,230)] = {64,0}, + [I(31,230)] = {64,0}, + [I(32,230)] = {27,0x29FFFE8}, + [I(33,230)] = {31,0x7F1FFFE8}, + [I(34,230)] = {31,0x7F3FFFE8}, + [I(35,230)] = {64,0}, + [I(36,230)] = {64,0}, + [I(37,230)] = {27,0x2BFFFE8}, + [I(38,230)] = {29,0x1F1FFFE8}, + [I(39,230)] = {X32,0xFF5FFFE8}, + [I(40,230)] = {31,0x7F5FFFE8}, + [I(41,230)] = {31,0x7F7FFFE8}, + [I(42,230)] = {29,0x1F3FFFE8}, + [I(43,230)] = {X32,0xFF7FFFE8}, + [I(44,230)] = {29,0x1F5FFFE8}, + [I(45,230)] = {27,0x2DFFFE8}, + [I(46,230)] = {27,0x2FFFFE8}, + [I(47,230)] = {27,0x31FFFE8}, + [I(48,230)] = {26,0x1FFFE8}, + [I(49,230)] = {26,0x3FFFE8}, + [I(50,230)] = {26,0x5FFFE8}, + [I(51,230)] = {27,0x33FFFE8}, + [I(52,230)] = {27,0x35FFFE8}, + [I(53,230)] = {27,0x37FFFE8}, + [I(54,230)] = {27,0x39FFFE8}, + [I(55,230)] = {27,0x3BFFFE8}, + [I(56,230)] = {27,0x3DFFFE8}, + [I(57,230)] = {27,0x3FFFFE8}, + [I(58,230)] = {28,0xB9FFFE8}, + [I(59,230)] = {29,0x1F7FFFE8}, + [I(60,230)] = {64,0}, + [I(61,230)] = {27,0x41FFFE8}, + [I(62,230)] = {64,0}, + [I(63,230)] = {31,0x7F9FFFE8}, + [I(64,230)] = {64,0}, + [I(65,230)] = {27,0x43FFFE8}, + [I(66,230)] = {28,0xBBFFFE8}, + [I(67,230)] = {28,0xBDFFFE8}, + [I(68,230)] = {28,0xBFFFFE8}, + [I(69,230)] = {28,0xC1FFFE8}, + [I(70,230)] = {28,0xC3FFFE8}, + [I(71,230)] = {28,0xC5FFFE8}, + [I(72,230)] = {28,0xC7FFFE8}, + [I(73,230)] = {28,0xC9FFFE8}, + [I(74,230)] = {28,0xCBFFFE8}, + [I(75,230)] = {28,0xCDFFFE8}, + [I(76,230)] = {28,0xCFFFFE8}, + [I(77,230)] = {28,0xD1FFFE8}, + [I(78,230)] = {28,0xD3FFFE8}, + [I(79,230)] = {28,0xD5FFFE8}, + [I(80,230)] = {28,0xD7FFFE8}, + [I(81,230)] = {28,0xD9FFFE8}, + [I(82,230)] = {28,0xDBFFFE8}, + [I(83,230)] = {28,0xDDFFFE8}, + [I(84,230)] = {28,0xDFFFFE8}, + [I(85,230)] = {28,0xE1FFFE8}, + [I(86,230)] = {28,0xE3FFFE8}, + [I(87,230)] = {28,0xE5FFFE8}, + [I(88,230)] = {29,0x1F9FFFE8}, + [I(89,230)] = {28,0xE7FFFE8}, + [I(90,230)] = {29,0x1FBFFFE8}, + [I(91,230)] = {64,0}, + [I(92,230)] = {64,0}, + [I(93,230)] = {64,0}, + [I(94,230)] = {64,0}, + [I(95,230)] = {27,0x45FFFE8}, + [I(96,230)] = {64,0}, + [I(97,230)] = {26,0x7FFFE8}, + [I(98,230)] = {27,0x47FFFE8}, + [I(99,230)] = {26,0x9FFFE8}, + [I(100,230)] = {27,0x49FFFE8}, + [I(101,230)] = {26,0xBFFFE8}, + [I(102,230)] = {27,0x4BFFFE8}, + [I(103,230)] = {27,0x4DFFFE8}, + [I(104,230)] = {27,0x4FFFFE8}, + [I(105,230)] = {26,0xDFFFE8}, + [I(106,230)] = {28,0xE9FFFE8}, + [I(107,230)] = {28,0xEBFFFE8}, + [I(108,230)] = {27,0x51FFFE8}, + [I(109,230)] = {27,0x53FFFE8}, + [I(110,230)] = {27,0x55FFFE8}, + [I(111,230)] = {26,0xFFFFE8}, + [I(112,230)] = {27,0x57FFFE8}, + [I(113,230)] = {28,0xEDFFFE8}, + [I(114,230)] = {27,0x59FFFE8}, + [I(115,230)] = {26,0x11FFFE8}, + [I(116,230)] = {26,0x13FFFE8}, + [I(117,230)] = {27,0x5BFFFE8}, + [I(118,230)] = {28,0xEFFFFE8}, + [I(119,230)] = {28,0xF1FFFE8}, + [I(120,230)] = {28,0xF3FFFE8}, + [I(121,230)] = {28,0xF5FFFE8}, + [I(122,230)] = {28,0xF7FFFE8}, + [I(123,230)] = {64,0}, + [I(124,230)] = {X32,0xFF9FFFE8}, + [I(125,230)] = {64,0}, + [I(126,230)] = {64,0}, + [I(127,230)] = {64,0}, + [I(128,230)] = {64,0}, + [I(129,230)] = {64,0}, + [I(130,230)] = {64,0}, + [I(131,230)] = {64,0}, + [I(132,230)] = {64,0}, + [I(133,230)] = {64,0}, + [I(134,230)] = {64,0}, + [I(135,230)] = {64,0}, + [I(136,230)] = {64,0}, + [I(137,230)] = {64,0}, + [I(138,230)] = {64,0}, + [I(139,230)] = {64,0}, + [I(140,230)] = {64,0}, + [I(141,230)] = {64,0}, + [I(142,230)] = {64,0}, + [I(143,230)] = {64,0}, + [I(144,230)] = {64,0}, + [I(145,230)] = {64,0}, + [I(146,230)] = {64,0}, + [I(147,230)] = {64,0}, + [I(148,230)] = {64,0}, + [I(149,230)] = {64,0}, + [I(150,230)] = {64,0}, + [I(151,230)] = {64,0}, + [I(152,230)] = {64,0}, + [I(153,230)] = {64,0}, + [I(154,230)] = {64,0}, + [I(155,230)] = {64,0}, + [I(156,230)] = {64,0}, + [I(157,230)] = {64,0}, + [I(158,230)] = {64,0}, + [I(159,230)] = {64,0}, + [I(160,230)] = {64,0}, + [I(161,230)] = {64,0}, + [I(162,230)] = {64,0}, + [I(163,230)] = {64,0}, + [I(164,230)] = {64,0}, + [I(165,230)] = {64,0}, + [I(166,230)] = {64,0}, + [I(167,230)] = {64,0}, + [I(168,230)] = {64,0}, + [I(169,230)] = {64,0}, + [I(170,230)] = {64,0}, + [I(171,230)] = {64,0}, + [I(172,230)] = {64,0}, + [I(173,230)] = {64,0}, + [I(174,230)] = {64,0}, + [I(175,230)] = {64,0}, + [I(176,230)] = {64,0}, + [I(177,230)] = {64,0}, + [I(178,230)] = {64,0}, + [I(179,230)] = {64,0}, + [I(180,230)] = {64,0}, + [I(181,230)] = {64,0}, + [I(182,230)] = {64,0}, + [I(183,230)] = {64,0}, + [I(184,230)] = {64,0}, + [I(185,230)] = {64,0}, + [I(186,230)] = {64,0}, + [I(187,230)] = {64,0}, + [I(188,230)] = {64,0}, + [I(189,230)] = {64,0}, + [I(190,230)] = {64,0}, + [I(191,230)] = {64,0}, + [I(192,230)] = {64,0}, + [I(193,230)] = {64,0}, + [I(194,230)] = {64,0}, + [I(195,230)] = {64,0}, + [I(196,230)] = {64,0}, + [I(197,230)] = {64,0}, + [I(198,230)] = {64,0}, + [I(199,230)] = {64,0}, + [I(200,230)] = {64,0}, + [I(201,230)] = {64,0}, + [I(202,230)] = {64,0}, + [I(203,230)] = {64,0}, + [I(204,230)] = {64,0}, + [I(205,230)] = {64,0}, + [I(206,230)] = {64,0}, + [I(207,230)] = {64,0}, + [I(208,230)] = {64,0}, + [I(209,230)] = {64,0}, + [I(210,230)] = {64,0}, + [I(211,230)] = {64,0}, + [I(212,230)] = {64,0}, + [I(213,230)] = {64,0}, + [I(214,230)] = {64,0}, + [I(215,230)] = {64,0}, + [I(216,230)] = {64,0}, + [I(217,230)] = {64,0}, + [I(218,230)] = {64,0}, + [I(219,230)] = {64,0}, + [I(220,230)] = {64,0}, + [I(221,230)] = {64,0}, + [I(222,230)] = {64,0}, + [I(223,230)] = {64,0}, + [I(224,230)] = {64,0}, + [I(225,230)] = {64,0}, + [I(226,230)] = {64,0}, + [I(227,230)] = {64,0}, + [I(228,230)] = {64,0}, + [I(229,230)] = {64,0}, + [I(230,230)] = {64,0}, + [I(231,230)] = {64,0}, + [I(232,230)] = {64,0}, + [I(233,230)] = {64,0}, + [I(234,230)] = {64,0}, + [I(235,230)] = {64,0}, + [I(236,230)] = {64,0}, + [I(237,230)] = {64,0}, + [I(238,230)] = {64,0}, + [I(239,230)] = {64,0}, + [I(240,230)] = {64,0}, + [I(241,230)] = {64,0}, + [I(242,230)] = {64,0}, + [I(243,230)] = {64,0}, + [I(244,230)] = {64,0}, + [I(245,230)] = {64,0}, + [I(246,230)] = {64,0}, + [I(247,230)] = {64,0}, + [I(248,230)] = {64,0}, + [I(249,230)] = {64,0}, + [I(250,230)] = {64,0}, + [I(251,230)] = {64,0}, + [I(252,230)] = {64,0}, + [I(253,230)] = {64,0}, + [I(254,230)] = {64,0}, + [I(255,230)] = {64,0}, + [I(0,231)] = {64,0}, + [I(1,231)] = {64,0}, + [I(2,231)] = {64,0}, + [I(3,231)] = {64,0}, + [I(4,231)] = {64,0}, + [I(5,231)] = {64,0}, + [I(6,231)] = {64,0}, + [I(7,231)] = {64,0}, + [I(8,231)] = {64,0}, + [I(9,231)] = {64,0}, + [I(10,231)] = {64,0}, + [I(11,231)] = {64,0}, + [I(12,231)] = {64,0}, + [I(13,231)] = {64,0}, + [I(14,231)] = {64,0}, + [I(15,231)] = {64,0}, + [I(16,231)] = {64,0}, + [I(17,231)] = {64,0}, + [I(18,231)] = {64,0}, + [I(19,231)] = {64,0}, + [I(20,231)] = {64,0}, + [I(21,231)] = {64,0}, + [I(22,231)] = {64,0}, + [I(23,231)] = {64,0}, + [I(24,231)] = {64,0}, + [I(25,231)] = {64,0}, + [I(26,231)] = {64,0}, + [I(27,231)] = {64,0}, + [I(28,231)] = {64,0}, + [I(29,231)] = {64,0}, + [I(30,231)] = {64,0}, + [I(31,231)] = {64,0}, + [I(32,231)] = {29,0xA7FFFF3}, + [I(33,231)] = {64,0}, + [I(34,231)] = {64,0}, + [I(35,231)] = {64,0}, + [I(36,231)] = {64,0}, + [I(37,231)] = {29,0xAFFFFF3}, + [I(38,231)] = {31,0x7C7FFFF3}, + [I(39,231)] = {64,0}, + [I(40,231)] = {64,0}, + [I(41,231)] = {64,0}, + [I(42,231)] = {31,0x7CFFFFF3}, + [I(43,231)] = {64,0}, + [I(44,231)] = {31,0x7D7FFFF3}, + [I(45,231)] = {29,0xB7FFFF3}, + [I(46,231)] = {29,0xBFFFFF3}, + [I(47,231)] = {29,0xC7FFFF3}, + [I(48,231)] = {28,0x7FFFF3}, + [I(49,231)] = {28,0xFFFFF3}, + [I(50,231)] = {28,0x17FFFF3}, + [I(51,231)] = {29,0xCFFFFF3}, + [I(52,231)] = {29,0xD7FFFF3}, + [I(53,231)] = {29,0xDFFFFF3}, + [I(54,231)] = {29,0xE7FFFF3}, + [I(55,231)] = {29,0xEFFFFF3}, + [I(56,231)] = {29,0xF7FFFF3}, + [I(57,231)] = {29,0xFFFFFF3}, + [I(58,231)] = {30,0x2E7FFFF3}, + [I(59,231)] = {31,0x7DFFFFF3}, + [I(60,231)] = {64,0}, + [I(61,231)] = {29,0x107FFFF3}, + [I(62,231)] = {64,0}, + [I(63,231)] = {64,0}, + [I(64,231)] = {64,0}, + [I(65,231)] = {29,0x10FFFFF3}, + [I(66,231)] = {30,0x2EFFFFF3}, + [I(67,231)] = {30,0x2F7FFFF3}, + [I(68,231)] = {30,0x2FFFFFF3}, + [I(69,231)] = {30,0x307FFFF3}, + [I(70,231)] = {30,0x30FFFFF3}, + [I(71,231)] = {30,0x317FFFF3}, + [I(72,231)] = {30,0x31FFFFF3}, + [I(73,231)] = {30,0x327FFFF3}, + [I(74,231)] = {30,0x32FFFFF3}, + [I(75,231)] = {30,0x337FFFF3}, + [I(76,231)] = {30,0x33FFFFF3}, + [I(77,231)] = {30,0x347FFFF3}, + [I(78,231)] = {30,0x34FFFFF3}, + [I(79,231)] = {30,0x357FFFF3}, + [I(80,231)] = {30,0x35FFFFF3}, + [I(81,231)] = {30,0x367FFFF3}, + [I(82,231)] = {30,0x36FFFFF3}, + [I(83,231)] = {30,0x377FFFF3}, + [I(84,231)] = {30,0x37FFFFF3}, + [I(85,231)] = {30,0x387FFFF3}, + [I(86,231)] = {30,0x38FFFFF3}, + [I(87,231)] = {30,0x397FFFF3}, + [I(88,231)] = {31,0x7E7FFFF3}, + [I(89,231)] = {30,0x39FFFFF3}, + [I(90,231)] = {31,0x7EFFFFF3}, + [I(91,231)] = {64,0}, + [I(92,231)] = {64,0}, + [I(93,231)] = {64,0}, + [I(94,231)] = {64,0}, + [I(95,231)] = {29,0x117FFFF3}, + [I(96,231)] = {64,0}, + [I(97,231)] = {28,0x1FFFFF3}, + [I(98,231)] = {29,0x11FFFFF3}, + [I(99,231)] = {28,0x27FFFF3}, + [I(100,231)] = {29,0x127FFFF3}, + [I(101,231)] = {28,0x2FFFFF3}, + [I(102,231)] = {29,0x12FFFFF3}, + [I(103,231)] = {29,0x137FFFF3}, + [I(104,231)] = {29,0x13FFFFF3}, + [I(105,231)] = {28,0x37FFFF3}, + [I(106,231)] = {30,0x3A7FFFF3}, + [I(107,231)] = {30,0x3AFFFFF3}, + [I(108,231)] = {29,0x147FFFF3}, + [I(109,231)] = {29,0x14FFFFF3}, + [I(110,231)] = {29,0x157FFFF3}, + [I(111,231)] = {28,0x3FFFFF3}, + [I(112,231)] = {29,0x15FFFFF3}, + [I(113,231)] = {30,0x3B7FFFF3}, + [I(114,231)] = {29,0x167FFFF3}, + [I(115,231)] = {28,0x47FFFF3}, + [I(116,231)] = {28,0x4FFFFF3}, + [I(117,231)] = {29,0x16FFFFF3}, + [I(118,231)] = {30,0x3BFFFFF3}, + [I(119,231)] = {30,0x3C7FFFF3}, + [I(120,231)] = {30,0x3CFFFFF3}, + [I(121,231)] = {30,0x3D7FFFF3}, + [I(122,231)] = {30,0x3DFFFFF3}, + [I(123,231)] = {64,0}, + [I(124,231)] = {64,0}, + [I(125,231)] = {64,0}, + [I(126,231)] = {64,0}, + [I(127,231)] = {64,0}, + [I(128,231)] = {64,0}, + [I(129,231)] = {64,0}, + [I(130,231)] = {64,0}, + [I(131,231)] = {64,0}, + [I(132,231)] = {64,0}, + [I(133,231)] = {64,0}, + [I(134,231)] = {64,0}, + [I(135,231)] = {64,0}, + [I(136,231)] = {64,0}, + [I(137,231)] = {64,0}, + [I(138,231)] = {64,0}, + [I(139,231)] = {64,0}, + [I(140,231)] = {64,0}, + [I(141,231)] = {64,0}, + [I(142,231)] = {64,0}, + [I(143,231)] = {64,0}, + [I(144,231)] = {64,0}, + [I(145,231)] = {64,0}, + [I(146,231)] = {64,0}, + [I(147,231)] = {64,0}, + [I(148,231)] = {64,0}, + [I(149,231)] = {64,0}, + [I(150,231)] = {64,0}, + [I(151,231)] = {64,0}, + [I(152,231)] = {64,0}, + [I(153,231)] = {64,0}, + [I(154,231)] = {64,0}, + [I(155,231)] = {64,0}, + [I(156,231)] = {64,0}, + [I(157,231)] = {64,0}, + [I(158,231)] = {64,0}, + [I(159,231)] = {64,0}, + [I(160,231)] = {64,0}, + [I(161,231)] = {64,0}, + [I(162,231)] = {64,0}, + [I(163,231)] = {64,0}, + [I(164,231)] = {64,0}, + [I(165,231)] = {64,0}, + [I(166,231)] = {64,0}, + [I(167,231)] = {64,0}, + [I(168,231)] = {64,0}, + [I(169,231)] = {64,0}, + [I(170,231)] = {64,0}, + [I(171,231)] = {64,0}, + [I(172,231)] = {64,0}, + [I(173,231)] = {64,0}, + [I(174,231)] = {64,0}, + [I(175,231)] = {64,0}, + [I(176,231)] = {64,0}, + [I(177,231)] = {64,0}, + [I(178,231)] = {64,0}, + [I(179,231)] = {64,0}, + [I(180,231)] = {64,0}, + [I(181,231)] = {64,0}, + [I(182,231)] = {64,0}, + [I(183,231)] = {64,0}, + [I(184,231)] = {64,0}, + [I(185,231)] = {64,0}, + [I(186,231)] = {64,0}, + [I(187,231)] = {64,0}, + [I(188,231)] = {64,0}, + [I(189,231)] = {64,0}, + [I(190,231)] = {64,0}, + [I(191,231)] = {64,0}, + [I(192,231)] = {64,0}, + [I(193,231)] = {64,0}, + [I(194,231)] = {64,0}, + [I(195,231)] = {64,0}, + [I(196,231)] = {64,0}, + [I(197,231)] = {64,0}, + [I(198,231)] = {64,0}, + [I(199,231)] = {64,0}, + [I(200,231)] = {64,0}, + [I(201,231)] = {64,0}, + [I(202,231)] = {64,0}, + [I(203,231)] = {64,0}, + [I(204,231)] = {64,0}, + [I(205,231)] = {64,0}, + [I(206,231)] = {64,0}, + [I(207,231)] = {64,0}, + [I(208,231)] = {64,0}, + [I(209,231)] = {64,0}, + [I(210,231)] = {64,0}, + [I(211,231)] = {64,0}, + [I(212,231)] = {64,0}, + [I(213,231)] = {64,0}, + [I(214,231)] = {64,0}, + [I(215,231)] = {64,0}, + [I(216,231)] = {64,0}, + [I(217,231)] = {64,0}, + [I(218,231)] = {64,0}, + [I(219,231)] = {64,0}, + [I(220,231)] = {64,0}, + [I(221,231)] = {64,0}, + [I(222,231)] = {64,0}, + [I(223,231)] = {64,0}, + [I(224,231)] = {64,0}, + [I(225,231)] = {64,0}, + [I(226,231)] = {64,0}, + [I(227,231)] = {64,0}, + [I(228,231)] = {64,0}, + [I(229,231)] = {64,0}, + [I(230,231)] = {64,0}, + [I(231,231)] = {64,0}, + [I(232,231)] = {64,0}, + [I(233,231)] = {64,0}, + [I(234,231)] = {64,0}, + [I(235,231)] = {64,0}, + [I(236,231)] = {64,0}, + [I(237,231)] = {64,0}, + [I(238,231)] = {64,0}, + [I(239,231)] = {64,0}, + [I(240,231)] = {64,0}, + [I(241,231)] = {64,0}, + [I(242,231)] = {64,0}, + [I(243,231)] = {64,0}, + [I(244,231)] = {64,0}, + [I(245,231)] = {64,0}, + [I(246,231)] = {64,0}, + [I(247,231)] = {64,0}, + [I(248,231)] = {64,0}, + [I(249,231)] = {64,0}, + [I(250,231)] = {64,0}, + [I(251,231)] = {64,0}, + [I(252,231)] = {64,0}, + [I(253,231)] = {64,0}, + [I(254,231)] = {64,0}, + [I(255,231)] = {64,0}, + [I(0,232)] = {64,0}, + [I(1,232)] = {64,0}, + [I(2,232)] = {64,0}, + [I(3,232)] = {64,0}, + [I(4,232)] = {64,0}, + [I(5,232)] = {64,0}, + [I(6,232)] = {64,0}, + [I(7,232)] = {64,0}, + [I(8,232)] = {64,0}, + [I(9,232)] = {64,0}, + [I(10,232)] = {64,0}, + [I(11,232)] = {64,0}, + [I(12,232)] = {64,0}, + [I(13,232)] = {64,0}, + [I(14,232)] = {64,0}, + [I(15,232)] = {64,0}, + [I(16,232)] = {64,0}, + [I(17,232)] = {64,0}, + [I(18,232)] = {64,0}, + [I(19,232)] = {64,0}, + [I(20,232)] = {64,0}, + [I(21,232)] = {64,0}, + [I(22,232)] = {64,0}, + [I(23,232)] = {64,0}, + [I(24,232)] = {64,0}, + [I(25,232)] = {64,0}, + [I(26,232)] = {64,0}, + [I(27,232)] = {64,0}, + [I(28,232)] = {64,0}, + [I(29,232)] = {64,0}, + [I(30,232)] = {64,0}, + [I(31,232)] = {64,0}, + [I(32,232)] = {28,0x53FFFEA}, + [I(33,232)] = {X32,0xFE3FFFEA}, + [I(34,232)] = {X32,0xFE7FFFEA}, + [I(35,232)] = {64,0}, + [I(36,232)] = {64,0}, + [I(37,232)] = {28,0x57FFFEA}, + [I(38,232)] = {30,0x3E3FFFEA}, + [I(39,232)] = {64,0}, + [I(40,232)] = {X32,0xFEBFFFEA}, + [I(41,232)] = {X32,0xFEFFFFEA}, + [I(42,232)] = {30,0x3E7FFFEA}, + [I(43,232)] = {64,0}, + [I(44,232)] = {30,0x3EBFFFEA}, + [I(45,232)] = {28,0x5BFFFEA}, + [I(46,232)] = {28,0x5FFFFEA}, + [I(47,232)] = {28,0x63FFFEA}, + [I(48,232)] = {27,0x3FFFEA}, + [I(49,232)] = {27,0x7FFFEA}, + [I(50,232)] = {27,0xBFFFEA}, + [I(51,232)] = {28,0x67FFFEA}, + [I(52,232)] = {28,0x6BFFFEA}, + [I(53,232)] = {28,0x6FFFFEA}, + [I(54,232)] = {28,0x73FFFEA}, + [I(55,232)] = {28,0x77FFFEA}, + [I(56,232)] = {28,0x7BFFFEA}, + [I(57,232)] = {28,0x7FFFFEA}, + [I(58,232)] = {29,0x173FFFEA}, + [I(59,232)] = {30,0x3EFFFFEA}, + [I(60,232)] = {64,0}, + [I(61,232)] = {28,0x83FFFEA}, + [I(62,232)] = {64,0}, + [I(63,232)] = {X32,0xFF3FFFEA}, + [I(64,232)] = {64,0}, + [I(65,232)] = {28,0x87FFFEA}, + [I(66,232)] = {29,0x177FFFEA}, + [I(67,232)] = {29,0x17BFFFEA}, + [I(68,232)] = {29,0x17FFFFEA}, + [I(69,232)] = {29,0x183FFFEA}, + [I(70,232)] = {29,0x187FFFEA}, + [I(71,232)] = {29,0x18BFFFEA}, + [I(72,232)] = {29,0x18FFFFEA}, + [I(73,232)] = {29,0x193FFFEA}, + [I(74,232)] = {29,0x197FFFEA}, + [I(75,232)] = {29,0x19BFFFEA}, + [I(76,232)] = {29,0x19FFFFEA}, + [I(77,232)] = {29,0x1A3FFFEA}, + [I(78,232)] = {29,0x1A7FFFEA}, + [I(79,232)] = {29,0x1ABFFFEA}, + [I(80,232)] = {29,0x1AFFFFEA}, + [I(81,232)] = {29,0x1B3FFFEA}, + [I(82,232)] = {29,0x1B7FFFEA}, + [I(83,232)] = {29,0x1BBFFFEA}, + [I(84,232)] = {29,0x1BFFFFEA}, + [I(85,232)] = {29,0x1C3FFFEA}, + [I(86,232)] = {29,0x1C7FFFEA}, + [I(87,232)] = {29,0x1CBFFFEA}, + [I(88,232)] = {30,0x3F3FFFEA}, + [I(89,232)] = {29,0x1CFFFFEA}, + [I(90,232)] = {30,0x3F7FFFEA}, + [I(91,232)] = {64,0}, + [I(92,232)] = {64,0}, + [I(93,232)] = {64,0}, + [I(94,232)] = {64,0}, + [I(95,232)] = {28,0x8BFFFEA}, + [I(96,232)] = {64,0}, + [I(97,232)] = {27,0xFFFFEA}, + [I(98,232)] = {28,0x8FFFFEA}, + [I(99,232)] = {27,0x13FFFEA}, + [I(100,232)] = {28,0x93FFFEA}, + [I(101,232)] = {27,0x17FFFEA}, + [I(102,232)] = {28,0x97FFFEA}, + [I(103,232)] = {28,0x9BFFFEA}, + [I(104,232)] = {28,0x9FFFFEA}, + [I(105,232)] = {27,0x1BFFFEA}, + [I(106,232)] = {29,0x1D3FFFEA}, + [I(107,232)] = {29,0x1D7FFFEA}, + [I(108,232)] = {28,0xA3FFFEA}, + [I(109,232)] = {28,0xA7FFFEA}, + [I(110,232)] = {28,0xABFFFEA}, + [I(111,232)] = {27,0x1FFFFEA}, + [I(112,232)] = {28,0xAFFFFEA}, + [I(113,232)] = {29,0x1DBFFFEA}, + [I(114,232)] = {28,0xB3FFFEA}, + [I(115,232)] = {27,0x23FFFEA}, + [I(116,232)] = {27,0x27FFFEA}, + [I(117,232)] = {28,0xB7FFFEA}, + [I(118,232)] = {29,0x1DFFFFEA}, + [I(119,232)] = {29,0x1E3FFFEA}, + [I(120,232)] = {29,0x1E7FFFEA}, + [I(121,232)] = {29,0x1EBFFFEA}, + [I(122,232)] = {29,0x1EFFFFEA}, + [I(123,232)] = {64,0}, + [I(124,232)] = {64,0}, + [I(125,232)] = {64,0}, + [I(126,232)] = {64,0}, + [I(127,232)] = {64,0}, + [I(128,232)] = {64,0}, + [I(129,232)] = {64,0}, + [I(130,232)] = {64,0}, + [I(131,232)] = {64,0}, + [I(132,232)] = {64,0}, + [I(133,232)] = {64,0}, + [I(134,232)] = {64,0}, + [I(135,232)] = {64,0}, + [I(136,232)] = {64,0}, + [I(137,232)] = {64,0}, + [I(138,232)] = {64,0}, + [I(139,232)] = {64,0}, + [I(140,232)] = {64,0}, + [I(141,232)] = {64,0}, + [I(142,232)] = {64,0}, + [I(143,232)] = {64,0}, + [I(144,232)] = {64,0}, + [I(145,232)] = {64,0}, + [I(146,232)] = {64,0}, + [I(147,232)] = {64,0}, + [I(148,232)] = {64,0}, + [I(149,232)] = {64,0}, + [I(150,232)] = {64,0}, + [I(151,232)] = {64,0}, + [I(152,232)] = {64,0}, + [I(153,232)] = {64,0}, + [I(154,232)] = {64,0}, + [I(155,232)] = {64,0}, + [I(156,232)] = {64,0}, + [I(157,232)] = {64,0}, + [I(158,232)] = {64,0}, + [I(159,232)] = {64,0}, + [I(160,232)] = {64,0}, + [I(161,232)] = {64,0}, + [I(162,232)] = {64,0}, + [I(163,232)] = {64,0}, + [I(164,232)] = {64,0}, + [I(165,232)] = {64,0}, + [I(166,232)] = {64,0}, + [I(167,232)] = {64,0}, + [I(168,232)] = {64,0}, + [I(169,232)] = {64,0}, + [I(170,232)] = {64,0}, + [I(171,232)] = {64,0}, + [I(172,232)] = {64,0}, + [I(173,232)] = {64,0}, + [I(174,232)] = {64,0}, + [I(175,232)] = {64,0}, + [I(176,232)] = {64,0}, + [I(177,232)] = {64,0}, + [I(178,232)] = {64,0}, + [I(179,232)] = {64,0}, + [I(180,232)] = {64,0}, + [I(181,232)] = {64,0}, + [I(182,232)] = {64,0}, + [I(183,232)] = {64,0}, + [I(184,232)] = {64,0}, + [I(185,232)] = {64,0}, + [I(186,232)] = {64,0}, + [I(187,232)] = {64,0}, + [I(188,232)] = {64,0}, + [I(189,232)] = {64,0}, + [I(190,232)] = {64,0}, + [I(191,232)] = {64,0}, + [I(192,232)] = {64,0}, + [I(193,232)] = {64,0}, + [I(194,232)] = {64,0}, + [I(195,232)] = {64,0}, + [I(196,232)] = {64,0}, + [I(197,232)] = {64,0}, + [I(198,232)] = {64,0}, + [I(199,232)] = {64,0}, + [I(200,232)] = {64,0}, + [I(201,232)] = {64,0}, + [I(202,232)] = {64,0}, + [I(203,232)] = {64,0}, + [I(204,232)] = {64,0}, + [I(205,232)] = {64,0}, + [I(206,232)] = {64,0}, + [I(207,232)] = {64,0}, + [I(208,232)] = {64,0}, + [I(209,232)] = {64,0}, + [I(210,232)] = {64,0}, + [I(211,232)] = {64,0}, + [I(212,232)] = {64,0}, + [I(213,232)] = {64,0}, + [I(214,232)] = {64,0}, + [I(215,232)] = {64,0}, + [I(216,232)] = {64,0}, + [I(217,232)] = {64,0}, + [I(218,232)] = {64,0}, + [I(219,232)] = {64,0}, + [I(220,232)] = {64,0}, + [I(221,232)] = {64,0}, + [I(222,232)] = {64,0}, + [I(223,232)] = {64,0}, + [I(224,232)] = {64,0}, + [I(225,232)] = {64,0}, + [I(226,232)] = {64,0}, + [I(227,232)] = {64,0}, + [I(228,232)] = {64,0}, + [I(229,232)] = {64,0}, + [I(230,232)] = {64,0}, + [I(231,232)] = {64,0}, + [I(232,232)] = {64,0}, + [I(233,232)] = {64,0}, + [I(234,232)] = {64,0}, + [I(235,232)] = {64,0}, + [I(236,232)] = {64,0}, + [I(237,232)] = {64,0}, + [I(238,232)] = {64,0}, + [I(239,232)] = {64,0}, + [I(240,232)] = {64,0}, + [I(241,232)] = {64,0}, + [I(242,232)] = {64,0}, + [I(243,232)] = {64,0}, + [I(244,232)] = {64,0}, + [I(245,232)] = {64,0}, + [I(246,232)] = {64,0}, + [I(247,232)] = {64,0}, + [I(248,232)] = {64,0}, + [I(249,232)] = {64,0}, + [I(250,232)] = {64,0}, + [I(251,232)] = {64,0}, + [I(252,232)] = {64,0}, + [I(253,232)] = {64,0}, + [I(254,232)] = {64,0}, + [I(255,232)] = {64,0}, + [I(0,233)] = {64,0}, + [I(1,233)] = {64,0}, + [I(2,233)] = {64,0}, + [I(3,233)] = {64,0}, + [I(4,233)] = {64,0}, + [I(5,233)] = {64,0}, + [I(6,233)] = {64,0}, + [I(7,233)] = {64,0}, + [I(8,233)] = {64,0}, + [I(9,233)] = {64,0}, + [I(10,233)] = {64,0}, + [I(11,233)] = {64,0}, + [I(12,233)] = {64,0}, + [I(13,233)] = {64,0}, + [I(14,233)] = {64,0}, + [I(15,233)] = {64,0}, + [I(16,233)] = {64,0}, + [I(17,233)] = {64,0}, + [I(18,233)] = {64,0}, + [I(19,233)] = {64,0}, + [I(20,233)] = {64,0}, + [I(21,233)] = {64,0}, + [I(22,233)] = {64,0}, + [I(23,233)] = {64,0}, + [I(24,233)] = {64,0}, + [I(25,233)] = {64,0}, + [I(26,233)] = {64,0}, + [I(27,233)] = {64,0}, + [I(28,233)] = {64,0}, + [I(29,233)] = {64,0}, + [I(30,233)] = {64,0}, + [I(31,233)] = {64,0}, + [I(32,233)] = {28,0x53FFFEB}, + [I(33,233)] = {X32,0xFE3FFFEB}, + [I(34,233)] = {X32,0xFE7FFFEB}, + [I(35,233)] = {64,0}, + [I(36,233)] = {64,0}, + [I(37,233)] = {28,0x57FFFEB}, + [I(38,233)] = {30,0x3E3FFFEB}, + [I(39,233)] = {64,0}, + [I(40,233)] = {X32,0xFEBFFFEB}, + [I(41,233)] = {X32,0xFEFFFFEB}, + [I(42,233)] = {30,0x3E7FFFEB}, + [I(43,233)] = {64,0}, + [I(44,233)] = {30,0x3EBFFFEB}, + [I(45,233)] = {28,0x5BFFFEB}, + [I(46,233)] = {28,0x5FFFFEB}, + [I(47,233)] = {28,0x63FFFEB}, + [I(48,233)] = {27,0x3FFFEB}, + [I(49,233)] = {27,0x7FFFEB}, + [I(50,233)] = {27,0xBFFFEB}, + [I(51,233)] = {28,0x67FFFEB}, + [I(52,233)] = {28,0x6BFFFEB}, + [I(53,233)] = {28,0x6FFFFEB}, + [I(54,233)] = {28,0x73FFFEB}, + [I(55,233)] = {28,0x77FFFEB}, + [I(56,233)] = {28,0x7BFFFEB}, + [I(57,233)] = {28,0x7FFFFEB}, + [I(58,233)] = {29,0x173FFFEB}, + [I(59,233)] = {30,0x3EFFFFEB}, + [I(60,233)] = {64,0}, + [I(61,233)] = {28,0x83FFFEB}, + [I(62,233)] = {64,0}, + [I(63,233)] = {X32,0xFF3FFFEB}, + [I(64,233)] = {64,0}, + [I(65,233)] = {28,0x87FFFEB}, + [I(66,233)] = {29,0x177FFFEB}, + [I(67,233)] = {29,0x17BFFFEB}, + [I(68,233)] = {29,0x17FFFFEB}, + [I(69,233)] = {29,0x183FFFEB}, + [I(70,233)] = {29,0x187FFFEB}, + [I(71,233)] = {29,0x18BFFFEB}, + [I(72,233)] = {29,0x18FFFFEB}, + [I(73,233)] = {29,0x193FFFEB}, + [I(74,233)] = {29,0x197FFFEB}, + [I(75,233)] = {29,0x19BFFFEB}, + [I(76,233)] = {29,0x19FFFFEB}, + [I(77,233)] = {29,0x1A3FFFEB}, + [I(78,233)] = {29,0x1A7FFFEB}, + [I(79,233)] = {29,0x1ABFFFEB}, + [I(80,233)] = {29,0x1AFFFFEB}, + [I(81,233)] = {29,0x1B3FFFEB}, + [I(82,233)] = {29,0x1B7FFFEB}, + [I(83,233)] = {29,0x1BBFFFEB}, + [I(84,233)] = {29,0x1BFFFFEB}, + [I(85,233)] = {29,0x1C3FFFEB}, + [I(86,233)] = {29,0x1C7FFFEB}, + [I(87,233)] = {29,0x1CBFFFEB}, + [I(88,233)] = {30,0x3F3FFFEB}, + [I(89,233)] = {29,0x1CFFFFEB}, + [I(90,233)] = {30,0x3F7FFFEB}, + [I(91,233)] = {64,0}, + [I(92,233)] = {64,0}, + [I(93,233)] = {64,0}, + [I(94,233)] = {64,0}, + [I(95,233)] = {28,0x8BFFFEB}, + [I(96,233)] = {64,0}, + [I(97,233)] = {27,0xFFFFEB}, + [I(98,233)] = {28,0x8FFFFEB}, + [I(99,233)] = {27,0x13FFFEB}, + [I(100,233)] = {28,0x93FFFEB}, + [I(101,233)] = {27,0x17FFFEB}, + [I(102,233)] = {28,0x97FFFEB}, + [I(103,233)] = {28,0x9BFFFEB}, + [I(104,233)] = {28,0x9FFFFEB}, + [I(105,233)] = {27,0x1BFFFEB}, + [I(106,233)] = {29,0x1D3FFFEB}, + [I(107,233)] = {29,0x1D7FFFEB}, + [I(108,233)] = {28,0xA3FFFEB}, + [I(109,233)] = {28,0xA7FFFEB}, + [I(110,233)] = {28,0xABFFFEB}, + [I(111,233)] = {27,0x1FFFFEB}, + [I(112,233)] = {28,0xAFFFFEB}, + [I(113,233)] = {29,0x1DBFFFEB}, + [I(114,233)] = {28,0xB3FFFEB}, + [I(115,233)] = {27,0x23FFFEB}, + [I(116,233)] = {27,0x27FFFEB}, + [I(117,233)] = {28,0xB7FFFEB}, + [I(118,233)] = {29,0x1DFFFFEB}, + [I(119,233)] = {29,0x1E3FFFEB}, + [I(120,233)] = {29,0x1E7FFFEB}, + [I(121,233)] = {29,0x1EBFFFEB}, + [I(122,233)] = {29,0x1EFFFFEB}, + [I(123,233)] = {64,0}, + [I(124,233)] = {64,0}, + [I(125,233)] = {64,0}, + [I(126,233)] = {64,0}, + [I(127,233)] = {64,0}, + [I(128,233)] = {64,0}, + [I(129,233)] = {64,0}, + [I(130,233)] = {64,0}, + [I(131,233)] = {64,0}, + [I(132,233)] = {64,0}, + [I(133,233)] = {64,0}, + [I(134,233)] = {64,0}, + [I(135,233)] = {64,0}, + [I(136,233)] = {64,0}, + [I(137,233)] = {64,0}, + [I(138,233)] = {64,0}, + [I(139,233)] = {64,0}, + [I(140,233)] = {64,0}, + [I(141,233)] = {64,0}, + [I(142,233)] = {64,0}, + [I(143,233)] = {64,0}, + [I(144,233)] = {64,0}, + [I(145,233)] = {64,0}, + [I(146,233)] = {64,0}, + [I(147,233)] = {64,0}, + [I(148,233)] = {64,0}, + [I(149,233)] = {64,0}, + [I(150,233)] = {64,0}, + [I(151,233)] = {64,0}, + [I(152,233)] = {64,0}, + [I(153,233)] = {64,0}, + [I(154,233)] = {64,0}, + [I(155,233)] = {64,0}, + [I(156,233)] = {64,0}, + [I(157,233)] = {64,0}, + [I(158,233)] = {64,0}, + [I(159,233)] = {64,0}, + [I(160,233)] = {64,0}, + [I(161,233)] = {64,0}, + [I(162,233)] = {64,0}, + [I(163,233)] = {64,0}, + [I(164,233)] = {64,0}, + [I(165,233)] = {64,0}, + [I(166,233)] = {64,0}, + [I(167,233)] = {64,0}, + [I(168,233)] = {64,0}, + [I(169,233)] = {64,0}, + [I(170,233)] = {64,0}, + [I(171,233)] = {64,0}, + [I(172,233)] = {64,0}, + [I(173,233)] = {64,0}, + [I(174,233)] = {64,0}, + [I(175,233)] = {64,0}, + [I(176,233)] = {64,0}, + [I(177,233)] = {64,0}, + [I(178,233)] = {64,0}, + [I(179,233)] = {64,0}, + [I(180,233)] = {64,0}, + [I(181,233)] = {64,0}, + [I(182,233)] = {64,0}, + [I(183,233)] = {64,0}, + [I(184,233)] = {64,0}, + [I(185,233)] = {64,0}, + [I(186,233)] = {64,0}, + [I(187,233)] = {64,0}, + [I(188,233)] = {64,0}, + [I(189,233)] = {64,0}, + [I(190,233)] = {64,0}, + [I(191,233)] = {64,0}, + [I(192,233)] = {64,0}, + [I(193,233)] = {64,0}, + [I(194,233)] = {64,0}, + [I(195,233)] = {64,0}, + [I(196,233)] = {64,0}, + [I(197,233)] = {64,0}, + [I(198,233)] = {64,0}, + [I(199,233)] = {64,0}, + [I(200,233)] = {64,0}, + [I(201,233)] = {64,0}, + [I(202,233)] = {64,0}, + [I(203,233)] = {64,0}, + [I(204,233)] = {64,0}, + [I(205,233)] = {64,0}, + [I(206,233)] = {64,0}, + [I(207,233)] = {64,0}, + [I(208,233)] = {64,0}, + [I(209,233)] = {64,0}, + [I(210,233)] = {64,0}, + [I(211,233)] = {64,0}, + [I(212,233)] = {64,0}, + [I(213,233)] = {64,0}, + [I(214,233)] = {64,0}, + [I(215,233)] = {64,0}, + [I(216,233)] = {64,0}, + [I(217,233)] = {64,0}, + [I(218,233)] = {64,0}, + [I(219,233)] = {64,0}, + [I(220,233)] = {64,0}, + [I(221,233)] = {64,0}, + [I(222,233)] = {64,0}, + [I(223,233)] = {64,0}, + [I(224,233)] = {64,0}, + [I(225,233)] = {64,0}, + [I(226,233)] = {64,0}, + [I(227,233)] = {64,0}, + [I(228,233)] = {64,0}, + [I(229,233)] = {64,0}, + [I(230,233)] = {64,0}, + [I(231,233)] = {64,0}, + [I(232,233)] = {64,0}, + [I(233,233)] = {64,0}, + [I(234,233)] = {64,0}, + [I(235,233)] = {64,0}, + [I(236,233)] = {64,0}, + [I(237,233)] = {64,0}, + [I(238,233)] = {64,0}, + [I(239,233)] = {64,0}, + [I(240,233)] = {64,0}, + [I(241,233)] = {64,0}, + [I(242,233)] = {64,0}, + [I(243,233)] = {64,0}, + [I(244,233)] = {64,0}, + [I(245,233)] = {64,0}, + [I(246,233)] = {64,0}, + [I(247,233)] = {64,0}, + [I(248,233)] = {64,0}, + [I(249,233)] = {64,0}, + [I(250,233)] = {64,0}, + [I(251,233)] = {64,0}, + [I(252,233)] = {64,0}, + [I(253,233)] = {64,0}, + [I(254,233)] = {64,0}, + [I(255,233)] = {64,0}, + [I(0,234)] = {64,0}, + [I(1,234)] = {64,0}, + [I(2,234)] = {64,0}, + [I(3,234)] = {64,0}, + [I(4,234)] = {64,0}, + [I(5,234)] = {64,0}, + [I(6,234)] = {64,0}, + [I(7,234)] = {64,0}, + [I(8,234)] = {64,0}, + [I(9,234)] = {64,0}, + [I(10,234)] = {64,0}, + [I(11,234)] = {64,0}, + [I(12,234)] = {64,0}, + [I(13,234)] = {64,0}, + [I(14,234)] = {64,0}, + [I(15,234)] = {64,0}, + [I(16,234)] = {64,0}, + [I(17,234)] = {64,0}, + [I(18,234)] = {64,0}, + [I(19,234)] = {64,0}, + [I(20,234)] = {64,0}, + [I(21,234)] = {64,0}, + [I(22,234)] = {64,0}, + [I(23,234)] = {64,0}, + [I(24,234)] = {64,0}, + [I(25,234)] = {64,0}, + [I(26,234)] = {64,0}, + [I(27,234)] = {64,0}, + [I(28,234)] = {64,0}, + [I(29,234)] = {64,0}, + [I(30,234)] = {64,0}, + [I(31,234)] = {64,0}, + [I(32,234)] = {31,0x29FFFFEE}, + [I(33,234)] = {64,0}, + [I(34,234)] = {64,0}, + [I(35,234)] = {64,0}, + [I(36,234)] = {64,0}, + [I(37,234)] = {31,0x2BFFFFEE}, + [I(38,234)] = {64,0}, + [I(39,234)] = {64,0}, + [I(40,234)] = {64,0}, + [I(41,234)] = {64,0}, + [I(42,234)] = {64,0}, + [I(43,234)] = {64,0}, + [I(44,234)] = {64,0}, + [I(45,234)] = {31,0x2DFFFFEE}, + [I(46,234)] = {31,0x2FFFFFEE}, + [I(47,234)] = {31,0x31FFFFEE}, + [I(48,234)] = {30,0x1FFFFEE}, + [I(49,234)] = {30,0x3FFFFEE}, + [I(50,234)] = {30,0x5FFFFEE}, + [I(51,234)] = {31,0x33FFFFEE}, + [I(52,234)] = {31,0x35FFFFEE}, + [I(53,234)] = {31,0x37FFFFEE}, + [I(54,234)] = {31,0x39FFFFEE}, + [I(55,234)] = {31,0x3BFFFFEE}, + [I(56,234)] = {31,0x3DFFFFEE}, + [I(57,234)] = {31,0x3FFFFFEE}, + [I(58,234)] = {X32,0xB9FFFFEE}, + [I(59,234)] = {64,0}, + [I(60,234)] = {64,0}, + [I(61,234)] = {31,0x41FFFFEE}, + [I(62,234)] = {64,0}, + [I(63,234)] = {64,0}, + [I(64,234)] = {64,0}, + [I(65,234)] = {31,0x43FFFFEE}, + [I(66,234)] = {X32,0xBBFFFFEE}, + [I(67,234)] = {X32,0xBDFFFFEE}, + [I(68,234)] = {X32,0xBFFFFFEE}, + [I(69,234)] = {X32,0xC1FFFFEE}, + [I(70,234)] = {X32,0xC3FFFFEE}, + [I(71,234)] = {X32,0xC5FFFFEE}, + [I(72,234)] = {X32,0xC7FFFFEE}, + [I(73,234)] = {X32,0xC9FFFFEE}, + [I(74,234)] = {X32,0xCBFFFFEE}, + [I(75,234)] = {X32,0xCDFFFFEE}, + [I(76,234)] = {X32,0xCFFFFFEE}, + [I(77,234)] = {X32,0xD1FFFFEE}, + [I(78,234)] = {X32,0xD3FFFFEE}, + [I(79,234)] = {X32,0xD5FFFFEE}, + [I(80,234)] = {X32,0xD7FFFFEE}, + [I(81,234)] = {X32,0xD9FFFFEE}, + [I(82,234)] = {X32,0xDBFFFFEE}, + [I(83,234)] = {X32,0xDDFFFFEE}, + [I(84,234)] = {X32,0xDFFFFFEE}, + [I(85,234)] = {X32,0xE1FFFFEE}, + [I(86,234)] = {X32,0xE3FFFFEE}, + [I(87,234)] = {X32,0xE5FFFFEE}, + [I(88,234)] = {64,0}, + [I(89,234)] = {X32,0xE7FFFFEE}, + [I(90,234)] = {64,0}, + [I(91,234)] = {64,0}, + [I(92,234)] = {64,0}, + [I(93,234)] = {64,0}, + [I(94,234)] = {64,0}, + [I(95,234)] = {31,0x45FFFFEE}, + [I(96,234)] = {64,0}, + [I(97,234)] = {30,0x7FFFFEE}, + [I(98,234)] = {31,0x47FFFFEE}, + [I(99,234)] = {30,0x9FFFFEE}, + [I(100,234)] = {31,0x49FFFFEE}, + [I(101,234)] = {30,0xBFFFFEE}, + [I(102,234)] = {31,0x4BFFFFEE}, + [I(103,234)] = {31,0x4DFFFFEE}, + [I(104,234)] = {31,0x4FFFFFEE}, + [I(105,234)] = {30,0xDFFFFEE}, + [I(106,234)] = {X32,0xE9FFFFEE}, + [I(107,234)] = {X32,0xEBFFFFEE}, + [I(108,234)] = {31,0x51FFFFEE}, + [I(109,234)] = {31,0x53FFFFEE}, + [I(110,234)] = {31,0x55FFFFEE}, + [I(111,234)] = {30,0xFFFFFEE}, + [I(112,234)] = {31,0x57FFFFEE}, + [I(113,234)] = {X32,0xEDFFFFEE}, + [I(114,234)] = {31,0x59FFFFEE}, + [I(115,234)] = {30,0x11FFFFEE}, + [I(116,234)] = {30,0x13FFFFEE}, + [I(117,234)] = {31,0x5BFFFFEE}, + [I(118,234)] = {X32,0xEFFFFFEE}, + [I(119,234)] = {X32,0xF1FFFFEE}, + [I(120,234)] = {X32,0xF3FFFFEE}, + [I(121,234)] = {X32,0xF5FFFFEE}, + [I(122,234)] = {X32,0xF7FFFFEE}, + [I(123,234)] = {64,0}, + [I(124,234)] = {64,0}, + [I(125,234)] = {64,0}, + [I(126,234)] = {64,0}, + [I(127,234)] = {64,0}, + [I(128,234)] = {64,0}, + [I(129,234)] = {64,0}, + [I(130,234)] = {64,0}, + [I(131,234)] = {64,0}, + [I(132,234)] = {64,0}, + [I(133,234)] = {64,0}, + [I(134,234)] = {64,0}, + [I(135,234)] = {64,0}, + [I(136,234)] = {64,0}, + [I(137,234)] = {64,0}, + [I(138,234)] = {64,0}, + [I(139,234)] = {64,0}, + [I(140,234)] = {64,0}, + [I(141,234)] = {64,0}, + [I(142,234)] = {64,0}, + [I(143,234)] = {64,0}, + [I(144,234)] = {64,0}, + [I(145,234)] = {64,0}, + [I(146,234)] = {64,0}, + [I(147,234)] = {64,0}, + [I(148,234)] = {64,0}, + [I(149,234)] = {64,0}, + [I(150,234)] = {64,0}, + [I(151,234)] = {64,0}, + [I(152,234)] = {64,0}, + [I(153,234)] = {64,0}, + [I(154,234)] = {64,0}, + [I(155,234)] = {64,0}, + [I(156,234)] = {64,0}, + [I(157,234)] = {64,0}, + [I(158,234)] = {64,0}, + [I(159,234)] = {64,0}, + [I(160,234)] = {64,0}, + [I(161,234)] = {64,0}, + [I(162,234)] = {64,0}, + [I(163,234)] = {64,0}, + [I(164,234)] = {64,0}, + [I(165,234)] = {64,0}, + [I(166,234)] = {64,0}, + [I(167,234)] = {64,0}, + [I(168,234)] = {64,0}, + [I(169,234)] = {64,0}, + [I(170,234)] = {64,0}, + [I(171,234)] = {64,0}, + [I(172,234)] = {64,0}, + [I(173,234)] = {64,0}, + [I(174,234)] = {64,0}, + [I(175,234)] = {64,0}, + [I(176,234)] = {64,0}, + [I(177,234)] = {64,0}, + [I(178,234)] = {64,0}, + [I(179,234)] = {64,0}, + [I(180,234)] = {64,0}, + [I(181,234)] = {64,0}, + [I(182,234)] = {64,0}, + [I(183,234)] = {64,0}, + [I(184,234)] = {64,0}, + [I(185,234)] = {64,0}, + [I(186,234)] = {64,0}, + [I(187,234)] = {64,0}, + [I(188,234)] = {64,0}, + [I(189,234)] = {64,0}, + [I(190,234)] = {64,0}, + [I(191,234)] = {64,0}, + [I(192,234)] = {64,0}, + [I(193,234)] = {64,0}, + [I(194,234)] = {64,0}, + [I(195,234)] = {64,0}, + [I(196,234)] = {64,0}, + [I(197,234)] = {64,0}, + [I(198,234)] = {64,0}, + [I(199,234)] = {64,0}, + [I(200,234)] = {64,0}, + [I(201,234)] = {64,0}, + [I(202,234)] = {64,0}, + [I(203,234)] = {64,0}, + [I(204,234)] = {64,0}, + [I(205,234)] = {64,0}, + [I(206,234)] = {64,0}, + [I(207,234)] = {64,0}, + [I(208,234)] = {64,0}, + [I(209,234)] = {64,0}, + [I(210,234)] = {64,0}, + [I(211,234)] = {64,0}, + [I(212,234)] = {64,0}, + [I(213,234)] = {64,0}, + [I(214,234)] = {64,0}, + [I(215,234)] = {64,0}, + [I(216,234)] = {64,0}, + [I(217,234)] = {64,0}, + [I(218,234)] = {64,0}, + [I(219,234)] = {64,0}, + [I(220,234)] = {64,0}, + [I(221,234)] = {64,0}, + [I(222,234)] = {64,0}, + [I(223,234)] = {64,0}, + [I(224,234)] = {64,0}, + [I(225,234)] = {64,0}, + [I(226,234)] = {64,0}, + [I(227,234)] = {64,0}, + [I(228,234)] = {64,0}, + [I(229,234)] = {64,0}, + [I(230,234)] = {64,0}, + [I(231,234)] = {64,0}, + [I(232,234)] = {64,0}, + [I(233,234)] = {64,0}, + [I(234,234)] = {64,0}, + [I(235,234)] = {64,0}, + [I(236,234)] = {64,0}, + [I(237,234)] = {64,0}, + [I(238,234)] = {64,0}, + [I(239,234)] = {64,0}, + [I(240,234)] = {64,0}, + [I(241,234)] = {64,0}, + [I(242,234)] = {64,0}, + [I(243,234)] = {64,0}, + [I(244,234)] = {64,0}, + [I(245,234)] = {64,0}, + [I(246,234)] = {64,0}, + [I(247,234)] = {64,0}, + [I(248,234)] = {64,0}, + [I(249,234)] = {64,0}, + [I(250,234)] = {64,0}, + [I(251,234)] = {64,0}, + [I(252,234)] = {64,0}, + [I(253,234)] = {64,0}, + [I(254,234)] = {64,0}, + [I(255,234)] = {64,0}, + [I(0,235)] = {64,0}, + [I(1,235)] = {64,0}, + [I(2,235)] = {64,0}, + [I(3,235)] = {64,0}, + [I(4,235)] = {64,0}, + [I(5,235)] = {64,0}, + [I(6,235)] = {64,0}, + [I(7,235)] = {64,0}, + [I(8,235)] = {64,0}, + [I(9,235)] = {64,0}, + [I(10,235)] = {64,0}, + [I(11,235)] = {64,0}, + [I(12,235)] = {64,0}, + [I(13,235)] = {64,0}, + [I(14,235)] = {64,0}, + [I(15,235)] = {64,0}, + [I(16,235)] = {64,0}, + [I(17,235)] = {64,0}, + [I(18,235)] = {64,0}, + [I(19,235)] = {64,0}, + [I(20,235)] = {64,0}, + [I(21,235)] = {64,0}, + [I(22,235)] = {64,0}, + [I(23,235)] = {64,0}, + [I(24,235)] = {64,0}, + [I(25,235)] = {64,0}, + [I(26,235)] = {64,0}, + [I(27,235)] = {64,0}, + [I(28,235)] = {64,0}, + [I(29,235)] = {64,0}, + [I(30,235)] = {64,0}, + [I(31,235)] = {64,0}, + [I(32,235)] = {31,0x29FFFFEF}, + [I(33,235)] = {64,0}, + [I(34,235)] = {64,0}, + [I(35,235)] = {64,0}, + [I(36,235)] = {64,0}, + [I(37,235)] = {31,0x2BFFFFEF}, + [I(38,235)] = {64,0}, + [I(39,235)] = {64,0}, + [I(40,235)] = {64,0}, + [I(41,235)] = {64,0}, + [I(42,235)] = {64,0}, + [I(43,235)] = {64,0}, + [I(44,235)] = {64,0}, + [I(45,235)] = {31,0x2DFFFFEF}, + [I(46,235)] = {31,0x2FFFFFEF}, + [I(47,235)] = {31,0x31FFFFEF}, + [I(48,235)] = {30,0x1FFFFEF}, + [I(49,235)] = {30,0x3FFFFEF}, + [I(50,235)] = {30,0x5FFFFEF}, + [I(51,235)] = {31,0x33FFFFEF}, + [I(52,235)] = {31,0x35FFFFEF}, + [I(53,235)] = {31,0x37FFFFEF}, + [I(54,235)] = {31,0x39FFFFEF}, + [I(55,235)] = {31,0x3BFFFFEF}, + [I(56,235)] = {31,0x3DFFFFEF}, + [I(57,235)] = {31,0x3FFFFFEF}, + [I(58,235)] = {X32,0xB9FFFFEF}, + [I(59,235)] = {64,0}, + [I(60,235)] = {64,0}, + [I(61,235)] = {31,0x41FFFFEF}, + [I(62,235)] = {64,0}, + [I(63,235)] = {64,0}, + [I(64,235)] = {64,0}, + [I(65,235)] = {31,0x43FFFFEF}, + [I(66,235)] = {X32,0xBBFFFFEF}, + [I(67,235)] = {X32,0xBDFFFFEF}, + [I(68,235)] = {X32,0xBFFFFFEF}, + [I(69,235)] = {X32,0xC1FFFFEF}, + [I(70,235)] = {X32,0xC3FFFFEF}, + [I(71,235)] = {X32,0xC5FFFFEF}, + [I(72,235)] = {X32,0xC7FFFFEF}, + [I(73,235)] = {X32,0xC9FFFFEF}, + [I(74,235)] = {X32,0xCBFFFFEF}, + [I(75,235)] = {X32,0xCDFFFFEF}, + [I(76,235)] = {X32,0xCFFFFFEF}, + [I(77,235)] = {X32,0xD1FFFFEF}, + [I(78,235)] = {X32,0xD3FFFFEF}, + [I(79,235)] = {X32,0xD5FFFFEF}, + [I(80,235)] = {X32,0xD7FFFFEF}, + [I(81,235)] = {X32,0xD9FFFFEF}, + [I(82,235)] = {X32,0xDBFFFFEF}, + [I(83,235)] = {X32,0xDDFFFFEF}, + [I(84,235)] = {X32,0xDFFFFFEF}, + [I(85,235)] = {X32,0xE1FFFFEF}, + [I(86,235)] = {X32,0xE3FFFFEF}, + [I(87,235)] = {X32,0xE5FFFFEF}, + [I(88,235)] = {64,0}, + [I(89,235)] = {X32,0xE7FFFFEF}, + [I(90,235)] = {64,0}, + [I(91,235)] = {64,0}, + [I(92,235)] = {64,0}, + [I(93,235)] = {64,0}, + [I(94,235)] = {64,0}, + [I(95,235)] = {31,0x45FFFFEF}, + [I(96,235)] = {64,0}, + [I(97,235)] = {30,0x7FFFFEF}, + [I(98,235)] = {31,0x47FFFFEF}, + [I(99,235)] = {30,0x9FFFFEF}, + [I(100,235)] = {31,0x49FFFFEF}, + [I(101,235)] = {30,0xBFFFFEF}, + [I(102,235)] = {31,0x4BFFFFEF}, + [I(103,235)] = {31,0x4DFFFFEF}, + [I(104,235)] = {31,0x4FFFFFEF}, + [I(105,235)] = {30,0xDFFFFEF}, + [I(106,235)] = {X32,0xE9FFFFEF}, + [I(107,235)] = {X32,0xEBFFFFEF}, + [I(108,235)] = {31,0x51FFFFEF}, + [I(109,235)] = {31,0x53FFFFEF}, + [I(110,235)] = {31,0x55FFFFEF}, + [I(111,235)] = {30,0xFFFFFEF}, + [I(112,235)] = {31,0x57FFFFEF}, + [I(113,235)] = {X32,0xEDFFFFEF}, + [I(114,235)] = {31,0x59FFFFEF}, + [I(115,235)] = {30,0x11FFFFEF}, + [I(116,235)] = {30,0x13FFFFEF}, + [I(117,235)] = {31,0x5BFFFFEF}, + [I(118,235)] = {X32,0xEFFFFFEF}, + [I(119,235)] = {X32,0xF1FFFFEF}, + [I(120,235)] = {X32,0xF3FFFFEF}, + [I(121,235)] = {X32,0xF5FFFFEF}, + [I(122,235)] = {X32,0xF7FFFFEF}, + [I(123,235)] = {64,0}, + [I(124,235)] = {64,0}, + [I(125,235)] = {64,0}, + [I(126,235)] = {64,0}, + [I(127,235)] = {64,0}, + [I(128,235)] = {64,0}, + [I(129,235)] = {64,0}, + [I(130,235)] = {64,0}, + [I(131,235)] = {64,0}, + [I(132,235)] = {64,0}, + [I(133,235)] = {64,0}, + [I(134,235)] = {64,0}, + [I(135,235)] = {64,0}, + [I(136,235)] = {64,0}, + [I(137,235)] = {64,0}, + [I(138,235)] = {64,0}, + [I(139,235)] = {64,0}, + [I(140,235)] = {64,0}, + [I(141,235)] = {64,0}, + [I(142,235)] = {64,0}, + [I(143,235)] = {64,0}, + [I(144,235)] = {64,0}, + [I(145,235)] = {64,0}, + [I(146,235)] = {64,0}, + [I(147,235)] = {64,0}, + [I(148,235)] = {64,0}, + [I(149,235)] = {64,0}, + [I(150,235)] = {64,0}, + [I(151,235)] = {64,0}, + [I(152,235)] = {64,0}, + [I(153,235)] = {64,0}, + [I(154,235)] = {64,0}, + [I(155,235)] = {64,0}, + [I(156,235)] = {64,0}, + [I(157,235)] = {64,0}, + [I(158,235)] = {64,0}, + [I(159,235)] = {64,0}, + [I(160,235)] = {64,0}, + [I(161,235)] = {64,0}, + [I(162,235)] = {64,0}, + [I(163,235)] = {64,0}, + [I(164,235)] = {64,0}, + [I(165,235)] = {64,0}, + [I(166,235)] = {64,0}, + [I(167,235)] = {64,0}, + [I(168,235)] = {64,0}, + [I(169,235)] = {64,0}, + [I(170,235)] = {64,0}, + [I(171,235)] = {64,0}, + [I(172,235)] = {64,0}, + [I(173,235)] = {64,0}, + [I(174,235)] = {64,0}, + [I(175,235)] = {64,0}, + [I(176,235)] = {64,0}, + [I(177,235)] = {64,0}, + [I(178,235)] = {64,0}, + [I(179,235)] = {64,0}, + [I(180,235)] = {64,0}, + [I(181,235)] = {64,0}, + [I(182,235)] = {64,0}, + [I(183,235)] = {64,0}, + [I(184,235)] = {64,0}, + [I(185,235)] = {64,0}, + [I(186,235)] = {64,0}, + [I(187,235)] = {64,0}, + [I(188,235)] = {64,0}, + [I(189,235)] = {64,0}, + [I(190,235)] = {64,0}, + [I(191,235)] = {64,0}, + [I(192,235)] = {64,0}, + [I(193,235)] = {64,0}, + [I(194,235)] = {64,0}, + [I(195,235)] = {64,0}, + [I(196,235)] = {64,0}, + [I(197,235)] = {64,0}, + [I(198,235)] = {64,0}, + [I(199,235)] = {64,0}, + [I(200,235)] = {64,0}, + [I(201,235)] = {64,0}, + [I(202,235)] = {64,0}, + [I(203,235)] = {64,0}, + [I(204,235)] = {64,0}, + [I(205,235)] = {64,0}, + [I(206,235)] = {64,0}, + [I(207,235)] = {64,0}, + [I(208,235)] = {64,0}, + [I(209,235)] = {64,0}, + [I(210,235)] = {64,0}, + [I(211,235)] = {64,0}, + [I(212,235)] = {64,0}, + [I(213,235)] = {64,0}, + [I(214,235)] = {64,0}, + [I(215,235)] = {64,0}, + [I(216,235)] = {64,0}, + [I(217,235)] = {64,0}, + [I(218,235)] = {64,0}, + [I(219,235)] = {64,0}, + [I(220,235)] = {64,0}, + [I(221,235)] = {64,0}, + [I(222,235)] = {64,0}, + [I(223,235)] = {64,0}, + [I(224,235)] = {64,0}, + [I(225,235)] = {64,0}, + [I(226,235)] = {64,0}, + [I(227,235)] = {64,0}, + [I(228,235)] = {64,0}, + [I(229,235)] = {64,0}, + [I(230,235)] = {64,0}, + [I(231,235)] = {64,0}, + [I(232,235)] = {64,0}, + [I(233,235)] = {64,0}, + [I(234,235)] = {64,0}, + [I(235,235)] = {64,0}, + [I(236,235)] = {64,0}, + [I(237,235)] = {64,0}, + [I(238,235)] = {64,0}, + [I(239,235)] = {64,0}, + [I(240,235)] = {64,0}, + [I(241,235)] = {64,0}, + [I(242,235)] = {64,0}, + [I(243,235)] = {64,0}, + [I(244,235)] = {64,0}, + [I(245,235)] = {64,0}, + [I(246,235)] = {64,0}, + [I(247,235)] = {64,0}, + [I(248,235)] = {64,0}, + [I(249,235)] = {64,0}, + [I(250,235)] = {64,0}, + [I(251,235)] = {64,0}, + [I(252,235)] = {64,0}, + [I(253,235)] = {64,0}, + [I(254,235)] = {64,0}, + [I(255,235)] = {64,0}, + [I(0,236)] = {64,0}, + [I(1,236)] = {64,0}, + [I(2,236)] = {64,0}, + [I(3,236)] = {64,0}, + [I(4,236)] = {64,0}, + [I(5,236)] = {64,0}, + [I(6,236)] = {64,0}, + [I(7,236)] = {64,0}, + [I(8,236)] = {64,0}, + [I(9,236)] = {64,0}, + [I(10,236)] = {64,0}, + [I(11,236)] = {64,0}, + [I(12,236)] = {64,0}, + [I(13,236)] = {64,0}, + [I(14,236)] = {64,0}, + [I(15,236)] = {64,0}, + [I(16,236)] = {64,0}, + [I(17,236)] = {64,0}, + [I(18,236)] = {64,0}, + [I(19,236)] = {64,0}, + [I(20,236)] = {64,0}, + [I(21,236)] = {64,0}, + [I(22,236)] = {64,0}, + [I(23,236)] = {64,0}, + [I(24,236)] = {64,0}, + [I(25,236)] = {64,0}, + [I(26,236)] = {64,0}, + [I(27,236)] = {64,0}, + [I(28,236)] = {64,0}, + [I(29,236)] = {64,0}, + [I(30,236)] = {64,0}, + [I(31,236)] = {64,0}, + [I(32,236)] = {30,0x14FFFFF4}, + [I(33,236)] = {64,0}, + [I(34,236)] = {64,0}, + [I(35,236)] = {64,0}, + [I(36,236)] = {64,0}, + [I(37,236)] = {30,0x15FFFFF4}, + [I(38,236)] = {X32,0xF8FFFFF4}, + [I(39,236)] = {64,0}, + [I(40,236)] = {64,0}, + [I(41,236)] = {64,0}, + [I(42,236)] = {X32,0xF9FFFFF4}, + [I(43,236)] = {64,0}, + [I(44,236)] = {X32,0xFAFFFFF4}, + [I(45,236)] = {30,0x16FFFFF4}, + [I(46,236)] = {30,0x17FFFFF4}, + [I(47,236)] = {30,0x18FFFFF4}, + [I(48,236)] = {29,0xFFFFF4}, + [I(49,236)] = {29,0x1FFFFF4}, + [I(50,236)] = {29,0x2FFFFF4}, + [I(51,236)] = {30,0x19FFFFF4}, + [I(52,236)] = {30,0x1AFFFFF4}, + [I(53,236)] = {30,0x1BFFFFF4}, + [I(54,236)] = {30,0x1CFFFFF4}, + [I(55,236)] = {30,0x1DFFFFF4}, + [I(56,236)] = {30,0x1EFFFFF4}, + [I(57,236)] = {30,0x1FFFFFF4}, + [I(58,236)] = {31,0x5CFFFFF4}, + [I(59,236)] = {X32,0xFBFFFFF4}, + [I(60,236)] = {64,0}, + [I(61,236)] = {30,0x20FFFFF4}, + [I(62,236)] = {64,0}, + [I(63,236)] = {64,0}, + [I(64,236)] = {64,0}, + [I(65,236)] = {30,0x21FFFFF4}, + [I(66,236)] = {31,0x5DFFFFF4}, + [I(67,236)] = {31,0x5EFFFFF4}, + [I(68,236)] = {31,0x5FFFFFF4}, + [I(69,236)] = {31,0x60FFFFF4}, + [I(70,236)] = {31,0x61FFFFF4}, + [I(71,236)] = {31,0x62FFFFF4}, + [I(72,236)] = {31,0x63FFFFF4}, + [I(73,236)] = {31,0x64FFFFF4}, + [I(74,236)] = {31,0x65FFFFF4}, + [I(75,236)] = {31,0x66FFFFF4}, + [I(76,236)] = {31,0x67FFFFF4}, + [I(77,236)] = {31,0x68FFFFF4}, + [I(78,236)] = {31,0x69FFFFF4}, + [I(79,236)] = {31,0x6AFFFFF4}, + [I(80,236)] = {31,0x6BFFFFF4}, + [I(81,236)] = {31,0x6CFFFFF4}, + [I(82,236)] = {31,0x6DFFFFF4}, + [I(83,236)] = {31,0x6EFFFFF4}, + [I(84,236)] = {31,0x6FFFFFF4}, + [I(85,236)] = {31,0x70FFFFF4}, + [I(86,236)] = {31,0x71FFFFF4}, + [I(87,236)] = {31,0x72FFFFF4}, + [I(88,236)] = {X32,0xFCFFFFF4}, + [I(89,236)] = {31,0x73FFFFF4}, + [I(90,236)] = {X32,0xFDFFFFF4}, + [I(91,236)] = {64,0}, + [I(92,236)] = {64,0}, + [I(93,236)] = {64,0}, + [I(94,236)] = {64,0}, + [I(95,236)] = {30,0x22FFFFF4}, + [I(96,236)] = {64,0}, + [I(97,236)] = {29,0x3FFFFF4}, + [I(98,236)] = {30,0x23FFFFF4}, + [I(99,236)] = {29,0x4FFFFF4}, + [I(100,236)] = {30,0x24FFFFF4}, + [I(101,236)] = {29,0x5FFFFF4}, + [I(102,236)] = {30,0x25FFFFF4}, + [I(103,236)] = {30,0x26FFFFF4}, + [I(104,236)] = {30,0x27FFFFF4}, + [I(105,236)] = {29,0x6FFFFF4}, + [I(106,236)] = {31,0x74FFFFF4}, + [I(107,236)] = {31,0x75FFFFF4}, + [I(108,236)] = {30,0x28FFFFF4}, + [I(109,236)] = {30,0x29FFFFF4}, + [I(110,236)] = {30,0x2AFFFFF4}, + [I(111,236)] = {29,0x7FFFFF4}, + [I(112,236)] = {30,0x2BFFFFF4}, + [I(113,236)] = {31,0x76FFFFF4}, + [I(114,236)] = {30,0x2CFFFFF4}, + [I(115,236)] = {29,0x8FFFFF4}, + [I(116,236)] = {29,0x9FFFFF4}, + [I(117,236)] = {30,0x2DFFFFF4}, + [I(118,236)] = {31,0x77FFFFF4}, + [I(119,236)] = {31,0x78FFFFF4}, + [I(120,236)] = {31,0x79FFFFF4}, + [I(121,236)] = {31,0x7AFFFFF4}, + [I(122,236)] = {31,0x7BFFFFF4}, + [I(123,236)] = {64,0}, + [I(124,236)] = {64,0}, + [I(125,236)] = {64,0}, + [I(126,236)] = {64,0}, + [I(127,236)] = {64,0}, + [I(128,236)] = {64,0}, + [I(129,236)] = {64,0}, + [I(130,236)] = {64,0}, + [I(131,236)] = {64,0}, + [I(132,236)] = {64,0}, + [I(133,236)] = {64,0}, + [I(134,236)] = {64,0}, + [I(135,236)] = {64,0}, + [I(136,236)] = {64,0}, + [I(137,236)] = {64,0}, + [I(138,236)] = {64,0}, + [I(139,236)] = {64,0}, + [I(140,236)] = {64,0}, + [I(141,236)] = {64,0}, + [I(142,236)] = {64,0}, + [I(143,236)] = {64,0}, + [I(144,236)] = {64,0}, + [I(145,236)] = {64,0}, + [I(146,236)] = {64,0}, + [I(147,236)] = {64,0}, + [I(148,236)] = {64,0}, + [I(149,236)] = {64,0}, + [I(150,236)] = {64,0}, + [I(151,236)] = {64,0}, + [I(152,236)] = {64,0}, + [I(153,236)] = {64,0}, + [I(154,236)] = {64,0}, + [I(155,236)] = {64,0}, + [I(156,236)] = {64,0}, + [I(157,236)] = {64,0}, + [I(158,236)] = {64,0}, + [I(159,236)] = {64,0}, + [I(160,236)] = {64,0}, + [I(161,236)] = {64,0}, + [I(162,236)] = {64,0}, + [I(163,236)] = {64,0}, + [I(164,236)] = {64,0}, + [I(165,236)] = {64,0}, + [I(166,236)] = {64,0}, + [I(167,236)] = {64,0}, + [I(168,236)] = {64,0}, + [I(169,236)] = {64,0}, + [I(170,236)] = {64,0}, + [I(171,236)] = {64,0}, + [I(172,236)] = {64,0}, + [I(173,236)] = {64,0}, + [I(174,236)] = {64,0}, + [I(175,236)] = {64,0}, + [I(176,236)] = {64,0}, + [I(177,236)] = {64,0}, + [I(178,236)] = {64,0}, + [I(179,236)] = {64,0}, + [I(180,236)] = {64,0}, + [I(181,236)] = {64,0}, + [I(182,236)] = {64,0}, + [I(183,236)] = {64,0}, + [I(184,236)] = {64,0}, + [I(185,236)] = {64,0}, + [I(186,236)] = {64,0}, + [I(187,236)] = {64,0}, + [I(188,236)] = {64,0}, + [I(189,236)] = {64,0}, + [I(190,236)] = {64,0}, + [I(191,236)] = {64,0}, + [I(192,236)] = {64,0}, + [I(193,236)] = {64,0}, + [I(194,236)] = {64,0}, + [I(195,236)] = {64,0}, + [I(196,236)] = {64,0}, + [I(197,236)] = {64,0}, + [I(198,236)] = {64,0}, + [I(199,236)] = {64,0}, + [I(200,236)] = {64,0}, + [I(201,236)] = {64,0}, + [I(202,236)] = {64,0}, + [I(203,236)] = {64,0}, + [I(204,236)] = {64,0}, + [I(205,236)] = {64,0}, + [I(206,236)] = {64,0}, + [I(207,236)] = {64,0}, + [I(208,236)] = {64,0}, + [I(209,236)] = {64,0}, + [I(210,236)] = {64,0}, + [I(211,236)] = {64,0}, + [I(212,236)] = {64,0}, + [I(213,236)] = {64,0}, + [I(214,236)] = {64,0}, + [I(215,236)] = {64,0}, + [I(216,236)] = {64,0}, + [I(217,236)] = {64,0}, + [I(218,236)] = {64,0}, + [I(219,236)] = {64,0}, + [I(220,236)] = {64,0}, + [I(221,236)] = {64,0}, + [I(222,236)] = {64,0}, + [I(223,236)] = {64,0}, + [I(224,236)] = {64,0}, + [I(225,236)] = {64,0}, + [I(226,236)] = {64,0}, + [I(227,236)] = {64,0}, + [I(228,236)] = {64,0}, + [I(229,236)] = {64,0}, + [I(230,236)] = {64,0}, + [I(231,236)] = {64,0}, + [I(232,236)] = {64,0}, + [I(233,236)] = {64,0}, + [I(234,236)] = {64,0}, + [I(235,236)] = {64,0}, + [I(236,236)] = {64,0}, + [I(237,236)] = {64,0}, + [I(238,236)] = {64,0}, + [I(239,236)] = {64,0}, + [I(240,236)] = {64,0}, + [I(241,236)] = {64,0}, + [I(242,236)] = {64,0}, + [I(243,236)] = {64,0}, + [I(244,236)] = {64,0}, + [I(245,236)] = {64,0}, + [I(246,236)] = {64,0}, + [I(247,236)] = {64,0}, + [I(248,236)] = {64,0}, + [I(249,236)] = {64,0}, + [I(250,236)] = {64,0}, + [I(251,236)] = {64,0}, + [I(252,236)] = {64,0}, + [I(253,236)] = {64,0}, + [I(254,236)] = {64,0}, + [I(255,236)] = {64,0}, + [I(0,237)] = {64,0}, + [I(1,237)] = {64,0}, + [I(2,237)] = {64,0}, + [I(3,237)] = {64,0}, + [I(4,237)] = {64,0}, + [I(5,237)] = {64,0}, + [I(6,237)] = {64,0}, + [I(7,237)] = {64,0}, + [I(8,237)] = {64,0}, + [I(9,237)] = {64,0}, + [I(10,237)] = {64,0}, + [I(11,237)] = {64,0}, + [I(12,237)] = {64,0}, + [I(13,237)] = {64,0}, + [I(14,237)] = {64,0}, + [I(15,237)] = {64,0}, + [I(16,237)] = {64,0}, + [I(17,237)] = {64,0}, + [I(18,237)] = {64,0}, + [I(19,237)] = {64,0}, + [I(20,237)] = {64,0}, + [I(21,237)] = {64,0}, + [I(22,237)] = {64,0}, + [I(23,237)] = {64,0}, + [I(24,237)] = {64,0}, + [I(25,237)] = {64,0}, + [I(26,237)] = {64,0}, + [I(27,237)] = {64,0}, + [I(28,237)] = {64,0}, + [I(29,237)] = {64,0}, + [I(30,237)] = {64,0}, + [I(31,237)] = {64,0}, + [I(32,237)] = {30,0x14FFFFF5}, + [I(33,237)] = {64,0}, + [I(34,237)] = {64,0}, + [I(35,237)] = {64,0}, + [I(36,237)] = {64,0}, + [I(37,237)] = {30,0x15FFFFF5}, + [I(38,237)] = {X32,0xF8FFFFF5}, + [I(39,237)] = {64,0}, + [I(40,237)] = {64,0}, + [I(41,237)] = {64,0}, + [I(42,237)] = {X32,0xF9FFFFF5}, + [I(43,237)] = {64,0}, + [I(44,237)] = {X32,0xFAFFFFF5}, + [I(45,237)] = {30,0x16FFFFF5}, + [I(46,237)] = {30,0x17FFFFF5}, + [I(47,237)] = {30,0x18FFFFF5}, + [I(48,237)] = {29,0xFFFFF5}, + [I(49,237)] = {29,0x1FFFFF5}, + [I(50,237)] = {29,0x2FFFFF5}, + [I(51,237)] = {30,0x19FFFFF5}, + [I(52,237)] = {30,0x1AFFFFF5}, + [I(53,237)] = {30,0x1BFFFFF5}, + [I(54,237)] = {30,0x1CFFFFF5}, + [I(55,237)] = {30,0x1DFFFFF5}, + [I(56,237)] = {30,0x1EFFFFF5}, + [I(57,237)] = {30,0x1FFFFFF5}, + [I(58,237)] = {31,0x5CFFFFF5}, + [I(59,237)] = {X32,0xFBFFFFF5}, + [I(60,237)] = {64,0}, + [I(61,237)] = {30,0x20FFFFF5}, + [I(62,237)] = {64,0}, + [I(63,237)] = {64,0}, + [I(64,237)] = {64,0}, + [I(65,237)] = {30,0x21FFFFF5}, + [I(66,237)] = {31,0x5DFFFFF5}, + [I(67,237)] = {31,0x5EFFFFF5}, + [I(68,237)] = {31,0x5FFFFFF5}, + [I(69,237)] = {31,0x60FFFFF5}, + [I(70,237)] = {31,0x61FFFFF5}, + [I(71,237)] = {31,0x62FFFFF5}, + [I(72,237)] = {31,0x63FFFFF5}, + [I(73,237)] = {31,0x64FFFFF5}, + [I(74,237)] = {31,0x65FFFFF5}, + [I(75,237)] = {31,0x66FFFFF5}, + [I(76,237)] = {31,0x67FFFFF5}, + [I(77,237)] = {31,0x68FFFFF5}, + [I(78,237)] = {31,0x69FFFFF5}, + [I(79,237)] = {31,0x6AFFFFF5}, + [I(80,237)] = {31,0x6BFFFFF5}, + [I(81,237)] = {31,0x6CFFFFF5}, + [I(82,237)] = {31,0x6DFFFFF5}, + [I(83,237)] = {31,0x6EFFFFF5}, + [I(84,237)] = {31,0x6FFFFFF5}, + [I(85,237)] = {31,0x70FFFFF5}, + [I(86,237)] = {31,0x71FFFFF5}, + [I(87,237)] = {31,0x72FFFFF5}, + [I(88,237)] = {X32,0xFCFFFFF5}, + [I(89,237)] = {31,0x73FFFFF5}, + [I(90,237)] = {X32,0xFDFFFFF5}, + [I(91,237)] = {64,0}, + [I(92,237)] = {64,0}, + [I(93,237)] = {64,0}, + [I(94,237)] = {64,0}, + [I(95,237)] = {30,0x22FFFFF5}, + [I(96,237)] = {64,0}, + [I(97,237)] = {29,0x3FFFFF5}, + [I(98,237)] = {30,0x23FFFFF5}, + [I(99,237)] = {29,0x4FFFFF5}, + [I(100,237)] = {30,0x24FFFFF5}, + [I(101,237)] = {29,0x5FFFFF5}, + [I(102,237)] = {30,0x25FFFFF5}, + [I(103,237)] = {30,0x26FFFFF5}, + [I(104,237)] = {30,0x27FFFFF5}, + [I(105,237)] = {29,0x6FFFFF5}, + [I(106,237)] = {31,0x74FFFFF5}, + [I(107,237)] = {31,0x75FFFFF5}, + [I(108,237)] = {30,0x28FFFFF5}, + [I(109,237)] = {30,0x29FFFFF5}, + [I(110,237)] = {30,0x2AFFFFF5}, + [I(111,237)] = {29,0x7FFFFF5}, + [I(112,237)] = {30,0x2BFFFFF5}, + [I(113,237)] = {31,0x76FFFFF5}, + [I(114,237)] = {30,0x2CFFFFF5}, + [I(115,237)] = {29,0x8FFFFF5}, + [I(116,237)] = {29,0x9FFFFF5}, + [I(117,237)] = {30,0x2DFFFFF5}, + [I(118,237)] = {31,0x77FFFFF5}, + [I(119,237)] = {31,0x78FFFFF5}, + [I(120,237)] = {31,0x79FFFFF5}, + [I(121,237)] = {31,0x7AFFFFF5}, + [I(122,237)] = {31,0x7BFFFFF5}, + [I(123,237)] = {64,0}, + [I(124,237)] = {64,0}, + [I(125,237)] = {64,0}, + [I(126,237)] = {64,0}, + [I(127,237)] = {64,0}, + [I(128,237)] = {64,0}, + [I(129,237)] = {64,0}, + [I(130,237)] = {64,0}, + [I(131,237)] = {64,0}, + [I(132,237)] = {64,0}, + [I(133,237)] = {64,0}, + [I(134,237)] = {64,0}, + [I(135,237)] = {64,0}, + [I(136,237)] = {64,0}, + [I(137,237)] = {64,0}, + [I(138,237)] = {64,0}, + [I(139,237)] = {64,0}, + [I(140,237)] = {64,0}, + [I(141,237)] = {64,0}, + [I(142,237)] = {64,0}, + [I(143,237)] = {64,0}, + [I(144,237)] = {64,0}, + [I(145,237)] = {64,0}, + [I(146,237)] = {64,0}, + [I(147,237)] = {64,0}, + [I(148,237)] = {64,0}, + [I(149,237)] = {64,0}, + [I(150,237)] = {64,0}, + [I(151,237)] = {64,0}, + [I(152,237)] = {64,0}, + [I(153,237)] = {64,0}, + [I(154,237)] = {64,0}, + [I(155,237)] = {64,0}, + [I(156,237)] = {64,0}, + [I(157,237)] = {64,0}, + [I(158,237)] = {64,0}, + [I(159,237)] = {64,0}, + [I(160,237)] = {64,0}, + [I(161,237)] = {64,0}, + [I(162,237)] = {64,0}, + [I(163,237)] = {64,0}, + [I(164,237)] = {64,0}, + [I(165,237)] = {64,0}, + [I(166,237)] = {64,0}, + [I(167,237)] = {64,0}, + [I(168,237)] = {64,0}, + [I(169,237)] = {64,0}, + [I(170,237)] = {64,0}, + [I(171,237)] = {64,0}, + [I(172,237)] = {64,0}, + [I(173,237)] = {64,0}, + [I(174,237)] = {64,0}, + [I(175,237)] = {64,0}, + [I(176,237)] = {64,0}, + [I(177,237)] = {64,0}, + [I(178,237)] = {64,0}, + [I(179,237)] = {64,0}, + [I(180,237)] = {64,0}, + [I(181,237)] = {64,0}, + [I(182,237)] = {64,0}, + [I(183,237)] = {64,0}, + [I(184,237)] = {64,0}, + [I(185,237)] = {64,0}, + [I(186,237)] = {64,0}, + [I(187,237)] = {64,0}, + [I(188,237)] = {64,0}, + [I(189,237)] = {64,0}, + [I(190,237)] = {64,0}, + [I(191,237)] = {64,0}, + [I(192,237)] = {64,0}, + [I(193,237)] = {64,0}, + [I(194,237)] = {64,0}, + [I(195,237)] = {64,0}, + [I(196,237)] = {64,0}, + [I(197,237)] = {64,0}, + [I(198,237)] = {64,0}, + [I(199,237)] = {64,0}, + [I(200,237)] = {64,0}, + [I(201,237)] = {64,0}, + [I(202,237)] = {64,0}, + [I(203,237)] = {64,0}, + [I(204,237)] = {64,0}, + [I(205,237)] = {64,0}, + [I(206,237)] = {64,0}, + [I(207,237)] = {64,0}, + [I(208,237)] = {64,0}, + [I(209,237)] = {64,0}, + [I(210,237)] = {64,0}, + [I(211,237)] = {64,0}, + [I(212,237)] = {64,0}, + [I(213,237)] = {64,0}, + [I(214,237)] = {64,0}, + [I(215,237)] = {64,0}, + [I(216,237)] = {64,0}, + [I(217,237)] = {64,0}, + [I(218,237)] = {64,0}, + [I(219,237)] = {64,0}, + [I(220,237)] = {64,0}, + [I(221,237)] = {64,0}, + [I(222,237)] = {64,0}, + [I(223,237)] = {64,0}, + [I(224,237)] = {64,0}, + [I(225,237)] = {64,0}, + [I(226,237)] = {64,0}, + [I(227,237)] = {64,0}, + [I(228,237)] = {64,0}, + [I(229,237)] = {64,0}, + [I(230,237)] = {64,0}, + [I(231,237)] = {64,0}, + [I(232,237)] = {64,0}, + [I(233,237)] = {64,0}, + [I(234,237)] = {64,0}, + [I(235,237)] = {64,0}, + [I(236,237)] = {64,0}, + [I(237,237)] = {64,0}, + [I(238,237)] = {64,0}, + [I(239,237)] = {64,0}, + [I(240,237)] = {64,0}, + [I(241,237)] = {64,0}, + [I(242,237)] = {64,0}, + [I(243,237)] = {64,0}, + [I(244,237)] = {64,0}, + [I(245,237)] = {64,0}, + [I(246,237)] = {64,0}, + [I(247,237)] = {64,0}, + [I(248,237)] = {64,0}, + [I(249,237)] = {64,0}, + [I(250,237)] = {64,0}, + [I(251,237)] = {64,0}, + [I(252,237)] = {64,0}, + [I(253,237)] = {64,0}, + [I(254,237)] = {64,0}, + [I(255,237)] = {64,0}, + [I(0,238)] = {64,0}, + [I(1,238)] = {64,0}, + [I(2,238)] = {64,0}, + [I(3,238)] = {64,0}, + [I(4,238)] = {64,0}, + [I(5,238)] = {64,0}, + [I(6,238)] = {64,0}, + [I(7,238)] = {64,0}, + [I(8,238)] = {64,0}, + [I(9,238)] = {64,0}, + [I(10,238)] = {64,0}, + [I(11,238)] = {64,0}, + [I(12,238)] = {64,0}, + [I(13,238)] = {64,0}, + [I(14,238)] = {64,0}, + [I(15,238)] = {64,0}, + [I(16,238)] = {64,0}, + [I(17,238)] = {64,0}, + [I(18,238)] = {64,0}, + [I(19,238)] = {64,0}, + [I(20,238)] = {64,0}, + [I(21,238)] = {64,0}, + [I(22,238)] = {64,0}, + [I(23,238)] = {64,0}, + [I(24,238)] = {64,0}, + [I(25,238)] = {64,0}, + [I(26,238)] = {64,0}, + [I(27,238)] = {64,0}, + [I(28,238)] = {64,0}, + [I(29,238)] = {64,0}, + [I(30,238)] = {64,0}, + [I(31,238)] = {64,0}, + [I(32,238)] = {X32,0x53FFFFEA}, + [I(33,238)] = {64,0}, + [I(34,238)] = {64,0}, + [I(35,238)] = {64,0}, + [I(36,238)] = {64,0}, + [I(37,238)] = {X32,0x57FFFFEA}, + [I(38,238)] = {64,0}, + [I(39,238)] = {64,0}, + [I(40,238)] = {64,0}, + [I(41,238)] = {64,0}, + [I(42,238)] = {64,0}, + [I(43,238)] = {64,0}, + [I(44,238)] = {64,0}, + [I(45,238)] = {X32,0x5BFFFFEA}, + [I(46,238)] = {X32,0x5FFFFFEA}, + [I(47,238)] = {X32,0x63FFFFEA}, + [I(48,238)] = {31,0x3FFFFEA}, + [I(49,238)] = {31,0x7FFFFEA}, + [I(50,238)] = {31,0xBFFFFEA}, + [I(51,238)] = {X32,0x67FFFFEA}, + [I(52,238)] = {X32,0x6BFFFFEA}, + [I(53,238)] = {X32,0x6FFFFFEA}, + [I(54,238)] = {X32,0x73FFFFEA}, + [I(55,238)] = {X32,0x77FFFFEA}, + [I(56,238)] = {X32,0x7BFFFFEA}, + [I(57,238)] = {X32,0x7FFFFFEA}, + [I(58,238)] = {64,0}, + [I(59,238)] = {64,0}, + [I(60,238)] = {64,0}, + [I(61,238)] = {X32,0x83FFFFEA}, + [I(62,238)] = {64,0}, + [I(63,238)] = {64,0}, + [I(64,238)] = {64,0}, + [I(65,238)] = {X32,0x87FFFFEA}, + [I(66,238)] = {64,0}, + [I(67,238)] = {64,0}, + [I(68,238)] = {64,0}, + [I(69,238)] = {64,0}, + [I(70,238)] = {64,0}, + [I(71,238)] = {64,0}, + [I(72,238)] = {64,0}, + [I(73,238)] = {64,0}, + [I(74,238)] = {64,0}, + [I(75,238)] = {64,0}, + [I(76,238)] = {64,0}, + [I(77,238)] = {64,0}, + [I(78,238)] = {64,0}, + [I(79,238)] = {64,0}, + [I(80,238)] = {64,0}, + [I(81,238)] = {64,0}, + [I(82,238)] = {64,0}, + [I(83,238)] = {64,0}, + [I(84,238)] = {64,0}, + [I(85,238)] = {64,0}, + [I(86,238)] = {64,0}, + [I(87,238)] = {64,0}, + [I(88,238)] = {64,0}, + [I(89,238)] = {64,0}, + [I(90,238)] = {64,0}, + [I(91,238)] = {64,0}, + [I(92,238)] = {64,0}, + [I(93,238)] = {64,0}, + [I(94,238)] = {64,0}, + [I(95,238)] = {X32,0x8BFFFFEA}, + [I(96,238)] = {64,0}, + [I(97,238)] = {31,0xFFFFFEA}, + [I(98,238)] = {X32,0x8FFFFFEA}, + [I(99,238)] = {31,0x13FFFFEA}, + [I(100,238)] = {X32,0x93FFFFEA}, + [I(101,238)] = {31,0x17FFFFEA}, + [I(102,238)] = {X32,0x97FFFFEA}, + [I(103,238)] = {X32,0x9BFFFFEA}, + [I(104,238)] = {X32,0x9FFFFFEA}, + [I(105,238)] = {31,0x1BFFFFEA}, + [I(106,238)] = {64,0}, + [I(107,238)] = {64,0}, + [I(108,238)] = {X32,0xA3FFFFEA}, + [I(109,238)] = {X32,0xA7FFFFEA}, + [I(110,238)] = {X32,0xABFFFFEA}, + [I(111,238)] = {31,0x1FFFFFEA}, + [I(112,238)] = {X32,0xAFFFFFEA}, + [I(113,238)] = {64,0}, + [I(114,238)] = {X32,0xB3FFFFEA}, + [I(115,238)] = {31,0x23FFFFEA}, + [I(116,238)] = {31,0x27FFFFEA}, + [I(117,238)] = {X32,0xB7FFFFEA}, + [I(118,238)] = {64,0}, + [I(119,238)] = {64,0}, + [I(120,238)] = {64,0}, + [I(121,238)] = {64,0}, + [I(122,238)] = {64,0}, + [I(123,238)] = {64,0}, + [I(124,238)] = {64,0}, + [I(125,238)] = {64,0}, + [I(126,238)] = {64,0}, + [I(127,238)] = {64,0}, + [I(128,238)] = {64,0}, + [I(129,238)] = {64,0}, + [I(130,238)] = {64,0}, + [I(131,238)] = {64,0}, + [I(132,238)] = {64,0}, + [I(133,238)] = {64,0}, + [I(134,238)] = {64,0}, + [I(135,238)] = {64,0}, + [I(136,238)] = {64,0}, + [I(137,238)] = {64,0}, + [I(138,238)] = {64,0}, + [I(139,238)] = {64,0}, + [I(140,238)] = {64,0}, + [I(141,238)] = {64,0}, + [I(142,238)] = {64,0}, + [I(143,238)] = {64,0}, + [I(144,238)] = {64,0}, + [I(145,238)] = {64,0}, + [I(146,238)] = {64,0}, + [I(147,238)] = {64,0}, + [I(148,238)] = {64,0}, + [I(149,238)] = {64,0}, + [I(150,238)] = {64,0}, + [I(151,238)] = {64,0}, + [I(152,238)] = {64,0}, + [I(153,238)] = {64,0}, + [I(154,238)] = {64,0}, + [I(155,238)] = {64,0}, + [I(156,238)] = {64,0}, + [I(157,238)] = {64,0}, + [I(158,238)] = {64,0}, + [I(159,238)] = {64,0}, + [I(160,238)] = {64,0}, + [I(161,238)] = {64,0}, + [I(162,238)] = {64,0}, + [I(163,238)] = {64,0}, + [I(164,238)] = {64,0}, + [I(165,238)] = {64,0}, + [I(166,238)] = {64,0}, + [I(167,238)] = {64,0}, + [I(168,238)] = {64,0}, + [I(169,238)] = {64,0}, + [I(170,238)] = {64,0}, + [I(171,238)] = {64,0}, + [I(172,238)] = {64,0}, + [I(173,238)] = {64,0}, + [I(174,238)] = {64,0}, + [I(175,238)] = {64,0}, + [I(176,238)] = {64,0}, + [I(177,238)] = {64,0}, + [I(178,238)] = {64,0}, + [I(179,238)] = {64,0}, + [I(180,238)] = {64,0}, + [I(181,238)] = {64,0}, + [I(182,238)] = {64,0}, + [I(183,238)] = {64,0}, + [I(184,238)] = {64,0}, + [I(185,238)] = {64,0}, + [I(186,238)] = {64,0}, + [I(187,238)] = {64,0}, + [I(188,238)] = {64,0}, + [I(189,238)] = {64,0}, + [I(190,238)] = {64,0}, + [I(191,238)] = {64,0}, + [I(192,238)] = {64,0}, + [I(193,238)] = {64,0}, + [I(194,238)] = {64,0}, + [I(195,238)] = {64,0}, + [I(196,238)] = {64,0}, + [I(197,238)] = {64,0}, + [I(198,238)] = {64,0}, + [I(199,238)] = {64,0}, + [I(200,238)] = {64,0}, + [I(201,238)] = {64,0}, + [I(202,238)] = {64,0}, + [I(203,238)] = {64,0}, + [I(204,238)] = {64,0}, + [I(205,238)] = {64,0}, + [I(206,238)] = {64,0}, + [I(207,238)] = {64,0}, + [I(208,238)] = {64,0}, + [I(209,238)] = {64,0}, + [I(210,238)] = {64,0}, + [I(211,238)] = {64,0}, + [I(212,238)] = {64,0}, + [I(213,238)] = {64,0}, + [I(214,238)] = {64,0}, + [I(215,238)] = {64,0}, + [I(216,238)] = {64,0}, + [I(217,238)] = {64,0}, + [I(218,238)] = {64,0}, + [I(219,238)] = {64,0}, + [I(220,238)] = {64,0}, + [I(221,238)] = {64,0}, + [I(222,238)] = {64,0}, + [I(223,238)] = {64,0}, + [I(224,238)] = {64,0}, + [I(225,238)] = {64,0}, + [I(226,238)] = {64,0}, + [I(227,238)] = {64,0}, + [I(228,238)] = {64,0}, + [I(229,238)] = {64,0}, + [I(230,238)] = {64,0}, + [I(231,238)] = {64,0}, + [I(232,238)] = {64,0}, + [I(233,238)] = {64,0}, + [I(234,238)] = {64,0}, + [I(235,238)] = {64,0}, + [I(236,238)] = {64,0}, + [I(237,238)] = {64,0}, + [I(238,238)] = {64,0}, + [I(239,238)] = {64,0}, + [I(240,238)] = {64,0}, + [I(241,238)] = {64,0}, + [I(242,238)] = {64,0}, + [I(243,238)] = {64,0}, + [I(244,238)] = {64,0}, + [I(245,238)] = {64,0}, + [I(246,238)] = {64,0}, + [I(247,238)] = {64,0}, + [I(248,238)] = {64,0}, + [I(249,238)] = {64,0}, + [I(250,238)] = {64,0}, + [I(251,238)] = {64,0}, + [I(252,238)] = {64,0}, + [I(253,238)] = {64,0}, + [I(254,238)] = {64,0}, + [I(255,238)] = {64,0}, + [I(0,239)] = {64,0}, + [I(1,239)] = {64,0}, + [I(2,239)] = {64,0}, + [I(3,239)] = {64,0}, + [I(4,239)] = {64,0}, + [I(5,239)] = {64,0}, + [I(6,239)] = {64,0}, + [I(7,239)] = {64,0}, + [I(8,239)] = {64,0}, + [I(9,239)] = {64,0}, + [I(10,239)] = {64,0}, + [I(11,239)] = {64,0}, + [I(12,239)] = {64,0}, + [I(13,239)] = {64,0}, + [I(14,239)] = {64,0}, + [I(15,239)] = {64,0}, + [I(16,239)] = {64,0}, + [I(17,239)] = {64,0}, + [I(18,239)] = {64,0}, + [I(19,239)] = {64,0}, + [I(20,239)] = {64,0}, + [I(21,239)] = {64,0}, + [I(22,239)] = {64,0}, + [I(23,239)] = {64,0}, + [I(24,239)] = {64,0}, + [I(25,239)] = {64,0}, + [I(26,239)] = {64,0}, + [I(27,239)] = {64,0}, + [I(28,239)] = {64,0}, + [I(29,239)] = {64,0}, + [I(30,239)] = {64,0}, + [I(31,239)] = {64,0}, + [I(32,239)] = {29,0xA7FFFF4}, + [I(33,239)] = {64,0}, + [I(34,239)] = {64,0}, + [I(35,239)] = {64,0}, + [I(36,239)] = {64,0}, + [I(37,239)] = {29,0xAFFFFF4}, + [I(38,239)] = {31,0x7C7FFFF4}, + [I(39,239)] = {64,0}, + [I(40,239)] = {64,0}, + [I(41,239)] = {64,0}, + [I(42,239)] = {31,0x7CFFFFF4}, + [I(43,239)] = {64,0}, + [I(44,239)] = {31,0x7D7FFFF4}, + [I(45,239)] = {29,0xB7FFFF4}, + [I(46,239)] = {29,0xBFFFFF4}, + [I(47,239)] = {29,0xC7FFFF4}, + [I(48,239)] = {28,0x7FFFF4}, + [I(49,239)] = {28,0xFFFFF4}, + [I(50,239)] = {28,0x17FFFF4}, + [I(51,239)] = {29,0xCFFFFF4}, + [I(52,239)] = {29,0xD7FFFF4}, + [I(53,239)] = {29,0xDFFFFF4}, + [I(54,239)] = {29,0xE7FFFF4}, + [I(55,239)] = {29,0xEFFFFF4}, + [I(56,239)] = {29,0xF7FFFF4}, + [I(57,239)] = {29,0xFFFFFF4}, + [I(58,239)] = {30,0x2E7FFFF4}, + [I(59,239)] = {31,0x7DFFFFF4}, + [I(60,239)] = {64,0}, + [I(61,239)] = {29,0x107FFFF4}, + [I(62,239)] = {64,0}, + [I(63,239)] = {64,0}, + [I(64,239)] = {64,0}, + [I(65,239)] = {29,0x10FFFFF4}, + [I(66,239)] = {30,0x2EFFFFF4}, + [I(67,239)] = {30,0x2F7FFFF4}, + [I(68,239)] = {30,0x2FFFFFF4}, + [I(69,239)] = {30,0x307FFFF4}, + [I(70,239)] = {30,0x30FFFFF4}, + [I(71,239)] = {30,0x317FFFF4}, + [I(72,239)] = {30,0x31FFFFF4}, + [I(73,239)] = {30,0x327FFFF4}, + [I(74,239)] = {30,0x32FFFFF4}, + [I(75,239)] = {30,0x337FFFF4}, + [I(76,239)] = {30,0x33FFFFF4}, + [I(77,239)] = {30,0x347FFFF4}, + [I(78,239)] = {30,0x34FFFFF4}, + [I(79,239)] = {30,0x357FFFF4}, + [I(80,239)] = {30,0x35FFFFF4}, + [I(81,239)] = {30,0x367FFFF4}, + [I(82,239)] = {30,0x36FFFFF4}, + [I(83,239)] = {30,0x377FFFF4}, + [I(84,239)] = {30,0x37FFFFF4}, + [I(85,239)] = {30,0x387FFFF4}, + [I(86,239)] = {30,0x38FFFFF4}, + [I(87,239)] = {30,0x397FFFF4}, + [I(88,239)] = {31,0x7E7FFFF4}, + [I(89,239)] = {30,0x39FFFFF4}, + [I(90,239)] = {31,0x7EFFFFF4}, + [I(91,239)] = {64,0}, + [I(92,239)] = {64,0}, + [I(93,239)] = {64,0}, + [I(94,239)] = {64,0}, + [I(95,239)] = {29,0x117FFFF4}, + [I(96,239)] = {64,0}, + [I(97,239)] = {28,0x1FFFFF4}, + [I(98,239)] = {29,0x11FFFFF4}, + [I(99,239)] = {28,0x27FFFF4}, + [I(100,239)] = {29,0x127FFFF4}, + [I(101,239)] = {28,0x2FFFFF4}, + [I(102,239)] = {29,0x12FFFFF4}, + [I(103,239)] = {29,0x137FFFF4}, + [I(104,239)] = {29,0x13FFFFF4}, + [I(105,239)] = {28,0x37FFFF4}, + [I(106,239)] = {30,0x3A7FFFF4}, + [I(107,239)] = {30,0x3AFFFFF4}, + [I(108,239)] = {29,0x147FFFF4}, + [I(109,239)] = {29,0x14FFFFF4}, + [I(110,239)] = {29,0x157FFFF4}, + [I(111,239)] = {28,0x3FFFFF4}, + [I(112,239)] = {29,0x15FFFFF4}, + [I(113,239)] = {30,0x3B7FFFF4}, + [I(114,239)] = {29,0x167FFFF4}, + [I(115,239)] = {28,0x47FFFF4}, + [I(116,239)] = {28,0x4FFFFF4}, + [I(117,239)] = {29,0x16FFFFF4}, + [I(118,239)] = {30,0x3BFFFFF4}, + [I(119,239)] = {30,0x3C7FFFF4}, + [I(120,239)] = {30,0x3CFFFFF4}, + [I(121,239)] = {30,0x3D7FFFF4}, + [I(122,239)] = {30,0x3DFFFFF4}, + [I(123,239)] = {64,0}, + [I(124,239)] = {64,0}, + [I(125,239)] = {64,0}, + [I(126,239)] = {64,0}, + [I(127,239)] = {64,0}, + [I(128,239)] = {64,0}, + [I(129,239)] = {64,0}, + [I(130,239)] = {64,0}, + [I(131,239)] = {64,0}, + [I(132,239)] = {64,0}, + [I(133,239)] = {64,0}, + [I(134,239)] = {64,0}, + [I(135,239)] = {64,0}, + [I(136,239)] = {64,0}, + [I(137,239)] = {64,0}, + [I(138,239)] = {64,0}, + [I(139,239)] = {64,0}, + [I(140,239)] = {64,0}, + [I(141,239)] = {64,0}, + [I(142,239)] = {64,0}, + [I(143,239)] = {64,0}, + [I(144,239)] = {64,0}, + [I(145,239)] = {64,0}, + [I(146,239)] = {64,0}, + [I(147,239)] = {64,0}, + [I(148,239)] = {64,0}, + [I(149,239)] = {64,0}, + [I(150,239)] = {64,0}, + [I(151,239)] = {64,0}, + [I(152,239)] = {64,0}, + [I(153,239)] = {64,0}, + [I(154,239)] = {64,0}, + [I(155,239)] = {64,0}, + [I(156,239)] = {64,0}, + [I(157,239)] = {64,0}, + [I(158,239)] = {64,0}, + [I(159,239)] = {64,0}, + [I(160,239)] = {64,0}, + [I(161,239)] = {64,0}, + [I(162,239)] = {64,0}, + [I(163,239)] = {64,0}, + [I(164,239)] = {64,0}, + [I(165,239)] = {64,0}, + [I(166,239)] = {64,0}, + [I(167,239)] = {64,0}, + [I(168,239)] = {64,0}, + [I(169,239)] = {64,0}, + [I(170,239)] = {64,0}, + [I(171,239)] = {64,0}, + [I(172,239)] = {64,0}, + [I(173,239)] = {64,0}, + [I(174,239)] = {64,0}, + [I(175,239)] = {64,0}, + [I(176,239)] = {64,0}, + [I(177,239)] = {64,0}, + [I(178,239)] = {64,0}, + [I(179,239)] = {64,0}, + [I(180,239)] = {64,0}, + [I(181,239)] = {64,0}, + [I(182,239)] = {64,0}, + [I(183,239)] = {64,0}, + [I(184,239)] = {64,0}, + [I(185,239)] = {64,0}, + [I(186,239)] = {64,0}, + [I(187,239)] = {64,0}, + [I(188,239)] = {64,0}, + [I(189,239)] = {64,0}, + [I(190,239)] = {64,0}, + [I(191,239)] = {64,0}, + [I(192,239)] = {64,0}, + [I(193,239)] = {64,0}, + [I(194,239)] = {64,0}, + [I(195,239)] = {64,0}, + [I(196,239)] = {64,0}, + [I(197,239)] = {64,0}, + [I(198,239)] = {64,0}, + [I(199,239)] = {64,0}, + [I(200,239)] = {64,0}, + [I(201,239)] = {64,0}, + [I(202,239)] = {64,0}, + [I(203,239)] = {64,0}, + [I(204,239)] = {64,0}, + [I(205,239)] = {64,0}, + [I(206,239)] = {64,0}, + [I(207,239)] = {64,0}, + [I(208,239)] = {64,0}, + [I(209,239)] = {64,0}, + [I(210,239)] = {64,0}, + [I(211,239)] = {64,0}, + [I(212,239)] = {64,0}, + [I(213,239)] = {64,0}, + [I(214,239)] = {64,0}, + [I(215,239)] = {64,0}, + [I(216,239)] = {64,0}, + [I(217,239)] = {64,0}, + [I(218,239)] = {64,0}, + [I(219,239)] = {64,0}, + [I(220,239)] = {64,0}, + [I(221,239)] = {64,0}, + [I(222,239)] = {64,0}, + [I(223,239)] = {64,0}, + [I(224,239)] = {64,0}, + [I(225,239)] = {64,0}, + [I(226,239)] = {64,0}, + [I(227,239)] = {64,0}, + [I(228,239)] = {64,0}, + [I(229,239)] = {64,0}, + [I(230,239)] = {64,0}, + [I(231,239)] = {64,0}, + [I(232,239)] = {64,0}, + [I(233,239)] = {64,0}, + [I(234,239)] = {64,0}, + [I(235,239)] = {64,0}, + [I(236,239)] = {64,0}, + [I(237,239)] = {64,0}, + [I(238,239)] = {64,0}, + [I(239,239)] = {64,0}, + [I(240,239)] = {64,0}, + [I(241,239)] = {64,0}, + [I(242,239)] = {64,0}, + [I(243,239)] = {64,0}, + [I(244,239)] = {64,0}, + [I(245,239)] = {64,0}, + [I(246,239)] = {64,0}, + [I(247,239)] = {64,0}, + [I(248,239)] = {64,0}, + [I(249,239)] = {64,0}, + [I(250,239)] = {64,0}, + [I(251,239)] = {64,0}, + [I(252,239)] = {64,0}, + [I(253,239)] = {64,0}, + [I(254,239)] = {64,0}, + [I(255,239)] = {64,0}, + [I(0,240)] = {64,0}, + [I(1,240)] = {64,0}, + [I(2,240)] = {64,0}, + [I(3,240)] = {64,0}, + [I(4,240)] = {64,0}, + [I(5,240)] = {64,0}, + [I(6,240)] = {64,0}, + [I(7,240)] = {64,0}, + [I(8,240)] = {64,0}, + [I(9,240)] = {64,0}, + [I(10,240)] = {64,0}, + [I(11,240)] = {64,0}, + [I(12,240)] = {64,0}, + [I(13,240)] = {64,0}, + [I(14,240)] = {64,0}, + [I(15,240)] = {64,0}, + [I(16,240)] = {64,0}, + [I(17,240)] = {64,0}, + [I(18,240)] = {64,0}, + [I(19,240)] = {64,0}, + [I(20,240)] = {64,0}, + [I(21,240)] = {64,0}, + [I(22,240)] = {64,0}, + [I(23,240)] = {64,0}, + [I(24,240)] = {64,0}, + [I(25,240)] = {64,0}, + [I(26,240)] = {64,0}, + [I(27,240)] = {64,0}, + [I(28,240)] = {64,0}, + [I(29,240)] = {64,0}, + [I(30,240)] = {64,0}, + [I(31,240)] = {64,0}, + [I(32,240)] = {X32,0x53FFFFEB}, + [I(33,240)] = {64,0}, + [I(34,240)] = {64,0}, + [I(35,240)] = {64,0}, + [I(36,240)] = {64,0}, + [I(37,240)] = {X32,0x57FFFFEB}, + [I(38,240)] = {64,0}, + [I(39,240)] = {64,0}, + [I(40,240)] = {64,0}, + [I(41,240)] = {64,0}, + [I(42,240)] = {64,0}, + [I(43,240)] = {64,0}, + [I(44,240)] = {64,0}, + [I(45,240)] = {X32,0x5BFFFFEB}, + [I(46,240)] = {X32,0x5FFFFFEB}, + [I(47,240)] = {X32,0x63FFFFEB}, + [I(48,240)] = {31,0x3FFFFEB}, + [I(49,240)] = {31,0x7FFFFEB}, + [I(50,240)] = {31,0xBFFFFEB}, + [I(51,240)] = {X32,0x67FFFFEB}, + [I(52,240)] = {X32,0x6BFFFFEB}, + [I(53,240)] = {X32,0x6FFFFFEB}, + [I(54,240)] = {X32,0x73FFFFEB}, + [I(55,240)] = {X32,0x77FFFFEB}, + [I(56,240)] = {X32,0x7BFFFFEB}, + [I(57,240)] = {X32,0x7FFFFFEB}, + [I(58,240)] = {64,0}, + [I(59,240)] = {64,0}, + [I(60,240)] = {64,0}, + [I(61,240)] = {X32,0x83FFFFEB}, + [I(62,240)] = {64,0}, + [I(63,240)] = {64,0}, + [I(64,240)] = {64,0}, + [I(65,240)] = {X32,0x87FFFFEB}, + [I(66,240)] = {64,0}, + [I(67,240)] = {64,0}, + [I(68,240)] = {64,0}, + [I(69,240)] = {64,0}, + [I(70,240)] = {64,0}, + [I(71,240)] = {64,0}, + [I(72,240)] = {64,0}, + [I(73,240)] = {64,0}, + [I(74,240)] = {64,0}, + [I(75,240)] = {64,0}, + [I(76,240)] = {64,0}, + [I(77,240)] = {64,0}, + [I(78,240)] = {64,0}, + [I(79,240)] = {64,0}, + [I(80,240)] = {64,0}, + [I(81,240)] = {64,0}, + [I(82,240)] = {64,0}, + [I(83,240)] = {64,0}, + [I(84,240)] = {64,0}, + [I(85,240)] = {64,0}, + [I(86,240)] = {64,0}, + [I(87,240)] = {64,0}, + [I(88,240)] = {64,0}, + [I(89,240)] = {64,0}, + [I(90,240)] = {64,0}, + [I(91,240)] = {64,0}, + [I(92,240)] = {64,0}, + [I(93,240)] = {64,0}, + [I(94,240)] = {64,0}, + [I(95,240)] = {X32,0x8BFFFFEB}, + [I(96,240)] = {64,0}, + [I(97,240)] = {31,0xFFFFFEB}, + [I(98,240)] = {X32,0x8FFFFFEB}, + [I(99,240)] = {31,0x13FFFFEB}, + [I(100,240)] = {X32,0x93FFFFEB}, + [I(101,240)] = {31,0x17FFFFEB}, + [I(102,240)] = {X32,0x97FFFFEB}, + [I(103,240)] = {X32,0x9BFFFFEB}, + [I(104,240)] = {X32,0x9FFFFFEB}, + [I(105,240)] = {31,0x1BFFFFEB}, + [I(106,240)] = {64,0}, + [I(107,240)] = {64,0}, + [I(108,240)] = {X32,0xA3FFFFEB}, + [I(109,240)] = {X32,0xA7FFFFEB}, + [I(110,240)] = {X32,0xABFFFFEB}, + [I(111,240)] = {31,0x1FFFFFEB}, + [I(112,240)] = {X32,0xAFFFFFEB}, + [I(113,240)] = {64,0}, + [I(114,240)] = {X32,0xB3FFFFEB}, + [I(115,240)] = {31,0x23FFFFEB}, + [I(116,240)] = {31,0x27FFFFEB}, + [I(117,240)] = {X32,0xB7FFFFEB}, + [I(118,240)] = {64,0}, + [I(119,240)] = {64,0}, + [I(120,240)] = {64,0}, + [I(121,240)] = {64,0}, + [I(122,240)] = {64,0}, + [I(123,240)] = {64,0}, + [I(124,240)] = {64,0}, + [I(125,240)] = {64,0}, + [I(126,240)] = {64,0}, + [I(127,240)] = {64,0}, + [I(128,240)] = {64,0}, + [I(129,240)] = {64,0}, + [I(130,240)] = {64,0}, + [I(131,240)] = {64,0}, + [I(132,240)] = {64,0}, + [I(133,240)] = {64,0}, + [I(134,240)] = {64,0}, + [I(135,240)] = {64,0}, + [I(136,240)] = {64,0}, + [I(137,240)] = {64,0}, + [I(138,240)] = {64,0}, + [I(139,240)] = {64,0}, + [I(140,240)] = {64,0}, + [I(141,240)] = {64,0}, + [I(142,240)] = {64,0}, + [I(143,240)] = {64,0}, + [I(144,240)] = {64,0}, + [I(145,240)] = {64,0}, + [I(146,240)] = {64,0}, + [I(147,240)] = {64,0}, + [I(148,240)] = {64,0}, + [I(149,240)] = {64,0}, + [I(150,240)] = {64,0}, + [I(151,240)] = {64,0}, + [I(152,240)] = {64,0}, + [I(153,240)] = {64,0}, + [I(154,240)] = {64,0}, + [I(155,240)] = {64,0}, + [I(156,240)] = {64,0}, + [I(157,240)] = {64,0}, + [I(158,240)] = {64,0}, + [I(159,240)] = {64,0}, + [I(160,240)] = {64,0}, + [I(161,240)] = {64,0}, + [I(162,240)] = {64,0}, + [I(163,240)] = {64,0}, + [I(164,240)] = {64,0}, + [I(165,240)] = {64,0}, + [I(166,240)] = {64,0}, + [I(167,240)] = {64,0}, + [I(168,240)] = {64,0}, + [I(169,240)] = {64,0}, + [I(170,240)] = {64,0}, + [I(171,240)] = {64,0}, + [I(172,240)] = {64,0}, + [I(173,240)] = {64,0}, + [I(174,240)] = {64,0}, + [I(175,240)] = {64,0}, + [I(176,240)] = {64,0}, + [I(177,240)] = {64,0}, + [I(178,240)] = {64,0}, + [I(179,240)] = {64,0}, + [I(180,240)] = {64,0}, + [I(181,240)] = {64,0}, + [I(182,240)] = {64,0}, + [I(183,240)] = {64,0}, + [I(184,240)] = {64,0}, + [I(185,240)] = {64,0}, + [I(186,240)] = {64,0}, + [I(187,240)] = {64,0}, + [I(188,240)] = {64,0}, + [I(189,240)] = {64,0}, + [I(190,240)] = {64,0}, + [I(191,240)] = {64,0}, + [I(192,240)] = {64,0}, + [I(193,240)] = {64,0}, + [I(194,240)] = {64,0}, + [I(195,240)] = {64,0}, + [I(196,240)] = {64,0}, + [I(197,240)] = {64,0}, + [I(198,240)] = {64,0}, + [I(199,240)] = {64,0}, + [I(200,240)] = {64,0}, + [I(201,240)] = {64,0}, + [I(202,240)] = {64,0}, + [I(203,240)] = {64,0}, + [I(204,240)] = {64,0}, + [I(205,240)] = {64,0}, + [I(206,240)] = {64,0}, + [I(207,240)] = {64,0}, + [I(208,240)] = {64,0}, + [I(209,240)] = {64,0}, + [I(210,240)] = {64,0}, + [I(211,240)] = {64,0}, + [I(212,240)] = {64,0}, + [I(213,240)] = {64,0}, + [I(214,240)] = {64,0}, + [I(215,240)] = {64,0}, + [I(216,240)] = {64,0}, + [I(217,240)] = {64,0}, + [I(218,240)] = {64,0}, + [I(219,240)] = {64,0}, + [I(220,240)] = {64,0}, + [I(221,240)] = {64,0}, + [I(222,240)] = {64,0}, + [I(223,240)] = {64,0}, + [I(224,240)] = {64,0}, + [I(225,240)] = {64,0}, + [I(226,240)] = {64,0}, + [I(227,240)] = {64,0}, + [I(228,240)] = {64,0}, + [I(229,240)] = {64,0}, + [I(230,240)] = {64,0}, + [I(231,240)] = {64,0}, + [I(232,240)] = {64,0}, + [I(233,240)] = {64,0}, + [I(234,240)] = {64,0}, + [I(235,240)] = {64,0}, + [I(236,240)] = {64,0}, + [I(237,240)] = {64,0}, + [I(238,240)] = {64,0}, + [I(239,240)] = {64,0}, + [I(240,240)] = {64,0}, + [I(241,240)] = {64,0}, + [I(242,240)] = {64,0}, + [I(243,240)] = {64,0}, + [I(244,240)] = {64,0}, + [I(245,240)] = {64,0}, + [I(246,240)] = {64,0}, + [I(247,240)] = {64,0}, + [I(248,240)] = {64,0}, + [I(249,240)] = {64,0}, + [I(250,240)] = {64,0}, + [I(251,240)] = {64,0}, + [I(252,240)] = {64,0}, + [I(253,240)] = {64,0}, + [I(254,240)] = {64,0}, + [I(255,240)] = {64,0}, + [I(0,241)] = {64,0}, + [I(1,241)] = {64,0}, + [I(2,241)] = {64,0}, + [I(3,241)] = {64,0}, + [I(4,241)] = {64,0}, + [I(5,241)] = {64,0}, + [I(6,241)] = {64,0}, + [I(7,241)] = {64,0}, + [I(8,241)] = {64,0}, + [I(9,241)] = {64,0}, + [I(10,241)] = {64,0}, + [I(11,241)] = {64,0}, + [I(12,241)] = {64,0}, + [I(13,241)] = {64,0}, + [I(14,241)] = {64,0}, + [I(15,241)] = {64,0}, + [I(16,241)] = {64,0}, + [I(17,241)] = {64,0}, + [I(18,241)] = {64,0}, + [I(19,241)] = {64,0}, + [I(20,241)] = {64,0}, + [I(21,241)] = {64,0}, + [I(22,241)] = {64,0}, + [I(23,241)] = {64,0}, + [I(24,241)] = {64,0}, + [I(25,241)] = {64,0}, + [I(26,241)] = {64,0}, + [I(27,241)] = {64,0}, + [I(28,241)] = {64,0}, + [I(29,241)] = {64,0}, + [I(30,241)] = {64,0}, + [I(31,241)] = {64,0}, + [I(32,241)] = {64,0}, + [I(33,241)] = {64,0}, + [I(34,241)] = {64,0}, + [I(35,241)] = {64,0}, + [I(36,241)] = {64,0}, + [I(37,241)] = {64,0}, + [I(38,241)] = {64,0}, + [I(39,241)] = {64,0}, + [I(40,241)] = {64,0}, + [I(41,241)] = {64,0}, + [I(42,241)] = {64,0}, + [I(43,241)] = {64,0}, + [I(44,241)] = {64,0}, + [I(45,241)] = {64,0}, + [I(46,241)] = {64,0}, + [I(47,241)] = {64,0}, + [I(48,241)] = {X32,0x7FFFFE6}, + [I(49,241)] = {X32,0xFFFFFE6}, + [I(50,241)] = {X32,0x17FFFFE6}, + [I(51,241)] = {64,0}, + [I(52,241)] = {64,0}, + [I(53,241)] = {64,0}, + [I(54,241)] = {64,0}, + [I(55,241)] = {64,0}, + [I(56,241)] = {64,0}, + [I(57,241)] = {64,0}, + [I(58,241)] = {64,0}, + [I(59,241)] = {64,0}, + [I(60,241)] = {64,0}, + [I(61,241)] = {64,0}, + [I(62,241)] = {64,0}, + [I(63,241)] = {64,0}, + [I(64,241)] = {64,0}, + [I(65,241)] = {64,0}, + [I(66,241)] = {64,0}, + [I(67,241)] = {64,0}, + [I(68,241)] = {64,0}, + [I(69,241)] = {64,0}, + [I(70,241)] = {64,0}, + [I(71,241)] = {64,0}, + [I(72,241)] = {64,0}, + [I(73,241)] = {64,0}, + [I(74,241)] = {64,0}, + [I(75,241)] = {64,0}, + [I(76,241)] = {64,0}, + [I(77,241)] = {64,0}, + [I(78,241)] = {64,0}, + [I(79,241)] = {64,0}, + [I(80,241)] = {64,0}, + [I(81,241)] = {64,0}, + [I(82,241)] = {64,0}, + [I(83,241)] = {64,0}, + [I(84,241)] = {64,0}, + [I(85,241)] = {64,0}, + [I(86,241)] = {64,0}, + [I(87,241)] = {64,0}, + [I(88,241)] = {64,0}, + [I(89,241)] = {64,0}, + [I(90,241)] = {64,0}, + [I(91,241)] = {64,0}, + [I(92,241)] = {64,0}, + [I(93,241)] = {64,0}, + [I(94,241)] = {64,0}, + [I(95,241)] = {64,0}, + [I(96,241)] = {64,0}, + [I(97,241)] = {X32,0x1FFFFFE6}, + [I(98,241)] = {64,0}, + [I(99,241)] = {X32,0x27FFFFE6}, + [I(100,241)] = {64,0}, + [I(101,241)] = {X32,0x2FFFFFE6}, + [I(102,241)] = {64,0}, + [I(103,241)] = {64,0}, + [I(104,241)] = {64,0}, + [I(105,241)] = {X32,0x37FFFFE6}, + [I(106,241)] = {64,0}, + [I(107,241)] = {64,0}, + [I(108,241)] = {64,0}, + [I(109,241)] = {64,0}, + [I(110,241)] = {64,0}, + [I(111,241)] = {X32,0x3FFFFFE6}, + [I(112,241)] = {64,0}, + [I(113,241)] = {64,0}, + [I(114,241)] = {64,0}, + [I(115,241)] = {X32,0x47FFFFE6}, + [I(116,241)] = {X32,0x4FFFFFE6}, + [I(117,241)] = {64,0}, + [I(118,241)] = {64,0}, + [I(119,241)] = {64,0}, + [I(120,241)] = {64,0}, + [I(121,241)] = {64,0}, + [I(122,241)] = {64,0}, + [I(123,241)] = {64,0}, + [I(124,241)] = {64,0}, + [I(125,241)] = {64,0}, + [I(126,241)] = {64,0}, + [I(127,241)] = {64,0}, + [I(128,241)] = {64,0}, + [I(129,241)] = {64,0}, + [I(130,241)] = {64,0}, + [I(131,241)] = {64,0}, + [I(132,241)] = {64,0}, + [I(133,241)] = {64,0}, + [I(134,241)] = {64,0}, + [I(135,241)] = {64,0}, + [I(136,241)] = {64,0}, + [I(137,241)] = {64,0}, + [I(138,241)] = {64,0}, + [I(139,241)] = {64,0}, + [I(140,241)] = {64,0}, + [I(141,241)] = {64,0}, + [I(142,241)] = {64,0}, + [I(143,241)] = {64,0}, + [I(144,241)] = {64,0}, + [I(145,241)] = {64,0}, + [I(146,241)] = {64,0}, + [I(147,241)] = {64,0}, + [I(148,241)] = {64,0}, + [I(149,241)] = {64,0}, + [I(150,241)] = {64,0}, + [I(151,241)] = {64,0}, + [I(152,241)] = {64,0}, + [I(153,241)] = {64,0}, + [I(154,241)] = {64,0}, + [I(155,241)] = {64,0}, + [I(156,241)] = {64,0}, + [I(157,241)] = {64,0}, + [I(158,241)] = {64,0}, + [I(159,241)] = {64,0}, + [I(160,241)] = {64,0}, + [I(161,241)] = {64,0}, + [I(162,241)] = {64,0}, + [I(163,241)] = {64,0}, + [I(164,241)] = {64,0}, + [I(165,241)] = {64,0}, + [I(166,241)] = {64,0}, + [I(167,241)] = {64,0}, + [I(168,241)] = {64,0}, + [I(169,241)] = {64,0}, + [I(170,241)] = {64,0}, + [I(171,241)] = {64,0}, + [I(172,241)] = {64,0}, + [I(173,241)] = {64,0}, + [I(174,241)] = {64,0}, + [I(175,241)] = {64,0}, + [I(176,241)] = {64,0}, + [I(177,241)] = {64,0}, + [I(178,241)] = {64,0}, + [I(179,241)] = {64,0}, + [I(180,241)] = {64,0}, + [I(181,241)] = {64,0}, + [I(182,241)] = {64,0}, + [I(183,241)] = {64,0}, + [I(184,241)] = {64,0}, + [I(185,241)] = {64,0}, + [I(186,241)] = {64,0}, + [I(187,241)] = {64,0}, + [I(188,241)] = {64,0}, + [I(189,241)] = {64,0}, + [I(190,241)] = {64,0}, + [I(191,241)] = {64,0}, + [I(192,241)] = {64,0}, + [I(193,241)] = {64,0}, + [I(194,241)] = {64,0}, + [I(195,241)] = {64,0}, + [I(196,241)] = {64,0}, + [I(197,241)] = {64,0}, + [I(198,241)] = {64,0}, + [I(199,241)] = {64,0}, + [I(200,241)] = {64,0}, + [I(201,241)] = {64,0}, + [I(202,241)] = {64,0}, + [I(203,241)] = {64,0}, + [I(204,241)] = {64,0}, + [I(205,241)] = {64,0}, + [I(206,241)] = {64,0}, + [I(207,241)] = {64,0}, + [I(208,241)] = {64,0}, + [I(209,241)] = {64,0}, + [I(210,241)] = {64,0}, + [I(211,241)] = {64,0}, + [I(212,241)] = {64,0}, + [I(213,241)] = {64,0}, + [I(214,241)] = {64,0}, + [I(215,241)] = {64,0}, + [I(216,241)] = {64,0}, + [I(217,241)] = {64,0}, + [I(218,241)] = {64,0}, + [I(219,241)] = {64,0}, + [I(220,241)] = {64,0}, + [I(221,241)] = {64,0}, + [I(222,241)] = {64,0}, + [I(223,241)] = {64,0}, + [I(224,241)] = {64,0}, + [I(225,241)] = {64,0}, + [I(226,241)] = {64,0}, + [I(227,241)] = {64,0}, + [I(228,241)] = {64,0}, + [I(229,241)] = {64,0}, + [I(230,241)] = {64,0}, + [I(231,241)] = {64,0}, + [I(232,241)] = {64,0}, + [I(233,241)] = {64,0}, + [I(234,241)] = {64,0}, + [I(235,241)] = {64,0}, + [I(236,241)] = {64,0}, + [I(237,241)] = {64,0}, + [I(238,241)] = {64,0}, + [I(239,241)] = {64,0}, + [I(240,241)] = {64,0}, + [I(241,241)] = {64,0}, + [I(242,241)] = {64,0}, + [I(243,241)] = {64,0}, + [I(244,241)] = {64,0}, + [I(245,241)] = {64,0}, + [I(246,241)] = {64,0}, + [I(247,241)] = {64,0}, + [I(248,241)] = {64,0}, + [I(249,241)] = {64,0}, + [I(250,241)] = {64,0}, + [I(251,241)] = {64,0}, + [I(252,241)] = {64,0}, + [I(253,241)] = {64,0}, + [I(254,241)] = {64,0}, + [I(255,241)] = {64,0}, + [I(0,242)] = {64,0}, + [I(1,242)] = {64,0}, + [I(2,242)] = {64,0}, + [I(3,242)] = {64,0}, + [I(4,242)] = {64,0}, + [I(5,242)] = {64,0}, + [I(6,242)] = {64,0}, + [I(7,242)] = {64,0}, + [I(8,242)] = {64,0}, + [I(9,242)] = {64,0}, + [I(10,242)] = {64,0}, + [I(11,242)] = {64,0}, + [I(12,242)] = {64,0}, + [I(13,242)] = {64,0}, + [I(14,242)] = {64,0}, + [I(15,242)] = {64,0}, + [I(16,242)] = {64,0}, + [I(17,242)] = {64,0}, + [I(18,242)] = {64,0}, + [I(19,242)] = {64,0}, + [I(20,242)] = {64,0}, + [I(21,242)] = {64,0}, + [I(22,242)] = {64,0}, + [I(23,242)] = {64,0}, + [I(24,242)] = {64,0}, + [I(25,242)] = {64,0}, + [I(26,242)] = {64,0}, + [I(27,242)] = {64,0}, + [I(28,242)] = {64,0}, + [I(29,242)] = {64,0}, + [I(30,242)] = {64,0}, + [I(31,242)] = {64,0}, + [I(32,242)] = {X32,0x53FFFFEC}, + [I(33,242)] = {64,0}, + [I(34,242)] = {64,0}, + [I(35,242)] = {64,0}, + [I(36,242)] = {64,0}, + [I(37,242)] = {X32,0x57FFFFEC}, + [I(38,242)] = {64,0}, + [I(39,242)] = {64,0}, + [I(40,242)] = {64,0}, + [I(41,242)] = {64,0}, + [I(42,242)] = {64,0}, + [I(43,242)] = {64,0}, + [I(44,242)] = {64,0}, + [I(45,242)] = {X32,0x5BFFFFEC}, + [I(46,242)] = {X32,0x5FFFFFEC}, + [I(47,242)] = {X32,0x63FFFFEC}, + [I(48,242)] = {31,0x3FFFFEC}, + [I(49,242)] = {31,0x7FFFFEC}, + [I(50,242)] = {31,0xBFFFFEC}, + [I(51,242)] = {X32,0x67FFFFEC}, + [I(52,242)] = {X32,0x6BFFFFEC}, + [I(53,242)] = {X32,0x6FFFFFEC}, + [I(54,242)] = {X32,0x73FFFFEC}, + [I(55,242)] = {X32,0x77FFFFEC}, + [I(56,242)] = {X32,0x7BFFFFEC}, + [I(57,242)] = {X32,0x7FFFFFEC}, + [I(58,242)] = {64,0}, + [I(59,242)] = {64,0}, + [I(60,242)] = {64,0}, + [I(61,242)] = {X32,0x83FFFFEC}, + [I(62,242)] = {64,0}, + [I(63,242)] = {64,0}, + [I(64,242)] = {64,0}, + [I(65,242)] = {X32,0x87FFFFEC}, + [I(66,242)] = {64,0}, + [I(67,242)] = {64,0}, + [I(68,242)] = {64,0}, + [I(69,242)] = {64,0}, + [I(70,242)] = {64,0}, + [I(71,242)] = {64,0}, + [I(72,242)] = {64,0}, + [I(73,242)] = {64,0}, + [I(74,242)] = {64,0}, + [I(75,242)] = {64,0}, + [I(76,242)] = {64,0}, + [I(77,242)] = {64,0}, + [I(78,242)] = {64,0}, + [I(79,242)] = {64,0}, + [I(80,242)] = {64,0}, + [I(81,242)] = {64,0}, + [I(82,242)] = {64,0}, + [I(83,242)] = {64,0}, + [I(84,242)] = {64,0}, + [I(85,242)] = {64,0}, + [I(86,242)] = {64,0}, + [I(87,242)] = {64,0}, + [I(88,242)] = {64,0}, + [I(89,242)] = {64,0}, + [I(90,242)] = {64,0}, + [I(91,242)] = {64,0}, + [I(92,242)] = {64,0}, + [I(93,242)] = {64,0}, + [I(94,242)] = {64,0}, + [I(95,242)] = {X32,0x8BFFFFEC}, + [I(96,242)] = {64,0}, + [I(97,242)] = {31,0xFFFFFEC}, + [I(98,242)] = {X32,0x8FFFFFEC}, + [I(99,242)] = {31,0x13FFFFEC}, + [I(100,242)] = {X32,0x93FFFFEC}, + [I(101,242)] = {31,0x17FFFFEC}, + [I(102,242)] = {X32,0x97FFFFEC}, + [I(103,242)] = {X32,0x9BFFFFEC}, + [I(104,242)] = {X32,0x9FFFFFEC}, + [I(105,242)] = {31,0x1BFFFFEC}, + [I(106,242)] = {64,0}, + [I(107,242)] = {64,0}, + [I(108,242)] = {X32,0xA3FFFFEC}, + [I(109,242)] = {X32,0xA7FFFFEC}, + [I(110,242)] = {X32,0xABFFFFEC}, + [I(111,242)] = {31,0x1FFFFFEC}, + [I(112,242)] = {X32,0xAFFFFFEC}, + [I(113,242)] = {64,0}, + [I(114,242)] = {X32,0xB3FFFFEC}, + [I(115,242)] = {31,0x23FFFFEC}, + [I(116,242)] = {31,0x27FFFFEC}, + [I(117,242)] = {X32,0xB7FFFFEC}, + [I(118,242)] = {64,0}, + [I(119,242)] = {64,0}, + [I(120,242)] = {64,0}, + [I(121,242)] = {64,0}, + [I(122,242)] = {64,0}, + [I(123,242)] = {64,0}, + [I(124,242)] = {64,0}, + [I(125,242)] = {64,0}, + [I(126,242)] = {64,0}, + [I(127,242)] = {64,0}, + [I(128,242)] = {64,0}, + [I(129,242)] = {64,0}, + [I(130,242)] = {64,0}, + [I(131,242)] = {64,0}, + [I(132,242)] = {64,0}, + [I(133,242)] = {64,0}, + [I(134,242)] = {64,0}, + [I(135,242)] = {64,0}, + [I(136,242)] = {64,0}, + [I(137,242)] = {64,0}, + [I(138,242)] = {64,0}, + [I(139,242)] = {64,0}, + [I(140,242)] = {64,0}, + [I(141,242)] = {64,0}, + [I(142,242)] = {64,0}, + [I(143,242)] = {64,0}, + [I(144,242)] = {64,0}, + [I(145,242)] = {64,0}, + [I(146,242)] = {64,0}, + [I(147,242)] = {64,0}, + [I(148,242)] = {64,0}, + [I(149,242)] = {64,0}, + [I(150,242)] = {64,0}, + [I(151,242)] = {64,0}, + [I(152,242)] = {64,0}, + [I(153,242)] = {64,0}, + [I(154,242)] = {64,0}, + [I(155,242)] = {64,0}, + [I(156,242)] = {64,0}, + [I(157,242)] = {64,0}, + [I(158,242)] = {64,0}, + [I(159,242)] = {64,0}, + [I(160,242)] = {64,0}, + [I(161,242)] = {64,0}, + [I(162,242)] = {64,0}, + [I(163,242)] = {64,0}, + [I(164,242)] = {64,0}, + [I(165,242)] = {64,0}, + [I(166,242)] = {64,0}, + [I(167,242)] = {64,0}, + [I(168,242)] = {64,0}, + [I(169,242)] = {64,0}, + [I(170,242)] = {64,0}, + [I(171,242)] = {64,0}, + [I(172,242)] = {64,0}, + [I(173,242)] = {64,0}, + [I(174,242)] = {64,0}, + [I(175,242)] = {64,0}, + [I(176,242)] = {64,0}, + [I(177,242)] = {64,0}, + [I(178,242)] = {64,0}, + [I(179,242)] = {64,0}, + [I(180,242)] = {64,0}, + [I(181,242)] = {64,0}, + [I(182,242)] = {64,0}, + [I(183,242)] = {64,0}, + [I(184,242)] = {64,0}, + [I(185,242)] = {64,0}, + [I(186,242)] = {64,0}, + [I(187,242)] = {64,0}, + [I(188,242)] = {64,0}, + [I(189,242)] = {64,0}, + [I(190,242)] = {64,0}, + [I(191,242)] = {64,0}, + [I(192,242)] = {64,0}, + [I(193,242)] = {64,0}, + [I(194,242)] = {64,0}, + [I(195,242)] = {64,0}, + [I(196,242)] = {64,0}, + [I(197,242)] = {64,0}, + [I(198,242)] = {64,0}, + [I(199,242)] = {64,0}, + [I(200,242)] = {64,0}, + [I(201,242)] = {64,0}, + [I(202,242)] = {64,0}, + [I(203,242)] = {64,0}, + [I(204,242)] = {64,0}, + [I(205,242)] = {64,0}, + [I(206,242)] = {64,0}, + [I(207,242)] = {64,0}, + [I(208,242)] = {64,0}, + [I(209,242)] = {64,0}, + [I(210,242)] = {64,0}, + [I(211,242)] = {64,0}, + [I(212,242)] = {64,0}, + [I(213,242)] = {64,0}, + [I(214,242)] = {64,0}, + [I(215,242)] = {64,0}, + [I(216,242)] = {64,0}, + [I(217,242)] = {64,0}, + [I(218,242)] = {64,0}, + [I(219,242)] = {64,0}, + [I(220,242)] = {64,0}, + [I(221,242)] = {64,0}, + [I(222,242)] = {64,0}, + [I(223,242)] = {64,0}, + [I(224,242)] = {64,0}, + [I(225,242)] = {64,0}, + [I(226,242)] = {64,0}, + [I(227,242)] = {64,0}, + [I(228,242)] = {64,0}, + [I(229,242)] = {64,0}, + [I(230,242)] = {64,0}, + [I(231,242)] = {64,0}, + [I(232,242)] = {64,0}, + [I(233,242)] = {64,0}, + [I(234,242)] = {64,0}, + [I(235,242)] = {64,0}, + [I(236,242)] = {64,0}, + [I(237,242)] = {64,0}, + [I(238,242)] = {64,0}, + [I(239,242)] = {64,0}, + [I(240,242)] = {64,0}, + [I(241,242)] = {64,0}, + [I(242,242)] = {64,0}, + [I(243,242)] = {64,0}, + [I(244,242)] = {64,0}, + [I(245,242)] = {64,0}, + [I(246,242)] = {64,0}, + [I(247,242)] = {64,0}, + [I(248,242)] = {64,0}, + [I(249,242)] = {64,0}, + [I(250,242)] = {64,0}, + [I(251,242)] = {64,0}, + [I(252,242)] = {64,0}, + [I(253,242)] = {64,0}, + [I(254,242)] = {64,0}, + [I(255,242)] = {64,0}, + [I(0,243)] = {64,0}, + [I(1,243)] = {64,0}, + [I(2,243)] = {64,0}, + [I(3,243)] = {64,0}, + [I(4,243)] = {64,0}, + [I(5,243)] = {64,0}, + [I(6,243)] = {64,0}, + [I(7,243)] = {64,0}, + [I(8,243)] = {64,0}, + [I(9,243)] = {64,0}, + [I(10,243)] = {64,0}, + [I(11,243)] = {64,0}, + [I(12,243)] = {64,0}, + [I(13,243)] = {64,0}, + [I(14,243)] = {64,0}, + [I(15,243)] = {64,0}, + [I(16,243)] = {64,0}, + [I(17,243)] = {64,0}, + [I(18,243)] = {64,0}, + [I(19,243)] = {64,0}, + [I(20,243)] = {64,0}, + [I(21,243)] = {64,0}, + [I(22,243)] = {64,0}, + [I(23,243)] = {64,0}, + [I(24,243)] = {64,0}, + [I(25,243)] = {64,0}, + [I(26,243)] = {64,0}, + [I(27,243)] = {64,0}, + [I(28,243)] = {64,0}, + [I(29,243)] = {64,0}, + [I(30,243)] = {64,0}, + [I(31,243)] = {64,0}, + [I(32,243)] = {X32,0x53FFFFED}, + [I(33,243)] = {64,0}, + [I(34,243)] = {64,0}, + [I(35,243)] = {64,0}, + [I(36,243)] = {64,0}, + [I(37,243)] = {X32,0x57FFFFED}, + [I(38,243)] = {64,0}, + [I(39,243)] = {64,0}, + [I(40,243)] = {64,0}, + [I(41,243)] = {64,0}, + [I(42,243)] = {64,0}, + [I(43,243)] = {64,0}, + [I(44,243)] = {64,0}, + [I(45,243)] = {X32,0x5BFFFFED}, + [I(46,243)] = {X32,0x5FFFFFED}, + [I(47,243)] = {X32,0x63FFFFED}, + [I(48,243)] = {31,0x3FFFFED}, + [I(49,243)] = {31,0x7FFFFED}, + [I(50,243)] = {31,0xBFFFFED}, + [I(51,243)] = {X32,0x67FFFFED}, + [I(52,243)] = {X32,0x6BFFFFED}, + [I(53,243)] = {X32,0x6FFFFFED}, + [I(54,243)] = {X32,0x73FFFFED}, + [I(55,243)] = {X32,0x77FFFFED}, + [I(56,243)] = {X32,0x7BFFFFED}, + [I(57,243)] = {X32,0x7FFFFFED}, + [I(58,243)] = {64,0}, + [I(59,243)] = {64,0}, + [I(60,243)] = {64,0}, + [I(61,243)] = {X32,0x83FFFFED}, + [I(62,243)] = {64,0}, + [I(63,243)] = {64,0}, + [I(64,243)] = {64,0}, + [I(65,243)] = {X32,0x87FFFFED}, + [I(66,243)] = {64,0}, + [I(67,243)] = {64,0}, + [I(68,243)] = {64,0}, + [I(69,243)] = {64,0}, + [I(70,243)] = {64,0}, + [I(71,243)] = {64,0}, + [I(72,243)] = {64,0}, + [I(73,243)] = {64,0}, + [I(74,243)] = {64,0}, + [I(75,243)] = {64,0}, + [I(76,243)] = {64,0}, + [I(77,243)] = {64,0}, + [I(78,243)] = {64,0}, + [I(79,243)] = {64,0}, + [I(80,243)] = {64,0}, + [I(81,243)] = {64,0}, + [I(82,243)] = {64,0}, + [I(83,243)] = {64,0}, + [I(84,243)] = {64,0}, + [I(85,243)] = {64,0}, + [I(86,243)] = {64,0}, + [I(87,243)] = {64,0}, + [I(88,243)] = {64,0}, + [I(89,243)] = {64,0}, + [I(90,243)] = {64,0}, + [I(91,243)] = {64,0}, + [I(92,243)] = {64,0}, + [I(93,243)] = {64,0}, + [I(94,243)] = {64,0}, + [I(95,243)] = {X32,0x8BFFFFED}, + [I(96,243)] = {64,0}, + [I(97,243)] = {31,0xFFFFFED}, + [I(98,243)] = {X32,0x8FFFFFED}, + [I(99,243)] = {31,0x13FFFFED}, + [I(100,243)] = {X32,0x93FFFFED}, + [I(101,243)] = {31,0x17FFFFED}, + [I(102,243)] = {X32,0x97FFFFED}, + [I(103,243)] = {X32,0x9BFFFFED}, + [I(104,243)] = {X32,0x9FFFFFED}, + [I(105,243)] = {31,0x1BFFFFED}, + [I(106,243)] = {64,0}, + [I(107,243)] = {64,0}, + [I(108,243)] = {X32,0xA3FFFFED}, + [I(109,243)] = {X32,0xA7FFFFED}, + [I(110,243)] = {X32,0xABFFFFED}, + [I(111,243)] = {31,0x1FFFFFED}, + [I(112,243)] = {X32,0xAFFFFFED}, + [I(113,243)] = {64,0}, + [I(114,243)] = {X32,0xB3FFFFED}, + [I(115,243)] = {31,0x23FFFFED}, + [I(116,243)] = {31,0x27FFFFED}, + [I(117,243)] = {X32,0xB7FFFFED}, + [I(118,243)] = {64,0}, + [I(119,243)] = {64,0}, + [I(120,243)] = {64,0}, + [I(121,243)] = {64,0}, + [I(122,243)] = {64,0}, + [I(123,243)] = {64,0}, + [I(124,243)] = {64,0}, + [I(125,243)] = {64,0}, + [I(126,243)] = {64,0}, + [I(127,243)] = {64,0}, + [I(128,243)] = {64,0}, + [I(129,243)] = {64,0}, + [I(130,243)] = {64,0}, + [I(131,243)] = {64,0}, + [I(132,243)] = {64,0}, + [I(133,243)] = {64,0}, + [I(134,243)] = {64,0}, + [I(135,243)] = {64,0}, + [I(136,243)] = {64,0}, + [I(137,243)] = {64,0}, + [I(138,243)] = {64,0}, + [I(139,243)] = {64,0}, + [I(140,243)] = {64,0}, + [I(141,243)] = {64,0}, + [I(142,243)] = {64,0}, + [I(143,243)] = {64,0}, + [I(144,243)] = {64,0}, + [I(145,243)] = {64,0}, + [I(146,243)] = {64,0}, + [I(147,243)] = {64,0}, + [I(148,243)] = {64,0}, + [I(149,243)] = {64,0}, + [I(150,243)] = {64,0}, + [I(151,243)] = {64,0}, + [I(152,243)] = {64,0}, + [I(153,243)] = {64,0}, + [I(154,243)] = {64,0}, + [I(155,243)] = {64,0}, + [I(156,243)] = {64,0}, + [I(157,243)] = {64,0}, + [I(158,243)] = {64,0}, + [I(159,243)] = {64,0}, + [I(160,243)] = {64,0}, + [I(161,243)] = {64,0}, + [I(162,243)] = {64,0}, + [I(163,243)] = {64,0}, + [I(164,243)] = {64,0}, + [I(165,243)] = {64,0}, + [I(166,243)] = {64,0}, + [I(167,243)] = {64,0}, + [I(168,243)] = {64,0}, + [I(169,243)] = {64,0}, + [I(170,243)] = {64,0}, + [I(171,243)] = {64,0}, + [I(172,243)] = {64,0}, + [I(173,243)] = {64,0}, + [I(174,243)] = {64,0}, + [I(175,243)] = {64,0}, + [I(176,243)] = {64,0}, + [I(177,243)] = {64,0}, + [I(178,243)] = {64,0}, + [I(179,243)] = {64,0}, + [I(180,243)] = {64,0}, + [I(181,243)] = {64,0}, + [I(182,243)] = {64,0}, + [I(183,243)] = {64,0}, + [I(184,243)] = {64,0}, + [I(185,243)] = {64,0}, + [I(186,243)] = {64,0}, + [I(187,243)] = {64,0}, + [I(188,243)] = {64,0}, + [I(189,243)] = {64,0}, + [I(190,243)] = {64,0}, + [I(191,243)] = {64,0}, + [I(192,243)] = {64,0}, + [I(193,243)] = {64,0}, + [I(194,243)] = {64,0}, + [I(195,243)] = {64,0}, + [I(196,243)] = {64,0}, + [I(197,243)] = {64,0}, + [I(198,243)] = {64,0}, + [I(199,243)] = {64,0}, + [I(200,243)] = {64,0}, + [I(201,243)] = {64,0}, + [I(202,243)] = {64,0}, + [I(203,243)] = {64,0}, + [I(204,243)] = {64,0}, + [I(205,243)] = {64,0}, + [I(206,243)] = {64,0}, + [I(207,243)] = {64,0}, + [I(208,243)] = {64,0}, + [I(209,243)] = {64,0}, + [I(210,243)] = {64,0}, + [I(211,243)] = {64,0}, + [I(212,243)] = {64,0}, + [I(213,243)] = {64,0}, + [I(214,243)] = {64,0}, + [I(215,243)] = {64,0}, + [I(216,243)] = {64,0}, + [I(217,243)] = {64,0}, + [I(218,243)] = {64,0}, + [I(219,243)] = {64,0}, + [I(220,243)] = {64,0}, + [I(221,243)] = {64,0}, + [I(222,243)] = {64,0}, + [I(223,243)] = {64,0}, + [I(224,243)] = {64,0}, + [I(225,243)] = {64,0}, + [I(226,243)] = {64,0}, + [I(227,243)] = {64,0}, + [I(228,243)] = {64,0}, + [I(229,243)] = {64,0}, + [I(230,243)] = {64,0}, + [I(231,243)] = {64,0}, + [I(232,243)] = {64,0}, + [I(233,243)] = {64,0}, + [I(234,243)] = {64,0}, + [I(235,243)] = {64,0}, + [I(236,243)] = {64,0}, + [I(237,243)] = {64,0}, + [I(238,243)] = {64,0}, + [I(239,243)] = {64,0}, + [I(240,243)] = {64,0}, + [I(241,243)] = {64,0}, + [I(242,243)] = {64,0}, + [I(243,243)] = {64,0}, + [I(244,243)] = {64,0}, + [I(245,243)] = {64,0}, + [I(246,243)] = {64,0}, + [I(247,243)] = {64,0}, + [I(248,243)] = {64,0}, + [I(249,243)] = {64,0}, + [I(250,243)] = {64,0}, + [I(251,243)] = {64,0}, + [I(252,243)] = {64,0}, + [I(253,243)] = {64,0}, + [I(254,243)] = {64,0}, + [I(255,243)] = {64,0}, + [I(0,244)] = {64,0}, + [I(1,244)] = {64,0}, + [I(2,244)] = {64,0}, + [I(3,244)] = {64,0}, + [I(4,244)] = {64,0}, + [I(5,244)] = {64,0}, + [I(6,244)] = {64,0}, + [I(7,244)] = {64,0}, + [I(8,244)] = {64,0}, + [I(9,244)] = {64,0}, + [I(10,244)] = {64,0}, + [I(11,244)] = {64,0}, + [I(12,244)] = {64,0}, + [I(13,244)] = {64,0}, + [I(14,244)] = {64,0}, + [I(15,244)] = {64,0}, + [I(16,244)] = {64,0}, + [I(17,244)] = {64,0}, + [I(18,244)] = {64,0}, + [I(19,244)] = {64,0}, + [I(20,244)] = {64,0}, + [I(21,244)] = {64,0}, + [I(22,244)] = {64,0}, + [I(23,244)] = {64,0}, + [I(24,244)] = {64,0}, + [I(25,244)] = {64,0}, + [I(26,244)] = {64,0}, + [I(27,244)] = {64,0}, + [I(28,244)] = {64,0}, + [I(29,244)] = {64,0}, + [I(30,244)] = {64,0}, + [I(31,244)] = {64,0}, + [I(32,244)] = {64,0}, + [I(33,244)] = {64,0}, + [I(34,244)] = {64,0}, + [I(35,244)] = {64,0}, + [I(36,244)] = {64,0}, + [I(37,244)] = {64,0}, + [I(38,244)] = {64,0}, + [I(39,244)] = {64,0}, + [I(40,244)] = {64,0}, + [I(41,244)] = {64,0}, + [I(42,244)] = {64,0}, + [I(43,244)] = {64,0}, + [I(44,244)] = {64,0}, + [I(45,244)] = {64,0}, + [I(46,244)] = {64,0}, + [I(47,244)] = {64,0}, + [I(48,244)] = {X32,0x7FFFFE7}, + [I(49,244)] = {X32,0xFFFFFE7}, + [I(50,244)] = {X32,0x17FFFFE7}, + [I(51,244)] = {64,0}, + [I(52,244)] = {64,0}, + [I(53,244)] = {64,0}, + [I(54,244)] = {64,0}, + [I(55,244)] = {64,0}, + [I(56,244)] = {64,0}, + [I(57,244)] = {64,0}, + [I(58,244)] = {64,0}, + [I(59,244)] = {64,0}, + [I(60,244)] = {64,0}, + [I(61,244)] = {64,0}, + [I(62,244)] = {64,0}, + [I(63,244)] = {64,0}, + [I(64,244)] = {64,0}, + [I(65,244)] = {64,0}, + [I(66,244)] = {64,0}, + [I(67,244)] = {64,0}, + [I(68,244)] = {64,0}, + [I(69,244)] = {64,0}, + [I(70,244)] = {64,0}, + [I(71,244)] = {64,0}, + [I(72,244)] = {64,0}, + [I(73,244)] = {64,0}, + [I(74,244)] = {64,0}, + [I(75,244)] = {64,0}, + [I(76,244)] = {64,0}, + [I(77,244)] = {64,0}, + [I(78,244)] = {64,0}, + [I(79,244)] = {64,0}, + [I(80,244)] = {64,0}, + [I(81,244)] = {64,0}, + [I(82,244)] = {64,0}, + [I(83,244)] = {64,0}, + [I(84,244)] = {64,0}, + [I(85,244)] = {64,0}, + [I(86,244)] = {64,0}, + [I(87,244)] = {64,0}, + [I(88,244)] = {64,0}, + [I(89,244)] = {64,0}, + [I(90,244)] = {64,0}, + [I(91,244)] = {64,0}, + [I(92,244)] = {64,0}, + [I(93,244)] = {64,0}, + [I(94,244)] = {64,0}, + [I(95,244)] = {64,0}, + [I(96,244)] = {64,0}, + [I(97,244)] = {X32,0x1FFFFFE7}, + [I(98,244)] = {64,0}, + [I(99,244)] = {X32,0x27FFFFE7}, + [I(100,244)] = {64,0}, + [I(101,244)] = {X32,0x2FFFFFE7}, + [I(102,244)] = {64,0}, + [I(103,244)] = {64,0}, + [I(104,244)] = {64,0}, + [I(105,244)] = {X32,0x37FFFFE7}, + [I(106,244)] = {64,0}, + [I(107,244)] = {64,0}, + [I(108,244)] = {64,0}, + [I(109,244)] = {64,0}, + [I(110,244)] = {64,0}, + [I(111,244)] = {X32,0x3FFFFFE7}, + [I(112,244)] = {64,0}, + [I(113,244)] = {64,0}, + [I(114,244)] = {64,0}, + [I(115,244)] = {X32,0x47FFFFE7}, + [I(116,244)] = {X32,0x4FFFFFE7}, + [I(117,244)] = {64,0}, + [I(118,244)] = {64,0}, + [I(119,244)] = {64,0}, + [I(120,244)] = {64,0}, + [I(121,244)] = {64,0}, + [I(122,244)] = {64,0}, + [I(123,244)] = {64,0}, + [I(124,244)] = {64,0}, + [I(125,244)] = {64,0}, + [I(126,244)] = {64,0}, + [I(127,244)] = {64,0}, + [I(128,244)] = {64,0}, + [I(129,244)] = {64,0}, + [I(130,244)] = {64,0}, + [I(131,244)] = {64,0}, + [I(132,244)] = {64,0}, + [I(133,244)] = {64,0}, + [I(134,244)] = {64,0}, + [I(135,244)] = {64,0}, + [I(136,244)] = {64,0}, + [I(137,244)] = {64,0}, + [I(138,244)] = {64,0}, + [I(139,244)] = {64,0}, + [I(140,244)] = {64,0}, + [I(141,244)] = {64,0}, + [I(142,244)] = {64,0}, + [I(143,244)] = {64,0}, + [I(144,244)] = {64,0}, + [I(145,244)] = {64,0}, + [I(146,244)] = {64,0}, + [I(147,244)] = {64,0}, + [I(148,244)] = {64,0}, + [I(149,244)] = {64,0}, + [I(150,244)] = {64,0}, + [I(151,244)] = {64,0}, + [I(152,244)] = {64,0}, + [I(153,244)] = {64,0}, + [I(154,244)] = {64,0}, + [I(155,244)] = {64,0}, + [I(156,244)] = {64,0}, + [I(157,244)] = {64,0}, + [I(158,244)] = {64,0}, + [I(159,244)] = {64,0}, + [I(160,244)] = {64,0}, + [I(161,244)] = {64,0}, + [I(162,244)] = {64,0}, + [I(163,244)] = {64,0}, + [I(164,244)] = {64,0}, + [I(165,244)] = {64,0}, + [I(166,244)] = {64,0}, + [I(167,244)] = {64,0}, + [I(168,244)] = {64,0}, + [I(169,244)] = {64,0}, + [I(170,244)] = {64,0}, + [I(171,244)] = {64,0}, + [I(172,244)] = {64,0}, + [I(173,244)] = {64,0}, + [I(174,244)] = {64,0}, + [I(175,244)] = {64,0}, + [I(176,244)] = {64,0}, + [I(177,244)] = {64,0}, + [I(178,244)] = {64,0}, + [I(179,244)] = {64,0}, + [I(180,244)] = {64,0}, + [I(181,244)] = {64,0}, + [I(182,244)] = {64,0}, + [I(183,244)] = {64,0}, + [I(184,244)] = {64,0}, + [I(185,244)] = {64,0}, + [I(186,244)] = {64,0}, + [I(187,244)] = {64,0}, + [I(188,244)] = {64,0}, + [I(189,244)] = {64,0}, + [I(190,244)] = {64,0}, + [I(191,244)] = {64,0}, + [I(192,244)] = {64,0}, + [I(193,244)] = {64,0}, + [I(194,244)] = {64,0}, + [I(195,244)] = {64,0}, + [I(196,244)] = {64,0}, + [I(197,244)] = {64,0}, + [I(198,244)] = {64,0}, + [I(199,244)] = {64,0}, + [I(200,244)] = {64,0}, + [I(201,244)] = {64,0}, + [I(202,244)] = {64,0}, + [I(203,244)] = {64,0}, + [I(204,244)] = {64,0}, + [I(205,244)] = {64,0}, + [I(206,244)] = {64,0}, + [I(207,244)] = {64,0}, + [I(208,244)] = {64,0}, + [I(209,244)] = {64,0}, + [I(210,244)] = {64,0}, + [I(211,244)] = {64,0}, + [I(212,244)] = {64,0}, + [I(213,244)] = {64,0}, + [I(214,244)] = {64,0}, + [I(215,244)] = {64,0}, + [I(216,244)] = {64,0}, + [I(217,244)] = {64,0}, + [I(218,244)] = {64,0}, + [I(219,244)] = {64,0}, + [I(220,244)] = {64,0}, + [I(221,244)] = {64,0}, + [I(222,244)] = {64,0}, + [I(223,244)] = {64,0}, + [I(224,244)] = {64,0}, + [I(225,244)] = {64,0}, + [I(226,244)] = {64,0}, + [I(227,244)] = {64,0}, + [I(228,244)] = {64,0}, + [I(229,244)] = {64,0}, + [I(230,244)] = {64,0}, + [I(231,244)] = {64,0}, + [I(232,244)] = {64,0}, + [I(233,244)] = {64,0}, + [I(234,244)] = {64,0}, + [I(235,244)] = {64,0}, + [I(236,244)] = {64,0}, + [I(237,244)] = {64,0}, + [I(238,244)] = {64,0}, + [I(239,244)] = {64,0}, + [I(240,244)] = {64,0}, + [I(241,244)] = {64,0}, + [I(242,244)] = {64,0}, + [I(243,244)] = {64,0}, + [I(244,244)] = {64,0}, + [I(245,244)] = {64,0}, + [I(246,244)] = {64,0}, + [I(247,244)] = {64,0}, + [I(248,244)] = {64,0}, + [I(249,244)] = {64,0}, + [I(250,244)] = {64,0}, + [I(251,244)] = {64,0}, + [I(252,244)] = {64,0}, + [I(253,244)] = {64,0}, + [I(254,244)] = {64,0}, + [I(255,244)] = {64,0}, + [I(0,245)] = {64,0}, + [I(1,245)] = {64,0}, + [I(2,245)] = {64,0}, + [I(3,245)] = {64,0}, + [I(4,245)] = {64,0}, + [I(5,245)] = {64,0}, + [I(6,245)] = {64,0}, + [I(7,245)] = {64,0}, + [I(8,245)] = {64,0}, + [I(9,245)] = {64,0}, + [I(10,245)] = {64,0}, + [I(11,245)] = {64,0}, + [I(12,245)] = {64,0}, + [I(13,245)] = {64,0}, + [I(14,245)] = {64,0}, + [I(15,245)] = {64,0}, + [I(16,245)] = {64,0}, + [I(17,245)] = {64,0}, + [I(18,245)] = {64,0}, + [I(19,245)] = {64,0}, + [I(20,245)] = {64,0}, + [I(21,245)] = {64,0}, + [I(22,245)] = {64,0}, + [I(23,245)] = {64,0}, + [I(24,245)] = {64,0}, + [I(25,245)] = {64,0}, + [I(26,245)] = {64,0}, + [I(27,245)] = {64,0}, + [I(28,245)] = {64,0}, + [I(29,245)] = {64,0}, + [I(30,245)] = {64,0}, + [I(31,245)] = {64,0}, + [I(32,245)] = {64,0}, + [I(33,245)] = {64,0}, + [I(34,245)] = {64,0}, + [I(35,245)] = {64,0}, + [I(36,245)] = {64,0}, + [I(37,245)] = {64,0}, + [I(38,245)] = {64,0}, + [I(39,245)] = {64,0}, + [I(40,245)] = {64,0}, + [I(41,245)] = {64,0}, + [I(42,245)] = {64,0}, + [I(43,245)] = {64,0}, + [I(44,245)] = {64,0}, + [I(45,245)] = {64,0}, + [I(46,245)] = {64,0}, + [I(47,245)] = {64,0}, + [I(48,245)] = {X32,0x7FFFFE8}, + [I(49,245)] = {X32,0xFFFFFE8}, + [I(50,245)] = {X32,0x17FFFFE8}, + [I(51,245)] = {64,0}, + [I(52,245)] = {64,0}, + [I(53,245)] = {64,0}, + [I(54,245)] = {64,0}, + [I(55,245)] = {64,0}, + [I(56,245)] = {64,0}, + [I(57,245)] = {64,0}, + [I(58,245)] = {64,0}, + [I(59,245)] = {64,0}, + [I(60,245)] = {64,0}, + [I(61,245)] = {64,0}, + [I(62,245)] = {64,0}, + [I(63,245)] = {64,0}, + [I(64,245)] = {64,0}, + [I(65,245)] = {64,0}, + [I(66,245)] = {64,0}, + [I(67,245)] = {64,0}, + [I(68,245)] = {64,0}, + [I(69,245)] = {64,0}, + [I(70,245)] = {64,0}, + [I(71,245)] = {64,0}, + [I(72,245)] = {64,0}, + [I(73,245)] = {64,0}, + [I(74,245)] = {64,0}, + [I(75,245)] = {64,0}, + [I(76,245)] = {64,0}, + [I(77,245)] = {64,0}, + [I(78,245)] = {64,0}, + [I(79,245)] = {64,0}, + [I(80,245)] = {64,0}, + [I(81,245)] = {64,0}, + [I(82,245)] = {64,0}, + [I(83,245)] = {64,0}, + [I(84,245)] = {64,0}, + [I(85,245)] = {64,0}, + [I(86,245)] = {64,0}, + [I(87,245)] = {64,0}, + [I(88,245)] = {64,0}, + [I(89,245)] = {64,0}, + [I(90,245)] = {64,0}, + [I(91,245)] = {64,0}, + [I(92,245)] = {64,0}, + [I(93,245)] = {64,0}, + [I(94,245)] = {64,0}, + [I(95,245)] = {64,0}, + [I(96,245)] = {64,0}, + [I(97,245)] = {X32,0x1FFFFFE8}, + [I(98,245)] = {64,0}, + [I(99,245)] = {X32,0x27FFFFE8}, + [I(100,245)] = {64,0}, + [I(101,245)] = {X32,0x2FFFFFE8}, + [I(102,245)] = {64,0}, + [I(103,245)] = {64,0}, + [I(104,245)] = {64,0}, + [I(105,245)] = {X32,0x37FFFFE8}, + [I(106,245)] = {64,0}, + [I(107,245)] = {64,0}, + [I(108,245)] = {64,0}, + [I(109,245)] = {64,0}, + [I(110,245)] = {64,0}, + [I(111,245)] = {X32,0x3FFFFFE8}, + [I(112,245)] = {64,0}, + [I(113,245)] = {64,0}, + [I(114,245)] = {64,0}, + [I(115,245)] = {X32,0x47FFFFE8}, + [I(116,245)] = {X32,0x4FFFFFE8}, + [I(117,245)] = {64,0}, + [I(118,245)] = {64,0}, + [I(119,245)] = {64,0}, + [I(120,245)] = {64,0}, + [I(121,245)] = {64,0}, + [I(122,245)] = {64,0}, + [I(123,245)] = {64,0}, + [I(124,245)] = {64,0}, + [I(125,245)] = {64,0}, + [I(126,245)] = {64,0}, + [I(127,245)] = {64,0}, + [I(128,245)] = {64,0}, + [I(129,245)] = {64,0}, + [I(130,245)] = {64,0}, + [I(131,245)] = {64,0}, + [I(132,245)] = {64,0}, + [I(133,245)] = {64,0}, + [I(134,245)] = {64,0}, + [I(135,245)] = {64,0}, + [I(136,245)] = {64,0}, + [I(137,245)] = {64,0}, + [I(138,245)] = {64,0}, + [I(139,245)] = {64,0}, + [I(140,245)] = {64,0}, + [I(141,245)] = {64,0}, + [I(142,245)] = {64,0}, + [I(143,245)] = {64,0}, + [I(144,245)] = {64,0}, + [I(145,245)] = {64,0}, + [I(146,245)] = {64,0}, + [I(147,245)] = {64,0}, + [I(148,245)] = {64,0}, + [I(149,245)] = {64,0}, + [I(150,245)] = {64,0}, + [I(151,245)] = {64,0}, + [I(152,245)] = {64,0}, + [I(153,245)] = {64,0}, + [I(154,245)] = {64,0}, + [I(155,245)] = {64,0}, + [I(156,245)] = {64,0}, + [I(157,245)] = {64,0}, + [I(158,245)] = {64,0}, + [I(159,245)] = {64,0}, + [I(160,245)] = {64,0}, + [I(161,245)] = {64,0}, + [I(162,245)] = {64,0}, + [I(163,245)] = {64,0}, + [I(164,245)] = {64,0}, + [I(165,245)] = {64,0}, + [I(166,245)] = {64,0}, + [I(167,245)] = {64,0}, + [I(168,245)] = {64,0}, + [I(169,245)] = {64,0}, + [I(170,245)] = {64,0}, + [I(171,245)] = {64,0}, + [I(172,245)] = {64,0}, + [I(173,245)] = {64,0}, + [I(174,245)] = {64,0}, + [I(175,245)] = {64,0}, + [I(176,245)] = {64,0}, + [I(177,245)] = {64,0}, + [I(178,245)] = {64,0}, + [I(179,245)] = {64,0}, + [I(180,245)] = {64,0}, + [I(181,245)] = {64,0}, + [I(182,245)] = {64,0}, + [I(183,245)] = {64,0}, + [I(184,245)] = {64,0}, + [I(185,245)] = {64,0}, + [I(186,245)] = {64,0}, + [I(187,245)] = {64,0}, + [I(188,245)] = {64,0}, + [I(189,245)] = {64,0}, + [I(190,245)] = {64,0}, + [I(191,245)] = {64,0}, + [I(192,245)] = {64,0}, + [I(193,245)] = {64,0}, + [I(194,245)] = {64,0}, + [I(195,245)] = {64,0}, + [I(196,245)] = {64,0}, + [I(197,245)] = {64,0}, + [I(198,245)] = {64,0}, + [I(199,245)] = {64,0}, + [I(200,245)] = {64,0}, + [I(201,245)] = {64,0}, + [I(202,245)] = {64,0}, + [I(203,245)] = {64,0}, + [I(204,245)] = {64,0}, + [I(205,245)] = {64,0}, + [I(206,245)] = {64,0}, + [I(207,245)] = {64,0}, + [I(208,245)] = {64,0}, + [I(209,245)] = {64,0}, + [I(210,245)] = {64,0}, + [I(211,245)] = {64,0}, + [I(212,245)] = {64,0}, + [I(213,245)] = {64,0}, + [I(214,245)] = {64,0}, + [I(215,245)] = {64,0}, + [I(216,245)] = {64,0}, + [I(217,245)] = {64,0}, + [I(218,245)] = {64,0}, + [I(219,245)] = {64,0}, + [I(220,245)] = {64,0}, + [I(221,245)] = {64,0}, + [I(222,245)] = {64,0}, + [I(223,245)] = {64,0}, + [I(224,245)] = {64,0}, + [I(225,245)] = {64,0}, + [I(226,245)] = {64,0}, + [I(227,245)] = {64,0}, + [I(228,245)] = {64,0}, + [I(229,245)] = {64,0}, + [I(230,245)] = {64,0}, + [I(231,245)] = {64,0}, + [I(232,245)] = {64,0}, + [I(233,245)] = {64,0}, + [I(234,245)] = {64,0}, + [I(235,245)] = {64,0}, + [I(236,245)] = {64,0}, + [I(237,245)] = {64,0}, + [I(238,245)] = {64,0}, + [I(239,245)] = {64,0}, + [I(240,245)] = {64,0}, + [I(241,245)] = {64,0}, + [I(242,245)] = {64,0}, + [I(243,245)] = {64,0}, + [I(244,245)] = {64,0}, + [I(245,245)] = {64,0}, + [I(246,245)] = {64,0}, + [I(247,245)] = {64,0}, + [I(248,245)] = {64,0}, + [I(249,245)] = {64,0}, + [I(250,245)] = {64,0}, + [I(251,245)] = {64,0}, + [I(252,245)] = {64,0}, + [I(253,245)] = {64,0}, + [I(254,245)] = {64,0}, + [I(255,245)] = {64,0}, + [I(0,246)] = {64,0}, + [I(1,246)] = {64,0}, + [I(2,246)] = {64,0}, + [I(3,246)] = {64,0}, + [I(4,246)] = {64,0}, + [I(5,246)] = {64,0}, + [I(6,246)] = {64,0}, + [I(7,246)] = {64,0}, + [I(8,246)] = {64,0}, + [I(9,246)] = {64,0}, + [I(10,246)] = {64,0}, + [I(11,246)] = {64,0}, + [I(12,246)] = {64,0}, + [I(13,246)] = {64,0}, + [I(14,246)] = {64,0}, + [I(15,246)] = {64,0}, + [I(16,246)] = {64,0}, + [I(17,246)] = {64,0}, + [I(18,246)] = {64,0}, + [I(19,246)] = {64,0}, + [I(20,246)] = {64,0}, + [I(21,246)] = {64,0}, + [I(22,246)] = {64,0}, + [I(23,246)] = {64,0}, + [I(24,246)] = {64,0}, + [I(25,246)] = {64,0}, + [I(26,246)] = {64,0}, + [I(27,246)] = {64,0}, + [I(28,246)] = {64,0}, + [I(29,246)] = {64,0}, + [I(30,246)] = {64,0}, + [I(31,246)] = {64,0}, + [I(32,246)] = {64,0}, + [I(33,246)] = {64,0}, + [I(34,246)] = {64,0}, + [I(35,246)] = {64,0}, + [I(36,246)] = {64,0}, + [I(37,246)] = {64,0}, + [I(38,246)] = {64,0}, + [I(39,246)] = {64,0}, + [I(40,246)] = {64,0}, + [I(41,246)] = {64,0}, + [I(42,246)] = {64,0}, + [I(43,246)] = {64,0}, + [I(44,246)] = {64,0}, + [I(45,246)] = {64,0}, + [I(46,246)] = {64,0}, + [I(47,246)] = {64,0}, + [I(48,246)] = {X32,0x7FFFFE9}, + [I(49,246)] = {X32,0xFFFFFE9}, + [I(50,246)] = {X32,0x17FFFFE9}, + [I(51,246)] = {64,0}, + [I(52,246)] = {64,0}, + [I(53,246)] = {64,0}, + [I(54,246)] = {64,0}, + [I(55,246)] = {64,0}, + [I(56,246)] = {64,0}, + [I(57,246)] = {64,0}, + [I(58,246)] = {64,0}, + [I(59,246)] = {64,0}, + [I(60,246)] = {64,0}, + [I(61,246)] = {64,0}, + [I(62,246)] = {64,0}, + [I(63,246)] = {64,0}, + [I(64,246)] = {64,0}, + [I(65,246)] = {64,0}, + [I(66,246)] = {64,0}, + [I(67,246)] = {64,0}, + [I(68,246)] = {64,0}, + [I(69,246)] = {64,0}, + [I(70,246)] = {64,0}, + [I(71,246)] = {64,0}, + [I(72,246)] = {64,0}, + [I(73,246)] = {64,0}, + [I(74,246)] = {64,0}, + [I(75,246)] = {64,0}, + [I(76,246)] = {64,0}, + [I(77,246)] = {64,0}, + [I(78,246)] = {64,0}, + [I(79,246)] = {64,0}, + [I(80,246)] = {64,0}, + [I(81,246)] = {64,0}, + [I(82,246)] = {64,0}, + [I(83,246)] = {64,0}, + [I(84,246)] = {64,0}, + [I(85,246)] = {64,0}, + [I(86,246)] = {64,0}, + [I(87,246)] = {64,0}, + [I(88,246)] = {64,0}, + [I(89,246)] = {64,0}, + [I(90,246)] = {64,0}, + [I(91,246)] = {64,0}, + [I(92,246)] = {64,0}, + [I(93,246)] = {64,0}, + [I(94,246)] = {64,0}, + [I(95,246)] = {64,0}, + [I(96,246)] = {64,0}, + [I(97,246)] = {X32,0x1FFFFFE9}, + [I(98,246)] = {64,0}, + [I(99,246)] = {X32,0x27FFFFE9}, + [I(100,246)] = {64,0}, + [I(101,246)] = {X32,0x2FFFFFE9}, + [I(102,246)] = {64,0}, + [I(103,246)] = {64,0}, + [I(104,246)] = {64,0}, + [I(105,246)] = {X32,0x37FFFFE9}, + [I(106,246)] = {64,0}, + [I(107,246)] = {64,0}, + [I(108,246)] = {64,0}, + [I(109,246)] = {64,0}, + [I(110,246)] = {64,0}, + [I(111,246)] = {X32,0x3FFFFFE9}, + [I(112,246)] = {64,0}, + [I(113,246)] = {64,0}, + [I(114,246)] = {64,0}, + [I(115,246)] = {X32,0x47FFFFE9}, + [I(116,246)] = {X32,0x4FFFFFE9}, + [I(117,246)] = {64,0}, + [I(118,246)] = {64,0}, + [I(119,246)] = {64,0}, + [I(120,246)] = {64,0}, + [I(121,246)] = {64,0}, + [I(122,246)] = {64,0}, + [I(123,246)] = {64,0}, + [I(124,246)] = {64,0}, + [I(125,246)] = {64,0}, + [I(126,246)] = {64,0}, + [I(127,246)] = {64,0}, + [I(128,246)] = {64,0}, + [I(129,246)] = {64,0}, + [I(130,246)] = {64,0}, + [I(131,246)] = {64,0}, + [I(132,246)] = {64,0}, + [I(133,246)] = {64,0}, + [I(134,246)] = {64,0}, + [I(135,246)] = {64,0}, + [I(136,246)] = {64,0}, + [I(137,246)] = {64,0}, + [I(138,246)] = {64,0}, + [I(139,246)] = {64,0}, + [I(140,246)] = {64,0}, + [I(141,246)] = {64,0}, + [I(142,246)] = {64,0}, + [I(143,246)] = {64,0}, + [I(144,246)] = {64,0}, + [I(145,246)] = {64,0}, + [I(146,246)] = {64,0}, + [I(147,246)] = {64,0}, + [I(148,246)] = {64,0}, + [I(149,246)] = {64,0}, + [I(150,246)] = {64,0}, + [I(151,246)] = {64,0}, + [I(152,246)] = {64,0}, + [I(153,246)] = {64,0}, + [I(154,246)] = {64,0}, + [I(155,246)] = {64,0}, + [I(156,246)] = {64,0}, + [I(157,246)] = {64,0}, + [I(158,246)] = {64,0}, + [I(159,246)] = {64,0}, + [I(160,246)] = {64,0}, + [I(161,246)] = {64,0}, + [I(162,246)] = {64,0}, + [I(163,246)] = {64,0}, + [I(164,246)] = {64,0}, + [I(165,246)] = {64,0}, + [I(166,246)] = {64,0}, + [I(167,246)] = {64,0}, + [I(168,246)] = {64,0}, + [I(169,246)] = {64,0}, + [I(170,246)] = {64,0}, + [I(171,246)] = {64,0}, + [I(172,246)] = {64,0}, + [I(173,246)] = {64,0}, + [I(174,246)] = {64,0}, + [I(175,246)] = {64,0}, + [I(176,246)] = {64,0}, + [I(177,246)] = {64,0}, + [I(178,246)] = {64,0}, + [I(179,246)] = {64,0}, + [I(180,246)] = {64,0}, + [I(181,246)] = {64,0}, + [I(182,246)] = {64,0}, + [I(183,246)] = {64,0}, + [I(184,246)] = {64,0}, + [I(185,246)] = {64,0}, + [I(186,246)] = {64,0}, + [I(187,246)] = {64,0}, + [I(188,246)] = {64,0}, + [I(189,246)] = {64,0}, + [I(190,246)] = {64,0}, + [I(191,246)] = {64,0}, + [I(192,246)] = {64,0}, + [I(193,246)] = {64,0}, + [I(194,246)] = {64,0}, + [I(195,246)] = {64,0}, + [I(196,246)] = {64,0}, + [I(197,246)] = {64,0}, + [I(198,246)] = {64,0}, + [I(199,246)] = {64,0}, + [I(200,246)] = {64,0}, + [I(201,246)] = {64,0}, + [I(202,246)] = {64,0}, + [I(203,246)] = {64,0}, + [I(204,246)] = {64,0}, + [I(205,246)] = {64,0}, + [I(206,246)] = {64,0}, + [I(207,246)] = {64,0}, + [I(208,246)] = {64,0}, + [I(209,246)] = {64,0}, + [I(210,246)] = {64,0}, + [I(211,246)] = {64,0}, + [I(212,246)] = {64,0}, + [I(213,246)] = {64,0}, + [I(214,246)] = {64,0}, + [I(215,246)] = {64,0}, + [I(216,246)] = {64,0}, + [I(217,246)] = {64,0}, + [I(218,246)] = {64,0}, + [I(219,246)] = {64,0}, + [I(220,246)] = {64,0}, + [I(221,246)] = {64,0}, + [I(222,246)] = {64,0}, + [I(223,246)] = {64,0}, + [I(224,246)] = {64,0}, + [I(225,246)] = {64,0}, + [I(226,246)] = {64,0}, + [I(227,246)] = {64,0}, + [I(228,246)] = {64,0}, + [I(229,246)] = {64,0}, + [I(230,246)] = {64,0}, + [I(231,246)] = {64,0}, + [I(232,246)] = {64,0}, + [I(233,246)] = {64,0}, + [I(234,246)] = {64,0}, + [I(235,246)] = {64,0}, + [I(236,246)] = {64,0}, + [I(237,246)] = {64,0}, + [I(238,246)] = {64,0}, + [I(239,246)] = {64,0}, + [I(240,246)] = {64,0}, + [I(241,246)] = {64,0}, + [I(242,246)] = {64,0}, + [I(243,246)] = {64,0}, + [I(244,246)] = {64,0}, + [I(245,246)] = {64,0}, + [I(246,246)] = {64,0}, + [I(247,246)] = {64,0}, + [I(248,246)] = {64,0}, + [I(249,246)] = {64,0}, + [I(250,246)] = {64,0}, + [I(251,246)] = {64,0}, + [I(252,246)] = {64,0}, + [I(253,246)] = {64,0}, + [I(254,246)] = {64,0}, + [I(255,246)] = {64,0}, + [I(0,247)] = {64,0}, + [I(1,247)] = {64,0}, + [I(2,247)] = {64,0}, + [I(3,247)] = {64,0}, + [I(4,247)] = {64,0}, + [I(5,247)] = {64,0}, + [I(6,247)] = {64,0}, + [I(7,247)] = {64,0}, + [I(8,247)] = {64,0}, + [I(9,247)] = {64,0}, + [I(10,247)] = {64,0}, + [I(11,247)] = {64,0}, + [I(12,247)] = {64,0}, + [I(13,247)] = {64,0}, + [I(14,247)] = {64,0}, + [I(15,247)] = {64,0}, + [I(16,247)] = {64,0}, + [I(17,247)] = {64,0}, + [I(18,247)] = {64,0}, + [I(19,247)] = {64,0}, + [I(20,247)] = {64,0}, + [I(21,247)] = {64,0}, + [I(22,247)] = {64,0}, + [I(23,247)] = {64,0}, + [I(24,247)] = {64,0}, + [I(25,247)] = {64,0}, + [I(26,247)] = {64,0}, + [I(27,247)] = {64,0}, + [I(28,247)] = {64,0}, + [I(29,247)] = {64,0}, + [I(30,247)] = {64,0}, + [I(31,247)] = {64,0}, + [I(32,247)] = {64,0}, + [I(33,247)] = {64,0}, + [I(34,247)] = {64,0}, + [I(35,247)] = {64,0}, + [I(36,247)] = {64,0}, + [I(37,247)] = {64,0}, + [I(38,247)] = {64,0}, + [I(39,247)] = {64,0}, + [I(40,247)] = {64,0}, + [I(41,247)] = {64,0}, + [I(42,247)] = {64,0}, + [I(43,247)] = {64,0}, + [I(44,247)] = {64,0}, + [I(45,247)] = {64,0}, + [I(46,247)] = {64,0}, + [I(47,247)] = {64,0}, + [I(48,247)] = {X32,0x7FFFFEA}, + [I(49,247)] = {X32,0xFFFFFEA}, + [I(50,247)] = {X32,0x17FFFFEA}, + [I(51,247)] = {64,0}, + [I(52,247)] = {64,0}, + [I(53,247)] = {64,0}, + [I(54,247)] = {64,0}, + [I(55,247)] = {64,0}, + [I(56,247)] = {64,0}, + [I(57,247)] = {64,0}, + [I(58,247)] = {64,0}, + [I(59,247)] = {64,0}, + [I(60,247)] = {64,0}, + [I(61,247)] = {64,0}, + [I(62,247)] = {64,0}, + [I(63,247)] = {64,0}, + [I(64,247)] = {64,0}, + [I(65,247)] = {64,0}, + [I(66,247)] = {64,0}, + [I(67,247)] = {64,0}, + [I(68,247)] = {64,0}, + [I(69,247)] = {64,0}, + [I(70,247)] = {64,0}, + [I(71,247)] = {64,0}, + [I(72,247)] = {64,0}, + [I(73,247)] = {64,0}, + [I(74,247)] = {64,0}, + [I(75,247)] = {64,0}, + [I(76,247)] = {64,0}, + [I(77,247)] = {64,0}, + [I(78,247)] = {64,0}, + [I(79,247)] = {64,0}, + [I(80,247)] = {64,0}, + [I(81,247)] = {64,0}, + [I(82,247)] = {64,0}, + [I(83,247)] = {64,0}, + [I(84,247)] = {64,0}, + [I(85,247)] = {64,0}, + [I(86,247)] = {64,0}, + [I(87,247)] = {64,0}, + [I(88,247)] = {64,0}, + [I(89,247)] = {64,0}, + [I(90,247)] = {64,0}, + [I(91,247)] = {64,0}, + [I(92,247)] = {64,0}, + [I(93,247)] = {64,0}, + [I(94,247)] = {64,0}, + [I(95,247)] = {64,0}, + [I(96,247)] = {64,0}, + [I(97,247)] = {X32,0x1FFFFFEA}, + [I(98,247)] = {64,0}, + [I(99,247)] = {X32,0x27FFFFEA}, + [I(100,247)] = {64,0}, + [I(101,247)] = {X32,0x2FFFFFEA}, + [I(102,247)] = {64,0}, + [I(103,247)] = {64,0}, + [I(104,247)] = {64,0}, + [I(105,247)] = {X32,0x37FFFFEA}, + [I(106,247)] = {64,0}, + [I(107,247)] = {64,0}, + [I(108,247)] = {64,0}, + [I(109,247)] = {64,0}, + [I(110,247)] = {64,0}, + [I(111,247)] = {X32,0x3FFFFFEA}, + [I(112,247)] = {64,0}, + [I(113,247)] = {64,0}, + [I(114,247)] = {64,0}, + [I(115,247)] = {X32,0x47FFFFEA}, + [I(116,247)] = {X32,0x4FFFFFEA}, + [I(117,247)] = {64,0}, + [I(118,247)] = {64,0}, + [I(119,247)] = {64,0}, + [I(120,247)] = {64,0}, + [I(121,247)] = {64,0}, + [I(122,247)] = {64,0}, + [I(123,247)] = {64,0}, + [I(124,247)] = {64,0}, + [I(125,247)] = {64,0}, + [I(126,247)] = {64,0}, + [I(127,247)] = {64,0}, + [I(128,247)] = {64,0}, + [I(129,247)] = {64,0}, + [I(130,247)] = {64,0}, + [I(131,247)] = {64,0}, + [I(132,247)] = {64,0}, + [I(133,247)] = {64,0}, + [I(134,247)] = {64,0}, + [I(135,247)] = {64,0}, + [I(136,247)] = {64,0}, + [I(137,247)] = {64,0}, + [I(138,247)] = {64,0}, + [I(139,247)] = {64,0}, + [I(140,247)] = {64,0}, + [I(141,247)] = {64,0}, + [I(142,247)] = {64,0}, + [I(143,247)] = {64,0}, + [I(144,247)] = {64,0}, + [I(145,247)] = {64,0}, + [I(146,247)] = {64,0}, + [I(147,247)] = {64,0}, + [I(148,247)] = {64,0}, + [I(149,247)] = {64,0}, + [I(150,247)] = {64,0}, + [I(151,247)] = {64,0}, + [I(152,247)] = {64,0}, + [I(153,247)] = {64,0}, + [I(154,247)] = {64,0}, + [I(155,247)] = {64,0}, + [I(156,247)] = {64,0}, + [I(157,247)] = {64,0}, + [I(158,247)] = {64,0}, + [I(159,247)] = {64,0}, + [I(160,247)] = {64,0}, + [I(161,247)] = {64,0}, + [I(162,247)] = {64,0}, + [I(163,247)] = {64,0}, + [I(164,247)] = {64,0}, + [I(165,247)] = {64,0}, + [I(166,247)] = {64,0}, + [I(167,247)] = {64,0}, + [I(168,247)] = {64,0}, + [I(169,247)] = {64,0}, + [I(170,247)] = {64,0}, + [I(171,247)] = {64,0}, + [I(172,247)] = {64,0}, + [I(173,247)] = {64,0}, + [I(174,247)] = {64,0}, + [I(175,247)] = {64,0}, + [I(176,247)] = {64,0}, + [I(177,247)] = {64,0}, + [I(178,247)] = {64,0}, + [I(179,247)] = {64,0}, + [I(180,247)] = {64,0}, + [I(181,247)] = {64,0}, + [I(182,247)] = {64,0}, + [I(183,247)] = {64,0}, + [I(184,247)] = {64,0}, + [I(185,247)] = {64,0}, + [I(186,247)] = {64,0}, + [I(187,247)] = {64,0}, + [I(188,247)] = {64,0}, + [I(189,247)] = {64,0}, + [I(190,247)] = {64,0}, + [I(191,247)] = {64,0}, + [I(192,247)] = {64,0}, + [I(193,247)] = {64,0}, + [I(194,247)] = {64,0}, + [I(195,247)] = {64,0}, + [I(196,247)] = {64,0}, + [I(197,247)] = {64,0}, + [I(198,247)] = {64,0}, + [I(199,247)] = {64,0}, + [I(200,247)] = {64,0}, + [I(201,247)] = {64,0}, + [I(202,247)] = {64,0}, + [I(203,247)] = {64,0}, + [I(204,247)] = {64,0}, + [I(205,247)] = {64,0}, + [I(206,247)] = {64,0}, + [I(207,247)] = {64,0}, + [I(208,247)] = {64,0}, + [I(209,247)] = {64,0}, + [I(210,247)] = {64,0}, + [I(211,247)] = {64,0}, + [I(212,247)] = {64,0}, + [I(213,247)] = {64,0}, + [I(214,247)] = {64,0}, + [I(215,247)] = {64,0}, + [I(216,247)] = {64,0}, + [I(217,247)] = {64,0}, + [I(218,247)] = {64,0}, + [I(219,247)] = {64,0}, + [I(220,247)] = {64,0}, + [I(221,247)] = {64,0}, + [I(222,247)] = {64,0}, + [I(223,247)] = {64,0}, + [I(224,247)] = {64,0}, + [I(225,247)] = {64,0}, + [I(226,247)] = {64,0}, + [I(227,247)] = {64,0}, + [I(228,247)] = {64,0}, + [I(229,247)] = {64,0}, + [I(230,247)] = {64,0}, + [I(231,247)] = {64,0}, + [I(232,247)] = {64,0}, + [I(233,247)] = {64,0}, + [I(234,247)] = {64,0}, + [I(235,247)] = {64,0}, + [I(236,247)] = {64,0}, + [I(237,247)] = {64,0}, + [I(238,247)] = {64,0}, + [I(239,247)] = {64,0}, + [I(240,247)] = {64,0}, + [I(241,247)] = {64,0}, + [I(242,247)] = {64,0}, + [I(243,247)] = {64,0}, + [I(244,247)] = {64,0}, + [I(245,247)] = {64,0}, + [I(246,247)] = {64,0}, + [I(247,247)] = {64,0}, + [I(248,247)] = {64,0}, + [I(249,247)] = {64,0}, + [I(250,247)] = {64,0}, + [I(251,247)] = {64,0}, + [I(252,247)] = {64,0}, + [I(253,247)] = {64,0}, + [I(254,247)] = {64,0}, + [I(255,247)] = {64,0}, + [I(0,248)] = {64,0}, + [I(1,248)] = {64,0}, + [I(2,248)] = {64,0}, + [I(3,248)] = {64,0}, + [I(4,248)] = {64,0}, + [I(5,248)] = {64,0}, + [I(6,248)] = {64,0}, + [I(7,248)] = {64,0}, + [I(8,248)] = {64,0}, + [I(9,248)] = {64,0}, + [I(10,248)] = {64,0}, + [I(11,248)] = {64,0}, + [I(12,248)] = {64,0}, + [I(13,248)] = {64,0}, + [I(14,248)] = {64,0}, + [I(15,248)] = {64,0}, + [I(16,248)] = {64,0}, + [I(17,248)] = {64,0}, + [I(18,248)] = {64,0}, + [I(19,248)] = {64,0}, + [I(20,248)] = {64,0}, + [I(21,248)] = {64,0}, + [I(22,248)] = {64,0}, + [I(23,248)] = {64,0}, + [I(24,248)] = {64,0}, + [I(25,248)] = {64,0}, + [I(26,248)] = {64,0}, + [I(27,248)] = {64,0}, + [I(28,248)] = {64,0}, + [I(29,248)] = {64,0}, + [I(30,248)] = {64,0}, + [I(31,248)] = {64,0}, + [I(32,248)] = {64,0}, + [I(33,248)] = {64,0}, + [I(34,248)] = {64,0}, + [I(35,248)] = {64,0}, + [I(36,248)] = {64,0}, + [I(37,248)] = {64,0}, + [I(38,248)] = {64,0}, + [I(39,248)] = {64,0}, + [I(40,248)] = {64,0}, + [I(41,248)] = {64,0}, + [I(42,248)] = {64,0}, + [I(43,248)] = {64,0}, + [I(44,248)] = {64,0}, + [I(45,248)] = {64,0}, + [I(46,248)] = {64,0}, + [I(47,248)] = {64,0}, + [I(48,248)] = {X32,0x7FFFFEB}, + [I(49,248)] = {X32,0xFFFFFEB}, + [I(50,248)] = {X32,0x17FFFFEB}, + [I(51,248)] = {64,0}, + [I(52,248)] = {64,0}, + [I(53,248)] = {64,0}, + [I(54,248)] = {64,0}, + [I(55,248)] = {64,0}, + [I(56,248)] = {64,0}, + [I(57,248)] = {64,0}, + [I(58,248)] = {64,0}, + [I(59,248)] = {64,0}, + [I(60,248)] = {64,0}, + [I(61,248)] = {64,0}, + [I(62,248)] = {64,0}, + [I(63,248)] = {64,0}, + [I(64,248)] = {64,0}, + [I(65,248)] = {64,0}, + [I(66,248)] = {64,0}, + [I(67,248)] = {64,0}, + [I(68,248)] = {64,0}, + [I(69,248)] = {64,0}, + [I(70,248)] = {64,0}, + [I(71,248)] = {64,0}, + [I(72,248)] = {64,0}, + [I(73,248)] = {64,0}, + [I(74,248)] = {64,0}, + [I(75,248)] = {64,0}, + [I(76,248)] = {64,0}, + [I(77,248)] = {64,0}, + [I(78,248)] = {64,0}, + [I(79,248)] = {64,0}, + [I(80,248)] = {64,0}, + [I(81,248)] = {64,0}, + [I(82,248)] = {64,0}, + [I(83,248)] = {64,0}, + [I(84,248)] = {64,0}, + [I(85,248)] = {64,0}, + [I(86,248)] = {64,0}, + [I(87,248)] = {64,0}, + [I(88,248)] = {64,0}, + [I(89,248)] = {64,0}, + [I(90,248)] = {64,0}, + [I(91,248)] = {64,0}, + [I(92,248)] = {64,0}, + [I(93,248)] = {64,0}, + [I(94,248)] = {64,0}, + [I(95,248)] = {64,0}, + [I(96,248)] = {64,0}, + [I(97,248)] = {X32,0x1FFFFFEB}, + [I(98,248)] = {64,0}, + [I(99,248)] = {X32,0x27FFFFEB}, + [I(100,248)] = {64,0}, + [I(101,248)] = {X32,0x2FFFFFEB}, + [I(102,248)] = {64,0}, + [I(103,248)] = {64,0}, + [I(104,248)] = {64,0}, + [I(105,248)] = {X32,0x37FFFFEB}, + [I(106,248)] = {64,0}, + [I(107,248)] = {64,0}, + [I(108,248)] = {64,0}, + [I(109,248)] = {64,0}, + [I(110,248)] = {64,0}, + [I(111,248)] = {X32,0x3FFFFFEB}, + [I(112,248)] = {64,0}, + [I(113,248)] = {64,0}, + [I(114,248)] = {64,0}, + [I(115,248)] = {X32,0x47FFFFEB}, + [I(116,248)] = {X32,0x4FFFFFEB}, + [I(117,248)] = {64,0}, + [I(118,248)] = {64,0}, + [I(119,248)] = {64,0}, + [I(120,248)] = {64,0}, + [I(121,248)] = {64,0}, + [I(122,248)] = {64,0}, + [I(123,248)] = {64,0}, + [I(124,248)] = {64,0}, + [I(125,248)] = {64,0}, + [I(126,248)] = {64,0}, + [I(127,248)] = {64,0}, + [I(128,248)] = {64,0}, + [I(129,248)] = {64,0}, + [I(130,248)] = {64,0}, + [I(131,248)] = {64,0}, + [I(132,248)] = {64,0}, + [I(133,248)] = {64,0}, + [I(134,248)] = {64,0}, + [I(135,248)] = {64,0}, + [I(136,248)] = {64,0}, + [I(137,248)] = {64,0}, + [I(138,248)] = {64,0}, + [I(139,248)] = {64,0}, + [I(140,248)] = {64,0}, + [I(141,248)] = {64,0}, + [I(142,248)] = {64,0}, + [I(143,248)] = {64,0}, + [I(144,248)] = {64,0}, + [I(145,248)] = {64,0}, + [I(146,248)] = {64,0}, + [I(147,248)] = {64,0}, + [I(148,248)] = {64,0}, + [I(149,248)] = {64,0}, + [I(150,248)] = {64,0}, + [I(151,248)] = {64,0}, + [I(152,248)] = {64,0}, + [I(153,248)] = {64,0}, + [I(154,248)] = {64,0}, + [I(155,248)] = {64,0}, + [I(156,248)] = {64,0}, + [I(157,248)] = {64,0}, + [I(158,248)] = {64,0}, + [I(159,248)] = {64,0}, + [I(160,248)] = {64,0}, + [I(161,248)] = {64,0}, + [I(162,248)] = {64,0}, + [I(163,248)] = {64,0}, + [I(164,248)] = {64,0}, + [I(165,248)] = {64,0}, + [I(166,248)] = {64,0}, + [I(167,248)] = {64,0}, + [I(168,248)] = {64,0}, + [I(169,248)] = {64,0}, + [I(170,248)] = {64,0}, + [I(171,248)] = {64,0}, + [I(172,248)] = {64,0}, + [I(173,248)] = {64,0}, + [I(174,248)] = {64,0}, + [I(175,248)] = {64,0}, + [I(176,248)] = {64,0}, + [I(177,248)] = {64,0}, + [I(178,248)] = {64,0}, + [I(179,248)] = {64,0}, + [I(180,248)] = {64,0}, + [I(181,248)] = {64,0}, + [I(182,248)] = {64,0}, + [I(183,248)] = {64,0}, + [I(184,248)] = {64,0}, + [I(185,248)] = {64,0}, + [I(186,248)] = {64,0}, + [I(187,248)] = {64,0}, + [I(188,248)] = {64,0}, + [I(189,248)] = {64,0}, + [I(190,248)] = {64,0}, + [I(191,248)] = {64,0}, + [I(192,248)] = {64,0}, + [I(193,248)] = {64,0}, + [I(194,248)] = {64,0}, + [I(195,248)] = {64,0}, + [I(196,248)] = {64,0}, + [I(197,248)] = {64,0}, + [I(198,248)] = {64,0}, + [I(199,248)] = {64,0}, + [I(200,248)] = {64,0}, + [I(201,248)] = {64,0}, + [I(202,248)] = {64,0}, + [I(203,248)] = {64,0}, + [I(204,248)] = {64,0}, + [I(205,248)] = {64,0}, + [I(206,248)] = {64,0}, + [I(207,248)] = {64,0}, + [I(208,248)] = {64,0}, + [I(209,248)] = {64,0}, + [I(210,248)] = {64,0}, + [I(211,248)] = {64,0}, + [I(212,248)] = {64,0}, + [I(213,248)] = {64,0}, + [I(214,248)] = {64,0}, + [I(215,248)] = {64,0}, + [I(216,248)] = {64,0}, + [I(217,248)] = {64,0}, + [I(218,248)] = {64,0}, + [I(219,248)] = {64,0}, + [I(220,248)] = {64,0}, + [I(221,248)] = {64,0}, + [I(222,248)] = {64,0}, + [I(223,248)] = {64,0}, + [I(224,248)] = {64,0}, + [I(225,248)] = {64,0}, + [I(226,248)] = {64,0}, + [I(227,248)] = {64,0}, + [I(228,248)] = {64,0}, + [I(229,248)] = {64,0}, + [I(230,248)] = {64,0}, + [I(231,248)] = {64,0}, + [I(232,248)] = {64,0}, + [I(233,248)] = {64,0}, + [I(234,248)] = {64,0}, + [I(235,248)] = {64,0}, + [I(236,248)] = {64,0}, + [I(237,248)] = {64,0}, + [I(238,248)] = {64,0}, + [I(239,248)] = {64,0}, + [I(240,248)] = {64,0}, + [I(241,248)] = {64,0}, + [I(242,248)] = {64,0}, + [I(243,248)] = {64,0}, + [I(244,248)] = {64,0}, + [I(245,248)] = {64,0}, + [I(246,248)] = {64,0}, + [I(247,248)] = {64,0}, + [I(248,248)] = {64,0}, + [I(249,248)] = {64,0}, + [I(250,248)] = {64,0}, + [I(251,248)] = {64,0}, + [I(252,248)] = {64,0}, + [I(253,248)] = {64,0}, + [I(254,248)] = {64,0}, + [I(255,248)] = {64,0}, + [I(0,249)] = {64,0}, + [I(1,249)] = {64,0}, + [I(2,249)] = {64,0}, + [I(3,249)] = {64,0}, + [I(4,249)] = {64,0}, + [I(5,249)] = {64,0}, + [I(6,249)] = {64,0}, + [I(7,249)] = {64,0}, + [I(8,249)] = {64,0}, + [I(9,249)] = {64,0}, + [I(10,249)] = {64,0}, + [I(11,249)] = {64,0}, + [I(12,249)] = {64,0}, + [I(13,249)] = {64,0}, + [I(14,249)] = {64,0}, + [I(15,249)] = {64,0}, + [I(16,249)] = {64,0}, + [I(17,249)] = {64,0}, + [I(18,249)] = {64,0}, + [I(19,249)] = {64,0}, + [I(20,249)] = {64,0}, + [I(21,249)] = {64,0}, + [I(22,249)] = {64,0}, + [I(23,249)] = {64,0}, + [I(24,249)] = {64,0}, + [I(25,249)] = {64,0}, + [I(26,249)] = {64,0}, + [I(27,249)] = {64,0}, + [I(28,249)] = {64,0}, + [I(29,249)] = {64,0}, + [I(30,249)] = {64,0}, + [I(31,249)] = {64,0}, + [I(32,249)] = {64,0}, + [I(33,249)] = {64,0}, + [I(34,249)] = {64,0}, + [I(35,249)] = {64,0}, + [I(36,249)] = {64,0}, + [I(37,249)] = {64,0}, + [I(38,249)] = {64,0}, + [I(39,249)] = {64,0}, + [I(40,249)] = {64,0}, + [I(41,249)] = {64,0}, + [I(42,249)] = {64,0}, + [I(43,249)] = {64,0}, + [I(44,249)] = {64,0}, + [I(45,249)] = {64,0}, + [I(46,249)] = {64,0}, + [I(47,249)] = {64,0}, + [I(48,249)] = {64,0}, + [I(49,249)] = {64,0}, + [I(50,249)] = {64,0}, + [I(51,249)] = {64,0}, + [I(52,249)] = {64,0}, + [I(53,249)] = {64,0}, + [I(54,249)] = {64,0}, + [I(55,249)] = {64,0}, + [I(56,249)] = {64,0}, + [I(57,249)] = {64,0}, + [I(58,249)] = {64,0}, + [I(59,249)] = {64,0}, + [I(60,249)] = {64,0}, + [I(61,249)] = {64,0}, + [I(62,249)] = {64,0}, + [I(63,249)] = {64,0}, + [I(64,249)] = {64,0}, + [I(65,249)] = {64,0}, + [I(66,249)] = {64,0}, + [I(67,249)] = {64,0}, + [I(68,249)] = {64,0}, + [I(69,249)] = {64,0}, + [I(70,249)] = {64,0}, + [I(71,249)] = {64,0}, + [I(72,249)] = {64,0}, + [I(73,249)] = {64,0}, + [I(74,249)] = {64,0}, + [I(75,249)] = {64,0}, + [I(76,249)] = {64,0}, + [I(77,249)] = {64,0}, + [I(78,249)] = {64,0}, + [I(79,249)] = {64,0}, + [I(80,249)] = {64,0}, + [I(81,249)] = {64,0}, + [I(82,249)] = {64,0}, + [I(83,249)] = {64,0}, + [I(84,249)] = {64,0}, + [I(85,249)] = {64,0}, + [I(86,249)] = {64,0}, + [I(87,249)] = {64,0}, + [I(88,249)] = {64,0}, + [I(89,249)] = {64,0}, + [I(90,249)] = {64,0}, + [I(91,249)] = {64,0}, + [I(92,249)] = {64,0}, + [I(93,249)] = {64,0}, + [I(94,249)] = {64,0}, + [I(95,249)] = {64,0}, + [I(96,249)] = {64,0}, + [I(97,249)] = {64,0}, + [I(98,249)] = {64,0}, + [I(99,249)] = {64,0}, + [I(100,249)] = {64,0}, + [I(101,249)] = {64,0}, + [I(102,249)] = {64,0}, + [I(103,249)] = {64,0}, + [I(104,249)] = {64,0}, + [I(105,249)] = {64,0}, + [I(106,249)] = {64,0}, + [I(107,249)] = {64,0}, + [I(108,249)] = {64,0}, + [I(109,249)] = {64,0}, + [I(110,249)] = {64,0}, + [I(111,249)] = {64,0}, + [I(112,249)] = {64,0}, + [I(113,249)] = {64,0}, + [I(114,249)] = {64,0}, + [I(115,249)] = {64,0}, + [I(116,249)] = {64,0}, + [I(117,249)] = {64,0}, + [I(118,249)] = {64,0}, + [I(119,249)] = {64,0}, + [I(120,249)] = {64,0}, + [I(121,249)] = {64,0}, + [I(122,249)] = {64,0}, + [I(123,249)] = {64,0}, + [I(124,249)] = {64,0}, + [I(125,249)] = {64,0}, + [I(126,249)] = {64,0}, + [I(127,249)] = {64,0}, + [I(128,249)] = {64,0}, + [I(129,249)] = {64,0}, + [I(130,249)] = {64,0}, + [I(131,249)] = {64,0}, + [I(132,249)] = {64,0}, + [I(133,249)] = {64,0}, + [I(134,249)] = {64,0}, + [I(135,249)] = {64,0}, + [I(136,249)] = {64,0}, + [I(137,249)] = {64,0}, + [I(138,249)] = {64,0}, + [I(139,249)] = {64,0}, + [I(140,249)] = {64,0}, + [I(141,249)] = {64,0}, + [I(142,249)] = {64,0}, + [I(143,249)] = {64,0}, + [I(144,249)] = {64,0}, + [I(145,249)] = {64,0}, + [I(146,249)] = {64,0}, + [I(147,249)] = {64,0}, + [I(148,249)] = {64,0}, + [I(149,249)] = {64,0}, + [I(150,249)] = {64,0}, + [I(151,249)] = {64,0}, + [I(152,249)] = {64,0}, + [I(153,249)] = {64,0}, + [I(154,249)] = {64,0}, + [I(155,249)] = {64,0}, + [I(156,249)] = {64,0}, + [I(157,249)] = {64,0}, + [I(158,249)] = {64,0}, + [I(159,249)] = {64,0}, + [I(160,249)] = {64,0}, + [I(161,249)] = {64,0}, + [I(162,249)] = {64,0}, + [I(163,249)] = {64,0}, + [I(164,249)] = {64,0}, + [I(165,249)] = {64,0}, + [I(166,249)] = {64,0}, + [I(167,249)] = {64,0}, + [I(168,249)] = {64,0}, + [I(169,249)] = {64,0}, + [I(170,249)] = {64,0}, + [I(171,249)] = {64,0}, + [I(172,249)] = {64,0}, + [I(173,249)] = {64,0}, + [I(174,249)] = {64,0}, + [I(175,249)] = {64,0}, + [I(176,249)] = {64,0}, + [I(177,249)] = {64,0}, + [I(178,249)] = {64,0}, + [I(179,249)] = {64,0}, + [I(180,249)] = {64,0}, + [I(181,249)] = {64,0}, + [I(182,249)] = {64,0}, + [I(183,249)] = {64,0}, + [I(184,249)] = {64,0}, + [I(185,249)] = {64,0}, + [I(186,249)] = {64,0}, + [I(187,249)] = {64,0}, + [I(188,249)] = {64,0}, + [I(189,249)] = {64,0}, + [I(190,249)] = {64,0}, + [I(191,249)] = {64,0}, + [I(192,249)] = {64,0}, + [I(193,249)] = {64,0}, + [I(194,249)] = {64,0}, + [I(195,249)] = {64,0}, + [I(196,249)] = {64,0}, + [I(197,249)] = {64,0}, + [I(198,249)] = {64,0}, + [I(199,249)] = {64,0}, + [I(200,249)] = {64,0}, + [I(201,249)] = {64,0}, + [I(202,249)] = {64,0}, + [I(203,249)] = {64,0}, + [I(204,249)] = {64,0}, + [I(205,249)] = {64,0}, + [I(206,249)] = {64,0}, + [I(207,249)] = {64,0}, + [I(208,249)] = {64,0}, + [I(209,249)] = {64,0}, + [I(210,249)] = {64,0}, + [I(211,249)] = {64,0}, + [I(212,249)] = {64,0}, + [I(213,249)] = {64,0}, + [I(214,249)] = {64,0}, + [I(215,249)] = {64,0}, + [I(216,249)] = {64,0}, + [I(217,249)] = {64,0}, + [I(218,249)] = {64,0}, + [I(219,249)] = {64,0}, + [I(220,249)] = {64,0}, + [I(221,249)] = {64,0}, + [I(222,249)] = {64,0}, + [I(223,249)] = {64,0}, + [I(224,249)] = {64,0}, + [I(225,249)] = {64,0}, + [I(226,249)] = {64,0}, + [I(227,249)] = {64,0}, + [I(228,249)] = {64,0}, + [I(229,249)] = {64,0}, + [I(230,249)] = {64,0}, + [I(231,249)] = {64,0}, + [I(232,249)] = {64,0}, + [I(233,249)] = {64,0}, + [I(234,249)] = {64,0}, + [I(235,249)] = {64,0}, + [I(236,249)] = {64,0}, + [I(237,249)] = {64,0}, + [I(238,249)] = {64,0}, + [I(239,249)] = {64,0}, + [I(240,249)] = {64,0}, + [I(241,249)] = {64,0}, + [I(242,249)] = {64,0}, + [I(243,249)] = {64,0}, + [I(244,249)] = {64,0}, + [I(245,249)] = {64,0}, + [I(246,249)] = {64,0}, + [I(247,249)] = {64,0}, + [I(248,249)] = {64,0}, + [I(249,249)] = {64,0}, + [I(250,249)] = {64,0}, + [I(251,249)] = {64,0}, + [I(252,249)] = {64,0}, + [I(253,249)] = {64,0}, + [I(254,249)] = {64,0}, + [I(255,249)] = {64,0}, + [I(0,250)] = {64,0}, + [I(1,250)] = {64,0}, + [I(2,250)] = {64,0}, + [I(3,250)] = {64,0}, + [I(4,250)] = {64,0}, + [I(5,250)] = {64,0}, + [I(6,250)] = {64,0}, + [I(7,250)] = {64,0}, + [I(8,250)] = {64,0}, + [I(9,250)] = {64,0}, + [I(10,250)] = {64,0}, + [I(11,250)] = {64,0}, + [I(12,250)] = {64,0}, + [I(13,250)] = {64,0}, + [I(14,250)] = {64,0}, + [I(15,250)] = {64,0}, + [I(16,250)] = {64,0}, + [I(17,250)] = {64,0}, + [I(18,250)] = {64,0}, + [I(19,250)] = {64,0}, + [I(20,250)] = {64,0}, + [I(21,250)] = {64,0}, + [I(22,250)] = {64,0}, + [I(23,250)] = {64,0}, + [I(24,250)] = {64,0}, + [I(25,250)] = {64,0}, + [I(26,250)] = {64,0}, + [I(27,250)] = {64,0}, + [I(28,250)] = {64,0}, + [I(29,250)] = {64,0}, + [I(30,250)] = {64,0}, + [I(31,250)] = {64,0}, + [I(32,250)] = {64,0}, + [I(33,250)] = {64,0}, + [I(34,250)] = {64,0}, + [I(35,250)] = {64,0}, + [I(36,250)] = {64,0}, + [I(37,250)] = {64,0}, + [I(38,250)] = {64,0}, + [I(39,250)] = {64,0}, + [I(40,250)] = {64,0}, + [I(41,250)] = {64,0}, + [I(42,250)] = {64,0}, + [I(43,250)] = {64,0}, + [I(44,250)] = {64,0}, + [I(45,250)] = {64,0}, + [I(46,250)] = {64,0}, + [I(47,250)] = {64,0}, + [I(48,250)] = {X32,0x7FFFFEC}, + [I(49,250)] = {X32,0xFFFFFEC}, + [I(50,250)] = {X32,0x17FFFFEC}, + [I(51,250)] = {64,0}, + [I(52,250)] = {64,0}, + [I(53,250)] = {64,0}, + [I(54,250)] = {64,0}, + [I(55,250)] = {64,0}, + [I(56,250)] = {64,0}, + [I(57,250)] = {64,0}, + [I(58,250)] = {64,0}, + [I(59,250)] = {64,0}, + [I(60,250)] = {64,0}, + [I(61,250)] = {64,0}, + [I(62,250)] = {64,0}, + [I(63,250)] = {64,0}, + [I(64,250)] = {64,0}, + [I(65,250)] = {64,0}, + [I(66,250)] = {64,0}, + [I(67,250)] = {64,0}, + [I(68,250)] = {64,0}, + [I(69,250)] = {64,0}, + [I(70,250)] = {64,0}, + [I(71,250)] = {64,0}, + [I(72,250)] = {64,0}, + [I(73,250)] = {64,0}, + [I(74,250)] = {64,0}, + [I(75,250)] = {64,0}, + [I(76,250)] = {64,0}, + [I(77,250)] = {64,0}, + [I(78,250)] = {64,0}, + [I(79,250)] = {64,0}, + [I(80,250)] = {64,0}, + [I(81,250)] = {64,0}, + [I(82,250)] = {64,0}, + [I(83,250)] = {64,0}, + [I(84,250)] = {64,0}, + [I(85,250)] = {64,0}, + [I(86,250)] = {64,0}, + [I(87,250)] = {64,0}, + [I(88,250)] = {64,0}, + [I(89,250)] = {64,0}, + [I(90,250)] = {64,0}, + [I(91,250)] = {64,0}, + [I(92,250)] = {64,0}, + [I(93,250)] = {64,0}, + [I(94,250)] = {64,0}, + [I(95,250)] = {64,0}, + [I(96,250)] = {64,0}, + [I(97,250)] = {X32,0x1FFFFFEC}, + [I(98,250)] = {64,0}, + [I(99,250)] = {X32,0x27FFFFEC}, + [I(100,250)] = {64,0}, + [I(101,250)] = {X32,0x2FFFFFEC}, + [I(102,250)] = {64,0}, + [I(103,250)] = {64,0}, + [I(104,250)] = {64,0}, + [I(105,250)] = {X32,0x37FFFFEC}, + [I(106,250)] = {64,0}, + [I(107,250)] = {64,0}, + [I(108,250)] = {64,0}, + [I(109,250)] = {64,0}, + [I(110,250)] = {64,0}, + [I(111,250)] = {X32,0x3FFFFFEC}, + [I(112,250)] = {64,0}, + [I(113,250)] = {64,0}, + [I(114,250)] = {64,0}, + [I(115,250)] = {X32,0x47FFFFEC}, + [I(116,250)] = {X32,0x4FFFFFEC}, + [I(117,250)] = {64,0}, + [I(118,250)] = {64,0}, + [I(119,250)] = {64,0}, + [I(120,250)] = {64,0}, + [I(121,250)] = {64,0}, + [I(122,250)] = {64,0}, + [I(123,250)] = {64,0}, + [I(124,250)] = {64,0}, + [I(125,250)] = {64,0}, + [I(126,250)] = {64,0}, + [I(127,250)] = {64,0}, + [I(128,250)] = {64,0}, + [I(129,250)] = {64,0}, + [I(130,250)] = {64,0}, + [I(131,250)] = {64,0}, + [I(132,250)] = {64,0}, + [I(133,250)] = {64,0}, + [I(134,250)] = {64,0}, + [I(135,250)] = {64,0}, + [I(136,250)] = {64,0}, + [I(137,250)] = {64,0}, + [I(138,250)] = {64,0}, + [I(139,250)] = {64,0}, + [I(140,250)] = {64,0}, + [I(141,250)] = {64,0}, + [I(142,250)] = {64,0}, + [I(143,250)] = {64,0}, + [I(144,250)] = {64,0}, + [I(145,250)] = {64,0}, + [I(146,250)] = {64,0}, + [I(147,250)] = {64,0}, + [I(148,250)] = {64,0}, + [I(149,250)] = {64,0}, + [I(150,250)] = {64,0}, + [I(151,250)] = {64,0}, + [I(152,250)] = {64,0}, + [I(153,250)] = {64,0}, + [I(154,250)] = {64,0}, + [I(155,250)] = {64,0}, + [I(156,250)] = {64,0}, + [I(157,250)] = {64,0}, + [I(158,250)] = {64,0}, + [I(159,250)] = {64,0}, + [I(160,250)] = {64,0}, + [I(161,250)] = {64,0}, + [I(162,250)] = {64,0}, + [I(163,250)] = {64,0}, + [I(164,250)] = {64,0}, + [I(165,250)] = {64,0}, + [I(166,250)] = {64,0}, + [I(167,250)] = {64,0}, + [I(168,250)] = {64,0}, + [I(169,250)] = {64,0}, + [I(170,250)] = {64,0}, + [I(171,250)] = {64,0}, + [I(172,250)] = {64,0}, + [I(173,250)] = {64,0}, + [I(174,250)] = {64,0}, + [I(175,250)] = {64,0}, + [I(176,250)] = {64,0}, + [I(177,250)] = {64,0}, + [I(178,250)] = {64,0}, + [I(179,250)] = {64,0}, + [I(180,250)] = {64,0}, + [I(181,250)] = {64,0}, + [I(182,250)] = {64,0}, + [I(183,250)] = {64,0}, + [I(184,250)] = {64,0}, + [I(185,250)] = {64,0}, + [I(186,250)] = {64,0}, + [I(187,250)] = {64,0}, + [I(188,250)] = {64,0}, + [I(189,250)] = {64,0}, + [I(190,250)] = {64,0}, + [I(191,250)] = {64,0}, + [I(192,250)] = {64,0}, + [I(193,250)] = {64,0}, + [I(194,250)] = {64,0}, + [I(195,250)] = {64,0}, + [I(196,250)] = {64,0}, + [I(197,250)] = {64,0}, + [I(198,250)] = {64,0}, + [I(199,250)] = {64,0}, + [I(200,250)] = {64,0}, + [I(201,250)] = {64,0}, + [I(202,250)] = {64,0}, + [I(203,250)] = {64,0}, + [I(204,250)] = {64,0}, + [I(205,250)] = {64,0}, + [I(206,250)] = {64,0}, + [I(207,250)] = {64,0}, + [I(208,250)] = {64,0}, + [I(209,250)] = {64,0}, + [I(210,250)] = {64,0}, + [I(211,250)] = {64,0}, + [I(212,250)] = {64,0}, + [I(213,250)] = {64,0}, + [I(214,250)] = {64,0}, + [I(215,250)] = {64,0}, + [I(216,250)] = {64,0}, + [I(217,250)] = {64,0}, + [I(218,250)] = {64,0}, + [I(219,250)] = {64,0}, + [I(220,250)] = {64,0}, + [I(221,250)] = {64,0}, + [I(222,250)] = {64,0}, + [I(223,250)] = {64,0}, + [I(224,250)] = {64,0}, + [I(225,250)] = {64,0}, + [I(226,250)] = {64,0}, + [I(227,250)] = {64,0}, + [I(228,250)] = {64,0}, + [I(229,250)] = {64,0}, + [I(230,250)] = {64,0}, + [I(231,250)] = {64,0}, + [I(232,250)] = {64,0}, + [I(233,250)] = {64,0}, + [I(234,250)] = {64,0}, + [I(235,250)] = {64,0}, + [I(236,250)] = {64,0}, + [I(237,250)] = {64,0}, + [I(238,250)] = {64,0}, + [I(239,250)] = {64,0}, + [I(240,250)] = {64,0}, + [I(241,250)] = {64,0}, + [I(242,250)] = {64,0}, + [I(243,250)] = {64,0}, + [I(244,250)] = {64,0}, + [I(245,250)] = {64,0}, + [I(246,250)] = {64,0}, + [I(247,250)] = {64,0}, + [I(248,250)] = {64,0}, + [I(249,250)] = {64,0}, + [I(250,250)] = {64,0}, + [I(251,250)] = {64,0}, + [I(252,250)] = {64,0}, + [I(253,250)] = {64,0}, + [I(254,250)] = {64,0}, + [I(255,250)] = {64,0}, + [I(0,251)] = {64,0}, + [I(1,251)] = {64,0}, + [I(2,251)] = {64,0}, + [I(3,251)] = {64,0}, + [I(4,251)] = {64,0}, + [I(5,251)] = {64,0}, + [I(6,251)] = {64,0}, + [I(7,251)] = {64,0}, + [I(8,251)] = {64,0}, + [I(9,251)] = {64,0}, + [I(10,251)] = {64,0}, + [I(11,251)] = {64,0}, + [I(12,251)] = {64,0}, + [I(13,251)] = {64,0}, + [I(14,251)] = {64,0}, + [I(15,251)] = {64,0}, + [I(16,251)] = {64,0}, + [I(17,251)] = {64,0}, + [I(18,251)] = {64,0}, + [I(19,251)] = {64,0}, + [I(20,251)] = {64,0}, + [I(21,251)] = {64,0}, + [I(22,251)] = {64,0}, + [I(23,251)] = {64,0}, + [I(24,251)] = {64,0}, + [I(25,251)] = {64,0}, + [I(26,251)] = {64,0}, + [I(27,251)] = {64,0}, + [I(28,251)] = {64,0}, + [I(29,251)] = {64,0}, + [I(30,251)] = {64,0}, + [I(31,251)] = {64,0}, + [I(32,251)] = {64,0}, + [I(33,251)] = {64,0}, + [I(34,251)] = {64,0}, + [I(35,251)] = {64,0}, + [I(36,251)] = {64,0}, + [I(37,251)] = {64,0}, + [I(38,251)] = {64,0}, + [I(39,251)] = {64,0}, + [I(40,251)] = {64,0}, + [I(41,251)] = {64,0}, + [I(42,251)] = {64,0}, + [I(43,251)] = {64,0}, + [I(44,251)] = {64,0}, + [I(45,251)] = {64,0}, + [I(46,251)] = {64,0}, + [I(47,251)] = {64,0}, + [I(48,251)] = {X32,0x7FFFFED}, + [I(49,251)] = {X32,0xFFFFFED}, + [I(50,251)] = {X32,0x17FFFFED}, + [I(51,251)] = {64,0}, + [I(52,251)] = {64,0}, + [I(53,251)] = {64,0}, + [I(54,251)] = {64,0}, + [I(55,251)] = {64,0}, + [I(56,251)] = {64,0}, + [I(57,251)] = {64,0}, + [I(58,251)] = {64,0}, + [I(59,251)] = {64,0}, + [I(60,251)] = {64,0}, + [I(61,251)] = {64,0}, + [I(62,251)] = {64,0}, + [I(63,251)] = {64,0}, + [I(64,251)] = {64,0}, + [I(65,251)] = {64,0}, + [I(66,251)] = {64,0}, + [I(67,251)] = {64,0}, + [I(68,251)] = {64,0}, + [I(69,251)] = {64,0}, + [I(70,251)] = {64,0}, + [I(71,251)] = {64,0}, + [I(72,251)] = {64,0}, + [I(73,251)] = {64,0}, + [I(74,251)] = {64,0}, + [I(75,251)] = {64,0}, + [I(76,251)] = {64,0}, + [I(77,251)] = {64,0}, + [I(78,251)] = {64,0}, + [I(79,251)] = {64,0}, + [I(80,251)] = {64,0}, + [I(81,251)] = {64,0}, + [I(82,251)] = {64,0}, + [I(83,251)] = {64,0}, + [I(84,251)] = {64,0}, + [I(85,251)] = {64,0}, + [I(86,251)] = {64,0}, + [I(87,251)] = {64,0}, + [I(88,251)] = {64,0}, + [I(89,251)] = {64,0}, + [I(90,251)] = {64,0}, + [I(91,251)] = {64,0}, + [I(92,251)] = {64,0}, + [I(93,251)] = {64,0}, + [I(94,251)] = {64,0}, + [I(95,251)] = {64,0}, + [I(96,251)] = {64,0}, + [I(97,251)] = {X32,0x1FFFFFED}, + [I(98,251)] = {64,0}, + [I(99,251)] = {X32,0x27FFFFED}, + [I(100,251)] = {64,0}, + [I(101,251)] = {X32,0x2FFFFFED}, + [I(102,251)] = {64,0}, + [I(103,251)] = {64,0}, + [I(104,251)] = {64,0}, + [I(105,251)] = {X32,0x37FFFFED}, + [I(106,251)] = {64,0}, + [I(107,251)] = {64,0}, + [I(108,251)] = {64,0}, + [I(109,251)] = {64,0}, + [I(110,251)] = {64,0}, + [I(111,251)] = {X32,0x3FFFFFED}, + [I(112,251)] = {64,0}, + [I(113,251)] = {64,0}, + [I(114,251)] = {64,0}, + [I(115,251)] = {X32,0x47FFFFED}, + [I(116,251)] = {X32,0x4FFFFFED}, + [I(117,251)] = {64,0}, + [I(118,251)] = {64,0}, + [I(119,251)] = {64,0}, + [I(120,251)] = {64,0}, + [I(121,251)] = {64,0}, + [I(122,251)] = {64,0}, + [I(123,251)] = {64,0}, + [I(124,251)] = {64,0}, + [I(125,251)] = {64,0}, + [I(126,251)] = {64,0}, + [I(127,251)] = {64,0}, + [I(128,251)] = {64,0}, + [I(129,251)] = {64,0}, + [I(130,251)] = {64,0}, + [I(131,251)] = {64,0}, + [I(132,251)] = {64,0}, + [I(133,251)] = {64,0}, + [I(134,251)] = {64,0}, + [I(135,251)] = {64,0}, + [I(136,251)] = {64,0}, + [I(137,251)] = {64,0}, + [I(138,251)] = {64,0}, + [I(139,251)] = {64,0}, + [I(140,251)] = {64,0}, + [I(141,251)] = {64,0}, + [I(142,251)] = {64,0}, + [I(143,251)] = {64,0}, + [I(144,251)] = {64,0}, + [I(145,251)] = {64,0}, + [I(146,251)] = {64,0}, + [I(147,251)] = {64,0}, + [I(148,251)] = {64,0}, + [I(149,251)] = {64,0}, + [I(150,251)] = {64,0}, + [I(151,251)] = {64,0}, + [I(152,251)] = {64,0}, + [I(153,251)] = {64,0}, + [I(154,251)] = {64,0}, + [I(155,251)] = {64,0}, + [I(156,251)] = {64,0}, + [I(157,251)] = {64,0}, + [I(158,251)] = {64,0}, + [I(159,251)] = {64,0}, + [I(160,251)] = {64,0}, + [I(161,251)] = {64,0}, + [I(162,251)] = {64,0}, + [I(163,251)] = {64,0}, + [I(164,251)] = {64,0}, + [I(165,251)] = {64,0}, + [I(166,251)] = {64,0}, + [I(167,251)] = {64,0}, + [I(168,251)] = {64,0}, + [I(169,251)] = {64,0}, + [I(170,251)] = {64,0}, + [I(171,251)] = {64,0}, + [I(172,251)] = {64,0}, + [I(173,251)] = {64,0}, + [I(174,251)] = {64,0}, + [I(175,251)] = {64,0}, + [I(176,251)] = {64,0}, + [I(177,251)] = {64,0}, + [I(178,251)] = {64,0}, + [I(179,251)] = {64,0}, + [I(180,251)] = {64,0}, + [I(181,251)] = {64,0}, + [I(182,251)] = {64,0}, + [I(183,251)] = {64,0}, + [I(184,251)] = {64,0}, + [I(185,251)] = {64,0}, + [I(186,251)] = {64,0}, + [I(187,251)] = {64,0}, + [I(188,251)] = {64,0}, + [I(189,251)] = {64,0}, + [I(190,251)] = {64,0}, + [I(191,251)] = {64,0}, + [I(192,251)] = {64,0}, + [I(193,251)] = {64,0}, + [I(194,251)] = {64,0}, + [I(195,251)] = {64,0}, + [I(196,251)] = {64,0}, + [I(197,251)] = {64,0}, + [I(198,251)] = {64,0}, + [I(199,251)] = {64,0}, + [I(200,251)] = {64,0}, + [I(201,251)] = {64,0}, + [I(202,251)] = {64,0}, + [I(203,251)] = {64,0}, + [I(204,251)] = {64,0}, + [I(205,251)] = {64,0}, + [I(206,251)] = {64,0}, + [I(207,251)] = {64,0}, + [I(208,251)] = {64,0}, + [I(209,251)] = {64,0}, + [I(210,251)] = {64,0}, + [I(211,251)] = {64,0}, + [I(212,251)] = {64,0}, + [I(213,251)] = {64,0}, + [I(214,251)] = {64,0}, + [I(215,251)] = {64,0}, + [I(216,251)] = {64,0}, + [I(217,251)] = {64,0}, + [I(218,251)] = {64,0}, + [I(219,251)] = {64,0}, + [I(220,251)] = {64,0}, + [I(221,251)] = {64,0}, + [I(222,251)] = {64,0}, + [I(223,251)] = {64,0}, + [I(224,251)] = {64,0}, + [I(225,251)] = {64,0}, + [I(226,251)] = {64,0}, + [I(227,251)] = {64,0}, + [I(228,251)] = {64,0}, + [I(229,251)] = {64,0}, + [I(230,251)] = {64,0}, + [I(231,251)] = {64,0}, + [I(232,251)] = {64,0}, + [I(233,251)] = {64,0}, + [I(234,251)] = {64,0}, + [I(235,251)] = {64,0}, + [I(236,251)] = {64,0}, + [I(237,251)] = {64,0}, + [I(238,251)] = {64,0}, + [I(239,251)] = {64,0}, + [I(240,251)] = {64,0}, + [I(241,251)] = {64,0}, + [I(242,251)] = {64,0}, + [I(243,251)] = {64,0}, + [I(244,251)] = {64,0}, + [I(245,251)] = {64,0}, + [I(246,251)] = {64,0}, + [I(247,251)] = {64,0}, + [I(248,251)] = {64,0}, + [I(249,251)] = {64,0}, + [I(250,251)] = {64,0}, + [I(251,251)] = {64,0}, + [I(252,251)] = {64,0}, + [I(253,251)] = {64,0}, + [I(254,251)] = {64,0}, + [I(255,251)] = {64,0}, + [I(0,252)] = {64,0}, + [I(1,252)] = {64,0}, + [I(2,252)] = {64,0}, + [I(3,252)] = {64,0}, + [I(4,252)] = {64,0}, + [I(5,252)] = {64,0}, + [I(6,252)] = {64,0}, + [I(7,252)] = {64,0}, + [I(8,252)] = {64,0}, + [I(9,252)] = {64,0}, + [I(10,252)] = {64,0}, + [I(11,252)] = {64,0}, + [I(12,252)] = {64,0}, + [I(13,252)] = {64,0}, + [I(14,252)] = {64,0}, + [I(15,252)] = {64,0}, + [I(16,252)] = {64,0}, + [I(17,252)] = {64,0}, + [I(18,252)] = {64,0}, + [I(19,252)] = {64,0}, + [I(20,252)] = {64,0}, + [I(21,252)] = {64,0}, + [I(22,252)] = {64,0}, + [I(23,252)] = {64,0}, + [I(24,252)] = {64,0}, + [I(25,252)] = {64,0}, + [I(26,252)] = {64,0}, + [I(27,252)] = {64,0}, + [I(28,252)] = {64,0}, + [I(29,252)] = {64,0}, + [I(30,252)] = {64,0}, + [I(31,252)] = {64,0}, + [I(32,252)] = {64,0}, + [I(33,252)] = {64,0}, + [I(34,252)] = {64,0}, + [I(35,252)] = {64,0}, + [I(36,252)] = {64,0}, + [I(37,252)] = {64,0}, + [I(38,252)] = {64,0}, + [I(39,252)] = {64,0}, + [I(40,252)] = {64,0}, + [I(41,252)] = {64,0}, + [I(42,252)] = {64,0}, + [I(43,252)] = {64,0}, + [I(44,252)] = {64,0}, + [I(45,252)] = {64,0}, + [I(46,252)] = {64,0}, + [I(47,252)] = {64,0}, + [I(48,252)] = {X32,0x7FFFFEE}, + [I(49,252)] = {X32,0xFFFFFEE}, + [I(50,252)] = {X32,0x17FFFFEE}, + [I(51,252)] = {64,0}, + [I(52,252)] = {64,0}, + [I(53,252)] = {64,0}, + [I(54,252)] = {64,0}, + [I(55,252)] = {64,0}, + [I(56,252)] = {64,0}, + [I(57,252)] = {64,0}, + [I(58,252)] = {64,0}, + [I(59,252)] = {64,0}, + [I(60,252)] = {64,0}, + [I(61,252)] = {64,0}, + [I(62,252)] = {64,0}, + [I(63,252)] = {64,0}, + [I(64,252)] = {64,0}, + [I(65,252)] = {64,0}, + [I(66,252)] = {64,0}, + [I(67,252)] = {64,0}, + [I(68,252)] = {64,0}, + [I(69,252)] = {64,0}, + [I(70,252)] = {64,0}, + [I(71,252)] = {64,0}, + [I(72,252)] = {64,0}, + [I(73,252)] = {64,0}, + [I(74,252)] = {64,0}, + [I(75,252)] = {64,0}, + [I(76,252)] = {64,0}, + [I(77,252)] = {64,0}, + [I(78,252)] = {64,0}, + [I(79,252)] = {64,0}, + [I(80,252)] = {64,0}, + [I(81,252)] = {64,0}, + [I(82,252)] = {64,0}, + [I(83,252)] = {64,0}, + [I(84,252)] = {64,0}, + [I(85,252)] = {64,0}, + [I(86,252)] = {64,0}, + [I(87,252)] = {64,0}, + [I(88,252)] = {64,0}, + [I(89,252)] = {64,0}, + [I(90,252)] = {64,0}, + [I(91,252)] = {64,0}, + [I(92,252)] = {64,0}, + [I(93,252)] = {64,0}, + [I(94,252)] = {64,0}, + [I(95,252)] = {64,0}, + [I(96,252)] = {64,0}, + [I(97,252)] = {X32,0x1FFFFFEE}, + [I(98,252)] = {64,0}, + [I(99,252)] = {X32,0x27FFFFEE}, + [I(100,252)] = {64,0}, + [I(101,252)] = {X32,0x2FFFFFEE}, + [I(102,252)] = {64,0}, + [I(103,252)] = {64,0}, + [I(104,252)] = {64,0}, + [I(105,252)] = {X32,0x37FFFFEE}, + [I(106,252)] = {64,0}, + [I(107,252)] = {64,0}, + [I(108,252)] = {64,0}, + [I(109,252)] = {64,0}, + [I(110,252)] = {64,0}, + [I(111,252)] = {X32,0x3FFFFFEE}, + [I(112,252)] = {64,0}, + [I(113,252)] = {64,0}, + [I(114,252)] = {64,0}, + [I(115,252)] = {X32,0x47FFFFEE}, + [I(116,252)] = {X32,0x4FFFFFEE}, + [I(117,252)] = {64,0}, + [I(118,252)] = {64,0}, + [I(119,252)] = {64,0}, + [I(120,252)] = {64,0}, + [I(121,252)] = {64,0}, + [I(122,252)] = {64,0}, + [I(123,252)] = {64,0}, + [I(124,252)] = {64,0}, + [I(125,252)] = {64,0}, + [I(126,252)] = {64,0}, + [I(127,252)] = {64,0}, + [I(128,252)] = {64,0}, + [I(129,252)] = {64,0}, + [I(130,252)] = {64,0}, + [I(131,252)] = {64,0}, + [I(132,252)] = {64,0}, + [I(133,252)] = {64,0}, + [I(134,252)] = {64,0}, + [I(135,252)] = {64,0}, + [I(136,252)] = {64,0}, + [I(137,252)] = {64,0}, + [I(138,252)] = {64,0}, + [I(139,252)] = {64,0}, + [I(140,252)] = {64,0}, + [I(141,252)] = {64,0}, + [I(142,252)] = {64,0}, + [I(143,252)] = {64,0}, + [I(144,252)] = {64,0}, + [I(145,252)] = {64,0}, + [I(146,252)] = {64,0}, + [I(147,252)] = {64,0}, + [I(148,252)] = {64,0}, + [I(149,252)] = {64,0}, + [I(150,252)] = {64,0}, + [I(151,252)] = {64,0}, + [I(152,252)] = {64,0}, + [I(153,252)] = {64,0}, + [I(154,252)] = {64,0}, + [I(155,252)] = {64,0}, + [I(156,252)] = {64,0}, + [I(157,252)] = {64,0}, + [I(158,252)] = {64,0}, + [I(159,252)] = {64,0}, + [I(160,252)] = {64,0}, + [I(161,252)] = {64,0}, + [I(162,252)] = {64,0}, + [I(163,252)] = {64,0}, + [I(164,252)] = {64,0}, + [I(165,252)] = {64,0}, + [I(166,252)] = {64,0}, + [I(167,252)] = {64,0}, + [I(168,252)] = {64,0}, + [I(169,252)] = {64,0}, + [I(170,252)] = {64,0}, + [I(171,252)] = {64,0}, + [I(172,252)] = {64,0}, + [I(173,252)] = {64,0}, + [I(174,252)] = {64,0}, + [I(175,252)] = {64,0}, + [I(176,252)] = {64,0}, + [I(177,252)] = {64,0}, + [I(178,252)] = {64,0}, + [I(179,252)] = {64,0}, + [I(180,252)] = {64,0}, + [I(181,252)] = {64,0}, + [I(182,252)] = {64,0}, + [I(183,252)] = {64,0}, + [I(184,252)] = {64,0}, + [I(185,252)] = {64,0}, + [I(186,252)] = {64,0}, + [I(187,252)] = {64,0}, + [I(188,252)] = {64,0}, + [I(189,252)] = {64,0}, + [I(190,252)] = {64,0}, + [I(191,252)] = {64,0}, + [I(192,252)] = {64,0}, + [I(193,252)] = {64,0}, + [I(194,252)] = {64,0}, + [I(195,252)] = {64,0}, + [I(196,252)] = {64,0}, + [I(197,252)] = {64,0}, + [I(198,252)] = {64,0}, + [I(199,252)] = {64,0}, + [I(200,252)] = {64,0}, + [I(201,252)] = {64,0}, + [I(202,252)] = {64,0}, + [I(203,252)] = {64,0}, + [I(204,252)] = {64,0}, + [I(205,252)] = {64,0}, + [I(206,252)] = {64,0}, + [I(207,252)] = {64,0}, + [I(208,252)] = {64,0}, + [I(209,252)] = {64,0}, + [I(210,252)] = {64,0}, + [I(211,252)] = {64,0}, + [I(212,252)] = {64,0}, + [I(213,252)] = {64,0}, + [I(214,252)] = {64,0}, + [I(215,252)] = {64,0}, + [I(216,252)] = {64,0}, + [I(217,252)] = {64,0}, + [I(218,252)] = {64,0}, + [I(219,252)] = {64,0}, + [I(220,252)] = {64,0}, + [I(221,252)] = {64,0}, + [I(222,252)] = {64,0}, + [I(223,252)] = {64,0}, + [I(224,252)] = {64,0}, + [I(225,252)] = {64,0}, + [I(226,252)] = {64,0}, + [I(227,252)] = {64,0}, + [I(228,252)] = {64,0}, + [I(229,252)] = {64,0}, + [I(230,252)] = {64,0}, + [I(231,252)] = {64,0}, + [I(232,252)] = {64,0}, + [I(233,252)] = {64,0}, + [I(234,252)] = {64,0}, + [I(235,252)] = {64,0}, + [I(236,252)] = {64,0}, + [I(237,252)] = {64,0}, + [I(238,252)] = {64,0}, + [I(239,252)] = {64,0}, + [I(240,252)] = {64,0}, + [I(241,252)] = {64,0}, + [I(242,252)] = {64,0}, + [I(243,252)] = {64,0}, + [I(244,252)] = {64,0}, + [I(245,252)] = {64,0}, + [I(246,252)] = {64,0}, + [I(247,252)] = {64,0}, + [I(248,252)] = {64,0}, + [I(249,252)] = {64,0}, + [I(250,252)] = {64,0}, + [I(251,252)] = {64,0}, + [I(252,252)] = {64,0}, + [I(253,252)] = {64,0}, + [I(254,252)] = {64,0}, + [I(255,252)] = {64,0}, + [I(0,253)] = {64,0}, + [I(1,253)] = {64,0}, + [I(2,253)] = {64,0}, + [I(3,253)] = {64,0}, + [I(4,253)] = {64,0}, + [I(5,253)] = {64,0}, + [I(6,253)] = {64,0}, + [I(7,253)] = {64,0}, + [I(8,253)] = {64,0}, + [I(9,253)] = {64,0}, + [I(10,253)] = {64,0}, + [I(11,253)] = {64,0}, + [I(12,253)] = {64,0}, + [I(13,253)] = {64,0}, + [I(14,253)] = {64,0}, + [I(15,253)] = {64,0}, + [I(16,253)] = {64,0}, + [I(17,253)] = {64,0}, + [I(18,253)] = {64,0}, + [I(19,253)] = {64,0}, + [I(20,253)] = {64,0}, + [I(21,253)] = {64,0}, + [I(22,253)] = {64,0}, + [I(23,253)] = {64,0}, + [I(24,253)] = {64,0}, + [I(25,253)] = {64,0}, + [I(26,253)] = {64,0}, + [I(27,253)] = {64,0}, + [I(28,253)] = {64,0}, + [I(29,253)] = {64,0}, + [I(30,253)] = {64,0}, + [I(31,253)] = {64,0}, + [I(32,253)] = {64,0}, + [I(33,253)] = {64,0}, + [I(34,253)] = {64,0}, + [I(35,253)] = {64,0}, + [I(36,253)] = {64,0}, + [I(37,253)] = {64,0}, + [I(38,253)] = {64,0}, + [I(39,253)] = {64,0}, + [I(40,253)] = {64,0}, + [I(41,253)] = {64,0}, + [I(42,253)] = {64,0}, + [I(43,253)] = {64,0}, + [I(44,253)] = {64,0}, + [I(45,253)] = {64,0}, + [I(46,253)] = {64,0}, + [I(47,253)] = {64,0}, + [I(48,253)] = {X32,0x7FFFFEF}, + [I(49,253)] = {X32,0xFFFFFEF}, + [I(50,253)] = {X32,0x17FFFFEF}, + [I(51,253)] = {64,0}, + [I(52,253)] = {64,0}, + [I(53,253)] = {64,0}, + [I(54,253)] = {64,0}, + [I(55,253)] = {64,0}, + [I(56,253)] = {64,0}, + [I(57,253)] = {64,0}, + [I(58,253)] = {64,0}, + [I(59,253)] = {64,0}, + [I(60,253)] = {64,0}, + [I(61,253)] = {64,0}, + [I(62,253)] = {64,0}, + [I(63,253)] = {64,0}, + [I(64,253)] = {64,0}, + [I(65,253)] = {64,0}, + [I(66,253)] = {64,0}, + [I(67,253)] = {64,0}, + [I(68,253)] = {64,0}, + [I(69,253)] = {64,0}, + [I(70,253)] = {64,0}, + [I(71,253)] = {64,0}, + [I(72,253)] = {64,0}, + [I(73,253)] = {64,0}, + [I(74,253)] = {64,0}, + [I(75,253)] = {64,0}, + [I(76,253)] = {64,0}, + [I(77,253)] = {64,0}, + [I(78,253)] = {64,0}, + [I(79,253)] = {64,0}, + [I(80,253)] = {64,0}, + [I(81,253)] = {64,0}, + [I(82,253)] = {64,0}, + [I(83,253)] = {64,0}, + [I(84,253)] = {64,0}, + [I(85,253)] = {64,0}, + [I(86,253)] = {64,0}, + [I(87,253)] = {64,0}, + [I(88,253)] = {64,0}, + [I(89,253)] = {64,0}, + [I(90,253)] = {64,0}, + [I(91,253)] = {64,0}, + [I(92,253)] = {64,0}, + [I(93,253)] = {64,0}, + [I(94,253)] = {64,0}, + [I(95,253)] = {64,0}, + [I(96,253)] = {64,0}, + [I(97,253)] = {X32,0x1FFFFFEF}, + [I(98,253)] = {64,0}, + [I(99,253)] = {X32,0x27FFFFEF}, + [I(100,253)] = {64,0}, + [I(101,253)] = {X32,0x2FFFFFEF}, + [I(102,253)] = {64,0}, + [I(103,253)] = {64,0}, + [I(104,253)] = {64,0}, + [I(105,253)] = {X32,0x37FFFFEF}, + [I(106,253)] = {64,0}, + [I(107,253)] = {64,0}, + [I(108,253)] = {64,0}, + [I(109,253)] = {64,0}, + [I(110,253)] = {64,0}, + [I(111,253)] = {X32,0x3FFFFFEF}, + [I(112,253)] = {64,0}, + [I(113,253)] = {64,0}, + [I(114,253)] = {64,0}, + [I(115,253)] = {X32,0x47FFFFEF}, + [I(116,253)] = {X32,0x4FFFFFEF}, + [I(117,253)] = {64,0}, + [I(118,253)] = {64,0}, + [I(119,253)] = {64,0}, + [I(120,253)] = {64,0}, + [I(121,253)] = {64,0}, + [I(122,253)] = {64,0}, + [I(123,253)] = {64,0}, + [I(124,253)] = {64,0}, + [I(125,253)] = {64,0}, + [I(126,253)] = {64,0}, + [I(127,253)] = {64,0}, + [I(128,253)] = {64,0}, + [I(129,253)] = {64,0}, + [I(130,253)] = {64,0}, + [I(131,253)] = {64,0}, + [I(132,253)] = {64,0}, + [I(133,253)] = {64,0}, + [I(134,253)] = {64,0}, + [I(135,253)] = {64,0}, + [I(136,253)] = {64,0}, + [I(137,253)] = {64,0}, + [I(138,253)] = {64,0}, + [I(139,253)] = {64,0}, + [I(140,253)] = {64,0}, + [I(141,253)] = {64,0}, + [I(142,253)] = {64,0}, + [I(143,253)] = {64,0}, + [I(144,253)] = {64,0}, + [I(145,253)] = {64,0}, + [I(146,253)] = {64,0}, + [I(147,253)] = {64,0}, + [I(148,253)] = {64,0}, + [I(149,253)] = {64,0}, + [I(150,253)] = {64,0}, + [I(151,253)] = {64,0}, + [I(152,253)] = {64,0}, + [I(153,253)] = {64,0}, + [I(154,253)] = {64,0}, + [I(155,253)] = {64,0}, + [I(156,253)] = {64,0}, + [I(157,253)] = {64,0}, + [I(158,253)] = {64,0}, + [I(159,253)] = {64,0}, + [I(160,253)] = {64,0}, + [I(161,253)] = {64,0}, + [I(162,253)] = {64,0}, + [I(163,253)] = {64,0}, + [I(164,253)] = {64,0}, + [I(165,253)] = {64,0}, + [I(166,253)] = {64,0}, + [I(167,253)] = {64,0}, + [I(168,253)] = {64,0}, + [I(169,253)] = {64,0}, + [I(170,253)] = {64,0}, + [I(171,253)] = {64,0}, + [I(172,253)] = {64,0}, + [I(173,253)] = {64,0}, + [I(174,253)] = {64,0}, + [I(175,253)] = {64,0}, + [I(176,253)] = {64,0}, + [I(177,253)] = {64,0}, + [I(178,253)] = {64,0}, + [I(179,253)] = {64,0}, + [I(180,253)] = {64,0}, + [I(181,253)] = {64,0}, + [I(182,253)] = {64,0}, + [I(183,253)] = {64,0}, + [I(184,253)] = {64,0}, + [I(185,253)] = {64,0}, + [I(186,253)] = {64,0}, + [I(187,253)] = {64,0}, + [I(188,253)] = {64,0}, + [I(189,253)] = {64,0}, + [I(190,253)] = {64,0}, + [I(191,253)] = {64,0}, + [I(192,253)] = {64,0}, + [I(193,253)] = {64,0}, + [I(194,253)] = {64,0}, + [I(195,253)] = {64,0}, + [I(196,253)] = {64,0}, + [I(197,253)] = {64,0}, + [I(198,253)] = {64,0}, + [I(199,253)] = {64,0}, + [I(200,253)] = {64,0}, + [I(201,253)] = {64,0}, + [I(202,253)] = {64,0}, + [I(203,253)] = {64,0}, + [I(204,253)] = {64,0}, + [I(205,253)] = {64,0}, + [I(206,253)] = {64,0}, + [I(207,253)] = {64,0}, + [I(208,253)] = {64,0}, + [I(209,253)] = {64,0}, + [I(210,253)] = {64,0}, + [I(211,253)] = {64,0}, + [I(212,253)] = {64,0}, + [I(213,253)] = {64,0}, + [I(214,253)] = {64,0}, + [I(215,253)] = {64,0}, + [I(216,253)] = {64,0}, + [I(217,253)] = {64,0}, + [I(218,253)] = {64,0}, + [I(219,253)] = {64,0}, + [I(220,253)] = {64,0}, + [I(221,253)] = {64,0}, + [I(222,253)] = {64,0}, + [I(223,253)] = {64,0}, + [I(224,253)] = {64,0}, + [I(225,253)] = {64,0}, + [I(226,253)] = {64,0}, + [I(227,253)] = {64,0}, + [I(228,253)] = {64,0}, + [I(229,253)] = {64,0}, + [I(230,253)] = {64,0}, + [I(231,253)] = {64,0}, + [I(232,253)] = {64,0}, + [I(233,253)] = {64,0}, + [I(234,253)] = {64,0}, + [I(235,253)] = {64,0}, + [I(236,253)] = {64,0}, + [I(237,253)] = {64,0}, + [I(238,253)] = {64,0}, + [I(239,253)] = {64,0}, + [I(240,253)] = {64,0}, + [I(241,253)] = {64,0}, + [I(242,253)] = {64,0}, + [I(243,253)] = {64,0}, + [I(244,253)] = {64,0}, + [I(245,253)] = {64,0}, + [I(246,253)] = {64,0}, + [I(247,253)] = {64,0}, + [I(248,253)] = {64,0}, + [I(249,253)] = {64,0}, + [I(250,253)] = {64,0}, + [I(251,253)] = {64,0}, + [I(252,253)] = {64,0}, + [I(253,253)] = {64,0}, + [I(254,253)] = {64,0}, + [I(255,253)] = {64,0}, + [I(0,254)] = {64,0}, + [I(1,254)] = {64,0}, + [I(2,254)] = {64,0}, + [I(3,254)] = {64,0}, + [I(4,254)] = {64,0}, + [I(5,254)] = {64,0}, + [I(6,254)] = {64,0}, + [I(7,254)] = {64,0}, + [I(8,254)] = {64,0}, + [I(9,254)] = {64,0}, + [I(10,254)] = {64,0}, + [I(11,254)] = {64,0}, + [I(12,254)] = {64,0}, + [I(13,254)] = {64,0}, + [I(14,254)] = {64,0}, + [I(15,254)] = {64,0}, + [I(16,254)] = {64,0}, + [I(17,254)] = {64,0}, + [I(18,254)] = {64,0}, + [I(19,254)] = {64,0}, + [I(20,254)] = {64,0}, + [I(21,254)] = {64,0}, + [I(22,254)] = {64,0}, + [I(23,254)] = {64,0}, + [I(24,254)] = {64,0}, + [I(25,254)] = {64,0}, + [I(26,254)] = {64,0}, + [I(27,254)] = {64,0}, + [I(28,254)] = {64,0}, + [I(29,254)] = {64,0}, + [I(30,254)] = {64,0}, + [I(31,254)] = {64,0}, + [I(32,254)] = {64,0}, + [I(33,254)] = {64,0}, + [I(34,254)] = {64,0}, + [I(35,254)] = {64,0}, + [I(36,254)] = {64,0}, + [I(37,254)] = {64,0}, + [I(38,254)] = {64,0}, + [I(39,254)] = {64,0}, + [I(40,254)] = {64,0}, + [I(41,254)] = {64,0}, + [I(42,254)] = {64,0}, + [I(43,254)] = {64,0}, + [I(44,254)] = {64,0}, + [I(45,254)] = {64,0}, + [I(46,254)] = {64,0}, + [I(47,254)] = {64,0}, + [I(48,254)] = {X32,0x7FFFFF0}, + [I(49,254)] = {X32,0xFFFFFF0}, + [I(50,254)] = {X32,0x17FFFFF0}, + [I(51,254)] = {64,0}, + [I(52,254)] = {64,0}, + [I(53,254)] = {64,0}, + [I(54,254)] = {64,0}, + [I(55,254)] = {64,0}, + [I(56,254)] = {64,0}, + [I(57,254)] = {64,0}, + [I(58,254)] = {64,0}, + [I(59,254)] = {64,0}, + [I(60,254)] = {64,0}, + [I(61,254)] = {64,0}, + [I(62,254)] = {64,0}, + [I(63,254)] = {64,0}, + [I(64,254)] = {64,0}, + [I(65,254)] = {64,0}, + [I(66,254)] = {64,0}, + [I(67,254)] = {64,0}, + [I(68,254)] = {64,0}, + [I(69,254)] = {64,0}, + [I(70,254)] = {64,0}, + [I(71,254)] = {64,0}, + [I(72,254)] = {64,0}, + [I(73,254)] = {64,0}, + [I(74,254)] = {64,0}, + [I(75,254)] = {64,0}, + [I(76,254)] = {64,0}, + [I(77,254)] = {64,0}, + [I(78,254)] = {64,0}, + [I(79,254)] = {64,0}, + [I(80,254)] = {64,0}, + [I(81,254)] = {64,0}, + [I(82,254)] = {64,0}, + [I(83,254)] = {64,0}, + [I(84,254)] = {64,0}, + [I(85,254)] = {64,0}, + [I(86,254)] = {64,0}, + [I(87,254)] = {64,0}, + [I(88,254)] = {64,0}, + [I(89,254)] = {64,0}, + [I(90,254)] = {64,0}, + [I(91,254)] = {64,0}, + [I(92,254)] = {64,0}, + [I(93,254)] = {64,0}, + [I(94,254)] = {64,0}, + [I(95,254)] = {64,0}, + [I(96,254)] = {64,0}, + [I(97,254)] = {X32,0x1FFFFFF0}, + [I(98,254)] = {64,0}, + [I(99,254)] = {X32,0x27FFFFF0}, + [I(100,254)] = {64,0}, + [I(101,254)] = {X32,0x2FFFFFF0}, + [I(102,254)] = {64,0}, + [I(103,254)] = {64,0}, + [I(104,254)] = {64,0}, + [I(105,254)] = {X32,0x37FFFFF0}, + [I(106,254)] = {64,0}, + [I(107,254)] = {64,0}, + [I(108,254)] = {64,0}, + [I(109,254)] = {64,0}, + [I(110,254)] = {64,0}, + [I(111,254)] = {X32,0x3FFFFFF0}, + [I(112,254)] = {64,0}, + [I(113,254)] = {64,0}, + [I(114,254)] = {64,0}, + [I(115,254)] = {X32,0x47FFFFF0}, + [I(116,254)] = {X32,0x4FFFFFF0}, + [I(117,254)] = {64,0}, + [I(118,254)] = {64,0}, + [I(119,254)] = {64,0}, + [I(120,254)] = {64,0}, + [I(121,254)] = {64,0}, + [I(122,254)] = {64,0}, + [I(123,254)] = {64,0}, + [I(124,254)] = {64,0}, + [I(125,254)] = {64,0}, + [I(126,254)] = {64,0}, + [I(127,254)] = {64,0}, + [I(128,254)] = {64,0}, + [I(129,254)] = {64,0}, + [I(130,254)] = {64,0}, + [I(131,254)] = {64,0}, + [I(132,254)] = {64,0}, + [I(133,254)] = {64,0}, + [I(134,254)] = {64,0}, + [I(135,254)] = {64,0}, + [I(136,254)] = {64,0}, + [I(137,254)] = {64,0}, + [I(138,254)] = {64,0}, + [I(139,254)] = {64,0}, + [I(140,254)] = {64,0}, + [I(141,254)] = {64,0}, + [I(142,254)] = {64,0}, + [I(143,254)] = {64,0}, + [I(144,254)] = {64,0}, + [I(145,254)] = {64,0}, + [I(146,254)] = {64,0}, + [I(147,254)] = {64,0}, + [I(148,254)] = {64,0}, + [I(149,254)] = {64,0}, + [I(150,254)] = {64,0}, + [I(151,254)] = {64,0}, + [I(152,254)] = {64,0}, + [I(153,254)] = {64,0}, + [I(154,254)] = {64,0}, + [I(155,254)] = {64,0}, + [I(156,254)] = {64,0}, + [I(157,254)] = {64,0}, + [I(158,254)] = {64,0}, + [I(159,254)] = {64,0}, + [I(160,254)] = {64,0}, + [I(161,254)] = {64,0}, + [I(162,254)] = {64,0}, + [I(163,254)] = {64,0}, + [I(164,254)] = {64,0}, + [I(165,254)] = {64,0}, + [I(166,254)] = {64,0}, + [I(167,254)] = {64,0}, + [I(168,254)] = {64,0}, + [I(169,254)] = {64,0}, + [I(170,254)] = {64,0}, + [I(171,254)] = {64,0}, + [I(172,254)] = {64,0}, + [I(173,254)] = {64,0}, + [I(174,254)] = {64,0}, + [I(175,254)] = {64,0}, + [I(176,254)] = {64,0}, + [I(177,254)] = {64,0}, + [I(178,254)] = {64,0}, + [I(179,254)] = {64,0}, + [I(180,254)] = {64,0}, + [I(181,254)] = {64,0}, + [I(182,254)] = {64,0}, + [I(183,254)] = {64,0}, + [I(184,254)] = {64,0}, + [I(185,254)] = {64,0}, + [I(186,254)] = {64,0}, + [I(187,254)] = {64,0}, + [I(188,254)] = {64,0}, + [I(189,254)] = {64,0}, + [I(190,254)] = {64,0}, + [I(191,254)] = {64,0}, + [I(192,254)] = {64,0}, + [I(193,254)] = {64,0}, + [I(194,254)] = {64,0}, + [I(195,254)] = {64,0}, + [I(196,254)] = {64,0}, + [I(197,254)] = {64,0}, + [I(198,254)] = {64,0}, + [I(199,254)] = {64,0}, + [I(200,254)] = {64,0}, + [I(201,254)] = {64,0}, + [I(202,254)] = {64,0}, + [I(203,254)] = {64,0}, + [I(204,254)] = {64,0}, + [I(205,254)] = {64,0}, + [I(206,254)] = {64,0}, + [I(207,254)] = {64,0}, + [I(208,254)] = {64,0}, + [I(209,254)] = {64,0}, + [I(210,254)] = {64,0}, + [I(211,254)] = {64,0}, + [I(212,254)] = {64,0}, + [I(213,254)] = {64,0}, + [I(214,254)] = {64,0}, + [I(215,254)] = {64,0}, + [I(216,254)] = {64,0}, + [I(217,254)] = {64,0}, + [I(218,254)] = {64,0}, + [I(219,254)] = {64,0}, + [I(220,254)] = {64,0}, + [I(221,254)] = {64,0}, + [I(222,254)] = {64,0}, + [I(223,254)] = {64,0}, + [I(224,254)] = {64,0}, + [I(225,254)] = {64,0}, + [I(226,254)] = {64,0}, + [I(227,254)] = {64,0}, + [I(228,254)] = {64,0}, + [I(229,254)] = {64,0}, + [I(230,254)] = {64,0}, + [I(231,254)] = {64,0}, + [I(232,254)] = {64,0}, + [I(233,254)] = {64,0}, + [I(234,254)] = {64,0}, + [I(235,254)] = {64,0}, + [I(236,254)] = {64,0}, + [I(237,254)] = {64,0}, + [I(238,254)] = {64,0}, + [I(239,254)] = {64,0}, + [I(240,254)] = {64,0}, + [I(241,254)] = {64,0}, + [I(242,254)] = {64,0}, + [I(243,254)] = {64,0}, + [I(244,254)] = {64,0}, + [I(245,254)] = {64,0}, + [I(246,254)] = {64,0}, + [I(247,254)] = {64,0}, + [I(248,254)] = {64,0}, + [I(249,254)] = {64,0}, + [I(250,254)] = {64,0}, + [I(251,254)] = {64,0}, + [I(252,254)] = {64,0}, + [I(253,254)] = {64,0}, + [I(254,254)] = {64,0}, + [I(255,254)] = {64,0}, + [I(0,255)] = {64,0}, + [I(1,255)] = {64,0}, + [I(2,255)] = {64,0}, + [I(3,255)] = {64,0}, + [I(4,255)] = {64,0}, + [I(5,255)] = {64,0}, + [I(6,255)] = {64,0}, + [I(7,255)] = {64,0}, + [I(8,255)] = {64,0}, + [I(9,255)] = {64,0}, + [I(10,255)] = {64,0}, + [I(11,255)] = {64,0}, + [I(12,255)] = {64,0}, + [I(13,255)] = {64,0}, + [I(14,255)] = {64,0}, + [I(15,255)] = {64,0}, + [I(16,255)] = {64,0}, + [I(17,255)] = {64,0}, + [I(18,255)] = {64,0}, + [I(19,255)] = {64,0}, + [I(20,255)] = {64,0}, + [I(21,255)] = {64,0}, + [I(22,255)] = {64,0}, + [I(23,255)] = {64,0}, + [I(24,255)] = {64,0}, + [I(25,255)] = {64,0}, + [I(26,255)] = {64,0}, + [I(27,255)] = {64,0}, + [I(28,255)] = {64,0}, + [I(29,255)] = {64,0}, + [I(30,255)] = {64,0}, + [I(31,255)] = {64,0}, + [I(32,255)] = {X32,0x53FFFFEE}, + [I(33,255)] = {64,0}, + [I(34,255)] = {64,0}, + [I(35,255)] = {64,0}, + [I(36,255)] = {64,0}, + [I(37,255)] = {X32,0x57FFFFEE}, + [I(38,255)] = {64,0}, + [I(39,255)] = {64,0}, + [I(40,255)] = {64,0}, + [I(41,255)] = {64,0}, + [I(42,255)] = {64,0}, + [I(43,255)] = {64,0}, + [I(44,255)] = {64,0}, + [I(45,255)] = {X32,0x5BFFFFEE}, + [I(46,255)] = {X32,0x5FFFFFEE}, + [I(47,255)] = {X32,0x63FFFFEE}, + [I(48,255)] = {31,0x3FFFFEE}, + [I(49,255)] = {31,0x7FFFFEE}, + [I(50,255)] = {31,0xBFFFFEE}, + [I(51,255)] = {X32,0x67FFFFEE}, + [I(52,255)] = {X32,0x6BFFFFEE}, + [I(53,255)] = {X32,0x6FFFFFEE}, + [I(54,255)] = {X32,0x73FFFFEE}, + [I(55,255)] = {X32,0x77FFFFEE}, + [I(56,255)] = {X32,0x7BFFFFEE}, + [I(57,255)] = {X32,0x7FFFFFEE}, + [I(58,255)] = {64,0}, + [I(59,255)] = {64,0}, + [I(60,255)] = {64,0}, + [I(61,255)] = {X32,0x83FFFFEE}, + [I(62,255)] = {64,0}, + [I(63,255)] = {64,0}, + [I(64,255)] = {64,0}, + [I(65,255)] = {X32,0x87FFFFEE}, + [I(66,255)] = {64,0}, + [I(67,255)] = {64,0}, + [I(68,255)] = {64,0}, + [I(69,255)] = {64,0}, + [I(70,255)] = {64,0}, + [I(71,255)] = {64,0}, + [I(72,255)] = {64,0}, + [I(73,255)] = {64,0}, + [I(74,255)] = {64,0}, + [I(75,255)] = {64,0}, + [I(76,255)] = {64,0}, + [I(77,255)] = {64,0}, + [I(78,255)] = {64,0}, + [I(79,255)] = {64,0}, + [I(80,255)] = {64,0}, + [I(81,255)] = {64,0}, + [I(82,255)] = {64,0}, + [I(83,255)] = {64,0}, + [I(84,255)] = {64,0}, + [I(85,255)] = {64,0}, + [I(86,255)] = {64,0}, + [I(87,255)] = {64,0}, + [I(88,255)] = {64,0}, + [I(89,255)] = {64,0}, + [I(90,255)] = {64,0}, + [I(91,255)] = {64,0}, + [I(92,255)] = {64,0}, + [I(93,255)] = {64,0}, + [I(94,255)] = {64,0}, + [I(95,255)] = {X32,0x8BFFFFEE}, + [I(96,255)] = {64,0}, + [I(97,255)] = {31,0xFFFFFEE}, + [I(98,255)] = {X32,0x8FFFFFEE}, + [I(99,255)] = {31,0x13FFFFEE}, + [I(100,255)] = {X32,0x93FFFFEE}, + [I(101,255)] = {31,0x17FFFFEE}, + [I(102,255)] = {X32,0x97FFFFEE}, + [I(103,255)] = {X32,0x9BFFFFEE}, + [I(104,255)] = {X32,0x9FFFFFEE}, + [I(105,255)] = {31,0x1BFFFFEE}, + [I(106,255)] = {64,0}, + [I(107,255)] = {64,0}, + [I(108,255)] = {X32,0xA3FFFFEE}, + [I(109,255)] = {X32,0xA7FFFFEE}, + [I(110,255)] = {X32,0xABFFFFEE}, + [I(111,255)] = {31,0x1FFFFFEE}, + [I(112,255)] = {X32,0xAFFFFFEE}, + [I(113,255)] = {64,0}, + [I(114,255)] = {X32,0xB3FFFFEE}, + [I(115,255)] = {31,0x23FFFFEE}, + [I(116,255)] = {31,0x27FFFFEE}, + [I(117,255)] = {X32,0xB7FFFFEE}, + [I(118,255)] = {64,0}, + [I(119,255)] = {64,0}, + [I(120,255)] = {64,0}, + [I(121,255)] = {64,0}, + [I(122,255)] = {64,0}, + [I(123,255)] = {64,0}, + [I(124,255)] = {64,0}, + [I(125,255)] = {64,0}, + [I(126,255)] = {64,0}, + [I(127,255)] = {64,0}, + [I(128,255)] = {64,0}, + [I(129,255)] = {64,0}, + [I(130,255)] = {64,0}, + [I(131,255)] = {64,0}, + [I(132,255)] = {64,0}, + [I(133,255)] = {64,0}, + [I(134,255)] = {64,0}, + [I(135,255)] = {64,0}, + [I(136,255)] = {64,0}, + [I(137,255)] = {64,0}, + [I(138,255)] = {64,0}, + [I(139,255)] = {64,0}, + [I(140,255)] = {64,0}, + [I(141,255)] = {64,0}, + [I(142,255)] = {64,0}, + [I(143,255)] = {64,0}, + [I(144,255)] = {64,0}, + [I(145,255)] = {64,0}, + [I(146,255)] = {64,0}, + [I(147,255)] = {64,0}, + [I(148,255)] = {64,0}, + [I(149,255)] = {64,0}, + [I(150,255)] = {64,0}, + [I(151,255)] = {64,0}, + [I(152,255)] = {64,0}, + [I(153,255)] = {64,0}, + [I(154,255)] = {64,0}, + [I(155,255)] = {64,0}, + [I(156,255)] = {64,0}, + [I(157,255)] = {64,0}, + [I(158,255)] = {64,0}, + [I(159,255)] = {64,0}, + [I(160,255)] = {64,0}, + [I(161,255)] = {64,0}, + [I(162,255)] = {64,0}, + [I(163,255)] = {64,0}, + [I(164,255)] = {64,0}, + [I(165,255)] = {64,0}, + [I(166,255)] = {64,0}, + [I(167,255)] = {64,0}, + [I(168,255)] = {64,0}, + [I(169,255)] = {64,0}, + [I(170,255)] = {64,0}, + [I(171,255)] = {64,0}, + [I(172,255)] = {64,0}, + [I(173,255)] = {64,0}, + [I(174,255)] = {64,0}, + [I(175,255)] = {64,0}, + [I(176,255)] = {64,0}, + [I(177,255)] = {64,0}, + [I(178,255)] = {64,0}, + [I(179,255)] = {64,0}, + [I(180,255)] = {64,0}, + [I(181,255)] = {64,0}, + [I(182,255)] = {64,0}, + [I(183,255)] = {64,0}, + [I(184,255)] = {64,0}, + [I(185,255)] = {64,0}, + [I(186,255)] = {64,0}, + [I(187,255)] = {64,0}, + [I(188,255)] = {64,0}, + [I(189,255)] = {64,0}, + [I(190,255)] = {64,0}, + [I(191,255)] = {64,0}, + [I(192,255)] = {64,0}, + [I(193,255)] = {64,0}, + [I(194,255)] = {64,0}, + [I(195,255)] = {64,0}, + [I(196,255)] = {64,0}, + [I(197,255)] = {64,0}, + [I(198,255)] = {64,0}, + [I(199,255)] = {64,0}, + [I(200,255)] = {64,0}, + [I(201,255)] = {64,0}, + [I(202,255)] = {64,0}, + [I(203,255)] = {64,0}, + [I(204,255)] = {64,0}, + [I(205,255)] = {64,0}, + [I(206,255)] = {64,0}, + [I(207,255)] = {64,0}, + [I(208,255)] = {64,0}, + [I(209,255)] = {64,0}, + [I(210,255)] = {64,0}, + [I(211,255)] = {64,0}, + [I(212,255)] = {64,0}, + [I(213,255)] = {64,0}, + [I(214,255)] = {64,0}, + [I(215,255)] = {64,0}, + [I(216,255)] = {64,0}, + [I(217,255)] = {64,0}, + [I(218,255)] = {64,0}, + [I(219,255)] = {64,0}, + [I(220,255)] = {64,0}, + [I(221,255)] = {64,0}, + [I(222,255)] = {64,0}, + [I(223,255)] = {64,0}, + [I(224,255)] = {64,0}, + [I(225,255)] = {64,0}, + [I(226,255)] = {64,0}, + [I(227,255)] = {64,0}, + [I(228,255)] = {64,0}, + [I(229,255)] = {64,0}, + [I(230,255)] = {64,0}, + [I(231,255)] = {64,0}, + [I(232,255)] = {64,0}, + [I(233,255)] = {64,0}, + [I(234,255)] = {64,0}, + [I(235,255)] = {64,0}, + [I(236,255)] = {64,0}, + [I(237,255)] = {64,0}, + [I(238,255)] = {64,0}, + [I(239,255)] = {64,0}, + [I(240,255)] = {64,0}, + [I(241,255)] = {64,0}, + [I(242,255)] = {64,0}, + [I(243,255)] = {64,0}, + [I(244,255)] = {64,0}, + [I(245,255)] = {64,0}, + [I(246,255)] = {64,0}, + [I(247,255)] = {64,0}, + [I(248,255)] = {64,0}, + [I(249,255)] = {64,0}, + [I(250,255)] = {64,0}, + [I(251,255)] = {64,0}, + [I(252,255)] = {64,0}, + [I(253,255)] = {64,0}, + [I(254,255)] = {64,0}, + [I(255,255)] = {64,0}, +}; +#undef X32 +#undef I + +static const struct hdec { uint8_t lens; uint8_t out[3]; } hdecs[] = +{ +/* + ,------------- Number of bits consumed by the index + | ,------ Number of bytes in output; 0 means long or invalid code + | | ,--- Output, aligned to the left + V V V */ +/* 0 */ {(15<<2)|3,{48,48,48}}, +/* 1 */ {(15<<2)|3,{48,48,48}}, +/* 2 */ {(15<<2)|3,{48,48,49}}, +/* 3 */ {(15<<2)|3,{48,48,49}}, +/* 4 */ {(15<<2)|3,{48,48,50}}, +/* 5 */ {(15<<2)|3,{48,48,50}}, +/* 6 */ {(15<<2)|3,{48,48,97}}, +/* 7 */ {(15<<2)|3,{48,48,97}}, +/* 8 */ {(15<<2)|3,{48,48,99}}, +/* 9 */ {(15<<2)|3,{48,48,99}}, +/* 10 */ {(15<<2)|3,{48,48,101}}, +/* 11 */ {(15<<2)|3,{48,48,101}}, +/* 12 */ {(15<<2)|3,{48,48,105}}, +/* 13 */ {(15<<2)|3,{48,48,105}}, +/* 14 */ {(15<<2)|3,{48,48,111}}, +/* 15 */ {(15<<2)|3,{48,48,111}}, +/* 16 */ {(15<<2)|3,{48,48,115}}, +/* 17 */ {(15<<2)|3,{48,48,115}}, +/* 18 */ {(15<<2)|3,{48,48,116}}, +/* 19 */ {(15<<2)|3,{48,48,116}}, +/* 20 */ {(16<<2)|3,{48,48,32}}, +/* 21 */ {(16<<2)|3,{48,48,37}}, +/* 22 */ {(16<<2)|3,{48,48,45}}, +/* 23 */ {(16<<2)|3,{48,48,46}}, +/* 24 */ {(16<<2)|3,{48,48,47}}, +/* 25 */ {(16<<2)|3,{48,48,51}}, +/* 26 */ {(16<<2)|3,{48,48,52}}, +/* 27 */ {(16<<2)|3,{48,48,53}}, +/* 28 */ {(16<<2)|3,{48,48,54}}, +/* 29 */ {(16<<2)|3,{48,48,55}}, +/* 30 */ {(16<<2)|3,{48,48,56}}, +/* 31 */ {(16<<2)|3,{48,48,57}}, +/* 32 */ {(16<<2)|3,{48,48,61}}, +/* 33 */ {(16<<2)|3,{48,48,65}}, +/* 34 */ {(16<<2)|3,{48,48,95}}, +/* 35 */ {(16<<2)|3,{48,48,98}}, +/* 36 */ {(16<<2)|3,{48,48,100}}, +/* 37 */ {(16<<2)|3,{48,48,102}}, +/* 38 */ {(16<<2)|3,{48,48,103}}, +/* 39 */ {(16<<2)|3,{48,48,104}}, +/* 40 */ {(16<<2)|3,{48,48,108}}, +/* 41 */ {(16<<2)|3,{48,48,109}}, +/* 42 */ {(16<<2)|3,{48,48,110}}, +/* 43 */ {(16<<2)|3,{48,48,112}}, +/* 44 */ {(16<<2)|3,{48,48,114}}, +/* 45 */ {(16<<2)|3,{48,48,117}}, +/* 46 */ {(10<<2)|2,{48,48,0}}, +/* 47 */ {(10<<2)|2,{48,48,0}}, +/* 48 */ {(10<<2)|2,{48,48,0}}, +/* 49 */ {(10<<2)|2,{48,48,0}}, +/* 50 */ {(10<<2)|2,{48,48,0}}, +/* 51 */ {(10<<2)|2,{48,48,0}}, +/* 52 */ {(10<<2)|2,{48,48,0}}, +/* 53 */ {(10<<2)|2,{48,48,0}}, +/* 54 */ {(10<<2)|2,{48,48,0}}, +/* 55 */ {(10<<2)|2,{48,48,0}}, +/* 56 */ {(10<<2)|2,{48,48,0}}, +/* 57 */ {(10<<2)|2,{48,48,0}}, +/* 58 */ {(10<<2)|2,{48,48,0}}, +/* 59 */ {(10<<2)|2,{48,48,0}}, +/* 60 */ {(10<<2)|2,{48,48,0}}, +/* 61 */ {(10<<2)|2,{48,48,0}}, +/* 62 */ {(10<<2)|2,{48,48,0}}, +/* 63 */ {(10<<2)|2,{48,48,0}}, +/* 64 */ {(15<<2)|3,{48,49,48}}, +/* 65 */ {(15<<2)|3,{48,49,48}}, +/* 66 */ {(15<<2)|3,{48,49,49}}, +/* 67 */ {(15<<2)|3,{48,49,49}}, +/* 68 */ {(15<<2)|3,{48,49,50}}, +/* 69 */ {(15<<2)|3,{48,49,50}}, +/* 70 */ {(15<<2)|3,{48,49,97}}, +/* 71 */ {(15<<2)|3,{48,49,97}}, +/* 72 */ {(15<<2)|3,{48,49,99}}, +/* 73 */ {(15<<2)|3,{48,49,99}}, +/* 74 */ {(15<<2)|3,{48,49,101}}, +/* 75 */ {(15<<2)|3,{48,49,101}}, +/* 76 */ {(15<<2)|3,{48,49,105}}, +/* 77 */ {(15<<2)|3,{48,49,105}}, +/* 78 */ {(15<<2)|3,{48,49,111}}, +/* 79 */ {(15<<2)|3,{48,49,111}}, +/* 80 */ {(15<<2)|3,{48,49,115}}, +/* 81 */ {(15<<2)|3,{48,49,115}}, +/* 82 */ {(15<<2)|3,{48,49,116}}, +/* 83 */ {(15<<2)|3,{48,49,116}}, +/* 84 */ {(16<<2)|3,{48,49,32}}, +/* 85 */ {(16<<2)|3,{48,49,37}}, +/* 86 */ {(16<<2)|3,{48,49,45}}, +/* 87 */ {(16<<2)|3,{48,49,46}}, +/* 88 */ {(16<<2)|3,{48,49,47}}, +/* 89 */ {(16<<2)|3,{48,49,51}}, +/* 90 */ {(16<<2)|3,{48,49,52}}, +/* 91 */ {(16<<2)|3,{48,49,53}}, +/* 92 */ {(16<<2)|3,{48,49,54}}, +/* 93 */ {(16<<2)|3,{48,49,55}}, +/* 94 */ {(16<<2)|3,{48,49,56}}, +/* 95 */ {(16<<2)|3,{48,49,57}}, +/* 96 */ {(16<<2)|3,{48,49,61}}, +/* 97 */ {(16<<2)|3,{48,49,65}}, +/* 98 */ {(16<<2)|3,{48,49,95}}, +/* 99 */ {(16<<2)|3,{48,49,98}}, +/* 100 */ {(16<<2)|3,{48,49,100}}, +/* 101 */ {(16<<2)|3,{48,49,102}}, +/* 102 */ {(16<<2)|3,{48,49,103}}, +/* 103 */ {(16<<2)|3,{48,49,104}}, +/* 104 */ {(16<<2)|3,{48,49,108}}, +/* 105 */ {(16<<2)|3,{48,49,109}}, +/* 106 */ {(16<<2)|3,{48,49,110}}, +/* 107 */ {(16<<2)|3,{48,49,112}}, +/* 108 */ {(16<<2)|3,{48,49,114}}, +/* 109 */ {(16<<2)|3,{48,49,117}}, +/* 110 */ {(10<<2)|2,{48,49,0}}, +/* 111 */ {(10<<2)|2,{48,49,0}}, +/* 112 */ {(10<<2)|2,{48,49,0}}, +/* 113 */ {(10<<2)|2,{48,49,0}}, +/* 114 */ {(10<<2)|2,{48,49,0}}, +/* 115 */ {(10<<2)|2,{48,49,0}}, +/* 116 */ {(10<<2)|2,{48,49,0}}, +/* 117 */ {(10<<2)|2,{48,49,0}}, +/* 118 */ {(10<<2)|2,{48,49,0}}, +/* 119 */ {(10<<2)|2,{48,49,0}}, +/* 120 */ {(10<<2)|2,{48,49,0}}, +/* 121 */ {(10<<2)|2,{48,49,0}}, +/* 122 */ {(10<<2)|2,{48,49,0}}, +/* 123 */ {(10<<2)|2,{48,49,0}}, +/* 124 */ {(10<<2)|2,{48,49,0}}, +/* 125 */ {(10<<2)|2,{48,49,0}}, +/* 126 */ {(10<<2)|2,{48,49,0}}, +/* 127 */ {(10<<2)|2,{48,49,0}}, +/* 128 */ {(15<<2)|3,{48,50,48}}, +/* 129 */ {(15<<2)|3,{48,50,48}}, +/* 130 */ {(15<<2)|3,{48,50,49}}, +/* 131 */ {(15<<2)|3,{48,50,49}}, +/* 132 */ {(15<<2)|3,{48,50,50}}, +/* 133 */ {(15<<2)|3,{48,50,50}}, +/* 134 */ {(15<<2)|3,{48,50,97}}, +/* 135 */ {(15<<2)|3,{48,50,97}}, +/* 136 */ {(15<<2)|3,{48,50,99}}, +/* 137 */ {(15<<2)|3,{48,50,99}}, +/* 138 */ {(15<<2)|3,{48,50,101}}, +/* 139 */ {(15<<2)|3,{48,50,101}}, +/* 140 */ {(15<<2)|3,{48,50,105}}, +/* 141 */ {(15<<2)|3,{48,50,105}}, +/* 142 */ {(15<<2)|3,{48,50,111}}, +/* 143 */ {(15<<2)|3,{48,50,111}}, +/* 144 */ {(15<<2)|3,{48,50,115}}, +/* 145 */ {(15<<2)|3,{48,50,115}}, +/* 146 */ {(15<<2)|3,{48,50,116}}, +/* 147 */ {(15<<2)|3,{48,50,116}}, +/* 148 */ {(16<<2)|3,{48,50,32}}, +/* 149 */ {(16<<2)|3,{48,50,37}}, +/* 150 */ {(16<<2)|3,{48,50,45}}, +/* 151 */ {(16<<2)|3,{48,50,46}}, +/* 152 */ {(16<<2)|3,{48,50,47}}, +/* 153 */ {(16<<2)|3,{48,50,51}}, +/* 154 */ {(16<<2)|3,{48,50,52}}, +/* 155 */ {(16<<2)|3,{48,50,53}}, +/* 156 */ {(16<<2)|3,{48,50,54}}, +/* 157 */ {(16<<2)|3,{48,50,55}}, +/* 158 */ {(16<<2)|3,{48,50,56}}, +/* 159 */ {(16<<2)|3,{48,50,57}}, +/* 160 */ {(16<<2)|3,{48,50,61}}, +/* 161 */ {(16<<2)|3,{48,50,65}}, +/* 162 */ {(16<<2)|3,{48,50,95}}, +/* 163 */ {(16<<2)|3,{48,50,98}}, +/* 164 */ {(16<<2)|3,{48,50,100}}, +/* 165 */ {(16<<2)|3,{48,50,102}}, +/* 166 */ {(16<<2)|3,{48,50,103}}, +/* 167 */ {(16<<2)|3,{48,50,104}}, +/* 168 */ {(16<<2)|3,{48,50,108}}, +/* 169 */ {(16<<2)|3,{48,50,109}}, +/* 170 */ {(16<<2)|3,{48,50,110}}, +/* 171 */ {(16<<2)|3,{48,50,112}}, +/* 172 */ {(16<<2)|3,{48,50,114}}, +/* 173 */ {(16<<2)|3,{48,50,117}}, +/* 174 */ {(10<<2)|2,{48,50,0}}, +/* 175 */ {(10<<2)|2,{48,50,0}}, +/* 176 */ {(10<<2)|2,{48,50,0}}, +/* 177 */ {(10<<2)|2,{48,50,0}}, +/* 178 */ {(10<<2)|2,{48,50,0}}, +/* 179 */ {(10<<2)|2,{48,50,0}}, +/* 180 */ {(10<<2)|2,{48,50,0}}, +/* 181 */ {(10<<2)|2,{48,50,0}}, +/* 182 */ {(10<<2)|2,{48,50,0}}, +/* 183 */ {(10<<2)|2,{48,50,0}}, +/* 184 */ {(10<<2)|2,{48,50,0}}, +/* 185 */ {(10<<2)|2,{48,50,0}}, +/* 186 */ {(10<<2)|2,{48,50,0}}, +/* 187 */ {(10<<2)|2,{48,50,0}}, +/* 188 */ {(10<<2)|2,{48,50,0}}, +/* 189 */ {(10<<2)|2,{48,50,0}}, +/* 190 */ {(10<<2)|2,{48,50,0}}, +/* 191 */ {(10<<2)|2,{48,50,0}}, +/* 192 */ {(15<<2)|3,{48,97,48}}, +/* 193 */ {(15<<2)|3,{48,97,48}}, +/* 194 */ {(15<<2)|3,{48,97,49}}, +/* 195 */ {(15<<2)|3,{48,97,49}}, +/* 196 */ {(15<<2)|3,{48,97,50}}, +/* 197 */ {(15<<2)|3,{48,97,50}}, +/* 198 */ {(15<<2)|3,{48,97,97}}, +/* 199 */ {(15<<2)|3,{48,97,97}}, +/* 200 */ {(15<<2)|3,{48,97,99}}, +/* 201 */ {(15<<2)|3,{48,97,99}}, +/* 202 */ {(15<<2)|3,{48,97,101}}, +/* 203 */ {(15<<2)|3,{48,97,101}}, +/* 204 */ {(15<<2)|3,{48,97,105}}, +/* 205 */ {(15<<2)|3,{48,97,105}}, +/* 206 */ {(15<<2)|3,{48,97,111}}, +/* 207 */ {(15<<2)|3,{48,97,111}}, +/* 208 */ {(15<<2)|3,{48,97,115}}, +/* 209 */ {(15<<2)|3,{48,97,115}}, +/* 210 */ {(15<<2)|3,{48,97,116}}, +/* 211 */ {(15<<2)|3,{48,97,116}}, +/* 212 */ {(16<<2)|3,{48,97,32}}, +/* 213 */ {(16<<2)|3,{48,97,37}}, +/* 214 */ {(16<<2)|3,{48,97,45}}, +/* 215 */ {(16<<2)|3,{48,97,46}}, +/* 216 */ {(16<<2)|3,{48,97,47}}, +/* 217 */ {(16<<2)|3,{48,97,51}}, +/* 218 */ {(16<<2)|3,{48,97,52}}, +/* 219 */ {(16<<2)|3,{48,97,53}}, +/* 220 */ {(16<<2)|3,{48,97,54}}, +/* 221 */ {(16<<2)|3,{48,97,55}}, +/* 222 */ {(16<<2)|3,{48,97,56}}, +/* 223 */ {(16<<2)|3,{48,97,57}}, +/* 224 */ {(16<<2)|3,{48,97,61}}, +/* 225 */ {(16<<2)|3,{48,97,65}}, +/* 226 */ {(16<<2)|3,{48,97,95}}, +/* 227 */ {(16<<2)|3,{48,97,98}}, +/* 228 */ {(16<<2)|3,{48,97,100}}, +/* 229 */ {(16<<2)|3,{48,97,102}}, +/* 230 */ {(16<<2)|3,{48,97,103}}, +/* 231 */ {(16<<2)|3,{48,97,104}}, +/* 232 */ {(16<<2)|3,{48,97,108}}, +/* 233 */ {(16<<2)|3,{48,97,109}}, +/* 234 */ {(16<<2)|3,{48,97,110}}, +/* 235 */ {(16<<2)|3,{48,97,112}}, +/* 236 */ {(16<<2)|3,{48,97,114}}, +/* 237 */ {(16<<2)|3,{48,97,117}}, +/* 238 */ {(10<<2)|2,{48,97,0}}, +/* 239 */ {(10<<2)|2,{48,97,0}}, +/* 240 */ {(10<<2)|2,{48,97,0}}, +/* 241 */ {(10<<2)|2,{48,97,0}}, +/* 242 */ {(10<<2)|2,{48,97,0}}, +/* 243 */ {(10<<2)|2,{48,97,0}}, +/* 244 */ {(10<<2)|2,{48,97,0}}, +/* 245 */ {(10<<2)|2,{48,97,0}}, +/* 246 */ {(10<<2)|2,{48,97,0}}, +/* 247 */ {(10<<2)|2,{48,97,0}}, +/* 248 */ {(10<<2)|2,{48,97,0}}, +/* 249 */ {(10<<2)|2,{48,97,0}}, +/* 250 */ {(10<<2)|2,{48,97,0}}, +/* 251 */ {(10<<2)|2,{48,97,0}}, +/* 252 */ {(10<<2)|2,{48,97,0}}, +/* 253 */ {(10<<2)|2,{48,97,0}}, +/* 254 */ {(10<<2)|2,{48,97,0}}, +/* 255 */ {(10<<2)|2,{48,97,0}}, +/* 256 */ {(15<<2)|3,{48,99,48}}, +/* 257 */ {(15<<2)|3,{48,99,48}}, +/* 258 */ {(15<<2)|3,{48,99,49}}, +/* 259 */ {(15<<2)|3,{48,99,49}}, +/* 260 */ {(15<<2)|3,{48,99,50}}, +/* 261 */ {(15<<2)|3,{48,99,50}}, +/* 262 */ {(15<<2)|3,{48,99,97}}, +/* 263 */ {(15<<2)|3,{48,99,97}}, +/* 264 */ {(15<<2)|3,{48,99,99}}, +/* 265 */ {(15<<2)|3,{48,99,99}}, +/* 266 */ {(15<<2)|3,{48,99,101}}, +/* 267 */ {(15<<2)|3,{48,99,101}}, +/* 268 */ {(15<<2)|3,{48,99,105}}, +/* 269 */ {(15<<2)|3,{48,99,105}}, +/* 270 */ {(15<<2)|3,{48,99,111}}, +/* 271 */ {(15<<2)|3,{48,99,111}}, +/* 272 */ {(15<<2)|3,{48,99,115}}, +/* 273 */ {(15<<2)|3,{48,99,115}}, +/* 274 */ {(15<<2)|3,{48,99,116}}, +/* 275 */ {(15<<2)|3,{48,99,116}}, +/* 276 */ {(16<<2)|3,{48,99,32}}, +/* 277 */ {(16<<2)|3,{48,99,37}}, +/* 278 */ {(16<<2)|3,{48,99,45}}, +/* 279 */ {(16<<2)|3,{48,99,46}}, +/* 280 */ {(16<<2)|3,{48,99,47}}, +/* 281 */ {(16<<2)|3,{48,99,51}}, +/* 282 */ {(16<<2)|3,{48,99,52}}, +/* 283 */ {(16<<2)|3,{48,99,53}}, +/* 284 */ {(16<<2)|3,{48,99,54}}, +/* 285 */ {(16<<2)|3,{48,99,55}}, +/* 286 */ {(16<<2)|3,{48,99,56}}, +/* 287 */ {(16<<2)|3,{48,99,57}}, +/* 288 */ {(16<<2)|3,{48,99,61}}, +/* 289 */ {(16<<2)|3,{48,99,65}}, +/* 290 */ {(16<<2)|3,{48,99,95}}, +/* 291 */ {(16<<2)|3,{48,99,98}}, +/* 292 */ {(16<<2)|3,{48,99,100}}, +/* 293 */ {(16<<2)|3,{48,99,102}}, +/* 294 */ {(16<<2)|3,{48,99,103}}, +/* 295 */ {(16<<2)|3,{48,99,104}}, +/* 296 */ {(16<<2)|3,{48,99,108}}, +/* 297 */ {(16<<2)|3,{48,99,109}}, +/* 298 */ {(16<<2)|3,{48,99,110}}, +/* 299 */ {(16<<2)|3,{48,99,112}}, +/* 300 */ {(16<<2)|3,{48,99,114}}, +/* 301 */ {(16<<2)|3,{48,99,117}}, +/* 302 */ {(10<<2)|2,{48,99,0}}, +/* 303 */ {(10<<2)|2,{48,99,0}}, +/* 304 */ {(10<<2)|2,{48,99,0}}, +/* 305 */ {(10<<2)|2,{48,99,0}}, +/* 306 */ {(10<<2)|2,{48,99,0}}, +/* 307 */ {(10<<2)|2,{48,99,0}}, +/* 308 */ {(10<<2)|2,{48,99,0}}, +/* 309 */ {(10<<2)|2,{48,99,0}}, +/* 310 */ {(10<<2)|2,{48,99,0}}, +/* 311 */ {(10<<2)|2,{48,99,0}}, +/* 312 */ {(10<<2)|2,{48,99,0}}, +/* 313 */ {(10<<2)|2,{48,99,0}}, +/* 314 */ {(10<<2)|2,{48,99,0}}, +/* 315 */ {(10<<2)|2,{48,99,0}}, +/* 316 */ {(10<<2)|2,{48,99,0}}, +/* 317 */ {(10<<2)|2,{48,99,0}}, +/* 318 */ {(10<<2)|2,{48,99,0}}, +/* 319 */ {(10<<2)|2,{48,99,0}}, +/* 320 */ {(15<<2)|3,{48,101,48}}, +/* 321 */ {(15<<2)|3,{48,101,48}}, +/* 322 */ {(15<<2)|3,{48,101,49}}, +/* 323 */ {(15<<2)|3,{48,101,49}}, +/* 324 */ {(15<<2)|3,{48,101,50}}, +/* 325 */ {(15<<2)|3,{48,101,50}}, +/* 326 */ {(15<<2)|3,{48,101,97}}, +/* 327 */ {(15<<2)|3,{48,101,97}}, +/* 328 */ {(15<<2)|3,{48,101,99}}, +/* 329 */ {(15<<2)|3,{48,101,99}}, +/* 330 */ {(15<<2)|3,{48,101,101}}, +/* 331 */ {(15<<2)|3,{48,101,101}}, +/* 332 */ {(15<<2)|3,{48,101,105}}, +/* 333 */ {(15<<2)|3,{48,101,105}}, +/* 334 */ {(15<<2)|3,{48,101,111}}, +/* 335 */ {(15<<2)|3,{48,101,111}}, +/* 336 */ {(15<<2)|3,{48,101,115}}, +/* 337 */ {(15<<2)|3,{48,101,115}}, +/* 338 */ {(15<<2)|3,{48,101,116}}, +/* 339 */ {(15<<2)|3,{48,101,116}}, +/* 340 */ {(16<<2)|3,{48,101,32}}, +/* 341 */ {(16<<2)|3,{48,101,37}}, +/* 342 */ {(16<<2)|3,{48,101,45}}, +/* 343 */ {(16<<2)|3,{48,101,46}}, +/* 344 */ {(16<<2)|3,{48,101,47}}, +/* 345 */ {(16<<2)|3,{48,101,51}}, +/* 346 */ {(16<<2)|3,{48,101,52}}, +/* 347 */ {(16<<2)|3,{48,101,53}}, +/* 348 */ {(16<<2)|3,{48,101,54}}, +/* 349 */ {(16<<2)|3,{48,101,55}}, +/* 350 */ {(16<<2)|3,{48,101,56}}, +/* 351 */ {(16<<2)|3,{48,101,57}}, +/* 352 */ {(16<<2)|3,{48,101,61}}, +/* 353 */ {(16<<2)|3,{48,101,65}}, +/* 354 */ {(16<<2)|3,{48,101,95}}, +/* 355 */ {(16<<2)|3,{48,101,98}}, +/* 356 */ {(16<<2)|3,{48,101,100}}, +/* 357 */ {(16<<2)|3,{48,101,102}}, +/* 358 */ {(16<<2)|3,{48,101,103}}, +/* 359 */ {(16<<2)|3,{48,101,104}}, +/* 360 */ {(16<<2)|3,{48,101,108}}, +/* 361 */ {(16<<2)|3,{48,101,109}}, +/* 362 */ {(16<<2)|3,{48,101,110}}, +/* 363 */ {(16<<2)|3,{48,101,112}}, +/* 364 */ {(16<<2)|3,{48,101,114}}, +/* 365 */ {(16<<2)|3,{48,101,117}}, +/* 366 */ {(10<<2)|2,{48,101,0}}, +/* 367 */ {(10<<2)|2,{48,101,0}}, +/* 368 */ {(10<<2)|2,{48,101,0}}, +/* 369 */ {(10<<2)|2,{48,101,0}}, +/* 370 */ {(10<<2)|2,{48,101,0}}, +/* 371 */ {(10<<2)|2,{48,101,0}}, +/* 372 */ {(10<<2)|2,{48,101,0}}, +/* 373 */ {(10<<2)|2,{48,101,0}}, +/* 374 */ {(10<<2)|2,{48,101,0}}, +/* 375 */ {(10<<2)|2,{48,101,0}}, +/* 376 */ {(10<<2)|2,{48,101,0}}, +/* 377 */ {(10<<2)|2,{48,101,0}}, +/* 378 */ {(10<<2)|2,{48,101,0}}, +/* 379 */ {(10<<2)|2,{48,101,0}}, +/* 380 */ {(10<<2)|2,{48,101,0}}, +/* 381 */ {(10<<2)|2,{48,101,0}}, +/* 382 */ {(10<<2)|2,{48,101,0}}, +/* 383 */ {(10<<2)|2,{48,101,0}}, +/* 384 */ {(15<<2)|3,{48,105,48}}, +/* 385 */ {(15<<2)|3,{48,105,48}}, +/* 386 */ {(15<<2)|3,{48,105,49}}, +/* 387 */ {(15<<2)|3,{48,105,49}}, +/* 388 */ {(15<<2)|3,{48,105,50}}, +/* 389 */ {(15<<2)|3,{48,105,50}}, +/* 390 */ {(15<<2)|3,{48,105,97}}, +/* 391 */ {(15<<2)|3,{48,105,97}}, +/* 392 */ {(15<<2)|3,{48,105,99}}, +/* 393 */ {(15<<2)|3,{48,105,99}}, +/* 394 */ {(15<<2)|3,{48,105,101}}, +/* 395 */ {(15<<2)|3,{48,105,101}}, +/* 396 */ {(15<<2)|3,{48,105,105}}, +/* 397 */ {(15<<2)|3,{48,105,105}}, +/* 398 */ {(15<<2)|3,{48,105,111}}, +/* 399 */ {(15<<2)|3,{48,105,111}}, +/* 400 */ {(15<<2)|3,{48,105,115}}, +/* 401 */ {(15<<2)|3,{48,105,115}}, +/* 402 */ {(15<<2)|3,{48,105,116}}, +/* 403 */ {(15<<2)|3,{48,105,116}}, +/* 404 */ {(16<<2)|3,{48,105,32}}, +/* 405 */ {(16<<2)|3,{48,105,37}}, +/* 406 */ {(16<<2)|3,{48,105,45}}, +/* 407 */ {(16<<2)|3,{48,105,46}}, +/* 408 */ {(16<<2)|3,{48,105,47}}, +/* 409 */ {(16<<2)|3,{48,105,51}}, +/* 410 */ {(16<<2)|3,{48,105,52}}, +/* 411 */ {(16<<2)|3,{48,105,53}}, +/* 412 */ {(16<<2)|3,{48,105,54}}, +/* 413 */ {(16<<2)|3,{48,105,55}}, +/* 414 */ {(16<<2)|3,{48,105,56}}, +/* 415 */ {(16<<2)|3,{48,105,57}}, +/* 416 */ {(16<<2)|3,{48,105,61}}, +/* 417 */ {(16<<2)|3,{48,105,65}}, +/* 418 */ {(16<<2)|3,{48,105,95}}, +/* 419 */ {(16<<2)|3,{48,105,98}}, +/* 420 */ {(16<<2)|3,{48,105,100}}, +/* 421 */ {(16<<2)|3,{48,105,102}}, +/* 422 */ {(16<<2)|3,{48,105,103}}, +/* 423 */ {(16<<2)|3,{48,105,104}}, +/* 424 */ {(16<<2)|3,{48,105,108}}, +/* 425 */ {(16<<2)|3,{48,105,109}}, +/* 426 */ {(16<<2)|3,{48,105,110}}, +/* 427 */ {(16<<2)|3,{48,105,112}}, +/* 428 */ {(16<<2)|3,{48,105,114}}, +/* 429 */ {(16<<2)|3,{48,105,117}}, +/* 430 */ {(10<<2)|2,{48,105,0}}, +/* 431 */ {(10<<2)|2,{48,105,0}}, +/* 432 */ {(10<<2)|2,{48,105,0}}, +/* 433 */ {(10<<2)|2,{48,105,0}}, +/* 434 */ {(10<<2)|2,{48,105,0}}, +/* 435 */ {(10<<2)|2,{48,105,0}}, +/* 436 */ {(10<<2)|2,{48,105,0}}, +/* 437 */ {(10<<2)|2,{48,105,0}}, +/* 438 */ {(10<<2)|2,{48,105,0}}, +/* 439 */ {(10<<2)|2,{48,105,0}}, +/* 440 */ {(10<<2)|2,{48,105,0}}, +/* 441 */ {(10<<2)|2,{48,105,0}}, +/* 442 */ {(10<<2)|2,{48,105,0}}, +/* 443 */ {(10<<2)|2,{48,105,0}}, +/* 444 */ {(10<<2)|2,{48,105,0}}, +/* 445 */ {(10<<2)|2,{48,105,0}}, +/* 446 */ {(10<<2)|2,{48,105,0}}, +/* 447 */ {(10<<2)|2,{48,105,0}}, +/* 448 */ {(15<<2)|3,{48,111,48}}, +/* 449 */ {(15<<2)|3,{48,111,48}}, +/* 450 */ {(15<<2)|3,{48,111,49}}, +/* 451 */ {(15<<2)|3,{48,111,49}}, +/* 452 */ {(15<<2)|3,{48,111,50}}, +/* 453 */ {(15<<2)|3,{48,111,50}}, +/* 454 */ {(15<<2)|3,{48,111,97}}, +/* 455 */ {(15<<2)|3,{48,111,97}}, +/* 456 */ {(15<<2)|3,{48,111,99}}, +/* 457 */ {(15<<2)|3,{48,111,99}}, +/* 458 */ {(15<<2)|3,{48,111,101}}, +/* 459 */ {(15<<2)|3,{48,111,101}}, +/* 460 */ {(15<<2)|3,{48,111,105}}, +/* 461 */ {(15<<2)|3,{48,111,105}}, +/* 462 */ {(15<<2)|3,{48,111,111}}, +/* 463 */ {(15<<2)|3,{48,111,111}}, +/* 464 */ {(15<<2)|3,{48,111,115}}, +/* 465 */ {(15<<2)|3,{48,111,115}}, +/* 466 */ {(15<<2)|3,{48,111,116}}, +/* 467 */ {(15<<2)|3,{48,111,116}}, +/* 468 */ {(16<<2)|3,{48,111,32}}, +/* 469 */ {(16<<2)|3,{48,111,37}}, +/* 470 */ {(16<<2)|3,{48,111,45}}, +/* 471 */ {(16<<2)|3,{48,111,46}}, +/* 472 */ {(16<<2)|3,{48,111,47}}, +/* 473 */ {(16<<2)|3,{48,111,51}}, +/* 474 */ {(16<<2)|3,{48,111,52}}, +/* 475 */ {(16<<2)|3,{48,111,53}}, +/* 476 */ {(16<<2)|3,{48,111,54}}, +/* 477 */ {(16<<2)|3,{48,111,55}}, +/* 478 */ {(16<<2)|3,{48,111,56}}, +/* 479 */ {(16<<2)|3,{48,111,57}}, +/* 480 */ {(16<<2)|3,{48,111,61}}, +/* 481 */ {(16<<2)|3,{48,111,65}}, +/* 482 */ {(16<<2)|3,{48,111,95}}, +/* 483 */ {(16<<2)|3,{48,111,98}}, +/* 484 */ {(16<<2)|3,{48,111,100}}, +/* 485 */ {(16<<2)|3,{48,111,102}}, +/* 486 */ {(16<<2)|3,{48,111,103}}, +/* 487 */ {(16<<2)|3,{48,111,104}}, +/* 488 */ {(16<<2)|3,{48,111,108}}, +/* 489 */ {(16<<2)|3,{48,111,109}}, +/* 490 */ {(16<<2)|3,{48,111,110}}, +/* 491 */ {(16<<2)|3,{48,111,112}}, +/* 492 */ {(16<<2)|3,{48,111,114}}, +/* 493 */ {(16<<2)|3,{48,111,117}}, +/* 494 */ {(10<<2)|2,{48,111,0}}, +/* 495 */ {(10<<2)|2,{48,111,0}}, +/* 496 */ {(10<<2)|2,{48,111,0}}, +/* 497 */ {(10<<2)|2,{48,111,0}}, +/* 498 */ {(10<<2)|2,{48,111,0}}, +/* 499 */ {(10<<2)|2,{48,111,0}}, +/* 500 */ {(10<<2)|2,{48,111,0}}, +/* 501 */ {(10<<2)|2,{48,111,0}}, +/* 502 */ {(10<<2)|2,{48,111,0}}, +/* 503 */ {(10<<2)|2,{48,111,0}}, +/* 504 */ {(10<<2)|2,{48,111,0}}, +/* 505 */ {(10<<2)|2,{48,111,0}}, +/* 506 */ {(10<<2)|2,{48,111,0}}, +/* 507 */ {(10<<2)|2,{48,111,0}}, +/* 508 */ {(10<<2)|2,{48,111,0}}, +/* 509 */ {(10<<2)|2,{48,111,0}}, +/* 510 */ {(10<<2)|2,{48,111,0}}, +/* 511 */ {(10<<2)|2,{48,111,0}}, +/* 512 */ {(15<<2)|3,{48,115,48}}, +/* 513 */ {(15<<2)|3,{48,115,48}}, +/* 514 */ {(15<<2)|3,{48,115,49}}, +/* 515 */ {(15<<2)|3,{48,115,49}}, +/* 516 */ {(15<<2)|3,{48,115,50}}, +/* 517 */ {(15<<2)|3,{48,115,50}}, +/* 518 */ {(15<<2)|3,{48,115,97}}, +/* 519 */ {(15<<2)|3,{48,115,97}}, +/* 520 */ {(15<<2)|3,{48,115,99}}, +/* 521 */ {(15<<2)|3,{48,115,99}}, +/* 522 */ {(15<<2)|3,{48,115,101}}, +/* 523 */ {(15<<2)|3,{48,115,101}}, +/* 524 */ {(15<<2)|3,{48,115,105}}, +/* 525 */ {(15<<2)|3,{48,115,105}}, +/* 526 */ {(15<<2)|3,{48,115,111}}, +/* 527 */ {(15<<2)|3,{48,115,111}}, +/* 528 */ {(15<<2)|3,{48,115,115}}, +/* 529 */ {(15<<2)|3,{48,115,115}}, +/* 530 */ {(15<<2)|3,{48,115,116}}, +/* 531 */ {(15<<2)|3,{48,115,116}}, +/* 532 */ {(16<<2)|3,{48,115,32}}, +/* 533 */ {(16<<2)|3,{48,115,37}}, +/* 534 */ {(16<<2)|3,{48,115,45}}, +/* 535 */ {(16<<2)|3,{48,115,46}}, +/* 536 */ {(16<<2)|3,{48,115,47}}, +/* 537 */ {(16<<2)|3,{48,115,51}}, +/* 538 */ {(16<<2)|3,{48,115,52}}, +/* 539 */ {(16<<2)|3,{48,115,53}}, +/* 540 */ {(16<<2)|3,{48,115,54}}, +/* 541 */ {(16<<2)|3,{48,115,55}}, +/* 542 */ {(16<<2)|3,{48,115,56}}, +/* 543 */ {(16<<2)|3,{48,115,57}}, +/* 544 */ {(16<<2)|3,{48,115,61}}, +/* 545 */ {(16<<2)|3,{48,115,65}}, +/* 546 */ {(16<<2)|3,{48,115,95}}, +/* 547 */ {(16<<2)|3,{48,115,98}}, +/* 548 */ {(16<<2)|3,{48,115,100}}, +/* 549 */ {(16<<2)|3,{48,115,102}}, +/* 550 */ {(16<<2)|3,{48,115,103}}, +/* 551 */ {(16<<2)|3,{48,115,104}}, +/* 552 */ {(16<<2)|3,{48,115,108}}, +/* 553 */ {(16<<2)|3,{48,115,109}}, +/* 554 */ {(16<<2)|3,{48,115,110}}, +/* 555 */ {(16<<2)|3,{48,115,112}}, +/* 556 */ {(16<<2)|3,{48,115,114}}, +/* 557 */ {(16<<2)|3,{48,115,117}}, +/* 558 */ {(10<<2)|2,{48,115,0}}, +/* 559 */ {(10<<2)|2,{48,115,0}}, +/* 560 */ {(10<<2)|2,{48,115,0}}, +/* 561 */ {(10<<2)|2,{48,115,0}}, +/* 562 */ {(10<<2)|2,{48,115,0}}, +/* 563 */ {(10<<2)|2,{48,115,0}}, +/* 564 */ {(10<<2)|2,{48,115,0}}, +/* 565 */ {(10<<2)|2,{48,115,0}}, +/* 566 */ {(10<<2)|2,{48,115,0}}, +/* 567 */ {(10<<2)|2,{48,115,0}}, +/* 568 */ {(10<<2)|2,{48,115,0}}, +/* 569 */ {(10<<2)|2,{48,115,0}}, +/* 570 */ {(10<<2)|2,{48,115,0}}, +/* 571 */ {(10<<2)|2,{48,115,0}}, +/* 572 */ {(10<<2)|2,{48,115,0}}, +/* 573 */ {(10<<2)|2,{48,115,0}}, +/* 574 */ {(10<<2)|2,{48,115,0}}, +/* 575 */ {(10<<2)|2,{48,115,0}}, +/* 576 */ {(15<<2)|3,{48,116,48}}, +/* 577 */ {(15<<2)|3,{48,116,48}}, +/* 578 */ {(15<<2)|3,{48,116,49}}, +/* 579 */ {(15<<2)|3,{48,116,49}}, +/* 580 */ {(15<<2)|3,{48,116,50}}, +/* 581 */ {(15<<2)|3,{48,116,50}}, +/* 582 */ {(15<<2)|3,{48,116,97}}, +/* 583 */ {(15<<2)|3,{48,116,97}}, +/* 584 */ {(15<<2)|3,{48,116,99}}, +/* 585 */ {(15<<2)|3,{48,116,99}}, +/* 586 */ {(15<<2)|3,{48,116,101}}, +/* 587 */ {(15<<2)|3,{48,116,101}}, +/* 588 */ {(15<<2)|3,{48,116,105}}, +/* 589 */ {(15<<2)|3,{48,116,105}}, +/* 590 */ {(15<<2)|3,{48,116,111}}, +/* 591 */ {(15<<2)|3,{48,116,111}}, +/* 592 */ {(15<<2)|3,{48,116,115}}, +/* 593 */ {(15<<2)|3,{48,116,115}}, +/* 594 */ {(15<<2)|3,{48,116,116}}, +/* 595 */ {(15<<2)|3,{48,116,116}}, +/* 596 */ {(16<<2)|3,{48,116,32}}, +/* 597 */ {(16<<2)|3,{48,116,37}}, +/* 598 */ {(16<<2)|3,{48,116,45}}, +/* 599 */ {(16<<2)|3,{48,116,46}}, +/* 600 */ {(16<<2)|3,{48,116,47}}, +/* 601 */ {(16<<2)|3,{48,116,51}}, +/* 602 */ {(16<<2)|3,{48,116,52}}, +/* 603 */ {(16<<2)|3,{48,116,53}}, +/* 604 */ {(16<<2)|3,{48,116,54}}, +/* 605 */ {(16<<2)|3,{48,116,55}}, +/* 606 */ {(16<<2)|3,{48,116,56}}, +/* 607 */ {(16<<2)|3,{48,116,57}}, +/* 608 */ {(16<<2)|3,{48,116,61}}, +/* 609 */ {(16<<2)|3,{48,116,65}}, +/* 610 */ {(16<<2)|3,{48,116,95}}, +/* 611 */ {(16<<2)|3,{48,116,98}}, +/* 612 */ {(16<<2)|3,{48,116,100}}, +/* 613 */ {(16<<2)|3,{48,116,102}}, +/* 614 */ {(16<<2)|3,{48,116,103}}, +/* 615 */ {(16<<2)|3,{48,116,104}}, +/* 616 */ {(16<<2)|3,{48,116,108}}, +/* 617 */ {(16<<2)|3,{48,116,109}}, +/* 618 */ {(16<<2)|3,{48,116,110}}, +/* 619 */ {(16<<2)|3,{48,116,112}}, +/* 620 */ {(16<<2)|3,{48,116,114}}, +/* 621 */ {(16<<2)|3,{48,116,117}}, +/* 622 */ {(10<<2)|2,{48,116,0}}, +/* 623 */ {(10<<2)|2,{48,116,0}}, +/* 624 */ {(10<<2)|2,{48,116,0}}, +/* 625 */ {(10<<2)|2,{48,116,0}}, +/* 626 */ {(10<<2)|2,{48,116,0}}, +/* 627 */ {(10<<2)|2,{48,116,0}}, +/* 628 */ {(10<<2)|2,{48,116,0}}, +/* 629 */ {(10<<2)|2,{48,116,0}}, +/* 630 */ {(10<<2)|2,{48,116,0}}, +/* 631 */ {(10<<2)|2,{48,116,0}}, +/* 632 */ {(10<<2)|2,{48,116,0}}, +/* 633 */ {(10<<2)|2,{48,116,0}}, +/* 634 */ {(10<<2)|2,{48,116,0}}, +/* 635 */ {(10<<2)|2,{48,116,0}}, +/* 636 */ {(10<<2)|2,{48,116,0}}, +/* 637 */ {(10<<2)|2,{48,116,0}}, +/* 638 */ {(10<<2)|2,{48,116,0}}, +/* 639 */ {(10<<2)|2,{48,116,0}}, +/* 640 */ {(16<<2)|3,{48,32,48}}, +/* 641 */ {(16<<2)|3,{48,32,49}}, +/* 642 */ {(16<<2)|3,{48,32,50}}, +/* 643 */ {(16<<2)|3,{48,32,97}}, +/* 644 */ {(16<<2)|3,{48,32,99}}, +/* 645 */ {(16<<2)|3,{48,32,101}}, +/* 646 */ {(16<<2)|3,{48,32,105}}, +/* 647 */ {(16<<2)|3,{48,32,111}}, +/* 648 */ {(16<<2)|3,{48,32,115}}, +/* 649 */ {(16<<2)|3,{48,32,116}}, +/* 650 */ {(11<<2)|2,{48,32,0}}, +/* 651 */ {(11<<2)|2,{48,32,0}}, +/* 652 */ {(11<<2)|2,{48,32,0}}, +/* 653 */ {(11<<2)|2,{48,32,0}}, +/* 654 */ {(11<<2)|2,{48,32,0}}, +/* 655 */ {(11<<2)|2,{48,32,0}}, +/* 656 */ {(11<<2)|2,{48,32,0}}, +/* 657 */ {(11<<2)|2,{48,32,0}}, +/* 658 */ {(11<<2)|2,{48,32,0}}, +/* 659 */ {(11<<2)|2,{48,32,0}}, +/* 660 */ {(11<<2)|2,{48,32,0}}, +/* 661 */ {(11<<2)|2,{48,32,0}}, +/* 662 */ {(11<<2)|2,{48,32,0}}, +/* 663 */ {(11<<2)|2,{48,32,0}}, +/* 664 */ {(11<<2)|2,{48,32,0}}, +/* 665 */ {(11<<2)|2,{48,32,0}}, +/* 666 */ {(11<<2)|2,{48,32,0}}, +/* 667 */ {(11<<2)|2,{48,32,0}}, +/* 668 */ {(11<<2)|2,{48,32,0}}, +/* 669 */ {(11<<2)|2,{48,32,0}}, +/* 670 */ {(11<<2)|2,{48,32,0}}, +/* 671 */ {(11<<2)|2,{48,32,0}}, +/* 672 */ {(16<<2)|3,{48,37,48}}, +/* 673 */ {(16<<2)|3,{48,37,49}}, +/* 674 */ {(16<<2)|3,{48,37,50}}, +/* 675 */ {(16<<2)|3,{48,37,97}}, +/* 676 */ {(16<<2)|3,{48,37,99}}, +/* 677 */ {(16<<2)|3,{48,37,101}}, +/* 678 */ {(16<<2)|3,{48,37,105}}, +/* 679 */ {(16<<2)|3,{48,37,111}}, +/* 680 */ {(16<<2)|3,{48,37,115}}, +/* 681 */ {(16<<2)|3,{48,37,116}}, +/* 682 */ {(11<<2)|2,{48,37,0}}, +/* 683 */ {(11<<2)|2,{48,37,0}}, +/* 684 */ {(11<<2)|2,{48,37,0}}, +/* 685 */ {(11<<2)|2,{48,37,0}}, +/* 686 */ {(11<<2)|2,{48,37,0}}, +/* 687 */ {(11<<2)|2,{48,37,0}}, +/* 688 */ {(11<<2)|2,{48,37,0}}, +/* 689 */ {(11<<2)|2,{48,37,0}}, +/* 690 */ {(11<<2)|2,{48,37,0}}, +/* 691 */ {(11<<2)|2,{48,37,0}}, +/* 692 */ {(11<<2)|2,{48,37,0}}, +/* 693 */ {(11<<2)|2,{48,37,0}}, +/* 694 */ {(11<<2)|2,{48,37,0}}, +/* 695 */ {(11<<2)|2,{48,37,0}}, +/* 696 */ {(11<<2)|2,{48,37,0}}, +/* 697 */ {(11<<2)|2,{48,37,0}}, +/* 698 */ {(11<<2)|2,{48,37,0}}, +/* 699 */ {(11<<2)|2,{48,37,0}}, +/* 700 */ {(11<<2)|2,{48,37,0}}, +/* 701 */ {(11<<2)|2,{48,37,0}}, +/* 702 */ {(11<<2)|2,{48,37,0}}, +/* 703 */ {(11<<2)|2,{48,37,0}}, +/* 704 */ {(16<<2)|3,{48,45,48}}, +/* 705 */ {(16<<2)|3,{48,45,49}}, +/* 706 */ {(16<<2)|3,{48,45,50}}, +/* 707 */ {(16<<2)|3,{48,45,97}}, +/* 708 */ {(16<<2)|3,{48,45,99}}, +/* 709 */ {(16<<2)|3,{48,45,101}}, +/* 710 */ {(16<<2)|3,{48,45,105}}, +/* 711 */ {(16<<2)|3,{48,45,111}}, +/* 712 */ {(16<<2)|3,{48,45,115}}, +/* 713 */ {(16<<2)|3,{48,45,116}}, +/* 714 */ {(11<<2)|2,{48,45,0}}, +/* 715 */ {(11<<2)|2,{48,45,0}}, +/* 716 */ {(11<<2)|2,{48,45,0}}, +/* 717 */ {(11<<2)|2,{48,45,0}}, +/* 718 */ {(11<<2)|2,{48,45,0}}, +/* 719 */ {(11<<2)|2,{48,45,0}}, +/* 720 */ {(11<<2)|2,{48,45,0}}, +/* 721 */ {(11<<2)|2,{48,45,0}}, +/* 722 */ {(11<<2)|2,{48,45,0}}, +/* 723 */ {(11<<2)|2,{48,45,0}}, +/* 724 */ {(11<<2)|2,{48,45,0}}, +/* 725 */ {(11<<2)|2,{48,45,0}}, +/* 726 */ {(11<<2)|2,{48,45,0}}, +/* 727 */ {(11<<2)|2,{48,45,0}}, +/* 728 */ {(11<<2)|2,{48,45,0}}, +/* 729 */ {(11<<2)|2,{48,45,0}}, +/* 730 */ {(11<<2)|2,{48,45,0}}, +/* 731 */ {(11<<2)|2,{48,45,0}}, +/* 732 */ {(11<<2)|2,{48,45,0}}, +/* 733 */ {(11<<2)|2,{48,45,0}}, +/* 734 */ {(11<<2)|2,{48,45,0}}, +/* 735 */ {(11<<2)|2,{48,45,0}}, +/* 736 */ {(16<<2)|3,{48,46,48}}, +/* 737 */ {(16<<2)|3,{48,46,49}}, +/* 738 */ {(16<<2)|3,{48,46,50}}, +/* 739 */ {(16<<2)|3,{48,46,97}}, +/* 740 */ {(16<<2)|3,{48,46,99}}, +/* 741 */ {(16<<2)|3,{48,46,101}}, +/* 742 */ {(16<<2)|3,{48,46,105}}, +/* 743 */ {(16<<2)|3,{48,46,111}}, +/* 744 */ {(16<<2)|3,{48,46,115}}, +/* 745 */ {(16<<2)|3,{48,46,116}}, +/* 746 */ {(11<<2)|2,{48,46,0}}, +/* 747 */ {(11<<2)|2,{48,46,0}}, +/* 748 */ {(11<<2)|2,{48,46,0}}, +/* 749 */ {(11<<2)|2,{48,46,0}}, +/* 750 */ {(11<<2)|2,{48,46,0}}, +/* 751 */ {(11<<2)|2,{48,46,0}}, +/* 752 */ {(11<<2)|2,{48,46,0}}, +/* 753 */ {(11<<2)|2,{48,46,0}}, +/* 754 */ {(11<<2)|2,{48,46,0}}, +/* 755 */ {(11<<2)|2,{48,46,0}}, +/* 756 */ {(11<<2)|2,{48,46,0}}, +/* 757 */ {(11<<2)|2,{48,46,0}}, +/* 758 */ {(11<<2)|2,{48,46,0}}, +/* 759 */ {(11<<2)|2,{48,46,0}}, +/* 760 */ {(11<<2)|2,{48,46,0}}, +/* 761 */ {(11<<2)|2,{48,46,0}}, +/* 762 */ {(11<<2)|2,{48,46,0}}, +/* 763 */ {(11<<2)|2,{48,46,0}}, +/* 764 */ {(11<<2)|2,{48,46,0}}, +/* 765 */ {(11<<2)|2,{48,46,0}}, +/* 766 */ {(11<<2)|2,{48,46,0}}, +/* 767 */ {(11<<2)|2,{48,46,0}}, +/* 768 */ {(16<<2)|3,{48,47,48}}, +/* 769 */ {(16<<2)|3,{48,47,49}}, +/* 770 */ {(16<<2)|3,{48,47,50}}, +/* 771 */ {(16<<2)|3,{48,47,97}}, +/* 772 */ {(16<<2)|3,{48,47,99}}, +/* 773 */ {(16<<2)|3,{48,47,101}}, +/* 774 */ {(16<<2)|3,{48,47,105}}, +/* 775 */ {(16<<2)|3,{48,47,111}}, +/* 776 */ {(16<<2)|3,{48,47,115}}, +/* 777 */ {(16<<2)|3,{48,47,116}}, +/* 778 */ {(11<<2)|2,{48,47,0}}, +/* 779 */ {(11<<2)|2,{48,47,0}}, +/* 780 */ {(11<<2)|2,{48,47,0}}, +/* 781 */ {(11<<2)|2,{48,47,0}}, +/* 782 */ {(11<<2)|2,{48,47,0}}, +/* 783 */ {(11<<2)|2,{48,47,0}}, +/* 784 */ {(11<<2)|2,{48,47,0}}, +/* 785 */ {(11<<2)|2,{48,47,0}}, +/* 786 */ {(11<<2)|2,{48,47,0}}, +/* 787 */ {(11<<2)|2,{48,47,0}}, +/* 788 */ {(11<<2)|2,{48,47,0}}, +/* 789 */ {(11<<2)|2,{48,47,0}}, +/* 790 */ {(11<<2)|2,{48,47,0}}, +/* 791 */ {(11<<2)|2,{48,47,0}}, +/* 792 */ {(11<<2)|2,{48,47,0}}, +/* 793 */ {(11<<2)|2,{48,47,0}}, +/* 794 */ {(11<<2)|2,{48,47,0}}, +/* 795 */ {(11<<2)|2,{48,47,0}}, +/* 796 */ {(11<<2)|2,{48,47,0}}, +/* 797 */ {(11<<2)|2,{48,47,0}}, +/* 798 */ {(11<<2)|2,{48,47,0}}, +/* 799 */ {(11<<2)|2,{48,47,0}}, +/* 800 */ {(16<<2)|3,{48,51,48}}, +/* 801 */ {(16<<2)|3,{48,51,49}}, +/* 802 */ {(16<<2)|3,{48,51,50}}, +/* 803 */ {(16<<2)|3,{48,51,97}}, +/* 804 */ {(16<<2)|3,{48,51,99}}, +/* 805 */ {(16<<2)|3,{48,51,101}}, +/* 806 */ {(16<<2)|3,{48,51,105}}, +/* 807 */ {(16<<2)|3,{48,51,111}}, +/* 808 */ {(16<<2)|3,{48,51,115}}, +/* 809 */ {(16<<2)|3,{48,51,116}}, +/* 810 */ {(11<<2)|2,{48,51,0}}, +/* 811 */ {(11<<2)|2,{48,51,0}}, +/* 812 */ {(11<<2)|2,{48,51,0}}, +/* 813 */ {(11<<2)|2,{48,51,0}}, +/* 814 */ {(11<<2)|2,{48,51,0}}, +/* 815 */ {(11<<2)|2,{48,51,0}}, +/* 816 */ {(11<<2)|2,{48,51,0}}, +/* 817 */ {(11<<2)|2,{48,51,0}}, +/* 818 */ {(11<<2)|2,{48,51,0}}, +/* 819 */ {(11<<2)|2,{48,51,0}}, +/* 820 */ {(11<<2)|2,{48,51,0}}, +/* 821 */ {(11<<2)|2,{48,51,0}}, +/* 822 */ {(11<<2)|2,{48,51,0}}, +/* 823 */ {(11<<2)|2,{48,51,0}}, +/* 824 */ {(11<<2)|2,{48,51,0}}, +/* 825 */ {(11<<2)|2,{48,51,0}}, +/* 826 */ {(11<<2)|2,{48,51,0}}, +/* 827 */ {(11<<2)|2,{48,51,0}}, +/* 828 */ {(11<<2)|2,{48,51,0}}, +/* 829 */ {(11<<2)|2,{48,51,0}}, +/* 830 */ {(11<<2)|2,{48,51,0}}, +/* 831 */ {(11<<2)|2,{48,51,0}}, +/* 832 */ {(16<<2)|3,{48,52,48}}, +/* 833 */ {(16<<2)|3,{48,52,49}}, +/* 834 */ {(16<<2)|3,{48,52,50}}, +/* 835 */ {(16<<2)|3,{48,52,97}}, +/* 836 */ {(16<<2)|3,{48,52,99}}, +/* 837 */ {(16<<2)|3,{48,52,101}}, +/* 838 */ {(16<<2)|3,{48,52,105}}, +/* 839 */ {(16<<2)|3,{48,52,111}}, +/* 840 */ {(16<<2)|3,{48,52,115}}, +/* 841 */ {(16<<2)|3,{48,52,116}}, +/* 842 */ {(11<<2)|2,{48,52,0}}, +/* 843 */ {(11<<2)|2,{48,52,0}}, +/* 844 */ {(11<<2)|2,{48,52,0}}, +/* 845 */ {(11<<2)|2,{48,52,0}}, +/* 846 */ {(11<<2)|2,{48,52,0}}, +/* 847 */ {(11<<2)|2,{48,52,0}}, +/* 848 */ {(11<<2)|2,{48,52,0}}, +/* 849 */ {(11<<2)|2,{48,52,0}}, +/* 850 */ {(11<<2)|2,{48,52,0}}, +/* 851 */ {(11<<2)|2,{48,52,0}}, +/* 852 */ {(11<<2)|2,{48,52,0}}, +/* 853 */ {(11<<2)|2,{48,52,0}}, +/* 854 */ {(11<<2)|2,{48,52,0}}, +/* 855 */ {(11<<2)|2,{48,52,0}}, +/* 856 */ {(11<<2)|2,{48,52,0}}, +/* 857 */ {(11<<2)|2,{48,52,0}}, +/* 858 */ {(11<<2)|2,{48,52,0}}, +/* 859 */ {(11<<2)|2,{48,52,0}}, +/* 860 */ {(11<<2)|2,{48,52,0}}, +/* 861 */ {(11<<2)|2,{48,52,0}}, +/* 862 */ {(11<<2)|2,{48,52,0}}, +/* 863 */ {(11<<2)|2,{48,52,0}}, +/* 864 */ {(16<<2)|3,{48,53,48}}, +/* 865 */ {(16<<2)|3,{48,53,49}}, +/* 866 */ {(16<<2)|3,{48,53,50}}, +/* 867 */ {(16<<2)|3,{48,53,97}}, +/* 868 */ {(16<<2)|3,{48,53,99}}, +/* 869 */ {(16<<2)|3,{48,53,101}}, +/* 870 */ {(16<<2)|3,{48,53,105}}, +/* 871 */ {(16<<2)|3,{48,53,111}}, +/* 872 */ {(16<<2)|3,{48,53,115}}, +/* 873 */ {(16<<2)|3,{48,53,116}}, +/* 874 */ {(11<<2)|2,{48,53,0}}, +/* 875 */ {(11<<2)|2,{48,53,0}}, +/* 876 */ {(11<<2)|2,{48,53,0}}, +/* 877 */ {(11<<2)|2,{48,53,0}}, +/* 878 */ {(11<<2)|2,{48,53,0}}, +/* 879 */ {(11<<2)|2,{48,53,0}}, +/* 880 */ {(11<<2)|2,{48,53,0}}, +/* 881 */ {(11<<2)|2,{48,53,0}}, +/* 882 */ {(11<<2)|2,{48,53,0}}, +/* 883 */ {(11<<2)|2,{48,53,0}}, +/* 884 */ {(11<<2)|2,{48,53,0}}, +/* 885 */ {(11<<2)|2,{48,53,0}}, +/* 886 */ {(11<<2)|2,{48,53,0}}, +/* 887 */ {(11<<2)|2,{48,53,0}}, +/* 888 */ {(11<<2)|2,{48,53,0}}, +/* 889 */ {(11<<2)|2,{48,53,0}}, +/* 890 */ {(11<<2)|2,{48,53,0}}, +/* 891 */ {(11<<2)|2,{48,53,0}}, +/* 892 */ {(11<<2)|2,{48,53,0}}, +/* 893 */ {(11<<2)|2,{48,53,0}}, +/* 894 */ {(11<<2)|2,{48,53,0}}, +/* 895 */ {(11<<2)|2,{48,53,0}}, +/* 896 */ {(16<<2)|3,{48,54,48}}, +/* 897 */ {(16<<2)|3,{48,54,49}}, +/* 898 */ {(16<<2)|3,{48,54,50}}, +/* 899 */ {(16<<2)|3,{48,54,97}}, +/* 900 */ {(16<<2)|3,{48,54,99}}, +/* 901 */ {(16<<2)|3,{48,54,101}}, +/* 902 */ {(16<<2)|3,{48,54,105}}, +/* 903 */ {(16<<2)|3,{48,54,111}}, +/* 904 */ {(16<<2)|3,{48,54,115}}, +/* 905 */ {(16<<2)|3,{48,54,116}}, +/* 906 */ {(11<<2)|2,{48,54,0}}, +/* 907 */ {(11<<2)|2,{48,54,0}}, +/* 908 */ {(11<<2)|2,{48,54,0}}, +/* 909 */ {(11<<2)|2,{48,54,0}}, +/* 910 */ {(11<<2)|2,{48,54,0}}, +/* 911 */ {(11<<2)|2,{48,54,0}}, +/* 912 */ {(11<<2)|2,{48,54,0}}, +/* 913 */ {(11<<2)|2,{48,54,0}}, +/* 914 */ {(11<<2)|2,{48,54,0}}, +/* 915 */ {(11<<2)|2,{48,54,0}}, +/* 916 */ {(11<<2)|2,{48,54,0}}, +/* 917 */ {(11<<2)|2,{48,54,0}}, +/* 918 */ {(11<<2)|2,{48,54,0}}, +/* 919 */ {(11<<2)|2,{48,54,0}}, +/* 920 */ {(11<<2)|2,{48,54,0}}, +/* 921 */ {(11<<2)|2,{48,54,0}}, +/* 922 */ {(11<<2)|2,{48,54,0}}, +/* 923 */ {(11<<2)|2,{48,54,0}}, +/* 924 */ {(11<<2)|2,{48,54,0}}, +/* 925 */ {(11<<2)|2,{48,54,0}}, +/* 926 */ {(11<<2)|2,{48,54,0}}, +/* 927 */ {(11<<2)|2,{48,54,0}}, +/* 928 */ {(16<<2)|3,{48,55,48}}, +/* 929 */ {(16<<2)|3,{48,55,49}}, +/* 930 */ {(16<<2)|3,{48,55,50}}, +/* 931 */ {(16<<2)|3,{48,55,97}}, +/* 932 */ {(16<<2)|3,{48,55,99}}, +/* 933 */ {(16<<2)|3,{48,55,101}}, +/* 934 */ {(16<<2)|3,{48,55,105}}, +/* 935 */ {(16<<2)|3,{48,55,111}}, +/* 936 */ {(16<<2)|3,{48,55,115}}, +/* 937 */ {(16<<2)|3,{48,55,116}}, +/* 938 */ {(11<<2)|2,{48,55,0}}, +/* 939 */ {(11<<2)|2,{48,55,0}}, +/* 940 */ {(11<<2)|2,{48,55,0}}, +/* 941 */ {(11<<2)|2,{48,55,0}}, +/* 942 */ {(11<<2)|2,{48,55,0}}, +/* 943 */ {(11<<2)|2,{48,55,0}}, +/* 944 */ {(11<<2)|2,{48,55,0}}, +/* 945 */ {(11<<2)|2,{48,55,0}}, +/* 946 */ {(11<<2)|2,{48,55,0}}, +/* 947 */ {(11<<2)|2,{48,55,0}}, +/* 948 */ {(11<<2)|2,{48,55,0}}, +/* 949 */ {(11<<2)|2,{48,55,0}}, +/* 950 */ {(11<<2)|2,{48,55,0}}, +/* 951 */ {(11<<2)|2,{48,55,0}}, +/* 952 */ {(11<<2)|2,{48,55,0}}, +/* 953 */ {(11<<2)|2,{48,55,0}}, +/* 954 */ {(11<<2)|2,{48,55,0}}, +/* 955 */ {(11<<2)|2,{48,55,0}}, +/* 956 */ {(11<<2)|2,{48,55,0}}, +/* 957 */ {(11<<2)|2,{48,55,0}}, +/* 958 */ {(11<<2)|2,{48,55,0}}, +/* 959 */ {(11<<2)|2,{48,55,0}}, +/* 960 */ {(16<<2)|3,{48,56,48}}, +/* 961 */ {(16<<2)|3,{48,56,49}}, +/* 962 */ {(16<<2)|3,{48,56,50}}, +/* 963 */ {(16<<2)|3,{48,56,97}}, +/* 964 */ {(16<<2)|3,{48,56,99}}, +/* 965 */ {(16<<2)|3,{48,56,101}}, +/* 966 */ {(16<<2)|3,{48,56,105}}, +/* 967 */ {(16<<2)|3,{48,56,111}}, +/* 968 */ {(16<<2)|3,{48,56,115}}, +/* 969 */ {(16<<2)|3,{48,56,116}}, +/* 970 */ {(11<<2)|2,{48,56,0}}, +/* 971 */ {(11<<2)|2,{48,56,0}}, +/* 972 */ {(11<<2)|2,{48,56,0}}, +/* 973 */ {(11<<2)|2,{48,56,0}}, +/* 974 */ {(11<<2)|2,{48,56,0}}, +/* 975 */ {(11<<2)|2,{48,56,0}}, +/* 976 */ {(11<<2)|2,{48,56,0}}, +/* 977 */ {(11<<2)|2,{48,56,0}}, +/* 978 */ {(11<<2)|2,{48,56,0}}, +/* 979 */ {(11<<2)|2,{48,56,0}}, +/* 980 */ {(11<<2)|2,{48,56,0}}, +/* 981 */ {(11<<2)|2,{48,56,0}}, +/* 982 */ {(11<<2)|2,{48,56,0}}, +/* 983 */ {(11<<2)|2,{48,56,0}}, +/* 984 */ {(11<<2)|2,{48,56,0}}, +/* 985 */ {(11<<2)|2,{48,56,0}}, +/* 986 */ {(11<<2)|2,{48,56,0}}, +/* 987 */ {(11<<2)|2,{48,56,0}}, +/* 988 */ {(11<<2)|2,{48,56,0}}, +/* 989 */ {(11<<2)|2,{48,56,0}}, +/* 990 */ {(11<<2)|2,{48,56,0}}, +/* 991 */ {(11<<2)|2,{48,56,0}}, +/* 992 */ {(16<<2)|3,{48,57,48}}, +/* 993 */ {(16<<2)|3,{48,57,49}}, +/* 994 */ {(16<<2)|3,{48,57,50}}, +/* 995 */ {(16<<2)|3,{48,57,97}}, +/* 996 */ {(16<<2)|3,{48,57,99}}, +/* 997 */ {(16<<2)|3,{48,57,101}}, +/* 998 */ {(16<<2)|3,{48,57,105}}, +/* 999 */ {(16<<2)|3,{48,57,111}}, +/* 1000 */ {(16<<2)|3,{48,57,115}}, +/* 1001 */ {(16<<2)|3,{48,57,116}}, +/* 1002 */ {(11<<2)|2,{48,57,0}}, +/* 1003 */ {(11<<2)|2,{48,57,0}}, +/* 1004 */ {(11<<2)|2,{48,57,0}}, +/* 1005 */ {(11<<2)|2,{48,57,0}}, +/* 1006 */ {(11<<2)|2,{48,57,0}}, +/* 1007 */ {(11<<2)|2,{48,57,0}}, +/* 1008 */ {(11<<2)|2,{48,57,0}}, +/* 1009 */ {(11<<2)|2,{48,57,0}}, +/* 1010 */ {(11<<2)|2,{48,57,0}}, +/* 1011 */ {(11<<2)|2,{48,57,0}}, +/* 1012 */ {(11<<2)|2,{48,57,0}}, +/* 1013 */ {(11<<2)|2,{48,57,0}}, +/* 1014 */ {(11<<2)|2,{48,57,0}}, +/* 1015 */ {(11<<2)|2,{48,57,0}}, +/* 1016 */ {(11<<2)|2,{48,57,0}}, +/* 1017 */ {(11<<2)|2,{48,57,0}}, +/* 1018 */ {(11<<2)|2,{48,57,0}}, +/* 1019 */ {(11<<2)|2,{48,57,0}}, +/* 1020 */ {(11<<2)|2,{48,57,0}}, +/* 1021 */ {(11<<2)|2,{48,57,0}}, +/* 1022 */ {(11<<2)|2,{48,57,0}}, +/* 1023 */ {(11<<2)|2,{48,57,0}}, +/* 1024 */ {(16<<2)|3,{48,61,48}}, +/* 1025 */ {(16<<2)|3,{48,61,49}}, +/* 1026 */ {(16<<2)|3,{48,61,50}}, +/* 1027 */ {(16<<2)|3,{48,61,97}}, +/* 1028 */ {(16<<2)|3,{48,61,99}}, +/* 1029 */ {(16<<2)|3,{48,61,101}}, +/* 1030 */ {(16<<2)|3,{48,61,105}}, +/* 1031 */ {(16<<2)|3,{48,61,111}}, +/* 1032 */ {(16<<2)|3,{48,61,115}}, +/* 1033 */ {(16<<2)|3,{48,61,116}}, +/* 1034 */ {(11<<2)|2,{48,61,0}}, +/* 1035 */ {(11<<2)|2,{48,61,0}}, +/* 1036 */ {(11<<2)|2,{48,61,0}}, +/* 1037 */ {(11<<2)|2,{48,61,0}}, +/* 1038 */ {(11<<2)|2,{48,61,0}}, +/* 1039 */ {(11<<2)|2,{48,61,0}}, +/* 1040 */ {(11<<2)|2,{48,61,0}}, +/* 1041 */ {(11<<2)|2,{48,61,0}}, +/* 1042 */ {(11<<2)|2,{48,61,0}}, +/* 1043 */ {(11<<2)|2,{48,61,0}}, +/* 1044 */ {(11<<2)|2,{48,61,0}}, +/* 1045 */ {(11<<2)|2,{48,61,0}}, +/* 1046 */ {(11<<2)|2,{48,61,0}}, +/* 1047 */ {(11<<2)|2,{48,61,0}}, +/* 1048 */ {(11<<2)|2,{48,61,0}}, +/* 1049 */ {(11<<2)|2,{48,61,0}}, +/* 1050 */ {(11<<2)|2,{48,61,0}}, +/* 1051 */ {(11<<2)|2,{48,61,0}}, +/* 1052 */ {(11<<2)|2,{48,61,0}}, +/* 1053 */ {(11<<2)|2,{48,61,0}}, +/* 1054 */ {(11<<2)|2,{48,61,0}}, +/* 1055 */ {(11<<2)|2,{48,61,0}}, +/* 1056 */ {(16<<2)|3,{48,65,48}}, +/* 1057 */ {(16<<2)|3,{48,65,49}}, +/* 1058 */ {(16<<2)|3,{48,65,50}}, +/* 1059 */ {(16<<2)|3,{48,65,97}}, +/* 1060 */ {(16<<2)|3,{48,65,99}}, +/* 1061 */ {(16<<2)|3,{48,65,101}}, +/* 1062 */ {(16<<2)|3,{48,65,105}}, +/* 1063 */ {(16<<2)|3,{48,65,111}}, +/* 1064 */ {(16<<2)|3,{48,65,115}}, +/* 1065 */ {(16<<2)|3,{48,65,116}}, +/* 1066 */ {(11<<2)|2,{48,65,0}}, +/* 1067 */ {(11<<2)|2,{48,65,0}}, +/* 1068 */ {(11<<2)|2,{48,65,0}}, +/* 1069 */ {(11<<2)|2,{48,65,0}}, +/* 1070 */ {(11<<2)|2,{48,65,0}}, +/* 1071 */ {(11<<2)|2,{48,65,0}}, +/* 1072 */ {(11<<2)|2,{48,65,0}}, +/* 1073 */ {(11<<2)|2,{48,65,0}}, +/* 1074 */ {(11<<2)|2,{48,65,0}}, +/* 1075 */ {(11<<2)|2,{48,65,0}}, +/* 1076 */ {(11<<2)|2,{48,65,0}}, +/* 1077 */ {(11<<2)|2,{48,65,0}}, +/* 1078 */ {(11<<2)|2,{48,65,0}}, +/* 1079 */ {(11<<2)|2,{48,65,0}}, +/* 1080 */ {(11<<2)|2,{48,65,0}}, +/* 1081 */ {(11<<2)|2,{48,65,0}}, +/* 1082 */ {(11<<2)|2,{48,65,0}}, +/* 1083 */ {(11<<2)|2,{48,65,0}}, +/* 1084 */ {(11<<2)|2,{48,65,0}}, +/* 1085 */ {(11<<2)|2,{48,65,0}}, +/* 1086 */ {(11<<2)|2,{48,65,0}}, +/* 1087 */ {(11<<2)|2,{48,65,0}}, +/* 1088 */ {(16<<2)|3,{48,95,48}}, +/* 1089 */ {(16<<2)|3,{48,95,49}}, +/* 1090 */ {(16<<2)|3,{48,95,50}}, +/* 1091 */ {(16<<2)|3,{48,95,97}}, +/* 1092 */ {(16<<2)|3,{48,95,99}}, +/* 1093 */ {(16<<2)|3,{48,95,101}}, +/* 1094 */ {(16<<2)|3,{48,95,105}}, +/* 1095 */ {(16<<2)|3,{48,95,111}}, +/* 1096 */ {(16<<2)|3,{48,95,115}}, +/* 1097 */ {(16<<2)|3,{48,95,116}}, +/* 1098 */ {(11<<2)|2,{48,95,0}}, +/* 1099 */ {(11<<2)|2,{48,95,0}}, +/* 1100 */ {(11<<2)|2,{48,95,0}}, +/* 1101 */ {(11<<2)|2,{48,95,0}}, +/* 1102 */ {(11<<2)|2,{48,95,0}}, +/* 1103 */ {(11<<2)|2,{48,95,0}}, +/* 1104 */ {(11<<2)|2,{48,95,0}}, +/* 1105 */ {(11<<2)|2,{48,95,0}}, +/* 1106 */ {(11<<2)|2,{48,95,0}}, +/* 1107 */ {(11<<2)|2,{48,95,0}}, +/* 1108 */ {(11<<2)|2,{48,95,0}}, +/* 1109 */ {(11<<2)|2,{48,95,0}}, +/* 1110 */ {(11<<2)|2,{48,95,0}}, +/* 1111 */ {(11<<2)|2,{48,95,0}}, +/* 1112 */ {(11<<2)|2,{48,95,0}}, +/* 1113 */ {(11<<2)|2,{48,95,0}}, +/* 1114 */ {(11<<2)|2,{48,95,0}}, +/* 1115 */ {(11<<2)|2,{48,95,0}}, +/* 1116 */ {(11<<2)|2,{48,95,0}}, +/* 1117 */ {(11<<2)|2,{48,95,0}}, +/* 1118 */ {(11<<2)|2,{48,95,0}}, +/* 1119 */ {(11<<2)|2,{48,95,0}}, +/* 1120 */ {(16<<2)|3,{48,98,48}}, +/* 1121 */ {(16<<2)|3,{48,98,49}}, +/* 1122 */ {(16<<2)|3,{48,98,50}}, +/* 1123 */ {(16<<2)|3,{48,98,97}}, +/* 1124 */ {(16<<2)|3,{48,98,99}}, +/* 1125 */ {(16<<2)|3,{48,98,101}}, +/* 1126 */ {(16<<2)|3,{48,98,105}}, +/* 1127 */ {(16<<2)|3,{48,98,111}}, +/* 1128 */ {(16<<2)|3,{48,98,115}}, +/* 1129 */ {(16<<2)|3,{48,98,116}}, +/* 1130 */ {(11<<2)|2,{48,98,0}}, +/* 1131 */ {(11<<2)|2,{48,98,0}}, +/* 1132 */ {(11<<2)|2,{48,98,0}}, +/* 1133 */ {(11<<2)|2,{48,98,0}}, +/* 1134 */ {(11<<2)|2,{48,98,0}}, +/* 1135 */ {(11<<2)|2,{48,98,0}}, +/* 1136 */ {(11<<2)|2,{48,98,0}}, +/* 1137 */ {(11<<2)|2,{48,98,0}}, +/* 1138 */ {(11<<2)|2,{48,98,0}}, +/* 1139 */ {(11<<2)|2,{48,98,0}}, +/* 1140 */ {(11<<2)|2,{48,98,0}}, +/* 1141 */ {(11<<2)|2,{48,98,0}}, +/* 1142 */ {(11<<2)|2,{48,98,0}}, +/* 1143 */ {(11<<2)|2,{48,98,0}}, +/* 1144 */ {(11<<2)|2,{48,98,0}}, +/* 1145 */ {(11<<2)|2,{48,98,0}}, +/* 1146 */ {(11<<2)|2,{48,98,0}}, +/* 1147 */ {(11<<2)|2,{48,98,0}}, +/* 1148 */ {(11<<2)|2,{48,98,0}}, +/* 1149 */ {(11<<2)|2,{48,98,0}}, +/* 1150 */ {(11<<2)|2,{48,98,0}}, +/* 1151 */ {(11<<2)|2,{48,98,0}}, +/* 1152 */ {(16<<2)|3,{48,100,48}}, +/* 1153 */ {(16<<2)|3,{48,100,49}}, +/* 1154 */ {(16<<2)|3,{48,100,50}}, +/* 1155 */ {(16<<2)|3,{48,100,97}}, +/* 1156 */ {(16<<2)|3,{48,100,99}}, +/* 1157 */ {(16<<2)|3,{48,100,101}}, +/* 1158 */ {(16<<2)|3,{48,100,105}}, +/* 1159 */ {(16<<2)|3,{48,100,111}}, +/* 1160 */ {(16<<2)|3,{48,100,115}}, +/* 1161 */ {(16<<2)|3,{48,100,116}}, +/* 1162 */ {(11<<2)|2,{48,100,0}}, +/* 1163 */ {(11<<2)|2,{48,100,0}}, +/* 1164 */ {(11<<2)|2,{48,100,0}}, +/* 1165 */ {(11<<2)|2,{48,100,0}}, +/* 1166 */ {(11<<2)|2,{48,100,0}}, +/* 1167 */ {(11<<2)|2,{48,100,0}}, +/* 1168 */ {(11<<2)|2,{48,100,0}}, +/* 1169 */ {(11<<2)|2,{48,100,0}}, +/* 1170 */ {(11<<2)|2,{48,100,0}}, +/* 1171 */ {(11<<2)|2,{48,100,0}}, +/* 1172 */ {(11<<2)|2,{48,100,0}}, +/* 1173 */ {(11<<2)|2,{48,100,0}}, +/* 1174 */ {(11<<2)|2,{48,100,0}}, +/* 1175 */ {(11<<2)|2,{48,100,0}}, +/* 1176 */ {(11<<2)|2,{48,100,0}}, +/* 1177 */ {(11<<2)|2,{48,100,0}}, +/* 1178 */ {(11<<2)|2,{48,100,0}}, +/* 1179 */ {(11<<2)|2,{48,100,0}}, +/* 1180 */ {(11<<2)|2,{48,100,0}}, +/* 1181 */ {(11<<2)|2,{48,100,0}}, +/* 1182 */ {(11<<2)|2,{48,100,0}}, +/* 1183 */ {(11<<2)|2,{48,100,0}}, +/* 1184 */ {(16<<2)|3,{48,102,48}}, +/* 1185 */ {(16<<2)|3,{48,102,49}}, +/* 1186 */ {(16<<2)|3,{48,102,50}}, +/* 1187 */ {(16<<2)|3,{48,102,97}}, +/* 1188 */ {(16<<2)|3,{48,102,99}}, +/* 1189 */ {(16<<2)|3,{48,102,101}}, +/* 1190 */ {(16<<2)|3,{48,102,105}}, +/* 1191 */ {(16<<2)|3,{48,102,111}}, +/* 1192 */ {(16<<2)|3,{48,102,115}}, +/* 1193 */ {(16<<2)|3,{48,102,116}}, +/* 1194 */ {(11<<2)|2,{48,102,0}}, +/* 1195 */ {(11<<2)|2,{48,102,0}}, +/* 1196 */ {(11<<2)|2,{48,102,0}}, +/* 1197 */ {(11<<2)|2,{48,102,0}}, +/* 1198 */ {(11<<2)|2,{48,102,0}}, +/* 1199 */ {(11<<2)|2,{48,102,0}}, +/* 1200 */ {(11<<2)|2,{48,102,0}}, +/* 1201 */ {(11<<2)|2,{48,102,0}}, +/* 1202 */ {(11<<2)|2,{48,102,0}}, +/* 1203 */ {(11<<2)|2,{48,102,0}}, +/* 1204 */ {(11<<2)|2,{48,102,0}}, +/* 1205 */ {(11<<2)|2,{48,102,0}}, +/* 1206 */ {(11<<2)|2,{48,102,0}}, +/* 1207 */ {(11<<2)|2,{48,102,0}}, +/* 1208 */ {(11<<2)|2,{48,102,0}}, +/* 1209 */ {(11<<2)|2,{48,102,0}}, +/* 1210 */ {(11<<2)|2,{48,102,0}}, +/* 1211 */ {(11<<2)|2,{48,102,0}}, +/* 1212 */ {(11<<2)|2,{48,102,0}}, +/* 1213 */ {(11<<2)|2,{48,102,0}}, +/* 1214 */ {(11<<2)|2,{48,102,0}}, +/* 1215 */ {(11<<2)|2,{48,102,0}}, +/* 1216 */ {(16<<2)|3,{48,103,48}}, +/* 1217 */ {(16<<2)|3,{48,103,49}}, +/* 1218 */ {(16<<2)|3,{48,103,50}}, +/* 1219 */ {(16<<2)|3,{48,103,97}}, +/* 1220 */ {(16<<2)|3,{48,103,99}}, +/* 1221 */ {(16<<2)|3,{48,103,101}}, +/* 1222 */ {(16<<2)|3,{48,103,105}}, +/* 1223 */ {(16<<2)|3,{48,103,111}}, +/* 1224 */ {(16<<2)|3,{48,103,115}}, +/* 1225 */ {(16<<2)|3,{48,103,116}}, +/* 1226 */ {(11<<2)|2,{48,103,0}}, +/* 1227 */ {(11<<2)|2,{48,103,0}}, +/* 1228 */ {(11<<2)|2,{48,103,0}}, +/* 1229 */ {(11<<2)|2,{48,103,0}}, +/* 1230 */ {(11<<2)|2,{48,103,0}}, +/* 1231 */ {(11<<2)|2,{48,103,0}}, +/* 1232 */ {(11<<2)|2,{48,103,0}}, +/* 1233 */ {(11<<2)|2,{48,103,0}}, +/* 1234 */ {(11<<2)|2,{48,103,0}}, +/* 1235 */ {(11<<2)|2,{48,103,0}}, +/* 1236 */ {(11<<2)|2,{48,103,0}}, +/* 1237 */ {(11<<2)|2,{48,103,0}}, +/* 1238 */ {(11<<2)|2,{48,103,0}}, +/* 1239 */ {(11<<2)|2,{48,103,0}}, +/* 1240 */ {(11<<2)|2,{48,103,0}}, +/* 1241 */ {(11<<2)|2,{48,103,0}}, +/* 1242 */ {(11<<2)|2,{48,103,0}}, +/* 1243 */ {(11<<2)|2,{48,103,0}}, +/* 1244 */ {(11<<2)|2,{48,103,0}}, +/* 1245 */ {(11<<2)|2,{48,103,0}}, +/* 1246 */ {(11<<2)|2,{48,103,0}}, +/* 1247 */ {(11<<2)|2,{48,103,0}}, +/* 1248 */ {(16<<2)|3,{48,104,48}}, +/* 1249 */ {(16<<2)|3,{48,104,49}}, +/* 1250 */ {(16<<2)|3,{48,104,50}}, +/* 1251 */ {(16<<2)|3,{48,104,97}}, +/* 1252 */ {(16<<2)|3,{48,104,99}}, +/* 1253 */ {(16<<2)|3,{48,104,101}}, +/* 1254 */ {(16<<2)|3,{48,104,105}}, +/* 1255 */ {(16<<2)|3,{48,104,111}}, +/* 1256 */ {(16<<2)|3,{48,104,115}}, +/* 1257 */ {(16<<2)|3,{48,104,116}}, +/* 1258 */ {(11<<2)|2,{48,104,0}}, +/* 1259 */ {(11<<2)|2,{48,104,0}}, +/* 1260 */ {(11<<2)|2,{48,104,0}}, +/* 1261 */ {(11<<2)|2,{48,104,0}}, +/* 1262 */ {(11<<2)|2,{48,104,0}}, +/* 1263 */ {(11<<2)|2,{48,104,0}}, +/* 1264 */ {(11<<2)|2,{48,104,0}}, +/* 1265 */ {(11<<2)|2,{48,104,0}}, +/* 1266 */ {(11<<2)|2,{48,104,0}}, +/* 1267 */ {(11<<2)|2,{48,104,0}}, +/* 1268 */ {(11<<2)|2,{48,104,0}}, +/* 1269 */ {(11<<2)|2,{48,104,0}}, +/* 1270 */ {(11<<2)|2,{48,104,0}}, +/* 1271 */ {(11<<2)|2,{48,104,0}}, +/* 1272 */ {(11<<2)|2,{48,104,0}}, +/* 1273 */ {(11<<2)|2,{48,104,0}}, +/* 1274 */ {(11<<2)|2,{48,104,0}}, +/* 1275 */ {(11<<2)|2,{48,104,0}}, +/* 1276 */ {(11<<2)|2,{48,104,0}}, +/* 1277 */ {(11<<2)|2,{48,104,0}}, +/* 1278 */ {(11<<2)|2,{48,104,0}}, +/* 1279 */ {(11<<2)|2,{48,104,0}}, +/* 1280 */ {(16<<2)|3,{48,108,48}}, +/* 1281 */ {(16<<2)|3,{48,108,49}}, +/* 1282 */ {(16<<2)|3,{48,108,50}}, +/* 1283 */ {(16<<2)|3,{48,108,97}}, +/* 1284 */ {(16<<2)|3,{48,108,99}}, +/* 1285 */ {(16<<2)|3,{48,108,101}}, +/* 1286 */ {(16<<2)|3,{48,108,105}}, +/* 1287 */ {(16<<2)|3,{48,108,111}}, +/* 1288 */ {(16<<2)|3,{48,108,115}}, +/* 1289 */ {(16<<2)|3,{48,108,116}}, +/* 1290 */ {(11<<2)|2,{48,108,0}}, +/* 1291 */ {(11<<2)|2,{48,108,0}}, +/* 1292 */ {(11<<2)|2,{48,108,0}}, +/* 1293 */ {(11<<2)|2,{48,108,0}}, +/* 1294 */ {(11<<2)|2,{48,108,0}}, +/* 1295 */ {(11<<2)|2,{48,108,0}}, +/* 1296 */ {(11<<2)|2,{48,108,0}}, +/* 1297 */ {(11<<2)|2,{48,108,0}}, +/* 1298 */ {(11<<2)|2,{48,108,0}}, +/* 1299 */ {(11<<2)|2,{48,108,0}}, +/* 1300 */ {(11<<2)|2,{48,108,0}}, +/* 1301 */ {(11<<2)|2,{48,108,0}}, +/* 1302 */ {(11<<2)|2,{48,108,0}}, +/* 1303 */ {(11<<2)|2,{48,108,0}}, +/* 1304 */ {(11<<2)|2,{48,108,0}}, +/* 1305 */ {(11<<2)|2,{48,108,0}}, +/* 1306 */ {(11<<2)|2,{48,108,0}}, +/* 1307 */ {(11<<2)|2,{48,108,0}}, +/* 1308 */ {(11<<2)|2,{48,108,0}}, +/* 1309 */ {(11<<2)|2,{48,108,0}}, +/* 1310 */ {(11<<2)|2,{48,108,0}}, +/* 1311 */ {(11<<2)|2,{48,108,0}}, +/* 1312 */ {(16<<2)|3,{48,109,48}}, +/* 1313 */ {(16<<2)|3,{48,109,49}}, +/* 1314 */ {(16<<2)|3,{48,109,50}}, +/* 1315 */ {(16<<2)|3,{48,109,97}}, +/* 1316 */ {(16<<2)|3,{48,109,99}}, +/* 1317 */ {(16<<2)|3,{48,109,101}}, +/* 1318 */ {(16<<2)|3,{48,109,105}}, +/* 1319 */ {(16<<2)|3,{48,109,111}}, +/* 1320 */ {(16<<2)|3,{48,109,115}}, +/* 1321 */ {(16<<2)|3,{48,109,116}}, +/* 1322 */ {(11<<2)|2,{48,109,0}}, +/* 1323 */ {(11<<2)|2,{48,109,0}}, +/* 1324 */ {(11<<2)|2,{48,109,0}}, +/* 1325 */ {(11<<2)|2,{48,109,0}}, +/* 1326 */ {(11<<2)|2,{48,109,0}}, +/* 1327 */ {(11<<2)|2,{48,109,0}}, +/* 1328 */ {(11<<2)|2,{48,109,0}}, +/* 1329 */ {(11<<2)|2,{48,109,0}}, +/* 1330 */ {(11<<2)|2,{48,109,0}}, +/* 1331 */ {(11<<2)|2,{48,109,0}}, +/* 1332 */ {(11<<2)|2,{48,109,0}}, +/* 1333 */ {(11<<2)|2,{48,109,0}}, +/* 1334 */ {(11<<2)|2,{48,109,0}}, +/* 1335 */ {(11<<2)|2,{48,109,0}}, +/* 1336 */ {(11<<2)|2,{48,109,0}}, +/* 1337 */ {(11<<2)|2,{48,109,0}}, +/* 1338 */ {(11<<2)|2,{48,109,0}}, +/* 1339 */ {(11<<2)|2,{48,109,0}}, +/* 1340 */ {(11<<2)|2,{48,109,0}}, +/* 1341 */ {(11<<2)|2,{48,109,0}}, +/* 1342 */ {(11<<2)|2,{48,109,0}}, +/* 1343 */ {(11<<2)|2,{48,109,0}}, +/* 1344 */ {(16<<2)|3,{48,110,48}}, +/* 1345 */ {(16<<2)|3,{48,110,49}}, +/* 1346 */ {(16<<2)|3,{48,110,50}}, +/* 1347 */ {(16<<2)|3,{48,110,97}}, +/* 1348 */ {(16<<2)|3,{48,110,99}}, +/* 1349 */ {(16<<2)|3,{48,110,101}}, +/* 1350 */ {(16<<2)|3,{48,110,105}}, +/* 1351 */ {(16<<2)|3,{48,110,111}}, +/* 1352 */ {(16<<2)|3,{48,110,115}}, +/* 1353 */ {(16<<2)|3,{48,110,116}}, +/* 1354 */ {(11<<2)|2,{48,110,0}}, +/* 1355 */ {(11<<2)|2,{48,110,0}}, +/* 1356 */ {(11<<2)|2,{48,110,0}}, +/* 1357 */ {(11<<2)|2,{48,110,0}}, +/* 1358 */ {(11<<2)|2,{48,110,0}}, +/* 1359 */ {(11<<2)|2,{48,110,0}}, +/* 1360 */ {(11<<2)|2,{48,110,0}}, +/* 1361 */ {(11<<2)|2,{48,110,0}}, +/* 1362 */ {(11<<2)|2,{48,110,0}}, +/* 1363 */ {(11<<2)|2,{48,110,0}}, +/* 1364 */ {(11<<2)|2,{48,110,0}}, +/* 1365 */ {(11<<2)|2,{48,110,0}}, +/* 1366 */ {(11<<2)|2,{48,110,0}}, +/* 1367 */ {(11<<2)|2,{48,110,0}}, +/* 1368 */ {(11<<2)|2,{48,110,0}}, +/* 1369 */ {(11<<2)|2,{48,110,0}}, +/* 1370 */ {(11<<2)|2,{48,110,0}}, +/* 1371 */ {(11<<2)|2,{48,110,0}}, +/* 1372 */ {(11<<2)|2,{48,110,0}}, +/* 1373 */ {(11<<2)|2,{48,110,0}}, +/* 1374 */ {(11<<2)|2,{48,110,0}}, +/* 1375 */ {(11<<2)|2,{48,110,0}}, +/* 1376 */ {(16<<2)|3,{48,112,48}}, +/* 1377 */ {(16<<2)|3,{48,112,49}}, +/* 1378 */ {(16<<2)|3,{48,112,50}}, +/* 1379 */ {(16<<2)|3,{48,112,97}}, +/* 1380 */ {(16<<2)|3,{48,112,99}}, +/* 1381 */ {(16<<2)|3,{48,112,101}}, +/* 1382 */ {(16<<2)|3,{48,112,105}}, +/* 1383 */ {(16<<2)|3,{48,112,111}}, +/* 1384 */ {(16<<2)|3,{48,112,115}}, +/* 1385 */ {(16<<2)|3,{48,112,116}}, +/* 1386 */ {(11<<2)|2,{48,112,0}}, +/* 1387 */ {(11<<2)|2,{48,112,0}}, +/* 1388 */ {(11<<2)|2,{48,112,0}}, +/* 1389 */ {(11<<2)|2,{48,112,0}}, +/* 1390 */ {(11<<2)|2,{48,112,0}}, +/* 1391 */ {(11<<2)|2,{48,112,0}}, +/* 1392 */ {(11<<2)|2,{48,112,0}}, +/* 1393 */ {(11<<2)|2,{48,112,0}}, +/* 1394 */ {(11<<2)|2,{48,112,0}}, +/* 1395 */ {(11<<2)|2,{48,112,0}}, +/* 1396 */ {(11<<2)|2,{48,112,0}}, +/* 1397 */ {(11<<2)|2,{48,112,0}}, +/* 1398 */ {(11<<2)|2,{48,112,0}}, +/* 1399 */ {(11<<2)|2,{48,112,0}}, +/* 1400 */ {(11<<2)|2,{48,112,0}}, +/* 1401 */ {(11<<2)|2,{48,112,0}}, +/* 1402 */ {(11<<2)|2,{48,112,0}}, +/* 1403 */ {(11<<2)|2,{48,112,0}}, +/* 1404 */ {(11<<2)|2,{48,112,0}}, +/* 1405 */ {(11<<2)|2,{48,112,0}}, +/* 1406 */ {(11<<2)|2,{48,112,0}}, +/* 1407 */ {(11<<2)|2,{48,112,0}}, +/* 1408 */ {(16<<2)|3,{48,114,48}}, +/* 1409 */ {(16<<2)|3,{48,114,49}}, +/* 1410 */ {(16<<2)|3,{48,114,50}}, +/* 1411 */ {(16<<2)|3,{48,114,97}}, +/* 1412 */ {(16<<2)|3,{48,114,99}}, +/* 1413 */ {(16<<2)|3,{48,114,101}}, +/* 1414 */ {(16<<2)|3,{48,114,105}}, +/* 1415 */ {(16<<2)|3,{48,114,111}}, +/* 1416 */ {(16<<2)|3,{48,114,115}}, +/* 1417 */ {(16<<2)|3,{48,114,116}}, +/* 1418 */ {(11<<2)|2,{48,114,0}}, +/* 1419 */ {(11<<2)|2,{48,114,0}}, +/* 1420 */ {(11<<2)|2,{48,114,0}}, +/* 1421 */ {(11<<2)|2,{48,114,0}}, +/* 1422 */ {(11<<2)|2,{48,114,0}}, +/* 1423 */ {(11<<2)|2,{48,114,0}}, +/* 1424 */ {(11<<2)|2,{48,114,0}}, +/* 1425 */ {(11<<2)|2,{48,114,0}}, +/* 1426 */ {(11<<2)|2,{48,114,0}}, +/* 1427 */ {(11<<2)|2,{48,114,0}}, +/* 1428 */ {(11<<2)|2,{48,114,0}}, +/* 1429 */ {(11<<2)|2,{48,114,0}}, +/* 1430 */ {(11<<2)|2,{48,114,0}}, +/* 1431 */ {(11<<2)|2,{48,114,0}}, +/* 1432 */ {(11<<2)|2,{48,114,0}}, +/* 1433 */ {(11<<2)|2,{48,114,0}}, +/* 1434 */ {(11<<2)|2,{48,114,0}}, +/* 1435 */ {(11<<2)|2,{48,114,0}}, +/* 1436 */ {(11<<2)|2,{48,114,0}}, +/* 1437 */ {(11<<2)|2,{48,114,0}}, +/* 1438 */ {(11<<2)|2,{48,114,0}}, +/* 1439 */ {(11<<2)|2,{48,114,0}}, +/* 1440 */ {(16<<2)|3,{48,117,48}}, +/* 1441 */ {(16<<2)|3,{48,117,49}}, +/* 1442 */ {(16<<2)|3,{48,117,50}}, +/* 1443 */ {(16<<2)|3,{48,117,97}}, +/* 1444 */ {(16<<2)|3,{48,117,99}}, +/* 1445 */ {(16<<2)|3,{48,117,101}}, +/* 1446 */ {(16<<2)|3,{48,117,105}}, +/* 1447 */ {(16<<2)|3,{48,117,111}}, +/* 1448 */ {(16<<2)|3,{48,117,115}}, +/* 1449 */ {(16<<2)|3,{48,117,116}}, +/* 1450 */ {(11<<2)|2,{48,117,0}}, +/* 1451 */ {(11<<2)|2,{48,117,0}}, +/* 1452 */ {(11<<2)|2,{48,117,0}}, +/* 1453 */ {(11<<2)|2,{48,117,0}}, +/* 1454 */ {(11<<2)|2,{48,117,0}}, +/* 1455 */ {(11<<2)|2,{48,117,0}}, +/* 1456 */ {(11<<2)|2,{48,117,0}}, +/* 1457 */ {(11<<2)|2,{48,117,0}}, +/* 1458 */ {(11<<2)|2,{48,117,0}}, +/* 1459 */ {(11<<2)|2,{48,117,0}}, +/* 1460 */ {(11<<2)|2,{48,117,0}}, +/* 1461 */ {(11<<2)|2,{48,117,0}}, +/* 1462 */ {(11<<2)|2,{48,117,0}}, +/* 1463 */ {(11<<2)|2,{48,117,0}}, +/* 1464 */ {(11<<2)|2,{48,117,0}}, +/* 1465 */ {(11<<2)|2,{48,117,0}}, +/* 1466 */ {(11<<2)|2,{48,117,0}}, +/* 1467 */ {(11<<2)|2,{48,117,0}}, +/* 1468 */ {(11<<2)|2,{48,117,0}}, +/* 1469 */ {(11<<2)|2,{48,117,0}}, +/* 1470 */ {(11<<2)|2,{48,117,0}}, +/* 1471 */ {(11<<2)|2,{48,117,0}}, +/* 1472 */ {(12<<2)|2,{48,58,0}}, +/* 1473 */ {(12<<2)|2,{48,58,0}}, +/* 1474 */ {(12<<2)|2,{48,58,0}}, +/* 1475 */ {(12<<2)|2,{48,58,0}}, +/* 1476 */ {(12<<2)|2,{48,58,0}}, +/* 1477 */ {(12<<2)|2,{48,58,0}}, +/* 1478 */ {(12<<2)|2,{48,58,0}}, +/* 1479 */ {(12<<2)|2,{48,58,0}}, +/* 1480 */ {(12<<2)|2,{48,58,0}}, +/* 1481 */ {(12<<2)|2,{48,58,0}}, +/* 1482 */ {(12<<2)|2,{48,58,0}}, +/* 1483 */ {(12<<2)|2,{48,58,0}}, +/* 1484 */ {(12<<2)|2,{48,58,0}}, +/* 1485 */ {(12<<2)|2,{48,58,0}}, +/* 1486 */ {(12<<2)|2,{48,58,0}}, +/* 1487 */ {(12<<2)|2,{48,58,0}}, +/* 1488 */ {(12<<2)|2,{48,66,0}}, +/* 1489 */ {(12<<2)|2,{48,66,0}}, +/* 1490 */ {(12<<2)|2,{48,66,0}}, +/* 1491 */ {(12<<2)|2,{48,66,0}}, +/* 1492 */ {(12<<2)|2,{48,66,0}}, +/* 1493 */ {(12<<2)|2,{48,66,0}}, +/* 1494 */ {(12<<2)|2,{48,66,0}}, +/* 1495 */ {(12<<2)|2,{48,66,0}}, +/* 1496 */ {(12<<2)|2,{48,66,0}}, +/* 1497 */ {(12<<2)|2,{48,66,0}}, +/* 1498 */ {(12<<2)|2,{48,66,0}}, +/* 1499 */ {(12<<2)|2,{48,66,0}}, +/* 1500 */ {(12<<2)|2,{48,66,0}}, +/* 1501 */ {(12<<2)|2,{48,66,0}}, +/* 1502 */ {(12<<2)|2,{48,66,0}}, +/* 1503 */ {(12<<2)|2,{48,66,0}}, +/* 1504 */ {(12<<2)|2,{48,67,0}}, +/* 1505 */ {(12<<2)|2,{48,67,0}}, +/* 1506 */ {(12<<2)|2,{48,67,0}}, +/* 1507 */ {(12<<2)|2,{48,67,0}}, +/* 1508 */ {(12<<2)|2,{48,67,0}}, +/* 1509 */ {(12<<2)|2,{48,67,0}}, +/* 1510 */ {(12<<2)|2,{48,67,0}}, +/* 1511 */ {(12<<2)|2,{48,67,0}}, +/* 1512 */ {(12<<2)|2,{48,67,0}}, +/* 1513 */ {(12<<2)|2,{48,67,0}}, +/* 1514 */ {(12<<2)|2,{48,67,0}}, +/* 1515 */ {(12<<2)|2,{48,67,0}}, +/* 1516 */ {(12<<2)|2,{48,67,0}}, +/* 1517 */ {(12<<2)|2,{48,67,0}}, +/* 1518 */ {(12<<2)|2,{48,67,0}}, +/* 1519 */ {(12<<2)|2,{48,67,0}}, +/* 1520 */ {(12<<2)|2,{48,68,0}}, +/* 1521 */ {(12<<2)|2,{48,68,0}}, +/* 1522 */ {(12<<2)|2,{48,68,0}}, +/* 1523 */ {(12<<2)|2,{48,68,0}}, +/* 1524 */ {(12<<2)|2,{48,68,0}}, +/* 1525 */ {(12<<2)|2,{48,68,0}}, +/* 1526 */ {(12<<2)|2,{48,68,0}}, +/* 1527 */ {(12<<2)|2,{48,68,0}}, +/* 1528 */ {(12<<2)|2,{48,68,0}}, +/* 1529 */ {(12<<2)|2,{48,68,0}}, +/* 1530 */ {(12<<2)|2,{48,68,0}}, +/* 1531 */ {(12<<2)|2,{48,68,0}}, +/* 1532 */ {(12<<2)|2,{48,68,0}}, +/* 1533 */ {(12<<2)|2,{48,68,0}}, +/* 1534 */ {(12<<2)|2,{48,68,0}}, +/* 1535 */ {(12<<2)|2,{48,68,0}}, +/* 1536 */ {(12<<2)|2,{48,69,0}}, +/* 1537 */ {(12<<2)|2,{48,69,0}}, +/* 1538 */ {(12<<2)|2,{48,69,0}}, +/* 1539 */ {(12<<2)|2,{48,69,0}}, +/* 1540 */ {(12<<2)|2,{48,69,0}}, +/* 1541 */ {(12<<2)|2,{48,69,0}}, +/* 1542 */ {(12<<2)|2,{48,69,0}}, +/* 1543 */ {(12<<2)|2,{48,69,0}}, +/* 1544 */ {(12<<2)|2,{48,69,0}}, +/* 1545 */ {(12<<2)|2,{48,69,0}}, +/* 1546 */ {(12<<2)|2,{48,69,0}}, +/* 1547 */ {(12<<2)|2,{48,69,0}}, +/* 1548 */ {(12<<2)|2,{48,69,0}}, +/* 1549 */ {(12<<2)|2,{48,69,0}}, +/* 1550 */ {(12<<2)|2,{48,69,0}}, +/* 1551 */ {(12<<2)|2,{48,69,0}}, +/* 1552 */ {(12<<2)|2,{48,70,0}}, +/* 1553 */ {(12<<2)|2,{48,70,0}}, +/* 1554 */ {(12<<2)|2,{48,70,0}}, +/* 1555 */ {(12<<2)|2,{48,70,0}}, +/* 1556 */ {(12<<2)|2,{48,70,0}}, +/* 1557 */ {(12<<2)|2,{48,70,0}}, +/* 1558 */ {(12<<2)|2,{48,70,0}}, +/* 1559 */ {(12<<2)|2,{48,70,0}}, +/* 1560 */ {(12<<2)|2,{48,70,0}}, +/* 1561 */ {(12<<2)|2,{48,70,0}}, +/* 1562 */ {(12<<2)|2,{48,70,0}}, +/* 1563 */ {(12<<2)|2,{48,70,0}}, +/* 1564 */ {(12<<2)|2,{48,70,0}}, +/* 1565 */ {(12<<2)|2,{48,70,0}}, +/* 1566 */ {(12<<2)|2,{48,70,0}}, +/* 1567 */ {(12<<2)|2,{48,70,0}}, +/* 1568 */ {(12<<2)|2,{48,71,0}}, +/* 1569 */ {(12<<2)|2,{48,71,0}}, +/* 1570 */ {(12<<2)|2,{48,71,0}}, +/* 1571 */ {(12<<2)|2,{48,71,0}}, +/* 1572 */ {(12<<2)|2,{48,71,0}}, +/* 1573 */ {(12<<2)|2,{48,71,0}}, +/* 1574 */ {(12<<2)|2,{48,71,0}}, +/* 1575 */ {(12<<2)|2,{48,71,0}}, +/* 1576 */ {(12<<2)|2,{48,71,0}}, +/* 1577 */ {(12<<2)|2,{48,71,0}}, +/* 1578 */ {(12<<2)|2,{48,71,0}}, +/* 1579 */ {(12<<2)|2,{48,71,0}}, +/* 1580 */ {(12<<2)|2,{48,71,0}}, +/* 1581 */ {(12<<2)|2,{48,71,0}}, +/* 1582 */ {(12<<2)|2,{48,71,0}}, +/* 1583 */ {(12<<2)|2,{48,71,0}}, +/* 1584 */ {(12<<2)|2,{48,72,0}}, +/* 1585 */ {(12<<2)|2,{48,72,0}}, +/* 1586 */ {(12<<2)|2,{48,72,0}}, +/* 1587 */ {(12<<2)|2,{48,72,0}}, +/* 1588 */ {(12<<2)|2,{48,72,0}}, +/* 1589 */ {(12<<2)|2,{48,72,0}}, +/* 1590 */ {(12<<2)|2,{48,72,0}}, +/* 1591 */ {(12<<2)|2,{48,72,0}}, +/* 1592 */ {(12<<2)|2,{48,72,0}}, +/* 1593 */ {(12<<2)|2,{48,72,0}}, +/* 1594 */ {(12<<2)|2,{48,72,0}}, +/* 1595 */ {(12<<2)|2,{48,72,0}}, +/* 1596 */ {(12<<2)|2,{48,72,0}}, +/* 1597 */ {(12<<2)|2,{48,72,0}}, +/* 1598 */ {(12<<2)|2,{48,72,0}}, +/* 1599 */ {(12<<2)|2,{48,72,0}}, +/* 1600 */ {(12<<2)|2,{48,73,0}}, +/* 1601 */ {(12<<2)|2,{48,73,0}}, +/* 1602 */ {(12<<2)|2,{48,73,0}}, +/* 1603 */ {(12<<2)|2,{48,73,0}}, +/* 1604 */ {(12<<2)|2,{48,73,0}}, +/* 1605 */ {(12<<2)|2,{48,73,0}}, +/* 1606 */ {(12<<2)|2,{48,73,0}}, +/* 1607 */ {(12<<2)|2,{48,73,0}}, +/* 1608 */ {(12<<2)|2,{48,73,0}}, +/* 1609 */ {(12<<2)|2,{48,73,0}}, +/* 1610 */ {(12<<2)|2,{48,73,0}}, +/* 1611 */ {(12<<2)|2,{48,73,0}}, +/* 1612 */ {(12<<2)|2,{48,73,0}}, +/* 1613 */ {(12<<2)|2,{48,73,0}}, +/* 1614 */ {(12<<2)|2,{48,73,0}}, +/* 1615 */ {(12<<2)|2,{48,73,0}}, +/* 1616 */ {(12<<2)|2,{48,74,0}}, +/* 1617 */ {(12<<2)|2,{48,74,0}}, +/* 1618 */ {(12<<2)|2,{48,74,0}}, +/* 1619 */ {(12<<2)|2,{48,74,0}}, +/* 1620 */ {(12<<2)|2,{48,74,0}}, +/* 1621 */ {(12<<2)|2,{48,74,0}}, +/* 1622 */ {(12<<2)|2,{48,74,0}}, +/* 1623 */ {(12<<2)|2,{48,74,0}}, +/* 1624 */ {(12<<2)|2,{48,74,0}}, +/* 1625 */ {(12<<2)|2,{48,74,0}}, +/* 1626 */ {(12<<2)|2,{48,74,0}}, +/* 1627 */ {(12<<2)|2,{48,74,0}}, +/* 1628 */ {(12<<2)|2,{48,74,0}}, +/* 1629 */ {(12<<2)|2,{48,74,0}}, +/* 1630 */ {(12<<2)|2,{48,74,0}}, +/* 1631 */ {(12<<2)|2,{48,74,0}}, +/* 1632 */ {(12<<2)|2,{48,75,0}}, +/* 1633 */ {(12<<2)|2,{48,75,0}}, +/* 1634 */ {(12<<2)|2,{48,75,0}}, +/* 1635 */ {(12<<2)|2,{48,75,0}}, +/* 1636 */ {(12<<2)|2,{48,75,0}}, +/* 1637 */ {(12<<2)|2,{48,75,0}}, +/* 1638 */ {(12<<2)|2,{48,75,0}}, +/* 1639 */ {(12<<2)|2,{48,75,0}}, +/* 1640 */ {(12<<2)|2,{48,75,0}}, +/* 1641 */ {(12<<2)|2,{48,75,0}}, +/* 1642 */ {(12<<2)|2,{48,75,0}}, +/* 1643 */ {(12<<2)|2,{48,75,0}}, +/* 1644 */ {(12<<2)|2,{48,75,0}}, +/* 1645 */ {(12<<2)|2,{48,75,0}}, +/* 1646 */ {(12<<2)|2,{48,75,0}}, +/* 1647 */ {(12<<2)|2,{48,75,0}}, +/* 1648 */ {(12<<2)|2,{48,76,0}}, +/* 1649 */ {(12<<2)|2,{48,76,0}}, +/* 1650 */ {(12<<2)|2,{48,76,0}}, +/* 1651 */ {(12<<2)|2,{48,76,0}}, +/* 1652 */ {(12<<2)|2,{48,76,0}}, +/* 1653 */ {(12<<2)|2,{48,76,0}}, +/* 1654 */ {(12<<2)|2,{48,76,0}}, +/* 1655 */ {(12<<2)|2,{48,76,0}}, +/* 1656 */ {(12<<2)|2,{48,76,0}}, +/* 1657 */ {(12<<2)|2,{48,76,0}}, +/* 1658 */ {(12<<2)|2,{48,76,0}}, +/* 1659 */ {(12<<2)|2,{48,76,0}}, +/* 1660 */ {(12<<2)|2,{48,76,0}}, +/* 1661 */ {(12<<2)|2,{48,76,0}}, +/* 1662 */ {(12<<2)|2,{48,76,0}}, +/* 1663 */ {(12<<2)|2,{48,76,0}}, +/* 1664 */ {(12<<2)|2,{48,77,0}}, +/* 1665 */ {(12<<2)|2,{48,77,0}}, +/* 1666 */ {(12<<2)|2,{48,77,0}}, +/* 1667 */ {(12<<2)|2,{48,77,0}}, +/* 1668 */ {(12<<2)|2,{48,77,0}}, +/* 1669 */ {(12<<2)|2,{48,77,0}}, +/* 1670 */ {(12<<2)|2,{48,77,0}}, +/* 1671 */ {(12<<2)|2,{48,77,0}}, +/* 1672 */ {(12<<2)|2,{48,77,0}}, +/* 1673 */ {(12<<2)|2,{48,77,0}}, +/* 1674 */ {(12<<2)|2,{48,77,0}}, +/* 1675 */ {(12<<2)|2,{48,77,0}}, +/* 1676 */ {(12<<2)|2,{48,77,0}}, +/* 1677 */ {(12<<2)|2,{48,77,0}}, +/* 1678 */ {(12<<2)|2,{48,77,0}}, +/* 1679 */ {(12<<2)|2,{48,77,0}}, +/* 1680 */ {(12<<2)|2,{48,78,0}}, +/* 1681 */ {(12<<2)|2,{48,78,0}}, +/* 1682 */ {(12<<2)|2,{48,78,0}}, +/* 1683 */ {(12<<2)|2,{48,78,0}}, +/* 1684 */ {(12<<2)|2,{48,78,0}}, +/* 1685 */ {(12<<2)|2,{48,78,0}}, +/* 1686 */ {(12<<2)|2,{48,78,0}}, +/* 1687 */ {(12<<2)|2,{48,78,0}}, +/* 1688 */ {(12<<2)|2,{48,78,0}}, +/* 1689 */ {(12<<2)|2,{48,78,0}}, +/* 1690 */ {(12<<2)|2,{48,78,0}}, +/* 1691 */ {(12<<2)|2,{48,78,0}}, +/* 1692 */ {(12<<2)|2,{48,78,0}}, +/* 1693 */ {(12<<2)|2,{48,78,0}}, +/* 1694 */ {(12<<2)|2,{48,78,0}}, +/* 1695 */ {(12<<2)|2,{48,78,0}}, +/* 1696 */ {(12<<2)|2,{48,79,0}}, +/* 1697 */ {(12<<2)|2,{48,79,0}}, +/* 1698 */ {(12<<2)|2,{48,79,0}}, +/* 1699 */ {(12<<2)|2,{48,79,0}}, +/* 1700 */ {(12<<2)|2,{48,79,0}}, +/* 1701 */ {(12<<2)|2,{48,79,0}}, +/* 1702 */ {(12<<2)|2,{48,79,0}}, +/* 1703 */ {(12<<2)|2,{48,79,0}}, +/* 1704 */ {(12<<2)|2,{48,79,0}}, +/* 1705 */ {(12<<2)|2,{48,79,0}}, +/* 1706 */ {(12<<2)|2,{48,79,0}}, +/* 1707 */ {(12<<2)|2,{48,79,0}}, +/* 1708 */ {(12<<2)|2,{48,79,0}}, +/* 1709 */ {(12<<2)|2,{48,79,0}}, +/* 1710 */ {(12<<2)|2,{48,79,0}}, +/* 1711 */ {(12<<2)|2,{48,79,0}}, +/* 1712 */ {(12<<2)|2,{48,80,0}}, +/* 1713 */ {(12<<2)|2,{48,80,0}}, +/* 1714 */ {(12<<2)|2,{48,80,0}}, +/* 1715 */ {(12<<2)|2,{48,80,0}}, +/* 1716 */ {(12<<2)|2,{48,80,0}}, +/* 1717 */ {(12<<2)|2,{48,80,0}}, +/* 1718 */ {(12<<2)|2,{48,80,0}}, +/* 1719 */ {(12<<2)|2,{48,80,0}}, +/* 1720 */ {(12<<2)|2,{48,80,0}}, +/* 1721 */ {(12<<2)|2,{48,80,0}}, +/* 1722 */ {(12<<2)|2,{48,80,0}}, +/* 1723 */ {(12<<2)|2,{48,80,0}}, +/* 1724 */ {(12<<2)|2,{48,80,0}}, +/* 1725 */ {(12<<2)|2,{48,80,0}}, +/* 1726 */ {(12<<2)|2,{48,80,0}}, +/* 1727 */ {(12<<2)|2,{48,80,0}}, +/* 1728 */ {(12<<2)|2,{48,81,0}}, +/* 1729 */ {(12<<2)|2,{48,81,0}}, +/* 1730 */ {(12<<2)|2,{48,81,0}}, +/* 1731 */ {(12<<2)|2,{48,81,0}}, +/* 1732 */ {(12<<2)|2,{48,81,0}}, +/* 1733 */ {(12<<2)|2,{48,81,0}}, +/* 1734 */ {(12<<2)|2,{48,81,0}}, +/* 1735 */ {(12<<2)|2,{48,81,0}}, +/* 1736 */ {(12<<2)|2,{48,81,0}}, +/* 1737 */ {(12<<2)|2,{48,81,0}}, +/* 1738 */ {(12<<2)|2,{48,81,0}}, +/* 1739 */ {(12<<2)|2,{48,81,0}}, +/* 1740 */ {(12<<2)|2,{48,81,0}}, +/* 1741 */ {(12<<2)|2,{48,81,0}}, +/* 1742 */ {(12<<2)|2,{48,81,0}}, +/* 1743 */ {(12<<2)|2,{48,81,0}}, +/* 1744 */ {(12<<2)|2,{48,82,0}}, +/* 1745 */ {(12<<2)|2,{48,82,0}}, +/* 1746 */ {(12<<2)|2,{48,82,0}}, +/* 1747 */ {(12<<2)|2,{48,82,0}}, +/* 1748 */ {(12<<2)|2,{48,82,0}}, +/* 1749 */ {(12<<2)|2,{48,82,0}}, +/* 1750 */ {(12<<2)|2,{48,82,0}}, +/* 1751 */ {(12<<2)|2,{48,82,0}}, +/* 1752 */ {(12<<2)|2,{48,82,0}}, +/* 1753 */ {(12<<2)|2,{48,82,0}}, +/* 1754 */ {(12<<2)|2,{48,82,0}}, +/* 1755 */ {(12<<2)|2,{48,82,0}}, +/* 1756 */ {(12<<2)|2,{48,82,0}}, +/* 1757 */ {(12<<2)|2,{48,82,0}}, +/* 1758 */ {(12<<2)|2,{48,82,0}}, +/* 1759 */ {(12<<2)|2,{48,82,0}}, +/* 1760 */ {(12<<2)|2,{48,83,0}}, +/* 1761 */ {(12<<2)|2,{48,83,0}}, +/* 1762 */ {(12<<2)|2,{48,83,0}}, +/* 1763 */ {(12<<2)|2,{48,83,0}}, +/* 1764 */ {(12<<2)|2,{48,83,0}}, +/* 1765 */ {(12<<2)|2,{48,83,0}}, +/* 1766 */ {(12<<2)|2,{48,83,0}}, +/* 1767 */ {(12<<2)|2,{48,83,0}}, +/* 1768 */ {(12<<2)|2,{48,83,0}}, +/* 1769 */ {(12<<2)|2,{48,83,0}}, +/* 1770 */ {(12<<2)|2,{48,83,0}}, +/* 1771 */ {(12<<2)|2,{48,83,0}}, +/* 1772 */ {(12<<2)|2,{48,83,0}}, +/* 1773 */ {(12<<2)|2,{48,83,0}}, +/* 1774 */ {(12<<2)|2,{48,83,0}}, +/* 1775 */ {(12<<2)|2,{48,83,0}}, +/* 1776 */ {(12<<2)|2,{48,84,0}}, +/* 1777 */ {(12<<2)|2,{48,84,0}}, +/* 1778 */ {(12<<2)|2,{48,84,0}}, +/* 1779 */ {(12<<2)|2,{48,84,0}}, +/* 1780 */ {(12<<2)|2,{48,84,0}}, +/* 1781 */ {(12<<2)|2,{48,84,0}}, +/* 1782 */ {(12<<2)|2,{48,84,0}}, +/* 1783 */ {(12<<2)|2,{48,84,0}}, +/* 1784 */ {(12<<2)|2,{48,84,0}}, +/* 1785 */ {(12<<2)|2,{48,84,0}}, +/* 1786 */ {(12<<2)|2,{48,84,0}}, +/* 1787 */ {(12<<2)|2,{48,84,0}}, +/* 1788 */ {(12<<2)|2,{48,84,0}}, +/* 1789 */ {(12<<2)|2,{48,84,0}}, +/* 1790 */ {(12<<2)|2,{48,84,0}}, +/* 1791 */ {(12<<2)|2,{48,84,0}}, +/* 1792 */ {(12<<2)|2,{48,85,0}}, +/* 1793 */ {(12<<2)|2,{48,85,0}}, +/* 1794 */ {(12<<2)|2,{48,85,0}}, +/* 1795 */ {(12<<2)|2,{48,85,0}}, +/* 1796 */ {(12<<2)|2,{48,85,0}}, +/* 1797 */ {(12<<2)|2,{48,85,0}}, +/* 1798 */ {(12<<2)|2,{48,85,0}}, +/* 1799 */ {(12<<2)|2,{48,85,0}}, +/* 1800 */ {(12<<2)|2,{48,85,0}}, +/* 1801 */ {(12<<2)|2,{48,85,0}}, +/* 1802 */ {(12<<2)|2,{48,85,0}}, +/* 1803 */ {(12<<2)|2,{48,85,0}}, +/* 1804 */ {(12<<2)|2,{48,85,0}}, +/* 1805 */ {(12<<2)|2,{48,85,0}}, +/* 1806 */ {(12<<2)|2,{48,85,0}}, +/* 1807 */ {(12<<2)|2,{48,85,0}}, +/* 1808 */ {(12<<2)|2,{48,86,0}}, +/* 1809 */ {(12<<2)|2,{48,86,0}}, +/* 1810 */ {(12<<2)|2,{48,86,0}}, +/* 1811 */ {(12<<2)|2,{48,86,0}}, +/* 1812 */ {(12<<2)|2,{48,86,0}}, +/* 1813 */ {(12<<2)|2,{48,86,0}}, +/* 1814 */ {(12<<2)|2,{48,86,0}}, +/* 1815 */ {(12<<2)|2,{48,86,0}}, +/* 1816 */ {(12<<2)|2,{48,86,0}}, +/* 1817 */ {(12<<2)|2,{48,86,0}}, +/* 1818 */ {(12<<2)|2,{48,86,0}}, +/* 1819 */ {(12<<2)|2,{48,86,0}}, +/* 1820 */ {(12<<2)|2,{48,86,0}}, +/* 1821 */ {(12<<2)|2,{48,86,0}}, +/* 1822 */ {(12<<2)|2,{48,86,0}}, +/* 1823 */ {(12<<2)|2,{48,86,0}}, +/* 1824 */ {(12<<2)|2,{48,87,0}}, +/* 1825 */ {(12<<2)|2,{48,87,0}}, +/* 1826 */ {(12<<2)|2,{48,87,0}}, +/* 1827 */ {(12<<2)|2,{48,87,0}}, +/* 1828 */ {(12<<2)|2,{48,87,0}}, +/* 1829 */ {(12<<2)|2,{48,87,0}}, +/* 1830 */ {(12<<2)|2,{48,87,0}}, +/* 1831 */ {(12<<2)|2,{48,87,0}}, +/* 1832 */ {(12<<2)|2,{48,87,0}}, +/* 1833 */ {(12<<2)|2,{48,87,0}}, +/* 1834 */ {(12<<2)|2,{48,87,0}}, +/* 1835 */ {(12<<2)|2,{48,87,0}}, +/* 1836 */ {(12<<2)|2,{48,87,0}}, +/* 1837 */ {(12<<2)|2,{48,87,0}}, +/* 1838 */ {(12<<2)|2,{48,87,0}}, +/* 1839 */ {(12<<2)|2,{48,87,0}}, +/* 1840 */ {(12<<2)|2,{48,89,0}}, +/* 1841 */ {(12<<2)|2,{48,89,0}}, +/* 1842 */ {(12<<2)|2,{48,89,0}}, +/* 1843 */ {(12<<2)|2,{48,89,0}}, +/* 1844 */ {(12<<2)|2,{48,89,0}}, +/* 1845 */ {(12<<2)|2,{48,89,0}}, +/* 1846 */ {(12<<2)|2,{48,89,0}}, +/* 1847 */ {(12<<2)|2,{48,89,0}}, +/* 1848 */ {(12<<2)|2,{48,89,0}}, +/* 1849 */ {(12<<2)|2,{48,89,0}}, +/* 1850 */ {(12<<2)|2,{48,89,0}}, +/* 1851 */ {(12<<2)|2,{48,89,0}}, +/* 1852 */ {(12<<2)|2,{48,89,0}}, +/* 1853 */ {(12<<2)|2,{48,89,0}}, +/* 1854 */ {(12<<2)|2,{48,89,0}}, +/* 1855 */ {(12<<2)|2,{48,89,0}}, +/* 1856 */ {(12<<2)|2,{48,106,0}}, +/* 1857 */ {(12<<2)|2,{48,106,0}}, +/* 1858 */ {(12<<2)|2,{48,106,0}}, +/* 1859 */ {(12<<2)|2,{48,106,0}}, +/* 1860 */ {(12<<2)|2,{48,106,0}}, +/* 1861 */ {(12<<2)|2,{48,106,0}}, +/* 1862 */ {(12<<2)|2,{48,106,0}}, +/* 1863 */ {(12<<2)|2,{48,106,0}}, +/* 1864 */ {(12<<2)|2,{48,106,0}}, +/* 1865 */ {(12<<2)|2,{48,106,0}}, +/* 1866 */ {(12<<2)|2,{48,106,0}}, +/* 1867 */ {(12<<2)|2,{48,106,0}}, +/* 1868 */ {(12<<2)|2,{48,106,0}}, +/* 1869 */ {(12<<2)|2,{48,106,0}}, +/* 1870 */ {(12<<2)|2,{48,106,0}}, +/* 1871 */ {(12<<2)|2,{48,106,0}}, +/* 1872 */ {(12<<2)|2,{48,107,0}}, +/* 1873 */ {(12<<2)|2,{48,107,0}}, +/* 1874 */ {(12<<2)|2,{48,107,0}}, +/* 1875 */ {(12<<2)|2,{48,107,0}}, +/* 1876 */ {(12<<2)|2,{48,107,0}}, +/* 1877 */ {(12<<2)|2,{48,107,0}}, +/* 1878 */ {(12<<2)|2,{48,107,0}}, +/* 1879 */ {(12<<2)|2,{48,107,0}}, +/* 1880 */ {(12<<2)|2,{48,107,0}}, +/* 1881 */ {(12<<2)|2,{48,107,0}}, +/* 1882 */ {(12<<2)|2,{48,107,0}}, +/* 1883 */ {(12<<2)|2,{48,107,0}}, +/* 1884 */ {(12<<2)|2,{48,107,0}}, +/* 1885 */ {(12<<2)|2,{48,107,0}}, +/* 1886 */ {(12<<2)|2,{48,107,0}}, +/* 1887 */ {(12<<2)|2,{48,107,0}}, +/* 1888 */ {(12<<2)|2,{48,113,0}}, +/* 1889 */ {(12<<2)|2,{48,113,0}}, +/* 1890 */ {(12<<2)|2,{48,113,0}}, +/* 1891 */ {(12<<2)|2,{48,113,0}}, +/* 1892 */ {(12<<2)|2,{48,113,0}}, +/* 1893 */ {(12<<2)|2,{48,113,0}}, +/* 1894 */ {(12<<2)|2,{48,113,0}}, +/* 1895 */ {(12<<2)|2,{48,113,0}}, +/* 1896 */ {(12<<2)|2,{48,113,0}}, +/* 1897 */ {(12<<2)|2,{48,113,0}}, +/* 1898 */ {(12<<2)|2,{48,113,0}}, +/* 1899 */ {(12<<2)|2,{48,113,0}}, +/* 1900 */ {(12<<2)|2,{48,113,0}}, +/* 1901 */ {(12<<2)|2,{48,113,0}}, +/* 1902 */ {(12<<2)|2,{48,113,0}}, +/* 1903 */ {(12<<2)|2,{48,113,0}}, +/* 1904 */ {(12<<2)|2,{48,118,0}}, +/* 1905 */ {(12<<2)|2,{48,118,0}}, +/* 1906 */ {(12<<2)|2,{48,118,0}}, +/* 1907 */ {(12<<2)|2,{48,118,0}}, +/* 1908 */ {(12<<2)|2,{48,118,0}}, +/* 1909 */ {(12<<2)|2,{48,118,0}}, +/* 1910 */ {(12<<2)|2,{48,118,0}}, +/* 1911 */ {(12<<2)|2,{48,118,0}}, +/* 1912 */ {(12<<2)|2,{48,118,0}}, +/* 1913 */ {(12<<2)|2,{48,118,0}}, +/* 1914 */ {(12<<2)|2,{48,118,0}}, +/* 1915 */ {(12<<2)|2,{48,118,0}}, +/* 1916 */ {(12<<2)|2,{48,118,0}}, +/* 1917 */ {(12<<2)|2,{48,118,0}}, +/* 1918 */ {(12<<2)|2,{48,118,0}}, +/* 1919 */ {(12<<2)|2,{48,118,0}}, +/* 1920 */ {(12<<2)|2,{48,119,0}}, +/* 1921 */ {(12<<2)|2,{48,119,0}}, +/* 1922 */ {(12<<2)|2,{48,119,0}}, +/* 1923 */ {(12<<2)|2,{48,119,0}}, +/* 1924 */ {(12<<2)|2,{48,119,0}}, +/* 1925 */ {(12<<2)|2,{48,119,0}}, +/* 1926 */ {(12<<2)|2,{48,119,0}}, +/* 1927 */ {(12<<2)|2,{48,119,0}}, +/* 1928 */ {(12<<2)|2,{48,119,0}}, +/* 1929 */ {(12<<2)|2,{48,119,0}}, +/* 1930 */ {(12<<2)|2,{48,119,0}}, +/* 1931 */ {(12<<2)|2,{48,119,0}}, +/* 1932 */ {(12<<2)|2,{48,119,0}}, +/* 1933 */ {(12<<2)|2,{48,119,0}}, +/* 1934 */ {(12<<2)|2,{48,119,0}}, +/* 1935 */ {(12<<2)|2,{48,119,0}}, +/* 1936 */ {(12<<2)|2,{48,120,0}}, +/* 1937 */ {(12<<2)|2,{48,120,0}}, +/* 1938 */ {(12<<2)|2,{48,120,0}}, +/* 1939 */ {(12<<2)|2,{48,120,0}}, +/* 1940 */ {(12<<2)|2,{48,120,0}}, +/* 1941 */ {(12<<2)|2,{48,120,0}}, +/* 1942 */ {(12<<2)|2,{48,120,0}}, +/* 1943 */ {(12<<2)|2,{48,120,0}}, +/* 1944 */ {(12<<2)|2,{48,120,0}}, +/* 1945 */ {(12<<2)|2,{48,120,0}}, +/* 1946 */ {(12<<2)|2,{48,120,0}}, +/* 1947 */ {(12<<2)|2,{48,120,0}}, +/* 1948 */ {(12<<2)|2,{48,120,0}}, +/* 1949 */ {(12<<2)|2,{48,120,0}}, +/* 1950 */ {(12<<2)|2,{48,120,0}}, +/* 1951 */ {(12<<2)|2,{48,120,0}}, +/* 1952 */ {(12<<2)|2,{48,121,0}}, +/* 1953 */ {(12<<2)|2,{48,121,0}}, +/* 1954 */ {(12<<2)|2,{48,121,0}}, +/* 1955 */ {(12<<2)|2,{48,121,0}}, +/* 1956 */ {(12<<2)|2,{48,121,0}}, +/* 1957 */ {(12<<2)|2,{48,121,0}}, +/* 1958 */ {(12<<2)|2,{48,121,0}}, +/* 1959 */ {(12<<2)|2,{48,121,0}}, +/* 1960 */ {(12<<2)|2,{48,121,0}}, +/* 1961 */ {(12<<2)|2,{48,121,0}}, +/* 1962 */ {(12<<2)|2,{48,121,0}}, +/* 1963 */ {(12<<2)|2,{48,121,0}}, +/* 1964 */ {(12<<2)|2,{48,121,0}}, +/* 1965 */ {(12<<2)|2,{48,121,0}}, +/* 1966 */ {(12<<2)|2,{48,121,0}}, +/* 1967 */ {(12<<2)|2,{48,121,0}}, +/* 1968 */ {(12<<2)|2,{48,122,0}}, +/* 1969 */ {(12<<2)|2,{48,122,0}}, +/* 1970 */ {(12<<2)|2,{48,122,0}}, +/* 1971 */ {(12<<2)|2,{48,122,0}}, +/* 1972 */ {(12<<2)|2,{48,122,0}}, +/* 1973 */ {(12<<2)|2,{48,122,0}}, +/* 1974 */ {(12<<2)|2,{48,122,0}}, +/* 1975 */ {(12<<2)|2,{48,122,0}}, +/* 1976 */ {(12<<2)|2,{48,122,0}}, +/* 1977 */ {(12<<2)|2,{48,122,0}}, +/* 1978 */ {(12<<2)|2,{48,122,0}}, +/* 1979 */ {(12<<2)|2,{48,122,0}}, +/* 1980 */ {(12<<2)|2,{48,122,0}}, +/* 1981 */ {(12<<2)|2,{48,122,0}}, +/* 1982 */ {(12<<2)|2,{48,122,0}}, +/* 1983 */ {(12<<2)|2,{48,122,0}}, +/* 1984 */ {(13<<2)|2,{48,38,0}}, +/* 1985 */ {(13<<2)|2,{48,38,0}}, +/* 1986 */ {(13<<2)|2,{48,38,0}}, +/* 1987 */ {(13<<2)|2,{48,38,0}}, +/* 1988 */ {(13<<2)|2,{48,38,0}}, +/* 1989 */ {(13<<2)|2,{48,38,0}}, +/* 1990 */ {(13<<2)|2,{48,38,0}}, +/* 1991 */ {(13<<2)|2,{48,38,0}}, +/* 1992 */ {(13<<2)|2,{48,42,0}}, +/* 1993 */ {(13<<2)|2,{48,42,0}}, +/* 1994 */ {(13<<2)|2,{48,42,0}}, +/* 1995 */ {(13<<2)|2,{48,42,0}}, +/* 1996 */ {(13<<2)|2,{48,42,0}}, +/* 1997 */ {(13<<2)|2,{48,42,0}}, +/* 1998 */ {(13<<2)|2,{48,42,0}}, +/* 1999 */ {(13<<2)|2,{48,42,0}}, +/* 2000 */ {(13<<2)|2,{48,44,0}}, +/* 2001 */ {(13<<2)|2,{48,44,0}}, +/* 2002 */ {(13<<2)|2,{48,44,0}}, +/* 2003 */ {(13<<2)|2,{48,44,0}}, +/* 2004 */ {(13<<2)|2,{48,44,0}}, +/* 2005 */ {(13<<2)|2,{48,44,0}}, +/* 2006 */ {(13<<2)|2,{48,44,0}}, +/* 2007 */ {(13<<2)|2,{48,44,0}}, +/* 2008 */ {(13<<2)|2,{48,59,0}}, +/* 2009 */ {(13<<2)|2,{48,59,0}}, +/* 2010 */ {(13<<2)|2,{48,59,0}}, +/* 2011 */ {(13<<2)|2,{48,59,0}}, +/* 2012 */ {(13<<2)|2,{48,59,0}}, +/* 2013 */ {(13<<2)|2,{48,59,0}}, +/* 2014 */ {(13<<2)|2,{48,59,0}}, +/* 2015 */ {(13<<2)|2,{48,59,0}}, +/* 2016 */ {(13<<2)|2,{48,88,0}}, +/* 2017 */ {(13<<2)|2,{48,88,0}}, +/* 2018 */ {(13<<2)|2,{48,88,0}}, +/* 2019 */ {(13<<2)|2,{48,88,0}}, +/* 2020 */ {(13<<2)|2,{48,88,0}}, +/* 2021 */ {(13<<2)|2,{48,88,0}}, +/* 2022 */ {(13<<2)|2,{48,88,0}}, +/* 2023 */ {(13<<2)|2,{48,88,0}}, +/* 2024 */ {(13<<2)|2,{48,90,0}}, +/* 2025 */ {(13<<2)|2,{48,90,0}}, +/* 2026 */ {(13<<2)|2,{48,90,0}}, +/* 2027 */ {(13<<2)|2,{48,90,0}}, +/* 2028 */ {(13<<2)|2,{48,90,0}}, +/* 2029 */ {(13<<2)|2,{48,90,0}}, +/* 2030 */ {(13<<2)|2,{48,90,0}}, +/* 2031 */ {(13<<2)|2,{48,90,0}}, +/* 2032 */ {(15<<2)|2,{48,33,0}}, +/* 2033 */ {(15<<2)|2,{48,33,0}}, +/* 2034 */ {(15<<2)|2,{48,34,0}}, +/* 2035 */ {(15<<2)|2,{48,34,0}}, +/* 2036 */ {(15<<2)|2,{48,40,0}}, +/* 2037 */ {(15<<2)|2,{48,40,0}}, +/* 2038 */ {(15<<2)|2,{48,41,0}}, +/* 2039 */ {(15<<2)|2,{48,41,0}}, +/* 2040 */ {(15<<2)|2,{48,63,0}}, +/* 2041 */ {(15<<2)|2,{48,63,0}}, +/* 2042 */ {(16<<2)|2,{48,39,0}}, +/* 2043 */ {(16<<2)|2,{48,43,0}}, +/* 2044 */ {(16<<2)|2,{48,124,0}}, +/* 2045 */ {(5<<2)|1,{48,0,0}}, +/* 2046 */ {(5<<2)|1,{48,0,0}}, +/* 2047 */ {(5<<2)|1,{48,0,0}}, +/* 2048 */ {(15<<2)|3,{49,48,48}}, +/* 2049 */ {(15<<2)|3,{49,48,48}}, +/* 2050 */ {(15<<2)|3,{49,48,49}}, +/* 2051 */ {(15<<2)|3,{49,48,49}}, +/* 2052 */ {(15<<2)|3,{49,48,50}}, +/* 2053 */ {(15<<2)|3,{49,48,50}}, +/* 2054 */ {(15<<2)|3,{49,48,97}}, +/* 2055 */ {(15<<2)|3,{49,48,97}}, +/* 2056 */ {(15<<2)|3,{49,48,99}}, +/* 2057 */ {(15<<2)|3,{49,48,99}}, +/* 2058 */ {(15<<2)|3,{49,48,101}}, +/* 2059 */ {(15<<2)|3,{49,48,101}}, +/* 2060 */ {(15<<2)|3,{49,48,105}}, +/* 2061 */ {(15<<2)|3,{49,48,105}}, +/* 2062 */ {(15<<2)|3,{49,48,111}}, +/* 2063 */ {(15<<2)|3,{49,48,111}}, +/* 2064 */ {(15<<2)|3,{49,48,115}}, +/* 2065 */ {(15<<2)|3,{49,48,115}}, +/* 2066 */ {(15<<2)|3,{49,48,116}}, +/* 2067 */ {(15<<2)|3,{49,48,116}}, +/* 2068 */ {(16<<2)|3,{49,48,32}}, +/* 2069 */ {(16<<2)|3,{49,48,37}}, +/* 2070 */ {(16<<2)|3,{49,48,45}}, +/* 2071 */ {(16<<2)|3,{49,48,46}}, +/* 2072 */ {(16<<2)|3,{49,48,47}}, +/* 2073 */ {(16<<2)|3,{49,48,51}}, +/* 2074 */ {(16<<2)|3,{49,48,52}}, +/* 2075 */ {(16<<2)|3,{49,48,53}}, +/* 2076 */ {(16<<2)|3,{49,48,54}}, +/* 2077 */ {(16<<2)|3,{49,48,55}}, +/* 2078 */ {(16<<2)|3,{49,48,56}}, +/* 2079 */ {(16<<2)|3,{49,48,57}}, +/* 2080 */ {(16<<2)|3,{49,48,61}}, +/* 2081 */ {(16<<2)|3,{49,48,65}}, +/* 2082 */ {(16<<2)|3,{49,48,95}}, +/* 2083 */ {(16<<2)|3,{49,48,98}}, +/* 2084 */ {(16<<2)|3,{49,48,100}}, +/* 2085 */ {(16<<2)|3,{49,48,102}}, +/* 2086 */ {(16<<2)|3,{49,48,103}}, +/* 2087 */ {(16<<2)|3,{49,48,104}}, +/* 2088 */ {(16<<2)|3,{49,48,108}}, +/* 2089 */ {(16<<2)|3,{49,48,109}}, +/* 2090 */ {(16<<2)|3,{49,48,110}}, +/* 2091 */ {(16<<2)|3,{49,48,112}}, +/* 2092 */ {(16<<2)|3,{49,48,114}}, +/* 2093 */ {(16<<2)|3,{49,48,117}}, +/* 2094 */ {(10<<2)|2,{49,48,0}}, +/* 2095 */ {(10<<2)|2,{49,48,0}}, +/* 2096 */ {(10<<2)|2,{49,48,0}}, +/* 2097 */ {(10<<2)|2,{49,48,0}}, +/* 2098 */ {(10<<2)|2,{49,48,0}}, +/* 2099 */ {(10<<2)|2,{49,48,0}}, +/* 2100 */ {(10<<2)|2,{49,48,0}}, +/* 2101 */ {(10<<2)|2,{49,48,0}}, +/* 2102 */ {(10<<2)|2,{49,48,0}}, +/* 2103 */ {(10<<2)|2,{49,48,0}}, +/* 2104 */ {(10<<2)|2,{49,48,0}}, +/* 2105 */ {(10<<2)|2,{49,48,0}}, +/* 2106 */ {(10<<2)|2,{49,48,0}}, +/* 2107 */ {(10<<2)|2,{49,48,0}}, +/* 2108 */ {(10<<2)|2,{49,48,0}}, +/* 2109 */ {(10<<2)|2,{49,48,0}}, +/* 2110 */ {(10<<2)|2,{49,48,0}}, +/* 2111 */ {(10<<2)|2,{49,48,0}}, +/* 2112 */ {(15<<2)|3,{49,49,48}}, +/* 2113 */ {(15<<2)|3,{49,49,48}}, +/* 2114 */ {(15<<2)|3,{49,49,49}}, +/* 2115 */ {(15<<2)|3,{49,49,49}}, +/* 2116 */ {(15<<2)|3,{49,49,50}}, +/* 2117 */ {(15<<2)|3,{49,49,50}}, +/* 2118 */ {(15<<2)|3,{49,49,97}}, +/* 2119 */ {(15<<2)|3,{49,49,97}}, +/* 2120 */ {(15<<2)|3,{49,49,99}}, +/* 2121 */ {(15<<2)|3,{49,49,99}}, +/* 2122 */ {(15<<2)|3,{49,49,101}}, +/* 2123 */ {(15<<2)|3,{49,49,101}}, +/* 2124 */ {(15<<2)|3,{49,49,105}}, +/* 2125 */ {(15<<2)|3,{49,49,105}}, +/* 2126 */ {(15<<2)|3,{49,49,111}}, +/* 2127 */ {(15<<2)|3,{49,49,111}}, +/* 2128 */ {(15<<2)|3,{49,49,115}}, +/* 2129 */ {(15<<2)|3,{49,49,115}}, +/* 2130 */ {(15<<2)|3,{49,49,116}}, +/* 2131 */ {(15<<2)|3,{49,49,116}}, +/* 2132 */ {(16<<2)|3,{49,49,32}}, +/* 2133 */ {(16<<2)|3,{49,49,37}}, +/* 2134 */ {(16<<2)|3,{49,49,45}}, +/* 2135 */ {(16<<2)|3,{49,49,46}}, +/* 2136 */ {(16<<2)|3,{49,49,47}}, +/* 2137 */ {(16<<2)|3,{49,49,51}}, +/* 2138 */ {(16<<2)|3,{49,49,52}}, +/* 2139 */ {(16<<2)|3,{49,49,53}}, +/* 2140 */ {(16<<2)|3,{49,49,54}}, +/* 2141 */ {(16<<2)|3,{49,49,55}}, +/* 2142 */ {(16<<2)|3,{49,49,56}}, +/* 2143 */ {(16<<2)|3,{49,49,57}}, +/* 2144 */ {(16<<2)|3,{49,49,61}}, +/* 2145 */ {(16<<2)|3,{49,49,65}}, +/* 2146 */ {(16<<2)|3,{49,49,95}}, +/* 2147 */ {(16<<2)|3,{49,49,98}}, +/* 2148 */ {(16<<2)|3,{49,49,100}}, +/* 2149 */ {(16<<2)|3,{49,49,102}}, +/* 2150 */ {(16<<2)|3,{49,49,103}}, +/* 2151 */ {(16<<2)|3,{49,49,104}}, +/* 2152 */ {(16<<2)|3,{49,49,108}}, +/* 2153 */ {(16<<2)|3,{49,49,109}}, +/* 2154 */ {(16<<2)|3,{49,49,110}}, +/* 2155 */ {(16<<2)|3,{49,49,112}}, +/* 2156 */ {(16<<2)|3,{49,49,114}}, +/* 2157 */ {(16<<2)|3,{49,49,117}}, +/* 2158 */ {(10<<2)|2,{49,49,0}}, +/* 2159 */ {(10<<2)|2,{49,49,0}}, +/* 2160 */ {(10<<2)|2,{49,49,0}}, +/* 2161 */ {(10<<2)|2,{49,49,0}}, +/* 2162 */ {(10<<2)|2,{49,49,0}}, +/* 2163 */ {(10<<2)|2,{49,49,0}}, +/* 2164 */ {(10<<2)|2,{49,49,0}}, +/* 2165 */ {(10<<2)|2,{49,49,0}}, +/* 2166 */ {(10<<2)|2,{49,49,0}}, +/* 2167 */ {(10<<2)|2,{49,49,0}}, +/* 2168 */ {(10<<2)|2,{49,49,0}}, +/* 2169 */ {(10<<2)|2,{49,49,0}}, +/* 2170 */ {(10<<2)|2,{49,49,0}}, +/* 2171 */ {(10<<2)|2,{49,49,0}}, +/* 2172 */ {(10<<2)|2,{49,49,0}}, +/* 2173 */ {(10<<2)|2,{49,49,0}}, +/* 2174 */ {(10<<2)|2,{49,49,0}}, +/* 2175 */ {(10<<2)|2,{49,49,0}}, +/* 2176 */ {(15<<2)|3,{49,50,48}}, +/* 2177 */ {(15<<2)|3,{49,50,48}}, +/* 2178 */ {(15<<2)|3,{49,50,49}}, +/* 2179 */ {(15<<2)|3,{49,50,49}}, +/* 2180 */ {(15<<2)|3,{49,50,50}}, +/* 2181 */ {(15<<2)|3,{49,50,50}}, +/* 2182 */ {(15<<2)|3,{49,50,97}}, +/* 2183 */ {(15<<2)|3,{49,50,97}}, +/* 2184 */ {(15<<2)|3,{49,50,99}}, +/* 2185 */ {(15<<2)|3,{49,50,99}}, +/* 2186 */ {(15<<2)|3,{49,50,101}}, +/* 2187 */ {(15<<2)|3,{49,50,101}}, +/* 2188 */ {(15<<2)|3,{49,50,105}}, +/* 2189 */ {(15<<2)|3,{49,50,105}}, +/* 2190 */ {(15<<2)|3,{49,50,111}}, +/* 2191 */ {(15<<2)|3,{49,50,111}}, +/* 2192 */ {(15<<2)|3,{49,50,115}}, +/* 2193 */ {(15<<2)|3,{49,50,115}}, +/* 2194 */ {(15<<2)|3,{49,50,116}}, +/* 2195 */ {(15<<2)|3,{49,50,116}}, +/* 2196 */ {(16<<2)|3,{49,50,32}}, +/* 2197 */ {(16<<2)|3,{49,50,37}}, +/* 2198 */ {(16<<2)|3,{49,50,45}}, +/* 2199 */ {(16<<2)|3,{49,50,46}}, +/* 2200 */ {(16<<2)|3,{49,50,47}}, +/* 2201 */ {(16<<2)|3,{49,50,51}}, +/* 2202 */ {(16<<2)|3,{49,50,52}}, +/* 2203 */ {(16<<2)|3,{49,50,53}}, +/* 2204 */ {(16<<2)|3,{49,50,54}}, +/* 2205 */ {(16<<2)|3,{49,50,55}}, +/* 2206 */ {(16<<2)|3,{49,50,56}}, +/* 2207 */ {(16<<2)|3,{49,50,57}}, +/* 2208 */ {(16<<2)|3,{49,50,61}}, +/* 2209 */ {(16<<2)|3,{49,50,65}}, +/* 2210 */ {(16<<2)|3,{49,50,95}}, +/* 2211 */ {(16<<2)|3,{49,50,98}}, +/* 2212 */ {(16<<2)|3,{49,50,100}}, +/* 2213 */ {(16<<2)|3,{49,50,102}}, +/* 2214 */ {(16<<2)|3,{49,50,103}}, +/* 2215 */ {(16<<2)|3,{49,50,104}}, +/* 2216 */ {(16<<2)|3,{49,50,108}}, +/* 2217 */ {(16<<2)|3,{49,50,109}}, +/* 2218 */ {(16<<2)|3,{49,50,110}}, +/* 2219 */ {(16<<2)|3,{49,50,112}}, +/* 2220 */ {(16<<2)|3,{49,50,114}}, +/* 2221 */ {(16<<2)|3,{49,50,117}}, +/* 2222 */ {(10<<2)|2,{49,50,0}}, +/* 2223 */ {(10<<2)|2,{49,50,0}}, +/* 2224 */ {(10<<2)|2,{49,50,0}}, +/* 2225 */ {(10<<2)|2,{49,50,0}}, +/* 2226 */ {(10<<2)|2,{49,50,0}}, +/* 2227 */ {(10<<2)|2,{49,50,0}}, +/* 2228 */ {(10<<2)|2,{49,50,0}}, +/* 2229 */ {(10<<2)|2,{49,50,0}}, +/* 2230 */ {(10<<2)|2,{49,50,0}}, +/* 2231 */ {(10<<2)|2,{49,50,0}}, +/* 2232 */ {(10<<2)|2,{49,50,0}}, +/* 2233 */ {(10<<2)|2,{49,50,0}}, +/* 2234 */ {(10<<2)|2,{49,50,0}}, +/* 2235 */ {(10<<2)|2,{49,50,0}}, +/* 2236 */ {(10<<2)|2,{49,50,0}}, +/* 2237 */ {(10<<2)|2,{49,50,0}}, +/* 2238 */ {(10<<2)|2,{49,50,0}}, +/* 2239 */ {(10<<2)|2,{49,50,0}}, +/* 2240 */ {(15<<2)|3,{49,97,48}}, +/* 2241 */ {(15<<2)|3,{49,97,48}}, +/* 2242 */ {(15<<2)|3,{49,97,49}}, +/* 2243 */ {(15<<2)|3,{49,97,49}}, +/* 2244 */ {(15<<2)|3,{49,97,50}}, +/* 2245 */ {(15<<2)|3,{49,97,50}}, +/* 2246 */ {(15<<2)|3,{49,97,97}}, +/* 2247 */ {(15<<2)|3,{49,97,97}}, +/* 2248 */ {(15<<2)|3,{49,97,99}}, +/* 2249 */ {(15<<2)|3,{49,97,99}}, +/* 2250 */ {(15<<2)|3,{49,97,101}}, +/* 2251 */ {(15<<2)|3,{49,97,101}}, +/* 2252 */ {(15<<2)|3,{49,97,105}}, +/* 2253 */ {(15<<2)|3,{49,97,105}}, +/* 2254 */ {(15<<2)|3,{49,97,111}}, +/* 2255 */ {(15<<2)|3,{49,97,111}}, +/* 2256 */ {(15<<2)|3,{49,97,115}}, +/* 2257 */ {(15<<2)|3,{49,97,115}}, +/* 2258 */ {(15<<2)|3,{49,97,116}}, +/* 2259 */ {(15<<2)|3,{49,97,116}}, +/* 2260 */ {(16<<2)|3,{49,97,32}}, +/* 2261 */ {(16<<2)|3,{49,97,37}}, +/* 2262 */ {(16<<2)|3,{49,97,45}}, +/* 2263 */ {(16<<2)|3,{49,97,46}}, +/* 2264 */ {(16<<2)|3,{49,97,47}}, +/* 2265 */ {(16<<2)|3,{49,97,51}}, +/* 2266 */ {(16<<2)|3,{49,97,52}}, +/* 2267 */ {(16<<2)|3,{49,97,53}}, +/* 2268 */ {(16<<2)|3,{49,97,54}}, +/* 2269 */ {(16<<2)|3,{49,97,55}}, +/* 2270 */ {(16<<2)|3,{49,97,56}}, +/* 2271 */ {(16<<2)|3,{49,97,57}}, +/* 2272 */ {(16<<2)|3,{49,97,61}}, +/* 2273 */ {(16<<2)|3,{49,97,65}}, +/* 2274 */ {(16<<2)|3,{49,97,95}}, +/* 2275 */ {(16<<2)|3,{49,97,98}}, +/* 2276 */ {(16<<2)|3,{49,97,100}}, +/* 2277 */ {(16<<2)|3,{49,97,102}}, +/* 2278 */ {(16<<2)|3,{49,97,103}}, +/* 2279 */ {(16<<2)|3,{49,97,104}}, +/* 2280 */ {(16<<2)|3,{49,97,108}}, +/* 2281 */ {(16<<2)|3,{49,97,109}}, +/* 2282 */ {(16<<2)|3,{49,97,110}}, +/* 2283 */ {(16<<2)|3,{49,97,112}}, +/* 2284 */ {(16<<2)|3,{49,97,114}}, +/* 2285 */ {(16<<2)|3,{49,97,117}}, +/* 2286 */ {(10<<2)|2,{49,97,0}}, +/* 2287 */ {(10<<2)|2,{49,97,0}}, +/* 2288 */ {(10<<2)|2,{49,97,0}}, +/* 2289 */ {(10<<2)|2,{49,97,0}}, +/* 2290 */ {(10<<2)|2,{49,97,0}}, +/* 2291 */ {(10<<2)|2,{49,97,0}}, +/* 2292 */ {(10<<2)|2,{49,97,0}}, +/* 2293 */ {(10<<2)|2,{49,97,0}}, +/* 2294 */ {(10<<2)|2,{49,97,0}}, +/* 2295 */ {(10<<2)|2,{49,97,0}}, +/* 2296 */ {(10<<2)|2,{49,97,0}}, +/* 2297 */ {(10<<2)|2,{49,97,0}}, +/* 2298 */ {(10<<2)|2,{49,97,0}}, +/* 2299 */ {(10<<2)|2,{49,97,0}}, +/* 2300 */ {(10<<2)|2,{49,97,0}}, +/* 2301 */ {(10<<2)|2,{49,97,0}}, +/* 2302 */ {(10<<2)|2,{49,97,0}}, +/* 2303 */ {(10<<2)|2,{49,97,0}}, +/* 2304 */ {(15<<2)|3,{49,99,48}}, +/* 2305 */ {(15<<2)|3,{49,99,48}}, +/* 2306 */ {(15<<2)|3,{49,99,49}}, +/* 2307 */ {(15<<2)|3,{49,99,49}}, +/* 2308 */ {(15<<2)|3,{49,99,50}}, +/* 2309 */ {(15<<2)|3,{49,99,50}}, +/* 2310 */ {(15<<2)|3,{49,99,97}}, +/* 2311 */ {(15<<2)|3,{49,99,97}}, +/* 2312 */ {(15<<2)|3,{49,99,99}}, +/* 2313 */ {(15<<2)|3,{49,99,99}}, +/* 2314 */ {(15<<2)|3,{49,99,101}}, +/* 2315 */ {(15<<2)|3,{49,99,101}}, +/* 2316 */ {(15<<2)|3,{49,99,105}}, +/* 2317 */ {(15<<2)|3,{49,99,105}}, +/* 2318 */ {(15<<2)|3,{49,99,111}}, +/* 2319 */ {(15<<2)|3,{49,99,111}}, +/* 2320 */ {(15<<2)|3,{49,99,115}}, +/* 2321 */ {(15<<2)|3,{49,99,115}}, +/* 2322 */ {(15<<2)|3,{49,99,116}}, +/* 2323 */ {(15<<2)|3,{49,99,116}}, +/* 2324 */ {(16<<2)|3,{49,99,32}}, +/* 2325 */ {(16<<2)|3,{49,99,37}}, +/* 2326 */ {(16<<2)|3,{49,99,45}}, +/* 2327 */ {(16<<2)|3,{49,99,46}}, +/* 2328 */ {(16<<2)|3,{49,99,47}}, +/* 2329 */ {(16<<2)|3,{49,99,51}}, +/* 2330 */ {(16<<2)|3,{49,99,52}}, +/* 2331 */ {(16<<2)|3,{49,99,53}}, +/* 2332 */ {(16<<2)|3,{49,99,54}}, +/* 2333 */ {(16<<2)|3,{49,99,55}}, +/* 2334 */ {(16<<2)|3,{49,99,56}}, +/* 2335 */ {(16<<2)|3,{49,99,57}}, +/* 2336 */ {(16<<2)|3,{49,99,61}}, +/* 2337 */ {(16<<2)|3,{49,99,65}}, +/* 2338 */ {(16<<2)|3,{49,99,95}}, +/* 2339 */ {(16<<2)|3,{49,99,98}}, +/* 2340 */ {(16<<2)|3,{49,99,100}}, +/* 2341 */ {(16<<2)|3,{49,99,102}}, +/* 2342 */ {(16<<2)|3,{49,99,103}}, +/* 2343 */ {(16<<2)|3,{49,99,104}}, +/* 2344 */ {(16<<2)|3,{49,99,108}}, +/* 2345 */ {(16<<2)|3,{49,99,109}}, +/* 2346 */ {(16<<2)|3,{49,99,110}}, +/* 2347 */ {(16<<2)|3,{49,99,112}}, +/* 2348 */ {(16<<2)|3,{49,99,114}}, +/* 2349 */ {(16<<2)|3,{49,99,117}}, +/* 2350 */ {(10<<2)|2,{49,99,0}}, +/* 2351 */ {(10<<2)|2,{49,99,0}}, +/* 2352 */ {(10<<2)|2,{49,99,0}}, +/* 2353 */ {(10<<2)|2,{49,99,0}}, +/* 2354 */ {(10<<2)|2,{49,99,0}}, +/* 2355 */ {(10<<2)|2,{49,99,0}}, +/* 2356 */ {(10<<2)|2,{49,99,0}}, +/* 2357 */ {(10<<2)|2,{49,99,0}}, +/* 2358 */ {(10<<2)|2,{49,99,0}}, +/* 2359 */ {(10<<2)|2,{49,99,0}}, +/* 2360 */ {(10<<2)|2,{49,99,0}}, +/* 2361 */ {(10<<2)|2,{49,99,0}}, +/* 2362 */ {(10<<2)|2,{49,99,0}}, +/* 2363 */ {(10<<2)|2,{49,99,0}}, +/* 2364 */ {(10<<2)|2,{49,99,0}}, +/* 2365 */ {(10<<2)|2,{49,99,0}}, +/* 2366 */ {(10<<2)|2,{49,99,0}}, +/* 2367 */ {(10<<2)|2,{49,99,0}}, +/* 2368 */ {(15<<2)|3,{49,101,48}}, +/* 2369 */ {(15<<2)|3,{49,101,48}}, +/* 2370 */ {(15<<2)|3,{49,101,49}}, +/* 2371 */ {(15<<2)|3,{49,101,49}}, +/* 2372 */ {(15<<2)|3,{49,101,50}}, +/* 2373 */ {(15<<2)|3,{49,101,50}}, +/* 2374 */ {(15<<2)|3,{49,101,97}}, +/* 2375 */ {(15<<2)|3,{49,101,97}}, +/* 2376 */ {(15<<2)|3,{49,101,99}}, +/* 2377 */ {(15<<2)|3,{49,101,99}}, +/* 2378 */ {(15<<2)|3,{49,101,101}}, +/* 2379 */ {(15<<2)|3,{49,101,101}}, +/* 2380 */ {(15<<2)|3,{49,101,105}}, +/* 2381 */ {(15<<2)|3,{49,101,105}}, +/* 2382 */ {(15<<2)|3,{49,101,111}}, +/* 2383 */ {(15<<2)|3,{49,101,111}}, +/* 2384 */ {(15<<2)|3,{49,101,115}}, +/* 2385 */ {(15<<2)|3,{49,101,115}}, +/* 2386 */ {(15<<2)|3,{49,101,116}}, +/* 2387 */ {(15<<2)|3,{49,101,116}}, +/* 2388 */ {(16<<2)|3,{49,101,32}}, +/* 2389 */ {(16<<2)|3,{49,101,37}}, +/* 2390 */ {(16<<2)|3,{49,101,45}}, +/* 2391 */ {(16<<2)|3,{49,101,46}}, +/* 2392 */ {(16<<2)|3,{49,101,47}}, +/* 2393 */ {(16<<2)|3,{49,101,51}}, +/* 2394 */ {(16<<2)|3,{49,101,52}}, +/* 2395 */ {(16<<2)|3,{49,101,53}}, +/* 2396 */ {(16<<2)|3,{49,101,54}}, +/* 2397 */ {(16<<2)|3,{49,101,55}}, +/* 2398 */ {(16<<2)|3,{49,101,56}}, +/* 2399 */ {(16<<2)|3,{49,101,57}}, +/* 2400 */ {(16<<2)|3,{49,101,61}}, +/* 2401 */ {(16<<2)|3,{49,101,65}}, +/* 2402 */ {(16<<2)|3,{49,101,95}}, +/* 2403 */ {(16<<2)|3,{49,101,98}}, +/* 2404 */ {(16<<2)|3,{49,101,100}}, +/* 2405 */ {(16<<2)|3,{49,101,102}}, +/* 2406 */ {(16<<2)|3,{49,101,103}}, +/* 2407 */ {(16<<2)|3,{49,101,104}}, +/* 2408 */ {(16<<2)|3,{49,101,108}}, +/* 2409 */ {(16<<2)|3,{49,101,109}}, +/* 2410 */ {(16<<2)|3,{49,101,110}}, +/* 2411 */ {(16<<2)|3,{49,101,112}}, +/* 2412 */ {(16<<2)|3,{49,101,114}}, +/* 2413 */ {(16<<2)|3,{49,101,117}}, +/* 2414 */ {(10<<2)|2,{49,101,0}}, +/* 2415 */ {(10<<2)|2,{49,101,0}}, +/* 2416 */ {(10<<2)|2,{49,101,0}}, +/* 2417 */ {(10<<2)|2,{49,101,0}}, +/* 2418 */ {(10<<2)|2,{49,101,0}}, +/* 2419 */ {(10<<2)|2,{49,101,0}}, +/* 2420 */ {(10<<2)|2,{49,101,0}}, +/* 2421 */ {(10<<2)|2,{49,101,0}}, +/* 2422 */ {(10<<2)|2,{49,101,0}}, +/* 2423 */ {(10<<2)|2,{49,101,0}}, +/* 2424 */ {(10<<2)|2,{49,101,0}}, +/* 2425 */ {(10<<2)|2,{49,101,0}}, +/* 2426 */ {(10<<2)|2,{49,101,0}}, +/* 2427 */ {(10<<2)|2,{49,101,0}}, +/* 2428 */ {(10<<2)|2,{49,101,0}}, +/* 2429 */ {(10<<2)|2,{49,101,0}}, +/* 2430 */ {(10<<2)|2,{49,101,0}}, +/* 2431 */ {(10<<2)|2,{49,101,0}}, +/* 2432 */ {(15<<2)|3,{49,105,48}}, +/* 2433 */ {(15<<2)|3,{49,105,48}}, +/* 2434 */ {(15<<2)|3,{49,105,49}}, +/* 2435 */ {(15<<2)|3,{49,105,49}}, +/* 2436 */ {(15<<2)|3,{49,105,50}}, +/* 2437 */ {(15<<2)|3,{49,105,50}}, +/* 2438 */ {(15<<2)|3,{49,105,97}}, +/* 2439 */ {(15<<2)|3,{49,105,97}}, +/* 2440 */ {(15<<2)|3,{49,105,99}}, +/* 2441 */ {(15<<2)|3,{49,105,99}}, +/* 2442 */ {(15<<2)|3,{49,105,101}}, +/* 2443 */ {(15<<2)|3,{49,105,101}}, +/* 2444 */ {(15<<2)|3,{49,105,105}}, +/* 2445 */ {(15<<2)|3,{49,105,105}}, +/* 2446 */ {(15<<2)|3,{49,105,111}}, +/* 2447 */ {(15<<2)|3,{49,105,111}}, +/* 2448 */ {(15<<2)|3,{49,105,115}}, +/* 2449 */ {(15<<2)|3,{49,105,115}}, +/* 2450 */ {(15<<2)|3,{49,105,116}}, +/* 2451 */ {(15<<2)|3,{49,105,116}}, +/* 2452 */ {(16<<2)|3,{49,105,32}}, +/* 2453 */ {(16<<2)|3,{49,105,37}}, +/* 2454 */ {(16<<2)|3,{49,105,45}}, +/* 2455 */ {(16<<2)|3,{49,105,46}}, +/* 2456 */ {(16<<2)|3,{49,105,47}}, +/* 2457 */ {(16<<2)|3,{49,105,51}}, +/* 2458 */ {(16<<2)|3,{49,105,52}}, +/* 2459 */ {(16<<2)|3,{49,105,53}}, +/* 2460 */ {(16<<2)|3,{49,105,54}}, +/* 2461 */ {(16<<2)|3,{49,105,55}}, +/* 2462 */ {(16<<2)|3,{49,105,56}}, +/* 2463 */ {(16<<2)|3,{49,105,57}}, +/* 2464 */ {(16<<2)|3,{49,105,61}}, +/* 2465 */ {(16<<2)|3,{49,105,65}}, +/* 2466 */ {(16<<2)|3,{49,105,95}}, +/* 2467 */ {(16<<2)|3,{49,105,98}}, +/* 2468 */ {(16<<2)|3,{49,105,100}}, +/* 2469 */ {(16<<2)|3,{49,105,102}}, +/* 2470 */ {(16<<2)|3,{49,105,103}}, +/* 2471 */ {(16<<2)|3,{49,105,104}}, +/* 2472 */ {(16<<2)|3,{49,105,108}}, +/* 2473 */ {(16<<2)|3,{49,105,109}}, +/* 2474 */ {(16<<2)|3,{49,105,110}}, +/* 2475 */ {(16<<2)|3,{49,105,112}}, +/* 2476 */ {(16<<2)|3,{49,105,114}}, +/* 2477 */ {(16<<2)|3,{49,105,117}}, +/* 2478 */ {(10<<2)|2,{49,105,0}}, +/* 2479 */ {(10<<2)|2,{49,105,0}}, +/* 2480 */ {(10<<2)|2,{49,105,0}}, +/* 2481 */ {(10<<2)|2,{49,105,0}}, +/* 2482 */ {(10<<2)|2,{49,105,0}}, +/* 2483 */ {(10<<2)|2,{49,105,0}}, +/* 2484 */ {(10<<2)|2,{49,105,0}}, +/* 2485 */ {(10<<2)|2,{49,105,0}}, +/* 2486 */ {(10<<2)|2,{49,105,0}}, +/* 2487 */ {(10<<2)|2,{49,105,0}}, +/* 2488 */ {(10<<2)|2,{49,105,0}}, +/* 2489 */ {(10<<2)|2,{49,105,0}}, +/* 2490 */ {(10<<2)|2,{49,105,0}}, +/* 2491 */ {(10<<2)|2,{49,105,0}}, +/* 2492 */ {(10<<2)|2,{49,105,0}}, +/* 2493 */ {(10<<2)|2,{49,105,0}}, +/* 2494 */ {(10<<2)|2,{49,105,0}}, +/* 2495 */ {(10<<2)|2,{49,105,0}}, +/* 2496 */ {(15<<2)|3,{49,111,48}}, +/* 2497 */ {(15<<2)|3,{49,111,48}}, +/* 2498 */ {(15<<2)|3,{49,111,49}}, +/* 2499 */ {(15<<2)|3,{49,111,49}}, +/* 2500 */ {(15<<2)|3,{49,111,50}}, +/* 2501 */ {(15<<2)|3,{49,111,50}}, +/* 2502 */ {(15<<2)|3,{49,111,97}}, +/* 2503 */ {(15<<2)|3,{49,111,97}}, +/* 2504 */ {(15<<2)|3,{49,111,99}}, +/* 2505 */ {(15<<2)|3,{49,111,99}}, +/* 2506 */ {(15<<2)|3,{49,111,101}}, +/* 2507 */ {(15<<2)|3,{49,111,101}}, +/* 2508 */ {(15<<2)|3,{49,111,105}}, +/* 2509 */ {(15<<2)|3,{49,111,105}}, +/* 2510 */ {(15<<2)|3,{49,111,111}}, +/* 2511 */ {(15<<2)|3,{49,111,111}}, +/* 2512 */ {(15<<2)|3,{49,111,115}}, +/* 2513 */ {(15<<2)|3,{49,111,115}}, +/* 2514 */ {(15<<2)|3,{49,111,116}}, +/* 2515 */ {(15<<2)|3,{49,111,116}}, +/* 2516 */ {(16<<2)|3,{49,111,32}}, +/* 2517 */ {(16<<2)|3,{49,111,37}}, +/* 2518 */ {(16<<2)|3,{49,111,45}}, +/* 2519 */ {(16<<2)|3,{49,111,46}}, +/* 2520 */ {(16<<2)|3,{49,111,47}}, +/* 2521 */ {(16<<2)|3,{49,111,51}}, +/* 2522 */ {(16<<2)|3,{49,111,52}}, +/* 2523 */ {(16<<2)|3,{49,111,53}}, +/* 2524 */ {(16<<2)|3,{49,111,54}}, +/* 2525 */ {(16<<2)|3,{49,111,55}}, +/* 2526 */ {(16<<2)|3,{49,111,56}}, +/* 2527 */ {(16<<2)|3,{49,111,57}}, +/* 2528 */ {(16<<2)|3,{49,111,61}}, +/* 2529 */ {(16<<2)|3,{49,111,65}}, +/* 2530 */ {(16<<2)|3,{49,111,95}}, +/* 2531 */ {(16<<2)|3,{49,111,98}}, +/* 2532 */ {(16<<2)|3,{49,111,100}}, +/* 2533 */ {(16<<2)|3,{49,111,102}}, +/* 2534 */ {(16<<2)|3,{49,111,103}}, +/* 2535 */ {(16<<2)|3,{49,111,104}}, +/* 2536 */ {(16<<2)|3,{49,111,108}}, +/* 2537 */ {(16<<2)|3,{49,111,109}}, +/* 2538 */ {(16<<2)|3,{49,111,110}}, +/* 2539 */ {(16<<2)|3,{49,111,112}}, +/* 2540 */ {(16<<2)|3,{49,111,114}}, +/* 2541 */ {(16<<2)|3,{49,111,117}}, +/* 2542 */ {(10<<2)|2,{49,111,0}}, +/* 2543 */ {(10<<2)|2,{49,111,0}}, +/* 2544 */ {(10<<2)|2,{49,111,0}}, +/* 2545 */ {(10<<2)|2,{49,111,0}}, +/* 2546 */ {(10<<2)|2,{49,111,0}}, +/* 2547 */ {(10<<2)|2,{49,111,0}}, +/* 2548 */ {(10<<2)|2,{49,111,0}}, +/* 2549 */ {(10<<2)|2,{49,111,0}}, +/* 2550 */ {(10<<2)|2,{49,111,0}}, +/* 2551 */ {(10<<2)|2,{49,111,0}}, +/* 2552 */ {(10<<2)|2,{49,111,0}}, +/* 2553 */ {(10<<2)|2,{49,111,0}}, +/* 2554 */ {(10<<2)|2,{49,111,0}}, +/* 2555 */ {(10<<2)|2,{49,111,0}}, +/* 2556 */ {(10<<2)|2,{49,111,0}}, +/* 2557 */ {(10<<2)|2,{49,111,0}}, +/* 2558 */ {(10<<2)|2,{49,111,0}}, +/* 2559 */ {(10<<2)|2,{49,111,0}}, +/* 2560 */ {(15<<2)|3,{49,115,48}}, +/* 2561 */ {(15<<2)|3,{49,115,48}}, +/* 2562 */ {(15<<2)|3,{49,115,49}}, +/* 2563 */ {(15<<2)|3,{49,115,49}}, +/* 2564 */ {(15<<2)|3,{49,115,50}}, +/* 2565 */ {(15<<2)|3,{49,115,50}}, +/* 2566 */ {(15<<2)|3,{49,115,97}}, +/* 2567 */ {(15<<2)|3,{49,115,97}}, +/* 2568 */ {(15<<2)|3,{49,115,99}}, +/* 2569 */ {(15<<2)|3,{49,115,99}}, +/* 2570 */ {(15<<2)|3,{49,115,101}}, +/* 2571 */ {(15<<2)|3,{49,115,101}}, +/* 2572 */ {(15<<2)|3,{49,115,105}}, +/* 2573 */ {(15<<2)|3,{49,115,105}}, +/* 2574 */ {(15<<2)|3,{49,115,111}}, +/* 2575 */ {(15<<2)|3,{49,115,111}}, +/* 2576 */ {(15<<2)|3,{49,115,115}}, +/* 2577 */ {(15<<2)|3,{49,115,115}}, +/* 2578 */ {(15<<2)|3,{49,115,116}}, +/* 2579 */ {(15<<2)|3,{49,115,116}}, +/* 2580 */ {(16<<2)|3,{49,115,32}}, +/* 2581 */ {(16<<2)|3,{49,115,37}}, +/* 2582 */ {(16<<2)|3,{49,115,45}}, +/* 2583 */ {(16<<2)|3,{49,115,46}}, +/* 2584 */ {(16<<2)|3,{49,115,47}}, +/* 2585 */ {(16<<2)|3,{49,115,51}}, +/* 2586 */ {(16<<2)|3,{49,115,52}}, +/* 2587 */ {(16<<2)|3,{49,115,53}}, +/* 2588 */ {(16<<2)|3,{49,115,54}}, +/* 2589 */ {(16<<2)|3,{49,115,55}}, +/* 2590 */ {(16<<2)|3,{49,115,56}}, +/* 2591 */ {(16<<2)|3,{49,115,57}}, +/* 2592 */ {(16<<2)|3,{49,115,61}}, +/* 2593 */ {(16<<2)|3,{49,115,65}}, +/* 2594 */ {(16<<2)|3,{49,115,95}}, +/* 2595 */ {(16<<2)|3,{49,115,98}}, +/* 2596 */ {(16<<2)|3,{49,115,100}}, +/* 2597 */ {(16<<2)|3,{49,115,102}}, +/* 2598 */ {(16<<2)|3,{49,115,103}}, +/* 2599 */ {(16<<2)|3,{49,115,104}}, +/* 2600 */ {(16<<2)|3,{49,115,108}}, +/* 2601 */ {(16<<2)|3,{49,115,109}}, +/* 2602 */ {(16<<2)|3,{49,115,110}}, +/* 2603 */ {(16<<2)|3,{49,115,112}}, +/* 2604 */ {(16<<2)|3,{49,115,114}}, +/* 2605 */ {(16<<2)|3,{49,115,117}}, +/* 2606 */ {(10<<2)|2,{49,115,0}}, +/* 2607 */ {(10<<2)|2,{49,115,0}}, +/* 2608 */ {(10<<2)|2,{49,115,0}}, +/* 2609 */ {(10<<2)|2,{49,115,0}}, +/* 2610 */ {(10<<2)|2,{49,115,0}}, +/* 2611 */ {(10<<2)|2,{49,115,0}}, +/* 2612 */ {(10<<2)|2,{49,115,0}}, +/* 2613 */ {(10<<2)|2,{49,115,0}}, +/* 2614 */ {(10<<2)|2,{49,115,0}}, +/* 2615 */ {(10<<2)|2,{49,115,0}}, +/* 2616 */ {(10<<2)|2,{49,115,0}}, +/* 2617 */ {(10<<2)|2,{49,115,0}}, +/* 2618 */ {(10<<2)|2,{49,115,0}}, +/* 2619 */ {(10<<2)|2,{49,115,0}}, +/* 2620 */ {(10<<2)|2,{49,115,0}}, +/* 2621 */ {(10<<2)|2,{49,115,0}}, +/* 2622 */ {(10<<2)|2,{49,115,0}}, +/* 2623 */ {(10<<2)|2,{49,115,0}}, +/* 2624 */ {(15<<2)|3,{49,116,48}}, +/* 2625 */ {(15<<2)|3,{49,116,48}}, +/* 2626 */ {(15<<2)|3,{49,116,49}}, +/* 2627 */ {(15<<2)|3,{49,116,49}}, +/* 2628 */ {(15<<2)|3,{49,116,50}}, +/* 2629 */ {(15<<2)|3,{49,116,50}}, +/* 2630 */ {(15<<2)|3,{49,116,97}}, +/* 2631 */ {(15<<2)|3,{49,116,97}}, +/* 2632 */ {(15<<2)|3,{49,116,99}}, +/* 2633 */ {(15<<2)|3,{49,116,99}}, +/* 2634 */ {(15<<2)|3,{49,116,101}}, +/* 2635 */ {(15<<2)|3,{49,116,101}}, +/* 2636 */ {(15<<2)|3,{49,116,105}}, +/* 2637 */ {(15<<2)|3,{49,116,105}}, +/* 2638 */ {(15<<2)|3,{49,116,111}}, +/* 2639 */ {(15<<2)|3,{49,116,111}}, +/* 2640 */ {(15<<2)|3,{49,116,115}}, +/* 2641 */ {(15<<2)|3,{49,116,115}}, +/* 2642 */ {(15<<2)|3,{49,116,116}}, +/* 2643 */ {(15<<2)|3,{49,116,116}}, +/* 2644 */ {(16<<2)|3,{49,116,32}}, +/* 2645 */ {(16<<2)|3,{49,116,37}}, +/* 2646 */ {(16<<2)|3,{49,116,45}}, +/* 2647 */ {(16<<2)|3,{49,116,46}}, +/* 2648 */ {(16<<2)|3,{49,116,47}}, +/* 2649 */ {(16<<2)|3,{49,116,51}}, +/* 2650 */ {(16<<2)|3,{49,116,52}}, +/* 2651 */ {(16<<2)|3,{49,116,53}}, +/* 2652 */ {(16<<2)|3,{49,116,54}}, +/* 2653 */ {(16<<2)|3,{49,116,55}}, +/* 2654 */ {(16<<2)|3,{49,116,56}}, +/* 2655 */ {(16<<2)|3,{49,116,57}}, +/* 2656 */ {(16<<2)|3,{49,116,61}}, +/* 2657 */ {(16<<2)|3,{49,116,65}}, +/* 2658 */ {(16<<2)|3,{49,116,95}}, +/* 2659 */ {(16<<2)|3,{49,116,98}}, +/* 2660 */ {(16<<2)|3,{49,116,100}}, +/* 2661 */ {(16<<2)|3,{49,116,102}}, +/* 2662 */ {(16<<2)|3,{49,116,103}}, +/* 2663 */ {(16<<2)|3,{49,116,104}}, +/* 2664 */ {(16<<2)|3,{49,116,108}}, +/* 2665 */ {(16<<2)|3,{49,116,109}}, +/* 2666 */ {(16<<2)|3,{49,116,110}}, +/* 2667 */ {(16<<2)|3,{49,116,112}}, +/* 2668 */ {(16<<2)|3,{49,116,114}}, +/* 2669 */ {(16<<2)|3,{49,116,117}}, +/* 2670 */ {(10<<2)|2,{49,116,0}}, +/* 2671 */ {(10<<2)|2,{49,116,0}}, +/* 2672 */ {(10<<2)|2,{49,116,0}}, +/* 2673 */ {(10<<2)|2,{49,116,0}}, +/* 2674 */ {(10<<2)|2,{49,116,0}}, +/* 2675 */ {(10<<2)|2,{49,116,0}}, +/* 2676 */ {(10<<2)|2,{49,116,0}}, +/* 2677 */ {(10<<2)|2,{49,116,0}}, +/* 2678 */ {(10<<2)|2,{49,116,0}}, +/* 2679 */ {(10<<2)|2,{49,116,0}}, +/* 2680 */ {(10<<2)|2,{49,116,0}}, +/* 2681 */ {(10<<2)|2,{49,116,0}}, +/* 2682 */ {(10<<2)|2,{49,116,0}}, +/* 2683 */ {(10<<2)|2,{49,116,0}}, +/* 2684 */ {(10<<2)|2,{49,116,0}}, +/* 2685 */ {(10<<2)|2,{49,116,0}}, +/* 2686 */ {(10<<2)|2,{49,116,0}}, +/* 2687 */ {(10<<2)|2,{49,116,0}}, +/* 2688 */ {(16<<2)|3,{49,32,48}}, +/* 2689 */ {(16<<2)|3,{49,32,49}}, +/* 2690 */ {(16<<2)|3,{49,32,50}}, +/* 2691 */ {(16<<2)|3,{49,32,97}}, +/* 2692 */ {(16<<2)|3,{49,32,99}}, +/* 2693 */ {(16<<2)|3,{49,32,101}}, +/* 2694 */ {(16<<2)|3,{49,32,105}}, +/* 2695 */ {(16<<2)|3,{49,32,111}}, +/* 2696 */ {(16<<2)|3,{49,32,115}}, +/* 2697 */ {(16<<2)|3,{49,32,116}}, +/* 2698 */ {(11<<2)|2,{49,32,0}}, +/* 2699 */ {(11<<2)|2,{49,32,0}}, +/* 2700 */ {(11<<2)|2,{49,32,0}}, +/* 2701 */ {(11<<2)|2,{49,32,0}}, +/* 2702 */ {(11<<2)|2,{49,32,0}}, +/* 2703 */ {(11<<2)|2,{49,32,0}}, +/* 2704 */ {(11<<2)|2,{49,32,0}}, +/* 2705 */ {(11<<2)|2,{49,32,0}}, +/* 2706 */ {(11<<2)|2,{49,32,0}}, +/* 2707 */ {(11<<2)|2,{49,32,0}}, +/* 2708 */ {(11<<2)|2,{49,32,0}}, +/* 2709 */ {(11<<2)|2,{49,32,0}}, +/* 2710 */ {(11<<2)|2,{49,32,0}}, +/* 2711 */ {(11<<2)|2,{49,32,0}}, +/* 2712 */ {(11<<2)|2,{49,32,0}}, +/* 2713 */ {(11<<2)|2,{49,32,0}}, +/* 2714 */ {(11<<2)|2,{49,32,0}}, +/* 2715 */ {(11<<2)|2,{49,32,0}}, +/* 2716 */ {(11<<2)|2,{49,32,0}}, +/* 2717 */ {(11<<2)|2,{49,32,0}}, +/* 2718 */ {(11<<2)|2,{49,32,0}}, +/* 2719 */ {(11<<2)|2,{49,32,0}}, +/* 2720 */ {(16<<2)|3,{49,37,48}}, +/* 2721 */ {(16<<2)|3,{49,37,49}}, +/* 2722 */ {(16<<2)|3,{49,37,50}}, +/* 2723 */ {(16<<2)|3,{49,37,97}}, +/* 2724 */ {(16<<2)|3,{49,37,99}}, +/* 2725 */ {(16<<2)|3,{49,37,101}}, +/* 2726 */ {(16<<2)|3,{49,37,105}}, +/* 2727 */ {(16<<2)|3,{49,37,111}}, +/* 2728 */ {(16<<2)|3,{49,37,115}}, +/* 2729 */ {(16<<2)|3,{49,37,116}}, +/* 2730 */ {(11<<2)|2,{49,37,0}}, +/* 2731 */ {(11<<2)|2,{49,37,0}}, +/* 2732 */ {(11<<2)|2,{49,37,0}}, +/* 2733 */ {(11<<2)|2,{49,37,0}}, +/* 2734 */ {(11<<2)|2,{49,37,0}}, +/* 2735 */ {(11<<2)|2,{49,37,0}}, +/* 2736 */ {(11<<2)|2,{49,37,0}}, +/* 2737 */ {(11<<2)|2,{49,37,0}}, +/* 2738 */ {(11<<2)|2,{49,37,0}}, +/* 2739 */ {(11<<2)|2,{49,37,0}}, +/* 2740 */ {(11<<2)|2,{49,37,0}}, +/* 2741 */ {(11<<2)|2,{49,37,0}}, +/* 2742 */ {(11<<2)|2,{49,37,0}}, +/* 2743 */ {(11<<2)|2,{49,37,0}}, +/* 2744 */ {(11<<2)|2,{49,37,0}}, +/* 2745 */ {(11<<2)|2,{49,37,0}}, +/* 2746 */ {(11<<2)|2,{49,37,0}}, +/* 2747 */ {(11<<2)|2,{49,37,0}}, +/* 2748 */ {(11<<2)|2,{49,37,0}}, +/* 2749 */ {(11<<2)|2,{49,37,0}}, +/* 2750 */ {(11<<2)|2,{49,37,0}}, +/* 2751 */ {(11<<2)|2,{49,37,0}}, +/* 2752 */ {(16<<2)|3,{49,45,48}}, +/* 2753 */ {(16<<2)|3,{49,45,49}}, +/* 2754 */ {(16<<2)|3,{49,45,50}}, +/* 2755 */ {(16<<2)|3,{49,45,97}}, +/* 2756 */ {(16<<2)|3,{49,45,99}}, +/* 2757 */ {(16<<2)|3,{49,45,101}}, +/* 2758 */ {(16<<2)|3,{49,45,105}}, +/* 2759 */ {(16<<2)|3,{49,45,111}}, +/* 2760 */ {(16<<2)|3,{49,45,115}}, +/* 2761 */ {(16<<2)|3,{49,45,116}}, +/* 2762 */ {(11<<2)|2,{49,45,0}}, +/* 2763 */ {(11<<2)|2,{49,45,0}}, +/* 2764 */ {(11<<2)|2,{49,45,0}}, +/* 2765 */ {(11<<2)|2,{49,45,0}}, +/* 2766 */ {(11<<2)|2,{49,45,0}}, +/* 2767 */ {(11<<2)|2,{49,45,0}}, +/* 2768 */ {(11<<2)|2,{49,45,0}}, +/* 2769 */ {(11<<2)|2,{49,45,0}}, +/* 2770 */ {(11<<2)|2,{49,45,0}}, +/* 2771 */ {(11<<2)|2,{49,45,0}}, +/* 2772 */ {(11<<2)|2,{49,45,0}}, +/* 2773 */ {(11<<2)|2,{49,45,0}}, +/* 2774 */ {(11<<2)|2,{49,45,0}}, +/* 2775 */ {(11<<2)|2,{49,45,0}}, +/* 2776 */ {(11<<2)|2,{49,45,0}}, +/* 2777 */ {(11<<2)|2,{49,45,0}}, +/* 2778 */ {(11<<2)|2,{49,45,0}}, +/* 2779 */ {(11<<2)|2,{49,45,0}}, +/* 2780 */ {(11<<2)|2,{49,45,0}}, +/* 2781 */ {(11<<2)|2,{49,45,0}}, +/* 2782 */ {(11<<2)|2,{49,45,0}}, +/* 2783 */ {(11<<2)|2,{49,45,0}}, +/* 2784 */ {(16<<2)|3,{49,46,48}}, +/* 2785 */ {(16<<2)|3,{49,46,49}}, +/* 2786 */ {(16<<2)|3,{49,46,50}}, +/* 2787 */ {(16<<2)|3,{49,46,97}}, +/* 2788 */ {(16<<2)|3,{49,46,99}}, +/* 2789 */ {(16<<2)|3,{49,46,101}}, +/* 2790 */ {(16<<2)|3,{49,46,105}}, +/* 2791 */ {(16<<2)|3,{49,46,111}}, +/* 2792 */ {(16<<2)|3,{49,46,115}}, +/* 2793 */ {(16<<2)|3,{49,46,116}}, +/* 2794 */ {(11<<2)|2,{49,46,0}}, +/* 2795 */ {(11<<2)|2,{49,46,0}}, +/* 2796 */ {(11<<2)|2,{49,46,0}}, +/* 2797 */ {(11<<2)|2,{49,46,0}}, +/* 2798 */ {(11<<2)|2,{49,46,0}}, +/* 2799 */ {(11<<2)|2,{49,46,0}}, +/* 2800 */ {(11<<2)|2,{49,46,0}}, +/* 2801 */ {(11<<2)|2,{49,46,0}}, +/* 2802 */ {(11<<2)|2,{49,46,0}}, +/* 2803 */ {(11<<2)|2,{49,46,0}}, +/* 2804 */ {(11<<2)|2,{49,46,0}}, +/* 2805 */ {(11<<2)|2,{49,46,0}}, +/* 2806 */ {(11<<2)|2,{49,46,0}}, +/* 2807 */ {(11<<2)|2,{49,46,0}}, +/* 2808 */ {(11<<2)|2,{49,46,0}}, +/* 2809 */ {(11<<2)|2,{49,46,0}}, +/* 2810 */ {(11<<2)|2,{49,46,0}}, +/* 2811 */ {(11<<2)|2,{49,46,0}}, +/* 2812 */ {(11<<2)|2,{49,46,0}}, +/* 2813 */ {(11<<2)|2,{49,46,0}}, +/* 2814 */ {(11<<2)|2,{49,46,0}}, +/* 2815 */ {(11<<2)|2,{49,46,0}}, +/* 2816 */ {(16<<2)|3,{49,47,48}}, +/* 2817 */ {(16<<2)|3,{49,47,49}}, +/* 2818 */ {(16<<2)|3,{49,47,50}}, +/* 2819 */ {(16<<2)|3,{49,47,97}}, +/* 2820 */ {(16<<2)|3,{49,47,99}}, +/* 2821 */ {(16<<2)|3,{49,47,101}}, +/* 2822 */ {(16<<2)|3,{49,47,105}}, +/* 2823 */ {(16<<2)|3,{49,47,111}}, +/* 2824 */ {(16<<2)|3,{49,47,115}}, +/* 2825 */ {(16<<2)|3,{49,47,116}}, +/* 2826 */ {(11<<2)|2,{49,47,0}}, +/* 2827 */ {(11<<2)|2,{49,47,0}}, +/* 2828 */ {(11<<2)|2,{49,47,0}}, +/* 2829 */ {(11<<2)|2,{49,47,0}}, +/* 2830 */ {(11<<2)|2,{49,47,0}}, +/* 2831 */ {(11<<2)|2,{49,47,0}}, +/* 2832 */ {(11<<2)|2,{49,47,0}}, +/* 2833 */ {(11<<2)|2,{49,47,0}}, +/* 2834 */ {(11<<2)|2,{49,47,0}}, +/* 2835 */ {(11<<2)|2,{49,47,0}}, +/* 2836 */ {(11<<2)|2,{49,47,0}}, +/* 2837 */ {(11<<2)|2,{49,47,0}}, +/* 2838 */ {(11<<2)|2,{49,47,0}}, +/* 2839 */ {(11<<2)|2,{49,47,0}}, +/* 2840 */ {(11<<2)|2,{49,47,0}}, +/* 2841 */ {(11<<2)|2,{49,47,0}}, +/* 2842 */ {(11<<2)|2,{49,47,0}}, +/* 2843 */ {(11<<2)|2,{49,47,0}}, +/* 2844 */ {(11<<2)|2,{49,47,0}}, +/* 2845 */ {(11<<2)|2,{49,47,0}}, +/* 2846 */ {(11<<2)|2,{49,47,0}}, +/* 2847 */ {(11<<2)|2,{49,47,0}}, +/* 2848 */ {(16<<2)|3,{49,51,48}}, +/* 2849 */ {(16<<2)|3,{49,51,49}}, +/* 2850 */ {(16<<2)|3,{49,51,50}}, +/* 2851 */ {(16<<2)|3,{49,51,97}}, +/* 2852 */ {(16<<2)|3,{49,51,99}}, +/* 2853 */ {(16<<2)|3,{49,51,101}}, +/* 2854 */ {(16<<2)|3,{49,51,105}}, +/* 2855 */ {(16<<2)|3,{49,51,111}}, +/* 2856 */ {(16<<2)|3,{49,51,115}}, +/* 2857 */ {(16<<2)|3,{49,51,116}}, +/* 2858 */ {(11<<2)|2,{49,51,0}}, +/* 2859 */ {(11<<2)|2,{49,51,0}}, +/* 2860 */ {(11<<2)|2,{49,51,0}}, +/* 2861 */ {(11<<2)|2,{49,51,0}}, +/* 2862 */ {(11<<2)|2,{49,51,0}}, +/* 2863 */ {(11<<2)|2,{49,51,0}}, +/* 2864 */ {(11<<2)|2,{49,51,0}}, +/* 2865 */ {(11<<2)|2,{49,51,0}}, +/* 2866 */ {(11<<2)|2,{49,51,0}}, +/* 2867 */ {(11<<2)|2,{49,51,0}}, +/* 2868 */ {(11<<2)|2,{49,51,0}}, +/* 2869 */ {(11<<2)|2,{49,51,0}}, +/* 2870 */ {(11<<2)|2,{49,51,0}}, +/* 2871 */ {(11<<2)|2,{49,51,0}}, +/* 2872 */ {(11<<2)|2,{49,51,0}}, +/* 2873 */ {(11<<2)|2,{49,51,0}}, +/* 2874 */ {(11<<2)|2,{49,51,0}}, +/* 2875 */ {(11<<2)|2,{49,51,0}}, +/* 2876 */ {(11<<2)|2,{49,51,0}}, +/* 2877 */ {(11<<2)|2,{49,51,0}}, +/* 2878 */ {(11<<2)|2,{49,51,0}}, +/* 2879 */ {(11<<2)|2,{49,51,0}}, +/* 2880 */ {(16<<2)|3,{49,52,48}}, +/* 2881 */ {(16<<2)|3,{49,52,49}}, +/* 2882 */ {(16<<2)|3,{49,52,50}}, +/* 2883 */ {(16<<2)|3,{49,52,97}}, +/* 2884 */ {(16<<2)|3,{49,52,99}}, +/* 2885 */ {(16<<2)|3,{49,52,101}}, +/* 2886 */ {(16<<2)|3,{49,52,105}}, +/* 2887 */ {(16<<2)|3,{49,52,111}}, +/* 2888 */ {(16<<2)|3,{49,52,115}}, +/* 2889 */ {(16<<2)|3,{49,52,116}}, +/* 2890 */ {(11<<2)|2,{49,52,0}}, +/* 2891 */ {(11<<2)|2,{49,52,0}}, +/* 2892 */ {(11<<2)|2,{49,52,0}}, +/* 2893 */ {(11<<2)|2,{49,52,0}}, +/* 2894 */ {(11<<2)|2,{49,52,0}}, +/* 2895 */ {(11<<2)|2,{49,52,0}}, +/* 2896 */ {(11<<2)|2,{49,52,0}}, +/* 2897 */ {(11<<2)|2,{49,52,0}}, +/* 2898 */ {(11<<2)|2,{49,52,0}}, +/* 2899 */ {(11<<2)|2,{49,52,0}}, +/* 2900 */ {(11<<2)|2,{49,52,0}}, +/* 2901 */ {(11<<2)|2,{49,52,0}}, +/* 2902 */ {(11<<2)|2,{49,52,0}}, +/* 2903 */ {(11<<2)|2,{49,52,0}}, +/* 2904 */ {(11<<2)|2,{49,52,0}}, +/* 2905 */ {(11<<2)|2,{49,52,0}}, +/* 2906 */ {(11<<2)|2,{49,52,0}}, +/* 2907 */ {(11<<2)|2,{49,52,0}}, +/* 2908 */ {(11<<2)|2,{49,52,0}}, +/* 2909 */ {(11<<2)|2,{49,52,0}}, +/* 2910 */ {(11<<2)|2,{49,52,0}}, +/* 2911 */ {(11<<2)|2,{49,52,0}}, +/* 2912 */ {(16<<2)|3,{49,53,48}}, +/* 2913 */ {(16<<2)|3,{49,53,49}}, +/* 2914 */ {(16<<2)|3,{49,53,50}}, +/* 2915 */ {(16<<2)|3,{49,53,97}}, +/* 2916 */ {(16<<2)|3,{49,53,99}}, +/* 2917 */ {(16<<2)|3,{49,53,101}}, +/* 2918 */ {(16<<2)|3,{49,53,105}}, +/* 2919 */ {(16<<2)|3,{49,53,111}}, +/* 2920 */ {(16<<2)|3,{49,53,115}}, +/* 2921 */ {(16<<2)|3,{49,53,116}}, +/* 2922 */ {(11<<2)|2,{49,53,0}}, +/* 2923 */ {(11<<2)|2,{49,53,0}}, +/* 2924 */ {(11<<2)|2,{49,53,0}}, +/* 2925 */ {(11<<2)|2,{49,53,0}}, +/* 2926 */ {(11<<2)|2,{49,53,0}}, +/* 2927 */ {(11<<2)|2,{49,53,0}}, +/* 2928 */ {(11<<2)|2,{49,53,0}}, +/* 2929 */ {(11<<2)|2,{49,53,0}}, +/* 2930 */ {(11<<2)|2,{49,53,0}}, +/* 2931 */ {(11<<2)|2,{49,53,0}}, +/* 2932 */ {(11<<2)|2,{49,53,0}}, +/* 2933 */ {(11<<2)|2,{49,53,0}}, +/* 2934 */ {(11<<2)|2,{49,53,0}}, +/* 2935 */ {(11<<2)|2,{49,53,0}}, +/* 2936 */ {(11<<2)|2,{49,53,0}}, +/* 2937 */ {(11<<2)|2,{49,53,0}}, +/* 2938 */ {(11<<2)|2,{49,53,0}}, +/* 2939 */ {(11<<2)|2,{49,53,0}}, +/* 2940 */ {(11<<2)|2,{49,53,0}}, +/* 2941 */ {(11<<2)|2,{49,53,0}}, +/* 2942 */ {(11<<2)|2,{49,53,0}}, +/* 2943 */ {(11<<2)|2,{49,53,0}}, +/* 2944 */ {(16<<2)|3,{49,54,48}}, +/* 2945 */ {(16<<2)|3,{49,54,49}}, +/* 2946 */ {(16<<2)|3,{49,54,50}}, +/* 2947 */ {(16<<2)|3,{49,54,97}}, +/* 2948 */ {(16<<2)|3,{49,54,99}}, +/* 2949 */ {(16<<2)|3,{49,54,101}}, +/* 2950 */ {(16<<2)|3,{49,54,105}}, +/* 2951 */ {(16<<2)|3,{49,54,111}}, +/* 2952 */ {(16<<2)|3,{49,54,115}}, +/* 2953 */ {(16<<2)|3,{49,54,116}}, +/* 2954 */ {(11<<2)|2,{49,54,0}}, +/* 2955 */ {(11<<2)|2,{49,54,0}}, +/* 2956 */ {(11<<2)|2,{49,54,0}}, +/* 2957 */ {(11<<2)|2,{49,54,0}}, +/* 2958 */ {(11<<2)|2,{49,54,0}}, +/* 2959 */ {(11<<2)|2,{49,54,0}}, +/* 2960 */ {(11<<2)|2,{49,54,0}}, +/* 2961 */ {(11<<2)|2,{49,54,0}}, +/* 2962 */ {(11<<2)|2,{49,54,0}}, +/* 2963 */ {(11<<2)|2,{49,54,0}}, +/* 2964 */ {(11<<2)|2,{49,54,0}}, +/* 2965 */ {(11<<2)|2,{49,54,0}}, +/* 2966 */ {(11<<2)|2,{49,54,0}}, +/* 2967 */ {(11<<2)|2,{49,54,0}}, +/* 2968 */ {(11<<2)|2,{49,54,0}}, +/* 2969 */ {(11<<2)|2,{49,54,0}}, +/* 2970 */ {(11<<2)|2,{49,54,0}}, +/* 2971 */ {(11<<2)|2,{49,54,0}}, +/* 2972 */ {(11<<2)|2,{49,54,0}}, +/* 2973 */ {(11<<2)|2,{49,54,0}}, +/* 2974 */ {(11<<2)|2,{49,54,0}}, +/* 2975 */ {(11<<2)|2,{49,54,0}}, +/* 2976 */ {(16<<2)|3,{49,55,48}}, +/* 2977 */ {(16<<2)|3,{49,55,49}}, +/* 2978 */ {(16<<2)|3,{49,55,50}}, +/* 2979 */ {(16<<2)|3,{49,55,97}}, +/* 2980 */ {(16<<2)|3,{49,55,99}}, +/* 2981 */ {(16<<2)|3,{49,55,101}}, +/* 2982 */ {(16<<2)|3,{49,55,105}}, +/* 2983 */ {(16<<2)|3,{49,55,111}}, +/* 2984 */ {(16<<2)|3,{49,55,115}}, +/* 2985 */ {(16<<2)|3,{49,55,116}}, +/* 2986 */ {(11<<2)|2,{49,55,0}}, +/* 2987 */ {(11<<2)|2,{49,55,0}}, +/* 2988 */ {(11<<2)|2,{49,55,0}}, +/* 2989 */ {(11<<2)|2,{49,55,0}}, +/* 2990 */ {(11<<2)|2,{49,55,0}}, +/* 2991 */ {(11<<2)|2,{49,55,0}}, +/* 2992 */ {(11<<2)|2,{49,55,0}}, +/* 2993 */ {(11<<2)|2,{49,55,0}}, +/* 2994 */ {(11<<2)|2,{49,55,0}}, +/* 2995 */ {(11<<2)|2,{49,55,0}}, +/* 2996 */ {(11<<2)|2,{49,55,0}}, +/* 2997 */ {(11<<2)|2,{49,55,0}}, +/* 2998 */ {(11<<2)|2,{49,55,0}}, +/* 2999 */ {(11<<2)|2,{49,55,0}}, +/* 3000 */ {(11<<2)|2,{49,55,0}}, +/* 3001 */ {(11<<2)|2,{49,55,0}}, +/* 3002 */ {(11<<2)|2,{49,55,0}}, +/* 3003 */ {(11<<2)|2,{49,55,0}}, +/* 3004 */ {(11<<2)|2,{49,55,0}}, +/* 3005 */ {(11<<2)|2,{49,55,0}}, +/* 3006 */ {(11<<2)|2,{49,55,0}}, +/* 3007 */ {(11<<2)|2,{49,55,0}}, +/* 3008 */ {(16<<2)|3,{49,56,48}}, +/* 3009 */ {(16<<2)|3,{49,56,49}}, +/* 3010 */ {(16<<2)|3,{49,56,50}}, +/* 3011 */ {(16<<2)|3,{49,56,97}}, +/* 3012 */ {(16<<2)|3,{49,56,99}}, +/* 3013 */ {(16<<2)|3,{49,56,101}}, +/* 3014 */ {(16<<2)|3,{49,56,105}}, +/* 3015 */ {(16<<2)|3,{49,56,111}}, +/* 3016 */ {(16<<2)|3,{49,56,115}}, +/* 3017 */ {(16<<2)|3,{49,56,116}}, +/* 3018 */ {(11<<2)|2,{49,56,0}}, +/* 3019 */ {(11<<2)|2,{49,56,0}}, +/* 3020 */ {(11<<2)|2,{49,56,0}}, +/* 3021 */ {(11<<2)|2,{49,56,0}}, +/* 3022 */ {(11<<2)|2,{49,56,0}}, +/* 3023 */ {(11<<2)|2,{49,56,0}}, +/* 3024 */ {(11<<2)|2,{49,56,0}}, +/* 3025 */ {(11<<2)|2,{49,56,0}}, +/* 3026 */ {(11<<2)|2,{49,56,0}}, +/* 3027 */ {(11<<2)|2,{49,56,0}}, +/* 3028 */ {(11<<2)|2,{49,56,0}}, +/* 3029 */ {(11<<2)|2,{49,56,0}}, +/* 3030 */ {(11<<2)|2,{49,56,0}}, +/* 3031 */ {(11<<2)|2,{49,56,0}}, +/* 3032 */ {(11<<2)|2,{49,56,0}}, +/* 3033 */ {(11<<2)|2,{49,56,0}}, +/* 3034 */ {(11<<2)|2,{49,56,0}}, +/* 3035 */ {(11<<2)|2,{49,56,0}}, +/* 3036 */ {(11<<2)|2,{49,56,0}}, +/* 3037 */ {(11<<2)|2,{49,56,0}}, +/* 3038 */ {(11<<2)|2,{49,56,0}}, +/* 3039 */ {(11<<2)|2,{49,56,0}}, +/* 3040 */ {(16<<2)|3,{49,57,48}}, +/* 3041 */ {(16<<2)|3,{49,57,49}}, +/* 3042 */ {(16<<2)|3,{49,57,50}}, +/* 3043 */ {(16<<2)|3,{49,57,97}}, +/* 3044 */ {(16<<2)|3,{49,57,99}}, +/* 3045 */ {(16<<2)|3,{49,57,101}}, +/* 3046 */ {(16<<2)|3,{49,57,105}}, +/* 3047 */ {(16<<2)|3,{49,57,111}}, +/* 3048 */ {(16<<2)|3,{49,57,115}}, +/* 3049 */ {(16<<2)|3,{49,57,116}}, +/* 3050 */ {(11<<2)|2,{49,57,0}}, +/* 3051 */ {(11<<2)|2,{49,57,0}}, +/* 3052 */ {(11<<2)|2,{49,57,0}}, +/* 3053 */ {(11<<2)|2,{49,57,0}}, +/* 3054 */ {(11<<2)|2,{49,57,0}}, +/* 3055 */ {(11<<2)|2,{49,57,0}}, +/* 3056 */ {(11<<2)|2,{49,57,0}}, +/* 3057 */ {(11<<2)|2,{49,57,0}}, +/* 3058 */ {(11<<2)|2,{49,57,0}}, +/* 3059 */ {(11<<2)|2,{49,57,0}}, +/* 3060 */ {(11<<2)|2,{49,57,0}}, +/* 3061 */ {(11<<2)|2,{49,57,0}}, +/* 3062 */ {(11<<2)|2,{49,57,0}}, +/* 3063 */ {(11<<2)|2,{49,57,0}}, +/* 3064 */ {(11<<2)|2,{49,57,0}}, +/* 3065 */ {(11<<2)|2,{49,57,0}}, +/* 3066 */ {(11<<2)|2,{49,57,0}}, +/* 3067 */ {(11<<2)|2,{49,57,0}}, +/* 3068 */ {(11<<2)|2,{49,57,0}}, +/* 3069 */ {(11<<2)|2,{49,57,0}}, +/* 3070 */ {(11<<2)|2,{49,57,0}}, +/* 3071 */ {(11<<2)|2,{49,57,0}}, +/* 3072 */ {(16<<2)|3,{49,61,48}}, +/* 3073 */ {(16<<2)|3,{49,61,49}}, +/* 3074 */ {(16<<2)|3,{49,61,50}}, +/* 3075 */ {(16<<2)|3,{49,61,97}}, +/* 3076 */ {(16<<2)|3,{49,61,99}}, +/* 3077 */ {(16<<2)|3,{49,61,101}}, +/* 3078 */ {(16<<2)|3,{49,61,105}}, +/* 3079 */ {(16<<2)|3,{49,61,111}}, +/* 3080 */ {(16<<2)|3,{49,61,115}}, +/* 3081 */ {(16<<2)|3,{49,61,116}}, +/* 3082 */ {(11<<2)|2,{49,61,0}}, +/* 3083 */ {(11<<2)|2,{49,61,0}}, +/* 3084 */ {(11<<2)|2,{49,61,0}}, +/* 3085 */ {(11<<2)|2,{49,61,0}}, +/* 3086 */ {(11<<2)|2,{49,61,0}}, +/* 3087 */ {(11<<2)|2,{49,61,0}}, +/* 3088 */ {(11<<2)|2,{49,61,0}}, +/* 3089 */ {(11<<2)|2,{49,61,0}}, +/* 3090 */ {(11<<2)|2,{49,61,0}}, +/* 3091 */ {(11<<2)|2,{49,61,0}}, +/* 3092 */ {(11<<2)|2,{49,61,0}}, +/* 3093 */ {(11<<2)|2,{49,61,0}}, +/* 3094 */ {(11<<2)|2,{49,61,0}}, +/* 3095 */ {(11<<2)|2,{49,61,0}}, +/* 3096 */ {(11<<2)|2,{49,61,0}}, +/* 3097 */ {(11<<2)|2,{49,61,0}}, +/* 3098 */ {(11<<2)|2,{49,61,0}}, +/* 3099 */ {(11<<2)|2,{49,61,0}}, +/* 3100 */ {(11<<2)|2,{49,61,0}}, +/* 3101 */ {(11<<2)|2,{49,61,0}}, +/* 3102 */ {(11<<2)|2,{49,61,0}}, +/* 3103 */ {(11<<2)|2,{49,61,0}}, +/* 3104 */ {(16<<2)|3,{49,65,48}}, +/* 3105 */ {(16<<2)|3,{49,65,49}}, +/* 3106 */ {(16<<2)|3,{49,65,50}}, +/* 3107 */ {(16<<2)|3,{49,65,97}}, +/* 3108 */ {(16<<2)|3,{49,65,99}}, +/* 3109 */ {(16<<2)|3,{49,65,101}}, +/* 3110 */ {(16<<2)|3,{49,65,105}}, +/* 3111 */ {(16<<2)|3,{49,65,111}}, +/* 3112 */ {(16<<2)|3,{49,65,115}}, +/* 3113 */ {(16<<2)|3,{49,65,116}}, +/* 3114 */ {(11<<2)|2,{49,65,0}}, +/* 3115 */ {(11<<2)|2,{49,65,0}}, +/* 3116 */ {(11<<2)|2,{49,65,0}}, +/* 3117 */ {(11<<2)|2,{49,65,0}}, +/* 3118 */ {(11<<2)|2,{49,65,0}}, +/* 3119 */ {(11<<2)|2,{49,65,0}}, +/* 3120 */ {(11<<2)|2,{49,65,0}}, +/* 3121 */ {(11<<2)|2,{49,65,0}}, +/* 3122 */ {(11<<2)|2,{49,65,0}}, +/* 3123 */ {(11<<2)|2,{49,65,0}}, +/* 3124 */ {(11<<2)|2,{49,65,0}}, +/* 3125 */ {(11<<2)|2,{49,65,0}}, +/* 3126 */ {(11<<2)|2,{49,65,0}}, +/* 3127 */ {(11<<2)|2,{49,65,0}}, +/* 3128 */ {(11<<2)|2,{49,65,0}}, +/* 3129 */ {(11<<2)|2,{49,65,0}}, +/* 3130 */ {(11<<2)|2,{49,65,0}}, +/* 3131 */ {(11<<2)|2,{49,65,0}}, +/* 3132 */ {(11<<2)|2,{49,65,0}}, +/* 3133 */ {(11<<2)|2,{49,65,0}}, +/* 3134 */ {(11<<2)|2,{49,65,0}}, +/* 3135 */ {(11<<2)|2,{49,65,0}}, +/* 3136 */ {(16<<2)|3,{49,95,48}}, +/* 3137 */ {(16<<2)|3,{49,95,49}}, +/* 3138 */ {(16<<2)|3,{49,95,50}}, +/* 3139 */ {(16<<2)|3,{49,95,97}}, +/* 3140 */ {(16<<2)|3,{49,95,99}}, +/* 3141 */ {(16<<2)|3,{49,95,101}}, +/* 3142 */ {(16<<2)|3,{49,95,105}}, +/* 3143 */ {(16<<2)|3,{49,95,111}}, +/* 3144 */ {(16<<2)|3,{49,95,115}}, +/* 3145 */ {(16<<2)|3,{49,95,116}}, +/* 3146 */ {(11<<2)|2,{49,95,0}}, +/* 3147 */ {(11<<2)|2,{49,95,0}}, +/* 3148 */ {(11<<2)|2,{49,95,0}}, +/* 3149 */ {(11<<2)|2,{49,95,0}}, +/* 3150 */ {(11<<2)|2,{49,95,0}}, +/* 3151 */ {(11<<2)|2,{49,95,0}}, +/* 3152 */ {(11<<2)|2,{49,95,0}}, +/* 3153 */ {(11<<2)|2,{49,95,0}}, +/* 3154 */ {(11<<2)|2,{49,95,0}}, +/* 3155 */ {(11<<2)|2,{49,95,0}}, +/* 3156 */ {(11<<2)|2,{49,95,0}}, +/* 3157 */ {(11<<2)|2,{49,95,0}}, +/* 3158 */ {(11<<2)|2,{49,95,0}}, +/* 3159 */ {(11<<2)|2,{49,95,0}}, +/* 3160 */ {(11<<2)|2,{49,95,0}}, +/* 3161 */ {(11<<2)|2,{49,95,0}}, +/* 3162 */ {(11<<2)|2,{49,95,0}}, +/* 3163 */ {(11<<2)|2,{49,95,0}}, +/* 3164 */ {(11<<2)|2,{49,95,0}}, +/* 3165 */ {(11<<2)|2,{49,95,0}}, +/* 3166 */ {(11<<2)|2,{49,95,0}}, +/* 3167 */ {(11<<2)|2,{49,95,0}}, +/* 3168 */ {(16<<2)|3,{49,98,48}}, +/* 3169 */ {(16<<2)|3,{49,98,49}}, +/* 3170 */ {(16<<2)|3,{49,98,50}}, +/* 3171 */ {(16<<2)|3,{49,98,97}}, +/* 3172 */ {(16<<2)|3,{49,98,99}}, +/* 3173 */ {(16<<2)|3,{49,98,101}}, +/* 3174 */ {(16<<2)|3,{49,98,105}}, +/* 3175 */ {(16<<2)|3,{49,98,111}}, +/* 3176 */ {(16<<2)|3,{49,98,115}}, +/* 3177 */ {(16<<2)|3,{49,98,116}}, +/* 3178 */ {(11<<2)|2,{49,98,0}}, +/* 3179 */ {(11<<2)|2,{49,98,0}}, +/* 3180 */ {(11<<2)|2,{49,98,0}}, +/* 3181 */ {(11<<2)|2,{49,98,0}}, +/* 3182 */ {(11<<2)|2,{49,98,0}}, +/* 3183 */ {(11<<2)|2,{49,98,0}}, +/* 3184 */ {(11<<2)|2,{49,98,0}}, +/* 3185 */ {(11<<2)|2,{49,98,0}}, +/* 3186 */ {(11<<2)|2,{49,98,0}}, +/* 3187 */ {(11<<2)|2,{49,98,0}}, +/* 3188 */ {(11<<2)|2,{49,98,0}}, +/* 3189 */ {(11<<2)|2,{49,98,0}}, +/* 3190 */ {(11<<2)|2,{49,98,0}}, +/* 3191 */ {(11<<2)|2,{49,98,0}}, +/* 3192 */ {(11<<2)|2,{49,98,0}}, +/* 3193 */ {(11<<2)|2,{49,98,0}}, +/* 3194 */ {(11<<2)|2,{49,98,0}}, +/* 3195 */ {(11<<2)|2,{49,98,0}}, +/* 3196 */ {(11<<2)|2,{49,98,0}}, +/* 3197 */ {(11<<2)|2,{49,98,0}}, +/* 3198 */ {(11<<2)|2,{49,98,0}}, +/* 3199 */ {(11<<2)|2,{49,98,0}}, +/* 3200 */ {(16<<2)|3,{49,100,48}}, +/* 3201 */ {(16<<2)|3,{49,100,49}}, +/* 3202 */ {(16<<2)|3,{49,100,50}}, +/* 3203 */ {(16<<2)|3,{49,100,97}}, +/* 3204 */ {(16<<2)|3,{49,100,99}}, +/* 3205 */ {(16<<2)|3,{49,100,101}}, +/* 3206 */ {(16<<2)|3,{49,100,105}}, +/* 3207 */ {(16<<2)|3,{49,100,111}}, +/* 3208 */ {(16<<2)|3,{49,100,115}}, +/* 3209 */ {(16<<2)|3,{49,100,116}}, +/* 3210 */ {(11<<2)|2,{49,100,0}}, +/* 3211 */ {(11<<2)|2,{49,100,0}}, +/* 3212 */ {(11<<2)|2,{49,100,0}}, +/* 3213 */ {(11<<2)|2,{49,100,0}}, +/* 3214 */ {(11<<2)|2,{49,100,0}}, +/* 3215 */ {(11<<2)|2,{49,100,0}}, +/* 3216 */ {(11<<2)|2,{49,100,0}}, +/* 3217 */ {(11<<2)|2,{49,100,0}}, +/* 3218 */ {(11<<2)|2,{49,100,0}}, +/* 3219 */ {(11<<2)|2,{49,100,0}}, +/* 3220 */ {(11<<2)|2,{49,100,0}}, +/* 3221 */ {(11<<2)|2,{49,100,0}}, +/* 3222 */ {(11<<2)|2,{49,100,0}}, +/* 3223 */ {(11<<2)|2,{49,100,0}}, +/* 3224 */ {(11<<2)|2,{49,100,0}}, +/* 3225 */ {(11<<2)|2,{49,100,0}}, +/* 3226 */ {(11<<2)|2,{49,100,0}}, +/* 3227 */ {(11<<2)|2,{49,100,0}}, +/* 3228 */ {(11<<2)|2,{49,100,0}}, +/* 3229 */ {(11<<2)|2,{49,100,0}}, +/* 3230 */ {(11<<2)|2,{49,100,0}}, +/* 3231 */ {(11<<2)|2,{49,100,0}}, +/* 3232 */ {(16<<2)|3,{49,102,48}}, +/* 3233 */ {(16<<2)|3,{49,102,49}}, +/* 3234 */ {(16<<2)|3,{49,102,50}}, +/* 3235 */ {(16<<2)|3,{49,102,97}}, +/* 3236 */ {(16<<2)|3,{49,102,99}}, +/* 3237 */ {(16<<2)|3,{49,102,101}}, +/* 3238 */ {(16<<2)|3,{49,102,105}}, +/* 3239 */ {(16<<2)|3,{49,102,111}}, +/* 3240 */ {(16<<2)|3,{49,102,115}}, +/* 3241 */ {(16<<2)|3,{49,102,116}}, +/* 3242 */ {(11<<2)|2,{49,102,0}}, +/* 3243 */ {(11<<2)|2,{49,102,0}}, +/* 3244 */ {(11<<2)|2,{49,102,0}}, +/* 3245 */ {(11<<2)|2,{49,102,0}}, +/* 3246 */ {(11<<2)|2,{49,102,0}}, +/* 3247 */ {(11<<2)|2,{49,102,0}}, +/* 3248 */ {(11<<2)|2,{49,102,0}}, +/* 3249 */ {(11<<2)|2,{49,102,0}}, +/* 3250 */ {(11<<2)|2,{49,102,0}}, +/* 3251 */ {(11<<2)|2,{49,102,0}}, +/* 3252 */ {(11<<2)|2,{49,102,0}}, +/* 3253 */ {(11<<2)|2,{49,102,0}}, +/* 3254 */ {(11<<2)|2,{49,102,0}}, +/* 3255 */ {(11<<2)|2,{49,102,0}}, +/* 3256 */ {(11<<2)|2,{49,102,0}}, +/* 3257 */ {(11<<2)|2,{49,102,0}}, +/* 3258 */ {(11<<2)|2,{49,102,0}}, +/* 3259 */ {(11<<2)|2,{49,102,0}}, +/* 3260 */ {(11<<2)|2,{49,102,0}}, +/* 3261 */ {(11<<2)|2,{49,102,0}}, +/* 3262 */ {(11<<2)|2,{49,102,0}}, +/* 3263 */ {(11<<2)|2,{49,102,0}}, +/* 3264 */ {(16<<2)|3,{49,103,48}}, +/* 3265 */ {(16<<2)|3,{49,103,49}}, +/* 3266 */ {(16<<2)|3,{49,103,50}}, +/* 3267 */ {(16<<2)|3,{49,103,97}}, +/* 3268 */ {(16<<2)|3,{49,103,99}}, +/* 3269 */ {(16<<2)|3,{49,103,101}}, +/* 3270 */ {(16<<2)|3,{49,103,105}}, +/* 3271 */ {(16<<2)|3,{49,103,111}}, +/* 3272 */ {(16<<2)|3,{49,103,115}}, +/* 3273 */ {(16<<2)|3,{49,103,116}}, +/* 3274 */ {(11<<2)|2,{49,103,0}}, +/* 3275 */ {(11<<2)|2,{49,103,0}}, +/* 3276 */ {(11<<2)|2,{49,103,0}}, +/* 3277 */ {(11<<2)|2,{49,103,0}}, +/* 3278 */ {(11<<2)|2,{49,103,0}}, +/* 3279 */ {(11<<2)|2,{49,103,0}}, +/* 3280 */ {(11<<2)|2,{49,103,0}}, +/* 3281 */ {(11<<2)|2,{49,103,0}}, +/* 3282 */ {(11<<2)|2,{49,103,0}}, +/* 3283 */ {(11<<2)|2,{49,103,0}}, +/* 3284 */ {(11<<2)|2,{49,103,0}}, +/* 3285 */ {(11<<2)|2,{49,103,0}}, +/* 3286 */ {(11<<2)|2,{49,103,0}}, +/* 3287 */ {(11<<2)|2,{49,103,0}}, +/* 3288 */ {(11<<2)|2,{49,103,0}}, +/* 3289 */ {(11<<2)|2,{49,103,0}}, +/* 3290 */ {(11<<2)|2,{49,103,0}}, +/* 3291 */ {(11<<2)|2,{49,103,0}}, +/* 3292 */ {(11<<2)|2,{49,103,0}}, +/* 3293 */ {(11<<2)|2,{49,103,0}}, +/* 3294 */ {(11<<2)|2,{49,103,0}}, +/* 3295 */ {(11<<2)|2,{49,103,0}}, +/* 3296 */ {(16<<2)|3,{49,104,48}}, +/* 3297 */ {(16<<2)|3,{49,104,49}}, +/* 3298 */ {(16<<2)|3,{49,104,50}}, +/* 3299 */ {(16<<2)|3,{49,104,97}}, +/* 3300 */ {(16<<2)|3,{49,104,99}}, +/* 3301 */ {(16<<2)|3,{49,104,101}}, +/* 3302 */ {(16<<2)|3,{49,104,105}}, +/* 3303 */ {(16<<2)|3,{49,104,111}}, +/* 3304 */ {(16<<2)|3,{49,104,115}}, +/* 3305 */ {(16<<2)|3,{49,104,116}}, +/* 3306 */ {(11<<2)|2,{49,104,0}}, +/* 3307 */ {(11<<2)|2,{49,104,0}}, +/* 3308 */ {(11<<2)|2,{49,104,0}}, +/* 3309 */ {(11<<2)|2,{49,104,0}}, +/* 3310 */ {(11<<2)|2,{49,104,0}}, +/* 3311 */ {(11<<2)|2,{49,104,0}}, +/* 3312 */ {(11<<2)|2,{49,104,0}}, +/* 3313 */ {(11<<2)|2,{49,104,0}}, +/* 3314 */ {(11<<2)|2,{49,104,0}}, +/* 3315 */ {(11<<2)|2,{49,104,0}}, +/* 3316 */ {(11<<2)|2,{49,104,0}}, +/* 3317 */ {(11<<2)|2,{49,104,0}}, +/* 3318 */ {(11<<2)|2,{49,104,0}}, +/* 3319 */ {(11<<2)|2,{49,104,0}}, +/* 3320 */ {(11<<2)|2,{49,104,0}}, +/* 3321 */ {(11<<2)|2,{49,104,0}}, +/* 3322 */ {(11<<2)|2,{49,104,0}}, +/* 3323 */ {(11<<2)|2,{49,104,0}}, +/* 3324 */ {(11<<2)|2,{49,104,0}}, +/* 3325 */ {(11<<2)|2,{49,104,0}}, +/* 3326 */ {(11<<2)|2,{49,104,0}}, +/* 3327 */ {(11<<2)|2,{49,104,0}}, +/* 3328 */ {(16<<2)|3,{49,108,48}}, +/* 3329 */ {(16<<2)|3,{49,108,49}}, +/* 3330 */ {(16<<2)|3,{49,108,50}}, +/* 3331 */ {(16<<2)|3,{49,108,97}}, +/* 3332 */ {(16<<2)|3,{49,108,99}}, +/* 3333 */ {(16<<2)|3,{49,108,101}}, +/* 3334 */ {(16<<2)|3,{49,108,105}}, +/* 3335 */ {(16<<2)|3,{49,108,111}}, +/* 3336 */ {(16<<2)|3,{49,108,115}}, +/* 3337 */ {(16<<2)|3,{49,108,116}}, +/* 3338 */ {(11<<2)|2,{49,108,0}}, +/* 3339 */ {(11<<2)|2,{49,108,0}}, +/* 3340 */ {(11<<2)|2,{49,108,0}}, +/* 3341 */ {(11<<2)|2,{49,108,0}}, +/* 3342 */ {(11<<2)|2,{49,108,0}}, +/* 3343 */ {(11<<2)|2,{49,108,0}}, +/* 3344 */ {(11<<2)|2,{49,108,0}}, +/* 3345 */ {(11<<2)|2,{49,108,0}}, +/* 3346 */ {(11<<2)|2,{49,108,0}}, +/* 3347 */ {(11<<2)|2,{49,108,0}}, +/* 3348 */ {(11<<2)|2,{49,108,0}}, +/* 3349 */ {(11<<2)|2,{49,108,0}}, +/* 3350 */ {(11<<2)|2,{49,108,0}}, +/* 3351 */ {(11<<2)|2,{49,108,0}}, +/* 3352 */ {(11<<2)|2,{49,108,0}}, +/* 3353 */ {(11<<2)|2,{49,108,0}}, +/* 3354 */ {(11<<2)|2,{49,108,0}}, +/* 3355 */ {(11<<2)|2,{49,108,0}}, +/* 3356 */ {(11<<2)|2,{49,108,0}}, +/* 3357 */ {(11<<2)|2,{49,108,0}}, +/* 3358 */ {(11<<2)|2,{49,108,0}}, +/* 3359 */ {(11<<2)|2,{49,108,0}}, +/* 3360 */ {(16<<2)|3,{49,109,48}}, +/* 3361 */ {(16<<2)|3,{49,109,49}}, +/* 3362 */ {(16<<2)|3,{49,109,50}}, +/* 3363 */ {(16<<2)|3,{49,109,97}}, +/* 3364 */ {(16<<2)|3,{49,109,99}}, +/* 3365 */ {(16<<2)|3,{49,109,101}}, +/* 3366 */ {(16<<2)|3,{49,109,105}}, +/* 3367 */ {(16<<2)|3,{49,109,111}}, +/* 3368 */ {(16<<2)|3,{49,109,115}}, +/* 3369 */ {(16<<2)|3,{49,109,116}}, +/* 3370 */ {(11<<2)|2,{49,109,0}}, +/* 3371 */ {(11<<2)|2,{49,109,0}}, +/* 3372 */ {(11<<2)|2,{49,109,0}}, +/* 3373 */ {(11<<2)|2,{49,109,0}}, +/* 3374 */ {(11<<2)|2,{49,109,0}}, +/* 3375 */ {(11<<2)|2,{49,109,0}}, +/* 3376 */ {(11<<2)|2,{49,109,0}}, +/* 3377 */ {(11<<2)|2,{49,109,0}}, +/* 3378 */ {(11<<2)|2,{49,109,0}}, +/* 3379 */ {(11<<2)|2,{49,109,0}}, +/* 3380 */ {(11<<2)|2,{49,109,0}}, +/* 3381 */ {(11<<2)|2,{49,109,0}}, +/* 3382 */ {(11<<2)|2,{49,109,0}}, +/* 3383 */ {(11<<2)|2,{49,109,0}}, +/* 3384 */ {(11<<2)|2,{49,109,0}}, +/* 3385 */ {(11<<2)|2,{49,109,0}}, +/* 3386 */ {(11<<2)|2,{49,109,0}}, +/* 3387 */ {(11<<2)|2,{49,109,0}}, +/* 3388 */ {(11<<2)|2,{49,109,0}}, +/* 3389 */ {(11<<2)|2,{49,109,0}}, +/* 3390 */ {(11<<2)|2,{49,109,0}}, +/* 3391 */ {(11<<2)|2,{49,109,0}}, +/* 3392 */ {(16<<2)|3,{49,110,48}}, +/* 3393 */ {(16<<2)|3,{49,110,49}}, +/* 3394 */ {(16<<2)|3,{49,110,50}}, +/* 3395 */ {(16<<2)|3,{49,110,97}}, +/* 3396 */ {(16<<2)|3,{49,110,99}}, +/* 3397 */ {(16<<2)|3,{49,110,101}}, +/* 3398 */ {(16<<2)|3,{49,110,105}}, +/* 3399 */ {(16<<2)|3,{49,110,111}}, +/* 3400 */ {(16<<2)|3,{49,110,115}}, +/* 3401 */ {(16<<2)|3,{49,110,116}}, +/* 3402 */ {(11<<2)|2,{49,110,0}}, +/* 3403 */ {(11<<2)|2,{49,110,0}}, +/* 3404 */ {(11<<2)|2,{49,110,0}}, +/* 3405 */ {(11<<2)|2,{49,110,0}}, +/* 3406 */ {(11<<2)|2,{49,110,0}}, +/* 3407 */ {(11<<2)|2,{49,110,0}}, +/* 3408 */ {(11<<2)|2,{49,110,0}}, +/* 3409 */ {(11<<2)|2,{49,110,0}}, +/* 3410 */ {(11<<2)|2,{49,110,0}}, +/* 3411 */ {(11<<2)|2,{49,110,0}}, +/* 3412 */ {(11<<2)|2,{49,110,0}}, +/* 3413 */ {(11<<2)|2,{49,110,0}}, +/* 3414 */ {(11<<2)|2,{49,110,0}}, +/* 3415 */ {(11<<2)|2,{49,110,0}}, +/* 3416 */ {(11<<2)|2,{49,110,0}}, +/* 3417 */ {(11<<2)|2,{49,110,0}}, +/* 3418 */ {(11<<2)|2,{49,110,0}}, +/* 3419 */ {(11<<2)|2,{49,110,0}}, +/* 3420 */ {(11<<2)|2,{49,110,0}}, +/* 3421 */ {(11<<2)|2,{49,110,0}}, +/* 3422 */ {(11<<2)|2,{49,110,0}}, +/* 3423 */ {(11<<2)|2,{49,110,0}}, +/* 3424 */ {(16<<2)|3,{49,112,48}}, +/* 3425 */ {(16<<2)|3,{49,112,49}}, +/* 3426 */ {(16<<2)|3,{49,112,50}}, +/* 3427 */ {(16<<2)|3,{49,112,97}}, +/* 3428 */ {(16<<2)|3,{49,112,99}}, +/* 3429 */ {(16<<2)|3,{49,112,101}}, +/* 3430 */ {(16<<2)|3,{49,112,105}}, +/* 3431 */ {(16<<2)|3,{49,112,111}}, +/* 3432 */ {(16<<2)|3,{49,112,115}}, +/* 3433 */ {(16<<2)|3,{49,112,116}}, +/* 3434 */ {(11<<2)|2,{49,112,0}}, +/* 3435 */ {(11<<2)|2,{49,112,0}}, +/* 3436 */ {(11<<2)|2,{49,112,0}}, +/* 3437 */ {(11<<2)|2,{49,112,0}}, +/* 3438 */ {(11<<2)|2,{49,112,0}}, +/* 3439 */ {(11<<2)|2,{49,112,0}}, +/* 3440 */ {(11<<2)|2,{49,112,0}}, +/* 3441 */ {(11<<2)|2,{49,112,0}}, +/* 3442 */ {(11<<2)|2,{49,112,0}}, +/* 3443 */ {(11<<2)|2,{49,112,0}}, +/* 3444 */ {(11<<2)|2,{49,112,0}}, +/* 3445 */ {(11<<2)|2,{49,112,0}}, +/* 3446 */ {(11<<2)|2,{49,112,0}}, +/* 3447 */ {(11<<2)|2,{49,112,0}}, +/* 3448 */ {(11<<2)|2,{49,112,0}}, +/* 3449 */ {(11<<2)|2,{49,112,0}}, +/* 3450 */ {(11<<2)|2,{49,112,0}}, +/* 3451 */ {(11<<2)|2,{49,112,0}}, +/* 3452 */ {(11<<2)|2,{49,112,0}}, +/* 3453 */ {(11<<2)|2,{49,112,0}}, +/* 3454 */ {(11<<2)|2,{49,112,0}}, +/* 3455 */ {(11<<2)|2,{49,112,0}}, +/* 3456 */ {(16<<2)|3,{49,114,48}}, +/* 3457 */ {(16<<2)|3,{49,114,49}}, +/* 3458 */ {(16<<2)|3,{49,114,50}}, +/* 3459 */ {(16<<2)|3,{49,114,97}}, +/* 3460 */ {(16<<2)|3,{49,114,99}}, +/* 3461 */ {(16<<2)|3,{49,114,101}}, +/* 3462 */ {(16<<2)|3,{49,114,105}}, +/* 3463 */ {(16<<2)|3,{49,114,111}}, +/* 3464 */ {(16<<2)|3,{49,114,115}}, +/* 3465 */ {(16<<2)|3,{49,114,116}}, +/* 3466 */ {(11<<2)|2,{49,114,0}}, +/* 3467 */ {(11<<2)|2,{49,114,0}}, +/* 3468 */ {(11<<2)|2,{49,114,0}}, +/* 3469 */ {(11<<2)|2,{49,114,0}}, +/* 3470 */ {(11<<2)|2,{49,114,0}}, +/* 3471 */ {(11<<2)|2,{49,114,0}}, +/* 3472 */ {(11<<2)|2,{49,114,0}}, +/* 3473 */ {(11<<2)|2,{49,114,0}}, +/* 3474 */ {(11<<2)|2,{49,114,0}}, +/* 3475 */ {(11<<2)|2,{49,114,0}}, +/* 3476 */ {(11<<2)|2,{49,114,0}}, +/* 3477 */ {(11<<2)|2,{49,114,0}}, +/* 3478 */ {(11<<2)|2,{49,114,0}}, +/* 3479 */ {(11<<2)|2,{49,114,0}}, +/* 3480 */ {(11<<2)|2,{49,114,0}}, +/* 3481 */ {(11<<2)|2,{49,114,0}}, +/* 3482 */ {(11<<2)|2,{49,114,0}}, +/* 3483 */ {(11<<2)|2,{49,114,0}}, +/* 3484 */ {(11<<2)|2,{49,114,0}}, +/* 3485 */ {(11<<2)|2,{49,114,0}}, +/* 3486 */ {(11<<2)|2,{49,114,0}}, +/* 3487 */ {(11<<2)|2,{49,114,0}}, +/* 3488 */ {(16<<2)|3,{49,117,48}}, +/* 3489 */ {(16<<2)|3,{49,117,49}}, +/* 3490 */ {(16<<2)|3,{49,117,50}}, +/* 3491 */ {(16<<2)|3,{49,117,97}}, +/* 3492 */ {(16<<2)|3,{49,117,99}}, +/* 3493 */ {(16<<2)|3,{49,117,101}}, +/* 3494 */ {(16<<2)|3,{49,117,105}}, +/* 3495 */ {(16<<2)|3,{49,117,111}}, +/* 3496 */ {(16<<2)|3,{49,117,115}}, +/* 3497 */ {(16<<2)|3,{49,117,116}}, +/* 3498 */ {(11<<2)|2,{49,117,0}}, +/* 3499 */ {(11<<2)|2,{49,117,0}}, +/* 3500 */ {(11<<2)|2,{49,117,0}}, +/* 3501 */ {(11<<2)|2,{49,117,0}}, +/* 3502 */ {(11<<2)|2,{49,117,0}}, +/* 3503 */ {(11<<2)|2,{49,117,0}}, +/* 3504 */ {(11<<2)|2,{49,117,0}}, +/* 3505 */ {(11<<2)|2,{49,117,0}}, +/* 3506 */ {(11<<2)|2,{49,117,0}}, +/* 3507 */ {(11<<2)|2,{49,117,0}}, +/* 3508 */ {(11<<2)|2,{49,117,0}}, +/* 3509 */ {(11<<2)|2,{49,117,0}}, +/* 3510 */ {(11<<2)|2,{49,117,0}}, +/* 3511 */ {(11<<2)|2,{49,117,0}}, +/* 3512 */ {(11<<2)|2,{49,117,0}}, +/* 3513 */ {(11<<2)|2,{49,117,0}}, +/* 3514 */ {(11<<2)|2,{49,117,0}}, +/* 3515 */ {(11<<2)|2,{49,117,0}}, +/* 3516 */ {(11<<2)|2,{49,117,0}}, +/* 3517 */ {(11<<2)|2,{49,117,0}}, +/* 3518 */ {(11<<2)|2,{49,117,0}}, +/* 3519 */ {(11<<2)|2,{49,117,0}}, +/* 3520 */ {(12<<2)|2,{49,58,0}}, +/* 3521 */ {(12<<2)|2,{49,58,0}}, +/* 3522 */ {(12<<2)|2,{49,58,0}}, +/* 3523 */ {(12<<2)|2,{49,58,0}}, +/* 3524 */ {(12<<2)|2,{49,58,0}}, +/* 3525 */ {(12<<2)|2,{49,58,0}}, +/* 3526 */ {(12<<2)|2,{49,58,0}}, +/* 3527 */ {(12<<2)|2,{49,58,0}}, +/* 3528 */ {(12<<2)|2,{49,58,0}}, +/* 3529 */ {(12<<2)|2,{49,58,0}}, +/* 3530 */ {(12<<2)|2,{49,58,0}}, +/* 3531 */ {(12<<2)|2,{49,58,0}}, +/* 3532 */ {(12<<2)|2,{49,58,0}}, +/* 3533 */ {(12<<2)|2,{49,58,0}}, +/* 3534 */ {(12<<2)|2,{49,58,0}}, +/* 3535 */ {(12<<2)|2,{49,58,0}}, +/* 3536 */ {(12<<2)|2,{49,66,0}}, +/* 3537 */ {(12<<2)|2,{49,66,0}}, +/* 3538 */ {(12<<2)|2,{49,66,0}}, +/* 3539 */ {(12<<2)|2,{49,66,0}}, +/* 3540 */ {(12<<2)|2,{49,66,0}}, +/* 3541 */ {(12<<2)|2,{49,66,0}}, +/* 3542 */ {(12<<2)|2,{49,66,0}}, +/* 3543 */ {(12<<2)|2,{49,66,0}}, +/* 3544 */ {(12<<2)|2,{49,66,0}}, +/* 3545 */ {(12<<2)|2,{49,66,0}}, +/* 3546 */ {(12<<2)|2,{49,66,0}}, +/* 3547 */ {(12<<2)|2,{49,66,0}}, +/* 3548 */ {(12<<2)|2,{49,66,0}}, +/* 3549 */ {(12<<2)|2,{49,66,0}}, +/* 3550 */ {(12<<2)|2,{49,66,0}}, +/* 3551 */ {(12<<2)|2,{49,66,0}}, +/* 3552 */ {(12<<2)|2,{49,67,0}}, +/* 3553 */ {(12<<2)|2,{49,67,0}}, +/* 3554 */ {(12<<2)|2,{49,67,0}}, +/* 3555 */ {(12<<2)|2,{49,67,0}}, +/* 3556 */ {(12<<2)|2,{49,67,0}}, +/* 3557 */ {(12<<2)|2,{49,67,0}}, +/* 3558 */ {(12<<2)|2,{49,67,0}}, +/* 3559 */ {(12<<2)|2,{49,67,0}}, +/* 3560 */ {(12<<2)|2,{49,67,0}}, +/* 3561 */ {(12<<2)|2,{49,67,0}}, +/* 3562 */ {(12<<2)|2,{49,67,0}}, +/* 3563 */ {(12<<2)|2,{49,67,0}}, +/* 3564 */ {(12<<2)|2,{49,67,0}}, +/* 3565 */ {(12<<2)|2,{49,67,0}}, +/* 3566 */ {(12<<2)|2,{49,67,0}}, +/* 3567 */ {(12<<2)|2,{49,67,0}}, +/* 3568 */ {(12<<2)|2,{49,68,0}}, +/* 3569 */ {(12<<2)|2,{49,68,0}}, +/* 3570 */ {(12<<2)|2,{49,68,0}}, +/* 3571 */ {(12<<2)|2,{49,68,0}}, +/* 3572 */ {(12<<2)|2,{49,68,0}}, +/* 3573 */ {(12<<2)|2,{49,68,0}}, +/* 3574 */ {(12<<2)|2,{49,68,0}}, +/* 3575 */ {(12<<2)|2,{49,68,0}}, +/* 3576 */ {(12<<2)|2,{49,68,0}}, +/* 3577 */ {(12<<2)|2,{49,68,0}}, +/* 3578 */ {(12<<2)|2,{49,68,0}}, +/* 3579 */ {(12<<2)|2,{49,68,0}}, +/* 3580 */ {(12<<2)|2,{49,68,0}}, +/* 3581 */ {(12<<2)|2,{49,68,0}}, +/* 3582 */ {(12<<2)|2,{49,68,0}}, +/* 3583 */ {(12<<2)|2,{49,68,0}}, +/* 3584 */ {(12<<2)|2,{49,69,0}}, +/* 3585 */ {(12<<2)|2,{49,69,0}}, +/* 3586 */ {(12<<2)|2,{49,69,0}}, +/* 3587 */ {(12<<2)|2,{49,69,0}}, +/* 3588 */ {(12<<2)|2,{49,69,0}}, +/* 3589 */ {(12<<2)|2,{49,69,0}}, +/* 3590 */ {(12<<2)|2,{49,69,0}}, +/* 3591 */ {(12<<2)|2,{49,69,0}}, +/* 3592 */ {(12<<2)|2,{49,69,0}}, +/* 3593 */ {(12<<2)|2,{49,69,0}}, +/* 3594 */ {(12<<2)|2,{49,69,0}}, +/* 3595 */ {(12<<2)|2,{49,69,0}}, +/* 3596 */ {(12<<2)|2,{49,69,0}}, +/* 3597 */ {(12<<2)|2,{49,69,0}}, +/* 3598 */ {(12<<2)|2,{49,69,0}}, +/* 3599 */ {(12<<2)|2,{49,69,0}}, +/* 3600 */ {(12<<2)|2,{49,70,0}}, +/* 3601 */ {(12<<2)|2,{49,70,0}}, +/* 3602 */ {(12<<2)|2,{49,70,0}}, +/* 3603 */ {(12<<2)|2,{49,70,0}}, +/* 3604 */ {(12<<2)|2,{49,70,0}}, +/* 3605 */ {(12<<2)|2,{49,70,0}}, +/* 3606 */ {(12<<2)|2,{49,70,0}}, +/* 3607 */ {(12<<2)|2,{49,70,0}}, +/* 3608 */ {(12<<2)|2,{49,70,0}}, +/* 3609 */ {(12<<2)|2,{49,70,0}}, +/* 3610 */ {(12<<2)|2,{49,70,0}}, +/* 3611 */ {(12<<2)|2,{49,70,0}}, +/* 3612 */ {(12<<2)|2,{49,70,0}}, +/* 3613 */ {(12<<2)|2,{49,70,0}}, +/* 3614 */ {(12<<2)|2,{49,70,0}}, +/* 3615 */ {(12<<2)|2,{49,70,0}}, +/* 3616 */ {(12<<2)|2,{49,71,0}}, +/* 3617 */ {(12<<2)|2,{49,71,0}}, +/* 3618 */ {(12<<2)|2,{49,71,0}}, +/* 3619 */ {(12<<2)|2,{49,71,0}}, +/* 3620 */ {(12<<2)|2,{49,71,0}}, +/* 3621 */ {(12<<2)|2,{49,71,0}}, +/* 3622 */ {(12<<2)|2,{49,71,0}}, +/* 3623 */ {(12<<2)|2,{49,71,0}}, +/* 3624 */ {(12<<2)|2,{49,71,0}}, +/* 3625 */ {(12<<2)|2,{49,71,0}}, +/* 3626 */ {(12<<2)|2,{49,71,0}}, +/* 3627 */ {(12<<2)|2,{49,71,0}}, +/* 3628 */ {(12<<2)|2,{49,71,0}}, +/* 3629 */ {(12<<2)|2,{49,71,0}}, +/* 3630 */ {(12<<2)|2,{49,71,0}}, +/* 3631 */ {(12<<2)|2,{49,71,0}}, +/* 3632 */ {(12<<2)|2,{49,72,0}}, +/* 3633 */ {(12<<2)|2,{49,72,0}}, +/* 3634 */ {(12<<2)|2,{49,72,0}}, +/* 3635 */ {(12<<2)|2,{49,72,0}}, +/* 3636 */ {(12<<2)|2,{49,72,0}}, +/* 3637 */ {(12<<2)|2,{49,72,0}}, +/* 3638 */ {(12<<2)|2,{49,72,0}}, +/* 3639 */ {(12<<2)|2,{49,72,0}}, +/* 3640 */ {(12<<2)|2,{49,72,0}}, +/* 3641 */ {(12<<2)|2,{49,72,0}}, +/* 3642 */ {(12<<2)|2,{49,72,0}}, +/* 3643 */ {(12<<2)|2,{49,72,0}}, +/* 3644 */ {(12<<2)|2,{49,72,0}}, +/* 3645 */ {(12<<2)|2,{49,72,0}}, +/* 3646 */ {(12<<2)|2,{49,72,0}}, +/* 3647 */ {(12<<2)|2,{49,72,0}}, +/* 3648 */ {(12<<2)|2,{49,73,0}}, +/* 3649 */ {(12<<2)|2,{49,73,0}}, +/* 3650 */ {(12<<2)|2,{49,73,0}}, +/* 3651 */ {(12<<2)|2,{49,73,0}}, +/* 3652 */ {(12<<2)|2,{49,73,0}}, +/* 3653 */ {(12<<2)|2,{49,73,0}}, +/* 3654 */ {(12<<2)|2,{49,73,0}}, +/* 3655 */ {(12<<2)|2,{49,73,0}}, +/* 3656 */ {(12<<2)|2,{49,73,0}}, +/* 3657 */ {(12<<2)|2,{49,73,0}}, +/* 3658 */ {(12<<2)|2,{49,73,0}}, +/* 3659 */ {(12<<2)|2,{49,73,0}}, +/* 3660 */ {(12<<2)|2,{49,73,0}}, +/* 3661 */ {(12<<2)|2,{49,73,0}}, +/* 3662 */ {(12<<2)|2,{49,73,0}}, +/* 3663 */ {(12<<2)|2,{49,73,0}}, +/* 3664 */ {(12<<2)|2,{49,74,0}}, +/* 3665 */ {(12<<2)|2,{49,74,0}}, +/* 3666 */ {(12<<2)|2,{49,74,0}}, +/* 3667 */ {(12<<2)|2,{49,74,0}}, +/* 3668 */ {(12<<2)|2,{49,74,0}}, +/* 3669 */ {(12<<2)|2,{49,74,0}}, +/* 3670 */ {(12<<2)|2,{49,74,0}}, +/* 3671 */ {(12<<2)|2,{49,74,0}}, +/* 3672 */ {(12<<2)|2,{49,74,0}}, +/* 3673 */ {(12<<2)|2,{49,74,0}}, +/* 3674 */ {(12<<2)|2,{49,74,0}}, +/* 3675 */ {(12<<2)|2,{49,74,0}}, +/* 3676 */ {(12<<2)|2,{49,74,0}}, +/* 3677 */ {(12<<2)|2,{49,74,0}}, +/* 3678 */ {(12<<2)|2,{49,74,0}}, +/* 3679 */ {(12<<2)|2,{49,74,0}}, +/* 3680 */ {(12<<2)|2,{49,75,0}}, +/* 3681 */ {(12<<2)|2,{49,75,0}}, +/* 3682 */ {(12<<2)|2,{49,75,0}}, +/* 3683 */ {(12<<2)|2,{49,75,0}}, +/* 3684 */ {(12<<2)|2,{49,75,0}}, +/* 3685 */ {(12<<2)|2,{49,75,0}}, +/* 3686 */ {(12<<2)|2,{49,75,0}}, +/* 3687 */ {(12<<2)|2,{49,75,0}}, +/* 3688 */ {(12<<2)|2,{49,75,0}}, +/* 3689 */ {(12<<2)|2,{49,75,0}}, +/* 3690 */ {(12<<2)|2,{49,75,0}}, +/* 3691 */ {(12<<2)|2,{49,75,0}}, +/* 3692 */ {(12<<2)|2,{49,75,0}}, +/* 3693 */ {(12<<2)|2,{49,75,0}}, +/* 3694 */ {(12<<2)|2,{49,75,0}}, +/* 3695 */ {(12<<2)|2,{49,75,0}}, +/* 3696 */ {(12<<2)|2,{49,76,0}}, +/* 3697 */ {(12<<2)|2,{49,76,0}}, +/* 3698 */ {(12<<2)|2,{49,76,0}}, +/* 3699 */ {(12<<2)|2,{49,76,0}}, +/* 3700 */ {(12<<2)|2,{49,76,0}}, +/* 3701 */ {(12<<2)|2,{49,76,0}}, +/* 3702 */ {(12<<2)|2,{49,76,0}}, +/* 3703 */ {(12<<2)|2,{49,76,0}}, +/* 3704 */ {(12<<2)|2,{49,76,0}}, +/* 3705 */ {(12<<2)|2,{49,76,0}}, +/* 3706 */ {(12<<2)|2,{49,76,0}}, +/* 3707 */ {(12<<2)|2,{49,76,0}}, +/* 3708 */ {(12<<2)|2,{49,76,0}}, +/* 3709 */ {(12<<2)|2,{49,76,0}}, +/* 3710 */ {(12<<2)|2,{49,76,0}}, +/* 3711 */ {(12<<2)|2,{49,76,0}}, +/* 3712 */ {(12<<2)|2,{49,77,0}}, +/* 3713 */ {(12<<2)|2,{49,77,0}}, +/* 3714 */ {(12<<2)|2,{49,77,0}}, +/* 3715 */ {(12<<2)|2,{49,77,0}}, +/* 3716 */ {(12<<2)|2,{49,77,0}}, +/* 3717 */ {(12<<2)|2,{49,77,0}}, +/* 3718 */ {(12<<2)|2,{49,77,0}}, +/* 3719 */ {(12<<2)|2,{49,77,0}}, +/* 3720 */ {(12<<2)|2,{49,77,0}}, +/* 3721 */ {(12<<2)|2,{49,77,0}}, +/* 3722 */ {(12<<2)|2,{49,77,0}}, +/* 3723 */ {(12<<2)|2,{49,77,0}}, +/* 3724 */ {(12<<2)|2,{49,77,0}}, +/* 3725 */ {(12<<2)|2,{49,77,0}}, +/* 3726 */ {(12<<2)|2,{49,77,0}}, +/* 3727 */ {(12<<2)|2,{49,77,0}}, +/* 3728 */ {(12<<2)|2,{49,78,0}}, +/* 3729 */ {(12<<2)|2,{49,78,0}}, +/* 3730 */ {(12<<2)|2,{49,78,0}}, +/* 3731 */ {(12<<2)|2,{49,78,0}}, +/* 3732 */ {(12<<2)|2,{49,78,0}}, +/* 3733 */ {(12<<2)|2,{49,78,0}}, +/* 3734 */ {(12<<2)|2,{49,78,0}}, +/* 3735 */ {(12<<2)|2,{49,78,0}}, +/* 3736 */ {(12<<2)|2,{49,78,0}}, +/* 3737 */ {(12<<2)|2,{49,78,0}}, +/* 3738 */ {(12<<2)|2,{49,78,0}}, +/* 3739 */ {(12<<2)|2,{49,78,0}}, +/* 3740 */ {(12<<2)|2,{49,78,0}}, +/* 3741 */ {(12<<2)|2,{49,78,0}}, +/* 3742 */ {(12<<2)|2,{49,78,0}}, +/* 3743 */ {(12<<2)|2,{49,78,0}}, +/* 3744 */ {(12<<2)|2,{49,79,0}}, +/* 3745 */ {(12<<2)|2,{49,79,0}}, +/* 3746 */ {(12<<2)|2,{49,79,0}}, +/* 3747 */ {(12<<2)|2,{49,79,0}}, +/* 3748 */ {(12<<2)|2,{49,79,0}}, +/* 3749 */ {(12<<2)|2,{49,79,0}}, +/* 3750 */ {(12<<2)|2,{49,79,0}}, +/* 3751 */ {(12<<2)|2,{49,79,0}}, +/* 3752 */ {(12<<2)|2,{49,79,0}}, +/* 3753 */ {(12<<2)|2,{49,79,0}}, +/* 3754 */ {(12<<2)|2,{49,79,0}}, +/* 3755 */ {(12<<2)|2,{49,79,0}}, +/* 3756 */ {(12<<2)|2,{49,79,0}}, +/* 3757 */ {(12<<2)|2,{49,79,0}}, +/* 3758 */ {(12<<2)|2,{49,79,0}}, +/* 3759 */ {(12<<2)|2,{49,79,0}}, +/* 3760 */ {(12<<2)|2,{49,80,0}}, +/* 3761 */ {(12<<2)|2,{49,80,0}}, +/* 3762 */ {(12<<2)|2,{49,80,0}}, +/* 3763 */ {(12<<2)|2,{49,80,0}}, +/* 3764 */ {(12<<2)|2,{49,80,0}}, +/* 3765 */ {(12<<2)|2,{49,80,0}}, +/* 3766 */ {(12<<2)|2,{49,80,0}}, +/* 3767 */ {(12<<2)|2,{49,80,0}}, +/* 3768 */ {(12<<2)|2,{49,80,0}}, +/* 3769 */ {(12<<2)|2,{49,80,0}}, +/* 3770 */ {(12<<2)|2,{49,80,0}}, +/* 3771 */ {(12<<2)|2,{49,80,0}}, +/* 3772 */ {(12<<2)|2,{49,80,0}}, +/* 3773 */ {(12<<2)|2,{49,80,0}}, +/* 3774 */ {(12<<2)|2,{49,80,0}}, +/* 3775 */ {(12<<2)|2,{49,80,0}}, +/* 3776 */ {(12<<2)|2,{49,81,0}}, +/* 3777 */ {(12<<2)|2,{49,81,0}}, +/* 3778 */ {(12<<2)|2,{49,81,0}}, +/* 3779 */ {(12<<2)|2,{49,81,0}}, +/* 3780 */ {(12<<2)|2,{49,81,0}}, +/* 3781 */ {(12<<2)|2,{49,81,0}}, +/* 3782 */ {(12<<2)|2,{49,81,0}}, +/* 3783 */ {(12<<2)|2,{49,81,0}}, +/* 3784 */ {(12<<2)|2,{49,81,0}}, +/* 3785 */ {(12<<2)|2,{49,81,0}}, +/* 3786 */ {(12<<2)|2,{49,81,0}}, +/* 3787 */ {(12<<2)|2,{49,81,0}}, +/* 3788 */ {(12<<2)|2,{49,81,0}}, +/* 3789 */ {(12<<2)|2,{49,81,0}}, +/* 3790 */ {(12<<2)|2,{49,81,0}}, +/* 3791 */ {(12<<2)|2,{49,81,0}}, +/* 3792 */ {(12<<2)|2,{49,82,0}}, +/* 3793 */ {(12<<2)|2,{49,82,0}}, +/* 3794 */ {(12<<2)|2,{49,82,0}}, +/* 3795 */ {(12<<2)|2,{49,82,0}}, +/* 3796 */ {(12<<2)|2,{49,82,0}}, +/* 3797 */ {(12<<2)|2,{49,82,0}}, +/* 3798 */ {(12<<2)|2,{49,82,0}}, +/* 3799 */ {(12<<2)|2,{49,82,0}}, +/* 3800 */ {(12<<2)|2,{49,82,0}}, +/* 3801 */ {(12<<2)|2,{49,82,0}}, +/* 3802 */ {(12<<2)|2,{49,82,0}}, +/* 3803 */ {(12<<2)|2,{49,82,0}}, +/* 3804 */ {(12<<2)|2,{49,82,0}}, +/* 3805 */ {(12<<2)|2,{49,82,0}}, +/* 3806 */ {(12<<2)|2,{49,82,0}}, +/* 3807 */ {(12<<2)|2,{49,82,0}}, +/* 3808 */ {(12<<2)|2,{49,83,0}}, +/* 3809 */ {(12<<2)|2,{49,83,0}}, +/* 3810 */ {(12<<2)|2,{49,83,0}}, +/* 3811 */ {(12<<2)|2,{49,83,0}}, +/* 3812 */ {(12<<2)|2,{49,83,0}}, +/* 3813 */ {(12<<2)|2,{49,83,0}}, +/* 3814 */ {(12<<2)|2,{49,83,0}}, +/* 3815 */ {(12<<2)|2,{49,83,0}}, +/* 3816 */ {(12<<2)|2,{49,83,0}}, +/* 3817 */ {(12<<2)|2,{49,83,0}}, +/* 3818 */ {(12<<2)|2,{49,83,0}}, +/* 3819 */ {(12<<2)|2,{49,83,0}}, +/* 3820 */ {(12<<2)|2,{49,83,0}}, +/* 3821 */ {(12<<2)|2,{49,83,0}}, +/* 3822 */ {(12<<2)|2,{49,83,0}}, +/* 3823 */ {(12<<2)|2,{49,83,0}}, +/* 3824 */ {(12<<2)|2,{49,84,0}}, +/* 3825 */ {(12<<2)|2,{49,84,0}}, +/* 3826 */ {(12<<2)|2,{49,84,0}}, +/* 3827 */ {(12<<2)|2,{49,84,0}}, +/* 3828 */ {(12<<2)|2,{49,84,0}}, +/* 3829 */ {(12<<2)|2,{49,84,0}}, +/* 3830 */ {(12<<2)|2,{49,84,0}}, +/* 3831 */ {(12<<2)|2,{49,84,0}}, +/* 3832 */ {(12<<2)|2,{49,84,0}}, +/* 3833 */ {(12<<2)|2,{49,84,0}}, +/* 3834 */ {(12<<2)|2,{49,84,0}}, +/* 3835 */ {(12<<2)|2,{49,84,0}}, +/* 3836 */ {(12<<2)|2,{49,84,0}}, +/* 3837 */ {(12<<2)|2,{49,84,0}}, +/* 3838 */ {(12<<2)|2,{49,84,0}}, +/* 3839 */ {(12<<2)|2,{49,84,0}}, +/* 3840 */ {(12<<2)|2,{49,85,0}}, +/* 3841 */ {(12<<2)|2,{49,85,0}}, +/* 3842 */ {(12<<2)|2,{49,85,0}}, +/* 3843 */ {(12<<2)|2,{49,85,0}}, +/* 3844 */ {(12<<2)|2,{49,85,0}}, +/* 3845 */ {(12<<2)|2,{49,85,0}}, +/* 3846 */ {(12<<2)|2,{49,85,0}}, +/* 3847 */ {(12<<2)|2,{49,85,0}}, +/* 3848 */ {(12<<2)|2,{49,85,0}}, +/* 3849 */ {(12<<2)|2,{49,85,0}}, +/* 3850 */ {(12<<2)|2,{49,85,0}}, +/* 3851 */ {(12<<2)|2,{49,85,0}}, +/* 3852 */ {(12<<2)|2,{49,85,0}}, +/* 3853 */ {(12<<2)|2,{49,85,0}}, +/* 3854 */ {(12<<2)|2,{49,85,0}}, +/* 3855 */ {(12<<2)|2,{49,85,0}}, +/* 3856 */ {(12<<2)|2,{49,86,0}}, +/* 3857 */ {(12<<2)|2,{49,86,0}}, +/* 3858 */ {(12<<2)|2,{49,86,0}}, +/* 3859 */ {(12<<2)|2,{49,86,0}}, +/* 3860 */ {(12<<2)|2,{49,86,0}}, +/* 3861 */ {(12<<2)|2,{49,86,0}}, +/* 3862 */ {(12<<2)|2,{49,86,0}}, +/* 3863 */ {(12<<2)|2,{49,86,0}}, +/* 3864 */ {(12<<2)|2,{49,86,0}}, +/* 3865 */ {(12<<2)|2,{49,86,0}}, +/* 3866 */ {(12<<2)|2,{49,86,0}}, +/* 3867 */ {(12<<2)|2,{49,86,0}}, +/* 3868 */ {(12<<2)|2,{49,86,0}}, +/* 3869 */ {(12<<2)|2,{49,86,0}}, +/* 3870 */ {(12<<2)|2,{49,86,0}}, +/* 3871 */ {(12<<2)|2,{49,86,0}}, +/* 3872 */ {(12<<2)|2,{49,87,0}}, +/* 3873 */ {(12<<2)|2,{49,87,0}}, +/* 3874 */ {(12<<2)|2,{49,87,0}}, +/* 3875 */ {(12<<2)|2,{49,87,0}}, +/* 3876 */ {(12<<2)|2,{49,87,0}}, +/* 3877 */ {(12<<2)|2,{49,87,0}}, +/* 3878 */ {(12<<2)|2,{49,87,0}}, +/* 3879 */ {(12<<2)|2,{49,87,0}}, +/* 3880 */ {(12<<2)|2,{49,87,0}}, +/* 3881 */ {(12<<2)|2,{49,87,0}}, +/* 3882 */ {(12<<2)|2,{49,87,0}}, +/* 3883 */ {(12<<2)|2,{49,87,0}}, +/* 3884 */ {(12<<2)|2,{49,87,0}}, +/* 3885 */ {(12<<2)|2,{49,87,0}}, +/* 3886 */ {(12<<2)|2,{49,87,0}}, +/* 3887 */ {(12<<2)|2,{49,87,0}}, +/* 3888 */ {(12<<2)|2,{49,89,0}}, +/* 3889 */ {(12<<2)|2,{49,89,0}}, +/* 3890 */ {(12<<2)|2,{49,89,0}}, +/* 3891 */ {(12<<2)|2,{49,89,0}}, +/* 3892 */ {(12<<2)|2,{49,89,0}}, +/* 3893 */ {(12<<2)|2,{49,89,0}}, +/* 3894 */ {(12<<2)|2,{49,89,0}}, +/* 3895 */ {(12<<2)|2,{49,89,0}}, +/* 3896 */ {(12<<2)|2,{49,89,0}}, +/* 3897 */ {(12<<2)|2,{49,89,0}}, +/* 3898 */ {(12<<2)|2,{49,89,0}}, +/* 3899 */ {(12<<2)|2,{49,89,0}}, +/* 3900 */ {(12<<2)|2,{49,89,0}}, +/* 3901 */ {(12<<2)|2,{49,89,0}}, +/* 3902 */ {(12<<2)|2,{49,89,0}}, +/* 3903 */ {(12<<2)|2,{49,89,0}}, +/* 3904 */ {(12<<2)|2,{49,106,0}}, +/* 3905 */ {(12<<2)|2,{49,106,0}}, +/* 3906 */ {(12<<2)|2,{49,106,0}}, +/* 3907 */ {(12<<2)|2,{49,106,0}}, +/* 3908 */ {(12<<2)|2,{49,106,0}}, +/* 3909 */ {(12<<2)|2,{49,106,0}}, +/* 3910 */ {(12<<2)|2,{49,106,0}}, +/* 3911 */ {(12<<2)|2,{49,106,0}}, +/* 3912 */ {(12<<2)|2,{49,106,0}}, +/* 3913 */ {(12<<2)|2,{49,106,0}}, +/* 3914 */ {(12<<2)|2,{49,106,0}}, +/* 3915 */ {(12<<2)|2,{49,106,0}}, +/* 3916 */ {(12<<2)|2,{49,106,0}}, +/* 3917 */ {(12<<2)|2,{49,106,0}}, +/* 3918 */ {(12<<2)|2,{49,106,0}}, +/* 3919 */ {(12<<2)|2,{49,106,0}}, +/* 3920 */ {(12<<2)|2,{49,107,0}}, +/* 3921 */ {(12<<2)|2,{49,107,0}}, +/* 3922 */ {(12<<2)|2,{49,107,0}}, +/* 3923 */ {(12<<2)|2,{49,107,0}}, +/* 3924 */ {(12<<2)|2,{49,107,0}}, +/* 3925 */ {(12<<2)|2,{49,107,0}}, +/* 3926 */ {(12<<2)|2,{49,107,0}}, +/* 3927 */ {(12<<2)|2,{49,107,0}}, +/* 3928 */ {(12<<2)|2,{49,107,0}}, +/* 3929 */ {(12<<2)|2,{49,107,0}}, +/* 3930 */ {(12<<2)|2,{49,107,0}}, +/* 3931 */ {(12<<2)|2,{49,107,0}}, +/* 3932 */ {(12<<2)|2,{49,107,0}}, +/* 3933 */ {(12<<2)|2,{49,107,0}}, +/* 3934 */ {(12<<2)|2,{49,107,0}}, +/* 3935 */ {(12<<2)|2,{49,107,0}}, +/* 3936 */ {(12<<2)|2,{49,113,0}}, +/* 3937 */ {(12<<2)|2,{49,113,0}}, +/* 3938 */ {(12<<2)|2,{49,113,0}}, +/* 3939 */ {(12<<2)|2,{49,113,0}}, +/* 3940 */ {(12<<2)|2,{49,113,0}}, +/* 3941 */ {(12<<2)|2,{49,113,0}}, +/* 3942 */ {(12<<2)|2,{49,113,0}}, +/* 3943 */ {(12<<2)|2,{49,113,0}}, +/* 3944 */ {(12<<2)|2,{49,113,0}}, +/* 3945 */ {(12<<2)|2,{49,113,0}}, +/* 3946 */ {(12<<2)|2,{49,113,0}}, +/* 3947 */ {(12<<2)|2,{49,113,0}}, +/* 3948 */ {(12<<2)|2,{49,113,0}}, +/* 3949 */ {(12<<2)|2,{49,113,0}}, +/* 3950 */ {(12<<2)|2,{49,113,0}}, +/* 3951 */ {(12<<2)|2,{49,113,0}}, +/* 3952 */ {(12<<2)|2,{49,118,0}}, +/* 3953 */ {(12<<2)|2,{49,118,0}}, +/* 3954 */ {(12<<2)|2,{49,118,0}}, +/* 3955 */ {(12<<2)|2,{49,118,0}}, +/* 3956 */ {(12<<2)|2,{49,118,0}}, +/* 3957 */ {(12<<2)|2,{49,118,0}}, +/* 3958 */ {(12<<2)|2,{49,118,0}}, +/* 3959 */ {(12<<2)|2,{49,118,0}}, +/* 3960 */ {(12<<2)|2,{49,118,0}}, +/* 3961 */ {(12<<2)|2,{49,118,0}}, +/* 3962 */ {(12<<2)|2,{49,118,0}}, +/* 3963 */ {(12<<2)|2,{49,118,0}}, +/* 3964 */ {(12<<2)|2,{49,118,0}}, +/* 3965 */ {(12<<2)|2,{49,118,0}}, +/* 3966 */ {(12<<2)|2,{49,118,0}}, +/* 3967 */ {(12<<2)|2,{49,118,0}}, +/* 3968 */ {(12<<2)|2,{49,119,0}}, +/* 3969 */ {(12<<2)|2,{49,119,0}}, +/* 3970 */ {(12<<2)|2,{49,119,0}}, +/* 3971 */ {(12<<2)|2,{49,119,0}}, +/* 3972 */ {(12<<2)|2,{49,119,0}}, +/* 3973 */ {(12<<2)|2,{49,119,0}}, +/* 3974 */ {(12<<2)|2,{49,119,0}}, +/* 3975 */ {(12<<2)|2,{49,119,0}}, +/* 3976 */ {(12<<2)|2,{49,119,0}}, +/* 3977 */ {(12<<2)|2,{49,119,0}}, +/* 3978 */ {(12<<2)|2,{49,119,0}}, +/* 3979 */ {(12<<2)|2,{49,119,0}}, +/* 3980 */ {(12<<2)|2,{49,119,0}}, +/* 3981 */ {(12<<2)|2,{49,119,0}}, +/* 3982 */ {(12<<2)|2,{49,119,0}}, +/* 3983 */ {(12<<2)|2,{49,119,0}}, +/* 3984 */ {(12<<2)|2,{49,120,0}}, +/* 3985 */ {(12<<2)|2,{49,120,0}}, +/* 3986 */ {(12<<2)|2,{49,120,0}}, +/* 3987 */ {(12<<2)|2,{49,120,0}}, +/* 3988 */ {(12<<2)|2,{49,120,0}}, +/* 3989 */ {(12<<2)|2,{49,120,0}}, +/* 3990 */ {(12<<2)|2,{49,120,0}}, +/* 3991 */ {(12<<2)|2,{49,120,0}}, +/* 3992 */ {(12<<2)|2,{49,120,0}}, +/* 3993 */ {(12<<2)|2,{49,120,0}}, +/* 3994 */ {(12<<2)|2,{49,120,0}}, +/* 3995 */ {(12<<2)|2,{49,120,0}}, +/* 3996 */ {(12<<2)|2,{49,120,0}}, +/* 3997 */ {(12<<2)|2,{49,120,0}}, +/* 3998 */ {(12<<2)|2,{49,120,0}}, +/* 3999 */ {(12<<2)|2,{49,120,0}}, +/* 4000 */ {(12<<2)|2,{49,121,0}}, +/* 4001 */ {(12<<2)|2,{49,121,0}}, +/* 4002 */ {(12<<2)|2,{49,121,0}}, +/* 4003 */ {(12<<2)|2,{49,121,0}}, +/* 4004 */ {(12<<2)|2,{49,121,0}}, +/* 4005 */ {(12<<2)|2,{49,121,0}}, +/* 4006 */ {(12<<2)|2,{49,121,0}}, +/* 4007 */ {(12<<2)|2,{49,121,0}}, +/* 4008 */ {(12<<2)|2,{49,121,0}}, +/* 4009 */ {(12<<2)|2,{49,121,0}}, +/* 4010 */ {(12<<2)|2,{49,121,0}}, +/* 4011 */ {(12<<2)|2,{49,121,0}}, +/* 4012 */ {(12<<2)|2,{49,121,0}}, +/* 4013 */ {(12<<2)|2,{49,121,0}}, +/* 4014 */ {(12<<2)|2,{49,121,0}}, +/* 4015 */ {(12<<2)|2,{49,121,0}}, +/* 4016 */ {(12<<2)|2,{49,122,0}}, +/* 4017 */ {(12<<2)|2,{49,122,0}}, +/* 4018 */ {(12<<2)|2,{49,122,0}}, +/* 4019 */ {(12<<2)|2,{49,122,0}}, +/* 4020 */ {(12<<2)|2,{49,122,0}}, +/* 4021 */ {(12<<2)|2,{49,122,0}}, +/* 4022 */ {(12<<2)|2,{49,122,0}}, +/* 4023 */ {(12<<2)|2,{49,122,0}}, +/* 4024 */ {(12<<2)|2,{49,122,0}}, +/* 4025 */ {(12<<2)|2,{49,122,0}}, +/* 4026 */ {(12<<2)|2,{49,122,0}}, +/* 4027 */ {(12<<2)|2,{49,122,0}}, +/* 4028 */ {(12<<2)|2,{49,122,0}}, +/* 4029 */ {(12<<2)|2,{49,122,0}}, +/* 4030 */ {(12<<2)|2,{49,122,0}}, +/* 4031 */ {(12<<2)|2,{49,122,0}}, +/* 4032 */ {(13<<2)|2,{49,38,0}}, +/* 4033 */ {(13<<2)|2,{49,38,0}}, +/* 4034 */ {(13<<2)|2,{49,38,0}}, +/* 4035 */ {(13<<2)|2,{49,38,0}}, +/* 4036 */ {(13<<2)|2,{49,38,0}}, +/* 4037 */ {(13<<2)|2,{49,38,0}}, +/* 4038 */ {(13<<2)|2,{49,38,0}}, +/* 4039 */ {(13<<2)|2,{49,38,0}}, +/* 4040 */ {(13<<2)|2,{49,42,0}}, +/* 4041 */ {(13<<2)|2,{49,42,0}}, +/* 4042 */ {(13<<2)|2,{49,42,0}}, +/* 4043 */ {(13<<2)|2,{49,42,0}}, +/* 4044 */ {(13<<2)|2,{49,42,0}}, +/* 4045 */ {(13<<2)|2,{49,42,0}}, +/* 4046 */ {(13<<2)|2,{49,42,0}}, +/* 4047 */ {(13<<2)|2,{49,42,0}}, +/* 4048 */ {(13<<2)|2,{49,44,0}}, +/* 4049 */ {(13<<2)|2,{49,44,0}}, +/* 4050 */ {(13<<2)|2,{49,44,0}}, +/* 4051 */ {(13<<2)|2,{49,44,0}}, +/* 4052 */ {(13<<2)|2,{49,44,0}}, +/* 4053 */ {(13<<2)|2,{49,44,0}}, +/* 4054 */ {(13<<2)|2,{49,44,0}}, +/* 4055 */ {(13<<2)|2,{49,44,0}}, +/* 4056 */ {(13<<2)|2,{49,59,0}}, +/* 4057 */ {(13<<2)|2,{49,59,0}}, +/* 4058 */ {(13<<2)|2,{49,59,0}}, +/* 4059 */ {(13<<2)|2,{49,59,0}}, +/* 4060 */ {(13<<2)|2,{49,59,0}}, +/* 4061 */ {(13<<2)|2,{49,59,0}}, +/* 4062 */ {(13<<2)|2,{49,59,0}}, +/* 4063 */ {(13<<2)|2,{49,59,0}}, +/* 4064 */ {(13<<2)|2,{49,88,0}}, +/* 4065 */ {(13<<2)|2,{49,88,0}}, +/* 4066 */ {(13<<2)|2,{49,88,0}}, +/* 4067 */ {(13<<2)|2,{49,88,0}}, +/* 4068 */ {(13<<2)|2,{49,88,0}}, +/* 4069 */ {(13<<2)|2,{49,88,0}}, +/* 4070 */ {(13<<2)|2,{49,88,0}}, +/* 4071 */ {(13<<2)|2,{49,88,0}}, +/* 4072 */ {(13<<2)|2,{49,90,0}}, +/* 4073 */ {(13<<2)|2,{49,90,0}}, +/* 4074 */ {(13<<2)|2,{49,90,0}}, +/* 4075 */ {(13<<2)|2,{49,90,0}}, +/* 4076 */ {(13<<2)|2,{49,90,0}}, +/* 4077 */ {(13<<2)|2,{49,90,0}}, +/* 4078 */ {(13<<2)|2,{49,90,0}}, +/* 4079 */ {(13<<2)|2,{49,90,0}}, +/* 4080 */ {(15<<2)|2,{49,33,0}}, +/* 4081 */ {(15<<2)|2,{49,33,0}}, +/* 4082 */ {(15<<2)|2,{49,34,0}}, +/* 4083 */ {(15<<2)|2,{49,34,0}}, +/* 4084 */ {(15<<2)|2,{49,40,0}}, +/* 4085 */ {(15<<2)|2,{49,40,0}}, +/* 4086 */ {(15<<2)|2,{49,41,0}}, +/* 4087 */ {(15<<2)|2,{49,41,0}}, +/* 4088 */ {(15<<2)|2,{49,63,0}}, +/* 4089 */ {(15<<2)|2,{49,63,0}}, +/* 4090 */ {(16<<2)|2,{49,39,0}}, +/* 4091 */ {(16<<2)|2,{49,43,0}}, +/* 4092 */ {(16<<2)|2,{49,124,0}}, +/* 4093 */ {(5<<2)|1,{49,0,0}}, +/* 4094 */ {(5<<2)|1,{49,0,0}}, +/* 4095 */ {(5<<2)|1,{49,0,0}}, +/* 4096 */ {(15<<2)|3,{50,48,48}}, +/* 4097 */ {(15<<2)|3,{50,48,48}}, +/* 4098 */ {(15<<2)|3,{50,48,49}}, +/* 4099 */ {(15<<2)|3,{50,48,49}}, +/* 4100 */ {(15<<2)|3,{50,48,50}}, +/* 4101 */ {(15<<2)|3,{50,48,50}}, +/* 4102 */ {(15<<2)|3,{50,48,97}}, +/* 4103 */ {(15<<2)|3,{50,48,97}}, +/* 4104 */ {(15<<2)|3,{50,48,99}}, +/* 4105 */ {(15<<2)|3,{50,48,99}}, +/* 4106 */ {(15<<2)|3,{50,48,101}}, +/* 4107 */ {(15<<2)|3,{50,48,101}}, +/* 4108 */ {(15<<2)|3,{50,48,105}}, +/* 4109 */ {(15<<2)|3,{50,48,105}}, +/* 4110 */ {(15<<2)|3,{50,48,111}}, +/* 4111 */ {(15<<2)|3,{50,48,111}}, +/* 4112 */ {(15<<2)|3,{50,48,115}}, +/* 4113 */ {(15<<2)|3,{50,48,115}}, +/* 4114 */ {(15<<2)|3,{50,48,116}}, +/* 4115 */ {(15<<2)|3,{50,48,116}}, +/* 4116 */ {(16<<2)|3,{50,48,32}}, +/* 4117 */ {(16<<2)|3,{50,48,37}}, +/* 4118 */ {(16<<2)|3,{50,48,45}}, +/* 4119 */ {(16<<2)|3,{50,48,46}}, +/* 4120 */ {(16<<2)|3,{50,48,47}}, +/* 4121 */ {(16<<2)|3,{50,48,51}}, +/* 4122 */ {(16<<2)|3,{50,48,52}}, +/* 4123 */ {(16<<2)|3,{50,48,53}}, +/* 4124 */ {(16<<2)|3,{50,48,54}}, +/* 4125 */ {(16<<2)|3,{50,48,55}}, +/* 4126 */ {(16<<2)|3,{50,48,56}}, +/* 4127 */ {(16<<2)|3,{50,48,57}}, +/* 4128 */ {(16<<2)|3,{50,48,61}}, +/* 4129 */ {(16<<2)|3,{50,48,65}}, +/* 4130 */ {(16<<2)|3,{50,48,95}}, +/* 4131 */ {(16<<2)|3,{50,48,98}}, +/* 4132 */ {(16<<2)|3,{50,48,100}}, +/* 4133 */ {(16<<2)|3,{50,48,102}}, +/* 4134 */ {(16<<2)|3,{50,48,103}}, +/* 4135 */ {(16<<2)|3,{50,48,104}}, +/* 4136 */ {(16<<2)|3,{50,48,108}}, +/* 4137 */ {(16<<2)|3,{50,48,109}}, +/* 4138 */ {(16<<2)|3,{50,48,110}}, +/* 4139 */ {(16<<2)|3,{50,48,112}}, +/* 4140 */ {(16<<2)|3,{50,48,114}}, +/* 4141 */ {(16<<2)|3,{50,48,117}}, +/* 4142 */ {(10<<2)|2,{50,48,0}}, +/* 4143 */ {(10<<2)|2,{50,48,0}}, +/* 4144 */ {(10<<2)|2,{50,48,0}}, +/* 4145 */ {(10<<2)|2,{50,48,0}}, +/* 4146 */ {(10<<2)|2,{50,48,0}}, +/* 4147 */ {(10<<2)|2,{50,48,0}}, +/* 4148 */ {(10<<2)|2,{50,48,0}}, +/* 4149 */ {(10<<2)|2,{50,48,0}}, +/* 4150 */ {(10<<2)|2,{50,48,0}}, +/* 4151 */ {(10<<2)|2,{50,48,0}}, +/* 4152 */ {(10<<2)|2,{50,48,0}}, +/* 4153 */ {(10<<2)|2,{50,48,0}}, +/* 4154 */ {(10<<2)|2,{50,48,0}}, +/* 4155 */ {(10<<2)|2,{50,48,0}}, +/* 4156 */ {(10<<2)|2,{50,48,0}}, +/* 4157 */ {(10<<2)|2,{50,48,0}}, +/* 4158 */ {(10<<2)|2,{50,48,0}}, +/* 4159 */ {(10<<2)|2,{50,48,0}}, +/* 4160 */ {(15<<2)|3,{50,49,48}}, +/* 4161 */ {(15<<2)|3,{50,49,48}}, +/* 4162 */ {(15<<2)|3,{50,49,49}}, +/* 4163 */ {(15<<2)|3,{50,49,49}}, +/* 4164 */ {(15<<2)|3,{50,49,50}}, +/* 4165 */ {(15<<2)|3,{50,49,50}}, +/* 4166 */ {(15<<2)|3,{50,49,97}}, +/* 4167 */ {(15<<2)|3,{50,49,97}}, +/* 4168 */ {(15<<2)|3,{50,49,99}}, +/* 4169 */ {(15<<2)|3,{50,49,99}}, +/* 4170 */ {(15<<2)|3,{50,49,101}}, +/* 4171 */ {(15<<2)|3,{50,49,101}}, +/* 4172 */ {(15<<2)|3,{50,49,105}}, +/* 4173 */ {(15<<2)|3,{50,49,105}}, +/* 4174 */ {(15<<2)|3,{50,49,111}}, +/* 4175 */ {(15<<2)|3,{50,49,111}}, +/* 4176 */ {(15<<2)|3,{50,49,115}}, +/* 4177 */ {(15<<2)|3,{50,49,115}}, +/* 4178 */ {(15<<2)|3,{50,49,116}}, +/* 4179 */ {(15<<2)|3,{50,49,116}}, +/* 4180 */ {(16<<2)|3,{50,49,32}}, +/* 4181 */ {(16<<2)|3,{50,49,37}}, +/* 4182 */ {(16<<2)|3,{50,49,45}}, +/* 4183 */ {(16<<2)|3,{50,49,46}}, +/* 4184 */ {(16<<2)|3,{50,49,47}}, +/* 4185 */ {(16<<2)|3,{50,49,51}}, +/* 4186 */ {(16<<2)|3,{50,49,52}}, +/* 4187 */ {(16<<2)|3,{50,49,53}}, +/* 4188 */ {(16<<2)|3,{50,49,54}}, +/* 4189 */ {(16<<2)|3,{50,49,55}}, +/* 4190 */ {(16<<2)|3,{50,49,56}}, +/* 4191 */ {(16<<2)|3,{50,49,57}}, +/* 4192 */ {(16<<2)|3,{50,49,61}}, +/* 4193 */ {(16<<2)|3,{50,49,65}}, +/* 4194 */ {(16<<2)|3,{50,49,95}}, +/* 4195 */ {(16<<2)|3,{50,49,98}}, +/* 4196 */ {(16<<2)|3,{50,49,100}}, +/* 4197 */ {(16<<2)|3,{50,49,102}}, +/* 4198 */ {(16<<2)|3,{50,49,103}}, +/* 4199 */ {(16<<2)|3,{50,49,104}}, +/* 4200 */ {(16<<2)|3,{50,49,108}}, +/* 4201 */ {(16<<2)|3,{50,49,109}}, +/* 4202 */ {(16<<2)|3,{50,49,110}}, +/* 4203 */ {(16<<2)|3,{50,49,112}}, +/* 4204 */ {(16<<2)|3,{50,49,114}}, +/* 4205 */ {(16<<2)|3,{50,49,117}}, +/* 4206 */ {(10<<2)|2,{50,49,0}}, +/* 4207 */ {(10<<2)|2,{50,49,0}}, +/* 4208 */ {(10<<2)|2,{50,49,0}}, +/* 4209 */ {(10<<2)|2,{50,49,0}}, +/* 4210 */ {(10<<2)|2,{50,49,0}}, +/* 4211 */ {(10<<2)|2,{50,49,0}}, +/* 4212 */ {(10<<2)|2,{50,49,0}}, +/* 4213 */ {(10<<2)|2,{50,49,0}}, +/* 4214 */ {(10<<2)|2,{50,49,0}}, +/* 4215 */ {(10<<2)|2,{50,49,0}}, +/* 4216 */ {(10<<2)|2,{50,49,0}}, +/* 4217 */ {(10<<2)|2,{50,49,0}}, +/* 4218 */ {(10<<2)|2,{50,49,0}}, +/* 4219 */ {(10<<2)|2,{50,49,0}}, +/* 4220 */ {(10<<2)|2,{50,49,0}}, +/* 4221 */ {(10<<2)|2,{50,49,0}}, +/* 4222 */ {(10<<2)|2,{50,49,0}}, +/* 4223 */ {(10<<2)|2,{50,49,0}}, +/* 4224 */ {(15<<2)|3,{50,50,48}}, +/* 4225 */ {(15<<2)|3,{50,50,48}}, +/* 4226 */ {(15<<2)|3,{50,50,49}}, +/* 4227 */ {(15<<2)|3,{50,50,49}}, +/* 4228 */ {(15<<2)|3,{50,50,50}}, +/* 4229 */ {(15<<2)|3,{50,50,50}}, +/* 4230 */ {(15<<2)|3,{50,50,97}}, +/* 4231 */ {(15<<2)|3,{50,50,97}}, +/* 4232 */ {(15<<2)|3,{50,50,99}}, +/* 4233 */ {(15<<2)|3,{50,50,99}}, +/* 4234 */ {(15<<2)|3,{50,50,101}}, +/* 4235 */ {(15<<2)|3,{50,50,101}}, +/* 4236 */ {(15<<2)|3,{50,50,105}}, +/* 4237 */ {(15<<2)|3,{50,50,105}}, +/* 4238 */ {(15<<2)|3,{50,50,111}}, +/* 4239 */ {(15<<2)|3,{50,50,111}}, +/* 4240 */ {(15<<2)|3,{50,50,115}}, +/* 4241 */ {(15<<2)|3,{50,50,115}}, +/* 4242 */ {(15<<2)|3,{50,50,116}}, +/* 4243 */ {(15<<2)|3,{50,50,116}}, +/* 4244 */ {(16<<2)|3,{50,50,32}}, +/* 4245 */ {(16<<2)|3,{50,50,37}}, +/* 4246 */ {(16<<2)|3,{50,50,45}}, +/* 4247 */ {(16<<2)|3,{50,50,46}}, +/* 4248 */ {(16<<2)|3,{50,50,47}}, +/* 4249 */ {(16<<2)|3,{50,50,51}}, +/* 4250 */ {(16<<2)|3,{50,50,52}}, +/* 4251 */ {(16<<2)|3,{50,50,53}}, +/* 4252 */ {(16<<2)|3,{50,50,54}}, +/* 4253 */ {(16<<2)|3,{50,50,55}}, +/* 4254 */ {(16<<2)|3,{50,50,56}}, +/* 4255 */ {(16<<2)|3,{50,50,57}}, +/* 4256 */ {(16<<2)|3,{50,50,61}}, +/* 4257 */ {(16<<2)|3,{50,50,65}}, +/* 4258 */ {(16<<2)|3,{50,50,95}}, +/* 4259 */ {(16<<2)|3,{50,50,98}}, +/* 4260 */ {(16<<2)|3,{50,50,100}}, +/* 4261 */ {(16<<2)|3,{50,50,102}}, +/* 4262 */ {(16<<2)|3,{50,50,103}}, +/* 4263 */ {(16<<2)|3,{50,50,104}}, +/* 4264 */ {(16<<2)|3,{50,50,108}}, +/* 4265 */ {(16<<2)|3,{50,50,109}}, +/* 4266 */ {(16<<2)|3,{50,50,110}}, +/* 4267 */ {(16<<2)|3,{50,50,112}}, +/* 4268 */ {(16<<2)|3,{50,50,114}}, +/* 4269 */ {(16<<2)|3,{50,50,117}}, +/* 4270 */ {(10<<2)|2,{50,50,0}}, +/* 4271 */ {(10<<2)|2,{50,50,0}}, +/* 4272 */ {(10<<2)|2,{50,50,0}}, +/* 4273 */ {(10<<2)|2,{50,50,0}}, +/* 4274 */ {(10<<2)|2,{50,50,0}}, +/* 4275 */ {(10<<2)|2,{50,50,0}}, +/* 4276 */ {(10<<2)|2,{50,50,0}}, +/* 4277 */ {(10<<2)|2,{50,50,0}}, +/* 4278 */ {(10<<2)|2,{50,50,0}}, +/* 4279 */ {(10<<2)|2,{50,50,0}}, +/* 4280 */ {(10<<2)|2,{50,50,0}}, +/* 4281 */ {(10<<2)|2,{50,50,0}}, +/* 4282 */ {(10<<2)|2,{50,50,0}}, +/* 4283 */ {(10<<2)|2,{50,50,0}}, +/* 4284 */ {(10<<2)|2,{50,50,0}}, +/* 4285 */ {(10<<2)|2,{50,50,0}}, +/* 4286 */ {(10<<2)|2,{50,50,0}}, +/* 4287 */ {(10<<2)|2,{50,50,0}}, +/* 4288 */ {(15<<2)|3,{50,97,48}}, +/* 4289 */ {(15<<2)|3,{50,97,48}}, +/* 4290 */ {(15<<2)|3,{50,97,49}}, +/* 4291 */ {(15<<2)|3,{50,97,49}}, +/* 4292 */ {(15<<2)|3,{50,97,50}}, +/* 4293 */ {(15<<2)|3,{50,97,50}}, +/* 4294 */ {(15<<2)|3,{50,97,97}}, +/* 4295 */ {(15<<2)|3,{50,97,97}}, +/* 4296 */ {(15<<2)|3,{50,97,99}}, +/* 4297 */ {(15<<2)|3,{50,97,99}}, +/* 4298 */ {(15<<2)|3,{50,97,101}}, +/* 4299 */ {(15<<2)|3,{50,97,101}}, +/* 4300 */ {(15<<2)|3,{50,97,105}}, +/* 4301 */ {(15<<2)|3,{50,97,105}}, +/* 4302 */ {(15<<2)|3,{50,97,111}}, +/* 4303 */ {(15<<2)|3,{50,97,111}}, +/* 4304 */ {(15<<2)|3,{50,97,115}}, +/* 4305 */ {(15<<2)|3,{50,97,115}}, +/* 4306 */ {(15<<2)|3,{50,97,116}}, +/* 4307 */ {(15<<2)|3,{50,97,116}}, +/* 4308 */ {(16<<2)|3,{50,97,32}}, +/* 4309 */ {(16<<2)|3,{50,97,37}}, +/* 4310 */ {(16<<2)|3,{50,97,45}}, +/* 4311 */ {(16<<2)|3,{50,97,46}}, +/* 4312 */ {(16<<2)|3,{50,97,47}}, +/* 4313 */ {(16<<2)|3,{50,97,51}}, +/* 4314 */ {(16<<2)|3,{50,97,52}}, +/* 4315 */ {(16<<2)|3,{50,97,53}}, +/* 4316 */ {(16<<2)|3,{50,97,54}}, +/* 4317 */ {(16<<2)|3,{50,97,55}}, +/* 4318 */ {(16<<2)|3,{50,97,56}}, +/* 4319 */ {(16<<2)|3,{50,97,57}}, +/* 4320 */ {(16<<2)|3,{50,97,61}}, +/* 4321 */ {(16<<2)|3,{50,97,65}}, +/* 4322 */ {(16<<2)|3,{50,97,95}}, +/* 4323 */ {(16<<2)|3,{50,97,98}}, +/* 4324 */ {(16<<2)|3,{50,97,100}}, +/* 4325 */ {(16<<2)|3,{50,97,102}}, +/* 4326 */ {(16<<2)|3,{50,97,103}}, +/* 4327 */ {(16<<2)|3,{50,97,104}}, +/* 4328 */ {(16<<2)|3,{50,97,108}}, +/* 4329 */ {(16<<2)|3,{50,97,109}}, +/* 4330 */ {(16<<2)|3,{50,97,110}}, +/* 4331 */ {(16<<2)|3,{50,97,112}}, +/* 4332 */ {(16<<2)|3,{50,97,114}}, +/* 4333 */ {(16<<2)|3,{50,97,117}}, +/* 4334 */ {(10<<2)|2,{50,97,0}}, +/* 4335 */ {(10<<2)|2,{50,97,0}}, +/* 4336 */ {(10<<2)|2,{50,97,0}}, +/* 4337 */ {(10<<2)|2,{50,97,0}}, +/* 4338 */ {(10<<2)|2,{50,97,0}}, +/* 4339 */ {(10<<2)|2,{50,97,0}}, +/* 4340 */ {(10<<2)|2,{50,97,0}}, +/* 4341 */ {(10<<2)|2,{50,97,0}}, +/* 4342 */ {(10<<2)|2,{50,97,0}}, +/* 4343 */ {(10<<2)|2,{50,97,0}}, +/* 4344 */ {(10<<2)|2,{50,97,0}}, +/* 4345 */ {(10<<2)|2,{50,97,0}}, +/* 4346 */ {(10<<2)|2,{50,97,0}}, +/* 4347 */ {(10<<2)|2,{50,97,0}}, +/* 4348 */ {(10<<2)|2,{50,97,0}}, +/* 4349 */ {(10<<2)|2,{50,97,0}}, +/* 4350 */ {(10<<2)|2,{50,97,0}}, +/* 4351 */ {(10<<2)|2,{50,97,0}}, +/* 4352 */ {(15<<2)|3,{50,99,48}}, +/* 4353 */ {(15<<2)|3,{50,99,48}}, +/* 4354 */ {(15<<2)|3,{50,99,49}}, +/* 4355 */ {(15<<2)|3,{50,99,49}}, +/* 4356 */ {(15<<2)|3,{50,99,50}}, +/* 4357 */ {(15<<2)|3,{50,99,50}}, +/* 4358 */ {(15<<2)|3,{50,99,97}}, +/* 4359 */ {(15<<2)|3,{50,99,97}}, +/* 4360 */ {(15<<2)|3,{50,99,99}}, +/* 4361 */ {(15<<2)|3,{50,99,99}}, +/* 4362 */ {(15<<2)|3,{50,99,101}}, +/* 4363 */ {(15<<2)|3,{50,99,101}}, +/* 4364 */ {(15<<2)|3,{50,99,105}}, +/* 4365 */ {(15<<2)|3,{50,99,105}}, +/* 4366 */ {(15<<2)|3,{50,99,111}}, +/* 4367 */ {(15<<2)|3,{50,99,111}}, +/* 4368 */ {(15<<2)|3,{50,99,115}}, +/* 4369 */ {(15<<2)|3,{50,99,115}}, +/* 4370 */ {(15<<2)|3,{50,99,116}}, +/* 4371 */ {(15<<2)|3,{50,99,116}}, +/* 4372 */ {(16<<2)|3,{50,99,32}}, +/* 4373 */ {(16<<2)|3,{50,99,37}}, +/* 4374 */ {(16<<2)|3,{50,99,45}}, +/* 4375 */ {(16<<2)|3,{50,99,46}}, +/* 4376 */ {(16<<2)|3,{50,99,47}}, +/* 4377 */ {(16<<2)|3,{50,99,51}}, +/* 4378 */ {(16<<2)|3,{50,99,52}}, +/* 4379 */ {(16<<2)|3,{50,99,53}}, +/* 4380 */ {(16<<2)|3,{50,99,54}}, +/* 4381 */ {(16<<2)|3,{50,99,55}}, +/* 4382 */ {(16<<2)|3,{50,99,56}}, +/* 4383 */ {(16<<2)|3,{50,99,57}}, +/* 4384 */ {(16<<2)|3,{50,99,61}}, +/* 4385 */ {(16<<2)|3,{50,99,65}}, +/* 4386 */ {(16<<2)|3,{50,99,95}}, +/* 4387 */ {(16<<2)|3,{50,99,98}}, +/* 4388 */ {(16<<2)|3,{50,99,100}}, +/* 4389 */ {(16<<2)|3,{50,99,102}}, +/* 4390 */ {(16<<2)|3,{50,99,103}}, +/* 4391 */ {(16<<2)|3,{50,99,104}}, +/* 4392 */ {(16<<2)|3,{50,99,108}}, +/* 4393 */ {(16<<2)|3,{50,99,109}}, +/* 4394 */ {(16<<2)|3,{50,99,110}}, +/* 4395 */ {(16<<2)|3,{50,99,112}}, +/* 4396 */ {(16<<2)|3,{50,99,114}}, +/* 4397 */ {(16<<2)|3,{50,99,117}}, +/* 4398 */ {(10<<2)|2,{50,99,0}}, +/* 4399 */ {(10<<2)|2,{50,99,0}}, +/* 4400 */ {(10<<2)|2,{50,99,0}}, +/* 4401 */ {(10<<2)|2,{50,99,0}}, +/* 4402 */ {(10<<2)|2,{50,99,0}}, +/* 4403 */ {(10<<2)|2,{50,99,0}}, +/* 4404 */ {(10<<2)|2,{50,99,0}}, +/* 4405 */ {(10<<2)|2,{50,99,0}}, +/* 4406 */ {(10<<2)|2,{50,99,0}}, +/* 4407 */ {(10<<2)|2,{50,99,0}}, +/* 4408 */ {(10<<2)|2,{50,99,0}}, +/* 4409 */ {(10<<2)|2,{50,99,0}}, +/* 4410 */ {(10<<2)|2,{50,99,0}}, +/* 4411 */ {(10<<2)|2,{50,99,0}}, +/* 4412 */ {(10<<2)|2,{50,99,0}}, +/* 4413 */ {(10<<2)|2,{50,99,0}}, +/* 4414 */ {(10<<2)|2,{50,99,0}}, +/* 4415 */ {(10<<2)|2,{50,99,0}}, +/* 4416 */ {(15<<2)|3,{50,101,48}}, +/* 4417 */ {(15<<2)|3,{50,101,48}}, +/* 4418 */ {(15<<2)|3,{50,101,49}}, +/* 4419 */ {(15<<2)|3,{50,101,49}}, +/* 4420 */ {(15<<2)|3,{50,101,50}}, +/* 4421 */ {(15<<2)|3,{50,101,50}}, +/* 4422 */ {(15<<2)|3,{50,101,97}}, +/* 4423 */ {(15<<2)|3,{50,101,97}}, +/* 4424 */ {(15<<2)|3,{50,101,99}}, +/* 4425 */ {(15<<2)|3,{50,101,99}}, +/* 4426 */ {(15<<2)|3,{50,101,101}}, +/* 4427 */ {(15<<2)|3,{50,101,101}}, +/* 4428 */ {(15<<2)|3,{50,101,105}}, +/* 4429 */ {(15<<2)|3,{50,101,105}}, +/* 4430 */ {(15<<2)|3,{50,101,111}}, +/* 4431 */ {(15<<2)|3,{50,101,111}}, +/* 4432 */ {(15<<2)|3,{50,101,115}}, +/* 4433 */ {(15<<2)|3,{50,101,115}}, +/* 4434 */ {(15<<2)|3,{50,101,116}}, +/* 4435 */ {(15<<2)|3,{50,101,116}}, +/* 4436 */ {(16<<2)|3,{50,101,32}}, +/* 4437 */ {(16<<2)|3,{50,101,37}}, +/* 4438 */ {(16<<2)|3,{50,101,45}}, +/* 4439 */ {(16<<2)|3,{50,101,46}}, +/* 4440 */ {(16<<2)|3,{50,101,47}}, +/* 4441 */ {(16<<2)|3,{50,101,51}}, +/* 4442 */ {(16<<2)|3,{50,101,52}}, +/* 4443 */ {(16<<2)|3,{50,101,53}}, +/* 4444 */ {(16<<2)|3,{50,101,54}}, +/* 4445 */ {(16<<2)|3,{50,101,55}}, +/* 4446 */ {(16<<2)|3,{50,101,56}}, +/* 4447 */ {(16<<2)|3,{50,101,57}}, +/* 4448 */ {(16<<2)|3,{50,101,61}}, +/* 4449 */ {(16<<2)|3,{50,101,65}}, +/* 4450 */ {(16<<2)|3,{50,101,95}}, +/* 4451 */ {(16<<2)|3,{50,101,98}}, +/* 4452 */ {(16<<2)|3,{50,101,100}}, +/* 4453 */ {(16<<2)|3,{50,101,102}}, +/* 4454 */ {(16<<2)|3,{50,101,103}}, +/* 4455 */ {(16<<2)|3,{50,101,104}}, +/* 4456 */ {(16<<2)|3,{50,101,108}}, +/* 4457 */ {(16<<2)|3,{50,101,109}}, +/* 4458 */ {(16<<2)|3,{50,101,110}}, +/* 4459 */ {(16<<2)|3,{50,101,112}}, +/* 4460 */ {(16<<2)|3,{50,101,114}}, +/* 4461 */ {(16<<2)|3,{50,101,117}}, +/* 4462 */ {(10<<2)|2,{50,101,0}}, +/* 4463 */ {(10<<2)|2,{50,101,0}}, +/* 4464 */ {(10<<2)|2,{50,101,0}}, +/* 4465 */ {(10<<2)|2,{50,101,0}}, +/* 4466 */ {(10<<2)|2,{50,101,0}}, +/* 4467 */ {(10<<2)|2,{50,101,0}}, +/* 4468 */ {(10<<2)|2,{50,101,0}}, +/* 4469 */ {(10<<2)|2,{50,101,0}}, +/* 4470 */ {(10<<2)|2,{50,101,0}}, +/* 4471 */ {(10<<2)|2,{50,101,0}}, +/* 4472 */ {(10<<2)|2,{50,101,0}}, +/* 4473 */ {(10<<2)|2,{50,101,0}}, +/* 4474 */ {(10<<2)|2,{50,101,0}}, +/* 4475 */ {(10<<2)|2,{50,101,0}}, +/* 4476 */ {(10<<2)|2,{50,101,0}}, +/* 4477 */ {(10<<2)|2,{50,101,0}}, +/* 4478 */ {(10<<2)|2,{50,101,0}}, +/* 4479 */ {(10<<2)|2,{50,101,0}}, +/* 4480 */ {(15<<2)|3,{50,105,48}}, +/* 4481 */ {(15<<2)|3,{50,105,48}}, +/* 4482 */ {(15<<2)|3,{50,105,49}}, +/* 4483 */ {(15<<2)|3,{50,105,49}}, +/* 4484 */ {(15<<2)|3,{50,105,50}}, +/* 4485 */ {(15<<2)|3,{50,105,50}}, +/* 4486 */ {(15<<2)|3,{50,105,97}}, +/* 4487 */ {(15<<2)|3,{50,105,97}}, +/* 4488 */ {(15<<2)|3,{50,105,99}}, +/* 4489 */ {(15<<2)|3,{50,105,99}}, +/* 4490 */ {(15<<2)|3,{50,105,101}}, +/* 4491 */ {(15<<2)|3,{50,105,101}}, +/* 4492 */ {(15<<2)|3,{50,105,105}}, +/* 4493 */ {(15<<2)|3,{50,105,105}}, +/* 4494 */ {(15<<2)|3,{50,105,111}}, +/* 4495 */ {(15<<2)|3,{50,105,111}}, +/* 4496 */ {(15<<2)|3,{50,105,115}}, +/* 4497 */ {(15<<2)|3,{50,105,115}}, +/* 4498 */ {(15<<2)|3,{50,105,116}}, +/* 4499 */ {(15<<2)|3,{50,105,116}}, +/* 4500 */ {(16<<2)|3,{50,105,32}}, +/* 4501 */ {(16<<2)|3,{50,105,37}}, +/* 4502 */ {(16<<2)|3,{50,105,45}}, +/* 4503 */ {(16<<2)|3,{50,105,46}}, +/* 4504 */ {(16<<2)|3,{50,105,47}}, +/* 4505 */ {(16<<2)|3,{50,105,51}}, +/* 4506 */ {(16<<2)|3,{50,105,52}}, +/* 4507 */ {(16<<2)|3,{50,105,53}}, +/* 4508 */ {(16<<2)|3,{50,105,54}}, +/* 4509 */ {(16<<2)|3,{50,105,55}}, +/* 4510 */ {(16<<2)|3,{50,105,56}}, +/* 4511 */ {(16<<2)|3,{50,105,57}}, +/* 4512 */ {(16<<2)|3,{50,105,61}}, +/* 4513 */ {(16<<2)|3,{50,105,65}}, +/* 4514 */ {(16<<2)|3,{50,105,95}}, +/* 4515 */ {(16<<2)|3,{50,105,98}}, +/* 4516 */ {(16<<2)|3,{50,105,100}}, +/* 4517 */ {(16<<2)|3,{50,105,102}}, +/* 4518 */ {(16<<2)|3,{50,105,103}}, +/* 4519 */ {(16<<2)|3,{50,105,104}}, +/* 4520 */ {(16<<2)|3,{50,105,108}}, +/* 4521 */ {(16<<2)|3,{50,105,109}}, +/* 4522 */ {(16<<2)|3,{50,105,110}}, +/* 4523 */ {(16<<2)|3,{50,105,112}}, +/* 4524 */ {(16<<2)|3,{50,105,114}}, +/* 4525 */ {(16<<2)|3,{50,105,117}}, +/* 4526 */ {(10<<2)|2,{50,105,0}}, +/* 4527 */ {(10<<2)|2,{50,105,0}}, +/* 4528 */ {(10<<2)|2,{50,105,0}}, +/* 4529 */ {(10<<2)|2,{50,105,0}}, +/* 4530 */ {(10<<2)|2,{50,105,0}}, +/* 4531 */ {(10<<2)|2,{50,105,0}}, +/* 4532 */ {(10<<2)|2,{50,105,0}}, +/* 4533 */ {(10<<2)|2,{50,105,0}}, +/* 4534 */ {(10<<2)|2,{50,105,0}}, +/* 4535 */ {(10<<2)|2,{50,105,0}}, +/* 4536 */ {(10<<2)|2,{50,105,0}}, +/* 4537 */ {(10<<2)|2,{50,105,0}}, +/* 4538 */ {(10<<2)|2,{50,105,0}}, +/* 4539 */ {(10<<2)|2,{50,105,0}}, +/* 4540 */ {(10<<2)|2,{50,105,0}}, +/* 4541 */ {(10<<2)|2,{50,105,0}}, +/* 4542 */ {(10<<2)|2,{50,105,0}}, +/* 4543 */ {(10<<2)|2,{50,105,0}}, +/* 4544 */ {(15<<2)|3,{50,111,48}}, +/* 4545 */ {(15<<2)|3,{50,111,48}}, +/* 4546 */ {(15<<2)|3,{50,111,49}}, +/* 4547 */ {(15<<2)|3,{50,111,49}}, +/* 4548 */ {(15<<2)|3,{50,111,50}}, +/* 4549 */ {(15<<2)|3,{50,111,50}}, +/* 4550 */ {(15<<2)|3,{50,111,97}}, +/* 4551 */ {(15<<2)|3,{50,111,97}}, +/* 4552 */ {(15<<2)|3,{50,111,99}}, +/* 4553 */ {(15<<2)|3,{50,111,99}}, +/* 4554 */ {(15<<2)|3,{50,111,101}}, +/* 4555 */ {(15<<2)|3,{50,111,101}}, +/* 4556 */ {(15<<2)|3,{50,111,105}}, +/* 4557 */ {(15<<2)|3,{50,111,105}}, +/* 4558 */ {(15<<2)|3,{50,111,111}}, +/* 4559 */ {(15<<2)|3,{50,111,111}}, +/* 4560 */ {(15<<2)|3,{50,111,115}}, +/* 4561 */ {(15<<2)|3,{50,111,115}}, +/* 4562 */ {(15<<2)|3,{50,111,116}}, +/* 4563 */ {(15<<2)|3,{50,111,116}}, +/* 4564 */ {(16<<2)|3,{50,111,32}}, +/* 4565 */ {(16<<2)|3,{50,111,37}}, +/* 4566 */ {(16<<2)|3,{50,111,45}}, +/* 4567 */ {(16<<2)|3,{50,111,46}}, +/* 4568 */ {(16<<2)|3,{50,111,47}}, +/* 4569 */ {(16<<2)|3,{50,111,51}}, +/* 4570 */ {(16<<2)|3,{50,111,52}}, +/* 4571 */ {(16<<2)|3,{50,111,53}}, +/* 4572 */ {(16<<2)|3,{50,111,54}}, +/* 4573 */ {(16<<2)|3,{50,111,55}}, +/* 4574 */ {(16<<2)|3,{50,111,56}}, +/* 4575 */ {(16<<2)|3,{50,111,57}}, +/* 4576 */ {(16<<2)|3,{50,111,61}}, +/* 4577 */ {(16<<2)|3,{50,111,65}}, +/* 4578 */ {(16<<2)|3,{50,111,95}}, +/* 4579 */ {(16<<2)|3,{50,111,98}}, +/* 4580 */ {(16<<2)|3,{50,111,100}}, +/* 4581 */ {(16<<2)|3,{50,111,102}}, +/* 4582 */ {(16<<2)|3,{50,111,103}}, +/* 4583 */ {(16<<2)|3,{50,111,104}}, +/* 4584 */ {(16<<2)|3,{50,111,108}}, +/* 4585 */ {(16<<2)|3,{50,111,109}}, +/* 4586 */ {(16<<2)|3,{50,111,110}}, +/* 4587 */ {(16<<2)|3,{50,111,112}}, +/* 4588 */ {(16<<2)|3,{50,111,114}}, +/* 4589 */ {(16<<2)|3,{50,111,117}}, +/* 4590 */ {(10<<2)|2,{50,111,0}}, +/* 4591 */ {(10<<2)|2,{50,111,0}}, +/* 4592 */ {(10<<2)|2,{50,111,0}}, +/* 4593 */ {(10<<2)|2,{50,111,0}}, +/* 4594 */ {(10<<2)|2,{50,111,0}}, +/* 4595 */ {(10<<2)|2,{50,111,0}}, +/* 4596 */ {(10<<2)|2,{50,111,0}}, +/* 4597 */ {(10<<2)|2,{50,111,0}}, +/* 4598 */ {(10<<2)|2,{50,111,0}}, +/* 4599 */ {(10<<2)|2,{50,111,0}}, +/* 4600 */ {(10<<2)|2,{50,111,0}}, +/* 4601 */ {(10<<2)|2,{50,111,0}}, +/* 4602 */ {(10<<2)|2,{50,111,0}}, +/* 4603 */ {(10<<2)|2,{50,111,0}}, +/* 4604 */ {(10<<2)|2,{50,111,0}}, +/* 4605 */ {(10<<2)|2,{50,111,0}}, +/* 4606 */ {(10<<2)|2,{50,111,0}}, +/* 4607 */ {(10<<2)|2,{50,111,0}}, +/* 4608 */ {(15<<2)|3,{50,115,48}}, +/* 4609 */ {(15<<2)|3,{50,115,48}}, +/* 4610 */ {(15<<2)|3,{50,115,49}}, +/* 4611 */ {(15<<2)|3,{50,115,49}}, +/* 4612 */ {(15<<2)|3,{50,115,50}}, +/* 4613 */ {(15<<2)|3,{50,115,50}}, +/* 4614 */ {(15<<2)|3,{50,115,97}}, +/* 4615 */ {(15<<2)|3,{50,115,97}}, +/* 4616 */ {(15<<2)|3,{50,115,99}}, +/* 4617 */ {(15<<2)|3,{50,115,99}}, +/* 4618 */ {(15<<2)|3,{50,115,101}}, +/* 4619 */ {(15<<2)|3,{50,115,101}}, +/* 4620 */ {(15<<2)|3,{50,115,105}}, +/* 4621 */ {(15<<2)|3,{50,115,105}}, +/* 4622 */ {(15<<2)|3,{50,115,111}}, +/* 4623 */ {(15<<2)|3,{50,115,111}}, +/* 4624 */ {(15<<2)|3,{50,115,115}}, +/* 4625 */ {(15<<2)|3,{50,115,115}}, +/* 4626 */ {(15<<2)|3,{50,115,116}}, +/* 4627 */ {(15<<2)|3,{50,115,116}}, +/* 4628 */ {(16<<2)|3,{50,115,32}}, +/* 4629 */ {(16<<2)|3,{50,115,37}}, +/* 4630 */ {(16<<2)|3,{50,115,45}}, +/* 4631 */ {(16<<2)|3,{50,115,46}}, +/* 4632 */ {(16<<2)|3,{50,115,47}}, +/* 4633 */ {(16<<2)|3,{50,115,51}}, +/* 4634 */ {(16<<2)|3,{50,115,52}}, +/* 4635 */ {(16<<2)|3,{50,115,53}}, +/* 4636 */ {(16<<2)|3,{50,115,54}}, +/* 4637 */ {(16<<2)|3,{50,115,55}}, +/* 4638 */ {(16<<2)|3,{50,115,56}}, +/* 4639 */ {(16<<2)|3,{50,115,57}}, +/* 4640 */ {(16<<2)|3,{50,115,61}}, +/* 4641 */ {(16<<2)|3,{50,115,65}}, +/* 4642 */ {(16<<2)|3,{50,115,95}}, +/* 4643 */ {(16<<2)|3,{50,115,98}}, +/* 4644 */ {(16<<2)|3,{50,115,100}}, +/* 4645 */ {(16<<2)|3,{50,115,102}}, +/* 4646 */ {(16<<2)|3,{50,115,103}}, +/* 4647 */ {(16<<2)|3,{50,115,104}}, +/* 4648 */ {(16<<2)|3,{50,115,108}}, +/* 4649 */ {(16<<2)|3,{50,115,109}}, +/* 4650 */ {(16<<2)|3,{50,115,110}}, +/* 4651 */ {(16<<2)|3,{50,115,112}}, +/* 4652 */ {(16<<2)|3,{50,115,114}}, +/* 4653 */ {(16<<2)|3,{50,115,117}}, +/* 4654 */ {(10<<2)|2,{50,115,0}}, +/* 4655 */ {(10<<2)|2,{50,115,0}}, +/* 4656 */ {(10<<2)|2,{50,115,0}}, +/* 4657 */ {(10<<2)|2,{50,115,0}}, +/* 4658 */ {(10<<2)|2,{50,115,0}}, +/* 4659 */ {(10<<2)|2,{50,115,0}}, +/* 4660 */ {(10<<2)|2,{50,115,0}}, +/* 4661 */ {(10<<2)|2,{50,115,0}}, +/* 4662 */ {(10<<2)|2,{50,115,0}}, +/* 4663 */ {(10<<2)|2,{50,115,0}}, +/* 4664 */ {(10<<2)|2,{50,115,0}}, +/* 4665 */ {(10<<2)|2,{50,115,0}}, +/* 4666 */ {(10<<2)|2,{50,115,0}}, +/* 4667 */ {(10<<2)|2,{50,115,0}}, +/* 4668 */ {(10<<2)|2,{50,115,0}}, +/* 4669 */ {(10<<2)|2,{50,115,0}}, +/* 4670 */ {(10<<2)|2,{50,115,0}}, +/* 4671 */ {(10<<2)|2,{50,115,0}}, +/* 4672 */ {(15<<2)|3,{50,116,48}}, +/* 4673 */ {(15<<2)|3,{50,116,48}}, +/* 4674 */ {(15<<2)|3,{50,116,49}}, +/* 4675 */ {(15<<2)|3,{50,116,49}}, +/* 4676 */ {(15<<2)|3,{50,116,50}}, +/* 4677 */ {(15<<2)|3,{50,116,50}}, +/* 4678 */ {(15<<2)|3,{50,116,97}}, +/* 4679 */ {(15<<2)|3,{50,116,97}}, +/* 4680 */ {(15<<2)|3,{50,116,99}}, +/* 4681 */ {(15<<2)|3,{50,116,99}}, +/* 4682 */ {(15<<2)|3,{50,116,101}}, +/* 4683 */ {(15<<2)|3,{50,116,101}}, +/* 4684 */ {(15<<2)|3,{50,116,105}}, +/* 4685 */ {(15<<2)|3,{50,116,105}}, +/* 4686 */ {(15<<2)|3,{50,116,111}}, +/* 4687 */ {(15<<2)|3,{50,116,111}}, +/* 4688 */ {(15<<2)|3,{50,116,115}}, +/* 4689 */ {(15<<2)|3,{50,116,115}}, +/* 4690 */ {(15<<2)|3,{50,116,116}}, +/* 4691 */ {(15<<2)|3,{50,116,116}}, +/* 4692 */ {(16<<2)|3,{50,116,32}}, +/* 4693 */ {(16<<2)|3,{50,116,37}}, +/* 4694 */ {(16<<2)|3,{50,116,45}}, +/* 4695 */ {(16<<2)|3,{50,116,46}}, +/* 4696 */ {(16<<2)|3,{50,116,47}}, +/* 4697 */ {(16<<2)|3,{50,116,51}}, +/* 4698 */ {(16<<2)|3,{50,116,52}}, +/* 4699 */ {(16<<2)|3,{50,116,53}}, +/* 4700 */ {(16<<2)|3,{50,116,54}}, +/* 4701 */ {(16<<2)|3,{50,116,55}}, +/* 4702 */ {(16<<2)|3,{50,116,56}}, +/* 4703 */ {(16<<2)|3,{50,116,57}}, +/* 4704 */ {(16<<2)|3,{50,116,61}}, +/* 4705 */ {(16<<2)|3,{50,116,65}}, +/* 4706 */ {(16<<2)|3,{50,116,95}}, +/* 4707 */ {(16<<2)|3,{50,116,98}}, +/* 4708 */ {(16<<2)|3,{50,116,100}}, +/* 4709 */ {(16<<2)|3,{50,116,102}}, +/* 4710 */ {(16<<2)|3,{50,116,103}}, +/* 4711 */ {(16<<2)|3,{50,116,104}}, +/* 4712 */ {(16<<2)|3,{50,116,108}}, +/* 4713 */ {(16<<2)|3,{50,116,109}}, +/* 4714 */ {(16<<2)|3,{50,116,110}}, +/* 4715 */ {(16<<2)|3,{50,116,112}}, +/* 4716 */ {(16<<2)|3,{50,116,114}}, +/* 4717 */ {(16<<2)|3,{50,116,117}}, +/* 4718 */ {(10<<2)|2,{50,116,0}}, +/* 4719 */ {(10<<2)|2,{50,116,0}}, +/* 4720 */ {(10<<2)|2,{50,116,0}}, +/* 4721 */ {(10<<2)|2,{50,116,0}}, +/* 4722 */ {(10<<2)|2,{50,116,0}}, +/* 4723 */ {(10<<2)|2,{50,116,0}}, +/* 4724 */ {(10<<2)|2,{50,116,0}}, +/* 4725 */ {(10<<2)|2,{50,116,0}}, +/* 4726 */ {(10<<2)|2,{50,116,0}}, +/* 4727 */ {(10<<2)|2,{50,116,0}}, +/* 4728 */ {(10<<2)|2,{50,116,0}}, +/* 4729 */ {(10<<2)|2,{50,116,0}}, +/* 4730 */ {(10<<2)|2,{50,116,0}}, +/* 4731 */ {(10<<2)|2,{50,116,0}}, +/* 4732 */ {(10<<2)|2,{50,116,0}}, +/* 4733 */ {(10<<2)|2,{50,116,0}}, +/* 4734 */ {(10<<2)|2,{50,116,0}}, +/* 4735 */ {(10<<2)|2,{50,116,0}}, +/* 4736 */ {(16<<2)|3,{50,32,48}}, +/* 4737 */ {(16<<2)|3,{50,32,49}}, +/* 4738 */ {(16<<2)|3,{50,32,50}}, +/* 4739 */ {(16<<2)|3,{50,32,97}}, +/* 4740 */ {(16<<2)|3,{50,32,99}}, +/* 4741 */ {(16<<2)|3,{50,32,101}}, +/* 4742 */ {(16<<2)|3,{50,32,105}}, +/* 4743 */ {(16<<2)|3,{50,32,111}}, +/* 4744 */ {(16<<2)|3,{50,32,115}}, +/* 4745 */ {(16<<2)|3,{50,32,116}}, +/* 4746 */ {(11<<2)|2,{50,32,0}}, +/* 4747 */ {(11<<2)|2,{50,32,0}}, +/* 4748 */ {(11<<2)|2,{50,32,0}}, +/* 4749 */ {(11<<2)|2,{50,32,0}}, +/* 4750 */ {(11<<2)|2,{50,32,0}}, +/* 4751 */ {(11<<2)|2,{50,32,0}}, +/* 4752 */ {(11<<2)|2,{50,32,0}}, +/* 4753 */ {(11<<2)|2,{50,32,0}}, +/* 4754 */ {(11<<2)|2,{50,32,0}}, +/* 4755 */ {(11<<2)|2,{50,32,0}}, +/* 4756 */ {(11<<2)|2,{50,32,0}}, +/* 4757 */ {(11<<2)|2,{50,32,0}}, +/* 4758 */ {(11<<2)|2,{50,32,0}}, +/* 4759 */ {(11<<2)|2,{50,32,0}}, +/* 4760 */ {(11<<2)|2,{50,32,0}}, +/* 4761 */ {(11<<2)|2,{50,32,0}}, +/* 4762 */ {(11<<2)|2,{50,32,0}}, +/* 4763 */ {(11<<2)|2,{50,32,0}}, +/* 4764 */ {(11<<2)|2,{50,32,0}}, +/* 4765 */ {(11<<2)|2,{50,32,0}}, +/* 4766 */ {(11<<2)|2,{50,32,0}}, +/* 4767 */ {(11<<2)|2,{50,32,0}}, +/* 4768 */ {(16<<2)|3,{50,37,48}}, +/* 4769 */ {(16<<2)|3,{50,37,49}}, +/* 4770 */ {(16<<2)|3,{50,37,50}}, +/* 4771 */ {(16<<2)|3,{50,37,97}}, +/* 4772 */ {(16<<2)|3,{50,37,99}}, +/* 4773 */ {(16<<2)|3,{50,37,101}}, +/* 4774 */ {(16<<2)|3,{50,37,105}}, +/* 4775 */ {(16<<2)|3,{50,37,111}}, +/* 4776 */ {(16<<2)|3,{50,37,115}}, +/* 4777 */ {(16<<2)|3,{50,37,116}}, +/* 4778 */ {(11<<2)|2,{50,37,0}}, +/* 4779 */ {(11<<2)|2,{50,37,0}}, +/* 4780 */ {(11<<2)|2,{50,37,0}}, +/* 4781 */ {(11<<2)|2,{50,37,0}}, +/* 4782 */ {(11<<2)|2,{50,37,0}}, +/* 4783 */ {(11<<2)|2,{50,37,0}}, +/* 4784 */ {(11<<2)|2,{50,37,0}}, +/* 4785 */ {(11<<2)|2,{50,37,0}}, +/* 4786 */ {(11<<2)|2,{50,37,0}}, +/* 4787 */ {(11<<2)|2,{50,37,0}}, +/* 4788 */ {(11<<2)|2,{50,37,0}}, +/* 4789 */ {(11<<2)|2,{50,37,0}}, +/* 4790 */ {(11<<2)|2,{50,37,0}}, +/* 4791 */ {(11<<2)|2,{50,37,0}}, +/* 4792 */ {(11<<2)|2,{50,37,0}}, +/* 4793 */ {(11<<2)|2,{50,37,0}}, +/* 4794 */ {(11<<2)|2,{50,37,0}}, +/* 4795 */ {(11<<2)|2,{50,37,0}}, +/* 4796 */ {(11<<2)|2,{50,37,0}}, +/* 4797 */ {(11<<2)|2,{50,37,0}}, +/* 4798 */ {(11<<2)|2,{50,37,0}}, +/* 4799 */ {(11<<2)|2,{50,37,0}}, +/* 4800 */ {(16<<2)|3,{50,45,48}}, +/* 4801 */ {(16<<2)|3,{50,45,49}}, +/* 4802 */ {(16<<2)|3,{50,45,50}}, +/* 4803 */ {(16<<2)|3,{50,45,97}}, +/* 4804 */ {(16<<2)|3,{50,45,99}}, +/* 4805 */ {(16<<2)|3,{50,45,101}}, +/* 4806 */ {(16<<2)|3,{50,45,105}}, +/* 4807 */ {(16<<2)|3,{50,45,111}}, +/* 4808 */ {(16<<2)|3,{50,45,115}}, +/* 4809 */ {(16<<2)|3,{50,45,116}}, +/* 4810 */ {(11<<2)|2,{50,45,0}}, +/* 4811 */ {(11<<2)|2,{50,45,0}}, +/* 4812 */ {(11<<2)|2,{50,45,0}}, +/* 4813 */ {(11<<2)|2,{50,45,0}}, +/* 4814 */ {(11<<2)|2,{50,45,0}}, +/* 4815 */ {(11<<2)|2,{50,45,0}}, +/* 4816 */ {(11<<2)|2,{50,45,0}}, +/* 4817 */ {(11<<2)|2,{50,45,0}}, +/* 4818 */ {(11<<2)|2,{50,45,0}}, +/* 4819 */ {(11<<2)|2,{50,45,0}}, +/* 4820 */ {(11<<2)|2,{50,45,0}}, +/* 4821 */ {(11<<2)|2,{50,45,0}}, +/* 4822 */ {(11<<2)|2,{50,45,0}}, +/* 4823 */ {(11<<2)|2,{50,45,0}}, +/* 4824 */ {(11<<2)|2,{50,45,0}}, +/* 4825 */ {(11<<2)|2,{50,45,0}}, +/* 4826 */ {(11<<2)|2,{50,45,0}}, +/* 4827 */ {(11<<2)|2,{50,45,0}}, +/* 4828 */ {(11<<2)|2,{50,45,0}}, +/* 4829 */ {(11<<2)|2,{50,45,0}}, +/* 4830 */ {(11<<2)|2,{50,45,0}}, +/* 4831 */ {(11<<2)|2,{50,45,0}}, +/* 4832 */ {(16<<2)|3,{50,46,48}}, +/* 4833 */ {(16<<2)|3,{50,46,49}}, +/* 4834 */ {(16<<2)|3,{50,46,50}}, +/* 4835 */ {(16<<2)|3,{50,46,97}}, +/* 4836 */ {(16<<2)|3,{50,46,99}}, +/* 4837 */ {(16<<2)|3,{50,46,101}}, +/* 4838 */ {(16<<2)|3,{50,46,105}}, +/* 4839 */ {(16<<2)|3,{50,46,111}}, +/* 4840 */ {(16<<2)|3,{50,46,115}}, +/* 4841 */ {(16<<2)|3,{50,46,116}}, +/* 4842 */ {(11<<2)|2,{50,46,0}}, +/* 4843 */ {(11<<2)|2,{50,46,0}}, +/* 4844 */ {(11<<2)|2,{50,46,0}}, +/* 4845 */ {(11<<2)|2,{50,46,0}}, +/* 4846 */ {(11<<2)|2,{50,46,0}}, +/* 4847 */ {(11<<2)|2,{50,46,0}}, +/* 4848 */ {(11<<2)|2,{50,46,0}}, +/* 4849 */ {(11<<2)|2,{50,46,0}}, +/* 4850 */ {(11<<2)|2,{50,46,0}}, +/* 4851 */ {(11<<2)|2,{50,46,0}}, +/* 4852 */ {(11<<2)|2,{50,46,0}}, +/* 4853 */ {(11<<2)|2,{50,46,0}}, +/* 4854 */ {(11<<2)|2,{50,46,0}}, +/* 4855 */ {(11<<2)|2,{50,46,0}}, +/* 4856 */ {(11<<2)|2,{50,46,0}}, +/* 4857 */ {(11<<2)|2,{50,46,0}}, +/* 4858 */ {(11<<2)|2,{50,46,0}}, +/* 4859 */ {(11<<2)|2,{50,46,0}}, +/* 4860 */ {(11<<2)|2,{50,46,0}}, +/* 4861 */ {(11<<2)|2,{50,46,0}}, +/* 4862 */ {(11<<2)|2,{50,46,0}}, +/* 4863 */ {(11<<2)|2,{50,46,0}}, +/* 4864 */ {(16<<2)|3,{50,47,48}}, +/* 4865 */ {(16<<2)|3,{50,47,49}}, +/* 4866 */ {(16<<2)|3,{50,47,50}}, +/* 4867 */ {(16<<2)|3,{50,47,97}}, +/* 4868 */ {(16<<2)|3,{50,47,99}}, +/* 4869 */ {(16<<2)|3,{50,47,101}}, +/* 4870 */ {(16<<2)|3,{50,47,105}}, +/* 4871 */ {(16<<2)|3,{50,47,111}}, +/* 4872 */ {(16<<2)|3,{50,47,115}}, +/* 4873 */ {(16<<2)|3,{50,47,116}}, +/* 4874 */ {(11<<2)|2,{50,47,0}}, +/* 4875 */ {(11<<2)|2,{50,47,0}}, +/* 4876 */ {(11<<2)|2,{50,47,0}}, +/* 4877 */ {(11<<2)|2,{50,47,0}}, +/* 4878 */ {(11<<2)|2,{50,47,0}}, +/* 4879 */ {(11<<2)|2,{50,47,0}}, +/* 4880 */ {(11<<2)|2,{50,47,0}}, +/* 4881 */ {(11<<2)|2,{50,47,0}}, +/* 4882 */ {(11<<2)|2,{50,47,0}}, +/* 4883 */ {(11<<2)|2,{50,47,0}}, +/* 4884 */ {(11<<2)|2,{50,47,0}}, +/* 4885 */ {(11<<2)|2,{50,47,0}}, +/* 4886 */ {(11<<2)|2,{50,47,0}}, +/* 4887 */ {(11<<2)|2,{50,47,0}}, +/* 4888 */ {(11<<2)|2,{50,47,0}}, +/* 4889 */ {(11<<2)|2,{50,47,0}}, +/* 4890 */ {(11<<2)|2,{50,47,0}}, +/* 4891 */ {(11<<2)|2,{50,47,0}}, +/* 4892 */ {(11<<2)|2,{50,47,0}}, +/* 4893 */ {(11<<2)|2,{50,47,0}}, +/* 4894 */ {(11<<2)|2,{50,47,0}}, +/* 4895 */ {(11<<2)|2,{50,47,0}}, +/* 4896 */ {(16<<2)|3,{50,51,48}}, +/* 4897 */ {(16<<2)|3,{50,51,49}}, +/* 4898 */ {(16<<2)|3,{50,51,50}}, +/* 4899 */ {(16<<2)|3,{50,51,97}}, +/* 4900 */ {(16<<2)|3,{50,51,99}}, +/* 4901 */ {(16<<2)|3,{50,51,101}}, +/* 4902 */ {(16<<2)|3,{50,51,105}}, +/* 4903 */ {(16<<2)|3,{50,51,111}}, +/* 4904 */ {(16<<2)|3,{50,51,115}}, +/* 4905 */ {(16<<2)|3,{50,51,116}}, +/* 4906 */ {(11<<2)|2,{50,51,0}}, +/* 4907 */ {(11<<2)|2,{50,51,0}}, +/* 4908 */ {(11<<2)|2,{50,51,0}}, +/* 4909 */ {(11<<2)|2,{50,51,0}}, +/* 4910 */ {(11<<2)|2,{50,51,0}}, +/* 4911 */ {(11<<2)|2,{50,51,0}}, +/* 4912 */ {(11<<2)|2,{50,51,0}}, +/* 4913 */ {(11<<2)|2,{50,51,0}}, +/* 4914 */ {(11<<2)|2,{50,51,0}}, +/* 4915 */ {(11<<2)|2,{50,51,0}}, +/* 4916 */ {(11<<2)|2,{50,51,0}}, +/* 4917 */ {(11<<2)|2,{50,51,0}}, +/* 4918 */ {(11<<2)|2,{50,51,0}}, +/* 4919 */ {(11<<2)|2,{50,51,0}}, +/* 4920 */ {(11<<2)|2,{50,51,0}}, +/* 4921 */ {(11<<2)|2,{50,51,0}}, +/* 4922 */ {(11<<2)|2,{50,51,0}}, +/* 4923 */ {(11<<2)|2,{50,51,0}}, +/* 4924 */ {(11<<2)|2,{50,51,0}}, +/* 4925 */ {(11<<2)|2,{50,51,0}}, +/* 4926 */ {(11<<2)|2,{50,51,0}}, +/* 4927 */ {(11<<2)|2,{50,51,0}}, +/* 4928 */ {(16<<2)|3,{50,52,48}}, +/* 4929 */ {(16<<2)|3,{50,52,49}}, +/* 4930 */ {(16<<2)|3,{50,52,50}}, +/* 4931 */ {(16<<2)|3,{50,52,97}}, +/* 4932 */ {(16<<2)|3,{50,52,99}}, +/* 4933 */ {(16<<2)|3,{50,52,101}}, +/* 4934 */ {(16<<2)|3,{50,52,105}}, +/* 4935 */ {(16<<2)|3,{50,52,111}}, +/* 4936 */ {(16<<2)|3,{50,52,115}}, +/* 4937 */ {(16<<2)|3,{50,52,116}}, +/* 4938 */ {(11<<2)|2,{50,52,0}}, +/* 4939 */ {(11<<2)|2,{50,52,0}}, +/* 4940 */ {(11<<2)|2,{50,52,0}}, +/* 4941 */ {(11<<2)|2,{50,52,0}}, +/* 4942 */ {(11<<2)|2,{50,52,0}}, +/* 4943 */ {(11<<2)|2,{50,52,0}}, +/* 4944 */ {(11<<2)|2,{50,52,0}}, +/* 4945 */ {(11<<2)|2,{50,52,0}}, +/* 4946 */ {(11<<2)|2,{50,52,0}}, +/* 4947 */ {(11<<2)|2,{50,52,0}}, +/* 4948 */ {(11<<2)|2,{50,52,0}}, +/* 4949 */ {(11<<2)|2,{50,52,0}}, +/* 4950 */ {(11<<2)|2,{50,52,0}}, +/* 4951 */ {(11<<2)|2,{50,52,0}}, +/* 4952 */ {(11<<2)|2,{50,52,0}}, +/* 4953 */ {(11<<2)|2,{50,52,0}}, +/* 4954 */ {(11<<2)|2,{50,52,0}}, +/* 4955 */ {(11<<2)|2,{50,52,0}}, +/* 4956 */ {(11<<2)|2,{50,52,0}}, +/* 4957 */ {(11<<2)|2,{50,52,0}}, +/* 4958 */ {(11<<2)|2,{50,52,0}}, +/* 4959 */ {(11<<2)|2,{50,52,0}}, +/* 4960 */ {(16<<2)|3,{50,53,48}}, +/* 4961 */ {(16<<2)|3,{50,53,49}}, +/* 4962 */ {(16<<2)|3,{50,53,50}}, +/* 4963 */ {(16<<2)|3,{50,53,97}}, +/* 4964 */ {(16<<2)|3,{50,53,99}}, +/* 4965 */ {(16<<2)|3,{50,53,101}}, +/* 4966 */ {(16<<2)|3,{50,53,105}}, +/* 4967 */ {(16<<2)|3,{50,53,111}}, +/* 4968 */ {(16<<2)|3,{50,53,115}}, +/* 4969 */ {(16<<2)|3,{50,53,116}}, +/* 4970 */ {(11<<2)|2,{50,53,0}}, +/* 4971 */ {(11<<2)|2,{50,53,0}}, +/* 4972 */ {(11<<2)|2,{50,53,0}}, +/* 4973 */ {(11<<2)|2,{50,53,0}}, +/* 4974 */ {(11<<2)|2,{50,53,0}}, +/* 4975 */ {(11<<2)|2,{50,53,0}}, +/* 4976 */ {(11<<2)|2,{50,53,0}}, +/* 4977 */ {(11<<2)|2,{50,53,0}}, +/* 4978 */ {(11<<2)|2,{50,53,0}}, +/* 4979 */ {(11<<2)|2,{50,53,0}}, +/* 4980 */ {(11<<2)|2,{50,53,0}}, +/* 4981 */ {(11<<2)|2,{50,53,0}}, +/* 4982 */ {(11<<2)|2,{50,53,0}}, +/* 4983 */ {(11<<2)|2,{50,53,0}}, +/* 4984 */ {(11<<2)|2,{50,53,0}}, +/* 4985 */ {(11<<2)|2,{50,53,0}}, +/* 4986 */ {(11<<2)|2,{50,53,0}}, +/* 4987 */ {(11<<2)|2,{50,53,0}}, +/* 4988 */ {(11<<2)|2,{50,53,0}}, +/* 4989 */ {(11<<2)|2,{50,53,0}}, +/* 4990 */ {(11<<2)|2,{50,53,0}}, +/* 4991 */ {(11<<2)|2,{50,53,0}}, +/* 4992 */ {(16<<2)|3,{50,54,48}}, +/* 4993 */ {(16<<2)|3,{50,54,49}}, +/* 4994 */ {(16<<2)|3,{50,54,50}}, +/* 4995 */ {(16<<2)|3,{50,54,97}}, +/* 4996 */ {(16<<2)|3,{50,54,99}}, +/* 4997 */ {(16<<2)|3,{50,54,101}}, +/* 4998 */ {(16<<2)|3,{50,54,105}}, +/* 4999 */ {(16<<2)|3,{50,54,111}}, +/* 5000 */ {(16<<2)|3,{50,54,115}}, +/* 5001 */ {(16<<2)|3,{50,54,116}}, +/* 5002 */ {(11<<2)|2,{50,54,0}}, +/* 5003 */ {(11<<2)|2,{50,54,0}}, +/* 5004 */ {(11<<2)|2,{50,54,0}}, +/* 5005 */ {(11<<2)|2,{50,54,0}}, +/* 5006 */ {(11<<2)|2,{50,54,0}}, +/* 5007 */ {(11<<2)|2,{50,54,0}}, +/* 5008 */ {(11<<2)|2,{50,54,0}}, +/* 5009 */ {(11<<2)|2,{50,54,0}}, +/* 5010 */ {(11<<2)|2,{50,54,0}}, +/* 5011 */ {(11<<2)|2,{50,54,0}}, +/* 5012 */ {(11<<2)|2,{50,54,0}}, +/* 5013 */ {(11<<2)|2,{50,54,0}}, +/* 5014 */ {(11<<2)|2,{50,54,0}}, +/* 5015 */ {(11<<2)|2,{50,54,0}}, +/* 5016 */ {(11<<2)|2,{50,54,0}}, +/* 5017 */ {(11<<2)|2,{50,54,0}}, +/* 5018 */ {(11<<2)|2,{50,54,0}}, +/* 5019 */ {(11<<2)|2,{50,54,0}}, +/* 5020 */ {(11<<2)|2,{50,54,0}}, +/* 5021 */ {(11<<2)|2,{50,54,0}}, +/* 5022 */ {(11<<2)|2,{50,54,0}}, +/* 5023 */ {(11<<2)|2,{50,54,0}}, +/* 5024 */ {(16<<2)|3,{50,55,48}}, +/* 5025 */ {(16<<2)|3,{50,55,49}}, +/* 5026 */ {(16<<2)|3,{50,55,50}}, +/* 5027 */ {(16<<2)|3,{50,55,97}}, +/* 5028 */ {(16<<2)|3,{50,55,99}}, +/* 5029 */ {(16<<2)|3,{50,55,101}}, +/* 5030 */ {(16<<2)|3,{50,55,105}}, +/* 5031 */ {(16<<2)|3,{50,55,111}}, +/* 5032 */ {(16<<2)|3,{50,55,115}}, +/* 5033 */ {(16<<2)|3,{50,55,116}}, +/* 5034 */ {(11<<2)|2,{50,55,0}}, +/* 5035 */ {(11<<2)|2,{50,55,0}}, +/* 5036 */ {(11<<2)|2,{50,55,0}}, +/* 5037 */ {(11<<2)|2,{50,55,0}}, +/* 5038 */ {(11<<2)|2,{50,55,0}}, +/* 5039 */ {(11<<2)|2,{50,55,0}}, +/* 5040 */ {(11<<2)|2,{50,55,0}}, +/* 5041 */ {(11<<2)|2,{50,55,0}}, +/* 5042 */ {(11<<2)|2,{50,55,0}}, +/* 5043 */ {(11<<2)|2,{50,55,0}}, +/* 5044 */ {(11<<2)|2,{50,55,0}}, +/* 5045 */ {(11<<2)|2,{50,55,0}}, +/* 5046 */ {(11<<2)|2,{50,55,0}}, +/* 5047 */ {(11<<2)|2,{50,55,0}}, +/* 5048 */ {(11<<2)|2,{50,55,0}}, +/* 5049 */ {(11<<2)|2,{50,55,0}}, +/* 5050 */ {(11<<2)|2,{50,55,0}}, +/* 5051 */ {(11<<2)|2,{50,55,0}}, +/* 5052 */ {(11<<2)|2,{50,55,0}}, +/* 5053 */ {(11<<2)|2,{50,55,0}}, +/* 5054 */ {(11<<2)|2,{50,55,0}}, +/* 5055 */ {(11<<2)|2,{50,55,0}}, +/* 5056 */ {(16<<2)|3,{50,56,48}}, +/* 5057 */ {(16<<2)|3,{50,56,49}}, +/* 5058 */ {(16<<2)|3,{50,56,50}}, +/* 5059 */ {(16<<2)|3,{50,56,97}}, +/* 5060 */ {(16<<2)|3,{50,56,99}}, +/* 5061 */ {(16<<2)|3,{50,56,101}}, +/* 5062 */ {(16<<2)|3,{50,56,105}}, +/* 5063 */ {(16<<2)|3,{50,56,111}}, +/* 5064 */ {(16<<2)|3,{50,56,115}}, +/* 5065 */ {(16<<2)|3,{50,56,116}}, +/* 5066 */ {(11<<2)|2,{50,56,0}}, +/* 5067 */ {(11<<2)|2,{50,56,0}}, +/* 5068 */ {(11<<2)|2,{50,56,0}}, +/* 5069 */ {(11<<2)|2,{50,56,0}}, +/* 5070 */ {(11<<2)|2,{50,56,0}}, +/* 5071 */ {(11<<2)|2,{50,56,0}}, +/* 5072 */ {(11<<2)|2,{50,56,0}}, +/* 5073 */ {(11<<2)|2,{50,56,0}}, +/* 5074 */ {(11<<2)|2,{50,56,0}}, +/* 5075 */ {(11<<2)|2,{50,56,0}}, +/* 5076 */ {(11<<2)|2,{50,56,0}}, +/* 5077 */ {(11<<2)|2,{50,56,0}}, +/* 5078 */ {(11<<2)|2,{50,56,0}}, +/* 5079 */ {(11<<2)|2,{50,56,0}}, +/* 5080 */ {(11<<2)|2,{50,56,0}}, +/* 5081 */ {(11<<2)|2,{50,56,0}}, +/* 5082 */ {(11<<2)|2,{50,56,0}}, +/* 5083 */ {(11<<2)|2,{50,56,0}}, +/* 5084 */ {(11<<2)|2,{50,56,0}}, +/* 5085 */ {(11<<2)|2,{50,56,0}}, +/* 5086 */ {(11<<2)|2,{50,56,0}}, +/* 5087 */ {(11<<2)|2,{50,56,0}}, +/* 5088 */ {(16<<2)|3,{50,57,48}}, +/* 5089 */ {(16<<2)|3,{50,57,49}}, +/* 5090 */ {(16<<2)|3,{50,57,50}}, +/* 5091 */ {(16<<2)|3,{50,57,97}}, +/* 5092 */ {(16<<2)|3,{50,57,99}}, +/* 5093 */ {(16<<2)|3,{50,57,101}}, +/* 5094 */ {(16<<2)|3,{50,57,105}}, +/* 5095 */ {(16<<2)|3,{50,57,111}}, +/* 5096 */ {(16<<2)|3,{50,57,115}}, +/* 5097 */ {(16<<2)|3,{50,57,116}}, +/* 5098 */ {(11<<2)|2,{50,57,0}}, +/* 5099 */ {(11<<2)|2,{50,57,0}}, +/* 5100 */ {(11<<2)|2,{50,57,0}}, +/* 5101 */ {(11<<2)|2,{50,57,0}}, +/* 5102 */ {(11<<2)|2,{50,57,0}}, +/* 5103 */ {(11<<2)|2,{50,57,0}}, +/* 5104 */ {(11<<2)|2,{50,57,0}}, +/* 5105 */ {(11<<2)|2,{50,57,0}}, +/* 5106 */ {(11<<2)|2,{50,57,0}}, +/* 5107 */ {(11<<2)|2,{50,57,0}}, +/* 5108 */ {(11<<2)|2,{50,57,0}}, +/* 5109 */ {(11<<2)|2,{50,57,0}}, +/* 5110 */ {(11<<2)|2,{50,57,0}}, +/* 5111 */ {(11<<2)|2,{50,57,0}}, +/* 5112 */ {(11<<2)|2,{50,57,0}}, +/* 5113 */ {(11<<2)|2,{50,57,0}}, +/* 5114 */ {(11<<2)|2,{50,57,0}}, +/* 5115 */ {(11<<2)|2,{50,57,0}}, +/* 5116 */ {(11<<2)|2,{50,57,0}}, +/* 5117 */ {(11<<2)|2,{50,57,0}}, +/* 5118 */ {(11<<2)|2,{50,57,0}}, +/* 5119 */ {(11<<2)|2,{50,57,0}}, +/* 5120 */ {(16<<2)|3,{50,61,48}}, +/* 5121 */ {(16<<2)|3,{50,61,49}}, +/* 5122 */ {(16<<2)|3,{50,61,50}}, +/* 5123 */ {(16<<2)|3,{50,61,97}}, +/* 5124 */ {(16<<2)|3,{50,61,99}}, +/* 5125 */ {(16<<2)|3,{50,61,101}}, +/* 5126 */ {(16<<2)|3,{50,61,105}}, +/* 5127 */ {(16<<2)|3,{50,61,111}}, +/* 5128 */ {(16<<2)|3,{50,61,115}}, +/* 5129 */ {(16<<2)|3,{50,61,116}}, +/* 5130 */ {(11<<2)|2,{50,61,0}}, +/* 5131 */ {(11<<2)|2,{50,61,0}}, +/* 5132 */ {(11<<2)|2,{50,61,0}}, +/* 5133 */ {(11<<2)|2,{50,61,0}}, +/* 5134 */ {(11<<2)|2,{50,61,0}}, +/* 5135 */ {(11<<2)|2,{50,61,0}}, +/* 5136 */ {(11<<2)|2,{50,61,0}}, +/* 5137 */ {(11<<2)|2,{50,61,0}}, +/* 5138 */ {(11<<2)|2,{50,61,0}}, +/* 5139 */ {(11<<2)|2,{50,61,0}}, +/* 5140 */ {(11<<2)|2,{50,61,0}}, +/* 5141 */ {(11<<2)|2,{50,61,0}}, +/* 5142 */ {(11<<2)|2,{50,61,0}}, +/* 5143 */ {(11<<2)|2,{50,61,0}}, +/* 5144 */ {(11<<2)|2,{50,61,0}}, +/* 5145 */ {(11<<2)|2,{50,61,0}}, +/* 5146 */ {(11<<2)|2,{50,61,0}}, +/* 5147 */ {(11<<2)|2,{50,61,0}}, +/* 5148 */ {(11<<2)|2,{50,61,0}}, +/* 5149 */ {(11<<2)|2,{50,61,0}}, +/* 5150 */ {(11<<2)|2,{50,61,0}}, +/* 5151 */ {(11<<2)|2,{50,61,0}}, +/* 5152 */ {(16<<2)|3,{50,65,48}}, +/* 5153 */ {(16<<2)|3,{50,65,49}}, +/* 5154 */ {(16<<2)|3,{50,65,50}}, +/* 5155 */ {(16<<2)|3,{50,65,97}}, +/* 5156 */ {(16<<2)|3,{50,65,99}}, +/* 5157 */ {(16<<2)|3,{50,65,101}}, +/* 5158 */ {(16<<2)|3,{50,65,105}}, +/* 5159 */ {(16<<2)|3,{50,65,111}}, +/* 5160 */ {(16<<2)|3,{50,65,115}}, +/* 5161 */ {(16<<2)|3,{50,65,116}}, +/* 5162 */ {(11<<2)|2,{50,65,0}}, +/* 5163 */ {(11<<2)|2,{50,65,0}}, +/* 5164 */ {(11<<2)|2,{50,65,0}}, +/* 5165 */ {(11<<2)|2,{50,65,0}}, +/* 5166 */ {(11<<2)|2,{50,65,0}}, +/* 5167 */ {(11<<2)|2,{50,65,0}}, +/* 5168 */ {(11<<2)|2,{50,65,0}}, +/* 5169 */ {(11<<2)|2,{50,65,0}}, +/* 5170 */ {(11<<2)|2,{50,65,0}}, +/* 5171 */ {(11<<2)|2,{50,65,0}}, +/* 5172 */ {(11<<2)|2,{50,65,0}}, +/* 5173 */ {(11<<2)|2,{50,65,0}}, +/* 5174 */ {(11<<2)|2,{50,65,0}}, +/* 5175 */ {(11<<2)|2,{50,65,0}}, +/* 5176 */ {(11<<2)|2,{50,65,0}}, +/* 5177 */ {(11<<2)|2,{50,65,0}}, +/* 5178 */ {(11<<2)|2,{50,65,0}}, +/* 5179 */ {(11<<2)|2,{50,65,0}}, +/* 5180 */ {(11<<2)|2,{50,65,0}}, +/* 5181 */ {(11<<2)|2,{50,65,0}}, +/* 5182 */ {(11<<2)|2,{50,65,0}}, +/* 5183 */ {(11<<2)|2,{50,65,0}}, +/* 5184 */ {(16<<2)|3,{50,95,48}}, +/* 5185 */ {(16<<2)|3,{50,95,49}}, +/* 5186 */ {(16<<2)|3,{50,95,50}}, +/* 5187 */ {(16<<2)|3,{50,95,97}}, +/* 5188 */ {(16<<2)|3,{50,95,99}}, +/* 5189 */ {(16<<2)|3,{50,95,101}}, +/* 5190 */ {(16<<2)|3,{50,95,105}}, +/* 5191 */ {(16<<2)|3,{50,95,111}}, +/* 5192 */ {(16<<2)|3,{50,95,115}}, +/* 5193 */ {(16<<2)|3,{50,95,116}}, +/* 5194 */ {(11<<2)|2,{50,95,0}}, +/* 5195 */ {(11<<2)|2,{50,95,0}}, +/* 5196 */ {(11<<2)|2,{50,95,0}}, +/* 5197 */ {(11<<2)|2,{50,95,0}}, +/* 5198 */ {(11<<2)|2,{50,95,0}}, +/* 5199 */ {(11<<2)|2,{50,95,0}}, +/* 5200 */ {(11<<2)|2,{50,95,0}}, +/* 5201 */ {(11<<2)|2,{50,95,0}}, +/* 5202 */ {(11<<2)|2,{50,95,0}}, +/* 5203 */ {(11<<2)|2,{50,95,0}}, +/* 5204 */ {(11<<2)|2,{50,95,0}}, +/* 5205 */ {(11<<2)|2,{50,95,0}}, +/* 5206 */ {(11<<2)|2,{50,95,0}}, +/* 5207 */ {(11<<2)|2,{50,95,0}}, +/* 5208 */ {(11<<2)|2,{50,95,0}}, +/* 5209 */ {(11<<2)|2,{50,95,0}}, +/* 5210 */ {(11<<2)|2,{50,95,0}}, +/* 5211 */ {(11<<2)|2,{50,95,0}}, +/* 5212 */ {(11<<2)|2,{50,95,0}}, +/* 5213 */ {(11<<2)|2,{50,95,0}}, +/* 5214 */ {(11<<2)|2,{50,95,0}}, +/* 5215 */ {(11<<2)|2,{50,95,0}}, +/* 5216 */ {(16<<2)|3,{50,98,48}}, +/* 5217 */ {(16<<2)|3,{50,98,49}}, +/* 5218 */ {(16<<2)|3,{50,98,50}}, +/* 5219 */ {(16<<2)|3,{50,98,97}}, +/* 5220 */ {(16<<2)|3,{50,98,99}}, +/* 5221 */ {(16<<2)|3,{50,98,101}}, +/* 5222 */ {(16<<2)|3,{50,98,105}}, +/* 5223 */ {(16<<2)|3,{50,98,111}}, +/* 5224 */ {(16<<2)|3,{50,98,115}}, +/* 5225 */ {(16<<2)|3,{50,98,116}}, +/* 5226 */ {(11<<2)|2,{50,98,0}}, +/* 5227 */ {(11<<2)|2,{50,98,0}}, +/* 5228 */ {(11<<2)|2,{50,98,0}}, +/* 5229 */ {(11<<2)|2,{50,98,0}}, +/* 5230 */ {(11<<2)|2,{50,98,0}}, +/* 5231 */ {(11<<2)|2,{50,98,0}}, +/* 5232 */ {(11<<2)|2,{50,98,0}}, +/* 5233 */ {(11<<2)|2,{50,98,0}}, +/* 5234 */ {(11<<2)|2,{50,98,0}}, +/* 5235 */ {(11<<2)|2,{50,98,0}}, +/* 5236 */ {(11<<2)|2,{50,98,0}}, +/* 5237 */ {(11<<2)|2,{50,98,0}}, +/* 5238 */ {(11<<2)|2,{50,98,0}}, +/* 5239 */ {(11<<2)|2,{50,98,0}}, +/* 5240 */ {(11<<2)|2,{50,98,0}}, +/* 5241 */ {(11<<2)|2,{50,98,0}}, +/* 5242 */ {(11<<2)|2,{50,98,0}}, +/* 5243 */ {(11<<2)|2,{50,98,0}}, +/* 5244 */ {(11<<2)|2,{50,98,0}}, +/* 5245 */ {(11<<2)|2,{50,98,0}}, +/* 5246 */ {(11<<2)|2,{50,98,0}}, +/* 5247 */ {(11<<2)|2,{50,98,0}}, +/* 5248 */ {(16<<2)|3,{50,100,48}}, +/* 5249 */ {(16<<2)|3,{50,100,49}}, +/* 5250 */ {(16<<2)|3,{50,100,50}}, +/* 5251 */ {(16<<2)|3,{50,100,97}}, +/* 5252 */ {(16<<2)|3,{50,100,99}}, +/* 5253 */ {(16<<2)|3,{50,100,101}}, +/* 5254 */ {(16<<2)|3,{50,100,105}}, +/* 5255 */ {(16<<2)|3,{50,100,111}}, +/* 5256 */ {(16<<2)|3,{50,100,115}}, +/* 5257 */ {(16<<2)|3,{50,100,116}}, +/* 5258 */ {(11<<2)|2,{50,100,0}}, +/* 5259 */ {(11<<2)|2,{50,100,0}}, +/* 5260 */ {(11<<2)|2,{50,100,0}}, +/* 5261 */ {(11<<2)|2,{50,100,0}}, +/* 5262 */ {(11<<2)|2,{50,100,0}}, +/* 5263 */ {(11<<2)|2,{50,100,0}}, +/* 5264 */ {(11<<2)|2,{50,100,0}}, +/* 5265 */ {(11<<2)|2,{50,100,0}}, +/* 5266 */ {(11<<2)|2,{50,100,0}}, +/* 5267 */ {(11<<2)|2,{50,100,0}}, +/* 5268 */ {(11<<2)|2,{50,100,0}}, +/* 5269 */ {(11<<2)|2,{50,100,0}}, +/* 5270 */ {(11<<2)|2,{50,100,0}}, +/* 5271 */ {(11<<2)|2,{50,100,0}}, +/* 5272 */ {(11<<2)|2,{50,100,0}}, +/* 5273 */ {(11<<2)|2,{50,100,0}}, +/* 5274 */ {(11<<2)|2,{50,100,0}}, +/* 5275 */ {(11<<2)|2,{50,100,0}}, +/* 5276 */ {(11<<2)|2,{50,100,0}}, +/* 5277 */ {(11<<2)|2,{50,100,0}}, +/* 5278 */ {(11<<2)|2,{50,100,0}}, +/* 5279 */ {(11<<2)|2,{50,100,0}}, +/* 5280 */ {(16<<2)|3,{50,102,48}}, +/* 5281 */ {(16<<2)|3,{50,102,49}}, +/* 5282 */ {(16<<2)|3,{50,102,50}}, +/* 5283 */ {(16<<2)|3,{50,102,97}}, +/* 5284 */ {(16<<2)|3,{50,102,99}}, +/* 5285 */ {(16<<2)|3,{50,102,101}}, +/* 5286 */ {(16<<2)|3,{50,102,105}}, +/* 5287 */ {(16<<2)|3,{50,102,111}}, +/* 5288 */ {(16<<2)|3,{50,102,115}}, +/* 5289 */ {(16<<2)|3,{50,102,116}}, +/* 5290 */ {(11<<2)|2,{50,102,0}}, +/* 5291 */ {(11<<2)|2,{50,102,0}}, +/* 5292 */ {(11<<2)|2,{50,102,0}}, +/* 5293 */ {(11<<2)|2,{50,102,0}}, +/* 5294 */ {(11<<2)|2,{50,102,0}}, +/* 5295 */ {(11<<2)|2,{50,102,0}}, +/* 5296 */ {(11<<2)|2,{50,102,0}}, +/* 5297 */ {(11<<2)|2,{50,102,0}}, +/* 5298 */ {(11<<2)|2,{50,102,0}}, +/* 5299 */ {(11<<2)|2,{50,102,0}}, +/* 5300 */ {(11<<2)|2,{50,102,0}}, +/* 5301 */ {(11<<2)|2,{50,102,0}}, +/* 5302 */ {(11<<2)|2,{50,102,0}}, +/* 5303 */ {(11<<2)|2,{50,102,0}}, +/* 5304 */ {(11<<2)|2,{50,102,0}}, +/* 5305 */ {(11<<2)|2,{50,102,0}}, +/* 5306 */ {(11<<2)|2,{50,102,0}}, +/* 5307 */ {(11<<2)|2,{50,102,0}}, +/* 5308 */ {(11<<2)|2,{50,102,0}}, +/* 5309 */ {(11<<2)|2,{50,102,0}}, +/* 5310 */ {(11<<2)|2,{50,102,0}}, +/* 5311 */ {(11<<2)|2,{50,102,0}}, +/* 5312 */ {(16<<2)|3,{50,103,48}}, +/* 5313 */ {(16<<2)|3,{50,103,49}}, +/* 5314 */ {(16<<2)|3,{50,103,50}}, +/* 5315 */ {(16<<2)|3,{50,103,97}}, +/* 5316 */ {(16<<2)|3,{50,103,99}}, +/* 5317 */ {(16<<2)|3,{50,103,101}}, +/* 5318 */ {(16<<2)|3,{50,103,105}}, +/* 5319 */ {(16<<2)|3,{50,103,111}}, +/* 5320 */ {(16<<2)|3,{50,103,115}}, +/* 5321 */ {(16<<2)|3,{50,103,116}}, +/* 5322 */ {(11<<2)|2,{50,103,0}}, +/* 5323 */ {(11<<2)|2,{50,103,0}}, +/* 5324 */ {(11<<2)|2,{50,103,0}}, +/* 5325 */ {(11<<2)|2,{50,103,0}}, +/* 5326 */ {(11<<2)|2,{50,103,0}}, +/* 5327 */ {(11<<2)|2,{50,103,0}}, +/* 5328 */ {(11<<2)|2,{50,103,0}}, +/* 5329 */ {(11<<2)|2,{50,103,0}}, +/* 5330 */ {(11<<2)|2,{50,103,0}}, +/* 5331 */ {(11<<2)|2,{50,103,0}}, +/* 5332 */ {(11<<2)|2,{50,103,0}}, +/* 5333 */ {(11<<2)|2,{50,103,0}}, +/* 5334 */ {(11<<2)|2,{50,103,0}}, +/* 5335 */ {(11<<2)|2,{50,103,0}}, +/* 5336 */ {(11<<2)|2,{50,103,0}}, +/* 5337 */ {(11<<2)|2,{50,103,0}}, +/* 5338 */ {(11<<2)|2,{50,103,0}}, +/* 5339 */ {(11<<2)|2,{50,103,0}}, +/* 5340 */ {(11<<2)|2,{50,103,0}}, +/* 5341 */ {(11<<2)|2,{50,103,0}}, +/* 5342 */ {(11<<2)|2,{50,103,0}}, +/* 5343 */ {(11<<2)|2,{50,103,0}}, +/* 5344 */ {(16<<2)|3,{50,104,48}}, +/* 5345 */ {(16<<2)|3,{50,104,49}}, +/* 5346 */ {(16<<2)|3,{50,104,50}}, +/* 5347 */ {(16<<2)|3,{50,104,97}}, +/* 5348 */ {(16<<2)|3,{50,104,99}}, +/* 5349 */ {(16<<2)|3,{50,104,101}}, +/* 5350 */ {(16<<2)|3,{50,104,105}}, +/* 5351 */ {(16<<2)|3,{50,104,111}}, +/* 5352 */ {(16<<2)|3,{50,104,115}}, +/* 5353 */ {(16<<2)|3,{50,104,116}}, +/* 5354 */ {(11<<2)|2,{50,104,0}}, +/* 5355 */ {(11<<2)|2,{50,104,0}}, +/* 5356 */ {(11<<2)|2,{50,104,0}}, +/* 5357 */ {(11<<2)|2,{50,104,0}}, +/* 5358 */ {(11<<2)|2,{50,104,0}}, +/* 5359 */ {(11<<2)|2,{50,104,0}}, +/* 5360 */ {(11<<2)|2,{50,104,0}}, +/* 5361 */ {(11<<2)|2,{50,104,0}}, +/* 5362 */ {(11<<2)|2,{50,104,0}}, +/* 5363 */ {(11<<2)|2,{50,104,0}}, +/* 5364 */ {(11<<2)|2,{50,104,0}}, +/* 5365 */ {(11<<2)|2,{50,104,0}}, +/* 5366 */ {(11<<2)|2,{50,104,0}}, +/* 5367 */ {(11<<2)|2,{50,104,0}}, +/* 5368 */ {(11<<2)|2,{50,104,0}}, +/* 5369 */ {(11<<2)|2,{50,104,0}}, +/* 5370 */ {(11<<2)|2,{50,104,0}}, +/* 5371 */ {(11<<2)|2,{50,104,0}}, +/* 5372 */ {(11<<2)|2,{50,104,0}}, +/* 5373 */ {(11<<2)|2,{50,104,0}}, +/* 5374 */ {(11<<2)|2,{50,104,0}}, +/* 5375 */ {(11<<2)|2,{50,104,0}}, +/* 5376 */ {(16<<2)|3,{50,108,48}}, +/* 5377 */ {(16<<2)|3,{50,108,49}}, +/* 5378 */ {(16<<2)|3,{50,108,50}}, +/* 5379 */ {(16<<2)|3,{50,108,97}}, +/* 5380 */ {(16<<2)|3,{50,108,99}}, +/* 5381 */ {(16<<2)|3,{50,108,101}}, +/* 5382 */ {(16<<2)|3,{50,108,105}}, +/* 5383 */ {(16<<2)|3,{50,108,111}}, +/* 5384 */ {(16<<2)|3,{50,108,115}}, +/* 5385 */ {(16<<2)|3,{50,108,116}}, +/* 5386 */ {(11<<2)|2,{50,108,0}}, +/* 5387 */ {(11<<2)|2,{50,108,0}}, +/* 5388 */ {(11<<2)|2,{50,108,0}}, +/* 5389 */ {(11<<2)|2,{50,108,0}}, +/* 5390 */ {(11<<2)|2,{50,108,0}}, +/* 5391 */ {(11<<2)|2,{50,108,0}}, +/* 5392 */ {(11<<2)|2,{50,108,0}}, +/* 5393 */ {(11<<2)|2,{50,108,0}}, +/* 5394 */ {(11<<2)|2,{50,108,0}}, +/* 5395 */ {(11<<2)|2,{50,108,0}}, +/* 5396 */ {(11<<2)|2,{50,108,0}}, +/* 5397 */ {(11<<2)|2,{50,108,0}}, +/* 5398 */ {(11<<2)|2,{50,108,0}}, +/* 5399 */ {(11<<2)|2,{50,108,0}}, +/* 5400 */ {(11<<2)|2,{50,108,0}}, +/* 5401 */ {(11<<2)|2,{50,108,0}}, +/* 5402 */ {(11<<2)|2,{50,108,0}}, +/* 5403 */ {(11<<2)|2,{50,108,0}}, +/* 5404 */ {(11<<2)|2,{50,108,0}}, +/* 5405 */ {(11<<2)|2,{50,108,0}}, +/* 5406 */ {(11<<2)|2,{50,108,0}}, +/* 5407 */ {(11<<2)|2,{50,108,0}}, +/* 5408 */ {(16<<2)|3,{50,109,48}}, +/* 5409 */ {(16<<2)|3,{50,109,49}}, +/* 5410 */ {(16<<2)|3,{50,109,50}}, +/* 5411 */ {(16<<2)|3,{50,109,97}}, +/* 5412 */ {(16<<2)|3,{50,109,99}}, +/* 5413 */ {(16<<2)|3,{50,109,101}}, +/* 5414 */ {(16<<2)|3,{50,109,105}}, +/* 5415 */ {(16<<2)|3,{50,109,111}}, +/* 5416 */ {(16<<2)|3,{50,109,115}}, +/* 5417 */ {(16<<2)|3,{50,109,116}}, +/* 5418 */ {(11<<2)|2,{50,109,0}}, +/* 5419 */ {(11<<2)|2,{50,109,0}}, +/* 5420 */ {(11<<2)|2,{50,109,0}}, +/* 5421 */ {(11<<2)|2,{50,109,0}}, +/* 5422 */ {(11<<2)|2,{50,109,0}}, +/* 5423 */ {(11<<2)|2,{50,109,0}}, +/* 5424 */ {(11<<2)|2,{50,109,0}}, +/* 5425 */ {(11<<2)|2,{50,109,0}}, +/* 5426 */ {(11<<2)|2,{50,109,0}}, +/* 5427 */ {(11<<2)|2,{50,109,0}}, +/* 5428 */ {(11<<2)|2,{50,109,0}}, +/* 5429 */ {(11<<2)|2,{50,109,0}}, +/* 5430 */ {(11<<2)|2,{50,109,0}}, +/* 5431 */ {(11<<2)|2,{50,109,0}}, +/* 5432 */ {(11<<2)|2,{50,109,0}}, +/* 5433 */ {(11<<2)|2,{50,109,0}}, +/* 5434 */ {(11<<2)|2,{50,109,0}}, +/* 5435 */ {(11<<2)|2,{50,109,0}}, +/* 5436 */ {(11<<2)|2,{50,109,0}}, +/* 5437 */ {(11<<2)|2,{50,109,0}}, +/* 5438 */ {(11<<2)|2,{50,109,0}}, +/* 5439 */ {(11<<2)|2,{50,109,0}}, +/* 5440 */ {(16<<2)|3,{50,110,48}}, +/* 5441 */ {(16<<2)|3,{50,110,49}}, +/* 5442 */ {(16<<2)|3,{50,110,50}}, +/* 5443 */ {(16<<2)|3,{50,110,97}}, +/* 5444 */ {(16<<2)|3,{50,110,99}}, +/* 5445 */ {(16<<2)|3,{50,110,101}}, +/* 5446 */ {(16<<2)|3,{50,110,105}}, +/* 5447 */ {(16<<2)|3,{50,110,111}}, +/* 5448 */ {(16<<2)|3,{50,110,115}}, +/* 5449 */ {(16<<2)|3,{50,110,116}}, +/* 5450 */ {(11<<2)|2,{50,110,0}}, +/* 5451 */ {(11<<2)|2,{50,110,0}}, +/* 5452 */ {(11<<2)|2,{50,110,0}}, +/* 5453 */ {(11<<2)|2,{50,110,0}}, +/* 5454 */ {(11<<2)|2,{50,110,0}}, +/* 5455 */ {(11<<2)|2,{50,110,0}}, +/* 5456 */ {(11<<2)|2,{50,110,0}}, +/* 5457 */ {(11<<2)|2,{50,110,0}}, +/* 5458 */ {(11<<2)|2,{50,110,0}}, +/* 5459 */ {(11<<2)|2,{50,110,0}}, +/* 5460 */ {(11<<2)|2,{50,110,0}}, +/* 5461 */ {(11<<2)|2,{50,110,0}}, +/* 5462 */ {(11<<2)|2,{50,110,0}}, +/* 5463 */ {(11<<2)|2,{50,110,0}}, +/* 5464 */ {(11<<2)|2,{50,110,0}}, +/* 5465 */ {(11<<2)|2,{50,110,0}}, +/* 5466 */ {(11<<2)|2,{50,110,0}}, +/* 5467 */ {(11<<2)|2,{50,110,0}}, +/* 5468 */ {(11<<2)|2,{50,110,0}}, +/* 5469 */ {(11<<2)|2,{50,110,0}}, +/* 5470 */ {(11<<2)|2,{50,110,0}}, +/* 5471 */ {(11<<2)|2,{50,110,0}}, +/* 5472 */ {(16<<2)|3,{50,112,48}}, +/* 5473 */ {(16<<2)|3,{50,112,49}}, +/* 5474 */ {(16<<2)|3,{50,112,50}}, +/* 5475 */ {(16<<2)|3,{50,112,97}}, +/* 5476 */ {(16<<2)|3,{50,112,99}}, +/* 5477 */ {(16<<2)|3,{50,112,101}}, +/* 5478 */ {(16<<2)|3,{50,112,105}}, +/* 5479 */ {(16<<2)|3,{50,112,111}}, +/* 5480 */ {(16<<2)|3,{50,112,115}}, +/* 5481 */ {(16<<2)|3,{50,112,116}}, +/* 5482 */ {(11<<2)|2,{50,112,0}}, +/* 5483 */ {(11<<2)|2,{50,112,0}}, +/* 5484 */ {(11<<2)|2,{50,112,0}}, +/* 5485 */ {(11<<2)|2,{50,112,0}}, +/* 5486 */ {(11<<2)|2,{50,112,0}}, +/* 5487 */ {(11<<2)|2,{50,112,0}}, +/* 5488 */ {(11<<2)|2,{50,112,0}}, +/* 5489 */ {(11<<2)|2,{50,112,0}}, +/* 5490 */ {(11<<2)|2,{50,112,0}}, +/* 5491 */ {(11<<2)|2,{50,112,0}}, +/* 5492 */ {(11<<2)|2,{50,112,0}}, +/* 5493 */ {(11<<2)|2,{50,112,0}}, +/* 5494 */ {(11<<2)|2,{50,112,0}}, +/* 5495 */ {(11<<2)|2,{50,112,0}}, +/* 5496 */ {(11<<2)|2,{50,112,0}}, +/* 5497 */ {(11<<2)|2,{50,112,0}}, +/* 5498 */ {(11<<2)|2,{50,112,0}}, +/* 5499 */ {(11<<2)|2,{50,112,0}}, +/* 5500 */ {(11<<2)|2,{50,112,0}}, +/* 5501 */ {(11<<2)|2,{50,112,0}}, +/* 5502 */ {(11<<2)|2,{50,112,0}}, +/* 5503 */ {(11<<2)|2,{50,112,0}}, +/* 5504 */ {(16<<2)|3,{50,114,48}}, +/* 5505 */ {(16<<2)|3,{50,114,49}}, +/* 5506 */ {(16<<2)|3,{50,114,50}}, +/* 5507 */ {(16<<2)|3,{50,114,97}}, +/* 5508 */ {(16<<2)|3,{50,114,99}}, +/* 5509 */ {(16<<2)|3,{50,114,101}}, +/* 5510 */ {(16<<2)|3,{50,114,105}}, +/* 5511 */ {(16<<2)|3,{50,114,111}}, +/* 5512 */ {(16<<2)|3,{50,114,115}}, +/* 5513 */ {(16<<2)|3,{50,114,116}}, +/* 5514 */ {(11<<2)|2,{50,114,0}}, +/* 5515 */ {(11<<2)|2,{50,114,0}}, +/* 5516 */ {(11<<2)|2,{50,114,0}}, +/* 5517 */ {(11<<2)|2,{50,114,0}}, +/* 5518 */ {(11<<2)|2,{50,114,0}}, +/* 5519 */ {(11<<2)|2,{50,114,0}}, +/* 5520 */ {(11<<2)|2,{50,114,0}}, +/* 5521 */ {(11<<2)|2,{50,114,0}}, +/* 5522 */ {(11<<2)|2,{50,114,0}}, +/* 5523 */ {(11<<2)|2,{50,114,0}}, +/* 5524 */ {(11<<2)|2,{50,114,0}}, +/* 5525 */ {(11<<2)|2,{50,114,0}}, +/* 5526 */ {(11<<2)|2,{50,114,0}}, +/* 5527 */ {(11<<2)|2,{50,114,0}}, +/* 5528 */ {(11<<2)|2,{50,114,0}}, +/* 5529 */ {(11<<2)|2,{50,114,0}}, +/* 5530 */ {(11<<2)|2,{50,114,0}}, +/* 5531 */ {(11<<2)|2,{50,114,0}}, +/* 5532 */ {(11<<2)|2,{50,114,0}}, +/* 5533 */ {(11<<2)|2,{50,114,0}}, +/* 5534 */ {(11<<2)|2,{50,114,0}}, +/* 5535 */ {(11<<2)|2,{50,114,0}}, +/* 5536 */ {(16<<2)|3,{50,117,48}}, +/* 5537 */ {(16<<2)|3,{50,117,49}}, +/* 5538 */ {(16<<2)|3,{50,117,50}}, +/* 5539 */ {(16<<2)|3,{50,117,97}}, +/* 5540 */ {(16<<2)|3,{50,117,99}}, +/* 5541 */ {(16<<2)|3,{50,117,101}}, +/* 5542 */ {(16<<2)|3,{50,117,105}}, +/* 5543 */ {(16<<2)|3,{50,117,111}}, +/* 5544 */ {(16<<2)|3,{50,117,115}}, +/* 5545 */ {(16<<2)|3,{50,117,116}}, +/* 5546 */ {(11<<2)|2,{50,117,0}}, +/* 5547 */ {(11<<2)|2,{50,117,0}}, +/* 5548 */ {(11<<2)|2,{50,117,0}}, +/* 5549 */ {(11<<2)|2,{50,117,0}}, +/* 5550 */ {(11<<2)|2,{50,117,0}}, +/* 5551 */ {(11<<2)|2,{50,117,0}}, +/* 5552 */ {(11<<2)|2,{50,117,0}}, +/* 5553 */ {(11<<2)|2,{50,117,0}}, +/* 5554 */ {(11<<2)|2,{50,117,0}}, +/* 5555 */ {(11<<2)|2,{50,117,0}}, +/* 5556 */ {(11<<2)|2,{50,117,0}}, +/* 5557 */ {(11<<2)|2,{50,117,0}}, +/* 5558 */ {(11<<2)|2,{50,117,0}}, +/* 5559 */ {(11<<2)|2,{50,117,0}}, +/* 5560 */ {(11<<2)|2,{50,117,0}}, +/* 5561 */ {(11<<2)|2,{50,117,0}}, +/* 5562 */ {(11<<2)|2,{50,117,0}}, +/* 5563 */ {(11<<2)|2,{50,117,0}}, +/* 5564 */ {(11<<2)|2,{50,117,0}}, +/* 5565 */ {(11<<2)|2,{50,117,0}}, +/* 5566 */ {(11<<2)|2,{50,117,0}}, +/* 5567 */ {(11<<2)|2,{50,117,0}}, +/* 5568 */ {(12<<2)|2,{50,58,0}}, +/* 5569 */ {(12<<2)|2,{50,58,0}}, +/* 5570 */ {(12<<2)|2,{50,58,0}}, +/* 5571 */ {(12<<2)|2,{50,58,0}}, +/* 5572 */ {(12<<2)|2,{50,58,0}}, +/* 5573 */ {(12<<2)|2,{50,58,0}}, +/* 5574 */ {(12<<2)|2,{50,58,0}}, +/* 5575 */ {(12<<2)|2,{50,58,0}}, +/* 5576 */ {(12<<2)|2,{50,58,0}}, +/* 5577 */ {(12<<2)|2,{50,58,0}}, +/* 5578 */ {(12<<2)|2,{50,58,0}}, +/* 5579 */ {(12<<2)|2,{50,58,0}}, +/* 5580 */ {(12<<2)|2,{50,58,0}}, +/* 5581 */ {(12<<2)|2,{50,58,0}}, +/* 5582 */ {(12<<2)|2,{50,58,0}}, +/* 5583 */ {(12<<2)|2,{50,58,0}}, +/* 5584 */ {(12<<2)|2,{50,66,0}}, +/* 5585 */ {(12<<2)|2,{50,66,0}}, +/* 5586 */ {(12<<2)|2,{50,66,0}}, +/* 5587 */ {(12<<2)|2,{50,66,0}}, +/* 5588 */ {(12<<2)|2,{50,66,0}}, +/* 5589 */ {(12<<2)|2,{50,66,0}}, +/* 5590 */ {(12<<2)|2,{50,66,0}}, +/* 5591 */ {(12<<2)|2,{50,66,0}}, +/* 5592 */ {(12<<2)|2,{50,66,0}}, +/* 5593 */ {(12<<2)|2,{50,66,0}}, +/* 5594 */ {(12<<2)|2,{50,66,0}}, +/* 5595 */ {(12<<2)|2,{50,66,0}}, +/* 5596 */ {(12<<2)|2,{50,66,0}}, +/* 5597 */ {(12<<2)|2,{50,66,0}}, +/* 5598 */ {(12<<2)|2,{50,66,0}}, +/* 5599 */ {(12<<2)|2,{50,66,0}}, +/* 5600 */ {(12<<2)|2,{50,67,0}}, +/* 5601 */ {(12<<2)|2,{50,67,0}}, +/* 5602 */ {(12<<2)|2,{50,67,0}}, +/* 5603 */ {(12<<2)|2,{50,67,0}}, +/* 5604 */ {(12<<2)|2,{50,67,0}}, +/* 5605 */ {(12<<2)|2,{50,67,0}}, +/* 5606 */ {(12<<2)|2,{50,67,0}}, +/* 5607 */ {(12<<2)|2,{50,67,0}}, +/* 5608 */ {(12<<2)|2,{50,67,0}}, +/* 5609 */ {(12<<2)|2,{50,67,0}}, +/* 5610 */ {(12<<2)|2,{50,67,0}}, +/* 5611 */ {(12<<2)|2,{50,67,0}}, +/* 5612 */ {(12<<2)|2,{50,67,0}}, +/* 5613 */ {(12<<2)|2,{50,67,0}}, +/* 5614 */ {(12<<2)|2,{50,67,0}}, +/* 5615 */ {(12<<2)|2,{50,67,0}}, +/* 5616 */ {(12<<2)|2,{50,68,0}}, +/* 5617 */ {(12<<2)|2,{50,68,0}}, +/* 5618 */ {(12<<2)|2,{50,68,0}}, +/* 5619 */ {(12<<2)|2,{50,68,0}}, +/* 5620 */ {(12<<2)|2,{50,68,0}}, +/* 5621 */ {(12<<2)|2,{50,68,0}}, +/* 5622 */ {(12<<2)|2,{50,68,0}}, +/* 5623 */ {(12<<2)|2,{50,68,0}}, +/* 5624 */ {(12<<2)|2,{50,68,0}}, +/* 5625 */ {(12<<2)|2,{50,68,0}}, +/* 5626 */ {(12<<2)|2,{50,68,0}}, +/* 5627 */ {(12<<2)|2,{50,68,0}}, +/* 5628 */ {(12<<2)|2,{50,68,0}}, +/* 5629 */ {(12<<2)|2,{50,68,0}}, +/* 5630 */ {(12<<2)|2,{50,68,0}}, +/* 5631 */ {(12<<2)|2,{50,68,0}}, +/* 5632 */ {(12<<2)|2,{50,69,0}}, +/* 5633 */ {(12<<2)|2,{50,69,0}}, +/* 5634 */ {(12<<2)|2,{50,69,0}}, +/* 5635 */ {(12<<2)|2,{50,69,0}}, +/* 5636 */ {(12<<2)|2,{50,69,0}}, +/* 5637 */ {(12<<2)|2,{50,69,0}}, +/* 5638 */ {(12<<2)|2,{50,69,0}}, +/* 5639 */ {(12<<2)|2,{50,69,0}}, +/* 5640 */ {(12<<2)|2,{50,69,0}}, +/* 5641 */ {(12<<2)|2,{50,69,0}}, +/* 5642 */ {(12<<2)|2,{50,69,0}}, +/* 5643 */ {(12<<2)|2,{50,69,0}}, +/* 5644 */ {(12<<2)|2,{50,69,0}}, +/* 5645 */ {(12<<2)|2,{50,69,0}}, +/* 5646 */ {(12<<2)|2,{50,69,0}}, +/* 5647 */ {(12<<2)|2,{50,69,0}}, +/* 5648 */ {(12<<2)|2,{50,70,0}}, +/* 5649 */ {(12<<2)|2,{50,70,0}}, +/* 5650 */ {(12<<2)|2,{50,70,0}}, +/* 5651 */ {(12<<2)|2,{50,70,0}}, +/* 5652 */ {(12<<2)|2,{50,70,0}}, +/* 5653 */ {(12<<2)|2,{50,70,0}}, +/* 5654 */ {(12<<2)|2,{50,70,0}}, +/* 5655 */ {(12<<2)|2,{50,70,0}}, +/* 5656 */ {(12<<2)|2,{50,70,0}}, +/* 5657 */ {(12<<2)|2,{50,70,0}}, +/* 5658 */ {(12<<2)|2,{50,70,0}}, +/* 5659 */ {(12<<2)|2,{50,70,0}}, +/* 5660 */ {(12<<2)|2,{50,70,0}}, +/* 5661 */ {(12<<2)|2,{50,70,0}}, +/* 5662 */ {(12<<2)|2,{50,70,0}}, +/* 5663 */ {(12<<2)|2,{50,70,0}}, +/* 5664 */ {(12<<2)|2,{50,71,0}}, +/* 5665 */ {(12<<2)|2,{50,71,0}}, +/* 5666 */ {(12<<2)|2,{50,71,0}}, +/* 5667 */ {(12<<2)|2,{50,71,0}}, +/* 5668 */ {(12<<2)|2,{50,71,0}}, +/* 5669 */ {(12<<2)|2,{50,71,0}}, +/* 5670 */ {(12<<2)|2,{50,71,0}}, +/* 5671 */ {(12<<2)|2,{50,71,0}}, +/* 5672 */ {(12<<2)|2,{50,71,0}}, +/* 5673 */ {(12<<2)|2,{50,71,0}}, +/* 5674 */ {(12<<2)|2,{50,71,0}}, +/* 5675 */ {(12<<2)|2,{50,71,0}}, +/* 5676 */ {(12<<2)|2,{50,71,0}}, +/* 5677 */ {(12<<2)|2,{50,71,0}}, +/* 5678 */ {(12<<2)|2,{50,71,0}}, +/* 5679 */ {(12<<2)|2,{50,71,0}}, +/* 5680 */ {(12<<2)|2,{50,72,0}}, +/* 5681 */ {(12<<2)|2,{50,72,0}}, +/* 5682 */ {(12<<2)|2,{50,72,0}}, +/* 5683 */ {(12<<2)|2,{50,72,0}}, +/* 5684 */ {(12<<2)|2,{50,72,0}}, +/* 5685 */ {(12<<2)|2,{50,72,0}}, +/* 5686 */ {(12<<2)|2,{50,72,0}}, +/* 5687 */ {(12<<2)|2,{50,72,0}}, +/* 5688 */ {(12<<2)|2,{50,72,0}}, +/* 5689 */ {(12<<2)|2,{50,72,0}}, +/* 5690 */ {(12<<2)|2,{50,72,0}}, +/* 5691 */ {(12<<2)|2,{50,72,0}}, +/* 5692 */ {(12<<2)|2,{50,72,0}}, +/* 5693 */ {(12<<2)|2,{50,72,0}}, +/* 5694 */ {(12<<2)|2,{50,72,0}}, +/* 5695 */ {(12<<2)|2,{50,72,0}}, +/* 5696 */ {(12<<2)|2,{50,73,0}}, +/* 5697 */ {(12<<2)|2,{50,73,0}}, +/* 5698 */ {(12<<2)|2,{50,73,0}}, +/* 5699 */ {(12<<2)|2,{50,73,0}}, +/* 5700 */ {(12<<2)|2,{50,73,0}}, +/* 5701 */ {(12<<2)|2,{50,73,0}}, +/* 5702 */ {(12<<2)|2,{50,73,0}}, +/* 5703 */ {(12<<2)|2,{50,73,0}}, +/* 5704 */ {(12<<2)|2,{50,73,0}}, +/* 5705 */ {(12<<2)|2,{50,73,0}}, +/* 5706 */ {(12<<2)|2,{50,73,0}}, +/* 5707 */ {(12<<2)|2,{50,73,0}}, +/* 5708 */ {(12<<2)|2,{50,73,0}}, +/* 5709 */ {(12<<2)|2,{50,73,0}}, +/* 5710 */ {(12<<2)|2,{50,73,0}}, +/* 5711 */ {(12<<2)|2,{50,73,0}}, +/* 5712 */ {(12<<2)|2,{50,74,0}}, +/* 5713 */ {(12<<2)|2,{50,74,0}}, +/* 5714 */ {(12<<2)|2,{50,74,0}}, +/* 5715 */ {(12<<2)|2,{50,74,0}}, +/* 5716 */ {(12<<2)|2,{50,74,0}}, +/* 5717 */ {(12<<2)|2,{50,74,0}}, +/* 5718 */ {(12<<2)|2,{50,74,0}}, +/* 5719 */ {(12<<2)|2,{50,74,0}}, +/* 5720 */ {(12<<2)|2,{50,74,0}}, +/* 5721 */ {(12<<2)|2,{50,74,0}}, +/* 5722 */ {(12<<2)|2,{50,74,0}}, +/* 5723 */ {(12<<2)|2,{50,74,0}}, +/* 5724 */ {(12<<2)|2,{50,74,0}}, +/* 5725 */ {(12<<2)|2,{50,74,0}}, +/* 5726 */ {(12<<2)|2,{50,74,0}}, +/* 5727 */ {(12<<2)|2,{50,74,0}}, +/* 5728 */ {(12<<2)|2,{50,75,0}}, +/* 5729 */ {(12<<2)|2,{50,75,0}}, +/* 5730 */ {(12<<2)|2,{50,75,0}}, +/* 5731 */ {(12<<2)|2,{50,75,0}}, +/* 5732 */ {(12<<2)|2,{50,75,0}}, +/* 5733 */ {(12<<2)|2,{50,75,0}}, +/* 5734 */ {(12<<2)|2,{50,75,0}}, +/* 5735 */ {(12<<2)|2,{50,75,0}}, +/* 5736 */ {(12<<2)|2,{50,75,0}}, +/* 5737 */ {(12<<2)|2,{50,75,0}}, +/* 5738 */ {(12<<2)|2,{50,75,0}}, +/* 5739 */ {(12<<2)|2,{50,75,0}}, +/* 5740 */ {(12<<2)|2,{50,75,0}}, +/* 5741 */ {(12<<2)|2,{50,75,0}}, +/* 5742 */ {(12<<2)|2,{50,75,0}}, +/* 5743 */ {(12<<2)|2,{50,75,0}}, +/* 5744 */ {(12<<2)|2,{50,76,0}}, +/* 5745 */ {(12<<2)|2,{50,76,0}}, +/* 5746 */ {(12<<2)|2,{50,76,0}}, +/* 5747 */ {(12<<2)|2,{50,76,0}}, +/* 5748 */ {(12<<2)|2,{50,76,0}}, +/* 5749 */ {(12<<2)|2,{50,76,0}}, +/* 5750 */ {(12<<2)|2,{50,76,0}}, +/* 5751 */ {(12<<2)|2,{50,76,0}}, +/* 5752 */ {(12<<2)|2,{50,76,0}}, +/* 5753 */ {(12<<2)|2,{50,76,0}}, +/* 5754 */ {(12<<2)|2,{50,76,0}}, +/* 5755 */ {(12<<2)|2,{50,76,0}}, +/* 5756 */ {(12<<2)|2,{50,76,0}}, +/* 5757 */ {(12<<2)|2,{50,76,0}}, +/* 5758 */ {(12<<2)|2,{50,76,0}}, +/* 5759 */ {(12<<2)|2,{50,76,0}}, +/* 5760 */ {(12<<2)|2,{50,77,0}}, +/* 5761 */ {(12<<2)|2,{50,77,0}}, +/* 5762 */ {(12<<2)|2,{50,77,0}}, +/* 5763 */ {(12<<2)|2,{50,77,0}}, +/* 5764 */ {(12<<2)|2,{50,77,0}}, +/* 5765 */ {(12<<2)|2,{50,77,0}}, +/* 5766 */ {(12<<2)|2,{50,77,0}}, +/* 5767 */ {(12<<2)|2,{50,77,0}}, +/* 5768 */ {(12<<2)|2,{50,77,0}}, +/* 5769 */ {(12<<2)|2,{50,77,0}}, +/* 5770 */ {(12<<2)|2,{50,77,0}}, +/* 5771 */ {(12<<2)|2,{50,77,0}}, +/* 5772 */ {(12<<2)|2,{50,77,0}}, +/* 5773 */ {(12<<2)|2,{50,77,0}}, +/* 5774 */ {(12<<2)|2,{50,77,0}}, +/* 5775 */ {(12<<2)|2,{50,77,0}}, +/* 5776 */ {(12<<2)|2,{50,78,0}}, +/* 5777 */ {(12<<2)|2,{50,78,0}}, +/* 5778 */ {(12<<2)|2,{50,78,0}}, +/* 5779 */ {(12<<2)|2,{50,78,0}}, +/* 5780 */ {(12<<2)|2,{50,78,0}}, +/* 5781 */ {(12<<2)|2,{50,78,0}}, +/* 5782 */ {(12<<2)|2,{50,78,0}}, +/* 5783 */ {(12<<2)|2,{50,78,0}}, +/* 5784 */ {(12<<2)|2,{50,78,0}}, +/* 5785 */ {(12<<2)|2,{50,78,0}}, +/* 5786 */ {(12<<2)|2,{50,78,0}}, +/* 5787 */ {(12<<2)|2,{50,78,0}}, +/* 5788 */ {(12<<2)|2,{50,78,0}}, +/* 5789 */ {(12<<2)|2,{50,78,0}}, +/* 5790 */ {(12<<2)|2,{50,78,0}}, +/* 5791 */ {(12<<2)|2,{50,78,0}}, +/* 5792 */ {(12<<2)|2,{50,79,0}}, +/* 5793 */ {(12<<2)|2,{50,79,0}}, +/* 5794 */ {(12<<2)|2,{50,79,0}}, +/* 5795 */ {(12<<2)|2,{50,79,0}}, +/* 5796 */ {(12<<2)|2,{50,79,0}}, +/* 5797 */ {(12<<2)|2,{50,79,0}}, +/* 5798 */ {(12<<2)|2,{50,79,0}}, +/* 5799 */ {(12<<2)|2,{50,79,0}}, +/* 5800 */ {(12<<2)|2,{50,79,0}}, +/* 5801 */ {(12<<2)|2,{50,79,0}}, +/* 5802 */ {(12<<2)|2,{50,79,0}}, +/* 5803 */ {(12<<2)|2,{50,79,0}}, +/* 5804 */ {(12<<2)|2,{50,79,0}}, +/* 5805 */ {(12<<2)|2,{50,79,0}}, +/* 5806 */ {(12<<2)|2,{50,79,0}}, +/* 5807 */ {(12<<2)|2,{50,79,0}}, +/* 5808 */ {(12<<2)|2,{50,80,0}}, +/* 5809 */ {(12<<2)|2,{50,80,0}}, +/* 5810 */ {(12<<2)|2,{50,80,0}}, +/* 5811 */ {(12<<2)|2,{50,80,0}}, +/* 5812 */ {(12<<2)|2,{50,80,0}}, +/* 5813 */ {(12<<2)|2,{50,80,0}}, +/* 5814 */ {(12<<2)|2,{50,80,0}}, +/* 5815 */ {(12<<2)|2,{50,80,0}}, +/* 5816 */ {(12<<2)|2,{50,80,0}}, +/* 5817 */ {(12<<2)|2,{50,80,0}}, +/* 5818 */ {(12<<2)|2,{50,80,0}}, +/* 5819 */ {(12<<2)|2,{50,80,0}}, +/* 5820 */ {(12<<2)|2,{50,80,0}}, +/* 5821 */ {(12<<2)|2,{50,80,0}}, +/* 5822 */ {(12<<2)|2,{50,80,0}}, +/* 5823 */ {(12<<2)|2,{50,80,0}}, +/* 5824 */ {(12<<2)|2,{50,81,0}}, +/* 5825 */ {(12<<2)|2,{50,81,0}}, +/* 5826 */ {(12<<2)|2,{50,81,0}}, +/* 5827 */ {(12<<2)|2,{50,81,0}}, +/* 5828 */ {(12<<2)|2,{50,81,0}}, +/* 5829 */ {(12<<2)|2,{50,81,0}}, +/* 5830 */ {(12<<2)|2,{50,81,0}}, +/* 5831 */ {(12<<2)|2,{50,81,0}}, +/* 5832 */ {(12<<2)|2,{50,81,0}}, +/* 5833 */ {(12<<2)|2,{50,81,0}}, +/* 5834 */ {(12<<2)|2,{50,81,0}}, +/* 5835 */ {(12<<2)|2,{50,81,0}}, +/* 5836 */ {(12<<2)|2,{50,81,0}}, +/* 5837 */ {(12<<2)|2,{50,81,0}}, +/* 5838 */ {(12<<2)|2,{50,81,0}}, +/* 5839 */ {(12<<2)|2,{50,81,0}}, +/* 5840 */ {(12<<2)|2,{50,82,0}}, +/* 5841 */ {(12<<2)|2,{50,82,0}}, +/* 5842 */ {(12<<2)|2,{50,82,0}}, +/* 5843 */ {(12<<2)|2,{50,82,0}}, +/* 5844 */ {(12<<2)|2,{50,82,0}}, +/* 5845 */ {(12<<2)|2,{50,82,0}}, +/* 5846 */ {(12<<2)|2,{50,82,0}}, +/* 5847 */ {(12<<2)|2,{50,82,0}}, +/* 5848 */ {(12<<2)|2,{50,82,0}}, +/* 5849 */ {(12<<2)|2,{50,82,0}}, +/* 5850 */ {(12<<2)|2,{50,82,0}}, +/* 5851 */ {(12<<2)|2,{50,82,0}}, +/* 5852 */ {(12<<2)|2,{50,82,0}}, +/* 5853 */ {(12<<2)|2,{50,82,0}}, +/* 5854 */ {(12<<2)|2,{50,82,0}}, +/* 5855 */ {(12<<2)|2,{50,82,0}}, +/* 5856 */ {(12<<2)|2,{50,83,0}}, +/* 5857 */ {(12<<2)|2,{50,83,0}}, +/* 5858 */ {(12<<2)|2,{50,83,0}}, +/* 5859 */ {(12<<2)|2,{50,83,0}}, +/* 5860 */ {(12<<2)|2,{50,83,0}}, +/* 5861 */ {(12<<2)|2,{50,83,0}}, +/* 5862 */ {(12<<2)|2,{50,83,0}}, +/* 5863 */ {(12<<2)|2,{50,83,0}}, +/* 5864 */ {(12<<2)|2,{50,83,0}}, +/* 5865 */ {(12<<2)|2,{50,83,0}}, +/* 5866 */ {(12<<2)|2,{50,83,0}}, +/* 5867 */ {(12<<2)|2,{50,83,0}}, +/* 5868 */ {(12<<2)|2,{50,83,0}}, +/* 5869 */ {(12<<2)|2,{50,83,0}}, +/* 5870 */ {(12<<2)|2,{50,83,0}}, +/* 5871 */ {(12<<2)|2,{50,83,0}}, +/* 5872 */ {(12<<2)|2,{50,84,0}}, +/* 5873 */ {(12<<2)|2,{50,84,0}}, +/* 5874 */ {(12<<2)|2,{50,84,0}}, +/* 5875 */ {(12<<2)|2,{50,84,0}}, +/* 5876 */ {(12<<2)|2,{50,84,0}}, +/* 5877 */ {(12<<2)|2,{50,84,0}}, +/* 5878 */ {(12<<2)|2,{50,84,0}}, +/* 5879 */ {(12<<2)|2,{50,84,0}}, +/* 5880 */ {(12<<2)|2,{50,84,0}}, +/* 5881 */ {(12<<2)|2,{50,84,0}}, +/* 5882 */ {(12<<2)|2,{50,84,0}}, +/* 5883 */ {(12<<2)|2,{50,84,0}}, +/* 5884 */ {(12<<2)|2,{50,84,0}}, +/* 5885 */ {(12<<2)|2,{50,84,0}}, +/* 5886 */ {(12<<2)|2,{50,84,0}}, +/* 5887 */ {(12<<2)|2,{50,84,0}}, +/* 5888 */ {(12<<2)|2,{50,85,0}}, +/* 5889 */ {(12<<2)|2,{50,85,0}}, +/* 5890 */ {(12<<2)|2,{50,85,0}}, +/* 5891 */ {(12<<2)|2,{50,85,0}}, +/* 5892 */ {(12<<2)|2,{50,85,0}}, +/* 5893 */ {(12<<2)|2,{50,85,0}}, +/* 5894 */ {(12<<2)|2,{50,85,0}}, +/* 5895 */ {(12<<2)|2,{50,85,0}}, +/* 5896 */ {(12<<2)|2,{50,85,0}}, +/* 5897 */ {(12<<2)|2,{50,85,0}}, +/* 5898 */ {(12<<2)|2,{50,85,0}}, +/* 5899 */ {(12<<2)|2,{50,85,0}}, +/* 5900 */ {(12<<2)|2,{50,85,0}}, +/* 5901 */ {(12<<2)|2,{50,85,0}}, +/* 5902 */ {(12<<2)|2,{50,85,0}}, +/* 5903 */ {(12<<2)|2,{50,85,0}}, +/* 5904 */ {(12<<2)|2,{50,86,0}}, +/* 5905 */ {(12<<2)|2,{50,86,0}}, +/* 5906 */ {(12<<2)|2,{50,86,0}}, +/* 5907 */ {(12<<2)|2,{50,86,0}}, +/* 5908 */ {(12<<2)|2,{50,86,0}}, +/* 5909 */ {(12<<2)|2,{50,86,0}}, +/* 5910 */ {(12<<2)|2,{50,86,0}}, +/* 5911 */ {(12<<2)|2,{50,86,0}}, +/* 5912 */ {(12<<2)|2,{50,86,0}}, +/* 5913 */ {(12<<2)|2,{50,86,0}}, +/* 5914 */ {(12<<2)|2,{50,86,0}}, +/* 5915 */ {(12<<2)|2,{50,86,0}}, +/* 5916 */ {(12<<2)|2,{50,86,0}}, +/* 5917 */ {(12<<2)|2,{50,86,0}}, +/* 5918 */ {(12<<2)|2,{50,86,0}}, +/* 5919 */ {(12<<2)|2,{50,86,0}}, +/* 5920 */ {(12<<2)|2,{50,87,0}}, +/* 5921 */ {(12<<2)|2,{50,87,0}}, +/* 5922 */ {(12<<2)|2,{50,87,0}}, +/* 5923 */ {(12<<2)|2,{50,87,0}}, +/* 5924 */ {(12<<2)|2,{50,87,0}}, +/* 5925 */ {(12<<2)|2,{50,87,0}}, +/* 5926 */ {(12<<2)|2,{50,87,0}}, +/* 5927 */ {(12<<2)|2,{50,87,0}}, +/* 5928 */ {(12<<2)|2,{50,87,0}}, +/* 5929 */ {(12<<2)|2,{50,87,0}}, +/* 5930 */ {(12<<2)|2,{50,87,0}}, +/* 5931 */ {(12<<2)|2,{50,87,0}}, +/* 5932 */ {(12<<2)|2,{50,87,0}}, +/* 5933 */ {(12<<2)|2,{50,87,0}}, +/* 5934 */ {(12<<2)|2,{50,87,0}}, +/* 5935 */ {(12<<2)|2,{50,87,0}}, +/* 5936 */ {(12<<2)|2,{50,89,0}}, +/* 5937 */ {(12<<2)|2,{50,89,0}}, +/* 5938 */ {(12<<2)|2,{50,89,0}}, +/* 5939 */ {(12<<2)|2,{50,89,0}}, +/* 5940 */ {(12<<2)|2,{50,89,0}}, +/* 5941 */ {(12<<2)|2,{50,89,0}}, +/* 5942 */ {(12<<2)|2,{50,89,0}}, +/* 5943 */ {(12<<2)|2,{50,89,0}}, +/* 5944 */ {(12<<2)|2,{50,89,0}}, +/* 5945 */ {(12<<2)|2,{50,89,0}}, +/* 5946 */ {(12<<2)|2,{50,89,0}}, +/* 5947 */ {(12<<2)|2,{50,89,0}}, +/* 5948 */ {(12<<2)|2,{50,89,0}}, +/* 5949 */ {(12<<2)|2,{50,89,0}}, +/* 5950 */ {(12<<2)|2,{50,89,0}}, +/* 5951 */ {(12<<2)|2,{50,89,0}}, +/* 5952 */ {(12<<2)|2,{50,106,0}}, +/* 5953 */ {(12<<2)|2,{50,106,0}}, +/* 5954 */ {(12<<2)|2,{50,106,0}}, +/* 5955 */ {(12<<2)|2,{50,106,0}}, +/* 5956 */ {(12<<2)|2,{50,106,0}}, +/* 5957 */ {(12<<2)|2,{50,106,0}}, +/* 5958 */ {(12<<2)|2,{50,106,0}}, +/* 5959 */ {(12<<2)|2,{50,106,0}}, +/* 5960 */ {(12<<2)|2,{50,106,0}}, +/* 5961 */ {(12<<2)|2,{50,106,0}}, +/* 5962 */ {(12<<2)|2,{50,106,0}}, +/* 5963 */ {(12<<2)|2,{50,106,0}}, +/* 5964 */ {(12<<2)|2,{50,106,0}}, +/* 5965 */ {(12<<2)|2,{50,106,0}}, +/* 5966 */ {(12<<2)|2,{50,106,0}}, +/* 5967 */ {(12<<2)|2,{50,106,0}}, +/* 5968 */ {(12<<2)|2,{50,107,0}}, +/* 5969 */ {(12<<2)|2,{50,107,0}}, +/* 5970 */ {(12<<2)|2,{50,107,0}}, +/* 5971 */ {(12<<2)|2,{50,107,0}}, +/* 5972 */ {(12<<2)|2,{50,107,0}}, +/* 5973 */ {(12<<2)|2,{50,107,0}}, +/* 5974 */ {(12<<2)|2,{50,107,0}}, +/* 5975 */ {(12<<2)|2,{50,107,0}}, +/* 5976 */ {(12<<2)|2,{50,107,0}}, +/* 5977 */ {(12<<2)|2,{50,107,0}}, +/* 5978 */ {(12<<2)|2,{50,107,0}}, +/* 5979 */ {(12<<2)|2,{50,107,0}}, +/* 5980 */ {(12<<2)|2,{50,107,0}}, +/* 5981 */ {(12<<2)|2,{50,107,0}}, +/* 5982 */ {(12<<2)|2,{50,107,0}}, +/* 5983 */ {(12<<2)|2,{50,107,0}}, +/* 5984 */ {(12<<2)|2,{50,113,0}}, +/* 5985 */ {(12<<2)|2,{50,113,0}}, +/* 5986 */ {(12<<2)|2,{50,113,0}}, +/* 5987 */ {(12<<2)|2,{50,113,0}}, +/* 5988 */ {(12<<2)|2,{50,113,0}}, +/* 5989 */ {(12<<2)|2,{50,113,0}}, +/* 5990 */ {(12<<2)|2,{50,113,0}}, +/* 5991 */ {(12<<2)|2,{50,113,0}}, +/* 5992 */ {(12<<2)|2,{50,113,0}}, +/* 5993 */ {(12<<2)|2,{50,113,0}}, +/* 5994 */ {(12<<2)|2,{50,113,0}}, +/* 5995 */ {(12<<2)|2,{50,113,0}}, +/* 5996 */ {(12<<2)|2,{50,113,0}}, +/* 5997 */ {(12<<2)|2,{50,113,0}}, +/* 5998 */ {(12<<2)|2,{50,113,0}}, +/* 5999 */ {(12<<2)|2,{50,113,0}}, +/* 6000 */ {(12<<2)|2,{50,118,0}}, +/* 6001 */ {(12<<2)|2,{50,118,0}}, +/* 6002 */ {(12<<2)|2,{50,118,0}}, +/* 6003 */ {(12<<2)|2,{50,118,0}}, +/* 6004 */ {(12<<2)|2,{50,118,0}}, +/* 6005 */ {(12<<2)|2,{50,118,0}}, +/* 6006 */ {(12<<2)|2,{50,118,0}}, +/* 6007 */ {(12<<2)|2,{50,118,0}}, +/* 6008 */ {(12<<2)|2,{50,118,0}}, +/* 6009 */ {(12<<2)|2,{50,118,0}}, +/* 6010 */ {(12<<2)|2,{50,118,0}}, +/* 6011 */ {(12<<2)|2,{50,118,0}}, +/* 6012 */ {(12<<2)|2,{50,118,0}}, +/* 6013 */ {(12<<2)|2,{50,118,0}}, +/* 6014 */ {(12<<2)|2,{50,118,0}}, +/* 6015 */ {(12<<2)|2,{50,118,0}}, +/* 6016 */ {(12<<2)|2,{50,119,0}}, +/* 6017 */ {(12<<2)|2,{50,119,0}}, +/* 6018 */ {(12<<2)|2,{50,119,0}}, +/* 6019 */ {(12<<2)|2,{50,119,0}}, +/* 6020 */ {(12<<2)|2,{50,119,0}}, +/* 6021 */ {(12<<2)|2,{50,119,0}}, +/* 6022 */ {(12<<2)|2,{50,119,0}}, +/* 6023 */ {(12<<2)|2,{50,119,0}}, +/* 6024 */ {(12<<2)|2,{50,119,0}}, +/* 6025 */ {(12<<2)|2,{50,119,0}}, +/* 6026 */ {(12<<2)|2,{50,119,0}}, +/* 6027 */ {(12<<2)|2,{50,119,0}}, +/* 6028 */ {(12<<2)|2,{50,119,0}}, +/* 6029 */ {(12<<2)|2,{50,119,0}}, +/* 6030 */ {(12<<2)|2,{50,119,0}}, +/* 6031 */ {(12<<2)|2,{50,119,0}}, +/* 6032 */ {(12<<2)|2,{50,120,0}}, +/* 6033 */ {(12<<2)|2,{50,120,0}}, +/* 6034 */ {(12<<2)|2,{50,120,0}}, +/* 6035 */ {(12<<2)|2,{50,120,0}}, +/* 6036 */ {(12<<2)|2,{50,120,0}}, +/* 6037 */ {(12<<2)|2,{50,120,0}}, +/* 6038 */ {(12<<2)|2,{50,120,0}}, +/* 6039 */ {(12<<2)|2,{50,120,0}}, +/* 6040 */ {(12<<2)|2,{50,120,0}}, +/* 6041 */ {(12<<2)|2,{50,120,0}}, +/* 6042 */ {(12<<2)|2,{50,120,0}}, +/* 6043 */ {(12<<2)|2,{50,120,0}}, +/* 6044 */ {(12<<2)|2,{50,120,0}}, +/* 6045 */ {(12<<2)|2,{50,120,0}}, +/* 6046 */ {(12<<2)|2,{50,120,0}}, +/* 6047 */ {(12<<2)|2,{50,120,0}}, +/* 6048 */ {(12<<2)|2,{50,121,0}}, +/* 6049 */ {(12<<2)|2,{50,121,0}}, +/* 6050 */ {(12<<2)|2,{50,121,0}}, +/* 6051 */ {(12<<2)|2,{50,121,0}}, +/* 6052 */ {(12<<2)|2,{50,121,0}}, +/* 6053 */ {(12<<2)|2,{50,121,0}}, +/* 6054 */ {(12<<2)|2,{50,121,0}}, +/* 6055 */ {(12<<2)|2,{50,121,0}}, +/* 6056 */ {(12<<2)|2,{50,121,0}}, +/* 6057 */ {(12<<2)|2,{50,121,0}}, +/* 6058 */ {(12<<2)|2,{50,121,0}}, +/* 6059 */ {(12<<2)|2,{50,121,0}}, +/* 6060 */ {(12<<2)|2,{50,121,0}}, +/* 6061 */ {(12<<2)|2,{50,121,0}}, +/* 6062 */ {(12<<2)|2,{50,121,0}}, +/* 6063 */ {(12<<2)|2,{50,121,0}}, +/* 6064 */ {(12<<2)|2,{50,122,0}}, +/* 6065 */ {(12<<2)|2,{50,122,0}}, +/* 6066 */ {(12<<2)|2,{50,122,0}}, +/* 6067 */ {(12<<2)|2,{50,122,0}}, +/* 6068 */ {(12<<2)|2,{50,122,0}}, +/* 6069 */ {(12<<2)|2,{50,122,0}}, +/* 6070 */ {(12<<2)|2,{50,122,0}}, +/* 6071 */ {(12<<2)|2,{50,122,0}}, +/* 6072 */ {(12<<2)|2,{50,122,0}}, +/* 6073 */ {(12<<2)|2,{50,122,0}}, +/* 6074 */ {(12<<2)|2,{50,122,0}}, +/* 6075 */ {(12<<2)|2,{50,122,0}}, +/* 6076 */ {(12<<2)|2,{50,122,0}}, +/* 6077 */ {(12<<2)|2,{50,122,0}}, +/* 6078 */ {(12<<2)|2,{50,122,0}}, +/* 6079 */ {(12<<2)|2,{50,122,0}}, +/* 6080 */ {(13<<2)|2,{50,38,0}}, +/* 6081 */ {(13<<2)|2,{50,38,0}}, +/* 6082 */ {(13<<2)|2,{50,38,0}}, +/* 6083 */ {(13<<2)|2,{50,38,0}}, +/* 6084 */ {(13<<2)|2,{50,38,0}}, +/* 6085 */ {(13<<2)|2,{50,38,0}}, +/* 6086 */ {(13<<2)|2,{50,38,0}}, +/* 6087 */ {(13<<2)|2,{50,38,0}}, +/* 6088 */ {(13<<2)|2,{50,42,0}}, +/* 6089 */ {(13<<2)|2,{50,42,0}}, +/* 6090 */ {(13<<2)|2,{50,42,0}}, +/* 6091 */ {(13<<2)|2,{50,42,0}}, +/* 6092 */ {(13<<2)|2,{50,42,0}}, +/* 6093 */ {(13<<2)|2,{50,42,0}}, +/* 6094 */ {(13<<2)|2,{50,42,0}}, +/* 6095 */ {(13<<2)|2,{50,42,0}}, +/* 6096 */ {(13<<2)|2,{50,44,0}}, +/* 6097 */ {(13<<2)|2,{50,44,0}}, +/* 6098 */ {(13<<2)|2,{50,44,0}}, +/* 6099 */ {(13<<2)|2,{50,44,0}}, +/* 6100 */ {(13<<2)|2,{50,44,0}}, +/* 6101 */ {(13<<2)|2,{50,44,0}}, +/* 6102 */ {(13<<2)|2,{50,44,0}}, +/* 6103 */ {(13<<2)|2,{50,44,0}}, +/* 6104 */ {(13<<2)|2,{50,59,0}}, +/* 6105 */ {(13<<2)|2,{50,59,0}}, +/* 6106 */ {(13<<2)|2,{50,59,0}}, +/* 6107 */ {(13<<2)|2,{50,59,0}}, +/* 6108 */ {(13<<2)|2,{50,59,0}}, +/* 6109 */ {(13<<2)|2,{50,59,0}}, +/* 6110 */ {(13<<2)|2,{50,59,0}}, +/* 6111 */ {(13<<2)|2,{50,59,0}}, +/* 6112 */ {(13<<2)|2,{50,88,0}}, +/* 6113 */ {(13<<2)|2,{50,88,0}}, +/* 6114 */ {(13<<2)|2,{50,88,0}}, +/* 6115 */ {(13<<2)|2,{50,88,0}}, +/* 6116 */ {(13<<2)|2,{50,88,0}}, +/* 6117 */ {(13<<2)|2,{50,88,0}}, +/* 6118 */ {(13<<2)|2,{50,88,0}}, +/* 6119 */ {(13<<2)|2,{50,88,0}}, +/* 6120 */ {(13<<2)|2,{50,90,0}}, +/* 6121 */ {(13<<2)|2,{50,90,0}}, +/* 6122 */ {(13<<2)|2,{50,90,0}}, +/* 6123 */ {(13<<2)|2,{50,90,0}}, +/* 6124 */ {(13<<2)|2,{50,90,0}}, +/* 6125 */ {(13<<2)|2,{50,90,0}}, +/* 6126 */ {(13<<2)|2,{50,90,0}}, +/* 6127 */ {(13<<2)|2,{50,90,0}}, +/* 6128 */ {(15<<2)|2,{50,33,0}}, +/* 6129 */ {(15<<2)|2,{50,33,0}}, +/* 6130 */ {(15<<2)|2,{50,34,0}}, +/* 6131 */ {(15<<2)|2,{50,34,0}}, +/* 6132 */ {(15<<2)|2,{50,40,0}}, +/* 6133 */ {(15<<2)|2,{50,40,0}}, +/* 6134 */ {(15<<2)|2,{50,41,0}}, +/* 6135 */ {(15<<2)|2,{50,41,0}}, +/* 6136 */ {(15<<2)|2,{50,63,0}}, +/* 6137 */ {(15<<2)|2,{50,63,0}}, +/* 6138 */ {(16<<2)|2,{50,39,0}}, +/* 6139 */ {(16<<2)|2,{50,43,0}}, +/* 6140 */ {(16<<2)|2,{50,124,0}}, +/* 6141 */ {(5<<2)|1,{50,0,0}}, +/* 6142 */ {(5<<2)|1,{50,0,0}}, +/* 6143 */ {(5<<2)|1,{50,0,0}}, +/* 6144 */ {(15<<2)|3,{97,48,48}}, +/* 6145 */ {(15<<2)|3,{97,48,48}}, +/* 6146 */ {(15<<2)|3,{97,48,49}}, +/* 6147 */ {(15<<2)|3,{97,48,49}}, +/* 6148 */ {(15<<2)|3,{97,48,50}}, +/* 6149 */ {(15<<2)|3,{97,48,50}}, +/* 6150 */ {(15<<2)|3,{97,48,97}}, +/* 6151 */ {(15<<2)|3,{97,48,97}}, +/* 6152 */ {(15<<2)|3,{97,48,99}}, +/* 6153 */ {(15<<2)|3,{97,48,99}}, +/* 6154 */ {(15<<2)|3,{97,48,101}}, +/* 6155 */ {(15<<2)|3,{97,48,101}}, +/* 6156 */ {(15<<2)|3,{97,48,105}}, +/* 6157 */ {(15<<2)|3,{97,48,105}}, +/* 6158 */ {(15<<2)|3,{97,48,111}}, +/* 6159 */ {(15<<2)|3,{97,48,111}}, +/* 6160 */ {(15<<2)|3,{97,48,115}}, +/* 6161 */ {(15<<2)|3,{97,48,115}}, +/* 6162 */ {(15<<2)|3,{97,48,116}}, +/* 6163 */ {(15<<2)|3,{97,48,116}}, +/* 6164 */ {(16<<2)|3,{97,48,32}}, +/* 6165 */ {(16<<2)|3,{97,48,37}}, +/* 6166 */ {(16<<2)|3,{97,48,45}}, +/* 6167 */ {(16<<2)|3,{97,48,46}}, +/* 6168 */ {(16<<2)|3,{97,48,47}}, +/* 6169 */ {(16<<2)|3,{97,48,51}}, +/* 6170 */ {(16<<2)|3,{97,48,52}}, +/* 6171 */ {(16<<2)|3,{97,48,53}}, +/* 6172 */ {(16<<2)|3,{97,48,54}}, +/* 6173 */ {(16<<2)|3,{97,48,55}}, +/* 6174 */ {(16<<2)|3,{97,48,56}}, +/* 6175 */ {(16<<2)|3,{97,48,57}}, +/* 6176 */ {(16<<2)|3,{97,48,61}}, +/* 6177 */ {(16<<2)|3,{97,48,65}}, +/* 6178 */ {(16<<2)|3,{97,48,95}}, +/* 6179 */ {(16<<2)|3,{97,48,98}}, +/* 6180 */ {(16<<2)|3,{97,48,100}}, +/* 6181 */ {(16<<2)|3,{97,48,102}}, +/* 6182 */ {(16<<2)|3,{97,48,103}}, +/* 6183 */ {(16<<2)|3,{97,48,104}}, +/* 6184 */ {(16<<2)|3,{97,48,108}}, +/* 6185 */ {(16<<2)|3,{97,48,109}}, +/* 6186 */ {(16<<2)|3,{97,48,110}}, +/* 6187 */ {(16<<2)|3,{97,48,112}}, +/* 6188 */ {(16<<2)|3,{97,48,114}}, +/* 6189 */ {(16<<2)|3,{97,48,117}}, +/* 6190 */ {(10<<2)|2,{97,48,0}}, +/* 6191 */ {(10<<2)|2,{97,48,0}}, +/* 6192 */ {(10<<2)|2,{97,48,0}}, +/* 6193 */ {(10<<2)|2,{97,48,0}}, +/* 6194 */ {(10<<2)|2,{97,48,0}}, +/* 6195 */ {(10<<2)|2,{97,48,0}}, +/* 6196 */ {(10<<2)|2,{97,48,0}}, +/* 6197 */ {(10<<2)|2,{97,48,0}}, +/* 6198 */ {(10<<2)|2,{97,48,0}}, +/* 6199 */ {(10<<2)|2,{97,48,0}}, +/* 6200 */ {(10<<2)|2,{97,48,0}}, +/* 6201 */ {(10<<2)|2,{97,48,0}}, +/* 6202 */ {(10<<2)|2,{97,48,0}}, +/* 6203 */ {(10<<2)|2,{97,48,0}}, +/* 6204 */ {(10<<2)|2,{97,48,0}}, +/* 6205 */ {(10<<2)|2,{97,48,0}}, +/* 6206 */ {(10<<2)|2,{97,48,0}}, +/* 6207 */ {(10<<2)|2,{97,48,0}}, +/* 6208 */ {(15<<2)|3,{97,49,48}}, +/* 6209 */ {(15<<2)|3,{97,49,48}}, +/* 6210 */ {(15<<2)|3,{97,49,49}}, +/* 6211 */ {(15<<2)|3,{97,49,49}}, +/* 6212 */ {(15<<2)|3,{97,49,50}}, +/* 6213 */ {(15<<2)|3,{97,49,50}}, +/* 6214 */ {(15<<2)|3,{97,49,97}}, +/* 6215 */ {(15<<2)|3,{97,49,97}}, +/* 6216 */ {(15<<2)|3,{97,49,99}}, +/* 6217 */ {(15<<2)|3,{97,49,99}}, +/* 6218 */ {(15<<2)|3,{97,49,101}}, +/* 6219 */ {(15<<2)|3,{97,49,101}}, +/* 6220 */ {(15<<2)|3,{97,49,105}}, +/* 6221 */ {(15<<2)|3,{97,49,105}}, +/* 6222 */ {(15<<2)|3,{97,49,111}}, +/* 6223 */ {(15<<2)|3,{97,49,111}}, +/* 6224 */ {(15<<2)|3,{97,49,115}}, +/* 6225 */ {(15<<2)|3,{97,49,115}}, +/* 6226 */ {(15<<2)|3,{97,49,116}}, +/* 6227 */ {(15<<2)|3,{97,49,116}}, +/* 6228 */ {(16<<2)|3,{97,49,32}}, +/* 6229 */ {(16<<2)|3,{97,49,37}}, +/* 6230 */ {(16<<2)|3,{97,49,45}}, +/* 6231 */ {(16<<2)|3,{97,49,46}}, +/* 6232 */ {(16<<2)|3,{97,49,47}}, +/* 6233 */ {(16<<2)|3,{97,49,51}}, +/* 6234 */ {(16<<2)|3,{97,49,52}}, +/* 6235 */ {(16<<2)|3,{97,49,53}}, +/* 6236 */ {(16<<2)|3,{97,49,54}}, +/* 6237 */ {(16<<2)|3,{97,49,55}}, +/* 6238 */ {(16<<2)|3,{97,49,56}}, +/* 6239 */ {(16<<2)|3,{97,49,57}}, +/* 6240 */ {(16<<2)|3,{97,49,61}}, +/* 6241 */ {(16<<2)|3,{97,49,65}}, +/* 6242 */ {(16<<2)|3,{97,49,95}}, +/* 6243 */ {(16<<2)|3,{97,49,98}}, +/* 6244 */ {(16<<2)|3,{97,49,100}}, +/* 6245 */ {(16<<2)|3,{97,49,102}}, +/* 6246 */ {(16<<2)|3,{97,49,103}}, +/* 6247 */ {(16<<2)|3,{97,49,104}}, +/* 6248 */ {(16<<2)|3,{97,49,108}}, +/* 6249 */ {(16<<2)|3,{97,49,109}}, +/* 6250 */ {(16<<2)|3,{97,49,110}}, +/* 6251 */ {(16<<2)|3,{97,49,112}}, +/* 6252 */ {(16<<2)|3,{97,49,114}}, +/* 6253 */ {(16<<2)|3,{97,49,117}}, +/* 6254 */ {(10<<2)|2,{97,49,0}}, +/* 6255 */ {(10<<2)|2,{97,49,0}}, +/* 6256 */ {(10<<2)|2,{97,49,0}}, +/* 6257 */ {(10<<2)|2,{97,49,0}}, +/* 6258 */ {(10<<2)|2,{97,49,0}}, +/* 6259 */ {(10<<2)|2,{97,49,0}}, +/* 6260 */ {(10<<2)|2,{97,49,0}}, +/* 6261 */ {(10<<2)|2,{97,49,0}}, +/* 6262 */ {(10<<2)|2,{97,49,0}}, +/* 6263 */ {(10<<2)|2,{97,49,0}}, +/* 6264 */ {(10<<2)|2,{97,49,0}}, +/* 6265 */ {(10<<2)|2,{97,49,0}}, +/* 6266 */ {(10<<2)|2,{97,49,0}}, +/* 6267 */ {(10<<2)|2,{97,49,0}}, +/* 6268 */ {(10<<2)|2,{97,49,0}}, +/* 6269 */ {(10<<2)|2,{97,49,0}}, +/* 6270 */ {(10<<2)|2,{97,49,0}}, +/* 6271 */ {(10<<2)|2,{97,49,0}}, +/* 6272 */ {(15<<2)|3,{97,50,48}}, +/* 6273 */ {(15<<2)|3,{97,50,48}}, +/* 6274 */ {(15<<2)|3,{97,50,49}}, +/* 6275 */ {(15<<2)|3,{97,50,49}}, +/* 6276 */ {(15<<2)|3,{97,50,50}}, +/* 6277 */ {(15<<2)|3,{97,50,50}}, +/* 6278 */ {(15<<2)|3,{97,50,97}}, +/* 6279 */ {(15<<2)|3,{97,50,97}}, +/* 6280 */ {(15<<2)|3,{97,50,99}}, +/* 6281 */ {(15<<2)|3,{97,50,99}}, +/* 6282 */ {(15<<2)|3,{97,50,101}}, +/* 6283 */ {(15<<2)|3,{97,50,101}}, +/* 6284 */ {(15<<2)|3,{97,50,105}}, +/* 6285 */ {(15<<2)|3,{97,50,105}}, +/* 6286 */ {(15<<2)|3,{97,50,111}}, +/* 6287 */ {(15<<2)|3,{97,50,111}}, +/* 6288 */ {(15<<2)|3,{97,50,115}}, +/* 6289 */ {(15<<2)|3,{97,50,115}}, +/* 6290 */ {(15<<2)|3,{97,50,116}}, +/* 6291 */ {(15<<2)|3,{97,50,116}}, +/* 6292 */ {(16<<2)|3,{97,50,32}}, +/* 6293 */ {(16<<2)|3,{97,50,37}}, +/* 6294 */ {(16<<2)|3,{97,50,45}}, +/* 6295 */ {(16<<2)|3,{97,50,46}}, +/* 6296 */ {(16<<2)|3,{97,50,47}}, +/* 6297 */ {(16<<2)|3,{97,50,51}}, +/* 6298 */ {(16<<2)|3,{97,50,52}}, +/* 6299 */ {(16<<2)|3,{97,50,53}}, +/* 6300 */ {(16<<2)|3,{97,50,54}}, +/* 6301 */ {(16<<2)|3,{97,50,55}}, +/* 6302 */ {(16<<2)|3,{97,50,56}}, +/* 6303 */ {(16<<2)|3,{97,50,57}}, +/* 6304 */ {(16<<2)|3,{97,50,61}}, +/* 6305 */ {(16<<2)|3,{97,50,65}}, +/* 6306 */ {(16<<2)|3,{97,50,95}}, +/* 6307 */ {(16<<2)|3,{97,50,98}}, +/* 6308 */ {(16<<2)|3,{97,50,100}}, +/* 6309 */ {(16<<2)|3,{97,50,102}}, +/* 6310 */ {(16<<2)|3,{97,50,103}}, +/* 6311 */ {(16<<2)|3,{97,50,104}}, +/* 6312 */ {(16<<2)|3,{97,50,108}}, +/* 6313 */ {(16<<2)|3,{97,50,109}}, +/* 6314 */ {(16<<2)|3,{97,50,110}}, +/* 6315 */ {(16<<2)|3,{97,50,112}}, +/* 6316 */ {(16<<2)|3,{97,50,114}}, +/* 6317 */ {(16<<2)|3,{97,50,117}}, +/* 6318 */ {(10<<2)|2,{97,50,0}}, +/* 6319 */ {(10<<2)|2,{97,50,0}}, +/* 6320 */ {(10<<2)|2,{97,50,0}}, +/* 6321 */ {(10<<2)|2,{97,50,0}}, +/* 6322 */ {(10<<2)|2,{97,50,0}}, +/* 6323 */ {(10<<2)|2,{97,50,0}}, +/* 6324 */ {(10<<2)|2,{97,50,0}}, +/* 6325 */ {(10<<2)|2,{97,50,0}}, +/* 6326 */ {(10<<2)|2,{97,50,0}}, +/* 6327 */ {(10<<2)|2,{97,50,0}}, +/* 6328 */ {(10<<2)|2,{97,50,0}}, +/* 6329 */ {(10<<2)|2,{97,50,0}}, +/* 6330 */ {(10<<2)|2,{97,50,0}}, +/* 6331 */ {(10<<2)|2,{97,50,0}}, +/* 6332 */ {(10<<2)|2,{97,50,0}}, +/* 6333 */ {(10<<2)|2,{97,50,0}}, +/* 6334 */ {(10<<2)|2,{97,50,0}}, +/* 6335 */ {(10<<2)|2,{97,50,0}}, +/* 6336 */ {(15<<2)|3,{97,97,48}}, +/* 6337 */ {(15<<2)|3,{97,97,48}}, +/* 6338 */ {(15<<2)|3,{97,97,49}}, +/* 6339 */ {(15<<2)|3,{97,97,49}}, +/* 6340 */ {(15<<2)|3,{97,97,50}}, +/* 6341 */ {(15<<2)|3,{97,97,50}}, +/* 6342 */ {(15<<2)|3,{97,97,97}}, +/* 6343 */ {(15<<2)|3,{97,97,97}}, +/* 6344 */ {(15<<2)|3,{97,97,99}}, +/* 6345 */ {(15<<2)|3,{97,97,99}}, +/* 6346 */ {(15<<2)|3,{97,97,101}}, +/* 6347 */ {(15<<2)|3,{97,97,101}}, +/* 6348 */ {(15<<2)|3,{97,97,105}}, +/* 6349 */ {(15<<2)|3,{97,97,105}}, +/* 6350 */ {(15<<2)|3,{97,97,111}}, +/* 6351 */ {(15<<2)|3,{97,97,111}}, +/* 6352 */ {(15<<2)|3,{97,97,115}}, +/* 6353 */ {(15<<2)|3,{97,97,115}}, +/* 6354 */ {(15<<2)|3,{97,97,116}}, +/* 6355 */ {(15<<2)|3,{97,97,116}}, +/* 6356 */ {(16<<2)|3,{97,97,32}}, +/* 6357 */ {(16<<2)|3,{97,97,37}}, +/* 6358 */ {(16<<2)|3,{97,97,45}}, +/* 6359 */ {(16<<2)|3,{97,97,46}}, +/* 6360 */ {(16<<2)|3,{97,97,47}}, +/* 6361 */ {(16<<2)|3,{97,97,51}}, +/* 6362 */ {(16<<2)|3,{97,97,52}}, +/* 6363 */ {(16<<2)|3,{97,97,53}}, +/* 6364 */ {(16<<2)|3,{97,97,54}}, +/* 6365 */ {(16<<2)|3,{97,97,55}}, +/* 6366 */ {(16<<2)|3,{97,97,56}}, +/* 6367 */ {(16<<2)|3,{97,97,57}}, +/* 6368 */ {(16<<2)|3,{97,97,61}}, +/* 6369 */ {(16<<2)|3,{97,97,65}}, +/* 6370 */ {(16<<2)|3,{97,97,95}}, +/* 6371 */ {(16<<2)|3,{97,97,98}}, +/* 6372 */ {(16<<2)|3,{97,97,100}}, +/* 6373 */ {(16<<2)|3,{97,97,102}}, +/* 6374 */ {(16<<2)|3,{97,97,103}}, +/* 6375 */ {(16<<2)|3,{97,97,104}}, +/* 6376 */ {(16<<2)|3,{97,97,108}}, +/* 6377 */ {(16<<2)|3,{97,97,109}}, +/* 6378 */ {(16<<2)|3,{97,97,110}}, +/* 6379 */ {(16<<2)|3,{97,97,112}}, +/* 6380 */ {(16<<2)|3,{97,97,114}}, +/* 6381 */ {(16<<2)|3,{97,97,117}}, +/* 6382 */ {(10<<2)|2,{97,97,0}}, +/* 6383 */ {(10<<2)|2,{97,97,0}}, +/* 6384 */ {(10<<2)|2,{97,97,0}}, +/* 6385 */ {(10<<2)|2,{97,97,0}}, +/* 6386 */ {(10<<2)|2,{97,97,0}}, +/* 6387 */ {(10<<2)|2,{97,97,0}}, +/* 6388 */ {(10<<2)|2,{97,97,0}}, +/* 6389 */ {(10<<2)|2,{97,97,0}}, +/* 6390 */ {(10<<2)|2,{97,97,0}}, +/* 6391 */ {(10<<2)|2,{97,97,0}}, +/* 6392 */ {(10<<2)|2,{97,97,0}}, +/* 6393 */ {(10<<2)|2,{97,97,0}}, +/* 6394 */ {(10<<2)|2,{97,97,0}}, +/* 6395 */ {(10<<2)|2,{97,97,0}}, +/* 6396 */ {(10<<2)|2,{97,97,0}}, +/* 6397 */ {(10<<2)|2,{97,97,0}}, +/* 6398 */ {(10<<2)|2,{97,97,0}}, +/* 6399 */ {(10<<2)|2,{97,97,0}}, +/* 6400 */ {(15<<2)|3,{97,99,48}}, +/* 6401 */ {(15<<2)|3,{97,99,48}}, +/* 6402 */ {(15<<2)|3,{97,99,49}}, +/* 6403 */ {(15<<2)|3,{97,99,49}}, +/* 6404 */ {(15<<2)|3,{97,99,50}}, +/* 6405 */ {(15<<2)|3,{97,99,50}}, +/* 6406 */ {(15<<2)|3,{97,99,97}}, +/* 6407 */ {(15<<2)|3,{97,99,97}}, +/* 6408 */ {(15<<2)|3,{97,99,99}}, +/* 6409 */ {(15<<2)|3,{97,99,99}}, +/* 6410 */ {(15<<2)|3,{97,99,101}}, +/* 6411 */ {(15<<2)|3,{97,99,101}}, +/* 6412 */ {(15<<2)|3,{97,99,105}}, +/* 6413 */ {(15<<2)|3,{97,99,105}}, +/* 6414 */ {(15<<2)|3,{97,99,111}}, +/* 6415 */ {(15<<2)|3,{97,99,111}}, +/* 6416 */ {(15<<2)|3,{97,99,115}}, +/* 6417 */ {(15<<2)|3,{97,99,115}}, +/* 6418 */ {(15<<2)|3,{97,99,116}}, +/* 6419 */ {(15<<2)|3,{97,99,116}}, +/* 6420 */ {(16<<2)|3,{97,99,32}}, +/* 6421 */ {(16<<2)|3,{97,99,37}}, +/* 6422 */ {(16<<2)|3,{97,99,45}}, +/* 6423 */ {(16<<2)|3,{97,99,46}}, +/* 6424 */ {(16<<2)|3,{97,99,47}}, +/* 6425 */ {(16<<2)|3,{97,99,51}}, +/* 6426 */ {(16<<2)|3,{97,99,52}}, +/* 6427 */ {(16<<2)|3,{97,99,53}}, +/* 6428 */ {(16<<2)|3,{97,99,54}}, +/* 6429 */ {(16<<2)|3,{97,99,55}}, +/* 6430 */ {(16<<2)|3,{97,99,56}}, +/* 6431 */ {(16<<2)|3,{97,99,57}}, +/* 6432 */ {(16<<2)|3,{97,99,61}}, +/* 6433 */ {(16<<2)|3,{97,99,65}}, +/* 6434 */ {(16<<2)|3,{97,99,95}}, +/* 6435 */ {(16<<2)|3,{97,99,98}}, +/* 6436 */ {(16<<2)|3,{97,99,100}}, +/* 6437 */ {(16<<2)|3,{97,99,102}}, +/* 6438 */ {(16<<2)|3,{97,99,103}}, +/* 6439 */ {(16<<2)|3,{97,99,104}}, +/* 6440 */ {(16<<2)|3,{97,99,108}}, +/* 6441 */ {(16<<2)|3,{97,99,109}}, +/* 6442 */ {(16<<2)|3,{97,99,110}}, +/* 6443 */ {(16<<2)|3,{97,99,112}}, +/* 6444 */ {(16<<2)|3,{97,99,114}}, +/* 6445 */ {(16<<2)|3,{97,99,117}}, +/* 6446 */ {(10<<2)|2,{97,99,0}}, +/* 6447 */ {(10<<2)|2,{97,99,0}}, +/* 6448 */ {(10<<2)|2,{97,99,0}}, +/* 6449 */ {(10<<2)|2,{97,99,0}}, +/* 6450 */ {(10<<2)|2,{97,99,0}}, +/* 6451 */ {(10<<2)|2,{97,99,0}}, +/* 6452 */ {(10<<2)|2,{97,99,0}}, +/* 6453 */ {(10<<2)|2,{97,99,0}}, +/* 6454 */ {(10<<2)|2,{97,99,0}}, +/* 6455 */ {(10<<2)|2,{97,99,0}}, +/* 6456 */ {(10<<2)|2,{97,99,0}}, +/* 6457 */ {(10<<2)|2,{97,99,0}}, +/* 6458 */ {(10<<2)|2,{97,99,0}}, +/* 6459 */ {(10<<2)|2,{97,99,0}}, +/* 6460 */ {(10<<2)|2,{97,99,0}}, +/* 6461 */ {(10<<2)|2,{97,99,0}}, +/* 6462 */ {(10<<2)|2,{97,99,0}}, +/* 6463 */ {(10<<2)|2,{97,99,0}}, +/* 6464 */ {(15<<2)|3,{97,101,48}}, +/* 6465 */ {(15<<2)|3,{97,101,48}}, +/* 6466 */ {(15<<2)|3,{97,101,49}}, +/* 6467 */ {(15<<2)|3,{97,101,49}}, +/* 6468 */ {(15<<2)|3,{97,101,50}}, +/* 6469 */ {(15<<2)|3,{97,101,50}}, +/* 6470 */ {(15<<2)|3,{97,101,97}}, +/* 6471 */ {(15<<2)|3,{97,101,97}}, +/* 6472 */ {(15<<2)|3,{97,101,99}}, +/* 6473 */ {(15<<2)|3,{97,101,99}}, +/* 6474 */ {(15<<2)|3,{97,101,101}}, +/* 6475 */ {(15<<2)|3,{97,101,101}}, +/* 6476 */ {(15<<2)|3,{97,101,105}}, +/* 6477 */ {(15<<2)|3,{97,101,105}}, +/* 6478 */ {(15<<2)|3,{97,101,111}}, +/* 6479 */ {(15<<2)|3,{97,101,111}}, +/* 6480 */ {(15<<2)|3,{97,101,115}}, +/* 6481 */ {(15<<2)|3,{97,101,115}}, +/* 6482 */ {(15<<2)|3,{97,101,116}}, +/* 6483 */ {(15<<2)|3,{97,101,116}}, +/* 6484 */ {(16<<2)|3,{97,101,32}}, +/* 6485 */ {(16<<2)|3,{97,101,37}}, +/* 6486 */ {(16<<2)|3,{97,101,45}}, +/* 6487 */ {(16<<2)|3,{97,101,46}}, +/* 6488 */ {(16<<2)|3,{97,101,47}}, +/* 6489 */ {(16<<2)|3,{97,101,51}}, +/* 6490 */ {(16<<2)|3,{97,101,52}}, +/* 6491 */ {(16<<2)|3,{97,101,53}}, +/* 6492 */ {(16<<2)|3,{97,101,54}}, +/* 6493 */ {(16<<2)|3,{97,101,55}}, +/* 6494 */ {(16<<2)|3,{97,101,56}}, +/* 6495 */ {(16<<2)|3,{97,101,57}}, +/* 6496 */ {(16<<2)|3,{97,101,61}}, +/* 6497 */ {(16<<2)|3,{97,101,65}}, +/* 6498 */ {(16<<2)|3,{97,101,95}}, +/* 6499 */ {(16<<2)|3,{97,101,98}}, +/* 6500 */ {(16<<2)|3,{97,101,100}}, +/* 6501 */ {(16<<2)|3,{97,101,102}}, +/* 6502 */ {(16<<2)|3,{97,101,103}}, +/* 6503 */ {(16<<2)|3,{97,101,104}}, +/* 6504 */ {(16<<2)|3,{97,101,108}}, +/* 6505 */ {(16<<2)|3,{97,101,109}}, +/* 6506 */ {(16<<2)|3,{97,101,110}}, +/* 6507 */ {(16<<2)|3,{97,101,112}}, +/* 6508 */ {(16<<2)|3,{97,101,114}}, +/* 6509 */ {(16<<2)|3,{97,101,117}}, +/* 6510 */ {(10<<2)|2,{97,101,0}}, +/* 6511 */ {(10<<2)|2,{97,101,0}}, +/* 6512 */ {(10<<2)|2,{97,101,0}}, +/* 6513 */ {(10<<2)|2,{97,101,0}}, +/* 6514 */ {(10<<2)|2,{97,101,0}}, +/* 6515 */ {(10<<2)|2,{97,101,0}}, +/* 6516 */ {(10<<2)|2,{97,101,0}}, +/* 6517 */ {(10<<2)|2,{97,101,0}}, +/* 6518 */ {(10<<2)|2,{97,101,0}}, +/* 6519 */ {(10<<2)|2,{97,101,0}}, +/* 6520 */ {(10<<2)|2,{97,101,0}}, +/* 6521 */ {(10<<2)|2,{97,101,0}}, +/* 6522 */ {(10<<2)|2,{97,101,0}}, +/* 6523 */ {(10<<2)|2,{97,101,0}}, +/* 6524 */ {(10<<2)|2,{97,101,0}}, +/* 6525 */ {(10<<2)|2,{97,101,0}}, +/* 6526 */ {(10<<2)|2,{97,101,0}}, +/* 6527 */ {(10<<2)|2,{97,101,0}}, +/* 6528 */ {(15<<2)|3,{97,105,48}}, +/* 6529 */ {(15<<2)|3,{97,105,48}}, +/* 6530 */ {(15<<2)|3,{97,105,49}}, +/* 6531 */ {(15<<2)|3,{97,105,49}}, +/* 6532 */ {(15<<2)|3,{97,105,50}}, +/* 6533 */ {(15<<2)|3,{97,105,50}}, +/* 6534 */ {(15<<2)|3,{97,105,97}}, +/* 6535 */ {(15<<2)|3,{97,105,97}}, +/* 6536 */ {(15<<2)|3,{97,105,99}}, +/* 6537 */ {(15<<2)|3,{97,105,99}}, +/* 6538 */ {(15<<2)|3,{97,105,101}}, +/* 6539 */ {(15<<2)|3,{97,105,101}}, +/* 6540 */ {(15<<2)|3,{97,105,105}}, +/* 6541 */ {(15<<2)|3,{97,105,105}}, +/* 6542 */ {(15<<2)|3,{97,105,111}}, +/* 6543 */ {(15<<2)|3,{97,105,111}}, +/* 6544 */ {(15<<2)|3,{97,105,115}}, +/* 6545 */ {(15<<2)|3,{97,105,115}}, +/* 6546 */ {(15<<2)|3,{97,105,116}}, +/* 6547 */ {(15<<2)|3,{97,105,116}}, +/* 6548 */ {(16<<2)|3,{97,105,32}}, +/* 6549 */ {(16<<2)|3,{97,105,37}}, +/* 6550 */ {(16<<2)|3,{97,105,45}}, +/* 6551 */ {(16<<2)|3,{97,105,46}}, +/* 6552 */ {(16<<2)|3,{97,105,47}}, +/* 6553 */ {(16<<2)|3,{97,105,51}}, +/* 6554 */ {(16<<2)|3,{97,105,52}}, +/* 6555 */ {(16<<2)|3,{97,105,53}}, +/* 6556 */ {(16<<2)|3,{97,105,54}}, +/* 6557 */ {(16<<2)|3,{97,105,55}}, +/* 6558 */ {(16<<2)|3,{97,105,56}}, +/* 6559 */ {(16<<2)|3,{97,105,57}}, +/* 6560 */ {(16<<2)|3,{97,105,61}}, +/* 6561 */ {(16<<2)|3,{97,105,65}}, +/* 6562 */ {(16<<2)|3,{97,105,95}}, +/* 6563 */ {(16<<2)|3,{97,105,98}}, +/* 6564 */ {(16<<2)|3,{97,105,100}}, +/* 6565 */ {(16<<2)|3,{97,105,102}}, +/* 6566 */ {(16<<2)|3,{97,105,103}}, +/* 6567 */ {(16<<2)|3,{97,105,104}}, +/* 6568 */ {(16<<2)|3,{97,105,108}}, +/* 6569 */ {(16<<2)|3,{97,105,109}}, +/* 6570 */ {(16<<2)|3,{97,105,110}}, +/* 6571 */ {(16<<2)|3,{97,105,112}}, +/* 6572 */ {(16<<2)|3,{97,105,114}}, +/* 6573 */ {(16<<2)|3,{97,105,117}}, +/* 6574 */ {(10<<2)|2,{97,105,0}}, +/* 6575 */ {(10<<2)|2,{97,105,0}}, +/* 6576 */ {(10<<2)|2,{97,105,0}}, +/* 6577 */ {(10<<2)|2,{97,105,0}}, +/* 6578 */ {(10<<2)|2,{97,105,0}}, +/* 6579 */ {(10<<2)|2,{97,105,0}}, +/* 6580 */ {(10<<2)|2,{97,105,0}}, +/* 6581 */ {(10<<2)|2,{97,105,0}}, +/* 6582 */ {(10<<2)|2,{97,105,0}}, +/* 6583 */ {(10<<2)|2,{97,105,0}}, +/* 6584 */ {(10<<2)|2,{97,105,0}}, +/* 6585 */ {(10<<2)|2,{97,105,0}}, +/* 6586 */ {(10<<2)|2,{97,105,0}}, +/* 6587 */ {(10<<2)|2,{97,105,0}}, +/* 6588 */ {(10<<2)|2,{97,105,0}}, +/* 6589 */ {(10<<2)|2,{97,105,0}}, +/* 6590 */ {(10<<2)|2,{97,105,0}}, +/* 6591 */ {(10<<2)|2,{97,105,0}}, +/* 6592 */ {(15<<2)|3,{97,111,48}}, +/* 6593 */ {(15<<2)|3,{97,111,48}}, +/* 6594 */ {(15<<2)|3,{97,111,49}}, +/* 6595 */ {(15<<2)|3,{97,111,49}}, +/* 6596 */ {(15<<2)|3,{97,111,50}}, +/* 6597 */ {(15<<2)|3,{97,111,50}}, +/* 6598 */ {(15<<2)|3,{97,111,97}}, +/* 6599 */ {(15<<2)|3,{97,111,97}}, +/* 6600 */ {(15<<2)|3,{97,111,99}}, +/* 6601 */ {(15<<2)|3,{97,111,99}}, +/* 6602 */ {(15<<2)|3,{97,111,101}}, +/* 6603 */ {(15<<2)|3,{97,111,101}}, +/* 6604 */ {(15<<2)|3,{97,111,105}}, +/* 6605 */ {(15<<2)|3,{97,111,105}}, +/* 6606 */ {(15<<2)|3,{97,111,111}}, +/* 6607 */ {(15<<2)|3,{97,111,111}}, +/* 6608 */ {(15<<2)|3,{97,111,115}}, +/* 6609 */ {(15<<2)|3,{97,111,115}}, +/* 6610 */ {(15<<2)|3,{97,111,116}}, +/* 6611 */ {(15<<2)|3,{97,111,116}}, +/* 6612 */ {(16<<2)|3,{97,111,32}}, +/* 6613 */ {(16<<2)|3,{97,111,37}}, +/* 6614 */ {(16<<2)|3,{97,111,45}}, +/* 6615 */ {(16<<2)|3,{97,111,46}}, +/* 6616 */ {(16<<2)|3,{97,111,47}}, +/* 6617 */ {(16<<2)|3,{97,111,51}}, +/* 6618 */ {(16<<2)|3,{97,111,52}}, +/* 6619 */ {(16<<2)|3,{97,111,53}}, +/* 6620 */ {(16<<2)|3,{97,111,54}}, +/* 6621 */ {(16<<2)|3,{97,111,55}}, +/* 6622 */ {(16<<2)|3,{97,111,56}}, +/* 6623 */ {(16<<2)|3,{97,111,57}}, +/* 6624 */ {(16<<2)|3,{97,111,61}}, +/* 6625 */ {(16<<2)|3,{97,111,65}}, +/* 6626 */ {(16<<2)|3,{97,111,95}}, +/* 6627 */ {(16<<2)|3,{97,111,98}}, +/* 6628 */ {(16<<2)|3,{97,111,100}}, +/* 6629 */ {(16<<2)|3,{97,111,102}}, +/* 6630 */ {(16<<2)|3,{97,111,103}}, +/* 6631 */ {(16<<2)|3,{97,111,104}}, +/* 6632 */ {(16<<2)|3,{97,111,108}}, +/* 6633 */ {(16<<2)|3,{97,111,109}}, +/* 6634 */ {(16<<2)|3,{97,111,110}}, +/* 6635 */ {(16<<2)|3,{97,111,112}}, +/* 6636 */ {(16<<2)|3,{97,111,114}}, +/* 6637 */ {(16<<2)|3,{97,111,117}}, +/* 6638 */ {(10<<2)|2,{97,111,0}}, +/* 6639 */ {(10<<2)|2,{97,111,0}}, +/* 6640 */ {(10<<2)|2,{97,111,0}}, +/* 6641 */ {(10<<2)|2,{97,111,0}}, +/* 6642 */ {(10<<2)|2,{97,111,0}}, +/* 6643 */ {(10<<2)|2,{97,111,0}}, +/* 6644 */ {(10<<2)|2,{97,111,0}}, +/* 6645 */ {(10<<2)|2,{97,111,0}}, +/* 6646 */ {(10<<2)|2,{97,111,0}}, +/* 6647 */ {(10<<2)|2,{97,111,0}}, +/* 6648 */ {(10<<2)|2,{97,111,0}}, +/* 6649 */ {(10<<2)|2,{97,111,0}}, +/* 6650 */ {(10<<2)|2,{97,111,0}}, +/* 6651 */ {(10<<2)|2,{97,111,0}}, +/* 6652 */ {(10<<2)|2,{97,111,0}}, +/* 6653 */ {(10<<2)|2,{97,111,0}}, +/* 6654 */ {(10<<2)|2,{97,111,0}}, +/* 6655 */ {(10<<2)|2,{97,111,0}}, +/* 6656 */ {(15<<2)|3,{97,115,48}}, +/* 6657 */ {(15<<2)|3,{97,115,48}}, +/* 6658 */ {(15<<2)|3,{97,115,49}}, +/* 6659 */ {(15<<2)|3,{97,115,49}}, +/* 6660 */ {(15<<2)|3,{97,115,50}}, +/* 6661 */ {(15<<2)|3,{97,115,50}}, +/* 6662 */ {(15<<2)|3,{97,115,97}}, +/* 6663 */ {(15<<2)|3,{97,115,97}}, +/* 6664 */ {(15<<2)|3,{97,115,99}}, +/* 6665 */ {(15<<2)|3,{97,115,99}}, +/* 6666 */ {(15<<2)|3,{97,115,101}}, +/* 6667 */ {(15<<2)|3,{97,115,101}}, +/* 6668 */ {(15<<2)|3,{97,115,105}}, +/* 6669 */ {(15<<2)|3,{97,115,105}}, +/* 6670 */ {(15<<2)|3,{97,115,111}}, +/* 6671 */ {(15<<2)|3,{97,115,111}}, +/* 6672 */ {(15<<2)|3,{97,115,115}}, +/* 6673 */ {(15<<2)|3,{97,115,115}}, +/* 6674 */ {(15<<2)|3,{97,115,116}}, +/* 6675 */ {(15<<2)|3,{97,115,116}}, +/* 6676 */ {(16<<2)|3,{97,115,32}}, +/* 6677 */ {(16<<2)|3,{97,115,37}}, +/* 6678 */ {(16<<2)|3,{97,115,45}}, +/* 6679 */ {(16<<2)|3,{97,115,46}}, +/* 6680 */ {(16<<2)|3,{97,115,47}}, +/* 6681 */ {(16<<2)|3,{97,115,51}}, +/* 6682 */ {(16<<2)|3,{97,115,52}}, +/* 6683 */ {(16<<2)|3,{97,115,53}}, +/* 6684 */ {(16<<2)|3,{97,115,54}}, +/* 6685 */ {(16<<2)|3,{97,115,55}}, +/* 6686 */ {(16<<2)|3,{97,115,56}}, +/* 6687 */ {(16<<2)|3,{97,115,57}}, +/* 6688 */ {(16<<2)|3,{97,115,61}}, +/* 6689 */ {(16<<2)|3,{97,115,65}}, +/* 6690 */ {(16<<2)|3,{97,115,95}}, +/* 6691 */ {(16<<2)|3,{97,115,98}}, +/* 6692 */ {(16<<2)|3,{97,115,100}}, +/* 6693 */ {(16<<2)|3,{97,115,102}}, +/* 6694 */ {(16<<2)|3,{97,115,103}}, +/* 6695 */ {(16<<2)|3,{97,115,104}}, +/* 6696 */ {(16<<2)|3,{97,115,108}}, +/* 6697 */ {(16<<2)|3,{97,115,109}}, +/* 6698 */ {(16<<2)|3,{97,115,110}}, +/* 6699 */ {(16<<2)|3,{97,115,112}}, +/* 6700 */ {(16<<2)|3,{97,115,114}}, +/* 6701 */ {(16<<2)|3,{97,115,117}}, +/* 6702 */ {(10<<2)|2,{97,115,0}}, +/* 6703 */ {(10<<2)|2,{97,115,0}}, +/* 6704 */ {(10<<2)|2,{97,115,0}}, +/* 6705 */ {(10<<2)|2,{97,115,0}}, +/* 6706 */ {(10<<2)|2,{97,115,0}}, +/* 6707 */ {(10<<2)|2,{97,115,0}}, +/* 6708 */ {(10<<2)|2,{97,115,0}}, +/* 6709 */ {(10<<2)|2,{97,115,0}}, +/* 6710 */ {(10<<2)|2,{97,115,0}}, +/* 6711 */ {(10<<2)|2,{97,115,0}}, +/* 6712 */ {(10<<2)|2,{97,115,0}}, +/* 6713 */ {(10<<2)|2,{97,115,0}}, +/* 6714 */ {(10<<2)|2,{97,115,0}}, +/* 6715 */ {(10<<2)|2,{97,115,0}}, +/* 6716 */ {(10<<2)|2,{97,115,0}}, +/* 6717 */ {(10<<2)|2,{97,115,0}}, +/* 6718 */ {(10<<2)|2,{97,115,0}}, +/* 6719 */ {(10<<2)|2,{97,115,0}}, +/* 6720 */ {(15<<2)|3,{97,116,48}}, +/* 6721 */ {(15<<2)|3,{97,116,48}}, +/* 6722 */ {(15<<2)|3,{97,116,49}}, +/* 6723 */ {(15<<2)|3,{97,116,49}}, +/* 6724 */ {(15<<2)|3,{97,116,50}}, +/* 6725 */ {(15<<2)|3,{97,116,50}}, +/* 6726 */ {(15<<2)|3,{97,116,97}}, +/* 6727 */ {(15<<2)|3,{97,116,97}}, +/* 6728 */ {(15<<2)|3,{97,116,99}}, +/* 6729 */ {(15<<2)|3,{97,116,99}}, +/* 6730 */ {(15<<2)|3,{97,116,101}}, +/* 6731 */ {(15<<2)|3,{97,116,101}}, +/* 6732 */ {(15<<2)|3,{97,116,105}}, +/* 6733 */ {(15<<2)|3,{97,116,105}}, +/* 6734 */ {(15<<2)|3,{97,116,111}}, +/* 6735 */ {(15<<2)|3,{97,116,111}}, +/* 6736 */ {(15<<2)|3,{97,116,115}}, +/* 6737 */ {(15<<2)|3,{97,116,115}}, +/* 6738 */ {(15<<2)|3,{97,116,116}}, +/* 6739 */ {(15<<2)|3,{97,116,116}}, +/* 6740 */ {(16<<2)|3,{97,116,32}}, +/* 6741 */ {(16<<2)|3,{97,116,37}}, +/* 6742 */ {(16<<2)|3,{97,116,45}}, +/* 6743 */ {(16<<2)|3,{97,116,46}}, +/* 6744 */ {(16<<2)|3,{97,116,47}}, +/* 6745 */ {(16<<2)|3,{97,116,51}}, +/* 6746 */ {(16<<2)|3,{97,116,52}}, +/* 6747 */ {(16<<2)|3,{97,116,53}}, +/* 6748 */ {(16<<2)|3,{97,116,54}}, +/* 6749 */ {(16<<2)|3,{97,116,55}}, +/* 6750 */ {(16<<2)|3,{97,116,56}}, +/* 6751 */ {(16<<2)|3,{97,116,57}}, +/* 6752 */ {(16<<2)|3,{97,116,61}}, +/* 6753 */ {(16<<2)|3,{97,116,65}}, +/* 6754 */ {(16<<2)|3,{97,116,95}}, +/* 6755 */ {(16<<2)|3,{97,116,98}}, +/* 6756 */ {(16<<2)|3,{97,116,100}}, +/* 6757 */ {(16<<2)|3,{97,116,102}}, +/* 6758 */ {(16<<2)|3,{97,116,103}}, +/* 6759 */ {(16<<2)|3,{97,116,104}}, +/* 6760 */ {(16<<2)|3,{97,116,108}}, +/* 6761 */ {(16<<2)|3,{97,116,109}}, +/* 6762 */ {(16<<2)|3,{97,116,110}}, +/* 6763 */ {(16<<2)|3,{97,116,112}}, +/* 6764 */ {(16<<2)|3,{97,116,114}}, +/* 6765 */ {(16<<2)|3,{97,116,117}}, +/* 6766 */ {(10<<2)|2,{97,116,0}}, +/* 6767 */ {(10<<2)|2,{97,116,0}}, +/* 6768 */ {(10<<2)|2,{97,116,0}}, +/* 6769 */ {(10<<2)|2,{97,116,0}}, +/* 6770 */ {(10<<2)|2,{97,116,0}}, +/* 6771 */ {(10<<2)|2,{97,116,0}}, +/* 6772 */ {(10<<2)|2,{97,116,0}}, +/* 6773 */ {(10<<2)|2,{97,116,0}}, +/* 6774 */ {(10<<2)|2,{97,116,0}}, +/* 6775 */ {(10<<2)|2,{97,116,0}}, +/* 6776 */ {(10<<2)|2,{97,116,0}}, +/* 6777 */ {(10<<2)|2,{97,116,0}}, +/* 6778 */ {(10<<2)|2,{97,116,0}}, +/* 6779 */ {(10<<2)|2,{97,116,0}}, +/* 6780 */ {(10<<2)|2,{97,116,0}}, +/* 6781 */ {(10<<2)|2,{97,116,0}}, +/* 6782 */ {(10<<2)|2,{97,116,0}}, +/* 6783 */ {(10<<2)|2,{97,116,0}}, +/* 6784 */ {(16<<2)|3,{97,32,48}}, +/* 6785 */ {(16<<2)|3,{97,32,49}}, +/* 6786 */ {(16<<2)|3,{97,32,50}}, +/* 6787 */ {(16<<2)|3,{97,32,97}}, +/* 6788 */ {(16<<2)|3,{97,32,99}}, +/* 6789 */ {(16<<2)|3,{97,32,101}}, +/* 6790 */ {(16<<2)|3,{97,32,105}}, +/* 6791 */ {(16<<2)|3,{97,32,111}}, +/* 6792 */ {(16<<2)|3,{97,32,115}}, +/* 6793 */ {(16<<2)|3,{97,32,116}}, +/* 6794 */ {(11<<2)|2,{97,32,0}}, +/* 6795 */ {(11<<2)|2,{97,32,0}}, +/* 6796 */ {(11<<2)|2,{97,32,0}}, +/* 6797 */ {(11<<2)|2,{97,32,0}}, +/* 6798 */ {(11<<2)|2,{97,32,0}}, +/* 6799 */ {(11<<2)|2,{97,32,0}}, +/* 6800 */ {(11<<2)|2,{97,32,0}}, +/* 6801 */ {(11<<2)|2,{97,32,0}}, +/* 6802 */ {(11<<2)|2,{97,32,0}}, +/* 6803 */ {(11<<2)|2,{97,32,0}}, +/* 6804 */ {(11<<2)|2,{97,32,0}}, +/* 6805 */ {(11<<2)|2,{97,32,0}}, +/* 6806 */ {(11<<2)|2,{97,32,0}}, +/* 6807 */ {(11<<2)|2,{97,32,0}}, +/* 6808 */ {(11<<2)|2,{97,32,0}}, +/* 6809 */ {(11<<2)|2,{97,32,0}}, +/* 6810 */ {(11<<2)|2,{97,32,0}}, +/* 6811 */ {(11<<2)|2,{97,32,0}}, +/* 6812 */ {(11<<2)|2,{97,32,0}}, +/* 6813 */ {(11<<2)|2,{97,32,0}}, +/* 6814 */ {(11<<2)|2,{97,32,0}}, +/* 6815 */ {(11<<2)|2,{97,32,0}}, +/* 6816 */ {(16<<2)|3,{97,37,48}}, +/* 6817 */ {(16<<2)|3,{97,37,49}}, +/* 6818 */ {(16<<2)|3,{97,37,50}}, +/* 6819 */ {(16<<2)|3,{97,37,97}}, +/* 6820 */ {(16<<2)|3,{97,37,99}}, +/* 6821 */ {(16<<2)|3,{97,37,101}}, +/* 6822 */ {(16<<2)|3,{97,37,105}}, +/* 6823 */ {(16<<2)|3,{97,37,111}}, +/* 6824 */ {(16<<2)|3,{97,37,115}}, +/* 6825 */ {(16<<2)|3,{97,37,116}}, +/* 6826 */ {(11<<2)|2,{97,37,0}}, +/* 6827 */ {(11<<2)|2,{97,37,0}}, +/* 6828 */ {(11<<2)|2,{97,37,0}}, +/* 6829 */ {(11<<2)|2,{97,37,0}}, +/* 6830 */ {(11<<2)|2,{97,37,0}}, +/* 6831 */ {(11<<2)|2,{97,37,0}}, +/* 6832 */ {(11<<2)|2,{97,37,0}}, +/* 6833 */ {(11<<2)|2,{97,37,0}}, +/* 6834 */ {(11<<2)|2,{97,37,0}}, +/* 6835 */ {(11<<2)|2,{97,37,0}}, +/* 6836 */ {(11<<2)|2,{97,37,0}}, +/* 6837 */ {(11<<2)|2,{97,37,0}}, +/* 6838 */ {(11<<2)|2,{97,37,0}}, +/* 6839 */ {(11<<2)|2,{97,37,0}}, +/* 6840 */ {(11<<2)|2,{97,37,0}}, +/* 6841 */ {(11<<2)|2,{97,37,0}}, +/* 6842 */ {(11<<2)|2,{97,37,0}}, +/* 6843 */ {(11<<2)|2,{97,37,0}}, +/* 6844 */ {(11<<2)|2,{97,37,0}}, +/* 6845 */ {(11<<2)|2,{97,37,0}}, +/* 6846 */ {(11<<2)|2,{97,37,0}}, +/* 6847 */ {(11<<2)|2,{97,37,0}}, +/* 6848 */ {(16<<2)|3,{97,45,48}}, +/* 6849 */ {(16<<2)|3,{97,45,49}}, +/* 6850 */ {(16<<2)|3,{97,45,50}}, +/* 6851 */ {(16<<2)|3,{97,45,97}}, +/* 6852 */ {(16<<2)|3,{97,45,99}}, +/* 6853 */ {(16<<2)|3,{97,45,101}}, +/* 6854 */ {(16<<2)|3,{97,45,105}}, +/* 6855 */ {(16<<2)|3,{97,45,111}}, +/* 6856 */ {(16<<2)|3,{97,45,115}}, +/* 6857 */ {(16<<2)|3,{97,45,116}}, +/* 6858 */ {(11<<2)|2,{97,45,0}}, +/* 6859 */ {(11<<2)|2,{97,45,0}}, +/* 6860 */ {(11<<2)|2,{97,45,0}}, +/* 6861 */ {(11<<2)|2,{97,45,0}}, +/* 6862 */ {(11<<2)|2,{97,45,0}}, +/* 6863 */ {(11<<2)|2,{97,45,0}}, +/* 6864 */ {(11<<2)|2,{97,45,0}}, +/* 6865 */ {(11<<2)|2,{97,45,0}}, +/* 6866 */ {(11<<2)|2,{97,45,0}}, +/* 6867 */ {(11<<2)|2,{97,45,0}}, +/* 6868 */ {(11<<2)|2,{97,45,0}}, +/* 6869 */ {(11<<2)|2,{97,45,0}}, +/* 6870 */ {(11<<2)|2,{97,45,0}}, +/* 6871 */ {(11<<2)|2,{97,45,0}}, +/* 6872 */ {(11<<2)|2,{97,45,0}}, +/* 6873 */ {(11<<2)|2,{97,45,0}}, +/* 6874 */ {(11<<2)|2,{97,45,0}}, +/* 6875 */ {(11<<2)|2,{97,45,0}}, +/* 6876 */ {(11<<2)|2,{97,45,0}}, +/* 6877 */ {(11<<2)|2,{97,45,0}}, +/* 6878 */ {(11<<2)|2,{97,45,0}}, +/* 6879 */ {(11<<2)|2,{97,45,0}}, +/* 6880 */ {(16<<2)|3,{97,46,48}}, +/* 6881 */ {(16<<2)|3,{97,46,49}}, +/* 6882 */ {(16<<2)|3,{97,46,50}}, +/* 6883 */ {(16<<2)|3,{97,46,97}}, +/* 6884 */ {(16<<2)|3,{97,46,99}}, +/* 6885 */ {(16<<2)|3,{97,46,101}}, +/* 6886 */ {(16<<2)|3,{97,46,105}}, +/* 6887 */ {(16<<2)|3,{97,46,111}}, +/* 6888 */ {(16<<2)|3,{97,46,115}}, +/* 6889 */ {(16<<2)|3,{97,46,116}}, +/* 6890 */ {(11<<2)|2,{97,46,0}}, +/* 6891 */ {(11<<2)|2,{97,46,0}}, +/* 6892 */ {(11<<2)|2,{97,46,0}}, +/* 6893 */ {(11<<2)|2,{97,46,0}}, +/* 6894 */ {(11<<2)|2,{97,46,0}}, +/* 6895 */ {(11<<2)|2,{97,46,0}}, +/* 6896 */ {(11<<2)|2,{97,46,0}}, +/* 6897 */ {(11<<2)|2,{97,46,0}}, +/* 6898 */ {(11<<2)|2,{97,46,0}}, +/* 6899 */ {(11<<2)|2,{97,46,0}}, +/* 6900 */ {(11<<2)|2,{97,46,0}}, +/* 6901 */ {(11<<2)|2,{97,46,0}}, +/* 6902 */ {(11<<2)|2,{97,46,0}}, +/* 6903 */ {(11<<2)|2,{97,46,0}}, +/* 6904 */ {(11<<2)|2,{97,46,0}}, +/* 6905 */ {(11<<2)|2,{97,46,0}}, +/* 6906 */ {(11<<2)|2,{97,46,0}}, +/* 6907 */ {(11<<2)|2,{97,46,0}}, +/* 6908 */ {(11<<2)|2,{97,46,0}}, +/* 6909 */ {(11<<2)|2,{97,46,0}}, +/* 6910 */ {(11<<2)|2,{97,46,0}}, +/* 6911 */ {(11<<2)|2,{97,46,0}}, +/* 6912 */ {(16<<2)|3,{97,47,48}}, +/* 6913 */ {(16<<2)|3,{97,47,49}}, +/* 6914 */ {(16<<2)|3,{97,47,50}}, +/* 6915 */ {(16<<2)|3,{97,47,97}}, +/* 6916 */ {(16<<2)|3,{97,47,99}}, +/* 6917 */ {(16<<2)|3,{97,47,101}}, +/* 6918 */ {(16<<2)|3,{97,47,105}}, +/* 6919 */ {(16<<2)|3,{97,47,111}}, +/* 6920 */ {(16<<2)|3,{97,47,115}}, +/* 6921 */ {(16<<2)|3,{97,47,116}}, +/* 6922 */ {(11<<2)|2,{97,47,0}}, +/* 6923 */ {(11<<2)|2,{97,47,0}}, +/* 6924 */ {(11<<2)|2,{97,47,0}}, +/* 6925 */ {(11<<2)|2,{97,47,0}}, +/* 6926 */ {(11<<2)|2,{97,47,0}}, +/* 6927 */ {(11<<2)|2,{97,47,0}}, +/* 6928 */ {(11<<2)|2,{97,47,0}}, +/* 6929 */ {(11<<2)|2,{97,47,0}}, +/* 6930 */ {(11<<2)|2,{97,47,0}}, +/* 6931 */ {(11<<2)|2,{97,47,0}}, +/* 6932 */ {(11<<2)|2,{97,47,0}}, +/* 6933 */ {(11<<2)|2,{97,47,0}}, +/* 6934 */ {(11<<2)|2,{97,47,0}}, +/* 6935 */ {(11<<2)|2,{97,47,0}}, +/* 6936 */ {(11<<2)|2,{97,47,0}}, +/* 6937 */ {(11<<2)|2,{97,47,0}}, +/* 6938 */ {(11<<2)|2,{97,47,0}}, +/* 6939 */ {(11<<2)|2,{97,47,0}}, +/* 6940 */ {(11<<2)|2,{97,47,0}}, +/* 6941 */ {(11<<2)|2,{97,47,0}}, +/* 6942 */ {(11<<2)|2,{97,47,0}}, +/* 6943 */ {(11<<2)|2,{97,47,0}}, +/* 6944 */ {(16<<2)|3,{97,51,48}}, +/* 6945 */ {(16<<2)|3,{97,51,49}}, +/* 6946 */ {(16<<2)|3,{97,51,50}}, +/* 6947 */ {(16<<2)|3,{97,51,97}}, +/* 6948 */ {(16<<2)|3,{97,51,99}}, +/* 6949 */ {(16<<2)|3,{97,51,101}}, +/* 6950 */ {(16<<2)|3,{97,51,105}}, +/* 6951 */ {(16<<2)|3,{97,51,111}}, +/* 6952 */ {(16<<2)|3,{97,51,115}}, +/* 6953 */ {(16<<2)|3,{97,51,116}}, +/* 6954 */ {(11<<2)|2,{97,51,0}}, +/* 6955 */ {(11<<2)|2,{97,51,0}}, +/* 6956 */ {(11<<2)|2,{97,51,0}}, +/* 6957 */ {(11<<2)|2,{97,51,0}}, +/* 6958 */ {(11<<2)|2,{97,51,0}}, +/* 6959 */ {(11<<2)|2,{97,51,0}}, +/* 6960 */ {(11<<2)|2,{97,51,0}}, +/* 6961 */ {(11<<2)|2,{97,51,0}}, +/* 6962 */ {(11<<2)|2,{97,51,0}}, +/* 6963 */ {(11<<2)|2,{97,51,0}}, +/* 6964 */ {(11<<2)|2,{97,51,0}}, +/* 6965 */ {(11<<2)|2,{97,51,0}}, +/* 6966 */ {(11<<2)|2,{97,51,0}}, +/* 6967 */ {(11<<2)|2,{97,51,0}}, +/* 6968 */ {(11<<2)|2,{97,51,0}}, +/* 6969 */ {(11<<2)|2,{97,51,0}}, +/* 6970 */ {(11<<2)|2,{97,51,0}}, +/* 6971 */ {(11<<2)|2,{97,51,0}}, +/* 6972 */ {(11<<2)|2,{97,51,0}}, +/* 6973 */ {(11<<2)|2,{97,51,0}}, +/* 6974 */ {(11<<2)|2,{97,51,0}}, +/* 6975 */ {(11<<2)|2,{97,51,0}}, +/* 6976 */ {(16<<2)|3,{97,52,48}}, +/* 6977 */ {(16<<2)|3,{97,52,49}}, +/* 6978 */ {(16<<2)|3,{97,52,50}}, +/* 6979 */ {(16<<2)|3,{97,52,97}}, +/* 6980 */ {(16<<2)|3,{97,52,99}}, +/* 6981 */ {(16<<2)|3,{97,52,101}}, +/* 6982 */ {(16<<2)|3,{97,52,105}}, +/* 6983 */ {(16<<2)|3,{97,52,111}}, +/* 6984 */ {(16<<2)|3,{97,52,115}}, +/* 6985 */ {(16<<2)|3,{97,52,116}}, +/* 6986 */ {(11<<2)|2,{97,52,0}}, +/* 6987 */ {(11<<2)|2,{97,52,0}}, +/* 6988 */ {(11<<2)|2,{97,52,0}}, +/* 6989 */ {(11<<2)|2,{97,52,0}}, +/* 6990 */ {(11<<2)|2,{97,52,0}}, +/* 6991 */ {(11<<2)|2,{97,52,0}}, +/* 6992 */ {(11<<2)|2,{97,52,0}}, +/* 6993 */ {(11<<2)|2,{97,52,0}}, +/* 6994 */ {(11<<2)|2,{97,52,0}}, +/* 6995 */ {(11<<2)|2,{97,52,0}}, +/* 6996 */ {(11<<2)|2,{97,52,0}}, +/* 6997 */ {(11<<2)|2,{97,52,0}}, +/* 6998 */ {(11<<2)|2,{97,52,0}}, +/* 6999 */ {(11<<2)|2,{97,52,0}}, +/* 7000 */ {(11<<2)|2,{97,52,0}}, +/* 7001 */ {(11<<2)|2,{97,52,0}}, +/* 7002 */ {(11<<2)|2,{97,52,0}}, +/* 7003 */ {(11<<2)|2,{97,52,0}}, +/* 7004 */ {(11<<2)|2,{97,52,0}}, +/* 7005 */ {(11<<2)|2,{97,52,0}}, +/* 7006 */ {(11<<2)|2,{97,52,0}}, +/* 7007 */ {(11<<2)|2,{97,52,0}}, +/* 7008 */ {(16<<2)|3,{97,53,48}}, +/* 7009 */ {(16<<2)|3,{97,53,49}}, +/* 7010 */ {(16<<2)|3,{97,53,50}}, +/* 7011 */ {(16<<2)|3,{97,53,97}}, +/* 7012 */ {(16<<2)|3,{97,53,99}}, +/* 7013 */ {(16<<2)|3,{97,53,101}}, +/* 7014 */ {(16<<2)|3,{97,53,105}}, +/* 7015 */ {(16<<2)|3,{97,53,111}}, +/* 7016 */ {(16<<2)|3,{97,53,115}}, +/* 7017 */ {(16<<2)|3,{97,53,116}}, +/* 7018 */ {(11<<2)|2,{97,53,0}}, +/* 7019 */ {(11<<2)|2,{97,53,0}}, +/* 7020 */ {(11<<2)|2,{97,53,0}}, +/* 7021 */ {(11<<2)|2,{97,53,0}}, +/* 7022 */ {(11<<2)|2,{97,53,0}}, +/* 7023 */ {(11<<2)|2,{97,53,0}}, +/* 7024 */ {(11<<2)|2,{97,53,0}}, +/* 7025 */ {(11<<2)|2,{97,53,0}}, +/* 7026 */ {(11<<2)|2,{97,53,0}}, +/* 7027 */ {(11<<2)|2,{97,53,0}}, +/* 7028 */ {(11<<2)|2,{97,53,0}}, +/* 7029 */ {(11<<2)|2,{97,53,0}}, +/* 7030 */ {(11<<2)|2,{97,53,0}}, +/* 7031 */ {(11<<2)|2,{97,53,0}}, +/* 7032 */ {(11<<2)|2,{97,53,0}}, +/* 7033 */ {(11<<2)|2,{97,53,0}}, +/* 7034 */ {(11<<2)|2,{97,53,0}}, +/* 7035 */ {(11<<2)|2,{97,53,0}}, +/* 7036 */ {(11<<2)|2,{97,53,0}}, +/* 7037 */ {(11<<2)|2,{97,53,0}}, +/* 7038 */ {(11<<2)|2,{97,53,0}}, +/* 7039 */ {(11<<2)|2,{97,53,0}}, +/* 7040 */ {(16<<2)|3,{97,54,48}}, +/* 7041 */ {(16<<2)|3,{97,54,49}}, +/* 7042 */ {(16<<2)|3,{97,54,50}}, +/* 7043 */ {(16<<2)|3,{97,54,97}}, +/* 7044 */ {(16<<2)|3,{97,54,99}}, +/* 7045 */ {(16<<2)|3,{97,54,101}}, +/* 7046 */ {(16<<2)|3,{97,54,105}}, +/* 7047 */ {(16<<2)|3,{97,54,111}}, +/* 7048 */ {(16<<2)|3,{97,54,115}}, +/* 7049 */ {(16<<2)|3,{97,54,116}}, +/* 7050 */ {(11<<2)|2,{97,54,0}}, +/* 7051 */ {(11<<2)|2,{97,54,0}}, +/* 7052 */ {(11<<2)|2,{97,54,0}}, +/* 7053 */ {(11<<2)|2,{97,54,0}}, +/* 7054 */ {(11<<2)|2,{97,54,0}}, +/* 7055 */ {(11<<2)|2,{97,54,0}}, +/* 7056 */ {(11<<2)|2,{97,54,0}}, +/* 7057 */ {(11<<2)|2,{97,54,0}}, +/* 7058 */ {(11<<2)|2,{97,54,0}}, +/* 7059 */ {(11<<2)|2,{97,54,0}}, +/* 7060 */ {(11<<2)|2,{97,54,0}}, +/* 7061 */ {(11<<2)|2,{97,54,0}}, +/* 7062 */ {(11<<2)|2,{97,54,0}}, +/* 7063 */ {(11<<2)|2,{97,54,0}}, +/* 7064 */ {(11<<2)|2,{97,54,0}}, +/* 7065 */ {(11<<2)|2,{97,54,0}}, +/* 7066 */ {(11<<2)|2,{97,54,0}}, +/* 7067 */ {(11<<2)|2,{97,54,0}}, +/* 7068 */ {(11<<2)|2,{97,54,0}}, +/* 7069 */ {(11<<2)|2,{97,54,0}}, +/* 7070 */ {(11<<2)|2,{97,54,0}}, +/* 7071 */ {(11<<2)|2,{97,54,0}}, +/* 7072 */ {(16<<2)|3,{97,55,48}}, +/* 7073 */ {(16<<2)|3,{97,55,49}}, +/* 7074 */ {(16<<2)|3,{97,55,50}}, +/* 7075 */ {(16<<2)|3,{97,55,97}}, +/* 7076 */ {(16<<2)|3,{97,55,99}}, +/* 7077 */ {(16<<2)|3,{97,55,101}}, +/* 7078 */ {(16<<2)|3,{97,55,105}}, +/* 7079 */ {(16<<2)|3,{97,55,111}}, +/* 7080 */ {(16<<2)|3,{97,55,115}}, +/* 7081 */ {(16<<2)|3,{97,55,116}}, +/* 7082 */ {(11<<2)|2,{97,55,0}}, +/* 7083 */ {(11<<2)|2,{97,55,0}}, +/* 7084 */ {(11<<2)|2,{97,55,0}}, +/* 7085 */ {(11<<2)|2,{97,55,0}}, +/* 7086 */ {(11<<2)|2,{97,55,0}}, +/* 7087 */ {(11<<2)|2,{97,55,0}}, +/* 7088 */ {(11<<2)|2,{97,55,0}}, +/* 7089 */ {(11<<2)|2,{97,55,0}}, +/* 7090 */ {(11<<2)|2,{97,55,0}}, +/* 7091 */ {(11<<2)|2,{97,55,0}}, +/* 7092 */ {(11<<2)|2,{97,55,0}}, +/* 7093 */ {(11<<2)|2,{97,55,0}}, +/* 7094 */ {(11<<2)|2,{97,55,0}}, +/* 7095 */ {(11<<2)|2,{97,55,0}}, +/* 7096 */ {(11<<2)|2,{97,55,0}}, +/* 7097 */ {(11<<2)|2,{97,55,0}}, +/* 7098 */ {(11<<2)|2,{97,55,0}}, +/* 7099 */ {(11<<2)|2,{97,55,0}}, +/* 7100 */ {(11<<2)|2,{97,55,0}}, +/* 7101 */ {(11<<2)|2,{97,55,0}}, +/* 7102 */ {(11<<2)|2,{97,55,0}}, +/* 7103 */ {(11<<2)|2,{97,55,0}}, +/* 7104 */ {(16<<2)|3,{97,56,48}}, +/* 7105 */ {(16<<2)|3,{97,56,49}}, +/* 7106 */ {(16<<2)|3,{97,56,50}}, +/* 7107 */ {(16<<2)|3,{97,56,97}}, +/* 7108 */ {(16<<2)|3,{97,56,99}}, +/* 7109 */ {(16<<2)|3,{97,56,101}}, +/* 7110 */ {(16<<2)|3,{97,56,105}}, +/* 7111 */ {(16<<2)|3,{97,56,111}}, +/* 7112 */ {(16<<2)|3,{97,56,115}}, +/* 7113 */ {(16<<2)|3,{97,56,116}}, +/* 7114 */ {(11<<2)|2,{97,56,0}}, +/* 7115 */ {(11<<2)|2,{97,56,0}}, +/* 7116 */ {(11<<2)|2,{97,56,0}}, +/* 7117 */ {(11<<2)|2,{97,56,0}}, +/* 7118 */ {(11<<2)|2,{97,56,0}}, +/* 7119 */ {(11<<2)|2,{97,56,0}}, +/* 7120 */ {(11<<2)|2,{97,56,0}}, +/* 7121 */ {(11<<2)|2,{97,56,0}}, +/* 7122 */ {(11<<2)|2,{97,56,0}}, +/* 7123 */ {(11<<2)|2,{97,56,0}}, +/* 7124 */ {(11<<2)|2,{97,56,0}}, +/* 7125 */ {(11<<2)|2,{97,56,0}}, +/* 7126 */ {(11<<2)|2,{97,56,0}}, +/* 7127 */ {(11<<2)|2,{97,56,0}}, +/* 7128 */ {(11<<2)|2,{97,56,0}}, +/* 7129 */ {(11<<2)|2,{97,56,0}}, +/* 7130 */ {(11<<2)|2,{97,56,0}}, +/* 7131 */ {(11<<2)|2,{97,56,0}}, +/* 7132 */ {(11<<2)|2,{97,56,0}}, +/* 7133 */ {(11<<2)|2,{97,56,0}}, +/* 7134 */ {(11<<2)|2,{97,56,0}}, +/* 7135 */ {(11<<2)|2,{97,56,0}}, +/* 7136 */ {(16<<2)|3,{97,57,48}}, +/* 7137 */ {(16<<2)|3,{97,57,49}}, +/* 7138 */ {(16<<2)|3,{97,57,50}}, +/* 7139 */ {(16<<2)|3,{97,57,97}}, +/* 7140 */ {(16<<2)|3,{97,57,99}}, +/* 7141 */ {(16<<2)|3,{97,57,101}}, +/* 7142 */ {(16<<2)|3,{97,57,105}}, +/* 7143 */ {(16<<2)|3,{97,57,111}}, +/* 7144 */ {(16<<2)|3,{97,57,115}}, +/* 7145 */ {(16<<2)|3,{97,57,116}}, +/* 7146 */ {(11<<2)|2,{97,57,0}}, +/* 7147 */ {(11<<2)|2,{97,57,0}}, +/* 7148 */ {(11<<2)|2,{97,57,0}}, +/* 7149 */ {(11<<2)|2,{97,57,0}}, +/* 7150 */ {(11<<2)|2,{97,57,0}}, +/* 7151 */ {(11<<2)|2,{97,57,0}}, +/* 7152 */ {(11<<2)|2,{97,57,0}}, +/* 7153 */ {(11<<2)|2,{97,57,0}}, +/* 7154 */ {(11<<2)|2,{97,57,0}}, +/* 7155 */ {(11<<2)|2,{97,57,0}}, +/* 7156 */ {(11<<2)|2,{97,57,0}}, +/* 7157 */ {(11<<2)|2,{97,57,0}}, +/* 7158 */ {(11<<2)|2,{97,57,0}}, +/* 7159 */ {(11<<2)|2,{97,57,0}}, +/* 7160 */ {(11<<2)|2,{97,57,0}}, +/* 7161 */ {(11<<2)|2,{97,57,0}}, +/* 7162 */ {(11<<2)|2,{97,57,0}}, +/* 7163 */ {(11<<2)|2,{97,57,0}}, +/* 7164 */ {(11<<2)|2,{97,57,0}}, +/* 7165 */ {(11<<2)|2,{97,57,0}}, +/* 7166 */ {(11<<2)|2,{97,57,0}}, +/* 7167 */ {(11<<2)|2,{97,57,0}}, +/* 7168 */ {(16<<2)|3,{97,61,48}}, +/* 7169 */ {(16<<2)|3,{97,61,49}}, +/* 7170 */ {(16<<2)|3,{97,61,50}}, +/* 7171 */ {(16<<2)|3,{97,61,97}}, +/* 7172 */ {(16<<2)|3,{97,61,99}}, +/* 7173 */ {(16<<2)|3,{97,61,101}}, +/* 7174 */ {(16<<2)|3,{97,61,105}}, +/* 7175 */ {(16<<2)|3,{97,61,111}}, +/* 7176 */ {(16<<2)|3,{97,61,115}}, +/* 7177 */ {(16<<2)|3,{97,61,116}}, +/* 7178 */ {(11<<2)|2,{97,61,0}}, +/* 7179 */ {(11<<2)|2,{97,61,0}}, +/* 7180 */ {(11<<2)|2,{97,61,0}}, +/* 7181 */ {(11<<2)|2,{97,61,0}}, +/* 7182 */ {(11<<2)|2,{97,61,0}}, +/* 7183 */ {(11<<2)|2,{97,61,0}}, +/* 7184 */ {(11<<2)|2,{97,61,0}}, +/* 7185 */ {(11<<2)|2,{97,61,0}}, +/* 7186 */ {(11<<2)|2,{97,61,0}}, +/* 7187 */ {(11<<2)|2,{97,61,0}}, +/* 7188 */ {(11<<2)|2,{97,61,0}}, +/* 7189 */ {(11<<2)|2,{97,61,0}}, +/* 7190 */ {(11<<2)|2,{97,61,0}}, +/* 7191 */ {(11<<2)|2,{97,61,0}}, +/* 7192 */ {(11<<2)|2,{97,61,0}}, +/* 7193 */ {(11<<2)|2,{97,61,0}}, +/* 7194 */ {(11<<2)|2,{97,61,0}}, +/* 7195 */ {(11<<2)|2,{97,61,0}}, +/* 7196 */ {(11<<2)|2,{97,61,0}}, +/* 7197 */ {(11<<2)|2,{97,61,0}}, +/* 7198 */ {(11<<2)|2,{97,61,0}}, +/* 7199 */ {(11<<2)|2,{97,61,0}}, +/* 7200 */ {(16<<2)|3,{97,65,48}}, +/* 7201 */ {(16<<2)|3,{97,65,49}}, +/* 7202 */ {(16<<2)|3,{97,65,50}}, +/* 7203 */ {(16<<2)|3,{97,65,97}}, +/* 7204 */ {(16<<2)|3,{97,65,99}}, +/* 7205 */ {(16<<2)|3,{97,65,101}}, +/* 7206 */ {(16<<2)|3,{97,65,105}}, +/* 7207 */ {(16<<2)|3,{97,65,111}}, +/* 7208 */ {(16<<2)|3,{97,65,115}}, +/* 7209 */ {(16<<2)|3,{97,65,116}}, +/* 7210 */ {(11<<2)|2,{97,65,0}}, +/* 7211 */ {(11<<2)|2,{97,65,0}}, +/* 7212 */ {(11<<2)|2,{97,65,0}}, +/* 7213 */ {(11<<2)|2,{97,65,0}}, +/* 7214 */ {(11<<2)|2,{97,65,0}}, +/* 7215 */ {(11<<2)|2,{97,65,0}}, +/* 7216 */ {(11<<2)|2,{97,65,0}}, +/* 7217 */ {(11<<2)|2,{97,65,0}}, +/* 7218 */ {(11<<2)|2,{97,65,0}}, +/* 7219 */ {(11<<2)|2,{97,65,0}}, +/* 7220 */ {(11<<2)|2,{97,65,0}}, +/* 7221 */ {(11<<2)|2,{97,65,0}}, +/* 7222 */ {(11<<2)|2,{97,65,0}}, +/* 7223 */ {(11<<2)|2,{97,65,0}}, +/* 7224 */ {(11<<2)|2,{97,65,0}}, +/* 7225 */ {(11<<2)|2,{97,65,0}}, +/* 7226 */ {(11<<2)|2,{97,65,0}}, +/* 7227 */ {(11<<2)|2,{97,65,0}}, +/* 7228 */ {(11<<2)|2,{97,65,0}}, +/* 7229 */ {(11<<2)|2,{97,65,0}}, +/* 7230 */ {(11<<2)|2,{97,65,0}}, +/* 7231 */ {(11<<2)|2,{97,65,0}}, +/* 7232 */ {(16<<2)|3,{97,95,48}}, +/* 7233 */ {(16<<2)|3,{97,95,49}}, +/* 7234 */ {(16<<2)|3,{97,95,50}}, +/* 7235 */ {(16<<2)|3,{97,95,97}}, +/* 7236 */ {(16<<2)|3,{97,95,99}}, +/* 7237 */ {(16<<2)|3,{97,95,101}}, +/* 7238 */ {(16<<2)|3,{97,95,105}}, +/* 7239 */ {(16<<2)|3,{97,95,111}}, +/* 7240 */ {(16<<2)|3,{97,95,115}}, +/* 7241 */ {(16<<2)|3,{97,95,116}}, +/* 7242 */ {(11<<2)|2,{97,95,0}}, +/* 7243 */ {(11<<2)|2,{97,95,0}}, +/* 7244 */ {(11<<2)|2,{97,95,0}}, +/* 7245 */ {(11<<2)|2,{97,95,0}}, +/* 7246 */ {(11<<2)|2,{97,95,0}}, +/* 7247 */ {(11<<2)|2,{97,95,0}}, +/* 7248 */ {(11<<2)|2,{97,95,0}}, +/* 7249 */ {(11<<2)|2,{97,95,0}}, +/* 7250 */ {(11<<2)|2,{97,95,0}}, +/* 7251 */ {(11<<2)|2,{97,95,0}}, +/* 7252 */ {(11<<2)|2,{97,95,0}}, +/* 7253 */ {(11<<2)|2,{97,95,0}}, +/* 7254 */ {(11<<2)|2,{97,95,0}}, +/* 7255 */ {(11<<2)|2,{97,95,0}}, +/* 7256 */ {(11<<2)|2,{97,95,0}}, +/* 7257 */ {(11<<2)|2,{97,95,0}}, +/* 7258 */ {(11<<2)|2,{97,95,0}}, +/* 7259 */ {(11<<2)|2,{97,95,0}}, +/* 7260 */ {(11<<2)|2,{97,95,0}}, +/* 7261 */ {(11<<2)|2,{97,95,0}}, +/* 7262 */ {(11<<2)|2,{97,95,0}}, +/* 7263 */ {(11<<2)|2,{97,95,0}}, +/* 7264 */ {(16<<2)|3,{97,98,48}}, +/* 7265 */ {(16<<2)|3,{97,98,49}}, +/* 7266 */ {(16<<2)|3,{97,98,50}}, +/* 7267 */ {(16<<2)|3,{97,98,97}}, +/* 7268 */ {(16<<2)|3,{97,98,99}}, +/* 7269 */ {(16<<2)|3,{97,98,101}}, +/* 7270 */ {(16<<2)|3,{97,98,105}}, +/* 7271 */ {(16<<2)|3,{97,98,111}}, +/* 7272 */ {(16<<2)|3,{97,98,115}}, +/* 7273 */ {(16<<2)|3,{97,98,116}}, +/* 7274 */ {(11<<2)|2,{97,98,0}}, +/* 7275 */ {(11<<2)|2,{97,98,0}}, +/* 7276 */ {(11<<2)|2,{97,98,0}}, +/* 7277 */ {(11<<2)|2,{97,98,0}}, +/* 7278 */ {(11<<2)|2,{97,98,0}}, +/* 7279 */ {(11<<2)|2,{97,98,0}}, +/* 7280 */ {(11<<2)|2,{97,98,0}}, +/* 7281 */ {(11<<2)|2,{97,98,0}}, +/* 7282 */ {(11<<2)|2,{97,98,0}}, +/* 7283 */ {(11<<2)|2,{97,98,0}}, +/* 7284 */ {(11<<2)|2,{97,98,0}}, +/* 7285 */ {(11<<2)|2,{97,98,0}}, +/* 7286 */ {(11<<2)|2,{97,98,0}}, +/* 7287 */ {(11<<2)|2,{97,98,0}}, +/* 7288 */ {(11<<2)|2,{97,98,0}}, +/* 7289 */ {(11<<2)|2,{97,98,0}}, +/* 7290 */ {(11<<2)|2,{97,98,0}}, +/* 7291 */ {(11<<2)|2,{97,98,0}}, +/* 7292 */ {(11<<2)|2,{97,98,0}}, +/* 7293 */ {(11<<2)|2,{97,98,0}}, +/* 7294 */ {(11<<2)|2,{97,98,0}}, +/* 7295 */ {(11<<2)|2,{97,98,0}}, +/* 7296 */ {(16<<2)|3,{97,100,48}}, +/* 7297 */ {(16<<2)|3,{97,100,49}}, +/* 7298 */ {(16<<2)|3,{97,100,50}}, +/* 7299 */ {(16<<2)|3,{97,100,97}}, +/* 7300 */ {(16<<2)|3,{97,100,99}}, +/* 7301 */ {(16<<2)|3,{97,100,101}}, +/* 7302 */ {(16<<2)|3,{97,100,105}}, +/* 7303 */ {(16<<2)|3,{97,100,111}}, +/* 7304 */ {(16<<2)|3,{97,100,115}}, +/* 7305 */ {(16<<2)|3,{97,100,116}}, +/* 7306 */ {(11<<2)|2,{97,100,0}}, +/* 7307 */ {(11<<2)|2,{97,100,0}}, +/* 7308 */ {(11<<2)|2,{97,100,0}}, +/* 7309 */ {(11<<2)|2,{97,100,0}}, +/* 7310 */ {(11<<2)|2,{97,100,0}}, +/* 7311 */ {(11<<2)|2,{97,100,0}}, +/* 7312 */ {(11<<2)|2,{97,100,0}}, +/* 7313 */ {(11<<2)|2,{97,100,0}}, +/* 7314 */ {(11<<2)|2,{97,100,0}}, +/* 7315 */ {(11<<2)|2,{97,100,0}}, +/* 7316 */ {(11<<2)|2,{97,100,0}}, +/* 7317 */ {(11<<2)|2,{97,100,0}}, +/* 7318 */ {(11<<2)|2,{97,100,0}}, +/* 7319 */ {(11<<2)|2,{97,100,0}}, +/* 7320 */ {(11<<2)|2,{97,100,0}}, +/* 7321 */ {(11<<2)|2,{97,100,0}}, +/* 7322 */ {(11<<2)|2,{97,100,0}}, +/* 7323 */ {(11<<2)|2,{97,100,0}}, +/* 7324 */ {(11<<2)|2,{97,100,0}}, +/* 7325 */ {(11<<2)|2,{97,100,0}}, +/* 7326 */ {(11<<2)|2,{97,100,0}}, +/* 7327 */ {(11<<2)|2,{97,100,0}}, +/* 7328 */ {(16<<2)|3,{97,102,48}}, +/* 7329 */ {(16<<2)|3,{97,102,49}}, +/* 7330 */ {(16<<2)|3,{97,102,50}}, +/* 7331 */ {(16<<2)|3,{97,102,97}}, +/* 7332 */ {(16<<2)|3,{97,102,99}}, +/* 7333 */ {(16<<2)|3,{97,102,101}}, +/* 7334 */ {(16<<2)|3,{97,102,105}}, +/* 7335 */ {(16<<2)|3,{97,102,111}}, +/* 7336 */ {(16<<2)|3,{97,102,115}}, +/* 7337 */ {(16<<2)|3,{97,102,116}}, +/* 7338 */ {(11<<2)|2,{97,102,0}}, +/* 7339 */ {(11<<2)|2,{97,102,0}}, +/* 7340 */ {(11<<2)|2,{97,102,0}}, +/* 7341 */ {(11<<2)|2,{97,102,0}}, +/* 7342 */ {(11<<2)|2,{97,102,0}}, +/* 7343 */ {(11<<2)|2,{97,102,0}}, +/* 7344 */ {(11<<2)|2,{97,102,0}}, +/* 7345 */ {(11<<2)|2,{97,102,0}}, +/* 7346 */ {(11<<2)|2,{97,102,0}}, +/* 7347 */ {(11<<2)|2,{97,102,0}}, +/* 7348 */ {(11<<2)|2,{97,102,0}}, +/* 7349 */ {(11<<2)|2,{97,102,0}}, +/* 7350 */ {(11<<2)|2,{97,102,0}}, +/* 7351 */ {(11<<2)|2,{97,102,0}}, +/* 7352 */ {(11<<2)|2,{97,102,0}}, +/* 7353 */ {(11<<2)|2,{97,102,0}}, +/* 7354 */ {(11<<2)|2,{97,102,0}}, +/* 7355 */ {(11<<2)|2,{97,102,0}}, +/* 7356 */ {(11<<2)|2,{97,102,0}}, +/* 7357 */ {(11<<2)|2,{97,102,0}}, +/* 7358 */ {(11<<2)|2,{97,102,0}}, +/* 7359 */ {(11<<2)|2,{97,102,0}}, +/* 7360 */ {(16<<2)|3,{97,103,48}}, +/* 7361 */ {(16<<2)|3,{97,103,49}}, +/* 7362 */ {(16<<2)|3,{97,103,50}}, +/* 7363 */ {(16<<2)|3,{97,103,97}}, +/* 7364 */ {(16<<2)|3,{97,103,99}}, +/* 7365 */ {(16<<2)|3,{97,103,101}}, +/* 7366 */ {(16<<2)|3,{97,103,105}}, +/* 7367 */ {(16<<2)|3,{97,103,111}}, +/* 7368 */ {(16<<2)|3,{97,103,115}}, +/* 7369 */ {(16<<2)|3,{97,103,116}}, +/* 7370 */ {(11<<2)|2,{97,103,0}}, +/* 7371 */ {(11<<2)|2,{97,103,0}}, +/* 7372 */ {(11<<2)|2,{97,103,0}}, +/* 7373 */ {(11<<2)|2,{97,103,0}}, +/* 7374 */ {(11<<2)|2,{97,103,0}}, +/* 7375 */ {(11<<2)|2,{97,103,0}}, +/* 7376 */ {(11<<2)|2,{97,103,0}}, +/* 7377 */ {(11<<2)|2,{97,103,0}}, +/* 7378 */ {(11<<2)|2,{97,103,0}}, +/* 7379 */ {(11<<2)|2,{97,103,0}}, +/* 7380 */ {(11<<2)|2,{97,103,0}}, +/* 7381 */ {(11<<2)|2,{97,103,0}}, +/* 7382 */ {(11<<2)|2,{97,103,0}}, +/* 7383 */ {(11<<2)|2,{97,103,0}}, +/* 7384 */ {(11<<2)|2,{97,103,0}}, +/* 7385 */ {(11<<2)|2,{97,103,0}}, +/* 7386 */ {(11<<2)|2,{97,103,0}}, +/* 7387 */ {(11<<2)|2,{97,103,0}}, +/* 7388 */ {(11<<2)|2,{97,103,0}}, +/* 7389 */ {(11<<2)|2,{97,103,0}}, +/* 7390 */ {(11<<2)|2,{97,103,0}}, +/* 7391 */ {(11<<2)|2,{97,103,0}}, +/* 7392 */ {(16<<2)|3,{97,104,48}}, +/* 7393 */ {(16<<2)|3,{97,104,49}}, +/* 7394 */ {(16<<2)|3,{97,104,50}}, +/* 7395 */ {(16<<2)|3,{97,104,97}}, +/* 7396 */ {(16<<2)|3,{97,104,99}}, +/* 7397 */ {(16<<2)|3,{97,104,101}}, +/* 7398 */ {(16<<2)|3,{97,104,105}}, +/* 7399 */ {(16<<2)|3,{97,104,111}}, +/* 7400 */ {(16<<2)|3,{97,104,115}}, +/* 7401 */ {(16<<2)|3,{97,104,116}}, +/* 7402 */ {(11<<2)|2,{97,104,0}}, +/* 7403 */ {(11<<2)|2,{97,104,0}}, +/* 7404 */ {(11<<2)|2,{97,104,0}}, +/* 7405 */ {(11<<2)|2,{97,104,0}}, +/* 7406 */ {(11<<2)|2,{97,104,0}}, +/* 7407 */ {(11<<2)|2,{97,104,0}}, +/* 7408 */ {(11<<2)|2,{97,104,0}}, +/* 7409 */ {(11<<2)|2,{97,104,0}}, +/* 7410 */ {(11<<2)|2,{97,104,0}}, +/* 7411 */ {(11<<2)|2,{97,104,0}}, +/* 7412 */ {(11<<2)|2,{97,104,0}}, +/* 7413 */ {(11<<2)|2,{97,104,0}}, +/* 7414 */ {(11<<2)|2,{97,104,0}}, +/* 7415 */ {(11<<2)|2,{97,104,0}}, +/* 7416 */ {(11<<2)|2,{97,104,0}}, +/* 7417 */ {(11<<2)|2,{97,104,0}}, +/* 7418 */ {(11<<2)|2,{97,104,0}}, +/* 7419 */ {(11<<2)|2,{97,104,0}}, +/* 7420 */ {(11<<2)|2,{97,104,0}}, +/* 7421 */ {(11<<2)|2,{97,104,0}}, +/* 7422 */ {(11<<2)|2,{97,104,0}}, +/* 7423 */ {(11<<2)|2,{97,104,0}}, +/* 7424 */ {(16<<2)|3,{97,108,48}}, +/* 7425 */ {(16<<2)|3,{97,108,49}}, +/* 7426 */ {(16<<2)|3,{97,108,50}}, +/* 7427 */ {(16<<2)|3,{97,108,97}}, +/* 7428 */ {(16<<2)|3,{97,108,99}}, +/* 7429 */ {(16<<2)|3,{97,108,101}}, +/* 7430 */ {(16<<2)|3,{97,108,105}}, +/* 7431 */ {(16<<2)|3,{97,108,111}}, +/* 7432 */ {(16<<2)|3,{97,108,115}}, +/* 7433 */ {(16<<2)|3,{97,108,116}}, +/* 7434 */ {(11<<2)|2,{97,108,0}}, +/* 7435 */ {(11<<2)|2,{97,108,0}}, +/* 7436 */ {(11<<2)|2,{97,108,0}}, +/* 7437 */ {(11<<2)|2,{97,108,0}}, +/* 7438 */ {(11<<2)|2,{97,108,0}}, +/* 7439 */ {(11<<2)|2,{97,108,0}}, +/* 7440 */ {(11<<2)|2,{97,108,0}}, +/* 7441 */ {(11<<2)|2,{97,108,0}}, +/* 7442 */ {(11<<2)|2,{97,108,0}}, +/* 7443 */ {(11<<2)|2,{97,108,0}}, +/* 7444 */ {(11<<2)|2,{97,108,0}}, +/* 7445 */ {(11<<2)|2,{97,108,0}}, +/* 7446 */ {(11<<2)|2,{97,108,0}}, +/* 7447 */ {(11<<2)|2,{97,108,0}}, +/* 7448 */ {(11<<2)|2,{97,108,0}}, +/* 7449 */ {(11<<2)|2,{97,108,0}}, +/* 7450 */ {(11<<2)|2,{97,108,0}}, +/* 7451 */ {(11<<2)|2,{97,108,0}}, +/* 7452 */ {(11<<2)|2,{97,108,0}}, +/* 7453 */ {(11<<2)|2,{97,108,0}}, +/* 7454 */ {(11<<2)|2,{97,108,0}}, +/* 7455 */ {(11<<2)|2,{97,108,0}}, +/* 7456 */ {(16<<2)|3,{97,109,48}}, +/* 7457 */ {(16<<2)|3,{97,109,49}}, +/* 7458 */ {(16<<2)|3,{97,109,50}}, +/* 7459 */ {(16<<2)|3,{97,109,97}}, +/* 7460 */ {(16<<2)|3,{97,109,99}}, +/* 7461 */ {(16<<2)|3,{97,109,101}}, +/* 7462 */ {(16<<2)|3,{97,109,105}}, +/* 7463 */ {(16<<2)|3,{97,109,111}}, +/* 7464 */ {(16<<2)|3,{97,109,115}}, +/* 7465 */ {(16<<2)|3,{97,109,116}}, +/* 7466 */ {(11<<2)|2,{97,109,0}}, +/* 7467 */ {(11<<2)|2,{97,109,0}}, +/* 7468 */ {(11<<2)|2,{97,109,0}}, +/* 7469 */ {(11<<2)|2,{97,109,0}}, +/* 7470 */ {(11<<2)|2,{97,109,0}}, +/* 7471 */ {(11<<2)|2,{97,109,0}}, +/* 7472 */ {(11<<2)|2,{97,109,0}}, +/* 7473 */ {(11<<2)|2,{97,109,0}}, +/* 7474 */ {(11<<2)|2,{97,109,0}}, +/* 7475 */ {(11<<2)|2,{97,109,0}}, +/* 7476 */ {(11<<2)|2,{97,109,0}}, +/* 7477 */ {(11<<2)|2,{97,109,0}}, +/* 7478 */ {(11<<2)|2,{97,109,0}}, +/* 7479 */ {(11<<2)|2,{97,109,0}}, +/* 7480 */ {(11<<2)|2,{97,109,0}}, +/* 7481 */ {(11<<2)|2,{97,109,0}}, +/* 7482 */ {(11<<2)|2,{97,109,0}}, +/* 7483 */ {(11<<2)|2,{97,109,0}}, +/* 7484 */ {(11<<2)|2,{97,109,0}}, +/* 7485 */ {(11<<2)|2,{97,109,0}}, +/* 7486 */ {(11<<2)|2,{97,109,0}}, +/* 7487 */ {(11<<2)|2,{97,109,0}}, +/* 7488 */ {(16<<2)|3,{97,110,48}}, +/* 7489 */ {(16<<2)|3,{97,110,49}}, +/* 7490 */ {(16<<2)|3,{97,110,50}}, +/* 7491 */ {(16<<2)|3,{97,110,97}}, +/* 7492 */ {(16<<2)|3,{97,110,99}}, +/* 7493 */ {(16<<2)|3,{97,110,101}}, +/* 7494 */ {(16<<2)|3,{97,110,105}}, +/* 7495 */ {(16<<2)|3,{97,110,111}}, +/* 7496 */ {(16<<2)|3,{97,110,115}}, +/* 7497 */ {(16<<2)|3,{97,110,116}}, +/* 7498 */ {(11<<2)|2,{97,110,0}}, +/* 7499 */ {(11<<2)|2,{97,110,0}}, +/* 7500 */ {(11<<2)|2,{97,110,0}}, +/* 7501 */ {(11<<2)|2,{97,110,0}}, +/* 7502 */ {(11<<2)|2,{97,110,0}}, +/* 7503 */ {(11<<2)|2,{97,110,0}}, +/* 7504 */ {(11<<2)|2,{97,110,0}}, +/* 7505 */ {(11<<2)|2,{97,110,0}}, +/* 7506 */ {(11<<2)|2,{97,110,0}}, +/* 7507 */ {(11<<2)|2,{97,110,0}}, +/* 7508 */ {(11<<2)|2,{97,110,0}}, +/* 7509 */ {(11<<2)|2,{97,110,0}}, +/* 7510 */ {(11<<2)|2,{97,110,0}}, +/* 7511 */ {(11<<2)|2,{97,110,0}}, +/* 7512 */ {(11<<2)|2,{97,110,0}}, +/* 7513 */ {(11<<2)|2,{97,110,0}}, +/* 7514 */ {(11<<2)|2,{97,110,0}}, +/* 7515 */ {(11<<2)|2,{97,110,0}}, +/* 7516 */ {(11<<2)|2,{97,110,0}}, +/* 7517 */ {(11<<2)|2,{97,110,0}}, +/* 7518 */ {(11<<2)|2,{97,110,0}}, +/* 7519 */ {(11<<2)|2,{97,110,0}}, +/* 7520 */ {(16<<2)|3,{97,112,48}}, +/* 7521 */ {(16<<2)|3,{97,112,49}}, +/* 7522 */ {(16<<2)|3,{97,112,50}}, +/* 7523 */ {(16<<2)|3,{97,112,97}}, +/* 7524 */ {(16<<2)|3,{97,112,99}}, +/* 7525 */ {(16<<2)|3,{97,112,101}}, +/* 7526 */ {(16<<2)|3,{97,112,105}}, +/* 7527 */ {(16<<2)|3,{97,112,111}}, +/* 7528 */ {(16<<2)|3,{97,112,115}}, +/* 7529 */ {(16<<2)|3,{97,112,116}}, +/* 7530 */ {(11<<2)|2,{97,112,0}}, +/* 7531 */ {(11<<2)|2,{97,112,0}}, +/* 7532 */ {(11<<2)|2,{97,112,0}}, +/* 7533 */ {(11<<2)|2,{97,112,0}}, +/* 7534 */ {(11<<2)|2,{97,112,0}}, +/* 7535 */ {(11<<2)|2,{97,112,0}}, +/* 7536 */ {(11<<2)|2,{97,112,0}}, +/* 7537 */ {(11<<2)|2,{97,112,0}}, +/* 7538 */ {(11<<2)|2,{97,112,0}}, +/* 7539 */ {(11<<2)|2,{97,112,0}}, +/* 7540 */ {(11<<2)|2,{97,112,0}}, +/* 7541 */ {(11<<2)|2,{97,112,0}}, +/* 7542 */ {(11<<2)|2,{97,112,0}}, +/* 7543 */ {(11<<2)|2,{97,112,0}}, +/* 7544 */ {(11<<2)|2,{97,112,0}}, +/* 7545 */ {(11<<2)|2,{97,112,0}}, +/* 7546 */ {(11<<2)|2,{97,112,0}}, +/* 7547 */ {(11<<2)|2,{97,112,0}}, +/* 7548 */ {(11<<2)|2,{97,112,0}}, +/* 7549 */ {(11<<2)|2,{97,112,0}}, +/* 7550 */ {(11<<2)|2,{97,112,0}}, +/* 7551 */ {(11<<2)|2,{97,112,0}}, +/* 7552 */ {(16<<2)|3,{97,114,48}}, +/* 7553 */ {(16<<2)|3,{97,114,49}}, +/* 7554 */ {(16<<2)|3,{97,114,50}}, +/* 7555 */ {(16<<2)|3,{97,114,97}}, +/* 7556 */ {(16<<2)|3,{97,114,99}}, +/* 7557 */ {(16<<2)|3,{97,114,101}}, +/* 7558 */ {(16<<2)|3,{97,114,105}}, +/* 7559 */ {(16<<2)|3,{97,114,111}}, +/* 7560 */ {(16<<2)|3,{97,114,115}}, +/* 7561 */ {(16<<2)|3,{97,114,116}}, +/* 7562 */ {(11<<2)|2,{97,114,0}}, +/* 7563 */ {(11<<2)|2,{97,114,0}}, +/* 7564 */ {(11<<2)|2,{97,114,0}}, +/* 7565 */ {(11<<2)|2,{97,114,0}}, +/* 7566 */ {(11<<2)|2,{97,114,0}}, +/* 7567 */ {(11<<2)|2,{97,114,0}}, +/* 7568 */ {(11<<2)|2,{97,114,0}}, +/* 7569 */ {(11<<2)|2,{97,114,0}}, +/* 7570 */ {(11<<2)|2,{97,114,0}}, +/* 7571 */ {(11<<2)|2,{97,114,0}}, +/* 7572 */ {(11<<2)|2,{97,114,0}}, +/* 7573 */ {(11<<2)|2,{97,114,0}}, +/* 7574 */ {(11<<2)|2,{97,114,0}}, +/* 7575 */ {(11<<2)|2,{97,114,0}}, +/* 7576 */ {(11<<2)|2,{97,114,0}}, +/* 7577 */ {(11<<2)|2,{97,114,0}}, +/* 7578 */ {(11<<2)|2,{97,114,0}}, +/* 7579 */ {(11<<2)|2,{97,114,0}}, +/* 7580 */ {(11<<2)|2,{97,114,0}}, +/* 7581 */ {(11<<2)|2,{97,114,0}}, +/* 7582 */ {(11<<2)|2,{97,114,0}}, +/* 7583 */ {(11<<2)|2,{97,114,0}}, +/* 7584 */ {(16<<2)|3,{97,117,48}}, +/* 7585 */ {(16<<2)|3,{97,117,49}}, +/* 7586 */ {(16<<2)|3,{97,117,50}}, +/* 7587 */ {(16<<2)|3,{97,117,97}}, +/* 7588 */ {(16<<2)|3,{97,117,99}}, +/* 7589 */ {(16<<2)|3,{97,117,101}}, +/* 7590 */ {(16<<2)|3,{97,117,105}}, +/* 7591 */ {(16<<2)|3,{97,117,111}}, +/* 7592 */ {(16<<2)|3,{97,117,115}}, +/* 7593 */ {(16<<2)|3,{97,117,116}}, +/* 7594 */ {(11<<2)|2,{97,117,0}}, +/* 7595 */ {(11<<2)|2,{97,117,0}}, +/* 7596 */ {(11<<2)|2,{97,117,0}}, +/* 7597 */ {(11<<2)|2,{97,117,0}}, +/* 7598 */ {(11<<2)|2,{97,117,0}}, +/* 7599 */ {(11<<2)|2,{97,117,0}}, +/* 7600 */ {(11<<2)|2,{97,117,0}}, +/* 7601 */ {(11<<2)|2,{97,117,0}}, +/* 7602 */ {(11<<2)|2,{97,117,0}}, +/* 7603 */ {(11<<2)|2,{97,117,0}}, +/* 7604 */ {(11<<2)|2,{97,117,0}}, +/* 7605 */ {(11<<2)|2,{97,117,0}}, +/* 7606 */ {(11<<2)|2,{97,117,0}}, +/* 7607 */ {(11<<2)|2,{97,117,0}}, +/* 7608 */ {(11<<2)|2,{97,117,0}}, +/* 7609 */ {(11<<2)|2,{97,117,0}}, +/* 7610 */ {(11<<2)|2,{97,117,0}}, +/* 7611 */ {(11<<2)|2,{97,117,0}}, +/* 7612 */ {(11<<2)|2,{97,117,0}}, +/* 7613 */ {(11<<2)|2,{97,117,0}}, +/* 7614 */ {(11<<2)|2,{97,117,0}}, +/* 7615 */ {(11<<2)|2,{97,117,0}}, +/* 7616 */ {(12<<2)|2,{97,58,0}}, +/* 7617 */ {(12<<2)|2,{97,58,0}}, +/* 7618 */ {(12<<2)|2,{97,58,0}}, +/* 7619 */ {(12<<2)|2,{97,58,0}}, +/* 7620 */ {(12<<2)|2,{97,58,0}}, +/* 7621 */ {(12<<2)|2,{97,58,0}}, +/* 7622 */ {(12<<2)|2,{97,58,0}}, +/* 7623 */ {(12<<2)|2,{97,58,0}}, +/* 7624 */ {(12<<2)|2,{97,58,0}}, +/* 7625 */ {(12<<2)|2,{97,58,0}}, +/* 7626 */ {(12<<2)|2,{97,58,0}}, +/* 7627 */ {(12<<2)|2,{97,58,0}}, +/* 7628 */ {(12<<2)|2,{97,58,0}}, +/* 7629 */ {(12<<2)|2,{97,58,0}}, +/* 7630 */ {(12<<2)|2,{97,58,0}}, +/* 7631 */ {(12<<2)|2,{97,58,0}}, +/* 7632 */ {(12<<2)|2,{97,66,0}}, +/* 7633 */ {(12<<2)|2,{97,66,0}}, +/* 7634 */ {(12<<2)|2,{97,66,0}}, +/* 7635 */ {(12<<2)|2,{97,66,0}}, +/* 7636 */ {(12<<2)|2,{97,66,0}}, +/* 7637 */ {(12<<2)|2,{97,66,0}}, +/* 7638 */ {(12<<2)|2,{97,66,0}}, +/* 7639 */ {(12<<2)|2,{97,66,0}}, +/* 7640 */ {(12<<2)|2,{97,66,0}}, +/* 7641 */ {(12<<2)|2,{97,66,0}}, +/* 7642 */ {(12<<2)|2,{97,66,0}}, +/* 7643 */ {(12<<2)|2,{97,66,0}}, +/* 7644 */ {(12<<2)|2,{97,66,0}}, +/* 7645 */ {(12<<2)|2,{97,66,0}}, +/* 7646 */ {(12<<2)|2,{97,66,0}}, +/* 7647 */ {(12<<2)|2,{97,66,0}}, +/* 7648 */ {(12<<2)|2,{97,67,0}}, +/* 7649 */ {(12<<2)|2,{97,67,0}}, +/* 7650 */ {(12<<2)|2,{97,67,0}}, +/* 7651 */ {(12<<2)|2,{97,67,0}}, +/* 7652 */ {(12<<2)|2,{97,67,0}}, +/* 7653 */ {(12<<2)|2,{97,67,0}}, +/* 7654 */ {(12<<2)|2,{97,67,0}}, +/* 7655 */ {(12<<2)|2,{97,67,0}}, +/* 7656 */ {(12<<2)|2,{97,67,0}}, +/* 7657 */ {(12<<2)|2,{97,67,0}}, +/* 7658 */ {(12<<2)|2,{97,67,0}}, +/* 7659 */ {(12<<2)|2,{97,67,0}}, +/* 7660 */ {(12<<2)|2,{97,67,0}}, +/* 7661 */ {(12<<2)|2,{97,67,0}}, +/* 7662 */ {(12<<2)|2,{97,67,0}}, +/* 7663 */ {(12<<2)|2,{97,67,0}}, +/* 7664 */ {(12<<2)|2,{97,68,0}}, +/* 7665 */ {(12<<2)|2,{97,68,0}}, +/* 7666 */ {(12<<2)|2,{97,68,0}}, +/* 7667 */ {(12<<2)|2,{97,68,0}}, +/* 7668 */ {(12<<2)|2,{97,68,0}}, +/* 7669 */ {(12<<2)|2,{97,68,0}}, +/* 7670 */ {(12<<2)|2,{97,68,0}}, +/* 7671 */ {(12<<2)|2,{97,68,0}}, +/* 7672 */ {(12<<2)|2,{97,68,0}}, +/* 7673 */ {(12<<2)|2,{97,68,0}}, +/* 7674 */ {(12<<2)|2,{97,68,0}}, +/* 7675 */ {(12<<2)|2,{97,68,0}}, +/* 7676 */ {(12<<2)|2,{97,68,0}}, +/* 7677 */ {(12<<2)|2,{97,68,0}}, +/* 7678 */ {(12<<2)|2,{97,68,0}}, +/* 7679 */ {(12<<2)|2,{97,68,0}}, +/* 7680 */ {(12<<2)|2,{97,69,0}}, +/* 7681 */ {(12<<2)|2,{97,69,0}}, +/* 7682 */ {(12<<2)|2,{97,69,0}}, +/* 7683 */ {(12<<2)|2,{97,69,0}}, +/* 7684 */ {(12<<2)|2,{97,69,0}}, +/* 7685 */ {(12<<2)|2,{97,69,0}}, +/* 7686 */ {(12<<2)|2,{97,69,0}}, +/* 7687 */ {(12<<2)|2,{97,69,0}}, +/* 7688 */ {(12<<2)|2,{97,69,0}}, +/* 7689 */ {(12<<2)|2,{97,69,0}}, +/* 7690 */ {(12<<2)|2,{97,69,0}}, +/* 7691 */ {(12<<2)|2,{97,69,0}}, +/* 7692 */ {(12<<2)|2,{97,69,0}}, +/* 7693 */ {(12<<2)|2,{97,69,0}}, +/* 7694 */ {(12<<2)|2,{97,69,0}}, +/* 7695 */ {(12<<2)|2,{97,69,0}}, +/* 7696 */ {(12<<2)|2,{97,70,0}}, +/* 7697 */ {(12<<2)|2,{97,70,0}}, +/* 7698 */ {(12<<2)|2,{97,70,0}}, +/* 7699 */ {(12<<2)|2,{97,70,0}}, +/* 7700 */ {(12<<2)|2,{97,70,0}}, +/* 7701 */ {(12<<2)|2,{97,70,0}}, +/* 7702 */ {(12<<2)|2,{97,70,0}}, +/* 7703 */ {(12<<2)|2,{97,70,0}}, +/* 7704 */ {(12<<2)|2,{97,70,0}}, +/* 7705 */ {(12<<2)|2,{97,70,0}}, +/* 7706 */ {(12<<2)|2,{97,70,0}}, +/* 7707 */ {(12<<2)|2,{97,70,0}}, +/* 7708 */ {(12<<2)|2,{97,70,0}}, +/* 7709 */ {(12<<2)|2,{97,70,0}}, +/* 7710 */ {(12<<2)|2,{97,70,0}}, +/* 7711 */ {(12<<2)|2,{97,70,0}}, +/* 7712 */ {(12<<2)|2,{97,71,0}}, +/* 7713 */ {(12<<2)|2,{97,71,0}}, +/* 7714 */ {(12<<2)|2,{97,71,0}}, +/* 7715 */ {(12<<2)|2,{97,71,0}}, +/* 7716 */ {(12<<2)|2,{97,71,0}}, +/* 7717 */ {(12<<2)|2,{97,71,0}}, +/* 7718 */ {(12<<2)|2,{97,71,0}}, +/* 7719 */ {(12<<2)|2,{97,71,0}}, +/* 7720 */ {(12<<2)|2,{97,71,0}}, +/* 7721 */ {(12<<2)|2,{97,71,0}}, +/* 7722 */ {(12<<2)|2,{97,71,0}}, +/* 7723 */ {(12<<2)|2,{97,71,0}}, +/* 7724 */ {(12<<2)|2,{97,71,0}}, +/* 7725 */ {(12<<2)|2,{97,71,0}}, +/* 7726 */ {(12<<2)|2,{97,71,0}}, +/* 7727 */ {(12<<2)|2,{97,71,0}}, +/* 7728 */ {(12<<2)|2,{97,72,0}}, +/* 7729 */ {(12<<2)|2,{97,72,0}}, +/* 7730 */ {(12<<2)|2,{97,72,0}}, +/* 7731 */ {(12<<2)|2,{97,72,0}}, +/* 7732 */ {(12<<2)|2,{97,72,0}}, +/* 7733 */ {(12<<2)|2,{97,72,0}}, +/* 7734 */ {(12<<2)|2,{97,72,0}}, +/* 7735 */ {(12<<2)|2,{97,72,0}}, +/* 7736 */ {(12<<2)|2,{97,72,0}}, +/* 7737 */ {(12<<2)|2,{97,72,0}}, +/* 7738 */ {(12<<2)|2,{97,72,0}}, +/* 7739 */ {(12<<2)|2,{97,72,0}}, +/* 7740 */ {(12<<2)|2,{97,72,0}}, +/* 7741 */ {(12<<2)|2,{97,72,0}}, +/* 7742 */ {(12<<2)|2,{97,72,0}}, +/* 7743 */ {(12<<2)|2,{97,72,0}}, +/* 7744 */ {(12<<2)|2,{97,73,0}}, +/* 7745 */ {(12<<2)|2,{97,73,0}}, +/* 7746 */ {(12<<2)|2,{97,73,0}}, +/* 7747 */ {(12<<2)|2,{97,73,0}}, +/* 7748 */ {(12<<2)|2,{97,73,0}}, +/* 7749 */ {(12<<2)|2,{97,73,0}}, +/* 7750 */ {(12<<2)|2,{97,73,0}}, +/* 7751 */ {(12<<2)|2,{97,73,0}}, +/* 7752 */ {(12<<2)|2,{97,73,0}}, +/* 7753 */ {(12<<2)|2,{97,73,0}}, +/* 7754 */ {(12<<2)|2,{97,73,0}}, +/* 7755 */ {(12<<2)|2,{97,73,0}}, +/* 7756 */ {(12<<2)|2,{97,73,0}}, +/* 7757 */ {(12<<2)|2,{97,73,0}}, +/* 7758 */ {(12<<2)|2,{97,73,0}}, +/* 7759 */ {(12<<2)|2,{97,73,0}}, +/* 7760 */ {(12<<2)|2,{97,74,0}}, +/* 7761 */ {(12<<2)|2,{97,74,0}}, +/* 7762 */ {(12<<2)|2,{97,74,0}}, +/* 7763 */ {(12<<2)|2,{97,74,0}}, +/* 7764 */ {(12<<2)|2,{97,74,0}}, +/* 7765 */ {(12<<2)|2,{97,74,0}}, +/* 7766 */ {(12<<2)|2,{97,74,0}}, +/* 7767 */ {(12<<2)|2,{97,74,0}}, +/* 7768 */ {(12<<2)|2,{97,74,0}}, +/* 7769 */ {(12<<2)|2,{97,74,0}}, +/* 7770 */ {(12<<2)|2,{97,74,0}}, +/* 7771 */ {(12<<2)|2,{97,74,0}}, +/* 7772 */ {(12<<2)|2,{97,74,0}}, +/* 7773 */ {(12<<2)|2,{97,74,0}}, +/* 7774 */ {(12<<2)|2,{97,74,0}}, +/* 7775 */ {(12<<2)|2,{97,74,0}}, +/* 7776 */ {(12<<2)|2,{97,75,0}}, +/* 7777 */ {(12<<2)|2,{97,75,0}}, +/* 7778 */ {(12<<2)|2,{97,75,0}}, +/* 7779 */ {(12<<2)|2,{97,75,0}}, +/* 7780 */ {(12<<2)|2,{97,75,0}}, +/* 7781 */ {(12<<2)|2,{97,75,0}}, +/* 7782 */ {(12<<2)|2,{97,75,0}}, +/* 7783 */ {(12<<2)|2,{97,75,0}}, +/* 7784 */ {(12<<2)|2,{97,75,0}}, +/* 7785 */ {(12<<2)|2,{97,75,0}}, +/* 7786 */ {(12<<2)|2,{97,75,0}}, +/* 7787 */ {(12<<2)|2,{97,75,0}}, +/* 7788 */ {(12<<2)|2,{97,75,0}}, +/* 7789 */ {(12<<2)|2,{97,75,0}}, +/* 7790 */ {(12<<2)|2,{97,75,0}}, +/* 7791 */ {(12<<2)|2,{97,75,0}}, +/* 7792 */ {(12<<2)|2,{97,76,0}}, +/* 7793 */ {(12<<2)|2,{97,76,0}}, +/* 7794 */ {(12<<2)|2,{97,76,0}}, +/* 7795 */ {(12<<2)|2,{97,76,0}}, +/* 7796 */ {(12<<2)|2,{97,76,0}}, +/* 7797 */ {(12<<2)|2,{97,76,0}}, +/* 7798 */ {(12<<2)|2,{97,76,0}}, +/* 7799 */ {(12<<2)|2,{97,76,0}}, +/* 7800 */ {(12<<2)|2,{97,76,0}}, +/* 7801 */ {(12<<2)|2,{97,76,0}}, +/* 7802 */ {(12<<2)|2,{97,76,0}}, +/* 7803 */ {(12<<2)|2,{97,76,0}}, +/* 7804 */ {(12<<2)|2,{97,76,0}}, +/* 7805 */ {(12<<2)|2,{97,76,0}}, +/* 7806 */ {(12<<2)|2,{97,76,0}}, +/* 7807 */ {(12<<2)|2,{97,76,0}}, +/* 7808 */ {(12<<2)|2,{97,77,0}}, +/* 7809 */ {(12<<2)|2,{97,77,0}}, +/* 7810 */ {(12<<2)|2,{97,77,0}}, +/* 7811 */ {(12<<2)|2,{97,77,0}}, +/* 7812 */ {(12<<2)|2,{97,77,0}}, +/* 7813 */ {(12<<2)|2,{97,77,0}}, +/* 7814 */ {(12<<2)|2,{97,77,0}}, +/* 7815 */ {(12<<2)|2,{97,77,0}}, +/* 7816 */ {(12<<2)|2,{97,77,0}}, +/* 7817 */ {(12<<2)|2,{97,77,0}}, +/* 7818 */ {(12<<2)|2,{97,77,0}}, +/* 7819 */ {(12<<2)|2,{97,77,0}}, +/* 7820 */ {(12<<2)|2,{97,77,0}}, +/* 7821 */ {(12<<2)|2,{97,77,0}}, +/* 7822 */ {(12<<2)|2,{97,77,0}}, +/* 7823 */ {(12<<2)|2,{97,77,0}}, +/* 7824 */ {(12<<2)|2,{97,78,0}}, +/* 7825 */ {(12<<2)|2,{97,78,0}}, +/* 7826 */ {(12<<2)|2,{97,78,0}}, +/* 7827 */ {(12<<2)|2,{97,78,0}}, +/* 7828 */ {(12<<2)|2,{97,78,0}}, +/* 7829 */ {(12<<2)|2,{97,78,0}}, +/* 7830 */ {(12<<2)|2,{97,78,0}}, +/* 7831 */ {(12<<2)|2,{97,78,0}}, +/* 7832 */ {(12<<2)|2,{97,78,0}}, +/* 7833 */ {(12<<2)|2,{97,78,0}}, +/* 7834 */ {(12<<2)|2,{97,78,0}}, +/* 7835 */ {(12<<2)|2,{97,78,0}}, +/* 7836 */ {(12<<2)|2,{97,78,0}}, +/* 7837 */ {(12<<2)|2,{97,78,0}}, +/* 7838 */ {(12<<2)|2,{97,78,0}}, +/* 7839 */ {(12<<2)|2,{97,78,0}}, +/* 7840 */ {(12<<2)|2,{97,79,0}}, +/* 7841 */ {(12<<2)|2,{97,79,0}}, +/* 7842 */ {(12<<2)|2,{97,79,0}}, +/* 7843 */ {(12<<2)|2,{97,79,0}}, +/* 7844 */ {(12<<2)|2,{97,79,0}}, +/* 7845 */ {(12<<2)|2,{97,79,0}}, +/* 7846 */ {(12<<2)|2,{97,79,0}}, +/* 7847 */ {(12<<2)|2,{97,79,0}}, +/* 7848 */ {(12<<2)|2,{97,79,0}}, +/* 7849 */ {(12<<2)|2,{97,79,0}}, +/* 7850 */ {(12<<2)|2,{97,79,0}}, +/* 7851 */ {(12<<2)|2,{97,79,0}}, +/* 7852 */ {(12<<2)|2,{97,79,0}}, +/* 7853 */ {(12<<2)|2,{97,79,0}}, +/* 7854 */ {(12<<2)|2,{97,79,0}}, +/* 7855 */ {(12<<2)|2,{97,79,0}}, +/* 7856 */ {(12<<2)|2,{97,80,0}}, +/* 7857 */ {(12<<2)|2,{97,80,0}}, +/* 7858 */ {(12<<2)|2,{97,80,0}}, +/* 7859 */ {(12<<2)|2,{97,80,0}}, +/* 7860 */ {(12<<2)|2,{97,80,0}}, +/* 7861 */ {(12<<2)|2,{97,80,0}}, +/* 7862 */ {(12<<2)|2,{97,80,0}}, +/* 7863 */ {(12<<2)|2,{97,80,0}}, +/* 7864 */ {(12<<2)|2,{97,80,0}}, +/* 7865 */ {(12<<2)|2,{97,80,0}}, +/* 7866 */ {(12<<2)|2,{97,80,0}}, +/* 7867 */ {(12<<2)|2,{97,80,0}}, +/* 7868 */ {(12<<2)|2,{97,80,0}}, +/* 7869 */ {(12<<2)|2,{97,80,0}}, +/* 7870 */ {(12<<2)|2,{97,80,0}}, +/* 7871 */ {(12<<2)|2,{97,80,0}}, +/* 7872 */ {(12<<2)|2,{97,81,0}}, +/* 7873 */ {(12<<2)|2,{97,81,0}}, +/* 7874 */ {(12<<2)|2,{97,81,0}}, +/* 7875 */ {(12<<2)|2,{97,81,0}}, +/* 7876 */ {(12<<2)|2,{97,81,0}}, +/* 7877 */ {(12<<2)|2,{97,81,0}}, +/* 7878 */ {(12<<2)|2,{97,81,0}}, +/* 7879 */ {(12<<2)|2,{97,81,0}}, +/* 7880 */ {(12<<2)|2,{97,81,0}}, +/* 7881 */ {(12<<2)|2,{97,81,0}}, +/* 7882 */ {(12<<2)|2,{97,81,0}}, +/* 7883 */ {(12<<2)|2,{97,81,0}}, +/* 7884 */ {(12<<2)|2,{97,81,0}}, +/* 7885 */ {(12<<2)|2,{97,81,0}}, +/* 7886 */ {(12<<2)|2,{97,81,0}}, +/* 7887 */ {(12<<2)|2,{97,81,0}}, +/* 7888 */ {(12<<2)|2,{97,82,0}}, +/* 7889 */ {(12<<2)|2,{97,82,0}}, +/* 7890 */ {(12<<2)|2,{97,82,0}}, +/* 7891 */ {(12<<2)|2,{97,82,0}}, +/* 7892 */ {(12<<2)|2,{97,82,0}}, +/* 7893 */ {(12<<2)|2,{97,82,0}}, +/* 7894 */ {(12<<2)|2,{97,82,0}}, +/* 7895 */ {(12<<2)|2,{97,82,0}}, +/* 7896 */ {(12<<2)|2,{97,82,0}}, +/* 7897 */ {(12<<2)|2,{97,82,0}}, +/* 7898 */ {(12<<2)|2,{97,82,0}}, +/* 7899 */ {(12<<2)|2,{97,82,0}}, +/* 7900 */ {(12<<2)|2,{97,82,0}}, +/* 7901 */ {(12<<2)|2,{97,82,0}}, +/* 7902 */ {(12<<2)|2,{97,82,0}}, +/* 7903 */ {(12<<2)|2,{97,82,0}}, +/* 7904 */ {(12<<2)|2,{97,83,0}}, +/* 7905 */ {(12<<2)|2,{97,83,0}}, +/* 7906 */ {(12<<2)|2,{97,83,0}}, +/* 7907 */ {(12<<2)|2,{97,83,0}}, +/* 7908 */ {(12<<2)|2,{97,83,0}}, +/* 7909 */ {(12<<2)|2,{97,83,0}}, +/* 7910 */ {(12<<2)|2,{97,83,0}}, +/* 7911 */ {(12<<2)|2,{97,83,0}}, +/* 7912 */ {(12<<2)|2,{97,83,0}}, +/* 7913 */ {(12<<2)|2,{97,83,0}}, +/* 7914 */ {(12<<2)|2,{97,83,0}}, +/* 7915 */ {(12<<2)|2,{97,83,0}}, +/* 7916 */ {(12<<2)|2,{97,83,0}}, +/* 7917 */ {(12<<2)|2,{97,83,0}}, +/* 7918 */ {(12<<2)|2,{97,83,0}}, +/* 7919 */ {(12<<2)|2,{97,83,0}}, +/* 7920 */ {(12<<2)|2,{97,84,0}}, +/* 7921 */ {(12<<2)|2,{97,84,0}}, +/* 7922 */ {(12<<2)|2,{97,84,0}}, +/* 7923 */ {(12<<2)|2,{97,84,0}}, +/* 7924 */ {(12<<2)|2,{97,84,0}}, +/* 7925 */ {(12<<2)|2,{97,84,0}}, +/* 7926 */ {(12<<2)|2,{97,84,0}}, +/* 7927 */ {(12<<2)|2,{97,84,0}}, +/* 7928 */ {(12<<2)|2,{97,84,0}}, +/* 7929 */ {(12<<2)|2,{97,84,0}}, +/* 7930 */ {(12<<2)|2,{97,84,0}}, +/* 7931 */ {(12<<2)|2,{97,84,0}}, +/* 7932 */ {(12<<2)|2,{97,84,0}}, +/* 7933 */ {(12<<2)|2,{97,84,0}}, +/* 7934 */ {(12<<2)|2,{97,84,0}}, +/* 7935 */ {(12<<2)|2,{97,84,0}}, +/* 7936 */ {(12<<2)|2,{97,85,0}}, +/* 7937 */ {(12<<2)|2,{97,85,0}}, +/* 7938 */ {(12<<2)|2,{97,85,0}}, +/* 7939 */ {(12<<2)|2,{97,85,0}}, +/* 7940 */ {(12<<2)|2,{97,85,0}}, +/* 7941 */ {(12<<2)|2,{97,85,0}}, +/* 7942 */ {(12<<2)|2,{97,85,0}}, +/* 7943 */ {(12<<2)|2,{97,85,0}}, +/* 7944 */ {(12<<2)|2,{97,85,0}}, +/* 7945 */ {(12<<2)|2,{97,85,0}}, +/* 7946 */ {(12<<2)|2,{97,85,0}}, +/* 7947 */ {(12<<2)|2,{97,85,0}}, +/* 7948 */ {(12<<2)|2,{97,85,0}}, +/* 7949 */ {(12<<2)|2,{97,85,0}}, +/* 7950 */ {(12<<2)|2,{97,85,0}}, +/* 7951 */ {(12<<2)|2,{97,85,0}}, +/* 7952 */ {(12<<2)|2,{97,86,0}}, +/* 7953 */ {(12<<2)|2,{97,86,0}}, +/* 7954 */ {(12<<2)|2,{97,86,0}}, +/* 7955 */ {(12<<2)|2,{97,86,0}}, +/* 7956 */ {(12<<2)|2,{97,86,0}}, +/* 7957 */ {(12<<2)|2,{97,86,0}}, +/* 7958 */ {(12<<2)|2,{97,86,0}}, +/* 7959 */ {(12<<2)|2,{97,86,0}}, +/* 7960 */ {(12<<2)|2,{97,86,0}}, +/* 7961 */ {(12<<2)|2,{97,86,0}}, +/* 7962 */ {(12<<2)|2,{97,86,0}}, +/* 7963 */ {(12<<2)|2,{97,86,0}}, +/* 7964 */ {(12<<2)|2,{97,86,0}}, +/* 7965 */ {(12<<2)|2,{97,86,0}}, +/* 7966 */ {(12<<2)|2,{97,86,0}}, +/* 7967 */ {(12<<2)|2,{97,86,0}}, +/* 7968 */ {(12<<2)|2,{97,87,0}}, +/* 7969 */ {(12<<2)|2,{97,87,0}}, +/* 7970 */ {(12<<2)|2,{97,87,0}}, +/* 7971 */ {(12<<2)|2,{97,87,0}}, +/* 7972 */ {(12<<2)|2,{97,87,0}}, +/* 7973 */ {(12<<2)|2,{97,87,0}}, +/* 7974 */ {(12<<2)|2,{97,87,0}}, +/* 7975 */ {(12<<2)|2,{97,87,0}}, +/* 7976 */ {(12<<2)|2,{97,87,0}}, +/* 7977 */ {(12<<2)|2,{97,87,0}}, +/* 7978 */ {(12<<2)|2,{97,87,0}}, +/* 7979 */ {(12<<2)|2,{97,87,0}}, +/* 7980 */ {(12<<2)|2,{97,87,0}}, +/* 7981 */ {(12<<2)|2,{97,87,0}}, +/* 7982 */ {(12<<2)|2,{97,87,0}}, +/* 7983 */ {(12<<2)|2,{97,87,0}}, +/* 7984 */ {(12<<2)|2,{97,89,0}}, +/* 7985 */ {(12<<2)|2,{97,89,0}}, +/* 7986 */ {(12<<2)|2,{97,89,0}}, +/* 7987 */ {(12<<2)|2,{97,89,0}}, +/* 7988 */ {(12<<2)|2,{97,89,0}}, +/* 7989 */ {(12<<2)|2,{97,89,0}}, +/* 7990 */ {(12<<2)|2,{97,89,0}}, +/* 7991 */ {(12<<2)|2,{97,89,0}}, +/* 7992 */ {(12<<2)|2,{97,89,0}}, +/* 7993 */ {(12<<2)|2,{97,89,0}}, +/* 7994 */ {(12<<2)|2,{97,89,0}}, +/* 7995 */ {(12<<2)|2,{97,89,0}}, +/* 7996 */ {(12<<2)|2,{97,89,0}}, +/* 7997 */ {(12<<2)|2,{97,89,0}}, +/* 7998 */ {(12<<2)|2,{97,89,0}}, +/* 7999 */ {(12<<2)|2,{97,89,0}}, +/* 8000 */ {(12<<2)|2,{97,106,0}}, +/* 8001 */ {(12<<2)|2,{97,106,0}}, +/* 8002 */ {(12<<2)|2,{97,106,0}}, +/* 8003 */ {(12<<2)|2,{97,106,0}}, +/* 8004 */ {(12<<2)|2,{97,106,0}}, +/* 8005 */ {(12<<2)|2,{97,106,0}}, +/* 8006 */ {(12<<2)|2,{97,106,0}}, +/* 8007 */ {(12<<2)|2,{97,106,0}}, +/* 8008 */ {(12<<2)|2,{97,106,0}}, +/* 8009 */ {(12<<2)|2,{97,106,0}}, +/* 8010 */ {(12<<2)|2,{97,106,0}}, +/* 8011 */ {(12<<2)|2,{97,106,0}}, +/* 8012 */ {(12<<2)|2,{97,106,0}}, +/* 8013 */ {(12<<2)|2,{97,106,0}}, +/* 8014 */ {(12<<2)|2,{97,106,0}}, +/* 8015 */ {(12<<2)|2,{97,106,0}}, +/* 8016 */ {(12<<2)|2,{97,107,0}}, +/* 8017 */ {(12<<2)|2,{97,107,0}}, +/* 8018 */ {(12<<2)|2,{97,107,0}}, +/* 8019 */ {(12<<2)|2,{97,107,0}}, +/* 8020 */ {(12<<2)|2,{97,107,0}}, +/* 8021 */ {(12<<2)|2,{97,107,0}}, +/* 8022 */ {(12<<2)|2,{97,107,0}}, +/* 8023 */ {(12<<2)|2,{97,107,0}}, +/* 8024 */ {(12<<2)|2,{97,107,0}}, +/* 8025 */ {(12<<2)|2,{97,107,0}}, +/* 8026 */ {(12<<2)|2,{97,107,0}}, +/* 8027 */ {(12<<2)|2,{97,107,0}}, +/* 8028 */ {(12<<2)|2,{97,107,0}}, +/* 8029 */ {(12<<2)|2,{97,107,0}}, +/* 8030 */ {(12<<2)|2,{97,107,0}}, +/* 8031 */ {(12<<2)|2,{97,107,0}}, +/* 8032 */ {(12<<2)|2,{97,113,0}}, +/* 8033 */ {(12<<2)|2,{97,113,0}}, +/* 8034 */ {(12<<2)|2,{97,113,0}}, +/* 8035 */ {(12<<2)|2,{97,113,0}}, +/* 8036 */ {(12<<2)|2,{97,113,0}}, +/* 8037 */ {(12<<2)|2,{97,113,0}}, +/* 8038 */ {(12<<2)|2,{97,113,0}}, +/* 8039 */ {(12<<2)|2,{97,113,0}}, +/* 8040 */ {(12<<2)|2,{97,113,0}}, +/* 8041 */ {(12<<2)|2,{97,113,0}}, +/* 8042 */ {(12<<2)|2,{97,113,0}}, +/* 8043 */ {(12<<2)|2,{97,113,0}}, +/* 8044 */ {(12<<2)|2,{97,113,0}}, +/* 8045 */ {(12<<2)|2,{97,113,0}}, +/* 8046 */ {(12<<2)|2,{97,113,0}}, +/* 8047 */ {(12<<2)|2,{97,113,0}}, +/* 8048 */ {(12<<2)|2,{97,118,0}}, +/* 8049 */ {(12<<2)|2,{97,118,0}}, +/* 8050 */ {(12<<2)|2,{97,118,0}}, +/* 8051 */ {(12<<2)|2,{97,118,0}}, +/* 8052 */ {(12<<2)|2,{97,118,0}}, +/* 8053 */ {(12<<2)|2,{97,118,0}}, +/* 8054 */ {(12<<2)|2,{97,118,0}}, +/* 8055 */ {(12<<2)|2,{97,118,0}}, +/* 8056 */ {(12<<2)|2,{97,118,0}}, +/* 8057 */ {(12<<2)|2,{97,118,0}}, +/* 8058 */ {(12<<2)|2,{97,118,0}}, +/* 8059 */ {(12<<2)|2,{97,118,0}}, +/* 8060 */ {(12<<2)|2,{97,118,0}}, +/* 8061 */ {(12<<2)|2,{97,118,0}}, +/* 8062 */ {(12<<2)|2,{97,118,0}}, +/* 8063 */ {(12<<2)|2,{97,118,0}}, +/* 8064 */ {(12<<2)|2,{97,119,0}}, +/* 8065 */ {(12<<2)|2,{97,119,0}}, +/* 8066 */ {(12<<2)|2,{97,119,0}}, +/* 8067 */ {(12<<2)|2,{97,119,0}}, +/* 8068 */ {(12<<2)|2,{97,119,0}}, +/* 8069 */ {(12<<2)|2,{97,119,0}}, +/* 8070 */ {(12<<2)|2,{97,119,0}}, +/* 8071 */ {(12<<2)|2,{97,119,0}}, +/* 8072 */ {(12<<2)|2,{97,119,0}}, +/* 8073 */ {(12<<2)|2,{97,119,0}}, +/* 8074 */ {(12<<2)|2,{97,119,0}}, +/* 8075 */ {(12<<2)|2,{97,119,0}}, +/* 8076 */ {(12<<2)|2,{97,119,0}}, +/* 8077 */ {(12<<2)|2,{97,119,0}}, +/* 8078 */ {(12<<2)|2,{97,119,0}}, +/* 8079 */ {(12<<2)|2,{97,119,0}}, +/* 8080 */ {(12<<2)|2,{97,120,0}}, +/* 8081 */ {(12<<2)|2,{97,120,0}}, +/* 8082 */ {(12<<2)|2,{97,120,0}}, +/* 8083 */ {(12<<2)|2,{97,120,0}}, +/* 8084 */ {(12<<2)|2,{97,120,0}}, +/* 8085 */ {(12<<2)|2,{97,120,0}}, +/* 8086 */ {(12<<2)|2,{97,120,0}}, +/* 8087 */ {(12<<2)|2,{97,120,0}}, +/* 8088 */ {(12<<2)|2,{97,120,0}}, +/* 8089 */ {(12<<2)|2,{97,120,0}}, +/* 8090 */ {(12<<2)|2,{97,120,0}}, +/* 8091 */ {(12<<2)|2,{97,120,0}}, +/* 8092 */ {(12<<2)|2,{97,120,0}}, +/* 8093 */ {(12<<2)|2,{97,120,0}}, +/* 8094 */ {(12<<2)|2,{97,120,0}}, +/* 8095 */ {(12<<2)|2,{97,120,0}}, +/* 8096 */ {(12<<2)|2,{97,121,0}}, +/* 8097 */ {(12<<2)|2,{97,121,0}}, +/* 8098 */ {(12<<2)|2,{97,121,0}}, +/* 8099 */ {(12<<2)|2,{97,121,0}}, +/* 8100 */ {(12<<2)|2,{97,121,0}}, +/* 8101 */ {(12<<2)|2,{97,121,0}}, +/* 8102 */ {(12<<2)|2,{97,121,0}}, +/* 8103 */ {(12<<2)|2,{97,121,0}}, +/* 8104 */ {(12<<2)|2,{97,121,0}}, +/* 8105 */ {(12<<2)|2,{97,121,0}}, +/* 8106 */ {(12<<2)|2,{97,121,0}}, +/* 8107 */ {(12<<2)|2,{97,121,0}}, +/* 8108 */ {(12<<2)|2,{97,121,0}}, +/* 8109 */ {(12<<2)|2,{97,121,0}}, +/* 8110 */ {(12<<2)|2,{97,121,0}}, +/* 8111 */ {(12<<2)|2,{97,121,0}}, +/* 8112 */ {(12<<2)|2,{97,122,0}}, +/* 8113 */ {(12<<2)|2,{97,122,0}}, +/* 8114 */ {(12<<2)|2,{97,122,0}}, +/* 8115 */ {(12<<2)|2,{97,122,0}}, +/* 8116 */ {(12<<2)|2,{97,122,0}}, +/* 8117 */ {(12<<2)|2,{97,122,0}}, +/* 8118 */ {(12<<2)|2,{97,122,0}}, +/* 8119 */ {(12<<2)|2,{97,122,0}}, +/* 8120 */ {(12<<2)|2,{97,122,0}}, +/* 8121 */ {(12<<2)|2,{97,122,0}}, +/* 8122 */ {(12<<2)|2,{97,122,0}}, +/* 8123 */ {(12<<2)|2,{97,122,0}}, +/* 8124 */ {(12<<2)|2,{97,122,0}}, +/* 8125 */ {(12<<2)|2,{97,122,0}}, +/* 8126 */ {(12<<2)|2,{97,122,0}}, +/* 8127 */ {(12<<2)|2,{97,122,0}}, +/* 8128 */ {(13<<2)|2,{97,38,0}}, +/* 8129 */ {(13<<2)|2,{97,38,0}}, +/* 8130 */ {(13<<2)|2,{97,38,0}}, +/* 8131 */ {(13<<2)|2,{97,38,0}}, +/* 8132 */ {(13<<2)|2,{97,38,0}}, +/* 8133 */ {(13<<2)|2,{97,38,0}}, +/* 8134 */ {(13<<2)|2,{97,38,0}}, +/* 8135 */ {(13<<2)|2,{97,38,0}}, +/* 8136 */ {(13<<2)|2,{97,42,0}}, +/* 8137 */ {(13<<2)|2,{97,42,0}}, +/* 8138 */ {(13<<2)|2,{97,42,0}}, +/* 8139 */ {(13<<2)|2,{97,42,0}}, +/* 8140 */ {(13<<2)|2,{97,42,0}}, +/* 8141 */ {(13<<2)|2,{97,42,0}}, +/* 8142 */ {(13<<2)|2,{97,42,0}}, +/* 8143 */ {(13<<2)|2,{97,42,0}}, +/* 8144 */ {(13<<2)|2,{97,44,0}}, +/* 8145 */ {(13<<2)|2,{97,44,0}}, +/* 8146 */ {(13<<2)|2,{97,44,0}}, +/* 8147 */ {(13<<2)|2,{97,44,0}}, +/* 8148 */ {(13<<2)|2,{97,44,0}}, +/* 8149 */ {(13<<2)|2,{97,44,0}}, +/* 8150 */ {(13<<2)|2,{97,44,0}}, +/* 8151 */ {(13<<2)|2,{97,44,0}}, +/* 8152 */ {(13<<2)|2,{97,59,0}}, +/* 8153 */ {(13<<2)|2,{97,59,0}}, +/* 8154 */ {(13<<2)|2,{97,59,0}}, +/* 8155 */ {(13<<2)|2,{97,59,0}}, +/* 8156 */ {(13<<2)|2,{97,59,0}}, +/* 8157 */ {(13<<2)|2,{97,59,0}}, +/* 8158 */ {(13<<2)|2,{97,59,0}}, +/* 8159 */ {(13<<2)|2,{97,59,0}}, +/* 8160 */ {(13<<2)|2,{97,88,0}}, +/* 8161 */ {(13<<2)|2,{97,88,0}}, +/* 8162 */ {(13<<2)|2,{97,88,0}}, +/* 8163 */ {(13<<2)|2,{97,88,0}}, +/* 8164 */ {(13<<2)|2,{97,88,0}}, +/* 8165 */ {(13<<2)|2,{97,88,0}}, +/* 8166 */ {(13<<2)|2,{97,88,0}}, +/* 8167 */ {(13<<2)|2,{97,88,0}}, +/* 8168 */ {(13<<2)|2,{97,90,0}}, +/* 8169 */ {(13<<2)|2,{97,90,0}}, +/* 8170 */ {(13<<2)|2,{97,90,0}}, +/* 8171 */ {(13<<2)|2,{97,90,0}}, +/* 8172 */ {(13<<2)|2,{97,90,0}}, +/* 8173 */ {(13<<2)|2,{97,90,0}}, +/* 8174 */ {(13<<2)|2,{97,90,0}}, +/* 8175 */ {(13<<2)|2,{97,90,0}}, +/* 8176 */ {(15<<2)|2,{97,33,0}}, +/* 8177 */ {(15<<2)|2,{97,33,0}}, +/* 8178 */ {(15<<2)|2,{97,34,0}}, +/* 8179 */ {(15<<2)|2,{97,34,0}}, +/* 8180 */ {(15<<2)|2,{97,40,0}}, +/* 8181 */ {(15<<2)|2,{97,40,0}}, +/* 8182 */ {(15<<2)|2,{97,41,0}}, +/* 8183 */ {(15<<2)|2,{97,41,0}}, +/* 8184 */ {(15<<2)|2,{97,63,0}}, +/* 8185 */ {(15<<2)|2,{97,63,0}}, +/* 8186 */ {(16<<2)|2,{97,39,0}}, +/* 8187 */ {(16<<2)|2,{97,43,0}}, +/* 8188 */ {(16<<2)|2,{97,124,0}}, +/* 8189 */ {(5<<2)|1,{97,0,0}}, +/* 8190 */ {(5<<2)|1,{97,0,0}}, +/* 8191 */ {(5<<2)|1,{97,0,0}}, +/* 8192 */ {(15<<2)|3,{99,48,48}}, +/* 8193 */ {(15<<2)|3,{99,48,48}}, +/* 8194 */ {(15<<2)|3,{99,48,49}}, +/* 8195 */ {(15<<2)|3,{99,48,49}}, +/* 8196 */ {(15<<2)|3,{99,48,50}}, +/* 8197 */ {(15<<2)|3,{99,48,50}}, +/* 8198 */ {(15<<2)|3,{99,48,97}}, +/* 8199 */ {(15<<2)|3,{99,48,97}}, +/* 8200 */ {(15<<2)|3,{99,48,99}}, +/* 8201 */ {(15<<2)|3,{99,48,99}}, +/* 8202 */ {(15<<2)|3,{99,48,101}}, +/* 8203 */ {(15<<2)|3,{99,48,101}}, +/* 8204 */ {(15<<2)|3,{99,48,105}}, +/* 8205 */ {(15<<2)|3,{99,48,105}}, +/* 8206 */ {(15<<2)|3,{99,48,111}}, +/* 8207 */ {(15<<2)|3,{99,48,111}}, +/* 8208 */ {(15<<2)|3,{99,48,115}}, +/* 8209 */ {(15<<2)|3,{99,48,115}}, +/* 8210 */ {(15<<2)|3,{99,48,116}}, +/* 8211 */ {(15<<2)|3,{99,48,116}}, +/* 8212 */ {(16<<2)|3,{99,48,32}}, +/* 8213 */ {(16<<2)|3,{99,48,37}}, +/* 8214 */ {(16<<2)|3,{99,48,45}}, +/* 8215 */ {(16<<2)|3,{99,48,46}}, +/* 8216 */ {(16<<2)|3,{99,48,47}}, +/* 8217 */ {(16<<2)|3,{99,48,51}}, +/* 8218 */ {(16<<2)|3,{99,48,52}}, +/* 8219 */ {(16<<2)|3,{99,48,53}}, +/* 8220 */ {(16<<2)|3,{99,48,54}}, +/* 8221 */ {(16<<2)|3,{99,48,55}}, +/* 8222 */ {(16<<2)|3,{99,48,56}}, +/* 8223 */ {(16<<2)|3,{99,48,57}}, +/* 8224 */ {(16<<2)|3,{99,48,61}}, +/* 8225 */ {(16<<2)|3,{99,48,65}}, +/* 8226 */ {(16<<2)|3,{99,48,95}}, +/* 8227 */ {(16<<2)|3,{99,48,98}}, +/* 8228 */ {(16<<2)|3,{99,48,100}}, +/* 8229 */ {(16<<2)|3,{99,48,102}}, +/* 8230 */ {(16<<2)|3,{99,48,103}}, +/* 8231 */ {(16<<2)|3,{99,48,104}}, +/* 8232 */ {(16<<2)|3,{99,48,108}}, +/* 8233 */ {(16<<2)|3,{99,48,109}}, +/* 8234 */ {(16<<2)|3,{99,48,110}}, +/* 8235 */ {(16<<2)|3,{99,48,112}}, +/* 8236 */ {(16<<2)|3,{99,48,114}}, +/* 8237 */ {(16<<2)|3,{99,48,117}}, +/* 8238 */ {(10<<2)|2,{99,48,0}}, +/* 8239 */ {(10<<2)|2,{99,48,0}}, +/* 8240 */ {(10<<2)|2,{99,48,0}}, +/* 8241 */ {(10<<2)|2,{99,48,0}}, +/* 8242 */ {(10<<2)|2,{99,48,0}}, +/* 8243 */ {(10<<2)|2,{99,48,0}}, +/* 8244 */ {(10<<2)|2,{99,48,0}}, +/* 8245 */ {(10<<2)|2,{99,48,0}}, +/* 8246 */ {(10<<2)|2,{99,48,0}}, +/* 8247 */ {(10<<2)|2,{99,48,0}}, +/* 8248 */ {(10<<2)|2,{99,48,0}}, +/* 8249 */ {(10<<2)|2,{99,48,0}}, +/* 8250 */ {(10<<2)|2,{99,48,0}}, +/* 8251 */ {(10<<2)|2,{99,48,0}}, +/* 8252 */ {(10<<2)|2,{99,48,0}}, +/* 8253 */ {(10<<2)|2,{99,48,0}}, +/* 8254 */ {(10<<2)|2,{99,48,0}}, +/* 8255 */ {(10<<2)|2,{99,48,0}}, +/* 8256 */ {(15<<2)|3,{99,49,48}}, +/* 8257 */ {(15<<2)|3,{99,49,48}}, +/* 8258 */ {(15<<2)|3,{99,49,49}}, +/* 8259 */ {(15<<2)|3,{99,49,49}}, +/* 8260 */ {(15<<2)|3,{99,49,50}}, +/* 8261 */ {(15<<2)|3,{99,49,50}}, +/* 8262 */ {(15<<2)|3,{99,49,97}}, +/* 8263 */ {(15<<2)|3,{99,49,97}}, +/* 8264 */ {(15<<2)|3,{99,49,99}}, +/* 8265 */ {(15<<2)|3,{99,49,99}}, +/* 8266 */ {(15<<2)|3,{99,49,101}}, +/* 8267 */ {(15<<2)|3,{99,49,101}}, +/* 8268 */ {(15<<2)|3,{99,49,105}}, +/* 8269 */ {(15<<2)|3,{99,49,105}}, +/* 8270 */ {(15<<2)|3,{99,49,111}}, +/* 8271 */ {(15<<2)|3,{99,49,111}}, +/* 8272 */ {(15<<2)|3,{99,49,115}}, +/* 8273 */ {(15<<2)|3,{99,49,115}}, +/* 8274 */ {(15<<2)|3,{99,49,116}}, +/* 8275 */ {(15<<2)|3,{99,49,116}}, +/* 8276 */ {(16<<2)|3,{99,49,32}}, +/* 8277 */ {(16<<2)|3,{99,49,37}}, +/* 8278 */ {(16<<2)|3,{99,49,45}}, +/* 8279 */ {(16<<2)|3,{99,49,46}}, +/* 8280 */ {(16<<2)|3,{99,49,47}}, +/* 8281 */ {(16<<2)|3,{99,49,51}}, +/* 8282 */ {(16<<2)|3,{99,49,52}}, +/* 8283 */ {(16<<2)|3,{99,49,53}}, +/* 8284 */ {(16<<2)|3,{99,49,54}}, +/* 8285 */ {(16<<2)|3,{99,49,55}}, +/* 8286 */ {(16<<2)|3,{99,49,56}}, +/* 8287 */ {(16<<2)|3,{99,49,57}}, +/* 8288 */ {(16<<2)|3,{99,49,61}}, +/* 8289 */ {(16<<2)|3,{99,49,65}}, +/* 8290 */ {(16<<2)|3,{99,49,95}}, +/* 8291 */ {(16<<2)|3,{99,49,98}}, +/* 8292 */ {(16<<2)|3,{99,49,100}}, +/* 8293 */ {(16<<2)|3,{99,49,102}}, +/* 8294 */ {(16<<2)|3,{99,49,103}}, +/* 8295 */ {(16<<2)|3,{99,49,104}}, +/* 8296 */ {(16<<2)|3,{99,49,108}}, +/* 8297 */ {(16<<2)|3,{99,49,109}}, +/* 8298 */ {(16<<2)|3,{99,49,110}}, +/* 8299 */ {(16<<2)|3,{99,49,112}}, +/* 8300 */ {(16<<2)|3,{99,49,114}}, +/* 8301 */ {(16<<2)|3,{99,49,117}}, +/* 8302 */ {(10<<2)|2,{99,49,0}}, +/* 8303 */ {(10<<2)|2,{99,49,0}}, +/* 8304 */ {(10<<2)|2,{99,49,0}}, +/* 8305 */ {(10<<2)|2,{99,49,0}}, +/* 8306 */ {(10<<2)|2,{99,49,0}}, +/* 8307 */ {(10<<2)|2,{99,49,0}}, +/* 8308 */ {(10<<2)|2,{99,49,0}}, +/* 8309 */ {(10<<2)|2,{99,49,0}}, +/* 8310 */ {(10<<2)|2,{99,49,0}}, +/* 8311 */ {(10<<2)|2,{99,49,0}}, +/* 8312 */ {(10<<2)|2,{99,49,0}}, +/* 8313 */ {(10<<2)|2,{99,49,0}}, +/* 8314 */ {(10<<2)|2,{99,49,0}}, +/* 8315 */ {(10<<2)|2,{99,49,0}}, +/* 8316 */ {(10<<2)|2,{99,49,0}}, +/* 8317 */ {(10<<2)|2,{99,49,0}}, +/* 8318 */ {(10<<2)|2,{99,49,0}}, +/* 8319 */ {(10<<2)|2,{99,49,0}}, +/* 8320 */ {(15<<2)|3,{99,50,48}}, +/* 8321 */ {(15<<2)|3,{99,50,48}}, +/* 8322 */ {(15<<2)|3,{99,50,49}}, +/* 8323 */ {(15<<2)|3,{99,50,49}}, +/* 8324 */ {(15<<2)|3,{99,50,50}}, +/* 8325 */ {(15<<2)|3,{99,50,50}}, +/* 8326 */ {(15<<2)|3,{99,50,97}}, +/* 8327 */ {(15<<2)|3,{99,50,97}}, +/* 8328 */ {(15<<2)|3,{99,50,99}}, +/* 8329 */ {(15<<2)|3,{99,50,99}}, +/* 8330 */ {(15<<2)|3,{99,50,101}}, +/* 8331 */ {(15<<2)|3,{99,50,101}}, +/* 8332 */ {(15<<2)|3,{99,50,105}}, +/* 8333 */ {(15<<2)|3,{99,50,105}}, +/* 8334 */ {(15<<2)|3,{99,50,111}}, +/* 8335 */ {(15<<2)|3,{99,50,111}}, +/* 8336 */ {(15<<2)|3,{99,50,115}}, +/* 8337 */ {(15<<2)|3,{99,50,115}}, +/* 8338 */ {(15<<2)|3,{99,50,116}}, +/* 8339 */ {(15<<2)|3,{99,50,116}}, +/* 8340 */ {(16<<2)|3,{99,50,32}}, +/* 8341 */ {(16<<2)|3,{99,50,37}}, +/* 8342 */ {(16<<2)|3,{99,50,45}}, +/* 8343 */ {(16<<2)|3,{99,50,46}}, +/* 8344 */ {(16<<2)|3,{99,50,47}}, +/* 8345 */ {(16<<2)|3,{99,50,51}}, +/* 8346 */ {(16<<2)|3,{99,50,52}}, +/* 8347 */ {(16<<2)|3,{99,50,53}}, +/* 8348 */ {(16<<2)|3,{99,50,54}}, +/* 8349 */ {(16<<2)|3,{99,50,55}}, +/* 8350 */ {(16<<2)|3,{99,50,56}}, +/* 8351 */ {(16<<2)|3,{99,50,57}}, +/* 8352 */ {(16<<2)|3,{99,50,61}}, +/* 8353 */ {(16<<2)|3,{99,50,65}}, +/* 8354 */ {(16<<2)|3,{99,50,95}}, +/* 8355 */ {(16<<2)|3,{99,50,98}}, +/* 8356 */ {(16<<2)|3,{99,50,100}}, +/* 8357 */ {(16<<2)|3,{99,50,102}}, +/* 8358 */ {(16<<2)|3,{99,50,103}}, +/* 8359 */ {(16<<2)|3,{99,50,104}}, +/* 8360 */ {(16<<2)|3,{99,50,108}}, +/* 8361 */ {(16<<2)|3,{99,50,109}}, +/* 8362 */ {(16<<2)|3,{99,50,110}}, +/* 8363 */ {(16<<2)|3,{99,50,112}}, +/* 8364 */ {(16<<2)|3,{99,50,114}}, +/* 8365 */ {(16<<2)|3,{99,50,117}}, +/* 8366 */ {(10<<2)|2,{99,50,0}}, +/* 8367 */ {(10<<2)|2,{99,50,0}}, +/* 8368 */ {(10<<2)|2,{99,50,0}}, +/* 8369 */ {(10<<2)|2,{99,50,0}}, +/* 8370 */ {(10<<2)|2,{99,50,0}}, +/* 8371 */ {(10<<2)|2,{99,50,0}}, +/* 8372 */ {(10<<2)|2,{99,50,0}}, +/* 8373 */ {(10<<2)|2,{99,50,0}}, +/* 8374 */ {(10<<2)|2,{99,50,0}}, +/* 8375 */ {(10<<2)|2,{99,50,0}}, +/* 8376 */ {(10<<2)|2,{99,50,0}}, +/* 8377 */ {(10<<2)|2,{99,50,0}}, +/* 8378 */ {(10<<2)|2,{99,50,0}}, +/* 8379 */ {(10<<2)|2,{99,50,0}}, +/* 8380 */ {(10<<2)|2,{99,50,0}}, +/* 8381 */ {(10<<2)|2,{99,50,0}}, +/* 8382 */ {(10<<2)|2,{99,50,0}}, +/* 8383 */ {(10<<2)|2,{99,50,0}}, +/* 8384 */ {(15<<2)|3,{99,97,48}}, +/* 8385 */ {(15<<2)|3,{99,97,48}}, +/* 8386 */ {(15<<2)|3,{99,97,49}}, +/* 8387 */ {(15<<2)|3,{99,97,49}}, +/* 8388 */ {(15<<2)|3,{99,97,50}}, +/* 8389 */ {(15<<2)|3,{99,97,50}}, +/* 8390 */ {(15<<2)|3,{99,97,97}}, +/* 8391 */ {(15<<2)|3,{99,97,97}}, +/* 8392 */ {(15<<2)|3,{99,97,99}}, +/* 8393 */ {(15<<2)|3,{99,97,99}}, +/* 8394 */ {(15<<2)|3,{99,97,101}}, +/* 8395 */ {(15<<2)|3,{99,97,101}}, +/* 8396 */ {(15<<2)|3,{99,97,105}}, +/* 8397 */ {(15<<2)|3,{99,97,105}}, +/* 8398 */ {(15<<2)|3,{99,97,111}}, +/* 8399 */ {(15<<2)|3,{99,97,111}}, +/* 8400 */ {(15<<2)|3,{99,97,115}}, +/* 8401 */ {(15<<2)|3,{99,97,115}}, +/* 8402 */ {(15<<2)|3,{99,97,116}}, +/* 8403 */ {(15<<2)|3,{99,97,116}}, +/* 8404 */ {(16<<2)|3,{99,97,32}}, +/* 8405 */ {(16<<2)|3,{99,97,37}}, +/* 8406 */ {(16<<2)|3,{99,97,45}}, +/* 8407 */ {(16<<2)|3,{99,97,46}}, +/* 8408 */ {(16<<2)|3,{99,97,47}}, +/* 8409 */ {(16<<2)|3,{99,97,51}}, +/* 8410 */ {(16<<2)|3,{99,97,52}}, +/* 8411 */ {(16<<2)|3,{99,97,53}}, +/* 8412 */ {(16<<2)|3,{99,97,54}}, +/* 8413 */ {(16<<2)|3,{99,97,55}}, +/* 8414 */ {(16<<2)|3,{99,97,56}}, +/* 8415 */ {(16<<2)|3,{99,97,57}}, +/* 8416 */ {(16<<2)|3,{99,97,61}}, +/* 8417 */ {(16<<2)|3,{99,97,65}}, +/* 8418 */ {(16<<2)|3,{99,97,95}}, +/* 8419 */ {(16<<2)|3,{99,97,98}}, +/* 8420 */ {(16<<2)|3,{99,97,100}}, +/* 8421 */ {(16<<2)|3,{99,97,102}}, +/* 8422 */ {(16<<2)|3,{99,97,103}}, +/* 8423 */ {(16<<2)|3,{99,97,104}}, +/* 8424 */ {(16<<2)|3,{99,97,108}}, +/* 8425 */ {(16<<2)|3,{99,97,109}}, +/* 8426 */ {(16<<2)|3,{99,97,110}}, +/* 8427 */ {(16<<2)|3,{99,97,112}}, +/* 8428 */ {(16<<2)|3,{99,97,114}}, +/* 8429 */ {(16<<2)|3,{99,97,117}}, +/* 8430 */ {(10<<2)|2,{99,97,0}}, +/* 8431 */ {(10<<2)|2,{99,97,0}}, +/* 8432 */ {(10<<2)|2,{99,97,0}}, +/* 8433 */ {(10<<2)|2,{99,97,0}}, +/* 8434 */ {(10<<2)|2,{99,97,0}}, +/* 8435 */ {(10<<2)|2,{99,97,0}}, +/* 8436 */ {(10<<2)|2,{99,97,0}}, +/* 8437 */ {(10<<2)|2,{99,97,0}}, +/* 8438 */ {(10<<2)|2,{99,97,0}}, +/* 8439 */ {(10<<2)|2,{99,97,0}}, +/* 8440 */ {(10<<2)|2,{99,97,0}}, +/* 8441 */ {(10<<2)|2,{99,97,0}}, +/* 8442 */ {(10<<2)|2,{99,97,0}}, +/* 8443 */ {(10<<2)|2,{99,97,0}}, +/* 8444 */ {(10<<2)|2,{99,97,0}}, +/* 8445 */ {(10<<2)|2,{99,97,0}}, +/* 8446 */ {(10<<2)|2,{99,97,0}}, +/* 8447 */ {(10<<2)|2,{99,97,0}}, +/* 8448 */ {(15<<2)|3,{99,99,48}}, +/* 8449 */ {(15<<2)|3,{99,99,48}}, +/* 8450 */ {(15<<2)|3,{99,99,49}}, +/* 8451 */ {(15<<2)|3,{99,99,49}}, +/* 8452 */ {(15<<2)|3,{99,99,50}}, +/* 8453 */ {(15<<2)|3,{99,99,50}}, +/* 8454 */ {(15<<2)|3,{99,99,97}}, +/* 8455 */ {(15<<2)|3,{99,99,97}}, +/* 8456 */ {(15<<2)|3,{99,99,99}}, +/* 8457 */ {(15<<2)|3,{99,99,99}}, +/* 8458 */ {(15<<2)|3,{99,99,101}}, +/* 8459 */ {(15<<2)|3,{99,99,101}}, +/* 8460 */ {(15<<2)|3,{99,99,105}}, +/* 8461 */ {(15<<2)|3,{99,99,105}}, +/* 8462 */ {(15<<2)|3,{99,99,111}}, +/* 8463 */ {(15<<2)|3,{99,99,111}}, +/* 8464 */ {(15<<2)|3,{99,99,115}}, +/* 8465 */ {(15<<2)|3,{99,99,115}}, +/* 8466 */ {(15<<2)|3,{99,99,116}}, +/* 8467 */ {(15<<2)|3,{99,99,116}}, +/* 8468 */ {(16<<2)|3,{99,99,32}}, +/* 8469 */ {(16<<2)|3,{99,99,37}}, +/* 8470 */ {(16<<2)|3,{99,99,45}}, +/* 8471 */ {(16<<2)|3,{99,99,46}}, +/* 8472 */ {(16<<2)|3,{99,99,47}}, +/* 8473 */ {(16<<2)|3,{99,99,51}}, +/* 8474 */ {(16<<2)|3,{99,99,52}}, +/* 8475 */ {(16<<2)|3,{99,99,53}}, +/* 8476 */ {(16<<2)|3,{99,99,54}}, +/* 8477 */ {(16<<2)|3,{99,99,55}}, +/* 8478 */ {(16<<2)|3,{99,99,56}}, +/* 8479 */ {(16<<2)|3,{99,99,57}}, +/* 8480 */ {(16<<2)|3,{99,99,61}}, +/* 8481 */ {(16<<2)|3,{99,99,65}}, +/* 8482 */ {(16<<2)|3,{99,99,95}}, +/* 8483 */ {(16<<2)|3,{99,99,98}}, +/* 8484 */ {(16<<2)|3,{99,99,100}}, +/* 8485 */ {(16<<2)|3,{99,99,102}}, +/* 8486 */ {(16<<2)|3,{99,99,103}}, +/* 8487 */ {(16<<2)|3,{99,99,104}}, +/* 8488 */ {(16<<2)|3,{99,99,108}}, +/* 8489 */ {(16<<2)|3,{99,99,109}}, +/* 8490 */ {(16<<2)|3,{99,99,110}}, +/* 8491 */ {(16<<2)|3,{99,99,112}}, +/* 8492 */ {(16<<2)|3,{99,99,114}}, +/* 8493 */ {(16<<2)|3,{99,99,117}}, +/* 8494 */ {(10<<2)|2,{99,99,0}}, +/* 8495 */ {(10<<2)|2,{99,99,0}}, +/* 8496 */ {(10<<2)|2,{99,99,0}}, +/* 8497 */ {(10<<2)|2,{99,99,0}}, +/* 8498 */ {(10<<2)|2,{99,99,0}}, +/* 8499 */ {(10<<2)|2,{99,99,0}}, +/* 8500 */ {(10<<2)|2,{99,99,0}}, +/* 8501 */ {(10<<2)|2,{99,99,0}}, +/* 8502 */ {(10<<2)|2,{99,99,0}}, +/* 8503 */ {(10<<2)|2,{99,99,0}}, +/* 8504 */ {(10<<2)|2,{99,99,0}}, +/* 8505 */ {(10<<2)|2,{99,99,0}}, +/* 8506 */ {(10<<2)|2,{99,99,0}}, +/* 8507 */ {(10<<2)|2,{99,99,0}}, +/* 8508 */ {(10<<2)|2,{99,99,0}}, +/* 8509 */ {(10<<2)|2,{99,99,0}}, +/* 8510 */ {(10<<2)|2,{99,99,0}}, +/* 8511 */ {(10<<2)|2,{99,99,0}}, +/* 8512 */ {(15<<2)|3,{99,101,48}}, +/* 8513 */ {(15<<2)|3,{99,101,48}}, +/* 8514 */ {(15<<2)|3,{99,101,49}}, +/* 8515 */ {(15<<2)|3,{99,101,49}}, +/* 8516 */ {(15<<2)|3,{99,101,50}}, +/* 8517 */ {(15<<2)|3,{99,101,50}}, +/* 8518 */ {(15<<2)|3,{99,101,97}}, +/* 8519 */ {(15<<2)|3,{99,101,97}}, +/* 8520 */ {(15<<2)|3,{99,101,99}}, +/* 8521 */ {(15<<2)|3,{99,101,99}}, +/* 8522 */ {(15<<2)|3,{99,101,101}}, +/* 8523 */ {(15<<2)|3,{99,101,101}}, +/* 8524 */ {(15<<2)|3,{99,101,105}}, +/* 8525 */ {(15<<2)|3,{99,101,105}}, +/* 8526 */ {(15<<2)|3,{99,101,111}}, +/* 8527 */ {(15<<2)|3,{99,101,111}}, +/* 8528 */ {(15<<2)|3,{99,101,115}}, +/* 8529 */ {(15<<2)|3,{99,101,115}}, +/* 8530 */ {(15<<2)|3,{99,101,116}}, +/* 8531 */ {(15<<2)|3,{99,101,116}}, +/* 8532 */ {(16<<2)|3,{99,101,32}}, +/* 8533 */ {(16<<2)|3,{99,101,37}}, +/* 8534 */ {(16<<2)|3,{99,101,45}}, +/* 8535 */ {(16<<2)|3,{99,101,46}}, +/* 8536 */ {(16<<2)|3,{99,101,47}}, +/* 8537 */ {(16<<2)|3,{99,101,51}}, +/* 8538 */ {(16<<2)|3,{99,101,52}}, +/* 8539 */ {(16<<2)|3,{99,101,53}}, +/* 8540 */ {(16<<2)|3,{99,101,54}}, +/* 8541 */ {(16<<2)|3,{99,101,55}}, +/* 8542 */ {(16<<2)|3,{99,101,56}}, +/* 8543 */ {(16<<2)|3,{99,101,57}}, +/* 8544 */ {(16<<2)|3,{99,101,61}}, +/* 8545 */ {(16<<2)|3,{99,101,65}}, +/* 8546 */ {(16<<2)|3,{99,101,95}}, +/* 8547 */ {(16<<2)|3,{99,101,98}}, +/* 8548 */ {(16<<2)|3,{99,101,100}}, +/* 8549 */ {(16<<2)|3,{99,101,102}}, +/* 8550 */ {(16<<2)|3,{99,101,103}}, +/* 8551 */ {(16<<2)|3,{99,101,104}}, +/* 8552 */ {(16<<2)|3,{99,101,108}}, +/* 8553 */ {(16<<2)|3,{99,101,109}}, +/* 8554 */ {(16<<2)|3,{99,101,110}}, +/* 8555 */ {(16<<2)|3,{99,101,112}}, +/* 8556 */ {(16<<2)|3,{99,101,114}}, +/* 8557 */ {(16<<2)|3,{99,101,117}}, +/* 8558 */ {(10<<2)|2,{99,101,0}}, +/* 8559 */ {(10<<2)|2,{99,101,0}}, +/* 8560 */ {(10<<2)|2,{99,101,0}}, +/* 8561 */ {(10<<2)|2,{99,101,0}}, +/* 8562 */ {(10<<2)|2,{99,101,0}}, +/* 8563 */ {(10<<2)|2,{99,101,0}}, +/* 8564 */ {(10<<2)|2,{99,101,0}}, +/* 8565 */ {(10<<2)|2,{99,101,0}}, +/* 8566 */ {(10<<2)|2,{99,101,0}}, +/* 8567 */ {(10<<2)|2,{99,101,0}}, +/* 8568 */ {(10<<2)|2,{99,101,0}}, +/* 8569 */ {(10<<2)|2,{99,101,0}}, +/* 8570 */ {(10<<2)|2,{99,101,0}}, +/* 8571 */ {(10<<2)|2,{99,101,0}}, +/* 8572 */ {(10<<2)|2,{99,101,0}}, +/* 8573 */ {(10<<2)|2,{99,101,0}}, +/* 8574 */ {(10<<2)|2,{99,101,0}}, +/* 8575 */ {(10<<2)|2,{99,101,0}}, +/* 8576 */ {(15<<2)|3,{99,105,48}}, +/* 8577 */ {(15<<2)|3,{99,105,48}}, +/* 8578 */ {(15<<2)|3,{99,105,49}}, +/* 8579 */ {(15<<2)|3,{99,105,49}}, +/* 8580 */ {(15<<2)|3,{99,105,50}}, +/* 8581 */ {(15<<2)|3,{99,105,50}}, +/* 8582 */ {(15<<2)|3,{99,105,97}}, +/* 8583 */ {(15<<2)|3,{99,105,97}}, +/* 8584 */ {(15<<2)|3,{99,105,99}}, +/* 8585 */ {(15<<2)|3,{99,105,99}}, +/* 8586 */ {(15<<2)|3,{99,105,101}}, +/* 8587 */ {(15<<2)|3,{99,105,101}}, +/* 8588 */ {(15<<2)|3,{99,105,105}}, +/* 8589 */ {(15<<2)|3,{99,105,105}}, +/* 8590 */ {(15<<2)|3,{99,105,111}}, +/* 8591 */ {(15<<2)|3,{99,105,111}}, +/* 8592 */ {(15<<2)|3,{99,105,115}}, +/* 8593 */ {(15<<2)|3,{99,105,115}}, +/* 8594 */ {(15<<2)|3,{99,105,116}}, +/* 8595 */ {(15<<2)|3,{99,105,116}}, +/* 8596 */ {(16<<2)|3,{99,105,32}}, +/* 8597 */ {(16<<2)|3,{99,105,37}}, +/* 8598 */ {(16<<2)|3,{99,105,45}}, +/* 8599 */ {(16<<2)|3,{99,105,46}}, +/* 8600 */ {(16<<2)|3,{99,105,47}}, +/* 8601 */ {(16<<2)|3,{99,105,51}}, +/* 8602 */ {(16<<2)|3,{99,105,52}}, +/* 8603 */ {(16<<2)|3,{99,105,53}}, +/* 8604 */ {(16<<2)|3,{99,105,54}}, +/* 8605 */ {(16<<2)|3,{99,105,55}}, +/* 8606 */ {(16<<2)|3,{99,105,56}}, +/* 8607 */ {(16<<2)|3,{99,105,57}}, +/* 8608 */ {(16<<2)|3,{99,105,61}}, +/* 8609 */ {(16<<2)|3,{99,105,65}}, +/* 8610 */ {(16<<2)|3,{99,105,95}}, +/* 8611 */ {(16<<2)|3,{99,105,98}}, +/* 8612 */ {(16<<2)|3,{99,105,100}}, +/* 8613 */ {(16<<2)|3,{99,105,102}}, +/* 8614 */ {(16<<2)|3,{99,105,103}}, +/* 8615 */ {(16<<2)|3,{99,105,104}}, +/* 8616 */ {(16<<2)|3,{99,105,108}}, +/* 8617 */ {(16<<2)|3,{99,105,109}}, +/* 8618 */ {(16<<2)|3,{99,105,110}}, +/* 8619 */ {(16<<2)|3,{99,105,112}}, +/* 8620 */ {(16<<2)|3,{99,105,114}}, +/* 8621 */ {(16<<2)|3,{99,105,117}}, +/* 8622 */ {(10<<2)|2,{99,105,0}}, +/* 8623 */ {(10<<2)|2,{99,105,0}}, +/* 8624 */ {(10<<2)|2,{99,105,0}}, +/* 8625 */ {(10<<2)|2,{99,105,0}}, +/* 8626 */ {(10<<2)|2,{99,105,0}}, +/* 8627 */ {(10<<2)|2,{99,105,0}}, +/* 8628 */ {(10<<2)|2,{99,105,0}}, +/* 8629 */ {(10<<2)|2,{99,105,0}}, +/* 8630 */ {(10<<2)|2,{99,105,0}}, +/* 8631 */ {(10<<2)|2,{99,105,0}}, +/* 8632 */ {(10<<2)|2,{99,105,0}}, +/* 8633 */ {(10<<2)|2,{99,105,0}}, +/* 8634 */ {(10<<2)|2,{99,105,0}}, +/* 8635 */ {(10<<2)|2,{99,105,0}}, +/* 8636 */ {(10<<2)|2,{99,105,0}}, +/* 8637 */ {(10<<2)|2,{99,105,0}}, +/* 8638 */ {(10<<2)|2,{99,105,0}}, +/* 8639 */ {(10<<2)|2,{99,105,0}}, +/* 8640 */ {(15<<2)|3,{99,111,48}}, +/* 8641 */ {(15<<2)|3,{99,111,48}}, +/* 8642 */ {(15<<2)|3,{99,111,49}}, +/* 8643 */ {(15<<2)|3,{99,111,49}}, +/* 8644 */ {(15<<2)|3,{99,111,50}}, +/* 8645 */ {(15<<2)|3,{99,111,50}}, +/* 8646 */ {(15<<2)|3,{99,111,97}}, +/* 8647 */ {(15<<2)|3,{99,111,97}}, +/* 8648 */ {(15<<2)|3,{99,111,99}}, +/* 8649 */ {(15<<2)|3,{99,111,99}}, +/* 8650 */ {(15<<2)|3,{99,111,101}}, +/* 8651 */ {(15<<2)|3,{99,111,101}}, +/* 8652 */ {(15<<2)|3,{99,111,105}}, +/* 8653 */ {(15<<2)|3,{99,111,105}}, +/* 8654 */ {(15<<2)|3,{99,111,111}}, +/* 8655 */ {(15<<2)|3,{99,111,111}}, +/* 8656 */ {(15<<2)|3,{99,111,115}}, +/* 8657 */ {(15<<2)|3,{99,111,115}}, +/* 8658 */ {(15<<2)|3,{99,111,116}}, +/* 8659 */ {(15<<2)|3,{99,111,116}}, +/* 8660 */ {(16<<2)|3,{99,111,32}}, +/* 8661 */ {(16<<2)|3,{99,111,37}}, +/* 8662 */ {(16<<2)|3,{99,111,45}}, +/* 8663 */ {(16<<2)|3,{99,111,46}}, +/* 8664 */ {(16<<2)|3,{99,111,47}}, +/* 8665 */ {(16<<2)|3,{99,111,51}}, +/* 8666 */ {(16<<2)|3,{99,111,52}}, +/* 8667 */ {(16<<2)|3,{99,111,53}}, +/* 8668 */ {(16<<2)|3,{99,111,54}}, +/* 8669 */ {(16<<2)|3,{99,111,55}}, +/* 8670 */ {(16<<2)|3,{99,111,56}}, +/* 8671 */ {(16<<2)|3,{99,111,57}}, +/* 8672 */ {(16<<2)|3,{99,111,61}}, +/* 8673 */ {(16<<2)|3,{99,111,65}}, +/* 8674 */ {(16<<2)|3,{99,111,95}}, +/* 8675 */ {(16<<2)|3,{99,111,98}}, +/* 8676 */ {(16<<2)|3,{99,111,100}}, +/* 8677 */ {(16<<2)|3,{99,111,102}}, +/* 8678 */ {(16<<2)|3,{99,111,103}}, +/* 8679 */ {(16<<2)|3,{99,111,104}}, +/* 8680 */ {(16<<2)|3,{99,111,108}}, +/* 8681 */ {(16<<2)|3,{99,111,109}}, +/* 8682 */ {(16<<2)|3,{99,111,110}}, +/* 8683 */ {(16<<2)|3,{99,111,112}}, +/* 8684 */ {(16<<2)|3,{99,111,114}}, +/* 8685 */ {(16<<2)|3,{99,111,117}}, +/* 8686 */ {(10<<2)|2,{99,111,0}}, +/* 8687 */ {(10<<2)|2,{99,111,0}}, +/* 8688 */ {(10<<2)|2,{99,111,0}}, +/* 8689 */ {(10<<2)|2,{99,111,0}}, +/* 8690 */ {(10<<2)|2,{99,111,0}}, +/* 8691 */ {(10<<2)|2,{99,111,0}}, +/* 8692 */ {(10<<2)|2,{99,111,0}}, +/* 8693 */ {(10<<2)|2,{99,111,0}}, +/* 8694 */ {(10<<2)|2,{99,111,0}}, +/* 8695 */ {(10<<2)|2,{99,111,0}}, +/* 8696 */ {(10<<2)|2,{99,111,0}}, +/* 8697 */ {(10<<2)|2,{99,111,0}}, +/* 8698 */ {(10<<2)|2,{99,111,0}}, +/* 8699 */ {(10<<2)|2,{99,111,0}}, +/* 8700 */ {(10<<2)|2,{99,111,0}}, +/* 8701 */ {(10<<2)|2,{99,111,0}}, +/* 8702 */ {(10<<2)|2,{99,111,0}}, +/* 8703 */ {(10<<2)|2,{99,111,0}}, +/* 8704 */ {(15<<2)|3,{99,115,48}}, +/* 8705 */ {(15<<2)|3,{99,115,48}}, +/* 8706 */ {(15<<2)|3,{99,115,49}}, +/* 8707 */ {(15<<2)|3,{99,115,49}}, +/* 8708 */ {(15<<2)|3,{99,115,50}}, +/* 8709 */ {(15<<2)|3,{99,115,50}}, +/* 8710 */ {(15<<2)|3,{99,115,97}}, +/* 8711 */ {(15<<2)|3,{99,115,97}}, +/* 8712 */ {(15<<2)|3,{99,115,99}}, +/* 8713 */ {(15<<2)|3,{99,115,99}}, +/* 8714 */ {(15<<2)|3,{99,115,101}}, +/* 8715 */ {(15<<2)|3,{99,115,101}}, +/* 8716 */ {(15<<2)|3,{99,115,105}}, +/* 8717 */ {(15<<2)|3,{99,115,105}}, +/* 8718 */ {(15<<2)|3,{99,115,111}}, +/* 8719 */ {(15<<2)|3,{99,115,111}}, +/* 8720 */ {(15<<2)|3,{99,115,115}}, +/* 8721 */ {(15<<2)|3,{99,115,115}}, +/* 8722 */ {(15<<2)|3,{99,115,116}}, +/* 8723 */ {(15<<2)|3,{99,115,116}}, +/* 8724 */ {(16<<2)|3,{99,115,32}}, +/* 8725 */ {(16<<2)|3,{99,115,37}}, +/* 8726 */ {(16<<2)|3,{99,115,45}}, +/* 8727 */ {(16<<2)|3,{99,115,46}}, +/* 8728 */ {(16<<2)|3,{99,115,47}}, +/* 8729 */ {(16<<2)|3,{99,115,51}}, +/* 8730 */ {(16<<2)|3,{99,115,52}}, +/* 8731 */ {(16<<2)|3,{99,115,53}}, +/* 8732 */ {(16<<2)|3,{99,115,54}}, +/* 8733 */ {(16<<2)|3,{99,115,55}}, +/* 8734 */ {(16<<2)|3,{99,115,56}}, +/* 8735 */ {(16<<2)|3,{99,115,57}}, +/* 8736 */ {(16<<2)|3,{99,115,61}}, +/* 8737 */ {(16<<2)|3,{99,115,65}}, +/* 8738 */ {(16<<2)|3,{99,115,95}}, +/* 8739 */ {(16<<2)|3,{99,115,98}}, +/* 8740 */ {(16<<2)|3,{99,115,100}}, +/* 8741 */ {(16<<2)|3,{99,115,102}}, +/* 8742 */ {(16<<2)|3,{99,115,103}}, +/* 8743 */ {(16<<2)|3,{99,115,104}}, +/* 8744 */ {(16<<2)|3,{99,115,108}}, +/* 8745 */ {(16<<2)|3,{99,115,109}}, +/* 8746 */ {(16<<2)|3,{99,115,110}}, +/* 8747 */ {(16<<2)|3,{99,115,112}}, +/* 8748 */ {(16<<2)|3,{99,115,114}}, +/* 8749 */ {(16<<2)|3,{99,115,117}}, +/* 8750 */ {(10<<2)|2,{99,115,0}}, +/* 8751 */ {(10<<2)|2,{99,115,0}}, +/* 8752 */ {(10<<2)|2,{99,115,0}}, +/* 8753 */ {(10<<2)|2,{99,115,0}}, +/* 8754 */ {(10<<2)|2,{99,115,0}}, +/* 8755 */ {(10<<2)|2,{99,115,0}}, +/* 8756 */ {(10<<2)|2,{99,115,0}}, +/* 8757 */ {(10<<2)|2,{99,115,0}}, +/* 8758 */ {(10<<2)|2,{99,115,0}}, +/* 8759 */ {(10<<2)|2,{99,115,0}}, +/* 8760 */ {(10<<2)|2,{99,115,0}}, +/* 8761 */ {(10<<2)|2,{99,115,0}}, +/* 8762 */ {(10<<2)|2,{99,115,0}}, +/* 8763 */ {(10<<2)|2,{99,115,0}}, +/* 8764 */ {(10<<2)|2,{99,115,0}}, +/* 8765 */ {(10<<2)|2,{99,115,0}}, +/* 8766 */ {(10<<2)|2,{99,115,0}}, +/* 8767 */ {(10<<2)|2,{99,115,0}}, +/* 8768 */ {(15<<2)|3,{99,116,48}}, +/* 8769 */ {(15<<2)|3,{99,116,48}}, +/* 8770 */ {(15<<2)|3,{99,116,49}}, +/* 8771 */ {(15<<2)|3,{99,116,49}}, +/* 8772 */ {(15<<2)|3,{99,116,50}}, +/* 8773 */ {(15<<2)|3,{99,116,50}}, +/* 8774 */ {(15<<2)|3,{99,116,97}}, +/* 8775 */ {(15<<2)|3,{99,116,97}}, +/* 8776 */ {(15<<2)|3,{99,116,99}}, +/* 8777 */ {(15<<2)|3,{99,116,99}}, +/* 8778 */ {(15<<2)|3,{99,116,101}}, +/* 8779 */ {(15<<2)|3,{99,116,101}}, +/* 8780 */ {(15<<2)|3,{99,116,105}}, +/* 8781 */ {(15<<2)|3,{99,116,105}}, +/* 8782 */ {(15<<2)|3,{99,116,111}}, +/* 8783 */ {(15<<2)|3,{99,116,111}}, +/* 8784 */ {(15<<2)|3,{99,116,115}}, +/* 8785 */ {(15<<2)|3,{99,116,115}}, +/* 8786 */ {(15<<2)|3,{99,116,116}}, +/* 8787 */ {(15<<2)|3,{99,116,116}}, +/* 8788 */ {(16<<2)|3,{99,116,32}}, +/* 8789 */ {(16<<2)|3,{99,116,37}}, +/* 8790 */ {(16<<2)|3,{99,116,45}}, +/* 8791 */ {(16<<2)|3,{99,116,46}}, +/* 8792 */ {(16<<2)|3,{99,116,47}}, +/* 8793 */ {(16<<2)|3,{99,116,51}}, +/* 8794 */ {(16<<2)|3,{99,116,52}}, +/* 8795 */ {(16<<2)|3,{99,116,53}}, +/* 8796 */ {(16<<2)|3,{99,116,54}}, +/* 8797 */ {(16<<2)|3,{99,116,55}}, +/* 8798 */ {(16<<2)|3,{99,116,56}}, +/* 8799 */ {(16<<2)|3,{99,116,57}}, +/* 8800 */ {(16<<2)|3,{99,116,61}}, +/* 8801 */ {(16<<2)|3,{99,116,65}}, +/* 8802 */ {(16<<2)|3,{99,116,95}}, +/* 8803 */ {(16<<2)|3,{99,116,98}}, +/* 8804 */ {(16<<2)|3,{99,116,100}}, +/* 8805 */ {(16<<2)|3,{99,116,102}}, +/* 8806 */ {(16<<2)|3,{99,116,103}}, +/* 8807 */ {(16<<2)|3,{99,116,104}}, +/* 8808 */ {(16<<2)|3,{99,116,108}}, +/* 8809 */ {(16<<2)|3,{99,116,109}}, +/* 8810 */ {(16<<2)|3,{99,116,110}}, +/* 8811 */ {(16<<2)|3,{99,116,112}}, +/* 8812 */ {(16<<2)|3,{99,116,114}}, +/* 8813 */ {(16<<2)|3,{99,116,117}}, +/* 8814 */ {(10<<2)|2,{99,116,0}}, +/* 8815 */ {(10<<2)|2,{99,116,0}}, +/* 8816 */ {(10<<2)|2,{99,116,0}}, +/* 8817 */ {(10<<2)|2,{99,116,0}}, +/* 8818 */ {(10<<2)|2,{99,116,0}}, +/* 8819 */ {(10<<2)|2,{99,116,0}}, +/* 8820 */ {(10<<2)|2,{99,116,0}}, +/* 8821 */ {(10<<2)|2,{99,116,0}}, +/* 8822 */ {(10<<2)|2,{99,116,0}}, +/* 8823 */ {(10<<2)|2,{99,116,0}}, +/* 8824 */ {(10<<2)|2,{99,116,0}}, +/* 8825 */ {(10<<2)|2,{99,116,0}}, +/* 8826 */ {(10<<2)|2,{99,116,0}}, +/* 8827 */ {(10<<2)|2,{99,116,0}}, +/* 8828 */ {(10<<2)|2,{99,116,0}}, +/* 8829 */ {(10<<2)|2,{99,116,0}}, +/* 8830 */ {(10<<2)|2,{99,116,0}}, +/* 8831 */ {(10<<2)|2,{99,116,0}}, +/* 8832 */ {(16<<2)|3,{99,32,48}}, +/* 8833 */ {(16<<2)|3,{99,32,49}}, +/* 8834 */ {(16<<2)|3,{99,32,50}}, +/* 8835 */ {(16<<2)|3,{99,32,97}}, +/* 8836 */ {(16<<2)|3,{99,32,99}}, +/* 8837 */ {(16<<2)|3,{99,32,101}}, +/* 8838 */ {(16<<2)|3,{99,32,105}}, +/* 8839 */ {(16<<2)|3,{99,32,111}}, +/* 8840 */ {(16<<2)|3,{99,32,115}}, +/* 8841 */ {(16<<2)|3,{99,32,116}}, +/* 8842 */ {(11<<2)|2,{99,32,0}}, +/* 8843 */ {(11<<2)|2,{99,32,0}}, +/* 8844 */ {(11<<2)|2,{99,32,0}}, +/* 8845 */ {(11<<2)|2,{99,32,0}}, +/* 8846 */ {(11<<2)|2,{99,32,0}}, +/* 8847 */ {(11<<2)|2,{99,32,0}}, +/* 8848 */ {(11<<2)|2,{99,32,0}}, +/* 8849 */ {(11<<2)|2,{99,32,0}}, +/* 8850 */ {(11<<2)|2,{99,32,0}}, +/* 8851 */ {(11<<2)|2,{99,32,0}}, +/* 8852 */ {(11<<2)|2,{99,32,0}}, +/* 8853 */ {(11<<2)|2,{99,32,0}}, +/* 8854 */ {(11<<2)|2,{99,32,0}}, +/* 8855 */ {(11<<2)|2,{99,32,0}}, +/* 8856 */ {(11<<2)|2,{99,32,0}}, +/* 8857 */ {(11<<2)|2,{99,32,0}}, +/* 8858 */ {(11<<2)|2,{99,32,0}}, +/* 8859 */ {(11<<2)|2,{99,32,0}}, +/* 8860 */ {(11<<2)|2,{99,32,0}}, +/* 8861 */ {(11<<2)|2,{99,32,0}}, +/* 8862 */ {(11<<2)|2,{99,32,0}}, +/* 8863 */ {(11<<2)|2,{99,32,0}}, +/* 8864 */ {(16<<2)|3,{99,37,48}}, +/* 8865 */ {(16<<2)|3,{99,37,49}}, +/* 8866 */ {(16<<2)|3,{99,37,50}}, +/* 8867 */ {(16<<2)|3,{99,37,97}}, +/* 8868 */ {(16<<2)|3,{99,37,99}}, +/* 8869 */ {(16<<2)|3,{99,37,101}}, +/* 8870 */ {(16<<2)|3,{99,37,105}}, +/* 8871 */ {(16<<2)|3,{99,37,111}}, +/* 8872 */ {(16<<2)|3,{99,37,115}}, +/* 8873 */ {(16<<2)|3,{99,37,116}}, +/* 8874 */ {(11<<2)|2,{99,37,0}}, +/* 8875 */ {(11<<2)|2,{99,37,0}}, +/* 8876 */ {(11<<2)|2,{99,37,0}}, +/* 8877 */ {(11<<2)|2,{99,37,0}}, +/* 8878 */ {(11<<2)|2,{99,37,0}}, +/* 8879 */ {(11<<2)|2,{99,37,0}}, +/* 8880 */ {(11<<2)|2,{99,37,0}}, +/* 8881 */ {(11<<2)|2,{99,37,0}}, +/* 8882 */ {(11<<2)|2,{99,37,0}}, +/* 8883 */ {(11<<2)|2,{99,37,0}}, +/* 8884 */ {(11<<2)|2,{99,37,0}}, +/* 8885 */ {(11<<2)|2,{99,37,0}}, +/* 8886 */ {(11<<2)|2,{99,37,0}}, +/* 8887 */ {(11<<2)|2,{99,37,0}}, +/* 8888 */ {(11<<2)|2,{99,37,0}}, +/* 8889 */ {(11<<2)|2,{99,37,0}}, +/* 8890 */ {(11<<2)|2,{99,37,0}}, +/* 8891 */ {(11<<2)|2,{99,37,0}}, +/* 8892 */ {(11<<2)|2,{99,37,0}}, +/* 8893 */ {(11<<2)|2,{99,37,0}}, +/* 8894 */ {(11<<2)|2,{99,37,0}}, +/* 8895 */ {(11<<2)|2,{99,37,0}}, +/* 8896 */ {(16<<2)|3,{99,45,48}}, +/* 8897 */ {(16<<2)|3,{99,45,49}}, +/* 8898 */ {(16<<2)|3,{99,45,50}}, +/* 8899 */ {(16<<2)|3,{99,45,97}}, +/* 8900 */ {(16<<2)|3,{99,45,99}}, +/* 8901 */ {(16<<2)|3,{99,45,101}}, +/* 8902 */ {(16<<2)|3,{99,45,105}}, +/* 8903 */ {(16<<2)|3,{99,45,111}}, +/* 8904 */ {(16<<2)|3,{99,45,115}}, +/* 8905 */ {(16<<2)|3,{99,45,116}}, +/* 8906 */ {(11<<2)|2,{99,45,0}}, +/* 8907 */ {(11<<2)|2,{99,45,0}}, +/* 8908 */ {(11<<2)|2,{99,45,0}}, +/* 8909 */ {(11<<2)|2,{99,45,0}}, +/* 8910 */ {(11<<2)|2,{99,45,0}}, +/* 8911 */ {(11<<2)|2,{99,45,0}}, +/* 8912 */ {(11<<2)|2,{99,45,0}}, +/* 8913 */ {(11<<2)|2,{99,45,0}}, +/* 8914 */ {(11<<2)|2,{99,45,0}}, +/* 8915 */ {(11<<2)|2,{99,45,0}}, +/* 8916 */ {(11<<2)|2,{99,45,0}}, +/* 8917 */ {(11<<2)|2,{99,45,0}}, +/* 8918 */ {(11<<2)|2,{99,45,0}}, +/* 8919 */ {(11<<2)|2,{99,45,0}}, +/* 8920 */ {(11<<2)|2,{99,45,0}}, +/* 8921 */ {(11<<2)|2,{99,45,0}}, +/* 8922 */ {(11<<2)|2,{99,45,0}}, +/* 8923 */ {(11<<2)|2,{99,45,0}}, +/* 8924 */ {(11<<2)|2,{99,45,0}}, +/* 8925 */ {(11<<2)|2,{99,45,0}}, +/* 8926 */ {(11<<2)|2,{99,45,0}}, +/* 8927 */ {(11<<2)|2,{99,45,0}}, +/* 8928 */ {(16<<2)|3,{99,46,48}}, +/* 8929 */ {(16<<2)|3,{99,46,49}}, +/* 8930 */ {(16<<2)|3,{99,46,50}}, +/* 8931 */ {(16<<2)|3,{99,46,97}}, +/* 8932 */ {(16<<2)|3,{99,46,99}}, +/* 8933 */ {(16<<2)|3,{99,46,101}}, +/* 8934 */ {(16<<2)|3,{99,46,105}}, +/* 8935 */ {(16<<2)|3,{99,46,111}}, +/* 8936 */ {(16<<2)|3,{99,46,115}}, +/* 8937 */ {(16<<2)|3,{99,46,116}}, +/* 8938 */ {(11<<2)|2,{99,46,0}}, +/* 8939 */ {(11<<2)|2,{99,46,0}}, +/* 8940 */ {(11<<2)|2,{99,46,0}}, +/* 8941 */ {(11<<2)|2,{99,46,0}}, +/* 8942 */ {(11<<2)|2,{99,46,0}}, +/* 8943 */ {(11<<2)|2,{99,46,0}}, +/* 8944 */ {(11<<2)|2,{99,46,0}}, +/* 8945 */ {(11<<2)|2,{99,46,0}}, +/* 8946 */ {(11<<2)|2,{99,46,0}}, +/* 8947 */ {(11<<2)|2,{99,46,0}}, +/* 8948 */ {(11<<2)|2,{99,46,0}}, +/* 8949 */ {(11<<2)|2,{99,46,0}}, +/* 8950 */ {(11<<2)|2,{99,46,0}}, +/* 8951 */ {(11<<2)|2,{99,46,0}}, +/* 8952 */ {(11<<2)|2,{99,46,0}}, +/* 8953 */ {(11<<2)|2,{99,46,0}}, +/* 8954 */ {(11<<2)|2,{99,46,0}}, +/* 8955 */ {(11<<2)|2,{99,46,0}}, +/* 8956 */ {(11<<2)|2,{99,46,0}}, +/* 8957 */ {(11<<2)|2,{99,46,0}}, +/* 8958 */ {(11<<2)|2,{99,46,0}}, +/* 8959 */ {(11<<2)|2,{99,46,0}}, +/* 8960 */ {(16<<2)|3,{99,47,48}}, +/* 8961 */ {(16<<2)|3,{99,47,49}}, +/* 8962 */ {(16<<2)|3,{99,47,50}}, +/* 8963 */ {(16<<2)|3,{99,47,97}}, +/* 8964 */ {(16<<2)|3,{99,47,99}}, +/* 8965 */ {(16<<2)|3,{99,47,101}}, +/* 8966 */ {(16<<2)|3,{99,47,105}}, +/* 8967 */ {(16<<2)|3,{99,47,111}}, +/* 8968 */ {(16<<2)|3,{99,47,115}}, +/* 8969 */ {(16<<2)|3,{99,47,116}}, +/* 8970 */ {(11<<2)|2,{99,47,0}}, +/* 8971 */ {(11<<2)|2,{99,47,0}}, +/* 8972 */ {(11<<2)|2,{99,47,0}}, +/* 8973 */ {(11<<2)|2,{99,47,0}}, +/* 8974 */ {(11<<2)|2,{99,47,0}}, +/* 8975 */ {(11<<2)|2,{99,47,0}}, +/* 8976 */ {(11<<2)|2,{99,47,0}}, +/* 8977 */ {(11<<2)|2,{99,47,0}}, +/* 8978 */ {(11<<2)|2,{99,47,0}}, +/* 8979 */ {(11<<2)|2,{99,47,0}}, +/* 8980 */ {(11<<2)|2,{99,47,0}}, +/* 8981 */ {(11<<2)|2,{99,47,0}}, +/* 8982 */ {(11<<2)|2,{99,47,0}}, +/* 8983 */ {(11<<2)|2,{99,47,0}}, +/* 8984 */ {(11<<2)|2,{99,47,0}}, +/* 8985 */ {(11<<2)|2,{99,47,0}}, +/* 8986 */ {(11<<2)|2,{99,47,0}}, +/* 8987 */ {(11<<2)|2,{99,47,0}}, +/* 8988 */ {(11<<2)|2,{99,47,0}}, +/* 8989 */ {(11<<2)|2,{99,47,0}}, +/* 8990 */ {(11<<2)|2,{99,47,0}}, +/* 8991 */ {(11<<2)|2,{99,47,0}}, +/* 8992 */ {(16<<2)|3,{99,51,48}}, +/* 8993 */ {(16<<2)|3,{99,51,49}}, +/* 8994 */ {(16<<2)|3,{99,51,50}}, +/* 8995 */ {(16<<2)|3,{99,51,97}}, +/* 8996 */ {(16<<2)|3,{99,51,99}}, +/* 8997 */ {(16<<2)|3,{99,51,101}}, +/* 8998 */ {(16<<2)|3,{99,51,105}}, +/* 8999 */ {(16<<2)|3,{99,51,111}}, +/* 9000 */ {(16<<2)|3,{99,51,115}}, +/* 9001 */ {(16<<2)|3,{99,51,116}}, +/* 9002 */ {(11<<2)|2,{99,51,0}}, +/* 9003 */ {(11<<2)|2,{99,51,0}}, +/* 9004 */ {(11<<2)|2,{99,51,0}}, +/* 9005 */ {(11<<2)|2,{99,51,0}}, +/* 9006 */ {(11<<2)|2,{99,51,0}}, +/* 9007 */ {(11<<2)|2,{99,51,0}}, +/* 9008 */ {(11<<2)|2,{99,51,0}}, +/* 9009 */ {(11<<2)|2,{99,51,0}}, +/* 9010 */ {(11<<2)|2,{99,51,0}}, +/* 9011 */ {(11<<2)|2,{99,51,0}}, +/* 9012 */ {(11<<2)|2,{99,51,0}}, +/* 9013 */ {(11<<2)|2,{99,51,0}}, +/* 9014 */ {(11<<2)|2,{99,51,0}}, +/* 9015 */ {(11<<2)|2,{99,51,0}}, +/* 9016 */ {(11<<2)|2,{99,51,0}}, +/* 9017 */ {(11<<2)|2,{99,51,0}}, +/* 9018 */ {(11<<2)|2,{99,51,0}}, +/* 9019 */ {(11<<2)|2,{99,51,0}}, +/* 9020 */ {(11<<2)|2,{99,51,0}}, +/* 9021 */ {(11<<2)|2,{99,51,0}}, +/* 9022 */ {(11<<2)|2,{99,51,0}}, +/* 9023 */ {(11<<2)|2,{99,51,0}}, +/* 9024 */ {(16<<2)|3,{99,52,48}}, +/* 9025 */ {(16<<2)|3,{99,52,49}}, +/* 9026 */ {(16<<2)|3,{99,52,50}}, +/* 9027 */ {(16<<2)|3,{99,52,97}}, +/* 9028 */ {(16<<2)|3,{99,52,99}}, +/* 9029 */ {(16<<2)|3,{99,52,101}}, +/* 9030 */ {(16<<2)|3,{99,52,105}}, +/* 9031 */ {(16<<2)|3,{99,52,111}}, +/* 9032 */ {(16<<2)|3,{99,52,115}}, +/* 9033 */ {(16<<2)|3,{99,52,116}}, +/* 9034 */ {(11<<2)|2,{99,52,0}}, +/* 9035 */ {(11<<2)|2,{99,52,0}}, +/* 9036 */ {(11<<2)|2,{99,52,0}}, +/* 9037 */ {(11<<2)|2,{99,52,0}}, +/* 9038 */ {(11<<2)|2,{99,52,0}}, +/* 9039 */ {(11<<2)|2,{99,52,0}}, +/* 9040 */ {(11<<2)|2,{99,52,0}}, +/* 9041 */ {(11<<2)|2,{99,52,0}}, +/* 9042 */ {(11<<2)|2,{99,52,0}}, +/* 9043 */ {(11<<2)|2,{99,52,0}}, +/* 9044 */ {(11<<2)|2,{99,52,0}}, +/* 9045 */ {(11<<2)|2,{99,52,0}}, +/* 9046 */ {(11<<2)|2,{99,52,0}}, +/* 9047 */ {(11<<2)|2,{99,52,0}}, +/* 9048 */ {(11<<2)|2,{99,52,0}}, +/* 9049 */ {(11<<2)|2,{99,52,0}}, +/* 9050 */ {(11<<2)|2,{99,52,0}}, +/* 9051 */ {(11<<2)|2,{99,52,0}}, +/* 9052 */ {(11<<2)|2,{99,52,0}}, +/* 9053 */ {(11<<2)|2,{99,52,0}}, +/* 9054 */ {(11<<2)|2,{99,52,0}}, +/* 9055 */ {(11<<2)|2,{99,52,0}}, +/* 9056 */ {(16<<2)|3,{99,53,48}}, +/* 9057 */ {(16<<2)|3,{99,53,49}}, +/* 9058 */ {(16<<2)|3,{99,53,50}}, +/* 9059 */ {(16<<2)|3,{99,53,97}}, +/* 9060 */ {(16<<2)|3,{99,53,99}}, +/* 9061 */ {(16<<2)|3,{99,53,101}}, +/* 9062 */ {(16<<2)|3,{99,53,105}}, +/* 9063 */ {(16<<2)|3,{99,53,111}}, +/* 9064 */ {(16<<2)|3,{99,53,115}}, +/* 9065 */ {(16<<2)|3,{99,53,116}}, +/* 9066 */ {(11<<2)|2,{99,53,0}}, +/* 9067 */ {(11<<2)|2,{99,53,0}}, +/* 9068 */ {(11<<2)|2,{99,53,0}}, +/* 9069 */ {(11<<2)|2,{99,53,0}}, +/* 9070 */ {(11<<2)|2,{99,53,0}}, +/* 9071 */ {(11<<2)|2,{99,53,0}}, +/* 9072 */ {(11<<2)|2,{99,53,0}}, +/* 9073 */ {(11<<2)|2,{99,53,0}}, +/* 9074 */ {(11<<2)|2,{99,53,0}}, +/* 9075 */ {(11<<2)|2,{99,53,0}}, +/* 9076 */ {(11<<2)|2,{99,53,0}}, +/* 9077 */ {(11<<2)|2,{99,53,0}}, +/* 9078 */ {(11<<2)|2,{99,53,0}}, +/* 9079 */ {(11<<2)|2,{99,53,0}}, +/* 9080 */ {(11<<2)|2,{99,53,0}}, +/* 9081 */ {(11<<2)|2,{99,53,0}}, +/* 9082 */ {(11<<2)|2,{99,53,0}}, +/* 9083 */ {(11<<2)|2,{99,53,0}}, +/* 9084 */ {(11<<2)|2,{99,53,0}}, +/* 9085 */ {(11<<2)|2,{99,53,0}}, +/* 9086 */ {(11<<2)|2,{99,53,0}}, +/* 9087 */ {(11<<2)|2,{99,53,0}}, +/* 9088 */ {(16<<2)|3,{99,54,48}}, +/* 9089 */ {(16<<2)|3,{99,54,49}}, +/* 9090 */ {(16<<2)|3,{99,54,50}}, +/* 9091 */ {(16<<2)|3,{99,54,97}}, +/* 9092 */ {(16<<2)|3,{99,54,99}}, +/* 9093 */ {(16<<2)|3,{99,54,101}}, +/* 9094 */ {(16<<2)|3,{99,54,105}}, +/* 9095 */ {(16<<2)|3,{99,54,111}}, +/* 9096 */ {(16<<2)|3,{99,54,115}}, +/* 9097 */ {(16<<2)|3,{99,54,116}}, +/* 9098 */ {(11<<2)|2,{99,54,0}}, +/* 9099 */ {(11<<2)|2,{99,54,0}}, +/* 9100 */ {(11<<2)|2,{99,54,0}}, +/* 9101 */ {(11<<2)|2,{99,54,0}}, +/* 9102 */ {(11<<2)|2,{99,54,0}}, +/* 9103 */ {(11<<2)|2,{99,54,0}}, +/* 9104 */ {(11<<2)|2,{99,54,0}}, +/* 9105 */ {(11<<2)|2,{99,54,0}}, +/* 9106 */ {(11<<2)|2,{99,54,0}}, +/* 9107 */ {(11<<2)|2,{99,54,0}}, +/* 9108 */ {(11<<2)|2,{99,54,0}}, +/* 9109 */ {(11<<2)|2,{99,54,0}}, +/* 9110 */ {(11<<2)|2,{99,54,0}}, +/* 9111 */ {(11<<2)|2,{99,54,0}}, +/* 9112 */ {(11<<2)|2,{99,54,0}}, +/* 9113 */ {(11<<2)|2,{99,54,0}}, +/* 9114 */ {(11<<2)|2,{99,54,0}}, +/* 9115 */ {(11<<2)|2,{99,54,0}}, +/* 9116 */ {(11<<2)|2,{99,54,0}}, +/* 9117 */ {(11<<2)|2,{99,54,0}}, +/* 9118 */ {(11<<2)|2,{99,54,0}}, +/* 9119 */ {(11<<2)|2,{99,54,0}}, +/* 9120 */ {(16<<2)|3,{99,55,48}}, +/* 9121 */ {(16<<2)|3,{99,55,49}}, +/* 9122 */ {(16<<2)|3,{99,55,50}}, +/* 9123 */ {(16<<2)|3,{99,55,97}}, +/* 9124 */ {(16<<2)|3,{99,55,99}}, +/* 9125 */ {(16<<2)|3,{99,55,101}}, +/* 9126 */ {(16<<2)|3,{99,55,105}}, +/* 9127 */ {(16<<2)|3,{99,55,111}}, +/* 9128 */ {(16<<2)|3,{99,55,115}}, +/* 9129 */ {(16<<2)|3,{99,55,116}}, +/* 9130 */ {(11<<2)|2,{99,55,0}}, +/* 9131 */ {(11<<2)|2,{99,55,0}}, +/* 9132 */ {(11<<2)|2,{99,55,0}}, +/* 9133 */ {(11<<2)|2,{99,55,0}}, +/* 9134 */ {(11<<2)|2,{99,55,0}}, +/* 9135 */ {(11<<2)|2,{99,55,0}}, +/* 9136 */ {(11<<2)|2,{99,55,0}}, +/* 9137 */ {(11<<2)|2,{99,55,0}}, +/* 9138 */ {(11<<2)|2,{99,55,0}}, +/* 9139 */ {(11<<2)|2,{99,55,0}}, +/* 9140 */ {(11<<2)|2,{99,55,0}}, +/* 9141 */ {(11<<2)|2,{99,55,0}}, +/* 9142 */ {(11<<2)|2,{99,55,0}}, +/* 9143 */ {(11<<2)|2,{99,55,0}}, +/* 9144 */ {(11<<2)|2,{99,55,0}}, +/* 9145 */ {(11<<2)|2,{99,55,0}}, +/* 9146 */ {(11<<2)|2,{99,55,0}}, +/* 9147 */ {(11<<2)|2,{99,55,0}}, +/* 9148 */ {(11<<2)|2,{99,55,0}}, +/* 9149 */ {(11<<2)|2,{99,55,0}}, +/* 9150 */ {(11<<2)|2,{99,55,0}}, +/* 9151 */ {(11<<2)|2,{99,55,0}}, +/* 9152 */ {(16<<2)|3,{99,56,48}}, +/* 9153 */ {(16<<2)|3,{99,56,49}}, +/* 9154 */ {(16<<2)|3,{99,56,50}}, +/* 9155 */ {(16<<2)|3,{99,56,97}}, +/* 9156 */ {(16<<2)|3,{99,56,99}}, +/* 9157 */ {(16<<2)|3,{99,56,101}}, +/* 9158 */ {(16<<2)|3,{99,56,105}}, +/* 9159 */ {(16<<2)|3,{99,56,111}}, +/* 9160 */ {(16<<2)|3,{99,56,115}}, +/* 9161 */ {(16<<2)|3,{99,56,116}}, +/* 9162 */ {(11<<2)|2,{99,56,0}}, +/* 9163 */ {(11<<2)|2,{99,56,0}}, +/* 9164 */ {(11<<2)|2,{99,56,0}}, +/* 9165 */ {(11<<2)|2,{99,56,0}}, +/* 9166 */ {(11<<2)|2,{99,56,0}}, +/* 9167 */ {(11<<2)|2,{99,56,0}}, +/* 9168 */ {(11<<2)|2,{99,56,0}}, +/* 9169 */ {(11<<2)|2,{99,56,0}}, +/* 9170 */ {(11<<2)|2,{99,56,0}}, +/* 9171 */ {(11<<2)|2,{99,56,0}}, +/* 9172 */ {(11<<2)|2,{99,56,0}}, +/* 9173 */ {(11<<2)|2,{99,56,0}}, +/* 9174 */ {(11<<2)|2,{99,56,0}}, +/* 9175 */ {(11<<2)|2,{99,56,0}}, +/* 9176 */ {(11<<2)|2,{99,56,0}}, +/* 9177 */ {(11<<2)|2,{99,56,0}}, +/* 9178 */ {(11<<2)|2,{99,56,0}}, +/* 9179 */ {(11<<2)|2,{99,56,0}}, +/* 9180 */ {(11<<2)|2,{99,56,0}}, +/* 9181 */ {(11<<2)|2,{99,56,0}}, +/* 9182 */ {(11<<2)|2,{99,56,0}}, +/* 9183 */ {(11<<2)|2,{99,56,0}}, +/* 9184 */ {(16<<2)|3,{99,57,48}}, +/* 9185 */ {(16<<2)|3,{99,57,49}}, +/* 9186 */ {(16<<2)|3,{99,57,50}}, +/* 9187 */ {(16<<2)|3,{99,57,97}}, +/* 9188 */ {(16<<2)|3,{99,57,99}}, +/* 9189 */ {(16<<2)|3,{99,57,101}}, +/* 9190 */ {(16<<2)|3,{99,57,105}}, +/* 9191 */ {(16<<2)|3,{99,57,111}}, +/* 9192 */ {(16<<2)|3,{99,57,115}}, +/* 9193 */ {(16<<2)|3,{99,57,116}}, +/* 9194 */ {(11<<2)|2,{99,57,0}}, +/* 9195 */ {(11<<2)|2,{99,57,0}}, +/* 9196 */ {(11<<2)|2,{99,57,0}}, +/* 9197 */ {(11<<2)|2,{99,57,0}}, +/* 9198 */ {(11<<2)|2,{99,57,0}}, +/* 9199 */ {(11<<2)|2,{99,57,0}}, +/* 9200 */ {(11<<2)|2,{99,57,0}}, +/* 9201 */ {(11<<2)|2,{99,57,0}}, +/* 9202 */ {(11<<2)|2,{99,57,0}}, +/* 9203 */ {(11<<2)|2,{99,57,0}}, +/* 9204 */ {(11<<2)|2,{99,57,0}}, +/* 9205 */ {(11<<2)|2,{99,57,0}}, +/* 9206 */ {(11<<2)|2,{99,57,0}}, +/* 9207 */ {(11<<2)|2,{99,57,0}}, +/* 9208 */ {(11<<2)|2,{99,57,0}}, +/* 9209 */ {(11<<2)|2,{99,57,0}}, +/* 9210 */ {(11<<2)|2,{99,57,0}}, +/* 9211 */ {(11<<2)|2,{99,57,0}}, +/* 9212 */ {(11<<2)|2,{99,57,0}}, +/* 9213 */ {(11<<2)|2,{99,57,0}}, +/* 9214 */ {(11<<2)|2,{99,57,0}}, +/* 9215 */ {(11<<2)|2,{99,57,0}}, +/* 9216 */ {(16<<2)|3,{99,61,48}}, +/* 9217 */ {(16<<2)|3,{99,61,49}}, +/* 9218 */ {(16<<2)|3,{99,61,50}}, +/* 9219 */ {(16<<2)|3,{99,61,97}}, +/* 9220 */ {(16<<2)|3,{99,61,99}}, +/* 9221 */ {(16<<2)|3,{99,61,101}}, +/* 9222 */ {(16<<2)|3,{99,61,105}}, +/* 9223 */ {(16<<2)|3,{99,61,111}}, +/* 9224 */ {(16<<2)|3,{99,61,115}}, +/* 9225 */ {(16<<2)|3,{99,61,116}}, +/* 9226 */ {(11<<2)|2,{99,61,0}}, +/* 9227 */ {(11<<2)|2,{99,61,0}}, +/* 9228 */ {(11<<2)|2,{99,61,0}}, +/* 9229 */ {(11<<2)|2,{99,61,0}}, +/* 9230 */ {(11<<2)|2,{99,61,0}}, +/* 9231 */ {(11<<2)|2,{99,61,0}}, +/* 9232 */ {(11<<2)|2,{99,61,0}}, +/* 9233 */ {(11<<2)|2,{99,61,0}}, +/* 9234 */ {(11<<2)|2,{99,61,0}}, +/* 9235 */ {(11<<2)|2,{99,61,0}}, +/* 9236 */ {(11<<2)|2,{99,61,0}}, +/* 9237 */ {(11<<2)|2,{99,61,0}}, +/* 9238 */ {(11<<2)|2,{99,61,0}}, +/* 9239 */ {(11<<2)|2,{99,61,0}}, +/* 9240 */ {(11<<2)|2,{99,61,0}}, +/* 9241 */ {(11<<2)|2,{99,61,0}}, +/* 9242 */ {(11<<2)|2,{99,61,0}}, +/* 9243 */ {(11<<2)|2,{99,61,0}}, +/* 9244 */ {(11<<2)|2,{99,61,0}}, +/* 9245 */ {(11<<2)|2,{99,61,0}}, +/* 9246 */ {(11<<2)|2,{99,61,0}}, +/* 9247 */ {(11<<2)|2,{99,61,0}}, +/* 9248 */ {(16<<2)|3,{99,65,48}}, +/* 9249 */ {(16<<2)|3,{99,65,49}}, +/* 9250 */ {(16<<2)|3,{99,65,50}}, +/* 9251 */ {(16<<2)|3,{99,65,97}}, +/* 9252 */ {(16<<2)|3,{99,65,99}}, +/* 9253 */ {(16<<2)|3,{99,65,101}}, +/* 9254 */ {(16<<2)|3,{99,65,105}}, +/* 9255 */ {(16<<2)|3,{99,65,111}}, +/* 9256 */ {(16<<2)|3,{99,65,115}}, +/* 9257 */ {(16<<2)|3,{99,65,116}}, +/* 9258 */ {(11<<2)|2,{99,65,0}}, +/* 9259 */ {(11<<2)|2,{99,65,0}}, +/* 9260 */ {(11<<2)|2,{99,65,0}}, +/* 9261 */ {(11<<2)|2,{99,65,0}}, +/* 9262 */ {(11<<2)|2,{99,65,0}}, +/* 9263 */ {(11<<2)|2,{99,65,0}}, +/* 9264 */ {(11<<2)|2,{99,65,0}}, +/* 9265 */ {(11<<2)|2,{99,65,0}}, +/* 9266 */ {(11<<2)|2,{99,65,0}}, +/* 9267 */ {(11<<2)|2,{99,65,0}}, +/* 9268 */ {(11<<2)|2,{99,65,0}}, +/* 9269 */ {(11<<2)|2,{99,65,0}}, +/* 9270 */ {(11<<2)|2,{99,65,0}}, +/* 9271 */ {(11<<2)|2,{99,65,0}}, +/* 9272 */ {(11<<2)|2,{99,65,0}}, +/* 9273 */ {(11<<2)|2,{99,65,0}}, +/* 9274 */ {(11<<2)|2,{99,65,0}}, +/* 9275 */ {(11<<2)|2,{99,65,0}}, +/* 9276 */ {(11<<2)|2,{99,65,0}}, +/* 9277 */ {(11<<2)|2,{99,65,0}}, +/* 9278 */ {(11<<2)|2,{99,65,0}}, +/* 9279 */ {(11<<2)|2,{99,65,0}}, +/* 9280 */ {(16<<2)|3,{99,95,48}}, +/* 9281 */ {(16<<2)|3,{99,95,49}}, +/* 9282 */ {(16<<2)|3,{99,95,50}}, +/* 9283 */ {(16<<2)|3,{99,95,97}}, +/* 9284 */ {(16<<2)|3,{99,95,99}}, +/* 9285 */ {(16<<2)|3,{99,95,101}}, +/* 9286 */ {(16<<2)|3,{99,95,105}}, +/* 9287 */ {(16<<2)|3,{99,95,111}}, +/* 9288 */ {(16<<2)|3,{99,95,115}}, +/* 9289 */ {(16<<2)|3,{99,95,116}}, +/* 9290 */ {(11<<2)|2,{99,95,0}}, +/* 9291 */ {(11<<2)|2,{99,95,0}}, +/* 9292 */ {(11<<2)|2,{99,95,0}}, +/* 9293 */ {(11<<2)|2,{99,95,0}}, +/* 9294 */ {(11<<2)|2,{99,95,0}}, +/* 9295 */ {(11<<2)|2,{99,95,0}}, +/* 9296 */ {(11<<2)|2,{99,95,0}}, +/* 9297 */ {(11<<2)|2,{99,95,0}}, +/* 9298 */ {(11<<2)|2,{99,95,0}}, +/* 9299 */ {(11<<2)|2,{99,95,0}}, +/* 9300 */ {(11<<2)|2,{99,95,0}}, +/* 9301 */ {(11<<2)|2,{99,95,0}}, +/* 9302 */ {(11<<2)|2,{99,95,0}}, +/* 9303 */ {(11<<2)|2,{99,95,0}}, +/* 9304 */ {(11<<2)|2,{99,95,0}}, +/* 9305 */ {(11<<2)|2,{99,95,0}}, +/* 9306 */ {(11<<2)|2,{99,95,0}}, +/* 9307 */ {(11<<2)|2,{99,95,0}}, +/* 9308 */ {(11<<2)|2,{99,95,0}}, +/* 9309 */ {(11<<2)|2,{99,95,0}}, +/* 9310 */ {(11<<2)|2,{99,95,0}}, +/* 9311 */ {(11<<2)|2,{99,95,0}}, +/* 9312 */ {(16<<2)|3,{99,98,48}}, +/* 9313 */ {(16<<2)|3,{99,98,49}}, +/* 9314 */ {(16<<2)|3,{99,98,50}}, +/* 9315 */ {(16<<2)|3,{99,98,97}}, +/* 9316 */ {(16<<2)|3,{99,98,99}}, +/* 9317 */ {(16<<2)|3,{99,98,101}}, +/* 9318 */ {(16<<2)|3,{99,98,105}}, +/* 9319 */ {(16<<2)|3,{99,98,111}}, +/* 9320 */ {(16<<2)|3,{99,98,115}}, +/* 9321 */ {(16<<2)|3,{99,98,116}}, +/* 9322 */ {(11<<2)|2,{99,98,0}}, +/* 9323 */ {(11<<2)|2,{99,98,0}}, +/* 9324 */ {(11<<2)|2,{99,98,0}}, +/* 9325 */ {(11<<2)|2,{99,98,0}}, +/* 9326 */ {(11<<2)|2,{99,98,0}}, +/* 9327 */ {(11<<2)|2,{99,98,0}}, +/* 9328 */ {(11<<2)|2,{99,98,0}}, +/* 9329 */ {(11<<2)|2,{99,98,0}}, +/* 9330 */ {(11<<2)|2,{99,98,0}}, +/* 9331 */ {(11<<2)|2,{99,98,0}}, +/* 9332 */ {(11<<2)|2,{99,98,0}}, +/* 9333 */ {(11<<2)|2,{99,98,0}}, +/* 9334 */ {(11<<2)|2,{99,98,0}}, +/* 9335 */ {(11<<2)|2,{99,98,0}}, +/* 9336 */ {(11<<2)|2,{99,98,0}}, +/* 9337 */ {(11<<2)|2,{99,98,0}}, +/* 9338 */ {(11<<2)|2,{99,98,0}}, +/* 9339 */ {(11<<2)|2,{99,98,0}}, +/* 9340 */ {(11<<2)|2,{99,98,0}}, +/* 9341 */ {(11<<2)|2,{99,98,0}}, +/* 9342 */ {(11<<2)|2,{99,98,0}}, +/* 9343 */ {(11<<2)|2,{99,98,0}}, +/* 9344 */ {(16<<2)|3,{99,100,48}}, +/* 9345 */ {(16<<2)|3,{99,100,49}}, +/* 9346 */ {(16<<2)|3,{99,100,50}}, +/* 9347 */ {(16<<2)|3,{99,100,97}}, +/* 9348 */ {(16<<2)|3,{99,100,99}}, +/* 9349 */ {(16<<2)|3,{99,100,101}}, +/* 9350 */ {(16<<2)|3,{99,100,105}}, +/* 9351 */ {(16<<2)|3,{99,100,111}}, +/* 9352 */ {(16<<2)|3,{99,100,115}}, +/* 9353 */ {(16<<2)|3,{99,100,116}}, +/* 9354 */ {(11<<2)|2,{99,100,0}}, +/* 9355 */ {(11<<2)|2,{99,100,0}}, +/* 9356 */ {(11<<2)|2,{99,100,0}}, +/* 9357 */ {(11<<2)|2,{99,100,0}}, +/* 9358 */ {(11<<2)|2,{99,100,0}}, +/* 9359 */ {(11<<2)|2,{99,100,0}}, +/* 9360 */ {(11<<2)|2,{99,100,0}}, +/* 9361 */ {(11<<2)|2,{99,100,0}}, +/* 9362 */ {(11<<2)|2,{99,100,0}}, +/* 9363 */ {(11<<2)|2,{99,100,0}}, +/* 9364 */ {(11<<2)|2,{99,100,0}}, +/* 9365 */ {(11<<2)|2,{99,100,0}}, +/* 9366 */ {(11<<2)|2,{99,100,0}}, +/* 9367 */ {(11<<2)|2,{99,100,0}}, +/* 9368 */ {(11<<2)|2,{99,100,0}}, +/* 9369 */ {(11<<2)|2,{99,100,0}}, +/* 9370 */ {(11<<2)|2,{99,100,0}}, +/* 9371 */ {(11<<2)|2,{99,100,0}}, +/* 9372 */ {(11<<2)|2,{99,100,0}}, +/* 9373 */ {(11<<2)|2,{99,100,0}}, +/* 9374 */ {(11<<2)|2,{99,100,0}}, +/* 9375 */ {(11<<2)|2,{99,100,0}}, +/* 9376 */ {(16<<2)|3,{99,102,48}}, +/* 9377 */ {(16<<2)|3,{99,102,49}}, +/* 9378 */ {(16<<2)|3,{99,102,50}}, +/* 9379 */ {(16<<2)|3,{99,102,97}}, +/* 9380 */ {(16<<2)|3,{99,102,99}}, +/* 9381 */ {(16<<2)|3,{99,102,101}}, +/* 9382 */ {(16<<2)|3,{99,102,105}}, +/* 9383 */ {(16<<2)|3,{99,102,111}}, +/* 9384 */ {(16<<2)|3,{99,102,115}}, +/* 9385 */ {(16<<2)|3,{99,102,116}}, +/* 9386 */ {(11<<2)|2,{99,102,0}}, +/* 9387 */ {(11<<2)|2,{99,102,0}}, +/* 9388 */ {(11<<2)|2,{99,102,0}}, +/* 9389 */ {(11<<2)|2,{99,102,0}}, +/* 9390 */ {(11<<2)|2,{99,102,0}}, +/* 9391 */ {(11<<2)|2,{99,102,0}}, +/* 9392 */ {(11<<2)|2,{99,102,0}}, +/* 9393 */ {(11<<2)|2,{99,102,0}}, +/* 9394 */ {(11<<2)|2,{99,102,0}}, +/* 9395 */ {(11<<2)|2,{99,102,0}}, +/* 9396 */ {(11<<2)|2,{99,102,0}}, +/* 9397 */ {(11<<2)|2,{99,102,0}}, +/* 9398 */ {(11<<2)|2,{99,102,0}}, +/* 9399 */ {(11<<2)|2,{99,102,0}}, +/* 9400 */ {(11<<2)|2,{99,102,0}}, +/* 9401 */ {(11<<2)|2,{99,102,0}}, +/* 9402 */ {(11<<2)|2,{99,102,0}}, +/* 9403 */ {(11<<2)|2,{99,102,0}}, +/* 9404 */ {(11<<2)|2,{99,102,0}}, +/* 9405 */ {(11<<2)|2,{99,102,0}}, +/* 9406 */ {(11<<2)|2,{99,102,0}}, +/* 9407 */ {(11<<2)|2,{99,102,0}}, +/* 9408 */ {(16<<2)|3,{99,103,48}}, +/* 9409 */ {(16<<2)|3,{99,103,49}}, +/* 9410 */ {(16<<2)|3,{99,103,50}}, +/* 9411 */ {(16<<2)|3,{99,103,97}}, +/* 9412 */ {(16<<2)|3,{99,103,99}}, +/* 9413 */ {(16<<2)|3,{99,103,101}}, +/* 9414 */ {(16<<2)|3,{99,103,105}}, +/* 9415 */ {(16<<2)|3,{99,103,111}}, +/* 9416 */ {(16<<2)|3,{99,103,115}}, +/* 9417 */ {(16<<2)|3,{99,103,116}}, +/* 9418 */ {(11<<2)|2,{99,103,0}}, +/* 9419 */ {(11<<2)|2,{99,103,0}}, +/* 9420 */ {(11<<2)|2,{99,103,0}}, +/* 9421 */ {(11<<2)|2,{99,103,0}}, +/* 9422 */ {(11<<2)|2,{99,103,0}}, +/* 9423 */ {(11<<2)|2,{99,103,0}}, +/* 9424 */ {(11<<2)|2,{99,103,0}}, +/* 9425 */ {(11<<2)|2,{99,103,0}}, +/* 9426 */ {(11<<2)|2,{99,103,0}}, +/* 9427 */ {(11<<2)|2,{99,103,0}}, +/* 9428 */ {(11<<2)|2,{99,103,0}}, +/* 9429 */ {(11<<2)|2,{99,103,0}}, +/* 9430 */ {(11<<2)|2,{99,103,0}}, +/* 9431 */ {(11<<2)|2,{99,103,0}}, +/* 9432 */ {(11<<2)|2,{99,103,0}}, +/* 9433 */ {(11<<2)|2,{99,103,0}}, +/* 9434 */ {(11<<2)|2,{99,103,0}}, +/* 9435 */ {(11<<2)|2,{99,103,0}}, +/* 9436 */ {(11<<2)|2,{99,103,0}}, +/* 9437 */ {(11<<2)|2,{99,103,0}}, +/* 9438 */ {(11<<2)|2,{99,103,0}}, +/* 9439 */ {(11<<2)|2,{99,103,0}}, +/* 9440 */ {(16<<2)|3,{99,104,48}}, +/* 9441 */ {(16<<2)|3,{99,104,49}}, +/* 9442 */ {(16<<2)|3,{99,104,50}}, +/* 9443 */ {(16<<2)|3,{99,104,97}}, +/* 9444 */ {(16<<2)|3,{99,104,99}}, +/* 9445 */ {(16<<2)|3,{99,104,101}}, +/* 9446 */ {(16<<2)|3,{99,104,105}}, +/* 9447 */ {(16<<2)|3,{99,104,111}}, +/* 9448 */ {(16<<2)|3,{99,104,115}}, +/* 9449 */ {(16<<2)|3,{99,104,116}}, +/* 9450 */ {(11<<2)|2,{99,104,0}}, +/* 9451 */ {(11<<2)|2,{99,104,0}}, +/* 9452 */ {(11<<2)|2,{99,104,0}}, +/* 9453 */ {(11<<2)|2,{99,104,0}}, +/* 9454 */ {(11<<2)|2,{99,104,0}}, +/* 9455 */ {(11<<2)|2,{99,104,0}}, +/* 9456 */ {(11<<2)|2,{99,104,0}}, +/* 9457 */ {(11<<2)|2,{99,104,0}}, +/* 9458 */ {(11<<2)|2,{99,104,0}}, +/* 9459 */ {(11<<2)|2,{99,104,0}}, +/* 9460 */ {(11<<2)|2,{99,104,0}}, +/* 9461 */ {(11<<2)|2,{99,104,0}}, +/* 9462 */ {(11<<2)|2,{99,104,0}}, +/* 9463 */ {(11<<2)|2,{99,104,0}}, +/* 9464 */ {(11<<2)|2,{99,104,0}}, +/* 9465 */ {(11<<2)|2,{99,104,0}}, +/* 9466 */ {(11<<2)|2,{99,104,0}}, +/* 9467 */ {(11<<2)|2,{99,104,0}}, +/* 9468 */ {(11<<2)|2,{99,104,0}}, +/* 9469 */ {(11<<2)|2,{99,104,0}}, +/* 9470 */ {(11<<2)|2,{99,104,0}}, +/* 9471 */ {(11<<2)|2,{99,104,0}}, +/* 9472 */ {(16<<2)|3,{99,108,48}}, +/* 9473 */ {(16<<2)|3,{99,108,49}}, +/* 9474 */ {(16<<2)|3,{99,108,50}}, +/* 9475 */ {(16<<2)|3,{99,108,97}}, +/* 9476 */ {(16<<2)|3,{99,108,99}}, +/* 9477 */ {(16<<2)|3,{99,108,101}}, +/* 9478 */ {(16<<2)|3,{99,108,105}}, +/* 9479 */ {(16<<2)|3,{99,108,111}}, +/* 9480 */ {(16<<2)|3,{99,108,115}}, +/* 9481 */ {(16<<2)|3,{99,108,116}}, +/* 9482 */ {(11<<2)|2,{99,108,0}}, +/* 9483 */ {(11<<2)|2,{99,108,0}}, +/* 9484 */ {(11<<2)|2,{99,108,0}}, +/* 9485 */ {(11<<2)|2,{99,108,0}}, +/* 9486 */ {(11<<2)|2,{99,108,0}}, +/* 9487 */ {(11<<2)|2,{99,108,0}}, +/* 9488 */ {(11<<2)|2,{99,108,0}}, +/* 9489 */ {(11<<2)|2,{99,108,0}}, +/* 9490 */ {(11<<2)|2,{99,108,0}}, +/* 9491 */ {(11<<2)|2,{99,108,0}}, +/* 9492 */ {(11<<2)|2,{99,108,0}}, +/* 9493 */ {(11<<2)|2,{99,108,0}}, +/* 9494 */ {(11<<2)|2,{99,108,0}}, +/* 9495 */ {(11<<2)|2,{99,108,0}}, +/* 9496 */ {(11<<2)|2,{99,108,0}}, +/* 9497 */ {(11<<2)|2,{99,108,0}}, +/* 9498 */ {(11<<2)|2,{99,108,0}}, +/* 9499 */ {(11<<2)|2,{99,108,0}}, +/* 9500 */ {(11<<2)|2,{99,108,0}}, +/* 9501 */ {(11<<2)|2,{99,108,0}}, +/* 9502 */ {(11<<2)|2,{99,108,0}}, +/* 9503 */ {(11<<2)|2,{99,108,0}}, +/* 9504 */ {(16<<2)|3,{99,109,48}}, +/* 9505 */ {(16<<2)|3,{99,109,49}}, +/* 9506 */ {(16<<2)|3,{99,109,50}}, +/* 9507 */ {(16<<2)|3,{99,109,97}}, +/* 9508 */ {(16<<2)|3,{99,109,99}}, +/* 9509 */ {(16<<2)|3,{99,109,101}}, +/* 9510 */ {(16<<2)|3,{99,109,105}}, +/* 9511 */ {(16<<2)|3,{99,109,111}}, +/* 9512 */ {(16<<2)|3,{99,109,115}}, +/* 9513 */ {(16<<2)|3,{99,109,116}}, +/* 9514 */ {(11<<2)|2,{99,109,0}}, +/* 9515 */ {(11<<2)|2,{99,109,0}}, +/* 9516 */ {(11<<2)|2,{99,109,0}}, +/* 9517 */ {(11<<2)|2,{99,109,0}}, +/* 9518 */ {(11<<2)|2,{99,109,0}}, +/* 9519 */ {(11<<2)|2,{99,109,0}}, +/* 9520 */ {(11<<2)|2,{99,109,0}}, +/* 9521 */ {(11<<2)|2,{99,109,0}}, +/* 9522 */ {(11<<2)|2,{99,109,0}}, +/* 9523 */ {(11<<2)|2,{99,109,0}}, +/* 9524 */ {(11<<2)|2,{99,109,0}}, +/* 9525 */ {(11<<2)|2,{99,109,0}}, +/* 9526 */ {(11<<2)|2,{99,109,0}}, +/* 9527 */ {(11<<2)|2,{99,109,0}}, +/* 9528 */ {(11<<2)|2,{99,109,0}}, +/* 9529 */ {(11<<2)|2,{99,109,0}}, +/* 9530 */ {(11<<2)|2,{99,109,0}}, +/* 9531 */ {(11<<2)|2,{99,109,0}}, +/* 9532 */ {(11<<2)|2,{99,109,0}}, +/* 9533 */ {(11<<2)|2,{99,109,0}}, +/* 9534 */ {(11<<2)|2,{99,109,0}}, +/* 9535 */ {(11<<2)|2,{99,109,0}}, +/* 9536 */ {(16<<2)|3,{99,110,48}}, +/* 9537 */ {(16<<2)|3,{99,110,49}}, +/* 9538 */ {(16<<2)|3,{99,110,50}}, +/* 9539 */ {(16<<2)|3,{99,110,97}}, +/* 9540 */ {(16<<2)|3,{99,110,99}}, +/* 9541 */ {(16<<2)|3,{99,110,101}}, +/* 9542 */ {(16<<2)|3,{99,110,105}}, +/* 9543 */ {(16<<2)|3,{99,110,111}}, +/* 9544 */ {(16<<2)|3,{99,110,115}}, +/* 9545 */ {(16<<2)|3,{99,110,116}}, +/* 9546 */ {(11<<2)|2,{99,110,0}}, +/* 9547 */ {(11<<2)|2,{99,110,0}}, +/* 9548 */ {(11<<2)|2,{99,110,0}}, +/* 9549 */ {(11<<2)|2,{99,110,0}}, +/* 9550 */ {(11<<2)|2,{99,110,0}}, +/* 9551 */ {(11<<2)|2,{99,110,0}}, +/* 9552 */ {(11<<2)|2,{99,110,0}}, +/* 9553 */ {(11<<2)|2,{99,110,0}}, +/* 9554 */ {(11<<2)|2,{99,110,0}}, +/* 9555 */ {(11<<2)|2,{99,110,0}}, +/* 9556 */ {(11<<2)|2,{99,110,0}}, +/* 9557 */ {(11<<2)|2,{99,110,0}}, +/* 9558 */ {(11<<2)|2,{99,110,0}}, +/* 9559 */ {(11<<2)|2,{99,110,0}}, +/* 9560 */ {(11<<2)|2,{99,110,0}}, +/* 9561 */ {(11<<2)|2,{99,110,0}}, +/* 9562 */ {(11<<2)|2,{99,110,0}}, +/* 9563 */ {(11<<2)|2,{99,110,0}}, +/* 9564 */ {(11<<2)|2,{99,110,0}}, +/* 9565 */ {(11<<2)|2,{99,110,0}}, +/* 9566 */ {(11<<2)|2,{99,110,0}}, +/* 9567 */ {(11<<2)|2,{99,110,0}}, +/* 9568 */ {(16<<2)|3,{99,112,48}}, +/* 9569 */ {(16<<2)|3,{99,112,49}}, +/* 9570 */ {(16<<2)|3,{99,112,50}}, +/* 9571 */ {(16<<2)|3,{99,112,97}}, +/* 9572 */ {(16<<2)|3,{99,112,99}}, +/* 9573 */ {(16<<2)|3,{99,112,101}}, +/* 9574 */ {(16<<2)|3,{99,112,105}}, +/* 9575 */ {(16<<2)|3,{99,112,111}}, +/* 9576 */ {(16<<2)|3,{99,112,115}}, +/* 9577 */ {(16<<2)|3,{99,112,116}}, +/* 9578 */ {(11<<2)|2,{99,112,0}}, +/* 9579 */ {(11<<2)|2,{99,112,0}}, +/* 9580 */ {(11<<2)|2,{99,112,0}}, +/* 9581 */ {(11<<2)|2,{99,112,0}}, +/* 9582 */ {(11<<2)|2,{99,112,0}}, +/* 9583 */ {(11<<2)|2,{99,112,0}}, +/* 9584 */ {(11<<2)|2,{99,112,0}}, +/* 9585 */ {(11<<2)|2,{99,112,0}}, +/* 9586 */ {(11<<2)|2,{99,112,0}}, +/* 9587 */ {(11<<2)|2,{99,112,0}}, +/* 9588 */ {(11<<2)|2,{99,112,0}}, +/* 9589 */ {(11<<2)|2,{99,112,0}}, +/* 9590 */ {(11<<2)|2,{99,112,0}}, +/* 9591 */ {(11<<2)|2,{99,112,0}}, +/* 9592 */ {(11<<2)|2,{99,112,0}}, +/* 9593 */ {(11<<2)|2,{99,112,0}}, +/* 9594 */ {(11<<2)|2,{99,112,0}}, +/* 9595 */ {(11<<2)|2,{99,112,0}}, +/* 9596 */ {(11<<2)|2,{99,112,0}}, +/* 9597 */ {(11<<2)|2,{99,112,0}}, +/* 9598 */ {(11<<2)|2,{99,112,0}}, +/* 9599 */ {(11<<2)|2,{99,112,0}}, +/* 9600 */ {(16<<2)|3,{99,114,48}}, +/* 9601 */ {(16<<2)|3,{99,114,49}}, +/* 9602 */ {(16<<2)|3,{99,114,50}}, +/* 9603 */ {(16<<2)|3,{99,114,97}}, +/* 9604 */ {(16<<2)|3,{99,114,99}}, +/* 9605 */ {(16<<2)|3,{99,114,101}}, +/* 9606 */ {(16<<2)|3,{99,114,105}}, +/* 9607 */ {(16<<2)|3,{99,114,111}}, +/* 9608 */ {(16<<2)|3,{99,114,115}}, +/* 9609 */ {(16<<2)|3,{99,114,116}}, +/* 9610 */ {(11<<2)|2,{99,114,0}}, +/* 9611 */ {(11<<2)|2,{99,114,0}}, +/* 9612 */ {(11<<2)|2,{99,114,0}}, +/* 9613 */ {(11<<2)|2,{99,114,0}}, +/* 9614 */ {(11<<2)|2,{99,114,0}}, +/* 9615 */ {(11<<2)|2,{99,114,0}}, +/* 9616 */ {(11<<2)|2,{99,114,0}}, +/* 9617 */ {(11<<2)|2,{99,114,0}}, +/* 9618 */ {(11<<2)|2,{99,114,0}}, +/* 9619 */ {(11<<2)|2,{99,114,0}}, +/* 9620 */ {(11<<2)|2,{99,114,0}}, +/* 9621 */ {(11<<2)|2,{99,114,0}}, +/* 9622 */ {(11<<2)|2,{99,114,0}}, +/* 9623 */ {(11<<2)|2,{99,114,0}}, +/* 9624 */ {(11<<2)|2,{99,114,0}}, +/* 9625 */ {(11<<2)|2,{99,114,0}}, +/* 9626 */ {(11<<2)|2,{99,114,0}}, +/* 9627 */ {(11<<2)|2,{99,114,0}}, +/* 9628 */ {(11<<2)|2,{99,114,0}}, +/* 9629 */ {(11<<2)|2,{99,114,0}}, +/* 9630 */ {(11<<2)|2,{99,114,0}}, +/* 9631 */ {(11<<2)|2,{99,114,0}}, +/* 9632 */ {(16<<2)|3,{99,117,48}}, +/* 9633 */ {(16<<2)|3,{99,117,49}}, +/* 9634 */ {(16<<2)|3,{99,117,50}}, +/* 9635 */ {(16<<2)|3,{99,117,97}}, +/* 9636 */ {(16<<2)|3,{99,117,99}}, +/* 9637 */ {(16<<2)|3,{99,117,101}}, +/* 9638 */ {(16<<2)|3,{99,117,105}}, +/* 9639 */ {(16<<2)|3,{99,117,111}}, +/* 9640 */ {(16<<2)|3,{99,117,115}}, +/* 9641 */ {(16<<2)|3,{99,117,116}}, +/* 9642 */ {(11<<2)|2,{99,117,0}}, +/* 9643 */ {(11<<2)|2,{99,117,0}}, +/* 9644 */ {(11<<2)|2,{99,117,0}}, +/* 9645 */ {(11<<2)|2,{99,117,0}}, +/* 9646 */ {(11<<2)|2,{99,117,0}}, +/* 9647 */ {(11<<2)|2,{99,117,0}}, +/* 9648 */ {(11<<2)|2,{99,117,0}}, +/* 9649 */ {(11<<2)|2,{99,117,0}}, +/* 9650 */ {(11<<2)|2,{99,117,0}}, +/* 9651 */ {(11<<2)|2,{99,117,0}}, +/* 9652 */ {(11<<2)|2,{99,117,0}}, +/* 9653 */ {(11<<2)|2,{99,117,0}}, +/* 9654 */ {(11<<2)|2,{99,117,0}}, +/* 9655 */ {(11<<2)|2,{99,117,0}}, +/* 9656 */ {(11<<2)|2,{99,117,0}}, +/* 9657 */ {(11<<2)|2,{99,117,0}}, +/* 9658 */ {(11<<2)|2,{99,117,0}}, +/* 9659 */ {(11<<2)|2,{99,117,0}}, +/* 9660 */ {(11<<2)|2,{99,117,0}}, +/* 9661 */ {(11<<2)|2,{99,117,0}}, +/* 9662 */ {(11<<2)|2,{99,117,0}}, +/* 9663 */ {(11<<2)|2,{99,117,0}}, +/* 9664 */ {(12<<2)|2,{99,58,0}}, +/* 9665 */ {(12<<2)|2,{99,58,0}}, +/* 9666 */ {(12<<2)|2,{99,58,0}}, +/* 9667 */ {(12<<2)|2,{99,58,0}}, +/* 9668 */ {(12<<2)|2,{99,58,0}}, +/* 9669 */ {(12<<2)|2,{99,58,0}}, +/* 9670 */ {(12<<2)|2,{99,58,0}}, +/* 9671 */ {(12<<2)|2,{99,58,0}}, +/* 9672 */ {(12<<2)|2,{99,58,0}}, +/* 9673 */ {(12<<2)|2,{99,58,0}}, +/* 9674 */ {(12<<2)|2,{99,58,0}}, +/* 9675 */ {(12<<2)|2,{99,58,0}}, +/* 9676 */ {(12<<2)|2,{99,58,0}}, +/* 9677 */ {(12<<2)|2,{99,58,0}}, +/* 9678 */ {(12<<2)|2,{99,58,0}}, +/* 9679 */ {(12<<2)|2,{99,58,0}}, +/* 9680 */ {(12<<2)|2,{99,66,0}}, +/* 9681 */ {(12<<2)|2,{99,66,0}}, +/* 9682 */ {(12<<2)|2,{99,66,0}}, +/* 9683 */ {(12<<2)|2,{99,66,0}}, +/* 9684 */ {(12<<2)|2,{99,66,0}}, +/* 9685 */ {(12<<2)|2,{99,66,0}}, +/* 9686 */ {(12<<2)|2,{99,66,0}}, +/* 9687 */ {(12<<2)|2,{99,66,0}}, +/* 9688 */ {(12<<2)|2,{99,66,0}}, +/* 9689 */ {(12<<2)|2,{99,66,0}}, +/* 9690 */ {(12<<2)|2,{99,66,0}}, +/* 9691 */ {(12<<2)|2,{99,66,0}}, +/* 9692 */ {(12<<2)|2,{99,66,0}}, +/* 9693 */ {(12<<2)|2,{99,66,0}}, +/* 9694 */ {(12<<2)|2,{99,66,0}}, +/* 9695 */ {(12<<2)|2,{99,66,0}}, +/* 9696 */ {(12<<2)|2,{99,67,0}}, +/* 9697 */ {(12<<2)|2,{99,67,0}}, +/* 9698 */ {(12<<2)|2,{99,67,0}}, +/* 9699 */ {(12<<2)|2,{99,67,0}}, +/* 9700 */ {(12<<2)|2,{99,67,0}}, +/* 9701 */ {(12<<2)|2,{99,67,0}}, +/* 9702 */ {(12<<2)|2,{99,67,0}}, +/* 9703 */ {(12<<2)|2,{99,67,0}}, +/* 9704 */ {(12<<2)|2,{99,67,0}}, +/* 9705 */ {(12<<2)|2,{99,67,0}}, +/* 9706 */ {(12<<2)|2,{99,67,0}}, +/* 9707 */ {(12<<2)|2,{99,67,0}}, +/* 9708 */ {(12<<2)|2,{99,67,0}}, +/* 9709 */ {(12<<2)|2,{99,67,0}}, +/* 9710 */ {(12<<2)|2,{99,67,0}}, +/* 9711 */ {(12<<2)|2,{99,67,0}}, +/* 9712 */ {(12<<2)|2,{99,68,0}}, +/* 9713 */ {(12<<2)|2,{99,68,0}}, +/* 9714 */ {(12<<2)|2,{99,68,0}}, +/* 9715 */ {(12<<2)|2,{99,68,0}}, +/* 9716 */ {(12<<2)|2,{99,68,0}}, +/* 9717 */ {(12<<2)|2,{99,68,0}}, +/* 9718 */ {(12<<2)|2,{99,68,0}}, +/* 9719 */ {(12<<2)|2,{99,68,0}}, +/* 9720 */ {(12<<2)|2,{99,68,0}}, +/* 9721 */ {(12<<2)|2,{99,68,0}}, +/* 9722 */ {(12<<2)|2,{99,68,0}}, +/* 9723 */ {(12<<2)|2,{99,68,0}}, +/* 9724 */ {(12<<2)|2,{99,68,0}}, +/* 9725 */ {(12<<2)|2,{99,68,0}}, +/* 9726 */ {(12<<2)|2,{99,68,0}}, +/* 9727 */ {(12<<2)|2,{99,68,0}}, +/* 9728 */ {(12<<2)|2,{99,69,0}}, +/* 9729 */ {(12<<2)|2,{99,69,0}}, +/* 9730 */ {(12<<2)|2,{99,69,0}}, +/* 9731 */ {(12<<2)|2,{99,69,0}}, +/* 9732 */ {(12<<2)|2,{99,69,0}}, +/* 9733 */ {(12<<2)|2,{99,69,0}}, +/* 9734 */ {(12<<2)|2,{99,69,0}}, +/* 9735 */ {(12<<2)|2,{99,69,0}}, +/* 9736 */ {(12<<2)|2,{99,69,0}}, +/* 9737 */ {(12<<2)|2,{99,69,0}}, +/* 9738 */ {(12<<2)|2,{99,69,0}}, +/* 9739 */ {(12<<2)|2,{99,69,0}}, +/* 9740 */ {(12<<2)|2,{99,69,0}}, +/* 9741 */ {(12<<2)|2,{99,69,0}}, +/* 9742 */ {(12<<2)|2,{99,69,0}}, +/* 9743 */ {(12<<2)|2,{99,69,0}}, +/* 9744 */ {(12<<2)|2,{99,70,0}}, +/* 9745 */ {(12<<2)|2,{99,70,0}}, +/* 9746 */ {(12<<2)|2,{99,70,0}}, +/* 9747 */ {(12<<2)|2,{99,70,0}}, +/* 9748 */ {(12<<2)|2,{99,70,0}}, +/* 9749 */ {(12<<2)|2,{99,70,0}}, +/* 9750 */ {(12<<2)|2,{99,70,0}}, +/* 9751 */ {(12<<2)|2,{99,70,0}}, +/* 9752 */ {(12<<2)|2,{99,70,0}}, +/* 9753 */ {(12<<2)|2,{99,70,0}}, +/* 9754 */ {(12<<2)|2,{99,70,0}}, +/* 9755 */ {(12<<2)|2,{99,70,0}}, +/* 9756 */ {(12<<2)|2,{99,70,0}}, +/* 9757 */ {(12<<2)|2,{99,70,0}}, +/* 9758 */ {(12<<2)|2,{99,70,0}}, +/* 9759 */ {(12<<2)|2,{99,70,0}}, +/* 9760 */ {(12<<2)|2,{99,71,0}}, +/* 9761 */ {(12<<2)|2,{99,71,0}}, +/* 9762 */ {(12<<2)|2,{99,71,0}}, +/* 9763 */ {(12<<2)|2,{99,71,0}}, +/* 9764 */ {(12<<2)|2,{99,71,0}}, +/* 9765 */ {(12<<2)|2,{99,71,0}}, +/* 9766 */ {(12<<2)|2,{99,71,0}}, +/* 9767 */ {(12<<2)|2,{99,71,0}}, +/* 9768 */ {(12<<2)|2,{99,71,0}}, +/* 9769 */ {(12<<2)|2,{99,71,0}}, +/* 9770 */ {(12<<2)|2,{99,71,0}}, +/* 9771 */ {(12<<2)|2,{99,71,0}}, +/* 9772 */ {(12<<2)|2,{99,71,0}}, +/* 9773 */ {(12<<2)|2,{99,71,0}}, +/* 9774 */ {(12<<2)|2,{99,71,0}}, +/* 9775 */ {(12<<2)|2,{99,71,0}}, +/* 9776 */ {(12<<2)|2,{99,72,0}}, +/* 9777 */ {(12<<2)|2,{99,72,0}}, +/* 9778 */ {(12<<2)|2,{99,72,0}}, +/* 9779 */ {(12<<2)|2,{99,72,0}}, +/* 9780 */ {(12<<2)|2,{99,72,0}}, +/* 9781 */ {(12<<2)|2,{99,72,0}}, +/* 9782 */ {(12<<2)|2,{99,72,0}}, +/* 9783 */ {(12<<2)|2,{99,72,0}}, +/* 9784 */ {(12<<2)|2,{99,72,0}}, +/* 9785 */ {(12<<2)|2,{99,72,0}}, +/* 9786 */ {(12<<2)|2,{99,72,0}}, +/* 9787 */ {(12<<2)|2,{99,72,0}}, +/* 9788 */ {(12<<2)|2,{99,72,0}}, +/* 9789 */ {(12<<2)|2,{99,72,0}}, +/* 9790 */ {(12<<2)|2,{99,72,0}}, +/* 9791 */ {(12<<2)|2,{99,72,0}}, +/* 9792 */ {(12<<2)|2,{99,73,0}}, +/* 9793 */ {(12<<2)|2,{99,73,0}}, +/* 9794 */ {(12<<2)|2,{99,73,0}}, +/* 9795 */ {(12<<2)|2,{99,73,0}}, +/* 9796 */ {(12<<2)|2,{99,73,0}}, +/* 9797 */ {(12<<2)|2,{99,73,0}}, +/* 9798 */ {(12<<2)|2,{99,73,0}}, +/* 9799 */ {(12<<2)|2,{99,73,0}}, +/* 9800 */ {(12<<2)|2,{99,73,0}}, +/* 9801 */ {(12<<2)|2,{99,73,0}}, +/* 9802 */ {(12<<2)|2,{99,73,0}}, +/* 9803 */ {(12<<2)|2,{99,73,0}}, +/* 9804 */ {(12<<2)|2,{99,73,0}}, +/* 9805 */ {(12<<2)|2,{99,73,0}}, +/* 9806 */ {(12<<2)|2,{99,73,0}}, +/* 9807 */ {(12<<2)|2,{99,73,0}}, +/* 9808 */ {(12<<2)|2,{99,74,0}}, +/* 9809 */ {(12<<2)|2,{99,74,0}}, +/* 9810 */ {(12<<2)|2,{99,74,0}}, +/* 9811 */ {(12<<2)|2,{99,74,0}}, +/* 9812 */ {(12<<2)|2,{99,74,0}}, +/* 9813 */ {(12<<2)|2,{99,74,0}}, +/* 9814 */ {(12<<2)|2,{99,74,0}}, +/* 9815 */ {(12<<2)|2,{99,74,0}}, +/* 9816 */ {(12<<2)|2,{99,74,0}}, +/* 9817 */ {(12<<2)|2,{99,74,0}}, +/* 9818 */ {(12<<2)|2,{99,74,0}}, +/* 9819 */ {(12<<2)|2,{99,74,0}}, +/* 9820 */ {(12<<2)|2,{99,74,0}}, +/* 9821 */ {(12<<2)|2,{99,74,0}}, +/* 9822 */ {(12<<2)|2,{99,74,0}}, +/* 9823 */ {(12<<2)|2,{99,74,0}}, +/* 9824 */ {(12<<2)|2,{99,75,0}}, +/* 9825 */ {(12<<2)|2,{99,75,0}}, +/* 9826 */ {(12<<2)|2,{99,75,0}}, +/* 9827 */ {(12<<2)|2,{99,75,0}}, +/* 9828 */ {(12<<2)|2,{99,75,0}}, +/* 9829 */ {(12<<2)|2,{99,75,0}}, +/* 9830 */ {(12<<2)|2,{99,75,0}}, +/* 9831 */ {(12<<2)|2,{99,75,0}}, +/* 9832 */ {(12<<2)|2,{99,75,0}}, +/* 9833 */ {(12<<2)|2,{99,75,0}}, +/* 9834 */ {(12<<2)|2,{99,75,0}}, +/* 9835 */ {(12<<2)|2,{99,75,0}}, +/* 9836 */ {(12<<2)|2,{99,75,0}}, +/* 9837 */ {(12<<2)|2,{99,75,0}}, +/* 9838 */ {(12<<2)|2,{99,75,0}}, +/* 9839 */ {(12<<2)|2,{99,75,0}}, +/* 9840 */ {(12<<2)|2,{99,76,0}}, +/* 9841 */ {(12<<2)|2,{99,76,0}}, +/* 9842 */ {(12<<2)|2,{99,76,0}}, +/* 9843 */ {(12<<2)|2,{99,76,0}}, +/* 9844 */ {(12<<2)|2,{99,76,0}}, +/* 9845 */ {(12<<2)|2,{99,76,0}}, +/* 9846 */ {(12<<2)|2,{99,76,0}}, +/* 9847 */ {(12<<2)|2,{99,76,0}}, +/* 9848 */ {(12<<2)|2,{99,76,0}}, +/* 9849 */ {(12<<2)|2,{99,76,0}}, +/* 9850 */ {(12<<2)|2,{99,76,0}}, +/* 9851 */ {(12<<2)|2,{99,76,0}}, +/* 9852 */ {(12<<2)|2,{99,76,0}}, +/* 9853 */ {(12<<2)|2,{99,76,0}}, +/* 9854 */ {(12<<2)|2,{99,76,0}}, +/* 9855 */ {(12<<2)|2,{99,76,0}}, +/* 9856 */ {(12<<2)|2,{99,77,0}}, +/* 9857 */ {(12<<2)|2,{99,77,0}}, +/* 9858 */ {(12<<2)|2,{99,77,0}}, +/* 9859 */ {(12<<2)|2,{99,77,0}}, +/* 9860 */ {(12<<2)|2,{99,77,0}}, +/* 9861 */ {(12<<2)|2,{99,77,0}}, +/* 9862 */ {(12<<2)|2,{99,77,0}}, +/* 9863 */ {(12<<2)|2,{99,77,0}}, +/* 9864 */ {(12<<2)|2,{99,77,0}}, +/* 9865 */ {(12<<2)|2,{99,77,0}}, +/* 9866 */ {(12<<2)|2,{99,77,0}}, +/* 9867 */ {(12<<2)|2,{99,77,0}}, +/* 9868 */ {(12<<2)|2,{99,77,0}}, +/* 9869 */ {(12<<2)|2,{99,77,0}}, +/* 9870 */ {(12<<2)|2,{99,77,0}}, +/* 9871 */ {(12<<2)|2,{99,77,0}}, +/* 9872 */ {(12<<2)|2,{99,78,0}}, +/* 9873 */ {(12<<2)|2,{99,78,0}}, +/* 9874 */ {(12<<2)|2,{99,78,0}}, +/* 9875 */ {(12<<2)|2,{99,78,0}}, +/* 9876 */ {(12<<2)|2,{99,78,0}}, +/* 9877 */ {(12<<2)|2,{99,78,0}}, +/* 9878 */ {(12<<2)|2,{99,78,0}}, +/* 9879 */ {(12<<2)|2,{99,78,0}}, +/* 9880 */ {(12<<2)|2,{99,78,0}}, +/* 9881 */ {(12<<2)|2,{99,78,0}}, +/* 9882 */ {(12<<2)|2,{99,78,0}}, +/* 9883 */ {(12<<2)|2,{99,78,0}}, +/* 9884 */ {(12<<2)|2,{99,78,0}}, +/* 9885 */ {(12<<2)|2,{99,78,0}}, +/* 9886 */ {(12<<2)|2,{99,78,0}}, +/* 9887 */ {(12<<2)|2,{99,78,0}}, +/* 9888 */ {(12<<2)|2,{99,79,0}}, +/* 9889 */ {(12<<2)|2,{99,79,0}}, +/* 9890 */ {(12<<2)|2,{99,79,0}}, +/* 9891 */ {(12<<2)|2,{99,79,0}}, +/* 9892 */ {(12<<2)|2,{99,79,0}}, +/* 9893 */ {(12<<2)|2,{99,79,0}}, +/* 9894 */ {(12<<2)|2,{99,79,0}}, +/* 9895 */ {(12<<2)|2,{99,79,0}}, +/* 9896 */ {(12<<2)|2,{99,79,0}}, +/* 9897 */ {(12<<2)|2,{99,79,0}}, +/* 9898 */ {(12<<2)|2,{99,79,0}}, +/* 9899 */ {(12<<2)|2,{99,79,0}}, +/* 9900 */ {(12<<2)|2,{99,79,0}}, +/* 9901 */ {(12<<2)|2,{99,79,0}}, +/* 9902 */ {(12<<2)|2,{99,79,0}}, +/* 9903 */ {(12<<2)|2,{99,79,0}}, +/* 9904 */ {(12<<2)|2,{99,80,0}}, +/* 9905 */ {(12<<2)|2,{99,80,0}}, +/* 9906 */ {(12<<2)|2,{99,80,0}}, +/* 9907 */ {(12<<2)|2,{99,80,0}}, +/* 9908 */ {(12<<2)|2,{99,80,0}}, +/* 9909 */ {(12<<2)|2,{99,80,0}}, +/* 9910 */ {(12<<2)|2,{99,80,0}}, +/* 9911 */ {(12<<2)|2,{99,80,0}}, +/* 9912 */ {(12<<2)|2,{99,80,0}}, +/* 9913 */ {(12<<2)|2,{99,80,0}}, +/* 9914 */ {(12<<2)|2,{99,80,0}}, +/* 9915 */ {(12<<2)|2,{99,80,0}}, +/* 9916 */ {(12<<2)|2,{99,80,0}}, +/* 9917 */ {(12<<2)|2,{99,80,0}}, +/* 9918 */ {(12<<2)|2,{99,80,0}}, +/* 9919 */ {(12<<2)|2,{99,80,0}}, +/* 9920 */ {(12<<2)|2,{99,81,0}}, +/* 9921 */ {(12<<2)|2,{99,81,0}}, +/* 9922 */ {(12<<2)|2,{99,81,0}}, +/* 9923 */ {(12<<2)|2,{99,81,0}}, +/* 9924 */ {(12<<2)|2,{99,81,0}}, +/* 9925 */ {(12<<2)|2,{99,81,0}}, +/* 9926 */ {(12<<2)|2,{99,81,0}}, +/* 9927 */ {(12<<2)|2,{99,81,0}}, +/* 9928 */ {(12<<2)|2,{99,81,0}}, +/* 9929 */ {(12<<2)|2,{99,81,0}}, +/* 9930 */ {(12<<2)|2,{99,81,0}}, +/* 9931 */ {(12<<2)|2,{99,81,0}}, +/* 9932 */ {(12<<2)|2,{99,81,0}}, +/* 9933 */ {(12<<2)|2,{99,81,0}}, +/* 9934 */ {(12<<2)|2,{99,81,0}}, +/* 9935 */ {(12<<2)|2,{99,81,0}}, +/* 9936 */ {(12<<2)|2,{99,82,0}}, +/* 9937 */ {(12<<2)|2,{99,82,0}}, +/* 9938 */ {(12<<2)|2,{99,82,0}}, +/* 9939 */ {(12<<2)|2,{99,82,0}}, +/* 9940 */ {(12<<2)|2,{99,82,0}}, +/* 9941 */ {(12<<2)|2,{99,82,0}}, +/* 9942 */ {(12<<2)|2,{99,82,0}}, +/* 9943 */ {(12<<2)|2,{99,82,0}}, +/* 9944 */ {(12<<2)|2,{99,82,0}}, +/* 9945 */ {(12<<2)|2,{99,82,0}}, +/* 9946 */ {(12<<2)|2,{99,82,0}}, +/* 9947 */ {(12<<2)|2,{99,82,0}}, +/* 9948 */ {(12<<2)|2,{99,82,0}}, +/* 9949 */ {(12<<2)|2,{99,82,0}}, +/* 9950 */ {(12<<2)|2,{99,82,0}}, +/* 9951 */ {(12<<2)|2,{99,82,0}}, +/* 9952 */ {(12<<2)|2,{99,83,0}}, +/* 9953 */ {(12<<2)|2,{99,83,0}}, +/* 9954 */ {(12<<2)|2,{99,83,0}}, +/* 9955 */ {(12<<2)|2,{99,83,0}}, +/* 9956 */ {(12<<2)|2,{99,83,0}}, +/* 9957 */ {(12<<2)|2,{99,83,0}}, +/* 9958 */ {(12<<2)|2,{99,83,0}}, +/* 9959 */ {(12<<2)|2,{99,83,0}}, +/* 9960 */ {(12<<2)|2,{99,83,0}}, +/* 9961 */ {(12<<2)|2,{99,83,0}}, +/* 9962 */ {(12<<2)|2,{99,83,0}}, +/* 9963 */ {(12<<2)|2,{99,83,0}}, +/* 9964 */ {(12<<2)|2,{99,83,0}}, +/* 9965 */ {(12<<2)|2,{99,83,0}}, +/* 9966 */ {(12<<2)|2,{99,83,0}}, +/* 9967 */ {(12<<2)|2,{99,83,0}}, +/* 9968 */ {(12<<2)|2,{99,84,0}}, +/* 9969 */ {(12<<2)|2,{99,84,0}}, +/* 9970 */ {(12<<2)|2,{99,84,0}}, +/* 9971 */ {(12<<2)|2,{99,84,0}}, +/* 9972 */ {(12<<2)|2,{99,84,0}}, +/* 9973 */ {(12<<2)|2,{99,84,0}}, +/* 9974 */ {(12<<2)|2,{99,84,0}}, +/* 9975 */ {(12<<2)|2,{99,84,0}}, +/* 9976 */ {(12<<2)|2,{99,84,0}}, +/* 9977 */ {(12<<2)|2,{99,84,0}}, +/* 9978 */ {(12<<2)|2,{99,84,0}}, +/* 9979 */ {(12<<2)|2,{99,84,0}}, +/* 9980 */ {(12<<2)|2,{99,84,0}}, +/* 9981 */ {(12<<2)|2,{99,84,0}}, +/* 9982 */ {(12<<2)|2,{99,84,0}}, +/* 9983 */ {(12<<2)|2,{99,84,0}}, +/* 9984 */ {(12<<2)|2,{99,85,0}}, +/* 9985 */ {(12<<2)|2,{99,85,0}}, +/* 9986 */ {(12<<2)|2,{99,85,0}}, +/* 9987 */ {(12<<2)|2,{99,85,0}}, +/* 9988 */ {(12<<2)|2,{99,85,0}}, +/* 9989 */ {(12<<2)|2,{99,85,0}}, +/* 9990 */ {(12<<2)|2,{99,85,0}}, +/* 9991 */ {(12<<2)|2,{99,85,0}}, +/* 9992 */ {(12<<2)|2,{99,85,0}}, +/* 9993 */ {(12<<2)|2,{99,85,0}}, +/* 9994 */ {(12<<2)|2,{99,85,0}}, +/* 9995 */ {(12<<2)|2,{99,85,0}}, +/* 9996 */ {(12<<2)|2,{99,85,0}}, +/* 9997 */ {(12<<2)|2,{99,85,0}}, +/* 9998 */ {(12<<2)|2,{99,85,0}}, +/* 9999 */ {(12<<2)|2,{99,85,0}}, +/* 10000 */ {(12<<2)|2,{99,86,0}}, +/* 10001 */ {(12<<2)|2,{99,86,0}}, +/* 10002 */ {(12<<2)|2,{99,86,0}}, +/* 10003 */ {(12<<2)|2,{99,86,0}}, +/* 10004 */ {(12<<2)|2,{99,86,0}}, +/* 10005 */ {(12<<2)|2,{99,86,0}}, +/* 10006 */ {(12<<2)|2,{99,86,0}}, +/* 10007 */ {(12<<2)|2,{99,86,0}}, +/* 10008 */ {(12<<2)|2,{99,86,0}}, +/* 10009 */ {(12<<2)|2,{99,86,0}}, +/* 10010 */ {(12<<2)|2,{99,86,0}}, +/* 10011 */ {(12<<2)|2,{99,86,0}}, +/* 10012 */ {(12<<2)|2,{99,86,0}}, +/* 10013 */ {(12<<2)|2,{99,86,0}}, +/* 10014 */ {(12<<2)|2,{99,86,0}}, +/* 10015 */ {(12<<2)|2,{99,86,0}}, +/* 10016 */ {(12<<2)|2,{99,87,0}}, +/* 10017 */ {(12<<2)|2,{99,87,0}}, +/* 10018 */ {(12<<2)|2,{99,87,0}}, +/* 10019 */ {(12<<2)|2,{99,87,0}}, +/* 10020 */ {(12<<2)|2,{99,87,0}}, +/* 10021 */ {(12<<2)|2,{99,87,0}}, +/* 10022 */ {(12<<2)|2,{99,87,0}}, +/* 10023 */ {(12<<2)|2,{99,87,0}}, +/* 10024 */ {(12<<2)|2,{99,87,0}}, +/* 10025 */ {(12<<2)|2,{99,87,0}}, +/* 10026 */ {(12<<2)|2,{99,87,0}}, +/* 10027 */ {(12<<2)|2,{99,87,0}}, +/* 10028 */ {(12<<2)|2,{99,87,0}}, +/* 10029 */ {(12<<2)|2,{99,87,0}}, +/* 10030 */ {(12<<2)|2,{99,87,0}}, +/* 10031 */ {(12<<2)|2,{99,87,0}}, +/* 10032 */ {(12<<2)|2,{99,89,0}}, +/* 10033 */ {(12<<2)|2,{99,89,0}}, +/* 10034 */ {(12<<2)|2,{99,89,0}}, +/* 10035 */ {(12<<2)|2,{99,89,0}}, +/* 10036 */ {(12<<2)|2,{99,89,0}}, +/* 10037 */ {(12<<2)|2,{99,89,0}}, +/* 10038 */ {(12<<2)|2,{99,89,0}}, +/* 10039 */ {(12<<2)|2,{99,89,0}}, +/* 10040 */ {(12<<2)|2,{99,89,0}}, +/* 10041 */ {(12<<2)|2,{99,89,0}}, +/* 10042 */ {(12<<2)|2,{99,89,0}}, +/* 10043 */ {(12<<2)|2,{99,89,0}}, +/* 10044 */ {(12<<2)|2,{99,89,0}}, +/* 10045 */ {(12<<2)|2,{99,89,0}}, +/* 10046 */ {(12<<2)|2,{99,89,0}}, +/* 10047 */ {(12<<2)|2,{99,89,0}}, +/* 10048 */ {(12<<2)|2,{99,106,0}}, +/* 10049 */ {(12<<2)|2,{99,106,0}}, +/* 10050 */ {(12<<2)|2,{99,106,0}}, +/* 10051 */ {(12<<2)|2,{99,106,0}}, +/* 10052 */ {(12<<2)|2,{99,106,0}}, +/* 10053 */ {(12<<2)|2,{99,106,0}}, +/* 10054 */ {(12<<2)|2,{99,106,0}}, +/* 10055 */ {(12<<2)|2,{99,106,0}}, +/* 10056 */ {(12<<2)|2,{99,106,0}}, +/* 10057 */ {(12<<2)|2,{99,106,0}}, +/* 10058 */ {(12<<2)|2,{99,106,0}}, +/* 10059 */ {(12<<2)|2,{99,106,0}}, +/* 10060 */ {(12<<2)|2,{99,106,0}}, +/* 10061 */ {(12<<2)|2,{99,106,0}}, +/* 10062 */ {(12<<2)|2,{99,106,0}}, +/* 10063 */ {(12<<2)|2,{99,106,0}}, +/* 10064 */ {(12<<2)|2,{99,107,0}}, +/* 10065 */ {(12<<2)|2,{99,107,0}}, +/* 10066 */ {(12<<2)|2,{99,107,0}}, +/* 10067 */ {(12<<2)|2,{99,107,0}}, +/* 10068 */ {(12<<2)|2,{99,107,0}}, +/* 10069 */ {(12<<2)|2,{99,107,0}}, +/* 10070 */ {(12<<2)|2,{99,107,0}}, +/* 10071 */ {(12<<2)|2,{99,107,0}}, +/* 10072 */ {(12<<2)|2,{99,107,0}}, +/* 10073 */ {(12<<2)|2,{99,107,0}}, +/* 10074 */ {(12<<2)|2,{99,107,0}}, +/* 10075 */ {(12<<2)|2,{99,107,0}}, +/* 10076 */ {(12<<2)|2,{99,107,0}}, +/* 10077 */ {(12<<2)|2,{99,107,0}}, +/* 10078 */ {(12<<2)|2,{99,107,0}}, +/* 10079 */ {(12<<2)|2,{99,107,0}}, +/* 10080 */ {(12<<2)|2,{99,113,0}}, +/* 10081 */ {(12<<2)|2,{99,113,0}}, +/* 10082 */ {(12<<2)|2,{99,113,0}}, +/* 10083 */ {(12<<2)|2,{99,113,0}}, +/* 10084 */ {(12<<2)|2,{99,113,0}}, +/* 10085 */ {(12<<2)|2,{99,113,0}}, +/* 10086 */ {(12<<2)|2,{99,113,0}}, +/* 10087 */ {(12<<2)|2,{99,113,0}}, +/* 10088 */ {(12<<2)|2,{99,113,0}}, +/* 10089 */ {(12<<2)|2,{99,113,0}}, +/* 10090 */ {(12<<2)|2,{99,113,0}}, +/* 10091 */ {(12<<2)|2,{99,113,0}}, +/* 10092 */ {(12<<2)|2,{99,113,0}}, +/* 10093 */ {(12<<2)|2,{99,113,0}}, +/* 10094 */ {(12<<2)|2,{99,113,0}}, +/* 10095 */ {(12<<2)|2,{99,113,0}}, +/* 10096 */ {(12<<2)|2,{99,118,0}}, +/* 10097 */ {(12<<2)|2,{99,118,0}}, +/* 10098 */ {(12<<2)|2,{99,118,0}}, +/* 10099 */ {(12<<2)|2,{99,118,0}}, +/* 10100 */ {(12<<2)|2,{99,118,0}}, +/* 10101 */ {(12<<2)|2,{99,118,0}}, +/* 10102 */ {(12<<2)|2,{99,118,0}}, +/* 10103 */ {(12<<2)|2,{99,118,0}}, +/* 10104 */ {(12<<2)|2,{99,118,0}}, +/* 10105 */ {(12<<2)|2,{99,118,0}}, +/* 10106 */ {(12<<2)|2,{99,118,0}}, +/* 10107 */ {(12<<2)|2,{99,118,0}}, +/* 10108 */ {(12<<2)|2,{99,118,0}}, +/* 10109 */ {(12<<2)|2,{99,118,0}}, +/* 10110 */ {(12<<2)|2,{99,118,0}}, +/* 10111 */ {(12<<2)|2,{99,118,0}}, +/* 10112 */ {(12<<2)|2,{99,119,0}}, +/* 10113 */ {(12<<2)|2,{99,119,0}}, +/* 10114 */ {(12<<2)|2,{99,119,0}}, +/* 10115 */ {(12<<2)|2,{99,119,0}}, +/* 10116 */ {(12<<2)|2,{99,119,0}}, +/* 10117 */ {(12<<2)|2,{99,119,0}}, +/* 10118 */ {(12<<2)|2,{99,119,0}}, +/* 10119 */ {(12<<2)|2,{99,119,0}}, +/* 10120 */ {(12<<2)|2,{99,119,0}}, +/* 10121 */ {(12<<2)|2,{99,119,0}}, +/* 10122 */ {(12<<2)|2,{99,119,0}}, +/* 10123 */ {(12<<2)|2,{99,119,0}}, +/* 10124 */ {(12<<2)|2,{99,119,0}}, +/* 10125 */ {(12<<2)|2,{99,119,0}}, +/* 10126 */ {(12<<2)|2,{99,119,0}}, +/* 10127 */ {(12<<2)|2,{99,119,0}}, +/* 10128 */ {(12<<2)|2,{99,120,0}}, +/* 10129 */ {(12<<2)|2,{99,120,0}}, +/* 10130 */ {(12<<2)|2,{99,120,0}}, +/* 10131 */ {(12<<2)|2,{99,120,0}}, +/* 10132 */ {(12<<2)|2,{99,120,0}}, +/* 10133 */ {(12<<2)|2,{99,120,0}}, +/* 10134 */ {(12<<2)|2,{99,120,0}}, +/* 10135 */ {(12<<2)|2,{99,120,0}}, +/* 10136 */ {(12<<2)|2,{99,120,0}}, +/* 10137 */ {(12<<2)|2,{99,120,0}}, +/* 10138 */ {(12<<2)|2,{99,120,0}}, +/* 10139 */ {(12<<2)|2,{99,120,0}}, +/* 10140 */ {(12<<2)|2,{99,120,0}}, +/* 10141 */ {(12<<2)|2,{99,120,0}}, +/* 10142 */ {(12<<2)|2,{99,120,0}}, +/* 10143 */ {(12<<2)|2,{99,120,0}}, +/* 10144 */ {(12<<2)|2,{99,121,0}}, +/* 10145 */ {(12<<2)|2,{99,121,0}}, +/* 10146 */ {(12<<2)|2,{99,121,0}}, +/* 10147 */ {(12<<2)|2,{99,121,0}}, +/* 10148 */ {(12<<2)|2,{99,121,0}}, +/* 10149 */ {(12<<2)|2,{99,121,0}}, +/* 10150 */ {(12<<2)|2,{99,121,0}}, +/* 10151 */ {(12<<2)|2,{99,121,0}}, +/* 10152 */ {(12<<2)|2,{99,121,0}}, +/* 10153 */ {(12<<2)|2,{99,121,0}}, +/* 10154 */ {(12<<2)|2,{99,121,0}}, +/* 10155 */ {(12<<2)|2,{99,121,0}}, +/* 10156 */ {(12<<2)|2,{99,121,0}}, +/* 10157 */ {(12<<2)|2,{99,121,0}}, +/* 10158 */ {(12<<2)|2,{99,121,0}}, +/* 10159 */ {(12<<2)|2,{99,121,0}}, +/* 10160 */ {(12<<2)|2,{99,122,0}}, +/* 10161 */ {(12<<2)|2,{99,122,0}}, +/* 10162 */ {(12<<2)|2,{99,122,0}}, +/* 10163 */ {(12<<2)|2,{99,122,0}}, +/* 10164 */ {(12<<2)|2,{99,122,0}}, +/* 10165 */ {(12<<2)|2,{99,122,0}}, +/* 10166 */ {(12<<2)|2,{99,122,0}}, +/* 10167 */ {(12<<2)|2,{99,122,0}}, +/* 10168 */ {(12<<2)|2,{99,122,0}}, +/* 10169 */ {(12<<2)|2,{99,122,0}}, +/* 10170 */ {(12<<2)|2,{99,122,0}}, +/* 10171 */ {(12<<2)|2,{99,122,0}}, +/* 10172 */ {(12<<2)|2,{99,122,0}}, +/* 10173 */ {(12<<2)|2,{99,122,0}}, +/* 10174 */ {(12<<2)|2,{99,122,0}}, +/* 10175 */ {(12<<2)|2,{99,122,0}}, +/* 10176 */ {(13<<2)|2,{99,38,0}}, +/* 10177 */ {(13<<2)|2,{99,38,0}}, +/* 10178 */ {(13<<2)|2,{99,38,0}}, +/* 10179 */ {(13<<2)|2,{99,38,0}}, +/* 10180 */ {(13<<2)|2,{99,38,0}}, +/* 10181 */ {(13<<2)|2,{99,38,0}}, +/* 10182 */ {(13<<2)|2,{99,38,0}}, +/* 10183 */ {(13<<2)|2,{99,38,0}}, +/* 10184 */ {(13<<2)|2,{99,42,0}}, +/* 10185 */ {(13<<2)|2,{99,42,0}}, +/* 10186 */ {(13<<2)|2,{99,42,0}}, +/* 10187 */ {(13<<2)|2,{99,42,0}}, +/* 10188 */ {(13<<2)|2,{99,42,0}}, +/* 10189 */ {(13<<2)|2,{99,42,0}}, +/* 10190 */ {(13<<2)|2,{99,42,0}}, +/* 10191 */ {(13<<2)|2,{99,42,0}}, +/* 10192 */ {(13<<2)|2,{99,44,0}}, +/* 10193 */ {(13<<2)|2,{99,44,0}}, +/* 10194 */ {(13<<2)|2,{99,44,0}}, +/* 10195 */ {(13<<2)|2,{99,44,0}}, +/* 10196 */ {(13<<2)|2,{99,44,0}}, +/* 10197 */ {(13<<2)|2,{99,44,0}}, +/* 10198 */ {(13<<2)|2,{99,44,0}}, +/* 10199 */ {(13<<2)|2,{99,44,0}}, +/* 10200 */ {(13<<2)|2,{99,59,0}}, +/* 10201 */ {(13<<2)|2,{99,59,0}}, +/* 10202 */ {(13<<2)|2,{99,59,0}}, +/* 10203 */ {(13<<2)|2,{99,59,0}}, +/* 10204 */ {(13<<2)|2,{99,59,0}}, +/* 10205 */ {(13<<2)|2,{99,59,0}}, +/* 10206 */ {(13<<2)|2,{99,59,0}}, +/* 10207 */ {(13<<2)|2,{99,59,0}}, +/* 10208 */ {(13<<2)|2,{99,88,0}}, +/* 10209 */ {(13<<2)|2,{99,88,0}}, +/* 10210 */ {(13<<2)|2,{99,88,0}}, +/* 10211 */ {(13<<2)|2,{99,88,0}}, +/* 10212 */ {(13<<2)|2,{99,88,0}}, +/* 10213 */ {(13<<2)|2,{99,88,0}}, +/* 10214 */ {(13<<2)|2,{99,88,0}}, +/* 10215 */ {(13<<2)|2,{99,88,0}}, +/* 10216 */ {(13<<2)|2,{99,90,0}}, +/* 10217 */ {(13<<2)|2,{99,90,0}}, +/* 10218 */ {(13<<2)|2,{99,90,0}}, +/* 10219 */ {(13<<2)|2,{99,90,0}}, +/* 10220 */ {(13<<2)|2,{99,90,0}}, +/* 10221 */ {(13<<2)|2,{99,90,0}}, +/* 10222 */ {(13<<2)|2,{99,90,0}}, +/* 10223 */ {(13<<2)|2,{99,90,0}}, +/* 10224 */ {(15<<2)|2,{99,33,0}}, +/* 10225 */ {(15<<2)|2,{99,33,0}}, +/* 10226 */ {(15<<2)|2,{99,34,0}}, +/* 10227 */ {(15<<2)|2,{99,34,0}}, +/* 10228 */ {(15<<2)|2,{99,40,0}}, +/* 10229 */ {(15<<2)|2,{99,40,0}}, +/* 10230 */ {(15<<2)|2,{99,41,0}}, +/* 10231 */ {(15<<2)|2,{99,41,0}}, +/* 10232 */ {(15<<2)|2,{99,63,0}}, +/* 10233 */ {(15<<2)|2,{99,63,0}}, +/* 10234 */ {(16<<2)|2,{99,39,0}}, +/* 10235 */ {(16<<2)|2,{99,43,0}}, +/* 10236 */ {(16<<2)|2,{99,124,0}}, +/* 10237 */ {(5<<2)|1,{99,0,0}}, +/* 10238 */ {(5<<2)|1,{99,0,0}}, +/* 10239 */ {(5<<2)|1,{99,0,0}}, +/* 10240 */ {(15<<2)|3,{101,48,48}}, +/* 10241 */ {(15<<2)|3,{101,48,48}}, +/* 10242 */ {(15<<2)|3,{101,48,49}}, +/* 10243 */ {(15<<2)|3,{101,48,49}}, +/* 10244 */ {(15<<2)|3,{101,48,50}}, +/* 10245 */ {(15<<2)|3,{101,48,50}}, +/* 10246 */ {(15<<2)|3,{101,48,97}}, +/* 10247 */ {(15<<2)|3,{101,48,97}}, +/* 10248 */ {(15<<2)|3,{101,48,99}}, +/* 10249 */ {(15<<2)|3,{101,48,99}}, +/* 10250 */ {(15<<2)|3,{101,48,101}}, +/* 10251 */ {(15<<2)|3,{101,48,101}}, +/* 10252 */ {(15<<2)|3,{101,48,105}}, +/* 10253 */ {(15<<2)|3,{101,48,105}}, +/* 10254 */ {(15<<2)|3,{101,48,111}}, +/* 10255 */ {(15<<2)|3,{101,48,111}}, +/* 10256 */ {(15<<2)|3,{101,48,115}}, +/* 10257 */ {(15<<2)|3,{101,48,115}}, +/* 10258 */ {(15<<2)|3,{101,48,116}}, +/* 10259 */ {(15<<2)|3,{101,48,116}}, +/* 10260 */ {(16<<2)|3,{101,48,32}}, +/* 10261 */ {(16<<2)|3,{101,48,37}}, +/* 10262 */ {(16<<2)|3,{101,48,45}}, +/* 10263 */ {(16<<2)|3,{101,48,46}}, +/* 10264 */ {(16<<2)|3,{101,48,47}}, +/* 10265 */ {(16<<2)|3,{101,48,51}}, +/* 10266 */ {(16<<2)|3,{101,48,52}}, +/* 10267 */ {(16<<2)|3,{101,48,53}}, +/* 10268 */ {(16<<2)|3,{101,48,54}}, +/* 10269 */ {(16<<2)|3,{101,48,55}}, +/* 10270 */ {(16<<2)|3,{101,48,56}}, +/* 10271 */ {(16<<2)|3,{101,48,57}}, +/* 10272 */ {(16<<2)|3,{101,48,61}}, +/* 10273 */ {(16<<2)|3,{101,48,65}}, +/* 10274 */ {(16<<2)|3,{101,48,95}}, +/* 10275 */ {(16<<2)|3,{101,48,98}}, +/* 10276 */ {(16<<2)|3,{101,48,100}}, +/* 10277 */ {(16<<2)|3,{101,48,102}}, +/* 10278 */ {(16<<2)|3,{101,48,103}}, +/* 10279 */ {(16<<2)|3,{101,48,104}}, +/* 10280 */ {(16<<2)|3,{101,48,108}}, +/* 10281 */ {(16<<2)|3,{101,48,109}}, +/* 10282 */ {(16<<2)|3,{101,48,110}}, +/* 10283 */ {(16<<2)|3,{101,48,112}}, +/* 10284 */ {(16<<2)|3,{101,48,114}}, +/* 10285 */ {(16<<2)|3,{101,48,117}}, +/* 10286 */ {(10<<2)|2,{101,48,0}}, +/* 10287 */ {(10<<2)|2,{101,48,0}}, +/* 10288 */ {(10<<2)|2,{101,48,0}}, +/* 10289 */ {(10<<2)|2,{101,48,0}}, +/* 10290 */ {(10<<2)|2,{101,48,0}}, +/* 10291 */ {(10<<2)|2,{101,48,0}}, +/* 10292 */ {(10<<2)|2,{101,48,0}}, +/* 10293 */ {(10<<2)|2,{101,48,0}}, +/* 10294 */ {(10<<2)|2,{101,48,0}}, +/* 10295 */ {(10<<2)|2,{101,48,0}}, +/* 10296 */ {(10<<2)|2,{101,48,0}}, +/* 10297 */ {(10<<2)|2,{101,48,0}}, +/* 10298 */ {(10<<2)|2,{101,48,0}}, +/* 10299 */ {(10<<2)|2,{101,48,0}}, +/* 10300 */ {(10<<2)|2,{101,48,0}}, +/* 10301 */ {(10<<2)|2,{101,48,0}}, +/* 10302 */ {(10<<2)|2,{101,48,0}}, +/* 10303 */ {(10<<2)|2,{101,48,0}}, +/* 10304 */ {(15<<2)|3,{101,49,48}}, +/* 10305 */ {(15<<2)|3,{101,49,48}}, +/* 10306 */ {(15<<2)|3,{101,49,49}}, +/* 10307 */ {(15<<2)|3,{101,49,49}}, +/* 10308 */ {(15<<2)|3,{101,49,50}}, +/* 10309 */ {(15<<2)|3,{101,49,50}}, +/* 10310 */ {(15<<2)|3,{101,49,97}}, +/* 10311 */ {(15<<2)|3,{101,49,97}}, +/* 10312 */ {(15<<2)|3,{101,49,99}}, +/* 10313 */ {(15<<2)|3,{101,49,99}}, +/* 10314 */ {(15<<2)|3,{101,49,101}}, +/* 10315 */ {(15<<2)|3,{101,49,101}}, +/* 10316 */ {(15<<2)|3,{101,49,105}}, +/* 10317 */ {(15<<2)|3,{101,49,105}}, +/* 10318 */ {(15<<2)|3,{101,49,111}}, +/* 10319 */ {(15<<2)|3,{101,49,111}}, +/* 10320 */ {(15<<2)|3,{101,49,115}}, +/* 10321 */ {(15<<2)|3,{101,49,115}}, +/* 10322 */ {(15<<2)|3,{101,49,116}}, +/* 10323 */ {(15<<2)|3,{101,49,116}}, +/* 10324 */ {(16<<2)|3,{101,49,32}}, +/* 10325 */ {(16<<2)|3,{101,49,37}}, +/* 10326 */ {(16<<2)|3,{101,49,45}}, +/* 10327 */ {(16<<2)|3,{101,49,46}}, +/* 10328 */ {(16<<2)|3,{101,49,47}}, +/* 10329 */ {(16<<2)|3,{101,49,51}}, +/* 10330 */ {(16<<2)|3,{101,49,52}}, +/* 10331 */ {(16<<2)|3,{101,49,53}}, +/* 10332 */ {(16<<2)|3,{101,49,54}}, +/* 10333 */ {(16<<2)|3,{101,49,55}}, +/* 10334 */ {(16<<2)|3,{101,49,56}}, +/* 10335 */ {(16<<2)|3,{101,49,57}}, +/* 10336 */ {(16<<2)|3,{101,49,61}}, +/* 10337 */ {(16<<2)|3,{101,49,65}}, +/* 10338 */ {(16<<2)|3,{101,49,95}}, +/* 10339 */ {(16<<2)|3,{101,49,98}}, +/* 10340 */ {(16<<2)|3,{101,49,100}}, +/* 10341 */ {(16<<2)|3,{101,49,102}}, +/* 10342 */ {(16<<2)|3,{101,49,103}}, +/* 10343 */ {(16<<2)|3,{101,49,104}}, +/* 10344 */ {(16<<2)|3,{101,49,108}}, +/* 10345 */ {(16<<2)|3,{101,49,109}}, +/* 10346 */ {(16<<2)|3,{101,49,110}}, +/* 10347 */ {(16<<2)|3,{101,49,112}}, +/* 10348 */ {(16<<2)|3,{101,49,114}}, +/* 10349 */ {(16<<2)|3,{101,49,117}}, +/* 10350 */ {(10<<2)|2,{101,49,0}}, +/* 10351 */ {(10<<2)|2,{101,49,0}}, +/* 10352 */ {(10<<2)|2,{101,49,0}}, +/* 10353 */ {(10<<2)|2,{101,49,0}}, +/* 10354 */ {(10<<2)|2,{101,49,0}}, +/* 10355 */ {(10<<2)|2,{101,49,0}}, +/* 10356 */ {(10<<2)|2,{101,49,0}}, +/* 10357 */ {(10<<2)|2,{101,49,0}}, +/* 10358 */ {(10<<2)|2,{101,49,0}}, +/* 10359 */ {(10<<2)|2,{101,49,0}}, +/* 10360 */ {(10<<2)|2,{101,49,0}}, +/* 10361 */ {(10<<2)|2,{101,49,0}}, +/* 10362 */ {(10<<2)|2,{101,49,0}}, +/* 10363 */ {(10<<2)|2,{101,49,0}}, +/* 10364 */ {(10<<2)|2,{101,49,0}}, +/* 10365 */ {(10<<2)|2,{101,49,0}}, +/* 10366 */ {(10<<2)|2,{101,49,0}}, +/* 10367 */ {(10<<2)|2,{101,49,0}}, +/* 10368 */ {(15<<2)|3,{101,50,48}}, +/* 10369 */ {(15<<2)|3,{101,50,48}}, +/* 10370 */ {(15<<2)|3,{101,50,49}}, +/* 10371 */ {(15<<2)|3,{101,50,49}}, +/* 10372 */ {(15<<2)|3,{101,50,50}}, +/* 10373 */ {(15<<2)|3,{101,50,50}}, +/* 10374 */ {(15<<2)|3,{101,50,97}}, +/* 10375 */ {(15<<2)|3,{101,50,97}}, +/* 10376 */ {(15<<2)|3,{101,50,99}}, +/* 10377 */ {(15<<2)|3,{101,50,99}}, +/* 10378 */ {(15<<2)|3,{101,50,101}}, +/* 10379 */ {(15<<2)|3,{101,50,101}}, +/* 10380 */ {(15<<2)|3,{101,50,105}}, +/* 10381 */ {(15<<2)|3,{101,50,105}}, +/* 10382 */ {(15<<2)|3,{101,50,111}}, +/* 10383 */ {(15<<2)|3,{101,50,111}}, +/* 10384 */ {(15<<2)|3,{101,50,115}}, +/* 10385 */ {(15<<2)|3,{101,50,115}}, +/* 10386 */ {(15<<2)|3,{101,50,116}}, +/* 10387 */ {(15<<2)|3,{101,50,116}}, +/* 10388 */ {(16<<2)|3,{101,50,32}}, +/* 10389 */ {(16<<2)|3,{101,50,37}}, +/* 10390 */ {(16<<2)|3,{101,50,45}}, +/* 10391 */ {(16<<2)|3,{101,50,46}}, +/* 10392 */ {(16<<2)|3,{101,50,47}}, +/* 10393 */ {(16<<2)|3,{101,50,51}}, +/* 10394 */ {(16<<2)|3,{101,50,52}}, +/* 10395 */ {(16<<2)|3,{101,50,53}}, +/* 10396 */ {(16<<2)|3,{101,50,54}}, +/* 10397 */ {(16<<2)|3,{101,50,55}}, +/* 10398 */ {(16<<2)|3,{101,50,56}}, +/* 10399 */ {(16<<2)|3,{101,50,57}}, +/* 10400 */ {(16<<2)|3,{101,50,61}}, +/* 10401 */ {(16<<2)|3,{101,50,65}}, +/* 10402 */ {(16<<2)|3,{101,50,95}}, +/* 10403 */ {(16<<2)|3,{101,50,98}}, +/* 10404 */ {(16<<2)|3,{101,50,100}}, +/* 10405 */ {(16<<2)|3,{101,50,102}}, +/* 10406 */ {(16<<2)|3,{101,50,103}}, +/* 10407 */ {(16<<2)|3,{101,50,104}}, +/* 10408 */ {(16<<2)|3,{101,50,108}}, +/* 10409 */ {(16<<2)|3,{101,50,109}}, +/* 10410 */ {(16<<2)|3,{101,50,110}}, +/* 10411 */ {(16<<2)|3,{101,50,112}}, +/* 10412 */ {(16<<2)|3,{101,50,114}}, +/* 10413 */ {(16<<2)|3,{101,50,117}}, +/* 10414 */ {(10<<2)|2,{101,50,0}}, +/* 10415 */ {(10<<2)|2,{101,50,0}}, +/* 10416 */ {(10<<2)|2,{101,50,0}}, +/* 10417 */ {(10<<2)|2,{101,50,0}}, +/* 10418 */ {(10<<2)|2,{101,50,0}}, +/* 10419 */ {(10<<2)|2,{101,50,0}}, +/* 10420 */ {(10<<2)|2,{101,50,0}}, +/* 10421 */ {(10<<2)|2,{101,50,0}}, +/* 10422 */ {(10<<2)|2,{101,50,0}}, +/* 10423 */ {(10<<2)|2,{101,50,0}}, +/* 10424 */ {(10<<2)|2,{101,50,0}}, +/* 10425 */ {(10<<2)|2,{101,50,0}}, +/* 10426 */ {(10<<2)|2,{101,50,0}}, +/* 10427 */ {(10<<2)|2,{101,50,0}}, +/* 10428 */ {(10<<2)|2,{101,50,0}}, +/* 10429 */ {(10<<2)|2,{101,50,0}}, +/* 10430 */ {(10<<2)|2,{101,50,0}}, +/* 10431 */ {(10<<2)|2,{101,50,0}}, +/* 10432 */ {(15<<2)|3,{101,97,48}}, +/* 10433 */ {(15<<2)|3,{101,97,48}}, +/* 10434 */ {(15<<2)|3,{101,97,49}}, +/* 10435 */ {(15<<2)|3,{101,97,49}}, +/* 10436 */ {(15<<2)|3,{101,97,50}}, +/* 10437 */ {(15<<2)|3,{101,97,50}}, +/* 10438 */ {(15<<2)|3,{101,97,97}}, +/* 10439 */ {(15<<2)|3,{101,97,97}}, +/* 10440 */ {(15<<2)|3,{101,97,99}}, +/* 10441 */ {(15<<2)|3,{101,97,99}}, +/* 10442 */ {(15<<2)|3,{101,97,101}}, +/* 10443 */ {(15<<2)|3,{101,97,101}}, +/* 10444 */ {(15<<2)|3,{101,97,105}}, +/* 10445 */ {(15<<2)|3,{101,97,105}}, +/* 10446 */ {(15<<2)|3,{101,97,111}}, +/* 10447 */ {(15<<2)|3,{101,97,111}}, +/* 10448 */ {(15<<2)|3,{101,97,115}}, +/* 10449 */ {(15<<2)|3,{101,97,115}}, +/* 10450 */ {(15<<2)|3,{101,97,116}}, +/* 10451 */ {(15<<2)|3,{101,97,116}}, +/* 10452 */ {(16<<2)|3,{101,97,32}}, +/* 10453 */ {(16<<2)|3,{101,97,37}}, +/* 10454 */ {(16<<2)|3,{101,97,45}}, +/* 10455 */ {(16<<2)|3,{101,97,46}}, +/* 10456 */ {(16<<2)|3,{101,97,47}}, +/* 10457 */ {(16<<2)|3,{101,97,51}}, +/* 10458 */ {(16<<2)|3,{101,97,52}}, +/* 10459 */ {(16<<2)|3,{101,97,53}}, +/* 10460 */ {(16<<2)|3,{101,97,54}}, +/* 10461 */ {(16<<2)|3,{101,97,55}}, +/* 10462 */ {(16<<2)|3,{101,97,56}}, +/* 10463 */ {(16<<2)|3,{101,97,57}}, +/* 10464 */ {(16<<2)|3,{101,97,61}}, +/* 10465 */ {(16<<2)|3,{101,97,65}}, +/* 10466 */ {(16<<2)|3,{101,97,95}}, +/* 10467 */ {(16<<2)|3,{101,97,98}}, +/* 10468 */ {(16<<2)|3,{101,97,100}}, +/* 10469 */ {(16<<2)|3,{101,97,102}}, +/* 10470 */ {(16<<2)|3,{101,97,103}}, +/* 10471 */ {(16<<2)|3,{101,97,104}}, +/* 10472 */ {(16<<2)|3,{101,97,108}}, +/* 10473 */ {(16<<2)|3,{101,97,109}}, +/* 10474 */ {(16<<2)|3,{101,97,110}}, +/* 10475 */ {(16<<2)|3,{101,97,112}}, +/* 10476 */ {(16<<2)|3,{101,97,114}}, +/* 10477 */ {(16<<2)|3,{101,97,117}}, +/* 10478 */ {(10<<2)|2,{101,97,0}}, +/* 10479 */ {(10<<2)|2,{101,97,0}}, +/* 10480 */ {(10<<2)|2,{101,97,0}}, +/* 10481 */ {(10<<2)|2,{101,97,0}}, +/* 10482 */ {(10<<2)|2,{101,97,0}}, +/* 10483 */ {(10<<2)|2,{101,97,0}}, +/* 10484 */ {(10<<2)|2,{101,97,0}}, +/* 10485 */ {(10<<2)|2,{101,97,0}}, +/* 10486 */ {(10<<2)|2,{101,97,0}}, +/* 10487 */ {(10<<2)|2,{101,97,0}}, +/* 10488 */ {(10<<2)|2,{101,97,0}}, +/* 10489 */ {(10<<2)|2,{101,97,0}}, +/* 10490 */ {(10<<2)|2,{101,97,0}}, +/* 10491 */ {(10<<2)|2,{101,97,0}}, +/* 10492 */ {(10<<2)|2,{101,97,0}}, +/* 10493 */ {(10<<2)|2,{101,97,0}}, +/* 10494 */ {(10<<2)|2,{101,97,0}}, +/* 10495 */ {(10<<2)|2,{101,97,0}}, +/* 10496 */ {(15<<2)|3,{101,99,48}}, +/* 10497 */ {(15<<2)|3,{101,99,48}}, +/* 10498 */ {(15<<2)|3,{101,99,49}}, +/* 10499 */ {(15<<2)|3,{101,99,49}}, +/* 10500 */ {(15<<2)|3,{101,99,50}}, +/* 10501 */ {(15<<2)|3,{101,99,50}}, +/* 10502 */ {(15<<2)|3,{101,99,97}}, +/* 10503 */ {(15<<2)|3,{101,99,97}}, +/* 10504 */ {(15<<2)|3,{101,99,99}}, +/* 10505 */ {(15<<2)|3,{101,99,99}}, +/* 10506 */ {(15<<2)|3,{101,99,101}}, +/* 10507 */ {(15<<2)|3,{101,99,101}}, +/* 10508 */ {(15<<2)|3,{101,99,105}}, +/* 10509 */ {(15<<2)|3,{101,99,105}}, +/* 10510 */ {(15<<2)|3,{101,99,111}}, +/* 10511 */ {(15<<2)|3,{101,99,111}}, +/* 10512 */ {(15<<2)|3,{101,99,115}}, +/* 10513 */ {(15<<2)|3,{101,99,115}}, +/* 10514 */ {(15<<2)|3,{101,99,116}}, +/* 10515 */ {(15<<2)|3,{101,99,116}}, +/* 10516 */ {(16<<2)|3,{101,99,32}}, +/* 10517 */ {(16<<2)|3,{101,99,37}}, +/* 10518 */ {(16<<2)|3,{101,99,45}}, +/* 10519 */ {(16<<2)|3,{101,99,46}}, +/* 10520 */ {(16<<2)|3,{101,99,47}}, +/* 10521 */ {(16<<2)|3,{101,99,51}}, +/* 10522 */ {(16<<2)|3,{101,99,52}}, +/* 10523 */ {(16<<2)|3,{101,99,53}}, +/* 10524 */ {(16<<2)|3,{101,99,54}}, +/* 10525 */ {(16<<2)|3,{101,99,55}}, +/* 10526 */ {(16<<2)|3,{101,99,56}}, +/* 10527 */ {(16<<2)|3,{101,99,57}}, +/* 10528 */ {(16<<2)|3,{101,99,61}}, +/* 10529 */ {(16<<2)|3,{101,99,65}}, +/* 10530 */ {(16<<2)|3,{101,99,95}}, +/* 10531 */ {(16<<2)|3,{101,99,98}}, +/* 10532 */ {(16<<2)|3,{101,99,100}}, +/* 10533 */ {(16<<2)|3,{101,99,102}}, +/* 10534 */ {(16<<2)|3,{101,99,103}}, +/* 10535 */ {(16<<2)|3,{101,99,104}}, +/* 10536 */ {(16<<2)|3,{101,99,108}}, +/* 10537 */ {(16<<2)|3,{101,99,109}}, +/* 10538 */ {(16<<2)|3,{101,99,110}}, +/* 10539 */ {(16<<2)|3,{101,99,112}}, +/* 10540 */ {(16<<2)|3,{101,99,114}}, +/* 10541 */ {(16<<2)|3,{101,99,117}}, +/* 10542 */ {(10<<2)|2,{101,99,0}}, +/* 10543 */ {(10<<2)|2,{101,99,0}}, +/* 10544 */ {(10<<2)|2,{101,99,0}}, +/* 10545 */ {(10<<2)|2,{101,99,0}}, +/* 10546 */ {(10<<2)|2,{101,99,0}}, +/* 10547 */ {(10<<2)|2,{101,99,0}}, +/* 10548 */ {(10<<2)|2,{101,99,0}}, +/* 10549 */ {(10<<2)|2,{101,99,0}}, +/* 10550 */ {(10<<2)|2,{101,99,0}}, +/* 10551 */ {(10<<2)|2,{101,99,0}}, +/* 10552 */ {(10<<2)|2,{101,99,0}}, +/* 10553 */ {(10<<2)|2,{101,99,0}}, +/* 10554 */ {(10<<2)|2,{101,99,0}}, +/* 10555 */ {(10<<2)|2,{101,99,0}}, +/* 10556 */ {(10<<2)|2,{101,99,0}}, +/* 10557 */ {(10<<2)|2,{101,99,0}}, +/* 10558 */ {(10<<2)|2,{101,99,0}}, +/* 10559 */ {(10<<2)|2,{101,99,0}}, +/* 10560 */ {(15<<2)|3,{101,101,48}}, +/* 10561 */ {(15<<2)|3,{101,101,48}}, +/* 10562 */ {(15<<2)|3,{101,101,49}}, +/* 10563 */ {(15<<2)|3,{101,101,49}}, +/* 10564 */ {(15<<2)|3,{101,101,50}}, +/* 10565 */ {(15<<2)|3,{101,101,50}}, +/* 10566 */ {(15<<2)|3,{101,101,97}}, +/* 10567 */ {(15<<2)|3,{101,101,97}}, +/* 10568 */ {(15<<2)|3,{101,101,99}}, +/* 10569 */ {(15<<2)|3,{101,101,99}}, +/* 10570 */ {(15<<2)|3,{101,101,101}}, +/* 10571 */ {(15<<2)|3,{101,101,101}}, +/* 10572 */ {(15<<2)|3,{101,101,105}}, +/* 10573 */ {(15<<2)|3,{101,101,105}}, +/* 10574 */ {(15<<2)|3,{101,101,111}}, +/* 10575 */ {(15<<2)|3,{101,101,111}}, +/* 10576 */ {(15<<2)|3,{101,101,115}}, +/* 10577 */ {(15<<2)|3,{101,101,115}}, +/* 10578 */ {(15<<2)|3,{101,101,116}}, +/* 10579 */ {(15<<2)|3,{101,101,116}}, +/* 10580 */ {(16<<2)|3,{101,101,32}}, +/* 10581 */ {(16<<2)|3,{101,101,37}}, +/* 10582 */ {(16<<2)|3,{101,101,45}}, +/* 10583 */ {(16<<2)|3,{101,101,46}}, +/* 10584 */ {(16<<2)|3,{101,101,47}}, +/* 10585 */ {(16<<2)|3,{101,101,51}}, +/* 10586 */ {(16<<2)|3,{101,101,52}}, +/* 10587 */ {(16<<2)|3,{101,101,53}}, +/* 10588 */ {(16<<2)|3,{101,101,54}}, +/* 10589 */ {(16<<2)|3,{101,101,55}}, +/* 10590 */ {(16<<2)|3,{101,101,56}}, +/* 10591 */ {(16<<2)|3,{101,101,57}}, +/* 10592 */ {(16<<2)|3,{101,101,61}}, +/* 10593 */ {(16<<2)|3,{101,101,65}}, +/* 10594 */ {(16<<2)|3,{101,101,95}}, +/* 10595 */ {(16<<2)|3,{101,101,98}}, +/* 10596 */ {(16<<2)|3,{101,101,100}}, +/* 10597 */ {(16<<2)|3,{101,101,102}}, +/* 10598 */ {(16<<2)|3,{101,101,103}}, +/* 10599 */ {(16<<2)|3,{101,101,104}}, +/* 10600 */ {(16<<2)|3,{101,101,108}}, +/* 10601 */ {(16<<2)|3,{101,101,109}}, +/* 10602 */ {(16<<2)|3,{101,101,110}}, +/* 10603 */ {(16<<2)|3,{101,101,112}}, +/* 10604 */ {(16<<2)|3,{101,101,114}}, +/* 10605 */ {(16<<2)|3,{101,101,117}}, +/* 10606 */ {(10<<2)|2,{101,101,0}}, +/* 10607 */ {(10<<2)|2,{101,101,0}}, +/* 10608 */ {(10<<2)|2,{101,101,0}}, +/* 10609 */ {(10<<2)|2,{101,101,0}}, +/* 10610 */ {(10<<2)|2,{101,101,0}}, +/* 10611 */ {(10<<2)|2,{101,101,0}}, +/* 10612 */ {(10<<2)|2,{101,101,0}}, +/* 10613 */ {(10<<2)|2,{101,101,0}}, +/* 10614 */ {(10<<2)|2,{101,101,0}}, +/* 10615 */ {(10<<2)|2,{101,101,0}}, +/* 10616 */ {(10<<2)|2,{101,101,0}}, +/* 10617 */ {(10<<2)|2,{101,101,0}}, +/* 10618 */ {(10<<2)|2,{101,101,0}}, +/* 10619 */ {(10<<2)|2,{101,101,0}}, +/* 10620 */ {(10<<2)|2,{101,101,0}}, +/* 10621 */ {(10<<2)|2,{101,101,0}}, +/* 10622 */ {(10<<2)|2,{101,101,0}}, +/* 10623 */ {(10<<2)|2,{101,101,0}}, +/* 10624 */ {(15<<2)|3,{101,105,48}}, +/* 10625 */ {(15<<2)|3,{101,105,48}}, +/* 10626 */ {(15<<2)|3,{101,105,49}}, +/* 10627 */ {(15<<2)|3,{101,105,49}}, +/* 10628 */ {(15<<2)|3,{101,105,50}}, +/* 10629 */ {(15<<2)|3,{101,105,50}}, +/* 10630 */ {(15<<2)|3,{101,105,97}}, +/* 10631 */ {(15<<2)|3,{101,105,97}}, +/* 10632 */ {(15<<2)|3,{101,105,99}}, +/* 10633 */ {(15<<2)|3,{101,105,99}}, +/* 10634 */ {(15<<2)|3,{101,105,101}}, +/* 10635 */ {(15<<2)|3,{101,105,101}}, +/* 10636 */ {(15<<2)|3,{101,105,105}}, +/* 10637 */ {(15<<2)|3,{101,105,105}}, +/* 10638 */ {(15<<2)|3,{101,105,111}}, +/* 10639 */ {(15<<2)|3,{101,105,111}}, +/* 10640 */ {(15<<2)|3,{101,105,115}}, +/* 10641 */ {(15<<2)|3,{101,105,115}}, +/* 10642 */ {(15<<2)|3,{101,105,116}}, +/* 10643 */ {(15<<2)|3,{101,105,116}}, +/* 10644 */ {(16<<2)|3,{101,105,32}}, +/* 10645 */ {(16<<2)|3,{101,105,37}}, +/* 10646 */ {(16<<2)|3,{101,105,45}}, +/* 10647 */ {(16<<2)|3,{101,105,46}}, +/* 10648 */ {(16<<2)|3,{101,105,47}}, +/* 10649 */ {(16<<2)|3,{101,105,51}}, +/* 10650 */ {(16<<2)|3,{101,105,52}}, +/* 10651 */ {(16<<2)|3,{101,105,53}}, +/* 10652 */ {(16<<2)|3,{101,105,54}}, +/* 10653 */ {(16<<2)|3,{101,105,55}}, +/* 10654 */ {(16<<2)|3,{101,105,56}}, +/* 10655 */ {(16<<2)|3,{101,105,57}}, +/* 10656 */ {(16<<2)|3,{101,105,61}}, +/* 10657 */ {(16<<2)|3,{101,105,65}}, +/* 10658 */ {(16<<2)|3,{101,105,95}}, +/* 10659 */ {(16<<2)|3,{101,105,98}}, +/* 10660 */ {(16<<2)|3,{101,105,100}}, +/* 10661 */ {(16<<2)|3,{101,105,102}}, +/* 10662 */ {(16<<2)|3,{101,105,103}}, +/* 10663 */ {(16<<2)|3,{101,105,104}}, +/* 10664 */ {(16<<2)|3,{101,105,108}}, +/* 10665 */ {(16<<2)|3,{101,105,109}}, +/* 10666 */ {(16<<2)|3,{101,105,110}}, +/* 10667 */ {(16<<2)|3,{101,105,112}}, +/* 10668 */ {(16<<2)|3,{101,105,114}}, +/* 10669 */ {(16<<2)|3,{101,105,117}}, +/* 10670 */ {(10<<2)|2,{101,105,0}}, +/* 10671 */ {(10<<2)|2,{101,105,0}}, +/* 10672 */ {(10<<2)|2,{101,105,0}}, +/* 10673 */ {(10<<2)|2,{101,105,0}}, +/* 10674 */ {(10<<2)|2,{101,105,0}}, +/* 10675 */ {(10<<2)|2,{101,105,0}}, +/* 10676 */ {(10<<2)|2,{101,105,0}}, +/* 10677 */ {(10<<2)|2,{101,105,0}}, +/* 10678 */ {(10<<2)|2,{101,105,0}}, +/* 10679 */ {(10<<2)|2,{101,105,0}}, +/* 10680 */ {(10<<2)|2,{101,105,0}}, +/* 10681 */ {(10<<2)|2,{101,105,0}}, +/* 10682 */ {(10<<2)|2,{101,105,0}}, +/* 10683 */ {(10<<2)|2,{101,105,0}}, +/* 10684 */ {(10<<2)|2,{101,105,0}}, +/* 10685 */ {(10<<2)|2,{101,105,0}}, +/* 10686 */ {(10<<2)|2,{101,105,0}}, +/* 10687 */ {(10<<2)|2,{101,105,0}}, +/* 10688 */ {(15<<2)|3,{101,111,48}}, +/* 10689 */ {(15<<2)|3,{101,111,48}}, +/* 10690 */ {(15<<2)|3,{101,111,49}}, +/* 10691 */ {(15<<2)|3,{101,111,49}}, +/* 10692 */ {(15<<2)|3,{101,111,50}}, +/* 10693 */ {(15<<2)|3,{101,111,50}}, +/* 10694 */ {(15<<2)|3,{101,111,97}}, +/* 10695 */ {(15<<2)|3,{101,111,97}}, +/* 10696 */ {(15<<2)|3,{101,111,99}}, +/* 10697 */ {(15<<2)|3,{101,111,99}}, +/* 10698 */ {(15<<2)|3,{101,111,101}}, +/* 10699 */ {(15<<2)|3,{101,111,101}}, +/* 10700 */ {(15<<2)|3,{101,111,105}}, +/* 10701 */ {(15<<2)|3,{101,111,105}}, +/* 10702 */ {(15<<2)|3,{101,111,111}}, +/* 10703 */ {(15<<2)|3,{101,111,111}}, +/* 10704 */ {(15<<2)|3,{101,111,115}}, +/* 10705 */ {(15<<2)|3,{101,111,115}}, +/* 10706 */ {(15<<2)|3,{101,111,116}}, +/* 10707 */ {(15<<2)|3,{101,111,116}}, +/* 10708 */ {(16<<2)|3,{101,111,32}}, +/* 10709 */ {(16<<2)|3,{101,111,37}}, +/* 10710 */ {(16<<2)|3,{101,111,45}}, +/* 10711 */ {(16<<2)|3,{101,111,46}}, +/* 10712 */ {(16<<2)|3,{101,111,47}}, +/* 10713 */ {(16<<2)|3,{101,111,51}}, +/* 10714 */ {(16<<2)|3,{101,111,52}}, +/* 10715 */ {(16<<2)|3,{101,111,53}}, +/* 10716 */ {(16<<2)|3,{101,111,54}}, +/* 10717 */ {(16<<2)|3,{101,111,55}}, +/* 10718 */ {(16<<2)|3,{101,111,56}}, +/* 10719 */ {(16<<2)|3,{101,111,57}}, +/* 10720 */ {(16<<2)|3,{101,111,61}}, +/* 10721 */ {(16<<2)|3,{101,111,65}}, +/* 10722 */ {(16<<2)|3,{101,111,95}}, +/* 10723 */ {(16<<2)|3,{101,111,98}}, +/* 10724 */ {(16<<2)|3,{101,111,100}}, +/* 10725 */ {(16<<2)|3,{101,111,102}}, +/* 10726 */ {(16<<2)|3,{101,111,103}}, +/* 10727 */ {(16<<2)|3,{101,111,104}}, +/* 10728 */ {(16<<2)|3,{101,111,108}}, +/* 10729 */ {(16<<2)|3,{101,111,109}}, +/* 10730 */ {(16<<2)|3,{101,111,110}}, +/* 10731 */ {(16<<2)|3,{101,111,112}}, +/* 10732 */ {(16<<2)|3,{101,111,114}}, +/* 10733 */ {(16<<2)|3,{101,111,117}}, +/* 10734 */ {(10<<2)|2,{101,111,0}}, +/* 10735 */ {(10<<2)|2,{101,111,0}}, +/* 10736 */ {(10<<2)|2,{101,111,0}}, +/* 10737 */ {(10<<2)|2,{101,111,0}}, +/* 10738 */ {(10<<2)|2,{101,111,0}}, +/* 10739 */ {(10<<2)|2,{101,111,0}}, +/* 10740 */ {(10<<2)|2,{101,111,0}}, +/* 10741 */ {(10<<2)|2,{101,111,0}}, +/* 10742 */ {(10<<2)|2,{101,111,0}}, +/* 10743 */ {(10<<2)|2,{101,111,0}}, +/* 10744 */ {(10<<2)|2,{101,111,0}}, +/* 10745 */ {(10<<2)|2,{101,111,0}}, +/* 10746 */ {(10<<2)|2,{101,111,0}}, +/* 10747 */ {(10<<2)|2,{101,111,0}}, +/* 10748 */ {(10<<2)|2,{101,111,0}}, +/* 10749 */ {(10<<2)|2,{101,111,0}}, +/* 10750 */ {(10<<2)|2,{101,111,0}}, +/* 10751 */ {(10<<2)|2,{101,111,0}}, +/* 10752 */ {(15<<2)|3,{101,115,48}}, +/* 10753 */ {(15<<2)|3,{101,115,48}}, +/* 10754 */ {(15<<2)|3,{101,115,49}}, +/* 10755 */ {(15<<2)|3,{101,115,49}}, +/* 10756 */ {(15<<2)|3,{101,115,50}}, +/* 10757 */ {(15<<2)|3,{101,115,50}}, +/* 10758 */ {(15<<2)|3,{101,115,97}}, +/* 10759 */ {(15<<2)|3,{101,115,97}}, +/* 10760 */ {(15<<2)|3,{101,115,99}}, +/* 10761 */ {(15<<2)|3,{101,115,99}}, +/* 10762 */ {(15<<2)|3,{101,115,101}}, +/* 10763 */ {(15<<2)|3,{101,115,101}}, +/* 10764 */ {(15<<2)|3,{101,115,105}}, +/* 10765 */ {(15<<2)|3,{101,115,105}}, +/* 10766 */ {(15<<2)|3,{101,115,111}}, +/* 10767 */ {(15<<2)|3,{101,115,111}}, +/* 10768 */ {(15<<2)|3,{101,115,115}}, +/* 10769 */ {(15<<2)|3,{101,115,115}}, +/* 10770 */ {(15<<2)|3,{101,115,116}}, +/* 10771 */ {(15<<2)|3,{101,115,116}}, +/* 10772 */ {(16<<2)|3,{101,115,32}}, +/* 10773 */ {(16<<2)|3,{101,115,37}}, +/* 10774 */ {(16<<2)|3,{101,115,45}}, +/* 10775 */ {(16<<2)|3,{101,115,46}}, +/* 10776 */ {(16<<2)|3,{101,115,47}}, +/* 10777 */ {(16<<2)|3,{101,115,51}}, +/* 10778 */ {(16<<2)|3,{101,115,52}}, +/* 10779 */ {(16<<2)|3,{101,115,53}}, +/* 10780 */ {(16<<2)|3,{101,115,54}}, +/* 10781 */ {(16<<2)|3,{101,115,55}}, +/* 10782 */ {(16<<2)|3,{101,115,56}}, +/* 10783 */ {(16<<2)|3,{101,115,57}}, +/* 10784 */ {(16<<2)|3,{101,115,61}}, +/* 10785 */ {(16<<2)|3,{101,115,65}}, +/* 10786 */ {(16<<2)|3,{101,115,95}}, +/* 10787 */ {(16<<2)|3,{101,115,98}}, +/* 10788 */ {(16<<2)|3,{101,115,100}}, +/* 10789 */ {(16<<2)|3,{101,115,102}}, +/* 10790 */ {(16<<2)|3,{101,115,103}}, +/* 10791 */ {(16<<2)|3,{101,115,104}}, +/* 10792 */ {(16<<2)|3,{101,115,108}}, +/* 10793 */ {(16<<2)|3,{101,115,109}}, +/* 10794 */ {(16<<2)|3,{101,115,110}}, +/* 10795 */ {(16<<2)|3,{101,115,112}}, +/* 10796 */ {(16<<2)|3,{101,115,114}}, +/* 10797 */ {(16<<2)|3,{101,115,117}}, +/* 10798 */ {(10<<2)|2,{101,115,0}}, +/* 10799 */ {(10<<2)|2,{101,115,0}}, +/* 10800 */ {(10<<2)|2,{101,115,0}}, +/* 10801 */ {(10<<2)|2,{101,115,0}}, +/* 10802 */ {(10<<2)|2,{101,115,0}}, +/* 10803 */ {(10<<2)|2,{101,115,0}}, +/* 10804 */ {(10<<2)|2,{101,115,0}}, +/* 10805 */ {(10<<2)|2,{101,115,0}}, +/* 10806 */ {(10<<2)|2,{101,115,0}}, +/* 10807 */ {(10<<2)|2,{101,115,0}}, +/* 10808 */ {(10<<2)|2,{101,115,0}}, +/* 10809 */ {(10<<2)|2,{101,115,0}}, +/* 10810 */ {(10<<2)|2,{101,115,0}}, +/* 10811 */ {(10<<2)|2,{101,115,0}}, +/* 10812 */ {(10<<2)|2,{101,115,0}}, +/* 10813 */ {(10<<2)|2,{101,115,0}}, +/* 10814 */ {(10<<2)|2,{101,115,0}}, +/* 10815 */ {(10<<2)|2,{101,115,0}}, +/* 10816 */ {(15<<2)|3,{101,116,48}}, +/* 10817 */ {(15<<2)|3,{101,116,48}}, +/* 10818 */ {(15<<2)|3,{101,116,49}}, +/* 10819 */ {(15<<2)|3,{101,116,49}}, +/* 10820 */ {(15<<2)|3,{101,116,50}}, +/* 10821 */ {(15<<2)|3,{101,116,50}}, +/* 10822 */ {(15<<2)|3,{101,116,97}}, +/* 10823 */ {(15<<2)|3,{101,116,97}}, +/* 10824 */ {(15<<2)|3,{101,116,99}}, +/* 10825 */ {(15<<2)|3,{101,116,99}}, +/* 10826 */ {(15<<2)|3,{101,116,101}}, +/* 10827 */ {(15<<2)|3,{101,116,101}}, +/* 10828 */ {(15<<2)|3,{101,116,105}}, +/* 10829 */ {(15<<2)|3,{101,116,105}}, +/* 10830 */ {(15<<2)|3,{101,116,111}}, +/* 10831 */ {(15<<2)|3,{101,116,111}}, +/* 10832 */ {(15<<2)|3,{101,116,115}}, +/* 10833 */ {(15<<2)|3,{101,116,115}}, +/* 10834 */ {(15<<2)|3,{101,116,116}}, +/* 10835 */ {(15<<2)|3,{101,116,116}}, +/* 10836 */ {(16<<2)|3,{101,116,32}}, +/* 10837 */ {(16<<2)|3,{101,116,37}}, +/* 10838 */ {(16<<2)|3,{101,116,45}}, +/* 10839 */ {(16<<2)|3,{101,116,46}}, +/* 10840 */ {(16<<2)|3,{101,116,47}}, +/* 10841 */ {(16<<2)|3,{101,116,51}}, +/* 10842 */ {(16<<2)|3,{101,116,52}}, +/* 10843 */ {(16<<2)|3,{101,116,53}}, +/* 10844 */ {(16<<2)|3,{101,116,54}}, +/* 10845 */ {(16<<2)|3,{101,116,55}}, +/* 10846 */ {(16<<2)|3,{101,116,56}}, +/* 10847 */ {(16<<2)|3,{101,116,57}}, +/* 10848 */ {(16<<2)|3,{101,116,61}}, +/* 10849 */ {(16<<2)|3,{101,116,65}}, +/* 10850 */ {(16<<2)|3,{101,116,95}}, +/* 10851 */ {(16<<2)|3,{101,116,98}}, +/* 10852 */ {(16<<2)|3,{101,116,100}}, +/* 10853 */ {(16<<2)|3,{101,116,102}}, +/* 10854 */ {(16<<2)|3,{101,116,103}}, +/* 10855 */ {(16<<2)|3,{101,116,104}}, +/* 10856 */ {(16<<2)|3,{101,116,108}}, +/* 10857 */ {(16<<2)|3,{101,116,109}}, +/* 10858 */ {(16<<2)|3,{101,116,110}}, +/* 10859 */ {(16<<2)|3,{101,116,112}}, +/* 10860 */ {(16<<2)|3,{101,116,114}}, +/* 10861 */ {(16<<2)|3,{101,116,117}}, +/* 10862 */ {(10<<2)|2,{101,116,0}}, +/* 10863 */ {(10<<2)|2,{101,116,0}}, +/* 10864 */ {(10<<2)|2,{101,116,0}}, +/* 10865 */ {(10<<2)|2,{101,116,0}}, +/* 10866 */ {(10<<2)|2,{101,116,0}}, +/* 10867 */ {(10<<2)|2,{101,116,0}}, +/* 10868 */ {(10<<2)|2,{101,116,0}}, +/* 10869 */ {(10<<2)|2,{101,116,0}}, +/* 10870 */ {(10<<2)|2,{101,116,0}}, +/* 10871 */ {(10<<2)|2,{101,116,0}}, +/* 10872 */ {(10<<2)|2,{101,116,0}}, +/* 10873 */ {(10<<2)|2,{101,116,0}}, +/* 10874 */ {(10<<2)|2,{101,116,0}}, +/* 10875 */ {(10<<2)|2,{101,116,0}}, +/* 10876 */ {(10<<2)|2,{101,116,0}}, +/* 10877 */ {(10<<2)|2,{101,116,0}}, +/* 10878 */ {(10<<2)|2,{101,116,0}}, +/* 10879 */ {(10<<2)|2,{101,116,0}}, +/* 10880 */ {(16<<2)|3,{101,32,48}}, +/* 10881 */ {(16<<2)|3,{101,32,49}}, +/* 10882 */ {(16<<2)|3,{101,32,50}}, +/* 10883 */ {(16<<2)|3,{101,32,97}}, +/* 10884 */ {(16<<2)|3,{101,32,99}}, +/* 10885 */ {(16<<2)|3,{101,32,101}}, +/* 10886 */ {(16<<2)|3,{101,32,105}}, +/* 10887 */ {(16<<2)|3,{101,32,111}}, +/* 10888 */ {(16<<2)|3,{101,32,115}}, +/* 10889 */ {(16<<2)|3,{101,32,116}}, +/* 10890 */ {(11<<2)|2,{101,32,0}}, +/* 10891 */ {(11<<2)|2,{101,32,0}}, +/* 10892 */ {(11<<2)|2,{101,32,0}}, +/* 10893 */ {(11<<2)|2,{101,32,0}}, +/* 10894 */ {(11<<2)|2,{101,32,0}}, +/* 10895 */ {(11<<2)|2,{101,32,0}}, +/* 10896 */ {(11<<2)|2,{101,32,0}}, +/* 10897 */ {(11<<2)|2,{101,32,0}}, +/* 10898 */ {(11<<2)|2,{101,32,0}}, +/* 10899 */ {(11<<2)|2,{101,32,0}}, +/* 10900 */ {(11<<2)|2,{101,32,0}}, +/* 10901 */ {(11<<2)|2,{101,32,0}}, +/* 10902 */ {(11<<2)|2,{101,32,0}}, +/* 10903 */ {(11<<2)|2,{101,32,0}}, +/* 10904 */ {(11<<2)|2,{101,32,0}}, +/* 10905 */ {(11<<2)|2,{101,32,0}}, +/* 10906 */ {(11<<2)|2,{101,32,0}}, +/* 10907 */ {(11<<2)|2,{101,32,0}}, +/* 10908 */ {(11<<2)|2,{101,32,0}}, +/* 10909 */ {(11<<2)|2,{101,32,0}}, +/* 10910 */ {(11<<2)|2,{101,32,0}}, +/* 10911 */ {(11<<2)|2,{101,32,0}}, +/* 10912 */ {(16<<2)|3,{101,37,48}}, +/* 10913 */ {(16<<2)|3,{101,37,49}}, +/* 10914 */ {(16<<2)|3,{101,37,50}}, +/* 10915 */ {(16<<2)|3,{101,37,97}}, +/* 10916 */ {(16<<2)|3,{101,37,99}}, +/* 10917 */ {(16<<2)|3,{101,37,101}}, +/* 10918 */ {(16<<2)|3,{101,37,105}}, +/* 10919 */ {(16<<2)|3,{101,37,111}}, +/* 10920 */ {(16<<2)|3,{101,37,115}}, +/* 10921 */ {(16<<2)|3,{101,37,116}}, +/* 10922 */ {(11<<2)|2,{101,37,0}}, +/* 10923 */ {(11<<2)|2,{101,37,0}}, +/* 10924 */ {(11<<2)|2,{101,37,0}}, +/* 10925 */ {(11<<2)|2,{101,37,0}}, +/* 10926 */ {(11<<2)|2,{101,37,0}}, +/* 10927 */ {(11<<2)|2,{101,37,0}}, +/* 10928 */ {(11<<2)|2,{101,37,0}}, +/* 10929 */ {(11<<2)|2,{101,37,0}}, +/* 10930 */ {(11<<2)|2,{101,37,0}}, +/* 10931 */ {(11<<2)|2,{101,37,0}}, +/* 10932 */ {(11<<2)|2,{101,37,0}}, +/* 10933 */ {(11<<2)|2,{101,37,0}}, +/* 10934 */ {(11<<2)|2,{101,37,0}}, +/* 10935 */ {(11<<2)|2,{101,37,0}}, +/* 10936 */ {(11<<2)|2,{101,37,0}}, +/* 10937 */ {(11<<2)|2,{101,37,0}}, +/* 10938 */ {(11<<2)|2,{101,37,0}}, +/* 10939 */ {(11<<2)|2,{101,37,0}}, +/* 10940 */ {(11<<2)|2,{101,37,0}}, +/* 10941 */ {(11<<2)|2,{101,37,0}}, +/* 10942 */ {(11<<2)|2,{101,37,0}}, +/* 10943 */ {(11<<2)|2,{101,37,0}}, +/* 10944 */ {(16<<2)|3,{101,45,48}}, +/* 10945 */ {(16<<2)|3,{101,45,49}}, +/* 10946 */ {(16<<2)|3,{101,45,50}}, +/* 10947 */ {(16<<2)|3,{101,45,97}}, +/* 10948 */ {(16<<2)|3,{101,45,99}}, +/* 10949 */ {(16<<2)|3,{101,45,101}}, +/* 10950 */ {(16<<2)|3,{101,45,105}}, +/* 10951 */ {(16<<2)|3,{101,45,111}}, +/* 10952 */ {(16<<2)|3,{101,45,115}}, +/* 10953 */ {(16<<2)|3,{101,45,116}}, +/* 10954 */ {(11<<2)|2,{101,45,0}}, +/* 10955 */ {(11<<2)|2,{101,45,0}}, +/* 10956 */ {(11<<2)|2,{101,45,0}}, +/* 10957 */ {(11<<2)|2,{101,45,0}}, +/* 10958 */ {(11<<2)|2,{101,45,0}}, +/* 10959 */ {(11<<2)|2,{101,45,0}}, +/* 10960 */ {(11<<2)|2,{101,45,0}}, +/* 10961 */ {(11<<2)|2,{101,45,0}}, +/* 10962 */ {(11<<2)|2,{101,45,0}}, +/* 10963 */ {(11<<2)|2,{101,45,0}}, +/* 10964 */ {(11<<2)|2,{101,45,0}}, +/* 10965 */ {(11<<2)|2,{101,45,0}}, +/* 10966 */ {(11<<2)|2,{101,45,0}}, +/* 10967 */ {(11<<2)|2,{101,45,0}}, +/* 10968 */ {(11<<2)|2,{101,45,0}}, +/* 10969 */ {(11<<2)|2,{101,45,0}}, +/* 10970 */ {(11<<2)|2,{101,45,0}}, +/* 10971 */ {(11<<2)|2,{101,45,0}}, +/* 10972 */ {(11<<2)|2,{101,45,0}}, +/* 10973 */ {(11<<2)|2,{101,45,0}}, +/* 10974 */ {(11<<2)|2,{101,45,0}}, +/* 10975 */ {(11<<2)|2,{101,45,0}}, +/* 10976 */ {(16<<2)|3,{101,46,48}}, +/* 10977 */ {(16<<2)|3,{101,46,49}}, +/* 10978 */ {(16<<2)|3,{101,46,50}}, +/* 10979 */ {(16<<2)|3,{101,46,97}}, +/* 10980 */ {(16<<2)|3,{101,46,99}}, +/* 10981 */ {(16<<2)|3,{101,46,101}}, +/* 10982 */ {(16<<2)|3,{101,46,105}}, +/* 10983 */ {(16<<2)|3,{101,46,111}}, +/* 10984 */ {(16<<2)|3,{101,46,115}}, +/* 10985 */ {(16<<2)|3,{101,46,116}}, +/* 10986 */ {(11<<2)|2,{101,46,0}}, +/* 10987 */ {(11<<2)|2,{101,46,0}}, +/* 10988 */ {(11<<2)|2,{101,46,0}}, +/* 10989 */ {(11<<2)|2,{101,46,0}}, +/* 10990 */ {(11<<2)|2,{101,46,0}}, +/* 10991 */ {(11<<2)|2,{101,46,0}}, +/* 10992 */ {(11<<2)|2,{101,46,0}}, +/* 10993 */ {(11<<2)|2,{101,46,0}}, +/* 10994 */ {(11<<2)|2,{101,46,0}}, +/* 10995 */ {(11<<2)|2,{101,46,0}}, +/* 10996 */ {(11<<2)|2,{101,46,0}}, +/* 10997 */ {(11<<2)|2,{101,46,0}}, +/* 10998 */ {(11<<2)|2,{101,46,0}}, +/* 10999 */ {(11<<2)|2,{101,46,0}}, +/* 11000 */ {(11<<2)|2,{101,46,0}}, +/* 11001 */ {(11<<2)|2,{101,46,0}}, +/* 11002 */ {(11<<2)|2,{101,46,0}}, +/* 11003 */ {(11<<2)|2,{101,46,0}}, +/* 11004 */ {(11<<2)|2,{101,46,0}}, +/* 11005 */ {(11<<2)|2,{101,46,0}}, +/* 11006 */ {(11<<2)|2,{101,46,0}}, +/* 11007 */ {(11<<2)|2,{101,46,0}}, +/* 11008 */ {(16<<2)|3,{101,47,48}}, +/* 11009 */ {(16<<2)|3,{101,47,49}}, +/* 11010 */ {(16<<2)|3,{101,47,50}}, +/* 11011 */ {(16<<2)|3,{101,47,97}}, +/* 11012 */ {(16<<2)|3,{101,47,99}}, +/* 11013 */ {(16<<2)|3,{101,47,101}}, +/* 11014 */ {(16<<2)|3,{101,47,105}}, +/* 11015 */ {(16<<2)|3,{101,47,111}}, +/* 11016 */ {(16<<2)|3,{101,47,115}}, +/* 11017 */ {(16<<2)|3,{101,47,116}}, +/* 11018 */ {(11<<2)|2,{101,47,0}}, +/* 11019 */ {(11<<2)|2,{101,47,0}}, +/* 11020 */ {(11<<2)|2,{101,47,0}}, +/* 11021 */ {(11<<2)|2,{101,47,0}}, +/* 11022 */ {(11<<2)|2,{101,47,0}}, +/* 11023 */ {(11<<2)|2,{101,47,0}}, +/* 11024 */ {(11<<2)|2,{101,47,0}}, +/* 11025 */ {(11<<2)|2,{101,47,0}}, +/* 11026 */ {(11<<2)|2,{101,47,0}}, +/* 11027 */ {(11<<2)|2,{101,47,0}}, +/* 11028 */ {(11<<2)|2,{101,47,0}}, +/* 11029 */ {(11<<2)|2,{101,47,0}}, +/* 11030 */ {(11<<2)|2,{101,47,0}}, +/* 11031 */ {(11<<2)|2,{101,47,0}}, +/* 11032 */ {(11<<2)|2,{101,47,0}}, +/* 11033 */ {(11<<2)|2,{101,47,0}}, +/* 11034 */ {(11<<2)|2,{101,47,0}}, +/* 11035 */ {(11<<2)|2,{101,47,0}}, +/* 11036 */ {(11<<2)|2,{101,47,0}}, +/* 11037 */ {(11<<2)|2,{101,47,0}}, +/* 11038 */ {(11<<2)|2,{101,47,0}}, +/* 11039 */ {(11<<2)|2,{101,47,0}}, +/* 11040 */ {(16<<2)|3,{101,51,48}}, +/* 11041 */ {(16<<2)|3,{101,51,49}}, +/* 11042 */ {(16<<2)|3,{101,51,50}}, +/* 11043 */ {(16<<2)|3,{101,51,97}}, +/* 11044 */ {(16<<2)|3,{101,51,99}}, +/* 11045 */ {(16<<2)|3,{101,51,101}}, +/* 11046 */ {(16<<2)|3,{101,51,105}}, +/* 11047 */ {(16<<2)|3,{101,51,111}}, +/* 11048 */ {(16<<2)|3,{101,51,115}}, +/* 11049 */ {(16<<2)|3,{101,51,116}}, +/* 11050 */ {(11<<2)|2,{101,51,0}}, +/* 11051 */ {(11<<2)|2,{101,51,0}}, +/* 11052 */ {(11<<2)|2,{101,51,0}}, +/* 11053 */ {(11<<2)|2,{101,51,0}}, +/* 11054 */ {(11<<2)|2,{101,51,0}}, +/* 11055 */ {(11<<2)|2,{101,51,0}}, +/* 11056 */ {(11<<2)|2,{101,51,0}}, +/* 11057 */ {(11<<2)|2,{101,51,0}}, +/* 11058 */ {(11<<2)|2,{101,51,0}}, +/* 11059 */ {(11<<2)|2,{101,51,0}}, +/* 11060 */ {(11<<2)|2,{101,51,0}}, +/* 11061 */ {(11<<2)|2,{101,51,0}}, +/* 11062 */ {(11<<2)|2,{101,51,0}}, +/* 11063 */ {(11<<2)|2,{101,51,0}}, +/* 11064 */ {(11<<2)|2,{101,51,0}}, +/* 11065 */ {(11<<2)|2,{101,51,0}}, +/* 11066 */ {(11<<2)|2,{101,51,0}}, +/* 11067 */ {(11<<2)|2,{101,51,0}}, +/* 11068 */ {(11<<2)|2,{101,51,0}}, +/* 11069 */ {(11<<2)|2,{101,51,0}}, +/* 11070 */ {(11<<2)|2,{101,51,0}}, +/* 11071 */ {(11<<2)|2,{101,51,0}}, +/* 11072 */ {(16<<2)|3,{101,52,48}}, +/* 11073 */ {(16<<2)|3,{101,52,49}}, +/* 11074 */ {(16<<2)|3,{101,52,50}}, +/* 11075 */ {(16<<2)|3,{101,52,97}}, +/* 11076 */ {(16<<2)|3,{101,52,99}}, +/* 11077 */ {(16<<2)|3,{101,52,101}}, +/* 11078 */ {(16<<2)|3,{101,52,105}}, +/* 11079 */ {(16<<2)|3,{101,52,111}}, +/* 11080 */ {(16<<2)|3,{101,52,115}}, +/* 11081 */ {(16<<2)|3,{101,52,116}}, +/* 11082 */ {(11<<2)|2,{101,52,0}}, +/* 11083 */ {(11<<2)|2,{101,52,0}}, +/* 11084 */ {(11<<2)|2,{101,52,0}}, +/* 11085 */ {(11<<2)|2,{101,52,0}}, +/* 11086 */ {(11<<2)|2,{101,52,0}}, +/* 11087 */ {(11<<2)|2,{101,52,0}}, +/* 11088 */ {(11<<2)|2,{101,52,0}}, +/* 11089 */ {(11<<2)|2,{101,52,0}}, +/* 11090 */ {(11<<2)|2,{101,52,0}}, +/* 11091 */ {(11<<2)|2,{101,52,0}}, +/* 11092 */ {(11<<2)|2,{101,52,0}}, +/* 11093 */ {(11<<2)|2,{101,52,0}}, +/* 11094 */ {(11<<2)|2,{101,52,0}}, +/* 11095 */ {(11<<2)|2,{101,52,0}}, +/* 11096 */ {(11<<2)|2,{101,52,0}}, +/* 11097 */ {(11<<2)|2,{101,52,0}}, +/* 11098 */ {(11<<2)|2,{101,52,0}}, +/* 11099 */ {(11<<2)|2,{101,52,0}}, +/* 11100 */ {(11<<2)|2,{101,52,0}}, +/* 11101 */ {(11<<2)|2,{101,52,0}}, +/* 11102 */ {(11<<2)|2,{101,52,0}}, +/* 11103 */ {(11<<2)|2,{101,52,0}}, +/* 11104 */ {(16<<2)|3,{101,53,48}}, +/* 11105 */ {(16<<2)|3,{101,53,49}}, +/* 11106 */ {(16<<2)|3,{101,53,50}}, +/* 11107 */ {(16<<2)|3,{101,53,97}}, +/* 11108 */ {(16<<2)|3,{101,53,99}}, +/* 11109 */ {(16<<2)|3,{101,53,101}}, +/* 11110 */ {(16<<2)|3,{101,53,105}}, +/* 11111 */ {(16<<2)|3,{101,53,111}}, +/* 11112 */ {(16<<2)|3,{101,53,115}}, +/* 11113 */ {(16<<2)|3,{101,53,116}}, +/* 11114 */ {(11<<2)|2,{101,53,0}}, +/* 11115 */ {(11<<2)|2,{101,53,0}}, +/* 11116 */ {(11<<2)|2,{101,53,0}}, +/* 11117 */ {(11<<2)|2,{101,53,0}}, +/* 11118 */ {(11<<2)|2,{101,53,0}}, +/* 11119 */ {(11<<2)|2,{101,53,0}}, +/* 11120 */ {(11<<2)|2,{101,53,0}}, +/* 11121 */ {(11<<2)|2,{101,53,0}}, +/* 11122 */ {(11<<2)|2,{101,53,0}}, +/* 11123 */ {(11<<2)|2,{101,53,0}}, +/* 11124 */ {(11<<2)|2,{101,53,0}}, +/* 11125 */ {(11<<2)|2,{101,53,0}}, +/* 11126 */ {(11<<2)|2,{101,53,0}}, +/* 11127 */ {(11<<2)|2,{101,53,0}}, +/* 11128 */ {(11<<2)|2,{101,53,0}}, +/* 11129 */ {(11<<2)|2,{101,53,0}}, +/* 11130 */ {(11<<2)|2,{101,53,0}}, +/* 11131 */ {(11<<2)|2,{101,53,0}}, +/* 11132 */ {(11<<2)|2,{101,53,0}}, +/* 11133 */ {(11<<2)|2,{101,53,0}}, +/* 11134 */ {(11<<2)|2,{101,53,0}}, +/* 11135 */ {(11<<2)|2,{101,53,0}}, +/* 11136 */ {(16<<2)|3,{101,54,48}}, +/* 11137 */ {(16<<2)|3,{101,54,49}}, +/* 11138 */ {(16<<2)|3,{101,54,50}}, +/* 11139 */ {(16<<2)|3,{101,54,97}}, +/* 11140 */ {(16<<2)|3,{101,54,99}}, +/* 11141 */ {(16<<2)|3,{101,54,101}}, +/* 11142 */ {(16<<2)|3,{101,54,105}}, +/* 11143 */ {(16<<2)|3,{101,54,111}}, +/* 11144 */ {(16<<2)|3,{101,54,115}}, +/* 11145 */ {(16<<2)|3,{101,54,116}}, +/* 11146 */ {(11<<2)|2,{101,54,0}}, +/* 11147 */ {(11<<2)|2,{101,54,0}}, +/* 11148 */ {(11<<2)|2,{101,54,0}}, +/* 11149 */ {(11<<2)|2,{101,54,0}}, +/* 11150 */ {(11<<2)|2,{101,54,0}}, +/* 11151 */ {(11<<2)|2,{101,54,0}}, +/* 11152 */ {(11<<2)|2,{101,54,0}}, +/* 11153 */ {(11<<2)|2,{101,54,0}}, +/* 11154 */ {(11<<2)|2,{101,54,0}}, +/* 11155 */ {(11<<2)|2,{101,54,0}}, +/* 11156 */ {(11<<2)|2,{101,54,0}}, +/* 11157 */ {(11<<2)|2,{101,54,0}}, +/* 11158 */ {(11<<2)|2,{101,54,0}}, +/* 11159 */ {(11<<2)|2,{101,54,0}}, +/* 11160 */ {(11<<2)|2,{101,54,0}}, +/* 11161 */ {(11<<2)|2,{101,54,0}}, +/* 11162 */ {(11<<2)|2,{101,54,0}}, +/* 11163 */ {(11<<2)|2,{101,54,0}}, +/* 11164 */ {(11<<2)|2,{101,54,0}}, +/* 11165 */ {(11<<2)|2,{101,54,0}}, +/* 11166 */ {(11<<2)|2,{101,54,0}}, +/* 11167 */ {(11<<2)|2,{101,54,0}}, +/* 11168 */ {(16<<2)|3,{101,55,48}}, +/* 11169 */ {(16<<2)|3,{101,55,49}}, +/* 11170 */ {(16<<2)|3,{101,55,50}}, +/* 11171 */ {(16<<2)|3,{101,55,97}}, +/* 11172 */ {(16<<2)|3,{101,55,99}}, +/* 11173 */ {(16<<2)|3,{101,55,101}}, +/* 11174 */ {(16<<2)|3,{101,55,105}}, +/* 11175 */ {(16<<2)|3,{101,55,111}}, +/* 11176 */ {(16<<2)|3,{101,55,115}}, +/* 11177 */ {(16<<2)|3,{101,55,116}}, +/* 11178 */ {(11<<2)|2,{101,55,0}}, +/* 11179 */ {(11<<2)|2,{101,55,0}}, +/* 11180 */ {(11<<2)|2,{101,55,0}}, +/* 11181 */ {(11<<2)|2,{101,55,0}}, +/* 11182 */ {(11<<2)|2,{101,55,0}}, +/* 11183 */ {(11<<2)|2,{101,55,0}}, +/* 11184 */ {(11<<2)|2,{101,55,0}}, +/* 11185 */ {(11<<2)|2,{101,55,0}}, +/* 11186 */ {(11<<2)|2,{101,55,0}}, +/* 11187 */ {(11<<2)|2,{101,55,0}}, +/* 11188 */ {(11<<2)|2,{101,55,0}}, +/* 11189 */ {(11<<2)|2,{101,55,0}}, +/* 11190 */ {(11<<2)|2,{101,55,0}}, +/* 11191 */ {(11<<2)|2,{101,55,0}}, +/* 11192 */ {(11<<2)|2,{101,55,0}}, +/* 11193 */ {(11<<2)|2,{101,55,0}}, +/* 11194 */ {(11<<2)|2,{101,55,0}}, +/* 11195 */ {(11<<2)|2,{101,55,0}}, +/* 11196 */ {(11<<2)|2,{101,55,0}}, +/* 11197 */ {(11<<2)|2,{101,55,0}}, +/* 11198 */ {(11<<2)|2,{101,55,0}}, +/* 11199 */ {(11<<2)|2,{101,55,0}}, +/* 11200 */ {(16<<2)|3,{101,56,48}}, +/* 11201 */ {(16<<2)|3,{101,56,49}}, +/* 11202 */ {(16<<2)|3,{101,56,50}}, +/* 11203 */ {(16<<2)|3,{101,56,97}}, +/* 11204 */ {(16<<2)|3,{101,56,99}}, +/* 11205 */ {(16<<2)|3,{101,56,101}}, +/* 11206 */ {(16<<2)|3,{101,56,105}}, +/* 11207 */ {(16<<2)|3,{101,56,111}}, +/* 11208 */ {(16<<2)|3,{101,56,115}}, +/* 11209 */ {(16<<2)|3,{101,56,116}}, +/* 11210 */ {(11<<2)|2,{101,56,0}}, +/* 11211 */ {(11<<2)|2,{101,56,0}}, +/* 11212 */ {(11<<2)|2,{101,56,0}}, +/* 11213 */ {(11<<2)|2,{101,56,0}}, +/* 11214 */ {(11<<2)|2,{101,56,0}}, +/* 11215 */ {(11<<2)|2,{101,56,0}}, +/* 11216 */ {(11<<2)|2,{101,56,0}}, +/* 11217 */ {(11<<2)|2,{101,56,0}}, +/* 11218 */ {(11<<2)|2,{101,56,0}}, +/* 11219 */ {(11<<2)|2,{101,56,0}}, +/* 11220 */ {(11<<2)|2,{101,56,0}}, +/* 11221 */ {(11<<2)|2,{101,56,0}}, +/* 11222 */ {(11<<2)|2,{101,56,0}}, +/* 11223 */ {(11<<2)|2,{101,56,0}}, +/* 11224 */ {(11<<2)|2,{101,56,0}}, +/* 11225 */ {(11<<2)|2,{101,56,0}}, +/* 11226 */ {(11<<2)|2,{101,56,0}}, +/* 11227 */ {(11<<2)|2,{101,56,0}}, +/* 11228 */ {(11<<2)|2,{101,56,0}}, +/* 11229 */ {(11<<2)|2,{101,56,0}}, +/* 11230 */ {(11<<2)|2,{101,56,0}}, +/* 11231 */ {(11<<2)|2,{101,56,0}}, +/* 11232 */ {(16<<2)|3,{101,57,48}}, +/* 11233 */ {(16<<2)|3,{101,57,49}}, +/* 11234 */ {(16<<2)|3,{101,57,50}}, +/* 11235 */ {(16<<2)|3,{101,57,97}}, +/* 11236 */ {(16<<2)|3,{101,57,99}}, +/* 11237 */ {(16<<2)|3,{101,57,101}}, +/* 11238 */ {(16<<2)|3,{101,57,105}}, +/* 11239 */ {(16<<2)|3,{101,57,111}}, +/* 11240 */ {(16<<2)|3,{101,57,115}}, +/* 11241 */ {(16<<2)|3,{101,57,116}}, +/* 11242 */ {(11<<2)|2,{101,57,0}}, +/* 11243 */ {(11<<2)|2,{101,57,0}}, +/* 11244 */ {(11<<2)|2,{101,57,0}}, +/* 11245 */ {(11<<2)|2,{101,57,0}}, +/* 11246 */ {(11<<2)|2,{101,57,0}}, +/* 11247 */ {(11<<2)|2,{101,57,0}}, +/* 11248 */ {(11<<2)|2,{101,57,0}}, +/* 11249 */ {(11<<2)|2,{101,57,0}}, +/* 11250 */ {(11<<2)|2,{101,57,0}}, +/* 11251 */ {(11<<2)|2,{101,57,0}}, +/* 11252 */ {(11<<2)|2,{101,57,0}}, +/* 11253 */ {(11<<2)|2,{101,57,0}}, +/* 11254 */ {(11<<2)|2,{101,57,0}}, +/* 11255 */ {(11<<2)|2,{101,57,0}}, +/* 11256 */ {(11<<2)|2,{101,57,0}}, +/* 11257 */ {(11<<2)|2,{101,57,0}}, +/* 11258 */ {(11<<2)|2,{101,57,0}}, +/* 11259 */ {(11<<2)|2,{101,57,0}}, +/* 11260 */ {(11<<2)|2,{101,57,0}}, +/* 11261 */ {(11<<2)|2,{101,57,0}}, +/* 11262 */ {(11<<2)|2,{101,57,0}}, +/* 11263 */ {(11<<2)|2,{101,57,0}}, +/* 11264 */ {(16<<2)|3,{101,61,48}}, +/* 11265 */ {(16<<2)|3,{101,61,49}}, +/* 11266 */ {(16<<2)|3,{101,61,50}}, +/* 11267 */ {(16<<2)|3,{101,61,97}}, +/* 11268 */ {(16<<2)|3,{101,61,99}}, +/* 11269 */ {(16<<2)|3,{101,61,101}}, +/* 11270 */ {(16<<2)|3,{101,61,105}}, +/* 11271 */ {(16<<2)|3,{101,61,111}}, +/* 11272 */ {(16<<2)|3,{101,61,115}}, +/* 11273 */ {(16<<2)|3,{101,61,116}}, +/* 11274 */ {(11<<2)|2,{101,61,0}}, +/* 11275 */ {(11<<2)|2,{101,61,0}}, +/* 11276 */ {(11<<2)|2,{101,61,0}}, +/* 11277 */ {(11<<2)|2,{101,61,0}}, +/* 11278 */ {(11<<2)|2,{101,61,0}}, +/* 11279 */ {(11<<2)|2,{101,61,0}}, +/* 11280 */ {(11<<2)|2,{101,61,0}}, +/* 11281 */ {(11<<2)|2,{101,61,0}}, +/* 11282 */ {(11<<2)|2,{101,61,0}}, +/* 11283 */ {(11<<2)|2,{101,61,0}}, +/* 11284 */ {(11<<2)|2,{101,61,0}}, +/* 11285 */ {(11<<2)|2,{101,61,0}}, +/* 11286 */ {(11<<2)|2,{101,61,0}}, +/* 11287 */ {(11<<2)|2,{101,61,0}}, +/* 11288 */ {(11<<2)|2,{101,61,0}}, +/* 11289 */ {(11<<2)|2,{101,61,0}}, +/* 11290 */ {(11<<2)|2,{101,61,0}}, +/* 11291 */ {(11<<2)|2,{101,61,0}}, +/* 11292 */ {(11<<2)|2,{101,61,0}}, +/* 11293 */ {(11<<2)|2,{101,61,0}}, +/* 11294 */ {(11<<2)|2,{101,61,0}}, +/* 11295 */ {(11<<2)|2,{101,61,0}}, +/* 11296 */ {(16<<2)|3,{101,65,48}}, +/* 11297 */ {(16<<2)|3,{101,65,49}}, +/* 11298 */ {(16<<2)|3,{101,65,50}}, +/* 11299 */ {(16<<2)|3,{101,65,97}}, +/* 11300 */ {(16<<2)|3,{101,65,99}}, +/* 11301 */ {(16<<2)|3,{101,65,101}}, +/* 11302 */ {(16<<2)|3,{101,65,105}}, +/* 11303 */ {(16<<2)|3,{101,65,111}}, +/* 11304 */ {(16<<2)|3,{101,65,115}}, +/* 11305 */ {(16<<2)|3,{101,65,116}}, +/* 11306 */ {(11<<2)|2,{101,65,0}}, +/* 11307 */ {(11<<2)|2,{101,65,0}}, +/* 11308 */ {(11<<2)|2,{101,65,0}}, +/* 11309 */ {(11<<2)|2,{101,65,0}}, +/* 11310 */ {(11<<2)|2,{101,65,0}}, +/* 11311 */ {(11<<2)|2,{101,65,0}}, +/* 11312 */ {(11<<2)|2,{101,65,0}}, +/* 11313 */ {(11<<2)|2,{101,65,0}}, +/* 11314 */ {(11<<2)|2,{101,65,0}}, +/* 11315 */ {(11<<2)|2,{101,65,0}}, +/* 11316 */ {(11<<2)|2,{101,65,0}}, +/* 11317 */ {(11<<2)|2,{101,65,0}}, +/* 11318 */ {(11<<2)|2,{101,65,0}}, +/* 11319 */ {(11<<2)|2,{101,65,0}}, +/* 11320 */ {(11<<2)|2,{101,65,0}}, +/* 11321 */ {(11<<2)|2,{101,65,0}}, +/* 11322 */ {(11<<2)|2,{101,65,0}}, +/* 11323 */ {(11<<2)|2,{101,65,0}}, +/* 11324 */ {(11<<2)|2,{101,65,0}}, +/* 11325 */ {(11<<2)|2,{101,65,0}}, +/* 11326 */ {(11<<2)|2,{101,65,0}}, +/* 11327 */ {(11<<2)|2,{101,65,0}}, +/* 11328 */ {(16<<2)|3,{101,95,48}}, +/* 11329 */ {(16<<2)|3,{101,95,49}}, +/* 11330 */ {(16<<2)|3,{101,95,50}}, +/* 11331 */ {(16<<2)|3,{101,95,97}}, +/* 11332 */ {(16<<2)|3,{101,95,99}}, +/* 11333 */ {(16<<2)|3,{101,95,101}}, +/* 11334 */ {(16<<2)|3,{101,95,105}}, +/* 11335 */ {(16<<2)|3,{101,95,111}}, +/* 11336 */ {(16<<2)|3,{101,95,115}}, +/* 11337 */ {(16<<2)|3,{101,95,116}}, +/* 11338 */ {(11<<2)|2,{101,95,0}}, +/* 11339 */ {(11<<2)|2,{101,95,0}}, +/* 11340 */ {(11<<2)|2,{101,95,0}}, +/* 11341 */ {(11<<2)|2,{101,95,0}}, +/* 11342 */ {(11<<2)|2,{101,95,0}}, +/* 11343 */ {(11<<2)|2,{101,95,0}}, +/* 11344 */ {(11<<2)|2,{101,95,0}}, +/* 11345 */ {(11<<2)|2,{101,95,0}}, +/* 11346 */ {(11<<2)|2,{101,95,0}}, +/* 11347 */ {(11<<2)|2,{101,95,0}}, +/* 11348 */ {(11<<2)|2,{101,95,0}}, +/* 11349 */ {(11<<2)|2,{101,95,0}}, +/* 11350 */ {(11<<2)|2,{101,95,0}}, +/* 11351 */ {(11<<2)|2,{101,95,0}}, +/* 11352 */ {(11<<2)|2,{101,95,0}}, +/* 11353 */ {(11<<2)|2,{101,95,0}}, +/* 11354 */ {(11<<2)|2,{101,95,0}}, +/* 11355 */ {(11<<2)|2,{101,95,0}}, +/* 11356 */ {(11<<2)|2,{101,95,0}}, +/* 11357 */ {(11<<2)|2,{101,95,0}}, +/* 11358 */ {(11<<2)|2,{101,95,0}}, +/* 11359 */ {(11<<2)|2,{101,95,0}}, +/* 11360 */ {(16<<2)|3,{101,98,48}}, +/* 11361 */ {(16<<2)|3,{101,98,49}}, +/* 11362 */ {(16<<2)|3,{101,98,50}}, +/* 11363 */ {(16<<2)|3,{101,98,97}}, +/* 11364 */ {(16<<2)|3,{101,98,99}}, +/* 11365 */ {(16<<2)|3,{101,98,101}}, +/* 11366 */ {(16<<2)|3,{101,98,105}}, +/* 11367 */ {(16<<2)|3,{101,98,111}}, +/* 11368 */ {(16<<2)|3,{101,98,115}}, +/* 11369 */ {(16<<2)|3,{101,98,116}}, +/* 11370 */ {(11<<2)|2,{101,98,0}}, +/* 11371 */ {(11<<2)|2,{101,98,0}}, +/* 11372 */ {(11<<2)|2,{101,98,0}}, +/* 11373 */ {(11<<2)|2,{101,98,0}}, +/* 11374 */ {(11<<2)|2,{101,98,0}}, +/* 11375 */ {(11<<2)|2,{101,98,0}}, +/* 11376 */ {(11<<2)|2,{101,98,0}}, +/* 11377 */ {(11<<2)|2,{101,98,0}}, +/* 11378 */ {(11<<2)|2,{101,98,0}}, +/* 11379 */ {(11<<2)|2,{101,98,0}}, +/* 11380 */ {(11<<2)|2,{101,98,0}}, +/* 11381 */ {(11<<2)|2,{101,98,0}}, +/* 11382 */ {(11<<2)|2,{101,98,0}}, +/* 11383 */ {(11<<2)|2,{101,98,0}}, +/* 11384 */ {(11<<2)|2,{101,98,0}}, +/* 11385 */ {(11<<2)|2,{101,98,0}}, +/* 11386 */ {(11<<2)|2,{101,98,0}}, +/* 11387 */ {(11<<2)|2,{101,98,0}}, +/* 11388 */ {(11<<2)|2,{101,98,0}}, +/* 11389 */ {(11<<2)|2,{101,98,0}}, +/* 11390 */ {(11<<2)|2,{101,98,0}}, +/* 11391 */ {(11<<2)|2,{101,98,0}}, +/* 11392 */ {(16<<2)|3,{101,100,48}}, +/* 11393 */ {(16<<2)|3,{101,100,49}}, +/* 11394 */ {(16<<2)|3,{101,100,50}}, +/* 11395 */ {(16<<2)|3,{101,100,97}}, +/* 11396 */ {(16<<2)|3,{101,100,99}}, +/* 11397 */ {(16<<2)|3,{101,100,101}}, +/* 11398 */ {(16<<2)|3,{101,100,105}}, +/* 11399 */ {(16<<2)|3,{101,100,111}}, +/* 11400 */ {(16<<2)|3,{101,100,115}}, +/* 11401 */ {(16<<2)|3,{101,100,116}}, +/* 11402 */ {(11<<2)|2,{101,100,0}}, +/* 11403 */ {(11<<2)|2,{101,100,0}}, +/* 11404 */ {(11<<2)|2,{101,100,0}}, +/* 11405 */ {(11<<2)|2,{101,100,0}}, +/* 11406 */ {(11<<2)|2,{101,100,0}}, +/* 11407 */ {(11<<2)|2,{101,100,0}}, +/* 11408 */ {(11<<2)|2,{101,100,0}}, +/* 11409 */ {(11<<2)|2,{101,100,0}}, +/* 11410 */ {(11<<2)|2,{101,100,0}}, +/* 11411 */ {(11<<2)|2,{101,100,0}}, +/* 11412 */ {(11<<2)|2,{101,100,0}}, +/* 11413 */ {(11<<2)|2,{101,100,0}}, +/* 11414 */ {(11<<2)|2,{101,100,0}}, +/* 11415 */ {(11<<2)|2,{101,100,0}}, +/* 11416 */ {(11<<2)|2,{101,100,0}}, +/* 11417 */ {(11<<2)|2,{101,100,0}}, +/* 11418 */ {(11<<2)|2,{101,100,0}}, +/* 11419 */ {(11<<2)|2,{101,100,0}}, +/* 11420 */ {(11<<2)|2,{101,100,0}}, +/* 11421 */ {(11<<2)|2,{101,100,0}}, +/* 11422 */ {(11<<2)|2,{101,100,0}}, +/* 11423 */ {(11<<2)|2,{101,100,0}}, +/* 11424 */ {(16<<2)|3,{101,102,48}}, +/* 11425 */ {(16<<2)|3,{101,102,49}}, +/* 11426 */ {(16<<2)|3,{101,102,50}}, +/* 11427 */ {(16<<2)|3,{101,102,97}}, +/* 11428 */ {(16<<2)|3,{101,102,99}}, +/* 11429 */ {(16<<2)|3,{101,102,101}}, +/* 11430 */ {(16<<2)|3,{101,102,105}}, +/* 11431 */ {(16<<2)|3,{101,102,111}}, +/* 11432 */ {(16<<2)|3,{101,102,115}}, +/* 11433 */ {(16<<2)|3,{101,102,116}}, +/* 11434 */ {(11<<2)|2,{101,102,0}}, +/* 11435 */ {(11<<2)|2,{101,102,0}}, +/* 11436 */ {(11<<2)|2,{101,102,0}}, +/* 11437 */ {(11<<2)|2,{101,102,0}}, +/* 11438 */ {(11<<2)|2,{101,102,0}}, +/* 11439 */ {(11<<2)|2,{101,102,0}}, +/* 11440 */ {(11<<2)|2,{101,102,0}}, +/* 11441 */ {(11<<2)|2,{101,102,0}}, +/* 11442 */ {(11<<2)|2,{101,102,0}}, +/* 11443 */ {(11<<2)|2,{101,102,0}}, +/* 11444 */ {(11<<2)|2,{101,102,0}}, +/* 11445 */ {(11<<2)|2,{101,102,0}}, +/* 11446 */ {(11<<2)|2,{101,102,0}}, +/* 11447 */ {(11<<2)|2,{101,102,0}}, +/* 11448 */ {(11<<2)|2,{101,102,0}}, +/* 11449 */ {(11<<2)|2,{101,102,0}}, +/* 11450 */ {(11<<2)|2,{101,102,0}}, +/* 11451 */ {(11<<2)|2,{101,102,0}}, +/* 11452 */ {(11<<2)|2,{101,102,0}}, +/* 11453 */ {(11<<2)|2,{101,102,0}}, +/* 11454 */ {(11<<2)|2,{101,102,0}}, +/* 11455 */ {(11<<2)|2,{101,102,0}}, +/* 11456 */ {(16<<2)|3,{101,103,48}}, +/* 11457 */ {(16<<2)|3,{101,103,49}}, +/* 11458 */ {(16<<2)|3,{101,103,50}}, +/* 11459 */ {(16<<2)|3,{101,103,97}}, +/* 11460 */ {(16<<2)|3,{101,103,99}}, +/* 11461 */ {(16<<2)|3,{101,103,101}}, +/* 11462 */ {(16<<2)|3,{101,103,105}}, +/* 11463 */ {(16<<2)|3,{101,103,111}}, +/* 11464 */ {(16<<2)|3,{101,103,115}}, +/* 11465 */ {(16<<2)|3,{101,103,116}}, +/* 11466 */ {(11<<2)|2,{101,103,0}}, +/* 11467 */ {(11<<2)|2,{101,103,0}}, +/* 11468 */ {(11<<2)|2,{101,103,0}}, +/* 11469 */ {(11<<2)|2,{101,103,0}}, +/* 11470 */ {(11<<2)|2,{101,103,0}}, +/* 11471 */ {(11<<2)|2,{101,103,0}}, +/* 11472 */ {(11<<2)|2,{101,103,0}}, +/* 11473 */ {(11<<2)|2,{101,103,0}}, +/* 11474 */ {(11<<2)|2,{101,103,0}}, +/* 11475 */ {(11<<2)|2,{101,103,0}}, +/* 11476 */ {(11<<2)|2,{101,103,0}}, +/* 11477 */ {(11<<2)|2,{101,103,0}}, +/* 11478 */ {(11<<2)|2,{101,103,0}}, +/* 11479 */ {(11<<2)|2,{101,103,0}}, +/* 11480 */ {(11<<2)|2,{101,103,0}}, +/* 11481 */ {(11<<2)|2,{101,103,0}}, +/* 11482 */ {(11<<2)|2,{101,103,0}}, +/* 11483 */ {(11<<2)|2,{101,103,0}}, +/* 11484 */ {(11<<2)|2,{101,103,0}}, +/* 11485 */ {(11<<2)|2,{101,103,0}}, +/* 11486 */ {(11<<2)|2,{101,103,0}}, +/* 11487 */ {(11<<2)|2,{101,103,0}}, +/* 11488 */ {(16<<2)|3,{101,104,48}}, +/* 11489 */ {(16<<2)|3,{101,104,49}}, +/* 11490 */ {(16<<2)|3,{101,104,50}}, +/* 11491 */ {(16<<2)|3,{101,104,97}}, +/* 11492 */ {(16<<2)|3,{101,104,99}}, +/* 11493 */ {(16<<2)|3,{101,104,101}}, +/* 11494 */ {(16<<2)|3,{101,104,105}}, +/* 11495 */ {(16<<2)|3,{101,104,111}}, +/* 11496 */ {(16<<2)|3,{101,104,115}}, +/* 11497 */ {(16<<2)|3,{101,104,116}}, +/* 11498 */ {(11<<2)|2,{101,104,0}}, +/* 11499 */ {(11<<2)|2,{101,104,0}}, +/* 11500 */ {(11<<2)|2,{101,104,0}}, +/* 11501 */ {(11<<2)|2,{101,104,0}}, +/* 11502 */ {(11<<2)|2,{101,104,0}}, +/* 11503 */ {(11<<2)|2,{101,104,0}}, +/* 11504 */ {(11<<2)|2,{101,104,0}}, +/* 11505 */ {(11<<2)|2,{101,104,0}}, +/* 11506 */ {(11<<2)|2,{101,104,0}}, +/* 11507 */ {(11<<2)|2,{101,104,0}}, +/* 11508 */ {(11<<2)|2,{101,104,0}}, +/* 11509 */ {(11<<2)|2,{101,104,0}}, +/* 11510 */ {(11<<2)|2,{101,104,0}}, +/* 11511 */ {(11<<2)|2,{101,104,0}}, +/* 11512 */ {(11<<2)|2,{101,104,0}}, +/* 11513 */ {(11<<2)|2,{101,104,0}}, +/* 11514 */ {(11<<2)|2,{101,104,0}}, +/* 11515 */ {(11<<2)|2,{101,104,0}}, +/* 11516 */ {(11<<2)|2,{101,104,0}}, +/* 11517 */ {(11<<2)|2,{101,104,0}}, +/* 11518 */ {(11<<2)|2,{101,104,0}}, +/* 11519 */ {(11<<2)|2,{101,104,0}}, +/* 11520 */ {(16<<2)|3,{101,108,48}}, +/* 11521 */ {(16<<2)|3,{101,108,49}}, +/* 11522 */ {(16<<2)|3,{101,108,50}}, +/* 11523 */ {(16<<2)|3,{101,108,97}}, +/* 11524 */ {(16<<2)|3,{101,108,99}}, +/* 11525 */ {(16<<2)|3,{101,108,101}}, +/* 11526 */ {(16<<2)|3,{101,108,105}}, +/* 11527 */ {(16<<2)|3,{101,108,111}}, +/* 11528 */ {(16<<2)|3,{101,108,115}}, +/* 11529 */ {(16<<2)|3,{101,108,116}}, +/* 11530 */ {(11<<2)|2,{101,108,0}}, +/* 11531 */ {(11<<2)|2,{101,108,0}}, +/* 11532 */ {(11<<2)|2,{101,108,0}}, +/* 11533 */ {(11<<2)|2,{101,108,0}}, +/* 11534 */ {(11<<2)|2,{101,108,0}}, +/* 11535 */ {(11<<2)|2,{101,108,0}}, +/* 11536 */ {(11<<2)|2,{101,108,0}}, +/* 11537 */ {(11<<2)|2,{101,108,0}}, +/* 11538 */ {(11<<2)|2,{101,108,0}}, +/* 11539 */ {(11<<2)|2,{101,108,0}}, +/* 11540 */ {(11<<2)|2,{101,108,0}}, +/* 11541 */ {(11<<2)|2,{101,108,0}}, +/* 11542 */ {(11<<2)|2,{101,108,0}}, +/* 11543 */ {(11<<2)|2,{101,108,0}}, +/* 11544 */ {(11<<2)|2,{101,108,0}}, +/* 11545 */ {(11<<2)|2,{101,108,0}}, +/* 11546 */ {(11<<2)|2,{101,108,0}}, +/* 11547 */ {(11<<2)|2,{101,108,0}}, +/* 11548 */ {(11<<2)|2,{101,108,0}}, +/* 11549 */ {(11<<2)|2,{101,108,0}}, +/* 11550 */ {(11<<2)|2,{101,108,0}}, +/* 11551 */ {(11<<2)|2,{101,108,0}}, +/* 11552 */ {(16<<2)|3,{101,109,48}}, +/* 11553 */ {(16<<2)|3,{101,109,49}}, +/* 11554 */ {(16<<2)|3,{101,109,50}}, +/* 11555 */ {(16<<2)|3,{101,109,97}}, +/* 11556 */ {(16<<2)|3,{101,109,99}}, +/* 11557 */ {(16<<2)|3,{101,109,101}}, +/* 11558 */ {(16<<2)|3,{101,109,105}}, +/* 11559 */ {(16<<2)|3,{101,109,111}}, +/* 11560 */ {(16<<2)|3,{101,109,115}}, +/* 11561 */ {(16<<2)|3,{101,109,116}}, +/* 11562 */ {(11<<2)|2,{101,109,0}}, +/* 11563 */ {(11<<2)|2,{101,109,0}}, +/* 11564 */ {(11<<2)|2,{101,109,0}}, +/* 11565 */ {(11<<2)|2,{101,109,0}}, +/* 11566 */ {(11<<2)|2,{101,109,0}}, +/* 11567 */ {(11<<2)|2,{101,109,0}}, +/* 11568 */ {(11<<2)|2,{101,109,0}}, +/* 11569 */ {(11<<2)|2,{101,109,0}}, +/* 11570 */ {(11<<2)|2,{101,109,0}}, +/* 11571 */ {(11<<2)|2,{101,109,0}}, +/* 11572 */ {(11<<2)|2,{101,109,0}}, +/* 11573 */ {(11<<2)|2,{101,109,0}}, +/* 11574 */ {(11<<2)|2,{101,109,0}}, +/* 11575 */ {(11<<2)|2,{101,109,0}}, +/* 11576 */ {(11<<2)|2,{101,109,0}}, +/* 11577 */ {(11<<2)|2,{101,109,0}}, +/* 11578 */ {(11<<2)|2,{101,109,0}}, +/* 11579 */ {(11<<2)|2,{101,109,0}}, +/* 11580 */ {(11<<2)|2,{101,109,0}}, +/* 11581 */ {(11<<2)|2,{101,109,0}}, +/* 11582 */ {(11<<2)|2,{101,109,0}}, +/* 11583 */ {(11<<2)|2,{101,109,0}}, +/* 11584 */ {(16<<2)|3,{101,110,48}}, +/* 11585 */ {(16<<2)|3,{101,110,49}}, +/* 11586 */ {(16<<2)|3,{101,110,50}}, +/* 11587 */ {(16<<2)|3,{101,110,97}}, +/* 11588 */ {(16<<2)|3,{101,110,99}}, +/* 11589 */ {(16<<2)|3,{101,110,101}}, +/* 11590 */ {(16<<2)|3,{101,110,105}}, +/* 11591 */ {(16<<2)|3,{101,110,111}}, +/* 11592 */ {(16<<2)|3,{101,110,115}}, +/* 11593 */ {(16<<2)|3,{101,110,116}}, +/* 11594 */ {(11<<2)|2,{101,110,0}}, +/* 11595 */ {(11<<2)|2,{101,110,0}}, +/* 11596 */ {(11<<2)|2,{101,110,0}}, +/* 11597 */ {(11<<2)|2,{101,110,0}}, +/* 11598 */ {(11<<2)|2,{101,110,0}}, +/* 11599 */ {(11<<2)|2,{101,110,0}}, +/* 11600 */ {(11<<2)|2,{101,110,0}}, +/* 11601 */ {(11<<2)|2,{101,110,0}}, +/* 11602 */ {(11<<2)|2,{101,110,0}}, +/* 11603 */ {(11<<2)|2,{101,110,0}}, +/* 11604 */ {(11<<2)|2,{101,110,0}}, +/* 11605 */ {(11<<2)|2,{101,110,0}}, +/* 11606 */ {(11<<2)|2,{101,110,0}}, +/* 11607 */ {(11<<2)|2,{101,110,0}}, +/* 11608 */ {(11<<2)|2,{101,110,0}}, +/* 11609 */ {(11<<2)|2,{101,110,0}}, +/* 11610 */ {(11<<2)|2,{101,110,0}}, +/* 11611 */ {(11<<2)|2,{101,110,0}}, +/* 11612 */ {(11<<2)|2,{101,110,0}}, +/* 11613 */ {(11<<2)|2,{101,110,0}}, +/* 11614 */ {(11<<2)|2,{101,110,0}}, +/* 11615 */ {(11<<2)|2,{101,110,0}}, +/* 11616 */ {(16<<2)|3,{101,112,48}}, +/* 11617 */ {(16<<2)|3,{101,112,49}}, +/* 11618 */ {(16<<2)|3,{101,112,50}}, +/* 11619 */ {(16<<2)|3,{101,112,97}}, +/* 11620 */ {(16<<2)|3,{101,112,99}}, +/* 11621 */ {(16<<2)|3,{101,112,101}}, +/* 11622 */ {(16<<2)|3,{101,112,105}}, +/* 11623 */ {(16<<2)|3,{101,112,111}}, +/* 11624 */ {(16<<2)|3,{101,112,115}}, +/* 11625 */ {(16<<2)|3,{101,112,116}}, +/* 11626 */ {(11<<2)|2,{101,112,0}}, +/* 11627 */ {(11<<2)|2,{101,112,0}}, +/* 11628 */ {(11<<2)|2,{101,112,0}}, +/* 11629 */ {(11<<2)|2,{101,112,0}}, +/* 11630 */ {(11<<2)|2,{101,112,0}}, +/* 11631 */ {(11<<2)|2,{101,112,0}}, +/* 11632 */ {(11<<2)|2,{101,112,0}}, +/* 11633 */ {(11<<2)|2,{101,112,0}}, +/* 11634 */ {(11<<2)|2,{101,112,0}}, +/* 11635 */ {(11<<2)|2,{101,112,0}}, +/* 11636 */ {(11<<2)|2,{101,112,0}}, +/* 11637 */ {(11<<2)|2,{101,112,0}}, +/* 11638 */ {(11<<2)|2,{101,112,0}}, +/* 11639 */ {(11<<2)|2,{101,112,0}}, +/* 11640 */ {(11<<2)|2,{101,112,0}}, +/* 11641 */ {(11<<2)|2,{101,112,0}}, +/* 11642 */ {(11<<2)|2,{101,112,0}}, +/* 11643 */ {(11<<2)|2,{101,112,0}}, +/* 11644 */ {(11<<2)|2,{101,112,0}}, +/* 11645 */ {(11<<2)|2,{101,112,0}}, +/* 11646 */ {(11<<2)|2,{101,112,0}}, +/* 11647 */ {(11<<2)|2,{101,112,0}}, +/* 11648 */ {(16<<2)|3,{101,114,48}}, +/* 11649 */ {(16<<2)|3,{101,114,49}}, +/* 11650 */ {(16<<2)|3,{101,114,50}}, +/* 11651 */ {(16<<2)|3,{101,114,97}}, +/* 11652 */ {(16<<2)|3,{101,114,99}}, +/* 11653 */ {(16<<2)|3,{101,114,101}}, +/* 11654 */ {(16<<2)|3,{101,114,105}}, +/* 11655 */ {(16<<2)|3,{101,114,111}}, +/* 11656 */ {(16<<2)|3,{101,114,115}}, +/* 11657 */ {(16<<2)|3,{101,114,116}}, +/* 11658 */ {(11<<2)|2,{101,114,0}}, +/* 11659 */ {(11<<2)|2,{101,114,0}}, +/* 11660 */ {(11<<2)|2,{101,114,0}}, +/* 11661 */ {(11<<2)|2,{101,114,0}}, +/* 11662 */ {(11<<2)|2,{101,114,0}}, +/* 11663 */ {(11<<2)|2,{101,114,0}}, +/* 11664 */ {(11<<2)|2,{101,114,0}}, +/* 11665 */ {(11<<2)|2,{101,114,0}}, +/* 11666 */ {(11<<2)|2,{101,114,0}}, +/* 11667 */ {(11<<2)|2,{101,114,0}}, +/* 11668 */ {(11<<2)|2,{101,114,0}}, +/* 11669 */ {(11<<2)|2,{101,114,0}}, +/* 11670 */ {(11<<2)|2,{101,114,0}}, +/* 11671 */ {(11<<2)|2,{101,114,0}}, +/* 11672 */ {(11<<2)|2,{101,114,0}}, +/* 11673 */ {(11<<2)|2,{101,114,0}}, +/* 11674 */ {(11<<2)|2,{101,114,0}}, +/* 11675 */ {(11<<2)|2,{101,114,0}}, +/* 11676 */ {(11<<2)|2,{101,114,0}}, +/* 11677 */ {(11<<2)|2,{101,114,0}}, +/* 11678 */ {(11<<2)|2,{101,114,0}}, +/* 11679 */ {(11<<2)|2,{101,114,0}}, +/* 11680 */ {(16<<2)|3,{101,117,48}}, +/* 11681 */ {(16<<2)|3,{101,117,49}}, +/* 11682 */ {(16<<2)|3,{101,117,50}}, +/* 11683 */ {(16<<2)|3,{101,117,97}}, +/* 11684 */ {(16<<2)|3,{101,117,99}}, +/* 11685 */ {(16<<2)|3,{101,117,101}}, +/* 11686 */ {(16<<2)|3,{101,117,105}}, +/* 11687 */ {(16<<2)|3,{101,117,111}}, +/* 11688 */ {(16<<2)|3,{101,117,115}}, +/* 11689 */ {(16<<2)|3,{101,117,116}}, +/* 11690 */ {(11<<2)|2,{101,117,0}}, +/* 11691 */ {(11<<2)|2,{101,117,0}}, +/* 11692 */ {(11<<2)|2,{101,117,0}}, +/* 11693 */ {(11<<2)|2,{101,117,0}}, +/* 11694 */ {(11<<2)|2,{101,117,0}}, +/* 11695 */ {(11<<2)|2,{101,117,0}}, +/* 11696 */ {(11<<2)|2,{101,117,0}}, +/* 11697 */ {(11<<2)|2,{101,117,0}}, +/* 11698 */ {(11<<2)|2,{101,117,0}}, +/* 11699 */ {(11<<2)|2,{101,117,0}}, +/* 11700 */ {(11<<2)|2,{101,117,0}}, +/* 11701 */ {(11<<2)|2,{101,117,0}}, +/* 11702 */ {(11<<2)|2,{101,117,0}}, +/* 11703 */ {(11<<2)|2,{101,117,0}}, +/* 11704 */ {(11<<2)|2,{101,117,0}}, +/* 11705 */ {(11<<2)|2,{101,117,0}}, +/* 11706 */ {(11<<2)|2,{101,117,0}}, +/* 11707 */ {(11<<2)|2,{101,117,0}}, +/* 11708 */ {(11<<2)|2,{101,117,0}}, +/* 11709 */ {(11<<2)|2,{101,117,0}}, +/* 11710 */ {(11<<2)|2,{101,117,0}}, +/* 11711 */ {(11<<2)|2,{101,117,0}}, +/* 11712 */ {(12<<2)|2,{101,58,0}}, +/* 11713 */ {(12<<2)|2,{101,58,0}}, +/* 11714 */ {(12<<2)|2,{101,58,0}}, +/* 11715 */ {(12<<2)|2,{101,58,0}}, +/* 11716 */ {(12<<2)|2,{101,58,0}}, +/* 11717 */ {(12<<2)|2,{101,58,0}}, +/* 11718 */ {(12<<2)|2,{101,58,0}}, +/* 11719 */ {(12<<2)|2,{101,58,0}}, +/* 11720 */ {(12<<2)|2,{101,58,0}}, +/* 11721 */ {(12<<2)|2,{101,58,0}}, +/* 11722 */ {(12<<2)|2,{101,58,0}}, +/* 11723 */ {(12<<2)|2,{101,58,0}}, +/* 11724 */ {(12<<2)|2,{101,58,0}}, +/* 11725 */ {(12<<2)|2,{101,58,0}}, +/* 11726 */ {(12<<2)|2,{101,58,0}}, +/* 11727 */ {(12<<2)|2,{101,58,0}}, +/* 11728 */ {(12<<2)|2,{101,66,0}}, +/* 11729 */ {(12<<2)|2,{101,66,0}}, +/* 11730 */ {(12<<2)|2,{101,66,0}}, +/* 11731 */ {(12<<2)|2,{101,66,0}}, +/* 11732 */ {(12<<2)|2,{101,66,0}}, +/* 11733 */ {(12<<2)|2,{101,66,0}}, +/* 11734 */ {(12<<2)|2,{101,66,0}}, +/* 11735 */ {(12<<2)|2,{101,66,0}}, +/* 11736 */ {(12<<2)|2,{101,66,0}}, +/* 11737 */ {(12<<2)|2,{101,66,0}}, +/* 11738 */ {(12<<2)|2,{101,66,0}}, +/* 11739 */ {(12<<2)|2,{101,66,0}}, +/* 11740 */ {(12<<2)|2,{101,66,0}}, +/* 11741 */ {(12<<2)|2,{101,66,0}}, +/* 11742 */ {(12<<2)|2,{101,66,0}}, +/* 11743 */ {(12<<2)|2,{101,66,0}}, +/* 11744 */ {(12<<2)|2,{101,67,0}}, +/* 11745 */ {(12<<2)|2,{101,67,0}}, +/* 11746 */ {(12<<2)|2,{101,67,0}}, +/* 11747 */ {(12<<2)|2,{101,67,0}}, +/* 11748 */ {(12<<2)|2,{101,67,0}}, +/* 11749 */ {(12<<2)|2,{101,67,0}}, +/* 11750 */ {(12<<2)|2,{101,67,0}}, +/* 11751 */ {(12<<2)|2,{101,67,0}}, +/* 11752 */ {(12<<2)|2,{101,67,0}}, +/* 11753 */ {(12<<2)|2,{101,67,0}}, +/* 11754 */ {(12<<2)|2,{101,67,0}}, +/* 11755 */ {(12<<2)|2,{101,67,0}}, +/* 11756 */ {(12<<2)|2,{101,67,0}}, +/* 11757 */ {(12<<2)|2,{101,67,0}}, +/* 11758 */ {(12<<2)|2,{101,67,0}}, +/* 11759 */ {(12<<2)|2,{101,67,0}}, +/* 11760 */ {(12<<2)|2,{101,68,0}}, +/* 11761 */ {(12<<2)|2,{101,68,0}}, +/* 11762 */ {(12<<2)|2,{101,68,0}}, +/* 11763 */ {(12<<2)|2,{101,68,0}}, +/* 11764 */ {(12<<2)|2,{101,68,0}}, +/* 11765 */ {(12<<2)|2,{101,68,0}}, +/* 11766 */ {(12<<2)|2,{101,68,0}}, +/* 11767 */ {(12<<2)|2,{101,68,0}}, +/* 11768 */ {(12<<2)|2,{101,68,0}}, +/* 11769 */ {(12<<2)|2,{101,68,0}}, +/* 11770 */ {(12<<2)|2,{101,68,0}}, +/* 11771 */ {(12<<2)|2,{101,68,0}}, +/* 11772 */ {(12<<2)|2,{101,68,0}}, +/* 11773 */ {(12<<2)|2,{101,68,0}}, +/* 11774 */ {(12<<2)|2,{101,68,0}}, +/* 11775 */ {(12<<2)|2,{101,68,0}}, +/* 11776 */ {(12<<2)|2,{101,69,0}}, +/* 11777 */ {(12<<2)|2,{101,69,0}}, +/* 11778 */ {(12<<2)|2,{101,69,0}}, +/* 11779 */ {(12<<2)|2,{101,69,0}}, +/* 11780 */ {(12<<2)|2,{101,69,0}}, +/* 11781 */ {(12<<2)|2,{101,69,0}}, +/* 11782 */ {(12<<2)|2,{101,69,0}}, +/* 11783 */ {(12<<2)|2,{101,69,0}}, +/* 11784 */ {(12<<2)|2,{101,69,0}}, +/* 11785 */ {(12<<2)|2,{101,69,0}}, +/* 11786 */ {(12<<2)|2,{101,69,0}}, +/* 11787 */ {(12<<2)|2,{101,69,0}}, +/* 11788 */ {(12<<2)|2,{101,69,0}}, +/* 11789 */ {(12<<2)|2,{101,69,0}}, +/* 11790 */ {(12<<2)|2,{101,69,0}}, +/* 11791 */ {(12<<2)|2,{101,69,0}}, +/* 11792 */ {(12<<2)|2,{101,70,0}}, +/* 11793 */ {(12<<2)|2,{101,70,0}}, +/* 11794 */ {(12<<2)|2,{101,70,0}}, +/* 11795 */ {(12<<2)|2,{101,70,0}}, +/* 11796 */ {(12<<2)|2,{101,70,0}}, +/* 11797 */ {(12<<2)|2,{101,70,0}}, +/* 11798 */ {(12<<2)|2,{101,70,0}}, +/* 11799 */ {(12<<2)|2,{101,70,0}}, +/* 11800 */ {(12<<2)|2,{101,70,0}}, +/* 11801 */ {(12<<2)|2,{101,70,0}}, +/* 11802 */ {(12<<2)|2,{101,70,0}}, +/* 11803 */ {(12<<2)|2,{101,70,0}}, +/* 11804 */ {(12<<2)|2,{101,70,0}}, +/* 11805 */ {(12<<2)|2,{101,70,0}}, +/* 11806 */ {(12<<2)|2,{101,70,0}}, +/* 11807 */ {(12<<2)|2,{101,70,0}}, +/* 11808 */ {(12<<2)|2,{101,71,0}}, +/* 11809 */ {(12<<2)|2,{101,71,0}}, +/* 11810 */ {(12<<2)|2,{101,71,0}}, +/* 11811 */ {(12<<2)|2,{101,71,0}}, +/* 11812 */ {(12<<2)|2,{101,71,0}}, +/* 11813 */ {(12<<2)|2,{101,71,0}}, +/* 11814 */ {(12<<2)|2,{101,71,0}}, +/* 11815 */ {(12<<2)|2,{101,71,0}}, +/* 11816 */ {(12<<2)|2,{101,71,0}}, +/* 11817 */ {(12<<2)|2,{101,71,0}}, +/* 11818 */ {(12<<2)|2,{101,71,0}}, +/* 11819 */ {(12<<2)|2,{101,71,0}}, +/* 11820 */ {(12<<2)|2,{101,71,0}}, +/* 11821 */ {(12<<2)|2,{101,71,0}}, +/* 11822 */ {(12<<2)|2,{101,71,0}}, +/* 11823 */ {(12<<2)|2,{101,71,0}}, +/* 11824 */ {(12<<2)|2,{101,72,0}}, +/* 11825 */ {(12<<2)|2,{101,72,0}}, +/* 11826 */ {(12<<2)|2,{101,72,0}}, +/* 11827 */ {(12<<2)|2,{101,72,0}}, +/* 11828 */ {(12<<2)|2,{101,72,0}}, +/* 11829 */ {(12<<2)|2,{101,72,0}}, +/* 11830 */ {(12<<2)|2,{101,72,0}}, +/* 11831 */ {(12<<2)|2,{101,72,0}}, +/* 11832 */ {(12<<2)|2,{101,72,0}}, +/* 11833 */ {(12<<2)|2,{101,72,0}}, +/* 11834 */ {(12<<2)|2,{101,72,0}}, +/* 11835 */ {(12<<2)|2,{101,72,0}}, +/* 11836 */ {(12<<2)|2,{101,72,0}}, +/* 11837 */ {(12<<2)|2,{101,72,0}}, +/* 11838 */ {(12<<2)|2,{101,72,0}}, +/* 11839 */ {(12<<2)|2,{101,72,0}}, +/* 11840 */ {(12<<2)|2,{101,73,0}}, +/* 11841 */ {(12<<2)|2,{101,73,0}}, +/* 11842 */ {(12<<2)|2,{101,73,0}}, +/* 11843 */ {(12<<2)|2,{101,73,0}}, +/* 11844 */ {(12<<2)|2,{101,73,0}}, +/* 11845 */ {(12<<2)|2,{101,73,0}}, +/* 11846 */ {(12<<2)|2,{101,73,0}}, +/* 11847 */ {(12<<2)|2,{101,73,0}}, +/* 11848 */ {(12<<2)|2,{101,73,0}}, +/* 11849 */ {(12<<2)|2,{101,73,0}}, +/* 11850 */ {(12<<2)|2,{101,73,0}}, +/* 11851 */ {(12<<2)|2,{101,73,0}}, +/* 11852 */ {(12<<2)|2,{101,73,0}}, +/* 11853 */ {(12<<2)|2,{101,73,0}}, +/* 11854 */ {(12<<2)|2,{101,73,0}}, +/* 11855 */ {(12<<2)|2,{101,73,0}}, +/* 11856 */ {(12<<2)|2,{101,74,0}}, +/* 11857 */ {(12<<2)|2,{101,74,0}}, +/* 11858 */ {(12<<2)|2,{101,74,0}}, +/* 11859 */ {(12<<2)|2,{101,74,0}}, +/* 11860 */ {(12<<2)|2,{101,74,0}}, +/* 11861 */ {(12<<2)|2,{101,74,0}}, +/* 11862 */ {(12<<2)|2,{101,74,0}}, +/* 11863 */ {(12<<2)|2,{101,74,0}}, +/* 11864 */ {(12<<2)|2,{101,74,0}}, +/* 11865 */ {(12<<2)|2,{101,74,0}}, +/* 11866 */ {(12<<2)|2,{101,74,0}}, +/* 11867 */ {(12<<2)|2,{101,74,0}}, +/* 11868 */ {(12<<2)|2,{101,74,0}}, +/* 11869 */ {(12<<2)|2,{101,74,0}}, +/* 11870 */ {(12<<2)|2,{101,74,0}}, +/* 11871 */ {(12<<2)|2,{101,74,0}}, +/* 11872 */ {(12<<2)|2,{101,75,0}}, +/* 11873 */ {(12<<2)|2,{101,75,0}}, +/* 11874 */ {(12<<2)|2,{101,75,0}}, +/* 11875 */ {(12<<2)|2,{101,75,0}}, +/* 11876 */ {(12<<2)|2,{101,75,0}}, +/* 11877 */ {(12<<2)|2,{101,75,0}}, +/* 11878 */ {(12<<2)|2,{101,75,0}}, +/* 11879 */ {(12<<2)|2,{101,75,0}}, +/* 11880 */ {(12<<2)|2,{101,75,0}}, +/* 11881 */ {(12<<2)|2,{101,75,0}}, +/* 11882 */ {(12<<2)|2,{101,75,0}}, +/* 11883 */ {(12<<2)|2,{101,75,0}}, +/* 11884 */ {(12<<2)|2,{101,75,0}}, +/* 11885 */ {(12<<2)|2,{101,75,0}}, +/* 11886 */ {(12<<2)|2,{101,75,0}}, +/* 11887 */ {(12<<2)|2,{101,75,0}}, +/* 11888 */ {(12<<2)|2,{101,76,0}}, +/* 11889 */ {(12<<2)|2,{101,76,0}}, +/* 11890 */ {(12<<2)|2,{101,76,0}}, +/* 11891 */ {(12<<2)|2,{101,76,0}}, +/* 11892 */ {(12<<2)|2,{101,76,0}}, +/* 11893 */ {(12<<2)|2,{101,76,0}}, +/* 11894 */ {(12<<2)|2,{101,76,0}}, +/* 11895 */ {(12<<2)|2,{101,76,0}}, +/* 11896 */ {(12<<2)|2,{101,76,0}}, +/* 11897 */ {(12<<2)|2,{101,76,0}}, +/* 11898 */ {(12<<2)|2,{101,76,0}}, +/* 11899 */ {(12<<2)|2,{101,76,0}}, +/* 11900 */ {(12<<2)|2,{101,76,0}}, +/* 11901 */ {(12<<2)|2,{101,76,0}}, +/* 11902 */ {(12<<2)|2,{101,76,0}}, +/* 11903 */ {(12<<2)|2,{101,76,0}}, +/* 11904 */ {(12<<2)|2,{101,77,0}}, +/* 11905 */ {(12<<2)|2,{101,77,0}}, +/* 11906 */ {(12<<2)|2,{101,77,0}}, +/* 11907 */ {(12<<2)|2,{101,77,0}}, +/* 11908 */ {(12<<2)|2,{101,77,0}}, +/* 11909 */ {(12<<2)|2,{101,77,0}}, +/* 11910 */ {(12<<2)|2,{101,77,0}}, +/* 11911 */ {(12<<2)|2,{101,77,0}}, +/* 11912 */ {(12<<2)|2,{101,77,0}}, +/* 11913 */ {(12<<2)|2,{101,77,0}}, +/* 11914 */ {(12<<2)|2,{101,77,0}}, +/* 11915 */ {(12<<2)|2,{101,77,0}}, +/* 11916 */ {(12<<2)|2,{101,77,0}}, +/* 11917 */ {(12<<2)|2,{101,77,0}}, +/* 11918 */ {(12<<2)|2,{101,77,0}}, +/* 11919 */ {(12<<2)|2,{101,77,0}}, +/* 11920 */ {(12<<2)|2,{101,78,0}}, +/* 11921 */ {(12<<2)|2,{101,78,0}}, +/* 11922 */ {(12<<2)|2,{101,78,0}}, +/* 11923 */ {(12<<2)|2,{101,78,0}}, +/* 11924 */ {(12<<2)|2,{101,78,0}}, +/* 11925 */ {(12<<2)|2,{101,78,0}}, +/* 11926 */ {(12<<2)|2,{101,78,0}}, +/* 11927 */ {(12<<2)|2,{101,78,0}}, +/* 11928 */ {(12<<2)|2,{101,78,0}}, +/* 11929 */ {(12<<2)|2,{101,78,0}}, +/* 11930 */ {(12<<2)|2,{101,78,0}}, +/* 11931 */ {(12<<2)|2,{101,78,0}}, +/* 11932 */ {(12<<2)|2,{101,78,0}}, +/* 11933 */ {(12<<2)|2,{101,78,0}}, +/* 11934 */ {(12<<2)|2,{101,78,0}}, +/* 11935 */ {(12<<2)|2,{101,78,0}}, +/* 11936 */ {(12<<2)|2,{101,79,0}}, +/* 11937 */ {(12<<2)|2,{101,79,0}}, +/* 11938 */ {(12<<2)|2,{101,79,0}}, +/* 11939 */ {(12<<2)|2,{101,79,0}}, +/* 11940 */ {(12<<2)|2,{101,79,0}}, +/* 11941 */ {(12<<2)|2,{101,79,0}}, +/* 11942 */ {(12<<2)|2,{101,79,0}}, +/* 11943 */ {(12<<2)|2,{101,79,0}}, +/* 11944 */ {(12<<2)|2,{101,79,0}}, +/* 11945 */ {(12<<2)|2,{101,79,0}}, +/* 11946 */ {(12<<2)|2,{101,79,0}}, +/* 11947 */ {(12<<2)|2,{101,79,0}}, +/* 11948 */ {(12<<2)|2,{101,79,0}}, +/* 11949 */ {(12<<2)|2,{101,79,0}}, +/* 11950 */ {(12<<2)|2,{101,79,0}}, +/* 11951 */ {(12<<2)|2,{101,79,0}}, +/* 11952 */ {(12<<2)|2,{101,80,0}}, +/* 11953 */ {(12<<2)|2,{101,80,0}}, +/* 11954 */ {(12<<2)|2,{101,80,0}}, +/* 11955 */ {(12<<2)|2,{101,80,0}}, +/* 11956 */ {(12<<2)|2,{101,80,0}}, +/* 11957 */ {(12<<2)|2,{101,80,0}}, +/* 11958 */ {(12<<2)|2,{101,80,0}}, +/* 11959 */ {(12<<2)|2,{101,80,0}}, +/* 11960 */ {(12<<2)|2,{101,80,0}}, +/* 11961 */ {(12<<2)|2,{101,80,0}}, +/* 11962 */ {(12<<2)|2,{101,80,0}}, +/* 11963 */ {(12<<2)|2,{101,80,0}}, +/* 11964 */ {(12<<2)|2,{101,80,0}}, +/* 11965 */ {(12<<2)|2,{101,80,0}}, +/* 11966 */ {(12<<2)|2,{101,80,0}}, +/* 11967 */ {(12<<2)|2,{101,80,0}}, +/* 11968 */ {(12<<2)|2,{101,81,0}}, +/* 11969 */ {(12<<2)|2,{101,81,0}}, +/* 11970 */ {(12<<2)|2,{101,81,0}}, +/* 11971 */ {(12<<2)|2,{101,81,0}}, +/* 11972 */ {(12<<2)|2,{101,81,0}}, +/* 11973 */ {(12<<2)|2,{101,81,0}}, +/* 11974 */ {(12<<2)|2,{101,81,0}}, +/* 11975 */ {(12<<2)|2,{101,81,0}}, +/* 11976 */ {(12<<2)|2,{101,81,0}}, +/* 11977 */ {(12<<2)|2,{101,81,0}}, +/* 11978 */ {(12<<2)|2,{101,81,0}}, +/* 11979 */ {(12<<2)|2,{101,81,0}}, +/* 11980 */ {(12<<2)|2,{101,81,0}}, +/* 11981 */ {(12<<2)|2,{101,81,0}}, +/* 11982 */ {(12<<2)|2,{101,81,0}}, +/* 11983 */ {(12<<2)|2,{101,81,0}}, +/* 11984 */ {(12<<2)|2,{101,82,0}}, +/* 11985 */ {(12<<2)|2,{101,82,0}}, +/* 11986 */ {(12<<2)|2,{101,82,0}}, +/* 11987 */ {(12<<2)|2,{101,82,0}}, +/* 11988 */ {(12<<2)|2,{101,82,0}}, +/* 11989 */ {(12<<2)|2,{101,82,0}}, +/* 11990 */ {(12<<2)|2,{101,82,0}}, +/* 11991 */ {(12<<2)|2,{101,82,0}}, +/* 11992 */ {(12<<2)|2,{101,82,0}}, +/* 11993 */ {(12<<2)|2,{101,82,0}}, +/* 11994 */ {(12<<2)|2,{101,82,0}}, +/* 11995 */ {(12<<2)|2,{101,82,0}}, +/* 11996 */ {(12<<2)|2,{101,82,0}}, +/* 11997 */ {(12<<2)|2,{101,82,0}}, +/* 11998 */ {(12<<2)|2,{101,82,0}}, +/* 11999 */ {(12<<2)|2,{101,82,0}}, +/* 12000 */ {(12<<2)|2,{101,83,0}}, +/* 12001 */ {(12<<2)|2,{101,83,0}}, +/* 12002 */ {(12<<2)|2,{101,83,0}}, +/* 12003 */ {(12<<2)|2,{101,83,0}}, +/* 12004 */ {(12<<2)|2,{101,83,0}}, +/* 12005 */ {(12<<2)|2,{101,83,0}}, +/* 12006 */ {(12<<2)|2,{101,83,0}}, +/* 12007 */ {(12<<2)|2,{101,83,0}}, +/* 12008 */ {(12<<2)|2,{101,83,0}}, +/* 12009 */ {(12<<2)|2,{101,83,0}}, +/* 12010 */ {(12<<2)|2,{101,83,0}}, +/* 12011 */ {(12<<2)|2,{101,83,0}}, +/* 12012 */ {(12<<2)|2,{101,83,0}}, +/* 12013 */ {(12<<2)|2,{101,83,0}}, +/* 12014 */ {(12<<2)|2,{101,83,0}}, +/* 12015 */ {(12<<2)|2,{101,83,0}}, +/* 12016 */ {(12<<2)|2,{101,84,0}}, +/* 12017 */ {(12<<2)|2,{101,84,0}}, +/* 12018 */ {(12<<2)|2,{101,84,0}}, +/* 12019 */ {(12<<2)|2,{101,84,0}}, +/* 12020 */ {(12<<2)|2,{101,84,0}}, +/* 12021 */ {(12<<2)|2,{101,84,0}}, +/* 12022 */ {(12<<2)|2,{101,84,0}}, +/* 12023 */ {(12<<2)|2,{101,84,0}}, +/* 12024 */ {(12<<2)|2,{101,84,0}}, +/* 12025 */ {(12<<2)|2,{101,84,0}}, +/* 12026 */ {(12<<2)|2,{101,84,0}}, +/* 12027 */ {(12<<2)|2,{101,84,0}}, +/* 12028 */ {(12<<2)|2,{101,84,0}}, +/* 12029 */ {(12<<2)|2,{101,84,0}}, +/* 12030 */ {(12<<2)|2,{101,84,0}}, +/* 12031 */ {(12<<2)|2,{101,84,0}}, +/* 12032 */ {(12<<2)|2,{101,85,0}}, +/* 12033 */ {(12<<2)|2,{101,85,0}}, +/* 12034 */ {(12<<2)|2,{101,85,0}}, +/* 12035 */ {(12<<2)|2,{101,85,0}}, +/* 12036 */ {(12<<2)|2,{101,85,0}}, +/* 12037 */ {(12<<2)|2,{101,85,0}}, +/* 12038 */ {(12<<2)|2,{101,85,0}}, +/* 12039 */ {(12<<2)|2,{101,85,0}}, +/* 12040 */ {(12<<2)|2,{101,85,0}}, +/* 12041 */ {(12<<2)|2,{101,85,0}}, +/* 12042 */ {(12<<2)|2,{101,85,0}}, +/* 12043 */ {(12<<2)|2,{101,85,0}}, +/* 12044 */ {(12<<2)|2,{101,85,0}}, +/* 12045 */ {(12<<2)|2,{101,85,0}}, +/* 12046 */ {(12<<2)|2,{101,85,0}}, +/* 12047 */ {(12<<2)|2,{101,85,0}}, +/* 12048 */ {(12<<2)|2,{101,86,0}}, +/* 12049 */ {(12<<2)|2,{101,86,0}}, +/* 12050 */ {(12<<2)|2,{101,86,0}}, +/* 12051 */ {(12<<2)|2,{101,86,0}}, +/* 12052 */ {(12<<2)|2,{101,86,0}}, +/* 12053 */ {(12<<2)|2,{101,86,0}}, +/* 12054 */ {(12<<2)|2,{101,86,0}}, +/* 12055 */ {(12<<2)|2,{101,86,0}}, +/* 12056 */ {(12<<2)|2,{101,86,0}}, +/* 12057 */ {(12<<2)|2,{101,86,0}}, +/* 12058 */ {(12<<2)|2,{101,86,0}}, +/* 12059 */ {(12<<2)|2,{101,86,0}}, +/* 12060 */ {(12<<2)|2,{101,86,0}}, +/* 12061 */ {(12<<2)|2,{101,86,0}}, +/* 12062 */ {(12<<2)|2,{101,86,0}}, +/* 12063 */ {(12<<2)|2,{101,86,0}}, +/* 12064 */ {(12<<2)|2,{101,87,0}}, +/* 12065 */ {(12<<2)|2,{101,87,0}}, +/* 12066 */ {(12<<2)|2,{101,87,0}}, +/* 12067 */ {(12<<2)|2,{101,87,0}}, +/* 12068 */ {(12<<2)|2,{101,87,0}}, +/* 12069 */ {(12<<2)|2,{101,87,0}}, +/* 12070 */ {(12<<2)|2,{101,87,0}}, +/* 12071 */ {(12<<2)|2,{101,87,0}}, +/* 12072 */ {(12<<2)|2,{101,87,0}}, +/* 12073 */ {(12<<2)|2,{101,87,0}}, +/* 12074 */ {(12<<2)|2,{101,87,0}}, +/* 12075 */ {(12<<2)|2,{101,87,0}}, +/* 12076 */ {(12<<2)|2,{101,87,0}}, +/* 12077 */ {(12<<2)|2,{101,87,0}}, +/* 12078 */ {(12<<2)|2,{101,87,0}}, +/* 12079 */ {(12<<2)|2,{101,87,0}}, +/* 12080 */ {(12<<2)|2,{101,89,0}}, +/* 12081 */ {(12<<2)|2,{101,89,0}}, +/* 12082 */ {(12<<2)|2,{101,89,0}}, +/* 12083 */ {(12<<2)|2,{101,89,0}}, +/* 12084 */ {(12<<2)|2,{101,89,0}}, +/* 12085 */ {(12<<2)|2,{101,89,0}}, +/* 12086 */ {(12<<2)|2,{101,89,0}}, +/* 12087 */ {(12<<2)|2,{101,89,0}}, +/* 12088 */ {(12<<2)|2,{101,89,0}}, +/* 12089 */ {(12<<2)|2,{101,89,0}}, +/* 12090 */ {(12<<2)|2,{101,89,0}}, +/* 12091 */ {(12<<2)|2,{101,89,0}}, +/* 12092 */ {(12<<2)|2,{101,89,0}}, +/* 12093 */ {(12<<2)|2,{101,89,0}}, +/* 12094 */ {(12<<2)|2,{101,89,0}}, +/* 12095 */ {(12<<2)|2,{101,89,0}}, +/* 12096 */ {(12<<2)|2,{101,106,0}}, +/* 12097 */ {(12<<2)|2,{101,106,0}}, +/* 12098 */ {(12<<2)|2,{101,106,0}}, +/* 12099 */ {(12<<2)|2,{101,106,0}}, +/* 12100 */ {(12<<2)|2,{101,106,0}}, +/* 12101 */ {(12<<2)|2,{101,106,0}}, +/* 12102 */ {(12<<2)|2,{101,106,0}}, +/* 12103 */ {(12<<2)|2,{101,106,0}}, +/* 12104 */ {(12<<2)|2,{101,106,0}}, +/* 12105 */ {(12<<2)|2,{101,106,0}}, +/* 12106 */ {(12<<2)|2,{101,106,0}}, +/* 12107 */ {(12<<2)|2,{101,106,0}}, +/* 12108 */ {(12<<2)|2,{101,106,0}}, +/* 12109 */ {(12<<2)|2,{101,106,0}}, +/* 12110 */ {(12<<2)|2,{101,106,0}}, +/* 12111 */ {(12<<2)|2,{101,106,0}}, +/* 12112 */ {(12<<2)|2,{101,107,0}}, +/* 12113 */ {(12<<2)|2,{101,107,0}}, +/* 12114 */ {(12<<2)|2,{101,107,0}}, +/* 12115 */ {(12<<2)|2,{101,107,0}}, +/* 12116 */ {(12<<2)|2,{101,107,0}}, +/* 12117 */ {(12<<2)|2,{101,107,0}}, +/* 12118 */ {(12<<2)|2,{101,107,0}}, +/* 12119 */ {(12<<2)|2,{101,107,0}}, +/* 12120 */ {(12<<2)|2,{101,107,0}}, +/* 12121 */ {(12<<2)|2,{101,107,0}}, +/* 12122 */ {(12<<2)|2,{101,107,0}}, +/* 12123 */ {(12<<2)|2,{101,107,0}}, +/* 12124 */ {(12<<2)|2,{101,107,0}}, +/* 12125 */ {(12<<2)|2,{101,107,0}}, +/* 12126 */ {(12<<2)|2,{101,107,0}}, +/* 12127 */ {(12<<2)|2,{101,107,0}}, +/* 12128 */ {(12<<2)|2,{101,113,0}}, +/* 12129 */ {(12<<2)|2,{101,113,0}}, +/* 12130 */ {(12<<2)|2,{101,113,0}}, +/* 12131 */ {(12<<2)|2,{101,113,0}}, +/* 12132 */ {(12<<2)|2,{101,113,0}}, +/* 12133 */ {(12<<2)|2,{101,113,0}}, +/* 12134 */ {(12<<2)|2,{101,113,0}}, +/* 12135 */ {(12<<2)|2,{101,113,0}}, +/* 12136 */ {(12<<2)|2,{101,113,0}}, +/* 12137 */ {(12<<2)|2,{101,113,0}}, +/* 12138 */ {(12<<2)|2,{101,113,0}}, +/* 12139 */ {(12<<2)|2,{101,113,0}}, +/* 12140 */ {(12<<2)|2,{101,113,0}}, +/* 12141 */ {(12<<2)|2,{101,113,0}}, +/* 12142 */ {(12<<2)|2,{101,113,0}}, +/* 12143 */ {(12<<2)|2,{101,113,0}}, +/* 12144 */ {(12<<2)|2,{101,118,0}}, +/* 12145 */ {(12<<2)|2,{101,118,0}}, +/* 12146 */ {(12<<2)|2,{101,118,0}}, +/* 12147 */ {(12<<2)|2,{101,118,0}}, +/* 12148 */ {(12<<2)|2,{101,118,0}}, +/* 12149 */ {(12<<2)|2,{101,118,0}}, +/* 12150 */ {(12<<2)|2,{101,118,0}}, +/* 12151 */ {(12<<2)|2,{101,118,0}}, +/* 12152 */ {(12<<2)|2,{101,118,0}}, +/* 12153 */ {(12<<2)|2,{101,118,0}}, +/* 12154 */ {(12<<2)|2,{101,118,0}}, +/* 12155 */ {(12<<2)|2,{101,118,0}}, +/* 12156 */ {(12<<2)|2,{101,118,0}}, +/* 12157 */ {(12<<2)|2,{101,118,0}}, +/* 12158 */ {(12<<2)|2,{101,118,0}}, +/* 12159 */ {(12<<2)|2,{101,118,0}}, +/* 12160 */ {(12<<2)|2,{101,119,0}}, +/* 12161 */ {(12<<2)|2,{101,119,0}}, +/* 12162 */ {(12<<2)|2,{101,119,0}}, +/* 12163 */ {(12<<2)|2,{101,119,0}}, +/* 12164 */ {(12<<2)|2,{101,119,0}}, +/* 12165 */ {(12<<2)|2,{101,119,0}}, +/* 12166 */ {(12<<2)|2,{101,119,0}}, +/* 12167 */ {(12<<2)|2,{101,119,0}}, +/* 12168 */ {(12<<2)|2,{101,119,0}}, +/* 12169 */ {(12<<2)|2,{101,119,0}}, +/* 12170 */ {(12<<2)|2,{101,119,0}}, +/* 12171 */ {(12<<2)|2,{101,119,0}}, +/* 12172 */ {(12<<2)|2,{101,119,0}}, +/* 12173 */ {(12<<2)|2,{101,119,0}}, +/* 12174 */ {(12<<2)|2,{101,119,0}}, +/* 12175 */ {(12<<2)|2,{101,119,0}}, +/* 12176 */ {(12<<2)|2,{101,120,0}}, +/* 12177 */ {(12<<2)|2,{101,120,0}}, +/* 12178 */ {(12<<2)|2,{101,120,0}}, +/* 12179 */ {(12<<2)|2,{101,120,0}}, +/* 12180 */ {(12<<2)|2,{101,120,0}}, +/* 12181 */ {(12<<2)|2,{101,120,0}}, +/* 12182 */ {(12<<2)|2,{101,120,0}}, +/* 12183 */ {(12<<2)|2,{101,120,0}}, +/* 12184 */ {(12<<2)|2,{101,120,0}}, +/* 12185 */ {(12<<2)|2,{101,120,0}}, +/* 12186 */ {(12<<2)|2,{101,120,0}}, +/* 12187 */ {(12<<2)|2,{101,120,0}}, +/* 12188 */ {(12<<2)|2,{101,120,0}}, +/* 12189 */ {(12<<2)|2,{101,120,0}}, +/* 12190 */ {(12<<2)|2,{101,120,0}}, +/* 12191 */ {(12<<2)|2,{101,120,0}}, +/* 12192 */ {(12<<2)|2,{101,121,0}}, +/* 12193 */ {(12<<2)|2,{101,121,0}}, +/* 12194 */ {(12<<2)|2,{101,121,0}}, +/* 12195 */ {(12<<2)|2,{101,121,0}}, +/* 12196 */ {(12<<2)|2,{101,121,0}}, +/* 12197 */ {(12<<2)|2,{101,121,0}}, +/* 12198 */ {(12<<2)|2,{101,121,0}}, +/* 12199 */ {(12<<2)|2,{101,121,0}}, +/* 12200 */ {(12<<2)|2,{101,121,0}}, +/* 12201 */ {(12<<2)|2,{101,121,0}}, +/* 12202 */ {(12<<2)|2,{101,121,0}}, +/* 12203 */ {(12<<2)|2,{101,121,0}}, +/* 12204 */ {(12<<2)|2,{101,121,0}}, +/* 12205 */ {(12<<2)|2,{101,121,0}}, +/* 12206 */ {(12<<2)|2,{101,121,0}}, +/* 12207 */ {(12<<2)|2,{101,121,0}}, +/* 12208 */ {(12<<2)|2,{101,122,0}}, +/* 12209 */ {(12<<2)|2,{101,122,0}}, +/* 12210 */ {(12<<2)|2,{101,122,0}}, +/* 12211 */ {(12<<2)|2,{101,122,0}}, +/* 12212 */ {(12<<2)|2,{101,122,0}}, +/* 12213 */ {(12<<2)|2,{101,122,0}}, +/* 12214 */ {(12<<2)|2,{101,122,0}}, +/* 12215 */ {(12<<2)|2,{101,122,0}}, +/* 12216 */ {(12<<2)|2,{101,122,0}}, +/* 12217 */ {(12<<2)|2,{101,122,0}}, +/* 12218 */ {(12<<2)|2,{101,122,0}}, +/* 12219 */ {(12<<2)|2,{101,122,0}}, +/* 12220 */ {(12<<2)|2,{101,122,0}}, +/* 12221 */ {(12<<2)|2,{101,122,0}}, +/* 12222 */ {(12<<2)|2,{101,122,0}}, +/* 12223 */ {(12<<2)|2,{101,122,0}}, +/* 12224 */ {(13<<2)|2,{101,38,0}}, +/* 12225 */ {(13<<2)|2,{101,38,0}}, +/* 12226 */ {(13<<2)|2,{101,38,0}}, +/* 12227 */ {(13<<2)|2,{101,38,0}}, +/* 12228 */ {(13<<2)|2,{101,38,0}}, +/* 12229 */ {(13<<2)|2,{101,38,0}}, +/* 12230 */ {(13<<2)|2,{101,38,0}}, +/* 12231 */ {(13<<2)|2,{101,38,0}}, +/* 12232 */ {(13<<2)|2,{101,42,0}}, +/* 12233 */ {(13<<2)|2,{101,42,0}}, +/* 12234 */ {(13<<2)|2,{101,42,0}}, +/* 12235 */ {(13<<2)|2,{101,42,0}}, +/* 12236 */ {(13<<2)|2,{101,42,0}}, +/* 12237 */ {(13<<2)|2,{101,42,0}}, +/* 12238 */ {(13<<2)|2,{101,42,0}}, +/* 12239 */ {(13<<2)|2,{101,42,0}}, +/* 12240 */ {(13<<2)|2,{101,44,0}}, +/* 12241 */ {(13<<2)|2,{101,44,0}}, +/* 12242 */ {(13<<2)|2,{101,44,0}}, +/* 12243 */ {(13<<2)|2,{101,44,0}}, +/* 12244 */ {(13<<2)|2,{101,44,0}}, +/* 12245 */ {(13<<2)|2,{101,44,0}}, +/* 12246 */ {(13<<2)|2,{101,44,0}}, +/* 12247 */ {(13<<2)|2,{101,44,0}}, +/* 12248 */ {(13<<2)|2,{101,59,0}}, +/* 12249 */ {(13<<2)|2,{101,59,0}}, +/* 12250 */ {(13<<2)|2,{101,59,0}}, +/* 12251 */ {(13<<2)|2,{101,59,0}}, +/* 12252 */ {(13<<2)|2,{101,59,0}}, +/* 12253 */ {(13<<2)|2,{101,59,0}}, +/* 12254 */ {(13<<2)|2,{101,59,0}}, +/* 12255 */ {(13<<2)|2,{101,59,0}}, +/* 12256 */ {(13<<2)|2,{101,88,0}}, +/* 12257 */ {(13<<2)|2,{101,88,0}}, +/* 12258 */ {(13<<2)|2,{101,88,0}}, +/* 12259 */ {(13<<2)|2,{101,88,0}}, +/* 12260 */ {(13<<2)|2,{101,88,0}}, +/* 12261 */ {(13<<2)|2,{101,88,0}}, +/* 12262 */ {(13<<2)|2,{101,88,0}}, +/* 12263 */ {(13<<2)|2,{101,88,0}}, +/* 12264 */ {(13<<2)|2,{101,90,0}}, +/* 12265 */ {(13<<2)|2,{101,90,0}}, +/* 12266 */ {(13<<2)|2,{101,90,0}}, +/* 12267 */ {(13<<2)|2,{101,90,0}}, +/* 12268 */ {(13<<2)|2,{101,90,0}}, +/* 12269 */ {(13<<2)|2,{101,90,0}}, +/* 12270 */ {(13<<2)|2,{101,90,0}}, +/* 12271 */ {(13<<2)|2,{101,90,0}}, +/* 12272 */ {(15<<2)|2,{101,33,0}}, +/* 12273 */ {(15<<2)|2,{101,33,0}}, +/* 12274 */ {(15<<2)|2,{101,34,0}}, +/* 12275 */ {(15<<2)|2,{101,34,0}}, +/* 12276 */ {(15<<2)|2,{101,40,0}}, +/* 12277 */ {(15<<2)|2,{101,40,0}}, +/* 12278 */ {(15<<2)|2,{101,41,0}}, +/* 12279 */ {(15<<2)|2,{101,41,0}}, +/* 12280 */ {(15<<2)|2,{101,63,0}}, +/* 12281 */ {(15<<2)|2,{101,63,0}}, +/* 12282 */ {(16<<2)|2,{101,39,0}}, +/* 12283 */ {(16<<2)|2,{101,43,0}}, +/* 12284 */ {(16<<2)|2,{101,124,0}}, +/* 12285 */ {(5<<2)|1,{101,0,0}}, +/* 12286 */ {(5<<2)|1,{101,0,0}}, +/* 12287 */ {(5<<2)|1,{101,0,0}}, +/* 12288 */ {(15<<2)|3,{105,48,48}}, +/* 12289 */ {(15<<2)|3,{105,48,48}}, +/* 12290 */ {(15<<2)|3,{105,48,49}}, +/* 12291 */ {(15<<2)|3,{105,48,49}}, +/* 12292 */ {(15<<2)|3,{105,48,50}}, +/* 12293 */ {(15<<2)|3,{105,48,50}}, +/* 12294 */ {(15<<2)|3,{105,48,97}}, +/* 12295 */ {(15<<2)|3,{105,48,97}}, +/* 12296 */ {(15<<2)|3,{105,48,99}}, +/* 12297 */ {(15<<2)|3,{105,48,99}}, +/* 12298 */ {(15<<2)|3,{105,48,101}}, +/* 12299 */ {(15<<2)|3,{105,48,101}}, +/* 12300 */ {(15<<2)|3,{105,48,105}}, +/* 12301 */ {(15<<2)|3,{105,48,105}}, +/* 12302 */ {(15<<2)|3,{105,48,111}}, +/* 12303 */ {(15<<2)|3,{105,48,111}}, +/* 12304 */ {(15<<2)|3,{105,48,115}}, +/* 12305 */ {(15<<2)|3,{105,48,115}}, +/* 12306 */ {(15<<2)|3,{105,48,116}}, +/* 12307 */ {(15<<2)|3,{105,48,116}}, +/* 12308 */ {(16<<2)|3,{105,48,32}}, +/* 12309 */ {(16<<2)|3,{105,48,37}}, +/* 12310 */ {(16<<2)|3,{105,48,45}}, +/* 12311 */ {(16<<2)|3,{105,48,46}}, +/* 12312 */ {(16<<2)|3,{105,48,47}}, +/* 12313 */ {(16<<2)|3,{105,48,51}}, +/* 12314 */ {(16<<2)|3,{105,48,52}}, +/* 12315 */ {(16<<2)|3,{105,48,53}}, +/* 12316 */ {(16<<2)|3,{105,48,54}}, +/* 12317 */ {(16<<2)|3,{105,48,55}}, +/* 12318 */ {(16<<2)|3,{105,48,56}}, +/* 12319 */ {(16<<2)|3,{105,48,57}}, +/* 12320 */ {(16<<2)|3,{105,48,61}}, +/* 12321 */ {(16<<2)|3,{105,48,65}}, +/* 12322 */ {(16<<2)|3,{105,48,95}}, +/* 12323 */ {(16<<2)|3,{105,48,98}}, +/* 12324 */ {(16<<2)|3,{105,48,100}}, +/* 12325 */ {(16<<2)|3,{105,48,102}}, +/* 12326 */ {(16<<2)|3,{105,48,103}}, +/* 12327 */ {(16<<2)|3,{105,48,104}}, +/* 12328 */ {(16<<2)|3,{105,48,108}}, +/* 12329 */ {(16<<2)|3,{105,48,109}}, +/* 12330 */ {(16<<2)|3,{105,48,110}}, +/* 12331 */ {(16<<2)|3,{105,48,112}}, +/* 12332 */ {(16<<2)|3,{105,48,114}}, +/* 12333 */ {(16<<2)|3,{105,48,117}}, +/* 12334 */ {(10<<2)|2,{105,48,0}}, +/* 12335 */ {(10<<2)|2,{105,48,0}}, +/* 12336 */ {(10<<2)|2,{105,48,0}}, +/* 12337 */ {(10<<2)|2,{105,48,0}}, +/* 12338 */ {(10<<2)|2,{105,48,0}}, +/* 12339 */ {(10<<2)|2,{105,48,0}}, +/* 12340 */ {(10<<2)|2,{105,48,0}}, +/* 12341 */ {(10<<2)|2,{105,48,0}}, +/* 12342 */ {(10<<2)|2,{105,48,0}}, +/* 12343 */ {(10<<2)|2,{105,48,0}}, +/* 12344 */ {(10<<2)|2,{105,48,0}}, +/* 12345 */ {(10<<2)|2,{105,48,0}}, +/* 12346 */ {(10<<2)|2,{105,48,0}}, +/* 12347 */ {(10<<2)|2,{105,48,0}}, +/* 12348 */ {(10<<2)|2,{105,48,0}}, +/* 12349 */ {(10<<2)|2,{105,48,0}}, +/* 12350 */ {(10<<2)|2,{105,48,0}}, +/* 12351 */ {(10<<2)|2,{105,48,0}}, +/* 12352 */ {(15<<2)|3,{105,49,48}}, +/* 12353 */ {(15<<2)|3,{105,49,48}}, +/* 12354 */ {(15<<2)|3,{105,49,49}}, +/* 12355 */ {(15<<2)|3,{105,49,49}}, +/* 12356 */ {(15<<2)|3,{105,49,50}}, +/* 12357 */ {(15<<2)|3,{105,49,50}}, +/* 12358 */ {(15<<2)|3,{105,49,97}}, +/* 12359 */ {(15<<2)|3,{105,49,97}}, +/* 12360 */ {(15<<2)|3,{105,49,99}}, +/* 12361 */ {(15<<2)|3,{105,49,99}}, +/* 12362 */ {(15<<2)|3,{105,49,101}}, +/* 12363 */ {(15<<2)|3,{105,49,101}}, +/* 12364 */ {(15<<2)|3,{105,49,105}}, +/* 12365 */ {(15<<2)|3,{105,49,105}}, +/* 12366 */ {(15<<2)|3,{105,49,111}}, +/* 12367 */ {(15<<2)|3,{105,49,111}}, +/* 12368 */ {(15<<2)|3,{105,49,115}}, +/* 12369 */ {(15<<2)|3,{105,49,115}}, +/* 12370 */ {(15<<2)|3,{105,49,116}}, +/* 12371 */ {(15<<2)|3,{105,49,116}}, +/* 12372 */ {(16<<2)|3,{105,49,32}}, +/* 12373 */ {(16<<2)|3,{105,49,37}}, +/* 12374 */ {(16<<2)|3,{105,49,45}}, +/* 12375 */ {(16<<2)|3,{105,49,46}}, +/* 12376 */ {(16<<2)|3,{105,49,47}}, +/* 12377 */ {(16<<2)|3,{105,49,51}}, +/* 12378 */ {(16<<2)|3,{105,49,52}}, +/* 12379 */ {(16<<2)|3,{105,49,53}}, +/* 12380 */ {(16<<2)|3,{105,49,54}}, +/* 12381 */ {(16<<2)|3,{105,49,55}}, +/* 12382 */ {(16<<2)|3,{105,49,56}}, +/* 12383 */ {(16<<2)|3,{105,49,57}}, +/* 12384 */ {(16<<2)|3,{105,49,61}}, +/* 12385 */ {(16<<2)|3,{105,49,65}}, +/* 12386 */ {(16<<2)|3,{105,49,95}}, +/* 12387 */ {(16<<2)|3,{105,49,98}}, +/* 12388 */ {(16<<2)|3,{105,49,100}}, +/* 12389 */ {(16<<2)|3,{105,49,102}}, +/* 12390 */ {(16<<2)|3,{105,49,103}}, +/* 12391 */ {(16<<2)|3,{105,49,104}}, +/* 12392 */ {(16<<2)|3,{105,49,108}}, +/* 12393 */ {(16<<2)|3,{105,49,109}}, +/* 12394 */ {(16<<2)|3,{105,49,110}}, +/* 12395 */ {(16<<2)|3,{105,49,112}}, +/* 12396 */ {(16<<2)|3,{105,49,114}}, +/* 12397 */ {(16<<2)|3,{105,49,117}}, +/* 12398 */ {(10<<2)|2,{105,49,0}}, +/* 12399 */ {(10<<2)|2,{105,49,0}}, +/* 12400 */ {(10<<2)|2,{105,49,0}}, +/* 12401 */ {(10<<2)|2,{105,49,0}}, +/* 12402 */ {(10<<2)|2,{105,49,0}}, +/* 12403 */ {(10<<2)|2,{105,49,0}}, +/* 12404 */ {(10<<2)|2,{105,49,0}}, +/* 12405 */ {(10<<2)|2,{105,49,0}}, +/* 12406 */ {(10<<2)|2,{105,49,0}}, +/* 12407 */ {(10<<2)|2,{105,49,0}}, +/* 12408 */ {(10<<2)|2,{105,49,0}}, +/* 12409 */ {(10<<2)|2,{105,49,0}}, +/* 12410 */ {(10<<2)|2,{105,49,0}}, +/* 12411 */ {(10<<2)|2,{105,49,0}}, +/* 12412 */ {(10<<2)|2,{105,49,0}}, +/* 12413 */ {(10<<2)|2,{105,49,0}}, +/* 12414 */ {(10<<2)|2,{105,49,0}}, +/* 12415 */ {(10<<2)|2,{105,49,0}}, +/* 12416 */ {(15<<2)|3,{105,50,48}}, +/* 12417 */ {(15<<2)|3,{105,50,48}}, +/* 12418 */ {(15<<2)|3,{105,50,49}}, +/* 12419 */ {(15<<2)|3,{105,50,49}}, +/* 12420 */ {(15<<2)|3,{105,50,50}}, +/* 12421 */ {(15<<2)|3,{105,50,50}}, +/* 12422 */ {(15<<2)|3,{105,50,97}}, +/* 12423 */ {(15<<2)|3,{105,50,97}}, +/* 12424 */ {(15<<2)|3,{105,50,99}}, +/* 12425 */ {(15<<2)|3,{105,50,99}}, +/* 12426 */ {(15<<2)|3,{105,50,101}}, +/* 12427 */ {(15<<2)|3,{105,50,101}}, +/* 12428 */ {(15<<2)|3,{105,50,105}}, +/* 12429 */ {(15<<2)|3,{105,50,105}}, +/* 12430 */ {(15<<2)|3,{105,50,111}}, +/* 12431 */ {(15<<2)|3,{105,50,111}}, +/* 12432 */ {(15<<2)|3,{105,50,115}}, +/* 12433 */ {(15<<2)|3,{105,50,115}}, +/* 12434 */ {(15<<2)|3,{105,50,116}}, +/* 12435 */ {(15<<2)|3,{105,50,116}}, +/* 12436 */ {(16<<2)|3,{105,50,32}}, +/* 12437 */ {(16<<2)|3,{105,50,37}}, +/* 12438 */ {(16<<2)|3,{105,50,45}}, +/* 12439 */ {(16<<2)|3,{105,50,46}}, +/* 12440 */ {(16<<2)|3,{105,50,47}}, +/* 12441 */ {(16<<2)|3,{105,50,51}}, +/* 12442 */ {(16<<2)|3,{105,50,52}}, +/* 12443 */ {(16<<2)|3,{105,50,53}}, +/* 12444 */ {(16<<2)|3,{105,50,54}}, +/* 12445 */ {(16<<2)|3,{105,50,55}}, +/* 12446 */ {(16<<2)|3,{105,50,56}}, +/* 12447 */ {(16<<2)|3,{105,50,57}}, +/* 12448 */ {(16<<2)|3,{105,50,61}}, +/* 12449 */ {(16<<2)|3,{105,50,65}}, +/* 12450 */ {(16<<2)|3,{105,50,95}}, +/* 12451 */ {(16<<2)|3,{105,50,98}}, +/* 12452 */ {(16<<2)|3,{105,50,100}}, +/* 12453 */ {(16<<2)|3,{105,50,102}}, +/* 12454 */ {(16<<2)|3,{105,50,103}}, +/* 12455 */ {(16<<2)|3,{105,50,104}}, +/* 12456 */ {(16<<2)|3,{105,50,108}}, +/* 12457 */ {(16<<2)|3,{105,50,109}}, +/* 12458 */ {(16<<2)|3,{105,50,110}}, +/* 12459 */ {(16<<2)|3,{105,50,112}}, +/* 12460 */ {(16<<2)|3,{105,50,114}}, +/* 12461 */ {(16<<2)|3,{105,50,117}}, +/* 12462 */ {(10<<2)|2,{105,50,0}}, +/* 12463 */ {(10<<2)|2,{105,50,0}}, +/* 12464 */ {(10<<2)|2,{105,50,0}}, +/* 12465 */ {(10<<2)|2,{105,50,0}}, +/* 12466 */ {(10<<2)|2,{105,50,0}}, +/* 12467 */ {(10<<2)|2,{105,50,0}}, +/* 12468 */ {(10<<2)|2,{105,50,0}}, +/* 12469 */ {(10<<2)|2,{105,50,0}}, +/* 12470 */ {(10<<2)|2,{105,50,0}}, +/* 12471 */ {(10<<2)|2,{105,50,0}}, +/* 12472 */ {(10<<2)|2,{105,50,0}}, +/* 12473 */ {(10<<2)|2,{105,50,0}}, +/* 12474 */ {(10<<2)|2,{105,50,0}}, +/* 12475 */ {(10<<2)|2,{105,50,0}}, +/* 12476 */ {(10<<2)|2,{105,50,0}}, +/* 12477 */ {(10<<2)|2,{105,50,0}}, +/* 12478 */ {(10<<2)|2,{105,50,0}}, +/* 12479 */ {(10<<2)|2,{105,50,0}}, +/* 12480 */ {(15<<2)|3,{105,97,48}}, +/* 12481 */ {(15<<2)|3,{105,97,48}}, +/* 12482 */ {(15<<2)|3,{105,97,49}}, +/* 12483 */ {(15<<2)|3,{105,97,49}}, +/* 12484 */ {(15<<2)|3,{105,97,50}}, +/* 12485 */ {(15<<2)|3,{105,97,50}}, +/* 12486 */ {(15<<2)|3,{105,97,97}}, +/* 12487 */ {(15<<2)|3,{105,97,97}}, +/* 12488 */ {(15<<2)|3,{105,97,99}}, +/* 12489 */ {(15<<2)|3,{105,97,99}}, +/* 12490 */ {(15<<2)|3,{105,97,101}}, +/* 12491 */ {(15<<2)|3,{105,97,101}}, +/* 12492 */ {(15<<2)|3,{105,97,105}}, +/* 12493 */ {(15<<2)|3,{105,97,105}}, +/* 12494 */ {(15<<2)|3,{105,97,111}}, +/* 12495 */ {(15<<2)|3,{105,97,111}}, +/* 12496 */ {(15<<2)|3,{105,97,115}}, +/* 12497 */ {(15<<2)|3,{105,97,115}}, +/* 12498 */ {(15<<2)|3,{105,97,116}}, +/* 12499 */ {(15<<2)|3,{105,97,116}}, +/* 12500 */ {(16<<2)|3,{105,97,32}}, +/* 12501 */ {(16<<2)|3,{105,97,37}}, +/* 12502 */ {(16<<2)|3,{105,97,45}}, +/* 12503 */ {(16<<2)|3,{105,97,46}}, +/* 12504 */ {(16<<2)|3,{105,97,47}}, +/* 12505 */ {(16<<2)|3,{105,97,51}}, +/* 12506 */ {(16<<2)|3,{105,97,52}}, +/* 12507 */ {(16<<2)|3,{105,97,53}}, +/* 12508 */ {(16<<2)|3,{105,97,54}}, +/* 12509 */ {(16<<2)|3,{105,97,55}}, +/* 12510 */ {(16<<2)|3,{105,97,56}}, +/* 12511 */ {(16<<2)|3,{105,97,57}}, +/* 12512 */ {(16<<2)|3,{105,97,61}}, +/* 12513 */ {(16<<2)|3,{105,97,65}}, +/* 12514 */ {(16<<2)|3,{105,97,95}}, +/* 12515 */ {(16<<2)|3,{105,97,98}}, +/* 12516 */ {(16<<2)|3,{105,97,100}}, +/* 12517 */ {(16<<2)|3,{105,97,102}}, +/* 12518 */ {(16<<2)|3,{105,97,103}}, +/* 12519 */ {(16<<2)|3,{105,97,104}}, +/* 12520 */ {(16<<2)|3,{105,97,108}}, +/* 12521 */ {(16<<2)|3,{105,97,109}}, +/* 12522 */ {(16<<2)|3,{105,97,110}}, +/* 12523 */ {(16<<2)|3,{105,97,112}}, +/* 12524 */ {(16<<2)|3,{105,97,114}}, +/* 12525 */ {(16<<2)|3,{105,97,117}}, +/* 12526 */ {(10<<2)|2,{105,97,0}}, +/* 12527 */ {(10<<2)|2,{105,97,0}}, +/* 12528 */ {(10<<2)|2,{105,97,0}}, +/* 12529 */ {(10<<2)|2,{105,97,0}}, +/* 12530 */ {(10<<2)|2,{105,97,0}}, +/* 12531 */ {(10<<2)|2,{105,97,0}}, +/* 12532 */ {(10<<2)|2,{105,97,0}}, +/* 12533 */ {(10<<2)|2,{105,97,0}}, +/* 12534 */ {(10<<2)|2,{105,97,0}}, +/* 12535 */ {(10<<2)|2,{105,97,0}}, +/* 12536 */ {(10<<2)|2,{105,97,0}}, +/* 12537 */ {(10<<2)|2,{105,97,0}}, +/* 12538 */ {(10<<2)|2,{105,97,0}}, +/* 12539 */ {(10<<2)|2,{105,97,0}}, +/* 12540 */ {(10<<2)|2,{105,97,0}}, +/* 12541 */ {(10<<2)|2,{105,97,0}}, +/* 12542 */ {(10<<2)|2,{105,97,0}}, +/* 12543 */ {(10<<2)|2,{105,97,0}}, +/* 12544 */ {(15<<2)|3,{105,99,48}}, +/* 12545 */ {(15<<2)|3,{105,99,48}}, +/* 12546 */ {(15<<2)|3,{105,99,49}}, +/* 12547 */ {(15<<2)|3,{105,99,49}}, +/* 12548 */ {(15<<2)|3,{105,99,50}}, +/* 12549 */ {(15<<2)|3,{105,99,50}}, +/* 12550 */ {(15<<2)|3,{105,99,97}}, +/* 12551 */ {(15<<2)|3,{105,99,97}}, +/* 12552 */ {(15<<2)|3,{105,99,99}}, +/* 12553 */ {(15<<2)|3,{105,99,99}}, +/* 12554 */ {(15<<2)|3,{105,99,101}}, +/* 12555 */ {(15<<2)|3,{105,99,101}}, +/* 12556 */ {(15<<2)|3,{105,99,105}}, +/* 12557 */ {(15<<2)|3,{105,99,105}}, +/* 12558 */ {(15<<2)|3,{105,99,111}}, +/* 12559 */ {(15<<2)|3,{105,99,111}}, +/* 12560 */ {(15<<2)|3,{105,99,115}}, +/* 12561 */ {(15<<2)|3,{105,99,115}}, +/* 12562 */ {(15<<2)|3,{105,99,116}}, +/* 12563 */ {(15<<2)|3,{105,99,116}}, +/* 12564 */ {(16<<2)|3,{105,99,32}}, +/* 12565 */ {(16<<2)|3,{105,99,37}}, +/* 12566 */ {(16<<2)|3,{105,99,45}}, +/* 12567 */ {(16<<2)|3,{105,99,46}}, +/* 12568 */ {(16<<2)|3,{105,99,47}}, +/* 12569 */ {(16<<2)|3,{105,99,51}}, +/* 12570 */ {(16<<2)|3,{105,99,52}}, +/* 12571 */ {(16<<2)|3,{105,99,53}}, +/* 12572 */ {(16<<2)|3,{105,99,54}}, +/* 12573 */ {(16<<2)|3,{105,99,55}}, +/* 12574 */ {(16<<2)|3,{105,99,56}}, +/* 12575 */ {(16<<2)|3,{105,99,57}}, +/* 12576 */ {(16<<2)|3,{105,99,61}}, +/* 12577 */ {(16<<2)|3,{105,99,65}}, +/* 12578 */ {(16<<2)|3,{105,99,95}}, +/* 12579 */ {(16<<2)|3,{105,99,98}}, +/* 12580 */ {(16<<2)|3,{105,99,100}}, +/* 12581 */ {(16<<2)|3,{105,99,102}}, +/* 12582 */ {(16<<2)|3,{105,99,103}}, +/* 12583 */ {(16<<2)|3,{105,99,104}}, +/* 12584 */ {(16<<2)|3,{105,99,108}}, +/* 12585 */ {(16<<2)|3,{105,99,109}}, +/* 12586 */ {(16<<2)|3,{105,99,110}}, +/* 12587 */ {(16<<2)|3,{105,99,112}}, +/* 12588 */ {(16<<2)|3,{105,99,114}}, +/* 12589 */ {(16<<2)|3,{105,99,117}}, +/* 12590 */ {(10<<2)|2,{105,99,0}}, +/* 12591 */ {(10<<2)|2,{105,99,0}}, +/* 12592 */ {(10<<2)|2,{105,99,0}}, +/* 12593 */ {(10<<2)|2,{105,99,0}}, +/* 12594 */ {(10<<2)|2,{105,99,0}}, +/* 12595 */ {(10<<2)|2,{105,99,0}}, +/* 12596 */ {(10<<2)|2,{105,99,0}}, +/* 12597 */ {(10<<2)|2,{105,99,0}}, +/* 12598 */ {(10<<2)|2,{105,99,0}}, +/* 12599 */ {(10<<2)|2,{105,99,0}}, +/* 12600 */ {(10<<2)|2,{105,99,0}}, +/* 12601 */ {(10<<2)|2,{105,99,0}}, +/* 12602 */ {(10<<2)|2,{105,99,0}}, +/* 12603 */ {(10<<2)|2,{105,99,0}}, +/* 12604 */ {(10<<2)|2,{105,99,0}}, +/* 12605 */ {(10<<2)|2,{105,99,0}}, +/* 12606 */ {(10<<2)|2,{105,99,0}}, +/* 12607 */ {(10<<2)|2,{105,99,0}}, +/* 12608 */ {(15<<2)|3,{105,101,48}}, +/* 12609 */ {(15<<2)|3,{105,101,48}}, +/* 12610 */ {(15<<2)|3,{105,101,49}}, +/* 12611 */ {(15<<2)|3,{105,101,49}}, +/* 12612 */ {(15<<2)|3,{105,101,50}}, +/* 12613 */ {(15<<2)|3,{105,101,50}}, +/* 12614 */ {(15<<2)|3,{105,101,97}}, +/* 12615 */ {(15<<2)|3,{105,101,97}}, +/* 12616 */ {(15<<2)|3,{105,101,99}}, +/* 12617 */ {(15<<2)|3,{105,101,99}}, +/* 12618 */ {(15<<2)|3,{105,101,101}}, +/* 12619 */ {(15<<2)|3,{105,101,101}}, +/* 12620 */ {(15<<2)|3,{105,101,105}}, +/* 12621 */ {(15<<2)|3,{105,101,105}}, +/* 12622 */ {(15<<2)|3,{105,101,111}}, +/* 12623 */ {(15<<2)|3,{105,101,111}}, +/* 12624 */ {(15<<2)|3,{105,101,115}}, +/* 12625 */ {(15<<2)|3,{105,101,115}}, +/* 12626 */ {(15<<2)|3,{105,101,116}}, +/* 12627 */ {(15<<2)|3,{105,101,116}}, +/* 12628 */ {(16<<2)|3,{105,101,32}}, +/* 12629 */ {(16<<2)|3,{105,101,37}}, +/* 12630 */ {(16<<2)|3,{105,101,45}}, +/* 12631 */ {(16<<2)|3,{105,101,46}}, +/* 12632 */ {(16<<2)|3,{105,101,47}}, +/* 12633 */ {(16<<2)|3,{105,101,51}}, +/* 12634 */ {(16<<2)|3,{105,101,52}}, +/* 12635 */ {(16<<2)|3,{105,101,53}}, +/* 12636 */ {(16<<2)|3,{105,101,54}}, +/* 12637 */ {(16<<2)|3,{105,101,55}}, +/* 12638 */ {(16<<2)|3,{105,101,56}}, +/* 12639 */ {(16<<2)|3,{105,101,57}}, +/* 12640 */ {(16<<2)|3,{105,101,61}}, +/* 12641 */ {(16<<2)|3,{105,101,65}}, +/* 12642 */ {(16<<2)|3,{105,101,95}}, +/* 12643 */ {(16<<2)|3,{105,101,98}}, +/* 12644 */ {(16<<2)|3,{105,101,100}}, +/* 12645 */ {(16<<2)|3,{105,101,102}}, +/* 12646 */ {(16<<2)|3,{105,101,103}}, +/* 12647 */ {(16<<2)|3,{105,101,104}}, +/* 12648 */ {(16<<2)|3,{105,101,108}}, +/* 12649 */ {(16<<2)|3,{105,101,109}}, +/* 12650 */ {(16<<2)|3,{105,101,110}}, +/* 12651 */ {(16<<2)|3,{105,101,112}}, +/* 12652 */ {(16<<2)|3,{105,101,114}}, +/* 12653 */ {(16<<2)|3,{105,101,117}}, +/* 12654 */ {(10<<2)|2,{105,101,0}}, +/* 12655 */ {(10<<2)|2,{105,101,0}}, +/* 12656 */ {(10<<2)|2,{105,101,0}}, +/* 12657 */ {(10<<2)|2,{105,101,0}}, +/* 12658 */ {(10<<2)|2,{105,101,0}}, +/* 12659 */ {(10<<2)|2,{105,101,0}}, +/* 12660 */ {(10<<2)|2,{105,101,0}}, +/* 12661 */ {(10<<2)|2,{105,101,0}}, +/* 12662 */ {(10<<2)|2,{105,101,0}}, +/* 12663 */ {(10<<2)|2,{105,101,0}}, +/* 12664 */ {(10<<2)|2,{105,101,0}}, +/* 12665 */ {(10<<2)|2,{105,101,0}}, +/* 12666 */ {(10<<2)|2,{105,101,0}}, +/* 12667 */ {(10<<2)|2,{105,101,0}}, +/* 12668 */ {(10<<2)|2,{105,101,0}}, +/* 12669 */ {(10<<2)|2,{105,101,0}}, +/* 12670 */ {(10<<2)|2,{105,101,0}}, +/* 12671 */ {(10<<2)|2,{105,101,0}}, +/* 12672 */ {(15<<2)|3,{105,105,48}}, +/* 12673 */ {(15<<2)|3,{105,105,48}}, +/* 12674 */ {(15<<2)|3,{105,105,49}}, +/* 12675 */ {(15<<2)|3,{105,105,49}}, +/* 12676 */ {(15<<2)|3,{105,105,50}}, +/* 12677 */ {(15<<2)|3,{105,105,50}}, +/* 12678 */ {(15<<2)|3,{105,105,97}}, +/* 12679 */ {(15<<2)|3,{105,105,97}}, +/* 12680 */ {(15<<2)|3,{105,105,99}}, +/* 12681 */ {(15<<2)|3,{105,105,99}}, +/* 12682 */ {(15<<2)|3,{105,105,101}}, +/* 12683 */ {(15<<2)|3,{105,105,101}}, +/* 12684 */ {(15<<2)|3,{105,105,105}}, +/* 12685 */ {(15<<2)|3,{105,105,105}}, +/* 12686 */ {(15<<2)|3,{105,105,111}}, +/* 12687 */ {(15<<2)|3,{105,105,111}}, +/* 12688 */ {(15<<2)|3,{105,105,115}}, +/* 12689 */ {(15<<2)|3,{105,105,115}}, +/* 12690 */ {(15<<2)|3,{105,105,116}}, +/* 12691 */ {(15<<2)|3,{105,105,116}}, +/* 12692 */ {(16<<2)|3,{105,105,32}}, +/* 12693 */ {(16<<2)|3,{105,105,37}}, +/* 12694 */ {(16<<2)|3,{105,105,45}}, +/* 12695 */ {(16<<2)|3,{105,105,46}}, +/* 12696 */ {(16<<2)|3,{105,105,47}}, +/* 12697 */ {(16<<2)|3,{105,105,51}}, +/* 12698 */ {(16<<2)|3,{105,105,52}}, +/* 12699 */ {(16<<2)|3,{105,105,53}}, +/* 12700 */ {(16<<2)|3,{105,105,54}}, +/* 12701 */ {(16<<2)|3,{105,105,55}}, +/* 12702 */ {(16<<2)|3,{105,105,56}}, +/* 12703 */ {(16<<2)|3,{105,105,57}}, +/* 12704 */ {(16<<2)|3,{105,105,61}}, +/* 12705 */ {(16<<2)|3,{105,105,65}}, +/* 12706 */ {(16<<2)|3,{105,105,95}}, +/* 12707 */ {(16<<2)|3,{105,105,98}}, +/* 12708 */ {(16<<2)|3,{105,105,100}}, +/* 12709 */ {(16<<2)|3,{105,105,102}}, +/* 12710 */ {(16<<2)|3,{105,105,103}}, +/* 12711 */ {(16<<2)|3,{105,105,104}}, +/* 12712 */ {(16<<2)|3,{105,105,108}}, +/* 12713 */ {(16<<2)|3,{105,105,109}}, +/* 12714 */ {(16<<2)|3,{105,105,110}}, +/* 12715 */ {(16<<2)|3,{105,105,112}}, +/* 12716 */ {(16<<2)|3,{105,105,114}}, +/* 12717 */ {(16<<2)|3,{105,105,117}}, +/* 12718 */ {(10<<2)|2,{105,105,0}}, +/* 12719 */ {(10<<2)|2,{105,105,0}}, +/* 12720 */ {(10<<2)|2,{105,105,0}}, +/* 12721 */ {(10<<2)|2,{105,105,0}}, +/* 12722 */ {(10<<2)|2,{105,105,0}}, +/* 12723 */ {(10<<2)|2,{105,105,0}}, +/* 12724 */ {(10<<2)|2,{105,105,0}}, +/* 12725 */ {(10<<2)|2,{105,105,0}}, +/* 12726 */ {(10<<2)|2,{105,105,0}}, +/* 12727 */ {(10<<2)|2,{105,105,0}}, +/* 12728 */ {(10<<2)|2,{105,105,0}}, +/* 12729 */ {(10<<2)|2,{105,105,0}}, +/* 12730 */ {(10<<2)|2,{105,105,0}}, +/* 12731 */ {(10<<2)|2,{105,105,0}}, +/* 12732 */ {(10<<2)|2,{105,105,0}}, +/* 12733 */ {(10<<2)|2,{105,105,0}}, +/* 12734 */ {(10<<2)|2,{105,105,0}}, +/* 12735 */ {(10<<2)|2,{105,105,0}}, +/* 12736 */ {(15<<2)|3,{105,111,48}}, +/* 12737 */ {(15<<2)|3,{105,111,48}}, +/* 12738 */ {(15<<2)|3,{105,111,49}}, +/* 12739 */ {(15<<2)|3,{105,111,49}}, +/* 12740 */ {(15<<2)|3,{105,111,50}}, +/* 12741 */ {(15<<2)|3,{105,111,50}}, +/* 12742 */ {(15<<2)|3,{105,111,97}}, +/* 12743 */ {(15<<2)|3,{105,111,97}}, +/* 12744 */ {(15<<2)|3,{105,111,99}}, +/* 12745 */ {(15<<2)|3,{105,111,99}}, +/* 12746 */ {(15<<2)|3,{105,111,101}}, +/* 12747 */ {(15<<2)|3,{105,111,101}}, +/* 12748 */ {(15<<2)|3,{105,111,105}}, +/* 12749 */ {(15<<2)|3,{105,111,105}}, +/* 12750 */ {(15<<2)|3,{105,111,111}}, +/* 12751 */ {(15<<2)|3,{105,111,111}}, +/* 12752 */ {(15<<2)|3,{105,111,115}}, +/* 12753 */ {(15<<2)|3,{105,111,115}}, +/* 12754 */ {(15<<2)|3,{105,111,116}}, +/* 12755 */ {(15<<2)|3,{105,111,116}}, +/* 12756 */ {(16<<2)|3,{105,111,32}}, +/* 12757 */ {(16<<2)|3,{105,111,37}}, +/* 12758 */ {(16<<2)|3,{105,111,45}}, +/* 12759 */ {(16<<2)|3,{105,111,46}}, +/* 12760 */ {(16<<2)|3,{105,111,47}}, +/* 12761 */ {(16<<2)|3,{105,111,51}}, +/* 12762 */ {(16<<2)|3,{105,111,52}}, +/* 12763 */ {(16<<2)|3,{105,111,53}}, +/* 12764 */ {(16<<2)|3,{105,111,54}}, +/* 12765 */ {(16<<2)|3,{105,111,55}}, +/* 12766 */ {(16<<2)|3,{105,111,56}}, +/* 12767 */ {(16<<2)|3,{105,111,57}}, +/* 12768 */ {(16<<2)|3,{105,111,61}}, +/* 12769 */ {(16<<2)|3,{105,111,65}}, +/* 12770 */ {(16<<2)|3,{105,111,95}}, +/* 12771 */ {(16<<2)|3,{105,111,98}}, +/* 12772 */ {(16<<2)|3,{105,111,100}}, +/* 12773 */ {(16<<2)|3,{105,111,102}}, +/* 12774 */ {(16<<2)|3,{105,111,103}}, +/* 12775 */ {(16<<2)|3,{105,111,104}}, +/* 12776 */ {(16<<2)|3,{105,111,108}}, +/* 12777 */ {(16<<2)|3,{105,111,109}}, +/* 12778 */ {(16<<2)|3,{105,111,110}}, +/* 12779 */ {(16<<2)|3,{105,111,112}}, +/* 12780 */ {(16<<2)|3,{105,111,114}}, +/* 12781 */ {(16<<2)|3,{105,111,117}}, +/* 12782 */ {(10<<2)|2,{105,111,0}}, +/* 12783 */ {(10<<2)|2,{105,111,0}}, +/* 12784 */ {(10<<2)|2,{105,111,0}}, +/* 12785 */ {(10<<2)|2,{105,111,0}}, +/* 12786 */ {(10<<2)|2,{105,111,0}}, +/* 12787 */ {(10<<2)|2,{105,111,0}}, +/* 12788 */ {(10<<2)|2,{105,111,0}}, +/* 12789 */ {(10<<2)|2,{105,111,0}}, +/* 12790 */ {(10<<2)|2,{105,111,0}}, +/* 12791 */ {(10<<2)|2,{105,111,0}}, +/* 12792 */ {(10<<2)|2,{105,111,0}}, +/* 12793 */ {(10<<2)|2,{105,111,0}}, +/* 12794 */ {(10<<2)|2,{105,111,0}}, +/* 12795 */ {(10<<2)|2,{105,111,0}}, +/* 12796 */ {(10<<2)|2,{105,111,0}}, +/* 12797 */ {(10<<2)|2,{105,111,0}}, +/* 12798 */ {(10<<2)|2,{105,111,0}}, +/* 12799 */ {(10<<2)|2,{105,111,0}}, +/* 12800 */ {(15<<2)|3,{105,115,48}}, +/* 12801 */ {(15<<2)|3,{105,115,48}}, +/* 12802 */ {(15<<2)|3,{105,115,49}}, +/* 12803 */ {(15<<2)|3,{105,115,49}}, +/* 12804 */ {(15<<2)|3,{105,115,50}}, +/* 12805 */ {(15<<2)|3,{105,115,50}}, +/* 12806 */ {(15<<2)|3,{105,115,97}}, +/* 12807 */ {(15<<2)|3,{105,115,97}}, +/* 12808 */ {(15<<2)|3,{105,115,99}}, +/* 12809 */ {(15<<2)|3,{105,115,99}}, +/* 12810 */ {(15<<2)|3,{105,115,101}}, +/* 12811 */ {(15<<2)|3,{105,115,101}}, +/* 12812 */ {(15<<2)|3,{105,115,105}}, +/* 12813 */ {(15<<2)|3,{105,115,105}}, +/* 12814 */ {(15<<2)|3,{105,115,111}}, +/* 12815 */ {(15<<2)|3,{105,115,111}}, +/* 12816 */ {(15<<2)|3,{105,115,115}}, +/* 12817 */ {(15<<2)|3,{105,115,115}}, +/* 12818 */ {(15<<2)|3,{105,115,116}}, +/* 12819 */ {(15<<2)|3,{105,115,116}}, +/* 12820 */ {(16<<2)|3,{105,115,32}}, +/* 12821 */ {(16<<2)|3,{105,115,37}}, +/* 12822 */ {(16<<2)|3,{105,115,45}}, +/* 12823 */ {(16<<2)|3,{105,115,46}}, +/* 12824 */ {(16<<2)|3,{105,115,47}}, +/* 12825 */ {(16<<2)|3,{105,115,51}}, +/* 12826 */ {(16<<2)|3,{105,115,52}}, +/* 12827 */ {(16<<2)|3,{105,115,53}}, +/* 12828 */ {(16<<2)|3,{105,115,54}}, +/* 12829 */ {(16<<2)|3,{105,115,55}}, +/* 12830 */ {(16<<2)|3,{105,115,56}}, +/* 12831 */ {(16<<2)|3,{105,115,57}}, +/* 12832 */ {(16<<2)|3,{105,115,61}}, +/* 12833 */ {(16<<2)|3,{105,115,65}}, +/* 12834 */ {(16<<2)|3,{105,115,95}}, +/* 12835 */ {(16<<2)|3,{105,115,98}}, +/* 12836 */ {(16<<2)|3,{105,115,100}}, +/* 12837 */ {(16<<2)|3,{105,115,102}}, +/* 12838 */ {(16<<2)|3,{105,115,103}}, +/* 12839 */ {(16<<2)|3,{105,115,104}}, +/* 12840 */ {(16<<2)|3,{105,115,108}}, +/* 12841 */ {(16<<2)|3,{105,115,109}}, +/* 12842 */ {(16<<2)|3,{105,115,110}}, +/* 12843 */ {(16<<2)|3,{105,115,112}}, +/* 12844 */ {(16<<2)|3,{105,115,114}}, +/* 12845 */ {(16<<2)|3,{105,115,117}}, +/* 12846 */ {(10<<2)|2,{105,115,0}}, +/* 12847 */ {(10<<2)|2,{105,115,0}}, +/* 12848 */ {(10<<2)|2,{105,115,0}}, +/* 12849 */ {(10<<2)|2,{105,115,0}}, +/* 12850 */ {(10<<2)|2,{105,115,0}}, +/* 12851 */ {(10<<2)|2,{105,115,0}}, +/* 12852 */ {(10<<2)|2,{105,115,0}}, +/* 12853 */ {(10<<2)|2,{105,115,0}}, +/* 12854 */ {(10<<2)|2,{105,115,0}}, +/* 12855 */ {(10<<2)|2,{105,115,0}}, +/* 12856 */ {(10<<2)|2,{105,115,0}}, +/* 12857 */ {(10<<2)|2,{105,115,0}}, +/* 12858 */ {(10<<2)|2,{105,115,0}}, +/* 12859 */ {(10<<2)|2,{105,115,0}}, +/* 12860 */ {(10<<2)|2,{105,115,0}}, +/* 12861 */ {(10<<2)|2,{105,115,0}}, +/* 12862 */ {(10<<2)|2,{105,115,0}}, +/* 12863 */ {(10<<2)|2,{105,115,0}}, +/* 12864 */ {(15<<2)|3,{105,116,48}}, +/* 12865 */ {(15<<2)|3,{105,116,48}}, +/* 12866 */ {(15<<2)|3,{105,116,49}}, +/* 12867 */ {(15<<2)|3,{105,116,49}}, +/* 12868 */ {(15<<2)|3,{105,116,50}}, +/* 12869 */ {(15<<2)|3,{105,116,50}}, +/* 12870 */ {(15<<2)|3,{105,116,97}}, +/* 12871 */ {(15<<2)|3,{105,116,97}}, +/* 12872 */ {(15<<2)|3,{105,116,99}}, +/* 12873 */ {(15<<2)|3,{105,116,99}}, +/* 12874 */ {(15<<2)|3,{105,116,101}}, +/* 12875 */ {(15<<2)|3,{105,116,101}}, +/* 12876 */ {(15<<2)|3,{105,116,105}}, +/* 12877 */ {(15<<2)|3,{105,116,105}}, +/* 12878 */ {(15<<2)|3,{105,116,111}}, +/* 12879 */ {(15<<2)|3,{105,116,111}}, +/* 12880 */ {(15<<2)|3,{105,116,115}}, +/* 12881 */ {(15<<2)|3,{105,116,115}}, +/* 12882 */ {(15<<2)|3,{105,116,116}}, +/* 12883 */ {(15<<2)|3,{105,116,116}}, +/* 12884 */ {(16<<2)|3,{105,116,32}}, +/* 12885 */ {(16<<2)|3,{105,116,37}}, +/* 12886 */ {(16<<2)|3,{105,116,45}}, +/* 12887 */ {(16<<2)|3,{105,116,46}}, +/* 12888 */ {(16<<2)|3,{105,116,47}}, +/* 12889 */ {(16<<2)|3,{105,116,51}}, +/* 12890 */ {(16<<2)|3,{105,116,52}}, +/* 12891 */ {(16<<2)|3,{105,116,53}}, +/* 12892 */ {(16<<2)|3,{105,116,54}}, +/* 12893 */ {(16<<2)|3,{105,116,55}}, +/* 12894 */ {(16<<2)|3,{105,116,56}}, +/* 12895 */ {(16<<2)|3,{105,116,57}}, +/* 12896 */ {(16<<2)|3,{105,116,61}}, +/* 12897 */ {(16<<2)|3,{105,116,65}}, +/* 12898 */ {(16<<2)|3,{105,116,95}}, +/* 12899 */ {(16<<2)|3,{105,116,98}}, +/* 12900 */ {(16<<2)|3,{105,116,100}}, +/* 12901 */ {(16<<2)|3,{105,116,102}}, +/* 12902 */ {(16<<2)|3,{105,116,103}}, +/* 12903 */ {(16<<2)|3,{105,116,104}}, +/* 12904 */ {(16<<2)|3,{105,116,108}}, +/* 12905 */ {(16<<2)|3,{105,116,109}}, +/* 12906 */ {(16<<2)|3,{105,116,110}}, +/* 12907 */ {(16<<2)|3,{105,116,112}}, +/* 12908 */ {(16<<2)|3,{105,116,114}}, +/* 12909 */ {(16<<2)|3,{105,116,117}}, +/* 12910 */ {(10<<2)|2,{105,116,0}}, +/* 12911 */ {(10<<2)|2,{105,116,0}}, +/* 12912 */ {(10<<2)|2,{105,116,0}}, +/* 12913 */ {(10<<2)|2,{105,116,0}}, +/* 12914 */ {(10<<2)|2,{105,116,0}}, +/* 12915 */ {(10<<2)|2,{105,116,0}}, +/* 12916 */ {(10<<2)|2,{105,116,0}}, +/* 12917 */ {(10<<2)|2,{105,116,0}}, +/* 12918 */ {(10<<2)|2,{105,116,0}}, +/* 12919 */ {(10<<2)|2,{105,116,0}}, +/* 12920 */ {(10<<2)|2,{105,116,0}}, +/* 12921 */ {(10<<2)|2,{105,116,0}}, +/* 12922 */ {(10<<2)|2,{105,116,0}}, +/* 12923 */ {(10<<2)|2,{105,116,0}}, +/* 12924 */ {(10<<2)|2,{105,116,0}}, +/* 12925 */ {(10<<2)|2,{105,116,0}}, +/* 12926 */ {(10<<2)|2,{105,116,0}}, +/* 12927 */ {(10<<2)|2,{105,116,0}}, +/* 12928 */ {(16<<2)|3,{105,32,48}}, +/* 12929 */ {(16<<2)|3,{105,32,49}}, +/* 12930 */ {(16<<2)|3,{105,32,50}}, +/* 12931 */ {(16<<2)|3,{105,32,97}}, +/* 12932 */ {(16<<2)|3,{105,32,99}}, +/* 12933 */ {(16<<2)|3,{105,32,101}}, +/* 12934 */ {(16<<2)|3,{105,32,105}}, +/* 12935 */ {(16<<2)|3,{105,32,111}}, +/* 12936 */ {(16<<2)|3,{105,32,115}}, +/* 12937 */ {(16<<2)|3,{105,32,116}}, +/* 12938 */ {(11<<2)|2,{105,32,0}}, +/* 12939 */ {(11<<2)|2,{105,32,0}}, +/* 12940 */ {(11<<2)|2,{105,32,0}}, +/* 12941 */ {(11<<2)|2,{105,32,0}}, +/* 12942 */ {(11<<2)|2,{105,32,0}}, +/* 12943 */ {(11<<2)|2,{105,32,0}}, +/* 12944 */ {(11<<2)|2,{105,32,0}}, +/* 12945 */ {(11<<2)|2,{105,32,0}}, +/* 12946 */ {(11<<2)|2,{105,32,0}}, +/* 12947 */ {(11<<2)|2,{105,32,0}}, +/* 12948 */ {(11<<2)|2,{105,32,0}}, +/* 12949 */ {(11<<2)|2,{105,32,0}}, +/* 12950 */ {(11<<2)|2,{105,32,0}}, +/* 12951 */ {(11<<2)|2,{105,32,0}}, +/* 12952 */ {(11<<2)|2,{105,32,0}}, +/* 12953 */ {(11<<2)|2,{105,32,0}}, +/* 12954 */ {(11<<2)|2,{105,32,0}}, +/* 12955 */ {(11<<2)|2,{105,32,0}}, +/* 12956 */ {(11<<2)|2,{105,32,0}}, +/* 12957 */ {(11<<2)|2,{105,32,0}}, +/* 12958 */ {(11<<2)|2,{105,32,0}}, +/* 12959 */ {(11<<2)|2,{105,32,0}}, +/* 12960 */ {(16<<2)|3,{105,37,48}}, +/* 12961 */ {(16<<2)|3,{105,37,49}}, +/* 12962 */ {(16<<2)|3,{105,37,50}}, +/* 12963 */ {(16<<2)|3,{105,37,97}}, +/* 12964 */ {(16<<2)|3,{105,37,99}}, +/* 12965 */ {(16<<2)|3,{105,37,101}}, +/* 12966 */ {(16<<2)|3,{105,37,105}}, +/* 12967 */ {(16<<2)|3,{105,37,111}}, +/* 12968 */ {(16<<2)|3,{105,37,115}}, +/* 12969 */ {(16<<2)|3,{105,37,116}}, +/* 12970 */ {(11<<2)|2,{105,37,0}}, +/* 12971 */ {(11<<2)|2,{105,37,0}}, +/* 12972 */ {(11<<2)|2,{105,37,0}}, +/* 12973 */ {(11<<2)|2,{105,37,0}}, +/* 12974 */ {(11<<2)|2,{105,37,0}}, +/* 12975 */ {(11<<2)|2,{105,37,0}}, +/* 12976 */ {(11<<2)|2,{105,37,0}}, +/* 12977 */ {(11<<2)|2,{105,37,0}}, +/* 12978 */ {(11<<2)|2,{105,37,0}}, +/* 12979 */ {(11<<2)|2,{105,37,0}}, +/* 12980 */ {(11<<2)|2,{105,37,0}}, +/* 12981 */ {(11<<2)|2,{105,37,0}}, +/* 12982 */ {(11<<2)|2,{105,37,0}}, +/* 12983 */ {(11<<2)|2,{105,37,0}}, +/* 12984 */ {(11<<2)|2,{105,37,0}}, +/* 12985 */ {(11<<2)|2,{105,37,0}}, +/* 12986 */ {(11<<2)|2,{105,37,0}}, +/* 12987 */ {(11<<2)|2,{105,37,0}}, +/* 12988 */ {(11<<2)|2,{105,37,0}}, +/* 12989 */ {(11<<2)|2,{105,37,0}}, +/* 12990 */ {(11<<2)|2,{105,37,0}}, +/* 12991 */ {(11<<2)|2,{105,37,0}}, +/* 12992 */ {(16<<2)|3,{105,45,48}}, +/* 12993 */ {(16<<2)|3,{105,45,49}}, +/* 12994 */ {(16<<2)|3,{105,45,50}}, +/* 12995 */ {(16<<2)|3,{105,45,97}}, +/* 12996 */ {(16<<2)|3,{105,45,99}}, +/* 12997 */ {(16<<2)|3,{105,45,101}}, +/* 12998 */ {(16<<2)|3,{105,45,105}}, +/* 12999 */ {(16<<2)|3,{105,45,111}}, +/* 13000 */ {(16<<2)|3,{105,45,115}}, +/* 13001 */ {(16<<2)|3,{105,45,116}}, +/* 13002 */ {(11<<2)|2,{105,45,0}}, +/* 13003 */ {(11<<2)|2,{105,45,0}}, +/* 13004 */ {(11<<2)|2,{105,45,0}}, +/* 13005 */ {(11<<2)|2,{105,45,0}}, +/* 13006 */ {(11<<2)|2,{105,45,0}}, +/* 13007 */ {(11<<2)|2,{105,45,0}}, +/* 13008 */ {(11<<2)|2,{105,45,0}}, +/* 13009 */ {(11<<2)|2,{105,45,0}}, +/* 13010 */ {(11<<2)|2,{105,45,0}}, +/* 13011 */ {(11<<2)|2,{105,45,0}}, +/* 13012 */ {(11<<2)|2,{105,45,0}}, +/* 13013 */ {(11<<2)|2,{105,45,0}}, +/* 13014 */ {(11<<2)|2,{105,45,0}}, +/* 13015 */ {(11<<2)|2,{105,45,0}}, +/* 13016 */ {(11<<2)|2,{105,45,0}}, +/* 13017 */ {(11<<2)|2,{105,45,0}}, +/* 13018 */ {(11<<2)|2,{105,45,0}}, +/* 13019 */ {(11<<2)|2,{105,45,0}}, +/* 13020 */ {(11<<2)|2,{105,45,0}}, +/* 13021 */ {(11<<2)|2,{105,45,0}}, +/* 13022 */ {(11<<2)|2,{105,45,0}}, +/* 13023 */ {(11<<2)|2,{105,45,0}}, +/* 13024 */ {(16<<2)|3,{105,46,48}}, +/* 13025 */ {(16<<2)|3,{105,46,49}}, +/* 13026 */ {(16<<2)|3,{105,46,50}}, +/* 13027 */ {(16<<2)|3,{105,46,97}}, +/* 13028 */ {(16<<2)|3,{105,46,99}}, +/* 13029 */ {(16<<2)|3,{105,46,101}}, +/* 13030 */ {(16<<2)|3,{105,46,105}}, +/* 13031 */ {(16<<2)|3,{105,46,111}}, +/* 13032 */ {(16<<2)|3,{105,46,115}}, +/* 13033 */ {(16<<2)|3,{105,46,116}}, +/* 13034 */ {(11<<2)|2,{105,46,0}}, +/* 13035 */ {(11<<2)|2,{105,46,0}}, +/* 13036 */ {(11<<2)|2,{105,46,0}}, +/* 13037 */ {(11<<2)|2,{105,46,0}}, +/* 13038 */ {(11<<2)|2,{105,46,0}}, +/* 13039 */ {(11<<2)|2,{105,46,0}}, +/* 13040 */ {(11<<2)|2,{105,46,0}}, +/* 13041 */ {(11<<2)|2,{105,46,0}}, +/* 13042 */ {(11<<2)|2,{105,46,0}}, +/* 13043 */ {(11<<2)|2,{105,46,0}}, +/* 13044 */ {(11<<2)|2,{105,46,0}}, +/* 13045 */ {(11<<2)|2,{105,46,0}}, +/* 13046 */ {(11<<2)|2,{105,46,0}}, +/* 13047 */ {(11<<2)|2,{105,46,0}}, +/* 13048 */ {(11<<2)|2,{105,46,0}}, +/* 13049 */ {(11<<2)|2,{105,46,0}}, +/* 13050 */ {(11<<2)|2,{105,46,0}}, +/* 13051 */ {(11<<2)|2,{105,46,0}}, +/* 13052 */ {(11<<2)|2,{105,46,0}}, +/* 13053 */ {(11<<2)|2,{105,46,0}}, +/* 13054 */ {(11<<2)|2,{105,46,0}}, +/* 13055 */ {(11<<2)|2,{105,46,0}}, +/* 13056 */ {(16<<2)|3,{105,47,48}}, +/* 13057 */ {(16<<2)|3,{105,47,49}}, +/* 13058 */ {(16<<2)|3,{105,47,50}}, +/* 13059 */ {(16<<2)|3,{105,47,97}}, +/* 13060 */ {(16<<2)|3,{105,47,99}}, +/* 13061 */ {(16<<2)|3,{105,47,101}}, +/* 13062 */ {(16<<2)|3,{105,47,105}}, +/* 13063 */ {(16<<2)|3,{105,47,111}}, +/* 13064 */ {(16<<2)|3,{105,47,115}}, +/* 13065 */ {(16<<2)|3,{105,47,116}}, +/* 13066 */ {(11<<2)|2,{105,47,0}}, +/* 13067 */ {(11<<2)|2,{105,47,0}}, +/* 13068 */ {(11<<2)|2,{105,47,0}}, +/* 13069 */ {(11<<2)|2,{105,47,0}}, +/* 13070 */ {(11<<2)|2,{105,47,0}}, +/* 13071 */ {(11<<2)|2,{105,47,0}}, +/* 13072 */ {(11<<2)|2,{105,47,0}}, +/* 13073 */ {(11<<2)|2,{105,47,0}}, +/* 13074 */ {(11<<2)|2,{105,47,0}}, +/* 13075 */ {(11<<2)|2,{105,47,0}}, +/* 13076 */ {(11<<2)|2,{105,47,0}}, +/* 13077 */ {(11<<2)|2,{105,47,0}}, +/* 13078 */ {(11<<2)|2,{105,47,0}}, +/* 13079 */ {(11<<2)|2,{105,47,0}}, +/* 13080 */ {(11<<2)|2,{105,47,0}}, +/* 13081 */ {(11<<2)|2,{105,47,0}}, +/* 13082 */ {(11<<2)|2,{105,47,0}}, +/* 13083 */ {(11<<2)|2,{105,47,0}}, +/* 13084 */ {(11<<2)|2,{105,47,0}}, +/* 13085 */ {(11<<2)|2,{105,47,0}}, +/* 13086 */ {(11<<2)|2,{105,47,0}}, +/* 13087 */ {(11<<2)|2,{105,47,0}}, +/* 13088 */ {(16<<2)|3,{105,51,48}}, +/* 13089 */ {(16<<2)|3,{105,51,49}}, +/* 13090 */ {(16<<2)|3,{105,51,50}}, +/* 13091 */ {(16<<2)|3,{105,51,97}}, +/* 13092 */ {(16<<2)|3,{105,51,99}}, +/* 13093 */ {(16<<2)|3,{105,51,101}}, +/* 13094 */ {(16<<2)|3,{105,51,105}}, +/* 13095 */ {(16<<2)|3,{105,51,111}}, +/* 13096 */ {(16<<2)|3,{105,51,115}}, +/* 13097 */ {(16<<2)|3,{105,51,116}}, +/* 13098 */ {(11<<2)|2,{105,51,0}}, +/* 13099 */ {(11<<2)|2,{105,51,0}}, +/* 13100 */ {(11<<2)|2,{105,51,0}}, +/* 13101 */ {(11<<2)|2,{105,51,0}}, +/* 13102 */ {(11<<2)|2,{105,51,0}}, +/* 13103 */ {(11<<2)|2,{105,51,0}}, +/* 13104 */ {(11<<2)|2,{105,51,0}}, +/* 13105 */ {(11<<2)|2,{105,51,0}}, +/* 13106 */ {(11<<2)|2,{105,51,0}}, +/* 13107 */ {(11<<2)|2,{105,51,0}}, +/* 13108 */ {(11<<2)|2,{105,51,0}}, +/* 13109 */ {(11<<2)|2,{105,51,0}}, +/* 13110 */ {(11<<2)|2,{105,51,0}}, +/* 13111 */ {(11<<2)|2,{105,51,0}}, +/* 13112 */ {(11<<2)|2,{105,51,0}}, +/* 13113 */ {(11<<2)|2,{105,51,0}}, +/* 13114 */ {(11<<2)|2,{105,51,0}}, +/* 13115 */ {(11<<2)|2,{105,51,0}}, +/* 13116 */ {(11<<2)|2,{105,51,0}}, +/* 13117 */ {(11<<2)|2,{105,51,0}}, +/* 13118 */ {(11<<2)|2,{105,51,0}}, +/* 13119 */ {(11<<2)|2,{105,51,0}}, +/* 13120 */ {(16<<2)|3,{105,52,48}}, +/* 13121 */ {(16<<2)|3,{105,52,49}}, +/* 13122 */ {(16<<2)|3,{105,52,50}}, +/* 13123 */ {(16<<2)|3,{105,52,97}}, +/* 13124 */ {(16<<2)|3,{105,52,99}}, +/* 13125 */ {(16<<2)|3,{105,52,101}}, +/* 13126 */ {(16<<2)|3,{105,52,105}}, +/* 13127 */ {(16<<2)|3,{105,52,111}}, +/* 13128 */ {(16<<2)|3,{105,52,115}}, +/* 13129 */ {(16<<2)|3,{105,52,116}}, +/* 13130 */ {(11<<2)|2,{105,52,0}}, +/* 13131 */ {(11<<2)|2,{105,52,0}}, +/* 13132 */ {(11<<2)|2,{105,52,0}}, +/* 13133 */ {(11<<2)|2,{105,52,0}}, +/* 13134 */ {(11<<2)|2,{105,52,0}}, +/* 13135 */ {(11<<2)|2,{105,52,0}}, +/* 13136 */ {(11<<2)|2,{105,52,0}}, +/* 13137 */ {(11<<2)|2,{105,52,0}}, +/* 13138 */ {(11<<2)|2,{105,52,0}}, +/* 13139 */ {(11<<2)|2,{105,52,0}}, +/* 13140 */ {(11<<2)|2,{105,52,0}}, +/* 13141 */ {(11<<2)|2,{105,52,0}}, +/* 13142 */ {(11<<2)|2,{105,52,0}}, +/* 13143 */ {(11<<2)|2,{105,52,0}}, +/* 13144 */ {(11<<2)|2,{105,52,0}}, +/* 13145 */ {(11<<2)|2,{105,52,0}}, +/* 13146 */ {(11<<2)|2,{105,52,0}}, +/* 13147 */ {(11<<2)|2,{105,52,0}}, +/* 13148 */ {(11<<2)|2,{105,52,0}}, +/* 13149 */ {(11<<2)|2,{105,52,0}}, +/* 13150 */ {(11<<2)|2,{105,52,0}}, +/* 13151 */ {(11<<2)|2,{105,52,0}}, +/* 13152 */ {(16<<2)|3,{105,53,48}}, +/* 13153 */ {(16<<2)|3,{105,53,49}}, +/* 13154 */ {(16<<2)|3,{105,53,50}}, +/* 13155 */ {(16<<2)|3,{105,53,97}}, +/* 13156 */ {(16<<2)|3,{105,53,99}}, +/* 13157 */ {(16<<2)|3,{105,53,101}}, +/* 13158 */ {(16<<2)|3,{105,53,105}}, +/* 13159 */ {(16<<2)|3,{105,53,111}}, +/* 13160 */ {(16<<2)|3,{105,53,115}}, +/* 13161 */ {(16<<2)|3,{105,53,116}}, +/* 13162 */ {(11<<2)|2,{105,53,0}}, +/* 13163 */ {(11<<2)|2,{105,53,0}}, +/* 13164 */ {(11<<2)|2,{105,53,0}}, +/* 13165 */ {(11<<2)|2,{105,53,0}}, +/* 13166 */ {(11<<2)|2,{105,53,0}}, +/* 13167 */ {(11<<2)|2,{105,53,0}}, +/* 13168 */ {(11<<2)|2,{105,53,0}}, +/* 13169 */ {(11<<2)|2,{105,53,0}}, +/* 13170 */ {(11<<2)|2,{105,53,0}}, +/* 13171 */ {(11<<2)|2,{105,53,0}}, +/* 13172 */ {(11<<2)|2,{105,53,0}}, +/* 13173 */ {(11<<2)|2,{105,53,0}}, +/* 13174 */ {(11<<2)|2,{105,53,0}}, +/* 13175 */ {(11<<2)|2,{105,53,0}}, +/* 13176 */ {(11<<2)|2,{105,53,0}}, +/* 13177 */ {(11<<2)|2,{105,53,0}}, +/* 13178 */ {(11<<2)|2,{105,53,0}}, +/* 13179 */ {(11<<2)|2,{105,53,0}}, +/* 13180 */ {(11<<2)|2,{105,53,0}}, +/* 13181 */ {(11<<2)|2,{105,53,0}}, +/* 13182 */ {(11<<2)|2,{105,53,0}}, +/* 13183 */ {(11<<2)|2,{105,53,0}}, +/* 13184 */ {(16<<2)|3,{105,54,48}}, +/* 13185 */ {(16<<2)|3,{105,54,49}}, +/* 13186 */ {(16<<2)|3,{105,54,50}}, +/* 13187 */ {(16<<2)|3,{105,54,97}}, +/* 13188 */ {(16<<2)|3,{105,54,99}}, +/* 13189 */ {(16<<2)|3,{105,54,101}}, +/* 13190 */ {(16<<2)|3,{105,54,105}}, +/* 13191 */ {(16<<2)|3,{105,54,111}}, +/* 13192 */ {(16<<2)|3,{105,54,115}}, +/* 13193 */ {(16<<2)|3,{105,54,116}}, +/* 13194 */ {(11<<2)|2,{105,54,0}}, +/* 13195 */ {(11<<2)|2,{105,54,0}}, +/* 13196 */ {(11<<2)|2,{105,54,0}}, +/* 13197 */ {(11<<2)|2,{105,54,0}}, +/* 13198 */ {(11<<2)|2,{105,54,0}}, +/* 13199 */ {(11<<2)|2,{105,54,0}}, +/* 13200 */ {(11<<2)|2,{105,54,0}}, +/* 13201 */ {(11<<2)|2,{105,54,0}}, +/* 13202 */ {(11<<2)|2,{105,54,0}}, +/* 13203 */ {(11<<2)|2,{105,54,0}}, +/* 13204 */ {(11<<2)|2,{105,54,0}}, +/* 13205 */ {(11<<2)|2,{105,54,0}}, +/* 13206 */ {(11<<2)|2,{105,54,0}}, +/* 13207 */ {(11<<2)|2,{105,54,0}}, +/* 13208 */ {(11<<2)|2,{105,54,0}}, +/* 13209 */ {(11<<2)|2,{105,54,0}}, +/* 13210 */ {(11<<2)|2,{105,54,0}}, +/* 13211 */ {(11<<2)|2,{105,54,0}}, +/* 13212 */ {(11<<2)|2,{105,54,0}}, +/* 13213 */ {(11<<2)|2,{105,54,0}}, +/* 13214 */ {(11<<2)|2,{105,54,0}}, +/* 13215 */ {(11<<2)|2,{105,54,0}}, +/* 13216 */ {(16<<2)|3,{105,55,48}}, +/* 13217 */ {(16<<2)|3,{105,55,49}}, +/* 13218 */ {(16<<2)|3,{105,55,50}}, +/* 13219 */ {(16<<2)|3,{105,55,97}}, +/* 13220 */ {(16<<2)|3,{105,55,99}}, +/* 13221 */ {(16<<2)|3,{105,55,101}}, +/* 13222 */ {(16<<2)|3,{105,55,105}}, +/* 13223 */ {(16<<2)|3,{105,55,111}}, +/* 13224 */ {(16<<2)|3,{105,55,115}}, +/* 13225 */ {(16<<2)|3,{105,55,116}}, +/* 13226 */ {(11<<2)|2,{105,55,0}}, +/* 13227 */ {(11<<2)|2,{105,55,0}}, +/* 13228 */ {(11<<2)|2,{105,55,0}}, +/* 13229 */ {(11<<2)|2,{105,55,0}}, +/* 13230 */ {(11<<2)|2,{105,55,0}}, +/* 13231 */ {(11<<2)|2,{105,55,0}}, +/* 13232 */ {(11<<2)|2,{105,55,0}}, +/* 13233 */ {(11<<2)|2,{105,55,0}}, +/* 13234 */ {(11<<2)|2,{105,55,0}}, +/* 13235 */ {(11<<2)|2,{105,55,0}}, +/* 13236 */ {(11<<2)|2,{105,55,0}}, +/* 13237 */ {(11<<2)|2,{105,55,0}}, +/* 13238 */ {(11<<2)|2,{105,55,0}}, +/* 13239 */ {(11<<2)|2,{105,55,0}}, +/* 13240 */ {(11<<2)|2,{105,55,0}}, +/* 13241 */ {(11<<2)|2,{105,55,0}}, +/* 13242 */ {(11<<2)|2,{105,55,0}}, +/* 13243 */ {(11<<2)|2,{105,55,0}}, +/* 13244 */ {(11<<2)|2,{105,55,0}}, +/* 13245 */ {(11<<2)|2,{105,55,0}}, +/* 13246 */ {(11<<2)|2,{105,55,0}}, +/* 13247 */ {(11<<2)|2,{105,55,0}}, +/* 13248 */ {(16<<2)|3,{105,56,48}}, +/* 13249 */ {(16<<2)|3,{105,56,49}}, +/* 13250 */ {(16<<2)|3,{105,56,50}}, +/* 13251 */ {(16<<2)|3,{105,56,97}}, +/* 13252 */ {(16<<2)|3,{105,56,99}}, +/* 13253 */ {(16<<2)|3,{105,56,101}}, +/* 13254 */ {(16<<2)|3,{105,56,105}}, +/* 13255 */ {(16<<2)|3,{105,56,111}}, +/* 13256 */ {(16<<2)|3,{105,56,115}}, +/* 13257 */ {(16<<2)|3,{105,56,116}}, +/* 13258 */ {(11<<2)|2,{105,56,0}}, +/* 13259 */ {(11<<2)|2,{105,56,0}}, +/* 13260 */ {(11<<2)|2,{105,56,0}}, +/* 13261 */ {(11<<2)|2,{105,56,0}}, +/* 13262 */ {(11<<2)|2,{105,56,0}}, +/* 13263 */ {(11<<2)|2,{105,56,0}}, +/* 13264 */ {(11<<2)|2,{105,56,0}}, +/* 13265 */ {(11<<2)|2,{105,56,0}}, +/* 13266 */ {(11<<2)|2,{105,56,0}}, +/* 13267 */ {(11<<2)|2,{105,56,0}}, +/* 13268 */ {(11<<2)|2,{105,56,0}}, +/* 13269 */ {(11<<2)|2,{105,56,0}}, +/* 13270 */ {(11<<2)|2,{105,56,0}}, +/* 13271 */ {(11<<2)|2,{105,56,0}}, +/* 13272 */ {(11<<2)|2,{105,56,0}}, +/* 13273 */ {(11<<2)|2,{105,56,0}}, +/* 13274 */ {(11<<2)|2,{105,56,0}}, +/* 13275 */ {(11<<2)|2,{105,56,0}}, +/* 13276 */ {(11<<2)|2,{105,56,0}}, +/* 13277 */ {(11<<2)|2,{105,56,0}}, +/* 13278 */ {(11<<2)|2,{105,56,0}}, +/* 13279 */ {(11<<2)|2,{105,56,0}}, +/* 13280 */ {(16<<2)|3,{105,57,48}}, +/* 13281 */ {(16<<2)|3,{105,57,49}}, +/* 13282 */ {(16<<2)|3,{105,57,50}}, +/* 13283 */ {(16<<2)|3,{105,57,97}}, +/* 13284 */ {(16<<2)|3,{105,57,99}}, +/* 13285 */ {(16<<2)|3,{105,57,101}}, +/* 13286 */ {(16<<2)|3,{105,57,105}}, +/* 13287 */ {(16<<2)|3,{105,57,111}}, +/* 13288 */ {(16<<2)|3,{105,57,115}}, +/* 13289 */ {(16<<2)|3,{105,57,116}}, +/* 13290 */ {(11<<2)|2,{105,57,0}}, +/* 13291 */ {(11<<2)|2,{105,57,0}}, +/* 13292 */ {(11<<2)|2,{105,57,0}}, +/* 13293 */ {(11<<2)|2,{105,57,0}}, +/* 13294 */ {(11<<2)|2,{105,57,0}}, +/* 13295 */ {(11<<2)|2,{105,57,0}}, +/* 13296 */ {(11<<2)|2,{105,57,0}}, +/* 13297 */ {(11<<2)|2,{105,57,0}}, +/* 13298 */ {(11<<2)|2,{105,57,0}}, +/* 13299 */ {(11<<2)|2,{105,57,0}}, +/* 13300 */ {(11<<2)|2,{105,57,0}}, +/* 13301 */ {(11<<2)|2,{105,57,0}}, +/* 13302 */ {(11<<2)|2,{105,57,0}}, +/* 13303 */ {(11<<2)|2,{105,57,0}}, +/* 13304 */ {(11<<2)|2,{105,57,0}}, +/* 13305 */ {(11<<2)|2,{105,57,0}}, +/* 13306 */ {(11<<2)|2,{105,57,0}}, +/* 13307 */ {(11<<2)|2,{105,57,0}}, +/* 13308 */ {(11<<2)|2,{105,57,0}}, +/* 13309 */ {(11<<2)|2,{105,57,0}}, +/* 13310 */ {(11<<2)|2,{105,57,0}}, +/* 13311 */ {(11<<2)|2,{105,57,0}}, +/* 13312 */ {(16<<2)|3,{105,61,48}}, +/* 13313 */ {(16<<2)|3,{105,61,49}}, +/* 13314 */ {(16<<2)|3,{105,61,50}}, +/* 13315 */ {(16<<2)|3,{105,61,97}}, +/* 13316 */ {(16<<2)|3,{105,61,99}}, +/* 13317 */ {(16<<2)|3,{105,61,101}}, +/* 13318 */ {(16<<2)|3,{105,61,105}}, +/* 13319 */ {(16<<2)|3,{105,61,111}}, +/* 13320 */ {(16<<2)|3,{105,61,115}}, +/* 13321 */ {(16<<2)|3,{105,61,116}}, +/* 13322 */ {(11<<2)|2,{105,61,0}}, +/* 13323 */ {(11<<2)|2,{105,61,0}}, +/* 13324 */ {(11<<2)|2,{105,61,0}}, +/* 13325 */ {(11<<2)|2,{105,61,0}}, +/* 13326 */ {(11<<2)|2,{105,61,0}}, +/* 13327 */ {(11<<2)|2,{105,61,0}}, +/* 13328 */ {(11<<2)|2,{105,61,0}}, +/* 13329 */ {(11<<2)|2,{105,61,0}}, +/* 13330 */ {(11<<2)|2,{105,61,0}}, +/* 13331 */ {(11<<2)|2,{105,61,0}}, +/* 13332 */ {(11<<2)|2,{105,61,0}}, +/* 13333 */ {(11<<2)|2,{105,61,0}}, +/* 13334 */ {(11<<2)|2,{105,61,0}}, +/* 13335 */ {(11<<2)|2,{105,61,0}}, +/* 13336 */ {(11<<2)|2,{105,61,0}}, +/* 13337 */ {(11<<2)|2,{105,61,0}}, +/* 13338 */ {(11<<2)|2,{105,61,0}}, +/* 13339 */ {(11<<2)|2,{105,61,0}}, +/* 13340 */ {(11<<2)|2,{105,61,0}}, +/* 13341 */ {(11<<2)|2,{105,61,0}}, +/* 13342 */ {(11<<2)|2,{105,61,0}}, +/* 13343 */ {(11<<2)|2,{105,61,0}}, +/* 13344 */ {(16<<2)|3,{105,65,48}}, +/* 13345 */ {(16<<2)|3,{105,65,49}}, +/* 13346 */ {(16<<2)|3,{105,65,50}}, +/* 13347 */ {(16<<2)|3,{105,65,97}}, +/* 13348 */ {(16<<2)|3,{105,65,99}}, +/* 13349 */ {(16<<2)|3,{105,65,101}}, +/* 13350 */ {(16<<2)|3,{105,65,105}}, +/* 13351 */ {(16<<2)|3,{105,65,111}}, +/* 13352 */ {(16<<2)|3,{105,65,115}}, +/* 13353 */ {(16<<2)|3,{105,65,116}}, +/* 13354 */ {(11<<2)|2,{105,65,0}}, +/* 13355 */ {(11<<2)|2,{105,65,0}}, +/* 13356 */ {(11<<2)|2,{105,65,0}}, +/* 13357 */ {(11<<2)|2,{105,65,0}}, +/* 13358 */ {(11<<2)|2,{105,65,0}}, +/* 13359 */ {(11<<2)|2,{105,65,0}}, +/* 13360 */ {(11<<2)|2,{105,65,0}}, +/* 13361 */ {(11<<2)|2,{105,65,0}}, +/* 13362 */ {(11<<2)|2,{105,65,0}}, +/* 13363 */ {(11<<2)|2,{105,65,0}}, +/* 13364 */ {(11<<2)|2,{105,65,0}}, +/* 13365 */ {(11<<2)|2,{105,65,0}}, +/* 13366 */ {(11<<2)|2,{105,65,0}}, +/* 13367 */ {(11<<2)|2,{105,65,0}}, +/* 13368 */ {(11<<2)|2,{105,65,0}}, +/* 13369 */ {(11<<2)|2,{105,65,0}}, +/* 13370 */ {(11<<2)|2,{105,65,0}}, +/* 13371 */ {(11<<2)|2,{105,65,0}}, +/* 13372 */ {(11<<2)|2,{105,65,0}}, +/* 13373 */ {(11<<2)|2,{105,65,0}}, +/* 13374 */ {(11<<2)|2,{105,65,0}}, +/* 13375 */ {(11<<2)|2,{105,65,0}}, +/* 13376 */ {(16<<2)|3,{105,95,48}}, +/* 13377 */ {(16<<2)|3,{105,95,49}}, +/* 13378 */ {(16<<2)|3,{105,95,50}}, +/* 13379 */ {(16<<2)|3,{105,95,97}}, +/* 13380 */ {(16<<2)|3,{105,95,99}}, +/* 13381 */ {(16<<2)|3,{105,95,101}}, +/* 13382 */ {(16<<2)|3,{105,95,105}}, +/* 13383 */ {(16<<2)|3,{105,95,111}}, +/* 13384 */ {(16<<2)|3,{105,95,115}}, +/* 13385 */ {(16<<2)|3,{105,95,116}}, +/* 13386 */ {(11<<2)|2,{105,95,0}}, +/* 13387 */ {(11<<2)|2,{105,95,0}}, +/* 13388 */ {(11<<2)|2,{105,95,0}}, +/* 13389 */ {(11<<2)|2,{105,95,0}}, +/* 13390 */ {(11<<2)|2,{105,95,0}}, +/* 13391 */ {(11<<2)|2,{105,95,0}}, +/* 13392 */ {(11<<2)|2,{105,95,0}}, +/* 13393 */ {(11<<2)|2,{105,95,0}}, +/* 13394 */ {(11<<2)|2,{105,95,0}}, +/* 13395 */ {(11<<2)|2,{105,95,0}}, +/* 13396 */ {(11<<2)|2,{105,95,0}}, +/* 13397 */ {(11<<2)|2,{105,95,0}}, +/* 13398 */ {(11<<2)|2,{105,95,0}}, +/* 13399 */ {(11<<2)|2,{105,95,0}}, +/* 13400 */ {(11<<2)|2,{105,95,0}}, +/* 13401 */ {(11<<2)|2,{105,95,0}}, +/* 13402 */ {(11<<2)|2,{105,95,0}}, +/* 13403 */ {(11<<2)|2,{105,95,0}}, +/* 13404 */ {(11<<2)|2,{105,95,0}}, +/* 13405 */ {(11<<2)|2,{105,95,0}}, +/* 13406 */ {(11<<2)|2,{105,95,0}}, +/* 13407 */ {(11<<2)|2,{105,95,0}}, +/* 13408 */ {(16<<2)|3,{105,98,48}}, +/* 13409 */ {(16<<2)|3,{105,98,49}}, +/* 13410 */ {(16<<2)|3,{105,98,50}}, +/* 13411 */ {(16<<2)|3,{105,98,97}}, +/* 13412 */ {(16<<2)|3,{105,98,99}}, +/* 13413 */ {(16<<2)|3,{105,98,101}}, +/* 13414 */ {(16<<2)|3,{105,98,105}}, +/* 13415 */ {(16<<2)|3,{105,98,111}}, +/* 13416 */ {(16<<2)|3,{105,98,115}}, +/* 13417 */ {(16<<2)|3,{105,98,116}}, +/* 13418 */ {(11<<2)|2,{105,98,0}}, +/* 13419 */ {(11<<2)|2,{105,98,0}}, +/* 13420 */ {(11<<2)|2,{105,98,0}}, +/* 13421 */ {(11<<2)|2,{105,98,0}}, +/* 13422 */ {(11<<2)|2,{105,98,0}}, +/* 13423 */ {(11<<2)|2,{105,98,0}}, +/* 13424 */ {(11<<2)|2,{105,98,0}}, +/* 13425 */ {(11<<2)|2,{105,98,0}}, +/* 13426 */ {(11<<2)|2,{105,98,0}}, +/* 13427 */ {(11<<2)|2,{105,98,0}}, +/* 13428 */ {(11<<2)|2,{105,98,0}}, +/* 13429 */ {(11<<2)|2,{105,98,0}}, +/* 13430 */ {(11<<2)|2,{105,98,0}}, +/* 13431 */ {(11<<2)|2,{105,98,0}}, +/* 13432 */ {(11<<2)|2,{105,98,0}}, +/* 13433 */ {(11<<2)|2,{105,98,0}}, +/* 13434 */ {(11<<2)|2,{105,98,0}}, +/* 13435 */ {(11<<2)|2,{105,98,0}}, +/* 13436 */ {(11<<2)|2,{105,98,0}}, +/* 13437 */ {(11<<2)|2,{105,98,0}}, +/* 13438 */ {(11<<2)|2,{105,98,0}}, +/* 13439 */ {(11<<2)|2,{105,98,0}}, +/* 13440 */ {(16<<2)|3,{105,100,48}}, +/* 13441 */ {(16<<2)|3,{105,100,49}}, +/* 13442 */ {(16<<2)|3,{105,100,50}}, +/* 13443 */ {(16<<2)|3,{105,100,97}}, +/* 13444 */ {(16<<2)|3,{105,100,99}}, +/* 13445 */ {(16<<2)|3,{105,100,101}}, +/* 13446 */ {(16<<2)|3,{105,100,105}}, +/* 13447 */ {(16<<2)|3,{105,100,111}}, +/* 13448 */ {(16<<2)|3,{105,100,115}}, +/* 13449 */ {(16<<2)|3,{105,100,116}}, +/* 13450 */ {(11<<2)|2,{105,100,0}}, +/* 13451 */ {(11<<2)|2,{105,100,0}}, +/* 13452 */ {(11<<2)|2,{105,100,0}}, +/* 13453 */ {(11<<2)|2,{105,100,0}}, +/* 13454 */ {(11<<2)|2,{105,100,0}}, +/* 13455 */ {(11<<2)|2,{105,100,0}}, +/* 13456 */ {(11<<2)|2,{105,100,0}}, +/* 13457 */ {(11<<2)|2,{105,100,0}}, +/* 13458 */ {(11<<2)|2,{105,100,0}}, +/* 13459 */ {(11<<2)|2,{105,100,0}}, +/* 13460 */ {(11<<2)|2,{105,100,0}}, +/* 13461 */ {(11<<2)|2,{105,100,0}}, +/* 13462 */ {(11<<2)|2,{105,100,0}}, +/* 13463 */ {(11<<2)|2,{105,100,0}}, +/* 13464 */ {(11<<2)|2,{105,100,0}}, +/* 13465 */ {(11<<2)|2,{105,100,0}}, +/* 13466 */ {(11<<2)|2,{105,100,0}}, +/* 13467 */ {(11<<2)|2,{105,100,0}}, +/* 13468 */ {(11<<2)|2,{105,100,0}}, +/* 13469 */ {(11<<2)|2,{105,100,0}}, +/* 13470 */ {(11<<2)|2,{105,100,0}}, +/* 13471 */ {(11<<2)|2,{105,100,0}}, +/* 13472 */ {(16<<2)|3,{105,102,48}}, +/* 13473 */ {(16<<2)|3,{105,102,49}}, +/* 13474 */ {(16<<2)|3,{105,102,50}}, +/* 13475 */ {(16<<2)|3,{105,102,97}}, +/* 13476 */ {(16<<2)|3,{105,102,99}}, +/* 13477 */ {(16<<2)|3,{105,102,101}}, +/* 13478 */ {(16<<2)|3,{105,102,105}}, +/* 13479 */ {(16<<2)|3,{105,102,111}}, +/* 13480 */ {(16<<2)|3,{105,102,115}}, +/* 13481 */ {(16<<2)|3,{105,102,116}}, +/* 13482 */ {(11<<2)|2,{105,102,0}}, +/* 13483 */ {(11<<2)|2,{105,102,0}}, +/* 13484 */ {(11<<2)|2,{105,102,0}}, +/* 13485 */ {(11<<2)|2,{105,102,0}}, +/* 13486 */ {(11<<2)|2,{105,102,0}}, +/* 13487 */ {(11<<2)|2,{105,102,0}}, +/* 13488 */ {(11<<2)|2,{105,102,0}}, +/* 13489 */ {(11<<2)|2,{105,102,0}}, +/* 13490 */ {(11<<2)|2,{105,102,0}}, +/* 13491 */ {(11<<2)|2,{105,102,0}}, +/* 13492 */ {(11<<2)|2,{105,102,0}}, +/* 13493 */ {(11<<2)|2,{105,102,0}}, +/* 13494 */ {(11<<2)|2,{105,102,0}}, +/* 13495 */ {(11<<2)|2,{105,102,0}}, +/* 13496 */ {(11<<2)|2,{105,102,0}}, +/* 13497 */ {(11<<2)|2,{105,102,0}}, +/* 13498 */ {(11<<2)|2,{105,102,0}}, +/* 13499 */ {(11<<2)|2,{105,102,0}}, +/* 13500 */ {(11<<2)|2,{105,102,0}}, +/* 13501 */ {(11<<2)|2,{105,102,0}}, +/* 13502 */ {(11<<2)|2,{105,102,0}}, +/* 13503 */ {(11<<2)|2,{105,102,0}}, +/* 13504 */ {(16<<2)|3,{105,103,48}}, +/* 13505 */ {(16<<2)|3,{105,103,49}}, +/* 13506 */ {(16<<2)|3,{105,103,50}}, +/* 13507 */ {(16<<2)|3,{105,103,97}}, +/* 13508 */ {(16<<2)|3,{105,103,99}}, +/* 13509 */ {(16<<2)|3,{105,103,101}}, +/* 13510 */ {(16<<2)|3,{105,103,105}}, +/* 13511 */ {(16<<2)|3,{105,103,111}}, +/* 13512 */ {(16<<2)|3,{105,103,115}}, +/* 13513 */ {(16<<2)|3,{105,103,116}}, +/* 13514 */ {(11<<2)|2,{105,103,0}}, +/* 13515 */ {(11<<2)|2,{105,103,0}}, +/* 13516 */ {(11<<2)|2,{105,103,0}}, +/* 13517 */ {(11<<2)|2,{105,103,0}}, +/* 13518 */ {(11<<2)|2,{105,103,0}}, +/* 13519 */ {(11<<2)|2,{105,103,0}}, +/* 13520 */ {(11<<2)|2,{105,103,0}}, +/* 13521 */ {(11<<2)|2,{105,103,0}}, +/* 13522 */ {(11<<2)|2,{105,103,0}}, +/* 13523 */ {(11<<2)|2,{105,103,0}}, +/* 13524 */ {(11<<2)|2,{105,103,0}}, +/* 13525 */ {(11<<2)|2,{105,103,0}}, +/* 13526 */ {(11<<2)|2,{105,103,0}}, +/* 13527 */ {(11<<2)|2,{105,103,0}}, +/* 13528 */ {(11<<2)|2,{105,103,0}}, +/* 13529 */ {(11<<2)|2,{105,103,0}}, +/* 13530 */ {(11<<2)|2,{105,103,0}}, +/* 13531 */ {(11<<2)|2,{105,103,0}}, +/* 13532 */ {(11<<2)|2,{105,103,0}}, +/* 13533 */ {(11<<2)|2,{105,103,0}}, +/* 13534 */ {(11<<2)|2,{105,103,0}}, +/* 13535 */ {(11<<2)|2,{105,103,0}}, +/* 13536 */ {(16<<2)|3,{105,104,48}}, +/* 13537 */ {(16<<2)|3,{105,104,49}}, +/* 13538 */ {(16<<2)|3,{105,104,50}}, +/* 13539 */ {(16<<2)|3,{105,104,97}}, +/* 13540 */ {(16<<2)|3,{105,104,99}}, +/* 13541 */ {(16<<2)|3,{105,104,101}}, +/* 13542 */ {(16<<2)|3,{105,104,105}}, +/* 13543 */ {(16<<2)|3,{105,104,111}}, +/* 13544 */ {(16<<2)|3,{105,104,115}}, +/* 13545 */ {(16<<2)|3,{105,104,116}}, +/* 13546 */ {(11<<2)|2,{105,104,0}}, +/* 13547 */ {(11<<2)|2,{105,104,0}}, +/* 13548 */ {(11<<2)|2,{105,104,0}}, +/* 13549 */ {(11<<2)|2,{105,104,0}}, +/* 13550 */ {(11<<2)|2,{105,104,0}}, +/* 13551 */ {(11<<2)|2,{105,104,0}}, +/* 13552 */ {(11<<2)|2,{105,104,0}}, +/* 13553 */ {(11<<2)|2,{105,104,0}}, +/* 13554 */ {(11<<2)|2,{105,104,0}}, +/* 13555 */ {(11<<2)|2,{105,104,0}}, +/* 13556 */ {(11<<2)|2,{105,104,0}}, +/* 13557 */ {(11<<2)|2,{105,104,0}}, +/* 13558 */ {(11<<2)|2,{105,104,0}}, +/* 13559 */ {(11<<2)|2,{105,104,0}}, +/* 13560 */ {(11<<2)|2,{105,104,0}}, +/* 13561 */ {(11<<2)|2,{105,104,0}}, +/* 13562 */ {(11<<2)|2,{105,104,0}}, +/* 13563 */ {(11<<2)|2,{105,104,0}}, +/* 13564 */ {(11<<2)|2,{105,104,0}}, +/* 13565 */ {(11<<2)|2,{105,104,0}}, +/* 13566 */ {(11<<2)|2,{105,104,0}}, +/* 13567 */ {(11<<2)|2,{105,104,0}}, +/* 13568 */ {(16<<2)|3,{105,108,48}}, +/* 13569 */ {(16<<2)|3,{105,108,49}}, +/* 13570 */ {(16<<2)|3,{105,108,50}}, +/* 13571 */ {(16<<2)|3,{105,108,97}}, +/* 13572 */ {(16<<2)|3,{105,108,99}}, +/* 13573 */ {(16<<2)|3,{105,108,101}}, +/* 13574 */ {(16<<2)|3,{105,108,105}}, +/* 13575 */ {(16<<2)|3,{105,108,111}}, +/* 13576 */ {(16<<2)|3,{105,108,115}}, +/* 13577 */ {(16<<2)|3,{105,108,116}}, +/* 13578 */ {(11<<2)|2,{105,108,0}}, +/* 13579 */ {(11<<2)|2,{105,108,0}}, +/* 13580 */ {(11<<2)|2,{105,108,0}}, +/* 13581 */ {(11<<2)|2,{105,108,0}}, +/* 13582 */ {(11<<2)|2,{105,108,0}}, +/* 13583 */ {(11<<2)|2,{105,108,0}}, +/* 13584 */ {(11<<2)|2,{105,108,0}}, +/* 13585 */ {(11<<2)|2,{105,108,0}}, +/* 13586 */ {(11<<2)|2,{105,108,0}}, +/* 13587 */ {(11<<2)|2,{105,108,0}}, +/* 13588 */ {(11<<2)|2,{105,108,0}}, +/* 13589 */ {(11<<2)|2,{105,108,0}}, +/* 13590 */ {(11<<2)|2,{105,108,0}}, +/* 13591 */ {(11<<2)|2,{105,108,0}}, +/* 13592 */ {(11<<2)|2,{105,108,0}}, +/* 13593 */ {(11<<2)|2,{105,108,0}}, +/* 13594 */ {(11<<2)|2,{105,108,0}}, +/* 13595 */ {(11<<2)|2,{105,108,0}}, +/* 13596 */ {(11<<2)|2,{105,108,0}}, +/* 13597 */ {(11<<2)|2,{105,108,0}}, +/* 13598 */ {(11<<2)|2,{105,108,0}}, +/* 13599 */ {(11<<2)|2,{105,108,0}}, +/* 13600 */ {(16<<2)|3,{105,109,48}}, +/* 13601 */ {(16<<2)|3,{105,109,49}}, +/* 13602 */ {(16<<2)|3,{105,109,50}}, +/* 13603 */ {(16<<2)|3,{105,109,97}}, +/* 13604 */ {(16<<2)|3,{105,109,99}}, +/* 13605 */ {(16<<2)|3,{105,109,101}}, +/* 13606 */ {(16<<2)|3,{105,109,105}}, +/* 13607 */ {(16<<2)|3,{105,109,111}}, +/* 13608 */ {(16<<2)|3,{105,109,115}}, +/* 13609 */ {(16<<2)|3,{105,109,116}}, +/* 13610 */ {(11<<2)|2,{105,109,0}}, +/* 13611 */ {(11<<2)|2,{105,109,0}}, +/* 13612 */ {(11<<2)|2,{105,109,0}}, +/* 13613 */ {(11<<2)|2,{105,109,0}}, +/* 13614 */ {(11<<2)|2,{105,109,0}}, +/* 13615 */ {(11<<2)|2,{105,109,0}}, +/* 13616 */ {(11<<2)|2,{105,109,0}}, +/* 13617 */ {(11<<2)|2,{105,109,0}}, +/* 13618 */ {(11<<2)|2,{105,109,0}}, +/* 13619 */ {(11<<2)|2,{105,109,0}}, +/* 13620 */ {(11<<2)|2,{105,109,0}}, +/* 13621 */ {(11<<2)|2,{105,109,0}}, +/* 13622 */ {(11<<2)|2,{105,109,0}}, +/* 13623 */ {(11<<2)|2,{105,109,0}}, +/* 13624 */ {(11<<2)|2,{105,109,0}}, +/* 13625 */ {(11<<2)|2,{105,109,0}}, +/* 13626 */ {(11<<2)|2,{105,109,0}}, +/* 13627 */ {(11<<2)|2,{105,109,0}}, +/* 13628 */ {(11<<2)|2,{105,109,0}}, +/* 13629 */ {(11<<2)|2,{105,109,0}}, +/* 13630 */ {(11<<2)|2,{105,109,0}}, +/* 13631 */ {(11<<2)|2,{105,109,0}}, +/* 13632 */ {(16<<2)|3,{105,110,48}}, +/* 13633 */ {(16<<2)|3,{105,110,49}}, +/* 13634 */ {(16<<2)|3,{105,110,50}}, +/* 13635 */ {(16<<2)|3,{105,110,97}}, +/* 13636 */ {(16<<2)|3,{105,110,99}}, +/* 13637 */ {(16<<2)|3,{105,110,101}}, +/* 13638 */ {(16<<2)|3,{105,110,105}}, +/* 13639 */ {(16<<2)|3,{105,110,111}}, +/* 13640 */ {(16<<2)|3,{105,110,115}}, +/* 13641 */ {(16<<2)|3,{105,110,116}}, +/* 13642 */ {(11<<2)|2,{105,110,0}}, +/* 13643 */ {(11<<2)|2,{105,110,0}}, +/* 13644 */ {(11<<2)|2,{105,110,0}}, +/* 13645 */ {(11<<2)|2,{105,110,0}}, +/* 13646 */ {(11<<2)|2,{105,110,0}}, +/* 13647 */ {(11<<2)|2,{105,110,0}}, +/* 13648 */ {(11<<2)|2,{105,110,0}}, +/* 13649 */ {(11<<2)|2,{105,110,0}}, +/* 13650 */ {(11<<2)|2,{105,110,0}}, +/* 13651 */ {(11<<2)|2,{105,110,0}}, +/* 13652 */ {(11<<2)|2,{105,110,0}}, +/* 13653 */ {(11<<2)|2,{105,110,0}}, +/* 13654 */ {(11<<2)|2,{105,110,0}}, +/* 13655 */ {(11<<2)|2,{105,110,0}}, +/* 13656 */ {(11<<2)|2,{105,110,0}}, +/* 13657 */ {(11<<2)|2,{105,110,0}}, +/* 13658 */ {(11<<2)|2,{105,110,0}}, +/* 13659 */ {(11<<2)|2,{105,110,0}}, +/* 13660 */ {(11<<2)|2,{105,110,0}}, +/* 13661 */ {(11<<2)|2,{105,110,0}}, +/* 13662 */ {(11<<2)|2,{105,110,0}}, +/* 13663 */ {(11<<2)|2,{105,110,0}}, +/* 13664 */ {(16<<2)|3,{105,112,48}}, +/* 13665 */ {(16<<2)|3,{105,112,49}}, +/* 13666 */ {(16<<2)|3,{105,112,50}}, +/* 13667 */ {(16<<2)|3,{105,112,97}}, +/* 13668 */ {(16<<2)|3,{105,112,99}}, +/* 13669 */ {(16<<2)|3,{105,112,101}}, +/* 13670 */ {(16<<2)|3,{105,112,105}}, +/* 13671 */ {(16<<2)|3,{105,112,111}}, +/* 13672 */ {(16<<2)|3,{105,112,115}}, +/* 13673 */ {(16<<2)|3,{105,112,116}}, +/* 13674 */ {(11<<2)|2,{105,112,0}}, +/* 13675 */ {(11<<2)|2,{105,112,0}}, +/* 13676 */ {(11<<2)|2,{105,112,0}}, +/* 13677 */ {(11<<2)|2,{105,112,0}}, +/* 13678 */ {(11<<2)|2,{105,112,0}}, +/* 13679 */ {(11<<2)|2,{105,112,0}}, +/* 13680 */ {(11<<2)|2,{105,112,0}}, +/* 13681 */ {(11<<2)|2,{105,112,0}}, +/* 13682 */ {(11<<2)|2,{105,112,0}}, +/* 13683 */ {(11<<2)|2,{105,112,0}}, +/* 13684 */ {(11<<2)|2,{105,112,0}}, +/* 13685 */ {(11<<2)|2,{105,112,0}}, +/* 13686 */ {(11<<2)|2,{105,112,0}}, +/* 13687 */ {(11<<2)|2,{105,112,0}}, +/* 13688 */ {(11<<2)|2,{105,112,0}}, +/* 13689 */ {(11<<2)|2,{105,112,0}}, +/* 13690 */ {(11<<2)|2,{105,112,0}}, +/* 13691 */ {(11<<2)|2,{105,112,0}}, +/* 13692 */ {(11<<2)|2,{105,112,0}}, +/* 13693 */ {(11<<2)|2,{105,112,0}}, +/* 13694 */ {(11<<2)|2,{105,112,0}}, +/* 13695 */ {(11<<2)|2,{105,112,0}}, +/* 13696 */ {(16<<2)|3,{105,114,48}}, +/* 13697 */ {(16<<2)|3,{105,114,49}}, +/* 13698 */ {(16<<2)|3,{105,114,50}}, +/* 13699 */ {(16<<2)|3,{105,114,97}}, +/* 13700 */ {(16<<2)|3,{105,114,99}}, +/* 13701 */ {(16<<2)|3,{105,114,101}}, +/* 13702 */ {(16<<2)|3,{105,114,105}}, +/* 13703 */ {(16<<2)|3,{105,114,111}}, +/* 13704 */ {(16<<2)|3,{105,114,115}}, +/* 13705 */ {(16<<2)|3,{105,114,116}}, +/* 13706 */ {(11<<2)|2,{105,114,0}}, +/* 13707 */ {(11<<2)|2,{105,114,0}}, +/* 13708 */ {(11<<2)|2,{105,114,0}}, +/* 13709 */ {(11<<2)|2,{105,114,0}}, +/* 13710 */ {(11<<2)|2,{105,114,0}}, +/* 13711 */ {(11<<2)|2,{105,114,0}}, +/* 13712 */ {(11<<2)|2,{105,114,0}}, +/* 13713 */ {(11<<2)|2,{105,114,0}}, +/* 13714 */ {(11<<2)|2,{105,114,0}}, +/* 13715 */ {(11<<2)|2,{105,114,0}}, +/* 13716 */ {(11<<2)|2,{105,114,0}}, +/* 13717 */ {(11<<2)|2,{105,114,0}}, +/* 13718 */ {(11<<2)|2,{105,114,0}}, +/* 13719 */ {(11<<2)|2,{105,114,0}}, +/* 13720 */ {(11<<2)|2,{105,114,0}}, +/* 13721 */ {(11<<2)|2,{105,114,0}}, +/* 13722 */ {(11<<2)|2,{105,114,0}}, +/* 13723 */ {(11<<2)|2,{105,114,0}}, +/* 13724 */ {(11<<2)|2,{105,114,0}}, +/* 13725 */ {(11<<2)|2,{105,114,0}}, +/* 13726 */ {(11<<2)|2,{105,114,0}}, +/* 13727 */ {(11<<2)|2,{105,114,0}}, +/* 13728 */ {(16<<2)|3,{105,117,48}}, +/* 13729 */ {(16<<2)|3,{105,117,49}}, +/* 13730 */ {(16<<2)|3,{105,117,50}}, +/* 13731 */ {(16<<2)|3,{105,117,97}}, +/* 13732 */ {(16<<2)|3,{105,117,99}}, +/* 13733 */ {(16<<2)|3,{105,117,101}}, +/* 13734 */ {(16<<2)|3,{105,117,105}}, +/* 13735 */ {(16<<2)|3,{105,117,111}}, +/* 13736 */ {(16<<2)|3,{105,117,115}}, +/* 13737 */ {(16<<2)|3,{105,117,116}}, +/* 13738 */ {(11<<2)|2,{105,117,0}}, +/* 13739 */ {(11<<2)|2,{105,117,0}}, +/* 13740 */ {(11<<2)|2,{105,117,0}}, +/* 13741 */ {(11<<2)|2,{105,117,0}}, +/* 13742 */ {(11<<2)|2,{105,117,0}}, +/* 13743 */ {(11<<2)|2,{105,117,0}}, +/* 13744 */ {(11<<2)|2,{105,117,0}}, +/* 13745 */ {(11<<2)|2,{105,117,0}}, +/* 13746 */ {(11<<2)|2,{105,117,0}}, +/* 13747 */ {(11<<2)|2,{105,117,0}}, +/* 13748 */ {(11<<2)|2,{105,117,0}}, +/* 13749 */ {(11<<2)|2,{105,117,0}}, +/* 13750 */ {(11<<2)|2,{105,117,0}}, +/* 13751 */ {(11<<2)|2,{105,117,0}}, +/* 13752 */ {(11<<2)|2,{105,117,0}}, +/* 13753 */ {(11<<2)|2,{105,117,0}}, +/* 13754 */ {(11<<2)|2,{105,117,0}}, +/* 13755 */ {(11<<2)|2,{105,117,0}}, +/* 13756 */ {(11<<2)|2,{105,117,0}}, +/* 13757 */ {(11<<2)|2,{105,117,0}}, +/* 13758 */ {(11<<2)|2,{105,117,0}}, +/* 13759 */ {(11<<2)|2,{105,117,0}}, +/* 13760 */ {(12<<2)|2,{105,58,0}}, +/* 13761 */ {(12<<2)|2,{105,58,0}}, +/* 13762 */ {(12<<2)|2,{105,58,0}}, +/* 13763 */ {(12<<2)|2,{105,58,0}}, +/* 13764 */ {(12<<2)|2,{105,58,0}}, +/* 13765 */ {(12<<2)|2,{105,58,0}}, +/* 13766 */ {(12<<2)|2,{105,58,0}}, +/* 13767 */ {(12<<2)|2,{105,58,0}}, +/* 13768 */ {(12<<2)|2,{105,58,0}}, +/* 13769 */ {(12<<2)|2,{105,58,0}}, +/* 13770 */ {(12<<2)|2,{105,58,0}}, +/* 13771 */ {(12<<2)|2,{105,58,0}}, +/* 13772 */ {(12<<2)|2,{105,58,0}}, +/* 13773 */ {(12<<2)|2,{105,58,0}}, +/* 13774 */ {(12<<2)|2,{105,58,0}}, +/* 13775 */ {(12<<2)|2,{105,58,0}}, +/* 13776 */ {(12<<2)|2,{105,66,0}}, +/* 13777 */ {(12<<2)|2,{105,66,0}}, +/* 13778 */ {(12<<2)|2,{105,66,0}}, +/* 13779 */ {(12<<2)|2,{105,66,0}}, +/* 13780 */ {(12<<2)|2,{105,66,0}}, +/* 13781 */ {(12<<2)|2,{105,66,0}}, +/* 13782 */ {(12<<2)|2,{105,66,0}}, +/* 13783 */ {(12<<2)|2,{105,66,0}}, +/* 13784 */ {(12<<2)|2,{105,66,0}}, +/* 13785 */ {(12<<2)|2,{105,66,0}}, +/* 13786 */ {(12<<2)|2,{105,66,0}}, +/* 13787 */ {(12<<2)|2,{105,66,0}}, +/* 13788 */ {(12<<2)|2,{105,66,0}}, +/* 13789 */ {(12<<2)|2,{105,66,0}}, +/* 13790 */ {(12<<2)|2,{105,66,0}}, +/* 13791 */ {(12<<2)|2,{105,66,0}}, +/* 13792 */ {(12<<2)|2,{105,67,0}}, +/* 13793 */ {(12<<2)|2,{105,67,0}}, +/* 13794 */ {(12<<2)|2,{105,67,0}}, +/* 13795 */ {(12<<2)|2,{105,67,0}}, +/* 13796 */ {(12<<2)|2,{105,67,0}}, +/* 13797 */ {(12<<2)|2,{105,67,0}}, +/* 13798 */ {(12<<2)|2,{105,67,0}}, +/* 13799 */ {(12<<2)|2,{105,67,0}}, +/* 13800 */ {(12<<2)|2,{105,67,0}}, +/* 13801 */ {(12<<2)|2,{105,67,0}}, +/* 13802 */ {(12<<2)|2,{105,67,0}}, +/* 13803 */ {(12<<2)|2,{105,67,0}}, +/* 13804 */ {(12<<2)|2,{105,67,0}}, +/* 13805 */ {(12<<2)|2,{105,67,0}}, +/* 13806 */ {(12<<2)|2,{105,67,0}}, +/* 13807 */ {(12<<2)|2,{105,67,0}}, +/* 13808 */ {(12<<2)|2,{105,68,0}}, +/* 13809 */ {(12<<2)|2,{105,68,0}}, +/* 13810 */ {(12<<2)|2,{105,68,0}}, +/* 13811 */ {(12<<2)|2,{105,68,0}}, +/* 13812 */ {(12<<2)|2,{105,68,0}}, +/* 13813 */ {(12<<2)|2,{105,68,0}}, +/* 13814 */ {(12<<2)|2,{105,68,0}}, +/* 13815 */ {(12<<2)|2,{105,68,0}}, +/* 13816 */ {(12<<2)|2,{105,68,0}}, +/* 13817 */ {(12<<2)|2,{105,68,0}}, +/* 13818 */ {(12<<2)|2,{105,68,0}}, +/* 13819 */ {(12<<2)|2,{105,68,0}}, +/* 13820 */ {(12<<2)|2,{105,68,0}}, +/* 13821 */ {(12<<2)|2,{105,68,0}}, +/* 13822 */ {(12<<2)|2,{105,68,0}}, +/* 13823 */ {(12<<2)|2,{105,68,0}}, +/* 13824 */ {(12<<2)|2,{105,69,0}}, +/* 13825 */ {(12<<2)|2,{105,69,0}}, +/* 13826 */ {(12<<2)|2,{105,69,0}}, +/* 13827 */ {(12<<2)|2,{105,69,0}}, +/* 13828 */ {(12<<2)|2,{105,69,0}}, +/* 13829 */ {(12<<2)|2,{105,69,0}}, +/* 13830 */ {(12<<2)|2,{105,69,0}}, +/* 13831 */ {(12<<2)|2,{105,69,0}}, +/* 13832 */ {(12<<2)|2,{105,69,0}}, +/* 13833 */ {(12<<2)|2,{105,69,0}}, +/* 13834 */ {(12<<2)|2,{105,69,0}}, +/* 13835 */ {(12<<2)|2,{105,69,0}}, +/* 13836 */ {(12<<2)|2,{105,69,0}}, +/* 13837 */ {(12<<2)|2,{105,69,0}}, +/* 13838 */ {(12<<2)|2,{105,69,0}}, +/* 13839 */ {(12<<2)|2,{105,69,0}}, +/* 13840 */ {(12<<2)|2,{105,70,0}}, +/* 13841 */ {(12<<2)|2,{105,70,0}}, +/* 13842 */ {(12<<2)|2,{105,70,0}}, +/* 13843 */ {(12<<2)|2,{105,70,0}}, +/* 13844 */ {(12<<2)|2,{105,70,0}}, +/* 13845 */ {(12<<2)|2,{105,70,0}}, +/* 13846 */ {(12<<2)|2,{105,70,0}}, +/* 13847 */ {(12<<2)|2,{105,70,0}}, +/* 13848 */ {(12<<2)|2,{105,70,0}}, +/* 13849 */ {(12<<2)|2,{105,70,0}}, +/* 13850 */ {(12<<2)|2,{105,70,0}}, +/* 13851 */ {(12<<2)|2,{105,70,0}}, +/* 13852 */ {(12<<2)|2,{105,70,0}}, +/* 13853 */ {(12<<2)|2,{105,70,0}}, +/* 13854 */ {(12<<2)|2,{105,70,0}}, +/* 13855 */ {(12<<2)|2,{105,70,0}}, +/* 13856 */ {(12<<2)|2,{105,71,0}}, +/* 13857 */ {(12<<2)|2,{105,71,0}}, +/* 13858 */ {(12<<2)|2,{105,71,0}}, +/* 13859 */ {(12<<2)|2,{105,71,0}}, +/* 13860 */ {(12<<2)|2,{105,71,0}}, +/* 13861 */ {(12<<2)|2,{105,71,0}}, +/* 13862 */ {(12<<2)|2,{105,71,0}}, +/* 13863 */ {(12<<2)|2,{105,71,0}}, +/* 13864 */ {(12<<2)|2,{105,71,0}}, +/* 13865 */ {(12<<2)|2,{105,71,0}}, +/* 13866 */ {(12<<2)|2,{105,71,0}}, +/* 13867 */ {(12<<2)|2,{105,71,0}}, +/* 13868 */ {(12<<2)|2,{105,71,0}}, +/* 13869 */ {(12<<2)|2,{105,71,0}}, +/* 13870 */ {(12<<2)|2,{105,71,0}}, +/* 13871 */ {(12<<2)|2,{105,71,0}}, +/* 13872 */ {(12<<2)|2,{105,72,0}}, +/* 13873 */ {(12<<2)|2,{105,72,0}}, +/* 13874 */ {(12<<2)|2,{105,72,0}}, +/* 13875 */ {(12<<2)|2,{105,72,0}}, +/* 13876 */ {(12<<2)|2,{105,72,0}}, +/* 13877 */ {(12<<2)|2,{105,72,0}}, +/* 13878 */ {(12<<2)|2,{105,72,0}}, +/* 13879 */ {(12<<2)|2,{105,72,0}}, +/* 13880 */ {(12<<2)|2,{105,72,0}}, +/* 13881 */ {(12<<2)|2,{105,72,0}}, +/* 13882 */ {(12<<2)|2,{105,72,0}}, +/* 13883 */ {(12<<2)|2,{105,72,0}}, +/* 13884 */ {(12<<2)|2,{105,72,0}}, +/* 13885 */ {(12<<2)|2,{105,72,0}}, +/* 13886 */ {(12<<2)|2,{105,72,0}}, +/* 13887 */ {(12<<2)|2,{105,72,0}}, +/* 13888 */ {(12<<2)|2,{105,73,0}}, +/* 13889 */ {(12<<2)|2,{105,73,0}}, +/* 13890 */ {(12<<2)|2,{105,73,0}}, +/* 13891 */ {(12<<2)|2,{105,73,0}}, +/* 13892 */ {(12<<2)|2,{105,73,0}}, +/* 13893 */ {(12<<2)|2,{105,73,0}}, +/* 13894 */ {(12<<2)|2,{105,73,0}}, +/* 13895 */ {(12<<2)|2,{105,73,0}}, +/* 13896 */ {(12<<2)|2,{105,73,0}}, +/* 13897 */ {(12<<2)|2,{105,73,0}}, +/* 13898 */ {(12<<2)|2,{105,73,0}}, +/* 13899 */ {(12<<2)|2,{105,73,0}}, +/* 13900 */ {(12<<2)|2,{105,73,0}}, +/* 13901 */ {(12<<2)|2,{105,73,0}}, +/* 13902 */ {(12<<2)|2,{105,73,0}}, +/* 13903 */ {(12<<2)|2,{105,73,0}}, +/* 13904 */ {(12<<2)|2,{105,74,0}}, +/* 13905 */ {(12<<2)|2,{105,74,0}}, +/* 13906 */ {(12<<2)|2,{105,74,0}}, +/* 13907 */ {(12<<2)|2,{105,74,0}}, +/* 13908 */ {(12<<2)|2,{105,74,0}}, +/* 13909 */ {(12<<2)|2,{105,74,0}}, +/* 13910 */ {(12<<2)|2,{105,74,0}}, +/* 13911 */ {(12<<2)|2,{105,74,0}}, +/* 13912 */ {(12<<2)|2,{105,74,0}}, +/* 13913 */ {(12<<2)|2,{105,74,0}}, +/* 13914 */ {(12<<2)|2,{105,74,0}}, +/* 13915 */ {(12<<2)|2,{105,74,0}}, +/* 13916 */ {(12<<2)|2,{105,74,0}}, +/* 13917 */ {(12<<2)|2,{105,74,0}}, +/* 13918 */ {(12<<2)|2,{105,74,0}}, +/* 13919 */ {(12<<2)|2,{105,74,0}}, +/* 13920 */ {(12<<2)|2,{105,75,0}}, +/* 13921 */ {(12<<2)|2,{105,75,0}}, +/* 13922 */ {(12<<2)|2,{105,75,0}}, +/* 13923 */ {(12<<2)|2,{105,75,0}}, +/* 13924 */ {(12<<2)|2,{105,75,0}}, +/* 13925 */ {(12<<2)|2,{105,75,0}}, +/* 13926 */ {(12<<2)|2,{105,75,0}}, +/* 13927 */ {(12<<2)|2,{105,75,0}}, +/* 13928 */ {(12<<2)|2,{105,75,0}}, +/* 13929 */ {(12<<2)|2,{105,75,0}}, +/* 13930 */ {(12<<2)|2,{105,75,0}}, +/* 13931 */ {(12<<2)|2,{105,75,0}}, +/* 13932 */ {(12<<2)|2,{105,75,0}}, +/* 13933 */ {(12<<2)|2,{105,75,0}}, +/* 13934 */ {(12<<2)|2,{105,75,0}}, +/* 13935 */ {(12<<2)|2,{105,75,0}}, +/* 13936 */ {(12<<2)|2,{105,76,0}}, +/* 13937 */ {(12<<2)|2,{105,76,0}}, +/* 13938 */ {(12<<2)|2,{105,76,0}}, +/* 13939 */ {(12<<2)|2,{105,76,0}}, +/* 13940 */ {(12<<2)|2,{105,76,0}}, +/* 13941 */ {(12<<2)|2,{105,76,0}}, +/* 13942 */ {(12<<2)|2,{105,76,0}}, +/* 13943 */ {(12<<2)|2,{105,76,0}}, +/* 13944 */ {(12<<2)|2,{105,76,0}}, +/* 13945 */ {(12<<2)|2,{105,76,0}}, +/* 13946 */ {(12<<2)|2,{105,76,0}}, +/* 13947 */ {(12<<2)|2,{105,76,0}}, +/* 13948 */ {(12<<2)|2,{105,76,0}}, +/* 13949 */ {(12<<2)|2,{105,76,0}}, +/* 13950 */ {(12<<2)|2,{105,76,0}}, +/* 13951 */ {(12<<2)|2,{105,76,0}}, +/* 13952 */ {(12<<2)|2,{105,77,0}}, +/* 13953 */ {(12<<2)|2,{105,77,0}}, +/* 13954 */ {(12<<2)|2,{105,77,0}}, +/* 13955 */ {(12<<2)|2,{105,77,0}}, +/* 13956 */ {(12<<2)|2,{105,77,0}}, +/* 13957 */ {(12<<2)|2,{105,77,0}}, +/* 13958 */ {(12<<2)|2,{105,77,0}}, +/* 13959 */ {(12<<2)|2,{105,77,0}}, +/* 13960 */ {(12<<2)|2,{105,77,0}}, +/* 13961 */ {(12<<2)|2,{105,77,0}}, +/* 13962 */ {(12<<2)|2,{105,77,0}}, +/* 13963 */ {(12<<2)|2,{105,77,0}}, +/* 13964 */ {(12<<2)|2,{105,77,0}}, +/* 13965 */ {(12<<2)|2,{105,77,0}}, +/* 13966 */ {(12<<2)|2,{105,77,0}}, +/* 13967 */ {(12<<2)|2,{105,77,0}}, +/* 13968 */ {(12<<2)|2,{105,78,0}}, +/* 13969 */ {(12<<2)|2,{105,78,0}}, +/* 13970 */ {(12<<2)|2,{105,78,0}}, +/* 13971 */ {(12<<2)|2,{105,78,0}}, +/* 13972 */ {(12<<2)|2,{105,78,0}}, +/* 13973 */ {(12<<2)|2,{105,78,0}}, +/* 13974 */ {(12<<2)|2,{105,78,0}}, +/* 13975 */ {(12<<2)|2,{105,78,0}}, +/* 13976 */ {(12<<2)|2,{105,78,0}}, +/* 13977 */ {(12<<2)|2,{105,78,0}}, +/* 13978 */ {(12<<2)|2,{105,78,0}}, +/* 13979 */ {(12<<2)|2,{105,78,0}}, +/* 13980 */ {(12<<2)|2,{105,78,0}}, +/* 13981 */ {(12<<2)|2,{105,78,0}}, +/* 13982 */ {(12<<2)|2,{105,78,0}}, +/* 13983 */ {(12<<2)|2,{105,78,0}}, +/* 13984 */ {(12<<2)|2,{105,79,0}}, +/* 13985 */ {(12<<2)|2,{105,79,0}}, +/* 13986 */ {(12<<2)|2,{105,79,0}}, +/* 13987 */ {(12<<2)|2,{105,79,0}}, +/* 13988 */ {(12<<2)|2,{105,79,0}}, +/* 13989 */ {(12<<2)|2,{105,79,0}}, +/* 13990 */ {(12<<2)|2,{105,79,0}}, +/* 13991 */ {(12<<2)|2,{105,79,0}}, +/* 13992 */ {(12<<2)|2,{105,79,0}}, +/* 13993 */ {(12<<2)|2,{105,79,0}}, +/* 13994 */ {(12<<2)|2,{105,79,0}}, +/* 13995 */ {(12<<2)|2,{105,79,0}}, +/* 13996 */ {(12<<2)|2,{105,79,0}}, +/* 13997 */ {(12<<2)|2,{105,79,0}}, +/* 13998 */ {(12<<2)|2,{105,79,0}}, +/* 13999 */ {(12<<2)|2,{105,79,0}}, +/* 14000 */ {(12<<2)|2,{105,80,0}}, +/* 14001 */ {(12<<2)|2,{105,80,0}}, +/* 14002 */ {(12<<2)|2,{105,80,0}}, +/* 14003 */ {(12<<2)|2,{105,80,0}}, +/* 14004 */ {(12<<2)|2,{105,80,0}}, +/* 14005 */ {(12<<2)|2,{105,80,0}}, +/* 14006 */ {(12<<2)|2,{105,80,0}}, +/* 14007 */ {(12<<2)|2,{105,80,0}}, +/* 14008 */ {(12<<2)|2,{105,80,0}}, +/* 14009 */ {(12<<2)|2,{105,80,0}}, +/* 14010 */ {(12<<2)|2,{105,80,0}}, +/* 14011 */ {(12<<2)|2,{105,80,0}}, +/* 14012 */ {(12<<2)|2,{105,80,0}}, +/* 14013 */ {(12<<2)|2,{105,80,0}}, +/* 14014 */ {(12<<2)|2,{105,80,0}}, +/* 14015 */ {(12<<2)|2,{105,80,0}}, +/* 14016 */ {(12<<2)|2,{105,81,0}}, +/* 14017 */ {(12<<2)|2,{105,81,0}}, +/* 14018 */ {(12<<2)|2,{105,81,0}}, +/* 14019 */ {(12<<2)|2,{105,81,0}}, +/* 14020 */ {(12<<2)|2,{105,81,0}}, +/* 14021 */ {(12<<2)|2,{105,81,0}}, +/* 14022 */ {(12<<2)|2,{105,81,0}}, +/* 14023 */ {(12<<2)|2,{105,81,0}}, +/* 14024 */ {(12<<2)|2,{105,81,0}}, +/* 14025 */ {(12<<2)|2,{105,81,0}}, +/* 14026 */ {(12<<2)|2,{105,81,0}}, +/* 14027 */ {(12<<2)|2,{105,81,0}}, +/* 14028 */ {(12<<2)|2,{105,81,0}}, +/* 14029 */ {(12<<2)|2,{105,81,0}}, +/* 14030 */ {(12<<2)|2,{105,81,0}}, +/* 14031 */ {(12<<2)|2,{105,81,0}}, +/* 14032 */ {(12<<2)|2,{105,82,0}}, +/* 14033 */ {(12<<2)|2,{105,82,0}}, +/* 14034 */ {(12<<2)|2,{105,82,0}}, +/* 14035 */ {(12<<2)|2,{105,82,0}}, +/* 14036 */ {(12<<2)|2,{105,82,0}}, +/* 14037 */ {(12<<2)|2,{105,82,0}}, +/* 14038 */ {(12<<2)|2,{105,82,0}}, +/* 14039 */ {(12<<2)|2,{105,82,0}}, +/* 14040 */ {(12<<2)|2,{105,82,0}}, +/* 14041 */ {(12<<2)|2,{105,82,0}}, +/* 14042 */ {(12<<2)|2,{105,82,0}}, +/* 14043 */ {(12<<2)|2,{105,82,0}}, +/* 14044 */ {(12<<2)|2,{105,82,0}}, +/* 14045 */ {(12<<2)|2,{105,82,0}}, +/* 14046 */ {(12<<2)|2,{105,82,0}}, +/* 14047 */ {(12<<2)|2,{105,82,0}}, +/* 14048 */ {(12<<2)|2,{105,83,0}}, +/* 14049 */ {(12<<2)|2,{105,83,0}}, +/* 14050 */ {(12<<2)|2,{105,83,0}}, +/* 14051 */ {(12<<2)|2,{105,83,0}}, +/* 14052 */ {(12<<2)|2,{105,83,0}}, +/* 14053 */ {(12<<2)|2,{105,83,0}}, +/* 14054 */ {(12<<2)|2,{105,83,0}}, +/* 14055 */ {(12<<2)|2,{105,83,0}}, +/* 14056 */ {(12<<2)|2,{105,83,0}}, +/* 14057 */ {(12<<2)|2,{105,83,0}}, +/* 14058 */ {(12<<2)|2,{105,83,0}}, +/* 14059 */ {(12<<2)|2,{105,83,0}}, +/* 14060 */ {(12<<2)|2,{105,83,0}}, +/* 14061 */ {(12<<2)|2,{105,83,0}}, +/* 14062 */ {(12<<2)|2,{105,83,0}}, +/* 14063 */ {(12<<2)|2,{105,83,0}}, +/* 14064 */ {(12<<2)|2,{105,84,0}}, +/* 14065 */ {(12<<2)|2,{105,84,0}}, +/* 14066 */ {(12<<2)|2,{105,84,0}}, +/* 14067 */ {(12<<2)|2,{105,84,0}}, +/* 14068 */ {(12<<2)|2,{105,84,0}}, +/* 14069 */ {(12<<2)|2,{105,84,0}}, +/* 14070 */ {(12<<2)|2,{105,84,0}}, +/* 14071 */ {(12<<2)|2,{105,84,0}}, +/* 14072 */ {(12<<2)|2,{105,84,0}}, +/* 14073 */ {(12<<2)|2,{105,84,0}}, +/* 14074 */ {(12<<2)|2,{105,84,0}}, +/* 14075 */ {(12<<2)|2,{105,84,0}}, +/* 14076 */ {(12<<2)|2,{105,84,0}}, +/* 14077 */ {(12<<2)|2,{105,84,0}}, +/* 14078 */ {(12<<2)|2,{105,84,0}}, +/* 14079 */ {(12<<2)|2,{105,84,0}}, +/* 14080 */ {(12<<2)|2,{105,85,0}}, +/* 14081 */ {(12<<2)|2,{105,85,0}}, +/* 14082 */ {(12<<2)|2,{105,85,0}}, +/* 14083 */ {(12<<2)|2,{105,85,0}}, +/* 14084 */ {(12<<2)|2,{105,85,0}}, +/* 14085 */ {(12<<2)|2,{105,85,0}}, +/* 14086 */ {(12<<2)|2,{105,85,0}}, +/* 14087 */ {(12<<2)|2,{105,85,0}}, +/* 14088 */ {(12<<2)|2,{105,85,0}}, +/* 14089 */ {(12<<2)|2,{105,85,0}}, +/* 14090 */ {(12<<2)|2,{105,85,0}}, +/* 14091 */ {(12<<2)|2,{105,85,0}}, +/* 14092 */ {(12<<2)|2,{105,85,0}}, +/* 14093 */ {(12<<2)|2,{105,85,0}}, +/* 14094 */ {(12<<2)|2,{105,85,0}}, +/* 14095 */ {(12<<2)|2,{105,85,0}}, +/* 14096 */ {(12<<2)|2,{105,86,0}}, +/* 14097 */ {(12<<2)|2,{105,86,0}}, +/* 14098 */ {(12<<2)|2,{105,86,0}}, +/* 14099 */ {(12<<2)|2,{105,86,0}}, +/* 14100 */ {(12<<2)|2,{105,86,0}}, +/* 14101 */ {(12<<2)|2,{105,86,0}}, +/* 14102 */ {(12<<2)|2,{105,86,0}}, +/* 14103 */ {(12<<2)|2,{105,86,0}}, +/* 14104 */ {(12<<2)|2,{105,86,0}}, +/* 14105 */ {(12<<2)|2,{105,86,0}}, +/* 14106 */ {(12<<2)|2,{105,86,0}}, +/* 14107 */ {(12<<2)|2,{105,86,0}}, +/* 14108 */ {(12<<2)|2,{105,86,0}}, +/* 14109 */ {(12<<2)|2,{105,86,0}}, +/* 14110 */ {(12<<2)|2,{105,86,0}}, +/* 14111 */ {(12<<2)|2,{105,86,0}}, +/* 14112 */ {(12<<2)|2,{105,87,0}}, +/* 14113 */ {(12<<2)|2,{105,87,0}}, +/* 14114 */ {(12<<2)|2,{105,87,0}}, +/* 14115 */ {(12<<2)|2,{105,87,0}}, +/* 14116 */ {(12<<2)|2,{105,87,0}}, +/* 14117 */ {(12<<2)|2,{105,87,0}}, +/* 14118 */ {(12<<2)|2,{105,87,0}}, +/* 14119 */ {(12<<2)|2,{105,87,0}}, +/* 14120 */ {(12<<2)|2,{105,87,0}}, +/* 14121 */ {(12<<2)|2,{105,87,0}}, +/* 14122 */ {(12<<2)|2,{105,87,0}}, +/* 14123 */ {(12<<2)|2,{105,87,0}}, +/* 14124 */ {(12<<2)|2,{105,87,0}}, +/* 14125 */ {(12<<2)|2,{105,87,0}}, +/* 14126 */ {(12<<2)|2,{105,87,0}}, +/* 14127 */ {(12<<2)|2,{105,87,0}}, +/* 14128 */ {(12<<2)|2,{105,89,0}}, +/* 14129 */ {(12<<2)|2,{105,89,0}}, +/* 14130 */ {(12<<2)|2,{105,89,0}}, +/* 14131 */ {(12<<2)|2,{105,89,0}}, +/* 14132 */ {(12<<2)|2,{105,89,0}}, +/* 14133 */ {(12<<2)|2,{105,89,0}}, +/* 14134 */ {(12<<2)|2,{105,89,0}}, +/* 14135 */ {(12<<2)|2,{105,89,0}}, +/* 14136 */ {(12<<2)|2,{105,89,0}}, +/* 14137 */ {(12<<2)|2,{105,89,0}}, +/* 14138 */ {(12<<2)|2,{105,89,0}}, +/* 14139 */ {(12<<2)|2,{105,89,0}}, +/* 14140 */ {(12<<2)|2,{105,89,0}}, +/* 14141 */ {(12<<2)|2,{105,89,0}}, +/* 14142 */ {(12<<2)|2,{105,89,0}}, +/* 14143 */ {(12<<2)|2,{105,89,0}}, +/* 14144 */ {(12<<2)|2,{105,106,0}}, +/* 14145 */ {(12<<2)|2,{105,106,0}}, +/* 14146 */ {(12<<2)|2,{105,106,0}}, +/* 14147 */ {(12<<2)|2,{105,106,0}}, +/* 14148 */ {(12<<2)|2,{105,106,0}}, +/* 14149 */ {(12<<2)|2,{105,106,0}}, +/* 14150 */ {(12<<2)|2,{105,106,0}}, +/* 14151 */ {(12<<2)|2,{105,106,0}}, +/* 14152 */ {(12<<2)|2,{105,106,0}}, +/* 14153 */ {(12<<2)|2,{105,106,0}}, +/* 14154 */ {(12<<2)|2,{105,106,0}}, +/* 14155 */ {(12<<2)|2,{105,106,0}}, +/* 14156 */ {(12<<2)|2,{105,106,0}}, +/* 14157 */ {(12<<2)|2,{105,106,0}}, +/* 14158 */ {(12<<2)|2,{105,106,0}}, +/* 14159 */ {(12<<2)|2,{105,106,0}}, +/* 14160 */ {(12<<2)|2,{105,107,0}}, +/* 14161 */ {(12<<2)|2,{105,107,0}}, +/* 14162 */ {(12<<2)|2,{105,107,0}}, +/* 14163 */ {(12<<2)|2,{105,107,0}}, +/* 14164 */ {(12<<2)|2,{105,107,0}}, +/* 14165 */ {(12<<2)|2,{105,107,0}}, +/* 14166 */ {(12<<2)|2,{105,107,0}}, +/* 14167 */ {(12<<2)|2,{105,107,0}}, +/* 14168 */ {(12<<2)|2,{105,107,0}}, +/* 14169 */ {(12<<2)|2,{105,107,0}}, +/* 14170 */ {(12<<2)|2,{105,107,0}}, +/* 14171 */ {(12<<2)|2,{105,107,0}}, +/* 14172 */ {(12<<2)|2,{105,107,0}}, +/* 14173 */ {(12<<2)|2,{105,107,0}}, +/* 14174 */ {(12<<2)|2,{105,107,0}}, +/* 14175 */ {(12<<2)|2,{105,107,0}}, +/* 14176 */ {(12<<2)|2,{105,113,0}}, +/* 14177 */ {(12<<2)|2,{105,113,0}}, +/* 14178 */ {(12<<2)|2,{105,113,0}}, +/* 14179 */ {(12<<2)|2,{105,113,0}}, +/* 14180 */ {(12<<2)|2,{105,113,0}}, +/* 14181 */ {(12<<2)|2,{105,113,0}}, +/* 14182 */ {(12<<2)|2,{105,113,0}}, +/* 14183 */ {(12<<2)|2,{105,113,0}}, +/* 14184 */ {(12<<2)|2,{105,113,0}}, +/* 14185 */ {(12<<2)|2,{105,113,0}}, +/* 14186 */ {(12<<2)|2,{105,113,0}}, +/* 14187 */ {(12<<2)|2,{105,113,0}}, +/* 14188 */ {(12<<2)|2,{105,113,0}}, +/* 14189 */ {(12<<2)|2,{105,113,0}}, +/* 14190 */ {(12<<2)|2,{105,113,0}}, +/* 14191 */ {(12<<2)|2,{105,113,0}}, +/* 14192 */ {(12<<2)|2,{105,118,0}}, +/* 14193 */ {(12<<2)|2,{105,118,0}}, +/* 14194 */ {(12<<2)|2,{105,118,0}}, +/* 14195 */ {(12<<2)|2,{105,118,0}}, +/* 14196 */ {(12<<2)|2,{105,118,0}}, +/* 14197 */ {(12<<2)|2,{105,118,0}}, +/* 14198 */ {(12<<2)|2,{105,118,0}}, +/* 14199 */ {(12<<2)|2,{105,118,0}}, +/* 14200 */ {(12<<2)|2,{105,118,0}}, +/* 14201 */ {(12<<2)|2,{105,118,0}}, +/* 14202 */ {(12<<2)|2,{105,118,0}}, +/* 14203 */ {(12<<2)|2,{105,118,0}}, +/* 14204 */ {(12<<2)|2,{105,118,0}}, +/* 14205 */ {(12<<2)|2,{105,118,0}}, +/* 14206 */ {(12<<2)|2,{105,118,0}}, +/* 14207 */ {(12<<2)|2,{105,118,0}}, +/* 14208 */ {(12<<2)|2,{105,119,0}}, +/* 14209 */ {(12<<2)|2,{105,119,0}}, +/* 14210 */ {(12<<2)|2,{105,119,0}}, +/* 14211 */ {(12<<2)|2,{105,119,0}}, +/* 14212 */ {(12<<2)|2,{105,119,0}}, +/* 14213 */ {(12<<2)|2,{105,119,0}}, +/* 14214 */ {(12<<2)|2,{105,119,0}}, +/* 14215 */ {(12<<2)|2,{105,119,0}}, +/* 14216 */ {(12<<2)|2,{105,119,0}}, +/* 14217 */ {(12<<2)|2,{105,119,0}}, +/* 14218 */ {(12<<2)|2,{105,119,0}}, +/* 14219 */ {(12<<2)|2,{105,119,0}}, +/* 14220 */ {(12<<2)|2,{105,119,0}}, +/* 14221 */ {(12<<2)|2,{105,119,0}}, +/* 14222 */ {(12<<2)|2,{105,119,0}}, +/* 14223 */ {(12<<2)|2,{105,119,0}}, +/* 14224 */ {(12<<2)|2,{105,120,0}}, +/* 14225 */ {(12<<2)|2,{105,120,0}}, +/* 14226 */ {(12<<2)|2,{105,120,0}}, +/* 14227 */ {(12<<2)|2,{105,120,0}}, +/* 14228 */ {(12<<2)|2,{105,120,0}}, +/* 14229 */ {(12<<2)|2,{105,120,0}}, +/* 14230 */ {(12<<2)|2,{105,120,0}}, +/* 14231 */ {(12<<2)|2,{105,120,0}}, +/* 14232 */ {(12<<2)|2,{105,120,0}}, +/* 14233 */ {(12<<2)|2,{105,120,0}}, +/* 14234 */ {(12<<2)|2,{105,120,0}}, +/* 14235 */ {(12<<2)|2,{105,120,0}}, +/* 14236 */ {(12<<2)|2,{105,120,0}}, +/* 14237 */ {(12<<2)|2,{105,120,0}}, +/* 14238 */ {(12<<2)|2,{105,120,0}}, +/* 14239 */ {(12<<2)|2,{105,120,0}}, +/* 14240 */ {(12<<2)|2,{105,121,0}}, +/* 14241 */ {(12<<2)|2,{105,121,0}}, +/* 14242 */ {(12<<2)|2,{105,121,0}}, +/* 14243 */ {(12<<2)|2,{105,121,0}}, +/* 14244 */ {(12<<2)|2,{105,121,0}}, +/* 14245 */ {(12<<2)|2,{105,121,0}}, +/* 14246 */ {(12<<2)|2,{105,121,0}}, +/* 14247 */ {(12<<2)|2,{105,121,0}}, +/* 14248 */ {(12<<2)|2,{105,121,0}}, +/* 14249 */ {(12<<2)|2,{105,121,0}}, +/* 14250 */ {(12<<2)|2,{105,121,0}}, +/* 14251 */ {(12<<2)|2,{105,121,0}}, +/* 14252 */ {(12<<2)|2,{105,121,0}}, +/* 14253 */ {(12<<2)|2,{105,121,0}}, +/* 14254 */ {(12<<2)|2,{105,121,0}}, +/* 14255 */ {(12<<2)|2,{105,121,0}}, +/* 14256 */ {(12<<2)|2,{105,122,0}}, +/* 14257 */ {(12<<2)|2,{105,122,0}}, +/* 14258 */ {(12<<2)|2,{105,122,0}}, +/* 14259 */ {(12<<2)|2,{105,122,0}}, +/* 14260 */ {(12<<2)|2,{105,122,0}}, +/* 14261 */ {(12<<2)|2,{105,122,0}}, +/* 14262 */ {(12<<2)|2,{105,122,0}}, +/* 14263 */ {(12<<2)|2,{105,122,0}}, +/* 14264 */ {(12<<2)|2,{105,122,0}}, +/* 14265 */ {(12<<2)|2,{105,122,0}}, +/* 14266 */ {(12<<2)|2,{105,122,0}}, +/* 14267 */ {(12<<2)|2,{105,122,0}}, +/* 14268 */ {(12<<2)|2,{105,122,0}}, +/* 14269 */ {(12<<2)|2,{105,122,0}}, +/* 14270 */ {(12<<2)|2,{105,122,0}}, +/* 14271 */ {(12<<2)|2,{105,122,0}}, +/* 14272 */ {(13<<2)|2,{105,38,0}}, +/* 14273 */ {(13<<2)|2,{105,38,0}}, +/* 14274 */ {(13<<2)|2,{105,38,0}}, +/* 14275 */ {(13<<2)|2,{105,38,0}}, +/* 14276 */ {(13<<2)|2,{105,38,0}}, +/* 14277 */ {(13<<2)|2,{105,38,0}}, +/* 14278 */ {(13<<2)|2,{105,38,0}}, +/* 14279 */ {(13<<2)|2,{105,38,0}}, +/* 14280 */ {(13<<2)|2,{105,42,0}}, +/* 14281 */ {(13<<2)|2,{105,42,0}}, +/* 14282 */ {(13<<2)|2,{105,42,0}}, +/* 14283 */ {(13<<2)|2,{105,42,0}}, +/* 14284 */ {(13<<2)|2,{105,42,0}}, +/* 14285 */ {(13<<2)|2,{105,42,0}}, +/* 14286 */ {(13<<2)|2,{105,42,0}}, +/* 14287 */ {(13<<2)|2,{105,42,0}}, +/* 14288 */ {(13<<2)|2,{105,44,0}}, +/* 14289 */ {(13<<2)|2,{105,44,0}}, +/* 14290 */ {(13<<2)|2,{105,44,0}}, +/* 14291 */ {(13<<2)|2,{105,44,0}}, +/* 14292 */ {(13<<2)|2,{105,44,0}}, +/* 14293 */ {(13<<2)|2,{105,44,0}}, +/* 14294 */ {(13<<2)|2,{105,44,0}}, +/* 14295 */ {(13<<2)|2,{105,44,0}}, +/* 14296 */ {(13<<2)|2,{105,59,0}}, +/* 14297 */ {(13<<2)|2,{105,59,0}}, +/* 14298 */ {(13<<2)|2,{105,59,0}}, +/* 14299 */ {(13<<2)|2,{105,59,0}}, +/* 14300 */ {(13<<2)|2,{105,59,0}}, +/* 14301 */ {(13<<2)|2,{105,59,0}}, +/* 14302 */ {(13<<2)|2,{105,59,0}}, +/* 14303 */ {(13<<2)|2,{105,59,0}}, +/* 14304 */ {(13<<2)|2,{105,88,0}}, +/* 14305 */ {(13<<2)|2,{105,88,0}}, +/* 14306 */ {(13<<2)|2,{105,88,0}}, +/* 14307 */ {(13<<2)|2,{105,88,0}}, +/* 14308 */ {(13<<2)|2,{105,88,0}}, +/* 14309 */ {(13<<2)|2,{105,88,0}}, +/* 14310 */ {(13<<2)|2,{105,88,0}}, +/* 14311 */ {(13<<2)|2,{105,88,0}}, +/* 14312 */ {(13<<2)|2,{105,90,0}}, +/* 14313 */ {(13<<2)|2,{105,90,0}}, +/* 14314 */ {(13<<2)|2,{105,90,0}}, +/* 14315 */ {(13<<2)|2,{105,90,0}}, +/* 14316 */ {(13<<2)|2,{105,90,0}}, +/* 14317 */ {(13<<2)|2,{105,90,0}}, +/* 14318 */ {(13<<2)|2,{105,90,0}}, +/* 14319 */ {(13<<2)|2,{105,90,0}}, +/* 14320 */ {(15<<2)|2,{105,33,0}}, +/* 14321 */ {(15<<2)|2,{105,33,0}}, +/* 14322 */ {(15<<2)|2,{105,34,0}}, +/* 14323 */ {(15<<2)|2,{105,34,0}}, +/* 14324 */ {(15<<2)|2,{105,40,0}}, +/* 14325 */ {(15<<2)|2,{105,40,0}}, +/* 14326 */ {(15<<2)|2,{105,41,0}}, +/* 14327 */ {(15<<2)|2,{105,41,0}}, +/* 14328 */ {(15<<2)|2,{105,63,0}}, +/* 14329 */ {(15<<2)|2,{105,63,0}}, +/* 14330 */ {(16<<2)|2,{105,39,0}}, +/* 14331 */ {(16<<2)|2,{105,43,0}}, +/* 14332 */ {(16<<2)|2,{105,124,0}}, +/* 14333 */ {(5<<2)|1,{105,0,0}}, +/* 14334 */ {(5<<2)|1,{105,0,0}}, +/* 14335 */ {(5<<2)|1,{105,0,0}}, +/* 14336 */ {(15<<2)|3,{111,48,48}}, +/* 14337 */ {(15<<2)|3,{111,48,48}}, +/* 14338 */ {(15<<2)|3,{111,48,49}}, +/* 14339 */ {(15<<2)|3,{111,48,49}}, +/* 14340 */ {(15<<2)|3,{111,48,50}}, +/* 14341 */ {(15<<2)|3,{111,48,50}}, +/* 14342 */ {(15<<2)|3,{111,48,97}}, +/* 14343 */ {(15<<2)|3,{111,48,97}}, +/* 14344 */ {(15<<2)|3,{111,48,99}}, +/* 14345 */ {(15<<2)|3,{111,48,99}}, +/* 14346 */ {(15<<2)|3,{111,48,101}}, +/* 14347 */ {(15<<2)|3,{111,48,101}}, +/* 14348 */ {(15<<2)|3,{111,48,105}}, +/* 14349 */ {(15<<2)|3,{111,48,105}}, +/* 14350 */ {(15<<2)|3,{111,48,111}}, +/* 14351 */ {(15<<2)|3,{111,48,111}}, +/* 14352 */ {(15<<2)|3,{111,48,115}}, +/* 14353 */ {(15<<2)|3,{111,48,115}}, +/* 14354 */ {(15<<2)|3,{111,48,116}}, +/* 14355 */ {(15<<2)|3,{111,48,116}}, +/* 14356 */ {(16<<2)|3,{111,48,32}}, +/* 14357 */ {(16<<2)|3,{111,48,37}}, +/* 14358 */ {(16<<2)|3,{111,48,45}}, +/* 14359 */ {(16<<2)|3,{111,48,46}}, +/* 14360 */ {(16<<2)|3,{111,48,47}}, +/* 14361 */ {(16<<2)|3,{111,48,51}}, +/* 14362 */ {(16<<2)|3,{111,48,52}}, +/* 14363 */ {(16<<2)|3,{111,48,53}}, +/* 14364 */ {(16<<2)|3,{111,48,54}}, +/* 14365 */ {(16<<2)|3,{111,48,55}}, +/* 14366 */ {(16<<2)|3,{111,48,56}}, +/* 14367 */ {(16<<2)|3,{111,48,57}}, +/* 14368 */ {(16<<2)|3,{111,48,61}}, +/* 14369 */ {(16<<2)|3,{111,48,65}}, +/* 14370 */ {(16<<2)|3,{111,48,95}}, +/* 14371 */ {(16<<2)|3,{111,48,98}}, +/* 14372 */ {(16<<2)|3,{111,48,100}}, +/* 14373 */ {(16<<2)|3,{111,48,102}}, +/* 14374 */ {(16<<2)|3,{111,48,103}}, +/* 14375 */ {(16<<2)|3,{111,48,104}}, +/* 14376 */ {(16<<2)|3,{111,48,108}}, +/* 14377 */ {(16<<2)|3,{111,48,109}}, +/* 14378 */ {(16<<2)|3,{111,48,110}}, +/* 14379 */ {(16<<2)|3,{111,48,112}}, +/* 14380 */ {(16<<2)|3,{111,48,114}}, +/* 14381 */ {(16<<2)|3,{111,48,117}}, +/* 14382 */ {(10<<2)|2,{111,48,0}}, +/* 14383 */ {(10<<2)|2,{111,48,0}}, +/* 14384 */ {(10<<2)|2,{111,48,0}}, +/* 14385 */ {(10<<2)|2,{111,48,0}}, +/* 14386 */ {(10<<2)|2,{111,48,0}}, +/* 14387 */ {(10<<2)|2,{111,48,0}}, +/* 14388 */ {(10<<2)|2,{111,48,0}}, +/* 14389 */ {(10<<2)|2,{111,48,0}}, +/* 14390 */ {(10<<2)|2,{111,48,0}}, +/* 14391 */ {(10<<2)|2,{111,48,0}}, +/* 14392 */ {(10<<2)|2,{111,48,0}}, +/* 14393 */ {(10<<2)|2,{111,48,0}}, +/* 14394 */ {(10<<2)|2,{111,48,0}}, +/* 14395 */ {(10<<2)|2,{111,48,0}}, +/* 14396 */ {(10<<2)|2,{111,48,0}}, +/* 14397 */ {(10<<2)|2,{111,48,0}}, +/* 14398 */ {(10<<2)|2,{111,48,0}}, +/* 14399 */ {(10<<2)|2,{111,48,0}}, +/* 14400 */ {(15<<2)|3,{111,49,48}}, +/* 14401 */ {(15<<2)|3,{111,49,48}}, +/* 14402 */ {(15<<2)|3,{111,49,49}}, +/* 14403 */ {(15<<2)|3,{111,49,49}}, +/* 14404 */ {(15<<2)|3,{111,49,50}}, +/* 14405 */ {(15<<2)|3,{111,49,50}}, +/* 14406 */ {(15<<2)|3,{111,49,97}}, +/* 14407 */ {(15<<2)|3,{111,49,97}}, +/* 14408 */ {(15<<2)|3,{111,49,99}}, +/* 14409 */ {(15<<2)|3,{111,49,99}}, +/* 14410 */ {(15<<2)|3,{111,49,101}}, +/* 14411 */ {(15<<2)|3,{111,49,101}}, +/* 14412 */ {(15<<2)|3,{111,49,105}}, +/* 14413 */ {(15<<2)|3,{111,49,105}}, +/* 14414 */ {(15<<2)|3,{111,49,111}}, +/* 14415 */ {(15<<2)|3,{111,49,111}}, +/* 14416 */ {(15<<2)|3,{111,49,115}}, +/* 14417 */ {(15<<2)|3,{111,49,115}}, +/* 14418 */ {(15<<2)|3,{111,49,116}}, +/* 14419 */ {(15<<2)|3,{111,49,116}}, +/* 14420 */ {(16<<2)|3,{111,49,32}}, +/* 14421 */ {(16<<2)|3,{111,49,37}}, +/* 14422 */ {(16<<2)|3,{111,49,45}}, +/* 14423 */ {(16<<2)|3,{111,49,46}}, +/* 14424 */ {(16<<2)|3,{111,49,47}}, +/* 14425 */ {(16<<2)|3,{111,49,51}}, +/* 14426 */ {(16<<2)|3,{111,49,52}}, +/* 14427 */ {(16<<2)|3,{111,49,53}}, +/* 14428 */ {(16<<2)|3,{111,49,54}}, +/* 14429 */ {(16<<2)|3,{111,49,55}}, +/* 14430 */ {(16<<2)|3,{111,49,56}}, +/* 14431 */ {(16<<2)|3,{111,49,57}}, +/* 14432 */ {(16<<2)|3,{111,49,61}}, +/* 14433 */ {(16<<2)|3,{111,49,65}}, +/* 14434 */ {(16<<2)|3,{111,49,95}}, +/* 14435 */ {(16<<2)|3,{111,49,98}}, +/* 14436 */ {(16<<2)|3,{111,49,100}}, +/* 14437 */ {(16<<2)|3,{111,49,102}}, +/* 14438 */ {(16<<2)|3,{111,49,103}}, +/* 14439 */ {(16<<2)|3,{111,49,104}}, +/* 14440 */ {(16<<2)|3,{111,49,108}}, +/* 14441 */ {(16<<2)|3,{111,49,109}}, +/* 14442 */ {(16<<2)|3,{111,49,110}}, +/* 14443 */ {(16<<2)|3,{111,49,112}}, +/* 14444 */ {(16<<2)|3,{111,49,114}}, +/* 14445 */ {(16<<2)|3,{111,49,117}}, +/* 14446 */ {(10<<2)|2,{111,49,0}}, +/* 14447 */ {(10<<2)|2,{111,49,0}}, +/* 14448 */ {(10<<2)|2,{111,49,0}}, +/* 14449 */ {(10<<2)|2,{111,49,0}}, +/* 14450 */ {(10<<2)|2,{111,49,0}}, +/* 14451 */ {(10<<2)|2,{111,49,0}}, +/* 14452 */ {(10<<2)|2,{111,49,0}}, +/* 14453 */ {(10<<2)|2,{111,49,0}}, +/* 14454 */ {(10<<2)|2,{111,49,0}}, +/* 14455 */ {(10<<2)|2,{111,49,0}}, +/* 14456 */ {(10<<2)|2,{111,49,0}}, +/* 14457 */ {(10<<2)|2,{111,49,0}}, +/* 14458 */ {(10<<2)|2,{111,49,0}}, +/* 14459 */ {(10<<2)|2,{111,49,0}}, +/* 14460 */ {(10<<2)|2,{111,49,0}}, +/* 14461 */ {(10<<2)|2,{111,49,0}}, +/* 14462 */ {(10<<2)|2,{111,49,0}}, +/* 14463 */ {(10<<2)|2,{111,49,0}}, +/* 14464 */ {(15<<2)|3,{111,50,48}}, +/* 14465 */ {(15<<2)|3,{111,50,48}}, +/* 14466 */ {(15<<2)|3,{111,50,49}}, +/* 14467 */ {(15<<2)|3,{111,50,49}}, +/* 14468 */ {(15<<2)|3,{111,50,50}}, +/* 14469 */ {(15<<2)|3,{111,50,50}}, +/* 14470 */ {(15<<2)|3,{111,50,97}}, +/* 14471 */ {(15<<2)|3,{111,50,97}}, +/* 14472 */ {(15<<2)|3,{111,50,99}}, +/* 14473 */ {(15<<2)|3,{111,50,99}}, +/* 14474 */ {(15<<2)|3,{111,50,101}}, +/* 14475 */ {(15<<2)|3,{111,50,101}}, +/* 14476 */ {(15<<2)|3,{111,50,105}}, +/* 14477 */ {(15<<2)|3,{111,50,105}}, +/* 14478 */ {(15<<2)|3,{111,50,111}}, +/* 14479 */ {(15<<2)|3,{111,50,111}}, +/* 14480 */ {(15<<2)|3,{111,50,115}}, +/* 14481 */ {(15<<2)|3,{111,50,115}}, +/* 14482 */ {(15<<2)|3,{111,50,116}}, +/* 14483 */ {(15<<2)|3,{111,50,116}}, +/* 14484 */ {(16<<2)|3,{111,50,32}}, +/* 14485 */ {(16<<2)|3,{111,50,37}}, +/* 14486 */ {(16<<2)|3,{111,50,45}}, +/* 14487 */ {(16<<2)|3,{111,50,46}}, +/* 14488 */ {(16<<2)|3,{111,50,47}}, +/* 14489 */ {(16<<2)|3,{111,50,51}}, +/* 14490 */ {(16<<2)|3,{111,50,52}}, +/* 14491 */ {(16<<2)|3,{111,50,53}}, +/* 14492 */ {(16<<2)|3,{111,50,54}}, +/* 14493 */ {(16<<2)|3,{111,50,55}}, +/* 14494 */ {(16<<2)|3,{111,50,56}}, +/* 14495 */ {(16<<2)|3,{111,50,57}}, +/* 14496 */ {(16<<2)|3,{111,50,61}}, +/* 14497 */ {(16<<2)|3,{111,50,65}}, +/* 14498 */ {(16<<2)|3,{111,50,95}}, +/* 14499 */ {(16<<2)|3,{111,50,98}}, +/* 14500 */ {(16<<2)|3,{111,50,100}}, +/* 14501 */ {(16<<2)|3,{111,50,102}}, +/* 14502 */ {(16<<2)|3,{111,50,103}}, +/* 14503 */ {(16<<2)|3,{111,50,104}}, +/* 14504 */ {(16<<2)|3,{111,50,108}}, +/* 14505 */ {(16<<2)|3,{111,50,109}}, +/* 14506 */ {(16<<2)|3,{111,50,110}}, +/* 14507 */ {(16<<2)|3,{111,50,112}}, +/* 14508 */ {(16<<2)|3,{111,50,114}}, +/* 14509 */ {(16<<2)|3,{111,50,117}}, +/* 14510 */ {(10<<2)|2,{111,50,0}}, +/* 14511 */ {(10<<2)|2,{111,50,0}}, +/* 14512 */ {(10<<2)|2,{111,50,0}}, +/* 14513 */ {(10<<2)|2,{111,50,0}}, +/* 14514 */ {(10<<2)|2,{111,50,0}}, +/* 14515 */ {(10<<2)|2,{111,50,0}}, +/* 14516 */ {(10<<2)|2,{111,50,0}}, +/* 14517 */ {(10<<2)|2,{111,50,0}}, +/* 14518 */ {(10<<2)|2,{111,50,0}}, +/* 14519 */ {(10<<2)|2,{111,50,0}}, +/* 14520 */ {(10<<2)|2,{111,50,0}}, +/* 14521 */ {(10<<2)|2,{111,50,0}}, +/* 14522 */ {(10<<2)|2,{111,50,0}}, +/* 14523 */ {(10<<2)|2,{111,50,0}}, +/* 14524 */ {(10<<2)|2,{111,50,0}}, +/* 14525 */ {(10<<2)|2,{111,50,0}}, +/* 14526 */ {(10<<2)|2,{111,50,0}}, +/* 14527 */ {(10<<2)|2,{111,50,0}}, +/* 14528 */ {(15<<2)|3,{111,97,48}}, +/* 14529 */ {(15<<2)|3,{111,97,48}}, +/* 14530 */ {(15<<2)|3,{111,97,49}}, +/* 14531 */ {(15<<2)|3,{111,97,49}}, +/* 14532 */ {(15<<2)|3,{111,97,50}}, +/* 14533 */ {(15<<2)|3,{111,97,50}}, +/* 14534 */ {(15<<2)|3,{111,97,97}}, +/* 14535 */ {(15<<2)|3,{111,97,97}}, +/* 14536 */ {(15<<2)|3,{111,97,99}}, +/* 14537 */ {(15<<2)|3,{111,97,99}}, +/* 14538 */ {(15<<2)|3,{111,97,101}}, +/* 14539 */ {(15<<2)|3,{111,97,101}}, +/* 14540 */ {(15<<2)|3,{111,97,105}}, +/* 14541 */ {(15<<2)|3,{111,97,105}}, +/* 14542 */ {(15<<2)|3,{111,97,111}}, +/* 14543 */ {(15<<2)|3,{111,97,111}}, +/* 14544 */ {(15<<2)|3,{111,97,115}}, +/* 14545 */ {(15<<2)|3,{111,97,115}}, +/* 14546 */ {(15<<2)|3,{111,97,116}}, +/* 14547 */ {(15<<2)|3,{111,97,116}}, +/* 14548 */ {(16<<2)|3,{111,97,32}}, +/* 14549 */ {(16<<2)|3,{111,97,37}}, +/* 14550 */ {(16<<2)|3,{111,97,45}}, +/* 14551 */ {(16<<2)|3,{111,97,46}}, +/* 14552 */ {(16<<2)|3,{111,97,47}}, +/* 14553 */ {(16<<2)|3,{111,97,51}}, +/* 14554 */ {(16<<2)|3,{111,97,52}}, +/* 14555 */ {(16<<2)|3,{111,97,53}}, +/* 14556 */ {(16<<2)|3,{111,97,54}}, +/* 14557 */ {(16<<2)|3,{111,97,55}}, +/* 14558 */ {(16<<2)|3,{111,97,56}}, +/* 14559 */ {(16<<2)|3,{111,97,57}}, +/* 14560 */ {(16<<2)|3,{111,97,61}}, +/* 14561 */ {(16<<2)|3,{111,97,65}}, +/* 14562 */ {(16<<2)|3,{111,97,95}}, +/* 14563 */ {(16<<2)|3,{111,97,98}}, +/* 14564 */ {(16<<2)|3,{111,97,100}}, +/* 14565 */ {(16<<2)|3,{111,97,102}}, +/* 14566 */ {(16<<2)|3,{111,97,103}}, +/* 14567 */ {(16<<2)|3,{111,97,104}}, +/* 14568 */ {(16<<2)|3,{111,97,108}}, +/* 14569 */ {(16<<2)|3,{111,97,109}}, +/* 14570 */ {(16<<2)|3,{111,97,110}}, +/* 14571 */ {(16<<2)|3,{111,97,112}}, +/* 14572 */ {(16<<2)|3,{111,97,114}}, +/* 14573 */ {(16<<2)|3,{111,97,117}}, +/* 14574 */ {(10<<2)|2,{111,97,0}}, +/* 14575 */ {(10<<2)|2,{111,97,0}}, +/* 14576 */ {(10<<2)|2,{111,97,0}}, +/* 14577 */ {(10<<2)|2,{111,97,0}}, +/* 14578 */ {(10<<2)|2,{111,97,0}}, +/* 14579 */ {(10<<2)|2,{111,97,0}}, +/* 14580 */ {(10<<2)|2,{111,97,0}}, +/* 14581 */ {(10<<2)|2,{111,97,0}}, +/* 14582 */ {(10<<2)|2,{111,97,0}}, +/* 14583 */ {(10<<2)|2,{111,97,0}}, +/* 14584 */ {(10<<2)|2,{111,97,0}}, +/* 14585 */ {(10<<2)|2,{111,97,0}}, +/* 14586 */ {(10<<2)|2,{111,97,0}}, +/* 14587 */ {(10<<2)|2,{111,97,0}}, +/* 14588 */ {(10<<2)|2,{111,97,0}}, +/* 14589 */ {(10<<2)|2,{111,97,0}}, +/* 14590 */ {(10<<2)|2,{111,97,0}}, +/* 14591 */ {(10<<2)|2,{111,97,0}}, +/* 14592 */ {(15<<2)|3,{111,99,48}}, +/* 14593 */ {(15<<2)|3,{111,99,48}}, +/* 14594 */ {(15<<2)|3,{111,99,49}}, +/* 14595 */ {(15<<2)|3,{111,99,49}}, +/* 14596 */ {(15<<2)|3,{111,99,50}}, +/* 14597 */ {(15<<2)|3,{111,99,50}}, +/* 14598 */ {(15<<2)|3,{111,99,97}}, +/* 14599 */ {(15<<2)|3,{111,99,97}}, +/* 14600 */ {(15<<2)|3,{111,99,99}}, +/* 14601 */ {(15<<2)|3,{111,99,99}}, +/* 14602 */ {(15<<2)|3,{111,99,101}}, +/* 14603 */ {(15<<2)|3,{111,99,101}}, +/* 14604 */ {(15<<2)|3,{111,99,105}}, +/* 14605 */ {(15<<2)|3,{111,99,105}}, +/* 14606 */ {(15<<2)|3,{111,99,111}}, +/* 14607 */ {(15<<2)|3,{111,99,111}}, +/* 14608 */ {(15<<2)|3,{111,99,115}}, +/* 14609 */ {(15<<2)|3,{111,99,115}}, +/* 14610 */ {(15<<2)|3,{111,99,116}}, +/* 14611 */ {(15<<2)|3,{111,99,116}}, +/* 14612 */ {(16<<2)|3,{111,99,32}}, +/* 14613 */ {(16<<2)|3,{111,99,37}}, +/* 14614 */ {(16<<2)|3,{111,99,45}}, +/* 14615 */ {(16<<2)|3,{111,99,46}}, +/* 14616 */ {(16<<2)|3,{111,99,47}}, +/* 14617 */ {(16<<2)|3,{111,99,51}}, +/* 14618 */ {(16<<2)|3,{111,99,52}}, +/* 14619 */ {(16<<2)|3,{111,99,53}}, +/* 14620 */ {(16<<2)|3,{111,99,54}}, +/* 14621 */ {(16<<2)|3,{111,99,55}}, +/* 14622 */ {(16<<2)|3,{111,99,56}}, +/* 14623 */ {(16<<2)|3,{111,99,57}}, +/* 14624 */ {(16<<2)|3,{111,99,61}}, +/* 14625 */ {(16<<2)|3,{111,99,65}}, +/* 14626 */ {(16<<2)|3,{111,99,95}}, +/* 14627 */ {(16<<2)|3,{111,99,98}}, +/* 14628 */ {(16<<2)|3,{111,99,100}}, +/* 14629 */ {(16<<2)|3,{111,99,102}}, +/* 14630 */ {(16<<2)|3,{111,99,103}}, +/* 14631 */ {(16<<2)|3,{111,99,104}}, +/* 14632 */ {(16<<2)|3,{111,99,108}}, +/* 14633 */ {(16<<2)|3,{111,99,109}}, +/* 14634 */ {(16<<2)|3,{111,99,110}}, +/* 14635 */ {(16<<2)|3,{111,99,112}}, +/* 14636 */ {(16<<2)|3,{111,99,114}}, +/* 14637 */ {(16<<2)|3,{111,99,117}}, +/* 14638 */ {(10<<2)|2,{111,99,0}}, +/* 14639 */ {(10<<2)|2,{111,99,0}}, +/* 14640 */ {(10<<2)|2,{111,99,0}}, +/* 14641 */ {(10<<2)|2,{111,99,0}}, +/* 14642 */ {(10<<2)|2,{111,99,0}}, +/* 14643 */ {(10<<2)|2,{111,99,0}}, +/* 14644 */ {(10<<2)|2,{111,99,0}}, +/* 14645 */ {(10<<2)|2,{111,99,0}}, +/* 14646 */ {(10<<2)|2,{111,99,0}}, +/* 14647 */ {(10<<2)|2,{111,99,0}}, +/* 14648 */ {(10<<2)|2,{111,99,0}}, +/* 14649 */ {(10<<2)|2,{111,99,0}}, +/* 14650 */ {(10<<2)|2,{111,99,0}}, +/* 14651 */ {(10<<2)|2,{111,99,0}}, +/* 14652 */ {(10<<2)|2,{111,99,0}}, +/* 14653 */ {(10<<2)|2,{111,99,0}}, +/* 14654 */ {(10<<2)|2,{111,99,0}}, +/* 14655 */ {(10<<2)|2,{111,99,0}}, +/* 14656 */ {(15<<2)|3,{111,101,48}}, +/* 14657 */ {(15<<2)|3,{111,101,48}}, +/* 14658 */ {(15<<2)|3,{111,101,49}}, +/* 14659 */ {(15<<2)|3,{111,101,49}}, +/* 14660 */ {(15<<2)|3,{111,101,50}}, +/* 14661 */ {(15<<2)|3,{111,101,50}}, +/* 14662 */ {(15<<2)|3,{111,101,97}}, +/* 14663 */ {(15<<2)|3,{111,101,97}}, +/* 14664 */ {(15<<2)|3,{111,101,99}}, +/* 14665 */ {(15<<2)|3,{111,101,99}}, +/* 14666 */ {(15<<2)|3,{111,101,101}}, +/* 14667 */ {(15<<2)|3,{111,101,101}}, +/* 14668 */ {(15<<2)|3,{111,101,105}}, +/* 14669 */ {(15<<2)|3,{111,101,105}}, +/* 14670 */ {(15<<2)|3,{111,101,111}}, +/* 14671 */ {(15<<2)|3,{111,101,111}}, +/* 14672 */ {(15<<2)|3,{111,101,115}}, +/* 14673 */ {(15<<2)|3,{111,101,115}}, +/* 14674 */ {(15<<2)|3,{111,101,116}}, +/* 14675 */ {(15<<2)|3,{111,101,116}}, +/* 14676 */ {(16<<2)|3,{111,101,32}}, +/* 14677 */ {(16<<2)|3,{111,101,37}}, +/* 14678 */ {(16<<2)|3,{111,101,45}}, +/* 14679 */ {(16<<2)|3,{111,101,46}}, +/* 14680 */ {(16<<2)|3,{111,101,47}}, +/* 14681 */ {(16<<2)|3,{111,101,51}}, +/* 14682 */ {(16<<2)|3,{111,101,52}}, +/* 14683 */ {(16<<2)|3,{111,101,53}}, +/* 14684 */ {(16<<2)|3,{111,101,54}}, +/* 14685 */ {(16<<2)|3,{111,101,55}}, +/* 14686 */ {(16<<2)|3,{111,101,56}}, +/* 14687 */ {(16<<2)|3,{111,101,57}}, +/* 14688 */ {(16<<2)|3,{111,101,61}}, +/* 14689 */ {(16<<2)|3,{111,101,65}}, +/* 14690 */ {(16<<2)|3,{111,101,95}}, +/* 14691 */ {(16<<2)|3,{111,101,98}}, +/* 14692 */ {(16<<2)|3,{111,101,100}}, +/* 14693 */ {(16<<2)|3,{111,101,102}}, +/* 14694 */ {(16<<2)|3,{111,101,103}}, +/* 14695 */ {(16<<2)|3,{111,101,104}}, +/* 14696 */ {(16<<2)|3,{111,101,108}}, +/* 14697 */ {(16<<2)|3,{111,101,109}}, +/* 14698 */ {(16<<2)|3,{111,101,110}}, +/* 14699 */ {(16<<2)|3,{111,101,112}}, +/* 14700 */ {(16<<2)|3,{111,101,114}}, +/* 14701 */ {(16<<2)|3,{111,101,117}}, +/* 14702 */ {(10<<2)|2,{111,101,0}}, +/* 14703 */ {(10<<2)|2,{111,101,0}}, +/* 14704 */ {(10<<2)|2,{111,101,0}}, +/* 14705 */ {(10<<2)|2,{111,101,0}}, +/* 14706 */ {(10<<2)|2,{111,101,0}}, +/* 14707 */ {(10<<2)|2,{111,101,0}}, +/* 14708 */ {(10<<2)|2,{111,101,0}}, +/* 14709 */ {(10<<2)|2,{111,101,0}}, +/* 14710 */ {(10<<2)|2,{111,101,0}}, +/* 14711 */ {(10<<2)|2,{111,101,0}}, +/* 14712 */ {(10<<2)|2,{111,101,0}}, +/* 14713 */ {(10<<2)|2,{111,101,0}}, +/* 14714 */ {(10<<2)|2,{111,101,0}}, +/* 14715 */ {(10<<2)|2,{111,101,0}}, +/* 14716 */ {(10<<2)|2,{111,101,0}}, +/* 14717 */ {(10<<2)|2,{111,101,0}}, +/* 14718 */ {(10<<2)|2,{111,101,0}}, +/* 14719 */ {(10<<2)|2,{111,101,0}}, +/* 14720 */ {(15<<2)|3,{111,105,48}}, +/* 14721 */ {(15<<2)|3,{111,105,48}}, +/* 14722 */ {(15<<2)|3,{111,105,49}}, +/* 14723 */ {(15<<2)|3,{111,105,49}}, +/* 14724 */ {(15<<2)|3,{111,105,50}}, +/* 14725 */ {(15<<2)|3,{111,105,50}}, +/* 14726 */ {(15<<2)|3,{111,105,97}}, +/* 14727 */ {(15<<2)|3,{111,105,97}}, +/* 14728 */ {(15<<2)|3,{111,105,99}}, +/* 14729 */ {(15<<2)|3,{111,105,99}}, +/* 14730 */ {(15<<2)|3,{111,105,101}}, +/* 14731 */ {(15<<2)|3,{111,105,101}}, +/* 14732 */ {(15<<2)|3,{111,105,105}}, +/* 14733 */ {(15<<2)|3,{111,105,105}}, +/* 14734 */ {(15<<2)|3,{111,105,111}}, +/* 14735 */ {(15<<2)|3,{111,105,111}}, +/* 14736 */ {(15<<2)|3,{111,105,115}}, +/* 14737 */ {(15<<2)|3,{111,105,115}}, +/* 14738 */ {(15<<2)|3,{111,105,116}}, +/* 14739 */ {(15<<2)|3,{111,105,116}}, +/* 14740 */ {(16<<2)|3,{111,105,32}}, +/* 14741 */ {(16<<2)|3,{111,105,37}}, +/* 14742 */ {(16<<2)|3,{111,105,45}}, +/* 14743 */ {(16<<2)|3,{111,105,46}}, +/* 14744 */ {(16<<2)|3,{111,105,47}}, +/* 14745 */ {(16<<2)|3,{111,105,51}}, +/* 14746 */ {(16<<2)|3,{111,105,52}}, +/* 14747 */ {(16<<2)|3,{111,105,53}}, +/* 14748 */ {(16<<2)|3,{111,105,54}}, +/* 14749 */ {(16<<2)|3,{111,105,55}}, +/* 14750 */ {(16<<2)|3,{111,105,56}}, +/* 14751 */ {(16<<2)|3,{111,105,57}}, +/* 14752 */ {(16<<2)|3,{111,105,61}}, +/* 14753 */ {(16<<2)|3,{111,105,65}}, +/* 14754 */ {(16<<2)|3,{111,105,95}}, +/* 14755 */ {(16<<2)|3,{111,105,98}}, +/* 14756 */ {(16<<2)|3,{111,105,100}}, +/* 14757 */ {(16<<2)|3,{111,105,102}}, +/* 14758 */ {(16<<2)|3,{111,105,103}}, +/* 14759 */ {(16<<2)|3,{111,105,104}}, +/* 14760 */ {(16<<2)|3,{111,105,108}}, +/* 14761 */ {(16<<2)|3,{111,105,109}}, +/* 14762 */ {(16<<2)|3,{111,105,110}}, +/* 14763 */ {(16<<2)|3,{111,105,112}}, +/* 14764 */ {(16<<2)|3,{111,105,114}}, +/* 14765 */ {(16<<2)|3,{111,105,117}}, +/* 14766 */ {(10<<2)|2,{111,105,0}}, +/* 14767 */ {(10<<2)|2,{111,105,0}}, +/* 14768 */ {(10<<2)|2,{111,105,0}}, +/* 14769 */ {(10<<2)|2,{111,105,0}}, +/* 14770 */ {(10<<2)|2,{111,105,0}}, +/* 14771 */ {(10<<2)|2,{111,105,0}}, +/* 14772 */ {(10<<2)|2,{111,105,0}}, +/* 14773 */ {(10<<2)|2,{111,105,0}}, +/* 14774 */ {(10<<2)|2,{111,105,0}}, +/* 14775 */ {(10<<2)|2,{111,105,0}}, +/* 14776 */ {(10<<2)|2,{111,105,0}}, +/* 14777 */ {(10<<2)|2,{111,105,0}}, +/* 14778 */ {(10<<2)|2,{111,105,0}}, +/* 14779 */ {(10<<2)|2,{111,105,0}}, +/* 14780 */ {(10<<2)|2,{111,105,0}}, +/* 14781 */ {(10<<2)|2,{111,105,0}}, +/* 14782 */ {(10<<2)|2,{111,105,0}}, +/* 14783 */ {(10<<2)|2,{111,105,0}}, +/* 14784 */ {(15<<2)|3,{111,111,48}}, +/* 14785 */ {(15<<2)|3,{111,111,48}}, +/* 14786 */ {(15<<2)|3,{111,111,49}}, +/* 14787 */ {(15<<2)|3,{111,111,49}}, +/* 14788 */ {(15<<2)|3,{111,111,50}}, +/* 14789 */ {(15<<2)|3,{111,111,50}}, +/* 14790 */ {(15<<2)|3,{111,111,97}}, +/* 14791 */ {(15<<2)|3,{111,111,97}}, +/* 14792 */ {(15<<2)|3,{111,111,99}}, +/* 14793 */ {(15<<2)|3,{111,111,99}}, +/* 14794 */ {(15<<2)|3,{111,111,101}}, +/* 14795 */ {(15<<2)|3,{111,111,101}}, +/* 14796 */ {(15<<2)|3,{111,111,105}}, +/* 14797 */ {(15<<2)|3,{111,111,105}}, +/* 14798 */ {(15<<2)|3,{111,111,111}}, +/* 14799 */ {(15<<2)|3,{111,111,111}}, +/* 14800 */ {(15<<2)|3,{111,111,115}}, +/* 14801 */ {(15<<2)|3,{111,111,115}}, +/* 14802 */ {(15<<2)|3,{111,111,116}}, +/* 14803 */ {(15<<2)|3,{111,111,116}}, +/* 14804 */ {(16<<2)|3,{111,111,32}}, +/* 14805 */ {(16<<2)|3,{111,111,37}}, +/* 14806 */ {(16<<2)|3,{111,111,45}}, +/* 14807 */ {(16<<2)|3,{111,111,46}}, +/* 14808 */ {(16<<2)|3,{111,111,47}}, +/* 14809 */ {(16<<2)|3,{111,111,51}}, +/* 14810 */ {(16<<2)|3,{111,111,52}}, +/* 14811 */ {(16<<2)|3,{111,111,53}}, +/* 14812 */ {(16<<2)|3,{111,111,54}}, +/* 14813 */ {(16<<2)|3,{111,111,55}}, +/* 14814 */ {(16<<2)|3,{111,111,56}}, +/* 14815 */ {(16<<2)|3,{111,111,57}}, +/* 14816 */ {(16<<2)|3,{111,111,61}}, +/* 14817 */ {(16<<2)|3,{111,111,65}}, +/* 14818 */ {(16<<2)|3,{111,111,95}}, +/* 14819 */ {(16<<2)|3,{111,111,98}}, +/* 14820 */ {(16<<2)|3,{111,111,100}}, +/* 14821 */ {(16<<2)|3,{111,111,102}}, +/* 14822 */ {(16<<2)|3,{111,111,103}}, +/* 14823 */ {(16<<2)|3,{111,111,104}}, +/* 14824 */ {(16<<2)|3,{111,111,108}}, +/* 14825 */ {(16<<2)|3,{111,111,109}}, +/* 14826 */ {(16<<2)|3,{111,111,110}}, +/* 14827 */ {(16<<2)|3,{111,111,112}}, +/* 14828 */ {(16<<2)|3,{111,111,114}}, +/* 14829 */ {(16<<2)|3,{111,111,117}}, +/* 14830 */ {(10<<2)|2,{111,111,0}}, +/* 14831 */ {(10<<2)|2,{111,111,0}}, +/* 14832 */ {(10<<2)|2,{111,111,0}}, +/* 14833 */ {(10<<2)|2,{111,111,0}}, +/* 14834 */ {(10<<2)|2,{111,111,0}}, +/* 14835 */ {(10<<2)|2,{111,111,0}}, +/* 14836 */ {(10<<2)|2,{111,111,0}}, +/* 14837 */ {(10<<2)|2,{111,111,0}}, +/* 14838 */ {(10<<2)|2,{111,111,0}}, +/* 14839 */ {(10<<2)|2,{111,111,0}}, +/* 14840 */ {(10<<2)|2,{111,111,0}}, +/* 14841 */ {(10<<2)|2,{111,111,0}}, +/* 14842 */ {(10<<2)|2,{111,111,0}}, +/* 14843 */ {(10<<2)|2,{111,111,0}}, +/* 14844 */ {(10<<2)|2,{111,111,0}}, +/* 14845 */ {(10<<2)|2,{111,111,0}}, +/* 14846 */ {(10<<2)|2,{111,111,0}}, +/* 14847 */ {(10<<2)|2,{111,111,0}}, +/* 14848 */ {(15<<2)|3,{111,115,48}}, +/* 14849 */ {(15<<2)|3,{111,115,48}}, +/* 14850 */ {(15<<2)|3,{111,115,49}}, +/* 14851 */ {(15<<2)|3,{111,115,49}}, +/* 14852 */ {(15<<2)|3,{111,115,50}}, +/* 14853 */ {(15<<2)|3,{111,115,50}}, +/* 14854 */ {(15<<2)|3,{111,115,97}}, +/* 14855 */ {(15<<2)|3,{111,115,97}}, +/* 14856 */ {(15<<2)|3,{111,115,99}}, +/* 14857 */ {(15<<2)|3,{111,115,99}}, +/* 14858 */ {(15<<2)|3,{111,115,101}}, +/* 14859 */ {(15<<2)|3,{111,115,101}}, +/* 14860 */ {(15<<2)|3,{111,115,105}}, +/* 14861 */ {(15<<2)|3,{111,115,105}}, +/* 14862 */ {(15<<2)|3,{111,115,111}}, +/* 14863 */ {(15<<2)|3,{111,115,111}}, +/* 14864 */ {(15<<2)|3,{111,115,115}}, +/* 14865 */ {(15<<2)|3,{111,115,115}}, +/* 14866 */ {(15<<2)|3,{111,115,116}}, +/* 14867 */ {(15<<2)|3,{111,115,116}}, +/* 14868 */ {(16<<2)|3,{111,115,32}}, +/* 14869 */ {(16<<2)|3,{111,115,37}}, +/* 14870 */ {(16<<2)|3,{111,115,45}}, +/* 14871 */ {(16<<2)|3,{111,115,46}}, +/* 14872 */ {(16<<2)|3,{111,115,47}}, +/* 14873 */ {(16<<2)|3,{111,115,51}}, +/* 14874 */ {(16<<2)|3,{111,115,52}}, +/* 14875 */ {(16<<2)|3,{111,115,53}}, +/* 14876 */ {(16<<2)|3,{111,115,54}}, +/* 14877 */ {(16<<2)|3,{111,115,55}}, +/* 14878 */ {(16<<2)|3,{111,115,56}}, +/* 14879 */ {(16<<2)|3,{111,115,57}}, +/* 14880 */ {(16<<2)|3,{111,115,61}}, +/* 14881 */ {(16<<2)|3,{111,115,65}}, +/* 14882 */ {(16<<2)|3,{111,115,95}}, +/* 14883 */ {(16<<2)|3,{111,115,98}}, +/* 14884 */ {(16<<2)|3,{111,115,100}}, +/* 14885 */ {(16<<2)|3,{111,115,102}}, +/* 14886 */ {(16<<2)|3,{111,115,103}}, +/* 14887 */ {(16<<2)|3,{111,115,104}}, +/* 14888 */ {(16<<2)|3,{111,115,108}}, +/* 14889 */ {(16<<2)|3,{111,115,109}}, +/* 14890 */ {(16<<2)|3,{111,115,110}}, +/* 14891 */ {(16<<2)|3,{111,115,112}}, +/* 14892 */ {(16<<2)|3,{111,115,114}}, +/* 14893 */ {(16<<2)|3,{111,115,117}}, +/* 14894 */ {(10<<2)|2,{111,115,0}}, +/* 14895 */ {(10<<2)|2,{111,115,0}}, +/* 14896 */ {(10<<2)|2,{111,115,0}}, +/* 14897 */ {(10<<2)|2,{111,115,0}}, +/* 14898 */ {(10<<2)|2,{111,115,0}}, +/* 14899 */ {(10<<2)|2,{111,115,0}}, +/* 14900 */ {(10<<2)|2,{111,115,0}}, +/* 14901 */ {(10<<2)|2,{111,115,0}}, +/* 14902 */ {(10<<2)|2,{111,115,0}}, +/* 14903 */ {(10<<2)|2,{111,115,0}}, +/* 14904 */ {(10<<2)|2,{111,115,0}}, +/* 14905 */ {(10<<2)|2,{111,115,0}}, +/* 14906 */ {(10<<2)|2,{111,115,0}}, +/* 14907 */ {(10<<2)|2,{111,115,0}}, +/* 14908 */ {(10<<2)|2,{111,115,0}}, +/* 14909 */ {(10<<2)|2,{111,115,0}}, +/* 14910 */ {(10<<2)|2,{111,115,0}}, +/* 14911 */ {(10<<2)|2,{111,115,0}}, +/* 14912 */ {(15<<2)|3,{111,116,48}}, +/* 14913 */ {(15<<2)|3,{111,116,48}}, +/* 14914 */ {(15<<2)|3,{111,116,49}}, +/* 14915 */ {(15<<2)|3,{111,116,49}}, +/* 14916 */ {(15<<2)|3,{111,116,50}}, +/* 14917 */ {(15<<2)|3,{111,116,50}}, +/* 14918 */ {(15<<2)|3,{111,116,97}}, +/* 14919 */ {(15<<2)|3,{111,116,97}}, +/* 14920 */ {(15<<2)|3,{111,116,99}}, +/* 14921 */ {(15<<2)|3,{111,116,99}}, +/* 14922 */ {(15<<2)|3,{111,116,101}}, +/* 14923 */ {(15<<2)|3,{111,116,101}}, +/* 14924 */ {(15<<2)|3,{111,116,105}}, +/* 14925 */ {(15<<2)|3,{111,116,105}}, +/* 14926 */ {(15<<2)|3,{111,116,111}}, +/* 14927 */ {(15<<2)|3,{111,116,111}}, +/* 14928 */ {(15<<2)|3,{111,116,115}}, +/* 14929 */ {(15<<2)|3,{111,116,115}}, +/* 14930 */ {(15<<2)|3,{111,116,116}}, +/* 14931 */ {(15<<2)|3,{111,116,116}}, +/* 14932 */ {(16<<2)|3,{111,116,32}}, +/* 14933 */ {(16<<2)|3,{111,116,37}}, +/* 14934 */ {(16<<2)|3,{111,116,45}}, +/* 14935 */ {(16<<2)|3,{111,116,46}}, +/* 14936 */ {(16<<2)|3,{111,116,47}}, +/* 14937 */ {(16<<2)|3,{111,116,51}}, +/* 14938 */ {(16<<2)|3,{111,116,52}}, +/* 14939 */ {(16<<2)|3,{111,116,53}}, +/* 14940 */ {(16<<2)|3,{111,116,54}}, +/* 14941 */ {(16<<2)|3,{111,116,55}}, +/* 14942 */ {(16<<2)|3,{111,116,56}}, +/* 14943 */ {(16<<2)|3,{111,116,57}}, +/* 14944 */ {(16<<2)|3,{111,116,61}}, +/* 14945 */ {(16<<2)|3,{111,116,65}}, +/* 14946 */ {(16<<2)|3,{111,116,95}}, +/* 14947 */ {(16<<2)|3,{111,116,98}}, +/* 14948 */ {(16<<2)|3,{111,116,100}}, +/* 14949 */ {(16<<2)|3,{111,116,102}}, +/* 14950 */ {(16<<2)|3,{111,116,103}}, +/* 14951 */ {(16<<2)|3,{111,116,104}}, +/* 14952 */ {(16<<2)|3,{111,116,108}}, +/* 14953 */ {(16<<2)|3,{111,116,109}}, +/* 14954 */ {(16<<2)|3,{111,116,110}}, +/* 14955 */ {(16<<2)|3,{111,116,112}}, +/* 14956 */ {(16<<2)|3,{111,116,114}}, +/* 14957 */ {(16<<2)|3,{111,116,117}}, +/* 14958 */ {(10<<2)|2,{111,116,0}}, +/* 14959 */ {(10<<2)|2,{111,116,0}}, +/* 14960 */ {(10<<2)|2,{111,116,0}}, +/* 14961 */ {(10<<2)|2,{111,116,0}}, +/* 14962 */ {(10<<2)|2,{111,116,0}}, +/* 14963 */ {(10<<2)|2,{111,116,0}}, +/* 14964 */ {(10<<2)|2,{111,116,0}}, +/* 14965 */ {(10<<2)|2,{111,116,0}}, +/* 14966 */ {(10<<2)|2,{111,116,0}}, +/* 14967 */ {(10<<2)|2,{111,116,0}}, +/* 14968 */ {(10<<2)|2,{111,116,0}}, +/* 14969 */ {(10<<2)|2,{111,116,0}}, +/* 14970 */ {(10<<2)|2,{111,116,0}}, +/* 14971 */ {(10<<2)|2,{111,116,0}}, +/* 14972 */ {(10<<2)|2,{111,116,0}}, +/* 14973 */ {(10<<2)|2,{111,116,0}}, +/* 14974 */ {(10<<2)|2,{111,116,0}}, +/* 14975 */ {(10<<2)|2,{111,116,0}}, +/* 14976 */ {(16<<2)|3,{111,32,48}}, +/* 14977 */ {(16<<2)|3,{111,32,49}}, +/* 14978 */ {(16<<2)|3,{111,32,50}}, +/* 14979 */ {(16<<2)|3,{111,32,97}}, +/* 14980 */ {(16<<2)|3,{111,32,99}}, +/* 14981 */ {(16<<2)|3,{111,32,101}}, +/* 14982 */ {(16<<2)|3,{111,32,105}}, +/* 14983 */ {(16<<2)|3,{111,32,111}}, +/* 14984 */ {(16<<2)|3,{111,32,115}}, +/* 14985 */ {(16<<2)|3,{111,32,116}}, +/* 14986 */ {(11<<2)|2,{111,32,0}}, +/* 14987 */ {(11<<2)|2,{111,32,0}}, +/* 14988 */ {(11<<2)|2,{111,32,0}}, +/* 14989 */ {(11<<2)|2,{111,32,0}}, +/* 14990 */ {(11<<2)|2,{111,32,0}}, +/* 14991 */ {(11<<2)|2,{111,32,0}}, +/* 14992 */ {(11<<2)|2,{111,32,0}}, +/* 14993 */ {(11<<2)|2,{111,32,0}}, +/* 14994 */ {(11<<2)|2,{111,32,0}}, +/* 14995 */ {(11<<2)|2,{111,32,0}}, +/* 14996 */ {(11<<2)|2,{111,32,0}}, +/* 14997 */ {(11<<2)|2,{111,32,0}}, +/* 14998 */ {(11<<2)|2,{111,32,0}}, +/* 14999 */ {(11<<2)|2,{111,32,0}}, +/* 15000 */ {(11<<2)|2,{111,32,0}}, +/* 15001 */ {(11<<2)|2,{111,32,0}}, +/* 15002 */ {(11<<2)|2,{111,32,0}}, +/* 15003 */ {(11<<2)|2,{111,32,0}}, +/* 15004 */ {(11<<2)|2,{111,32,0}}, +/* 15005 */ {(11<<2)|2,{111,32,0}}, +/* 15006 */ {(11<<2)|2,{111,32,0}}, +/* 15007 */ {(11<<2)|2,{111,32,0}}, +/* 15008 */ {(16<<2)|3,{111,37,48}}, +/* 15009 */ {(16<<2)|3,{111,37,49}}, +/* 15010 */ {(16<<2)|3,{111,37,50}}, +/* 15011 */ {(16<<2)|3,{111,37,97}}, +/* 15012 */ {(16<<2)|3,{111,37,99}}, +/* 15013 */ {(16<<2)|3,{111,37,101}}, +/* 15014 */ {(16<<2)|3,{111,37,105}}, +/* 15015 */ {(16<<2)|3,{111,37,111}}, +/* 15016 */ {(16<<2)|3,{111,37,115}}, +/* 15017 */ {(16<<2)|3,{111,37,116}}, +/* 15018 */ {(11<<2)|2,{111,37,0}}, +/* 15019 */ {(11<<2)|2,{111,37,0}}, +/* 15020 */ {(11<<2)|2,{111,37,0}}, +/* 15021 */ {(11<<2)|2,{111,37,0}}, +/* 15022 */ {(11<<2)|2,{111,37,0}}, +/* 15023 */ {(11<<2)|2,{111,37,0}}, +/* 15024 */ {(11<<2)|2,{111,37,0}}, +/* 15025 */ {(11<<2)|2,{111,37,0}}, +/* 15026 */ {(11<<2)|2,{111,37,0}}, +/* 15027 */ {(11<<2)|2,{111,37,0}}, +/* 15028 */ {(11<<2)|2,{111,37,0}}, +/* 15029 */ {(11<<2)|2,{111,37,0}}, +/* 15030 */ {(11<<2)|2,{111,37,0}}, +/* 15031 */ {(11<<2)|2,{111,37,0}}, +/* 15032 */ {(11<<2)|2,{111,37,0}}, +/* 15033 */ {(11<<2)|2,{111,37,0}}, +/* 15034 */ {(11<<2)|2,{111,37,0}}, +/* 15035 */ {(11<<2)|2,{111,37,0}}, +/* 15036 */ {(11<<2)|2,{111,37,0}}, +/* 15037 */ {(11<<2)|2,{111,37,0}}, +/* 15038 */ {(11<<2)|2,{111,37,0}}, +/* 15039 */ {(11<<2)|2,{111,37,0}}, +/* 15040 */ {(16<<2)|3,{111,45,48}}, +/* 15041 */ {(16<<2)|3,{111,45,49}}, +/* 15042 */ {(16<<2)|3,{111,45,50}}, +/* 15043 */ {(16<<2)|3,{111,45,97}}, +/* 15044 */ {(16<<2)|3,{111,45,99}}, +/* 15045 */ {(16<<2)|3,{111,45,101}}, +/* 15046 */ {(16<<2)|3,{111,45,105}}, +/* 15047 */ {(16<<2)|3,{111,45,111}}, +/* 15048 */ {(16<<2)|3,{111,45,115}}, +/* 15049 */ {(16<<2)|3,{111,45,116}}, +/* 15050 */ {(11<<2)|2,{111,45,0}}, +/* 15051 */ {(11<<2)|2,{111,45,0}}, +/* 15052 */ {(11<<2)|2,{111,45,0}}, +/* 15053 */ {(11<<2)|2,{111,45,0}}, +/* 15054 */ {(11<<2)|2,{111,45,0}}, +/* 15055 */ {(11<<2)|2,{111,45,0}}, +/* 15056 */ {(11<<2)|2,{111,45,0}}, +/* 15057 */ {(11<<2)|2,{111,45,0}}, +/* 15058 */ {(11<<2)|2,{111,45,0}}, +/* 15059 */ {(11<<2)|2,{111,45,0}}, +/* 15060 */ {(11<<2)|2,{111,45,0}}, +/* 15061 */ {(11<<2)|2,{111,45,0}}, +/* 15062 */ {(11<<2)|2,{111,45,0}}, +/* 15063 */ {(11<<2)|2,{111,45,0}}, +/* 15064 */ {(11<<2)|2,{111,45,0}}, +/* 15065 */ {(11<<2)|2,{111,45,0}}, +/* 15066 */ {(11<<2)|2,{111,45,0}}, +/* 15067 */ {(11<<2)|2,{111,45,0}}, +/* 15068 */ {(11<<2)|2,{111,45,0}}, +/* 15069 */ {(11<<2)|2,{111,45,0}}, +/* 15070 */ {(11<<2)|2,{111,45,0}}, +/* 15071 */ {(11<<2)|2,{111,45,0}}, +/* 15072 */ {(16<<2)|3,{111,46,48}}, +/* 15073 */ {(16<<2)|3,{111,46,49}}, +/* 15074 */ {(16<<2)|3,{111,46,50}}, +/* 15075 */ {(16<<2)|3,{111,46,97}}, +/* 15076 */ {(16<<2)|3,{111,46,99}}, +/* 15077 */ {(16<<2)|3,{111,46,101}}, +/* 15078 */ {(16<<2)|3,{111,46,105}}, +/* 15079 */ {(16<<2)|3,{111,46,111}}, +/* 15080 */ {(16<<2)|3,{111,46,115}}, +/* 15081 */ {(16<<2)|3,{111,46,116}}, +/* 15082 */ {(11<<2)|2,{111,46,0}}, +/* 15083 */ {(11<<2)|2,{111,46,0}}, +/* 15084 */ {(11<<2)|2,{111,46,0}}, +/* 15085 */ {(11<<2)|2,{111,46,0}}, +/* 15086 */ {(11<<2)|2,{111,46,0}}, +/* 15087 */ {(11<<2)|2,{111,46,0}}, +/* 15088 */ {(11<<2)|2,{111,46,0}}, +/* 15089 */ {(11<<2)|2,{111,46,0}}, +/* 15090 */ {(11<<2)|2,{111,46,0}}, +/* 15091 */ {(11<<2)|2,{111,46,0}}, +/* 15092 */ {(11<<2)|2,{111,46,0}}, +/* 15093 */ {(11<<2)|2,{111,46,0}}, +/* 15094 */ {(11<<2)|2,{111,46,0}}, +/* 15095 */ {(11<<2)|2,{111,46,0}}, +/* 15096 */ {(11<<2)|2,{111,46,0}}, +/* 15097 */ {(11<<2)|2,{111,46,0}}, +/* 15098 */ {(11<<2)|2,{111,46,0}}, +/* 15099 */ {(11<<2)|2,{111,46,0}}, +/* 15100 */ {(11<<2)|2,{111,46,0}}, +/* 15101 */ {(11<<2)|2,{111,46,0}}, +/* 15102 */ {(11<<2)|2,{111,46,0}}, +/* 15103 */ {(11<<2)|2,{111,46,0}}, +/* 15104 */ {(16<<2)|3,{111,47,48}}, +/* 15105 */ {(16<<2)|3,{111,47,49}}, +/* 15106 */ {(16<<2)|3,{111,47,50}}, +/* 15107 */ {(16<<2)|3,{111,47,97}}, +/* 15108 */ {(16<<2)|3,{111,47,99}}, +/* 15109 */ {(16<<2)|3,{111,47,101}}, +/* 15110 */ {(16<<2)|3,{111,47,105}}, +/* 15111 */ {(16<<2)|3,{111,47,111}}, +/* 15112 */ {(16<<2)|3,{111,47,115}}, +/* 15113 */ {(16<<2)|3,{111,47,116}}, +/* 15114 */ {(11<<2)|2,{111,47,0}}, +/* 15115 */ {(11<<2)|2,{111,47,0}}, +/* 15116 */ {(11<<2)|2,{111,47,0}}, +/* 15117 */ {(11<<2)|2,{111,47,0}}, +/* 15118 */ {(11<<2)|2,{111,47,0}}, +/* 15119 */ {(11<<2)|2,{111,47,0}}, +/* 15120 */ {(11<<2)|2,{111,47,0}}, +/* 15121 */ {(11<<2)|2,{111,47,0}}, +/* 15122 */ {(11<<2)|2,{111,47,0}}, +/* 15123 */ {(11<<2)|2,{111,47,0}}, +/* 15124 */ {(11<<2)|2,{111,47,0}}, +/* 15125 */ {(11<<2)|2,{111,47,0}}, +/* 15126 */ {(11<<2)|2,{111,47,0}}, +/* 15127 */ {(11<<2)|2,{111,47,0}}, +/* 15128 */ {(11<<2)|2,{111,47,0}}, +/* 15129 */ {(11<<2)|2,{111,47,0}}, +/* 15130 */ {(11<<2)|2,{111,47,0}}, +/* 15131 */ {(11<<2)|2,{111,47,0}}, +/* 15132 */ {(11<<2)|2,{111,47,0}}, +/* 15133 */ {(11<<2)|2,{111,47,0}}, +/* 15134 */ {(11<<2)|2,{111,47,0}}, +/* 15135 */ {(11<<2)|2,{111,47,0}}, +/* 15136 */ {(16<<2)|3,{111,51,48}}, +/* 15137 */ {(16<<2)|3,{111,51,49}}, +/* 15138 */ {(16<<2)|3,{111,51,50}}, +/* 15139 */ {(16<<2)|3,{111,51,97}}, +/* 15140 */ {(16<<2)|3,{111,51,99}}, +/* 15141 */ {(16<<2)|3,{111,51,101}}, +/* 15142 */ {(16<<2)|3,{111,51,105}}, +/* 15143 */ {(16<<2)|3,{111,51,111}}, +/* 15144 */ {(16<<2)|3,{111,51,115}}, +/* 15145 */ {(16<<2)|3,{111,51,116}}, +/* 15146 */ {(11<<2)|2,{111,51,0}}, +/* 15147 */ {(11<<2)|2,{111,51,0}}, +/* 15148 */ {(11<<2)|2,{111,51,0}}, +/* 15149 */ {(11<<2)|2,{111,51,0}}, +/* 15150 */ {(11<<2)|2,{111,51,0}}, +/* 15151 */ {(11<<2)|2,{111,51,0}}, +/* 15152 */ {(11<<2)|2,{111,51,0}}, +/* 15153 */ {(11<<2)|2,{111,51,0}}, +/* 15154 */ {(11<<2)|2,{111,51,0}}, +/* 15155 */ {(11<<2)|2,{111,51,0}}, +/* 15156 */ {(11<<2)|2,{111,51,0}}, +/* 15157 */ {(11<<2)|2,{111,51,0}}, +/* 15158 */ {(11<<2)|2,{111,51,0}}, +/* 15159 */ {(11<<2)|2,{111,51,0}}, +/* 15160 */ {(11<<2)|2,{111,51,0}}, +/* 15161 */ {(11<<2)|2,{111,51,0}}, +/* 15162 */ {(11<<2)|2,{111,51,0}}, +/* 15163 */ {(11<<2)|2,{111,51,0}}, +/* 15164 */ {(11<<2)|2,{111,51,0}}, +/* 15165 */ {(11<<2)|2,{111,51,0}}, +/* 15166 */ {(11<<2)|2,{111,51,0}}, +/* 15167 */ {(11<<2)|2,{111,51,0}}, +/* 15168 */ {(16<<2)|3,{111,52,48}}, +/* 15169 */ {(16<<2)|3,{111,52,49}}, +/* 15170 */ {(16<<2)|3,{111,52,50}}, +/* 15171 */ {(16<<2)|3,{111,52,97}}, +/* 15172 */ {(16<<2)|3,{111,52,99}}, +/* 15173 */ {(16<<2)|3,{111,52,101}}, +/* 15174 */ {(16<<2)|3,{111,52,105}}, +/* 15175 */ {(16<<2)|3,{111,52,111}}, +/* 15176 */ {(16<<2)|3,{111,52,115}}, +/* 15177 */ {(16<<2)|3,{111,52,116}}, +/* 15178 */ {(11<<2)|2,{111,52,0}}, +/* 15179 */ {(11<<2)|2,{111,52,0}}, +/* 15180 */ {(11<<2)|2,{111,52,0}}, +/* 15181 */ {(11<<2)|2,{111,52,0}}, +/* 15182 */ {(11<<2)|2,{111,52,0}}, +/* 15183 */ {(11<<2)|2,{111,52,0}}, +/* 15184 */ {(11<<2)|2,{111,52,0}}, +/* 15185 */ {(11<<2)|2,{111,52,0}}, +/* 15186 */ {(11<<2)|2,{111,52,0}}, +/* 15187 */ {(11<<2)|2,{111,52,0}}, +/* 15188 */ {(11<<2)|2,{111,52,0}}, +/* 15189 */ {(11<<2)|2,{111,52,0}}, +/* 15190 */ {(11<<2)|2,{111,52,0}}, +/* 15191 */ {(11<<2)|2,{111,52,0}}, +/* 15192 */ {(11<<2)|2,{111,52,0}}, +/* 15193 */ {(11<<2)|2,{111,52,0}}, +/* 15194 */ {(11<<2)|2,{111,52,0}}, +/* 15195 */ {(11<<2)|2,{111,52,0}}, +/* 15196 */ {(11<<2)|2,{111,52,0}}, +/* 15197 */ {(11<<2)|2,{111,52,0}}, +/* 15198 */ {(11<<2)|2,{111,52,0}}, +/* 15199 */ {(11<<2)|2,{111,52,0}}, +/* 15200 */ {(16<<2)|3,{111,53,48}}, +/* 15201 */ {(16<<2)|3,{111,53,49}}, +/* 15202 */ {(16<<2)|3,{111,53,50}}, +/* 15203 */ {(16<<2)|3,{111,53,97}}, +/* 15204 */ {(16<<2)|3,{111,53,99}}, +/* 15205 */ {(16<<2)|3,{111,53,101}}, +/* 15206 */ {(16<<2)|3,{111,53,105}}, +/* 15207 */ {(16<<2)|3,{111,53,111}}, +/* 15208 */ {(16<<2)|3,{111,53,115}}, +/* 15209 */ {(16<<2)|3,{111,53,116}}, +/* 15210 */ {(11<<2)|2,{111,53,0}}, +/* 15211 */ {(11<<2)|2,{111,53,0}}, +/* 15212 */ {(11<<2)|2,{111,53,0}}, +/* 15213 */ {(11<<2)|2,{111,53,0}}, +/* 15214 */ {(11<<2)|2,{111,53,0}}, +/* 15215 */ {(11<<2)|2,{111,53,0}}, +/* 15216 */ {(11<<2)|2,{111,53,0}}, +/* 15217 */ {(11<<2)|2,{111,53,0}}, +/* 15218 */ {(11<<2)|2,{111,53,0}}, +/* 15219 */ {(11<<2)|2,{111,53,0}}, +/* 15220 */ {(11<<2)|2,{111,53,0}}, +/* 15221 */ {(11<<2)|2,{111,53,0}}, +/* 15222 */ {(11<<2)|2,{111,53,0}}, +/* 15223 */ {(11<<2)|2,{111,53,0}}, +/* 15224 */ {(11<<2)|2,{111,53,0}}, +/* 15225 */ {(11<<2)|2,{111,53,0}}, +/* 15226 */ {(11<<2)|2,{111,53,0}}, +/* 15227 */ {(11<<2)|2,{111,53,0}}, +/* 15228 */ {(11<<2)|2,{111,53,0}}, +/* 15229 */ {(11<<2)|2,{111,53,0}}, +/* 15230 */ {(11<<2)|2,{111,53,0}}, +/* 15231 */ {(11<<2)|2,{111,53,0}}, +/* 15232 */ {(16<<2)|3,{111,54,48}}, +/* 15233 */ {(16<<2)|3,{111,54,49}}, +/* 15234 */ {(16<<2)|3,{111,54,50}}, +/* 15235 */ {(16<<2)|3,{111,54,97}}, +/* 15236 */ {(16<<2)|3,{111,54,99}}, +/* 15237 */ {(16<<2)|3,{111,54,101}}, +/* 15238 */ {(16<<2)|3,{111,54,105}}, +/* 15239 */ {(16<<2)|3,{111,54,111}}, +/* 15240 */ {(16<<2)|3,{111,54,115}}, +/* 15241 */ {(16<<2)|3,{111,54,116}}, +/* 15242 */ {(11<<2)|2,{111,54,0}}, +/* 15243 */ {(11<<2)|2,{111,54,0}}, +/* 15244 */ {(11<<2)|2,{111,54,0}}, +/* 15245 */ {(11<<2)|2,{111,54,0}}, +/* 15246 */ {(11<<2)|2,{111,54,0}}, +/* 15247 */ {(11<<2)|2,{111,54,0}}, +/* 15248 */ {(11<<2)|2,{111,54,0}}, +/* 15249 */ {(11<<2)|2,{111,54,0}}, +/* 15250 */ {(11<<2)|2,{111,54,0}}, +/* 15251 */ {(11<<2)|2,{111,54,0}}, +/* 15252 */ {(11<<2)|2,{111,54,0}}, +/* 15253 */ {(11<<2)|2,{111,54,0}}, +/* 15254 */ {(11<<2)|2,{111,54,0}}, +/* 15255 */ {(11<<2)|2,{111,54,0}}, +/* 15256 */ {(11<<2)|2,{111,54,0}}, +/* 15257 */ {(11<<2)|2,{111,54,0}}, +/* 15258 */ {(11<<2)|2,{111,54,0}}, +/* 15259 */ {(11<<2)|2,{111,54,0}}, +/* 15260 */ {(11<<2)|2,{111,54,0}}, +/* 15261 */ {(11<<2)|2,{111,54,0}}, +/* 15262 */ {(11<<2)|2,{111,54,0}}, +/* 15263 */ {(11<<2)|2,{111,54,0}}, +/* 15264 */ {(16<<2)|3,{111,55,48}}, +/* 15265 */ {(16<<2)|3,{111,55,49}}, +/* 15266 */ {(16<<2)|3,{111,55,50}}, +/* 15267 */ {(16<<2)|3,{111,55,97}}, +/* 15268 */ {(16<<2)|3,{111,55,99}}, +/* 15269 */ {(16<<2)|3,{111,55,101}}, +/* 15270 */ {(16<<2)|3,{111,55,105}}, +/* 15271 */ {(16<<2)|3,{111,55,111}}, +/* 15272 */ {(16<<2)|3,{111,55,115}}, +/* 15273 */ {(16<<2)|3,{111,55,116}}, +/* 15274 */ {(11<<2)|2,{111,55,0}}, +/* 15275 */ {(11<<2)|2,{111,55,0}}, +/* 15276 */ {(11<<2)|2,{111,55,0}}, +/* 15277 */ {(11<<2)|2,{111,55,0}}, +/* 15278 */ {(11<<2)|2,{111,55,0}}, +/* 15279 */ {(11<<2)|2,{111,55,0}}, +/* 15280 */ {(11<<2)|2,{111,55,0}}, +/* 15281 */ {(11<<2)|2,{111,55,0}}, +/* 15282 */ {(11<<2)|2,{111,55,0}}, +/* 15283 */ {(11<<2)|2,{111,55,0}}, +/* 15284 */ {(11<<2)|2,{111,55,0}}, +/* 15285 */ {(11<<2)|2,{111,55,0}}, +/* 15286 */ {(11<<2)|2,{111,55,0}}, +/* 15287 */ {(11<<2)|2,{111,55,0}}, +/* 15288 */ {(11<<2)|2,{111,55,0}}, +/* 15289 */ {(11<<2)|2,{111,55,0}}, +/* 15290 */ {(11<<2)|2,{111,55,0}}, +/* 15291 */ {(11<<2)|2,{111,55,0}}, +/* 15292 */ {(11<<2)|2,{111,55,0}}, +/* 15293 */ {(11<<2)|2,{111,55,0}}, +/* 15294 */ {(11<<2)|2,{111,55,0}}, +/* 15295 */ {(11<<2)|2,{111,55,0}}, +/* 15296 */ {(16<<2)|3,{111,56,48}}, +/* 15297 */ {(16<<2)|3,{111,56,49}}, +/* 15298 */ {(16<<2)|3,{111,56,50}}, +/* 15299 */ {(16<<2)|3,{111,56,97}}, +/* 15300 */ {(16<<2)|3,{111,56,99}}, +/* 15301 */ {(16<<2)|3,{111,56,101}}, +/* 15302 */ {(16<<2)|3,{111,56,105}}, +/* 15303 */ {(16<<2)|3,{111,56,111}}, +/* 15304 */ {(16<<2)|3,{111,56,115}}, +/* 15305 */ {(16<<2)|3,{111,56,116}}, +/* 15306 */ {(11<<2)|2,{111,56,0}}, +/* 15307 */ {(11<<2)|2,{111,56,0}}, +/* 15308 */ {(11<<2)|2,{111,56,0}}, +/* 15309 */ {(11<<2)|2,{111,56,0}}, +/* 15310 */ {(11<<2)|2,{111,56,0}}, +/* 15311 */ {(11<<2)|2,{111,56,0}}, +/* 15312 */ {(11<<2)|2,{111,56,0}}, +/* 15313 */ {(11<<2)|2,{111,56,0}}, +/* 15314 */ {(11<<2)|2,{111,56,0}}, +/* 15315 */ {(11<<2)|2,{111,56,0}}, +/* 15316 */ {(11<<2)|2,{111,56,0}}, +/* 15317 */ {(11<<2)|2,{111,56,0}}, +/* 15318 */ {(11<<2)|2,{111,56,0}}, +/* 15319 */ {(11<<2)|2,{111,56,0}}, +/* 15320 */ {(11<<2)|2,{111,56,0}}, +/* 15321 */ {(11<<2)|2,{111,56,0}}, +/* 15322 */ {(11<<2)|2,{111,56,0}}, +/* 15323 */ {(11<<2)|2,{111,56,0}}, +/* 15324 */ {(11<<2)|2,{111,56,0}}, +/* 15325 */ {(11<<2)|2,{111,56,0}}, +/* 15326 */ {(11<<2)|2,{111,56,0}}, +/* 15327 */ {(11<<2)|2,{111,56,0}}, +/* 15328 */ {(16<<2)|3,{111,57,48}}, +/* 15329 */ {(16<<2)|3,{111,57,49}}, +/* 15330 */ {(16<<2)|3,{111,57,50}}, +/* 15331 */ {(16<<2)|3,{111,57,97}}, +/* 15332 */ {(16<<2)|3,{111,57,99}}, +/* 15333 */ {(16<<2)|3,{111,57,101}}, +/* 15334 */ {(16<<2)|3,{111,57,105}}, +/* 15335 */ {(16<<2)|3,{111,57,111}}, +/* 15336 */ {(16<<2)|3,{111,57,115}}, +/* 15337 */ {(16<<2)|3,{111,57,116}}, +/* 15338 */ {(11<<2)|2,{111,57,0}}, +/* 15339 */ {(11<<2)|2,{111,57,0}}, +/* 15340 */ {(11<<2)|2,{111,57,0}}, +/* 15341 */ {(11<<2)|2,{111,57,0}}, +/* 15342 */ {(11<<2)|2,{111,57,0}}, +/* 15343 */ {(11<<2)|2,{111,57,0}}, +/* 15344 */ {(11<<2)|2,{111,57,0}}, +/* 15345 */ {(11<<2)|2,{111,57,0}}, +/* 15346 */ {(11<<2)|2,{111,57,0}}, +/* 15347 */ {(11<<2)|2,{111,57,0}}, +/* 15348 */ {(11<<2)|2,{111,57,0}}, +/* 15349 */ {(11<<2)|2,{111,57,0}}, +/* 15350 */ {(11<<2)|2,{111,57,0}}, +/* 15351 */ {(11<<2)|2,{111,57,0}}, +/* 15352 */ {(11<<2)|2,{111,57,0}}, +/* 15353 */ {(11<<2)|2,{111,57,0}}, +/* 15354 */ {(11<<2)|2,{111,57,0}}, +/* 15355 */ {(11<<2)|2,{111,57,0}}, +/* 15356 */ {(11<<2)|2,{111,57,0}}, +/* 15357 */ {(11<<2)|2,{111,57,0}}, +/* 15358 */ {(11<<2)|2,{111,57,0}}, +/* 15359 */ {(11<<2)|2,{111,57,0}}, +/* 15360 */ {(16<<2)|3,{111,61,48}}, +/* 15361 */ {(16<<2)|3,{111,61,49}}, +/* 15362 */ {(16<<2)|3,{111,61,50}}, +/* 15363 */ {(16<<2)|3,{111,61,97}}, +/* 15364 */ {(16<<2)|3,{111,61,99}}, +/* 15365 */ {(16<<2)|3,{111,61,101}}, +/* 15366 */ {(16<<2)|3,{111,61,105}}, +/* 15367 */ {(16<<2)|3,{111,61,111}}, +/* 15368 */ {(16<<2)|3,{111,61,115}}, +/* 15369 */ {(16<<2)|3,{111,61,116}}, +/* 15370 */ {(11<<2)|2,{111,61,0}}, +/* 15371 */ {(11<<2)|2,{111,61,0}}, +/* 15372 */ {(11<<2)|2,{111,61,0}}, +/* 15373 */ {(11<<2)|2,{111,61,0}}, +/* 15374 */ {(11<<2)|2,{111,61,0}}, +/* 15375 */ {(11<<2)|2,{111,61,0}}, +/* 15376 */ {(11<<2)|2,{111,61,0}}, +/* 15377 */ {(11<<2)|2,{111,61,0}}, +/* 15378 */ {(11<<2)|2,{111,61,0}}, +/* 15379 */ {(11<<2)|2,{111,61,0}}, +/* 15380 */ {(11<<2)|2,{111,61,0}}, +/* 15381 */ {(11<<2)|2,{111,61,0}}, +/* 15382 */ {(11<<2)|2,{111,61,0}}, +/* 15383 */ {(11<<2)|2,{111,61,0}}, +/* 15384 */ {(11<<2)|2,{111,61,0}}, +/* 15385 */ {(11<<2)|2,{111,61,0}}, +/* 15386 */ {(11<<2)|2,{111,61,0}}, +/* 15387 */ {(11<<2)|2,{111,61,0}}, +/* 15388 */ {(11<<2)|2,{111,61,0}}, +/* 15389 */ {(11<<2)|2,{111,61,0}}, +/* 15390 */ {(11<<2)|2,{111,61,0}}, +/* 15391 */ {(11<<2)|2,{111,61,0}}, +/* 15392 */ {(16<<2)|3,{111,65,48}}, +/* 15393 */ {(16<<2)|3,{111,65,49}}, +/* 15394 */ {(16<<2)|3,{111,65,50}}, +/* 15395 */ {(16<<2)|3,{111,65,97}}, +/* 15396 */ {(16<<2)|3,{111,65,99}}, +/* 15397 */ {(16<<2)|3,{111,65,101}}, +/* 15398 */ {(16<<2)|3,{111,65,105}}, +/* 15399 */ {(16<<2)|3,{111,65,111}}, +/* 15400 */ {(16<<2)|3,{111,65,115}}, +/* 15401 */ {(16<<2)|3,{111,65,116}}, +/* 15402 */ {(11<<2)|2,{111,65,0}}, +/* 15403 */ {(11<<2)|2,{111,65,0}}, +/* 15404 */ {(11<<2)|2,{111,65,0}}, +/* 15405 */ {(11<<2)|2,{111,65,0}}, +/* 15406 */ {(11<<2)|2,{111,65,0}}, +/* 15407 */ {(11<<2)|2,{111,65,0}}, +/* 15408 */ {(11<<2)|2,{111,65,0}}, +/* 15409 */ {(11<<2)|2,{111,65,0}}, +/* 15410 */ {(11<<2)|2,{111,65,0}}, +/* 15411 */ {(11<<2)|2,{111,65,0}}, +/* 15412 */ {(11<<2)|2,{111,65,0}}, +/* 15413 */ {(11<<2)|2,{111,65,0}}, +/* 15414 */ {(11<<2)|2,{111,65,0}}, +/* 15415 */ {(11<<2)|2,{111,65,0}}, +/* 15416 */ {(11<<2)|2,{111,65,0}}, +/* 15417 */ {(11<<2)|2,{111,65,0}}, +/* 15418 */ {(11<<2)|2,{111,65,0}}, +/* 15419 */ {(11<<2)|2,{111,65,0}}, +/* 15420 */ {(11<<2)|2,{111,65,0}}, +/* 15421 */ {(11<<2)|2,{111,65,0}}, +/* 15422 */ {(11<<2)|2,{111,65,0}}, +/* 15423 */ {(11<<2)|2,{111,65,0}}, +/* 15424 */ {(16<<2)|3,{111,95,48}}, +/* 15425 */ {(16<<2)|3,{111,95,49}}, +/* 15426 */ {(16<<2)|3,{111,95,50}}, +/* 15427 */ {(16<<2)|3,{111,95,97}}, +/* 15428 */ {(16<<2)|3,{111,95,99}}, +/* 15429 */ {(16<<2)|3,{111,95,101}}, +/* 15430 */ {(16<<2)|3,{111,95,105}}, +/* 15431 */ {(16<<2)|3,{111,95,111}}, +/* 15432 */ {(16<<2)|3,{111,95,115}}, +/* 15433 */ {(16<<2)|3,{111,95,116}}, +/* 15434 */ {(11<<2)|2,{111,95,0}}, +/* 15435 */ {(11<<2)|2,{111,95,0}}, +/* 15436 */ {(11<<2)|2,{111,95,0}}, +/* 15437 */ {(11<<2)|2,{111,95,0}}, +/* 15438 */ {(11<<2)|2,{111,95,0}}, +/* 15439 */ {(11<<2)|2,{111,95,0}}, +/* 15440 */ {(11<<2)|2,{111,95,0}}, +/* 15441 */ {(11<<2)|2,{111,95,0}}, +/* 15442 */ {(11<<2)|2,{111,95,0}}, +/* 15443 */ {(11<<2)|2,{111,95,0}}, +/* 15444 */ {(11<<2)|2,{111,95,0}}, +/* 15445 */ {(11<<2)|2,{111,95,0}}, +/* 15446 */ {(11<<2)|2,{111,95,0}}, +/* 15447 */ {(11<<2)|2,{111,95,0}}, +/* 15448 */ {(11<<2)|2,{111,95,0}}, +/* 15449 */ {(11<<2)|2,{111,95,0}}, +/* 15450 */ {(11<<2)|2,{111,95,0}}, +/* 15451 */ {(11<<2)|2,{111,95,0}}, +/* 15452 */ {(11<<2)|2,{111,95,0}}, +/* 15453 */ {(11<<2)|2,{111,95,0}}, +/* 15454 */ {(11<<2)|2,{111,95,0}}, +/* 15455 */ {(11<<2)|2,{111,95,0}}, +/* 15456 */ {(16<<2)|3,{111,98,48}}, +/* 15457 */ {(16<<2)|3,{111,98,49}}, +/* 15458 */ {(16<<2)|3,{111,98,50}}, +/* 15459 */ {(16<<2)|3,{111,98,97}}, +/* 15460 */ {(16<<2)|3,{111,98,99}}, +/* 15461 */ {(16<<2)|3,{111,98,101}}, +/* 15462 */ {(16<<2)|3,{111,98,105}}, +/* 15463 */ {(16<<2)|3,{111,98,111}}, +/* 15464 */ {(16<<2)|3,{111,98,115}}, +/* 15465 */ {(16<<2)|3,{111,98,116}}, +/* 15466 */ {(11<<2)|2,{111,98,0}}, +/* 15467 */ {(11<<2)|2,{111,98,0}}, +/* 15468 */ {(11<<2)|2,{111,98,0}}, +/* 15469 */ {(11<<2)|2,{111,98,0}}, +/* 15470 */ {(11<<2)|2,{111,98,0}}, +/* 15471 */ {(11<<2)|2,{111,98,0}}, +/* 15472 */ {(11<<2)|2,{111,98,0}}, +/* 15473 */ {(11<<2)|2,{111,98,0}}, +/* 15474 */ {(11<<2)|2,{111,98,0}}, +/* 15475 */ {(11<<2)|2,{111,98,0}}, +/* 15476 */ {(11<<2)|2,{111,98,0}}, +/* 15477 */ {(11<<2)|2,{111,98,0}}, +/* 15478 */ {(11<<2)|2,{111,98,0}}, +/* 15479 */ {(11<<2)|2,{111,98,0}}, +/* 15480 */ {(11<<2)|2,{111,98,0}}, +/* 15481 */ {(11<<2)|2,{111,98,0}}, +/* 15482 */ {(11<<2)|2,{111,98,0}}, +/* 15483 */ {(11<<2)|2,{111,98,0}}, +/* 15484 */ {(11<<2)|2,{111,98,0}}, +/* 15485 */ {(11<<2)|2,{111,98,0}}, +/* 15486 */ {(11<<2)|2,{111,98,0}}, +/* 15487 */ {(11<<2)|2,{111,98,0}}, +/* 15488 */ {(16<<2)|3,{111,100,48}}, +/* 15489 */ {(16<<2)|3,{111,100,49}}, +/* 15490 */ {(16<<2)|3,{111,100,50}}, +/* 15491 */ {(16<<2)|3,{111,100,97}}, +/* 15492 */ {(16<<2)|3,{111,100,99}}, +/* 15493 */ {(16<<2)|3,{111,100,101}}, +/* 15494 */ {(16<<2)|3,{111,100,105}}, +/* 15495 */ {(16<<2)|3,{111,100,111}}, +/* 15496 */ {(16<<2)|3,{111,100,115}}, +/* 15497 */ {(16<<2)|3,{111,100,116}}, +/* 15498 */ {(11<<2)|2,{111,100,0}}, +/* 15499 */ {(11<<2)|2,{111,100,0}}, +/* 15500 */ {(11<<2)|2,{111,100,0}}, +/* 15501 */ {(11<<2)|2,{111,100,0}}, +/* 15502 */ {(11<<2)|2,{111,100,0}}, +/* 15503 */ {(11<<2)|2,{111,100,0}}, +/* 15504 */ {(11<<2)|2,{111,100,0}}, +/* 15505 */ {(11<<2)|2,{111,100,0}}, +/* 15506 */ {(11<<2)|2,{111,100,0}}, +/* 15507 */ {(11<<2)|2,{111,100,0}}, +/* 15508 */ {(11<<2)|2,{111,100,0}}, +/* 15509 */ {(11<<2)|2,{111,100,0}}, +/* 15510 */ {(11<<2)|2,{111,100,0}}, +/* 15511 */ {(11<<2)|2,{111,100,0}}, +/* 15512 */ {(11<<2)|2,{111,100,0}}, +/* 15513 */ {(11<<2)|2,{111,100,0}}, +/* 15514 */ {(11<<2)|2,{111,100,0}}, +/* 15515 */ {(11<<2)|2,{111,100,0}}, +/* 15516 */ {(11<<2)|2,{111,100,0}}, +/* 15517 */ {(11<<2)|2,{111,100,0}}, +/* 15518 */ {(11<<2)|2,{111,100,0}}, +/* 15519 */ {(11<<2)|2,{111,100,0}}, +/* 15520 */ {(16<<2)|3,{111,102,48}}, +/* 15521 */ {(16<<2)|3,{111,102,49}}, +/* 15522 */ {(16<<2)|3,{111,102,50}}, +/* 15523 */ {(16<<2)|3,{111,102,97}}, +/* 15524 */ {(16<<2)|3,{111,102,99}}, +/* 15525 */ {(16<<2)|3,{111,102,101}}, +/* 15526 */ {(16<<2)|3,{111,102,105}}, +/* 15527 */ {(16<<2)|3,{111,102,111}}, +/* 15528 */ {(16<<2)|3,{111,102,115}}, +/* 15529 */ {(16<<2)|3,{111,102,116}}, +/* 15530 */ {(11<<2)|2,{111,102,0}}, +/* 15531 */ {(11<<2)|2,{111,102,0}}, +/* 15532 */ {(11<<2)|2,{111,102,0}}, +/* 15533 */ {(11<<2)|2,{111,102,0}}, +/* 15534 */ {(11<<2)|2,{111,102,0}}, +/* 15535 */ {(11<<2)|2,{111,102,0}}, +/* 15536 */ {(11<<2)|2,{111,102,0}}, +/* 15537 */ {(11<<2)|2,{111,102,0}}, +/* 15538 */ {(11<<2)|2,{111,102,0}}, +/* 15539 */ {(11<<2)|2,{111,102,0}}, +/* 15540 */ {(11<<2)|2,{111,102,0}}, +/* 15541 */ {(11<<2)|2,{111,102,0}}, +/* 15542 */ {(11<<2)|2,{111,102,0}}, +/* 15543 */ {(11<<2)|2,{111,102,0}}, +/* 15544 */ {(11<<2)|2,{111,102,0}}, +/* 15545 */ {(11<<2)|2,{111,102,0}}, +/* 15546 */ {(11<<2)|2,{111,102,0}}, +/* 15547 */ {(11<<2)|2,{111,102,0}}, +/* 15548 */ {(11<<2)|2,{111,102,0}}, +/* 15549 */ {(11<<2)|2,{111,102,0}}, +/* 15550 */ {(11<<2)|2,{111,102,0}}, +/* 15551 */ {(11<<2)|2,{111,102,0}}, +/* 15552 */ {(16<<2)|3,{111,103,48}}, +/* 15553 */ {(16<<2)|3,{111,103,49}}, +/* 15554 */ {(16<<2)|3,{111,103,50}}, +/* 15555 */ {(16<<2)|3,{111,103,97}}, +/* 15556 */ {(16<<2)|3,{111,103,99}}, +/* 15557 */ {(16<<2)|3,{111,103,101}}, +/* 15558 */ {(16<<2)|3,{111,103,105}}, +/* 15559 */ {(16<<2)|3,{111,103,111}}, +/* 15560 */ {(16<<2)|3,{111,103,115}}, +/* 15561 */ {(16<<2)|3,{111,103,116}}, +/* 15562 */ {(11<<2)|2,{111,103,0}}, +/* 15563 */ {(11<<2)|2,{111,103,0}}, +/* 15564 */ {(11<<2)|2,{111,103,0}}, +/* 15565 */ {(11<<2)|2,{111,103,0}}, +/* 15566 */ {(11<<2)|2,{111,103,0}}, +/* 15567 */ {(11<<2)|2,{111,103,0}}, +/* 15568 */ {(11<<2)|2,{111,103,0}}, +/* 15569 */ {(11<<2)|2,{111,103,0}}, +/* 15570 */ {(11<<2)|2,{111,103,0}}, +/* 15571 */ {(11<<2)|2,{111,103,0}}, +/* 15572 */ {(11<<2)|2,{111,103,0}}, +/* 15573 */ {(11<<2)|2,{111,103,0}}, +/* 15574 */ {(11<<2)|2,{111,103,0}}, +/* 15575 */ {(11<<2)|2,{111,103,0}}, +/* 15576 */ {(11<<2)|2,{111,103,0}}, +/* 15577 */ {(11<<2)|2,{111,103,0}}, +/* 15578 */ {(11<<2)|2,{111,103,0}}, +/* 15579 */ {(11<<2)|2,{111,103,0}}, +/* 15580 */ {(11<<2)|2,{111,103,0}}, +/* 15581 */ {(11<<2)|2,{111,103,0}}, +/* 15582 */ {(11<<2)|2,{111,103,0}}, +/* 15583 */ {(11<<2)|2,{111,103,0}}, +/* 15584 */ {(16<<2)|3,{111,104,48}}, +/* 15585 */ {(16<<2)|3,{111,104,49}}, +/* 15586 */ {(16<<2)|3,{111,104,50}}, +/* 15587 */ {(16<<2)|3,{111,104,97}}, +/* 15588 */ {(16<<2)|3,{111,104,99}}, +/* 15589 */ {(16<<2)|3,{111,104,101}}, +/* 15590 */ {(16<<2)|3,{111,104,105}}, +/* 15591 */ {(16<<2)|3,{111,104,111}}, +/* 15592 */ {(16<<2)|3,{111,104,115}}, +/* 15593 */ {(16<<2)|3,{111,104,116}}, +/* 15594 */ {(11<<2)|2,{111,104,0}}, +/* 15595 */ {(11<<2)|2,{111,104,0}}, +/* 15596 */ {(11<<2)|2,{111,104,0}}, +/* 15597 */ {(11<<2)|2,{111,104,0}}, +/* 15598 */ {(11<<2)|2,{111,104,0}}, +/* 15599 */ {(11<<2)|2,{111,104,0}}, +/* 15600 */ {(11<<2)|2,{111,104,0}}, +/* 15601 */ {(11<<2)|2,{111,104,0}}, +/* 15602 */ {(11<<2)|2,{111,104,0}}, +/* 15603 */ {(11<<2)|2,{111,104,0}}, +/* 15604 */ {(11<<2)|2,{111,104,0}}, +/* 15605 */ {(11<<2)|2,{111,104,0}}, +/* 15606 */ {(11<<2)|2,{111,104,0}}, +/* 15607 */ {(11<<2)|2,{111,104,0}}, +/* 15608 */ {(11<<2)|2,{111,104,0}}, +/* 15609 */ {(11<<2)|2,{111,104,0}}, +/* 15610 */ {(11<<2)|2,{111,104,0}}, +/* 15611 */ {(11<<2)|2,{111,104,0}}, +/* 15612 */ {(11<<2)|2,{111,104,0}}, +/* 15613 */ {(11<<2)|2,{111,104,0}}, +/* 15614 */ {(11<<2)|2,{111,104,0}}, +/* 15615 */ {(11<<2)|2,{111,104,0}}, +/* 15616 */ {(16<<2)|3,{111,108,48}}, +/* 15617 */ {(16<<2)|3,{111,108,49}}, +/* 15618 */ {(16<<2)|3,{111,108,50}}, +/* 15619 */ {(16<<2)|3,{111,108,97}}, +/* 15620 */ {(16<<2)|3,{111,108,99}}, +/* 15621 */ {(16<<2)|3,{111,108,101}}, +/* 15622 */ {(16<<2)|3,{111,108,105}}, +/* 15623 */ {(16<<2)|3,{111,108,111}}, +/* 15624 */ {(16<<2)|3,{111,108,115}}, +/* 15625 */ {(16<<2)|3,{111,108,116}}, +/* 15626 */ {(11<<2)|2,{111,108,0}}, +/* 15627 */ {(11<<2)|2,{111,108,0}}, +/* 15628 */ {(11<<2)|2,{111,108,0}}, +/* 15629 */ {(11<<2)|2,{111,108,0}}, +/* 15630 */ {(11<<2)|2,{111,108,0}}, +/* 15631 */ {(11<<2)|2,{111,108,0}}, +/* 15632 */ {(11<<2)|2,{111,108,0}}, +/* 15633 */ {(11<<2)|2,{111,108,0}}, +/* 15634 */ {(11<<2)|2,{111,108,0}}, +/* 15635 */ {(11<<2)|2,{111,108,0}}, +/* 15636 */ {(11<<2)|2,{111,108,0}}, +/* 15637 */ {(11<<2)|2,{111,108,0}}, +/* 15638 */ {(11<<2)|2,{111,108,0}}, +/* 15639 */ {(11<<2)|2,{111,108,0}}, +/* 15640 */ {(11<<2)|2,{111,108,0}}, +/* 15641 */ {(11<<2)|2,{111,108,0}}, +/* 15642 */ {(11<<2)|2,{111,108,0}}, +/* 15643 */ {(11<<2)|2,{111,108,0}}, +/* 15644 */ {(11<<2)|2,{111,108,0}}, +/* 15645 */ {(11<<2)|2,{111,108,0}}, +/* 15646 */ {(11<<2)|2,{111,108,0}}, +/* 15647 */ {(11<<2)|2,{111,108,0}}, +/* 15648 */ {(16<<2)|3,{111,109,48}}, +/* 15649 */ {(16<<2)|3,{111,109,49}}, +/* 15650 */ {(16<<2)|3,{111,109,50}}, +/* 15651 */ {(16<<2)|3,{111,109,97}}, +/* 15652 */ {(16<<2)|3,{111,109,99}}, +/* 15653 */ {(16<<2)|3,{111,109,101}}, +/* 15654 */ {(16<<2)|3,{111,109,105}}, +/* 15655 */ {(16<<2)|3,{111,109,111}}, +/* 15656 */ {(16<<2)|3,{111,109,115}}, +/* 15657 */ {(16<<2)|3,{111,109,116}}, +/* 15658 */ {(11<<2)|2,{111,109,0}}, +/* 15659 */ {(11<<2)|2,{111,109,0}}, +/* 15660 */ {(11<<2)|2,{111,109,0}}, +/* 15661 */ {(11<<2)|2,{111,109,0}}, +/* 15662 */ {(11<<2)|2,{111,109,0}}, +/* 15663 */ {(11<<2)|2,{111,109,0}}, +/* 15664 */ {(11<<2)|2,{111,109,0}}, +/* 15665 */ {(11<<2)|2,{111,109,0}}, +/* 15666 */ {(11<<2)|2,{111,109,0}}, +/* 15667 */ {(11<<2)|2,{111,109,0}}, +/* 15668 */ {(11<<2)|2,{111,109,0}}, +/* 15669 */ {(11<<2)|2,{111,109,0}}, +/* 15670 */ {(11<<2)|2,{111,109,0}}, +/* 15671 */ {(11<<2)|2,{111,109,0}}, +/* 15672 */ {(11<<2)|2,{111,109,0}}, +/* 15673 */ {(11<<2)|2,{111,109,0}}, +/* 15674 */ {(11<<2)|2,{111,109,0}}, +/* 15675 */ {(11<<2)|2,{111,109,0}}, +/* 15676 */ {(11<<2)|2,{111,109,0}}, +/* 15677 */ {(11<<2)|2,{111,109,0}}, +/* 15678 */ {(11<<2)|2,{111,109,0}}, +/* 15679 */ {(11<<2)|2,{111,109,0}}, +/* 15680 */ {(16<<2)|3,{111,110,48}}, +/* 15681 */ {(16<<2)|3,{111,110,49}}, +/* 15682 */ {(16<<2)|3,{111,110,50}}, +/* 15683 */ {(16<<2)|3,{111,110,97}}, +/* 15684 */ {(16<<2)|3,{111,110,99}}, +/* 15685 */ {(16<<2)|3,{111,110,101}}, +/* 15686 */ {(16<<2)|3,{111,110,105}}, +/* 15687 */ {(16<<2)|3,{111,110,111}}, +/* 15688 */ {(16<<2)|3,{111,110,115}}, +/* 15689 */ {(16<<2)|3,{111,110,116}}, +/* 15690 */ {(11<<2)|2,{111,110,0}}, +/* 15691 */ {(11<<2)|2,{111,110,0}}, +/* 15692 */ {(11<<2)|2,{111,110,0}}, +/* 15693 */ {(11<<2)|2,{111,110,0}}, +/* 15694 */ {(11<<2)|2,{111,110,0}}, +/* 15695 */ {(11<<2)|2,{111,110,0}}, +/* 15696 */ {(11<<2)|2,{111,110,0}}, +/* 15697 */ {(11<<2)|2,{111,110,0}}, +/* 15698 */ {(11<<2)|2,{111,110,0}}, +/* 15699 */ {(11<<2)|2,{111,110,0}}, +/* 15700 */ {(11<<2)|2,{111,110,0}}, +/* 15701 */ {(11<<2)|2,{111,110,0}}, +/* 15702 */ {(11<<2)|2,{111,110,0}}, +/* 15703 */ {(11<<2)|2,{111,110,0}}, +/* 15704 */ {(11<<2)|2,{111,110,0}}, +/* 15705 */ {(11<<2)|2,{111,110,0}}, +/* 15706 */ {(11<<2)|2,{111,110,0}}, +/* 15707 */ {(11<<2)|2,{111,110,0}}, +/* 15708 */ {(11<<2)|2,{111,110,0}}, +/* 15709 */ {(11<<2)|2,{111,110,0}}, +/* 15710 */ {(11<<2)|2,{111,110,0}}, +/* 15711 */ {(11<<2)|2,{111,110,0}}, +/* 15712 */ {(16<<2)|3,{111,112,48}}, +/* 15713 */ {(16<<2)|3,{111,112,49}}, +/* 15714 */ {(16<<2)|3,{111,112,50}}, +/* 15715 */ {(16<<2)|3,{111,112,97}}, +/* 15716 */ {(16<<2)|3,{111,112,99}}, +/* 15717 */ {(16<<2)|3,{111,112,101}}, +/* 15718 */ {(16<<2)|3,{111,112,105}}, +/* 15719 */ {(16<<2)|3,{111,112,111}}, +/* 15720 */ {(16<<2)|3,{111,112,115}}, +/* 15721 */ {(16<<2)|3,{111,112,116}}, +/* 15722 */ {(11<<2)|2,{111,112,0}}, +/* 15723 */ {(11<<2)|2,{111,112,0}}, +/* 15724 */ {(11<<2)|2,{111,112,0}}, +/* 15725 */ {(11<<2)|2,{111,112,0}}, +/* 15726 */ {(11<<2)|2,{111,112,0}}, +/* 15727 */ {(11<<2)|2,{111,112,0}}, +/* 15728 */ {(11<<2)|2,{111,112,0}}, +/* 15729 */ {(11<<2)|2,{111,112,0}}, +/* 15730 */ {(11<<2)|2,{111,112,0}}, +/* 15731 */ {(11<<2)|2,{111,112,0}}, +/* 15732 */ {(11<<2)|2,{111,112,0}}, +/* 15733 */ {(11<<2)|2,{111,112,0}}, +/* 15734 */ {(11<<2)|2,{111,112,0}}, +/* 15735 */ {(11<<2)|2,{111,112,0}}, +/* 15736 */ {(11<<2)|2,{111,112,0}}, +/* 15737 */ {(11<<2)|2,{111,112,0}}, +/* 15738 */ {(11<<2)|2,{111,112,0}}, +/* 15739 */ {(11<<2)|2,{111,112,0}}, +/* 15740 */ {(11<<2)|2,{111,112,0}}, +/* 15741 */ {(11<<2)|2,{111,112,0}}, +/* 15742 */ {(11<<2)|2,{111,112,0}}, +/* 15743 */ {(11<<2)|2,{111,112,0}}, +/* 15744 */ {(16<<2)|3,{111,114,48}}, +/* 15745 */ {(16<<2)|3,{111,114,49}}, +/* 15746 */ {(16<<2)|3,{111,114,50}}, +/* 15747 */ {(16<<2)|3,{111,114,97}}, +/* 15748 */ {(16<<2)|3,{111,114,99}}, +/* 15749 */ {(16<<2)|3,{111,114,101}}, +/* 15750 */ {(16<<2)|3,{111,114,105}}, +/* 15751 */ {(16<<2)|3,{111,114,111}}, +/* 15752 */ {(16<<2)|3,{111,114,115}}, +/* 15753 */ {(16<<2)|3,{111,114,116}}, +/* 15754 */ {(11<<2)|2,{111,114,0}}, +/* 15755 */ {(11<<2)|2,{111,114,0}}, +/* 15756 */ {(11<<2)|2,{111,114,0}}, +/* 15757 */ {(11<<2)|2,{111,114,0}}, +/* 15758 */ {(11<<2)|2,{111,114,0}}, +/* 15759 */ {(11<<2)|2,{111,114,0}}, +/* 15760 */ {(11<<2)|2,{111,114,0}}, +/* 15761 */ {(11<<2)|2,{111,114,0}}, +/* 15762 */ {(11<<2)|2,{111,114,0}}, +/* 15763 */ {(11<<2)|2,{111,114,0}}, +/* 15764 */ {(11<<2)|2,{111,114,0}}, +/* 15765 */ {(11<<2)|2,{111,114,0}}, +/* 15766 */ {(11<<2)|2,{111,114,0}}, +/* 15767 */ {(11<<2)|2,{111,114,0}}, +/* 15768 */ {(11<<2)|2,{111,114,0}}, +/* 15769 */ {(11<<2)|2,{111,114,0}}, +/* 15770 */ {(11<<2)|2,{111,114,0}}, +/* 15771 */ {(11<<2)|2,{111,114,0}}, +/* 15772 */ {(11<<2)|2,{111,114,0}}, +/* 15773 */ {(11<<2)|2,{111,114,0}}, +/* 15774 */ {(11<<2)|2,{111,114,0}}, +/* 15775 */ {(11<<2)|2,{111,114,0}}, +/* 15776 */ {(16<<2)|3,{111,117,48}}, +/* 15777 */ {(16<<2)|3,{111,117,49}}, +/* 15778 */ {(16<<2)|3,{111,117,50}}, +/* 15779 */ {(16<<2)|3,{111,117,97}}, +/* 15780 */ {(16<<2)|3,{111,117,99}}, +/* 15781 */ {(16<<2)|3,{111,117,101}}, +/* 15782 */ {(16<<2)|3,{111,117,105}}, +/* 15783 */ {(16<<2)|3,{111,117,111}}, +/* 15784 */ {(16<<2)|3,{111,117,115}}, +/* 15785 */ {(16<<2)|3,{111,117,116}}, +/* 15786 */ {(11<<2)|2,{111,117,0}}, +/* 15787 */ {(11<<2)|2,{111,117,0}}, +/* 15788 */ {(11<<2)|2,{111,117,0}}, +/* 15789 */ {(11<<2)|2,{111,117,0}}, +/* 15790 */ {(11<<2)|2,{111,117,0}}, +/* 15791 */ {(11<<2)|2,{111,117,0}}, +/* 15792 */ {(11<<2)|2,{111,117,0}}, +/* 15793 */ {(11<<2)|2,{111,117,0}}, +/* 15794 */ {(11<<2)|2,{111,117,0}}, +/* 15795 */ {(11<<2)|2,{111,117,0}}, +/* 15796 */ {(11<<2)|2,{111,117,0}}, +/* 15797 */ {(11<<2)|2,{111,117,0}}, +/* 15798 */ {(11<<2)|2,{111,117,0}}, +/* 15799 */ {(11<<2)|2,{111,117,0}}, +/* 15800 */ {(11<<2)|2,{111,117,0}}, +/* 15801 */ {(11<<2)|2,{111,117,0}}, +/* 15802 */ {(11<<2)|2,{111,117,0}}, +/* 15803 */ {(11<<2)|2,{111,117,0}}, +/* 15804 */ {(11<<2)|2,{111,117,0}}, +/* 15805 */ {(11<<2)|2,{111,117,0}}, +/* 15806 */ {(11<<2)|2,{111,117,0}}, +/* 15807 */ {(11<<2)|2,{111,117,0}}, +/* 15808 */ {(12<<2)|2,{111,58,0}}, +/* 15809 */ {(12<<2)|2,{111,58,0}}, +/* 15810 */ {(12<<2)|2,{111,58,0}}, +/* 15811 */ {(12<<2)|2,{111,58,0}}, +/* 15812 */ {(12<<2)|2,{111,58,0}}, +/* 15813 */ {(12<<2)|2,{111,58,0}}, +/* 15814 */ {(12<<2)|2,{111,58,0}}, +/* 15815 */ {(12<<2)|2,{111,58,0}}, +/* 15816 */ {(12<<2)|2,{111,58,0}}, +/* 15817 */ {(12<<2)|2,{111,58,0}}, +/* 15818 */ {(12<<2)|2,{111,58,0}}, +/* 15819 */ {(12<<2)|2,{111,58,0}}, +/* 15820 */ {(12<<2)|2,{111,58,0}}, +/* 15821 */ {(12<<2)|2,{111,58,0}}, +/* 15822 */ {(12<<2)|2,{111,58,0}}, +/* 15823 */ {(12<<2)|2,{111,58,0}}, +/* 15824 */ {(12<<2)|2,{111,66,0}}, +/* 15825 */ {(12<<2)|2,{111,66,0}}, +/* 15826 */ {(12<<2)|2,{111,66,0}}, +/* 15827 */ {(12<<2)|2,{111,66,0}}, +/* 15828 */ {(12<<2)|2,{111,66,0}}, +/* 15829 */ {(12<<2)|2,{111,66,0}}, +/* 15830 */ {(12<<2)|2,{111,66,0}}, +/* 15831 */ {(12<<2)|2,{111,66,0}}, +/* 15832 */ {(12<<2)|2,{111,66,0}}, +/* 15833 */ {(12<<2)|2,{111,66,0}}, +/* 15834 */ {(12<<2)|2,{111,66,0}}, +/* 15835 */ {(12<<2)|2,{111,66,0}}, +/* 15836 */ {(12<<2)|2,{111,66,0}}, +/* 15837 */ {(12<<2)|2,{111,66,0}}, +/* 15838 */ {(12<<2)|2,{111,66,0}}, +/* 15839 */ {(12<<2)|2,{111,66,0}}, +/* 15840 */ {(12<<2)|2,{111,67,0}}, +/* 15841 */ {(12<<2)|2,{111,67,0}}, +/* 15842 */ {(12<<2)|2,{111,67,0}}, +/* 15843 */ {(12<<2)|2,{111,67,0}}, +/* 15844 */ {(12<<2)|2,{111,67,0}}, +/* 15845 */ {(12<<2)|2,{111,67,0}}, +/* 15846 */ {(12<<2)|2,{111,67,0}}, +/* 15847 */ {(12<<2)|2,{111,67,0}}, +/* 15848 */ {(12<<2)|2,{111,67,0}}, +/* 15849 */ {(12<<2)|2,{111,67,0}}, +/* 15850 */ {(12<<2)|2,{111,67,0}}, +/* 15851 */ {(12<<2)|2,{111,67,0}}, +/* 15852 */ {(12<<2)|2,{111,67,0}}, +/* 15853 */ {(12<<2)|2,{111,67,0}}, +/* 15854 */ {(12<<2)|2,{111,67,0}}, +/* 15855 */ {(12<<2)|2,{111,67,0}}, +/* 15856 */ {(12<<2)|2,{111,68,0}}, +/* 15857 */ {(12<<2)|2,{111,68,0}}, +/* 15858 */ {(12<<2)|2,{111,68,0}}, +/* 15859 */ {(12<<2)|2,{111,68,0}}, +/* 15860 */ {(12<<2)|2,{111,68,0}}, +/* 15861 */ {(12<<2)|2,{111,68,0}}, +/* 15862 */ {(12<<2)|2,{111,68,0}}, +/* 15863 */ {(12<<2)|2,{111,68,0}}, +/* 15864 */ {(12<<2)|2,{111,68,0}}, +/* 15865 */ {(12<<2)|2,{111,68,0}}, +/* 15866 */ {(12<<2)|2,{111,68,0}}, +/* 15867 */ {(12<<2)|2,{111,68,0}}, +/* 15868 */ {(12<<2)|2,{111,68,0}}, +/* 15869 */ {(12<<2)|2,{111,68,0}}, +/* 15870 */ {(12<<2)|2,{111,68,0}}, +/* 15871 */ {(12<<2)|2,{111,68,0}}, +/* 15872 */ {(12<<2)|2,{111,69,0}}, +/* 15873 */ {(12<<2)|2,{111,69,0}}, +/* 15874 */ {(12<<2)|2,{111,69,0}}, +/* 15875 */ {(12<<2)|2,{111,69,0}}, +/* 15876 */ {(12<<2)|2,{111,69,0}}, +/* 15877 */ {(12<<2)|2,{111,69,0}}, +/* 15878 */ {(12<<2)|2,{111,69,0}}, +/* 15879 */ {(12<<2)|2,{111,69,0}}, +/* 15880 */ {(12<<2)|2,{111,69,0}}, +/* 15881 */ {(12<<2)|2,{111,69,0}}, +/* 15882 */ {(12<<2)|2,{111,69,0}}, +/* 15883 */ {(12<<2)|2,{111,69,0}}, +/* 15884 */ {(12<<2)|2,{111,69,0}}, +/* 15885 */ {(12<<2)|2,{111,69,0}}, +/* 15886 */ {(12<<2)|2,{111,69,0}}, +/* 15887 */ {(12<<2)|2,{111,69,0}}, +/* 15888 */ {(12<<2)|2,{111,70,0}}, +/* 15889 */ {(12<<2)|2,{111,70,0}}, +/* 15890 */ {(12<<2)|2,{111,70,0}}, +/* 15891 */ {(12<<2)|2,{111,70,0}}, +/* 15892 */ {(12<<2)|2,{111,70,0}}, +/* 15893 */ {(12<<2)|2,{111,70,0}}, +/* 15894 */ {(12<<2)|2,{111,70,0}}, +/* 15895 */ {(12<<2)|2,{111,70,0}}, +/* 15896 */ {(12<<2)|2,{111,70,0}}, +/* 15897 */ {(12<<2)|2,{111,70,0}}, +/* 15898 */ {(12<<2)|2,{111,70,0}}, +/* 15899 */ {(12<<2)|2,{111,70,0}}, +/* 15900 */ {(12<<2)|2,{111,70,0}}, +/* 15901 */ {(12<<2)|2,{111,70,0}}, +/* 15902 */ {(12<<2)|2,{111,70,0}}, +/* 15903 */ {(12<<2)|2,{111,70,0}}, +/* 15904 */ {(12<<2)|2,{111,71,0}}, +/* 15905 */ {(12<<2)|2,{111,71,0}}, +/* 15906 */ {(12<<2)|2,{111,71,0}}, +/* 15907 */ {(12<<2)|2,{111,71,0}}, +/* 15908 */ {(12<<2)|2,{111,71,0}}, +/* 15909 */ {(12<<2)|2,{111,71,0}}, +/* 15910 */ {(12<<2)|2,{111,71,0}}, +/* 15911 */ {(12<<2)|2,{111,71,0}}, +/* 15912 */ {(12<<2)|2,{111,71,0}}, +/* 15913 */ {(12<<2)|2,{111,71,0}}, +/* 15914 */ {(12<<2)|2,{111,71,0}}, +/* 15915 */ {(12<<2)|2,{111,71,0}}, +/* 15916 */ {(12<<2)|2,{111,71,0}}, +/* 15917 */ {(12<<2)|2,{111,71,0}}, +/* 15918 */ {(12<<2)|2,{111,71,0}}, +/* 15919 */ {(12<<2)|2,{111,71,0}}, +/* 15920 */ {(12<<2)|2,{111,72,0}}, +/* 15921 */ {(12<<2)|2,{111,72,0}}, +/* 15922 */ {(12<<2)|2,{111,72,0}}, +/* 15923 */ {(12<<2)|2,{111,72,0}}, +/* 15924 */ {(12<<2)|2,{111,72,0}}, +/* 15925 */ {(12<<2)|2,{111,72,0}}, +/* 15926 */ {(12<<2)|2,{111,72,0}}, +/* 15927 */ {(12<<2)|2,{111,72,0}}, +/* 15928 */ {(12<<2)|2,{111,72,0}}, +/* 15929 */ {(12<<2)|2,{111,72,0}}, +/* 15930 */ {(12<<2)|2,{111,72,0}}, +/* 15931 */ {(12<<2)|2,{111,72,0}}, +/* 15932 */ {(12<<2)|2,{111,72,0}}, +/* 15933 */ {(12<<2)|2,{111,72,0}}, +/* 15934 */ {(12<<2)|2,{111,72,0}}, +/* 15935 */ {(12<<2)|2,{111,72,0}}, +/* 15936 */ {(12<<2)|2,{111,73,0}}, +/* 15937 */ {(12<<2)|2,{111,73,0}}, +/* 15938 */ {(12<<2)|2,{111,73,0}}, +/* 15939 */ {(12<<2)|2,{111,73,0}}, +/* 15940 */ {(12<<2)|2,{111,73,0}}, +/* 15941 */ {(12<<2)|2,{111,73,0}}, +/* 15942 */ {(12<<2)|2,{111,73,0}}, +/* 15943 */ {(12<<2)|2,{111,73,0}}, +/* 15944 */ {(12<<2)|2,{111,73,0}}, +/* 15945 */ {(12<<2)|2,{111,73,0}}, +/* 15946 */ {(12<<2)|2,{111,73,0}}, +/* 15947 */ {(12<<2)|2,{111,73,0}}, +/* 15948 */ {(12<<2)|2,{111,73,0}}, +/* 15949 */ {(12<<2)|2,{111,73,0}}, +/* 15950 */ {(12<<2)|2,{111,73,0}}, +/* 15951 */ {(12<<2)|2,{111,73,0}}, +/* 15952 */ {(12<<2)|2,{111,74,0}}, +/* 15953 */ {(12<<2)|2,{111,74,0}}, +/* 15954 */ {(12<<2)|2,{111,74,0}}, +/* 15955 */ {(12<<2)|2,{111,74,0}}, +/* 15956 */ {(12<<2)|2,{111,74,0}}, +/* 15957 */ {(12<<2)|2,{111,74,0}}, +/* 15958 */ {(12<<2)|2,{111,74,0}}, +/* 15959 */ {(12<<2)|2,{111,74,0}}, +/* 15960 */ {(12<<2)|2,{111,74,0}}, +/* 15961 */ {(12<<2)|2,{111,74,0}}, +/* 15962 */ {(12<<2)|2,{111,74,0}}, +/* 15963 */ {(12<<2)|2,{111,74,0}}, +/* 15964 */ {(12<<2)|2,{111,74,0}}, +/* 15965 */ {(12<<2)|2,{111,74,0}}, +/* 15966 */ {(12<<2)|2,{111,74,0}}, +/* 15967 */ {(12<<2)|2,{111,74,0}}, +/* 15968 */ {(12<<2)|2,{111,75,0}}, +/* 15969 */ {(12<<2)|2,{111,75,0}}, +/* 15970 */ {(12<<2)|2,{111,75,0}}, +/* 15971 */ {(12<<2)|2,{111,75,0}}, +/* 15972 */ {(12<<2)|2,{111,75,0}}, +/* 15973 */ {(12<<2)|2,{111,75,0}}, +/* 15974 */ {(12<<2)|2,{111,75,0}}, +/* 15975 */ {(12<<2)|2,{111,75,0}}, +/* 15976 */ {(12<<2)|2,{111,75,0}}, +/* 15977 */ {(12<<2)|2,{111,75,0}}, +/* 15978 */ {(12<<2)|2,{111,75,0}}, +/* 15979 */ {(12<<2)|2,{111,75,0}}, +/* 15980 */ {(12<<2)|2,{111,75,0}}, +/* 15981 */ {(12<<2)|2,{111,75,0}}, +/* 15982 */ {(12<<2)|2,{111,75,0}}, +/* 15983 */ {(12<<2)|2,{111,75,0}}, +/* 15984 */ {(12<<2)|2,{111,76,0}}, +/* 15985 */ {(12<<2)|2,{111,76,0}}, +/* 15986 */ {(12<<2)|2,{111,76,0}}, +/* 15987 */ {(12<<2)|2,{111,76,0}}, +/* 15988 */ {(12<<2)|2,{111,76,0}}, +/* 15989 */ {(12<<2)|2,{111,76,0}}, +/* 15990 */ {(12<<2)|2,{111,76,0}}, +/* 15991 */ {(12<<2)|2,{111,76,0}}, +/* 15992 */ {(12<<2)|2,{111,76,0}}, +/* 15993 */ {(12<<2)|2,{111,76,0}}, +/* 15994 */ {(12<<2)|2,{111,76,0}}, +/* 15995 */ {(12<<2)|2,{111,76,0}}, +/* 15996 */ {(12<<2)|2,{111,76,0}}, +/* 15997 */ {(12<<2)|2,{111,76,0}}, +/* 15998 */ {(12<<2)|2,{111,76,0}}, +/* 15999 */ {(12<<2)|2,{111,76,0}}, +/* 16000 */ {(12<<2)|2,{111,77,0}}, +/* 16001 */ {(12<<2)|2,{111,77,0}}, +/* 16002 */ {(12<<2)|2,{111,77,0}}, +/* 16003 */ {(12<<2)|2,{111,77,0}}, +/* 16004 */ {(12<<2)|2,{111,77,0}}, +/* 16005 */ {(12<<2)|2,{111,77,0}}, +/* 16006 */ {(12<<2)|2,{111,77,0}}, +/* 16007 */ {(12<<2)|2,{111,77,0}}, +/* 16008 */ {(12<<2)|2,{111,77,0}}, +/* 16009 */ {(12<<2)|2,{111,77,0}}, +/* 16010 */ {(12<<2)|2,{111,77,0}}, +/* 16011 */ {(12<<2)|2,{111,77,0}}, +/* 16012 */ {(12<<2)|2,{111,77,0}}, +/* 16013 */ {(12<<2)|2,{111,77,0}}, +/* 16014 */ {(12<<2)|2,{111,77,0}}, +/* 16015 */ {(12<<2)|2,{111,77,0}}, +/* 16016 */ {(12<<2)|2,{111,78,0}}, +/* 16017 */ {(12<<2)|2,{111,78,0}}, +/* 16018 */ {(12<<2)|2,{111,78,0}}, +/* 16019 */ {(12<<2)|2,{111,78,0}}, +/* 16020 */ {(12<<2)|2,{111,78,0}}, +/* 16021 */ {(12<<2)|2,{111,78,0}}, +/* 16022 */ {(12<<2)|2,{111,78,0}}, +/* 16023 */ {(12<<2)|2,{111,78,0}}, +/* 16024 */ {(12<<2)|2,{111,78,0}}, +/* 16025 */ {(12<<2)|2,{111,78,0}}, +/* 16026 */ {(12<<2)|2,{111,78,0}}, +/* 16027 */ {(12<<2)|2,{111,78,0}}, +/* 16028 */ {(12<<2)|2,{111,78,0}}, +/* 16029 */ {(12<<2)|2,{111,78,0}}, +/* 16030 */ {(12<<2)|2,{111,78,0}}, +/* 16031 */ {(12<<2)|2,{111,78,0}}, +/* 16032 */ {(12<<2)|2,{111,79,0}}, +/* 16033 */ {(12<<2)|2,{111,79,0}}, +/* 16034 */ {(12<<2)|2,{111,79,0}}, +/* 16035 */ {(12<<2)|2,{111,79,0}}, +/* 16036 */ {(12<<2)|2,{111,79,0}}, +/* 16037 */ {(12<<2)|2,{111,79,0}}, +/* 16038 */ {(12<<2)|2,{111,79,0}}, +/* 16039 */ {(12<<2)|2,{111,79,0}}, +/* 16040 */ {(12<<2)|2,{111,79,0}}, +/* 16041 */ {(12<<2)|2,{111,79,0}}, +/* 16042 */ {(12<<2)|2,{111,79,0}}, +/* 16043 */ {(12<<2)|2,{111,79,0}}, +/* 16044 */ {(12<<2)|2,{111,79,0}}, +/* 16045 */ {(12<<2)|2,{111,79,0}}, +/* 16046 */ {(12<<2)|2,{111,79,0}}, +/* 16047 */ {(12<<2)|2,{111,79,0}}, +/* 16048 */ {(12<<2)|2,{111,80,0}}, +/* 16049 */ {(12<<2)|2,{111,80,0}}, +/* 16050 */ {(12<<2)|2,{111,80,0}}, +/* 16051 */ {(12<<2)|2,{111,80,0}}, +/* 16052 */ {(12<<2)|2,{111,80,0}}, +/* 16053 */ {(12<<2)|2,{111,80,0}}, +/* 16054 */ {(12<<2)|2,{111,80,0}}, +/* 16055 */ {(12<<2)|2,{111,80,0}}, +/* 16056 */ {(12<<2)|2,{111,80,0}}, +/* 16057 */ {(12<<2)|2,{111,80,0}}, +/* 16058 */ {(12<<2)|2,{111,80,0}}, +/* 16059 */ {(12<<2)|2,{111,80,0}}, +/* 16060 */ {(12<<2)|2,{111,80,0}}, +/* 16061 */ {(12<<2)|2,{111,80,0}}, +/* 16062 */ {(12<<2)|2,{111,80,0}}, +/* 16063 */ {(12<<2)|2,{111,80,0}}, +/* 16064 */ {(12<<2)|2,{111,81,0}}, +/* 16065 */ {(12<<2)|2,{111,81,0}}, +/* 16066 */ {(12<<2)|2,{111,81,0}}, +/* 16067 */ {(12<<2)|2,{111,81,0}}, +/* 16068 */ {(12<<2)|2,{111,81,0}}, +/* 16069 */ {(12<<2)|2,{111,81,0}}, +/* 16070 */ {(12<<2)|2,{111,81,0}}, +/* 16071 */ {(12<<2)|2,{111,81,0}}, +/* 16072 */ {(12<<2)|2,{111,81,0}}, +/* 16073 */ {(12<<2)|2,{111,81,0}}, +/* 16074 */ {(12<<2)|2,{111,81,0}}, +/* 16075 */ {(12<<2)|2,{111,81,0}}, +/* 16076 */ {(12<<2)|2,{111,81,0}}, +/* 16077 */ {(12<<2)|2,{111,81,0}}, +/* 16078 */ {(12<<2)|2,{111,81,0}}, +/* 16079 */ {(12<<2)|2,{111,81,0}}, +/* 16080 */ {(12<<2)|2,{111,82,0}}, +/* 16081 */ {(12<<2)|2,{111,82,0}}, +/* 16082 */ {(12<<2)|2,{111,82,0}}, +/* 16083 */ {(12<<2)|2,{111,82,0}}, +/* 16084 */ {(12<<2)|2,{111,82,0}}, +/* 16085 */ {(12<<2)|2,{111,82,0}}, +/* 16086 */ {(12<<2)|2,{111,82,0}}, +/* 16087 */ {(12<<2)|2,{111,82,0}}, +/* 16088 */ {(12<<2)|2,{111,82,0}}, +/* 16089 */ {(12<<2)|2,{111,82,0}}, +/* 16090 */ {(12<<2)|2,{111,82,0}}, +/* 16091 */ {(12<<2)|2,{111,82,0}}, +/* 16092 */ {(12<<2)|2,{111,82,0}}, +/* 16093 */ {(12<<2)|2,{111,82,0}}, +/* 16094 */ {(12<<2)|2,{111,82,0}}, +/* 16095 */ {(12<<2)|2,{111,82,0}}, +/* 16096 */ {(12<<2)|2,{111,83,0}}, +/* 16097 */ {(12<<2)|2,{111,83,0}}, +/* 16098 */ {(12<<2)|2,{111,83,0}}, +/* 16099 */ {(12<<2)|2,{111,83,0}}, +/* 16100 */ {(12<<2)|2,{111,83,0}}, +/* 16101 */ {(12<<2)|2,{111,83,0}}, +/* 16102 */ {(12<<2)|2,{111,83,0}}, +/* 16103 */ {(12<<2)|2,{111,83,0}}, +/* 16104 */ {(12<<2)|2,{111,83,0}}, +/* 16105 */ {(12<<2)|2,{111,83,0}}, +/* 16106 */ {(12<<2)|2,{111,83,0}}, +/* 16107 */ {(12<<2)|2,{111,83,0}}, +/* 16108 */ {(12<<2)|2,{111,83,0}}, +/* 16109 */ {(12<<2)|2,{111,83,0}}, +/* 16110 */ {(12<<2)|2,{111,83,0}}, +/* 16111 */ {(12<<2)|2,{111,83,0}}, +/* 16112 */ {(12<<2)|2,{111,84,0}}, +/* 16113 */ {(12<<2)|2,{111,84,0}}, +/* 16114 */ {(12<<2)|2,{111,84,0}}, +/* 16115 */ {(12<<2)|2,{111,84,0}}, +/* 16116 */ {(12<<2)|2,{111,84,0}}, +/* 16117 */ {(12<<2)|2,{111,84,0}}, +/* 16118 */ {(12<<2)|2,{111,84,0}}, +/* 16119 */ {(12<<2)|2,{111,84,0}}, +/* 16120 */ {(12<<2)|2,{111,84,0}}, +/* 16121 */ {(12<<2)|2,{111,84,0}}, +/* 16122 */ {(12<<2)|2,{111,84,0}}, +/* 16123 */ {(12<<2)|2,{111,84,0}}, +/* 16124 */ {(12<<2)|2,{111,84,0}}, +/* 16125 */ {(12<<2)|2,{111,84,0}}, +/* 16126 */ {(12<<2)|2,{111,84,0}}, +/* 16127 */ {(12<<2)|2,{111,84,0}}, +/* 16128 */ {(12<<2)|2,{111,85,0}}, +/* 16129 */ {(12<<2)|2,{111,85,0}}, +/* 16130 */ {(12<<2)|2,{111,85,0}}, +/* 16131 */ {(12<<2)|2,{111,85,0}}, +/* 16132 */ {(12<<2)|2,{111,85,0}}, +/* 16133 */ {(12<<2)|2,{111,85,0}}, +/* 16134 */ {(12<<2)|2,{111,85,0}}, +/* 16135 */ {(12<<2)|2,{111,85,0}}, +/* 16136 */ {(12<<2)|2,{111,85,0}}, +/* 16137 */ {(12<<2)|2,{111,85,0}}, +/* 16138 */ {(12<<2)|2,{111,85,0}}, +/* 16139 */ {(12<<2)|2,{111,85,0}}, +/* 16140 */ {(12<<2)|2,{111,85,0}}, +/* 16141 */ {(12<<2)|2,{111,85,0}}, +/* 16142 */ {(12<<2)|2,{111,85,0}}, +/* 16143 */ {(12<<2)|2,{111,85,0}}, +/* 16144 */ {(12<<2)|2,{111,86,0}}, +/* 16145 */ {(12<<2)|2,{111,86,0}}, +/* 16146 */ {(12<<2)|2,{111,86,0}}, +/* 16147 */ {(12<<2)|2,{111,86,0}}, +/* 16148 */ {(12<<2)|2,{111,86,0}}, +/* 16149 */ {(12<<2)|2,{111,86,0}}, +/* 16150 */ {(12<<2)|2,{111,86,0}}, +/* 16151 */ {(12<<2)|2,{111,86,0}}, +/* 16152 */ {(12<<2)|2,{111,86,0}}, +/* 16153 */ {(12<<2)|2,{111,86,0}}, +/* 16154 */ {(12<<2)|2,{111,86,0}}, +/* 16155 */ {(12<<2)|2,{111,86,0}}, +/* 16156 */ {(12<<2)|2,{111,86,0}}, +/* 16157 */ {(12<<2)|2,{111,86,0}}, +/* 16158 */ {(12<<2)|2,{111,86,0}}, +/* 16159 */ {(12<<2)|2,{111,86,0}}, +/* 16160 */ {(12<<2)|2,{111,87,0}}, +/* 16161 */ {(12<<2)|2,{111,87,0}}, +/* 16162 */ {(12<<2)|2,{111,87,0}}, +/* 16163 */ {(12<<2)|2,{111,87,0}}, +/* 16164 */ {(12<<2)|2,{111,87,0}}, +/* 16165 */ {(12<<2)|2,{111,87,0}}, +/* 16166 */ {(12<<2)|2,{111,87,0}}, +/* 16167 */ {(12<<2)|2,{111,87,0}}, +/* 16168 */ {(12<<2)|2,{111,87,0}}, +/* 16169 */ {(12<<2)|2,{111,87,0}}, +/* 16170 */ {(12<<2)|2,{111,87,0}}, +/* 16171 */ {(12<<2)|2,{111,87,0}}, +/* 16172 */ {(12<<2)|2,{111,87,0}}, +/* 16173 */ {(12<<2)|2,{111,87,0}}, +/* 16174 */ {(12<<2)|2,{111,87,0}}, +/* 16175 */ {(12<<2)|2,{111,87,0}}, +/* 16176 */ {(12<<2)|2,{111,89,0}}, +/* 16177 */ {(12<<2)|2,{111,89,0}}, +/* 16178 */ {(12<<2)|2,{111,89,0}}, +/* 16179 */ {(12<<2)|2,{111,89,0}}, +/* 16180 */ {(12<<2)|2,{111,89,0}}, +/* 16181 */ {(12<<2)|2,{111,89,0}}, +/* 16182 */ {(12<<2)|2,{111,89,0}}, +/* 16183 */ {(12<<2)|2,{111,89,0}}, +/* 16184 */ {(12<<2)|2,{111,89,0}}, +/* 16185 */ {(12<<2)|2,{111,89,0}}, +/* 16186 */ {(12<<2)|2,{111,89,0}}, +/* 16187 */ {(12<<2)|2,{111,89,0}}, +/* 16188 */ {(12<<2)|2,{111,89,0}}, +/* 16189 */ {(12<<2)|2,{111,89,0}}, +/* 16190 */ {(12<<2)|2,{111,89,0}}, +/* 16191 */ {(12<<2)|2,{111,89,0}}, +/* 16192 */ {(12<<2)|2,{111,106,0}}, +/* 16193 */ {(12<<2)|2,{111,106,0}}, +/* 16194 */ {(12<<2)|2,{111,106,0}}, +/* 16195 */ {(12<<2)|2,{111,106,0}}, +/* 16196 */ {(12<<2)|2,{111,106,0}}, +/* 16197 */ {(12<<2)|2,{111,106,0}}, +/* 16198 */ {(12<<2)|2,{111,106,0}}, +/* 16199 */ {(12<<2)|2,{111,106,0}}, +/* 16200 */ {(12<<2)|2,{111,106,0}}, +/* 16201 */ {(12<<2)|2,{111,106,0}}, +/* 16202 */ {(12<<2)|2,{111,106,0}}, +/* 16203 */ {(12<<2)|2,{111,106,0}}, +/* 16204 */ {(12<<2)|2,{111,106,0}}, +/* 16205 */ {(12<<2)|2,{111,106,0}}, +/* 16206 */ {(12<<2)|2,{111,106,0}}, +/* 16207 */ {(12<<2)|2,{111,106,0}}, +/* 16208 */ {(12<<2)|2,{111,107,0}}, +/* 16209 */ {(12<<2)|2,{111,107,0}}, +/* 16210 */ {(12<<2)|2,{111,107,0}}, +/* 16211 */ {(12<<2)|2,{111,107,0}}, +/* 16212 */ {(12<<2)|2,{111,107,0}}, +/* 16213 */ {(12<<2)|2,{111,107,0}}, +/* 16214 */ {(12<<2)|2,{111,107,0}}, +/* 16215 */ {(12<<2)|2,{111,107,0}}, +/* 16216 */ {(12<<2)|2,{111,107,0}}, +/* 16217 */ {(12<<2)|2,{111,107,0}}, +/* 16218 */ {(12<<2)|2,{111,107,0}}, +/* 16219 */ {(12<<2)|2,{111,107,0}}, +/* 16220 */ {(12<<2)|2,{111,107,0}}, +/* 16221 */ {(12<<2)|2,{111,107,0}}, +/* 16222 */ {(12<<2)|2,{111,107,0}}, +/* 16223 */ {(12<<2)|2,{111,107,0}}, +/* 16224 */ {(12<<2)|2,{111,113,0}}, +/* 16225 */ {(12<<2)|2,{111,113,0}}, +/* 16226 */ {(12<<2)|2,{111,113,0}}, +/* 16227 */ {(12<<2)|2,{111,113,0}}, +/* 16228 */ {(12<<2)|2,{111,113,0}}, +/* 16229 */ {(12<<2)|2,{111,113,0}}, +/* 16230 */ {(12<<2)|2,{111,113,0}}, +/* 16231 */ {(12<<2)|2,{111,113,0}}, +/* 16232 */ {(12<<2)|2,{111,113,0}}, +/* 16233 */ {(12<<2)|2,{111,113,0}}, +/* 16234 */ {(12<<2)|2,{111,113,0}}, +/* 16235 */ {(12<<2)|2,{111,113,0}}, +/* 16236 */ {(12<<2)|2,{111,113,0}}, +/* 16237 */ {(12<<2)|2,{111,113,0}}, +/* 16238 */ {(12<<2)|2,{111,113,0}}, +/* 16239 */ {(12<<2)|2,{111,113,0}}, +/* 16240 */ {(12<<2)|2,{111,118,0}}, +/* 16241 */ {(12<<2)|2,{111,118,0}}, +/* 16242 */ {(12<<2)|2,{111,118,0}}, +/* 16243 */ {(12<<2)|2,{111,118,0}}, +/* 16244 */ {(12<<2)|2,{111,118,0}}, +/* 16245 */ {(12<<2)|2,{111,118,0}}, +/* 16246 */ {(12<<2)|2,{111,118,0}}, +/* 16247 */ {(12<<2)|2,{111,118,0}}, +/* 16248 */ {(12<<2)|2,{111,118,0}}, +/* 16249 */ {(12<<2)|2,{111,118,0}}, +/* 16250 */ {(12<<2)|2,{111,118,0}}, +/* 16251 */ {(12<<2)|2,{111,118,0}}, +/* 16252 */ {(12<<2)|2,{111,118,0}}, +/* 16253 */ {(12<<2)|2,{111,118,0}}, +/* 16254 */ {(12<<2)|2,{111,118,0}}, +/* 16255 */ {(12<<2)|2,{111,118,0}}, +/* 16256 */ {(12<<2)|2,{111,119,0}}, +/* 16257 */ {(12<<2)|2,{111,119,0}}, +/* 16258 */ {(12<<2)|2,{111,119,0}}, +/* 16259 */ {(12<<2)|2,{111,119,0}}, +/* 16260 */ {(12<<2)|2,{111,119,0}}, +/* 16261 */ {(12<<2)|2,{111,119,0}}, +/* 16262 */ {(12<<2)|2,{111,119,0}}, +/* 16263 */ {(12<<2)|2,{111,119,0}}, +/* 16264 */ {(12<<2)|2,{111,119,0}}, +/* 16265 */ {(12<<2)|2,{111,119,0}}, +/* 16266 */ {(12<<2)|2,{111,119,0}}, +/* 16267 */ {(12<<2)|2,{111,119,0}}, +/* 16268 */ {(12<<2)|2,{111,119,0}}, +/* 16269 */ {(12<<2)|2,{111,119,0}}, +/* 16270 */ {(12<<2)|2,{111,119,0}}, +/* 16271 */ {(12<<2)|2,{111,119,0}}, +/* 16272 */ {(12<<2)|2,{111,120,0}}, +/* 16273 */ {(12<<2)|2,{111,120,0}}, +/* 16274 */ {(12<<2)|2,{111,120,0}}, +/* 16275 */ {(12<<2)|2,{111,120,0}}, +/* 16276 */ {(12<<2)|2,{111,120,0}}, +/* 16277 */ {(12<<2)|2,{111,120,0}}, +/* 16278 */ {(12<<2)|2,{111,120,0}}, +/* 16279 */ {(12<<2)|2,{111,120,0}}, +/* 16280 */ {(12<<2)|2,{111,120,0}}, +/* 16281 */ {(12<<2)|2,{111,120,0}}, +/* 16282 */ {(12<<2)|2,{111,120,0}}, +/* 16283 */ {(12<<2)|2,{111,120,0}}, +/* 16284 */ {(12<<2)|2,{111,120,0}}, +/* 16285 */ {(12<<2)|2,{111,120,0}}, +/* 16286 */ {(12<<2)|2,{111,120,0}}, +/* 16287 */ {(12<<2)|2,{111,120,0}}, +/* 16288 */ {(12<<2)|2,{111,121,0}}, +/* 16289 */ {(12<<2)|2,{111,121,0}}, +/* 16290 */ {(12<<2)|2,{111,121,0}}, +/* 16291 */ {(12<<2)|2,{111,121,0}}, +/* 16292 */ {(12<<2)|2,{111,121,0}}, +/* 16293 */ {(12<<2)|2,{111,121,0}}, +/* 16294 */ {(12<<2)|2,{111,121,0}}, +/* 16295 */ {(12<<2)|2,{111,121,0}}, +/* 16296 */ {(12<<2)|2,{111,121,0}}, +/* 16297 */ {(12<<2)|2,{111,121,0}}, +/* 16298 */ {(12<<2)|2,{111,121,0}}, +/* 16299 */ {(12<<2)|2,{111,121,0}}, +/* 16300 */ {(12<<2)|2,{111,121,0}}, +/* 16301 */ {(12<<2)|2,{111,121,0}}, +/* 16302 */ {(12<<2)|2,{111,121,0}}, +/* 16303 */ {(12<<2)|2,{111,121,0}}, +/* 16304 */ {(12<<2)|2,{111,122,0}}, +/* 16305 */ {(12<<2)|2,{111,122,0}}, +/* 16306 */ {(12<<2)|2,{111,122,0}}, +/* 16307 */ {(12<<2)|2,{111,122,0}}, +/* 16308 */ {(12<<2)|2,{111,122,0}}, +/* 16309 */ {(12<<2)|2,{111,122,0}}, +/* 16310 */ {(12<<2)|2,{111,122,0}}, +/* 16311 */ {(12<<2)|2,{111,122,0}}, +/* 16312 */ {(12<<2)|2,{111,122,0}}, +/* 16313 */ {(12<<2)|2,{111,122,0}}, +/* 16314 */ {(12<<2)|2,{111,122,0}}, +/* 16315 */ {(12<<2)|2,{111,122,0}}, +/* 16316 */ {(12<<2)|2,{111,122,0}}, +/* 16317 */ {(12<<2)|2,{111,122,0}}, +/* 16318 */ {(12<<2)|2,{111,122,0}}, +/* 16319 */ {(12<<2)|2,{111,122,0}}, +/* 16320 */ {(13<<2)|2,{111,38,0}}, +/* 16321 */ {(13<<2)|2,{111,38,0}}, +/* 16322 */ {(13<<2)|2,{111,38,0}}, +/* 16323 */ {(13<<2)|2,{111,38,0}}, +/* 16324 */ {(13<<2)|2,{111,38,0}}, +/* 16325 */ {(13<<2)|2,{111,38,0}}, +/* 16326 */ {(13<<2)|2,{111,38,0}}, +/* 16327 */ {(13<<2)|2,{111,38,0}}, +/* 16328 */ {(13<<2)|2,{111,42,0}}, +/* 16329 */ {(13<<2)|2,{111,42,0}}, +/* 16330 */ {(13<<2)|2,{111,42,0}}, +/* 16331 */ {(13<<2)|2,{111,42,0}}, +/* 16332 */ {(13<<2)|2,{111,42,0}}, +/* 16333 */ {(13<<2)|2,{111,42,0}}, +/* 16334 */ {(13<<2)|2,{111,42,0}}, +/* 16335 */ {(13<<2)|2,{111,42,0}}, +/* 16336 */ {(13<<2)|2,{111,44,0}}, +/* 16337 */ {(13<<2)|2,{111,44,0}}, +/* 16338 */ {(13<<2)|2,{111,44,0}}, +/* 16339 */ {(13<<2)|2,{111,44,0}}, +/* 16340 */ {(13<<2)|2,{111,44,0}}, +/* 16341 */ {(13<<2)|2,{111,44,0}}, +/* 16342 */ {(13<<2)|2,{111,44,0}}, +/* 16343 */ {(13<<2)|2,{111,44,0}}, +/* 16344 */ {(13<<2)|2,{111,59,0}}, +/* 16345 */ {(13<<2)|2,{111,59,0}}, +/* 16346 */ {(13<<2)|2,{111,59,0}}, +/* 16347 */ {(13<<2)|2,{111,59,0}}, +/* 16348 */ {(13<<2)|2,{111,59,0}}, +/* 16349 */ {(13<<2)|2,{111,59,0}}, +/* 16350 */ {(13<<2)|2,{111,59,0}}, +/* 16351 */ {(13<<2)|2,{111,59,0}}, +/* 16352 */ {(13<<2)|2,{111,88,0}}, +/* 16353 */ {(13<<2)|2,{111,88,0}}, +/* 16354 */ {(13<<2)|2,{111,88,0}}, +/* 16355 */ {(13<<2)|2,{111,88,0}}, +/* 16356 */ {(13<<2)|2,{111,88,0}}, +/* 16357 */ {(13<<2)|2,{111,88,0}}, +/* 16358 */ {(13<<2)|2,{111,88,0}}, +/* 16359 */ {(13<<2)|2,{111,88,0}}, +/* 16360 */ {(13<<2)|2,{111,90,0}}, +/* 16361 */ {(13<<2)|2,{111,90,0}}, +/* 16362 */ {(13<<2)|2,{111,90,0}}, +/* 16363 */ {(13<<2)|2,{111,90,0}}, +/* 16364 */ {(13<<2)|2,{111,90,0}}, +/* 16365 */ {(13<<2)|2,{111,90,0}}, +/* 16366 */ {(13<<2)|2,{111,90,0}}, +/* 16367 */ {(13<<2)|2,{111,90,0}}, +/* 16368 */ {(15<<2)|2,{111,33,0}}, +/* 16369 */ {(15<<2)|2,{111,33,0}}, +/* 16370 */ {(15<<2)|2,{111,34,0}}, +/* 16371 */ {(15<<2)|2,{111,34,0}}, +/* 16372 */ {(15<<2)|2,{111,40,0}}, +/* 16373 */ {(15<<2)|2,{111,40,0}}, +/* 16374 */ {(15<<2)|2,{111,41,0}}, +/* 16375 */ {(15<<2)|2,{111,41,0}}, +/* 16376 */ {(15<<2)|2,{111,63,0}}, +/* 16377 */ {(15<<2)|2,{111,63,0}}, +/* 16378 */ {(16<<2)|2,{111,39,0}}, +/* 16379 */ {(16<<2)|2,{111,43,0}}, +/* 16380 */ {(16<<2)|2,{111,124,0}}, +/* 16381 */ {(5<<2)|1,{111,0,0}}, +/* 16382 */ {(5<<2)|1,{111,0,0}}, +/* 16383 */ {(5<<2)|1,{111,0,0}}, +/* 16384 */ {(15<<2)|3,{115,48,48}}, +/* 16385 */ {(15<<2)|3,{115,48,48}}, +/* 16386 */ {(15<<2)|3,{115,48,49}}, +/* 16387 */ {(15<<2)|3,{115,48,49}}, +/* 16388 */ {(15<<2)|3,{115,48,50}}, +/* 16389 */ {(15<<2)|3,{115,48,50}}, +/* 16390 */ {(15<<2)|3,{115,48,97}}, +/* 16391 */ {(15<<2)|3,{115,48,97}}, +/* 16392 */ {(15<<2)|3,{115,48,99}}, +/* 16393 */ {(15<<2)|3,{115,48,99}}, +/* 16394 */ {(15<<2)|3,{115,48,101}}, +/* 16395 */ {(15<<2)|3,{115,48,101}}, +/* 16396 */ {(15<<2)|3,{115,48,105}}, +/* 16397 */ {(15<<2)|3,{115,48,105}}, +/* 16398 */ {(15<<2)|3,{115,48,111}}, +/* 16399 */ {(15<<2)|3,{115,48,111}}, +/* 16400 */ {(15<<2)|3,{115,48,115}}, +/* 16401 */ {(15<<2)|3,{115,48,115}}, +/* 16402 */ {(15<<2)|3,{115,48,116}}, +/* 16403 */ {(15<<2)|3,{115,48,116}}, +/* 16404 */ {(16<<2)|3,{115,48,32}}, +/* 16405 */ {(16<<2)|3,{115,48,37}}, +/* 16406 */ {(16<<2)|3,{115,48,45}}, +/* 16407 */ {(16<<2)|3,{115,48,46}}, +/* 16408 */ {(16<<2)|3,{115,48,47}}, +/* 16409 */ {(16<<2)|3,{115,48,51}}, +/* 16410 */ {(16<<2)|3,{115,48,52}}, +/* 16411 */ {(16<<2)|3,{115,48,53}}, +/* 16412 */ {(16<<2)|3,{115,48,54}}, +/* 16413 */ {(16<<2)|3,{115,48,55}}, +/* 16414 */ {(16<<2)|3,{115,48,56}}, +/* 16415 */ {(16<<2)|3,{115,48,57}}, +/* 16416 */ {(16<<2)|3,{115,48,61}}, +/* 16417 */ {(16<<2)|3,{115,48,65}}, +/* 16418 */ {(16<<2)|3,{115,48,95}}, +/* 16419 */ {(16<<2)|3,{115,48,98}}, +/* 16420 */ {(16<<2)|3,{115,48,100}}, +/* 16421 */ {(16<<2)|3,{115,48,102}}, +/* 16422 */ {(16<<2)|3,{115,48,103}}, +/* 16423 */ {(16<<2)|3,{115,48,104}}, +/* 16424 */ {(16<<2)|3,{115,48,108}}, +/* 16425 */ {(16<<2)|3,{115,48,109}}, +/* 16426 */ {(16<<2)|3,{115,48,110}}, +/* 16427 */ {(16<<2)|3,{115,48,112}}, +/* 16428 */ {(16<<2)|3,{115,48,114}}, +/* 16429 */ {(16<<2)|3,{115,48,117}}, +/* 16430 */ {(10<<2)|2,{115,48,0}}, +/* 16431 */ {(10<<2)|2,{115,48,0}}, +/* 16432 */ {(10<<2)|2,{115,48,0}}, +/* 16433 */ {(10<<2)|2,{115,48,0}}, +/* 16434 */ {(10<<2)|2,{115,48,0}}, +/* 16435 */ {(10<<2)|2,{115,48,0}}, +/* 16436 */ {(10<<2)|2,{115,48,0}}, +/* 16437 */ {(10<<2)|2,{115,48,0}}, +/* 16438 */ {(10<<2)|2,{115,48,0}}, +/* 16439 */ {(10<<2)|2,{115,48,0}}, +/* 16440 */ {(10<<2)|2,{115,48,0}}, +/* 16441 */ {(10<<2)|2,{115,48,0}}, +/* 16442 */ {(10<<2)|2,{115,48,0}}, +/* 16443 */ {(10<<2)|2,{115,48,0}}, +/* 16444 */ {(10<<2)|2,{115,48,0}}, +/* 16445 */ {(10<<2)|2,{115,48,0}}, +/* 16446 */ {(10<<2)|2,{115,48,0}}, +/* 16447 */ {(10<<2)|2,{115,48,0}}, +/* 16448 */ {(15<<2)|3,{115,49,48}}, +/* 16449 */ {(15<<2)|3,{115,49,48}}, +/* 16450 */ {(15<<2)|3,{115,49,49}}, +/* 16451 */ {(15<<2)|3,{115,49,49}}, +/* 16452 */ {(15<<2)|3,{115,49,50}}, +/* 16453 */ {(15<<2)|3,{115,49,50}}, +/* 16454 */ {(15<<2)|3,{115,49,97}}, +/* 16455 */ {(15<<2)|3,{115,49,97}}, +/* 16456 */ {(15<<2)|3,{115,49,99}}, +/* 16457 */ {(15<<2)|3,{115,49,99}}, +/* 16458 */ {(15<<2)|3,{115,49,101}}, +/* 16459 */ {(15<<2)|3,{115,49,101}}, +/* 16460 */ {(15<<2)|3,{115,49,105}}, +/* 16461 */ {(15<<2)|3,{115,49,105}}, +/* 16462 */ {(15<<2)|3,{115,49,111}}, +/* 16463 */ {(15<<2)|3,{115,49,111}}, +/* 16464 */ {(15<<2)|3,{115,49,115}}, +/* 16465 */ {(15<<2)|3,{115,49,115}}, +/* 16466 */ {(15<<2)|3,{115,49,116}}, +/* 16467 */ {(15<<2)|3,{115,49,116}}, +/* 16468 */ {(16<<2)|3,{115,49,32}}, +/* 16469 */ {(16<<2)|3,{115,49,37}}, +/* 16470 */ {(16<<2)|3,{115,49,45}}, +/* 16471 */ {(16<<2)|3,{115,49,46}}, +/* 16472 */ {(16<<2)|3,{115,49,47}}, +/* 16473 */ {(16<<2)|3,{115,49,51}}, +/* 16474 */ {(16<<2)|3,{115,49,52}}, +/* 16475 */ {(16<<2)|3,{115,49,53}}, +/* 16476 */ {(16<<2)|3,{115,49,54}}, +/* 16477 */ {(16<<2)|3,{115,49,55}}, +/* 16478 */ {(16<<2)|3,{115,49,56}}, +/* 16479 */ {(16<<2)|3,{115,49,57}}, +/* 16480 */ {(16<<2)|3,{115,49,61}}, +/* 16481 */ {(16<<2)|3,{115,49,65}}, +/* 16482 */ {(16<<2)|3,{115,49,95}}, +/* 16483 */ {(16<<2)|3,{115,49,98}}, +/* 16484 */ {(16<<2)|3,{115,49,100}}, +/* 16485 */ {(16<<2)|3,{115,49,102}}, +/* 16486 */ {(16<<2)|3,{115,49,103}}, +/* 16487 */ {(16<<2)|3,{115,49,104}}, +/* 16488 */ {(16<<2)|3,{115,49,108}}, +/* 16489 */ {(16<<2)|3,{115,49,109}}, +/* 16490 */ {(16<<2)|3,{115,49,110}}, +/* 16491 */ {(16<<2)|3,{115,49,112}}, +/* 16492 */ {(16<<2)|3,{115,49,114}}, +/* 16493 */ {(16<<2)|3,{115,49,117}}, +/* 16494 */ {(10<<2)|2,{115,49,0}}, +/* 16495 */ {(10<<2)|2,{115,49,0}}, +/* 16496 */ {(10<<2)|2,{115,49,0}}, +/* 16497 */ {(10<<2)|2,{115,49,0}}, +/* 16498 */ {(10<<2)|2,{115,49,0}}, +/* 16499 */ {(10<<2)|2,{115,49,0}}, +/* 16500 */ {(10<<2)|2,{115,49,0}}, +/* 16501 */ {(10<<2)|2,{115,49,0}}, +/* 16502 */ {(10<<2)|2,{115,49,0}}, +/* 16503 */ {(10<<2)|2,{115,49,0}}, +/* 16504 */ {(10<<2)|2,{115,49,0}}, +/* 16505 */ {(10<<2)|2,{115,49,0}}, +/* 16506 */ {(10<<2)|2,{115,49,0}}, +/* 16507 */ {(10<<2)|2,{115,49,0}}, +/* 16508 */ {(10<<2)|2,{115,49,0}}, +/* 16509 */ {(10<<2)|2,{115,49,0}}, +/* 16510 */ {(10<<2)|2,{115,49,0}}, +/* 16511 */ {(10<<2)|2,{115,49,0}}, +/* 16512 */ {(15<<2)|3,{115,50,48}}, +/* 16513 */ {(15<<2)|3,{115,50,48}}, +/* 16514 */ {(15<<2)|3,{115,50,49}}, +/* 16515 */ {(15<<2)|3,{115,50,49}}, +/* 16516 */ {(15<<2)|3,{115,50,50}}, +/* 16517 */ {(15<<2)|3,{115,50,50}}, +/* 16518 */ {(15<<2)|3,{115,50,97}}, +/* 16519 */ {(15<<2)|3,{115,50,97}}, +/* 16520 */ {(15<<2)|3,{115,50,99}}, +/* 16521 */ {(15<<2)|3,{115,50,99}}, +/* 16522 */ {(15<<2)|3,{115,50,101}}, +/* 16523 */ {(15<<2)|3,{115,50,101}}, +/* 16524 */ {(15<<2)|3,{115,50,105}}, +/* 16525 */ {(15<<2)|3,{115,50,105}}, +/* 16526 */ {(15<<2)|3,{115,50,111}}, +/* 16527 */ {(15<<2)|3,{115,50,111}}, +/* 16528 */ {(15<<2)|3,{115,50,115}}, +/* 16529 */ {(15<<2)|3,{115,50,115}}, +/* 16530 */ {(15<<2)|3,{115,50,116}}, +/* 16531 */ {(15<<2)|3,{115,50,116}}, +/* 16532 */ {(16<<2)|3,{115,50,32}}, +/* 16533 */ {(16<<2)|3,{115,50,37}}, +/* 16534 */ {(16<<2)|3,{115,50,45}}, +/* 16535 */ {(16<<2)|3,{115,50,46}}, +/* 16536 */ {(16<<2)|3,{115,50,47}}, +/* 16537 */ {(16<<2)|3,{115,50,51}}, +/* 16538 */ {(16<<2)|3,{115,50,52}}, +/* 16539 */ {(16<<2)|3,{115,50,53}}, +/* 16540 */ {(16<<2)|3,{115,50,54}}, +/* 16541 */ {(16<<2)|3,{115,50,55}}, +/* 16542 */ {(16<<2)|3,{115,50,56}}, +/* 16543 */ {(16<<2)|3,{115,50,57}}, +/* 16544 */ {(16<<2)|3,{115,50,61}}, +/* 16545 */ {(16<<2)|3,{115,50,65}}, +/* 16546 */ {(16<<2)|3,{115,50,95}}, +/* 16547 */ {(16<<2)|3,{115,50,98}}, +/* 16548 */ {(16<<2)|3,{115,50,100}}, +/* 16549 */ {(16<<2)|3,{115,50,102}}, +/* 16550 */ {(16<<2)|3,{115,50,103}}, +/* 16551 */ {(16<<2)|3,{115,50,104}}, +/* 16552 */ {(16<<2)|3,{115,50,108}}, +/* 16553 */ {(16<<2)|3,{115,50,109}}, +/* 16554 */ {(16<<2)|3,{115,50,110}}, +/* 16555 */ {(16<<2)|3,{115,50,112}}, +/* 16556 */ {(16<<2)|3,{115,50,114}}, +/* 16557 */ {(16<<2)|3,{115,50,117}}, +/* 16558 */ {(10<<2)|2,{115,50,0}}, +/* 16559 */ {(10<<2)|2,{115,50,0}}, +/* 16560 */ {(10<<2)|2,{115,50,0}}, +/* 16561 */ {(10<<2)|2,{115,50,0}}, +/* 16562 */ {(10<<2)|2,{115,50,0}}, +/* 16563 */ {(10<<2)|2,{115,50,0}}, +/* 16564 */ {(10<<2)|2,{115,50,0}}, +/* 16565 */ {(10<<2)|2,{115,50,0}}, +/* 16566 */ {(10<<2)|2,{115,50,0}}, +/* 16567 */ {(10<<2)|2,{115,50,0}}, +/* 16568 */ {(10<<2)|2,{115,50,0}}, +/* 16569 */ {(10<<2)|2,{115,50,0}}, +/* 16570 */ {(10<<2)|2,{115,50,0}}, +/* 16571 */ {(10<<2)|2,{115,50,0}}, +/* 16572 */ {(10<<2)|2,{115,50,0}}, +/* 16573 */ {(10<<2)|2,{115,50,0}}, +/* 16574 */ {(10<<2)|2,{115,50,0}}, +/* 16575 */ {(10<<2)|2,{115,50,0}}, +/* 16576 */ {(15<<2)|3,{115,97,48}}, +/* 16577 */ {(15<<2)|3,{115,97,48}}, +/* 16578 */ {(15<<2)|3,{115,97,49}}, +/* 16579 */ {(15<<2)|3,{115,97,49}}, +/* 16580 */ {(15<<2)|3,{115,97,50}}, +/* 16581 */ {(15<<2)|3,{115,97,50}}, +/* 16582 */ {(15<<2)|3,{115,97,97}}, +/* 16583 */ {(15<<2)|3,{115,97,97}}, +/* 16584 */ {(15<<2)|3,{115,97,99}}, +/* 16585 */ {(15<<2)|3,{115,97,99}}, +/* 16586 */ {(15<<2)|3,{115,97,101}}, +/* 16587 */ {(15<<2)|3,{115,97,101}}, +/* 16588 */ {(15<<2)|3,{115,97,105}}, +/* 16589 */ {(15<<2)|3,{115,97,105}}, +/* 16590 */ {(15<<2)|3,{115,97,111}}, +/* 16591 */ {(15<<2)|3,{115,97,111}}, +/* 16592 */ {(15<<2)|3,{115,97,115}}, +/* 16593 */ {(15<<2)|3,{115,97,115}}, +/* 16594 */ {(15<<2)|3,{115,97,116}}, +/* 16595 */ {(15<<2)|3,{115,97,116}}, +/* 16596 */ {(16<<2)|3,{115,97,32}}, +/* 16597 */ {(16<<2)|3,{115,97,37}}, +/* 16598 */ {(16<<2)|3,{115,97,45}}, +/* 16599 */ {(16<<2)|3,{115,97,46}}, +/* 16600 */ {(16<<2)|3,{115,97,47}}, +/* 16601 */ {(16<<2)|3,{115,97,51}}, +/* 16602 */ {(16<<2)|3,{115,97,52}}, +/* 16603 */ {(16<<2)|3,{115,97,53}}, +/* 16604 */ {(16<<2)|3,{115,97,54}}, +/* 16605 */ {(16<<2)|3,{115,97,55}}, +/* 16606 */ {(16<<2)|3,{115,97,56}}, +/* 16607 */ {(16<<2)|3,{115,97,57}}, +/* 16608 */ {(16<<2)|3,{115,97,61}}, +/* 16609 */ {(16<<2)|3,{115,97,65}}, +/* 16610 */ {(16<<2)|3,{115,97,95}}, +/* 16611 */ {(16<<2)|3,{115,97,98}}, +/* 16612 */ {(16<<2)|3,{115,97,100}}, +/* 16613 */ {(16<<2)|3,{115,97,102}}, +/* 16614 */ {(16<<2)|3,{115,97,103}}, +/* 16615 */ {(16<<2)|3,{115,97,104}}, +/* 16616 */ {(16<<2)|3,{115,97,108}}, +/* 16617 */ {(16<<2)|3,{115,97,109}}, +/* 16618 */ {(16<<2)|3,{115,97,110}}, +/* 16619 */ {(16<<2)|3,{115,97,112}}, +/* 16620 */ {(16<<2)|3,{115,97,114}}, +/* 16621 */ {(16<<2)|3,{115,97,117}}, +/* 16622 */ {(10<<2)|2,{115,97,0}}, +/* 16623 */ {(10<<2)|2,{115,97,0}}, +/* 16624 */ {(10<<2)|2,{115,97,0}}, +/* 16625 */ {(10<<2)|2,{115,97,0}}, +/* 16626 */ {(10<<2)|2,{115,97,0}}, +/* 16627 */ {(10<<2)|2,{115,97,0}}, +/* 16628 */ {(10<<2)|2,{115,97,0}}, +/* 16629 */ {(10<<2)|2,{115,97,0}}, +/* 16630 */ {(10<<2)|2,{115,97,0}}, +/* 16631 */ {(10<<2)|2,{115,97,0}}, +/* 16632 */ {(10<<2)|2,{115,97,0}}, +/* 16633 */ {(10<<2)|2,{115,97,0}}, +/* 16634 */ {(10<<2)|2,{115,97,0}}, +/* 16635 */ {(10<<2)|2,{115,97,0}}, +/* 16636 */ {(10<<2)|2,{115,97,0}}, +/* 16637 */ {(10<<2)|2,{115,97,0}}, +/* 16638 */ {(10<<2)|2,{115,97,0}}, +/* 16639 */ {(10<<2)|2,{115,97,0}}, +/* 16640 */ {(15<<2)|3,{115,99,48}}, +/* 16641 */ {(15<<2)|3,{115,99,48}}, +/* 16642 */ {(15<<2)|3,{115,99,49}}, +/* 16643 */ {(15<<2)|3,{115,99,49}}, +/* 16644 */ {(15<<2)|3,{115,99,50}}, +/* 16645 */ {(15<<2)|3,{115,99,50}}, +/* 16646 */ {(15<<2)|3,{115,99,97}}, +/* 16647 */ {(15<<2)|3,{115,99,97}}, +/* 16648 */ {(15<<2)|3,{115,99,99}}, +/* 16649 */ {(15<<2)|3,{115,99,99}}, +/* 16650 */ {(15<<2)|3,{115,99,101}}, +/* 16651 */ {(15<<2)|3,{115,99,101}}, +/* 16652 */ {(15<<2)|3,{115,99,105}}, +/* 16653 */ {(15<<2)|3,{115,99,105}}, +/* 16654 */ {(15<<2)|3,{115,99,111}}, +/* 16655 */ {(15<<2)|3,{115,99,111}}, +/* 16656 */ {(15<<2)|3,{115,99,115}}, +/* 16657 */ {(15<<2)|3,{115,99,115}}, +/* 16658 */ {(15<<2)|3,{115,99,116}}, +/* 16659 */ {(15<<2)|3,{115,99,116}}, +/* 16660 */ {(16<<2)|3,{115,99,32}}, +/* 16661 */ {(16<<2)|3,{115,99,37}}, +/* 16662 */ {(16<<2)|3,{115,99,45}}, +/* 16663 */ {(16<<2)|3,{115,99,46}}, +/* 16664 */ {(16<<2)|3,{115,99,47}}, +/* 16665 */ {(16<<2)|3,{115,99,51}}, +/* 16666 */ {(16<<2)|3,{115,99,52}}, +/* 16667 */ {(16<<2)|3,{115,99,53}}, +/* 16668 */ {(16<<2)|3,{115,99,54}}, +/* 16669 */ {(16<<2)|3,{115,99,55}}, +/* 16670 */ {(16<<2)|3,{115,99,56}}, +/* 16671 */ {(16<<2)|3,{115,99,57}}, +/* 16672 */ {(16<<2)|3,{115,99,61}}, +/* 16673 */ {(16<<2)|3,{115,99,65}}, +/* 16674 */ {(16<<2)|3,{115,99,95}}, +/* 16675 */ {(16<<2)|3,{115,99,98}}, +/* 16676 */ {(16<<2)|3,{115,99,100}}, +/* 16677 */ {(16<<2)|3,{115,99,102}}, +/* 16678 */ {(16<<2)|3,{115,99,103}}, +/* 16679 */ {(16<<2)|3,{115,99,104}}, +/* 16680 */ {(16<<2)|3,{115,99,108}}, +/* 16681 */ {(16<<2)|3,{115,99,109}}, +/* 16682 */ {(16<<2)|3,{115,99,110}}, +/* 16683 */ {(16<<2)|3,{115,99,112}}, +/* 16684 */ {(16<<2)|3,{115,99,114}}, +/* 16685 */ {(16<<2)|3,{115,99,117}}, +/* 16686 */ {(10<<2)|2,{115,99,0}}, +/* 16687 */ {(10<<2)|2,{115,99,0}}, +/* 16688 */ {(10<<2)|2,{115,99,0}}, +/* 16689 */ {(10<<2)|2,{115,99,0}}, +/* 16690 */ {(10<<2)|2,{115,99,0}}, +/* 16691 */ {(10<<2)|2,{115,99,0}}, +/* 16692 */ {(10<<2)|2,{115,99,0}}, +/* 16693 */ {(10<<2)|2,{115,99,0}}, +/* 16694 */ {(10<<2)|2,{115,99,0}}, +/* 16695 */ {(10<<2)|2,{115,99,0}}, +/* 16696 */ {(10<<2)|2,{115,99,0}}, +/* 16697 */ {(10<<2)|2,{115,99,0}}, +/* 16698 */ {(10<<2)|2,{115,99,0}}, +/* 16699 */ {(10<<2)|2,{115,99,0}}, +/* 16700 */ {(10<<2)|2,{115,99,0}}, +/* 16701 */ {(10<<2)|2,{115,99,0}}, +/* 16702 */ {(10<<2)|2,{115,99,0}}, +/* 16703 */ {(10<<2)|2,{115,99,0}}, +/* 16704 */ {(15<<2)|3,{115,101,48}}, +/* 16705 */ {(15<<2)|3,{115,101,48}}, +/* 16706 */ {(15<<2)|3,{115,101,49}}, +/* 16707 */ {(15<<2)|3,{115,101,49}}, +/* 16708 */ {(15<<2)|3,{115,101,50}}, +/* 16709 */ {(15<<2)|3,{115,101,50}}, +/* 16710 */ {(15<<2)|3,{115,101,97}}, +/* 16711 */ {(15<<2)|3,{115,101,97}}, +/* 16712 */ {(15<<2)|3,{115,101,99}}, +/* 16713 */ {(15<<2)|3,{115,101,99}}, +/* 16714 */ {(15<<2)|3,{115,101,101}}, +/* 16715 */ {(15<<2)|3,{115,101,101}}, +/* 16716 */ {(15<<2)|3,{115,101,105}}, +/* 16717 */ {(15<<2)|3,{115,101,105}}, +/* 16718 */ {(15<<2)|3,{115,101,111}}, +/* 16719 */ {(15<<2)|3,{115,101,111}}, +/* 16720 */ {(15<<2)|3,{115,101,115}}, +/* 16721 */ {(15<<2)|3,{115,101,115}}, +/* 16722 */ {(15<<2)|3,{115,101,116}}, +/* 16723 */ {(15<<2)|3,{115,101,116}}, +/* 16724 */ {(16<<2)|3,{115,101,32}}, +/* 16725 */ {(16<<2)|3,{115,101,37}}, +/* 16726 */ {(16<<2)|3,{115,101,45}}, +/* 16727 */ {(16<<2)|3,{115,101,46}}, +/* 16728 */ {(16<<2)|3,{115,101,47}}, +/* 16729 */ {(16<<2)|3,{115,101,51}}, +/* 16730 */ {(16<<2)|3,{115,101,52}}, +/* 16731 */ {(16<<2)|3,{115,101,53}}, +/* 16732 */ {(16<<2)|3,{115,101,54}}, +/* 16733 */ {(16<<2)|3,{115,101,55}}, +/* 16734 */ {(16<<2)|3,{115,101,56}}, +/* 16735 */ {(16<<2)|3,{115,101,57}}, +/* 16736 */ {(16<<2)|3,{115,101,61}}, +/* 16737 */ {(16<<2)|3,{115,101,65}}, +/* 16738 */ {(16<<2)|3,{115,101,95}}, +/* 16739 */ {(16<<2)|3,{115,101,98}}, +/* 16740 */ {(16<<2)|3,{115,101,100}}, +/* 16741 */ {(16<<2)|3,{115,101,102}}, +/* 16742 */ {(16<<2)|3,{115,101,103}}, +/* 16743 */ {(16<<2)|3,{115,101,104}}, +/* 16744 */ {(16<<2)|3,{115,101,108}}, +/* 16745 */ {(16<<2)|3,{115,101,109}}, +/* 16746 */ {(16<<2)|3,{115,101,110}}, +/* 16747 */ {(16<<2)|3,{115,101,112}}, +/* 16748 */ {(16<<2)|3,{115,101,114}}, +/* 16749 */ {(16<<2)|3,{115,101,117}}, +/* 16750 */ {(10<<2)|2,{115,101,0}}, +/* 16751 */ {(10<<2)|2,{115,101,0}}, +/* 16752 */ {(10<<2)|2,{115,101,0}}, +/* 16753 */ {(10<<2)|2,{115,101,0}}, +/* 16754 */ {(10<<2)|2,{115,101,0}}, +/* 16755 */ {(10<<2)|2,{115,101,0}}, +/* 16756 */ {(10<<2)|2,{115,101,0}}, +/* 16757 */ {(10<<2)|2,{115,101,0}}, +/* 16758 */ {(10<<2)|2,{115,101,0}}, +/* 16759 */ {(10<<2)|2,{115,101,0}}, +/* 16760 */ {(10<<2)|2,{115,101,0}}, +/* 16761 */ {(10<<2)|2,{115,101,0}}, +/* 16762 */ {(10<<2)|2,{115,101,0}}, +/* 16763 */ {(10<<2)|2,{115,101,0}}, +/* 16764 */ {(10<<2)|2,{115,101,0}}, +/* 16765 */ {(10<<2)|2,{115,101,0}}, +/* 16766 */ {(10<<2)|2,{115,101,0}}, +/* 16767 */ {(10<<2)|2,{115,101,0}}, +/* 16768 */ {(15<<2)|3,{115,105,48}}, +/* 16769 */ {(15<<2)|3,{115,105,48}}, +/* 16770 */ {(15<<2)|3,{115,105,49}}, +/* 16771 */ {(15<<2)|3,{115,105,49}}, +/* 16772 */ {(15<<2)|3,{115,105,50}}, +/* 16773 */ {(15<<2)|3,{115,105,50}}, +/* 16774 */ {(15<<2)|3,{115,105,97}}, +/* 16775 */ {(15<<2)|3,{115,105,97}}, +/* 16776 */ {(15<<2)|3,{115,105,99}}, +/* 16777 */ {(15<<2)|3,{115,105,99}}, +/* 16778 */ {(15<<2)|3,{115,105,101}}, +/* 16779 */ {(15<<2)|3,{115,105,101}}, +/* 16780 */ {(15<<2)|3,{115,105,105}}, +/* 16781 */ {(15<<2)|3,{115,105,105}}, +/* 16782 */ {(15<<2)|3,{115,105,111}}, +/* 16783 */ {(15<<2)|3,{115,105,111}}, +/* 16784 */ {(15<<2)|3,{115,105,115}}, +/* 16785 */ {(15<<2)|3,{115,105,115}}, +/* 16786 */ {(15<<2)|3,{115,105,116}}, +/* 16787 */ {(15<<2)|3,{115,105,116}}, +/* 16788 */ {(16<<2)|3,{115,105,32}}, +/* 16789 */ {(16<<2)|3,{115,105,37}}, +/* 16790 */ {(16<<2)|3,{115,105,45}}, +/* 16791 */ {(16<<2)|3,{115,105,46}}, +/* 16792 */ {(16<<2)|3,{115,105,47}}, +/* 16793 */ {(16<<2)|3,{115,105,51}}, +/* 16794 */ {(16<<2)|3,{115,105,52}}, +/* 16795 */ {(16<<2)|3,{115,105,53}}, +/* 16796 */ {(16<<2)|3,{115,105,54}}, +/* 16797 */ {(16<<2)|3,{115,105,55}}, +/* 16798 */ {(16<<2)|3,{115,105,56}}, +/* 16799 */ {(16<<2)|3,{115,105,57}}, +/* 16800 */ {(16<<2)|3,{115,105,61}}, +/* 16801 */ {(16<<2)|3,{115,105,65}}, +/* 16802 */ {(16<<2)|3,{115,105,95}}, +/* 16803 */ {(16<<2)|3,{115,105,98}}, +/* 16804 */ {(16<<2)|3,{115,105,100}}, +/* 16805 */ {(16<<2)|3,{115,105,102}}, +/* 16806 */ {(16<<2)|3,{115,105,103}}, +/* 16807 */ {(16<<2)|3,{115,105,104}}, +/* 16808 */ {(16<<2)|3,{115,105,108}}, +/* 16809 */ {(16<<2)|3,{115,105,109}}, +/* 16810 */ {(16<<2)|3,{115,105,110}}, +/* 16811 */ {(16<<2)|3,{115,105,112}}, +/* 16812 */ {(16<<2)|3,{115,105,114}}, +/* 16813 */ {(16<<2)|3,{115,105,117}}, +/* 16814 */ {(10<<2)|2,{115,105,0}}, +/* 16815 */ {(10<<2)|2,{115,105,0}}, +/* 16816 */ {(10<<2)|2,{115,105,0}}, +/* 16817 */ {(10<<2)|2,{115,105,0}}, +/* 16818 */ {(10<<2)|2,{115,105,0}}, +/* 16819 */ {(10<<2)|2,{115,105,0}}, +/* 16820 */ {(10<<2)|2,{115,105,0}}, +/* 16821 */ {(10<<2)|2,{115,105,0}}, +/* 16822 */ {(10<<2)|2,{115,105,0}}, +/* 16823 */ {(10<<2)|2,{115,105,0}}, +/* 16824 */ {(10<<2)|2,{115,105,0}}, +/* 16825 */ {(10<<2)|2,{115,105,0}}, +/* 16826 */ {(10<<2)|2,{115,105,0}}, +/* 16827 */ {(10<<2)|2,{115,105,0}}, +/* 16828 */ {(10<<2)|2,{115,105,0}}, +/* 16829 */ {(10<<2)|2,{115,105,0}}, +/* 16830 */ {(10<<2)|2,{115,105,0}}, +/* 16831 */ {(10<<2)|2,{115,105,0}}, +/* 16832 */ {(15<<2)|3,{115,111,48}}, +/* 16833 */ {(15<<2)|3,{115,111,48}}, +/* 16834 */ {(15<<2)|3,{115,111,49}}, +/* 16835 */ {(15<<2)|3,{115,111,49}}, +/* 16836 */ {(15<<2)|3,{115,111,50}}, +/* 16837 */ {(15<<2)|3,{115,111,50}}, +/* 16838 */ {(15<<2)|3,{115,111,97}}, +/* 16839 */ {(15<<2)|3,{115,111,97}}, +/* 16840 */ {(15<<2)|3,{115,111,99}}, +/* 16841 */ {(15<<2)|3,{115,111,99}}, +/* 16842 */ {(15<<2)|3,{115,111,101}}, +/* 16843 */ {(15<<2)|3,{115,111,101}}, +/* 16844 */ {(15<<2)|3,{115,111,105}}, +/* 16845 */ {(15<<2)|3,{115,111,105}}, +/* 16846 */ {(15<<2)|3,{115,111,111}}, +/* 16847 */ {(15<<2)|3,{115,111,111}}, +/* 16848 */ {(15<<2)|3,{115,111,115}}, +/* 16849 */ {(15<<2)|3,{115,111,115}}, +/* 16850 */ {(15<<2)|3,{115,111,116}}, +/* 16851 */ {(15<<2)|3,{115,111,116}}, +/* 16852 */ {(16<<2)|3,{115,111,32}}, +/* 16853 */ {(16<<2)|3,{115,111,37}}, +/* 16854 */ {(16<<2)|3,{115,111,45}}, +/* 16855 */ {(16<<2)|3,{115,111,46}}, +/* 16856 */ {(16<<2)|3,{115,111,47}}, +/* 16857 */ {(16<<2)|3,{115,111,51}}, +/* 16858 */ {(16<<2)|3,{115,111,52}}, +/* 16859 */ {(16<<2)|3,{115,111,53}}, +/* 16860 */ {(16<<2)|3,{115,111,54}}, +/* 16861 */ {(16<<2)|3,{115,111,55}}, +/* 16862 */ {(16<<2)|3,{115,111,56}}, +/* 16863 */ {(16<<2)|3,{115,111,57}}, +/* 16864 */ {(16<<2)|3,{115,111,61}}, +/* 16865 */ {(16<<2)|3,{115,111,65}}, +/* 16866 */ {(16<<2)|3,{115,111,95}}, +/* 16867 */ {(16<<2)|3,{115,111,98}}, +/* 16868 */ {(16<<2)|3,{115,111,100}}, +/* 16869 */ {(16<<2)|3,{115,111,102}}, +/* 16870 */ {(16<<2)|3,{115,111,103}}, +/* 16871 */ {(16<<2)|3,{115,111,104}}, +/* 16872 */ {(16<<2)|3,{115,111,108}}, +/* 16873 */ {(16<<2)|3,{115,111,109}}, +/* 16874 */ {(16<<2)|3,{115,111,110}}, +/* 16875 */ {(16<<2)|3,{115,111,112}}, +/* 16876 */ {(16<<2)|3,{115,111,114}}, +/* 16877 */ {(16<<2)|3,{115,111,117}}, +/* 16878 */ {(10<<2)|2,{115,111,0}}, +/* 16879 */ {(10<<2)|2,{115,111,0}}, +/* 16880 */ {(10<<2)|2,{115,111,0}}, +/* 16881 */ {(10<<2)|2,{115,111,0}}, +/* 16882 */ {(10<<2)|2,{115,111,0}}, +/* 16883 */ {(10<<2)|2,{115,111,0}}, +/* 16884 */ {(10<<2)|2,{115,111,0}}, +/* 16885 */ {(10<<2)|2,{115,111,0}}, +/* 16886 */ {(10<<2)|2,{115,111,0}}, +/* 16887 */ {(10<<2)|2,{115,111,0}}, +/* 16888 */ {(10<<2)|2,{115,111,0}}, +/* 16889 */ {(10<<2)|2,{115,111,0}}, +/* 16890 */ {(10<<2)|2,{115,111,0}}, +/* 16891 */ {(10<<2)|2,{115,111,0}}, +/* 16892 */ {(10<<2)|2,{115,111,0}}, +/* 16893 */ {(10<<2)|2,{115,111,0}}, +/* 16894 */ {(10<<2)|2,{115,111,0}}, +/* 16895 */ {(10<<2)|2,{115,111,0}}, +/* 16896 */ {(15<<2)|3,{115,115,48}}, +/* 16897 */ {(15<<2)|3,{115,115,48}}, +/* 16898 */ {(15<<2)|3,{115,115,49}}, +/* 16899 */ {(15<<2)|3,{115,115,49}}, +/* 16900 */ {(15<<2)|3,{115,115,50}}, +/* 16901 */ {(15<<2)|3,{115,115,50}}, +/* 16902 */ {(15<<2)|3,{115,115,97}}, +/* 16903 */ {(15<<2)|3,{115,115,97}}, +/* 16904 */ {(15<<2)|3,{115,115,99}}, +/* 16905 */ {(15<<2)|3,{115,115,99}}, +/* 16906 */ {(15<<2)|3,{115,115,101}}, +/* 16907 */ {(15<<2)|3,{115,115,101}}, +/* 16908 */ {(15<<2)|3,{115,115,105}}, +/* 16909 */ {(15<<2)|3,{115,115,105}}, +/* 16910 */ {(15<<2)|3,{115,115,111}}, +/* 16911 */ {(15<<2)|3,{115,115,111}}, +/* 16912 */ {(15<<2)|3,{115,115,115}}, +/* 16913 */ {(15<<2)|3,{115,115,115}}, +/* 16914 */ {(15<<2)|3,{115,115,116}}, +/* 16915 */ {(15<<2)|3,{115,115,116}}, +/* 16916 */ {(16<<2)|3,{115,115,32}}, +/* 16917 */ {(16<<2)|3,{115,115,37}}, +/* 16918 */ {(16<<2)|3,{115,115,45}}, +/* 16919 */ {(16<<2)|3,{115,115,46}}, +/* 16920 */ {(16<<2)|3,{115,115,47}}, +/* 16921 */ {(16<<2)|3,{115,115,51}}, +/* 16922 */ {(16<<2)|3,{115,115,52}}, +/* 16923 */ {(16<<2)|3,{115,115,53}}, +/* 16924 */ {(16<<2)|3,{115,115,54}}, +/* 16925 */ {(16<<2)|3,{115,115,55}}, +/* 16926 */ {(16<<2)|3,{115,115,56}}, +/* 16927 */ {(16<<2)|3,{115,115,57}}, +/* 16928 */ {(16<<2)|3,{115,115,61}}, +/* 16929 */ {(16<<2)|3,{115,115,65}}, +/* 16930 */ {(16<<2)|3,{115,115,95}}, +/* 16931 */ {(16<<2)|3,{115,115,98}}, +/* 16932 */ {(16<<2)|3,{115,115,100}}, +/* 16933 */ {(16<<2)|3,{115,115,102}}, +/* 16934 */ {(16<<2)|3,{115,115,103}}, +/* 16935 */ {(16<<2)|3,{115,115,104}}, +/* 16936 */ {(16<<2)|3,{115,115,108}}, +/* 16937 */ {(16<<2)|3,{115,115,109}}, +/* 16938 */ {(16<<2)|3,{115,115,110}}, +/* 16939 */ {(16<<2)|3,{115,115,112}}, +/* 16940 */ {(16<<2)|3,{115,115,114}}, +/* 16941 */ {(16<<2)|3,{115,115,117}}, +/* 16942 */ {(10<<2)|2,{115,115,0}}, +/* 16943 */ {(10<<2)|2,{115,115,0}}, +/* 16944 */ {(10<<2)|2,{115,115,0}}, +/* 16945 */ {(10<<2)|2,{115,115,0}}, +/* 16946 */ {(10<<2)|2,{115,115,0}}, +/* 16947 */ {(10<<2)|2,{115,115,0}}, +/* 16948 */ {(10<<2)|2,{115,115,0}}, +/* 16949 */ {(10<<2)|2,{115,115,0}}, +/* 16950 */ {(10<<2)|2,{115,115,0}}, +/* 16951 */ {(10<<2)|2,{115,115,0}}, +/* 16952 */ {(10<<2)|2,{115,115,0}}, +/* 16953 */ {(10<<2)|2,{115,115,0}}, +/* 16954 */ {(10<<2)|2,{115,115,0}}, +/* 16955 */ {(10<<2)|2,{115,115,0}}, +/* 16956 */ {(10<<2)|2,{115,115,0}}, +/* 16957 */ {(10<<2)|2,{115,115,0}}, +/* 16958 */ {(10<<2)|2,{115,115,0}}, +/* 16959 */ {(10<<2)|2,{115,115,0}}, +/* 16960 */ {(15<<2)|3,{115,116,48}}, +/* 16961 */ {(15<<2)|3,{115,116,48}}, +/* 16962 */ {(15<<2)|3,{115,116,49}}, +/* 16963 */ {(15<<2)|3,{115,116,49}}, +/* 16964 */ {(15<<2)|3,{115,116,50}}, +/* 16965 */ {(15<<2)|3,{115,116,50}}, +/* 16966 */ {(15<<2)|3,{115,116,97}}, +/* 16967 */ {(15<<2)|3,{115,116,97}}, +/* 16968 */ {(15<<2)|3,{115,116,99}}, +/* 16969 */ {(15<<2)|3,{115,116,99}}, +/* 16970 */ {(15<<2)|3,{115,116,101}}, +/* 16971 */ {(15<<2)|3,{115,116,101}}, +/* 16972 */ {(15<<2)|3,{115,116,105}}, +/* 16973 */ {(15<<2)|3,{115,116,105}}, +/* 16974 */ {(15<<2)|3,{115,116,111}}, +/* 16975 */ {(15<<2)|3,{115,116,111}}, +/* 16976 */ {(15<<2)|3,{115,116,115}}, +/* 16977 */ {(15<<2)|3,{115,116,115}}, +/* 16978 */ {(15<<2)|3,{115,116,116}}, +/* 16979 */ {(15<<2)|3,{115,116,116}}, +/* 16980 */ {(16<<2)|3,{115,116,32}}, +/* 16981 */ {(16<<2)|3,{115,116,37}}, +/* 16982 */ {(16<<2)|3,{115,116,45}}, +/* 16983 */ {(16<<2)|3,{115,116,46}}, +/* 16984 */ {(16<<2)|3,{115,116,47}}, +/* 16985 */ {(16<<2)|3,{115,116,51}}, +/* 16986 */ {(16<<2)|3,{115,116,52}}, +/* 16987 */ {(16<<2)|3,{115,116,53}}, +/* 16988 */ {(16<<2)|3,{115,116,54}}, +/* 16989 */ {(16<<2)|3,{115,116,55}}, +/* 16990 */ {(16<<2)|3,{115,116,56}}, +/* 16991 */ {(16<<2)|3,{115,116,57}}, +/* 16992 */ {(16<<2)|3,{115,116,61}}, +/* 16993 */ {(16<<2)|3,{115,116,65}}, +/* 16994 */ {(16<<2)|3,{115,116,95}}, +/* 16995 */ {(16<<2)|3,{115,116,98}}, +/* 16996 */ {(16<<2)|3,{115,116,100}}, +/* 16997 */ {(16<<2)|3,{115,116,102}}, +/* 16998 */ {(16<<2)|3,{115,116,103}}, +/* 16999 */ {(16<<2)|3,{115,116,104}}, +/* 17000 */ {(16<<2)|3,{115,116,108}}, +/* 17001 */ {(16<<2)|3,{115,116,109}}, +/* 17002 */ {(16<<2)|3,{115,116,110}}, +/* 17003 */ {(16<<2)|3,{115,116,112}}, +/* 17004 */ {(16<<2)|3,{115,116,114}}, +/* 17005 */ {(16<<2)|3,{115,116,117}}, +/* 17006 */ {(10<<2)|2,{115,116,0}}, +/* 17007 */ {(10<<2)|2,{115,116,0}}, +/* 17008 */ {(10<<2)|2,{115,116,0}}, +/* 17009 */ {(10<<2)|2,{115,116,0}}, +/* 17010 */ {(10<<2)|2,{115,116,0}}, +/* 17011 */ {(10<<2)|2,{115,116,0}}, +/* 17012 */ {(10<<2)|2,{115,116,0}}, +/* 17013 */ {(10<<2)|2,{115,116,0}}, +/* 17014 */ {(10<<2)|2,{115,116,0}}, +/* 17015 */ {(10<<2)|2,{115,116,0}}, +/* 17016 */ {(10<<2)|2,{115,116,0}}, +/* 17017 */ {(10<<2)|2,{115,116,0}}, +/* 17018 */ {(10<<2)|2,{115,116,0}}, +/* 17019 */ {(10<<2)|2,{115,116,0}}, +/* 17020 */ {(10<<2)|2,{115,116,0}}, +/* 17021 */ {(10<<2)|2,{115,116,0}}, +/* 17022 */ {(10<<2)|2,{115,116,0}}, +/* 17023 */ {(10<<2)|2,{115,116,0}}, +/* 17024 */ {(16<<2)|3,{115,32,48}}, +/* 17025 */ {(16<<2)|3,{115,32,49}}, +/* 17026 */ {(16<<2)|3,{115,32,50}}, +/* 17027 */ {(16<<2)|3,{115,32,97}}, +/* 17028 */ {(16<<2)|3,{115,32,99}}, +/* 17029 */ {(16<<2)|3,{115,32,101}}, +/* 17030 */ {(16<<2)|3,{115,32,105}}, +/* 17031 */ {(16<<2)|3,{115,32,111}}, +/* 17032 */ {(16<<2)|3,{115,32,115}}, +/* 17033 */ {(16<<2)|3,{115,32,116}}, +/* 17034 */ {(11<<2)|2,{115,32,0}}, +/* 17035 */ {(11<<2)|2,{115,32,0}}, +/* 17036 */ {(11<<2)|2,{115,32,0}}, +/* 17037 */ {(11<<2)|2,{115,32,0}}, +/* 17038 */ {(11<<2)|2,{115,32,0}}, +/* 17039 */ {(11<<2)|2,{115,32,0}}, +/* 17040 */ {(11<<2)|2,{115,32,0}}, +/* 17041 */ {(11<<2)|2,{115,32,0}}, +/* 17042 */ {(11<<2)|2,{115,32,0}}, +/* 17043 */ {(11<<2)|2,{115,32,0}}, +/* 17044 */ {(11<<2)|2,{115,32,0}}, +/* 17045 */ {(11<<2)|2,{115,32,0}}, +/* 17046 */ {(11<<2)|2,{115,32,0}}, +/* 17047 */ {(11<<2)|2,{115,32,0}}, +/* 17048 */ {(11<<2)|2,{115,32,0}}, +/* 17049 */ {(11<<2)|2,{115,32,0}}, +/* 17050 */ {(11<<2)|2,{115,32,0}}, +/* 17051 */ {(11<<2)|2,{115,32,0}}, +/* 17052 */ {(11<<2)|2,{115,32,0}}, +/* 17053 */ {(11<<2)|2,{115,32,0}}, +/* 17054 */ {(11<<2)|2,{115,32,0}}, +/* 17055 */ {(11<<2)|2,{115,32,0}}, +/* 17056 */ {(16<<2)|3,{115,37,48}}, +/* 17057 */ {(16<<2)|3,{115,37,49}}, +/* 17058 */ {(16<<2)|3,{115,37,50}}, +/* 17059 */ {(16<<2)|3,{115,37,97}}, +/* 17060 */ {(16<<2)|3,{115,37,99}}, +/* 17061 */ {(16<<2)|3,{115,37,101}}, +/* 17062 */ {(16<<2)|3,{115,37,105}}, +/* 17063 */ {(16<<2)|3,{115,37,111}}, +/* 17064 */ {(16<<2)|3,{115,37,115}}, +/* 17065 */ {(16<<2)|3,{115,37,116}}, +/* 17066 */ {(11<<2)|2,{115,37,0}}, +/* 17067 */ {(11<<2)|2,{115,37,0}}, +/* 17068 */ {(11<<2)|2,{115,37,0}}, +/* 17069 */ {(11<<2)|2,{115,37,0}}, +/* 17070 */ {(11<<2)|2,{115,37,0}}, +/* 17071 */ {(11<<2)|2,{115,37,0}}, +/* 17072 */ {(11<<2)|2,{115,37,0}}, +/* 17073 */ {(11<<2)|2,{115,37,0}}, +/* 17074 */ {(11<<2)|2,{115,37,0}}, +/* 17075 */ {(11<<2)|2,{115,37,0}}, +/* 17076 */ {(11<<2)|2,{115,37,0}}, +/* 17077 */ {(11<<2)|2,{115,37,0}}, +/* 17078 */ {(11<<2)|2,{115,37,0}}, +/* 17079 */ {(11<<2)|2,{115,37,0}}, +/* 17080 */ {(11<<2)|2,{115,37,0}}, +/* 17081 */ {(11<<2)|2,{115,37,0}}, +/* 17082 */ {(11<<2)|2,{115,37,0}}, +/* 17083 */ {(11<<2)|2,{115,37,0}}, +/* 17084 */ {(11<<2)|2,{115,37,0}}, +/* 17085 */ {(11<<2)|2,{115,37,0}}, +/* 17086 */ {(11<<2)|2,{115,37,0}}, +/* 17087 */ {(11<<2)|2,{115,37,0}}, +/* 17088 */ {(16<<2)|3,{115,45,48}}, +/* 17089 */ {(16<<2)|3,{115,45,49}}, +/* 17090 */ {(16<<2)|3,{115,45,50}}, +/* 17091 */ {(16<<2)|3,{115,45,97}}, +/* 17092 */ {(16<<2)|3,{115,45,99}}, +/* 17093 */ {(16<<2)|3,{115,45,101}}, +/* 17094 */ {(16<<2)|3,{115,45,105}}, +/* 17095 */ {(16<<2)|3,{115,45,111}}, +/* 17096 */ {(16<<2)|3,{115,45,115}}, +/* 17097 */ {(16<<2)|3,{115,45,116}}, +/* 17098 */ {(11<<2)|2,{115,45,0}}, +/* 17099 */ {(11<<2)|2,{115,45,0}}, +/* 17100 */ {(11<<2)|2,{115,45,0}}, +/* 17101 */ {(11<<2)|2,{115,45,0}}, +/* 17102 */ {(11<<2)|2,{115,45,0}}, +/* 17103 */ {(11<<2)|2,{115,45,0}}, +/* 17104 */ {(11<<2)|2,{115,45,0}}, +/* 17105 */ {(11<<2)|2,{115,45,0}}, +/* 17106 */ {(11<<2)|2,{115,45,0}}, +/* 17107 */ {(11<<2)|2,{115,45,0}}, +/* 17108 */ {(11<<2)|2,{115,45,0}}, +/* 17109 */ {(11<<2)|2,{115,45,0}}, +/* 17110 */ {(11<<2)|2,{115,45,0}}, +/* 17111 */ {(11<<2)|2,{115,45,0}}, +/* 17112 */ {(11<<2)|2,{115,45,0}}, +/* 17113 */ {(11<<2)|2,{115,45,0}}, +/* 17114 */ {(11<<2)|2,{115,45,0}}, +/* 17115 */ {(11<<2)|2,{115,45,0}}, +/* 17116 */ {(11<<2)|2,{115,45,0}}, +/* 17117 */ {(11<<2)|2,{115,45,0}}, +/* 17118 */ {(11<<2)|2,{115,45,0}}, +/* 17119 */ {(11<<2)|2,{115,45,0}}, +/* 17120 */ {(16<<2)|3,{115,46,48}}, +/* 17121 */ {(16<<2)|3,{115,46,49}}, +/* 17122 */ {(16<<2)|3,{115,46,50}}, +/* 17123 */ {(16<<2)|3,{115,46,97}}, +/* 17124 */ {(16<<2)|3,{115,46,99}}, +/* 17125 */ {(16<<2)|3,{115,46,101}}, +/* 17126 */ {(16<<2)|3,{115,46,105}}, +/* 17127 */ {(16<<2)|3,{115,46,111}}, +/* 17128 */ {(16<<2)|3,{115,46,115}}, +/* 17129 */ {(16<<2)|3,{115,46,116}}, +/* 17130 */ {(11<<2)|2,{115,46,0}}, +/* 17131 */ {(11<<2)|2,{115,46,0}}, +/* 17132 */ {(11<<2)|2,{115,46,0}}, +/* 17133 */ {(11<<2)|2,{115,46,0}}, +/* 17134 */ {(11<<2)|2,{115,46,0}}, +/* 17135 */ {(11<<2)|2,{115,46,0}}, +/* 17136 */ {(11<<2)|2,{115,46,0}}, +/* 17137 */ {(11<<2)|2,{115,46,0}}, +/* 17138 */ {(11<<2)|2,{115,46,0}}, +/* 17139 */ {(11<<2)|2,{115,46,0}}, +/* 17140 */ {(11<<2)|2,{115,46,0}}, +/* 17141 */ {(11<<2)|2,{115,46,0}}, +/* 17142 */ {(11<<2)|2,{115,46,0}}, +/* 17143 */ {(11<<2)|2,{115,46,0}}, +/* 17144 */ {(11<<2)|2,{115,46,0}}, +/* 17145 */ {(11<<2)|2,{115,46,0}}, +/* 17146 */ {(11<<2)|2,{115,46,0}}, +/* 17147 */ {(11<<2)|2,{115,46,0}}, +/* 17148 */ {(11<<2)|2,{115,46,0}}, +/* 17149 */ {(11<<2)|2,{115,46,0}}, +/* 17150 */ {(11<<2)|2,{115,46,0}}, +/* 17151 */ {(11<<2)|2,{115,46,0}}, +/* 17152 */ {(16<<2)|3,{115,47,48}}, +/* 17153 */ {(16<<2)|3,{115,47,49}}, +/* 17154 */ {(16<<2)|3,{115,47,50}}, +/* 17155 */ {(16<<2)|3,{115,47,97}}, +/* 17156 */ {(16<<2)|3,{115,47,99}}, +/* 17157 */ {(16<<2)|3,{115,47,101}}, +/* 17158 */ {(16<<2)|3,{115,47,105}}, +/* 17159 */ {(16<<2)|3,{115,47,111}}, +/* 17160 */ {(16<<2)|3,{115,47,115}}, +/* 17161 */ {(16<<2)|3,{115,47,116}}, +/* 17162 */ {(11<<2)|2,{115,47,0}}, +/* 17163 */ {(11<<2)|2,{115,47,0}}, +/* 17164 */ {(11<<2)|2,{115,47,0}}, +/* 17165 */ {(11<<2)|2,{115,47,0}}, +/* 17166 */ {(11<<2)|2,{115,47,0}}, +/* 17167 */ {(11<<2)|2,{115,47,0}}, +/* 17168 */ {(11<<2)|2,{115,47,0}}, +/* 17169 */ {(11<<2)|2,{115,47,0}}, +/* 17170 */ {(11<<2)|2,{115,47,0}}, +/* 17171 */ {(11<<2)|2,{115,47,0}}, +/* 17172 */ {(11<<2)|2,{115,47,0}}, +/* 17173 */ {(11<<2)|2,{115,47,0}}, +/* 17174 */ {(11<<2)|2,{115,47,0}}, +/* 17175 */ {(11<<2)|2,{115,47,0}}, +/* 17176 */ {(11<<2)|2,{115,47,0}}, +/* 17177 */ {(11<<2)|2,{115,47,0}}, +/* 17178 */ {(11<<2)|2,{115,47,0}}, +/* 17179 */ {(11<<2)|2,{115,47,0}}, +/* 17180 */ {(11<<2)|2,{115,47,0}}, +/* 17181 */ {(11<<2)|2,{115,47,0}}, +/* 17182 */ {(11<<2)|2,{115,47,0}}, +/* 17183 */ {(11<<2)|2,{115,47,0}}, +/* 17184 */ {(16<<2)|3,{115,51,48}}, +/* 17185 */ {(16<<2)|3,{115,51,49}}, +/* 17186 */ {(16<<2)|3,{115,51,50}}, +/* 17187 */ {(16<<2)|3,{115,51,97}}, +/* 17188 */ {(16<<2)|3,{115,51,99}}, +/* 17189 */ {(16<<2)|3,{115,51,101}}, +/* 17190 */ {(16<<2)|3,{115,51,105}}, +/* 17191 */ {(16<<2)|3,{115,51,111}}, +/* 17192 */ {(16<<2)|3,{115,51,115}}, +/* 17193 */ {(16<<2)|3,{115,51,116}}, +/* 17194 */ {(11<<2)|2,{115,51,0}}, +/* 17195 */ {(11<<2)|2,{115,51,0}}, +/* 17196 */ {(11<<2)|2,{115,51,0}}, +/* 17197 */ {(11<<2)|2,{115,51,0}}, +/* 17198 */ {(11<<2)|2,{115,51,0}}, +/* 17199 */ {(11<<2)|2,{115,51,0}}, +/* 17200 */ {(11<<2)|2,{115,51,0}}, +/* 17201 */ {(11<<2)|2,{115,51,0}}, +/* 17202 */ {(11<<2)|2,{115,51,0}}, +/* 17203 */ {(11<<2)|2,{115,51,0}}, +/* 17204 */ {(11<<2)|2,{115,51,0}}, +/* 17205 */ {(11<<2)|2,{115,51,0}}, +/* 17206 */ {(11<<2)|2,{115,51,0}}, +/* 17207 */ {(11<<2)|2,{115,51,0}}, +/* 17208 */ {(11<<2)|2,{115,51,0}}, +/* 17209 */ {(11<<2)|2,{115,51,0}}, +/* 17210 */ {(11<<2)|2,{115,51,0}}, +/* 17211 */ {(11<<2)|2,{115,51,0}}, +/* 17212 */ {(11<<2)|2,{115,51,0}}, +/* 17213 */ {(11<<2)|2,{115,51,0}}, +/* 17214 */ {(11<<2)|2,{115,51,0}}, +/* 17215 */ {(11<<2)|2,{115,51,0}}, +/* 17216 */ {(16<<2)|3,{115,52,48}}, +/* 17217 */ {(16<<2)|3,{115,52,49}}, +/* 17218 */ {(16<<2)|3,{115,52,50}}, +/* 17219 */ {(16<<2)|3,{115,52,97}}, +/* 17220 */ {(16<<2)|3,{115,52,99}}, +/* 17221 */ {(16<<2)|3,{115,52,101}}, +/* 17222 */ {(16<<2)|3,{115,52,105}}, +/* 17223 */ {(16<<2)|3,{115,52,111}}, +/* 17224 */ {(16<<2)|3,{115,52,115}}, +/* 17225 */ {(16<<2)|3,{115,52,116}}, +/* 17226 */ {(11<<2)|2,{115,52,0}}, +/* 17227 */ {(11<<2)|2,{115,52,0}}, +/* 17228 */ {(11<<2)|2,{115,52,0}}, +/* 17229 */ {(11<<2)|2,{115,52,0}}, +/* 17230 */ {(11<<2)|2,{115,52,0}}, +/* 17231 */ {(11<<2)|2,{115,52,0}}, +/* 17232 */ {(11<<2)|2,{115,52,0}}, +/* 17233 */ {(11<<2)|2,{115,52,0}}, +/* 17234 */ {(11<<2)|2,{115,52,0}}, +/* 17235 */ {(11<<2)|2,{115,52,0}}, +/* 17236 */ {(11<<2)|2,{115,52,0}}, +/* 17237 */ {(11<<2)|2,{115,52,0}}, +/* 17238 */ {(11<<2)|2,{115,52,0}}, +/* 17239 */ {(11<<2)|2,{115,52,0}}, +/* 17240 */ {(11<<2)|2,{115,52,0}}, +/* 17241 */ {(11<<2)|2,{115,52,0}}, +/* 17242 */ {(11<<2)|2,{115,52,0}}, +/* 17243 */ {(11<<2)|2,{115,52,0}}, +/* 17244 */ {(11<<2)|2,{115,52,0}}, +/* 17245 */ {(11<<2)|2,{115,52,0}}, +/* 17246 */ {(11<<2)|2,{115,52,0}}, +/* 17247 */ {(11<<2)|2,{115,52,0}}, +/* 17248 */ {(16<<2)|3,{115,53,48}}, +/* 17249 */ {(16<<2)|3,{115,53,49}}, +/* 17250 */ {(16<<2)|3,{115,53,50}}, +/* 17251 */ {(16<<2)|3,{115,53,97}}, +/* 17252 */ {(16<<2)|3,{115,53,99}}, +/* 17253 */ {(16<<2)|3,{115,53,101}}, +/* 17254 */ {(16<<2)|3,{115,53,105}}, +/* 17255 */ {(16<<2)|3,{115,53,111}}, +/* 17256 */ {(16<<2)|3,{115,53,115}}, +/* 17257 */ {(16<<2)|3,{115,53,116}}, +/* 17258 */ {(11<<2)|2,{115,53,0}}, +/* 17259 */ {(11<<2)|2,{115,53,0}}, +/* 17260 */ {(11<<2)|2,{115,53,0}}, +/* 17261 */ {(11<<2)|2,{115,53,0}}, +/* 17262 */ {(11<<2)|2,{115,53,0}}, +/* 17263 */ {(11<<2)|2,{115,53,0}}, +/* 17264 */ {(11<<2)|2,{115,53,0}}, +/* 17265 */ {(11<<2)|2,{115,53,0}}, +/* 17266 */ {(11<<2)|2,{115,53,0}}, +/* 17267 */ {(11<<2)|2,{115,53,0}}, +/* 17268 */ {(11<<2)|2,{115,53,0}}, +/* 17269 */ {(11<<2)|2,{115,53,0}}, +/* 17270 */ {(11<<2)|2,{115,53,0}}, +/* 17271 */ {(11<<2)|2,{115,53,0}}, +/* 17272 */ {(11<<2)|2,{115,53,0}}, +/* 17273 */ {(11<<2)|2,{115,53,0}}, +/* 17274 */ {(11<<2)|2,{115,53,0}}, +/* 17275 */ {(11<<2)|2,{115,53,0}}, +/* 17276 */ {(11<<2)|2,{115,53,0}}, +/* 17277 */ {(11<<2)|2,{115,53,0}}, +/* 17278 */ {(11<<2)|2,{115,53,0}}, +/* 17279 */ {(11<<2)|2,{115,53,0}}, +/* 17280 */ {(16<<2)|3,{115,54,48}}, +/* 17281 */ {(16<<2)|3,{115,54,49}}, +/* 17282 */ {(16<<2)|3,{115,54,50}}, +/* 17283 */ {(16<<2)|3,{115,54,97}}, +/* 17284 */ {(16<<2)|3,{115,54,99}}, +/* 17285 */ {(16<<2)|3,{115,54,101}}, +/* 17286 */ {(16<<2)|3,{115,54,105}}, +/* 17287 */ {(16<<2)|3,{115,54,111}}, +/* 17288 */ {(16<<2)|3,{115,54,115}}, +/* 17289 */ {(16<<2)|3,{115,54,116}}, +/* 17290 */ {(11<<2)|2,{115,54,0}}, +/* 17291 */ {(11<<2)|2,{115,54,0}}, +/* 17292 */ {(11<<2)|2,{115,54,0}}, +/* 17293 */ {(11<<2)|2,{115,54,0}}, +/* 17294 */ {(11<<2)|2,{115,54,0}}, +/* 17295 */ {(11<<2)|2,{115,54,0}}, +/* 17296 */ {(11<<2)|2,{115,54,0}}, +/* 17297 */ {(11<<2)|2,{115,54,0}}, +/* 17298 */ {(11<<2)|2,{115,54,0}}, +/* 17299 */ {(11<<2)|2,{115,54,0}}, +/* 17300 */ {(11<<2)|2,{115,54,0}}, +/* 17301 */ {(11<<2)|2,{115,54,0}}, +/* 17302 */ {(11<<2)|2,{115,54,0}}, +/* 17303 */ {(11<<2)|2,{115,54,0}}, +/* 17304 */ {(11<<2)|2,{115,54,0}}, +/* 17305 */ {(11<<2)|2,{115,54,0}}, +/* 17306 */ {(11<<2)|2,{115,54,0}}, +/* 17307 */ {(11<<2)|2,{115,54,0}}, +/* 17308 */ {(11<<2)|2,{115,54,0}}, +/* 17309 */ {(11<<2)|2,{115,54,0}}, +/* 17310 */ {(11<<2)|2,{115,54,0}}, +/* 17311 */ {(11<<2)|2,{115,54,0}}, +/* 17312 */ {(16<<2)|3,{115,55,48}}, +/* 17313 */ {(16<<2)|3,{115,55,49}}, +/* 17314 */ {(16<<2)|3,{115,55,50}}, +/* 17315 */ {(16<<2)|3,{115,55,97}}, +/* 17316 */ {(16<<2)|3,{115,55,99}}, +/* 17317 */ {(16<<2)|3,{115,55,101}}, +/* 17318 */ {(16<<2)|3,{115,55,105}}, +/* 17319 */ {(16<<2)|3,{115,55,111}}, +/* 17320 */ {(16<<2)|3,{115,55,115}}, +/* 17321 */ {(16<<2)|3,{115,55,116}}, +/* 17322 */ {(11<<2)|2,{115,55,0}}, +/* 17323 */ {(11<<2)|2,{115,55,0}}, +/* 17324 */ {(11<<2)|2,{115,55,0}}, +/* 17325 */ {(11<<2)|2,{115,55,0}}, +/* 17326 */ {(11<<2)|2,{115,55,0}}, +/* 17327 */ {(11<<2)|2,{115,55,0}}, +/* 17328 */ {(11<<2)|2,{115,55,0}}, +/* 17329 */ {(11<<2)|2,{115,55,0}}, +/* 17330 */ {(11<<2)|2,{115,55,0}}, +/* 17331 */ {(11<<2)|2,{115,55,0}}, +/* 17332 */ {(11<<2)|2,{115,55,0}}, +/* 17333 */ {(11<<2)|2,{115,55,0}}, +/* 17334 */ {(11<<2)|2,{115,55,0}}, +/* 17335 */ {(11<<2)|2,{115,55,0}}, +/* 17336 */ {(11<<2)|2,{115,55,0}}, +/* 17337 */ {(11<<2)|2,{115,55,0}}, +/* 17338 */ {(11<<2)|2,{115,55,0}}, +/* 17339 */ {(11<<2)|2,{115,55,0}}, +/* 17340 */ {(11<<2)|2,{115,55,0}}, +/* 17341 */ {(11<<2)|2,{115,55,0}}, +/* 17342 */ {(11<<2)|2,{115,55,0}}, +/* 17343 */ {(11<<2)|2,{115,55,0}}, +/* 17344 */ {(16<<2)|3,{115,56,48}}, +/* 17345 */ {(16<<2)|3,{115,56,49}}, +/* 17346 */ {(16<<2)|3,{115,56,50}}, +/* 17347 */ {(16<<2)|3,{115,56,97}}, +/* 17348 */ {(16<<2)|3,{115,56,99}}, +/* 17349 */ {(16<<2)|3,{115,56,101}}, +/* 17350 */ {(16<<2)|3,{115,56,105}}, +/* 17351 */ {(16<<2)|3,{115,56,111}}, +/* 17352 */ {(16<<2)|3,{115,56,115}}, +/* 17353 */ {(16<<2)|3,{115,56,116}}, +/* 17354 */ {(11<<2)|2,{115,56,0}}, +/* 17355 */ {(11<<2)|2,{115,56,0}}, +/* 17356 */ {(11<<2)|2,{115,56,0}}, +/* 17357 */ {(11<<2)|2,{115,56,0}}, +/* 17358 */ {(11<<2)|2,{115,56,0}}, +/* 17359 */ {(11<<2)|2,{115,56,0}}, +/* 17360 */ {(11<<2)|2,{115,56,0}}, +/* 17361 */ {(11<<2)|2,{115,56,0}}, +/* 17362 */ {(11<<2)|2,{115,56,0}}, +/* 17363 */ {(11<<2)|2,{115,56,0}}, +/* 17364 */ {(11<<2)|2,{115,56,0}}, +/* 17365 */ {(11<<2)|2,{115,56,0}}, +/* 17366 */ {(11<<2)|2,{115,56,0}}, +/* 17367 */ {(11<<2)|2,{115,56,0}}, +/* 17368 */ {(11<<2)|2,{115,56,0}}, +/* 17369 */ {(11<<2)|2,{115,56,0}}, +/* 17370 */ {(11<<2)|2,{115,56,0}}, +/* 17371 */ {(11<<2)|2,{115,56,0}}, +/* 17372 */ {(11<<2)|2,{115,56,0}}, +/* 17373 */ {(11<<2)|2,{115,56,0}}, +/* 17374 */ {(11<<2)|2,{115,56,0}}, +/* 17375 */ {(11<<2)|2,{115,56,0}}, +/* 17376 */ {(16<<2)|3,{115,57,48}}, +/* 17377 */ {(16<<2)|3,{115,57,49}}, +/* 17378 */ {(16<<2)|3,{115,57,50}}, +/* 17379 */ {(16<<2)|3,{115,57,97}}, +/* 17380 */ {(16<<2)|3,{115,57,99}}, +/* 17381 */ {(16<<2)|3,{115,57,101}}, +/* 17382 */ {(16<<2)|3,{115,57,105}}, +/* 17383 */ {(16<<2)|3,{115,57,111}}, +/* 17384 */ {(16<<2)|3,{115,57,115}}, +/* 17385 */ {(16<<2)|3,{115,57,116}}, +/* 17386 */ {(11<<2)|2,{115,57,0}}, +/* 17387 */ {(11<<2)|2,{115,57,0}}, +/* 17388 */ {(11<<2)|2,{115,57,0}}, +/* 17389 */ {(11<<2)|2,{115,57,0}}, +/* 17390 */ {(11<<2)|2,{115,57,0}}, +/* 17391 */ {(11<<2)|2,{115,57,0}}, +/* 17392 */ {(11<<2)|2,{115,57,0}}, +/* 17393 */ {(11<<2)|2,{115,57,0}}, +/* 17394 */ {(11<<2)|2,{115,57,0}}, +/* 17395 */ {(11<<2)|2,{115,57,0}}, +/* 17396 */ {(11<<2)|2,{115,57,0}}, +/* 17397 */ {(11<<2)|2,{115,57,0}}, +/* 17398 */ {(11<<2)|2,{115,57,0}}, +/* 17399 */ {(11<<2)|2,{115,57,0}}, +/* 17400 */ {(11<<2)|2,{115,57,0}}, +/* 17401 */ {(11<<2)|2,{115,57,0}}, +/* 17402 */ {(11<<2)|2,{115,57,0}}, +/* 17403 */ {(11<<2)|2,{115,57,0}}, +/* 17404 */ {(11<<2)|2,{115,57,0}}, +/* 17405 */ {(11<<2)|2,{115,57,0}}, +/* 17406 */ {(11<<2)|2,{115,57,0}}, +/* 17407 */ {(11<<2)|2,{115,57,0}}, +/* 17408 */ {(16<<2)|3,{115,61,48}}, +/* 17409 */ {(16<<2)|3,{115,61,49}}, +/* 17410 */ {(16<<2)|3,{115,61,50}}, +/* 17411 */ {(16<<2)|3,{115,61,97}}, +/* 17412 */ {(16<<2)|3,{115,61,99}}, +/* 17413 */ {(16<<2)|3,{115,61,101}}, +/* 17414 */ {(16<<2)|3,{115,61,105}}, +/* 17415 */ {(16<<2)|3,{115,61,111}}, +/* 17416 */ {(16<<2)|3,{115,61,115}}, +/* 17417 */ {(16<<2)|3,{115,61,116}}, +/* 17418 */ {(11<<2)|2,{115,61,0}}, +/* 17419 */ {(11<<2)|2,{115,61,0}}, +/* 17420 */ {(11<<2)|2,{115,61,0}}, +/* 17421 */ {(11<<2)|2,{115,61,0}}, +/* 17422 */ {(11<<2)|2,{115,61,0}}, +/* 17423 */ {(11<<2)|2,{115,61,0}}, +/* 17424 */ {(11<<2)|2,{115,61,0}}, +/* 17425 */ {(11<<2)|2,{115,61,0}}, +/* 17426 */ {(11<<2)|2,{115,61,0}}, +/* 17427 */ {(11<<2)|2,{115,61,0}}, +/* 17428 */ {(11<<2)|2,{115,61,0}}, +/* 17429 */ {(11<<2)|2,{115,61,0}}, +/* 17430 */ {(11<<2)|2,{115,61,0}}, +/* 17431 */ {(11<<2)|2,{115,61,0}}, +/* 17432 */ {(11<<2)|2,{115,61,0}}, +/* 17433 */ {(11<<2)|2,{115,61,0}}, +/* 17434 */ {(11<<2)|2,{115,61,0}}, +/* 17435 */ {(11<<2)|2,{115,61,0}}, +/* 17436 */ {(11<<2)|2,{115,61,0}}, +/* 17437 */ {(11<<2)|2,{115,61,0}}, +/* 17438 */ {(11<<2)|2,{115,61,0}}, +/* 17439 */ {(11<<2)|2,{115,61,0}}, +/* 17440 */ {(16<<2)|3,{115,65,48}}, +/* 17441 */ {(16<<2)|3,{115,65,49}}, +/* 17442 */ {(16<<2)|3,{115,65,50}}, +/* 17443 */ {(16<<2)|3,{115,65,97}}, +/* 17444 */ {(16<<2)|3,{115,65,99}}, +/* 17445 */ {(16<<2)|3,{115,65,101}}, +/* 17446 */ {(16<<2)|3,{115,65,105}}, +/* 17447 */ {(16<<2)|3,{115,65,111}}, +/* 17448 */ {(16<<2)|3,{115,65,115}}, +/* 17449 */ {(16<<2)|3,{115,65,116}}, +/* 17450 */ {(11<<2)|2,{115,65,0}}, +/* 17451 */ {(11<<2)|2,{115,65,0}}, +/* 17452 */ {(11<<2)|2,{115,65,0}}, +/* 17453 */ {(11<<2)|2,{115,65,0}}, +/* 17454 */ {(11<<2)|2,{115,65,0}}, +/* 17455 */ {(11<<2)|2,{115,65,0}}, +/* 17456 */ {(11<<2)|2,{115,65,0}}, +/* 17457 */ {(11<<2)|2,{115,65,0}}, +/* 17458 */ {(11<<2)|2,{115,65,0}}, +/* 17459 */ {(11<<2)|2,{115,65,0}}, +/* 17460 */ {(11<<2)|2,{115,65,0}}, +/* 17461 */ {(11<<2)|2,{115,65,0}}, +/* 17462 */ {(11<<2)|2,{115,65,0}}, +/* 17463 */ {(11<<2)|2,{115,65,0}}, +/* 17464 */ {(11<<2)|2,{115,65,0}}, +/* 17465 */ {(11<<2)|2,{115,65,0}}, +/* 17466 */ {(11<<2)|2,{115,65,0}}, +/* 17467 */ {(11<<2)|2,{115,65,0}}, +/* 17468 */ {(11<<2)|2,{115,65,0}}, +/* 17469 */ {(11<<2)|2,{115,65,0}}, +/* 17470 */ {(11<<2)|2,{115,65,0}}, +/* 17471 */ {(11<<2)|2,{115,65,0}}, +/* 17472 */ {(16<<2)|3,{115,95,48}}, +/* 17473 */ {(16<<2)|3,{115,95,49}}, +/* 17474 */ {(16<<2)|3,{115,95,50}}, +/* 17475 */ {(16<<2)|3,{115,95,97}}, +/* 17476 */ {(16<<2)|3,{115,95,99}}, +/* 17477 */ {(16<<2)|3,{115,95,101}}, +/* 17478 */ {(16<<2)|3,{115,95,105}}, +/* 17479 */ {(16<<2)|3,{115,95,111}}, +/* 17480 */ {(16<<2)|3,{115,95,115}}, +/* 17481 */ {(16<<2)|3,{115,95,116}}, +/* 17482 */ {(11<<2)|2,{115,95,0}}, +/* 17483 */ {(11<<2)|2,{115,95,0}}, +/* 17484 */ {(11<<2)|2,{115,95,0}}, +/* 17485 */ {(11<<2)|2,{115,95,0}}, +/* 17486 */ {(11<<2)|2,{115,95,0}}, +/* 17487 */ {(11<<2)|2,{115,95,0}}, +/* 17488 */ {(11<<2)|2,{115,95,0}}, +/* 17489 */ {(11<<2)|2,{115,95,0}}, +/* 17490 */ {(11<<2)|2,{115,95,0}}, +/* 17491 */ {(11<<2)|2,{115,95,0}}, +/* 17492 */ {(11<<2)|2,{115,95,0}}, +/* 17493 */ {(11<<2)|2,{115,95,0}}, +/* 17494 */ {(11<<2)|2,{115,95,0}}, +/* 17495 */ {(11<<2)|2,{115,95,0}}, +/* 17496 */ {(11<<2)|2,{115,95,0}}, +/* 17497 */ {(11<<2)|2,{115,95,0}}, +/* 17498 */ {(11<<2)|2,{115,95,0}}, +/* 17499 */ {(11<<2)|2,{115,95,0}}, +/* 17500 */ {(11<<2)|2,{115,95,0}}, +/* 17501 */ {(11<<2)|2,{115,95,0}}, +/* 17502 */ {(11<<2)|2,{115,95,0}}, +/* 17503 */ {(11<<2)|2,{115,95,0}}, +/* 17504 */ {(16<<2)|3,{115,98,48}}, +/* 17505 */ {(16<<2)|3,{115,98,49}}, +/* 17506 */ {(16<<2)|3,{115,98,50}}, +/* 17507 */ {(16<<2)|3,{115,98,97}}, +/* 17508 */ {(16<<2)|3,{115,98,99}}, +/* 17509 */ {(16<<2)|3,{115,98,101}}, +/* 17510 */ {(16<<2)|3,{115,98,105}}, +/* 17511 */ {(16<<2)|3,{115,98,111}}, +/* 17512 */ {(16<<2)|3,{115,98,115}}, +/* 17513 */ {(16<<2)|3,{115,98,116}}, +/* 17514 */ {(11<<2)|2,{115,98,0}}, +/* 17515 */ {(11<<2)|2,{115,98,0}}, +/* 17516 */ {(11<<2)|2,{115,98,0}}, +/* 17517 */ {(11<<2)|2,{115,98,0}}, +/* 17518 */ {(11<<2)|2,{115,98,0}}, +/* 17519 */ {(11<<2)|2,{115,98,0}}, +/* 17520 */ {(11<<2)|2,{115,98,0}}, +/* 17521 */ {(11<<2)|2,{115,98,0}}, +/* 17522 */ {(11<<2)|2,{115,98,0}}, +/* 17523 */ {(11<<2)|2,{115,98,0}}, +/* 17524 */ {(11<<2)|2,{115,98,0}}, +/* 17525 */ {(11<<2)|2,{115,98,0}}, +/* 17526 */ {(11<<2)|2,{115,98,0}}, +/* 17527 */ {(11<<2)|2,{115,98,0}}, +/* 17528 */ {(11<<2)|2,{115,98,0}}, +/* 17529 */ {(11<<2)|2,{115,98,0}}, +/* 17530 */ {(11<<2)|2,{115,98,0}}, +/* 17531 */ {(11<<2)|2,{115,98,0}}, +/* 17532 */ {(11<<2)|2,{115,98,0}}, +/* 17533 */ {(11<<2)|2,{115,98,0}}, +/* 17534 */ {(11<<2)|2,{115,98,0}}, +/* 17535 */ {(11<<2)|2,{115,98,0}}, +/* 17536 */ {(16<<2)|3,{115,100,48}}, +/* 17537 */ {(16<<2)|3,{115,100,49}}, +/* 17538 */ {(16<<2)|3,{115,100,50}}, +/* 17539 */ {(16<<2)|3,{115,100,97}}, +/* 17540 */ {(16<<2)|3,{115,100,99}}, +/* 17541 */ {(16<<2)|3,{115,100,101}}, +/* 17542 */ {(16<<2)|3,{115,100,105}}, +/* 17543 */ {(16<<2)|3,{115,100,111}}, +/* 17544 */ {(16<<2)|3,{115,100,115}}, +/* 17545 */ {(16<<2)|3,{115,100,116}}, +/* 17546 */ {(11<<2)|2,{115,100,0}}, +/* 17547 */ {(11<<2)|2,{115,100,0}}, +/* 17548 */ {(11<<2)|2,{115,100,0}}, +/* 17549 */ {(11<<2)|2,{115,100,0}}, +/* 17550 */ {(11<<2)|2,{115,100,0}}, +/* 17551 */ {(11<<2)|2,{115,100,0}}, +/* 17552 */ {(11<<2)|2,{115,100,0}}, +/* 17553 */ {(11<<2)|2,{115,100,0}}, +/* 17554 */ {(11<<2)|2,{115,100,0}}, +/* 17555 */ {(11<<2)|2,{115,100,0}}, +/* 17556 */ {(11<<2)|2,{115,100,0}}, +/* 17557 */ {(11<<2)|2,{115,100,0}}, +/* 17558 */ {(11<<2)|2,{115,100,0}}, +/* 17559 */ {(11<<2)|2,{115,100,0}}, +/* 17560 */ {(11<<2)|2,{115,100,0}}, +/* 17561 */ {(11<<2)|2,{115,100,0}}, +/* 17562 */ {(11<<2)|2,{115,100,0}}, +/* 17563 */ {(11<<2)|2,{115,100,0}}, +/* 17564 */ {(11<<2)|2,{115,100,0}}, +/* 17565 */ {(11<<2)|2,{115,100,0}}, +/* 17566 */ {(11<<2)|2,{115,100,0}}, +/* 17567 */ {(11<<2)|2,{115,100,0}}, +/* 17568 */ {(16<<2)|3,{115,102,48}}, +/* 17569 */ {(16<<2)|3,{115,102,49}}, +/* 17570 */ {(16<<2)|3,{115,102,50}}, +/* 17571 */ {(16<<2)|3,{115,102,97}}, +/* 17572 */ {(16<<2)|3,{115,102,99}}, +/* 17573 */ {(16<<2)|3,{115,102,101}}, +/* 17574 */ {(16<<2)|3,{115,102,105}}, +/* 17575 */ {(16<<2)|3,{115,102,111}}, +/* 17576 */ {(16<<2)|3,{115,102,115}}, +/* 17577 */ {(16<<2)|3,{115,102,116}}, +/* 17578 */ {(11<<2)|2,{115,102,0}}, +/* 17579 */ {(11<<2)|2,{115,102,0}}, +/* 17580 */ {(11<<2)|2,{115,102,0}}, +/* 17581 */ {(11<<2)|2,{115,102,0}}, +/* 17582 */ {(11<<2)|2,{115,102,0}}, +/* 17583 */ {(11<<2)|2,{115,102,0}}, +/* 17584 */ {(11<<2)|2,{115,102,0}}, +/* 17585 */ {(11<<2)|2,{115,102,0}}, +/* 17586 */ {(11<<2)|2,{115,102,0}}, +/* 17587 */ {(11<<2)|2,{115,102,0}}, +/* 17588 */ {(11<<2)|2,{115,102,0}}, +/* 17589 */ {(11<<2)|2,{115,102,0}}, +/* 17590 */ {(11<<2)|2,{115,102,0}}, +/* 17591 */ {(11<<2)|2,{115,102,0}}, +/* 17592 */ {(11<<2)|2,{115,102,0}}, +/* 17593 */ {(11<<2)|2,{115,102,0}}, +/* 17594 */ {(11<<2)|2,{115,102,0}}, +/* 17595 */ {(11<<2)|2,{115,102,0}}, +/* 17596 */ {(11<<2)|2,{115,102,0}}, +/* 17597 */ {(11<<2)|2,{115,102,0}}, +/* 17598 */ {(11<<2)|2,{115,102,0}}, +/* 17599 */ {(11<<2)|2,{115,102,0}}, +/* 17600 */ {(16<<2)|3,{115,103,48}}, +/* 17601 */ {(16<<2)|3,{115,103,49}}, +/* 17602 */ {(16<<2)|3,{115,103,50}}, +/* 17603 */ {(16<<2)|3,{115,103,97}}, +/* 17604 */ {(16<<2)|3,{115,103,99}}, +/* 17605 */ {(16<<2)|3,{115,103,101}}, +/* 17606 */ {(16<<2)|3,{115,103,105}}, +/* 17607 */ {(16<<2)|3,{115,103,111}}, +/* 17608 */ {(16<<2)|3,{115,103,115}}, +/* 17609 */ {(16<<2)|3,{115,103,116}}, +/* 17610 */ {(11<<2)|2,{115,103,0}}, +/* 17611 */ {(11<<2)|2,{115,103,0}}, +/* 17612 */ {(11<<2)|2,{115,103,0}}, +/* 17613 */ {(11<<2)|2,{115,103,0}}, +/* 17614 */ {(11<<2)|2,{115,103,0}}, +/* 17615 */ {(11<<2)|2,{115,103,0}}, +/* 17616 */ {(11<<2)|2,{115,103,0}}, +/* 17617 */ {(11<<2)|2,{115,103,0}}, +/* 17618 */ {(11<<2)|2,{115,103,0}}, +/* 17619 */ {(11<<2)|2,{115,103,0}}, +/* 17620 */ {(11<<2)|2,{115,103,0}}, +/* 17621 */ {(11<<2)|2,{115,103,0}}, +/* 17622 */ {(11<<2)|2,{115,103,0}}, +/* 17623 */ {(11<<2)|2,{115,103,0}}, +/* 17624 */ {(11<<2)|2,{115,103,0}}, +/* 17625 */ {(11<<2)|2,{115,103,0}}, +/* 17626 */ {(11<<2)|2,{115,103,0}}, +/* 17627 */ {(11<<2)|2,{115,103,0}}, +/* 17628 */ {(11<<2)|2,{115,103,0}}, +/* 17629 */ {(11<<2)|2,{115,103,0}}, +/* 17630 */ {(11<<2)|2,{115,103,0}}, +/* 17631 */ {(11<<2)|2,{115,103,0}}, +/* 17632 */ {(16<<2)|3,{115,104,48}}, +/* 17633 */ {(16<<2)|3,{115,104,49}}, +/* 17634 */ {(16<<2)|3,{115,104,50}}, +/* 17635 */ {(16<<2)|3,{115,104,97}}, +/* 17636 */ {(16<<2)|3,{115,104,99}}, +/* 17637 */ {(16<<2)|3,{115,104,101}}, +/* 17638 */ {(16<<2)|3,{115,104,105}}, +/* 17639 */ {(16<<2)|3,{115,104,111}}, +/* 17640 */ {(16<<2)|3,{115,104,115}}, +/* 17641 */ {(16<<2)|3,{115,104,116}}, +/* 17642 */ {(11<<2)|2,{115,104,0}}, +/* 17643 */ {(11<<2)|2,{115,104,0}}, +/* 17644 */ {(11<<2)|2,{115,104,0}}, +/* 17645 */ {(11<<2)|2,{115,104,0}}, +/* 17646 */ {(11<<2)|2,{115,104,0}}, +/* 17647 */ {(11<<2)|2,{115,104,0}}, +/* 17648 */ {(11<<2)|2,{115,104,0}}, +/* 17649 */ {(11<<2)|2,{115,104,0}}, +/* 17650 */ {(11<<2)|2,{115,104,0}}, +/* 17651 */ {(11<<2)|2,{115,104,0}}, +/* 17652 */ {(11<<2)|2,{115,104,0}}, +/* 17653 */ {(11<<2)|2,{115,104,0}}, +/* 17654 */ {(11<<2)|2,{115,104,0}}, +/* 17655 */ {(11<<2)|2,{115,104,0}}, +/* 17656 */ {(11<<2)|2,{115,104,0}}, +/* 17657 */ {(11<<2)|2,{115,104,0}}, +/* 17658 */ {(11<<2)|2,{115,104,0}}, +/* 17659 */ {(11<<2)|2,{115,104,0}}, +/* 17660 */ {(11<<2)|2,{115,104,0}}, +/* 17661 */ {(11<<2)|2,{115,104,0}}, +/* 17662 */ {(11<<2)|2,{115,104,0}}, +/* 17663 */ {(11<<2)|2,{115,104,0}}, +/* 17664 */ {(16<<2)|3,{115,108,48}}, +/* 17665 */ {(16<<2)|3,{115,108,49}}, +/* 17666 */ {(16<<2)|3,{115,108,50}}, +/* 17667 */ {(16<<2)|3,{115,108,97}}, +/* 17668 */ {(16<<2)|3,{115,108,99}}, +/* 17669 */ {(16<<2)|3,{115,108,101}}, +/* 17670 */ {(16<<2)|3,{115,108,105}}, +/* 17671 */ {(16<<2)|3,{115,108,111}}, +/* 17672 */ {(16<<2)|3,{115,108,115}}, +/* 17673 */ {(16<<2)|3,{115,108,116}}, +/* 17674 */ {(11<<2)|2,{115,108,0}}, +/* 17675 */ {(11<<2)|2,{115,108,0}}, +/* 17676 */ {(11<<2)|2,{115,108,0}}, +/* 17677 */ {(11<<2)|2,{115,108,0}}, +/* 17678 */ {(11<<2)|2,{115,108,0}}, +/* 17679 */ {(11<<2)|2,{115,108,0}}, +/* 17680 */ {(11<<2)|2,{115,108,0}}, +/* 17681 */ {(11<<2)|2,{115,108,0}}, +/* 17682 */ {(11<<2)|2,{115,108,0}}, +/* 17683 */ {(11<<2)|2,{115,108,0}}, +/* 17684 */ {(11<<2)|2,{115,108,0}}, +/* 17685 */ {(11<<2)|2,{115,108,0}}, +/* 17686 */ {(11<<2)|2,{115,108,0}}, +/* 17687 */ {(11<<2)|2,{115,108,0}}, +/* 17688 */ {(11<<2)|2,{115,108,0}}, +/* 17689 */ {(11<<2)|2,{115,108,0}}, +/* 17690 */ {(11<<2)|2,{115,108,0}}, +/* 17691 */ {(11<<2)|2,{115,108,0}}, +/* 17692 */ {(11<<2)|2,{115,108,0}}, +/* 17693 */ {(11<<2)|2,{115,108,0}}, +/* 17694 */ {(11<<2)|2,{115,108,0}}, +/* 17695 */ {(11<<2)|2,{115,108,0}}, +/* 17696 */ {(16<<2)|3,{115,109,48}}, +/* 17697 */ {(16<<2)|3,{115,109,49}}, +/* 17698 */ {(16<<2)|3,{115,109,50}}, +/* 17699 */ {(16<<2)|3,{115,109,97}}, +/* 17700 */ {(16<<2)|3,{115,109,99}}, +/* 17701 */ {(16<<2)|3,{115,109,101}}, +/* 17702 */ {(16<<2)|3,{115,109,105}}, +/* 17703 */ {(16<<2)|3,{115,109,111}}, +/* 17704 */ {(16<<2)|3,{115,109,115}}, +/* 17705 */ {(16<<2)|3,{115,109,116}}, +/* 17706 */ {(11<<2)|2,{115,109,0}}, +/* 17707 */ {(11<<2)|2,{115,109,0}}, +/* 17708 */ {(11<<2)|2,{115,109,0}}, +/* 17709 */ {(11<<2)|2,{115,109,0}}, +/* 17710 */ {(11<<2)|2,{115,109,0}}, +/* 17711 */ {(11<<2)|2,{115,109,0}}, +/* 17712 */ {(11<<2)|2,{115,109,0}}, +/* 17713 */ {(11<<2)|2,{115,109,0}}, +/* 17714 */ {(11<<2)|2,{115,109,0}}, +/* 17715 */ {(11<<2)|2,{115,109,0}}, +/* 17716 */ {(11<<2)|2,{115,109,0}}, +/* 17717 */ {(11<<2)|2,{115,109,0}}, +/* 17718 */ {(11<<2)|2,{115,109,0}}, +/* 17719 */ {(11<<2)|2,{115,109,0}}, +/* 17720 */ {(11<<2)|2,{115,109,0}}, +/* 17721 */ {(11<<2)|2,{115,109,0}}, +/* 17722 */ {(11<<2)|2,{115,109,0}}, +/* 17723 */ {(11<<2)|2,{115,109,0}}, +/* 17724 */ {(11<<2)|2,{115,109,0}}, +/* 17725 */ {(11<<2)|2,{115,109,0}}, +/* 17726 */ {(11<<2)|2,{115,109,0}}, +/* 17727 */ {(11<<2)|2,{115,109,0}}, +/* 17728 */ {(16<<2)|3,{115,110,48}}, +/* 17729 */ {(16<<2)|3,{115,110,49}}, +/* 17730 */ {(16<<2)|3,{115,110,50}}, +/* 17731 */ {(16<<2)|3,{115,110,97}}, +/* 17732 */ {(16<<2)|3,{115,110,99}}, +/* 17733 */ {(16<<2)|3,{115,110,101}}, +/* 17734 */ {(16<<2)|3,{115,110,105}}, +/* 17735 */ {(16<<2)|3,{115,110,111}}, +/* 17736 */ {(16<<2)|3,{115,110,115}}, +/* 17737 */ {(16<<2)|3,{115,110,116}}, +/* 17738 */ {(11<<2)|2,{115,110,0}}, +/* 17739 */ {(11<<2)|2,{115,110,0}}, +/* 17740 */ {(11<<2)|2,{115,110,0}}, +/* 17741 */ {(11<<2)|2,{115,110,0}}, +/* 17742 */ {(11<<2)|2,{115,110,0}}, +/* 17743 */ {(11<<2)|2,{115,110,0}}, +/* 17744 */ {(11<<2)|2,{115,110,0}}, +/* 17745 */ {(11<<2)|2,{115,110,0}}, +/* 17746 */ {(11<<2)|2,{115,110,0}}, +/* 17747 */ {(11<<2)|2,{115,110,0}}, +/* 17748 */ {(11<<2)|2,{115,110,0}}, +/* 17749 */ {(11<<2)|2,{115,110,0}}, +/* 17750 */ {(11<<2)|2,{115,110,0}}, +/* 17751 */ {(11<<2)|2,{115,110,0}}, +/* 17752 */ {(11<<2)|2,{115,110,0}}, +/* 17753 */ {(11<<2)|2,{115,110,0}}, +/* 17754 */ {(11<<2)|2,{115,110,0}}, +/* 17755 */ {(11<<2)|2,{115,110,0}}, +/* 17756 */ {(11<<2)|2,{115,110,0}}, +/* 17757 */ {(11<<2)|2,{115,110,0}}, +/* 17758 */ {(11<<2)|2,{115,110,0}}, +/* 17759 */ {(11<<2)|2,{115,110,0}}, +/* 17760 */ {(16<<2)|3,{115,112,48}}, +/* 17761 */ {(16<<2)|3,{115,112,49}}, +/* 17762 */ {(16<<2)|3,{115,112,50}}, +/* 17763 */ {(16<<2)|3,{115,112,97}}, +/* 17764 */ {(16<<2)|3,{115,112,99}}, +/* 17765 */ {(16<<2)|3,{115,112,101}}, +/* 17766 */ {(16<<2)|3,{115,112,105}}, +/* 17767 */ {(16<<2)|3,{115,112,111}}, +/* 17768 */ {(16<<2)|3,{115,112,115}}, +/* 17769 */ {(16<<2)|3,{115,112,116}}, +/* 17770 */ {(11<<2)|2,{115,112,0}}, +/* 17771 */ {(11<<2)|2,{115,112,0}}, +/* 17772 */ {(11<<2)|2,{115,112,0}}, +/* 17773 */ {(11<<2)|2,{115,112,0}}, +/* 17774 */ {(11<<2)|2,{115,112,0}}, +/* 17775 */ {(11<<2)|2,{115,112,0}}, +/* 17776 */ {(11<<2)|2,{115,112,0}}, +/* 17777 */ {(11<<2)|2,{115,112,0}}, +/* 17778 */ {(11<<2)|2,{115,112,0}}, +/* 17779 */ {(11<<2)|2,{115,112,0}}, +/* 17780 */ {(11<<2)|2,{115,112,0}}, +/* 17781 */ {(11<<2)|2,{115,112,0}}, +/* 17782 */ {(11<<2)|2,{115,112,0}}, +/* 17783 */ {(11<<2)|2,{115,112,0}}, +/* 17784 */ {(11<<2)|2,{115,112,0}}, +/* 17785 */ {(11<<2)|2,{115,112,0}}, +/* 17786 */ {(11<<2)|2,{115,112,0}}, +/* 17787 */ {(11<<2)|2,{115,112,0}}, +/* 17788 */ {(11<<2)|2,{115,112,0}}, +/* 17789 */ {(11<<2)|2,{115,112,0}}, +/* 17790 */ {(11<<2)|2,{115,112,0}}, +/* 17791 */ {(11<<2)|2,{115,112,0}}, +/* 17792 */ {(16<<2)|3,{115,114,48}}, +/* 17793 */ {(16<<2)|3,{115,114,49}}, +/* 17794 */ {(16<<2)|3,{115,114,50}}, +/* 17795 */ {(16<<2)|3,{115,114,97}}, +/* 17796 */ {(16<<2)|3,{115,114,99}}, +/* 17797 */ {(16<<2)|3,{115,114,101}}, +/* 17798 */ {(16<<2)|3,{115,114,105}}, +/* 17799 */ {(16<<2)|3,{115,114,111}}, +/* 17800 */ {(16<<2)|3,{115,114,115}}, +/* 17801 */ {(16<<2)|3,{115,114,116}}, +/* 17802 */ {(11<<2)|2,{115,114,0}}, +/* 17803 */ {(11<<2)|2,{115,114,0}}, +/* 17804 */ {(11<<2)|2,{115,114,0}}, +/* 17805 */ {(11<<2)|2,{115,114,0}}, +/* 17806 */ {(11<<2)|2,{115,114,0}}, +/* 17807 */ {(11<<2)|2,{115,114,0}}, +/* 17808 */ {(11<<2)|2,{115,114,0}}, +/* 17809 */ {(11<<2)|2,{115,114,0}}, +/* 17810 */ {(11<<2)|2,{115,114,0}}, +/* 17811 */ {(11<<2)|2,{115,114,0}}, +/* 17812 */ {(11<<2)|2,{115,114,0}}, +/* 17813 */ {(11<<2)|2,{115,114,0}}, +/* 17814 */ {(11<<2)|2,{115,114,0}}, +/* 17815 */ {(11<<2)|2,{115,114,0}}, +/* 17816 */ {(11<<2)|2,{115,114,0}}, +/* 17817 */ {(11<<2)|2,{115,114,0}}, +/* 17818 */ {(11<<2)|2,{115,114,0}}, +/* 17819 */ {(11<<2)|2,{115,114,0}}, +/* 17820 */ {(11<<2)|2,{115,114,0}}, +/* 17821 */ {(11<<2)|2,{115,114,0}}, +/* 17822 */ {(11<<2)|2,{115,114,0}}, +/* 17823 */ {(11<<2)|2,{115,114,0}}, +/* 17824 */ {(16<<2)|3,{115,117,48}}, +/* 17825 */ {(16<<2)|3,{115,117,49}}, +/* 17826 */ {(16<<2)|3,{115,117,50}}, +/* 17827 */ {(16<<2)|3,{115,117,97}}, +/* 17828 */ {(16<<2)|3,{115,117,99}}, +/* 17829 */ {(16<<2)|3,{115,117,101}}, +/* 17830 */ {(16<<2)|3,{115,117,105}}, +/* 17831 */ {(16<<2)|3,{115,117,111}}, +/* 17832 */ {(16<<2)|3,{115,117,115}}, +/* 17833 */ {(16<<2)|3,{115,117,116}}, +/* 17834 */ {(11<<2)|2,{115,117,0}}, +/* 17835 */ {(11<<2)|2,{115,117,0}}, +/* 17836 */ {(11<<2)|2,{115,117,0}}, +/* 17837 */ {(11<<2)|2,{115,117,0}}, +/* 17838 */ {(11<<2)|2,{115,117,0}}, +/* 17839 */ {(11<<2)|2,{115,117,0}}, +/* 17840 */ {(11<<2)|2,{115,117,0}}, +/* 17841 */ {(11<<2)|2,{115,117,0}}, +/* 17842 */ {(11<<2)|2,{115,117,0}}, +/* 17843 */ {(11<<2)|2,{115,117,0}}, +/* 17844 */ {(11<<2)|2,{115,117,0}}, +/* 17845 */ {(11<<2)|2,{115,117,0}}, +/* 17846 */ {(11<<2)|2,{115,117,0}}, +/* 17847 */ {(11<<2)|2,{115,117,0}}, +/* 17848 */ {(11<<2)|2,{115,117,0}}, +/* 17849 */ {(11<<2)|2,{115,117,0}}, +/* 17850 */ {(11<<2)|2,{115,117,0}}, +/* 17851 */ {(11<<2)|2,{115,117,0}}, +/* 17852 */ {(11<<2)|2,{115,117,0}}, +/* 17853 */ {(11<<2)|2,{115,117,0}}, +/* 17854 */ {(11<<2)|2,{115,117,0}}, +/* 17855 */ {(11<<2)|2,{115,117,0}}, +/* 17856 */ {(12<<2)|2,{115,58,0}}, +/* 17857 */ {(12<<2)|2,{115,58,0}}, +/* 17858 */ {(12<<2)|2,{115,58,0}}, +/* 17859 */ {(12<<2)|2,{115,58,0}}, +/* 17860 */ {(12<<2)|2,{115,58,0}}, +/* 17861 */ {(12<<2)|2,{115,58,0}}, +/* 17862 */ {(12<<2)|2,{115,58,0}}, +/* 17863 */ {(12<<2)|2,{115,58,0}}, +/* 17864 */ {(12<<2)|2,{115,58,0}}, +/* 17865 */ {(12<<2)|2,{115,58,0}}, +/* 17866 */ {(12<<2)|2,{115,58,0}}, +/* 17867 */ {(12<<2)|2,{115,58,0}}, +/* 17868 */ {(12<<2)|2,{115,58,0}}, +/* 17869 */ {(12<<2)|2,{115,58,0}}, +/* 17870 */ {(12<<2)|2,{115,58,0}}, +/* 17871 */ {(12<<2)|2,{115,58,0}}, +/* 17872 */ {(12<<2)|2,{115,66,0}}, +/* 17873 */ {(12<<2)|2,{115,66,0}}, +/* 17874 */ {(12<<2)|2,{115,66,0}}, +/* 17875 */ {(12<<2)|2,{115,66,0}}, +/* 17876 */ {(12<<2)|2,{115,66,0}}, +/* 17877 */ {(12<<2)|2,{115,66,0}}, +/* 17878 */ {(12<<2)|2,{115,66,0}}, +/* 17879 */ {(12<<2)|2,{115,66,0}}, +/* 17880 */ {(12<<2)|2,{115,66,0}}, +/* 17881 */ {(12<<2)|2,{115,66,0}}, +/* 17882 */ {(12<<2)|2,{115,66,0}}, +/* 17883 */ {(12<<2)|2,{115,66,0}}, +/* 17884 */ {(12<<2)|2,{115,66,0}}, +/* 17885 */ {(12<<2)|2,{115,66,0}}, +/* 17886 */ {(12<<2)|2,{115,66,0}}, +/* 17887 */ {(12<<2)|2,{115,66,0}}, +/* 17888 */ {(12<<2)|2,{115,67,0}}, +/* 17889 */ {(12<<2)|2,{115,67,0}}, +/* 17890 */ {(12<<2)|2,{115,67,0}}, +/* 17891 */ {(12<<2)|2,{115,67,0}}, +/* 17892 */ {(12<<2)|2,{115,67,0}}, +/* 17893 */ {(12<<2)|2,{115,67,0}}, +/* 17894 */ {(12<<2)|2,{115,67,0}}, +/* 17895 */ {(12<<2)|2,{115,67,0}}, +/* 17896 */ {(12<<2)|2,{115,67,0}}, +/* 17897 */ {(12<<2)|2,{115,67,0}}, +/* 17898 */ {(12<<2)|2,{115,67,0}}, +/* 17899 */ {(12<<2)|2,{115,67,0}}, +/* 17900 */ {(12<<2)|2,{115,67,0}}, +/* 17901 */ {(12<<2)|2,{115,67,0}}, +/* 17902 */ {(12<<2)|2,{115,67,0}}, +/* 17903 */ {(12<<2)|2,{115,67,0}}, +/* 17904 */ {(12<<2)|2,{115,68,0}}, +/* 17905 */ {(12<<2)|2,{115,68,0}}, +/* 17906 */ {(12<<2)|2,{115,68,0}}, +/* 17907 */ {(12<<2)|2,{115,68,0}}, +/* 17908 */ {(12<<2)|2,{115,68,0}}, +/* 17909 */ {(12<<2)|2,{115,68,0}}, +/* 17910 */ {(12<<2)|2,{115,68,0}}, +/* 17911 */ {(12<<2)|2,{115,68,0}}, +/* 17912 */ {(12<<2)|2,{115,68,0}}, +/* 17913 */ {(12<<2)|2,{115,68,0}}, +/* 17914 */ {(12<<2)|2,{115,68,0}}, +/* 17915 */ {(12<<2)|2,{115,68,0}}, +/* 17916 */ {(12<<2)|2,{115,68,0}}, +/* 17917 */ {(12<<2)|2,{115,68,0}}, +/* 17918 */ {(12<<2)|2,{115,68,0}}, +/* 17919 */ {(12<<2)|2,{115,68,0}}, +/* 17920 */ {(12<<2)|2,{115,69,0}}, +/* 17921 */ {(12<<2)|2,{115,69,0}}, +/* 17922 */ {(12<<2)|2,{115,69,0}}, +/* 17923 */ {(12<<2)|2,{115,69,0}}, +/* 17924 */ {(12<<2)|2,{115,69,0}}, +/* 17925 */ {(12<<2)|2,{115,69,0}}, +/* 17926 */ {(12<<2)|2,{115,69,0}}, +/* 17927 */ {(12<<2)|2,{115,69,0}}, +/* 17928 */ {(12<<2)|2,{115,69,0}}, +/* 17929 */ {(12<<2)|2,{115,69,0}}, +/* 17930 */ {(12<<2)|2,{115,69,0}}, +/* 17931 */ {(12<<2)|2,{115,69,0}}, +/* 17932 */ {(12<<2)|2,{115,69,0}}, +/* 17933 */ {(12<<2)|2,{115,69,0}}, +/* 17934 */ {(12<<2)|2,{115,69,0}}, +/* 17935 */ {(12<<2)|2,{115,69,0}}, +/* 17936 */ {(12<<2)|2,{115,70,0}}, +/* 17937 */ {(12<<2)|2,{115,70,0}}, +/* 17938 */ {(12<<2)|2,{115,70,0}}, +/* 17939 */ {(12<<2)|2,{115,70,0}}, +/* 17940 */ {(12<<2)|2,{115,70,0}}, +/* 17941 */ {(12<<2)|2,{115,70,0}}, +/* 17942 */ {(12<<2)|2,{115,70,0}}, +/* 17943 */ {(12<<2)|2,{115,70,0}}, +/* 17944 */ {(12<<2)|2,{115,70,0}}, +/* 17945 */ {(12<<2)|2,{115,70,0}}, +/* 17946 */ {(12<<2)|2,{115,70,0}}, +/* 17947 */ {(12<<2)|2,{115,70,0}}, +/* 17948 */ {(12<<2)|2,{115,70,0}}, +/* 17949 */ {(12<<2)|2,{115,70,0}}, +/* 17950 */ {(12<<2)|2,{115,70,0}}, +/* 17951 */ {(12<<2)|2,{115,70,0}}, +/* 17952 */ {(12<<2)|2,{115,71,0}}, +/* 17953 */ {(12<<2)|2,{115,71,0}}, +/* 17954 */ {(12<<2)|2,{115,71,0}}, +/* 17955 */ {(12<<2)|2,{115,71,0}}, +/* 17956 */ {(12<<2)|2,{115,71,0}}, +/* 17957 */ {(12<<2)|2,{115,71,0}}, +/* 17958 */ {(12<<2)|2,{115,71,0}}, +/* 17959 */ {(12<<2)|2,{115,71,0}}, +/* 17960 */ {(12<<2)|2,{115,71,0}}, +/* 17961 */ {(12<<2)|2,{115,71,0}}, +/* 17962 */ {(12<<2)|2,{115,71,0}}, +/* 17963 */ {(12<<2)|2,{115,71,0}}, +/* 17964 */ {(12<<2)|2,{115,71,0}}, +/* 17965 */ {(12<<2)|2,{115,71,0}}, +/* 17966 */ {(12<<2)|2,{115,71,0}}, +/* 17967 */ {(12<<2)|2,{115,71,0}}, +/* 17968 */ {(12<<2)|2,{115,72,0}}, +/* 17969 */ {(12<<2)|2,{115,72,0}}, +/* 17970 */ {(12<<2)|2,{115,72,0}}, +/* 17971 */ {(12<<2)|2,{115,72,0}}, +/* 17972 */ {(12<<2)|2,{115,72,0}}, +/* 17973 */ {(12<<2)|2,{115,72,0}}, +/* 17974 */ {(12<<2)|2,{115,72,0}}, +/* 17975 */ {(12<<2)|2,{115,72,0}}, +/* 17976 */ {(12<<2)|2,{115,72,0}}, +/* 17977 */ {(12<<2)|2,{115,72,0}}, +/* 17978 */ {(12<<2)|2,{115,72,0}}, +/* 17979 */ {(12<<2)|2,{115,72,0}}, +/* 17980 */ {(12<<2)|2,{115,72,0}}, +/* 17981 */ {(12<<2)|2,{115,72,0}}, +/* 17982 */ {(12<<2)|2,{115,72,0}}, +/* 17983 */ {(12<<2)|2,{115,72,0}}, +/* 17984 */ {(12<<2)|2,{115,73,0}}, +/* 17985 */ {(12<<2)|2,{115,73,0}}, +/* 17986 */ {(12<<2)|2,{115,73,0}}, +/* 17987 */ {(12<<2)|2,{115,73,0}}, +/* 17988 */ {(12<<2)|2,{115,73,0}}, +/* 17989 */ {(12<<2)|2,{115,73,0}}, +/* 17990 */ {(12<<2)|2,{115,73,0}}, +/* 17991 */ {(12<<2)|2,{115,73,0}}, +/* 17992 */ {(12<<2)|2,{115,73,0}}, +/* 17993 */ {(12<<2)|2,{115,73,0}}, +/* 17994 */ {(12<<2)|2,{115,73,0}}, +/* 17995 */ {(12<<2)|2,{115,73,0}}, +/* 17996 */ {(12<<2)|2,{115,73,0}}, +/* 17997 */ {(12<<2)|2,{115,73,0}}, +/* 17998 */ {(12<<2)|2,{115,73,0}}, +/* 17999 */ {(12<<2)|2,{115,73,0}}, +/* 18000 */ {(12<<2)|2,{115,74,0}}, +/* 18001 */ {(12<<2)|2,{115,74,0}}, +/* 18002 */ {(12<<2)|2,{115,74,0}}, +/* 18003 */ {(12<<2)|2,{115,74,0}}, +/* 18004 */ {(12<<2)|2,{115,74,0}}, +/* 18005 */ {(12<<2)|2,{115,74,0}}, +/* 18006 */ {(12<<2)|2,{115,74,0}}, +/* 18007 */ {(12<<2)|2,{115,74,0}}, +/* 18008 */ {(12<<2)|2,{115,74,0}}, +/* 18009 */ {(12<<2)|2,{115,74,0}}, +/* 18010 */ {(12<<2)|2,{115,74,0}}, +/* 18011 */ {(12<<2)|2,{115,74,0}}, +/* 18012 */ {(12<<2)|2,{115,74,0}}, +/* 18013 */ {(12<<2)|2,{115,74,0}}, +/* 18014 */ {(12<<2)|2,{115,74,0}}, +/* 18015 */ {(12<<2)|2,{115,74,0}}, +/* 18016 */ {(12<<2)|2,{115,75,0}}, +/* 18017 */ {(12<<2)|2,{115,75,0}}, +/* 18018 */ {(12<<2)|2,{115,75,0}}, +/* 18019 */ {(12<<2)|2,{115,75,0}}, +/* 18020 */ {(12<<2)|2,{115,75,0}}, +/* 18021 */ {(12<<2)|2,{115,75,0}}, +/* 18022 */ {(12<<2)|2,{115,75,0}}, +/* 18023 */ {(12<<2)|2,{115,75,0}}, +/* 18024 */ {(12<<2)|2,{115,75,0}}, +/* 18025 */ {(12<<2)|2,{115,75,0}}, +/* 18026 */ {(12<<2)|2,{115,75,0}}, +/* 18027 */ {(12<<2)|2,{115,75,0}}, +/* 18028 */ {(12<<2)|2,{115,75,0}}, +/* 18029 */ {(12<<2)|2,{115,75,0}}, +/* 18030 */ {(12<<2)|2,{115,75,0}}, +/* 18031 */ {(12<<2)|2,{115,75,0}}, +/* 18032 */ {(12<<2)|2,{115,76,0}}, +/* 18033 */ {(12<<2)|2,{115,76,0}}, +/* 18034 */ {(12<<2)|2,{115,76,0}}, +/* 18035 */ {(12<<2)|2,{115,76,0}}, +/* 18036 */ {(12<<2)|2,{115,76,0}}, +/* 18037 */ {(12<<2)|2,{115,76,0}}, +/* 18038 */ {(12<<2)|2,{115,76,0}}, +/* 18039 */ {(12<<2)|2,{115,76,0}}, +/* 18040 */ {(12<<2)|2,{115,76,0}}, +/* 18041 */ {(12<<2)|2,{115,76,0}}, +/* 18042 */ {(12<<2)|2,{115,76,0}}, +/* 18043 */ {(12<<2)|2,{115,76,0}}, +/* 18044 */ {(12<<2)|2,{115,76,0}}, +/* 18045 */ {(12<<2)|2,{115,76,0}}, +/* 18046 */ {(12<<2)|2,{115,76,0}}, +/* 18047 */ {(12<<2)|2,{115,76,0}}, +/* 18048 */ {(12<<2)|2,{115,77,0}}, +/* 18049 */ {(12<<2)|2,{115,77,0}}, +/* 18050 */ {(12<<2)|2,{115,77,0}}, +/* 18051 */ {(12<<2)|2,{115,77,0}}, +/* 18052 */ {(12<<2)|2,{115,77,0}}, +/* 18053 */ {(12<<2)|2,{115,77,0}}, +/* 18054 */ {(12<<2)|2,{115,77,0}}, +/* 18055 */ {(12<<2)|2,{115,77,0}}, +/* 18056 */ {(12<<2)|2,{115,77,0}}, +/* 18057 */ {(12<<2)|2,{115,77,0}}, +/* 18058 */ {(12<<2)|2,{115,77,0}}, +/* 18059 */ {(12<<2)|2,{115,77,0}}, +/* 18060 */ {(12<<2)|2,{115,77,0}}, +/* 18061 */ {(12<<2)|2,{115,77,0}}, +/* 18062 */ {(12<<2)|2,{115,77,0}}, +/* 18063 */ {(12<<2)|2,{115,77,0}}, +/* 18064 */ {(12<<2)|2,{115,78,0}}, +/* 18065 */ {(12<<2)|2,{115,78,0}}, +/* 18066 */ {(12<<2)|2,{115,78,0}}, +/* 18067 */ {(12<<2)|2,{115,78,0}}, +/* 18068 */ {(12<<2)|2,{115,78,0}}, +/* 18069 */ {(12<<2)|2,{115,78,0}}, +/* 18070 */ {(12<<2)|2,{115,78,0}}, +/* 18071 */ {(12<<2)|2,{115,78,0}}, +/* 18072 */ {(12<<2)|2,{115,78,0}}, +/* 18073 */ {(12<<2)|2,{115,78,0}}, +/* 18074 */ {(12<<2)|2,{115,78,0}}, +/* 18075 */ {(12<<2)|2,{115,78,0}}, +/* 18076 */ {(12<<2)|2,{115,78,0}}, +/* 18077 */ {(12<<2)|2,{115,78,0}}, +/* 18078 */ {(12<<2)|2,{115,78,0}}, +/* 18079 */ {(12<<2)|2,{115,78,0}}, +/* 18080 */ {(12<<2)|2,{115,79,0}}, +/* 18081 */ {(12<<2)|2,{115,79,0}}, +/* 18082 */ {(12<<2)|2,{115,79,0}}, +/* 18083 */ {(12<<2)|2,{115,79,0}}, +/* 18084 */ {(12<<2)|2,{115,79,0}}, +/* 18085 */ {(12<<2)|2,{115,79,0}}, +/* 18086 */ {(12<<2)|2,{115,79,0}}, +/* 18087 */ {(12<<2)|2,{115,79,0}}, +/* 18088 */ {(12<<2)|2,{115,79,0}}, +/* 18089 */ {(12<<2)|2,{115,79,0}}, +/* 18090 */ {(12<<2)|2,{115,79,0}}, +/* 18091 */ {(12<<2)|2,{115,79,0}}, +/* 18092 */ {(12<<2)|2,{115,79,0}}, +/* 18093 */ {(12<<2)|2,{115,79,0}}, +/* 18094 */ {(12<<2)|2,{115,79,0}}, +/* 18095 */ {(12<<2)|2,{115,79,0}}, +/* 18096 */ {(12<<2)|2,{115,80,0}}, +/* 18097 */ {(12<<2)|2,{115,80,0}}, +/* 18098 */ {(12<<2)|2,{115,80,0}}, +/* 18099 */ {(12<<2)|2,{115,80,0}}, +/* 18100 */ {(12<<2)|2,{115,80,0}}, +/* 18101 */ {(12<<2)|2,{115,80,0}}, +/* 18102 */ {(12<<2)|2,{115,80,0}}, +/* 18103 */ {(12<<2)|2,{115,80,0}}, +/* 18104 */ {(12<<2)|2,{115,80,0}}, +/* 18105 */ {(12<<2)|2,{115,80,0}}, +/* 18106 */ {(12<<2)|2,{115,80,0}}, +/* 18107 */ {(12<<2)|2,{115,80,0}}, +/* 18108 */ {(12<<2)|2,{115,80,0}}, +/* 18109 */ {(12<<2)|2,{115,80,0}}, +/* 18110 */ {(12<<2)|2,{115,80,0}}, +/* 18111 */ {(12<<2)|2,{115,80,0}}, +/* 18112 */ {(12<<2)|2,{115,81,0}}, +/* 18113 */ {(12<<2)|2,{115,81,0}}, +/* 18114 */ {(12<<2)|2,{115,81,0}}, +/* 18115 */ {(12<<2)|2,{115,81,0}}, +/* 18116 */ {(12<<2)|2,{115,81,0}}, +/* 18117 */ {(12<<2)|2,{115,81,0}}, +/* 18118 */ {(12<<2)|2,{115,81,0}}, +/* 18119 */ {(12<<2)|2,{115,81,0}}, +/* 18120 */ {(12<<2)|2,{115,81,0}}, +/* 18121 */ {(12<<2)|2,{115,81,0}}, +/* 18122 */ {(12<<2)|2,{115,81,0}}, +/* 18123 */ {(12<<2)|2,{115,81,0}}, +/* 18124 */ {(12<<2)|2,{115,81,0}}, +/* 18125 */ {(12<<2)|2,{115,81,0}}, +/* 18126 */ {(12<<2)|2,{115,81,0}}, +/* 18127 */ {(12<<2)|2,{115,81,0}}, +/* 18128 */ {(12<<2)|2,{115,82,0}}, +/* 18129 */ {(12<<2)|2,{115,82,0}}, +/* 18130 */ {(12<<2)|2,{115,82,0}}, +/* 18131 */ {(12<<2)|2,{115,82,0}}, +/* 18132 */ {(12<<2)|2,{115,82,0}}, +/* 18133 */ {(12<<2)|2,{115,82,0}}, +/* 18134 */ {(12<<2)|2,{115,82,0}}, +/* 18135 */ {(12<<2)|2,{115,82,0}}, +/* 18136 */ {(12<<2)|2,{115,82,0}}, +/* 18137 */ {(12<<2)|2,{115,82,0}}, +/* 18138 */ {(12<<2)|2,{115,82,0}}, +/* 18139 */ {(12<<2)|2,{115,82,0}}, +/* 18140 */ {(12<<2)|2,{115,82,0}}, +/* 18141 */ {(12<<2)|2,{115,82,0}}, +/* 18142 */ {(12<<2)|2,{115,82,0}}, +/* 18143 */ {(12<<2)|2,{115,82,0}}, +/* 18144 */ {(12<<2)|2,{115,83,0}}, +/* 18145 */ {(12<<2)|2,{115,83,0}}, +/* 18146 */ {(12<<2)|2,{115,83,0}}, +/* 18147 */ {(12<<2)|2,{115,83,0}}, +/* 18148 */ {(12<<2)|2,{115,83,0}}, +/* 18149 */ {(12<<2)|2,{115,83,0}}, +/* 18150 */ {(12<<2)|2,{115,83,0}}, +/* 18151 */ {(12<<2)|2,{115,83,0}}, +/* 18152 */ {(12<<2)|2,{115,83,0}}, +/* 18153 */ {(12<<2)|2,{115,83,0}}, +/* 18154 */ {(12<<2)|2,{115,83,0}}, +/* 18155 */ {(12<<2)|2,{115,83,0}}, +/* 18156 */ {(12<<2)|2,{115,83,0}}, +/* 18157 */ {(12<<2)|2,{115,83,0}}, +/* 18158 */ {(12<<2)|2,{115,83,0}}, +/* 18159 */ {(12<<2)|2,{115,83,0}}, +/* 18160 */ {(12<<2)|2,{115,84,0}}, +/* 18161 */ {(12<<2)|2,{115,84,0}}, +/* 18162 */ {(12<<2)|2,{115,84,0}}, +/* 18163 */ {(12<<2)|2,{115,84,0}}, +/* 18164 */ {(12<<2)|2,{115,84,0}}, +/* 18165 */ {(12<<2)|2,{115,84,0}}, +/* 18166 */ {(12<<2)|2,{115,84,0}}, +/* 18167 */ {(12<<2)|2,{115,84,0}}, +/* 18168 */ {(12<<2)|2,{115,84,0}}, +/* 18169 */ {(12<<2)|2,{115,84,0}}, +/* 18170 */ {(12<<2)|2,{115,84,0}}, +/* 18171 */ {(12<<2)|2,{115,84,0}}, +/* 18172 */ {(12<<2)|2,{115,84,0}}, +/* 18173 */ {(12<<2)|2,{115,84,0}}, +/* 18174 */ {(12<<2)|2,{115,84,0}}, +/* 18175 */ {(12<<2)|2,{115,84,0}}, +/* 18176 */ {(12<<2)|2,{115,85,0}}, +/* 18177 */ {(12<<2)|2,{115,85,0}}, +/* 18178 */ {(12<<2)|2,{115,85,0}}, +/* 18179 */ {(12<<2)|2,{115,85,0}}, +/* 18180 */ {(12<<2)|2,{115,85,0}}, +/* 18181 */ {(12<<2)|2,{115,85,0}}, +/* 18182 */ {(12<<2)|2,{115,85,0}}, +/* 18183 */ {(12<<2)|2,{115,85,0}}, +/* 18184 */ {(12<<2)|2,{115,85,0}}, +/* 18185 */ {(12<<2)|2,{115,85,0}}, +/* 18186 */ {(12<<2)|2,{115,85,0}}, +/* 18187 */ {(12<<2)|2,{115,85,0}}, +/* 18188 */ {(12<<2)|2,{115,85,0}}, +/* 18189 */ {(12<<2)|2,{115,85,0}}, +/* 18190 */ {(12<<2)|2,{115,85,0}}, +/* 18191 */ {(12<<2)|2,{115,85,0}}, +/* 18192 */ {(12<<2)|2,{115,86,0}}, +/* 18193 */ {(12<<2)|2,{115,86,0}}, +/* 18194 */ {(12<<2)|2,{115,86,0}}, +/* 18195 */ {(12<<2)|2,{115,86,0}}, +/* 18196 */ {(12<<2)|2,{115,86,0}}, +/* 18197 */ {(12<<2)|2,{115,86,0}}, +/* 18198 */ {(12<<2)|2,{115,86,0}}, +/* 18199 */ {(12<<2)|2,{115,86,0}}, +/* 18200 */ {(12<<2)|2,{115,86,0}}, +/* 18201 */ {(12<<2)|2,{115,86,0}}, +/* 18202 */ {(12<<2)|2,{115,86,0}}, +/* 18203 */ {(12<<2)|2,{115,86,0}}, +/* 18204 */ {(12<<2)|2,{115,86,0}}, +/* 18205 */ {(12<<2)|2,{115,86,0}}, +/* 18206 */ {(12<<2)|2,{115,86,0}}, +/* 18207 */ {(12<<2)|2,{115,86,0}}, +/* 18208 */ {(12<<2)|2,{115,87,0}}, +/* 18209 */ {(12<<2)|2,{115,87,0}}, +/* 18210 */ {(12<<2)|2,{115,87,0}}, +/* 18211 */ {(12<<2)|2,{115,87,0}}, +/* 18212 */ {(12<<2)|2,{115,87,0}}, +/* 18213 */ {(12<<2)|2,{115,87,0}}, +/* 18214 */ {(12<<2)|2,{115,87,0}}, +/* 18215 */ {(12<<2)|2,{115,87,0}}, +/* 18216 */ {(12<<2)|2,{115,87,0}}, +/* 18217 */ {(12<<2)|2,{115,87,0}}, +/* 18218 */ {(12<<2)|2,{115,87,0}}, +/* 18219 */ {(12<<2)|2,{115,87,0}}, +/* 18220 */ {(12<<2)|2,{115,87,0}}, +/* 18221 */ {(12<<2)|2,{115,87,0}}, +/* 18222 */ {(12<<2)|2,{115,87,0}}, +/* 18223 */ {(12<<2)|2,{115,87,0}}, +/* 18224 */ {(12<<2)|2,{115,89,0}}, +/* 18225 */ {(12<<2)|2,{115,89,0}}, +/* 18226 */ {(12<<2)|2,{115,89,0}}, +/* 18227 */ {(12<<2)|2,{115,89,0}}, +/* 18228 */ {(12<<2)|2,{115,89,0}}, +/* 18229 */ {(12<<2)|2,{115,89,0}}, +/* 18230 */ {(12<<2)|2,{115,89,0}}, +/* 18231 */ {(12<<2)|2,{115,89,0}}, +/* 18232 */ {(12<<2)|2,{115,89,0}}, +/* 18233 */ {(12<<2)|2,{115,89,0}}, +/* 18234 */ {(12<<2)|2,{115,89,0}}, +/* 18235 */ {(12<<2)|2,{115,89,0}}, +/* 18236 */ {(12<<2)|2,{115,89,0}}, +/* 18237 */ {(12<<2)|2,{115,89,0}}, +/* 18238 */ {(12<<2)|2,{115,89,0}}, +/* 18239 */ {(12<<2)|2,{115,89,0}}, +/* 18240 */ {(12<<2)|2,{115,106,0}}, +/* 18241 */ {(12<<2)|2,{115,106,0}}, +/* 18242 */ {(12<<2)|2,{115,106,0}}, +/* 18243 */ {(12<<2)|2,{115,106,0}}, +/* 18244 */ {(12<<2)|2,{115,106,0}}, +/* 18245 */ {(12<<2)|2,{115,106,0}}, +/* 18246 */ {(12<<2)|2,{115,106,0}}, +/* 18247 */ {(12<<2)|2,{115,106,0}}, +/* 18248 */ {(12<<2)|2,{115,106,0}}, +/* 18249 */ {(12<<2)|2,{115,106,0}}, +/* 18250 */ {(12<<2)|2,{115,106,0}}, +/* 18251 */ {(12<<2)|2,{115,106,0}}, +/* 18252 */ {(12<<2)|2,{115,106,0}}, +/* 18253 */ {(12<<2)|2,{115,106,0}}, +/* 18254 */ {(12<<2)|2,{115,106,0}}, +/* 18255 */ {(12<<2)|2,{115,106,0}}, +/* 18256 */ {(12<<2)|2,{115,107,0}}, +/* 18257 */ {(12<<2)|2,{115,107,0}}, +/* 18258 */ {(12<<2)|2,{115,107,0}}, +/* 18259 */ {(12<<2)|2,{115,107,0}}, +/* 18260 */ {(12<<2)|2,{115,107,0}}, +/* 18261 */ {(12<<2)|2,{115,107,0}}, +/* 18262 */ {(12<<2)|2,{115,107,0}}, +/* 18263 */ {(12<<2)|2,{115,107,0}}, +/* 18264 */ {(12<<2)|2,{115,107,0}}, +/* 18265 */ {(12<<2)|2,{115,107,0}}, +/* 18266 */ {(12<<2)|2,{115,107,0}}, +/* 18267 */ {(12<<2)|2,{115,107,0}}, +/* 18268 */ {(12<<2)|2,{115,107,0}}, +/* 18269 */ {(12<<2)|2,{115,107,0}}, +/* 18270 */ {(12<<2)|2,{115,107,0}}, +/* 18271 */ {(12<<2)|2,{115,107,0}}, +/* 18272 */ {(12<<2)|2,{115,113,0}}, +/* 18273 */ {(12<<2)|2,{115,113,0}}, +/* 18274 */ {(12<<2)|2,{115,113,0}}, +/* 18275 */ {(12<<2)|2,{115,113,0}}, +/* 18276 */ {(12<<2)|2,{115,113,0}}, +/* 18277 */ {(12<<2)|2,{115,113,0}}, +/* 18278 */ {(12<<2)|2,{115,113,0}}, +/* 18279 */ {(12<<2)|2,{115,113,0}}, +/* 18280 */ {(12<<2)|2,{115,113,0}}, +/* 18281 */ {(12<<2)|2,{115,113,0}}, +/* 18282 */ {(12<<2)|2,{115,113,0}}, +/* 18283 */ {(12<<2)|2,{115,113,0}}, +/* 18284 */ {(12<<2)|2,{115,113,0}}, +/* 18285 */ {(12<<2)|2,{115,113,0}}, +/* 18286 */ {(12<<2)|2,{115,113,0}}, +/* 18287 */ {(12<<2)|2,{115,113,0}}, +/* 18288 */ {(12<<2)|2,{115,118,0}}, +/* 18289 */ {(12<<2)|2,{115,118,0}}, +/* 18290 */ {(12<<2)|2,{115,118,0}}, +/* 18291 */ {(12<<2)|2,{115,118,0}}, +/* 18292 */ {(12<<2)|2,{115,118,0}}, +/* 18293 */ {(12<<2)|2,{115,118,0}}, +/* 18294 */ {(12<<2)|2,{115,118,0}}, +/* 18295 */ {(12<<2)|2,{115,118,0}}, +/* 18296 */ {(12<<2)|2,{115,118,0}}, +/* 18297 */ {(12<<2)|2,{115,118,0}}, +/* 18298 */ {(12<<2)|2,{115,118,0}}, +/* 18299 */ {(12<<2)|2,{115,118,0}}, +/* 18300 */ {(12<<2)|2,{115,118,0}}, +/* 18301 */ {(12<<2)|2,{115,118,0}}, +/* 18302 */ {(12<<2)|2,{115,118,0}}, +/* 18303 */ {(12<<2)|2,{115,118,0}}, +/* 18304 */ {(12<<2)|2,{115,119,0}}, +/* 18305 */ {(12<<2)|2,{115,119,0}}, +/* 18306 */ {(12<<2)|2,{115,119,0}}, +/* 18307 */ {(12<<2)|2,{115,119,0}}, +/* 18308 */ {(12<<2)|2,{115,119,0}}, +/* 18309 */ {(12<<2)|2,{115,119,0}}, +/* 18310 */ {(12<<2)|2,{115,119,0}}, +/* 18311 */ {(12<<2)|2,{115,119,0}}, +/* 18312 */ {(12<<2)|2,{115,119,0}}, +/* 18313 */ {(12<<2)|2,{115,119,0}}, +/* 18314 */ {(12<<2)|2,{115,119,0}}, +/* 18315 */ {(12<<2)|2,{115,119,0}}, +/* 18316 */ {(12<<2)|2,{115,119,0}}, +/* 18317 */ {(12<<2)|2,{115,119,0}}, +/* 18318 */ {(12<<2)|2,{115,119,0}}, +/* 18319 */ {(12<<2)|2,{115,119,0}}, +/* 18320 */ {(12<<2)|2,{115,120,0}}, +/* 18321 */ {(12<<2)|2,{115,120,0}}, +/* 18322 */ {(12<<2)|2,{115,120,0}}, +/* 18323 */ {(12<<2)|2,{115,120,0}}, +/* 18324 */ {(12<<2)|2,{115,120,0}}, +/* 18325 */ {(12<<2)|2,{115,120,0}}, +/* 18326 */ {(12<<2)|2,{115,120,0}}, +/* 18327 */ {(12<<2)|2,{115,120,0}}, +/* 18328 */ {(12<<2)|2,{115,120,0}}, +/* 18329 */ {(12<<2)|2,{115,120,0}}, +/* 18330 */ {(12<<2)|2,{115,120,0}}, +/* 18331 */ {(12<<2)|2,{115,120,0}}, +/* 18332 */ {(12<<2)|2,{115,120,0}}, +/* 18333 */ {(12<<2)|2,{115,120,0}}, +/* 18334 */ {(12<<2)|2,{115,120,0}}, +/* 18335 */ {(12<<2)|2,{115,120,0}}, +/* 18336 */ {(12<<2)|2,{115,121,0}}, +/* 18337 */ {(12<<2)|2,{115,121,0}}, +/* 18338 */ {(12<<2)|2,{115,121,0}}, +/* 18339 */ {(12<<2)|2,{115,121,0}}, +/* 18340 */ {(12<<2)|2,{115,121,0}}, +/* 18341 */ {(12<<2)|2,{115,121,0}}, +/* 18342 */ {(12<<2)|2,{115,121,0}}, +/* 18343 */ {(12<<2)|2,{115,121,0}}, +/* 18344 */ {(12<<2)|2,{115,121,0}}, +/* 18345 */ {(12<<2)|2,{115,121,0}}, +/* 18346 */ {(12<<2)|2,{115,121,0}}, +/* 18347 */ {(12<<2)|2,{115,121,0}}, +/* 18348 */ {(12<<2)|2,{115,121,0}}, +/* 18349 */ {(12<<2)|2,{115,121,0}}, +/* 18350 */ {(12<<2)|2,{115,121,0}}, +/* 18351 */ {(12<<2)|2,{115,121,0}}, +/* 18352 */ {(12<<2)|2,{115,122,0}}, +/* 18353 */ {(12<<2)|2,{115,122,0}}, +/* 18354 */ {(12<<2)|2,{115,122,0}}, +/* 18355 */ {(12<<2)|2,{115,122,0}}, +/* 18356 */ {(12<<2)|2,{115,122,0}}, +/* 18357 */ {(12<<2)|2,{115,122,0}}, +/* 18358 */ {(12<<2)|2,{115,122,0}}, +/* 18359 */ {(12<<2)|2,{115,122,0}}, +/* 18360 */ {(12<<2)|2,{115,122,0}}, +/* 18361 */ {(12<<2)|2,{115,122,0}}, +/* 18362 */ {(12<<2)|2,{115,122,0}}, +/* 18363 */ {(12<<2)|2,{115,122,0}}, +/* 18364 */ {(12<<2)|2,{115,122,0}}, +/* 18365 */ {(12<<2)|2,{115,122,0}}, +/* 18366 */ {(12<<2)|2,{115,122,0}}, +/* 18367 */ {(12<<2)|2,{115,122,0}}, +/* 18368 */ {(13<<2)|2,{115,38,0}}, +/* 18369 */ {(13<<2)|2,{115,38,0}}, +/* 18370 */ {(13<<2)|2,{115,38,0}}, +/* 18371 */ {(13<<2)|2,{115,38,0}}, +/* 18372 */ {(13<<2)|2,{115,38,0}}, +/* 18373 */ {(13<<2)|2,{115,38,0}}, +/* 18374 */ {(13<<2)|2,{115,38,0}}, +/* 18375 */ {(13<<2)|2,{115,38,0}}, +/* 18376 */ {(13<<2)|2,{115,42,0}}, +/* 18377 */ {(13<<2)|2,{115,42,0}}, +/* 18378 */ {(13<<2)|2,{115,42,0}}, +/* 18379 */ {(13<<2)|2,{115,42,0}}, +/* 18380 */ {(13<<2)|2,{115,42,0}}, +/* 18381 */ {(13<<2)|2,{115,42,0}}, +/* 18382 */ {(13<<2)|2,{115,42,0}}, +/* 18383 */ {(13<<2)|2,{115,42,0}}, +/* 18384 */ {(13<<2)|2,{115,44,0}}, +/* 18385 */ {(13<<2)|2,{115,44,0}}, +/* 18386 */ {(13<<2)|2,{115,44,0}}, +/* 18387 */ {(13<<2)|2,{115,44,0}}, +/* 18388 */ {(13<<2)|2,{115,44,0}}, +/* 18389 */ {(13<<2)|2,{115,44,0}}, +/* 18390 */ {(13<<2)|2,{115,44,0}}, +/* 18391 */ {(13<<2)|2,{115,44,0}}, +/* 18392 */ {(13<<2)|2,{115,59,0}}, +/* 18393 */ {(13<<2)|2,{115,59,0}}, +/* 18394 */ {(13<<2)|2,{115,59,0}}, +/* 18395 */ {(13<<2)|2,{115,59,0}}, +/* 18396 */ {(13<<2)|2,{115,59,0}}, +/* 18397 */ {(13<<2)|2,{115,59,0}}, +/* 18398 */ {(13<<2)|2,{115,59,0}}, +/* 18399 */ {(13<<2)|2,{115,59,0}}, +/* 18400 */ {(13<<2)|2,{115,88,0}}, +/* 18401 */ {(13<<2)|2,{115,88,0}}, +/* 18402 */ {(13<<2)|2,{115,88,0}}, +/* 18403 */ {(13<<2)|2,{115,88,0}}, +/* 18404 */ {(13<<2)|2,{115,88,0}}, +/* 18405 */ {(13<<2)|2,{115,88,0}}, +/* 18406 */ {(13<<2)|2,{115,88,0}}, +/* 18407 */ {(13<<2)|2,{115,88,0}}, +/* 18408 */ {(13<<2)|2,{115,90,0}}, +/* 18409 */ {(13<<2)|2,{115,90,0}}, +/* 18410 */ {(13<<2)|2,{115,90,0}}, +/* 18411 */ {(13<<2)|2,{115,90,0}}, +/* 18412 */ {(13<<2)|2,{115,90,0}}, +/* 18413 */ {(13<<2)|2,{115,90,0}}, +/* 18414 */ {(13<<2)|2,{115,90,0}}, +/* 18415 */ {(13<<2)|2,{115,90,0}}, +/* 18416 */ {(15<<2)|2,{115,33,0}}, +/* 18417 */ {(15<<2)|2,{115,33,0}}, +/* 18418 */ {(15<<2)|2,{115,34,0}}, +/* 18419 */ {(15<<2)|2,{115,34,0}}, +/* 18420 */ {(15<<2)|2,{115,40,0}}, +/* 18421 */ {(15<<2)|2,{115,40,0}}, +/* 18422 */ {(15<<2)|2,{115,41,0}}, +/* 18423 */ {(15<<2)|2,{115,41,0}}, +/* 18424 */ {(15<<2)|2,{115,63,0}}, +/* 18425 */ {(15<<2)|2,{115,63,0}}, +/* 18426 */ {(16<<2)|2,{115,39,0}}, +/* 18427 */ {(16<<2)|2,{115,43,0}}, +/* 18428 */ {(16<<2)|2,{115,124,0}}, +/* 18429 */ {(5<<2)|1,{115,0,0}}, +/* 18430 */ {(5<<2)|1,{115,0,0}}, +/* 18431 */ {(5<<2)|1,{115,0,0}}, +/* 18432 */ {(15<<2)|3,{116,48,48}}, +/* 18433 */ {(15<<2)|3,{116,48,48}}, +/* 18434 */ {(15<<2)|3,{116,48,49}}, +/* 18435 */ {(15<<2)|3,{116,48,49}}, +/* 18436 */ {(15<<2)|3,{116,48,50}}, +/* 18437 */ {(15<<2)|3,{116,48,50}}, +/* 18438 */ {(15<<2)|3,{116,48,97}}, +/* 18439 */ {(15<<2)|3,{116,48,97}}, +/* 18440 */ {(15<<2)|3,{116,48,99}}, +/* 18441 */ {(15<<2)|3,{116,48,99}}, +/* 18442 */ {(15<<2)|3,{116,48,101}}, +/* 18443 */ {(15<<2)|3,{116,48,101}}, +/* 18444 */ {(15<<2)|3,{116,48,105}}, +/* 18445 */ {(15<<2)|3,{116,48,105}}, +/* 18446 */ {(15<<2)|3,{116,48,111}}, +/* 18447 */ {(15<<2)|3,{116,48,111}}, +/* 18448 */ {(15<<2)|3,{116,48,115}}, +/* 18449 */ {(15<<2)|3,{116,48,115}}, +/* 18450 */ {(15<<2)|3,{116,48,116}}, +/* 18451 */ {(15<<2)|3,{116,48,116}}, +/* 18452 */ {(16<<2)|3,{116,48,32}}, +/* 18453 */ {(16<<2)|3,{116,48,37}}, +/* 18454 */ {(16<<2)|3,{116,48,45}}, +/* 18455 */ {(16<<2)|3,{116,48,46}}, +/* 18456 */ {(16<<2)|3,{116,48,47}}, +/* 18457 */ {(16<<2)|3,{116,48,51}}, +/* 18458 */ {(16<<2)|3,{116,48,52}}, +/* 18459 */ {(16<<2)|3,{116,48,53}}, +/* 18460 */ {(16<<2)|3,{116,48,54}}, +/* 18461 */ {(16<<2)|3,{116,48,55}}, +/* 18462 */ {(16<<2)|3,{116,48,56}}, +/* 18463 */ {(16<<2)|3,{116,48,57}}, +/* 18464 */ {(16<<2)|3,{116,48,61}}, +/* 18465 */ {(16<<2)|3,{116,48,65}}, +/* 18466 */ {(16<<2)|3,{116,48,95}}, +/* 18467 */ {(16<<2)|3,{116,48,98}}, +/* 18468 */ {(16<<2)|3,{116,48,100}}, +/* 18469 */ {(16<<2)|3,{116,48,102}}, +/* 18470 */ {(16<<2)|3,{116,48,103}}, +/* 18471 */ {(16<<2)|3,{116,48,104}}, +/* 18472 */ {(16<<2)|3,{116,48,108}}, +/* 18473 */ {(16<<2)|3,{116,48,109}}, +/* 18474 */ {(16<<2)|3,{116,48,110}}, +/* 18475 */ {(16<<2)|3,{116,48,112}}, +/* 18476 */ {(16<<2)|3,{116,48,114}}, +/* 18477 */ {(16<<2)|3,{116,48,117}}, +/* 18478 */ {(10<<2)|2,{116,48,0}}, +/* 18479 */ {(10<<2)|2,{116,48,0}}, +/* 18480 */ {(10<<2)|2,{116,48,0}}, +/* 18481 */ {(10<<2)|2,{116,48,0}}, +/* 18482 */ {(10<<2)|2,{116,48,0}}, +/* 18483 */ {(10<<2)|2,{116,48,0}}, +/* 18484 */ {(10<<2)|2,{116,48,0}}, +/* 18485 */ {(10<<2)|2,{116,48,0}}, +/* 18486 */ {(10<<2)|2,{116,48,0}}, +/* 18487 */ {(10<<2)|2,{116,48,0}}, +/* 18488 */ {(10<<2)|2,{116,48,0}}, +/* 18489 */ {(10<<2)|2,{116,48,0}}, +/* 18490 */ {(10<<2)|2,{116,48,0}}, +/* 18491 */ {(10<<2)|2,{116,48,0}}, +/* 18492 */ {(10<<2)|2,{116,48,0}}, +/* 18493 */ {(10<<2)|2,{116,48,0}}, +/* 18494 */ {(10<<2)|2,{116,48,0}}, +/* 18495 */ {(10<<2)|2,{116,48,0}}, +/* 18496 */ {(15<<2)|3,{116,49,48}}, +/* 18497 */ {(15<<2)|3,{116,49,48}}, +/* 18498 */ {(15<<2)|3,{116,49,49}}, +/* 18499 */ {(15<<2)|3,{116,49,49}}, +/* 18500 */ {(15<<2)|3,{116,49,50}}, +/* 18501 */ {(15<<2)|3,{116,49,50}}, +/* 18502 */ {(15<<2)|3,{116,49,97}}, +/* 18503 */ {(15<<2)|3,{116,49,97}}, +/* 18504 */ {(15<<2)|3,{116,49,99}}, +/* 18505 */ {(15<<2)|3,{116,49,99}}, +/* 18506 */ {(15<<2)|3,{116,49,101}}, +/* 18507 */ {(15<<2)|3,{116,49,101}}, +/* 18508 */ {(15<<2)|3,{116,49,105}}, +/* 18509 */ {(15<<2)|3,{116,49,105}}, +/* 18510 */ {(15<<2)|3,{116,49,111}}, +/* 18511 */ {(15<<2)|3,{116,49,111}}, +/* 18512 */ {(15<<2)|3,{116,49,115}}, +/* 18513 */ {(15<<2)|3,{116,49,115}}, +/* 18514 */ {(15<<2)|3,{116,49,116}}, +/* 18515 */ {(15<<2)|3,{116,49,116}}, +/* 18516 */ {(16<<2)|3,{116,49,32}}, +/* 18517 */ {(16<<2)|3,{116,49,37}}, +/* 18518 */ {(16<<2)|3,{116,49,45}}, +/* 18519 */ {(16<<2)|3,{116,49,46}}, +/* 18520 */ {(16<<2)|3,{116,49,47}}, +/* 18521 */ {(16<<2)|3,{116,49,51}}, +/* 18522 */ {(16<<2)|3,{116,49,52}}, +/* 18523 */ {(16<<2)|3,{116,49,53}}, +/* 18524 */ {(16<<2)|3,{116,49,54}}, +/* 18525 */ {(16<<2)|3,{116,49,55}}, +/* 18526 */ {(16<<2)|3,{116,49,56}}, +/* 18527 */ {(16<<2)|3,{116,49,57}}, +/* 18528 */ {(16<<2)|3,{116,49,61}}, +/* 18529 */ {(16<<2)|3,{116,49,65}}, +/* 18530 */ {(16<<2)|3,{116,49,95}}, +/* 18531 */ {(16<<2)|3,{116,49,98}}, +/* 18532 */ {(16<<2)|3,{116,49,100}}, +/* 18533 */ {(16<<2)|3,{116,49,102}}, +/* 18534 */ {(16<<2)|3,{116,49,103}}, +/* 18535 */ {(16<<2)|3,{116,49,104}}, +/* 18536 */ {(16<<2)|3,{116,49,108}}, +/* 18537 */ {(16<<2)|3,{116,49,109}}, +/* 18538 */ {(16<<2)|3,{116,49,110}}, +/* 18539 */ {(16<<2)|3,{116,49,112}}, +/* 18540 */ {(16<<2)|3,{116,49,114}}, +/* 18541 */ {(16<<2)|3,{116,49,117}}, +/* 18542 */ {(10<<2)|2,{116,49,0}}, +/* 18543 */ {(10<<2)|2,{116,49,0}}, +/* 18544 */ {(10<<2)|2,{116,49,0}}, +/* 18545 */ {(10<<2)|2,{116,49,0}}, +/* 18546 */ {(10<<2)|2,{116,49,0}}, +/* 18547 */ {(10<<2)|2,{116,49,0}}, +/* 18548 */ {(10<<2)|2,{116,49,0}}, +/* 18549 */ {(10<<2)|2,{116,49,0}}, +/* 18550 */ {(10<<2)|2,{116,49,0}}, +/* 18551 */ {(10<<2)|2,{116,49,0}}, +/* 18552 */ {(10<<2)|2,{116,49,0}}, +/* 18553 */ {(10<<2)|2,{116,49,0}}, +/* 18554 */ {(10<<2)|2,{116,49,0}}, +/* 18555 */ {(10<<2)|2,{116,49,0}}, +/* 18556 */ {(10<<2)|2,{116,49,0}}, +/* 18557 */ {(10<<2)|2,{116,49,0}}, +/* 18558 */ {(10<<2)|2,{116,49,0}}, +/* 18559 */ {(10<<2)|2,{116,49,0}}, +/* 18560 */ {(15<<2)|3,{116,50,48}}, +/* 18561 */ {(15<<2)|3,{116,50,48}}, +/* 18562 */ {(15<<2)|3,{116,50,49}}, +/* 18563 */ {(15<<2)|3,{116,50,49}}, +/* 18564 */ {(15<<2)|3,{116,50,50}}, +/* 18565 */ {(15<<2)|3,{116,50,50}}, +/* 18566 */ {(15<<2)|3,{116,50,97}}, +/* 18567 */ {(15<<2)|3,{116,50,97}}, +/* 18568 */ {(15<<2)|3,{116,50,99}}, +/* 18569 */ {(15<<2)|3,{116,50,99}}, +/* 18570 */ {(15<<2)|3,{116,50,101}}, +/* 18571 */ {(15<<2)|3,{116,50,101}}, +/* 18572 */ {(15<<2)|3,{116,50,105}}, +/* 18573 */ {(15<<2)|3,{116,50,105}}, +/* 18574 */ {(15<<2)|3,{116,50,111}}, +/* 18575 */ {(15<<2)|3,{116,50,111}}, +/* 18576 */ {(15<<2)|3,{116,50,115}}, +/* 18577 */ {(15<<2)|3,{116,50,115}}, +/* 18578 */ {(15<<2)|3,{116,50,116}}, +/* 18579 */ {(15<<2)|3,{116,50,116}}, +/* 18580 */ {(16<<2)|3,{116,50,32}}, +/* 18581 */ {(16<<2)|3,{116,50,37}}, +/* 18582 */ {(16<<2)|3,{116,50,45}}, +/* 18583 */ {(16<<2)|3,{116,50,46}}, +/* 18584 */ {(16<<2)|3,{116,50,47}}, +/* 18585 */ {(16<<2)|3,{116,50,51}}, +/* 18586 */ {(16<<2)|3,{116,50,52}}, +/* 18587 */ {(16<<2)|3,{116,50,53}}, +/* 18588 */ {(16<<2)|3,{116,50,54}}, +/* 18589 */ {(16<<2)|3,{116,50,55}}, +/* 18590 */ {(16<<2)|3,{116,50,56}}, +/* 18591 */ {(16<<2)|3,{116,50,57}}, +/* 18592 */ {(16<<2)|3,{116,50,61}}, +/* 18593 */ {(16<<2)|3,{116,50,65}}, +/* 18594 */ {(16<<2)|3,{116,50,95}}, +/* 18595 */ {(16<<2)|3,{116,50,98}}, +/* 18596 */ {(16<<2)|3,{116,50,100}}, +/* 18597 */ {(16<<2)|3,{116,50,102}}, +/* 18598 */ {(16<<2)|3,{116,50,103}}, +/* 18599 */ {(16<<2)|3,{116,50,104}}, +/* 18600 */ {(16<<2)|3,{116,50,108}}, +/* 18601 */ {(16<<2)|3,{116,50,109}}, +/* 18602 */ {(16<<2)|3,{116,50,110}}, +/* 18603 */ {(16<<2)|3,{116,50,112}}, +/* 18604 */ {(16<<2)|3,{116,50,114}}, +/* 18605 */ {(16<<2)|3,{116,50,117}}, +/* 18606 */ {(10<<2)|2,{116,50,0}}, +/* 18607 */ {(10<<2)|2,{116,50,0}}, +/* 18608 */ {(10<<2)|2,{116,50,0}}, +/* 18609 */ {(10<<2)|2,{116,50,0}}, +/* 18610 */ {(10<<2)|2,{116,50,0}}, +/* 18611 */ {(10<<2)|2,{116,50,0}}, +/* 18612 */ {(10<<2)|2,{116,50,0}}, +/* 18613 */ {(10<<2)|2,{116,50,0}}, +/* 18614 */ {(10<<2)|2,{116,50,0}}, +/* 18615 */ {(10<<2)|2,{116,50,0}}, +/* 18616 */ {(10<<2)|2,{116,50,0}}, +/* 18617 */ {(10<<2)|2,{116,50,0}}, +/* 18618 */ {(10<<2)|2,{116,50,0}}, +/* 18619 */ {(10<<2)|2,{116,50,0}}, +/* 18620 */ {(10<<2)|2,{116,50,0}}, +/* 18621 */ {(10<<2)|2,{116,50,0}}, +/* 18622 */ {(10<<2)|2,{116,50,0}}, +/* 18623 */ {(10<<2)|2,{116,50,0}}, +/* 18624 */ {(15<<2)|3,{116,97,48}}, +/* 18625 */ {(15<<2)|3,{116,97,48}}, +/* 18626 */ {(15<<2)|3,{116,97,49}}, +/* 18627 */ {(15<<2)|3,{116,97,49}}, +/* 18628 */ {(15<<2)|3,{116,97,50}}, +/* 18629 */ {(15<<2)|3,{116,97,50}}, +/* 18630 */ {(15<<2)|3,{116,97,97}}, +/* 18631 */ {(15<<2)|3,{116,97,97}}, +/* 18632 */ {(15<<2)|3,{116,97,99}}, +/* 18633 */ {(15<<2)|3,{116,97,99}}, +/* 18634 */ {(15<<2)|3,{116,97,101}}, +/* 18635 */ {(15<<2)|3,{116,97,101}}, +/* 18636 */ {(15<<2)|3,{116,97,105}}, +/* 18637 */ {(15<<2)|3,{116,97,105}}, +/* 18638 */ {(15<<2)|3,{116,97,111}}, +/* 18639 */ {(15<<2)|3,{116,97,111}}, +/* 18640 */ {(15<<2)|3,{116,97,115}}, +/* 18641 */ {(15<<2)|3,{116,97,115}}, +/* 18642 */ {(15<<2)|3,{116,97,116}}, +/* 18643 */ {(15<<2)|3,{116,97,116}}, +/* 18644 */ {(16<<2)|3,{116,97,32}}, +/* 18645 */ {(16<<2)|3,{116,97,37}}, +/* 18646 */ {(16<<2)|3,{116,97,45}}, +/* 18647 */ {(16<<2)|3,{116,97,46}}, +/* 18648 */ {(16<<2)|3,{116,97,47}}, +/* 18649 */ {(16<<2)|3,{116,97,51}}, +/* 18650 */ {(16<<2)|3,{116,97,52}}, +/* 18651 */ {(16<<2)|3,{116,97,53}}, +/* 18652 */ {(16<<2)|3,{116,97,54}}, +/* 18653 */ {(16<<2)|3,{116,97,55}}, +/* 18654 */ {(16<<2)|3,{116,97,56}}, +/* 18655 */ {(16<<2)|3,{116,97,57}}, +/* 18656 */ {(16<<2)|3,{116,97,61}}, +/* 18657 */ {(16<<2)|3,{116,97,65}}, +/* 18658 */ {(16<<2)|3,{116,97,95}}, +/* 18659 */ {(16<<2)|3,{116,97,98}}, +/* 18660 */ {(16<<2)|3,{116,97,100}}, +/* 18661 */ {(16<<2)|3,{116,97,102}}, +/* 18662 */ {(16<<2)|3,{116,97,103}}, +/* 18663 */ {(16<<2)|3,{116,97,104}}, +/* 18664 */ {(16<<2)|3,{116,97,108}}, +/* 18665 */ {(16<<2)|3,{116,97,109}}, +/* 18666 */ {(16<<2)|3,{116,97,110}}, +/* 18667 */ {(16<<2)|3,{116,97,112}}, +/* 18668 */ {(16<<2)|3,{116,97,114}}, +/* 18669 */ {(16<<2)|3,{116,97,117}}, +/* 18670 */ {(10<<2)|2,{116,97,0}}, +/* 18671 */ {(10<<2)|2,{116,97,0}}, +/* 18672 */ {(10<<2)|2,{116,97,0}}, +/* 18673 */ {(10<<2)|2,{116,97,0}}, +/* 18674 */ {(10<<2)|2,{116,97,0}}, +/* 18675 */ {(10<<2)|2,{116,97,0}}, +/* 18676 */ {(10<<2)|2,{116,97,0}}, +/* 18677 */ {(10<<2)|2,{116,97,0}}, +/* 18678 */ {(10<<2)|2,{116,97,0}}, +/* 18679 */ {(10<<2)|2,{116,97,0}}, +/* 18680 */ {(10<<2)|2,{116,97,0}}, +/* 18681 */ {(10<<2)|2,{116,97,0}}, +/* 18682 */ {(10<<2)|2,{116,97,0}}, +/* 18683 */ {(10<<2)|2,{116,97,0}}, +/* 18684 */ {(10<<2)|2,{116,97,0}}, +/* 18685 */ {(10<<2)|2,{116,97,0}}, +/* 18686 */ {(10<<2)|2,{116,97,0}}, +/* 18687 */ {(10<<2)|2,{116,97,0}}, +/* 18688 */ {(15<<2)|3,{116,99,48}}, +/* 18689 */ {(15<<2)|3,{116,99,48}}, +/* 18690 */ {(15<<2)|3,{116,99,49}}, +/* 18691 */ {(15<<2)|3,{116,99,49}}, +/* 18692 */ {(15<<2)|3,{116,99,50}}, +/* 18693 */ {(15<<2)|3,{116,99,50}}, +/* 18694 */ {(15<<2)|3,{116,99,97}}, +/* 18695 */ {(15<<2)|3,{116,99,97}}, +/* 18696 */ {(15<<2)|3,{116,99,99}}, +/* 18697 */ {(15<<2)|3,{116,99,99}}, +/* 18698 */ {(15<<2)|3,{116,99,101}}, +/* 18699 */ {(15<<2)|3,{116,99,101}}, +/* 18700 */ {(15<<2)|3,{116,99,105}}, +/* 18701 */ {(15<<2)|3,{116,99,105}}, +/* 18702 */ {(15<<2)|3,{116,99,111}}, +/* 18703 */ {(15<<2)|3,{116,99,111}}, +/* 18704 */ {(15<<2)|3,{116,99,115}}, +/* 18705 */ {(15<<2)|3,{116,99,115}}, +/* 18706 */ {(15<<2)|3,{116,99,116}}, +/* 18707 */ {(15<<2)|3,{116,99,116}}, +/* 18708 */ {(16<<2)|3,{116,99,32}}, +/* 18709 */ {(16<<2)|3,{116,99,37}}, +/* 18710 */ {(16<<2)|3,{116,99,45}}, +/* 18711 */ {(16<<2)|3,{116,99,46}}, +/* 18712 */ {(16<<2)|3,{116,99,47}}, +/* 18713 */ {(16<<2)|3,{116,99,51}}, +/* 18714 */ {(16<<2)|3,{116,99,52}}, +/* 18715 */ {(16<<2)|3,{116,99,53}}, +/* 18716 */ {(16<<2)|3,{116,99,54}}, +/* 18717 */ {(16<<2)|3,{116,99,55}}, +/* 18718 */ {(16<<2)|3,{116,99,56}}, +/* 18719 */ {(16<<2)|3,{116,99,57}}, +/* 18720 */ {(16<<2)|3,{116,99,61}}, +/* 18721 */ {(16<<2)|3,{116,99,65}}, +/* 18722 */ {(16<<2)|3,{116,99,95}}, +/* 18723 */ {(16<<2)|3,{116,99,98}}, +/* 18724 */ {(16<<2)|3,{116,99,100}}, +/* 18725 */ {(16<<2)|3,{116,99,102}}, +/* 18726 */ {(16<<2)|3,{116,99,103}}, +/* 18727 */ {(16<<2)|3,{116,99,104}}, +/* 18728 */ {(16<<2)|3,{116,99,108}}, +/* 18729 */ {(16<<2)|3,{116,99,109}}, +/* 18730 */ {(16<<2)|3,{116,99,110}}, +/* 18731 */ {(16<<2)|3,{116,99,112}}, +/* 18732 */ {(16<<2)|3,{116,99,114}}, +/* 18733 */ {(16<<2)|3,{116,99,117}}, +/* 18734 */ {(10<<2)|2,{116,99,0}}, +/* 18735 */ {(10<<2)|2,{116,99,0}}, +/* 18736 */ {(10<<2)|2,{116,99,0}}, +/* 18737 */ {(10<<2)|2,{116,99,0}}, +/* 18738 */ {(10<<2)|2,{116,99,0}}, +/* 18739 */ {(10<<2)|2,{116,99,0}}, +/* 18740 */ {(10<<2)|2,{116,99,0}}, +/* 18741 */ {(10<<2)|2,{116,99,0}}, +/* 18742 */ {(10<<2)|2,{116,99,0}}, +/* 18743 */ {(10<<2)|2,{116,99,0}}, +/* 18744 */ {(10<<2)|2,{116,99,0}}, +/* 18745 */ {(10<<2)|2,{116,99,0}}, +/* 18746 */ {(10<<2)|2,{116,99,0}}, +/* 18747 */ {(10<<2)|2,{116,99,0}}, +/* 18748 */ {(10<<2)|2,{116,99,0}}, +/* 18749 */ {(10<<2)|2,{116,99,0}}, +/* 18750 */ {(10<<2)|2,{116,99,0}}, +/* 18751 */ {(10<<2)|2,{116,99,0}}, +/* 18752 */ {(15<<2)|3,{116,101,48}}, +/* 18753 */ {(15<<2)|3,{116,101,48}}, +/* 18754 */ {(15<<2)|3,{116,101,49}}, +/* 18755 */ {(15<<2)|3,{116,101,49}}, +/* 18756 */ {(15<<2)|3,{116,101,50}}, +/* 18757 */ {(15<<2)|3,{116,101,50}}, +/* 18758 */ {(15<<2)|3,{116,101,97}}, +/* 18759 */ {(15<<2)|3,{116,101,97}}, +/* 18760 */ {(15<<2)|3,{116,101,99}}, +/* 18761 */ {(15<<2)|3,{116,101,99}}, +/* 18762 */ {(15<<2)|3,{116,101,101}}, +/* 18763 */ {(15<<2)|3,{116,101,101}}, +/* 18764 */ {(15<<2)|3,{116,101,105}}, +/* 18765 */ {(15<<2)|3,{116,101,105}}, +/* 18766 */ {(15<<2)|3,{116,101,111}}, +/* 18767 */ {(15<<2)|3,{116,101,111}}, +/* 18768 */ {(15<<2)|3,{116,101,115}}, +/* 18769 */ {(15<<2)|3,{116,101,115}}, +/* 18770 */ {(15<<2)|3,{116,101,116}}, +/* 18771 */ {(15<<2)|3,{116,101,116}}, +/* 18772 */ {(16<<2)|3,{116,101,32}}, +/* 18773 */ {(16<<2)|3,{116,101,37}}, +/* 18774 */ {(16<<2)|3,{116,101,45}}, +/* 18775 */ {(16<<2)|3,{116,101,46}}, +/* 18776 */ {(16<<2)|3,{116,101,47}}, +/* 18777 */ {(16<<2)|3,{116,101,51}}, +/* 18778 */ {(16<<2)|3,{116,101,52}}, +/* 18779 */ {(16<<2)|3,{116,101,53}}, +/* 18780 */ {(16<<2)|3,{116,101,54}}, +/* 18781 */ {(16<<2)|3,{116,101,55}}, +/* 18782 */ {(16<<2)|3,{116,101,56}}, +/* 18783 */ {(16<<2)|3,{116,101,57}}, +/* 18784 */ {(16<<2)|3,{116,101,61}}, +/* 18785 */ {(16<<2)|3,{116,101,65}}, +/* 18786 */ {(16<<2)|3,{116,101,95}}, +/* 18787 */ {(16<<2)|3,{116,101,98}}, +/* 18788 */ {(16<<2)|3,{116,101,100}}, +/* 18789 */ {(16<<2)|3,{116,101,102}}, +/* 18790 */ {(16<<2)|3,{116,101,103}}, +/* 18791 */ {(16<<2)|3,{116,101,104}}, +/* 18792 */ {(16<<2)|3,{116,101,108}}, +/* 18793 */ {(16<<2)|3,{116,101,109}}, +/* 18794 */ {(16<<2)|3,{116,101,110}}, +/* 18795 */ {(16<<2)|3,{116,101,112}}, +/* 18796 */ {(16<<2)|3,{116,101,114}}, +/* 18797 */ {(16<<2)|3,{116,101,117}}, +/* 18798 */ {(10<<2)|2,{116,101,0}}, +/* 18799 */ {(10<<2)|2,{116,101,0}}, +/* 18800 */ {(10<<2)|2,{116,101,0}}, +/* 18801 */ {(10<<2)|2,{116,101,0}}, +/* 18802 */ {(10<<2)|2,{116,101,0}}, +/* 18803 */ {(10<<2)|2,{116,101,0}}, +/* 18804 */ {(10<<2)|2,{116,101,0}}, +/* 18805 */ {(10<<2)|2,{116,101,0}}, +/* 18806 */ {(10<<2)|2,{116,101,0}}, +/* 18807 */ {(10<<2)|2,{116,101,0}}, +/* 18808 */ {(10<<2)|2,{116,101,0}}, +/* 18809 */ {(10<<2)|2,{116,101,0}}, +/* 18810 */ {(10<<2)|2,{116,101,0}}, +/* 18811 */ {(10<<2)|2,{116,101,0}}, +/* 18812 */ {(10<<2)|2,{116,101,0}}, +/* 18813 */ {(10<<2)|2,{116,101,0}}, +/* 18814 */ {(10<<2)|2,{116,101,0}}, +/* 18815 */ {(10<<2)|2,{116,101,0}}, +/* 18816 */ {(15<<2)|3,{116,105,48}}, +/* 18817 */ {(15<<2)|3,{116,105,48}}, +/* 18818 */ {(15<<2)|3,{116,105,49}}, +/* 18819 */ {(15<<2)|3,{116,105,49}}, +/* 18820 */ {(15<<2)|3,{116,105,50}}, +/* 18821 */ {(15<<2)|3,{116,105,50}}, +/* 18822 */ {(15<<2)|3,{116,105,97}}, +/* 18823 */ {(15<<2)|3,{116,105,97}}, +/* 18824 */ {(15<<2)|3,{116,105,99}}, +/* 18825 */ {(15<<2)|3,{116,105,99}}, +/* 18826 */ {(15<<2)|3,{116,105,101}}, +/* 18827 */ {(15<<2)|3,{116,105,101}}, +/* 18828 */ {(15<<2)|3,{116,105,105}}, +/* 18829 */ {(15<<2)|3,{116,105,105}}, +/* 18830 */ {(15<<2)|3,{116,105,111}}, +/* 18831 */ {(15<<2)|3,{116,105,111}}, +/* 18832 */ {(15<<2)|3,{116,105,115}}, +/* 18833 */ {(15<<2)|3,{116,105,115}}, +/* 18834 */ {(15<<2)|3,{116,105,116}}, +/* 18835 */ {(15<<2)|3,{116,105,116}}, +/* 18836 */ {(16<<2)|3,{116,105,32}}, +/* 18837 */ {(16<<2)|3,{116,105,37}}, +/* 18838 */ {(16<<2)|3,{116,105,45}}, +/* 18839 */ {(16<<2)|3,{116,105,46}}, +/* 18840 */ {(16<<2)|3,{116,105,47}}, +/* 18841 */ {(16<<2)|3,{116,105,51}}, +/* 18842 */ {(16<<2)|3,{116,105,52}}, +/* 18843 */ {(16<<2)|3,{116,105,53}}, +/* 18844 */ {(16<<2)|3,{116,105,54}}, +/* 18845 */ {(16<<2)|3,{116,105,55}}, +/* 18846 */ {(16<<2)|3,{116,105,56}}, +/* 18847 */ {(16<<2)|3,{116,105,57}}, +/* 18848 */ {(16<<2)|3,{116,105,61}}, +/* 18849 */ {(16<<2)|3,{116,105,65}}, +/* 18850 */ {(16<<2)|3,{116,105,95}}, +/* 18851 */ {(16<<2)|3,{116,105,98}}, +/* 18852 */ {(16<<2)|3,{116,105,100}}, +/* 18853 */ {(16<<2)|3,{116,105,102}}, +/* 18854 */ {(16<<2)|3,{116,105,103}}, +/* 18855 */ {(16<<2)|3,{116,105,104}}, +/* 18856 */ {(16<<2)|3,{116,105,108}}, +/* 18857 */ {(16<<2)|3,{116,105,109}}, +/* 18858 */ {(16<<2)|3,{116,105,110}}, +/* 18859 */ {(16<<2)|3,{116,105,112}}, +/* 18860 */ {(16<<2)|3,{116,105,114}}, +/* 18861 */ {(16<<2)|3,{116,105,117}}, +/* 18862 */ {(10<<2)|2,{116,105,0}}, +/* 18863 */ {(10<<2)|2,{116,105,0}}, +/* 18864 */ {(10<<2)|2,{116,105,0}}, +/* 18865 */ {(10<<2)|2,{116,105,0}}, +/* 18866 */ {(10<<2)|2,{116,105,0}}, +/* 18867 */ {(10<<2)|2,{116,105,0}}, +/* 18868 */ {(10<<2)|2,{116,105,0}}, +/* 18869 */ {(10<<2)|2,{116,105,0}}, +/* 18870 */ {(10<<2)|2,{116,105,0}}, +/* 18871 */ {(10<<2)|2,{116,105,0}}, +/* 18872 */ {(10<<2)|2,{116,105,0}}, +/* 18873 */ {(10<<2)|2,{116,105,0}}, +/* 18874 */ {(10<<2)|2,{116,105,0}}, +/* 18875 */ {(10<<2)|2,{116,105,0}}, +/* 18876 */ {(10<<2)|2,{116,105,0}}, +/* 18877 */ {(10<<2)|2,{116,105,0}}, +/* 18878 */ {(10<<2)|2,{116,105,0}}, +/* 18879 */ {(10<<2)|2,{116,105,0}}, +/* 18880 */ {(15<<2)|3,{116,111,48}}, +/* 18881 */ {(15<<2)|3,{116,111,48}}, +/* 18882 */ {(15<<2)|3,{116,111,49}}, +/* 18883 */ {(15<<2)|3,{116,111,49}}, +/* 18884 */ {(15<<2)|3,{116,111,50}}, +/* 18885 */ {(15<<2)|3,{116,111,50}}, +/* 18886 */ {(15<<2)|3,{116,111,97}}, +/* 18887 */ {(15<<2)|3,{116,111,97}}, +/* 18888 */ {(15<<2)|3,{116,111,99}}, +/* 18889 */ {(15<<2)|3,{116,111,99}}, +/* 18890 */ {(15<<2)|3,{116,111,101}}, +/* 18891 */ {(15<<2)|3,{116,111,101}}, +/* 18892 */ {(15<<2)|3,{116,111,105}}, +/* 18893 */ {(15<<2)|3,{116,111,105}}, +/* 18894 */ {(15<<2)|3,{116,111,111}}, +/* 18895 */ {(15<<2)|3,{116,111,111}}, +/* 18896 */ {(15<<2)|3,{116,111,115}}, +/* 18897 */ {(15<<2)|3,{116,111,115}}, +/* 18898 */ {(15<<2)|3,{116,111,116}}, +/* 18899 */ {(15<<2)|3,{116,111,116}}, +/* 18900 */ {(16<<2)|3,{116,111,32}}, +/* 18901 */ {(16<<2)|3,{116,111,37}}, +/* 18902 */ {(16<<2)|3,{116,111,45}}, +/* 18903 */ {(16<<2)|3,{116,111,46}}, +/* 18904 */ {(16<<2)|3,{116,111,47}}, +/* 18905 */ {(16<<2)|3,{116,111,51}}, +/* 18906 */ {(16<<2)|3,{116,111,52}}, +/* 18907 */ {(16<<2)|3,{116,111,53}}, +/* 18908 */ {(16<<2)|3,{116,111,54}}, +/* 18909 */ {(16<<2)|3,{116,111,55}}, +/* 18910 */ {(16<<2)|3,{116,111,56}}, +/* 18911 */ {(16<<2)|3,{116,111,57}}, +/* 18912 */ {(16<<2)|3,{116,111,61}}, +/* 18913 */ {(16<<2)|3,{116,111,65}}, +/* 18914 */ {(16<<2)|3,{116,111,95}}, +/* 18915 */ {(16<<2)|3,{116,111,98}}, +/* 18916 */ {(16<<2)|3,{116,111,100}}, +/* 18917 */ {(16<<2)|3,{116,111,102}}, +/* 18918 */ {(16<<2)|3,{116,111,103}}, +/* 18919 */ {(16<<2)|3,{116,111,104}}, +/* 18920 */ {(16<<2)|3,{116,111,108}}, +/* 18921 */ {(16<<2)|3,{116,111,109}}, +/* 18922 */ {(16<<2)|3,{116,111,110}}, +/* 18923 */ {(16<<2)|3,{116,111,112}}, +/* 18924 */ {(16<<2)|3,{116,111,114}}, +/* 18925 */ {(16<<2)|3,{116,111,117}}, +/* 18926 */ {(10<<2)|2,{116,111,0}}, +/* 18927 */ {(10<<2)|2,{116,111,0}}, +/* 18928 */ {(10<<2)|2,{116,111,0}}, +/* 18929 */ {(10<<2)|2,{116,111,0}}, +/* 18930 */ {(10<<2)|2,{116,111,0}}, +/* 18931 */ {(10<<2)|2,{116,111,0}}, +/* 18932 */ {(10<<2)|2,{116,111,0}}, +/* 18933 */ {(10<<2)|2,{116,111,0}}, +/* 18934 */ {(10<<2)|2,{116,111,0}}, +/* 18935 */ {(10<<2)|2,{116,111,0}}, +/* 18936 */ {(10<<2)|2,{116,111,0}}, +/* 18937 */ {(10<<2)|2,{116,111,0}}, +/* 18938 */ {(10<<2)|2,{116,111,0}}, +/* 18939 */ {(10<<2)|2,{116,111,0}}, +/* 18940 */ {(10<<2)|2,{116,111,0}}, +/* 18941 */ {(10<<2)|2,{116,111,0}}, +/* 18942 */ {(10<<2)|2,{116,111,0}}, +/* 18943 */ {(10<<2)|2,{116,111,0}}, +/* 18944 */ {(15<<2)|3,{116,115,48}}, +/* 18945 */ {(15<<2)|3,{116,115,48}}, +/* 18946 */ {(15<<2)|3,{116,115,49}}, +/* 18947 */ {(15<<2)|3,{116,115,49}}, +/* 18948 */ {(15<<2)|3,{116,115,50}}, +/* 18949 */ {(15<<2)|3,{116,115,50}}, +/* 18950 */ {(15<<2)|3,{116,115,97}}, +/* 18951 */ {(15<<2)|3,{116,115,97}}, +/* 18952 */ {(15<<2)|3,{116,115,99}}, +/* 18953 */ {(15<<2)|3,{116,115,99}}, +/* 18954 */ {(15<<2)|3,{116,115,101}}, +/* 18955 */ {(15<<2)|3,{116,115,101}}, +/* 18956 */ {(15<<2)|3,{116,115,105}}, +/* 18957 */ {(15<<2)|3,{116,115,105}}, +/* 18958 */ {(15<<2)|3,{116,115,111}}, +/* 18959 */ {(15<<2)|3,{116,115,111}}, +/* 18960 */ {(15<<2)|3,{116,115,115}}, +/* 18961 */ {(15<<2)|3,{116,115,115}}, +/* 18962 */ {(15<<2)|3,{116,115,116}}, +/* 18963 */ {(15<<2)|3,{116,115,116}}, +/* 18964 */ {(16<<2)|3,{116,115,32}}, +/* 18965 */ {(16<<2)|3,{116,115,37}}, +/* 18966 */ {(16<<2)|3,{116,115,45}}, +/* 18967 */ {(16<<2)|3,{116,115,46}}, +/* 18968 */ {(16<<2)|3,{116,115,47}}, +/* 18969 */ {(16<<2)|3,{116,115,51}}, +/* 18970 */ {(16<<2)|3,{116,115,52}}, +/* 18971 */ {(16<<2)|3,{116,115,53}}, +/* 18972 */ {(16<<2)|3,{116,115,54}}, +/* 18973 */ {(16<<2)|3,{116,115,55}}, +/* 18974 */ {(16<<2)|3,{116,115,56}}, +/* 18975 */ {(16<<2)|3,{116,115,57}}, +/* 18976 */ {(16<<2)|3,{116,115,61}}, +/* 18977 */ {(16<<2)|3,{116,115,65}}, +/* 18978 */ {(16<<2)|3,{116,115,95}}, +/* 18979 */ {(16<<2)|3,{116,115,98}}, +/* 18980 */ {(16<<2)|3,{116,115,100}}, +/* 18981 */ {(16<<2)|3,{116,115,102}}, +/* 18982 */ {(16<<2)|3,{116,115,103}}, +/* 18983 */ {(16<<2)|3,{116,115,104}}, +/* 18984 */ {(16<<2)|3,{116,115,108}}, +/* 18985 */ {(16<<2)|3,{116,115,109}}, +/* 18986 */ {(16<<2)|3,{116,115,110}}, +/* 18987 */ {(16<<2)|3,{116,115,112}}, +/* 18988 */ {(16<<2)|3,{116,115,114}}, +/* 18989 */ {(16<<2)|3,{116,115,117}}, +/* 18990 */ {(10<<2)|2,{116,115,0}}, +/* 18991 */ {(10<<2)|2,{116,115,0}}, +/* 18992 */ {(10<<2)|2,{116,115,0}}, +/* 18993 */ {(10<<2)|2,{116,115,0}}, +/* 18994 */ {(10<<2)|2,{116,115,0}}, +/* 18995 */ {(10<<2)|2,{116,115,0}}, +/* 18996 */ {(10<<2)|2,{116,115,0}}, +/* 18997 */ {(10<<2)|2,{116,115,0}}, +/* 18998 */ {(10<<2)|2,{116,115,0}}, +/* 18999 */ {(10<<2)|2,{116,115,0}}, +/* 19000 */ {(10<<2)|2,{116,115,0}}, +/* 19001 */ {(10<<2)|2,{116,115,0}}, +/* 19002 */ {(10<<2)|2,{116,115,0}}, +/* 19003 */ {(10<<2)|2,{116,115,0}}, +/* 19004 */ {(10<<2)|2,{116,115,0}}, +/* 19005 */ {(10<<2)|2,{116,115,0}}, +/* 19006 */ {(10<<2)|2,{116,115,0}}, +/* 19007 */ {(10<<2)|2,{116,115,0}}, +/* 19008 */ {(15<<2)|3,{116,116,48}}, +/* 19009 */ {(15<<2)|3,{116,116,48}}, +/* 19010 */ {(15<<2)|3,{116,116,49}}, +/* 19011 */ {(15<<2)|3,{116,116,49}}, +/* 19012 */ {(15<<2)|3,{116,116,50}}, +/* 19013 */ {(15<<2)|3,{116,116,50}}, +/* 19014 */ {(15<<2)|3,{116,116,97}}, +/* 19015 */ {(15<<2)|3,{116,116,97}}, +/* 19016 */ {(15<<2)|3,{116,116,99}}, +/* 19017 */ {(15<<2)|3,{116,116,99}}, +/* 19018 */ {(15<<2)|3,{116,116,101}}, +/* 19019 */ {(15<<2)|3,{116,116,101}}, +/* 19020 */ {(15<<2)|3,{116,116,105}}, +/* 19021 */ {(15<<2)|3,{116,116,105}}, +/* 19022 */ {(15<<2)|3,{116,116,111}}, +/* 19023 */ {(15<<2)|3,{116,116,111}}, +/* 19024 */ {(15<<2)|3,{116,116,115}}, +/* 19025 */ {(15<<2)|3,{116,116,115}}, +/* 19026 */ {(15<<2)|3,{116,116,116}}, +/* 19027 */ {(15<<2)|3,{116,116,116}}, +/* 19028 */ {(16<<2)|3,{116,116,32}}, +/* 19029 */ {(16<<2)|3,{116,116,37}}, +/* 19030 */ {(16<<2)|3,{116,116,45}}, +/* 19031 */ {(16<<2)|3,{116,116,46}}, +/* 19032 */ {(16<<2)|3,{116,116,47}}, +/* 19033 */ {(16<<2)|3,{116,116,51}}, +/* 19034 */ {(16<<2)|3,{116,116,52}}, +/* 19035 */ {(16<<2)|3,{116,116,53}}, +/* 19036 */ {(16<<2)|3,{116,116,54}}, +/* 19037 */ {(16<<2)|3,{116,116,55}}, +/* 19038 */ {(16<<2)|3,{116,116,56}}, +/* 19039 */ {(16<<2)|3,{116,116,57}}, +/* 19040 */ {(16<<2)|3,{116,116,61}}, +/* 19041 */ {(16<<2)|3,{116,116,65}}, +/* 19042 */ {(16<<2)|3,{116,116,95}}, +/* 19043 */ {(16<<2)|3,{116,116,98}}, +/* 19044 */ {(16<<2)|3,{116,116,100}}, +/* 19045 */ {(16<<2)|3,{116,116,102}}, +/* 19046 */ {(16<<2)|3,{116,116,103}}, +/* 19047 */ {(16<<2)|3,{116,116,104}}, +/* 19048 */ {(16<<2)|3,{116,116,108}}, +/* 19049 */ {(16<<2)|3,{116,116,109}}, +/* 19050 */ {(16<<2)|3,{116,116,110}}, +/* 19051 */ {(16<<2)|3,{116,116,112}}, +/* 19052 */ {(16<<2)|3,{116,116,114}}, +/* 19053 */ {(16<<2)|3,{116,116,117}}, +/* 19054 */ {(10<<2)|2,{116,116,0}}, +/* 19055 */ {(10<<2)|2,{116,116,0}}, +/* 19056 */ {(10<<2)|2,{116,116,0}}, +/* 19057 */ {(10<<2)|2,{116,116,0}}, +/* 19058 */ {(10<<2)|2,{116,116,0}}, +/* 19059 */ {(10<<2)|2,{116,116,0}}, +/* 19060 */ {(10<<2)|2,{116,116,0}}, +/* 19061 */ {(10<<2)|2,{116,116,0}}, +/* 19062 */ {(10<<2)|2,{116,116,0}}, +/* 19063 */ {(10<<2)|2,{116,116,0}}, +/* 19064 */ {(10<<2)|2,{116,116,0}}, +/* 19065 */ {(10<<2)|2,{116,116,0}}, +/* 19066 */ {(10<<2)|2,{116,116,0}}, +/* 19067 */ {(10<<2)|2,{116,116,0}}, +/* 19068 */ {(10<<2)|2,{116,116,0}}, +/* 19069 */ {(10<<2)|2,{116,116,0}}, +/* 19070 */ {(10<<2)|2,{116,116,0}}, +/* 19071 */ {(10<<2)|2,{116,116,0}}, +/* 19072 */ {(16<<2)|3,{116,32,48}}, +/* 19073 */ {(16<<2)|3,{116,32,49}}, +/* 19074 */ {(16<<2)|3,{116,32,50}}, +/* 19075 */ {(16<<2)|3,{116,32,97}}, +/* 19076 */ {(16<<2)|3,{116,32,99}}, +/* 19077 */ {(16<<2)|3,{116,32,101}}, +/* 19078 */ {(16<<2)|3,{116,32,105}}, +/* 19079 */ {(16<<2)|3,{116,32,111}}, +/* 19080 */ {(16<<2)|3,{116,32,115}}, +/* 19081 */ {(16<<2)|3,{116,32,116}}, +/* 19082 */ {(11<<2)|2,{116,32,0}}, +/* 19083 */ {(11<<2)|2,{116,32,0}}, +/* 19084 */ {(11<<2)|2,{116,32,0}}, +/* 19085 */ {(11<<2)|2,{116,32,0}}, +/* 19086 */ {(11<<2)|2,{116,32,0}}, +/* 19087 */ {(11<<2)|2,{116,32,0}}, +/* 19088 */ {(11<<2)|2,{116,32,0}}, +/* 19089 */ {(11<<2)|2,{116,32,0}}, +/* 19090 */ {(11<<2)|2,{116,32,0}}, +/* 19091 */ {(11<<2)|2,{116,32,0}}, +/* 19092 */ {(11<<2)|2,{116,32,0}}, +/* 19093 */ {(11<<2)|2,{116,32,0}}, +/* 19094 */ {(11<<2)|2,{116,32,0}}, +/* 19095 */ {(11<<2)|2,{116,32,0}}, +/* 19096 */ {(11<<2)|2,{116,32,0}}, +/* 19097 */ {(11<<2)|2,{116,32,0}}, +/* 19098 */ {(11<<2)|2,{116,32,0}}, +/* 19099 */ {(11<<2)|2,{116,32,0}}, +/* 19100 */ {(11<<2)|2,{116,32,0}}, +/* 19101 */ {(11<<2)|2,{116,32,0}}, +/* 19102 */ {(11<<2)|2,{116,32,0}}, +/* 19103 */ {(11<<2)|2,{116,32,0}}, +/* 19104 */ {(16<<2)|3,{116,37,48}}, +/* 19105 */ {(16<<2)|3,{116,37,49}}, +/* 19106 */ {(16<<2)|3,{116,37,50}}, +/* 19107 */ {(16<<2)|3,{116,37,97}}, +/* 19108 */ {(16<<2)|3,{116,37,99}}, +/* 19109 */ {(16<<2)|3,{116,37,101}}, +/* 19110 */ {(16<<2)|3,{116,37,105}}, +/* 19111 */ {(16<<2)|3,{116,37,111}}, +/* 19112 */ {(16<<2)|3,{116,37,115}}, +/* 19113 */ {(16<<2)|3,{116,37,116}}, +/* 19114 */ {(11<<2)|2,{116,37,0}}, +/* 19115 */ {(11<<2)|2,{116,37,0}}, +/* 19116 */ {(11<<2)|2,{116,37,0}}, +/* 19117 */ {(11<<2)|2,{116,37,0}}, +/* 19118 */ {(11<<2)|2,{116,37,0}}, +/* 19119 */ {(11<<2)|2,{116,37,0}}, +/* 19120 */ {(11<<2)|2,{116,37,0}}, +/* 19121 */ {(11<<2)|2,{116,37,0}}, +/* 19122 */ {(11<<2)|2,{116,37,0}}, +/* 19123 */ {(11<<2)|2,{116,37,0}}, +/* 19124 */ {(11<<2)|2,{116,37,0}}, +/* 19125 */ {(11<<2)|2,{116,37,0}}, +/* 19126 */ {(11<<2)|2,{116,37,0}}, +/* 19127 */ {(11<<2)|2,{116,37,0}}, +/* 19128 */ {(11<<2)|2,{116,37,0}}, +/* 19129 */ {(11<<2)|2,{116,37,0}}, +/* 19130 */ {(11<<2)|2,{116,37,0}}, +/* 19131 */ {(11<<2)|2,{116,37,0}}, +/* 19132 */ {(11<<2)|2,{116,37,0}}, +/* 19133 */ {(11<<2)|2,{116,37,0}}, +/* 19134 */ {(11<<2)|2,{116,37,0}}, +/* 19135 */ {(11<<2)|2,{116,37,0}}, +/* 19136 */ {(16<<2)|3,{116,45,48}}, +/* 19137 */ {(16<<2)|3,{116,45,49}}, +/* 19138 */ {(16<<2)|3,{116,45,50}}, +/* 19139 */ {(16<<2)|3,{116,45,97}}, +/* 19140 */ {(16<<2)|3,{116,45,99}}, +/* 19141 */ {(16<<2)|3,{116,45,101}}, +/* 19142 */ {(16<<2)|3,{116,45,105}}, +/* 19143 */ {(16<<2)|3,{116,45,111}}, +/* 19144 */ {(16<<2)|3,{116,45,115}}, +/* 19145 */ {(16<<2)|3,{116,45,116}}, +/* 19146 */ {(11<<2)|2,{116,45,0}}, +/* 19147 */ {(11<<2)|2,{116,45,0}}, +/* 19148 */ {(11<<2)|2,{116,45,0}}, +/* 19149 */ {(11<<2)|2,{116,45,0}}, +/* 19150 */ {(11<<2)|2,{116,45,0}}, +/* 19151 */ {(11<<2)|2,{116,45,0}}, +/* 19152 */ {(11<<2)|2,{116,45,0}}, +/* 19153 */ {(11<<2)|2,{116,45,0}}, +/* 19154 */ {(11<<2)|2,{116,45,0}}, +/* 19155 */ {(11<<2)|2,{116,45,0}}, +/* 19156 */ {(11<<2)|2,{116,45,0}}, +/* 19157 */ {(11<<2)|2,{116,45,0}}, +/* 19158 */ {(11<<2)|2,{116,45,0}}, +/* 19159 */ {(11<<2)|2,{116,45,0}}, +/* 19160 */ {(11<<2)|2,{116,45,0}}, +/* 19161 */ {(11<<2)|2,{116,45,0}}, +/* 19162 */ {(11<<2)|2,{116,45,0}}, +/* 19163 */ {(11<<2)|2,{116,45,0}}, +/* 19164 */ {(11<<2)|2,{116,45,0}}, +/* 19165 */ {(11<<2)|2,{116,45,0}}, +/* 19166 */ {(11<<2)|2,{116,45,0}}, +/* 19167 */ {(11<<2)|2,{116,45,0}}, +/* 19168 */ {(16<<2)|3,{116,46,48}}, +/* 19169 */ {(16<<2)|3,{116,46,49}}, +/* 19170 */ {(16<<2)|3,{116,46,50}}, +/* 19171 */ {(16<<2)|3,{116,46,97}}, +/* 19172 */ {(16<<2)|3,{116,46,99}}, +/* 19173 */ {(16<<2)|3,{116,46,101}}, +/* 19174 */ {(16<<2)|3,{116,46,105}}, +/* 19175 */ {(16<<2)|3,{116,46,111}}, +/* 19176 */ {(16<<2)|3,{116,46,115}}, +/* 19177 */ {(16<<2)|3,{116,46,116}}, +/* 19178 */ {(11<<2)|2,{116,46,0}}, +/* 19179 */ {(11<<2)|2,{116,46,0}}, +/* 19180 */ {(11<<2)|2,{116,46,0}}, +/* 19181 */ {(11<<2)|2,{116,46,0}}, +/* 19182 */ {(11<<2)|2,{116,46,0}}, +/* 19183 */ {(11<<2)|2,{116,46,0}}, +/* 19184 */ {(11<<2)|2,{116,46,0}}, +/* 19185 */ {(11<<2)|2,{116,46,0}}, +/* 19186 */ {(11<<2)|2,{116,46,0}}, +/* 19187 */ {(11<<2)|2,{116,46,0}}, +/* 19188 */ {(11<<2)|2,{116,46,0}}, +/* 19189 */ {(11<<2)|2,{116,46,0}}, +/* 19190 */ {(11<<2)|2,{116,46,0}}, +/* 19191 */ {(11<<2)|2,{116,46,0}}, +/* 19192 */ {(11<<2)|2,{116,46,0}}, +/* 19193 */ {(11<<2)|2,{116,46,0}}, +/* 19194 */ {(11<<2)|2,{116,46,0}}, +/* 19195 */ {(11<<2)|2,{116,46,0}}, +/* 19196 */ {(11<<2)|2,{116,46,0}}, +/* 19197 */ {(11<<2)|2,{116,46,0}}, +/* 19198 */ {(11<<2)|2,{116,46,0}}, +/* 19199 */ {(11<<2)|2,{116,46,0}}, +/* 19200 */ {(16<<2)|3,{116,47,48}}, +/* 19201 */ {(16<<2)|3,{116,47,49}}, +/* 19202 */ {(16<<2)|3,{116,47,50}}, +/* 19203 */ {(16<<2)|3,{116,47,97}}, +/* 19204 */ {(16<<2)|3,{116,47,99}}, +/* 19205 */ {(16<<2)|3,{116,47,101}}, +/* 19206 */ {(16<<2)|3,{116,47,105}}, +/* 19207 */ {(16<<2)|3,{116,47,111}}, +/* 19208 */ {(16<<2)|3,{116,47,115}}, +/* 19209 */ {(16<<2)|3,{116,47,116}}, +/* 19210 */ {(11<<2)|2,{116,47,0}}, +/* 19211 */ {(11<<2)|2,{116,47,0}}, +/* 19212 */ {(11<<2)|2,{116,47,0}}, +/* 19213 */ {(11<<2)|2,{116,47,0}}, +/* 19214 */ {(11<<2)|2,{116,47,0}}, +/* 19215 */ {(11<<2)|2,{116,47,0}}, +/* 19216 */ {(11<<2)|2,{116,47,0}}, +/* 19217 */ {(11<<2)|2,{116,47,0}}, +/* 19218 */ {(11<<2)|2,{116,47,0}}, +/* 19219 */ {(11<<2)|2,{116,47,0}}, +/* 19220 */ {(11<<2)|2,{116,47,0}}, +/* 19221 */ {(11<<2)|2,{116,47,0}}, +/* 19222 */ {(11<<2)|2,{116,47,0}}, +/* 19223 */ {(11<<2)|2,{116,47,0}}, +/* 19224 */ {(11<<2)|2,{116,47,0}}, +/* 19225 */ {(11<<2)|2,{116,47,0}}, +/* 19226 */ {(11<<2)|2,{116,47,0}}, +/* 19227 */ {(11<<2)|2,{116,47,0}}, +/* 19228 */ {(11<<2)|2,{116,47,0}}, +/* 19229 */ {(11<<2)|2,{116,47,0}}, +/* 19230 */ {(11<<2)|2,{116,47,0}}, +/* 19231 */ {(11<<2)|2,{116,47,0}}, +/* 19232 */ {(16<<2)|3,{116,51,48}}, +/* 19233 */ {(16<<2)|3,{116,51,49}}, +/* 19234 */ {(16<<2)|3,{116,51,50}}, +/* 19235 */ {(16<<2)|3,{116,51,97}}, +/* 19236 */ {(16<<2)|3,{116,51,99}}, +/* 19237 */ {(16<<2)|3,{116,51,101}}, +/* 19238 */ {(16<<2)|3,{116,51,105}}, +/* 19239 */ {(16<<2)|3,{116,51,111}}, +/* 19240 */ {(16<<2)|3,{116,51,115}}, +/* 19241 */ {(16<<2)|3,{116,51,116}}, +/* 19242 */ {(11<<2)|2,{116,51,0}}, +/* 19243 */ {(11<<2)|2,{116,51,0}}, +/* 19244 */ {(11<<2)|2,{116,51,0}}, +/* 19245 */ {(11<<2)|2,{116,51,0}}, +/* 19246 */ {(11<<2)|2,{116,51,0}}, +/* 19247 */ {(11<<2)|2,{116,51,0}}, +/* 19248 */ {(11<<2)|2,{116,51,0}}, +/* 19249 */ {(11<<2)|2,{116,51,0}}, +/* 19250 */ {(11<<2)|2,{116,51,0}}, +/* 19251 */ {(11<<2)|2,{116,51,0}}, +/* 19252 */ {(11<<2)|2,{116,51,0}}, +/* 19253 */ {(11<<2)|2,{116,51,0}}, +/* 19254 */ {(11<<2)|2,{116,51,0}}, +/* 19255 */ {(11<<2)|2,{116,51,0}}, +/* 19256 */ {(11<<2)|2,{116,51,0}}, +/* 19257 */ {(11<<2)|2,{116,51,0}}, +/* 19258 */ {(11<<2)|2,{116,51,0}}, +/* 19259 */ {(11<<2)|2,{116,51,0}}, +/* 19260 */ {(11<<2)|2,{116,51,0}}, +/* 19261 */ {(11<<2)|2,{116,51,0}}, +/* 19262 */ {(11<<2)|2,{116,51,0}}, +/* 19263 */ {(11<<2)|2,{116,51,0}}, +/* 19264 */ {(16<<2)|3,{116,52,48}}, +/* 19265 */ {(16<<2)|3,{116,52,49}}, +/* 19266 */ {(16<<2)|3,{116,52,50}}, +/* 19267 */ {(16<<2)|3,{116,52,97}}, +/* 19268 */ {(16<<2)|3,{116,52,99}}, +/* 19269 */ {(16<<2)|3,{116,52,101}}, +/* 19270 */ {(16<<2)|3,{116,52,105}}, +/* 19271 */ {(16<<2)|3,{116,52,111}}, +/* 19272 */ {(16<<2)|3,{116,52,115}}, +/* 19273 */ {(16<<2)|3,{116,52,116}}, +/* 19274 */ {(11<<2)|2,{116,52,0}}, +/* 19275 */ {(11<<2)|2,{116,52,0}}, +/* 19276 */ {(11<<2)|2,{116,52,0}}, +/* 19277 */ {(11<<2)|2,{116,52,0}}, +/* 19278 */ {(11<<2)|2,{116,52,0}}, +/* 19279 */ {(11<<2)|2,{116,52,0}}, +/* 19280 */ {(11<<2)|2,{116,52,0}}, +/* 19281 */ {(11<<2)|2,{116,52,0}}, +/* 19282 */ {(11<<2)|2,{116,52,0}}, +/* 19283 */ {(11<<2)|2,{116,52,0}}, +/* 19284 */ {(11<<2)|2,{116,52,0}}, +/* 19285 */ {(11<<2)|2,{116,52,0}}, +/* 19286 */ {(11<<2)|2,{116,52,0}}, +/* 19287 */ {(11<<2)|2,{116,52,0}}, +/* 19288 */ {(11<<2)|2,{116,52,0}}, +/* 19289 */ {(11<<2)|2,{116,52,0}}, +/* 19290 */ {(11<<2)|2,{116,52,0}}, +/* 19291 */ {(11<<2)|2,{116,52,0}}, +/* 19292 */ {(11<<2)|2,{116,52,0}}, +/* 19293 */ {(11<<2)|2,{116,52,0}}, +/* 19294 */ {(11<<2)|2,{116,52,0}}, +/* 19295 */ {(11<<2)|2,{116,52,0}}, +/* 19296 */ {(16<<2)|3,{116,53,48}}, +/* 19297 */ {(16<<2)|3,{116,53,49}}, +/* 19298 */ {(16<<2)|3,{116,53,50}}, +/* 19299 */ {(16<<2)|3,{116,53,97}}, +/* 19300 */ {(16<<2)|3,{116,53,99}}, +/* 19301 */ {(16<<2)|3,{116,53,101}}, +/* 19302 */ {(16<<2)|3,{116,53,105}}, +/* 19303 */ {(16<<2)|3,{116,53,111}}, +/* 19304 */ {(16<<2)|3,{116,53,115}}, +/* 19305 */ {(16<<2)|3,{116,53,116}}, +/* 19306 */ {(11<<2)|2,{116,53,0}}, +/* 19307 */ {(11<<2)|2,{116,53,0}}, +/* 19308 */ {(11<<2)|2,{116,53,0}}, +/* 19309 */ {(11<<2)|2,{116,53,0}}, +/* 19310 */ {(11<<2)|2,{116,53,0}}, +/* 19311 */ {(11<<2)|2,{116,53,0}}, +/* 19312 */ {(11<<2)|2,{116,53,0}}, +/* 19313 */ {(11<<2)|2,{116,53,0}}, +/* 19314 */ {(11<<2)|2,{116,53,0}}, +/* 19315 */ {(11<<2)|2,{116,53,0}}, +/* 19316 */ {(11<<2)|2,{116,53,0}}, +/* 19317 */ {(11<<2)|2,{116,53,0}}, +/* 19318 */ {(11<<2)|2,{116,53,0}}, +/* 19319 */ {(11<<2)|2,{116,53,0}}, +/* 19320 */ {(11<<2)|2,{116,53,0}}, +/* 19321 */ {(11<<2)|2,{116,53,0}}, +/* 19322 */ {(11<<2)|2,{116,53,0}}, +/* 19323 */ {(11<<2)|2,{116,53,0}}, +/* 19324 */ {(11<<2)|2,{116,53,0}}, +/* 19325 */ {(11<<2)|2,{116,53,0}}, +/* 19326 */ {(11<<2)|2,{116,53,0}}, +/* 19327 */ {(11<<2)|2,{116,53,0}}, +/* 19328 */ {(16<<2)|3,{116,54,48}}, +/* 19329 */ {(16<<2)|3,{116,54,49}}, +/* 19330 */ {(16<<2)|3,{116,54,50}}, +/* 19331 */ {(16<<2)|3,{116,54,97}}, +/* 19332 */ {(16<<2)|3,{116,54,99}}, +/* 19333 */ {(16<<2)|3,{116,54,101}}, +/* 19334 */ {(16<<2)|3,{116,54,105}}, +/* 19335 */ {(16<<2)|3,{116,54,111}}, +/* 19336 */ {(16<<2)|3,{116,54,115}}, +/* 19337 */ {(16<<2)|3,{116,54,116}}, +/* 19338 */ {(11<<2)|2,{116,54,0}}, +/* 19339 */ {(11<<2)|2,{116,54,0}}, +/* 19340 */ {(11<<2)|2,{116,54,0}}, +/* 19341 */ {(11<<2)|2,{116,54,0}}, +/* 19342 */ {(11<<2)|2,{116,54,0}}, +/* 19343 */ {(11<<2)|2,{116,54,0}}, +/* 19344 */ {(11<<2)|2,{116,54,0}}, +/* 19345 */ {(11<<2)|2,{116,54,0}}, +/* 19346 */ {(11<<2)|2,{116,54,0}}, +/* 19347 */ {(11<<2)|2,{116,54,0}}, +/* 19348 */ {(11<<2)|2,{116,54,0}}, +/* 19349 */ {(11<<2)|2,{116,54,0}}, +/* 19350 */ {(11<<2)|2,{116,54,0}}, +/* 19351 */ {(11<<2)|2,{116,54,0}}, +/* 19352 */ {(11<<2)|2,{116,54,0}}, +/* 19353 */ {(11<<2)|2,{116,54,0}}, +/* 19354 */ {(11<<2)|2,{116,54,0}}, +/* 19355 */ {(11<<2)|2,{116,54,0}}, +/* 19356 */ {(11<<2)|2,{116,54,0}}, +/* 19357 */ {(11<<2)|2,{116,54,0}}, +/* 19358 */ {(11<<2)|2,{116,54,0}}, +/* 19359 */ {(11<<2)|2,{116,54,0}}, +/* 19360 */ {(16<<2)|3,{116,55,48}}, +/* 19361 */ {(16<<2)|3,{116,55,49}}, +/* 19362 */ {(16<<2)|3,{116,55,50}}, +/* 19363 */ {(16<<2)|3,{116,55,97}}, +/* 19364 */ {(16<<2)|3,{116,55,99}}, +/* 19365 */ {(16<<2)|3,{116,55,101}}, +/* 19366 */ {(16<<2)|3,{116,55,105}}, +/* 19367 */ {(16<<2)|3,{116,55,111}}, +/* 19368 */ {(16<<2)|3,{116,55,115}}, +/* 19369 */ {(16<<2)|3,{116,55,116}}, +/* 19370 */ {(11<<2)|2,{116,55,0}}, +/* 19371 */ {(11<<2)|2,{116,55,0}}, +/* 19372 */ {(11<<2)|2,{116,55,0}}, +/* 19373 */ {(11<<2)|2,{116,55,0}}, +/* 19374 */ {(11<<2)|2,{116,55,0}}, +/* 19375 */ {(11<<2)|2,{116,55,0}}, +/* 19376 */ {(11<<2)|2,{116,55,0}}, +/* 19377 */ {(11<<2)|2,{116,55,0}}, +/* 19378 */ {(11<<2)|2,{116,55,0}}, +/* 19379 */ {(11<<2)|2,{116,55,0}}, +/* 19380 */ {(11<<2)|2,{116,55,0}}, +/* 19381 */ {(11<<2)|2,{116,55,0}}, +/* 19382 */ {(11<<2)|2,{116,55,0}}, +/* 19383 */ {(11<<2)|2,{116,55,0}}, +/* 19384 */ {(11<<2)|2,{116,55,0}}, +/* 19385 */ {(11<<2)|2,{116,55,0}}, +/* 19386 */ {(11<<2)|2,{116,55,0}}, +/* 19387 */ {(11<<2)|2,{116,55,0}}, +/* 19388 */ {(11<<2)|2,{116,55,0}}, +/* 19389 */ {(11<<2)|2,{116,55,0}}, +/* 19390 */ {(11<<2)|2,{116,55,0}}, +/* 19391 */ {(11<<2)|2,{116,55,0}}, +/* 19392 */ {(16<<2)|3,{116,56,48}}, +/* 19393 */ {(16<<2)|3,{116,56,49}}, +/* 19394 */ {(16<<2)|3,{116,56,50}}, +/* 19395 */ {(16<<2)|3,{116,56,97}}, +/* 19396 */ {(16<<2)|3,{116,56,99}}, +/* 19397 */ {(16<<2)|3,{116,56,101}}, +/* 19398 */ {(16<<2)|3,{116,56,105}}, +/* 19399 */ {(16<<2)|3,{116,56,111}}, +/* 19400 */ {(16<<2)|3,{116,56,115}}, +/* 19401 */ {(16<<2)|3,{116,56,116}}, +/* 19402 */ {(11<<2)|2,{116,56,0}}, +/* 19403 */ {(11<<2)|2,{116,56,0}}, +/* 19404 */ {(11<<2)|2,{116,56,0}}, +/* 19405 */ {(11<<2)|2,{116,56,0}}, +/* 19406 */ {(11<<2)|2,{116,56,0}}, +/* 19407 */ {(11<<2)|2,{116,56,0}}, +/* 19408 */ {(11<<2)|2,{116,56,0}}, +/* 19409 */ {(11<<2)|2,{116,56,0}}, +/* 19410 */ {(11<<2)|2,{116,56,0}}, +/* 19411 */ {(11<<2)|2,{116,56,0}}, +/* 19412 */ {(11<<2)|2,{116,56,0}}, +/* 19413 */ {(11<<2)|2,{116,56,0}}, +/* 19414 */ {(11<<2)|2,{116,56,0}}, +/* 19415 */ {(11<<2)|2,{116,56,0}}, +/* 19416 */ {(11<<2)|2,{116,56,0}}, +/* 19417 */ {(11<<2)|2,{116,56,0}}, +/* 19418 */ {(11<<2)|2,{116,56,0}}, +/* 19419 */ {(11<<2)|2,{116,56,0}}, +/* 19420 */ {(11<<2)|2,{116,56,0}}, +/* 19421 */ {(11<<2)|2,{116,56,0}}, +/* 19422 */ {(11<<2)|2,{116,56,0}}, +/* 19423 */ {(11<<2)|2,{116,56,0}}, +/* 19424 */ {(16<<2)|3,{116,57,48}}, +/* 19425 */ {(16<<2)|3,{116,57,49}}, +/* 19426 */ {(16<<2)|3,{116,57,50}}, +/* 19427 */ {(16<<2)|3,{116,57,97}}, +/* 19428 */ {(16<<2)|3,{116,57,99}}, +/* 19429 */ {(16<<2)|3,{116,57,101}}, +/* 19430 */ {(16<<2)|3,{116,57,105}}, +/* 19431 */ {(16<<2)|3,{116,57,111}}, +/* 19432 */ {(16<<2)|3,{116,57,115}}, +/* 19433 */ {(16<<2)|3,{116,57,116}}, +/* 19434 */ {(11<<2)|2,{116,57,0}}, +/* 19435 */ {(11<<2)|2,{116,57,0}}, +/* 19436 */ {(11<<2)|2,{116,57,0}}, +/* 19437 */ {(11<<2)|2,{116,57,0}}, +/* 19438 */ {(11<<2)|2,{116,57,0}}, +/* 19439 */ {(11<<2)|2,{116,57,0}}, +/* 19440 */ {(11<<2)|2,{116,57,0}}, +/* 19441 */ {(11<<2)|2,{116,57,0}}, +/* 19442 */ {(11<<2)|2,{116,57,0}}, +/* 19443 */ {(11<<2)|2,{116,57,0}}, +/* 19444 */ {(11<<2)|2,{116,57,0}}, +/* 19445 */ {(11<<2)|2,{116,57,0}}, +/* 19446 */ {(11<<2)|2,{116,57,0}}, +/* 19447 */ {(11<<2)|2,{116,57,0}}, +/* 19448 */ {(11<<2)|2,{116,57,0}}, +/* 19449 */ {(11<<2)|2,{116,57,0}}, +/* 19450 */ {(11<<2)|2,{116,57,0}}, +/* 19451 */ {(11<<2)|2,{116,57,0}}, +/* 19452 */ {(11<<2)|2,{116,57,0}}, +/* 19453 */ {(11<<2)|2,{116,57,0}}, +/* 19454 */ {(11<<2)|2,{116,57,0}}, +/* 19455 */ {(11<<2)|2,{116,57,0}}, +/* 19456 */ {(16<<2)|3,{116,61,48}}, +/* 19457 */ {(16<<2)|3,{116,61,49}}, +/* 19458 */ {(16<<2)|3,{116,61,50}}, +/* 19459 */ {(16<<2)|3,{116,61,97}}, +/* 19460 */ {(16<<2)|3,{116,61,99}}, +/* 19461 */ {(16<<2)|3,{116,61,101}}, +/* 19462 */ {(16<<2)|3,{116,61,105}}, +/* 19463 */ {(16<<2)|3,{116,61,111}}, +/* 19464 */ {(16<<2)|3,{116,61,115}}, +/* 19465 */ {(16<<2)|3,{116,61,116}}, +/* 19466 */ {(11<<2)|2,{116,61,0}}, +/* 19467 */ {(11<<2)|2,{116,61,0}}, +/* 19468 */ {(11<<2)|2,{116,61,0}}, +/* 19469 */ {(11<<2)|2,{116,61,0}}, +/* 19470 */ {(11<<2)|2,{116,61,0}}, +/* 19471 */ {(11<<2)|2,{116,61,0}}, +/* 19472 */ {(11<<2)|2,{116,61,0}}, +/* 19473 */ {(11<<2)|2,{116,61,0}}, +/* 19474 */ {(11<<2)|2,{116,61,0}}, +/* 19475 */ {(11<<2)|2,{116,61,0}}, +/* 19476 */ {(11<<2)|2,{116,61,0}}, +/* 19477 */ {(11<<2)|2,{116,61,0}}, +/* 19478 */ {(11<<2)|2,{116,61,0}}, +/* 19479 */ {(11<<2)|2,{116,61,0}}, +/* 19480 */ {(11<<2)|2,{116,61,0}}, +/* 19481 */ {(11<<2)|2,{116,61,0}}, +/* 19482 */ {(11<<2)|2,{116,61,0}}, +/* 19483 */ {(11<<2)|2,{116,61,0}}, +/* 19484 */ {(11<<2)|2,{116,61,0}}, +/* 19485 */ {(11<<2)|2,{116,61,0}}, +/* 19486 */ {(11<<2)|2,{116,61,0}}, +/* 19487 */ {(11<<2)|2,{116,61,0}}, +/* 19488 */ {(16<<2)|3,{116,65,48}}, +/* 19489 */ {(16<<2)|3,{116,65,49}}, +/* 19490 */ {(16<<2)|3,{116,65,50}}, +/* 19491 */ {(16<<2)|3,{116,65,97}}, +/* 19492 */ {(16<<2)|3,{116,65,99}}, +/* 19493 */ {(16<<2)|3,{116,65,101}}, +/* 19494 */ {(16<<2)|3,{116,65,105}}, +/* 19495 */ {(16<<2)|3,{116,65,111}}, +/* 19496 */ {(16<<2)|3,{116,65,115}}, +/* 19497 */ {(16<<2)|3,{116,65,116}}, +/* 19498 */ {(11<<2)|2,{116,65,0}}, +/* 19499 */ {(11<<2)|2,{116,65,0}}, +/* 19500 */ {(11<<2)|2,{116,65,0}}, +/* 19501 */ {(11<<2)|2,{116,65,0}}, +/* 19502 */ {(11<<2)|2,{116,65,0}}, +/* 19503 */ {(11<<2)|2,{116,65,0}}, +/* 19504 */ {(11<<2)|2,{116,65,0}}, +/* 19505 */ {(11<<2)|2,{116,65,0}}, +/* 19506 */ {(11<<2)|2,{116,65,0}}, +/* 19507 */ {(11<<2)|2,{116,65,0}}, +/* 19508 */ {(11<<2)|2,{116,65,0}}, +/* 19509 */ {(11<<2)|2,{116,65,0}}, +/* 19510 */ {(11<<2)|2,{116,65,0}}, +/* 19511 */ {(11<<2)|2,{116,65,0}}, +/* 19512 */ {(11<<2)|2,{116,65,0}}, +/* 19513 */ {(11<<2)|2,{116,65,0}}, +/* 19514 */ {(11<<2)|2,{116,65,0}}, +/* 19515 */ {(11<<2)|2,{116,65,0}}, +/* 19516 */ {(11<<2)|2,{116,65,0}}, +/* 19517 */ {(11<<2)|2,{116,65,0}}, +/* 19518 */ {(11<<2)|2,{116,65,0}}, +/* 19519 */ {(11<<2)|2,{116,65,0}}, +/* 19520 */ {(16<<2)|3,{116,95,48}}, +/* 19521 */ {(16<<2)|3,{116,95,49}}, +/* 19522 */ {(16<<2)|3,{116,95,50}}, +/* 19523 */ {(16<<2)|3,{116,95,97}}, +/* 19524 */ {(16<<2)|3,{116,95,99}}, +/* 19525 */ {(16<<2)|3,{116,95,101}}, +/* 19526 */ {(16<<2)|3,{116,95,105}}, +/* 19527 */ {(16<<2)|3,{116,95,111}}, +/* 19528 */ {(16<<2)|3,{116,95,115}}, +/* 19529 */ {(16<<2)|3,{116,95,116}}, +/* 19530 */ {(11<<2)|2,{116,95,0}}, +/* 19531 */ {(11<<2)|2,{116,95,0}}, +/* 19532 */ {(11<<2)|2,{116,95,0}}, +/* 19533 */ {(11<<2)|2,{116,95,0}}, +/* 19534 */ {(11<<2)|2,{116,95,0}}, +/* 19535 */ {(11<<2)|2,{116,95,0}}, +/* 19536 */ {(11<<2)|2,{116,95,0}}, +/* 19537 */ {(11<<2)|2,{116,95,0}}, +/* 19538 */ {(11<<2)|2,{116,95,0}}, +/* 19539 */ {(11<<2)|2,{116,95,0}}, +/* 19540 */ {(11<<2)|2,{116,95,0}}, +/* 19541 */ {(11<<2)|2,{116,95,0}}, +/* 19542 */ {(11<<2)|2,{116,95,0}}, +/* 19543 */ {(11<<2)|2,{116,95,0}}, +/* 19544 */ {(11<<2)|2,{116,95,0}}, +/* 19545 */ {(11<<2)|2,{116,95,0}}, +/* 19546 */ {(11<<2)|2,{116,95,0}}, +/* 19547 */ {(11<<2)|2,{116,95,0}}, +/* 19548 */ {(11<<2)|2,{116,95,0}}, +/* 19549 */ {(11<<2)|2,{116,95,0}}, +/* 19550 */ {(11<<2)|2,{116,95,0}}, +/* 19551 */ {(11<<2)|2,{116,95,0}}, +/* 19552 */ {(16<<2)|3,{116,98,48}}, +/* 19553 */ {(16<<2)|3,{116,98,49}}, +/* 19554 */ {(16<<2)|3,{116,98,50}}, +/* 19555 */ {(16<<2)|3,{116,98,97}}, +/* 19556 */ {(16<<2)|3,{116,98,99}}, +/* 19557 */ {(16<<2)|3,{116,98,101}}, +/* 19558 */ {(16<<2)|3,{116,98,105}}, +/* 19559 */ {(16<<2)|3,{116,98,111}}, +/* 19560 */ {(16<<2)|3,{116,98,115}}, +/* 19561 */ {(16<<2)|3,{116,98,116}}, +/* 19562 */ {(11<<2)|2,{116,98,0}}, +/* 19563 */ {(11<<2)|2,{116,98,0}}, +/* 19564 */ {(11<<2)|2,{116,98,0}}, +/* 19565 */ {(11<<2)|2,{116,98,0}}, +/* 19566 */ {(11<<2)|2,{116,98,0}}, +/* 19567 */ {(11<<2)|2,{116,98,0}}, +/* 19568 */ {(11<<2)|2,{116,98,0}}, +/* 19569 */ {(11<<2)|2,{116,98,0}}, +/* 19570 */ {(11<<2)|2,{116,98,0}}, +/* 19571 */ {(11<<2)|2,{116,98,0}}, +/* 19572 */ {(11<<2)|2,{116,98,0}}, +/* 19573 */ {(11<<2)|2,{116,98,0}}, +/* 19574 */ {(11<<2)|2,{116,98,0}}, +/* 19575 */ {(11<<2)|2,{116,98,0}}, +/* 19576 */ {(11<<2)|2,{116,98,0}}, +/* 19577 */ {(11<<2)|2,{116,98,0}}, +/* 19578 */ {(11<<2)|2,{116,98,0}}, +/* 19579 */ {(11<<2)|2,{116,98,0}}, +/* 19580 */ {(11<<2)|2,{116,98,0}}, +/* 19581 */ {(11<<2)|2,{116,98,0}}, +/* 19582 */ {(11<<2)|2,{116,98,0}}, +/* 19583 */ {(11<<2)|2,{116,98,0}}, +/* 19584 */ {(16<<2)|3,{116,100,48}}, +/* 19585 */ {(16<<2)|3,{116,100,49}}, +/* 19586 */ {(16<<2)|3,{116,100,50}}, +/* 19587 */ {(16<<2)|3,{116,100,97}}, +/* 19588 */ {(16<<2)|3,{116,100,99}}, +/* 19589 */ {(16<<2)|3,{116,100,101}}, +/* 19590 */ {(16<<2)|3,{116,100,105}}, +/* 19591 */ {(16<<2)|3,{116,100,111}}, +/* 19592 */ {(16<<2)|3,{116,100,115}}, +/* 19593 */ {(16<<2)|3,{116,100,116}}, +/* 19594 */ {(11<<2)|2,{116,100,0}}, +/* 19595 */ {(11<<2)|2,{116,100,0}}, +/* 19596 */ {(11<<2)|2,{116,100,0}}, +/* 19597 */ {(11<<2)|2,{116,100,0}}, +/* 19598 */ {(11<<2)|2,{116,100,0}}, +/* 19599 */ {(11<<2)|2,{116,100,0}}, +/* 19600 */ {(11<<2)|2,{116,100,0}}, +/* 19601 */ {(11<<2)|2,{116,100,0}}, +/* 19602 */ {(11<<2)|2,{116,100,0}}, +/* 19603 */ {(11<<2)|2,{116,100,0}}, +/* 19604 */ {(11<<2)|2,{116,100,0}}, +/* 19605 */ {(11<<2)|2,{116,100,0}}, +/* 19606 */ {(11<<2)|2,{116,100,0}}, +/* 19607 */ {(11<<2)|2,{116,100,0}}, +/* 19608 */ {(11<<2)|2,{116,100,0}}, +/* 19609 */ {(11<<2)|2,{116,100,0}}, +/* 19610 */ {(11<<2)|2,{116,100,0}}, +/* 19611 */ {(11<<2)|2,{116,100,0}}, +/* 19612 */ {(11<<2)|2,{116,100,0}}, +/* 19613 */ {(11<<2)|2,{116,100,0}}, +/* 19614 */ {(11<<2)|2,{116,100,0}}, +/* 19615 */ {(11<<2)|2,{116,100,0}}, +/* 19616 */ {(16<<2)|3,{116,102,48}}, +/* 19617 */ {(16<<2)|3,{116,102,49}}, +/* 19618 */ {(16<<2)|3,{116,102,50}}, +/* 19619 */ {(16<<2)|3,{116,102,97}}, +/* 19620 */ {(16<<2)|3,{116,102,99}}, +/* 19621 */ {(16<<2)|3,{116,102,101}}, +/* 19622 */ {(16<<2)|3,{116,102,105}}, +/* 19623 */ {(16<<2)|3,{116,102,111}}, +/* 19624 */ {(16<<2)|3,{116,102,115}}, +/* 19625 */ {(16<<2)|3,{116,102,116}}, +/* 19626 */ {(11<<2)|2,{116,102,0}}, +/* 19627 */ {(11<<2)|2,{116,102,0}}, +/* 19628 */ {(11<<2)|2,{116,102,0}}, +/* 19629 */ {(11<<2)|2,{116,102,0}}, +/* 19630 */ {(11<<2)|2,{116,102,0}}, +/* 19631 */ {(11<<2)|2,{116,102,0}}, +/* 19632 */ {(11<<2)|2,{116,102,0}}, +/* 19633 */ {(11<<2)|2,{116,102,0}}, +/* 19634 */ {(11<<2)|2,{116,102,0}}, +/* 19635 */ {(11<<2)|2,{116,102,0}}, +/* 19636 */ {(11<<2)|2,{116,102,0}}, +/* 19637 */ {(11<<2)|2,{116,102,0}}, +/* 19638 */ {(11<<2)|2,{116,102,0}}, +/* 19639 */ {(11<<2)|2,{116,102,0}}, +/* 19640 */ {(11<<2)|2,{116,102,0}}, +/* 19641 */ {(11<<2)|2,{116,102,0}}, +/* 19642 */ {(11<<2)|2,{116,102,0}}, +/* 19643 */ {(11<<2)|2,{116,102,0}}, +/* 19644 */ {(11<<2)|2,{116,102,0}}, +/* 19645 */ {(11<<2)|2,{116,102,0}}, +/* 19646 */ {(11<<2)|2,{116,102,0}}, +/* 19647 */ {(11<<2)|2,{116,102,0}}, +/* 19648 */ {(16<<2)|3,{116,103,48}}, +/* 19649 */ {(16<<2)|3,{116,103,49}}, +/* 19650 */ {(16<<2)|3,{116,103,50}}, +/* 19651 */ {(16<<2)|3,{116,103,97}}, +/* 19652 */ {(16<<2)|3,{116,103,99}}, +/* 19653 */ {(16<<2)|3,{116,103,101}}, +/* 19654 */ {(16<<2)|3,{116,103,105}}, +/* 19655 */ {(16<<2)|3,{116,103,111}}, +/* 19656 */ {(16<<2)|3,{116,103,115}}, +/* 19657 */ {(16<<2)|3,{116,103,116}}, +/* 19658 */ {(11<<2)|2,{116,103,0}}, +/* 19659 */ {(11<<2)|2,{116,103,0}}, +/* 19660 */ {(11<<2)|2,{116,103,0}}, +/* 19661 */ {(11<<2)|2,{116,103,0}}, +/* 19662 */ {(11<<2)|2,{116,103,0}}, +/* 19663 */ {(11<<2)|2,{116,103,0}}, +/* 19664 */ {(11<<2)|2,{116,103,0}}, +/* 19665 */ {(11<<2)|2,{116,103,0}}, +/* 19666 */ {(11<<2)|2,{116,103,0}}, +/* 19667 */ {(11<<2)|2,{116,103,0}}, +/* 19668 */ {(11<<2)|2,{116,103,0}}, +/* 19669 */ {(11<<2)|2,{116,103,0}}, +/* 19670 */ {(11<<2)|2,{116,103,0}}, +/* 19671 */ {(11<<2)|2,{116,103,0}}, +/* 19672 */ {(11<<2)|2,{116,103,0}}, +/* 19673 */ {(11<<2)|2,{116,103,0}}, +/* 19674 */ {(11<<2)|2,{116,103,0}}, +/* 19675 */ {(11<<2)|2,{116,103,0}}, +/* 19676 */ {(11<<2)|2,{116,103,0}}, +/* 19677 */ {(11<<2)|2,{116,103,0}}, +/* 19678 */ {(11<<2)|2,{116,103,0}}, +/* 19679 */ {(11<<2)|2,{116,103,0}}, +/* 19680 */ {(16<<2)|3,{116,104,48}}, +/* 19681 */ {(16<<2)|3,{116,104,49}}, +/* 19682 */ {(16<<2)|3,{116,104,50}}, +/* 19683 */ {(16<<2)|3,{116,104,97}}, +/* 19684 */ {(16<<2)|3,{116,104,99}}, +/* 19685 */ {(16<<2)|3,{116,104,101}}, +/* 19686 */ {(16<<2)|3,{116,104,105}}, +/* 19687 */ {(16<<2)|3,{116,104,111}}, +/* 19688 */ {(16<<2)|3,{116,104,115}}, +/* 19689 */ {(16<<2)|3,{116,104,116}}, +/* 19690 */ {(11<<2)|2,{116,104,0}}, +/* 19691 */ {(11<<2)|2,{116,104,0}}, +/* 19692 */ {(11<<2)|2,{116,104,0}}, +/* 19693 */ {(11<<2)|2,{116,104,0}}, +/* 19694 */ {(11<<2)|2,{116,104,0}}, +/* 19695 */ {(11<<2)|2,{116,104,0}}, +/* 19696 */ {(11<<2)|2,{116,104,0}}, +/* 19697 */ {(11<<2)|2,{116,104,0}}, +/* 19698 */ {(11<<2)|2,{116,104,0}}, +/* 19699 */ {(11<<2)|2,{116,104,0}}, +/* 19700 */ {(11<<2)|2,{116,104,0}}, +/* 19701 */ {(11<<2)|2,{116,104,0}}, +/* 19702 */ {(11<<2)|2,{116,104,0}}, +/* 19703 */ {(11<<2)|2,{116,104,0}}, +/* 19704 */ {(11<<2)|2,{116,104,0}}, +/* 19705 */ {(11<<2)|2,{116,104,0}}, +/* 19706 */ {(11<<2)|2,{116,104,0}}, +/* 19707 */ {(11<<2)|2,{116,104,0}}, +/* 19708 */ {(11<<2)|2,{116,104,0}}, +/* 19709 */ {(11<<2)|2,{116,104,0}}, +/* 19710 */ {(11<<2)|2,{116,104,0}}, +/* 19711 */ {(11<<2)|2,{116,104,0}}, +/* 19712 */ {(16<<2)|3,{116,108,48}}, +/* 19713 */ {(16<<2)|3,{116,108,49}}, +/* 19714 */ {(16<<2)|3,{116,108,50}}, +/* 19715 */ {(16<<2)|3,{116,108,97}}, +/* 19716 */ {(16<<2)|3,{116,108,99}}, +/* 19717 */ {(16<<2)|3,{116,108,101}}, +/* 19718 */ {(16<<2)|3,{116,108,105}}, +/* 19719 */ {(16<<2)|3,{116,108,111}}, +/* 19720 */ {(16<<2)|3,{116,108,115}}, +/* 19721 */ {(16<<2)|3,{116,108,116}}, +/* 19722 */ {(11<<2)|2,{116,108,0}}, +/* 19723 */ {(11<<2)|2,{116,108,0}}, +/* 19724 */ {(11<<2)|2,{116,108,0}}, +/* 19725 */ {(11<<2)|2,{116,108,0}}, +/* 19726 */ {(11<<2)|2,{116,108,0}}, +/* 19727 */ {(11<<2)|2,{116,108,0}}, +/* 19728 */ {(11<<2)|2,{116,108,0}}, +/* 19729 */ {(11<<2)|2,{116,108,0}}, +/* 19730 */ {(11<<2)|2,{116,108,0}}, +/* 19731 */ {(11<<2)|2,{116,108,0}}, +/* 19732 */ {(11<<2)|2,{116,108,0}}, +/* 19733 */ {(11<<2)|2,{116,108,0}}, +/* 19734 */ {(11<<2)|2,{116,108,0}}, +/* 19735 */ {(11<<2)|2,{116,108,0}}, +/* 19736 */ {(11<<2)|2,{116,108,0}}, +/* 19737 */ {(11<<2)|2,{116,108,0}}, +/* 19738 */ {(11<<2)|2,{116,108,0}}, +/* 19739 */ {(11<<2)|2,{116,108,0}}, +/* 19740 */ {(11<<2)|2,{116,108,0}}, +/* 19741 */ {(11<<2)|2,{116,108,0}}, +/* 19742 */ {(11<<2)|2,{116,108,0}}, +/* 19743 */ {(11<<2)|2,{116,108,0}}, +/* 19744 */ {(16<<2)|3,{116,109,48}}, +/* 19745 */ {(16<<2)|3,{116,109,49}}, +/* 19746 */ {(16<<2)|3,{116,109,50}}, +/* 19747 */ {(16<<2)|3,{116,109,97}}, +/* 19748 */ {(16<<2)|3,{116,109,99}}, +/* 19749 */ {(16<<2)|3,{116,109,101}}, +/* 19750 */ {(16<<2)|3,{116,109,105}}, +/* 19751 */ {(16<<2)|3,{116,109,111}}, +/* 19752 */ {(16<<2)|3,{116,109,115}}, +/* 19753 */ {(16<<2)|3,{116,109,116}}, +/* 19754 */ {(11<<2)|2,{116,109,0}}, +/* 19755 */ {(11<<2)|2,{116,109,0}}, +/* 19756 */ {(11<<2)|2,{116,109,0}}, +/* 19757 */ {(11<<2)|2,{116,109,0}}, +/* 19758 */ {(11<<2)|2,{116,109,0}}, +/* 19759 */ {(11<<2)|2,{116,109,0}}, +/* 19760 */ {(11<<2)|2,{116,109,0}}, +/* 19761 */ {(11<<2)|2,{116,109,0}}, +/* 19762 */ {(11<<2)|2,{116,109,0}}, +/* 19763 */ {(11<<2)|2,{116,109,0}}, +/* 19764 */ {(11<<2)|2,{116,109,0}}, +/* 19765 */ {(11<<2)|2,{116,109,0}}, +/* 19766 */ {(11<<2)|2,{116,109,0}}, +/* 19767 */ {(11<<2)|2,{116,109,0}}, +/* 19768 */ {(11<<2)|2,{116,109,0}}, +/* 19769 */ {(11<<2)|2,{116,109,0}}, +/* 19770 */ {(11<<2)|2,{116,109,0}}, +/* 19771 */ {(11<<2)|2,{116,109,0}}, +/* 19772 */ {(11<<2)|2,{116,109,0}}, +/* 19773 */ {(11<<2)|2,{116,109,0}}, +/* 19774 */ {(11<<2)|2,{116,109,0}}, +/* 19775 */ {(11<<2)|2,{116,109,0}}, +/* 19776 */ {(16<<2)|3,{116,110,48}}, +/* 19777 */ {(16<<2)|3,{116,110,49}}, +/* 19778 */ {(16<<2)|3,{116,110,50}}, +/* 19779 */ {(16<<2)|3,{116,110,97}}, +/* 19780 */ {(16<<2)|3,{116,110,99}}, +/* 19781 */ {(16<<2)|3,{116,110,101}}, +/* 19782 */ {(16<<2)|3,{116,110,105}}, +/* 19783 */ {(16<<2)|3,{116,110,111}}, +/* 19784 */ {(16<<2)|3,{116,110,115}}, +/* 19785 */ {(16<<2)|3,{116,110,116}}, +/* 19786 */ {(11<<2)|2,{116,110,0}}, +/* 19787 */ {(11<<2)|2,{116,110,0}}, +/* 19788 */ {(11<<2)|2,{116,110,0}}, +/* 19789 */ {(11<<2)|2,{116,110,0}}, +/* 19790 */ {(11<<2)|2,{116,110,0}}, +/* 19791 */ {(11<<2)|2,{116,110,0}}, +/* 19792 */ {(11<<2)|2,{116,110,0}}, +/* 19793 */ {(11<<2)|2,{116,110,0}}, +/* 19794 */ {(11<<2)|2,{116,110,0}}, +/* 19795 */ {(11<<2)|2,{116,110,0}}, +/* 19796 */ {(11<<2)|2,{116,110,0}}, +/* 19797 */ {(11<<2)|2,{116,110,0}}, +/* 19798 */ {(11<<2)|2,{116,110,0}}, +/* 19799 */ {(11<<2)|2,{116,110,0}}, +/* 19800 */ {(11<<2)|2,{116,110,0}}, +/* 19801 */ {(11<<2)|2,{116,110,0}}, +/* 19802 */ {(11<<2)|2,{116,110,0}}, +/* 19803 */ {(11<<2)|2,{116,110,0}}, +/* 19804 */ {(11<<2)|2,{116,110,0}}, +/* 19805 */ {(11<<2)|2,{116,110,0}}, +/* 19806 */ {(11<<2)|2,{116,110,0}}, +/* 19807 */ {(11<<2)|2,{116,110,0}}, +/* 19808 */ {(16<<2)|3,{116,112,48}}, +/* 19809 */ {(16<<2)|3,{116,112,49}}, +/* 19810 */ {(16<<2)|3,{116,112,50}}, +/* 19811 */ {(16<<2)|3,{116,112,97}}, +/* 19812 */ {(16<<2)|3,{116,112,99}}, +/* 19813 */ {(16<<2)|3,{116,112,101}}, +/* 19814 */ {(16<<2)|3,{116,112,105}}, +/* 19815 */ {(16<<2)|3,{116,112,111}}, +/* 19816 */ {(16<<2)|3,{116,112,115}}, +/* 19817 */ {(16<<2)|3,{116,112,116}}, +/* 19818 */ {(11<<2)|2,{116,112,0}}, +/* 19819 */ {(11<<2)|2,{116,112,0}}, +/* 19820 */ {(11<<2)|2,{116,112,0}}, +/* 19821 */ {(11<<2)|2,{116,112,0}}, +/* 19822 */ {(11<<2)|2,{116,112,0}}, +/* 19823 */ {(11<<2)|2,{116,112,0}}, +/* 19824 */ {(11<<2)|2,{116,112,0}}, +/* 19825 */ {(11<<2)|2,{116,112,0}}, +/* 19826 */ {(11<<2)|2,{116,112,0}}, +/* 19827 */ {(11<<2)|2,{116,112,0}}, +/* 19828 */ {(11<<2)|2,{116,112,0}}, +/* 19829 */ {(11<<2)|2,{116,112,0}}, +/* 19830 */ {(11<<2)|2,{116,112,0}}, +/* 19831 */ {(11<<2)|2,{116,112,0}}, +/* 19832 */ {(11<<2)|2,{116,112,0}}, +/* 19833 */ {(11<<2)|2,{116,112,0}}, +/* 19834 */ {(11<<2)|2,{116,112,0}}, +/* 19835 */ {(11<<2)|2,{116,112,0}}, +/* 19836 */ {(11<<2)|2,{116,112,0}}, +/* 19837 */ {(11<<2)|2,{116,112,0}}, +/* 19838 */ {(11<<2)|2,{116,112,0}}, +/* 19839 */ {(11<<2)|2,{116,112,0}}, +/* 19840 */ {(16<<2)|3,{116,114,48}}, +/* 19841 */ {(16<<2)|3,{116,114,49}}, +/* 19842 */ {(16<<2)|3,{116,114,50}}, +/* 19843 */ {(16<<2)|3,{116,114,97}}, +/* 19844 */ {(16<<2)|3,{116,114,99}}, +/* 19845 */ {(16<<2)|3,{116,114,101}}, +/* 19846 */ {(16<<2)|3,{116,114,105}}, +/* 19847 */ {(16<<2)|3,{116,114,111}}, +/* 19848 */ {(16<<2)|3,{116,114,115}}, +/* 19849 */ {(16<<2)|3,{116,114,116}}, +/* 19850 */ {(11<<2)|2,{116,114,0}}, +/* 19851 */ {(11<<2)|2,{116,114,0}}, +/* 19852 */ {(11<<2)|2,{116,114,0}}, +/* 19853 */ {(11<<2)|2,{116,114,0}}, +/* 19854 */ {(11<<2)|2,{116,114,0}}, +/* 19855 */ {(11<<2)|2,{116,114,0}}, +/* 19856 */ {(11<<2)|2,{116,114,0}}, +/* 19857 */ {(11<<2)|2,{116,114,0}}, +/* 19858 */ {(11<<2)|2,{116,114,0}}, +/* 19859 */ {(11<<2)|2,{116,114,0}}, +/* 19860 */ {(11<<2)|2,{116,114,0}}, +/* 19861 */ {(11<<2)|2,{116,114,0}}, +/* 19862 */ {(11<<2)|2,{116,114,0}}, +/* 19863 */ {(11<<2)|2,{116,114,0}}, +/* 19864 */ {(11<<2)|2,{116,114,0}}, +/* 19865 */ {(11<<2)|2,{116,114,0}}, +/* 19866 */ {(11<<2)|2,{116,114,0}}, +/* 19867 */ {(11<<2)|2,{116,114,0}}, +/* 19868 */ {(11<<2)|2,{116,114,0}}, +/* 19869 */ {(11<<2)|2,{116,114,0}}, +/* 19870 */ {(11<<2)|2,{116,114,0}}, +/* 19871 */ {(11<<2)|2,{116,114,0}}, +/* 19872 */ {(16<<2)|3,{116,117,48}}, +/* 19873 */ {(16<<2)|3,{116,117,49}}, +/* 19874 */ {(16<<2)|3,{116,117,50}}, +/* 19875 */ {(16<<2)|3,{116,117,97}}, +/* 19876 */ {(16<<2)|3,{116,117,99}}, +/* 19877 */ {(16<<2)|3,{116,117,101}}, +/* 19878 */ {(16<<2)|3,{116,117,105}}, +/* 19879 */ {(16<<2)|3,{116,117,111}}, +/* 19880 */ {(16<<2)|3,{116,117,115}}, +/* 19881 */ {(16<<2)|3,{116,117,116}}, +/* 19882 */ {(11<<2)|2,{116,117,0}}, +/* 19883 */ {(11<<2)|2,{116,117,0}}, +/* 19884 */ {(11<<2)|2,{116,117,0}}, +/* 19885 */ {(11<<2)|2,{116,117,0}}, +/* 19886 */ {(11<<2)|2,{116,117,0}}, +/* 19887 */ {(11<<2)|2,{116,117,0}}, +/* 19888 */ {(11<<2)|2,{116,117,0}}, +/* 19889 */ {(11<<2)|2,{116,117,0}}, +/* 19890 */ {(11<<2)|2,{116,117,0}}, +/* 19891 */ {(11<<2)|2,{116,117,0}}, +/* 19892 */ {(11<<2)|2,{116,117,0}}, +/* 19893 */ {(11<<2)|2,{116,117,0}}, +/* 19894 */ {(11<<2)|2,{116,117,0}}, +/* 19895 */ {(11<<2)|2,{116,117,0}}, +/* 19896 */ {(11<<2)|2,{116,117,0}}, +/* 19897 */ {(11<<2)|2,{116,117,0}}, +/* 19898 */ {(11<<2)|2,{116,117,0}}, +/* 19899 */ {(11<<2)|2,{116,117,0}}, +/* 19900 */ {(11<<2)|2,{116,117,0}}, +/* 19901 */ {(11<<2)|2,{116,117,0}}, +/* 19902 */ {(11<<2)|2,{116,117,0}}, +/* 19903 */ {(11<<2)|2,{116,117,0}}, +/* 19904 */ {(12<<2)|2,{116,58,0}}, +/* 19905 */ {(12<<2)|2,{116,58,0}}, +/* 19906 */ {(12<<2)|2,{116,58,0}}, +/* 19907 */ {(12<<2)|2,{116,58,0}}, +/* 19908 */ {(12<<2)|2,{116,58,0}}, +/* 19909 */ {(12<<2)|2,{116,58,0}}, +/* 19910 */ {(12<<2)|2,{116,58,0}}, +/* 19911 */ {(12<<2)|2,{116,58,0}}, +/* 19912 */ {(12<<2)|2,{116,58,0}}, +/* 19913 */ {(12<<2)|2,{116,58,0}}, +/* 19914 */ {(12<<2)|2,{116,58,0}}, +/* 19915 */ {(12<<2)|2,{116,58,0}}, +/* 19916 */ {(12<<2)|2,{116,58,0}}, +/* 19917 */ {(12<<2)|2,{116,58,0}}, +/* 19918 */ {(12<<2)|2,{116,58,0}}, +/* 19919 */ {(12<<2)|2,{116,58,0}}, +/* 19920 */ {(12<<2)|2,{116,66,0}}, +/* 19921 */ {(12<<2)|2,{116,66,0}}, +/* 19922 */ {(12<<2)|2,{116,66,0}}, +/* 19923 */ {(12<<2)|2,{116,66,0}}, +/* 19924 */ {(12<<2)|2,{116,66,0}}, +/* 19925 */ {(12<<2)|2,{116,66,0}}, +/* 19926 */ {(12<<2)|2,{116,66,0}}, +/* 19927 */ {(12<<2)|2,{116,66,0}}, +/* 19928 */ {(12<<2)|2,{116,66,0}}, +/* 19929 */ {(12<<2)|2,{116,66,0}}, +/* 19930 */ {(12<<2)|2,{116,66,0}}, +/* 19931 */ {(12<<2)|2,{116,66,0}}, +/* 19932 */ {(12<<2)|2,{116,66,0}}, +/* 19933 */ {(12<<2)|2,{116,66,0}}, +/* 19934 */ {(12<<2)|2,{116,66,0}}, +/* 19935 */ {(12<<2)|2,{116,66,0}}, +/* 19936 */ {(12<<2)|2,{116,67,0}}, +/* 19937 */ {(12<<2)|2,{116,67,0}}, +/* 19938 */ {(12<<2)|2,{116,67,0}}, +/* 19939 */ {(12<<2)|2,{116,67,0}}, +/* 19940 */ {(12<<2)|2,{116,67,0}}, +/* 19941 */ {(12<<2)|2,{116,67,0}}, +/* 19942 */ {(12<<2)|2,{116,67,0}}, +/* 19943 */ {(12<<2)|2,{116,67,0}}, +/* 19944 */ {(12<<2)|2,{116,67,0}}, +/* 19945 */ {(12<<2)|2,{116,67,0}}, +/* 19946 */ {(12<<2)|2,{116,67,0}}, +/* 19947 */ {(12<<2)|2,{116,67,0}}, +/* 19948 */ {(12<<2)|2,{116,67,0}}, +/* 19949 */ {(12<<2)|2,{116,67,0}}, +/* 19950 */ {(12<<2)|2,{116,67,0}}, +/* 19951 */ {(12<<2)|2,{116,67,0}}, +/* 19952 */ {(12<<2)|2,{116,68,0}}, +/* 19953 */ {(12<<2)|2,{116,68,0}}, +/* 19954 */ {(12<<2)|2,{116,68,0}}, +/* 19955 */ {(12<<2)|2,{116,68,0}}, +/* 19956 */ {(12<<2)|2,{116,68,0}}, +/* 19957 */ {(12<<2)|2,{116,68,0}}, +/* 19958 */ {(12<<2)|2,{116,68,0}}, +/* 19959 */ {(12<<2)|2,{116,68,0}}, +/* 19960 */ {(12<<2)|2,{116,68,0}}, +/* 19961 */ {(12<<2)|2,{116,68,0}}, +/* 19962 */ {(12<<2)|2,{116,68,0}}, +/* 19963 */ {(12<<2)|2,{116,68,0}}, +/* 19964 */ {(12<<2)|2,{116,68,0}}, +/* 19965 */ {(12<<2)|2,{116,68,0}}, +/* 19966 */ {(12<<2)|2,{116,68,0}}, +/* 19967 */ {(12<<2)|2,{116,68,0}}, +/* 19968 */ {(12<<2)|2,{116,69,0}}, +/* 19969 */ {(12<<2)|2,{116,69,0}}, +/* 19970 */ {(12<<2)|2,{116,69,0}}, +/* 19971 */ {(12<<2)|2,{116,69,0}}, +/* 19972 */ {(12<<2)|2,{116,69,0}}, +/* 19973 */ {(12<<2)|2,{116,69,0}}, +/* 19974 */ {(12<<2)|2,{116,69,0}}, +/* 19975 */ {(12<<2)|2,{116,69,0}}, +/* 19976 */ {(12<<2)|2,{116,69,0}}, +/* 19977 */ {(12<<2)|2,{116,69,0}}, +/* 19978 */ {(12<<2)|2,{116,69,0}}, +/* 19979 */ {(12<<2)|2,{116,69,0}}, +/* 19980 */ {(12<<2)|2,{116,69,0}}, +/* 19981 */ {(12<<2)|2,{116,69,0}}, +/* 19982 */ {(12<<2)|2,{116,69,0}}, +/* 19983 */ {(12<<2)|2,{116,69,0}}, +/* 19984 */ {(12<<2)|2,{116,70,0}}, +/* 19985 */ {(12<<2)|2,{116,70,0}}, +/* 19986 */ {(12<<2)|2,{116,70,0}}, +/* 19987 */ {(12<<2)|2,{116,70,0}}, +/* 19988 */ {(12<<2)|2,{116,70,0}}, +/* 19989 */ {(12<<2)|2,{116,70,0}}, +/* 19990 */ {(12<<2)|2,{116,70,0}}, +/* 19991 */ {(12<<2)|2,{116,70,0}}, +/* 19992 */ {(12<<2)|2,{116,70,0}}, +/* 19993 */ {(12<<2)|2,{116,70,0}}, +/* 19994 */ {(12<<2)|2,{116,70,0}}, +/* 19995 */ {(12<<2)|2,{116,70,0}}, +/* 19996 */ {(12<<2)|2,{116,70,0}}, +/* 19997 */ {(12<<2)|2,{116,70,0}}, +/* 19998 */ {(12<<2)|2,{116,70,0}}, +/* 19999 */ {(12<<2)|2,{116,70,0}}, +/* 20000 */ {(12<<2)|2,{116,71,0}}, +/* 20001 */ {(12<<2)|2,{116,71,0}}, +/* 20002 */ {(12<<2)|2,{116,71,0}}, +/* 20003 */ {(12<<2)|2,{116,71,0}}, +/* 20004 */ {(12<<2)|2,{116,71,0}}, +/* 20005 */ {(12<<2)|2,{116,71,0}}, +/* 20006 */ {(12<<2)|2,{116,71,0}}, +/* 20007 */ {(12<<2)|2,{116,71,0}}, +/* 20008 */ {(12<<2)|2,{116,71,0}}, +/* 20009 */ {(12<<2)|2,{116,71,0}}, +/* 20010 */ {(12<<2)|2,{116,71,0}}, +/* 20011 */ {(12<<2)|2,{116,71,0}}, +/* 20012 */ {(12<<2)|2,{116,71,0}}, +/* 20013 */ {(12<<2)|2,{116,71,0}}, +/* 20014 */ {(12<<2)|2,{116,71,0}}, +/* 20015 */ {(12<<2)|2,{116,71,0}}, +/* 20016 */ {(12<<2)|2,{116,72,0}}, +/* 20017 */ {(12<<2)|2,{116,72,0}}, +/* 20018 */ {(12<<2)|2,{116,72,0}}, +/* 20019 */ {(12<<2)|2,{116,72,0}}, +/* 20020 */ {(12<<2)|2,{116,72,0}}, +/* 20021 */ {(12<<2)|2,{116,72,0}}, +/* 20022 */ {(12<<2)|2,{116,72,0}}, +/* 20023 */ {(12<<2)|2,{116,72,0}}, +/* 20024 */ {(12<<2)|2,{116,72,0}}, +/* 20025 */ {(12<<2)|2,{116,72,0}}, +/* 20026 */ {(12<<2)|2,{116,72,0}}, +/* 20027 */ {(12<<2)|2,{116,72,0}}, +/* 20028 */ {(12<<2)|2,{116,72,0}}, +/* 20029 */ {(12<<2)|2,{116,72,0}}, +/* 20030 */ {(12<<2)|2,{116,72,0}}, +/* 20031 */ {(12<<2)|2,{116,72,0}}, +/* 20032 */ {(12<<2)|2,{116,73,0}}, +/* 20033 */ {(12<<2)|2,{116,73,0}}, +/* 20034 */ {(12<<2)|2,{116,73,0}}, +/* 20035 */ {(12<<2)|2,{116,73,0}}, +/* 20036 */ {(12<<2)|2,{116,73,0}}, +/* 20037 */ {(12<<2)|2,{116,73,0}}, +/* 20038 */ {(12<<2)|2,{116,73,0}}, +/* 20039 */ {(12<<2)|2,{116,73,0}}, +/* 20040 */ {(12<<2)|2,{116,73,0}}, +/* 20041 */ {(12<<2)|2,{116,73,0}}, +/* 20042 */ {(12<<2)|2,{116,73,0}}, +/* 20043 */ {(12<<2)|2,{116,73,0}}, +/* 20044 */ {(12<<2)|2,{116,73,0}}, +/* 20045 */ {(12<<2)|2,{116,73,0}}, +/* 20046 */ {(12<<2)|2,{116,73,0}}, +/* 20047 */ {(12<<2)|2,{116,73,0}}, +/* 20048 */ {(12<<2)|2,{116,74,0}}, +/* 20049 */ {(12<<2)|2,{116,74,0}}, +/* 20050 */ {(12<<2)|2,{116,74,0}}, +/* 20051 */ {(12<<2)|2,{116,74,0}}, +/* 20052 */ {(12<<2)|2,{116,74,0}}, +/* 20053 */ {(12<<2)|2,{116,74,0}}, +/* 20054 */ {(12<<2)|2,{116,74,0}}, +/* 20055 */ {(12<<2)|2,{116,74,0}}, +/* 20056 */ {(12<<2)|2,{116,74,0}}, +/* 20057 */ {(12<<2)|2,{116,74,0}}, +/* 20058 */ {(12<<2)|2,{116,74,0}}, +/* 20059 */ {(12<<2)|2,{116,74,0}}, +/* 20060 */ {(12<<2)|2,{116,74,0}}, +/* 20061 */ {(12<<2)|2,{116,74,0}}, +/* 20062 */ {(12<<2)|2,{116,74,0}}, +/* 20063 */ {(12<<2)|2,{116,74,0}}, +/* 20064 */ {(12<<2)|2,{116,75,0}}, +/* 20065 */ {(12<<2)|2,{116,75,0}}, +/* 20066 */ {(12<<2)|2,{116,75,0}}, +/* 20067 */ {(12<<2)|2,{116,75,0}}, +/* 20068 */ {(12<<2)|2,{116,75,0}}, +/* 20069 */ {(12<<2)|2,{116,75,0}}, +/* 20070 */ {(12<<2)|2,{116,75,0}}, +/* 20071 */ {(12<<2)|2,{116,75,0}}, +/* 20072 */ {(12<<2)|2,{116,75,0}}, +/* 20073 */ {(12<<2)|2,{116,75,0}}, +/* 20074 */ {(12<<2)|2,{116,75,0}}, +/* 20075 */ {(12<<2)|2,{116,75,0}}, +/* 20076 */ {(12<<2)|2,{116,75,0}}, +/* 20077 */ {(12<<2)|2,{116,75,0}}, +/* 20078 */ {(12<<2)|2,{116,75,0}}, +/* 20079 */ {(12<<2)|2,{116,75,0}}, +/* 20080 */ {(12<<2)|2,{116,76,0}}, +/* 20081 */ {(12<<2)|2,{116,76,0}}, +/* 20082 */ {(12<<2)|2,{116,76,0}}, +/* 20083 */ {(12<<2)|2,{116,76,0}}, +/* 20084 */ {(12<<2)|2,{116,76,0}}, +/* 20085 */ {(12<<2)|2,{116,76,0}}, +/* 20086 */ {(12<<2)|2,{116,76,0}}, +/* 20087 */ {(12<<2)|2,{116,76,0}}, +/* 20088 */ {(12<<2)|2,{116,76,0}}, +/* 20089 */ {(12<<2)|2,{116,76,0}}, +/* 20090 */ {(12<<2)|2,{116,76,0}}, +/* 20091 */ {(12<<2)|2,{116,76,0}}, +/* 20092 */ {(12<<2)|2,{116,76,0}}, +/* 20093 */ {(12<<2)|2,{116,76,0}}, +/* 20094 */ {(12<<2)|2,{116,76,0}}, +/* 20095 */ {(12<<2)|2,{116,76,0}}, +/* 20096 */ {(12<<2)|2,{116,77,0}}, +/* 20097 */ {(12<<2)|2,{116,77,0}}, +/* 20098 */ {(12<<2)|2,{116,77,0}}, +/* 20099 */ {(12<<2)|2,{116,77,0}}, +/* 20100 */ {(12<<2)|2,{116,77,0}}, +/* 20101 */ {(12<<2)|2,{116,77,0}}, +/* 20102 */ {(12<<2)|2,{116,77,0}}, +/* 20103 */ {(12<<2)|2,{116,77,0}}, +/* 20104 */ {(12<<2)|2,{116,77,0}}, +/* 20105 */ {(12<<2)|2,{116,77,0}}, +/* 20106 */ {(12<<2)|2,{116,77,0}}, +/* 20107 */ {(12<<2)|2,{116,77,0}}, +/* 20108 */ {(12<<2)|2,{116,77,0}}, +/* 20109 */ {(12<<2)|2,{116,77,0}}, +/* 20110 */ {(12<<2)|2,{116,77,0}}, +/* 20111 */ {(12<<2)|2,{116,77,0}}, +/* 20112 */ {(12<<2)|2,{116,78,0}}, +/* 20113 */ {(12<<2)|2,{116,78,0}}, +/* 20114 */ {(12<<2)|2,{116,78,0}}, +/* 20115 */ {(12<<2)|2,{116,78,0}}, +/* 20116 */ {(12<<2)|2,{116,78,0}}, +/* 20117 */ {(12<<2)|2,{116,78,0}}, +/* 20118 */ {(12<<2)|2,{116,78,0}}, +/* 20119 */ {(12<<2)|2,{116,78,0}}, +/* 20120 */ {(12<<2)|2,{116,78,0}}, +/* 20121 */ {(12<<2)|2,{116,78,0}}, +/* 20122 */ {(12<<2)|2,{116,78,0}}, +/* 20123 */ {(12<<2)|2,{116,78,0}}, +/* 20124 */ {(12<<2)|2,{116,78,0}}, +/* 20125 */ {(12<<2)|2,{116,78,0}}, +/* 20126 */ {(12<<2)|2,{116,78,0}}, +/* 20127 */ {(12<<2)|2,{116,78,0}}, +/* 20128 */ {(12<<2)|2,{116,79,0}}, +/* 20129 */ {(12<<2)|2,{116,79,0}}, +/* 20130 */ {(12<<2)|2,{116,79,0}}, +/* 20131 */ {(12<<2)|2,{116,79,0}}, +/* 20132 */ {(12<<2)|2,{116,79,0}}, +/* 20133 */ {(12<<2)|2,{116,79,0}}, +/* 20134 */ {(12<<2)|2,{116,79,0}}, +/* 20135 */ {(12<<2)|2,{116,79,0}}, +/* 20136 */ {(12<<2)|2,{116,79,0}}, +/* 20137 */ {(12<<2)|2,{116,79,0}}, +/* 20138 */ {(12<<2)|2,{116,79,0}}, +/* 20139 */ {(12<<2)|2,{116,79,0}}, +/* 20140 */ {(12<<2)|2,{116,79,0}}, +/* 20141 */ {(12<<2)|2,{116,79,0}}, +/* 20142 */ {(12<<2)|2,{116,79,0}}, +/* 20143 */ {(12<<2)|2,{116,79,0}}, +/* 20144 */ {(12<<2)|2,{116,80,0}}, +/* 20145 */ {(12<<2)|2,{116,80,0}}, +/* 20146 */ {(12<<2)|2,{116,80,0}}, +/* 20147 */ {(12<<2)|2,{116,80,0}}, +/* 20148 */ {(12<<2)|2,{116,80,0}}, +/* 20149 */ {(12<<2)|2,{116,80,0}}, +/* 20150 */ {(12<<2)|2,{116,80,0}}, +/* 20151 */ {(12<<2)|2,{116,80,0}}, +/* 20152 */ {(12<<2)|2,{116,80,0}}, +/* 20153 */ {(12<<2)|2,{116,80,0}}, +/* 20154 */ {(12<<2)|2,{116,80,0}}, +/* 20155 */ {(12<<2)|2,{116,80,0}}, +/* 20156 */ {(12<<2)|2,{116,80,0}}, +/* 20157 */ {(12<<2)|2,{116,80,0}}, +/* 20158 */ {(12<<2)|2,{116,80,0}}, +/* 20159 */ {(12<<2)|2,{116,80,0}}, +/* 20160 */ {(12<<2)|2,{116,81,0}}, +/* 20161 */ {(12<<2)|2,{116,81,0}}, +/* 20162 */ {(12<<2)|2,{116,81,0}}, +/* 20163 */ {(12<<2)|2,{116,81,0}}, +/* 20164 */ {(12<<2)|2,{116,81,0}}, +/* 20165 */ {(12<<2)|2,{116,81,0}}, +/* 20166 */ {(12<<2)|2,{116,81,0}}, +/* 20167 */ {(12<<2)|2,{116,81,0}}, +/* 20168 */ {(12<<2)|2,{116,81,0}}, +/* 20169 */ {(12<<2)|2,{116,81,0}}, +/* 20170 */ {(12<<2)|2,{116,81,0}}, +/* 20171 */ {(12<<2)|2,{116,81,0}}, +/* 20172 */ {(12<<2)|2,{116,81,0}}, +/* 20173 */ {(12<<2)|2,{116,81,0}}, +/* 20174 */ {(12<<2)|2,{116,81,0}}, +/* 20175 */ {(12<<2)|2,{116,81,0}}, +/* 20176 */ {(12<<2)|2,{116,82,0}}, +/* 20177 */ {(12<<2)|2,{116,82,0}}, +/* 20178 */ {(12<<2)|2,{116,82,0}}, +/* 20179 */ {(12<<2)|2,{116,82,0}}, +/* 20180 */ {(12<<2)|2,{116,82,0}}, +/* 20181 */ {(12<<2)|2,{116,82,0}}, +/* 20182 */ {(12<<2)|2,{116,82,0}}, +/* 20183 */ {(12<<2)|2,{116,82,0}}, +/* 20184 */ {(12<<2)|2,{116,82,0}}, +/* 20185 */ {(12<<2)|2,{116,82,0}}, +/* 20186 */ {(12<<2)|2,{116,82,0}}, +/* 20187 */ {(12<<2)|2,{116,82,0}}, +/* 20188 */ {(12<<2)|2,{116,82,0}}, +/* 20189 */ {(12<<2)|2,{116,82,0}}, +/* 20190 */ {(12<<2)|2,{116,82,0}}, +/* 20191 */ {(12<<2)|2,{116,82,0}}, +/* 20192 */ {(12<<2)|2,{116,83,0}}, +/* 20193 */ {(12<<2)|2,{116,83,0}}, +/* 20194 */ {(12<<2)|2,{116,83,0}}, +/* 20195 */ {(12<<2)|2,{116,83,0}}, +/* 20196 */ {(12<<2)|2,{116,83,0}}, +/* 20197 */ {(12<<2)|2,{116,83,0}}, +/* 20198 */ {(12<<2)|2,{116,83,0}}, +/* 20199 */ {(12<<2)|2,{116,83,0}}, +/* 20200 */ {(12<<2)|2,{116,83,0}}, +/* 20201 */ {(12<<2)|2,{116,83,0}}, +/* 20202 */ {(12<<2)|2,{116,83,0}}, +/* 20203 */ {(12<<2)|2,{116,83,0}}, +/* 20204 */ {(12<<2)|2,{116,83,0}}, +/* 20205 */ {(12<<2)|2,{116,83,0}}, +/* 20206 */ {(12<<2)|2,{116,83,0}}, +/* 20207 */ {(12<<2)|2,{116,83,0}}, +/* 20208 */ {(12<<2)|2,{116,84,0}}, +/* 20209 */ {(12<<2)|2,{116,84,0}}, +/* 20210 */ {(12<<2)|2,{116,84,0}}, +/* 20211 */ {(12<<2)|2,{116,84,0}}, +/* 20212 */ {(12<<2)|2,{116,84,0}}, +/* 20213 */ {(12<<2)|2,{116,84,0}}, +/* 20214 */ {(12<<2)|2,{116,84,0}}, +/* 20215 */ {(12<<2)|2,{116,84,0}}, +/* 20216 */ {(12<<2)|2,{116,84,0}}, +/* 20217 */ {(12<<2)|2,{116,84,0}}, +/* 20218 */ {(12<<2)|2,{116,84,0}}, +/* 20219 */ {(12<<2)|2,{116,84,0}}, +/* 20220 */ {(12<<2)|2,{116,84,0}}, +/* 20221 */ {(12<<2)|2,{116,84,0}}, +/* 20222 */ {(12<<2)|2,{116,84,0}}, +/* 20223 */ {(12<<2)|2,{116,84,0}}, +/* 20224 */ {(12<<2)|2,{116,85,0}}, +/* 20225 */ {(12<<2)|2,{116,85,0}}, +/* 20226 */ {(12<<2)|2,{116,85,0}}, +/* 20227 */ {(12<<2)|2,{116,85,0}}, +/* 20228 */ {(12<<2)|2,{116,85,0}}, +/* 20229 */ {(12<<2)|2,{116,85,0}}, +/* 20230 */ {(12<<2)|2,{116,85,0}}, +/* 20231 */ {(12<<2)|2,{116,85,0}}, +/* 20232 */ {(12<<2)|2,{116,85,0}}, +/* 20233 */ {(12<<2)|2,{116,85,0}}, +/* 20234 */ {(12<<2)|2,{116,85,0}}, +/* 20235 */ {(12<<2)|2,{116,85,0}}, +/* 20236 */ {(12<<2)|2,{116,85,0}}, +/* 20237 */ {(12<<2)|2,{116,85,0}}, +/* 20238 */ {(12<<2)|2,{116,85,0}}, +/* 20239 */ {(12<<2)|2,{116,85,0}}, +/* 20240 */ {(12<<2)|2,{116,86,0}}, +/* 20241 */ {(12<<2)|2,{116,86,0}}, +/* 20242 */ {(12<<2)|2,{116,86,0}}, +/* 20243 */ {(12<<2)|2,{116,86,0}}, +/* 20244 */ {(12<<2)|2,{116,86,0}}, +/* 20245 */ {(12<<2)|2,{116,86,0}}, +/* 20246 */ {(12<<2)|2,{116,86,0}}, +/* 20247 */ {(12<<2)|2,{116,86,0}}, +/* 20248 */ {(12<<2)|2,{116,86,0}}, +/* 20249 */ {(12<<2)|2,{116,86,0}}, +/* 20250 */ {(12<<2)|2,{116,86,0}}, +/* 20251 */ {(12<<2)|2,{116,86,0}}, +/* 20252 */ {(12<<2)|2,{116,86,0}}, +/* 20253 */ {(12<<2)|2,{116,86,0}}, +/* 20254 */ {(12<<2)|2,{116,86,0}}, +/* 20255 */ {(12<<2)|2,{116,86,0}}, +/* 20256 */ {(12<<2)|2,{116,87,0}}, +/* 20257 */ {(12<<2)|2,{116,87,0}}, +/* 20258 */ {(12<<2)|2,{116,87,0}}, +/* 20259 */ {(12<<2)|2,{116,87,0}}, +/* 20260 */ {(12<<2)|2,{116,87,0}}, +/* 20261 */ {(12<<2)|2,{116,87,0}}, +/* 20262 */ {(12<<2)|2,{116,87,0}}, +/* 20263 */ {(12<<2)|2,{116,87,0}}, +/* 20264 */ {(12<<2)|2,{116,87,0}}, +/* 20265 */ {(12<<2)|2,{116,87,0}}, +/* 20266 */ {(12<<2)|2,{116,87,0}}, +/* 20267 */ {(12<<2)|2,{116,87,0}}, +/* 20268 */ {(12<<2)|2,{116,87,0}}, +/* 20269 */ {(12<<2)|2,{116,87,0}}, +/* 20270 */ {(12<<2)|2,{116,87,0}}, +/* 20271 */ {(12<<2)|2,{116,87,0}}, +/* 20272 */ {(12<<2)|2,{116,89,0}}, +/* 20273 */ {(12<<2)|2,{116,89,0}}, +/* 20274 */ {(12<<2)|2,{116,89,0}}, +/* 20275 */ {(12<<2)|2,{116,89,0}}, +/* 20276 */ {(12<<2)|2,{116,89,0}}, +/* 20277 */ {(12<<2)|2,{116,89,0}}, +/* 20278 */ {(12<<2)|2,{116,89,0}}, +/* 20279 */ {(12<<2)|2,{116,89,0}}, +/* 20280 */ {(12<<2)|2,{116,89,0}}, +/* 20281 */ {(12<<2)|2,{116,89,0}}, +/* 20282 */ {(12<<2)|2,{116,89,0}}, +/* 20283 */ {(12<<2)|2,{116,89,0}}, +/* 20284 */ {(12<<2)|2,{116,89,0}}, +/* 20285 */ {(12<<2)|2,{116,89,0}}, +/* 20286 */ {(12<<2)|2,{116,89,0}}, +/* 20287 */ {(12<<2)|2,{116,89,0}}, +/* 20288 */ {(12<<2)|2,{116,106,0}}, +/* 20289 */ {(12<<2)|2,{116,106,0}}, +/* 20290 */ {(12<<2)|2,{116,106,0}}, +/* 20291 */ {(12<<2)|2,{116,106,0}}, +/* 20292 */ {(12<<2)|2,{116,106,0}}, +/* 20293 */ {(12<<2)|2,{116,106,0}}, +/* 20294 */ {(12<<2)|2,{116,106,0}}, +/* 20295 */ {(12<<2)|2,{116,106,0}}, +/* 20296 */ {(12<<2)|2,{116,106,0}}, +/* 20297 */ {(12<<2)|2,{116,106,0}}, +/* 20298 */ {(12<<2)|2,{116,106,0}}, +/* 20299 */ {(12<<2)|2,{116,106,0}}, +/* 20300 */ {(12<<2)|2,{116,106,0}}, +/* 20301 */ {(12<<2)|2,{116,106,0}}, +/* 20302 */ {(12<<2)|2,{116,106,0}}, +/* 20303 */ {(12<<2)|2,{116,106,0}}, +/* 20304 */ {(12<<2)|2,{116,107,0}}, +/* 20305 */ {(12<<2)|2,{116,107,0}}, +/* 20306 */ {(12<<2)|2,{116,107,0}}, +/* 20307 */ {(12<<2)|2,{116,107,0}}, +/* 20308 */ {(12<<2)|2,{116,107,0}}, +/* 20309 */ {(12<<2)|2,{116,107,0}}, +/* 20310 */ {(12<<2)|2,{116,107,0}}, +/* 20311 */ {(12<<2)|2,{116,107,0}}, +/* 20312 */ {(12<<2)|2,{116,107,0}}, +/* 20313 */ {(12<<2)|2,{116,107,0}}, +/* 20314 */ {(12<<2)|2,{116,107,0}}, +/* 20315 */ {(12<<2)|2,{116,107,0}}, +/* 20316 */ {(12<<2)|2,{116,107,0}}, +/* 20317 */ {(12<<2)|2,{116,107,0}}, +/* 20318 */ {(12<<2)|2,{116,107,0}}, +/* 20319 */ {(12<<2)|2,{116,107,0}}, +/* 20320 */ {(12<<2)|2,{116,113,0}}, +/* 20321 */ {(12<<2)|2,{116,113,0}}, +/* 20322 */ {(12<<2)|2,{116,113,0}}, +/* 20323 */ {(12<<2)|2,{116,113,0}}, +/* 20324 */ {(12<<2)|2,{116,113,0}}, +/* 20325 */ {(12<<2)|2,{116,113,0}}, +/* 20326 */ {(12<<2)|2,{116,113,0}}, +/* 20327 */ {(12<<2)|2,{116,113,0}}, +/* 20328 */ {(12<<2)|2,{116,113,0}}, +/* 20329 */ {(12<<2)|2,{116,113,0}}, +/* 20330 */ {(12<<2)|2,{116,113,0}}, +/* 20331 */ {(12<<2)|2,{116,113,0}}, +/* 20332 */ {(12<<2)|2,{116,113,0}}, +/* 20333 */ {(12<<2)|2,{116,113,0}}, +/* 20334 */ {(12<<2)|2,{116,113,0}}, +/* 20335 */ {(12<<2)|2,{116,113,0}}, +/* 20336 */ {(12<<2)|2,{116,118,0}}, +/* 20337 */ {(12<<2)|2,{116,118,0}}, +/* 20338 */ {(12<<2)|2,{116,118,0}}, +/* 20339 */ {(12<<2)|2,{116,118,0}}, +/* 20340 */ {(12<<2)|2,{116,118,0}}, +/* 20341 */ {(12<<2)|2,{116,118,0}}, +/* 20342 */ {(12<<2)|2,{116,118,0}}, +/* 20343 */ {(12<<2)|2,{116,118,0}}, +/* 20344 */ {(12<<2)|2,{116,118,0}}, +/* 20345 */ {(12<<2)|2,{116,118,0}}, +/* 20346 */ {(12<<2)|2,{116,118,0}}, +/* 20347 */ {(12<<2)|2,{116,118,0}}, +/* 20348 */ {(12<<2)|2,{116,118,0}}, +/* 20349 */ {(12<<2)|2,{116,118,0}}, +/* 20350 */ {(12<<2)|2,{116,118,0}}, +/* 20351 */ {(12<<2)|2,{116,118,0}}, +/* 20352 */ {(12<<2)|2,{116,119,0}}, +/* 20353 */ {(12<<2)|2,{116,119,0}}, +/* 20354 */ {(12<<2)|2,{116,119,0}}, +/* 20355 */ {(12<<2)|2,{116,119,0}}, +/* 20356 */ {(12<<2)|2,{116,119,0}}, +/* 20357 */ {(12<<2)|2,{116,119,0}}, +/* 20358 */ {(12<<2)|2,{116,119,0}}, +/* 20359 */ {(12<<2)|2,{116,119,0}}, +/* 20360 */ {(12<<2)|2,{116,119,0}}, +/* 20361 */ {(12<<2)|2,{116,119,0}}, +/* 20362 */ {(12<<2)|2,{116,119,0}}, +/* 20363 */ {(12<<2)|2,{116,119,0}}, +/* 20364 */ {(12<<2)|2,{116,119,0}}, +/* 20365 */ {(12<<2)|2,{116,119,0}}, +/* 20366 */ {(12<<2)|2,{116,119,0}}, +/* 20367 */ {(12<<2)|2,{116,119,0}}, +/* 20368 */ {(12<<2)|2,{116,120,0}}, +/* 20369 */ {(12<<2)|2,{116,120,0}}, +/* 20370 */ {(12<<2)|2,{116,120,0}}, +/* 20371 */ {(12<<2)|2,{116,120,0}}, +/* 20372 */ {(12<<2)|2,{116,120,0}}, +/* 20373 */ {(12<<2)|2,{116,120,0}}, +/* 20374 */ {(12<<2)|2,{116,120,0}}, +/* 20375 */ {(12<<2)|2,{116,120,0}}, +/* 20376 */ {(12<<2)|2,{116,120,0}}, +/* 20377 */ {(12<<2)|2,{116,120,0}}, +/* 20378 */ {(12<<2)|2,{116,120,0}}, +/* 20379 */ {(12<<2)|2,{116,120,0}}, +/* 20380 */ {(12<<2)|2,{116,120,0}}, +/* 20381 */ {(12<<2)|2,{116,120,0}}, +/* 20382 */ {(12<<2)|2,{116,120,0}}, +/* 20383 */ {(12<<2)|2,{116,120,0}}, +/* 20384 */ {(12<<2)|2,{116,121,0}}, +/* 20385 */ {(12<<2)|2,{116,121,0}}, +/* 20386 */ {(12<<2)|2,{116,121,0}}, +/* 20387 */ {(12<<2)|2,{116,121,0}}, +/* 20388 */ {(12<<2)|2,{116,121,0}}, +/* 20389 */ {(12<<2)|2,{116,121,0}}, +/* 20390 */ {(12<<2)|2,{116,121,0}}, +/* 20391 */ {(12<<2)|2,{116,121,0}}, +/* 20392 */ {(12<<2)|2,{116,121,0}}, +/* 20393 */ {(12<<2)|2,{116,121,0}}, +/* 20394 */ {(12<<2)|2,{116,121,0}}, +/* 20395 */ {(12<<2)|2,{116,121,0}}, +/* 20396 */ {(12<<2)|2,{116,121,0}}, +/* 20397 */ {(12<<2)|2,{116,121,0}}, +/* 20398 */ {(12<<2)|2,{116,121,0}}, +/* 20399 */ {(12<<2)|2,{116,121,0}}, +/* 20400 */ {(12<<2)|2,{116,122,0}}, +/* 20401 */ {(12<<2)|2,{116,122,0}}, +/* 20402 */ {(12<<2)|2,{116,122,0}}, +/* 20403 */ {(12<<2)|2,{116,122,0}}, +/* 20404 */ {(12<<2)|2,{116,122,0}}, +/* 20405 */ {(12<<2)|2,{116,122,0}}, +/* 20406 */ {(12<<2)|2,{116,122,0}}, +/* 20407 */ {(12<<2)|2,{116,122,0}}, +/* 20408 */ {(12<<2)|2,{116,122,0}}, +/* 20409 */ {(12<<2)|2,{116,122,0}}, +/* 20410 */ {(12<<2)|2,{116,122,0}}, +/* 20411 */ {(12<<2)|2,{116,122,0}}, +/* 20412 */ {(12<<2)|2,{116,122,0}}, +/* 20413 */ {(12<<2)|2,{116,122,0}}, +/* 20414 */ {(12<<2)|2,{116,122,0}}, +/* 20415 */ {(12<<2)|2,{116,122,0}}, +/* 20416 */ {(13<<2)|2,{116,38,0}}, +/* 20417 */ {(13<<2)|2,{116,38,0}}, +/* 20418 */ {(13<<2)|2,{116,38,0}}, +/* 20419 */ {(13<<2)|2,{116,38,0}}, +/* 20420 */ {(13<<2)|2,{116,38,0}}, +/* 20421 */ {(13<<2)|2,{116,38,0}}, +/* 20422 */ {(13<<2)|2,{116,38,0}}, +/* 20423 */ {(13<<2)|2,{116,38,0}}, +/* 20424 */ {(13<<2)|2,{116,42,0}}, +/* 20425 */ {(13<<2)|2,{116,42,0}}, +/* 20426 */ {(13<<2)|2,{116,42,0}}, +/* 20427 */ {(13<<2)|2,{116,42,0}}, +/* 20428 */ {(13<<2)|2,{116,42,0}}, +/* 20429 */ {(13<<2)|2,{116,42,0}}, +/* 20430 */ {(13<<2)|2,{116,42,0}}, +/* 20431 */ {(13<<2)|2,{116,42,0}}, +/* 20432 */ {(13<<2)|2,{116,44,0}}, +/* 20433 */ {(13<<2)|2,{116,44,0}}, +/* 20434 */ {(13<<2)|2,{116,44,0}}, +/* 20435 */ {(13<<2)|2,{116,44,0}}, +/* 20436 */ {(13<<2)|2,{116,44,0}}, +/* 20437 */ {(13<<2)|2,{116,44,0}}, +/* 20438 */ {(13<<2)|2,{116,44,0}}, +/* 20439 */ {(13<<2)|2,{116,44,0}}, +/* 20440 */ {(13<<2)|2,{116,59,0}}, +/* 20441 */ {(13<<2)|2,{116,59,0}}, +/* 20442 */ {(13<<2)|2,{116,59,0}}, +/* 20443 */ {(13<<2)|2,{116,59,0}}, +/* 20444 */ {(13<<2)|2,{116,59,0}}, +/* 20445 */ {(13<<2)|2,{116,59,0}}, +/* 20446 */ {(13<<2)|2,{116,59,0}}, +/* 20447 */ {(13<<2)|2,{116,59,0}}, +/* 20448 */ {(13<<2)|2,{116,88,0}}, +/* 20449 */ {(13<<2)|2,{116,88,0}}, +/* 20450 */ {(13<<2)|2,{116,88,0}}, +/* 20451 */ {(13<<2)|2,{116,88,0}}, +/* 20452 */ {(13<<2)|2,{116,88,0}}, +/* 20453 */ {(13<<2)|2,{116,88,0}}, +/* 20454 */ {(13<<2)|2,{116,88,0}}, +/* 20455 */ {(13<<2)|2,{116,88,0}}, +/* 20456 */ {(13<<2)|2,{116,90,0}}, +/* 20457 */ {(13<<2)|2,{116,90,0}}, +/* 20458 */ {(13<<2)|2,{116,90,0}}, +/* 20459 */ {(13<<2)|2,{116,90,0}}, +/* 20460 */ {(13<<2)|2,{116,90,0}}, +/* 20461 */ {(13<<2)|2,{116,90,0}}, +/* 20462 */ {(13<<2)|2,{116,90,0}}, +/* 20463 */ {(13<<2)|2,{116,90,0}}, +/* 20464 */ {(15<<2)|2,{116,33,0}}, +/* 20465 */ {(15<<2)|2,{116,33,0}}, +/* 20466 */ {(15<<2)|2,{116,34,0}}, +/* 20467 */ {(15<<2)|2,{116,34,0}}, +/* 20468 */ {(15<<2)|2,{116,40,0}}, +/* 20469 */ {(15<<2)|2,{116,40,0}}, +/* 20470 */ {(15<<2)|2,{116,41,0}}, +/* 20471 */ {(15<<2)|2,{116,41,0}}, +/* 20472 */ {(15<<2)|2,{116,63,0}}, +/* 20473 */ {(15<<2)|2,{116,63,0}}, +/* 20474 */ {(16<<2)|2,{116,39,0}}, +/* 20475 */ {(16<<2)|2,{116,43,0}}, +/* 20476 */ {(16<<2)|2,{116,124,0}}, +/* 20477 */ {(5<<2)|1,{116,0,0}}, +/* 20478 */ {(5<<2)|1,{116,0,0}}, +/* 20479 */ {(5<<2)|1,{116,0,0}}, +/* 20480 */ {(16<<2)|3,{32,48,48}}, +/* 20481 */ {(16<<2)|3,{32,48,49}}, +/* 20482 */ {(16<<2)|3,{32,48,50}}, +/* 20483 */ {(16<<2)|3,{32,48,97}}, +/* 20484 */ {(16<<2)|3,{32,48,99}}, +/* 20485 */ {(16<<2)|3,{32,48,101}}, +/* 20486 */ {(16<<2)|3,{32,48,105}}, +/* 20487 */ {(16<<2)|3,{32,48,111}}, +/* 20488 */ {(16<<2)|3,{32,48,115}}, +/* 20489 */ {(16<<2)|3,{32,48,116}}, +/* 20490 */ {(11<<2)|2,{32,48,0}}, +/* 20491 */ {(11<<2)|2,{32,48,0}}, +/* 20492 */ {(11<<2)|2,{32,48,0}}, +/* 20493 */ {(11<<2)|2,{32,48,0}}, +/* 20494 */ {(11<<2)|2,{32,48,0}}, +/* 20495 */ {(11<<2)|2,{32,48,0}}, +/* 20496 */ {(11<<2)|2,{32,48,0}}, +/* 20497 */ {(11<<2)|2,{32,48,0}}, +/* 20498 */ {(11<<2)|2,{32,48,0}}, +/* 20499 */ {(11<<2)|2,{32,48,0}}, +/* 20500 */ {(11<<2)|2,{32,48,0}}, +/* 20501 */ {(11<<2)|2,{32,48,0}}, +/* 20502 */ {(11<<2)|2,{32,48,0}}, +/* 20503 */ {(11<<2)|2,{32,48,0}}, +/* 20504 */ {(11<<2)|2,{32,48,0}}, +/* 20505 */ {(11<<2)|2,{32,48,0}}, +/* 20506 */ {(11<<2)|2,{32,48,0}}, +/* 20507 */ {(11<<2)|2,{32,48,0}}, +/* 20508 */ {(11<<2)|2,{32,48,0}}, +/* 20509 */ {(11<<2)|2,{32,48,0}}, +/* 20510 */ {(11<<2)|2,{32,48,0}}, +/* 20511 */ {(11<<2)|2,{32,48,0}}, +/* 20512 */ {(16<<2)|3,{32,49,48}}, +/* 20513 */ {(16<<2)|3,{32,49,49}}, +/* 20514 */ {(16<<2)|3,{32,49,50}}, +/* 20515 */ {(16<<2)|3,{32,49,97}}, +/* 20516 */ {(16<<2)|3,{32,49,99}}, +/* 20517 */ {(16<<2)|3,{32,49,101}}, +/* 20518 */ {(16<<2)|3,{32,49,105}}, +/* 20519 */ {(16<<2)|3,{32,49,111}}, +/* 20520 */ {(16<<2)|3,{32,49,115}}, +/* 20521 */ {(16<<2)|3,{32,49,116}}, +/* 20522 */ {(11<<2)|2,{32,49,0}}, +/* 20523 */ {(11<<2)|2,{32,49,0}}, +/* 20524 */ {(11<<2)|2,{32,49,0}}, +/* 20525 */ {(11<<2)|2,{32,49,0}}, +/* 20526 */ {(11<<2)|2,{32,49,0}}, +/* 20527 */ {(11<<2)|2,{32,49,0}}, +/* 20528 */ {(11<<2)|2,{32,49,0}}, +/* 20529 */ {(11<<2)|2,{32,49,0}}, +/* 20530 */ {(11<<2)|2,{32,49,0}}, +/* 20531 */ {(11<<2)|2,{32,49,0}}, +/* 20532 */ {(11<<2)|2,{32,49,0}}, +/* 20533 */ {(11<<2)|2,{32,49,0}}, +/* 20534 */ {(11<<2)|2,{32,49,0}}, +/* 20535 */ {(11<<2)|2,{32,49,0}}, +/* 20536 */ {(11<<2)|2,{32,49,0}}, +/* 20537 */ {(11<<2)|2,{32,49,0}}, +/* 20538 */ {(11<<2)|2,{32,49,0}}, +/* 20539 */ {(11<<2)|2,{32,49,0}}, +/* 20540 */ {(11<<2)|2,{32,49,0}}, +/* 20541 */ {(11<<2)|2,{32,49,0}}, +/* 20542 */ {(11<<2)|2,{32,49,0}}, +/* 20543 */ {(11<<2)|2,{32,49,0}}, +/* 20544 */ {(16<<2)|3,{32,50,48}}, +/* 20545 */ {(16<<2)|3,{32,50,49}}, +/* 20546 */ {(16<<2)|3,{32,50,50}}, +/* 20547 */ {(16<<2)|3,{32,50,97}}, +/* 20548 */ {(16<<2)|3,{32,50,99}}, +/* 20549 */ {(16<<2)|3,{32,50,101}}, +/* 20550 */ {(16<<2)|3,{32,50,105}}, +/* 20551 */ {(16<<2)|3,{32,50,111}}, +/* 20552 */ {(16<<2)|3,{32,50,115}}, +/* 20553 */ {(16<<2)|3,{32,50,116}}, +/* 20554 */ {(11<<2)|2,{32,50,0}}, +/* 20555 */ {(11<<2)|2,{32,50,0}}, +/* 20556 */ {(11<<2)|2,{32,50,0}}, +/* 20557 */ {(11<<2)|2,{32,50,0}}, +/* 20558 */ {(11<<2)|2,{32,50,0}}, +/* 20559 */ {(11<<2)|2,{32,50,0}}, +/* 20560 */ {(11<<2)|2,{32,50,0}}, +/* 20561 */ {(11<<2)|2,{32,50,0}}, +/* 20562 */ {(11<<2)|2,{32,50,0}}, +/* 20563 */ {(11<<2)|2,{32,50,0}}, +/* 20564 */ {(11<<2)|2,{32,50,0}}, +/* 20565 */ {(11<<2)|2,{32,50,0}}, +/* 20566 */ {(11<<2)|2,{32,50,0}}, +/* 20567 */ {(11<<2)|2,{32,50,0}}, +/* 20568 */ {(11<<2)|2,{32,50,0}}, +/* 20569 */ {(11<<2)|2,{32,50,0}}, +/* 20570 */ {(11<<2)|2,{32,50,0}}, +/* 20571 */ {(11<<2)|2,{32,50,0}}, +/* 20572 */ {(11<<2)|2,{32,50,0}}, +/* 20573 */ {(11<<2)|2,{32,50,0}}, +/* 20574 */ {(11<<2)|2,{32,50,0}}, +/* 20575 */ {(11<<2)|2,{32,50,0}}, +/* 20576 */ {(16<<2)|3,{32,97,48}}, +/* 20577 */ {(16<<2)|3,{32,97,49}}, +/* 20578 */ {(16<<2)|3,{32,97,50}}, +/* 20579 */ {(16<<2)|3,{32,97,97}}, +/* 20580 */ {(16<<2)|3,{32,97,99}}, +/* 20581 */ {(16<<2)|3,{32,97,101}}, +/* 20582 */ {(16<<2)|3,{32,97,105}}, +/* 20583 */ {(16<<2)|3,{32,97,111}}, +/* 20584 */ {(16<<2)|3,{32,97,115}}, +/* 20585 */ {(16<<2)|3,{32,97,116}}, +/* 20586 */ {(11<<2)|2,{32,97,0}}, +/* 20587 */ {(11<<2)|2,{32,97,0}}, +/* 20588 */ {(11<<2)|2,{32,97,0}}, +/* 20589 */ {(11<<2)|2,{32,97,0}}, +/* 20590 */ {(11<<2)|2,{32,97,0}}, +/* 20591 */ {(11<<2)|2,{32,97,0}}, +/* 20592 */ {(11<<2)|2,{32,97,0}}, +/* 20593 */ {(11<<2)|2,{32,97,0}}, +/* 20594 */ {(11<<2)|2,{32,97,0}}, +/* 20595 */ {(11<<2)|2,{32,97,0}}, +/* 20596 */ {(11<<2)|2,{32,97,0}}, +/* 20597 */ {(11<<2)|2,{32,97,0}}, +/* 20598 */ {(11<<2)|2,{32,97,0}}, +/* 20599 */ {(11<<2)|2,{32,97,0}}, +/* 20600 */ {(11<<2)|2,{32,97,0}}, +/* 20601 */ {(11<<2)|2,{32,97,0}}, +/* 20602 */ {(11<<2)|2,{32,97,0}}, +/* 20603 */ {(11<<2)|2,{32,97,0}}, +/* 20604 */ {(11<<2)|2,{32,97,0}}, +/* 20605 */ {(11<<2)|2,{32,97,0}}, +/* 20606 */ {(11<<2)|2,{32,97,0}}, +/* 20607 */ {(11<<2)|2,{32,97,0}}, +/* 20608 */ {(16<<2)|3,{32,99,48}}, +/* 20609 */ {(16<<2)|3,{32,99,49}}, +/* 20610 */ {(16<<2)|3,{32,99,50}}, +/* 20611 */ {(16<<2)|3,{32,99,97}}, +/* 20612 */ {(16<<2)|3,{32,99,99}}, +/* 20613 */ {(16<<2)|3,{32,99,101}}, +/* 20614 */ {(16<<2)|3,{32,99,105}}, +/* 20615 */ {(16<<2)|3,{32,99,111}}, +/* 20616 */ {(16<<2)|3,{32,99,115}}, +/* 20617 */ {(16<<2)|3,{32,99,116}}, +/* 20618 */ {(11<<2)|2,{32,99,0}}, +/* 20619 */ {(11<<2)|2,{32,99,0}}, +/* 20620 */ {(11<<2)|2,{32,99,0}}, +/* 20621 */ {(11<<2)|2,{32,99,0}}, +/* 20622 */ {(11<<2)|2,{32,99,0}}, +/* 20623 */ {(11<<2)|2,{32,99,0}}, +/* 20624 */ {(11<<2)|2,{32,99,0}}, +/* 20625 */ {(11<<2)|2,{32,99,0}}, +/* 20626 */ {(11<<2)|2,{32,99,0}}, +/* 20627 */ {(11<<2)|2,{32,99,0}}, +/* 20628 */ {(11<<2)|2,{32,99,0}}, +/* 20629 */ {(11<<2)|2,{32,99,0}}, +/* 20630 */ {(11<<2)|2,{32,99,0}}, +/* 20631 */ {(11<<2)|2,{32,99,0}}, +/* 20632 */ {(11<<2)|2,{32,99,0}}, +/* 20633 */ {(11<<2)|2,{32,99,0}}, +/* 20634 */ {(11<<2)|2,{32,99,0}}, +/* 20635 */ {(11<<2)|2,{32,99,0}}, +/* 20636 */ {(11<<2)|2,{32,99,0}}, +/* 20637 */ {(11<<2)|2,{32,99,0}}, +/* 20638 */ {(11<<2)|2,{32,99,0}}, +/* 20639 */ {(11<<2)|2,{32,99,0}}, +/* 20640 */ {(16<<2)|3,{32,101,48}}, +/* 20641 */ {(16<<2)|3,{32,101,49}}, +/* 20642 */ {(16<<2)|3,{32,101,50}}, +/* 20643 */ {(16<<2)|3,{32,101,97}}, +/* 20644 */ {(16<<2)|3,{32,101,99}}, +/* 20645 */ {(16<<2)|3,{32,101,101}}, +/* 20646 */ {(16<<2)|3,{32,101,105}}, +/* 20647 */ {(16<<2)|3,{32,101,111}}, +/* 20648 */ {(16<<2)|3,{32,101,115}}, +/* 20649 */ {(16<<2)|3,{32,101,116}}, +/* 20650 */ {(11<<2)|2,{32,101,0}}, +/* 20651 */ {(11<<2)|2,{32,101,0}}, +/* 20652 */ {(11<<2)|2,{32,101,0}}, +/* 20653 */ {(11<<2)|2,{32,101,0}}, +/* 20654 */ {(11<<2)|2,{32,101,0}}, +/* 20655 */ {(11<<2)|2,{32,101,0}}, +/* 20656 */ {(11<<2)|2,{32,101,0}}, +/* 20657 */ {(11<<2)|2,{32,101,0}}, +/* 20658 */ {(11<<2)|2,{32,101,0}}, +/* 20659 */ {(11<<2)|2,{32,101,0}}, +/* 20660 */ {(11<<2)|2,{32,101,0}}, +/* 20661 */ {(11<<2)|2,{32,101,0}}, +/* 20662 */ {(11<<2)|2,{32,101,0}}, +/* 20663 */ {(11<<2)|2,{32,101,0}}, +/* 20664 */ {(11<<2)|2,{32,101,0}}, +/* 20665 */ {(11<<2)|2,{32,101,0}}, +/* 20666 */ {(11<<2)|2,{32,101,0}}, +/* 20667 */ {(11<<2)|2,{32,101,0}}, +/* 20668 */ {(11<<2)|2,{32,101,0}}, +/* 20669 */ {(11<<2)|2,{32,101,0}}, +/* 20670 */ {(11<<2)|2,{32,101,0}}, +/* 20671 */ {(11<<2)|2,{32,101,0}}, +/* 20672 */ {(16<<2)|3,{32,105,48}}, +/* 20673 */ {(16<<2)|3,{32,105,49}}, +/* 20674 */ {(16<<2)|3,{32,105,50}}, +/* 20675 */ {(16<<2)|3,{32,105,97}}, +/* 20676 */ {(16<<2)|3,{32,105,99}}, +/* 20677 */ {(16<<2)|3,{32,105,101}}, +/* 20678 */ {(16<<2)|3,{32,105,105}}, +/* 20679 */ {(16<<2)|3,{32,105,111}}, +/* 20680 */ {(16<<2)|3,{32,105,115}}, +/* 20681 */ {(16<<2)|3,{32,105,116}}, +/* 20682 */ {(11<<2)|2,{32,105,0}}, +/* 20683 */ {(11<<2)|2,{32,105,0}}, +/* 20684 */ {(11<<2)|2,{32,105,0}}, +/* 20685 */ {(11<<2)|2,{32,105,0}}, +/* 20686 */ {(11<<2)|2,{32,105,0}}, +/* 20687 */ {(11<<2)|2,{32,105,0}}, +/* 20688 */ {(11<<2)|2,{32,105,0}}, +/* 20689 */ {(11<<2)|2,{32,105,0}}, +/* 20690 */ {(11<<2)|2,{32,105,0}}, +/* 20691 */ {(11<<2)|2,{32,105,0}}, +/* 20692 */ {(11<<2)|2,{32,105,0}}, +/* 20693 */ {(11<<2)|2,{32,105,0}}, +/* 20694 */ {(11<<2)|2,{32,105,0}}, +/* 20695 */ {(11<<2)|2,{32,105,0}}, +/* 20696 */ {(11<<2)|2,{32,105,0}}, +/* 20697 */ {(11<<2)|2,{32,105,0}}, +/* 20698 */ {(11<<2)|2,{32,105,0}}, +/* 20699 */ {(11<<2)|2,{32,105,0}}, +/* 20700 */ {(11<<2)|2,{32,105,0}}, +/* 20701 */ {(11<<2)|2,{32,105,0}}, +/* 20702 */ {(11<<2)|2,{32,105,0}}, +/* 20703 */ {(11<<2)|2,{32,105,0}}, +/* 20704 */ {(16<<2)|3,{32,111,48}}, +/* 20705 */ {(16<<2)|3,{32,111,49}}, +/* 20706 */ {(16<<2)|3,{32,111,50}}, +/* 20707 */ {(16<<2)|3,{32,111,97}}, +/* 20708 */ {(16<<2)|3,{32,111,99}}, +/* 20709 */ {(16<<2)|3,{32,111,101}}, +/* 20710 */ {(16<<2)|3,{32,111,105}}, +/* 20711 */ {(16<<2)|3,{32,111,111}}, +/* 20712 */ {(16<<2)|3,{32,111,115}}, +/* 20713 */ {(16<<2)|3,{32,111,116}}, +/* 20714 */ {(11<<2)|2,{32,111,0}}, +/* 20715 */ {(11<<2)|2,{32,111,0}}, +/* 20716 */ {(11<<2)|2,{32,111,0}}, +/* 20717 */ {(11<<2)|2,{32,111,0}}, +/* 20718 */ {(11<<2)|2,{32,111,0}}, +/* 20719 */ {(11<<2)|2,{32,111,0}}, +/* 20720 */ {(11<<2)|2,{32,111,0}}, +/* 20721 */ {(11<<2)|2,{32,111,0}}, +/* 20722 */ {(11<<2)|2,{32,111,0}}, +/* 20723 */ {(11<<2)|2,{32,111,0}}, +/* 20724 */ {(11<<2)|2,{32,111,0}}, +/* 20725 */ {(11<<2)|2,{32,111,0}}, +/* 20726 */ {(11<<2)|2,{32,111,0}}, +/* 20727 */ {(11<<2)|2,{32,111,0}}, +/* 20728 */ {(11<<2)|2,{32,111,0}}, +/* 20729 */ {(11<<2)|2,{32,111,0}}, +/* 20730 */ {(11<<2)|2,{32,111,0}}, +/* 20731 */ {(11<<2)|2,{32,111,0}}, +/* 20732 */ {(11<<2)|2,{32,111,0}}, +/* 20733 */ {(11<<2)|2,{32,111,0}}, +/* 20734 */ {(11<<2)|2,{32,111,0}}, +/* 20735 */ {(11<<2)|2,{32,111,0}}, +/* 20736 */ {(16<<2)|3,{32,115,48}}, +/* 20737 */ {(16<<2)|3,{32,115,49}}, +/* 20738 */ {(16<<2)|3,{32,115,50}}, +/* 20739 */ {(16<<2)|3,{32,115,97}}, +/* 20740 */ {(16<<2)|3,{32,115,99}}, +/* 20741 */ {(16<<2)|3,{32,115,101}}, +/* 20742 */ {(16<<2)|3,{32,115,105}}, +/* 20743 */ {(16<<2)|3,{32,115,111}}, +/* 20744 */ {(16<<2)|3,{32,115,115}}, +/* 20745 */ {(16<<2)|3,{32,115,116}}, +/* 20746 */ {(11<<2)|2,{32,115,0}}, +/* 20747 */ {(11<<2)|2,{32,115,0}}, +/* 20748 */ {(11<<2)|2,{32,115,0}}, +/* 20749 */ {(11<<2)|2,{32,115,0}}, +/* 20750 */ {(11<<2)|2,{32,115,0}}, +/* 20751 */ {(11<<2)|2,{32,115,0}}, +/* 20752 */ {(11<<2)|2,{32,115,0}}, +/* 20753 */ {(11<<2)|2,{32,115,0}}, +/* 20754 */ {(11<<2)|2,{32,115,0}}, +/* 20755 */ {(11<<2)|2,{32,115,0}}, +/* 20756 */ {(11<<2)|2,{32,115,0}}, +/* 20757 */ {(11<<2)|2,{32,115,0}}, +/* 20758 */ {(11<<2)|2,{32,115,0}}, +/* 20759 */ {(11<<2)|2,{32,115,0}}, +/* 20760 */ {(11<<2)|2,{32,115,0}}, +/* 20761 */ {(11<<2)|2,{32,115,0}}, +/* 20762 */ {(11<<2)|2,{32,115,0}}, +/* 20763 */ {(11<<2)|2,{32,115,0}}, +/* 20764 */ {(11<<2)|2,{32,115,0}}, +/* 20765 */ {(11<<2)|2,{32,115,0}}, +/* 20766 */ {(11<<2)|2,{32,115,0}}, +/* 20767 */ {(11<<2)|2,{32,115,0}}, +/* 20768 */ {(16<<2)|3,{32,116,48}}, +/* 20769 */ {(16<<2)|3,{32,116,49}}, +/* 20770 */ {(16<<2)|3,{32,116,50}}, +/* 20771 */ {(16<<2)|3,{32,116,97}}, +/* 20772 */ {(16<<2)|3,{32,116,99}}, +/* 20773 */ {(16<<2)|3,{32,116,101}}, +/* 20774 */ {(16<<2)|3,{32,116,105}}, +/* 20775 */ {(16<<2)|3,{32,116,111}}, +/* 20776 */ {(16<<2)|3,{32,116,115}}, +/* 20777 */ {(16<<2)|3,{32,116,116}}, +/* 20778 */ {(11<<2)|2,{32,116,0}}, +/* 20779 */ {(11<<2)|2,{32,116,0}}, +/* 20780 */ {(11<<2)|2,{32,116,0}}, +/* 20781 */ {(11<<2)|2,{32,116,0}}, +/* 20782 */ {(11<<2)|2,{32,116,0}}, +/* 20783 */ {(11<<2)|2,{32,116,0}}, +/* 20784 */ {(11<<2)|2,{32,116,0}}, +/* 20785 */ {(11<<2)|2,{32,116,0}}, +/* 20786 */ {(11<<2)|2,{32,116,0}}, +/* 20787 */ {(11<<2)|2,{32,116,0}}, +/* 20788 */ {(11<<2)|2,{32,116,0}}, +/* 20789 */ {(11<<2)|2,{32,116,0}}, +/* 20790 */ {(11<<2)|2,{32,116,0}}, +/* 20791 */ {(11<<2)|2,{32,116,0}}, +/* 20792 */ {(11<<2)|2,{32,116,0}}, +/* 20793 */ {(11<<2)|2,{32,116,0}}, +/* 20794 */ {(11<<2)|2,{32,116,0}}, +/* 20795 */ {(11<<2)|2,{32,116,0}}, +/* 20796 */ {(11<<2)|2,{32,116,0}}, +/* 20797 */ {(11<<2)|2,{32,116,0}}, +/* 20798 */ {(11<<2)|2,{32,116,0}}, +/* 20799 */ {(11<<2)|2,{32,116,0}}, +/* 20800 */ {(12<<2)|2,{32,32,0}}, +/* 20801 */ {(12<<2)|2,{32,32,0}}, +/* 20802 */ {(12<<2)|2,{32,32,0}}, +/* 20803 */ {(12<<2)|2,{32,32,0}}, +/* 20804 */ {(12<<2)|2,{32,32,0}}, +/* 20805 */ {(12<<2)|2,{32,32,0}}, +/* 20806 */ {(12<<2)|2,{32,32,0}}, +/* 20807 */ {(12<<2)|2,{32,32,0}}, +/* 20808 */ {(12<<2)|2,{32,32,0}}, +/* 20809 */ {(12<<2)|2,{32,32,0}}, +/* 20810 */ {(12<<2)|2,{32,32,0}}, +/* 20811 */ {(12<<2)|2,{32,32,0}}, +/* 20812 */ {(12<<2)|2,{32,32,0}}, +/* 20813 */ {(12<<2)|2,{32,32,0}}, +/* 20814 */ {(12<<2)|2,{32,32,0}}, +/* 20815 */ {(12<<2)|2,{32,32,0}}, +/* 20816 */ {(12<<2)|2,{32,37,0}}, +/* 20817 */ {(12<<2)|2,{32,37,0}}, +/* 20818 */ {(12<<2)|2,{32,37,0}}, +/* 20819 */ {(12<<2)|2,{32,37,0}}, +/* 20820 */ {(12<<2)|2,{32,37,0}}, +/* 20821 */ {(12<<2)|2,{32,37,0}}, +/* 20822 */ {(12<<2)|2,{32,37,0}}, +/* 20823 */ {(12<<2)|2,{32,37,0}}, +/* 20824 */ {(12<<2)|2,{32,37,0}}, +/* 20825 */ {(12<<2)|2,{32,37,0}}, +/* 20826 */ {(12<<2)|2,{32,37,0}}, +/* 20827 */ {(12<<2)|2,{32,37,0}}, +/* 20828 */ {(12<<2)|2,{32,37,0}}, +/* 20829 */ {(12<<2)|2,{32,37,0}}, +/* 20830 */ {(12<<2)|2,{32,37,0}}, +/* 20831 */ {(12<<2)|2,{32,37,0}}, +/* 20832 */ {(12<<2)|2,{32,45,0}}, +/* 20833 */ {(12<<2)|2,{32,45,0}}, +/* 20834 */ {(12<<2)|2,{32,45,0}}, +/* 20835 */ {(12<<2)|2,{32,45,0}}, +/* 20836 */ {(12<<2)|2,{32,45,0}}, +/* 20837 */ {(12<<2)|2,{32,45,0}}, +/* 20838 */ {(12<<2)|2,{32,45,0}}, +/* 20839 */ {(12<<2)|2,{32,45,0}}, +/* 20840 */ {(12<<2)|2,{32,45,0}}, +/* 20841 */ {(12<<2)|2,{32,45,0}}, +/* 20842 */ {(12<<2)|2,{32,45,0}}, +/* 20843 */ {(12<<2)|2,{32,45,0}}, +/* 20844 */ {(12<<2)|2,{32,45,0}}, +/* 20845 */ {(12<<2)|2,{32,45,0}}, +/* 20846 */ {(12<<2)|2,{32,45,0}}, +/* 20847 */ {(12<<2)|2,{32,45,0}}, +/* 20848 */ {(12<<2)|2,{32,46,0}}, +/* 20849 */ {(12<<2)|2,{32,46,0}}, +/* 20850 */ {(12<<2)|2,{32,46,0}}, +/* 20851 */ {(12<<2)|2,{32,46,0}}, +/* 20852 */ {(12<<2)|2,{32,46,0}}, +/* 20853 */ {(12<<2)|2,{32,46,0}}, +/* 20854 */ {(12<<2)|2,{32,46,0}}, +/* 20855 */ {(12<<2)|2,{32,46,0}}, +/* 20856 */ {(12<<2)|2,{32,46,0}}, +/* 20857 */ {(12<<2)|2,{32,46,0}}, +/* 20858 */ {(12<<2)|2,{32,46,0}}, +/* 20859 */ {(12<<2)|2,{32,46,0}}, +/* 20860 */ {(12<<2)|2,{32,46,0}}, +/* 20861 */ {(12<<2)|2,{32,46,0}}, +/* 20862 */ {(12<<2)|2,{32,46,0}}, +/* 20863 */ {(12<<2)|2,{32,46,0}}, +/* 20864 */ {(12<<2)|2,{32,47,0}}, +/* 20865 */ {(12<<2)|2,{32,47,0}}, +/* 20866 */ {(12<<2)|2,{32,47,0}}, +/* 20867 */ {(12<<2)|2,{32,47,0}}, +/* 20868 */ {(12<<2)|2,{32,47,0}}, +/* 20869 */ {(12<<2)|2,{32,47,0}}, +/* 20870 */ {(12<<2)|2,{32,47,0}}, +/* 20871 */ {(12<<2)|2,{32,47,0}}, +/* 20872 */ {(12<<2)|2,{32,47,0}}, +/* 20873 */ {(12<<2)|2,{32,47,0}}, +/* 20874 */ {(12<<2)|2,{32,47,0}}, +/* 20875 */ {(12<<2)|2,{32,47,0}}, +/* 20876 */ {(12<<2)|2,{32,47,0}}, +/* 20877 */ {(12<<2)|2,{32,47,0}}, +/* 20878 */ {(12<<2)|2,{32,47,0}}, +/* 20879 */ {(12<<2)|2,{32,47,0}}, +/* 20880 */ {(12<<2)|2,{32,51,0}}, +/* 20881 */ {(12<<2)|2,{32,51,0}}, +/* 20882 */ {(12<<2)|2,{32,51,0}}, +/* 20883 */ {(12<<2)|2,{32,51,0}}, +/* 20884 */ {(12<<2)|2,{32,51,0}}, +/* 20885 */ {(12<<2)|2,{32,51,0}}, +/* 20886 */ {(12<<2)|2,{32,51,0}}, +/* 20887 */ {(12<<2)|2,{32,51,0}}, +/* 20888 */ {(12<<2)|2,{32,51,0}}, +/* 20889 */ {(12<<2)|2,{32,51,0}}, +/* 20890 */ {(12<<2)|2,{32,51,0}}, +/* 20891 */ {(12<<2)|2,{32,51,0}}, +/* 20892 */ {(12<<2)|2,{32,51,0}}, +/* 20893 */ {(12<<2)|2,{32,51,0}}, +/* 20894 */ {(12<<2)|2,{32,51,0}}, +/* 20895 */ {(12<<2)|2,{32,51,0}}, +/* 20896 */ {(12<<2)|2,{32,52,0}}, +/* 20897 */ {(12<<2)|2,{32,52,0}}, +/* 20898 */ {(12<<2)|2,{32,52,0}}, +/* 20899 */ {(12<<2)|2,{32,52,0}}, +/* 20900 */ {(12<<2)|2,{32,52,0}}, +/* 20901 */ {(12<<2)|2,{32,52,0}}, +/* 20902 */ {(12<<2)|2,{32,52,0}}, +/* 20903 */ {(12<<2)|2,{32,52,0}}, +/* 20904 */ {(12<<2)|2,{32,52,0}}, +/* 20905 */ {(12<<2)|2,{32,52,0}}, +/* 20906 */ {(12<<2)|2,{32,52,0}}, +/* 20907 */ {(12<<2)|2,{32,52,0}}, +/* 20908 */ {(12<<2)|2,{32,52,0}}, +/* 20909 */ {(12<<2)|2,{32,52,0}}, +/* 20910 */ {(12<<2)|2,{32,52,0}}, +/* 20911 */ {(12<<2)|2,{32,52,0}}, +/* 20912 */ {(12<<2)|2,{32,53,0}}, +/* 20913 */ {(12<<2)|2,{32,53,0}}, +/* 20914 */ {(12<<2)|2,{32,53,0}}, +/* 20915 */ {(12<<2)|2,{32,53,0}}, +/* 20916 */ {(12<<2)|2,{32,53,0}}, +/* 20917 */ {(12<<2)|2,{32,53,0}}, +/* 20918 */ {(12<<2)|2,{32,53,0}}, +/* 20919 */ {(12<<2)|2,{32,53,0}}, +/* 20920 */ {(12<<2)|2,{32,53,0}}, +/* 20921 */ {(12<<2)|2,{32,53,0}}, +/* 20922 */ {(12<<2)|2,{32,53,0}}, +/* 20923 */ {(12<<2)|2,{32,53,0}}, +/* 20924 */ {(12<<2)|2,{32,53,0}}, +/* 20925 */ {(12<<2)|2,{32,53,0}}, +/* 20926 */ {(12<<2)|2,{32,53,0}}, +/* 20927 */ {(12<<2)|2,{32,53,0}}, +/* 20928 */ {(12<<2)|2,{32,54,0}}, +/* 20929 */ {(12<<2)|2,{32,54,0}}, +/* 20930 */ {(12<<2)|2,{32,54,0}}, +/* 20931 */ {(12<<2)|2,{32,54,0}}, +/* 20932 */ {(12<<2)|2,{32,54,0}}, +/* 20933 */ {(12<<2)|2,{32,54,0}}, +/* 20934 */ {(12<<2)|2,{32,54,0}}, +/* 20935 */ {(12<<2)|2,{32,54,0}}, +/* 20936 */ {(12<<2)|2,{32,54,0}}, +/* 20937 */ {(12<<2)|2,{32,54,0}}, +/* 20938 */ {(12<<2)|2,{32,54,0}}, +/* 20939 */ {(12<<2)|2,{32,54,0}}, +/* 20940 */ {(12<<2)|2,{32,54,0}}, +/* 20941 */ {(12<<2)|2,{32,54,0}}, +/* 20942 */ {(12<<2)|2,{32,54,0}}, +/* 20943 */ {(12<<2)|2,{32,54,0}}, +/* 20944 */ {(12<<2)|2,{32,55,0}}, +/* 20945 */ {(12<<2)|2,{32,55,0}}, +/* 20946 */ {(12<<2)|2,{32,55,0}}, +/* 20947 */ {(12<<2)|2,{32,55,0}}, +/* 20948 */ {(12<<2)|2,{32,55,0}}, +/* 20949 */ {(12<<2)|2,{32,55,0}}, +/* 20950 */ {(12<<2)|2,{32,55,0}}, +/* 20951 */ {(12<<2)|2,{32,55,0}}, +/* 20952 */ {(12<<2)|2,{32,55,0}}, +/* 20953 */ {(12<<2)|2,{32,55,0}}, +/* 20954 */ {(12<<2)|2,{32,55,0}}, +/* 20955 */ {(12<<2)|2,{32,55,0}}, +/* 20956 */ {(12<<2)|2,{32,55,0}}, +/* 20957 */ {(12<<2)|2,{32,55,0}}, +/* 20958 */ {(12<<2)|2,{32,55,0}}, +/* 20959 */ {(12<<2)|2,{32,55,0}}, +/* 20960 */ {(12<<2)|2,{32,56,0}}, +/* 20961 */ {(12<<2)|2,{32,56,0}}, +/* 20962 */ {(12<<2)|2,{32,56,0}}, +/* 20963 */ {(12<<2)|2,{32,56,0}}, +/* 20964 */ {(12<<2)|2,{32,56,0}}, +/* 20965 */ {(12<<2)|2,{32,56,0}}, +/* 20966 */ {(12<<2)|2,{32,56,0}}, +/* 20967 */ {(12<<2)|2,{32,56,0}}, +/* 20968 */ {(12<<2)|2,{32,56,0}}, +/* 20969 */ {(12<<2)|2,{32,56,0}}, +/* 20970 */ {(12<<2)|2,{32,56,0}}, +/* 20971 */ {(12<<2)|2,{32,56,0}}, +/* 20972 */ {(12<<2)|2,{32,56,0}}, +/* 20973 */ {(12<<2)|2,{32,56,0}}, +/* 20974 */ {(12<<2)|2,{32,56,0}}, +/* 20975 */ {(12<<2)|2,{32,56,0}}, +/* 20976 */ {(12<<2)|2,{32,57,0}}, +/* 20977 */ {(12<<2)|2,{32,57,0}}, +/* 20978 */ {(12<<2)|2,{32,57,0}}, +/* 20979 */ {(12<<2)|2,{32,57,0}}, +/* 20980 */ {(12<<2)|2,{32,57,0}}, +/* 20981 */ {(12<<2)|2,{32,57,0}}, +/* 20982 */ {(12<<2)|2,{32,57,0}}, +/* 20983 */ {(12<<2)|2,{32,57,0}}, +/* 20984 */ {(12<<2)|2,{32,57,0}}, +/* 20985 */ {(12<<2)|2,{32,57,0}}, +/* 20986 */ {(12<<2)|2,{32,57,0}}, +/* 20987 */ {(12<<2)|2,{32,57,0}}, +/* 20988 */ {(12<<2)|2,{32,57,0}}, +/* 20989 */ {(12<<2)|2,{32,57,0}}, +/* 20990 */ {(12<<2)|2,{32,57,0}}, +/* 20991 */ {(12<<2)|2,{32,57,0}}, +/* 20992 */ {(12<<2)|2,{32,61,0}}, +/* 20993 */ {(12<<2)|2,{32,61,0}}, +/* 20994 */ {(12<<2)|2,{32,61,0}}, +/* 20995 */ {(12<<2)|2,{32,61,0}}, +/* 20996 */ {(12<<2)|2,{32,61,0}}, +/* 20997 */ {(12<<2)|2,{32,61,0}}, +/* 20998 */ {(12<<2)|2,{32,61,0}}, +/* 20999 */ {(12<<2)|2,{32,61,0}}, +/* 21000 */ {(12<<2)|2,{32,61,0}}, +/* 21001 */ {(12<<2)|2,{32,61,0}}, +/* 21002 */ {(12<<2)|2,{32,61,0}}, +/* 21003 */ {(12<<2)|2,{32,61,0}}, +/* 21004 */ {(12<<2)|2,{32,61,0}}, +/* 21005 */ {(12<<2)|2,{32,61,0}}, +/* 21006 */ {(12<<2)|2,{32,61,0}}, +/* 21007 */ {(12<<2)|2,{32,61,0}}, +/* 21008 */ {(12<<2)|2,{32,65,0}}, +/* 21009 */ {(12<<2)|2,{32,65,0}}, +/* 21010 */ {(12<<2)|2,{32,65,0}}, +/* 21011 */ {(12<<2)|2,{32,65,0}}, +/* 21012 */ {(12<<2)|2,{32,65,0}}, +/* 21013 */ {(12<<2)|2,{32,65,0}}, +/* 21014 */ {(12<<2)|2,{32,65,0}}, +/* 21015 */ {(12<<2)|2,{32,65,0}}, +/* 21016 */ {(12<<2)|2,{32,65,0}}, +/* 21017 */ {(12<<2)|2,{32,65,0}}, +/* 21018 */ {(12<<2)|2,{32,65,0}}, +/* 21019 */ {(12<<2)|2,{32,65,0}}, +/* 21020 */ {(12<<2)|2,{32,65,0}}, +/* 21021 */ {(12<<2)|2,{32,65,0}}, +/* 21022 */ {(12<<2)|2,{32,65,0}}, +/* 21023 */ {(12<<2)|2,{32,65,0}}, +/* 21024 */ {(12<<2)|2,{32,95,0}}, +/* 21025 */ {(12<<2)|2,{32,95,0}}, +/* 21026 */ {(12<<2)|2,{32,95,0}}, +/* 21027 */ {(12<<2)|2,{32,95,0}}, +/* 21028 */ {(12<<2)|2,{32,95,0}}, +/* 21029 */ {(12<<2)|2,{32,95,0}}, +/* 21030 */ {(12<<2)|2,{32,95,0}}, +/* 21031 */ {(12<<2)|2,{32,95,0}}, +/* 21032 */ {(12<<2)|2,{32,95,0}}, +/* 21033 */ {(12<<2)|2,{32,95,0}}, +/* 21034 */ {(12<<2)|2,{32,95,0}}, +/* 21035 */ {(12<<2)|2,{32,95,0}}, +/* 21036 */ {(12<<2)|2,{32,95,0}}, +/* 21037 */ {(12<<2)|2,{32,95,0}}, +/* 21038 */ {(12<<2)|2,{32,95,0}}, +/* 21039 */ {(12<<2)|2,{32,95,0}}, +/* 21040 */ {(12<<2)|2,{32,98,0}}, +/* 21041 */ {(12<<2)|2,{32,98,0}}, +/* 21042 */ {(12<<2)|2,{32,98,0}}, +/* 21043 */ {(12<<2)|2,{32,98,0}}, +/* 21044 */ {(12<<2)|2,{32,98,0}}, +/* 21045 */ {(12<<2)|2,{32,98,0}}, +/* 21046 */ {(12<<2)|2,{32,98,0}}, +/* 21047 */ {(12<<2)|2,{32,98,0}}, +/* 21048 */ {(12<<2)|2,{32,98,0}}, +/* 21049 */ {(12<<2)|2,{32,98,0}}, +/* 21050 */ {(12<<2)|2,{32,98,0}}, +/* 21051 */ {(12<<2)|2,{32,98,0}}, +/* 21052 */ {(12<<2)|2,{32,98,0}}, +/* 21053 */ {(12<<2)|2,{32,98,0}}, +/* 21054 */ {(12<<2)|2,{32,98,0}}, +/* 21055 */ {(12<<2)|2,{32,98,0}}, +/* 21056 */ {(12<<2)|2,{32,100,0}}, +/* 21057 */ {(12<<2)|2,{32,100,0}}, +/* 21058 */ {(12<<2)|2,{32,100,0}}, +/* 21059 */ {(12<<2)|2,{32,100,0}}, +/* 21060 */ {(12<<2)|2,{32,100,0}}, +/* 21061 */ {(12<<2)|2,{32,100,0}}, +/* 21062 */ {(12<<2)|2,{32,100,0}}, +/* 21063 */ {(12<<2)|2,{32,100,0}}, +/* 21064 */ {(12<<2)|2,{32,100,0}}, +/* 21065 */ {(12<<2)|2,{32,100,0}}, +/* 21066 */ {(12<<2)|2,{32,100,0}}, +/* 21067 */ {(12<<2)|2,{32,100,0}}, +/* 21068 */ {(12<<2)|2,{32,100,0}}, +/* 21069 */ {(12<<2)|2,{32,100,0}}, +/* 21070 */ {(12<<2)|2,{32,100,0}}, +/* 21071 */ {(12<<2)|2,{32,100,0}}, +/* 21072 */ {(12<<2)|2,{32,102,0}}, +/* 21073 */ {(12<<2)|2,{32,102,0}}, +/* 21074 */ {(12<<2)|2,{32,102,0}}, +/* 21075 */ {(12<<2)|2,{32,102,0}}, +/* 21076 */ {(12<<2)|2,{32,102,0}}, +/* 21077 */ {(12<<2)|2,{32,102,0}}, +/* 21078 */ {(12<<2)|2,{32,102,0}}, +/* 21079 */ {(12<<2)|2,{32,102,0}}, +/* 21080 */ {(12<<2)|2,{32,102,0}}, +/* 21081 */ {(12<<2)|2,{32,102,0}}, +/* 21082 */ {(12<<2)|2,{32,102,0}}, +/* 21083 */ {(12<<2)|2,{32,102,0}}, +/* 21084 */ {(12<<2)|2,{32,102,0}}, +/* 21085 */ {(12<<2)|2,{32,102,0}}, +/* 21086 */ {(12<<2)|2,{32,102,0}}, +/* 21087 */ {(12<<2)|2,{32,102,0}}, +/* 21088 */ {(12<<2)|2,{32,103,0}}, +/* 21089 */ {(12<<2)|2,{32,103,0}}, +/* 21090 */ {(12<<2)|2,{32,103,0}}, +/* 21091 */ {(12<<2)|2,{32,103,0}}, +/* 21092 */ {(12<<2)|2,{32,103,0}}, +/* 21093 */ {(12<<2)|2,{32,103,0}}, +/* 21094 */ {(12<<2)|2,{32,103,0}}, +/* 21095 */ {(12<<2)|2,{32,103,0}}, +/* 21096 */ {(12<<2)|2,{32,103,0}}, +/* 21097 */ {(12<<2)|2,{32,103,0}}, +/* 21098 */ {(12<<2)|2,{32,103,0}}, +/* 21099 */ {(12<<2)|2,{32,103,0}}, +/* 21100 */ {(12<<2)|2,{32,103,0}}, +/* 21101 */ {(12<<2)|2,{32,103,0}}, +/* 21102 */ {(12<<2)|2,{32,103,0}}, +/* 21103 */ {(12<<2)|2,{32,103,0}}, +/* 21104 */ {(12<<2)|2,{32,104,0}}, +/* 21105 */ {(12<<2)|2,{32,104,0}}, +/* 21106 */ {(12<<2)|2,{32,104,0}}, +/* 21107 */ {(12<<2)|2,{32,104,0}}, +/* 21108 */ {(12<<2)|2,{32,104,0}}, +/* 21109 */ {(12<<2)|2,{32,104,0}}, +/* 21110 */ {(12<<2)|2,{32,104,0}}, +/* 21111 */ {(12<<2)|2,{32,104,0}}, +/* 21112 */ {(12<<2)|2,{32,104,0}}, +/* 21113 */ {(12<<2)|2,{32,104,0}}, +/* 21114 */ {(12<<2)|2,{32,104,0}}, +/* 21115 */ {(12<<2)|2,{32,104,0}}, +/* 21116 */ {(12<<2)|2,{32,104,0}}, +/* 21117 */ {(12<<2)|2,{32,104,0}}, +/* 21118 */ {(12<<2)|2,{32,104,0}}, +/* 21119 */ {(12<<2)|2,{32,104,0}}, +/* 21120 */ {(12<<2)|2,{32,108,0}}, +/* 21121 */ {(12<<2)|2,{32,108,0}}, +/* 21122 */ {(12<<2)|2,{32,108,0}}, +/* 21123 */ {(12<<2)|2,{32,108,0}}, +/* 21124 */ {(12<<2)|2,{32,108,0}}, +/* 21125 */ {(12<<2)|2,{32,108,0}}, +/* 21126 */ {(12<<2)|2,{32,108,0}}, +/* 21127 */ {(12<<2)|2,{32,108,0}}, +/* 21128 */ {(12<<2)|2,{32,108,0}}, +/* 21129 */ {(12<<2)|2,{32,108,0}}, +/* 21130 */ {(12<<2)|2,{32,108,0}}, +/* 21131 */ {(12<<2)|2,{32,108,0}}, +/* 21132 */ {(12<<2)|2,{32,108,0}}, +/* 21133 */ {(12<<2)|2,{32,108,0}}, +/* 21134 */ {(12<<2)|2,{32,108,0}}, +/* 21135 */ {(12<<2)|2,{32,108,0}}, +/* 21136 */ {(12<<2)|2,{32,109,0}}, +/* 21137 */ {(12<<2)|2,{32,109,0}}, +/* 21138 */ {(12<<2)|2,{32,109,0}}, +/* 21139 */ {(12<<2)|2,{32,109,0}}, +/* 21140 */ {(12<<2)|2,{32,109,0}}, +/* 21141 */ {(12<<2)|2,{32,109,0}}, +/* 21142 */ {(12<<2)|2,{32,109,0}}, +/* 21143 */ {(12<<2)|2,{32,109,0}}, +/* 21144 */ {(12<<2)|2,{32,109,0}}, +/* 21145 */ {(12<<2)|2,{32,109,0}}, +/* 21146 */ {(12<<2)|2,{32,109,0}}, +/* 21147 */ {(12<<2)|2,{32,109,0}}, +/* 21148 */ {(12<<2)|2,{32,109,0}}, +/* 21149 */ {(12<<2)|2,{32,109,0}}, +/* 21150 */ {(12<<2)|2,{32,109,0}}, +/* 21151 */ {(12<<2)|2,{32,109,0}}, +/* 21152 */ {(12<<2)|2,{32,110,0}}, +/* 21153 */ {(12<<2)|2,{32,110,0}}, +/* 21154 */ {(12<<2)|2,{32,110,0}}, +/* 21155 */ {(12<<2)|2,{32,110,0}}, +/* 21156 */ {(12<<2)|2,{32,110,0}}, +/* 21157 */ {(12<<2)|2,{32,110,0}}, +/* 21158 */ {(12<<2)|2,{32,110,0}}, +/* 21159 */ {(12<<2)|2,{32,110,0}}, +/* 21160 */ {(12<<2)|2,{32,110,0}}, +/* 21161 */ {(12<<2)|2,{32,110,0}}, +/* 21162 */ {(12<<2)|2,{32,110,0}}, +/* 21163 */ {(12<<2)|2,{32,110,0}}, +/* 21164 */ {(12<<2)|2,{32,110,0}}, +/* 21165 */ {(12<<2)|2,{32,110,0}}, +/* 21166 */ {(12<<2)|2,{32,110,0}}, +/* 21167 */ {(12<<2)|2,{32,110,0}}, +/* 21168 */ {(12<<2)|2,{32,112,0}}, +/* 21169 */ {(12<<2)|2,{32,112,0}}, +/* 21170 */ {(12<<2)|2,{32,112,0}}, +/* 21171 */ {(12<<2)|2,{32,112,0}}, +/* 21172 */ {(12<<2)|2,{32,112,0}}, +/* 21173 */ {(12<<2)|2,{32,112,0}}, +/* 21174 */ {(12<<2)|2,{32,112,0}}, +/* 21175 */ {(12<<2)|2,{32,112,0}}, +/* 21176 */ {(12<<2)|2,{32,112,0}}, +/* 21177 */ {(12<<2)|2,{32,112,0}}, +/* 21178 */ {(12<<2)|2,{32,112,0}}, +/* 21179 */ {(12<<2)|2,{32,112,0}}, +/* 21180 */ {(12<<2)|2,{32,112,0}}, +/* 21181 */ {(12<<2)|2,{32,112,0}}, +/* 21182 */ {(12<<2)|2,{32,112,0}}, +/* 21183 */ {(12<<2)|2,{32,112,0}}, +/* 21184 */ {(12<<2)|2,{32,114,0}}, +/* 21185 */ {(12<<2)|2,{32,114,0}}, +/* 21186 */ {(12<<2)|2,{32,114,0}}, +/* 21187 */ {(12<<2)|2,{32,114,0}}, +/* 21188 */ {(12<<2)|2,{32,114,0}}, +/* 21189 */ {(12<<2)|2,{32,114,0}}, +/* 21190 */ {(12<<2)|2,{32,114,0}}, +/* 21191 */ {(12<<2)|2,{32,114,0}}, +/* 21192 */ {(12<<2)|2,{32,114,0}}, +/* 21193 */ {(12<<2)|2,{32,114,0}}, +/* 21194 */ {(12<<2)|2,{32,114,0}}, +/* 21195 */ {(12<<2)|2,{32,114,0}}, +/* 21196 */ {(12<<2)|2,{32,114,0}}, +/* 21197 */ {(12<<2)|2,{32,114,0}}, +/* 21198 */ {(12<<2)|2,{32,114,0}}, +/* 21199 */ {(12<<2)|2,{32,114,0}}, +/* 21200 */ {(12<<2)|2,{32,117,0}}, +/* 21201 */ {(12<<2)|2,{32,117,0}}, +/* 21202 */ {(12<<2)|2,{32,117,0}}, +/* 21203 */ {(12<<2)|2,{32,117,0}}, +/* 21204 */ {(12<<2)|2,{32,117,0}}, +/* 21205 */ {(12<<2)|2,{32,117,0}}, +/* 21206 */ {(12<<2)|2,{32,117,0}}, +/* 21207 */ {(12<<2)|2,{32,117,0}}, +/* 21208 */ {(12<<2)|2,{32,117,0}}, +/* 21209 */ {(12<<2)|2,{32,117,0}}, +/* 21210 */ {(12<<2)|2,{32,117,0}}, +/* 21211 */ {(12<<2)|2,{32,117,0}}, +/* 21212 */ {(12<<2)|2,{32,117,0}}, +/* 21213 */ {(12<<2)|2,{32,117,0}}, +/* 21214 */ {(12<<2)|2,{32,117,0}}, +/* 21215 */ {(12<<2)|2,{32,117,0}}, +/* 21216 */ {(13<<2)|2,{32,58,0}}, +/* 21217 */ {(13<<2)|2,{32,58,0}}, +/* 21218 */ {(13<<2)|2,{32,58,0}}, +/* 21219 */ {(13<<2)|2,{32,58,0}}, +/* 21220 */ {(13<<2)|2,{32,58,0}}, +/* 21221 */ {(13<<2)|2,{32,58,0}}, +/* 21222 */ {(13<<2)|2,{32,58,0}}, +/* 21223 */ {(13<<2)|2,{32,58,0}}, +/* 21224 */ {(13<<2)|2,{32,66,0}}, +/* 21225 */ {(13<<2)|2,{32,66,0}}, +/* 21226 */ {(13<<2)|2,{32,66,0}}, +/* 21227 */ {(13<<2)|2,{32,66,0}}, +/* 21228 */ {(13<<2)|2,{32,66,0}}, +/* 21229 */ {(13<<2)|2,{32,66,0}}, +/* 21230 */ {(13<<2)|2,{32,66,0}}, +/* 21231 */ {(13<<2)|2,{32,66,0}}, +/* 21232 */ {(13<<2)|2,{32,67,0}}, +/* 21233 */ {(13<<2)|2,{32,67,0}}, +/* 21234 */ {(13<<2)|2,{32,67,0}}, +/* 21235 */ {(13<<2)|2,{32,67,0}}, +/* 21236 */ {(13<<2)|2,{32,67,0}}, +/* 21237 */ {(13<<2)|2,{32,67,0}}, +/* 21238 */ {(13<<2)|2,{32,67,0}}, +/* 21239 */ {(13<<2)|2,{32,67,0}}, +/* 21240 */ {(13<<2)|2,{32,68,0}}, +/* 21241 */ {(13<<2)|2,{32,68,0}}, +/* 21242 */ {(13<<2)|2,{32,68,0}}, +/* 21243 */ {(13<<2)|2,{32,68,0}}, +/* 21244 */ {(13<<2)|2,{32,68,0}}, +/* 21245 */ {(13<<2)|2,{32,68,0}}, +/* 21246 */ {(13<<2)|2,{32,68,0}}, +/* 21247 */ {(13<<2)|2,{32,68,0}}, +/* 21248 */ {(13<<2)|2,{32,69,0}}, +/* 21249 */ {(13<<2)|2,{32,69,0}}, +/* 21250 */ {(13<<2)|2,{32,69,0}}, +/* 21251 */ {(13<<2)|2,{32,69,0}}, +/* 21252 */ {(13<<2)|2,{32,69,0}}, +/* 21253 */ {(13<<2)|2,{32,69,0}}, +/* 21254 */ {(13<<2)|2,{32,69,0}}, +/* 21255 */ {(13<<2)|2,{32,69,0}}, +/* 21256 */ {(13<<2)|2,{32,70,0}}, +/* 21257 */ {(13<<2)|2,{32,70,0}}, +/* 21258 */ {(13<<2)|2,{32,70,0}}, +/* 21259 */ {(13<<2)|2,{32,70,0}}, +/* 21260 */ {(13<<2)|2,{32,70,0}}, +/* 21261 */ {(13<<2)|2,{32,70,0}}, +/* 21262 */ {(13<<2)|2,{32,70,0}}, +/* 21263 */ {(13<<2)|2,{32,70,0}}, +/* 21264 */ {(13<<2)|2,{32,71,0}}, +/* 21265 */ {(13<<2)|2,{32,71,0}}, +/* 21266 */ {(13<<2)|2,{32,71,0}}, +/* 21267 */ {(13<<2)|2,{32,71,0}}, +/* 21268 */ {(13<<2)|2,{32,71,0}}, +/* 21269 */ {(13<<2)|2,{32,71,0}}, +/* 21270 */ {(13<<2)|2,{32,71,0}}, +/* 21271 */ {(13<<2)|2,{32,71,0}}, +/* 21272 */ {(13<<2)|2,{32,72,0}}, +/* 21273 */ {(13<<2)|2,{32,72,0}}, +/* 21274 */ {(13<<2)|2,{32,72,0}}, +/* 21275 */ {(13<<2)|2,{32,72,0}}, +/* 21276 */ {(13<<2)|2,{32,72,0}}, +/* 21277 */ {(13<<2)|2,{32,72,0}}, +/* 21278 */ {(13<<2)|2,{32,72,0}}, +/* 21279 */ {(13<<2)|2,{32,72,0}}, +/* 21280 */ {(13<<2)|2,{32,73,0}}, +/* 21281 */ {(13<<2)|2,{32,73,0}}, +/* 21282 */ {(13<<2)|2,{32,73,0}}, +/* 21283 */ {(13<<2)|2,{32,73,0}}, +/* 21284 */ {(13<<2)|2,{32,73,0}}, +/* 21285 */ {(13<<2)|2,{32,73,0}}, +/* 21286 */ {(13<<2)|2,{32,73,0}}, +/* 21287 */ {(13<<2)|2,{32,73,0}}, +/* 21288 */ {(13<<2)|2,{32,74,0}}, +/* 21289 */ {(13<<2)|2,{32,74,0}}, +/* 21290 */ {(13<<2)|2,{32,74,0}}, +/* 21291 */ {(13<<2)|2,{32,74,0}}, +/* 21292 */ {(13<<2)|2,{32,74,0}}, +/* 21293 */ {(13<<2)|2,{32,74,0}}, +/* 21294 */ {(13<<2)|2,{32,74,0}}, +/* 21295 */ {(13<<2)|2,{32,74,0}}, +/* 21296 */ {(13<<2)|2,{32,75,0}}, +/* 21297 */ {(13<<2)|2,{32,75,0}}, +/* 21298 */ {(13<<2)|2,{32,75,0}}, +/* 21299 */ {(13<<2)|2,{32,75,0}}, +/* 21300 */ {(13<<2)|2,{32,75,0}}, +/* 21301 */ {(13<<2)|2,{32,75,0}}, +/* 21302 */ {(13<<2)|2,{32,75,0}}, +/* 21303 */ {(13<<2)|2,{32,75,0}}, +/* 21304 */ {(13<<2)|2,{32,76,0}}, +/* 21305 */ {(13<<2)|2,{32,76,0}}, +/* 21306 */ {(13<<2)|2,{32,76,0}}, +/* 21307 */ {(13<<2)|2,{32,76,0}}, +/* 21308 */ {(13<<2)|2,{32,76,0}}, +/* 21309 */ {(13<<2)|2,{32,76,0}}, +/* 21310 */ {(13<<2)|2,{32,76,0}}, +/* 21311 */ {(13<<2)|2,{32,76,0}}, +/* 21312 */ {(13<<2)|2,{32,77,0}}, +/* 21313 */ {(13<<2)|2,{32,77,0}}, +/* 21314 */ {(13<<2)|2,{32,77,0}}, +/* 21315 */ {(13<<2)|2,{32,77,0}}, +/* 21316 */ {(13<<2)|2,{32,77,0}}, +/* 21317 */ {(13<<2)|2,{32,77,0}}, +/* 21318 */ {(13<<2)|2,{32,77,0}}, +/* 21319 */ {(13<<2)|2,{32,77,0}}, +/* 21320 */ {(13<<2)|2,{32,78,0}}, +/* 21321 */ {(13<<2)|2,{32,78,0}}, +/* 21322 */ {(13<<2)|2,{32,78,0}}, +/* 21323 */ {(13<<2)|2,{32,78,0}}, +/* 21324 */ {(13<<2)|2,{32,78,0}}, +/* 21325 */ {(13<<2)|2,{32,78,0}}, +/* 21326 */ {(13<<2)|2,{32,78,0}}, +/* 21327 */ {(13<<2)|2,{32,78,0}}, +/* 21328 */ {(13<<2)|2,{32,79,0}}, +/* 21329 */ {(13<<2)|2,{32,79,0}}, +/* 21330 */ {(13<<2)|2,{32,79,0}}, +/* 21331 */ {(13<<2)|2,{32,79,0}}, +/* 21332 */ {(13<<2)|2,{32,79,0}}, +/* 21333 */ {(13<<2)|2,{32,79,0}}, +/* 21334 */ {(13<<2)|2,{32,79,0}}, +/* 21335 */ {(13<<2)|2,{32,79,0}}, +/* 21336 */ {(13<<2)|2,{32,80,0}}, +/* 21337 */ {(13<<2)|2,{32,80,0}}, +/* 21338 */ {(13<<2)|2,{32,80,0}}, +/* 21339 */ {(13<<2)|2,{32,80,0}}, +/* 21340 */ {(13<<2)|2,{32,80,0}}, +/* 21341 */ {(13<<2)|2,{32,80,0}}, +/* 21342 */ {(13<<2)|2,{32,80,0}}, +/* 21343 */ {(13<<2)|2,{32,80,0}}, +/* 21344 */ {(13<<2)|2,{32,81,0}}, +/* 21345 */ {(13<<2)|2,{32,81,0}}, +/* 21346 */ {(13<<2)|2,{32,81,0}}, +/* 21347 */ {(13<<2)|2,{32,81,0}}, +/* 21348 */ {(13<<2)|2,{32,81,0}}, +/* 21349 */ {(13<<2)|2,{32,81,0}}, +/* 21350 */ {(13<<2)|2,{32,81,0}}, +/* 21351 */ {(13<<2)|2,{32,81,0}}, +/* 21352 */ {(13<<2)|2,{32,82,0}}, +/* 21353 */ {(13<<2)|2,{32,82,0}}, +/* 21354 */ {(13<<2)|2,{32,82,0}}, +/* 21355 */ {(13<<2)|2,{32,82,0}}, +/* 21356 */ {(13<<2)|2,{32,82,0}}, +/* 21357 */ {(13<<2)|2,{32,82,0}}, +/* 21358 */ {(13<<2)|2,{32,82,0}}, +/* 21359 */ {(13<<2)|2,{32,82,0}}, +/* 21360 */ {(13<<2)|2,{32,83,0}}, +/* 21361 */ {(13<<2)|2,{32,83,0}}, +/* 21362 */ {(13<<2)|2,{32,83,0}}, +/* 21363 */ {(13<<2)|2,{32,83,0}}, +/* 21364 */ {(13<<2)|2,{32,83,0}}, +/* 21365 */ {(13<<2)|2,{32,83,0}}, +/* 21366 */ {(13<<2)|2,{32,83,0}}, +/* 21367 */ {(13<<2)|2,{32,83,0}}, +/* 21368 */ {(13<<2)|2,{32,84,0}}, +/* 21369 */ {(13<<2)|2,{32,84,0}}, +/* 21370 */ {(13<<2)|2,{32,84,0}}, +/* 21371 */ {(13<<2)|2,{32,84,0}}, +/* 21372 */ {(13<<2)|2,{32,84,0}}, +/* 21373 */ {(13<<2)|2,{32,84,0}}, +/* 21374 */ {(13<<2)|2,{32,84,0}}, +/* 21375 */ {(13<<2)|2,{32,84,0}}, +/* 21376 */ {(13<<2)|2,{32,85,0}}, +/* 21377 */ {(13<<2)|2,{32,85,0}}, +/* 21378 */ {(13<<2)|2,{32,85,0}}, +/* 21379 */ {(13<<2)|2,{32,85,0}}, +/* 21380 */ {(13<<2)|2,{32,85,0}}, +/* 21381 */ {(13<<2)|2,{32,85,0}}, +/* 21382 */ {(13<<2)|2,{32,85,0}}, +/* 21383 */ {(13<<2)|2,{32,85,0}}, +/* 21384 */ {(13<<2)|2,{32,86,0}}, +/* 21385 */ {(13<<2)|2,{32,86,0}}, +/* 21386 */ {(13<<2)|2,{32,86,0}}, +/* 21387 */ {(13<<2)|2,{32,86,0}}, +/* 21388 */ {(13<<2)|2,{32,86,0}}, +/* 21389 */ {(13<<2)|2,{32,86,0}}, +/* 21390 */ {(13<<2)|2,{32,86,0}}, +/* 21391 */ {(13<<2)|2,{32,86,0}}, +/* 21392 */ {(13<<2)|2,{32,87,0}}, +/* 21393 */ {(13<<2)|2,{32,87,0}}, +/* 21394 */ {(13<<2)|2,{32,87,0}}, +/* 21395 */ {(13<<2)|2,{32,87,0}}, +/* 21396 */ {(13<<2)|2,{32,87,0}}, +/* 21397 */ {(13<<2)|2,{32,87,0}}, +/* 21398 */ {(13<<2)|2,{32,87,0}}, +/* 21399 */ {(13<<2)|2,{32,87,0}}, +/* 21400 */ {(13<<2)|2,{32,89,0}}, +/* 21401 */ {(13<<2)|2,{32,89,0}}, +/* 21402 */ {(13<<2)|2,{32,89,0}}, +/* 21403 */ {(13<<2)|2,{32,89,0}}, +/* 21404 */ {(13<<2)|2,{32,89,0}}, +/* 21405 */ {(13<<2)|2,{32,89,0}}, +/* 21406 */ {(13<<2)|2,{32,89,0}}, +/* 21407 */ {(13<<2)|2,{32,89,0}}, +/* 21408 */ {(13<<2)|2,{32,106,0}}, +/* 21409 */ {(13<<2)|2,{32,106,0}}, +/* 21410 */ {(13<<2)|2,{32,106,0}}, +/* 21411 */ {(13<<2)|2,{32,106,0}}, +/* 21412 */ {(13<<2)|2,{32,106,0}}, +/* 21413 */ {(13<<2)|2,{32,106,0}}, +/* 21414 */ {(13<<2)|2,{32,106,0}}, +/* 21415 */ {(13<<2)|2,{32,106,0}}, +/* 21416 */ {(13<<2)|2,{32,107,0}}, +/* 21417 */ {(13<<2)|2,{32,107,0}}, +/* 21418 */ {(13<<2)|2,{32,107,0}}, +/* 21419 */ {(13<<2)|2,{32,107,0}}, +/* 21420 */ {(13<<2)|2,{32,107,0}}, +/* 21421 */ {(13<<2)|2,{32,107,0}}, +/* 21422 */ {(13<<2)|2,{32,107,0}}, +/* 21423 */ {(13<<2)|2,{32,107,0}}, +/* 21424 */ {(13<<2)|2,{32,113,0}}, +/* 21425 */ {(13<<2)|2,{32,113,0}}, +/* 21426 */ {(13<<2)|2,{32,113,0}}, +/* 21427 */ {(13<<2)|2,{32,113,0}}, +/* 21428 */ {(13<<2)|2,{32,113,0}}, +/* 21429 */ {(13<<2)|2,{32,113,0}}, +/* 21430 */ {(13<<2)|2,{32,113,0}}, +/* 21431 */ {(13<<2)|2,{32,113,0}}, +/* 21432 */ {(13<<2)|2,{32,118,0}}, +/* 21433 */ {(13<<2)|2,{32,118,0}}, +/* 21434 */ {(13<<2)|2,{32,118,0}}, +/* 21435 */ {(13<<2)|2,{32,118,0}}, +/* 21436 */ {(13<<2)|2,{32,118,0}}, +/* 21437 */ {(13<<2)|2,{32,118,0}}, +/* 21438 */ {(13<<2)|2,{32,118,0}}, +/* 21439 */ {(13<<2)|2,{32,118,0}}, +/* 21440 */ {(13<<2)|2,{32,119,0}}, +/* 21441 */ {(13<<2)|2,{32,119,0}}, +/* 21442 */ {(13<<2)|2,{32,119,0}}, +/* 21443 */ {(13<<2)|2,{32,119,0}}, +/* 21444 */ {(13<<2)|2,{32,119,0}}, +/* 21445 */ {(13<<2)|2,{32,119,0}}, +/* 21446 */ {(13<<2)|2,{32,119,0}}, +/* 21447 */ {(13<<2)|2,{32,119,0}}, +/* 21448 */ {(13<<2)|2,{32,120,0}}, +/* 21449 */ {(13<<2)|2,{32,120,0}}, +/* 21450 */ {(13<<2)|2,{32,120,0}}, +/* 21451 */ {(13<<2)|2,{32,120,0}}, +/* 21452 */ {(13<<2)|2,{32,120,0}}, +/* 21453 */ {(13<<2)|2,{32,120,0}}, +/* 21454 */ {(13<<2)|2,{32,120,0}}, +/* 21455 */ {(13<<2)|2,{32,120,0}}, +/* 21456 */ {(13<<2)|2,{32,121,0}}, +/* 21457 */ {(13<<2)|2,{32,121,0}}, +/* 21458 */ {(13<<2)|2,{32,121,0}}, +/* 21459 */ {(13<<2)|2,{32,121,0}}, +/* 21460 */ {(13<<2)|2,{32,121,0}}, +/* 21461 */ {(13<<2)|2,{32,121,0}}, +/* 21462 */ {(13<<2)|2,{32,121,0}}, +/* 21463 */ {(13<<2)|2,{32,121,0}}, +/* 21464 */ {(13<<2)|2,{32,122,0}}, +/* 21465 */ {(13<<2)|2,{32,122,0}}, +/* 21466 */ {(13<<2)|2,{32,122,0}}, +/* 21467 */ {(13<<2)|2,{32,122,0}}, +/* 21468 */ {(13<<2)|2,{32,122,0}}, +/* 21469 */ {(13<<2)|2,{32,122,0}}, +/* 21470 */ {(13<<2)|2,{32,122,0}}, +/* 21471 */ {(13<<2)|2,{32,122,0}}, +/* 21472 */ {(14<<2)|2,{32,38,0}}, +/* 21473 */ {(14<<2)|2,{32,38,0}}, +/* 21474 */ {(14<<2)|2,{32,38,0}}, +/* 21475 */ {(14<<2)|2,{32,38,0}}, +/* 21476 */ {(14<<2)|2,{32,42,0}}, +/* 21477 */ {(14<<2)|2,{32,42,0}}, +/* 21478 */ {(14<<2)|2,{32,42,0}}, +/* 21479 */ {(14<<2)|2,{32,42,0}}, +/* 21480 */ {(14<<2)|2,{32,44,0}}, +/* 21481 */ {(14<<2)|2,{32,44,0}}, +/* 21482 */ {(14<<2)|2,{32,44,0}}, +/* 21483 */ {(14<<2)|2,{32,44,0}}, +/* 21484 */ {(14<<2)|2,{32,59,0}}, +/* 21485 */ {(14<<2)|2,{32,59,0}}, +/* 21486 */ {(14<<2)|2,{32,59,0}}, +/* 21487 */ {(14<<2)|2,{32,59,0}}, +/* 21488 */ {(14<<2)|2,{32,88,0}}, +/* 21489 */ {(14<<2)|2,{32,88,0}}, +/* 21490 */ {(14<<2)|2,{32,88,0}}, +/* 21491 */ {(14<<2)|2,{32,88,0}}, +/* 21492 */ {(14<<2)|2,{32,90,0}}, +/* 21493 */ {(14<<2)|2,{32,90,0}}, +/* 21494 */ {(14<<2)|2,{32,90,0}}, +/* 21495 */ {(14<<2)|2,{32,90,0}}, +/* 21496 */ {(16<<2)|2,{32,33,0}}, +/* 21497 */ {(16<<2)|2,{32,34,0}}, +/* 21498 */ {(16<<2)|2,{32,40,0}}, +/* 21499 */ {(16<<2)|2,{32,41,0}}, +/* 21500 */ {(16<<2)|2,{32,63,0}}, +/* 21501 */ {(6<<2)|1,{32,0,0}}, +/* 21502 */ {(6<<2)|1,{32,0,0}}, +/* 21503 */ {(6<<2)|1,{32,0,0}}, +/* 21504 */ {(16<<2)|3,{37,48,48}}, +/* 21505 */ {(16<<2)|3,{37,48,49}}, +/* 21506 */ {(16<<2)|3,{37,48,50}}, +/* 21507 */ {(16<<2)|3,{37,48,97}}, +/* 21508 */ {(16<<2)|3,{37,48,99}}, +/* 21509 */ {(16<<2)|3,{37,48,101}}, +/* 21510 */ {(16<<2)|3,{37,48,105}}, +/* 21511 */ {(16<<2)|3,{37,48,111}}, +/* 21512 */ {(16<<2)|3,{37,48,115}}, +/* 21513 */ {(16<<2)|3,{37,48,116}}, +/* 21514 */ {(11<<2)|2,{37,48,0}}, +/* 21515 */ {(11<<2)|2,{37,48,0}}, +/* 21516 */ {(11<<2)|2,{37,48,0}}, +/* 21517 */ {(11<<2)|2,{37,48,0}}, +/* 21518 */ {(11<<2)|2,{37,48,0}}, +/* 21519 */ {(11<<2)|2,{37,48,0}}, +/* 21520 */ {(11<<2)|2,{37,48,0}}, +/* 21521 */ {(11<<2)|2,{37,48,0}}, +/* 21522 */ {(11<<2)|2,{37,48,0}}, +/* 21523 */ {(11<<2)|2,{37,48,0}}, +/* 21524 */ {(11<<2)|2,{37,48,0}}, +/* 21525 */ {(11<<2)|2,{37,48,0}}, +/* 21526 */ {(11<<2)|2,{37,48,0}}, +/* 21527 */ {(11<<2)|2,{37,48,0}}, +/* 21528 */ {(11<<2)|2,{37,48,0}}, +/* 21529 */ {(11<<2)|2,{37,48,0}}, +/* 21530 */ {(11<<2)|2,{37,48,0}}, +/* 21531 */ {(11<<2)|2,{37,48,0}}, +/* 21532 */ {(11<<2)|2,{37,48,0}}, +/* 21533 */ {(11<<2)|2,{37,48,0}}, +/* 21534 */ {(11<<2)|2,{37,48,0}}, +/* 21535 */ {(11<<2)|2,{37,48,0}}, +/* 21536 */ {(16<<2)|3,{37,49,48}}, +/* 21537 */ {(16<<2)|3,{37,49,49}}, +/* 21538 */ {(16<<2)|3,{37,49,50}}, +/* 21539 */ {(16<<2)|3,{37,49,97}}, +/* 21540 */ {(16<<2)|3,{37,49,99}}, +/* 21541 */ {(16<<2)|3,{37,49,101}}, +/* 21542 */ {(16<<2)|3,{37,49,105}}, +/* 21543 */ {(16<<2)|3,{37,49,111}}, +/* 21544 */ {(16<<2)|3,{37,49,115}}, +/* 21545 */ {(16<<2)|3,{37,49,116}}, +/* 21546 */ {(11<<2)|2,{37,49,0}}, +/* 21547 */ {(11<<2)|2,{37,49,0}}, +/* 21548 */ {(11<<2)|2,{37,49,0}}, +/* 21549 */ {(11<<2)|2,{37,49,0}}, +/* 21550 */ {(11<<2)|2,{37,49,0}}, +/* 21551 */ {(11<<2)|2,{37,49,0}}, +/* 21552 */ {(11<<2)|2,{37,49,0}}, +/* 21553 */ {(11<<2)|2,{37,49,0}}, +/* 21554 */ {(11<<2)|2,{37,49,0}}, +/* 21555 */ {(11<<2)|2,{37,49,0}}, +/* 21556 */ {(11<<2)|2,{37,49,0}}, +/* 21557 */ {(11<<2)|2,{37,49,0}}, +/* 21558 */ {(11<<2)|2,{37,49,0}}, +/* 21559 */ {(11<<2)|2,{37,49,0}}, +/* 21560 */ {(11<<2)|2,{37,49,0}}, +/* 21561 */ {(11<<2)|2,{37,49,0}}, +/* 21562 */ {(11<<2)|2,{37,49,0}}, +/* 21563 */ {(11<<2)|2,{37,49,0}}, +/* 21564 */ {(11<<2)|2,{37,49,0}}, +/* 21565 */ {(11<<2)|2,{37,49,0}}, +/* 21566 */ {(11<<2)|2,{37,49,0}}, +/* 21567 */ {(11<<2)|2,{37,49,0}}, +/* 21568 */ {(16<<2)|3,{37,50,48}}, +/* 21569 */ {(16<<2)|3,{37,50,49}}, +/* 21570 */ {(16<<2)|3,{37,50,50}}, +/* 21571 */ {(16<<2)|3,{37,50,97}}, +/* 21572 */ {(16<<2)|3,{37,50,99}}, +/* 21573 */ {(16<<2)|3,{37,50,101}}, +/* 21574 */ {(16<<2)|3,{37,50,105}}, +/* 21575 */ {(16<<2)|3,{37,50,111}}, +/* 21576 */ {(16<<2)|3,{37,50,115}}, +/* 21577 */ {(16<<2)|3,{37,50,116}}, +/* 21578 */ {(11<<2)|2,{37,50,0}}, +/* 21579 */ {(11<<2)|2,{37,50,0}}, +/* 21580 */ {(11<<2)|2,{37,50,0}}, +/* 21581 */ {(11<<2)|2,{37,50,0}}, +/* 21582 */ {(11<<2)|2,{37,50,0}}, +/* 21583 */ {(11<<2)|2,{37,50,0}}, +/* 21584 */ {(11<<2)|2,{37,50,0}}, +/* 21585 */ {(11<<2)|2,{37,50,0}}, +/* 21586 */ {(11<<2)|2,{37,50,0}}, +/* 21587 */ {(11<<2)|2,{37,50,0}}, +/* 21588 */ {(11<<2)|2,{37,50,0}}, +/* 21589 */ {(11<<2)|2,{37,50,0}}, +/* 21590 */ {(11<<2)|2,{37,50,0}}, +/* 21591 */ {(11<<2)|2,{37,50,0}}, +/* 21592 */ {(11<<2)|2,{37,50,0}}, +/* 21593 */ {(11<<2)|2,{37,50,0}}, +/* 21594 */ {(11<<2)|2,{37,50,0}}, +/* 21595 */ {(11<<2)|2,{37,50,0}}, +/* 21596 */ {(11<<2)|2,{37,50,0}}, +/* 21597 */ {(11<<2)|2,{37,50,0}}, +/* 21598 */ {(11<<2)|2,{37,50,0}}, +/* 21599 */ {(11<<2)|2,{37,50,0}}, +/* 21600 */ {(16<<2)|3,{37,97,48}}, +/* 21601 */ {(16<<2)|3,{37,97,49}}, +/* 21602 */ {(16<<2)|3,{37,97,50}}, +/* 21603 */ {(16<<2)|3,{37,97,97}}, +/* 21604 */ {(16<<2)|3,{37,97,99}}, +/* 21605 */ {(16<<2)|3,{37,97,101}}, +/* 21606 */ {(16<<2)|3,{37,97,105}}, +/* 21607 */ {(16<<2)|3,{37,97,111}}, +/* 21608 */ {(16<<2)|3,{37,97,115}}, +/* 21609 */ {(16<<2)|3,{37,97,116}}, +/* 21610 */ {(11<<2)|2,{37,97,0}}, +/* 21611 */ {(11<<2)|2,{37,97,0}}, +/* 21612 */ {(11<<2)|2,{37,97,0}}, +/* 21613 */ {(11<<2)|2,{37,97,0}}, +/* 21614 */ {(11<<2)|2,{37,97,0}}, +/* 21615 */ {(11<<2)|2,{37,97,0}}, +/* 21616 */ {(11<<2)|2,{37,97,0}}, +/* 21617 */ {(11<<2)|2,{37,97,0}}, +/* 21618 */ {(11<<2)|2,{37,97,0}}, +/* 21619 */ {(11<<2)|2,{37,97,0}}, +/* 21620 */ {(11<<2)|2,{37,97,0}}, +/* 21621 */ {(11<<2)|2,{37,97,0}}, +/* 21622 */ {(11<<2)|2,{37,97,0}}, +/* 21623 */ {(11<<2)|2,{37,97,0}}, +/* 21624 */ {(11<<2)|2,{37,97,0}}, +/* 21625 */ {(11<<2)|2,{37,97,0}}, +/* 21626 */ {(11<<2)|2,{37,97,0}}, +/* 21627 */ {(11<<2)|2,{37,97,0}}, +/* 21628 */ {(11<<2)|2,{37,97,0}}, +/* 21629 */ {(11<<2)|2,{37,97,0}}, +/* 21630 */ {(11<<2)|2,{37,97,0}}, +/* 21631 */ {(11<<2)|2,{37,97,0}}, +/* 21632 */ {(16<<2)|3,{37,99,48}}, +/* 21633 */ {(16<<2)|3,{37,99,49}}, +/* 21634 */ {(16<<2)|3,{37,99,50}}, +/* 21635 */ {(16<<2)|3,{37,99,97}}, +/* 21636 */ {(16<<2)|3,{37,99,99}}, +/* 21637 */ {(16<<2)|3,{37,99,101}}, +/* 21638 */ {(16<<2)|3,{37,99,105}}, +/* 21639 */ {(16<<2)|3,{37,99,111}}, +/* 21640 */ {(16<<2)|3,{37,99,115}}, +/* 21641 */ {(16<<2)|3,{37,99,116}}, +/* 21642 */ {(11<<2)|2,{37,99,0}}, +/* 21643 */ {(11<<2)|2,{37,99,0}}, +/* 21644 */ {(11<<2)|2,{37,99,0}}, +/* 21645 */ {(11<<2)|2,{37,99,0}}, +/* 21646 */ {(11<<2)|2,{37,99,0}}, +/* 21647 */ {(11<<2)|2,{37,99,0}}, +/* 21648 */ {(11<<2)|2,{37,99,0}}, +/* 21649 */ {(11<<2)|2,{37,99,0}}, +/* 21650 */ {(11<<2)|2,{37,99,0}}, +/* 21651 */ {(11<<2)|2,{37,99,0}}, +/* 21652 */ {(11<<2)|2,{37,99,0}}, +/* 21653 */ {(11<<2)|2,{37,99,0}}, +/* 21654 */ {(11<<2)|2,{37,99,0}}, +/* 21655 */ {(11<<2)|2,{37,99,0}}, +/* 21656 */ {(11<<2)|2,{37,99,0}}, +/* 21657 */ {(11<<2)|2,{37,99,0}}, +/* 21658 */ {(11<<2)|2,{37,99,0}}, +/* 21659 */ {(11<<2)|2,{37,99,0}}, +/* 21660 */ {(11<<2)|2,{37,99,0}}, +/* 21661 */ {(11<<2)|2,{37,99,0}}, +/* 21662 */ {(11<<2)|2,{37,99,0}}, +/* 21663 */ {(11<<2)|2,{37,99,0}}, +/* 21664 */ {(16<<2)|3,{37,101,48}}, +/* 21665 */ {(16<<2)|3,{37,101,49}}, +/* 21666 */ {(16<<2)|3,{37,101,50}}, +/* 21667 */ {(16<<2)|3,{37,101,97}}, +/* 21668 */ {(16<<2)|3,{37,101,99}}, +/* 21669 */ {(16<<2)|3,{37,101,101}}, +/* 21670 */ {(16<<2)|3,{37,101,105}}, +/* 21671 */ {(16<<2)|3,{37,101,111}}, +/* 21672 */ {(16<<2)|3,{37,101,115}}, +/* 21673 */ {(16<<2)|3,{37,101,116}}, +/* 21674 */ {(11<<2)|2,{37,101,0}}, +/* 21675 */ {(11<<2)|2,{37,101,0}}, +/* 21676 */ {(11<<2)|2,{37,101,0}}, +/* 21677 */ {(11<<2)|2,{37,101,0}}, +/* 21678 */ {(11<<2)|2,{37,101,0}}, +/* 21679 */ {(11<<2)|2,{37,101,0}}, +/* 21680 */ {(11<<2)|2,{37,101,0}}, +/* 21681 */ {(11<<2)|2,{37,101,0}}, +/* 21682 */ {(11<<2)|2,{37,101,0}}, +/* 21683 */ {(11<<2)|2,{37,101,0}}, +/* 21684 */ {(11<<2)|2,{37,101,0}}, +/* 21685 */ {(11<<2)|2,{37,101,0}}, +/* 21686 */ {(11<<2)|2,{37,101,0}}, +/* 21687 */ {(11<<2)|2,{37,101,0}}, +/* 21688 */ {(11<<2)|2,{37,101,0}}, +/* 21689 */ {(11<<2)|2,{37,101,0}}, +/* 21690 */ {(11<<2)|2,{37,101,0}}, +/* 21691 */ {(11<<2)|2,{37,101,0}}, +/* 21692 */ {(11<<2)|2,{37,101,0}}, +/* 21693 */ {(11<<2)|2,{37,101,0}}, +/* 21694 */ {(11<<2)|2,{37,101,0}}, +/* 21695 */ {(11<<2)|2,{37,101,0}}, +/* 21696 */ {(16<<2)|3,{37,105,48}}, +/* 21697 */ {(16<<2)|3,{37,105,49}}, +/* 21698 */ {(16<<2)|3,{37,105,50}}, +/* 21699 */ {(16<<2)|3,{37,105,97}}, +/* 21700 */ {(16<<2)|3,{37,105,99}}, +/* 21701 */ {(16<<2)|3,{37,105,101}}, +/* 21702 */ {(16<<2)|3,{37,105,105}}, +/* 21703 */ {(16<<2)|3,{37,105,111}}, +/* 21704 */ {(16<<2)|3,{37,105,115}}, +/* 21705 */ {(16<<2)|3,{37,105,116}}, +/* 21706 */ {(11<<2)|2,{37,105,0}}, +/* 21707 */ {(11<<2)|2,{37,105,0}}, +/* 21708 */ {(11<<2)|2,{37,105,0}}, +/* 21709 */ {(11<<2)|2,{37,105,0}}, +/* 21710 */ {(11<<2)|2,{37,105,0}}, +/* 21711 */ {(11<<2)|2,{37,105,0}}, +/* 21712 */ {(11<<2)|2,{37,105,0}}, +/* 21713 */ {(11<<2)|2,{37,105,0}}, +/* 21714 */ {(11<<2)|2,{37,105,0}}, +/* 21715 */ {(11<<2)|2,{37,105,0}}, +/* 21716 */ {(11<<2)|2,{37,105,0}}, +/* 21717 */ {(11<<2)|2,{37,105,0}}, +/* 21718 */ {(11<<2)|2,{37,105,0}}, +/* 21719 */ {(11<<2)|2,{37,105,0}}, +/* 21720 */ {(11<<2)|2,{37,105,0}}, +/* 21721 */ {(11<<2)|2,{37,105,0}}, +/* 21722 */ {(11<<2)|2,{37,105,0}}, +/* 21723 */ {(11<<2)|2,{37,105,0}}, +/* 21724 */ {(11<<2)|2,{37,105,0}}, +/* 21725 */ {(11<<2)|2,{37,105,0}}, +/* 21726 */ {(11<<2)|2,{37,105,0}}, +/* 21727 */ {(11<<2)|2,{37,105,0}}, +/* 21728 */ {(16<<2)|3,{37,111,48}}, +/* 21729 */ {(16<<2)|3,{37,111,49}}, +/* 21730 */ {(16<<2)|3,{37,111,50}}, +/* 21731 */ {(16<<2)|3,{37,111,97}}, +/* 21732 */ {(16<<2)|3,{37,111,99}}, +/* 21733 */ {(16<<2)|3,{37,111,101}}, +/* 21734 */ {(16<<2)|3,{37,111,105}}, +/* 21735 */ {(16<<2)|3,{37,111,111}}, +/* 21736 */ {(16<<2)|3,{37,111,115}}, +/* 21737 */ {(16<<2)|3,{37,111,116}}, +/* 21738 */ {(11<<2)|2,{37,111,0}}, +/* 21739 */ {(11<<2)|2,{37,111,0}}, +/* 21740 */ {(11<<2)|2,{37,111,0}}, +/* 21741 */ {(11<<2)|2,{37,111,0}}, +/* 21742 */ {(11<<2)|2,{37,111,0}}, +/* 21743 */ {(11<<2)|2,{37,111,0}}, +/* 21744 */ {(11<<2)|2,{37,111,0}}, +/* 21745 */ {(11<<2)|2,{37,111,0}}, +/* 21746 */ {(11<<2)|2,{37,111,0}}, +/* 21747 */ {(11<<2)|2,{37,111,0}}, +/* 21748 */ {(11<<2)|2,{37,111,0}}, +/* 21749 */ {(11<<2)|2,{37,111,0}}, +/* 21750 */ {(11<<2)|2,{37,111,0}}, +/* 21751 */ {(11<<2)|2,{37,111,0}}, +/* 21752 */ {(11<<2)|2,{37,111,0}}, +/* 21753 */ {(11<<2)|2,{37,111,0}}, +/* 21754 */ {(11<<2)|2,{37,111,0}}, +/* 21755 */ {(11<<2)|2,{37,111,0}}, +/* 21756 */ {(11<<2)|2,{37,111,0}}, +/* 21757 */ {(11<<2)|2,{37,111,0}}, +/* 21758 */ {(11<<2)|2,{37,111,0}}, +/* 21759 */ {(11<<2)|2,{37,111,0}}, +/* 21760 */ {(16<<2)|3,{37,115,48}}, +/* 21761 */ {(16<<2)|3,{37,115,49}}, +/* 21762 */ {(16<<2)|3,{37,115,50}}, +/* 21763 */ {(16<<2)|3,{37,115,97}}, +/* 21764 */ {(16<<2)|3,{37,115,99}}, +/* 21765 */ {(16<<2)|3,{37,115,101}}, +/* 21766 */ {(16<<2)|3,{37,115,105}}, +/* 21767 */ {(16<<2)|3,{37,115,111}}, +/* 21768 */ {(16<<2)|3,{37,115,115}}, +/* 21769 */ {(16<<2)|3,{37,115,116}}, +/* 21770 */ {(11<<2)|2,{37,115,0}}, +/* 21771 */ {(11<<2)|2,{37,115,0}}, +/* 21772 */ {(11<<2)|2,{37,115,0}}, +/* 21773 */ {(11<<2)|2,{37,115,0}}, +/* 21774 */ {(11<<2)|2,{37,115,0}}, +/* 21775 */ {(11<<2)|2,{37,115,0}}, +/* 21776 */ {(11<<2)|2,{37,115,0}}, +/* 21777 */ {(11<<2)|2,{37,115,0}}, +/* 21778 */ {(11<<2)|2,{37,115,0}}, +/* 21779 */ {(11<<2)|2,{37,115,0}}, +/* 21780 */ {(11<<2)|2,{37,115,0}}, +/* 21781 */ {(11<<2)|2,{37,115,0}}, +/* 21782 */ {(11<<2)|2,{37,115,0}}, +/* 21783 */ {(11<<2)|2,{37,115,0}}, +/* 21784 */ {(11<<2)|2,{37,115,0}}, +/* 21785 */ {(11<<2)|2,{37,115,0}}, +/* 21786 */ {(11<<2)|2,{37,115,0}}, +/* 21787 */ {(11<<2)|2,{37,115,0}}, +/* 21788 */ {(11<<2)|2,{37,115,0}}, +/* 21789 */ {(11<<2)|2,{37,115,0}}, +/* 21790 */ {(11<<2)|2,{37,115,0}}, +/* 21791 */ {(11<<2)|2,{37,115,0}}, +/* 21792 */ {(16<<2)|3,{37,116,48}}, +/* 21793 */ {(16<<2)|3,{37,116,49}}, +/* 21794 */ {(16<<2)|3,{37,116,50}}, +/* 21795 */ {(16<<2)|3,{37,116,97}}, +/* 21796 */ {(16<<2)|3,{37,116,99}}, +/* 21797 */ {(16<<2)|3,{37,116,101}}, +/* 21798 */ {(16<<2)|3,{37,116,105}}, +/* 21799 */ {(16<<2)|3,{37,116,111}}, +/* 21800 */ {(16<<2)|3,{37,116,115}}, +/* 21801 */ {(16<<2)|3,{37,116,116}}, +/* 21802 */ {(11<<2)|2,{37,116,0}}, +/* 21803 */ {(11<<2)|2,{37,116,0}}, +/* 21804 */ {(11<<2)|2,{37,116,0}}, +/* 21805 */ {(11<<2)|2,{37,116,0}}, +/* 21806 */ {(11<<2)|2,{37,116,0}}, +/* 21807 */ {(11<<2)|2,{37,116,0}}, +/* 21808 */ {(11<<2)|2,{37,116,0}}, +/* 21809 */ {(11<<2)|2,{37,116,0}}, +/* 21810 */ {(11<<2)|2,{37,116,0}}, +/* 21811 */ {(11<<2)|2,{37,116,0}}, +/* 21812 */ {(11<<2)|2,{37,116,0}}, +/* 21813 */ {(11<<2)|2,{37,116,0}}, +/* 21814 */ {(11<<2)|2,{37,116,0}}, +/* 21815 */ {(11<<2)|2,{37,116,0}}, +/* 21816 */ {(11<<2)|2,{37,116,0}}, +/* 21817 */ {(11<<2)|2,{37,116,0}}, +/* 21818 */ {(11<<2)|2,{37,116,0}}, +/* 21819 */ {(11<<2)|2,{37,116,0}}, +/* 21820 */ {(11<<2)|2,{37,116,0}}, +/* 21821 */ {(11<<2)|2,{37,116,0}}, +/* 21822 */ {(11<<2)|2,{37,116,0}}, +/* 21823 */ {(11<<2)|2,{37,116,0}}, +/* 21824 */ {(12<<2)|2,{37,32,0}}, +/* 21825 */ {(12<<2)|2,{37,32,0}}, +/* 21826 */ {(12<<2)|2,{37,32,0}}, +/* 21827 */ {(12<<2)|2,{37,32,0}}, +/* 21828 */ {(12<<2)|2,{37,32,0}}, +/* 21829 */ {(12<<2)|2,{37,32,0}}, +/* 21830 */ {(12<<2)|2,{37,32,0}}, +/* 21831 */ {(12<<2)|2,{37,32,0}}, +/* 21832 */ {(12<<2)|2,{37,32,0}}, +/* 21833 */ {(12<<2)|2,{37,32,0}}, +/* 21834 */ {(12<<2)|2,{37,32,0}}, +/* 21835 */ {(12<<2)|2,{37,32,0}}, +/* 21836 */ {(12<<2)|2,{37,32,0}}, +/* 21837 */ {(12<<2)|2,{37,32,0}}, +/* 21838 */ {(12<<2)|2,{37,32,0}}, +/* 21839 */ {(12<<2)|2,{37,32,0}}, +/* 21840 */ {(12<<2)|2,{37,37,0}}, +/* 21841 */ {(12<<2)|2,{37,37,0}}, +/* 21842 */ {(12<<2)|2,{37,37,0}}, +/* 21843 */ {(12<<2)|2,{37,37,0}}, +/* 21844 */ {(12<<2)|2,{37,37,0}}, +/* 21845 */ {(12<<2)|2,{37,37,0}}, +/* 21846 */ {(12<<2)|2,{37,37,0}}, +/* 21847 */ {(12<<2)|2,{37,37,0}}, +/* 21848 */ {(12<<2)|2,{37,37,0}}, +/* 21849 */ {(12<<2)|2,{37,37,0}}, +/* 21850 */ {(12<<2)|2,{37,37,0}}, +/* 21851 */ {(12<<2)|2,{37,37,0}}, +/* 21852 */ {(12<<2)|2,{37,37,0}}, +/* 21853 */ {(12<<2)|2,{37,37,0}}, +/* 21854 */ {(12<<2)|2,{37,37,0}}, +/* 21855 */ {(12<<2)|2,{37,37,0}}, +/* 21856 */ {(12<<2)|2,{37,45,0}}, +/* 21857 */ {(12<<2)|2,{37,45,0}}, +/* 21858 */ {(12<<2)|2,{37,45,0}}, +/* 21859 */ {(12<<2)|2,{37,45,0}}, +/* 21860 */ {(12<<2)|2,{37,45,0}}, +/* 21861 */ {(12<<2)|2,{37,45,0}}, +/* 21862 */ {(12<<2)|2,{37,45,0}}, +/* 21863 */ {(12<<2)|2,{37,45,0}}, +/* 21864 */ {(12<<2)|2,{37,45,0}}, +/* 21865 */ {(12<<2)|2,{37,45,0}}, +/* 21866 */ {(12<<2)|2,{37,45,0}}, +/* 21867 */ {(12<<2)|2,{37,45,0}}, +/* 21868 */ {(12<<2)|2,{37,45,0}}, +/* 21869 */ {(12<<2)|2,{37,45,0}}, +/* 21870 */ {(12<<2)|2,{37,45,0}}, +/* 21871 */ {(12<<2)|2,{37,45,0}}, +/* 21872 */ {(12<<2)|2,{37,46,0}}, +/* 21873 */ {(12<<2)|2,{37,46,0}}, +/* 21874 */ {(12<<2)|2,{37,46,0}}, +/* 21875 */ {(12<<2)|2,{37,46,0}}, +/* 21876 */ {(12<<2)|2,{37,46,0}}, +/* 21877 */ {(12<<2)|2,{37,46,0}}, +/* 21878 */ {(12<<2)|2,{37,46,0}}, +/* 21879 */ {(12<<2)|2,{37,46,0}}, +/* 21880 */ {(12<<2)|2,{37,46,0}}, +/* 21881 */ {(12<<2)|2,{37,46,0}}, +/* 21882 */ {(12<<2)|2,{37,46,0}}, +/* 21883 */ {(12<<2)|2,{37,46,0}}, +/* 21884 */ {(12<<2)|2,{37,46,0}}, +/* 21885 */ {(12<<2)|2,{37,46,0}}, +/* 21886 */ {(12<<2)|2,{37,46,0}}, +/* 21887 */ {(12<<2)|2,{37,46,0}}, +/* 21888 */ {(12<<2)|2,{37,47,0}}, +/* 21889 */ {(12<<2)|2,{37,47,0}}, +/* 21890 */ {(12<<2)|2,{37,47,0}}, +/* 21891 */ {(12<<2)|2,{37,47,0}}, +/* 21892 */ {(12<<2)|2,{37,47,0}}, +/* 21893 */ {(12<<2)|2,{37,47,0}}, +/* 21894 */ {(12<<2)|2,{37,47,0}}, +/* 21895 */ {(12<<2)|2,{37,47,0}}, +/* 21896 */ {(12<<2)|2,{37,47,0}}, +/* 21897 */ {(12<<2)|2,{37,47,0}}, +/* 21898 */ {(12<<2)|2,{37,47,0}}, +/* 21899 */ {(12<<2)|2,{37,47,0}}, +/* 21900 */ {(12<<2)|2,{37,47,0}}, +/* 21901 */ {(12<<2)|2,{37,47,0}}, +/* 21902 */ {(12<<2)|2,{37,47,0}}, +/* 21903 */ {(12<<2)|2,{37,47,0}}, +/* 21904 */ {(12<<2)|2,{37,51,0}}, +/* 21905 */ {(12<<2)|2,{37,51,0}}, +/* 21906 */ {(12<<2)|2,{37,51,0}}, +/* 21907 */ {(12<<2)|2,{37,51,0}}, +/* 21908 */ {(12<<2)|2,{37,51,0}}, +/* 21909 */ {(12<<2)|2,{37,51,0}}, +/* 21910 */ {(12<<2)|2,{37,51,0}}, +/* 21911 */ {(12<<2)|2,{37,51,0}}, +/* 21912 */ {(12<<2)|2,{37,51,0}}, +/* 21913 */ {(12<<2)|2,{37,51,0}}, +/* 21914 */ {(12<<2)|2,{37,51,0}}, +/* 21915 */ {(12<<2)|2,{37,51,0}}, +/* 21916 */ {(12<<2)|2,{37,51,0}}, +/* 21917 */ {(12<<2)|2,{37,51,0}}, +/* 21918 */ {(12<<2)|2,{37,51,0}}, +/* 21919 */ {(12<<2)|2,{37,51,0}}, +/* 21920 */ {(12<<2)|2,{37,52,0}}, +/* 21921 */ {(12<<2)|2,{37,52,0}}, +/* 21922 */ {(12<<2)|2,{37,52,0}}, +/* 21923 */ {(12<<2)|2,{37,52,0}}, +/* 21924 */ {(12<<2)|2,{37,52,0}}, +/* 21925 */ {(12<<2)|2,{37,52,0}}, +/* 21926 */ {(12<<2)|2,{37,52,0}}, +/* 21927 */ {(12<<2)|2,{37,52,0}}, +/* 21928 */ {(12<<2)|2,{37,52,0}}, +/* 21929 */ {(12<<2)|2,{37,52,0}}, +/* 21930 */ {(12<<2)|2,{37,52,0}}, +/* 21931 */ {(12<<2)|2,{37,52,0}}, +/* 21932 */ {(12<<2)|2,{37,52,0}}, +/* 21933 */ {(12<<2)|2,{37,52,0}}, +/* 21934 */ {(12<<2)|2,{37,52,0}}, +/* 21935 */ {(12<<2)|2,{37,52,0}}, +/* 21936 */ {(12<<2)|2,{37,53,0}}, +/* 21937 */ {(12<<2)|2,{37,53,0}}, +/* 21938 */ {(12<<2)|2,{37,53,0}}, +/* 21939 */ {(12<<2)|2,{37,53,0}}, +/* 21940 */ {(12<<2)|2,{37,53,0}}, +/* 21941 */ {(12<<2)|2,{37,53,0}}, +/* 21942 */ {(12<<2)|2,{37,53,0}}, +/* 21943 */ {(12<<2)|2,{37,53,0}}, +/* 21944 */ {(12<<2)|2,{37,53,0}}, +/* 21945 */ {(12<<2)|2,{37,53,0}}, +/* 21946 */ {(12<<2)|2,{37,53,0}}, +/* 21947 */ {(12<<2)|2,{37,53,0}}, +/* 21948 */ {(12<<2)|2,{37,53,0}}, +/* 21949 */ {(12<<2)|2,{37,53,0}}, +/* 21950 */ {(12<<2)|2,{37,53,0}}, +/* 21951 */ {(12<<2)|2,{37,53,0}}, +/* 21952 */ {(12<<2)|2,{37,54,0}}, +/* 21953 */ {(12<<2)|2,{37,54,0}}, +/* 21954 */ {(12<<2)|2,{37,54,0}}, +/* 21955 */ {(12<<2)|2,{37,54,0}}, +/* 21956 */ {(12<<2)|2,{37,54,0}}, +/* 21957 */ {(12<<2)|2,{37,54,0}}, +/* 21958 */ {(12<<2)|2,{37,54,0}}, +/* 21959 */ {(12<<2)|2,{37,54,0}}, +/* 21960 */ {(12<<2)|2,{37,54,0}}, +/* 21961 */ {(12<<2)|2,{37,54,0}}, +/* 21962 */ {(12<<2)|2,{37,54,0}}, +/* 21963 */ {(12<<2)|2,{37,54,0}}, +/* 21964 */ {(12<<2)|2,{37,54,0}}, +/* 21965 */ {(12<<2)|2,{37,54,0}}, +/* 21966 */ {(12<<2)|2,{37,54,0}}, +/* 21967 */ {(12<<2)|2,{37,54,0}}, +/* 21968 */ {(12<<2)|2,{37,55,0}}, +/* 21969 */ {(12<<2)|2,{37,55,0}}, +/* 21970 */ {(12<<2)|2,{37,55,0}}, +/* 21971 */ {(12<<2)|2,{37,55,0}}, +/* 21972 */ {(12<<2)|2,{37,55,0}}, +/* 21973 */ {(12<<2)|2,{37,55,0}}, +/* 21974 */ {(12<<2)|2,{37,55,0}}, +/* 21975 */ {(12<<2)|2,{37,55,0}}, +/* 21976 */ {(12<<2)|2,{37,55,0}}, +/* 21977 */ {(12<<2)|2,{37,55,0}}, +/* 21978 */ {(12<<2)|2,{37,55,0}}, +/* 21979 */ {(12<<2)|2,{37,55,0}}, +/* 21980 */ {(12<<2)|2,{37,55,0}}, +/* 21981 */ {(12<<2)|2,{37,55,0}}, +/* 21982 */ {(12<<2)|2,{37,55,0}}, +/* 21983 */ {(12<<2)|2,{37,55,0}}, +/* 21984 */ {(12<<2)|2,{37,56,0}}, +/* 21985 */ {(12<<2)|2,{37,56,0}}, +/* 21986 */ {(12<<2)|2,{37,56,0}}, +/* 21987 */ {(12<<2)|2,{37,56,0}}, +/* 21988 */ {(12<<2)|2,{37,56,0}}, +/* 21989 */ {(12<<2)|2,{37,56,0}}, +/* 21990 */ {(12<<2)|2,{37,56,0}}, +/* 21991 */ {(12<<2)|2,{37,56,0}}, +/* 21992 */ {(12<<2)|2,{37,56,0}}, +/* 21993 */ {(12<<2)|2,{37,56,0}}, +/* 21994 */ {(12<<2)|2,{37,56,0}}, +/* 21995 */ {(12<<2)|2,{37,56,0}}, +/* 21996 */ {(12<<2)|2,{37,56,0}}, +/* 21997 */ {(12<<2)|2,{37,56,0}}, +/* 21998 */ {(12<<2)|2,{37,56,0}}, +/* 21999 */ {(12<<2)|2,{37,56,0}}, +/* 22000 */ {(12<<2)|2,{37,57,0}}, +/* 22001 */ {(12<<2)|2,{37,57,0}}, +/* 22002 */ {(12<<2)|2,{37,57,0}}, +/* 22003 */ {(12<<2)|2,{37,57,0}}, +/* 22004 */ {(12<<2)|2,{37,57,0}}, +/* 22005 */ {(12<<2)|2,{37,57,0}}, +/* 22006 */ {(12<<2)|2,{37,57,0}}, +/* 22007 */ {(12<<2)|2,{37,57,0}}, +/* 22008 */ {(12<<2)|2,{37,57,0}}, +/* 22009 */ {(12<<2)|2,{37,57,0}}, +/* 22010 */ {(12<<2)|2,{37,57,0}}, +/* 22011 */ {(12<<2)|2,{37,57,0}}, +/* 22012 */ {(12<<2)|2,{37,57,0}}, +/* 22013 */ {(12<<2)|2,{37,57,0}}, +/* 22014 */ {(12<<2)|2,{37,57,0}}, +/* 22015 */ {(12<<2)|2,{37,57,0}}, +/* 22016 */ {(12<<2)|2,{37,61,0}}, +/* 22017 */ {(12<<2)|2,{37,61,0}}, +/* 22018 */ {(12<<2)|2,{37,61,0}}, +/* 22019 */ {(12<<2)|2,{37,61,0}}, +/* 22020 */ {(12<<2)|2,{37,61,0}}, +/* 22021 */ {(12<<2)|2,{37,61,0}}, +/* 22022 */ {(12<<2)|2,{37,61,0}}, +/* 22023 */ {(12<<2)|2,{37,61,0}}, +/* 22024 */ {(12<<2)|2,{37,61,0}}, +/* 22025 */ {(12<<2)|2,{37,61,0}}, +/* 22026 */ {(12<<2)|2,{37,61,0}}, +/* 22027 */ {(12<<2)|2,{37,61,0}}, +/* 22028 */ {(12<<2)|2,{37,61,0}}, +/* 22029 */ {(12<<2)|2,{37,61,0}}, +/* 22030 */ {(12<<2)|2,{37,61,0}}, +/* 22031 */ {(12<<2)|2,{37,61,0}}, +/* 22032 */ {(12<<2)|2,{37,65,0}}, +/* 22033 */ {(12<<2)|2,{37,65,0}}, +/* 22034 */ {(12<<2)|2,{37,65,0}}, +/* 22035 */ {(12<<2)|2,{37,65,0}}, +/* 22036 */ {(12<<2)|2,{37,65,0}}, +/* 22037 */ {(12<<2)|2,{37,65,0}}, +/* 22038 */ {(12<<2)|2,{37,65,0}}, +/* 22039 */ {(12<<2)|2,{37,65,0}}, +/* 22040 */ {(12<<2)|2,{37,65,0}}, +/* 22041 */ {(12<<2)|2,{37,65,0}}, +/* 22042 */ {(12<<2)|2,{37,65,0}}, +/* 22043 */ {(12<<2)|2,{37,65,0}}, +/* 22044 */ {(12<<2)|2,{37,65,0}}, +/* 22045 */ {(12<<2)|2,{37,65,0}}, +/* 22046 */ {(12<<2)|2,{37,65,0}}, +/* 22047 */ {(12<<2)|2,{37,65,0}}, +/* 22048 */ {(12<<2)|2,{37,95,0}}, +/* 22049 */ {(12<<2)|2,{37,95,0}}, +/* 22050 */ {(12<<2)|2,{37,95,0}}, +/* 22051 */ {(12<<2)|2,{37,95,0}}, +/* 22052 */ {(12<<2)|2,{37,95,0}}, +/* 22053 */ {(12<<2)|2,{37,95,0}}, +/* 22054 */ {(12<<2)|2,{37,95,0}}, +/* 22055 */ {(12<<2)|2,{37,95,0}}, +/* 22056 */ {(12<<2)|2,{37,95,0}}, +/* 22057 */ {(12<<2)|2,{37,95,0}}, +/* 22058 */ {(12<<2)|2,{37,95,0}}, +/* 22059 */ {(12<<2)|2,{37,95,0}}, +/* 22060 */ {(12<<2)|2,{37,95,0}}, +/* 22061 */ {(12<<2)|2,{37,95,0}}, +/* 22062 */ {(12<<2)|2,{37,95,0}}, +/* 22063 */ {(12<<2)|2,{37,95,0}}, +/* 22064 */ {(12<<2)|2,{37,98,0}}, +/* 22065 */ {(12<<2)|2,{37,98,0}}, +/* 22066 */ {(12<<2)|2,{37,98,0}}, +/* 22067 */ {(12<<2)|2,{37,98,0}}, +/* 22068 */ {(12<<2)|2,{37,98,0}}, +/* 22069 */ {(12<<2)|2,{37,98,0}}, +/* 22070 */ {(12<<2)|2,{37,98,0}}, +/* 22071 */ {(12<<2)|2,{37,98,0}}, +/* 22072 */ {(12<<2)|2,{37,98,0}}, +/* 22073 */ {(12<<2)|2,{37,98,0}}, +/* 22074 */ {(12<<2)|2,{37,98,0}}, +/* 22075 */ {(12<<2)|2,{37,98,0}}, +/* 22076 */ {(12<<2)|2,{37,98,0}}, +/* 22077 */ {(12<<2)|2,{37,98,0}}, +/* 22078 */ {(12<<2)|2,{37,98,0}}, +/* 22079 */ {(12<<2)|2,{37,98,0}}, +/* 22080 */ {(12<<2)|2,{37,100,0}}, +/* 22081 */ {(12<<2)|2,{37,100,0}}, +/* 22082 */ {(12<<2)|2,{37,100,0}}, +/* 22083 */ {(12<<2)|2,{37,100,0}}, +/* 22084 */ {(12<<2)|2,{37,100,0}}, +/* 22085 */ {(12<<2)|2,{37,100,0}}, +/* 22086 */ {(12<<2)|2,{37,100,0}}, +/* 22087 */ {(12<<2)|2,{37,100,0}}, +/* 22088 */ {(12<<2)|2,{37,100,0}}, +/* 22089 */ {(12<<2)|2,{37,100,0}}, +/* 22090 */ {(12<<2)|2,{37,100,0}}, +/* 22091 */ {(12<<2)|2,{37,100,0}}, +/* 22092 */ {(12<<2)|2,{37,100,0}}, +/* 22093 */ {(12<<2)|2,{37,100,0}}, +/* 22094 */ {(12<<2)|2,{37,100,0}}, +/* 22095 */ {(12<<2)|2,{37,100,0}}, +/* 22096 */ {(12<<2)|2,{37,102,0}}, +/* 22097 */ {(12<<2)|2,{37,102,0}}, +/* 22098 */ {(12<<2)|2,{37,102,0}}, +/* 22099 */ {(12<<2)|2,{37,102,0}}, +/* 22100 */ {(12<<2)|2,{37,102,0}}, +/* 22101 */ {(12<<2)|2,{37,102,0}}, +/* 22102 */ {(12<<2)|2,{37,102,0}}, +/* 22103 */ {(12<<2)|2,{37,102,0}}, +/* 22104 */ {(12<<2)|2,{37,102,0}}, +/* 22105 */ {(12<<2)|2,{37,102,0}}, +/* 22106 */ {(12<<2)|2,{37,102,0}}, +/* 22107 */ {(12<<2)|2,{37,102,0}}, +/* 22108 */ {(12<<2)|2,{37,102,0}}, +/* 22109 */ {(12<<2)|2,{37,102,0}}, +/* 22110 */ {(12<<2)|2,{37,102,0}}, +/* 22111 */ {(12<<2)|2,{37,102,0}}, +/* 22112 */ {(12<<2)|2,{37,103,0}}, +/* 22113 */ {(12<<2)|2,{37,103,0}}, +/* 22114 */ {(12<<2)|2,{37,103,0}}, +/* 22115 */ {(12<<2)|2,{37,103,0}}, +/* 22116 */ {(12<<2)|2,{37,103,0}}, +/* 22117 */ {(12<<2)|2,{37,103,0}}, +/* 22118 */ {(12<<2)|2,{37,103,0}}, +/* 22119 */ {(12<<2)|2,{37,103,0}}, +/* 22120 */ {(12<<2)|2,{37,103,0}}, +/* 22121 */ {(12<<2)|2,{37,103,0}}, +/* 22122 */ {(12<<2)|2,{37,103,0}}, +/* 22123 */ {(12<<2)|2,{37,103,0}}, +/* 22124 */ {(12<<2)|2,{37,103,0}}, +/* 22125 */ {(12<<2)|2,{37,103,0}}, +/* 22126 */ {(12<<2)|2,{37,103,0}}, +/* 22127 */ {(12<<2)|2,{37,103,0}}, +/* 22128 */ {(12<<2)|2,{37,104,0}}, +/* 22129 */ {(12<<2)|2,{37,104,0}}, +/* 22130 */ {(12<<2)|2,{37,104,0}}, +/* 22131 */ {(12<<2)|2,{37,104,0}}, +/* 22132 */ {(12<<2)|2,{37,104,0}}, +/* 22133 */ {(12<<2)|2,{37,104,0}}, +/* 22134 */ {(12<<2)|2,{37,104,0}}, +/* 22135 */ {(12<<2)|2,{37,104,0}}, +/* 22136 */ {(12<<2)|2,{37,104,0}}, +/* 22137 */ {(12<<2)|2,{37,104,0}}, +/* 22138 */ {(12<<2)|2,{37,104,0}}, +/* 22139 */ {(12<<2)|2,{37,104,0}}, +/* 22140 */ {(12<<2)|2,{37,104,0}}, +/* 22141 */ {(12<<2)|2,{37,104,0}}, +/* 22142 */ {(12<<2)|2,{37,104,0}}, +/* 22143 */ {(12<<2)|2,{37,104,0}}, +/* 22144 */ {(12<<2)|2,{37,108,0}}, +/* 22145 */ {(12<<2)|2,{37,108,0}}, +/* 22146 */ {(12<<2)|2,{37,108,0}}, +/* 22147 */ {(12<<2)|2,{37,108,0}}, +/* 22148 */ {(12<<2)|2,{37,108,0}}, +/* 22149 */ {(12<<2)|2,{37,108,0}}, +/* 22150 */ {(12<<2)|2,{37,108,0}}, +/* 22151 */ {(12<<2)|2,{37,108,0}}, +/* 22152 */ {(12<<2)|2,{37,108,0}}, +/* 22153 */ {(12<<2)|2,{37,108,0}}, +/* 22154 */ {(12<<2)|2,{37,108,0}}, +/* 22155 */ {(12<<2)|2,{37,108,0}}, +/* 22156 */ {(12<<2)|2,{37,108,0}}, +/* 22157 */ {(12<<2)|2,{37,108,0}}, +/* 22158 */ {(12<<2)|2,{37,108,0}}, +/* 22159 */ {(12<<2)|2,{37,108,0}}, +/* 22160 */ {(12<<2)|2,{37,109,0}}, +/* 22161 */ {(12<<2)|2,{37,109,0}}, +/* 22162 */ {(12<<2)|2,{37,109,0}}, +/* 22163 */ {(12<<2)|2,{37,109,0}}, +/* 22164 */ {(12<<2)|2,{37,109,0}}, +/* 22165 */ {(12<<2)|2,{37,109,0}}, +/* 22166 */ {(12<<2)|2,{37,109,0}}, +/* 22167 */ {(12<<2)|2,{37,109,0}}, +/* 22168 */ {(12<<2)|2,{37,109,0}}, +/* 22169 */ {(12<<2)|2,{37,109,0}}, +/* 22170 */ {(12<<2)|2,{37,109,0}}, +/* 22171 */ {(12<<2)|2,{37,109,0}}, +/* 22172 */ {(12<<2)|2,{37,109,0}}, +/* 22173 */ {(12<<2)|2,{37,109,0}}, +/* 22174 */ {(12<<2)|2,{37,109,0}}, +/* 22175 */ {(12<<2)|2,{37,109,0}}, +/* 22176 */ {(12<<2)|2,{37,110,0}}, +/* 22177 */ {(12<<2)|2,{37,110,0}}, +/* 22178 */ {(12<<2)|2,{37,110,0}}, +/* 22179 */ {(12<<2)|2,{37,110,0}}, +/* 22180 */ {(12<<2)|2,{37,110,0}}, +/* 22181 */ {(12<<2)|2,{37,110,0}}, +/* 22182 */ {(12<<2)|2,{37,110,0}}, +/* 22183 */ {(12<<2)|2,{37,110,0}}, +/* 22184 */ {(12<<2)|2,{37,110,0}}, +/* 22185 */ {(12<<2)|2,{37,110,0}}, +/* 22186 */ {(12<<2)|2,{37,110,0}}, +/* 22187 */ {(12<<2)|2,{37,110,0}}, +/* 22188 */ {(12<<2)|2,{37,110,0}}, +/* 22189 */ {(12<<2)|2,{37,110,0}}, +/* 22190 */ {(12<<2)|2,{37,110,0}}, +/* 22191 */ {(12<<2)|2,{37,110,0}}, +/* 22192 */ {(12<<2)|2,{37,112,0}}, +/* 22193 */ {(12<<2)|2,{37,112,0}}, +/* 22194 */ {(12<<2)|2,{37,112,0}}, +/* 22195 */ {(12<<2)|2,{37,112,0}}, +/* 22196 */ {(12<<2)|2,{37,112,0}}, +/* 22197 */ {(12<<2)|2,{37,112,0}}, +/* 22198 */ {(12<<2)|2,{37,112,0}}, +/* 22199 */ {(12<<2)|2,{37,112,0}}, +/* 22200 */ {(12<<2)|2,{37,112,0}}, +/* 22201 */ {(12<<2)|2,{37,112,0}}, +/* 22202 */ {(12<<2)|2,{37,112,0}}, +/* 22203 */ {(12<<2)|2,{37,112,0}}, +/* 22204 */ {(12<<2)|2,{37,112,0}}, +/* 22205 */ {(12<<2)|2,{37,112,0}}, +/* 22206 */ {(12<<2)|2,{37,112,0}}, +/* 22207 */ {(12<<2)|2,{37,112,0}}, +/* 22208 */ {(12<<2)|2,{37,114,0}}, +/* 22209 */ {(12<<2)|2,{37,114,0}}, +/* 22210 */ {(12<<2)|2,{37,114,0}}, +/* 22211 */ {(12<<2)|2,{37,114,0}}, +/* 22212 */ {(12<<2)|2,{37,114,0}}, +/* 22213 */ {(12<<2)|2,{37,114,0}}, +/* 22214 */ {(12<<2)|2,{37,114,0}}, +/* 22215 */ {(12<<2)|2,{37,114,0}}, +/* 22216 */ {(12<<2)|2,{37,114,0}}, +/* 22217 */ {(12<<2)|2,{37,114,0}}, +/* 22218 */ {(12<<2)|2,{37,114,0}}, +/* 22219 */ {(12<<2)|2,{37,114,0}}, +/* 22220 */ {(12<<2)|2,{37,114,0}}, +/* 22221 */ {(12<<2)|2,{37,114,0}}, +/* 22222 */ {(12<<2)|2,{37,114,0}}, +/* 22223 */ {(12<<2)|2,{37,114,0}}, +/* 22224 */ {(12<<2)|2,{37,117,0}}, +/* 22225 */ {(12<<2)|2,{37,117,0}}, +/* 22226 */ {(12<<2)|2,{37,117,0}}, +/* 22227 */ {(12<<2)|2,{37,117,0}}, +/* 22228 */ {(12<<2)|2,{37,117,0}}, +/* 22229 */ {(12<<2)|2,{37,117,0}}, +/* 22230 */ {(12<<2)|2,{37,117,0}}, +/* 22231 */ {(12<<2)|2,{37,117,0}}, +/* 22232 */ {(12<<2)|2,{37,117,0}}, +/* 22233 */ {(12<<2)|2,{37,117,0}}, +/* 22234 */ {(12<<2)|2,{37,117,0}}, +/* 22235 */ {(12<<2)|2,{37,117,0}}, +/* 22236 */ {(12<<2)|2,{37,117,0}}, +/* 22237 */ {(12<<2)|2,{37,117,0}}, +/* 22238 */ {(12<<2)|2,{37,117,0}}, +/* 22239 */ {(12<<2)|2,{37,117,0}}, +/* 22240 */ {(13<<2)|2,{37,58,0}}, +/* 22241 */ {(13<<2)|2,{37,58,0}}, +/* 22242 */ {(13<<2)|2,{37,58,0}}, +/* 22243 */ {(13<<2)|2,{37,58,0}}, +/* 22244 */ {(13<<2)|2,{37,58,0}}, +/* 22245 */ {(13<<2)|2,{37,58,0}}, +/* 22246 */ {(13<<2)|2,{37,58,0}}, +/* 22247 */ {(13<<2)|2,{37,58,0}}, +/* 22248 */ {(13<<2)|2,{37,66,0}}, +/* 22249 */ {(13<<2)|2,{37,66,0}}, +/* 22250 */ {(13<<2)|2,{37,66,0}}, +/* 22251 */ {(13<<2)|2,{37,66,0}}, +/* 22252 */ {(13<<2)|2,{37,66,0}}, +/* 22253 */ {(13<<2)|2,{37,66,0}}, +/* 22254 */ {(13<<2)|2,{37,66,0}}, +/* 22255 */ {(13<<2)|2,{37,66,0}}, +/* 22256 */ {(13<<2)|2,{37,67,0}}, +/* 22257 */ {(13<<2)|2,{37,67,0}}, +/* 22258 */ {(13<<2)|2,{37,67,0}}, +/* 22259 */ {(13<<2)|2,{37,67,0}}, +/* 22260 */ {(13<<2)|2,{37,67,0}}, +/* 22261 */ {(13<<2)|2,{37,67,0}}, +/* 22262 */ {(13<<2)|2,{37,67,0}}, +/* 22263 */ {(13<<2)|2,{37,67,0}}, +/* 22264 */ {(13<<2)|2,{37,68,0}}, +/* 22265 */ {(13<<2)|2,{37,68,0}}, +/* 22266 */ {(13<<2)|2,{37,68,0}}, +/* 22267 */ {(13<<2)|2,{37,68,0}}, +/* 22268 */ {(13<<2)|2,{37,68,0}}, +/* 22269 */ {(13<<2)|2,{37,68,0}}, +/* 22270 */ {(13<<2)|2,{37,68,0}}, +/* 22271 */ {(13<<2)|2,{37,68,0}}, +/* 22272 */ {(13<<2)|2,{37,69,0}}, +/* 22273 */ {(13<<2)|2,{37,69,0}}, +/* 22274 */ {(13<<2)|2,{37,69,0}}, +/* 22275 */ {(13<<2)|2,{37,69,0}}, +/* 22276 */ {(13<<2)|2,{37,69,0}}, +/* 22277 */ {(13<<2)|2,{37,69,0}}, +/* 22278 */ {(13<<2)|2,{37,69,0}}, +/* 22279 */ {(13<<2)|2,{37,69,0}}, +/* 22280 */ {(13<<2)|2,{37,70,0}}, +/* 22281 */ {(13<<2)|2,{37,70,0}}, +/* 22282 */ {(13<<2)|2,{37,70,0}}, +/* 22283 */ {(13<<2)|2,{37,70,0}}, +/* 22284 */ {(13<<2)|2,{37,70,0}}, +/* 22285 */ {(13<<2)|2,{37,70,0}}, +/* 22286 */ {(13<<2)|2,{37,70,0}}, +/* 22287 */ {(13<<2)|2,{37,70,0}}, +/* 22288 */ {(13<<2)|2,{37,71,0}}, +/* 22289 */ {(13<<2)|2,{37,71,0}}, +/* 22290 */ {(13<<2)|2,{37,71,0}}, +/* 22291 */ {(13<<2)|2,{37,71,0}}, +/* 22292 */ {(13<<2)|2,{37,71,0}}, +/* 22293 */ {(13<<2)|2,{37,71,0}}, +/* 22294 */ {(13<<2)|2,{37,71,0}}, +/* 22295 */ {(13<<2)|2,{37,71,0}}, +/* 22296 */ {(13<<2)|2,{37,72,0}}, +/* 22297 */ {(13<<2)|2,{37,72,0}}, +/* 22298 */ {(13<<2)|2,{37,72,0}}, +/* 22299 */ {(13<<2)|2,{37,72,0}}, +/* 22300 */ {(13<<2)|2,{37,72,0}}, +/* 22301 */ {(13<<2)|2,{37,72,0}}, +/* 22302 */ {(13<<2)|2,{37,72,0}}, +/* 22303 */ {(13<<2)|2,{37,72,0}}, +/* 22304 */ {(13<<2)|2,{37,73,0}}, +/* 22305 */ {(13<<2)|2,{37,73,0}}, +/* 22306 */ {(13<<2)|2,{37,73,0}}, +/* 22307 */ {(13<<2)|2,{37,73,0}}, +/* 22308 */ {(13<<2)|2,{37,73,0}}, +/* 22309 */ {(13<<2)|2,{37,73,0}}, +/* 22310 */ {(13<<2)|2,{37,73,0}}, +/* 22311 */ {(13<<2)|2,{37,73,0}}, +/* 22312 */ {(13<<2)|2,{37,74,0}}, +/* 22313 */ {(13<<2)|2,{37,74,0}}, +/* 22314 */ {(13<<2)|2,{37,74,0}}, +/* 22315 */ {(13<<2)|2,{37,74,0}}, +/* 22316 */ {(13<<2)|2,{37,74,0}}, +/* 22317 */ {(13<<2)|2,{37,74,0}}, +/* 22318 */ {(13<<2)|2,{37,74,0}}, +/* 22319 */ {(13<<2)|2,{37,74,0}}, +/* 22320 */ {(13<<2)|2,{37,75,0}}, +/* 22321 */ {(13<<2)|2,{37,75,0}}, +/* 22322 */ {(13<<2)|2,{37,75,0}}, +/* 22323 */ {(13<<2)|2,{37,75,0}}, +/* 22324 */ {(13<<2)|2,{37,75,0}}, +/* 22325 */ {(13<<2)|2,{37,75,0}}, +/* 22326 */ {(13<<2)|2,{37,75,0}}, +/* 22327 */ {(13<<2)|2,{37,75,0}}, +/* 22328 */ {(13<<2)|2,{37,76,0}}, +/* 22329 */ {(13<<2)|2,{37,76,0}}, +/* 22330 */ {(13<<2)|2,{37,76,0}}, +/* 22331 */ {(13<<2)|2,{37,76,0}}, +/* 22332 */ {(13<<2)|2,{37,76,0}}, +/* 22333 */ {(13<<2)|2,{37,76,0}}, +/* 22334 */ {(13<<2)|2,{37,76,0}}, +/* 22335 */ {(13<<2)|2,{37,76,0}}, +/* 22336 */ {(13<<2)|2,{37,77,0}}, +/* 22337 */ {(13<<2)|2,{37,77,0}}, +/* 22338 */ {(13<<2)|2,{37,77,0}}, +/* 22339 */ {(13<<2)|2,{37,77,0}}, +/* 22340 */ {(13<<2)|2,{37,77,0}}, +/* 22341 */ {(13<<2)|2,{37,77,0}}, +/* 22342 */ {(13<<2)|2,{37,77,0}}, +/* 22343 */ {(13<<2)|2,{37,77,0}}, +/* 22344 */ {(13<<2)|2,{37,78,0}}, +/* 22345 */ {(13<<2)|2,{37,78,0}}, +/* 22346 */ {(13<<2)|2,{37,78,0}}, +/* 22347 */ {(13<<2)|2,{37,78,0}}, +/* 22348 */ {(13<<2)|2,{37,78,0}}, +/* 22349 */ {(13<<2)|2,{37,78,0}}, +/* 22350 */ {(13<<2)|2,{37,78,0}}, +/* 22351 */ {(13<<2)|2,{37,78,0}}, +/* 22352 */ {(13<<2)|2,{37,79,0}}, +/* 22353 */ {(13<<2)|2,{37,79,0}}, +/* 22354 */ {(13<<2)|2,{37,79,0}}, +/* 22355 */ {(13<<2)|2,{37,79,0}}, +/* 22356 */ {(13<<2)|2,{37,79,0}}, +/* 22357 */ {(13<<2)|2,{37,79,0}}, +/* 22358 */ {(13<<2)|2,{37,79,0}}, +/* 22359 */ {(13<<2)|2,{37,79,0}}, +/* 22360 */ {(13<<2)|2,{37,80,0}}, +/* 22361 */ {(13<<2)|2,{37,80,0}}, +/* 22362 */ {(13<<2)|2,{37,80,0}}, +/* 22363 */ {(13<<2)|2,{37,80,0}}, +/* 22364 */ {(13<<2)|2,{37,80,0}}, +/* 22365 */ {(13<<2)|2,{37,80,0}}, +/* 22366 */ {(13<<2)|2,{37,80,0}}, +/* 22367 */ {(13<<2)|2,{37,80,0}}, +/* 22368 */ {(13<<2)|2,{37,81,0}}, +/* 22369 */ {(13<<2)|2,{37,81,0}}, +/* 22370 */ {(13<<2)|2,{37,81,0}}, +/* 22371 */ {(13<<2)|2,{37,81,0}}, +/* 22372 */ {(13<<2)|2,{37,81,0}}, +/* 22373 */ {(13<<2)|2,{37,81,0}}, +/* 22374 */ {(13<<2)|2,{37,81,0}}, +/* 22375 */ {(13<<2)|2,{37,81,0}}, +/* 22376 */ {(13<<2)|2,{37,82,0}}, +/* 22377 */ {(13<<2)|2,{37,82,0}}, +/* 22378 */ {(13<<2)|2,{37,82,0}}, +/* 22379 */ {(13<<2)|2,{37,82,0}}, +/* 22380 */ {(13<<2)|2,{37,82,0}}, +/* 22381 */ {(13<<2)|2,{37,82,0}}, +/* 22382 */ {(13<<2)|2,{37,82,0}}, +/* 22383 */ {(13<<2)|2,{37,82,0}}, +/* 22384 */ {(13<<2)|2,{37,83,0}}, +/* 22385 */ {(13<<2)|2,{37,83,0}}, +/* 22386 */ {(13<<2)|2,{37,83,0}}, +/* 22387 */ {(13<<2)|2,{37,83,0}}, +/* 22388 */ {(13<<2)|2,{37,83,0}}, +/* 22389 */ {(13<<2)|2,{37,83,0}}, +/* 22390 */ {(13<<2)|2,{37,83,0}}, +/* 22391 */ {(13<<2)|2,{37,83,0}}, +/* 22392 */ {(13<<2)|2,{37,84,0}}, +/* 22393 */ {(13<<2)|2,{37,84,0}}, +/* 22394 */ {(13<<2)|2,{37,84,0}}, +/* 22395 */ {(13<<2)|2,{37,84,0}}, +/* 22396 */ {(13<<2)|2,{37,84,0}}, +/* 22397 */ {(13<<2)|2,{37,84,0}}, +/* 22398 */ {(13<<2)|2,{37,84,0}}, +/* 22399 */ {(13<<2)|2,{37,84,0}}, +/* 22400 */ {(13<<2)|2,{37,85,0}}, +/* 22401 */ {(13<<2)|2,{37,85,0}}, +/* 22402 */ {(13<<2)|2,{37,85,0}}, +/* 22403 */ {(13<<2)|2,{37,85,0}}, +/* 22404 */ {(13<<2)|2,{37,85,0}}, +/* 22405 */ {(13<<2)|2,{37,85,0}}, +/* 22406 */ {(13<<2)|2,{37,85,0}}, +/* 22407 */ {(13<<2)|2,{37,85,0}}, +/* 22408 */ {(13<<2)|2,{37,86,0}}, +/* 22409 */ {(13<<2)|2,{37,86,0}}, +/* 22410 */ {(13<<2)|2,{37,86,0}}, +/* 22411 */ {(13<<2)|2,{37,86,0}}, +/* 22412 */ {(13<<2)|2,{37,86,0}}, +/* 22413 */ {(13<<2)|2,{37,86,0}}, +/* 22414 */ {(13<<2)|2,{37,86,0}}, +/* 22415 */ {(13<<2)|2,{37,86,0}}, +/* 22416 */ {(13<<2)|2,{37,87,0}}, +/* 22417 */ {(13<<2)|2,{37,87,0}}, +/* 22418 */ {(13<<2)|2,{37,87,0}}, +/* 22419 */ {(13<<2)|2,{37,87,0}}, +/* 22420 */ {(13<<2)|2,{37,87,0}}, +/* 22421 */ {(13<<2)|2,{37,87,0}}, +/* 22422 */ {(13<<2)|2,{37,87,0}}, +/* 22423 */ {(13<<2)|2,{37,87,0}}, +/* 22424 */ {(13<<2)|2,{37,89,0}}, +/* 22425 */ {(13<<2)|2,{37,89,0}}, +/* 22426 */ {(13<<2)|2,{37,89,0}}, +/* 22427 */ {(13<<2)|2,{37,89,0}}, +/* 22428 */ {(13<<2)|2,{37,89,0}}, +/* 22429 */ {(13<<2)|2,{37,89,0}}, +/* 22430 */ {(13<<2)|2,{37,89,0}}, +/* 22431 */ {(13<<2)|2,{37,89,0}}, +/* 22432 */ {(13<<2)|2,{37,106,0}}, +/* 22433 */ {(13<<2)|2,{37,106,0}}, +/* 22434 */ {(13<<2)|2,{37,106,0}}, +/* 22435 */ {(13<<2)|2,{37,106,0}}, +/* 22436 */ {(13<<2)|2,{37,106,0}}, +/* 22437 */ {(13<<2)|2,{37,106,0}}, +/* 22438 */ {(13<<2)|2,{37,106,0}}, +/* 22439 */ {(13<<2)|2,{37,106,0}}, +/* 22440 */ {(13<<2)|2,{37,107,0}}, +/* 22441 */ {(13<<2)|2,{37,107,0}}, +/* 22442 */ {(13<<2)|2,{37,107,0}}, +/* 22443 */ {(13<<2)|2,{37,107,0}}, +/* 22444 */ {(13<<2)|2,{37,107,0}}, +/* 22445 */ {(13<<2)|2,{37,107,0}}, +/* 22446 */ {(13<<2)|2,{37,107,0}}, +/* 22447 */ {(13<<2)|2,{37,107,0}}, +/* 22448 */ {(13<<2)|2,{37,113,0}}, +/* 22449 */ {(13<<2)|2,{37,113,0}}, +/* 22450 */ {(13<<2)|2,{37,113,0}}, +/* 22451 */ {(13<<2)|2,{37,113,0}}, +/* 22452 */ {(13<<2)|2,{37,113,0}}, +/* 22453 */ {(13<<2)|2,{37,113,0}}, +/* 22454 */ {(13<<2)|2,{37,113,0}}, +/* 22455 */ {(13<<2)|2,{37,113,0}}, +/* 22456 */ {(13<<2)|2,{37,118,0}}, +/* 22457 */ {(13<<2)|2,{37,118,0}}, +/* 22458 */ {(13<<2)|2,{37,118,0}}, +/* 22459 */ {(13<<2)|2,{37,118,0}}, +/* 22460 */ {(13<<2)|2,{37,118,0}}, +/* 22461 */ {(13<<2)|2,{37,118,0}}, +/* 22462 */ {(13<<2)|2,{37,118,0}}, +/* 22463 */ {(13<<2)|2,{37,118,0}}, +/* 22464 */ {(13<<2)|2,{37,119,0}}, +/* 22465 */ {(13<<2)|2,{37,119,0}}, +/* 22466 */ {(13<<2)|2,{37,119,0}}, +/* 22467 */ {(13<<2)|2,{37,119,0}}, +/* 22468 */ {(13<<2)|2,{37,119,0}}, +/* 22469 */ {(13<<2)|2,{37,119,0}}, +/* 22470 */ {(13<<2)|2,{37,119,0}}, +/* 22471 */ {(13<<2)|2,{37,119,0}}, +/* 22472 */ {(13<<2)|2,{37,120,0}}, +/* 22473 */ {(13<<2)|2,{37,120,0}}, +/* 22474 */ {(13<<2)|2,{37,120,0}}, +/* 22475 */ {(13<<2)|2,{37,120,0}}, +/* 22476 */ {(13<<2)|2,{37,120,0}}, +/* 22477 */ {(13<<2)|2,{37,120,0}}, +/* 22478 */ {(13<<2)|2,{37,120,0}}, +/* 22479 */ {(13<<2)|2,{37,120,0}}, +/* 22480 */ {(13<<2)|2,{37,121,0}}, +/* 22481 */ {(13<<2)|2,{37,121,0}}, +/* 22482 */ {(13<<2)|2,{37,121,0}}, +/* 22483 */ {(13<<2)|2,{37,121,0}}, +/* 22484 */ {(13<<2)|2,{37,121,0}}, +/* 22485 */ {(13<<2)|2,{37,121,0}}, +/* 22486 */ {(13<<2)|2,{37,121,0}}, +/* 22487 */ {(13<<2)|2,{37,121,0}}, +/* 22488 */ {(13<<2)|2,{37,122,0}}, +/* 22489 */ {(13<<2)|2,{37,122,0}}, +/* 22490 */ {(13<<2)|2,{37,122,0}}, +/* 22491 */ {(13<<2)|2,{37,122,0}}, +/* 22492 */ {(13<<2)|2,{37,122,0}}, +/* 22493 */ {(13<<2)|2,{37,122,0}}, +/* 22494 */ {(13<<2)|2,{37,122,0}}, +/* 22495 */ {(13<<2)|2,{37,122,0}}, +/* 22496 */ {(14<<2)|2,{37,38,0}}, +/* 22497 */ {(14<<2)|2,{37,38,0}}, +/* 22498 */ {(14<<2)|2,{37,38,0}}, +/* 22499 */ {(14<<2)|2,{37,38,0}}, +/* 22500 */ {(14<<2)|2,{37,42,0}}, +/* 22501 */ {(14<<2)|2,{37,42,0}}, +/* 22502 */ {(14<<2)|2,{37,42,0}}, +/* 22503 */ {(14<<2)|2,{37,42,0}}, +/* 22504 */ {(14<<2)|2,{37,44,0}}, +/* 22505 */ {(14<<2)|2,{37,44,0}}, +/* 22506 */ {(14<<2)|2,{37,44,0}}, +/* 22507 */ {(14<<2)|2,{37,44,0}}, +/* 22508 */ {(14<<2)|2,{37,59,0}}, +/* 22509 */ {(14<<2)|2,{37,59,0}}, +/* 22510 */ {(14<<2)|2,{37,59,0}}, +/* 22511 */ {(14<<2)|2,{37,59,0}}, +/* 22512 */ {(14<<2)|2,{37,88,0}}, +/* 22513 */ {(14<<2)|2,{37,88,0}}, +/* 22514 */ {(14<<2)|2,{37,88,0}}, +/* 22515 */ {(14<<2)|2,{37,88,0}}, +/* 22516 */ {(14<<2)|2,{37,90,0}}, +/* 22517 */ {(14<<2)|2,{37,90,0}}, +/* 22518 */ {(14<<2)|2,{37,90,0}}, +/* 22519 */ {(14<<2)|2,{37,90,0}}, +/* 22520 */ {(16<<2)|2,{37,33,0}}, +/* 22521 */ {(16<<2)|2,{37,34,0}}, +/* 22522 */ {(16<<2)|2,{37,40,0}}, +/* 22523 */ {(16<<2)|2,{37,41,0}}, +/* 22524 */ {(16<<2)|2,{37,63,0}}, +/* 22525 */ {(6<<2)|1,{37,0,0}}, +/* 22526 */ {(6<<2)|1,{37,0,0}}, +/* 22527 */ {(6<<2)|1,{37,0,0}}, +/* 22528 */ {(16<<2)|3,{45,48,48}}, +/* 22529 */ {(16<<2)|3,{45,48,49}}, +/* 22530 */ {(16<<2)|3,{45,48,50}}, +/* 22531 */ {(16<<2)|3,{45,48,97}}, +/* 22532 */ {(16<<2)|3,{45,48,99}}, +/* 22533 */ {(16<<2)|3,{45,48,101}}, +/* 22534 */ {(16<<2)|3,{45,48,105}}, +/* 22535 */ {(16<<2)|3,{45,48,111}}, +/* 22536 */ {(16<<2)|3,{45,48,115}}, +/* 22537 */ {(16<<2)|3,{45,48,116}}, +/* 22538 */ {(11<<2)|2,{45,48,0}}, +/* 22539 */ {(11<<2)|2,{45,48,0}}, +/* 22540 */ {(11<<2)|2,{45,48,0}}, +/* 22541 */ {(11<<2)|2,{45,48,0}}, +/* 22542 */ {(11<<2)|2,{45,48,0}}, +/* 22543 */ {(11<<2)|2,{45,48,0}}, +/* 22544 */ {(11<<2)|2,{45,48,0}}, +/* 22545 */ {(11<<2)|2,{45,48,0}}, +/* 22546 */ {(11<<2)|2,{45,48,0}}, +/* 22547 */ {(11<<2)|2,{45,48,0}}, +/* 22548 */ {(11<<2)|2,{45,48,0}}, +/* 22549 */ {(11<<2)|2,{45,48,0}}, +/* 22550 */ {(11<<2)|2,{45,48,0}}, +/* 22551 */ {(11<<2)|2,{45,48,0}}, +/* 22552 */ {(11<<2)|2,{45,48,0}}, +/* 22553 */ {(11<<2)|2,{45,48,0}}, +/* 22554 */ {(11<<2)|2,{45,48,0}}, +/* 22555 */ {(11<<2)|2,{45,48,0}}, +/* 22556 */ {(11<<2)|2,{45,48,0}}, +/* 22557 */ {(11<<2)|2,{45,48,0}}, +/* 22558 */ {(11<<2)|2,{45,48,0}}, +/* 22559 */ {(11<<2)|2,{45,48,0}}, +/* 22560 */ {(16<<2)|3,{45,49,48}}, +/* 22561 */ {(16<<2)|3,{45,49,49}}, +/* 22562 */ {(16<<2)|3,{45,49,50}}, +/* 22563 */ {(16<<2)|3,{45,49,97}}, +/* 22564 */ {(16<<2)|3,{45,49,99}}, +/* 22565 */ {(16<<2)|3,{45,49,101}}, +/* 22566 */ {(16<<2)|3,{45,49,105}}, +/* 22567 */ {(16<<2)|3,{45,49,111}}, +/* 22568 */ {(16<<2)|3,{45,49,115}}, +/* 22569 */ {(16<<2)|3,{45,49,116}}, +/* 22570 */ {(11<<2)|2,{45,49,0}}, +/* 22571 */ {(11<<2)|2,{45,49,0}}, +/* 22572 */ {(11<<2)|2,{45,49,0}}, +/* 22573 */ {(11<<2)|2,{45,49,0}}, +/* 22574 */ {(11<<2)|2,{45,49,0}}, +/* 22575 */ {(11<<2)|2,{45,49,0}}, +/* 22576 */ {(11<<2)|2,{45,49,0}}, +/* 22577 */ {(11<<2)|2,{45,49,0}}, +/* 22578 */ {(11<<2)|2,{45,49,0}}, +/* 22579 */ {(11<<2)|2,{45,49,0}}, +/* 22580 */ {(11<<2)|2,{45,49,0}}, +/* 22581 */ {(11<<2)|2,{45,49,0}}, +/* 22582 */ {(11<<2)|2,{45,49,0}}, +/* 22583 */ {(11<<2)|2,{45,49,0}}, +/* 22584 */ {(11<<2)|2,{45,49,0}}, +/* 22585 */ {(11<<2)|2,{45,49,0}}, +/* 22586 */ {(11<<2)|2,{45,49,0}}, +/* 22587 */ {(11<<2)|2,{45,49,0}}, +/* 22588 */ {(11<<2)|2,{45,49,0}}, +/* 22589 */ {(11<<2)|2,{45,49,0}}, +/* 22590 */ {(11<<2)|2,{45,49,0}}, +/* 22591 */ {(11<<2)|2,{45,49,0}}, +/* 22592 */ {(16<<2)|3,{45,50,48}}, +/* 22593 */ {(16<<2)|3,{45,50,49}}, +/* 22594 */ {(16<<2)|3,{45,50,50}}, +/* 22595 */ {(16<<2)|3,{45,50,97}}, +/* 22596 */ {(16<<2)|3,{45,50,99}}, +/* 22597 */ {(16<<2)|3,{45,50,101}}, +/* 22598 */ {(16<<2)|3,{45,50,105}}, +/* 22599 */ {(16<<2)|3,{45,50,111}}, +/* 22600 */ {(16<<2)|3,{45,50,115}}, +/* 22601 */ {(16<<2)|3,{45,50,116}}, +/* 22602 */ {(11<<2)|2,{45,50,0}}, +/* 22603 */ {(11<<2)|2,{45,50,0}}, +/* 22604 */ {(11<<2)|2,{45,50,0}}, +/* 22605 */ {(11<<2)|2,{45,50,0}}, +/* 22606 */ {(11<<2)|2,{45,50,0}}, +/* 22607 */ {(11<<2)|2,{45,50,0}}, +/* 22608 */ {(11<<2)|2,{45,50,0}}, +/* 22609 */ {(11<<2)|2,{45,50,0}}, +/* 22610 */ {(11<<2)|2,{45,50,0}}, +/* 22611 */ {(11<<2)|2,{45,50,0}}, +/* 22612 */ {(11<<2)|2,{45,50,0}}, +/* 22613 */ {(11<<2)|2,{45,50,0}}, +/* 22614 */ {(11<<2)|2,{45,50,0}}, +/* 22615 */ {(11<<2)|2,{45,50,0}}, +/* 22616 */ {(11<<2)|2,{45,50,0}}, +/* 22617 */ {(11<<2)|2,{45,50,0}}, +/* 22618 */ {(11<<2)|2,{45,50,0}}, +/* 22619 */ {(11<<2)|2,{45,50,0}}, +/* 22620 */ {(11<<2)|2,{45,50,0}}, +/* 22621 */ {(11<<2)|2,{45,50,0}}, +/* 22622 */ {(11<<2)|2,{45,50,0}}, +/* 22623 */ {(11<<2)|2,{45,50,0}}, +/* 22624 */ {(16<<2)|3,{45,97,48}}, +/* 22625 */ {(16<<2)|3,{45,97,49}}, +/* 22626 */ {(16<<2)|3,{45,97,50}}, +/* 22627 */ {(16<<2)|3,{45,97,97}}, +/* 22628 */ {(16<<2)|3,{45,97,99}}, +/* 22629 */ {(16<<2)|3,{45,97,101}}, +/* 22630 */ {(16<<2)|3,{45,97,105}}, +/* 22631 */ {(16<<2)|3,{45,97,111}}, +/* 22632 */ {(16<<2)|3,{45,97,115}}, +/* 22633 */ {(16<<2)|3,{45,97,116}}, +/* 22634 */ {(11<<2)|2,{45,97,0}}, +/* 22635 */ {(11<<2)|2,{45,97,0}}, +/* 22636 */ {(11<<2)|2,{45,97,0}}, +/* 22637 */ {(11<<2)|2,{45,97,0}}, +/* 22638 */ {(11<<2)|2,{45,97,0}}, +/* 22639 */ {(11<<2)|2,{45,97,0}}, +/* 22640 */ {(11<<2)|2,{45,97,0}}, +/* 22641 */ {(11<<2)|2,{45,97,0}}, +/* 22642 */ {(11<<2)|2,{45,97,0}}, +/* 22643 */ {(11<<2)|2,{45,97,0}}, +/* 22644 */ {(11<<2)|2,{45,97,0}}, +/* 22645 */ {(11<<2)|2,{45,97,0}}, +/* 22646 */ {(11<<2)|2,{45,97,0}}, +/* 22647 */ {(11<<2)|2,{45,97,0}}, +/* 22648 */ {(11<<2)|2,{45,97,0}}, +/* 22649 */ {(11<<2)|2,{45,97,0}}, +/* 22650 */ {(11<<2)|2,{45,97,0}}, +/* 22651 */ {(11<<2)|2,{45,97,0}}, +/* 22652 */ {(11<<2)|2,{45,97,0}}, +/* 22653 */ {(11<<2)|2,{45,97,0}}, +/* 22654 */ {(11<<2)|2,{45,97,0}}, +/* 22655 */ {(11<<2)|2,{45,97,0}}, +/* 22656 */ {(16<<2)|3,{45,99,48}}, +/* 22657 */ {(16<<2)|3,{45,99,49}}, +/* 22658 */ {(16<<2)|3,{45,99,50}}, +/* 22659 */ {(16<<2)|3,{45,99,97}}, +/* 22660 */ {(16<<2)|3,{45,99,99}}, +/* 22661 */ {(16<<2)|3,{45,99,101}}, +/* 22662 */ {(16<<2)|3,{45,99,105}}, +/* 22663 */ {(16<<2)|3,{45,99,111}}, +/* 22664 */ {(16<<2)|3,{45,99,115}}, +/* 22665 */ {(16<<2)|3,{45,99,116}}, +/* 22666 */ {(11<<2)|2,{45,99,0}}, +/* 22667 */ {(11<<2)|2,{45,99,0}}, +/* 22668 */ {(11<<2)|2,{45,99,0}}, +/* 22669 */ {(11<<2)|2,{45,99,0}}, +/* 22670 */ {(11<<2)|2,{45,99,0}}, +/* 22671 */ {(11<<2)|2,{45,99,0}}, +/* 22672 */ {(11<<2)|2,{45,99,0}}, +/* 22673 */ {(11<<2)|2,{45,99,0}}, +/* 22674 */ {(11<<2)|2,{45,99,0}}, +/* 22675 */ {(11<<2)|2,{45,99,0}}, +/* 22676 */ {(11<<2)|2,{45,99,0}}, +/* 22677 */ {(11<<2)|2,{45,99,0}}, +/* 22678 */ {(11<<2)|2,{45,99,0}}, +/* 22679 */ {(11<<2)|2,{45,99,0}}, +/* 22680 */ {(11<<2)|2,{45,99,0}}, +/* 22681 */ {(11<<2)|2,{45,99,0}}, +/* 22682 */ {(11<<2)|2,{45,99,0}}, +/* 22683 */ {(11<<2)|2,{45,99,0}}, +/* 22684 */ {(11<<2)|2,{45,99,0}}, +/* 22685 */ {(11<<2)|2,{45,99,0}}, +/* 22686 */ {(11<<2)|2,{45,99,0}}, +/* 22687 */ {(11<<2)|2,{45,99,0}}, +/* 22688 */ {(16<<2)|3,{45,101,48}}, +/* 22689 */ {(16<<2)|3,{45,101,49}}, +/* 22690 */ {(16<<2)|3,{45,101,50}}, +/* 22691 */ {(16<<2)|3,{45,101,97}}, +/* 22692 */ {(16<<2)|3,{45,101,99}}, +/* 22693 */ {(16<<2)|3,{45,101,101}}, +/* 22694 */ {(16<<2)|3,{45,101,105}}, +/* 22695 */ {(16<<2)|3,{45,101,111}}, +/* 22696 */ {(16<<2)|3,{45,101,115}}, +/* 22697 */ {(16<<2)|3,{45,101,116}}, +/* 22698 */ {(11<<2)|2,{45,101,0}}, +/* 22699 */ {(11<<2)|2,{45,101,0}}, +/* 22700 */ {(11<<2)|2,{45,101,0}}, +/* 22701 */ {(11<<2)|2,{45,101,0}}, +/* 22702 */ {(11<<2)|2,{45,101,0}}, +/* 22703 */ {(11<<2)|2,{45,101,0}}, +/* 22704 */ {(11<<2)|2,{45,101,0}}, +/* 22705 */ {(11<<2)|2,{45,101,0}}, +/* 22706 */ {(11<<2)|2,{45,101,0}}, +/* 22707 */ {(11<<2)|2,{45,101,0}}, +/* 22708 */ {(11<<2)|2,{45,101,0}}, +/* 22709 */ {(11<<2)|2,{45,101,0}}, +/* 22710 */ {(11<<2)|2,{45,101,0}}, +/* 22711 */ {(11<<2)|2,{45,101,0}}, +/* 22712 */ {(11<<2)|2,{45,101,0}}, +/* 22713 */ {(11<<2)|2,{45,101,0}}, +/* 22714 */ {(11<<2)|2,{45,101,0}}, +/* 22715 */ {(11<<2)|2,{45,101,0}}, +/* 22716 */ {(11<<2)|2,{45,101,0}}, +/* 22717 */ {(11<<2)|2,{45,101,0}}, +/* 22718 */ {(11<<2)|2,{45,101,0}}, +/* 22719 */ {(11<<2)|2,{45,101,0}}, +/* 22720 */ {(16<<2)|3,{45,105,48}}, +/* 22721 */ {(16<<2)|3,{45,105,49}}, +/* 22722 */ {(16<<2)|3,{45,105,50}}, +/* 22723 */ {(16<<2)|3,{45,105,97}}, +/* 22724 */ {(16<<2)|3,{45,105,99}}, +/* 22725 */ {(16<<2)|3,{45,105,101}}, +/* 22726 */ {(16<<2)|3,{45,105,105}}, +/* 22727 */ {(16<<2)|3,{45,105,111}}, +/* 22728 */ {(16<<2)|3,{45,105,115}}, +/* 22729 */ {(16<<2)|3,{45,105,116}}, +/* 22730 */ {(11<<2)|2,{45,105,0}}, +/* 22731 */ {(11<<2)|2,{45,105,0}}, +/* 22732 */ {(11<<2)|2,{45,105,0}}, +/* 22733 */ {(11<<2)|2,{45,105,0}}, +/* 22734 */ {(11<<2)|2,{45,105,0}}, +/* 22735 */ {(11<<2)|2,{45,105,0}}, +/* 22736 */ {(11<<2)|2,{45,105,0}}, +/* 22737 */ {(11<<2)|2,{45,105,0}}, +/* 22738 */ {(11<<2)|2,{45,105,0}}, +/* 22739 */ {(11<<2)|2,{45,105,0}}, +/* 22740 */ {(11<<2)|2,{45,105,0}}, +/* 22741 */ {(11<<2)|2,{45,105,0}}, +/* 22742 */ {(11<<2)|2,{45,105,0}}, +/* 22743 */ {(11<<2)|2,{45,105,0}}, +/* 22744 */ {(11<<2)|2,{45,105,0}}, +/* 22745 */ {(11<<2)|2,{45,105,0}}, +/* 22746 */ {(11<<2)|2,{45,105,0}}, +/* 22747 */ {(11<<2)|2,{45,105,0}}, +/* 22748 */ {(11<<2)|2,{45,105,0}}, +/* 22749 */ {(11<<2)|2,{45,105,0}}, +/* 22750 */ {(11<<2)|2,{45,105,0}}, +/* 22751 */ {(11<<2)|2,{45,105,0}}, +/* 22752 */ {(16<<2)|3,{45,111,48}}, +/* 22753 */ {(16<<2)|3,{45,111,49}}, +/* 22754 */ {(16<<2)|3,{45,111,50}}, +/* 22755 */ {(16<<2)|3,{45,111,97}}, +/* 22756 */ {(16<<2)|3,{45,111,99}}, +/* 22757 */ {(16<<2)|3,{45,111,101}}, +/* 22758 */ {(16<<2)|3,{45,111,105}}, +/* 22759 */ {(16<<2)|3,{45,111,111}}, +/* 22760 */ {(16<<2)|3,{45,111,115}}, +/* 22761 */ {(16<<2)|3,{45,111,116}}, +/* 22762 */ {(11<<2)|2,{45,111,0}}, +/* 22763 */ {(11<<2)|2,{45,111,0}}, +/* 22764 */ {(11<<2)|2,{45,111,0}}, +/* 22765 */ {(11<<2)|2,{45,111,0}}, +/* 22766 */ {(11<<2)|2,{45,111,0}}, +/* 22767 */ {(11<<2)|2,{45,111,0}}, +/* 22768 */ {(11<<2)|2,{45,111,0}}, +/* 22769 */ {(11<<2)|2,{45,111,0}}, +/* 22770 */ {(11<<2)|2,{45,111,0}}, +/* 22771 */ {(11<<2)|2,{45,111,0}}, +/* 22772 */ {(11<<2)|2,{45,111,0}}, +/* 22773 */ {(11<<2)|2,{45,111,0}}, +/* 22774 */ {(11<<2)|2,{45,111,0}}, +/* 22775 */ {(11<<2)|2,{45,111,0}}, +/* 22776 */ {(11<<2)|2,{45,111,0}}, +/* 22777 */ {(11<<2)|2,{45,111,0}}, +/* 22778 */ {(11<<2)|2,{45,111,0}}, +/* 22779 */ {(11<<2)|2,{45,111,0}}, +/* 22780 */ {(11<<2)|2,{45,111,0}}, +/* 22781 */ {(11<<2)|2,{45,111,0}}, +/* 22782 */ {(11<<2)|2,{45,111,0}}, +/* 22783 */ {(11<<2)|2,{45,111,0}}, +/* 22784 */ {(16<<2)|3,{45,115,48}}, +/* 22785 */ {(16<<2)|3,{45,115,49}}, +/* 22786 */ {(16<<2)|3,{45,115,50}}, +/* 22787 */ {(16<<2)|3,{45,115,97}}, +/* 22788 */ {(16<<2)|3,{45,115,99}}, +/* 22789 */ {(16<<2)|3,{45,115,101}}, +/* 22790 */ {(16<<2)|3,{45,115,105}}, +/* 22791 */ {(16<<2)|3,{45,115,111}}, +/* 22792 */ {(16<<2)|3,{45,115,115}}, +/* 22793 */ {(16<<2)|3,{45,115,116}}, +/* 22794 */ {(11<<2)|2,{45,115,0}}, +/* 22795 */ {(11<<2)|2,{45,115,0}}, +/* 22796 */ {(11<<2)|2,{45,115,0}}, +/* 22797 */ {(11<<2)|2,{45,115,0}}, +/* 22798 */ {(11<<2)|2,{45,115,0}}, +/* 22799 */ {(11<<2)|2,{45,115,0}}, +/* 22800 */ {(11<<2)|2,{45,115,0}}, +/* 22801 */ {(11<<2)|2,{45,115,0}}, +/* 22802 */ {(11<<2)|2,{45,115,0}}, +/* 22803 */ {(11<<2)|2,{45,115,0}}, +/* 22804 */ {(11<<2)|2,{45,115,0}}, +/* 22805 */ {(11<<2)|2,{45,115,0}}, +/* 22806 */ {(11<<2)|2,{45,115,0}}, +/* 22807 */ {(11<<2)|2,{45,115,0}}, +/* 22808 */ {(11<<2)|2,{45,115,0}}, +/* 22809 */ {(11<<2)|2,{45,115,0}}, +/* 22810 */ {(11<<2)|2,{45,115,0}}, +/* 22811 */ {(11<<2)|2,{45,115,0}}, +/* 22812 */ {(11<<2)|2,{45,115,0}}, +/* 22813 */ {(11<<2)|2,{45,115,0}}, +/* 22814 */ {(11<<2)|2,{45,115,0}}, +/* 22815 */ {(11<<2)|2,{45,115,0}}, +/* 22816 */ {(16<<2)|3,{45,116,48}}, +/* 22817 */ {(16<<2)|3,{45,116,49}}, +/* 22818 */ {(16<<2)|3,{45,116,50}}, +/* 22819 */ {(16<<2)|3,{45,116,97}}, +/* 22820 */ {(16<<2)|3,{45,116,99}}, +/* 22821 */ {(16<<2)|3,{45,116,101}}, +/* 22822 */ {(16<<2)|3,{45,116,105}}, +/* 22823 */ {(16<<2)|3,{45,116,111}}, +/* 22824 */ {(16<<2)|3,{45,116,115}}, +/* 22825 */ {(16<<2)|3,{45,116,116}}, +/* 22826 */ {(11<<2)|2,{45,116,0}}, +/* 22827 */ {(11<<2)|2,{45,116,0}}, +/* 22828 */ {(11<<2)|2,{45,116,0}}, +/* 22829 */ {(11<<2)|2,{45,116,0}}, +/* 22830 */ {(11<<2)|2,{45,116,0}}, +/* 22831 */ {(11<<2)|2,{45,116,0}}, +/* 22832 */ {(11<<2)|2,{45,116,0}}, +/* 22833 */ {(11<<2)|2,{45,116,0}}, +/* 22834 */ {(11<<2)|2,{45,116,0}}, +/* 22835 */ {(11<<2)|2,{45,116,0}}, +/* 22836 */ {(11<<2)|2,{45,116,0}}, +/* 22837 */ {(11<<2)|2,{45,116,0}}, +/* 22838 */ {(11<<2)|2,{45,116,0}}, +/* 22839 */ {(11<<2)|2,{45,116,0}}, +/* 22840 */ {(11<<2)|2,{45,116,0}}, +/* 22841 */ {(11<<2)|2,{45,116,0}}, +/* 22842 */ {(11<<2)|2,{45,116,0}}, +/* 22843 */ {(11<<2)|2,{45,116,0}}, +/* 22844 */ {(11<<2)|2,{45,116,0}}, +/* 22845 */ {(11<<2)|2,{45,116,0}}, +/* 22846 */ {(11<<2)|2,{45,116,0}}, +/* 22847 */ {(11<<2)|2,{45,116,0}}, +/* 22848 */ {(12<<2)|2,{45,32,0}}, +/* 22849 */ {(12<<2)|2,{45,32,0}}, +/* 22850 */ {(12<<2)|2,{45,32,0}}, +/* 22851 */ {(12<<2)|2,{45,32,0}}, +/* 22852 */ {(12<<2)|2,{45,32,0}}, +/* 22853 */ {(12<<2)|2,{45,32,0}}, +/* 22854 */ {(12<<2)|2,{45,32,0}}, +/* 22855 */ {(12<<2)|2,{45,32,0}}, +/* 22856 */ {(12<<2)|2,{45,32,0}}, +/* 22857 */ {(12<<2)|2,{45,32,0}}, +/* 22858 */ {(12<<2)|2,{45,32,0}}, +/* 22859 */ {(12<<2)|2,{45,32,0}}, +/* 22860 */ {(12<<2)|2,{45,32,0}}, +/* 22861 */ {(12<<2)|2,{45,32,0}}, +/* 22862 */ {(12<<2)|2,{45,32,0}}, +/* 22863 */ {(12<<2)|2,{45,32,0}}, +/* 22864 */ {(12<<2)|2,{45,37,0}}, +/* 22865 */ {(12<<2)|2,{45,37,0}}, +/* 22866 */ {(12<<2)|2,{45,37,0}}, +/* 22867 */ {(12<<2)|2,{45,37,0}}, +/* 22868 */ {(12<<2)|2,{45,37,0}}, +/* 22869 */ {(12<<2)|2,{45,37,0}}, +/* 22870 */ {(12<<2)|2,{45,37,0}}, +/* 22871 */ {(12<<2)|2,{45,37,0}}, +/* 22872 */ {(12<<2)|2,{45,37,0}}, +/* 22873 */ {(12<<2)|2,{45,37,0}}, +/* 22874 */ {(12<<2)|2,{45,37,0}}, +/* 22875 */ {(12<<2)|2,{45,37,0}}, +/* 22876 */ {(12<<2)|2,{45,37,0}}, +/* 22877 */ {(12<<2)|2,{45,37,0}}, +/* 22878 */ {(12<<2)|2,{45,37,0}}, +/* 22879 */ {(12<<2)|2,{45,37,0}}, +/* 22880 */ {(12<<2)|2,{45,45,0}}, +/* 22881 */ {(12<<2)|2,{45,45,0}}, +/* 22882 */ {(12<<2)|2,{45,45,0}}, +/* 22883 */ {(12<<2)|2,{45,45,0}}, +/* 22884 */ {(12<<2)|2,{45,45,0}}, +/* 22885 */ {(12<<2)|2,{45,45,0}}, +/* 22886 */ {(12<<2)|2,{45,45,0}}, +/* 22887 */ {(12<<2)|2,{45,45,0}}, +/* 22888 */ {(12<<2)|2,{45,45,0}}, +/* 22889 */ {(12<<2)|2,{45,45,0}}, +/* 22890 */ {(12<<2)|2,{45,45,0}}, +/* 22891 */ {(12<<2)|2,{45,45,0}}, +/* 22892 */ {(12<<2)|2,{45,45,0}}, +/* 22893 */ {(12<<2)|2,{45,45,0}}, +/* 22894 */ {(12<<2)|2,{45,45,0}}, +/* 22895 */ {(12<<2)|2,{45,45,0}}, +/* 22896 */ {(12<<2)|2,{45,46,0}}, +/* 22897 */ {(12<<2)|2,{45,46,0}}, +/* 22898 */ {(12<<2)|2,{45,46,0}}, +/* 22899 */ {(12<<2)|2,{45,46,0}}, +/* 22900 */ {(12<<2)|2,{45,46,0}}, +/* 22901 */ {(12<<2)|2,{45,46,0}}, +/* 22902 */ {(12<<2)|2,{45,46,0}}, +/* 22903 */ {(12<<2)|2,{45,46,0}}, +/* 22904 */ {(12<<2)|2,{45,46,0}}, +/* 22905 */ {(12<<2)|2,{45,46,0}}, +/* 22906 */ {(12<<2)|2,{45,46,0}}, +/* 22907 */ {(12<<2)|2,{45,46,0}}, +/* 22908 */ {(12<<2)|2,{45,46,0}}, +/* 22909 */ {(12<<2)|2,{45,46,0}}, +/* 22910 */ {(12<<2)|2,{45,46,0}}, +/* 22911 */ {(12<<2)|2,{45,46,0}}, +/* 22912 */ {(12<<2)|2,{45,47,0}}, +/* 22913 */ {(12<<2)|2,{45,47,0}}, +/* 22914 */ {(12<<2)|2,{45,47,0}}, +/* 22915 */ {(12<<2)|2,{45,47,0}}, +/* 22916 */ {(12<<2)|2,{45,47,0}}, +/* 22917 */ {(12<<2)|2,{45,47,0}}, +/* 22918 */ {(12<<2)|2,{45,47,0}}, +/* 22919 */ {(12<<2)|2,{45,47,0}}, +/* 22920 */ {(12<<2)|2,{45,47,0}}, +/* 22921 */ {(12<<2)|2,{45,47,0}}, +/* 22922 */ {(12<<2)|2,{45,47,0}}, +/* 22923 */ {(12<<2)|2,{45,47,0}}, +/* 22924 */ {(12<<2)|2,{45,47,0}}, +/* 22925 */ {(12<<2)|2,{45,47,0}}, +/* 22926 */ {(12<<2)|2,{45,47,0}}, +/* 22927 */ {(12<<2)|2,{45,47,0}}, +/* 22928 */ {(12<<2)|2,{45,51,0}}, +/* 22929 */ {(12<<2)|2,{45,51,0}}, +/* 22930 */ {(12<<2)|2,{45,51,0}}, +/* 22931 */ {(12<<2)|2,{45,51,0}}, +/* 22932 */ {(12<<2)|2,{45,51,0}}, +/* 22933 */ {(12<<2)|2,{45,51,0}}, +/* 22934 */ {(12<<2)|2,{45,51,0}}, +/* 22935 */ {(12<<2)|2,{45,51,0}}, +/* 22936 */ {(12<<2)|2,{45,51,0}}, +/* 22937 */ {(12<<2)|2,{45,51,0}}, +/* 22938 */ {(12<<2)|2,{45,51,0}}, +/* 22939 */ {(12<<2)|2,{45,51,0}}, +/* 22940 */ {(12<<2)|2,{45,51,0}}, +/* 22941 */ {(12<<2)|2,{45,51,0}}, +/* 22942 */ {(12<<2)|2,{45,51,0}}, +/* 22943 */ {(12<<2)|2,{45,51,0}}, +/* 22944 */ {(12<<2)|2,{45,52,0}}, +/* 22945 */ {(12<<2)|2,{45,52,0}}, +/* 22946 */ {(12<<2)|2,{45,52,0}}, +/* 22947 */ {(12<<2)|2,{45,52,0}}, +/* 22948 */ {(12<<2)|2,{45,52,0}}, +/* 22949 */ {(12<<2)|2,{45,52,0}}, +/* 22950 */ {(12<<2)|2,{45,52,0}}, +/* 22951 */ {(12<<2)|2,{45,52,0}}, +/* 22952 */ {(12<<2)|2,{45,52,0}}, +/* 22953 */ {(12<<2)|2,{45,52,0}}, +/* 22954 */ {(12<<2)|2,{45,52,0}}, +/* 22955 */ {(12<<2)|2,{45,52,0}}, +/* 22956 */ {(12<<2)|2,{45,52,0}}, +/* 22957 */ {(12<<2)|2,{45,52,0}}, +/* 22958 */ {(12<<2)|2,{45,52,0}}, +/* 22959 */ {(12<<2)|2,{45,52,0}}, +/* 22960 */ {(12<<2)|2,{45,53,0}}, +/* 22961 */ {(12<<2)|2,{45,53,0}}, +/* 22962 */ {(12<<2)|2,{45,53,0}}, +/* 22963 */ {(12<<2)|2,{45,53,0}}, +/* 22964 */ {(12<<2)|2,{45,53,0}}, +/* 22965 */ {(12<<2)|2,{45,53,0}}, +/* 22966 */ {(12<<2)|2,{45,53,0}}, +/* 22967 */ {(12<<2)|2,{45,53,0}}, +/* 22968 */ {(12<<2)|2,{45,53,0}}, +/* 22969 */ {(12<<2)|2,{45,53,0}}, +/* 22970 */ {(12<<2)|2,{45,53,0}}, +/* 22971 */ {(12<<2)|2,{45,53,0}}, +/* 22972 */ {(12<<2)|2,{45,53,0}}, +/* 22973 */ {(12<<2)|2,{45,53,0}}, +/* 22974 */ {(12<<2)|2,{45,53,0}}, +/* 22975 */ {(12<<2)|2,{45,53,0}}, +/* 22976 */ {(12<<2)|2,{45,54,0}}, +/* 22977 */ {(12<<2)|2,{45,54,0}}, +/* 22978 */ {(12<<2)|2,{45,54,0}}, +/* 22979 */ {(12<<2)|2,{45,54,0}}, +/* 22980 */ {(12<<2)|2,{45,54,0}}, +/* 22981 */ {(12<<2)|2,{45,54,0}}, +/* 22982 */ {(12<<2)|2,{45,54,0}}, +/* 22983 */ {(12<<2)|2,{45,54,0}}, +/* 22984 */ {(12<<2)|2,{45,54,0}}, +/* 22985 */ {(12<<2)|2,{45,54,0}}, +/* 22986 */ {(12<<2)|2,{45,54,0}}, +/* 22987 */ {(12<<2)|2,{45,54,0}}, +/* 22988 */ {(12<<2)|2,{45,54,0}}, +/* 22989 */ {(12<<2)|2,{45,54,0}}, +/* 22990 */ {(12<<2)|2,{45,54,0}}, +/* 22991 */ {(12<<2)|2,{45,54,0}}, +/* 22992 */ {(12<<2)|2,{45,55,0}}, +/* 22993 */ {(12<<2)|2,{45,55,0}}, +/* 22994 */ {(12<<2)|2,{45,55,0}}, +/* 22995 */ {(12<<2)|2,{45,55,0}}, +/* 22996 */ {(12<<2)|2,{45,55,0}}, +/* 22997 */ {(12<<2)|2,{45,55,0}}, +/* 22998 */ {(12<<2)|2,{45,55,0}}, +/* 22999 */ {(12<<2)|2,{45,55,0}}, +/* 23000 */ {(12<<2)|2,{45,55,0}}, +/* 23001 */ {(12<<2)|2,{45,55,0}}, +/* 23002 */ {(12<<2)|2,{45,55,0}}, +/* 23003 */ {(12<<2)|2,{45,55,0}}, +/* 23004 */ {(12<<2)|2,{45,55,0}}, +/* 23005 */ {(12<<2)|2,{45,55,0}}, +/* 23006 */ {(12<<2)|2,{45,55,0}}, +/* 23007 */ {(12<<2)|2,{45,55,0}}, +/* 23008 */ {(12<<2)|2,{45,56,0}}, +/* 23009 */ {(12<<2)|2,{45,56,0}}, +/* 23010 */ {(12<<2)|2,{45,56,0}}, +/* 23011 */ {(12<<2)|2,{45,56,0}}, +/* 23012 */ {(12<<2)|2,{45,56,0}}, +/* 23013 */ {(12<<2)|2,{45,56,0}}, +/* 23014 */ {(12<<2)|2,{45,56,0}}, +/* 23015 */ {(12<<2)|2,{45,56,0}}, +/* 23016 */ {(12<<2)|2,{45,56,0}}, +/* 23017 */ {(12<<2)|2,{45,56,0}}, +/* 23018 */ {(12<<2)|2,{45,56,0}}, +/* 23019 */ {(12<<2)|2,{45,56,0}}, +/* 23020 */ {(12<<2)|2,{45,56,0}}, +/* 23021 */ {(12<<2)|2,{45,56,0}}, +/* 23022 */ {(12<<2)|2,{45,56,0}}, +/* 23023 */ {(12<<2)|2,{45,56,0}}, +/* 23024 */ {(12<<2)|2,{45,57,0}}, +/* 23025 */ {(12<<2)|2,{45,57,0}}, +/* 23026 */ {(12<<2)|2,{45,57,0}}, +/* 23027 */ {(12<<2)|2,{45,57,0}}, +/* 23028 */ {(12<<2)|2,{45,57,0}}, +/* 23029 */ {(12<<2)|2,{45,57,0}}, +/* 23030 */ {(12<<2)|2,{45,57,0}}, +/* 23031 */ {(12<<2)|2,{45,57,0}}, +/* 23032 */ {(12<<2)|2,{45,57,0}}, +/* 23033 */ {(12<<2)|2,{45,57,0}}, +/* 23034 */ {(12<<2)|2,{45,57,0}}, +/* 23035 */ {(12<<2)|2,{45,57,0}}, +/* 23036 */ {(12<<2)|2,{45,57,0}}, +/* 23037 */ {(12<<2)|2,{45,57,0}}, +/* 23038 */ {(12<<2)|2,{45,57,0}}, +/* 23039 */ {(12<<2)|2,{45,57,0}}, +/* 23040 */ {(12<<2)|2,{45,61,0}}, +/* 23041 */ {(12<<2)|2,{45,61,0}}, +/* 23042 */ {(12<<2)|2,{45,61,0}}, +/* 23043 */ {(12<<2)|2,{45,61,0}}, +/* 23044 */ {(12<<2)|2,{45,61,0}}, +/* 23045 */ {(12<<2)|2,{45,61,0}}, +/* 23046 */ {(12<<2)|2,{45,61,0}}, +/* 23047 */ {(12<<2)|2,{45,61,0}}, +/* 23048 */ {(12<<2)|2,{45,61,0}}, +/* 23049 */ {(12<<2)|2,{45,61,0}}, +/* 23050 */ {(12<<2)|2,{45,61,0}}, +/* 23051 */ {(12<<2)|2,{45,61,0}}, +/* 23052 */ {(12<<2)|2,{45,61,0}}, +/* 23053 */ {(12<<2)|2,{45,61,0}}, +/* 23054 */ {(12<<2)|2,{45,61,0}}, +/* 23055 */ {(12<<2)|2,{45,61,0}}, +/* 23056 */ {(12<<2)|2,{45,65,0}}, +/* 23057 */ {(12<<2)|2,{45,65,0}}, +/* 23058 */ {(12<<2)|2,{45,65,0}}, +/* 23059 */ {(12<<2)|2,{45,65,0}}, +/* 23060 */ {(12<<2)|2,{45,65,0}}, +/* 23061 */ {(12<<2)|2,{45,65,0}}, +/* 23062 */ {(12<<2)|2,{45,65,0}}, +/* 23063 */ {(12<<2)|2,{45,65,0}}, +/* 23064 */ {(12<<2)|2,{45,65,0}}, +/* 23065 */ {(12<<2)|2,{45,65,0}}, +/* 23066 */ {(12<<2)|2,{45,65,0}}, +/* 23067 */ {(12<<2)|2,{45,65,0}}, +/* 23068 */ {(12<<2)|2,{45,65,0}}, +/* 23069 */ {(12<<2)|2,{45,65,0}}, +/* 23070 */ {(12<<2)|2,{45,65,0}}, +/* 23071 */ {(12<<2)|2,{45,65,0}}, +/* 23072 */ {(12<<2)|2,{45,95,0}}, +/* 23073 */ {(12<<2)|2,{45,95,0}}, +/* 23074 */ {(12<<2)|2,{45,95,0}}, +/* 23075 */ {(12<<2)|2,{45,95,0}}, +/* 23076 */ {(12<<2)|2,{45,95,0}}, +/* 23077 */ {(12<<2)|2,{45,95,0}}, +/* 23078 */ {(12<<2)|2,{45,95,0}}, +/* 23079 */ {(12<<2)|2,{45,95,0}}, +/* 23080 */ {(12<<2)|2,{45,95,0}}, +/* 23081 */ {(12<<2)|2,{45,95,0}}, +/* 23082 */ {(12<<2)|2,{45,95,0}}, +/* 23083 */ {(12<<2)|2,{45,95,0}}, +/* 23084 */ {(12<<2)|2,{45,95,0}}, +/* 23085 */ {(12<<2)|2,{45,95,0}}, +/* 23086 */ {(12<<2)|2,{45,95,0}}, +/* 23087 */ {(12<<2)|2,{45,95,0}}, +/* 23088 */ {(12<<2)|2,{45,98,0}}, +/* 23089 */ {(12<<2)|2,{45,98,0}}, +/* 23090 */ {(12<<2)|2,{45,98,0}}, +/* 23091 */ {(12<<2)|2,{45,98,0}}, +/* 23092 */ {(12<<2)|2,{45,98,0}}, +/* 23093 */ {(12<<2)|2,{45,98,0}}, +/* 23094 */ {(12<<2)|2,{45,98,0}}, +/* 23095 */ {(12<<2)|2,{45,98,0}}, +/* 23096 */ {(12<<2)|2,{45,98,0}}, +/* 23097 */ {(12<<2)|2,{45,98,0}}, +/* 23098 */ {(12<<2)|2,{45,98,0}}, +/* 23099 */ {(12<<2)|2,{45,98,0}}, +/* 23100 */ {(12<<2)|2,{45,98,0}}, +/* 23101 */ {(12<<2)|2,{45,98,0}}, +/* 23102 */ {(12<<2)|2,{45,98,0}}, +/* 23103 */ {(12<<2)|2,{45,98,0}}, +/* 23104 */ {(12<<2)|2,{45,100,0}}, +/* 23105 */ {(12<<2)|2,{45,100,0}}, +/* 23106 */ {(12<<2)|2,{45,100,0}}, +/* 23107 */ {(12<<2)|2,{45,100,0}}, +/* 23108 */ {(12<<2)|2,{45,100,0}}, +/* 23109 */ {(12<<2)|2,{45,100,0}}, +/* 23110 */ {(12<<2)|2,{45,100,0}}, +/* 23111 */ {(12<<2)|2,{45,100,0}}, +/* 23112 */ {(12<<2)|2,{45,100,0}}, +/* 23113 */ {(12<<2)|2,{45,100,0}}, +/* 23114 */ {(12<<2)|2,{45,100,0}}, +/* 23115 */ {(12<<2)|2,{45,100,0}}, +/* 23116 */ {(12<<2)|2,{45,100,0}}, +/* 23117 */ {(12<<2)|2,{45,100,0}}, +/* 23118 */ {(12<<2)|2,{45,100,0}}, +/* 23119 */ {(12<<2)|2,{45,100,0}}, +/* 23120 */ {(12<<2)|2,{45,102,0}}, +/* 23121 */ {(12<<2)|2,{45,102,0}}, +/* 23122 */ {(12<<2)|2,{45,102,0}}, +/* 23123 */ {(12<<2)|2,{45,102,0}}, +/* 23124 */ {(12<<2)|2,{45,102,0}}, +/* 23125 */ {(12<<2)|2,{45,102,0}}, +/* 23126 */ {(12<<2)|2,{45,102,0}}, +/* 23127 */ {(12<<2)|2,{45,102,0}}, +/* 23128 */ {(12<<2)|2,{45,102,0}}, +/* 23129 */ {(12<<2)|2,{45,102,0}}, +/* 23130 */ {(12<<2)|2,{45,102,0}}, +/* 23131 */ {(12<<2)|2,{45,102,0}}, +/* 23132 */ {(12<<2)|2,{45,102,0}}, +/* 23133 */ {(12<<2)|2,{45,102,0}}, +/* 23134 */ {(12<<2)|2,{45,102,0}}, +/* 23135 */ {(12<<2)|2,{45,102,0}}, +/* 23136 */ {(12<<2)|2,{45,103,0}}, +/* 23137 */ {(12<<2)|2,{45,103,0}}, +/* 23138 */ {(12<<2)|2,{45,103,0}}, +/* 23139 */ {(12<<2)|2,{45,103,0}}, +/* 23140 */ {(12<<2)|2,{45,103,0}}, +/* 23141 */ {(12<<2)|2,{45,103,0}}, +/* 23142 */ {(12<<2)|2,{45,103,0}}, +/* 23143 */ {(12<<2)|2,{45,103,0}}, +/* 23144 */ {(12<<2)|2,{45,103,0}}, +/* 23145 */ {(12<<2)|2,{45,103,0}}, +/* 23146 */ {(12<<2)|2,{45,103,0}}, +/* 23147 */ {(12<<2)|2,{45,103,0}}, +/* 23148 */ {(12<<2)|2,{45,103,0}}, +/* 23149 */ {(12<<2)|2,{45,103,0}}, +/* 23150 */ {(12<<2)|2,{45,103,0}}, +/* 23151 */ {(12<<2)|2,{45,103,0}}, +/* 23152 */ {(12<<2)|2,{45,104,0}}, +/* 23153 */ {(12<<2)|2,{45,104,0}}, +/* 23154 */ {(12<<2)|2,{45,104,0}}, +/* 23155 */ {(12<<2)|2,{45,104,0}}, +/* 23156 */ {(12<<2)|2,{45,104,0}}, +/* 23157 */ {(12<<2)|2,{45,104,0}}, +/* 23158 */ {(12<<2)|2,{45,104,0}}, +/* 23159 */ {(12<<2)|2,{45,104,0}}, +/* 23160 */ {(12<<2)|2,{45,104,0}}, +/* 23161 */ {(12<<2)|2,{45,104,0}}, +/* 23162 */ {(12<<2)|2,{45,104,0}}, +/* 23163 */ {(12<<2)|2,{45,104,0}}, +/* 23164 */ {(12<<2)|2,{45,104,0}}, +/* 23165 */ {(12<<2)|2,{45,104,0}}, +/* 23166 */ {(12<<2)|2,{45,104,0}}, +/* 23167 */ {(12<<2)|2,{45,104,0}}, +/* 23168 */ {(12<<2)|2,{45,108,0}}, +/* 23169 */ {(12<<2)|2,{45,108,0}}, +/* 23170 */ {(12<<2)|2,{45,108,0}}, +/* 23171 */ {(12<<2)|2,{45,108,0}}, +/* 23172 */ {(12<<2)|2,{45,108,0}}, +/* 23173 */ {(12<<2)|2,{45,108,0}}, +/* 23174 */ {(12<<2)|2,{45,108,0}}, +/* 23175 */ {(12<<2)|2,{45,108,0}}, +/* 23176 */ {(12<<2)|2,{45,108,0}}, +/* 23177 */ {(12<<2)|2,{45,108,0}}, +/* 23178 */ {(12<<2)|2,{45,108,0}}, +/* 23179 */ {(12<<2)|2,{45,108,0}}, +/* 23180 */ {(12<<2)|2,{45,108,0}}, +/* 23181 */ {(12<<2)|2,{45,108,0}}, +/* 23182 */ {(12<<2)|2,{45,108,0}}, +/* 23183 */ {(12<<2)|2,{45,108,0}}, +/* 23184 */ {(12<<2)|2,{45,109,0}}, +/* 23185 */ {(12<<2)|2,{45,109,0}}, +/* 23186 */ {(12<<2)|2,{45,109,0}}, +/* 23187 */ {(12<<2)|2,{45,109,0}}, +/* 23188 */ {(12<<2)|2,{45,109,0}}, +/* 23189 */ {(12<<2)|2,{45,109,0}}, +/* 23190 */ {(12<<2)|2,{45,109,0}}, +/* 23191 */ {(12<<2)|2,{45,109,0}}, +/* 23192 */ {(12<<2)|2,{45,109,0}}, +/* 23193 */ {(12<<2)|2,{45,109,0}}, +/* 23194 */ {(12<<2)|2,{45,109,0}}, +/* 23195 */ {(12<<2)|2,{45,109,0}}, +/* 23196 */ {(12<<2)|2,{45,109,0}}, +/* 23197 */ {(12<<2)|2,{45,109,0}}, +/* 23198 */ {(12<<2)|2,{45,109,0}}, +/* 23199 */ {(12<<2)|2,{45,109,0}}, +/* 23200 */ {(12<<2)|2,{45,110,0}}, +/* 23201 */ {(12<<2)|2,{45,110,0}}, +/* 23202 */ {(12<<2)|2,{45,110,0}}, +/* 23203 */ {(12<<2)|2,{45,110,0}}, +/* 23204 */ {(12<<2)|2,{45,110,0}}, +/* 23205 */ {(12<<2)|2,{45,110,0}}, +/* 23206 */ {(12<<2)|2,{45,110,0}}, +/* 23207 */ {(12<<2)|2,{45,110,0}}, +/* 23208 */ {(12<<2)|2,{45,110,0}}, +/* 23209 */ {(12<<2)|2,{45,110,0}}, +/* 23210 */ {(12<<2)|2,{45,110,0}}, +/* 23211 */ {(12<<2)|2,{45,110,0}}, +/* 23212 */ {(12<<2)|2,{45,110,0}}, +/* 23213 */ {(12<<2)|2,{45,110,0}}, +/* 23214 */ {(12<<2)|2,{45,110,0}}, +/* 23215 */ {(12<<2)|2,{45,110,0}}, +/* 23216 */ {(12<<2)|2,{45,112,0}}, +/* 23217 */ {(12<<2)|2,{45,112,0}}, +/* 23218 */ {(12<<2)|2,{45,112,0}}, +/* 23219 */ {(12<<2)|2,{45,112,0}}, +/* 23220 */ {(12<<2)|2,{45,112,0}}, +/* 23221 */ {(12<<2)|2,{45,112,0}}, +/* 23222 */ {(12<<2)|2,{45,112,0}}, +/* 23223 */ {(12<<2)|2,{45,112,0}}, +/* 23224 */ {(12<<2)|2,{45,112,0}}, +/* 23225 */ {(12<<2)|2,{45,112,0}}, +/* 23226 */ {(12<<2)|2,{45,112,0}}, +/* 23227 */ {(12<<2)|2,{45,112,0}}, +/* 23228 */ {(12<<2)|2,{45,112,0}}, +/* 23229 */ {(12<<2)|2,{45,112,0}}, +/* 23230 */ {(12<<2)|2,{45,112,0}}, +/* 23231 */ {(12<<2)|2,{45,112,0}}, +/* 23232 */ {(12<<2)|2,{45,114,0}}, +/* 23233 */ {(12<<2)|2,{45,114,0}}, +/* 23234 */ {(12<<2)|2,{45,114,0}}, +/* 23235 */ {(12<<2)|2,{45,114,0}}, +/* 23236 */ {(12<<2)|2,{45,114,0}}, +/* 23237 */ {(12<<2)|2,{45,114,0}}, +/* 23238 */ {(12<<2)|2,{45,114,0}}, +/* 23239 */ {(12<<2)|2,{45,114,0}}, +/* 23240 */ {(12<<2)|2,{45,114,0}}, +/* 23241 */ {(12<<2)|2,{45,114,0}}, +/* 23242 */ {(12<<2)|2,{45,114,0}}, +/* 23243 */ {(12<<2)|2,{45,114,0}}, +/* 23244 */ {(12<<2)|2,{45,114,0}}, +/* 23245 */ {(12<<2)|2,{45,114,0}}, +/* 23246 */ {(12<<2)|2,{45,114,0}}, +/* 23247 */ {(12<<2)|2,{45,114,0}}, +/* 23248 */ {(12<<2)|2,{45,117,0}}, +/* 23249 */ {(12<<2)|2,{45,117,0}}, +/* 23250 */ {(12<<2)|2,{45,117,0}}, +/* 23251 */ {(12<<2)|2,{45,117,0}}, +/* 23252 */ {(12<<2)|2,{45,117,0}}, +/* 23253 */ {(12<<2)|2,{45,117,0}}, +/* 23254 */ {(12<<2)|2,{45,117,0}}, +/* 23255 */ {(12<<2)|2,{45,117,0}}, +/* 23256 */ {(12<<2)|2,{45,117,0}}, +/* 23257 */ {(12<<2)|2,{45,117,0}}, +/* 23258 */ {(12<<2)|2,{45,117,0}}, +/* 23259 */ {(12<<2)|2,{45,117,0}}, +/* 23260 */ {(12<<2)|2,{45,117,0}}, +/* 23261 */ {(12<<2)|2,{45,117,0}}, +/* 23262 */ {(12<<2)|2,{45,117,0}}, +/* 23263 */ {(12<<2)|2,{45,117,0}}, +/* 23264 */ {(13<<2)|2,{45,58,0}}, +/* 23265 */ {(13<<2)|2,{45,58,0}}, +/* 23266 */ {(13<<2)|2,{45,58,0}}, +/* 23267 */ {(13<<2)|2,{45,58,0}}, +/* 23268 */ {(13<<2)|2,{45,58,0}}, +/* 23269 */ {(13<<2)|2,{45,58,0}}, +/* 23270 */ {(13<<2)|2,{45,58,0}}, +/* 23271 */ {(13<<2)|2,{45,58,0}}, +/* 23272 */ {(13<<2)|2,{45,66,0}}, +/* 23273 */ {(13<<2)|2,{45,66,0}}, +/* 23274 */ {(13<<2)|2,{45,66,0}}, +/* 23275 */ {(13<<2)|2,{45,66,0}}, +/* 23276 */ {(13<<2)|2,{45,66,0}}, +/* 23277 */ {(13<<2)|2,{45,66,0}}, +/* 23278 */ {(13<<2)|2,{45,66,0}}, +/* 23279 */ {(13<<2)|2,{45,66,0}}, +/* 23280 */ {(13<<2)|2,{45,67,0}}, +/* 23281 */ {(13<<2)|2,{45,67,0}}, +/* 23282 */ {(13<<2)|2,{45,67,0}}, +/* 23283 */ {(13<<2)|2,{45,67,0}}, +/* 23284 */ {(13<<2)|2,{45,67,0}}, +/* 23285 */ {(13<<2)|2,{45,67,0}}, +/* 23286 */ {(13<<2)|2,{45,67,0}}, +/* 23287 */ {(13<<2)|2,{45,67,0}}, +/* 23288 */ {(13<<2)|2,{45,68,0}}, +/* 23289 */ {(13<<2)|2,{45,68,0}}, +/* 23290 */ {(13<<2)|2,{45,68,0}}, +/* 23291 */ {(13<<2)|2,{45,68,0}}, +/* 23292 */ {(13<<2)|2,{45,68,0}}, +/* 23293 */ {(13<<2)|2,{45,68,0}}, +/* 23294 */ {(13<<2)|2,{45,68,0}}, +/* 23295 */ {(13<<2)|2,{45,68,0}}, +/* 23296 */ {(13<<2)|2,{45,69,0}}, +/* 23297 */ {(13<<2)|2,{45,69,0}}, +/* 23298 */ {(13<<2)|2,{45,69,0}}, +/* 23299 */ {(13<<2)|2,{45,69,0}}, +/* 23300 */ {(13<<2)|2,{45,69,0}}, +/* 23301 */ {(13<<2)|2,{45,69,0}}, +/* 23302 */ {(13<<2)|2,{45,69,0}}, +/* 23303 */ {(13<<2)|2,{45,69,0}}, +/* 23304 */ {(13<<2)|2,{45,70,0}}, +/* 23305 */ {(13<<2)|2,{45,70,0}}, +/* 23306 */ {(13<<2)|2,{45,70,0}}, +/* 23307 */ {(13<<2)|2,{45,70,0}}, +/* 23308 */ {(13<<2)|2,{45,70,0}}, +/* 23309 */ {(13<<2)|2,{45,70,0}}, +/* 23310 */ {(13<<2)|2,{45,70,0}}, +/* 23311 */ {(13<<2)|2,{45,70,0}}, +/* 23312 */ {(13<<2)|2,{45,71,0}}, +/* 23313 */ {(13<<2)|2,{45,71,0}}, +/* 23314 */ {(13<<2)|2,{45,71,0}}, +/* 23315 */ {(13<<2)|2,{45,71,0}}, +/* 23316 */ {(13<<2)|2,{45,71,0}}, +/* 23317 */ {(13<<2)|2,{45,71,0}}, +/* 23318 */ {(13<<2)|2,{45,71,0}}, +/* 23319 */ {(13<<2)|2,{45,71,0}}, +/* 23320 */ {(13<<2)|2,{45,72,0}}, +/* 23321 */ {(13<<2)|2,{45,72,0}}, +/* 23322 */ {(13<<2)|2,{45,72,0}}, +/* 23323 */ {(13<<2)|2,{45,72,0}}, +/* 23324 */ {(13<<2)|2,{45,72,0}}, +/* 23325 */ {(13<<2)|2,{45,72,0}}, +/* 23326 */ {(13<<2)|2,{45,72,0}}, +/* 23327 */ {(13<<2)|2,{45,72,0}}, +/* 23328 */ {(13<<2)|2,{45,73,0}}, +/* 23329 */ {(13<<2)|2,{45,73,0}}, +/* 23330 */ {(13<<2)|2,{45,73,0}}, +/* 23331 */ {(13<<2)|2,{45,73,0}}, +/* 23332 */ {(13<<2)|2,{45,73,0}}, +/* 23333 */ {(13<<2)|2,{45,73,0}}, +/* 23334 */ {(13<<2)|2,{45,73,0}}, +/* 23335 */ {(13<<2)|2,{45,73,0}}, +/* 23336 */ {(13<<2)|2,{45,74,0}}, +/* 23337 */ {(13<<2)|2,{45,74,0}}, +/* 23338 */ {(13<<2)|2,{45,74,0}}, +/* 23339 */ {(13<<2)|2,{45,74,0}}, +/* 23340 */ {(13<<2)|2,{45,74,0}}, +/* 23341 */ {(13<<2)|2,{45,74,0}}, +/* 23342 */ {(13<<2)|2,{45,74,0}}, +/* 23343 */ {(13<<2)|2,{45,74,0}}, +/* 23344 */ {(13<<2)|2,{45,75,0}}, +/* 23345 */ {(13<<2)|2,{45,75,0}}, +/* 23346 */ {(13<<2)|2,{45,75,0}}, +/* 23347 */ {(13<<2)|2,{45,75,0}}, +/* 23348 */ {(13<<2)|2,{45,75,0}}, +/* 23349 */ {(13<<2)|2,{45,75,0}}, +/* 23350 */ {(13<<2)|2,{45,75,0}}, +/* 23351 */ {(13<<2)|2,{45,75,0}}, +/* 23352 */ {(13<<2)|2,{45,76,0}}, +/* 23353 */ {(13<<2)|2,{45,76,0}}, +/* 23354 */ {(13<<2)|2,{45,76,0}}, +/* 23355 */ {(13<<2)|2,{45,76,0}}, +/* 23356 */ {(13<<2)|2,{45,76,0}}, +/* 23357 */ {(13<<2)|2,{45,76,0}}, +/* 23358 */ {(13<<2)|2,{45,76,0}}, +/* 23359 */ {(13<<2)|2,{45,76,0}}, +/* 23360 */ {(13<<2)|2,{45,77,0}}, +/* 23361 */ {(13<<2)|2,{45,77,0}}, +/* 23362 */ {(13<<2)|2,{45,77,0}}, +/* 23363 */ {(13<<2)|2,{45,77,0}}, +/* 23364 */ {(13<<2)|2,{45,77,0}}, +/* 23365 */ {(13<<2)|2,{45,77,0}}, +/* 23366 */ {(13<<2)|2,{45,77,0}}, +/* 23367 */ {(13<<2)|2,{45,77,0}}, +/* 23368 */ {(13<<2)|2,{45,78,0}}, +/* 23369 */ {(13<<2)|2,{45,78,0}}, +/* 23370 */ {(13<<2)|2,{45,78,0}}, +/* 23371 */ {(13<<2)|2,{45,78,0}}, +/* 23372 */ {(13<<2)|2,{45,78,0}}, +/* 23373 */ {(13<<2)|2,{45,78,0}}, +/* 23374 */ {(13<<2)|2,{45,78,0}}, +/* 23375 */ {(13<<2)|2,{45,78,0}}, +/* 23376 */ {(13<<2)|2,{45,79,0}}, +/* 23377 */ {(13<<2)|2,{45,79,0}}, +/* 23378 */ {(13<<2)|2,{45,79,0}}, +/* 23379 */ {(13<<2)|2,{45,79,0}}, +/* 23380 */ {(13<<2)|2,{45,79,0}}, +/* 23381 */ {(13<<2)|2,{45,79,0}}, +/* 23382 */ {(13<<2)|2,{45,79,0}}, +/* 23383 */ {(13<<2)|2,{45,79,0}}, +/* 23384 */ {(13<<2)|2,{45,80,0}}, +/* 23385 */ {(13<<2)|2,{45,80,0}}, +/* 23386 */ {(13<<2)|2,{45,80,0}}, +/* 23387 */ {(13<<2)|2,{45,80,0}}, +/* 23388 */ {(13<<2)|2,{45,80,0}}, +/* 23389 */ {(13<<2)|2,{45,80,0}}, +/* 23390 */ {(13<<2)|2,{45,80,0}}, +/* 23391 */ {(13<<2)|2,{45,80,0}}, +/* 23392 */ {(13<<2)|2,{45,81,0}}, +/* 23393 */ {(13<<2)|2,{45,81,0}}, +/* 23394 */ {(13<<2)|2,{45,81,0}}, +/* 23395 */ {(13<<2)|2,{45,81,0}}, +/* 23396 */ {(13<<2)|2,{45,81,0}}, +/* 23397 */ {(13<<2)|2,{45,81,0}}, +/* 23398 */ {(13<<2)|2,{45,81,0}}, +/* 23399 */ {(13<<2)|2,{45,81,0}}, +/* 23400 */ {(13<<2)|2,{45,82,0}}, +/* 23401 */ {(13<<2)|2,{45,82,0}}, +/* 23402 */ {(13<<2)|2,{45,82,0}}, +/* 23403 */ {(13<<2)|2,{45,82,0}}, +/* 23404 */ {(13<<2)|2,{45,82,0}}, +/* 23405 */ {(13<<2)|2,{45,82,0}}, +/* 23406 */ {(13<<2)|2,{45,82,0}}, +/* 23407 */ {(13<<2)|2,{45,82,0}}, +/* 23408 */ {(13<<2)|2,{45,83,0}}, +/* 23409 */ {(13<<2)|2,{45,83,0}}, +/* 23410 */ {(13<<2)|2,{45,83,0}}, +/* 23411 */ {(13<<2)|2,{45,83,0}}, +/* 23412 */ {(13<<2)|2,{45,83,0}}, +/* 23413 */ {(13<<2)|2,{45,83,0}}, +/* 23414 */ {(13<<2)|2,{45,83,0}}, +/* 23415 */ {(13<<2)|2,{45,83,0}}, +/* 23416 */ {(13<<2)|2,{45,84,0}}, +/* 23417 */ {(13<<2)|2,{45,84,0}}, +/* 23418 */ {(13<<2)|2,{45,84,0}}, +/* 23419 */ {(13<<2)|2,{45,84,0}}, +/* 23420 */ {(13<<2)|2,{45,84,0}}, +/* 23421 */ {(13<<2)|2,{45,84,0}}, +/* 23422 */ {(13<<2)|2,{45,84,0}}, +/* 23423 */ {(13<<2)|2,{45,84,0}}, +/* 23424 */ {(13<<2)|2,{45,85,0}}, +/* 23425 */ {(13<<2)|2,{45,85,0}}, +/* 23426 */ {(13<<2)|2,{45,85,0}}, +/* 23427 */ {(13<<2)|2,{45,85,0}}, +/* 23428 */ {(13<<2)|2,{45,85,0}}, +/* 23429 */ {(13<<2)|2,{45,85,0}}, +/* 23430 */ {(13<<2)|2,{45,85,0}}, +/* 23431 */ {(13<<2)|2,{45,85,0}}, +/* 23432 */ {(13<<2)|2,{45,86,0}}, +/* 23433 */ {(13<<2)|2,{45,86,0}}, +/* 23434 */ {(13<<2)|2,{45,86,0}}, +/* 23435 */ {(13<<2)|2,{45,86,0}}, +/* 23436 */ {(13<<2)|2,{45,86,0}}, +/* 23437 */ {(13<<2)|2,{45,86,0}}, +/* 23438 */ {(13<<2)|2,{45,86,0}}, +/* 23439 */ {(13<<2)|2,{45,86,0}}, +/* 23440 */ {(13<<2)|2,{45,87,0}}, +/* 23441 */ {(13<<2)|2,{45,87,0}}, +/* 23442 */ {(13<<2)|2,{45,87,0}}, +/* 23443 */ {(13<<2)|2,{45,87,0}}, +/* 23444 */ {(13<<2)|2,{45,87,0}}, +/* 23445 */ {(13<<2)|2,{45,87,0}}, +/* 23446 */ {(13<<2)|2,{45,87,0}}, +/* 23447 */ {(13<<2)|2,{45,87,0}}, +/* 23448 */ {(13<<2)|2,{45,89,0}}, +/* 23449 */ {(13<<2)|2,{45,89,0}}, +/* 23450 */ {(13<<2)|2,{45,89,0}}, +/* 23451 */ {(13<<2)|2,{45,89,0}}, +/* 23452 */ {(13<<2)|2,{45,89,0}}, +/* 23453 */ {(13<<2)|2,{45,89,0}}, +/* 23454 */ {(13<<2)|2,{45,89,0}}, +/* 23455 */ {(13<<2)|2,{45,89,0}}, +/* 23456 */ {(13<<2)|2,{45,106,0}}, +/* 23457 */ {(13<<2)|2,{45,106,0}}, +/* 23458 */ {(13<<2)|2,{45,106,0}}, +/* 23459 */ {(13<<2)|2,{45,106,0}}, +/* 23460 */ {(13<<2)|2,{45,106,0}}, +/* 23461 */ {(13<<2)|2,{45,106,0}}, +/* 23462 */ {(13<<2)|2,{45,106,0}}, +/* 23463 */ {(13<<2)|2,{45,106,0}}, +/* 23464 */ {(13<<2)|2,{45,107,0}}, +/* 23465 */ {(13<<2)|2,{45,107,0}}, +/* 23466 */ {(13<<2)|2,{45,107,0}}, +/* 23467 */ {(13<<2)|2,{45,107,0}}, +/* 23468 */ {(13<<2)|2,{45,107,0}}, +/* 23469 */ {(13<<2)|2,{45,107,0}}, +/* 23470 */ {(13<<2)|2,{45,107,0}}, +/* 23471 */ {(13<<2)|2,{45,107,0}}, +/* 23472 */ {(13<<2)|2,{45,113,0}}, +/* 23473 */ {(13<<2)|2,{45,113,0}}, +/* 23474 */ {(13<<2)|2,{45,113,0}}, +/* 23475 */ {(13<<2)|2,{45,113,0}}, +/* 23476 */ {(13<<2)|2,{45,113,0}}, +/* 23477 */ {(13<<2)|2,{45,113,0}}, +/* 23478 */ {(13<<2)|2,{45,113,0}}, +/* 23479 */ {(13<<2)|2,{45,113,0}}, +/* 23480 */ {(13<<2)|2,{45,118,0}}, +/* 23481 */ {(13<<2)|2,{45,118,0}}, +/* 23482 */ {(13<<2)|2,{45,118,0}}, +/* 23483 */ {(13<<2)|2,{45,118,0}}, +/* 23484 */ {(13<<2)|2,{45,118,0}}, +/* 23485 */ {(13<<2)|2,{45,118,0}}, +/* 23486 */ {(13<<2)|2,{45,118,0}}, +/* 23487 */ {(13<<2)|2,{45,118,0}}, +/* 23488 */ {(13<<2)|2,{45,119,0}}, +/* 23489 */ {(13<<2)|2,{45,119,0}}, +/* 23490 */ {(13<<2)|2,{45,119,0}}, +/* 23491 */ {(13<<2)|2,{45,119,0}}, +/* 23492 */ {(13<<2)|2,{45,119,0}}, +/* 23493 */ {(13<<2)|2,{45,119,0}}, +/* 23494 */ {(13<<2)|2,{45,119,0}}, +/* 23495 */ {(13<<2)|2,{45,119,0}}, +/* 23496 */ {(13<<2)|2,{45,120,0}}, +/* 23497 */ {(13<<2)|2,{45,120,0}}, +/* 23498 */ {(13<<2)|2,{45,120,0}}, +/* 23499 */ {(13<<2)|2,{45,120,0}}, +/* 23500 */ {(13<<2)|2,{45,120,0}}, +/* 23501 */ {(13<<2)|2,{45,120,0}}, +/* 23502 */ {(13<<2)|2,{45,120,0}}, +/* 23503 */ {(13<<2)|2,{45,120,0}}, +/* 23504 */ {(13<<2)|2,{45,121,0}}, +/* 23505 */ {(13<<2)|2,{45,121,0}}, +/* 23506 */ {(13<<2)|2,{45,121,0}}, +/* 23507 */ {(13<<2)|2,{45,121,0}}, +/* 23508 */ {(13<<2)|2,{45,121,0}}, +/* 23509 */ {(13<<2)|2,{45,121,0}}, +/* 23510 */ {(13<<2)|2,{45,121,0}}, +/* 23511 */ {(13<<2)|2,{45,121,0}}, +/* 23512 */ {(13<<2)|2,{45,122,0}}, +/* 23513 */ {(13<<2)|2,{45,122,0}}, +/* 23514 */ {(13<<2)|2,{45,122,0}}, +/* 23515 */ {(13<<2)|2,{45,122,0}}, +/* 23516 */ {(13<<2)|2,{45,122,0}}, +/* 23517 */ {(13<<2)|2,{45,122,0}}, +/* 23518 */ {(13<<2)|2,{45,122,0}}, +/* 23519 */ {(13<<2)|2,{45,122,0}}, +/* 23520 */ {(14<<2)|2,{45,38,0}}, +/* 23521 */ {(14<<2)|2,{45,38,0}}, +/* 23522 */ {(14<<2)|2,{45,38,0}}, +/* 23523 */ {(14<<2)|2,{45,38,0}}, +/* 23524 */ {(14<<2)|2,{45,42,0}}, +/* 23525 */ {(14<<2)|2,{45,42,0}}, +/* 23526 */ {(14<<2)|2,{45,42,0}}, +/* 23527 */ {(14<<2)|2,{45,42,0}}, +/* 23528 */ {(14<<2)|2,{45,44,0}}, +/* 23529 */ {(14<<2)|2,{45,44,0}}, +/* 23530 */ {(14<<2)|2,{45,44,0}}, +/* 23531 */ {(14<<2)|2,{45,44,0}}, +/* 23532 */ {(14<<2)|2,{45,59,0}}, +/* 23533 */ {(14<<2)|2,{45,59,0}}, +/* 23534 */ {(14<<2)|2,{45,59,0}}, +/* 23535 */ {(14<<2)|2,{45,59,0}}, +/* 23536 */ {(14<<2)|2,{45,88,0}}, +/* 23537 */ {(14<<2)|2,{45,88,0}}, +/* 23538 */ {(14<<2)|2,{45,88,0}}, +/* 23539 */ {(14<<2)|2,{45,88,0}}, +/* 23540 */ {(14<<2)|2,{45,90,0}}, +/* 23541 */ {(14<<2)|2,{45,90,0}}, +/* 23542 */ {(14<<2)|2,{45,90,0}}, +/* 23543 */ {(14<<2)|2,{45,90,0}}, +/* 23544 */ {(16<<2)|2,{45,33,0}}, +/* 23545 */ {(16<<2)|2,{45,34,0}}, +/* 23546 */ {(16<<2)|2,{45,40,0}}, +/* 23547 */ {(16<<2)|2,{45,41,0}}, +/* 23548 */ {(16<<2)|2,{45,63,0}}, +/* 23549 */ {(6<<2)|1,{45,0,0}}, +/* 23550 */ {(6<<2)|1,{45,0,0}}, +/* 23551 */ {(6<<2)|1,{45,0,0}}, +/* 23552 */ {(16<<2)|3,{46,48,48}}, +/* 23553 */ {(16<<2)|3,{46,48,49}}, +/* 23554 */ {(16<<2)|3,{46,48,50}}, +/* 23555 */ {(16<<2)|3,{46,48,97}}, +/* 23556 */ {(16<<2)|3,{46,48,99}}, +/* 23557 */ {(16<<2)|3,{46,48,101}}, +/* 23558 */ {(16<<2)|3,{46,48,105}}, +/* 23559 */ {(16<<2)|3,{46,48,111}}, +/* 23560 */ {(16<<2)|3,{46,48,115}}, +/* 23561 */ {(16<<2)|3,{46,48,116}}, +/* 23562 */ {(11<<2)|2,{46,48,0}}, +/* 23563 */ {(11<<2)|2,{46,48,0}}, +/* 23564 */ {(11<<2)|2,{46,48,0}}, +/* 23565 */ {(11<<2)|2,{46,48,0}}, +/* 23566 */ {(11<<2)|2,{46,48,0}}, +/* 23567 */ {(11<<2)|2,{46,48,0}}, +/* 23568 */ {(11<<2)|2,{46,48,0}}, +/* 23569 */ {(11<<2)|2,{46,48,0}}, +/* 23570 */ {(11<<2)|2,{46,48,0}}, +/* 23571 */ {(11<<2)|2,{46,48,0}}, +/* 23572 */ {(11<<2)|2,{46,48,0}}, +/* 23573 */ {(11<<2)|2,{46,48,0}}, +/* 23574 */ {(11<<2)|2,{46,48,0}}, +/* 23575 */ {(11<<2)|2,{46,48,0}}, +/* 23576 */ {(11<<2)|2,{46,48,0}}, +/* 23577 */ {(11<<2)|2,{46,48,0}}, +/* 23578 */ {(11<<2)|2,{46,48,0}}, +/* 23579 */ {(11<<2)|2,{46,48,0}}, +/* 23580 */ {(11<<2)|2,{46,48,0}}, +/* 23581 */ {(11<<2)|2,{46,48,0}}, +/* 23582 */ {(11<<2)|2,{46,48,0}}, +/* 23583 */ {(11<<2)|2,{46,48,0}}, +/* 23584 */ {(16<<2)|3,{46,49,48}}, +/* 23585 */ {(16<<2)|3,{46,49,49}}, +/* 23586 */ {(16<<2)|3,{46,49,50}}, +/* 23587 */ {(16<<2)|3,{46,49,97}}, +/* 23588 */ {(16<<2)|3,{46,49,99}}, +/* 23589 */ {(16<<2)|3,{46,49,101}}, +/* 23590 */ {(16<<2)|3,{46,49,105}}, +/* 23591 */ {(16<<2)|3,{46,49,111}}, +/* 23592 */ {(16<<2)|3,{46,49,115}}, +/* 23593 */ {(16<<2)|3,{46,49,116}}, +/* 23594 */ {(11<<2)|2,{46,49,0}}, +/* 23595 */ {(11<<2)|2,{46,49,0}}, +/* 23596 */ {(11<<2)|2,{46,49,0}}, +/* 23597 */ {(11<<2)|2,{46,49,0}}, +/* 23598 */ {(11<<2)|2,{46,49,0}}, +/* 23599 */ {(11<<2)|2,{46,49,0}}, +/* 23600 */ {(11<<2)|2,{46,49,0}}, +/* 23601 */ {(11<<2)|2,{46,49,0}}, +/* 23602 */ {(11<<2)|2,{46,49,0}}, +/* 23603 */ {(11<<2)|2,{46,49,0}}, +/* 23604 */ {(11<<2)|2,{46,49,0}}, +/* 23605 */ {(11<<2)|2,{46,49,0}}, +/* 23606 */ {(11<<2)|2,{46,49,0}}, +/* 23607 */ {(11<<2)|2,{46,49,0}}, +/* 23608 */ {(11<<2)|2,{46,49,0}}, +/* 23609 */ {(11<<2)|2,{46,49,0}}, +/* 23610 */ {(11<<2)|2,{46,49,0}}, +/* 23611 */ {(11<<2)|2,{46,49,0}}, +/* 23612 */ {(11<<2)|2,{46,49,0}}, +/* 23613 */ {(11<<2)|2,{46,49,0}}, +/* 23614 */ {(11<<2)|2,{46,49,0}}, +/* 23615 */ {(11<<2)|2,{46,49,0}}, +/* 23616 */ {(16<<2)|3,{46,50,48}}, +/* 23617 */ {(16<<2)|3,{46,50,49}}, +/* 23618 */ {(16<<2)|3,{46,50,50}}, +/* 23619 */ {(16<<2)|3,{46,50,97}}, +/* 23620 */ {(16<<2)|3,{46,50,99}}, +/* 23621 */ {(16<<2)|3,{46,50,101}}, +/* 23622 */ {(16<<2)|3,{46,50,105}}, +/* 23623 */ {(16<<2)|3,{46,50,111}}, +/* 23624 */ {(16<<2)|3,{46,50,115}}, +/* 23625 */ {(16<<2)|3,{46,50,116}}, +/* 23626 */ {(11<<2)|2,{46,50,0}}, +/* 23627 */ {(11<<2)|2,{46,50,0}}, +/* 23628 */ {(11<<2)|2,{46,50,0}}, +/* 23629 */ {(11<<2)|2,{46,50,0}}, +/* 23630 */ {(11<<2)|2,{46,50,0}}, +/* 23631 */ {(11<<2)|2,{46,50,0}}, +/* 23632 */ {(11<<2)|2,{46,50,0}}, +/* 23633 */ {(11<<2)|2,{46,50,0}}, +/* 23634 */ {(11<<2)|2,{46,50,0}}, +/* 23635 */ {(11<<2)|2,{46,50,0}}, +/* 23636 */ {(11<<2)|2,{46,50,0}}, +/* 23637 */ {(11<<2)|2,{46,50,0}}, +/* 23638 */ {(11<<2)|2,{46,50,0}}, +/* 23639 */ {(11<<2)|2,{46,50,0}}, +/* 23640 */ {(11<<2)|2,{46,50,0}}, +/* 23641 */ {(11<<2)|2,{46,50,0}}, +/* 23642 */ {(11<<2)|2,{46,50,0}}, +/* 23643 */ {(11<<2)|2,{46,50,0}}, +/* 23644 */ {(11<<2)|2,{46,50,0}}, +/* 23645 */ {(11<<2)|2,{46,50,0}}, +/* 23646 */ {(11<<2)|2,{46,50,0}}, +/* 23647 */ {(11<<2)|2,{46,50,0}}, +/* 23648 */ {(16<<2)|3,{46,97,48}}, +/* 23649 */ {(16<<2)|3,{46,97,49}}, +/* 23650 */ {(16<<2)|3,{46,97,50}}, +/* 23651 */ {(16<<2)|3,{46,97,97}}, +/* 23652 */ {(16<<2)|3,{46,97,99}}, +/* 23653 */ {(16<<2)|3,{46,97,101}}, +/* 23654 */ {(16<<2)|3,{46,97,105}}, +/* 23655 */ {(16<<2)|3,{46,97,111}}, +/* 23656 */ {(16<<2)|3,{46,97,115}}, +/* 23657 */ {(16<<2)|3,{46,97,116}}, +/* 23658 */ {(11<<2)|2,{46,97,0}}, +/* 23659 */ {(11<<2)|2,{46,97,0}}, +/* 23660 */ {(11<<2)|2,{46,97,0}}, +/* 23661 */ {(11<<2)|2,{46,97,0}}, +/* 23662 */ {(11<<2)|2,{46,97,0}}, +/* 23663 */ {(11<<2)|2,{46,97,0}}, +/* 23664 */ {(11<<2)|2,{46,97,0}}, +/* 23665 */ {(11<<2)|2,{46,97,0}}, +/* 23666 */ {(11<<2)|2,{46,97,0}}, +/* 23667 */ {(11<<2)|2,{46,97,0}}, +/* 23668 */ {(11<<2)|2,{46,97,0}}, +/* 23669 */ {(11<<2)|2,{46,97,0}}, +/* 23670 */ {(11<<2)|2,{46,97,0}}, +/* 23671 */ {(11<<2)|2,{46,97,0}}, +/* 23672 */ {(11<<2)|2,{46,97,0}}, +/* 23673 */ {(11<<2)|2,{46,97,0}}, +/* 23674 */ {(11<<2)|2,{46,97,0}}, +/* 23675 */ {(11<<2)|2,{46,97,0}}, +/* 23676 */ {(11<<2)|2,{46,97,0}}, +/* 23677 */ {(11<<2)|2,{46,97,0}}, +/* 23678 */ {(11<<2)|2,{46,97,0}}, +/* 23679 */ {(11<<2)|2,{46,97,0}}, +/* 23680 */ {(16<<2)|3,{46,99,48}}, +/* 23681 */ {(16<<2)|3,{46,99,49}}, +/* 23682 */ {(16<<2)|3,{46,99,50}}, +/* 23683 */ {(16<<2)|3,{46,99,97}}, +/* 23684 */ {(16<<2)|3,{46,99,99}}, +/* 23685 */ {(16<<2)|3,{46,99,101}}, +/* 23686 */ {(16<<2)|3,{46,99,105}}, +/* 23687 */ {(16<<2)|3,{46,99,111}}, +/* 23688 */ {(16<<2)|3,{46,99,115}}, +/* 23689 */ {(16<<2)|3,{46,99,116}}, +/* 23690 */ {(11<<2)|2,{46,99,0}}, +/* 23691 */ {(11<<2)|2,{46,99,0}}, +/* 23692 */ {(11<<2)|2,{46,99,0}}, +/* 23693 */ {(11<<2)|2,{46,99,0}}, +/* 23694 */ {(11<<2)|2,{46,99,0}}, +/* 23695 */ {(11<<2)|2,{46,99,0}}, +/* 23696 */ {(11<<2)|2,{46,99,0}}, +/* 23697 */ {(11<<2)|2,{46,99,0}}, +/* 23698 */ {(11<<2)|2,{46,99,0}}, +/* 23699 */ {(11<<2)|2,{46,99,0}}, +/* 23700 */ {(11<<2)|2,{46,99,0}}, +/* 23701 */ {(11<<2)|2,{46,99,0}}, +/* 23702 */ {(11<<2)|2,{46,99,0}}, +/* 23703 */ {(11<<2)|2,{46,99,0}}, +/* 23704 */ {(11<<2)|2,{46,99,0}}, +/* 23705 */ {(11<<2)|2,{46,99,0}}, +/* 23706 */ {(11<<2)|2,{46,99,0}}, +/* 23707 */ {(11<<2)|2,{46,99,0}}, +/* 23708 */ {(11<<2)|2,{46,99,0}}, +/* 23709 */ {(11<<2)|2,{46,99,0}}, +/* 23710 */ {(11<<2)|2,{46,99,0}}, +/* 23711 */ {(11<<2)|2,{46,99,0}}, +/* 23712 */ {(16<<2)|3,{46,101,48}}, +/* 23713 */ {(16<<2)|3,{46,101,49}}, +/* 23714 */ {(16<<2)|3,{46,101,50}}, +/* 23715 */ {(16<<2)|3,{46,101,97}}, +/* 23716 */ {(16<<2)|3,{46,101,99}}, +/* 23717 */ {(16<<2)|3,{46,101,101}}, +/* 23718 */ {(16<<2)|3,{46,101,105}}, +/* 23719 */ {(16<<2)|3,{46,101,111}}, +/* 23720 */ {(16<<2)|3,{46,101,115}}, +/* 23721 */ {(16<<2)|3,{46,101,116}}, +/* 23722 */ {(11<<2)|2,{46,101,0}}, +/* 23723 */ {(11<<2)|2,{46,101,0}}, +/* 23724 */ {(11<<2)|2,{46,101,0}}, +/* 23725 */ {(11<<2)|2,{46,101,0}}, +/* 23726 */ {(11<<2)|2,{46,101,0}}, +/* 23727 */ {(11<<2)|2,{46,101,0}}, +/* 23728 */ {(11<<2)|2,{46,101,0}}, +/* 23729 */ {(11<<2)|2,{46,101,0}}, +/* 23730 */ {(11<<2)|2,{46,101,0}}, +/* 23731 */ {(11<<2)|2,{46,101,0}}, +/* 23732 */ {(11<<2)|2,{46,101,0}}, +/* 23733 */ {(11<<2)|2,{46,101,0}}, +/* 23734 */ {(11<<2)|2,{46,101,0}}, +/* 23735 */ {(11<<2)|2,{46,101,0}}, +/* 23736 */ {(11<<2)|2,{46,101,0}}, +/* 23737 */ {(11<<2)|2,{46,101,0}}, +/* 23738 */ {(11<<2)|2,{46,101,0}}, +/* 23739 */ {(11<<2)|2,{46,101,0}}, +/* 23740 */ {(11<<2)|2,{46,101,0}}, +/* 23741 */ {(11<<2)|2,{46,101,0}}, +/* 23742 */ {(11<<2)|2,{46,101,0}}, +/* 23743 */ {(11<<2)|2,{46,101,0}}, +/* 23744 */ {(16<<2)|3,{46,105,48}}, +/* 23745 */ {(16<<2)|3,{46,105,49}}, +/* 23746 */ {(16<<2)|3,{46,105,50}}, +/* 23747 */ {(16<<2)|3,{46,105,97}}, +/* 23748 */ {(16<<2)|3,{46,105,99}}, +/* 23749 */ {(16<<2)|3,{46,105,101}}, +/* 23750 */ {(16<<2)|3,{46,105,105}}, +/* 23751 */ {(16<<2)|3,{46,105,111}}, +/* 23752 */ {(16<<2)|3,{46,105,115}}, +/* 23753 */ {(16<<2)|3,{46,105,116}}, +/* 23754 */ {(11<<2)|2,{46,105,0}}, +/* 23755 */ {(11<<2)|2,{46,105,0}}, +/* 23756 */ {(11<<2)|2,{46,105,0}}, +/* 23757 */ {(11<<2)|2,{46,105,0}}, +/* 23758 */ {(11<<2)|2,{46,105,0}}, +/* 23759 */ {(11<<2)|2,{46,105,0}}, +/* 23760 */ {(11<<2)|2,{46,105,0}}, +/* 23761 */ {(11<<2)|2,{46,105,0}}, +/* 23762 */ {(11<<2)|2,{46,105,0}}, +/* 23763 */ {(11<<2)|2,{46,105,0}}, +/* 23764 */ {(11<<2)|2,{46,105,0}}, +/* 23765 */ {(11<<2)|2,{46,105,0}}, +/* 23766 */ {(11<<2)|2,{46,105,0}}, +/* 23767 */ {(11<<2)|2,{46,105,0}}, +/* 23768 */ {(11<<2)|2,{46,105,0}}, +/* 23769 */ {(11<<2)|2,{46,105,0}}, +/* 23770 */ {(11<<2)|2,{46,105,0}}, +/* 23771 */ {(11<<2)|2,{46,105,0}}, +/* 23772 */ {(11<<2)|2,{46,105,0}}, +/* 23773 */ {(11<<2)|2,{46,105,0}}, +/* 23774 */ {(11<<2)|2,{46,105,0}}, +/* 23775 */ {(11<<2)|2,{46,105,0}}, +/* 23776 */ {(16<<2)|3,{46,111,48}}, +/* 23777 */ {(16<<2)|3,{46,111,49}}, +/* 23778 */ {(16<<2)|3,{46,111,50}}, +/* 23779 */ {(16<<2)|3,{46,111,97}}, +/* 23780 */ {(16<<2)|3,{46,111,99}}, +/* 23781 */ {(16<<2)|3,{46,111,101}}, +/* 23782 */ {(16<<2)|3,{46,111,105}}, +/* 23783 */ {(16<<2)|3,{46,111,111}}, +/* 23784 */ {(16<<2)|3,{46,111,115}}, +/* 23785 */ {(16<<2)|3,{46,111,116}}, +/* 23786 */ {(11<<2)|2,{46,111,0}}, +/* 23787 */ {(11<<2)|2,{46,111,0}}, +/* 23788 */ {(11<<2)|2,{46,111,0}}, +/* 23789 */ {(11<<2)|2,{46,111,0}}, +/* 23790 */ {(11<<2)|2,{46,111,0}}, +/* 23791 */ {(11<<2)|2,{46,111,0}}, +/* 23792 */ {(11<<2)|2,{46,111,0}}, +/* 23793 */ {(11<<2)|2,{46,111,0}}, +/* 23794 */ {(11<<2)|2,{46,111,0}}, +/* 23795 */ {(11<<2)|2,{46,111,0}}, +/* 23796 */ {(11<<2)|2,{46,111,0}}, +/* 23797 */ {(11<<2)|2,{46,111,0}}, +/* 23798 */ {(11<<2)|2,{46,111,0}}, +/* 23799 */ {(11<<2)|2,{46,111,0}}, +/* 23800 */ {(11<<2)|2,{46,111,0}}, +/* 23801 */ {(11<<2)|2,{46,111,0}}, +/* 23802 */ {(11<<2)|2,{46,111,0}}, +/* 23803 */ {(11<<2)|2,{46,111,0}}, +/* 23804 */ {(11<<2)|2,{46,111,0}}, +/* 23805 */ {(11<<2)|2,{46,111,0}}, +/* 23806 */ {(11<<2)|2,{46,111,0}}, +/* 23807 */ {(11<<2)|2,{46,111,0}}, +/* 23808 */ {(16<<2)|3,{46,115,48}}, +/* 23809 */ {(16<<2)|3,{46,115,49}}, +/* 23810 */ {(16<<2)|3,{46,115,50}}, +/* 23811 */ {(16<<2)|3,{46,115,97}}, +/* 23812 */ {(16<<2)|3,{46,115,99}}, +/* 23813 */ {(16<<2)|3,{46,115,101}}, +/* 23814 */ {(16<<2)|3,{46,115,105}}, +/* 23815 */ {(16<<2)|3,{46,115,111}}, +/* 23816 */ {(16<<2)|3,{46,115,115}}, +/* 23817 */ {(16<<2)|3,{46,115,116}}, +/* 23818 */ {(11<<2)|2,{46,115,0}}, +/* 23819 */ {(11<<2)|2,{46,115,0}}, +/* 23820 */ {(11<<2)|2,{46,115,0}}, +/* 23821 */ {(11<<2)|2,{46,115,0}}, +/* 23822 */ {(11<<2)|2,{46,115,0}}, +/* 23823 */ {(11<<2)|2,{46,115,0}}, +/* 23824 */ {(11<<2)|2,{46,115,0}}, +/* 23825 */ {(11<<2)|2,{46,115,0}}, +/* 23826 */ {(11<<2)|2,{46,115,0}}, +/* 23827 */ {(11<<2)|2,{46,115,0}}, +/* 23828 */ {(11<<2)|2,{46,115,0}}, +/* 23829 */ {(11<<2)|2,{46,115,0}}, +/* 23830 */ {(11<<2)|2,{46,115,0}}, +/* 23831 */ {(11<<2)|2,{46,115,0}}, +/* 23832 */ {(11<<2)|2,{46,115,0}}, +/* 23833 */ {(11<<2)|2,{46,115,0}}, +/* 23834 */ {(11<<2)|2,{46,115,0}}, +/* 23835 */ {(11<<2)|2,{46,115,0}}, +/* 23836 */ {(11<<2)|2,{46,115,0}}, +/* 23837 */ {(11<<2)|2,{46,115,0}}, +/* 23838 */ {(11<<2)|2,{46,115,0}}, +/* 23839 */ {(11<<2)|2,{46,115,0}}, +/* 23840 */ {(16<<2)|3,{46,116,48}}, +/* 23841 */ {(16<<2)|3,{46,116,49}}, +/* 23842 */ {(16<<2)|3,{46,116,50}}, +/* 23843 */ {(16<<2)|3,{46,116,97}}, +/* 23844 */ {(16<<2)|3,{46,116,99}}, +/* 23845 */ {(16<<2)|3,{46,116,101}}, +/* 23846 */ {(16<<2)|3,{46,116,105}}, +/* 23847 */ {(16<<2)|3,{46,116,111}}, +/* 23848 */ {(16<<2)|3,{46,116,115}}, +/* 23849 */ {(16<<2)|3,{46,116,116}}, +/* 23850 */ {(11<<2)|2,{46,116,0}}, +/* 23851 */ {(11<<2)|2,{46,116,0}}, +/* 23852 */ {(11<<2)|2,{46,116,0}}, +/* 23853 */ {(11<<2)|2,{46,116,0}}, +/* 23854 */ {(11<<2)|2,{46,116,0}}, +/* 23855 */ {(11<<2)|2,{46,116,0}}, +/* 23856 */ {(11<<2)|2,{46,116,0}}, +/* 23857 */ {(11<<2)|2,{46,116,0}}, +/* 23858 */ {(11<<2)|2,{46,116,0}}, +/* 23859 */ {(11<<2)|2,{46,116,0}}, +/* 23860 */ {(11<<2)|2,{46,116,0}}, +/* 23861 */ {(11<<2)|2,{46,116,0}}, +/* 23862 */ {(11<<2)|2,{46,116,0}}, +/* 23863 */ {(11<<2)|2,{46,116,0}}, +/* 23864 */ {(11<<2)|2,{46,116,0}}, +/* 23865 */ {(11<<2)|2,{46,116,0}}, +/* 23866 */ {(11<<2)|2,{46,116,0}}, +/* 23867 */ {(11<<2)|2,{46,116,0}}, +/* 23868 */ {(11<<2)|2,{46,116,0}}, +/* 23869 */ {(11<<2)|2,{46,116,0}}, +/* 23870 */ {(11<<2)|2,{46,116,0}}, +/* 23871 */ {(11<<2)|2,{46,116,0}}, +/* 23872 */ {(12<<2)|2,{46,32,0}}, +/* 23873 */ {(12<<2)|2,{46,32,0}}, +/* 23874 */ {(12<<2)|2,{46,32,0}}, +/* 23875 */ {(12<<2)|2,{46,32,0}}, +/* 23876 */ {(12<<2)|2,{46,32,0}}, +/* 23877 */ {(12<<2)|2,{46,32,0}}, +/* 23878 */ {(12<<2)|2,{46,32,0}}, +/* 23879 */ {(12<<2)|2,{46,32,0}}, +/* 23880 */ {(12<<2)|2,{46,32,0}}, +/* 23881 */ {(12<<2)|2,{46,32,0}}, +/* 23882 */ {(12<<2)|2,{46,32,0}}, +/* 23883 */ {(12<<2)|2,{46,32,0}}, +/* 23884 */ {(12<<2)|2,{46,32,0}}, +/* 23885 */ {(12<<2)|2,{46,32,0}}, +/* 23886 */ {(12<<2)|2,{46,32,0}}, +/* 23887 */ {(12<<2)|2,{46,32,0}}, +/* 23888 */ {(12<<2)|2,{46,37,0}}, +/* 23889 */ {(12<<2)|2,{46,37,0}}, +/* 23890 */ {(12<<2)|2,{46,37,0}}, +/* 23891 */ {(12<<2)|2,{46,37,0}}, +/* 23892 */ {(12<<2)|2,{46,37,0}}, +/* 23893 */ {(12<<2)|2,{46,37,0}}, +/* 23894 */ {(12<<2)|2,{46,37,0}}, +/* 23895 */ {(12<<2)|2,{46,37,0}}, +/* 23896 */ {(12<<2)|2,{46,37,0}}, +/* 23897 */ {(12<<2)|2,{46,37,0}}, +/* 23898 */ {(12<<2)|2,{46,37,0}}, +/* 23899 */ {(12<<2)|2,{46,37,0}}, +/* 23900 */ {(12<<2)|2,{46,37,0}}, +/* 23901 */ {(12<<2)|2,{46,37,0}}, +/* 23902 */ {(12<<2)|2,{46,37,0}}, +/* 23903 */ {(12<<2)|2,{46,37,0}}, +/* 23904 */ {(12<<2)|2,{46,45,0}}, +/* 23905 */ {(12<<2)|2,{46,45,0}}, +/* 23906 */ {(12<<2)|2,{46,45,0}}, +/* 23907 */ {(12<<2)|2,{46,45,0}}, +/* 23908 */ {(12<<2)|2,{46,45,0}}, +/* 23909 */ {(12<<2)|2,{46,45,0}}, +/* 23910 */ {(12<<2)|2,{46,45,0}}, +/* 23911 */ {(12<<2)|2,{46,45,0}}, +/* 23912 */ {(12<<2)|2,{46,45,0}}, +/* 23913 */ {(12<<2)|2,{46,45,0}}, +/* 23914 */ {(12<<2)|2,{46,45,0}}, +/* 23915 */ {(12<<2)|2,{46,45,0}}, +/* 23916 */ {(12<<2)|2,{46,45,0}}, +/* 23917 */ {(12<<2)|2,{46,45,0}}, +/* 23918 */ {(12<<2)|2,{46,45,0}}, +/* 23919 */ {(12<<2)|2,{46,45,0}}, +/* 23920 */ {(12<<2)|2,{46,46,0}}, +/* 23921 */ {(12<<2)|2,{46,46,0}}, +/* 23922 */ {(12<<2)|2,{46,46,0}}, +/* 23923 */ {(12<<2)|2,{46,46,0}}, +/* 23924 */ {(12<<2)|2,{46,46,0}}, +/* 23925 */ {(12<<2)|2,{46,46,0}}, +/* 23926 */ {(12<<2)|2,{46,46,0}}, +/* 23927 */ {(12<<2)|2,{46,46,0}}, +/* 23928 */ {(12<<2)|2,{46,46,0}}, +/* 23929 */ {(12<<2)|2,{46,46,0}}, +/* 23930 */ {(12<<2)|2,{46,46,0}}, +/* 23931 */ {(12<<2)|2,{46,46,0}}, +/* 23932 */ {(12<<2)|2,{46,46,0}}, +/* 23933 */ {(12<<2)|2,{46,46,0}}, +/* 23934 */ {(12<<2)|2,{46,46,0}}, +/* 23935 */ {(12<<2)|2,{46,46,0}}, +/* 23936 */ {(12<<2)|2,{46,47,0}}, +/* 23937 */ {(12<<2)|2,{46,47,0}}, +/* 23938 */ {(12<<2)|2,{46,47,0}}, +/* 23939 */ {(12<<2)|2,{46,47,0}}, +/* 23940 */ {(12<<2)|2,{46,47,0}}, +/* 23941 */ {(12<<2)|2,{46,47,0}}, +/* 23942 */ {(12<<2)|2,{46,47,0}}, +/* 23943 */ {(12<<2)|2,{46,47,0}}, +/* 23944 */ {(12<<2)|2,{46,47,0}}, +/* 23945 */ {(12<<2)|2,{46,47,0}}, +/* 23946 */ {(12<<2)|2,{46,47,0}}, +/* 23947 */ {(12<<2)|2,{46,47,0}}, +/* 23948 */ {(12<<2)|2,{46,47,0}}, +/* 23949 */ {(12<<2)|2,{46,47,0}}, +/* 23950 */ {(12<<2)|2,{46,47,0}}, +/* 23951 */ {(12<<2)|2,{46,47,0}}, +/* 23952 */ {(12<<2)|2,{46,51,0}}, +/* 23953 */ {(12<<2)|2,{46,51,0}}, +/* 23954 */ {(12<<2)|2,{46,51,0}}, +/* 23955 */ {(12<<2)|2,{46,51,0}}, +/* 23956 */ {(12<<2)|2,{46,51,0}}, +/* 23957 */ {(12<<2)|2,{46,51,0}}, +/* 23958 */ {(12<<2)|2,{46,51,0}}, +/* 23959 */ {(12<<2)|2,{46,51,0}}, +/* 23960 */ {(12<<2)|2,{46,51,0}}, +/* 23961 */ {(12<<2)|2,{46,51,0}}, +/* 23962 */ {(12<<2)|2,{46,51,0}}, +/* 23963 */ {(12<<2)|2,{46,51,0}}, +/* 23964 */ {(12<<2)|2,{46,51,0}}, +/* 23965 */ {(12<<2)|2,{46,51,0}}, +/* 23966 */ {(12<<2)|2,{46,51,0}}, +/* 23967 */ {(12<<2)|2,{46,51,0}}, +/* 23968 */ {(12<<2)|2,{46,52,0}}, +/* 23969 */ {(12<<2)|2,{46,52,0}}, +/* 23970 */ {(12<<2)|2,{46,52,0}}, +/* 23971 */ {(12<<2)|2,{46,52,0}}, +/* 23972 */ {(12<<2)|2,{46,52,0}}, +/* 23973 */ {(12<<2)|2,{46,52,0}}, +/* 23974 */ {(12<<2)|2,{46,52,0}}, +/* 23975 */ {(12<<2)|2,{46,52,0}}, +/* 23976 */ {(12<<2)|2,{46,52,0}}, +/* 23977 */ {(12<<2)|2,{46,52,0}}, +/* 23978 */ {(12<<2)|2,{46,52,0}}, +/* 23979 */ {(12<<2)|2,{46,52,0}}, +/* 23980 */ {(12<<2)|2,{46,52,0}}, +/* 23981 */ {(12<<2)|2,{46,52,0}}, +/* 23982 */ {(12<<2)|2,{46,52,0}}, +/* 23983 */ {(12<<2)|2,{46,52,0}}, +/* 23984 */ {(12<<2)|2,{46,53,0}}, +/* 23985 */ {(12<<2)|2,{46,53,0}}, +/* 23986 */ {(12<<2)|2,{46,53,0}}, +/* 23987 */ {(12<<2)|2,{46,53,0}}, +/* 23988 */ {(12<<2)|2,{46,53,0}}, +/* 23989 */ {(12<<2)|2,{46,53,0}}, +/* 23990 */ {(12<<2)|2,{46,53,0}}, +/* 23991 */ {(12<<2)|2,{46,53,0}}, +/* 23992 */ {(12<<2)|2,{46,53,0}}, +/* 23993 */ {(12<<2)|2,{46,53,0}}, +/* 23994 */ {(12<<2)|2,{46,53,0}}, +/* 23995 */ {(12<<2)|2,{46,53,0}}, +/* 23996 */ {(12<<2)|2,{46,53,0}}, +/* 23997 */ {(12<<2)|2,{46,53,0}}, +/* 23998 */ {(12<<2)|2,{46,53,0}}, +/* 23999 */ {(12<<2)|2,{46,53,0}}, +/* 24000 */ {(12<<2)|2,{46,54,0}}, +/* 24001 */ {(12<<2)|2,{46,54,0}}, +/* 24002 */ {(12<<2)|2,{46,54,0}}, +/* 24003 */ {(12<<2)|2,{46,54,0}}, +/* 24004 */ {(12<<2)|2,{46,54,0}}, +/* 24005 */ {(12<<2)|2,{46,54,0}}, +/* 24006 */ {(12<<2)|2,{46,54,0}}, +/* 24007 */ {(12<<2)|2,{46,54,0}}, +/* 24008 */ {(12<<2)|2,{46,54,0}}, +/* 24009 */ {(12<<2)|2,{46,54,0}}, +/* 24010 */ {(12<<2)|2,{46,54,0}}, +/* 24011 */ {(12<<2)|2,{46,54,0}}, +/* 24012 */ {(12<<2)|2,{46,54,0}}, +/* 24013 */ {(12<<2)|2,{46,54,0}}, +/* 24014 */ {(12<<2)|2,{46,54,0}}, +/* 24015 */ {(12<<2)|2,{46,54,0}}, +/* 24016 */ {(12<<2)|2,{46,55,0}}, +/* 24017 */ {(12<<2)|2,{46,55,0}}, +/* 24018 */ {(12<<2)|2,{46,55,0}}, +/* 24019 */ {(12<<2)|2,{46,55,0}}, +/* 24020 */ {(12<<2)|2,{46,55,0}}, +/* 24021 */ {(12<<2)|2,{46,55,0}}, +/* 24022 */ {(12<<2)|2,{46,55,0}}, +/* 24023 */ {(12<<2)|2,{46,55,0}}, +/* 24024 */ {(12<<2)|2,{46,55,0}}, +/* 24025 */ {(12<<2)|2,{46,55,0}}, +/* 24026 */ {(12<<2)|2,{46,55,0}}, +/* 24027 */ {(12<<2)|2,{46,55,0}}, +/* 24028 */ {(12<<2)|2,{46,55,0}}, +/* 24029 */ {(12<<2)|2,{46,55,0}}, +/* 24030 */ {(12<<2)|2,{46,55,0}}, +/* 24031 */ {(12<<2)|2,{46,55,0}}, +/* 24032 */ {(12<<2)|2,{46,56,0}}, +/* 24033 */ {(12<<2)|2,{46,56,0}}, +/* 24034 */ {(12<<2)|2,{46,56,0}}, +/* 24035 */ {(12<<2)|2,{46,56,0}}, +/* 24036 */ {(12<<2)|2,{46,56,0}}, +/* 24037 */ {(12<<2)|2,{46,56,0}}, +/* 24038 */ {(12<<2)|2,{46,56,0}}, +/* 24039 */ {(12<<2)|2,{46,56,0}}, +/* 24040 */ {(12<<2)|2,{46,56,0}}, +/* 24041 */ {(12<<2)|2,{46,56,0}}, +/* 24042 */ {(12<<2)|2,{46,56,0}}, +/* 24043 */ {(12<<2)|2,{46,56,0}}, +/* 24044 */ {(12<<2)|2,{46,56,0}}, +/* 24045 */ {(12<<2)|2,{46,56,0}}, +/* 24046 */ {(12<<2)|2,{46,56,0}}, +/* 24047 */ {(12<<2)|2,{46,56,0}}, +/* 24048 */ {(12<<2)|2,{46,57,0}}, +/* 24049 */ {(12<<2)|2,{46,57,0}}, +/* 24050 */ {(12<<2)|2,{46,57,0}}, +/* 24051 */ {(12<<2)|2,{46,57,0}}, +/* 24052 */ {(12<<2)|2,{46,57,0}}, +/* 24053 */ {(12<<2)|2,{46,57,0}}, +/* 24054 */ {(12<<2)|2,{46,57,0}}, +/* 24055 */ {(12<<2)|2,{46,57,0}}, +/* 24056 */ {(12<<2)|2,{46,57,0}}, +/* 24057 */ {(12<<2)|2,{46,57,0}}, +/* 24058 */ {(12<<2)|2,{46,57,0}}, +/* 24059 */ {(12<<2)|2,{46,57,0}}, +/* 24060 */ {(12<<2)|2,{46,57,0}}, +/* 24061 */ {(12<<2)|2,{46,57,0}}, +/* 24062 */ {(12<<2)|2,{46,57,0}}, +/* 24063 */ {(12<<2)|2,{46,57,0}}, +/* 24064 */ {(12<<2)|2,{46,61,0}}, +/* 24065 */ {(12<<2)|2,{46,61,0}}, +/* 24066 */ {(12<<2)|2,{46,61,0}}, +/* 24067 */ {(12<<2)|2,{46,61,0}}, +/* 24068 */ {(12<<2)|2,{46,61,0}}, +/* 24069 */ {(12<<2)|2,{46,61,0}}, +/* 24070 */ {(12<<2)|2,{46,61,0}}, +/* 24071 */ {(12<<2)|2,{46,61,0}}, +/* 24072 */ {(12<<2)|2,{46,61,0}}, +/* 24073 */ {(12<<2)|2,{46,61,0}}, +/* 24074 */ {(12<<2)|2,{46,61,0}}, +/* 24075 */ {(12<<2)|2,{46,61,0}}, +/* 24076 */ {(12<<2)|2,{46,61,0}}, +/* 24077 */ {(12<<2)|2,{46,61,0}}, +/* 24078 */ {(12<<2)|2,{46,61,0}}, +/* 24079 */ {(12<<2)|2,{46,61,0}}, +/* 24080 */ {(12<<2)|2,{46,65,0}}, +/* 24081 */ {(12<<2)|2,{46,65,0}}, +/* 24082 */ {(12<<2)|2,{46,65,0}}, +/* 24083 */ {(12<<2)|2,{46,65,0}}, +/* 24084 */ {(12<<2)|2,{46,65,0}}, +/* 24085 */ {(12<<2)|2,{46,65,0}}, +/* 24086 */ {(12<<2)|2,{46,65,0}}, +/* 24087 */ {(12<<2)|2,{46,65,0}}, +/* 24088 */ {(12<<2)|2,{46,65,0}}, +/* 24089 */ {(12<<2)|2,{46,65,0}}, +/* 24090 */ {(12<<2)|2,{46,65,0}}, +/* 24091 */ {(12<<2)|2,{46,65,0}}, +/* 24092 */ {(12<<2)|2,{46,65,0}}, +/* 24093 */ {(12<<2)|2,{46,65,0}}, +/* 24094 */ {(12<<2)|2,{46,65,0}}, +/* 24095 */ {(12<<2)|2,{46,65,0}}, +/* 24096 */ {(12<<2)|2,{46,95,0}}, +/* 24097 */ {(12<<2)|2,{46,95,0}}, +/* 24098 */ {(12<<2)|2,{46,95,0}}, +/* 24099 */ {(12<<2)|2,{46,95,0}}, +/* 24100 */ {(12<<2)|2,{46,95,0}}, +/* 24101 */ {(12<<2)|2,{46,95,0}}, +/* 24102 */ {(12<<2)|2,{46,95,0}}, +/* 24103 */ {(12<<2)|2,{46,95,0}}, +/* 24104 */ {(12<<2)|2,{46,95,0}}, +/* 24105 */ {(12<<2)|2,{46,95,0}}, +/* 24106 */ {(12<<2)|2,{46,95,0}}, +/* 24107 */ {(12<<2)|2,{46,95,0}}, +/* 24108 */ {(12<<2)|2,{46,95,0}}, +/* 24109 */ {(12<<2)|2,{46,95,0}}, +/* 24110 */ {(12<<2)|2,{46,95,0}}, +/* 24111 */ {(12<<2)|2,{46,95,0}}, +/* 24112 */ {(12<<2)|2,{46,98,0}}, +/* 24113 */ {(12<<2)|2,{46,98,0}}, +/* 24114 */ {(12<<2)|2,{46,98,0}}, +/* 24115 */ {(12<<2)|2,{46,98,0}}, +/* 24116 */ {(12<<2)|2,{46,98,0}}, +/* 24117 */ {(12<<2)|2,{46,98,0}}, +/* 24118 */ {(12<<2)|2,{46,98,0}}, +/* 24119 */ {(12<<2)|2,{46,98,0}}, +/* 24120 */ {(12<<2)|2,{46,98,0}}, +/* 24121 */ {(12<<2)|2,{46,98,0}}, +/* 24122 */ {(12<<2)|2,{46,98,0}}, +/* 24123 */ {(12<<2)|2,{46,98,0}}, +/* 24124 */ {(12<<2)|2,{46,98,0}}, +/* 24125 */ {(12<<2)|2,{46,98,0}}, +/* 24126 */ {(12<<2)|2,{46,98,0}}, +/* 24127 */ {(12<<2)|2,{46,98,0}}, +/* 24128 */ {(12<<2)|2,{46,100,0}}, +/* 24129 */ {(12<<2)|2,{46,100,0}}, +/* 24130 */ {(12<<2)|2,{46,100,0}}, +/* 24131 */ {(12<<2)|2,{46,100,0}}, +/* 24132 */ {(12<<2)|2,{46,100,0}}, +/* 24133 */ {(12<<2)|2,{46,100,0}}, +/* 24134 */ {(12<<2)|2,{46,100,0}}, +/* 24135 */ {(12<<2)|2,{46,100,0}}, +/* 24136 */ {(12<<2)|2,{46,100,0}}, +/* 24137 */ {(12<<2)|2,{46,100,0}}, +/* 24138 */ {(12<<2)|2,{46,100,0}}, +/* 24139 */ {(12<<2)|2,{46,100,0}}, +/* 24140 */ {(12<<2)|2,{46,100,0}}, +/* 24141 */ {(12<<2)|2,{46,100,0}}, +/* 24142 */ {(12<<2)|2,{46,100,0}}, +/* 24143 */ {(12<<2)|2,{46,100,0}}, +/* 24144 */ {(12<<2)|2,{46,102,0}}, +/* 24145 */ {(12<<2)|2,{46,102,0}}, +/* 24146 */ {(12<<2)|2,{46,102,0}}, +/* 24147 */ {(12<<2)|2,{46,102,0}}, +/* 24148 */ {(12<<2)|2,{46,102,0}}, +/* 24149 */ {(12<<2)|2,{46,102,0}}, +/* 24150 */ {(12<<2)|2,{46,102,0}}, +/* 24151 */ {(12<<2)|2,{46,102,0}}, +/* 24152 */ {(12<<2)|2,{46,102,0}}, +/* 24153 */ {(12<<2)|2,{46,102,0}}, +/* 24154 */ {(12<<2)|2,{46,102,0}}, +/* 24155 */ {(12<<2)|2,{46,102,0}}, +/* 24156 */ {(12<<2)|2,{46,102,0}}, +/* 24157 */ {(12<<2)|2,{46,102,0}}, +/* 24158 */ {(12<<2)|2,{46,102,0}}, +/* 24159 */ {(12<<2)|2,{46,102,0}}, +/* 24160 */ {(12<<2)|2,{46,103,0}}, +/* 24161 */ {(12<<2)|2,{46,103,0}}, +/* 24162 */ {(12<<2)|2,{46,103,0}}, +/* 24163 */ {(12<<2)|2,{46,103,0}}, +/* 24164 */ {(12<<2)|2,{46,103,0}}, +/* 24165 */ {(12<<2)|2,{46,103,0}}, +/* 24166 */ {(12<<2)|2,{46,103,0}}, +/* 24167 */ {(12<<2)|2,{46,103,0}}, +/* 24168 */ {(12<<2)|2,{46,103,0}}, +/* 24169 */ {(12<<2)|2,{46,103,0}}, +/* 24170 */ {(12<<2)|2,{46,103,0}}, +/* 24171 */ {(12<<2)|2,{46,103,0}}, +/* 24172 */ {(12<<2)|2,{46,103,0}}, +/* 24173 */ {(12<<2)|2,{46,103,0}}, +/* 24174 */ {(12<<2)|2,{46,103,0}}, +/* 24175 */ {(12<<2)|2,{46,103,0}}, +/* 24176 */ {(12<<2)|2,{46,104,0}}, +/* 24177 */ {(12<<2)|2,{46,104,0}}, +/* 24178 */ {(12<<2)|2,{46,104,0}}, +/* 24179 */ {(12<<2)|2,{46,104,0}}, +/* 24180 */ {(12<<2)|2,{46,104,0}}, +/* 24181 */ {(12<<2)|2,{46,104,0}}, +/* 24182 */ {(12<<2)|2,{46,104,0}}, +/* 24183 */ {(12<<2)|2,{46,104,0}}, +/* 24184 */ {(12<<2)|2,{46,104,0}}, +/* 24185 */ {(12<<2)|2,{46,104,0}}, +/* 24186 */ {(12<<2)|2,{46,104,0}}, +/* 24187 */ {(12<<2)|2,{46,104,0}}, +/* 24188 */ {(12<<2)|2,{46,104,0}}, +/* 24189 */ {(12<<2)|2,{46,104,0}}, +/* 24190 */ {(12<<2)|2,{46,104,0}}, +/* 24191 */ {(12<<2)|2,{46,104,0}}, +/* 24192 */ {(12<<2)|2,{46,108,0}}, +/* 24193 */ {(12<<2)|2,{46,108,0}}, +/* 24194 */ {(12<<2)|2,{46,108,0}}, +/* 24195 */ {(12<<2)|2,{46,108,0}}, +/* 24196 */ {(12<<2)|2,{46,108,0}}, +/* 24197 */ {(12<<2)|2,{46,108,0}}, +/* 24198 */ {(12<<2)|2,{46,108,0}}, +/* 24199 */ {(12<<2)|2,{46,108,0}}, +/* 24200 */ {(12<<2)|2,{46,108,0}}, +/* 24201 */ {(12<<2)|2,{46,108,0}}, +/* 24202 */ {(12<<2)|2,{46,108,0}}, +/* 24203 */ {(12<<2)|2,{46,108,0}}, +/* 24204 */ {(12<<2)|2,{46,108,0}}, +/* 24205 */ {(12<<2)|2,{46,108,0}}, +/* 24206 */ {(12<<2)|2,{46,108,0}}, +/* 24207 */ {(12<<2)|2,{46,108,0}}, +/* 24208 */ {(12<<2)|2,{46,109,0}}, +/* 24209 */ {(12<<2)|2,{46,109,0}}, +/* 24210 */ {(12<<2)|2,{46,109,0}}, +/* 24211 */ {(12<<2)|2,{46,109,0}}, +/* 24212 */ {(12<<2)|2,{46,109,0}}, +/* 24213 */ {(12<<2)|2,{46,109,0}}, +/* 24214 */ {(12<<2)|2,{46,109,0}}, +/* 24215 */ {(12<<2)|2,{46,109,0}}, +/* 24216 */ {(12<<2)|2,{46,109,0}}, +/* 24217 */ {(12<<2)|2,{46,109,0}}, +/* 24218 */ {(12<<2)|2,{46,109,0}}, +/* 24219 */ {(12<<2)|2,{46,109,0}}, +/* 24220 */ {(12<<2)|2,{46,109,0}}, +/* 24221 */ {(12<<2)|2,{46,109,0}}, +/* 24222 */ {(12<<2)|2,{46,109,0}}, +/* 24223 */ {(12<<2)|2,{46,109,0}}, +/* 24224 */ {(12<<2)|2,{46,110,0}}, +/* 24225 */ {(12<<2)|2,{46,110,0}}, +/* 24226 */ {(12<<2)|2,{46,110,0}}, +/* 24227 */ {(12<<2)|2,{46,110,0}}, +/* 24228 */ {(12<<2)|2,{46,110,0}}, +/* 24229 */ {(12<<2)|2,{46,110,0}}, +/* 24230 */ {(12<<2)|2,{46,110,0}}, +/* 24231 */ {(12<<2)|2,{46,110,0}}, +/* 24232 */ {(12<<2)|2,{46,110,0}}, +/* 24233 */ {(12<<2)|2,{46,110,0}}, +/* 24234 */ {(12<<2)|2,{46,110,0}}, +/* 24235 */ {(12<<2)|2,{46,110,0}}, +/* 24236 */ {(12<<2)|2,{46,110,0}}, +/* 24237 */ {(12<<2)|2,{46,110,0}}, +/* 24238 */ {(12<<2)|2,{46,110,0}}, +/* 24239 */ {(12<<2)|2,{46,110,0}}, +/* 24240 */ {(12<<2)|2,{46,112,0}}, +/* 24241 */ {(12<<2)|2,{46,112,0}}, +/* 24242 */ {(12<<2)|2,{46,112,0}}, +/* 24243 */ {(12<<2)|2,{46,112,0}}, +/* 24244 */ {(12<<2)|2,{46,112,0}}, +/* 24245 */ {(12<<2)|2,{46,112,0}}, +/* 24246 */ {(12<<2)|2,{46,112,0}}, +/* 24247 */ {(12<<2)|2,{46,112,0}}, +/* 24248 */ {(12<<2)|2,{46,112,0}}, +/* 24249 */ {(12<<2)|2,{46,112,0}}, +/* 24250 */ {(12<<2)|2,{46,112,0}}, +/* 24251 */ {(12<<2)|2,{46,112,0}}, +/* 24252 */ {(12<<2)|2,{46,112,0}}, +/* 24253 */ {(12<<2)|2,{46,112,0}}, +/* 24254 */ {(12<<2)|2,{46,112,0}}, +/* 24255 */ {(12<<2)|2,{46,112,0}}, +/* 24256 */ {(12<<2)|2,{46,114,0}}, +/* 24257 */ {(12<<2)|2,{46,114,0}}, +/* 24258 */ {(12<<2)|2,{46,114,0}}, +/* 24259 */ {(12<<2)|2,{46,114,0}}, +/* 24260 */ {(12<<2)|2,{46,114,0}}, +/* 24261 */ {(12<<2)|2,{46,114,0}}, +/* 24262 */ {(12<<2)|2,{46,114,0}}, +/* 24263 */ {(12<<2)|2,{46,114,0}}, +/* 24264 */ {(12<<2)|2,{46,114,0}}, +/* 24265 */ {(12<<2)|2,{46,114,0}}, +/* 24266 */ {(12<<2)|2,{46,114,0}}, +/* 24267 */ {(12<<2)|2,{46,114,0}}, +/* 24268 */ {(12<<2)|2,{46,114,0}}, +/* 24269 */ {(12<<2)|2,{46,114,0}}, +/* 24270 */ {(12<<2)|2,{46,114,0}}, +/* 24271 */ {(12<<2)|2,{46,114,0}}, +/* 24272 */ {(12<<2)|2,{46,117,0}}, +/* 24273 */ {(12<<2)|2,{46,117,0}}, +/* 24274 */ {(12<<2)|2,{46,117,0}}, +/* 24275 */ {(12<<2)|2,{46,117,0}}, +/* 24276 */ {(12<<2)|2,{46,117,0}}, +/* 24277 */ {(12<<2)|2,{46,117,0}}, +/* 24278 */ {(12<<2)|2,{46,117,0}}, +/* 24279 */ {(12<<2)|2,{46,117,0}}, +/* 24280 */ {(12<<2)|2,{46,117,0}}, +/* 24281 */ {(12<<2)|2,{46,117,0}}, +/* 24282 */ {(12<<2)|2,{46,117,0}}, +/* 24283 */ {(12<<2)|2,{46,117,0}}, +/* 24284 */ {(12<<2)|2,{46,117,0}}, +/* 24285 */ {(12<<2)|2,{46,117,0}}, +/* 24286 */ {(12<<2)|2,{46,117,0}}, +/* 24287 */ {(12<<2)|2,{46,117,0}}, +/* 24288 */ {(13<<2)|2,{46,58,0}}, +/* 24289 */ {(13<<2)|2,{46,58,0}}, +/* 24290 */ {(13<<2)|2,{46,58,0}}, +/* 24291 */ {(13<<2)|2,{46,58,0}}, +/* 24292 */ {(13<<2)|2,{46,58,0}}, +/* 24293 */ {(13<<2)|2,{46,58,0}}, +/* 24294 */ {(13<<2)|2,{46,58,0}}, +/* 24295 */ {(13<<2)|2,{46,58,0}}, +/* 24296 */ {(13<<2)|2,{46,66,0}}, +/* 24297 */ {(13<<2)|2,{46,66,0}}, +/* 24298 */ {(13<<2)|2,{46,66,0}}, +/* 24299 */ {(13<<2)|2,{46,66,0}}, +/* 24300 */ {(13<<2)|2,{46,66,0}}, +/* 24301 */ {(13<<2)|2,{46,66,0}}, +/* 24302 */ {(13<<2)|2,{46,66,0}}, +/* 24303 */ {(13<<2)|2,{46,66,0}}, +/* 24304 */ {(13<<2)|2,{46,67,0}}, +/* 24305 */ {(13<<2)|2,{46,67,0}}, +/* 24306 */ {(13<<2)|2,{46,67,0}}, +/* 24307 */ {(13<<2)|2,{46,67,0}}, +/* 24308 */ {(13<<2)|2,{46,67,0}}, +/* 24309 */ {(13<<2)|2,{46,67,0}}, +/* 24310 */ {(13<<2)|2,{46,67,0}}, +/* 24311 */ {(13<<2)|2,{46,67,0}}, +/* 24312 */ {(13<<2)|2,{46,68,0}}, +/* 24313 */ {(13<<2)|2,{46,68,0}}, +/* 24314 */ {(13<<2)|2,{46,68,0}}, +/* 24315 */ {(13<<2)|2,{46,68,0}}, +/* 24316 */ {(13<<2)|2,{46,68,0}}, +/* 24317 */ {(13<<2)|2,{46,68,0}}, +/* 24318 */ {(13<<2)|2,{46,68,0}}, +/* 24319 */ {(13<<2)|2,{46,68,0}}, +/* 24320 */ {(13<<2)|2,{46,69,0}}, +/* 24321 */ {(13<<2)|2,{46,69,0}}, +/* 24322 */ {(13<<2)|2,{46,69,0}}, +/* 24323 */ {(13<<2)|2,{46,69,0}}, +/* 24324 */ {(13<<2)|2,{46,69,0}}, +/* 24325 */ {(13<<2)|2,{46,69,0}}, +/* 24326 */ {(13<<2)|2,{46,69,0}}, +/* 24327 */ {(13<<2)|2,{46,69,0}}, +/* 24328 */ {(13<<2)|2,{46,70,0}}, +/* 24329 */ {(13<<2)|2,{46,70,0}}, +/* 24330 */ {(13<<2)|2,{46,70,0}}, +/* 24331 */ {(13<<2)|2,{46,70,0}}, +/* 24332 */ {(13<<2)|2,{46,70,0}}, +/* 24333 */ {(13<<2)|2,{46,70,0}}, +/* 24334 */ {(13<<2)|2,{46,70,0}}, +/* 24335 */ {(13<<2)|2,{46,70,0}}, +/* 24336 */ {(13<<2)|2,{46,71,0}}, +/* 24337 */ {(13<<2)|2,{46,71,0}}, +/* 24338 */ {(13<<2)|2,{46,71,0}}, +/* 24339 */ {(13<<2)|2,{46,71,0}}, +/* 24340 */ {(13<<2)|2,{46,71,0}}, +/* 24341 */ {(13<<2)|2,{46,71,0}}, +/* 24342 */ {(13<<2)|2,{46,71,0}}, +/* 24343 */ {(13<<2)|2,{46,71,0}}, +/* 24344 */ {(13<<2)|2,{46,72,0}}, +/* 24345 */ {(13<<2)|2,{46,72,0}}, +/* 24346 */ {(13<<2)|2,{46,72,0}}, +/* 24347 */ {(13<<2)|2,{46,72,0}}, +/* 24348 */ {(13<<2)|2,{46,72,0}}, +/* 24349 */ {(13<<2)|2,{46,72,0}}, +/* 24350 */ {(13<<2)|2,{46,72,0}}, +/* 24351 */ {(13<<2)|2,{46,72,0}}, +/* 24352 */ {(13<<2)|2,{46,73,0}}, +/* 24353 */ {(13<<2)|2,{46,73,0}}, +/* 24354 */ {(13<<2)|2,{46,73,0}}, +/* 24355 */ {(13<<2)|2,{46,73,0}}, +/* 24356 */ {(13<<2)|2,{46,73,0}}, +/* 24357 */ {(13<<2)|2,{46,73,0}}, +/* 24358 */ {(13<<2)|2,{46,73,0}}, +/* 24359 */ {(13<<2)|2,{46,73,0}}, +/* 24360 */ {(13<<2)|2,{46,74,0}}, +/* 24361 */ {(13<<2)|2,{46,74,0}}, +/* 24362 */ {(13<<2)|2,{46,74,0}}, +/* 24363 */ {(13<<2)|2,{46,74,0}}, +/* 24364 */ {(13<<2)|2,{46,74,0}}, +/* 24365 */ {(13<<2)|2,{46,74,0}}, +/* 24366 */ {(13<<2)|2,{46,74,0}}, +/* 24367 */ {(13<<2)|2,{46,74,0}}, +/* 24368 */ {(13<<2)|2,{46,75,0}}, +/* 24369 */ {(13<<2)|2,{46,75,0}}, +/* 24370 */ {(13<<2)|2,{46,75,0}}, +/* 24371 */ {(13<<2)|2,{46,75,0}}, +/* 24372 */ {(13<<2)|2,{46,75,0}}, +/* 24373 */ {(13<<2)|2,{46,75,0}}, +/* 24374 */ {(13<<2)|2,{46,75,0}}, +/* 24375 */ {(13<<2)|2,{46,75,0}}, +/* 24376 */ {(13<<2)|2,{46,76,0}}, +/* 24377 */ {(13<<2)|2,{46,76,0}}, +/* 24378 */ {(13<<2)|2,{46,76,0}}, +/* 24379 */ {(13<<2)|2,{46,76,0}}, +/* 24380 */ {(13<<2)|2,{46,76,0}}, +/* 24381 */ {(13<<2)|2,{46,76,0}}, +/* 24382 */ {(13<<2)|2,{46,76,0}}, +/* 24383 */ {(13<<2)|2,{46,76,0}}, +/* 24384 */ {(13<<2)|2,{46,77,0}}, +/* 24385 */ {(13<<2)|2,{46,77,0}}, +/* 24386 */ {(13<<2)|2,{46,77,0}}, +/* 24387 */ {(13<<2)|2,{46,77,0}}, +/* 24388 */ {(13<<2)|2,{46,77,0}}, +/* 24389 */ {(13<<2)|2,{46,77,0}}, +/* 24390 */ {(13<<2)|2,{46,77,0}}, +/* 24391 */ {(13<<2)|2,{46,77,0}}, +/* 24392 */ {(13<<2)|2,{46,78,0}}, +/* 24393 */ {(13<<2)|2,{46,78,0}}, +/* 24394 */ {(13<<2)|2,{46,78,0}}, +/* 24395 */ {(13<<2)|2,{46,78,0}}, +/* 24396 */ {(13<<2)|2,{46,78,0}}, +/* 24397 */ {(13<<2)|2,{46,78,0}}, +/* 24398 */ {(13<<2)|2,{46,78,0}}, +/* 24399 */ {(13<<2)|2,{46,78,0}}, +/* 24400 */ {(13<<2)|2,{46,79,0}}, +/* 24401 */ {(13<<2)|2,{46,79,0}}, +/* 24402 */ {(13<<2)|2,{46,79,0}}, +/* 24403 */ {(13<<2)|2,{46,79,0}}, +/* 24404 */ {(13<<2)|2,{46,79,0}}, +/* 24405 */ {(13<<2)|2,{46,79,0}}, +/* 24406 */ {(13<<2)|2,{46,79,0}}, +/* 24407 */ {(13<<2)|2,{46,79,0}}, +/* 24408 */ {(13<<2)|2,{46,80,0}}, +/* 24409 */ {(13<<2)|2,{46,80,0}}, +/* 24410 */ {(13<<2)|2,{46,80,0}}, +/* 24411 */ {(13<<2)|2,{46,80,0}}, +/* 24412 */ {(13<<2)|2,{46,80,0}}, +/* 24413 */ {(13<<2)|2,{46,80,0}}, +/* 24414 */ {(13<<2)|2,{46,80,0}}, +/* 24415 */ {(13<<2)|2,{46,80,0}}, +/* 24416 */ {(13<<2)|2,{46,81,0}}, +/* 24417 */ {(13<<2)|2,{46,81,0}}, +/* 24418 */ {(13<<2)|2,{46,81,0}}, +/* 24419 */ {(13<<2)|2,{46,81,0}}, +/* 24420 */ {(13<<2)|2,{46,81,0}}, +/* 24421 */ {(13<<2)|2,{46,81,0}}, +/* 24422 */ {(13<<2)|2,{46,81,0}}, +/* 24423 */ {(13<<2)|2,{46,81,0}}, +/* 24424 */ {(13<<2)|2,{46,82,0}}, +/* 24425 */ {(13<<2)|2,{46,82,0}}, +/* 24426 */ {(13<<2)|2,{46,82,0}}, +/* 24427 */ {(13<<2)|2,{46,82,0}}, +/* 24428 */ {(13<<2)|2,{46,82,0}}, +/* 24429 */ {(13<<2)|2,{46,82,0}}, +/* 24430 */ {(13<<2)|2,{46,82,0}}, +/* 24431 */ {(13<<2)|2,{46,82,0}}, +/* 24432 */ {(13<<2)|2,{46,83,0}}, +/* 24433 */ {(13<<2)|2,{46,83,0}}, +/* 24434 */ {(13<<2)|2,{46,83,0}}, +/* 24435 */ {(13<<2)|2,{46,83,0}}, +/* 24436 */ {(13<<2)|2,{46,83,0}}, +/* 24437 */ {(13<<2)|2,{46,83,0}}, +/* 24438 */ {(13<<2)|2,{46,83,0}}, +/* 24439 */ {(13<<2)|2,{46,83,0}}, +/* 24440 */ {(13<<2)|2,{46,84,0}}, +/* 24441 */ {(13<<2)|2,{46,84,0}}, +/* 24442 */ {(13<<2)|2,{46,84,0}}, +/* 24443 */ {(13<<2)|2,{46,84,0}}, +/* 24444 */ {(13<<2)|2,{46,84,0}}, +/* 24445 */ {(13<<2)|2,{46,84,0}}, +/* 24446 */ {(13<<2)|2,{46,84,0}}, +/* 24447 */ {(13<<2)|2,{46,84,0}}, +/* 24448 */ {(13<<2)|2,{46,85,0}}, +/* 24449 */ {(13<<2)|2,{46,85,0}}, +/* 24450 */ {(13<<2)|2,{46,85,0}}, +/* 24451 */ {(13<<2)|2,{46,85,0}}, +/* 24452 */ {(13<<2)|2,{46,85,0}}, +/* 24453 */ {(13<<2)|2,{46,85,0}}, +/* 24454 */ {(13<<2)|2,{46,85,0}}, +/* 24455 */ {(13<<2)|2,{46,85,0}}, +/* 24456 */ {(13<<2)|2,{46,86,0}}, +/* 24457 */ {(13<<2)|2,{46,86,0}}, +/* 24458 */ {(13<<2)|2,{46,86,0}}, +/* 24459 */ {(13<<2)|2,{46,86,0}}, +/* 24460 */ {(13<<2)|2,{46,86,0}}, +/* 24461 */ {(13<<2)|2,{46,86,0}}, +/* 24462 */ {(13<<2)|2,{46,86,0}}, +/* 24463 */ {(13<<2)|2,{46,86,0}}, +/* 24464 */ {(13<<2)|2,{46,87,0}}, +/* 24465 */ {(13<<2)|2,{46,87,0}}, +/* 24466 */ {(13<<2)|2,{46,87,0}}, +/* 24467 */ {(13<<2)|2,{46,87,0}}, +/* 24468 */ {(13<<2)|2,{46,87,0}}, +/* 24469 */ {(13<<2)|2,{46,87,0}}, +/* 24470 */ {(13<<2)|2,{46,87,0}}, +/* 24471 */ {(13<<2)|2,{46,87,0}}, +/* 24472 */ {(13<<2)|2,{46,89,0}}, +/* 24473 */ {(13<<2)|2,{46,89,0}}, +/* 24474 */ {(13<<2)|2,{46,89,0}}, +/* 24475 */ {(13<<2)|2,{46,89,0}}, +/* 24476 */ {(13<<2)|2,{46,89,0}}, +/* 24477 */ {(13<<2)|2,{46,89,0}}, +/* 24478 */ {(13<<2)|2,{46,89,0}}, +/* 24479 */ {(13<<2)|2,{46,89,0}}, +/* 24480 */ {(13<<2)|2,{46,106,0}}, +/* 24481 */ {(13<<2)|2,{46,106,0}}, +/* 24482 */ {(13<<2)|2,{46,106,0}}, +/* 24483 */ {(13<<2)|2,{46,106,0}}, +/* 24484 */ {(13<<2)|2,{46,106,0}}, +/* 24485 */ {(13<<2)|2,{46,106,0}}, +/* 24486 */ {(13<<2)|2,{46,106,0}}, +/* 24487 */ {(13<<2)|2,{46,106,0}}, +/* 24488 */ {(13<<2)|2,{46,107,0}}, +/* 24489 */ {(13<<2)|2,{46,107,0}}, +/* 24490 */ {(13<<2)|2,{46,107,0}}, +/* 24491 */ {(13<<2)|2,{46,107,0}}, +/* 24492 */ {(13<<2)|2,{46,107,0}}, +/* 24493 */ {(13<<2)|2,{46,107,0}}, +/* 24494 */ {(13<<2)|2,{46,107,0}}, +/* 24495 */ {(13<<2)|2,{46,107,0}}, +/* 24496 */ {(13<<2)|2,{46,113,0}}, +/* 24497 */ {(13<<2)|2,{46,113,0}}, +/* 24498 */ {(13<<2)|2,{46,113,0}}, +/* 24499 */ {(13<<2)|2,{46,113,0}}, +/* 24500 */ {(13<<2)|2,{46,113,0}}, +/* 24501 */ {(13<<2)|2,{46,113,0}}, +/* 24502 */ {(13<<2)|2,{46,113,0}}, +/* 24503 */ {(13<<2)|2,{46,113,0}}, +/* 24504 */ {(13<<2)|2,{46,118,0}}, +/* 24505 */ {(13<<2)|2,{46,118,0}}, +/* 24506 */ {(13<<2)|2,{46,118,0}}, +/* 24507 */ {(13<<2)|2,{46,118,0}}, +/* 24508 */ {(13<<2)|2,{46,118,0}}, +/* 24509 */ {(13<<2)|2,{46,118,0}}, +/* 24510 */ {(13<<2)|2,{46,118,0}}, +/* 24511 */ {(13<<2)|2,{46,118,0}}, +/* 24512 */ {(13<<2)|2,{46,119,0}}, +/* 24513 */ {(13<<2)|2,{46,119,0}}, +/* 24514 */ {(13<<2)|2,{46,119,0}}, +/* 24515 */ {(13<<2)|2,{46,119,0}}, +/* 24516 */ {(13<<2)|2,{46,119,0}}, +/* 24517 */ {(13<<2)|2,{46,119,0}}, +/* 24518 */ {(13<<2)|2,{46,119,0}}, +/* 24519 */ {(13<<2)|2,{46,119,0}}, +/* 24520 */ {(13<<2)|2,{46,120,0}}, +/* 24521 */ {(13<<2)|2,{46,120,0}}, +/* 24522 */ {(13<<2)|2,{46,120,0}}, +/* 24523 */ {(13<<2)|2,{46,120,0}}, +/* 24524 */ {(13<<2)|2,{46,120,0}}, +/* 24525 */ {(13<<2)|2,{46,120,0}}, +/* 24526 */ {(13<<2)|2,{46,120,0}}, +/* 24527 */ {(13<<2)|2,{46,120,0}}, +/* 24528 */ {(13<<2)|2,{46,121,0}}, +/* 24529 */ {(13<<2)|2,{46,121,0}}, +/* 24530 */ {(13<<2)|2,{46,121,0}}, +/* 24531 */ {(13<<2)|2,{46,121,0}}, +/* 24532 */ {(13<<2)|2,{46,121,0}}, +/* 24533 */ {(13<<2)|2,{46,121,0}}, +/* 24534 */ {(13<<2)|2,{46,121,0}}, +/* 24535 */ {(13<<2)|2,{46,121,0}}, +/* 24536 */ {(13<<2)|2,{46,122,0}}, +/* 24537 */ {(13<<2)|2,{46,122,0}}, +/* 24538 */ {(13<<2)|2,{46,122,0}}, +/* 24539 */ {(13<<2)|2,{46,122,0}}, +/* 24540 */ {(13<<2)|2,{46,122,0}}, +/* 24541 */ {(13<<2)|2,{46,122,0}}, +/* 24542 */ {(13<<2)|2,{46,122,0}}, +/* 24543 */ {(13<<2)|2,{46,122,0}}, +/* 24544 */ {(14<<2)|2,{46,38,0}}, +/* 24545 */ {(14<<2)|2,{46,38,0}}, +/* 24546 */ {(14<<2)|2,{46,38,0}}, +/* 24547 */ {(14<<2)|2,{46,38,0}}, +/* 24548 */ {(14<<2)|2,{46,42,0}}, +/* 24549 */ {(14<<2)|2,{46,42,0}}, +/* 24550 */ {(14<<2)|2,{46,42,0}}, +/* 24551 */ {(14<<2)|2,{46,42,0}}, +/* 24552 */ {(14<<2)|2,{46,44,0}}, +/* 24553 */ {(14<<2)|2,{46,44,0}}, +/* 24554 */ {(14<<2)|2,{46,44,0}}, +/* 24555 */ {(14<<2)|2,{46,44,0}}, +/* 24556 */ {(14<<2)|2,{46,59,0}}, +/* 24557 */ {(14<<2)|2,{46,59,0}}, +/* 24558 */ {(14<<2)|2,{46,59,0}}, +/* 24559 */ {(14<<2)|2,{46,59,0}}, +/* 24560 */ {(14<<2)|2,{46,88,0}}, +/* 24561 */ {(14<<2)|2,{46,88,0}}, +/* 24562 */ {(14<<2)|2,{46,88,0}}, +/* 24563 */ {(14<<2)|2,{46,88,0}}, +/* 24564 */ {(14<<2)|2,{46,90,0}}, +/* 24565 */ {(14<<2)|2,{46,90,0}}, +/* 24566 */ {(14<<2)|2,{46,90,0}}, +/* 24567 */ {(14<<2)|2,{46,90,0}}, +/* 24568 */ {(16<<2)|2,{46,33,0}}, +/* 24569 */ {(16<<2)|2,{46,34,0}}, +/* 24570 */ {(16<<2)|2,{46,40,0}}, +/* 24571 */ {(16<<2)|2,{46,41,0}}, +/* 24572 */ {(16<<2)|2,{46,63,0}}, +/* 24573 */ {(6<<2)|1,{46,0,0}}, +/* 24574 */ {(6<<2)|1,{46,0,0}}, +/* 24575 */ {(6<<2)|1,{46,0,0}}, +/* 24576 */ {(16<<2)|3,{47,48,48}}, +/* 24577 */ {(16<<2)|3,{47,48,49}}, +/* 24578 */ {(16<<2)|3,{47,48,50}}, +/* 24579 */ {(16<<2)|3,{47,48,97}}, +/* 24580 */ {(16<<2)|3,{47,48,99}}, +/* 24581 */ {(16<<2)|3,{47,48,101}}, +/* 24582 */ {(16<<2)|3,{47,48,105}}, +/* 24583 */ {(16<<2)|3,{47,48,111}}, +/* 24584 */ {(16<<2)|3,{47,48,115}}, +/* 24585 */ {(16<<2)|3,{47,48,116}}, +/* 24586 */ {(11<<2)|2,{47,48,0}}, +/* 24587 */ {(11<<2)|2,{47,48,0}}, +/* 24588 */ {(11<<2)|2,{47,48,0}}, +/* 24589 */ {(11<<2)|2,{47,48,0}}, +/* 24590 */ {(11<<2)|2,{47,48,0}}, +/* 24591 */ {(11<<2)|2,{47,48,0}}, +/* 24592 */ {(11<<2)|2,{47,48,0}}, +/* 24593 */ {(11<<2)|2,{47,48,0}}, +/* 24594 */ {(11<<2)|2,{47,48,0}}, +/* 24595 */ {(11<<2)|2,{47,48,0}}, +/* 24596 */ {(11<<2)|2,{47,48,0}}, +/* 24597 */ {(11<<2)|2,{47,48,0}}, +/* 24598 */ {(11<<2)|2,{47,48,0}}, +/* 24599 */ {(11<<2)|2,{47,48,0}}, +/* 24600 */ {(11<<2)|2,{47,48,0}}, +/* 24601 */ {(11<<2)|2,{47,48,0}}, +/* 24602 */ {(11<<2)|2,{47,48,0}}, +/* 24603 */ {(11<<2)|2,{47,48,0}}, +/* 24604 */ {(11<<2)|2,{47,48,0}}, +/* 24605 */ {(11<<2)|2,{47,48,0}}, +/* 24606 */ {(11<<2)|2,{47,48,0}}, +/* 24607 */ {(11<<2)|2,{47,48,0}}, +/* 24608 */ {(16<<2)|3,{47,49,48}}, +/* 24609 */ {(16<<2)|3,{47,49,49}}, +/* 24610 */ {(16<<2)|3,{47,49,50}}, +/* 24611 */ {(16<<2)|3,{47,49,97}}, +/* 24612 */ {(16<<2)|3,{47,49,99}}, +/* 24613 */ {(16<<2)|3,{47,49,101}}, +/* 24614 */ {(16<<2)|3,{47,49,105}}, +/* 24615 */ {(16<<2)|3,{47,49,111}}, +/* 24616 */ {(16<<2)|3,{47,49,115}}, +/* 24617 */ {(16<<2)|3,{47,49,116}}, +/* 24618 */ {(11<<2)|2,{47,49,0}}, +/* 24619 */ {(11<<2)|2,{47,49,0}}, +/* 24620 */ {(11<<2)|2,{47,49,0}}, +/* 24621 */ {(11<<2)|2,{47,49,0}}, +/* 24622 */ {(11<<2)|2,{47,49,0}}, +/* 24623 */ {(11<<2)|2,{47,49,0}}, +/* 24624 */ {(11<<2)|2,{47,49,0}}, +/* 24625 */ {(11<<2)|2,{47,49,0}}, +/* 24626 */ {(11<<2)|2,{47,49,0}}, +/* 24627 */ {(11<<2)|2,{47,49,0}}, +/* 24628 */ {(11<<2)|2,{47,49,0}}, +/* 24629 */ {(11<<2)|2,{47,49,0}}, +/* 24630 */ {(11<<2)|2,{47,49,0}}, +/* 24631 */ {(11<<2)|2,{47,49,0}}, +/* 24632 */ {(11<<2)|2,{47,49,0}}, +/* 24633 */ {(11<<2)|2,{47,49,0}}, +/* 24634 */ {(11<<2)|2,{47,49,0}}, +/* 24635 */ {(11<<2)|2,{47,49,0}}, +/* 24636 */ {(11<<2)|2,{47,49,0}}, +/* 24637 */ {(11<<2)|2,{47,49,0}}, +/* 24638 */ {(11<<2)|2,{47,49,0}}, +/* 24639 */ {(11<<2)|2,{47,49,0}}, +/* 24640 */ {(16<<2)|3,{47,50,48}}, +/* 24641 */ {(16<<2)|3,{47,50,49}}, +/* 24642 */ {(16<<2)|3,{47,50,50}}, +/* 24643 */ {(16<<2)|3,{47,50,97}}, +/* 24644 */ {(16<<2)|3,{47,50,99}}, +/* 24645 */ {(16<<2)|3,{47,50,101}}, +/* 24646 */ {(16<<2)|3,{47,50,105}}, +/* 24647 */ {(16<<2)|3,{47,50,111}}, +/* 24648 */ {(16<<2)|3,{47,50,115}}, +/* 24649 */ {(16<<2)|3,{47,50,116}}, +/* 24650 */ {(11<<2)|2,{47,50,0}}, +/* 24651 */ {(11<<2)|2,{47,50,0}}, +/* 24652 */ {(11<<2)|2,{47,50,0}}, +/* 24653 */ {(11<<2)|2,{47,50,0}}, +/* 24654 */ {(11<<2)|2,{47,50,0}}, +/* 24655 */ {(11<<2)|2,{47,50,0}}, +/* 24656 */ {(11<<2)|2,{47,50,0}}, +/* 24657 */ {(11<<2)|2,{47,50,0}}, +/* 24658 */ {(11<<2)|2,{47,50,0}}, +/* 24659 */ {(11<<2)|2,{47,50,0}}, +/* 24660 */ {(11<<2)|2,{47,50,0}}, +/* 24661 */ {(11<<2)|2,{47,50,0}}, +/* 24662 */ {(11<<2)|2,{47,50,0}}, +/* 24663 */ {(11<<2)|2,{47,50,0}}, +/* 24664 */ {(11<<2)|2,{47,50,0}}, +/* 24665 */ {(11<<2)|2,{47,50,0}}, +/* 24666 */ {(11<<2)|2,{47,50,0}}, +/* 24667 */ {(11<<2)|2,{47,50,0}}, +/* 24668 */ {(11<<2)|2,{47,50,0}}, +/* 24669 */ {(11<<2)|2,{47,50,0}}, +/* 24670 */ {(11<<2)|2,{47,50,0}}, +/* 24671 */ {(11<<2)|2,{47,50,0}}, +/* 24672 */ {(16<<2)|3,{47,97,48}}, +/* 24673 */ {(16<<2)|3,{47,97,49}}, +/* 24674 */ {(16<<2)|3,{47,97,50}}, +/* 24675 */ {(16<<2)|3,{47,97,97}}, +/* 24676 */ {(16<<2)|3,{47,97,99}}, +/* 24677 */ {(16<<2)|3,{47,97,101}}, +/* 24678 */ {(16<<2)|3,{47,97,105}}, +/* 24679 */ {(16<<2)|3,{47,97,111}}, +/* 24680 */ {(16<<2)|3,{47,97,115}}, +/* 24681 */ {(16<<2)|3,{47,97,116}}, +/* 24682 */ {(11<<2)|2,{47,97,0}}, +/* 24683 */ {(11<<2)|2,{47,97,0}}, +/* 24684 */ {(11<<2)|2,{47,97,0}}, +/* 24685 */ {(11<<2)|2,{47,97,0}}, +/* 24686 */ {(11<<2)|2,{47,97,0}}, +/* 24687 */ {(11<<2)|2,{47,97,0}}, +/* 24688 */ {(11<<2)|2,{47,97,0}}, +/* 24689 */ {(11<<2)|2,{47,97,0}}, +/* 24690 */ {(11<<2)|2,{47,97,0}}, +/* 24691 */ {(11<<2)|2,{47,97,0}}, +/* 24692 */ {(11<<2)|2,{47,97,0}}, +/* 24693 */ {(11<<2)|2,{47,97,0}}, +/* 24694 */ {(11<<2)|2,{47,97,0}}, +/* 24695 */ {(11<<2)|2,{47,97,0}}, +/* 24696 */ {(11<<2)|2,{47,97,0}}, +/* 24697 */ {(11<<2)|2,{47,97,0}}, +/* 24698 */ {(11<<2)|2,{47,97,0}}, +/* 24699 */ {(11<<2)|2,{47,97,0}}, +/* 24700 */ {(11<<2)|2,{47,97,0}}, +/* 24701 */ {(11<<2)|2,{47,97,0}}, +/* 24702 */ {(11<<2)|2,{47,97,0}}, +/* 24703 */ {(11<<2)|2,{47,97,0}}, +/* 24704 */ {(16<<2)|3,{47,99,48}}, +/* 24705 */ {(16<<2)|3,{47,99,49}}, +/* 24706 */ {(16<<2)|3,{47,99,50}}, +/* 24707 */ {(16<<2)|3,{47,99,97}}, +/* 24708 */ {(16<<2)|3,{47,99,99}}, +/* 24709 */ {(16<<2)|3,{47,99,101}}, +/* 24710 */ {(16<<2)|3,{47,99,105}}, +/* 24711 */ {(16<<2)|3,{47,99,111}}, +/* 24712 */ {(16<<2)|3,{47,99,115}}, +/* 24713 */ {(16<<2)|3,{47,99,116}}, +/* 24714 */ {(11<<2)|2,{47,99,0}}, +/* 24715 */ {(11<<2)|2,{47,99,0}}, +/* 24716 */ {(11<<2)|2,{47,99,0}}, +/* 24717 */ {(11<<2)|2,{47,99,0}}, +/* 24718 */ {(11<<2)|2,{47,99,0}}, +/* 24719 */ {(11<<2)|2,{47,99,0}}, +/* 24720 */ {(11<<2)|2,{47,99,0}}, +/* 24721 */ {(11<<2)|2,{47,99,0}}, +/* 24722 */ {(11<<2)|2,{47,99,0}}, +/* 24723 */ {(11<<2)|2,{47,99,0}}, +/* 24724 */ {(11<<2)|2,{47,99,0}}, +/* 24725 */ {(11<<2)|2,{47,99,0}}, +/* 24726 */ {(11<<2)|2,{47,99,0}}, +/* 24727 */ {(11<<2)|2,{47,99,0}}, +/* 24728 */ {(11<<2)|2,{47,99,0}}, +/* 24729 */ {(11<<2)|2,{47,99,0}}, +/* 24730 */ {(11<<2)|2,{47,99,0}}, +/* 24731 */ {(11<<2)|2,{47,99,0}}, +/* 24732 */ {(11<<2)|2,{47,99,0}}, +/* 24733 */ {(11<<2)|2,{47,99,0}}, +/* 24734 */ {(11<<2)|2,{47,99,0}}, +/* 24735 */ {(11<<2)|2,{47,99,0}}, +/* 24736 */ {(16<<2)|3,{47,101,48}}, +/* 24737 */ {(16<<2)|3,{47,101,49}}, +/* 24738 */ {(16<<2)|3,{47,101,50}}, +/* 24739 */ {(16<<2)|3,{47,101,97}}, +/* 24740 */ {(16<<2)|3,{47,101,99}}, +/* 24741 */ {(16<<2)|3,{47,101,101}}, +/* 24742 */ {(16<<2)|3,{47,101,105}}, +/* 24743 */ {(16<<2)|3,{47,101,111}}, +/* 24744 */ {(16<<2)|3,{47,101,115}}, +/* 24745 */ {(16<<2)|3,{47,101,116}}, +/* 24746 */ {(11<<2)|2,{47,101,0}}, +/* 24747 */ {(11<<2)|2,{47,101,0}}, +/* 24748 */ {(11<<2)|2,{47,101,0}}, +/* 24749 */ {(11<<2)|2,{47,101,0}}, +/* 24750 */ {(11<<2)|2,{47,101,0}}, +/* 24751 */ {(11<<2)|2,{47,101,0}}, +/* 24752 */ {(11<<2)|2,{47,101,0}}, +/* 24753 */ {(11<<2)|2,{47,101,0}}, +/* 24754 */ {(11<<2)|2,{47,101,0}}, +/* 24755 */ {(11<<2)|2,{47,101,0}}, +/* 24756 */ {(11<<2)|2,{47,101,0}}, +/* 24757 */ {(11<<2)|2,{47,101,0}}, +/* 24758 */ {(11<<2)|2,{47,101,0}}, +/* 24759 */ {(11<<2)|2,{47,101,0}}, +/* 24760 */ {(11<<2)|2,{47,101,0}}, +/* 24761 */ {(11<<2)|2,{47,101,0}}, +/* 24762 */ {(11<<2)|2,{47,101,0}}, +/* 24763 */ {(11<<2)|2,{47,101,0}}, +/* 24764 */ {(11<<2)|2,{47,101,0}}, +/* 24765 */ {(11<<2)|2,{47,101,0}}, +/* 24766 */ {(11<<2)|2,{47,101,0}}, +/* 24767 */ {(11<<2)|2,{47,101,0}}, +/* 24768 */ {(16<<2)|3,{47,105,48}}, +/* 24769 */ {(16<<2)|3,{47,105,49}}, +/* 24770 */ {(16<<2)|3,{47,105,50}}, +/* 24771 */ {(16<<2)|3,{47,105,97}}, +/* 24772 */ {(16<<2)|3,{47,105,99}}, +/* 24773 */ {(16<<2)|3,{47,105,101}}, +/* 24774 */ {(16<<2)|3,{47,105,105}}, +/* 24775 */ {(16<<2)|3,{47,105,111}}, +/* 24776 */ {(16<<2)|3,{47,105,115}}, +/* 24777 */ {(16<<2)|3,{47,105,116}}, +/* 24778 */ {(11<<2)|2,{47,105,0}}, +/* 24779 */ {(11<<2)|2,{47,105,0}}, +/* 24780 */ {(11<<2)|2,{47,105,0}}, +/* 24781 */ {(11<<2)|2,{47,105,0}}, +/* 24782 */ {(11<<2)|2,{47,105,0}}, +/* 24783 */ {(11<<2)|2,{47,105,0}}, +/* 24784 */ {(11<<2)|2,{47,105,0}}, +/* 24785 */ {(11<<2)|2,{47,105,0}}, +/* 24786 */ {(11<<2)|2,{47,105,0}}, +/* 24787 */ {(11<<2)|2,{47,105,0}}, +/* 24788 */ {(11<<2)|2,{47,105,0}}, +/* 24789 */ {(11<<2)|2,{47,105,0}}, +/* 24790 */ {(11<<2)|2,{47,105,0}}, +/* 24791 */ {(11<<2)|2,{47,105,0}}, +/* 24792 */ {(11<<2)|2,{47,105,0}}, +/* 24793 */ {(11<<2)|2,{47,105,0}}, +/* 24794 */ {(11<<2)|2,{47,105,0}}, +/* 24795 */ {(11<<2)|2,{47,105,0}}, +/* 24796 */ {(11<<2)|2,{47,105,0}}, +/* 24797 */ {(11<<2)|2,{47,105,0}}, +/* 24798 */ {(11<<2)|2,{47,105,0}}, +/* 24799 */ {(11<<2)|2,{47,105,0}}, +/* 24800 */ {(16<<2)|3,{47,111,48}}, +/* 24801 */ {(16<<2)|3,{47,111,49}}, +/* 24802 */ {(16<<2)|3,{47,111,50}}, +/* 24803 */ {(16<<2)|3,{47,111,97}}, +/* 24804 */ {(16<<2)|3,{47,111,99}}, +/* 24805 */ {(16<<2)|3,{47,111,101}}, +/* 24806 */ {(16<<2)|3,{47,111,105}}, +/* 24807 */ {(16<<2)|3,{47,111,111}}, +/* 24808 */ {(16<<2)|3,{47,111,115}}, +/* 24809 */ {(16<<2)|3,{47,111,116}}, +/* 24810 */ {(11<<2)|2,{47,111,0}}, +/* 24811 */ {(11<<2)|2,{47,111,0}}, +/* 24812 */ {(11<<2)|2,{47,111,0}}, +/* 24813 */ {(11<<2)|2,{47,111,0}}, +/* 24814 */ {(11<<2)|2,{47,111,0}}, +/* 24815 */ {(11<<2)|2,{47,111,0}}, +/* 24816 */ {(11<<2)|2,{47,111,0}}, +/* 24817 */ {(11<<2)|2,{47,111,0}}, +/* 24818 */ {(11<<2)|2,{47,111,0}}, +/* 24819 */ {(11<<2)|2,{47,111,0}}, +/* 24820 */ {(11<<2)|2,{47,111,0}}, +/* 24821 */ {(11<<2)|2,{47,111,0}}, +/* 24822 */ {(11<<2)|2,{47,111,0}}, +/* 24823 */ {(11<<2)|2,{47,111,0}}, +/* 24824 */ {(11<<2)|2,{47,111,0}}, +/* 24825 */ {(11<<2)|2,{47,111,0}}, +/* 24826 */ {(11<<2)|2,{47,111,0}}, +/* 24827 */ {(11<<2)|2,{47,111,0}}, +/* 24828 */ {(11<<2)|2,{47,111,0}}, +/* 24829 */ {(11<<2)|2,{47,111,0}}, +/* 24830 */ {(11<<2)|2,{47,111,0}}, +/* 24831 */ {(11<<2)|2,{47,111,0}}, +/* 24832 */ {(16<<2)|3,{47,115,48}}, +/* 24833 */ {(16<<2)|3,{47,115,49}}, +/* 24834 */ {(16<<2)|3,{47,115,50}}, +/* 24835 */ {(16<<2)|3,{47,115,97}}, +/* 24836 */ {(16<<2)|3,{47,115,99}}, +/* 24837 */ {(16<<2)|3,{47,115,101}}, +/* 24838 */ {(16<<2)|3,{47,115,105}}, +/* 24839 */ {(16<<2)|3,{47,115,111}}, +/* 24840 */ {(16<<2)|3,{47,115,115}}, +/* 24841 */ {(16<<2)|3,{47,115,116}}, +/* 24842 */ {(11<<2)|2,{47,115,0}}, +/* 24843 */ {(11<<2)|2,{47,115,0}}, +/* 24844 */ {(11<<2)|2,{47,115,0}}, +/* 24845 */ {(11<<2)|2,{47,115,0}}, +/* 24846 */ {(11<<2)|2,{47,115,0}}, +/* 24847 */ {(11<<2)|2,{47,115,0}}, +/* 24848 */ {(11<<2)|2,{47,115,0}}, +/* 24849 */ {(11<<2)|2,{47,115,0}}, +/* 24850 */ {(11<<2)|2,{47,115,0}}, +/* 24851 */ {(11<<2)|2,{47,115,0}}, +/* 24852 */ {(11<<2)|2,{47,115,0}}, +/* 24853 */ {(11<<2)|2,{47,115,0}}, +/* 24854 */ {(11<<2)|2,{47,115,0}}, +/* 24855 */ {(11<<2)|2,{47,115,0}}, +/* 24856 */ {(11<<2)|2,{47,115,0}}, +/* 24857 */ {(11<<2)|2,{47,115,0}}, +/* 24858 */ {(11<<2)|2,{47,115,0}}, +/* 24859 */ {(11<<2)|2,{47,115,0}}, +/* 24860 */ {(11<<2)|2,{47,115,0}}, +/* 24861 */ {(11<<2)|2,{47,115,0}}, +/* 24862 */ {(11<<2)|2,{47,115,0}}, +/* 24863 */ {(11<<2)|2,{47,115,0}}, +/* 24864 */ {(16<<2)|3,{47,116,48}}, +/* 24865 */ {(16<<2)|3,{47,116,49}}, +/* 24866 */ {(16<<2)|3,{47,116,50}}, +/* 24867 */ {(16<<2)|3,{47,116,97}}, +/* 24868 */ {(16<<2)|3,{47,116,99}}, +/* 24869 */ {(16<<2)|3,{47,116,101}}, +/* 24870 */ {(16<<2)|3,{47,116,105}}, +/* 24871 */ {(16<<2)|3,{47,116,111}}, +/* 24872 */ {(16<<2)|3,{47,116,115}}, +/* 24873 */ {(16<<2)|3,{47,116,116}}, +/* 24874 */ {(11<<2)|2,{47,116,0}}, +/* 24875 */ {(11<<2)|2,{47,116,0}}, +/* 24876 */ {(11<<2)|2,{47,116,0}}, +/* 24877 */ {(11<<2)|2,{47,116,0}}, +/* 24878 */ {(11<<2)|2,{47,116,0}}, +/* 24879 */ {(11<<2)|2,{47,116,0}}, +/* 24880 */ {(11<<2)|2,{47,116,0}}, +/* 24881 */ {(11<<2)|2,{47,116,0}}, +/* 24882 */ {(11<<2)|2,{47,116,0}}, +/* 24883 */ {(11<<2)|2,{47,116,0}}, +/* 24884 */ {(11<<2)|2,{47,116,0}}, +/* 24885 */ {(11<<2)|2,{47,116,0}}, +/* 24886 */ {(11<<2)|2,{47,116,0}}, +/* 24887 */ {(11<<2)|2,{47,116,0}}, +/* 24888 */ {(11<<2)|2,{47,116,0}}, +/* 24889 */ {(11<<2)|2,{47,116,0}}, +/* 24890 */ {(11<<2)|2,{47,116,0}}, +/* 24891 */ {(11<<2)|2,{47,116,0}}, +/* 24892 */ {(11<<2)|2,{47,116,0}}, +/* 24893 */ {(11<<2)|2,{47,116,0}}, +/* 24894 */ {(11<<2)|2,{47,116,0}}, +/* 24895 */ {(11<<2)|2,{47,116,0}}, +/* 24896 */ {(12<<2)|2,{47,32,0}}, +/* 24897 */ {(12<<2)|2,{47,32,0}}, +/* 24898 */ {(12<<2)|2,{47,32,0}}, +/* 24899 */ {(12<<2)|2,{47,32,0}}, +/* 24900 */ {(12<<2)|2,{47,32,0}}, +/* 24901 */ {(12<<2)|2,{47,32,0}}, +/* 24902 */ {(12<<2)|2,{47,32,0}}, +/* 24903 */ {(12<<2)|2,{47,32,0}}, +/* 24904 */ {(12<<2)|2,{47,32,0}}, +/* 24905 */ {(12<<2)|2,{47,32,0}}, +/* 24906 */ {(12<<2)|2,{47,32,0}}, +/* 24907 */ {(12<<2)|2,{47,32,0}}, +/* 24908 */ {(12<<2)|2,{47,32,0}}, +/* 24909 */ {(12<<2)|2,{47,32,0}}, +/* 24910 */ {(12<<2)|2,{47,32,0}}, +/* 24911 */ {(12<<2)|2,{47,32,0}}, +/* 24912 */ {(12<<2)|2,{47,37,0}}, +/* 24913 */ {(12<<2)|2,{47,37,0}}, +/* 24914 */ {(12<<2)|2,{47,37,0}}, +/* 24915 */ {(12<<2)|2,{47,37,0}}, +/* 24916 */ {(12<<2)|2,{47,37,0}}, +/* 24917 */ {(12<<2)|2,{47,37,0}}, +/* 24918 */ {(12<<2)|2,{47,37,0}}, +/* 24919 */ {(12<<2)|2,{47,37,0}}, +/* 24920 */ {(12<<2)|2,{47,37,0}}, +/* 24921 */ {(12<<2)|2,{47,37,0}}, +/* 24922 */ {(12<<2)|2,{47,37,0}}, +/* 24923 */ {(12<<2)|2,{47,37,0}}, +/* 24924 */ {(12<<2)|2,{47,37,0}}, +/* 24925 */ {(12<<2)|2,{47,37,0}}, +/* 24926 */ {(12<<2)|2,{47,37,0}}, +/* 24927 */ {(12<<2)|2,{47,37,0}}, +/* 24928 */ {(12<<2)|2,{47,45,0}}, +/* 24929 */ {(12<<2)|2,{47,45,0}}, +/* 24930 */ {(12<<2)|2,{47,45,0}}, +/* 24931 */ {(12<<2)|2,{47,45,0}}, +/* 24932 */ {(12<<2)|2,{47,45,0}}, +/* 24933 */ {(12<<2)|2,{47,45,0}}, +/* 24934 */ {(12<<2)|2,{47,45,0}}, +/* 24935 */ {(12<<2)|2,{47,45,0}}, +/* 24936 */ {(12<<2)|2,{47,45,0}}, +/* 24937 */ {(12<<2)|2,{47,45,0}}, +/* 24938 */ {(12<<2)|2,{47,45,0}}, +/* 24939 */ {(12<<2)|2,{47,45,0}}, +/* 24940 */ {(12<<2)|2,{47,45,0}}, +/* 24941 */ {(12<<2)|2,{47,45,0}}, +/* 24942 */ {(12<<2)|2,{47,45,0}}, +/* 24943 */ {(12<<2)|2,{47,45,0}}, +/* 24944 */ {(12<<2)|2,{47,46,0}}, +/* 24945 */ {(12<<2)|2,{47,46,0}}, +/* 24946 */ {(12<<2)|2,{47,46,0}}, +/* 24947 */ {(12<<2)|2,{47,46,0}}, +/* 24948 */ {(12<<2)|2,{47,46,0}}, +/* 24949 */ {(12<<2)|2,{47,46,0}}, +/* 24950 */ {(12<<2)|2,{47,46,0}}, +/* 24951 */ {(12<<2)|2,{47,46,0}}, +/* 24952 */ {(12<<2)|2,{47,46,0}}, +/* 24953 */ {(12<<2)|2,{47,46,0}}, +/* 24954 */ {(12<<2)|2,{47,46,0}}, +/* 24955 */ {(12<<2)|2,{47,46,0}}, +/* 24956 */ {(12<<2)|2,{47,46,0}}, +/* 24957 */ {(12<<2)|2,{47,46,0}}, +/* 24958 */ {(12<<2)|2,{47,46,0}}, +/* 24959 */ {(12<<2)|2,{47,46,0}}, +/* 24960 */ {(12<<2)|2,{47,47,0}}, +/* 24961 */ {(12<<2)|2,{47,47,0}}, +/* 24962 */ {(12<<2)|2,{47,47,0}}, +/* 24963 */ {(12<<2)|2,{47,47,0}}, +/* 24964 */ {(12<<2)|2,{47,47,0}}, +/* 24965 */ {(12<<2)|2,{47,47,0}}, +/* 24966 */ {(12<<2)|2,{47,47,0}}, +/* 24967 */ {(12<<2)|2,{47,47,0}}, +/* 24968 */ {(12<<2)|2,{47,47,0}}, +/* 24969 */ {(12<<2)|2,{47,47,0}}, +/* 24970 */ {(12<<2)|2,{47,47,0}}, +/* 24971 */ {(12<<2)|2,{47,47,0}}, +/* 24972 */ {(12<<2)|2,{47,47,0}}, +/* 24973 */ {(12<<2)|2,{47,47,0}}, +/* 24974 */ {(12<<2)|2,{47,47,0}}, +/* 24975 */ {(12<<2)|2,{47,47,0}}, +/* 24976 */ {(12<<2)|2,{47,51,0}}, +/* 24977 */ {(12<<2)|2,{47,51,0}}, +/* 24978 */ {(12<<2)|2,{47,51,0}}, +/* 24979 */ {(12<<2)|2,{47,51,0}}, +/* 24980 */ {(12<<2)|2,{47,51,0}}, +/* 24981 */ {(12<<2)|2,{47,51,0}}, +/* 24982 */ {(12<<2)|2,{47,51,0}}, +/* 24983 */ {(12<<2)|2,{47,51,0}}, +/* 24984 */ {(12<<2)|2,{47,51,0}}, +/* 24985 */ {(12<<2)|2,{47,51,0}}, +/* 24986 */ {(12<<2)|2,{47,51,0}}, +/* 24987 */ {(12<<2)|2,{47,51,0}}, +/* 24988 */ {(12<<2)|2,{47,51,0}}, +/* 24989 */ {(12<<2)|2,{47,51,0}}, +/* 24990 */ {(12<<2)|2,{47,51,0}}, +/* 24991 */ {(12<<2)|2,{47,51,0}}, +/* 24992 */ {(12<<2)|2,{47,52,0}}, +/* 24993 */ {(12<<2)|2,{47,52,0}}, +/* 24994 */ {(12<<2)|2,{47,52,0}}, +/* 24995 */ {(12<<2)|2,{47,52,0}}, +/* 24996 */ {(12<<2)|2,{47,52,0}}, +/* 24997 */ {(12<<2)|2,{47,52,0}}, +/* 24998 */ {(12<<2)|2,{47,52,0}}, +/* 24999 */ {(12<<2)|2,{47,52,0}}, +/* 25000 */ {(12<<2)|2,{47,52,0}}, +/* 25001 */ {(12<<2)|2,{47,52,0}}, +/* 25002 */ {(12<<2)|2,{47,52,0}}, +/* 25003 */ {(12<<2)|2,{47,52,0}}, +/* 25004 */ {(12<<2)|2,{47,52,0}}, +/* 25005 */ {(12<<2)|2,{47,52,0}}, +/* 25006 */ {(12<<2)|2,{47,52,0}}, +/* 25007 */ {(12<<2)|2,{47,52,0}}, +/* 25008 */ {(12<<2)|2,{47,53,0}}, +/* 25009 */ {(12<<2)|2,{47,53,0}}, +/* 25010 */ {(12<<2)|2,{47,53,0}}, +/* 25011 */ {(12<<2)|2,{47,53,0}}, +/* 25012 */ {(12<<2)|2,{47,53,0}}, +/* 25013 */ {(12<<2)|2,{47,53,0}}, +/* 25014 */ {(12<<2)|2,{47,53,0}}, +/* 25015 */ {(12<<2)|2,{47,53,0}}, +/* 25016 */ {(12<<2)|2,{47,53,0}}, +/* 25017 */ {(12<<2)|2,{47,53,0}}, +/* 25018 */ {(12<<2)|2,{47,53,0}}, +/* 25019 */ {(12<<2)|2,{47,53,0}}, +/* 25020 */ {(12<<2)|2,{47,53,0}}, +/* 25021 */ {(12<<2)|2,{47,53,0}}, +/* 25022 */ {(12<<2)|2,{47,53,0}}, +/* 25023 */ {(12<<2)|2,{47,53,0}}, +/* 25024 */ {(12<<2)|2,{47,54,0}}, +/* 25025 */ {(12<<2)|2,{47,54,0}}, +/* 25026 */ {(12<<2)|2,{47,54,0}}, +/* 25027 */ {(12<<2)|2,{47,54,0}}, +/* 25028 */ {(12<<2)|2,{47,54,0}}, +/* 25029 */ {(12<<2)|2,{47,54,0}}, +/* 25030 */ {(12<<2)|2,{47,54,0}}, +/* 25031 */ {(12<<2)|2,{47,54,0}}, +/* 25032 */ {(12<<2)|2,{47,54,0}}, +/* 25033 */ {(12<<2)|2,{47,54,0}}, +/* 25034 */ {(12<<2)|2,{47,54,0}}, +/* 25035 */ {(12<<2)|2,{47,54,0}}, +/* 25036 */ {(12<<2)|2,{47,54,0}}, +/* 25037 */ {(12<<2)|2,{47,54,0}}, +/* 25038 */ {(12<<2)|2,{47,54,0}}, +/* 25039 */ {(12<<2)|2,{47,54,0}}, +/* 25040 */ {(12<<2)|2,{47,55,0}}, +/* 25041 */ {(12<<2)|2,{47,55,0}}, +/* 25042 */ {(12<<2)|2,{47,55,0}}, +/* 25043 */ {(12<<2)|2,{47,55,0}}, +/* 25044 */ {(12<<2)|2,{47,55,0}}, +/* 25045 */ {(12<<2)|2,{47,55,0}}, +/* 25046 */ {(12<<2)|2,{47,55,0}}, +/* 25047 */ {(12<<2)|2,{47,55,0}}, +/* 25048 */ {(12<<2)|2,{47,55,0}}, +/* 25049 */ {(12<<2)|2,{47,55,0}}, +/* 25050 */ {(12<<2)|2,{47,55,0}}, +/* 25051 */ {(12<<2)|2,{47,55,0}}, +/* 25052 */ {(12<<2)|2,{47,55,0}}, +/* 25053 */ {(12<<2)|2,{47,55,0}}, +/* 25054 */ {(12<<2)|2,{47,55,0}}, +/* 25055 */ {(12<<2)|2,{47,55,0}}, +/* 25056 */ {(12<<2)|2,{47,56,0}}, +/* 25057 */ {(12<<2)|2,{47,56,0}}, +/* 25058 */ {(12<<2)|2,{47,56,0}}, +/* 25059 */ {(12<<2)|2,{47,56,0}}, +/* 25060 */ {(12<<2)|2,{47,56,0}}, +/* 25061 */ {(12<<2)|2,{47,56,0}}, +/* 25062 */ {(12<<2)|2,{47,56,0}}, +/* 25063 */ {(12<<2)|2,{47,56,0}}, +/* 25064 */ {(12<<2)|2,{47,56,0}}, +/* 25065 */ {(12<<2)|2,{47,56,0}}, +/* 25066 */ {(12<<2)|2,{47,56,0}}, +/* 25067 */ {(12<<2)|2,{47,56,0}}, +/* 25068 */ {(12<<2)|2,{47,56,0}}, +/* 25069 */ {(12<<2)|2,{47,56,0}}, +/* 25070 */ {(12<<2)|2,{47,56,0}}, +/* 25071 */ {(12<<2)|2,{47,56,0}}, +/* 25072 */ {(12<<2)|2,{47,57,0}}, +/* 25073 */ {(12<<2)|2,{47,57,0}}, +/* 25074 */ {(12<<2)|2,{47,57,0}}, +/* 25075 */ {(12<<2)|2,{47,57,0}}, +/* 25076 */ {(12<<2)|2,{47,57,0}}, +/* 25077 */ {(12<<2)|2,{47,57,0}}, +/* 25078 */ {(12<<2)|2,{47,57,0}}, +/* 25079 */ {(12<<2)|2,{47,57,0}}, +/* 25080 */ {(12<<2)|2,{47,57,0}}, +/* 25081 */ {(12<<2)|2,{47,57,0}}, +/* 25082 */ {(12<<2)|2,{47,57,0}}, +/* 25083 */ {(12<<2)|2,{47,57,0}}, +/* 25084 */ {(12<<2)|2,{47,57,0}}, +/* 25085 */ {(12<<2)|2,{47,57,0}}, +/* 25086 */ {(12<<2)|2,{47,57,0}}, +/* 25087 */ {(12<<2)|2,{47,57,0}}, +/* 25088 */ {(12<<2)|2,{47,61,0}}, +/* 25089 */ {(12<<2)|2,{47,61,0}}, +/* 25090 */ {(12<<2)|2,{47,61,0}}, +/* 25091 */ {(12<<2)|2,{47,61,0}}, +/* 25092 */ {(12<<2)|2,{47,61,0}}, +/* 25093 */ {(12<<2)|2,{47,61,0}}, +/* 25094 */ {(12<<2)|2,{47,61,0}}, +/* 25095 */ {(12<<2)|2,{47,61,0}}, +/* 25096 */ {(12<<2)|2,{47,61,0}}, +/* 25097 */ {(12<<2)|2,{47,61,0}}, +/* 25098 */ {(12<<2)|2,{47,61,0}}, +/* 25099 */ {(12<<2)|2,{47,61,0}}, +/* 25100 */ {(12<<2)|2,{47,61,0}}, +/* 25101 */ {(12<<2)|2,{47,61,0}}, +/* 25102 */ {(12<<2)|2,{47,61,0}}, +/* 25103 */ {(12<<2)|2,{47,61,0}}, +/* 25104 */ {(12<<2)|2,{47,65,0}}, +/* 25105 */ {(12<<2)|2,{47,65,0}}, +/* 25106 */ {(12<<2)|2,{47,65,0}}, +/* 25107 */ {(12<<2)|2,{47,65,0}}, +/* 25108 */ {(12<<2)|2,{47,65,0}}, +/* 25109 */ {(12<<2)|2,{47,65,0}}, +/* 25110 */ {(12<<2)|2,{47,65,0}}, +/* 25111 */ {(12<<2)|2,{47,65,0}}, +/* 25112 */ {(12<<2)|2,{47,65,0}}, +/* 25113 */ {(12<<2)|2,{47,65,0}}, +/* 25114 */ {(12<<2)|2,{47,65,0}}, +/* 25115 */ {(12<<2)|2,{47,65,0}}, +/* 25116 */ {(12<<2)|2,{47,65,0}}, +/* 25117 */ {(12<<2)|2,{47,65,0}}, +/* 25118 */ {(12<<2)|2,{47,65,0}}, +/* 25119 */ {(12<<2)|2,{47,65,0}}, +/* 25120 */ {(12<<2)|2,{47,95,0}}, +/* 25121 */ {(12<<2)|2,{47,95,0}}, +/* 25122 */ {(12<<2)|2,{47,95,0}}, +/* 25123 */ {(12<<2)|2,{47,95,0}}, +/* 25124 */ {(12<<2)|2,{47,95,0}}, +/* 25125 */ {(12<<2)|2,{47,95,0}}, +/* 25126 */ {(12<<2)|2,{47,95,0}}, +/* 25127 */ {(12<<2)|2,{47,95,0}}, +/* 25128 */ {(12<<2)|2,{47,95,0}}, +/* 25129 */ {(12<<2)|2,{47,95,0}}, +/* 25130 */ {(12<<2)|2,{47,95,0}}, +/* 25131 */ {(12<<2)|2,{47,95,0}}, +/* 25132 */ {(12<<2)|2,{47,95,0}}, +/* 25133 */ {(12<<2)|2,{47,95,0}}, +/* 25134 */ {(12<<2)|2,{47,95,0}}, +/* 25135 */ {(12<<2)|2,{47,95,0}}, +/* 25136 */ {(12<<2)|2,{47,98,0}}, +/* 25137 */ {(12<<2)|2,{47,98,0}}, +/* 25138 */ {(12<<2)|2,{47,98,0}}, +/* 25139 */ {(12<<2)|2,{47,98,0}}, +/* 25140 */ {(12<<2)|2,{47,98,0}}, +/* 25141 */ {(12<<2)|2,{47,98,0}}, +/* 25142 */ {(12<<2)|2,{47,98,0}}, +/* 25143 */ {(12<<2)|2,{47,98,0}}, +/* 25144 */ {(12<<2)|2,{47,98,0}}, +/* 25145 */ {(12<<2)|2,{47,98,0}}, +/* 25146 */ {(12<<2)|2,{47,98,0}}, +/* 25147 */ {(12<<2)|2,{47,98,0}}, +/* 25148 */ {(12<<2)|2,{47,98,0}}, +/* 25149 */ {(12<<2)|2,{47,98,0}}, +/* 25150 */ {(12<<2)|2,{47,98,0}}, +/* 25151 */ {(12<<2)|2,{47,98,0}}, +/* 25152 */ {(12<<2)|2,{47,100,0}}, +/* 25153 */ {(12<<2)|2,{47,100,0}}, +/* 25154 */ {(12<<2)|2,{47,100,0}}, +/* 25155 */ {(12<<2)|2,{47,100,0}}, +/* 25156 */ {(12<<2)|2,{47,100,0}}, +/* 25157 */ {(12<<2)|2,{47,100,0}}, +/* 25158 */ {(12<<2)|2,{47,100,0}}, +/* 25159 */ {(12<<2)|2,{47,100,0}}, +/* 25160 */ {(12<<2)|2,{47,100,0}}, +/* 25161 */ {(12<<2)|2,{47,100,0}}, +/* 25162 */ {(12<<2)|2,{47,100,0}}, +/* 25163 */ {(12<<2)|2,{47,100,0}}, +/* 25164 */ {(12<<2)|2,{47,100,0}}, +/* 25165 */ {(12<<2)|2,{47,100,0}}, +/* 25166 */ {(12<<2)|2,{47,100,0}}, +/* 25167 */ {(12<<2)|2,{47,100,0}}, +/* 25168 */ {(12<<2)|2,{47,102,0}}, +/* 25169 */ {(12<<2)|2,{47,102,0}}, +/* 25170 */ {(12<<2)|2,{47,102,0}}, +/* 25171 */ {(12<<2)|2,{47,102,0}}, +/* 25172 */ {(12<<2)|2,{47,102,0}}, +/* 25173 */ {(12<<2)|2,{47,102,0}}, +/* 25174 */ {(12<<2)|2,{47,102,0}}, +/* 25175 */ {(12<<2)|2,{47,102,0}}, +/* 25176 */ {(12<<2)|2,{47,102,0}}, +/* 25177 */ {(12<<2)|2,{47,102,0}}, +/* 25178 */ {(12<<2)|2,{47,102,0}}, +/* 25179 */ {(12<<2)|2,{47,102,0}}, +/* 25180 */ {(12<<2)|2,{47,102,0}}, +/* 25181 */ {(12<<2)|2,{47,102,0}}, +/* 25182 */ {(12<<2)|2,{47,102,0}}, +/* 25183 */ {(12<<2)|2,{47,102,0}}, +/* 25184 */ {(12<<2)|2,{47,103,0}}, +/* 25185 */ {(12<<2)|2,{47,103,0}}, +/* 25186 */ {(12<<2)|2,{47,103,0}}, +/* 25187 */ {(12<<2)|2,{47,103,0}}, +/* 25188 */ {(12<<2)|2,{47,103,0}}, +/* 25189 */ {(12<<2)|2,{47,103,0}}, +/* 25190 */ {(12<<2)|2,{47,103,0}}, +/* 25191 */ {(12<<2)|2,{47,103,0}}, +/* 25192 */ {(12<<2)|2,{47,103,0}}, +/* 25193 */ {(12<<2)|2,{47,103,0}}, +/* 25194 */ {(12<<2)|2,{47,103,0}}, +/* 25195 */ {(12<<2)|2,{47,103,0}}, +/* 25196 */ {(12<<2)|2,{47,103,0}}, +/* 25197 */ {(12<<2)|2,{47,103,0}}, +/* 25198 */ {(12<<2)|2,{47,103,0}}, +/* 25199 */ {(12<<2)|2,{47,103,0}}, +/* 25200 */ {(12<<2)|2,{47,104,0}}, +/* 25201 */ {(12<<2)|2,{47,104,0}}, +/* 25202 */ {(12<<2)|2,{47,104,0}}, +/* 25203 */ {(12<<2)|2,{47,104,0}}, +/* 25204 */ {(12<<2)|2,{47,104,0}}, +/* 25205 */ {(12<<2)|2,{47,104,0}}, +/* 25206 */ {(12<<2)|2,{47,104,0}}, +/* 25207 */ {(12<<2)|2,{47,104,0}}, +/* 25208 */ {(12<<2)|2,{47,104,0}}, +/* 25209 */ {(12<<2)|2,{47,104,0}}, +/* 25210 */ {(12<<2)|2,{47,104,0}}, +/* 25211 */ {(12<<2)|2,{47,104,0}}, +/* 25212 */ {(12<<2)|2,{47,104,0}}, +/* 25213 */ {(12<<2)|2,{47,104,0}}, +/* 25214 */ {(12<<2)|2,{47,104,0}}, +/* 25215 */ {(12<<2)|2,{47,104,0}}, +/* 25216 */ {(12<<2)|2,{47,108,0}}, +/* 25217 */ {(12<<2)|2,{47,108,0}}, +/* 25218 */ {(12<<2)|2,{47,108,0}}, +/* 25219 */ {(12<<2)|2,{47,108,0}}, +/* 25220 */ {(12<<2)|2,{47,108,0}}, +/* 25221 */ {(12<<2)|2,{47,108,0}}, +/* 25222 */ {(12<<2)|2,{47,108,0}}, +/* 25223 */ {(12<<2)|2,{47,108,0}}, +/* 25224 */ {(12<<2)|2,{47,108,0}}, +/* 25225 */ {(12<<2)|2,{47,108,0}}, +/* 25226 */ {(12<<2)|2,{47,108,0}}, +/* 25227 */ {(12<<2)|2,{47,108,0}}, +/* 25228 */ {(12<<2)|2,{47,108,0}}, +/* 25229 */ {(12<<2)|2,{47,108,0}}, +/* 25230 */ {(12<<2)|2,{47,108,0}}, +/* 25231 */ {(12<<2)|2,{47,108,0}}, +/* 25232 */ {(12<<2)|2,{47,109,0}}, +/* 25233 */ {(12<<2)|2,{47,109,0}}, +/* 25234 */ {(12<<2)|2,{47,109,0}}, +/* 25235 */ {(12<<2)|2,{47,109,0}}, +/* 25236 */ {(12<<2)|2,{47,109,0}}, +/* 25237 */ {(12<<2)|2,{47,109,0}}, +/* 25238 */ {(12<<2)|2,{47,109,0}}, +/* 25239 */ {(12<<2)|2,{47,109,0}}, +/* 25240 */ {(12<<2)|2,{47,109,0}}, +/* 25241 */ {(12<<2)|2,{47,109,0}}, +/* 25242 */ {(12<<2)|2,{47,109,0}}, +/* 25243 */ {(12<<2)|2,{47,109,0}}, +/* 25244 */ {(12<<2)|2,{47,109,0}}, +/* 25245 */ {(12<<2)|2,{47,109,0}}, +/* 25246 */ {(12<<2)|2,{47,109,0}}, +/* 25247 */ {(12<<2)|2,{47,109,0}}, +/* 25248 */ {(12<<2)|2,{47,110,0}}, +/* 25249 */ {(12<<2)|2,{47,110,0}}, +/* 25250 */ {(12<<2)|2,{47,110,0}}, +/* 25251 */ {(12<<2)|2,{47,110,0}}, +/* 25252 */ {(12<<2)|2,{47,110,0}}, +/* 25253 */ {(12<<2)|2,{47,110,0}}, +/* 25254 */ {(12<<2)|2,{47,110,0}}, +/* 25255 */ {(12<<2)|2,{47,110,0}}, +/* 25256 */ {(12<<2)|2,{47,110,0}}, +/* 25257 */ {(12<<2)|2,{47,110,0}}, +/* 25258 */ {(12<<2)|2,{47,110,0}}, +/* 25259 */ {(12<<2)|2,{47,110,0}}, +/* 25260 */ {(12<<2)|2,{47,110,0}}, +/* 25261 */ {(12<<2)|2,{47,110,0}}, +/* 25262 */ {(12<<2)|2,{47,110,0}}, +/* 25263 */ {(12<<2)|2,{47,110,0}}, +/* 25264 */ {(12<<2)|2,{47,112,0}}, +/* 25265 */ {(12<<2)|2,{47,112,0}}, +/* 25266 */ {(12<<2)|2,{47,112,0}}, +/* 25267 */ {(12<<2)|2,{47,112,0}}, +/* 25268 */ {(12<<2)|2,{47,112,0}}, +/* 25269 */ {(12<<2)|2,{47,112,0}}, +/* 25270 */ {(12<<2)|2,{47,112,0}}, +/* 25271 */ {(12<<2)|2,{47,112,0}}, +/* 25272 */ {(12<<2)|2,{47,112,0}}, +/* 25273 */ {(12<<2)|2,{47,112,0}}, +/* 25274 */ {(12<<2)|2,{47,112,0}}, +/* 25275 */ {(12<<2)|2,{47,112,0}}, +/* 25276 */ {(12<<2)|2,{47,112,0}}, +/* 25277 */ {(12<<2)|2,{47,112,0}}, +/* 25278 */ {(12<<2)|2,{47,112,0}}, +/* 25279 */ {(12<<2)|2,{47,112,0}}, +/* 25280 */ {(12<<2)|2,{47,114,0}}, +/* 25281 */ {(12<<2)|2,{47,114,0}}, +/* 25282 */ {(12<<2)|2,{47,114,0}}, +/* 25283 */ {(12<<2)|2,{47,114,0}}, +/* 25284 */ {(12<<2)|2,{47,114,0}}, +/* 25285 */ {(12<<2)|2,{47,114,0}}, +/* 25286 */ {(12<<2)|2,{47,114,0}}, +/* 25287 */ {(12<<2)|2,{47,114,0}}, +/* 25288 */ {(12<<2)|2,{47,114,0}}, +/* 25289 */ {(12<<2)|2,{47,114,0}}, +/* 25290 */ {(12<<2)|2,{47,114,0}}, +/* 25291 */ {(12<<2)|2,{47,114,0}}, +/* 25292 */ {(12<<2)|2,{47,114,0}}, +/* 25293 */ {(12<<2)|2,{47,114,0}}, +/* 25294 */ {(12<<2)|2,{47,114,0}}, +/* 25295 */ {(12<<2)|2,{47,114,0}}, +/* 25296 */ {(12<<2)|2,{47,117,0}}, +/* 25297 */ {(12<<2)|2,{47,117,0}}, +/* 25298 */ {(12<<2)|2,{47,117,0}}, +/* 25299 */ {(12<<2)|2,{47,117,0}}, +/* 25300 */ {(12<<2)|2,{47,117,0}}, +/* 25301 */ {(12<<2)|2,{47,117,0}}, +/* 25302 */ {(12<<2)|2,{47,117,0}}, +/* 25303 */ {(12<<2)|2,{47,117,0}}, +/* 25304 */ {(12<<2)|2,{47,117,0}}, +/* 25305 */ {(12<<2)|2,{47,117,0}}, +/* 25306 */ {(12<<2)|2,{47,117,0}}, +/* 25307 */ {(12<<2)|2,{47,117,0}}, +/* 25308 */ {(12<<2)|2,{47,117,0}}, +/* 25309 */ {(12<<2)|2,{47,117,0}}, +/* 25310 */ {(12<<2)|2,{47,117,0}}, +/* 25311 */ {(12<<2)|2,{47,117,0}}, +/* 25312 */ {(13<<2)|2,{47,58,0}}, +/* 25313 */ {(13<<2)|2,{47,58,0}}, +/* 25314 */ {(13<<2)|2,{47,58,0}}, +/* 25315 */ {(13<<2)|2,{47,58,0}}, +/* 25316 */ {(13<<2)|2,{47,58,0}}, +/* 25317 */ {(13<<2)|2,{47,58,0}}, +/* 25318 */ {(13<<2)|2,{47,58,0}}, +/* 25319 */ {(13<<2)|2,{47,58,0}}, +/* 25320 */ {(13<<2)|2,{47,66,0}}, +/* 25321 */ {(13<<2)|2,{47,66,0}}, +/* 25322 */ {(13<<2)|2,{47,66,0}}, +/* 25323 */ {(13<<2)|2,{47,66,0}}, +/* 25324 */ {(13<<2)|2,{47,66,0}}, +/* 25325 */ {(13<<2)|2,{47,66,0}}, +/* 25326 */ {(13<<2)|2,{47,66,0}}, +/* 25327 */ {(13<<2)|2,{47,66,0}}, +/* 25328 */ {(13<<2)|2,{47,67,0}}, +/* 25329 */ {(13<<2)|2,{47,67,0}}, +/* 25330 */ {(13<<2)|2,{47,67,0}}, +/* 25331 */ {(13<<2)|2,{47,67,0}}, +/* 25332 */ {(13<<2)|2,{47,67,0}}, +/* 25333 */ {(13<<2)|2,{47,67,0}}, +/* 25334 */ {(13<<2)|2,{47,67,0}}, +/* 25335 */ {(13<<2)|2,{47,67,0}}, +/* 25336 */ {(13<<2)|2,{47,68,0}}, +/* 25337 */ {(13<<2)|2,{47,68,0}}, +/* 25338 */ {(13<<2)|2,{47,68,0}}, +/* 25339 */ {(13<<2)|2,{47,68,0}}, +/* 25340 */ {(13<<2)|2,{47,68,0}}, +/* 25341 */ {(13<<2)|2,{47,68,0}}, +/* 25342 */ {(13<<2)|2,{47,68,0}}, +/* 25343 */ {(13<<2)|2,{47,68,0}}, +/* 25344 */ {(13<<2)|2,{47,69,0}}, +/* 25345 */ {(13<<2)|2,{47,69,0}}, +/* 25346 */ {(13<<2)|2,{47,69,0}}, +/* 25347 */ {(13<<2)|2,{47,69,0}}, +/* 25348 */ {(13<<2)|2,{47,69,0}}, +/* 25349 */ {(13<<2)|2,{47,69,0}}, +/* 25350 */ {(13<<2)|2,{47,69,0}}, +/* 25351 */ {(13<<2)|2,{47,69,0}}, +/* 25352 */ {(13<<2)|2,{47,70,0}}, +/* 25353 */ {(13<<2)|2,{47,70,0}}, +/* 25354 */ {(13<<2)|2,{47,70,0}}, +/* 25355 */ {(13<<2)|2,{47,70,0}}, +/* 25356 */ {(13<<2)|2,{47,70,0}}, +/* 25357 */ {(13<<2)|2,{47,70,0}}, +/* 25358 */ {(13<<2)|2,{47,70,0}}, +/* 25359 */ {(13<<2)|2,{47,70,0}}, +/* 25360 */ {(13<<2)|2,{47,71,0}}, +/* 25361 */ {(13<<2)|2,{47,71,0}}, +/* 25362 */ {(13<<2)|2,{47,71,0}}, +/* 25363 */ {(13<<2)|2,{47,71,0}}, +/* 25364 */ {(13<<2)|2,{47,71,0}}, +/* 25365 */ {(13<<2)|2,{47,71,0}}, +/* 25366 */ {(13<<2)|2,{47,71,0}}, +/* 25367 */ {(13<<2)|2,{47,71,0}}, +/* 25368 */ {(13<<2)|2,{47,72,0}}, +/* 25369 */ {(13<<2)|2,{47,72,0}}, +/* 25370 */ {(13<<2)|2,{47,72,0}}, +/* 25371 */ {(13<<2)|2,{47,72,0}}, +/* 25372 */ {(13<<2)|2,{47,72,0}}, +/* 25373 */ {(13<<2)|2,{47,72,0}}, +/* 25374 */ {(13<<2)|2,{47,72,0}}, +/* 25375 */ {(13<<2)|2,{47,72,0}}, +/* 25376 */ {(13<<2)|2,{47,73,0}}, +/* 25377 */ {(13<<2)|2,{47,73,0}}, +/* 25378 */ {(13<<2)|2,{47,73,0}}, +/* 25379 */ {(13<<2)|2,{47,73,0}}, +/* 25380 */ {(13<<2)|2,{47,73,0}}, +/* 25381 */ {(13<<2)|2,{47,73,0}}, +/* 25382 */ {(13<<2)|2,{47,73,0}}, +/* 25383 */ {(13<<2)|2,{47,73,0}}, +/* 25384 */ {(13<<2)|2,{47,74,0}}, +/* 25385 */ {(13<<2)|2,{47,74,0}}, +/* 25386 */ {(13<<2)|2,{47,74,0}}, +/* 25387 */ {(13<<2)|2,{47,74,0}}, +/* 25388 */ {(13<<2)|2,{47,74,0}}, +/* 25389 */ {(13<<2)|2,{47,74,0}}, +/* 25390 */ {(13<<2)|2,{47,74,0}}, +/* 25391 */ {(13<<2)|2,{47,74,0}}, +/* 25392 */ {(13<<2)|2,{47,75,0}}, +/* 25393 */ {(13<<2)|2,{47,75,0}}, +/* 25394 */ {(13<<2)|2,{47,75,0}}, +/* 25395 */ {(13<<2)|2,{47,75,0}}, +/* 25396 */ {(13<<2)|2,{47,75,0}}, +/* 25397 */ {(13<<2)|2,{47,75,0}}, +/* 25398 */ {(13<<2)|2,{47,75,0}}, +/* 25399 */ {(13<<2)|2,{47,75,0}}, +/* 25400 */ {(13<<2)|2,{47,76,0}}, +/* 25401 */ {(13<<2)|2,{47,76,0}}, +/* 25402 */ {(13<<2)|2,{47,76,0}}, +/* 25403 */ {(13<<2)|2,{47,76,0}}, +/* 25404 */ {(13<<2)|2,{47,76,0}}, +/* 25405 */ {(13<<2)|2,{47,76,0}}, +/* 25406 */ {(13<<2)|2,{47,76,0}}, +/* 25407 */ {(13<<2)|2,{47,76,0}}, +/* 25408 */ {(13<<2)|2,{47,77,0}}, +/* 25409 */ {(13<<2)|2,{47,77,0}}, +/* 25410 */ {(13<<2)|2,{47,77,0}}, +/* 25411 */ {(13<<2)|2,{47,77,0}}, +/* 25412 */ {(13<<2)|2,{47,77,0}}, +/* 25413 */ {(13<<2)|2,{47,77,0}}, +/* 25414 */ {(13<<2)|2,{47,77,0}}, +/* 25415 */ {(13<<2)|2,{47,77,0}}, +/* 25416 */ {(13<<2)|2,{47,78,0}}, +/* 25417 */ {(13<<2)|2,{47,78,0}}, +/* 25418 */ {(13<<2)|2,{47,78,0}}, +/* 25419 */ {(13<<2)|2,{47,78,0}}, +/* 25420 */ {(13<<2)|2,{47,78,0}}, +/* 25421 */ {(13<<2)|2,{47,78,0}}, +/* 25422 */ {(13<<2)|2,{47,78,0}}, +/* 25423 */ {(13<<2)|2,{47,78,0}}, +/* 25424 */ {(13<<2)|2,{47,79,0}}, +/* 25425 */ {(13<<2)|2,{47,79,0}}, +/* 25426 */ {(13<<2)|2,{47,79,0}}, +/* 25427 */ {(13<<2)|2,{47,79,0}}, +/* 25428 */ {(13<<2)|2,{47,79,0}}, +/* 25429 */ {(13<<2)|2,{47,79,0}}, +/* 25430 */ {(13<<2)|2,{47,79,0}}, +/* 25431 */ {(13<<2)|2,{47,79,0}}, +/* 25432 */ {(13<<2)|2,{47,80,0}}, +/* 25433 */ {(13<<2)|2,{47,80,0}}, +/* 25434 */ {(13<<2)|2,{47,80,0}}, +/* 25435 */ {(13<<2)|2,{47,80,0}}, +/* 25436 */ {(13<<2)|2,{47,80,0}}, +/* 25437 */ {(13<<2)|2,{47,80,0}}, +/* 25438 */ {(13<<2)|2,{47,80,0}}, +/* 25439 */ {(13<<2)|2,{47,80,0}}, +/* 25440 */ {(13<<2)|2,{47,81,0}}, +/* 25441 */ {(13<<2)|2,{47,81,0}}, +/* 25442 */ {(13<<2)|2,{47,81,0}}, +/* 25443 */ {(13<<2)|2,{47,81,0}}, +/* 25444 */ {(13<<2)|2,{47,81,0}}, +/* 25445 */ {(13<<2)|2,{47,81,0}}, +/* 25446 */ {(13<<2)|2,{47,81,0}}, +/* 25447 */ {(13<<2)|2,{47,81,0}}, +/* 25448 */ {(13<<2)|2,{47,82,0}}, +/* 25449 */ {(13<<2)|2,{47,82,0}}, +/* 25450 */ {(13<<2)|2,{47,82,0}}, +/* 25451 */ {(13<<2)|2,{47,82,0}}, +/* 25452 */ {(13<<2)|2,{47,82,0}}, +/* 25453 */ {(13<<2)|2,{47,82,0}}, +/* 25454 */ {(13<<2)|2,{47,82,0}}, +/* 25455 */ {(13<<2)|2,{47,82,0}}, +/* 25456 */ {(13<<2)|2,{47,83,0}}, +/* 25457 */ {(13<<2)|2,{47,83,0}}, +/* 25458 */ {(13<<2)|2,{47,83,0}}, +/* 25459 */ {(13<<2)|2,{47,83,0}}, +/* 25460 */ {(13<<2)|2,{47,83,0}}, +/* 25461 */ {(13<<2)|2,{47,83,0}}, +/* 25462 */ {(13<<2)|2,{47,83,0}}, +/* 25463 */ {(13<<2)|2,{47,83,0}}, +/* 25464 */ {(13<<2)|2,{47,84,0}}, +/* 25465 */ {(13<<2)|2,{47,84,0}}, +/* 25466 */ {(13<<2)|2,{47,84,0}}, +/* 25467 */ {(13<<2)|2,{47,84,0}}, +/* 25468 */ {(13<<2)|2,{47,84,0}}, +/* 25469 */ {(13<<2)|2,{47,84,0}}, +/* 25470 */ {(13<<2)|2,{47,84,0}}, +/* 25471 */ {(13<<2)|2,{47,84,0}}, +/* 25472 */ {(13<<2)|2,{47,85,0}}, +/* 25473 */ {(13<<2)|2,{47,85,0}}, +/* 25474 */ {(13<<2)|2,{47,85,0}}, +/* 25475 */ {(13<<2)|2,{47,85,0}}, +/* 25476 */ {(13<<2)|2,{47,85,0}}, +/* 25477 */ {(13<<2)|2,{47,85,0}}, +/* 25478 */ {(13<<2)|2,{47,85,0}}, +/* 25479 */ {(13<<2)|2,{47,85,0}}, +/* 25480 */ {(13<<2)|2,{47,86,0}}, +/* 25481 */ {(13<<2)|2,{47,86,0}}, +/* 25482 */ {(13<<2)|2,{47,86,0}}, +/* 25483 */ {(13<<2)|2,{47,86,0}}, +/* 25484 */ {(13<<2)|2,{47,86,0}}, +/* 25485 */ {(13<<2)|2,{47,86,0}}, +/* 25486 */ {(13<<2)|2,{47,86,0}}, +/* 25487 */ {(13<<2)|2,{47,86,0}}, +/* 25488 */ {(13<<2)|2,{47,87,0}}, +/* 25489 */ {(13<<2)|2,{47,87,0}}, +/* 25490 */ {(13<<2)|2,{47,87,0}}, +/* 25491 */ {(13<<2)|2,{47,87,0}}, +/* 25492 */ {(13<<2)|2,{47,87,0}}, +/* 25493 */ {(13<<2)|2,{47,87,0}}, +/* 25494 */ {(13<<2)|2,{47,87,0}}, +/* 25495 */ {(13<<2)|2,{47,87,0}}, +/* 25496 */ {(13<<2)|2,{47,89,0}}, +/* 25497 */ {(13<<2)|2,{47,89,0}}, +/* 25498 */ {(13<<2)|2,{47,89,0}}, +/* 25499 */ {(13<<2)|2,{47,89,0}}, +/* 25500 */ {(13<<2)|2,{47,89,0}}, +/* 25501 */ {(13<<2)|2,{47,89,0}}, +/* 25502 */ {(13<<2)|2,{47,89,0}}, +/* 25503 */ {(13<<2)|2,{47,89,0}}, +/* 25504 */ {(13<<2)|2,{47,106,0}}, +/* 25505 */ {(13<<2)|2,{47,106,0}}, +/* 25506 */ {(13<<2)|2,{47,106,0}}, +/* 25507 */ {(13<<2)|2,{47,106,0}}, +/* 25508 */ {(13<<2)|2,{47,106,0}}, +/* 25509 */ {(13<<2)|2,{47,106,0}}, +/* 25510 */ {(13<<2)|2,{47,106,0}}, +/* 25511 */ {(13<<2)|2,{47,106,0}}, +/* 25512 */ {(13<<2)|2,{47,107,0}}, +/* 25513 */ {(13<<2)|2,{47,107,0}}, +/* 25514 */ {(13<<2)|2,{47,107,0}}, +/* 25515 */ {(13<<2)|2,{47,107,0}}, +/* 25516 */ {(13<<2)|2,{47,107,0}}, +/* 25517 */ {(13<<2)|2,{47,107,0}}, +/* 25518 */ {(13<<2)|2,{47,107,0}}, +/* 25519 */ {(13<<2)|2,{47,107,0}}, +/* 25520 */ {(13<<2)|2,{47,113,0}}, +/* 25521 */ {(13<<2)|2,{47,113,0}}, +/* 25522 */ {(13<<2)|2,{47,113,0}}, +/* 25523 */ {(13<<2)|2,{47,113,0}}, +/* 25524 */ {(13<<2)|2,{47,113,0}}, +/* 25525 */ {(13<<2)|2,{47,113,0}}, +/* 25526 */ {(13<<2)|2,{47,113,0}}, +/* 25527 */ {(13<<2)|2,{47,113,0}}, +/* 25528 */ {(13<<2)|2,{47,118,0}}, +/* 25529 */ {(13<<2)|2,{47,118,0}}, +/* 25530 */ {(13<<2)|2,{47,118,0}}, +/* 25531 */ {(13<<2)|2,{47,118,0}}, +/* 25532 */ {(13<<2)|2,{47,118,0}}, +/* 25533 */ {(13<<2)|2,{47,118,0}}, +/* 25534 */ {(13<<2)|2,{47,118,0}}, +/* 25535 */ {(13<<2)|2,{47,118,0}}, +/* 25536 */ {(13<<2)|2,{47,119,0}}, +/* 25537 */ {(13<<2)|2,{47,119,0}}, +/* 25538 */ {(13<<2)|2,{47,119,0}}, +/* 25539 */ {(13<<2)|2,{47,119,0}}, +/* 25540 */ {(13<<2)|2,{47,119,0}}, +/* 25541 */ {(13<<2)|2,{47,119,0}}, +/* 25542 */ {(13<<2)|2,{47,119,0}}, +/* 25543 */ {(13<<2)|2,{47,119,0}}, +/* 25544 */ {(13<<2)|2,{47,120,0}}, +/* 25545 */ {(13<<2)|2,{47,120,0}}, +/* 25546 */ {(13<<2)|2,{47,120,0}}, +/* 25547 */ {(13<<2)|2,{47,120,0}}, +/* 25548 */ {(13<<2)|2,{47,120,0}}, +/* 25549 */ {(13<<2)|2,{47,120,0}}, +/* 25550 */ {(13<<2)|2,{47,120,0}}, +/* 25551 */ {(13<<2)|2,{47,120,0}}, +/* 25552 */ {(13<<2)|2,{47,121,0}}, +/* 25553 */ {(13<<2)|2,{47,121,0}}, +/* 25554 */ {(13<<2)|2,{47,121,0}}, +/* 25555 */ {(13<<2)|2,{47,121,0}}, +/* 25556 */ {(13<<2)|2,{47,121,0}}, +/* 25557 */ {(13<<2)|2,{47,121,0}}, +/* 25558 */ {(13<<2)|2,{47,121,0}}, +/* 25559 */ {(13<<2)|2,{47,121,0}}, +/* 25560 */ {(13<<2)|2,{47,122,0}}, +/* 25561 */ {(13<<2)|2,{47,122,0}}, +/* 25562 */ {(13<<2)|2,{47,122,0}}, +/* 25563 */ {(13<<2)|2,{47,122,0}}, +/* 25564 */ {(13<<2)|2,{47,122,0}}, +/* 25565 */ {(13<<2)|2,{47,122,0}}, +/* 25566 */ {(13<<2)|2,{47,122,0}}, +/* 25567 */ {(13<<2)|2,{47,122,0}}, +/* 25568 */ {(14<<2)|2,{47,38,0}}, +/* 25569 */ {(14<<2)|2,{47,38,0}}, +/* 25570 */ {(14<<2)|2,{47,38,0}}, +/* 25571 */ {(14<<2)|2,{47,38,0}}, +/* 25572 */ {(14<<2)|2,{47,42,0}}, +/* 25573 */ {(14<<2)|2,{47,42,0}}, +/* 25574 */ {(14<<2)|2,{47,42,0}}, +/* 25575 */ {(14<<2)|2,{47,42,0}}, +/* 25576 */ {(14<<2)|2,{47,44,0}}, +/* 25577 */ {(14<<2)|2,{47,44,0}}, +/* 25578 */ {(14<<2)|2,{47,44,0}}, +/* 25579 */ {(14<<2)|2,{47,44,0}}, +/* 25580 */ {(14<<2)|2,{47,59,0}}, +/* 25581 */ {(14<<2)|2,{47,59,0}}, +/* 25582 */ {(14<<2)|2,{47,59,0}}, +/* 25583 */ {(14<<2)|2,{47,59,0}}, +/* 25584 */ {(14<<2)|2,{47,88,0}}, +/* 25585 */ {(14<<2)|2,{47,88,0}}, +/* 25586 */ {(14<<2)|2,{47,88,0}}, +/* 25587 */ {(14<<2)|2,{47,88,0}}, +/* 25588 */ {(14<<2)|2,{47,90,0}}, +/* 25589 */ {(14<<2)|2,{47,90,0}}, +/* 25590 */ {(14<<2)|2,{47,90,0}}, +/* 25591 */ {(14<<2)|2,{47,90,0}}, +/* 25592 */ {(16<<2)|2,{47,33,0}}, +/* 25593 */ {(16<<2)|2,{47,34,0}}, +/* 25594 */ {(16<<2)|2,{47,40,0}}, +/* 25595 */ {(16<<2)|2,{47,41,0}}, +/* 25596 */ {(16<<2)|2,{47,63,0}}, +/* 25597 */ {(6<<2)|1,{47,0,0}}, +/* 25598 */ {(6<<2)|1,{47,0,0}}, +/* 25599 */ {(6<<2)|1,{47,0,0}}, +/* 25600 */ {(16<<2)|3,{51,48,48}}, +/* 25601 */ {(16<<2)|3,{51,48,49}}, +/* 25602 */ {(16<<2)|3,{51,48,50}}, +/* 25603 */ {(16<<2)|3,{51,48,97}}, +/* 25604 */ {(16<<2)|3,{51,48,99}}, +/* 25605 */ {(16<<2)|3,{51,48,101}}, +/* 25606 */ {(16<<2)|3,{51,48,105}}, +/* 25607 */ {(16<<2)|3,{51,48,111}}, +/* 25608 */ {(16<<2)|3,{51,48,115}}, +/* 25609 */ {(16<<2)|3,{51,48,116}}, +/* 25610 */ {(11<<2)|2,{51,48,0}}, +/* 25611 */ {(11<<2)|2,{51,48,0}}, +/* 25612 */ {(11<<2)|2,{51,48,0}}, +/* 25613 */ {(11<<2)|2,{51,48,0}}, +/* 25614 */ {(11<<2)|2,{51,48,0}}, +/* 25615 */ {(11<<2)|2,{51,48,0}}, +/* 25616 */ {(11<<2)|2,{51,48,0}}, +/* 25617 */ {(11<<2)|2,{51,48,0}}, +/* 25618 */ {(11<<2)|2,{51,48,0}}, +/* 25619 */ {(11<<2)|2,{51,48,0}}, +/* 25620 */ {(11<<2)|2,{51,48,0}}, +/* 25621 */ {(11<<2)|2,{51,48,0}}, +/* 25622 */ {(11<<2)|2,{51,48,0}}, +/* 25623 */ {(11<<2)|2,{51,48,0}}, +/* 25624 */ {(11<<2)|2,{51,48,0}}, +/* 25625 */ {(11<<2)|2,{51,48,0}}, +/* 25626 */ {(11<<2)|2,{51,48,0}}, +/* 25627 */ {(11<<2)|2,{51,48,0}}, +/* 25628 */ {(11<<2)|2,{51,48,0}}, +/* 25629 */ {(11<<2)|2,{51,48,0}}, +/* 25630 */ {(11<<2)|2,{51,48,0}}, +/* 25631 */ {(11<<2)|2,{51,48,0}}, +/* 25632 */ {(16<<2)|3,{51,49,48}}, +/* 25633 */ {(16<<2)|3,{51,49,49}}, +/* 25634 */ {(16<<2)|3,{51,49,50}}, +/* 25635 */ {(16<<2)|3,{51,49,97}}, +/* 25636 */ {(16<<2)|3,{51,49,99}}, +/* 25637 */ {(16<<2)|3,{51,49,101}}, +/* 25638 */ {(16<<2)|3,{51,49,105}}, +/* 25639 */ {(16<<2)|3,{51,49,111}}, +/* 25640 */ {(16<<2)|3,{51,49,115}}, +/* 25641 */ {(16<<2)|3,{51,49,116}}, +/* 25642 */ {(11<<2)|2,{51,49,0}}, +/* 25643 */ {(11<<2)|2,{51,49,0}}, +/* 25644 */ {(11<<2)|2,{51,49,0}}, +/* 25645 */ {(11<<2)|2,{51,49,0}}, +/* 25646 */ {(11<<2)|2,{51,49,0}}, +/* 25647 */ {(11<<2)|2,{51,49,0}}, +/* 25648 */ {(11<<2)|2,{51,49,0}}, +/* 25649 */ {(11<<2)|2,{51,49,0}}, +/* 25650 */ {(11<<2)|2,{51,49,0}}, +/* 25651 */ {(11<<2)|2,{51,49,0}}, +/* 25652 */ {(11<<2)|2,{51,49,0}}, +/* 25653 */ {(11<<2)|2,{51,49,0}}, +/* 25654 */ {(11<<2)|2,{51,49,0}}, +/* 25655 */ {(11<<2)|2,{51,49,0}}, +/* 25656 */ {(11<<2)|2,{51,49,0}}, +/* 25657 */ {(11<<2)|2,{51,49,0}}, +/* 25658 */ {(11<<2)|2,{51,49,0}}, +/* 25659 */ {(11<<2)|2,{51,49,0}}, +/* 25660 */ {(11<<2)|2,{51,49,0}}, +/* 25661 */ {(11<<2)|2,{51,49,0}}, +/* 25662 */ {(11<<2)|2,{51,49,0}}, +/* 25663 */ {(11<<2)|2,{51,49,0}}, +/* 25664 */ {(16<<2)|3,{51,50,48}}, +/* 25665 */ {(16<<2)|3,{51,50,49}}, +/* 25666 */ {(16<<2)|3,{51,50,50}}, +/* 25667 */ {(16<<2)|3,{51,50,97}}, +/* 25668 */ {(16<<2)|3,{51,50,99}}, +/* 25669 */ {(16<<2)|3,{51,50,101}}, +/* 25670 */ {(16<<2)|3,{51,50,105}}, +/* 25671 */ {(16<<2)|3,{51,50,111}}, +/* 25672 */ {(16<<2)|3,{51,50,115}}, +/* 25673 */ {(16<<2)|3,{51,50,116}}, +/* 25674 */ {(11<<2)|2,{51,50,0}}, +/* 25675 */ {(11<<2)|2,{51,50,0}}, +/* 25676 */ {(11<<2)|2,{51,50,0}}, +/* 25677 */ {(11<<2)|2,{51,50,0}}, +/* 25678 */ {(11<<2)|2,{51,50,0}}, +/* 25679 */ {(11<<2)|2,{51,50,0}}, +/* 25680 */ {(11<<2)|2,{51,50,0}}, +/* 25681 */ {(11<<2)|2,{51,50,0}}, +/* 25682 */ {(11<<2)|2,{51,50,0}}, +/* 25683 */ {(11<<2)|2,{51,50,0}}, +/* 25684 */ {(11<<2)|2,{51,50,0}}, +/* 25685 */ {(11<<2)|2,{51,50,0}}, +/* 25686 */ {(11<<2)|2,{51,50,0}}, +/* 25687 */ {(11<<2)|2,{51,50,0}}, +/* 25688 */ {(11<<2)|2,{51,50,0}}, +/* 25689 */ {(11<<2)|2,{51,50,0}}, +/* 25690 */ {(11<<2)|2,{51,50,0}}, +/* 25691 */ {(11<<2)|2,{51,50,0}}, +/* 25692 */ {(11<<2)|2,{51,50,0}}, +/* 25693 */ {(11<<2)|2,{51,50,0}}, +/* 25694 */ {(11<<2)|2,{51,50,0}}, +/* 25695 */ {(11<<2)|2,{51,50,0}}, +/* 25696 */ {(16<<2)|3,{51,97,48}}, +/* 25697 */ {(16<<2)|3,{51,97,49}}, +/* 25698 */ {(16<<2)|3,{51,97,50}}, +/* 25699 */ {(16<<2)|3,{51,97,97}}, +/* 25700 */ {(16<<2)|3,{51,97,99}}, +/* 25701 */ {(16<<2)|3,{51,97,101}}, +/* 25702 */ {(16<<2)|3,{51,97,105}}, +/* 25703 */ {(16<<2)|3,{51,97,111}}, +/* 25704 */ {(16<<2)|3,{51,97,115}}, +/* 25705 */ {(16<<2)|3,{51,97,116}}, +/* 25706 */ {(11<<2)|2,{51,97,0}}, +/* 25707 */ {(11<<2)|2,{51,97,0}}, +/* 25708 */ {(11<<2)|2,{51,97,0}}, +/* 25709 */ {(11<<2)|2,{51,97,0}}, +/* 25710 */ {(11<<2)|2,{51,97,0}}, +/* 25711 */ {(11<<2)|2,{51,97,0}}, +/* 25712 */ {(11<<2)|2,{51,97,0}}, +/* 25713 */ {(11<<2)|2,{51,97,0}}, +/* 25714 */ {(11<<2)|2,{51,97,0}}, +/* 25715 */ {(11<<2)|2,{51,97,0}}, +/* 25716 */ {(11<<2)|2,{51,97,0}}, +/* 25717 */ {(11<<2)|2,{51,97,0}}, +/* 25718 */ {(11<<2)|2,{51,97,0}}, +/* 25719 */ {(11<<2)|2,{51,97,0}}, +/* 25720 */ {(11<<2)|2,{51,97,0}}, +/* 25721 */ {(11<<2)|2,{51,97,0}}, +/* 25722 */ {(11<<2)|2,{51,97,0}}, +/* 25723 */ {(11<<2)|2,{51,97,0}}, +/* 25724 */ {(11<<2)|2,{51,97,0}}, +/* 25725 */ {(11<<2)|2,{51,97,0}}, +/* 25726 */ {(11<<2)|2,{51,97,0}}, +/* 25727 */ {(11<<2)|2,{51,97,0}}, +/* 25728 */ {(16<<2)|3,{51,99,48}}, +/* 25729 */ {(16<<2)|3,{51,99,49}}, +/* 25730 */ {(16<<2)|3,{51,99,50}}, +/* 25731 */ {(16<<2)|3,{51,99,97}}, +/* 25732 */ {(16<<2)|3,{51,99,99}}, +/* 25733 */ {(16<<2)|3,{51,99,101}}, +/* 25734 */ {(16<<2)|3,{51,99,105}}, +/* 25735 */ {(16<<2)|3,{51,99,111}}, +/* 25736 */ {(16<<2)|3,{51,99,115}}, +/* 25737 */ {(16<<2)|3,{51,99,116}}, +/* 25738 */ {(11<<2)|2,{51,99,0}}, +/* 25739 */ {(11<<2)|2,{51,99,0}}, +/* 25740 */ {(11<<2)|2,{51,99,0}}, +/* 25741 */ {(11<<2)|2,{51,99,0}}, +/* 25742 */ {(11<<2)|2,{51,99,0}}, +/* 25743 */ {(11<<2)|2,{51,99,0}}, +/* 25744 */ {(11<<2)|2,{51,99,0}}, +/* 25745 */ {(11<<2)|2,{51,99,0}}, +/* 25746 */ {(11<<2)|2,{51,99,0}}, +/* 25747 */ {(11<<2)|2,{51,99,0}}, +/* 25748 */ {(11<<2)|2,{51,99,0}}, +/* 25749 */ {(11<<2)|2,{51,99,0}}, +/* 25750 */ {(11<<2)|2,{51,99,0}}, +/* 25751 */ {(11<<2)|2,{51,99,0}}, +/* 25752 */ {(11<<2)|2,{51,99,0}}, +/* 25753 */ {(11<<2)|2,{51,99,0}}, +/* 25754 */ {(11<<2)|2,{51,99,0}}, +/* 25755 */ {(11<<2)|2,{51,99,0}}, +/* 25756 */ {(11<<2)|2,{51,99,0}}, +/* 25757 */ {(11<<2)|2,{51,99,0}}, +/* 25758 */ {(11<<2)|2,{51,99,0}}, +/* 25759 */ {(11<<2)|2,{51,99,0}}, +/* 25760 */ {(16<<2)|3,{51,101,48}}, +/* 25761 */ {(16<<2)|3,{51,101,49}}, +/* 25762 */ {(16<<2)|3,{51,101,50}}, +/* 25763 */ {(16<<2)|3,{51,101,97}}, +/* 25764 */ {(16<<2)|3,{51,101,99}}, +/* 25765 */ {(16<<2)|3,{51,101,101}}, +/* 25766 */ {(16<<2)|3,{51,101,105}}, +/* 25767 */ {(16<<2)|3,{51,101,111}}, +/* 25768 */ {(16<<2)|3,{51,101,115}}, +/* 25769 */ {(16<<2)|3,{51,101,116}}, +/* 25770 */ {(11<<2)|2,{51,101,0}}, +/* 25771 */ {(11<<2)|2,{51,101,0}}, +/* 25772 */ {(11<<2)|2,{51,101,0}}, +/* 25773 */ {(11<<2)|2,{51,101,0}}, +/* 25774 */ {(11<<2)|2,{51,101,0}}, +/* 25775 */ {(11<<2)|2,{51,101,0}}, +/* 25776 */ {(11<<2)|2,{51,101,0}}, +/* 25777 */ {(11<<2)|2,{51,101,0}}, +/* 25778 */ {(11<<2)|2,{51,101,0}}, +/* 25779 */ {(11<<2)|2,{51,101,0}}, +/* 25780 */ {(11<<2)|2,{51,101,0}}, +/* 25781 */ {(11<<2)|2,{51,101,0}}, +/* 25782 */ {(11<<2)|2,{51,101,0}}, +/* 25783 */ {(11<<2)|2,{51,101,0}}, +/* 25784 */ {(11<<2)|2,{51,101,0}}, +/* 25785 */ {(11<<2)|2,{51,101,0}}, +/* 25786 */ {(11<<2)|2,{51,101,0}}, +/* 25787 */ {(11<<2)|2,{51,101,0}}, +/* 25788 */ {(11<<2)|2,{51,101,0}}, +/* 25789 */ {(11<<2)|2,{51,101,0}}, +/* 25790 */ {(11<<2)|2,{51,101,0}}, +/* 25791 */ {(11<<2)|2,{51,101,0}}, +/* 25792 */ {(16<<2)|3,{51,105,48}}, +/* 25793 */ {(16<<2)|3,{51,105,49}}, +/* 25794 */ {(16<<2)|3,{51,105,50}}, +/* 25795 */ {(16<<2)|3,{51,105,97}}, +/* 25796 */ {(16<<2)|3,{51,105,99}}, +/* 25797 */ {(16<<2)|3,{51,105,101}}, +/* 25798 */ {(16<<2)|3,{51,105,105}}, +/* 25799 */ {(16<<2)|3,{51,105,111}}, +/* 25800 */ {(16<<2)|3,{51,105,115}}, +/* 25801 */ {(16<<2)|3,{51,105,116}}, +/* 25802 */ {(11<<2)|2,{51,105,0}}, +/* 25803 */ {(11<<2)|2,{51,105,0}}, +/* 25804 */ {(11<<2)|2,{51,105,0}}, +/* 25805 */ {(11<<2)|2,{51,105,0}}, +/* 25806 */ {(11<<2)|2,{51,105,0}}, +/* 25807 */ {(11<<2)|2,{51,105,0}}, +/* 25808 */ {(11<<2)|2,{51,105,0}}, +/* 25809 */ {(11<<2)|2,{51,105,0}}, +/* 25810 */ {(11<<2)|2,{51,105,0}}, +/* 25811 */ {(11<<2)|2,{51,105,0}}, +/* 25812 */ {(11<<2)|2,{51,105,0}}, +/* 25813 */ {(11<<2)|2,{51,105,0}}, +/* 25814 */ {(11<<2)|2,{51,105,0}}, +/* 25815 */ {(11<<2)|2,{51,105,0}}, +/* 25816 */ {(11<<2)|2,{51,105,0}}, +/* 25817 */ {(11<<2)|2,{51,105,0}}, +/* 25818 */ {(11<<2)|2,{51,105,0}}, +/* 25819 */ {(11<<2)|2,{51,105,0}}, +/* 25820 */ {(11<<2)|2,{51,105,0}}, +/* 25821 */ {(11<<2)|2,{51,105,0}}, +/* 25822 */ {(11<<2)|2,{51,105,0}}, +/* 25823 */ {(11<<2)|2,{51,105,0}}, +/* 25824 */ {(16<<2)|3,{51,111,48}}, +/* 25825 */ {(16<<2)|3,{51,111,49}}, +/* 25826 */ {(16<<2)|3,{51,111,50}}, +/* 25827 */ {(16<<2)|3,{51,111,97}}, +/* 25828 */ {(16<<2)|3,{51,111,99}}, +/* 25829 */ {(16<<2)|3,{51,111,101}}, +/* 25830 */ {(16<<2)|3,{51,111,105}}, +/* 25831 */ {(16<<2)|3,{51,111,111}}, +/* 25832 */ {(16<<2)|3,{51,111,115}}, +/* 25833 */ {(16<<2)|3,{51,111,116}}, +/* 25834 */ {(11<<2)|2,{51,111,0}}, +/* 25835 */ {(11<<2)|2,{51,111,0}}, +/* 25836 */ {(11<<2)|2,{51,111,0}}, +/* 25837 */ {(11<<2)|2,{51,111,0}}, +/* 25838 */ {(11<<2)|2,{51,111,0}}, +/* 25839 */ {(11<<2)|2,{51,111,0}}, +/* 25840 */ {(11<<2)|2,{51,111,0}}, +/* 25841 */ {(11<<2)|2,{51,111,0}}, +/* 25842 */ {(11<<2)|2,{51,111,0}}, +/* 25843 */ {(11<<2)|2,{51,111,0}}, +/* 25844 */ {(11<<2)|2,{51,111,0}}, +/* 25845 */ {(11<<2)|2,{51,111,0}}, +/* 25846 */ {(11<<2)|2,{51,111,0}}, +/* 25847 */ {(11<<2)|2,{51,111,0}}, +/* 25848 */ {(11<<2)|2,{51,111,0}}, +/* 25849 */ {(11<<2)|2,{51,111,0}}, +/* 25850 */ {(11<<2)|2,{51,111,0}}, +/* 25851 */ {(11<<2)|2,{51,111,0}}, +/* 25852 */ {(11<<2)|2,{51,111,0}}, +/* 25853 */ {(11<<2)|2,{51,111,0}}, +/* 25854 */ {(11<<2)|2,{51,111,0}}, +/* 25855 */ {(11<<2)|2,{51,111,0}}, +/* 25856 */ {(16<<2)|3,{51,115,48}}, +/* 25857 */ {(16<<2)|3,{51,115,49}}, +/* 25858 */ {(16<<2)|3,{51,115,50}}, +/* 25859 */ {(16<<2)|3,{51,115,97}}, +/* 25860 */ {(16<<2)|3,{51,115,99}}, +/* 25861 */ {(16<<2)|3,{51,115,101}}, +/* 25862 */ {(16<<2)|3,{51,115,105}}, +/* 25863 */ {(16<<2)|3,{51,115,111}}, +/* 25864 */ {(16<<2)|3,{51,115,115}}, +/* 25865 */ {(16<<2)|3,{51,115,116}}, +/* 25866 */ {(11<<2)|2,{51,115,0}}, +/* 25867 */ {(11<<2)|2,{51,115,0}}, +/* 25868 */ {(11<<2)|2,{51,115,0}}, +/* 25869 */ {(11<<2)|2,{51,115,0}}, +/* 25870 */ {(11<<2)|2,{51,115,0}}, +/* 25871 */ {(11<<2)|2,{51,115,0}}, +/* 25872 */ {(11<<2)|2,{51,115,0}}, +/* 25873 */ {(11<<2)|2,{51,115,0}}, +/* 25874 */ {(11<<2)|2,{51,115,0}}, +/* 25875 */ {(11<<2)|2,{51,115,0}}, +/* 25876 */ {(11<<2)|2,{51,115,0}}, +/* 25877 */ {(11<<2)|2,{51,115,0}}, +/* 25878 */ {(11<<2)|2,{51,115,0}}, +/* 25879 */ {(11<<2)|2,{51,115,0}}, +/* 25880 */ {(11<<2)|2,{51,115,0}}, +/* 25881 */ {(11<<2)|2,{51,115,0}}, +/* 25882 */ {(11<<2)|2,{51,115,0}}, +/* 25883 */ {(11<<2)|2,{51,115,0}}, +/* 25884 */ {(11<<2)|2,{51,115,0}}, +/* 25885 */ {(11<<2)|2,{51,115,0}}, +/* 25886 */ {(11<<2)|2,{51,115,0}}, +/* 25887 */ {(11<<2)|2,{51,115,0}}, +/* 25888 */ {(16<<2)|3,{51,116,48}}, +/* 25889 */ {(16<<2)|3,{51,116,49}}, +/* 25890 */ {(16<<2)|3,{51,116,50}}, +/* 25891 */ {(16<<2)|3,{51,116,97}}, +/* 25892 */ {(16<<2)|3,{51,116,99}}, +/* 25893 */ {(16<<2)|3,{51,116,101}}, +/* 25894 */ {(16<<2)|3,{51,116,105}}, +/* 25895 */ {(16<<2)|3,{51,116,111}}, +/* 25896 */ {(16<<2)|3,{51,116,115}}, +/* 25897 */ {(16<<2)|3,{51,116,116}}, +/* 25898 */ {(11<<2)|2,{51,116,0}}, +/* 25899 */ {(11<<2)|2,{51,116,0}}, +/* 25900 */ {(11<<2)|2,{51,116,0}}, +/* 25901 */ {(11<<2)|2,{51,116,0}}, +/* 25902 */ {(11<<2)|2,{51,116,0}}, +/* 25903 */ {(11<<2)|2,{51,116,0}}, +/* 25904 */ {(11<<2)|2,{51,116,0}}, +/* 25905 */ {(11<<2)|2,{51,116,0}}, +/* 25906 */ {(11<<2)|2,{51,116,0}}, +/* 25907 */ {(11<<2)|2,{51,116,0}}, +/* 25908 */ {(11<<2)|2,{51,116,0}}, +/* 25909 */ {(11<<2)|2,{51,116,0}}, +/* 25910 */ {(11<<2)|2,{51,116,0}}, +/* 25911 */ {(11<<2)|2,{51,116,0}}, +/* 25912 */ {(11<<2)|2,{51,116,0}}, +/* 25913 */ {(11<<2)|2,{51,116,0}}, +/* 25914 */ {(11<<2)|2,{51,116,0}}, +/* 25915 */ {(11<<2)|2,{51,116,0}}, +/* 25916 */ {(11<<2)|2,{51,116,0}}, +/* 25917 */ {(11<<2)|2,{51,116,0}}, +/* 25918 */ {(11<<2)|2,{51,116,0}}, +/* 25919 */ {(11<<2)|2,{51,116,0}}, +/* 25920 */ {(12<<2)|2,{51,32,0}}, +/* 25921 */ {(12<<2)|2,{51,32,0}}, +/* 25922 */ {(12<<2)|2,{51,32,0}}, +/* 25923 */ {(12<<2)|2,{51,32,0}}, +/* 25924 */ {(12<<2)|2,{51,32,0}}, +/* 25925 */ {(12<<2)|2,{51,32,0}}, +/* 25926 */ {(12<<2)|2,{51,32,0}}, +/* 25927 */ {(12<<2)|2,{51,32,0}}, +/* 25928 */ {(12<<2)|2,{51,32,0}}, +/* 25929 */ {(12<<2)|2,{51,32,0}}, +/* 25930 */ {(12<<2)|2,{51,32,0}}, +/* 25931 */ {(12<<2)|2,{51,32,0}}, +/* 25932 */ {(12<<2)|2,{51,32,0}}, +/* 25933 */ {(12<<2)|2,{51,32,0}}, +/* 25934 */ {(12<<2)|2,{51,32,0}}, +/* 25935 */ {(12<<2)|2,{51,32,0}}, +/* 25936 */ {(12<<2)|2,{51,37,0}}, +/* 25937 */ {(12<<2)|2,{51,37,0}}, +/* 25938 */ {(12<<2)|2,{51,37,0}}, +/* 25939 */ {(12<<2)|2,{51,37,0}}, +/* 25940 */ {(12<<2)|2,{51,37,0}}, +/* 25941 */ {(12<<2)|2,{51,37,0}}, +/* 25942 */ {(12<<2)|2,{51,37,0}}, +/* 25943 */ {(12<<2)|2,{51,37,0}}, +/* 25944 */ {(12<<2)|2,{51,37,0}}, +/* 25945 */ {(12<<2)|2,{51,37,0}}, +/* 25946 */ {(12<<2)|2,{51,37,0}}, +/* 25947 */ {(12<<2)|2,{51,37,0}}, +/* 25948 */ {(12<<2)|2,{51,37,0}}, +/* 25949 */ {(12<<2)|2,{51,37,0}}, +/* 25950 */ {(12<<2)|2,{51,37,0}}, +/* 25951 */ {(12<<2)|2,{51,37,0}}, +/* 25952 */ {(12<<2)|2,{51,45,0}}, +/* 25953 */ {(12<<2)|2,{51,45,0}}, +/* 25954 */ {(12<<2)|2,{51,45,0}}, +/* 25955 */ {(12<<2)|2,{51,45,0}}, +/* 25956 */ {(12<<2)|2,{51,45,0}}, +/* 25957 */ {(12<<2)|2,{51,45,0}}, +/* 25958 */ {(12<<2)|2,{51,45,0}}, +/* 25959 */ {(12<<2)|2,{51,45,0}}, +/* 25960 */ {(12<<2)|2,{51,45,0}}, +/* 25961 */ {(12<<2)|2,{51,45,0}}, +/* 25962 */ {(12<<2)|2,{51,45,0}}, +/* 25963 */ {(12<<2)|2,{51,45,0}}, +/* 25964 */ {(12<<2)|2,{51,45,0}}, +/* 25965 */ {(12<<2)|2,{51,45,0}}, +/* 25966 */ {(12<<2)|2,{51,45,0}}, +/* 25967 */ {(12<<2)|2,{51,45,0}}, +/* 25968 */ {(12<<2)|2,{51,46,0}}, +/* 25969 */ {(12<<2)|2,{51,46,0}}, +/* 25970 */ {(12<<2)|2,{51,46,0}}, +/* 25971 */ {(12<<2)|2,{51,46,0}}, +/* 25972 */ {(12<<2)|2,{51,46,0}}, +/* 25973 */ {(12<<2)|2,{51,46,0}}, +/* 25974 */ {(12<<2)|2,{51,46,0}}, +/* 25975 */ {(12<<2)|2,{51,46,0}}, +/* 25976 */ {(12<<2)|2,{51,46,0}}, +/* 25977 */ {(12<<2)|2,{51,46,0}}, +/* 25978 */ {(12<<2)|2,{51,46,0}}, +/* 25979 */ {(12<<2)|2,{51,46,0}}, +/* 25980 */ {(12<<2)|2,{51,46,0}}, +/* 25981 */ {(12<<2)|2,{51,46,0}}, +/* 25982 */ {(12<<2)|2,{51,46,0}}, +/* 25983 */ {(12<<2)|2,{51,46,0}}, +/* 25984 */ {(12<<2)|2,{51,47,0}}, +/* 25985 */ {(12<<2)|2,{51,47,0}}, +/* 25986 */ {(12<<2)|2,{51,47,0}}, +/* 25987 */ {(12<<2)|2,{51,47,0}}, +/* 25988 */ {(12<<2)|2,{51,47,0}}, +/* 25989 */ {(12<<2)|2,{51,47,0}}, +/* 25990 */ {(12<<2)|2,{51,47,0}}, +/* 25991 */ {(12<<2)|2,{51,47,0}}, +/* 25992 */ {(12<<2)|2,{51,47,0}}, +/* 25993 */ {(12<<2)|2,{51,47,0}}, +/* 25994 */ {(12<<2)|2,{51,47,0}}, +/* 25995 */ {(12<<2)|2,{51,47,0}}, +/* 25996 */ {(12<<2)|2,{51,47,0}}, +/* 25997 */ {(12<<2)|2,{51,47,0}}, +/* 25998 */ {(12<<2)|2,{51,47,0}}, +/* 25999 */ {(12<<2)|2,{51,47,0}}, +/* 26000 */ {(12<<2)|2,{51,51,0}}, +/* 26001 */ {(12<<2)|2,{51,51,0}}, +/* 26002 */ {(12<<2)|2,{51,51,0}}, +/* 26003 */ {(12<<2)|2,{51,51,0}}, +/* 26004 */ {(12<<2)|2,{51,51,0}}, +/* 26005 */ {(12<<2)|2,{51,51,0}}, +/* 26006 */ {(12<<2)|2,{51,51,0}}, +/* 26007 */ {(12<<2)|2,{51,51,0}}, +/* 26008 */ {(12<<2)|2,{51,51,0}}, +/* 26009 */ {(12<<2)|2,{51,51,0}}, +/* 26010 */ {(12<<2)|2,{51,51,0}}, +/* 26011 */ {(12<<2)|2,{51,51,0}}, +/* 26012 */ {(12<<2)|2,{51,51,0}}, +/* 26013 */ {(12<<2)|2,{51,51,0}}, +/* 26014 */ {(12<<2)|2,{51,51,0}}, +/* 26015 */ {(12<<2)|2,{51,51,0}}, +/* 26016 */ {(12<<2)|2,{51,52,0}}, +/* 26017 */ {(12<<2)|2,{51,52,0}}, +/* 26018 */ {(12<<2)|2,{51,52,0}}, +/* 26019 */ {(12<<2)|2,{51,52,0}}, +/* 26020 */ {(12<<2)|2,{51,52,0}}, +/* 26021 */ {(12<<2)|2,{51,52,0}}, +/* 26022 */ {(12<<2)|2,{51,52,0}}, +/* 26023 */ {(12<<2)|2,{51,52,0}}, +/* 26024 */ {(12<<2)|2,{51,52,0}}, +/* 26025 */ {(12<<2)|2,{51,52,0}}, +/* 26026 */ {(12<<2)|2,{51,52,0}}, +/* 26027 */ {(12<<2)|2,{51,52,0}}, +/* 26028 */ {(12<<2)|2,{51,52,0}}, +/* 26029 */ {(12<<2)|2,{51,52,0}}, +/* 26030 */ {(12<<2)|2,{51,52,0}}, +/* 26031 */ {(12<<2)|2,{51,52,0}}, +/* 26032 */ {(12<<2)|2,{51,53,0}}, +/* 26033 */ {(12<<2)|2,{51,53,0}}, +/* 26034 */ {(12<<2)|2,{51,53,0}}, +/* 26035 */ {(12<<2)|2,{51,53,0}}, +/* 26036 */ {(12<<2)|2,{51,53,0}}, +/* 26037 */ {(12<<2)|2,{51,53,0}}, +/* 26038 */ {(12<<2)|2,{51,53,0}}, +/* 26039 */ {(12<<2)|2,{51,53,0}}, +/* 26040 */ {(12<<2)|2,{51,53,0}}, +/* 26041 */ {(12<<2)|2,{51,53,0}}, +/* 26042 */ {(12<<2)|2,{51,53,0}}, +/* 26043 */ {(12<<2)|2,{51,53,0}}, +/* 26044 */ {(12<<2)|2,{51,53,0}}, +/* 26045 */ {(12<<2)|2,{51,53,0}}, +/* 26046 */ {(12<<2)|2,{51,53,0}}, +/* 26047 */ {(12<<2)|2,{51,53,0}}, +/* 26048 */ {(12<<2)|2,{51,54,0}}, +/* 26049 */ {(12<<2)|2,{51,54,0}}, +/* 26050 */ {(12<<2)|2,{51,54,0}}, +/* 26051 */ {(12<<2)|2,{51,54,0}}, +/* 26052 */ {(12<<2)|2,{51,54,0}}, +/* 26053 */ {(12<<2)|2,{51,54,0}}, +/* 26054 */ {(12<<2)|2,{51,54,0}}, +/* 26055 */ {(12<<2)|2,{51,54,0}}, +/* 26056 */ {(12<<2)|2,{51,54,0}}, +/* 26057 */ {(12<<2)|2,{51,54,0}}, +/* 26058 */ {(12<<2)|2,{51,54,0}}, +/* 26059 */ {(12<<2)|2,{51,54,0}}, +/* 26060 */ {(12<<2)|2,{51,54,0}}, +/* 26061 */ {(12<<2)|2,{51,54,0}}, +/* 26062 */ {(12<<2)|2,{51,54,0}}, +/* 26063 */ {(12<<2)|2,{51,54,0}}, +/* 26064 */ {(12<<2)|2,{51,55,0}}, +/* 26065 */ {(12<<2)|2,{51,55,0}}, +/* 26066 */ {(12<<2)|2,{51,55,0}}, +/* 26067 */ {(12<<2)|2,{51,55,0}}, +/* 26068 */ {(12<<2)|2,{51,55,0}}, +/* 26069 */ {(12<<2)|2,{51,55,0}}, +/* 26070 */ {(12<<2)|2,{51,55,0}}, +/* 26071 */ {(12<<2)|2,{51,55,0}}, +/* 26072 */ {(12<<2)|2,{51,55,0}}, +/* 26073 */ {(12<<2)|2,{51,55,0}}, +/* 26074 */ {(12<<2)|2,{51,55,0}}, +/* 26075 */ {(12<<2)|2,{51,55,0}}, +/* 26076 */ {(12<<2)|2,{51,55,0}}, +/* 26077 */ {(12<<2)|2,{51,55,0}}, +/* 26078 */ {(12<<2)|2,{51,55,0}}, +/* 26079 */ {(12<<2)|2,{51,55,0}}, +/* 26080 */ {(12<<2)|2,{51,56,0}}, +/* 26081 */ {(12<<2)|2,{51,56,0}}, +/* 26082 */ {(12<<2)|2,{51,56,0}}, +/* 26083 */ {(12<<2)|2,{51,56,0}}, +/* 26084 */ {(12<<2)|2,{51,56,0}}, +/* 26085 */ {(12<<2)|2,{51,56,0}}, +/* 26086 */ {(12<<2)|2,{51,56,0}}, +/* 26087 */ {(12<<2)|2,{51,56,0}}, +/* 26088 */ {(12<<2)|2,{51,56,0}}, +/* 26089 */ {(12<<2)|2,{51,56,0}}, +/* 26090 */ {(12<<2)|2,{51,56,0}}, +/* 26091 */ {(12<<2)|2,{51,56,0}}, +/* 26092 */ {(12<<2)|2,{51,56,0}}, +/* 26093 */ {(12<<2)|2,{51,56,0}}, +/* 26094 */ {(12<<2)|2,{51,56,0}}, +/* 26095 */ {(12<<2)|2,{51,56,0}}, +/* 26096 */ {(12<<2)|2,{51,57,0}}, +/* 26097 */ {(12<<2)|2,{51,57,0}}, +/* 26098 */ {(12<<2)|2,{51,57,0}}, +/* 26099 */ {(12<<2)|2,{51,57,0}}, +/* 26100 */ {(12<<2)|2,{51,57,0}}, +/* 26101 */ {(12<<2)|2,{51,57,0}}, +/* 26102 */ {(12<<2)|2,{51,57,0}}, +/* 26103 */ {(12<<2)|2,{51,57,0}}, +/* 26104 */ {(12<<2)|2,{51,57,0}}, +/* 26105 */ {(12<<2)|2,{51,57,0}}, +/* 26106 */ {(12<<2)|2,{51,57,0}}, +/* 26107 */ {(12<<2)|2,{51,57,0}}, +/* 26108 */ {(12<<2)|2,{51,57,0}}, +/* 26109 */ {(12<<2)|2,{51,57,0}}, +/* 26110 */ {(12<<2)|2,{51,57,0}}, +/* 26111 */ {(12<<2)|2,{51,57,0}}, +/* 26112 */ {(12<<2)|2,{51,61,0}}, +/* 26113 */ {(12<<2)|2,{51,61,0}}, +/* 26114 */ {(12<<2)|2,{51,61,0}}, +/* 26115 */ {(12<<2)|2,{51,61,0}}, +/* 26116 */ {(12<<2)|2,{51,61,0}}, +/* 26117 */ {(12<<2)|2,{51,61,0}}, +/* 26118 */ {(12<<2)|2,{51,61,0}}, +/* 26119 */ {(12<<2)|2,{51,61,0}}, +/* 26120 */ {(12<<2)|2,{51,61,0}}, +/* 26121 */ {(12<<2)|2,{51,61,0}}, +/* 26122 */ {(12<<2)|2,{51,61,0}}, +/* 26123 */ {(12<<2)|2,{51,61,0}}, +/* 26124 */ {(12<<2)|2,{51,61,0}}, +/* 26125 */ {(12<<2)|2,{51,61,0}}, +/* 26126 */ {(12<<2)|2,{51,61,0}}, +/* 26127 */ {(12<<2)|2,{51,61,0}}, +/* 26128 */ {(12<<2)|2,{51,65,0}}, +/* 26129 */ {(12<<2)|2,{51,65,0}}, +/* 26130 */ {(12<<2)|2,{51,65,0}}, +/* 26131 */ {(12<<2)|2,{51,65,0}}, +/* 26132 */ {(12<<2)|2,{51,65,0}}, +/* 26133 */ {(12<<2)|2,{51,65,0}}, +/* 26134 */ {(12<<2)|2,{51,65,0}}, +/* 26135 */ {(12<<2)|2,{51,65,0}}, +/* 26136 */ {(12<<2)|2,{51,65,0}}, +/* 26137 */ {(12<<2)|2,{51,65,0}}, +/* 26138 */ {(12<<2)|2,{51,65,0}}, +/* 26139 */ {(12<<2)|2,{51,65,0}}, +/* 26140 */ {(12<<2)|2,{51,65,0}}, +/* 26141 */ {(12<<2)|2,{51,65,0}}, +/* 26142 */ {(12<<2)|2,{51,65,0}}, +/* 26143 */ {(12<<2)|2,{51,65,0}}, +/* 26144 */ {(12<<2)|2,{51,95,0}}, +/* 26145 */ {(12<<2)|2,{51,95,0}}, +/* 26146 */ {(12<<2)|2,{51,95,0}}, +/* 26147 */ {(12<<2)|2,{51,95,0}}, +/* 26148 */ {(12<<2)|2,{51,95,0}}, +/* 26149 */ {(12<<2)|2,{51,95,0}}, +/* 26150 */ {(12<<2)|2,{51,95,0}}, +/* 26151 */ {(12<<2)|2,{51,95,0}}, +/* 26152 */ {(12<<2)|2,{51,95,0}}, +/* 26153 */ {(12<<2)|2,{51,95,0}}, +/* 26154 */ {(12<<2)|2,{51,95,0}}, +/* 26155 */ {(12<<2)|2,{51,95,0}}, +/* 26156 */ {(12<<2)|2,{51,95,0}}, +/* 26157 */ {(12<<2)|2,{51,95,0}}, +/* 26158 */ {(12<<2)|2,{51,95,0}}, +/* 26159 */ {(12<<2)|2,{51,95,0}}, +/* 26160 */ {(12<<2)|2,{51,98,0}}, +/* 26161 */ {(12<<2)|2,{51,98,0}}, +/* 26162 */ {(12<<2)|2,{51,98,0}}, +/* 26163 */ {(12<<2)|2,{51,98,0}}, +/* 26164 */ {(12<<2)|2,{51,98,0}}, +/* 26165 */ {(12<<2)|2,{51,98,0}}, +/* 26166 */ {(12<<2)|2,{51,98,0}}, +/* 26167 */ {(12<<2)|2,{51,98,0}}, +/* 26168 */ {(12<<2)|2,{51,98,0}}, +/* 26169 */ {(12<<2)|2,{51,98,0}}, +/* 26170 */ {(12<<2)|2,{51,98,0}}, +/* 26171 */ {(12<<2)|2,{51,98,0}}, +/* 26172 */ {(12<<2)|2,{51,98,0}}, +/* 26173 */ {(12<<2)|2,{51,98,0}}, +/* 26174 */ {(12<<2)|2,{51,98,0}}, +/* 26175 */ {(12<<2)|2,{51,98,0}}, +/* 26176 */ {(12<<2)|2,{51,100,0}}, +/* 26177 */ {(12<<2)|2,{51,100,0}}, +/* 26178 */ {(12<<2)|2,{51,100,0}}, +/* 26179 */ {(12<<2)|2,{51,100,0}}, +/* 26180 */ {(12<<2)|2,{51,100,0}}, +/* 26181 */ {(12<<2)|2,{51,100,0}}, +/* 26182 */ {(12<<2)|2,{51,100,0}}, +/* 26183 */ {(12<<2)|2,{51,100,0}}, +/* 26184 */ {(12<<2)|2,{51,100,0}}, +/* 26185 */ {(12<<2)|2,{51,100,0}}, +/* 26186 */ {(12<<2)|2,{51,100,0}}, +/* 26187 */ {(12<<2)|2,{51,100,0}}, +/* 26188 */ {(12<<2)|2,{51,100,0}}, +/* 26189 */ {(12<<2)|2,{51,100,0}}, +/* 26190 */ {(12<<2)|2,{51,100,0}}, +/* 26191 */ {(12<<2)|2,{51,100,0}}, +/* 26192 */ {(12<<2)|2,{51,102,0}}, +/* 26193 */ {(12<<2)|2,{51,102,0}}, +/* 26194 */ {(12<<2)|2,{51,102,0}}, +/* 26195 */ {(12<<2)|2,{51,102,0}}, +/* 26196 */ {(12<<2)|2,{51,102,0}}, +/* 26197 */ {(12<<2)|2,{51,102,0}}, +/* 26198 */ {(12<<2)|2,{51,102,0}}, +/* 26199 */ {(12<<2)|2,{51,102,0}}, +/* 26200 */ {(12<<2)|2,{51,102,0}}, +/* 26201 */ {(12<<2)|2,{51,102,0}}, +/* 26202 */ {(12<<2)|2,{51,102,0}}, +/* 26203 */ {(12<<2)|2,{51,102,0}}, +/* 26204 */ {(12<<2)|2,{51,102,0}}, +/* 26205 */ {(12<<2)|2,{51,102,0}}, +/* 26206 */ {(12<<2)|2,{51,102,0}}, +/* 26207 */ {(12<<2)|2,{51,102,0}}, +/* 26208 */ {(12<<2)|2,{51,103,0}}, +/* 26209 */ {(12<<2)|2,{51,103,0}}, +/* 26210 */ {(12<<2)|2,{51,103,0}}, +/* 26211 */ {(12<<2)|2,{51,103,0}}, +/* 26212 */ {(12<<2)|2,{51,103,0}}, +/* 26213 */ {(12<<2)|2,{51,103,0}}, +/* 26214 */ {(12<<2)|2,{51,103,0}}, +/* 26215 */ {(12<<2)|2,{51,103,0}}, +/* 26216 */ {(12<<2)|2,{51,103,0}}, +/* 26217 */ {(12<<2)|2,{51,103,0}}, +/* 26218 */ {(12<<2)|2,{51,103,0}}, +/* 26219 */ {(12<<2)|2,{51,103,0}}, +/* 26220 */ {(12<<2)|2,{51,103,0}}, +/* 26221 */ {(12<<2)|2,{51,103,0}}, +/* 26222 */ {(12<<2)|2,{51,103,0}}, +/* 26223 */ {(12<<2)|2,{51,103,0}}, +/* 26224 */ {(12<<2)|2,{51,104,0}}, +/* 26225 */ {(12<<2)|2,{51,104,0}}, +/* 26226 */ {(12<<2)|2,{51,104,0}}, +/* 26227 */ {(12<<2)|2,{51,104,0}}, +/* 26228 */ {(12<<2)|2,{51,104,0}}, +/* 26229 */ {(12<<2)|2,{51,104,0}}, +/* 26230 */ {(12<<2)|2,{51,104,0}}, +/* 26231 */ {(12<<2)|2,{51,104,0}}, +/* 26232 */ {(12<<2)|2,{51,104,0}}, +/* 26233 */ {(12<<2)|2,{51,104,0}}, +/* 26234 */ {(12<<2)|2,{51,104,0}}, +/* 26235 */ {(12<<2)|2,{51,104,0}}, +/* 26236 */ {(12<<2)|2,{51,104,0}}, +/* 26237 */ {(12<<2)|2,{51,104,0}}, +/* 26238 */ {(12<<2)|2,{51,104,0}}, +/* 26239 */ {(12<<2)|2,{51,104,0}}, +/* 26240 */ {(12<<2)|2,{51,108,0}}, +/* 26241 */ {(12<<2)|2,{51,108,0}}, +/* 26242 */ {(12<<2)|2,{51,108,0}}, +/* 26243 */ {(12<<2)|2,{51,108,0}}, +/* 26244 */ {(12<<2)|2,{51,108,0}}, +/* 26245 */ {(12<<2)|2,{51,108,0}}, +/* 26246 */ {(12<<2)|2,{51,108,0}}, +/* 26247 */ {(12<<2)|2,{51,108,0}}, +/* 26248 */ {(12<<2)|2,{51,108,0}}, +/* 26249 */ {(12<<2)|2,{51,108,0}}, +/* 26250 */ {(12<<2)|2,{51,108,0}}, +/* 26251 */ {(12<<2)|2,{51,108,0}}, +/* 26252 */ {(12<<2)|2,{51,108,0}}, +/* 26253 */ {(12<<2)|2,{51,108,0}}, +/* 26254 */ {(12<<2)|2,{51,108,0}}, +/* 26255 */ {(12<<2)|2,{51,108,0}}, +/* 26256 */ {(12<<2)|2,{51,109,0}}, +/* 26257 */ {(12<<2)|2,{51,109,0}}, +/* 26258 */ {(12<<2)|2,{51,109,0}}, +/* 26259 */ {(12<<2)|2,{51,109,0}}, +/* 26260 */ {(12<<2)|2,{51,109,0}}, +/* 26261 */ {(12<<2)|2,{51,109,0}}, +/* 26262 */ {(12<<2)|2,{51,109,0}}, +/* 26263 */ {(12<<2)|2,{51,109,0}}, +/* 26264 */ {(12<<2)|2,{51,109,0}}, +/* 26265 */ {(12<<2)|2,{51,109,0}}, +/* 26266 */ {(12<<2)|2,{51,109,0}}, +/* 26267 */ {(12<<2)|2,{51,109,0}}, +/* 26268 */ {(12<<2)|2,{51,109,0}}, +/* 26269 */ {(12<<2)|2,{51,109,0}}, +/* 26270 */ {(12<<2)|2,{51,109,0}}, +/* 26271 */ {(12<<2)|2,{51,109,0}}, +/* 26272 */ {(12<<2)|2,{51,110,0}}, +/* 26273 */ {(12<<2)|2,{51,110,0}}, +/* 26274 */ {(12<<2)|2,{51,110,0}}, +/* 26275 */ {(12<<2)|2,{51,110,0}}, +/* 26276 */ {(12<<2)|2,{51,110,0}}, +/* 26277 */ {(12<<2)|2,{51,110,0}}, +/* 26278 */ {(12<<2)|2,{51,110,0}}, +/* 26279 */ {(12<<2)|2,{51,110,0}}, +/* 26280 */ {(12<<2)|2,{51,110,0}}, +/* 26281 */ {(12<<2)|2,{51,110,0}}, +/* 26282 */ {(12<<2)|2,{51,110,0}}, +/* 26283 */ {(12<<2)|2,{51,110,0}}, +/* 26284 */ {(12<<2)|2,{51,110,0}}, +/* 26285 */ {(12<<2)|2,{51,110,0}}, +/* 26286 */ {(12<<2)|2,{51,110,0}}, +/* 26287 */ {(12<<2)|2,{51,110,0}}, +/* 26288 */ {(12<<2)|2,{51,112,0}}, +/* 26289 */ {(12<<2)|2,{51,112,0}}, +/* 26290 */ {(12<<2)|2,{51,112,0}}, +/* 26291 */ {(12<<2)|2,{51,112,0}}, +/* 26292 */ {(12<<2)|2,{51,112,0}}, +/* 26293 */ {(12<<2)|2,{51,112,0}}, +/* 26294 */ {(12<<2)|2,{51,112,0}}, +/* 26295 */ {(12<<2)|2,{51,112,0}}, +/* 26296 */ {(12<<2)|2,{51,112,0}}, +/* 26297 */ {(12<<2)|2,{51,112,0}}, +/* 26298 */ {(12<<2)|2,{51,112,0}}, +/* 26299 */ {(12<<2)|2,{51,112,0}}, +/* 26300 */ {(12<<2)|2,{51,112,0}}, +/* 26301 */ {(12<<2)|2,{51,112,0}}, +/* 26302 */ {(12<<2)|2,{51,112,0}}, +/* 26303 */ {(12<<2)|2,{51,112,0}}, +/* 26304 */ {(12<<2)|2,{51,114,0}}, +/* 26305 */ {(12<<2)|2,{51,114,0}}, +/* 26306 */ {(12<<2)|2,{51,114,0}}, +/* 26307 */ {(12<<2)|2,{51,114,0}}, +/* 26308 */ {(12<<2)|2,{51,114,0}}, +/* 26309 */ {(12<<2)|2,{51,114,0}}, +/* 26310 */ {(12<<2)|2,{51,114,0}}, +/* 26311 */ {(12<<2)|2,{51,114,0}}, +/* 26312 */ {(12<<2)|2,{51,114,0}}, +/* 26313 */ {(12<<2)|2,{51,114,0}}, +/* 26314 */ {(12<<2)|2,{51,114,0}}, +/* 26315 */ {(12<<2)|2,{51,114,0}}, +/* 26316 */ {(12<<2)|2,{51,114,0}}, +/* 26317 */ {(12<<2)|2,{51,114,0}}, +/* 26318 */ {(12<<2)|2,{51,114,0}}, +/* 26319 */ {(12<<2)|2,{51,114,0}}, +/* 26320 */ {(12<<2)|2,{51,117,0}}, +/* 26321 */ {(12<<2)|2,{51,117,0}}, +/* 26322 */ {(12<<2)|2,{51,117,0}}, +/* 26323 */ {(12<<2)|2,{51,117,0}}, +/* 26324 */ {(12<<2)|2,{51,117,0}}, +/* 26325 */ {(12<<2)|2,{51,117,0}}, +/* 26326 */ {(12<<2)|2,{51,117,0}}, +/* 26327 */ {(12<<2)|2,{51,117,0}}, +/* 26328 */ {(12<<2)|2,{51,117,0}}, +/* 26329 */ {(12<<2)|2,{51,117,0}}, +/* 26330 */ {(12<<2)|2,{51,117,0}}, +/* 26331 */ {(12<<2)|2,{51,117,0}}, +/* 26332 */ {(12<<2)|2,{51,117,0}}, +/* 26333 */ {(12<<2)|2,{51,117,0}}, +/* 26334 */ {(12<<2)|2,{51,117,0}}, +/* 26335 */ {(12<<2)|2,{51,117,0}}, +/* 26336 */ {(13<<2)|2,{51,58,0}}, +/* 26337 */ {(13<<2)|2,{51,58,0}}, +/* 26338 */ {(13<<2)|2,{51,58,0}}, +/* 26339 */ {(13<<2)|2,{51,58,0}}, +/* 26340 */ {(13<<2)|2,{51,58,0}}, +/* 26341 */ {(13<<2)|2,{51,58,0}}, +/* 26342 */ {(13<<2)|2,{51,58,0}}, +/* 26343 */ {(13<<2)|2,{51,58,0}}, +/* 26344 */ {(13<<2)|2,{51,66,0}}, +/* 26345 */ {(13<<2)|2,{51,66,0}}, +/* 26346 */ {(13<<2)|2,{51,66,0}}, +/* 26347 */ {(13<<2)|2,{51,66,0}}, +/* 26348 */ {(13<<2)|2,{51,66,0}}, +/* 26349 */ {(13<<2)|2,{51,66,0}}, +/* 26350 */ {(13<<2)|2,{51,66,0}}, +/* 26351 */ {(13<<2)|2,{51,66,0}}, +/* 26352 */ {(13<<2)|2,{51,67,0}}, +/* 26353 */ {(13<<2)|2,{51,67,0}}, +/* 26354 */ {(13<<2)|2,{51,67,0}}, +/* 26355 */ {(13<<2)|2,{51,67,0}}, +/* 26356 */ {(13<<2)|2,{51,67,0}}, +/* 26357 */ {(13<<2)|2,{51,67,0}}, +/* 26358 */ {(13<<2)|2,{51,67,0}}, +/* 26359 */ {(13<<2)|2,{51,67,0}}, +/* 26360 */ {(13<<2)|2,{51,68,0}}, +/* 26361 */ {(13<<2)|2,{51,68,0}}, +/* 26362 */ {(13<<2)|2,{51,68,0}}, +/* 26363 */ {(13<<2)|2,{51,68,0}}, +/* 26364 */ {(13<<2)|2,{51,68,0}}, +/* 26365 */ {(13<<2)|2,{51,68,0}}, +/* 26366 */ {(13<<2)|2,{51,68,0}}, +/* 26367 */ {(13<<2)|2,{51,68,0}}, +/* 26368 */ {(13<<2)|2,{51,69,0}}, +/* 26369 */ {(13<<2)|2,{51,69,0}}, +/* 26370 */ {(13<<2)|2,{51,69,0}}, +/* 26371 */ {(13<<2)|2,{51,69,0}}, +/* 26372 */ {(13<<2)|2,{51,69,0}}, +/* 26373 */ {(13<<2)|2,{51,69,0}}, +/* 26374 */ {(13<<2)|2,{51,69,0}}, +/* 26375 */ {(13<<2)|2,{51,69,0}}, +/* 26376 */ {(13<<2)|2,{51,70,0}}, +/* 26377 */ {(13<<2)|2,{51,70,0}}, +/* 26378 */ {(13<<2)|2,{51,70,0}}, +/* 26379 */ {(13<<2)|2,{51,70,0}}, +/* 26380 */ {(13<<2)|2,{51,70,0}}, +/* 26381 */ {(13<<2)|2,{51,70,0}}, +/* 26382 */ {(13<<2)|2,{51,70,0}}, +/* 26383 */ {(13<<2)|2,{51,70,0}}, +/* 26384 */ {(13<<2)|2,{51,71,0}}, +/* 26385 */ {(13<<2)|2,{51,71,0}}, +/* 26386 */ {(13<<2)|2,{51,71,0}}, +/* 26387 */ {(13<<2)|2,{51,71,0}}, +/* 26388 */ {(13<<2)|2,{51,71,0}}, +/* 26389 */ {(13<<2)|2,{51,71,0}}, +/* 26390 */ {(13<<2)|2,{51,71,0}}, +/* 26391 */ {(13<<2)|2,{51,71,0}}, +/* 26392 */ {(13<<2)|2,{51,72,0}}, +/* 26393 */ {(13<<2)|2,{51,72,0}}, +/* 26394 */ {(13<<2)|2,{51,72,0}}, +/* 26395 */ {(13<<2)|2,{51,72,0}}, +/* 26396 */ {(13<<2)|2,{51,72,0}}, +/* 26397 */ {(13<<2)|2,{51,72,0}}, +/* 26398 */ {(13<<2)|2,{51,72,0}}, +/* 26399 */ {(13<<2)|2,{51,72,0}}, +/* 26400 */ {(13<<2)|2,{51,73,0}}, +/* 26401 */ {(13<<2)|2,{51,73,0}}, +/* 26402 */ {(13<<2)|2,{51,73,0}}, +/* 26403 */ {(13<<2)|2,{51,73,0}}, +/* 26404 */ {(13<<2)|2,{51,73,0}}, +/* 26405 */ {(13<<2)|2,{51,73,0}}, +/* 26406 */ {(13<<2)|2,{51,73,0}}, +/* 26407 */ {(13<<2)|2,{51,73,0}}, +/* 26408 */ {(13<<2)|2,{51,74,0}}, +/* 26409 */ {(13<<2)|2,{51,74,0}}, +/* 26410 */ {(13<<2)|2,{51,74,0}}, +/* 26411 */ {(13<<2)|2,{51,74,0}}, +/* 26412 */ {(13<<2)|2,{51,74,0}}, +/* 26413 */ {(13<<2)|2,{51,74,0}}, +/* 26414 */ {(13<<2)|2,{51,74,0}}, +/* 26415 */ {(13<<2)|2,{51,74,0}}, +/* 26416 */ {(13<<2)|2,{51,75,0}}, +/* 26417 */ {(13<<2)|2,{51,75,0}}, +/* 26418 */ {(13<<2)|2,{51,75,0}}, +/* 26419 */ {(13<<2)|2,{51,75,0}}, +/* 26420 */ {(13<<2)|2,{51,75,0}}, +/* 26421 */ {(13<<2)|2,{51,75,0}}, +/* 26422 */ {(13<<2)|2,{51,75,0}}, +/* 26423 */ {(13<<2)|2,{51,75,0}}, +/* 26424 */ {(13<<2)|2,{51,76,0}}, +/* 26425 */ {(13<<2)|2,{51,76,0}}, +/* 26426 */ {(13<<2)|2,{51,76,0}}, +/* 26427 */ {(13<<2)|2,{51,76,0}}, +/* 26428 */ {(13<<2)|2,{51,76,0}}, +/* 26429 */ {(13<<2)|2,{51,76,0}}, +/* 26430 */ {(13<<2)|2,{51,76,0}}, +/* 26431 */ {(13<<2)|2,{51,76,0}}, +/* 26432 */ {(13<<2)|2,{51,77,0}}, +/* 26433 */ {(13<<2)|2,{51,77,0}}, +/* 26434 */ {(13<<2)|2,{51,77,0}}, +/* 26435 */ {(13<<2)|2,{51,77,0}}, +/* 26436 */ {(13<<2)|2,{51,77,0}}, +/* 26437 */ {(13<<2)|2,{51,77,0}}, +/* 26438 */ {(13<<2)|2,{51,77,0}}, +/* 26439 */ {(13<<2)|2,{51,77,0}}, +/* 26440 */ {(13<<2)|2,{51,78,0}}, +/* 26441 */ {(13<<2)|2,{51,78,0}}, +/* 26442 */ {(13<<2)|2,{51,78,0}}, +/* 26443 */ {(13<<2)|2,{51,78,0}}, +/* 26444 */ {(13<<2)|2,{51,78,0}}, +/* 26445 */ {(13<<2)|2,{51,78,0}}, +/* 26446 */ {(13<<2)|2,{51,78,0}}, +/* 26447 */ {(13<<2)|2,{51,78,0}}, +/* 26448 */ {(13<<2)|2,{51,79,0}}, +/* 26449 */ {(13<<2)|2,{51,79,0}}, +/* 26450 */ {(13<<2)|2,{51,79,0}}, +/* 26451 */ {(13<<2)|2,{51,79,0}}, +/* 26452 */ {(13<<2)|2,{51,79,0}}, +/* 26453 */ {(13<<2)|2,{51,79,0}}, +/* 26454 */ {(13<<2)|2,{51,79,0}}, +/* 26455 */ {(13<<2)|2,{51,79,0}}, +/* 26456 */ {(13<<2)|2,{51,80,0}}, +/* 26457 */ {(13<<2)|2,{51,80,0}}, +/* 26458 */ {(13<<2)|2,{51,80,0}}, +/* 26459 */ {(13<<2)|2,{51,80,0}}, +/* 26460 */ {(13<<2)|2,{51,80,0}}, +/* 26461 */ {(13<<2)|2,{51,80,0}}, +/* 26462 */ {(13<<2)|2,{51,80,0}}, +/* 26463 */ {(13<<2)|2,{51,80,0}}, +/* 26464 */ {(13<<2)|2,{51,81,0}}, +/* 26465 */ {(13<<2)|2,{51,81,0}}, +/* 26466 */ {(13<<2)|2,{51,81,0}}, +/* 26467 */ {(13<<2)|2,{51,81,0}}, +/* 26468 */ {(13<<2)|2,{51,81,0}}, +/* 26469 */ {(13<<2)|2,{51,81,0}}, +/* 26470 */ {(13<<2)|2,{51,81,0}}, +/* 26471 */ {(13<<2)|2,{51,81,0}}, +/* 26472 */ {(13<<2)|2,{51,82,0}}, +/* 26473 */ {(13<<2)|2,{51,82,0}}, +/* 26474 */ {(13<<2)|2,{51,82,0}}, +/* 26475 */ {(13<<2)|2,{51,82,0}}, +/* 26476 */ {(13<<2)|2,{51,82,0}}, +/* 26477 */ {(13<<2)|2,{51,82,0}}, +/* 26478 */ {(13<<2)|2,{51,82,0}}, +/* 26479 */ {(13<<2)|2,{51,82,0}}, +/* 26480 */ {(13<<2)|2,{51,83,0}}, +/* 26481 */ {(13<<2)|2,{51,83,0}}, +/* 26482 */ {(13<<2)|2,{51,83,0}}, +/* 26483 */ {(13<<2)|2,{51,83,0}}, +/* 26484 */ {(13<<2)|2,{51,83,0}}, +/* 26485 */ {(13<<2)|2,{51,83,0}}, +/* 26486 */ {(13<<2)|2,{51,83,0}}, +/* 26487 */ {(13<<2)|2,{51,83,0}}, +/* 26488 */ {(13<<2)|2,{51,84,0}}, +/* 26489 */ {(13<<2)|2,{51,84,0}}, +/* 26490 */ {(13<<2)|2,{51,84,0}}, +/* 26491 */ {(13<<2)|2,{51,84,0}}, +/* 26492 */ {(13<<2)|2,{51,84,0}}, +/* 26493 */ {(13<<2)|2,{51,84,0}}, +/* 26494 */ {(13<<2)|2,{51,84,0}}, +/* 26495 */ {(13<<2)|2,{51,84,0}}, +/* 26496 */ {(13<<2)|2,{51,85,0}}, +/* 26497 */ {(13<<2)|2,{51,85,0}}, +/* 26498 */ {(13<<2)|2,{51,85,0}}, +/* 26499 */ {(13<<2)|2,{51,85,0}}, +/* 26500 */ {(13<<2)|2,{51,85,0}}, +/* 26501 */ {(13<<2)|2,{51,85,0}}, +/* 26502 */ {(13<<2)|2,{51,85,0}}, +/* 26503 */ {(13<<2)|2,{51,85,0}}, +/* 26504 */ {(13<<2)|2,{51,86,0}}, +/* 26505 */ {(13<<2)|2,{51,86,0}}, +/* 26506 */ {(13<<2)|2,{51,86,0}}, +/* 26507 */ {(13<<2)|2,{51,86,0}}, +/* 26508 */ {(13<<2)|2,{51,86,0}}, +/* 26509 */ {(13<<2)|2,{51,86,0}}, +/* 26510 */ {(13<<2)|2,{51,86,0}}, +/* 26511 */ {(13<<2)|2,{51,86,0}}, +/* 26512 */ {(13<<2)|2,{51,87,0}}, +/* 26513 */ {(13<<2)|2,{51,87,0}}, +/* 26514 */ {(13<<2)|2,{51,87,0}}, +/* 26515 */ {(13<<2)|2,{51,87,0}}, +/* 26516 */ {(13<<2)|2,{51,87,0}}, +/* 26517 */ {(13<<2)|2,{51,87,0}}, +/* 26518 */ {(13<<2)|2,{51,87,0}}, +/* 26519 */ {(13<<2)|2,{51,87,0}}, +/* 26520 */ {(13<<2)|2,{51,89,0}}, +/* 26521 */ {(13<<2)|2,{51,89,0}}, +/* 26522 */ {(13<<2)|2,{51,89,0}}, +/* 26523 */ {(13<<2)|2,{51,89,0}}, +/* 26524 */ {(13<<2)|2,{51,89,0}}, +/* 26525 */ {(13<<2)|2,{51,89,0}}, +/* 26526 */ {(13<<2)|2,{51,89,0}}, +/* 26527 */ {(13<<2)|2,{51,89,0}}, +/* 26528 */ {(13<<2)|2,{51,106,0}}, +/* 26529 */ {(13<<2)|2,{51,106,0}}, +/* 26530 */ {(13<<2)|2,{51,106,0}}, +/* 26531 */ {(13<<2)|2,{51,106,0}}, +/* 26532 */ {(13<<2)|2,{51,106,0}}, +/* 26533 */ {(13<<2)|2,{51,106,0}}, +/* 26534 */ {(13<<2)|2,{51,106,0}}, +/* 26535 */ {(13<<2)|2,{51,106,0}}, +/* 26536 */ {(13<<2)|2,{51,107,0}}, +/* 26537 */ {(13<<2)|2,{51,107,0}}, +/* 26538 */ {(13<<2)|2,{51,107,0}}, +/* 26539 */ {(13<<2)|2,{51,107,0}}, +/* 26540 */ {(13<<2)|2,{51,107,0}}, +/* 26541 */ {(13<<2)|2,{51,107,0}}, +/* 26542 */ {(13<<2)|2,{51,107,0}}, +/* 26543 */ {(13<<2)|2,{51,107,0}}, +/* 26544 */ {(13<<2)|2,{51,113,0}}, +/* 26545 */ {(13<<2)|2,{51,113,0}}, +/* 26546 */ {(13<<2)|2,{51,113,0}}, +/* 26547 */ {(13<<2)|2,{51,113,0}}, +/* 26548 */ {(13<<2)|2,{51,113,0}}, +/* 26549 */ {(13<<2)|2,{51,113,0}}, +/* 26550 */ {(13<<2)|2,{51,113,0}}, +/* 26551 */ {(13<<2)|2,{51,113,0}}, +/* 26552 */ {(13<<2)|2,{51,118,0}}, +/* 26553 */ {(13<<2)|2,{51,118,0}}, +/* 26554 */ {(13<<2)|2,{51,118,0}}, +/* 26555 */ {(13<<2)|2,{51,118,0}}, +/* 26556 */ {(13<<2)|2,{51,118,0}}, +/* 26557 */ {(13<<2)|2,{51,118,0}}, +/* 26558 */ {(13<<2)|2,{51,118,0}}, +/* 26559 */ {(13<<2)|2,{51,118,0}}, +/* 26560 */ {(13<<2)|2,{51,119,0}}, +/* 26561 */ {(13<<2)|2,{51,119,0}}, +/* 26562 */ {(13<<2)|2,{51,119,0}}, +/* 26563 */ {(13<<2)|2,{51,119,0}}, +/* 26564 */ {(13<<2)|2,{51,119,0}}, +/* 26565 */ {(13<<2)|2,{51,119,0}}, +/* 26566 */ {(13<<2)|2,{51,119,0}}, +/* 26567 */ {(13<<2)|2,{51,119,0}}, +/* 26568 */ {(13<<2)|2,{51,120,0}}, +/* 26569 */ {(13<<2)|2,{51,120,0}}, +/* 26570 */ {(13<<2)|2,{51,120,0}}, +/* 26571 */ {(13<<2)|2,{51,120,0}}, +/* 26572 */ {(13<<2)|2,{51,120,0}}, +/* 26573 */ {(13<<2)|2,{51,120,0}}, +/* 26574 */ {(13<<2)|2,{51,120,0}}, +/* 26575 */ {(13<<2)|2,{51,120,0}}, +/* 26576 */ {(13<<2)|2,{51,121,0}}, +/* 26577 */ {(13<<2)|2,{51,121,0}}, +/* 26578 */ {(13<<2)|2,{51,121,0}}, +/* 26579 */ {(13<<2)|2,{51,121,0}}, +/* 26580 */ {(13<<2)|2,{51,121,0}}, +/* 26581 */ {(13<<2)|2,{51,121,0}}, +/* 26582 */ {(13<<2)|2,{51,121,0}}, +/* 26583 */ {(13<<2)|2,{51,121,0}}, +/* 26584 */ {(13<<2)|2,{51,122,0}}, +/* 26585 */ {(13<<2)|2,{51,122,0}}, +/* 26586 */ {(13<<2)|2,{51,122,0}}, +/* 26587 */ {(13<<2)|2,{51,122,0}}, +/* 26588 */ {(13<<2)|2,{51,122,0}}, +/* 26589 */ {(13<<2)|2,{51,122,0}}, +/* 26590 */ {(13<<2)|2,{51,122,0}}, +/* 26591 */ {(13<<2)|2,{51,122,0}}, +/* 26592 */ {(14<<2)|2,{51,38,0}}, +/* 26593 */ {(14<<2)|2,{51,38,0}}, +/* 26594 */ {(14<<2)|2,{51,38,0}}, +/* 26595 */ {(14<<2)|2,{51,38,0}}, +/* 26596 */ {(14<<2)|2,{51,42,0}}, +/* 26597 */ {(14<<2)|2,{51,42,0}}, +/* 26598 */ {(14<<2)|2,{51,42,0}}, +/* 26599 */ {(14<<2)|2,{51,42,0}}, +/* 26600 */ {(14<<2)|2,{51,44,0}}, +/* 26601 */ {(14<<2)|2,{51,44,0}}, +/* 26602 */ {(14<<2)|2,{51,44,0}}, +/* 26603 */ {(14<<2)|2,{51,44,0}}, +/* 26604 */ {(14<<2)|2,{51,59,0}}, +/* 26605 */ {(14<<2)|2,{51,59,0}}, +/* 26606 */ {(14<<2)|2,{51,59,0}}, +/* 26607 */ {(14<<2)|2,{51,59,0}}, +/* 26608 */ {(14<<2)|2,{51,88,0}}, +/* 26609 */ {(14<<2)|2,{51,88,0}}, +/* 26610 */ {(14<<2)|2,{51,88,0}}, +/* 26611 */ {(14<<2)|2,{51,88,0}}, +/* 26612 */ {(14<<2)|2,{51,90,0}}, +/* 26613 */ {(14<<2)|2,{51,90,0}}, +/* 26614 */ {(14<<2)|2,{51,90,0}}, +/* 26615 */ {(14<<2)|2,{51,90,0}}, +/* 26616 */ {(16<<2)|2,{51,33,0}}, +/* 26617 */ {(16<<2)|2,{51,34,0}}, +/* 26618 */ {(16<<2)|2,{51,40,0}}, +/* 26619 */ {(16<<2)|2,{51,41,0}}, +/* 26620 */ {(16<<2)|2,{51,63,0}}, +/* 26621 */ {(6<<2)|1,{51,0,0}}, +/* 26622 */ {(6<<2)|1,{51,0,0}}, +/* 26623 */ {(6<<2)|1,{51,0,0}}, +/* 26624 */ {(16<<2)|3,{52,48,48}}, +/* 26625 */ {(16<<2)|3,{52,48,49}}, +/* 26626 */ {(16<<2)|3,{52,48,50}}, +/* 26627 */ {(16<<2)|3,{52,48,97}}, +/* 26628 */ {(16<<2)|3,{52,48,99}}, +/* 26629 */ {(16<<2)|3,{52,48,101}}, +/* 26630 */ {(16<<2)|3,{52,48,105}}, +/* 26631 */ {(16<<2)|3,{52,48,111}}, +/* 26632 */ {(16<<2)|3,{52,48,115}}, +/* 26633 */ {(16<<2)|3,{52,48,116}}, +/* 26634 */ {(11<<2)|2,{52,48,0}}, +/* 26635 */ {(11<<2)|2,{52,48,0}}, +/* 26636 */ {(11<<2)|2,{52,48,0}}, +/* 26637 */ {(11<<2)|2,{52,48,0}}, +/* 26638 */ {(11<<2)|2,{52,48,0}}, +/* 26639 */ {(11<<2)|2,{52,48,0}}, +/* 26640 */ {(11<<2)|2,{52,48,0}}, +/* 26641 */ {(11<<2)|2,{52,48,0}}, +/* 26642 */ {(11<<2)|2,{52,48,0}}, +/* 26643 */ {(11<<2)|2,{52,48,0}}, +/* 26644 */ {(11<<2)|2,{52,48,0}}, +/* 26645 */ {(11<<2)|2,{52,48,0}}, +/* 26646 */ {(11<<2)|2,{52,48,0}}, +/* 26647 */ {(11<<2)|2,{52,48,0}}, +/* 26648 */ {(11<<2)|2,{52,48,0}}, +/* 26649 */ {(11<<2)|2,{52,48,0}}, +/* 26650 */ {(11<<2)|2,{52,48,0}}, +/* 26651 */ {(11<<2)|2,{52,48,0}}, +/* 26652 */ {(11<<2)|2,{52,48,0}}, +/* 26653 */ {(11<<2)|2,{52,48,0}}, +/* 26654 */ {(11<<2)|2,{52,48,0}}, +/* 26655 */ {(11<<2)|2,{52,48,0}}, +/* 26656 */ {(16<<2)|3,{52,49,48}}, +/* 26657 */ {(16<<2)|3,{52,49,49}}, +/* 26658 */ {(16<<2)|3,{52,49,50}}, +/* 26659 */ {(16<<2)|3,{52,49,97}}, +/* 26660 */ {(16<<2)|3,{52,49,99}}, +/* 26661 */ {(16<<2)|3,{52,49,101}}, +/* 26662 */ {(16<<2)|3,{52,49,105}}, +/* 26663 */ {(16<<2)|3,{52,49,111}}, +/* 26664 */ {(16<<2)|3,{52,49,115}}, +/* 26665 */ {(16<<2)|3,{52,49,116}}, +/* 26666 */ {(11<<2)|2,{52,49,0}}, +/* 26667 */ {(11<<2)|2,{52,49,0}}, +/* 26668 */ {(11<<2)|2,{52,49,0}}, +/* 26669 */ {(11<<2)|2,{52,49,0}}, +/* 26670 */ {(11<<2)|2,{52,49,0}}, +/* 26671 */ {(11<<2)|2,{52,49,0}}, +/* 26672 */ {(11<<2)|2,{52,49,0}}, +/* 26673 */ {(11<<2)|2,{52,49,0}}, +/* 26674 */ {(11<<2)|2,{52,49,0}}, +/* 26675 */ {(11<<2)|2,{52,49,0}}, +/* 26676 */ {(11<<2)|2,{52,49,0}}, +/* 26677 */ {(11<<2)|2,{52,49,0}}, +/* 26678 */ {(11<<2)|2,{52,49,0}}, +/* 26679 */ {(11<<2)|2,{52,49,0}}, +/* 26680 */ {(11<<2)|2,{52,49,0}}, +/* 26681 */ {(11<<2)|2,{52,49,0}}, +/* 26682 */ {(11<<2)|2,{52,49,0}}, +/* 26683 */ {(11<<2)|2,{52,49,0}}, +/* 26684 */ {(11<<2)|2,{52,49,0}}, +/* 26685 */ {(11<<2)|2,{52,49,0}}, +/* 26686 */ {(11<<2)|2,{52,49,0}}, +/* 26687 */ {(11<<2)|2,{52,49,0}}, +/* 26688 */ {(16<<2)|3,{52,50,48}}, +/* 26689 */ {(16<<2)|3,{52,50,49}}, +/* 26690 */ {(16<<2)|3,{52,50,50}}, +/* 26691 */ {(16<<2)|3,{52,50,97}}, +/* 26692 */ {(16<<2)|3,{52,50,99}}, +/* 26693 */ {(16<<2)|3,{52,50,101}}, +/* 26694 */ {(16<<2)|3,{52,50,105}}, +/* 26695 */ {(16<<2)|3,{52,50,111}}, +/* 26696 */ {(16<<2)|3,{52,50,115}}, +/* 26697 */ {(16<<2)|3,{52,50,116}}, +/* 26698 */ {(11<<2)|2,{52,50,0}}, +/* 26699 */ {(11<<2)|2,{52,50,0}}, +/* 26700 */ {(11<<2)|2,{52,50,0}}, +/* 26701 */ {(11<<2)|2,{52,50,0}}, +/* 26702 */ {(11<<2)|2,{52,50,0}}, +/* 26703 */ {(11<<2)|2,{52,50,0}}, +/* 26704 */ {(11<<2)|2,{52,50,0}}, +/* 26705 */ {(11<<2)|2,{52,50,0}}, +/* 26706 */ {(11<<2)|2,{52,50,0}}, +/* 26707 */ {(11<<2)|2,{52,50,0}}, +/* 26708 */ {(11<<2)|2,{52,50,0}}, +/* 26709 */ {(11<<2)|2,{52,50,0}}, +/* 26710 */ {(11<<2)|2,{52,50,0}}, +/* 26711 */ {(11<<2)|2,{52,50,0}}, +/* 26712 */ {(11<<2)|2,{52,50,0}}, +/* 26713 */ {(11<<2)|2,{52,50,0}}, +/* 26714 */ {(11<<2)|2,{52,50,0}}, +/* 26715 */ {(11<<2)|2,{52,50,0}}, +/* 26716 */ {(11<<2)|2,{52,50,0}}, +/* 26717 */ {(11<<2)|2,{52,50,0}}, +/* 26718 */ {(11<<2)|2,{52,50,0}}, +/* 26719 */ {(11<<2)|2,{52,50,0}}, +/* 26720 */ {(16<<2)|3,{52,97,48}}, +/* 26721 */ {(16<<2)|3,{52,97,49}}, +/* 26722 */ {(16<<2)|3,{52,97,50}}, +/* 26723 */ {(16<<2)|3,{52,97,97}}, +/* 26724 */ {(16<<2)|3,{52,97,99}}, +/* 26725 */ {(16<<2)|3,{52,97,101}}, +/* 26726 */ {(16<<2)|3,{52,97,105}}, +/* 26727 */ {(16<<2)|3,{52,97,111}}, +/* 26728 */ {(16<<2)|3,{52,97,115}}, +/* 26729 */ {(16<<2)|3,{52,97,116}}, +/* 26730 */ {(11<<2)|2,{52,97,0}}, +/* 26731 */ {(11<<2)|2,{52,97,0}}, +/* 26732 */ {(11<<2)|2,{52,97,0}}, +/* 26733 */ {(11<<2)|2,{52,97,0}}, +/* 26734 */ {(11<<2)|2,{52,97,0}}, +/* 26735 */ {(11<<2)|2,{52,97,0}}, +/* 26736 */ {(11<<2)|2,{52,97,0}}, +/* 26737 */ {(11<<2)|2,{52,97,0}}, +/* 26738 */ {(11<<2)|2,{52,97,0}}, +/* 26739 */ {(11<<2)|2,{52,97,0}}, +/* 26740 */ {(11<<2)|2,{52,97,0}}, +/* 26741 */ {(11<<2)|2,{52,97,0}}, +/* 26742 */ {(11<<2)|2,{52,97,0}}, +/* 26743 */ {(11<<2)|2,{52,97,0}}, +/* 26744 */ {(11<<2)|2,{52,97,0}}, +/* 26745 */ {(11<<2)|2,{52,97,0}}, +/* 26746 */ {(11<<2)|2,{52,97,0}}, +/* 26747 */ {(11<<2)|2,{52,97,0}}, +/* 26748 */ {(11<<2)|2,{52,97,0}}, +/* 26749 */ {(11<<2)|2,{52,97,0}}, +/* 26750 */ {(11<<2)|2,{52,97,0}}, +/* 26751 */ {(11<<2)|2,{52,97,0}}, +/* 26752 */ {(16<<2)|3,{52,99,48}}, +/* 26753 */ {(16<<2)|3,{52,99,49}}, +/* 26754 */ {(16<<2)|3,{52,99,50}}, +/* 26755 */ {(16<<2)|3,{52,99,97}}, +/* 26756 */ {(16<<2)|3,{52,99,99}}, +/* 26757 */ {(16<<2)|3,{52,99,101}}, +/* 26758 */ {(16<<2)|3,{52,99,105}}, +/* 26759 */ {(16<<2)|3,{52,99,111}}, +/* 26760 */ {(16<<2)|3,{52,99,115}}, +/* 26761 */ {(16<<2)|3,{52,99,116}}, +/* 26762 */ {(11<<2)|2,{52,99,0}}, +/* 26763 */ {(11<<2)|2,{52,99,0}}, +/* 26764 */ {(11<<2)|2,{52,99,0}}, +/* 26765 */ {(11<<2)|2,{52,99,0}}, +/* 26766 */ {(11<<2)|2,{52,99,0}}, +/* 26767 */ {(11<<2)|2,{52,99,0}}, +/* 26768 */ {(11<<2)|2,{52,99,0}}, +/* 26769 */ {(11<<2)|2,{52,99,0}}, +/* 26770 */ {(11<<2)|2,{52,99,0}}, +/* 26771 */ {(11<<2)|2,{52,99,0}}, +/* 26772 */ {(11<<2)|2,{52,99,0}}, +/* 26773 */ {(11<<2)|2,{52,99,0}}, +/* 26774 */ {(11<<2)|2,{52,99,0}}, +/* 26775 */ {(11<<2)|2,{52,99,0}}, +/* 26776 */ {(11<<2)|2,{52,99,0}}, +/* 26777 */ {(11<<2)|2,{52,99,0}}, +/* 26778 */ {(11<<2)|2,{52,99,0}}, +/* 26779 */ {(11<<2)|2,{52,99,0}}, +/* 26780 */ {(11<<2)|2,{52,99,0}}, +/* 26781 */ {(11<<2)|2,{52,99,0}}, +/* 26782 */ {(11<<2)|2,{52,99,0}}, +/* 26783 */ {(11<<2)|2,{52,99,0}}, +/* 26784 */ {(16<<2)|3,{52,101,48}}, +/* 26785 */ {(16<<2)|3,{52,101,49}}, +/* 26786 */ {(16<<2)|3,{52,101,50}}, +/* 26787 */ {(16<<2)|3,{52,101,97}}, +/* 26788 */ {(16<<2)|3,{52,101,99}}, +/* 26789 */ {(16<<2)|3,{52,101,101}}, +/* 26790 */ {(16<<2)|3,{52,101,105}}, +/* 26791 */ {(16<<2)|3,{52,101,111}}, +/* 26792 */ {(16<<2)|3,{52,101,115}}, +/* 26793 */ {(16<<2)|3,{52,101,116}}, +/* 26794 */ {(11<<2)|2,{52,101,0}}, +/* 26795 */ {(11<<2)|2,{52,101,0}}, +/* 26796 */ {(11<<2)|2,{52,101,0}}, +/* 26797 */ {(11<<2)|2,{52,101,0}}, +/* 26798 */ {(11<<2)|2,{52,101,0}}, +/* 26799 */ {(11<<2)|2,{52,101,0}}, +/* 26800 */ {(11<<2)|2,{52,101,0}}, +/* 26801 */ {(11<<2)|2,{52,101,0}}, +/* 26802 */ {(11<<2)|2,{52,101,0}}, +/* 26803 */ {(11<<2)|2,{52,101,0}}, +/* 26804 */ {(11<<2)|2,{52,101,0}}, +/* 26805 */ {(11<<2)|2,{52,101,0}}, +/* 26806 */ {(11<<2)|2,{52,101,0}}, +/* 26807 */ {(11<<2)|2,{52,101,0}}, +/* 26808 */ {(11<<2)|2,{52,101,0}}, +/* 26809 */ {(11<<2)|2,{52,101,0}}, +/* 26810 */ {(11<<2)|2,{52,101,0}}, +/* 26811 */ {(11<<2)|2,{52,101,0}}, +/* 26812 */ {(11<<2)|2,{52,101,0}}, +/* 26813 */ {(11<<2)|2,{52,101,0}}, +/* 26814 */ {(11<<2)|2,{52,101,0}}, +/* 26815 */ {(11<<2)|2,{52,101,0}}, +/* 26816 */ {(16<<2)|3,{52,105,48}}, +/* 26817 */ {(16<<2)|3,{52,105,49}}, +/* 26818 */ {(16<<2)|3,{52,105,50}}, +/* 26819 */ {(16<<2)|3,{52,105,97}}, +/* 26820 */ {(16<<2)|3,{52,105,99}}, +/* 26821 */ {(16<<2)|3,{52,105,101}}, +/* 26822 */ {(16<<2)|3,{52,105,105}}, +/* 26823 */ {(16<<2)|3,{52,105,111}}, +/* 26824 */ {(16<<2)|3,{52,105,115}}, +/* 26825 */ {(16<<2)|3,{52,105,116}}, +/* 26826 */ {(11<<2)|2,{52,105,0}}, +/* 26827 */ {(11<<2)|2,{52,105,0}}, +/* 26828 */ {(11<<2)|2,{52,105,0}}, +/* 26829 */ {(11<<2)|2,{52,105,0}}, +/* 26830 */ {(11<<2)|2,{52,105,0}}, +/* 26831 */ {(11<<2)|2,{52,105,0}}, +/* 26832 */ {(11<<2)|2,{52,105,0}}, +/* 26833 */ {(11<<2)|2,{52,105,0}}, +/* 26834 */ {(11<<2)|2,{52,105,0}}, +/* 26835 */ {(11<<2)|2,{52,105,0}}, +/* 26836 */ {(11<<2)|2,{52,105,0}}, +/* 26837 */ {(11<<2)|2,{52,105,0}}, +/* 26838 */ {(11<<2)|2,{52,105,0}}, +/* 26839 */ {(11<<2)|2,{52,105,0}}, +/* 26840 */ {(11<<2)|2,{52,105,0}}, +/* 26841 */ {(11<<2)|2,{52,105,0}}, +/* 26842 */ {(11<<2)|2,{52,105,0}}, +/* 26843 */ {(11<<2)|2,{52,105,0}}, +/* 26844 */ {(11<<2)|2,{52,105,0}}, +/* 26845 */ {(11<<2)|2,{52,105,0}}, +/* 26846 */ {(11<<2)|2,{52,105,0}}, +/* 26847 */ {(11<<2)|2,{52,105,0}}, +/* 26848 */ {(16<<2)|3,{52,111,48}}, +/* 26849 */ {(16<<2)|3,{52,111,49}}, +/* 26850 */ {(16<<2)|3,{52,111,50}}, +/* 26851 */ {(16<<2)|3,{52,111,97}}, +/* 26852 */ {(16<<2)|3,{52,111,99}}, +/* 26853 */ {(16<<2)|3,{52,111,101}}, +/* 26854 */ {(16<<2)|3,{52,111,105}}, +/* 26855 */ {(16<<2)|3,{52,111,111}}, +/* 26856 */ {(16<<2)|3,{52,111,115}}, +/* 26857 */ {(16<<2)|3,{52,111,116}}, +/* 26858 */ {(11<<2)|2,{52,111,0}}, +/* 26859 */ {(11<<2)|2,{52,111,0}}, +/* 26860 */ {(11<<2)|2,{52,111,0}}, +/* 26861 */ {(11<<2)|2,{52,111,0}}, +/* 26862 */ {(11<<2)|2,{52,111,0}}, +/* 26863 */ {(11<<2)|2,{52,111,0}}, +/* 26864 */ {(11<<2)|2,{52,111,0}}, +/* 26865 */ {(11<<2)|2,{52,111,0}}, +/* 26866 */ {(11<<2)|2,{52,111,0}}, +/* 26867 */ {(11<<2)|2,{52,111,0}}, +/* 26868 */ {(11<<2)|2,{52,111,0}}, +/* 26869 */ {(11<<2)|2,{52,111,0}}, +/* 26870 */ {(11<<2)|2,{52,111,0}}, +/* 26871 */ {(11<<2)|2,{52,111,0}}, +/* 26872 */ {(11<<2)|2,{52,111,0}}, +/* 26873 */ {(11<<2)|2,{52,111,0}}, +/* 26874 */ {(11<<2)|2,{52,111,0}}, +/* 26875 */ {(11<<2)|2,{52,111,0}}, +/* 26876 */ {(11<<2)|2,{52,111,0}}, +/* 26877 */ {(11<<2)|2,{52,111,0}}, +/* 26878 */ {(11<<2)|2,{52,111,0}}, +/* 26879 */ {(11<<2)|2,{52,111,0}}, +/* 26880 */ {(16<<2)|3,{52,115,48}}, +/* 26881 */ {(16<<2)|3,{52,115,49}}, +/* 26882 */ {(16<<2)|3,{52,115,50}}, +/* 26883 */ {(16<<2)|3,{52,115,97}}, +/* 26884 */ {(16<<2)|3,{52,115,99}}, +/* 26885 */ {(16<<2)|3,{52,115,101}}, +/* 26886 */ {(16<<2)|3,{52,115,105}}, +/* 26887 */ {(16<<2)|3,{52,115,111}}, +/* 26888 */ {(16<<2)|3,{52,115,115}}, +/* 26889 */ {(16<<2)|3,{52,115,116}}, +/* 26890 */ {(11<<2)|2,{52,115,0}}, +/* 26891 */ {(11<<2)|2,{52,115,0}}, +/* 26892 */ {(11<<2)|2,{52,115,0}}, +/* 26893 */ {(11<<2)|2,{52,115,0}}, +/* 26894 */ {(11<<2)|2,{52,115,0}}, +/* 26895 */ {(11<<2)|2,{52,115,0}}, +/* 26896 */ {(11<<2)|2,{52,115,0}}, +/* 26897 */ {(11<<2)|2,{52,115,0}}, +/* 26898 */ {(11<<2)|2,{52,115,0}}, +/* 26899 */ {(11<<2)|2,{52,115,0}}, +/* 26900 */ {(11<<2)|2,{52,115,0}}, +/* 26901 */ {(11<<2)|2,{52,115,0}}, +/* 26902 */ {(11<<2)|2,{52,115,0}}, +/* 26903 */ {(11<<2)|2,{52,115,0}}, +/* 26904 */ {(11<<2)|2,{52,115,0}}, +/* 26905 */ {(11<<2)|2,{52,115,0}}, +/* 26906 */ {(11<<2)|2,{52,115,0}}, +/* 26907 */ {(11<<2)|2,{52,115,0}}, +/* 26908 */ {(11<<2)|2,{52,115,0}}, +/* 26909 */ {(11<<2)|2,{52,115,0}}, +/* 26910 */ {(11<<2)|2,{52,115,0}}, +/* 26911 */ {(11<<2)|2,{52,115,0}}, +/* 26912 */ {(16<<2)|3,{52,116,48}}, +/* 26913 */ {(16<<2)|3,{52,116,49}}, +/* 26914 */ {(16<<2)|3,{52,116,50}}, +/* 26915 */ {(16<<2)|3,{52,116,97}}, +/* 26916 */ {(16<<2)|3,{52,116,99}}, +/* 26917 */ {(16<<2)|3,{52,116,101}}, +/* 26918 */ {(16<<2)|3,{52,116,105}}, +/* 26919 */ {(16<<2)|3,{52,116,111}}, +/* 26920 */ {(16<<2)|3,{52,116,115}}, +/* 26921 */ {(16<<2)|3,{52,116,116}}, +/* 26922 */ {(11<<2)|2,{52,116,0}}, +/* 26923 */ {(11<<2)|2,{52,116,0}}, +/* 26924 */ {(11<<2)|2,{52,116,0}}, +/* 26925 */ {(11<<2)|2,{52,116,0}}, +/* 26926 */ {(11<<2)|2,{52,116,0}}, +/* 26927 */ {(11<<2)|2,{52,116,0}}, +/* 26928 */ {(11<<2)|2,{52,116,0}}, +/* 26929 */ {(11<<2)|2,{52,116,0}}, +/* 26930 */ {(11<<2)|2,{52,116,0}}, +/* 26931 */ {(11<<2)|2,{52,116,0}}, +/* 26932 */ {(11<<2)|2,{52,116,0}}, +/* 26933 */ {(11<<2)|2,{52,116,0}}, +/* 26934 */ {(11<<2)|2,{52,116,0}}, +/* 26935 */ {(11<<2)|2,{52,116,0}}, +/* 26936 */ {(11<<2)|2,{52,116,0}}, +/* 26937 */ {(11<<2)|2,{52,116,0}}, +/* 26938 */ {(11<<2)|2,{52,116,0}}, +/* 26939 */ {(11<<2)|2,{52,116,0}}, +/* 26940 */ {(11<<2)|2,{52,116,0}}, +/* 26941 */ {(11<<2)|2,{52,116,0}}, +/* 26942 */ {(11<<2)|2,{52,116,0}}, +/* 26943 */ {(11<<2)|2,{52,116,0}}, +/* 26944 */ {(12<<2)|2,{52,32,0}}, +/* 26945 */ {(12<<2)|2,{52,32,0}}, +/* 26946 */ {(12<<2)|2,{52,32,0}}, +/* 26947 */ {(12<<2)|2,{52,32,0}}, +/* 26948 */ {(12<<2)|2,{52,32,0}}, +/* 26949 */ {(12<<2)|2,{52,32,0}}, +/* 26950 */ {(12<<2)|2,{52,32,0}}, +/* 26951 */ {(12<<2)|2,{52,32,0}}, +/* 26952 */ {(12<<2)|2,{52,32,0}}, +/* 26953 */ {(12<<2)|2,{52,32,0}}, +/* 26954 */ {(12<<2)|2,{52,32,0}}, +/* 26955 */ {(12<<2)|2,{52,32,0}}, +/* 26956 */ {(12<<2)|2,{52,32,0}}, +/* 26957 */ {(12<<2)|2,{52,32,0}}, +/* 26958 */ {(12<<2)|2,{52,32,0}}, +/* 26959 */ {(12<<2)|2,{52,32,0}}, +/* 26960 */ {(12<<2)|2,{52,37,0}}, +/* 26961 */ {(12<<2)|2,{52,37,0}}, +/* 26962 */ {(12<<2)|2,{52,37,0}}, +/* 26963 */ {(12<<2)|2,{52,37,0}}, +/* 26964 */ {(12<<2)|2,{52,37,0}}, +/* 26965 */ {(12<<2)|2,{52,37,0}}, +/* 26966 */ {(12<<2)|2,{52,37,0}}, +/* 26967 */ {(12<<2)|2,{52,37,0}}, +/* 26968 */ {(12<<2)|2,{52,37,0}}, +/* 26969 */ {(12<<2)|2,{52,37,0}}, +/* 26970 */ {(12<<2)|2,{52,37,0}}, +/* 26971 */ {(12<<2)|2,{52,37,0}}, +/* 26972 */ {(12<<2)|2,{52,37,0}}, +/* 26973 */ {(12<<2)|2,{52,37,0}}, +/* 26974 */ {(12<<2)|2,{52,37,0}}, +/* 26975 */ {(12<<2)|2,{52,37,0}}, +/* 26976 */ {(12<<2)|2,{52,45,0}}, +/* 26977 */ {(12<<2)|2,{52,45,0}}, +/* 26978 */ {(12<<2)|2,{52,45,0}}, +/* 26979 */ {(12<<2)|2,{52,45,0}}, +/* 26980 */ {(12<<2)|2,{52,45,0}}, +/* 26981 */ {(12<<2)|2,{52,45,0}}, +/* 26982 */ {(12<<2)|2,{52,45,0}}, +/* 26983 */ {(12<<2)|2,{52,45,0}}, +/* 26984 */ {(12<<2)|2,{52,45,0}}, +/* 26985 */ {(12<<2)|2,{52,45,0}}, +/* 26986 */ {(12<<2)|2,{52,45,0}}, +/* 26987 */ {(12<<2)|2,{52,45,0}}, +/* 26988 */ {(12<<2)|2,{52,45,0}}, +/* 26989 */ {(12<<2)|2,{52,45,0}}, +/* 26990 */ {(12<<2)|2,{52,45,0}}, +/* 26991 */ {(12<<2)|2,{52,45,0}}, +/* 26992 */ {(12<<2)|2,{52,46,0}}, +/* 26993 */ {(12<<2)|2,{52,46,0}}, +/* 26994 */ {(12<<2)|2,{52,46,0}}, +/* 26995 */ {(12<<2)|2,{52,46,0}}, +/* 26996 */ {(12<<2)|2,{52,46,0}}, +/* 26997 */ {(12<<2)|2,{52,46,0}}, +/* 26998 */ {(12<<2)|2,{52,46,0}}, +/* 26999 */ {(12<<2)|2,{52,46,0}}, +/* 27000 */ {(12<<2)|2,{52,46,0}}, +/* 27001 */ {(12<<2)|2,{52,46,0}}, +/* 27002 */ {(12<<2)|2,{52,46,0}}, +/* 27003 */ {(12<<2)|2,{52,46,0}}, +/* 27004 */ {(12<<2)|2,{52,46,0}}, +/* 27005 */ {(12<<2)|2,{52,46,0}}, +/* 27006 */ {(12<<2)|2,{52,46,0}}, +/* 27007 */ {(12<<2)|2,{52,46,0}}, +/* 27008 */ {(12<<2)|2,{52,47,0}}, +/* 27009 */ {(12<<2)|2,{52,47,0}}, +/* 27010 */ {(12<<2)|2,{52,47,0}}, +/* 27011 */ {(12<<2)|2,{52,47,0}}, +/* 27012 */ {(12<<2)|2,{52,47,0}}, +/* 27013 */ {(12<<2)|2,{52,47,0}}, +/* 27014 */ {(12<<2)|2,{52,47,0}}, +/* 27015 */ {(12<<2)|2,{52,47,0}}, +/* 27016 */ {(12<<2)|2,{52,47,0}}, +/* 27017 */ {(12<<2)|2,{52,47,0}}, +/* 27018 */ {(12<<2)|2,{52,47,0}}, +/* 27019 */ {(12<<2)|2,{52,47,0}}, +/* 27020 */ {(12<<2)|2,{52,47,0}}, +/* 27021 */ {(12<<2)|2,{52,47,0}}, +/* 27022 */ {(12<<2)|2,{52,47,0}}, +/* 27023 */ {(12<<2)|2,{52,47,0}}, +/* 27024 */ {(12<<2)|2,{52,51,0}}, +/* 27025 */ {(12<<2)|2,{52,51,0}}, +/* 27026 */ {(12<<2)|2,{52,51,0}}, +/* 27027 */ {(12<<2)|2,{52,51,0}}, +/* 27028 */ {(12<<2)|2,{52,51,0}}, +/* 27029 */ {(12<<2)|2,{52,51,0}}, +/* 27030 */ {(12<<2)|2,{52,51,0}}, +/* 27031 */ {(12<<2)|2,{52,51,0}}, +/* 27032 */ {(12<<2)|2,{52,51,0}}, +/* 27033 */ {(12<<2)|2,{52,51,0}}, +/* 27034 */ {(12<<2)|2,{52,51,0}}, +/* 27035 */ {(12<<2)|2,{52,51,0}}, +/* 27036 */ {(12<<2)|2,{52,51,0}}, +/* 27037 */ {(12<<2)|2,{52,51,0}}, +/* 27038 */ {(12<<2)|2,{52,51,0}}, +/* 27039 */ {(12<<2)|2,{52,51,0}}, +/* 27040 */ {(12<<2)|2,{52,52,0}}, +/* 27041 */ {(12<<2)|2,{52,52,0}}, +/* 27042 */ {(12<<2)|2,{52,52,0}}, +/* 27043 */ {(12<<2)|2,{52,52,0}}, +/* 27044 */ {(12<<2)|2,{52,52,0}}, +/* 27045 */ {(12<<2)|2,{52,52,0}}, +/* 27046 */ {(12<<2)|2,{52,52,0}}, +/* 27047 */ {(12<<2)|2,{52,52,0}}, +/* 27048 */ {(12<<2)|2,{52,52,0}}, +/* 27049 */ {(12<<2)|2,{52,52,0}}, +/* 27050 */ {(12<<2)|2,{52,52,0}}, +/* 27051 */ {(12<<2)|2,{52,52,0}}, +/* 27052 */ {(12<<2)|2,{52,52,0}}, +/* 27053 */ {(12<<2)|2,{52,52,0}}, +/* 27054 */ {(12<<2)|2,{52,52,0}}, +/* 27055 */ {(12<<2)|2,{52,52,0}}, +/* 27056 */ {(12<<2)|2,{52,53,0}}, +/* 27057 */ {(12<<2)|2,{52,53,0}}, +/* 27058 */ {(12<<2)|2,{52,53,0}}, +/* 27059 */ {(12<<2)|2,{52,53,0}}, +/* 27060 */ {(12<<2)|2,{52,53,0}}, +/* 27061 */ {(12<<2)|2,{52,53,0}}, +/* 27062 */ {(12<<2)|2,{52,53,0}}, +/* 27063 */ {(12<<2)|2,{52,53,0}}, +/* 27064 */ {(12<<2)|2,{52,53,0}}, +/* 27065 */ {(12<<2)|2,{52,53,0}}, +/* 27066 */ {(12<<2)|2,{52,53,0}}, +/* 27067 */ {(12<<2)|2,{52,53,0}}, +/* 27068 */ {(12<<2)|2,{52,53,0}}, +/* 27069 */ {(12<<2)|2,{52,53,0}}, +/* 27070 */ {(12<<2)|2,{52,53,0}}, +/* 27071 */ {(12<<2)|2,{52,53,0}}, +/* 27072 */ {(12<<2)|2,{52,54,0}}, +/* 27073 */ {(12<<2)|2,{52,54,0}}, +/* 27074 */ {(12<<2)|2,{52,54,0}}, +/* 27075 */ {(12<<2)|2,{52,54,0}}, +/* 27076 */ {(12<<2)|2,{52,54,0}}, +/* 27077 */ {(12<<2)|2,{52,54,0}}, +/* 27078 */ {(12<<2)|2,{52,54,0}}, +/* 27079 */ {(12<<2)|2,{52,54,0}}, +/* 27080 */ {(12<<2)|2,{52,54,0}}, +/* 27081 */ {(12<<2)|2,{52,54,0}}, +/* 27082 */ {(12<<2)|2,{52,54,0}}, +/* 27083 */ {(12<<2)|2,{52,54,0}}, +/* 27084 */ {(12<<2)|2,{52,54,0}}, +/* 27085 */ {(12<<2)|2,{52,54,0}}, +/* 27086 */ {(12<<2)|2,{52,54,0}}, +/* 27087 */ {(12<<2)|2,{52,54,0}}, +/* 27088 */ {(12<<2)|2,{52,55,0}}, +/* 27089 */ {(12<<2)|2,{52,55,0}}, +/* 27090 */ {(12<<2)|2,{52,55,0}}, +/* 27091 */ {(12<<2)|2,{52,55,0}}, +/* 27092 */ {(12<<2)|2,{52,55,0}}, +/* 27093 */ {(12<<2)|2,{52,55,0}}, +/* 27094 */ {(12<<2)|2,{52,55,0}}, +/* 27095 */ {(12<<2)|2,{52,55,0}}, +/* 27096 */ {(12<<2)|2,{52,55,0}}, +/* 27097 */ {(12<<2)|2,{52,55,0}}, +/* 27098 */ {(12<<2)|2,{52,55,0}}, +/* 27099 */ {(12<<2)|2,{52,55,0}}, +/* 27100 */ {(12<<2)|2,{52,55,0}}, +/* 27101 */ {(12<<2)|2,{52,55,0}}, +/* 27102 */ {(12<<2)|2,{52,55,0}}, +/* 27103 */ {(12<<2)|2,{52,55,0}}, +/* 27104 */ {(12<<2)|2,{52,56,0}}, +/* 27105 */ {(12<<2)|2,{52,56,0}}, +/* 27106 */ {(12<<2)|2,{52,56,0}}, +/* 27107 */ {(12<<2)|2,{52,56,0}}, +/* 27108 */ {(12<<2)|2,{52,56,0}}, +/* 27109 */ {(12<<2)|2,{52,56,0}}, +/* 27110 */ {(12<<2)|2,{52,56,0}}, +/* 27111 */ {(12<<2)|2,{52,56,0}}, +/* 27112 */ {(12<<2)|2,{52,56,0}}, +/* 27113 */ {(12<<2)|2,{52,56,0}}, +/* 27114 */ {(12<<2)|2,{52,56,0}}, +/* 27115 */ {(12<<2)|2,{52,56,0}}, +/* 27116 */ {(12<<2)|2,{52,56,0}}, +/* 27117 */ {(12<<2)|2,{52,56,0}}, +/* 27118 */ {(12<<2)|2,{52,56,0}}, +/* 27119 */ {(12<<2)|2,{52,56,0}}, +/* 27120 */ {(12<<2)|2,{52,57,0}}, +/* 27121 */ {(12<<2)|2,{52,57,0}}, +/* 27122 */ {(12<<2)|2,{52,57,0}}, +/* 27123 */ {(12<<2)|2,{52,57,0}}, +/* 27124 */ {(12<<2)|2,{52,57,0}}, +/* 27125 */ {(12<<2)|2,{52,57,0}}, +/* 27126 */ {(12<<2)|2,{52,57,0}}, +/* 27127 */ {(12<<2)|2,{52,57,0}}, +/* 27128 */ {(12<<2)|2,{52,57,0}}, +/* 27129 */ {(12<<2)|2,{52,57,0}}, +/* 27130 */ {(12<<2)|2,{52,57,0}}, +/* 27131 */ {(12<<2)|2,{52,57,0}}, +/* 27132 */ {(12<<2)|2,{52,57,0}}, +/* 27133 */ {(12<<2)|2,{52,57,0}}, +/* 27134 */ {(12<<2)|2,{52,57,0}}, +/* 27135 */ {(12<<2)|2,{52,57,0}}, +/* 27136 */ {(12<<2)|2,{52,61,0}}, +/* 27137 */ {(12<<2)|2,{52,61,0}}, +/* 27138 */ {(12<<2)|2,{52,61,0}}, +/* 27139 */ {(12<<2)|2,{52,61,0}}, +/* 27140 */ {(12<<2)|2,{52,61,0}}, +/* 27141 */ {(12<<2)|2,{52,61,0}}, +/* 27142 */ {(12<<2)|2,{52,61,0}}, +/* 27143 */ {(12<<2)|2,{52,61,0}}, +/* 27144 */ {(12<<2)|2,{52,61,0}}, +/* 27145 */ {(12<<2)|2,{52,61,0}}, +/* 27146 */ {(12<<2)|2,{52,61,0}}, +/* 27147 */ {(12<<2)|2,{52,61,0}}, +/* 27148 */ {(12<<2)|2,{52,61,0}}, +/* 27149 */ {(12<<2)|2,{52,61,0}}, +/* 27150 */ {(12<<2)|2,{52,61,0}}, +/* 27151 */ {(12<<2)|2,{52,61,0}}, +/* 27152 */ {(12<<2)|2,{52,65,0}}, +/* 27153 */ {(12<<2)|2,{52,65,0}}, +/* 27154 */ {(12<<2)|2,{52,65,0}}, +/* 27155 */ {(12<<2)|2,{52,65,0}}, +/* 27156 */ {(12<<2)|2,{52,65,0}}, +/* 27157 */ {(12<<2)|2,{52,65,0}}, +/* 27158 */ {(12<<2)|2,{52,65,0}}, +/* 27159 */ {(12<<2)|2,{52,65,0}}, +/* 27160 */ {(12<<2)|2,{52,65,0}}, +/* 27161 */ {(12<<2)|2,{52,65,0}}, +/* 27162 */ {(12<<2)|2,{52,65,0}}, +/* 27163 */ {(12<<2)|2,{52,65,0}}, +/* 27164 */ {(12<<2)|2,{52,65,0}}, +/* 27165 */ {(12<<2)|2,{52,65,0}}, +/* 27166 */ {(12<<2)|2,{52,65,0}}, +/* 27167 */ {(12<<2)|2,{52,65,0}}, +/* 27168 */ {(12<<2)|2,{52,95,0}}, +/* 27169 */ {(12<<2)|2,{52,95,0}}, +/* 27170 */ {(12<<2)|2,{52,95,0}}, +/* 27171 */ {(12<<2)|2,{52,95,0}}, +/* 27172 */ {(12<<2)|2,{52,95,0}}, +/* 27173 */ {(12<<2)|2,{52,95,0}}, +/* 27174 */ {(12<<2)|2,{52,95,0}}, +/* 27175 */ {(12<<2)|2,{52,95,0}}, +/* 27176 */ {(12<<2)|2,{52,95,0}}, +/* 27177 */ {(12<<2)|2,{52,95,0}}, +/* 27178 */ {(12<<2)|2,{52,95,0}}, +/* 27179 */ {(12<<2)|2,{52,95,0}}, +/* 27180 */ {(12<<2)|2,{52,95,0}}, +/* 27181 */ {(12<<2)|2,{52,95,0}}, +/* 27182 */ {(12<<2)|2,{52,95,0}}, +/* 27183 */ {(12<<2)|2,{52,95,0}}, +/* 27184 */ {(12<<2)|2,{52,98,0}}, +/* 27185 */ {(12<<2)|2,{52,98,0}}, +/* 27186 */ {(12<<2)|2,{52,98,0}}, +/* 27187 */ {(12<<2)|2,{52,98,0}}, +/* 27188 */ {(12<<2)|2,{52,98,0}}, +/* 27189 */ {(12<<2)|2,{52,98,0}}, +/* 27190 */ {(12<<2)|2,{52,98,0}}, +/* 27191 */ {(12<<2)|2,{52,98,0}}, +/* 27192 */ {(12<<2)|2,{52,98,0}}, +/* 27193 */ {(12<<2)|2,{52,98,0}}, +/* 27194 */ {(12<<2)|2,{52,98,0}}, +/* 27195 */ {(12<<2)|2,{52,98,0}}, +/* 27196 */ {(12<<2)|2,{52,98,0}}, +/* 27197 */ {(12<<2)|2,{52,98,0}}, +/* 27198 */ {(12<<2)|2,{52,98,0}}, +/* 27199 */ {(12<<2)|2,{52,98,0}}, +/* 27200 */ {(12<<2)|2,{52,100,0}}, +/* 27201 */ {(12<<2)|2,{52,100,0}}, +/* 27202 */ {(12<<2)|2,{52,100,0}}, +/* 27203 */ {(12<<2)|2,{52,100,0}}, +/* 27204 */ {(12<<2)|2,{52,100,0}}, +/* 27205 */ {(12<<2)|2,{52,100,0}}, +/* 27206 */ {(12<<2)|2,{52,100,0}}, +/* 27207 */ {(12<<2)|2,{52,100,0}}, +/* 27208 */ {(12<<2)|2,{52,100,0}}, +/* 27209 */ {(12<<2)|2,{52,100,0}}, +/* 27210 */ {(12<<2)|2,{52,100,0}}, +/* 27211 */ {(12<<2)|2,{52,100,0}}, +/* 27212 */ {(12<<2)|2,{52,100,0}}, +/* 27213 */ {(12<<2)|2,{52,100,0}}, +/* 27214 */ {(12<<2)|2,{52,100,0}}, +/* 27215 */ {(12<<2)|2,{52,100,0}}, +/* 27216 */ {(12<<2)|2,{52,102,0}}, +/* 27217 */ {(12<<2)|2,{52,102,0}}, +/* 27218 */ {(12<<2)|2,{52,102,0}}, +/* 27219 */ {(12<<2)|2,{52,102,0}}, +/* 27220 */ {(12<<2)|2,{52,102,0}}, +/* 27221 */ {(12<<2)|2,{52,102,0}}, +/* 27222 */ {(12<<2)|2,{52,102,0}}, +/* 27223 */ {(12<<2)|2,{52,102,0}}, +/* 27224 */ {(12<<2)|2,{52,102,0}}, +/* 27225 */ {(12<<2)|2,{52,102,0}}, +/* 27226 */ {(12<<2)|2,{52,102,0}}, +/* 27227 */ {(12<<2)|2,{52,102,0}}, +/* 27228 */ {(12<<2)|2,{52,102,0}}, +/* 27229 */ {(12<<2)|2,{52,102,0}}, +/* 27230 */ {(12<<2)|2,{52,102,0}}, +/* 27231 */ {(12<<2)|2,{52,102,0}}, +/* 27232 */ {(12<<2)|2,{52,103,0}}, +/* 27233 */ {(12<<2)|2,{52,103,0}}, +/* 27234 */ {(12<<2)|2,{52,103,0}}, +/* 27235 */ {(12<<2)|2,{52,103,0}}, +/* 27236 */ {(12<<2)|2,{52,103,0}}, +/* 27237 */ {(12<<2)|2,{52,103,0}}, +/* 27238 */ {(12<<2)|2,{52,103,0}}, +/* 27239 */ {(12<<2)|2,{52,103,0}}, +/* 27240 */ {(12<<2)|2,{52,103,0}}, +/* 27241 */ {(12<<2)|2,{52,103,0}}, +/* 27242 */ {(12<<2)|2,{52,103,0}}, +/* 27243 */ {(12<<2)|2,{52,103,0}}, +/* 27244 */ {(12<<2)|2,{52,103,0}}, +/* 27245 */ {(12<<2)|2,{52,103,0}}, +/* 27246 */ {(12<<2)|2,{52,103,0}}, +/* 27247 */ {(12<<2)|2,{52,103,0}}, +/* 27248 */ {(12<<2)|2,{52,104,0}}, +/* 27249 */ {(12<<2)|2,{52,104,0}}, +/* 27250 */ {(12<<2)|2,{52,104,0}}, +/* 27251 */ {(12<<2)|2,{52,104,0}}, +/* 27252 */ {(12<<2)|2,{52,104,0}}, +/* 27253 */ {(12<<2)|2,{52,104,0}}, +/* 27254 */ {(12<<2)|2,{52,104,0}}, +/* 27255 */ {(12<<2)|2,{52,104,0}}, +/* 27256 */ {(12<<2)|2,{52,104,0}}, +/* 27257 */ {(12<<2)|2,{52,104,0}}, +/* 27258 */ {(12<<2)|2,{52,104,0}}, +/* 27259 */ {(12<<2)|2,{52,104,0}}, +/* 27260 */ {(12<<2)|2,{52,104,0}}, +/* 27261 */ {(12<<2)|2,{52,104,0}}, +/* 27262 */ {(12<<2)|2,{52,104,0}}, +/* 27263 */ {(12<<2)|2,{52,104,0}}, +/* 27264 */ {(12<<2)|2,{52,108,0}}, +/* 27265 */ {(12<<2)|2,{52,108,0}}, +/* 27266 */ {(12<<2)|2,{52,108,0}}, +/* 27267 */ {(12<<2)|2,{52,108,0}}, +/* 27268 */ {(12<<2)|2,{52,108,0}}, +/* 27269 */ {(12<<2)|2,{52,108,0}}, +/* 27270 */ {(12<<2)|2,{52,108,0}}, +/* 27271 */ {(12<<2)|2,{52,108,0}}, +/* 27272 */ {(12<<2)|2,{52,108,0}}, +/* 27273 */ {(12<<2)|2,{52,108,0}}, +/* 27274 */ {(12<<2)|2,{52,108,0}}, +/* 27275 */ {(12<<2)|2,{52,108,0}}, +/* 27276 */ {(12<<2)|2,{52,108,0}}, +/* 27277 */ {(12<<2)|2,{52,108,0}}, +/* 27278 */ {(12<<2)|2,{52,108,0}}, +/* 27279 */ {(12<<2)|2,{52,108,0}}, +/* 27280 */ {(12<<2)|2,{52,109,0}}, +/* 27281 */ {(12<<2)|2,{52,109,0}}, +/* 27282 */ {(12<<2)|2,{52,109,0}}, +/* 27283 */ {(12<<2)|2,{52,109,0}}, +/* 27284 */ {(12<<2)|2,{52,109,0}}, +/* 27285 */ {(12<<2)|2,{52,109,0}}, +/* 27286 */ {(12<<2)|2,{52,109,0}}, +/* 27287 */ {(12<<2)|2,{52,109,0}}, +/* 27288 */ {(12<<2)|2,{52,109,0}}, +/* 27289 */ {(12<<2)|2,{52,109,0}}, +/* 27290 */ {(12<<2)|2,{52,109,0}}, +/* 27291 */ {(12<<2)|2,{52,109,0}}, +/* 27292 */ {(12<<2)|2,{52,109,0}}, +/* 27293 */ {(12<<2)|2,{52,109,0}}, +/* 27294 */ {(12<<2)|2,{52,109,0}}, +/* 27295 */ {(12<<2)|2,{52,109,0}}, +/* 27296 */ {(12<<2)|2,{52,110,0}}, +/* 27297 */ {(12<<2)|2,{52,110,0}}, +/* 27298 */ {(12<<2)|2,{52,110,0}}, +/* 27299 */ {(12<<2)|2,{52,110,0}}, +/* 27300 */ {(12<<2)|2,{52,110,0}}, +/* 27301 */ {(12<<2)|2,{52,110,0}}, +/* 27302 */ {(12<<2)|2,{52,110,0}}, +/* 27303 */ {(12<<2)|2,{52,110,0}}, +/* 27304 */ {(12<<2)|2,{52,110,0}}, +/* 27305 */ {(12<<2)|2,{52,110,0}}, +/* 27306 */ {(12<<2)|2,{52,110,0}}, +/* 27307 */ {(12<<2)|2,{52,110,0}}, +/* 27308 */ {(12<<2)|2,{52,110,0}}, +/* 27309 */ {(12<<2)|2,{52,110,0}}, +/* 27310 */ {(12<<2)|2,{52,110,0}}, +/* 27311 */ {(12<<2)|2,{52,110,0}}, +/* 27312 */ {(12<<2)|2,{52,112,0}}, +/* 27313 */ {(12<<2)|2,{52,112,0}}, +/* 27314 */ {(12<<2)|2,{52,112,0}}, +/* 27315 */ {(12<<2)|2,{52,112,0}}, +/* 27316 */ {(12<<2)|2,{52,112,0}}, +/* 27317 */ {(12<<2)|2,{52,112,0}}, +/* 27318 */ {(12<<2)|2,{52,112,0}}, +/* 27319 */ {(12<<2)|2,{52,112,0}}, +/* 27320 */ {(12<<2)|2,{52,112,0}}, +/* 27321 */ {(12<<2)|2,{52,112,0}}, +/* 27322 */ {(12<<2)|2,{52,112,0}}, +/* 27323 */ {(12<<2)|2,{52,112,0}}, +/* 27324 */ {(12<<2)|2,{52,112,0}}, +/* 27325 */ {(12<<2)|2,{52,112,0}}, +/* 27326 */ {(12<<2)|2,{52,112,0}}, +/* 27327 */ {(12<<2)|2,{52,112,0}}, +/* 27328 */ {(12<<2)|2,{52,114,0}}, +/* 27329 */ {(12<<2)|2,{52,114,0}}, +/* 27330 */ {(12<<2)|2,{52,114,0}}, +/* 27331 */ {(12<<2)|2,{52,114,0}}, +/* 27332 */ {(12<<2)|2,{52,114,0}}, +/* 27333 */ {(12<<2)|2,{52,114,0}}, +/* 27334 */ {(12<<2)|2,{52,114,0}}, +/* 27335 */ {(12<<2)|2,{52,114,0}}, +/* 27336 */ {(12<<2)|2,{52,114,0}}, +/* 27337 */ {(12<<2)|2,{52,114,0}}, +/* 27338 */ {(12<<2)|2,{52,114,0}}, +/* 27339 */ {(12<<2)|2,{52,114,0}}, +/* 27340 */ {(12<<2)|2,{52,114,0}}, +/* 27341 */ {(12<<2)|2,{52,114,0}}, +/* 27342 */ {(12<<2)|2,{52,114,0}}, +/* 27343 */ {(12<<2)|2,{52,114,0}}, +/* 27344 */ {(12<<2)|2,{52,117,0}}, +/* 27345 */ {(12<<2)|2,{52,117,0}}, +/* 27346 */ {(12<<2)|2,{52,117,0}}, +/* 27347 */ {(12<<2)|2,{52,117,0}}, +/* 27348 */ {(12<<2)|2,{52,117,0}}, +/* 27349 */ {(12<<2)|2,{52,117,0}}, +/* 27350 */ {(12<<2)|2,{52,117,0}}, +/* 27351 */ {(12<<2)|2,{52,117,0}}, +/* 27352 */ {(12<<2)|2,{52,117,0}}, +/* 27353 */ {(12<<2)|2,{52,117,0}}, +/* 27354 */ {(12<<2)|2,{52,117,0}}, +/* 27355 */ {(12<<2)|2,{52,117,0}}, +/* 27356 */ {(12<<2)|2,{52,117,0}}, +/* 27357 */ {(12<<2)|2,{52,117,0}}, +/* 27358 */ {(12<<2)|2,{52,117,0}}, +/* 27359 */ {(12<<2)|2,{52,117,0}}, +/* 27360 */ {(13<<2)|2,{52,58,0}}, +/* 27361 */ {(13<<2)|2,{52,58,0}}, +/* 27362 */ {(13<<2)|2,{52,58,0}}, +/* 27363 */ {(13<<2)|2,{52,58,0}}, +/* 27364 */ {(13<<2)|2,{52,58,0}}, +/* 27365 */ {(13<<2)|2,{52,58,0}}, +/* 27366 */ {(13<<2)|2,{52,58,0}}, +/* 27367 */ {(13<<2)|2,{52,58,0}}, +/* 27368 */ {(13<<2)|2,{52,66,0}}, +/* 27369 */ {(13<<2)|2,{52,66,0}}, +/* 27370 */ {(13<<2)|2,{52,66,0}}, +/* 27371 */ {(13<<2)|2,{52,66,0}}, +/* 27372 */ {(13<<2)|2,{52,66,0}}, +/* 27373 */ {(13<<2)|2,{52,66,0}}, +/* 27374 */ {(13<<2)|2,{52,66,0}}, +/* 27375 */ {(13<<2)|2,{52,66,0}}, +/* 27376 */ {(13<<2)|2,{52,67,0}}, +/* 27377 */ {(13<<2)|2,{52,67,0}}, +/* 27378 */ {(13<<2)|2,{52,67,0}}, +/* 27379 */ {(13<<2)|2,{52,67,0}}, +/* 27380 */ {(13<<2)|2,{52,67,0}}, +/* 27381 */ {(13<<2)|2,{52,67,0}}, +/* 27382 */ {(13<<2)|2,{52,67,0}}, +/* 27383 */ {(13<<2)|2,{52,67,0}}, +/* 27384 */ {(13<<2)|2,{52,68,0}}, +/* 27385 */ {(13<<2)|2,{52,68,0}}, +/* 27386 */ {(13<<2)|2,{52,68,0}}, +/* 27387 */ {(13<<2)|2,{52,68,0}}, +/* 27388 */ {(13<<2)|2,{52,68,0}}, +/* 27389 */ {(13<<2)|2,{52,68,0}}, +/* 27390 */ {(13<<2)|2,{52,68,0}}, +/* 27391 */ {(13<<2)|2,{52,68,0}}, +/* 27392 */ {(13<<2)|2,{52,69,0}}, +/* 27393 */ {(13<<2)|2,{52,69,0}}, +/* 27394 */ {(13<<2)|2,{52,69,0}}, +/* 27395 */ {(13<<2)|2,{52,69,0}}, +/* 27396 */ {(13<<2)|2,{52,69,0}}, +/* 27397 */ {(13<<2)|2,{52,69,0}}, +/* 27398 */ {(13<<2)|2,{52,69,0}}, +/* 27399 */ {(13<<2)|2,{52,69,0}}, +/* 27400 */ {(13<<2)|2,{52,70,0}}, +/* 27401 */ {(13<<2)|2,{52,70,0}}, +/* 27402 */ {(13<<2)|2,{52,70,0}}, +/* 27403 */ {(13<<2)|2,{52,70,0}}, +/* 27404 */ {(13<<2)|2,{52,70,0}}, +/* 27405 */ {(13<<2)|2,{52,70,0}}, +/* 27406 */ {(13<<2)|2,{52,70,0}}, +/* 27407 */ {(13<<2)|2,{52,70,0}}, +/* 27408 */ {(13<<2)|2,{52,71,0}}, +/* 27409 */ {(13<<2)|2,{52,71,0}}, +/* 27410 */ {(13<<2)|2,{52,71,0}}, +/* 27411 */ {(13<<2)|2,{52,71,0}}, +/* 27412 */ {(13<<2)|2,{52,71,0}}, +/* 27413 */ {(13<<2)|2,{52,71,0}}, +/* 27414 */ {(13<<2)|2,{52,71,0}}, +/* 27415 */ {(13<<2)|2,{52,71,0}}, +/* 27416 */ {(13<<2)|2,{52,72,0}}, +/* 27417 */ {(13<<2)|2,{52,72,0}}, +/* 27418 */ {(13<<2)|2,{52,72,0}}, +/* 27419 */ {(13<<2)|2,{52,72,0}}, +/* 27420 */ {(13<<2)|2,{52,72,0}}, +/* 27421 */ {(13<<2)|2,{52,72,0}}, +/* 27422 */ {(13<<2)|2,{52,72,0}}, +/* 27423 */ {(13<<2)|2,{52,72,0}}, +/* 27424 */ {(13<<2)|2,{52,73,0}}, +/* 27425 */ {(13<<2)|2,{52,73,0}}, +/* 27426 */ {(13<<2)|2,{52,73,0}}, +/* 27427 */ {(13<<2)|2,{52,73,0}}, +/* 27428 */ {(13<<2)|2,{52,73,0}}, +/* 27429 */ {(13<<2)|2,{52,73,0}}, +/* 27430 */ {(13<<2)|2,{52,73,0}}, +/* 27431 */ {(13<<2)|2,{52,73,0}}, +/* 27432 */ {(13<<2)|2,{52,74,0}}, +/* 27433 */ {(13<<2)|2,{52,74,0}}, +/* 27434 */ {(13<<2)|2,{52,74,0}}, +/* 27435 */ {(13<<2)|2,{52,74,0}}, +/* 27436 */ {(13<<2)|2,{52,74,0}}, +/* 27437 */ {(13<<2)|2,{52,74,0}}, +/* 27438 */ {(13<<2)|2,{52,74,0}}, +/* 27439 */ {(13<<2)|2,{52,74,0}}, +/* 27440 */ {(13<<2)|2,{52,75,0}}, +/* 27441 */ {(13<<2)|2,{52,75,0}}, +/* 27442 */ {(13<<2)|2,{52,75,0}}, +/* 27443 */ {(13<<2)|2,{52,75,0}}, +/* 27444 */ {(13<<2)|2,{52,75,0}}, +/* 27445 */ {(13<<2)|2,{52,75,0}}, +/* 27446 */ {(13<<2)|2,{52,75,0}}, +/* 27447 */ {(13<<2)|2,{52,75,0}}, +/* 27448 */ {(13<<2)|2,{52,76,0}}, +/* 27449 */ {(13<<2)|2,{52,76,0}}, +/* 27450 */ {(13<<2)|2,{52,76,0}}, +/* 27451 */ {(13<<2)|2,{52,76,0}}, +/* 27452 */ {(13<<2)|2,{52,76,0}}, +/* 27453 */ {(13<<2)|2,{52,76,0}}, +/* 27454 */ {(13<<2)|2,{52,76,0}}, +/* 27455 */ {(13<<2)|2,{52,76,0}}, +/* 27456 */ {(13<<2)|2,{52,77,0}}, +/* 27457 */ {(13<<2)|2,{52,77,0}}, +/* 27458 */ {(13<<2)|2,{52,77,0}}, +/* 27459 */ {(13<<2)|2,{52,77,0}}, +/* 27460 */ {(13<<2)|2,{52,77,0}}, +/* 27461 */ {(13<<2)|2,{52,77,0}}, +/* 27462 */ {(13<<2)|2,{52,77,0}}, +/* 27463 */ {(13<<2)|2,{52,77,0}}, +/* 27464 */ {(13<<2)|2,{52,78,0}}, +/* 27465 */ {(13<<2)|2,{52,78,0}}, +/* 27466 */ {(13<<2)|2,{52,78,0}}, +/* 27467 */ {(13<<2)|2,{52,78,0}}, +/* 27468 */ {(13<<2)|2,{52,78,0}}, +/* 27469 */ {(13<<2)|2,{52,78,0}}, +/* 27470 */ {(13<<2)|2,{52,78,0}}, +/* 27471 */ {(13<<2)|2,{52,78,0}}, +/* 27472 */ {(13<<2)|2,{52,79,0}}, +/* 27473 */ {(13<<2)|2,{52,79,0}}, +/* 27474 */ {(13<<2)|2,{52,79,0}}, +/* 27475 */ {(13<<2)|2,{52,79,0}}, +/* 27476 */ {(13<<2)|2,{52,79,0}}, +/* 27477 */ {(13<<2)|2,{52,79,0}}, +/* 27478 */ {(13<<2)|2,{52,79,0}}, +/* 27479 */ {(13<<2)|2,{52,79,0}}, +/* 27480 */ {(13<<2)|2,{52,80,0}}, +/* 27481 */ {(13<<2)|2,{52,80,0}}, +/* 27482 */ {(13<<2)|2,{52,80,0}}, +/* 27483 */ {(13<<2)|2,{52,80,0}}, +/* 27484 */ {(13<<2)|2,{52,80,0}}, +/* 27485 */ {(13<<2)|2,{52,80,0}}, +/* 27486 */ {(13<<2)|2,{52,80,0}}, +/* 27487 */ {(13<<2)|2,{52,80,0}}, +/* 27488 */ {(13<<2)|2,{52,81,0}}, +/* 27489 */ {(13<<2)|2,{52,81,0}}, +/* 27490 */ {(13<<2)|2,{52,81,0}}, +/* 27491 */ {(13<<2)|2,{52,81,0}}, +/* 27492 */ {(13<<2)|2,{52,81,0}}, +/* 27493 */ {(13<<2)|2,{52,81,0}}, +/* 27494 */ {(13<<2)|2,{52,81,0}}, +/* 27495 */ {(13<<2)|2,{52,81,0}}, +/* 27496 */ {(13<<2)|2,{52,82,0}}, +/* 27497 */ {(13<<2)|2,{52,82,0}}, +/* 27498 */ {(13<<2)|2,{52,82,0}}, +/* 27499 */ {(13<<2)|2,{52,82,0}}, +/* 27500 */ {(13<<2)|2,{52,82,0}}, +/* 27501 */ {(13<<2)|2,{52,82,0}}, +/* 27502 */ {(13<<2)|2,{52,82,0}}, +/* 27503 */ {(13<<2)|2,{52,82,0}}, +/* 27504 */ {(13<<2)|2,{52,83,0}}, +/* 27505 */ {(13<<2)|2,{52,83,0}}, +/* 27506 */ {(13<<2)|2,{52,83,0}}, +/* 27507 */ {(13<<2)|2,{52,83,0}}, +/* 27508 */ {(13<<2)|2,{52,83,0}}, +/* 27509 */ {(13<<2)|2,{52,83,0}}, +/* 27510 */ {(13<<2)|2,{52,83,0}}, +/* 27511 */ {(13<<2)|2,{52,83,0}}, +/* 27512 */ {(13<<2)|2,{52,84,0}}, +/* 27513 */ {(13<<2)|2,{52,84,0}}, +/* 27514 */ {(13<<2)|2,{52,84,0}}, +/* 27515 */ {(13<<2)|2,{52,84,0}}, +/* 27516 */ {(13<<2)|2,{52,84,0}}, +/* 27517 */ {(13<<2)|2,{52,84,0}}, +/* 27518 */ {(13<<2)|2,{52,84,0}}, +/* 27519 */ {(13<<2)|2,{52,84,0}}, +/* 27520 */ {(13<<2)|2,{52,85,0}}, +/* 27521 */ {(13<<2)|2,{52,85,0}}, +/* 27522 */ {(13<<2)|2,{52,85,0}}, +/* 27523 */ {(13<<2)|2,{52,85,0}}, +/* 27524 */ {(13<<2)|2,{52,85,0}}, +/* 27525 */ {(13<<2)|2,{52,85,0}}, +/* 27526 */ {(13<<2)|2,{52,85,0}}, +/* 27527 */ {(13<<2)|2,{52,85,0}}, +/* 27528 */ {(13<<2)|2,{52,86,0}}, +/* 27529 */ {(13<<2)|2,{52,86,0}}, +/* 27530 */ {(13<<2)|2,{52,86,0}}, +/* 27531 */ {(13<<2)|2,{52,86,0}}, +/* 27532 */ {(13<<2)|2,{52,86,0}}, +/* 27533 */ {(13<<2)|2,{52,86,0}}, +/* 27534 */ {(13<<2)|2,{52,86,0}}, +/* 27535 */ {(13<<2)|2,{52,86,0}}, +/* 27536 */ {(13<<2)|2,{52,87,0}}, +/* 27537 */ {(13<<2)|2,{52,87,0}}, +/* 27538 */ {(13<<2)|2,{52,87,0}}, +/* 27539 */ {(13<<2)|2,{52,87,0}}, +/* 27540 */ {(13<<2)|2,{52,87,0}}, +/* 27541 */ {(13<<2)|2,{52,87,0}}, +/* 27542 */ {(13<<2)|2,{52,87,0}}, +/* 27543 */ {(13<<2)|2,{52,87,0}}, +/* 27544 */ {(13<<2)|2,{52,89,0}}, +/* 27545 */ {(13<<2)|2,{52,89,0}}, +/* 27546 */ {(13<<2)|2,{52,89,0}}, +/* 27547 */ {(13<<2)|2,{52,89,0}}, +/* 27548 */ {(13<<2)|2,{52,89,0}}, +/* 27549 */ {(13<<2)|2,{52,89,0}}, +/* 27550 */ {(13<<2)|2,{52,89,0}}, +/* 27551 */ {(13<<2)|2,{52,89,0}}, +/* 27552 */ {(13<<2)|2,{52,106,0}}, +/* 27553 */ {(13<<2)|2,{52,106,0}}, +/* 27554 */ {(13<<2)|2,{52,106,0}}, +/* 27555 */ {(13<<2)|2,{52,106,0}}, +/* 27556 */ {(13<<2)|2,{52,106,0}}, +/* 27557 */ {(13<<2)|2,{52,106,0}}, +/* 27558 */ {(13<<2)|2,{52,106,0}}, +/* 27559 */ {(13<<2)|2,{52,106,0}}, +/* 27560 */ {(13<<2)|2,{52,107,0}}, +/* 27561 */ {(13<<2)|2,{52,107,0}}, +/* 27562 */ {(13<<2)|2,{52,107,0}}, +/* 27563 */ {(13<<2)|2,{52,107,0}}, +/* 27564 */ {(13<<2)|2,{52,107,0}}, +/* 27565 */ {(13<<2)|2,{52,107,0}}, +/* 27566 */ {(13<<2)|2,{52,107,0}}, +/* 27567 */ {(13<<2)|2,{52,107,0}}, +/* 27568 */ {(13<<2)|2,{52,113,0}}, +/* 27569 */ {(13<<2)|2,{52,113,0}}, +/* 27570 */ {(13<<2)|2,{52,113,0}}, +/* 27571 */ {(13<<2)|2,{52,113,0}}, +/* 27572 */ {(13<<2)|2,{52,113,0}}, +/* 27573 */ {(13<<2)|2,{52,113,0}}, +/* 27574 */ {(13<<2)|2,{52,113,0}}, +/* 27575 */ {(13<<2)|2,{52,113,0}}, +/* 27576 */ {(13<<2)|2,{52,118,0}}, +/* 27577 */ {(13<<2)|2,{52,118,0}}, +/* 27578 */ {(13<<2)|2,{52,118,0}}, +/* 27579 */ {(13<<2)|2,{52,118,0}}, +/* 27580 */ {(13<<2)|2,{52,118,0}}, +/* 27581 */ {(13<<2)|2,{52,118,0}}, +/* 27582 */ {(13<<2)|2,{52,118,0}}, +/* 27583 */ {(13<<2)|2,{52,118,0}}, +/* 27584 */ {(13<<2)|2,{52,119,0}}, +/* 27585 */ {(13<<2)|2,{52,119,0}}, +/* 27586 */ {(13<<2)|2,{52,119,0}}, +/* 27587 */ {(13<<2)|2,{52,119,0}}, +/* 27588 */ {(13<<2)|2,{52,119,0}}, +/* 27589 */ {(13<<2)|2,{52,119,0}}, +/* 27590 */ {(13<<2)|2,{52,119,0}}, +/* 27591 */ {(13<<2)|2,{52,119,0}}, +/* 27592 */ {(13<<2)|2,{52,120,0}}, +/* 27593 */ {(13<<2)|2,{52,120,0}}, +/* 27594 */ {(13<<2)|2,{52,120,0}}, +/* 27595 */ {(13<<2)|2,{52,120,0}}, +/* 27596 */ {(13<<2)|2,{52,120,0}}, +/* 27597 */ {(13<<2)|2,{52,120,0}}, +/* 27598 */ {(13<<2)|2,{52,120,0}}, +/* 27599 */ {(13<<2)|2,{52,120,0}}, +/* 27600 */ {(13<<2)|2,{52,121,0}}, +/* 27601 */ {(13<<2)|2,{52,121,0}}, +/* 27602 */ {(13<<2)|2,{52,121,0}}, +/* 27603 */ {(13<<2)|2,{52,121,0}}, +/* 27604 */ {(13<<2)|2,{52,121,0}}, +/* 27605 */ {(13<<2)|2,{52,121,0}}, +/* 27606 */ {(13<<2)|2,{52,121,0}}, +/* 27607 */ {(13<<2)|2,{52,121,0}}, +/* 27608 */ {(13<<2)|2,{52,122,0}}, +/* 27609 */ {(13<<2)|2,{52,122,0}}, +/* 27610 */ {(13<<2)|2,{52,122,0}}, +/* 27611 */ {(13<<2)|2,{52,122,0}}, +/* 27612 */ {(13<<2)|2,{52,122,0}}, +/* 27613 */ {(13<<2)|2,{52,122,0}}, +/* 27614 */ {(13<<2)|2,{52,122,0}}, +/* 27615 */ {(13<<2)|2,{52,122,0}}, +/* 27616 */ {(14<<2)|2,{52,38,0}}, +/* 27617 */ {(14<<2)|2,{52,38,0}}, +/* 27618 */ {(14<<2)|2,{52,38,0}}, +/* 27619 */ {(14<<2)|2,{52,38,0}}, +/* 27620 */ {(14<<2)|2,{52,42,0}}, +/* 27621 */ {(14<<2)|2,{52,42,0}}, +/* 27622 */ {(14<<2)|2,{52,42,0}}, +/* 27623 */ {(14<<2)|2,{52,42,0}}, +/* 27624 */ {(14<<2)|2,{52,44,0}}, +/* 27625 */ {(14<<2)|2,{52,44,0}}, +/* 27626 */ {(14<<2)|2,{52,44,0}}, +/* 27627 */ {(14<<2)|2,{52,44,0}}, +/* 27628 */ {(14<<2)|2,{52,59,0}}, +/* 27629 */ {(14<<2)|2,{52,59,0}}, +/* 27630 */ {(14<<2)|2,{52,59,0}}, +/* 27631 */ {(14<<2)|2,{52,59,0}}, +/* 27632 */ {(14<<2)|2,{52,88,0}}, +/* 27633 */ {(14<<2)|2,{52,88,0}}, +/* 27634 */ {(14<<2)|2,{52,88,0}}, +/* 27635 */ {(14<<2)|2,{52,88,0}}, +/* 27636 */ {(14<<2)|2,{52,90,0}}, +/* 27637 */ {(14<<2)|2,{52,90,0}}, +/* 27638 */ {(14<<2)|2,{52,90,0}}, +/* 27639 */ {(14<<2)|2,{52,90,0}}, +/* 27640 */ {(16<<2)|2,{52,33,0}}, +/* 27641 */ {(16<<2)|2,{52,34,0}}, +/* 27642 */ {(16<<2)|2,{52,40,0}}, +/* 27643 */ {(16<<2)|2,{52,41,0}}, +/* 27644 */ {(16<<2)|2,{52,63,0}}, +/* 27645 */ {(6<<2)|1,{52,0,0}}, +/* 27646 */ {(6<<2)|1,{52,0,0}}, +/* 27647 */ {(6<<2)|1,{52,0,0}}, +/* 27648 */ {(16<<2)|3,{53,48,48}}, +/* 27649 */ {(16<<2)|3,{53,48,49}}, +/* 27650 */ {(16<<2)|3,{53,48,50}}, +/* 27651 */ {(16<<2)|3,{53,48,97}}, +/* 27652 */ {(16<<2)|3,{53,48,99}}, +/* 27653 */ {(16<<2)|3,{53,48,101}}, +/* 27654 */ {(16<<2)|3,{53,48,105}}, +/* 27655 */ {(16<<2)|3,{53,48,111}}, +/* 27656 */ {(16<<2)|3,{53,48,115}}, +/* 27657 */ {(16<<2)|3,{53,48,116}}, +/* 27658 */ {(11<<2)|2,{53,48,0}}, +/* 27659 */ {(11<<2)|2,{53,48,0}}, +/* 27660 */ {(11<<2)|2,{53,48,0}}, +/* 27661 */ {(11<<2)|2,{53,48,0}}, +/* 27662 */ {(11<<2)|2,{53,48,0}}, +/* 27663 */ {(11<<2)|2,{53,48,0}}, +/* 27664 */ {(11<<2)|2,{53,48,0}}, +/* 27665 */ {(11<<2)|2,{53,48,0}}, +/* 27666 */ {(11<<2)|2,{53,48,0}}, +/* 27667 */ {(11<<2)|2,{53,48,0}}, +/* 27668 */ {(11<<2)|2,{53,48,0}}, +/* 27669 */ {(11<<2)|2,{53,48,0}}, +/* 27670 */ {(11<<2)|2,{53,48,0}}, +/* 27671 */ {(11<<2)|2,{53,48,0}}, +/* 27672 */ {(11<<2)|2,{53,48,0}}, +/* 27673 */ {(11<<2)|2,{53,48,0}}, +/* 27674 */ {(11<<2)|2,{53,48,0}}, +/* 27675 */ {(11<<2)|2,{53,48,0}}, +/* 27676 */ {(11<<2)|2,{53,48,0}}, +/* 27677 */ {(11<<2)|2,{53,48,0}}, +/* 27678 */ {(11<<2)|2,{53,48,0}}, +/* 27679 */ {(11<<2)|2,{53,48,0}}, +/* 27680 */ {(16<<2)|3,{53,49,48}}, +/* 27681 */ {(16<<2)|3,{53,49,49}}, +/* 27682 */ {(16<<2)|3,{53,49,50}}, +/* 27683 */ {(16<<2)|3,{53,49,97}}, +/* 27684 */ {(16<<2)|3,{53,49,99}}, +/* 27685 */ {(16<<2)|3,{53,49,101}}, +/* 27686 */ {(16<<2)|3,{53,49,105}}, +/* 27687 */ {(16<<2)|3,{53,49,111}}, +/* 27688 */ {(16<<2)|3,{53,49,115}}, +/* 27689 */ {(16<<2)|3,{53,49,116}}, +/* 27690 */ {(11<<2)|2,{53,49,0}}, +/* 27691 */ {(11<<2)|2,{53,49,0}}, +/* 27692 */ {(11<<2)|2,{53,49,0}}, +/* 27693 */ {(11<<2)|2,{53,49,0}}, +/* 27694 */ {(11<<2)|2,{53,49,0}}, +/* 27695 */ {(11<<2)|2,{53,49,0}}, +/* 27696 */ {(11<<2)|2,{53,49,0}}, +/* 27697 */ {(11<<2)|2,{53,49,0}}, +/* 27698 */ {(11<<2)|2,{53,49,0}}, +/* 27699 */ {(11<<2)|2,{53,49,0}}, +/* 27700 */ {(11<<2)|2,{53,49,0}}, +/* 27701 */ {(11<<2)|2,{53,49,0}}, +/* 27702 */ {(11<<2)|2,{53,49,0}}, +/* 27703 */ {(11<<2)|2,{53,49,0}}, +/* 27704 */ {(11<<2)|2,{53,49,0}}, +/* 27705 */ {(11<<2)|2,{53,49,0}}, +/* 27706 */ {(11<<2)|2,{53,49,0}}, +/* 27707 */ {(11<<2)|2,{53,49,0}}, +/* 27708 */ {(11<<2)|2,{53,49,0}}, +/* 27709 */ {(11<<2)|2,{53,49,0}}, +/* 27710 */ {(11<<2)|2,{53,49,0}}, +/* 27711 */ {(11<<2)|2,{53,49,0}}, +/* 27712 */ {(16<<2)|3,{53,50,48}}, +/* 27713 */ {(16<<2)|3,{53,50,49}}, +/* 27714 */ {(16<<2)|3,{53,50,50}}, +/* 27715 */ {(16<<2)|3,{53,50,97}}, +/* 27716 */ {(16<<2)|3,{53,50,99}}, +/* 27717 */ {(16<<2)|3,{53,50,101}}, +/* 27718 */ {(16<<2)|3,{53,50,105}}, +/* 27719 */ {(16<<2)|3,{53,50,111}}, +/* 27720 */ {(16<<2)|3,{53,50,115}}, +/* 27721 */ {(16<<2)|3,{53,50,116}}, +/* 27722 */ {(11<<2)|2,{53,50,0}}, +/* 27723 */ {(11<<2)|2,{53,50,0}}, +/* 27724 */ {(11<<2)|2,{53,50,0}}, +/* 27725 */ {(11<<2)|2,{53,50,0}}, +/* 27726 */ {(11<<2)|2,{53,50,0}}, +/* 27727 */ {(11<<2)|2,{53,50,0}}, +/* 27728 */ {(11<<2)|2,{53,50,0}}, +/* 27729 */ {(11<<2)|2,{53,50,0}}, +/* 27730 */ {(11<<2)|2,{53,50,0}}, +/* 27731 */ {(11<<2)|2,{53,50,0}}, +/* 27732 */ {(11<<2)|2,{53,50,0}}, +/* 27733 */ {(11<<2)|2,{53,50,0}}, +/* 27734 */ {(11<<2)|2,{53,50,0}}, +/* 27735 */ {(11<<2)|2,{53,50,0}}, +/* 27736 */ {(11<<2)|2,{53,50,0}}, +/* 27737 */ {(11<<2)|2,{53,50,0}}, +/* 27738 */ {(11<<2)|2,{53,50,0}}, +/* 27739 */ {(11<<2)|2,{53,50,0}}, +/* 27740 */ {(11<<2)|2,{53,50,0}}, +/* 27741 */ {(11<<2)|2,{53,50,0}}, +/* 27742 */ {(11<<2)|2,{53,50,0}}, +/* 27743 */ {(11<<2)|2,{53,50,0}}, +/* 27744 */ {(16<<2)|3,{53,97,48}}, +/* 27745 */ {(16<<2)|3,{53,97,49}}, +/* 27746 */ {(16<<2)|3,{53,97,50}}, +/* 27747 */ {(16<<2)|3,{53,97,97}}, +/* 27748 */ {(16<<2)|3,{53,97,99}}, +/* 27749 */ {(16<<2)|3,{53,97,101}}, +/* 27750 */ {(16<<2)|3,{53,97,105}}, +/* 27751 */ {(16<<2)|3,{53,97,111}}, +/* 27752 */ {(16<<2)|3,{53,97,115}}, +/* 27753 */ {(16<<2)|3,{53,97,116}}, +/* 27754 */ {(11<<2)|2,{53,97,0}}, +/* 27755 */ {(11<<2)|2,{53,97,0}}, +/* 27756 */ {(11<<2)|2,{53,97,0}}, +/* 27757 */ {(11<<2)|2,{53,97,0}}, +/* 27758 */ {(11<<2)|2,{53,97,0}}, +/* 27759 */ {(11<<2)|2,{53,97,0}}, +/* 27760 */ {(11<<2)|2,{53,97,0}}, +/* 27761 */ {(11<<2)|2,{53,97,0}}, +/* 27762 */ {(11<<2)|2,{53,97,0}}, +/* 27763 */ {(11<<2)|2,{53,97,0}}, +/* 27764 */ {(11<<2)|2,{53,97,0}}, +/* 27765 */ {(11<<2)|2,{53,97,0}}, +/* 27766 */ {(11<<2)|2,{53,97,0}}, +/* 27767 */ {(11<<2)|2,{53,97,0}}, +/* 27768 */ {(11<<2)|2,{53,97,0}}, +/* 27769 */ {(11<<2)|2,{53,97,0}}, +/* 27770 */ {(11<<2)|2,{53,97,0}}, +/* 27771 */ {(11<<2)|2,{53,97,0}}, +/* 27772 */ {(11<<2)|2,{53,97,0}}, +/* 27773 */ {(11<<2)|2,{53,97,0}}, +/* 27774 */ {(11<<2)|2,{53,97,0}}, +/* 27775 */ {(11<<2)|2,{53,97,0}}, +/* 27776 */ {(16<<2)|3,{53,99,48}}, +/* 27777 */ {(16<<2)|3,{53,99,49}}, +/* 27778 */ {(16<<2)|3,{53,99,50}}, +/* 27779 */ {(16<<2)|3,{53,99,97}}, +/* 27780 */ {(16<<2)|3,{53,99,99}}, +/* 27781 */ {(16<<2)|3,{53,99,101}}, +/* 27782 */ {(16<<2)|3,{53,99,105}}, +/* 27783 */ {(16<<2)|3,{53,99,111}}, +/* 27784 */ {(16<<2)|3,{53,99,115}}, +/* 27785 */ {(16<<2)|3,{53,99,116}}, +/* 27786 */ {(11<<2)|2,{53,99,0}}, +/* 27787 */ {(11<<2)|2,{53,99,0}}, +/* 27788 */ {(11<<2)|2,{53,99,0}}, +/* 27789 */ {(11<<2)|2,{53,99,0}}, +/* 27790 */ {(11<<2)|2,{53,99,0}}, +/* 27791 */ {(11<<2)|2,{53,99,0}}, +/* 27792 */ {(11<<2)|2,{53,99,0}}, +/* 27793 */ {(11<<2)|2,{53,99,0}}, +/* 27794 */ {(11<<2)|2,{53,99,0}}, +/* 27795 */ {(11<<2)|2,{53,99,0}}, +/* 27796 */ {(11<<2)|2,{53,99,0}}, +/* 27797 */ {(11<<2)|2,{53,99,0}}, +/* 27798 */ {(11<<2)|2,{53,99,0}}, +/* 27799 */ {(11<<2)|2,{53,99,0}}, +/* 27800 */ {(11<<2)|2,{53,99,0}}, +/* 27801 */ {(11<<2)|2,{53,99,0}}, +/* 27802 */ {(11<<2)|2,{53,99,0}}, +/* 27803 */ {(11<<2)|2,{53,99,0}}, +/* 27804 */ {(11<<2)|2,{53,99,0}}, +/* 27805 */ {(11<<2)|2,{53,99,0}}, +/* 27806 */ {(11<<2)|2,{53,99,0}}, +/* 27807 */ {(11<<2)|2,{53,99,0}}, +/* 27808 */ {(16<<2)|3,{53,101,48}}, +/* 27809 */ {(16<<2)|3,{53,101,49}}, +/* 27810 */ {(16<<2)|3,{53,101,50}}, +/* 27811 */ {(16<<2)|3,{53,101,97}}, +/* 27812 */ {(16<<2)|3,{53,101,99}}, +/* 27813 */ {(16<<2)|3,{53,101,101}}, +/* 27814 */ {(16<<2)|3,{53,101,105}}, +/* 27815 */ {(16<<2)|3,{53,101,111}}, +/* 27816 */ {(16<<2)|3,{53,101,115}}, +/* 27817 */ {(16<<2)|3,{53,101,116}}, +/* 27818 */ {(11<<2)|2,{53,101,0}}, +/* 27819 */ {(11<<2)|2,{53,101,0}}, +/* 27820 */ {(11<<2)|2,{53,101,0}}, +/* 27821 */ {(11<<2)|2,{53,101,0}}, +/* 27822 */ {(11<<2)|2,{53,101,0}}, +/* 27823 */ {(11<<2)|2,{53,101,0}}, +/* 27824 */ {(11<<2)|2,{53,101,0}}, +/* 27825 */ {(11<<2)|2,{53,101,0}}, +/* 27826 */ {(11<<2)|2,{53,101,0}}, +/* 27827 */ {(11<<2)|2,{53,101,0}}, +/* 27828 */ {(11<<2)|2,{53,101,0}}, +/* 27829 */ {(11<<2)|2,{53,101,0}}, +/* 27830 */ {(11<<2)|2,{53,101,0}}, +/* 27831 */ {(11<<2)|2,{53,101,0}}, +/* 27832 */ {(11<<2)|2,{53,101,0}}, +/* 27833 */ {(11<<2)|2,{53,101,0}}, +/* 27834 */ {(11<<2)|2,{53,101,0}}, +/* 27835 */ {(11<<2)|2,{53,101,0}}, +/* 27836 */ {(11<<2)|2,{53,101,0}}, +/* 27837 */ {(11<<2)|2,{53,101,0}}, +/* 27838 */ {(11<<2)|2,{53,101,0}}, +/* 27839 */ {(11<<2)|2,{53,101,0}}, +/* 27840 */ {(16<<2)|3,{53,105,48}}, +/* 27841 */ {(16<<2)|3,{53,105,49}}, +/* 27842 */ {(16<<2)|3,{53,105,50}}, +/* 27843 */ {(16<<2)|3,{53,105,97}}, +/* 27844 */ {(16<<2)|3,{53,105,99}}, +/* 27845 */ {(16<<2)|3,{53,105,101}}, +/* 27846 */ {(16<<2)|3,{53,105,105}}, +/* 27847 */ {(16<<2)|3,{53,105,111}}, +/* 27848 */ {(16<<2)|3,{53,105,115}}, +/* 27849 */ {(16<<2)|3,{53,105,116}}, +/* 27850 */ {(11<<2)|2,{53,105,0}}, +/* 27851 */ {(11<<2)|2,{53,105,0}}, +/* 27852 */ {(11<<2)|2,{53,105,0}}, +/* 27853 */ {(11<<2)|2,{53,105,0}}, +/* 27854 */ {(11<<2)|2,{53,105,0}}, +/* 27855 */ {(11<<2)|2,{53,105,0}}, +/* 27856 */ {(11<<2)|2,{53,105,0}}, +/* 27857 */ {(11<<2)|2,{53,105,0}}, +/* 27858 */ {(11<<2)|2,{53,105,0}}, +/* 27859 */ {(11<<2)|2,{53,105,0}}, +/* 27860 */ {(11<<2)|2,{53,105,0}}, +/* 27861 */ {(11<<2)|2,{53,105,0}}, +/* 27862 */ {(11<<2)|2,{53,105,0}}, +/* 27863 */ {(11<<2)|2,{53,105,0}}, +/* 27864 */ {(11<<2)|2,{53,105,0}}, +/* 27865 */ {(11<<2)|2,{53,105,0}}, +/* 27866 */ {(11<<2)|2,{53,105,0}}, +/* 27867 */ {(11<<2)|2,{53,105,0}}, +/* 27868 */ {(11<<2)|2,{53,105,0}}, +/* 27869 */ {(11<<2)|2,{53,105,0}}, +/* 27870 */ {(11<<2)|2,{53,105,0}}, +/* 27871 */ {(11<<2)|2,{53,105,0}}, +/* 27872 */ {(16<<2)|3,{53,111,48}}, +/* 27873 */ {(16<<2)|3,{53,111,49}}, +/* 27874 */ {(16<<2)|3,{53,111,50}}, +/* 27875 */ {(16<<2)|3,{53,111,97}}, +/* 27876 */ {(16<<2)|3,{53,111,99}}, +/* 27877 */ {(16<<2)|3,{53,111,101}}, +/* 27878 */ {(16<<2)|3,{53,111,105}}, +/* 27879 */ {(16<<2)|3,{53,111,111}}, +/* 27880 */ {(16<<2)|3,{53,111,115}}, +/* 27881 */ {(16<<2)|3,{53,111,116}}, +/* 27882 */ {(11<<2)|2,{53,111,0}}, +/* 27883 */ {(11<<2)|2,{53,111,0}}, +/* 27884 */ {(11<<2)|2,{53,111,0}}, +/* 27885 */ {(11<<2)|2,{53,111,0}}, +/* 27886 */ {(11<<2)|2,{53,111,0}}, +/* 27887 */ {(11<<2)|2,{53,111,0}}, +/* 27888 */ {(11<<2)|2,{53,111,0}}, +/* 27889 */ {(11<<2)|2,{53,111,0}}, +/* 27890 */ {(11<<2)|2,{53,111,0}}, +/* 27891 */ {(11<<2)|2,{53,111,0}}, +/* 27892 */ {(11<<2)|2,{53,111,0}}, +/* 27893 */ {(11<<2)|2,{53,111,0}}, +/* 27894 */ {(11<<2)|2,{53,111,0}}, +/* 27895 */ {(11<<2)|2,{53,111,0}}, +/* 27896 */ {(11<<2)|2,{53,111,0}}, +/* 27897 */ {(11<<2)|2,{53,111,0}}, +/* 27898 */ {(11<<2)|2,{53,111,0}}, +/* 27899 */ {(11<<2)|2,{53,111,0}}, +/* 27900 */ {(11<<2)|2,{53,111,0}}, +/* 27901 */ {(11<<2)|2,{53,111,0}}, +/* 27902 */ {(11<<2)|2,{53,111,0}}, +/* 27903 */ {(11<<2)|2,{53,111,0}}, +/* 27904 */ {(16<<2)|3,{53,115,48}}, +/* 27905 */ {(16<<2)|3,{53,115,49}}, +/* 27906 */ {(16<<2)|3,{53,115,50}}, +/* 27907 */ {(16<<2)|3,{53,115,97}}, +/* 27908 */ {(16<<2)|3,{53,115,99}}, +/* 27909 */ {(16<<2)|3,{53,115,101}}, +/* 27910 */ {(16<<2)|3,{53,115,105}}, +/* 27911 */ {(16<<2)|3,{53,115,111}}, +/* 27912 */ {(16<<2)|3,{53,115,115}}, +/* 27913 */ {(16<<2)|3,{53,115,116}}, +/* 27914 */ {(11<<2)|2,{53,115,0}}, +/* 27915 */ {(11<<2)|2,{53,115,0}}, +/* 27916 */ {(11<<2)|2,{53,115,0}}, +/* 27917 */ {(11<<2)|2,{53,115,0}}, +/* 27918 */ {(11<<2)|2,{53,115,0}}, +/* 27919 */ {(11<<2)|2,{53,115,0}}, +/* 27920 */ {(11<<2)|2,{53,115,0}}, +/* 27921 */ {(11<<2)|2,{53,115,0}}, +/* 27922 */ {(11<<2)|2,{53,115,0}}, +/* 27923 */ {(11<<2)|2,{53,115,0}}, +/* 27924 */ {(11<<2)|2,{53,115,0}}, +/* 27925 */ {(11<<2)|2,{53,115,0}}, +/* 27926 */ {(11<<2)|2,{53,115,0}}, +/* 27927 */ {(11<<2)|2,{53,115,0}}, +/* 27928 */ {(11<<2)|2,{53,115,0}}, +/* 27929 */ {(11<<2)|2,{53,115,0}}, +/* 27930 */ {(11<<2)|2,{53,115,0}}, +/* 27931 */ {(11<<2)|2,{53,115,0}}, +/* 27932 */ {(11<<2)|2,{53,115,0}}, +/* 27933 */ {(11<<2)|2,{53,115,0}}, +/* 27934 */ {(11<<2)|2,{53,115,0}}, +/* 27935 */ {(11<<2)|2,{53,115,0}}, +/* 27936 */ {(16<<2)|3,{53,116,48}}, +/* 27937 */ {(16<<2)|3,{53,116,49}}, +/* 27938 */ {(16<<2)|3,{53,116,50}}, +/* 27939 */ {(16<<2)|3,{53,116,97}}, +/* 27940 */ {(16<<2)|3,{53,116,99}}, +/* 27941 */ {(16<<2)|3,{53,116,101}}, +/* 27942 */ {(16<<2)|3,{53,116,105}}, +/* 27943 */ {(16<<2)|3,{53,116,111}}, +/* 27944 */ {(16<<2)|3,{53,116,115}}, +/* 27945 */ {(16<<2)|3,{53,116,116}}, +/* 27946 */ {(11<<2)|2,{53,116,0}}, +/* 27947 */ {(11<<2)|2,{53,116,0}}, +/* 27948 */ {(11<<2)|2,{53,116,0}}, +/* 27949 */ {(11<<2)|2,{53,116,0}}, +/* 27950 */ {(11<<2)|2,{53,116,0}}, +/* 27951 */ {(11<<2)|2,{53,116,0}}, +/* 27952 */ {(11<<2)|2,{53,116,0}}, +/* 27953 */ {(11<<2)|2,{53,116,0}}, +/* 27954 */ {(11<<2)|2,{53,116,0}}, +/* 27955 */ {(11<<2)|2,{53,116,0}}, +/* 27956 */ {(11<<2)|2,{53,116,0}}, +/* 27957 */ {(11<<2)|2,{53,116,0}}, +/* 27958 */ {(11<<2)|2,{53,116,0}}, +/* 27959 */ {(11<<2)|2,{53,116,0}}, +/* 27960 */ {(11<<2)|2,{53,116,0}}, +/* 27961 */ {(11<<2)|2,{53,116,0}}, +/* 27962 */ {(11<<2)|2,{53,116,0}}, +/* 27963 */ {(11<<2)|2,{53,116,0}}, +/* 27964 */ {(11<<2)|2,{53,116,0}}, +/* 27965 */ {(11<<2)|2,{53,116,0}}, +/* 27966 */ {(11<<2)|2,{53,116,0}}, +/* 27967 */ {(11<<2)|2,{53,116,0}}, +/* 27968 */ {(12<<2)|2,{53,32,0}}, +/* 27969 */ {(12<<2)|2,{53,32,0}}, +/* 27970 */ {(12<<2)|2,{53,32,0}}, +/* 27971 */ {(12<<2)|2,{53,32,0}}, +/* 27972 */ {(12<<2)|2,{53,32,0}}, +/* 27973 */ {(12<<2)|2,{53,32,0}}, +/* 27974 */ {(12<<2)|2,{53,32,0}}, +/* 27975 */ {(12<<2)|2,{53,32,0}}, +/* 27976 */ {(12<<2)|2,{53,32,0}}, +/* 27977 */ {(12<<2)|2,{53,32,0}}, +/* 27978 */ {(12<<2)|2,{53,32,0}}, +/* 27979 */ {(12<<2)|2,{53,32,0}}, +/* 27980 */ {(12<<2)|2,{53,32,0}}, +/* 27981 */ {(12<<2)|2,{53,32,0}}, +/* 27982 */ {(12<<2)|2,{53,32,0}}, +/* 27983 */ {(12<<2)|2,{53,32,0}}, +/* 27984 */ {(12<<2)|2,{53,37,0}}, +/* 27985 */ {(12<<2)|2,{53,37,0}}, +/* 27986 */ {(12<<2)|2,{53,37,0}}, +/* 27987 */ {(12<<2)|2,{53,37,0}}, +/* 27988 */ {(12<<2)|2,{53,37,0}}, +/* 27989 */ {(12<<2)|2,{53,37,0}}, +/* 27990 */ {(12<<2)|2,{53,37,0}}, +/* 27991 */ {(12<<2)|2,{53,37,0}}, +/* 27992 */ {(12<<2)|2,{53,37,0}}, +/* 27993 */ {(12<<2)|2,{53,37,0}}, +/* 27994 */ {(12<<2)|2,{53,37,0}}, +/* 27995 */ {(12<<2)|2,{53,37,0}}, +/* 27996 */ {(12<<2)|2,{53,37,0}}, +/* 27997 */ {(12<<2)|2,{53,37,0}}, +/* 27998 */ {(12<<2)|2,{53,37,0}}, +/* 27999 */ {(12<<2)|2,{53,37,0}}, +/* 28000 */ {(12<<2)|2,{53,45,0}}, +/* 28001 */ {(12<<2)|2,{53,45,0}}, +/* 28002 */ {(12<<2)|2,{53,45,0}}, +/* 28003 */ {(12<<2)|2,{53,45,0}}, +/* 28004 */ {(12<<2)|2,{53,45,0}}, +/* 28005 */ {(12<<2)|2,{53,45,0}}, +/* 28006 */ {(12<<2)|2,{53,45,0}}, +/* 28007 */ {(12<<2)|2,{53,45,0}}, +/* 28008 */ {(12<<2)|2,{53,45,0}}, +/* 28009 */ {(12<<2)|2,{53,45,0}}, +/* 28010 */ {(12<<2)|2,{53,45,0}}, +/* 28011 */ {(12<<2)|2,{53,45,0}}, +/* 28012 */ {(12<<2)|2,{53,45,0}}, +/* 28013 */ {(12<<2)|2,{53,45,0}}, +/* 28014 */ {(12<<2)|2,{53,45,0}}, +/* 28015 */ {(12<<2)|2,{53,45,0}}, +/* 28016 */ {(12<<2)|2,{53,46,0}}, +/* 28017 */ {(12<<2)|2,{53,46,0}}, +/* 28018 */ {(12<<2)|2,{53,46,0}}, +/* 28019 */ {(12<<2)|2,{53,46,0}}, +/* 28020 */ {(12<<2)|2,{53,46,0}}, +/* 28021 */ {(12<<2)|2,{53,46,0}}, +/* 28022 */ {(12<<2)|2,{53,46,0}}, +/* 28023 */ {(12<<2)|2,{53,46,0}}, +/* 28024 */ {(12<<2)|2,{53,46,0}}, +/* 28025 */ {(12<<2)|2,{53,46,0}}, +/* 28026 */ {(12<<2)|2,{53,46,0}}, +/* 28027 */ {(12<<2)|2,{53,46,0}}, +/* 28028 */ {(12<<2)|2,{53,46,0}}, +/* 28029 */ {(12<<2)|2,{53,46,0}}, +/* 28030 */ {(12<<2)|2,{53,46,0}}, +/* 28031 */ {(12<<2)|2,{53,46,0}}, +/* 28032 */ {(12<<2)|2,{53,47,0}}, +/* 28033 */ {(12<<2)|2,{53,47,0}}, +/* 28034 */ {(12<<2)|2,{53,47,0}}, +/* 28035 */ {(12<<2)|2,{53,47,0}}, +/* 28036 */ {(12<<2)|2,{53,47,0}}, +/* 28037 */ {(12<<2)|2,{53,47,0}}, +/* 28038 */ {(12<<2)|2,{53,47,0}}, +/* 28039 */ {(12<<2)|2,{53,47,0}}, +/* 28040 */ {(12<<2)|2,{53,47,0}}, +/* 28041 */ {(12<<2)|2,{53,47,0}}, +/* 28042 */ {(12<<2)|2,{53,47,0}}, +/* 28043 */ {(12<<2)|2,{53,47,0}}, +/* 28044 */ {(12<<2)|2,{53,47,0}}, +/* 28045 */ {(12<<2)|2,{53,47,0}}, +/* 28046 */ {(12<<2)|2,{53,47,0}}, +/* 28047 */ {(12<<2)|2,{53,47,0}}, +/* 28048 */ {(12<<2)|2,{53,51,0}}, +/* 28049 */ {(12<<2)|2,{53,51,0}}, +/* 28050 */ {(12<<2)|2,{53,51,0}}, +/* 28051 */ {(12<<2)|2,{53,51,0}}, +/* 28052 */ {(12<<2)|2,{53,51,0}}, +/* 28053 */ {(12<<2)|2,{53,51,0}}, +/* 28054 */ {(12<<2)|2,{53,51,0}}, +/* 28055 */ {(12<<2)|2,{53,51,0}}, +/* 28056 */ {(12<<2)|2,{53,51,0}}, +/* 28057 */ {(12<<2)|2,{53,51,0}}, +/* 28058 */ {(12<<2)|2,{53,51,0}}, +/* 28059 */ {(12<<2)|2,{53,51,0}}, +/* 28060 */ {(12<<2)|2,{53,51,0}}, +/* 28061 */ {(12<<2)|2,{53,51,0}}, +/* 28062 */ {(12<<2)|2,{53,51,0}}, +/* 28063 */ {(12<<2)|2,{53,51,0}}, +/* 28064 */ {(12<<2)|2,{53,52,0}}, +/* 28065 */ {(12<<2)|2,{53,52,0}}, +/* 28066 */ {(12<<2)|2,{53,52,0}}, +/* 28067 */ {(12<<2)|2,{53,52,0}}, +/* 28068 */ {(12<<2)|2,{53,52,0}}, +/* 28069 */ {(12<<2)|2,{53,52,0}}, +/* 28070 */ {(12<<2)|2,{53,52,0}}, +/* 28071 */ {(12<<2)|2,{53,52,0}}, +/* 28072 */ {(12<<2)|2,{53,52,0}}, +/* 28073 */ {(12<<2)|2,{53,52,0}}, +/* 28074 */ {(12<<2)|2,{53,52,0}}, +/* 28075 */ {(12<<2)|2,{53,52,0}}, +/* 28076 */ {(12<<2)|2,{53,52,0}}, +/* 28077 */ {(12<<2)|2,{53,52,0}}, +/* 28078 */ {(12<<2)|2,{53,52,0}}, +/* 28079 */ {(12<<2)|2,{53,52,0}}, +/* 28080 */ {(12<<2)|2,{53,53,0}}, +/* 28081 */ {(12<<2)|2,{53,53,0}}, +/* 28082 */ {(12<<2)|2,{53,53,0}}, +/* 28083 */ {(12<<2)|2,{53,53,0}}, +/* 28084 */ {(12<<2)|2,{53,53,0}}, +/* 28085 */ {(12<<2)|2,{53,53,0}}, +/* 28086 */ {(12<<2)|2,{53,53,0}}, +/* 28087 */ {(12<<2)|2,{53,53,0}}, +/* 28088 */ {(12<<2)|2,{53,53,0}}, +/* 28089 */ {(12<<2)|2,{53,53,0}}, +/* 28090 */ {(12<<2)|2,{53,53,0}}, +/* 28091 */ {(12<<2)|2,{53,53,0}}, +/* 28092 */ {(12<<2)|2,{53,53,0}}, +/* 28093 */ {(12<<2)|2,{53,53,0}}, +/* 28094 */ {(12<<2)|2,{53,53,0}}, +/* 28095 */ {(12<<2)|2,{53,53,0}}, +/* 28096 */ {(12<<2)|2,{53,54,0}}, +/* 28097 */ {(12<<2)|2,{53,54,0}}, +/* 28098 */ {(12<<2)|2,{53,54,0}}, +/* 28099 */ {(12<<2)|2,{53,54,0}}, +/* 28100 */ {(12<<2)|2,{53,54,0}}, +/* 28101 */ {(12<<2)|2,{53,54,0}}, +/* 28102 */ {(12<<2)|2,{53,54,0}}, +/* 28103 */ {(12<<2)|2,{53,54,0}}, +/* 28104 */ {(12<<2)|2,{53,54,0}}, +/* 28105 */ {(12<<2)|2,{53,54,0}}, +/* 28106 */ {(12<<2)|2,{53,54,0}}, +/* 28107 */ {(12<<2)|2,{53,54,0}}, +/* 28108 */ {(12<<2)|2,{53,54,0}}, +/* 28109 */ {(12<<2)|2,{53,54,0}}, +/* 28110 */ {(12<<2)|2,{53,54,0}}, +/* 28111 */ {(12<<2)|2,{53,54,0}}, +/* 28112 */ {(12<<2)|2,{53,55,0}}, +/* 28113 */ {(12<<2)|2,{53,55,0}}, +/* 28114 */ {(12<<2)|2,{53,55,0}}, +/* 28115 */ {(12<<2)|2,{53,55,0}}, +/* 28116 */ {(12<<2)|2,{53,55,0}}, +/* 28117 */ {(12<<2)|2,{53,55,0}}, +/* 28118 */ {(12<<2)|2,{53,55,0}}, +/* 28119 */ {(12<<2)|2,{53,55,0}}, +/* 28120 */ {(12<<2)|2,{53,55,0}}, +/* 28121 */ {(12<<2)|2,{53,55,0}}, +/* 28122 */ {(12<<2)|2,{53,55,0}}, +/* 28123 */ {(12<<2)|2,{53,55,0}}, +/* 28124 */ {(12<<2)|2,{53,55,0}}, +/* 28125 */ {(12<<2)|2,{53,55,0}}, +/* 28126 */ {(12<<2)|2,{53,55,0}}, +/* 28127 */ {(12<<2)|2,{53,55,0}}, +/* 28128 */ {(12<<2)|2,{53,56,0}}, +/* 28129 */ {(12<<2)|2,{53,56,0}}, +/* 28130 */ {(12<<2)|2,{53,56,0}}, +/* 28131 */ {(12<<2)|2,{53,56,0}}, +/* 28132 */ {(12<<2)|2,{53,56,0}}, +/* 28133 */ {(12<<2)|2,{53,56,0}}, +/* 28134 */ {(12<<2)|2,{53,56,0}}, +/* 28135 */ {(12<<2)|2,{53,56,0}}, +/* 28136 */ {(12<<2)|2,{53,56,0}}, +/* 28137 */ {(12<<2)|2,{53,56,0}}, +/* 28138 */ {(12<<2)|2,{53,56,0}}, +/* 28139 */ {(12<<2)|2,{53,56,0}}, +/* 28140 */ {(12<<2)|2,{53,56,0}}, +/* 28141 */ {(12<<2)|2,{53,56,0}}, +/* 28142 */ {(12<<2)|2,{53,56,0}}, +/* 28143 */ {(12<<2)|2,{53,56,0}}, +/* 28144 */ {(12<<2)|2,{53,57,0}}, +/* 28145 */ {(12<<2)|2,{53,57,0}}, +/* 28146 */ {(12<<2)|2,{53,57,0}}, +/* 28147 */ {(12<<2)|2,{53,57,0}}, +/* 28148 */ {(12<<2)|2,{53,57,0}}, +/* 28149 */ {(12<<2)|2,{53,57,0}}, +/* 28150 */ {(12<<2)|2,{53,57,0}}, +/* 28151 */ {(12<<2)|2,{53,57,0}}, +/* 28152 */ {(12<<2)|2,{53,57,0}}, +/* 28153 */ {(12<<2)|2,{53,57,0}}, +/* 28154 */ {(12<<2)|2,{53,57,0}}, +/* 28155 */ {(12<<2)|2,{53,57,0}}, +/* 28156 */ {(12<<2)|2,{53,57,0}}, +/* 28157 */ {(12<<2)|2,{53,57,0}}, +/* 28158 */ {(12<<2)|2,{53,57,0}}, +/* 28159 */ {(12<<2)|2,{53,57,0}}, +/* 28160 */ {(12<<2)|2,{53,61,0}}, +/* 28161 */ {(12<<2)|2,{53,61,0}}, +/* 28162 */ {(12<<2)|2,{53,61,0}}, +/* 28163 */ {(12<<2)|2,{53,61,0}}, +/* 28164 */ {(12<<2)|2,{53,61,0}}, +/* 28165 */ {(12<<2)|2,{53,61,0}}, +/* 28166 */ {(12<<2)|2,{53,61,0}}, +/* 28167 */ {(12<<2)|2,{53,61,0}}, +/* 28168 */ {(12<<2)|2,{53,61,0}}, +/* 28169 */ {(12<<2)|2,{53,61,0}}, +/* 28170 */ {(12<<2)|2,{53,61,0}}, +/* 28171 */ {(12<<2)|2,{53,61,0}}, +/* 28172 */ {(12<<2)|2,{53,61,0}}, +/* 28173 */ {(12<<2)|2,{53,61,0}}, +/* 28174 */ {(12<<2)|2,{53,61,0}}, +/* 28175 */ {(12<<2)|2,{53,61,0}}, +/* 28176 */ {(12<<2)|2,{53,65,0}}, +/* 28177 */ {(12<<2)|2,{53,65,0}}, +/* 28178 */ {(12<<2)|2,{53,65,0}}, +/* 28179 */ {(12<<2)|2,{53,65,0}}, +/* 28180 */ {(12<<2)|2,{53,65,0}}, +/* 28181 */ {(12<<2)|2,{53,65,0}}, +/* 28182 */ {(12<<2)|2,{53,65,0}}, +/* 28183 */ {(12<<2)|2,{53,65,0}}, +/* 28184 */ {(12<<2)|2,{53,65,0}}, +/* 28185 */ {(12<<2)|2,{53,65,0}}, +/* 28186 */ {(12<<2)|2,{53,65,0}}, +/* 28187 */ {(12<<2)|2,{53,65,0}}, +/* 28188 */ {(12<<2)|2,{53,65,0}}, +/* 28189 */ {(12<<2)|2,{53,65,0}}, +/* 28190 */ {(12<<2)|2,{53,65,0}}, +/* 28191 */ {(12<<2)|2,{53,65,0}}, +/* 28192 */ {(12<<2)|2,{53,95,0}}, +/* 28193 */ {(12<<2)|2,{53,95,0}}, +/* 28194 */ {(12<<2)|2,{53,95,0}}, +/* 28195 */ {(12<<2)|2,{53,95,0}}, +/* 28196 */ {(12<<2)|2,{53,95,0}}, +/* 28197 */ {(12<<2)|2,{53,95,0}}, +/* 28198 */ {(12<<2)|2,{53,95,0}}, +/* 28199 */ {(12<<2)|2,{53,95,0}}, +/* 28200 */ {(12<<2)|2,{53,95,0}}, +/* 28201 */ {(12<<2)|2,{53,95,0}}, +/* 28202 */ {(12<<2)|2,{53,95,0}}, +/* 28203 */ {(12<<2)|2,{53,95,0}}, +/* 28204 */ {(12<<2)|2,{53,95,0}}, +/* 28205 */ {(12<<2)|2,{53,95,0}}, +/* 28206 */ {(12<<2)|2,{53,95,0}}, +/* 28207 */ {(12<<2)|2,{53,95,0}}, +/* 28208 */ {(12<<2)|2,{53,98,0}}, +/* 28209 */ {(12<<2)|2,{53,98,0}}, +/* 28210 */ {(12<<2)|2,{53,98,0}}, +/* 28211 */ {(12<<2)|2,{53,98,0}}, +/* 28212 */ {(12<<2)|2,{53,98,0}}, +/* 28213 */ {(12<<2)|2,{53,98,0}}, +/* 28214 */ {(12<<2)|2,{53,98,0}}, +/* 28215 */ {(12<<2)|2,{53,98,0}}, +/* 28216 */ {(12<<2)|2,{53,98,0}}, +/* 28217 */ {(12<<2)|2,{53,98,0}}, +/* 28218 */ {(12<<2)|2,{53,98,0}}, +/* 28219 */ {(12<<2)|2,{53,98,0}}, +/* 28220 */ {(12<<2)|2,{53,98,0}}, +/* 28221 */ {(12<<2)|2,{53,98,0}}, +/* 28222 */ {(12<<2)|2,{53,98,0}}, +/* 28223 */ {(12<<2)|2,{53,98,0}}, +/* 28224 */ {(12<<2)|2,{53,100,0}}, +/* 28225 */ {(12<<2)|2,{53,100,0}}, +/* 28226 */ {(12<<2)|2,{53,100,0}}, +/* 28227 */ {(12<<2)|2,{53,100,0}}, +/* 28228 */ {(12<<2)|2,{53,100,0}}, +/* 28229 */ {(12<<2)|2,{53,100,0}}, +/* 28230 */ {(12<<2)|2,{53,100,0}}, +/* 28231 */ {(12<<2)|2,{53,100,0}}, +/* 28232 */ {(12<<2)|2,{53,100,0}}, +/* 28233 */ {(12<<2)|2,{53,100,0}}, +/* 28234 */ {(12<<2)|2,{53,100,0}}, +/* 28235 */ {(12<<2)|2,{53,100,0}}, +/* 28236 */ {(12<<2)|2,{53,100,0}}, +/* 28237 */ {(12<<2)|2,{53,100,0}}, +/* 28238 */ {(12<<2)|2,{53,100,0}}, +/* 28239 */ {(12<<2)|2,{53,100,0}}, +/* 28240 */ {(12<<2)|2,{53,102,0}}, +/* 28241 */ {(12<<2)|2,{53,102,0}}, +/* 28242 */ {(12<<2)|2,{53,102,0}}, +/* 28243 */ {(12<<2)|2,{53,102,0}}, +/* 28244 */ {(12<<2)|2,{53,102,0}}, +/* 28245 */ {(12<<2)|2,{53,102,0}}, +/* 28246 */ {(12<<2)|2,{53,102,0}}, +/* 28247 */ {(12<<2)|2,{53,102,0}}, +/* 28248 */ {(12<<2)|2,{53,102,0}}, +/* 28249 */ {(12<<2)|2,{53,102,0}}, +/* 28250 */ {(12<<2)|2,{53,102,0}}, +/* 28251 */ {(12<<2)|2,{53,102,0}}, +/* 28252 */ {(12<<2)|2,{53,102,0}}, +/* 28253 */ {(12<<2)|2,{53,102,0}}, +/* 28254 */ {(12<<2)|2,{53,102,0}}, +/* 28255 */ {(12<<2)|2,{53,102,0}}, +/* 28256 */ {(12<<2)|2,{53,103,0}}, +/* 28257 */ {(12<<2)|2,{53,103,0}}, +/* 28258 */ {(12<<2)|2,{53,103,0}}, +/* 28259 */ {(12<<2)|2,{53,103,0}}, +/* 28260 */ {(12<<2)|2,{53,103,0}}, +/* 28261 */ {(12<<2)|2,{53,103,0}}, +/* 28262 */ {(12<<2)|2,{53,103,0}}, +/* 28263 */ {(12<<2)|2,{53,103,0}}, +/* 28264 */ {(12<<2)|2,{53,103,0}}, +/* 28265 */ {(12<<2)|2,{53,103,0}}, +/* 28266 */ {(12<<2)|2,{53,103,0}}, +/* 28267 */ {(12<<2)|2,{53,103,0}}, +/* 28268 */ {(12<<2)|2,{53,103,0}}, +/* 28269 */ {(12<<2)|2,{53,103,0}}, +/* 28270 */ {(12<<2)|2,{53,103,0}}, +/* 28271 */ {(12<<2)|2,{53,103,0}}, +/* 28272 */ {(12<<2)|2,{53,104,0}}, +/* 28273 */ {(12<<2)|2,{53,104,0}}, +/* 28274 */ {(12<<2)|2,{53,104,0}}, +/* 28275 */ {(12<<2)|2,{53,104,0}}, +/* 28276 */ {(12<<2)|2,{53,104,0}}, +/* 28277 */ {(12<<2)|2,{53,104,0}}, +/* 28278 */ {(12<<2)|2,{53,104,0}}, +/* 28279 */ {(12<<2)|2,{53,104,0}}, +/* 28280 */ {(12<<2)|2,{53,104,0}}, +/* 28281 */ {(12<<2)|2,{53,104,0}}, +/* 28282 */ {(12<<2)|2,{53,104,0}}, +/* 28283 */ {(12<<2)|2,{53,104,0}}, +/* 28284 */ {(12<<2)|2,{53,104,0}}, +/* 28285 */ {(12<<2)|2,{53,104,0}}, +/* 28286 */ {(12<<2)|2,{53,104,0}}, +/* 28287 */ {(12<<2)|2,{53,104,0}}, +/* 28288 */ {(12<<2)|2,{53,108,0}}, +/* 28289 */ {(12<<2)|2,{53,108,0}}, +/* 28290 */ {(12<<2)|2,{53,108,0}}, +/* 28291 */ {(12<<2)|2,{53,108,0}}, +/* 28292 */ {(12<<2)|2,{53,108,0}}, +/* 28293 */ {(12<<2)|2,{53,108,0}}, +/* 28294 */ {(12<<2)|2,{53,108,0}}, +/* 28295 */ {(12<<2)|2,{53,108,0}}, +/* 28296 */ {(12<<2)|2,{53,108,0}}, +/* 28297 */ {(12<<2)|2,{53,108,0}}, +/* 28298 */ {(12<<2)|2,{53,108,0}}, +/* 28299 */ {(12<<2)|2,{53,108,0}}, +/* 28300 */ {(12<<2)|2,{53,108,0}}, +/* 28301 */ {(12<<2)|2,{53,108,0}}, +/* 28302 */ {(12<<2)|2,{53,108,0}}, +/* 28303 */ {(12<<2)|2,{53,108,0}}, +/* 28304 */ {(12<<2)|2,{53,109,0}}, +/* 28305 */ {(12<<2)|2,{53,109,0}}, +/* 28306 */ {(12<<2)|2,{53,109,0}}, +/* 28307 */ {(12<<2)|2,{53,109,0}}, +/* 28308 */ {(12<<2)|2,{53,109,0}}, +/* 28309 */ {(12<<2)|2,{53,109,0}}, +/* 28310 */ {(12<<2)|2,{53,109,0}}, +/* 28311 */ {(12<<2)|2,{53,109,0}}, +/* 28312 */ {(12<<2)|2,{53,109,0}}, +/* 28313 */ {(12<<2)|2,{53,109,0}}, +/* 28314 */ {(12<<2)|2,{53,109,0}}, +/* 28315 */ {(12<<2)|2,{53,109,0}}, +/* 28316 */ {(12<<2)|2,{53,109,0}}, +/* 28317 */ {(12<<2)|2,{53,109,0}}, +/* 28318 */ {(12<<2)|2,{53,109,0}}, +/* 28319 */ {(12<<2)|2,{53,109,0}}, +/* 28320 */ {(12<<2)|2,{53,110,0}}, +/* 28321 */ {(12<<2)|2,{53,110,0}}, +/* 28322 */ {(12<<2)|2,{53,110,0}}, +/* 28323 */ {(12<<2)|2,{53,110,0}}, +/* 28324 */ {(12<<2)|2,{53,110,0}}, +/* 28325 */ {(12<<2)|2,{53,110,0}}, +/* 28326 */ {(12<<2)|2,{53,110,0}}, +/* 28327 */ {(12<<2)|2,{53,110,0}}, +/* 28328 */ {(12<<2)|2,{53,110,0}}, +/* 28329 */ {(12<<2)|2,{53,110,0}}, +/* 28330 */ {(12<<2)|2,{53,110,0}}, +/* 28331 */ {(12<<2)|2,{53,110,0}}, +/* 28332 */ {(12<<2)|2,{53,110,0}}, +/* 28333 */ {(12<<2)|2,{53,110,0}}, +/* 28334 */ {(12<<2)|2,{53,110,0}}, +/* 28335 */ {(12<<2)|2,{53,110,0}}, +/* 28336 */ {(12<<2)|2,{53,112,0}}, +/* 28337 */ {(12<<2)|2,{53,112,0}}, +/* 28338 */ {(12<<2)|2,{53,112,0}}, +/* 28339 */ {(12<<2)|2,{53,112,0}}, +/* 28340 */ {(12<<2)|2,{53,112,0}}, +/* 28341 */ {(12<<2)|2,{53,112,0}}, +/* 28342 */ {(12<<2)|2,{53,112,0}}, +/* 28343 */ {(12<<2)|2,{53,112,0}}, +/* 28344 */ {(12<<2)|2,{53,112,0}}, +/* 28345 */ {(12<<2)|2,{53,112,0}}, +/* 28346 */ {(12<<2)|2,{53,112,0}}, +/* 28347 */ {(12<<2)|2,{53,112,0}}, +/* 28348 */ {(12<<2)|2,{53,112,0}}, +/* 28349 */ {(12<<2)|2,{53,112,0}}, +/* 28350 */ {(12<<2)|2,{53,112,0}}, +/* 28351 */ {(12<<2)|2,{53,112,0}}, +/* 28352 */ {(12<<2)|2,{53,114,0}}, +/* 28353 */ {(12<<2)|2,{53,114,0}}, +/* 28354 */ {(12<<2)|2,{53,114,0}}, +/* 28355 */ {(12<<2)|2,{53,114,0}}, +/* 28356 */ {(12<<2)|2,{53,114,0}}, +/* 28357 */ {(12<<2)|2,{53,114,0}}, +/* 28358 */ {(12<<2)|2,{53,114,0}}, +/* 28359 */ {(12<<2)|2,{53,114,0}}, +/* 28360 */ {(12<<2)|2,{53,114,0}}, +/* 28361 */ {(12<<2)|2,{53,114,0}}, +/* 28362 */ {(12<<2)|2,{53,114,0}}, +/* 28363 */ {(12<<2)|2,{53,114,0}}, +/* 28364 */ {(12<<2)|2,{53,114,0}}, +/* 28365 */ {(12<<2)|2,{53,114,0}}, +/* 28366 */ {(12<<2)|2,{53,114,0}}, +/* 28367 */ {(12<<2)|2,{53,114,0}}, +/* 28368 */ {(12<<2)|2,{53,117,0}}, +/* 28369 */ {(12<<2)|2,{53,117,0}}, +/* 28370 */ {(12<<2)|2,{53,117,0}}, +/* 28371 */ {(12<<2)|2,{53,117,0}}, +/* 28372 */ {(12<<2)|2,{53,117,0}}, +/* 28373 */ {(12<<2)|2,{53,117,0}}, +/* 28374 */ {(12<<2)|2,{53,117,0}}, +/* 28375 */ {(12<<2)|2,{53,117,0}}, +/* 28376 */ {(12<<2)|2,{53,117,0}}, +/* 28377 */ {(12<<2)|2,{53,117,0}}, +/* 28378 */ {(12<<2)|2,{53,117,0}}, +/* 28379 */ {(12<<2)|2,{53,117,0}}, +/* 28380 */ {(12<<2)|2,{53,117,0}}, +/* 28381 */ {(12<<2)|2,{53,117,0}}, +/* 28382 */ {(12<<2)|2,{53,117,0}}, +/* 28383 */ {(12<<2)|2,{53,117,0}}, +/* 28384 */ {(13<<2)|2,{53,58,0}}, +/* 28385 */ {(13<<2)|2,{53,58,0}}, +/* 28386 */ {(13<<2)|2,{53,58,0}}, +/* 28387 */ {(13<<2)|2,{53,58,0}}, +/* 28388 */ {(13<<2)|2,{53,58,0}}, +/* 28389 */ {(13<<2)|2,{53,58,0}}, +/* 28390 */ {(13<<2)|2,{53,58,0}}, +/* 28391 */ {(13<<2)|2,{53,58,0}}, +/* 28392 */ {(13<<2)|2,{53,66,0}}, +/* 28393 */ {(13<<2)|2,{53,66,0}}, +/* 28394 */ {(13<<2)|2,{53,66,0}}, +/* 28395 */ {(13<<2)|2,{53,66,0}}, +/* 28396 */ {(13<<2)|2,{53,66,0}}, +/* 28397 */ {(13<<2)|2,{53,66,0}}, +/* 28398 */ {(13<<2)|2,{53,66,0}}, +/* 28399 */ {(13<<2)|2,{53,66,0}}, +/* 28400 */ {(13<<2)|2,{53,67,0}}, +/* 28401 */ {(13<<2)|2,{53,67,0}}, +/* 28402 */ {(13<<2)|2,{53,67,0}}, +/* 28403 */ {(13<<2)|2,{53,67,0}}, +/* 28404 */ {(13<<2)|2,{53,67,0}}, +/* 28405 */ {(13<<2)|2,{53,67,0}}, +/* 28406 */ {(13<<2)|2,{53,67,0}}, +/* 28407 */ {(13<<2)|2,{53,67,0}}, +/* 28408 */ {(13<<2)|2,{53,68,0}}, +/* 28409 */ {(13<<2)|2,{53,68,0}}, +/* 28410 */ {(13<<2)|2,{53,68,0}}, +/* 28411 */ {(13<<2)|2,{53,68,0}}, +/* 28412 */ {(13<<2)|2,{53,68,0}}, +/* 28413 */ {(13<<2)|2,{53,68,0}}, +/* 28414 */ {(13<<2)|2,{53,68,0}}, +/* 28415 */ {(13<<2)|2,{53,68,0}}, +/* 28416 */ {(13<<2)|2,{53,69,0}}, +/* 28417 */ {(13<<2)|2,{53,69,0}}, +/* 28418 */ {(13<<2)|2,{53,69,0}}, +/* 28419 */ {(13<<2)|2,{53,69,0}}, +/* 28420 */ {(13<<2)|2,{53,69,0}}, +/* 28421 */ {(13<<2)|2,{53,69,0}}, +/* 28422 */ {(13<<2)|2,{53,69,0}}, +/* 28423 */ {(13<<2)|2,{53,69,0}}, +/* 28424 */ {(13<<2)|2,{53,70,0}}, +/* 28425 */ {(13<<2)|2,{53,70,0}}, +/* 28426 */ {(13<<2)|2,{53,70,0}}, +/* 28427 */ {(13<<2)|2,{53,70,0}}, +/* 28428 */ {(13<<2)|2,{53,70,0}}, +/* 28429 */ {(13<<2)|2,{53,70,0}}, +/* 28430 */ {(13<<2)|2,{53,70,0}}, +/* 28431 */ {(13<<2)|2,{53,70,0}}, +/* 28432 */ {(13<<2)|2,{53,71,0}}, +/* 28433 */ {(13<<2)|2,{53,71,0}}, +/* 28434 */ {(13<<2)|2,{53,71,0}}, +/* 28435 */ {(13<<2)|2,{53,71,0}}, +/* 28436 */ {(13<<2)|2,{53,71,0}}, +/* 28437 */ {(13<<2)|2,{53,71,0}}, +/* 28438 */ {(13<<2)|2,{53,71,0}}, +/* 28439 */ {(13<<2)|2,{53,71,0}}, +/* 28440 */ {(13<<2)|2,{53,72,0}}, +/* 28441 */ {(13<<2)|2,{53,72,0}}, +/* 28442 */ {(13<<2)|2,{53,72,0}}, +/* 28443 */ {(13<<2)|2,{53,72,0}}, +/* 28444 */ {(13<<2)|2,{53,72,0}}, +/* 28445 */ {(13<<2)|2,{53,72,0}}, +/* 28446 */ {(13<<2)|2,{53,72,0}}, +/* 28447 */ {(13<<2)|2,{53,72,0}}, +/* 28448 */ {(13<<2)|2,{53,73,0}}, +/* 28449 */ {(13<<2)|2,{53,73,0}}, +/* 28450 */ {(13<<2)|2,{53,73,0}}, +/* 28451 */ {(13<<2)|2,{53,73,0}}, +/* 28452 */ {(13<<2)|2,{53,73,0}}, +/* 28453 */ {(13<<2)|2,{53,73,0}}, +/* 28454 */ {(13<<2)|2,{53,73,0}}, +/* 28455 */ {(13<<2)|2,{53,73,0}}, +/* 28456 */ {(13<<2)|2,{53,74,0}}, +/* 28457 */ {(13<<2)|2,{53,74,0}}, +/* 28458 */ {(13<<2)|2,{53,74,0}}, +/* 28459 */ {(13<<2)|2,{53,74,0}}, +/* 28460 */ {(13<<2)|2,{53,74,0}}, +/* 28461 */ {(13<<2)|2,{53,74,0}}, +/* 28462 */ {(13<<2)|2,{53,74,0}}, +/* 28463 */ {(13<<2)|2,{53,74,0}}, +/* 28464 */ {(13<<2)|2,{53,75,0}}, +/* 28465 */ {(13<<2)|2,{53,75,0}}, +/* 28466 */ {(13<<2)|2,{53,75,0}}, +/* 28467 */ {(13<<2)|2,{53,75,0}}, +/* 28468 */ {(13<<2)|2,{53,75,0}}, +/* 28469 */ {(13<<2)|2,{53,75,0}}, +/* 28470 */ {(13<<2)|2,{53,75,0}}, +/* 28471 */ {(13<<2)|2,{53,75,0}}, +/* 28472 */ {(13<<2)|2,{53,76,0}}, +/* 28473 */ {(13<<2)|2,{53,76,0}}, +/* 28474 */ {(13<<2)|2,{53,76,0}}, +/* 28475 */ {(13<<2)|2,{53,76,0}}, +/* 28476 */ {(13<<2)|2,{53,76,0}}, +/* 28477 */ {(13<<2)|2,{53,76,0}}, +/* 28478 */ {(13<<2)|2,{53,76,0}}, +/* 28479 */ {(13<<2)|2,{53,76,0}}, +/* 28480 */ {(13<<2)|2,{53,77,0}}, +/* 28481 */ {(13<<2)|2,{53,77,0}}, +/* 28482 */ {(13<<2)|2,{53,77,0}}, +/* 28483 */ {(13<<2)|2,{53,77,0}}, +/* 28484 */ {(13<<2)|2,{53,77,0}}, +/* 28485 */ {(13<<2)|2,{53,77,0}}, +/* 28486 */ {(13<<2)|2,{53,77,0}}, +/* 28487 */ {(13<<2)|2,{53,77,0}}, +/* 28488 */ {(13<<2)|2,{53,78,0}}, +/* 28489 */ {(13<<2)|2,{53,78,0}}, +/* 28490 */ {(13<<2)|2,{53,78,0}}, +/* 28491 */ {(13<<2)|2,{53,78,0}}, +/* 28492 */ {(13<<2)|2,{53,78,0}}, +/* 28493 */ {(13<<2)|2,{53,78,0}}, +/* 28494 */ {(13<<2)|2,{53,78,0}}, +/* 28495 */ {(13<<2)|2,{53,78,0}}, +/* 28496 */ {(13<<2)|2,{53,79,0}}, +/* 28497 */ {(13<<2)|2,{53,79,0}}, +/* 28498 */ {(13<<2)|2,{53,79,0}}, +/* 28499 */ {(13<<2)|2,{53,79,0}}, +/* 28500 */ {(13<<2)|2,{53,79,0}}, +/* 28501 */ {(13<<2)|2,{53,79,0}}, +/* 28502 */ {(13<<2)|2,{53,79,0}}, +/* 28503 */ {(13<<2)|2,{53,79,0}}, +/* 28504 */ {(13<<2)|2,{53,80,0}}, +/* 28505 */ {(13<<2)|2,{53,80,0}}, +/* 28506 */ {(13<<2)|2,{53,80,0}}, +/* 28507 */ {(13<<2)|2,{53,80,0}}, +/* 28508 */ {(13<<2)|2,{53,80,0}}, +/* 28509 */ {(13<<2)|2,{53,80,0}}, +/* 28510 */ {(13<<2)|2,{53,80,0}}, +/* 28511 */ {(13<<2)|2,{53,80,0}}, +/* 28512 */ {(13<<2)|2,{53,81,0}}, +/* 28513 */ {(13<<2)|2,{53,81,0}}, +/* 28514 */ {(13<<2)|2,{53,81,0}}, +/* 28515 */ {(13<<2)|2,{53,81,0}}, +/* 28516 */ {(13<<2)|2,{53,81,0}}, +/* 28517 */ {(13<<2)|2,{53,81,0}}, +/* 28518 */ {(13<<2)|2,{53,81,0}}, +/* 28519 */ {(13<<2)|2,{53,81,0}}, +/* 28520 */ {(13<<2)|2,{53,82,0}}, +/* 28521 */ {(13<<2)|2,{53,82,0}}, +/* 28522 */ {(13<<2)|2,{53,82,0}}, +/* 28523 */ {(13<<2)|2,{53,82,0}}, +/* 28524 */ {(13<<2)|2,{53,82,0}}, +/* 28525 */ {(13<<2)|2,{53,82,0}}, +/* 28526 */ {(13<<2)|2,{53,82,0}}, +/* 28527 */ {(13<<2)|2,{53,82,0}}, +/* 28528 */ {(13<<2)|2,{53,83,0}}, +/* 28529 */ {(13<<2)|2,{53,83,0}}, +/* 28530 */ {(13<<2)|2,{53,83,0}}, +/* 28531 */ {(13<<2)|2,{53,83,0}}, +/* 28532 */ {(13<<2)|2,{53,83,0}}, +/* 28533 */ {(13<<2)|2,{53,83,0}}, +/* 28534 */ {(13<<2)|2,{53,83,0}}, +/* 28535 */ {(13<<2)|2,{53,83,0}}, +/* 28536 */ {(13<<2)|2,{53,84,0}}, +/* 28537 */ {(13<<2)|2,{53,84,0}}, +/* 28538 */ {(13<<2)|2,{53,84,0}}, +/* 28539 */ {(13<<2)|2,{53,84,0}}, +/* 28540 */ {(13<<2)|2,{53,84,0}}, +/* 28541 */ {(13<<2)|2,{53,84,0}}, +/* 28542 */ {(13<<2)|2,{53,84,0}}, +/* 28543 */ {(13<<2)|2,{53,84,0}}, +/* 28544 */ {(13<<2)|2,{53,85,0}}, +/* 28545 */ {(13<<2)|2,{53,85,0}}, +/* 28546 */ {(13<<2)|2,{53,85,0}}, +/* 28547 */ {(13<<2)|2,{53,85,0}}, +/* 28548 */ {(13<<2)|2,{53,85,0}}, +/* 28549 */ {(13<<2)|2,{53,85,0}}, +/* 28550 */ {(13<<2)|2,{53,85,0}}, +/* 28551 */ {(13<<2)|2,{53,85,0}}, +/* 28552 */ {(13<<2)|2,{53,86,0}}, +/* 28553 */ {(13<<2)|2,{53,86,0}}, +/* 28554 */ {(13<<2)|2,{53,86,0}}, +/* 28555 */ {(13<<2)|2,{53,86,0}}, +/* 28556 */ {(13<<2)|2,{53,86,0}}, +/* 28557 */ {(13<<2)|2,{53,86,0}}, +/* 28558 */ {(13<<2)|2,{53,86,0}}, +/* 28559 */ {(13<<2)|2,{53,86,0}}, +/* 28560 */ {(13<<2)|2,{53,87,0}}, +/* 28561 */ {(13<<2)|2,{53,87,0}}, +/* 28562 */ {(13<<2)|2,{53,87,0}}, +/* 28563 */ {(13<<2)|2,{53,87,0}}, +/* 28564 */ {(13<<2)|2,{53,87,0}}, +/* 28565 */ {(13<<2)|2,{53,87,0}}, +/* 28566 */ {(13<<2)|2,{53,87,0}}, +/* 28567 */ {(13<<2)|2,{53,87,0}}, +/* 28568 */ {(13<<2)|2,{53,89,0}}, +/* 28569 */ {(13<<2)|2,{53,89,0}}, +/* 28570 */ {(13<<2)|2,{53,89,0}}, +/* 28571 */ {(13<<2)|2,{53,89,0}}, +/* 28572 */ {(13<<2)|2,{53,89,0}}, +/* 28573 */ {(13<<2)|2,{53,89,0}}, +/* 28574 */ {(13<<2)|2,{53,89,0}}, +/* 28575 */ {(13<<2)|2,{53,89,0}}, +/* 28576 */ {(13<<2)|2,{53,106,0}}, +/* 28577 */ {(13<<2)|2,{53,106,0}}, +/* 28578 */ {(13<<2)|2,{53,106,0}}, +/* 28579 */ {(13<<2)|2,{53,106,0}}, +/* 28580 */ {(13<<2)|2,{53,106,0}}, +/* 28581 */ {(13<<2)|2,{53,106,0}}, +/* 28582 */ {(13<<2)|2,{53,106,0}}, +/* 28583 */ {(13<<2)|2,{53,106,0}}, +/* 28584 */ {(13<<2)|2,{53,107,0}}, +/* 28585 */ {(13<<2)|2,{53,107,0}}, +/* 28586 */ {(13<<2)|2,{53,107,0}}, +/* 28587 */ {(13<<2)|2,{53,107,0}}, +/* 28588 */ {(13<<2)|2,{53,107,0}}, +/* 28589 */ {(13<<2)|2,{53,107,0}}, +/* 28590 */ {(13<<2)|2,{53,107,0}}, +/* 28591 */ {(13<<2)|2,{53,107,0}}, +/* 28592 */ {(13<<2)|2,{53,113,0}}, +/* 28593 */ {(13<<2)|2,{53,113,0}}, +/* 28594 */ {(13<<2)|2,{53,113,0}}, +/* 28595 */ {(13<<2)|2,{53,113,0}}, +/* 28596 */ {(13<<2)|2,{53,113,0}}, +/* 28597 */ {(13<<2)|2,{53,113,0}}, +/* 28598 */ {(13<<2)|2,{53,113,0}}, +/* 28599 */ {(13<<2)|2,{53,113,0}}, +/* 28600 */ {(13<<2)|2,{53,118,0}}, +/* 28601 */ {(13<<2)|2,{53,118,0}}, +/* 28602 */ {(13<<2)|2,{53,118,0}}, +/* 28603 */ {(13<<2)|2,{53,118,0}}, +/* 28604 */ {(13<<2)|2,{53,118,0}}, +/* 28605 */ {(13<<2)|2,{53,118,0}}, +/* 28606 */ {(13<<2)|2,{53,118,0}}, +/* 28607 */ {(13<<2)|2,{53,118,0}}, +/* 28608 */ {(13<<2)|2,{53,119,0}}, +/* 28609 */ {(13<<2)|2,{53,119,0}}, +/* 28610 */ {(13<<2)|2,{53,119,0}}, +/* 28611 */ {(13<<2)|2,{53,119,0}}, +/* 28612 */ {(13<<2)|2,{53,119,0}}, +/* 28613 */ {(13<<2)|2,{53,119,0}}, +/* 28614 */ {(13<<2)|2,{53,119,0}}, +/* 28615 */ {(13<<2)|2,{53,119,0}}, +/* 28616 */ {(13<<2)|2,{53,120,0}}, +/* 28617 */ {(13<<2)|2,{53,120,0}}, +/* 28618 */ {(13<<2)|2,{53,120,0}}, +/* 28619 */ {(13<<2)|2,{53,120,0}}, +/* 28620 */ {(13<<2)|2,{53,120,0}}, +/* 28621 */ {(13<<2)|2,{53,120,0}}, +/* 28622 */ {(13<<2)|2,{53,120,0}}, +/* 28623 */ {(13<<2)|2,{53,120,0}}, +/* 28624 */ {(13<<2)|2,{53,121,0}}, +/* 28625 */ {(13<<2)|2,{53,121,0}}, +/* 28626 */ {(13<<2)|2,{53,121,0}}, +/* 28627 */ {(13<<2)|2,{53,121,0}}, +/* 28628 */ {(13<<2)|2,{53,121,0}}, +/* 28629 */ {(13<<2)|2,{53,121,0}}, +/* 28630 */ {(13<<2)|2,{53,121,0}}, +/* 28631 */ {(13<<2)|2,{53,121,0}}, +/* 28632 */ {(13<<2)|2,{53,122,0}}, +/* 28633 */ {(13<<2)|2,{53,122,0}}, +/* 28634 */ {(13<<2)|2,{53,122,0}}, +/* 28635 */ {(13<<2)|2,{53,122,0}}, +/* 28636 */ {(13<<2)|2,{53,122,0}}, +/* 28637 */ {(13<<2)|2,{53,122,0}}, +/* 28638 */ {(13<<2)|2,{53,122,0}}, +/* 28639 */ {(13<<2)|2,{53,122,0}}, +/* 28640 */ {(14<<2)|2,{53,38,0}}, +/* 28641 */ {(14<<2)|2,{53,38,0}}, +/* 28642 */ {(14<<2)|2,{53,38,0}}, +/* 28643 */ {(14<<2)|2,{53,38,0}}, +/* 28644 */ {(14<<2)|2,{53,42,0}}, +/* 28645 */ {(14<<2)|2,{53,42,0}}, +/* 28646 */ {(14<<2)|2,{53,42,0}}, +/* 28647 */ {(14<<2)|2,{53,42,0}}, +/* 28648 */ {(14<<2)|2,{53,44,0}}, +/* 28649 */ {(14<<2)|2,{53,44,0}}, +/* 28650 */ {(14<<2)|2,{53,44,0}}, +/* 28651 */ {(14<<2)|2,{53,44,0}}, +/* 28652 */ {(14<<2)|2,{53,59,0}}, +/* 28653 */ {(14<<2)|2,{53,59,0}}, +/* 28654 */ {(14<<2)|2,{53,59,0}}, +/* 28655 */ {(14<<2)|2,{53,59,0}}, +/* 28656 */ {(14<<2)|2,{53,88,0}}, +/* 28657 */ {(14<<2)|2,{53,88,0}}, +/* 28658 */ {(14<<2)|2,{53,88,0}}, +/* 28659 */ {(14<<2)|2,{53,88,0}}, +/* 28660 */ {(14<<2)|2,{53,90,0}}, +/* 28661 */ {(14<<2)|2,{53,90,0}}, +/* 28662 */ {(14<<2)|2,{53,90,0}}, +/* 28663 */ {(14<<2)|2,{53,90,0}}, +/* 28664 */ {(16<<2)|2,{53,33,0}}, +/* 28665 */ {(16<<2)|2,{53,34,0}}, +/* 28666 */ {(16<<2)|2,{53,40,0}}, +/* 28667 */ {(16<<2)|2,{53,41,0}}, +/* 28668 */ {(16<<2)|2,{53,63,0}}, +/* 28669 */ {(6<<2)|1,{53,0,0}}, +/* 28670 */ {(6<<2)|1,{53,0,0}}, +/* 28671 */ {(6<<2)|1,{53,0,0}}, +/* 28672 */ {(16<<2)|3,{54,48,48}}, +/* 28673 */ {(16<<2)|3,{54,48,49}}, +/* 28674 */ {(16<<2)|3,{54,48,50}}, +/* 28675 */ {(16<<2)|3,{54,48,97}}, +/* 28676 */ {(16<<2)|3,{54,48,99}}, +/* 28677 */ {(16<<2)|3,{54,48,101}}, +/* 28678 */ {(16<<2)|3,{54,48,105}}, +/* 28679 */ {(16<<2)|3,{54,48,111}}, +/* 28680 */ {(16<<2)|3,{54,48,115}}, +/* 28681 */ {(16<<2)|3,{54,48,116}}, +/* 28682 */ {(11<<2)|2,{54,48,0}}, +/* 28683 */ {(11<<2)|2,{54,48,0}}, +/* 28684 */ {(11<<2)|2,{54,48,0}}, +/* 28685 */ {(11<<2)|2,{54,48,0}}, +/* 28686 */ {(11<<2)|2,{54,48,0}}, +/* 28687 */ {(11<<2)|2,{54,48,0}}, +/* 28688 */ {(11<<2)|2,{54,48,0}}, +/* 28689 */ {(11<<2)|2,{54,48,0}}, +/* 28690 */ {(11<<2)|2,{54,48,0}}, +/* 28691 */ {(11<<2)|2,{54,48,0}}, +/* 28692 */ {(11<<2)|2,{54,48,0}}, +/* 28693 */ {(11<<2)|2,{54,48,0}}, +/* 28694 */ {(11<<2)|2,{54,48,0}}, +/* 28695 */ {(11<<2)|2,{54,48,0}}, +/* 28696 */ {(11<<2)|2,{54,48,0}}, +/* 28697 */ {(11<<2)|2,{54,48,0}}, +/* 28698 */ {(11<<2)|2,{54,48,0}}, +/* 28699 */ {(11<<2)|2,{54,48,0}}, +/* 28700 */ {(11<<2)|2,{54,48,0}}, +/* 28701 */ {(11<<2)|2,{54,48,0}}, +/* 28702 */ {(11<<2)|2,{54,48,0}}, +/* 28703 */ {(11<<2)|2,{54,48,0}}, +/* 28704 */ {(16<<2)|3,{54,49,48}}, +/* 28705 */ {(16<<2)|3,{54,49,49}}, +/* 28706 */ {(16<<2)|3,{54,49,50}}, +/* 28707 */ {(16<<2)|3,{54,49,97}}, +/* 28708 */ {(16<<2)|3,{54,49,99}}, +/* 28709 */ {(16<<2)|3,{54,49,101}}, +/* 28710 */ {(16<<2)|3,{54,49,105}}, +/* 28711 */ {(16<<2)|3,{54,49,111}}, +/* 28712 */ {(16<<2)|3,{54,49,115}}, +/* 28713 */ {(16<<2)|3,{54,49,116}}, +/* 28714 */ {(11<<2)|2,{54,49,0}}, +/* 28715 */ {(11<<2)|2,{54,49,0}}, +/* 28716 */ {(11<<2)|2,{54,49,0}}, +/* 28717 */ {(11<<2)|2,{54,49,0}}, +/* 28718 */ {(11<<2)|2,{54,49,0}}, +/* 28719 */ {(11<<2)|2,{54,49,0}}, +/* 28720 */ {(11<<2)|2,{54,49,0}}, +/* 28721 */ {(11<<2)|2,{54,49,0}}, +/* 28722 */ {(11<<2)|2,{54,49,0}}, +/* 28723 */ {(11<<2)|2,{54,49,0}}, +/* 28724 */ {(11<<2)|2,{54,49,0}}, +/* 28725 */ {(11<<2)|2,{54,49,0}}, +/* 28726 */ {(11<<2)|2,{54,49,0}}, +/* 28727 */ {(11<<2)|2,{54,49,0}}, +/* 28728 */ {(11<<2)|2,{54,49,0}}, +/* 28729 */ {(11<<2)|2,{54,49,0}}, +/* 28730 */ {(11<<2)|2,{54,49,0}}, +/* 28731 */ {(11<<2)|2,{54,49,0}}, +/* 28732 */ {(11<<2)|2,{54,49,0}}, +/* 28733 */ {(11<<2)|2,{54,49,0}}, +/* 28734 */ {(11<<2)|2,{54,49,0}}, +/* 28735 */ {(11<<2)|2,{54,49,0}}, +/* 28736 */ {(16<<2)|3,{54,50,48}}, +/* 28737 */ {(16<<2)|3,{54,50,49}}, +/* 28738 */ {(16<<2)|3,{54,50,50}}, +/* 28739 */ {(16<<2)|3,{54,50,97}}, +/* 28740 */ {(16<<2)|3,{54,50,99}}, +/* 28741 */ {(16<<2)|3,{54,50,101}}, +/* 28742 */ {(16<<2)|3,{54,50,105}}, +/* 28743 */ {(16<<2)|3,{54,50,111}}, +/* 28744 */ {(16<<2)|3,{54,50,115}}, +/* 28745 */ {(16<<2)|3,{54,50,116}}, +/* 28746 */ {(11<<2)|2,{54,50,0}}, +/* 28747 */ {(11<<2)|2,{54,50,0}}, +/* 28748 */ {(11<<2)|2,{54,50,0}}, +/* 28749 */ {(11<<2)|2,{54,50,0}}, +/* 28750 */ {(11<<2)|2,{54,50,0}}, +/* 28751 */ {(11<<2)|2,{54,50,0}}, +/* 28752 */ {(11<<2)|2,{54,50,0}}, +/* 28753 */ {(11<<2)|2,{54,50,0}}, +/* 28754 */ {(11<<2)|2,{54,50,0}}, +/* 28755 */ {(11<<2)|2,{54,50,0}}, +/* 28756 */ {(11<<2)|2,{54,50,0}}, +/* 28757 */ {(11<<2)|2,{54,50,0}}, +/* 28758 */ {(11<<2)|2,{54,50,0}}, +/* 28759 */ {(11<<2)|2,{54,50,0}}, +/* 28760 */ {(11<<2)|2,{54,50,0}}, +/* 28761 */ {(11<<2)|2,{54,50,0}}, +/* 28762 */ {(11<<2)|2,{54,50,0}}, +/* 28763 */ {(11<<2)|2,{54,50,0}}, +/* 28764 */ {(11<<2)|2,{54,50,0}}, +/* 28765 */ {(11<<2)|2,{54,50,0}}, +/* 28766 */ {(11<<2)|2,{54,50,0}}, +/* 28767 */ {(11<<2)|2,{54,50,0}}, +/* 28768 */ {(16<<2)|3,{54,97,48}}, +/* 28769 */ {(16<<2)|3,{54,97,49}}, +/* 28770 */ {(16<<2)|3,{54,97,50}}, +/* 28771 */ {(16<<2)|3,{54,97,97}}, +/* 28772 */ {(16<<2)|3,{54,97,99}}, +/* 28773 */ {(16<<2)|3,{54,97,101}}, +/* 28774 */ {(16<<2)|3,{54,97,105}}, +/* 28775 */ {(16<<2)|3,{54,97,111}}, +/* 28776 */ {(16<<2)|3,{54,97,115}}, +/* 28777 */ {(16<<2)|3,{54,97,116}}, +/* 28778 */ {(11<<2)|2,{54,97,0}}, +/* 28779 */ {(11<<2)|2,{54,97,0}}, +/* 28780 */ {(11<<2)|2,{54,97,0}}, +/* 28781 */ {(11<<2)|2,{54,97,0}}, +/* 28782 */ {(11<<2)|2,{54,97,0}}, +/* 28783 */ {(11<<2)|2,{54,97,0}}, +/* 28784 */ {(11<<2)|2,{54,97,0}}, +/* 28785 */ {(11<<2)|2,{54,97,0}}, +/* 28786 */ {(11<<2)|2,{54,97,0}}, +/* 28787 */ {(11<<2)|2,{54,97,0}}, +/* 28788 */ {(11<<2)|2,{54,97,0}}, +/* 28789 */ {(11<<2)|2,{54,97,0}}, +/* 28790 */ {(11<<2)|2,{54,97,0}}, +/* 28791 */ {(11<<2)|2,{54,97,0}}, +/* 28792 */ {(11<<2)|2,{54,97,0}}, +/* 28793 */ {(11<<2)|2,{54,97,0}}, +/* 28794 */ {(11<<2)|2,{54,97,0}}, +/* 28795 */ {(11<<2)|2,{54,97,0}}, +/* 28796 */ {(11<<2)|2,{54,97,0}}, +/* 28797 */ {(11<<2)|2,{54,97,0}}, +/* 28798 */ {(11<<2)|2,{54,97,0}}, +/* 28799 */ {(11<<2)|2,{54,97,0}}, +/* 28800 */ {(16<<2)|3,{54,99,48}}, +/* 28801 */ {(16<<2)|3,{54,99,49}}, +/* 28802 */ {(16<<2)|3,{54,99,50}}, +/* 28803 */ {(16<<2)|3,{54,99,97}}, +/* 28804 */ {(16<<2)|3,{54,99,99}}, +/* 28805 */ {(16<<2)|3,{54,99,101}}, +/* 28806 */ {(16<<2)|3,{54,99,105}}, +/* 28807 */ {(16<<2)|3,{54,99,111}}, +/* 28808 */ {(16<<2)|3,{54,99,115}}, +/* 28809 */ {(16<<2)|3,{54,99,116}}, +/* 28810 */ {(11<<2)|2,{54,99,0}}, +/* 28811 */ {(11<<2)|2,{54,99,0}}, +/* 28812 */ {(11<<2)|2,{54,99,0}}, +/* 28813 */ {(11<<2)|2,{54,99,0}}, +/* 28814 */ {(11<<2)|2,{54,99,0}}, +/* 28815 */ {(11<<2)|2,{54,99,0}}, +/* 28816 */ {(11<<2)|2,{54,99,0}}, +/* 28817 */ {(11<<2)|2,{54,99,0}}, +/* 28818 */ {(11<<2)|2,{54,99,0}}, +/* 28819 */ {(11<<2)|2,{54,99,0}}, +/* 28820 */ {(11<<2)|2,{54,99,0}}, +/* 28821 */ {(11<<2)|2,{54,99,0}}, +/* 28822 */ {(11<<2)|2,{54,99,0}}, +/* 28823 */ {(11<<2)|2,{54,99,0}}, +/* 28824 */ {(11<<2)|2,{54,99,0}}, +/* 28825 */ {(11<<2)|2,{54,99,0}}, +/* 28826 */ {(11<<2)|2,{54,99,0}}, +/* 28827 */ {(11<<2)|2,{54,99,0}}, +/* 28828 */ {(11<<2)|2,{54,99,0}}, +/* 28829 */ {(11<<2)|2,{54,99,0}}, +/* 28830 */ {(11<<2)|2,{54,99,0}}, +/* 28831 */ {(11<<2)|2,{54,99,0}}, +/* 28832 */ {(16<<2)|3,{54,101,48}}, +/* 28833 */ {(16<<2)|3,{54,101,49}}, +/* 28834 */ {(16<<2)|3,{54,101,50}}, +/* 28835 */ {(16<<2)|3,{54,101,97}}, +/* 28836 */ {(16<<2)|3,{54,101,99}}, +/* 28837 */ {(16<<2)|3,{54,101,101}}, +/* 28838 */ {(16<<2)|3,{54,101,105}}, +/* 28839 */ {(16<<2)|3,{54,101,111}}, +/* 28840 */ {(16<<2)|3,{54,101,115}}, +/* 28841 */ {(16<<2)|3,{54,101,116}}, +/* 28842 */ {(11<<2)|2,{54,101,0}}, +/* 28843 */ {(11<<2)|2,{54,101,0}}, +/* 28844 */ {(11<<2)|2,{54,101,0}}, +/* 28845 */ {(11<<2)|2,{54,101,0}}, +/* 28846 */ {(11<<2)|2,{54,101,0}}, +/* 28847 */ {(11<<2)|2,{54,101,0}}, +/* 28848 */ {(11<<2)|2,{54,101,0}}, +/* 28849 */ {(11<<2)|2,{54,101,0}}, +/* 28850 */ {(11<<2)|2,{54,101,0}}, +/* 28851 */ {(11<<2)|2,{54,101,0}}, +/* 28852 */ {(11<<2)|2,{54,101,0}}, +/* 28853 */ {(11<<2)|2,{54,101,0}}, +/* 28854 */ {(11<<2)|2,{54,101,0}}, +/* 28855 */ {(11<<2)|2,{54,101,0}}, +/* 28856 */ {(11<<2)|2,{54,101,0}}, +/* 28857 */ {(11<<2)|2,{54,101,0}}, +/* 28858 */ {(11<<2)|2,{54,101,0}}, +/* 28859 */ {(11<<2)|2,{54,101,0}}, +/* 28860 */ {(11<<2)|2,{54,101,0}}, +/* 28861 */ {(11<<2)|2,{54,101,0}}, +/* 28862 */ {(11<<2)|2,{54,101,0}}, +/* 28863 */ {(11<<2)|2,{54,101,0}}, +/* 28864 */ {(16<<2)|3,{54,105,48}}, +/* 28865 */ {(16<<2)|3,{54,105,49}}, +/* 28866 */ {(16<<2)|3,{54,105,50}}, +/* 28867 */ {(16<<2)|3,{54,105,97}}, +/* 28868 */ {(16<<2)|3,{54,105,99}}, +/* 28869 */ {(16<<2)|3,{54,105,101}}, +/* 28870 */ {(16<<2)|3,{54,105,105}}, +/* 28871 */ {(16<<2)|3,{54,105,111}}, +/* 28872 */ {(16<<2)|3,{54,105,115}}, +/* 28873 */ {(16<<2)|3,{54,105,116}}, +/* 28874 */ {(11<<2)|2,{54,105,0}}, +/* 28875 */ {(11<<2)|2,{54,105,0}}, +/* 28876 */ {(11<<2)|2,{54,105,0}}, +/* 28877 */ {(11<<2)|2,{54,105,0}}, +/* 28878 */ {(11<<2)|2,{54,105,0}}, +/* 28879 */ {(11<<2)|2,{54,105,0}}, +/* 28880 */ {(11<<2)|2,{54,105,0}}, +/* 28881 */ {(11<<2)|2,{54,105,0}}, +/* 28882 */ {(11<<2)|2,{54,105,0}}, +/* 28883 */ {(11<<2)|2,{54,105,0}}, +/* 28884 */ {(11<<2)|2,{54,105,0}}, +/* 28885 */ {(11<<2)|2,{54,105,0}}, +/* 28886 */ {(11<<2)|2,{54,105,0}}, +/* 28887 */ {(11<<2)|2,{54,105,0}}, +/* 28888 */ {(11<<2)|2,{54,105,0}}, +/* 28889 */ {(11<<2)|2,{54,105,0}}, +/* 28890 */ {(11<<2)|2,{54,105,0}}, +/* 28891 */ {(11<<2)|2,{54,105,0}}, +/* 28892 */ {(11<<2)|2,{54,105,0}}, +/* 28893 */ {(11<<2)|2,{54,105,0}}, +/* 28894 */ {(11<<2)|2,{54,105,0}}, +/* 28895 */ {(11<<2)|2,{54,105,0}}, +/* 28896 */ {(16<<2)|3,{54,111,48}}, +/* 28897 */ {(16<<2)|3,{54,111,49}}, +/* 28898 */ {(16<<2)|3,{54,111,50}}, +/* 28899 */ {(16<<2)|3,{54,111,97}}, +/* 28900 */ {(16<<2)|3,{54,111,99}}, +/* 28901 */ {(16<<2)|3,{54,111,101}}, +/* 28902 */ {(16<<2)|3,{54,111,105}}, +/* 28903 */ {(16<<2)|3,{54,111,111}}, +/* 28904 */ {(16<<2)|3,{54,111,115}}, +/* 28905 */ {(16<<2)|3,{54,111,116}}, +/* 28906 */ {(11<<2)|2,{54,111,0}}, +/* 28907 */ {(11<<2)|2,{54,111,0}}, +/* 28908 */ {(11<<2)|2,{54,111,0}}, +/* 28909 */ {(11<<2)|2,{54,111,0}}, +/* 28910 */ {(11<<2)|2,{54,111,0}}, +/* 28911 */ {(11<<2)|2,{54,111,0}}, +/* 28912 */ {(11<<2)|2,{54,111,0}}, +/* 28913 */ {(11<<2)|2,{54,111,0}}, +/* 28914 */ {(11<<2)|2,{54,111,0}}, +/* 28915 */ {(11<<2)|2,{54,111,0}}, +/* 28916 */ {(11<<2)|2,{54,111,0}}, +/* 28917 */ {(11<<2)|2,{54,111,0}}, +/* 28918 */ {(11<<2)|2,{54,111,0}}, +/* 28919 */ {(11<<2)|2,{54,111,0}}, +/* 28920 */ {(11<<2)|2,{54,111,0}}, +/* 28921 */ {(11<<2)|2,{54,111,0}}, +/* 28922 */ {(11<<2)|2,{54,111,0}}, +/* 28923 */ {(11<<2)|2,{54,111,0}}, +/* 28924 */ {(11<<2)|2,{54,111,0}}, +/* 28925 */ {(11<<2)|2,{54,111,0}}, +/* 28926 */ {(11<<2)|2,{54,111,0}}, +/* 28927 */ {(11<<2)|2,{54,111,0}}, +/* 28928 */ {(16<<2)|3,{54,115,48}}, +/* 28929 */ {(16<<2)|3,{54,115,49}}, +/* 28930 */ {(16<<2)|3,{54,115,50}}, +/* 28931 */ {(16<<2)|3,{54,115,97}}, +/* 28932 */ {(16<<2)|3,{54,115,99}}, +/* 28933 */ {(16<<2)|3,{54,115,101}}, +/* 28934 */ {(16<<2)|3,{54,115,105}}, +/* 28935 */ {(16<<2)|3,{54,115,111}}, +/* 28936 */ {(16<<2)|3,{54,115,115}}, +/* 28937 */ {(16<<2)|3,{54,115,116}}, +/* 28938 */ {(11<<2)|2,{54,115,0}}, +/* 28939 */ {(11<<2)|2,{54,115,0}}, +/* 28940 */ {(11<<2)|2,{54,115,0}}, +/* 28941 */ {(11<<2)|2,{54,115,0}}, +/* 28942 */ {(11<<2)|2,{54,115,0}}, +/* 28943 */ {(11<<2)|2,{54,115,0}}, +/* 28944 */ {(11<<2)|2,{54,115,0}}, +/* 28945 */ {(11<<2)|2,{54,115,0}}, +/* 28946 */ {(11<<2)|2,{54,115,0}}, +/* 28947 */ {(11<<2)|2,{54,115,0}}, +/* 28948 */ {(11<<2)|2,{54,115,0}}, +/* 28949 */ {(11<<2)|2,{54,115,0}}, +/* 28950 */ {(11<<2)|2,{54,115,0}}, +/* 28951 */ {(11<<2)|2,{54,115,0}}, +/* 28952 */ {(11<<2)|2,{54,115,0}}, +/* 28953 */ {(11<<2)|2,{54,115,0}}, +/* 28954 */ {(11<<2)|2,{54,115,0}}, +/* 28955 */ {(11<<2)|2,{54,115,0}}, +/* 28956 */ {(11<<2)|2,{54,115,0}}, +/* 28957 */ {(11<<2)|2,{54,115,0}}, +/* 28958 */ {(11<<2)|2,{54,115,0}}, +/* 28959 */ {(11<<2)|2,{54,115,0}}, +/* 28960 */ {(16<<2)|3,{54,116,48}}, +/* 28961 */ {(16<<2)|3,{54,116,49}}, +/* 28962 */ {(16<<2)|3,{54,116,50}}, +/* 28963 */ {(16<<2)|3,{54,116,97}}, +/* 28964 */ {(16<<2)|3,{54,116,99}}, +/* 28965 */ {(16<<2)|3,{54,116,101}}, +/* 28966 */ {(16<<2)|3,{54,116,105}}, +/* 28967 */ {(16<<2)|3,{54,116,111}}, +/* 28968 */ {(16<<2)|3,{54,116,115}}, +/* 28969 */ {(16<<2)|3,{54,116,116}}, +/* 28970 */ {(11<<2)|2,{54,116,0}}, +/* 28971 */ {(11<<2)|2,{54,116,0}}, +/* 28972 */ {(11<<2)|2,{54,116,0}}, +/* 28973 */ {(11<<2)|2,{54,116,0}}, +/* 28974 */ {(11<<2)|2,{54,116,0}}, +/* 28975 */ {(11<<2)|2,{54,116,0}}, +/* 28976 */ {(11<<2)|2,{54,116,0}}, +/* 28977 */ {(11<<2)|2,{54,116,0}}, +/* 28978 */ {(11<<2)|2,{54,116,0}}, +/* 28979 */ {(11<<2)|2,{54,116,0}}, +/* 28980 */ {(11<<2)|2,{54,116,0}}, +/* 28981 */ {(11<<2)|2,{54,116,0}}, +/* 28982 */ {(11<<2)|2,{54,116,0}}, +/* 28983 */ {(11<<2)|2,{54,116,0}}, +/* 28984 */ {(11<<2)|2,{54,116,0}}, +/* 28985 */ {(11<<2)|2,{54,116,0}}, +/* 28986 */ {(11<<2)|2,{54,116,0}}, +/* 28987 */ {(11<<2)|2,{54,116,0}}, +/* 28988 */ {(11<<2)|2,{54,116,0}}, +/* 28989 */ {(11<<2)|2,{54,116,0}}, +/* 28990 */ {(11<<2)|2,{54,116,0}}, +/* 28991 */ {(11<<2)|2,{54,116,0}}, +/* 28992 */ {(12<<2)|2,{54,32,0}}, +/* 28993 */ {(12<<2)|2,{54,32,0}}, +/* 28994 */ {(12<<2)|2,{54,32,0}}, +/* 28995 */ {(12<<2)|2,{54,32,0}}, +/* 28996 */ {(12<<2)|2,{54,32,0}}, +/* 28997 */ {(12<<2)|2,{54,32,0}}, +/* 28998 */ {(12<<2)|2,{54,32,0}}, +/* 28999 */ {(12<<2)|2,{54,32,0}}, +/* 29000 */ {(12<<2)|2,{54,32,0}}, +/* 29001 */ {(12<<2)|2,{54,32,0}}, +/* 29002 */ {(12<<2)|2,{54,32,0}}, +/* 29003 */ {(12<<2)|2,{54,32,0}}, +/* 29004 */ {(12<<2)|2,{54,32,0}}, +/* 29005 */ {(12<<2)|2,{54,32,0}}, +/* 29006 */ {(12<<2)|2,{54,32,0}}, +/* 29007 */ {(12<<2)|2,{54,32,0}}, +/* 29008 */ {(12<<2)|2,{54,37,0}}, +/* 29009 */ {(12<<2)|2,{54,37,0}}, +/* 29010 */ {(12<<2)|2,{54,37,0}}, +/* 29011 */ {(12<<2)|2,{54,37,0}}, +/* 29012 */ {(12<<2)|2,{54,37,0}}, +/* 29013 */ {(12<<2)|2,{54,37,0}}, +/* 29014 */ {(12<<2)|2,{54,37,0}}, +/* 29015 */ {(12<<2)|2,{54,37,0}}, +/* 29016 */ {(12<<2)|2,{54,37,0}}, +/* 29017 */ {(12<<2)|2,{54,37,0}}, +/* 29018 */ {(12<<2)|2,{54,37,0}}, +/* 29019 */ {(12<<2)|2,{54,37,0}}, +/* 29020 */ {(12<<2)|2,{54,37,0}}, +/* 29021 */ {(12<<2)|2,{54,37,0}}, +/* 29022 */ {(12<<2)|2,{54,37,0}}, +/* 29023 */ {(12<<2)|2,{54,37,0}}, +/* 29024 */ {(12<<2)|2,{54,45,0}}, +/* 29025 */ {(12<<2)|2,{54,45,0}}, +/* 29026 */ {(12<<2)|2,{54,45,0}}, +/* 29027 */ {(12<<2)|2,{54,45,0}}, +/* 29028 */ {(12<<2)|2,{54,45,0}}, +/* 29029 */ {(12<<2)|2,{54,45,0}}, +/* 29030 */ {(12<<2)|2,{54,45,0}}, +/* 29031 */ {(12<<2)|2,{54,45,0}}, +/* 29032 */ {(12<<2)|2,{54,45,0}}, +/* 29033 */ {(12<<2)|2,{54,45,0}}, +/* 29034 */ {(12<<2)|2,{54,45,0}}, +/* 29035 */ {(12<<2)|2,{54,45,0}}, +/* 29036 */ {(12<<2)|2,{54,45,0}}, +/* 29037 */ {(12<<2)|2,{54,45,0}}, +/* 29038 */ {(12<<2)|2,{54,45,0}}, +/* 29039 */ {(12<<2)|2,{54,45,0}}, +/* 29040 */ {(12<<2)|2,{54,46,0}}, +/* 29041 */ {(12<<2)|2,{54,46,0}}, +/* 29042 */ {(12<<2)|2,{54,46,0}}, +/* 29043 */ {(12<<2)|2,{54,46,0}}, +/* 29044 */ {(12<<2)|2,{54,46,0}}, +/* 29045 */ {(12<<2)|2,{54,46,0}}, +/* 29046 */ {(12<<2)|2,{54,46,0}}, +/* 29047 */ {(12<<2)|2,{54,46,0}}, +/* 29048 */ {(12<<2)|2,{54,46,0}}, +/* 29049 */ {(12<<2)|2,{54,46,0}}, +/* 29050 */ {(12<<2)|2,{54,46,0}}, +/* 29051 */ {(12<<2)|2,{54,46,0}}, +/* 29052 */ {(12<<2)|2,{54,46,0}}, +/* 29053 */ {(12<<2)|2,{54,46,0}}, +/* 29054 */ {(12<<2)|2,{54,46,0}}, +/* 29055 */ {(12<<2)|2,{54,46,0}}, +/* 29056 */ {(12<<2)|2,{54,47,0}}, +/* 29057 */ {(12<<2)|2,{54,47,0}}, +/* 29058 */ {(12<<2)|2,{54,47,0}}, +/* 29059 */ {(12<<2)|2,{54,47,0}}, +/* 29060 */ {(12<<2)|2,{54,47,0}}, +/* 29061 */ {(12<<2)|2,{54,47,0}}, +/* 29062 */ {(12<<2)|2,{54,47,0}}, +/* 29063 */ {(12<<2)|2,{54,47,0}}, +/* 29064 */ {(12<<2)|2,{54,47,0}}, +/* 29065 */ {(12<<2)|2,{54,47,0}}, +/* 29066 */ {(12<<2)|2,{54,47,0}}, +/* 29067 */ {(12<<2)|2,{54,47,0}}, +/* 29068 */ {(12<<2)|2,{54,47,0}}, +/* 29069 */ {(12<<2)|2,{54,47,0}}, +/* 29070 */ {(12<<2)|2,{54,47,0}}, +/* 29071 */ {(12<<2)|2,{54,47,0}}, +/* 29072 */ {(12<<2)|2,{54,51,0}}, +/* 29073 */ {(12<<2)|2,{54,51,0}}, +/* 29074 */ {(12<<2)|2,{54,51,0}}, +/* 29075 */ {(12<<2)|2,{54,51,0}}, +/* 29076 */ {(12<<2)|2,{54,51,0}}, +/* 29077 */ {(12<<2)|2,{54,51,0}}, +/* 29078 */ {(12<<2)|2,{54,51,0}}, +/* 29079 */ {(12<<2)|2,{54,51,0}}, +/* 29080 */ {(12<<2)|2,{54,51,0}}, +/* 29081 */ {(12<<2)|2,{54,51,0}}, +/* 29082 */ {(12<<2)|2,{54,51,0}}, +/* 29083 */ {(12<<2)|2,{54,51,0}}, +/* 29084 */ {(12<<2)|2,{54,51,0}}, +/* 29085 */ {(12<<2)|2,{54,51,0}}, +/* 29086 */ {(12<<2)|2,{54,51,0}}, +/* 29087 */ {(12<<2)|2,{54,51,0}}, +/* 29088 */ {(12<<2)|2,{54,52,0}}, +/* 29089 */ {(12<<2)|2,{54,52,0}}, +/* 29090 */ {(12<<2)|2,{54,52,0}}, +/* 29091 */ {(12<<2)|2,{54,52,0}}, +/* 29092 */ {(12<<2)|2,{54,52,0}}, +/* 29093 */ {(12<<2)|2,{54,52,0}}, +/* 29094 */ {(12<<2)|2,{54,52,0}}, +/* 29095 */ {(12<<2)|2,{54,52,0}}, +/* 29096 */ {(12<<2)|2,{54,52,0}}, +/* 29097 */ {(12<<2)|2,{54,52,0}}, +/* 29098 */ {(12<<2)|2,{54,52,0}}, +/* 29099 */ {(12<<2)|2,{54,52,0}}, +/* 29100 */ {(12<<2)|2,{54,52,0}}, +/* 29101 */ {(12<<2)|2,{54,52,0}}, +/* 29102 */ {(12<<2)|2,{54,52,0}}, +/* 29103 */ {(12<<2)|2,{54,52,0}}, +/* 29104 */ {(12<<2)|2,{54,53,0}}, +/* 29105 */ {(12<<2)|2,{54,53,0}}, +/* 29106 */ {(12<<2)|2,{54,53,0}}, +/* 29107 */ {(12<<2)|2,{54,53,0}}, +/* 29108 */ {(12<<2)|2,{54,53,0}}, +/* 29109 */ {(12<<2)|2,{54,53,0}}, +/* 29110 */ {(12<<2)|2,{54,53,0}}, +/* 29111 */ {(12<<2)|2,{54,53,0}}, +/* 29112 */ {(12<<2)|2,{54,53,0}}, +/* 29113 */ {(12<<2)|2,{54,53,0}}, +/* 29114 */ {(12<<2)|2,{54,53,0}}, +/* 29115 */ {(12<<2)|2,{54,53,0}}, +/* 29116 */ {(12<<2)|2,{54,53,0}}, +/* 29117 */ {(12<<2)|2,{54,53,0}}, +/* 29118 */ {(12<<2)|2,{54,53,0}}, +/* 29119 */ {(12<<2)|2,{54,53,0}}, +/* 29120 */ {(12<<2)|2,{54,54,0}}, +/* 29121 */ {(12<<2)|2,{54,54,0}}, +/* 29122 */ {(12<<2)|2,{54,54,0}}, +/* 29123 */ {(12<<2)|2,{54,54,0}}, +/* 29124 */ {(12<<2)|2,{54,54,0}}, +/* 29125 */ {(12<<2)|2,{54,54,0}}, +/* 29126 */ {(12<<2)|2,{54,54,0}}, +/* 29127 */ {(12<<2)|2,{54,54,0}}, +/* 29128 */ {(12<<2)|2,{54,54,0}}, +/* 29129 */ {(12<<2)|2,{54,54,0}}, +/* 29130 */ {(12<<2)|2,{54,54,0}}, +/* 29131 */ {(12<<2)|2,{54,54,0}}, +/* 29132 */ {(12<<2)|2,{54,54,0}}, +/* 29133 */ {(12<<2)|2,{54,54,0}}, +/* 29134 */ {(12<<2)|2,{54,54,0}}, +/* 29135 */ {(12<<2)|2,{54,54,0}}, +/* 29136 */ {(12<<2)|2,{54,55,0}}, +/* 29137 */ {(12<<2)|2,{54,55,0}}, +/* 29138 */ {(12<<2)|2,{54,55,0}}, +/* 29139 */ {(12<<2)|2,{54,55,0}}, +/* 29140 */ {(12<<2)|2,{54,55,0}}, +/* 29141 */ {(12<<2)|2,{54,55,0}}, +/* 29142 */ {(12<<2)|2,{54,55,0}}, +/* 29143 */ {(12<<2)|2,{54,55,0}}, +/* 29144 */ {(12<<2)|2,{54,55,0}}, +/* 29145 */ {(12<<2)|2,{54,55,0}}, +/* 29146 */ {(12<<2)|2,{54,55,0}}, +/* 29147 */ {(12<<2)|2,{54,55,0}}, +/* 29148 */ {(12<<2)|2,{54,55,0}}, +/* 29149 */ {(12<<2)|2,{54,55,0}}, +/* 29150 */ {(12<<2)|2,{54,55,0}}, +/* 29151 */ {(12<<2)|2,{54,55,0}}, +/* 29152 */ {(12<<2)|2,{54,56,0}}, +/* 29153 */ {(12<<2)|2,{54,56,0}}, +/* 29154 */ {(12<<2)|2,{54,56,0}}, +/* 29155 */ {(12<<2)|2,{54,56,0}}, +/* 29156 */ {(12<<2)|2,{54,56,0}}, +/* 29157 */ {(12<<2)|2,{54,56,0}}, +/* 29158 */ {(12<<2)|2,{54,56,0}}, +/* 29159 */ {(12<<2)|2,{54,56,0}}, +/* 29160 */ {(12<<2)|2,{54,56,0}}, +/* 29161 */ {(12<<2)|2,{54,56,0}}, +/* 29162 */ {(12<<2)|2,{54,56,0}}, +/* 29163 */ {(12<<2)|2,{54,56,0}}, +/* 29164 */ {(12<<2)|2,{54,56,0}}, +/* 29165 */ {(12<<2)|2,{54,56,0}}, +/* 29166 */ {(12<<2)|2,{54,56,0}}, +/* 29167 */ {(12<<2)|2,{54,56,0}}, +/* 29168 */ {(12<<2)|2,{54,57,0}}, +/* 29169 */ {(12<<2)|2,{54,57,0}}, +/* 29170 */ {(12<<2)|2,{54,57,0}}, +/* 29171 */ {(12<<2)|2,{54,57,0}}, +/* 29172 */ {(12<<2)|2,{54,57,0}}, +/* 29173 */ {(12<<2)|2,{54,57,0}}, +/* 29174 */ {(12<<2)|2,{54,57,0}}, +/* 29175 */ {(12<<2)|2,{54,57,0}}, +/* 29176 */ {(12<<2)|2,{54,57,0}}, +/* 29177 */ {(12<<2)|2,{54,57,0}}, +/* 29178 */ {(12<<2)|2,{54,57,0}}, +/* 29179 */ {(12<<2)|2,{54,57,0}}, +/* 29180 */ {(12<<2)|2,{54,57,0}}, +/* 29181 */ {(12<<2)|2,{54,57,0}}, +/* 29182 */ {(12<<2)|2,{54,57,0}}, +/* 29183 */ {(12<<2)|2,{54,57,0}}, +/* 29184 */ {(12<<2)|2,{54,61,0}}, +/* 29185 */ {(12<<2)|2,{54,61,0}}, +/* 29186 */ {(12<<2)|2,{54,61,0}}, +/* 29187 */ {(12<<2)|2,{54,61,0}}, +/* 29188 */ {(12<<2)|2,{54,61,0}}, +/* 29189 */ {(12<<2)|2,{54,61,0}}, +/* 29190 */ {(12<<2)|2,{54,61,0}}, +/* 29191 */ {(12<<2)|2,{54,61,0}}, +/* 29192 */ {(12<<2)|2,{54,61,0}}, +/* 29193 */ {(12<<2)|2,{54,61,0}}, +/* 29194 */ {(12<<2)|2,{54,61,0}}, +/* 29195 */ {(12<<2)|2,{54,61,0}}, +/* 29196 */ {(12<<2)|2,{54,61,0}}, +/* 29197 */ {(12<<2)|2,{54,61,0}}, +/* 29198 */ {(12<<2)|2,{54,61,0}}, +/* 29199 */ {(12<<2)|2,{54,61,0}}, +/* 29200 */ {(12<<2)|2,{54,65,0}}, +/* 29201 */ {(12<<2)|2,{54,65,0}}, +/* 29202 */ {(12<<2)|2,{54,65,0}}, +/* 29203 */ {(12<<2)|2,{54,65,0}}, +/* 29204 */ {(12<<2)|2,{54,65,0}}, +/* 29205 */ {(12<<2)|2,{54,65,0}}, +/* 29206 */ {(12<<2)|2,{54,65,0}}, +/* 29207 */ {(12<<2)|2,{54,65,0}}, +/* 29208 */ {(12<<2)|2,{54,65,0}}, +/* 29209 */ {(12<<2)|2,{54,65,0}}, +/* 29210 */ {(12<<2)|2,{54,65,0}}, +/* 29211 */ {(12<<2)|2,{54,65,0}}, +/* 29212 */ {(12<<2)|2,{54,65,0}}, +/* 29213 */ {(12<<2)|2,{54,65,0}}, +/* 29214 */ {(12<<2)|2,{54,65,0}}, +/* 29215 */ {(12<<2)|2,{54,65,0}}, +/* 29216 */ {(12<<2)|2,{54,95,0}}, +/* 29217 */ {(12<<2)|2,{54,95,0}}, +/* 29218 */ {(12<<2)|2,{54,95,0}}, +/* 29219 */ {(12<<2)|2,{54,95,0}}, +/* 29220 */ {(12<<2)|2,{54,95,0}}, +/* 29221 */ {(12<<2)|2,{54,95,0}}, +/* 29222 */ {(12<<2)|2,{54,95,0}}, +/* 29223 */ {(12<<2)|2,{54,95,0}}, +/* 29224 */ {(12<<2)|2,{54,95,0}}, +/* 29225 */ {(12<<2)|2,{54,95,0}}, +/* 29226 */ {(12<<2)|2,{54,95,0}}, +/* 29227 */ {(12<<2)|2,{54,95,0}}, +/* 29228 */ {(12<<2)|2,{54,95,0}}, +/* 29229 */ {(12<<2)|2,{54,95,0}}, +/* 29230 */ {(12<<2)|2,{54,95,0}}, +/* 29231 */ {(12<<2)|2,{54,95,0}}, +/* 29232 */ {(12<<2)|2,{54,98,0}}, +/* 29233 */ {(12<<2)|2,{54,98,0}}, +/* 29234 */ {(12<<2)|2,{54,98,0}}, +/* 29235 */ {(12<<2)|2,{54,98,0}}, +/* 29236 */ {(12<<2)|2,{54,98,0}}, +/* 29237 */ {(12<<2)|2,{54,98,0}}, +/* 29238 */ {(12<<2)|2,{54,98,0}}, +/* 29239 */ {(12<<2)|2,{54,98,0}}, +/* 29240 */ {(12<<2)|2,{54,98,0}}, +/* 29241 */ {(12<<2)|2,{54,98,0}}, +/* 29242 */ {(12<<2)|2,{54,98,0}}, +/* 29243 */ {(12<<2)|2,{54,98,0}}, +/* 29244 */ {(12<<2)|2,{54,98,0}}, +/* 29245 */ {(12<<2)|2,{54,98,0}}, +/* 29246 */ {(12<<2)|2,{54,98,0}}, +/* 29247 */ {(12<<2)|2,{54,98,0}}, +/* 29248 */ {(12<<2)|2,{54,100,0}}, +/* 29249 */ {(12<<2)|2,{54,100,0}}, +/* 29250 */ {(12<<2)|2,{54,100,0}}, +/* 29251 */ {(12<<2)|2,{54,100,0}}, +/* 29252 */ {(12<<2)|2,{54,100,0}}, +/* 29253 */ {(12<<2)|2,{54,100,0}}, +/* 29254 */ {(12<<2)|2,{54,100,0}}, +/* 29255 */ {(12<<2)|2,{54,100,0}}, +/* 29256 */ {(12<<2)|2,{54,100,0}}, +/* 29257 */ {(12<<2)|2,{54,100,0}}, +/* 29258 */ {(12<<2)|2,{54,100,0}}, +/* 29259 */ {(12<<2)|2,{54,100,0}}, +/* 29260 */ {(12<<2)|2,{54,100,0}}, +/* 29261 */ {(12<<2)|2,{54,100,0}}, +/* 29262 */ {(12<<2)|2,{54,100,0}}, +/* 29263 */ {(12<<2)|2,{54,100,0}}, +/* 29264 */ {(12<<2)|2,{54,102,0}}, +/* 29265 */ {(12<<2)|2,{54,102,0}}, +/* 29266 */ {(12<<2)|2,{54,102,0}}, +/* 29267 */ {(12<<2)|2,{54,102,0}}, +/* 29268 */ {(12<<2)|2,{54,102,0}}, +/* 29269 */ {(12<<2)|2,{54,102,0}}, +/* 29270 */ {(12<<2)|2,{54,102,0}}, +/* 29271 */ {(12<<2)|2,{54,102,0}}, +/* 29272 */ {(12<<2)|2,{54,102,0}}, +/* 29273 */ {(12<<2)|2,{54,102,0}}, +/* 29274 */ {(12<<2)|2,{54,102,0}}, +/* 29275 */ {(12<<2)|2,{54,102,0}}, +/* 29276 */ {(12<<2)|2,{54,102,0}}, +/* 29277 */ {(12<<2)|2,{54,102,0}}, +/* 29278 */ {(12<<2)|2,{54,102,0}}, +/* 29279 */ {(12<<2)|2,{54,102,0}}, +/* 29280 */ {(12<<2)|2,{54,103,0}}, +/* 29281 */ {(12<<2)|2,{54,103,0}}, +/* 29282 */ {(12<<2)|2,{54,103,0}}, +/* 29283 */ {(12<<2)|2,{54,103,0}}, +/* 29284 */ {(12<<2)|2,{54,103,0}}, +/* 29285 */ {(12<<2)|2,{54,103,0}}, +/* 29286 */ {(12<<2)|2,{54,103,0}}, +/* 29287 */ {(12<<2)|2,{54,103,0}}, +/* 29288 */ {(12<<2)|2,{54,103,0}}, +/* 29289 */ {(12<<2)|2,{54,103,0}}, +/* 29290 */ {(12<<2)|2,{54,103,0}}, +/* 29291 */ {(12<<2)|2,{54,103,0}}, +/* 29292 */ {(12<<2)|2,{54,103,0}}, +/* 29293 */ {(12<<2)|2,{54,103,0}}, +/* 29294 */ {(12<<2)|2,{54,103,0}}, +/* 29295 */ {(12<<2)|2,{54,103,0}}, +/* 29296 */ {(12<<2)|2,{54,104,0}}, +/* 29297 */ {(12<<2)|2,{54,104,0}}, +/* 29298 */ {(12<<2)|2,{54,104,0}}, +/* 29299 */ {(12<<2)|2,{54,104,0}}, +/* 29300 */ {(12<<2)|2,{54,104,0}}, +/* 29301 */ {(12<<2)|2,{54,104,0}}, +/* 29302 */ {(12<<2)|2,{54,104,0}}, +/* 29303 */ {(12<<2)|2,{54,104,0}}, +/* 29304 */ {(12<<2)|2,{54,104,0}}, +/* 29305 */ {(12<<2)|2,{54,104,0}}, +/* 29306 */ {(12<<2)|2,{54,104,0}}, +/* 29307 */ {(12<<2)|2,{54,104,0}}, +/* 29308 */ {(12<<2)|2,{54,104,0}}, +/* 29309 */ {(12<<2)|2,{54,104,0}}, +/* 29310 */ {(12<<2)|2,{54,104,0}}, +/* 29311 */ {(12<<2)|2,{54,104,0}}, +/* 29312 */ {(12<<2)|2,{54,108,0}}, +/* 29313 */ {(12<<2)|2,{54,108,0}}, +/* 29314 */ {(12<<2)|2,{54,108,0}}, +/* 29315 */ {(12<<2)|2,{54,108,0}}, +/* 29316 */ {(12<<2)|2,{54,108,0}}, +/* 29317 */ {(12<<2)|2,{54,108,0}}, +/* 29318 */ {(12<<2)|2,{54,108,0}}, +/* 29319 */ {(12<<2)|2,{54,108,0}}, +/* 29320 */ {(12<<2)|2,{54,108,0}}, +/* 29321 */ {(12<<2)|2,{54,108,0}}, +/* 29322 */ {(12<<2)|2,{54,108,0}}, +/* 29323 */ {(12<<2)|2,{54,108,0}}, +/* 29324 */ {(12<<2)|2,{54,108,0}}, +/* 29325 */ {(12<<2)|2,{54,108,0}}, +/* 29326 */ {(12<<2)|2,{54,108,0}}, +/* 29327 */ {(12<<2)|2,{54,108,0}}, +/* 29328 */ {(12<<2)|2,{54,109,0}}, +/* 29329 */ {(12<<2)|2,{54,109,0}}, +/* 29330 */ {(12<<2)|2,{54,109,0}}, +/* 29331 */ {(12<<2)|2,{54,109,0}}, +/* 29332 */ {(12<<2)|2,{54,109,0}}, +/* 29333 */ {(12<<2)|2,{54,109,0}}, +/* 29334 */ {(12<<2)|2,{54,109,0}}, +/* 29335 */ {(12<<2)|2,{54,109,0}}, +/* 29336 */ {(12<<2)|2,{54,109,0}}, +/* 29337 */ {(12<<2)|2,{54,109,0}}, +/* 29338 */ {(12<<2)|2,{54,109,0}}, +/* 29339 */ {(12<<2)|2,{54,109,0}}, +/* 29340 */ {(12<<2)|2,{54,109,0}}, +/* 29341 */ {(12<<2)|2,{54,109,0}}, +/* 29342 */ {(12<<2)|2,{54,109,0}}, +/* 29343 */ {(12<<2)|2,{54,109,0}}, +/* 29344 */ {(12<<2)|2,{54,110,0}}, +/* 29345 */ {(12<<2)|2,{54,110,0}}, +/* 29346 */ {(12<<2)|2,{54,110,0}}, +/* 29347 */ {(12<<2)|2,{54,110,0}}, +/* 29348 */ {(12<<2)|2,{54,110,0}}, +/* 29349 */ {(12<<2)|2,{54,110,0}}, +/* 29350 */ {(12<<2)|2,{54,110,0}}, +/* 29351 */ {(12<<2)|2,{54,110,0}}, +/* 29352 */ {(12<<2)|2,{54,110,0}}, +/* 29353 */ {(12<<2)|2,{54,110,0}}, +/* 29354 */ {(12<<2)|2,{54,110,0}}, +/* 29355 */ {(12<<2)|2,{54,110,0}}, +/* 29356 */ {(12<<2)|2,{54,110,0}}, +/* 29357 */ {(12<<2)|2,{54,110,0}}, +/* 29358 */ {(12<<2)|2,{54,110,0}}, +/* 29359 */ {(12<<2)|2,{54,110,0}}, +/* 29360 */ {(12<<2)|2,{54,112,0}}, +/* 29361 */ {(12<<2)|2,{54,112,0}}, +/* 29362 */ {(12<<2)|2,{54,112,0}}, +/* 29363 */ {(12<<2)|2,{54,112,0}}, +/* 29364 */ {(12<<2)|2,{54,112,0}}, +/* 29365 */ {(12<<2)|2,{54,112,0}}, +/* 29366 */ {(12<<2)|2,{54,112,0}}, +/* 29367 */ {(12<<2)|2,{54,112,0}}, +/* 29368 */ {(12<<2)|2,{54,112,0}}, +/* 29369 */ {(12<<2)|2,{54,112,0}}, +/* 29370 */ {(12<<2)|2,{54,112,0}}, +/* 29371 */ {(12<<2)|2,{54,112,0}}, +/* 29372 */ {(12<<2)|2,{54,112,0}}, +/* 29373 */ {(12<<2)|2,{54,112,0}}, +/* 29374 */ {(12<<2)|2,{54,112,0}}, +/* 29375 */ {(12<<2)|2,{54,112,0}}, +/* 29376 */ {(12<<2)|2,{54,114,0}}, +/* 29377 */ {(12<<2)|2,{54,114,0}}, +/* 29378 */ {(12<<2)|2,{54,114,0}}, +/* 29379 */ {(12<<2)|2,{54,114,0}}, +/* 29380 */ {(12<<2)|2,{54,114,0}}, +/* 29381 */ {(12<<2)|2,{54,114,0}}, +/* 29382 */ {(12<<2)|2,{54,114,0}}, +/* 29383 */ {(12<<2)|2,{54,114,0}}, +/* 29384 */ {(12<<2)|2,{54,114,0}}, +/* 29385 */ {(12<<2)|2,{54,114,0}}, +/* 29386 */ {(12<<2)|2,{54,114,0}}, +/* 29387 */ {(12<<2)|2,{54,114,0}}, +/* 29388 */ {(12<<2)|2,{54,114,0}}, +/* 29389 */ {(12<<2)|2,{54,114,0}}, +/* 29390 */ {(12<<2)|2,{54,114,0}}, +/* 29391 */ {(12<<2)|2,{54,114,0}}, +/* 29392 */ {(12<<2)|2,{54,117,0}}, +/* 29393 */ {(12<<2)|2,{54,117,0}}, +/* 29394 */ {(12<<2)|2,{54,117,0}}, +/* 29395 */ {(12<<2)|2,{54,117,0}}, +/* 29396 */ {(12<<2)|2,{54,117,0}}, +/* 29397 */ {(12<<2)|2,{54,117,0}}, +/* 29398 */ {(12<<2)|2,{54,117,0}}, +/* 29399 */ {(12<<2)|2,{54,117,0}}, +/* 29400 */ {(12<<2)|2,{54,117,0}}, +/* 29401 */ {(12<<2)|2,{54,117,0}}, +/* 29402 */ {(12<<2)|2,{54,117,0}}, +/* 29403 */ {(12<<2)|2,{54,117,0}}, +/* 29404 */ {(12<<2)|2,{54,117,0}}, +/* 29405 */ {(12<<2)|2,{54,117,0}}, +/* 29406 */ {(12<<2)|2,{54,117,0}}, +/* 29407 */ {(12<<2)|2,{54,117,0}}, +/* 29408 */ {(13<<2)|2,{54,58,0}}, +/* 29409 */ {(13<<2)|2,{54,58,0}}, +/* 29410 */ {(13<<2)|2,{54,58,0}}, +/* 29411 */ {(13<<2)|2,{54,58,0}}, +/* 29412 */ {(13<<2)|2,{54,58,0}}, +/* 29413 */ {(13<<2)|2,{54,58,0}}, +/* 29414 */ {(13<<2)|2,{54,58,0}}, +/* 29415 */ {(13<<2)|2,{54,58,0}}, +/* 29416 */ {(13<<2)|2,{54,66,0}}, +/* 29417 */ {(13<<2)|2,{54,66,0}}, +/* 29418 */ {(13<<2)|2,{54,66,0}}, +/* 29419 */ {(13<<2)|2,{54,66,0}}, +/* 29420 */ {(13<<2)|2,{54,66,0}}, +/* 29421 */ {(13<<2)|2,{54,66,0}}, +/* 29422 */ {(13<<2)|2,{54,66,0}}, +/* 29423 */ {(13<<2)|2,{54,66,0}}, +/* 29424 */ {(13<<2)|2,{54,67,0}}, +/* 29425 */ {(13<<2)|2,{54,67,0}}, +/* 29426 */ {(13<<2)|2,{54,67,0}}, +/* 29427 */ {(13<<2)|2,{54,67,0}}, +/* 29428 */ {(13<<2)|2,{54,67,0}}, +/* 29429 */ {(13<<2)|2,{54,67,0}}, +/* 29430 */ {(13<<2)|2,{54,67,0}}, +/* 29431 */ {(13<<2)|2,{54,67,0}}, +/* 29432 */ {(13<<2)|2,{54,68,0}}, +/* 29433 */ {(13<<2)|2,{54,68,0}}, +/* 29434 */ {(13<<2)|2,{54,68,0}}, +/* 29435 */ {(13<<2)|2,{54,68,0}}, +/* 29436 */ {(13<<2)|2,{54,68,0}}, +/* 29437 */ {(13<<2)|2,{54,68,0}}, +/* 29438 */ {(13<<2)|2,{54,68,0}}, +/* 29439 */ {(13<<2)|2,{54,68,0}}, +/* 29440 */ {(13<<2)|2,{54,69,0}}, +/* 29441 */ {(13<<2)|2,{54,69,0}}, +/* 29442 */ {(13<<2)|2,{54,69,0}}, +/* 29443 */ {(13<<2)|2,{54,69,0}}, +/* 29444 */ {(13<<2)|2,{54,69,0}}, +/* 29445 */ {(13<<2)|2,{54,69,0}}, +/* 29446 */ {(13<<2)|2,{54,69,0}}, +/* 29447 */ {(13<<2)|2,{54,69,0}}, +/* 29448 */ {(13<<2)|2,{54,70,0}}, +/* 29449 */ {(13<<2)|2,{54,70,0}}, +/* 29450 */ {(13<<2)|2,{54,70,0}}, +/* 29451 */ {(13<<2)|2,{54,70,0}}, +/* 29452 */ {(13<<2)|2,{54,70,0}}, +/* 29453 */ {(13<<2)|2,{54,70,0}}, +/* 29454 */ {(13<<2)|2,{54,70,0}}, +/* 29455 */ {(13<<2)|2,{54,70,0}}, +/* 29456 */ {(13<<2)|2,{54,71,0}}, +/* 29457 */ {(13<<2)|2,{54,71,0}}, +/* 29458 */ {(13<<2)|2,{54,71,0}}, +/* 29459 */ {(13<<2)|2,{54,71,0}}, +/* 29460 */ {(13<<2)|2,{54,71,0}}, +/* 29461 */ {(13<<2)|2,{54,71,0}}, +/* 29462 */ {(13<<2)|2,{54,71,0}}, +/* 29463 */ {(13<<2)|2,{54,71,0}}, +/* 29464 */ {(13<<2)|2,{54,72,0}}, +/* 29465 */ {(13<<2)|2,{54,72,0}}, +/* 29466 */ {(13<<2)|2,{54,72,0}}, +/* 29467 */ {(13<<2)|2,{54,72,0}}, +/* 29468 */ {(13<<2)|2,{54,72,0}}, +/* 29469 */ {(13<<2)|2,{54,72,0}}, +/* 29470 */ {(13<<2)|2,{54,72,0}}, +/* 29471 */ {(13<<2)|2,{54,72,0}}, +/* 29472 */ {(13<<2)|2,{54,73,0}}, +/* 29473 */ {(13<<2)|2,{54,73,0}}, +/* 29474 */ {(13<<2)|2,{54,73,0}}, +/* 29475 */ {(13<<2)|2,{54,73,0}}, +/* 29476 */ {(13<<2)|2,{54,73,0}}, +/* 29477 */ {(13<<2)|2,{54,73,0}}, +/* 29478 */ {(13<<2)|2,{54,73,0}}, +/* 29479 */ {(13<<2)|2,{54,73,0}}, +/* 29480 */ {(13<<2)|2,{54,74,0}}, +/* 29481 */ {(13<<2)|2,{54,74,0}}, +/* 29482 */ {(13<<2)|2,{54,74,0}}, +/* 29483 */ {(13<<2)|2,{54,74,0}}, +/* 29484 */ {(13<<2)|2,{54,74,0}}, +/* 29485 */ {(13<<2)|2,{54,74,0}}, +/* 29486 */ {(13<<2)|2,{54,74,0}}, +/* 29487 */ {(13<<2)|2,{54,74,0}}, +/* 29488 */ {(13<<2)|2,{54,75,0}}, +/* 29489 */ {(13<<2)|2,{54,75,0}}, +/* 29490 */ {(13<<2)|2,{54,75,0}}, +/* 29491 */ {(13<<2)|2,{54,75,0}}, +/* 29492 */ {(13<<2)|2,{54,75,0}}, +/* 29493 */ {(13<<2)|2,{54,75,0}}, +/* 29494 */ {(13<<2)|2,{54,75,0}}, +/* 29495 */ {(13<<2)|2,{54,75,0}}, +/* 29496 */ {(13<<2)|2,{54,76,0}}, +/* 29497 */ {(13<<2)|2,{54,76,0}}, +/* 29498 */ {(13<<2)|2,{54,76,0}}, +/* 29499 */ {(13<<2)|2,{54,76,0}}, +/* 29500 */ {(13<<2)|2,{54,76,0}}, +/* 29501 */ {(13<<2)|2,{54,76,0}}, +/* 29502 */ {(13<<2)|2,{54,76,0}}, +/* 29503 */ {(13<<2)|2,{54,76,0}}, +/* 29504 */ {(13<<2)|2,{54,77,0}}, +/* 29505 */ {(13<<2)|2,{54,77,0}}, +/* 29506 */ {(13<<2)|2,{54,77,0}}, +/* 29507 */ {(13<<2)|2,{54,77,0}}, +/* 29508 */ {(13<<2)|2,{54,77,0}}, +/* 29509 */ {(13<<2)|2,{54,77,0}}, +/* 29510 */ {(13<<2)|2,{54,77,0}}, +/* 29511 */ {(13<<2)|2,{54,77,0}}, +/* 29512 */ {(13<<2)|2,{54,78,0}}, +/* 29513 */ {(13<<2)|2,{54,78,0}}, +/* 29514 */ {(13<<2)|2,{54,78,0}}, +/* 29515 */ {(13<<2)|2,{54,78,0}}, +/* 29516 */ {(13<<2)|2,{54,78,0}}, +/* 29517 */ {(13<<2)|2,{54,78,0}}, +/* 29518 */ {(13<<2)|2,{54,78,0}}, +/* 29519 */ {(13<<2)|2,{54,78,0}}, +/* 29520 */ {(13<<2)|2,{54,79,0}}, +/* 29521 */ {(13<<2)|2,{54,79,0}}, +/* 29522 */ {(13<<2)|2,{54,79,0}}, +/* 29523 */ {(13<<2)|2,{54,79,0}}, +/* 29524 */ {(13<<2)|2,{54,79,0}}, +/* 29525 */ {(13<<2)|2,{54,79,0}}, +/* 29526 */ {(13<<2)|2,{54,79,0}}, +/* 29527 */ {(13<<2)|2,{54,79,0}}, +/* 29528 */ {(13<<2)|2,{54,80,0}}, +/* 29529 */ {(13<<2)|2,{54,80,0}}, +/* 29530 */ {(13<<2)|2,{54,80,0}}, +/* 29531 */ {(13<<2)|2,{54,80,0}}, +/* 29532 */ {(13<<2)|2,{54,80,0}}, +/* 29533 */ {(13<<2)|2,{54,80,0}}, +/* 29534 */ {(13<<2)|2,{54,80,0}}, +/* 29535 */ {(13<<2)|2,{54,80,0}}, +/* 29536 */ {(13<<2)|2,{54,81,0}}, +/* 29537 */ {(13<<2)|2,{54,81,0}}, +/* 29538 */ {(13<<2)|2,{54,81,0}}, +/* 29539 */ {(13<<2)|2,{54,81,0}}, +/* 29540 */ {(13<<2)|2,{54,81,0}}, +/* 29541 */ {(13<<2)|2,{54,81,0}}, +/* 29542 */ {(13<<2)|2,{54,81,0}}, +/* 29543 */ {(13<<2)|2,{54,81,0}}, +/* 29544 */ {(13<<2)|2,{54,82,0}}, +/* 29545 */ {(13<<2)|2,{54,82,0}}, +/* 29546 */ {(13<<2)|2,{54,82,0}}, +/* 29547 */ {(13<<2)|2,{54,82,0}}, +/* 29548 */ {(13<<2)|2,{54,82,0}}, +/* 29549 */ {(13<<2)|2,{54,82,0}}, +/* 29550 */ {(13<<2)|2,{54,82,0}}, +/* 29551 */ {(13<<2)|2,{54,82,0}}, +/* 29552 */ {(13<<2)|2,{54,83,0}}, +/* 29553 */ {(13<<2)|2,{54,83,0}}, +/* 29554 */ {(13<<2)|2,{54,83,0}}, +/* 29555 */ {(13<<2)|2,{54,83,0}}, +/* 29556 */ {(13<<2)|2,{54,83,0}}, +/* 29557 */ {(13<<2)|2,{54,83,0}}, +/* 29558 */ {(13<<2)|2,{54,83,0}}, +/* 29559 */ {(13<<2)|2,{54,83,0}}, +/* 29560 */ {(13<<2)|2,{54,84,0}}, +/* 29561 */ {(13<<2)|2,{54,84,0}}, +/* 29562 */ {(13<<2)|2,{54,84,0}}, +/* 29563 */ {(13<<2)|2,{54,84,0}}, +/* 29564 */ {(13<<2)|2,{54,84,0}}, +/* 29565 */ {(13<<2)|2,{54,84,0}}, +/* 29566 */ {(13<<2)|2,{54,84,0}}, +/* 29567 */ {(13<<2)|2,{54,84,0}}, +/* 29568 */ {(13<<2)|2,{54,85,0}}, +/* 29569 */ {(13<<2)|2,{54,85,0}}, +/* 29570 */ {(13<<2)|2,{54,85,0}}, +/* 29571 */ {(13<<2)|2,{54,85,0}}, +/* 29572 */ {(13<<2)|2,{54,85,0}}, +/* 29573 */ {(13<<2)|2,{54,85,0}}, +/* 29574 */ {(13<<2)|2,{54,85,0}}, +/* 29575 */ {(13<<2)|2,{54,85,0}}, +/* 29576 */ {(13<<2)|2,{54,86,0}}, +/* 29577 */ {(13<<2)|2,{54,86,0}}, +/* 29578 */ {(13<<2)|2,{54,86,0}}, +/* 29579 */ {(13<<2)|2,{54,86,0}}, +/* 29580 */ {(13<<2)|2,{54,86,0}}, +/* 29581 */ {(13<<2)|2,{54,86,0}}, +/* 29582 */ {(13<<2)|2,{54,86,0}}, +/* 29583 */ {(13<<2)|2,{54,86,0}}, +/* 29584 */ {(13<<2)|2,{54,87,0}}, +/* 29585 */ {(13<<2)|2,{54,87,0}}, +/* 29586 */ {(13<<2)|2,{54,87,0}}, +/* 29587 */ {(13<<2)|2,{54,87,0}}, +/* 29588 */ {(13<<2)|2,{54,87,0}}, +/* 29589 */ {(13<<2)|2,{54,87,0}}, +/* 29590 */ {(13<<2)|2,{54,87,0}}, +/* 29591 */ {(13<<2)|2,{54,87,0}}, +/* 29592 */ {(13<<2)|2,{54,89,0}}, +/* 29593 */ {(13<<2)|2,{54,89,0}}, +/* 29594 */ {(13<<2)|2,{54,89,0}}, +/* 29595 */ {(13<<2)|2,{54,89,0}}, +/* 29596 */ {(13<<2)|2,{54,89,0}}, +/* 29597 */ {(13<<2)|2,{54,89,0}}, +/* 29598 */ {(13<<2)|2,{54,89,0}}, +/* 29599 */ {(13<<2)|2,{54,89,0}}, +/* 29600 */ {(13<<2)|2,{54,106,0}}, +/* 29601 */ {(13<<2)|2,{54,106,0}}, +/* 29602 */ {(13<<2)|2,{54,106,0}}, +/* 29603 */ {(13<<2)|2,{54,106,0}}, +/* 29604 */ {(13<<2)|2,{54,106,0}}, +/* 29605 */ {(13<<2)|2,{54,106,0}}, +/* 29606 */ {(13<<2)|2,{54,106,0}}, +/* 29607 */ {(13<<2)|2,{54,106,0}}, +/* 29608 */ {(13<<2)|2,{54,107,0}}, +/* 29609 */ {(13<<2)|2,{54,107,0}}, +/* 29610 */ {(13<<2)|2,{54,107,0}}, +/* 29611 */ {(13<<2)|2,{54,107,0}}, +/* 29612 */ {(13<<2)|2,{54,107,0}}, +/* 29613 */ {(13<<2)|2,{54,107,0}}, +/* 29614 */ {(13<<2)|2,{54,107,0}}, +/* 29615 */ {(13<<2)|2,{54,107,0}}, +/* 29616 */ {(13<<2)|2,{54,113,0}}, +/* 29617 */ {(13<<2)|2,{54,113,0}}, +/* 29618 */ {(13<<2)|2,{54,113,0}}, +/* 29619 */ {(13<<2)|2,{54,113,0}}, +/* 29620 */ {(13<<2)|2,{54,113,0}}, +/* 29621 */ {(13<<2)|2,{54,113,0}}, +/* 29622 */ {(13<<2)|2,{54,113,0}}, +/* 29623 */ {(13<<2)|2,{54,113,0}}, +/* 29624 */ {(13<<2)|2,{54,118,0}}, +/* 29625 */ {(13<<2)|2,{54,118,0}}, +/* 29626 */ {(13<<2)|2,{54,118,0}}, +/* 29627 */ {(13<<2)|2,{54,118,0}}, +/* 29628 */ {(13<<2)|2,{54,118,0}}, +/* 29629 */ {(13<<2)|2,{54,118,0}}, +/* 29630 */ {(13<<2)|2,{54,118,0}}, +/* 29631 */ {(13<<2)|2,{54,118,0}}, +/* 29632 */ {(13<<2)|2,{54,119,0}}, +/* 29633 */ {(13<<2)|2,{54,119,0}}, +/* 29634 */ {(13<<2)|2,{54,119,0}}, +/* 29635 */ {(13<<2)|2,{54,119,0}}, +/* 29636 */ {(13<<2)|2,{54,119,0}}, +/* 29637 */ {(13<<2)|2,{54,119,0}}, +/* 29638 */ {(13<<2)|2,{54,119,0}}, +/* 29639 */ {(13<<2)|2,{54,119,0}}, +/* 29640 */ {(13<<2)|2,{54,120,0}}, +/* 29641 */ {(13<<2)|2,{54,120,0}}, +/* 29642 */ {(13<<2)|2,{54,120,0}}, +/* 29643 */ {(13<<2)|2,{54,120,0}}, +/* 29644 */ {(13<<2)|2,{54,120,0}}, +/* 29645 */ {(13<<2)|2,{54,120,0}}, +/* 29646 */ {(13<<2)|2,{54,120,0}}, +/* 29647 */ {(13<<2)|2,{54,120,0}}, +/* 29648 */ {(13<<2)|2,{54,121,0}}, +/* 29649 */ {(13<<2)|2,{54,121,0}}, +/* 29650 */ {(13<<2)|2,{54,121,0}}, +/* 29651 */ {(13<<2)|2,{54,121,0}}, +/* 29652 */ {(13<<2)|2,{54,121,0}}, +/* 29653 */ {(13<<2)|2,{54,121,0}}, +/* 29654 */ {(13<<2)|2,{54,121,0}}, +/* 29655 */ {(13<<2)|2,{54,121,0}}, +/* 29656 */ {(13<<2)|2,{54,122,0}}, +/* 29657 */ {(13<<2)|2,{54,122,0}}, +/* 29658 */ {(13<<2)|2,{54,122,0}}, +/* 29659 */ {(13<<2)|2,{54,122,0}}, +/* 29660 */ {(13<<2)|2,{54,122,0}}, +/* 29661 */ {(13<<2)|2,{54,122,0}}, +/* 29662 */ {(13<<2)|2,{54,122,0}}, +/* 29663 */ {(13<<2)|2,{54,122,0}}, +/* 29664 */ {(14<<2)|2,{54,38,0}}, +/* 29665 */ {(14<<2)|2,{54,38,0}}, +/* 29666 */ {(14<<2)|2,{54,38,0}}, +/* 29667 */ {(14<<2)|2,{54,38,0}}, +/* 29668 */ {(14<<2)|2,{54,42,0}}, +/* 29669 */ {(14<<2)|2,{54,42,0}}, +/* 29670 */ {(14<<2)|2,{54,42,0}}, +/* 29671 */ {(14<<2)|2,{54,42,0}}, +/* 29672 */ {(14<<2)|2,{54,44,0}}, +/* 29673 */ {(14<<2)|2,{54,44,0}}, +/* 29674 */ {(14<<2)|2,{54,44,0}}, +/* 29675 */ {(14<<2)|2,{54,44,0}}, +/* 29676 */ {(14<<2)|2,{54,59,0}}, +/* 29677 */ {(14<<2)|2,{54,59,0}}, +/* 29678 */ {(14<<2)|2,{54,59,0}}, +/* 29679 */ {(14<<2)|2,{54,59,0}}, +/* 29680 */ {(14<<2)|2,{54,88,0}}, +/* 29681 */ {(14<<2)|2,{54,88,0}}, +/* 29682 */ {(14<<2)|2,{54,88,0}}, +/* 29683 */ {(14<<2)|2,{54,88,0}}, +/* 29684 */ {(14<<2)|2,{54,90,0}}, +/* 29685 */ {(14<<2)|2,{54,90,0}}, +/* 29686 */ {(14<<2)|2,{54,90,0}}, +/* 29687 */ {(14<<2)|2,{54,90,0}}, +/* 29688 */ {(16<<2)|2,{54,33,0}}, +/* 29689 */ {(16<<2)|2,{54,34,0}}, +/* 29690 */ {(16<<2)|2,{54,40,0}}, +/* 29691 */ {(16<<2)|2,{54,41,0}}, +/* 29692 */ {(16<<2)|2,{54,63,0}}, +/* 29693 */ {(6<<2)|1,{54,0,0}}, +/* 29694 */ {(6<<2)|1,{54,0,0}}, +/* 29695 */ {(6<<2)|1,{54,0,0}}, +/* 29696 */ {(16<<2)|3,{55,48,48}}, +/* 29697 */ {(16<<2)|3,{55,48,49}}, +/* 29698 */ {(16<<2)|3,{55,48,50}}, +/* 29699 */ {(16<<2)|3,{55,48,97}}, +/* 29700 */ {(16<<2)|3,{55,48,99}}, +/* 29701 */ {(16<<2)|3,{55,48,101}}, +/* 29702 */ {(16<<2)|3,{55,48,105}}, +/* 29703 */ {(16<<2)|3,{55,48,111}}, +/* 29704 */ {(16<<2)|3,{55,48,115}}, +/* 29705 */ {(16<<2)|3,{55,48,116}}, +/* 29706 */ {(11<<2)|2,{55,48,0}}, +/* 29707 */ {(11<<2)|2,{55,48,0}}, +/* 29708 */ {(11<<2)|2,{55,48,0}}, +/* 29709 */ {(11<<2)|2,{55,48,0}}, +/* 29710 */ {(11<<2)|2,{55,48,0}}, +/* 29711 */ {(11<<2)|2,{55,48,0}}, +/* 29712 */ {(11<<2)|2,{55,48,0}}, +/* 29713 */ {(11<<2)|2,{55,48,0}}, +/* 29714 */ {(11<<2)|2,{55,48,0}}, +/* 29715 */ {(11<<2)|2,{55,48,0}}, +/* 29716 */ {(11<<2)|2,{55,48,0}}, +/* 29717 */ {(11<<2)|2,{55,48,0}}, +/* 29718 */ {(11<<2)|2,{55,48,0}}, +/* 29719 */ {(11<<2)|2,{55,48,0}}, +/* 29720 */ {(11<<2)|2,{55,48,0}}, +/* 29721 */ {(11<<2)|2,{55,48,0}}, +/* 29722 */ {(11<<2)|2,{55,48,0}}, +/* 29723 */ {(11<<2)|2,{55,48,0}}, +/* 29724 */ {(11<<2)|2,{55,48,0}}, +/* 29725 */ {(11<<2)|2,{55,48,0}}, +/* 29726 */ {(11<<2)|2,{55,48,0}}, +/* 29727 */ {(11<<2)|2,{55,48,0}}, +/* 29728 */ {(16<<2)|3,{55,49,48}}, +/* 29729 */ {(16<<2)|3,{55,49,49}}, +/* 29730 */ {(16<<2)|3,{55,49,50}}, +/* 29731 */ {(16<<2)|3,{55,49,97}}, +/* 29732 */ {(16<<2)|3,{55,49,99}}, +/* 29733 */ {(16<<2)|3,{55,49,101}}, +/* 29734 */ {(16<<2)|3,{55,49,105}}, +/* 29735 */ {(16<<2)|3,{55,49,111}}, +/* 29736 */ {(16<<2)|3,{55,49,115}}, +/* 29737 */ {(16<<2)|3,{55,49,116}}, +/* 29738 */ {(11<<2)|2,{55,49,0}}, +/* 29739 */ {(11<<2)|2,{55,49,0}}, +/* 29740 */ {(11<<2)|2,{55,49,0}}, +/* 29741 */ {(11<<2)|2,{55,49,0}}, +/* 29742 */ {(11<<2)|2,{55,49,0}}, +/* 29743 */ {(11<<2)|2,{55,49,0}}, +/* 29744 */ {(11<<2)|2,{55,49,0}}, +/* 29745 */ {(11<<2)|2,{55,49,0}}, +/* 29746 */ {(11<<2)|2,{55,49,0}}, +/* 29747 */ {(11<<2)|2,{55,49,0}}, +/* 29748 */ {(11<<2)|2,{55,49,0}}, +/* 29749 */ {(11<<2)|2,{55,49,0}}, +/* 29750 */ {(11<<2)|2,{55,49,0}}, +/* 29751 */ {(11<<2)|2,{55,49,0}}, +/* 29752 */ {(11<<2)|2,{55,49,0}}, +/* 29753 */ {(11<<2)|2,{55,49,0}}, +/* 29754 */ {(11<<2)|2,{55,49,0}}, +/* 29755 */ {(11<<2)|2,{55,49,0}}, +/* 29756 */ {(11<<2)|2,{55,49,0}}, +/* 29757 */ {(11<<2)|2,{55,49,0}}, +/* 29758 */ {(11<<2)|2,{55,49,0}}, +/* 29759 */ {(11<<2)|2,{55,49,0}}, +/* 29760 */ {(16<<2)|3,{55,50,48}}, +/* 29761 */ {(16<<2)|3,{55,50,49}}, +/* 29762 */ {(16<<2)|3,{55,50,50}}, +/* 29763 */ {(16<<2)|3,{55,50,97}}, +/* 29764 */ {(16<<2)|3,{55,50,99}}, +/* 29765 */ {(16<<2)|3,{55,50,101}}, +/* 29766 */ {(16<<2)|3,{55,50,105}}, +/* 29767 */ {(16<<2)|3,{55,50,111}}, +/* 29768 */ {(16<<2)|3,{55,50,115}}, +/* 29769 */ {(16<<2)|3,{55,50,116}}, +/* 29770 */ {(11<<2)|2,{55,50,0}}, +/* 29771 */ {(11<<2)|2,{55,50,0}}, +/* 29772 */ {(11<<2)|2,{55,50,0}}, +/* 29773 */ {(11<<2)|2,{55,50,0}}, +/* 29774 */ {(11<<2)|2,{55,50,0}}, +/* 29775 */ {(11<<2)|2,{55,50,0}}, +/* 29776 */ {(11<<2)|2,{55,50,0}}, +/* 29777 */ {(11<<2)|2,{55,50,0}}, +/* 29778 */ {(11<<2)|2,{55,50,0}}, +/* 29779 */ {(11<<2)|2,{55,50,0}}, +/* 29780 */ {(11<<2)|2,{55,50,0}}, +/* 29781 */ {(11<<2)|2,{55,50,0}}, +/* 29782 */ {(11<<2)|2,{55,50,0}}, +/* 29783 */ {(11<<2)|2,{55,50,0}}, +/* 29784 */ {(11<<2)|2,{55,50,0}}, +/* 29785 */ {(11<<2)|2,{55,50,0}}, +/* 29786 */ {(11<<2)|2,{55,50,0}}, +/* 29787 */ {(11<<2)|2,{55,50,0}}, +/* 29788 */ {(11<<2)|2,{55,50,0}}, +/* 29789 */ {(11<<2)|2,{55,50,0}}, +/* 29790 */ {(11<<2)|2,{55,50,0}}, +/* 29791 */ {(11<<2)|2,{55,50,0}}, +/* 29792 */ {(16<<2)|3,{55,97,48}}, +/* 29793 */ {(16<<2)|3,{55,97,49}}, +/* 29794 */ {(16<<2)|3,{55,97,50}}, +/* 29795 */ {(16<<2)|3,{55,97,97}}, +/* 29796 */ {(16<<2)|3,{55,97,99}}, +/* 29797 */ {(16<<2)|3,{55,97,101}}, +/* 29798 */ {(16<<2)|3,{55,97,105}}, +/* 29799 */ {(16<<2)|3,{55,97,111}}, +/* 29800 */ {(16<<2)|3,{55,97,115}}, +/* 29801 */ {(16<<2)|3,{55,97,116}}, +/* 29802 */ {(11<<2)|2,{55,97,0}}, +/* 29803 */ {(11<<2)|2,{55,97,0}}, +/* 29804 */ {(11<<2)|2,{55,97,0}}, +/* 29805 */ {(11<<2)|2,{55,97,0}}, +/* 29806 */ {(11<<2)|2,{55,97,0}}, +/* 29807 */ {(11<<2)|2,{55,97,0}}, +/* 29808 */ {(11<<2)|2,{55,97,0}}, +/* 29809 */ {(11<<2)|2,{55,97,0}}, +/* 29810 */ {(11<<2)|2,{55,97,0}}, +/* 29811 */ {(11<<2)|2,{55,97,0}}, +/* 29812 */ {(11<<2)|2,{55,97,0}}, +/* 29813 */ {(11<<2)|2,{55,97,0}}, +/* 29814 */ {(11<<2)|2,{55,97,0}}, +/* 29815 */ {(11<<2)|2,{55,97,0}}, +/* 29816 */ {(11<<2)|2,{55,97,0}}, +/* 29817 */ {(11<<2)|2,{55,97,0}}, +/* 29818 */ {(11<<2)|2,{55,97,0}}, +/* 29819 */ {(11<<2)|2,{55,97,0}}, +/* 29820 */ {(11<<2)|2,{55,97,0}}, +/* 29821 */ {(11<<2)|2,{55,97,0}}, +/* 29822 */ {(11<<2)|2,{55,97,0}}, +/* 29823 */ {(11<<2)|2,{55,97,0}}, +/* 29824 */ {(16<<2)|3,{55,99,48}}, +/* 29825 */ {(16<<2)|3,{55,99,49}}, +/* 29826 */ {(16<<2)|3,{55,99,50}}, +/* 29827 */ {(16<<2)|3,{55,99,97}}, +/* 29828 */ {(16<<2)|3,{55,99,99}}, +/* 29829 */ {(16<<2)|3,{55,99,101}}, +/* 29830 */ {(16<<2)|3,{55,99,105}}, +/* 29831 */ {(16<<2)|3,{55,99,111}}, +/* 29832 */ {(16<<2)|3,{55,99,115}}, +/* 29833 */ {(16<<2)|3,{55,99,116}}, +/* 29834 */ {(11<<2)|2,{55,99,0}}, +/* 29835 */ {(11<<2)|2,{55,99,0}}, +/* 29836 */ {(11<<2)|2,{55,99,0}}, +/* 29837 */ {(11<<2)|2,{55,99,0}}, +/* 29838 */ {(11<<2)|2,{55,99,0}}, +/* 29839 */ {(11<<2)|2,{55,99,0}}, +/* 29840 */ {(11<<2)|2,{55,99,0}}, +/* 29841 */ {(11<<2)|2,{55,99,0}}, +/* 29842 */ {(11<<2)|2,{55,99,0}}, +/* 29843 */ {(11<<2)|2,{55,99,0}}, +/* 29844 */ {(11<<2)|2,{55,99,0}}, +/* 29845 */ {(11<<2)|2,{55,99,0}}, +/* 29846 */ {(11<<2)|2,{55,99,0}}, +/* 29847 */ {(11<<2)|2,{55,99,0}}, +/* 29848 */ {(11<<2)|2,{55,99,0}}, +/* 29849 */ {(11<<2)|2,{55,99,0}}, +/* 29850 */ {(11<<2)|2,{55,99,0}}, +/* 29851 */ {(11<<2)|2,{55,99,0}}, +/* 29852 */ {(11<<2)|2,{55,99,0}}, +/* 29853 */ {(11<<2)|2,{55,99,0}}, +/* 29854 */ {(11<<2)|2,{55,99,0}}, +/* 29855 */ {(11<<2)|2,{55,99,0}}, +/* 29856 */ {(16<<2)|3,{55,101,48}}, +/* 29857 */ {(16<<2)|3,{55,101,49}}, +/* 29858 */ {(16<<2)|3,{55,101,50}}, +/* 29859 */ {(16<<2)|3,{55,101,97}}, +/* 29860 */ {(16<<2)|3,{55,101,99}}, +/* 29861 */ {(16<<2)|3,{55,101,101}}, +/* 29862 */ {(16<<2)|3,{55,101,105}}, +/* 29863 */ {(16<<2)|3,{55,101,111}}, +/* 29864 */ {(16<<2)|3,{55,101,115}}, +/* 29865 */ {(16<<2)|3,{55,101,116}}, +/* 29866 */ {(11<<2)|2,{55,101,0}}, +/* 29867 */ {(11<<2)|2,{55,101,0}}, +/* 29868 */ {(11<<2)|2,{55,101,0}}, +/* 29869 */ {(11<<2)|2,{55,101,0}}, +/* 29870 */ {(11<<2)|2,{55,101,0}}, +/* 29871 */ {(11<<2)|2,{55,101,0}}, +/* 29872 */ {(11<<2)|2,{55,101,0}}, +/* 29873 */ {(11<<2)|2,{55,101,0}}, +/* 29874 */ {(11<<2)|2,{55,101,0}}, +/* 29875 */ {(11<<2)|2,{55,101,0}}, +/* 29876 */ {(11<<2)|2,{55,101,0}}, +/* 29877 */ {(11<<2)|2,{55,101,0}}, +/* 29878 */ {(11<<2)|2,{55,101,0}}, +/* 29879 */ {(11<<2)|2,{55,101,0}}, +/* 29880 */ {(11<<2)|2,{55,101,0}}, +/* 29881 */ {(11<<2)|2,{55,101,0}}, +/* 29882 */ {(11<<2)|2,{55,101,0}}, +/* 29883 */ {(11<<2)|2,{55,101,0}}, +/* 29884 */ {(11<<2)|2,{55,101,0}}, +/* 29885 */ {(11<<2)|2,{55,101,0}}, +/* 29886 */ {(11<<2)|2,{55,101,0}}, +/* 29887 */ {(11<<2)|2,{55,101,0}}, +/* 29888 */ {(16<<2)|3,{55,105,48}}, +/* 29889 */ {(16<<2)|3,{55,105,49}}, +/* 29890 */ {(16<<2)|3,{55,105,50}}, +/* 29891 */ {(16<<2)|3,{55,105,97}}, +/* 29892 */ {(16<<2)|3,{55,105,99}}, +/* 29893 */ {(16<<2)|3,{55,105,101}}, +/* 29894 */ {(16<<2)|3,{55,105,105}}, +/* 29895 */ {(16<<2)|3,{55,105,111}}, +/* 29896 */ {(16<<2)|3,{55,105,115}}, +/* 29897 */ {(16<<2)|3,{55,105,116}}, +/* 29898 */ {(11<<2)|2,{55,105,0}}, +/* 29899 */ {(11<<2)|2,{55,105,0}}, +/* 29900 */ {(11<<2)|2,{55,105,0}}, +/* 29901 */ {(11<<2)|2,{55,105,0}}, +/* 29902 */ {(11<<2)|2,{55,105,0}}, +/* 29903 */ {(11<<2)|2,{55,105,0}}, +/* 29904 */ {(11<<2)|2,{55,105,0}}, +/* 29905 */ {(11<<2)|2,{55,105,0}}, +/* 29906 */ {(11<<2)|2,{55,105,0}}, +/* 29907 */ {(11<<2)|2,{55,105,0}}, +/* 29908 */ {(11<<2)|2,{55,105,0}}, +/* 29909 */ {(11<<2)|2,{55,105,0}}, +/* 29910 */ {(11<<2)|2,{55,105,0}}, +/* 29911 */ {(11<<2)|2,{55,105,0}}, +/* 29912 */ {(11<<2)|2,{55,105,0}}, +/* 29913 */ {(11<<2)|2,{55,105,0}}, +/* 29914 */ {(11<<2)|2,{55,105,0}}, +/* 29915 */ {(11<<2)|2,{55,105,0}}, +/* 29916 */ {(11<<2)|2,{55,105,0}}, +/* 29917 */ {(11<<2)|2,{55,105,0}}, +/* 29918 */ {(11<<2)|2,{55,105,0}}, +/* 29919 */ {(11<<2)|2,{55,105,0}}, +/* 29920 */ {(16<<2)|3,{55,111,48}}, +/* 29921 */ {(16<<2)|3,{55,111,49}}, +/* 29922 */ {(16<<2)|3,{55,111,50}}, +/* 29923 */ {(16<<2)|3,{55,111,97}}, +/* 29924 */ {(16<<2)|3,{55,111,99}}, +/* 29925 */ {(16<<2)|3,{55,111,101}}, +/* 29926 */ {(16<<2)|3,{55,111,105}}, +/* 29927 */ {(16<<2)|3,{55,111,111}}, +/* 29928 */ {(16<<2)|3,{55,111,115}}, +/* 29929 */ {(16<<2)|3,{55,111,116}}, +/* 29930 */ {(11<<2)|2,{55,111,0}}, +/* 29931 */ {(11<<2)|2,{55,111,0}}, +/* 29932 */ {(11<<2)|2,{55,111,0}}, +/* 29933 */ {(11<<2)|2,{55,111,0}}, +/* 29934 */ {(11<<2)|2,{55,111,0}}, +/* 29935 */ {(11<<2)|2,{55,111,0}}, +/* 29936 */ {(11<<2)|2,{55,111,0}}, +/* 29937 */ {(11<<2)|2,{55,111,0}}, +/* 29938 */ {(11<<2)|2,{55,111,0}}, +/* 29939 */ {(11<<2)|2,{55,111,0}}, +/* 29940 */ {(11<<2)|2,{55,111,0}}, +/* 29941 */ {(11<<2)|2,{55,111,0}}, +/* 29942 */ {(11<<2)|2,{55,111,0}}, +/* 29943 */ {(11<<2)|2,{55,111,0}}, +/* 29944 */ {(11<<2)|2,{55,111,0}}, +/* 29945 */ {(11<<2)|2,{55,111,0}}, +/* 29946 */ {(11<<2)|2,{55,111,0}}, +/* 29947 */ {(11<<2)|2,{55,111,0}}, +/* 29948 */ {(11<<2)|2,{55,111,0}}, +/* 29949 */ {(11<<2)|2,{55,111,0}}, +/* 29950 */ {(11<<2)|2,{55,111,0}}, +/* 29951 */ {(11<<2)|2,{55,111,0}}, +/* 29952 */ {(16<<2)|3,{55,115,48}}, +/* 29953 */ {(16<<2)|3,{55,115,49}}, +/* 29954 */ {(16<<2)|3,{55,115,50}}, +/* 29955 */ {(16<<2)|3,{55,115,97}}, +/* 29956 */ {(16<<2)|3,{55,115,99}}, +/* 29957 */ {(16<<2)|3,{55,115,101}}, +/* 29958 */ {(16<<2)|3,{55,115,105}}, +/* 29959 */ {(16<<2)|3,{55,115,111}}, +/* 29960 */ {(16<<2)|3,{55,115,115}}, +/* 29961 */ {(16<<2)|3,{55,115,116}}, +/* 29962 */ {(11<<2)|2,{55,115,0}}, +/* 29963 */ {(11<<2)|2,{55,115,0}}, +/* 29964 */ {(11<<2)|2,{55,115,0}}, +/* 29965 */ {(11<<2)|2,{55,115,0}}, +/* 29966 */ {(11<<2)|2,{55,115,0}}, +/* 29967 */ {(11<<2)|2,{55,115,0}}, +/* 29968 */ {(11<<2)|2,{55,115,0}}, +/* 29969 */ {(11<<2)|2,{55,115,0}}, +/* 29970 */ {(11<<2)|2,{55,115,0}}, +/* 29971 */ {(11<<2)|2,{55,115,0}}, +/* 29972 */ {(11<<2)|2,{55,115,0}}, +/* 29973 */ {(11<<2)|2,{55,115,0}}, +/* 29974 */ {(11<<2)|2,{55,115,0}}, +/* 29975 */ {(11<<2)|2,{55,115,0}}, +/* 29976 */ {(11<<2)|2,{55,115,0}}, +/* 29977 */ {(11<<2)|2,{55,115,0}}, +/* 29978 */ {(11<<2)|2,{55,115,0}}, +/* 29979 */ {(11<<2)|2,{55,115,0}}, +/* 29980 */ {(11<<2)|2,{55,115,0}}, +/* 29981 */ {(11<<2)|2,{55,115,0}}, +/* 29982 */ {(11<<2)|2,{55,115,0}}, +/* 29983 */ {(11<<2)|2,{55,115,0}}, +/* 29984 */ {(16<<2)|3,{55,116,48}}, +/* 29985 */ {(16<<2)|3,{55,116,49}}, +/* 29986 */ {(16<<2)|3,{55,116,50}}, +/* 29987 */ {(16<<2)|3,{55,116,97}}, +/* 29988 */ {(16<<2)|3,{55,116,99}}, +/* 29989 */ {(16<<2)|3,{55,116,101}}, +/* 29990 */ {(16<<2)|3,{55,116,105}}, +/* 29991 */ {(16<<2)|3,{55,116,111}}, +/* 29992 */ {(16<<2)|3,{55,116,115}}, +/* 29993 */ {(16<<2)|3,{55,116,116}}, +/* 29994 */ {(11<<2)|2,{55,116,0}}, +/* 29995 */ {(11<<2)|2,{55,116,0}}, +/* 29996 */ {(11<<2)|2,{55,116,0}}, +/* 29997 */ {(11<<2)|2,{55,116,0}}, +/* 29998 */ {(11<<2)|2,{55,116,0}}, +/* 29999 */ {(11<<2)|2,{55,116,0}}, +/* 30000 */ {(11<<2)|2,{55,116,0}}, +/* 30001 */ {(11<<2)|2,{55,116,0}}, +/* 30002 */ {(11<<2)|2,{55,116,0}}, +/* 30003 */ {(11<<2)|2,{55,116,0}}, +/* 30004 */ {(11<<2)|2,{55,116,0}}, +/* 30005 */ {(11<<2)|2,{55,116,0}}, +/* 30006 */ {(11<<2)|2,{55,116,0}}, +/* 30007 */ {(11<<2)|2,{55,116,0}}, +/* 30008 */ {(11<<2)|2,{55,116,0}}, +/* 30009 */ {(11<<2)|2,{55,116,0}}, +/* 30010 */ {(11<<2)|2,{55,116,0}}, +/* 30011 */ {(11<<2)|2,{55,116,0}}, +/* 30012 */ {(11<<2)|2,{55,116,0}}, +/* 30013 */ {(11<<2)|2,{55,116,0}}, +/* 30014 */ {(11<<2)|2,{55,116,0}}, +/* 30015 */ {(11<<2)|2,{55,116,0}}, +/* 30016 */ {(12<<2)|2,{55,32,0}}, +/* 30017 */ {(12<<2)|2,{55,32,0}}, +/* 30018 */ {(12<<2)|2,{55,32,0}}, +/* 30019 */ {(12<<2)|2,{55,32,0}}, +/* 30020 */ {(12<<2)|2,{55,32,0}}, +/* 30021 */ {(12<<2)|2,{55,32,0}}, +/* 30022 */ {(12<<2)|2,{55,32,0}}, +/* 30023 */ {(12<<2)|2,{55,32,0}}, +/* 30024 */ {(12<<2)|2,{55,32,0}}, +/* 30025 */ {(12<<2)|2,{55,32,0}}, +/* 30026 */ {(12<<2)|2,{55,32,0}}, +/* 30027 */ {(12<<2)|2,{55,32,0}}, +/* 30028 */ {(12<<2)|2,{55,32,0}}, +/* 30029 */ {(12<<2)|2,{55,32,0}}, +/* 30030 */ {(12<<2)|2,{55,32,0}}, +/* 30031 */ {(12<<2)|2,{55,32,0}}, +/* 30032 */ {(12<<2)|2,{55,37,0}}, +/* 30033 */ {(12<<2)|2,{55,37,0}}, +/* 30034 */ {(12<<2)|2,{55,37,0}}, +/* 30035 */ {(12<<2)|2,{55,37,0}}, +/* 30036 */ {(12<<2)|2,{55,37,0}}, +/* 30037 */ {(12<<2)|2,{55,37,0}}, +/* 30038 */ {(12<<2)|2,{55,37,0}}, +/* 30039 */ {(12<<2)|2,{55,37,0}}, +/* 30040 */ {(12<<2)|2,{55,37,0}}, +/* 30041 */ {(12<<2)|2,{55,37,0}}, +/* 30042 */ {(12<<2)|2,{55,37,0}}, +/* 30043 */ {(12<<2)|2,{55,37,0}}, +/* 30044 */ {(12<<2)|2,{55,37,0}}, +/* 30045 */ {(12<<2)|2,{55,37,0}}, +/* 30046 */ {(12<<2)|2,{55,37,0}}, +/* 30047 */ {(12<<2)|2,{55,37,0}}, +/* 30048 */ {(12<<2)|2,{55,45,0}}, +/* 30049 */ {(12<<2)|2,{55,45,0}}, +/* 30050 */ {(12<<2)|2,{55,45,0}}, +/* 30051 */ {(12<<2)|2,{55,45,0}}, +/* 30052 */ {(12<<2)|2,{55,45,0}}, +/* 30053 */ {(12<<2)|2,{55,45,0}}, +/* 30054 */ {(12<<2)|2,{55,45,0}}, +/* 30055 */ {(12<<2)|2,{55,45,0}}, +/* 30056 */ {(12<<2)|2,{55,45,0}}, +/* 30057 */ {(12<<2)|2,{55,45,0}}, +/* 30058 */ {(12<<2)|2,{55,45,0}}, +/* 30059 */ {(12<<2)|2,{55,45,0}}, +/* 30060 */ {(12<<2)|2,{55,45,0}}, +/* 30061 */ {(12<<2)|2,{55,45,0}}, +/* 30062 */ {(12<<2)|2,{55,45,0}}, +/* 30063 */ {(12<<2)|2,{55,45,0}}, +/* 30064 */ {(12<<2)|2,{55,46,0}}, +/* 30065 */ {(12<<2)|2,{55,46,0}}, +/* 30066 */ {(12<<2)|2,{55,46,0}}, +/* 30067 */ {(12<<2)|2,{55,46,0}}, +/* 30068 */ {(12<<2)|2,{55,46,0}}, +/* 30069 */ {(12<<2)|2,{55,46,0}}, +/* 30070 */ {(12<<2)|2,{55,46,0}}, +/* 30071 */ {(12<<2)|2,{55,46,0}}, +/* 30072 */ {(12<<2)|2,{55,46,0}}, +/* 30073 */ {(12<<2)|2,{55,46,0}}, +/* 30074 */ {(12<<2)|2,{55,46,0}}, +/* 30075 */ {(12<<2)|2,{55,46,0}}, +/* 30076 */ {(12<<2)|2,{55,46,0}}, +/* 30077 */ {(12<<2)|2,{55,46,0}}, +/* 30078 */ {(12<<2)|2,{55,46,0}}, +/* 30079 */ {(12<<2)|2,{55,46,0}}, +/* 30080 */ {(12<<2)|2,{55,47,0}}, +/* 30081 */ {(12<<2)|2,{55,47,0}}, +/* 30082 */ {(12<<2)|2,{55,47,0}}, +/* 30083 */ {(12<<2)|2,{55,47,0}}, +/* 30084 */ {(12<<2)|2,{55,47,0}}, +/* 30085 */ {(12<<2)|2,{55,47,0}}, +/* 30086 */ {(12<<2)|2,{55,47,0}}, +/* 30087 */ {(12<<2)|2,{55,47,0}}, +/* 30088 */ {(12<<2)|2,{55,47,0}}, +/* 30089 */ {(12<<2)|2,{55,47,0}}, +/* 30090 */ {(12<<2)|2,{55,47,0}}, +/* 30091 */ {(12<<2)|2,{55,47,0}}, +/* 30092 */ {(12<<2)|2,{55,47,0}}, +/* 30093 */ {(12<<2)|2,{55,47,0}}, +/* 30094 */ {(12<<2)|2,{55,47,0}}, +/* 30095 */ {(12<<2)|2,{55,47,0}}, +/* 30096 */ {(12<<2)|2,{55,51,0}}, +/* 30097 */ {(12<<2)|2,{55,51,0}}, +/* 30098 */ {(12<<2)|2,{55,51,0}}, +/* 30099 */ {(12<<2)|2,{55,51,0}}, +/* 30100 */ {(12<<2)|2,{55,51,0}}, +/* 30101 */ {(12<<2)|2,{55,51,0}}, +/* 30102 */ {(12<<2)|2,{55,51,0}}, +/* 30103 */ {(12<<2)|2,{55,51,0}}, +/* 30104 */ {(12<<2)|2,{55,51,0}}, +/* 30105 */ {(12<<2)|2,{55,51,0}}, +/* 30106 */ {(12<<2)|2,{55,51,0}}, +/* 30107 */ {(12<<2)|2,{55,51,0}}, +/* 30108 */ {(12<<2)|2,{55,51,0}}, +/* 30109 */ {(12<<2)|2,{55,51,0}}, +/* 30110 */ {(12<<2)|2,{55,51,0}}, +/* 30111 */ {(12<<2)|2,{55,51,0}}, +/* 30112 */ {(12<<2)|2,{55,52,0}}, +/* 30113 */ {(12<<2)|2,{55,52,0}}, +/* 30114 */ {(12<<2)|2,{55,52,0}}, +/* 30115 */ {(12<<2)|2,{55,52,0}}, +/* 30116 */ {(12<<2)|2,{55,52,0}}, +/* 30117 */ {(12<<2)|2,{55,52,0}}, +/* 30118 */ {(12<<2)|2,{55,52,0}}, +/* 30119 */ {(12<<2)|2,{55,52,0}}, +/* 30120 */ {(12<<2)|2,{55,52,0}}, +/* 30121 */ {(12<<2)|2,{55,52,0}}, +/* 30122 */ {(12<<2)|2,{55,52,0}}, +/* 30123 */ {(12<<2)|2,{55,52,0}}, +/* 30124 */ {(12<<2)|2,{55,52,0}}, +/* 30125 */ {(12<<2)|2,{55,52,0}}, +/* 30126 */ {(12<<2)|2,{55,52,0}}, +/* 30127 */ {(12<<2)|2,{55,52,0}}, +/* 30128 */ {(12<<2)|2,{55,53,0}}, +/* 30129 */ {(12<<2)|2,{55,53,0}}, +/* 30130 */ {(12<<2)|2,{55,53,0}}, +/* 30131 */ {(12<<2)|2,{55,53,0}}, +/* 30132 */ {(12<<2)|2,{55,53,0}}, +/* 30133 */ {(12<<2)|2,{55,53,0}}, +/* 30134 */ {(12<<2)|2,{55,53,0}}, +/* 30135 */ {(12<<2)|2,{55,53,0}}, +/* 30136 */ {(12<<2)|2,{55,53,0}}, +/* 30137 */ {(12<<2)|2,{55,53,0}}, +/* 30138 */ {(12<<2)|2,{55,53,0}}, +/* 30139 */ {(12<<2)|2,{55,53,0}}, +/* 30140 */ {(12<<2)|2,{55,53,0}}, +/* 30141 */ {(12<<2)|2,{55,53,0}}, +/* 30142 */ {(12<<2)|2,{55,53,0}}, +/* 30143 */ {(12<<2)|2,{55,53,0}}, +/* 30144 */ {(12<<2)|2,{55,54,0}}, +/* 30145 */ {(12<<2)|2,{55,54,0}}, +/* 30146 */ {(12<<2)|2,{55,54,0}}, +/* 30147 */ {(12<<2)|2,{55,54,0}}, +/* 30148 */ {(12<<2)|2,{55,54,0}}, +/* 30149 */ {(12<<2)|2,{55,54,0}}, +/* 30150 */ {(12<<2)|2,{55,54,0}}, +/* 30151 */ {(12<<2)|2,{55,54,0}}, +/* 30152 */ {(12<<2)|2,{55,54,0}}, +/* 30153 */ {(12<<2)|2,{55,54,0}}, +/* 30154 */ {(12<<2)|2,{55,54,0}}, +/* 30155 */ {(12<<2)|2,{55,54,0}}, +/* 30156 */ {(12<<2)|2,{55,54,0}}, +/* 30157 */ {(12<<2)|2,{55,54,0}}, +/* 30158 */ {(12<<2)|2,{55,54,0}}, +/* 30159 */ {(12<<2)|2,{55,54,0}}, +/* 30160 */ {(12<<2)|2,{55,55,0}}, +/* 30161 */ {(12<<2)|2,{55,55,0}}, +/* 30162 */ {(12<<2)|2,{55,55,0}}, +/* 30163 */ {(12<<2)|2,{55,55,0}}, +/* 30164 */ {(12<<2)|2,{55,55,0}}, +/* 30165 */ {(12<<2)|2,{55,55,0}}, +/* 30166 */ {(12<<2)|2,{55,55,0}}, +/* 30167 */ {(12<<2)|2,{55,55,0}}, +/* 30168 */ {(12<<2)|2,{55,55,0}}, +/* 30169 */ {(12<<2)|2,{55,55,0}}, +/* 30170 */ {(12<<2)|2,{55,55,0}}, +/* 30171 */ {(12<<2)|2,{55,55,0}}, +/* 30172 */ {(12<<2)|2,{55,55,0}}, +/* 30173 */ {(12<<2)|2,{55,55,0}}, +/* 30174 */ {(12<<2)|2,{55,55,0}}, +/* 30175 */ {(12<<2)|2,{55,55,0}}, +/* 30176 */ {(12<<2)|2,{55,56,0}}, +/* 30177 */ {(12<<2)|2,{55,56,0}}, +/* 30178 */ {(12<<2)|2,{55,56,0}}, +/* 30179 */ {(12<<2)|2,{55,56,0}}, +/* 30180 */ {(12<<2)|2,{55,56,0}}, +/* 30181 */ {(12<<2)|2,{55,56,0}}, +/* 30182 */ {(12<<2)|2,{55,56,0}}, +/* 30183 */ {(12<<2)|2,{55,56,0}}, +/* 30184 */ {(12<<2)|2,{55,56,0}}, +/* 30185 */ {(12<<2)|2,{55,56,0}}, +/* 30186 */ {(12<<2)|2,{55,56,0}}, +/* 30187 */ {(12<<2)|2,{55,56,0}}, +/* 30188 */ {(12<<2)|2,{55,56,0}}, +/* 30189 */ {(12<<2)|2,{55,56,0}}, +/* 30190 */ {(12<<2)|2,{55,56,0}}, +/* 30191 */ {(12<<2)|2,{55,56,0}}, +/* 30192 */ {(12<<2)|2,{55,57,0}}, +/* 30193 */ {(12<<2)|2,{55,57,0}}, +/* 30194 */ {(12<<2)|2,{55,57,0}}, +/* 30195 */ {(12<<2)|2,{55,57,0}}, +/* 30196 */ {(12<<2)|2,{55,57,0}}, +/* 30197 */ {(12<<2)|2,{55,57,0}}, +/* 30198 */ {(12<<2)|2,{55,57,0}}, +/* 30199 */ {(12<<2)|2,{55,57,0}}, +/* 30200 */ {(12<<2)|2,{55,57,0}}, +/* 30201 */ {(12<<2)|2,{55,57,0}}, +/* 30202 */ {(12<<2)|2,{55,57,0}}, +/* 30203 */ {(12<<2)|2,{55,57,0}}, +/* 30204 */ {(12<<2)|2,{55,57,0}}, +/* 30205 */ {(12<<2)|2,{55,57,0}}, +/* 30206 */ {(12<<2)|2,{55,57,0}}, +/* 30207 */ {(12<<2)|2,{55,57,0}}, +/* 30208 */ {(12<<2)|2,{55,61,0}}, +/* 30209 */ {(12<<2)|2,{55,61,0}}, +/* 30210 */ {(12<<2)|2,{55,61,0}}, +/* 30211 */ {(12<<2)|2,{55,61,0}}, +/* 30212 */ {(12<<2)|2,{55,61,0}}, +/* 30213 */ {(12<<2)|2,{55,61,0}}, +/* 30214 */ {(12<<2)|2,{55,61,0}}, +/* 30215 */ {(12<<2)|2,{55,61,0}}, +/* 30216 */ {(12<<2)|2,{55,61,0}}, +/* 30217 */ {(12<<2)|2,{55,61,0}}, +/* 30218 */ {(12<<2)|2,{55,61,0}}, +/* 30219 */ {(12<<2)|2,{55,61,0}}, +/* 30220 */ {(12<<2)|2,{55,61,0}}, +/* 30221 */ {(12<<2)|2,{55,61,0}}, +/* 30222 */ {(12<<2)|2,{55,61,0}}, +/* 30223 */ {(12<<2)|2,{55,61,0}}, +/* 30224 */ {(12<<2)|2,{55,65,0}}, +/* 30225 */ {(12<<2)|2,{55,65,0}}, +/* 30226 */ {(12<<2)|2,{55,65,0}}, +/* 30227 */ {(12<<2)|2,{55,65,0}}, +/* 30228 */ {(12<<2)|2,{55,65,0}}, +/* 30229 */ {(12<<2)|2,{55,65,0}}, +/* 30230 */ {(12<<2)|2,{55,65,0}}, +/* 30231 */ {(12<<2)|2,{55,65,0}}, +/* 30232 */ {(12<<2)|2,{55,65,0}}, +/* 30233 */ {(12<<2)|2,{55,65,0}}, +/* 30234 */ {(12<<2)|2,{55,65,0}}, +/* 30235 */ {(12<<2)|2,{55,65,0}}, +/* 30236 */ {(12<<2)|2,{55,65,0}}, +/* 30237 */ {(12<<2)|2,{55,65,0}}, +/* 30238 */ {(12<<2)|2,{55,65,0}}, +/* 30239 */ {(12<<2)|2,{55,65,0}}, +/* 30240 */ {(12<<2)|2,{55,95,0}}, +/* 30241 */ {(12<<2)|2,{55,95,0}}, +/* 30242 */ {(12<<2)|2,{55,95,0}}, +/* 30243 */ {(12<<2)|2,{55,95,0}}, +/* 30244 */ {(12<<2)|2,{55,95,0}}, +/* 30245 */ {(12<<2)|2,{55,95,0}}, +/* 30246 */ {(12<<2)|2,{55,95,0}}, +/* 30247 */ {(12<<2)|2,{55,95,0}}, +/* 30248 */ {(12<<2)|2,{55,95,0}}, +/* 30249 */ {(12<<2)|2,{55,95,0}}, +/* 30250 */ {(12<<2)|2,{55,95,0}}, +/* 30251 */ {(12<<2)|2,{55,95,0}}, +/* 30252 */ {(12<<2)|2,{55,95,0}}, +/* 30253 */ {(12<<2)|2,{55,95,0}}, +/* 30254 */ {(12<<2)|2,{55,95,0}}, +/* 30255 */ {(12<<2)|2,{55,95,0}}, +/* 30256 */ {(12<<2)|2,{55,98,0}}, +/* 30257 */ {(12<<2)|2,{55,98,0}}, +/* 30258 */ {(12<<2)|2,{55,98,0}}, +/* 30259 */ {(12<<2)|2,{55,98,0}}, +/* 30260 */ {(12<<2)|2,{55,98,0}}, +/* 30261 */ {(12<<2)|2,{55,98,0}}, +/* 30262 */ {(12<<2)|2,{55,98,0}}, +/* 30263 */ {(12<<2)|2,{55,98,0}}, +/* 30264 */ {(12<<2)|2,{55,98,0}}, +/* 30265 */ {(12<<2)|2,{55,98,0}}, +/* 30266 */ {(12<<2)|2,{55,98,0}}, +/* 30267 */ {(12<<2)|2,{55,98,0}}, +/* 30268 */ {(12<<2)|2,{55,98,0}}, +/* 30269 */ {(12<<2)|2,{55,98,0}}, +/* 30270 */ {(12<<2)|2,{55,98,0}}, +/* 30271 */ {(12<<2)|2,{55,98,0}}, +/* 30272 */ {(12<<2)|2,{55,100,0}}, +/* 30273 */ {(12<<2)|2,{55,100,0}}, +/* 30274 */ {(12<<2)|2,{55,100,0}}, +/* 30275 */ {(12<<2)|2,{55,100,0}}, +/* 30276 */ {(12<<2)|2,{55,100,0}}, +/* 30277 */ {(12<<2)|2,{55,100,0}}, +/* 30278 */ {(12<<2)|2,{55,100,0}}, +/* 30279 */ {(12<<2)|2,{55,100,0}}, +/* 30280 */ {(12<<2)|2,{55,100,0}}, +/* 30281 */ {(12<<2)|2,{55,100,0}}, +/* 30282 */ {(12<<2)|2,{55,100,0}}, +/* 30283 */ {(12<<2)|2,{55,100,0}}, +/* 30284 */ {(12<<2)|2,{55,100,0}}, +/* 30285 */ {(12<<2)|2,{55,100,0}}, +/* 30286 */ {(12<<2)|2,{55,100,0}}, +/* 30287 */ {(12<<2)|2,{55,100,0}}, +/* 30288 */ {(12<<2)|2,{55,102,0}}, +/* 30289 */ {(12<<2)|2,{55,102,0}}, +/* 30290 */ {(12<<2)|2,{55,102,0}}, +/* 30291 */ {(12<<2)|2,{55,102,0}}, +/* 30292 */ {(12<<2)|2,{55,102,0}}, +/* 30293 */ {(12<<2)|2,{55,102,0}}, +/* 30294 */ {(12<<2)|2,{55,102,0}}, +/* 30295 */ {(12<<2)|2,{55,102,0}}, +/* 30296 */ {(12<<2)|2,{55,102,0}}, +/* 30297 */ {(12<<2)|2,{55,102,0}}, +/* 30298 */ {(12<<2)|2,{55,102,0}}, +/* 30299 */ {(12<<2)|2,{55,102,0}}, +/* 30300 */ {(12<<2)|2,{55,102,0}}, +/* 30301 */ {(12<<2)|2,{55,102,0}}, +/* 30302 */ {(12<<2)|2,{55,102,0}}, +/* 30303 */ {(12<<2)|2,{55,102,0}}, +/* 30304 */ {(12<<2)|2,{55,103,0}}, +/* 30305 */ {(12<<2)|2,{55,103,0}}, +/* 30306 */ {(12<<2)|2,{55,103,0}}, +/* 30307 */ {(12<<2)|2,{55,103,0}}, +/* 30308 */ {(12<<2)|2,{55,103,0}}, +/* 30309 */ {(12<<2)|2,{55,103,0}}, +/* 30310 */ {(12<<2)|2,{55,103,0}}, +/* 30311 */ {(12<<2)|2,{55,103,0}}, +/* 30312 */ {(12<<2)|2,{55,103,0}}, +/* 30313 */ {(12<<2)|2,{55,103,0}}, +/* 30314 */ {(12<<2)|2,{55,103,0}}, +/* 30315 */ {(12<<2)|2,{55,103,0}}, +/* 30316 */ {(12<<2)|2,{55,103,0}}, +/* 30317 */ {(12<<2)|2,{55,103,0}}, +/* 30318 */ {(12<<2)|2,{55,103,0}}, +/* 30319 */ {(12<<2)|2,{55,103,0}}, +/* 30320 */ {(12<<2)|2,{55,104,0}}, +/* 30321 */ {(12<<2)|2,{55,104,0}}, +/* 30322 */ {(12<<2)|2,{55,104,0}}, +/* 30323 */ {(12<<2)|2,{55,104,0}}, +/* 30324 */ {(12<<2)|2,{55,104,0}}, +/* 30325 */ {(12<<2)|2,{55,104,0}}, +/* 30326 */ {(12<<2)|2,{55,104,0}}, +/* 30327 */ {(12<<2)|2,{55,104,0}}, +/* 30328 */ {(12<<2)|2,{55,104,0}}, +/* 30329 */ {(12<<2)|2,{55,104,0}}, +/* 30330 */ {(12<<2)|2,{55,104,0}}, +/* 30331 */ {(12<<2)|2,{55,104,0}}, +/* 30332 */ {(12<<2)|2,{55,104,0}}, +/* 30333 */ {(12<<2)|2,{55,104,0}}, +/* 30334 */ {(12<<2)|2,{55,104,0}}, +/* 30335 */ {(12<<2)|2,{55,104,0}}, +/* 30336 */ {(12<<2)|2,{55,108,0}}, +/* 30337 */ {(12<<2)|2,{55,108,0}}, +/* 30338 */ {(12<<2)|2,{55,108,0}}, +/* 30339 */ {(12<<2)|2,{55,108,0}}, +/* 30340 */ {(12<<2)|2,{55,108,0}}, +/* 30341 */ {(12<<2)|2,{55,108,0}}, +/* 30342 */ {(12<<2)|2,{55,108,0}}, +/* 30343 */ {(12<<2)|2,{55,108,0}}, +/* 30344 */ {(12<<2)|2,{55,108,0}}, +/* 30345 */ {(12<<2)|2,{55,108,0}}, +/* 30346 */ {(12<<2)|2,{55,108,0}}, +/* 30347 */ {(12<<2)|2,{55,108,0}}, +/* 30348 */ {(12<<2)|2,{55,108,0}}, +/* 30349 */ {(12<<2)|2,{55,108,0}}, +/* 30350 */ {(12<<2)|2,{55,108,0}}, +/* 30351 */ {(12<<2)|2,{55,108,0}}, +/* 30352 */ {(12<<2)|2,{55,109,0}}, +/* 30353 */ {(12<<2)|2,{55,109,0}}, +/* 30354 */ {(12<<2)|2,{55,109,0}}, +/* 30355 */ {(12<<2)|2,{55,109,0}}, +/* 30356 */ {(12<<2)|2,{55,109,0}}, +/* 30357 */ {(12<<2)|2,{55,109,0}}, +/* 30358 */ {(12<<2)|2,{55,109,0}}, +/* 30359 */ {(12<<2)|2,{55,109,0}}, +/* 30360 */ {(12<<2)|2,{55,109,0}}, +/* 30361 */ {(12<<2)|2,{55,109,0}}, +/* 30362 */ {(12<<2)|2,{55,109,0}}, +/* 30363 */ {(12<<2)|2,{55,109,0}}, +/* 30364 */ {(12<<2)|2,{55,109,0}}, +/* 30365 */ {(12<<2)|2,{55,109,0}}, +/* 30366 */ {(12<<2)|2,{55,109,0}}, +/* 30367 */ {(12<<2)|2,{55,109,0}}, +/* 30368 */ {(12<<2)|2,{55,110,0}}, +/* 30369 */ {(12<<2)|2,{55,110,0}}, +/* 30370 */ {(12<<2)|2,{55,110,0}}, +/* 30371 */ {(12<<2)|2,{55,110,0}}, +/* 30372 */ {(12<<2)|2,{55,110,0}}, +/* 30373 */ {(12<<2)|2,{55,110,0}}, +/* 30374 */ {(12<<2)|2,{55,110,0}}, +/* 30375 */ {(12<<2)|2,{55,110,0}}, +/* 30376 */ {(12<<2)|2,{55,110,0}}, +/* 30377 */ {(12<<2)|2,{55,110,0}}, +/* 30378 */ {(12<<2)|2,{55,110,0}}, +/* 30379 */ {(12<<2)|2,{55,110,0}}, +/* 30380 */ {(12<<2)|2,{55,110,0}}, +/* 30381 */ {(12<<2)|2,{55,110,0}}, +/* 30382 */ {(12<<2)|2,{55,110,0}}, +/* 30383 */ {(12<<2)|2,{55,110,0}}, +/* 30384 */ {(12<<2)|2,{55,112,0}}, +/* 30385 */ {(12<<2)|2,{55,112,0}}, +/* 30386 */ {(12<<2)|2,{55,112,0}}, +/* 30387 */ {(12<<2)|2,{55,112,0}}, +/* 30388 */ {(12<<2)|2,{55,112,0}}, +/* 30389 */ {(12<<2)|2,{55,112,0}}, +/* 30390 */ {(12<<2)|2,{55,112,0}}, +/* 30391 */ {(12<<2)|2,{55,112,0}}, +/* 30392 */ {(12<<2)|2,{55,112,0}}, +/* 30393 */ {(12<<2)|2,{55,112,0}}, +/* 30394 */ {(12<<2)|2,{55,112,0}}, +/* 30395 */ {(12<<2)|2,{55,112,0}}, +/* 30396 */ {(12<<2)|2,{55,112,0}}, +/* 30397 */ {(12<<2)|2,{55,112,0}}, +/* 30398 */ {(12<<2)|2,{55,112,0}}, +/* 30399 */ {(12<<2)|2,{55,112,0}}, +/* 30400 */ {(12<<2)|2,{55,114,0}}, +/* 30401 */ {(12<<2)|2,{55,114,0}}, +/* 30402 */ {(12<<2)|2,{55,114,0}}, +/* 30403 */ {(12<<2)|2,{55,114,0}}, +/* 30404 */ {(12<<2)|2,{55,114,0}}, +/* 30405 */ {(12<<2)|2,{55,114,0}}, +/* 30406 */ {(12<<2)|2,{55,114,0}}, +/* 30407 */ {(12<<2)|2,{55,114,0}}, +/* 30408 */ {(12<<2)|2,{55,114,0}}, +/* 30409 */ {(12<<2)|2,{55,114,0}}, +/* 30410 */ {(12<<2)|2,{55,114,0}}, +/* 30411 */ {(12<<2)|2,{55,114,0}}, +/* 30412 */ {(12<<2)|2,{55,114,0}}, +/* 30413 */ {(12<<2)|2,{55,114,0}}, +/* 30414 */ {(12<<2)|2,{55,114,0}}, +/* 30415 */ {(12<<2)|2,{55,114,0}}, +/* 30416 */ {(12<<2)|2,{55,117,0}}, +/* 30417 */ {(12<<2)|2,{55,117,0}}, +/* 30418 */ {(12<<2)|2,{55,117,0}}, +/* 30419 */ {(12<<2)|2,{55,117,0}}, +/* 30420 */ {(12<<2)|2,{55,117,0}}, +/* 30421 */ {(12<<2)|2,{55,117,0}}, +/* 30422 */ {(12<<2)|2,{55,117,0}}, +/* 30423 */ {(12<<2)|2,{55,117,0}}, +/* 30424 */ {(12<<2)|2,{55,117,0}}, +/* 30425 */ {(12<<2)|2,{55,117,0}}, +/* 30426 */ {(12<<2)|2,{55,117,0}}, +/* 30427 */ {(12<<2)|2,{55,117,0}}, +/* 30428 */ {(12<<2)|2,{55,117,0}}, +/* 30429 */ {(12<<2)|2,{55,117,0}}, +/* 30430 */ {(12<<2)|2,{55,117,0}}, +/* 30431 */ {(12<<2)|2,{55,117,0}}, +/* 30432 */ {(13<<2)|2,{55,58,0}}, +/* 30433 */ {(13<<2)|2,{55,58,0}}, +/* 30434 */ {(13<<2)|2,{55,58,0}}, +/* 30435 */ {(13<<2)|2,{55,58,0}}, +/* 30436 */ {(13<<2)|2,{55,58,0}}, +/* 30437 */ {(13<<2)|2,{55,58,0}}, +/* 30438 */ {(13<<2)|2,{55,58,0}}, +/* 30439 */ {(13<<2)|2,{55,58,0}}, +/* 30440 */ {(13<<2)|2,{55,66,0}}, +/* 30441 */ {(13<<2)|2,{55,66,0}}, +/* 30442 */ {(13<<2)|2,{55,66,0}}, +/* 30443 */ {(13<<2)|2,{55,66,0}}, +/* 30444 */ {(13<<2)|2,{55,66,0}}, +/* 30445 */ {(13<<2)|2,{55,66,0}}, +/* 30446 */ {(13<<2)|2,{55,66,0}}, +/* 30447 */ {(13<<2)|2,{55,66,0}}, +/* 30448 */ {(13<<2)|2,{55,67,0}}, +/* 30449 */ {(13<<2)|2,{55,67,0}}, +/* 30450 */ {(13<<2)|2,{55,67,0}}, +/* 30451 */ {(13<<2)|2,{55,67,0}}, +/* 30452 */ {(13<<2)|2,{55,67,0}}, +/* 30453 */ {(13<<2)|2,{55,67,0}}, +/* 30454 */ {(13<<2)|2,{55,67,0}}, +/* 30455 */ {(13<<2)|2,{55,67,0}}, +/* 30456 */ {(13<<2)|2,{55,68,0}}, +/* 30457 */ {(13<<2)|2,{55,68,0}}, +/* 30458 */ {(13<<2)|2,{55,68,0}}, +/* 30459 */ {(13<<2)|2,{55,68,0}}, +/* 30460 */ {(13<<2)|2,{55,68,0}}, +/* 30461 */ {(13<<2)|2,{55,68,0}}, +/* 30462 */ {(13<<2)|2,{55,68,0}}, +/* 30463 */ {(13<<2)|2,{55,68,0}}, +/* 30464 */ {(13<<2)|2,{55,69,0}}, +/* 30465 */ {(13<<2)|2,{55,69,0}}, +/* 30466 */ {(13<<2)|2,{55,69,0}}, +/* 30467 */ {(13<<2)|2,{55,69,0}}, +/* 30468 */ {(13<<2)|2,{55,69,0}}, +/* 30469 */ {(13<<2)|2,{55,69,0}}, +/* 30470 */ {(13<<2)|2,{55,69,0}}, +/* 30471 */ {(13<<2)|2,{55,69,0}}, +/* 30472 */ {(13<<2)|2,{55,70,0}}, +/* 30473 */ {(13<<2)|2,{55,70,0}}, +/* 30474 */ {(13<<2)|2,{55,70,0}}, +/* 30475 */ {(13<<2)|2,{55,70,0}}, +/* 30476 */ {(13<<2)|2,{55,70,0}}, +/* 30477 */ {(13<<2)|2,{55,70,0}}, +/* 30478 */ {(13<<2)|2,{55,70,0}}, +/* 30479 */ {(13<<2)|2,{55,70,0}}, +/* 30480 */ {(13<<2)|2,{55,71,0}}, +/* 30481 */ {(13<<2)|2,{55,71,0}}, +/* 30482 */ {(13<<2)|2,{55,71,0}}, +/* 30483 */ {(13<<2)|2,{55,71,0}}, +/* 30484 */ {(13<<2)|2,{55,71,0}}, +/* 30485 */ {(13<<2)|2,{55,71,0}}, +/* 30486 */ {(13<<2)|2,{55,71,0}}, +/* 30487 */ {(13<<2)|2,{55,71,0}}, +/* 30488 */ {(13<<2)|2,{55,72,0}}, +/* 30489 */ {(13<<2)|2,{55,72,0}}, +/* 30490 */ {(13<<2)|2,{55,72,0}}, +/* 30491 */ {(13<<2)|2,{55,72,0}}, +/* 30492 */ {(13<<2)|2,{55,72,0}}, +/* 30493 */ {(13<<2)|2,{55,72,0}}, +/* 30494 */ {(13<<2)|2,{55,72,0}}, +/* 30495 */ {(13<<2)|2,{55,72,0}}, +/* 30496 */ {(13<<2)|2,{55,73,0}}, +/* 30497 */ {(13<<2)|2,{55,73,0}}, +/* 30498 */ {(13<<2)|2,{55,73,0}}, +/* 30499 */ {(13<<2)|2,{55,73,0}}, +/* 30500 */ {(13<<2)|2,{55,73,0}}, +/* 30501 */ {(13<<2)|2,{55,73,0}}, +/* 30502 */ {(13<<2)|2,{55,73,0}}, +/* 30503 */ {(13<<2)|2,{55,73,0}}, +/* 30504 */ {(13<<2)|2,{55,74,0}}, +/* 30505 */ {(13<<2)|2,{55,74,0}}, +/* 30506 */ {(13<<2)|2,{55,74,0}}, +/* 30507 */ {(13<<2)|2,{55,74,0}}, +/* 30508 */ {(13<<2)|2,{55,74,0}}, +/* 30509 */ {(13<<2)|2,{55,74,0}}, +/* 30510 */ {(13<<2)|2,{55,74,0}}, +/* 30511 */ {(13<<2)|2,{55,74,0}}, +/* 30512 */ {(13<<2)|2,{55,75,0}}, +/* 30513 */ {(13<<2)|2,{55,75,0}}, +/* 30514 */ {(13<<2)|2,{55,75,0}}, +/* 30515 */ {(13<<2)|2,{55,75,0}}, +/* 30516 */ {(13<<2)|2,{55,75,0}}, +/* 30517 */ {(13<<2)|2,{55,75,0}}, +/* 30518 */ {(13<<2)|2,{55,75,0}}, +/* 30519 */ {(13<<2)|2,{55,75,0}}, +/* 30520 */ {(13<<2)|2,{55,76,0}}, +/* 30521 */ {(13<<2)|2,{55,76,0}}, +/* 30522 */ {(13<<2)|2,{55,76,0}}, +/* 30523 */ {(13<<2)|2,{55,76,0}}, +/* 30524 */ {(13<<2)|2,{55,76,0}}, +/* 30525 */ {(13<<2)|2,{55,76,0}}, +/* 30526 */ {(13<<2)|2,{55,76,0}}, +/* 30527 */ {(13<<2)|2,{55,76,0}}, +/* 30528 */ {(13<<2)|2,{55,77,0}}, +/* 30529 */ {(13<<2)|2,{55,77,0}}, +/* 30530 */ {(13<<2)|2,{55,77,0}}, +/* 30531 */ {(13<<2)|2,{55,77,0}}, +/* 30532 */ {(13<<2)|2,{55,77,0}}, +/* 30533 */ {(13<<2)|2,{55,77,0}}, +/* 30534 */ {(13<<2)|2,{55,77,0}}, +/* 30535 */ {(13<<2)|2,{55,77,0}}, +/* 30536 */ {(13<<2)|2,{55,78,0}}, +/* 30537 */ {(13<<2)|2,{55,78,0}}, +/* 30538 */ {(13<<2)|2,{55,78,0}}, +/* 30539 */ {(13<<2)|2,{55,78,0}}, +/* 30540 */ {(13<<2)|2,{55,78,0}}, +/* 30541 */ {(13<<2)|2,{55,78,0}}, +/* 30542 */ {(13<<2)|2,{55,78,0}}, +/* 30543 */ {(13<<2)|2,{55,78,0}}, +/* 30544 */ {(13<<2)|2,{55,79,0}}, +/* 30545 */ {(13<<2)|2,{55,79,0}}, +/* 30546 */ {(13<<2)|2,{55,79,0}}, +/* 30547 */ {(13<<2)|2,{55,79,0}}, +/* 30548 */ {(13<<2)|2,{55,79,0}}, +/* 30549 */ {(13<<2)|2,{55,79,0}}, +/* 30550 */ {(13<<2)|2,{55,79,0}}, +/* 30551 */ {(13<<2)|2,{55,79,0}}, +/* 30552 */ {(13<<2)|2,{55,80,0}}, +/* 30553 */ {(13<<2)|2,{55,80,0}}, +/* 30554 */ {(13<<2)|2,{55,80,0}}, +/* 30555 */ {(13<<2)|2,{55,80,0}}, +/* 30556 */ {(13<<2)|2,{55,80,0}}, +/* 30557 */ {(13<<2)|2,{55,80,0}}, +/* 30558 */ {(13<<2)|2,{55,80,0}}, +/* 30559 */ {(13<<2)|2,{55,80,0}}, +/* 30560 */ {(13<<2)|2,{55,81,0}}, +/* 30561 */ {(13<<2)|2,{55,81,0}}, +/* 30562 */ {(13<<2)|2,{55,81,0}}, +/* 30563 */ {(13<<2)|2,{55,81,0}}, +/* 30564 */ {(13<<2)|2,{55,81,0}}, +/* 30565 */ {(13<<2)|2,{55,81,0}}, +/* 30566 */ {(13<<2)|2,{55,81,0}}, +/* 30567 */ {(13<<2)|2,{55,81,0}}, +/* 30568 */ {(13<<2)|2,{55,82,0}}, +/* 30569 */ {(13<<2)|2,{55,82,0}}, +/* 30570 */ {(13<<2)|2,{55,82,0}}, +/* 30571 */ {(13<<2)|2,{55,82,0}}, +/* 30572 */ {(13<<2)|2,{55,82,0}}, +/* 30573 */ {(13<<2)|2,{55,82,0}}, +/* 30574 */ {(13<<2)|2,{55,82,0}}, +/* 30575 */ {(13<<2)|2,{55,82,0}}, +/* 30576 */ {(13<<2)|2,{55,83,0}}, +/* 30577 */ {(13<<2)|2,{55,83,0}}, +/* 30578 */ {(13<<2)|2,{55,83,0}}, +/* 30579 */ {(13<<2)|2,{55,83,0}}, +/* 30580 */ {(13<<2)|2,{55,83,0}}, +/* 30581 */ {(13<<2)|2,{55,83,0}}, +/* 30582 */ {(13<<2)|2,{55,83,0}}, +/* 30583 */ {(13<<2)|2,{55,83,0}}, +/* 30584 */ {(13<<2)|2,{55,84,0}}, +/* 30585 */ {(13<<2)|2,{55,84,0}}, +/* 30586 */ {(13<<2)|2,{55,84,0}}, +/* 30587 */ {(13<<2)|2,{55,84,0}}, +/* 30588 */ {(13<<2)|2,{55,84,0}}, +/* 30589 */ {(13<<2)|2,{55,84,0}}, +/* 30590 */ {(13<<2)|2,{55,84,0}}, +/* 30591 */ {(13<<2)|2,{55,84,0}}, +/* 30592 */ {(13<<2)|2,{55,85,0}}, +/* 30593 */ {(13<<2)|2,{55,85,0}}, +/* 30594 */ {(13<<2)|2,{55,85,0}}, +/* 30595 */ {(13<<2)|2,{55,85,0}}, +/* 30596 */ {(13<<2)|2,{55,85,0}}, +/* 30597 */ {(13<<2)|2,{55,85,0}}, +/* 30598 */ {(13<<2)|2,{55,85,0}}, +/* 30599 */ {(13<<2)|2,{55,85,0}}, +/* 30600 */ {(13<<2)|2,{55,86,0}}, +/* 30601 */ {(13<<2)|2,{55,86,0}}, +/* 30602 */ {(13<<2)|2,{55,86,0}}, +/* 30603 */ {(13<<2)|2,{55,86,0}}, +/* 30604 */ {(13<<2)|2,{55,86,0}}, +/* 30605 */ {(13<<2)|2,{55,86,0}}, +/* 30606 */ {(13<<2)|2,{55,86,0}}, +/* 30607 */ {(13<<2)|2,{55,86,0}}, +/* 30608 */ {(13<<2)|2,{55,87,0}}, +/* 30609 */ {(13<<2)|2,{55,87,0}}, +/* 30610 */ {(13<<2)|2,{55,87,0}}, +/* 30611 */ {(13<<2)|2,{55,87,0}}, +/* 30612 */ {(13<<2)|2,{55,87,0}}, +/* 30613 */ {(13<<2)|2,{55,87,0}}, +/* 30614 */ {(13<<2)|2,{55,87,0}}, +/* 30615 */ {(13<<2)|2,{55,87,0}}, +/* 30616 */ {(13<<2)|2,{55,89,0}}, +/* 30617 */ {(13<<2)|2,{55,89,0}}, +/* 30618 */ {(13<<2)|2,{55,89,0}}, +/* 30619 */ {(13<<2)|2,{55,89,0}}, +/* 30620 */ {(13<<2)|2,{55,89,0}}, +/* 30621 */ {(13<<2)|2,{55,89,0}}, +/* 30622 */ {(13<<2)|2,{55,89,0}}, +/* 30623 */ {(13<<2)|2,{55,89,0}}, +/* 30624 */ {(13<<2)|2,{55,106,0}}, +/* 30625 */ {(13<<2)|2,{55,106,0}}, +/* 30626 */ {(13<<2)|2,{55,106,0}}, +/* 30627 */ {(13<<2)|2,{55,106,0}}, +/* 30628 */ {(13<<2)|2,{55,106,0}}, +/* 30629 */ {(13<<2)|2,{55,106,0}}, +/* 30630 */ {(13<<2)|2,{55,106,0}}, +/* 30631 */ {(13<<2)|2,{55,106,0}}, +/* 30632 */ {(13<<2)|2,{55,107,0}}, +/* 30633 */ {(13<<2)|2,{55,107,0}}, +/* 30634 */ {(13<<2)|2,{55,107,0}}, +/* 30635 */ {(13<<2)|2,{55,107,0}}, +/* 30636 */ {(13<<2)|2,{55,107,0}}, +/* 30637 */ {(13<<2)|2,{55,107,0}}, +/* 30638 */ {(13<<2)|2,{55,107,0}}, +/* 30639 */ {(13<<2)|2,{55,107,0}}, +/* 30640 */ {(13<<2)|2,{55,113,0}}, +/* 30641 */ {(13<<2)|2,{55,113,0}}, +/* 30642 */ {(13<<2)|2,{55,113,0}}, +/* 30643 */ {(13<<2)|2,{55,113,0}}, +/* 30644 */ {(13<<2)|2,{55,113,0}}, +/* 30645 */ {(13<<2)|2,{55,113,0}}, +/* 30646 */ {(13<<2)|2,{55,113,0}}, +/* 30647 */ {(13<<2)|2,{55,113,0}}, +/* 30648 */ {(13<<2)|2,{55,118,0}}, +/* 30649 */ {(13<<2)|2,{55,118,0}}, +/* 30650 */ {(13<<2)|2,{55,118,0}}, +/* 30651 */ {(13<<2)|2,{55,118,0}}, +/* 30652 */ {(13<<2)|2,{55,118,0}}, +/* 30653 */ {(13<<2)|2,{55,118,0}}, +/* 30654 */ {(13<<2)|2,{55,118,0}}, +/* 30655 */ {(13<<2)|2,{55,118,0}}, +/* 30656 */ {(13<<2)|2,{55,119,0}}, +/* 30657 */ {(13<<2)|2,{55,119,0}}, +/* 30658 */ {(13<<2)|2,{55,119,0}}, +/* 30659 */ {(13<<2)|2,{55,119,0}}, +/* 30660 */ {(13<<2)|2,{55,119,0}}, +/* 30661 */ {(13<<2)|2,{55,119,0}}, +/* 30662 */ {(13<<2)|2,{55,119,0}}, +/* 30663 */ {(13<<2)|2,{55,119,0}}, +/* 30664 */ {(13<<2)|2,{55,120,0}}, +/* 30665 */ {(13<<2)|2,{55,120,0}}, +/* 30666 */ {(13<<2)|2,{55,120,0}}, +/* 30667 */ {(13<<2)|2,{55,120,0}}, +/* 30668 */ {(13<<2)|2,{55,120,0}}, +/* 30669 */ {(13<<2)|2,{55,120,0}}, +/* 30670 */ {(13<<2)|2,{55,120,0}}, +/* 30671 */ {(13<<2)|2,{55,120,0}}, +/* 30672 */ {(13<<2)|2,{55,121,0}}, +/* 30673 */ {(13<<2)|2,{55,121,0}}, +/* 30674 */ {(13<<2)|2,{55,121,0}}, +/* 30675 */ {(13<<2)|2,{55,121,0}}, +/* 30676 */ {(13<<2)|2,{55,121,0}}, +/* 30677 */ {(13<<2)|2,{55,121,0}}, +/* 30678 */ {(13<<2)|2,{55,121,0}}, +/* 30679 */ {(13<<2)|2,{55,121,0}}, +/* 30680 */ {(13<<2)|2,{55,122,0}}, +/* 30681 */ {(13<<2)|2,{55,122,0}}, +/* 30682 */ {(13<<2)|2,{55,122,0}}, +/* 30683 */ {(13<<2)|2,{55,122,0}}, +/* 30684 */ {(13<<2)|2,{55,122,0}}, +/* 30685 */ {(13<<2)|2,{55,122,0}}, +/* 30686 */ {(13<<2)|2,{55,122,0}}, +/* 30687 */ {(13<<2)|2,{55,122,0}}, +/* 30688 */ {(14<<2)|2,{55,38,0}}, +/* 30689 */ {(14<<2)|2,{55,38,0}}, +/* 30690 */ {(14<<2)|2,{55,38,0}}, +/* 30691 */ {(14<<2)|2,{55,38,0}}, +/* 30692 */ {(14<<2)|2,{55,42,0}}, +/* 30693 */ {(14<<2)|2,{55,42,0}}, +/* 30694 */ {(14<<2)|2,{55,42,0}}, +/* 30695 */ {(14<<2)|2,{55,42,0}}, +/* 30696 */ {(14<<2)|2,{55,44,0}}, +/* 30697 */ {(14<<2)|2,{55,44,0}}, +/* 30698 */ {(14<<2)|2,{55,44,0}}, +/* 30699 */ {(14<<2)|2,{55,44,0}}, +/* 30700 */ {(14<<2)|2,{55,59,0}}, +/* 30701 */ {(14<<2)|2,{55,59,0}}, +/* 30702 */ {(14<<2)|2,{55,59,0}}, +/* 30703 */ {(14<<2)|2,{55,59,0}}, +/* 30704 */ {(14<<2)|2,{55,88,0}}, +/* 30705 */ {(14<<2)|2,{55,88,0}}, +/* 30706 */ {(14<<2)|2,{55,88,0}}, +/* 30707 */ {(14<<2)|2,{55,88,0}}, +/* 30708 */ {(14<<2)|2,{55,90,0}}, +/* 30709 */ {(14<<2)|2,{55,90,0}}, +/* 30710 */ {(14<<2)|2,{55,90,0}}, +/* 30711 */ {(14<<2)|2,{55,90,0}}, +/* 30712 */ {(16<<2)|2,{55,33,0}}, +/* 30713 */ {(16<<2)|2,{55,34,0}}, +/* 30714 */ {(16<<2)|2,{55,40,0}}, +/* 30715 */ {(16<<2)|2,{55,41,0}}, +/* 30716 */ {(16<<2)|2,{55,63,0}}, +/* 30717 */ {(6<<2)|1,{55,0,0}}, +/* 30718 */ {(6<<2)|1,{55,0,0}}, +/* 30719 */ {(6<<2)|1,{55,0,0}}, +/* 30720 */ {(16<<2)|3,{56,48,48}}, +/* 30721 */ {(16<<2)|3,{56,48,49}}, +/* 30722 */ {(16<<2)|3,{56,48,50}}, +/* 30723 */ {(16<<2)|3,{56,48,97}}, +/* 30724 */ {(16<<2)|3,{56,48,99}}, +/* 30725 */ {(16<<2)|3,{56,48,101}}, +/* 30726 */ {(16<<2)|3,{56,48,105}}, +/* 30727 */ {(16<<2)|3,{56,48,111}}, +/* 30728 */ {(16<<2)|3,{56,48,115}}, +/* 30729 */ {(16<<2)|3,{56,48,116}}, +/* 30730 */ {(11<<2)|2,{56,48,0}}, +/* 30731 */ {(11<<2)|2,{56,48,0}}, +/* 30732 */ {(11<<2)|2,{56,48,0}}, +/* 30733 */ {(11<<2)|2,{56,48,0}}, +/* 30734 */ {(11<<2)|2,{56,48,0}}, +/* 30735 */ {(11<<2)|2,{56,48,0}}, +/* 30736 */ {(11<<2)|2,{56,48,0}}, +/* 30737 */ {(11<<2)|2,{56,48,0}}, +/* 30738 */ {(11<<2)|2,{56,48,0}}, +/* 30739 */ {(11<<2)|2,{56,48,0}}, +/* 30740 */ {(11<<2)|2,{56,48,0}}, +/* 30741 */ {(11<<2)|2,{56,48,0}}, +/* 30742 */ {(11<<2)|2,{56,48,0}}, +/* 30743 */ {(11<<2)|2,{56,48,0}}, +/* 30744 */ {(11<<2)|2,{56,48,0}}, +/* 30745 */ {(11<<2)|2,{56,48,0}}, +/* 30746 */ {(11<<2)|2,{56,48,0}}, +/* 30747 */ {(11<<2)|2,{56,48,0}}, +/* 30748 */ {(11<<2)|2,{56,48,0}}, +/* 30749 */ {(11<<2)|2,{56,48,0}}, +/* 30750 */ {(11<<2)|2,{56,48,0}}, +/* 30751 */ {(11<<2)|2,{56,48,0}}, +/* 30752 */ {(16<<2)|3,{56,49,48}}, +/* 30753 */ {(16<<2)|3,{56,49,49}}, +/* 30754 */ {(16<<2)|3,{56,49,50}}, +/* 30755 */ {(16<<2)|3,{56,49,97}}, +/* 30756 */ {(16<<2)|3,{56,49,99}}, +/* 30757 */ {(16<<2)|3,{56,49,101}}, +/* 30758 */ {(16<<2)|3,{56,49,105}}, +/* 30759 */ {(16<<2)|3,{56,49,111}}, +/* 30760 */ {(16<<2)|3,{56,49,115}}, +/* 30761 */ {(16<<2)|3,{56,49,116}}, +/* 30762 */ {(11<<2)|2,{56,49,0}}, +/* 30763 */ {(11<<2)|2,{56,49,0}}, +/* 30764 */ {(11<<2)|2,{56,49,0}}, +/* 30765 */ {(11<<2)|2,{56,49,0}}, +/* 30766 */ {(11<<2)|2,{56,49,0}}, +/* 30767 */ {(11<<2)|2,{56,49,0}}, +/* 30768 */ {(11<<2)|2,{56,49,0}}, +/* 30769 */ {(11<<2)|2,{56,49,0}}, +/* 30770 */ {(11<<2)|2,{56,49,0}}, +/* 30771 */ {(11<<2)|2,{56,49,0}}, +/* 30772 */ {(11<<2)|2,{56,49,0}}, +/* 30773 */ {(11<<2)|2,{56,49,0}}, +/* 30774 */ {(11<<2)|2,{56,49,0}}, +/* 30775 */ {(11<<2)|2,{56,49,0}}, +/* 30776 */ {(11<<2)|2,{56,49,0}}, +/* 30777 */ {(11<<2)|2,{56,49,0}}, +/* 30778 */ {(11<<2)|2,{56,49,0}}, +/* 30779 */ {(11<<2)|2,{56,49,0}}, +/* 30780 */ {(11<<2)|2,{56,49,0}}, +/* 30781 */ {(11<<2)|2,{56,49,0}}, +/* 30782 */ {(11<<2)|2,{56,49,0}}, +/* 30783 */ {(11<<2)|2,{56,49,0}}, +/* 30784 */ {(16<<2)|3,{56,50,48}}, +/* 30785 */ {(16<<2)|3,{56,50,49}}, +/* 30786 */ {(16<<2)|3,{56,50,50}}, +/* 30787 */ {(16<<2)|3,{56,50,97}}, +/* 30788 */ {(16<<2)|3,{56,50,99}}, +/* 30789 */ {(16<<2)|3,{56,50,101}}, +/* 30790 */ {(16<<2)|3,{56,50,105}}, +/* 30791 */ {(16<<2)|3,{56,50,111}}, +/* 30792 */ {(16<<2)|3,{56,50,115}}, +/* 30793 */ {(16<<2)|3,{56,50,116}}, +/* 30794 */ {(11<<2)|2,{56,50,0}}, +/* 30795 */ {(11<<2)|2,{56,50,0}}, +/* 30796 */ {(11<<2)|2,{56,50,0}}, +/* 30797 */ {(11<<2)|2,{56,50,0}}, +/* 30798 */ {(11<<2)|2,{56,50,0}}, +/* 30799 */ {(11<<2)|2,{56,50,0}}, +/* 30800 */ {(11<<2)|2,{56,50,0}}, +/* 30801 */ {(11<<2)|2,{56,50,0}}, +/* 30802 */ {(11<<2)|2,{56,50,0}}, +/* 30803 */ {(11<<2)|2,{56,50,0}}, +/* 30804 */ {(11<<2)|2,{56,50,0}}, +/* 30805 */ {(11<<2)|2,{56,50,0}}, +/* 30806 */ {(11<<2)|2,{56,50,0}}, +/* 30807 */ {(11<<2)|2,{56,50,0}}, +/* 30808 */ {(11<<2)|2,{56,50,0}}, +/* 30809 */ {(11<<2)|2,{56,50,0}}, +/* 30810 */ {(11<<2)|2,{56,50,0}}, +/* 30811 */ {(11<<2)|2,{56,50,0}}, +/* 30812 */ {(11<<2)|2,{56,50,0}}, +/* 30813 */ {(11<<2)|2,{56,50,0}}, +/* 30814 */ {(11<<2)|2,{56,50,0}}, +/* 30815 */ {(11<<2)|2,{56,50,0}}, +/* 30816 */ {(16<<2)|3,{56,97,48}}, +/* 30817 */ {(16<<2)|3,{56,97,49}}, +/* 30818 */ {(16<<2)|3,{56,97,50}}, +/* 30819 */ {(16<<2)|3,{56,97,97}}, +/* 30820 */ {(16<<2)|3,{56,97,99}}, +/* 30821 */ {(16<<2)|3,{56,97,101}}, +/* 30822 */ {(16<<2)|3,{56,97,105}}, +/* 30823 */ {(16<<2)|3,{56,97,111}}, +/* 30824 */ {(16<<2)|3,{56,97,115}}, +/* 30825 */ {(16<<2)|3,{56,97,116}}, +/* 30826 */ {(11<<2)|2,{56,97,0}}, +/* 30827 */ {(11<<2)|2,{56,97,0}}, +/* 30828 */ {(11<<2)|2,{56,97,0}}, +/* 30829 */ {(11<<2)|2,{56,97,0}}, +/* 30830 */ {(11<<2)|2,{56,97,0}}, +/* 30831 */ {(11<<2)|2,{56,97,0}}, +/* 30832 */ {(11<<2)|2,{56,97,0}}, +/* 30833 */ {(11<<2)|2,{56,97,0}}, +/* 30834 */ {(11<<2)|2,{56,97,0}}, +/* 30835 */ {(11<<2)|2,{56,97,0}}, +/* 30836 */ {(11<<2)|2,{56,97,0}}, +/* 30837 */ {(11<<2)|2,{56,97,0}}, +/* 30838 */ {(11<<2)|2,{56,97,0}}, +/* 30839 */ {(11<<2)|2,{56,97,0}}, +/* 30840 */ {(11<<2)|2,{56,97,0}}, +/* 30841 */ {(11<<2)|2,{56,97,0}}, +/* 30842 */ {(11<<2)|2,{56,97,0}}, +/* 30843 */ {(11<<2)|2,{56,97,0}}, +/* 30844 */ {(11<<2)|2,{56,97,0}}, +/* 30845 */ {(11<<2)|2,{56,97,0}}, +/* 30846 */ {(11<<2)|2,{56,97,0}}, +/* 30847 */ {(11<<2)|2,{56,97,0}}, +/* 30848 */ {(16<<2)|3,{56,99,48}}, +/* 30849 */ {(16<<2)|3,{56,99,49}}, +/* 30850 */ {(16<<2)|3,{56,99,50}}, +/* 30851 */ {(16<<2)|3,{56,99,97}}, +/* 30852 */ {(16<<2)|3,{56,99,99}}, +/* 30853 */ {(16<<2)|3,{56,99,101}}, +/* 30854 */ {(16<<2)|3,{56,99,105}}, +/* 30855 */ {(16<<2)|3,{56,99,111}}, +/* 30856 */ {(16<<2)|3,{56,99,115}}, +/* 30857 */ {(16<<2)|3,{56,99,116}}, +/* 30858 */ {(11<<2)|2,{56,99,0}}, +/* 30859 */ {(11<<2)|2,{56,99,0}}, +/* 30860 */ {(11<<2)|2,{56,99,0}}, +/* 30861 */ {(11<<2)|2,{56,99,0}}, +/* 30862 */ {(11<<2)|2,{56,99,0}}, +/* 30863 */ {(11<<2)|2,{56,99,0}}, +/* 30864 */ {(11<<2)|2,{56,99,0}}, +/* 30865 */ {(11<<2)|2,{56,99,0}}, +/* 30866 */ {(11<<2)|2,{56,99,0}}, +/* 30867 */ {(11<<2)|2,{56,99,0}}, +/* 30868 */ {(11<<2)|2,{56,99,0}}, +/* 30869 */ {(11<<2)|2,{56,99,0}}, +/* 30870 */ {(11<<2)|2,{56,99,0}}, +/* 30871 */ {(11<<2)|2,{56,99,0}}, +/* 30872 */ {(11<<2)|2,{56,99,0}}, +/* 30873 */ {(11<<2)|2,{56,99,0}}, +/* 30874 */ {(11<<2)|2,{56,99,0}}, +/* 30875 */ {(11<<2)|2,{56,99,0}}, +/* 30876 */ {(11<<2)|2,{56,99,0}}, +/* 30877 */ {(11<<2)|2,{56,99,0}}, +/* 30878 */ {(11<<2)|2,{56,99,0}}, +/* 30879 */ {(11<<2)|2,{56,99,0}}, +/* 30880 */ {(16<<2)|3,{56,101,48}}, +/* 30881 */ {(16<<2)|3,{56,101,49}}, +/* 30882 */ {(16<<2)|3,{56,101,50}}, +/* 30883 */ {(16<<2)|3,{56,101,97}}, +/* 30884 */ {(16<<2)|3,{56,101,99}}, +/* 30885 */ {(16<<2)|3,{56,101,101}}, +/* 30886 */ {(16<<2)|3,{56,101,105}}, +/* 30887 */ {(16<<2)|3,{56,101,111}}, +/* 30888 */ {(16<<2)|3,{56,101,115}}, +/* 30889 */ {(16<<2)|3,{56,101,116}}, +/* 30890 */ {(11<<2)|2,{56,101,0}}, +/* 30891 */ {(11<<2)|2,{56,101,0}}, +/* 30892 */ {(11<<2)|2,{56,101,0}}, +/* 30893 */ {(11<<2)|2,{56,101,0}}, +/* 30894 */ {(11<<2)|2,{56,101,0}}, +/* 30895 */ {(11<<2)|2,{56,101,0}}, +/* 30896 */ {(11<<2)|2,{56,101,0}}, +/* 30897 */ {(11<<2)|2,{56,101,0}}, +/* 30898 */ {(11<<2)|2,{56,101,0}}, +/* 30899 */ {(11<<2)|2,{56,101,0}}, +/* 30900 */ {(11<<2)|2,{56,101,0}}, +/* 30901 */ {(11<<2)|2,{56,101,0}}, +/* 30902 */ {(11<<2)|2,{56,101,0}}, +/* 30903 */ {(11<<2)|2,{56,101,0}}, +/* 30904 */ {(11<<2)|2,{56,101,0}}, +/* 30905 */ {(11<<2)|2,{56,101,0}}, +/* 30906 */ {(11<<2)|2,{56,101,0}}, +/* 30907 */ {(11<<2)|2,{56,101,0}}, +/* 30908 */ {(11<<2)|2,{56,101,0}}, +/* 30909 */ {(11<<2)|2,{56,101,0}}, +/* 30910 */ {(11<<2)|2,{56,101,0}}, +/* 30911 */ {(11<<2)|2,{56,101,0}}, +/* 30912 */ {(16<<2)|3,{56,105,48}}, +/* 30913 */ {(16<<2)|3,{56,105,49}}, +/* 30914 */ {(16<<2)|3,{56,105,50}}, +/* 30915 */ {(16<<2)|3,{56,105,97}}, +/* 30916 */ {(16<<2)|3,{56,105,99}}, +/* 30917 */ {(16<<2)|3,{56,105,101}}, +/* 30918 */ {(16<<2)|3,{56,105,105}}, +/* 30919 */ {(16<<2)|3,{56,105,111}}, +/* 30920 */ {(16<<2)|3,{56,105,115}}, +/* 30921 */ {(16<<2)|3,{56,105,116}}, +/* 30922 */ {(11<<2)|2,{56,105,0}}, +/* 30923 */ {(11<<2)|2,{56,105,0}}, +/* 30924 */ {(11<<2)|2,{56,105,0}}, +/* 30925 */ {(11<<2)|2,{56,105,0}}, +/* 30926 */ {(11<<2)|2,{56,105,0}}, +/* 30927 */ {(11<<2)|2,{56,105,0}}, +/* 30928 */ {(11<<2)|2,{56,105,0}}, +/* 30929 */ {(11<<2)|2,{56,105,0}}, +/* 30930 */ {(11<<2)|2,{56,105,0}}, +/* 30931 */ {(11<<2)|2,{56,105,0}}, +/* 30932 */ {(11<<2)|2,{56,105,0}}, +/* 30933 */ {(11<<2)|2,{56,105,0}}, +/* 30934 */ {(11<<2)|2,{56,105,0}}, +/* 30935 */ {(11<<2)|2,{56,105,0}}, +/* 30936 */ {(11<<2)|2,{56,105,0}}, +/* 30937 */ {(11<<2)|2,{56,105,0}}, +/* 30938 */ {(11<<2)|2,{56,105,0}}, +/* 30939 */ {(11<<2)|2,{56,105,0}}, +/* 30940 */ {(11<<2)|2,{56,105,0}}, +/* 30941 */ {(11<<2)|2,{56,105,0}}, +/* 30942 */ {(11<<2)|2,{56,105,0}}, +/* 30943 */ {(11<<2)|2,{56,105,0}}, +/* 30944 */ {(16<<2)|3,{56,111,48}}, +/* 30945 */ {(16<<2)|3,{56,111,49}}, +/* 30946 */ {(16<<2)|3,{56,111,50}}, +/* 30947 */ {(16<<2)|3,{56,111,97}}, +/* 30948 */ {(16<<2)|3,{56,111,99}}, +/* 30949 */ {(16<<2)|3,{56,111,101}}, +/* 30950 */ {(16<<2)|3,{56,111,105}}, +/* 30951 */ {(16<<2)|3,{56,111,111}}, +/* 30952 */ {(16<<2)|3,{56,111,115}}, +/* 30953 */ {(16<<2)|3,{56,111,116}}, +/* 30954 */ {(11<<2)|2,{56,111,0}}, +/* 30955 */ {(11<<2)|2,{56,111,0}}, +/* 30956 */ {(11<<2)|2,{56,111,0}}, +/* 30957 */ {(11<<2)|2,{56,111,0}}, +/* 30958 */ {(11<<2)|2,{56,111,0}}, +/* 30959 */ {(11<<2)|2,{56,111,0}}, +/* 30960 */ {(11<<2)|2,{56,111,0}}, +/* 30961 */ {(11<<2)|2,{56,111,0}}, +/* 30962 */ {(11<<2)|2,{56,111,0}}, +/* 30963 */ {(11<<2)|2,{56,111,0}}, +/* 30964 */ {(11<<2)|2,{56,111,0}}, +/* 30965 */ {(11<<2)|2,{56,111,0}}, +/* 30966 */ {(11<<2)|2,{56,111,0}}, +/* 30967 */ {(11<<2)|2,{56,111,0}}, +/* 30968 */ {(11<<2)|2,{56,111,0}}, +/* 30969 */ {(11<<2)|2,{56,111,0}}, +/* 30970 */ {(11<<2)|2,{56,111,0}}, +/* 30971 */ {(11<<2)|2,{56,111,0}}, +/* 30972 */ {(11<<2)|2,{56,111,0}}, +/* 30973 */ {(11<<2)|2,{56,111,0}}, +/* 30974 */ {(11<<2)|2,{56,111,0}}, +/* 30975 */ {(11<<2)|2,{56,111,0}}, +/* 30976 */ {(16<<2)|3,{56,115,48}}, +/* 30977 */ {(16<<2)|3,{56,115,49}}, +/* 30978 */ {(16<<2)|3,{56,115,50}}, +/* 30979 */ {(16<<2)|3,{56,115,97}}, +/* 30980 */ {(16<<2)|3,{56,115,99}}, +/* 30981 */ {(16<<2)|3,{56,115,101}}, +/* 30982 */ {(16<<2)|3,{56,115,105}}, +/* 30983 */ {(16<<2)|3,{56,115,111}}, +/* 30984 */ {(16<<2)|3,{56,115,115}}, +/* 30985 */ {(16<<2)|3,{56,115,116}}, +/* 30986 */ {(11<<2)|2,{56,115,0}}, +/* 30987 */ {(11<<2)|2,{56,115,0}}, +/* 30988 */ {(11<<2)|2,{56,115,0}}, +/* 30989 */ {(11<<2)|2,{56,115,0}}, +/* 30990 */ {(11<<2)|2,{56,115,0}}, +/* 30991 */ {(11<<2)|2,{56,115,0}}, +/* 30992 */ {(11<<2)|2,{56,115,0}}, +/* 30993 */ {(11<<2)|2,{56,115,0}}, +/* 30994 */ {(11<<2)|2,{56,115,0}}, +/* 30995 */ {(11<<2)|2,{56,115,0}}, +/* 30996 */ {(11<<2)|2,{56,115,0}}, +/* 30997 */ {(11<<2)|2,{56,115,0}}, +/* 30998 */ {(11<<2)|2,{56,115,0}}, +/* 30999 */ {(11<<2)|2,{56,115,0}}, +/* 31000 */ {(11<<2)|2,{56,115,0}}, +/* 31001 */ {(11<<2)|2,{56,115,0}}, +/* 31002 */ {(11<<2)|2,{56,115,0}}, +/* 31003 */ {(11<<2)|2,{56,115,0}}, +/* 31004 */ {(11<<2)|2,{56,115,0}}, +/* 31005 */ {(11<<2)|2,{56,115,0}}, +/* 31006 */ {(11<<2)|2,{56,115,0}}, +/* 31007 */ {(11<<2)|2,{56,115,0}}, +/* 31008 */ {(16<<2)|3,{56,116,48}}, +/* 31009 */ {(16<<2)|3,{56,116,49}}, +/* 31010 */ {(16<<2)|3,{56,116,50}}, +/* 31011 */ {(16<<2)|3,{56,116,97}}, +/* 31012 */ {(16<<2)|3,{56,116,99}}, +/* 31013 */ {(16<<2)|3,{56,116,101}}, +/* 31014 */ {(16<<2)|3,{56,116,105}}, +/* 31015 */ {(16<<2)|3,{56,116,111}}, +/* 31016 */ {(16<<2)|3,{56,116,115}}, +/* 31017 */ {(16<<2)|3,{56,116,116}}, +/* 31018 */ {(11<<2)|2,{56,116,0}}, +/* 31019 */ {(11<<2)|2,{56,116,0}}, +/* 31020 */ {(11<<2)|2,{56,116,0}}, +/* 31021 */ {(11<<2)|2,{56,116,0}}, +/* 31022 */ {(11<<2)|2,{56,116,0}}, +/* 31023 */ {(11<<2)|2,{56,116,0}}, +/* 31024 */ {(11<<2)|2,{56,116,0}}, +/* 31025 */ {(11<<2)|2,{56,116,0}}, +/* 31026 */ {(11<<2)|2,{56,116,0}}, +/* 31027 */ {(11<<2)|2,{56,116,0}}, +/* 31028 */ {(11<<2)|2,{56,116,0}}, +/* 31029 */ {(11<<2)|2,{56,116,0}}, +/* 31030 */ {(11<<2)|2,{56,116,0}}, +/* 31031 */ {(11<<2)|2,{56,116,0}}, +/* 31032 */ {(11<<2)|2,{56,116,0}}, +/* 31033 */ {(11<<2)|2,{56,116,0}}, +/* 31034 */ {(11<<2)|2,{56,116,0}}, +/* 31035 */ {(11<<2)|2,{56,116,0}}, +/* 31036 */ {(11<<2)|2,{56,116,0}}, +/* 31037 */ {(11<<2)|2,{56,116,0}}, +/* 31038 */ {(11<<2)|2,{56,116,0}}, +/* 31039 */ {(11<<2)|2,{56,116,0}}, +/* 31040 */ {(12<<2)|2,{56,32,0}}, +/* 31041 */ {(12<<2)|2,{56,32,0}}, +/* 31042 */ {(12<<2)|2,{56,32,0}}, +/* 31043 */ {(12<<2)|2,{56,32,0}}, +/* 31044 */ {(12<<2)|2,{56,32,0}}, +/* 31045 */ {(12<<2)|2,{56,32,0}}, +/* 31046 */ {(12<<2)|2,{56,32,0}}, +/* 31047 */ {(12<<2)|2,{56,32,0}}, +/* 31048 */ {(12<<2)|2,{56,32,0}}, +/* 31049 */ {(12<<2)|2,{56,32,0}}, +/* 31050 */ {(12<<2)|2,{56,32,0}}, +/* 31051 */ {(12<<2)|2,{56,32,0}}, +/* 31052 */ {(12<<2)|2,{56,32,0}}, +/* 31053 */ {(12<<2)|2,{56,32,0}}, +/* 31054 */ {(12<<2)|2,{56,32,0}}, +/* 31055 */ {(12<<2)|2,{56,32,0}}, +/* 31056 */ {(12<<2)|2,{56,37,0}}, +/* 31057 */ {(12<<2)|2,{56,37,0}}, +/* 31058 */ {(12<<2)|2,{56,37,0}}, +/* 31059 */ {(12<<2)|2,{56,37,0}}, +/* 31060 */ {(12<<2)|2,{56,37,0}}, +/* 31061 */ {(12<<2)|2,{56,37,0}}, +/* 31062 */ {(12<<2)|2,{56,37,0}}, +/* 31063 */ {(12<<2)|2,{56,37,0}}, +/* 31064 */ {(12<<2)|2,{56,37,0}}, +/* 31065 */ {(12<<2)|2,{56,37,0}}, +/* 31066 */ {(12<<2)|2,{56,37,0}}, +/* 31067 */ {(12<<2)|2,{56,37,0}}, +/* 31068 */ {(12<<2)|2,{56,37,0}}, +/* 31069 */ {(12<<2)|2,{56,37,0}}, +/* 31070 */ {(12<<2)|2,{56,37,0}}, +/* 31071 */ {(12<<2)|2,{56,37,0}}, +/* 31072 */ {(12<<2)|2,{56,45,0}}, +/* 31073 */ {(12<<2)|2,{56,45,0}}, +/* 31074 */ {(12<<2)|2,{56,45,0}}, +/* 31075 */ {(12<<2)|2,{56,45,0}}, +/* 31076 */ {(12<<2)|2,{56,45,0}}, +/* 31077 */ {(12<<2)|2,{56,45,0}}, +/* 31078 */ {(12<<2)|2,{56,45,0}}, +/* 31079 */ {(12<<2)|2,{56,45,0}}, +/* 31080 */ {(12<<2)|2,{56,45,0}}, +/* 31081 */ {(12<<2)|2,{56,45,0}}, +/* 31082 */ {(12<<2)|2,{56,45,0}}, +/* 31083 */ {(12<<2)|2,{56,45,0}}, +/* 31084 */ {(12<<2)|2,{56,45,0}}, +/* 31085 */ {(12<<2)|2,{56,45,0}}, +/* 31086 */ {(12<<2)|2,{56,45,0}}, +/* 31087 */ {(12<<2)|2,{56,45,0}}, +/* 31088 */ {(12<<2)|2,{56,46,0}}, +/* 31089 */ {(12<<2)|2,{56,46,0}}, +/* 31090 */ {(12<<2)|2,{56,46,0}}, +/* 31091 */ {(12<<2)|2,{56,46,0}}, +/* 31092 */ {(12<<2)|2,{56,46,0}}, +/* 31093 */ {(12<<2)|2,{56,46,0}}, +/* 31094 */ {(12<<2)|2,{56,46,0}}, +/* 31095 */ {(12<<2)|2,{56,46,0}}, +/* 31096 */ {(12<<2)|2,{56,46,0}}, +/* 31097 */ {(12<<2)|2,{56,46,0}}, +/* 31098 */ {(12<<2)|2,{56,46,0}}, +/* 31099 */ {(12<<2)|2,{56,46,0}}, +/* 31100 */ {(12<<2)|2,{56,46,0}}, +/* 31101 */ {(12<<2)|2,{56,46,0}}, +/* 31102 */ {(12<<2)|2,{56,46,0}}, +/* 31103 */ {(12<<2)|2,{56,46,0}}, +/* 31104 */ {(12<<2)|2,{56,47,0}}, +/* 31105 */ {(12<<2)|2,{56,47,0}}, +/* 31106 */ {(12<<2)|2,{56,47,0}}, +/* 31107 */ {(12<<2)|2,{56,47,0}}, +/* 31108 */ {(12<<2)|2,{56,47,0}}, +/* 31109 */ {(12<<2)|2,{56,47,0}}, +/* 31110 */ {(12<<2)|2,{56,47,0}}, +/* 31111 */ {(12<<2)|2,{56,47,0}}, +/* 31112 */ {(12<<2)|2,{56,47,0}}, +/* 31113 */ {(12<<2)|2,{56,47,0}}, +/* 31114 */ {(12<<2)|2,{56,47,0}}, +/* 31115 */ {(12<<2)|2,{56,47,0}}, +/* 31116 */ {(12<<2)|2,{56,47,0}}, +/* 31117 */ {(12<<2)|2,{56,47,0}}, +/* 31118 */ {(12<<2)|2,{56,47,0}}, +/* 31119 */ {(12<<2)|2,{56,47,0}}, +/* 31120 */ {(12<<2)|2,{56,51,0}}, +/* 31121 */ {(12<<2)|2,{56,51,0}}, +/* 31122 */ {(12<<2)|2,{56,51,0}}, +/* 31123 */ {(12<<2)|2,{56,51,0}}, +/* 31124 */ {(12<<2)|2,{56,51,0}}, +/* 31125 */ {(12<<2)|2,{56,51,0}}, +/* 31126 */ {(12<<2)|2,{56,51,0}}, +/* 31127 */ {(12<<2)|2,{56,51,0}}, +/* 31128 */ {(12<<2)|2,{56,51,0}}, +/* 31129 */ {(12<<2)|2,{56,51,0}}, +/* 31130 */ {(12<<2)|2,{56,51,0}}, +/* 31131 */ {(12<<2)|2,{56,51,0}}, +/* 31132 */ {(12<<2)|2,{56,51,0}}, +/* 31133 */ {(12<<2)|2,{56,51,0}}, +/* 31134 */ {(12<<2)|2,{56,51,0}}, +/* 31135 */ {(12<<2)|2,{56,51,0}}, +/* 31136 */ {(12<<2)|2,{56,52,0}}, +/* 31137 */ {(12<<2)|2,{56,52,0}}, +/* 31138 */ {(12<<2)|2,{56,52,0}}, +/* 31139 */ {(12<<2)|2,{56,52,0}}, +/* 31140 */ {(12<<2)|2,{56,52,0}}, +/* 31141 */ {(12<<2)|2,{56,52,0}}, +/* 31142 */ {(12<<2)|2,{56,52,0}}, +/* 31143 */ {(12<<2)|2,{56,52,0}}, +/* 31144 */ {(12<<2)|2,{56,52,0}}, +/* 31145 */ {(12<<2)|2,{56,52,0}}, +/* 31146 */ {(12<<2)|2,{56,52,0}}, +/* 31147 */ {(12<<2)|2,{56,52,0}}, +/* 31148 */ {(12<<2)|2,{56,52,0}}, +/* 31149 */ {(12<<2)|2,{56,52,0}}, +/* 31150 */ {(12<<2)|2,{56,52,0}}, +/* 31151 */ {(12<<2)|2,{56,52,0}}, +/* 31152 */ {(12<<2)|2,{56,53,0}}, +/* 31153 */ {(12<<2)|2,{56,53,0}}, +/* 31154 */ {(12<<2)|2,{56,53,0}}, +/* 31155 */ {(12<<2)|2,{56,53,0}}, +/* 31156 */ {(12<<2)|2,{56,53,0}}, +/* 31157 */ {(12<<2)|2,{56,53,0}}, +/* 31158 */ {(12<<2)|2,{56,53,0}}, +/* 31159 */ {(12<<2)|2,{56,53,0}}, +/* 31160 */ {(12<<2)|2,{56,53,0}}, +/* 31161 */ {(12<<2)|2,{56,53,0}}, +/* 31162 */ {(12<<2)|2,{56,53,0}}, +/* 31163 */ {(12<<2)|2,{56,53,0}}, +/* 31164 */ {(12<<2)|2,{56,53,0}}, +/* 31165 */ {(12<<2)|2,{56,53,0}}, +/* 31166 */ {(12<<2)|2,{56,53,0}}, +/* 31167 */ {(12<<2)|2,{56,53,0}}, +/* 31168 */ {(12<<2)|2,{56,54,0}}, +/* 31169 */ {(12<<2)|2,{56,54,0}}, +/* 31170 */ {(12<<2)|2,{56,54,0}}, +/* 31171 */ {(12<<2)|2,{56,54,0}}, +/* 31172 */ {(12<<2)|2,{56,54,0}}, +/* 31173 */ {(12<<2)|2,{56,54,0}}, +/* 31174 */ {(12<<2)|2,{56,54,0}}, +/* 31175 */ {(12<<2)|2,{56,54,0}}, +/* 31176 */ {(12<<2)|2,{56,54,0}}, +/* 31177 */ {(12<<2)|2,{56,54,0}}, +/* 31178 */ {(12<<2)|2,{56,54,0}}, +/* 31179 */ {(12<<2)|2,{56,54,0}}, +/* 31180 */ {(12<<2)|2,{56,54,0}}, +/* 31181 */ {(12<<2)|2,{56,54,0}}, +/* 31182 */ {(12<<2)|2,{56,54,0}}, +/* 31183 */ {(12<<2)|2,{56,54,0}}, +/* 31184 */ {(12<<2)|2,{56,55,0}}, +/* 31185 */ {(12<<2)|2,{56,55,0}}, +/* 31186 */ {(12<<2)|2,{56,55,0}}, +/* 31187 */ {(12<<2)|2,{56,55,0}}, +/* 31188 */ {(12<<2)|2,{56,55,0}}, +/* 31189 */ {(12<<2)|2,{56,55,0}}, +/* 31190 */ {(12<<2)|2,{56,55,0}}, +/* 31191 */ {(12<<2)|2,{56,55,0}}, +/* 31192 */ {(12<<2)|2,{56,55,0}}, +/* 31193 */ {(12<<2)|2,{56,55,0}}, +/* 31194 */ {(12<<2)|2,{56,55,0}}, +/* 31195 */ {(12<<2)|2,{56,55,0}}, +/* 31196 */ {(12<<2)|2,{56,55,0}}, +/* 31197 */ {(12<<2)|2,{56,55,0}}, +/* 31198 */ {(12<<2)|2,{56,55,0}}, +/* 31199 */ {(12<<2)|2,{56,55,0}}, +/* 31200 */ {(12<<2)|2,{56,56,0}}, +/* 31201 */ {(12<<2)|2,{56,56,0}}, +/* 31202 */ {(12<<2)|2,{56,56,0}}, +/* 31203 */ {(12<<2)|2,{56,56,0}}, +/* 31204 */ {(12<<2)|2,{56,56,0}}, +/* 31205 */ {(12<<2)|2,{56,56,0}}, +/* 31206 */ {(12<<2)|2,{56,56,0}}, +/* 31207 */ {(12<<2)|2,{56,56,0}}, +/* 31208 */ {(12<<2)|2,{56,56,0}}, +/* 31209 */ {(12<<2)|2,{56,56,0}}, +/* 31210 */ {(12<<2)|2,{56,56,0}}, +/* 31211 */ {(12<<2)|2,{56,56,0}}, +/* 31212 */ {(12<<2)|2,{56,56,0}}, +/* 31213 */ {(12<<2)|2,{56,56,0}}, +/* 31214 */ {(12<<2)|2,{56,56,0}}, +/* 31215 */ {(12<<2)|2,{56,56,0}}, +/* 31216 */ {(12<<2)|2,{56,57,0}}, +/* 31217 */ {(12<<2)|2,{56,57,0}}, +/* 31218 */ {(12<<2)|2,{56,57,0}}, +/* 31219 */ {(12<<2)|2,{56,57,0}}, +/* 31220 */ {(12<<2)|2,{56,57,0}}, +/* 31221 */ {(12<<2)|2,{56,57,0}}, +/* 31222 */ {(12<<2)|2,{56,57,0}}, +/* 31223 */ {(12<<2)|2,{56,57,0}}, +/* 31224 */ {(12<<2)|2,{56,57,0}}, +/* 31225 */ {(12<<2)|2,{56,57,0}}, +/* 31226 */ {(12<<2)|2,{56,57,0}}, +/* 31227 */ {(12<<2)|2,{56,57,0}}, +/* 31228 */ {(12<<2)|2,{56,57,0}}, +/* 31229 */ {(12<<2)|2,{56,57,0}}, +/* 31230 */ {(12<<2)|2,{56,57,0}}, +/* 31231 */ {(12<<2)|2,{56,57,0}}, +/* 31232 */ {(12<<2)|2,{56,61,0}}, +/* 31233 */ {(12<<2)|2,{56,61,0}}, +/* 31234 */ {(12<<2)|2,{56,61,0}}, +/* 31235 */ {(12<<2)|2,{56,61,0}}, +/* 31236 */ {(12<<2)|2,{56,61,0}}, +/* 31237 */ {(12<<2)|2,{56,61,0}}, +/* 31238 */ {(12<<2)|2,{56,61,0}}, +/* 31239 */ {(12<<2)|2,{56,61,0}}, +/* 31240 */ {(12<<2)|2,{56,61,0}}, +/* 31241 */ {(12<<2)|2,{56,61,0}}, +/* 31242 */ {(12<<2)|2,{56,61,0}}, +/* 31243 */ {(12<<2)|2,{56,61,0}}, +/* 31244 */ {(12<<2)|2,{56,61,0}}, +/* 31245 */ {(12<<2)|2,{56,61,0}}, +/* 31246 */ {(12<<2)|2,{56,61,0}}, +/* 31247 */ {(12<<2)|2,{56,61,0}}, +/* 31248 */ {(12<<2)|2,{56,65,0}}, +/* 31249 */ {(12<<2)|2,{56,65,0}}, +/* 31250 */ {(12<<2)|2,{56,65,0}}, +/* 31251 */ {(12<<2)|2,{56,65,0}}, +/* 31252 */ {(12<<2)|2,{56,65,0}}, +/* 31253 */ {(12<<2)|2,{56,65,0}}, +/* 31254 */ {(12<<2)|2,{56,65,0}}, +/* 31255 */ {(12<<2)|2,{56,65,0}}, +/* 31256 */ {(12<<2)|2,{56,65,0}}, +/* 31257 */ {(12<<2)|2,{56,65,0}}, +/* 31258 */ {(12<<2)|2,{56,65,0}}, +/* 31259 */ {(12<<2)|2,{56,65,0}}, +/* 31260 */ {(12<<2)|2,{56,65,0}}, +/* 31261 */ {(12<<2)|2,{56,65,0}}, +/* 31262 */ {(12<<2)|2,{56,65,0}}, +/* 31263 */ {(12<<2)|2,{56,65,0}}, +/* 31264 */ {(12<<2)|2,{56,95,0}}, +/* 31265 */ {(12<<2)|2,{56,95,0}}, +/* 31266 */ {(12<<2)|2,{56,95,0}}, +/* 31267 */ {(12<<2)|2,{56,95,0}}, +/* 31268 */ {(12<<2)|2,{56,95,0}}, +/* 31269 */ {(12<<2)|2,{56,95,0}}, +/* 31270 */ {(12<<2)|2,{56,95,0}}, +/* 31271 */ {(12<<2)|2,{56,95,0}}, +/* 31272 */ {(12<<2)|2,{56,95,0}}, +/* 31273 */ {(12<<2)|2,{56,95,0}}, +/* 31274 */ {(12<<2)|2,{56,95,0}}, +/* 31275 */ {(12<<2)|2,{56,95,0}}, +/* 31276 */ {(12<<2)|2,{56,95,0}}, +/* 31277 */ {(12<<2)|2,{56,95,0}}, +/* 31278 */ {(12<<2)|2,{56,95,0}}, +/* 31279 */ {(12<<2)|2,{56,95,0}}, +/* 31280 */ {(12<<2)|2,{56,98,0}}, +/* 31281 */ {(12<<2)|2,{56,98,0}}, +/* 31282 */ {(12<<2)|2,{56,98,0}}, +/* 31283 */ {(12<<2)|2,{56,98,0}}, +/* 31284 */ {(12<<2)|2,{56,98,0}}, +/* 31285 */ {(12<<2)|2,{56,98,0}}, +/* 31286 */ {(12<<2)|2,{56,98,0}}, +/* 31287 */ {(12<<2)|2,{56,98,0}}, +/* 31288 */ {(12<<2)|2,{56,98,0}}, +/* 31289 */ {(12<<2)|2,{56,98,0}}, +/* 31290 */ {(12<<2)|2,{56,98,0}}, +/* 31291 */ {(12<<2)|2,{56,98,0}}, +/* 31292 */ {(12<<2)|2,{56,98,0}}, +/* 31293 */ {(12<<2)|2,{56,98,0}}, +/* 31294 */ {(12<<2)|2,{56,98,0}}, +/* 31295 */ {(12<<2)|2,{56,98,0}}, +/* 31296 */ {(12<<2)|2,{56,100,0}}, +/* 31297 */ {(12<<2)|2,{56,100,0}}, +/* 31298 */ {(12<<2)|2,{56,100,0}}, +/* 31299 */ {(12<<2)|2,{56,100,0}}, +/* 31300 */ {(12<<2)|2,{56,100,0}}, +/* 31301 */ {(12<<2)|2,{56,100,0}}, +/* 31302 */ {(12<<2)|2,{56,100,0}}, +/* 31303 */ {(12<<2)|2,{56,100,0}}, +/* 31304 */ {(12<<2)|2,{56,100,0}}, +/* 31305 */ {(12<<2)|2,{56,100,0}}, +/* 31306 */ {(12<<2)|2,{56,100,0}}, +/* 31307 */ {(12<<2)|2,{56,100,0}}, +/* 31308 */ {(12<<2)|2,{56,100,0}}, +/* 31309 */ {(12<<2)|2,{56,100,0}}, +/* 31310 */ {(12<<2)|2,{56,100,0}}, +/* 31311 */ {(12<<2)|2,{56,100,0}}, +/* 31312 */ {(12<<2)|2,{56,102,0}}, +/* 31313 */ {(12<<2)|2,{56,102,0}}, +/* 31314 */ {(12<<2)|2,{56,102,0}}, +/* 31315 */ {(12<<2)|2,{56,102,0}}, +/* 31316 */ {(12<<2)|2,{56,102,0}}, +/* 31317 */ {(12<<2)|2,{56,102,0}}, +/* 31318 */ {(12<<2)|2,{56,102,0}}, +/* 31319 */ {(12<<2)|2,{56,102,0}}, +/* 31320 */ {(12<<2)|2,{56,102,0}}, +/* 31321 */ {(12<<2)|2,{56,102,0}}, +/* 31322 */ {(12<<2)|2,{56,102,0}}, +/* 31323 */ {(12<<2)|2,{56,102,0}}, +/* 31324 */ {(12<<2)|2,{56,102,0}}, +/* 31325 */ {(12<<2)|2,{56,102,0}}, +/* 31326 */ {(12<<2)|2,{56,102,0}}, +/* 31327 */ {(12<<2)|2,{56,102,0}}, +/* 31328 */ {(12<<2)|2,{56,103,0}}, +/* 31329 */ {(12<<2)|2,{56,103,0}}, +/* 31330 */ {(12<<2)|2,{56,103,0}}, +/* 31331 */ {(12<<2)|2,{56,103,0}}, +/* 31332 */ {(12<<2)|2,{56,103,0}}, +/* 31333 */ {(12<<2)|2,{56,103,0}}, +/* 31334 */ {(12<<2)|2,{56,103,0}}, +/* 31335 */ {(12<<2)|2,{56,103,0}}, +/* 31336 */ {(12<<2)|2,{56,103,0}}, +/* 31337 */ {(12<<2)|2,{56,103,0}}, +/* 31338 */ {(12<<2)|2,{56,103,0}}, +/* 31339 */ {(12<<2)|2,{56,103,0}}, +/* 31340 */ {(12<<2)|2,{56,103,0}}, +/* 31341 */ {(12<<2)|2,{56,103,0}}, +/* 31342 */ {(12<<2)|2,{56,103,0}}, +/* 31343 */ {(12<<2)|2,{56,103,0}}, +/* 31344 */ {(12<<2)|2,{56,104,0}}, +/* 31345 */ {(12<<2)|2,{56,104,0}}, +/* 31346 */ {(12<<2)|2,{56,104,0}}, +/* 31347 */ {(12<<2)|2,{56,104,0}}, +/* 31348 */ {(12<<2)|2,{56,104,0}}, +/* 31349 */ {(12<<2)|2,{56,104,0}}, +/* 31350 */ {(12<<2)|2,{56,104,0}}, +/* 31351 */ {(12<<2)|2,{56,104,0}}, +/* 31352 */ {(12<<2)|2,{56,104,0}}, +/* 31353 */ {(12<<2)|2,{56,104,0}}, +/* 31354 */ {(12<<2)|2,{56,104,0}}, +/* 31355 */ {(12<<2)|2,{56,104,0}}, +/* 31356 */ {(12<<2)|2,{56,104,0}}, +/* 31357 */ {(12<<2)|2,{56,104,0}}, +/* 31358 */ {(12<<2)|2,{56,104,0}}, +/* 31359 */ {(12<<2)|2,{56,104,0}}, +/* 31360 */ {(12<<2)|2,{56,108,0}}, +/* 31361 */ {(12<<2)|2,{56,108,0}}, +/* 31362 */ {(12<<2)|2,{56,108,0}}, +/* 31363 */ {(12<<2)|2,{56,108,0}}, +/* 31364 */ {(12<<2)|2,{56,108,0}}, +/* 31365 */ {(12<<2)|2,{56,108,0}}, +/* 31366 */ {(12<<2)|2,{56,108,0}}, +/* 31367 */ {(12<<2)|2,{56,108,0}}, +/* 31368 */ {(12<<2)|2,{56,108,0}}, +/* 31369 */ {(12<<2)|2,{56,108,0}}, +/* 31370 */ {(12<<2)|2,{56,108,0}}, +/* 31371 */ {(12<<2)|2,{56,108,0}}, +/* 31372 */ {(12<<2)|2,{56,108,0}}, +/* 31373 */ {(12<<2)|2,{56,108,0}}, +/* 31374 */ {(12<<2)|2,{56,108,0}}, +/* 31375 */ {(12<<2)|2,{56,108,0}}, +/* 31376 */ {(12<<2)|2,{56,109,0}}, +/* 31377 */ {(12<<2)|2,{56,109,0}}, +/* 31378 */ {(12<<2)|2,{56,109,0}}, +/* 31379 */ {(12<<2)|2,{56,109,0}}, +/* 31380 */ {(12<<2)|2,{56,109,0}}, +/* 31381 */ {(12<<2)|2,{56,109,0}}, +/* 31382 */ {(12<<2)|2,{56,109,0}}, +/* 31383 */ {(12<<2)|2,{56,109,0}}, +/* 31384 */ {(12<<2)|2,{56,109,0}}, +/* 31385 */ {(12<<2)|2,{56,109,0}}, +/* 31386 */ {(12<<2)|2,{56,109,0}}, +/* 31387 */ {(12<<2)|2,{56,109,0}}, +/* 31388 */ {(12<<2)|2,{56,109,0}}, +/* 31389 */ {(12<<2)|2,{56,109,0}}, +/* 31390 */ {(12<<2)|2,{56,109,0}}, +/* 31391 */ {(12<<2)|2,{56,109,0}}, +/* 31392 */ {(12<<2)|2,{56,110,0}}, +/* 31393 */ {(12<<2)|2,{56,110,0}}, +/* 31394 */ {(12<<2)|2,{56,110,0}}, +/* 31395 */ {(12<<2)|2,{56,110,0}}, +/* 31396 */ {(12<<2)|2,{56,110,0}}, +/* 31397 */ {(12<<2)|2,{56,110,0}}, +/* 31398 */ {(12<<2)|2,{56,110,0}}, +/* 31399 */ {(12<<2)|2,{56,110,0}}, +/* 31400 */ {(12<<2)|2,{56,110,0}}, +/* 31401 */ {(12<<2)|2,{56,110,0}}, +/* 31402 */ {(12<<2)|2,{56,110,0}}, +/* 31403 */ {(12<<2)|2,{56,110,0}}, +/* 31404 */ {(12<<2)|2,{56,110,0}}, +/* 31405 */ {(12<<2)|2,{56,110,0}}, +/* 31406 */ {(12<<2)|2,{56,110,0}}, +/* 31407 */ {(12<<2)|2,{56,110,0}}, +/* 31408 */ {(12<<2)|2,{56,112,0}}, +/* 31409 */ {(12<<2)|2,{56,112,0}}, +/* 31410 */ {(12<<2)|2,{56,112,0}}, +/* 31411 */ {(12<<2)|2,{56,112,0}}, +/* 31412 */ {(12<<2)|2,{56,112,0}}, +/* 31413 */ {(12<<2)|2,{56,112,0}}, +/* 31414 */ {(12<<2)|2,{56,112,0}}, +/* 31415 */ {(12<<2)|2,{56,112,0}}, +/* 31416 */ {(12<<2)|2,{56,112,0}}, +/* 31417 */ {(12<<2)|2,{56,112,0}}, +/* 31418 */ {(12<<2)|2,{56,112,0}}, +/* 31419 */ {(12<<2)|2,{56,112,0}}, +/* 31420 */ {(12<<2)|2,{56,112,0}}, +/* 31421 */ {(12<<2)|2,{56,112,0}}, +/* 31422 */ {(12<<2)|2,{56,112,0}}, +/* 31423 */ {(12<<2)|2,{56,112,0}}, +/* 31424 */ {(12<<2)|2,{56,114,0}}, +/* 31425 */ {(12<<2)|2,{56,114,0}}, +/* 31426 */ {(12<<2)|2,{56,114,0}}, +/* 31427 */ {(12<<2)|2,{56,114,0}}, +/* 31428 */ {(12<<2)|2,{56,114,0}}, +/* 31429 */ {(12<<2)|2,{56,114,0}}, +/* 31430 */ {(12<<2)|2,{56,114,0}}, +/* 31431 */ {(12<<2)|2,{56,114,0}}, +/* 31432 */ {(12<<2)|2,{56,114,0}}, +/* 31433 */ {(12<<2)|2,{56,114,0}}, +/* 31434 */ {(12<<2)|2,{56,114,0}}, +/* 31435 */ {(12<<2)|2,{56,114,0}}, +/* 31436 */ {(12<<2)|2,{56,114,0}}, +/* 31437 */ {(12<<2)|2,{56,114,0}}, +/* 31438 */ {(12<<2)|2,{56,114,0}}, +/* 31439 */ {(12<<2)|2,{56,114,0}}, +/* 31440 */ {(12<<2)|2,{56,117,0}}, +/* 31441 */ {(12<<2)|2,{56,117,0}}, +/* 31442 */ {(12<<2)|2,{56,117,0}}, +/* 31443 */ {(12<<2)|2,{56,117,0}}, +/* 31444 */ {(12<<2)|2,{56,117,0}}, +/* 31445 */ {(12<<2)|2,{56,117,0}}, +/* 31446 */ {(12<<2)|2,{56,117,0}}, +/* 31447 */ {(12<<2)|2,{56,117,0}}, +/* 31448 */ {(12<<2)|2,{56,117,0}}, +/* 31449 */ {(12<<2)|2,{56,117,0}}, +/* 31450 */ {(12<<2)|2,{56,117,0}}, +/* 31451 */ {(12<<2)|2,{56,117,0}}, +/* 31452 */ {(12<<2)|2,{56,117,0}}, +/* 31453 */ {(12<<2)|2,{56,117,0}}, +/* 31454 */ {(12<<2)|2,{56,117,0}}, +/* 31455 */ {(12<<2)|2,{56,117,0}}, +/* 31456 */ {(13<<2)|2,{56,58,0}}, +/* 31457 */ {(13<<2)|2,{56,58,0}}, +/* 31458 */ {(13<<2)|2,{56,58,0}}, +/* 31459 */ {(13<<2)|2,{56,58,0}}, +/* 31460 */ {(13<<2)|2,{56,58,0}}, +/* 31461 */ {(13<<2)|2,{56,58,0}}, +/* 31462 */ {(13<<2)|2,{56,58,0}}, +/* 31463 */ {(13<<2)|2,{56,58,0}}, +/* 31464 */ {(13<<2)|2,{56,66,0}}, +/* 31465 */ {(13<<2)|2,{56,66,0}}, +/* 31466 */ {(13<<2)|2,{56,66,0}}, +/* 31467 */ {(13<<2)|2,{56,66,0}}, +/* 31468 */ {(13<<2)|2,{56,66,0}}, +/* 31469 */ {(13<<2)|2,{56,66,0}}, +/* 31470 */ {(13<<2)|2,{56,66,0}}, +/* 31471 */ {(13<<2)|2,{56,66,0}}, +/* 31472 */ {(13<<2)|2,{56,67,0}}, +/* 31473 */ {(13<<2)|2,{56,67,0}}, +/* 31474 */ {(13<<2)|2,{56,67,0}}, +/* 31475 */ {(13<<2)|2,{56,67,0}}, +/* 31476 */ {(13<<2)|2,{56,67,0}}, +/* 31477 */ {(13<<2)|2,{56,67,0}}, +/* 31478 */ {(13<<2)|2,{56,67,0}}, +/* 31479 */ {(13<<2)|2,{56,67,0}}, +/* 31480 */ {(13<<2)|2,{56,68,0}}, +/* 31481 */ {(13<<2)|2,{56,68,0}}, +/* 31482 */ {(13<<2)|2,{56,68,0}}, +/* 31483 */ {(13<<2)|2,{56,68,0}}, +/* 31484 */ {(13<<2)|2,{56,68,0}}, +/* 31485 */ {(13<<2)|2,{56,68,0}}, +/* 31486 */ {(13<<2)|2,{56,68,0}}, +/* 31487 */ {(13<<2)|2,{56,68,0}}, +/* 31488 */ {(13<<2)|2,{56,69,0}}, +/* 31489 */ {(13<<2)|2,{56,69,0}}, +/* 31490 */ {(13<<2)|2,{56,69,0}}, +/* 31491 */ {(13<<2)|2,{56,69,0}}, +/* 31492 */ {(13<<2)|2,{56,69,0}}, +/* 31493 */ {(13<<2)|2,{56,69,0}}, +/* 31494 */ {(13<<2)|2,{56,69,0}}, +/* 31495 */ {(13<<2)|2,{56,69,0}}, +/* 31496 */ {(13<<2)|2,{56,70,0}}, +/* 31497 */ {(13<<2)|2,{56,70,0}}, +/* 31498 */ {(13<<2)|2,{56,70,0}}, +/* 31499 */ {(13<<2)|2,{56,70,0}}, +/* 31500 */ {(13<<2)|2,{56,70,0}}, +/* 31501 */ {(13<<2)|2,{56,70,0}}, +/* 31502 */ {(13<<2)|2,{56,70,0}}, +/* 31503 */ {(13<<2)|2,{56,70,0}}, +/* 31504 */ {(13<<2)|2,{56,71,0}}, +/* 31505 */ {(13<<2)|2,{56,71,0}}, +/* 31506 */ {(13<<2)|2,{56,71,0}}, +/* 31507 */ {(13<<2)|2,{56,71,0}}, +/* 31508 */ {(13<<2)|2,{56,71,0}}, +/* 31509 */ {(13<<2)|2,{56,71,0}}, +/* 31510 */ {(13<<2)|2,{56,71,0}}, +/* 31511 */ {(13<<2)|2,{56,71,0}}, +/* 31512 */ {(13<<2)|2,{56,72,0}}, +/* 31513 */ {(13<<2)|2,{56,72,0}}, +/* 31514 */ {(13<<2)|2,{56,72,0}}, +/* 31515 */ {(13<<2)|2,{56,72,0}}, +/* 31516 */ {(13<<2)|2,{56,72,0}}, +/* 31517 */ {(13<<2)|2,{56,72,0}}, +/* 31518 */ {(13<<2)|2,{56,72,0}}, +/* 31519 */ {(13<<2)|2,{56,72,0}}, +/* 31520 */ {(13<<2)|2,{56,73,0}}, +/* 31521 */ {(13<<2)|2,{56,73,0}}, +/* 31522 */ {(13<<2)|2,{56,73,0}}, +/* 31523 */ {(13<<2)|2,{56,73,0}}, +/* 31524 */ {(13<<2)|2,{56,73,0}}, +/* 31525 */ {(13<<2)|2,{56,73,0}}, +/* 31526 */ {(13<<2)|2,{56,73,0}}, +/* 31527 */ {(13<<2)|2,{56,73,0}}, +/* 31528 */ {(13<<2)|2,{56,74,0}}, +/* 31529 */ {(13<<2)|2,{56,74,0}}, +/* 31530 */ {(13<<2)|2,{56,74,0}}, +/* 31531 */ {(13<<2)|2,{56,74,0}}, +/* 31532 */ {(13<<2)|2,{56,74,0}}, +/* 31533 */ {(13<<2)|2,{56,74,0}}, +/* 31534 */ {(13<<2)|2,{56,74,0}}, +/* 31535 */ {(13<<2)|2,{56,74,0}}, +/* 31536 */ {(13<<2)|2,{56,75,0}}, +/* 31537 */ {(13<<2)|2,{56,75,0}}, +/* 31538 */ {(13<<2)|2,{56,75,0}}, +/* 31539 */ {(13<<2)|2,{56,75,0}}, +/* 31540 */ {(13<<2)|2,{56,75,0}}, +/* 31541 */ {(13<<2)|2,{56,75,0}}, +/* 31542 */ {(13<<2)|2,{56,75,0}}, +/* 31543 */ {(13<<2)|2,{56,75,0}}, +/* 31544 */ {(13<<2)|2,{56,76,0}}, +/* 31545 */ {(13<<2)|2,{56,76,0}}, +/* 31546 */ {(13<<2)|2,{56,76,0}}, +/* 31547 */ {(13<<2)|2,{56,76,0}}, +/* 31548 */ {(13<<2)|2,{56,76,0}}, +/* 31549 */ {(13<<2)|2,{56,76,0}}, +/* 31550 */ {(13<<2)|2,{56,76,0}}, +/* 31551 */ {(13<<2)|2,{56,76,0}}, +/* 31552 */ {(13<<2)|2,{56,77,0}}, +/* 31553 */ {(13<<2)|2,{56,77,0}}, +/* 31554 */ {(13<<2)|2,{56,77,0}}, +/* 31555 */ {(13<<2)|2,{56,77,0}}, +/* 31556 */ {(13<<2)|2,{56,77,0}}, +/* 31557 */ {(13<<2)|2,{56,77,0}}, +/* 31558 */ {(13<<2)|2,{56,77,0}}, +/* 31559 */ {(13<<2)|2,{56,77,0}}, +/* 31560 */ {(13<<2)|2,{56,78,0}}, +/* 31561 */ {(13<<2)|2,{56,78,0}}, +/* 31562 */ {(13<<2)|2,{56,78,0}}, +/* 31563 */ {(13<<2)|2,{56,78,0}}, +/* 31564 */ {(13<<2)|2,{56,78,0}}, +/* 31565 */ {(13<<2)|2,{56,78,0}}, +/* 31566 */ {(13<<2)|2,{56,78,0}}, +/* 31567 */ {(13<<2)|2,{56,78,0}}, +/* 31568 */ {(13<<2)|2,{56,79,0}}, +/* 31569 */ {(13<<2)|2,{56,79,0}}, +/* 31570 */ {(13<<2)|2,{56,79,0}}, +/* 31571 */ {(13<<2)|2,{56,79,0}}, +/* 31572 */ {(13<<2)|2,{56,79,0}}, +/* 31573 */ {(13<<2)|2,{56,79,0}}, +/* 31574 */ {(13<<2)|2,{56,79,0}}, +/* 31575 */ {(13<<2)|2,{56,79,0}}, +/* 31576 */ {(13<<2)|2,{56,80,0}}, +/* 31577 */ {(13<<2)|2,{56,80,0}}, +/* 31578 */ {(13<<2)|2,{56,80,0}}, +/* 31579 */ {(13<<2)|2,{56,80,0}}, +/* 31580 */ {(13<<2)|2,{56,80,0}}, +/* 31581 */ {(13<<2)|2,{56,80,0}}, +/* 31582 */ {(13<<2)|2,{56,80,0}}, +/* 31583 */ {(13<<2)|2,{56,80,0}}, +/* 31584 */ {(13<<2)|2,{56,81,0}}, +/* 31585 */ {(13<<2)|2,{56,81,0}}, +/* 31586 */ {(13<<2)|2,{56,81,0}}, +/* 31587 */ {(13<<2)|2,{56,81,0}}, +/* 31588 */ {(13<<2)|2,{56,81,0}}, +/* 31589 */ {(13<<2)|2,{56,81,0}}, +/* 31590 */ {(13<<2)|2,{56,81,0}}, +/* 31591 */ {(13<<2)|2,{56,81,0}}, +/* 31592 */ {(13<<2)|2,{56,82,0}}, +/* 31593 */ {(13<<2)|2,{56,82,0}}, +/* 31594 */ {(13<<2)|2,{56,82,0}}, +/* 31595 */ {(13<<2)|2,{56,82,0}}, +/* 31596 */ {(13<<2)|2,{56,82,0}}, +/* 31597 */ {(13<<2)|2,{56,82,0}}, +/* 31598 */ {(13<<2)|2,{56,82,0}}, +/* 31599 */ {(13<<2)|2,{56,82,0}}, +/* 31600 */ {(13<<2)|2,{56,83,0}}, +/* 31601 */ {(13<<2)|2,{56,83,0}}, +/* 31602 */ {(13<<2)|2,{56,83,0}}, +/* 31603 */ {(13<<2)|2,{56,83,0}}, +/* 31604 */ {(13<<2)|2,{56,83,0}}, +/* 31605 */ {(13<<2)|2,{56,83,0}}, +/* 31606 */ {(13<<2)|2,{56,83,0}}, +/* 31607 */ {(13<<2)|2,{56,83,0}}, +/* 31608 */ {(13<<2)|2,{56,84,0}}, +/* 31609 */ {(13<<2)|2,{56,84,0}}, +/* 31610 */ {(13<<2)|2,{56,84,0}}, +/* 31611 */ {(13<<2)|2,{56,84,0}}, +/* 31612 */ {(13<<2)|2,{56,84,0}}, +/* 31613 */ {(13<<2)|2,{56,84,0}}, +/* 31614 */ {(13<<2)|2,{56,84,0}}, +/* 31615 */ {(13<<2)|2,{56,84,0}}, +/* 31616 */ {(13<<2)|2,{56,85,0}}, +/* 31617 */ {(13<<2)|2,{56,85,0}}, +/* 31618 */ {(13<<2)|2,{56,85,0}}, +/* 31619 */ {(13<<2)|2,{56,85,0}}, +/* 31620 */ {(13<<2)|2,{56,85,0}}, +/* 31621 */ {(13<<2)|2,{56,85,0}}, +/* 31622 */ {(13<<2)|2,{56,85,0}}, +/* 31623 */ {(13<<2)|2,{56,85,0}}, +/* 31624 */ {(13<<2)|2,{56,86,0}}, +/* 31625 */ {(13<<2)|2,{56,86,0}}, +/* 31626 */ {(13<<2)|2,{56,86,0}}, +/* 31627 */ {(13<<2)|2,{56,86,0}}, +/* 31628 */ {(13<<2)|2,{56,86,0}}, +/* 31629 */ {(13<<2)|2,{56,86,0}}, +/* 31630 */ {(13<<2)|2,{56,86,0}}, +/* 31631 */ {(13<<2)|2,{56,86,0}}, +/* 31632 */ {(13<<2)|2,{56,87,0}}, +/* 31633 */ {(13<<2)|2,{56,87,0}}, +/* 31634 */ {(13<<2)|2,{56,87,0}}, +/* 31635 */ {(13<<2)|2,{56,87,0}}, +/* 31636 */ {(13<<2)|2,{56,87,0}}, +/* 31637 */ {(13<<2)|2,{56,87,0}}, +/* 31638 */ {(13<<2)|2,{56,87,0}}, +/* 31639 */ {(13<<2)|2,{56,87,0}}, +/* 31640 */ {(13<<2)|2,{56,89,0}}, +/* 31641 */ {(13<<2)|2,{56,89,0}}, +/* 31642 */ {(13<<2)|2,{56,89,0}}, +/* 31643 */ {(13<<2)|2,{56,89,0}}, +/* 31644 */ {(13<<2)|2,{56,89,0}}, +/* 31645 */ {(13<<2)|2,{56,89,0}}, +/* 31646 */ {(13<<2)|2,{56,89,0}}, +/* 31647 */ {(13<<2)|2,{56,89,0}}, +/* 31648 */ {(13<<2)|2,{56,106,0}}, +/* 31649 */ {(13<<2)|2,{56,106,0}}, +/* 31650 */ {(13<<2)|2,{56,106,0}}, +/* 31651 */ {(13<<2)|2,{56,106,0}}, +/* 31652 */ {(13<<2)|2,{56,106,0}}, +/* 31653 */ {(13<<2)|2,{56,106,0}}, +/* 31654 */ {(13<<2)|2,{56,106,0}}, +/* 31655 */ {(13<<2)|2,{56,106,0}}, +/* 31656 */ {(13<<2)|2,{56,107,0}}, +/* 31657 */ {(13<<2)|2,{56,107,0}}, +/* 31658 */ {(13<<2)|2,{56,107,0}}, +/* 31659 */ {(13<<2)|2,{56,107,0}}, +/* 31660 */ {(13<<2)|2,{56,107,0}}, +/* 31661 */ {(13<<2)|2,{56,107,0}}, +/* 31662 */ {(13<<2)|2,{56,107,0}}, +/* 31663 */ {(13<<2)|2,{56,107,0}}, +/* 31664 */ {(13<<2)|2,{56,113,0}}, +/* 31665 */ {(13<<2)|2,{56,113,0}}, +/* 31666 */ {(13<<2)|2,{56,113,0}}, +/* 31667 */ {(13<<2)|2,{56,113,0}}, +/* 31668 */ {(13<<2)|2,{56,113,0}}, +/* 31669 */ {(13<<2)|2,{56,113,0}}, +/* 31670 */ {(13<<2)|2,{56,113,0}}, +/* 31671 */ {(13<<2)|2,{56,113,0}}, +/* 31672 */ {(13<<2)|2,{56,118,0}}, +/* 31673 */ {(13<<2)|2,{56,118,0}}, +/* 31674 */ {(13<<2)|2,{56,118,0}}, +/* 31675 */ {(13<<2)|2,{56,118,0}}, +/* 31676 */ {(13<<2)|2,{56,118,0}}, +/* 31677 */ {(13<<2)|2,{56,118,0}}, +/* 31678 */ {(13<<2)|2,{56,118,0}}, +/* 31679 */ {(13<<2)|2,{56,118,0}}, +/* 31680 */ {(13<<2)|2,{56,119,0}}, +/* 31681 */ {(13<<2)|2,{56,119,0}}, +/* 31682 */ {(13<<2)|2,{56,119,0}}, +/* 31683 */ {(13<<2)|2,{56,119,0}}, +/* 31684 */ {(13<<2)|2,{56,119,0}}, +/* 31685 */ {(13<<2)|2,{56,119,0}}, +/* 31686 */ {(13<<2)|2,{56,119,0}}, +/* 31687 */ {(13<<2)|2,{56,119,0}}, +/* 31688 */ {(13<<2)|2,{56,120,0}}, +/* 31689 */ {(13<<2)|2,{56,120,0}}, +/* 31690 */ {(13<<2)|2,{56,120,0}}, +/* 31691 */ {(13<<2)|2,{56,120,0}}, +/* 31692 */ {(13<<2)|2,{56,120,0}}, +/* 31693 */ {(13<<2)|2,{56,120,0}}, +/* 31694 */ {(13<<2)|2,{56,120,0}}, +/* 31695 */ {(13<<2)|2,{56,120,0}}, +/* 31696 */ {(13<<2)|2,{56,121,0}}, +/* 31697 */ {(13<<2)|2,{56,121,0}}, +/* 31698 */ {(13<<2)|2,{56,121,0}}, +/* 31699 */ {(13<<2)|2,{56,121,0}}, +/* 31700 */ {(13<<2)|2,{56,121,0}}, +/* 31701 */ {(13<<2)|2,{56,121,0}}, +/* 31702 */ {(13<<2)|2,{56,121,0}}, +/* 31703 */ {(13<<2)|2,{56,121,0}}, +/* 31704 */ {(13<<2)|2,{56,122,0}}, +/* 31705 */ {(13<<2)|2,{56,122,0}}, +/* 31706 */ {(13<<2)|2,{56,122,0}}, +/* 31707 */ {(13<<2)|2,{56,122,0}}, +/* 31708 */ {(13<<2)|2,{56,122,0}}, +/* 31709 */ {(13<<2)|2,{56,122,0}}, +/* 31710 */ {(13<<2)|2,{56,122,0}}, +/* 31711 */ {(13<<2)|2,{56,122,0}}, +/* 31712 */ {(14<<2)|2,{56,38,0}}, +/* 31713 */ {(14<<2)|2,{56,38,0}}, +/* 31714 */ {(14<<2)|2,{56,38,0}}, +/* 31715 */ {(14<<2)|2,{56,38,0}}, +/* 31716 */ {(14<<2)|2,{56,42,0}}, +/* 31717 */ {(14<<2)|2,{56,42,0}}, +/* 31718 */ {(14<<2)|2,{56,42,0}}, +/* 31719 */ {(14<<2)|2,{56,42,0}}, +/* 31720 */ {(14<<2)|2,{56,44,0}}, +/* 31721 */ {(14<<2)|2,{56,44,0}}, +/* 31722 */ {(14<<2)|2,{56,44,0}}, +/* 31723 */ {(14<<2)|2,{56,44,0}}, +/* 31724 */ {(14<<2)|2,{56,59,0}}, +/* 31725 */ {(14<<2)|2,{56,59,0}}, +/* 31726 */ {(14<<2)|2,{56,59,0}}, +/* 31727 */ {(14<<2)|2,{56,59,0}}, +/* 31728 */ {(14<<2)|2,{56,88,0}}, +/* 31729 */ {(14<<2)|2,{56,88,0}}, +/* 31730 */ {(14<<2)|2,{56,88,0}}, +/* 31731 */ {(14<<2)|2,{56,88,0}}, +/* 31732 */ {(14<<2)|2,{56,90,0}}, +/* 31733 */ {(14<<2)|2,{56,90,0}}, +/* 31734 */ {(14<<2)|2,{56,90,0}}, +/* 31735 */ {(14<<2)|2,{56,90,0}}, +/* 31736 */ {(16<<2)|2,{56,33,0}}, +/* 31737 */ {(16<<2)|2,{56,34,0}}, +/* 31738 */ {(16<<2)|2,{56,40,0}}, +/* 31739 */ {(16<<2)|2,{56,41,0}}, +/* 31740 */ {(16<<2)|2,{56,63,0}}, +/* 31741 */ {(6<<2)|1,{56,0,0}}, +/* 31742 */ {(6<<2)|1,{56,0,0}}, +/* 31743 */ {(6<<2)|1,{56,0,0}}, +/* 31744 */ {(16<<2)|3,{57,48,48}}, +/* 31745 */ {(16<<2)|3,{57,48,49}}, +/* 31746 */ {(16<<2)|3,{57,48,50}}, +/* 31747 */ {(16<<2)|3,{57,48,97}}, +/* 31748 */ {(16<<2)|3,{57,48,99}}, +/* 31749 */ {(16<<2)|3,{57,48,101}}, +/* 31750 */ {(16<<2)|3,{57,48,105}}, +/* 31751 */ {(16<<2)|3,{57,48,111}}, +/* 31752 */ {(16<<2)|3,{57,48,115}}, +/* 31753 */ {(16<<2)|3,{57,48,116}}, +/* 31754 */ {(11<<2)|2,{57,48,0}}, +/* 31755 */ {(11<<2)|2,{57,48,0}}, +/* 31756 */ {(11<<2)|2,{57,48,0}}, +/* 31757 */ {(11<<2)|2,{57,48,0}}, +/* 31758 */ {(11<<2)|2,{57,48,0}}, +/* 31759 */ {(11<<2)|2,{57,48,0}}, +/* 31760 */ {(11<<2)|2,{57,48,0}}, +/* 31761 */ {(11<<2)|2,{57,48,0}}, +/* 31762 */ {(11<<2)|2,{57,48,0}}, +/* 31763 */ {(11<<2)|2,{57,48,0}}, +/* 31764 */ {(11<<2)|2,{57,48,0}}, +/* 31765 */ {(11<<2)|2,{57,48,0}}, +/* 31766 */ {(11<<2)|2,{57,48,0}}, +/* 31767 */ {(11<<2)|2,{57,48,0}}, +/* 31768 */ {(11<<2)|2,{57,48,0}}, +/* 31769 */ {(11<<2)|2,{57,48,0}}, +/* 31770 */ {(11<<2)|2,{57,48,0}}, +/* 31771 */ {(11<<2)|2,{57,48,0}}, +/* 31772 */ {(11<<2)|2,{57,48,0}}, +/* 31773 */ {(11<<2)|2,{57,48,0}}, +/* 31774 */ {(11<<2)|2,{57,48,0}}, +/* 31775 */ {(11<<2)|2,{57,48,0}}, +/* 31776 */ {(16<<2)|3,{57,49,48}}, +/* 31777 */ {(16<<2)|3,{57,49,49}}, +/* 31778 */ {(16<<2)|3,{57,49,50}}, +/* 31779 */ {(16<<2)|3,{57,49,97}}, +/* 31780 */ {(16<<2)|3,{57,49,99}}, +/* 31781 */ {(16<<2)|3,{57,49,101}}, +/* 31782 */ {(16<<2)|3,{57,49,105}}, +/* 31783 */ {(16<<2)|3,{57,49,111}}, +/* 31784 */ {(16<<2)|3,{57,49,115}}, +/* 31785 */ {(16<<2)|3,{57,49,116}}, +/* 31786 */ {(11<<2)|2,{57,49,0}}, +/* 31787 */ {(11<<2)|2,{57,49,0}}, +/* 31788 */ {(11<<2)|2,{57,49,0}}, +/* 31789 */ {(11<<2)|2,{57,49,0}}, +/* 31790 */ {(11<<2)|2,{57,49,0}}, +/* 31791 */ {(11<<2)|2,{57,49,0}}, +/* 31792 */ {(11<<2)|2,{57,49,0}}, +/* 31793 */ {(11<<2)|2,{57,49,0}}, +/* 31794 */ {(11<<2)|2,{57,49,0}}, +/* 31795 */ {(11<<2)|2,{57,49,0}}, +/* 31796 */ {(11<<2)|2,{57,49,0}}, +/* 31797 */ {(11<<2)|2,{57,49,0}}, +/* 31798 */ {(11<<2)|2,{57,49,0}}, +/* 31799 */ {(11<<2)|2,{57,49,0}}, +/* 31800 */ {(11<<2)|2,{57,49,0}}, +/* 31801 */ {(11<<2)|2,{57,49,0}}, +/* 31802 */ {(11<<2)|2,{57,49,0}}, +/* 31803 */ {(11<<2)|2,{57,49,0}}, +/* 31804 */ {(11<<2)|2,{57,49,0}}, +/* 31805 */ {(11<<2)|2,{57,49,0}}, +/* 31806 */ {(11<<2)|2,{57,49,0}}, +/* 31807 */ {(11<<2)|2,{57,49,0}}, +/* 31808 */ {(16<<2)|3,{57,50,48}}, +/* 31809 */ {(16<<2)|3,{57,50,49}}, +/* 31810 */ {(16<<2)|3,{57,50,50}}, +/* 31811 */ {(16<<2)|3,{57,50,97}}, +/* 31812 */ {(16<<2)|3,{57,50,99}}, +/* 31813 */ {(16<<2)|3,{57,50,101}}, +/* 31814 */ {(16<<2)|3,{57,50,105}}, +/* 31815 */ {(16<<2)|3,{57,50,111}}, +/* 31816 */ {(16<<2)|3,{57,50,115}}, +/* 31817 */ {(16<<2)|3,{57,50,116}}, +/* 31818 */ {(11<<2)|2,{57,50,0}}, +/* 31819 */ {(11<<2)|2,{57,50,0}}, +/* 31820 */ {(11<<2)|2,{57,50,0}}, +/* 31821 */ {(11<<2)|2,{57,50,0}}, +/* 31822 */ {(11<<2)|2,{57,50,0}}, +/* 31823 */ {(11<<2)|2,{57,50,0}}, +/* 31824 */ {(11<<2)|2,{57,50,0}}, +/* 31825 */ {(11<<2)|2,{57,50,0}}, +/* 31826 */ {(11<<2)|2,{57,50,0}}, +/* 31827 */ {(11<<2)|2,{57,50,0}}, +/* 31828 */ {(11<<2)|2,{57,50,0}}, +/* 31829 */ {(11<<2)|2,{57,50,0}}, +/* 31830 */ {(11<<2)|2,{57,50,0}}, +/* 31831 */ {(11<<2)|2,{57,50,0}}, +/* 31832 */ {(11<<2)|2,{57,50,0}}, +/* 31833 */ {(11<<2)|2,{57,50,0}}, +/* 31834 */ {(11<<2)|2,{57,50,0}}, +/* 31835 */ {(11<<2)|2,{57,50,0}}, +/* 31836 */ {(11<<2)|2,{57,50,0}}, +/* 31837 */ {(11<<2)|2,{57,50,0}}, +/* 31838 */ {(11<<2)|2,{57,50,0}}, +/* 31839 */ {(11<<2)|2,{57,50,0}}, +/* 31840 */ {(16<<2)|3,{57,97,48}}, +/* 31841 */ {(16<<2)|3,{57,97,49}}, +/* 31842 */ {(16<<2)|3,{57,97,50}}, +/* 31843 */ {(16<<2)|3,{57,97,97}}, +/* 31844 */ {(16<<2)|3,{57,97,99}}, +/* 31845 */ {(16<<2)|3,{57,97,101}}, +/* 31846 */ {(16<<2)|3,{57,97,105}}, +/* 31847 */ {(16<<2)|3,{57,97,111}}, +/* 31848 */ {(16<<2)|3,{57,97,115}}, +/* 31849 */ {(16<<2)|3,{57,97,116}}, +/* 31850 */ {(11<<2)|2,{57,97,0}}, +/* 31851 */ {(11<<2)|2,{57,97,0}}, +/* 31852 */ {(11<<2)|2,{57,97,0}}, +/* 31853 */ {(11<<2)|2,{57,97,0}}, +/* 31854 */ {(11<<2)|2,{57,97,0}}, +/* 31855 */ {(11<<2)|2,{57,97,0}}, +/* 31856 */ {(11<<2)|2,{57,97,0}}, +/* 31857 */ {(11<<2)|2,{57,97,0}}, +/* 31858 */ {(11<<2)|2,{57,97,0}}, +/* 31859 */ {(11<<2)|2,{57,97,0}}, +/* 31860 */ {(11<<2)|2,{57,97,0}}, +/* 31861 */ {(11<<2)|2,{57,97,0}}, +/* 31862 */ {(11<<2)|2,{57,97,0}}, +/* 31863 */ {(11<<2)|2,{57,97,0}}, +/* 31864 */ {(11<<2)|2,{57,97,0}}, +/* 31865 */ {(11<<2)|2,{57,97,0}}, +/* 31866 */ {(11<<2)|2,{57,97,0}}, +/* 31867 */ {(11<<2)|2,{57,97,0}}, +/* 31868 */ {(11<<2)|2,{57,97,0}}, +/* 31869 */ {(11<<2)|2,{57,97,0}}, +/* 31870 */ {(11<<2)|2,{57,97,0}}, +/* 31871 */ {(11<<2)|2,{57,97,0}}, +/* 31872 */ {(16<<2)|3,{57,99,48}}, +/* 31873 */ {(16<<2)|3,{57,99,49}}, +/* 31874 */ {(16<<2)|3,{57,99,50}}, +/* 31875 */ {(16<<2)|3,{57,99,97}}, +/* 31876 */ {(16<<2)|3,{57,99,99}}, +/* 31877 */ {(16<<2)|3,{57,99,101}}, +/* 31878 */ {(16<<2)|3,{57,99,105}}, +/* 31879 */ {(16<<2)|3,{57,99,111}}, +/* 31880 */ {(16<<2)|3,{57,99,115}}, +/* 31881 */ {(16<<2)|3,{57,99,116}}, +/* 31882 */ {(11<<2)|2,{57,99,0}}, +/* 31883 */ {(11<<2)|2,{57,99,0}}, +/* 31884 */ {(11<<2)|2,{57,99,0}}, +/* 31885 */ {(11<<2)|2,{57,99,0}}, +/* 31886 */ {(11<<2)|2,{57,99,0}}, +/* 31887 */ {(11<<2)|2,{57,99,0}}, +/* 31888 */ {(11<<2)|2,{57,99,0}}, +/* 31889 */ {(11<<2)|2,{57,99,0}}, +/* 31890 */ {(11<<2)|2,{57,99,0}}, +/* 31891 */ {(11<<2)|2,{57,99,0}}, +/* 31892 */ {(11<<2)|2,{57,99,0}}, +/* 31893 */ {(11<<2)|2,{57,99,0}}, +/* 31894 */ {(11<<2)|2,{57,99,0}}, +/* 31895 */ {(11<<2)|2,{57,99,0}}, +/* 31896 */ {(11<<2)|2,{57,99,0}}, +/* 31897 */ {(11<<2)|2,{57,99,0}}, +/* 31898 */ {(11<<2)|2,{57,99,0}}, +/* 31899 */ {(11<<2)|2,{57,99,0}}, +/* 31900 */ {(11<<2)|2,{57,99,0}}, +/* 31901 */ {(11<<2)|2,{57,99,0}}, +/* 31902 */ {(11<<2)|2,{57,99,0}}, +/* 31903 */ {(11<<2)|2,{57,99,0}}, +/* 31904 */ {(16<<2)|3,{57,101,48}}, +/* 31905 */ {(16<<2)|3,{57,101,49}}, +/* 31906 */ {(16<<2)|3,{57,101,50}}, +/* 31907 */ {(16<<2)|3,{57,101,97}}, +/* 31908 */ {(16<<2)|3,{57,101,99}}, +/* 31909 */ {(16<<2)|3,{57,101,101}}, +/* 31910 */ {(16<<2)|3,{57,101,105}}, +/* 31911 */ {(16<<2)|3,{57,101,111}}, +/* 31912 */ {(16<<2)|3,{57,101,115}}, +/* 31913 */ {(16<<2)|3,{57,101,116}}, +/* 31914 */ {(11<<2)|2,{57,101,0}}, +/* 31915 */ {(11<<2)|2,{57,101,0}}, +/* 31916 */ {(11<<2)|2,{57,101,0}}, +/* 31917 */ {(11<<2)|2,{57,101,0}}, +/* 31918 */ {(11<<2)|2,{57,101,0}}, +/* 31919 */ {(11<<2)|2,{57,101,0}}, +/* 31920 */ {(11<<2)|2,{57,101,0}}, +/* 31921 */ {(11<<2)|2,{57,101,0}}, +/* 31922 */ {(11<<2)|2,{57,101,0}}, +/* 31923 */ {(11<<2)|2,{57,101,0}}, +/* 31924 */ {(11<<2)|2,{57,101,0}}, +/* 31925 */ {(11<<2)|2,{57,101,0}}, +/* 31926 */ {(11<<2)|2,{57,101,0}}, +/* 31927 */ {(11<<2)|2,{57,101,0}}, +/* 31928 */ {(11<<2)|2,{57,101,0}}, +/* 31929 */ {(11<<2)|2,{57,101,0}}, +/* 31930 */ {(11<<2)|2,{57,101,0}}, +/* 31931 */ {(11<<2)|2,{57,101,0}}, +/* 31932 */ {(11<<2)|2,{57,101,0}}, +/* 31933 */ {(11<<2)|2,{57,101,0}}, +/* 31934 */ {(11<<2)|2,{57,101,0}}, +/* 31935 */ {(11<<2)|2,{57,101,0}}, +/* 31936 */ {(16<<2)|3,{57,105,48}}, +/* 31937 */ {(16<<2)|3,{57,105,49}}, +/* 31938 */ {(16<<2)|3,{57,105,50}}, +/* 31939 */ {(16<<2)|3,{57,105,97}}, +/* 31940 */ {(16<<2)|3,{57,105,99}}, +/* 31941 */ {(16<<2)|3,{57,105,101}}, +/* 31942 */ {(16<<2)|3,{57,105,105}}, +/* 31943 */ {(16<<2)|3,{57,105,111}}, +/* 31944 */ {(16<<2)|3,{57,105,115}}, +/* 31945 */ {(16<<2)|3,{57,105,116}}, +/* 31946 */ {(11<<2)|2,{57,105,0}}, +/* 31947 */ {(11<<2)|2,{57,105,0}}, +/* 31948 */ {(11<<2)|2,{57,105,0}}, +/* 31949 */ {(11<<2)|2,{57,105,0}}, +/* 31950 */ {(11<<2)|2,{57,105,0}}, +/* 31951 */ {(11<<2)|2,{57,105,0}}, +/* 31952 */ {(11<<2)|2,{57,105,0}}, +/* 31953 */ {(11<<2)|2,{57,105,0}}, +/* 31954 */ {(11<<2)|2,{57,105,0}}, +/* 31955 */ {(11<<2)|2,{57,105,0}}, +/* 31956 */ {(11<<2)|2,{57,105,0}}, +/* 31957 */ {(11<<2)|2,{57,105,0}}, +/* 31958 */ {(11<<2)|2,{57,105,0}}, +/* 31959 */ {(11<<2)|2,{57,105,0}}, +/* 31960 */ {(11<<2)|2,{57,105,0}}, +/* 31961 */ {(11<<2)|2,{57,105,0}}, +/* 31962 */ {(11<<2)|2,{57,105,0}}, +/* 31963 */ {(11<<2)|2,{57,105,0}}, +/* 31964 */ {(11<<2)|2,{57,105,0}}, +/* 31965 */ {(11<<2)|2,{57,105,0}}, +/* 31966 */ {(11<<2)|2,{57,105,0}}, +/* 31967 */ {(11<<2)|2,{57,105,0}}, +/* 31968 */ {(16<<2)|3,{57,111,48}}, +/* 31969 */ {(16<<2)|3,{57,111,49}}, +/* 31970 */ {(16<<2)|3,{57,111,50}}, +/* 31971 */ {(16<<2)|3,{57,111,97}}, +/* 31972 */ {(16<<2)|3,{57,111,99}}, +/* 31973 */ {(16<<2)|3,{57,111,101}}, +/* 31974 */ {(16<<2)|3,{57,111,105}}, +/* 31975 */ {(16<<2)|3,{57,111,111}}, +/* 31976 */ {(16<<2)|3,{57,111,115}}, +/* 31977 */ {(16<<2)|3,{57,111,116}}, +/* 31978 */ {(11<<2)|2,{57,111,0}}, +/* 31979 */ {(11<<2)|2,{57,111,0}}, +/* 31980 */ {(11<<2)|2,{57,111,0}}, +/* 31981 */ {(11<<2)|2,{57,111,0}}, +/* 31982 */ {(11<<2)|2,{57,111,0}}, +/* 31983 */ {(11<<2)|2,{57,111,0}}, +/* 31984 */ {(11<<2)|2,{57,111,0}}, +/* 31985 */ {(11<<2)|2,{57,111,0}}, +/* 31986 */ {(11<<2)|2,{57,111,0}}, +/* 31987 */ {(11<<2)|2,{57,111,0}}, +/* 31988 */ {(11<<2)|2,{57,111,0}}, +/* 31989 */ {(11<<2)|2,{57,111,0}}, +/* 31990 */ {(11<<2)|2,{57,111,0}}, +/* 31991 */ {(11<<2)|2,{57,111,0}}, +/* 31992 */ {(11<<2)|2,{57,111,0}}, +/* 31993 */ {(11<<2)|2,{57,111,0}}, +/* 31994 */ {(11<<2)|2,{57,111,0}}, +/* 31995 */ {(11<<2)|2,{57,111,0}}, +/* 31996 */ {(11<<2)|2,{57,111,0}}, +/* 31997 */ {(11<<2)|2,{57,111,0}}, +/* 31998 */ {(11<<2)|2,{57,111,0}}, +/* 31999 */ {(11<<2)|2,{57,111,0}}, +/* 32000 */ {(16<<2)|3,{57,115,48}}, +/* 32001 */ {(16<<2)|3,{57,115,49}}, +/* 32002 */ {(16<<2)|3,{57,115,50}}, +/* 32003 */ {(16<<2)|3,{57,115,97}}, +/* 32004 */ {(16<<2)|3,{57,115,99}}, +/* 32005 */ {(16<<2)|3,{57,115,101}}, +/* 32006 */ {(16<<2)|3,{57,115,105}}, +/* 32007 */ {(16<<2)|3,{57,115,111}}, +/* 32008 */ {(16<<2)|3,{57,115,115}}, +/* 32009 */ {(16<<2)|3,{57,115,116}}, +/* 32010 */ {(11<<2)|2,{57,115,0}}, +/* 32011 */ {(11<<2)|2,{57,115,0}}, +/* 32012 */ {(11<<2)|2,{57,115,0}}, +/* 32013 */ {(11<<2)|2,{57,115,0}}, +/* 32014 */ {(11<<2)|2,{57,115,0}}, +/* 32015 */ {(11<<2)|2,{57,115,0}}, +/* 32016 */ {(11<<2)|2,{57,115,0}}, +/* 32017 */ {(11<<2)|2,{57,115,0}}, +/* 32018 */ {(11<<2)|2,{57,115,0}}, +/* 32019 */ {(11<<2)|2,{57,115,0}}, +/* 32020 */ {(11<<2)|2,{57,115,0}}, +/* 32021 */ {(11<<2)|2,{57,115,0}}, +/* 32022 */ {(11<<2)|2,{57,115,0}}, +/* 32023 */ {(11<<2)|2,{57,115,0}}, +/* 32024 */ {(11<<2)|2,{57,115,0}}, +/* 32025 */ {(11<<2)|2,{57,115,0}}, +/* 32026 */ {(11<<2)|2,{57,115,0}}, +/* 32027 */ {(11<<2)|2,{57,115,0}}, +/* 32028 */ {(11<<2)|2,{57,115,0}}, +/* 32029 */ {(11<<2)|2,{57,115,0}}, +/* 32030 */ {(11<<2)|2,{57,115,0}}, +/* 32031 */ {(11<<2)|2,{57,115,0}}, +/* 32032 */ {(16<<2)|3,{57,116,48}}, +/* 32033 */ {(16<<2)|3,{57,116,49}}, +/* 32034 */ {(16<<2)|3,{57,116,50}}, +/* 32035 */ {(16<<2)|3,{57,116,97}}, +/* 32036 */ {(16<<2)|3,{57,116,99}}, +/* 32037 */ {(16<<2)|3,{57,116,101}}, +/* 32038 */ {(16<<2)|3,{57,116,105}}, +/* 32039 */ {(16<<2)|3,{57,116,111}}, +/* 32040 */ {(16<<2)|3,{57,116,115}}, +/* 32041 */ {(16<<2)|3,{57,116,116}}, +/* 32042 */ {(11<<2)|2,{57,116,0}}, +/* 32043 */ {(11<<2)|2,{57,116,0}}, +/* 32044 */ {(11<<2)|2,{57,116,0}}, +/* 32045 */ {(11<<2)|2,{57,116,0}}, +/* 32046 */ {(11<<2)|2,{57,116,0}}, +/* 32047 */ {(11<<2)|2,{57,116,0}}, +/* 32048 */ {(11<<2)|2,{57,116,0}}, +/* 32049 */ {(11<<2)|2,{57,116,0}}, +/* 32050 */ {(11<<2)|2,{57,116,0}}, +/* 32051 */ {(11<<2)|2,{57,116,0}}, +/* 32052 */ {(11<<2)|2,{57,116,0}}, +/* 32053 */ {(11<<2)|2,{57,116,0}}, +/* 32054 */ {(11<<2)|2,{57,116,0}}, +/* 32055 */ {(11<<2)|2,{57,116,0}}, +/* 32056 */ {(11<<2)|2,{57,116,0}}, +/* 32057 */ {(11<<2)|2,{57,116,0}}, +/* 32058 */ {(11<<2)|2,{57,116,0}}, +/* 32059 */ {(11<<2)|2,{57,116,0}}, +/* 32060 */ {(11<<2)|2,{57,116,0}}, +/* 32061 */ {(11<<2)|2,{57,116,0}}, +/* 32062 */ {(11<<2)|2,{57,116,0}}, +/* 32063 */ {(11<<2)|2,{57,116,0}}, +/* 32064 */ {(12<<2)|2,{57,32,0}}, +/* 32065 */ {(12<<2)|2,{57,32,0}}, +/* 32066 */ {(12<<2)|2,{57,32,0}}, +/* 32067 */ {(12<<2)|2,{57,32,0}}, +/* 32068 */ {(12<<2)|2,{57,32,0}}, +/* 32069 */ {(12<<2)|2,{57,32,0}}, +/* 32070 */ {(12<<2)|2,{57,32,0}}, +/* 32071 */ {(12<<2)|2,{57,32,0}}, +/* 32072 */ {(12<<2)|2,{57,32,0}}, +/* 32073 */ {(12<<2)|2,{57,32,0}}, +/* 32074 */ {(12<<2)|2,{57,32,0}}, +/* 32075 */ {(12<<2)|2,{57,32,0}}, +/* 32076 */ {(12<<2)|2,{57,32,0}}, +/* 32077 */ {(12<<2)|2,{57,32,0}}, +/* 32078 */ {(12<<2)|2,{57,32,0}}, +/* 32079 */ {(12<<2)|2,{57,32,0}}, +/* 32080 */ {(12<<2)|2,{57,37,0}}, +/* 32081 */ {(12<<2)|2,{57,37,0}}, +/* 32082 */ {(12<<2)|2,{57,37,0}}, +/* 32083 */ {(12<<2)|2,{57,37,0}}, +/* 32084 */ {(12<<2)|2,{57,37,0}}, +/* 32085 */ {(12<<2)|2,{57,37,0}}, +/* 32086 */ {(12<<2)|2,{57,37,0}}, +/* 32087 */ {(12<<2)|2,{57,37,0}}, +/* 32088 */ {(12<<2)|2,{57,37,0}}, +/* 32089 */ {(12<<2)|2,{57,37,0}}, +/* 32090 */ {(12<<2)|2,{57,37,0}}, +/* 32091 */ {(12<<2)|2,{57,37,0}}, +/* 32092 */ {(12<<2)|2,{57,37,0}}, +/* 32093 */ {(12<<2)|2,{57,37,0}}, +/* 32094 */ {(12<<2)|2,{57,37,0}}, +/* 32095 */ {(12<<2)|2,{57,37,0}}, +/* 32096 */ {(12<<2)|2,{57,45,0}}, +/* 32097 */ {(12<<2)|2,{57,45,0}}, +/* 32098 */ {(12<<2)|2,{57,45,0}}, +/* 32099 */ {(12<<2)|2,{57,45,0}}, +/* 32100 */ {(12<<2)|2,{57,45,0}}, +/* 32101 */ {(12<<2)|2,{57,45,0}}, +/* 32102 */ {(12<<2)|2,{57,45,0}}, +/* 32103 */ {(12<<2)|2,{57,45,0}}, +/* 32104 */ {(12<<2)|2,{57,45,0}}, +/* 32105 */ {(12<<2)|2,{57,45,0}}, +/* 32106 */ {(12<<2)|2,{57,45,0}}, +/* 32107 */ {(12<<2)|2,{57,45,0}}, +/* 32108 */ {(12<<2)|2,{57,45,0}}, +/* 32109 */ {(12<<2)|2,{57,45,0}}, +/* 32110 */ {(12<<2)|2,{57,45,0}}, +/* 32111 */ {(12<<2)|2,{57,45,0}}, +/* 32112 */ {(12<<2)|2,{57,46,0}}, +/* 32113 */ {(12<<2)|2,{57,46,0}}, +/* 32114 */ {(12<<2)|2,{57,46,0}}, +/* 32115 */ {(12<<2)|2,{57,46,0}}, +/* 32116 */ {(12<<2)|2,{57,46,0}}, +/* 32117 */ {(12<<2)|2,{57,46,0}}, +/* 32118 */ {(12<<2)|2,{57,46,0}}, +/* 32119 */ {(12<<2)|2,{57,46,0}}, +/* 32120 */ {(12<<2)|2,{57,46,0}}, +/* 32121 */ {(12<<2)|2,{57,46,0}}, +/* 32122 */ {(12<<2)|2,{57,46,0}}, +/* 32123 */ {(12<<2)|2,{57,46,0}}, +/* 32124 */ {(12<<2)|2,{57,46,0}}, +/* 32125 */ {(12<<2)|2,{57,46,0}}, +/* 32126 */ {(12<<2)|2,{57,46,0}}, +/* 32127 */ {(12<<2)|2,{57,46,0}}, +/* 32128 */ {(12<<2)|2,{57,47,0}}, +/* 32129 */ {(12<<2)|2,{57,47,0}}, +/* 32130 */ {(12<<2)|2,{57,47,0}}, +/* 32131 */ {(12<<2)|2,{57,47,0}}, +/* 32132 */ {(12<<2)|2,{57,47,0}}, +/* 32133 */ {(12<<2)|2,{57,47,0}}, +/* 32134 */ {(12<<2)|2,{57,47,0}}, +/* 32135 */ {(12<<2)|2,{57,47,0}}, +/* 32136 */ {(12<<2)|2,{57,47,0}}, +/* 32137 */ {(12<<2)|2,{57,47,0}}, +/* 32138 */ {(12<<2)|2,{57,47,0}}, +/* 32139 */ {(12<<2)|2,{57,47,0}}, +/* 32140 */ {(12<<2)|2,{57,47,0}}, +/* 32141 */ {(12<<2)|2,{57,47,0}}, +/* 32142 */ {(12<<2)|2,{57,47,0}}, +/* 32143 */ {(12<<2)|2,{57,47,0}}, +/* 32144 */ {(12<<2)|2,{57,51,0}}, +/* 32145 */ {(12<<2)|2,{57,51,0}}, +/* 32146 */ {(12<<2)|2,{57,51,0}}, +/* 32147 */ {(12<<2)|2,{57,51,0}}, +/* 32148 */ {(12<<2)|2,{57,51,0}}, +/* 32149 */ {(12<<2)|2,{57,51,0}}, +/* 32150 */ {(12<<2)|2,{57,51,0}}, +/* 32151 */ {(12<<2)|2,{57,51,0}}, +/* 32152 */ {(12<<2)|2,{57,51,0}}, +/* 32153 */ {(12<<2)|2,{57,51,0}}, +/* 32154 */ {(12<<2)|2,{57,51,0}}, +/* 32155 */ {(12<<2)|2,{57,51,0}}, +/* 32156 */ {(12<<2)|2,{57,51,0}}, +/* 32157 */ {(12<<2)|2,{57,51,0}}, +/* 32158 */ {(12<<2)|2,{57,51,0}}, +/* 32159 */ {(12<<2)|2,{57,51,0}}, +/* 32160 */ {(12<<2)|2,{57,52,0}}, +/* 32161 */ {(12<<2)|2,{57,52,0}}, +/* 32162 */ {(12<<2)|2,{57,52,0}}, +/* 32163 */ {(12<<2)|2,{57,52,0}}, +/* 32164 */ {(12<<2)|2,{57,52,0}}, +/* 32165 */ {(12<<2)|2,{57,52,0}}, +/* 32166 */ {(12<<2)|2,{57,52,0}}, +/* 32167 */ {(12<<2)|2,{57,52,0}}, +/* 32168 */ {(12<<2)|2,{57,52,0}}, +/* 32169 */ {(12<<2)|2,{57,52,0}}, +/* 32170 */ {(12<<2)|2,{57,52,0}}, +/* 32171 */ {(12<<2)|2,{57,52,0}}, +/* 32172 */ {(12<<2)|2,{57,52,0}}, +/* 32173 */ {(12<<2)|2,{57,52,0}}, +/* 32174 */ {(12<<2)|2,{57,52,0}}, +/* 32175 */ {(12<<2)|2,{57,52,0}}, +/* 32176 */ {(12<<2)|2,{57,53,0}}, +/* 32177 */ {(12<<2)|2,{57,53,0}}, +/* 32178 */ {(12<<2)|2,{57,53,0}}, +/* 32179 */ {(12<<2)|2,{57,53,0}}, +/* 32180 */ {(12<<2)|2,{57,53,0}}, +/* 32181 */ {(12<<2)|2,{57,53,0}}, +/* 32182 */ {(12<<2)|2,{57,53,0}}, +/* 32183 */ {(12<<2)|2,{57,53,0}}, +/* 32184 */ {(12<<2)|2,{57,53,0}}, +/* 32185 */ {(12<<2)|2,{57,53,0}}, +/* 32186 */ {(12<<2)|2,{57,53,0}}, +/* 32187 */ {(12<<2)|2,{57,53,0}}, +/* 32188 */ {(12<<2)|2,{57,53,0}}, +/* 32189 */ {(12<<2)|2,{57,53,0}}, +/* 32190 */ {(12<<2)|2,{57,53,0}}, +/* 32191 */ {(12<<2)|2,{57,53,0}}, +/* 32192 */ {(12<<2)|2,{57,54,0}}, +/* 32193 */ {(12<<2)|2,{57,54,0}}, +/* 32194 */ {(12<<2)|2,{57,54,0}}, +/* 32195 */ {(12<<2)|2,{57,54,0}}, +/* 32196 */ {(12<<2)|2,{57,54,0}}, +/* 32197 */ {(12<<2)|2,{57,54,0}}, +/* 32198 */ {(12<<2)|2,{57,54,0}}, +/* 32199 */ {(12<<2)|2,{57,54,0}}, +/* 32200 */ {(12<<2)|2,{57,54,0}}, +/* 32201 */ {(12<<2)|2,{57,54,0}}, +/* 32202 */ {(12<<2)|2,{57,54,0}}, +/* 32203 */ {(12<<2)|2,{57,54,0}}, +/* 32204 */ {(12<<2)|2,{57,54,0}}, +/* 32205 */ {(12<<2)|2,{57,54,0}}, +/* 32206 */ {(12<<2)|2,{57,54,0}}, +/* 32207 */ {(12<<2)|2,{57,54,0}}, +/* 32208 */ {(12<<2)|2,{57,55,0}}, +/* 32209 */ {(12<<2)|2,{57,55,0}}, +/* 32210 */ {(12<<2)|2,{57,55,0}}, +/* 32211 */ {(12<<2)|2,{57,55,0}}, +/* 32212 */ {(12<<2)|2,{57,55,0}}, +/* 32213 */ {(12<<2)|2,{57,55,0}}, +/* 32214 */ {(12<<2)|2,{57,55,0}}, +/* 32215 */ {(12<<2)|2,{57,55,0}}, +/* 32216 */ {(12<<2)|2,{57,55,0}}, +/* 32217 */ {(12<<2)|2,{57,55,0}}, +/* 32218 */ {(12<<2)|2,{57,55,0}}, +/* 32219 */ {(12<<2)|2,{57,55,0}}, +/* 32220 */ {(12<<2)|2,{57,55,0}}, +/* 32221 */ {(12<<2)|2,{57,55,0}}, +/* 32222 */ {(12<<2)|2,{57,55,0}}, +/* 32223 */ {(12<<2)|2,{57,55,0}}, +/* 32224 */ {(12<<2)|2,{57,56,0}}, +/* 32225 */ {(12<<2)|2,{57,56,0}}, +/* 32226 */ {(12<<2)|2,{57,56,0}}, +/* 32227 */ {(12<<2)|2,{57,56,0}}, +/* 32228 */ {(12<<2)|2,{57,56,0}}, +/* 32229 */ {(12<<2)|2,{57,56,0}}, +/* 32230 */ {(12<<2)|2,{57,56,0}}, +/* 32231 */ {(12<<2)|2,{57,56,0}}, +/* 32232 */ {(12<<2)|2,{57,56,0}}, +/* 32233 */ {(12<<2)|2,{57,56,0}}, +/* 32234 */ {(12<<2)|2,{57,56,0}}, +/* 32235 */ {(12<<2)|2,{57,56,0}}, +/* 32236 */ {(12<<2)|2,{57,56,0}}, +/* 32237 */ {(12<<2)|2,{57,56,0}}, +/* 32238 */ {(12<<2)|2,{57,56,0}}, +/* 32239 */ {(12<<2)|2,{57,56,0}}, +/* 32240 */ {(12<<2)|2,{57,57,0}}, +/* 32241 */ {(12<<2)|2,{57,57,0}}, +/* 32242 */ {(12<<2)|2,{57,57,0}}, +/* 32243 */ {(12<<2)|2,{57,57,0}}, +/* 32244 */ {(12<<2)|2,{57,57,0}}, +/* 32245 */ {(12<<2)|2,{57,57,0}}, +/* 32246 */ {(12<<2)|2,{57,57,0}}, +/* 32247 */ {(12<<2)|2,{57,57,0}}, +/* 32248 */ {(12<<2)|2,{57,57,0}}, +/* 32249 */ {(12<<2)|2,{57,57,0}}, +/* 32250 */ {(12<<2)|2,{57,57,0}}, +/* 32251 */ {(12<<2)|2,{57,57,0}}, +/* 32252 */ {(12<<2)|2,{57,57,0}}, +/* 32253 */ {(12<<2)|2,{57,57,0}}, +/* 32254 */ {(12<<2)|2,{57,57,0}}, +/* 32255 */ {(12<<2)|2,{57,57,0}}, +/* 32256 */ {(12<<2)|2,{57,61,0}}, +/* 32257 */ {(12<<2)|2,{57,61,0}}, +/* 32258 */ {(12<<2)|2,{57,61,0}}, +/* 32259 */ {(12<<2)|2,{57,61,0}}, +/* 32260 */ {(12<<2)|2,{57,61,0}}, +/* 32261 */ {(12<<2)|2,{57,61,0}}, +/* 32262 */ {(12<<2)|2,{57,61,0}}, +/* 32263 */ {(12<<2)|2,{57,61,0}}, +/* 32264 */ {(12<<2)|2,{57,61,0}}, +/* 32265 */ {(12<<2)|2,{57,61,0}}, +/* 32266 */ {(12<<2)|2,{57,61,0}}, +/* 32267 */ {(12<<2)|2,{57,61,0}}, +/* 32268 */ {(12<<2)|2,{57,61,0}}, +/* 32269 */ {(12<<2)|2,{57,61,0}}, +/* 32270 */ {(12<<2)|2,{57,61,0}}, +/* 32271 */ {(12<<2)|2,{57,61,0}}, +/* 32272 */ {(12<<2)|2,{57,65,0}}, +/* 32273 */ {(12<<2)|2,{57,65,0}}, +/* 32274 */ {(12<<2)|2,{57,65,0}}, +/* 32275 */ {(12<<2)|2,{57,65,0}}, +/* 32276 */ {(12<<2)|2,{57,65,0}}, +/* 32277 */ {(12<<2)|2,{57,65,0}}, +/* 32278 */ {(12<<2)|2,{57,65,0}}, +/* 32279 */ {(12<<2)|2,{57,65,0}}, +/* 32280 */ {(12<<2)|2,{57,65,0}}, +/* 32281 */ {(12<<2)|2,{57,65,0}}, +/* 32282 */ {(12<<2)|2,{57,65,0}}, +/* 32283 */ {(12<<2)|2,{57,65,0}}, +/* 32284 */ {(12<<2)|2,{57,65,0}}, +/* 32285 */ {(12<<2)|2,{57,65,0}}, +/* 32286 */ {(12<<2)|2,{57,65,0}}, +/* 32287 */ {(12<<2)|2,{57,65,0}}, +/* 32288 */ {(12<<2)|2,{57,95,0}}, +/* 32289 */ {(12<<2)|2,{57,95,0}}, +/* 32290 */ {(12<<2)|2,{57,95,0}}, +/* 32291 */ {(12<<2)|2,{57,95,0}}, +/* 32292 */ {(12<<2)|2,{57,95,0}}, +/* 32293 */ {(12<<2)|2,{57,95,0}}, +/* 32294 */ {(12<<2)|2,{57,95,0}}, +/* 32295 */ {(12<<2)|2,{57,95,0}}, +/* 32296 */ {(12<<2)|2,{57,95,0}}, +/* 32297 */ {(12<<2)|2,{57,95,0}}, +/* 32298 */ {(12<<2)|2,{57,95,0}}, +/* 32299 */ {(12<<2)|2,{57,95,0}}, +/* 32300 */ {(12<<2)|2,{57,95,0}}, +/* 32301 */ {(12<<2)|2,{57,95,0}}, +/* 32302 */ {(12<<2)|2,{57,95,0}}, +/* 32303 */ {(12<<2)|2,{57,95,0}}, +/* 32304 */ {(12<<2)|2,{57,98,0}}, +/* 32305 */ {(12<<2)|2,{57,98,0}}, +/* 32306 */ {(12<<2)|2,{57,98,0}}, +/* 32307 */ {(12<<2)|2,{57,98,0}}, +/* 32308 */ {(12<<2)|2,{57,98,0}}, +/* 32309 */ {(12<<2)|2,{57,98,0}}, +/* 32310 */ {(12<<2)|2,{57,98,0}}, +/* 32311 */ {(12<<2)|2,{57,98,0}}, +/* 32312 */ {(12<<2)|2,{57,98,0}}, +/* 32313 */ {(12<<2)|2,{57,98,0}}, +/* 32314 */ {(12<<2)|2,{57,98,0}}, +/* 32315 */ {(12<<2)|2,{57,98,0}}, +/* 32316 */ {(12<<2)|2,{57,98,0}}, +/* 32317 */ {(12<<2)|2,{57,98,0}}, +/* 32318 */ {(12<<2)|2,{57,98,0}}, +/* 32319 */ {(12<<2)|2,{57,98,0}}, +/* 32320 */ {(12<<2)|2,{57,100,0}}, +/* 32321 */ {(12<<2)|2,{57,100,0}}, +/* 32322 */ {(12<<2)|2,{57,100,0}}, +/* 32323 */ {(12<<2)|2,{57,100,0}}, +/* 32324 */ {(12<<2)|2,{57,100,0}}, +/* 32325 */ {(12<<2)|2,{57,100,0}}, +/* 32326 */ {(12<<2)|2,{57,100,0}}, +/* 32327 */ {(12<<2)|2,{57,100,0}}, +/* 32328 */ {(12<<2)|2,{57,100,0}}, +/* 32329 */ {(12<<2)|2,{57,100,0}}, +/* 32330 */ {(12<<2)|2,{57,100,0}}, +/* 32331 */ {(12<<2)|2,{57,100,0}}, +/* 32332 */ {(12<<2)|2,{57,100,0}}, +/* 32333 */ {(12<<2)|2,{57,100,0}}, +/* 32334 */ {(12<<2)|2,{57,100,0}}, +/* 32335 */ {(12<<2)|2,{57,100,0}}, +/* 32336 */ {(12<<2)|2,{57,102,0}}, +/* 32337 */ {(12<<2)|2,{57,102,0}}, +/* 32338 */ {(12<<2)|2,{57,102,0}}, +/* 32339 */ {(12<<2)|2,{57,102,0}}, +/* 32340 */ {(12<<2)|2,{57,102,0}}, +/* 32341 */ {(12<<2)|2,{57,102,0}}, +/* 32342 */ {(12<<2)|2,{57,102,0}}, +/* 32343 */ {(12<<2)|2,{57,102,0}}, +/* 32344 */ {(12<<2)|2,{57,102,0}}, +/* 32345 */ {(12<<2)|2,{57,102,0}}, +/* 32346 */ {(12<<2)|2,{57,102,0}}, +/* 32347 */ {(12<<2)|2,{57,102,0}}, +/* 32348 */ {(12<<2)|2,{57,102,0}}, +/* 32349 */ {(12<<2)|2,{57,102,0}}, +/* 32350 */ {(12<<2)|2,{57,102,0}}, +/* 32351 */ {(12<<2)|2,{57,102,0}}, +/* 32352 */ {(12<<2)|2,{57,103,0}}, +/* 32353 */ {(12<<2)|2,{57,103,0}}, +/* 32354 */ {(12<<2)|2,{57,103,0}}, +/* 32355 */ {(12<<2)|2,{57,103,0}}, +/* 32356 */ {(12<<2)|2,{57,103,0}}, +/* 32357 */ {(12<<2)|2,{57,103,0}}, +/* 32358 */ {(12<<2)|2,{57,103,0}}, +/* 32359 */ {(12<<2)|2,{57,103,0}}, +/* 32360 */ {(12<<2)|2,{57,103,0}}, +/* 32361 */ {(12<<2)|2,{57,103,0}}, +/* 32362 */ {(12<<2)|2,{57,103,0}}, +/* 32363 */ {(12<<2)|2,{57,103,0}}, +/* 32364 */ {(12<<2)|2,{57,103,0}}, +/* 32365 */ {(12<<2)|2,{57,103,0}}, +/* 32366 */ {(12<<2)|2,{57,103,0}}, +/* 32367 */ {(12<<2)|2,{57,103,0}}, +/* 32368 */ {(12<<2)|2,{57,104,0}}, +/* 32369 */ {(12<<2)|2,{57,104,0}}, +/* 32370 */ {(12<<2)|2,{57,104,0}}, +/* 32371 */ {(12<<2)|2,{57,104,0}}, +/* 32372 */ {(12<<2)|2,{57,104,0}}, +/* 32373 */ {(12<<2)|2,{57,104,0}}, +/* 32374 */ {(12<<2)|2,{57,104,0}}, +/* 32375 */ {(12<<2)|2,{57,104,0}}, +/* 32376 */ {(12<<2)|2,{57,104,0}}, +/* 32377 */ {(12<<2)|2,{57,104,0}}, +/* 32378 */ {(12<<2)|2,{57,104,0}}, +/* 32379 */ {(12<<2)|2,{57,104,0}}, +/* 32380 */ {(12<<2)|2,{57,104,0}}, +/* 32381 */ {(12<<2)|2,{57,104,0}}, +/* 32382 */ {(12<<2)|2,{57,104,0}}, +/* 32383 */ {(12<<2)|2,{57,104,0}}, +/* 32384 */ {(12<<2)|2,{57,108,0}}, +/* 32385 */ {(12<<2)|2,{57,108,0}}, +/* 32386 */ {(12<<2)|2,{57,108,0}}, +/* 32387 */ {(12<<2)|2,{57,108,0}}, +/* 32388 */ {(12<<2)|2,{57,108,0}}, +/* 32389 */ {(12<<2)|2,{57,108,0}}, +/* 32390 */ {(12<<2)|2,{57,108,0}}, +/* 32391 */ {(12<<2)|2,{57,108,0}}, +/* 32392 */ {(12<<2)|2,{57,108,0}}, +/* 32393 */ {(12<<2)|2,{57,108,0}}, +/* 32394 */ {(12<<2)|2,{57,108,0}}, +/* 32395 */ {(12<<2)|2,{57,108,0}}, +/* 32396 */ {(12<<2)|2,{57,108,0}}, +/* 32397 */ {(12<<2)|2,{57,108,0}}, +/* 32398 */ {(12<<2)|2,{57,108,0}}, +/* 32399 */ {(12<<2)|2,{57,108,0}}, +/* 32400 */ {(12<<2)|2,{57,109,0}}, +/* 32401 */ {(12<<2)|2,{57,109,0}}, +/* 32402 */ {(12<<2)|2,{57,109,0}}, +/* 32403 */ {(12<<2)|2,{57,109,0}}, +/* 32404 */ {(12<<2)|2,{57,109,0}}, +/* 32405 */ {(12<<2)|2,{57,109,0}}, +/* 32406 */ {(12<<2)|2,{57,109,0}}, +/* 32407 */ {(12<<2)|2,{57,109,0}}, +/* 32408 */ {(12<<2)|2,{57,109,0}}, +/* 32409 */ {(12<<2)|2,{57,109,0}}, +/* 32410 */ {(12<<2)|2,{57,109,0}}, +/* 32411 */ {(12<<2)|2,{57,109,0}}, +/* 32412 */ {(12<<2)|2,{57,109,0}}, +/* 32413 */ {(12<<2)|2,{57,109,0}}, +/* 32414 */ {(12<<2)|2,{57,109,0}}, +/* 32415 */ {(12<<2)|2,{57,109,0}}, +/* 32416 */ {(12<<2)|2,{57,110,0}}, +/* 32417 */ {(12<<2)|2,{57,110,0}}, +/* 32418 */ {(12<<2)|2,{57,110,0}}, +/* 32419 */ {(12<<2)|2,{57,110,0}}, +/* 32420 */ {(12<<2)|2,{57,110,0}}, +/* 32421 */ {(12<<2)|2,{57,110,0}}, +/* 32422 */ {(12<<2)|2,{57,110,0}}, +/* 32423 */ {(12<<2)|2,{57,110,0}}, +/* 32424 */ {(12<<2)|2,{57,110,0}}, +/* 32425 */ {(12<<2)|2,{57,110,0}}, +/* 32426 */ {(12<<2)|2,{57,110,0}}, +/* 32427 */ {(12<<2)|2,{57,110,0}}, +/* 32428 */ {(12<<2)|2,{57,110,0}}, +/* 32429 */ {(12<<2)|2,{57,110,0}}, +/* 32430 */ {(12<<2)|2,{57,110,0}}, +/* 32431 */ {(12<<2)|2,{57,110,0}}, +/* 32432 */ {(12<<2)|2,{57,112,0}}, +/* 32433 */ {(12<<2)|2,{57,112,0}}, +/* 32434 */ {(12<<2)|2,{57,112,0}}, +/* 32435 */ {(12<<2)|2,{57,112,0}}, +/* 32436 */ {(12<<2)|2,{57,112,0}}, +/* 32437 */ {(12<<2)|2,{57,112,0}}, +/* 32438 */ {(12<<2)|2,{57,112,0}}, +/* 32439 */ {(12<<2)|2,{57,112,0}}, +/* 32440 */ {(12<<2)|2,{57,112,0}}, +/* 32441 */ {(12<<2)|2,{57,112,0}}, +/* 32442 */ {(12<<2)|2,{57,112,0}}, +/* 32443 */ {(12<<2)|2,{57,112,0}}, +/* 32444 */ {(12<<2)|2,{57,112,0}}, +/* 32445 */ {(12<<2)|2,{57,112,0}}, +/* 32446 */ {(12<<2)|2,{57,112,0}}, +/* 32447 */ {(12<<2)|2,{57,112,0}}, +/* 32448 */ {(12<<2)|2,{57,114,0}}, +/* 32449 */ {(12<<2)|2,{57,114,0}}, +/* 32450 */ {(12<<2)|2,{57,114,0}}, +/* 32451 */ {(12<<2)|2,{57,114,0}}, +/* 32452 */ {(12<<2)|2,{57,114,0}}, +/* 32453 */ {(12<<2)|2,{57,114,0}}, +/* 32454 */ {(12<<2)|2,{57,114,0}}, +/* 32455 */ {(12<<2)|2,{57,114,0}}, +/* 32456 */ {(12<<2)|2,{57,114,0}}, +/* 32457 */ {(12<<2)|2,{57,114,0}}, +/* 32458 */ {(12<<2)|2,{57,114,0}}, +/* 32459 */ {(12<<2)|2,{57,114,0}}, +/* 32460 */ {(12<<2)|2,{57,114,0}}, +/* 32461 */ {(12<<2)|2,{57,114,0}}, +/* 32462 */ {(12<<2)|2,{57,114,0}}, +/* 32463 */ {(12<<2)|2,{57,114,0}}, +/* 32464 */ {(12<<2)|2,{57,117,0}}, +/* 32465 */ {(12<<2)|2,{57,117,0}}, +/* 32466 */ {(12<<2)|2,{57,117,0}}, +/* 32467 */ {(12<<2)|2,{57,117,0}}, +/* 32468 */ {(12<<2)|2,{57,117,0}}, +/* 32469 */ {(12<<2)|2,{57,117,0}}, +/* 32470 */ {(12<<2)|2,{57,117,0}}, +/* 32471 */ {(12<<2)|2,{57,117,0}}, +/* 32472 */ {(12<<2)|2,{57,117,0}}, +/* 32473 */ {(12<<2)|2,{57,117,0}}, +/* 32474 */ {(12<<2)|2,{57,117,0}}, +/* 32475 */ {(12<<2)|2,{57,117,0}}, +/* 32476 */ {(12<<2)|2,{57,117,0}}, +/* 32477 */ {(12<<2)|2,{57,117,0}}, +/* 32478 */ {(12<<2)|2,{57,117,0}}, +/* 32479 */ {(12<<2)|2,{57,117,0}}, +/* 32480 */ {(13<<2)|2,{57,58,0}}, +/* 32481 */ {(13<<2)|2,{57,58,0}}, +/* 32482 */ {(13<<2)|2,{57,58,0}}, +/* 32483 */ {(13<<2)|2,{57,58,0}}, +/* 32484 */ {(13<<2)|2,{57,58,0}}, +/* 32485 */ {(13<<2)|2,{57,58,0}}, +/* 32486 */ {(13<<2)|2,{57,58,0}}, +/* 32487 */ {(13<<2)|2,{57,58,0}}, +/* 32488 */ {(13<<2)|2,{57,66,0}}, +/* 32489 */ {(13<<2)|2,{57,66,0}}, +/* 32490 */ {(13<<2)|2,{57,66,0}}, +/* 32491 */ {(13<<2)|2,{57,66,0}}, +/* 32492 */ {(13<<2)|2,{57,66,0}}, +/* 32493 */ {(13<<2)|2,{57,66,0}}, +/* 32494 */ {(13<<2)|2,{57,66,0}}, +/* 32495 */ {(13<<2)|2,{57,66,0}}, +/* 32496 */ {(13<<2)|2,{57,67,0}}, +/* 32497 */ {(13<<2)|2,{57,67,0}}, +/* 32498 */ {(13<<2)|2,{57,67,0}}, +/* 32499 */ {(13<<2)|2,{57,67,0}}, +/* 32500 */ {(13<<2)|2,{57,67,0}}, +/* 32501 */ {(13<<2)|2,{57,67,0}}, +/* 32502 */ {(13<<2)|2,{57,67,0}}, +/* 32503 */ {(13<<2)|2,{57,67,0}}, +/* 32504 */ {(13<<2)|2,{57,68,0}}, +/* 32505 */ {(13<<2)|2,{57,68,0}}, +/* 32506 */ {(13<<2)|2,{57,68,0}}, +/* 32507 */ {(13<<2)|2,{57,68,0}}, +/* 32508 */ {(13<<2)|2,{57,68,0}}, +/* 32509 */ {(13<<2)|2,{57,68,0}}, +/* 32510 */ {(13<<2)|2,{57,68,0}}, +/* 32511 */ {(13<<2)|2,{57,68,0}}, +/* 32512 */ {(13<<2)|2,{57,69,0}}, +/* 32513 */ {(13<<2)|2,{57,69,0}}, +/* 32514 */ {(13<<2)|2,{57,69,0}}, +/* 32515 */ {(13<<2)|2,{57,69,0}}, +/* 32516 */ {(13<<2)|2,{57,69,0}}, +/* 32517 */ {(13<<2)|2,{57,69,0}}, +/* 32518 */ {(13<<2)|2,{57,69,0}}, +/* 32519 */ {(13<<2)|2,{57,69,0}}, +/* 32520 */ {(13<<2)|2,{57,70,0}}, +/* 32521 */ {(13<<2)|2,{57,70,0}}, +/* 32522 */ {(13<<2)|2,{57,70,0}}, +/* 32523 */ {(13<<2)|2,{57,70,0}}, +/* 32524 */ {(13<<2)|2,{57,70,0}}, +/* 32525 */ {(13<<2)|2,{57,70,0}}, +/* 32526 */ {(13<<2)|2,{57,70,0}}, +/* 32527 */ {(13<<2)|2,{57,70,0}}, +/* 32528 */ {(13<<2)|2,{57,71,0}}, +/* 32529 */ {(13<<2)|2,{57,71,0}}, +/* 32530 */ {(13<<2)|2,{57,71,0}}, +/* 32531 */ {(13<<2)|2,{57,71,0}}, +/* 32532 */ {(13<<2)|2,{57,71,0}}, +/* 32533 */ {(13<<2)|2,{57,71,0}}, +/* 32534 */ {(13<<2)|2,{57,71,0}}, +/* 32535 */ {(13<<2)|2,{57,71,0}}, +/* 32536 */ {(13<<2)|2,{57,72,0}}, +/* 32537 */ {(13<<2)|2,{57,72,0}}, +/* 32538 */ {(13<<2)|2,{57,72,0}}, +/* 32539 */ {(13<<2)|2,{57,72,0}}, +/* 32540 */ {(13<<2)|2,{57,72,0}}, +/* 32541 */ {(13<<2)|2,{57,72,0}}, +/* 32542 */ {(13<<2)|2,{57,72,0}}, +/* 32543 */ {(13<<2)|2,{57,72,0}}, +/* 32544 */ {(13<<2)|2,{57,73,0}}, +/* 32545 */ {(13<<2)|2,{57,73,0}}, +/* 32546 */ {(13<<2)|2,{57,73,0}}, +/* 32547 */ {(13<<2)|2,{57,73,0}}, +/* 32548 */ {(13<<2)|2,{57,73,0}}, +/* 32549 */ {(13<<2)|2,{57,73,0}}, +/* 32550 */ {(13<<2)|2,{57,73,0}}, +/* 32551 */ {(13<<2)|2,{57,73,0}}, +/* 32552 */ {(13<<2)|2,{57,74,0}}, +/* 32553 */ {(13<<2)|2,{57,74,0}}, +/* 32554 */ {(13<<2)|2,{57,74,0}}, +/* 32555 */ {(13<<2)|2,{57,74,0}}, +/* 32556 */ {(13<<2)|2,{57,74,0}}, +/* 32557 */ {(13<<2)|2,{57,74,0}}, +/* 32558 */ {(13<<2)|2,{57,74,0}}, +/* 32559 */ {(13<<2)|2,{57,74,0}}, +/* 32560 */ {(13<<2)|2,{57,75,0}}, +/* 32561 */ {(13<<2)|2,{57,75,0}}, +/* 32562 */ {(13<<2)|2,{57,75,0}}, +/* 32563 */ {(13<<2)|2,{57,75,0}}, +/* 32564 */ {(13<<2)|2,{57,75,0}}, +/* 32565 */ {(13<<2)|2,{57,75,0}}, +/* 32566 */ {(13<<2)|2,{57,75,0}}, +/* 32567 */ {(13<<2)|2,{57,75,0}}, +/* 32568 */ {(13<<2)|2,{57,76,0}}, +/* 32569 */ {(13<<2)|2,{57,76,0}}, +/* 32570 */ {(13<<2)|2,{57,76,0}}, +/* 32571 */ {(13<<2)|2,{57,76,0}}, +/* 32572 */ {(13<<2)|2,{57,76,0}}, +/* 32573 */ {(13<<2)|2,{57,76,0}}, +/* 32574 */ {(13<<2)|2,{57,76,0}}, +/* 32575 */ {(13<<2)|2,{57,76,0}}, +/* 32576 */ {(13<<2)|2,{57,77,0}}, +/* 32577 */ {(13<<2)|2,{57,77,0}}, +/* 32578 */ {(13<<2)|2,{57,77,0}}, +/* 32579 */ {(13<<2)|2,{57,77,0}}, +/* 32580 */ {(13<<2)|2,{57,77,0}}, +/* 32581 */ {(13<<2)|2,{57,77,0}}, +/* 32582 */ {(13<<2)|2,{57,77,0}}, +/* 32583 */ {(13<<2)|2,{57,77,0}}, +/* 32584 */ {(13<<2)|2,{57,78,0}}, +/* 32585 */ {(13<<2)|2,{57,78,0}}, +/* 32586 */ {(13<<2)|2,{57,78,0}}, +/* 32587 */ {(13<<2)|2,{57,78,0}}, +/* 32588 */ {(13<<2)|2,{57,78,0}}, +/* 32589 */ {(13<<2)|2,{57,78,0}}, +/* 32590 */ {(13<<2)|2,{57,78,0}}, +/* 32591 */ {(13<<2)|2,{57,78,0}}, +/* 32592 */ {(13<<2)|2,{57,79,0}}, +/* 32593 */ {(13<<2)|2,{57,79,0}}, +/* 32594 */ {(13<<2)|2,{57,79,0}}, +/* 32595 */ {(13<<2)|2,{57,79,0}}, +/* 32596 */ {(13<<2)|2,{57,79,0}}, +/* 32597 */ {(13<<2)|2,{57,79,0}}, +/* 32598 */ {(13<<2)|2,{57,79,0}}, +/* 32599 */ {(13<<2)|2,{57,79,0}}, +/* 32600 */ {(13<<2)|2,{57,80,0}}, +/* 32601 */ {(13<<2)|2,{57,80,0}}, +/* 32602 */ {(13<<2)|2,{57,80,0}}, +/* 32603 */ {(13<<2)|2,{57,80,0}}, +/* 32604 */ {(13<<2)|2,{57,80,0}}, +/* 32605 */ {(13<<2)|2,{57,80,0}}, +/* 32606 */ {(13<<2)|2,{57,80,0}}, +/* 32607 */ {(13<<2)|2,{57,80,0}}, +/* 32608 */ {(13<<2)|2,{57,81,0}}, +/* 32609 */ {(13<<2)|2,{57,81,0}}, +/* 32610 */ {(13<<2)|2,{57,81,0}}, +/* 32611 */ {(13<<2)|2,{57,81,0}}, +/* 32612 */ {(13<<2)|2,{57,81,0}}, +/* 32613 */ {(13<<2)|2,{57,81,0}}, +/* 32614 */ {(13<<2)|2,{57,81,0}}, +/* 32615 */ {(13<<2)|2,{57,81,0}}, +/* 32616 */ {(13<<2)|2,{57,82,0}}, +/* 32617 */ {(13<<2)|2,{57,82,0}}, +/* 32618 */ {(13<<2)|2,{57,82,0}}, +/* 32619 */ {(13<<2)|2,{57,82,0}}, +/* 32620 */ {(13<<2)|2,{57,82,0}}, +/* 32621 */ {(13<<2)|2,{57,82,0}}, +/* 32622 */ {(13<<2)|2,{57,82,0}}, +/* 32623 */ {(13<<2)|2,{57,82,0}}, +/* 32624 */ {(13<<2)|2,{57,83,0}}, +/* 32625 */ {(13<<2)|2,{57,83,0}}, +/* 32626 */ {(13<<2)|2,{57,83,0}}, +/* 32627 */ {(13<<2)|2,{57,83,0}}, +/* 32628 */ {(13<<2)|2,{57,83,0}}, +/* 32629 */ {(13<<2)|2,{57,83,0}}, +/* 32630 */ {(13<<2)|2,{57,83,0}}, +/* 32631 */ {(13<<2)|2,{57,83,0}}, +/* 32632 */ {(13<<2)|2,{57,84,0}}, +/* 32633 */ {(13<<2)|2,{57,84,0}}, +/* 32634 */ {(13<<2)|2,{57,84,0}}, +/* 32635 */ {(13<<2)|2,{57,84,0}}, +/* 32636 */ {(13<<2)|2,{57,84,0}}, +/* 32637 */ {(13<<2)|2,{57,84,0}}, +/* 32638 */ {(13<<2)|2,{57,84,0}}, +/* 32639 */ {(13<<2)|2,{57,84,0}}, +/* 32640 */ {(13<<2)|2,{57,85,0}}, +/* 32641 */ {(13<<2)|2,{57,85,0}}, +/* 32642 */ {(13<<2)|2,{57,85,0}}, +/* 32643 */ {(13<<2)|2,{57,85,0}}, +/* 32644 */ {(13<<2)|2,{57,85,0}}, +/* 32645 */ {(13<<2)|2,{57,85,0}}, +/* 32646 */ {(13<<2)|2,{57,85,0}}, +/* 32647 */ {(13<<2)|2,{57,85,0}}, +/* 32648 */ {(13<<2)|2,{57,86,0}}, +/* 32649 */ {(13<<2)|2,{57,86,0}}, +/* 32650 */ {(13<<2)|2,{57,86,0}}, +/* 32651 */ {(13<<2)|2,{57,86,0}}, +/* 32652 */ {(13<<2)|2,{57,86,0}}, +/* 32653 */ {(13<<2)|2,{57,86,0}}, +/* 32654 */ {(13<<2)|2,{57,86,0}}, +/* 32655 */ {(13<<2)|2,{57,86,0}}, +/* 32656 */ {(13<<2)|2,{57,87,0}}, +/* 32657 */ {(13<<2)|2,{57,87,0}}, +/* 32658 */ {(13<<2)|2,{57,87,0}}, +/* 32659 */ {(13<<2)|2,{57,87,0}}, +/* 32660 */ {(13<<2)|2,{57,87,0}}, +/* 32661 */ {(13<<2)|2,{57,87,0}}, +/* 32662 */ {(13<<2)|2,{57,87,0}}, +/* 32663 */ {(13<<2)|2,{57,87,0}}, +/* 32664 */ {(13<<2)|2,{57,89,0}}, +/* 32665 */ {(13<<2)|2,{57,89,0}}, +/* 32666 */ {(13<<2)|2,{57,89,0}}, +/* 32667 */ {(13<<2)|2,{57,89,0}}, +/* 32668 */ {(13<<2)|2,{57,89,0}}, +/* 32669 */ {(13<<2)|2,{57,89,0}}, +/* 32670 */ {(13<<2)|2,{57,89,0}}, +/* 32671 */ {(13<<2)|2,{57,89,0}}, +/* 32672 */ {(13<<2)|2,{57,106,0}}, +/* 32673 */ {(13<<2)|2,{57,106,0}}, +/* 32674 */ {(13<<2)|2,{57,106,0}}, +/* 32675 */ {(13<<2)|2,{57,106,0}}, +/* 32676 */ {(13<<2)|2,{57,106,0}}, +/* 32677 */ {(13<<2)|2,{57,106,0}}, +/* 32678 */ {(13<<2)|2,{57,106,0}}, +/* 32679 */ {(13<<2)|2,{57,106,0}}, +/* 32680 */ {(13<<2)|2,{57,107,0}}, +/* 32681 */ {(13<<2)|2,{57,107,0}}, +/* 32682 */ {(13<<2)|2,{57,107,0}}, +/* 32683 */ {(13<<2)|2,{57,107,0}}, +/* 32684 */ {(13<<2)|2,{57,107,0}}, +/* 32685 */ {(13<<2)|2,{57,107,0}}, +/* 32686 */ {(13<<2)|2,{57,107,0}}, +/* 32687 */ {(13<<2)|2,{57,107,0}}, +/* 32688 */ {(13<<2)|2,{57,113,0}}, +/* 32689 */ {(13<<2)|2,{57,113,0}}, +/* 32690 */ {(13<<2)|2,{57,113,0}}, +/* 32691 */ {(13<<2)|2,{57,113,0}}, +/* 32692 */ {(13<<2)|2,{57,113,0}}, +/* 32693 */ {(13<<2)|2,{57,113,0}}, +/* 32694 */ {(13<<2)|2,{57,113,0}}, +/* 32695 */ {(13<<2)|2,{57,113,0}}, +/* 32696 */ {(13<<2)|2,{57,118,0}}, +/* 32697 */ {(13<<2)|2,{57,118,0}}, +/* 32698 */ {(13<<2)|2,{57,118,0}}, +/* 32699 */ {(13<<2)|2,{57,118,0}}, +/* 32700 */ {(13<<2)|2,{57,118,0}}, +/* 32701 */ {(13<<2)|2,{57,118,0}}, +/* 32702 */ {(13<<2)|2,{57,118,0}}, +/* 32703 */ {(13<<2)|2,{57,118,0}}, +/* 32704 */ {(13<<2)|2,{57,119,0}}, +/* 32705 */ {(13<<2)|2,{57,119,0}}, +/* 32706 */ {(13<<2)|2,{57,119,0}}, +/* 32707 */ {(13<<2)|2,{57,119,0}}, +/* 32708 */ {(13<<2)|2,{57,119,0}}, +/* 32709 */ {(13<<2)|2,{57,119,0}}, +/* 32710 */ {(13<<2)|2,{57,119,0}}, +/* 32711 */ {(13<<2)|2,{57,119,0}}, +/* 32712 */ {(13<<2)|2,{57,120,0}}, +/* 32713 */ {(13<<2)|2,{57,120,0}}, +/* 32714 */ {(13<<2)|2,{57,120,0}}, +/* 32715 */ {(13<<2)|2,{57,120,0}}, +/* 32716 */ {(13<<2)|2,{57,120,0}}, +/* 32717 */ {(13<<2)|2,{57,120,0}}, +/* 32718 */ {(13<<2)|2,{57,120,0}}, +/* 32719 */ {(13<<2)|2,{57,120,0}}, +/* 32720 */ {(13<<2)|2,{57,121,0}}, +/* 32721 */ {(13<<2)|2,{57,121,0}}, +/* 32722 */ {(13<<2)|2,{57,121,0}}, +/* 32723 */ {(13<<2)|2,{57,121,0}}, +/* 32724 */ {(13<<2)|2,{57,121,0}}, +/* 32725 */ {(13<<2)|2,{57,121,0}}, +/* 32726 */ {(13<<2)|2,{57,121,0}}, +/* 32727 */ {(13<<2)|2,{57,121,0}}, +/* 32728 */ {(13<<2)|2,{57,122,0}}, +/* 32729 */ {(13<<2)|2,{57,122,0}}, +/* 32730 */ {(13<<2)|2,{57,122,0}}, +/* 32731 */ {(13<<2)|2,{57,122,0}}, +/* 32732 */ {(13<<2)|2,{57,122,0}}, +/* 32733 */ {(13<<2)|2,{57,122,0}}, +/* 32734 */ {(13<<2)|2,{57,122,0}}, +/* 32735 */ {(13<<2)|2,{57,122,0}}, +/* 32736 */ {(14<<2)|2,{57,38,0}}, +/* 32737 */ {(14<<2)|2,{57,38,0}}, +/* 32738 */ {(14<<2)|2,{57,38,0}}, +/* 32739 */ {(14<<2)|2,{57,38,0}}, +/* 32740 */ {(14<<2)|2,{57,42,0}}, +/* 32741 */ {(14<<2)|2,{57,42,0}}, +/* 32742 */ {(14<<2)|2,{57,42,0}}, +/* 32743 */ {(14<<2)|2,{57,42,0}}, +/* 32744 */ {(14<<2)|2,{57,44,0}}, +/* 32745 */ {(14<<2)|2,{57,44,0}}, +/* 32746 */ {(14<<2)|2,{57,44,0}}, +/* 32747 */ {(14<<2)|2,{57,44,0}}, +/* 32748 */ {(14<<2)|2,{57,59,0}}, +/* 32749 */ {(14<<2)|2,{57,59,0}}, +/* 32750 */ {(14<<2)|2,{57,59,0}}, +/* 32751 */ {(14<<2)|2,{57,59,0}}, +/* 32752 */ {(14<<2)|2,{57,88,0}}, +/* 32753 */ {(14<<2)|2,{57,88,0}}, +/* 32754 */ {(14<<2)|2,{57,88,0}}, +/* 32755 */ {(14<<2)|2,{57,88,0}}, +/* 32756 */ {(14<<2)|2,{57,90,0}}, +/* 32757 */ {(14<<2)|2,{57,90,0}}, +/* 32758 */ {(14<<2)|2,{57,90,0}}, +/* 32759 */ {(14<<2)|2,{57,90,0}}, +/* 32760 */ {(16<<2)|2,{57,33,0}}, +/* 32761 */ {(16<<2)|2,{57,34,0}}, +/* 32762 */ {(16<<2)|2,{57,40,0}}, +/* 32763 */ {(16<<2)|2,{57,41,0}}, +/* 32764 */ {(16<<2)|2,{57,63,0}}, +/* 32765 */ {(6<<2)|1,{57,0,0}}, +/* 32766 */ {(6<<2)|1,{57,0,0}}, +/* 32767 */ {(6<<2)|1,{57,0,0}}, +/* 32768 */ {(16<<2)|3,{61,48,48}}, +/* 32769 */ {(16<<2)|3,{61,48,49}}, +/* 32770 */ {(16<<2)|3,{61,48,50}}, +/* 32771 */ {(16<<2)|3,{61,48,97}}, +/* 32772 */ {(16<<2)|3,{61,48,99}}, +/* 32773 */ {(16<<2)|3,{61,48,101}}, +/* 32774 */ {(16<<2)|3,{61,48,105}}, +/* 32775 */ {(16<<2)|3,{61,48,111}}, +/* 32776 */ {(16<<2)|3,{61,48,115}}, +/* 32777 */ {(16<<2)|3,{61,48,116}}, +/* 32778 */ {(11<<2)|2,{61,48,0}}, +/* 32779 */ {(11<<2)|2,{61,48,0}}, +/* 32780 */ {(11<<2)|2,{61,48,0}}, +/* 32781 */ {(11<<2)|2,{61,48,0}}, +/* 32782 */ {(11<<2)|2,{61,48,0}}, +/* 32783 */ {(11<<2)|2,{61,48,0}}, +/* 32784 */ {(11<<2)|2,{61,48,0}}, +/* 32785 */ {(11<<2)|2,{61,48,0}}, +/* 32786 */ {(11<<2)|2,{61,48,0}}, +/* 32787 */ {(11<<2)|2,{61,48,0}}, +/* 32788 */ {(11<<2)|2,{61,48,0}}, +/* 32789 */ {(11<<2)|2,{61,48,0}}, +/* 32790 */ {(11<<2)|2,{61,48,0}}, +/* 32791 */ {(11<<2)|2,{61,48,0}}, +/* 32792 */ {(11<<2)|2,{61,48,0}}, +/* 32793 */ {(11<<2)|2,{61,48,0}}, +/* 32794 */ {(11<<2)|2,{61,48,0}}, +/* 32795 */ {(11<<2)|2,{61,48,0}}, +/* 32796 */ {(11<<2)|2,{61,48,0}}, +/* 32797 */ {(11<<2)|2,{61,48,0}}, +/* 32798 */ {(11<<2)|2,{61,48,0}}, +/* 32799 */ {(11<<2)|2,{61,48,0}}, +/* 32800 */ {(16<<2)|3,{61,49,48}}, +/* 32801 */ {(16<<2)|3,{61,49,49}}, +/* 32802 */ {(16<<2)|3,{61,49,50}}, +/* 32803 */ {(16<<2)|3,{61,49,97}}, +/* 32804 */ {(16<<2)|3,{61,49,99}}, +/* 32805 */ {(16<<2)|3,{61,49,101}}, +/* 32806 */ {(16<<2)|3,{61,49,105}}, +/* 32807 */ {(16<<2)|3,{61,49,111}}, +/* 32808 */ {(16<<2)|3,{61,49,115}}, +/* 32809 */ {(16<<2)|3,{61,49,116}}, +/* 32810 */ {(11<<2)|2,{61,49,0}}, +/* 32811 */ {(11<<2)|2,{61,49,0}}, +/* 32812 */ {(11<<2)|2,{61,49,0}}, +/* 32813 */ {(11<<2)|2,{61,49,0}}, +/* 32814 */ {(11<<2)|2,{61,49,0}}, +/* 32815 */ {(11<<2)|2,{61,49,0}}, +/* 32816 */ {(11<<2)|2,{61,49,0}}, +/* 32817 */ {(11<<2)|2,{61,49,0}}, +/* 32818 */ {(11<<2)|2,{61,49,0}}, +/* 32819 */ {(11<<2)|2,{61,49,0}}, +/* 32820 */ {(11<<2)|2,{61,49,0}}, +/* 32821 */ {(11<<2)|2,{61,49,0}}, +/* 32822 */ {(11<<2)|2,{61,49,0}}, +/* 32823 */ {(11<<2)|2,{61,49,0}}, +/* 32824 */ {(11<<2)|2,{61,49,0}}, +/* 32825 */ {(11<<2)|2,{61,49,0}}, +/* 32826 */ {(11<<2)|2,{61,49,0}}, +/* 32827 */ {(11<<2)|2,{61,49,0}}, +/* 32828 */ {(11<<2)|2,{61,49,0}}, +/* 32829 */ {(11<<2)|2,{61,49,0}}, +/* 32830 */ {(11<<2)|2,{61,49,0}}, +/* 32831 */ {(11<<2)|2,{61,49,0}}, +/* 32832 */ {(16<<2)|3,{61,50,48}}, +/* 32833 */ {(16<<2)|3,{61,50,49}}, +/* 32834 */ {(16<<2)|3,{61,50,50}}, +/* 32835 */ {(16<<2)|3,{61,50,97}}, +/* 32836 */ {(16<<2)|3,{61,50,99}}, +/* 32837 */ {(16<<2)|3,{61,50,101}}, +/* 32838 */ {(16<<2)|3,{61,50,105}}, +/* 32839 */ {(16<<2)|3,{61,50,111}}, +/* 32840 */ {(16<<2)|3,{61,50,115}}, +/* 32841 */ {(16<<2)|3,{61,50,116}}, +/* 32842 */ {(11<<2)|2,{61,50,0}}, +/* 32843 */ {(11<<2)|2,{61,50,0}}, +/* 32844 */ {(11<<2)|2,{61,50,0}}, +/* 32845 */ {(11<<2)|2,{61,50,0}}, +/* 32846 */ {(11<<2)|2,{61,50,0}}, +/* 32847 */ {(11<<2)|2,{61,50,0}}, +/* 32848 */ {(11<<2)|2,{61,50,0}}, +/* 32849 */ {(11<<2)|2,{61,50,0}}, +/* 32850 */ {(11<<2)|2,{61,50,0}}, +/* 32851 */ {(11<<2)|2,{61,50,0}}, +/* 32852 */ {(11<<2)|2,{61,50,0}}, +/* 32853 */ {(11<<2)|2,{61,50,0}}, +/* 32854 */ {(11<<2)|2,{61,50,0}}, +/* 32855 */ {(11<<2)|2,{61,50,0}}, +/* 32856 */ {(11<<2)|2,{61,50,0}}, +/* 32857 */ {(11<<2)|2,{61,50,0}}, +/* 32858 */ {(11<<2)|2,{61,50,0}}, +/* 32859 */ {(11<<2)|2,{61,50,0}}, +/* 32860 */ {(11<<2)|2,{61,50,0}}, +/* 32861 */ {(11<<2)|2,{61,50,0}}, +/* 32862 */ {(11<<2)|2,{61,50,0}}, +/* 32863 */ {(11<<2)|2,{61,50,0}}, +/* 32864 */ {(16<<2)|3,{61,97,48}}, +/* 32865 */ {(16<<2)|3,{61,97,49}}, +/* 32866 */ {(16<<2)|3,{61,97,50}}, +/* 32867 */ {(16<<2)|3,{61,97,97}}, +/* 32868 */ {(16<<2)|3,{61,97,99}}, +/* 32869 */ {(16<<2)|3,{61,97,101}}, +/* 32870 */ {(16<<2)|3,{61,97,105}}, +/* 32871 */ {(16<<2)|3,{61,97,111}}, +/* 32872 */ {(16<<2)|3,{61,97,115}}, +/* 32873 */ {(16<<2)|3,{61,97,116}}, +/* 32874 */ {(11<<2)|2,{61,97,0}}, +/* 32875 */ {(11<<2)|2,{61,97,0}}, +/* 32876 */ {(11<<2)|2,{61,97,0}}, +/* 32877 */ {(11<<2)|2,{61,97,0}}, +/* 32878 */ {(11<<2)|2,{61,97,0}}, +/* 32879 */ {(11<<2)|2,{61,97,0}}, +/* 32880 */ {(11<<2)|2,{61,97,0}}, +/* 32881 */ {(11<<2)|2,{61,97,0}}, +/* 32882 */ {(11<<2)|2,{61,97,0}}, +/* 32883 */ {(11<<2)|2,{61,97,0}}, +/* 32884 */ {(11<<2)|2,{61,97,0}}, +/* 32885 */ {(11<<2)|2,{61,97,0}}, +/* 32886 */ {(11<<2)|2,{61,97,0}}, +/* 32887 */ {(11<<2)|2,{61,97,0}}, +/* 32888 */ {(11<<2)|2,{61,97,0}}, +/* 32889 */ {(11<<2)|2,{61,97,0}}, +/* 32890 */ {(11<<2)|2,{61,97,0}}, +/* 32891 */ {(11<<2)|2,{61,97,0}}, +/* 32892 */ {(11<<2)|2,{61,97,0}}, +/* 32893 */ {(11<<2)|2,{61,97,0}}, +/* 32894 */ {(11<<2)|2,{61,97,0}}, +/* 32895 */ {(11<<2)|2,{61,97,0}}, +/* 32896 */ {(16<<2)|3,{61,99,48}}, +/* 32897 */ {(16<<2)|3,{61,99,49}}, +/* 32898 */ {(16<<2)|3,{61,99,50}}, +/* 32899 */ {(16<<2)|3,{61,99,97}}, +/* 32900 */ {(16<<2)|3,{61,99,99}}, +/* 32901 */ {(16<<2)|3,{61,99,101}}, +/* 32902 */ {(16<<2)|3,{61,99,105}}, +/* 32903 */ {(16<<2)|3,{61,99,111}}, +/* 32904 */ {(16<<2)|3,{61,99,115}}, +/* 32905 */ {(16<<2)|3,{61,99,116}}, +/* 32906 */ {(11<<2)|2,{61,99,0}}, +/* 32907 */ {(11<<2)|2,{61,99,0}}, +/* 32908 */ {(11<<2)|2,{61,99,0}}, +/* 32909 */ {(11<<2)|2,{61,99,0}}, +/* 32910 */ {(11<<2)|2,{61,99,0}}, +/* 32911 */ {(11<<2)|2,{61,99,0}}, +/* 32912 */ {(11<<2)|2,{61,99,0}}, +/* 32913 */ {(11<<2)|2,{61,99,0}}, +/* 32914 */ {(11<<2)|2,{61,99,0}}, +/* 32915 */ {(11<<2)|2,{61,99,0}}, +/* 32916 */ {(11<<2)|2,{61,99,0}}, +/* 32917 */ {(11<<2)|2,{61,99,0}}, +/* 32918 */ {(11<<2)|2,{61,99,0}}, +/* 32919 */ {(11<<2)|2,{61,99,0}}, +/* 32920 */ {(11<<2)|2,{61,99,0}}, +/* 32921 */ {(11<<2)|2,{61,99,0}}, +/* 32922 */ {(11<<2)|2,{61,99,0}}, +/* 32923 */ {(11<<2)|2,{61,99,0}}, +/* 32924 */ {(11<<2)|2,{61,99,0}}, +/* 32925 */ {(11<<2)|2,{61,99,0}}, +/* 32926 */ {(11<<2)|2,{61,99,0}}, +/* 32927 */ {(11<<2)|2,{61,99,0}}, +/* 32928 */ {(16<<2)|3,{61,101,48}}, +/* 32929 */ {(16<<2)|3,{61,101,49}}, +/* 32930 */ {(16<<2)|3,{61,101,50}}, +/* 32931 */ {(16<<2)|3,{61,101,97}}, +/* 32932 */ {(16<<2)|3,{61,101,99}}, +/* 32933 */ {(16<<2)|3,{61,101,101}}, +/* 32934 */ {(16<<2)|3,{61,101,105}}, +/* 32935 */ {(16<<2)|3,{61,101,111}}, +/* 32936 */ {(16<<2)|3,{61,101,115}}, +/* 32937 */ {(16<<2)|3,{61,101,116}}, +/* 32938 */ {(11<<2)|2,{61,101,0}}, +/* 32939 */ {(11<<2)|2,{61,101,0}}, +/* 32940 */ {(11<<2)|2,{61,101,0}}, +/* 32941 */ {(11<<2)|2,{61,101,0}}, +/* 32942 */ {(11<<2)|2,{61,101,0}}, +/* 32943 */ {(11<<2)|2,{61,101,0}}, +/* 32944 */ {(11<<2)|2,{61,101,0}}, +/* 32945 */ {(11<<2)|2,{61,101,0}}, +/* 32946 */ {(11<<2)|2,{61,101,0}}, +/* 32947 */ {(11<<2)|2,{61,101,0}}, +/* 32948 */ {(11<<2)|2,{61,101,0}}, +/* 32949 */ {(11<<2)|2,{61,101,0}}, +/* 32950 */ {(11<<2)|2,{61,101,0}}, +/* 32951 */ {(11<<2)|2,{61,101,0}}, +/* 32952 */ {(11<<2)|2,{61,101,0}}, +/* 32953 */ {(11<<2)|2,{61,101,0}}, +/* 32954 */ {(11<<2)|2,{61,101,0}}, +/* 32955 */ {(11<<2)|2,{61,101,0}}, +/* 32956 */ {(11<<2)|2,{61,101,0}}, +/* 32957 */ {(11<<2)|2,{61,101,0}}, +/* 32958 */ {(11<<2)|2,{61,101,0}}, +/* 32959 */ {(11<<2)|2,{61,101,0}}, +/* 32960 */ {(16<<2)|3,{61,105,48}}, +/* 32961 */ {(16<<2)|3,{61,105,49}}, +/* 32962 */ {(16<<2)|3,{61,105,50}}, +/* 32963 */ {(16<<2)|3,{61,105,97}}, +/* 32964 */ {(16<<2)|3,{61,105,99}}, +/* 32965 */ {(16<<2)|3,{61,105,101}}, +/* 32966 */ {(16<<2)|3,{61,105,105}}, +/* 32967 */ {(16<<2)|3,{61,105,111}}, +/* 32968 */ {(16<<2)|3,{61,105,115}}, +/* 32969 */ {(16<<2)|3,{61,105,116}}, +/* 32970 */ {(11<<2)|2,{61,105,0}}, +/* 32971 */ {(11<<2)|2,{61,105,0}}, +/* 32972 */ {(11<<2)|2,{61,105,0}}, +/* 32973 */ {(11<<2)|2,{61,105,0}}, +/* 32974 */ {(11<<2)|2,{61,105,0}}, +/* 32975 */ {(11<<2)|2,{61,105,0}}, +/* 32976 */ {(11<<2)|2,{61,105,0}}, +/* 32977 */ {(11<<2)|2,{61,105,0}}, +/* 32978 */ {(11<<2)|2,{61,105,0}}, +/* 32979 */ {(11<<2)|2,{61,105,0}}, +/* 32980 */ {(11<<2)|2,{61,105,0}}, +/* 32981 */ {(11<<2)|2,{61,105,0}}, +/* 32982 */ {(11<<2)|2,{61,105,0}}, +/* 32983 */ {(11<<2)|2,{61,105,0}}, +/* 32984 */ {(11<<2)|2,{61,105,0}}, +/* 32985 */ {(11<<2)|2,{61,105,0}}, +/* 32986 */ {(11<<2)|2,{61,105,0}}, +/* 32987 */ {(11<<2)|2,{61,105,0}}, +/* 32988 */ {(11<<2)|2,{61,105,0}}, +/* 32989 */ {(11<<2)|2,{61,105,0}}, +/* 32990 */ {(11<<2)|2,{61,105,0}}, +/* 32991 */ {(11<<2)|2,{61,105,0}}, +/* 32992 */ {(16<<2)|3,{61,111,48}}, +/* 32993 */ {(16<<2)|3,{61,111,49}}, +/* 32994 */ {(16<<2)|3,{61,111,50}}, +/* 32995 */ {(16<<2)|3,{61,111,97}}, +/* 32996 */ {(16<<2)|3,{61,111,99}}, +/* 32997 */ {(16<<2)|3,{61,111,101}}, +/* 32998 */ {(16<<2)|3,{61,111,105}}, +/* 32999 */ {(16<<2)|3,{61,111,111}}, +/* 33000 */ {(16<<2)|3,{61,111,115}}, +/* 33001 */ {(16<<2)|3,{61,111,116}}, +/* 33002 */ {(11<<2)|2,{61,111,0}}, +/* 33003 */ {(11<<2)|2,{61,111,0}}, +/* 33004 */ {(11<<2)|2,{61,111,0}}, +/* 33005 */ {(11<<2)|2,{61,111,0}}, +/* 33006 */ {(11<<2)|2,{61,111,0}}, +/* 33007 */ {(11<<2)|2,{61,111,0}}, +/* 33008 */ {(11<<2)|2,{61,111,0}}, +/* 33009 */ {(11<<2)|2,{61,111,0}}, +/* 33010 */ {(11<<2)|2,{61,111,0}}, +/* 33011 */ {(11<<2)|2,{61,111,0}}, +/* 33012 */ {(11<<2)|2,{61,111,0}}, +/* 33013 */ {(11<<2)|2,{61,111,0}}, +/* 33014 */ {(11<<2)|2,{61,111,0}}, +/* 33015 */ {(11<<2)|2,{61,111,0}}, +/* 33016 */ {(11<<2)|2,{61,111,0}}, +/* 33017 */ {(11<<2)|2,{61,111,0}}, +/* 33018 */ {(11<<2)|2,{61,111,0}}, +/* 33019 */ {(11<<2)|2,{61,111,0}}, +/* 33020 */ {(11<<2)|2,{61,111,0}}, +/* 33021 */ {(11<<2)|2,{61,111,0}}, +/* 33022 */ {(11<<2)|2,{61,111,0}}, +/* 33023 */ {(11<<2)|2,{61,111,0}}, +/* 33024 */ {(16<<2)|3,{61,115,48}}, +/* 33025 */ {(16<<2)|3,{61,115,49}}, +/* 33026 */ {(16<<2)|3,{61,115,50}}, +/* 33027 */ {(16<<2)|3,{61,115,97}}, +/* 33028 */ {(16<<2)|3,{61,115,99}}, +/* 33029 */ {(16<<2)|3,{61,115,101}}, +/* 33030 */ {(16<<2)|3,{61,115,105}}, +/* 33031 */ {(16<<2)|3,{61,115,111}}, +/* 33032 */ {(16<<2)|3,{61,115,115}}, +/* 33033 */ {(16<<2)|3,{61,115,116}}, +/* 33034 */ {(11<<2)|2,{61,115,0}}, +/* 33035 */ {(11<<2)|2,{61,115,0}}, +/* 33036 */ {(11<<2)|2,{61,115,0}}, +/* 33037 */ {(11<<2)|2,{61,115,0}}, +/* 33038 */ {(11<<2)|2,{61,115,0}}, +/* 33039 */ {(11<<2)|2,{61,115,0}}, +/* 33040 */ {(11<<2)|2,{61,115,0}}, +/* 33041 */ {(11<<2)|2,{61,115,0}}, +/* 33042 */ {(11<<2)|2,{61,115,0}}, +/* 33043 */ {(11<<2)|2,{61,115,0}}, +/* 33044 */ {(11<<2)|2,{61,115,0}}, +/* 33045 */ {(11<<2)|2,{61,115,0}}, +/* 33046 */ {(11<<2)|2,{61,115,0}}, +/* 33047 */ {(11<<2)|2,{61,115,0}}, +/* 33048 */ {(11<<2)|2,{61,115,0}}, +/* 33049 */ {(11<<2)|2,{61,115,0}}, +/* 33050 */ {(11<<2)|2,{61,115,0}}, +/* 33051 */ {(11<<2)|2,{61,115,0}}, +/* 33052 */ {(11<<2)|2,{61,115,0}}, +/* 33053 */ {(11<<2)|2,{61,115,0}}, +/* 33054 */ {(11<<2)|2,{61,115,0}}, +/* 33055 */ {(11<<2)|2,{61,115,0}}, +/* 33056 */ {(16<<2)|3,{61,116,48}}, +/* 33057 */ {(16<<2)|3,{61,116,49}}, +/* 33058 */ {(16<<2)|3,{61,116,50}}, +/* 33059 */ {(16<<2)|3,{61,116,97}}, +/* 33060 */ {(16<<2)|3,{61,116,99}}, +/* 33061 */ {(16<<2)|3,{61,116,101}}, +/* 33062 */ {(16<<2)|3,{61,116,105}}, +/* 33063 */ {(16<<2)|3,{61,116,111}}, +/* 33064 */ {(16<<2)|3,{61,116,115}}, +/* 33065 */ {(16<<2)|3,{61,116,116}}, +/* 33066 */ {(11<<2)|2,{61,116,0}}, +/* 33067 */ {(11<<2)|2,{61,116,0}}, +/* 33068 */ {(11<<2)|2,{61,116,0}}, +/* 33069 */ {(11<<2)|2,{61,116,0}}, +/* 33070 */ {(11<<2)|2,{61,116,0}}, +/* 33071 */ {(11<<2)|2,{61,116,0}}, +/* 33072 */ {(11<<2)|2,{61,116,0}}, +/* 33073 */ {(11<<2)|2,{61,116,0}}, +/* 33074 */ {(11<<2)|2,{61,116,0}}, +/* 33075 */ {(11<<2)|2,{61,116,0}}, +/* 33076 */ {(11<<2)|2,{61,116,0}}, +/* 33077 */ {(11<<2)|2,{61,116,0}}, +/* 33078 */ {(11<<2)|2,{61,116,0}}, +/* 33079 */ {(11<<2)|2,{61,116,0}}, +/* 33080 */ {(11<<2)|2,{61,116,0}}, +/* 33081 */ {(11<<2)|2,{61,116,0}}, +/* 33082 */ {(11<<2)|2,{61,116,0}}, +/* 33083 */ {(11<<2)|2,{61,116,0}}, +/* 33084 */ {(11<<2)|2,{61,116,0}}, +/* 33085 */ {(11<<2)|2,{61,116,0}}, +/* 33086 */ {(11<<2)|2,{61,116,0}}, +/* 33087 */ {(11<<2)|2,{61,116,0}}, +/* 33088 */ {(12<<2)|2,{61,32,0}}, +/* 33089 */ {(12<<2)|2,{61,32,0}}, +/* 33090 */ {(12<<2)|2,{61,32,0}}, +/* 33091 */ {(12<<2)|2,{61,32,0}}, +/* 33092 */ {(12<<2)|2,{61,32,0}}, +/* 33093 */ {(12<<2)|2,{61,32,0}}, +/* 33094 */ {(12<<2)|2,{61,32,0}}, +/* 33095 */ {(12<<2)|2,{61,32,0}}, +/* 33096 */ {(12<<2)|2,{61,32,0}}, +/* 33097 */ {(12<<2)|2,{61,32,0}}, +/* 33098 */ {(12<<2)|2,{61,32,0}}, +/* 33099 */ {(12<<2)|2,{61,32,0}}, +/* 33100 */ {(12<<2)|2,{61,32,0}}, +/* 33101 */ {(12<<2)|2,{61,32,0}}, +/* 33102 */ {(12<<2)|2,{61,32,0}}, +/* 33103 */ {(12<<2)|2,{61,32,0}}, +/* 33104 */ {(12<<2)|2,{61,37,0}}, +/* 33105 */ {(12<<2)|2,{61,37,0}}, +/* 33106 */ {(12<<2)|2,{61,37,0}}, +/* 33107 */ {(12<<2)|2,{61,37,0}}, +/* 33108 */ {(12<<2)|2,{61,37,0}}, +/* 33109 */ {(12<<2)|2,{61,37,0}}, +/* 33110 */ {(12<<2)|2,{61,37,0}}, +/* 33111 */ {(12<<2)|2,{61,37,0}}, +/* 33112 */ {(12<<2)|2,{61,37,0}}, +/* 33113 */ {(12<<2)|2,{61,37,0}}, +/* 33114 */ {(12<<2)|2,{61,37,0}}, +/* 33115 */ {(12<<2)|2,{61,37,0}}, +/* 33116 */ {(12<<2)|2,{61,37,0}}, +/* 33117 */ {(12<<2)|2,{61,37,0}}, +/* 33118 */ {(12<<2)|2,{61,37,0}}, +/* 33119 */ {(12<<2)|2,{61,37,0}}, +/* 33120 */ {(12<<2)|2,{61,45,0}}, +/* 33121 */ {(12<<2)|2,{61,45,0}}, +/* 33122 */ {(12<<2)|2,{61,45,0}}, +/* 33123 */ {(12<<2)|2,{61,45,0}}, +/* 33124 */ {(12<<2)|2,{61,45,0}}, +/* 33125 */ {(12<<2)|2,{61,45,0}}, +/* 33126 */ {(12<<2)|2,{61,45,0}}, +/* 33127 */ {(12<<2)|2,{61,45,0}}, +/* 33128 */ {(12<<2)|2,{61,45,0}}, +/* 33129 */ {(12<<2)|2,{61,45,0}}, +/* 33130 */ {(12<<2)|2,{61,45,0}}, +/* 33131 */ {(12<<2)|2,{61,45,0}}, +/* 33132 */ {(12<<2)|2,{61,45,0}}, +/* 33133 */ {(12<<2)|2,{61,45,0}}, +/* 33134 */ {(12<<2)|2,{61,45,0}}, +/* 33135 */ {(12<<2)|2,{61,45,0}}, +/* 33136 */ {(12<<2)|2,{61,46,0}}, +/* 33137 */ {(12<<2)|2,{61,46,0}}, +/* 33138 */ {(12<<2)|2,{61,46,0}}, +/* 33139 */ {(12<<2)|2,{61,46,0}}, +/* 33140 */ {(12<<2)|2,{61,46,0}}, +/* 33141 */ {(12<<2)|2,{61,46,0}}, +/* 33142 */ {(12<<2)|2,{61,46,0}}, +/* 33143 */ {(12<<2)|2,{61,46,0}}, +/* 33144 */ {(12<<2)|2,{61,46,0}}, +/* 33145 */ {(12<<2)|2,{61,46,0}}, +/* 33146 */ {(12<<2)|2,{61,46,0}}, +/* 33147 */ {(12<<2)|2,{61,46,0}}, +/* 33148 */ {(12<<2)|2,{61,46,0}}, +/* 33149 */ {(12<<2)|2,{61,46,0}}, +/* 33150 */ {(12<<2)|2,{61,46,0}}, +/* 33151 */ {(12<<2)|2,{61,46,0}}, +/* 33152 */ {(12<<2)|2,{61,47,0}}, +/* 33153 */ {(12<<2)|2,{61,47,0}}, +/* 33154 */ {(12<<2)|2,{61,47,0}}, +/* 33155 */ {(12<<2)|2,{61,47,0}}, +/* 33156 */ {(12<<2)|2,{61,47,0}}, +/* 33157 */ {(12<<2)|2,{61,47,0}}, +/* 33158 */ {(12<<2)|2,{61,47,0}}, +/* 33159 */ {(12<<2)|2,{61,47,0}}, +/* 33160 */ {(12<<2)|2,{61,47,0}}, +/* 33161 */ {(12<<2)|2,{61,47,0}}, +/* 33162 */ {(12<<2)|2,{61,47,0}}, +/* 33163 */ {(12<<2)|2,{61,47,0}}, +/* 33164 */ {(12<<2)|2,{61,47,0}}, +/* 33165 */ {(12<<2)|2,{61,47,0}}, +/* 33166 */ {(12<<2)|2,{61,47,0}}, +/* 33167 */ {(12<<2)|2,{61,47,0}}, +/* 33168 */ {(12<<2)|2,{61,51,0}}, +/* 33169 */ {(12<<2)|2,{61,51,0}}, +/* 33170 */ {(12<<2)|2,{61,51,0}}, +/* 33171 */ {(12<<2)|2,{61,51,0}}, +/* 33172 */ {(12<<2)|2,{61,51,0}}, +/* 33173 */ {(12<<2)|2,{61,51,0}}, +/* 33174 */ {(12<<2)|2,{61,51,0}}, +/* 33175 */ {(12<<2)|2,{61,51,0}}, +/* 33176 */ {(12<<2)|2,{61,51,0}}, +/* 33177 */ {(12<<2)|2,{61,51,0}}, +/* 33178 */ {(12<<2)|2,{61,51,0}}, +/* 33179 */ {(12<<2)|2,{61,51,0}}, +/* 33180 */ {(12<<2)|2,{61,51,0}}, +/* 33181 */ {(12<<2)|2,{61,51,0}}, +/* 33182 */ {(12<<2)|2,{61,51,0}}, +/* 33183 */ {(12<<2)|2,{61,51,0}}, +/* 33184 */ {(12<<2)|2,{61,52,0}}, +/* 33185 */ {(12<<2)|2,{61,52,0}}, +/* 33186 */ {(12<<2)|2,{61,52,0}}, +/* 33187 */ {(12<<2)|2,{61,52,0}}, +/* 33188 */ {(12<<2)|2,{61,52,0}}, +/* 33189 */ {(12<<2)|2,{61,52,0}}, +/* 33190 */ {(12<<2)|2,{61,52,0}}, +/* 33191 */ {(12<<2)|2,{61,52,0}}, +/* 33192 */ {(12<<2)|2,{61,52,0}}, +/* 33193 */ {(12<<2)|2,{61,52,0}}, +/* 33194 */ {(12<<2)|2,{61,52,0}}, +/* 33195 */ {(12<<2)|2,{61,52,0}}, +/* 33196 */ {(12<<2)|2,{61,52,0}}, +/* 33197 */ {(12<<2)|2,{61,52,0}}, +/* 33198 */ {(12<<2)|2,{61,52,0}}, +/* 33199 */ {(12<<2)|2,{61,52,0}}, +/* 33200 */ {(12<<2)|2,{61,53,0}}, +/* 33201 */ {(12<<2)|2,{61,53,0}}, +/* 33202 */ {(12<<2)|2,{61,53,0}}, +/* 33203 */ {(12<<2)|2,{61,53,0}}, +/* 33204 */ {(12<<2)|2,{61,53,0}}, +/* 33205 */ {(12<<2)|2,{61,53,0}}, +/* 33206 */ {(12<<2)|2,{61,53,0}}, +/* 33207 */ {(12<<2)|2,{61,53,0}}, +/* 33208 */ {(12<<2)|2,{61,53,0}}, +/* 33209 */ {(12<<2)|2,{61,53,0}}, +/* 33210 */ {(12<<2)|2,{61,53,0}}, +/* 33211 */ {(12<<2)|2,{61,53,0}}, +/* 33212 */ {(12<<2)|2,{61,53,0}}, +/* 33213 */ {(12<<2)|2,{61,53,0}}, +/* 33214 */ {(12<<2)|2,{61,53,0}}, +/* 33215 */ {(12<<2)|2,{61,53,0}}, +/* 33216 */ {(12<<2)|2,{61,54,0}}, +/* 33217 */ {(12<<2)|2,{61,54,0}}, +/* 33218 */ {(12<<2)|2,{61,54,0}}, +/* 33219 */ {(12<<2)|2,{61,54,0}}, +/* 33220 */ {(12<<2)|2,{61,54,0}}, +/* 33221 */ {(12<<2)|2,{61,54,0}}, +/* 33222 */ {(12<<2)|2,{61,54,0}}, +/* 33223 */ {(12<<2)|2,{61,54,0}}, +/* 33224 */ {(12<<2)|2,{61,54,0}}, +/* 33225 */ {(12<<2)|2,{61,54,0}}, +/* 33226 */ {(12<<2)|2,{61,54,0}}, +/* 33227 */ {(12<<2)|2,{61,54,0}}, +/* 33228 */ {(12<<2)|2,{61,54,0}}, +/* 33229 */ {(12<<2)|2,{61,54,0}}, +/* 33230 */ {(12<<2)|2,{61,54,0}}, +/* 33231 */ {(12<<2)|2,{61,54,0}}, +/* 33232 */ {(12<<2)|2,{61,55,0}}, +/* 33233 */ {(12<<2)|2,{61,55,0}}, +/* 33234 */ {(12<<2)|2,{61,55,0}}, +/* 33235 */ {(12<<2)|2,{61,55,0}}, +/* 33236 */ {(12<<2)|2,{61,55,0}}, +/* 33237 */ {(12<<2)|2,{61,55,0}}, +/* 33238 */ {(12<<2)|2,{61,55,0}}, +/* 33239 */ {(12<<2)|2,{61,55,0}}, +/* 33240 */ {(12<<2)|2,{61,55,0}}, +/* 33241 */ {(12<<2)|2,{61,55,0}}, +/* 33242 */ {(12<<2)|2,{61,55,0}}, +/* 33243 */ {(12<<2)|2,{61,55,0}}, +/* 33244 */ {(12<<2)|2,{61,55,0}}, +/* 33245 */ {(12<<2)|2,{61,55,0}}, +/* 33246 */ {(12<<2)|2,{61,55,0}}, +/* 33247 */ {(12<<2)|2,{61,55,0}}, +/* 33248 */ {(12<<2)|2,{61,56,0}}, +/* 33249 */ {(12<<2)|2,{61,56,0}}, +/* 33250 */ {(12<<2)|2,{61,56,0}}, +/* 33251 */ {(12<<2)|2,{61,56,0}}, +/* 33252 */ {(12<<2)|2,{61,56,0}}, +/* 33253 */ {(12<<2)|2,{61,56,0}}, +/* 33254 */ {(12<<2)|2,{61,56,0}}, +/* 33255 */ {(12<<2)|2,{61,56,0}}, +/* 33256 */ {(12<<2)|2,{61,56,0}}, +/* 33257 */ {(12<<2)|2,{61,56,0}}, +/* 33258 */ {(12<<2)|2,{61,56,0}}, +/* 33259 */ {(12<<2)|2,{61,56,0}}, +/* 33260 */ {(12<<2)|2,{61,56,0}}, +/* 33261 */ {(12<<2)|2,{61,56,0}}, +/* 33262 */ {(12<<2)|2,{61,56,0}}, +/* 33263 */ {(12<<2)|2,{61,56,0}}, +/* 33264 */ {(12<<2)|2,{61,57,0}}, +/* 33265 */ {(12<<2)|2,{61,57,0}}, +/* 33266 */ {(12<<2)|2,{61,57,0}}, +/* 33267 */ {(12<<2)|2,{61,57,0}}, +/* 33268 */ {(12<<2)|2,{61,57,0}}, +/* 33269 */ {(12<<2)|2,{61,57,0}}, +/* 33270 */ {(12<<2)|2,{61,57,0}}, +/* 33271 */ {(12<<2)|2,{61,57,0}}, +/* 33272 */ {(12<<2)|2,{61,57,0}}, +/* 33273 */ {(12<<2)|2,{61,57,0}}, +/* 33274 */ {(12<<2)|2,{61,57,0}}, +/* 33275 */ {(12<<2)|2,{61,57,0}}, +/* 33276 */ {(12<<2)|2,{61,57,0}}, +/* 33277 */ {(12<<2)|2,{61,57,0}}, +/* 33278 */ {(12<<2)|2,{61,57,0}}, +/* 33279 */ {(12<<2)|2,{61,57,0}}, +/* 33280 */ {(12<<2)|2,{61,61,0}}, +/* 33281 */ {(12<<2)|2,{61,61,0}}, +/* 33282 */ {(12<<2)|2,{61,61,0}}, +/* 33283 */ {(12<<2)|2,{61,61,0}}, +/* 33284 */ {(12<<2)|2,{61,61,0}}, +/* 33285 */ {(12<<2)|2,{61,61,0}}, +/* 33286 */ {(12<<2)|2,{61,61,0}}, +/* 33287 */ {(12<<2)|2,{61,61,0}}, +/* 33288 */ {(12<<2)|2,{61,61,0}}, +/* 33289 */ {(12<<2)|2,{61,61,0}}, +/* 33290 */ {(12<<2)|2,{61,61,0}}, +/* 33291 */ {(12<<2)|2,{61,61,0}}, +/* 33292 */ {(12<<2)|2,{61,61,0}}, +/* 33293 */ {(12<<2)|2,{61,61,0}}, +/* 33294 */ {(12<<2)|2,{61,61,0}}, +/* 33295 */ {(12<<2)|2,{61,61,0}}, +/* 33296 */ {(12<<2)|2,{61,65,0}}, +/* 33297 */ {(12<<2)|2,{61,65,0}}, +/* 33298 */ {(12<<2)|2,{61,65,0}}, +/* 33299 */ {(12<<2)|2,{61,65,0}}, +/* 33300 */ {(12<<2)|2,{61,65,0}}, +/* 33301 */ {(12<<2)|2,{61,65,0}}, +/* 33302 */ {(12<<2)|2,{61,65,0}}, +/* 33303 */ {(12<<2)|2,{61,65,0}}, +/* 33304 */ {(12<<2)|2,{61,65,0}}, +/* 33305 */ {(12<<2)|2,{61,65,0}}, +/* 33306 */ {(12<<2)|2,{61,65,0}}, +/* 33307 */ {(12<<2)|2,{61,65,0}}, +/* 33308 */ {(12<<2)|2,{61,65,0}}, +/* 33309 */ {(12<<2)|2,{61,65,0}}, +/* 33310 */ {(12<<2)|2,{61,65,0}}, +/* 33311 */ {(12<<2)|2,{61,65,0}}, +/* 33312 */ {(12<<2)|2,{61,95,0}}, +/* 33313 */ {(12<<2)|2,{61,95,0}}, +/* 33314 */ {(12<<2)|2,{61,95,0}}, +/* 33315 */ {(12<<2)|2,{61,95,0}}, +/* 33316 */ {(12<<2)|2,{61,95,0}}, +/* 33317 */ {(12<<2)|2,{61,95,0}}, +/* 33318 */ {(12<<2)|2,{61,95,0}}, +/* 33319 */ {(12<<2)|2,{61,95,0}}, +/* 33320 */ {(12<<2)|2,{61,95,0}}, +/* 33321 */ {(12<<2)|2,{61,95,0}}, +/* 33322 */ {(12<<2)|2,{61,95,0}}, +/* 33323 */ {(12<<2)|2,{61,95,0}}, +/* 33324 */ {(12<<2)|2,{61,95,0}}, +/* 33325 */ {(12<<2)|2,{61,95,0}}, +/* 33326 */ {(12<<2)|2,{61,95,0}}, +/* 33327 */ {(12<<2)|2,{61,95,0}}, +/* 33328 */ {(12<<2)|2,{61,98,0}}, +/* 33329 */ {(12<<2)|2,{61,98,0}}, +/* 33330 */ {(12<<2)|2,{61,98,0}}, +/* 33331 */ {(12<<2)|2,{61,98,0}}, +/* 33332 */ {(12<<2)|2,{61,98,0}}, +/* 33333 */ {(12<<2)|2,{61,98,0}}, +/* 33334 */ {(12<<2)|2,{61,98,0}}, +/* 33335 */ {(12<<2)|2,{61,98,0}}, +/* 33336 */ {(12<<2)|2,{61,98,0}}, +/* 33337 */ {(12<<2)|2,{61,98,0}}, +/* 33338 */ {(12<<2)|2,{61,98,0}}, +/* 33339 */ {(12<<2)|2,{61,98,0}}, +/* 33340 */ {(12<<2)|2,{61,98,0}}, +/* 33341 */ {(12<<2)|2,{61,98,0}}, +/* 33342 */ {(12<<2)|2,{61,98,0}}, +/* 33343 */ {(12<<2)|2,{61,98,0}}, +/* 33344 */ {(12<<2)|2,{61,100,0}}, +/* 33345 */ {(12<<2)|2,{61,100,0}}, +/* 33346 */ {(12<<2)|2,{61,100,0}}, +/* 33347 */ {(12<<2)|2,{61,100,0}}, +/* 33348 */ {(12<<2)|2,{61,100,0}}, +/* 33349 */ {(12<<2)|2,{61,100,0}}, +/* 33350 */ {(12<<2)|2,{61,100,0}}, +/* 33351 */ {(12<<2)|2,{61,100,0}}, +/* 33352 */ {(12<<2)|2,{61,100,0}}, +/* 33353 */ {(12<<2)|2,{61,100,0}}, +/* 33354 */ {(12<<2)|2,{61,100,0}}, +/* 33355 */ {(12<<2)|2,{61,100,0}}, +/* 33356 */ {(12<<2)|2,{61,100,0}}, +/* 33357 */ {(12<<2)|2,{61,100,0}}, +/* 33358 */ {(12<<2)|2,{61,100,0}}, +/* 33359 */ {(12<<2)|2,{61,100,0}}, +/* 33360 */ {(12<<2)|2,{61,102,0}}, +/* 33361 */ {(12<<2)|2,{61,102,0}}, +/* 33362 */ {(12<<2)|2,{61,102,0}}, +/* 33363 */ {(12<<2)|2,{61,102,0}}, +/* 33364 */ {(12<<2)|2,{61,102,0}}, +/* 33365 */ {(12<<2)|2,{61,102,0}}, +/* 33366 */ {(12<<2)|2,{61,102,0}}, +/* 33367 */ {(12<<2)|2,{61,102,0}}, +/* 33368 */ {(12<<2)|2,{61,102,0}}, +/* 33369 */ {(12<<2)|2,{61,102,0}}, +/* 33370 */ {(12<<2)|2,{61,102,0}}, +/* 33371 */ {(12<<2)|2,{61,102,0}}, +/* 33372 */ {(12<<2)|2,{61,102,0}}, +/* 33373 */ {(12<<2)|2,{61,102,0}}, +/* 33374 */ {(12<<2)|2,{61,102,0}}, +/* 33375 */ {(12<<2)|2,{61,102,0}}, +/* 33376 */ {(12<<2)|2,{61,103,0}}, +/* 33377 */ {(12<<2)|2,{61,103,0}}, +/* 33378 */ {(12<<2)|2,{61,103,0}}, +/* 33379 */ {(12<<2)|2,{61,103,0}}, +/* 33380 */ {(12<<2)|2,{61,103,0}}, +/* 33381 */ {(12<<2)|2,{61,103,0}}, +/* 33382 */ {(12<<2)|2,{61,103,0}}, +/* 33383 */ {(12<<2)|2,{61,103,0}}, +/* 33384 */ {(12<<2)|2,{61,103,0}}, +/* 33385 */ {(12<<2)|2,{61,103,0}}, +/* 33386 */ {(12<<2)|2,{61,103,0}}, +/* 33387 */ {(12<<2)|2,{61,103,0}}, +/* 33388 */ {(12<<2)|2,{61,103,0}}, +/* 33389 */ {(12<<2)|2,{61,103,0}}, +/* 33390 */ {(12<<2)|2,{61,103,0}}, +/* 33391 */ {(12<<2)|2,{61,103,0}}, +/* 33392 */ {(12<<2)|2,{61,104,0}}, +/* 33393 */ {(12<<2)|2,{61,104,0}}, +/* 33394 */ {(12<<2)|2,{61,104,0}}, +/* 33395 */ {(12<<2)|2,{61,104,0}}, +/* 33396 */ {(12<<2)|2,{61,104,0}}, +/* 33397 */ {(12<<2)|2,{61,104,0}}, +/* 33398 */ {(12<<2)|2,{61,104,0}}, +/* 33399 */ {(12<<2)|2,{61,104,0}}, +/* 33400 */ {(12<<2)|2,{61,104,0}}, +/* 33401 */ {(12<<2)|2,{61,104,0}}, +/* 33402 */ {(12<<2)|2,{61,104,0}}, +/* 33403 */ {(12<<2)|2,{61,104,0}}, +/* 33404 */ {(12<<2)|2,{61,104,0}}, +/* 33405 */ {(12<<2)|2,{61,104,0}}, +/* 33406 */ {(12<<2)|2,{61,104,0}}, +/* 33407 */ {(12<<2)|2,{61,104,0}}, +/* 33408 */ {(12<<2)|2,{61,108,0}}, +/* 33409 */ {(12<<2)|2,{61,108,0}}, +/* 33410 */ {(12<<2)|2,{61,108,0}}, +/* 33411 */ {(12<<2)|2,{61,108,0}}, +/* 33412 */ {(12<<2)|2,{61,108,0}}, +/* 33413 */ {(12<<2)|2,{61,108,0}}, +/* 33414 */ {(12<<2)|2,{61,108,0}}, +/* 33415 */ {(12<<2)|2,{61,108,0}}, +/* 33416 */ {(12<<2)|2,{61,108,0}}, +/* 33417 */ {(12<<2)|2,{61,108,0}}, +/* 33418 */ {(12<<2)|2,{61,108,0}}, +/* 33419 */ {(12<<2)|2,{61,108,0}}, +/* 33420 */ {(12<<2)|2,{61,108,0}}, +/* 33421 */ {(12<<2)|2,{61,108,0}}, +/* 33422 */ {(12<<2)|2,{61,108,0}}, +/* 33423 */ {(12<<2)|2,{61,108,0}}, +/* 33424 */ {(12<<2)|2,{61,109,0}}, +/* 33425 */ {(12<<2)|2,{61,109,0}}, +/* 33426 */ {(12<<2)|2,{61,109,0}}, +/* 33427 */ {(12<<2)|2,{61,109,0}}, +/* 33428 */ {(12<<2)|2,{61,109,0}}, +/* 33429 */ {(12<<2)|2,{61,109,0}}, +/* 33430 */ {(12<<2)|2,{61,109,0}}, +/* 33431 */ {(12<<2)|2,{61,109,0}}, +/* 33432 */ {(12<<2)|2,{61,109,0}}, +/* 33433 */ {(12<<2)|2,{61,109,0}}, +/* 33434 */ {(12<<2)|2,{61,109,0}}, +/* 33435 */ {(12<<2)|2,{61,109,0}}, +/* 33436 */ {(12<<2)|2,{61,109,0}}, +/* 33437 */ {(12<<2)|2,{61,109,0}}, +/* 33438 */ {(12<<2)|2,{61,109,0}}, +/* 33439 */ {(12<<2)|2,{61,109,0}}, +/* 33440 */ {(12<<2)|2,{61,110,0}}, +/* 33441 */ {(12<<2)|2,{61,110,0}}, +/* 33442 */ {(12<<2)|2,{61,110,0}}, +/* 33443 */ {(12<<2)|2,{61,110,0}}, +/* 33444 */ {(12<<2)|2,{61,110,0}}, +/* 33445 */ {(12<<2)|2,{61,110,0}}, +/* 33446 */ {(12<<2)|2,{61,110,0}}, +/* 33447 */ {(12<<2)|2,{61,110,0}}, +/* 33448 */ {(12<<2)|2,{61,110,0}}, +/* 33449 */ {(12<<2)|2,{61,110,0}}, +/* 33450 */ {(12<<2)|2,{61,110,0}}, +/* 33451 */ {(12<<2)|2,{61,110,0}}, +/* 33452 */ {(12<<2)|2,{61,110,0}}, +/* 33453 */ {(12<<2)|2,{61,110,0}}, +/* 33454 */ {(12<<2)|2,{61,110,0}}, +/* 33455 */ {(12<<2)|2,{61,110,0}}, +/* 33456 */ {(12<<2)|2,{61,112,0}}, +/* 33457 */ {(12<<2)|2,{61,112,0}}, +/* 33458 */ {(12<<2)|2,{61,112,0}}, +/* 33459 */ {(12<<2)|2,{61,112,0}}, +/* 33460 */ {(12<<2)|2,{61,112,0}}, +/* 33461 */ {(12<<2)|2,{61,112,0}}, +/* 33462 */ {(12<<2)|2,{61,112,0}}, +/* 33463 */ {(12<<2)|2,{61,112,0}}, +/* 33464 */ {(12<<2)|2,{61,112,0}}, +/* 33465 */ {(12<<2)|2,{61,112,0}}, +/* 33466 */ {(12<<2)|2,{61,112,0}}, +/* 33467 */ {(12<<2)|2,{61,112,0}}, +/* 33468 */ {(12<<2)|2,{61,112,0}}, +/* 33469 */ {(12<<2)|2,{61,112,0}}, +/* 33470 */ {(12<<2)|2,{61,112,0}}, +/* 33471 */ {(12<<2)|2,{61,112,0}}, +/* 33472 */ {(12<<2)|2,{61,114,0}}, +/* 33473 */ {(12<<2)|2,{61,114,0}}, +/* 33474 */ {(12<<2)|2,{61,114,0}}, +/* 33475 */ {(12<<2)|2,{61,114,0}}, +/* 33476 */ {(12<<2)|2,{61,114,0}}, +/* 33477 */ {(12<<2)|2,{61,114,0}}, +/* 33478 */ {(12<<2)|2,{61,114,0}}, +/* 33479 */ {(12<<2)|2,{61,114,0}}, +/* 33480 */ {(12<<2)|2,{61,114,0}}, +/* 33481 */ {(12<<2)|2,{61,114,0}}, +/* 33482 */ {(12<<2)|2,{61,114,0}}, +/* 33483 */ {(12<<2)|2,{61,114,0}}, +/* 33484 */ {(12<<2)|2,{61,114,0}}, +/* 33485 */ {(12<<2)|2,{61,114,0}}, +/* 33486 */ {(12<<2)|2,{61,114,0}}, +/* 33487 */ {(12<<2)|2,{61,114,0}}, +/* 33488 */ {(12<<2)|2,{61,117,0}}, +/* 33489 */ {(12<<2)|2,{61,117,0}}, +/* 33490 */ {(12<<2)|2,{61,117,0}}, +/* 33491 */ {(12<<2)|2,{61,117,0}}, +/* 33492 */ {(12<<2)|2,{61,117,0}}, +/* 33493 */ {(12<<2)|2,{61,117,0}}, +/* 33494 */ {(12<<2)|2,{61,117,0}}, +/* 33495 */ {(12<<2)|2,{61,117,0}}, +/* 33496 */ {(12<<2)|2,{61,117,0}}, +/* 33497 */ {(12<<2)|2,{61,117,0}}, +/* 33498 */ {(12<<2)|2,{61,117,0}}, +/* 33499 */ {(12<<2)|2,{61,117,0}}, +/* 33500 */ {(12<<2)|2,{61,117,0}}, +/* 33501 */ {(12<<2)|2,{61,117,0}}, +/* 33502 */ {(12<<2)|2,{61,117,0}}, +/* 33503 */ {(12<<2)|2,{61,117,0}}, +/* 33504 */ {(13<<2)|2,{61,58,0}}, +/* 33505 */ {(13<<2)|2,{61,58,0}}, +/* 33506 */ {(13<<2)|2,{61,58,0}}, +/* 33507 */ {(13<<2)|2,{61,58,0}}, +/* 33508 */ {(13<<2)|2,{61,58,0}}, +/* 33509 */ {(13<<2)|2,{61,58,0}}, +/* 33510 */ {(13<<2)|2,{61,58,0}}, +/* 33511 */ {(13<<2)|2,{61,58,0}}, +/* 33512 */ {(13<<2)|2,{61,66,0}}, +/* 33513 */ {(13<<2)|2,{61,66,0}}, +/* 33514 */ {(13<<2)|2,{61,66,0}}, +/* 33515 */ {(13<<2)|2,{61,66,0}}, +/* 33516 */ {(13<<2)|2,{61,66,0}}, +/* 33517 */ {(13<<2)|2,{61,66,0}}, +/* 33518 */ {(13<<2)|2,{61,66,0}}, +/* 33519 */ {(13<<2)|2,{61,66,0}}, +/* 33520 */ {(13<<2)|2,{61,67,0}}, +/* 33521 */ {(13<<2)|2,{61,67,0}}, +/* 33522 */ {(13<<2)|2,{61,67,0}}, +/* 33523 */ {(13<<2)|2,{61,67,0}}, +/* 33524 */ {(13<<2)|2,{61,67,0}}, +/* 33525 */ {(13<<2)|2,{61,67,0}}, +/* 33526 */ {(13<<2)|2,{61,67,0}}, +/* 33527 */ {(13<<2)|2,{61,67,0}}, +/* 33528 */ {(13<<2)|2,{61,68,0}}, +/* 33529 */ {(13<<2)|2,{61,68,0}}, +/* 33530 */ {(13<<2)|2,{61,68,0}}, +/* 33531 */ {(13<<2)|2,{61,68,0}}, +/* 33532 */ {(13<<2)|2,{61,68,0}}, +/* 33533 */ {(13<<2)|2,{61,68,0}}, +/* 33534 */ {(13<<2)|2,{61,68,0}}, +/* 33535 */ {(13<<2)|2,{61,68,0}}, +/* 33536 */ {(13<<2)|2,{61,69,0}}, +/* 33537 */ {(13<<2)|2,{61,69,0}}, +/* 33538 */ {(13<<2)|2,{61,69,0}}, +/* 33539 */ {(13<<2)|2,{61,69,0}}, +/* 33540 */ {(13<<2)|2,{61,69,0}}, +/* 33541 */ {(13<<2)|2,{61,69,0}}, +/* 33542 */ {(13<<2)|2,{61,69,0}}, +/* 33543 */ {(13<<2)|2,{61,69,0}}, +/* 33544 */ {(13<<2)|2,{61,70,0}}, +/* 33545 */ {(13<<2)|2,{61,70,0}}, +/* 33546 */ {(13<<2)|2,{61,70,0}}, +/* 33547 */ {(13<<2)|2,{61,70,0}}, +/* 33548 */ {(13<<2)|2,{61,70,0}}, +/* 33549 */ {(13<<2)|2,{61,70,0}}, +/* 33550 */ {(13<<2)|2,{61,70,0}}, +/* 33551 */ {(13<<2)|2,{61,70,0}}, +/* 33552 */ {(13<<2)|2,{61,71,0}}, +/* 33553 */ {(13<<2)|2,{61,71,0}}, +/* 33554 */ {(13<<2)|2,{61,71,0}}, +/* 33555 */ {(13<<2)|2,{61,71,0}}, +/* 33556 */ {(13<<2)|2,{61,71,0}}, +/* 33557 */ {(13<<2)|2,{61,71,0}}, +/* 33558 */ {(13<<2)|2,{61,71,0}}, +/* 33559 */ {(13<<2)|2,{61,71,0}}, +/* 33560 */ {(13<<2)|2,{61,72,0}}, +/* 33561 */ {(13<<2)|2,{61,72,0}}, +/* 33562 */ {(13<<2)|2,{61,72,0}}, +/* 33563 */ {(13<<2)|2,{61,72,0}}, +/* 33564 */ {(13<<2)|2,{61,72,0}}, +/* 33565 */ {(13<<2)|2,{61,72,0}}, +/* 33566 */ {(13<<2)|2,{61,72,0}}, +/* 33567 */ {(13<<2)|2,{61,72,0}}, +/* 33568 */ {(13<<2)|2,{61,73,0}}, +/* 33569 */ {(13<<2)|2,{61,73,0}}, +/* 33570 */ {(13<<2)|2,{61,73,0}}, +/* 33571 */ {(13<<2)|2,{61,73,0}}, +/* 33572 */ {(13<<2)|2,{61,73,0}}, +/* 33573 */ {(13<<2)|2,{61,73,0}}, +/* 33574 */ {(13<<2)|2,{61,73,0}}, +/* 33575 */ {(13<<2)|2,{61,73,0}}, +/* 33576 */ {(13<<2)|2,{61,74,0}}, +/* 33577 */ {(13<<2)|2,{61,74,0}}, +/* 33578 */ {(13<<2)|2,{61,74,0}}, +/* 33579 */ {(13<<2)|2,{61,74,0}}, +/* 33580 */ {(13<<2)|2,{61,74,0}}, +/* 33581 */ {(13<<2)|2,{61,74,0}}, +/* 33582 */ {(13<<2)|2,{61,74,0}}, +/* 33583 */ {(13<<2)|2,{61,74,0}}, +/* 33584 */ {(13<<2)|2,{61,75,0}}, +/* 33585 */ {(13<<2)|2,{61,75,0}}, +/* 33586 */ {(13<<2)|2,{61,75,0}}, +/* 33587 */ {(13<<2)|2,{61,75,0}}, +/* 33588 */ {(13<<2)|2,{61,75,0}}, +/* 33589 */ {(13<<2)|2,{61,75,0}}, +/* 33590 */ {(13<<2)|2,{61,75,0}}, +/* 33591 */ {(13<<2)|2,{61,75,0}}, +/* 33592 */ {(13<<2)|2,{61,76,0}}, +/* 33593 */ {(13<<2)|2,{61,76,0}}, +/* 33594 */ {(13<<2)|2,{61,76,0}}, +/* 33595 */ {(13<<2)|2,{61,76,0}}, +/* 33596 */ {(13<<2)|2,{61,76,0}}, +/* 33597 */ {(13<<2)|2,{61,76,0}}, +/* 33598 */ {(13<<2)|2,{61,76,0}}, +/* 33599 */ {(13<<2)|2,{61,76,0}}, +/* 33600 */ {(13<<2)|2,{61,77,0}}, +/* 33601 */ {(13<<2)|2,{61,77,0}}, +/* 33602 */ {(13<<2)|2,{61,77,0}}, +/* 33603 */ {(13<<2)|2,{61,77,0}}, +/* 33604 */ {(13<<2)|2,{61,77,0}}, +/* 33605 */ {(13<<2)|2,{61,77,0}}, +/* 33606 */ {(13<<2)|2,{61,77,0}}, +/* 33607 */ {(13<<2)|2,{61,77,0}}, +/* 33608 */ {(13<<2)|2,{61,78,0}}, +/* 33609 */ {(13<<2)|2,{61,78,0}}, +/* 33610 */ {(13<<2)|2,{61,78,0}}, +/* 33611 */ {(13<<2)|2,{61,78,0}}, +/* 33612 */ {(13<<2)|2,{61,78,0}}, +/* 33613 */ {(13<<2)|2,{61,78,0}}, +/* 33614 */ {(13<<2)|2,{61,78,0}}, +/* 33615 */ {(13<<2)|2,{61,78,0}}, +/* 33616 */ {(13<<2)|2,{61,79,0}}, +/* 33617 */ {(13<<2)|2,{61,79,0}}, +/* 33618 */ {(13<<2)|2,{61,79,0}}, +/* 33619 */ {(13<<2)|2,{61,79,0}}, +/* 33620 */ {(13<<2)|2,{61,79,0}}, +/* 33621 */ {(13<<2)|2,{61,79,0}}, +/* 33622 */ {(13<<2)|2,{61,79,0}}, +/* 33623 */ {(13<<2)|2,{61,79,0}}, +/* 33624 */ {(13<<2)|2,{61,80,0}}, +/* 33625 */ {(13<<2)|2,{61,80,0}}, +/* 33626 */ {(13<<2)|2,{61,80,0}}, +/* 33627 */ {(13<<2)|2,{61,80,0}}, +/* 33628 */ {(13<<2)|2,{61,80,0}}, +/* 33629 */ {(13<<2)|2,{61,80,0}}, +/* 33630 */ {(13<<2)|2,{61,80,0}}, +/* 33631 */ {(13<<2)|2,{61,80,0}}, +/* 33632 */ {(13<<2)|2,{61,81,0}}, +/* 33633 */ {(13<<2)|2,{61,81,0}}, +/* 33634 */ {(13<<2)|2,{61,81,0}}, +/* 33635 */ {(13<<2)|2,{61,81,0}}, +/* 33636 */ {(13<<2)|2,{61,81,0}}, +/* 33637 */ {(13<<2)|2,{61,81,0}}, +/* 33638 */ {(13<<2)|2,{61,81,0}}, +/* 33639 */ {(13<<2)|2,{61,81,0}}, +/* 33640 */ {(13<<2)|2,{61,82,0}}, +/* 33641 */ {(13<<2)|2,{61,82,0}}, +/* 33642 */ {(13<<2)|2,{61,82,0}}, +/* 33643 */ {(13<<2)|2,{61,82,0}}, +/* 33644 */ {(13<<2)|2,{61,82,0}}, +/* 33645 */ {(13<<2)|2,{61,82,0}}, +/* 33646 */ {(13<<2)|2,{61,82,0}}, +/* 33647 */ {(13<<2)|2,{61,82,0}}, +/* 33648 */ {(13<<2)|2,{61,83,0}}, +/* 33649 */ {(13<<2)|2,{61,83,0}}, +/* 33650 */ {(13<<2)|2,{61,83,0}}, +/* 33651 */ {(13<<2)|2,{61,83,0}}, +/* 33652 */ {(13<<2)|2,{61,83,0}}, +/* 33653 */ {(13<<2)|2,{61,83,0}}, +/* 33654 */ {(13<<2)|2,{61,83,0}}, +/* 33655 */ {(13<<2)|2,{61,83,0}}, +/* 33656 */ {(13<<2)|2,{61,84,0}}, +/* 33657 */ {(13<<2)|2,{61,84,0}}, +/* 33658 */ {(13<<2)|2,{61,84,0}}, +/* 33659 */ {(13<<2)|2,{61,84,0}}, +/* 33660 */ {(13<<2)|2,{61,84,0}}, +/* 33661 */ {(13<<2)|2,{61,84,0}}, +/* 33662 */ {(13<<2)|2,{61,84,0}}, +/* 33663 */ {(13<<2)|2,{61,84,0}}, +/* 33664 */ {(13<<2)|2,{61,85,0}}, +/* 33665 */ {(13<<2)|2,{61,85,0}}, +/* 33666 */ {(13<<2)|2,{61,85,0}}, +/* 33667 */ {(13<<2)|2,{61,85,0}}, +/* 33668 */ {(13<<2)|2,{61,85,0}}, +/* 33669 */ {(13<<2)|2,{61,85,0}}, +/* 33670 */ {(13<<2)|2,{61,85,0}}, +/* 33671 */ {(13<<2)|2,{61,85,0}}, +/* 33672 */ {(13<<2)|2,{61,86,0}}, +/* 33673 */ {(13<<2)|2,{61,86,0}}, +/* 33674 */ {(13<<2)|2,{61,86,0}}, +/* 33675 */ {(13<<2)|2,{61,86,0}}, +/* 33676 */ {(13<<2)|2,{61,86,0}}, +/* 33677 */ {(13<<2)|2,{61,86,0}}, +/* 33678 */ {(13<<2)|2,{61,86,0}}, +/* 33679 */ {(13<<2)|2,{61,86,0}}, +/* 33680 */ {(13<<2)|2,{61,87,0}}, +/* 33681 */ {(13<<2)|2,{61,87,0}}, +/* 33682 */ {(13<<2)|2,{61,87,0}}, +/* 33683 */ {(13<<2)|2,{61,87,0}}, +/* 33684 */ {(13<<2)|2,{61,87,0}}, +/* 33685 */ {(13<<2)|2,{61,87,0}}, +/* 33686 */ {(13<<2)|2,{61,87,0}}, +/* 33687 */ {(13<<2)|2,{61,87,0}}, +/* 33688 */ {(13<<2)|2,{61,89,0}}, +/* 33689 */ {(13<<2)|2,{61,89,0}}, +/* 33690 */ {(13<<2)|2,{61,89,0}}, +/* 33691 */ {(13<<2)|2,{61,89,0}}, +/* 33692 */ {(13<<2)|2,{61,89,0}}, +/* 33693 */ {(13<<2)|2,{61,89,0}}, +/* 33694 */ {(13<<2)|2,{61,89,0}}, +/* 33695 */ {(13<<2)|2,{61,89,0}}, +/* 33696 */ {(13<<2)|2,{61,106,0}}, +/* 33697 */ {(13<<2)|2,{61,106,0}}, +/* 33698 */ {(13<<2)|2,{61,106,0}}, +/* 33699 */ {(13<<2)|2,{61,106,0}}, +/* 33700 */ {(13<<2)|2,{61,106,0}}, +/* 33701 */ {(13<<2)|2,{61,106,0}}, +/* 33702 */ {(13<<2)|2,{61,106,0}}, +/* 33703 */ {(13<<2)|2,{61,106,0}}, +/* 33704 */ {(13<<2)|2,{61,107,0}}, +/* 33705 */ {(13<<2)|2,{61,107,0}}, +/* 33706 */ {(13<<2)|2,{61,107,0}}, +/* 33707 */ {(13<<2)|2,{61,107,0}}, +/* 33708 */ {(13<<2)|2,{61,107,0}}, +/* 33709 */ {(13<<2)|2,{61,107,0}}, +/* 33710 */ {(13<<2)|2,{61,107,0}}, +/* 33711 */ {(13<<2)|2,{61,107,0}}, +/* 33712 */ {(13<<2)|2,{61,113,0}}, +/* 33713 */ {(13<<2)|2,{61,113,0}}, +/* 33714 */ {(13<<2)|2,{61,113,0}}, +/* 33715 */ {(13<<2)|2,{61,113,0}}, +/* 33716 */ {(13<<2)|2,{61,113,0}}, +/* 33717 */ {(13<<2)|2,{61,113,0}}, +/* 33718 */ {(13<<2)|2,{61,113,0}}, +/* 33719 */ {(13<<2)|2,{61,113,0}}, +/* 33720 */ {(13<<2)|2,{61,118,0}}, +/* 33721 */ {(13<<2)|2,{61,118,0}}, +/* 33722 */ {(13<<2)|2,{61,118,0}}, +/* 33723 */ {(13<<2)|2,{61,118,0}}, +/* 33724 */ {(13<<2)|2,{61,118,0}}, +/* 33725 */ {(13<<2)|2,{61,118,0}}, +/* 33726 */ {(13<<2)|2,{61,118,0}}, +/* 33727 */ {(13<<2)|2,{61,118,0}}, +/* 33728 */ {(13<<2)|2,{61,119,0}}, +/* 33729 */ {(13<<2)|2,{61,119,0}}, +/* 33730 */ {(13<<2)|2,{61,119,0}}, +/* 33731 */ {(13<<2)|2,{61,119,0}}, +/* 33732 */ {(13<<2)|2,{61,119,0}}, +/* 33733 */ {(13<<2)|2,{61,119,0}}, +/* 33734 */ {(13<<2)|2,{61,119,0}}, +/* 33735 */ {(13<<2)|2,{61,119,0}}, +/* 33736 */ {(13<<2)|2,{61,120,0}}, +/* 33737 */ {(13<<2)|2,{61,120,0}}, +/* 33738 */ {(13<<2)|2,{61,120,0}}, +/* 33739 */ {(13<<2)|2,{61,120,0}}, +/* 33740 */ {(13<<2)|2,{61,120,0}}, +/* 33741 */ {(13<<2)|2,{61,120,0}}, +/* 33742 */ {(13<<2)|2,{61,120,0}}, +/* 33743 */ {(13<<2)|2,{61,120,0}}, +/* 33744 */ {(13<<2)|2,{61,121,0}}, +/* 33745 */ {(13<<2)|2,{61,121,0}}, +/* 33746 */ {(13<<2)|2,{61,121,0}}, +/* 33747 */ {(13<<2)|2,{61,121,0}}, +/* 33748 */ {(13<<2)|2,{61,121,0}}, +/* 33749 */ {(13<<2)|2,{61,121,0}}, +/* 33750 */ {(13<<2)|2,{61,121,0}}, +/* 33751 */ {(13<<2)|2,{61,121,0}}, +/* 33752 */ {(13<<2)|2,{61,122,0}}, +/* 33753 */ {(13<<2)|2,{61,122,0}}, +/* 33754 */ {(13<<2)|2,{61,122,0}}, +/* 33755 */ {(13<<2)|2,{61,122,0}}, +/* 33756 */ {(13<<2)|2,{61,122,0}}, +/* 33757 */ {(13<<2)|2,{61,122,0}}, +/* 33758 */ {(13<<2)|2,{61,122,0}}, +/* 33759 */ {(13<<2)|2,{61,122,0}}, +/* 33760 */ {(14<<2)|2,{61,38,0}}, +/* 33761 */ {(14<<2)|2,{61,38,0}}, +/* 33762 */ {(14<<2)|2,{61,38,0}}, +/* 33763 */ {(14<<2)|2,{61,38,0}}, +/* 33764 */ {(14<<2)|2,{61,42,0}}, +/* 33765 */ {(14<<2)|2,{61,42,0}}, +/* 33766 */ {(14<<2)|2,{61,42,0}}, +/* 33767 */ {(14<<2)|2,{61,42,0}}, +/* 33768 */ {(14<<2)|2,{61,44,0}}, +/* 33769 */ {(14<<2)|2,{61,44,0}}, +/* 33770 */ {(14<<2)|2,{61,44,0}}, +/* 33771 */ {(14<<2)|2,{61,44,0}}, +/* 33772 */ {(14<<2)|2,{61,59,0}}, +/* 33773 */ {(14<<2)|2,{61,59,0}}, +/* 33774 */ {(14<<2)|2,{61,59,0}}, +/* 33775 */ {(14<<2)|2,{61,59,0}}, +/* 33776 */ {(14<<2)|2,{61,88,0}}, +/* 33777 */ {(14<<2)|2,{61,88,0}}, +/* 33778 */ {(14<<2)|2,{61,88,0}}, +/* 33779 */ {(14<<2)|2,{61,88,0}}, +/* 33780 */ {(14<<2)|2,{61,90,0}}, +/* 33781 */ {(14<<2)|2,{61,90,0}}, +/* 33782 */ {(14<<2)|2,{61,90,0}}, +/* 33783 */ {(14<<2)|2,{61,90,0}}, +/* 33784 */ {(16<<2)|2,{61,33,0}}, +/* 33785 */ {(16<<2)|2,{61,34,0}}, +/* 33786 */ {(16<<2)|2,{61,40,0}}, +/* 33787 */ {(16<<2)|2,{61,41,0}}, +/* 33788 */ {(16<<2)|2,{61,63,0}}, +/* 33789 */ {(6<<2)|1,{61,0,0}}, +/* 33790 */ {(6<<2)|1,{61,0,0}}, +/* 33791 */ {(6<<2)|1,{61,0,0}}, +/* 33792 */ {(16<<2)|3,{65,48,48}}, +/* 33793 */ {(16<<2)|3,{65,48,49}}, +/* 33794 */ {(16<<2)|3,{65,48,50}}, +/* 33795 */ {(16<<2)|3,{65,48,97}}, +/* 33796 */ {(16<<2)|3,{65,48,99}}, +/* 33797 */ {(16<<2)|3,{65,48,101}}, +/* 33798 */ {(16<<2)|3,{65,48,105}}, +/* 33799 */ {(16<<2)|3,{65,48,111}}, +/* 33800 */ {(16<<2)|3,{65,48,115}}, +/* 33801 */ {(16<<2)|3,{65,48,116}}, +/* 33802 */ {(11<<2)|2,{65,48,0}}, +/* 33803 */ {(11<<2)|2,{65,48,0}}, +/* 33804 */ {(11<<2)|2,{65,48,0}}, +/* 33805 */ {(11<<2)|2,{65,48,0}}, +/* 33806 */ {(11<<2)|2,{65,48,0}}, +/* 33807 */ {(11<<2)|2,{65,48,0}}, +/* 33808 */ {(11<<2)|2,{65,48,0}}, +/* 33809 */ {(11<<2)|2,{65,48,0}}, +/* 33810 */ {(11<<2)|2,{65,48,0}}, +/* 33811 */ {(11<<2)|2,{65,48,0}}, +/* 33812 */ {(11<<2)|2,{65,48,0}}, +/* 33813 */ {(11<<2)|2,{65,48,0}}, +/* 33814 */ {(11<<2)|2,{65,48,0}}, +/* 33815 */ {(11<<2)|2,{65,48,0}}, +/* 33816 */ {(11<<2)|2,{65,48,0}}, +/* 33817 */ {(11<<2)|2,{65,48,0}}, +/* 33818 */ {(11<<2)|2,{65,48,0}}, +/* 33819 */ {(11<<2)|2,{65,48,0}}, +/* 33820 */ {(11<<2)|2,{65,48,0}}, +/* 33821 */ {(11<<2)|2,{65,48,0}}, +/* 33822 */ {(11<<2)|2,{65,48,0}}, +/* 33823 */ {(11<<2)|2,{65,48,0}}, +/* 33824 */ {(16<<2)|3,{65,49,48}}, +/* 33825 */ {(16<<2)|3,{65,49,49}}, +/* 33826 */ {(16<<2)|3,{65,49,50}}, +/* 33827 */ {(16<<2)|3,{65,49,97}}, +/* 33828 */ {(16<<2)|3,{65,49,99}}, +/* 33829 */ {(16<<2)|3,{65,49,101}}, +/* 33830 */ {(16<<2)|3,{65,49,105}}, +/* 33831 */ {(16<<2)|3,{65,49,111}}, +/* 33832 */ {(16<<2)|3,{65,49,115}}, +/* 33833 */ {(16<<2)|3,{65,49,116}}, +/* 33834 */ {(11<<2)|2,{65,49,0}}, +/* 33835 */ {(11<<2)|2,{65,49,0}}, +/* 33836 */ {(11<<2)|2,{65,49,0}}, +/* 33837 */ {(11<<2)|2,{65,49,0}}, +/* 33838 */ {(11<<2)|2,{65,49,0}}, +/* 33839 */ {(11<<2)|2,{65,49,0}}, +/* 33840 */ {(11<<2)|2,{65,49,0}}, +/* 33841 */ {(11<<2)|2,{65,49,0}}, +/* 33842 */ {(11<<2)|2,{65,49,0}}, +/* 33843 */ {(11<<2)|2,{65,49,0}}, +/* 33844 */ {(11<<2)|2,{65,49,0}}, +/* 33845 */ {(11<<2)|2,{65,49,0}}, +/* 33846 */ {(11<<2)|2,{65,49,0}}, +/* 33847 */ {(11<<2)|2,{65,49,0}}, +/* 33848 */ {(11<<2)|2,{65,49,0}}, +/* 33849 */ {(11<<2)|2,{65,49,0}}, +/* 33850 */ {(11<<2)|2,{65,49,0}}, +/* 33851 */ {(11<<2)|2,{65,49,0}}, +/* 33852 */ {(11<<2)|2,{65,49,0}}, +/* 33853 */ {(11<<2)|2,{65,49,0}}, +/* 33854 */ {(11<<2)|2,{65,49,0}}, +/* 33855 */ {(11<<2)|2,{65,49,0}}, +/* 33856 */ {(16<<2)|3,{65,50,48}}, +/* 33857 */ {(16<<2)|3,{65,50,49}}, +/* 33858 */ {(16<<2)|3,{65,50,50}}, +/* 33859 */ {(16<<2)|3,{65,50,97}}, +/* 33860 */ {(16<<2)|3,{65,50,99}}, +/* 33861 */ {(16<<2)|3,{65,50,101}}, +/* 33862 */ {(16<<2)|3,{65,50,105}}, +/* 33863 */ {(16<<2)|3,{65,50,111}}, +/* 33864 */ {(16<<2)|3,{65,50,115}}, +/* 33865 */ {(16<<2)|3,{65,50,116}}, +/* 33866 */ {(11<<2)|2,{65,50,0}}, +/* 33867 */ {(11<<2)|2,{65,50,0}}, +/* 33868 */ {(11<<2)|2,{65,50,0}}, +/* 33869 */ {(11<<2)|2,{65,50,0}}, +/* 33870 */ {(11<<2)|2,{65,50,0}}, +/* 33871 */ {(11<<2)|2,{65,50,0}}, +/* 33872 */ {(11<<2)|2,{65,50,0}}, +/* 33873 */ {(11<<2)|2,{65,50,0}}, +/* 33874 */ {(11<<2)|2,{65,50,0}}, +/* 33875 */ {(11<<2)|2,{65,50,0}}, +/* 33876 */ {(11<<2)|2,{65,50,0}}, +/* 33877 */ {(11<<2)|2,{65,50,0}}, +/* 33878 */ {(11<<2)|2,{65,50,0}}, +/* 33879 */ {(11<<2)|2,{65,50,0}}, +/* 33880 */ {(11<<2)|2,{65,50,0}}, +/* 33881 */ {(11<<2)|2,{65,50,0}}, +/* 33882 */ {(11<<2)|2,{65,50,0}}, +/* 33883 */ {(11<<2)|2,{65,50,0}}, +/* 33884 */ {(11<<2)|2,{65,50,0}}, +/* 33885 */ {(11<<2)|2,{65,50,0}}, +/* 33886 */ {(11<<2)|2,{65,50,0}}, +/* 33887 */ {(11<<2)|2,{65,50,0}}, +/* 33888 */ {(16<<2)|3,{65,97,48}}, +/* 33889 */ {(16<<2)|3,{65,97,49}}, +/* 33890 */ {(16<<2)|3,{65,97,50}}, +/* 33891 */ {(16<<2)|3,{65,97,97}}, +/* 33892 */ {(16<<2)|3,{65,97,99}}, +/* 33893 */ {(16<<2)|3,{65,97,101}}, +/* 33894 */ {(16<<2)|3,{65,97,105}}, +/* 33895 */ {(16<<2)|3,{65,97,111}}, +/* 33896 */ {(16<<2)|3,{65,97,115}}, +/* 33897 */ {(16<<2)|3,{65,97,116}}, +/* 33898 */ {(11<<2)|2,{65,97,0}}, +/* 33899 */ {(11<<2)|2,{65,97,0}}, +/* 33900 */ {(11<<2)|2,{65,97,0}}, +/* 33901 */ {(11<<2)|2,{65,97,0}}, +/* 33902 */ {(11<<2)|2,{65,97,0}}, +/* 33903 */ {(11<<2)|2,{65,97,0}}, +/* 33904 */ {(11<<2)|2,{65,97,0}}, +/* 33905 */ {(11<<2)|2,{65,97,0}}, +/* 33906 */ {(11<<2)|2,{65,97,0}}, +/* 33907 */ {(11<<2)|2,{65,97,0}}, +/* 33908 */ {(11<<2)|2,{65,97,0}}, +/* 33909 */ {(11<<2)|2,{65,97,0}}, +/* 33910 */ {(11<<2)|2,{65,97,0}}, +/* 33911 */ {(11<<2)|2,{65,97,0}}, +/* 33912 */ {(11<<2)|2,{65,97,0}}, +/* 33913 */ {(11<<2)|2,{65,97,0}}, +/* 33914 */ {(11<<2)|2,{65,97,0}}, +/* 33915 */ {(11<<2)|2,{65,97,0}}, +/* 33916 */ {(11<<2)|2,{65,97,0}}, +/* 33917 */ {(11<<2)|2,{65,97,0}}, +/* 33918 */ {(11<<2)|2,{65,97,0}}, +/* 33919 */ {(11<<2)|2,{65,97,0}}, +/* 33920 */ {(16<<2)|3,{65,99,48}}, +/* 33921 */ {(16<<2)|3,{65,99,49}}, +/* 33922 */ {(16<<2)|3,{65,99,50}}, +/* 33923 */ {(16<<2)|3,{65,99,97}}, +/* 33924 */ {(16<<2)|3,{65,99,99}}, +/* 33925 */ {(16<<2)|3,{65,99,101}}, +/* 33926 */ {(16<<2)|3,{65,99,105}}, +/* 33927 */ {(16<<2)|3,{65,99,111}}, +/* 33928 */ {(16<<2)|3,{65,99,115}}, +/* 33929 */ {(16<<2)|3,{65,99,116}}, +/* 33930 */ {(11<<2)|2,{65,99,0}}, +/* 33931 */ {(11<<2)|2,{65,99,0}}, +/* 33932 */ {(11<<2)|2,{65,99,0}}, +/* 33933 */ {(11<<2)|2,{65,99,0}}, +/* 33934 */ {(11<<2)|2,{65,99,0}}, +/* 33935 */ {(11<<2)|2,{65,99,0}}, +/* 33936 */ {(11<<2)|2,{65,99,0}}, +/* 33937 */ {(11<<2)|2,{65,99,0}}, +/* 33938 */ {(11<<2)|2,{65,99,0}}, +/* 33939 */ {(11<<2)|2,{65,99,0}}, +/* 33940 */ {(11<<2)|2,{65,99,0}}, +/* 33941 */ {(11<<2)|2,{65,99,0}}, +/* 33942 */ {(11<<2)|2,{65,99,0}}, +/* 33943 */ {(11<<2)|2,{65,99,0}}, +/* 33944 */ {(11<<2)|2,{65,99,0}}, +/* 33945 */ {(11<<2)|2,{65,99,0}}, +/* 33946 */ {(11<<2)|2,{65,99,0}}, +/* 33947 */ {(11<<2)|2,{65,99,0}}, +/* 33948 */ {(11<<2)|2,{65,99,0}}, +/* 33949 */ {(11<<2)|2,{65,99,0}}, +/* 33950 */ {(11<<2)|2,{65,99,0}}, +/* 33951 */ {(11<<2)|2,{65,99,0}}, +/* 33952 */ {(16<<2)|3,{65,101,48}}, +/* 33953 */ {(16<<2)|3,{65,101,49}}, +/* 33954 */ {(16<<2)|3,{65,101,50}}, +/* 33955 */ {(16<<2)|3,{65,101,97}}, +/* 33956 */ {(16<<2)|3,{65,101,99}}, +/* 33957 */ {(16<<2)|3,{65,101,101}}, +/* 33958 */ {(16<<2)|3,{65,101,105}}, +/* 33959 */ {(16<<2)|3,{65,101,111}}, +/* 33960 */ {(16<<2)|3,{65,101,115}}, +/* 33961 */ {(16<<2)|3,{65,101,116}}, +/* 33962 */ {(11<<2)|2,{65,101,0}}, +/* 33963 */ {(11<<2)|2,{65,101,0}}, +/* 33964 */ {(11<<2)|2,{65,101,0}}, +/* 33965 */ {(11<<2)|2,{65,101,0}}, +/* 33966 */ {(11<<2)|2,{65,101,0}}, +/* 33967 */ {(11<<2)|2,{65,101,0}}, +/* 33968 */ {(11<<2)|2,{65,101,0}}, +/* 33969 */ {(11<<2)|2,{65,101,0}}, +/* 33970 */ {(11<<2)|2,{65,101,0}}, +/* 33971 */ {(11<<2)|2,{65,101,0}}, +/* 33972 */ {(11<<2)|2,{65,101,0}}, +/* 33973 */ {(11<<2)|2,{65,101,0}}, +/* 33974 */ {(11<<2)|2,{65,101,0}}, +/* 33975 */ {(11<<2)|2,{65,101,0}}, +/* 33976 */ {(11<<2)|2,{65,101,0}}, +/* 33977 */ {(11<<2)|2,{65,101,0}}, +/* 33978 */ {(11<<2)|2,{65,101,0}}, +/* 33979 */ {(11<<2)|2,{65,101,0}}, +/* 33980 */ {(11<<2)|2,{65,101,0}}, +/* 33981 */ {(11<<2)|2,{65,101,0}}, +/* 33982 */ {(11<<2)|2,{65,101,0}}, +/* 33983 */ {(11<<2)|2,{65,101,0}}, +/* 33984 */ {(16<<2)|3,{65,105,48}}, +/* 33985 */ {(16<<2)|3,{65,105,49}}, +/* 33986 */ {(16<<2)|3,{65,105,50}}, +/* 33987 */ {(16<<2)|3,{65,105,97}}, +/* 33988 */ {(16<<2)|3,{65,105,99}}, +/* 33989 */ {(16<<2)|3,{65,105,101}}, +/* 33990 */ {(16<<2)|3,{65,105,105}}, +/* 33991 */ {(16<<2)|3,{65,105,111}}, +/* 33992 */ {(16<<2)|3,{65,105,115}}, +/* 33993 */ {(16<<2)|3,{65,105,116}}, +/* 33994 */ {(11<<2)|2,{65,105,0}}, +/* 33995 */ {(11<<2)|2,{65,105,0}}, +/* 33996 */ {(11<<2)|2,{65,105,0}}, +/* 33997 */ {(11<<2)|2,{65,105,0}}, +/* 33998 */ {(11<<2)|2,{65,105,0}}, +/* 33999 */ {(11<<2)|2,{65,105,0}}, +/* 34000 */ {(11<<2)|2,{65,105,0}}, +/* 34001 */ {(11<<2)|2,{65,105,0}}, +/* 34002 */ {(11<<2)|2,{65,105,0}}, +/* 34003 */ {(11<<2)|2,{65,105,0}}, +/* 34004 */ {(11<<2)|2,{65,105,0}}, +/* 34005 */ {(11<<2)|2,{65,105,0}}, +/* 34006 */ {(11<<2)|2,{65,105,0}}, +/* 34007 */ {(11<<2)|2,{65,105,0}}, +/* 34008 */ {(11<<2)|2,{65,105,0}}, +/* 34009 */ {(11<<2)|2,{65,105,0}}, +/* 34010 */ {(11<<2)|2,{65,105,0}}, +/* 34011 */ {(11<<2)|2,{65,105,0}}, +/* 34012 */ {(11<<2)|2,{65,105,0}}, +/* 34013 */ {(11<<2)|2,{65,105,0}}, +/* 34014 */ {(11<<2)|2,{65,105,0}}, +/* 34015 */ {(11<<2)|2,{65,105,0}}, +/* 34016 */ {(16<<2)|3,{65,111,48}}, +/* 34017 */ {(16<<2)|3,{65,111,49}}, +/* 34018 */ {(16<<2)|3,{65,111,50}}, +/* 34019 */ {(16<<2)|3,{65,111,97}}, +/* 34020 */ {(16<<2)|3,{65,111,99}}, +/* 34021 */ {(16<<2)|3,{65,111,101}}, +/* 34022 */ {(16<<2)|3,{65,111,105}}, +/* 34023 */ {(16<<2)|3,{65,111,111}}, +/* 34024 */ {(16<<2)|3,{65,111,115}}, +/* 34025 */ {(16<<2)|3,{65,111,116}}, +/* 34026 */ {(11<<2)|2,{65,111,0}}, +/* 34027 */ {(11<<2)|2,{65,111,0}}, +/* 34028 */ {(11<<2)|2,{65,111,0}}, +/* 34029 */ {(11<<2)|2,{65,111,0}}, +/* 34030 */ {(11<<2)|2,{65,111,0}}, +/* 34031 */ {(11<<2)|2,{65,111,0}}, +/* 34032 */ {(11<<2)|2,{65,111,0}}, +/* 34033 */ {(11<<2)|2,{65,111,0}}, +/* 34034 */ {(11<<2)|2,{65,111,0}}, +/* 34035 */ {(11<<2)|2,{65,111,0}}, +/* 34036 */ {(11<<2)|2,{65,111,0}}, +/* 34037 */ {(11<<2)|2,{65,111,0}}, +/* 34038 */ {(11<<2)|2,{65,111,0}}, +/* 34039 */ {(11<<2)|2,{65,111,0}}, +/* 34040 */ {(11<<2)|2,{65,111,0}}, +/* 34041 */ {(11<<2)|2,{65,111,0}}, +/* 34042 */ {(11<<2)|2,{65,111,0}}, +/* 34043 */ {(11<<2)|2,{65,111,0}}, +/* 34044 */ {(11<<2)|2,{65,111,0}}, +/* 34045 */ {(11<<2)|2,{65,111,0}}, +/* 34046 */ {(11<<2)|2,{65,111,0}}, +/* 34047 */ {(11<<2)|2,{65,111,0}}, +/* 34048 */ {(16<<2)|3,{65,115,48}}, +/* 34049 */ {(16<<2)|3,{65,115,49}}, +/* 34050 */ {(16<<2)|3,{65,115,50}}, +/* 34051 */ {(16<<2)|3,{65,115,97}}, +/* 34052 */ {(16<<2)|3,{65,115,99}}, +/* 34053 */ {(16<<2)|3,{65,115,101}}, +/* 34054 */ {(16<<2)|3,{65,115,105}}, +/* 34055 */ {(16<<2)|3,{65,115,111}}, +/* 34056 */ {(16<<2)|3,{65,115,115}}, +/* 34057 */ {(16<<2)|3,{65,115,116}}, +/* 34058 */ {(11<<2)|2,{65,115,0}}, +/* 34059 */ {(11<<2)|2,{65,115,0}}, +/* 34060 */ {(11<<2)|2,{65,115,0}}, +/* 34061 */ {(11<<2)|2,{65,115,0}}, +/* 34062 */ {(11<<2)|2,{65,115,0}}, +/* 34063 */ {(11<<2)|2,{65,115,0}}, +/* 34064 */ {(11<<2)|2,{65,115,0}}, +/* 34065 */ {(11<<2)|2,{65,115,0}}, +/* 34066 */ {(11<<2)|2,{65,115,0}}, +/* 34067 */ {(11<<2)|2,{65,115,0}}, +/* 34068 */ {(11<<2)|2,{65,115,0}}, +/* 34069 */ {(11<<2)|2,{65,115,0}}, +/* 34070 */ {(11<<2)|2,{65,115,0}}, +/* 34071 */ {(11<<2)|2,{65,115,0}}, +/* 34072 */ {(11<<2)|2,{65,115,0}}, +/* 34073 */ {(11<<2)|2,{65,115,0}}, +/* 34074 */ {(11<<2)|2,{65,115,0}}, +/* 34075 */ {(11<<2)|2,{65,115,0}}, +/* 34076 */ {(11<<2)|2,{65,115,0}}, +/* 34077 */ {(11<<2)|2,{65,115,0}}, +/* 34078 */ {(11<<2)|2,{65,115,0}}, +/* 34079 */ {(11<<2)|2,{65,115,0}}, +/* 34080 */ {(16<<2)|3,{65,116,48}}, +/* 34081 */ {(16<<2)|3,{65,116,49}}, +/* 34082 */ {(16<<2)|3,{65,116,50}}, +/* 34083 */ {(16<<2)|3,{65,116,97}}, +/* 34084 */ {(16<<2)|3,{65,116,99}}, +/* 34085 */ {(16<<2)|3,{65,116,101}}, +/* 34086 */ {(16<<2)|3,{65,116,105}}, +/* 34087 */ {(16<<2)|3,{65,116,111}}, +/* 34088 */ {(16<<2)|3,{65,116,115}}, +/* 34089 */ {(16<<2)|3,{65,116,116}}, +/* 34090 */ {(11<<2)|2,{65,116,0}}, +/* 34091 */ {(11<<2)|2,{65,116,0}}, +/* 34092 */ {(11<<2)|2,{65,116,0}}, +/* 34093 */ {(11<<2)|2,{65,116,0}}, +/* 34094 */ {(11<<2)|2,{65,116,0}}, +/* 34095 */ {(11<<2)|2,{65,116,0}}, +/* 34096 */ {(11<<2)|2,{65,116,0}}, +/* 34097 */ {(11<<2)|2,{65,116,0}}, +/* 34098 */ {(11<<2)|2,{65,116,0}}, +/* 34099 */ {(11<<2)|2,{65,116,0}}, +/* 34100 */ {(11<<2)|2,{65,116,0}}, +/* 34101 */ {(11<<2)|2,{65,116,0}}, +/* 34102 */ {(11<<2)|2,{65,116,0}}, +/* 34103 */ {(11<<2)|2,{65,116,0}}, +/* 34104 */ {(11<<2)|2,{65,116,0}}, +/* 34105 */ {(11<<2)|2,{65,116,0}}, +/* 34106 */ {(11<<2)|2,{65,116,0}}, +/* 34107 */ {(11<<2)|2,{65,116,0}}, +/* 34108 */ {(11<<2)|2,{65,116,0}}, +/* 34109 */ {(11<<2)|2,{65,116,0}}, +/* 34110 */ {(11<<2)|2,{65,116,0}}, +/* 34111 */ {(11<<2)|2,{65,116,0}}, +/* 34112 */ {(12<<2)|2,{65,32,0}}, +/* 34113 */ {(12<<2)|2,{65,32,0}}, +/* 34114 */ {(12<<2)|2,{65,32,0}}, +/* 34115 */ {(12<<2)|2,{65,32,0}}, +/* 34116 */ {(12<<2)|2,{65,32,0}}, +/* 34117 */ {(12<<2)|2,{65,32,0}}, +/* 34118 */ {(12<<2)|2,{65,32,0}}, +/* 34119 */ {(12<<2)|2,{65,32,0}}, +/* 34120 */ {(12<<2)|2,{65,32,0}}, +/* 34121 */ {(12<<2)|2,{65,32,0}}, +/* 34122 */ {(12<<2)|2,{65,32,0}}, +/* 34123 */ {(12<<2)|2,{65,32,0}}, +/* 34124 */ {(12<<2)|2,{65,32,0}}, +/* 34125 */ {(12<<2)|2,{65,32,0}}, +/* 34126 */ {(12<<2)|2,{65,32,0}}, +/* 34127 */ {(12<<2)|2,{65,32,0}}, +/* 34128 */ {(12<<2)|2,{65,37,0}}, +/* 34129 */ {(12<<2)|2,{65,37,0}}, +/* 34130 */ {(12<<2)|2,{65,37,0}}, +/* 34131 */ {(12<<2)|2,{65,37,0}}, +/* 34132 */ {(12<<2)|2,{65,37,0}}, +/* 34133 */ {(12<<2)|2,{65,37,0}}, +/* 34134 */ {(12<<2)|2,{65,37,0}}, +/* 34135 */ {(12<<2)|2,{65,37,0}}, +/* 34136 */ {(12<<2)|2,{65,37,0}}, +/* 34137 */ {(12<<2)|2,{65,37,0}}, +/* 34138 */ {(12<<2)|2,{65,37,0}}, +/* 34139 */ {(12<<2)|2,{65,37,0}}, +/* 34140 */ {(12<<2)|2,{65,37,0}}, +/* 34141 */ {(12<<2)|2,{65,37,0}}, +/* 34142 */ {(12<<2)|2,{65,37,0}}, +/* 34143 */ {(12<<2)|2,{65,37,0}}, +/* 34144 */ {(12<<2)|2,{65,45,0}}, +/* 34145 */ {(12<<2)|2,{65,45,0}}, +/* 34146 */ {(12<<2)|2,{65,45,0}}, +/* 34147 */ {(12<<2)|2,{65,45,0}}, +/* 34148 */ {(12<<2)|2,{65,45,0}}, +/* 34149 */ {(12<<2)|2,{65,45,0}}, +/* 34150 */ {(12<<2)|2,{65,45,0}}, +/* 34151 */ {(12<<2)|2,{65,45,0}}, +/* 34152 */ {(12<<2)|2,{65,45,0}}, +/* 34153 */ {(12<<2)|2,{65,45,0}}, +/* 34154 */ {(12<<2)|2,{65,45,0}}, +/* 34155 */ {(12<<2)|2,{65,45,0}}, +/* 34156 */ {(12<<2)|2,{65,45,0}}, +/* 34157 */ {(12<<2)|2,{65,45,0}}, +/* 34158 */ {(12<<2)|2,{65,45,0}}, +/* 34159 */ {(12<<2)|2,{65,45,0}}, +/* 34160 */ {(12<<2)|2,{65,46,0}}, +/* 34161 */ {(12<<2)|2,{65,46,0}}, +/* 34162 */ {(12<<2)|2,{65,46,0}}, +/* 34163 */ {(12<<2)|2,{65,46,0}}, +/* 34164 */ {(12<<2)|2,{65,46,0}}, +/* 34165 */ {(12<<2)|2,{65,46,0}}, +/* 34166 */ {(12<<2)|2,{65,46,0}}, +/* 34167 */ {(12<<2)|2,{65,46,0}}, +/* 34168 */ {(12<<2)|2,{65,46,0}}, +/* 34169 */ {(12<<2)|2,{65,46,0}}, +/* 34170 */ {(12<<2)|2,{65,46,0}}, +/* 34171 */ {(12<<2)|2,{65,46,0}}, +/* 34172 */ {(12<<2)|2,{65,46,0}}, +/* 34173 */ {(12<<2)|2,{65,46,0}}, +/* 34174 */ {(12<<2)|2,{65,46,0}}, +/* 34175 */ {(12<<2)|2,{65,46,0}}, +/* 34176 */ {(12<<2)|2,{65,47,0}}, +/* 34177 */ {(12<<2)|2,{65,47,0}}, +/* 34178 */ {(12<<2)|2,{65,47,0}}, +/* 34179 */ {(12<<2)|2,{65,47,0}}, +/* 34180 */ {(12<<2)|2,{65,47,0}}, +/* 34181 */ {(12<<2)|2,{65,47,0}}, +/* 34182 */ {(12<<2)|2,{65,47,0}}, +/* 34183 */ {(12<<2)|2,{65,47,0}}, +/* 34184 */ {(12<<2)|2,{65,47,0}}, +/* 34185 */ {(12<<2)|2,{65,47,0}}, +/* 34186 */ {(12<<2)|2,{65,47,0}}, +/* 34187 */ {(12<<2)|2,{65,47,0}}, +/* 34188 */ {(12<<2)|2,{65,47,0}}, +/* 34189 */ {(12<<2)|2,{65,47,0}}, +/* 34190 */ {(12<<2)|2,{65,47,0}}, +/* 34191 */ {(12<<2)|2,{65,47,0}}, +/* 34192 */ {(12<<2)|2,{65,51,0}}, +/* 34193 */ {(12<<2)|2,{65,51,0}}, +/* 34194 */ {(12<<2)|2,{65,51,0}}, +/* 34195 */ {(12<<2)|2,{65,51,0}}, +/* 34196 */ {(12<<2)|2,{65,51,0}}, +/* 34197 */ {(12<<2)|2,{65,51,0}}, +/* 34198 */ {(12<<2)|2,{65,51,0}}, +/* 34199 */ {(12<<2)|2,{65,51,0}}, +/* 34200 */ {(12<<2)|2,{65,51,0}}, +/* 34201 */ {(12<<2)|2,{65,51,0}}, +/* 34202 */ {(12<<2)|2,{65,51,0}}, +/* 34203 */ {(12<<2)|2,{65,51,0}}, +/* 34204 */ {(12<<2)|2,{65,51,0}}, +/* 34205 */ {(12<<2)|2,{65,51,0}}, +/* 34206 */ {(12<<2)|2,{65,51,0}}, +/* 34207 */ {(12<<2)|2,{65,51,0}}, +/* 34208 */ {(12<<2)|2,{65,52,0}}, +/* 34209 */ {(12<<2)|2,{65,52,0}}, +/* 34210 */ {(12<<2)|2,{65,52,0}}, +/* 34211 */ {(12<<2)|2,{65,52,0}}, +/* 34212 */ {(12<<2)|2,{65,52,0}}, +/* 34213 */ {(12<<2)|2,{65,52,0}}, +/* 34214 */ {(12<<2)|2,{65,52,0}}, +/* 34215 */ {(12<<2)|2,{65,52,0}}, +/* 34216 */ {(12<<2)|2,{65,52,0}}, +/* 34217 */ {(12<<2)|2,{65,52,0}}, +/* 34218 */ {(12<<2)|2,{65,52,0}}, +/* 34219 */ {(12<<2)|2,{65,52,0}}, +/* 34220 */ {(12<<2)|2,{65,52,0}}, +/* 34221 */ {(12<<2)|2,{65,52,0}}, +/* 34222 */ {(12<<2)|2,{65,52,0}}, +/* 34223 */ {(12<<2)|2,{65,52,0}}, +/* 34224 */ {(12<<2)|2,{65,53,0}}, +/* 34225 */ {(12<<2)|2,{65,53,0}}, +/* 34226 */ {(12<<2)|2,{65,53,0}}, +/* 34227 */ {(12<<2)|2,{65,53,0}}, +/* 34228 */ {(12<<2)|2,{65,53,0}}, +/* 34229 */ {(12<<2)|2,{65,53,0}}, +/* 34230 */ {(12<<2)|2,{65,53,0}}, +/* 34231 */ {(12<<2)|2,{65,53,0}}, +/* 34232 */ {(12<<2)|2,{65,53,0}}, +/* 34233 */ {(12<<2)|2,{65,53,0}}, +/* 34234 */ {(12<<2)|2,{65,53,0}}, +/* 34235 */ {(12<<2)|2,{65,53,0}}, +/* 34236 */ {(12<<2)|2,{65,53,0}}, +/* 34237 */ {(12<<2)|2,{65,53,0}}, +/* 34238 */ {(12<<2)|2,{65,53,0}}, +/* 34239 */ {(12<<2)|2,{65,53,0}}, +/* 34240 */ {(12<<2)|2,{65,54,0}}, +/* 34241 */ {(12<<2)|2,{65,54,0}}, +/* 34242 */ {(12<<2)|2,{65,54,0}}, +/* 34243 */ {(12<<2)|2,{65,54,0}}, +/* 34244 */ {(12<<2)|2,{65,54,0}}, +/* 34245 */ {(12<<2)|2,{65,54,0}}, +/* 34246 */ {(12<<2)|2,{65,54,0}}, +/* 34247 */ {(12<<2)|2,{65,54,0}}, +/* 34248 */ {(12<<2)|2,{65,54,0}}, +/* 34249 */ {(12<<2)|2,{65,54,0}}, +/* 34250 */ {(12<<2)|2,{65,54,0}}, +/* 34251 */ {(12<<2)|2,{65,54,0}}, +/* 34252 */ {(12<<2)|2,{65,54,0}}, +/* 34253 */ {(12<<2)|2,{65,54,0}}, +/* 34254 */ {(12<<2)|2,{65,54,0}}, +/* 34255 */ {(12<<2)|2,{65,54,0}}, +/* 34256 */ {(12<<2)|2,{65,55,0}}, +/* 34257 */ {(12<<2)|2,{65,55,0}}, +/* 34258 */ {(12<<2)|2,{65,55,0}}, +/* 34259 */ {(12<<2)|2,{65,55,0}}, +/* 34260 */ {(12<<2)|2,{65,55,0}}, +/* 34261 */ {(12<<2)|2,{65,55,0}}, +/* 34262 */ {(12<<2)|2,{65,55,0}}, +/* 34263 */ {(12<<2)|2,{65,55,0}}, +/* 34264 */ {(12<<2)|2,{65,55,0}}, +/* 34265 */ {(12<<2)|2,{65,55,0}}, +/* 34266 */ {(12<<2)|2,{65,55,0}}, +/* 34267 */ {(12<<2)|2,{65,55,0}}, +/* 34268 */ {(12<<2)|2,{65,55,0}}, +/* 34269 */ {(12<<2)|2,{65,55,0}}, +/* 34270 */ {(12<<2)|2,{65,55,0}}, +/* 34271 */ {(12<<2)|2,{65,55,0}}, +/* 34272 */ {(12<<2)|2,{65,56,0}}, +/* 34273 */ {(12<<2)|2,{65,56,0}}, +/* 34274 */ {(12<<2)|2,{65,56,0}}, +/* 34275 */ {(12<<2)|2,{65,56,0}}, +/* 34276 */ {(12<<2)|2,{65,56,0}}, +/* 34277 */ {(12<<2)|2,{65,56,0}}, +/* 34278 */ {(12<<2)|2,{65,56,0}}, +/* 34279 */ {(12<<2)|2,{65,56,0}}, +/* 34280 */ {(12<<2)|2,{65,56,0}}, +/* 34281 */ {(12<<2)|2,{65,56,0}}, +/* 34282 */ {(12<<2)|2,{65,56,0}}, +/* 34283 */ {(12<<2)|2,{65,56,0}}, +/* 34284 */ {(12<<2)|2,{65,56,0}}, +/* 34285 */ {(12<<2)|2,{65,56,0}}, +/* 34286 */ {(12<<2)|2,{65,56,0}}, +/* 34287 */ {(12<<2)|2,{65,56,0}}, +/* 34288 */ {(12<<2)|2,{65,57,0}}, +/* 34289 */ {(12<<2)|2,{65,57,0}}, +/* 34290 */ {(12<<2)|2,{65,57,0}}, +/* 34291 */ {(12<<2)|2,{65,57,0}}, +/* 34292 */ {(12<<2)|2,{65,57,0}}, +/* 34293 */ {(12<<2)|2,{65,57,0}}, +/* 34294 */ {(12<<2)|2,{65,57,0}}, +/* 34295 */ {(12<<2)|2,{65,57,0}}, +/* 34296 */ {(12<<2)|2,{65,57,0}}, +/* 34297 */ {(12<<2)|2,{65,57,0}}, +/* 34298 */ {(12<<2)|2,{65,57,0}}, +/* 34299 */ {(12<<2)|2,{65,57,0}}, +/* 34300 */ {(12<<2)|2,{65,57,0}}, +/* 34301 */ {(12<<2)|2,{65,57,0}}, +/* 34302 */ {(12<<2)|2,{65,57,0}}, +/* 34303 */ {(12<<2)|2,{65,57,0}}, +/* 34304 */ {(12<<2)|2,{65,61,0}}, +/* 34305 */ {(12<<2)|2,{65,61,0}}, +/* 34306 */ {(12<<2)|2,{65,61,0}}, +/* 34307 */ {(12<<2)|2,{65,61,0}}, +/* 34308 */ {(12<<2)|2,{65,61,0}}, +/* 34309 */ {(12<<2)|2,{65,61,0}}, +/* 34310 */ {(12<<2)|2,{65,61,0}}, +/* 34311 */ {(12<<2)|2,{65,61,0}}, +/* 34312 */ {(12<<2)|2,{65,61,0}}, +/* 34313 */ {(12<<2)|2,{65,61,0}}, +/* 34314 */ {(12<<2)|2,{65,61,0}}, +/* 34315 */ {(12<<2)|2,{65,61,0}}, +/* 34316 */ {(12<<2)|2,{65,61,0}}, +/* 34317 */ {(12<<2)|2,{65,61,0}}, +/* 34318 */ {(12<<2)|2,{65,61,0}}, +/* 34319 */ {(12<<2)|2,{65,61,0}}, +/* 34320 */ {(12<<2)|2,{65,65,0}}, +/* 34321 */ {(12<<2)|2,{65,65,0}}, +/* 34322 */ {(12<<2)|2,{65,65,0}}, +/* 34323 */ {(12<<2)|2,{65,65,0}}, +/* 34324 */ {(12<<2)|2,{65,65,0}}, +/* 34325 */ {(12<<2)|2,{65,65,0}}, +/* 34326 */ {(12<<2)|2,{65,65,0}}, +/* 34327 */ {(12<<2)|2,{65,65,0}}, +/* 34328 */ {(12<<2)|2,{65,65,0}}, +/* 34329 */ {(12<<2)|2,{65,65,0}}, +/* 34330 */ {(12<<2)|2,{65,65,0}}, +/* 34331 */ {(12<<2)|2,{65,65,0}}, +/* 34332 */ {(12<<2)|2,{65,65,0}}, +/* 34333 */ {(12<<2)|2,{65,65,0}}, +/* 34334 */ {(12<<2)|2,{65,65,0}}, +/* 34335 */ {(12<<2)|2,{65,65,0}}, +/* 34336 */ {(12<<2)|2,{65,95,0}}, +/* 34337 */ {(12<<2)|2,{65,95,0}}, +/* 34338 */ {(12<<2)|2,{65,95,0}}, +/* 34339 */ {(12<<2)|2,{65,95,0}}, +/* 34340 */ {(12<<2)|2,{65,95,0}}, +/* 34341 */ {(12<<2)|2,{65,95,0}}, +/* 34342 */ {(12<<2)|2,{65,95,0}}, +/* 34343 */ {(12<<2)|2,{65,95,0}}, +/* 34344 */ {(12<<2)|2,{65,95,0}}, +/* 34345 */ {(12<<2)|2,{65,95,0}}, +/* 34346 */ {(12<<2)|2,{65,95,0}}, +/* 34347 */ {(12<<2)|2,{65,95,0}}, +/* 34348 */ {(12<<2)|2,{65,95,0}}, +/* 34349 */ {(12<<2)|2,{65,95,0}}, +/* 34350 */ {(12<<2)|2,{65,95,0}}, +/* 34351 */ {(12<<2)|2,{65,95,0}}, +/* 34352 */ {(12<<2)|2,{65,98,0}}, +/* 34353 */ {(12<<2)|2,{65,98,0}}, +/* 34354 */ {(12<<2)|2,{65,98,0}}, +/* 34355 */ {(12<<2)|2,{65,98,0}}, +/* 34356 */ {(12<<2)|2,{65,98,0}}, +/* 34357 */ {(12<<2)|2,{65,98,0}}, +/* 34358 */ {(12<<2)|2,{65,98,0}}, +/* 34359 */ {(12<<2)|2,{65,98,0}}, +/* 34360 */ {(12<<2)|2,{65,98,0}}, +/* 34361 */ {(12<<2)|2,{65,98,0}}, +/* 34362 */ {(12<<2)|2,{65,98,0}}, +/* 34363 */ {(12<<2)|2,{65,98,0}}, +/* 34364 */ {(12<<2)|2,{65,98,0}}, +/* 34365 */ {(12<<2)|2,{65,98,0}}, +/* 34366 */ {(12<<2)|2,{65,98,0}}, +/* 34367 */ {(12<<2)|2,{65,98,0}}, +/* 34368 */ {(12<<2)|2,{65,100,0}}, +/* 34369 */ {(12<<2)|2,{65,100,0}}, +/* 34370 */ {(12<<2)|2,{65,100,0}}, +/* 34371 */ {(12<<2)|2,{65,100,0}}, +/* 34372 */ {(12<<2)|2,{65,100,0}}, +/* 34373 */ {(12<<2)|2,{65,100,0}}, +/* 34374 */ {(12<<2)|2,{65,100,0}}, +/* 34375 */ {(12<<2)|2,{65,100,0}}, +/* 34376 */ {(12<<2)|2,{65,100,0}}, +/* 34377 */ {(12<<2)|2,{65,100,0}}, +/* 34378 */ {(12<<2)|2,{65,100,0}}, +/* 34379 */ {(12<<2)|2,{65,100,0}}, +/* 34380 */ {(12<<2)|2,{65,100,0}}, +/* 34381 */ {(12<<2)|2,{65,100,0}}, +/* 34382 */ {(12<<2)|2,{65,100,0}}, +/* 34383 */ {(12<<2)|2,{65,100,0}}, +/* 34384 */ {(12<<2)|2,{65,102,0}}, +/* 34385 */ {(12<<2)|2,{65,102,0}}, +/* 34386 */ {(12<<2)|2,{65,102,0}}, +/* 34387 */ {(12<<2)|2,{65,102,0}}, +/* 34388 */ {(12<<2)|2,{65,102,0}}, +/* 34389 */ {(12<<2)|2,{65,102,0}}, +/* 34390 */ {(12<<2)|2,{65,102,0}}, +/* 34391 */ {(12<<2)|2,{65,102,0}}, +/* 34392 */ {(12<<2)|2,{65,102,0}}, +/* 34393 */ {(12<<2)|2,{65,102,0}}, +/* 34394 */ {(12<<2)|2,{65,102,0}}, +/* 34395 */ {(12<<2)|2,{65,102,0}}, +/* 34396 */ {(12<<2)|2,{65,102,0}}, +/* 34397 */ {(12<<2)|2,{65,102,0}}, +/* 34398 */ {(12<<2)|2,{65,102,0}}, +/* 34399 */ {(12<<2)|2,{65,102,0}}, +/* 34400 */ {(12<<2)|2,{65,103,0}}, +/* 34401 */ {(12<<2)|2,{65,103,0}}, +/* 34402 */ {(12<<2)|2,{65,103,0}}, +/* 34403 */ {(12<<2)|2,{65,103,0}}, +/* 34404 */ {(12<<2)|2,{65,103,0}}, +/* 34405 */ {(12<<2)|2,{65,103,0}}, +/* 34406 */ {(12<<2)|2,{65,103,0}}, +/* 34407 */ {(12<<2)|2,{65,103,0}}, +/* 34408 */ {(12<<2)|2,{65,103,0}}, +/* 34409 */ {(12<<2)|2,{65,103,0}}, +/* 34410 */ {(12<<2)|2,{65,103,0}}, +/* 34411 */ {(12<<2)|2,{65,103,0}}, +/* 34412 */ {(12<<2)|2,{65,103,0}}, +/* 34413 */ {(12<<2)|2,{65,103,0}}, +/* 34414 */ {(12<<2)|2,{65,103,0}}, +/* 34415 */ {(12<<2)|2,{65,103,0}}, +/* 34416 */ {(12<<2)|2,{65,104,0}}, +/* 34417 */ {(12<<2)|2,{65,104,0}}, +/* 34418 */ {(12<<2)|2,{65,104,0}}, +/* 34419 */ {(12<<2)|2,{65,104,0}}, +/* 34420 */ {(12<<2)|2,{65,104,0}}, +/* 34421 */ {(12<<2)|2,{65,104,0}}, +/* 34422 */ {(12<<2)|2,{65,104,0}}, +/* 34423 */ {(12<<2)|2,{65,104,0}}, +/* 34424 */ {(12<<2)|2,{65,104,0}}, +/* 34425 */ {(12<<2)|2,{65,104,0}}, +/* 34426 */ {(12<<2)|2,{65,104,0}}, +/* 34427 */ {(12<<2)|2,{65,104,0}}, +/* 34428 */ {(12<<2)|2,{65,104,0}}, +/* 34429 */ {(12<<2)|2,{65,104,0}}, +/* 34430 */ {(12<<2)|2,{65,104,0}}, +/* 34431 */ {(12<<2)|2,{65,104,0}}, +/* 34432 */ {(12<<2)|2,{65,108,0}}, +/* 34433 */ {(12<<2)|2,{65,108,0}}, +/* 34434 */ {(12<<2)|2,{65,108,0}}, +/* 34435 */ {(12<<2)|2,{65,108,0}}, +/* 34436 */ {(12<<2)|2,{65,108,0}}, +/* 34437 */ {(12<<2)|2,{65,108,0}}, +/* 34438 */ {(12<<2)|2,{65,108,0}}, +/* 34439 */ {(12<<2)|2,{65,108,0}}, +/* 34440 */ {(12<<2)|2,{65,108,0}}, +/* 34441 */ {(12<<2)|2,{65,108,0}}, +/* 34442 */ {(12<<2)|2,{65,108,0}}, +/* 34443 */ {(12<<2)|2,{65,108,0}}, +/* 34444 */ {(12<<2)|2,{65,108,0}}, +/* 34445 */ {(12<<2)|2,{65,108,0}}, +/* 34446 */ {(12<<2)|2,{65,108,0}}, +/* 34447 */ {(12<<2)|2,{65,108,0}}, +/* 34448 */ {(12<<2)|2,{65,109,0}}, +/* 34449 */ {(12<<2)|2,{65,109,0}}, +/* 34450 */ {(12<<2)|2,{65,109,0}}, +/* 34451 */ {(12<<2)|2,{65,109,0}}, +/* 34452 */ {(12<<2)|2,{65,109,0}}, +/* 34453 */ {(12<<2)|2,{65,109,0}}, +/* 34454 */ {(12<<2)|2,{65,109,0}}, +/* 34455 */ {(12<<2)|2,{65,109,0}}, +/* 34456 */ {(12<<2)|2,{65,109,0}}, +/* 34457 */ {(12<<2)|2,{65,109,0}}, +/* 34458 */ {(12<<2)|2,{65,109,0}}, +/* 34459 */ {(12<<2)|2,{65,109,0}}, +/* 34460 */ {(12<<2)|2,{65,109,0}}, +/* 34461 */ {(12<<2)|2,{65,109,0}}, +/* 34462 */ {(12<<2)|2,{65,109,0}}, +/* 34463 */ {(12<<2)|2,{65,109,0}}, +/* 34464 */ {(12<<2)|2,{65,110,0}}, +/* 34465 */ {(12<<2)|2,{65,110,0}}, +/* 34466 */ {(12<<2)|2,{65,110,0}}, +/* 34467 */ {(12<<2)|2,{65,110,0}}, +/* 34468 */ {(12<<2)|2,{65,110,0}}, +/* 34469 */ {(12<<2)|2,{65,110,0}}, +/* 34470 */ {(12<<2)|2,{65,110,0}}, +/* 34471 */ {(12<<2)|2,{65,110,0}}, +/* 34472 */ {(12<<2)|2,{65,110,0}}, +/* 34473 */ {(12<<2)|2,{65,110,0}}, +/* 34474 */ {(12<<2)|2,{65,110,0}}, +/* 34475 */ {(12<<2)|2,{65,110,0}}, +/* 34476 */ {(12<<2)|2,{65,110,0}}, +/* 34477 */ {(12<<2)|2,{65,110,0}}, +/* 34478 */ {(12<<2)|2,{65,110,0}}, +/* 34479 */ {(12<<2)|2,{65,110,0}}, +/* 34480 */ {(12<<2)|2,{65,112,0}}, +/* 34481 */ {(12<<2)|2,{65,112,0}}, +/* 34482 */ {(12<<2)|2,{65,112,0}}, +/* 34483 */ {(12<<2)|2,{65,112,0}}, +/* 34484 */ {(12<<2)|2,{65,112,0}}, +/* 34485 */ {(12<<2)|2,{65,112,0}}, +/* 34486 */ {(12<<2)|2,{65,112,0}}, +/* 34487 */ {(12<<2)|2,{65,112,0}}, +/* 34488 */ {(12<<2)|2,{65,112,0}}, +/* 34489 */ {(12<<2)|2,{65,112,0}}, +/* 34490 */ {(12<<2)|2,{65,112,0}}, +/* 34491 */ {(12<<2)|2,{65,112,0}}, +/* 34492 */ {(12<<2)|2,{65,112,0}}, +/* 34493 */ {(12<<2)|2,{65,112,0}}, +/* 34494 */ {(12<<2)|2,{65,112,0}}, +/* 34495 */ {(12<<2)|2,{65,112,0}}, +/* 34496 */ {(12<<2)|2,{65,114,0}}, +/* 34497 */ {(12<<2)|2,{65,114,0}}, +/* 34498 */ {(12<<2)|2,{65,114,0}}, +/* 34499 */ {(12<<2)|2,{65,114,0}}, +/* 34500 */ {(12<<2)|2,{65,114,0}}, +/* 34501 */ {(12<<2)|2,{65,114,0}}, +/* 34502 */ {(12<<2)|2,{65,114,0}}, +/* 34503 */ {(12<<2)|2,{65,114,0}}, +/* 34504 */ {(12<<2)|2,{65,114,0}}, +/* 34505 */ {(12<<2)|2,{65,114,0}}, +/* 34506 */ {(12<<2)|2,{65,114,0}}, +/* 34507 */ {(12<<2)|2,{65,114,0}}, +/* 34508 */ {(12<<2)|2,{65,114,0}}, +/* 34509 */ {(12<<2)|2,{65,114,0}}, +/* 34510 */ {(12<<2)|2,{65,114,0}}, +/* 34511 */ {(12<<2)|2,{65,114,0}}, +/* 34512 */ {(12<<2)|2,{65,117,0}}, +/* 34513 */ {(12<<2)|2,{65,117,0}}, +/* 34514 */ {(12<<2)|2,{65,117,0}}, +/* 34515 */ {(12<<2)|2,{65,117,0}}, +/* 34516 */ {(12<<2)|2,{65,117,0}}, +/* 34517 */ {(12<<2)|2,{65,117,0}}, +/* 34518 */ {(12<<2)|2,{65,117,0}}, +/* 34519 */ {(12<<2)|2,{65,117,0}}, +/* 34520 */ {(12<<2)|2,{65,117,0}}, +/* 34521 */ {(12<<2)|2,{65,117,0}}, +/* 34522 */ {(12<<2)|2,{65,117,0}}, +/* 34523 */ {(12<<2)|2,{65,117,0}}, +/* 34524 */ {(12<<2)|2,{65,117,0}}, +/* 34525 */ {(12<<2)|2,{65,117,0}}, +/* 34526 */ {(12<<2)|2,{65,117,0}}, +/* 34527 */ {(12<<2)|2,{65,117,0}}, +/* 34528 */ {(13<<2)|2,{65,58,0}}, +/* 34529 */ {(13<<2)|2,{65,58,0}}, +/* 34530 */ {(13<<2)|2,{65,58,0}}, +/* 34531 */ {(13<<2)|2,{65,58,0}}, +/* 34532 */ {(13<<2)|2,{65,58,0}}, +/* 34533 */ {(13<<2)|2,{65,58,0}}, +/* 34534 */ {(13<<2)|2,{65,58,0}}, +/* 34535 */ {(13<<2)|2,{65,58,0}}, +/* 34536 */ {(13<<2)|2,{65,66,0}}, +/* 34537 */ {(13<<2)|2,{65,66,0}}, +/* 34538 */ {(13<<2)|2,{65,66,0}}, +/* 34539 */ {(13<<2)|2,{65,66,0}}, +/* 34540 */ {(13<<2)|2,{65,66,0}}, +/* 34541 */ {(13<<2)|2,{65,66,0}}, +/* 34542 */ {(13<<2)|2,{65,66,0}}, +/* 34543 */ {(13<<2)|2,{65,66,0}}, +/* 34544 */ {(13<<2)|2,{65,67,0}}, +/* 34545 */ {(13<<2)|2,{65,67,0}}, +/* 34546 */ {(13<<2)|2,{65,67,0}}, +/* 34547 */ {(13<<2)|2,{65,67,0}}, +/* 34548 */ {(13<<2)|2,{65,67,0}}, +/* 34549 */ {(13<<2)|2,{65,67,0}}, +/* 34550 */ {(13<<2)|2,{65,67,0}}, +/* 34551 */ {(13<<2)|2,{65,67,0}}, +/* 34552 */ {(13<<2)|2,{65,68,0}}, +/* 34553 */ {(13<<2)|2,{65,68,0}}, +/* 34554 */ {(13<<2)|2,{65,68,0}}, +/* 34555 */ {(13<<2)|2,{65,68,0}}, +/* 34556 */ {(13<<2)|2,{65,68,0}}, +/* 34557 */ {(13<<2)|2,{65,68,0}}, +/* 34558 */ {(13<<2)|2,{65,68,0}}, +/* 34559 */ {(13<<2)|2,{65,68,0}}, +/* 34560 */ {(13<<2)|2,{65,69,0}}, +/* 34561 */ {(13<<2)|2,{65,69,0}}, +/* 34562 */ {(13<<2)|2,{65,69,0}}, +/* 34563 */ {(13<<2)|2,{65,69,0}}, +/* 34564 */ {(13<<2)|2,{65,69,0}}, +/* 34565 */ {(13<<2)|2,{65,69,0}}, +/* 34566 */ {(13<<2)|2,{65,69,0}}, +/* 34567 */ {(13<<2)|2,{65,69,0}}, +/* 34568 */ {(13<<2)|2,{65,70,0}}, +/* 34569 */ {(13<<2)|2,{65,70,0}}, +/* 34570 */ {(13<<2)|2,{65,70,0}}, +/* 34571 */ {(13<<2)|2,{65,70,0}}, +/* 34572 */ {(13<<2)|2,{65,70,0}}, +/* 34573 */ {(13<<2)|2,{65,70,0}}, +/* 34574 */ {(13<<2)|2,{65,70,0}}, +/* 34575 */ {(13<<2)|2,{65,70,0}}, +/* 34576 */ {(13<<2)|2,{65,71,0}}, +/* 34577 */ {(13<<2)|2,{65,71,0}}, +/* 34578 */ {(13<<2)|2,{65,71,0}}, +/* 34579 */ {(13<<2)|2,{65,71,0}}, +/* 34580 */ {(13<<2)|2,{65,71,0}}, +/* 34581 */ {(13<<2)|2,{65,71,0}}, +/* 34582 */ {(13<<2)|2,{65,71,0}}, +/* 34583 */ {(13<<2)|2,{65,71,0}}, +/* 34584 */ {(13<<2)|2,{65,72,0}}, +/* 34585 */ {(13<<2)|2,{65,72,0}}, +/* 34586 */ {(13<<2)|2,{65,72,0}}, +/* 34587 */ {(13<<2)|2,{65,72,0}}, +/* 34588 */ {(13<<2)|2,{65,72,0}}, +/* 34589 */ {(13<<2)|2,{65,72,0}}, +/* 34590 */ {(13<<2)|2,{65,72,0}}, +/* 34591 */ {(13<<2)|2,{65,72,0}}, +/* 34592 */ {(13<<2)|2,{65,73,0}}, +/* 34593 */ {(13<<2)|2,{65,73,0}}, +/* 34594 */ {(13<<2)|2,{65,73,0}}, +/* 34595 */ {(13<<2)|2,{65,73,0}}, +/* 34596 */ {(13<<2)|2,{65,73,0}}, +/* 34597 */ {(13<<2)|2,{65,73,0}}, +/* 34598 */ {(13<<2)|2,{65,73,0}}, +/* 34599 */ {(13<<2)|2,{65,73,0}}, +/* 34600 */ {(13<<2)|2,{65,74,0}}, +/* 34601 */ {(13<<2)|2,{65,74,0}}, +/* 34602 */ {(13<<2)|2,{65,74,0}}, +/* 34603 */ {(13<<2)|2,{65,74,0}}, +/* 34604 */ {(13<<2)|2,{65,74,0}}, +/* 34605 */ {(13<<2)|2,{65,74,0}}, +/* 34606 */ {(13<<2)|2,{65,74,0}}, +/* 34607 */ {(13<<2)|2,{65,74,0}}, +/* 34608 */ {(13<<2)|2,{65,75,0}}, +/* 34609 */ {(13<<2)|2,{65,75,0}}, +/* 34610 */ {(13<<2)|2,{65,75,0}}, +/* 34611 */ {(13<<2)|2,{65,75,0}}, +/* 34612 */ {(13<<2)|2,{65,75,0}}, +/* 34613 */ {(13<<2)|2,{65,75,0}}, +/* 34614 */ {(13<<2)|2,{65,75,0}}, +/* 34615 */ {(13<<2)|2,{65,75,0}}, +/* 34616 */ {(13<<2)|2,{65,76,0}}, +/* 34617 */ {(13<<2)|2,{65,76,0}}, +/* 34618 */ {(13<<2)|2,{65,76,0}}, +/* 34619 */ {(13<<2)|2,{65,76,0}}, +/* 34620 */ {(13<<2)|2,{65,76,0}}, +/* 34621 */ {(13<<2)|2,{65,76,0}}, +/* 34622 */ {(13<<2)|2,{65,76,0}}, +/* 34623 */ {(13<<2)|2,{65,76,0}}, +/* 34624 */ {(13<<2)|2,{65,77,0}}, +/* 34625 */ {(13<<2)|2,{65,77,0}}, +/* 34626 */ {(13<<2)|2,{65,77,0}}, +/* 34627 */ {(13<<2)|2,{65,77,0}}, +/* 34628 */ {(13<<2)|2,{65,77,0}}, +/* 34629 */ {(13<<2)|2,{65,77,0}}, +/* 34630 */ {(13<<2)|2,{65,77,0}}, +/* 34631 */ {(13<<2)|2,{65,77,0}}, +/* 34632 */ {(13<<2)|2,{65,78,0}}, +/* 34633 */ {(13<<2)|2,{65,78,0}}, +/* 34634 */ {(13<<2)|2,{65,78,0}}, +/* 34635 */ {(13<<2)|2,{65,78,0}}, +/* 34636 */ {(13<<2)|2,{65,78,0}}, +/* 34637 */ {(13<<2)|2,{65,78,0}}, +/* 34638 */ {(13<<2)|2,{65,78,0}}, +/* 34639 */ {(13<<2)|2,{65,78,0}}, +/* 34640 */ {(13<<2)|2,{65,79,0}}, +/* 34641 */ {(13<<2)|2,{65,79,0}}, +/* 34642 */ {(13<<2)|2,{65,79,0}}, +/* 34643 */ {(13<<2)|2,{65,79,0}}, +/* 34644 */ {(13<<2)|2,{65,79,0}}, +/* 34645 */ {(13<<2)|2,{65,79,0}}, +/* 34646 */ {(13<<2)|2,{65,79,0}}, +/* 34647 */ {(13<<2)|2,{65,79,0}}, +/* 34648 */ {(13<<2)|2,{65,80,0}}, +/* 34649 */ {(13<<2)|2,{65,80,0}}, +/* 34650 */ {(13<<2)|2,{65,80,0}}, +/* 34651 */ {(13<<2)|2,{65,80,0}}, +/* 34652 */ {(13<<2)|2,{65,80,0}}, +/* 34653 */ {(13<<2)|2,{65,80,0}}, +/* 34654 */ {(13<<2)|2,{65,80,0}}, +/* 34655 */ {(13<<2)|2,{65,80,0}}, +/* 34656 */ {(13<<2)|2,{65,81,0}}, +/* 34657 */ {(13<<2)|2,{65,81,0}}, +/* 34658 */ {(13<<2)|2,{65,81,0}}, +/* 34659 */ {(13<<2)|2,{65,81,0}}, +/* 34660 */ {(13<<2)|2,{65,81,0}}, +/* 34661 */ {(13<<2)|2,{65,81,0}}, +/* 34662 */ {(13<<2)|2,{65,81,0}}, +/* 34663 */ {(13<<2)|2,{65,81,0}}, +/* 34664 */ {(13<<2)|2,{65,82,0}}, +/* 34665 */ {(13<<2)|2,{65,82,0}}, +/* 34666 */ {(13<<2)|2,{65,82,0}}, +/* 34667 */ {(13<<2)|2,{65,82,0}}, +/* 34668 */ {(13<<2)|2,{65,82,0}}, +/* 34669 */ {(13<<2)|2,{65,82,0}}, +/* 34670 */ {(13<<2)|2,{65,82,0}}, +/* 34671 */ {(13<<2)|2,{65,82,0}}, +/* 34672 */ {(13<<2)|2,{65,83,0}}, +/* 34673 */ {(13<<2)|2,{65,83,0}}, +/* 34674 */ {(13<<2)|2,{65,83,0}}, +/* 34675 */ {(13<<2)|2,{65,83,0}}, +/* 34676 */ {(13<<2)|2,{65,83,0}}, +/* 34677 */ {(13<<2)|2,{65,83,0}}, +/* 34678 */ {(13<<2)|2,{65,83,0}}, +/* 34679 */ {(13<<2)|2,{65,83,0}}, +/* 34680 */ {(13<<2)|2,{65,84,0}}, +/* 34681 */ {(13<<2)|2,{65,84,0}}, +/* 34682 */ {(13<<2)|2,{65,84,0}}, +/* 34683 */ {(13<<2)|2,{65,84,0}}, +/* 34684 */ {(13<<2)|2,{65,84,0}}, +/* 34685 */ {(13<<2)|2,{65,84,0}}, +/* 34686 */ {(13<<2)|2,{65,84,0}}, +/* 34687 */ {(13<<2)|2,{65,84,0}}, +/* 34688 */ {(13<<2)|2,{65,85,0}}, +/* 34689 */ {(13<<2)|2,{65,85,0}}, +/* 34690 */ {(13<<2)|2,{65,85,0}}, +/* 34691 */ {(13<<2)|2,{65,85,0}}, +/* 34692 */ {(13<<2)|2,{65,85,0}}, +/* 34693 */ {(13<<2)|2,{65,85,0}}, +/* 34694 */ {(13<<2)|2,{65,85,0}}, +/* 34695 */ {(13<<2)|2,{65,85,0}}, +/* 34696 */ {(13<<2)|2,{65,86,0}}, +/* 34697 */ {(13<<2)|2,{65,86,0}}, +/* 34698 */ {(13<<2)|2,{65,86,0}}, +/* 34699 */ {(13<<2)|2,{65,86,0}}, +/* 34700 */ {(13<<2)|2,{65,86,0}}, +/* 34701 */ {(13<<2)|2,{65,86,0}}, +/* 34702 */ {(13<<2)|2,{65,86,0}}, +/* 34703 */ {(13<<2)|2,{65,86,0}}, +/* 34704 */ {(13<<2)|2,{65,87,0}}, +/* 34705 */ {(13<<2)|2,{65,87,0}}, +/* 34706 */ {(13<<2)|2,{65,87,0}}, +/* 34707 */ {(13<<2)|2,{65,87,0}}, +/* 34708 */ {(13<<2)|2,{65,87,0}}, +/* 34709 */ {(13<<2)|2,{65,87,0}}, +/* 34710 */ {(13<<2)|2,{65,87,0}}, +/* 34711 */ {(13<<2)|2,{65,87,0}}, +/* 34712 */ {(13<<2)|2,{65,89,0}}, +/* 34713 */ {(13<<2)|2,{65,89,0}}, +/* 34714 */ {(13<<2)|2,{65,89,0}}, +/* 34715 */ {(13<<2)|2,{65,89,0}}, +/* 34716 */ {(13<<2)|2,{65,89,0}}, +/* 34717 */ {(13<<2)|2,{65,89,0}}, +/* 34718 */ {(13<<2)|2,{65,89,0}}, +/* 34719 */ {(13<<2)|2,{65,89,0}}, +/* 34720 */ {(13<<2)|2,{65,106,0}}, +/* 34721 */ {(13<<2)|2,{65,106,0}}, +/* 34722 */ {(13<<2)|2,{65,106,0}}, +/* 34723 */ {(13<<2)|2,{65,106,0}}, +/* 34724 */ {(13<<2)|2,{65,106,0}}, +/* 34725 */ {(13<<2)|2,{65,106,0}}, +/* 34726 */ {(13<<2)|2,{65,106,0}}, +/* 34727 */ {(13<<2)|2,{65,106,0}}, +/* 34728 */ {(13<<2)|2,{65,107,0}}, +/* 34729 */ {(13<<2)|2,{65,107,0}}, +/* 34730 */ {(13<<2)|2,{65,107,0}}, +/* 34731 */ {(13<<2)|2,{65,107,0}}, +/* 34732 */ {(13<<2)|2,{65,107,0}}, +/* 34733 */ {(13<<2)|2,{65,107,0}}, +/* 34734 */ {(13<<2)|2,{65,107,0}}, +/* 34735 */ {(13<<2)|2,{65,107,0}}, +/* 34736 */ {(13<<2)|2,{65,113,0}}, +/* 34737 */ {(13<<2)|2,{65,113,0}}, +/* 34738 */ {(13<<2)|2,{65,113,0}}, +/* 34739 */ {(13<<2)|2,{65,113,0}}, +/* 34740 */ {(13<<2)|2,{65,113,0}}, +/* 34741 */ {(13<<2)|2,{65,113,0}}, +/* 34742 */ {(13<<2)|2,{65,113,0}}, +/* 34743 */ {(13<<2)|2,{65,113,0}}, +/* 34744 */ {(13<<2)|2,{65,118,0}}, +/* 34745 */ {(13<<2)|2,{65,118,0}}, +/* 34746 */ {(13<<2)|2,{65,118,0}}, +/* 34747 */ {(13<<2)|2,{65,118,0}}, +/* 34748 */ {(13<<2)|2,{65,118,0}}, +/* 34749 */ {(13<<2)|2,{65,118,0}}, +/* 34750 */ {(13<<2)|2,{65,118,0}}, +/* 34751 */ {(13<<2)|2,{65,118,0}}, +/* 34752 */ {(13<<2)|2,{65,119,0}}, +/* 34753 */ {(13<<2)|2,{65,119,0}}, +/* 34754 */ {(13<<2)|2,{65,119,0}}, +/* 34755 */ {(13<<2)|2,{65,119,0}}, +/* 34756 */ {(13<<2)|2,{65,119,0}}, +/* 34757 */ {(13<<2)|2,{65,119,0}}, +/* 34758 */ {(13<<2)|2,{65,119,0}}, +/* 34759 */ {(13<<2)|2,{65,119,0}}, +/* 34760 */ {(13<<2)|2,{65,120,0}}, +/* 34761 */ {(13<<2)|2,{65,120,0}}, +/* 34762 */ {(13<<2)|2,{65,120,0}}, +/* 34763 */ {(13<<2)|2,{65,120,0}}, +/* 34764 */ {(13<<2)|2,{65,120,0}}, +/* 34765 */ {(13<<2)|2,{65,120,0}}, +/* 34766 */ {(13<<2)|2,{65,120,0}}, +/* 34767 */ {(13<<2)|2,{65,120,0}}, +/* 34768 */ {(13<<2)|2,{65,121,0}}, +/* 34769 */ {(13<<2)|2,{65,121,0}}, +/* 34770 */ {(13<<2)|2,{65,121,0}}, +/* 34771 */ {(13<<2)|2,{65,121,0}}, +/* 34772 */ {(13<<2)|2,{65,121,0}}, +/* 34773 */ {(13<<2)|2,{65,121,0}}, +/* 34774 */ {(13<<2)|2,{65,121,0}}, +/* 34775 */ {(13<<2)|2,{65,121,0}}, +/* 34776 */ {(13<<2)|2,{65,122,0}}, +/* 34777 */ {(13<<2)|2,{65,122,0}}, +/* 34778 */ {(13<<2)|2,{65,122,0}}, +/* 34779 */ {(13<<2)|2,{65,122,0}}, +/* 34780 */ {(13<<2)|2,{65,122,0}}, +/* 34781 */ {(13<<2)|2,{65,122,0}}, +/* 34782 */ {(13<<2)|2,{65,122,0}}, +/* 34783 */ {(13<<2)|2,{65,122,0}}, +/* 34784 */ {(14<<2)|2,{65,38,0}}, +/* 34785 */ {(14<<2)|2,{65,38,0}}, +/* 34786 */ {(14<<2)|2,{65,38,0}}, +/* 34787 */ {(14<<2)|2,{65,38,0}}, +/* 34788 */ {(14<<2)|2,{65,42,0}}, +/* 34789 */ {(14<<2)|2,{65,42,0}}, +/* 34790 */ {(14<<2)|2,{65,42,0}}, +/* 34791 */ {(14<<2)|2,{65,42,0}}, +/* 34792 */ {(14<<2)|2,{65,44,0}}, +/* 34793 */ {(14<<2)|2,{65,44,0}}, +/* 34794 */ {(14<<2)|2,{65,44,0}}, +/* 34795 */ {(14<<2)|2,{65,44,0}}, +/* 34796 */ {(14<<2)|2,{65,59,0}}, +/* 34797 */ {(14<<2)|2,{65,59,0}}, +/* 34798 */ {(14<<2)|2,{65,59,0}}, +/* 34799 */ {(14<<2)|2,{65,59,0}}, +/* 34800 */ {(14<<2)|2,{65,88,0}}, +/* 34801 */ {(14<<2)|2,{65,88,0}}, +/* 34802 */ {(14<<2)|2,{65,88,0}}, +/* 34803 */ {(14<<2)|2,{65,88,0}}, +/* 34804 */ {(14<<2)|2,{65,90,0}}, +/* 34805 */ {(14<<2)|2,{65,90,0}}, +/* 34806 */ {(14<<2)|2,{65,90,0}}, +/* 34807 */ {(14<<2)|2,{65,90,0}}, +/* 34808 */ {(16<<2)|2,{65,33,0}}, +/* 34809 */ {(16<<2)|2,{65,34,0}}, +/* 34810 */ {(16<<2)|2,{65,40,0}}, +/* 34811 */ {(16<<2)|2,{65,41,0}}, +/* 34812 */ {(16<<2)|2,{65,63,0}}, +/* 34813 */ {(6<<2)|1,{65,0,0}}, +/* 34814 */ {(6<<2)|1,{65,0,0}}, +/* 34815 */ {(6<<2)|1,{65,0,0}}, +/* 34816 */ {(16<<2)|3,{95,48,48}}, +/* 34817 */ {(16<<2)|3,{95,48,49}}, +/* 34818 */ {(16<<2)|3,{95,48,50}}, +/* 34819 */ {(16<<2)|3,{95,48,97}}, +/* 34820 */ {(16<<2)|3,{95,48,99}}, +/* 34821 */ {(16<<2)|3,{95,48,101}}, +/* 34822 */ {(16<<2)|3,{95,48,105}}, +/* 34823 */ {(16<<2)|3,{95,48,111}}, +/* 34824 */ {(16<<2)|3,{95,48,115}}, +/* 34825 */ {(16<<2)|3,{95,48,116}}, +/* 34826 */ {(11<<2)|2,{95,48,0}}, +/* 34827 */ {(11<<2)|2,{95,48,0}}, +/* 34828 */ {(11<<2)|2,{95,48,0}}, +/* 34829 */ {(11<<2)|2,{95,48,0}}, +/* 34830 */ {(11<<2)|2,{95,48,0}}, +/* 34831 */ {(11<<2)|2,{95,48,0}}, +/* 34832 */ {(11<<2)|2,{95,48,0}}, +/* 34833 */ {(11<<2)|2,{95,48,0}}, +/* 34834 */ {(11<<2)|2,{95,48,0}}, +/* 34835 */ {(11<<2)|2,{95,48,0}}, +/* 34836 */ {(11<<2)|2,{95,48,0}}, +/* 34837 */ {(11<<2)|2,{95,48,0}}, +/* 34838 */ {(11<<2)|2,{95,48,0}}, +/* 34839 */ {(11<<2)|2,{95,48,0}}, +/* 34840 */ {(11<<2)|2,{95,48,0}}, +/* 34841 */ {(11<<2)|2,{95,48,0}}, +/* 34842 */ {(11<<2)|2,{95,48,0}}, +/* 34843 */ {(11<<2)|2,{95,48,0}}, +/* 34844 */ {(11<<2)|2,{95,48,0}}, +/* 34845 */ {(11<<2)|2,{95,48,0}}, +/* 34846 */ {(11<<2)|2,{95,48,0}}, +/* 34847 */ {(11<<2)|2,{95,48,0}}, +/* 34848 */ {(16<<2)|3,{95,49,48}}, +/* 34849 */ {(16<<2)|3,{95,49,49}}, +/* 34850 */ {(16<<2)|3,{95,49,50}}, +/* 34851 */ {(16<<2)|3,{95,49,97}}, +/* 34852 */ {(16<<2)|3,{95,49,99}}, +/* 34853 */ {(16<<2)|3,{95,49,101}}, +/* 34854 */ {(16<<2)|3,{95,49,105}}, +/* 34855 */ {(16<<2)|3,{95,49,111}}, +/* 34856 */ {(16<<2)|3,{95,49,115}}, +/* 34857 */ {(16<<2)|3,{95,49,116}}, +/* 34858 */ {(11<<2)|2,{95,49,0}}, +/* 34859 */ {(11<<2)|2,{95,49,0}}, +/* 34860 */ {(11<<2)|2,{95,49,0}}, +/* 34861 */ {(11<<2)|2,{95,49,0}}, +/* 34862 */ {(11<<2)|2,{95,49,0}}, +/* 34863 */ {(11<<2)|2,{95,49,0}}, +/* 34864 */ {(11<<2)|2,{95,49,0}}, +/* 34865 */ {(11<<2)|2,{95,49,0}}, +/* 34866 */ {(11<<2)|2,{95,49,0}}, +/* 34867 */ {(11<<2)|2,{95,49,0}}, +/* 34868 */ {(11<<2)|2,{95,49,0}}, +/* 34869 */ {(11<<2)|2,{95,49,0}}, +/* 34870 */ {(11<<2)|2,{95,49,0}}, +/* 34871 */ {(11<<2)|2,{95,49,0}}, +/* 34872 */ {(11<<2)|2,{95,49,0}}, +/* 34873 */ {(11<<2)|2,{95,49,0}}, +/* 34874 */ {(11<<2)|2,{95,49,0}}, +/* 34875 */ {(11<<2)|2,{95,49,0}}, +/* 34876 */ {(11<<2)|2,{95,49,0}}, +/* 34877 */ {(11<<2)|2,{95,49,0}}, +/* 34878 */ {(11<<2)|2,{95,49,0}}, +/* 34879 */ {(11<<2)|2,{95,49,0}}, +/* 34880 */ {(16<<2)|3,{95,50,48}}, +/* 34881 */ {(16<<2)|3,{95,50,49}}, +/* 34882 */ {(16<<2)|3,{95,50,50}}, +/* 34883 */ {(16<<2)|3,{95,50,97}}, +/* 34884 */ {(16<<2)|3,{95,50,99}}, +/* 34885 */ {(16<<2)|3,{95,50,101}}, +/* 34886 */ {(16<<2)|3,{95,50,105}}, +/* 34887 */ {(16<<2)|3,{95,50,111}}, +/* 34888 */ {(16<<2)|3,{95,50,115}}, +/* 34889 */ {(16<<2)|3,{95,50,116}}, +/* 34890 */ {(11<<2)|2,{95,50,0}}, +/* 34891 */ {(11<<2)|2,{95,50,0}}, +/* 34892 */ {(11<<2)|2,{95,50,0}}, +/* 34893 */ {(11<<2)|2,{95,50,0}}, +/* 34894 */ {(11<<2)|2,{95,50,0}}, +/* 34895 */ {(11<<2)|2,{95,50,0}}, +/* 34896 */ {(11<<2)|2,{95,50,0}}, +/* 34897 */ {(11<<2)|2,{95,50,0}}, +/* 34898 */ {(11<<2)|2,{95,50,0}}, +/* 34899 */ {(11<<2)|2,{95,50,0}}, +/* 34900 */ {(11<<2)|2,{95,50,0}}, +/* 34901 */ {(11<<2)|2,{95,50,0}}, +/* 34902 */ {(11<<2)|2,{95,50,0}}, +/* 34903 */ {(11<<2)|2,{95,50,0}}, +/* 34904 */ {(11<<2)|2,{95,50,0}}, +/* 34905 */ {(11<<2)|2,{95,50,0}}, +/* 34906 */ {(11<<2)|2,{95,50,0}}, +/* 34907 */ {(11<<2)|2,{95,50,0}}, +/* 34908 */ {(11<<2)|2,{95,50,0}}, +/* 34909 */ {(11<<2)|2,{95,50,0}}, +/* 34910 */ {(11<<2)|2,{95,50,0}}, +/* 34911 */ {(11<<2)|2,{95,50,0}}, +/* 34912 */ {(16<<2)|3,{95,97,48}}, +/* 34913 */ {(16<<2)|3,{95,97,49}}, +/* 34914 */ {(16<<2)|3,{95,97,50}}, +/* 34915 */ {(16<<2)|3,{95,97,97}}, +/* 34916 */ {(16<<2)|3,{95,97,99}}, +/* 34917 */ {(16<<2)|3,{95,97,101}}, +/* 34918 */ {(16<<2)|3,{95,97,105}}, +/* 34919 */ {(16<<2)|3,{95,97,111}}, +/* 34920 */ {(16<<2)|3,{95,97,115}}, +/* 34921 */ {(16<<2)|3,{95,97,116}}, +/* 34922 */ {(11<<2)|2,{95,97,0}}, +/* 34923 */ {(11<<2)|2,{95,97,0}}, +/* 34924 */ {(11<<2)|2,{95,97,0}}, +/* 34925 */ {(11<<2)|2,{95,97,0}}, +/* 34926 */ {(11<<2)|2,{95,97,0}}, +/* 34927 */ {(11<<2)|2,{95,97,0}}, +/* 34928 */ {(11<<2)|2,{95,97,0}}, +/* 34929 */ {(11<<2)|2,{95,97,0}}, +/* 34930 */ {(11<<2)|2,{95,97,0}}, +/* 34931 */ {(11<<2)|2,{95,97,0}}, +/* 34932 */ {(11<<2)|2,{95,97,0}}, +/* 34933 */ {(11<<2)|2,{95,97,0}}, +/* 34934 */ {(11<<2)|2,{95,97,0}}, +/* 34935 */ {(11<<2)|2,{95,97,0}}, +/* 34936 */ {(11<<2)|2,{95,97,0}}, +/* 34937 */ {(11<<2)|2,{95,97,0}}, +/* 34938 */ {(11<<2)|2,{95,97,0}}, +/* 34939 */ {(11<<2)|2,{95,97,0}}, +/* 34940 */ {(11<<2)|2,{95,97,0}}, +/* 34941 */ {(11<<2)|2,{95,97,0}}, +/* 34942 */ {(11<<2)|2,{95,97,0}}, +/* 34943 */ {(11<<2)|2,{95,97,0}}, +/* 34944 */ {(16<<2)|3,{95,99,48}}, +/* 34945 */ {(16<<2)|3,{95,99,49}}, +/* 34946 */ {(16<<2)|3,{95,99,50}}, +/* 34947 */ {(16<<2)|3,{95,99,97}}, +/* 34948 */ {(16<<2)|3,{95,99,99}}, +/* 34949 */ {(16<<2)|3,{95,99,101}}, +/* 34950 */ {(16<<2)|3,{95,99,105}}, +/* 34951 */ {(16<<2)|3,{95,99,111}}, +/* 34952 */ {(16<<2)|3,{95,99,115}}, +/* 34953 */ {(16<<2)|3,{95,99,116}}, +/* 34954 */ {(11<<2)|2,{95,99,0}}, +/* 34955 */ {(11<<2)|2,{95,99,0}}, +/* 34956 */ {(11<<2)|2,{95,99,0}}, +/* 34957 */ {(11<<2)|2,{95,99,0}}, +/* 34958 */ {(11<<2)|2,{95,99,0}}, +/* 34959 */ {(11<<2)|2,{95,99,0}}, +/* 34960 */ {(11<<2)|2,{95,99,0}}, +/* 34961 */ {(11<<2)|2,{95,99,0}}, +/* 34962 */ {(11<<2)|2,{95,99,0}}, +/* 34963 */ {(11<<2)|2,{95,99,0}}, +/* 34964 */ {(11<<2)|2,{95,99,0}}, +/* 34965 */ {(11<<2)|2,{95,99,0}}, +/* 34966 */ {(11<<2)|2,{95,99,0}}, +/* 34967 */ {(11<<2)|2,{95,99,0}}, +/* 34968 */ {(11<<2)|2,{95,99,0}}, +/* 34969 */ {(11<<2)|2,{95,99,0}}, +/* 34970 */ {(11<<2)|2,{95,99,0}}, +/* 34971 */ {(11<<2)|2,{95,99,0}}, +/* 34972 */ {(11<<2)|2,{95,99,0}}, +/* 34973 */ {(11<<2)|2,{95,99,0}}, +/* 34974 */ {(11<<2)|2,{95,99,0}}, +/* 34975 */ {(11<<2)|2,{95,99,0}}, +/* 34976 */ {(16<<2)|3,{95,101,48}}, +/* 34977 */ {(16<<2)|3,{95,101,49}}, +/* 34978 */ {(16<<2)|3,{95,101,50}}, +/* 34979 */ {(16<<2)|3,{95,101,97}}, +/* 34980 */ {(16<<2)|3,{95,101,99}}, +/* 34981 */ {(16<<2)|3,{95,101,101}}, +/* 34982 */ {(16<<2)|3,{95,101,105}}, +/* 34983 */ {(16<<2)|3,{95,101,111}}, +/* 34984 */ {(16<<2)|3,{95,101,115}}, +/* 34985 */ {(16<<2)|3,{95,101,116}}, +/* 34986 */ {(11<<2)|2,{95,101,0}}, +/* 34987 */ {(11<<2)|2,{95,101,0}}, +/* 34988 */ {(11<<2)|2,{95,101,0}}, +/* 34989 */ {(11<<2)|2,{95,101,0}}, +/* 34990 */ {(11<<2)|2,{95,101,0}}, +/* 34991 */ {(11<<2)|2,{95,101,0}}, +/* 34992 */ {(11<<2)|2,{95,101,0}}, +/* 34993 */ {(11<<2)|2,{95,101,0}}, +/* 34994 */ {(11<<2)|2,{95,101,0}}, +/* 34995 */ {(11<<2)|2,{95,101,0}}, +/* 34996 */ {(11<<2)|2,{95,101,0}}, +/* 34997 */ {(11<<2)|2,{95,101,0}}, +/* 34998 */ {(11<<2)|2,{95,101,0}}, +/* 34999 */ {(11<<2)|2,{95,101,0}}, +/* 35000 */ {(11<<2)|2,{95,101,0}}, +/* 35001 */ {(11<<2)|2,{95,101,0}}, +/* 35002 */ {(11<<2)|2,{95,101,0}}, +/* 35003 */ {(11<<2)|2,{95,101,0}}, +/* 35004 */ {(11<<2)|2,{95,101,0}}, +/* 35005 */ {(11<<2)|2,{95,101,0}}, +/* 35006 */ {(11<<2)|2,{95,101,0}}, +/* 35007 */ {(11<<2)|2,{95,101,0}}, +/* 35008 */ {(16<<2)|3,{95,105,48}}, +/* 35009 */ {(16<<2)|3,{95,105,49}}, +/* 35010 */ {(16<<2)|3,{95,105,50}}, +/* 35011 */ {(16<<2)|3,{95,105,97}}, +/* 35012 */ {(16<<2)|3,{95,105,99}}, +/* 35013 */ {(16<<2)|3,{95,105,101}}, +/* 35014 */ {(16<<2)|3,{95,105,105}}, +/* 35015 */ {(16<<2)|3,{95,105,111}}, +/* 35016 */ {(16<<2)|3,{95,105,115}}, +/* 35017 */ {(16<<2)|3,{95,105,116}}, +/* 35018 */ {(11<<2)|2,{95,105,0}}, +/* 35019 */ {(11<<2)|2,{95,105,0}}, +/* 35020 */ {(11<<2)|2,{95,105,0}}, +/* 35021 */ {(11<<2)|2,{95,105,0}}, +/* 35022 */ {(11<<2)|2,{95,105,0}}, +/* 35023 */ {(11<<2)|2,{95,105,0}}, +/* 35024 */ {(11<<2)|2,{95,105,0}}, +/* 35025 */ {(11<<2)|2,{95,105,0}}, +/* 35026 */ {(11<<2)|2,{95,105,0}}, +/* 35027 */ {(11<<2)|2,{95,105,0}}, +/* 35028 */ {(11<<2)|2,{95,105,0}}, +/* 35029 */ {(11<<2)|2,{95,105,0}}, +/* 35030 */ {(11<<2)|2,{95,105,0}}, +/* 35031 */ {(11<<2)|2,{95,105,0}}, +/* 35032 */ {(11<<2)|2,{95,105,0}}, +/* 35033 */ {(11<<2)|2,{95,105,0}}, +/* 35034 */ {(11<<2)|2,{95,105,0}}, +/* 35035 */ {(11<<2)|2,{95,105,0}}, +/* 35036 */ {(11<<2)|2,{95,105,0}}, +/* 35037 */ {(11<<2)|2,{95,105,0}}, +/* 35038 */ {(11<<2)|2,{95,105,0}}, +/* 35039 */ {(11<<2)|2,{95,105,0}}, +/* 35040 */ {(16<<2)|3,{95,111,48}}, +/* 35041 */ {(16<<2)|3,{95,111,49}}, +/* 35042 */ {(16<<2)|3,{95,111,50}}, +/* 35043 */ {(16<<2)|3,{95,111,97}}, +/* 35044 */ {(16<<2)|3,{95,111,99}}, +/* 35045 */ {(16<<2)|3,{95,111,101}}, +/* 35046 */ {(16<<2)|3,{95,111,105}}, +/* 35047 */ {(16<<2)|3,{95,111,111}}, +/* 35048 */ {(16<<2)|3,{95,111,115}}, +/* 35049 */ {(16<<2)|3,{95,111,116}}, +/* 35050 */ {(11<<2)|2,{95,111,0}}, +/* 35051 */ {(11<<2)|2,{95,111,0}}, +/* 35052 */ {(11<<2)|2,{95,111,0}}, +/* 35053 */ {(11<<2)|2,{95,111,0}}, +/* 35054 */ {(11<<2)|2,{95,111,0}}, +/* 35055 */ {(11<<2)|2,{95,111,0}}, +/* 35056 */ {(11<<2)|2,{95,111,0}}, +/* 35057 */ {(11<<2)|2,{95,111,0}}, +/* 35058 */ {(11<<2)|2,{95,111,0}}, +/* 35059 */ {(11<<2)|2,{95,111,0}}, +/* 35060 */ {(11<<2)|2,{95,111,0}}, +/* 35061 */ {(11<<2)|2,{95,111,0}}, +/* 35062 */ {(11<<2)|2,{95,111,0}}, +/* 35063 */ {(11<<2)|2,{95,111,0}}, +/* 35064 */ {(11<<2)|2,{95,111,0}}, +/* 35065 */ {(11<<2)|2,{95,111,0}}, +/* 35066 */ {(11<<2)|2,{95,111,0}}, +/* 35067 */ {(11<<2)|2,{95,111,0}}, +/* 35068 */ {(11<<2)|2,{95,111,0}}, +/* 35069 */ {(11<<2)|2,{95,111,0}}, +/* 35070 */ {(11<<2)|2,{95,111,0}}, +/* 35071 */ {(11<<2)|2,{95,111,0}}, +/* 35072 */ {(16<<2)|3,{95,115,48}}, +/* 35073 */ {(16<<2)|3,{95,115,49}}, +/* 35074 */ {(16<<2)|3,{95,115,50}}, +/* 35075 */ {(16<<2)|3,{95,115,97}}, +/* 35076 */ {(16<<2)|3,{95,115,99}}, +/* 35077 */ {(16<<2)|3,{95,115,101}}, +/* 35078 */ {(16<<2)|3,{95,115,105}}, +/* 35079 */ {(16<<2)|3,{95,115,111}}, +/* 35080 */ {(16<<2)|3,{95,115,115}}, +/* 35081 */ {(16<<2)|3,{95,115,116}}, +/* 35082 */ {(11<<2)|2,{95,115,0}}, +/* 35083 */ {(11<<2)|2,{95,115,0}}, +/* 35084 */ {(11<<2)|2,{95,115,0}}, +/* 35085 */ {(11<<2)|2,{95,115,0}}, +/* 35086 */ {(11<<2)|2,{95,115,0}}, +/* 35087 */ {(11<<2)|2,{95,115,0}}, +/* 35088 */ {(11<<2)|2,{95,115,0}}, +/* 35089 */ {(11<<2)|2,{95,115,0}}, +/* 35090 */ {(11<<2)|2,{95,115,0}}, +/* 35091 */ {(11<<2)|2,{95,115,0}}, +/* 35092 */ {(11<<2)|2,{95,115,0}}, +/* 35093 */ {(11<<2)|2,{95,115,0}}, +/* 35094 */ {(11<<2)|2,{95,115,0}}, +/* 35095 */ {(11<<2)|2,{95,115,0}}, +/* 35096 */ {(11<<2)|2,{95,115,0}}, +/* 35097 */ {(11<<2)|2,{95,115,0}}, +/* 35098 */ {(11<<2)|2,{95,115,0}}, +/* 35099 */ {(11<<2)|2,{95,115,0}}, +/* 35100 */ {(11<<2)|2,{95,115,0}}, +/* 35101 */ {(11<<2)|2,{95,115,0}}, +/* 35102 */ {(11<<2)|2,{95,115,0}}, +/* 35103 */ {(11<<2)|2,{95,115,0}}, +/* 35104 */ {(16<<2)|3,{95,116,48}}, +/* 35105 */ {(16<<2)|3,{95,116,49}}, +/* 35106 */ {(16<<2)|3,{95,116,50}}, +/* 35107 */ {(16<<2)|3,{95,116,97}}, +/* 35108 */ {(16<<2)|3,{95,116,99}}, +/* 35109 */ {(16<<2)|3,{95,116,101}}, +/* 35110 */ {(16<<2)|3,{95,116,105}}, +/* 35111 */ {(16<<2)|3,{95,116,111}}, +/* 35112 */ {(16<<2)|3,{95,116,115}}, +/* 35113 */ {(16<<2)|3,{95,116,116}}, +/* 35114 */ {(11<<2)|2,{95,116,0}}, +/* 35115 */ {(11<<2)|2,{95,116,0}}, +/* 35116 */ {(11<<2)|2,{95,116,0}}, +/* 35117 */ {(11<<2)|2,{95,116,0}}, +/* 35118 */ {(11<<2)|2,{95,116,0}}, +/* 35119 */ {(11<<2)|2,{95,116,0}}, +/* 35120 */ {(11<<2)|2,{95,116,0}}, +/* 35121 */ {(11<<2)|2,{95,116,0}}, +/* 35122 */ {(11<<2)|2,{95,116,0}}, +/* 35123 */ {(11<<2)|2,{95,116,0}}, +/* 35124 */ {(11<<2)|2,{95,116,0}}, +/* 35125 */ {(11<<2)|2,{95,116,0}}, +/* 35126 */ {(11<<2)|2,{95,116,0}}, +/* 35127 */ {(11<<2)|2,{95,116,0}}, +/* 35128 */ {(11<<2)|2,{95,116,0}}, +/* 35129 */ {(11<<2)|2,{95,116,0}}, +/* 35130 */ {(11<<2)|2,{95,116,0}}, +/* 35131 */ {(11<<2)|2,{95,116,0}}, +/* 35132 */ {(11<<2)|2,{95,116,0}}, +/* 35133 */ {(11<<2)|2,{95,116,0}}, +/* 35134 */ {(11<<2)|2,{95,116,0}}, +/* 35135 */ {(11<<2)|2,{95,116,0}}, +/* 35136 */ {(12<<2)|2,{95,32,0}}, +/* 35137 */ {(12<<2)|2,{95,32,0}}, +/* 35138 */ {(12<<2)|2,{95,32,0}}, +/* 35139 */ {(12<<2)|2,{95,32,0}}, +/* 35140 */ {(12<<2)|2,{95,32,0}}, +/* 35141 */ {(12<<2)|2,{95,32,0}}, +/* 35142 */ {(12<<2)|2,{95,32,0}}, +/* 35143 */ {(12<<2)|2,{95,32,0}}, +/* 35144 */ {(12<<2)|2,{95,32,0}}, +/* 35145 */ {(12<<2)|2,{95,32,0}}, +/* 35146 */ {(12<<2)|2,{95,32,0}}, +/* 35147 */ {(12<<2)|2,{95,32,0}}, +/* 35148 */ {(12<<2)|2,{95,32,0}}, +/* 35149 */ {(12<<2)|2,{95,32,0}}, +/* 35150 */ {(12<<2)|2,{95,32,0}}, +/* 35151 */ {(12<<2)|2,{95,32,0}}, +/* 35152 */ {(12<<2)|2,{95,37,0}}, +/* 35153 */ {(12<<2)|2,{95,37,0}}, +/* 35154 */ {(12<<2)|2,{95,37,0}}, +/* 35155 */ {(12<<2)|2,{95,37,0}}, +/* 35156 */ {(12<<2)|2,{95,37,0}}, +/* 35157 */ {(12<<2)|2,{95,37,0}}, +/* 35158 */ {(12<<2)|2,{95,37,0}}, +/* 35159 */ {(12<<2)|2,{95,37,0}}, +/* 35160 */ {(12<<2)|2,{95,37,0}}, +/* 35161 */ {(12<<2)|2,{95,37,0}}, +/* 35162 */ {(12<<2)|2,{95,37,0}}, +/* 35163 */ {(12<<2)|2,{95,37,0}}, +/* 35164 */ {(12<<2)|2,{95,37,0}}, +/* 35165 */ {(12<<2)|2,{95,37,0}}, +/* 35166 */ {(12<<2)|2,{95,37,0}}, +/* 35167 */ {(12<<2)|2,{95,37,0}}, +/* 35168 */ {(12<<2)|2,{95,45,0}}, +/* 35169 */ {(12<<2)|2,{95,45,0}}, +/* 35170 */ {(12<<2)|2,{95,45,0}}, +/* 35171 */ {(12<<2)|2,{95,45,0}}, +/* 35172 */ {(12<<2)|2,{95,45,0}}, +/* 35173 */ {(12<<2)|2,{95,45,0}}, +/* 35174 */ {(12<<2)|2,{95,45,0}}, +/* 35175 */ {(12<<2)|2,{95,45,0}}, +/* 35176 */ {(12<<2)|2,{95,45,0}}, +/* 35177 */ {(12<<2)|2,{95,45,0}}, +/* 35178 */ {(12<<2)|2,{95,45,0}}, +/* 35179 */ {(12<<2)|2,{95,45,0}}, +/* 35180 */ {(12<<2)|2,{95,45,0}}, +/* 35181 */ {(12<<2)|2,{95,45,0}}, +/* 35182 */ {(12<<2)|2,{95,45,0}}, +/* 35183 */ {(12<<2)|2,{95,45,0}}, +/* 35184 */ {(12<<2)|2,{95,46,0}}, +/* 35185 */ {(12<<2)|2,{95,46,0}}, +/* 35186 */ {(12<<2)|2,{95,46,0}}, +/* 35187 */ {(12<<2)|2,{95,46,0}}, +/* 35188 */ {(12<<2)|2,{95,46,0}}, +/* 35189 */ {(12<<2)|2,{95,46,0}}, +/* 35190 */ {(12<<2)|2,{95,46,0}}, +/* 35191 */ {(12<<2)|2,{95,46,0}}, +/* 35192 */ {(12<<2)|2,{95,46,0}}, +/* 35193 */ {(12<<2)|2,{95,46,0}}, +/* 35194 */ {(12<<2)|2,{95,46,0}}, +/* 35195 */ {(12<<2)|2,{95,46,0}}, +/* 35196 */ {(12<<2)|2,{95,46,0}}, +/* 35197 */ {(12<<2)|2,{95,46,0}}, +/* 35198 */ {(12<<2)|2,{95,46,0}}, +/* 35199 */ {(12<<2)|2,{95,46,0}}, +/* 35200 */ {(12<<2)|2,{95,47,0}}, +/* 35201 */ {(12<<2)|2,{95,47,0}}, +/* 35202 */ {(12<<2)|2,{95,47,0}}, +/* 35203 */ {(12<<2)|2,{95,47,0}}, +/* 35204 */ {(12<<2)|2,{95,47,0}}, +/* 35205 */ {(12<<2)|2,{95,47,0}}, +/* 35206 */ {(12<<2)|2,{95,47,0}}, +/* 35207 */ {(12<<2)|2,{95,47,0}}, +/* 35208 */ {(12<<2)|2,{95,47,0}}, +/* 35209 */ {(12<<2)|2,{95,47,0}}, +/* 35210 */ {(12<<2)|2,{95,47,0}}, +/* 35211 */ {(12<<2)|2,{95,47,0}}, +/* 35212 */ {(12<<2)|2,{95,47,0}}, +/* 35213 */ {(12<<2)|2,{95,47,0}}, +/* 35214 */ {(12<<2)|2,{95,47,0}}, +/* 35215 */ {(12<<2)|2,{95,47,0}}, +/* 35216 */ {(12<<2)|2,{95,51,0}}, +/* 35217 */ {(12<<2)|2,{95,51,0}}, +/* 35218 */ {(12<<2)|2,{95,51,0}}, +/* 35219 */ {(12<<2)|2,{95,51,0}}, +/* 35220 */ {(12<<2)|2,{95,51,0}}, +/* 35221 */ {(12<<2)|2,{95,51,0}}, +/* 35222 */ {(12<<2)|2,{95,51,0}}, +/* 35223 */ {(12<<2)|2,{95,51,0}}, +/* 35224 */ {(12<<2)|2,{95,51,0}}, +/* 35225 */ {(12<<2)|2,{95,51,0}}, +/* 35226 */ {(12<<2)|2,{95,51,0}}, +/* 35227 */ {(12<<2)|2,{95,51,0}}, +/* 35228 */ {(12<<2)|2,{95,51,0}}, +/* 35229 */ {(12<<2)|2,{95,51,0}}, +/* 35230 */ {(12<<2)|2,{95,51,0}}, +/* 35231 */ {(12<<2)|2,{95,51,0}}, +/* 35232 */ {(12<<2)|2,{95,52,0}}, +/* 35233 */ {(12<<2)|2,{95,52,0}}, +/* 35234 */ {(12<<2)|2,{95,52,0}}, +/* 35235 */ {(12<<2)|2,{95,52,0}}, +/* 35236 */ {(12<<2)|2,{95,52,0}}, +/* 35237 */ {(12<<2)|2,{95,52,0}}, +/* 35238 */ {(12<<2)|2,{95,52,0}}, +/* 35239 */ {(12<<2)|2,{95,52,0}}, +/* 35240 */ {(12<<2)|2,{95,52,0}}, +/* 35241 */ {(12<<2)|2,{95,52,0}}, +/* 35242 */ {(12<<2)|2,{95,52,0}}, +/* 35243 */ {(12<<2)|2,{95,52,0}}, +/* 35244 */ {(12<<2)|2,{95,52,0}}, +/* 35245 */ {(12<<2)|2,{95,52,0}}, +/* 35246 */ {(12<<2)|2,{95,52,0}}, +/* 35247 */ {(12<<2)|2,{95,52,0}}, +/* 35248 */ {(12<<2)|2,{95,53,0}}, +/* 35249 */ {(12<<2)|2,{95,53,0}}, +/* 35250 */ {(12<<2)|2,{95,53,0}}, +/* 35251 */ {(12<<2)|2,{95,53,0}}, +/* 35252 */ {(12<<2)|2,{95,53,0}}, +/* 35253 */ {(12<<2)|2,{95,53,0}}, +/* 35254 */ {(12<<2)|2,{95,53,0}}, +/* 35255 */ {(12<<2)|2,{95,53,0}}, +/* 35256 */ {(12<<2)|2,{95,53,0}}, +/* 35257 */ {(12<<2)|2,{95,53,0}}, +/* 35258 */ {(12<<2)|2,{95,53,0}}, +/* 35259 */ {(12<<2)|2,{95,53,0}}, +/* 35260 */ {(12<<2)|2,{95,53,0}}, +/* 35261 */ {(12<<2)|2,{95,53,0}}, +/* 35262 */ {(12<<2)|2,{95,53,0}}, +/* 35263 */ {(12<<2)|2,{95,53,0}}, +/* 35264 */ {(12<<2)|2,{95,54,0}}, +/* 35265 */ {(12<<2)|2,{95,54,0}}, +/* 35266 */ {(12<<2)|2,{95,54,0}}, +/* 35267 */ {(12<<2)|2,{95,54,0}}, +/* 35268 */ {(12<<2)|2,{95,54,0}}, +/* 35269 */ {(12<<2)|2,{95,54,0}}, +/* 35270 */ {(12<<2)|2,{95,54,0}}, +/* 35271 */ {(12<<2)|2,{95,54,0}}, +/* 35272 */ {(12<<2)|2,{95,54,0}}, +/* 35273 */ {(12<<2)|2,{95,54,0}}, +/* 35274 */ {(12<<2)|2,{95,54,0}}, +/* 35275 */ {(12<<2)|2,{95,54,0}}, +/* 35276 */ {(12<<2)|2,{95,54,0}}, +/* 35277 */ {(12<<2)|2,{95,54,0}}, +/* 35278 */ {(12<<2)|2,{95,54,0}}, +/* 35279 */ {(12<<2)|2,{95,54,0}}, +/* 35280 */ {(12<<2)|2,{95,55,0}}, +/* 35281 */ {(12<<2)|2,{95,55,0}}, +/* 35282 */ {(12<<2)|2,{95,55,0}}, +/* 35283 */ {(12<<2)|2,{95,55,0}}, +/* 35284 */ {(12<<2)|2,{95,55,0}}, +/* 35285 */ {(12<<2)|2,{95,55,0}}, +/* 35286 */ {(12<<2)|2,{95,55,0}}, +/* 35287 */ {(12<<2)|2,{95,55,0}}, +/* 35288 */ {(12<<2)|2,{95,55,0}}, +/* 35289 */ {(12<<2)|2,{95,55,0}}, +/* 35290 */ {(12<<2)|2,{95,55,0}}, +/* 35291 */ {(12<<2)|2,{95,55,0}}, +/* 35292 */ {(12<<2)|2,{95,55,0}}, +/* 35293 */ {(12<<2)|2,{95,55,0}}, +/* 35294 */ {(12<<2)|2,{95,55,0}}, +/* 35295 */ {(12<<2)|2,{95,55,0}}, +/* 35296 */ {(12<<2)|2,{95,56,0}}, +/* 35297 */ {(12<<2)|2,{95,56,0}}, +/* 35298 */ {(12<<2)|2,{95,56,0}}, +/* 35299 */ {(12<<2)|2,{95,56,0}}, +/* 35300 */ {(12<<2)|2,{95,56,0}}, +/* 35301 */ {(12<<2)|2,{95,56,0}}, +/* 35302 */ {(12<<2)|2,{95,56,0}}, +/* 35303 */ {(12<<2)|2,{95,56,0}}, +/* 35304 */ {(12<<2)|2,{95,56,0}}, +/* 35305 */ {(12<<2)|2,{95,56,0}}, +/* 35306 */ {(12<<2)|2,{95,56,0}}, +/* 35307 */ {(12<<2)|2,{95,56,0}}, +/* 35308 */ {(12<<2)|2,{95,56,0}}, +/* 35309 */ {(12<<2)|2,{95,56,0}}, +/* 35310 */ {(12<<2)|2,{95,56,0}}, +/* 35311 */ {(12<<2)|2,{95,56,0}}, +/* 35312 */ {(12<<2)|2,{95,57,0}}, +/* 35313 */ {(12<<2)|2,{95,57,0}}, +/* 35314 */ {(12<<2)|2,{95,57,0}}, +/* 35315 */ {(12<<2)|2,{95,57,0}}, +/* 35316 */ {(12<<2)|2,{95,57,0}}, +/* 35317 */ {(12<<2)|2,{95,57,0}}, +/* 35318 */ {(12<<2)|2,{95,57,0}}, +/* 35319 */ {(12<<2)|2,{95,57,0}}, +/* 35320 */ {(12<<2)|2,{95,57,0}}, +/* 35321 */ {(12<<2)|2,{95,57,0}}, +/* 35322 */ {(12<<2)|2,{95,57,0}}, +/* 35323 */ {(12<<2)|2,{95,57,0}}, +/* 35324 */ {(12<<2)|2,{95,57,0}}, +/* 35325 */ {(12<<2)|2,{95,57,0}}, +/* 35326 */ {(12<<2)|2,{95,57,0}}, +/* 35327 */ {(12<<2)|2,{95,57,0}}, +/* 35328 */ {(12<<2)|2,{95,61,0}}, +/* 35329 */ {(12<<2)|2,{95,61,0}}, +/* 35330 */ {(12<<2)|2,{95,61,0}}, +/* 35331 */ {(12<<2)|2,{95,61,0}}, +/* 35332 */ {(12<<2)|2,{95,61,0}}, +/* 35333 */ {(12<<2)|2,{95,61,0}}, +/* 35334 */ {(12<<2)|2,{95,61,0}}, +/* 35335 */ {(12<<2)|2,{95,61,0}}, +/* 35336 */ {(12<<2)|2,{95,61,0}}, +/* 35337 */ {(12<<2)|2,{95,61,0}}, +/* 35338 */ {(12<<2)|2,{95,61,0}}, +/* 35339 */ {(12<<2)|2,{95,61,0}}, +/* 35340 */ {(12<<2)|2,{95,61,0}}, +/* 35341 */ {(12<<2)|2,{95,61,0}}, +/* 35342 */ {(12<<2)|2,{95,61,0}}, +/* 35343 */ {(12<<2)|2,{95,61,0}}, +/* 35344 */ {(12<<2)|2,{95,65,0}}, +/* 35345 */ {(12<<2)|2,{95,65,0}}, +/* 35346 */ {(12<<2)|2,{95,65,0}}, +/* 35347 */ {(12<<2)|2,{95,65,0}}, +/* 35348 */ {(12<<2)|2,{95,65,0}}, +/* 35349 */ {(12<<2)|2,{95,65,0}}, +/* 35350 */ {(12<<2)|2,{95,65,0}}, +/* 35351 */ {(12<<2)|2,{95,65,0}}, +/* 35352 */ {(12<<2)|2,{95,65,0}}, +/* 35353 */ {(12<<2)|2,{95,65,0}}, +/* 35354 */ {(12<<2)|2,{95,65,0}}, +/* 35355 */ {(12<<2)|2,{95,65,0}}, +/* 35356 */ {(12<<2)|2,{95,65,0}}, +/* 35357 */ {(12<<2)|2,{95,65,0}}, +/* 35358 */ {(12<<2)|2,{95,65,0}}, +/* 35359 */ {(12<<2)|2,{95,65,0}}, +/* 35360 */ {(12<<2)|2,{95,95,0}}, +/* 35361 */ {(12<<2)|2,{95,95,0}}, +/* 35362 */ {(12<<2)|2,{95,95,0}}, +/* 35363 */ {(12<<2)|2,{95,95,0}}, +/* 35364 */ {(12<<2)|2,{95,95,0}}, +/* 35365 */ {(12<<2)|2,{95,95,0}}, +/* 35366 */ {(12<<2)|2,{95,95,0}}, +/* 35367 */ {(12<<2)|2,{95,95,0}}, +/* 35368 */ {(12<<2)|2,{95,95,0}}, +/* 35369 */ {(12<<2)|2,{95,95,0}}, +/* 35370 */ {(12<<2)|2,{95,95,0}}, +/* 35371 */ {(12<<2)|2,{95,95,0}}, +/* 35372 */ {(12<<2)|2,{95,95,0}}, +/* 35373 */ {(12<<2)|2,{95,95,0}}, +/* 35374 */ {(12<<2)|2,{95,95,0}}, +/* 35375 */ {(12<<2)|2,{95,95,0}}, +/* 35376 */ {(12<<2)|2,{95,98,0}}, +/* 35377 */ {(12<<2)|2,{95,98,0}}, +/* 35378 */ {(12<<2)|2,{95,98,0}}, +/* 35379 */ {(12<<2)|2,{95,98,0}}, +/* 35380 */ {(12<<2)|2,{95,98,0}}, +/* 35381 */ {(12<<2)|2,{95,98,0}}, +/* 35382 */ {(12<<2)|2,{95,98,0}}, +/* 35383 */ {(12<<2)|2,{95,98,0}}, +/* 35384 */ {(12<<2)|2,{95,98,0}}, +/* 35385 */ {(12<<2)|2,{95,98,0}}, +/* 35386 */ {(12<<2)|2,{95,98,0}}, +/* 35387 */ {(12<<2)|2,{95,98,0}}, +/* 35388 */ {(12<<2)|2,{95,98,0}}, +/* 35389 */ {(12<<2)|2,{95,98,0}}, +/* 35390 */ {(12<<2)|2,{95,98,0}}, +/* 35391 */ {(12<<2)|2,{95,98,0}}, +/* 35392 */ {(12<<2)|2,{95,100,0}}, +/* 35393 */ {(12<<2)|2,{95,100,0}}, +/* 35394 */ {(12<<2)|2,{95,100,0}}, +/* 35395 */ {(12<<2)|2,{95,100,0}}, +/* 35396 */ {(12<<2)|2,{95,100,0}}, +/* 35397 */ {(12<<2)|2,{95,100,0}}, +/* 35398 */ {(12<<2)|2,{95,100,0}}, +/* 35399 */ {(12<<2)|2,{95,100,0}}, +/* 35400 */ {(12<<2)|2,{95,100,0}}, +/* 35401 */ {(12<<2)|2,{95,100,0}}, +/* 35402 */ {(12<<2)|2,{95,100,0}}, +/* 35403 */ {(12<<2)|2,{95,100,0}}, +/* 35404 */ {(12<<2)|2,{95,100,0}}, +/* 35405 */ {(12<<2)|2,{95,100,0}}, +/* 35406 */ {(12<<2)|2,{95,100,0}}, +/* 35407 */ {(12<<2)|2,{95,100,0}}, +/* 35408 */ {(12<<2)|2,{95,102,0}}, +/* 35409 */ {(12<<2)|2,{95,102,0}}, +/* 35410 */ {(12<<2)|2,{95,102,0}}, +/* 35411 */ {(12<<2)|2,{95,102,0}}, +/* 35412 */ {(12<<2)|2,{95,102,0}}, +/* 35413 */ {(12<<2)|2,{95,102,0}}, +/* 35414 */ {(12<<2)|2,{95,102,0}}, +/* 35415 */ {(12<<2)|2,{95,102,0}}, +/* 35416 */ {(12<<2)|2,{95,102,0}}, +/* 35417 */ {(12<<2)|2,{95,102,0}}, +/* 35418 */ {(12<<2)|2,{95,102,0}}, +/* 35419 */ {(12<<2)|2,{95,102,0}}, +/* 35420 */ {(12<<2)|2,{95,102,0}}, +/* 35421 */ {(12<<2)|2,{95,102,0}}, +/* 35422 */ {(12<<2)|2,{95,102,0}}, +/* 35423 */ {(12<<2)|2,{95,102,0}}, +/* 35424 */ {(12<<2)|2,{95,103,0}}, +/* 35425 */ {(12<<2)|2,{95,103,0}}, +/* 35426 */ {(12<<2)|2,{95,103,0}}, +/* 35427 */ {(12<<2)|2,{95,103,0}}, +/* 35428 */ {(12<<2)|2,{95,103,0}}, +/* 35429 */ {(12<<2)|2,{95,103,0}}, +/* 35430 */ {(12<<2)|2,{95,103,0}}, +/* 35431 */ {(12<<2)|2,{95,103,0}}, +/* 35432 */ {(12<<2)|2,{95,103,0}}, +/* 35433 */ {(12<<2)|2,{95,103,0}}, +/* 35434 */ {(12<<2)|2,{95,103,0}}, +/* 35435 */ {(12<<2)|2,{95,103,0}}, +/* 35436 */ {(12<<2)|2,{95,103,0}}, +/* 35437 */ {(12<<2)|2,{95,103,0}}, +/* 35438 */ {(12<<2)|2,{95,103,0}}, +/* 35439 */ {(12<<2)|2,{95,103,0}}, +/* 35440 */ {(12<<2)|2,{95,104,0}}, +/* 35441 */ {(12<<2)|2,{95,104,0}}, +/* 35442 */ {(12<<2)|2,{95,104,0}}, +/* 35443 */ {(12<<2)|2,{95,104,0}}, +/* 35444 */ {(12<<2)|2,{95,104,0}}, +/* 35445 */ {(12<<2)|2,{95,104,0}}, +/* 35446 */ {(12<<2)|2,{95,104,0}}, +/* 35447 */ {(12<<2)|2,{95,104,0}}, +/* 35448 */ {(12<<2)|2,{95,104,0}}, +/* 35449 */ {(12<<2)|2,{95,104,0}}, +/* 35450 */ {(12<<2)|2,{95,104,0}}, +/* 35451 */ {(12<<2)|2,{95,104,0}}, +/* 35452 */ {(12<<2)|2,{95,104,0}}, +/* 35453 */ {(12<<2)|2,{95,104,0}}, +/* 35454 */ {(12<<2)|2,{95,104,0}}, +/* 35455 */ {(12<<2)|2,{95,104,0}}, +/* 35456 */ {(12<<2)|2,{95,108,0}}, +/* 35457 */ {(12<<2)|2,{95,108,0}}, +/* 35458 */ {(12<<2)|2,{95,108,0}}, +/* 35459 */ {(12<<2)|2,{95,108,0}}, +/* 35460 */ {(12<<2)|2,{95,108,0}}, +/* 35461 */ {(12<<2)|2,{95,108,0}}, +/* 35462 */ {(12<<2)|2,{95,108,0}}, +/* 35463 */ {(12<<2)|2,{95,108,0}}, +/* 35464 */ {(12<<2)|2,{95,108,0}}, +/* 35465 */ {(12<<2)|2,{95,108,0}}, +/* 35466 */ {(12<<2)|2,{95,108,0}}, +/* 35467 */ {(12<<2)|2,{95,108,0}}, +/* 35468 */ {(12<<2)|2,{95,108,0}}, +/* 35469 */ {(12<<2)|2,{95,108,0}}, +/* 35470 */ {(12<<2)|2,{95,108,0}}, +/* 35471 */ {(12<<2)|2,{95,108,0}}, +/* 35472 */ {(12<<2)|2,{95,109,0}}, +/* 35473 */ {(12<<2)|2,{95,109,0}}, +/* 35474 */ {(12<<2)|2,{95,109,0}}, +/* 35475 */ {(12<<2)|2,{95,109,0}}, +/* 35476 */ {(12<<2)|2,{95,109,0}}, +/* 35477 */ {(12<<2)|2,{95,109,0}}, +/* 35478 */ {(12<<2)|2,{95,109,0}}, +/* 35479 */ {(12<<2)|2,{95,109,0}}, +/* 35480 */ {(12<<2)|2,{95,109,0}}, +/* 35481 */ {(12<<2)|2,{95,109,0}}, +/* 35482 */ {(12<<2)|2,{95,109,0}}, +/* 35483 */ {(12<<2)|2,{95,109,0}}, +/* 35484 */ {(12<<2)|2,{95,109,0}}, +/* 35485 */ {(12<<2)|2,{95,109,0}}, +/* 35486 */ {(12<<2)|2,{95,109,0}}, +/* 35487 */ {(12<<2)|2,{95,109,0}}, +/* 35488 */ {(12<<2)|2,{95,110,0}}, +/* 35489 */ {(12<<2)|2,{95,110,0}}, +/* 35490 */ {(12<<2)|2,{95,110,0}}, +/* 35491 */ {(12<<2)|2,{95,110,0}}, +/* 35492 */ {(12<<2)|2,{95,110,0}}, +/* 35493 */ {(12<<2)|2,{95,110,0}}, +/* 35494 */ {(12<<2)|2,{95,110,0}}, +/* 35495 */ {(12<<2)|2,{95,110,0}}, +/* 35496 */ {(12<<2)|2,{95,110,0}}, +/* 35497 */ {(12<<2)|2,{95,110,0}}, +/* 35498 */ {(12<<2)|2,{95,110,0}}, +/* 35499 */ {(12<<2)|2,{95,110,0}}, +/* 35500 */ {(12<<2)|2,{95,110,0}}, +/* 35501 */ {(12<<2)|2,{95,110,0}}, +/* 35502 */ {(12<<2)|2,{95,110,0}}, +/* 35503 */ {(12<<2)|2,{95,110,0}}, +/* 35504 */ {(12<<2)|2,{95,112,0}}, +/* 35505 */ {(12<<2)|2,{95,112,0}}, +/* 35506 */ {(12<<2)|2,{95,112,0}}, +/* 35507 */ {(12<<2)|2,{95,112,0}}, +/* 35508 */ {(12<<2)|2,{95,112,0}}, +/* 35509 */ {(12<<2)|2,{95,112,0}}, +/* 35510 */ {(12<<2)|2,{95,112,0}}, +/* 35511 */ {(12<<2)|2,{95,112,0}}, +/* 35512 */ {(12<<2)|2,{95,112,0}}, +/* 35513 */ {(12<<2)|2,{95,112,0}}, +/* 35514 */ {(12<<2)|2,{95,112,0}}, +/* 35515 */ {(12<<2)|2,{95,112,0}}, +/* 35516 */ {(12<<2)|2,{95,112,0}}, +/* 35517 */ {(12<<2)|2,{95,112,0}}, +/* 35518 */ {(12<<2)|2,{95,112,0}}, +/* 35519 */ {(12<<2)|2,{95,112,0}}, +/* 35520 */ {(12<<2)|2,{95,114,0}}, +/* 35521 */ {(12<<2)|2,{95,114,0}}, +/* 35522 */ {(12<<2)|2,{95,114,0}}, +/* 35523 */ {(12<<2)|2,{95,114,0}}, +/* 35524 */ {(12<<2)|2,{95,114,0}}, +/* 35525 */ {(12<<2)|2,{95,114,0}}, +/* 35526 */ {(12<<2)|2,{95,114,0}}, +/* 35527 */ {(12<<2)|2,{95,114,0}}, +/* 35528 */ {(12<<2)|2,{95,114,0}}, +/* 35529 */ {(12<<2)|2,{95,114,0}}, +/* 35530 */ {(12<<2)|2,{95,114,0}}, +/* 35531 */ {(12<<2)|2,{95,114,0}}, +/* 35532 */ {(12<<2)|2,{95,114,0}}, +/* 35533 */ {(12<<2)|2,{95,114,0}}, +/* 35534 */ {(12<<2)|2,{95,114,0}}, +/* 35535 */ {(12<<2)|2,{95,114,0}}, +/* 35536 */ {(12<<2)|2,{95,117,0}}, +/* 35537 */ {(12<<2)|2,{95,117,0}}, +/* 35538 */ {(12<<2)|2,{95,117,0}}, +/* 35539 */ {(12<<2)|2,{95,117,0}}, +/* 35540 */ {(12<<2)|2,{95,117,0}}, +/* 35541 */ {(12<<2)|2,{95,117,0}}, +/* 35542 */ {(12<<2)|2,{95,117,0}}, +/* 35543 */ {(12<<2)|2,{95,117,0}}, +/* 35544 */ {(12<<2)|2,{95,117,0}}, +/* 35545 */ {(12<<2)|2,{95,117,0}}, +/* 35546 */ {(12<<2)|2,{95,117,0}}, +/* 35547 */ {(12<<2)|2,{95,117,0}}, +/* 35548 */ {(12<<2)|2,{95,117,0}}, +/* 35549 */ {(12<<2)|2,{95,117,0}}, +/* 35550 */ {(12<<2)|2,{95,117,0}}, +/* 35551 */ {(12<<2)|2,{95,117,0}}, +/* 35552 */ {(13<<2)|2,{95,58,0}}, +/* 35553 */ {(13<<2)|2,{95,58,0}}, +/* 35554 */ {(13<<2)|2,{95,58,0}}, +/* 35555 */ {(13<<2)|2,{95,58,0}}, +/* 35556 */ {(13<<2)|2,{95,58,0}}, +/* 35557 */ {(13<<2)|2,{95,58,0}}, +/* 35558 */ {(13<<2)|2,{95,58,0}}, +/* 35559 */ {(13<<2)|2,{95,58,0}}, +/* 35560 */ {(13<<2)|2,{95,66,0}}, +/* 35561 */ {(13<<2)|2,{95,66,0}}, +/* 35562 */ {(13<<2)|2,{95,66,0}}, +/* 35563 */ {(13<<2)|2,{95,66,0}}, +/* 35564 */ {(13<<2)|2,{95,66,0}}, +/* 35565 */ {(13<<2)|2,{95,66,0}}, +/* 35566 */ {(13<<2)|2,{95,66,0}}, +/* 35567 */ {(13<<2)|2,{95,66,0}}, +/* 35568 */ {(13<<2)|2,{95,67,0}}, +/* 35569 */ {(13<<2)|2,{95,67,0}}, +/* 35570 */ {(13<<2)|2,{95,67,0}}, +/* 35571 */ {(13<<2)|2,{95,67,0}}, +/* 35572 */ {(13<<2)|2,{95,67,0}}, +/* 35573 */ {(13<<2)|2,{95,67,0}}, +/* 35574 */ {(13<<2)|2,{95,67,0}}, +/* 35575 */ {(13<<2)|2,{95,67,0}}, +/* 35576 */ {(13<<2)|2,{95,68,0}}, +/* 35577 */ {(13<<2)|2,{95,68,0}}, +/* 35578 */ {(13<<2)|2,{95,68,0}}, +/* 35579 */ {(13<<2)|2,{95,68,0}}, +/* 35580 */ {(13<<2)|2,{95,68,0}}, +/* 35581 */ {(13<<2)|2,{95,68,0}}, +/* 35582 */ {(13<<2)|2,{95,68,0}}, +/* 35583 */ {(13<<2)|2,{95,68,0}}, +/* 35584 */ {(13<<2)|2,{95,69,0}}, +/* 35585 */ {(13<<2)|2,{95,69,0}}, +/* 35586 */ {(13<<2)|2,{95,69,0}}, +/* 35587 */ {(13<<2)|2,{95,69,0}}, +/* 35588 */ {(13<<2)|2,{95,69,0}}, +/* 35589 */ {(13<<2)|2,{95,69,0}}, +/* 35590 */ {(13<<2)|2,{95,69,0}}, +/* 35591 */ {(13<<2)|2,{95,69,0}}, +/* 35592 */ {(13<<2)|2,{95,70,0}}, +/* 35593 */ {(13<<2)|2,{95,70,0}}, +/* 35594 */ {(13<<2)|2,{95,70,0}}, +/* 35595 */ {(13<<2)|2,{95,70,0}}, +/* 35596 */ {(13<<2)|2,{95,70,0}}, +/* 35597 */ {(13<<2)|2,{95,70,0}}, +/* 35598 */ {(13<<2)|2,{95,70,0}}, +/* 35599 */ {(13<<2)|2,{95,70,0}}, +/* 35600 */ {(13<<2)|2,{95,71,0}}, +/* 35601 */ {(13<<2)|2,{95,71,0}}, +/* 35602 */ {(13<<2)|2,{95,71,0}}, +/* 35603 */ {(13<<2)|2,{95,71,0}}, +/* 35604 */ {(13<<2)|2,{95,71,0}}, +/* 35605 */ {(13<<2)|2,{95,71,0}}, +/* 35606 */ {(13<<2)|2,{95,71,0}}, +/* 35607 */ {(13<<2)|2,{95,71,0}}, +/* 35608 */ {(13<<2)|2,{95,72,0}}, +/* 35609 */ {(13<<2)|2,{95,72,0}}, +/* 35610 */ {(13<<2)|2,{95,72,0}}, +/* 35611 */ {(13<<2)|2,{95,72,0}}, +/* 35612 */ {(13<<2)|2,{95,72,0}}, +/* 35613 */ {(13<<2)|2,{95,72,0}}, +/* 35614 */ {(13<<2)|2,{95,72,0}}, +/* 35615 */ {(13<<2)|2,{95,72,0}}, +/* 35616 */ {(13<<2)|2,{95,73,0}}, +/* 35617 */ {(13<<2)|2,{95,73,0}}, +/* 35618 */ {(13<<2)|2,{95,73,0}}, +/* 35619 */ {(13<<2)|2,{95,73,0}}, +/* 35620 */ {(13<<2)|2,{95,73,0}}, +/* 35621 */ {(13<<2)|2,{95,73,0}}, +/* 35622 */ {(13<<2)|2,{95,73,0}}, +/* 35623 */ {(13<<2)|2,{95,73,0}}, +/* 35624 */ {(13<<2)|2,{95,74,0}}, +/* 35625 */ {(13<<2)|2,{95,74,0}}, +/* 35626 */ {(13<<2)|2,{95,74,0}}, +/* 35627 */ {(13<<2)|2,{95,74,0}}, +/* 35628 */ {(13<<2)|2,{95,74,0}}, +/* 35629 */ {(13<<2)|2,{95,74,0}}, +/* 35630 */ {(13<<2)|2,{95,74,0}}, +/* 35631 */ {(13<<2)|2,{95,74,0}}, +/* 35632 */ {(13<<2)|2,{95,75,0}}, +/* 35633 */ {(13<<2)|2,{95,75,0}}, +/* 35634 */ {(13<<2)|2,{95,75,0}}, +/* 35635 */ {(13<<2)|2,{95,75,0}}, +/* 35636 */ {(13<<2)|2,{95,75,0}}, +/* 35637 */ {(13<<2)|2,{95,75,0}}, +/* 35638 */ {(13<<2)|2,{95,75,0}}, +/* 35639 */ {(13<<2)|2,{95,75,0}}, +/* 35640 */ {(13<<2)|2,{95,76,0}}, +/* 35641 */ {(13<<2)|2,{95,76,0}}, +/* 35642 */ {(13<<2)|2,{95,76,0}}, +/* 35643 */ {(13<<2)|2,{95,76,0}}, +/* 35644 */ {(13<<2)|2,{95,76,0}}, +/* 35645 */ {(13<<2)|2,{95,76,0}}, +/* 35646 */ {(13<<2)|2,{95,76,0}}, +/* 35647 */ {(13<<2)|2,{95,76,0}}, +/* 35648 */ {(13<<2)|2,{95,77,0}}, +/* 35649 */ {(13<<2)|2,{95,77,0}}, +/* 35650 */ {(13<<2)|2,{95,77,0}}, +/* 35651 */ {(13<<2)|2,{95,77,0}}, +/* 35652 */ {(13<<2)|2,{95,77,0}}, +/* 35653 */ {(13<<2)|2,{95,77,0}}, +/* 35654 */ {(13<<2)|2,{95,77,0}}, +/* 35655 */ {(13<<2)|2,{95,77,0}}, +/* 35656 */ {(13<<2)|2,{95,78,0}}, +/* 35657 */ {(13<<2)|2,{95,78,0}}, +/* 35658 */ {(13<<2)|2,{95,78,0}}, +/* 35659 */ {(13<<2)|2,{95,78,0}}, +/* 35660 */ {(13<<2)|2,{95,78,0}}, +/* 35661 */ {(13<<2)|2,{95,78,0}}, +/* 35662 */ {(13<<2)|2,{95,78,0}}, +/* 35663 */ {(13<<2)|2,{95,78,0}}, +/* 35664 */ {(13<<2)|2,{95,79,0}}, +/* 35665 */ {(13<<2)|2,{95,79,0}}, +/* 35666 */ {(13<<2)|2,{95,79,0}}, +/* 35667 */ {(13<<2)|2,{95,79,0}}, +/* 35668 */ {(13<<2)|2,{95,79,0}}, +/* 35669 */ {(13<<2)|2,{95,79,0}}, +/* 35670 */ {(13<<2)|2,{95,79,0}}, +/* 35671 */ {(13<<2)|2,{95,79,0}}, +/* 35672 */ {(13<<2)|2,{95,80,0}}, +/* 35673 */ {(13<<2)|2,{95,80,0}}, +/* 35674 */ {(13<<2)|2,{95,80,0}}, +/* 35675 */ {(13<<2)|2,{95,80,0}}, +/* 35676 */ {(13<<2)|2,{95,80,0}}, +/* 35677 */ {(13<<2)|2,{95,80,0}}, +/* 35678 */ {(13<<2)|2,{95,80,0}}, +/* 35679 */ {(13<<2)|2,{95,80,0}}, +/* 35680 */ {(13<<2)|2,{95,81,0}}, +/* 35681 */ {(13<<2)|2,{95,81,0}}, +/* 35682 */ {(13<<2)|2,{95,81,0}}, +/* 35683 */ {(13<<2)|2,{95,81,0}}, +/* 35684 */ {(13<<2)|2,{95,81,0}}, +/* 35685 */ {(13<<2)|2,{95,81,0}}, +/* 35686 */ {(13<<2)|2,{95,81,0}}, +/* 35687 */ {(13<<2)|2,{95,81,0}}, +/* 35688 */ {(13<<2)|2,{95,82,0}}, +/* 35689 */ {(13<<2)|2,{95,82,0}}, +/* 35690 */ {(13<<2)|2,{95,82,0}}, +/* 35691 */ {(13<<2)|2,{95,82,0}}, +/* 35692 */ {(13<<2)|2,{95,82,0}}, +/* 35693 */ {(13<<2)|2,{95,82,0}}, +/* 35694 */ {(13<<2)|2,{95,82,0}}, +/* 35695 */ {(13<<2)|2,{95,82,0}}, +/* 35696 */ {(13<<2)|2,{95,83,0}}, +/* 35697 */ {(13<<2)|2,{95,83,0}}, +/* 35698 */ {(13<<2)|2,{95,83,0}}, +/* 35699 */ {(13<<2)|2,{95,83,0}}, +/* 35700 */ {(13<<2)|2,{95,83,0}}, +/* 35701 */ {(13<<2)|2,{95,83,0}}, +/* 35702 */ {(13<<2)|2,{95,83,0}}, +/* 35703 */ {(13<<2)|2,{95,83,0}}, +/* 35704 */ {(13<<2)|2,{95,84,0}}, +/* 35705 */ {(13<<2)|2,{95,84,0}}, +/* 35706 */ {(13<<2)|2,{95,84,0}}, +/* 35707 */ {(13<<2)|2,{95,84,0}}, +/* 35708 */ {(13<<2)|2,{95,84,0}}, +/* 35709 */ {(13<<2)|2,{95,84,0}}, +/* 35710 */ {(13<<2)|2,{95,84,0}}, +/* 35711 */ {(13<<2)|2,{95,84,0}}, +/* 35712 */ {(13<<2)|2,{95,85,0}}, +/* 35713 */ {(13<<2)|2,{95,85,0}}, +/* 35714 */ {(13<<2)|2,{95,85,0}}, +/* 35715 */ {(13<<2)|2,{95,85,0}}, +/* 35716 */ {(13<<2)|2,{95,85,0}}, +/* 35717 */ {(13<<2)|2,{95,85,0}}, +/* 35718 */ {(13<<2)|2,{95,85,0}}, +/* 35719 */ {(13<<2)|2,{95,85,0}}, +/* 35720 */ {(13<<2)|2,{95,86,0}}, +/* 35721 */ {(13<<2)|2,{95,86,0}}, +/* 35722 */ {(13<<2)|2,{95,86,0}}, +/* 35723 */ {(13<<2)|2,{95,86,0}}, +/* 35724 */ {(13<<2)|2,{95,86,0}}, +/* 35725 */ {(13<<2)|2,{95,86,0}}, +/* 35726 */ {(13<<2)|2,{95,86,0}}, +/* 35727 */ {(13<<2)|2,{95,86,0}}, +/* 35728 */ {(13<<2)|2,{95,87,0}}, +/* 35729 */ {(13<<2)|2,{95,87,0}}, +/* 35730 */ {(13<<2)|2,{95,87,0}}, +/* 35731 */ {(13<<2)|2,{95,87,0}}, +/* 35732 */ {(13<<2)|2,{95,87,0}}, +/* 35733 */ {(13<<2)|2,{95,87,0}}, +/* 35734 */ {(13<<2)|2,{95,87,0}}, +/* 35735 */ {(13<<2)|2,{95,87,0}}, +/* 35736 */ {(13<<2)|2,{95,89,0}}, +/* 35737 */ {(13<<2)|2,{95,89,0}}, +/* 35738 */ {(13<<2)|2,{95,89,0}}, +/* 35739 */ {(13<<2)|2,{95,89,0}}, +/* 35740 */ {(13<<2)|2,{95,89,0}}, +/* 35741 */ {(13<<2)|2,{95,89,0}}, +/* 35742 */ {(13<<2)|2,{95,89,0}}, +/* 35743 */ {(13<<2)|2,{95,89,0}}, +/* 35744 */ {(13<<2)|2,{95,106,0}}, +/* 35745 */ {(13<<2)|2,{95,106,0}}, +/* 35746 */ {(13<<2)|2,{95,106,0}}, +/* 35747 */ {(13<<2)|2,{95,106,0}}, +/* 35748 */ {(13<<2)|2,{95,106,0}}, +/* 35749 */ {(13<<2)|2,{95,106,0}}, +/* 35750 */ {(13<<2)|2,{95,106,0}}, +/* 35751 */ {(13<<2)|2,{95,106,0}}, +/* 35752 */ {(13<<2)|2,{95,107,0}}, +/* 35753 */ {(13<<2)|2,{95,107,0}}, +/* 35754 */ {(13<<2)|2,{95,107,0}}, +/* 35755 */ {(13<<2)|2,{95,107,0}}, +/* 35756 */ {(13<<2)|2,{95,107,0}}, +/* 35757 */ {(13<<2)|2,{95,107,0}}, +/* 35758 */ {(13<<2)|2,{95,107,0}}, +/* 35759 */ {(13<<2)|2,{95,107,0}}, +/* 35760 */ {(13<<2)|2,{95,113,0}}, +/* 35761 */ {(13<<2)|2,{95,113,0}}, +/* 35762 */ {(13<<2)|2,{95,113,0}}, +/* 35763 */ {(13<<2)|2,{95,113,0}}, +/* 35764 */ {(13<<2)|2,{95,113,0}}, +/* 35765 */ {(13<<2)|2,{95,113,0}}, +/* 35766 */ {(13<<2)|2,{95,113,0}}, +/* 35767 */ {(13<<2)|2,{95,113,0}}, +/* 35768 */ {(13<<2)|2,{95,118,0}}, +/* 35769 */ {(13<<2)|2,{95,118,0}}, +/* 35770 */ {(13<<2)|2,{95,118,0}}, +/* 35771 */ {(13<<2)|2,{95,118,0}}, +/* 35772 */ {(13<<2)|2,{95,118,0}}, +/* 35773 */ {(13<<2)|2,{95,118,0}}, +/* 35774 */ {(13<<2)|2,{95,118,0}}, +/* 35775 */ {(13<<2)|2,{95,118,0}}, +/* 35776 */ {(13<<2)|2,{95,119,0}}, +/* 35777 */ {(13<<2)|2,{95,119,0}}, +/* 35778 */ {(13<<2)|2,{95,119,0}}, +/* 35779 */ {(13<<2)|2,{95,119,0}}, +/* 35780 */ {(13<<2)|2,{95,119,0}}, +/* 35781 */ {(13<<2)|2,{95,119,0}}, +/* 35782 */ {(13<<2)|2,{95,119,0}}, +/* 35783 */ {(13<<2)|2,{95,119,0}}, +/* 35784 */ {(13<<2)|2,{95,120,0}}, +/* 35785 */ {(13<<2)|2,{95,120,0}}, +/* 35786 */ {(13<<2)|2,{95,120,0}}, +/* 35787 */ {(13<<2)|2,{95,120,0}}, +/* 35788 */ {(13<<2)|2,{95,120,0}}, +/* 35789 */ {(13<<2)|2,{95,120,0}}, +/* 35790 */ {(13<<2)|2,{95,120,0}}, +/* 35791 */ {(13<<2)|2,{95,120,0}}, +/* 35792 */ {(13<<2)|2,{95,121,0}}, +/* 35793 */ {(13<<2)|2,{95,121,0}}, +/* 35794 */ {(13<<2)|2,{95,121,0}}, +/* 35795 */ {(13<<2)|2,{95,121,0}}, +/* 35796 */ {(13<<2)|2,{95,121,0}}, +/* 35797 */ {(13<<2)|2,{95,121,0}}, +/* 35798 */ {(13<<2)|2,{95,121,0}}, +/* 35799 */ {(13<<2)|2,{95,121,0}}, +/* 35800 */ {(13<<2)|2,{95,122,0}}, +/* 35801 */ {(13<<2)|2,{95,122,0}}, +/* 35802 */ {(13<<2)|2,{95,122,0}}, +/* 35803 */ {(13<<2)|2,{95,122,0}}, +/* 35804 */ {(13<<2)|2,{95,122,0}}, +/* 35805 */ {(13<<2)|2,{95,122,0}}, +/* 35806 */ {(13<<2)|2,{95,122,0}}, +/* 35807 */ {(13<<2)|2,{95,122,0}}, +/* 35808 */ {(14<<2)|2,{95,38,0}}, +/* 35809 */ {(14<<2)|2,{95,38,0}}, +/* 35810 */ {(14<<2)|2,{95,38,0}}, +/* 35811 */ {(14<<2)|2,{95,38,0}}, +/* 35812 */ {(14<<2)|2,{95,42,0}}, +/* 35813 */ {(14<<2)|2,{95,42,0}}, +/* 35814 */ {(14<<2)|2,{95,42,0}}, +/* 35815 */ {(14<<2)|2,{95,42,0}}, +/* 35816 */ {(14<<2)|2,{95,44,0}}, +/* 35817 */ {(14<<2)|2,{95,44,0}}, +/* 35818 */ {(14<<2)|2,{95,44,0}}, +/* 35819 */ {(14<<2)|2,{95,44,0}}, +/* 35820 */ {(14<<2)|2,{95,59,0}}, +/* 35821 */ {(14<<2)|2,{95,59,0}}, +/* 35822 */ {(14<<2)|2,{95,59,0}}, +/* 35823 */ {(14<<2)|2,{95,59,0}}, +/* 35824 */ {(14<<2)|2,{95,88,0}}, +/* 35825 */ {(14<<2)|2,{95,88,0}}, +/* 35826 */ {(14<<2)|2,{95,88,0}}, +/* 35827 */ {(14<<2)|2,{95,88,0}}, +/* 35828 */ {(14<<2)|2,{95,90,0}}, +/* 35829 */ {(14<<2)|2,{95,90,0}}, +/* 35830 */ {(14<<2)|2,{95,90,0}}, +/* 35831 */ {(14<<2)|2,{95,90,0}}, +/* 35832 */ {(16<<2)|2,{95,33,0}}, +/* 35833 */ {(16<<2)|2,{95,34,0}}, +/* 35834 */ {(16<<2)|2,{95,40,0}}, +/* 35835 */ {(16<<2)|2,{95,41,0}}, +/* 35836 */ {(16<<2)|2,{95,63,0}}, +/* 35837 */ {(6<<2)|1,{95,0,0}}, +/* 35838 */ {(6<<2)|1,{95,0,0}}, +/* 35839 */ {(6<<2)|1,{95,0,0}}, +/* 35840 */ {(16<<2)|3,{98,48,48}}, +/* 35841 */ {(16<<2)|3,{98,48,49}}, +/* 35842 */ {(16<<2)|3,{98,48,50}}, +/* 35843 */ {(16<<2)|3,{98,48,97}}, +/* 35844 */ {(16<<2)|3,{98,48,99}}, +/* 35845 */ {(16<<2)|3,{98,48,101}}, +/* 35846 */ {(16<<2)|3,{98,48,105}}, +/* 35847 */ {(16<<2)|3,{98,48,111}}, +/* 35848 */ {(16<<2)|3,{98,48,115}}, +/* 35849 */ {(16<<2)|3,{98,48,116}}, +/* 35850 */ {(11<<2)|2,{98,48,0}}, +/* 35851 */ {(11<<2)|2,{98,48,0}}, +/* 35852 */ {(11<<2)|2,{98,48,0}}, +/* 35853 */ {(11<<2)|2,{98,48,0}}, +/* 35854 */ {(11<<2)|2,{98,48,0}}, +/* 35855 */ {(11<<2)|2,{98,48,0}}, +/* 35856 */ {(11<<2)|2,{98,48,0}}, +/* 35857 */ {(11<<2)|2,{98,48,0}}, +/* 35858 */ {(11<<2)|2,{98,48,0}}, +/* 35859 */ {(11<<2)|2,{98,48,0}}, +/* 35860 */ {(11<<2)|2,{98,48,0}}, +/* 35861 */ {(11<<2)|2,{98,48,0}}, +/* 35862 */ {(11<<2)|2,{98,48,0}}, +/* 35863 */ {(11<<2)|2,{98,48,0}}, +/* 35864 */ {(11<<2)|2,{98,48,0}}, +/* 35865 */ {(11<<2)|2,{98,48,0}}, +/* 35866 */ {(11<<2)|2,{98,48,0}}, +/* 35867 */ {(11<<2)|2,{98,48,0}}, +/* 35868 */ {(11<<2)|2,{98,48,0}}, +/* 35869 */ {(11<<2)|2,{98,48,0}}, +/* 35870 */ {(11<<2)|2,{98,48,0}}, +/* 35871 */ {(11<<2)|2,{98,48,0}}, +/* 35872 */ {(16<<2)|3,{98,49,48}}, +/* 35873 */ {(16<<2)|3,{98,49,49}}, +/* 35874 */ {(16<<2)|3,{98,49,50}}, +/* 35875 */ {(16<<2)|3,{98,49,97}}, +/* 35876 */ {(16<<2)|3,{98,49,99}}, +/* 35877 */ {(16<<2)|3,{98,49,101}}, +/* 35878 */ {(16<<2)|3,{98,49,105}}, +/* 35879 */ {(16<<2)|3,{98,49,111}}, +/* 35880 */ {(16<<2)|3,{98,49,115}}, +/* 35881 */ {(16<<2)|3,{98,49,116}}, +/* 35882 */ {(11<<2)|2,{98,49,0}}, +/* 35883 */ {(11<<2)|2,{98,49,0}}, +/* 35884 */ {(11<<2)|2,{98,49,0}}, +/* 35885 */ {(11<<2)|2,{98,49,0}}, +/* 35886 */ {(11<<2)|2,{98,49,0}}, +/* 35887 */ {(11<<2)|2,{98,49,0}}, +/* 35888 */ {(11<<2)|2,{98,49,0}}, +/* 35889 */ {(11<<2)|2,{98,49,0}}, +/* 35890 */ {(11<<2)|2,{98,49,0}}, +/* 35891 */ {(11<<2)|2,{98,49,0}}, +/* 35892 */ {(11<<2)|2,{98,49,0}}, +/* 35893 */ {(11<<2)|2,{98,49,0}}, +/* 35894 */ {(11<<2)|2,{98,49,0}}, +/* 35895 */ {(11<<2)|2,{98,49,0}}, +/* 35896 */ {(11<<2)|2,{98,49,0}}, +/* 35897 */ {(11<<2)|2,{98,49,0}}, +/* 35898 */ {(11<<2)|2,{98,49,0}}, +/* 35899 */ {(11<<2)|2,{98,49,0}}, +/* 35900 */ {(11<<2)|2,{98,49,0}}, +/* 35901 */ {(11<<2)|2,{98,49,0}}, +/* 35902 */ {(11<<2)|2,{98,49,0}}, +/* 35903 */ {(11<<2)|2,{98,49,0}}, +/* 35904 */ {(16<<2)|3,{98,50,48}}, +/* 35905 */ {(16<<2)|3,{98,50,49}}, +/* 35906 */ {(16<<2)|3,{98,50,50}}, +/* 35907 */ {(16<<2)|3,{98,50,97}}, +/* 35908 */ {(16<<2)|3,{98,50,99}}, +/* 35909 */ {(16<<2)|3,{98,50,101}}, +/* 35910 */ {(16<<2)|3,{98,50,105}}, +/* 35911 */ {(16<<2)|3,{98,50,111}}, +/* 35912 */ {(16<<2)|3,{98,50,115}}, +/* 35913 */ {(16<<2)|3,{98,50,116}}, +/* 35914 */ {(11<<2)|2,{98,50,0}}, +/* 35915 */ {(11<<2)|2,{98,50,0}}, +/* 35916 */ {(11<<2)|2,{98,50,0}}, +/* 35917 */ {(11<<2)|2,{98,50,0}}, +/* 35918 */ {(11<<2)|2,{98,50,0}}, +/* 35919 */ {(11<<2)|2,{98,50,0}}, +/* 35920 */ {(11<<2)|2,{98,50,0}}, +/* 35921 */ {(11<<2)|2,{98,50,0}}, +/* 35922 */ {(11<<2)|2,{98,50,0}}, +/* 35923 */ {(11<<2)|2,{98,50,0}}, +/* 35924 */ {(11<<2)|2,{98,50,0}}, +/* 35925 */ {(11<<2)|2,{98,50,0}}, +/* 35926 */ {(11<<2)|2,{98,50,0}}, +/* 35927 */ {(11<<2)|2,{98,50,0}}, +/* 35928 */ {(11<<2)|2,{98,50,0}}, +/* 35929 */ {(11<<2)|2,{98,50,0}}, +/* 35930 */ {(11<<2)|2,{98,50,0}}, +/* 35931 */ {(11<<2)|2,{98,50,0}}, +/* 35932 */ {(11<<2)|2,{98,50,0}}, +/* 35933 */ {(11<<2)|2,{98,50,0}}, +/* 35934 */ {(11<<2)|2,{98,50,0}}, +/* 35935 */ {(11<<2)|2,{98,50,0}}, +/* 35936 */ {(16<<2)|3,{98,97,48}}, +/* 35937 */ {(16<<2)|3,{98,97,49}}, +/* 35938 */ {(16<<2)|3,{98,97,50}}, +/* 35939 */ {(16<<2)|3,{98,97,97}}, +/* 35940 */ {(16<<2)|3,{98,97,99}}, +/* 35941 */ {(16<<2)|3,{98,97,101}}, +/* 35942 */ {(16<<2)|3,{98,97,105}}, +/* 35943 */ {(16<<2)|3,{98,97,111}}, +/* 35944 */ {(16<<2)|3,{98,97,115}}, +/* 35945 */ {(16<<2)|3,{98,97,116}}, +/* 35946 */ {(11<<2)|2,{98,97,0}}, +/* 35947 */ {(11<<2)|2,{98,97,0}}, +/* 35948 */ {(11<<2)|2,{98,97,0}}, +/* 35949 */ {(11<<2)|2,{98,97,0}}, +/* 35950 */ {(11<<2)|2,{98,97,0}}, +/* 35951 */ {(11<<2)|2,{98,97,0}}, +/* 35952 */ {(11<<2)|2,{98,97,0}}, +/* 35953 */ {(11<<2)|2,{98,97,0}}, +/* 35954 */ {(11<<2)|2,{98,97,0}}, +/* 35955 */ {(11<<2)|2,{98,97,0}}, +/* 35956 */ {(11<<2)|2,{98,97,0}}, +/* 35957 */ {(11<<2)|2,{98,97,0}}, +/* 35958 */ {(11<<2)|2,{98,97,0}}, +/* 35959 */ {(11<<2)|2,{98,97,0}}, +/* 35960 */ {(11<<2)|2,{98,97,0}}, +/* 35961 */ {(11<<2)|2,{98,97,0}}, +/* 35962 */ {(11<<2)|2,{98,97,0}}, +/* 35963 */ {(11<<2)|2,{98,97,0}}, +/* 35964 */ {(11<<2)|2,{98,97,0}}, +/* 35965 */ {(11<<2)|2,{98,97,0}}, +/* 35966 */ {(11<<2)|2,{98,97,0}}, +/* 35967 */ {(11<<2)|2,{98,97,0}}, +/* 35968 */ {(16<<2)|3,{98,99,48}}, +/* 35969 */ {(16<<2)|3,{98,99,49}}, +/* 35970 */ {(16<<2)|3,{98,99,50}}, +/* 35971 */ {(16<<2)|3,{98,99,97}}, +/* 35972 */ {(16<<2)|3,{98,99,99}}, +/* 35973 */ {(16<<2)|3,{98,99,101}}, +/* 35974 */ {(16<<2)|3,{98,99,105}}, +/* 35975 */ {(16<<2)|3,{98,99,111}}, +/* 35976 */ {(16<<2)|3,{98,99,115}}, +/* 35977 */ {(16<<2)|3,{98,99,116}}, +/* 35978 */ {(11<<2)|2,{98,99,0}}, +/* 35979 */ {(11<<2)|2,{98,99,0}}, +/* 35980 */ {(11<<2)|2,{98,99,0}}, +/* 35981 */ {(11<<2)|2,{98,99,0}}, +/* 35982 */ {(11<<2)|2,{98,99,0}}, +/* 35983 */ {(11<<2)|2,{98,99,0}}, +/* 35984 */ {(11<<2)|2,{98,99,0}}, +/* 35985 */ {(11<<2)|2,{98,99,0}}, +/* 35986 */ {(11<<2)|2,{98,99,0}}, +/* 35987 */ {(11<<2)|2,{98,99,0}}, +/* 35988 */ {(11<<2)|2,{98,99,0}}, +/* 35989 */ {(11<<2)|2,{98,99,0}}, +/* 35990 */ {(11<<2)|2,{98,99,0}}, +/* 35991 */ {(11<<2)|2,{98,99,0}}, +/* 35992 */ {(11<<2)|2,{98,99,0}}, +/* 35993 */ {(11<<2)|2,{98,99,0}}, +/* 35994 */ {(11<<2)|2,{98,99,0}}, +/* 35995 */ {(11<<2)|2,{98,99,0}}, +/* 35996 */ {(11<<2)|2,{98,99,0}}, +/* 35997 */ {(11<<2)|2,{98,99,0}}, +/* 35998 */ {(11<<2)|2,{98,99,0}}, +/* 35999 */ {(11<<2)|2,{98,99,0}}, +/* 36000 */ {(16<<2)|3,{98,101,48}}, +/* 36001 */ {(16<<2)|3,{98,101,49}}, +/* 36002 */ {(16<<2)|3,{98,101,50}}, +/* 36003 */ {(16<<2)|3,{98,101,97}}, +/* 36004 */ {(16<<2)|3,{98,101,99}}, +/* 36005 */ {(16<<2)|3,{98,101,101}}, +/* 36006 */ {(16<<2)|3,{98,101,105}}, +/* 36007 */ {(16<<2)|3,{98,101,111}}, +/* 36008 */ {(16<<2)|3,{98,101,115}}, +/* 36009 */ {(16<<2)|3,{98,101,116}}, +/* 36010 */ {(11<<2)|2,{98,101,0}}, +/* 36011 */ {(11<<2)|2,{98,101,0}}, +/* 36012 */ {(11<<2)|2,{98,101,0}}, +/* 36013 */ {(11<<2)|2,{98,101,0}}, +/* 36014 */ {(11<<2)|2,{98,101,0}}, +/* 36015 */ {(11<<2)|2,{98,101,0}}, +/* 36016 */ {(11<<2)|2,{98,101,0}}, +/* 36017 */ {(11<<2)|2,{98,101,0}}, +/* 36018 */ {(11<<2)|2,{98,101,0}}, +/* 36019 */ {(11<<2)|2,{98,101,0}}, +/* 36020 */ {(11<<2)|2,{98,101,0}}, +/* 36021 */ {(11<<2)|2,{98,101,0}}, +/* 36022 */ {(11<<2)|2,{98,101,0}}, +/* 36023 */ {(11<<2)|2,{98,101,0}}, +/* 36024 */ {(11<<2)|2,{98,101,0}}, +/* 36025 */ {(11<<2)|2,{98,101,0}}, +/* 36026 */ {(11<<2)|2,{98,101,0}}, +/* 36027 */ {(11<<2)|2,{98,101,0}}, +/* 36028 */ {(11<<2)|2,{98,101,0}}, +/* 36029 */ {(11<<2)|2,{98,101,0}}, +/* 36030 */ {(11<<2)|2,{98,101,0}}, +/* 36031 */ {(11<<2)|2,{98,101,0}}, +/* 36032 */ {(16<<2)|3,{98,105,48}}, +/* 36033 */ {(16<<2)|3,{98,105,49}}, +/* 36034 */ {(16<<2)|3,{98,105,50}}, +/* 36035 */ {(16<<2)|3,{98,105,97}}, +/* 36036 */ {(16<<2)|3,{98,105,99}}, +/* 36037 */ {(16<<2)|3,{98,105,101}}, +/* 36038 */ {(16<<2)|3,{98,105,105}}, +/* 36039 */ {(16<<2)|3,{98,105,111}}, +/* 36040 */ {(16<<2)|3,{98,105,115}}, +/* 36041 */ {(16<<2)|3,{98,105,116}}, +/* 36042 */ {(11<<2)|2,{98,105,0}}, +/* 36043 */ {(11<<2)|2,{98,105,0}}, +/* 36044 */ {(11<<2)|2,{98,105,0}}, +/* 36045 */ {(11<<2)|2,{98,105,0}}, +/* 36046 */ {(11<<2)|2,{98,105,0}}, +/* 36047 */ {(11<<2)|2,{98,105,0}}, +/* 36048 */ {(11<<2)|2,{98,105,0}}, +/* 36049 */ {(11<<2)|2,{98,105,0}}, +/* 36050 */ {(11<<2)|2,{98,105,0}}, +/* 36051 */ {(11<<2)|2,{98,105,0}}, +/* 36052 */ {(11<<2)|2,{98,105,0}}, +/* 36053 */ {(11<<2)|2,{98,105,0}}, +/* 36054 */ {(11<<2)|2,{98,105,0}}, +/* 36055 */ {(11<<2)|2,{98,105,0}}, +/* 36056 */ {(11<<2)|2,{98,105,0}}, +/* 36057 */ {(11<<2)|2,{98,105,0}}, +/* 36058 */ {(11<<2)|2,{98,105,0}}, +/* 36059 */ {(11<<2)|2,{98,105,0}}, +/* 36060 */ {(11<<2)|2,{98,105,0}}, +/* 36061 */ {(11<<2)|2,{98,105,0}}, +/* 36062 */ {(11<<2)|2,{98,105,0}}, +/* 36063 */ {(11<<2)|2,{98,105,0}}, +/* 36064 */ {(16<<2)|3,{98,111,48}}, +/* 36065 */ {(16<<2)|3,{98,111,49}}, +/* 36066 */ {(16<<2)|3,{98,111,50}}, +/* 36067 */ {(16<<2)|3,{98,111,97}}, +/* 36068 */ {(16<<2)|3,{98,111,99}}, +/* 36069 */ {(16<<2)|3,{98,111,101}}, +/* 36070 */ {(16<<2)|3,{98,111,105}}, +/* 36071 */ {(16<<2)|3,{98,111,111}}, +/* 36072 */ {(16<<2)|3,{98,111,115}}, +/* 36073 */ {(16<<2)|3,{98,111,116}}, +/* 36074 */ {(11<<2)|2,{98,111,0}}, +/* 36075 */ {(11<<2)|2,{98,111,0}}, +/* 36076 */ {(11<<2)|2,{98,111,0}}, +/* 36077 */ {(11<<2)|2,{98,111,0}}, +/* 36078 */ {(11<<2)|2,{98,111,0}}, +/* 36079 */ {(11<<2)|2,{98,111,0}}, +/* 36080 */ {(11<<2)|2,{98,111,0}}, +/* 36081 */ {(11<<2)|2,{98,111,0}}, +/* 36082 */ {(11<<2)|2,{98,111,0}}, +/* 36083 */ {(11<<2)|2,{98,111,0}}, +/* 36084 */ {(11<<2)|2,{98,111,0}}, +/* 36085 */ {(11<<2)|2,{98,111,0}}, +/* 36086 */ {(11<<2)|2,{98,111,0}}, +/* 36087 */ {(11<<2)|2,{98,111,0}}, +/* 36088 */ {(11<<2)|2,{98,111,0}}, +/* 36089 */ {(11<<2)|2,{98,111,0}}, +/* 36090 */ {(11<<2)|2,{98,111,0}}, +/* 36091 */ {(11<<2)|2,{98,111,0}}, +/* 36092 */ {(11<<2)|2,{98,111,0}}, +/* 36093 */ {(11<<2)|2,{98,111,0}}, +/* 36094 */ {(11<<2)|2,{98,111,0}}, +/* 36095 */ {(11<<2)|2,{98,111,0}}, +/* 36096 */ {(16<<2)|3,{98,115,48}}, +/* 36097 */ {(16<<2)|3,{98,115,49}}, +/* 36098 */ {(16<<2)|3,{98,115,50}}, +/* 36099 */ {(16<<2)|3,{98,115,97}}, +/* 36100 */ {(16<<2)|3,{98,115,99}}, +/* 36101 */ {(16<<2)|3,{98,115,101}}, +/* 36102 */ {(16<<2)|3,{98,115,105}}, +/* 36103 */ {(16<<2)|3,{98,115,111}}, +/* 36104 */ {(16<<2)|3,{98,115,115}}, +/* 36105 */ {(16<<2)|3,{98,115,116}}, +/* 36106 */ {(11<<2)|2,{98,115,0}}, +/* 36107 */ {(11<<2)|2,{98,115,0}}, +/* 36108 */ {(11<<2)|2,{98,115,0}}, +/* 36109 */ {(11<<2)|2,{98,115,0}}, +/* 36110 */ {(11<<2)|2,{98,115,0}}, +/* 36111 */ {(11<<2)|2,{98,115,0}}, +/* 36112 */ {(11<<2)|2,{98,115,0}}, +/* 36113 */ {(11<<2)|2,{98,115,0}}, +/* 36114 */ {(11<<2)|2,{98,115,0}}, +/* 36115 */ {(11<<2)|2,{98,115,0}}, +/* 36116 */ {(11<<2)|2,{98,115,0}}, +/* 36117 */ {(11<<2)|2,{98,115,0}}, +/* 36118 */ {(11<<2)|2,{98,115,0}}, +/* 36119 */ {(11<<2)|2,{98,115,0}}, +/* 36120 */ {(11<<2)|2,{98,115,0}}, +/* 36121 */ {(11<<2)|2,{98,115,0}}, +/* 36122 */ {(11<<2)|2,{98,115,0}}, +/* 36123 */ {(11<<2)|2,{98,115,0}}, +/* 36124 */ {(11<<2)|2,{98,115,0}}, +/* 36125 */ {(11<<2)|2,{98,115,0}}, +/* 36126 */ {(11<<2)|2,{98,115,0}}, +/* 36127 */ {(11<<2)|2,{98,115,0}}, +/* 36128 */ {(16<<2)|3,{98,116,48}}, +/* 36129 */ {(16<<2)|3,{98,116,49}}, +/* 36130 */ {(16<<2)|3,{98,116,50}}, +/* 36131 */ {(16<<2)|3,{98,116,97}}, +/* 36132 */ {(16<<2)|3,{98,116,99}}, +/* 36133 */ {(16<<2)|3,{98,116,101}}, +/* 36134 */ {(16<<2)|3,{98,116,105}}, +/* 36135 */ {(16<<2)|3,{98,116,111}}, +/* 36136 */ {(16<<2)|3,{98,116,115}}, +/* 36137 */ {(16<<2)|3,{98,116,116}}, +/* 36138 */ {(11<<2)|2,{98,116,0}}, +/* 36139 */ {(11<<2)|2,{98,116,0}}, +/* 36140 */ {(11<<2)|2,{98,116,0}}, +/* 36141 */ {(11<<2)|2,{98,116,0}}, +/* 36142 */ {(11<<2)|2,{98,116,0}}, +/* 36143 */ {(11<<2)|2,{98,116,0}}, +/* 36144 */ {(11<<2)|2,{98,116,0}}, +/* 36145 */ {(11<<2)|2,{98,116,0}}, +/* 36146 */ {(11<<2)|2,{98,116,0}}, +/* 36147 */ {(11<<2)|2,{98,116,0}}, +/* 36148 */ {(11<<2)|2,{98,116,0}}, +/* 36149 */ {(11<<2)|2,{98,116,0}}, +/* 36150 */ {(11<<2)|2,{98,116,0}}, +/* 36151 */ {(11<<2)|2,{98,116,0}}, +/* 36152 */ {(11<<2)|2,{98,116,0}}, +/* 36153 */ {(11<<2)|2,{98,116,0}}, +/* 36154 */ {(11<<2)|2,{98,116,0}}, +/* 36155 */ {(11<<2)|2,{98,116,0}}, +/* 36156 */ {(11<<2)|2,{98,116,0}}, +/* 36157 */ {(11<<2)|2,{98,116,0}}, +/* 36158 */ {(11<<2)|2,{98,116,0}}, +/* 36159 */ {(11<<2)|2,{98,116,0}}, +/* 36160 */ {(12<<2)|2,{98,32,0}}, +/* 36161 */ {(12<<2)|2,{98,32,0}}, +/* 36162 */ {(12<<2)|2,{98,32,0}}, +/* 36163 */ {(12<<2)|2,{98,32,0}}, +/* 36164 */ {(12<<2)|2,{98,32,0}}, +/* 36165 */ {(12<<2)|2,{98,32,0}}, +/* 36166 */ {(12<<2)|2,{98,32,0}}, +/* 36167 */ {(12<<2)|2,{98,32,0}}, +/* 36168 */ {(12<<2)|2,{98,32,0}}, +/* 36169 */ {(12<<2)|2,{98,32,0}}, +/* 36170 */ {(12<<2)|2,{98,32,0}}, +/* 36171 */ {(12<<2)|2,{98,32,0}}, +/* 36172 */ {(12<<2)|2,{98,32,0}}, +/* 36173 */ {(12<<2)|2,{98,32,0}}, +/* 36174 */ {(12<<2)|2,{98,32,0}}, +/* 36175 */ {(12<<2)|2,{98,32,0}}, +/* 36176 */ {(12<<2)|2,{98,37,0}}, +/* 36177 */ {(12<<2)|2,{98,37,0}}, +/* 36178 */ {(12<<2)|2,{98,37,0}}, +/* 36179 */ {(12<<2)|2,{98,37,0}}, +/* 36180 */ {(12<<2)|2,{98,37,0}}, +/* 36181 */ {(12<<2)|2,{98,37,0}}, +/* 36182 */ {(12<<2)|2,{98,37,0}}, +/* 36183 */ {(12<<2)|2,{98,37,0}}, +/* 36184 */ {(12<<2)|2,{98,37,0}}, +/* 36185 */ {(12<<2)|2,{98,37,0}}, +/* 36186 */ {(12<<2)|2,{98,37,0}}, +/* 36187 */ {(12<<2)|2,{98,37,0}}, +/* 36188 */ {(12<<2)|2,{98,37,0}}, +/* 36189 */ {(12<<2)|2,{98,37,0}}, +/* 36190 */ {(12<<2)|2,{98,37,0}}, +/* 36191 */ {(12<<2)|2,{98,37,0}}, +/* 36192 */ {(12<<2)|2,{98,45,0}}, +/* 36193 */ {(12<<2)|2,{98,45,0}}, +/* 36194 */ {(12<<2)|2,{98,45,0}}, +/* 36195 */ {(12<<2)|2,{98,45,0}}, +/* 36196 */ {(12<<2)|2,{98,45,0}}, +/* 36197 */ {(12<<2)|2,{98,45,0}}, +/* 36198 */ {(12<<2)|2,{98,45,0}}, +/* 36199 */ {(12<<2)|2,{98,45,0}}, +/* 36200 */ {(12<<2)|2,{98,45,0}}, +/* 36201 */ {(12<<2)|2,{98,45,0}}, +/* 36202 */ {(12<<2)|2,{98,45,0}}, +/* 36203 */ {(12<<2)|2,{98,45,0}}, +/* 36204 */ {(12<<2)|2,{98,45,0}}, +/* 36205 */ {(12<<2)|2,{98,45,0}}, +/* 36206 */ {(12<<2)|2,{98,45,0}}, +/* 36207 */ {(12<<2)|2,{98,45,0}}, +/* 36208 */ {(12<<2)|2,{98,46,0}}, +/* 36209 */ {(12<<2)|2,{98,46,0}}, +/* 36210 */ {(12<<2)|2,{98,46,0}}, +/* 36211 */ {(12<<2)|2,{98,46,0}}, +/* 36212 */ {(12<<2)|2,{98,46,0}}, +/* 36213 */ {(12<<2)|2,{98,46,0}}, +/* 36214 */ {(12<<2)|2,{98,46,0}}, +/* 36215 */ {(12<<2)|2,{98,46,0}}, +/* 36216 */ {(12<<2)|2,{98,46,0}}, +/* 36217 */ {(12<<2)|2,{98,46,0}}, +/* 36218 */ {(12<<2)|2,{98,46,0}}, +/* 36219 */ {(12<<2)|2,{98,46,0}}, +/* 36220 */ {(12<<2)|2,{98,46,0}}, +/* 36221 */ {(12<<2)|2,{98,46,0}}, +/* 36222 */ {(12<<2)|2,{98,46,0}}, +/* 36223 */ {(12<<2)|2,{98,46,0}}, +/* 36224 */ {(12<<2)|2,{98,47,0}}, +/* 36225 */ {(12<<2)|2,{98,47,0}}, +/* 36226 */ {(12<<2)|2,{98,47,0}}, +/* 36227 */ {(12<<2)|2,{98,47,0}}, +/* 36228 */ {(12<<2)|2,{98,47,0}}, +/* 36229 */ {(12<<2)|2,{98,47,0}}, +/* 36230 */ {(12<<2)|2,{98,47,0}}, +/* 36231 */ {(12<<2)|2,{98,47,0}}, +/* 36232 */ {(12<<2)|2,{98,47,0}}, +/* 36233 */ {(12<<2)|2,{98,47,0}}, +/* 36234 */ {(12<<2)|2,{98,47,0}}, +/* 36235 */ {(12<<2)|2,{98,47,0}}, +/* 36236 */ {(12<<2)|2,{98,47,0}}, +/* 36237 */ {(12<<2)|2,{98,47,0}}, +/* 36238 */ {(12<<2)|2,{98,47,0}}, +/* 36239 */ {(12<<2)|2,{98,47,0}}, +/* 36240 */ {(12<<2)|2,{98,51,0}}, +/* 36241 */ {(12<<2)|2,{98,51,0}}, +/* 36242 */ {(12<<2)|2,{98,51,0}}, +/* 36243 */ {(12<<2)|2,{98,51,0}}, +/* 36244 */ {(12<<2)|2,{98,51,0}}, +/* 36245 */ {(12<<2)|2,{98,51,0}}, +/* 36246 */ {(12<<2)|2,{98,51,0}}, +/* 36247 */ {(12<<2)|2,{98,51,0}}, +/* 36248 */ {(12<<2)|2,{98,51,0}}, +/* 36249 */ {(12<<2)|2,{98,51,0}}, +/* 36250 */ {(12<<2)|2,{98,51,0}}, +/* 36251 */ {(12<<2)|2,{98,51,0}}, +/* 36252 */ {(12<<2)|2,{98,51,0}}, +/* 36253 */ {(12<<2)|2,{98,51,0}}, +/* 36254 */ {(12<<2)|2,{98,51,0}}, +/* 36255 */ {(12<<2)|2,{98,51,0}}, +/* 36256 */ {(12<<2)|2,{98,52,0}}, +/* 36257 */ {(12<<2)|2,{98,52,0}}, +/* 36258 */ {(12<<2)|2,{98,52,0}}, +/* 36259 */ {(12<<2)|2,{98,52,0}}, +/* 36260 */ {(12<<2)|2,{98,52,0}}, +/* 36261 */ {(12<<2)|2,{98,52,0}}, +/* 36262 */ {(12<<2)|2,{98,52,0}}, +/* 36263 */ {(12<<2)|2,{98,52,0}}, +/* 36264 */ {(12<<2)|2,{98,52,0}}, +/* 36265 */ {(12<<2)|2,{98,52,0}}, +/* 36266 */ {(12<<2)|2,{98,52,0}}, +/* 36267 */ {(12<<2)|2,{98,52,0}}, +/* 36268 */ {(12<<2)|2,{98,52,0}}, +/* 36269 */ {(12<<2)|2,{98,52,0}}, +/* 36270 */ {(12<<2)|2,{98,52,0}}, +/* 36271 */ {(12<<2)|2,{98,52,0}}, +/* 36272 */ {(12<<2)|2,{98,53,0}}, +/* 36273 */ {(12<<2)|2,{98,53,0}}, +/* 36274 */ {(12<<2)|2,{98,53,0}}, +/* 36275 */ {(12<<2)|2,{98,53,0}}, +/* 36276 */ {(12<<2)|2,{98,53,0}}, +/* 36277 */ {(12<<2)|2,{98,53,0}}, +/* 36278 */ {(12<<2)|2,{98,53,0}}, +/* 36279 */ {(12<<2)|2,{98,53,0}}, +/* 36280 */ {(12<<2)|2,{98,53,0}}, +/* 36281 */ {(12<<2)|2,{98,53,0}}, +/* 36282 */ {(12<<2)|2,{98,53,0}}, +/* 36283 */ {(12<<2)|2,{98,53,0}}, +/* 36284 */ {(12<<2)|2,{98,53,0}}, +/* 36285 */ {(12<<2)|2,{98,53,0}}, +/* 36286 */ {(12<<2)|2,{98,53,0}}, +/* 36287 */ {(12<<2)|2,{98,53,0}}, +/* 36288 */ {(12<<2)|2,{98,54,0}}, +/* 36289 */ {(12<<2)|2,{98,54,0}}, +/* 36290 */ {(12<<2)|2,{98,54,0}}, +/* 36291 */ {(12<<2)|2,{98,54,0}}, +/* 36292 */ {(12<<2)|2,{98,54,0}}, +/* 36293 */ {(12<<2)|2,{98,54,0}}, +/* 36294 */ {(12<<2)|2,{98,54,0}}, +/* 36295 */ {(12<<2)|2,{98,54,0}}, +/* 36296 */ {(12<<2)|2,{98,54,0}}, +/* 36297 */ {(12<<2)|2,{98,54,0}}, +/* 36298 */ {(12<<2)|2,{98,54,0}}, +/* 36299 */ {(12<<2)|2,{98,54,0}}, +/* 36300 */ {(12<<2)|2,{98,54,0}}, +/* 36301 */ {(12<<2)|2,{98,54,0}}, +/* 36302 */ {(12<<2)|2,{98,54,0}}, +/* 36303 */ {(12<<2)|2,{98,54,0}}, +/* 36304 */ {(12<<2)|2,{98,55,0}}, +/* 36305 */ {(12<<2)|2,{98,55,0}}, +/* 36306 */ {(12<<2)|2,{98,55,0}}, +/* 36307 */ {(12<<2)|2,{98,55,0}}, +/* 36308 */ {(12<<2)|2,{98,55,0}}, +/* 36309 */ {(12<<2)|2,{98,55,0}}, +/* 36310 */ {(12<<2)|2,{98,55,0}}, +/* 36311 */ {(12<<2)|2,{98,55,0}}, +/* 36312 */ {(12<<2)|2,{98,55,0}}, +/* 36313 */ {(12<<2)|2,{98,55,0}}, +/* 36314 */ {(12<<2)|2,{98,55,0}}, +/* 36315 */ {(12<<2)|2,{98,55,0}}, +/* 36316 */ {(12<<2)|2,{98,55,0}}, +/* 36317 */ {(12<<2)|2,{98,55,0}}, +/* 36318 */ {(12<<2)|2,{98,55,0}}, +/* 36319 */ {(12<<2)|2,{98,55,0}}, +/* 36320 */ {(12<<2)|2,{98,56,0}}, +/* 36321 */ {(12<<2)|2,{98,56,0}}, +/* 36322 */ {(12<<2)|2,{98,56,0}}, +/* 36323 */ {(12<<2)|2,{98,56,0}}, +/* 36324 */ {(12<<2)|2,{98,56,0}}, +/* 36325 */ {(12<<2)|2,{98,56,0}}, +/* 36326 */ {(12<<2)|2,{98,56,0}}, +/* 36327 */ {(12<<2)|2,{98,56,0}}, +/* 36328 */ {(12<<2)|2,{98,56,0}}, +/* 36329 */ {(12<<2)|2,{98,56,0}}, +/* 36330 */ {(12<<2)|2,{98,56,0}}, +/* 36331 */ {(12<<2)|2,{98,56,0}}, +/* 36332 */ {(12<<2)|2,{98,56,0}}, +/* 36333 */ {(12<<2)|2,{98,56,0}}, +/* 36334 */ {(12<<2)|2,{98,56,0}}, +/* 36335 */ {(12<<2)|2,{98,56,0}}, +/* 36336 */ {(12<<2)|2,{98,57,0}}, +/* 36337 */ {(12<<2)|2,{98,57,0}}, +/* 36338 */ {(12<<2)|2,{98,57,0}}, +/* 36339 */ {(12<<2)|2,{98,57,0}}, +/* 36340 */ {(12<<2)|2,{98,57,0}}, +/* 36341 */ {(12<<2)|2,{98,57,0}}, +/* 36342 */ {(12<<2)|2,{98,57,0}}, +/* 36343 */ {(12<<2)|2,{98,57,0}}, +/* 36344 */ {(12<<2)|2,{98,57,0}}, +/* 36345 */ {(12<<2)|2,{98,57,0}}, +/* 36346 */ {(12<<2)|2,{98,57,0}}, +/* 36347 */ {(12<<2)|2,{98,57,0}}, +/* 36348 */ {(12<<2)|2,{98,57,0}}, +/* 36349 */ {(12<<2)|2,{98,57,0}}, +/* 36350 */ {(12<<2)|2,{98,57,0}}, +/* 36351 */ {(12<<2)|2,{98,57,0}}, +/* 36352 */ {(12<<2)|2,{98,61,0}}, +/* 36353 */ {(12<<2)|2,{98,61,0}}, +/* 36354 */ {(12<<2)|2,{98,61,0}}, +/* 36355 */ {(12<<2)|2,{98,61,0}}, +/* 36356 */ {(12<<2)|2,{98,61,0}}, +/* 36357 */ {(12<<2)|2,{98,61,0}}, +/* 36358 */ {(12<<2)|2,{98,61,0}}, +/* 36359 */ {(12<<2)|2,{98,61,0}}, +/* 36360 */ {(12<<2)|2,{98,61,0}}, +/* 36361 */ {(12<<2)|2,{98,61,0}}, +/* 36362 */ {(12<<2)|2,{98,61,0}}, +/* 36363 */ {(12<<2)|2,{98,61,0}}, +/* 36364 */ {(12<<2)|2,{98,61,0}}, +/* 36365 */ {(12<<2)|2,{98,61,0}}, +/* 36366 */ {(12<<2)|2,{98,61,0}}, +/* 36367 */ {(12<<2)|2,{98,61,0}}, +/* 36368 */ {(12<<2)|2,{98,65,0}}, +/* 36369 */ {(12<<2)|2,{98,65,0}}, +/* 36370 */ {(12<<2)|2,{98,65,0}}, +/* 36371 */ {(12<<2)|2,{98,65,0}}, +/* 36372 */ {(12<<2)|2,{98,65,0}}, +/* 36373 */ {(12<<2)|2,{98,65,0}}, +/* 36374 */ {(12<<2)|2,{98,65,0}}, +/* 36375 */ {(12<<2)|2,{98,65,0}}, +/* 36376 */ {(12<<2)|2,{98,65,0}}, +/* 36377 */ {(12<<2)|2,{98,65,0}}, +/* 36378 */ {(12<<2)|2,{98,65,0}}, +/* 36379 */ {(12<<2)|2,{98,65,0}}, +/* 36380 */ {(12<<2)|2,{98,65,0}}, +/* 36381 */ {(12<<2)|2,{98,65,0}}, +/* 36382 */ {(12<<2)|2,{98,65,0}}, +/* 36383 */ {(12<<2)|2,{98,65,0}}, +/* 36384 */ {(12<<2)|2,{98,95,0}}, +/* 36385 */ {(12<<2)|2,{98,95,0}}, +/* 36386 */ {(12<<2)|2,{98,95,0}}, +/* 36387 */ {(12<<2)|2,{98,95,0}}, +/* 36388 */ {(12<<2)|2,{98,95,0}}, +/* 36389 */ {(12<<2)|2,{98,95,0}}, +/* 36390 */ {(12<<2)|2,{98,95,0}}, +/* 36391 */ {(12<<2)|2,{98,95,0}}, +/* 36392 */ {(12<<2)|2,{98,95,0}}, +/* 36393 */ {(12<<2)|2,{98,95,0}}, +/* 36394 */ {(12<<2)|2,{98,95,0}}, +/* 36395 */ {(12<<2)|2,{98,95,0}}, +/* 36396 */ {(12<<2)|2,{98,95,0}}, +/* 36397 */ {(12<<2)|2,{98,95,0}}, +/* 36398 */ {(12<<2)|2,{98,95,0}}, +/* 36399 */ {(12<<2)|2,{98,95,0}}, +/* 36400 */ {(12<<2)|2,{98,98,0}}, +/* 36401 */ {(12<<2)|2,{98,98,0}}, +/* 36402 */ {(12<<2)|2,{98,98,0}}, +/* 36403 */ {(12<<2)|2,{98,98,0}}, +/* 36404 */ {(12<<2)|2,{98,98,0}}, +/* 36405 */ {(12<<2)|2,{98,98,0}}, +/* 36406 */ {(12<<2)|2,{98,98,0}}, +/* 36407 */ {(12<<2)|2,{98,98,0}}, +/* 36408 */ {(12<<2)|2,{98,98,0}}, +/* 36409 */ {(12<<2)|2,{98,98,0}}, +/* 36410 */ {(12<<2)|2,{98,98,0}}, +/* 36411 */ {(12<<2)|2,{98,98,0}}, +/* 36412 */ {(12<<2)|2,{98,98,0}}, +/* 36413 */ {(12<<2)|2,{98,98,0}}, +/* 36414 */ {(12<<2)|2,{98,98,0}}, +/* 36415 */ {(12<<2)|2,{98,98,0}}, +/* 36416 */ {(12<<2)|2,{98,100,0}}, +/* 36417 */ {(12<<2)|2,{98,100,0}}, +/* 36418 */ {(12<<2)|2,{98,100,0}}, +/* 36419 */ {(12<<2)|2,{98,100,0}}, +/* 36420 */ {(12<<2)|2,{98,100,0}}, +/* 36421 */ {(12<<2)|2,{98,100,0}}, +/* 36422 */ {(12<<2)|2,{98,100,0}}, +/* 36423 */ {(12<<2)|2,{98,100,0}}, +/* 36424 */ {(12<<2)|2,{98,100,0}}, +/* 36425 */ {(12<<2)|2,{98,100,0}}, +/* 36426 */ {(12<<2)|2,{98,100,0}}, +/* 36427 */ {(12<<2)|2,{98,100,0}}, +/* 36428 */ {(12<<2)|2,{98,100,0}}, +/* 36429 */ {(12<<2)|2,{98,100,0}}, +/* 36430 */ {(12<<2)|2,{98,100,0}}, +/* 36431 */ {(12<<2)|2,{98,100,0}}, +/* 36432 */ {(12<<2)|2,{98,102,0}}, +/* 36433 */ {(12<<2)|2,{98,102,0}}, +/* 36434 */ {(12<<2)|2,{98,102,0}}, +/* 36435 */ {(12<<2)|2,{98,102,0}}, +/* 36436 */ {(12<<2)|2,{98,102,0}}, +/* 36437 */ {(12<<2)|2,{98,102,0}}, +/* 36438 */ {(12<<2)|2,{98,102,0}}, +/* 36439 */ {(12<<2)|2,{98,102,0}}, +/* 36440 */ {(12<<2)|2,{98,102,0}}, +/* 36441 */ {(12<<2)|2,{98,102,0}}, +/* 36442 */ {(12<<2)|2,{98,102,0}}, +/* 36443 */ {(12<<2)|2,{98,102,0}}, +/* 36444 */ {(12<<2)|2,{98,102,0}}, +/* 36445 */ {(12<<2)|2,{98,102,0}}, +/* 36446 */ {(12<<2)|2,{98,102,0}}, +/* 36447 */ {(12<<2)|2,{98,102,0}}, +/* 36448 */ {(12<<2)|2,{98,103,0}}, +/* 36449 */ {(12<<2)|2,{98,103,0}}, +/* 36450 */ {(12<<2)|2,{98,103,0}}, +/* 36451 */ {(12<<2)|2,{98,103,0}}, +/* 36452 */ {(12<<2)|2,{98,103,0}}, +/* 36453 */ {(12<<2)|2,{98,103,0}}, +/* 36454 */ {(12<<2)|2,{98,103,0}}, +/* 36455 */ {(12<<2)|2,{98,103,0}}, +/* 36456 */ {(12<<2)|2,{98,103,0}}, +/* 36457 */ {(12<<2)|2,{98,103,0}}, +/* 36458 */ {(12<<2)|2,{98,103,0}}, +/* 36459 */ {(12<<2)|2,{98,103,0}}, +/* 36460 */ {(12<<2)|2,{98,103,0}}, +/* 36461 */ {(12<<2)|2,{98,103,0}}, +/* 36462 */ {(12<<2)|2,{98,103,0}}, +/* 36463 */ {(12<<2)|2,{98,103,0}}, +/* 36464 */ {(12<<2)|2,{98,104,0}}, +/* 36465 */ {(12<<2)|2,{98,104,0}}, +/* 36466 */ {(12<<2)|2,{98,104,0}}, +/* 36467 */ {(12<<2)|2,{98,104,0}}, +/* 36468 */ {(12<<2)|2,{98,104,0}}, +/* 36469 */ {(12<<2)|2,{98,104,0}}, +/* 36470 */ {(12<<2)|2,{98,104,0}}, +/* 36471 */ {(12<<2)|2,{98,104,0}}, +/* 36472 */ {(12<<2)|2,{98,104,0}}, +/* 36473 */ {(12<<2)|2,{98,104,0}}, +/* 36474 */ {(12<<2)|2,{98,104,0}}, +/* 36475 */ {(12<<2)|2,{98,104,0}}, +/* 36476 */ {(12<<2)|2,{98,104,0}}, +/* 36477 */ {(12<<2)|2,{98,104,0}}, +/* 36478 */ {(12<<2)|2,{98,104,0}}, +/* 36479 */ {(12<<2)|2,{98,104,0}}, +/* 36480 */ {(12<<2)|2,{98,108,0}}, +/* 36481 */ {(12<<2)|2,{98,108,0}}, +/* 36482 */ {(12<<2)|2,{98,108,0}}, +/* 36483 */ {(12<<2)|2,{98,108,0}}, +/* 36484 */ {(12<<2)|2,{98,108,0}}, +/* 36485 */ {(12<<2)|2,{98,108,0}}, +/* 36486 */ {(12<<2)|2,{98,108,0}}, +/* 36487 */ {(12<<2)|2,{98,108,0}}, +/* 36488 */ {(12<<2)|2,{98,108,0}}, +/* 36489 */ {(12<<2)|2,{98,108,0}}, +/* 36490 */ {(12<<2)|2,{98,108,0}}, +/* 36491 */ {(12<<2)|2,{98,108,0}}, +/* 36492 */ {(12<<2)|2,{98,108,0}}, +/* 36493 */ {(12<<2)|2,{98,108,0}}, +/* 36494 */ {(12<<2)|2,{98,108,0}}, +/* 36495 */ {(12<<2)|2,{98,108,0}}, +/* 36496 */ {(12<<2)|2,{98,109,0}}, +/* 36497 */ {(12<<2)|2,{98,109,0}}, +/* 36498 */ {(12<<2)|2,{98,109,0}}, +/* 36499 */ {(12<<2)|2,{98,109,0}}, +/* 36500 */ {(12<<2)|2,{98,109,0}}, +/* 36501 */ {(12<<2)|2,{98,109,0}}, +/* 36502 */ {(12<<2)|2,{98,109,0}}, +/* 36503 */ {(12<<2)|2,{98,109,0}}, +/* 36504 */ {(12<<2)|2,{98,109,0}}, +/* 36505 */ {(12<<2)|2,{98,109,0}}, +/* 36506 */ {(12<<2)|2,{98,109,0}}, +/* 36507 */ {(12<<2)|2,{98,109,0}}, +/* 36508 */ {(12<<2)|2,{98,109,0}}, +/* 36509 */ {(12<<2)|2,{98,109,0}}, +/* 36510 */ {(12<<2)|2,{98,109,0}}, +/* 36511 */ {(12<<2)|2,{98,109,0}}, +/* 36512 */ {(12<<2)|2,{98,110,0}}, +/* 36513 */ {(12<<2)|2,{98,110,0}}, +/* 36514 */ {(12<<2)|2,{98,110,0}}, +/* 36515 */ {(12<<2)|2,{98,110,0}}, +/* 36516 */ {(12<<2)|2,{98,110,0}}, +/* 36517 */ {(12<<2)|2,{98,110,0}}, +/* 36518 */ {(12<<2)|2,{98,110,0}}, +/* 36519 */ {(12<<2)|2,{98,110,0}}, +/* 36520 */ {(12<<2)|2,{98,110,0}}, +/* 36521 */ {(12<<2)|2,{98,110,0}}, +/* 36522 */ {(12<<2)|2,{98,110,0}}, +/* 36523 */ {(12<<2)|2,{98,110,0}}, +/* 36524 */ {(12<<2)|2,{98,110,0}}, +/* 36525 */ {(12<<2)|2,{98,110,0}}, +/* 36526 */ {(12<<2)|2,{98,110,0}}, +/* 36527 */ {(12<<2)|2,{98,110,0}}, +/* 36528 */ {(12<<2)|2,{98,112,0}}, +/* 36529 */ {(12<<2)|2,{98,112,0}}, +/* 36530 */ {(12<<2)|2,{98,112,0}}, +/* 36531 */ {(12<<2)|2,{98,112,0}}, +/* 36532 */ {(12<<2)|2,{98,112,0}}, +/* 36533 */ {(12<<2)|2,{98,112,0}}, +/* 36534 */ {(12<<2)|2,{98,112,0}}, +/* 36535 */ {(12<<2)|2,{98,112,0}}, +/* 36536 */ {(12<<2)|2,{98,112,0}}, +/* 36537 */ {(12<<2)|2,{98,112,0}}, +/* 36538 */ {(12<<2)|2,{98,112,0}}, +/* 36539 */ {(12<<2)|2,{98,112,0}}, +/* 36540 */ {(12<<2)|2,{98,112,0}}, +/* 36541 */ {(12<<2)|2,{98,112,0}}, +/* 36542 */ {(12<<2)|2,{98,112,0}}, +/* 36543 */ {(12<<2)|2,{98,112,0}}, +/* 36544 */ {(12<<2)|2,{98,114,0}}, +/* 36545 */ {(12<<2)|2,{98,114,0}}, +/* 36546 */ {(12<<2)|2,{98,114,0}}, +/* 36547 */ {(12<<2)|2,{98,114,0}}, +/* 36548 */ {(12<<2)|2,{98,114,0}}, +/* 36549 */ {(12<<2)|2,{98,114,0}}, +/* 36550 */ {(12<<2)|2,{98,114,0}}, +/* 36551 */ {(12<<2)|2,{98,114,0}}, +/* 36552 */ {(12<<2)|2,{98,114,0}}, +/* 36553 */ {(12<<2)|2,{98,114,0}}, +/* 36554 */ {(12<<2)|2,{98,114,0}}, +/* 36555 */ {(12<<2)|2,{98,114,0}}, +/* 36556 */ {(12<<2)|2,{98,114,0}}, +/* 36557 */ {(12<<2)|2,{98,114,0}}, +/* 36558 */ {(12<<2)|2,{98,114,0}}, +/* 36559 */ {(12<<2)|2,{98,114,0}}, +/* 36560 */ {(12<<2)|2,{98,117,0}}, +/* 36561 */ {(12<<2)|2,{98,117,0}}, +/* 36562 */ {(12<<2)|2,{98,117,0}}, +/* 36563 */ {(12<<2)|2,{98,117,0}}, +/* 36564 */ {(12<<2)|2,{98,117,0}}, +/* 36565 */ {(12<<2)|2,{98,117,0}}, +/* 36566 */ {(12<<2)|2,{98,117,0}}, +/* 36567 */ {(12<<2)|2,{98,117,0}}, +/* 36568 */ {(12<<2)|2,{98,117,0}}, +/* 36569 */ {(12<<2)|2,{98,117,0}}, +/* 36570 */ {(12<<2)|2,{98,117,0}}, +/* 36571 */ {(12<<2)|2,{98,117,0}}, +/* 36572 */ {(12<<2)|2,{98,117,0}}, +/* 36573 */ {(12<<2)|2,{98,117,0}}, +/* 36574 */ {(12<<2)|2,{98,117,0}}, +/* 36575 */ {(12<<2)|2,{98,117,0}}, +/* 36576 */ {(13<<2)|2,{98,58,0}}, +/* 36577 */ {(13<<2)|2,{98,58,0}}, +/* 36578 */ {(13<<2)|2,{98,58,0}}, +/* 36579 */ {(13<<2)|2,{98,58,0}}, +/* 36580 */ {(13<<2)|2,{98,58,0}}, +/* 36581 */ {(13<<2)|2,{98,58,0}}, +/* 36582 */ {(13<<2)|2,{98,58,0}}, +/* 36583 */ {(13<<2)|2,{98,58,0}}, +/* 36584 */ {(13<<2)|2,{98,66,0}}, +/* 36585 */ {(13<<2)|2,{98,66,0}}, +/* 36586 */ {(13<<2)|2,{98,66,0}}, +/* 36587 */ {(13<<2)|2,{98,66,0}}, +/* 36588 */ {(13<<2)|2,{98,66,0}}, +/* 36589 */ {(13<<2)|2,{98,66,0}}, +/* 36590 */ {(13<<2)|2,{98,66,0}}, +/* 36591 */ {(13<<2)|2,{98,66,0}}, +/* 36592 */ {(13<<2)|2,{98,67,0}}, +/* 36593 */ {(13<<2)|2,{98,67,0}}, +/* 36594 */ {(13<<2)|2,{98,67,0}}, +/* 36595 */ {(13<<2)|2,{98,67,0}}, +/* 36596 */ {(13<<2)|2,{98,67,0}}, +/* 36597 */ {(13<<2)|2,{98,67,0}}, +/* 36598 */ {(13<<2)|2,{98,67,0}}, +/* 36599 */ {(13<<2)|2,{98,67,0}}, +/* 36600 */ {(13<<2)|2,{98,68,0}}, +/* 36601 */ {(13<<2)|2,{98,68,0}}, +/* 36602 */ {(13<<2)|2,{98,68,0}}, +/* 36603 */ {(13<<2)|2,{98,68,0}}, +/* 36604 */ {(13<<2)|2,{98,68,0}}, +/* 36605 */ {(13<<2)|2,{98,68,0}}, +/* 36606 */ {(13<<2)|2,{98,68,0}}, +/* 36607 */ {(13<<2)|2,{98,68,0}}, +/* 36608 */ {(13<<2)|2,{98,69,0}}, +/* 36609 */ {(13<<2)|2,{98,69,0}}, +/* 36610 */ {(13<<2)|2,{98,69,0}}, +/* 36611 */ {(13<<2)|2,{98,69,0}}, +/* 36612 */ {(13<<2)|2,{98,69,0}}, +/* 36613 */ {(13<<2)|2,{98,69,0}}, +/* 36614 */ {(13<<2)|2,{98,69,0}}, +/* 36615 */ {(13<<2)|2,{98,69,0}}, +/* 36616 */ {(13<<2)|2,{98,70,0}}, +/* 36617 */ {(13<<2)|2,{98,70,0}}, +/* 36618 */ {(13<<2)|2,{98,70,0}}, +/* 36619 */ {(13<<2)|2,{98,70,0}}, +/* 36620 */ {(13<<2)|2,{98,70,0}}, +/* 36621 */ {(13<<2)|2,{98,70,0}}, +/* 36622 */ {(13<<2)|2,{98,70,0}}, +/* 36623 */ {(13<<2)|2,{98,70,0}}, +/* 36624 */ {(13<<2)|2,{98,71,0}}, +/* 36625 */ {(13<<2)|2,{98,71,0}}, +/* 36626 */ {(13<<2)|2,{98,71,0}}, +/* 36627 */ {(13<<2)|2,{98,71,0}}, +/* 36628 */ {(13<<2)|2,{98,71,0}}, +/* 36629 */ {(13<<2)|2,{98,71,0}}, +/* 36630 */ {(13<<2)|2,{98,71,0}}, +/* 36631 */ {(13<<2)|2,{98,71,0}}, +/* 36632 */ {(13<<2)|2,{98,72,0}}, +/* 36633 */ {(13<<2)|2,{98,72,0}}, +/* 36634 */ {(13<<2)|2,{98,72,0}}, +/* 36635 */ {(13<<2)|2,{98,72,0}}, +/* 36636 */ {(13<<2)|2,{98,72,0}}, +/* 36637 */ {(13<<2)|2,{98,72,0}}, +/* 36638 */ {(13<<2)|2,{98,72,0}}, +/* 36639 */ {(13<<2)|2,{98,72,0}}, +/* 36640 */ {(13<<2)|2,{98,73,0}}, +/* 36641 */ {(13<<2)|2,{98,73,0}}, +/* 36642 */ {(13<<2)|2,{98,73,0}}, +/* 36643 */ {(13<<2)|2,{98,73,0}}, +/* 36644 */ {(13<<2)|2,{98,73,0}}, +/* 36645 */ {(13<<2)|2,{98,73,0}}, +/* 36646 */ {(13<<2)|2,{98,73,0}}, +/* 36647 */ {(13<<2)|2,{98,73,0}}, +/* 36648 */ {(13<<2)|2,{98,74,0}}, +/* 36649 */ {(13<<2)|2,{98,74,0}}, +/* 36650 */ {(13<<2)|2,{98,74,0}}, +/* 36651 */ {(13<<2)|2,{98,74,0}}, +/* 36652 */ {(13<<2)|2,{98,74,0}}, +/* 36653 */ {(13<<2)|2,{98,74,0}}, +/* 36654 */ {(13<<2)|2,{98,74,0}}, +/* 36655 */ {(13<<2)|2,{98,74,0}}, +/* 36656 */ {(13<<2)|2,{98,75,0}}, +/* 36657 */ {(13<<2)|2,{98,75,0}}, +/* 36658 */ {(13<<2)|2,{98,75,0}}, +/* 36659 */ {(13<<2)|2,{98,75,0}}, +/* 36660 */ {(13<<2)|2,{98,75,0}}, +/* 36661 */ {(13<<2)|2,{98,75,0}}, +/* 36662 */ {(13<<2)|2,{98,75,0}}, +/* 36663 */ {(13<<2)|2,{98,75,0}}, +/* 36664 */ {(13<<2)|2,{98,76,0}}, +/* 36665 */ {(13<<2)|2,{98,76,0}}, +/* 36666 */ {(13<<2)|2,{98,76,0}}, +/* 36667 */ {(13<<2)|2,{98,76,0}}, +/* 36668 */ {(13<<2)|2,{98,76,0}}, +/* 36669 */ {(13<<2)|2,{98,76,0}}, +/* 36670 */ {(13<<2)|2,{98,76,0}}, +/* 36671 */ {(13<<2)|2,{98,76,0}}, +/* 36672 */ {(13<<2)|2,{98,77,0}}, +/* 36673 */ {(13<<2)|2,{98,77,0}}, +/* 36674 */ {(13<<2)|2,{98,77,0}}, +/* 36675 */ {(13<<2)|2,{98,77,0}}, +/* 36676 */ {(13<<2)|2,{98,77,0}}, +/* 36677 */ {(13<<2)|2,{98,77,0}}, +/* 36678 */ {(13<<2)|2,{98,77,0}}, +/* 36679 */ {(13<<2)|2,{98,77,0}}, +/* 36680 */ {(13<<2)|2,{98,78,0}}, +/* 36681 */ {(13<<2)|2,{98,78,0}}, +/* 36682 */ {(13<<2)|2,{98,78,0}}, +/* 36683 */ {(13<<2)|2,{98,78,0}}, +/* 36684 */ {(13<<2)|2,{98,78,0}}, +/* 36685 */ {(13<<2)|2,{98,78,0}}, +/* 36686 */ {(13<<2)|2,{98,78,0}}, +/* 36687 */ {(13<<2)|2,{98,78,0}}, +/* 36688 */ {(13<<2)|2,{98,79,0}}, +/* 36689 */ {(13<<2)|2,{98,79,0}}, +/* 36690 */ {(13<<2)|2,{98,79,0}}, +/* 36691 */ {(13<<2)|2,{98,79,0}}, +/* 36692 */ {(13<<2)|2,{98,79,0}}, +/* 36693 */ {(13<<2)|2,{98,79,0}}, +/* 36694 */ {(13<<2)|2,{98,79,0}}, +/* 36695 */ {(13<<2)|2,{98,79,0}}, +/* 36696 */ {(13<<2)|2,{98,80,0}}, +/* 36697 */ {(13<<2)|2,{98,80,0}}, +/* 36698 */ {(13<<2)|2,{98,80,0}}, +/* 36699 */ {(13<<2)|2,{98,80,0}}, +/* 36700 */ {(13<<2)|2,{98,80,0}}, +/* 36701 */ {(13<<2)|2,{98,80,0}}, +/* 36702 */ {(13<<2)|2,{98,80,0}}, +/* 36703 */ {(13<<2)|2,{98,80,0}}, +/* 36704 */ {(13<<2)|2,{98,81,0}}, +/* 36705 */ {(13<<2)|2,{98,81,0}}, +/* 36706 */ {(13<<2)|2,{98,81,0}}, +/* 36707 */ {(13<<2)|2,{98,81,0}}, +/* 36708 */ {(13<<2)|2,{98,81,0}}, +/* 36709 */ {(13<<2)|2,{98,81,0}}, +/* 36710 */ {(13<<2)|2,{98,81,0}}, +/* 36711 */ {(13<<2)|2,{98,81,0}}, +/* 36712 */ {(13<<2)|2,{98,82,0}}, +/* 36713 */ {(13<<2)|2,{98,82,0}}, +/* 36714 */ {(13<<2)|2,{98,82,0}}, +/* 36715 */ {(13<<2)|2,{98,82,0}}, +/* 36716 */ {(13<<2)|2,{98,82,0}}, +/* 36717 */ {(13<<2)|2,{98,82,0}}, +/* 36718 */ {(13<<2)|2,{98,82,0}}, +/* 36719 */ {(13<<2)|2,{98,82,0}}, +/* 36720 */ {(13<<2)|2,{98,83,0}}, +/* 36721 */ {(13<<2)|2,{98,83,0}}, +/* 36722 */ {(13<<2)|2,{98,83,0}}, +/* 36723 */ {(13<<2)|2,{98,83,0}}, +/* 36724 */ {(13<<2)|2,{98,83,0}}, +/* 36725 */ {(13<<2)|2,{98,83,0}}, +/* 36726 */ {(13<<2)|2,{98,83,0}}, +/* 36727 */ {(13<<2)|2,{98,83,0}}, +/* 36728 */ {(13<<2)|2,{98,84,0}}, +/* 36729 */ {(13<<2)|2,{98,84,0}}, +/* 36730 */ {(13<<2)|2,{98,84,0}}, +/* 36731 */ {(13<<2)|2,{98,84,0}}, +/* 36732 */ {(13<<2)|2,{98,84,0}}, +/* 36733 */ {(13<<2)|2,{98,84,0}}, +/* 36734 */ {(13<<2)|2,{98,84,0}}, +/* 36735 */ {(13<<2)|2,{98,84,0}}, +/* 36736 */ {(13<<2)|2,{98,85,0}}, +/* 36737 */ {(13<<2)|2,{98,85,0}}, +/* 36738 */ {(13<<2)|2,{98,85,0}}, +/* 36739 */ {(13<<2)|2,{98,85,0}}, +/* 36740 */ {(13<<2)|2,{98,85,0}}, +/* 36741 */ {(13<<2)|2,{98,85,0}}, +/* 36742 */ {(13<<2)|2,{98,85,0}}, +/* 36743 */ {(13<<2)|2,{98,85,0}}, +/* 36744 */ {(13<<2)|2,{98,86,0}}, +/* 36745 */ {(13<<2)|2,{98,86,0}}, +/* 36746 */ {(13<<2)|2,{98,86,0}}, +/* 36747 */ {(13<<2)|2,{98,86,0}}, +/* 36748 */ {(13<<2)|2,{98,86,0}}, +/* 36749 */ {(13<<2)|2,{98,86,0}}, +/* 36750 */ {(13<<2)|2,{98,86,0}}, +/* 36751 */ {(13<<2)|2,{98,86,0}}, +/* 36752 */ {(13<<2)|2,{98,87,0}}, +/* 36753 */ {(13<<2)|2,{98,87,0}}, +/* 36754 */ {(13<<2)|2,{98,87,0}}, +/* 36755 */ {(13<<2)|2,{98,87,0}}, +/* 36756 */ {(13<<2)|2,{98,87,0}}, +/* 36757 */ {(13<<2)|2,{98,87,0}}, +/* 36758 */ {(13<<2)|2,{98,87,0}}, +/* 36759 */ {(13<<2)|2,{98,87,0}}, +/* 36760 */ {(13<<2)|2,{98,89,0}}, +/* 36761 */ {(13<<2)|2,{98,89,0}}, +/* 36762 */ {(13<<2)|2,{98,89,0}}, +/* 36763 */ {(13<<2)|2,{98,89,0}}, +/* 36764 */ {(13<<2)|2,{98,89,0}}, +/* 36765 */ {(13<<2)|2,{98,89,0}}, +/* 36766 */ {(13<<2)|2,{98,89,0}}, +/* 36767 */ {(13<<2)|2,{98,89,0}}, +/* 36768 */ {(13<<2)|2,{98,106,0}}, +/* 36769 */ {(13<<2)|2,{98,106,0}}, +/* 36770 */ {(13<<2)|2,{98,106,0}}, +/* 36771 */ {(13<<2)|2,{98,106,0}}, +/* 36772 */ {(13<<2)|2,{98,106,0}}, +/* 36773 */ {(13<<2)|2,{98,106,0}}, +/* 36774 */ {(13<<2)|2,{98,106,0}}, +/* 36775 */ {(13<<2)|2,{98,106,0}}, +/* 36776 */ {(13<<2)|2,{98,107,0}}, +/* 36777 */ {(13<<2)|2,{98,107,0}}, +/* 36778 */ {(13<<2)|2,{98,107,0}}, +/* 36779 */ {(13<<2)|2,{98,107,0}}, +/* 36780 */ {(13<<2)|2,{98,107,0}}, +/* 36781 */ {(13<<2)|2,{98,107,0}}, +/* 36782 */ {(13<<2)|2,{98,107,0}}, +/* 36783 */ {(13<<2)|2,{98,107,0}}, +/* 36784 */ {(13<<2)|2,{98,113,0}}, +/* 36785 */ {(13<<2)|2,{98,113,0}}, +/* 36786 */ {(13<<2)|2,{98,113,0}}, +/* 36787 */ {(13<<2)|2,{98,113,0}}, +/* 36788 */ {(13<<2)|2,{98,113,0}}, +/* 36789 */ {(13<<2)|2,{98,113,0}}, +/* 36790 */ {(13<<2)|2,{98,113,0}}, +/* 36791 */ {(13<<2)|2,{98,113,0}}, +/* 36792 */ {(13<<2)|2,{98,118,0}}, +/* 36793 */ {(13<<2)|2,{98,118,0}}, +/* 36794 */ {(13<<2)|2,{98,118,0}}, +/* 36795 */ {(13<<2)|2,{98,118,0}}, +/* 36796 */ {(13<<2)|2,{98,118,0}}, +/* 36797 */ {(13<<2)|2,{98,118,0}}, +/* 36798 */ {(13<<2)|2,{98,118,0}}, +/* 36799 */ {(13<<2)|2,{98,118,0}}, +/* 36800 */ {(13<<2)|2,{98,119,0}}, +/* 36801 */ {(13<<2)|2,{98,119,0}}, +/* 36802 */ {(13<<2)|2,{98,119,0}}, +/* 36803 */ {(13<<2)|2,{98,119,0}}, +/* 36804 */ {(13<<2)|2,{98,119,0}}, +/* 36805 */ {(13<<2)|2,{98,119,0}}, +/* 36806 */ {(13<<2)|2,{98,119,0}}, +/* 36807 */ {(13<<2)|2,{98,119,0}}, +/* 36808 */ {(13<<2)|2,{98,120,0}}, +/* 36809 */ {(13<<2)|2,{98,120,0}}, +/* 36810 */ {(13<<2)|2,{98,120,0}}, +/* 36811 */ {(13<<2)|2,{98,120,0}}, +/* 36812 */ {(13<<2)|2,{98,120,0}}, +/* 36813 */ {(13<<2)|2,{98,120,0}}, +/* 36814 */ {(13<<2)|2,{98,120,0}}, +/* 36815 */ {(13<<2)|2,{98,120,0}}, +/* 36816 */ {(13<<2)|2,{98,121,0}}, +/* 36817 */ {(13<<2)|2,{98,121,0}}, +/* 36818 */ {(13<<2)|2,{98,121,0}}, +/* 36819 */ {(13<<2)|2,{98,121,0}}, +/* 36820 */ {(13<<2)|2,{98,121,0}}, +/* 36821 */ {(13<<2)|2,{98,121,0}}, +/* 36822 */ {(13<<2)|2,{98,121,0}}, +/* 36823 */ {(13<<2)|2,{98,121,0}}, +/* 36824 */ {(13<<2)|2,{98,122,0}}, +/* 36825 */ {(13<<2)|2,{98,122,0}}, +/* 36826 */ {(13<<2)|2,{98,122,0}}, +/* 36827 */ {(13<<2)|2,{98,122,0}}, +/* 36828 */ {(13<<2)|2,{98,122,0}}, +/* 36829 */ {(13<<2)|2,{98,122,0}}, +/* 36830 */ {(13<<2)|2,{98,122,0}}, +/* 36831 */ {(13<<2)|2,{98,122,0}}, +/* 36832 */ {(14<<2)|2,{98,38,0}}, +/* 36833 */ {(14<<2)|2,{98,38,0}}, +/* 36834 */ {(14<<2)|2,{98,38,0}}, +/* 36835 */ {(14<<2)|2,{98,38,0}}, +/* 36836 */ {(14<<2)|2,{98,42,0}}, +/* 36837 */ {(14<<2)|2,{98,42,0}}, +/* 36838 */ {(14<<2)|2,{98,42,0}}, +/* 36839 */ {(14<<2)|2,{98,42,0}}, +/* 36840 */ {(14<<2)|2,{98,44,0}}, +/* 36841 */ {(14<<2)|2,{98,44,0}}, +/* 36842 */ {(14<<2)|2,{98,44,0}}, +/* 36843 */ {(14<<2)|2,{98,44,0}}, +/* 36844 */ {(14<<2)|2,{98,59,0}}, +/* 36845 */ {(14<<2)|2,{98,59,0}}, +/* 36846 */ {(14<<2)|2,{98,59,0}}, +/* 36847 */ {(14<<2)|2,{98,59,0}}, +/* 36848 */ {(14<<2)|2,{98,88,0}}, +/* 36849 */ {(14<<2)|2,{98,88,0}}, +/* 36850 */ {(14<<2)|2,{98,88,0}}, +/* 36851 */ {(14<<2)|2,{98,88,0}}, +/* 36852 */ {(14<<2)|2,{98,90,0}}, +/* 36853 */ {(14<<2)|2,{98,90,0}}, +/* 36854 */ {(14<<2)|2,{98,90,0}}, +/* 36855 */ {(14<<2)|2,{98,90,0}}, +/* 36856 */ {(16<<2)|2,{98,33,0}}, +/* 36857 */ {(16<<2)|2,{98,34,0}}, +/* 36858 */ {(16<<2)|2,{98,40,0}}, +/* 36859 */ {(16<<2)|2,{98,41,0}}, +/* 36860 */ {(16<<2)|2,{98,63,0}}, +/* 36861 */ {(6<<2)|1,{98,0,0}}, +/* 36862 */ {(6<<2)|1,{98,0,0}}, +/* 36863 */ {(6<<2)|1,{98,0,0}}, +/* 36864 */ {(16<<2)|3,{100,48,48}}, +/* 36865 */ {(16<<2)|3,{100,48,49}}, +/* 36866 */ {(16<<2)|3,{100,48,50}}, +/* 36867 */ {(16<<2)|3,{100,48,97}}, +/* 36868 */ {(16<<2)|3,{100,48,99}}, +/* 36869 */ {(16<<2)|3,{100,48,101}}, +/* 36870 */ {(16<<2)|3,{100,48,105}}, +/* 36871 */ {(16<<2)|3,{100,48,111}}, +/* 36872 */ {(16<<2)|3,{100,48,115}}, +/* 36873 */ {(16<<2)|3,{100,48,116}}, +/* 36874 */ {(11<<2)|2,{100,48,0}}, +/* 36875 */ {(11<<2)|2,{100,48,0}}, +/* 36876 */ {(11<<2)|2,{100,48,0}}, +/* 36877 */ {(11<<2)|2,{100,48,0}}, +/* 36878 */ {(11<<2)|2,{100,48,0}}, +/* 36879 */ {(11<<2)|2,{100,48,0}}, +/* 36880 */ {(11<<2)|2,{100,48,0}}, +/* 36881 */ {(11<<2)|2,{100,48,0}}, +/* 36882 */ {(11<<2)|2,{100,48,0}}, +/* 36883 */ {(11<<2)|2,{100,48,0}}, +/* 36884 */ {(11<<2)|2,{100,48,0}}, +/* 36885 */ {(11<<2)|2,{100,48,0}}, +/* 36886 */ {(11<<2)|2,{100,48,0}}, +/* 36887 */ {(11<<2)|2,{100,48,0}}, +/* 36888 */ {(11<<2)|2,{100,48,0}}, +/* 36889 */ {(11<<2)|2,{100,48,0}}, +/* 36890 */ {(11<<2)|2,{100,48,0}}, +/* 36891 */ {(11<<2)|2,{100,48,0}}, +/* 36892 */ {(11<<2)|2,{100,48,0}}, +/* 36893 */ {(11<<2)|2,{100,48,0}}, +/* 36894 */ {(11<<2)|2,{100,48,0}}, +/* 36895 */ {(11<<2)|2,{100,48,0}}, +/* 36896 */ {(16<<2)|3,{100,49,48}}, +/* 36897 */ {(16<<2)|3,{100,49,49}}, +/* 36898 */ {(16<<2)|3,{100,49,50}}, +/* 36899 */ {(16<<2)|3,{100,49,97}}, +/* 36900 */ {(16<<2)|3,{100,49,99}}, +/* 36901 */ {(16<<2)|3,{100,49,101}}, +/* 36902 */ {(16<<2)|3,{100,49,105}}, +/* 36903 */ {(16<<2)|3,{100,49,111}}, +/* 36904 */ {(16<<2)|3,{100,49,115}}, +/* 36905 */ {(16<<2)|3,{100,49,116}}, +/* 36906 */ {(11<<2)|2,{100,49,0}}, +/* 36907 */ {(11<<2)|2,{100,49,0}}, +/* 36908 */ {(11<<2)|2,{100,49,0}}, +/* 36909 */ {(11<<2)|2,{100,49,0}}, +/* 36910 */ {(11<<2)|2,{100,49,0}}, +/* 36911 */ {(11<<2)|2,{100,49,0}}, +/* 36912 */ {(11<<2)|2,{100,49,0}}, +/* 36913 */ {(11<<2)|2,{100,49,0}}, +/* 36914 */ {(11<<2)|2,{100,49,0}}, +/* 36915 */ {(11<<2)|2,{100,49,0}}, +/* 36916 */ {(11<<2)|2,{100,49,0}}, +/* 36917 */ {(11<<2)|2,{100,49,0}}, +/* 36918 */ {(11<<2)|2,{100,49,0}}, +/* 36919 */ {(11<<2)|2,{100,49,0}}, +/* 36920 */ {(11<<2)|2,{100,49,0}}, +/* 36921 */ {(11<<2)|2,{100,49,0}}, +/* 36922 */ {(11<<2)|2,{100,49,0}}, +/* 36923 */ {(11<<2)|2,{100,49,0}}, +/* 36924 */ {(11<<2)|2,{100,49,0}}, +/* 36925 */ {(11<<2)|2,{100,49,0}}, +/* 36926 */ {(11<<2)|2,{100,49,0}}, +/* 36927 */ {(11<<2)|2,{100,49,0}}, +/* 36928 */ {(16<<2)|3,{100,50,48}}, +/* 36929 */ {(16<<2)|3,{100,50,49}}, +/* 36930 */ {(16<<2)|3,{100,50,50}}, +/* 36931 */ {(16<<2)|3,{100,50,97}}, +/* 36932 */ {(16<<2)|3,{100,50,99}}, +/* 36933 */ {(16<<2)|3,{100,50,101}}, +/* 36934 */ {(16<<2)|3,{100,50,105}}, +/* 36935 */ {(16<<2)|3,{100,50,111}}, +/* 36936 */ {(16<<2)|3,{100,50,115}}, +/* 36937 */ {(16<<2)|3,{100,50,116}}, +/* 36938 */ {(11<<2)|2,{100,50,0}}, +/* 36939 */ {(11<<2)|2,{100,50,0}}, +/* 36940 */ {(11<<2)|2,{100,50,0}}, +/* 36941 */ {(11<<2)|2,{100,50,0}}, +/* 36942 */ {(11<<2)|2,{100,50,0}}, +/* 36943 */ {(11<<2)|2,{100,50,0}}, +/* 36944 */ {(11<<2)|2,{100,50,0}}, +/* 36945 */ {(11<<2)|2,{100,50,0}}, +/* 36946 */ {(11<<2)|2,{100,50,0}}, +/* 36947 */ {(11<<2)|2,{100,50,0}}, +/* 36948 */ {(11<<2)|2,{100,50,0}}, +/* 36949 */ {(11<<2)|2,{100,50,0}}, +/* 36950 */ {(11<<2)|2,{100,50,0}}, +/* 36951 */ {(11<<2)|2,{100,50,0}}, +/* 36952 */ {(11<<2)|2,{100,50,0}}, +/* 36953 */ {(11<<2)|2,{100,50,0}}, +/* 36954 */ {(11<<2)|2,{100,50,0}}, +/* 36955 */ {(11<<2)|2,{100,50,0}}, +/* 36956 */ {(11<<2)|2,{100,50,0}}, +/* 36957 */ {(11<<2)|2,{100,50,0}}, +/* 36958 */ {(11<<2)|2,{100,50,0}}, +/* 36959 */ {(11<<2)|2,{100,50,0}}, +/* 36960 */ {(16<<2)|3,{100,97,48}}, +/* 36961 */ {(16<<2)|3,{100,97,49}}, +/* 36962 */ {(16<<2)|3,{100,97,50}}, +/* 36963 */ {(16<<2)|3,{100,97,97}}, +/* 36964 */ {(16<<2)|3,{100,97,99}}, +/* 36965 */ {(16<<2)|3,{100,97,101}}, +/* 36966 */ {(16<<2)|3,{100,97,105}}, +/* 36967 */ {(16<<2)|3,{100,97,111}}, +/* 36968 */ {(16<<2)|3,{100,97,115}}, +/* 36969 */ {(16<<2)|3,{100,97,116}}, +/* 36970 */ {(11<<2)|2,{100,97,0}}, +/* 36971 */ {(11<<2)|2,{100,97,0}}, +/* 36972 */ {(11<<2)|2,{100,97,0}}, +/* 36973 */ {(11<<2)|2,{100,97,0}}, +/* 36974 */ {(11<<2)|2,{100,97,0}}, +/* 36975 */ {(11<<2)|2,{100,97,0}}, +/* 36976 */ {(11<<2)|2,{100,97,0}}, +/* 36977 */ {(11<<2)|2,{100,97,0}}, +/* 36978 */ {(11<<2)|2,{100,97,0}}, +/* 36979 */ {(11<<2)|2,{100,97,0}}, +/* 36980 */ {(11<<2)|2,{100,97,0}}, +/* 36981 */ {(11<<2)|2,{100,97,0}}, +/* 36982 */ {(11<<2)|2,{100,97,0}}, +/* 36983 */ {(11<<2)|2,{100,97,0}}, +/* 36984 */ {(11<<2)|2,{100,97,0}}, +/* 36985 */ {(11<<2)|2,{100,97,0}}, +/* 36986 */ {(11<<2)|2,{100,97,0}}, +/* 36987 */ {(11<<2)|2,{100,97,0}}, +/* 36988 */ {(11<<2)|2,{100,97,0}}, +/* 36989 */ {(11<<2)|2,{100,97,0}}, +/* 36990 */ {(11<<2)|2,{100,97,0}}, +/* 36991 */ {(11<<2)|2,{100,97,0}}, +/* 36992 */ {(16<<2)|3,{100,99,48}}, +/* 36993 */ {(16<<2)|3,{100,99,49}}, +/* 36994 */ {(16<<2)|3,{100,99,50}}, +/* 36995 */ {(16<<2)|3,{100,99,97}}, +/* 36996 */ {(16<<2)|3,{100,99,99}}, +/* 36997 */ {(16<<2)|3,{100,99,101}}, +/* 36998 */ {(16<<2)|3,{100,99,105}}, +/* 36999 */ {(16<<2)|3,{100,99,111}}, +/* 37000 */ {(16<<2)|3,{100,99,115}}, +/* 37001 */ {(16<<2)|3,{100,99,116}}, +/* 37002 */ {(11<<2)|2,{100,99,0}}, +/* 37003 */ {(11<<2)|2,{100,99,0}}, +/* 37004 */ {(11<<2)|2,{100,99,0}}, +/* 37005 */ {(11<<2)|2,{100,99,0}}, +/* 37006 */ {(11<<2)|2,{100,99,0}}, +/* 37007 */ {(11<<2)|2,{100,99,0}}, +/* 37008 */ {(11<<2)|2,{100,99,0}}, +/* 37009 */ {(11<<2)|2,{100,99,0}}, +/* 37010 */ {(11<<2)|2,{100,99,0}}, +/* 37011 */ {(11<<2)|2,{100,99,0}}, +/* 37012 */ {(11<<2)|2,{100,99,0}}, +/* 37013 */ {(11<<2)|2,{100,99,0}}, +/* 37014 */ {(11<<2)|2,{100,99,0}}, +/* 37015 */ {(11<<2)|2,{100,99,0}}, +/* 37016 */ {(11<<2)|2,{100,99,0}}, +/* 37017 */ {(11<<2)|2,{100,99,0}}, +/* 37018 */ {(11<<2)|2,{100,99,0}}, +/* 37019 */ {(11<<2)|2,{100,99,0}}, +/* 37020 */ {(11<<2)|2,{100,99,0}}, +/* 37021 */ {(11<<2)|2,{100,99,0}}, +/* 37022 */ {(11<<2)|2,{100,99,0}}, +/* 37023 */ {(11<<2)|2,{100,99,0}}, +/* 37024 */ {(16<<2)|3,{100,101,48}}, +/* 37025 */ {(16<<2)|3,{100,101,49}}, +/* 37026 */ {(16<<2)|3,{100,101,50}}, +/* 37027 */ {(16<<2)|3,{100,101,97}}, +/* 37028 */ {(16<<2)|3,{100,101,99}}, +/* 37029 */ {(16<<2)|3,{100,101,101}}, +/* 37030 */ {(16<<2)|3,{100,101,105}}, +/* 37031 */ {(16<<2)|3,{100,101,111}}, +/* 37032 */ {(16<<2)|3,{100,101,115}}, +/* 37033 */ {(16<<2)|3,{100,101,116}}, +/* 37034 */ {(11<<2)|2,{100,101,0}}, +/* 37035 */ {(11<<2)|2,{100,101,0}}, +/* 37036 */ {(11<<2)|2,{100,101,0}}, +/* 37037 */ {(11<<2)|2,{100,101,0}}, +/* 37038 */ {(11<<2)|2,{100,101,0}}, +/* 37039 */ {(11<<2)|2,{100,101,0}}, +/* 37040 */ {(11<<2)|2,{100,101,0}}, +/* 37041 */ {(11<<2)|2,{100,101,0}}, +/* 37042 */ {(11<<2)|2,{100,101,0}}, +/* 37043 */ {(11<<2)|2,{100,101,0}}, +/* 37044 */ {(11<<2)|2,{100,101,0}}, +/* 37045 */ {(11<<2)|2,{100,101,0}}, +/* 37046 */ {(11<<2)|2,{100,101,0}}, +/* 37047 */ {(11<<2)|2,{100,101,0}}, +/* 37048 */ {(11<<2)|2,{100,101,0}}, +/* 37049 */ {(11<<2)|2,{100,101,0}}, +/* 37050 */ {(11<<2)|2,{100,101,0}}, +/* 37051 */ {(11<<2)|2,{100,101,0}}, +/* 37052 */ {(11<<2)|2,{100,101,0}}, +/* 37053 */ {(11<<2)|2,{100,101,0}}, +/* 37054 */ {(11<<2)|2,{100,101,0}}, +/* 37055 */ {(11<<2)|2,{100,101,0}}, +/* 37056 */ {(16<<2)|3,{100,105,48}}, +/* 37057 */ {(16<<2)|3,{100,105,49}}, +/* 37058 */ {(16<<2)|3,{100,105,50}}, +/* 37059 */ {(16<<2)|3,{100,105,97}}, +/* 37060 */ {(16<<2)|3,{100,105,99}}, +/* 37061 */ {(16<<2)|3,{100,105,101}}, +/* 37062 */ {(16<<2)|3,{100,105,105}}, +/* 37063 */ {(16<<2)|3,{100,105,111}}, +/* 37064 */ {(16<<2)|3,{100,105,115}}, +/* 37065 */ {(16<<2)|3,{100,105,116}}, +/* 37066 */ {(11<<2)|2,{100,105,0}}, +/* 37067 */ {(11<<2)|2,{100,105,0}}, +/* 37068 */ {(11<<2)|2,{100,105,0}}, +/* 37069 */ {(11<<2)|2,{100,105,0}}, +/* 37070 */ {(11<<2)|2,{100,105,0}}, +/* 37071 */ {(11<<2)|2,{100,105,0}}, +/* 37072 */ {(11<<2)|2,{100,105,0}}, +/* 37073 */ {(11<<2)|2,{100,105,0}}, +/* 37074 */ {(11<<2)|2,{100,105,0}}, +/* 37075 */ {(11<<2)|2,{100,105,0}}, +/* 37076 */ {(11<<2)|2,{100,105,0}}, +/* 37077 */ {(11<<2)|2,{100,105,0}}, +/* 37078 */ {(11<<2)|2,{100,105,0}}, +/* 37079 */ {(11<<2)|2,{100,105,0}}, +/* 37080 */ {(11<<2)|2,{100,105,0}}, +/* 37081 */ {(11<<2)|2,{100,105,0}}, +/* 37082 */ {(11<<2)|2,{100,105,0}}, +/* 37083 */ {(11<<2)|2,{100,105,0}}, +/* 37084 */ {(11<<2)|2,{100,105,0}}, +/* 37085 */ {(11<<2)|2,{100,105,0}}, +/* 37086 */ {(11<<2)|2,{100,105,0}}, +/* 37087 */ {(11<<2)|2,{100,105,0}}, +/* 37088 */ {(16<<2)|3,{100,111,48}}, +/* 37089 */ {(16<<2)|3,{100,111,49}}, +/* 37090 */ {(16<<2)|3,{100,111,50}}, +/* 37091 */ {(16<<2)|3,{100,111,97}}, +/* 37092 */ {(16<<2)|3,{100,111,99}}, +/* 37093 */ {(16<<2)|3,{100,111,101}}, +/* 37094 */ {(16<<2)|3,{100,111,105}}, +/* 37095 */ {(16<<2)|3,{100,111,111}}, +/* 37096 */ {(16<<2)|3,{100,111,115}}, +/* 37097 */ {(16<<2)|3,{100,111,116}}, +/* 37098 */ {(11<<2)|2,{100,111,0}}, +/* 37099 */ {(11<<2)|2,{100,111,0}}, +/* 37100 */ {(11<<2)|2,{100,111,0}}, +/* 37101 */ {(11<<2)|2,{100,111,0}}, +/* 37102 */ {(11<<2)|2,{100,111,0}}, +/* 37103 */ {(11<<2)|2,{100,111,0}}, +/* 37104 */ {(11<<2)|2,{100,111,0}}, +/* 37105 */ {(11<<2)|2,{100,111,0}}, +/* 37106 */ {(11<<2)|2,{100,111,0}}, +/* 37107 */ {(11<<2)|2,{100,111,0}}, +/* 37108 */ {(11<<2)|2,{100,111,0}}, +/* 37109 */ {(11<<2)|2,{100,111,0}}, +/* 37110 */ {(11<<2)|2,{100,111,0}}, +/* 37111 */ {(11<<2)|2,{100,111,0}}, +/* 37112 */ {(11<<2)|2,{100,111,0}}, +/* 37113 */ {(11<<2)|2,{100,111,0}}, +/* 37114 */ {(11<<2)|2,{100,111,0}}, +/* 37115 */ {(11<<2)|2,{100,111,0}}, +/* 37116 */ {(11<<2)|2,{100,111,0}}, +/* 37117 */ {(11<<2)|2,{100,111,0}}, +/* 37118 */ {(11<<2)|2,{100,111,0}}, +/* 37119 */ {(11<<2)|2,{100,111,0}}, +/* 37120 */ {(16<<2)|3,{100,115,48}}, +/* 37121 */ {(16<<2)|3,{100,115,49}}, +/* 37122 */ {(16<<2)|3,{100,115,50}}, +/* 37123 */ {(16<<2)|3,{100,115,97}}, +/* 37124 */ {(16<<2)|3,{100,115,99}}, +/* 37125 */ {(16<<2)|3,{100,115,101}}, +/* 37126 */ {(16<<2)|3,{100,115,105}}, +/* 37127 */ {(16<<2)|3,{100,115,111}}, +/* 37128 */ {(16<<2)|3,{100,115,115}}, +/* 37129 */ {(16<<2)|3,{100,115,116}}, +/* 37130 */ {(11<<2)|2,{100,115,0}}, +/* 37131 */ {(11<<2)|2,{100,115,0}}, +/* 37132 */ {(11<<2)|2,{100,115,0}}, +/* 37133 */ {(11<<2)|2,{100,115,0}}, +/* 37134 */ {(11<<2)|2,{100,115,0}}, +/* 37135 */ {(11<<2)|2,{100,115,0}}, +/* 37136 */ {(11<<2)|2,{100,115,0}}, +/* 37137 */ {(11<<2)|2,{100,115,0}}, +/* 37138 */ {(11<<2)|2,{100,115,0}}, +/* 37139 */ {(11<<2)|2,{100,115,0}}, +/* 37140 */ {(11<<2)|2,{100,115,0}}, +/* 37141 */ {(11<<2)|2,{100,115,0}}, +/* 37142 */ {(11<<2)|2,{100,115,0}}, +/* 37143 */ {(11<<2)|2,{100,115,0}}, +/* 37144 */ {(11<<2)|2,{100,115,0}}, +/* 37145 */ {(11<<2)|2,{100,115,0}}, +/* 37146 */ {(11<<2)|2,{100,115,0}}, +/* 37147 */ {(11<<2)|2,{100,115,0}}, +/* 37148 */ {(11<<2)|2,{100,115,0}}, +/* 37149 */ {(11<<2)|2,{100,115,0}}, +/* 37150 */ {(11<<2)|2,{100,115,0}}, +/* 37151 */ {(11<<2)|2,{100,115,0}}, +/* 37152 */ {(16<<2)|3,{100,116,48}}, +/* 37153 */ {(16<<2)|3,{100,116,49}}, +/* 37154 */ {(16<<2)|3,{100,116,50}}, +/* 37155 */ {(16<<2)|3,{100,116,97}}, +/* 37156 */ {(16<<2)|3,{100,116,99}}, +/* 37157 */ {(16<<2)|3,{100,116,101}}, +/* 37158 */ {(16<<2)|3,{100,116,105}}, +/* 37159 */ {(16<<2)|3,{100,116,111}}, +/* 37160 */ {(16<<2)|3,{100,116,115}}, +/* 37161 */ {(16<<2)|3,{100,116,116}}, +/* 37162 */ {(11<<2)|2,{100,116,0}}, +/* 37163 */ {(11<<2)|2,{100,116,0}}, +/* 37164 */ {(11<<2)|2,{100,116,0}}, +/* 37165 */ {(11<<2)|2,{100,116,0}}, +/* 37166 */ {(11<<2)|2,{100,116,0}}, +/* 37167 */ {(11<<2)|2,{100,116,0}}, +/* 37168 */ {(11<<2)|2,{100,116,0}}, +/* 37169 */ {(11<<2)|2,{100,116,0}}, +/* 37170 */ {(11<<2)|2,{100,116,0}}, +/* 37171 */ {(11<<2)|2,{100,116,0}}, +/* 37172 */ {(11<<2)|2,{100,116,0}}, +/* 37173 */ {(11<<2)|2,{100,116,0}}, +/* 37174 */ {(11<<2)|2,{100,116,0}}, +/* 37175 */ {(11<<2)|2,{100,116,0}}, +/* 37176 */ {(11<<2)|2,{100,116,0}}, +/* 37177 */ {(11<<2)|2,{100,116,0}}, +/* 37178 */ {(11<<2)|2,{100,116,0}}, +/* 37179 */ {(11<<2)|2,{100,116,0}}, +/* 37180 */ {(11<<2)|2,{100,116,0}}, +/* 37181 */ {(11<<2)|2,{100,116,0}}, +/* 37182 */ {(11<<2)|2,{100,116,0}}, +/* 37183 */ {(11<<2)|2,{100,116,0}}, +/* 37184 */ {(12<<2)|2,{100,32,0}}, +/* 37185 */ {(12<<2)|2,{100,32,0}}, +/* 37186 */ {(12<<2)|2,{100,32,0}}, +/* 37187 */ {(12<<2)|2,{100,32,0}}, +/* 37188 */ {(12<<2)|2,{100,32,0}}, +/* 37189 */ {(12<<2)|2,{100,32,0}}, +/* 37190 */ {(12<<2)|2,{100,32,0}}, +/* 37191 */ {(12<<2)|2,{100,32,0}}, +/* 37192 */ {(12<<2)|2,{100,32,0}}, +/* 37193 */ {(12<<2)|2,{100,32,0}}, +/* 37194 */ {(12<<2)|2,{100,32,0}}, +/* 37195 */ {(12<<2)|2,{100,32,0}}, +/* 37196 */ {(12<<2)|2,{100,32,0}}, +/* 37197 */ {(12<<2)|2,{100,32,0}}, +/* 37198 */ {(12<<2)|2,{100,32,0}}, +/* 37199 */ {(12<<2)|2,{100,32,0}}, +/* 37200 */ {(12<<2)|2,{100,37,0}}, +/* 37201 */ {(12<<2)|2,{100,37,0}}, +/* 37202 */ {(12<<2)|2,{100,37,0}}, +/* 37203 */ {(12<<2)|2,{100,37,0}}, +/* 37204 */ {(12<<2)|2,{100,37,0}}, +/* 37205 */ {(12<<2)|2,{100,37,0}}, +/* 37206 */ {(12<<2)|2,{100,37,0}}, +/* 37207 */ {(12<<2)|2,{100,37,0}}, +/* 37208 */ {(12<<2)|2,{100,37,0}}, +/* 37209 */ {(12<<2)|2,{100,37,0}}, +/* 37210 */ {(12<<2)|2,{100,37,0}}, +/* 37211 */ {(12<<2)|2,{100,37,0}}, +/* 37212 */ {(12<<2)|2,{100,37,0}}, +/* 37213 */ {(12<<2)|2,{100,37,0}}, +/* 37214 */ {(12<<2)|2,{100,37,0}}, +/* 37215 */ {(12<<2)|2,{100,37,0}}, +/* 37216 */ {(12<<2)|2,{100,45,0}}, +/* 37217 */ {(12<<2)|2,{100,45,0}}, +/* 37218 */ {(12<<2)|2,{100,45,0}}, +/* 37219 */ {(12<<2)|2,{100,45,0}}, +/* 37220 */ {(12<<2)|2,{100,45,0}}, +/* 37221 */ {(12<<2)|2,{100,45,0}}, +/* 37222 */ {(12<<2)|2,{100,45,0}}, +/* 37223 */ {(12<<2)|2,{100,45,0}}, +/* 37224 */ {(12<<2)|2,{100,45,0}}, +/* 37225 */ {(12<<2)|2,{100,45,0}}, +/* 37226 */ {(12<<2)|2,{100,45,0}}, +/* 37227 */ {(12<<2)|2,{100,45,0}}, +/* 37228 */ {(12<<2)|2,{100,45,0}}, +/* 37229 */ {(12<<2)|2,{100,45,0}}, +/* 37230 */ {(12<<2)|2,{100,45,0}}, +/* 37231 */ {(12<<2)|2,{100,45,0}}, +/* 37232 */ {(12<<2)|2,{100,46,0}}, +/* 37233 */ {(12<<2)|2,{100,46,0}}, +/* 37234 */ {(12<<2)|2,{100,46,0}}, +/* 37235 */ {(12<<2)|2,{100,46,0}}, +/* 37236 */ {(12<<2)|2,{100,46,0}}, +/* 37237 */ {(12<<2)|2,{100,46,0}}, +/* 37238 */ {(12<<2)|2,{100,46,0}}, +/* 37239 */ {(12<<2)|2,{100,46,0}}, +/* 37240 */ {(12<<2)|2,{100,46,0}}, +/* 37241 */ {(12<<2)|2,{100,46,0}}, +/* 37242 */ {(12<<2)|2,{100,46,0}}, +/* 37243 */ {(12<<2)|2,{100,46,0}}, +/* 37244 */ {(12<<2)|2,{100,46,0}}, +/* 37245 */ {(12<<2)|2,{100,46,0}}, +/* 37246 */ {(12<<2)|2,{100,46,0}}, +/* 37247 */ {(12<<2)|2,{100,46,0}}, +/* 37248 */ {(12<<2)|2,{100,47,0}}, +/* 37249 */ {(12<<2)|2,{100,47,0}}, +/* 37250 */ {(12<<2)|2,{100,47,0}}, +/* 37251 */ {(12<<2)|2,{100,47,0}}, +/* 37252 */ {(12<<2)|2,{100,47,0}}, +/* 37253 */ {(12<<2)|2,{100,47,0}}, +/* 37254 */ {(12<<2)|2,{100,47,0}}, +/* 37255 */ {(12<<2)|2,{100,47,0}}, +/* 37256 */ {(12<<2)|2,{100,47,0}}, +/* 37257 */ {(12<<2)|2,{100,47,0}}, +/* 37258 */ {(12<<2)|2,{100,47,0}}, +/* 37259 */ {(12<<2)|2,{100,47,0}}, +/* 37260 */ {(12<<2)|2,{100,47,0}}, +/* 37261 */ {(12<<2)|2,{100,47,0}}, +/* 37262 */ {(12<<2)|2,{100,47,0}}, +/* 37263 */ {(12<<2)|2,{100,47,0}}, +/* 37264 */ {(12<<2)|2,{100,51,0}}, +/* 37265 */ {(12<<2)|2,{100,51,0}}, +/* 37266 */ {(12<<2)|2,{100,51,0}}, +/* 37267 */ {(12<<2)|2,{100,51,0}}, +/* 37268 */ {(12<<2)|2,{100,51,0}}, +/* 37269 */ {(12<<2)|2,{100,51,0}}, +/* 37270 */ {(12<<2)|2,{100,51,0}}, +/* 37271 */ {(12<<2)|2,{100,51,0}}, +/* 37272 */ {(12<<2)|2,{100,51,0}}, +/* 37273 */ {(12<<2)|2,{100,51,0}}, +/* 37274 */ {(12<<2)|2,{100,51,0}}, +/* 37275 */ {(12<<2)|2,{100,51,0}}, +/* 37276 */ {(12<<2)|2,{100,51,0}}, +/* 37277 */ {(12<<2)|2,{100,51,0}}, +/* 37278 */ {(12<<2)|2,{100,51,0}}, +/* 37279 */ {(12<<2)|2,{100,51,0}}, +/* 37280 */ {(12<<2)|2,{100,52,0}}, +/* 37281 */ {(12<<2)|2,{100,52,0}}, +/* 37282 */ {(12<<2)|2,{100,52,0}}, +/* 37283 */ {(12<<2)|2,{100,52,0}}, +/* 37284 */ {(12<<2)|2,{100,52,0}}, +/* 37285 */ {(12<<2)|2,{100,52,0}}, +/* 37286 */ {(12<<2)|2,{100,52,0}}, +/* 37287 */ {(12<<2)|2,{100,52,0}}, +/* 37288 */ {(12<<2)|2,{100,52,0}}, +/* 37289 */ {(12<<2)|2,{100,52,0}}, +/* 37290 */ {(12<<2)|2,{100,52,0}}, +/* 37291 */ {(12<<2)|2,{100,52,0}}, +/* 37292 */ {(12<<2)|2,{100,52,0}}, +/* 37293 */ {(12<<2)|2,{100,52,0}}, +/* 37294 */ {(12<<2)|2,{100,52,0}}, +/* 37295 */ {(12<<2)|2,{100,52,0}}, +/* 37296 */ {(12<<2)|2,{100,53,0}}, +/* 37297 */ {(12<<2)|2,{100,53,0}}, +/* 37298 */ {(12<<2)|2,{100,53,0}}, +/* 37299 */ {(12<<2)|2,{100,53,0}}, +/* 37300 */ {(12<<2)|2,{100,53,0}}, +/* 37301 */ {(12<<2)|2,{100,53,0}}, +/* 37302 */ {(12<<2)|2,{100,53,0}}, +/* 37303 */ {(12<<2)|2,{100,53,0}}, +/* 37304 */ {(12<<2)|2,{100,53,0}}, +/* 37305 */ {(12<<2)|2,{100,53,0}}, +/* 37306 */ {(12<<2)|2,{100,53,0}}, +/* 37307 */ {(12<<2)|2,{100,53,0}}, +/* 37308 */ {(12<<2)|2,{100,53,0}}, +/* 37309 */ {(12<<2)|2,{100,53,0}}, +/* 37310 */ {(12<<2)|2,{100,53,0}}, +/* 37311 */ {(12<<2)|2,{100,53,0}}, +/* 37312 */ {(12<<2)|2,{100,54,0}}, +/* 37313 */ {(12<<2)|2,{100,54,0}}, +/* 37314 */ {(12<<2)|2,{100,54,0}}, +/* 37315 */ {(12<<2)|2,{100,54,0}}, +/* 37316 */ {(12<<2)|2,{100,54,0}}, +/* 37317 */ {(12<<2)|2,{100,54,0}}, +/* 37318 */ {(12<<2)|2,{100,54,0}}, +/* 37319 */ {(12<<2)|2,{100,54,0}}, +/* 37320 */ {(12<<2)|2,{100,54,0}}, +/* 37321 */ {(12<<2)|2,{100,54,0}}, +/* 37322 */ {(12<<2)|2,{100,54,0}}, +/* 37323 */ {(12<<2)|2,{100,54,0}}, +/* 37324 */ {(12<<2)|2,{100,54,0}}, +/* 37325 */ {(12<<2)|2,{100,54,0}}, +/* 37326 */ {(12<<2)|2,{100,54,0}}, +/* 37327 */ {(12<<2)|2,{100,54,0}}, +/* 37328 */ {(12<<2)|2,{100,55,0}}, +/* 37329 */ {(12<<2)|2,{100,55,0}}, +/* 37330 */ {(12<<2)|2,{100,55,0}}, +/* 37331 */ {(12<<2)|2,{100,55,0}}, +/* 37332 */ {(12<<2)|2,{100,55,0}}, +/* 37333 */ {(12<<2)|2,{100,55,0}}, +/* 37334 */ {(12<<2)|2,{100,55,0}}, +/* 37335 */ {(12<<2)|2,{100,55,0}}, +/* 37336 */ {(12<<2)|2,{100,55,0}}, +/* 37337 */ {(12<<2)|2,{100,55,0}}, +/* 37338 */ {(12<<2)|2,{100,55,0}}, +/* 37339 */ {(12<<2)|2,{100,55,0}}, +/* 37340 */ {(12<<2)|2,{100,55,0}}, +/* 37341 */ {(12<<2)|2,{100,55,0}}, +/* 37342 */ {(12<<2)|2,{100,55,0}}, +/* 37343 */ {(12<<2)|2,{100,55,0}}, +/* 37344 */ {(12<<2)|2,{100,56,0}}, +/* 37345 */ {(12<<2)|2,{100,56,0}}, +/* 37346 */ {(12<<2)|2,{100,56,0}}, +/* 37347 */ {(12<<2)|2,{100,56,0}}, +/* 37348 */ {(12<<2)|2,{100,56,0}}, +/* 37349 */ {(12<<2)|2,{100,56,0}}, +/* 37350 */ {(12<<2)|2,{100,56,0}}, +/* 37351 */ {(12<<2)|2,{100,56,0}}, +/* 37352 */ {(12<<2)|2,{100,56,0}}, +/* 37353 */ {(12<<2)|2,{100,56,0}}, +/* 37354 */ {(12<<2)|2,{100,56,0}}, +/* 37355 */ {(12<<2)|2,{100,56,0}}, +/* 37356 */ {(12<<2)|2,{100,56,0}}, +/* 37357 */ {(12<<2)|2,{100,56,0}}, +/* 37358 */ {(12<<2)|2,{100,56,0}}, +/* 37359 */ {(12<<2)|2,{100,56,0}}, +/* 37360 */ {(12<<2)|2,{100,57,0}}, +/* 37361 */ {(12<<2)|2,{100,57,0}}, +/* 37362 */ {(12<<2)|2,{100,57,0}}, +/* 37363 */ {(12<<2)|2,{100,57,0}}, +/* 37364 */ {(12<<2)|2,{100,57,0}}, +/* 37365 */ {(12<<2)|2,{100,57,0}}, +/* 37366 */ {(12<<2)|2,{100,57,0}}, +/* 37367 */ {(12<<2)|2,{100,57,0}}, +/* 37368 */ {(12<<2)|2,{100,57,0}}, +/* 37369 */ {(12<<2)|2,{100,57,0}}, +/* 37370 */ {(12<<2)|2,{100,57,0}}, +/* 37371 */ {(12<<2)|2,{100,57,0}}, +/* 37372 */ {(12<<2)|2,{100,57,0}}, +/* 37373 */ {(12<<2)|2,{100,57,0}}, +/* 37374 */ {(12<<2)|2,{100,57,0}}, +/* 37375 */ {(12<<2)|2,{100,57,0}}, +/* 37376 */ {(12<<2)|2,{100,61,0}}, +/* 37377 */ {(12<<2)|2,{100,61,0}}, +/* 37378 */ {(12<<2)|2,{100,61,0}}, +/* 37379 */ {(12<<2)|2,{100,61,0}}, +/* 37380 */ {(12<<2)|2,{100,61,0}}, +/* 37381 */ {(12<<2)|2,{100,61,0}}, +/* 37382 */ {(12<<2)|2,{100,61,0}}, +/* 37383 */ {(12<<2)|2,{100,61,0}}, +/* 37384 */ {(12<<2)|2,{100,61,0}}, +/* 37385 */ {(12<<2)|2,{100,61,0}}, +/* 37386 */ {(12<<2)|2,{100,61,0}}, +/* 37387 */ {(12<<2)|2,{100,61,0}}, +/* 37388 */ {(12<<2)|2,{100,61,0}}, +/* 37389 */ {(12<<2)|2,{100,61,0}}, +/* 37390 */ {(12<<2)|2,{100,61,0}}, +/* 37391 */ {(12<<2)|2,{100,61,0}}, +/* 37392 */ {(12<<2)|2,{100,65,0}}, +/* 37393 */ {(12<<2)|2,{100,65,0}}, +/* 37394 */ {(12<<2)|2,{100,65,0}}, +/* 37395 */ {(12<<2)|2,{100,65,0}}, +/* 37396 */ {(12<<2)|2,{100,65,0}}, +/* 37397 */ {(12<<2)|2,{100,65,0}}, +/* 37398 */ {(12<<2)|2,{100,65,0}}, +/* 37399 */ {(12<<2)|2,{100,65,0}}, +/* 37400 */ {(12<<2)|2,{100,65,0}}, +/* 37401 */ {(12<<2)|2,{100,65,0}}, +/* 37402 */ {(12<<2)|2,{100,65,0}}, +/* 37403 */ {(12<<2)|2,{100,65,0}}, +/* 37404 */ {(12<<2)|2,{100,65,0}}, +/* 37405 */ {(12<<2)|2,{100,65,0}}, +/* 37406 */ {(12<<2)|2,{100,65,0}}, +/* 37407 */ {(12<<2)|2,{100,65,0}}, +/* 37408 */ {(12<<2)|2,{100,95,0}}, +/* 37409 */ {(12<<2)|2,{100,95,0}}, +/* 37410 */ {(12<<2)|2,{100,95,0}}, +/* 37411 */ {(12<<2)|2,{100,95,0}}, +/* 37412 */ {(12<<2)|2,{100,95,0}}, +/* 37413 */ {(12<<2)|2,{100,95,0}}, +/* 37414 */ {(12<<2)|2,{100,95,0}}, +/* 37415 */ {(12<<2)|2,{100,95,0}}, +/* 37416 */ {(12<<2)|2,{100,95,0}}, +/* 37417 */ {(12<<2)|2,{100,95,0}}, +/* 37418 */ {(12<<2)|2,{100,95,0}}, +/* 37419 */ {(12<<2)|2,{100,95,0}}, +/* 37420 */ {(12<<2)|2,{100,95,0}}, +/* 37421 */ {(12<<2)|2,{100,95,0}}, +/* 37422 */ {(12<<2)|2,{100,95,0}}, +/* 37423 */ {(12<<2)|2,{100,95,0}}, +/* 37424 */ {(12<<2)|2,{100,98,0}}, +/* 37425 */ {(12<<2)|2,{100,98,0}}, +/* 37426 */ {(12<<2)|2,{100,98,0}}, +/* 37427 */ {(12<<2)|2,{100,98,0}}, +/* 37428 */ {(12<<2)|2,{100,98,0}}, +/* 37429 */ {(12<<2)|2,{100,98,0}}, +/* 37430 */ {(12<<2)|2,{100,98,0}}, +/* 37431 */ {(12<<2)|2,{100,98,0}}, +/* 37432 */ {(12<<2)|2,{100,98,0}}, +/* 37433 */ {(12<<2)|2,{100,98,0}}, +/* 37434 */ {(12<<2)|2,{100,98,0}}, +/* 37435 */ {(12<<2)|2,{100,98,0}}, +/* 37436 */ {(12<<2)|2,{100,98,0}}, +/* 37437 */ {(12<<2)|2,{100,98,0}}, +/* 37438 */ {(12<<2)|2,{100,98,0}}, +/* 37439 */ {(12<<2)|2,{100,98,0}}, +/* 37440 */ {(12<<2)|2,{100,100,0}}, +/* 37441 */ {(12<<2)|2,{100,100,0}}, +/* 37442 */ {(12<<2)|2,{100,100,0}}, +/* 37443 */ {(12<<2)|2,{100,100,0}}, +/* 37444 */ {(12<<2)|2,{100,100,0}}, +/* 37445 */ {(12<<2)|2,{100,100,0}}, +/* 37446 */ {(12<<2)|2,{100,100,0}}, +/* 37447 */ {(12<<2)|2,{100,100,0}}, +/* 37448 */ {(12<<2)|2,{100,100,0}}, +/* 37449 */ {(12<<2)|2,{100,100,0}}, +/* 37450 */ {(12<<2)|2,{100,100,0}}, +/* 37451 */ {(12<<2)|2,{100,100,0}}, +/* 37452 */ {(12<<2)|2,{100,100,0}}, +/* 37453 */ {(12<<2)|2,{100,100,0}}, +/* 37454 */ {(12<<2)|2,{100,100,0}}, +/* 37455 */ {(12<<2)|2,{100,100,0}}, +/* 37456 */ {(12<<2)|2,{100,102,0}}, +/* 37457 */ {(12<<2)|2,{100,102,0}}, +/* 37458 */ {(12<<2)|2,{100,102,0}}, +/* 37459 */ {(12<<2)|2,{100,102,0}}, +/* 37460 */ {(12<<2)|2,{100,102,0}}, +/* 37461 */ {(12<<2)|2,{100,102,0}}, +/* 37462 */ {(12<<2)|2,{100,102,0}}, +/* 37463 */ {(12<<2)|2,{100,102,0}}, +/* 37464 */ {(12<<2)|2,{100,102,0}}, +/* 37465 */ {(12<<2)|2,{100,102,0}}, +/* 37466 */ {(12<<2)|2,{100,102,0}}, +/* 37467 */ {(12<<2)|2,{100,102,0}}, +/* 37468 */ {(12<<2)|2,{100,102,0}}, +/* 37469 */ {(12<<2)|2,{100,102,0}}, +/* 37470 */ {(12<<2)|2,{100,102,0}}, +/* 37471 */ {(12<<2)|2,{100,102,0}}, +/* 37472 */ {(12<<2)|2,{100,103,0}}, +/* 37473 */ {(12<<2)|2,{100,103,0}}, +/* 37474 */ {(12<<2)|2,{100,103,0}}, +/* 37475 */ {(12<<2)|2,{100,103,0}}, +/* 37476 */ {(12<<2)|2,{100,103,0}}, +/* 37477 */ {(12<<2)|2,{100,103,0}}, +/* 37478 */ {(12<<2)|2,{100,103,0}}, +/* 37479 */ {(12<<2)|2,{100,103,0}}, +/* 37480 */ {(12<<2)|2,{100,103,0}}, +/* 37481 */ {(12<<2)|2,{100,103,0}}, +/* 37482 */ {(12<<2)|2,{100,103,0}}, +/* 37483 */ {(12<<2)|2,{100,103,0}}, +/* 37484 */ {(12<<2)|2,{100,103,0}}, +/* 37485 */ {(12<<2)|2,{100,103,0}}, +/* 37486 */ {(12<<2)|2,{100,103,0}}, +/* 37487 */ {(12<<2)|2,{100,103,0}}, +/* 37488 */ {(12<<2)|2,{100,104,0}}, +/* 37489 */ {(12<<2)|2,{100,104,0}}, +/* 37490 */ {(12<<2)|2,{100,104,0}}, +/* 37491 */ {(12<<2)|2,{100,104,0}}, +/* 37492 */ {(12<<2)|2,{100,104,0}}, +/* 37493 */ {(12<<2)|2,{100,104,0}}, +/* 37494 */ {(12<<2)|2,{100,104,0}}, +/* 37495 */ {(12<<2)|2,{100,104,0}}, +/* 37496 */ {(12<<2)|2,{100,104,0}}, +/* 37497 */ {(12<<2)|2,{100,104,0}}, +/* 37498 */ {(12<<2)|2,{100,104,0}}, +/* 37499 */ {(12<<2)|2,{100,104,0}}, +/* 37500 */ {(12<<2)|2,{100,104,0}}, +/* 37501 */ {(12<<2)|2,{100,104,0}}, +/* 37502 */ {(12<<2)|2,{100,104,0}}, +/* 37503 */ {(12<<2)|2,{100,104,0}}, +/* 37504 */ {(12<<2)|2,{100,108,0}}, +/* 37505 */ {(12<<2)|2,{100,108,0}}, +/* 37506 */ {(12<<2)|2,{100,108,0}}, +/* 37507 */ {(12<<2)|2,{100,108,0}}, +/* 37508 */ {(12<<2)|2,{100,108,0}}, +/* 37509 */ {(12<<2)|2,{100,108,0}}, +/* 37510 */ {(12<<2)|2,{100,108,0}}, +/* 37511 */ {(12<<2)|2,{100,108,0}}, +/* 37512 */ {(12<<2)|2,{100,108,0}}, +/* 37513 */ {(12<<2)|2,{100,108,0}}, +/* 37514 */ {(12<<2)|2,{100,108,0}}, +/* 37515 */ {(12<<2)|2,{100,108,0}}, +/* 37516 */ {(12<<2)|2,{100,108,0}}, +/* 37517 */ {(12<<2)|2,{100,108,0}}, +/* 37518 */ {(12<<2)|2,{100,108,0}}, +/* 37519 */ {(12<<2)|2,{100,108,0}}, +/* 37520 */ {(12<<2)|2,{100,109,0}}, +/* 37521 */ {(12<<2)|2,{100,109,0}}, +/* 37522 */ {(12<<2)|2,{100,109,0}}, +/* 37523 */ {(12<<2)|2,{100,109,0}}, +/* 37524 */ {(12<<2)|2,{100,109,0}}, +/* 37525 */ {(12<<2)|2,{100,109,0}}, +/* 37526 */ {(12<<2)|2,{100,109,0}}, +/* 37527 */ {(12<<2)|2,{100,109,0}}, +/* 37528 */ {(12<<2)|2,{100,109,0}}, +/* 37529 */ {(12<<2)|2,{100,109,0}}, +/* 37530 */ {(12<<2)|2,{100,109,0}}, +/* 37531 */ {(12<<2)|2,{100,109,0}}, +/* 37532 */ {(12<<2)|2,{100,109,0}}, +/* 37533 */ {(12<<2)|2,{100,109,0}}, +/* 37534 */ {(12<<2)|2,{100,109,0}}, +/* 37535 */ {(12<<2)|2,{100,109,0}}, +/* 37536 */ {(12<<2)|2,{100,110,0}}, +/* 37537 */ {(12<<2)|2,{100,110,0}}, +/* 37538 */ {(12<<2)|2,{100,110,0}}, +/* 37539 */ {(12<<2)|2,{100,110,0}}, +/* 37540 */ {(12<<2)|2,{100,110,0}}, +/* 37541 */ {(12<<2)|2,{100,110,0}}, +/* 37542 */ {(12<<2)|2,{100,110,0}}, +/* 37543 */ {(12<<2)|2,{100,110,0}}, +/* 37544 */ {(12<<2)|2,{100,110,0}}, +/* 37545 */ {(12<<2)|2,{100,110,0}}, +/* 37546 */ {(12<<2)|2,{100,110,0}}, +/* 37547 */ {(12<<2)|2,{100,110,0}}, +/* 37548 */ {(12<<2)|2,{100,110,0}}, +/* 37549 */ {(12<<2)|2,{100,110,0}}, +/* 37550 */ {(12<<2)|2,{100,110,0}}, +/* 37551 */ {(12<<2)|2,{100,110,0}}, +/* 37552 */ {(12<<2)|2,{100,112,0}}, +/* 37553 */ {(12<<2)|2,{100,112,0}}, +/* 37554 */ {(12<<2)|2,{100,112,0}}, +/* 37555 */ {(12<<2)|2,{100,112,0}}, +/* 37556 */ {(12<<2)|2,{100,112,0}}, +/* 37557 */ {(12<<2)|2,{100,112,0}}, +/* 37558 */ {(12<<2)|2,{100,112,0}}, +/* 37559 */ {(12<<2)|2,{100,112,0}}, +/* 37560 */ {(12<<2)|2,{100,112,0}}, +/* 37561 */ {(12<<2)|2,{100,112,0}}, +/* 37562 */ {(12<<2)|2,{100,112,0}}, +/* 37563 */ {(12<<2)|2,{100,112,0}}, +/* 37564 */ {(12<<2)|2,{100,112,0}}, +/* 37565 */ {(12<<2)|2,{100,112,0}}, +/* 37566 */ {(12<<2)|2,{100,112,0}}, +/* 37567 */ {(12<<2)|2,{100,112,0}}, +/* 37568 */ {(12<<2)|2,{100,114,0}}, +/* 37569 */ {(12<<2)|2,{100,114,0}}, +/* 37570 */ {(12<<2)|2,{100,114,0}}, +/* 37571 */ {(12<<2)|2,{100,114,0}}, +/* 37572 */ {(12<<2)|2,{100,114,0}}, +/* 37573 */ {(12<<2)|2,{100,114,0}}, +/* 37574 */ {(12<<2)|2,{100,114,0}}, +/* 37575 */ {(12<<2)|2,{100,114,0}}, +/* 37576 */ {(12<<2)|2,{100,114,0}}, +/* 37577 */ {(12<<2)|2,{100,114,0}}, +/* 37578 */ {(12<<2)|2,{100,114,0}}, +/* 37579 */ {(12<<2)|2,{100,114,0}}, +/* 37580 */ {(12<<2)|2,{100,114,0}}, +/* 37581 */ {(12<<2)|2,{100,114,0}}, +/* 37582 */ {(12<<2)|2,{100,114,0}}, +/* 37583 */ {(12<<2)|2,{100,114,0}}, +/* 37584 */ {(12<<2)|2,{100,117,0}}, +/* 37585 */ {(12<<2)|2,{100,117,0}}, +/* 37586 */ {(12<<2)|2,{100,117,0}}, +/* 37587 */ {(12<<2)|2,{100,117,0}}, +/* 37588 */ {(12<<2)|2,{100,117,0}}, +/* 37589 */ {(12<<2)|2,{100,117,0}}, +/* 37590 */ {(12<<2)|2,{100,117,0}}, +/* 37591 */ {(12<<2)|2,{100,117,0}}, +/* 37592 */ {(12<<2)|2,{100,117,0}}, +/* 37593 */ {(12<<2)|2,{100,117,0}}, +/* 37594 */ {(12<<2)|2,{100,117,0}}, +/* 37595 */ {(12<<2)|2,{100,117,0}}, +/* 37596 */ {(12<<2)|2,{100,117,0}}, +/* 37597 */ {(12<<2)|2,{100,117,0}}, +/* 37598 */ {(12<<2)|2,{100,117,0}}, +/* 37599 */ {(12<<2)|2,{100,117,0}}, +/* 37600 */ {(13<<2)|2,{100,58,0}}, +/* 37601 */ {(13<<2)|2,{100,58,0}}, +/* 37602 */ {(13<<2)|2,{100,58,0}}, +/* 37603 */ {(13<<2)|2,{100,58,0}}, +/* 37604 */ {(13<<2)|2,{100,58,0}}, +/* 37605 */ {(13<<2)|2,{100,58,0}}, +/* 37606 */ {(13<<2)|2,{100,58,0}}, +/* 37607 */ {(13<<2)|2,{100,58,0}}, +/* 37608 */ {(13<<2)|2,{100,66,0}}, +/* 37609 */ {(13<<2)|2,{100,66,0}}, +/* 37610 */ {(13<<2)|2,{100,66,0}}, +/* 37611 */ {(13<<2)|2,{100,66,0}}, +/* 37612 */ {(13<<2)|2,{100,66,0}}, +/* 37613 */ {(13<<2)|2,{100,66,0}}, +/* 37614 */ {(13<<2)|2,{100,66,0}}, +/* 37615 */ {(13<<2)|2,{100,66,0}}, +/* 37616 */ {(13<<2)|2,{100,67,0}}, +/* 37617 */ {(13<<2)|2,{100,67,0}}, +/* 37618 */ {(13<<2)|2,{100,67,0}}, +/* 37619 */ {(13<<2)|2,{100,67,0}}, +/* 37620 */ {(13<<2)|2,{100,67,0}}, +/* 37621 */ {(13<<2)|2,{100,67,0}}, +/* 37622 */ {(13<<2)|2,{100,67,0}}, +/* 37623 */ {(13<<2)|2,{100,67,0}}, +/* 37624 */ {(13<<2)|2,{100,68,0}}, +/* 37625 */ {(13<<2)|2,{100,68,0}}, +/* 37626 */ {(13<<2)|2,{100,68,0}}, +/* 37627 */ {(13<<2)|2,{100,68,0}}, +/* 37628 */ {(13<<2)|2,{100,68,0}}, +/* 37629 */ {(13<<2)|2,{100,68,0}}, +/* 37630 */ {(13<<2)|2,{100,68,0}}, +/* 37631 */ {(13<<2)|2,{100,68,0}}, +/* 37632 */ {(13<<2)|2,{100,69,0}}, +/* 37633 */ {(13<<2)|2,{100,69,0}}, +/* 37634 */ {(13<<2)|2,{100,69,0}}, +/* 37635 */ {(13<<2)|2,{100,69,0}}, +/* 37636 */ {(13<<2)|2,{100,69,0}}, +/* 37637 */ {(13<<2)|2,{100,69,0}}, +/* 37638 */ {(13<<2)|2,{100,69,0}}, +/* 37639 */ {(13<<2)|2,{100,69,0}}, +/* 37640 */ {(13<<2)|2,{100,70,0}}, +/* 37641 */ {(13<<2)|2,{100,70,0}}, +/* 37642 */ {(13<<2)|2,{100,70,0}}, +/* 37643 */ {(13<<2)|2,{100,70,0}}, +/* 37644 */ {(13<<2)|2,{100,70,0}}, +/* 37645 */ {(13<<2)|2,{100,70,0}}, +/* 37646 */ {(13<<2)|2,{100,70,0}}, +/* 37647 */ {(13<<2)|2,{100,70,0}}, +/* 37648 */ {(13<<2)|2,{100,71,0}}, +/* 37649 */ {(13<<2)|2,{100,71,0}}, +/* 37650 */ {(13<<2)|2,{100,71,0}}, +/* 37651 */ {(13<<2)|2,{100,71,0}}, +/* 37652 */ {(13<<2)|2,{100,71,0}}, +/* 37653 */ {(13<<2)|2,{100,71,0}}, +/* 37654 */ {(13<<2)|2,{100,71,0}}, +/* 37655 */ {(13<<2)|2,{100,71,0}}, +/* 37656 */ {(13<<2)|2,{100,72,0}}, +/* 37657 */ {(13<<2)|2,{100,72,0}}, +/* 37658 */ {(13<<2)|2,{100,72,0}}, +/* 37659 */ {(13<<2)|2,{100,72,0}}, +/* 37660 */ {(13<<2)|2,{100,72,0}}, +/* 37661 */ {(13<<2)|2,{100,72,0}}, +/* 37662 */ {(13<<2)|2,{100,72,0}}, +/* 37663 */ {(13<<2)|2,{100,72,0}}, +/* 37664 */ {(13<<2)|2,{100,73,0}}, +/* 37665 */ {(13<<2)|2,{100,73,0}}, +/* 37666 */ {(13<<2)|2,{100,73,0}}, +/* 37667 */ {(13<<2)|2,{100,73,0}}, +/* 37668 */ {(13<<2)|2,{100,73,0}}, +/* 37669 */ {(13<<2)|2,{100,73,0}}, +/* 37670 */ {(13<<2)|2,{100,73,0}}, +/* 37671 */ {(13<<2)|2,{100,73,0}}, +/* 37672 */ {(13<<2)|2,{100,74,0}}, +/* 37673 */ {(13<<2)|2,{100,74,0}}, +/* 37674 */ {(13<<2)|2,{100,74,0}}, +/* 37675 */ {(13<<2)|2,{100,74,0}}, +/* 37676 */ {(13<<2)|2,{100,74,0}}, +/* 37677 */ {(13<<2)|2,{100,74,0}}, +/* 37678 */ {(13<<2)|2,{100,74,0}}, +/* 37679 */ {(13<<2)|2,{100,74,0}}, +/* 37680 */ {(13<<2)|2,{100,75,0}}, +/* 37681 */ {(13<<2)|2,{100,75,0}}, +/* 37682 */ {(13<<2)|2,{100,75,0}}, +/* 37683 */ {(13<<2)|2,{100,75,0}}, +/* 37684 */ {(13<<2)|2,{100,75,0}}, +/* 37685 */ {(13<<2)|2,{100,75,0}}, +/* 37686 */ {(13<<2)|2,{100,75,0}}, +/* 37687 */ {(13<<2)|2,{100,75,0}}, +/* 37688 */ {(13<<2)|2,{100,76,0}}, +/* 37689 */ {(13<<2)|2,{100,76,0}}, +/* 37690 */ {(13<<2)|2,{100,76,0}}, +/* 37691 */ {(13<<2)|2,{100,76,0}}, +/* 37692 */ {(13<<2)|2,{100,76,0}}, +/* 37693 */ {(13<<2)|2,{100,76,0}}, +/* 37694 */ {(13<<2)|2,{100,76,0}}, +/* 37695 */ {(13<<2)|2,{100,76,0}}, +/* 37696 */ {(13<<2)|2,{100,77,0}}, +/* 37697 */ {(13<<2)|2,{100,77,0}}, +/* 37698 */ {(13<<2)|2,{100,77,0}}, +/* 37699 */ {(13<<2)|2,{100,77,0}}, +/* 37700 */ {(13<<2)|2,{100,77,0}}, +/* 37701 */ {(13<<2)|2,{100,77,0}}, +/* 37702 */ {(13<<2)|2,{100,77,0}}, +/* 37703 */ {(13<<2)|2,{100,77,0}}, +/* 37704 */ {(13<<2)|2,{100,78,0}}, +/* 37705 */ {(13<<2)|2,{100,78,0}}, +/* 37706 */ {(13<<2)|2,{100,78,0}}, +/* 37707 */ {(13<<2)|2,{100,78,0}}, +/* 37708 */ {(13<<2)|2,{100,78,0}}, +/* 37709 */ {(13<<2)|2,{100,78,0}}, +/* 37710 */ {(13<<2)|2,{100,78,0}}, +/* 37711 */ {(13<<2)|2,{100,78,0}}, +/* 37712 */ {(13<<2)|2,{100,79,0}}, +/* 37713 */ {(13<<2)|2,{100,79,0}}, +/* 37714 */ {(13<<2)|2,{100,79,0}}, +/* 37715 */ {(13<<2)|2,{100,79,0}}, +/* 37716 */ {(13<<2)|2,{100,79,0}}, +/* 37717 */ {(13<<2)|2,{100,79,0}}, +/* 37718 */ {(13<<2)|2,{100,79,0}}, +/* 37719 */ {(13<<2)|2,{100,79,0}}, +/* 37720 */ {(13<<2)|2,{100,80,0}}, +/* 37721 */ {(13<<2)|2,{100,80,0}}, +/* 37722 */ {(13<<2)|2,{100,80,0}}, +/* 37723 */ {(13<<2)|2,{100,80,0}}, +/* 37724 */ {(13<<2)|2,{100,80,0}}, +/* 37725 */ {(13<<2)|2,{100,80,0}}, +/* 37726 */ {(13<<2)|2,{100,80,0}}, +/* 37727 */ {(13<<2)|2,{100,80,0}}, +/* 37728 */ {(13<<2)|2,{100,81,0}}, +/* 37729 */ {(13<<2)|2,{100,81,0}}, +/* 37730 */ {(13<<2)|2,{100,81,0}}, +/* 37731 */ {(13<<2)|2,{100,81,0}}, +/* 37732 */ {(13<<2)|2,{100,81,0}}, +/* 37733 */ {(13<<2)|2,{100,81,0}}, +/* 37734 */ {(13<<2)|2,{100,81,0}}, +/* 37735 */ {(13<<2)|2,{100,81,0}}, +/* 37736 */ {(13<<2)|2,{100,82,0}}, +/* 37737 */ {(13<<2)|2,{100,82,0}}, +/* 37738 */ {(13<<2)|2,{100,82,0}}, +/* 37739 */ {(13<<2)|2,{100,82,0}}, +/* 37740 */ {(13<<2)|2,{100,82,0}}, +/* 37741 */ {(13<<2)|2,{100,82,0}}, +/* 37742 */ {(13<<2)|2,{100,82,0}}, +/* 37743 */ {(13<<2)|2,{100,82,0}}, +/* 37744 */ {(13<<2)|2,{100,83,0}}, +/* 37745 */ {(13<<2)|2,{100,83,0}}, +/* 37746 */ {(13<<2)|2,{100,83,0}}, +/* 37747 */ {(13<<2)|2,{100,83,0}}, +/* 37748 */ {(13<<2)|2,{100,83,0}}, +/* 37749 */ {(13<<2)|2,{100,83,0}}, +/* 37750 */ {(13<<2)|2,{100,83,0}}, +/* 37751 */ {(13<<2)|2,{100,83,0}}, +/* 37752 */ {(13<<2)|2,{100,84,0}}, +/* 37753 */ {(13<<2)|2,{100,84,0}}, +/* 37754 */ {(13<<2)|2,{100,84,0}}, +/* 37755 */ {(13<<2)|2,{100,84,0}}, +/* 37756 */ {(13<<2)|2,{100,84,0}}, +/* 37757 */ {(13<<2)|2,{100,84,0}}, +/* 37758 */ {(13<<2)|2,{100,84,0}}, +/* 37759 */ {(13<<2)|2,{100,84,0}}, +/* 37760 */ {(13<<2)|2,{100,85,0}}, +/* 37761 */ {(13<<2)|2,{100,85,0}}, +/* 37762 */ {(13<<2)|2,{100,85,0}}, +/* 37763 */ {(13<<2)|2,{100,85,0}}, +/* 37764 */ {(13<<2)|2,{100,85,0}}, +/* 37765 */ {(13<<2)|2,{100,85,0}}, +/* 37766 */ {(13<<2)|2,{100,85,0}}, +/* 37767 */ {(13<<2)|2,{100,85,0}}, +/* 37768 */ {(13<<2)|2,{100,86,0}}, +/* 37769 */ {(13<<2)|2,{100,86,0}}, +/* 37770 */ {(13<<2)|2,{100,86,0}}, +/* 37771 */ {(13<<2)|2,{100,86,0}}, +/* 37772 */ {(13<<2)|2,{100,86,0}}, +/* 37773 */ {(13<<2)|2,{100,86,0}}, +/* 37774 */ {(13<<2)|2,{100,86,0}}, +/* 37775 */ {(13<<2)|2,{100,86,0}}, +/* 37776 */ {(13<<2)|2,{100,87,0}}, +/* 37777 */ {(13<<2)|2,{100,87,0}}, +/* 37778 */ {(13<<2)|2,{100,87,0}}, +/* 37779 */ {(13<<2)|2,{100,87,0}}, +/* 37780 */ {(13<<2)|2,{100,87,0}}, +/* 37781 */ {(13<<2)|2,{100,87,0}}, +/* 37782 */ {(13<<2)|2,{100,87,0}}, +/* 37783 */ {(13<<2)|2,{100,87,0}}, +/* 37784 */ {(13<<2)|2,{100,89,0}}, +/* 37785 */ {(13<<2)|2,{100,89,0}}, +/* 37786 */ {(13<<2)|2,{100,89,0}}, +/* 37787 */ {(13<<2)|2,{100,89,0}}, +/* 37788 */ {(13<<2)|2,{100,89,0}}, +/* 37789 */ {(13<<2)|2,{100,89,0}}, +/* 37790 */ {(13<<2)|2,{100,89,0}}, +/* 37791 */ {(13<<2)|2,{100,89,0}}, +/* 37792 */ {(13<<2)|2,{100,106,0}}, +/* 37793 */ {(13<<2)|2,{100,106,0}}, +/* 37794 */ {(13<<2)|2,{100,106,0}}, +/* 37795 */ {(13<<2)|2,{100,106,0}}, +/* 37796 */ {(13<<2)|2,{100,106,0}}, +/* 37797 */ {(13<<2)|2,{100,106,0}}, +/* 37798 */ {(13<<2)|2,{100,106,0}}, +/* 37799 */ {(13<<2)|2,{100,106,0}}, +/* 37800 */ {(13<<2)|2,{100,107,0}}, +/* 37801 */ {(13<<2)|2,{100,107,0}}, +/* 37802 */ {(13<<2)|2,{100,107,0}}, +/* 37803 */ {(13<<2)|2,{100,107,0}}, +/* 37804 */ {(13<<2)|2,{100,107,0}}, +/* 37805 */ {(13<<2)|2,{100,107,0}}, +/* 37806 */ {(13<<2)|2,{100,107,0}}, +/* 37807 */ {(13<<2)|2,{100,107,0}}, +/* 37808 */ {(13<<2)|2,{100,113,0}}, +/* 37809 */ {(13<<2)|2,{100,113,0}}, +/* 37810 */ {(13<<2)|2,{100,113,0}}, +/* 37811 */ {(13<<2)|2,{100,113,0}}, +/* 37812 */ {(13<<2)|2,{100,113,0}}, +/* 37813 */ {(13<<2)|2,{100,113,0}}, +/* 37814 */ {(13<<2)|2,{100,113,0}}, +/* 37815 */ {(13<<2)|2,{100,113,0}}, +/* 37816 */ {(13<<2)|2,{100,118,0}}, +/* 37817 */ {(13<<2)|2,{100,118,0}}, +/* 37818 */ {(13<<2)|2,{100,118,0}}, +/* 37819 */ {(13<<2)|2,{100,118,0}}, +/* 37820 */ {(13<<2)|2,{100,118,0}}, +/* 37821 */ {(13<<2)|2,{100,118,0}}, +/* 37822 */ {(13<<2)|2,{100,118,0}}, +/* 37823 */ {(13<<2)|2,{100,118,0}}, +/* 37824 */ {(13<<2)|2,{100,119,0}}, +/* 37825 */ {(13<<2)|2,{100,119,0}}, +/* 37826 */ {(13<<2)|2,{100,119,0}}, +/* 37827 */ {(13<<2)|2,{100,119,0}}, +/* 37828 */ {(13<<2)|2,{100,119,0}}, +/* 37829 */ {(13<<2)|2,{100,119,0}}, +/* 37830 */ {(13<<2)|2,{100,119,0}}, +/* 37831 */ {(13<<2)|2,{100,119,0}}, +/* 37832 */ {(13<<2)|2,{100,120,0}}, +/* 37833 */ {(13<<2)|2,{100,120,0}}, +/* 37834 */ {(13<<2)|2,{100,120,0}}, +/* 37835 */ {(13<<2)|2,{100,120,0}}, +/* 37836 */ {(13<<2)|2,{100,120,0}}, +/* 37837 */ {(13<<2)|2,{100,120,0}}, +/* 37838 */ {(13<<2)|2,{100,120,0}}, +/* 37839 */ {(13<<2)|2,{100,120,0}}, +/* 37840 */ {(13<<2)|2,{100,121,0}}, +/* 37841 */ {(13<<2)|2,{100,121,0}}, +/* 37842 */ {(13<<2)|2,{100,121,0}}, +/* 37843 */ {(13<<2)|2,{100,121,0}}, +/* 37844 */ {(13<<2)|2,{100,121,0}}, +/* 37845 */ {(13<<2)|2,{100,121,0}}, +/* 37846 */ {(13<<2)|2,{100,121,0}}, +/* 37847 */ {(13<<2)|2,{100,121,0}}, +/* 37848 */ {(13<<2)|2,{100,122,0}}, +/* 37849 */ {(13<<2)|2,{100,122,0}}, +/* 37850 */ {(13<<2)|2,{100,122,0}}, +/* 37851 */ {(13<<2)|2,{100,122,0}}, +/* 37852 */ {(13<<2)|2,{100,122,0}}, +/* 37853 */ {(13<<2)|2,{100,122,0}}, +/* 37854 */ {(13<<2)|2,{100,122,0}}, +/* 37855 */ {(13<<2)|2,{100,122,0}}, +/* 37856 */ {(14<<2)|2,{100,38,0}}, +/* 37857 */ {(14<<2)|2,{100,38,0}}, +/* 37858 */ {(14<<2)|2,{100,38,0}}, +/* 37859 */ {(14<<2)|2,{100,38,0}}, +/* 37860 */ {(14<<2)|2,{100,42,0}}, +/* 37861 */ {(14<<2)|2,{100,42,0}}, +/* 37862 */ {(14<<2)|2,{100,42,0}}, +/* 37863 */ {(14<<2)|2,{100,42,0}}, +/* 37864 */ {(14<<2)|2,{100,44,0}}, +/* 37865 */ {(14<<2)|2,{100,44,0}}, +/* 37866 */ {(14<<2)|2,{100,44,0}}, +/* 37867 */ {(14<<2)|2,{100,44,0}}, +/* 37868 */ {(14<<2)|2,{100,59,0}}, +/* 37869 */ {(14<<2)|2,{100,59,0}}, +/* 37870 */ {(14<<2)|2,{100,59,0}}, +/* 37871 */ {(14<<2)|2,{100,59,0}}, +/* 37872 */ {(14<<2)|2,{100,88,0}}, +/* 37873 */ {(14<<2)|2,{100,88,0}}, +/* 37874 */ {(14<<2)|2,{100,88,0}}, +/* 37875 */ {(14<<2)|2,{100,88,0}}, +/* 37876 */ {(14<<2)|2,{100,90,0}}, +/* 37877 */ {(14<<2)|2,{100,90,0}}, +/* 37878 */ {(14<<2)|2,{100,90,0}}, +/* 37879 */ {(14<<2)|2,{100,90,0}}, +/* 37880 */ {(16<<2)|2,{100,33,0}}, +/* 37881 */ {(16<<2)|2,{100,34,0}}, +/* 37882 */ {(16<<2)|2,{100,40,0}}, +/* 37883 */ {(16<<2)|2,{100,41,0}}, +/* 37884 */ {(16<<2)|2,{100,63,0}}, +/* 37885 */ {(6<<2)|1,{100,0,0}}, +/* 37886 */ {(6<<2)|1,{100,0,0}}, +/* 37887 */ {(6<<2)|1,{100,0,0}}, +/* 37888 */ {(16<<2)|3,{102,48,48}}, +/* 37889 */ {(16<<2)|3,{102,48,49}}, +/* 37890 */ {(16<<2)|3,{102,48,50}}, +/* 37891 */ {(16<<2)|3,{102,48,97}}, +/* 37892 */ {(16<<2)|3,{102,48,99}}, +/* 37893 */ {(16<<2)|3,{102,48,101}}, +/* 37894 */ {(16<<2)|3,{102,48,105}}, +/* 37895 */ {(16<<2)|3,{102,48,111}}, +/* 37896 */ {(16<<2)|3,{102,48,115}}, +/* 37897 */ {(16<<2)|3,{102,48,116}}, +/* 37898 */ {(11<<2)|2,{102,48,0}}, +/* 37899 */ {(11<<2)|2,{102,48,0}}, +/* 37900 */ {(11<<2)|2,{102,48,0}}, +/* 37901 */ {(11<<2)|2,{102,48,0}}, +/* 37902 */ {(11<<2)|2,{102,48,0}}, +/* 37903 */ {(11<<2)|2,{102,48,0}}, +/* 37904 */ {(11<<2)|2,{102,48,0}}, +/* 37905 */ {(11<<2)|2,{102,48,0}}, +/* 37906 */ {(11<<2)|2,{102,48,0}}, +/* 37907 */ {(11<<2)|2,{102,48,0}}, +/* 37908 */ {(11<<2)|2,{102,48,0}}, +/* 37909 */ {(11<<2)|2,{102,48,0}}, +/* 37910 */ {(11<<2)|2,{102,48,0}}, +/* 37911 */ {(11<<2)|2,{102,48,0}}, +/* 37912 */ {(11<<2)|2,{102,48,0}}, +/* 37913 */ {(11<<2)|2,{102,48,0}}, +/* 37914 */ {(11<<2)|2,{102,48,0}}, +/* 37915 */ {(11<<2)|2,{102,48,0}}, +/* 37916 */ {(11<<2)|2,{102,48,0}}, +/* 37917 */ {(11<<2)|2,{102,48,0}}, +/* 37918 */ {(11<<2)|2,{102,48,0}}, +/* 37919 */ {(11<<2)|2,{102,48,0}}, +/* 37920 */ {(16<<2)|3,{102,49,48}}, +/* 37921 */ {(16<<2)|3,{102,49,49}}, +/* 37922 */ {(16<<2)|3,{102,49,50}}, +/* 37923 */ {(16<<2)|3,{102,49,97}}, +/* 37924 */ {(16<<2)|3,{102,49,99}}, +/* 37925 */ {(16<<2)|3,{102,49,101}}, +/* 37926 */ {(16<<2)|3,{102,49,105}}, +/* 37927 */ {(16<<2)|3,{102,49,111}}, +/* 37928 */ {(16<<2)|3,{102,49,115}}, +/* 37929 */ {(16<<2)|3,{102,49,116}}, +/* 37930 */ {(11<<2)|2,{102,49,0}}, +/* 37931 */ {(11<<2)|2,{102,49,0}}, +/* 37932 */ {(11<<2)|2,{102,49,0}}, +/* 37933 */ {(11<<2)|2,{102,49,0}}, +/* 37934 */ {(11<<2)|2,{102,49,0}}, +/* 37935 */ {(11<<2)|2,{102,49,0}}, +/* 37936 */ {(11<<2)|2,{102,49,0}}, +/* 37937 */ {(11<<2)|2,{102,49,0}}, +/* 37938 */ {(11<<2)|2,{102,49,0}}, +/* 37939 */ {(11<<2)|2,{102,49,0}}, +/* 37940 */ {(11<<2)|2,{102,49,0}}, +/* 37941 */ {(11<<2)|2,{102,49,0}}, +/* 37942 */ {(11<<2)|2,{102,49,0}}, +/* 37943 */ {(11<<2)|2,{102,49,0}}, +/* 37944 */ {(11<<2)|2,{102,49,0}}, +/* 37945 */ {(11<<2)|2,{102,49,0}}, +/* 37946 */ {(11<<2)|2,{102,49,0}}, +/* 37947 */ {(11<<2)|2,{102,49,0}}, +/* 37948 */ {(11<<2)|2,{102,49,0}}, +/* 37949 */ {(11<<2)|2,{102,49,0}}, +/* 37950 */ {(11<<2)|2,{102,49,0}}, +/* 37951 */ {(11<<2)|2,{102,49,0}}, +/* 37952 */ {(16<<2)|3,{102,50,48}}, +/* 37953 */ {(16<<2)|3,{102,50,49}}, +/* 37954 */ {(16<<2)|3,{102,50,50}}, +/* 37955 */ {(16<<2)|3,{102,50,97}}, +/* 37956 */ {(16<<2)|3,{102,50,99}}, +/* 37957 */ {(16<<2)|3,{102,50,101}}, +/* 37958 */ {(16<<2)|3,{102,50,105}}, +/* 37959 */ {(16<<2)|3,{102,50,111}}, +/* 37960 */ {(16<<2)|3,{102,50,115}}, +/* 37961 */ {(16<<2)|3,{102,50,116}}, +/* 37962 */ {(11<<2)|2,{102,50,0}}, +/* 37963 */ {(11<<2)|2,{102,50,0}}, +/* 37964 */ {(11<<2)|2,{102,50,0}}, +/* 37965 */ {(11<<2)|2,{102,50,0}}, +/* 37966 */ {(11<<2)|2,{102,50,0}}, +/* 37967 */ {(11<<2)|2,{102,50,0}}, +/* 37968 */ {(11<<2)|2,{102,50,0}}, +/* 37969 */ {(11<<2)|2,{102,50,0}}, +/* 37970 */ {(11<<2)|2,{102,50,0}}, +/* 37971 */ {(11<<2)|2,{102,50,0}}, +/* 37972 */ {(11<<2)|2,{102,50,0}}, +/* 37973 */ {(11<<2)|2,{102,50,0}}, +/* 37974 */ {(11<<2)|2,{102,50,0}}, +/* 37975 */ {(11<<2)|2,{102,50,0}}, +/* 37976 */ {(11<<2)|2,{102,50,0}}, +/* 37977 */ {(11<<2)|2,{102,50,0}}, +/* 37978 */ {(11<<2)|2,{102,50,0}}, +/* 37979 */ {(11<<2)|2,{102,50,0}}, +/* 37980 */ {(11<<2)|2,{102,50,0}}, +/* 37981 */ {(11<<2)|2,{102,50,0}}, +/* 37982 */ {(11<<2)|2,{102,50,0}}, +/* 37983 */ {(11<<2)|2,{102,50,0}}, +/* 37984 */ {(16<<2)|3,{102,97,48}}, +/* 37985 */ {(16<<2)|3,{102,97,49}}, +/* 37986 */ {(16<<2)|3,{102,97,50}}, +/* 37987 */ {(16<<2)|3,{102,97,97}}, +/* 37988 */ {(16<<2)|3,{102,97,99}}, +/* 37989 */ {(16<<2)|3,{102,97,101}}, +/* 37990 */ {(16<<2)|3,{102,97,105}}, +/* 37991 */ {(16<<2)|3,{102,97,111}}, +/* 37992 */ {(16<<2)|3,{102,97,115}}, +/* 37993 */ {(16<<2)|3,{102,97,116}}, +/* 37994 */ {(11<<2)|2,{102,97,0}}, +/* 37995 */ {(11<<2)|2,{102,97,0}}, +/* 37996 */ {(11<<2)|2,{102,97,0}}, +/* 37997 */ {(11<<2)|2,{102,97,0}}, +/* 37998 */ {(11<<2)|2,{102,97,0}}, +/* 37999 */ {(11<<2)|2,{102,97,0}}, +/* 38000 */ {(11<<2)|2,{102,97,0}}, +/* 38001 */ {(11<<2)|2,{102,97,0}}, +/* 38002 */ {(11<<2)|2,{102,97,0}}, +/* 38003 */ {(11<<2)|2,{102,97,0}}, +/* 38004 */ {(11<<2)|2,{102,97,0}}, +/* 38005 */ {(11<<2)|2,{102,97,0}}, +/* 38006 */ {(11<<2)|2,{102,97,0}}, +/* 38007 */ {(11<<2)|2,{102,97,0}}, +/* 38008 */ {(11<<2)|2,{102,97,0}}, +/* 38009 */ {(11<<2)|2,{102,97,0}}, +/* 38010 */ {(11<<2)|2,{102,97,0}}, +/* 38011 */ {(11<<2)|2,{102,97,0}}, +/* 38012 */ {(11<<2)|2,{102,97,0}}, +/* 38013 */ {(11<<2)|2,{102,97,0}}, +/* 38014 */ {(11<<2)|2,{102,97,0}}, +/* 38015 */ {(11<<2)|2,{102,97,0}}, +/* 38016 */ {(16<<2)|3,{102,99,48}}, +/* 38017 */ {(16<<2)|3,{102,99,49}}, +/* 38018 */ {(16<<2)|3,{102,99,50}}, +/* 38019 */ {(16<<2)|3,{102,99,97}}, +/* 38020 */ {(16<<2)|3,{102,99,99}}, +/* 38021 */ {(16<<2)|3,{102,99,101}}, +/* 38022 */ {(16<<2)|3,{102,99,105}}, +/* 38023 */ {(16<<2)|3,{102,99,111}}, +/* 38024 */ {(16<<2)|3,{102,99,115}}, +/* 38025 */ {(16<<2)|3,{102,99,116}}, +/* 38026 */ {(11<<2)|2,{102,99,0}}, +/* 38027 */ {(11<<2)|2,{102,99,0}}, +/* 38028 */ {(11<<2)|2,{102,99,0}}, +/* 38029 */ {(11<<2)|2,{102,99,0}}, +/* 38030 */ {(11<<2)|2,{102,99,0}}, +/* 38031 */ {(11<<2)|2,{102,99,0}}, +/* 38032 */ {(11<<2)|2,{102,99,0}}, +/* 38033 */ {(11<<2)|2,{102,99,0}}, +/* 38034 */ {(11<<2)|2,{102,99,0}}, +/* 38035 */ {(11<<2)|2,{102,99,0}}, +/* 38036 */ {(11<<2)|2,{102,99,0}}, +/* 38037 */ {(11<<2)|2,{102,99,0}}, +/* 38038 */ {(11<<2)|2,{102,99,0}}, +/* 38039 */ {(11<<2)|2,{102,99,0}}, +/* 38040 */ {(11<<2)|2,{102,99,0}}, +/* 38041 */ {(11<<2)|2,{102,99,0}}, +/* 38042 */ {(11<<2)|2,{102,99,0}}, +/* 38043 */ {(11<<2)|2,{102,99,0}}, +/* 38044 */ {(11<<2)|2,{102,99,0}}, +/* 38045 */ {(11<<2)|2,{102,99,0}}, +/* 38046 */ {(11<<2)|2,{102,99,0}}, +/* 38047 */ {(11<<2)|2,{102,99,0}}, +/* 38048 */ {(16<<2)|3,{102,101,48}}, +/* 38049 */ {(16<<2)|3,{102,101,49}}, +/* 38050 */ {(16<<2)|3,{102,101,50}}, +/* 38051 */ {(16<<2)|3,{102,101,97}}, +/* 38052 */ {(16<<2)|3,{102,101,99}}, +/* 38053 */ {(16<<2)|3,{102,101,101}}, +/* 38054 */ {(16<<2)|3,{102,101,105}}, +/* 38055 */ {(16<<2)|3,{102,101,111}}, +/* 38056 */ {(16<<2)|3,{102,101,115}}, +/* 38057 */ {(16<<2)|3,{102,101,116}}, +/* 38058 */ {(11<<2)|2,{102,101,0}}, +/* 38059 */ {(11<<2)|2,{102,101,0}}, +/* 38060 */ {(11<<2)|2,{102,101,0}}, +/* 38061 */ {(11<<2)|2,{102,101,0}}, +/* 38062 */ {(11<<2)|2,{102,101,0}}, +/* 38063 */ {(11<<2)|2,{102,101,0}}, +/* 38064 */ {(11<<2)|2,{102,101,0}}, +/* 38065 */ {(11<<2)|2,{102,101,0}}, +/* 38066 */ {(11<<2)|2,{102,101,0}}, +/* 38067 */ {(11<<2)|2,{102,101,0}}, +/* 38068 */ {(11<<2)|2,{102,101,0}}, +/* 38069 */ {(11<<2)|2,{102,101,0}}, +/* 38070 */ {(11<<2)|2,{102,101,0}}, +/* 38071 */ {(11<<2)|2,{102,101,0}}, +/* 38072 */ {(11<<2)|2,{102,101,0}}, +/* 38073 */ {(11<<2)|2,{102,101,0}}, +/* 38074 */ {(11<<2)|2,{102,101,0}}, +/* 38075 */ {(11<<2)|2,{102,101,0}}, +/* 38076 */ {(11<<2)|2,{102,101,0}}, +/* 38077 */ {(11<<2)|2,{102,101,0}}, +/* 38078 */ {(11<<2)|2,{102,101,0}}, +/* 38079 */ {(11<<2)|2,{102,101,0}}, +/* 38080 */ {(16<<2)|3,{102,105,48}}, +/* 38081 */ {(16<<2)|3,{102,105,49}}, +/* 38082 */ {(16<<2)|3,{102,105,50}}, +/* 38083 */ {(16<<2)|3,{102,105,97}}, +/* 38084 */ {(16<<2)|3,{102,105,99}}, +/* 38085 */ {(16<<2)|3,{102,105,101}}, +/* 38086 */ {(16<<2)|3,{102,105,105}}, +/* 38087 */ {(16<<2)|3,{102,105,111}}, +/* 38088 */ {(16<<2)|3,{102,105,115}}, +/* 38089 */ {(16<<2)|3,{102,105,116}}, +/* 38090 */ {(11<<2)|2,{102,105,0}}, +/* 38091 */ {(11<<2)|2,{102,105,0}}, +/* 38092 */ {(11<<2)|2,{102,105,0}}, +/* 38093 */ {(11<<2)|2,{102,105,0}}, +/* 38094 */ {(11<<2)|2,{102,105,0}}, +/* 38095 */ {(11<<2)|2,{102,105,0}}, +/* 38096 */ {(11<<2)|2,{102,105,0}}, +/* 38097 */ {(11<<2)|2,{102,105,0}}, +/* 38098 */ {(11<<2)|2,{102,105,0}}, +/* 38099 */ {(11<<2)|2,{102,105,0}}, +/* 38100 */ {(11<<2)|2,{102,105,0}}, +/* 38101 */ {(11<<2)|2,{102,105,0}}, +/* 38102 */ {(11<<2)|2,{102,105,0}}, +/* 38103 */ {(11<<2)|2,{102,105,0}}, +/* 38104 */ {(11<<2)|2,{102,105,0}}, +/* 38105 */ {(11<<2)|2,{102,105,0}}, +/* 38106 */ {(11<<2)|2,{102,105,0}}, +/* 38107 */ {(11<<2)|2,{102,105,0}}, +/* 38108 */ {(11<<2)|2,{102,105,0}}, +/* 38109 */ {(11<<2)|2,{102,105,0}}, +/* 38110 */ {(11<<2)|2,{102,105,0}}, +/* 38111 */ {(11<<2)|2,{102,105,0}}, +/* 38112 */ {(16<<2)|3,{102,111,48}}, +/* 38113 */ {(16<<2)|3,{102,111,49}}, +/* 38114 */ {(16<<2)|3,{102,111,50}}, +/* 38115 */ {(16<<2)|3,{102,111,97}}, +/* 38116 */ {(16<<2)|3,{102,111,99}}, +/* 38117 */ {(16<<2)|3,{102,111,101}}, +/* 38118 */ {(16<<2)|3,{102,111,105}}, +/* 38119 */ {(16<<2)|3,{102,111,111}}, +/* 38120 */ {(16<<2)|3,{102,111,115}}, +/* 38121 */ {(16<<2)|3,{102,111,116}}, +/* 38122 */ {(11<<2)|2,{102,111,0}}, +/* 38123 */ {(11<<2)|2,{102,111,0}}, +/* 38124 */ {(11<<2)|2,{102,111,0}}, +/* 38125 */ {(11<<2)|2,{102,111,0}}, +/* 38126 */ {(11<<2)|2,{102,111,0}}, +/* 38127 */ {(11<<2)|2,{102,111,0}}, +/* 38128 */ {(11<<2)|2,{102,111,0}}, +/* 38129 */ {(11<<2)|2,{102,111,0}}, +/* 38130 */ {(11<<2)|2,{102,111,0}}, +/* 38131 */ {(11<<2)|2,{102,111,0}}, +/* 38132 */ {(11<<2)|2,{102,111,0}}, +/* 38133 */ {(11<<2)|2,{102,111,0}}, +/* 38134 */ {(11<<2)|2,{102,111,0}}, +/* 38135 */ {(11<<2)|2,{102,111,0}}, +/* 38136 */ {(11<<2)|2,{102,111,0}}, +/* 38137 */ {(11<<2)|2,{102,111,0}}, +/* 38138 */ {(11<<2)|2,{102,111,0}}, +/* 38139 */ {(11<<2)|2,{102,111,0}}, +/* 38140 */ {(11<<2)|2,{102,111,0}}, +/* 38141 */ {(11<<2)|2,{102,111,0}}, +/* 38142 */ {(11<<2)|2,{102,111,0}}, +/* 38143 */ {(11<<2)|2,{102,111,0}}, +/* 38144 */ {(16<<2)|3,{102,115,48}}, +/* 38145 */ {(16<<2)|3,{102,115,49}}, +/* 38146 */ {(16<<2)|3,{102,115,50}}, +/* 38147 */ {(16<<2)|3,{102,115,97}}, +/* 38148 */ {(16<<2)|3,{102,115,99}}, +/* 38149 */ {(16<<2)|3,{102,115,101}}, +/* 38150 */ {(16<<2)|3,{102,115,105}}, +/* 38151 */ {(16<<2)|3,{102,115,111}}, +/* 38152 */ {(16<<2)|3,{102,115,115}}, +/* 38153 */ {(16<<2)|3,{102,115,116}}, +/* 38154 */ {(11<<2)|2,{102,115,0}}, +/* 38155 */ {(11<<2)|2,{102,115,0}}, +/* 38156 */ {(11<<2)|2,{102,115,0}}, +/* 38157 */ {(11<<2)|2,{102,115,0}}, +/* 38158 */ {(11<<2)|2,{102,115,0}}, +/* 38159 */ {(11<<2)|2,{102,115,0}}, +/* 38160 */ {(11<<2)|2,{102,115,0}}, +/* 38161 */ {(11<<2)|2,{102,115,0}}, +/* 38162 */ {(11<<2)|2,{102,115,0}}, +/* 38163 */ {(11<<2)|2,{102,115,0}}, +/* 38164 */ {(11<<2)|2,{102,115,0}}, +/* 38165 */ {(11<<2)|2,{102,115,0}}, +/* 38166 */ {(11<<2)|2,{102,115,0}}, +/* 38167 */ {(11<<2)|2,{102,115,0}}, +/* 38168 */ {(11<<2)|2,{102,115,0}}, +/* 38169 */ {(11<<2)|2,{102,115,0}}, +/* 38170 */ {(11<<2)|2,{102,115,0}}, +/* 38171 */ {(11<<2)|2,{102,115,0}}, +/* 38172 */ {(11<<2)|2,{102,115,0}}, +/* 38173 */ {(11<<2)|2,{102,115,0}}, +/* 38174 */ {(11<<2)|2,{102,115,0}}, +/* 38175 */ {(11<<2)|2,{102,115,0}}, +/* 38176 */ {(16<<2)|3,{102,116,48}}, +/* 38177 */ {(16<<2)|3,{102,116,49}}, +/* 38178 */ {(16<<2)|3,{102,116,50}}, +/* 38179 */ {(16<<2)|3,{102,116,97}}, +/* 38180 */ {(16<<2)|3,{102,116,99}}, +/* 38181 */ {(16<<2)|3,{102,116,101}}, +/* 38182 */ {(16<<2)|3,{102,116,105}}, +/* 38183 */ {(16<<2)|3,{102,116,111}}, +/* 38184 */ {(16<<2)|3,{102,116,115}}, +/* 38185 */ {(16<<2)|3,{102,116,116}}, +/* 38186 */ {(11<<2)|2,{102,116,0}}, +/* 38187 */ {(11<<2)|2,{102,116,0}}, +/* 38188 */ {(11<<2)|2,{102,116,0}}, +/* 38189 */ {(11<<2)|2,{102,116,0}}, +/* 38190 */ {(11<<2)|2,{102,116,0}}, +/* 38191 */ {(11<<2)|2,{102,116,0}}, +/* 38192 */ {(11<<2)|2,{102,116,0}}, +/* 38193 */ {(11<<2)|2,{102,116,0}}, +/* 38194 */ {(11<<2)|2,{102,116,0}}, +/* 38195 */ {(11<<2)|2,{102,116,0}}, +/* 38196 */ {(11<<2)|2,{102,116,0}}, +/* 38197 */ {(11<<2)|2,{102,116,0}}, +/* 38198 */ {(11<<2)|2,{102,116,0}}, +/* 38199 */ {(11<<2)|2,{102,116,0}}, +/* 38200 */ {(11<<2)|2,{102,116,0}}, +/* 38201 */ {(11<<2)|2,{102,116,0}}, +/* 38202 */ {(11<<2)|2,{102,116,0}}, +/* 38203 */ {(11<<2)|2,{102,116,0}}, +/* 38204 */ {(11<<2)|2,{102,116,0}}, +/* 38205 */ {(11<<2)|2,{102,116,0}}, +/* 38206 */ {(11<<2)|2,{102,116,0}}, +/* 38207 */ {(11<<2)|2,{102,116,0}}, +/* 38208 */ {(12<<2)|2,{102,32,0}}, +/* 38209 */ {(12<<2)|2,{102,32,0}}, +/* 38210 */ {(12<<2)|2,{102,32,0}}, +/* 38211 */ {(12<<2)|2,{102,32,0}}, +/* 38212 */ {(12<<2)|2,{102,32,0}}, +/* 38213 */ {(12<<2)|2,{102,32,0}}, +/* 38214 */ {(12<<2)|2,{102,32,0}}, +/* 38215 */ {(12<<2)|2,{102,32,0}}, +/* 38216 */ {(12<<2)|2,{102,32,0}}, +/* 38217 */ {(12<<2)|2,{102,32,0}}, +/* 38218 */ {(12<<2)|2,{102,32,0}}, +/* 38219 */ {(12<<2)|2,{102,32,0}}, +/* 38220 */ {(12<<2)|2,{102,32,0}}, +/* 38221 */ {(12<<2)|2,{102,32,0}}, +/* 38222 */ {(12<<2)|2,{102,32,0}}, +/* 38223 */ {(12<<2)|2,{102,32,0}}, +/* 38224 */ {(12<<2)|2,{102,37,0}}, +/* 38225 */ {(12<<2)|2,{102,37,0}}, +/* 38226 */ {(12<<2)|2,{102,37,0}}, +/* 38227 */ {(12<<2)|2,{102,37,0}}, +/* 38228 */ {(12<<2)|2,{102,37,0}}, +/* 38229 */ {(12<<2)|2,{102,37,0}}, +/* 38230 */ {(12<<2)|2,{102,37,0}}, +/* 38231 */ {(12<<2)|2,{102,37,0}}, +/* 38232 */ {(12<<2)|2,{102,37,0}}, +/* 38233 */ {(12<<2)|2,{102,37,0}}, +/* 38234 */ {(12<<2)|2,{102,37,0}}, +/* 38235 */ {(12<<2)|2,{102,37,0}}, +/* 38236 */ {(12<<2)|2,{102,37,0}}, +/* 38237 */ {(12<<2)|2,{102,37,0}}, +/* 38238 */ {(12<<2)|2,{102,37,0}}, +/* 38239 */ {(12<<2)|2,{102,37,0}}, +/* 38240 */ {(12<<2)|2,{102,45,0}}, +/* 38241 */ {(12<<2)|2,{102,45,0}}, +/* 38242 */ {(12<<2)|2,{102,45,0}}, +/* 38243 */ {(12<<2)|2,{102,45,0}}, +/* 38244 */ {(12<<2)|2,{102,45,0}}, +/* 38245 */ {(12<<2)|2,{102,45,0}}, +/* 38246 */ {(12<<2)|2,{102,45,0}}, +/* 38247 */ {(12<<2)|2,{102,45,0}}, +/* 38248 */ {(12<<2)|2,{102,45,0}}, +/* 38249 */ {(12<<2)|2,{102,45,0}}, +/* 38250 */ {(12<<2)|2,{102,45,0}}, +/* 38251 */ {(12<<2)|2,{102,45,0}}, +/* 38252 */ {(12<<2)|2,{102,45,0}}, +/* 38253 */ {(12<<2)|2,{102,45,0}}, +/* 38254 */ {(12<<2)|2,{102,45,0}}, +/* 38255 */ {(12<<2)|2,{102,45,0}}, +/* 38256 */ {(12<<2)|2,{102,46,0}}, +/* 38257 */ {(12<<2)|2,{102,46,0}}, +/* 38258 */ {(12<<2)|2,{102,46,0}}, +/* 38259 */ {(12<<2)|2,{102,46,0}}, +/* 38260 */ {(12<<2)|2,{102,46,0}}, +/* 38261 */ {(12<<2)|2,{102,46,0}}, +/* 38262 */ {(12<<2)|2,{102,46,0}}, +/* 38263 */ {(12<<2)|2,{102,46,0}}, +/* 38264 */ {(12<<2)|2,{102,46,0}}, +/* 38265 */ {(12<<2)|2,{102,46,0}}, +/* 38266 */ {(12<<2)|2,{102,46,0}}, +/* 38267 */ {(12<<2)|2,{102,46,0}}, +/* 38268 */ {(12<<2)|2,{102,46,0}}, +/* 38269 */ {(12<<2)|2,{102,46,0}}, +/* 38270 */ {(12<<2)|2,{102,46,0}}, +/* 38271 */ {(12<<2)|2,{102,46,0}}, +/* 38272 */ {(12<<2)|2,{102,47,0}}, +/* 38273 */ {(12<<2)|2,{102,47,0}}, +/* 38274 */ {(12<<2)|2,{102,47,0}}, +/* 38275 */ {(12<<2)|2,{102,47,0}}, +/* 38276 */ {(12<<2)|2,{102,47,0}}, +/* 38277 */ {(12<<2)|2,{102,47,0}}, +/* 38278 */ {(12<<2)|2,{102,47,0}}, +/* 38279 */ {(12<<2)|2,{102,47,0}}, +/* 38280 */ {(12<<2)|2,{102,47,0}}, +/* 38281 */ {(12<<2)|2,{102,47,0}}, +/* 38282 */ {(12<<2)|2,{102,47,0}}, +/* 38283 */ {(12<<2)|2,{102,47,0}}, +/* 38284 */ {(12<<2)|2,{102,47,0}}, +/* 38285 */ {(12<<2)|2,{102,47,0}}, +/* 38286 */ {(12<<2)|2,{102,47,0}}, +/* 38287 */ {(12<<2)|2,{102,47,0}}, +/* 38288 */ {(12<<2)|2,{102,51,0}}, +/* 38289 */ {(12<<2)|2,{102,51,0}}, +/* 38290 */ {(12<<2)|2,{102,51,0}}, +/* 38291 */ {(12<<2)|2,{102,51,0}}, +/* 38292 */ {(12<<2)|2,{102,51,0}}, +/* 38293 */ {(12<<2)|2,{102,51,0}}, +/* 38294 */ {(12<<2)|2,{102,51,0}}, +/* 38295 */ {(12<<2)|2,{102,51,0}}, +/* 38296 */ {(12<<2)|2,{102,51,0}}, +/* 38297 */ {(12<<2)|2,{102,51,0}}, +/* 38298 */ {(12<<2)|2,{102,51,0}}, +/* 38299 */ {(12<<2)|2,{102,51,0}}, +/* 38300 */ {(12<<2)|2,{102,51,0}}, +/* 38301 */ {(12<<2)|2,{102,51,0}}, +/* 38302 */ {(12<<2)|2,{102,51,0}}, +/* 38303 */ {(12<<2)|2,{102,51,0}}, +/* 38304 */ {(12<<2)|2,{102,52,0}}, +/* 38305 */ {(12<<2)|2,{102,52,0}}, +/* 38306 */ {(12<<2)|2,{102,52,0}}, +/* 38307 */ {(12<<2)|2,{102,52,0}}, +/* 38308 */ {(12<<2)|2,{102,52,0}}, +/* 38309 */ {(12<<2)|2,{102,52,0}}, +/* 38310 */ {(12<<2)|2,{102,52,0}}, +/* 38311 */ {(12<<2)|2,{102,52,0}}, +/* 38312 */ {(12<<2)|2,{102,52,0}}, +/* 38313 */ {(12<<2)|2,{102,52,0}}, +/* 38314 */ {(12<<2)|2,{102,52,0}}, +/* 38315 */ {(12<<2)|2,{102,52,0}}, +/* 38316 */ {(12<<2)|2,{102,52,0}}, +/* 38317 */ {(12<<2)|2,{102,52,0}}, +/* 38318 */ {(12<<2)|2,{102,52,0}}, +/* 38319 */ {(12<<2)|2,{102,52,0}}, +/* 38320 */ {(12<<2)|2,{102,53,0}}, +/* 38321 */ {(12<<2)|2,{102,53,0}}, +/* 38322 */ {(12<<2)|2,{102,53,0}}, +/* 38323 */ {(12<<2)|2,{102,53,0}}, +/* 38324 */ {(12<<2)|2,{102,53,0}}, +/* 38325 */ {(12<<2)|2,{102,53,0}}, +/* 38326 */ {(12<<2)|2,{102,53,0}}, +/* 38327 */ {(12<<2)|2,{102,53,0}}, +/* 38328 */ {(12<<2)|2,{102,53,0}}, +/* 38329 */ {(12<<2)|2,{102,53,0}}, +/* 38330 */ {(12<<2)|2,{102,53,0}}, +/* 38331 */ {(12<<2)|2,{102,53,0}}, +/* 38332 */ {(12<<2)|2,{102,53,0}}, +/* 38333 */ {(12<<2)|2,{102,53,0}}, +/* 38334 */ {(12<<2)|2,{102,53,0}}, +/* 38335 */ {(12<<2)|2,{102,53,0}}, +/* 38336 */ {(12<<2)|2,{102,54,0}}, +/* 38337 */ {(12<<2)|2,{102,54,0}}, +/* 38338 */ {(12<<2)|2,{102,54,0}}, +/* 38339 */ {(12<<2)|2,{102,54,0}}, +/* 38340 */ {(12<<2)|2,{102,54,0}}, +/* 38341 */ {(12<<2)|2,{102,54,0}}, +/* 38342 */ {(12<<2)|2,{102,54,0}}, +/* 38343 */ {(12<<2)|2,{102,54,0}}, +/* 38344 */ {(12<<2)|2,{102,54,0}}, +/* 38345 */ {(12<<2)|2,{102,54,0}}, +/* 38346 */ {(12<<2)|2,{102,54,0}}, +/* 38347 */ {(12<<2)|2,{102,54,0}}, +/* 38348 */ {(12<<2)|2,{102,54,0}}, +/* 38349 */ {(12<<2)|2,{102,54,0}}, +/* 38350 */ {(12<<2)|2,{102,54,0}}, +/* 38351 */ {(12<<2)|2,{102,54,0}}, +/* 38352 */ {(12<<2)|2,{102,55,0}}, +/* 38353 */ {(12<<2)|2,{102,55,0}}, +/* 38354 */ {(12<<2)|2,{102,55,0}}, +/* 38355 */ {(12<<2)|2,{102,55,0}}, +/* 38356 */ {(12<<2)|2,{102,55,0}}, +/* 38357 */ {(12<<2)|2,{102,55,0}}, +/* 38358 */ {(12<<2)|2,{102,55,0}}, +/* 38359 */ {(12<<2)|2,{102,55,0}}, +/* 38360 */ {(12<<2)|2,{102,55,0}}, +/* 38361 */ {(12<<2)|2,{102,55,0}}, +/* 38362 */ {(12<<2)|2,{102,55,0}}, +/* 38363 */ {(12<<2)|2,{102,55,0}}, +/* 38364 */ {(12<<2)|2,{102,55,0}}, +/* 38365 */ {(12<<2)|2,{102,55,0}}, +/* 38366 */ {(12<<2)|2,{102,55,0}}, +/* 38367 */ {(12<<2)|2,{102,55,0}}, +/* 38368 */ {(12<<2)|2,{102,56,0}}, +/* 38369 */ {(12<<2)|2,{102,56,0}}, +/* 38370 */ {(12<<2)|2,{102,56,0}}, +/* 38371 */ {(12<<2)|2,{102,56,0}}, +/* 38372 */ {(12<<2)|2,{102,56,0}}, +/* 38373 */ {(12<<2)|2,{102,56,0}}, +/* 38374 */ {(12<<2)|2,{102,56,0}}, +/* 38375 */ {(12<<2)|2,{102,56,0}}, +/* 38376 */ {(12<<2)|2,{102,56,0}}, +/* 38377 */ {(12<<2)|2,{102,56,0}}, +/* 38378 */ {(12<<2)|2,{102,56,0}}, +/* 38379 */ {(12<<2)|2,{102,56,0}}, +/* 38380 */ {(12<<2)|2,{102,56,0}}, +/* 38381 */ {(12<<2)|2,{102,56,0}}, +/* 38382 */ {(12<<2)|2,{102,56,0}}, +/* 38383 */ {(12<<2)|2,{102,56,0}}, +/* 38384 */ {(12<<2)|2,{102,57,0}}, +/* 38385 */ {(12<<2)|2,{102,57,0}}, +/* 38386 */ {(12<<2)|2,{102,57,0}}, +/* 38387 */ {(12<<2)|2,{102,57,0}}, +/* 38388 */ {(12<<2)|2,{102,57,0}}, +/* 38389 */ {(12<<2)|2,{102,57,0}}, +/* 38390 */ {(12<<2)|2,{102,57,0}}, +/* 38391 */ {(12<<2)|2,{102,57,0}}, +/* 38392 */ {(12<<2)|2,{102,57,0}}, +/* 38393 */ {(12<<2)|2,{102,57,0}}, +/* 38394 */ {(12<<2)|2,{102,57,0}}, +/* 38395 */ {(12<<2)|2,{102,57,0}}, +/* 38396 */ {(12<<2)|2,{102,57,0}}, +/* 38397 */ {(12<<2)|2,{102,57,0}}, +/* 38398 */ {(12<<2)|2,{102,57,0}}, +/* 38399 */ {(12<<2)|2,{102,57,0}}, +/* 38400 */ {(12<<2)|2,{102,61,0}}, +/* 38401 */ {(12<<2)|2,{102,61,0}}, +/* 38402 */ {(12<<2)|2,{102,61,0}}, +/* 38403 */ {(12<<2)|2,{102,61,0}}, +/* 38404 */ {(12<<2)|2,{102,61,0}}, +/* 38405 */ {(12<<2)|2,{102,61,0}}, +/* 38406 */ {(12<<2)|2,{102,61,0}}, +/* 38407 */ {(12<<2)|2,{102,61,0}}, +/* 38408 */ {(12<<2)|2,{102,61,0}}, +/* 38409 */ {(12<<2)|2,{102,61,0}}, +/* 38410 */ {(12<<2)|2,{102,61,0}}, +/* 38411 */ {(12<<2)|2,{102,61,0}}, +/* 38412 */ {(12<<2)|2,{102,61,0}}, +/* 38413 */ {(12<<2)|2,{102,61,0}}, +/* 38414 */ {(12<<2)|2,{102,61,0}}, +/* 38415 */ {(12<<2)|2,{102,61,0}}, +/* 38416 */ {(12<<2)|2,{102,65,0}}, +/* 38417 */ {(12<<2)|2,{102,65,0}}, +/* 38418 */ {(12<<2)|2,{102,65,0}}, +/* 38419 */ {(12<<2)|2,{102,65,0}}, +/* 38420 */ {(12<<2)|2,{102,65,0}}, +/* 38421 */ {(12<<2)|2,{102,65,0}}, +/* 38422 */ {(12<<2)|2,{102,65,0}}, +/* 38423 */ {(12<<2)|2,{102,65,0}}, +/* 38424 */ {(12<<2)|2,{102,65,0}}, +/* 38425 */ {(12<<2)|2,{102,65,0}}, +/* 38426 */ {(12<<2)|2,{102,65,0}}, +/* 38427 */ {(12<<2)|2,{102,65,0}}, +/* 38428 */ {(12<<2)|2,{102,65,0}}, +/* 38429 */ {(12<<2)|2,{102,65,0}}, +/* 38430 */ {(12<<2)|2,{102,65,0}}, +/* 38431 */ {(12<<2)|2,{102,65,0}}, +/* 38432 */ {(12<<2)|2,{102,95,0}}, +/* 38433 */ {(12<<2)|2,{102,95,0}}, +/* 38434 */ {(12<<2)|2,{102,95,0}}, +/* 38435 */ {(12<<2)|2,{102,95,0}}, +/* 38436 */ {(12<<2)|2,{102,95,0}}, +/* 38437 */ {(12<<2)|2,{102,95,0}}, +/* 38438 */ {(12<<2)|2,{102,95,0}}, +/* 38439 */ {(12<<2)|2,{102,95,0}}, +/* 38440 */ {(12<<2)|2,{102,95,0}}, +/* 38441 */ {(12<<2)|2,{102,95,0}}, +/* 38442 */ {(12<<2)|2,{102,95,0}}, +/* 38443 */ {(12<<2)|2,{102,95,0}}, +/* 38444 */ {(12<<2)|2,{102,95,0}}, +/* 38445 */ {(12<<2)|2,{102,95,0}}, +/* 38446 */ {(12<<2)|2,{102,95,0}}, +/* 38447 */ {(12<<2)|2,{102,95,0}}, +/* 38448 */ {(12<<2)|2,{102,98,0}}, +/* 38449 */ {(12<<2)|2,{102,98,0}}, +/* 38450 */ {(12<<2)|2,{102,98,0}}, +/* 38451 */ {(12<<2)|2,{102,98,0}}, +/* 38452 */ {(12<<2)|2,{102,98,0}}, +/* 38453 */ {(12<<2)|2,{102,98,0}}, +/* 38454 */ {(12<<2)|2,{102,98,0}}, +/* 38455 */ {(12<<2)|2,{102,98,0}}, +/* 38456 */ {(12<<2)|2,{102,98,0}}, +/* 38457 */ {(12<<2)|2,{102,98,0}}, +/* 38458 */ {(12<<2)|2,{102,98,0}}, +/* 38459 */ {(12<<2)|2,{102,98,0}}, +/* 38460 */ {(12<<2)|2,{102,98,0}}, +/* 38461 */ {(12<<2)|2,{102,98,0}}, +/* 38462 */ {(12<<2)|2,{102,98,0}}, +/* 38463 */ {(12<<2)|2,{102,98,0}}, +/* 38464 */ {(12<<2)|2,{102,100,0}}, +/* 38465 */ {(12<<2)|2,{102,100,0}}, +/* 38466 */ {(12<<2)|2,{102,100,0}}, +/* 38467 */ {(12<<2)|2,{102,100,0}}, +/* 38468 */ {(12<<2)|2,{102,100,0}}, +/* 38469 */ {(12<<2)|2,{102,100,0}}, +/* 38470 */ {(12<<2)|2,{102,100,0}}, +/* 38471 */ {(12<<2)|2,{102,100,0}}, +/* 38472 */ {(12<<2)|2,{102,100,0}}, +/* 38473 */ {(12<<2)|2,{102,100,0}}, +/* 38474 */ {(12<<2)|2,{102,100,0}}, +/* 38475 */ {(12<<2)|2,{102,100,0}}, +/* 38476 */ {(12<<2)|2,{102,100,0}}, +/* 38477 */ {(12<<2)|2,{102,100,0}}, +/* 38478 */ {(12<<2)|2,{102,100,0}}, +/* 38479 */ {(12<<2)|2,{102,100,0}}, +/* 38480 */ {(12<<2)|2,{102,102,0}}, +/* 38481 */ {(12<<2)|2,{102,102,0}}, +/* 38482 */ {(12<<2)|2,{102,102,0}}, +/* 38483 */ {(12<<2)|2,{102,102,0}}, +/* 38484 */ {(12<<2)|2,{102,102,0}}, +/* 38485 */ {(12<<2)|2,{102,102,0}}, +/* 38486 */ {(12<<2)|2,{102,102,0}}, +/* 38487 */ {(12<<2)|2,{102,102,0}}, +/* 38488 */ {(12<<2)|2,{102,102,0}}, +/* 38489 */ {(12<<2)|2,{102,102,0}}, +/* 38490 */ {(12<<2)|2,{102,102,0}}, +/* 38491 */ {(12<<2)|2,{102,102,0}}, +/* 38492 */ {(12<<2)|2,{102,102,0}}, +/* 38493 */ {(12<<2)|2,{102,102,0}}, +/* 38494 */ {(12<<2)|2,{102,102,0}}, +/* 38495 */ {(12<<2)|2,{102,102,0}}, +/* 38496 */ {(12<<2)|2,{102,103,0}}, +/* 38497 */ {(12<<2)|2,{102,103,0}}, +/* 38498 */ {(12<<2)|2,{102,103,0}}, +/* 38499 */ {(12<<2)|2,{102,103,0}}, +/* 38500 */ {(12<<2)|2,{102,103,0}}, +/* 38501 */ {(12<<2)|2,{102,103,0}}, +/* 38502 */ {(12<<2)|2,{102,103,0}}, +/* 38503 */ {(12<<2)|2,{102,103,0}}, +/* 38504 */ {(12<<2)|2,{102,103,0}}, +/* 38505 */ {(12<<2)|2,{102,103,0}}, +/* 38506 */ {(12<<2)|2,{102,103,0}}, +/* 38507 */ {(12<<2)|2,{102,103,0}}, +/* 38508 */ {(12<<2)|2,{102,103,0}}, +/* 38509 */ {(12<<2)|2,{102,103,0}}, +/* 38510 */ {(12<<2)|2,{102,103,0}}, +/* 38511 */ {(12<<2)|2,{102,103,0}}, +/* 38512 */ {(12<<2)|2,{102,104,0}}, +/* 38513 */ {(12<<2)|2,{102,104,0}}, +/* 38514 */ {(12<<2)|2,{102,104,0}}, +/* 38515 */ {(12<<2)|2,{102,104,0}}, +/* 38516 */ {(12<<2)|2,{102,104,0}}, +/* 38517 */ {(12<<2)|2,{102,104,0}}, +/* 38518 */ {(12<<2)|2,{102,104,0}}, +/* 38519 */ {(12<<2)|2,{102,104,0}}, +/* 38520 */ {(12<<2)|2,{102,104,0}}, +/* 38521 */ {(12<<2)|2,{102,104,0}}, +/* 38522 */ {(12<<2)|2,{102,104,0}}, +/* 38523 */ {(12<<2)|2,{102,104,0}}, +/* 38524 */ {(12<<2)|2,{102,104,0}}, +/* 38525 */ {(12<<2)|2,{102,104,0}}, +/* 38526 */ {(12<<2)|2,{102,104,0}}, +/* 38527 */ {(12<<2)|2,{102,104,0}}, +/* 38528 */ {(12<<2)|2,{102,108,0}}, +/* 38529 */ {(12<<2)|2,{102,108,0}}, +/* 38530 */ {(12<<2)|2,{102,108,0}}, +/* 38531 */ {(12<<2)|2,{102,108,0}}, +/* 38532 */ {(12<<2)|2,{102,108,0}}, +/* 38533 */ {(12<<2)|2,{102,108,0}}, +/* 38534 */ {(12<<2)|2,{102,108,0}}, +/* 38535 */ {(12<<2)|2,{102,108,0}}, +/* 38536 */ {(12<<2)|2,{102,108,0}}, +/* 38537 */ {(12<<2)|2,{102,108,0}}, +/* 38538 */ {(12<<2)|2,{102,108,0}}, +/* 38539 */ {(12<<2)|2,{102,108,0}}, +/* 38540 */ {(12<<2)|2,{102,108,0}}, +/* 38541 */ {(12<<2)|2,{102,108,0}}, +/* 38542 */ {(12<<2)|2,{102,108,0}}, +/* 38543 */ {(12<<2)|2,{102,108,0}}, +/* 38544 */ {(12<<2)|2,{102,109,0}}, +/* 38545 */ {(12<<2)|2,{102,109,0}}, +/* 38546 */ {(12<<2)|2,{102,109,0}}, +/* 38547 */ {(12<<2)|2,{102,109,0}}, +/* 38548 */ {(12<<2)|2,{102,109,0}}, +/* 38549 */ {(12<<2)|2,{102,109,0}}, +/* 38550 */ {(12<<2)|2,{102,109,0}}, +/* 38551 */ {(12<<2)|2,{102,109,0}}, +/* 38552 */ {(12<<2)|2,{102,109,0}}, +/* 38553 */ {(12<<2)|2,{102,109,0}}, +/* 38554 */ {(12<<2)|2,{102,109,0}}, +/* 38555 */ {(12<<2)|2,{102,109,0}}, +/* 38556 */ {(12<<2)|2,{102,109,0}}, +/* 38557 */ {(12<<2)|2,{102,109,0}}, +/* 38558 */ {(12<<2)|2,{102,109,0}}, +/* 38559 */ {(12<<2)|2,{102,109,0}}, +/* 38560 */ {(12<<2)|2,{102,110,0}}, +/* 38561 */ {(12<<2)|2,{102,110,0}}, +/* 38562 */ {(12<<2)|2,{102,110,0}}, +/* 38563 */ {(12<<2)|2,{102,110,0}}, +/* 38564 */ {(12<<2)|2,{102,110,0}}, +/* 38565 */ {(12<<2)|2,{102,110,0}}, +/* 38566 */ {(12<<2)|2,{102,110,0}}, +/* 38567 */ {(12<<2)|2,{102,110,0}}, +/* 38568 */ {(12<<2)|2,{102,110,0}}, +/* 38569 */ {(12<<2)|2,{102,110,0}}, +/* 38570 */ {(12<<2)|2,{102,110,0}}, +/* 38571 */ {(12<<2)|2,{102,110,0}}, +/* 38572 */ {(12<<2)|2,{102,110,0}}, +/* 38573 */ {(12<<2)|2,{102,110,0}}, +/* 38574 */ {(12<<2)|2,{102,110,0}}, +/* 38575 */ {(12<<2)|2,{102,110,0}}, +/* 38576 */ {(12<<2)|2,{102,112,0}}, +/* 38577 */ {(12<<2)|2,{102,112,0}}, +/* 38578 */ {(12<<2)|2,{102,112,0}}, +/* 38579 */ {(12<<2)|2,{102,112,0}}, +/* 38580 */ {(12<<2)|2,{102,112,0}}, +/* 38581 */ {(12<<2)|2,{102,112,0}}, +/* 38582 */ {(12<<2)|2,{102,112,0}}, +/* 38583 */ {(12<<2)|2,{102,112,0}}, +/* 38584 */ {(12<<2)|2,{102,112,0}}, +/* 38585 */ {(12<<2)|2,{102,112,0}}, +/* 38586 */ {(12<<2)|2,{102,112,0}}, +/* 38587 */ {(12<<2)|2,{102,112,0}}, +/* 38588 */ {(12<<2)|2,{102,112,0}}, +/* 38589 */ {(12<<2)|2,{102,112,0}}, +/* 38590 */ {(12<<2)|2,{102,112,0}}, +/* 38591 */ {(12<<2)|2,{102,112,0}}, +/* 38592 */ {(12<<2)|2,{102,114,0}}, +/* 38593 */ {(12<<2)|2,{102,114,0}}, +/* 38594 */ {(12<<2)|2,{102,114,0}}, +/* 38595 */ {(12<<2)|2,{102,114,0}}, +/* 38596 */ {(12<<2)|2,{102,114,0}}, +/* 38597 */ {(12<<2)|2,{102,114,0}}, +/* 38598 */ {(12<<2)|2,{102,114,0}}, +/* 38599 */ {(12<<2)|2,{102,114,0}}, +/* 38600 */ {(12<<2)|2,{102,114,0}}, +/* 38601 */ {(12<<2)|2,{102,114,0}}, +/* 38602 */ {(12<<2)|2,{102,114,0}}, +/* 38603 */ {(12<<2)|2,{102,114,0}}, +/* 38604 */ {(12<<2)|2,{102,114,0}}, +/* 38605 */ {(12<<2)|2,{102,114,0}}, +/* 38606 */ {(12<<2)|2,{102,114,0}}, +/* 38607 */ {(12<<2)|2,{102,114,0}}, +/* 38608 */ {(12<<2)|2,{102,117,0}}, +/* 38609 */ {(12<<2)|2,{102,117,0}}, +/* 38610 */ {(12<<2)|2,{102,117,0}}, +/* 38611 */ {(12<<2)|2,{102,117,0}}, +/* 38612 */ {(12<<2)|2,{102,117,0}}, +/* 38613 */ {(12<<2)|2,{102,117,0}}, +/* 38614 */ {(12<<2)|2,{102,117,0}}, +/* 38615 */ {(12<<2)|2,{102,117,0}}, +/* 38616 */ {(12<<2)|2,{102,117,0}}, +/* 38617 */ {(12<<2)|2,{102,117,0}}, +/* 38618 */ {(12<<2)|2,{102,117,0}}, +/* 38619 */ {(12<<2)|2,{102,117,0}}, +/* 38620 */ {(12<<2)|2,{102,117,0}}, +/* 38621 */ {(12<<2)|2,{102,117,0}}, +/* 38622 */ {(12<<2)|2,{102,117,0}}, +/* 38623 */ {(12<<2)|2,{102,117,0}}, +/* 38624 */ {(13<<2)|2,{102,58,0}}, +/* 38625 */ {(13<<2)|2,{102,58,0}}, +/* 38626 */ {(13<<2)|2,{102,58,0}}, +/* 38627 */ {(13<<2)|2,{102,58,0}}, +/* 38628 */ {(13<<2)|2,{102,58,0}}, +/* 38629 */ {(13<<2)|2,{102,58,0}}, +/* 38630 */ {(13<<2)|2,{102,58,0}}, +/* 38631 */ {(13<<2)|2,{102,58,0}}, +/* 38632 */ {(13<<2)|2,{102,66,0}}, +/* 38633 */ {(13<<2)|2,{102,66,0}}, +/* 38634 */ {(13<<2)|2,{102,66,0}}, +/* 38635 */ {(13<<2)|2,{102,66,0}}, +/* 38636 */ {(13<<2)|2,{102,66,0}}, +/* 38637 */ {(13<<2)|2,{102,66,0}}, +/* 38638 */ {(13<<2)|2,{102,66,0}}, +/* 38639 */ {(13<<2)|2,{102,66,0}}, +/* 38640 */ {(13<<2)|2,{102,67,0}}, +/* 38641 */ {(13<<2)|2,{102,67,0}}, +/* 38642 */ {(13<<2)|2,{102,67,0}}, +/* 38643 */ {(13<<2)|2,{102,67,0}}, +/* 38644 */ {(13<<2)|2,{102,67,0}}, +/* 38645 */ {(13<<2)|2,{102,67,0}}, +/* 38646 */ {(13<<2)|2,{102,67,0}}, +/* 38647 */ {(13<<2)|2,{102,67,0}}, +/* 38648 */ {(13<<2)|2,{102,68,0}}, +/* 38649 */ {(13<<2)|2,{102,68,0}}, +/* 38650 */ {(13<<2)|2,{102,68,0}}, +/* 38651 */ {(13<<2)|2,{102,68,0}}, +/* 38652 */ {(13<<2)|2,{102,68,0}}, +/* 38653 */ {(13<<2)|2,{102,68,0}}, +/* 38654 */ {(13<<2)|2,{102,68,0}}, +/* 38655 */ {(13<<2)|2,{102,68,0}}, +/* 38656 */ {(13<<2)|2,{102,69,0}}, +/* 38657 */ {(13<<2)|2,{102,69,0}}, +/* 38658 */ {(13<<2)|2,{102,69,0}}, +/* 38659 */ {(13<<2)|2,{102,69,0}}, +/* 38660 */ {(13<<2)|2,{102,69,0}}, +/* 38661 */ {(13<<2)|2,{102,69,0}}, +/* 38662 */ {(13<<2)|2,{102,69,0}}, +/* 38663 */ {(13<<2)|2,{102,69,0}}, +/* 38664 */ {(13<<2)|2,{102,70,0}}, +/* 38665 */ {(13<<2)|2,{102,70,0}}, +/* 38666 */ {(13<<2)|2,{102,70,0}}, +/* 38667 */ {(13<<2)|2,{102,70,0}}, +/* 38668 */ {(13<<2)|2,{102,70,0}}, +/* 38669 */ {(13<<2)|2,{102,70,0}}, +/* 38670 */ {(13<<2)|2,{102,70,0}}, +/* 38671 */ {(13<<2)|2,{102,70,0}}, +/* 38672 */ {(13<<2)|2,{102,71,0}}, +/* 38673 */ {(13<<2)|2,{102,71,0}}, +/* 38674 */ {(13<<2)|2,{102,71,0}}, +/* 38675 */ {(13<<2)|2,{102,71,0}}, +/* 38676 */ {(13<<2)|2,{102,71,0}}, +/* 38677 */ {(13<<2)|2,{102,71,0}}, +/* 38678 */ {(13<<2)|2,{102,71,0}}, +/* 38679 */ {(13<<2)|2,{102,71,0}}, +/* 38680 */ {(13<<2)|2,{102,72,0}}, +/* 38681 */ {(13<<2)|2,{102,72,0}}, +/* 38682 */ {(13<<2)|2,{102,72,0}}, +/* 38683 */ {(13<<2)|2,{102,72,0}}, +/* 38684 */ {(13<<2)|2,{102,72,0}}, +/* 38685 */ {(13<<2)|2,{102,72,0}}, +/* 38686 */ {(13<<2)|2,{102,72,0}}, +/* 38687 */ {(13<<2)|2,{102,72,0}}, +/* 38688 */ {(13<<2)|2,{102,73,0}}, +/* 38689 */ {(13<<2)|2,{102,73,0}}, +/* 38690 */ {(13<<2)|2,{102,73,0}}, +/* 38691 */ {(13<<2)|2,{102,73,0}}, +/* 38692 */ {(13<<2)|2,{102,73,0}}, +/* 38693 */ {(13<<2)|2,{102,73,0}}, +/* 38694 */ {(13<<2)|2,{102,73,0}}, +/* 38695 */ {(13<<2)|2,{102,73,0}}, +/* 38696 */ {(13<<2)|2,{102,74,0}}, +/* 38697 */ {(13<<2)|2,{102,74,0}}, +/* 38698 */ {(13<<2)|2,{102,74,0}}, +/* 38699 */ {(13<<2)|2,{102,74,0}}, +/* 38700 */ {(13<<2)|2,{102,74,0}}, +/* 38701 */ {(13<<2)|2,{102,74,0}}, +/* 38702 */ {(13<<2)|2,{102,74,0}}, +/* 38703 */ {(13<<2)|2,{102,74,0}}, +/* 38704 */ {(13<<2)|2,{102,75,0}}, +/* 38705 */ {(13<<2)|2,{102,75,0}}, +/* 38706 */ {(13<<2)|2,{102,75,0}}, +/* 38707 */ {(13<<2)|2,{102,75,0}}, +/* 38708 */ {(13<<2)|2,{102,75,0}}, +/* 38709 */ {(13<<2)|2,{102,75,0}}, +/* 38710 */ {(13<<2)|2,{102,75,0}}, +/* 38711 */ {(13<<2)|2,{102,75,0}}, +/* 38712 */ {(13<<2)|2,{102,76,0}}, +/* 38713 */ {(13<<2)|2,{102,76,0}}, +/* 38714 */ {(13<<2)|2,{102,76,0}}, +/* 38715 */ {(13<<2)|2,{102,76,0}}, +/* 38716 */ {(13<<2)|2,{102,76,0}}, +/* 38717 */ {(13<<2)|2,{102,76,0}}, +/* 38718 */ {(13<<2)|2,{102,76,0}}, +/* 38719 */ {(13<<2)|2,{102,76,0}}, +/* 38720 */ {(13<<2)|2,{102,77,0}}, +/* 38721 */ {(13<<2)|2,{102,77,0}}, +/* 38722 */ {(13<<2)|2,{102,77,0}}, +/* 38723 */ {(13<<2)|2,{102,77,0}}, +/* 38724 */ {(13<<2)|2,{102,77,0}}, +/* 38725 */ {(13<<2)|2,{102,77,0}}, +/* 38726 */ {(13<<2)|2,{102,77,0}}, +/* 38727 */ {(13<<2)|2,{102,77,0}}, +/* 38728 */ {(13<<2)|2,{102,78,0}}, +/* 38729 */ {(13<<2)|2,{102,78,0}}, +/* 38730 */ {(13<<2)|2,{102,78,0}}, +/* 38731 */ {(13<<2)|2,{102,78,0}}, +/* 38732 */ {(13<<2)|2,{102,78,0}}, +/* 38733 */ {(13<<2)|2,{102,78,0}}, +/* 38734 */ {(13<<2)|2,{102,78,0}}, +/* 38735 */ {(13<<2)|2,{102,78,0}}, +/* 38736 */ {(13<<2)|2,{102,79,0}}, +/* 38737 */ {(13<<2)|2,{102,79,0}}, +/* 38738 */ {(13<<2)|2,{102,79,0}}, +/* 38739 */ {(13<<2)|2,{102,79,0}}, +/* 38740 */ {(13<<2)|2,{102,79,0}}, +/* 38741 */ {(13<<2)|2,{102,79,0}}, +/* 38742 */ {(13<<2)|2,{102,79,0}}, +/* 38743 */ {(13<<2)|2,{102,79,0}}, +/* 38744 */ {(13<<2)|2,{102,80,0}}, +/* 38745 */ {(13<<2)|2,{102,80,0}}, +/* 38746 */ {(13<<2)|2,{102,80,0}}, +/* 38747 */ {(13<<2)|2,{102,80,0}}, +/* 38748 */ {(13<<2)|2,{102,80,0}}, +/* 38749 */ {(13<<2)|2,{102,80,0}}, +/* 38750 */ {(13<<2)|2,{102,80,0}}, +/* 38751 */ {(13<<2)|2,{102,80,0}}, +/* 38752 */ {(13<<2)|2,{102,81,0}}, +/* 38753 */ {(13<<2)|2,{102,81,0}}, +/* 38754 */ {(13<<2)|2,{102,81,0}}, +/* 38755 */ {(13<<2)|2,{102,81,0}}, +/* 38756 */ {(13<<2)|2,{102,81,0}}, +/* 38757 */ {(13<<2)|2,{102,81,0}}, +/* 38758 */ {(13<<2)|2,{102,81,0}}, +/* 38759 */ {(13<<2)|2,{102,81,0}}, +/* 38760 */ {(13<<2)|2,{102,82,0}}, +/* 38761 */ {(13<<2)|2,{102,82,0}}, +/* 38762 */ {(13<<2)|2,{102,82,0}}, +/* 38763 */ {(13<<2)|2,{102,82,0}}, +/* 38764 */ {(13<<2)|2,{102,82,0}}, +/* 38765 */ {(13<<2)|2,{102,82,0}}, +/* 38766 */ {(13<<2)|2,{102,82,0}}, +/* 38767 */ {(13<<2)|2,{102,82,0}}, +/* 38768 */ {(13<<2)|2,{102,83,0}}, +/* 38769 */ {(13<<2)|2,{102,83,0}}, +/* 38770 */ {(13<<2)|2,{102,83,0}}, +/* 38771 */ {(13<<2)|2,{102,83,0}}, +/* 38772 */ {(13<<2)|2,{102,83,0}}, +/* 38773 */ {(13<<2)|2,{102,83,0}}, +/* 38774 */ {(13<<2)|2,{102,83,0}}, +/* 38775 */ {(13<<2)|2,{102,83,0}}, +/* 38776 */ {(13<<2)|2,{102,84,0}}, +/* 38777 */ {(13<<2)|2,{102,84,0}}, +/* 38778 */ {(13<<2)|2,{102,84,0}}, +/* 38779 */ {(13<<2)|2,{102,84,0}}, +/* 38780 */ {(13<<2)|2,{102,84,0}}, +/* 38781 */ {(13<<2)|2,{102,84,0}}, +/* 38782 */ {(13<<2)|2,{102,84,0}}, +/* 38783 */ {(13<<2)|2,{102,84,0}}, +/* 38784 */ {(13<<2)|2,{102,85,0}}, +/* 38785 */ {(13<<2)|2,{102,85,0}}, +/* 38786 */ {(13<<2)|2,{102,85,0}}, +/* 38787 */ {(13<<2)|2,{102,85,0}}, +/* 38788 */ {(13<<2)|2,{102,85,0}}, +/* 38789 */ {(13<<2)|2,{102,85,0}}, +/* 38790 */ {(13<<2)|2,{102,85,0}}, +/* 38791 */ {(13<<2)|2,{102,85,0}}, +/* 38792 */ {(13<<2)|2,{102,86,0}}, +/* 38793 */ {(13<<2)|2,{102,86,0}}, +/* 38794 */ {(13<<2)|2,{102,86,0}}, +/* 38795 */ {(13<<2)|2,{102,86,0}}, +/* 38796 */ {(13<<2)|2,{102,86,0}}, +/* 38797 */ {(13<<2)|2,{102,86,0}}, +/* 38798 */ {(13<<2)|2,{102,86,0}}, +/* 38799 */ {(13<<2)|2,{102,86,0}}, +/* 38800 */ {(13<<2)|2,{102,87,0}}, +/* 38801 */ {(13<<2)|2,{102,87,0}}, +/* 38802 */ {(13<<2)|2,{102,87,0}}, +/* 38803 */ {(13<<2)|2,{102,87,0}}, +/* 38804 */ {(13<<2)|2,{102,87,0}}, +/* 38805 */ {(13<<2)|2,{102,87,0}}, +/* 38806 */ {(13<<2)|2,{102,87,0}}, +/* 38807 */ {(13<<2)|2,{102,87,0}}, +/* 38808 */ {(13<<2)|2,{102,89,0}}, +/* 38809 */ {(13<<2)|2,{102,89,0}}, +/* 38810 */ {(13<<2)|2,{102,89,0}}, +/* 38811 */ {(13<<2)|2,{102,89,0}}, +/* 38812 */ {(13<<2)|2,{102,89,0}}, +/* 38813 */ {(13<<2)|2,{102,89,0}}, +/* 38814 */ {(13<<2)|2,{102,89,0}}, +/* 38815 */ {(13<<2)|2,{102,89,0}}, +/* 38816 */ {(13<<2)|2,{102,106,0}}, +/* 38817 */ {(13<<2)|2,{102,106,0}}, +/* 38818 */ {(13<<2)|2,{102,106,0}}, +/* 38819 */ {(13<<2)|2,{102,106,0}}, +/* 38820 */ {(13<<2)|2,{102,106,0}}, +/* 38821 */ {(13<<2)|2,{102,106,0}}, +/* 38822 */ {(13<<2)|2,{102,106,0}}, +/* 38823 */ {(13<<2)|2,{102,106,0}}, +/* 38824 */ {(13<<2)|2,{102,107,0}}, +/* 38825 */ {(13<<2)|2,{102,107,0}}, +/* 38826 */ {(13<<2)|2,{102,107,0}}, +/* 38827 */ {(13<<2)|2,{102,107,0}}, +/* 38828 */ {(13<<2)|2,{102,107,0}}, +/* 38829 */ {(13<<2)|2,{102,107,0}}, +/* 38830 */ {(13<<2)|2,{102,107,0}}, +/* 38831 */ {(13<<2)|2,{102,107,0}}, +/* 38832 */ {(13<<2)|2,{102,113,0}}, +/* 38833 */ {(13<<2)|2,{102,113,0}}, +/* 38834 */ {(13<<2)|2,{102,113,0}}, +/* 38835 */ {(13<<2)|2,{102,113,0}}, +/* 38836 */ {(13<<2)|2,{102,113,0}}, +/* 38837 */ {(13<<2)|2,{102,113,0}}, +/* 38838 */ {(13<<2)|2,{102,113,0}}, +/* 38839 */ {(13<<2)|2,{102,113,0}}, +/* 38840 */ {(13<<2)|2,{102,118,0}}, +/* 38841 */ {(13<<2)|2,{102,118,0}}, +/* 38842 */ {(13<<2)|2,{102,118,0}}, +/* 38843 */ {(13<<2)|2,{102,118,0}}, +/* 38844 */ {(13<<2)|2,{102,118,0}}, +/* 38845 */ {(13<<2)|2,{102,118,0}}, +/* 38846 */ {(13<<2)|2,{102,118,0}}, +/* 38847 */ {(13<<2)|2,{102,118,0}}, +/* 38848 */ {(13<<2)|2,{102,119,0}}, +/* 38849 */ {(13<<2)|2,{102,119,0}}, +/* 38850 */ {(13<<2)|2,{102,119,0}}, +/* 38851 */ {(13<<2)|2,{102,119,0}}, +/* 38852 */ {(13<<2)|2,{102,119,0}}, +/* 38853 */ {(13<<2)|2,{102,119,0}}, +/* 38854 */ {(13<<2)|2,{102,119,0}}, +/* 38855 */ {(13<<2)|2,{102,119,0}}, +/* 38856 */ {(13<<2)|2,{102,120,0}}, +/* 38857 */ {(13<<2)|2,{102,120,0}}, +/* 38858 */ {(13<<2)|2,{102,120,0}}, +/* 38859 */ {(13<<2)|2,{102,120,0}}, +/* 38860 */ {(13<<2)|2,{102,120,0}}, +/* 38861 */ {(13<<2)|2,{102,120,0}}, +/* 38862 */ {(13<<2)|2,{102,120,0}}, +/* 38863 */ {(13<<2)|2,{102,120,0}}, +/* 38864 */ {(13<<2)|2,{102,121,0}}, +/* 38865 */ {(13<<2)|2,{102,121,0}}, +/* 38866 */ {(13<<2)|2,{102,121,0}}, +/* 38867 */ {(13<<2)|2,{102,121,0}}, +/* 38868 */ {(13<<2)|2,{102,121,0}}, +/* 38869 */ {(13<<2)|2,{102,121,0}}, +/* 38870 */ {(13<<2)|2,{102,121,0}}, +/* 38871 */ {(13<<2)|2,{102,121,0}}, +/* 38872 */ {(13<<2)|2,{102,122,0}}, +/* 38873 */ {(13<<2)|2,{102,122,0}}, +/* 38874 */ {(13<<2)|2,{102,122,0}}, +/* 38875 */ {(13<<2)|2,{102,122,0}}, +/* 38876 */ {(13<<2)|2,{102,122,0}}, +/* 38877 */ {(13<<2)|2,{102,122,0}}, +/* 38878 */ {(13<<2)|2,{102,122,0}}, +/* 38879 */ {(13<<2)|2,{102,122,0}}, +/* 38880 */ {(14<<2)|2,{102,38,0}}, +/* 38881 */ {(14<<2)|2,{102,38,0}}, +/* 38882 */ {(14<<2)|2,{102,38,0}}, +/* 38883 */ {(14<<2)|2,{102,38,0}}, +/* 38884 */ {(14<<2)|2,{102,42,0}}, +/* 38885 */ {(14<<2)|2,{102,42,0}}, +/* 38886 */ {(14<<2)|2,{102,42,0}}, +/* 38887 */ {(14<<2)|2,{102,42,0}}, +/* 38888 */ {(14<<2)|2,{102,44,0}}, +/* 38889 */ {(14<<2)|2,{102,44,0}}, +/* 38890 */ {(14<<2)|2,{102,44,0}}, +/* 38891 */ {(14<<2)|2,{102,44,0}}, +/* 38892 */ {(14<<2)|2,{102,59,0}}, +/* 38893 */ {(14<<2)|2,{102,59,0}}, +/* 38894 */ {(14<<2)|2,{102,59,0}}, +/* 38895 */ {(14<<2)|2,{102,59,0}}, +/* 38896 */ {(14<<2)|2,{102,88,0}}, +/* 38897 */ {(14<<2)|2,{102,88,0}}, +/* 38898 */ {(14<<2)|2,{102,88,0}}, +/* 38899 */ {(14<<2)|2,{102,88,0}}, +/* 38900 */ {(14<<2)|2,{102,90,0}}, +/* 38901 */ {(14<<2)|2,{102,90,0}}, +/* 38902 */ {(14<<2)|2,{102,90,0}}, +/* 38903 */ {(14<<2)|2,{102,90,0}}, +/* 38904 */ {(16<<2)|2,{102,33,0}}, +/* 38905 */ {(16<<2)|2,{102,34,0}}, +/* 38906 */ {(16<<2)|2,{102,40,0}}, +/* 38907 */ {(16<<2)|2,{102,41,0}}, +/* 38908 */ {(16<<2)|2,{102,63,0}}, +/* 38909 */ {(6<<2)|1,{102,0,0}}, +/* 38910 */ {(6<<2)|1,{102,0,0}}, +/* 38911 */ {(6<<2)|1,{102,0,0}}, +/* 38912 */ {(16<<2)|3,{103,48,48}}, +/* 38913 */ {(16<<2)|3,{103,48,49}}, +/* 38914 */ {(16<<2)|3,{103,48,50}}, +/* 38915 */ {(16<<2)|3,{103,48,97}}, +/* 38916 */ {(16<<2)|3,{103,48,99}}, +/* 38917 */ {(16<<2)|3,{103,48,101}}, +/* 38918 */ {(16<<2)|3,{103,48,105}}, +/* 38919 */ {(16<<2)|3,{103,48,111}}, +/* 38920 */ {(16<<2)|3,{103,48,115}}, +/* 38921 */ {(16<<2)|3,{103,48,116}}, +/* 38922 */ {(11<<2)|2,{103,48,0}}, +/* 38923 */ {(11<<2)|2,{103,48,0}}, +/* 38924 */ {(11<<2)|2,{103,48,0}}, +/* 38925 */ {(11<<2)|2,{103,48,0}}, +/* 38926 */ {(11<<2)|2,{103,48,0}}, +/* 38927 */ {(11<<2)|2,{103,48,0}}, +/* 38928 */ {(11<<2)|2,{103,48,0}}, +/* 38929 */ {(11<<2)|2,{103,48,0}}, +/* 38930 */ {(11<<2)|2,{103,48,0}}, +/* 38931 */ {(11<<2)|2,{103,48,0}}, +/* 38932 */ {(11<<2)|2,{103,48,0}}, +/* 38933 */ {(11<<2)|2,{103,48,0}}, +/* 38934 */ {(11<<2)|2,{103,48,0}}, +/* 38935 */ {(11<<2)|2,{103,48,0}}, +/* 38936 */ {(11<<2)|2,{103,48,0}}, +/* 38937 */ {(11<<2)|2,{103,48,0}}, +/* 38938 */ {(11<<2)|2,{103,48,0}}, +/* 38939 */ {(11<<2)|2,{103,48,0}}, +/* 38940 */ {(11<<2)|2,{103,48,0}}, +/* 38941 */ {(11<<2)|2,{103,48,0}}, +/* 38942 */ {(11<<2)|2,{103,48,0}}, +/* 38943 */ {(11<<2)|2,{103,48,0}}, +/* 38944 */ {(16<<2)|3,{103,49,48}}, +/* 38945 */ {(16<<2)|3,{103,49,49}}, +/* 38946 */ {(16<<2)|3,{103,49,50}}, +/* 38947 */ {(16<<2)|3,{103,49,97}}, +/* 38948 */ {(16<<2)|3,{103,49,99}}, +/* 38949 */ {(16<<2)|3,{103,49,101}}, +/* 38950 */ {(16<<2)|3,{103,49,105}}, +/* 38951 */ {(16<<2)|3,{103,49,111}}, +/* 38952 */ {(16<<2)|3,{103,49,115}}, +/* 38953 */ {(16<<2)|3,{103,49,116}}, +/* 38954 */ {(11<<2)|2,{103,49,0}}, +/* 38955 */ {(11<<2)|2,{103,49,0}}, +/* 38956 */ {(11<<2)|2,{103,49,0}}, +/* 38957 */ {(11<<2)|2,{103,49,0}}, +/* 38958 */ {(11<<2)|2,{103,49,0}}, +/* 38959 */ {(11<<2)|2,{103,49,0}}, +/* 38960 */ {(11<<2)|2,{103,49,0}}, +/* 38961 */ {(11<<2)|2,{103,49,0}}, +/* 38962 */ {(11<<2)|2,{103,49,0}}, +/* 38963 */ {(11<<2)|2,{103,49,0}}, +/* 38964 */ {(11<<2)|2,{103,49,0}}, +/* 38965 */ {(11<<2)|2,{103,49,0}}, +/* 38966 */ {(11<<2)|2,{103,49,0}}, +/* 38967 */ {(11<<2)|2,{103,49,0}}, +/* 38968 */ {(11<<2)|2,{103,49,0}}, +/* 38969 */ {(11<<2)|2,{103,49,0}}, +/* 38970 */ {(11<<2)|2,{103,49,0}}, +/* 38971 */ {(11<<2)|2,{103,49,0}}, +/* 38972 */ {(11<<2)|2,{103,49,0}}, +/* 38973 */ {(11<<2)|2,{103,49,0}}, +/* 38974 */ {(11<<2)|2,{103,49,0}}, +/* 38975 */ {(11<<2)|2,{103,49,0}}, +/* 38976 */ {(16<<2)|3,{103,50,48}}, +/* 38977 */ {(16<<2)|3,{103,50,49}}, +/* 38978 */ {(16<<2)|3,{103,50,50}}, +/* 38979 */ {(16<<2)|3,{103,50,97}}, +/* 38980 */ {(16<<2)|3,{103,50,99}}, +/* 38981 */ {(16<<2)|3,{103,50,101}}, +/* 38982 */ {(16<<2)|3,{103,50,105}}, +/* 38983 */ {(16<<2)|3,{103,50,111}}, +/* 38984 */ {(16<<2)|3,{103,50,115}}, +/* 38985 */ {(16<<2)|3,{103,50,116}}, +/* 38986 */ {(11<<2)|2,{103,50,0}}, +/* 38987 */ {(11<<2)|2,{103,50,0}}, +/* 38988 */ {(11<<2)|2,{103,50,0}}, +/* 38989 */ {(11<<2)|2,{103,50,0}}, +/* 38990 */ {(11<<2)|2,{103,50,0}}, +/* 38991 */ {(11<<2)|2,{103,50,0}}, +/* 38992 */ {(11<<2)|2,{103,50,0}}, +/* 38993 */ {(11<<2)|2,{103,50,0}}, +/* 38994 */ {(11<<2)|2,{103,50,0}}, +/* 38995 */ {(11<<2)|2,{103,50,0}}, +/* 38996 */ {(11<<2)|2,{103,50,0}}, +/* 38997 */ {(11<<2)|2,{103,50,0}}, +/* 38998 */ {(11<<2)|2,{103,50,0}}, +/* 38999 */ {(11<<2)|2,{103,50,0}}, +/* 39000 */ {(11<<2)|2,{103,50,0}}, +/* 39001 */ {(11<<2)|2,{103,50,0}}, +/* 39002 */ {(11<<2)|2,{103,50,0}}, +/* 39003 */ {(11<<2)|2,{103,50,0}}, +/* 39004 */ {(11<<2)|2,{103,50,0}}, +/* 39005 */ {(11<<2)|2,{103,50,0}}, +/* 39006 */ {(11<<2)|2,{103,50,0}}, +/* 39007 */ {(11<<2)|2,{103,50,0}}, +/* 39008 */ {(16<<2)|3,{103,97,48}}, +/* 39009 */ {(16<<2)|3,{103,97,49}}, +/* 39010 */ {(16<<2)|3,{103,97,50}}, +/* 39011 */ {(16<<2)|3,{103,97,97}}, +/* 39012 */ {(16<<2)|3,{103,97,99}}, +/* 39013 */ {(16<<2)|3,{103,97,101}}, +/* 39014 */ {(16<<2)|3,{103,97,105}}, +/* 39015 */ {(16<<2)|3,{103,97,111}}, +/* 39016 */ {(16<<2)|3,{103,97,115}}, +/* 39017 */ {(16<<2)|3,{103,97,116}}, +/* 39018 */ {(11<<2)|2,{103,97,0}}, +/* 39019 */ {(11<<2)|2,{103,97,0}}, +/* 39020 */ {(11<<2)|2,{103,97,0}}, +/* 39021 */ {(11<<2)|2,{103,97,0}}, +/* 39022 */ {(11<<2)|2,{103,97,0}}, +/* 39023 */ {(11<<2)|2,{103,97,0}}, +/* 39024 */ {(11<<2)|2,{103,97,0}}, +/* 39025 */ {(11<<2)|2,{103,97,0}}, +/* 39026 */ {(11<<2)|2,{103,97,0}}, +/* 39027 */ {(11<<2)|2,{103,97,0}}, +/* 39028 */ {(11<<2)|2,{103,97,0}}, +/* 39029 */ {(11<<2)|2,{103,97,0}}, +/* 39030 */ {(11<<2)|2,{103,97,0}}, +/* 39031 */ {(11<<2)|2,{103,97,0}}, +/* 39032 */ {(11<<2)|2,{103,97,0}}, +/* 39033 */ {(11<<2)|2,{103,97,0}}, +/* 39034 */ {(11<<2)|2,{103,97,0}}, +/* 39035 */ {(11<<2)|2,{103,97,0}}, +/* 39036 */ {(11<<2)|2,{103,97,0}}, +/* 39037 */ {(11<<2)|2,{103,97,0}}, +/* 39038 */ {(11<<2)|2,{103,97,0}}, +/* 39039 */ {(11<<2)|2,{103,97,0}}, +/* 39040 */ {(16<<2)|3,{103,99,48}}, +/* 39041 */ {(16<<2)|3,{103,99,49}}, +/* 39042 */ {(16<<2)|3,{103,99,50}}, +/* 39043 */ {(16<<2)|3,{103,99,97}}, +/* 39044 */ {(16<<2)|3,{103,99,99}}, +/* 39045 */ {(16<<2)|3,{103,99,101}}, +/* 39046 */ {(16<<2)|3,{103,99,105}}, +/* 39047 */ {(16<<2)|3,{103,99,111}}, +/* 39048 */ {(16<<2)|3,{103,99,115}}, +/* 39049 */ {(16<<2)|3,{103,99,116}}, +/* 39050 */ {(11<<2)|2,{103,99,0}}, +/* 39051 */ {(11<<2)|2,{103,99,0}}, +/* 39052 */ {(11<<2)|2,{103,99,0}}, +/* 39053 */ {(11<<2)|2,{103,99,0}}, +/* 39054 */ {(11<<2)|2,{103,99,0}}, +/* 39055 */ {(11<<2)|2,{103,99,0}}, +/* 39056 */ {(11<<2)|2,{103,99,0}}, +/* 39057 */ {(11<<2)|2,{103,99,0}}, +/* 39058 */ {(11<<2)|2,{103,99,0}}, +/* 39059 */ {(11<<2)|2,{103,99,0}}, +/* 39060 */ {(11<<2)|2,{103,99,0}}, +/* 39061 */ {(11<<2)|2,{103,99,0}}, +/* 39062 */ {(11<<2)|2,{103,99,0}}, +/* 39063 */ {(11<<2)|2,{103,99,0}}, +/* 39064 */ {(11<<2)|2,{103,99,0}}, +/* 39065 */ {(11<<2)|2,{103,99,0}}, +/* 39066 */ {(11<<2)|2,{103,99,0}}, +/* 39067 */ {(11<<2)|2,{103,99,0}}, +/* 39068 */ {(11<<2)|2,{103,99,0}}, +/* 39069 */ {(11<<2)|2,{103,99,0}}, +/* 39070 */ {(11<<2)|2,{103,99,0}}, +/* 39071 */ {(11<<2)|2,{103,99,0}}, +/* 39072 */ {(16<<2)|3,{103,101,48}}, +/* 39073 */ {(16<<2)|3,{103,101,49}}, +/* 39074 */ {(16<<2)|3,{103,101,50}}, +/* 39075 */ {(16<<2)|3,{103,101,97}}, +/* 39076 */ {(16<<2)|3,{103,101,99}}, +/* 39077 */ {(16<<2)|3,{103,101,101}}, +/* 39078 */ {(16<<2)|3,{103,101,105}}, +/* 39079 */ {(16<<2)|3,{103,101,111}}, +/* 39080 */ {(16<<2)|3,{103,101,115}}, +/* 39081 */ {(16<<2)|3,{103,101,116}}, +/* 39082 */ {(11<<2)|2,{103,101,0}}, +/* 39083 */ {(11<<2)|2,{103,101,0}}, +/* 39084 */ {(11<<2)|2,{103,101,0}}, +/* 39085 */ {(11<<2)|2,{103,101,0}}, +/* 39086 */ {(11<<2)|2,{103,101,0}}, +/* 39087 */ {(11<<2)|2,{103,101,0}}, +/* 39088 */ {(11<<2)|2,{103,101,0}}, +/* 39089 */ {(11<<2)|2,{103,101,0}}, +/* 39090 */ {(11<<2)|2,{103,101,0}}, +/* 39091 */ {(11<<2)|2,{103,101,0}}, +/* 39092 */ {(11<<2)|2,{103,101,0}}, +/* 39093 */ {(11<<2)|2,{103,101,0}}, +/* 39094 */ {(11<<2)|2,{103,101,0}}, +/* 39095 */ {(11<<2)|2,{103,101,0}}, +/* 39096 */ {(11<<2)|2,{103,101,0}}, +/* 39097 */ {(11<<2)|2,{103,101,0}}, +/* 39098 */ {(11<<2)|2,{103,101,0}}, +/* 39099 */ {(11<<2)|2,{103,101,0}}, +/* 39100 */ {(11<<2)|2,{103,101,0}}, +/* 39101 */ {(11<<2)|2,{103,101,0}}, +/* 39102 */ {(11<<2)|2,{103,101,0}}, +/* 39103 */ {(11<<2)|2,{103,101,0}}, +/* 39104 */ {(16<<2)|3,{103,105,48}}, +/* 39105 */ {(16<<2)|3,{103,105,49}}, +/* 39106 */ {(16<<2)|3,{103,105,50}}, +/* 39107 */ {(16<<2)|3,{103,105,97}}, +/* 39108 */ {(16<<2)|3,{103,105,99}}, +/* 39109 */ {(16<<2)|3,{103,105,101}}, +/* 39110 */ {(16<<2)|3,{103,105,105}}, +/* 39111 */ {(16<<2)|3,{103,105,111}}, +/* 39112 */ {(16<<2)|3,{103,105,115}}, +/* 39113 */ {(16<<2)|3,{103,105,116}}, +/* 39114 */ {(11<<2)|2,{103,105,0}}, +/* 39115 */ {(11<<2)|2,{103,105,0}}, +/* 39116 */ {(11<<2)|2,{103,105,0}}, +/* 39117 */ {(11<<2)|2,{103,105,0}}, +/* 39118 */ {(11<<2)|2,{103,105,0}}, +/* 39119 */ {(11<<2)|2,{103,105,0}}, +/* 39120 */ {(11<<2)|2,{103,105,0}}, +/* 39121 */ {(11<<2)|2,{103,105,0}}, +/* 39122 */ {(11<<2)|2,{103,105,0}}, +/* 39123 */ {(11<<2)|2,{103,105,0}}, +/* 39124 */ {(11<<2)|2,{103,105,0}}, +/* 39125 */ {(11<<2)|2,{103,105,0}}, +/* 39126 */ {(11<<2)|2,{103,105,0}}, +/* 39127 */ {(11<<2)|2,{103,105,0}}, +/* 39128 */ {(11<<2)|2,{103,105,0}}, +/* 39129 */ {(11<<2)|2,{103,105,0}}, +/* 39130 */ {(11<<2)|2,{103,105,0}}, +/* 39131 */ {(11<<2)|2,{103,105,0}}, +/* 39132 */ {(11<<2)|2,{103,105,0}}, +/* 39133 */ {(11<<2)|2,{103,105,0}}, +/* 39134 */ {(11<<2)|2,{103,105,0}}, +/* 39135 */ {(11<<2)|2,{103,105,0}}, +/* 39136 */ {(16<<2)|3,{103,111,48}}, +/* 39137 */ {(16<<2)|3,{103,111,49}}, +/* 39138 */ {(16<<2)|3,{103,111,50}}, +/* 39139 */ {(16<<2)|3,{103,111,97}}, +/* 39140 */ {(16<<2)|3,{103,111,99}}, +/* 39141 */ {(16<<2)|3,{103,111,101}}, +/* 39142 */ {(16<<2)|3,{103,111,105}}, +/* 39143 */ {(16<<2)|3,{103,111,111}}, +/* 39144 */ {(16<<2)|3,{103,111,115}}, +/* 39145 */ {(16<<2)|3,{103,111,116}}, +/* 39146 */ {(11<<2)|2,{103,111,0}}, +/* 39147 */ {(11<<2)|2,{103,111,0}}, +/* 39148 */ {(11<<2)|2,{103,111,0}}, +/* 39149 */ {(11<<2)|2,{103,111,0}}, +/* 39150 */ {(11<<2)|2,{103,111,0}}, +/* 39151 */ {(11<<2)|2,{103,111,0}}, +/* 39152 */ {(11<<2)|2,{103,111,0}}, +/* 39153 */ {(11<<2)|2,{103,111,0}}, +/* 39154 */ {(11<<2)|2,{103,111,0}}, +/* 39155 */ {(11<<2)|2,{103,111,0}}, +/* 39156 */ {(11<<2)|2,{103,111,0}}, +/* 39157 */ {(11<<2)|2,{103,111,0}}, +/* 39158 */ {(11<<2)|2,{103,111,0}}, +/* 39159 */ {(11<<2)|2,{103,111,0}}, +/* 39160 */ {(11<<2)|2,{103,111,0}}, +/* 39161 */ {(11<<2)|2,{103,111,0}}, +/* 39162 */ {(11<<2)|2,{103,111,0}}, +/* 39163 */ {(11<<2)|2,{103,111,0}}, +/* 39164 */ {(11<<2)|2,{103,111,0}}, +/* 39165 */ {(11<<2)|2,{103,111,0}}, +/* 39166 */ {(11<<2)|2,{103,111,0}}, +/* 39167 */ {(11<<2)|2,{103,111,0}}, +/* 39168 */ {(16<<2)|3,{103,115,48}}, +/* 39169 */ {(16<<2)|3,{103,115,49}}, +/* 39170 */ {(16<<2)|3,{103,115,50}}, +/* 39171 */ {(16<<2)|3,{103,115,97}}, +/* 39172 */ {(16<<2)|3,{103,115,99}}, +/* 39173 */ {(16<<2)|3,{103,115,101}}, +/* 39174 */ {(16<<2)|3,{103,115,105}}, +/* 39175 */ {(16<<2)|3,{103,115,111}}, +/* 39176 */ {(16<<2)|3,{103,115,115}}, +/* 39177 */ {(16<<2)|3,{103,115,116}}, +/* 39178 */ {(11<<2)|2,{103,115,0}}, +/* 39179 */ {(11<<2)|2,{103,115,0}}, +/* 39180 */ {(11<<2)|2,{103,115,0}}, +/* 39181 */ {(11<<2)|2,{103,115,0}}, +/* 39182 */ {(11<<2)|2,{103,115,0}}, +/* 39183 */ {(11<<2)|2,{103,115,0}}, +/* 39184 */ {(11<<2)|2,{103,115,0}}, +/* 39185 */ {(11<<2)|2,{103,115,0}}, +/* 39186 */ {(11<<2)|2,{103,115,0}}, +/* 39187 */ {(11<<2)|2,{103,115,0}}, +/* 39188 */ {(11<<2)|2,{103,115,0}}, +/* 39189 */ {(11<<2)|2,{103,115,0}}, +/* 39190 */ {(11<<2)|2,{103,115,0}}, +/* 39191 */ {(11<<2)|2,{103,115,0}}, +/* 39192 */ {(11<<2)|2,{103,115,0}}, +/* 39193 */ {(11<<2)|2,{103,115,0}}, +/* 39194 */ {(11<<2)|2,{103,115,0}}, +/* 39195 */ {(11<<2)|2,{103,115,0}}, +/* 39196 */ {(11<<2)|2,{103,115,0}}, +/* 39197 */ {(11<<2)|2,{103,115,0}}, +/* 39198 */ {(11<<2)|2,{103,115,0}}, +/* 39199 */ {(11<<2)|2,{103,115,0}}, +/* 39200 */ {(16<<2)|3,{103,116,48}}, +/* 39201 */ {(16<<2)|3,{103,116,49}}, +/* 39202 */ {(16<<2)|3,{103,116,50}}, +/* 39203 */ {(16<<2)|3,{103,116,97}}, +/* 39204 */ {(16<<2)|3,{103,116,99}}, +/* 39205 */ {(16<<2)|3,{103,116,101}}, +/* 39206 */ {(16<<2)|3,{103,116,105}}, +/* 39207 */ {(16<<2)|3,{103,116,111}}, +/* 39208 */ {(16<<2)|3,{103,116,115}}, +/* 39209 */ {(16<<2)|3,{103,116,116}}, +/* 39210 */ {(11<<2)|2,{103,116,0}}, +/* 39211 */ {(11<<2)|2,{103,116,0}}, +/* 39212 */ {(11<<2)|2,{103,116,0}}, +/* 39213 */ {(11<<2)|2,{103,116,0}}, +/* 39214 */ {(11<<2)|2,{103,116,0}}, +/* 39215 */ {(11<<2)|2,{103,116,0}}, +/* 39216 */ {(11<<2)|2,{103,116,0}}, +/* 39217 */ {(11<<2)|2,{103,116,0}}, +/* 39218 */ {(11<<2)|2,{103,116,0}}, +/* 39219 */ {(11<<2)|2,{103,116,0}}, +/* 39220 */ {(11<<2)|2,{103,116,0}}, +/* 39221 */ {(11<<2)|2,{103,116,0}}, +/* 39222 */ {(11<<2)|2,{103,116,0}}, +/* 39223 */ {(11<<2)|2,{103,116,0}}, +/* 39224 */ {(11<<2)|2,{103,116,0}}, +/* 39225 */ {(11<<2)|2,{103,116,0}}, +/* 39226 */ {(11<<2)|2,{103,116,0}}, +/* 39227 */ {(11<<2)|2,{103,116,0}}, +/* 39228 */ {(11<<2)|2,{103,116,0}}, +/* 39229 */ {(11<<2)|2,{103,116,0}}, +/* 39230 */ {(11<<2)|2,{103,116,0}}, +/* 39231 */ {(11<<2)|2,{103,116,0}}, +/* 39232 */ {(12<<2)|2,{103,32,0}}, +/* 39233 */ {(12<<2)|2,{103,32,0}}, +/* 39234 */ {(12<<2)|2,{103,32,0}}, +/* 39235 */ {(12<<2)|2,{103,32,0}}, +/* 39236 */ {(12<<2)|2,{103,32,0}}, +/* 39237 */ {(12<<2)|2,{103,32,0}}, +/* 39238 */ {(12<<2)|2,{103,32,0}}, +/* 39239 */ {(12<<2)|2,{103,32,0}}, +/* 39240 */ {(12<<2)|2,{103,32,0}}, +/* 39241 */ {(12<<2)|2,{103,32,0}}, +/* 39242 */ {(12<<2)|2,{103,32,0}}, +/* 39243 */ {(12<<2)|2,{103,32,0}}, +/* 39244 */ {(12<<2)|2,{103,32,0}}, +/* 39245 */ {(12<<2)|2,{103,32,0}}, +/* 39246 */ {(12<<2)|2,{103,32,0}}, +/* 39247 */ {(12<<2)|2,{103,32,0}}, +/* 39248 */ {(12<<2)|2,{103,37,0}}, +/* 39249 */ {(12<<2)|2,{103,37,0}}, +/* 39250 */ {(12<<2)|2,{103,37,0}}, +/* 39251 */ {(12<<2)|2,{103,37,0}}, +/* 39252 */ {(12<<2)|2,{103,37,0}}, +/* 39253 */ {(12<<2)|2,{103,37,0}}, +/* 39254 */ {(12<<2)|2,{103,37,0}}, +/* 39255 */ {(12<<2)|2,{103,37,0}}, +/* 39256 */ {(12<<2)|2,{103,37,0}}, +/* 39257 */ {(12<<2)|2,{103,37,0}}, +/* 39258 */ {(12<<2)|2,{103,37,0}}, +/* 39259 */ {(12<<2)|2,{103,37,0}}, +/* 39260 */ {(12<<2)|2,{103,37,0}}, +/* 39261 */ {(12<<2)|2,{103,37,0}}, +/* 39262 */ {(12<<2)|2,{103,37,0}}, +/* 39263 */ {(12<<2)|2,{103,37,0}}, +/* 39264 */ {(12<<2)|2,{103,45,0}}, +/* 39265 */ {(12<<2)|2,{103,45,0}}, +/* 39266 */ {(12<<2)|2,{103,45,0}}, +/* 39267 */ {(12<<2)|2,{103,45,0}}, +/* 39268 */ {(12<<2)|2,{103,45,0}}, +/* 39269 */ {(12<<2)|2,{103,45,0}}, +/* 39270 */ {(12<<2)|2,{103,45,0}}, +/* 39271 */ {(12<<2)|2,{103,45,0}}, +/* 39272 */ {(12<<2)|2,{103,45,0}}, +/* 39273 */ {(12<<2)|2,{103,45,0}}, +/* 39274 */ {(12<<2)|2,{103,45,0}}, +/* 39275 */ {(12<<2)|2,{103,45,0}}, +/* 39276 */ {(12<<2)|2,{103,45,0}}, +/* 39277 */ {(12<<2)|2,{103,45,0}}, +/* 39278 */ {(12<<2)|2,{103,45,0}}, +/* 39279 */ {(12<<2)|2,{103,45,0}}, +/* 39280 */ {(12<<2)|2,{103,46,0}}, +/* 39281 */ {(12<<2)|2,{103,46,0}}, +/* 39282 */ {(12<<2)|2,{103,46,0}}, +/* 39283 */ {(12<<2)|2,{103,46,0}}, +/* 39284 */ {(12<<2)|2,{103,46,0}}, +/* 39285 */ {(12<<2)|2,{103,46,0}}, +/* 39286 */ {(12<<2)|2,{103,46,0}}, +/* 39287 */ {(12<<2)|2,{103,46,0}}, +/* 39288 */ {(12<<2)|2,{103,46,0}}, +/* 39289 */ {(12<<2)|2,{103,46,0}}, +/* 39290 */ {(12<<2)|2,{103,46,0}}, +/* 39291 */ {(12<<2)|2,{103,46,0}}, +/* 39292 */ {(12<<2)|2,{103,46,0}}, +/* 39293 */ {(12<<2)|2,{103,46,0}}, +/* 39294 */ {(12<<2)|2,{103,46,0}}, +/* 39295 */ {(12<<2)|2,{103,46,0}}, +/* 39296 */ {(12<<2)|2,{103,47,0}}, +/* 39297 */ {(12<<2)|2,{103,47,0}}, +/* 39298 */ {(12<<2)|2,{103,47,0}}, +/* 39299 */ {(12<<2)|2,{103,47,0}}, +/* 39300 */ {(12<<2)|2,{103,47,0}}, +/* 39301 */ {(12<<2)|2,{103,47,0}}, +/* 39302 */ {(12<<2)|2,{103,47,0}}, +/* 39303 */ {(12<<2)|2,{103,47,0}}, +/* 39304 */ {(12<<2)|2,{103,47,0}}, +/* 39305 */ {(12<<2)|2,{103,47,0}}, +/* 39306 */ {(12<<2)|2,{103,47,0}}, +/* 39307 */ {(12<<2)|2,{103,47,0}}, +/* 39308 */ {(12<<2)|2,{103,47,0}}, +/* 39309 */ {(12<<2)|2,{103,47,0}}, +/* 39310 */ {(12<<2)|2,{103,47,0}}, +/* 39311 */ {(12<<2)|2,{103,47,0}}, +/* 39312 */ {(12<<2)|2,{103,51,0}}, +/* 39313 */ {(12<<2)|2,{103,51,0}}, +/* 39314 */ {(12<<2)|2,{103,51,0}}, +/* 39315 */ {(12<<2)|2,{103,51,0}}, +/* 39316 */ {(12<<2)|2,{103,51,0}}, +/* 39317 */ {(12<<2)|2,{103,51,0}}, +/* 39318 */ {(12<<2)|2,{103,51,0}}, +/* 39319 */ {(12<<2)|2,{103,51,0}}, +/* 39320 */ {(12<<2)|2,{103,51,0}}, +/* 39321 */ {(12<<2)|2,{103,51,0}}, +/* 39322 */ {(12<<2)|2,{103,51,0}}, +/* 39323 */ {(12<<2)|2,{103,51,0}}, +/* 39324 */ {(12<<2)|2,{103,51,0}}, +/* 39325 */ {(12<<2)|2,{103,51,0}}, +/* 39326 */ {(12<<2)|2,{103,51,0}}, +/* 39327 */ {(12<<2)|2,{103,51,0}}, +/* 39328 */ {(12<<2)|2,{103,52,0}}, +/* 39329 */ {(12<<2)|2,{103,52,0}}, +/* 39330 */ {(12<<2)|2,{103,52,0}}, +/* 39331 */ {(12<<2)|2,{103,52,0}}, +/* 39332 */ {(12<<2)|2,{103,52,0}}, +/* 39333 */ {(12<<2)|2,{103,52,0}}, +/* 39334 */ {(12<<2)|2,{103,52,0}}, +/* 39335 */ {(12<<2)|2,{103,52,0}}, +/* 39336 */ {(12<<2)|2,{103,52,0}}, +/* 39337 */ {(12<<2)|2,{103,52,0}}, +/* 39338 */ {(12<<2)|2,{103,52,0}}, +/* 39339 */ {(12<<2)|2,{103,52,0}}, +/* 39340 */ {(12<<2)|2,{103,52,0}}, +/* 39341 */ {(12<<2)|2,{103,52,0}}, +/* 39342 */ {(12<<2)|2,{103,52,0}}, +/* 39343 */ {(12<<2)|2,{103,52,0}}, +/* 39344 */ {(12<<2)|2,{103,53,0}}, +/* 39345 */ {(12<<2)|2,{103,53,0}}, +/* 39346 */ {(12<<2)|2,{103,53,0}}, +/* 39347 */ {(12<<2)|2,{103,53,0}}, +/* 39348 */ {(12<<2)|2,{103,53,0}}, +/* 39349 */ {(12<<2)|2,{103,53,0}}, +/* 39350 */ {(12<<2)|2,{103,53,0}}, +/* 39351 */ {(12<<2)|2,{103,53,0}}, +/* 39352 */ {(12<<2)|2,{103,53,0}}, +/* 39353 */ {(12<<2)|2,{103,53,0}}, +/* 39354 */ {(12<<2)|2,{103,53,0}}, +/* 39355 */ {(12<<2)|2,{103,53,0}}, +/* 39356 */ {(12<<2)|2,{103,53,0}}, +/* 39357 */ {(12<<2)|2,{103,53,0}}, +/* 39358 */ {(12<<2)|2,{103,53,0}}, +/* 39359 */ {(12<<2)|2,{103,53,0}}, +/* 39360 */ {(12<<2)|2,{103,54,0}}, +/* 39361 */ {(12<<2)|2,{103,54,0}}, +/* 39362 */ {(12<<2)|2,{103,54,0}}, +/* 39363 */ {(12<<2)|2,{103,54,0}}, +/* 39364 */ {(12<<2)|2,{103,54,0}}, +/* 39365 */ {(12<<2)|2,{103,54,0}}, +/* 39366 */ {(12<<2)|2,{103,54,0}}, +/* 39367 */ {(12<<2)|2,{103,54,0}}, +/* 39368 */ {(12<<2)|2,{103,54,0}}, +/* 39369 */ {(12<<2)|2,{103,54,0}}, +/* 39370 */ {(12<<2)|2,{103,54,0}}, +/* 39371 */ {(12<<2)|2,{103,54,0}}, +/* 39372 */ {(12<<2)|2,{103,54,0}}, +/* 39373 */ {(12<<2)|2,{103,54,0}}, +/* 39374 */ {(12<<2)|2,{103,54,0}}, +/* 39375 */ {(12<<2)|2,{103,54,0}}, +/* 39376 */ {(12<<2)|2,{103,55,0}}, +/* 39377 */ {(12<<2)|2,{103,55,0}}, +/* 39378 */ {(12<<2)|2,{103,55,0}}, +/* 39379 */ {(12<<2)|2,{103,55,0}}, +/* 39380 */ {(12<<2)|2,{103,55,0}}, +/* 39381 */ {(12<<2)|2,{103,55,0}}, +/* 39382 */ {(12<<2)|2,{103,55,0}}, +/* 39383 */ {(12<<2)|2,{103,55,0}}, +/* 39384 */ {(12<<2)|2,{103,55,0}}, +/* 39385 */ {(12<<2)|2,{103,55,0}}, +/* 39386 */ {(12<<2)|2,{103,55,0}}, +/* 39387 */ {(12<<2)|2,{103,55,0}}, +/* 39388 */ {(12<<2)|2,{103,55,0}}, +/* 39389 */ {(12<<2)|2,{103,55,0}}, +/* 39390 */ {(12<<2)|2,{103,55,0}}, +/* 39391 */ {(12<<2)|2,{103,55,0}}, +/* 39392 */ {(12<<2)|2,{103,56,0}}, +/* 39393 */ {(12<<2)|2,{103,56,0}}, +/* 39394 */ {(12<<2)|2,{103,56,0}}, +/* 39395 */ {(12<<2)|2,{103,56,0}}, +/* 39396 */ {(12<<2)|2,{103,56,0}}, +/* 39397 */ {(12<<2)|2,{103,56,0}}, +/* 39398 */ {(12<<2)|2,{103,56,0}}, +/* 39399 */ {(12<<2)|2,{103,56,0}}, +/* 39400 */ {(12<<2)|2,{103,56,0}}, +/* 39401 */ {(12<<2)|2,{103,56,0}}, +/* 39402 */ {(12<<2)|2,{103,56,0}}, +/* 39403 */ {(12<<2)|2,{103,56,0}}, +/* 39404 */ {(12<<2)|2,{103,56,0}}, +/* 39405 */ {(12<<2)|2,{103,56,0}}, +/* 39406 */ {(12<<2)|2,{103,56,0}}, +/* 39407 */ {(12<<2)|2,{103,56,0}}, +/* 39408 */ {(12<<2)|2,{103,57,0}}, +/* 39409 */ {(12<<2)|2,{103,57,0}}, +/* 39410 */ {(12<<2)|2,{103,57,0}}, +/* 39411 */ {(12<<2)|2,{103,57,0}}, +/* 39412 */ {(12<<2)|2,{103,57,0}}, +/* 39413 */ {(12<<2)|2,{103,57,0}}, +/* 39414 */ {(12<<2)|2,{103,57,0}}, +/* 39415 */ {(12<<2)|2,{103,57,0}}, +/* 39416 */ {(12<<2)|2,{103,57,0}}, +/* 39417 */ {(12<<2)|2,{103,57,0}}, +/* 39418 */ {(12<<2)|2,{103,57,0}}, +/* 39419 */ {(12<<2)|2,{103,57,0}}, +/* 39420 */ {(12<<2)|2,{103,57,0}}, +/* 39421 */ {(12<<2)|2,{103,57,0}}, +/* 39422 */ {(12<<2)|2,{103,57,0}}, +/* 39423 */ {(12<<2)|2,{103,57,0}}, +/* 39424 */ {(12<<2)|2,{103,61,0}}, +/* 39425 */ {(12<<2)|2,{103,61,0}}, +/* 39426 */ {(12<<2)|2,{103,61,0}}, +/* 39427 */ {(12<<2)|2,{103,61,0}}, +/* 39428 */ {(12<<2)|2,{103,61,0}}, +/* 39429 */ {(12<<2)|2,{103,61,0}}, +/* 39430 */ {(12<<2)|2,{103,61,0}}, +/* 39431 */ {(12<<2)|2,{103,61,0}}, +/* 39432 */ {(12<<2)|2,{103,61,0}}, +/* 39433 */ {(12<<2)|2,{103,61,0}}, +/* 39434 */ {(12<<2)|2,{103,61,0}}, +/* 39435 */ {(12<<2)|2,{103,61,0}}, +/* 39436 */ {(12<<2)|2,{103,61,0}}, +/* 39437 */ {(12<<2)|2,{103,61,0}}, +/* 39438 */ {(12<<2)|2,{103,61,0}}, +/* 39439 */ {(12<<2)|2,{103,61,0}}, +/* 39440 */ {(12<<2)|2,{103,65,0}}, +/* 39441 */ {(12<<2)|2,{103,65,0}}, +/* 39442 */ {(12<<2)|2,{103,65,0}}, +/* 39443 */ {(12<<2)|2,{103,65,0}}, +/* 39444 */ {(12<<2)|2,{103,65,0}}, +/* 39445 */ {(12<<2)|2,{103,65,0}}, +/* 39446 */ {(12<<2)|2,{103,65,0}}, +/* 39447 */ {(12<<2)|2,{103,65,0}}, +/* 39448 */ {(12<<2)|2,{103,65,0}}, +/* 39449 */ {(12<<2)|2,{103,65,0}}, +/* 39450 */ {(12<<2)|2,{103,65,0}}, +/* 39451 */ {(12<<2)|2,{103,65,0}}, +/* 39452 */ {(12<<2)|2,{103,65,0}}, +/* 39453 */ {(12<<2)|2,{103,65,0}}, +/* 39454 */ {(12<<2)|2,{103,65,0}}, +/* 39455 */ {(12<<2)|2,{103,65,0}}, +/* 39456 */ {(12<<2)|2,{103,95,0}}, +/* 39457 */ {(12<<2)|2,{103,95,0}}, +/* 39458 */ {(12<<2)|2,{103,95,0}}, +/* 39459 */ {(12<<2)|2,{103,95,0}}, +/* 39460 */ {(12<<2)|2,{103,95,0}}, +/* 39461 */ {(12<<2)|2,{103,95,0}}, +/* 39462 */ {(12<<2)|2,{103,95,0}}, +/* 39463 */ {(12<<2)|2,{103,95,0}}, +/* 39464 */ {(12<<2)|2,{103,95,0}}, +/* 39465 */ {(12<<2)|2,{103,95,0}}, +/* 39466 */ {(12<<2)|2,{103,95,0}}, +/* 39467 */ {(12<<2)|2,{103,95,0}}, +/* 39468 */ {(12<<2)|2,{103,95,0}}, +/* 39469 */ {(12<<2)|2,{103,95,0}}, +/* 39470 */ {(12<<2)|2,{103,95,0}}, +/* 39471 */ {(12<<2)|2,{103,95,0}}, +/* 39472 */ {(12<<2)|2,{103,98,0}}, +/* 39473 */ {(12<<2)|2,{103,98,0}}, +/* 39474 */ {(12<<2)|2,{103,98,0}}, +/* 39475 */ {(12<<2)|2,{103,98,0}}, +/* 39476 */ {(12<<2)|2,{103,98,0}}, +/* 39477 */ {(12<<2)|2,{103,98,0}}, +/* 39478 */ {(12<<2)|2,{103,98,0}}, +/* 39479 */ {(12<<2)|2,{103,98,0}}, +/* 39480 */ {(12<<2)|2,{103,98,0}}, +/* 39481 */ {(12<<2)|2,{103,98,0}}, +/* 39482 */ {(12<<2)|2,{103,98,0}}, +/* 39483 */ {(12<<2)|2,{103,98,0}}, +/* 39484 */ {(12<<2)|2,{103,98,0}}, +/* 39485 */ {(12<<2)|2,{103,98,0}}, +/* 39486 */ {(12<<2)|2,{103,98,0}}, +/* 39487 */ {(12<<2)|2,{103,98,0}}, +/* 39488 */ {(12<<2)|2,{103,100,0}}, +/* 39489 */ {(12<<2)|2,{103,100,0}}, +/* 39490 */ {(12<<2)|2,{103,100,0}}, +/* 39491 */ {(12<<2)|2,{103,100,0}}, +/* 39492 */ {(12<<2)|2,{103,100,0}}, +/* 39493 */ {(12<<2)|2,{103,100,0}}, +/* 39494 */ {(12<<2)|2,{103,100,0}}, +/* 39495 */ {(12<<2)|2,{103,100,0}}, +/* 39496 */ {(12<<2)|2,{103,100,0}}, +/* 39497 */ {(12<<2)|2,{103,100,0}}, +/* 39498 */ {(12<<2)|2,{103,100,0}}, +/* 39499 */ {(12<<2)|2,{103,100,0}}, +/* 39500 */ {(12<<2)|2,{103,100,0}}, +/* 39501 */ {(12<<2)|2,{103,100,0}}, +/* 39502 */ {(12<<2)|2,{103,100,0}}, +/* 39503 */ {(12<<2)|2,{103,100,0}}, +/* 39504 */ {(12<<2)|2,{103,102,0}}, +/* 39505 */ {(12<<2)|2,{103,102,0}}, +/* 39506 */ {(12<<2)|2,{103,102,0}}, +/* 39507 */ {(12<<2)|2,{103,102,0}}, +/* 39508 */ {(12<<2)|2,{103,102,0}}, +/* 39509 */ {(12<<2)|2,{103,102,0}}, +/* 39510 */ {(12<<2)|2,{103,102,0}}, +/* 39511 */ {(12<<2)|2,{103,102,0}}, +/* 39512 */ {(12<<2)|2,{103,102,0}}, +/* 39513 */ {(12<<2)|2,{103,102,0}}, +/* 39514 */ {(12<<2)|2,{103,102,0}}, +/* 39515 */ {(12<<2)|2,{103,102,0}}, +/* 39516 */ {(12<<2)|2,{103,102,0}}, +/* 39517 */ {(12<<2)|2,{103,102,0}}, +/* 39518 */ {(12<<2)|2,{103,102,0}}, +/* 39519 */ {(12<<2)|2,{103,102,0}}, +/* 39520 */ {(12<<2)|2,{103,103,0}}, +/* 39521 */ {(12<<2)|2,{103,103,0}}, +/* 39522 */ {(12<<2)|2,{103,103,0}}, +/* 39523 */ {(12<<2)|2,{103,103,0}}, +/* 39524 */ {(12<<2)|2,{103,103,0}}, +/* 39525 */ {(12<<2)|2,{103,103,0}}, +/* 39526 */ {(12<<2)|2,{103,103,0}}, +/* 39527 */ {(12<<2)|2,{103,103,0}}, +/* 39528 */ {(12<<2)|2,{103,103,0}}, +/* 39529 */ {(12<<2)|2,{103,103,0}}, +/* 39530 */ {(12<<2)|2,{103,103,0}}, +/* 39531 */ {(12<<2)|2,{103,103,0}}, +/* 39532 */ {(12<<2)|2,{103,103,0}}, +/* 39533 */ {(12<<2)|2,{103,103,0}}, +/* 39534 */ {(12<<2)|2,{103,103,0}}, +/* 39535 */ {(12<<2)|2,{103,103,0}}, +/* 39536 */ {(12<<2)|2,{103,104,0}}, +/* 39537 */ {(12<<2)|2,{103,104,0}}, +/* 39538 */ {(12<<2)|2,{103,104,0}}, +/* 39539 */ {(12<<2)|2,{103,104,0}}, +/* 39540 */ {(12<<2)|2,{103,104,0}}, +/* 39541 */ {(12<<2)|2,{103,104,0}}, +/* 39542 */ {(12<<2)|2,{103,104,0}}, +/* 39543 */ {(12<<2)|2,{103,104,0}}, +/* 39544 */ {(12<<2)|2,{103,104,0}}, +/* 39545 */ {(12<<2)|2,{103,104,0}}, +/* 39546 */ {(12<<2)|2,{103,104,0}}, +/* 39547 */ {(12<<2)|2,{103,104,0}}, +/* 39548 */ {(12<<2)|2,{103,104,0}}, +/* 39549 */ {(12<<2)|2,{103,104,0}}, +/* 39550 */ {(12<<2)|2,{103,104,0}}, +/* 39551 */ {(12<<2)|2,{103,104,0}}, +/* 39552 */ {(12<<2)|2,{103,108,0}}, +/* 39553 */ {(12<<2)|2,{103,108,0}}, +/* 39554 */ {(12<<2)|2,{103,108,0}}, +/* 39555 */ {(12<<2)|2,{103,108,0}}, +/* 39556 */ {(12<<2)|2,{103,108,0}}, +/* 39557 */ {(12<<2)|2,{103,108,0}}, +/* 39558 */ {(12<<2)|2,{103,108,0}}, +/* 39559 */ {(12<<2)|2,{103,108,0}}, +/* 39560 */ {(12<<2)|2,{103,108,0}}, +/* 39561 */ {(12<<2)|2,{103,108,0}}, +/* 39562 */ {(12<<2)|2,{103,108,0}}, +/* 39563 */ {(12<<2)|2,{103,108,0}}, +/* 39564 */ {(12<<2)|2,{103,108,0}}, +/* 39565 */ {(12<<2)|2,{103,108,0}}, +/* 39566 */ {(12<<2)|2,{103,108,0}}, +/* 39567 */ {(12<<2)|2,{103,108,0}}, +/* 39568 */ {(12<<2)|2,{103,109,0}}, +/* 39569 */ {(12<<2)|2,{103,109,0}}, +/* 39570 */ {(12<<2)|2,{103,109,0}}, +/* 39571 */ {(12<<2)|2,{103,109,0}}, +/* 39572 */ {(12<<2)|2,{103,109,0}}, +/* 39573 */ {(12<<2)|2,{103,109,0}}, +/* 39574 */ {(12<<2)|2,{103,109,0}}, +/* 39575 */ {(12<<2)|2,{103,109,0}}, +/* 39576 */ {(12<<2)|2,{103,109,0}}, +/* 39577 */ {(12<<2)|2,{103,109,0}}, +/* 39578 */ {(12<<2)|2,{103,109,0}}, +/* 39579 */ {(12<<2)|2,{103,109,0}}, +/* 39580 */ {(12<<2)|2,{103,109,0}}, +/* 39581 */ {(12<<2)|2,{103,109,0}}, +/* 39582 */ {(12<<2)|2,{103,109,0}}, +/* 39583 */ {(12<<2)|2,{103,109,0}}, +/* 39584 */ {(12<<2)|2,{103,110,0}}, +/* 39585 */ {(12<<2)|2,{103,110,0}}, +/* 39586 */ {(12<<2)|2,{103,110,0}}, +/* 39587 */ {(12<<2)|2,{103,110,0}}, +/* 39588 */ {(12<<2)|2,{103,110,0}}, +/* 39589 */ {(12<<2)|2,{103,110,0}}, +/* 39590 */ {(12<<2)|2,{103,110,0}}, +/* 39591 */ {(12<<2)|2,{103,110,0}}, +/* 39592 */ {(12<<2)|2,{103,110,0}}, +/* 39593 */ {(12<<2)|2,{103,110,0}}, +/* 39594 */ {(12<<2)|2,{103,110,0}}, +/* 39595 */ {(12<<2)|2,{103,110,0}}, +/* 39596 */ {(12<<2)|2,{103,110,0}}, +/* 39597 */ {(12<<2)|2,{103,110,0}}, +/* 39598 */ {(12<<2)|2,{103,110,0}}, +/* 39599 */ {(12<<2)|2,{103,110,0}}, +/* 39600 */ {(12<<2)|2,{103,112,0}}, +/* 39601 */ {(12<<2)|2,{103,112,0}}, +/* 39602 */ {(12<<2)|2,{103,112,0}}, +/* 39603 */ {(12<<2)|2,{103,112,0}}, +/* 39604 */ {(12<<2)|2,{103,112,0}}, +/* 39605 */ {(12<<2)|2,{103,112,0}}, +/* 39606 */ {(12<<2)|2,{103,112,0}}, +/* 39607 */ {(12<<2)|2,{103,112,0}}, +/* 39608 */ {(12<<2)|2,{103,112,0}}, +/* 39609 */ {(12<<2)|2,{103,112,0}}, +/* 39610 */ {(12<<2)|2,{103,112,0}}, +/* 39611 */ {(12<<2)|2,{103,112,0}}, +/* 39612 */ {(12<<2)|2,{103,112,0}}, +/* 39613 */ {(12<<2)|2,{103,112,0}}, +/* 39614 */ {(12<<2)|2,{103,112,0}}, +/* 39615 */ {(12<<2)|2,{103,112,0}}, +/* 39616 */ {(12<<2)|2,{103,114,0}}, +/* 39617 */ {(12<<2)|2,{103,114,0}}, +/* 39618 */ {(12<<2)|2,{103,114,0}}, +/* 39619 */ {(12<<2)|2,{103,114,0}}, +/* 39620 */ {(12<<2)|2,{103,114,0}}, +/* 39621 */ {(12<<2)|2,{103,114,0}}, +/* 39622 */ {(12<<2)|2,{103,114,0}}, +/* 39623 */ {(12<<2)|2,{103,114,0}}, +/* 39624 */ {(12<<2)|2,{103,114,0}}, +/* 39625 */ {(12<<2)|2,{103,114,0}}, +/* 39626 */ {(12<<2)|2,{103,114,0}}, +/* 39627 */ {(12<<2)|2,{103,114,0}}, +/* 39628 */ {(12<<2)|2,{103,114,0}}, +/* 39629 */ {(12<<2)|2,{103,114,0}}, +/* 39630 */ {(12<<2)|2,{103,114,0}}, +/* 39631 */ {(12<<2)|2,{103,114,0}}, +/* 39632 */ {(12<<2)|2,{103,117,0}}, +/* 39633 */ {(12<<2)|2,{103,117,0}}, +/* 39634 */ {(12<<2)|2,{103,117,0}}, +/* 39635 */ {(12<<2)|2,{103,117,0}}, +/* 39636 */ {(12<<2)|2,{103,117,0}}, +/* 39637 */ {(12<<2)|2,{103,117,0}}, +/* 39638 */ {(12<<2)|2,{103,117,0}}, +/* 39639 */ {(12<<2)|2,{103,117,0}}, +/* 39640 */ {(12<<2)|2,{103,117,0}}, +/* 39641 */ {(12<<2)|2,{103,117,0}}, +/* 39642 */ {(12<<2)|2,{103,117,0}}, +/* 39643 */ {(12<<2)|2,{103,117,0}}, +/* 39644 */ {(12<<2)|2,{103,117,0}}, +/* 39645 */ {(12<<2)|2,{103,117,0}}, +/* 39646 */ {(12<<2)|2,{103,117,0}}, +/* 39647 */ {(12<<2)|2,{103,117,0}}, +/* 39648 */ {(13<<2)|2,{103,58,0}}, +/* 39649 */ {(13<<2)|2,{103,58,0}}, +/* 39650 */ {(13<<2)|2,{103,58,0}}, +/* 39651 */ {(13<<2)|2,{103,58,0}}, +/* 39652 */ {(13<<2)|2,{103,58,0}}, +/* 39653 */ {(13<<2)|2,{103,58,0}}, +/* 39654 */ {(13<<2)|2,{103,58,0}}, +/* 39655 */ {(13<<2)|2,{103,58,0}}, +/* 39656 */ {(13<<2)|2,{103,66,0}}, +/* 39657 */ {(13<<2)|2,{103,66,0}}, +/* 39658 */ {(13<<2)|2,{103,66,0}}, +/* 39659 */ {(13<<2)|2,{103,66,0}}, +/* 39660 */ {(13<<2)|2,{103,66,0}}, +/* 39661 */ {(13<<2)|2,{103,66,0}}, +/* 39662 */ {(13<<2)|2,{103,66,0}}, +/* 39663 */ {(13<<2)|2,{103,66,0}}, +/* 39664 */ {(13<<2)|2,{103,67,0}}, +/* 39665 */ {(13<<2)|2,{103,67,0}}, +/* 39666 */ {(13<<2)|2,{103,67,0}}, +/* 39667 */ {(13<<2)|2,{103,67,0}}, +/* 39668 */ {(13<<2)|2,{103,67,0}}, +/* 39669 */ {(13<<2)|2,{103,67,0}}, +/* 39670 */ {(13<<2)|2,{103,67,0}}, +/* 39671 */ {(13<<2)|2,{103,67,0}}, +/* 39672 */ {(13<<2)|2,{103,68,0}}, +/* 39673 */ {(13<<2)|2,{103,68,0}}, +/* 39674 */ {(13<<2)|2,{103,68,0}}, +/* 39675 */ {(13<<2)|2,{103,68,0}}, +/* 39676 */ {(13<<2)|2,{103,68,0}}, +/* 39677 */ {(13<<2)|2,{103,68,0}}, +/* 39678 */ {(13<<2)|2,{103,68,0}}, +/* 39679 */ {(13<<2)|2,{103,68,0}}, +/* 39680 */ {(13<<2)|2,{103,69,0}}, +/* 39681 */ {(13<<2)|2,{103,69,0}}, +/* 39682 */ {(13<<2)|2,{103,69,0}}, +/* 39683 */ {(13<<2)|2,{103,69,0}}, +/* 39684 */ {(13<<2)|2,{103,69,0}}, +/* 39685 */ {(13<<2)|2,{103,69,0}}, +/* 39686 */ {(13<<2)|2,{103,69,0}}, +/* 39687 */ {(13<<2)|2,{103,69,0}}, +/* 39688 */ {(13<<2)|2,{103,70,0}}, +/* 39689 */ {(13<<2)|2,{103,70,0}}, +/* 39690 */ {(13<<2)|2,{103,70,0}}, +/* 39691 */ {(13<<2)|2,{103,70,0}}, +/* 39692 */ {(13<<2)|2,{103,70,0}}, +/* 39693 */ {(13<<2)|2,{103,70,0}}, +/* 39694 */ {(13<<2)|2,{103,70,0}}, +/* 39695 */ {(13<<2)|2,{103,70,0}}, +/* 39696 */ {(13<<2)|2,{103,71,0}}, +/* 39697 */ {(13<<2)|2,{103,71,0}}, +/* 39698 */ {(13<<2)|2,{103,71,0}}, +/* 39699 */ {(13<<2)|2,{103,71,0}}, +/* 39700 */ {(13<<2)|2,{103,71,0}}, +/* 39701 */ {(13<<2)|2,{103,71,0}}, +/* 39702 */ {(13<<2)|2,{103,71,0}}, +/* 39703 */ {(13<<2)|2,{103,71,0}}, +/* 39704 */ {(13<<2)|2,{103,72,0}}, +/* 39705 */ {(13<<2)|2,{103,72,0}}, +/* 39706 */ {(13<<2)|2,{103,72,0}}, +/* 39707 */ {(13<<2)|2,{103,72,0}}, +/* 39708 */ {(13<<2)|2,{103,72,0}}, +/* 39709 */ {(13<<2)|2,{103,72,0}}, +/* 39710 */ {(13<<2)|2,{103,72,0}}, +/* 39711 */ {(13<<2)|2,{103,72,0}}, +/* 39712 */ {(13<<2)|2,{103,73,0}}, +/* 39713 */ {(13<<2)|2,{103,73,0}}, +/* 39714 */ {(13<<2)|2,{103,73,0}}, +/* 39715 */ {(13<<2)|2,{103,73,0}}, +/* 39716 */ {(13<<2)|2,{103,73,0}}, +/* 39717 */ {(13<<2)|2,{103,73,0}}, +/* 39718 */ {(13<<2)|2,{103,73,0}}, +/* 39719 */ {(13<<2)|2,{103,73,0}}, +/* 39720 */ {(13<<2)|2,{103,74,0}}, +/* 39721 */ {(13<<2)|2,{103,74,0}}, +/* 39722 */ {(13<<2)|2,{103,74,0}}, +/* 39723 */ {(13<<2)|2,{103,74,0}}, +/* 39724 */ {(13<<2)|2,{103,74,0}}, +/* 39725 */ {(13<<2)|2,{103,74,0}}, +/* 39726 */ {(13<<2)|2,{103,74,0}}, +/* 39727 */ {(13<<2)|2,{103,74,0}}, +/* 39728 */ {(13<<2)|2,{103,75,0}}, +/* 39729 */ {(13<<2)|2,{103,75,0}}, +/* 39730 */ {(13<<2)|2,{103,75,0}}, +/* 39731 */ {(13<<2)|2,{103,75,0}}, +/* 39732 */ {(13<<2)|2,{103,75,0}}, +/* 39733 */ {(13<<2)|2,{103,75,0}}, +/* 39734 */ {(13<<2)|2,{103,75,0}}, +/* 39735 */ {(13<<2)|2,{103,75,0}}, +/* 39736 */ {(13<<2)|2,{103,76,0}}, +/* 39737 */ {(13<<2)|2,{103,76,0}}, +/* 39738 */ {(13<<2)|2,{103,76,0}}, +/* 39739 */ {(13<<2)|2,{103,76,0}}, +/* 39740 */ {(13<<2)|2,{103,76,0}}, +/* 39741 */ {(13<<2)|2,{103,76,0}}, +/* 39742 */ {(13<<2)|2,{103,76,0}}, +/* 39743 */ {(13<<2)|2,{103,76,0}}, +/* 39744 */ {(13<<2)|2,{103,77,0}}, +/* 39745 */ {(13<<2)|2,{103,77,0}}, +/* 39746 */ {(13<<2)|2,{103,77,0}}, +/* 39747 */ {(13<<2)|2,{103,77,0}}, +/* 39748 */ {(13<<2)|2,{103,77,0}}, +/* 39749 */ {(13<<2)|2,{103,77,0}}, +/* 39750 */ {(13<<2)|2,{103,77,0}}, +/* 39751 */ {(13<<2)|2,{103,77,0}}, +/* 39752 */ {(13<<2)|2,{103,78,0}}, +/* 39753 */ {(13<<2)|2,{103,78,0}}, +/* 39754 */ {(13<<2)|2,{103,78,0}}, +/* 39755 */ {(13<<2)|2,{103,78,0}}, +/* 39756 */ {(13<<2)|2,{103,78,0}}, +/* 39757 */ {(13<<2)|2,{103,78,0}}, +/* 39758 */ {(13<<2)|2,{103,78,0}}, +/* 39759 */ {(13<<2)|2,{103,78,0}}, +/* 39760 */ {(13<<2)|2,{103,79,0}}, +/* 39761 */ {(13<<2)|2,{103,79,0}}, +/* 39762 */ {(13<<2)|2,{103,79,0}}, +/* 39763 */ {(13<<2)|2,{103,79,0}}, +/* 39764 */ {(13<<2)|2,{103,79,0}}, +/* 39765 */ {(13<<2)|2,{103,79,0}}, +/* 39766 */ {(13<<2)|2,{103,79,0}}, +/* 39767 */ {(13<<2)|2,{103,79,0}}, +/* 39768 */ {(13<<2)|2,{103,80,0}}, +/* 39769 */ {(13<<2)|2,{103,80,0}}, +/* 39770 */ {(13<<2)|2,{103,80,0}}, +/* 39771 */ {(13<<2)|2,{103,80,0}}, +/* 39772 */ {(13<<2)|2,{103,80,0}}, +/* 39773 */ {(13<<2)|2,{103,80,0}}, +/* 39774 */ {(13<<2)|2,{103,80,0}}, +/* 39775 */ {(13<<2)|2,{103,80,0}}, +/* 39776 */ {(13<<2)|2,{103,81,0}}, +/* 39777 */ {(13<<2)|2,{103,81,0}}, +/* 39778 */ {(13<<2)|2,{103,81,0}}, +/* 39779 */ {(13<<2)|2,{103,81,0}}, +/* 39780 */ {(13<<2)|2,{103,81,0}}, +/* 39781 */ {(13<<2)|2,{103,81,0}}, +/* 39782 */ {(13<<2)|2,{103,81,0}}, +/* 39783 */ {(13<<2)|2,{103,81,0}}, +/* 39784 */ {(13<<2)|2,{103,82,0}}, +/* 39785 */ {(13<<2)|2,{103,82,0}}, +/* 39786 */ {(13<<2)|2,{103,82,0}}, +/* 39787 */ {(13<<2)|2,{103,82,0}}, +/* 39788 */ {(13<<2)|2,{103,82,0}}, +/* 39789 */ {(13<<2)|2,{103,82,0}}, +/* 39790 */ {(13<<2)|2,{103,82,0}}, +/* 39791 */ {(13<<2)|2,{103,82,0}}, +/* 39792 */ {(13<<2)|2,{103,83,0}}, +/* 39793 */ {(13<<2)|2,{103,83,0}}, +/* 39794 */ {(13<<2)|2,{103,83,0}}, +/* 39795 */ {(13<<2)|2,{103,83,0}}, +/* 39796 */ {(13<<2)|2,{103,83,0}}, +/* 39797 */ {(13<<2)|2,{103,83,0}}, +/* 39798 */ {(13<<2)|2,{103,83,0}}, +/* 39799 */ {(13<<2)|2,{103,83,0}}, +/* 39800 */ {(13<<2)|2,{103,84,0}}, +/* 39801 */ {(13<<2)|2,{103,84,0}}, +/* 39802 */ {(13<<2)|2,{103,84,0}}, +/* 39803 */ {(13<<2)|2,{103,84,0}}, +/* 39804 */ {(13<<2)|2,{103,84,0}}, +/* 39805 */ {(13<<2)|2,{103,84,0}}, +/* 39806 */ {(13<<2)|2,{103,84,0}}, +/* 39807 */ {(13<<2)|2,{103,84,0}}, +/* 39808 */ {(13<<2)|2,{103,85,0}}, +/* 39809 */ {(13<<2)|2,{103,85,0}}, +/* 39810 */ {(13<<2)|2,{103,85,0}}, +/* 39811 */ {(13<<2)|2,{103,85,0}}, +/* 39812 */ {(13<<2)|2,{103,85,0}}, +/* 39813 */ {(13<<2)|2,{103,85,0}}, +/* 39814 */ {(13<<2)|2,{103,85,0}}, +/* 39815 */ {(13<<2)|2,{103,85,0}}, +/* 39816 */ {(13<<2)|2,{103,86,0}}, +/* 39817 */ {(13<<2)|2,{103,86,0}}, +/* 39818 */ {(13<<2)|2,{103,86,0}}, +/* 39819 */ {(13<<2)|2,{103,86,0}}, +/* 39820 */ {(13<<2)|2,{103,86,0}}, +/* 39821 */ {(13<<2)|2,{103,86,0}}, +/* 39822 */ {(13<<2)|2,{103,86,0}}, +/* 39823 */ {(13<<2)|2,{103,86,0}}, +/* 39824 */ {(13<<2)|2,{103,87,0}}, +/* 39825 */ {(13<<2)|2,{103,87,0}}, +/* 39826 */ {(13<<2)|2,{103,87,0}}, +/* 39827 */ {(13<<2)|2,{103,87,0}}, +/* 39828 */ {(13<<2)|2,{103,87,0}}, +/* 39829 */ {(13<<2)|2,{103,87,0}}, +/* 39830 */ {(13<<2)|2,{103,87,0}}, +/* 39831 */ {(13<<2)|2,{103,87,0}}, +/* 39832 */ {(13<<2)|2,{103,89,0}}, +/* 39833 */ {(13<<2)|2,{103,89,0}}, +/* 39834 */ {(13<<2)|2,{103,89,0}}, +/* 39835 */ {(13<<2)|2,{103,89,0}}, +/* 39836 */ {(13<<2)|2,{103,89,0}}, +/* 39837 */ {(13<<2)|2,{103,89,0}}, +/* 39838 */ {(13<<2)|2,{103,89,0}}, +/* 39839 */ {(13<<2)|2,{103,89,0}}, +/* 39840 */ {(13<<2)|2,{103,106,0}}, +/* 39841 */ {(13<<2)|2,{103,106,0}}, +/* 39842 */ {(13<<2)|2,{103,106,0}}, +/* 39843 */ {(13<<2)|2,{103,106,0}}, +/* 39844 */ {(13<<2)|2,{103,106,0}}, +/* 39845 */ {(13<<2)|2,{103,106,0}}, +/* 39846 */ {(13<<2)|2,{103,106,0}}, +/* 39847 */ {(13<<2)|2,{103,106,0}}, +/* 39848 */ {(13<<2)|2,{103,107,0}}, +/* 39849 */ {(13<<2)|2,{103,107,0}}, +/* 39850 */ {(13<<2)|2,{103,107,0}}, +/* 39851 */ {(13<<2)|2,{103,107,0}}, +/* 39852 */ {(13<<2)|2,{103,107,0}}, +/* 39853 */ {(13<<2)|2,{103,107,0}}, +/* 39854 */ {(13<<2)|2,{103,107,0}}, +/* 39855 */ {(13<<2)|2,{103,107,0}}, +/* 39856 */ {(13<<2)|2,{103,113,0}}, +/* 39857 */ {(13<<2)|2,{103,113,0}}, +/* 39858 */ {(13<<2)|2,{103,113,0}}, +/* 39859 */ {(13<<2)|2,{103,113,0}}, +/* 39860 */ {(13<<2)|2,{103,113,0}}, +/* 39861 */ {(13<<2)|2,{103,113,0}}, +/* 39862 */ {(13<<2)|2,{103,113,0}}, +/* 39863 */ {(13<<2)|2,{103,113,0}}, +/* 39864 */ {(13<<2)|2,{103,118,0}}, +/* 39865 */ {(13<<2)|2,{103,118,0}}, +/* 39866 */ {(13<<2)|2,{103,118,0}}, +/* 39867 */ {(13<<2)|2,{103,118,0}}, +/* 39868 */ {(13<<2)|2,{103,118,0}}, +/* 39869 */ {(13<<2)|2,{103,118,0}}, +/* 39870 */ {(13<<2)|2,{103,118,0}}, +/* 39871 */ {(13<<2)|2,{103,118,0}}, +/* 39872 */ {(13<<2)|2,{103,119,0}}, +/* 39873 */ {(13<<2)|2,{103,119,0}}, +/* 39874 */ {(13<<2)|2,{103,119,0}}, +/* 39875 */ {(13<<2)|2,{103,119,0}}, +/* 39876 */ {(13<<2)|2,{103,119,0}}, +/* 39877 */ {(13<<2)|2,{103,119,0}}, +/* 39878 */ {(13<<2)|2,{103,119,0}}, +/* 39879 */ {(13<<2)|2,{103,119,0}}, +/* 39880 */ {(13<<2)|2,{103,120,0}}, +/* 39881 */ {(13<<2)|2,{103,120,0}}, +/* 39882 */ {(13<<2)|2,{103,120,0}}, +/* 39883 */ {(13<<2)|2,{103,120,0}}, +/* 39884 */ {(13<<2)|2,{103,120,0}}, +/* 39885 */ {(13<<2)|2,{103,120,0}}, +/* 39886 */ {(13<<2)|2,{103,120,0}}, +/* 39887 */ {(13<<2)|2,{103,120,0}}, +/* 39888 */ {(13<<2)|2,{103,121,0}}, +/* 39889 */ {(13<<2)|2,{103,121,0}}, +/* 39890 */ {(13<<2)|2,{103,121,0}}, +/* 39891 */ {(13<<2)|2,{103,121,0}}, +/* 39892 */ {(13<<2)|2,{103,121,0}}, +/* 39893 */ {(13<<2)|2,{103,121,0}}, +/* 39894 */ {(13<<2)|2,{103,121,0}}, +/* 39895 */ {(13<<2)|2,{103,121,0}}, +/* 39896 */ {(13<<2)|2,{103,122,0}}, +/* 39897 */ {(13<<2)|2,{103,122,0}}, +/* 39898 */ {(13<<2)|2,{103,122,0}}, +/* 39899 */ {(13<<2)|2,{103,122,0}}, +/* 39900 */ {(13<<2)|2,{103,122,0}}, +/* 39901 */ {(13<<2)|2,{103,122,0}}, +/* 39902 */ {(13<<2)|2,{103,122,0}}, +/* 39903 */ {(13<<2)|2,{103,122,0}}, +/* 39904 */ {(14<<2)|2,{103,38,0}}, +/* 39905 */ {(14<<2)|2,{103,38,0}}, +/* 39906 */ {(14<<2)|2,{103,38,0}}, +/* 39907 */ {(14<<2)|2,{103,38,0}}, +/* 39908 */ {(14<<2)|2,{103,42,0}}, +/* 39909 */ {(14<<2)|2,{103,42,0}}, +/* 39910 */ {(14<<2)|2,{103,42,0}}, +/* 39911 */ {(14<<2)|2,{103,42,0}}, +/* 39912 */ {(14<<2)|2,{103,44,0}}, +/* 39913 */ {(14<<2)|2,{103,44,0}}, +/* 39914 */ {(14<<2)|2,{103,44,0}}, +/* 39915 */ {(14<<2)|2,{103,44,0}}, +/* 39916 */ {(14<<2)|2,{103,59,0}}, +/* 39917 */ {(14<<2)|2,{103,59,0}}, +/* 39918 */ {(14<<2)|2,{103,59,0}}, +/* 39919 */ {(14<<2)|2,{103,59,0}}, +/* 39920 */ {(14<<2)|2,{103,88,0}}, +/* 39921 */ {(14<<2)|2,{103,88,0}}, +/* 39922 */ {(14<<2)|2,{103,88,0}}, +/* 39923 */ {(14<<2)|2,{103,88,0}}, +/* 39924 */ {(14<<2)|2,{103,90,0}}, +/* 39925 */ {(14<<2)|2,{103,90,0}}, +/* 39926 */ {(14<<2)|2,{103,90,0}}, +/* 39927 */ {(14<<2)|2,{103,90,0}}, +/* 39928 */ {(16<<2)|2,{103,33,0}}, +/* 39929 */ {(16<<2)|2,{103,34,0}}, +/* 39930 */ {(16<<2)|2,{103,40,0}}, +/* 39931 */ {(16<<2)|2,{103,41,0}}, +/* 39932 */ {(16<<2)|2,{103,63,0}}, +/* 39933 */ {(6<<2)|1,{103,0,0}}, +/* 39934 */ {(6<<2)|1,{103,0,0}}, +/* 39935 */ {(6<<2)|1,{103,0,0}}, +/* 39936 */ {(16<<2)|3,{104,48,48}}, +/* 39937 */ {(16<<2)|3,{104,48,49}}, +/* 39938 */ {(16<<2)|3,{104,48,50}}, +/* 39939 */ {(16<<2)|3,{104,48,97}}, +/* 39940 */ {(16<<2)|3,{104,48,99}}, +/* 39941 */ {(16<<2)|3,{104,48,101}}, +/* 39942 */ {(16<<2)|3,{104,48,105}}, +/* 39943 */ {(16<<2)|3,{104,48,111}}, +/* 39944 */ {(16<<2)|3,{104,48,115}}, +/* 39945 */ {(16<<2)|3,{104,48,116}}, +/* 39946 */ {(11<<2)|2,{104,48,0}}, +/* 39947 */ {(11<<2)|2,{104,48,0}}, +/* 39948 */ {(11<<2)|2,{104,48,0}}, +/* 39949 */ {(11<<2)|2,{104,48,0}}, +/* 39950 */ {(11<<2)|2,{104,48,0}}, +/* 39951 */ {(11<<2)|2,{104,48,0}}, +/* 39952 */ {(11<<2)|2,{104,48,0}}, +/* 39953 */ {(11<<2)|2,{104,48,0}}, +/* 39954 */ {(11<<2)|2,{104,48,0}}, +/* 39955 */ {(11<<2)|2,{104,48,0}}, +/* 39956 */ {(11<<2)|2,{104,48,0}}, +/* 39957 */ {(11<<2)|2,{104,48,0}}, +/* 39958 */ {(11<<2)|2,{104,48,0}}, +/* 39959 */ {(11<<2)|2,{104,48,0}}, +/* 39960 */ {(11<<2)|2,{104,48,0}}, +/* 39961 */ {(11<<2)|2,{104,48,0}}, +/* 39962 */ {(11<<2)|2,{104,48,0}}, +/* 39963 */ {(11<<2)|2,{104,48,0}}, +/* 39964 */ {(11<<2)|2,{104,48,0}}, +/* 39965 */ {(11<<2)|2,{104,48,0}}, +/* 39966 */ {(11<<2)|2,{104,48,0}}, +/* 39967 */ {(11<<2)|2,{104,48,0}}, +/* 39968 */ {(16<<2)|3,{104,49,48}}, +/* 39969 */ {(16<<2)|3,{104,49,49}}, +/* 39970 */ {(16<<2)|3,{104,49,50}}, +/* 39971 */ {(16<<2)|3,{104,49,97}}, +/* 39972 */ {(16<<2)|3,{104,49,99}}, +/* 39973 */ {(16<<2)|3,{104,49,101}}, +/* 39974 */ {(16<<2)|3,{104,49,105}}, +/* 39975 */ {(16<<2)|3,{104,49,111}}, +/* 39976 */ {(16<<2)|3,{104,49,115}}, +/* 39977 */ {(16<<2)|3,{104,49,116}}, +/* 39978 */ {(11<<2)|2,{104,49,0}}, +/* 39979 */ {(11<<2)|2,{104,49,0}}, +/* 39980 */ {(11<<2)|2,{104,49,0}}, +/* 39981 */ {(11<<2)|2,{104,49,0}}, +/* 39982 */ {(11<<2)|2,{104,49,0}}, +/* 39983 */ {(11<<2)|2,{104,49,0}}, +/* 39984 */ {(11<<2)|2,{104,49,0}}, +/* 39985 */ {(11<<2)|2,{104,49,0}}, +/* 39986 */ {(11<<2)|2,{104,49,0}}, +/* 39987 */ {(11<<2)|2,{104,49,0}}, +/* 39988 */ {(11<<2)|2,{104,49,0}}, +/* 39989 */ {(11<<2)|2,{104,49,0}}, +/* 39990 */ {(11<<2)|2,{104,49,0}}, +/* 39991 */ {(11<<2)|2,{104,49,0}}, +/* 39992 */ {(11<<2)|2,{104,49,0}}, +/* 39993 */ {(11<<2)|2,{104,49,0}}, +/* 39994 */ {(11<<2)|2,{104,49,0}}, +/* 39995 */ {(11<<2)|2,{104,49,0}}, +/* 39996 */ {(11<<2)|2,{104,49,0}}, +/* 39997 */ {(11<<2)|2,{104,49,0}}, +/* 39998 */ {(11<<2)|2,{104,49,0}}, +/* 39999 */ {(11<<2)|2,{104,49,0}}, +/* 40000 */ {(16<<2)|3,{104,50,48}}, +/* 40001 */ {(16<<2)|3,{104,50,49}}, +/* 40002 */ {(16<<2)|3,{104,50,50}}, +/* 40003 */ {(16<<2)|3,{104,50,97}}, +/* 40004 */ {(16<<2)|3,{104,50,99}}, +/* 40005 */ {(16<<2)|3,{104,50,101}}, +/* 40006 */ {(16<<2)|3,{104,50,105}}, +/* 40007 */ {(16<<2)|3,{104,50,111}}, +/* 40008 */ {(16<<2)|3,{104,50,115}}, +/* 40009 */ {(16<<2)|3,{104,50,116}}, +/* 40010 */ {(11<<2)|2,{104,50,0}}, +/* 40011 */ {(11<<2)|2,{104,50,0}}, +/* 40012 */ {(11<<2)|2,{104,50,0}}, +/* 40013 */ {(11<<2)|2,{104,50,0}}, +/* 40014 */ {(11<<2)|2,{104,50,0}}, +/* 40015 */ {(11<<2)|2,{104,50,0}}, +/* 40016 */ {(11<<2)|2,{104,50,0}}, +/* 40017 */ {(11<<2)|2,{104,50,0}}, +/* 40018 */ {(11<<2)|2,{104,50,0}}, +/* 40019 */ {(11<<2)|2,{104,50,0}}, +/* 40020 */ {(11<<2)|2,{104,50,0}}, +/* 40021 */ {(11<<2)|2,{104,50,0}}, +/* 40022 */ {(11<<2)|2,{104,50,0}}, +/* 40023 */ {(11<<2)|2,{104,50,0}}, +/* 40024 */ {(11<<2)|2,{104,50,0}}, +/* 40025 */ {(11<<2)|2,{104,50,0}}, +/* 40026 */ {(11<<2)|2,{104,50,0}}, +/* 40027 */ {(11<<2)|2,{104,50,0}}, +/* 40028 */ {(11<<2)|2,{104,50,0}}, +/* 40029 */ {(11<<2)|2,{104,50,0}}, +/* 40030 */ {(11<<2)|2,{104,50,0}}, +/* 40031 */ {(11<<2)|2,{104,50,0}}, +/* 40032 */ {(16<<2)|3,{104,97,48}}, +/* 40033 */ {(16<<2)|3,{104,97,49}}, +/* 40034 */ {(16<<2)|3,{104,97,50}}, +/* 40035 */ {(16<<2)|3,{104,97,97}}, +/* 40036 */ {(16<<2)|3,{104,97,99}}, +/* 40037 */ {(16<<2)|3,{104,97,101}}, +/* 40038 */ {(16<<2)|3,{104,97,105}}, +/* 40039 */ {(16<<2)|3,{104,97,111}}, +/* 40040 */ {(16<<2)|3,{104,97,115}}, +/* 40041 */ {(16<<2)|3,{104,97,116}}, +/* 40042 */ {(11<<2)|2,{104,97,0}}, +/* 40043 */ {(11<<2)|2,{104,97,0}}, +/* 40044 */ {(11<<2)|2,{104,97,0}}, +/* 40045 */ {(11<<2)|2,{104,97,0}}, +/* 40046 */ {(11<<2)|2,{104,97,0}}, +/* 40047 */ {(11<<2)|2,{104,97,0}}, +/* 40048 */ {(11<<2)|2,{104,97,0}}, +/* 40049 */ {(11<<2)|2,{104,97,0}}, +/* 40050 */ {(11<<2)|2,{104,97,0}}, +/* 40051 */ {(11<<2)|2,{104,97,0}}, +/* 40052 */ {(11<<2)|2,{104,97,0}}, +/* 40053 */ {(11<<2)|2,{104,97,0}}, +/* 40054 */ {(11<<2)|2,{104,97,0}}, +/* 40055 */ {(11<<2)|2,{104,97,0}}, +/* 40056 */ {(11<<2)|2,{104,97,0}}, +/* 40057 */ {(11<<2)|2,{104,97,0}}, +/* 40058 */ {(11<<2)|2,{104,97,0}}, +/* 40059 */ {(11<<2)|2,{104,97,0}}, +/* 40060 */ {(11<<2)|2,{104,97,0}}, +/* 40061 */ {(11<<2)|2,{104,97,0}}, +/* 40062 */ {(11<<2)|2,{104,97,0}}, +/* 40063 */ {(11<<2)|2,{104,97,0}}, +/* 40064 */ {(16<<2)|3,{104,99,48}}, +/* 40065 */ {(16<<2)|3,{104,99,49}}, +/* 40066 */ {(16<<2)|3,{104,99,50}}, +/* 40067 */ {(16<<2)|3,{104,99,97}}, +/* 40068 */ {(16<<2)|3,{104,99,99}}, +/* 40069 */ {(16<<2)|3,{104,99,101}}, +/* 40070 */ {(16<<2)|3,{104,99,105}}, +/* 40071 */ {(16<<2)|3,{104,99,111}}, +/* 40072 */ {(16<<2)|3,{104,99,115}}, +/* 40073 */ {(16<<2)|3,{104,99,116}}, +/* 40074 */ {(11<<2)|2,{104,99,0}}, +/* 40075 */ {(11<<2)|2,{104,99,0}}, +/* 40076 */ {(11<<2)|2,{104,99,0}}, +/* 40077 */ {(11<<2)|2,{104,99,0}}, +/* 40078 */ {(11<<2)|2,{104,99,0}}, +/* 40079 */ {(11<<2)|2,{104,99,0}}, +/* 40080 */ {(11<<2)|2,{104,99,0}}, +/* 40081 */ {(11<<2)|2,{104,99,0}}, +/* 40082 */ {(11<<2)|2,{104,99,0}}, +/* 40083 */ {(11<<2)|2,{104,99,0}}, +/* 40084 */ {(11<<2)|2,{104,99,0}}, +/* 40085 */ {(11<<2)|2,{104,99,0}}, +/* 40086 */ {(11<<2)|2,{104,99,0}}, +/* 40087 */ {(11<<2)|2,{104,99,0}}, +/* 40088 */ {(11<<2)|2,{104,99,0}}, +/* 40089 */ {(11<<2)|2,{104,99,0}}, +/* 40090 */ {(11<<2)|2,{104,99,0}}, +/* 40091 */ {(11<<2)|2,{104,99,0}}, +/* 40092 */ {(11<<2)|2,{104,99,0}}, +/* 40093 */ {(11<<2)|2,{104,99,0}}, +/* 40094 */ {(11<<2)|2,{104,99,0}}, +/* 40095 */ {(11<<2)|2,{104,99,0}}, +/* 40096 */ {(16<<2)|3,{104,101,48}}, +/* 40097 */ {(16<<2)|3,{104,101,49}}, +/* 40098 */ {(16<<2)|3,{104,101,50}}, +/* 40099 */ {(16<<2)|3,{104,101,97}}, +/* 40100 */ {(16<<2)|3,{104,101,99}}, +/* 40101 */ {(16<<2)|3,{104,101,101}}, +/* 40102 */ {(16<<2)|3,{104,101,105}}, +/* 40103 */ {(16<<2)|3,{104,101,111}}, +/* 40104 */ {(16<<2)|3,{104,101,115}}, +/* 40105 */ {(16<<2)|3,{104,101,116}}, +/* 40106 */ {(11<<2)|2,{104,101,0}}, +/* 40107 */ {(11<<2)|2,{104,101,0}}, +/* 40108 */ {(11<<2)|2,{104,101,0}}, +/* 40109 */ {(11<<2)|2,{104,101,0}}, +/* 40110 */ {(11<<2)|2,{104,101,0}}, +/* 40111 */ {(11<<2)|2,{104,101,0}}, +/* 40112 */ {(11<<2)|2,{104,101,0}}, +/* 40113 */ {(11<<2)|2,{104,101,0}}, +/* 40114 */ {(11<<2)|2,{104,101,0}}, +/* 40115 */ {(11<<2)|2,{104,101,0}}, +/* 40116 */ {(11<<2)|2,{104,101,0}}, +/* 40117 */ {(11<<2)|2,{104,101,0}}, +/* 40118 */ {(11<<2)|2,{104,101,0}}, +/* 40119 */ {(11<<2)|2,{104,101,0}}, +/* 40120 */ {(11<<2)|2,{104,101,0}}, +/* 40121 */ {(11<<2)|2,{104,101,0}}, +/* 40122 */ {(11<<2)|2,{104,101,0}}, +/* 40123 */ {(11<<2)|2,{104,101,0}}, +/* 40124 */ {(11<<2)|2,{104,101,0}}, +/* 40125 */ {(11<<2)|2,{104,101,0}}, +/* 40126 */ {(11<<2)|2,{104,101,0}}, +/* 40127 */ {(11<<2)|2,{104,101,0}}, +/* 40128 */ {(16<<2)|3,{104,105,48}}, +/* 40129 */ {(16<<2)|3,{104,105,49}}, +/* 40130 */ {(16<<2)|3,{104,105,50}}, +/* 40131 */ {(16<<2)|3,{104,105,97}}, +/* 40132 */ {(16<<2)|3,{104,105,99}}, +/* 40133 */ {(16<<2)|3,{104,105,101}}, +/* 40134 */ {(16<<2)|3,{104,105,105}}, +/* 40135 */ {(16<<2)|3,{104,105,111}}, +/* 40136 */ {(16<<2)|3,{104,105,115}}, +/* 40137 */ {(16<<2)|3,{104,105,116}}, +/* 40138 */ {(11<<2)|2,{104,105,0}}, +/* 40139 */ {(11<<2)|2,{104,105,0}}, +/* 40140 */ {(11<<2)|2,{104,105,0}}, +/* 40141 */ {(11<<2)|2,{104,105,0}}, +/* 40142 */ {(11<<2)|2,{104,105,0}}, +/* 40143 */ {(11<<2)|2,{104,105,0}}, +/* 40144 */ {(11<<2)|2,{104,105,0}}, +/* 40145 */ {(11<<2)|2,{104,105,0}}, +/* 40146 */ {(11<<2)|2,{104,105,0}}, +/* 40147 */ {(11<<2)|2,{104,105,0}}, +/* 40148 */ {(11<<2)|2,{104,105,0}}, +/* 40149 */ {(11<<2)|2,{104,105,0}}, +/* 40150 */ {(11<<2)|2,{104,105,0}}, +/* 40151 */ {(11<<2)|2,{104,105,0}}, +/* 40152 */ {(11<<2)|2,{104,105,0}}, +/* 40153 */ {(11<<2)|2,{104,105,0}}, +/* 40154 */ {(11<<2)|2,{104,105,0}}, +/* 40155 */ {(11<<2)|2,{104,105,0}}, +/* 40156 */ {(11<<2)|2,{104,105,0}}, +/* 40157 */ {(11<<2)|2,{104,105,0}}, +/* 40158 */ {(11<<2)|2,{104,105,0}}, +/* 40159 */ {(11<<2)|2,{104,105,0}}, +/* 40160 */ {(16<<2)|3,{104,111,48}}, +/* 40161 */ {(16<<2)|3,{104,111,49}}, +/* 40162 */ {(16<<2)|3,{104,111,50}}, +/* 40163 */ {(16<<2)|3,{104,111,97}}, +/* 40164 */ {(16<<2)|3,{104,111,99}}, +/* 40165 */ {(16<<2)|3,{104,111,101}}, +/* 40166 */ {(16<<2)|3,{104,111,105}}, +/* 40167 */ {(16<<2)|3,{104,111,111}}, +/* 40168 */ {(16<<2)|3,{104,111,115}}, +/* 40169 */ {(16<<2)|3,{104,111,116}}, +/* 40170 */ {(11<<2)|2,{104,111,0}}, +/* 40171 */ {(11<<2)|2,{104,111,0}}, +/* 40172 */ {(11<<2)|2,{104,111,0}}, +/* 40173 */ {(11<<2)|2,{104,111,0}}, +/* 40174 */ {(11<<2)|2,{104,111,0}}, +/* 40175 */ {(11<<2)|2,{104,111,0}}, +/* 40176 */ {(11<<2)|2,{104,111,0}}, +/* 40177 */ {(11<<2)|2,{104,111,0}}, +/* 40178 */ {(11<<2)|2,{104,111,0}}, +/* 40179 */ {(11<<2)|2,{104,111,0}}, +/* 40180 */ {(11<<2)|2,{104,111,0}}, +/* 40181 */ {(11<<2)|2,{104,111,0}}, +/* 40182 */ {(11<<2)|2,{104,111,0}}, +/* 40183 */ {(11<<2)|2,{104,111,0}}, +/* 40184 */ {(11<<2)|2,{104,111,0}}, +/* 40185 */ {(11<<2)|2,{104,111,0}}, +/* 40186 */ {(11<<2)|2,{104,111,0}}, +/* 40187 */ {(11<<2)|2,{104,111,0}}, +/* 40188 */ {(11<<2)|2,{104,111,0}}, +/* 40189 */ {(11<<2)|2,{104,111,0}}, +/* 40190 */ {(11<<2)|2,{104,111,0}}, +/* 40191 */ {(11<<2)|2,{104,111,0}}, +/* 40192 */ {(16<<2)|3,{104,115,48}}, +/* 40193 */ {(16<<2)|3,{104,115,49}}, +/* 40194 */ {(16<<2)|3,{104,115,50}}, +/* 40195 */ {(16<<2)|3,{104,115,97}}, +/* 40196 */ {(16<<2)|3,{104,115,99}}, +/* 40197 */ {(16<<2)|3,{104,115,101}}, +/* 40198 */ {(16<<2)|3,{104,115,105}}, +/* 40199 */ {(16<<2)|3,{104,115,111}}, +/* 40200 */ {(16<<2)|3,{104,115,115}}, +/* 40201 */ {(16<<2)|3,{104,115,116}}, +/* 40202 */ {(11<<2)|2,{104,115,0}}, +/* 40203 */ {(11<<2)|2,{104,115,0}}, +/* 40204 */ {(11<<2)|2,{104,115,0}}, +/* 40205 */ {(11<<2)|2,{104,115,0}}, +/* 40206 */ {(11<<2)|2,{104,115,0}}, +/* 40207 */ {(11<<2)|2,{104,115,0}}, +/* 40208 */ {(11<<2)|2,{104,115,0}}, +/* 40209 */ {(11<<2)|2,{104,115,0}}, +/* 40210 */ {(11<<2)|2,{104,115,0}}, +/* 40211 */ {(11<<2)|2,{104,115,0}}, +/* 40212 */ {(11<<2)|2,{104,115,0}}, +/* 40213 */ {(11<<2)|2,{104,115,0}}, +/* 40214 */ {(11<<2)|2,{104,115,0}}, +/* 40215 */ {(11<<2)|2,{104,115,0}}, +/* 40216 */ {(11<<2)|2,{104,115,0}}, +/* 40217 */ {(11<<2)|2,{104,115,0}}, +/* 40218 */ {(11<<2)|2,{104,115,0}}, +/* 40219 */ {(11<<2)|2,{104,115,0}}, +/* 40220 */ {(11<<2)|2,{104,115,0}}, +/* 40221 */ {(11<<2)|2,{104,115,0}}, +/* 40222 */ {(11<<2)|2,{104,115,0}}, +/* 40223 */ {(11<<2)|2,{104,115,0}}, +/* 40224 */ {(16<<2)|3,{104,116,48}}, +/* 40225 */ {(16<<2)|3,{104,116,49}}, +/* 40226 */ {(16<<2)|3,{104,116,50}}, +/* 40227 */ {(16<<2)|3,{104,116,97}}, +/* 40228 */ {(16<<2)|3,{104,116,99}}, +/* 40229 */ {(16<<2)|3,{104,116,101}}, +/* 40230 */ {(16<<2)|3,{104,116,105}}, +/* 40231 */ {(16<<2)|3,{104,116,111}}, +/* 40232 */ {(16<<2)|3,{104,116,115}}, +/* 40233 */ {(16<<2)|3,{104,116,116}}, +/* 40234 */ {(11<<2)|2,{104,116,0}}, +/* 40235 */ {(11<<2)|2,{104,116,0}}, +/* 40236 */ {(11<<2)|2,{104,116,0}}, +/* 40237 */ {(11<<2)|2,{104,116,0}}, +/* 40238 */ {(11<<2)|2,{104,116,0}}, +/* 40239 */ {(11<<2)|2,{104,116,0}}, +/* 40240 */ {(11<<2)|2,{104,116,0}}, +/* 40241 */ {(11<<2)|2,{104,116,0}}, +/* 40242 */ {(11<<2)|2,{104,116,0}}, +/* 40243 */ {(11<<2)|2,{104,116,0}}, +/* 40244 */ {(11<<2)|2,{104,116,0}}, +/* 40245 */ {(11<<2)|2,{104,116,0}}, +/* 40246 */ {(11<<2)|2,{104,116,0}}, +/* 40247 */ {(11<<2)|2,{104,116,0}}, +/* 40248 */ {(11<<2)|2,{104,116,0}}, +/* 40249 */ {(11<<2)|2,{104,116,0}}, +/* 40250 */ {(11<<2)|2,{104,116,0}}, +/* 40251 */ {(11<<2)|2,{104,116,0}}, +/* 40252 */ {(11<<2)|2,{104,116,0}}, +/* 40253 */ {(11<<2)|2,{104,116,0}}, +/* 40254 */ {(11<<2)|2,{104,116,0}}, +/* 40255 */ {(11<<2)|2,{104,116,0}}, +/* 40256 */ {(12<<2)|2,{104,32,0}}, +/* 40257 */ {(12<<2)|2,{104,32,0}}, +/* 40258 */ {(12<<2)|2,{104,32,0}}, +/* 40259 */ {(12<<2)|2,{104,32,0}}, +/* 40260 */ {(12<<2)|2,{104,32,0}}, +/* 40261 */ {(12<<2)|2,{104,32,0}}, +/* 40262 */ {(12<<2)|2,{104,32,0}}, +/* 40263 */ {(12<<2)|2,{104,32,0}}, +/* 40264 */ {(12<<2)|2,{104,32,0}}, +/* 40265 */ {(12<<2)|2,{104,32,0}}, +/* 40266 */ {(12<<2)|2,{104,32,0}}, +/* 40267 */ {(12<<2)|2,{104,32,0}}, +/* 40268 */ {(12<<2)|2,{104,32,0}}, +/* 40269 */ {(12<<2)|2,{104,32,0}}, +/* 40270 */ {(12<<2)|2,{104,32,0}}, +/* 40271 */ {(12<<2)|2,{104,32,0}}, +/* 40272 */ {(12<<2)|2,{104,37,0}}, +/* 40273 */ {(12<<2)|2,{104,37,0}}, +/* 40274 */ {(12<<2)|2,{104,37,0}}, +/* 40275 */ {(12<<2)|2,{104,37,0}}, +/* 40276 */ {(12<<2)|2,{104,37,0}}, +/* 40277 */ {(12<<2)|2,{104,37,0}}, +/* 40278 */ {(12<<2)|2,{104,37,0}}, +/* 40279 */ {(12<<2)|2,{104,37,0}}, +/* 40280 */ {(12<<2)|2,{104,37,0}}, +/* 40281 */ {(12<<2)|2,{104,37,0}}, +/* 40282 */ {(12<<2)|2,{104,37,0}}, +/* 40283 */ {(12<<2)|2,{104,37,0}}, +/* 40284 */ {(12<<2)|2,{104,37,0}}, +/* 40285 */ {(12<<2)|2,{104,37,0}}, +/* 40286 */ {(12<<2)|2,{104,37,0}}, +/* 40287 */ {(12<<2)|2,{104,37,0}}, +/* 40288 */ {(12<<2)|2,{104,45,0}}, +/* 40289 */ {(12<<2)|2,{104,45,0}}, +/* 40290 */ {(12<<2)|2,{104,45,0}}, +/* 40291 */ {(12<<2)|2,{104,45,0}}, +/* 40292 */ {(12<<2)|2,{104,45,0}}, +/* 40293 */ {(12<<2)|2,{104,45,0}}, +/* 40294 */ {(12<<2)|2,{104,45,0}}, +/* 40295 */ {(12<<2)|2,{104,45,0}}, +/* 40296 */ {(12<<2)|2,{104,45,0}}, +/* 40297 */ {(12<<2)|2,{104,45,0}}, +/* 40298 */ {(12<<2)|2,{104,45,0}}, +/* 40299 */ {(12<<2)|2,{104,45,0}}, +/* 40300 */ {(12<<2)|2,{104,45,0}}, +/* 40301 */ {(12<<2)|2,{104,45,0}}, +/* 40302 */ {(12<<2)|2,{104,45,0}}, +/* 40303 */ {(12<<2)|2,{104,45,0}}, +/* 40304 */ {(12<<2)|2,{104,46,0}}, +/* 40305 */ {(12<<2)|2,{104,46,0}}, +/* 40306 */ {(12<<2)|2,{104,46,0}}, +/* 40307 */ {(12<<2)|2,{104,46,0}}, +/* 40308 */ {(12<<2)|2,{104,46,0}}, +/* 40309 */ {(12<<2)|2,{104,46,0}}, +/* 40310 */ {(12<<2)|2,{104,46,0}}, +/* 40311 */ {(12<<2)|2,{104,46,0}}, +/* 40312 */ {(12<<2)|2,{104,46,0}}, +/* 40313 */ {(12<<2)|2,{104,46,0}}, +/* 40314 */ {(12<<2)|2,{104,46,0}}, +/* 40315 */ {(12<<2)|2,{104,46,0}}, +/* 40316 */ {(12<<2)|2,{104,46,0}}, +/* 40317 */ {(12<<2)|2,{104,46,0}}, +/* 40318 */ {(12<<2)|2,{104,46,0}}, +/* 40319 */ {(12<<2)|2,{104,46,0}}, +/* 40320 */ {(12<<2)|2,{104,47,0}}, +/* 40321 */ {(12<<2)|2,{104,47,0}}, +/* 40322 */ {(12<<2)|2,{104,47,0}}, +/* 40323 */ {(12<<2)|2,{104,47,0}}, +/* 40324 */ {(12<<2)|2,{104,47,0}}, +/* 40325 */ {(12<<2)|2,{104,47,0}}, +/* 40326 */ {(12<<2)|2,{104,47,0}}, +/* 40327 */ {(12<<2)|2,{104,47,0}}, +/* 40328 */ {(12<<2)|2,{104,47,0}}, +/* 40329 */ {(12<<2)|2,{104,47,0}}, +/* 40330 */ {(12<<2)|2,{104,47,0}}, +/* 40331 */ {(12<<2)|2,{104,47,0}}, +/* 40332 */ {(12<<2)|2,{104,47,0}}, +/* 40333 */ {(12<<2)|2,{104,47,0}}, +/* 40334 */ {(12<<2)|2,{104,47,0}}, +/* 40335 */ {(12<<2)|2,{104,47,0}}, +/* 40336 */ {(12<<2)|2,{104,51,0}}, +/* 40337 */ {(12<<2)|2,{104,51,0}}, +/* 40338 */ {(12<<2)|2,{104,51,0}}, +/* 40339 */ {(12<<2)|2,{104,51,0}}, +/* 40340 */ {(12<<2)|2,{104,51,0}}, +/* 40341 */ {(12<<2)|2,{104,51,0}}, +/* 40342 */ {(12<<2)|2,{104,51,0}}, +/* 40343 */ {(12<<2)|2,{104,51,0}}, +/* 40344 */ {(12<<2)|2,{104,51,0}}, +/* 40345 */ {(12<<2)|2,{104,51,0}}, +/* 40346 */ {(12<<2)|2,{104,51,0}}, +/* 40347 */ {(12<<2)|2,{104,51,0}}, +/* 40348 */ {(12<<2)|2,{104,51,0}}, +/* 40349 */ {(12<<2)|2,{104,51,0}}, +/* 40350 */ {(12<<2)|2,{104,51,0}}, +/* 40351 */ {(12<<2)|2,{104,51,0}}, +/* 40352 */ {(12<<2)|2,{104,52,0}}, +/* 40353 */ {(12<<2)|2,{104,52,0}}, +/* 40354 */ {(12<<2)|2,{104,52,0}}, +/* 40355 */ {(12<<2)|2,{104,52,0}}, +/* 40356 */ {(12<<2)|2,{104,52,0}}, +/* 40357 */ {(12<<2)|2,{104,52,0}}, +/* 40358 */ {(12<<2)|2,{104,52,0}}, +/* 40359 */ {(12<<2)|2,{104,52,0}}, +/* 40360 */ {(12<<2)|2,{104,52,0}}, +/* 40361 */ {(12<<2)|2,{104,52,0}}, +/* 40362 */ {(12<<2)|2,{104,52,0}}, +/* 40363 */ {(12<<2)|2,{104,52,0}}, +/* 40364 */ {(12<<2)|2,{104,52,0}}, +/* 40365 */ {(12<<2)|2,{104,52,0}}, +/* 40366 */ {(12<<2)|2,{104,52,0}}, +/* 40367 */ {(12<<2)|2,{104,52,0}}, +/* 40368 */ {(12<<2)|2,{104,53,0}}, +/* 40369 */ {(12<<2)|2,{104,53,0}}, +/* 40370 */ {(12<<2)|2,{104,53,0}}, +/* 40371 */ {(12<<2)|2,{104,53,0}}, +/* 40372 */ {(12<<2)|2,{104,53,0}}, +/* 40373 */ {(12<<2)|2,{104,53,0}}, +/* 40374 */ {(12<<2)|2,{104,53,0}}, +/* 40375 */ {(12<<2)|2,{104,53,0}}, +/* 40376 */ {(12<<2)|2,{104,53,0}}, +/* 40377 */ {(12<<2)|2,{104,53,0}}, +/* 40378 */ {(12<<2)|2,{104,53,0}}, +/* 40379 */ {(12<<2)|2,{104,53,0}}, +/* 40380 */ {(12<<2)|2,{104,53,0}}, +/* 40381 */ {(12<<2)|2,{104,53,0}}, +/* 40382 */ {(12<<2)|2,{104,53,0}}, +/* 40383 */ {(12<<2)|2,{104,53,0}}, +/* 40384 */ {(12<<2)|2,{104,54,0}}, +/* 40385 */ {(12<<2)|2,{104,54,0}}, +/* 40386 */ {(12<<2)|2,{104,54,0}}, +/* 40387 */ {(12<<2)|2,{104,54,0}}, +/* 40388 */ {(12<<2)|2,{104,54,0}}, +/* 40389 */ {(12<<2)|2,{104,54,0}}, +/* 40390 */ {(12<<2)|2,{104,54,0}}, +/* 40391 */ {(12<<2)|2,{104,54,0}}, +/* 40392 */ {(12<<2)|2,{104,54,0}}, +/* 40393 */ {(12<<2)|2,{104,54,0}}, +/* 40394 */ {(12<<2)|2,{104,54,0}}, +/* 40395 */ {(12<<2)|2,{104,54,0}}, +/* 40396 */ {(12<<2)|2,{104,54,0}}, +/* 40397 */ {(12<<2)|2,{104,54,0}}, +/* 40398 */ {(12<<2)|2,{104,54,0}}, +/* 40399 */ {(12<<2)|2,{104,54,0}}, +/* 40400 */ {(12<<2)|2,{104,55,0}}, +/* 40401 */ {(12<<2)|2,{104,55,0}}, +/* 40402 */ {(12<<2)|2,{104,55,0}}, +/* 40403 */ {(12<<2)|2,{104,55,0}}, +/* 40404 */ {(12<<2)|2,{104,55,0}}, +/* 40405 */ {(12<<2)|2,{104,55,0}}, +/* 40406 */ {(12<<2)|2,{104,55,0}}, +/* 40407 */ {(12<<2)|2,{104,55,0}}, +/* 40408 */ {(12<<2)|2,{104,55,0}}, +/* 40409 */ {(12<<2)|2,{104,55,0}}, +/* 40410 */ {(12<<2)|2,{104,55,0}}, +/* 40411 */ {(12<<2)|2,{104,55,0}}, +/* 40412 */ {(12<<2)|2,{104,55,0}}, +/* 40413 */ {(12<<2)|2,{104,55,0}}, +/* 40414 */ {(12<<2)|2,{104,55,0}}, +/* 40415 */ {(12<<2)|2,{104,55,0}}, +/* 40416 */ {(12<<2)|2,{104,56,0}}, +/* 40417 */ {(12<<2)|2,{104,56,0}}, +/* 40418 */ {(12<<2)|2,{104,56,0}}, +/* 40419 */ {(12<<2)|2,{104,56,0}}, +/* 40420 */ {(12<<2)|2,{104,56,0}}, +/* 40421 */ {(12<<2)|2,{104,56,0}}, +/* 40422 */ {(12<<2)|2,{104,56,0}}, +/* 40423 */ {(12<<2)|2,{104,56,0}}, +/* 40424 */ {(12<<2)|2,{104,56,0}}, +/* 40425 */ {(12<<2)|2,{104,56,0}}, +/* 40426 */ {(12<<2)|2,{104,56,0}}, +/* 40427 */ {(12<<2)|2,{104,56,0}}, +/* 40428 */ {(12<<2)|2,{104,56,0}}, +/* 40429 */ {(12<<2)|2,{104,56,0}}, +/* 40430 */ {(12<<2)|2,{104,56,0}}, +/* 40431 */ {(12<<2)|2,{104,56,0}}, +/* 40432 */ {(12<<2)|2,{104,57,0}}, +/* 40433 */ {(12<<2)|2,{104,57,0}}, +/* 40434 */ {(12<<2)|2,{104,57,0}}, +/* 40435 */ {(12<<2)|2,{104,57,0}}, +/* 40436 */ {(12<<2)|2,{104,57,0}}, +/* 40437 */ {(12<<2)|2,{104,57,0}}, +/* 40438 */ {(12<<2)|2,{104,57,0}}, +/* 40439 */ {(12<<2)|2,{104,57,0}}, +/* 40440 */ {(12<<2)|2,{104,57,0}}, +/* 40441 */ {(12<<2)|2,{104,57,0}}, +/* 40442 */ {(12<<2)|2,{104,57,0}}, +/* 40443 */ {(12<<2)|2,{104,57,0}}, +/* 40444 */ {(12<<2)|2,{104,57,0}}, +/* 40445 */ {(12<<2)|2,{104,57,0}}, +/* 40446 */ {(12<<2)|2,{104,57,0}}, +/* 40447 */ {(12<<2)|2,{104,57,0}}, +/* 40448 */ {(12<<2)|2,{104,61,0}}, +/* 40449 */ {(12<<2)|2,{104,61,0}}, +/* 40450 */ {(12<<2)|2,{104,61,0}}, +/* 40451 */ {(12<<2)|2,{104,61,0}}, +/* 40452 */ {(12<<2)|2,{104,61,0}}, +/* 40453 */ {(12<<2)|2,{104,61,0}}, +/* 40454 */ {(12<<2)|2,{104,61,0}}, +/* 40455 */ {(12<<2)|2,{104,61,0}}, +/* 40456 */ {(12<<2)|2,{104,61,0}}, +/* 40457 */ {(12<<2)|2,{104,61,0}}, +/* 40458 */ {(12<<2)|2,{104,61,0}}, +/* 40459 */ {(12<<2)|2,{104,61,0}}, +/* 40460 */ {(12<<2)|2,{104,61,0}}, +/* 40461 */ {(12<<2)|2,{104,61,0}}, +/* 40462 */ {(12<<2)|2,{104,61,0}}, +/* 40463 */ {(12<<2)|2,{104,61,0}}, +/* 40464 */ {(12<<2)|2,{104,65,0}}, +/* 40465 */ {(12<<2)|2,{104,65,0}}, +/* 40466 */ {(12<<2)|2,{104,65,0}}, +/* 40467 */ {(12<<2)|2,{104,65,0}}, +/* 40468 */ {(12<<2)|2,{104,65,0}}, +/* 40469 */ {(12<<2)|2,{104,65,0}}, +/* 40470 */ {(12<<2)|2,{104,65,0}}, +/* 40471 */ {(12<<2)|2,{104,65,0}}, +/* 40472 */ {(12<<2)|2,{104,65,0}}, +/* 40473 */ {(12<<2)|2,{104,65,0}}, +/* 40474 */ {(12<<2)|2,{104,65,0}}, +/* 40475 */ {(12<<2)|2,{104,65,0}}, +/* 40476 */ {(12<<2)|2,{104,65,0}}, +/* 40477 */ {(12<<2)|2,{104,65,0}}, +/* 40478 */ {(12<<2)|2,{104,65,0}}, +/* 40479 */ {(12<<2)|2,{104,65,0}}, +/* 40480 */ {(12<<2)|2,{104,95,0}}, +/* 40481 */ {(12<<2)|2,{104,95,0}}, +/* 40482 */ {(12<<2)|2,{104,95,0}}, +/* 40483 */ {(12<<2)|2,{104,95,0}}, +/* 40484 */ {(12<<2)|2,{104,95,0}}, +/* 40485 */ {(12<<2)|2,{104,95,0}}, +/* 40486 */ {(12<<2)|2,{104,95,0}}, +/* 40487 */ {(12<<2)|2,{104,95,0}}, +/* 40488 */ {(12<<2)|2,{104,95,0}}, +/* 40489 */ {(12<<2)|2,{104,95,0}}, +/* 40490 */ {(12<<2)|2,{104,95,0}}, +/* 40491 */ {(12<<2)|2,{104,95,0}}, +/* 40492 */ {(12<<2)|2,{104,95,0}}, +/* 40493 */ {(12<<2)|2,{104,95,0}}, +/* 40494 */ {(12<<2)|2,{104,95,0}}, +/* 40495 */ {(12<<2)|2,{104,95,0}}, +/* 40496 */ {(12<<2)|2,{104,98,0}}, +/* 40497 */ {(12<<2)|2,{104,98,0}}, +/* 40498 */ {(12<<2)|2,{104,98,0}}, +/* 40499 */ {(12<<2)|2,{104,98,0}}, +/* 40500 */ {(12<<2)|2,{104,98,0}}, +/* 40501 */ {(12<<2)|2,{104,98,0}}, +/* 40502 */ {(12<<2)|2,{104,98,0}}, +/* 40503 */ {(12<<2)|2,{104,98,0}}, +/* 40504 */ {(12<<2)|2,{104,98,0}}, +/* 40505 */ {(12<<2)|2,{104,98,0}}, +/* 40506 */ {(12<<2)|2,{104,98,0}}, +/* 40507 */ {(12<<2)|2,{104,98,0}}, +/* 40508 */ {(12<<2)|2,{104,98,0}}, +/* 40509 */ {(12<<2)|2,{104,98,0}}, +/* 40510 */ {(12<<2)|2,{104,98,0}}, +/* 40511 */ {(12<<2)|2,{104,98,0}}, +/* 40512 */ {(12<<2)|2,{104,100,0}}, +/* 40513 */ {(12<<2)|2,{104,100,0}}, +/* 40514 */ {(12<<2)|2,{104,100,0}}, +/* 40515 */ {(12<<2)|2,{104,100,0}}, +/* 40516 */ {(12<<2)|2,{104,100,0}}, +/* 40517 */ {(12<<2)|2,{104,100,0}}, +/* 40518 */ {(12<<2)|2,{104,100,0}}, +/* 40519 */ {(12<<2)|2,{104,100,0}}, +/* 40520 */ {(12<<2)|2,{104,100,0}}, +/* 40521 */ {(12<<2)|2,{104,100,0}}, +/* 40522 */ {(12<<2)|2,{104,100,0}}, +/* 40523 */ {(12<<2)|2,{104,100,0}}, +/* 40524 */ {(12<<2)|2,{104,100,0}}, +/* 40525 */ {(12<<2)|2,{104,100,0}}, +/* 40526 */ {(12<<2)|2,{104,100,0}}, +/* 40527 */ {(12<<2)|2,{104,100,0}}, +/* 40528 */ {(12<<2)|2,{104,102,0}}, +/* 40529 */ {(12<<2)|2,{104,102,0}}, +/* 40530 */ {(12<<2)|2,{104,102,0}}, +/* 40531 */ {(12<<2)|2,{104,102,0}}, +/* 40532 */ {(12<<2)|2,{104,102,0}}, +/* 40533 */ {(12<<2)|2,{104,102,0}}, +/* 40534 */ {(12<<2)|2,{104,102,0}}, +/* 40535 */ {(12<<2)|2,{104,102,0}}, +/* 40536 */ {(12<<2)|2,{104,102,0}}, +/* 40537 */ {(12<<2)|2,{104,102,0}}, +/* 40538 */ {(12<<2)|2,{104,102,0}}, +/* 40539 */ {(12<<2)|2,{104,102,0}}, +/* 40540 */ {(12<<2)|2,{104,102,0}}, +/* 40541 */ {(12<<2)|2,{104,102,0}}, +/* 40542 */ {(12<<2)|2,{104,102,0}}, +/* 40543 */ {(12<<2)|2,{104,102,0}}, +/* 40544 */ {(12<<2)|2,{104,103,0}}, +/* 40545 */ {(12<<2)|2,{104,103,0}}, +/* 40546 */ {(12<<2)|2,{104,103,0}}, +/* 40547 */ {(12<<2)|2,{104,103,0}}, +/* 40548 */ {(12<<2)|2,{104,103,0}}, +/* 40549 */ {(12<<2)|2,{104,103,0}}, +/* 40550 */ {(12<<2)|2,{104,103,0}}, +/* 40551 */ {(12<<2)|2,{104,103,0}}, +/* 40552 */ {(12<<2)|2,{104,103,0}}, +/* 40553 */ {(12<<2)|2,{104,103,0}}, +/* 40554 */ {(12<<2)|2,{104,103,0}}, +/* 40555 */ {(12<<2)|2,{104,103,0}}, +/* 40556 */ {(12<<2)|2,{104,103,0}}, +/* 40557 */ {(12<<2)|2,{104,103,0}}, +/* 40558 */ {(12<<2)|2,{104,103,0}}, +/* 40559 */ {(12<<2)|2,{104,103,0}}, +/* 40560 */ {(12<<2)|2,{104,104,0}}, +/* 40561 */ {(12<<2)|2,{104,104,0}}, +/* 40562 */ {(12<<2)|2,{104,104,0}}, +/* 40563 */ {(12<<2)|2,{104,104,0}}, +/* 40564 */ {(12<<2)|2,{104,104,0}}, +/* 40565 */ {(12<<2)|2,{104,104,0}}, +/* 40566 */ {(12<<2)|2,{104,104,0}}, +/* 40567 */ {(12<<2)|2,{104,104,0}}, +/* 40568 */ {(12<<2)|2,{104,104,0}}, +/* 40569 */ {(12<<2)|2,{104,104,0}}, +/* 40570 */ {(12<<2)|2,{104,104,0}}, +/* 40571 */ {(12<<2)|2,{104,104,0}}, +/* 40572 */ {(12<<2)|2,{104,104,0}}, +/* 40573 */ {(12<<2)|2,{104,104,0}}, +/* 40574 */ {(12<<2)|2,{104,104,0}}, +/* 40575 */ {(12<<2)|2,{104,104,0}}, +/* 40576 */ {(12<<2)|2,{104,108,0}}, +/* 40577 */ {(12<<2)|2,{104,108,0}}, +/* 40578 */ {(12<<2)|2,{104,108,0}}, +/* 40579 */ {(12<<2)|2,{104,108,0}}, +/* 40580 */ {(12<<2)|2,{104,108,0}}, +/* 40581 */ {(12<<2)|2,{104,108,0}}, +/* 40582 */ {(12<<2)|2,{104,108,0}}, +/* 40583 */ {(12<<2)|2,{104,108,0}}, +/* 40584 */ {(12<<2)|2,{104,108,0}}, +/* 40585 */ {(12<<2)|2,{104,108,0}}, +/* 40586 */ {(12<<2)|2,{104,108,0}}, +/* 40587 */ {(12<<2)|2,{104,108,0}}, +/* 40588 */ {(12<<2)|2,{104,108,0}}, +/* 40589 */ {(12<<2)|2,{104,108,0}}, +/* 40590 */ {(12<<2)|2,{104,108,0}}, +/* 40591 */ {(12<<2)|2,{104,108,0}}, +/* 40592 */ {(12<<2)|2,{104,109,0}}, +/* 40593 */ {(12<<2)|2,{104,109,0}}, +/* 40594 */ {(12<<2)|2,{104,109,0}}, +/* 40595 */ {(12<<2)|2,{104,109,0}}, +/* 40596 */ {(12<<2)|2,{104,109,0}}, +/* 40597 */ {(12<<2)|2,{104,109,0}}, +/* 40598 */ {(12<<2)|2,{104,109,0}}, +/* 40599 */ {(12<<2)|2,{104,109,0}}, +/* 40600 */ {(12<<2)|2,{104,109,0}}, +/* 40601 */ {(12<<2)|2,{104,109,0}}, +/* 40602 */ {(12<<2)|2,{104,109,0}}, +/* 40603 */ {(12<<2)|2,{104,109,0}}, +/* 40604 */ {(12<<2)|2,{104,109,0}}, +/* 40605 */ {(12<<2)|2,{104,109,0}}, +/* 40606 */ {(12<<2)|2,{104,109,0}}, +/* 40607 */ {(12<<2)|2,{104,109,0}}, +/* 40608 */ {(12<<2)|2,{104,110,0}}, +/* 40609 */ {(12<<2)|2,{104,110,0}}, +/* 40610 */ {(12<<2)|2,{104,110,0}}, +/* 40611 */ {(12<<2)|2,{104,110,0}}, +/* 40612 */ {(12<<2)|2,{104,110,0}}, +/* 40613 */ {(12<<2)|2,{104,110,0}}, +/* 40614 */ {(12<<2)|2,{104,110,0}}, +/* 40615 */ {(12<<2)|2,{104,110,0}}, +/* 40616 */ {(12<<2)|2,{104,110,0}}, +/* 40617 */ {(12<<2)|2,{104,110,0}}, +/* 40618 */ {(12<<2)|2,{104,110,0}}, +/* 40619 */ {(12<<2)|2,{104,110,0}}, +/* 40620 */ {(12<<2)|2,{104,110,0}}, +/* 40621 */ {(12<<2)|2,{104,110,0}}, +/* 40622 */ {(12<<2)|2,{104,110,0}}, +/* 40623 */ {(12<<2)|2,{104,110,0}}, +/* 40624 */ {(12<<2)|2,{104,112,0}}, +/* 40625 */ {(12<<2)|2,{104,112,0}}, +/* 40626 */ {(12<<2)|2,{104,112,0}}, +/* 40627 */ {(12<<2)|2,{104,112,0}}, +/* 40628 */ {(12<<2)|2,{104,112,0}}, +/* 40629 */ {(12<<2)|2,{104,112,0}}, +/* 40630 */ {(12<<2)|2,{104,112,0}}, +/* 40631 */ {(12<<2)|2,{104,112,0}}, +/* 40632 */ {(12<<2)|2,{104,112,0}}, +/* 40633 */ {(12<<2)|2,{104,112,0}}, +/* 40634 */ {(12<<2)|2,{104,112,0}}, +/* 40635 */ {(12<<2)|2,{104,112,0}}, +/* 40636 */ {(12<<2)|2,{104,112,0}}, +/* 40637 */ {(12<<2)|2,{104,112,0}}, +/* 40638 */ {(12<<2)|2,{104,112,0}}, +/* 40639 */ {(12<<2)|2,{104,112,0}}, +/* 40640 */ {(12<<2)|2,{104,114,0}}, +/* 40641 */ {(12<<2)|2,{104,114,0}}, +/* 40642 */ {(12<<2)|2,{104,114,0}}, +/* 40643 */ {(12<<2)|2,{104,114,0}}, +/* 40644 */ {(12<<2)|2,{104,114,0}}, +/* 40645 */ {(12<<2)|2,{104,114,0}}, +/* 40646 */ {(12<<2)|2,{104,114,0}}, +/* 40647 */ {(12<<2)|2,{104,114,0}}, +/* 40648 */ {(12<<2)|2,{104,114,0}}, +/* 40649 */ {(12<<2)|2,{104,114,0}}, +/* 40650 */ {(12<<2)|2,{104,114,0}}, +/* 40651 */ {(12<<2)|2,{104,114,0}}, +/* 40652 */ {(12<<2)|2,{104,114,0}}, +/* 40653 */ {(12<<2)|2,{104,114,0}}, +/* 40654 */ {(12<<2)|2,{104,114,0}}, +/* 40655 */ {(12<<2)|2,{104,114,0}}, +/* 40656 */ {(12<<2)|2,{104,117,0}}, +/* 40657 */ {(12<<2)|2,{104,117,0}}, +/* 40658 */ {(12<<2)|2,{104,117,0}}, +/* 40659 */ {(12<<2)|2,{104,117,0}}, +/* 40660 */ {(12<<2)|2,{104,117,0}}, +/* 40661 */ {(12<<2)|2,{104,117,0}}, +/* 40662 */ {(12<<2)|2,{104,117,0}}, +/* 40663 */ {(12<<2)|2,{104,117,0}}, +/* 40664 */ {(12<<2)|2,{104,117,0}}, +/* 40665 */ {(12<<2)|2,{104,117,0}}, +/* 40666 */ {(12<<2)|2,{104,117,0}}, +/* 40667 */ {(12<<2)|2,{104,117,0}}, +/* 40668 */ {(12<<2)|2,{104,117,0}}, +/* 40669 */ {(12<<2)|2,{104,117,0}}, +/* 40670 */ {(12<<2)|2,{104,117,0}}, +/* 40671 */ {(12<<2)|2,{104,117,0}}, +/* 40672 */ {(13<<2)|2,{104,58,0}}, +/* 40673 */ {(13<<2)|2,{104,58,0}}, +/* 40674 */ {(13<<2)|2,{104,58,0}}, +/* 40675 */ {(13<<2)|2,{104,58,0}}, +/* 40676 */ {(13<<2)|2,{104,58,0}}, +/* 40677 */ {(13<<2)|2,{104,58,0}}, +/* 40678 */ {(13<<2)|2,{104,58,0}}, +/* 40679 */ {(13<<2)|2,{104,58,0}}, +/* 40680 */ {(13<<2)|2,{104,66,0}}, +/* 40681 */ {(13<<2)|2,{104,66,0}}, +/* 40682 */ {(13<<2)|2,{104,66,0}}, +/* 40683 */ {(13<<2)|2,{104,66,0}}, +/* 40684 */ {(13<<2)|2,{104,66,0}}, +/* 40685 */ {(13<<2)|2,{104,66,0}}, +/* 40686 */ {(13<<2)|2,{104,66,0}}, +/* 40687 */ {(13<<2)|2,{104,66,0}}, +/* 40688 */ {(13<<2)|2,{104,67,0}}, +/* 40689 */ {(13<<2)|2,{104,67,0}}, +/* 40690 */ {(13<<2)|2,{104,67,0}}, +/* 40691 */ {(13<<2)|2,{104,67,0}}, +/* 40692 */ {(13<<2)|2,{104,67,0}}, +/* 40693 */ {(13<<2)|2,{104,67,0}}, +/* 40694 */ {(13<<2)|2,{104,67,0}}, +/* 40695 */ {(13<<2)|2,{104,67,0}}, +/* 40696 */ {(13<<2)|2,{104,68,0}}, +/* 40697 */ {(13<<2)|2,{104,68,0}}, +/* 40698 */ {(13<<2)|2,{104,68,0}}, +/* 40699 */ {(13<<2)|2,{104,68,0}}, +/* 40700 */ {(13<<2)|2,{104,68,0}}, +/* 40701 */ {(13<<2)|2,{104,68,0}}, +/* 40702 */ {(13<<2)|2,{104,68,0}}, +/* 40703 */ {(13<<2)|2,{104,68,0}}, +/* 40704 */ {(13<<2)|2,{104,69,0}}, +/* 40705 */ {(13<<2)|2,{104,69,0}}, +/* 40706 */ {(13<<2)|2,{104,69,0}}, +/* 40707 */ {(13<<2)|2,{104,69,0}}, +/* 40708 */ {(13<<2)|2,{104,69,0}}, +/* 40709 */ {(13<<2)|2,{104,69,0}}, +/* 40710 */ {(13<<2)|2,{104,69,0}}, +/* 40711 */ {(13<<2)|2,{104,69,0}}, +/* 40712 */ {(13<<2)|2,{104,70,0}}, +/* 40713 */ {(13<<2)|2,{104,70,0}}, +/* 40714 */ {(13<<2)|2,{104,70,0}}, +/* 40715 */ {(13<<2)|2,{104,70,0}}, +/* 40716 */ {(13<<2)|2,{104,70,0}}, +/* 40717 */ {(13<<2)|2,{104,70,0}}, +/* 40718 */ {(13<<2)|2,{104,70,0}}, +/* 40719 */ {(13<<2)|2,{104,70,0}}, +/* 40720 */ {(13<<2)|2,{104,71,0}}, +/* 40721 */ {(13<<2)|2,{104,71,0}}, +/* 40722 */ {(13<<2)|2,{104,71,0}}, +/* 40723 */ {(13<<2)|2,{104,71,0}}, +/* 40724 */ {(13<<2)|2,{104,71,0}}, +/* 40725 */ {(13<<2)|2,{104,71,0}}, +/* 40726 */ {(13<<2)|2,{104,71,0}}, +/* 40727 */ {(13<<2)|2,{104,71,0}}, +/* 40728 */ {(13<<2)|2,{104,72,0}}, +/* 40729 */ {(13<<2)|2,{104,72,0}}, +/* 40730 */ {(13<<2)|2,{104,72,0}}, +/* 40731 */ {(13<<2)|2,{104,72,0}}, +/* 40732 */ {(13<<2)|2,{104,72,0}}, +/* 40733 */ {(13<<2)|2,{104,72,0}}, +/* 40734 */ {(13<<2)|2,{104,72,0}}, +/* 40735 */ {(13<<2)|2,{104,72,0}}, +/* 40736 */ {(13<<2)|2,{104,73,0}}, +/* 40737 */ {(13<<2)|2,{104,73,0}}, +/* 40738 */ {(13<<2)|2,{104,73,0}}, +/* 40739 */ {(13<<2)|2,{104,73,0}}, +/* 40740 */ {(13<<2)|2,{104,73,0}}, +/* 40741 */ {(13<<2)|2,{104,73,0}}, +/* 40742 */ {(13<<2)|2,{104,73,0}}, +/* 40743 */ {(13<<2)|2,{104,73,0}}, +/* 40744 */ {(13<<2)|2,{104,74,0}}, +/* 40745 */ {(13<<2)|2,{104,74,0}}, +/* 40746 */ {(13<<2)|2,{104,74,0}}, +/* 40747 */ {(13<<2)|2,{104,74,0}}, +/* 40748 */ {(13<<2)|2,{104,74,0}}, +/* 40749 */ {(13<<2)|2,{104,74,0}}, +/* 40750 */ {(13<<2)|2,{104,74,0}}, +/* 40751 */ {(13<<2)|2,{104,74,0}}, +/* 40752 */ {(13<<2)|2,{104,75,0}}, +/* 40753 */ {(13<<2)|2,{104,75,0}}, +/* 40754 */ {(13<<2)|2,{104,75,0}}, +/* 40755 */ {(13<<2)|2,{104,75,0}}, +/* 40756 */ {(13<<2)|2,{104,75,0}}, +/* 40757 */ {(13<<2)|2,{104,75,0}}, +/* 40758 */ {(13<<2)|2,{104,75,0}}, +/* 40759 */ {(13<<2)|2,{104,75,0}}, +/* 40760 */ {(13<<2)|2,{104,76,0}}, +/* 40761 */ {(13<<2)|2,{104,76,0}}, +/* 40762 */ {(13<<2)|2,{104,76,0}}, +/* 40763 */ {(13<<2)|2,{104,76,0}}, +/* 40764 */ {(13<<2)|2,{104,76,0}}, +/* 40765 */ {(13<<2)|2,{104,76,0}}, +/* 40766 */ {(13<<2)|2,{104,76,0}}, +/* 40767 */ {(13<<2)|2,{104,76,0}}, +/* 40768 */ {(13<<2)|2,{104,77,0}}, +/* 40769 */ {(13<<2)|2,{104,77,0}}, +/* 40770 */ {(13<<2)|2,{104,77,0}}, +/* 40771 */ {(13<<2)|2,{104,77,0}}, +/* 40772 */ {(13<<2)|2,{104,77,0}}, +/* 40773 */ {(13<<2)|2,{104,77,0}}, +/* 40774 */ {(13<<2)|2,{104,77,0}}, +/* 40775 */ {(13<<2)|2,{104,77,0}}, +/* 40776 */ {(13<<2)|2,{104,78,0}}, +/* 40777 */ {(13<<2)|2,{104,78,0}}, +/* 40778 */ {(13<<2)|2,{104,78,0}}, +/* 40779 */ {(13<<2)|2,{104,78,0}}, +/* 40780 */ {(13<<2)|2,{104,78,0}}, +/* 40781 */ {(13<<2)|2,{104,78,0}}, +/* 40782 */ {(13<<2)|2,{104,78,0}}, +/* 40783 */ {(13<<2)|2,{104,78,0}}, +/* 40784 */ {(13<<2)|2,{104,79,0}}, +/* 40785 */ {(13<<2)|2,{104,79,0}}, +/* 40786 */ {(13<<2)|2,{104,79,0}}, +/* 40787 */ {(13<<2)|2,{104,79,0}}, +/* 40788 */ {(13<<2)|2,{104,79,0}}, +/* 40789 */ {(13<<2)|2,{104,79,0}}, +/* 40790 */ {(13<<2)|2,{104,79,0}}, +/* 40791 */ {(13<<2)|2,{104,79,0}}, +/* 40792 */ {(13<<2)|2,{104,80,0}}, +/* 40793 */ {(13<<2)|2,{104,80,0}}, +/* 40794 */ {(13<<2)|2,{104,80,0}}, +/* 40795 */ {(13<<2)|2,{104,80,0}}, +/* 40796 */ {(13<<2)|2,{104,80,0}}, +/* 40797 */ {(13<<2)|2,{104,80,0}}, +/* 40798 */ {(13<<2)|2,{104,80,0}}, +/* 40799 */ {(13<<2)|2,{104,80,0}}, +/* 40800 */ {(13<<2)|2,{104,81,0}}, +/* 40801 */ {(13<<2)|2,{104,81,0}}, +/* 40802 */ {(13<<2)|2,{104,81,0}}, +/* 40803 */ {(13<<2)|2,{104,81,0}}, +/* 40804 */ {(13<<2)|2,{104,81,0}}, +/* 40805 */ {(13<<2)|2,{104,81,0}}, +/* 40806 */ {(13<<2)|2,{104,81,0}}, +/* 40807 */ {(13<<2)|2,{104,81,0}}, +/* 40808 */ {(13<<2)|2,{104,82,0}}, +/* 40809 */ {(13<<2)|2,{104,82,0}}, +/* 40810 */ {(13<<2)|2,{104,82,0}}, +/* 40811 */ {(13<<2)|2,{104,82,0}}, +/* 40812 */ {(13<<2)|2,{104,82,0}}, +/* 40813 */ {(13<<2)|2,{104,82,0}}, +/* 40814 */ {(13<<2)|2,{104,82,0}}, +/* 40815 */ {(13<<2)|2,{104,82,0}}, +/* 40816 */ {(13<<2)|2,{104,83,0}}, +/* 40817 */ {(13<<2)|2,{104,83,0}}, +/* 40818 */ {(13<<2)|2,{104,83,0}}, +/* 40819 */ {(13<<2)|2,{104,83,0}}, +/* 40820 */ {(13<<2)|2,{104,83,0}}, +/* 40821 */ {(13<<2)|2,{104,83,0}}, +/* 40822 */ {(13<<2)|2,{104,83,0}}, +/* 40823 */ {(13<<2)|2,{104,83,0}}, +/* 40824 */ {(13<<2)|2,{104,84,0}}, +/* 40825 */ {(13<<2)|2,{104,84,0}}, +/* 40826 */ {(13<<2)|2,{104,84,0}}, +/* 40827 */ {(13<<2)|2,{104,84,0}}, +/* 40828 */ {(13<<2)|2,{104,84,0}}, +/* 40829 */ {(13<<2)|2,{104,84,0}}, +/* 40830 */ {(13<<2)|2,{104,84,0}}, +/* 40831 */ {(13<<2)|2,{104,84,0}}, +/* 40832 */ {(13<<2)|2,{104,85,0}}, +/* 40833 */ {(13<<2)|2,{104,85,0}}, +/* 40834 */ {(13<<2)|2,{104,85,0}}, +/* 40835 */ {(13<<2)|2,{104,85,0}}, +/* 40836 */ {(13<<2)|2,{104,85,0}}, +/* 40837 */ {(13<<2)|2,{104,85,0}}, +/* 40838 */ {(13<<2)|2,{104,85,0}}, +/* 40839 */ {(13<<2)|2,{104,85,0}}, +/* 40840 */ {(13<<2)|2,{104,86,0}}, +/* 40841 */ {(13<<2)|2,{104,86,0}}, +/* 40842 */ {(13<<2)|2,{104,86,0}}, +/* 40843 */ {(13<<2)|2,{104,86,0}}, +/* 40844 */ {(13<<2)|2,{104,86,0}}, +/* 40845 */ {(13<<2)|2,{104,86,0}}, +/* 40846 */ {(13<<2)|2,{104,86,0}}, +/* 40847 */ {(13<<2)|2,{104,86,0}}, +/* 40848 */ {(13<<2)|2,{104,87,0}}, +/* 40849 */ {(13<<2)|2,{104,87,0}}, +/* 40850 */ {(13<<2)|2,{104,87,0}}, +/* 40851 */ {(13<<2)|2,{104,87,0}}, +/* 40852 */ {(13<<2)|2,{104,87,0}}, +/* 40853 */ {(13<<2)|2,{104,87,0}}, +/* 40854 */ {(13<<2)|2,{104,87,0}}, +/* 40855 */ {(13<<2)|2,{104,87,0}}, +/* 40856 */ {(13<<2)|2,{104,89,0}}, +/* 40857 */ {(13<<2)|2,{104,89,0}}, +/* 40858 */ {(13<<2)|2,{104,89,0}}, +/* 40859 */ {(13<<2)|2,{104,89,0}}, +/* 40860 */ {(13<<2)|2,{104,89,0}}, +/* 40861 */ {(13<<2)|2,{104,89,0}}, +/* 40862 */ {(13<<2)|2,{104,89,0}}, +/* 40863 */ {(13<<2)|2,{104,89,0}}, +/* 40864 */ {(13<<2)|2,{104,106,0}}, +/* 40865 */ {(13<<2)|2,{104,106,0}}, +/* 40866 */ {(13<<2)|2,{104,106,0}}, +/* 40867 */ {(13<<2)|2,{104,106,0}}, +/* 40868 */ {(13<<2)|2,{104,106,0}}, +/* 40869 */ {(13<<2)|2,{104,106,0}}, +/* 40870 */ {(13<<2)|2,{104,106,0}}, +/* 40871 */ {(13<<2)|2,{104,106,0}}, +/* 40872 */ {(13<<2)|2,{104,107,0}}, +/* 40873 */ {(13<<2)|2,{104,107,0}}, +/* 40874 */ {(13<<2)|2,{104,107,0}}, +/* 40875 */ {(13<<2)|2,{104,107,0}}, +/* 40876 */ {(13<<2)|2,{104,107,0}}, +/* 40877 */ {(13<<2)|2,{104,107,0}}, +/* 40878 */ {(13<<2)|2,{104,107,0}}, +/* 40879 */ {(13<<2)|2,{104,107,0}}, +/* 40880 */ {(13<<2)|2,{104,113,0}}, +/* 40881 */ {(13<<2)|2,{104,113,0}}, +/* 40882 */ {(13<<2)|2,{104,113,0}}, +/* 40883 */ {(13<<2)|2,{104,113,0}}, +/* 40884 */ {(13<<2)|2,{104,113,0}}, +/* 40885 */ {(13<<2)|2,{104,113,0}}, +/* 40886 */ {(13<<2)|2,{104,113,0}}, +/* 40887 */ {(13<<2)|2,{104,113,0}}, +/* 40888 */ {(13<<2)|2,{104,118,0}}, +/* 40889 */ {(13<<2)|2,{104,118,0}}, +/* 40890 */ {(13<<2)|2,{104,118,0}}, +/* 40891 */ {(13<<2)|2,{104,118,0}}, +/* 40892 */ {(13<<2)|2,{104,118,0}}, +/* 40893 */ {(13<<2)|2,{104,118,0}}, +/* 40894 */ {(13<<2)|2,{104,118,0}}, +/* 40895 */ {(13<<2)|2,{104,118,0}}, +/* 40896 */ {(13<<2)|2,{104,119,0}}, +/* 40897 */ {(13<<2)|2,{104,119,0}}, +/* 40898 */ {(13<<2)|2,{104,119,0}}, +/* 40899 */ {(13<<2)|2,{104,119,0}}, +/* 40900 */ {(13<<2)|2,{104,119,0}}, +/* 40901 */ {(13<<2)|2,{104,119,0}}, +/* 40902 */ {(13<<2)|2,{104,119,0}}, +/* 40903 */ {(13<<2)|2,{104,119,0}}, +/* 40904 */ {(13<<2)|2,{104,120,0}}, +/* 40905 */ {(13<<2)|2,{104,120,0}}, +/* 40906 */ {(13<<2)|2,{104,120,0}}, +/* 40907 */ {(13<<2)|2,{104,120,0}}, +/* 40908 */ {(13<<2)|2,{104,120,0}}, +/* 40909 */ {(13<<2)|2,{104,120,0}}, +/* 40910 */ {(13<<2)|2,{104,120,0}}, +/* 40911 */ {(13<<2)|2,{104,120,0}}, +/* 40912 */ {(13<<2)|2,{104,121,0}}, +/* 40913 */ {(13<<2)|2,{104,121,0}}, +/* 40914 */ {(13<<2)|2,{104,121,0}}, +/* 40915 */ {(13<<2)|2,{104,121,0}}, +/* 40916 */ {(13<<2)|2,{104,121,0}}, +/* 40917 */ {(13<<2)|2,{104,121,0}}, +/* 40918 */ {(13<<2)|2,{104,121,0}}, +/* 40919 */ {(13<<2)|2,{104,121,0}}, +/* 40920 */ {(13<<2)|2,{104,122,0}}, +/* 40921 */ {(13<<2)|2,{104,122,0}}, +/* 40922 */ {(13<<2)|2,{104,122,0}}, +/* 40923 */ {(13<<2)|2,{104,122,0}}, +/* 40924 */ {(13<<2)|2,{104,122,0}}, +/* 40925 */ {(13<<2)|2,{104,122,0}}, +/* 40926 */ {(13<<2)|2,{104,122,0}}, +/* 40927 */ {(13<<2)|2,{104,122,0}}, +/* 40928 */ {(14<<2)|2,{104,38,0}}, +/* 40929 */ {(14<<2)|2,{104,38,0}}, +/* 40930 */ {(14<<2)|2,{104,38,0}}, +/* 40931 */ {(14<<2)|2,{104,38,0}}, +/* 40932 */ {(14<<2)|2,{104,42,0}}, +/* 40933 */ {(14<<2)|2,{104,42,0}}, +/* 40934 */ {(14<<2)|2,{104,42,0}}, +/* 40935 */ {(14<<2)|2,{104,42,0}}, +/* 40936 */ {(14<<2)|2,{104,44,0}}, +/* 40937 */ {(14<<2)|2,{104,44,0}}, +/* 40938 */ {(14<<2)|2,{104,44,0}}, +/* 40939 */ {(14<<2)|2,{104,44,0}}, +/* 40940 */ {(14<<2)|2,{104,59,0}}, +/* 40941 */ {(14<<2)|2,{104,59,0}}, +/* 40942 */ {(14<<2)|2,{104,59,0}}, +/* 40943 */ {(14<<2)|2,{104,59,0}}, +/* 40944 */ {(14<<2)|2,{104,88,0}}, +/* 40945 */ {(14<<2)|2,{104,88,0}}, +/* 40946 */ {(14<<2)|2,{104,88,0}}, +/* 40947 */ {(14<<2)|2,{104,88,0}}, +/* 40948 */ {(14<<2)|2,{104,90,0}}, +/* 40949 */ {(14<<2)|2,{104,90,0}}, +/* 40950 */ {(14<<2)|2,{104,90,0}}, +/* 40951 */ {(14<<2)|2,{104,90,0}}, +/* 40952 */ {(16<<2)|2,{104,33,0}}, +/* 40953 */ {(16<<2)|2,{104,34,0}}, +/* 40954 */ {(16<<2)|2,{104,40,0}}, +/* 40955 */ {(16<<2)|2,{104,41,0}}, +/* 40956 */ {(16<<2)|2,{104,63,0}}, +/* 40957 */ {(6<<2)|1,{104,0,0}}, +/* 40958 */ {(6<<2)|1,{104,0,0}}, +/* 40959 */ {(6<<2)|1,{104,0,0}}, +/* 40960 */ {(16<<2)|3,{108,48,48}}, +/* 40961 */ {(16<<2)|3,{108,48,49}}, +/* 40962 */ {(16<<2)|3,{108,48,50}}, +/* 40963 */ {(16<<2)|3,{108,48,97}}, +/* 40964 */ {(16<<2)|3,{108,48,99}}, +/* 40965 */ {(16<<2)|3,{108,48,101}}, +/* 40966 */ {(16<<2)|3,{108,48,105}}, +/* 40967 */ {(16<<2)|3,{108,48,111}}, +/* 40968 */ {(16<<2)|3,{108,48,115}}, +/* 40969 */ {(16<<2)|3,{108,48,116}}, +/* 40970 */ {(11<<2)|2,{108,48,0}}, +/* 40971 */ {(11<<2)|2,{108,48,0}}, +/* 40972 */ {(11<<2)|2,{108,48,0}}, +/* 40973 */ {(11<<2)|2,{108,48,0}}, +/* 40974 */ {(11<<2)|2,{108,48,0}}, +/* 40975 */ {(11<<2)|2,{108,48,0}}, +/* 40976 */ {(11<<2)|2,{108,48,0}}, +/* 40977 */ {(11<<2)|2,{108,48,0}}, +/* 40978 */ {(11<<2)|2,{108,48,0}}, +/* 40979 */ {(11<<2)|2,{108,48,0}}, +/* 40980 */ {(11<<2)|2,{108,48,0}}, +/* 40981 */ {(11<<2)|2,{108,48,0}}, +/* 40982 */ {(11<<2)|2,{108,48,0}}, +/* 40983 */ {(11<<2)|2,{108,48,0}}, +/* 40984 */ {(11<<2)|2,{108,48,0}}, +/* 40985 */ {(11<<2)|2,{108,48,0}}, +/* 40986 */ {(11<<2)|2,{108,48,0}}, +/* 40987 */ {(11<<2)|2,{108,48,0}}, +/* 40988 */ {(11<<2)|2,{108,48,0}}, +/* 40989 */ {(11<<2)|2,{108,48,0}}, +/* 40990 */ {(11<<2)|2,{108,48,0}}, +/* 40991 */ {(11<<2)|2,{108,48,0}}, +/* 40992 */ {(16<<2)|3,{108,49,48}}, +/* 40993 */ {(16<<2)|3,{108,49,49}}, +/* 40994 */ {(16<<2)|3,{108,49,50}}, +/* 40995 */ {(16<<2)|3,{108,49,97}}, +/* 40996 */ {(16<<2)|3,{108,49,99}}, +/* 40997 */ {(16<<2)|3,{108,49,101}}, +/* 40998 */ {(16<<2)|3,{108,49,105}}, +/* 40999 */ {(16<<2)|3,{108,49,111}}, +/* 41000 */ {(16<<2)|3,{108,49,115}}, +/* 41001 */ {(16<<2)|3,{108,49,116}}, +/* 41002 */ {(11<<2)|2,{108,49,0}}, +/* 41003 */ {(11<<2)|2,{108,49,0}}, +/* 41004 */ {(11<<2)|2,{108,49,0}}, +/* 41005 */ {(11<<2)|2,{108,49,0}}, +/* 41006 */ {(11<<2)|2,{108,49,0}}, +/* 41007 */ {(11<<2)|2,{108,49,0}}, +/* 41008 */ {(11<<2)|2,{108,49,0}}, +/* 41009 */ {(11<<2)|2,{108,49,0}}, +/* 41010 */ {(11<<2)|2,{108,49,0}}, +/* 41011 */ {(11<<2)|2,{108,49,0}}, +/* 41012 */ {(11<<2)|2,{108,49,0}}, +/* 41013 */ {(11<<2)|2,{108,49,0}}, +/* 41014 */ {(11<<2)|2,{108,49,0}}, +/* 41015 */ {(11<<2)|2,{108,49,0}}, +/* 41016 */ {(11<<2)|2,{108,49,0}}, +/* 41017 */ {(11<<2)|2,{108,49,0}}, +/* 41018 */ {(11<<2)|2,{108,49,0}}, +/* 41019 */ {(11<<2)|2,{108,49,0}}, +/* 41020 */ {(11<<2)|2,{108,49,0}}, +/* 41021 */ {(11<<2)|2,{108,49,0}}, +/* 41022 */ {(11<<2)|2,{108,49,0}}, +/* 41023 */ {(11<<2)|2,{108,49,0}}, +/* 41024 */ {(16<<2)|3,{108,50,48}}, +/* 41025 */ {(16<<2)|3,{108,50,49}}, +/* 41026 */ {(16<<2)|3,{108,50,50}}, +/* 41027 */ {(16<<2)|3,{108,50,97}}, +/* 41028 */ {(16<<2)|3,{108,50,99}}, +/* 41029 */ {(16<<2)|3,{108,50,101}}, +/* 41030 */ {(16<<2)|3,{108,50,105}}, +/* 41031 */ {(16<<2)|3,{108,50,111}}, +/* 41032 */ {(16<<2)|3,{108,50,115}}, +/* 41033 */ {(16<<2)|3,{108,50,116}}, +/* 41034 */ {(11<<2)|2,{108,50,0}}, +/* 41035 */ {(11<<2)|2,{108,50,0}}, +/* 41036 */ {(11<<2)|2,{108,50,0}}, +/* 41037 */ {(11<<2)|2,{108,50,0}}, +/* 41038 */ {(11<<2)|2,{108,50,0}}, +/* 41039 */ {(11<<2)|2,{108,50,0}}, +/* 41040 */ {(11<<2)|2,{108,50,0}}, +/* 41041 */ {(11<<2)|2,{108,50,0}}, +/* 41042 */ {(11<<2)|2,{108,50,0}}, +/* 41043 */ {(11<<2)|2,{108,50,0}}, +/* 41044 */ {(11<<2)|2,{108,50,0}}, +/* 41045 */ {(11<<2)|2,{108,50,0}}, +/* 41046 */ {(11<<2)|2,{108,50,0}}, +/* 41047 */ {(11<<2)|2,{108,50,0}}, +/* 41048 */ {(11<<2)|2,{108,50,0}}, +/* 41049 */ {(11<<2)|2,{108,50,0}}, +/* 41050 */ {(11<<2)|2,{108,50,0}}, +/* 41051 */ {(11<<2)|2,{108,50,0}}, +/* 41052 */ {(11<<2)|2,{108,50,0}}, +/* 41053 */ {(11<<2)|2,{108,50,0}}, +/* 41054 */ {(11<<2)|2,{108,50,0}}, +/* 41055 */ {(11<<2)|2,{108,50,0}}, +/* 41056 */ {(16<<2)|3,{108,97,48}}, +/* 41057 */ {(16<<2)|3,{108,97,49}}, +/* 41058 */ {(16<<2)|3,{108,97,50}}, +/* 41059 */ {(16<<2)|3,{108,97,97}}, +/* 41060 */ {(16<<2)|3,{108,97,99}}, +/* 41061 */ {(16<<2)|3,{108,97,101}}, +/* 41062 */ {(16<<2)|3,{108,97,105}}, +/* 41063 */ {(16<<2)|3,{108,97,111}}, +/* 41064 */ {(16<<2)|3,{108,97,115}}, +/* 41065 */ {(16<<2)|3,{108,97,116}}, +/* 41066 */ {(11<<2)|2,{108,97,0}}, +/* 41067 */ {(11<<2)|2,{108,97,0}}, +/* 41068 */ {(11<<2)|2,{108,97,0}}, +/* 41069 */ {(11<<2)|2,{108,97,0}}, +/* 41070 */ {(11<<2)|2,{108,97,0}}, +/* 41071 */ {(11<<2)|2,{108,97,0}}, +/* 41072 */ {(11<<2)|2,{108,97,0}}, +/* 41073 */ {(11<<2)|2,{108,97,0}}, +/* 41074 */ {(11<<2)|2,{108,97,0}}, +/* 41075 */ {(11<<2)|2,{108,97,0}}, +/* 41076 */ {(11<<2)|2,{108,97,0}}, +/* 41077 */ {(11<<2)|2,{108,97,0}}, +/* 41078 */ {(11<<2)|2,{108,97,0}}, +/* 41079 */ {(11<<2)|2,{108,97,0}}, +/* 41080 */ {(11<<2)|2,{108,97,0}}, +/* 41081 */ {(11<<2)|2,{108,97,0}}, +/* 41082 */ {(11<<2)|2,{108,97,0}}, +/* 41083 */ {(11<<2)|2,{108,97,0}}, +/* 41084 */ {(11<<2)|2,{108,97,0}}, +/* 41085 */ {(11<<2)|2,{108,97,0}}, +/* 41086 */ {(11<<2)|2,{108,97,0}}, +/* 41087 */ {(11<<2)|2,{108,97,0}}, +/* 41088 */ {(16<<2)|3,{108,99,48}}, +/* 41089 */ {(16<<2)|3,{108,99,49}}, +/* 41090 */ {(16<<2)|3,{108,99,50}}, +/* 41091 */ {(16<<2)|3,{108,99,97}}, +/* 41092 */ {(16<<2)|3,{108,99,99}}, +/* 41093 */ {(16<<2)|3,{108,99,101}}, +/* 41094 */ {(16<<2)|3,{108,99,105}}, +/* 41095 */ {(16<<2)|3,{108,99,111}}, +/* 41096 */ {(16<<2)|3,{108,99,115}}, +/* 41097 */ {(16<<2)|3,{108,99,116}}, +/* 41098 */ {(11<<2)|2,{108,99,0}}, +/* 41099 */ {(11<<2)|2,{108,99,0}}, +/* 41100 */ {(11<<2)|2,{108,99,0}}, +/* 41101 */ {(11<<2)|2,{108,99,0}}, +/* 41102 */ {(11<<2)|2,{108,99,0}}, +/* 41103 */ {(11<<2)|2,{108,99,0}}, +/* 41104 */ {(11<<2)|2,{108,99,0}}, +/* 41105 */ {(11<<2)|2,{108,99,0}}, +/* 41106 */ {(11<<2)|2,{108,99,0}}, +/* 41107 */ {(11<<2)|2,{108,99,0}}, +/* 41108 */ {(11<<2)|2,{108,99,0}}, +/* 41109 */ {(11<<2)|2,{108,99,0}}, +/* 41110 */ {(11<<2)|2,{108,99,0}}, +/* 41111 */ {(11<<2)|2,{108,99,0}}, +/* 41112 */ {(11<<2)|2,{108,99,0}}, +/* 41113 */ {(11<<2)|2,{108,99,0}}, +/* 41114 */ {(11<<2)|2,{108,99,0}}, +/* 41115 */ {(11<<2)|2,{108,99,0}}, +/* 41116 */ {(11<<2)|2,{108,99,0}}, +/* 41117 */ {(11<<2)|2,{108,99,0}}, +/* 41118 */ {(11<<2)|2,{108,99,0}}, +/* 41119 */ {(11<<2)|2,{108,99,0}}, +/* 41120 */ {(16<<2)|3,{108,101,48}}, +/* 41121 */ {(16<<2)|3,{108,101,49}}, +/* 41122 */ {(16<<2)|3,{108,101,50}}, +/* 41123 */ {(16<<2)|3,{108,101,97}}, +/* 41124 */ {(16<<2)|3,{108,101,99}}, +/* 41125 */ {(16<<2)|3,{108,101,101}}, +/* 41126 */ {(16<<2)|3,{108,101,105}}, +/* 41127 */ {(16<<2)|3,{108,101,111}}, +/* 41128 */ {(16<<2)|3,{108,101,115}}, +/* 41129 */ {(16<<2)|3,{108,101,116}}, +/* 41130 */ {(11<<2)|2,{108,101,0}}, +/* 41131 */ {(11<<2)|2,{108,101,0}}, +/* 41132 */ {(11<<2)|2,{108,101,0}}, +/* 41133 */ {(11<<2)|2,{108,101,0}}, +/* 41134 */ {(11<<2)|2,{108,101,0}}, +/* 41135 */ {(11<<2)|2,{108,101,0}}, +/* 41136 */ {(11<<2)|2,{108,101,0}}, +/* 41137 */ {(11<<2)|2,{108,101,0}}, +/* 41138 */ {(11<<2)|2,{108,101,0}}, +/* 41139 */ {(11<<2)|2,{108,101,0}}, +/* 41140 */ {(11<<2)|2,{108,101,0}}, +/* 41141 */ {(11<<2)|2,{108,101,0}}, +/* 41142 */ {(11<<2)|2,{108,101,0}}, +/* 41143 */ {(11<<2)|2,{108,101,0}}, +/* 41144 */ {(11<<2)|2,{108,101,0}}, +/* 41145 */ {(11<<2)|2,{108,101,0}}, +/* 41146 */ {(11<<2)|2,{108,101,0}}, +/* 41147 */ {(11<<2)|2,{108,101,0}}, +/* 41148 */ {(11<<2)|2,{108,101,0}}, +/* 41149 */ {(11<<2)|2,{108,101,0}}, +/* 41150 */ {(11<<2)|2,{108,101,0}}, +/* 41151 */ {(11<<2)|2,{108,101,0}}, +/* 41152 */ {(16<<2)|3,{108,105,48}}, +/* 41153 */ {(16<<2)|3,{108,105,49}}, +/* 41154 */ {(16<<2)|3,{108,105,50}}, +/* 41155 */ {(16<<2)|3,{108,105,97}}, +/* 41156 */ {(16<<2)|3,{108,105,99}}, +/* 41157 */ {(16<<2)|3,{108,105,101}}, +/* 41158 */ {(16<<2)|3,{108,105,105}}, +/* 41159 */ {(16<<2)|3,{108,105,111}}, +/* 41160 */ {(16<<2)|3,{108,105,115}}, +/* 41161 */ {(16<<2)|3,{108,105,116}}, +/* 41162 */ {(11<<2)|2,{108,105,0}}, +/* 41163 */ {(11<<2)|2,{108,105,0}}, +/* 41164 */ {(11<<2)|2,{108,105,0}}, +/* 41165 */ {(11<<2)|2,{108,105,0}}, +/* 41166 */ {(11<<2)|2,{108,105,0}}, +/* 41167 */ {(11<<2)|2,{108,105,0}}, +/* 41168 */ {(11<<2)|2,{108,105,0}}, +/* 41169 */ {(11<<2)|2,{108,105,0}}, +/* 41170 */ {(11<<2)|2,{108,105,0}}, +/* 41171 */ {(11<<2)|2,{108,105,0}}, +/* 41172 */ {(11<<2)|2,{108,105,0}}, +/* 41173 */ {(11<<2)|2,{108,105,0}}, +/* 41174 */ {(11<<2)|2,{108,105,0}}, +/* 41175 */ {(11<<2)|2,{108,105,0}}, +/* 41176 */ {(11<<2)|2,{108,105,0}}, +/* 41177 */ {(11<<2)|2,{108,105,0}}, +/* 41178 */ {(11<<2)|2,{108,105,0}}, +/* 41179 */ {(11<<2)|2,{108,105,0}}, +/* 41180 */ {(11<<2)|2,{108,105,0}}, +/* 41181 */ {(11<<2)|2,{108,105,0}}, +/* 41182 */ {(11<<2)|2,{108,105,0}}, +/* 41183 */ {(11<<2)|2,{108,105,0}}, +/* 41184 */ {(16<<2)|3,{108,111,48}}, +/* 41185 */ {(16<<2)|3,{108,111,49}}, +/* 41186 */ {(16<<2)|3,{108,111,50}}, +/* 41187 */ {(16<<2)|3,{108,111,97}}, +/* 41188 */ {(16<<2)|3,{108,111,99}}, +/* 41189 */ {(16<<2)|3,{108,111,101}}, +/* 41190 */ {(16<<2)|3,{108,111,105}}, +/* 41191 */ {(16<<2)|3,{108,111,111}}, +/* 41192 */ {(16<<2)|3,{108,111,115}}, +/* 41193 */ {(16<<2)|3,{108,111,116}}, +/* 41194 */ {(11<<2)|2,{108,111,0}}, +/* 41195 */ {(11<<2)|2,{108,111,0}}, +/* 41196 */ {(11<<2)|2,{108,111,0}}, +/* 41197 */ {(11<<2)|2,{108,111,0}}, +/* 41198 */ {(11<<2)|2,{108,111,0}}, +/* 41199 */ {(11<<2)|2,{108,111,0}}, +/* 41200 */ {(11<<2)|2,{108,111,0}}, +/* 41201 */ {(11<<2)|2,{108,111,0}}, +/* 41202 */ {(11<<2)|2,{108,111,0}}, +/* 41203 */ {(11<<2)|2,{108,111,0}}, +/* 41204 */ {(11<<2)|2,{108,111,0}}, +/* 41205 */ {(11<<2)|2,{108,111,0}}, +/* 41206 */ {(11<<2)|2,{108,111,0}}, +/* 41207 */ {(11<<2)|2,{108,111,0}}, +/* 41208 */ {(11<<2)|2,{108,111,0}}, +/* 41209 */ {(11<<2)|2,{108,111,0}}, +/* 41210 */ {(11<<2)|2,{108,111,0}}, +/* 41211 */ {(11<<2)|2,{108,111,0}}, +/* 41212 */ {(11<<2)|2,{108,111,0}}, +/* 41213 */ {(11<<2)|2,{108,111,0}}, +/* 41214 */ {(11<<2)|2,{108,111,0}}, +/* 41215 */ {(11<<2)|2,{108,111,0}}, +/* 41216 */ {(16<<2)|3,{108,115,48}}, +/* 41217 */ {(16<<2)|3,{108,115,49}}, +/* 41218 */ {(16<<2)|3,{108,115,50}}, +/* 41219 */ {(16<<2)|3,{108,115,97}}, +/* 41220 */ {(16<<2)|3,{108,115,99}}, +/* 41221 */ {(16<<2)|3,{108,115,101}}, +/* 41222 */ {(16<<2)|3,{108,115,105}}, +/* 41223 */ {(16<<2)|3,{108,115,111}}, +/* 41224 */ {(16<<2)|3,{108,115,115}}, +/* 41225 */ {(16<<2)|3,{108,115,116}}, +/* 41226 */ {(11<<2)|2,{108,115,0}}, +/* 41227 */ {(11<<2)|2,{108,115,0}}, +/* 41228 */ {(11<<2)|2,{108,115,0}}, +/* 41229 */ {(11<<2)|2,{108,115,0}}, +/* 41230 */ {(11<<2)|2,{108,115,0}}, +/* 41231 */ {(11<<2)|2,{108,115,0}}, +/* 41232 */ {(11<<2)|2,{108,115,0}}, +/* 41233 */ {(11<<2)|2,{108,115,0}}, +/* 41234 */ {(11<<2)|2,{108,115,0}}, +/* 41235 */ {(11<<2)|2,{108,115,0}}, +/* 41236 */ {(11<<2)|2,{108,115,0}}, +/* 41237 */ {(11<<2)|2,{108,115,0}}, +/* 41238 */ {(11<<2)|2,{108,115,0}}, +/* 41239 */ {(11<<2)|2,{108,115,0}}, +/* 41240 */ {(11<<2)|2,{108,115,0}}, +/* 41241 */ {(11<<2)|2,{108,115,0}}, +/* 41242 */ {(11<<2)|2,{108,115,0}}, +/* 41243 */ {(11<<2)|2,{108,115,0}}, +/* 41244 */ {(11<<2)|2,{108,115,0}}, +/* 41245 */ {(11<<2)|2,{108,115,0}}, +/* 41246 */ {(11<<2)|2,{108,115,0}}, +/* 41247 */ {(11<<2)|2,{108,115,0}}, +/* 41248 */ {(16<<2)|3,{108,116,48}}, +/* 41249 */ {(16<<2)|3,{108,116,49}}, +/* 41250 */ {(16<<2)|3,{108,116,50}}, +/* 41251 */ {(16<<2)|3,{108,116,97}}, +/* 41252 */ {(16<<2)|3,{108,116,99}}, +/* 41253 */ {(16<<2)|3,{108,116,101}}, +/* 41254 */ {(16<<2)|3,{108,116,105}}, +/* 41255 */ {(16<<2)|3,{108,116,111}}, +/* 41256 */ {(16<<2)|3,{108,116,115}}, +/* 41257 */ {(16<<2)|3,{108,116,116}}, +/* 41258 */ {(11<<2)|2,{108,116,0}}, +/* 41259 */ {(11<<2)|2,{108,116,0}}, +/* 41260 */ {(11<<2)|2,{108,116,0}}, +/* 41261 */ {(11<<2)|2,{108,116,0}}, +/* 41262 */ {(11<<2)|2,{108,116,0}}, +/* 41263 */ {(11<<2)|2,{108,116,0}}, +/* 41264 */ {(11<<2)|2,{108,116,0}}, +/* 41265 */ {(11<<2)|2,{108,116,0}}, +/* 41266 */ {(11<<2)|2,{108,116,0}}, +/* 41267 */ {(11<<2)|2,{108,116,0}}, +/* 41268 */ {(11<<2)|2,{108,116,0}}, +/* 41269 */ {(11<<2)|2,{108,116,0}}, +/* 41270 */ {(11<<2)|2,{108,116,0}}, +/* 41271 */ {(11<<2)|2,{108,116,0}}, +/* 41272 */ {(11<<2)|2,{108,116,0}}, +/* 41273 */ {(11<<2)|2,{108,116,0}}, +/* 41274 */ {(11<<2)|2,{108,116,0}}, +/* 41275 */ {(11<<2)|2,{108,116,0}}, +/* 41276 */ {(11<<2)|2,{108,116,0}}, +/* 41277 */ {(11<<2)|2,{108,116,0}}, +/* 41278 */ {(11<<2)|2,{108,116,0}}, +/* 41279 */ {(11<<2)|2,{108,116,0}}, +/* 41280 */ {(12<<2)|2,{108,32,0}}, +/* 41281 */ {(12<<2)|2,{108,32,0}}, +/* 41282 */ {(12<<2)|2,{108,32,0}}, +/* 41283 */ {(12<<2)|2,{108,32,0}}, +/* 41284 */ {(12<<2)|2,{108,32,0}}, +/* 41285 */ {(12<<2)|2,{108,32,0}}, +/* 41286 */ {(12<<2)|2,{108,32,0}}, +/* 41287 */ {(12<<2)|2,{108,32,0}}, +/* 41288 */ {(12<<2)|2,{108,32,0}}, +/* 41289 */ {(12<<2)|2,{108,32,0}}, +/* 41290 */ {(12<<2)|2,{108,32,0}}, +/* 41291 */ {(12<<2)|2,{108,32,0}}, +/* 41292 */ {(12<<2)|2,{108,32,0}}, +/* 41293 */ {(12<<2)|2,{108,32,0}}, +/* 41294 */ {(12<<2)|2,{108,32,0}}, +/* 41295 */ {(12<<2)|2,{108,32,0}}, +/* 41296 */ {(12<<2)|2,{108,37,0}}, +/* 41297 */ {(12<<2)|2,{108,37,0}}, +/* 41298 */ {(12<<2)|2,{108,37,0}}, +/* 41299 */ {(12<<2)|2,{108,37,0}}, +/* 41300 */ {(12<<2)|2,{108,37,0}}, +/* 41301 */ {(12<<2)|2,{108,37,0}}, +/* 41302 */ {(12<<2)|2,{108,37,0}}, +/* 41303 */ {(12<<2)|2,{108,37,0}}, +/* 41304 */ {(12<<2)|2,{108,37,0}}, +/* 41305 */ {(12<<2)|2,{108,37,0}}, +/* 41306 */ {(12<<2)|2,{108,37,0}}, +/* 41307 */ {(12<<2)|2,{108,37,0}}, +/* 41308 */ {(12<<2)|2,{108,37,0}}, +/* 41309 */ {(12<<2)|2,{108,37,0}}, +/* 41310 */ {(12<<2)|2,{108,37,0}}, +/* 41311 */ {(12<<2)|2,{108,37,0}}, +/* 41312 */ {(12<<2)|2,{108,45,0}}, +/* 41313 */ {(12<<2)|2,{108,45,0}}, +/* 41314 */ {(12<<2)|2,{108,45,0}}, +/* 41315 */ {(12<<2)|2,{108,45,0}}, +/* 41316 */ {(12<<2)|2,{108,45,0}}, +/* 41317 */ {(12<<2)|2,{108,45,0}}, +/* 41318 */ {(12<<2)|2,{108,45,0}}, +/* 41319 */ {(12<<2)|2,{108,45,0}}, +/* 41320 */ {(12<<2)|2,{108,45,0}}, +/* 41321 */ {(12<<2)|2,{108,45,0}}, +/* 41322 */ {(12<<2)|2,{108,45,0}}, +/* 41323 */ {(12<<2)|2,{108,45,0}}, +/* 41324 */ {(12<<2)|2,{108,45,0}}, +/* 41325 */ {(12<<2)|2,{108,45,0}}, +/* 41326 */ {(12<<2)|2,{108,45,0}}, +/* 41327 */ {(12<<2)|2,{108,45,0}}, +/* 41328 */ {(12<<2)|2,{108,46,0}}, +/* 41329 */ {(12<<2)|2,{108,46,0}}, +/* 41330 */ {(12<<2)|2,{108,46,0}}, +/* 41331 */ {(12<<2)|2,{108,46,0}}, +/* 41332 */ {(12<<2)|2,{108,46,0}}, +/* 41333 */ {(12<<2)|2,{108,46,0}}, +/* 41334 */ {(12<<2)|2,{108,46,0}}, +/* 41335 */ {(12<<2)|2,{108,46,0}}, +/* 41336 */ {(12<<2)|2,{108,46,0}}, +/* 41337 */ {(12<<2)|2,{108,46,0}}, +/* 41338 */ {(12<<2)|2,{108,46,0}}, +/* 41339 */ {(12<<2)|2,{108,46,0}}, +/* 41340 */ {(12<<2)|2,{108,46,0}}, +/* 41341 */ {(12<<2)|2,{108,46,0}}, +/* 41342 */ {(12<<2)|2,{108,46,0}}, +/* 41343 */ {(12<<2)|2,{108,46,0}}, +/* 41344 */ {(12<<2)|2,{108,47,0}}, +/* 41345 */ {(12<<2)|2,{108,47,0}}, +/* 41346 */ {(12<<2)|2,{108,47,0}}, +/* 41347 */ {(12<<2)|2,{108,47,0}}, +/* 41348 */ {(12<<2)|2,{108,47,0}}, +/* 41349 */ {(12<<2)|2,{108,47,0}}, +/* 41350 */ {(12<<2)|2,{108,47,0}}, +/* 41351 */ {(12<<2)|2,{108,47,0}}, +/* 41352 */ {(12<<2)|2,{108,47,0}}, +/* 41353 */ {(12<<2)|2,{108,47,0}}, +/* 41354 */ {(12<<2)|2,{108,47,0}}, +/* 41355 */ {(12<<2)|2,{108,47,0}}, +/* 41356 */ {(12<<2)|2,{108,47,0}}, +/* 41357 */ {(12<<2)|2,{108,47,0}}, +/* 41358 */ {(12<<2)|2,{108,47,0}}, +/* 41359 */ {(12<<2)|2,{108,47,0}}, +/* 41360 */ {(12<<2)|2,{108,51,0}}, +/* 41361 */ {(12<<2)|2,{108,51,0}}, +/* 41362 */ {(12<<2)|2,{108,51,0}}, +/* 41363 */ {(12<<2)|2,{108,51,0}}, +/* 41364 */ {(12<<2)|2,{108,51,0}}, +/* 41365 */ {(12<<2)|2,{108,51,0}}, +/* 41366 */ {(12<<2)|2,{108,51,0}}, +/* 41367 */ {(12<<2)|2,{108,51,0}}, +/* 41368 */ {(12<<2)|2,{108,51,0}}, +/* 41369 */ {(12<<2)|2,{108,51,0}}, +/* 41370 */ {(12<<2)|2,{108,51,0}}, +/* 41371 */ {(12<<2)|2,{108,51,0}}, +/* 41372 */ {(12<<2)|2,{108,51,0}}, +/* 41373 */ {(12<<2)|2,{108,51,0}}, +/* 41374 */ {(12<<2)|2,{108,51,0}}, +/* 41375 */ {(12<<2)|2,{108,51,0}}, +/* 41376 */ {(12<<2)|2,{108,52,0}}, +/* 41377 */ {(12<<2)|2,{108,52,0}}, +/* 41378 */ {(12<<2)|2,{108,52,0}}, +/* 41379 */ {(12<<2)|2,{108,52,0}}, +/* 41380 */ {(12<<2)|2,{108,52,0}}, +/* 41381 */ {(12<<2)|2,{108,52,0}}, +/* 41382 */ {(12<<2)|2,{108,52,0}}, +/* 41383 */ {(12<<2)|2,{108,52,0}}, +/* 41384 */ {(12<<2)|2,{108,52,0}}, +/* 41385 */ {(12<<2)|2,{108,52,0}}, +/* 41386 */ {(12<<2)|2,{108,52,0}}, +/* 41387 */ {(12<<2)|2,{108,52,0}}, +/* 41388 */ {(12<<2)|2,{108,52,0}}, +/* 41389 */ {(12<<2)|2,{108,52,0}}, +/* 41390 */ {(12<<2)|2,{108,52,0}}, +/* 41391 */ {(12<<2)|2,{108,52,0}}, +/* 41392 */ {(12<<2)|2,{108,53,0}}, +/* 41393 */ {(12<<2)|2,{108,53,0}}, +/* 41394 */ {(12<<2)|2,{108,53,0}}, +/* 41395 */ {(12<<2)|2,{108,53,0}}, +/* 41396 */ {(12<<2)|2,{108,53,0}}, +/* 41397 */ {(12<<2)|2,{108,53,0}}, +/* 41398 */ {(12<<2)|2,{108,53,0}}, +/* 41399 */ {(12<<2)|2,{108,53,0}}, +/* 41400 */ {(12<<2)|2,{108,53,0}}, +/* 41401 */ {(12<<2)|2,{108,53,0}}, +/* 41402 */ {(12<<2)|2,{108,53,0}}, +/* 41403 */ {(12<<2)|2,{108,53,0}}, +/* 41404 */ {(12<<2)|2,{108,53,0}}, +/* 41405 */ {(12<<2)|2,{108,53,0}}, +/* 41406 */ {(12<<2)|2,{108,53,0}}, +/* 41407 */ {(12<<2)|2,{108,53,0}}, +/* 41408 */ {(12<<2)|2,{108,54,0}}, +/* 41409 */ {(12<<2)|2,{108,54,0}}, +/* 41410 */ {(12<<2)|2,{108,54,0}}, +/* 41411 */ {(12<<2)|2,{108,54,0}}, +/* 41412 */ {(12<<2)|2,{108,54,0}}, +/* 41413 */ {(12<<2)|2,{108,54,0}}, +/* 41414 */ {(12<<2)|2,{108,54,0}}, +/* 41415 */ {(12<<2)|2,{108,54,0}}, +/* 41416 */ {(12<<2)|2,{108,54,0}}, +/* 41417 */ {(12<<2)|2,{108,54,0}}, +/* 41418 */ {(12<<2)|2,{108,54,0}}, +/* 41419 */ {(12<<2)|2,{108,54,0}}, +/* 41420 */ {(12<<2)|2,{108,54,0}}, +/* 41421 */ {(12<<2)|2,{108,54,0}}, +/* 41422 */ {(12<<2)|2,{108,54,0}}, +/* 41423 */ {(12<<2)|2,{108,54,0}}, +/* 41424 */ {(12<<2)|2,{108,55,0}}, +/* 41425 */ {(12<<2)|2,{108,55,0}}, +/* 41426 */ {(12<<2)|2,{108,55,0}}, +/* 41427 */ {(12<<2)|2,{108,55,0}}, +/* 41428 */ {(12<<2)|2,{108,55,0}}, +/* 41429 */ {(12<<2)|2,{108,55,0}}, +/* 41430 */ {(12<<2)|2,{108,55,0}}, +/* 41431 */ {(12<<2)|2,{108,55,0}}, +/* 41432 */ {(12<<2)|2,{108,55,0}}, +/* 41433 */ {(12<<2)|2,{108,55,0}}, +/* 41434 */ {(12<<2)|2,{108,55,0}}, +/* 41435 */ {(12<<2)|2,{108,55,0}}, +/* 41436 */ {(12<<2)|2,{108,55,0}}, +/* 41437 */ {(12<<2)|2,{108,55,0}}, +/* 41438 */ {(12<<2)|2,{108,55,0}}, +/* 41439 */ {(12<<2)|2,{108,55,0}}, +/* 41440 */ {(12<<2)|2,{108,56,0}}, +/* 41441 */ {(12<<2)|2,{108,56,0}}, +/* 41442 */ {(12<<2)|2,{108,56,0}}, +/* 41443 */ {(12<<2)|2,{108,56,0}}, +/* 41444 */ {(12<<2)|2,{108,56,0}}, +/* 41445 */ {(12<<2)|2,{108,56,0}}, +/* 41446 */ {(12<<2)|2,{108,56,0}}, +/* 41447 */ {(12<<2)|2,{108,56,0}}, +/* 41448 */ {(12<<2)|2,{108,56,0}}, +/* 41449 */ {(12<<2)|2,{108,56,0}}, +/* 41450 */ {(12<<2)|2,{108,56,0}}, +/* 41451 */ {(12<<2)|2,{108,56,0}}, +/* 41452 */ {(12<<2)|2,{108,56,0}}, +/* 41453 */ {(12<<2)|2,{108,56,0}}, +/* 41454 */ {(12<<2)|2,{108,56,0}}, +/* 41455 */ {(12<<2)|2,{108,56,0}}, +/* 41456 */ {(12<<2)|2,{108,57,0}}, +/* 41457 */ {(12<<2)|2,{108,57,0}}, +/* 41458 */ {(12<<2)|2,{108,57,0}}, +/* 41459 */ {(12<<2)|2,{108,57,0}}, +/* 41460 */ {(12<<2)|2,{108,57,0}}, +/* 41461 */ {(12<<2)|2,{108,57,0}}, +/* 41462 */ {(12<<2)|2,{108,57,0}}, +/* 41463 */ {(12<<2)|2,{108,57,0}}, +/* 41464 */ {(12<<2)|2,{108,57,0}}, +/* 41465 */ {(12<<2)|2,{108,57,0}}, +/* 41466 */ {(12<<2)|2,{108,57,0}}, +/* 41467 */ {(12<<2)|2,{108,57,0}}, +/* 41468 */ {(12<<2)|2,{108,57,0}}, +/* 41469 */ {(12<<2)|2,{108,57,0}}, +/* 41470 */ {(12<<2)|2,{108,57,0}}, +/* 41471 */ {(12<<2)|2,{108,57,0}}, +/* 41472 */ {(12<<2)|2,{108,61,0}}, +/* 41473 */ {(12<<2)|2,{108,61,0}}, +/* 41474 */ {(12<<2)|2,{108,61,0}}, +/* 41475 */ {(12<<2)|2,{108,61,0}}, +/* 41476 */ {(12<<2)|2,{108,61,0}}, +/* 41477 */ {(12<<2)|2,{108,61,0}}, +/* 41478 */ {(12<<2)|2,{108,61,0}}, +/* 41479 */ {(12<<2)|2,{108,61,0}}, +/* 41480 */ {(12<<2)|2,{108,61,0}}, +/* 41481 */ {(12<<2)|2,{108,61,0}}, +/* 41482 */ {(12<<2)|2,{108,61,0}}, +/* 41483 */ {(12<<2)|2,{108,61,0}}, +/* 41484 */ {(12<<2)|2,{108,61,0}}, +/* 41485 */ {(12<<2)|2,{108,61,0}}, +/* 41486 */ {(12<<2)|2,{108,61,0}}, +/* 41487 */ {(12<<2)|2,{108,61,0}}, +/* 41488 */ {(12<<2)|2,{108,65,0}}, +/* 41489 */ {(12<<2)|2,{108,65,0}}, +/* 41490 */ {(12<<2)|2,{108,65,0}}, +/* 41491 */ {(12<<2)|2,{108,65,0}}, +/* 41492 */ {(12<<2)|2,{108,65,0}}, +/* 41493 */ {(12<<2)|2,{108,65,0}}, +/* 41494 */ {(12<<2)|2,{108,65,0}}, +/* 41495 */ {(12<<2)|2,{108,65,0}}, +/* 41496 */ {(12<<2)|2,{108,65,0}}, +/* 41497 */ {(12<<2)|2,{108,65,0}}, +/* 41498 */ {(12<<2)|2,{108,65,0}}, +/* 41499 */ {(12<<2)|2,{108,65,0}}, +/* 41500 */ {(12<<2)|2,{108,65,0}}, +/* 41501 */ {(12<<2)|2,{108,65,0}}, +/* 41502 */ {(12<<2)|2,{108,65,0}}, +/* 41503 */ {(12<<2)|2,{108,65,0}}, +/* 41504 */ {(12<<2)|2,{108,95,0}}, +/* 41505 */ {(12<<2)|2,{108,95,0}}, +/* 41506 */ {(12<<2)|2,{108,95,0}}, +/* 41507 */ {(12<<2)|2,{108,95,0}}, +/* 41508 */ {(12<<2)|2,{108,95,0}}, +/* 41509 */ {(12<<2)|2,{108,95,0}}, +/* 41510 */ {(12<<2)|2,{108,95,0}}, +/* 41511 */ {(12<<2)|2,{108,95,0}}, +/* 41512 */ {(12<<2)|2,{108,95,0}}, +/* 41513 */ {(12<<2)|2,{108,95,0}}, +/* 41514 */ {(12<<2)|2,{108,95,0}}, +/* 41515 */ {(12<<2)|2,{108,95,0}}, +/* 41516 */ {(12<<2)|2,{108,95,0}}, +/* 41517 */ {(12<<2)|2,{108,95,0}}, +/* 41518 */ {(12<<2)|2,{108,95,0}}, +/* 41519 */ {(12<<2)|2,{108,95,0}}, +/* 41520 */ {(12<<2)|2,{108,98,0}}, +/* 41521 */ {(12<<2)|2,{108,98,0}}, +/* 41522 */ {(12<<2)|2,{108,98,0}}, +/* 41523 */ {(12<<2)|2,{108,98,0}}, +/* 41524 */ {(12<<2)|2,{108,98,0}}, +/* 41525 */ {(12<<2)|2,{108,98,0}}, +/* 41526 */ {(12<<2)|2,{108,98,0}}, +/* 41527 */ {(12<<2)|2,{108,98,0}}, +/* 41528 */ {(12<<2)|2,{108,98,0}}, +/* 41529 */ {(12<<2)|2,{108,98,0}}, +/* 41530 */ {(12<<2)|2,{108,98,0}}, +/* 41531 */ {(12<<2)|2,{108,98,0}}, +/* 41532 */ {(12<<2)|2,{108,98,0}}, +/* 41533 */ {(12<<2)|2,{108,98,0}}, +/* 41534 */ {(12<<2)|2,{108,98,0}}, +/* 41535 */ {(12<<2)|2,{108,98,0}}, +/* 41536 */ {(12<<2)|2,{108,100,0}}, +/* 41537 */ {(12<<2)|2,{108,100,0}}, +/* 41538 */ {(12<<2)|2,{108,100,0}}, +/* 41539 */ {(12<<2)|2,{108,100,0}}, +/* 41540 */ {(12<<2)|2,{108,100,0}}, +/* 41541 */ {(12<<2)|2,{108,100,0}}, +/* 41542 */ {(12<<2)|2,{108,100,0}}, +/* 41543 */ {(12<<2)|2,{108,100,0}}, +/* 41544 */ {(12<<2)|2,{108,100,0}}, +/* 41545 */ {(12<<2)|2,{108,100,0}}, +/* 41546 */ {(12<<2)|2,{108,100,0}}, +/* 41547 */ {(12<<2)|2,{108,100,0}}, +/* 41548 */ {(12<<2)|2,{108,100,0}}, +/* 41549 */ {(12<<2)|2,{108,100,0}}, +/* 41550 */ {(12<<2)|2,{108,100,0}}, +/* 41551 */ {(12<<2)|2,{108,100,0}}, +/* 41552 */ {(12<<2)|2,{108,102,0}}, +/* 41553 */ {(12<<2)|2,{108,102,0}}, +/* 41554 */ {(12<<2)|2,{108,102,0}}, +/* 41555 */ {(12<<2)|2,{108,102,0}}, +/* 41556 */ {(12<<2)|2,{108,102,0}}, +/* 41557 */ {(12<<2)|2,{108,102,0}}, +/* 41558 */ {(12<<2)|2,{108,102,0}}, +/* 41559 */ {(12<<2)|2,{108,102,0}}, +/* 41560 */ {(12<<2)|2,{108,102,0}}, +/* 41561 */ {(12<<2)|2,{108,102,0}}, +/* 41562 */ {(12<<2)|2,{108,102,0}}, +/* 41563 */ {(12<<2)|2,{108,102,0}}, +/* 41564 */ {(12<<2)|2,{108,102,0}}, +/* 41565 */ {(12<<2)|2,{108,102,0}}, +/* 41566 */ {(12<<2)|2,{108,102,0}}, +/* 41567 */ {(12<<2)|2,{108,102,0}}, +/* 41568 */ {(12<<2)|2,{108,103,0}}, +/* 41569 */ {(12<<2)|2,{108,103,0}}, +/* 41570 */ {(12<<2)|2,{108,103,0}}, +/* 41571 */ {(12<<2)|2,{108,103,0}}, +/* 41572 */ {(12<<2)|2,{108,103,0}}, +/* 41573 */ {(12<<2)|2,{108,103,0}}, +/* 41574 */ {(12<<2)|2,{108,103,0}}, +/* 41575 */ {(12<<2)|2,{108,103,0}}, +/* 41576 */ {(12<<2)|2,{108,103,0}}, +/* 41577 */ {(12<<2)|2,{108,103,0}}, +/* 41578 */ {(12<<2)|2,{108,103,0}}, +/* 41579 */ {(12<<2)|2,{108,103,0}}, +/* 41580 */ {(12<<2)|2,{108,103,0}}, +/* 41581 */ {(12<<2)|2,{108,103,0}}, +/* 41582 */ {(12<<2)|2,{108,103,0}}, +/* 41583 */ {(12<<2)|2,{108,103,0}}, +/* 41584 */ {(12<<2)|2,{108,104,0}}, +/* 41585 */ {(12<<2)|2,{108,104,0}}, +/* 41586 */ {(12<<2)|2,{108,104,0}}, +/* 41587 */ {(12<<2)|2,{108,104,0}}, +/* 41588 */ {(12<<2)|2,{108,104,0}}, +/* 41589 */ {(12<<2)|2,{108,104,0}}, +/* 41590 */ {(12<<2)|2,{108,104,0}}, +/* 41591 */ {(12<<2)|2,{108,104,0}}, +/* 41592 */ {(12<<2)|2,{108,104,0}}, +/* 41593 */ {(12<<2)|2,{108,104,0}}, +/* 41594 */ {(12<<2)|2,{108,104,0}}, +/* 41595 */ {(12<<2)|2,{108,104,0}}, +/* 41596 */ {(12<<2)|2,{108,104,0}}, +/* 41597 */ {(12<<2)|2,{108,104,0}}, +/* 41598 */ {(12<<2)|2,{108,104,0}}, +/* 41599 */ {(12<<2)|2,{108,104,0}}, +/* 41600 */ {(12<<2)|2,{108,108,0}}, +/* 41601 */ {(12<<2)|2,{108,108,0}}, +/* 41602 */ {(12<<2)|2,{108,108,0}}, +/* 41603 */ {(12<<2)|2,{108,108,0}}, +/* 41604 */ {(12<<2)|2,{108,108,0}}, +/* 41605 */ {(12<<2)|2,{108,108,0}}, +/* 41606 */ {(12<<2)|2,{108,108,0}}, +/* 41607 */ {(12<<2)|2,{108,108,0}}, +/* 41608 */ {(12<<2)|2,{108,108,0}}, +/* 41609 */ {(12<<2)|2,{108,108,0}}, +/* 41610 */ {(12<<2)|2,{108,108,0}}, +/* 41611 */ {(12<<2)|2,{108,108,0}}, +/* 41612 */ {(12<<2)|2,{108,108,0}}, +/* 41613 */ {(12<<2)|2,{108,108,0}}, +/* 41614 */ {(12<<2)|2,{108,108,0}}, +/* 41615 */ {(12<<2)|2,{108,108,0}}, +/* 41616 */ {(12<<2)|2,{108,109,0}}, +/* 41617 */ {(12<<2)|2,{108,109,0}}, +/* 41618 */ {(12<<2)|2,{108,109,0}}, +/* 41619 */ {(12<<2)|2,{108,109,0}}, +/* 41620 */ {(12<<2)|2,{108,109,0}}, +/* 41621 */ {(12<<2)|2,{108,109,0}}, +/* 41622 */ {(12<<2)|2,{108,109,0}}, +/* 41623 */ {(12<<2)|2,{108,109,0}}, +/* 41624 */ {(12<<2)|2,{108,109,0}}, +/* 41625 */ {(12<<2)|2,{108,109,0}}, +/* 41626 */ {(12<<2)|2,{108,109,0}}, +/* 41627 */ {(12<<2)|2,{108,109,0}}, +/* 41628 */ {(12<<2)|2,{108,109,0}}, +/* 41629 */ {(12<<2)|2,{108,109,0}}, +/* 41630 */ {(12<<2)|2,{108,109,0}}, +/* 41631 */ {(12<<2)|2,{108,109,0}}, +/* 41632 */ {(12<<2)|2,{108,110,0}}, +/* 41633 */ {(12<<2)|2,{108,110,0}}, +/* 41634 */ {(12<<2)|2,{108,110,0}}, +/* 41635 */ {(12<<2)|2,{108,110,0}}, +/* 41636 */ {(12<<2)|2,{108,110,0}}, +/* 41637 */ {(12<<2)|2,{108,110,0}}, +/* 41638 */ {(12<<2)|2,{108,110,0}}, +/* 41639 */ {(12<<2)|2,{108,110,0}}, +/* 41640 */ {(12<<2)|2,{108,110,0}}, +/* 41641 */ {(12<<2)|2,{108,110,0}}, +/* 41642 */ {(12<<2)|2,{108,110,0}}, +/* 41643 */ {(12<<2)|2,{108,110,0}}, +/* 41644 */ {(12<<2)|2,{108,110,0}}, +/* 41645 */ {(12<<2)|2,{108,110,0}}, +/* 41646 */ {(12<<2)|2,{108,110,0}}, +/* 41647 */ {(12<<2)|2,{108,110,0}}, +/* 41648 */ {(12<<2)|2,{108,112,0}}, +/* 41649 */ {(12<<2)|2,{108,112,0}}, +/* 41650 */ {(12<<2)|2,{108,112,0}}, +/* 41651 */ {(12<<2)|2,{108,112,0}}, +/* 41652 */ {(12<<2)|2,{108,112,0}}, +/* 41653 */ {(12<<2)|2,{108,112,0}}, +/* 41654 */ {(12<<2)|2,{108,112,0}}, +/* 41655 */ {(12<<2)|2,{108,112,0}}, +/* 41656 */ {(12<<2)|2,{108,112,0}}, +/* 41657 */ {(12<<2)|2,{108,112,0}}, +/* 41658 */ {(12<<2)|2,{108,112,0}}, +/* 41659 */ {(12<<2)|2,{108,112,0}}, +/* 41660 */ {(12<<2)|2,{108,112,0}}, +/* 41661 */ {(12<<2)|2,{108,112,0}}, +/* 41662 */ {(12<<2)|2,{108,112,0}}, +/* 41663 */ {(12<<2)|2,{108,112,0}}, +/* 41664 */ {(12<<2)|2,{108,114,0}}, +/* 41665 */ {(12<<2)|2,{108,114,0}}, +/* 41666 */ {(12<<2)|2,{108,114,0}}, +/* 41667 */ {(12<<2)|2,{108,114,0}}, +/* 41668 */ {(12<<2)|2,{108,114,0}}, +/* 41669 */ {(12<<2)|2,{108,114,0}}, +/* 41670 */ {(12<<2)|2,{108,114,0}}, +/* 41671 */ {(12<<2)|2,{108,114,0}}, +/* 41672 */ {(12<<2)|2,{108,114,0}}, +/* 41673 */ {(12<<2)|2,{108,114,0}}, +/* 41674 */ {(12<<2)|2,{108,114,0}}, +/* 41675 */ {(12<<2)|2,{108,114,0}}, +/* 41676 */ {(12<<2)|2,{108,114,0}}, +/* 41677 */ {(12<<2)|2,{108,114,0}}, +/* 41678 */ {(12<<2)|2,{108,114,0}}, +/* 41679 */ {(12<<2)|2,{108,114,0}}, +/* 41680 */ {(12<<2)|2,{108,117,0}}, +/* 41681 */ {(12<<2)|2,{108,117,0}}, +/* 41682 */ {(12<<2)|2,{108,117,0}}, +/* 41683 */ {(12<<2)|2,{108,117,0}}, +/* 41684 */ {(12<<2)|2,{108,117,0}}, +/* 41685 */ {(12<<2)|2,{108,117,0}}, +/* 41686 */ {(12<<2)|2,{108,117,0}}, +/* 41687 */ {(12<<2)|2,{108,117,0}}, +/* 41688 */ {(12<<2)|2,{108,117,0}}, +/* 41689 */ {(12<<2)|2,{108,117,0}}, +/* 41690 */ {(12<<2)|2,{108,117,0}}, +/* 41691 */ {(12<<2)|2,{108,117,0}}, +/* 41692 */ {(12<<2)|2,{108,117,0}}, +/* 41693 */ {(12<<2)|2,{108,117,0}}, +/* 41694 */ {(12<<2)|2,{108,117,0}}, +/* 41695 */ {(12<<2)|2,{108,117,0}}, +/* 41696 */ {(13<<2)|2,{108,58,0}}, +/* 41697 */ {(13<<2)|2,{108,58,0}}, +/* 41698 */ {(13<<2)|2,{108,58,0}}, +/* 41699 */ {(13<<2)|2,{108,58,0}}, +/* 41700 */ {(13<<2)|2,{108,58,0}}, +/* 41701 */ {(13<<2)|2,{108,58,0}}, +/* 41702 */ {(13<<2)|2,{108,58,0}}, +/* 41703 */ {(13<<2)|2,{108,58,0}}, +/* 41704 */ {(13<<2)|2,{108,66,0}}, +/* 41705 */ {(13<<2)|2,{108,66,0}}, +/* 41706 */ {(13<<2)|2,{108,66,0}}, +/* 41707 */ {(13<<2)|2,{108,66,0}}, +/* 41708 */ {(13<<2)|2,{108,66,0}}, +/* 41709 */ {(13<<2)|2,{108,66,0}}, +/* 41710 */ {(13<<2)|2,{108,66,0}}, +/* 41711 */ {(13<<2)|2,{108,66,0}}, +/* 41712 */ {(13<<2)|2,{108,67,0}}, +/* 41713 */ {(13<<2)|2,{108,67,0}}, +/* 41714 */ {(13<<2)|2,{108,67,0}}, +/* 41715 */ {(13<<2)|2,{108,67,0}}, +/* 41716 */ {(13<<2)|2,{108,67,0}}, +/* 41717 */ {(13<<2)|2,{108,67,0}}, +/* 41718 */ {(13<<2)|2,{108,67,0}}, +/* 41719 */ {(13<<2)|2,{108,67,0}}, +/* 41720 */ {(13<<2)|2,{108,68,0}}, +/* 41721 */ {(13<<2)|2,{108,68,0}}, +/* 41722 */ {(13<<2)|2,{108,68,0}}, +/* 41723 */ {(13<<2)|2,{108,68,0}}, +/* 41724 */ {(13<<2)|2,{108,68,0}}, +/* 41725 */ {(13<<2)|2,{108,68,0}}, +/* 41726 */ {(13<<2)|2,{108,68,0}}, +/* 41727 */ {(13<<2)|2,{108,68,0}}, +/* 41728 */ {(13<<2)|2,{108,69,0}}, +/* 41729 */ {(13<<2)|2,{108,69,0}}, +/* 41730 */ {(13<<2)|2,{108,69,0}}, +/* 41731 */ {(13<<2)|2,{108,69,0}}, +/* 41732 */ {(13<<2)|2,{108,69,0}}, +/* 41733 */ {(13<<2)|2,{108,69,0}}, +/* 41734 */ {(13<<2)|2,{108,69,0}}, +/* 41735 */ {(13<<2)|2,{108,69,0}}, +/* 41736 */ {(13<<2)|2,{108,70,0}}, +/* 41737 */ {(13<<2)|2,{108,70,0}}, +/* 41738 */ {(13<<2)|2,{108,70,0}}, +/* 41739 */ {(13<<2)|2,{108,70,0}}, +/* 41740 */ {(13<<2)|2,{108,70,0}}, +/* 41741 */ {(13<<2)|2,{108,70,0}}, +/* 41742 */ {(13<<2)|2,{108,70,0}}, +/* 41743 */ {(13<<2)|2,{108,70,0}}, +/* 41744 */ {(13<<2)|2,{108,71,0}}, +/* 41745 */ {(13<<2)|2,{108,71,0}}, +/* 41746 */ {(13<<2)|2,{108,71,0}}, +/* 41747 */ {(13<<2)|2,{108,71,0}}, +/* 41748 */ {(13<<2)|2,{108,71,0}}, +/* 41749 */ {(13<<2)|2,{108,71,0}}, +/* 41750 */ {(13<<2)|2,{108,71,0}}, +/* 41751 */ {(13<<2)|2,{108,71,0}}, +/* 41752 */ {(13<<2)|2,{108,72,0}}, +/* 41753 */ {(13<<2)|2,{108,72,0}}, +/* 41754 */ {(13<<2)|2,{108,72,0}}, +/* 41755 */ {(13<<2)|2,{108,72,0}}, +/* 41756 */ {(13<<2)|2,{108,72,0}}, +/* 41757 */ {(13<<2)|2,{108,72,0}}, +/* 41758 */ {(13<<2)|2,{108,72,0}}, +/* 41759 */ {(13<<2)|2,{108,72,0}}, +/* 41760 */ {(13<<2)|2,{108,73,0}}, +/* 41761 */ {(13<<2)|2,{108,73,0}}, +/* 41762 */ {(13<<2)|2,{108,73,0}}, +/* 41763 */ {(13<<2)|2,{108,73,0}}, +/* 41764 */ {(13<<2)|2,{108,73,0}}, +/* 41765 */ {(13<<2)|2,{108,73,0}}, +/* 41766 */ {(13<<2)|2,{108,73,0}}, +/* 41767 */ {(13<<2)|2,{108,73,0}}, +/* 41768 */ {(13<<2)|2,{108,74,0}}, +/* 41769 */ {(13<<2)|2,{108,74,0}}, +/* 41770 */ {(13<<2)|2,{108,74,0}}, +/* 41771 */ {(13<<2)|2,{108,74,0}}, +/* 41772 */ {(13<<2)|2,{108,74,0}}, +/* 41773 */ {(13<<2)|2,{108,74,0}}, +/* 41774 */ {(13<<2)|2,{108,74,0}}, +/* 41775 */ {(13<<2)|2,{108,74,0}}, +/* 41776 */ {(13<<2)|2,{108,75,0}}, +/* 41777 */ {(13<<2)|2,{108,75,0}}, +/* 41778 */ {(13<<2)|2,{108,75,0}}, +/* 41779 */ {(13<<2)|2,{108,75,0}}, +/* 41780 */ {(13<<2)|2,{108,75,0}}, +/* 41781 */ {(13<<2)|2,{108,75,0}}, +/* 41782 */ {(13<<2)|2,{108,75,0}}, +/* 41783 */ {(13<<2)|2,{108,75,0}}, +/* 41784 */ {(13<<2)|2,{108,76,0}}, +/* 41785 */ {(13<<2)|2,{108,76,0}}, +/* 41786 */ {(13<<2)|2,{108,76,0}}, +/* 41787 */ {(13<<2)|2,{108,76,0}}, +/* 41788 */ {(13<<2)|2,{108,76,0}}, +/* 41789 */ {(13<<2)|2,{108,76,0}}, +/* 41790 */ {(13<<2)|2,{108,76,0}}, +/* 41791 */ {(13<<2)|2,{108,76,0}}, +/* 41792 */ {(13<<2)|2,{108,77,0}}, +/* 41793 */ {(13<<2)|2,{108,77,0}}, +/* 41794 */ {(13<<2)|2,{108,77,0}}, +/* 41795 */ {(13<<2)|2,{108,77,0}}, +/* 41796 */ {(13<<2)|2,{108,77,0}}, +/* 41797 */ {(13<<2)|2,{108,77,0}}, +/* 41798 */ {(13<<2)|2,{108,77,0}}, +/* 41799 */ {(13<<2)|2,{108,77,0}}, +/* 41800 */ {(13<<2)|2,{108,78,0}}, +/* 41801 */ {(13<<2)|2,{108,78,0}}, +/* 41802 */ {(13<<2)|2,{108,78,0}}, +/* 41803 */ {(13<<2)|2,{108,78,0}}, +/* 41804 */ {(13<<2)|2,{108,78,0}}, +/* 41805 */ {(13<<2)|2,{108,78,0}}, +/* 41806 */ {(13<<2)|2,{108,78,0}}, +/* 41807 */ {(13<<2)|2,{108,78,0}}, +/* 41808 */ {(13<<2)|2,{108,79,0}}, +/* 41809 */ {(13<<2)|2,{108,79,0}}, +/* 41810 */ {(13<<2)|2,{108,79,0}}, +/* 41811 */ {(13<<2)|2,{108,79,0}}, +/* 41812 */ {(13<<2)|2,{108,79,0}}, +/* 41813 */ {(13<<2)|2,{108,79,0}}, +/* 41814 */ {(13<<2)|2,{108,79,0}}, +/* 41815 */ {(13<<2)|2,{108,79,0}}, +/* 41816 */ {(13<<2)|2,{108,80,0}}, +/* 41817 */ {(13<<2)|2,{108,80,0}}, +/* 41818 */ {(13<<2)|2,{108,80,0}}, +/* 41819 */ {(13<<2)|2,{108,80,0}}, +/* 41820 */ {(13<<2)|2,{108,80,0}}, +/* 41821 */ {(13<<2)|2,{108,80,0}}, +/* 41822 */ {(13<<2)|2,{108,80,0}}, +/* 41823 */ {(13<<2)|2,{108,80,0}}, +/* 41824 */ {(13<<2)|2,{108,81,0}}, +/* 41825 */ {(13<<2)|2,{108,81,0}}, +/* 41826 */ {(13<<2)|2,{108,81,0}}, +/* 41827 */ {(13<<2)|2,{108,81,0}}, +/* 41828 */ {(13<<2)|2,{108,81,0}}, +/* 41829 */ {(13<<2)|2,{108,81,0}}, +/* 41830 */ {(13<<2)|2,{108,81,0}}, +/* 41831 */ {(13<<2)|2,{108,81,0}}, +/* 41832 */ {(13<<2)|2,{108,82,0}}, +/* 41833 */ {(13<<2)|2,{108,82,0}}, +/* 41834 */ {(13<<2)|2,{108,82,0}}, +/* 41835 */ {(13<<2)|2,{108,82,0}}, +/* 41836 */ {(13<<2)|2,{108,82,0}}, +/* 41837 */ {(13<<2)|2,{108,82,0}}, +/* 41838 */ {(13<<2)|2,{108,82,0}}, +/* 41839 */ {(13<<2)|2,{108,82,0}}, +/* 41840 */ {(13<<2)|2,{108,83,0}}, +/* 41841 */ {(13<<2)|2,{108,83,0}}, +/* 41842 */ {(13<<2)|2,{108,83,0}}, +/* 41843 */ {(13<<2)|2,{108,83,0}}, +/* 41844 */ {(13<<2)|2,{108,83,0}}, +/* 41845 */ {(13<<2)|2,{108,83,0}}, +/* 41846 */ {(13<<2)|2,{108,83,0}}, +/* 41847 */ {(13<<2)|2,{108,83,0}}, +/* 41848 */ {(13<<2)|2,{108,84,0}}, +/* 41849 */ {(13<<2)|2,{108,84,0}}, +/* 41850 */ {(13<<2)|2,{108,84,0}}, +/* 41851 */ {(13<<2)|2,{108,84,0}}, +/* 41852 */ {(13<<2)|2,{108,84,0}}, +/* 41853 */ {(13<<2)|2,{108,84,0}}, +/* 41854 */ {(13<<2)|2,{108,84,0}}, +/* 41855 */ {(13<<2)|2,{108,84,0}}, +/* 41856 */ {(13<<2)|2,{108,85,0}}, +/* 41857 */ {(13<<2)|2,{108,85,0}}, +/* 41858 */ {(13<<2)|2,{108,85,0}}, +/* 41859 */ {(13<<2)|2,{108,85,0}}, +/* 41860 */ {(13<<2)|2,{108,85,0}}, +/* 41861 */ {(13<<2)|2,{108,85,0}}, +/* 41862 */ {(13<<2)|2,{108,85,0}}, +/* 41863 */ {(13<<2)|2,{108,85,0}}, +/* 41864 */ {(13<<2)|2,{108,86,0}}, +/* 41865 */ {(13<<2)|2,{108,86,0}}, +/* 41866 */ {(13<<2)|2,{108,86,0}}, +/* 41867 */ {(13<<2)|2,{108,86,0}}, +/* 41868 */ {(13<<2)|2,{108,86,0}}, +/* 41869 */ {(13<<2)|2,{108,86,0}}, +/* 41870 */ {(13<<2)|2,{108,86,0}}, +/* 41871 */ {(13<<2)|2,{108,86,0}}, +/* 41872 */ {(13<<2)|2,{108,87,0}}, +/* 41873 */ {(13<<2)|2,{108,87,0}}, +/* 41874 */ {(13<<2)|2,{108,87,0}}, +/* 41875 */ {(13<<2)|2,{108,87,0}}, +/* 41876 */ {(13<<2)|2,{108,87,0}}, +/* 41877 */ {(13<<2)|2,{108,87,0}}, +/* 41878 */ {(13<<2)|2,{108,87,0}}, +/* 41879 */ {(13<<2)|2,{108,87,0}}, +/* 41880 */ {(13<<2)|2,{108,89,0}}, +/* 41881 */ {(13<<2)|2,{108,89,0}}, +/* 41882 */ {(13<<2)|2,{108,89,0}}, +/* 41883 */ {(13<<2)|2,{108,89,0}}, +/* 41884 */ {(13<<2)|2,{108,89,0}}, +/* 41885 */ {(13<<2)|2,{108,89,0}}, +/* 41886 */ {(13<<2)|2,{108,89,0}}, +/* 41887 */ {(13<<2)|2,{108,89,0}}, +/* 41888 */ {(13<<2)|2,{108,106,0}}, +/* 41889 */ {(13<<2)|2,{108,106,0}}, +/* 41890 */ {(13<<2)|2,{108,106,0}}, +/* 41891 */ {(13<<2)|2,{108,106,0}}, +/* 41892 */ {(13<<2)|2,{108,106,0}}, +/* 41893 */ {(13<<2)|2,{108,106,0}}, +/* 41894 */ {(13<<2)|2,{108,106,0}}, +/* 41895 */ {(13<<2)|2,{108,106,0}}, +/* 41896 */ {(13<<2)|2,{108,107,0}}, +/* 41897 */ {(13<<2)|2,{108,107,0}}, +/* 41898 */ {(13<<2)|2,{108,107,0}}, +/* 41899 */ {(13<<2)|2,{108,107,0}}, +/* 41900 */ {(13<<2)|2,{108,107,0}}, +/* 41901 */ {(13<<2)|2,{108,107,0}}, +/* 41902 */ {(13<<2)|2,{108,107,0}}, +/* 41903 */ {(13<<2)|2,{108,107,0}}, +/* 41904 */ {(13<<2)|2,{108,113,0}}, +/* 41905 */ {(13<<2)|2,{108,113,0}}, +/* 41906 */ {(13<<2)|2,{108,113,0}}, +/* 41907 */ {(13<<2)|2,{108,113,0}}, +/* 41908 */ {(13<<2)|2,{108,113,0}}, +/* 41909 */ {(13<<2)|2,{108,113,0}}, +/* 41910 */ {(13<<2)|2,{108,113,0}}, +/* 41911 */ {(13<<2)|2,{108,113,0}}, +/* 41912 */ {(13<<2)|2,{108,118,0}}, +/* 41913 */ {(13<<2)|2,{108,118,0}}, +/* 41914 */ {(13<<2)|2,{108,118,0}}, +/* 41915 */ {(13<<2)|2,{108,118,0}}, +/* 41916 */ {(13<<2)|2,{108,118,0}}, +/* 41917 */ {(13<<2)|2,{108,118,0}}, +/* 41918 */ {(13<<2)|2,{108,118,0}}, +/* 41919 */ {(13<<2)|2,{108,118,0}}, +/* 41920 */ {(13<<2)|2,{108,119,0}}, +/* 41921 */ {(13<<2)|2,{108,119,0}}, +/* 41922 */ {(13<<2)|2,{108,119,0}}, +/* 41923 */ {(13<<2)|2,{108,119,0}}, +/* 41924 */ {(13<<2)|2,{108,119,0}}, +/* 41925 */ {(13<<2)|2,{108,119,0}}, +/* 41926 */ {(13<<2)|2,{108,119,0}}, +/* 41927 */ {(13<<2)|2,{108,119,0}}, +/* 41928 */ {(13<<2)|2,{108,120,0}}, +/* 41929 */ {(13<<2)|2,{108,120,0}}, +/* 41930 */ {(13<<2)|2,{108,120,0}}, +/* 41931 */ {(13<<2)|2,{108,120,0}}, +/* 41932 */ {(13<<2)|2,{108,120,0}}, +/* 41933 */ {(13<<2)|2,{108,120,0}}, +/* 41934 */ {(13<<2)|2,{108,120,0}}, +/* 41935 */ {(13<<2)|2,{108,120,0}}, +/* 41936 */ {(13<<2)|2,{108,121,0}}, +/* 41937 */ {(13<<2)|2,{108,121,0}}, +/* 41938 */ {(13<<2)|2,{108,121,0}}, +/* 41939 */ {(13<<2)|2,{108,121,0}}, +/* 41940 */ {(13<<2)|2,{108,121,0}}, +/* 41941 */ {(13<<2)|2,{108,121,0}}, +/* 41942 */ {(13<<2)|2,{108,121,0}}, +/* 41943 */ {(13<<2)|2,{108,121,0}}, +/* 41944 */ {(13<<2)|2,{108,122,0}}, +/* 41945 */ {(13<<2)|2,{108,122,0}}, +/* 41946 */ {(13<<2)|2,{108,122,0}}, +/* 41947 */ {(13<<2)|2,{108,122,0}}, +/* 41948 */ {(13<<2)|2,{108,122,0}}, +/* 41949 */ {(13<<2)|2,{108,122,0}}, +/* 41950 */ {(13<<2)|2,{108,122,0}}, +/* 41951 */ {(13<<2)|2,{108,122,0}}, +/* 41952 */ {(14<<2)|2,{108,38,0}}, +/* 41953 */ {(14<<2)|2,{108,38,0}}, +/* 41954 */ {(14<<2)|2,{108,38,0}}, +/* 41955 */ {(14<<2)|2,{108,38,0}}, +/* 41956 */ {(14<<2)|2,{108,42,0}}, +/* 41957 */ {(14<<2)|2,{108,42,0}}, +/* 41958 */ {(14<<2)|2,{108,42,0}}, +/* 41959 */ {(14<<2)|2,{108,42,0}}, +/* 41960 */ {(14<<2)|2,{108,44,0}}, +/* 41961 */ {(14<<2)|2,{108,44,0}}, +/* 41962 */ {(14<<2)|2,{108,44,0}}, +/* 41963 */ {(14<<2)|2,{108,44,0}}, +/* 41964 */ {(14<<2)|2,{108,59,0}}, +/* 41965 */ {(14<<2)|2,{108,59,0}}, +/* 41966 */ {(14<<2)|2,{108,59,0}}, +/* 41967 */ {(14<<2)|2,{108,59,0}}, +/* 41968 */ {(14<<2)|2,{108,88,0}}, +/* 41969 */ {(14<<2)|2,{108,88,0}}, +/* 41970 */ {(14<<2)|2,{108,88,0}}, +/* 41971 */ {(14<<2)|2,{108,88,0}}, +/* 41972 */ {(14<<2)|2,{108,90,0}}, +/* 41973 */ {(14<<2)|2,{108,90,0}}, +/* 41974 */ {(14<<2)|2,{108,90,0}}, +/* 41975 */ {(14<<2)|2,{108,90,0}}, +/* 41976 */ {(16<<2)|2,{108,33,0}}, +/* 41977 */ {(16<<2)|2,{108,34,0}}, +/* 41978 */ {(16<<2)|2,{108,40,0}}, +/* 41979 */ {(16<<2)|2,{108,41,0}}, +/* 41980 */ {(16<<2)|2,{108,63,0}}, +/* 41981 */ {(6<<2)|1,{108,0,0}}, +/* 41982 */ {(6<<2)|1,{108,0,0}}, +/* 41983 */ {(6<<2)|1,{108,0,0}}, +/* 41984 */ {(16<<2)|3,{109,48,48}}, +/* 41985 */ {(16<<2)|3,{109,48,49}}, +/* 41986 */ {(16<<2)|3,{109,48,50}}, +/* 41987 */ {(16<<2)|3,{109,48,97}}, +/* 41988 */ {(16<<2)|3,{109,48,99}}, +/* 41989 */ {(16<<2)|3,{109,48,101}}, +/* 41990 */ {(16<<2)|3,{109,48,105}}, +/* 41991 */ {(16<<2)|3,{109,48,111}}, +/* 41992 */ {(16<<2)|3,{109,48,115}}, +/* 41993 */ {(16<<2)|3,{109,48,116}}, +/* 41994 */ {(11<<2)|2,{109,48,0}}, +/* 41995 */ {(11<<2)|2,{109,48,0}}, +/* 41996 */ {(11<<2)|2,{109,48,0}}, +/* 41997 */ {(11<<2)|2,{109,48,0}}, +/* 41998 */ {(11<<2)|2,{109,48,0}}, +/* 41999 */ {(11<<2)|2,{109,48,0}}, +/* 42000 */ {(11<<2)|2,{109,48,0}}, +/* 42001 */ {(11<<2)|2,{109,48,0}}, +/* 42002 */ {(11<<2)|2,{109,48,0}}, +/* 42003 */ {(11<<2)|2,{109,48,0}}, +/* 42004 */ {(11<<2)|2,{109,48,0}}, +/* 42005 */ {(11<<2)|2,{109,48,0}}, +/* 42006 */ {(11<<2)|2,{109,48,0}}, +/* 42007 */ {(11<<2)|2,{109,48,0}}, +/* 42008 */ {(11<<2)|2,{109,48,0}}, +/* 42009 */ {(11<<2)|2,{109,48,0}}, +/* 42010 */ {(11<<2)|2,{109,48,0}}, +/* 42011 */ {(11<<2)|2,{109,48,0}}, +/* 42012 */ {(11<<2)|2,{109,48,0}}, +/* 42013 */ {(11<<2)|2,{109,48,0}}, +/* 42014 */ {(11<<2)|2,{109,48,0}}, +/* 42015 */ {(11<<2)|2,{109,48,0}}, +/* 42016 */ {(16<<2)|3,{109,49,48}}, +/* 42017 */ {(16<<2)|3,{109,49,49}}, +/* 42018 */ {(16<<2)|3,{109,49,50}}, +/* 42019 */ {(16<<2)|3,{109,49,97}}, +/* 42020 */ {(16<<2)|3,{109,49,99}}, +/* 42021 */ {(16<<2)|3,{109,49,101}}, +/* 42022 */ {(16<<2)|3,{109,49,105}}, +/* 42023 */ {(16<<2)|3,{109,49,111}}, +/* 42024 */ {(16<<2)|3,{109,49,115}}, +/* 42025 */ {(16<<2)|3,{109,49,116}}, +/* 42026 */ {(11<<2)|2,{109,49,0}}, +/* 42027 */ {(11<<2)|2,{109,49,0}}, +/* 42028 */ {(11<<2)|2,{109,49,0}}, +/* 42029 */ {(11<<2)|2,{109,49,0}}, +/* 42030 */ {(11<<2)|2,{109,49,0}}, +/* 42031 */ {(11<<2)|2,{109,49,0}}, +/* 42032 */ {(11<<2)|2,{109,49,0}}, +/* 42033 */ {(11<<2)|2,{109,49,0}}, +/* 42034 */ {(11<<2)|2,{109,49,0}}, +/* 42035 */ {(11<<2)|2,{109,49,0}}, +/* 42036 */ {(11<<2)|2,{109,49,0}}, +/* 42037 */ {(11<<2)|2,{109,49,0}}, +/* 42038 */ {(11<<2)|2,{109,49,0}}, +/* 42039 */ {(11<<2)|2,{109,49,0}}, +/* 42040 */ {(11<<2)|2,{109,49,0}}, +/* 42041 */ {(11<<2)|2,{109,49,0}}, +/* 42042 */ {(11<<2)|2,{109,49,0}}, +/* 42043 */ {(11<<2)|2,{109,49,0}}, +/* 42044 */ {(11<<2)|2,{109,49,0}}, +/* 42045 */ {(11<<2)|2,{109,49,0}}, +/* 42046 */ {(11<<2)|2,{109,49,0}}, +/* 42047 */ {(11<<2)|2,{109,49,0}}, +/* 42048 */ {(16<<2)|3,{109,50,48}}, +/* 42049 */ {(16<<2)|3,{109,50,49}}, +/* 42050 */ {(16<<2)|3,{109,50,50}}, +/* 42051 */ {(16<<2)|3,{109,50,97}}, +/* 42052 */ {(16<<2)|3,{109,50,99}}, +/* 42053 */ {(16<<2)|3,{109,50,101}}, +/* 42054 */ {(16<<2)|3,{109,50,105}}, +/* 42055 */ {(16<<2)|3,{109,50,111}}, +/* 42056 */ {(16<<2)|3,{109,50,115}}, +/* 42057 */ {(16<<2)|3,{109,50,116}}, +/* 42058 */ {(11<<2)|2,{109,50,0}}, +/* 42059 */ {(11<<2)|2,{109,50,0}}, +/* 42060 */ {(11<<2)|2,{109,50,0}}, +/* 42061 */ {(11<<2)|2,{109,50,0}}, +/* 42062 */ {(11<<2)|2,{109,50,0}}, +/* 42063 */ {(11<<2)|2,{109,50,0}}, +/* 42064 */ {(11<<2)|2,{109,50,0}}, +/* 42065 */ {(11<<2)|2,{109,50,0}}, +/* 42066 */ {(11<<2)|2,{109,50,0}}, +/* 42067 */ {(11<<2)|2,{109,50,0}}, +/* 42068 */ {(11<<2)|2,{109,50,0}}, +/* 42069 */ {(11<<2)|2,{109,50,0}}, +/* 42070 */ {(11<<2)|2,{109,50,0}}, +/* 42071 */ {(11<<2)|2,{109,50,0}}, +/* 42072 */ {(11<<2)|2,{109,50,0}}, +/* 42073 */ {(11<<2)|2,{109,50,0}}, +/* 42074 */ {(11<<2)|2,{109,50,0}}, +/* 42075 */ {(11<<2)|2,{109,50,0}}, +/* 42076 */ {(11<<2)|2,{109,50,0}}, +/* 42077 */ {(11<<2)|2,{109,50,0}}, +/* 42078 */ {(11<<2)|2,{109,50,0}}, +/* 42079 */ {(11<<2)|2,{109,50,0}}, +/* 42080 */ {(16<<2)|3,{109,97,48}}, +/* 42081 */ {(16<<2)|3,{109,97,49}}, +/* 42082 */ {(16<<2)|3,{109,97,50}}, +/* 42083 */ {(16<<2)|3,{109,97,97}}, +/* 42084 */ {(16<<2)|3,{109,97,99}}, +/* 42085 */ {(16<<2)|3,{109,97,101}}, +/* 42086 */ {(16<<2)|3,{109,97,105}}, +/* 42087 */ {(16<<2)|3,{109,97,111}}, +/* 42088 */ {(16<<2)|3,{109,97,115}}, +/* 42089 */ {(16<<2)|3,{109,97,116}}, +/* 42090 */ {(11<<2)|2,{109,97,0}}, +/* 42091 */ {(11<<2)|2,{109,97,0}}, +/* 42092 */ {(11<<2)|2,{109,97,0}}, +/* 42093 */ {(11<<2)|2,{109,97,0}}, +/* 42094 */ {(11<<2)|2,{109,97,0}}, +/* 42095 */ {(11<<2)|2,{109,97,0}}, +/* 42096 */ {(11<<2)|2,{109,97,0}}, +/* 42097 */ {(11<<2)|2,{109,97,0}}, +/* 42098 */ {(11<<2)|2,{109,97,0}}, +/* 42099 */ {(11<<2)|2,{109,97,0}}, +/* 42100 */ {(11<<2)|2,{109,97,0}}, +/* 42101 */ {(11<<2)|2,{109,97,0}}, +/* 42102 */ {(11<<2)|2,{109,97,0}}, +/* 42103 */ {(11<<2)|2,{109,97,0}}, +/* 42104 */ {(11<<2)|2,{109,97,0}}, +/* 42105 */ {(11<<2)|2,{109,97,0}}, +/* 42106 */ {(11<<2)|2,{109,97,0}}, +/* 42107 */ {(11<<2)|2,{109,97,0}}, +/* 42108 */ {(11<<2)|2,{109,97,0}}, +/* 42109 */ {(11<<2)|2,{109,97,0}}, +/* 42110 */ {(11<<2)|2,{109,97,0}}, +/* 42111 */ {(11<<2)|2,{109,97,0}}, +/* 42112 */ {(16<<2)|3,{109,99,48}}, +/* 42113 */ {(16<<2)|3,{109,99,49}}, +/* 42114 */ {(16<<2)|3,{109,99,50}}, +/* 42115 */ {(16<<2)|3,{109,99,97}}, +/* 42116 */ {(16<<2)|3,{109,99,99}}, +/* 42117 */ {(16<<2)|3,{109,99,101}}, +/* 42118 */ {(16<<2)|3,{109,99,105}}, +/* 42119 */ {(16<<2)|3,{109,99,111}}, +/* 42120 */ {(16<<2)|3,{109,99,115}}, +/* 42121 */ {(16<<2)|3,{109,99,116}}, +/* 42122 */ {(11<<2)|2,{109,99,0}}, +/* 42123 */ {(11<<2)|2,{109,99,0}}, +/* 42124 */ {(11<<2)|2,{109,99,0}}, +/* 42125 */ {(11<<2)|2,{109,99,0}}, +/* 42126 */ {(11<<2)|2,{109,99,0}}, +/* 42127 */ {(11<<2)|2,{109,99,0}}, +/* 42128 */ {(11<<2)|2,{109,99,0}}, +/* 42129 */ {(11<<2)|2,{109,99,0}}, +/* 42130 */ {(11<<2)|2,{109,99,0}}, +/* 42131 */ {(11<<2)|2,{109,99,0}}, +/* 42132 */ {(11<<2)|2,{109,99,0}}, +/* 42133 */ {(11<<2)|2,{109,99,0}}, +/* 42134 */ {(11<<2)|2,{109,99,0}}, +/* 42135 */ {(11<<2)|2,{109,99,0}}, +/* 42136 */ {(11<<2)|2,{109,99,0}}, +/* 42137 */ {(11<<2)|2,{109,99,0}}, +/* 42138 */ {(11<<2)|2,{109,99,0}}, +/* 42139 */ {(11<<2)|2,{109,99,0}}, +/* 42140 */ {(11<<2)|2,{109,99,0}}, +/* 42141 */ {(11<<2)|2,{109,99,0}}, +/* 42142 */ {(11<<2)|2,{109,99,0}}, +/* 42143 */ {(11<<2)|2,{109,99,0}}, +/* 42144 */ {(16<<2)|3,{109,101,48}}, +/* 42145 */ {(16<<2)|3,{109,101,49}}, +/* 42146 */ {(16<<2)|3,{109,101,50}}, +/* 42147 */ {(16<<2)|3,{109,101,97}}, +/* 42148 */ {(16<<2)|3,{109,101,99}}, +/* 42149 */ {(16<<2)|3,{109,101,101}}, +/* 42150 */ {(16<<2)|3,{109,101,105}}, +/* 42151 */ {(16<<2)|3,{109,101,111}}, +/* 42152 */ {(16<<2)|3,{109,101,115}}, +/* 42153 */ {(16<<2)|3,{109,101,116}}, +/* 42154 */ {(11<<2)|2,{109,101,0}}, +/* 42155 */ {(11<<2)|2,{109,101,0}}, +/* 42156 */ {(11<<2)|2,{109,101,0}}, +/* 42157 */ {(11<<2)|2,{109,101,0}}, +/* 42158 */ {(11<<2)|2,{109,101,0}}, +/* 42159 */ {(11<<2)|2,{109,101,0}}, +/* 42160 */ {(11<<2)|2,{109,101,0}}, +/* 42161 */ {(11<<2)|2,{109,101,0}}, +/* 42162 */ {(11<<2)|2,{109,101,0}}, +/* 42163 */ {(11<<2)|2,{109,101,0}}, +/* 42164 */ {(11<<2)|2,{109,101,0}}, +/* 42165 */ {(11<<2)|2,{109,101,0}}, +/* 42166 */ {(11<<2)|2,{109,101,0}}, +/* 42167 */ {(11<<2)|2,{109,101,0}}, +/* 42168 */ {(11<<2)|2,{109,101,0}}, +/* 42169 */ {(11<<2)|2,{109,101,0}}, +/* 42170 */ {(11<<2)|2,{109,101,0}}, +/* 42171 */ {(11<<2)|2,{109,101,0}}, +/* 42172 */ {(11<<2)|2,{109,101,0}}, +/* 42173 */ {(11<<2)|2,{109,101,0}}, +/* 42174 */ {(11<<2)|2,{109,101,0}}, +/* 42175 */ {(11<<2)|2,{109,101,0}}, +/* 42176 */ {(16<<2)|3,{109,105,48}}, +/* 42177 */ {(16<<2)|3,{109,105,49}}, +/* 42178 */ {(16<<2)|3,{109,105,50}}, +/* 42179 */ {(16<<2)|3,{109,105,97}}, +/* 42180 */ {(16<<2)|3,{109,105,99}}, +/* 42181 */ {(16<<2)|3,{109,105,101}}, +/* 42182 */ {(16<<2)|3,{109,105,105}}, +/* 42183 */ {(16<<2)|3,{109,105,111}}, +/* 42184 */ {(16<<2)|3,{109,105,115}}, +/* 42185 */ {(16<<2)|3,{109,105,116}}, +/* 42186 */ {(11<<2)|2,{109,105,0}}, +/* 42187 */ {(11<<2)|2,{109,105,0}}, +/* 42188 */ {(11<<2)|2,{109,105,0}}, +/* 42189 */ {(11<<2)|2,{109,105,0}}, +/* 42190 */ {(11<<2)|2,{109,105,0}}, +/* 42191 */ {(11<<2)|2,{109,105,0}}, +/* 42192 */ {(11<<2)|2,{109,105,0}}, +/* 42193 */ {(11<<2)|2,{109,105,0}}, +/* 42194 */ {(11<<2)|2,{109,105,0}}, +/* 42195 */ {(11<<2)|2,{109,105,0}}, +/* 42196 */ {(11<<2)|2,{109,105,0}}, +/* 42197 */ {(11<<2)|2,{109,105,0}}, +/* 42198 */ {(11<<2)|2,{109,105,0}}, +/* 42199 */ {(11<<2)|2,{109,105,0}}, +/* 42200 */ {(11<<2)|2,{109,105,0}}, +/* 42201 */ {(11<<2)|2,{109,105,0}}, +/* 42202 */ {(11<<2)|2,{109,105,0}}, +/* 42203 */ {(11<<2)|2,{109,105,0}}, +/* 42204 */ {(11<<2)|2,{109,105,0}}, +/* 42205 */ {(11<<2)|2,{109,105,0}}, +/* 42206 */ {(11<<2)|2,{109,105,0}}, +/* 42207 */ {(11<<2)|2,{109,105,0}}, +/* 42208 */ {(16<<2)|3,{109,111,48}}, +/* 42209 */ {(16<<2)|3,{109,111,49}}, +/* 42210 */ {(16<<2)|3,{109,111,50}}, +/* 42211 */ {(16<<2)|3,{109,111,97}}, +/* 42212 */ {(16<<2)|3,{109,111,99}}, +/* 42213 */ {(16<<2)|3,{109,111,101}}, +/* 42214 */ {(16<<2)|3,{109,111,105}}, +/* 42215 */ {(16<<2)|3,{109,111,111}}, +/* 42216 */ {(16<<2)|3,{109,111,115}}, +/* 42217 */ {(16<<2)|3,{109,111,116}}, +/* 42218 */ {(11<<2)|2,{109,111,0}}, +/* 42219 */ {(11<<2)|2,{109,111,0}}, +/* 42220 */ {(11<<2)|2,{109,111,0}}, +/* 42221 */ {(11<<2)|2,{109,111,0}}, +/* 42222 */ {(11<<2)|2,{109,111,0}}, +/* 42223 */ {(11<<2)|2,{109,111,0}}, +/* 42224 */ {(11<<2)|2,{109,111,0}}, +/* 42225 */ {(11<<2)|2,{109,111,0}}, +/* 42226 */ {(11<<2)|2,{109,111,0}}, +/* 42227 */ {(11<<2)|2,{109,111,0}}, +/* 42228 */ {(11<<2)|2,{109,111,0}}, +/* 42229 */ {(11<<2)|2,{109,111,0}}, +/* 42230 */ {(11<<2)|2,{109,111,0}}, +/* 42231 */ {(11<<2)|2,{109,111,0}}, +/* 42232 */ {(11<<2)|2,{109,111,0}}, +/* 42233 */ {(11<<2)|2,{109,111,0}}, +/* 42234 */ {(11<<2)|2,{109,111,0}}, +/* 42235 */ {(11<<2)|2,{109,111,0}}, +/* 42236 */ {(11<<2)|2,{109,111,0}}, +/* 42237 */ {(11<<2)|2,{109,111,0}}, +/* 42238 */ {(11<<2)|2,{109,111,0}}, +/* 42239 */ {(11<<2)|2,{109,111,0}}, +/* 42240 */ {(16<<2)|3,{109,115,48}}, +/* 42241 */ {(16<<2)|3,{109,115,49}}, +/* 42242 */ {(16<<2)|3,{109,115,50}}, +/* 42243 */ {(16<<2)|3,{109,115,97}}, +/* 42244 */ {(16<<2)|3,{109,115,99}}, +/* 42245 */ {(16<<2)|3,{109,115,101}}, +/* 42246 */ {(16<<2)|3,{109,115,105}}, +/* 42247 */ {(16<<2)|3,{109,115,111}}, +/* 42248 */ {(16<<2)|3,{109,115,115}}, +/* 42249 */ {(16<<2)|3,{109,115,116}}, +/* 42250 */ {(11<<2)|2,{109,115,0}}, +/* 42251 */ {(11<<2)|2,{109,115,0}}, +/* 42252 */ {(11<<2)|2,{109,115,0}}, +/* 42253 */ {(11<<2)|2,{109,115,0}}, +/* 42254 */ {(11<<2)|2,{109,115,0}}, +/* 42255 */ {(11<<2)|2,{109,115,0}}, +/* 42256 */ {(11<<2)|2,{109,115,0}}, +/* 42257 */ {(11<<2)|2,{109,115,0}}, +/* 42258 */ {(11<<2)|2,{109,115,0}}, +/* 42259 */ {(11<<2)|2,{109,115,0}}, +/* 42260 */ {(11<<2)|2,{109,115,0}}, +/* 42261 */ {(11<<2)|2,{109,115,0}}, +/* 42262 */ {(11<<2)|2,{109,115,0}}, +/* 42263 */ {(11<<2)|2,{109,115,0}}, +/* 42264 */ {(11<<2)|2,{109,115,0}}, +/* 42265 */ {(11<<2)|2,{109,115,0}}, +/* 42266 */ {(11<<2)|2,{109,115,0}}, +/* 42267 */ {(11<<2)|2,{109,115,0}}, +/* 42268 */ {(11<<2)|2,{109,115,0}}, +/* 42269 */ {(11<<2)|2,{109,115,0}}, +/* 42270 */ {(11<<2)|2,{109,115,0}}, +/* 42271 */ {(11<<2)|2,{109,115,0}}, +/* 42272 */ {(16<<2)|3,{109,116,48}}, +/* 42273 */ {(16<<2)|3,{109,116,49}}, +/* 42274 */ {(16<<2)|3,{109,116,50}}, +/* 42275 */ {(16<<2)|3,{109,116,97}}, +/* 42276 */ {(16<<2)|3,{109,116,99}}, +/* 42277 */ {(16<<2)|3,{109,116,101}}, +/* 42278 */ {(16<<2)|3,{109,116,105}}, +/* 42279 */ {(16<<2)|3,{109,116,111}}, +/* 42280 */ {(16<<2)|3,{109,116,115}}, +/* 42281 */ {(16<<2)|3,{109,116,116}}, +/* 42282 */ {(11<<2)|2,{109,116,0}}, +/* 42283 */ {(11<<2)|2,{109,116,0}}, +/* 42284 */ {(11<<2)|2,{109,116,0}}, +/* 42285 */ {(11<<2)|2,{109,116,0}}, +/* 42286 */ {(11<<2)|2,{109,116,0}}, +/* 42287 */ {(11<<2)|2,{109,116,0}}, +/* 42288 */ {(11<<2)|2,{109,116,0}}, +/* 42289 */ {(11<<2)|2,{109,116,0}}, +/* 42290 */ {(11<<2)|2,{109,116,0}}, +/* 42291 */ {(11<<2)|2,{109,116,0}}, +/* 42292 */ {(11<<2)|2,{109,116,0}}, +/* 42293 */ {(11<<2)|2,{109,116,0}}, +/* 42294 */ {(11<<2)|2,{109,116,0}}, +/* 42295 */ {(11<<2)|2,{109,116,0}}, +/* 42296 */ {(11<<2)|2,{109,116,0}}, +/* 42297 */ {(11<<2)|2,{109,116,0}}, +/* 42298 */ {(11<<2)|2,{109,116,0}}, +/* 42299 */ {(11<<2)|2,{109,116,0}}, +/* 42300 */ {(11<<2)|2,{109,116,0}}, +/* 42301 */ {(11<<2)|2,{109,116,0}}, +/* 42302 */ {(11<<2)|2,{109,116,0}}, +/* 42303 */ {(11<<2)|2,{109,116,0}}, +/* 42304 */ {(12<<2)|2,{109,32,0}}, +/* 42305 */ {(12<<2)|2,{109,32,0}}, +/* 42306 */ {(12<<2)|2,{109,32,0}}, +/* 42307 */ {(12<<2)|2,{109,32,0}}, +/* 42308 */ {(12<<2)|2,{109,32,0}}, +/* 42309 */ {(12<<2)|2,{109,32,0}}, +/* 42310 */ {(12<<2)|2,{109,32,0}}, +/* 42311 */ {(12<<2)|2,{109,32,0}}, +/* 42312 */ {(12<<2)|2,{109,32,0}}, +/* 42313 */ {(12<<2)|2,{109,32,0}}, +/* 42314 */ {(12<<2)|2,{109,32,0}}, +/* 42315 */ {(12<<2)|2,{109,32,0}}, +/* 42316 */ {(12<<2)|2,{109,32,0}}, +/* 42317 */ {(12<<2)|2,{109,32,0}}, +/* 42318 */ {(12<<2)|2,{109,32,0}}, +/* 42319 */ {(12<<2)|2,{109,32,0}}, +/* 42320 */ {(12<<2)|2,{109,37,0}}, +/* 42321 */ {(12<<2)|2,{109,37,0}}, +/* 42322 */ {(12<<2)|2,{109,37,0}}, +/* 42323 */ {(12<<2)|2,{109,37,0}}, +/* 42324 */ {(12<<2)|2,{109,37,0}}, +/* 42325 */ {(12<<2)|2,{109,37,0}}, +/* 42326 */ {(12<<2)|2,{109,37,0}}, +/* 42327 */ {(12<<2)|2,{109,37,0}}, +/* 42328 */ {(12<<2)|2,{109,37,0}}, +/* 42329 */ {(12<<2)|2,{109,37,0}}, +/* 42330 */ {(12<<2)|2,{109,37,0}}, +/* 42331 */ {(12<<2)|2,{109,37,0}}, +/* 42332 */ {(12<<2)|2,{109,37,0}}, +/* 42333 */ {(12<<2)|2,{109,37,0}}, +/* 42334 */ {(12<<2)|2,{109,37,0}}, +/* 42335 */ {(12<<2)|2,{109,37,0}}, +/* 42336 */ {(12<<2)|2,{109,45,0}}, +/* 42337 */ {(12<<2)|2,{109,45,0}}, +/* 42338 */ {(12<<2)|2,{109,45,0}}, +/* 42339 */ {(12<<2)|2,{109,45,0}}, +/* 42340 */ {(12<<2)|2,{109,45,0}}, +/* 42341 */ {(12<<2)|2,{109,45,0}}, +/* 42342 */ {(12<<2)|2,{109,45,0}}, +/* 42343 */ {(12<<2)|2,{109,45,0}}, +/* 42344 */ {(12<<2)|2,{109,45,0}}, +/* 42345 */ {(12<<2)|2,{109,45,0}}, +/* 42346 */ {(12<<2)|2,{109,45,0}}, +/* 42347 */ {(12<<2)|2,{109,45,0}}, +/* 42348 */ {(12<<2)|2,{109,45,0}}, +/* 42349 */ {(12<<2)|2,{109,45,0}}, +/* 42350 */ {(12<<2)|2,{109,45,0}}, +/* 42351 */ {(12<<2)|2,{109,45,0}}, +/* 42352 */ {(12<<2)|2,{109,46,0}}, +/* 42353 */ {(12<<2)|2,{109,46,0}}, +/* 42354 */ {(12<<2)|2,{109,46,0}}, +/* 42355 */ {(12<<2)|2,{109,46,0}}, +/* 42356 */ {(12<<2)|2,{109,46,0}}, +/* 42357 */ {(12<<2)|2,{109,46,0}}, +/* 42358 */ {(12<<2)|2,{109,46,0}}, +/* 42359 */ {(12<<2)|2,{109,46,0}}, +/* 42360 */ {(12<<2)|2,{109,46,0}}, +/* 42361 */ {(12<<2)|2,{109,46,0}}, +/* 42362 */ {(12<<2)|2,{109,46,0}}, +/* 42363 */ {(12<<2)|2,{109,46,0}}, +/* 42364 */ {(12<<2)|2,{109,46,0}}, +/* 42365 */ {(12<<2)|2,{109,46,0}}, +/* 42366 */ {(12<<2)|2,{109,46,0}}, +/* 42367 */ {(12<<2)|2,{109,46,0}}, +/* 42368 */ {(12<<2)|2,{109,47,0}}, +/* 42369 */ {(12<<2)|2,{109,47,0}}, +/* 42370 */ {(12<<2)|2,{109,47,0}}, +/* 42371 */ {(12<<2)|2,{109,47,0}}, +/* 42372 */ {(12<<2)|2,{109,47,0}}, +/* 42373 */ {(12<<2)|2,{109,47,0}}, +/* 42374 */ {(12<<2)|2,{109,47,0}}, +/* 42375 */ {(12<<2)|2,{109,47,0}}, +/* 42376 */ {(12<<2)|2,{109,47,0}}, +/* 42377 */ {(12<<2)|2,{109,47,0}}, +/* 42378 */ {(12<<2)|2,{109,47,0}}, +/* 42379 */ {(12<<2)|2,{109,47,0}}, +/* 42380 */ {(12<<2)|2,{109,47,0}}, +/* 42381 */ {(12<<2)|2,{109,47,0}}, +/* 42382 */ {(12<<2)|2,{109,47,0}}, +/* 42383 */ {(12<<2)|2,{109,47,0}}, +/* 42384 */ {(12<<2)|2,{109,51,0}}, +/* 42385 */ {(12<<2)|2,{109,51,0}}, +/* 42386 */ {(12<<2)|2,{109,51,0}}, +/* 42387 */ {(12<<2)|2,{109,51,0}}, +/* 42388 */ {(12<<2)|2,{109,51,0}}, +/* 42389 */ {(12<<2)|2,{109,51,0}}, +/* 42390 */ {(12<<2)|2,{109,51,0}}, +/* 42391 */ {(12<<2)|2,{109,51,0}}, +/* 42392 */ {(12<<2)|2,{109,51,0}}, +/* 42393 */ {(12<<2)|2,{109,51,0}}, +/* 42394 */ {(12<<2)|2,{109,51,0}}, +/* 42395 */ {(12<<2)|2,{109,51,0}}, +/* 42396 */ {(12<<2)|2,{109,51,0}}, +/* 42397 */ {(12<<2)|2,{109,51,0}}, +/* 42398 */ {(12<<2)|2,{109,51,0}}, +/* 42399 */ {(12<<2)|2,{109,51,0}}, +/* 42400 */ {(12<<2)|2,{109,52,0}}, +/* 42401 */ {(12<<2)|2,{109,52,0}}, +/* 42402 */ {(12<<2)|2,{109,52,0}}, +/* 42403 */ {(12<<2)|2,{109,52,0}}, +/* 42404 */ {(12<<2)|2,{109,52,0}}, +/* 42405 */ {(12<<2)|2,{109,52,0}}, +/* 42406 */ {(12<<2)|2,{109,52,0}}, +/* 42407 */ {(12<<2)|2,{109,52,0}}, +/* 42408 */ {(12<<2)|2,{109,52,0}}, +/* 42409 */ {(12<<2)|2,{109,52,0}}, +/* 42410 */ {(12<<2)|2,{109,52,0}}, +/* 42411 */ {(12<<2)|2,{109,52,0}}, +/* 42412 */ {(12<<2)|2,{109,52,0}}, +/* 42413 */ {(12<<2)|2,{109,52,0}}, +/* 42414 */ {(12<<2)|2,{109,52,0}}, +/* 42415 */ {(12<<2)|2,{109,52,0}}, +/* 42416 */ {(12<<2)|2,{109,53,0}}, +/* 42417 */ {(12<<2)|2,{109,53,0}}, +/* 42418 */ {(12<<2)|2,{109,53,0}}, +/* 42419 */ {(12<<2)|2,{109,53,0}}, +/* 42420 */ {(12<<2)|2,{109,53,0}}, +/* 42421 */ {(12<<2)|2,{109,53,0}}, +/* 42422 */ {(12<<2)|2,{109,53,0}}, +/* 42423 */ {(12<<2)|2,{109,53,0}}, +/* 42424 */ {(12<<2)|2,{109,53,0}}, +/* 42425 */ {(12<<2)|2,{109,53,0}}, +/* 42426 */ {(12<<2)|2,{109,53,0}}, +/* 42427 */ {(12<<2)|2,{109,53,0}}, +/* 42428 */ {(12<<2)|2,{109,53,0}}, +/* 42429 */ {(12<<2)|2,{109,53,0}}, +/* 42430 */ {(12<<2)|2,{109,53,0}}, +/* 42431 */ {(12<<2)|2,{109,53,0}}, +/* 42432 */ {(12<<2)|2,{109,54,0}}, +/* 42433 */ {(12<<2)|2,{109,54,0}}, +/* 42434 */ {(12<<2)|2,{109,54,0}}, +/* 42435 */ {(12<<2)|2,{109,54,0}}, +/* 42436 */ {(12<<2)|2,{109,54,0}}, +/* 42437 */ {(12<<2)|2,{109,54,0}}, +/* 42438 */ {(12<<2)|2,{109,54,0}}, +/* 42439 */ {(12<<2)|2,{109,54,0}}, +/* 42440 */ {(12<<2)|2,{109,54,0}}, +/* 42441 */ {(12<<2)|2,{109,54,0}}, +/* 42442 */ {(12<<2)|2,{109,54,0}}, +/* 42443 */ {(12<<2)|2,{109,54,0}}, +/* 42444 */ {(12<<2)|2,{109,54,0}}, +/* 42445 */ {(12<<2)|2,{109,54,0}}, +/* 42446 */ {(12<<2)|2,{109,54,0}}, +/* 42447 */ {(12<<2)|2,{109,54,0}}, +/* 42448 */ {(12<<2)|2,{109,55,0}}, +/* 42449 */ {(12<<2)|2,{109,55,0}}, +/* 42450 */ {(12<<2)|2,{109,55,0}}, +/* 42451 */ {(12<<2)|2,{109,55,0}}, +/* 42452 */ {(12<<2)|2,{109,55,0}}, +/* 42453 */ {(12<<2)|2,{109,55,0}}, +/* 42454 */ {(12<<2)|2,{109,55,0}}, +/* 42455 */ {(12<<2)|2,{109,55,0}}, +/* 42456 */ {(12<<2)|2,{109,55,0}}, +/* 42457 */ {(12<<2)|2,{109,55,0}}, +/* 42458 */ {(12<<2)|2,{109,55,0}}, +/* 42459 */ {(12<<2)|2,{109,55,0}}, +/* 42460 */ {(12<<2)|2,{109,55,0}}, +/* 42461 */ {(12<<2)|2,{109,55,0}}, +/* 42462 */ {(12<<2)|2,{109,55,0}}, +/* 42463 */ {(12<<2)|2,{109,55,0}}, +/* 42464 */ {(12<<2)|2,{109,56,0}}, +/* 42465 */ {(12<<2)|2,{109,56,0}}, +/* 42466 */ {(12<<2)|2,{109,56,0}}, +/* 42467 */ {(12<<2)|2,{109,56,0}}, +/* 42468 */ {(12<<2)|2,{109,56,0}}, +/* 42469 */ {(12<<2)|2,{109,56,0}}, +/* 42470 */ {(12<<2)|2,{109,56,0}}, +/* 42471 */ {(12<<2)|2,{109,56,0}}, +/* 42472 */ {(12<<2)|2,{109,56,0}}, +/* 42473 */ {(12<<2)|2,{109,56,0}}, +/* 42474 */ {(12<<2)|2,{109,56,0}}, +/* 42475 */ {(12<<2)|2,{109,56,0}}, +/* 42476 */ {(12<<2)|2,{109,56,0}}, +/* 42477 */ {(12<<2)|2,{109,56,0}}, +/* 42478 */ {(12<<2)|2,{109,56,0}}, +/* 42479 */ {(12<<2)|2,{109,56,0}}, +/* 42480 */ {(12<<2)|2,{109,57,0}}, +/* 42481 */ {(12<<2)|2,{109,57,0}}, +/* 42482 */ {(12<<2)|2,{109,57,0}}, +/* 42483 */ {(12<<2)|2,{109,57,0}}, +/* 42484 */ {(12<<2)|2,{109,57,0}}, +/* 42485 */ {(12<<2)|2,{109,57,0}}, +/* 42486 */ {(12<<2)|2,{109,57,0}}, +/* 42487 */ {(12<<2)|2,{109,57,0}}, +/* 42488 */ {(12<<2)|2,{109,57,0}}, +/* 42489 */ {(12<<2)|2,{109,57,0}}, +/* 42490 */ {(12<<2)|2,{109,57,0}}, +/* 42491 */ {(12<<2)|2,{109,57,0}}, +/* 42492 */ {(12<<2)|2,{109,57,0}}, +/* 42493 */ {(12<<2)|2,{109,57,0}}, +/* 42494 */ {(12<<2)|2,{109,57,0}}, +/* 42495 */ {(12<<2)|2,{109,57,0}}, +/* 42496 */ {(12<<2)|2,{109,61,0}}, +/* 42497 */ {(12<<2)|2,{109,61,0}}, +/* 42498 */ {(12<<2)|2,{109,61,0}}, +/* 42499 */ {(12<<2)|2,{109,61,0}}, +/* 42500 */ {(12<<2)|2,{109,61,0}}, +/* 42501 */ {(12<<2)|2,{109,61,0}}, +/* 42502 */ {(12<<2)|2,{109,61,0}}, +/* 42503 */ {(12<<2)|2,{109,61,0}}, +/* 42504 */ {(12<<2)|2,{109,61,0}}, +/* 42505 */ {(12<<2)|2,{109,61,0}}, +/* 42506 */ {(12<<2)|2,{109,61,0}}, +/* 42507 */ {(12<<2)|2,{109,61,0}}, +/* 42508 */ {(12<<2)|2,{109,61,0}}, +/* 42509 */ {(12<<2)|2,{109,61,0}}, +/* 42510 */ {(12<<2)|2,{109,61,0}}, +/* 42511 */ {(12<<2)|2,{109,61,0}}, +/* 42512 */ {(12<<2)|2,{109,65,0}}, +/* 42513 */ {(12<<2)|2,{109,65,0}}, +/* 42514 */ {(12<<2)|2,{109,65,0}}, +/* 42515 */ {(12<<2)|2,{109,65,0}}, +/* 42516 */ {(12<<2)|2,{109,65,0}}, +/* 42517 */ {(12<<2)|2,{109,65,0}}, +/* 42518 */ {(12<<2)|2,{109,65,0}}, +/* 42519 */ {(12<<2)|2,{109,65,0}}, +/* 42520 */ {(12<<2)|2,{109,65,0}}, +/* 42521 */ {(12<<2)|2,{109,65,0}}, +/* 42522 */ {(12<<2)|2,{109,65,0}}, +/* 42523 */ {(12<<2)|2,{109,65,0}}, +/* 42524 */ {(12<<2)|2,{109,65,0}}, +/* 42525 */ {(12<<2)|2,{109,65,0}}, +/* 42526 */ {(12<<2)|2,{109,65,0}}, +/* 42527 */ {(12<<2)|2,{109,65,0}}, +/* 42528 */ {(12<<2)|2,{109,95,0}}, +/* 42529 */ {(12<<2)|2,{109,95,0}}, +/* 42530 */ {(12<<2)|2,{109,95,0}}, +/* 42531 */ {(12<<2)|2,{109,95,0}}, +/* 42532 */ {(12<<2)|2,{109,95,0}}, +/* 42533 */ {(12<<2)|2,{109,95,0}}, +/* 42534 */ {(12<<2)|2,{109,95,0}}, +/* 42535 */ {(12<<2)|2,{109,95,0}}, +/* 42536 */ {(12<<2)|2,{109,95,0}}, +/* 42537 */ {(12<<2)|2,{109,95,0}}, +/* 42538 */ {(12<<2)|2,{109,95,0}}, +/* 42539 */ {(12<<2)|2,{109,95,0}}, +/* 42540 */ {(12<<2)|2,{109,95,0}}, +/* 42541 */ {(12<<2)|2,{109,95,0}}, +/* 42542 */ {(12<<2)|2,{109,95,0}}, +/* 42543 */ {(12<<2)|2,{109,95,0}}, +/* 42544 */ {(12<<2)|2,{109,98,0}}, +/* 42545 */ {(12<<2)|2,{109,98,0}}, +/* 42546 */ {(12<<2)|2,{109,98,0}}, +/* 42547 */ {(12<<2)|2,{109,98,0}}, +/* 42548 */ {(12<<2)|2,{109,98,0}}, +/* 42549 */ {(12<<2)|2,{109,98,0}}, +/* 42550 */ {(12<<2)|2,{109,98,0}}, +/* 42551 */ {(12<<2)|2,{109,98,0}}, +/* 42552 */ {(12<<2)|2,{109,98,0}}, +/* 42553 */ {(12<<2)|2,{109,98,0}}, +/* 42554 */ {(12<<2)|2,{109,98,0}}, +/* 42555 */ {(12<<2)|2,{109,98,0}}, +/* 42556 */ {(12<<2)|2,{109,98,0}}, +/* 42557 */ {(12<<2)|2,{109,98,0}}, +/* 42558 */ {(12<<2)|2,{109,98,0}}, +/* 42559 */ {(12<<2)|2,{109,98,0}}, +/* 42560 */ {(12<<2)|2,{109,100,0}}, +/* 42561 */ {(12<<2)|2,{109,100,0}}, +/* 42562 */ {(12<<2)|2,{109,100,0}}, +/* 42563 */ {(12<<2)|2,{109,100,0}}, +/* 42564 */ {(12<<2)|2,{109,100,0}}, +/* 42565 */ {(12<<2)|2,{109,100,0}}, +/* 42566 */ {(12<<2)|2,{109,100,0}}, +/* 42567 */ {(12<<2)|2,{109,100,0}}, +/* 42568 */ {(12<<2)|2,{109,100,0}}, +/* 42569 */ {(12<<2)|2,{109,100,0}}, +/* 42570 */ {(12<<2)|2,{109,100,0}}, +/* 42571 */ {(12<<2)|2,{109,100,0}}, +/* 42572 */ {(12<<2)|2,{109,100,0}}, +/* 42573 */ {(12<<2)|2,{109,100,0}}, +/* 42574 */ {(12<<2)|2,{109,100,0}}, +/* 42575 */ {(12<<2)|2,{109,100,0}}, +/* 42576 */ {(12<<2)|2,{109,102,0}}, +/* 42577 */ {(12<<2)|2,{109,102,0}}, +/* 42578 */ {(12<<2)|2,{109,102,0}}, +/* 42579 */ {(12<<2)|2,{109,102,0}}, +/* 42580 */ {(12<<2)|2,{109,102,0}}, +/* 42581 */ {(12<<2)|2,{109,102,0}}, +/* 42582 */ {(12<<2)|2,{109,102,0}}, +/* 42583 */ {(12<<2)|2,{109,102,0}}, +/* 42584 */ {(12<<2)|2,{109,102,0}}, +/* 42585 */ {(12<<2)|2,{109,102,0}}, +/* 42586 */ {(12<<2)|2,{109,102,0}}, +/* 42587 */ {(12<<2)|2,{109,102,0}}, +/* 42588 */ {(12<<2)|2,{109,102,0}}, +/* 42589 */ {(12<<2)|2,{109,102,0}}, +/* 42590 */ {(12<<2)|2,{109,102,0}}, +/* 42591 */ {(12<<2)|2,{109,102,0}}, +/* 42592 */ {(12<<2)|2,{109,103,0}}, +/* 42593 */ {(12<<2)|2,{109,103,0}}, +/* 42594 */ {(12<<2)|2,{109,103,0}}, +/* 42595 */ {(12<<2)|2,{109,103,0}}, +/* 42596 */ {(12<<2)|2,{109,103,0}}, +/* 42597 */ {(12<<2)|2,{109,103,0}}, +/* 42598 */ {(12<<2)|2,{109,103,0}}, +/* 42599 */ {(12<<2)|2,{109,103,0}}, +/* 42600 */ {(12<<2)|2,{109,103,0}}, +/* 42601 */ {(12<<2)|2,{109,103,0}}, +/* 42602 */ {(12<<2)|2,{109,103,0}}, +/* 42603 */ {(12<<2)|2,{109,103,0}}, +/* 42604 */ {(12<<2)|2,{109,103,0}}, +/* 42605 */ {(12<<2)|2,{109,103,0}}, +/* 42606 */ {(12<<2)|2,{109,103,0}}, +/* 42607 */ {(12<<2)|2,{109,103,0}}, +/* 42608 */ {(12<<2)|2,{109,104,0}}, +/* 42609 */ {(12<<2)|2,{109,104,0}}, +/* 42610 */ {(12<<2)|2,{109,104,0}}, +/* 42611 */ {(12<<2)|2,{109,104,0}}, +/* 42612 */ {(12<<2)|2,{109,104,0}}, +/* 42613 */ {(12<<2)|2,{109,104,0}}, +/* 42614 */ {(12<<2)|2,{109,104,0}}, +/* 42615 */ {(12<<2)|2,{109,104,0}}, +/* 42616 */ {(12<<2)|2,{109,104,0}}, +/* 42617 */ {(12<<2)|2,{109,104,0}}, +/* 42618 */ {(12<<2)|2,{109,104,0}}, +/* 42619 */ {(12<<2)|2,{109,104,0}}, +/* 42620 */ {(12<<2)|2,{109,104,0}}, +/* 42621 */ {(12<<2)|2,{109,104,0}}, +/* 42622 */ {(12<<2)|2,{109,104,0}}, +/* 42623 */ {(12<<2)|2,{109,104,0}}, +/* 42624 */ {(12<<2)|2,{109,108,0}}, +/* 42625 */ {(12<<2)|2,{109,108,0}}, +/* 42626 */ {(12<<2)|2,{109,108,0}}, +/* 42627 */ {(12<<2)|2,{109,108,0}}, +/* 42628 */ {(12<<2)|2,{109,108,0}}, +/* 42629 */ {(12<<2)|2,{109,108,0}}, +/* 42630 */ {(12<<2)|2,{109,108,0}}, +/* 42631 */ {(12<<2)|2,{109,108,0}}, +/* 42632 */ {(12<<2)|2,{109,108,0}}, +/* 42633 */ {(12<<2)|2,{109,108,0}}, +/* 42634 */ {(12<<2)|2,{109,108,0}}, +/* 42635 */ {(12<<2)|2,{109,108,0}}, +/* 42636 */ {(12<<2)|2,{109,108,0}}, +/* 42637 */ {(12<<2)|2,{109,108,0}}, +/* 42638 */ {(12<<2)|2,{109,108,0}}, +/* 42639 */ {(12<<2)|2,{109,108,0}}, +/* 42640 */ {(12<<2)|2,{109,109,0}}, +/* 42641 */ {(12<<2)|2,{109,109,0}}, +/* 42642 */ {(12<<2)|2,{109,109,0}}, +/* 42643 */ {(12<<2)|2,{109,109,0}}, +/* 42644 */ {(12<<2)|2,{109,109,0}}, +/* 42645 */ {(12<<2)|2,{109,109,0}}, +/* 42646 */ {(12<<2)|2,{109,109,0}}, +/* 42647 */ {(12<<2)|2,{109,109,0}}, +/* 42648 */ {(12<<2)|2,{109,109,0}}, +/* 42649 */ {(12<<2)|2,{109,109,0}}, +/* 42650 */ {(12<<2)|2,{109,109,0}}, +/* 42651 */ {(12<<2)|2,{109,109,0}}, +/* 42652 */ {(12<<2)|2,{109,109,0}}, +/* 42653 */ {(12<<2)|2,{109,109,0}}, +/* 42654 */ {(12<<2)|2,{109,109,0}}, +/* 42655 */ {(12<<2)|2,{109,109,0}}, +/* 42656 */ {(12<<2)|2,{109,110,0}}, +/* 42657 */ {(12<<2)|2,{109,110,0}}, +/* 42658 */ {(12<<2)|2,{109,110,0}}, +/* 42659 */ {(12<<2)|2,{109,110,0}}, +/* 42660 */ {(12<<2)|2,{109,110,0}}, +/* 42661 */ {(12<<2)|2,{109,110,0}}, +/* 42662 */ {(12<<2)|2,{109,110,0}}, +/* 42663 */ {(12<<2)|2,{109,110,0}}, +/* 42664 */ {(12<<2)|2,{109,110,0}}, +/* 42665 */ {(12<<2)|2,{109,110,0}}, +/* 42666 */ {(12<<2)|2,{109,110,0}}, +/* 42667 */ {(12<<2)|2,{109,110,0}}, +/* 42668 */ {(12<<2)|2,{109,110,0}}, +/* 42669 */ {(12<<2)|2,{109,110,0}}, +/* 42670 */ {(12<<2)|2,{109,110,0}}, +/* 42671 */ {(12<<2)|2,{109,110,0}}, +/* 42672 */ {(12<<2)|2,{109,112,0}}, +/* 42673 */ {(12<<2)|2,{109,112,0}}, +/* 42674 */ {(12<<2)|2,{109,112,0}}, +/* 42675 */ {(12<<2)|2,{109,112,0}}, +/* 42676 */ {(12<<2)|2,{109,112,0}}, +/* 42677 */ {(12<<2)|2,{109,112,0}}, +/* 42678 */ {(12<<2)|2,{109,112,0}}, +/* 42679 */ {(12<<2)|2,{109,112,0}}, +/* 42680 */ {(12<<2)|2,{109,112,0}}, +/* 42681 */ {(12<<2)|2,{109,112,0}}, +/* 42682 */ {(12<<2)|2,{109,112,0}}, +/* 42683 */ {(12<<2)|2,{109,112,0}}, +/* 42684 */ {(12<<2)|2,{109,112,0}}, +/* 42685 */ {(12<<2)|2,{109,112,0}}, +/* 42686 */ {(12<<2)|2,{109,112,0}}, +/* 42687 */ {(12<<2)|2,{109,112,0}}, +/* 42688 */ {(12<<2)|2,{109,114,0}}, +/* 42689 */ {(12<<2)|2,{109,114,0}}, +/* 42690 */ {(12<<2)|2,{109,114,0}}, +/* 42691 */ {(12<<2)|2,{109,114,0}}, +/* 42692 */ {(12<<2)|2,{109,114,0}}, +/* 42693 */ {(12<<2)|2,{109,114,0}}, +/* 42694 */ {(12<<2)|2,{109,114,0}}, +/* 42695 */ {(12<<2)|2,{109,114,0}}, +/* 42696 */ {(12<<2)|2,{109,114,0}}, +/* 42697 */ {(12<<2)|2,{109,114,0}}, +/* 42698 */ {(12<<2)|2,{109,114,0}}, +/* 42699 */ {(12<<2)|2,{109,114,0}}, +/* 42700 */ {(12<<2)|2,{109,114,0}}, +/* 42701 */ {(12<<2)|2,{109,114,0}}, +/* 42702 */ {(12<<2)|2,{109,114,0}}, +/* 42703 */ {(12<<2)|2,{109,114,0}}, +/* 42704 */ {(12<<2)|2,{109,117,0}}, +/* 42705 */ {(12<<2)|2,{109,117,0}}, +/* 42706 */ {(12<<2)|2,{109,117,0}}, +/* 42707 */ {(12<<2)|2,{109,117,0}}, +/* 42708 */ {(12<<2)|2,{109,117,0}}, +/* 42709 */ {(12<<2)|2,{109,117,0}}, +/* 42710 */ {(12<<2)|2,{109,117,0}}, +/* 42711 */ {(12<<2)|2,{109,117,0}}, +/* 42712 */ {(12<<2)|2,{109,117,0}}, +/* 42713 */ {(12<<2)|2,{109,117,0}}, +/* 42714 */ {(12<<2)|2,{109,117,0}}, +/* 42715 */ {(12<<2)|2,{109,117,0}}, +/* 42716 */ {(12<<2)|2,{109,117,0}}, +/* 42717 */ {(12<<2)|2,{109,117,0}}, +/* 42718 */ {(12<<2)|2,{109,117,0}}, +/* 42719 */ {(12<<2)|2,{109,117,0}}, +/* 42720 */ {(13<<2)|2,{109,58,0}}, +/* 42721 */ {(13<<2)|2,{109,58,0}}, +/* 42722 */ {(13<<2)|2,{109,58,0}}, +/* 42723 */ {(13<<2)|2,{109,58,0}}, +/* 42724 */ {(13<<2)|2,{109,58,0}}, +/* 42725 */ {(13<<2)|2,{109,58,0}}, +/* 42726 */ {(13<<2)|2,{109,58,0}}, +/* 42727 */ {(13<<2)|2,{109,58,0}}, +/* 42728 */ {(13<<2)|2,{109,66,0}}, +/* 42729 */ {(13<<2)|2,{109,66,0}}, +/* 42730 */ {(13<<2)|2,{109,66,0}}, +/* 42731 */ {(13<<2)|2,{109,66,0}}, +/* 42732 */ {(13<<2)|2,{109,66,0}}, +/* 42733 */ {(13<<2)|2,{109,66,0}}, +/* 42734 */ {(13<<2)|2,{109,66,0}}, +/* 42735 */ {(13<<2)|2,{109,66,0}}, +/* 42736 */ {(13<<2)|2,{109,67,0}}, +/* 42737 */ {(13<<2)|2,{109,67,0}}, +/* 42738 */ {(13<<2)|2,{109,67,0}}, +/* 42739 */ {(13<<2)|2,{109,67,0}}, +/* 42740 */ {(13<<2)|2,{109,67,0}}, +/* 42741 */ {(13<<2)|2,{109,67,0}}, +/* 42742 */ {(13<<2)|2,{109,67,0}}, +/* 42743 */ {(13<<2)|2,{109,67,0}}, +/* 42744 */ {(13<<2)|2,{109,68,0}}, +/* 42745 */ {(13<<2)|2,{109,68,0}}, +/* 42746 */ {(13<<2)|2,{109,68,0}}, +/* 42747 */ {(13<<2)|2,{109,68,0}}, +/* 42748 */ {(13<<2)|2,{109,68,0}}, +/* 42749 */ {(13<<2)|2,{109,68,0}}, +/* 42750 */ {(13<<2)|2,{109,68,0}}, +/* 42751 */ {(13<<2)|2,{109,68,0}}, +/* 42752 */ {(13<<2)|2,{109,69,0}}, +/* 42753 */ {(13<<2)|2,{109,69,0}}, +/* 42754 */ {(13<<2)|2,{109,69,0}}, +/* 42755 */ {(13<<2)|2,{109,69,0}}, +/* 42756 */ {(13<<2)|2,{109,69,0}}, +/* 42757 */ {(13<<2)|2,{109,69,0}}, +/* 42758 */ {(13<<2)|2,{109,69,0}}, +/* 42759 */ {(13<<2)|2,{109,69,0}}, +/* 42760 */ {(13<<2)|2,{109,70,0}}, +/* 42761 */ {(13<<2)|2,{109,70,0}}, +/* 42762 */ {(13<<2)|2,{109,70,0}}, +/* 42763 */ {(13<<2)|2,{109,70,0}}, +/* 42764 */ {(13<<2)|2,{109,70,0}}, +/* 42765 */ {(13<<2)|2,{109,70,0}}, +/* 42766 */ {(13<<2)|2,{109,70,0}}, +/* 42767 */ {(13<<2)|2,{109,70,0}}, +/* 42768 */ {(13<<2)|2,{109,71,0}}, +/* 42769 */ {(13<<2)|2,{109,71,0}}, +/* 42770 */ {(13<<2)|2,{109,71,0}}, +/* 42771 */ {(13<<2)|2,{109,71,0}}, +/* 42772 */ {(13<<2)|2,{109,71,0}}, +/* 42773 */ {(13<<2)|2,{109,71,0}}, +/* 42774 */ {(13<<2)|2,{109,71,0}}, +/* 42775 */ {(13<<2)|2,{109,71,0}}, +/* 42776 */ {(13<<2)|2,{109,72,0}}, +/* 42777 */ {(13<<2)|2,{109,72,0}}, +/* 42778 */ {(13<<2)|2,{109,72,0}}, +/* 42779 */ {(13<<2)|2,{109,72,0}}, +/* 42780 */ {(13<<2)|2,{109,72,0}}, +/* 42781 */ {(13<<2)|2,{109,72,0}}, +/* 42782 */ {(13<<2)|2,{109,72,0}}, +/* 42783 */ {(13<<2)|2,{109,72,0}}, +/* 42784 */ {(13<<2)|2,{109,73,0}}, +/* 42785 */ {(13<<2)|2,{109,73,0}}, +/* 42786 */ {(13<<2)|2,{109,73,0}}, +/* 42787 */ {(13<<2)|2,{109,73,0}}, +/* 42788 */ {(13<<2)|2,{109,73,0}}, +/* 42789 */ {(13<<2)|2,{109,73,0}}, +/* 42790 */ {(13<<2)|2,{109,73,0}}, +/* 42791 */ {(13<<2)|2,{109,73,0}}, +/* 42792 */ {(13<<2)|2,{109,74,0}}, +/* 42793 */ {(13<<2)|2,{109,74,0}}, +/* 42794 */ {(13<<2)|2,{109,74,0}}, +/* 42795 */ {(13<<2)|2,{109,74,0}}, +/* 42796 */ {(13<<2)|2,{109,74,0}}, +/* 42797 */ {(13<<2)|2,{109,74,0}}, +/* 42798 */ {(13<<2)|2,{109,74,0}}, +/* 42799 */ {(13<<2)|2,{109,74,0}}, +/* 42800 */ {(13<<2)|2,{109,75,0}}, +/* 42801 */ {(13<<2)|2,{109,75,0}}, +/* 42802 */ {(13<<2)|2,{109,75,0}}, +/* 42803 */ {(13<<2)|2,{109,75,0}}, +/* 42804 */ {(13<<2)|2,{109,75,0}}, +/* 42805 */ {(13<<2)|2,{109,75,0}}, +/* 42806 */ {(13<<2)|2,{109,75,0}}, +/* 42807 */ {(13<<2)|2,{109,75,0}}, +/* 42808 */ {(13<<2)|2,{109,76,0}}, +/* 42809 */ {(13<<2)|2,{109,76,0}}, +/* 42810 */ {(13<<2)|2,{109,76,0}}, +/* 42811 */ {(13<<2)|2,{109,76,0}}, +/* 42812 */ {(13<<2)|2,{109,76,0}}, +/* 42813 */ {(13<<2)|2,{109,76,0}}, +/* 42814 */ {(13<<2)|2,{109,76,0}}, +/* 42815 */ {(13<<2)|2,{109,76,0}}, +/* 42816 */ {(13<<2)|2,{109,77,0}}, +/* 42817 */ {(13<<2)|2,{109,77,0}}, +/* 42818 */ {(13<<2)|2,{109,77,0}}, +/* 42819 */ {(13<<2)|2,{109,77,0}}, +/* 42820 */ {(13<<2)|2,{109,77,0}}, +/* 42821 */ {(13<<2)|2,{109,77,0}}, +/* 42822 */ {(13<<2)|2,{109,77,0}}, +/* 42823 */ {(13<<2)|2,{109,77,0}}, +/* 42824 */ {(13<<2)|2,{109,78,0}}, +/* 42825 */ {(13<<2)|2,{109,78,0}}, +/* 42826 */ {(13<<2)|2,{109,78,0}}, +/* 42827 */ {(13<<2)|2,{109,78,0}}, +/* 42828 */ {(13<<2)|2,{109,78,0}}, +/* 42829 */ {(13<<2)|2,{109,78,0}}, +/* 42830 */ {(13<<2)|2,{109,78,0}}, +/* 42831 */ {(13<<2)|2,{109,78,0}}, +/* 42832 */ {(13<<2)|2,{109,79,0}}, +/* 42833 */ {(13<<2)|2,{109,79,0}}, +/* 42834 */ {(13<<2)|2,{109,79,0}}, +/* 42835 */ {(13<<2)|2,{109,79,0}}, +/* 42836 */ {(13<<2)|2,{109,79,0}}, +/* 42837 */ {(13<<2)|2,{109,79,0}}, +/* 42838 */ {(13<<2)|2,{109,79,0}}, +/* 42839 */ {(13<<2)|2,{109,79,0}}, +/* 42840 */ {(13<<2)|2,{109,80,0}}, +/* 42841 */ {(13<<2)|2,{109,80,0}}, +/* 42842 */ {(13<<2)|2,{109,80,0}}, +/* 42843 */ {(13<<2)|2,{109,80,0}}, +/* 42844 */ {(13<<2)|2,{109,80,0}}, +/* 42845 */ {(13<<2)|2,{109,80,0}}, +/* 42846 */ {(13<<2)|2,{109,80,0}}, +/* 42847 */ {(13<<2)|2,{109,80,0}}, +/* 42848 */ {(13<<2)|2,{109,81,0}}, +/* 42849 */ {(13<<2)|2,{109,81,0}}, +/* 42850 */ {(13<<2)|2,{109,81,0}}, +/* 42851 */ {(13<<2)|2,{109,81,0}}, +/* 42852 */ {(13<<2)|2,{109,81,0}}, +/* 42853 */ {(13<<2)|2,{109,81,0}}, +/* 42854 */ {(13<<2)|2,{109,81,0}}, +/* 42855 */ {(13<<2)|2,{109,81,0}}, +/* 42856 */ {(13<<2)|2,{109,82,0}}, +/* 42857 */ {(13<<2)|2,{109,82,0}}, +/* 42858 */ {(13<<2)|2,{109,82,0}}, +/* 42859 */ {(13<<2)|2,{109,82,0}}, +/* 42860 */ {(13<<2)|2,{109,82,0}}, +/* 42861 */ {(13<<2)|2,{109,82,0}}, +/* 42862 */ {(13<<2)|2,{109,82,0}}, +/* 42863 */ {(13<<2)|2,{109,82,0}}, +/* 42864 */ {(13<<2)|2,{109,83,0}}, +/* 42865 */ {(13<<2)|2,{109,83,0}}, +/* 42866 */ {(13<<2)|2,{109,83,0}}, +/* 42867 */ {(13<<2)|2,{109,83,0}}, +/* 42868 */ {(13<<2)|2,{109,83,0}}, +/* 42869 */ {(13<<2)|2,{109,83,0}}, +/* 42870 */ {(13<<2)|2,{109,83,0}}, +/* 42871 */ {(13<<2)|2,{109,83,0}}, +/* 42872 */ {(13<<2)|2,{109,84,0}}, +/* 42873 */ {(13<<2)|2,{109,84,0}}, +/* 42874 */ {(13<<2)|2,{109,84,0}}, +/* 42875 */ {(13<<2)|2,{109,84,0}}, +/* 42876 */ {(13<<2)|2,{109,84,0}}, +/* 42877 */ {(13<<2)|2,{109,84,0}}, +/* 42878 */ {(13<<2)|2,{109,84,0}}, +/* 42879 */ {(13<<2)|2,{109,84,0}}, +/* 42880 */ {(13<<2)|2,{109,85,0}}, +/* 42881 */ {(13<<2)|2,{109,85,0}}, +/* 42882 */ {(13<<2)|2,{109,85,0}}, +/* 42883 */ {(13<<2)|2,{109,85,0}}, +/* 42884 */ {(13<<2)|2,{109,85,0}}, +/* 42885 */ {(13<<2)|2,{109,85,0}}, +/* 42886 */ {(13<<2)|2,{109,85,0}}, +/* 42887 */ {(13<<2)|2,{109,85,0}}, +/* 42888 */ {(13<<2)|2,{109,86,0}}, +/* 42889 */ {(13<<2)|2,{109,86,0}}, +/* 42890 */ {(13<<2)|2,{109,86,0}}, +/* 42891 */ {(13<<2)|2,{109,86,0}}, +/* 42892 */ {(13<<2)|2,{109,86,0}}, +/* 42893 */ {(13<<2)|2,{109,86,0}}, +/* 42894 */ {(13<<2)|2,{109,86,0}}, +/* 42895 */ {(13<<2)|2,{109,86,0}}, +/* 42896 */ {(13<<2)|2,{109,87,0}}, +/* 42897 */ {(13<<2)|2,{109,87,0}}, +/* 42898 */ {(13<<2)|2,{109,87,0}}, +/* 42899 */ {(13<<2)|2,{109,87,0}}, +/* 42900 */ {(13<<2)|2,{109,87,0}}, +/* 42901 */ {(13<<2)|2,{109,87,0}}, +/* 42902 */ {(13<<2)|2,{109,87,0}}, +/* 42903 */ {(13<<2)|2,{109,87,0}}, +/* 42904 */ {(13<<2)|2,{109,89,0}}, +/* 42905 */ {(13<<2)|2,{109,89,0}}, +/* 42906 */ {(13<<2)|2,{109,89,0}}, +/* 42907 */ {(13<<2)|2,{109,89,0}}, +/* 42908 */ {(13<<2)|2,{109,89,0}}, +/* 42909 */ {(13<<2)|2,{109,89,0}}, +/* 42910 */ {(13<<2)|2,{109,89,0}}, +/* 42911 */ {(13<<2)|2,{109,89,0}}, +/* 42912 */ {(13<<2)|2,{109,106,0}}, +/* 42913 */ {(13<<2)|2,{109,106,0}}, +/* 42914 */ {(13<<2)|2,{109,106,0}}, +/* 42915 */ {(13<<2)|2,{109,106,0}}, +/* 42916 */ {(13<<2)|2,{109,106,0}}, +/* 42917 */ {(13<<2)|2,{109,106,0}}, +/* 42918 */ {(13<<2)|2,{109,106,0}}, +/* 42919 */ {(13<<2)|2,{109,106,0}}, +/* 42920 */ {(13<<2)|2,{109,107,0}}, +/* 42921 */ {(13<<2)|2,{109,107,0}}, +/* 42922 */ {(13<<2)|2,{109,107,0}}, +/* 42923 */ {(13<<2)|2,{109,107,0}}, +/* 42924 */ {(13<<2)|2,{109,107,0}}, +/* 42925 */ {(13<<2)|2,{109,107,0}}, +/* 42926 */ {(13<<2)|2,{109,107,0}}, +/* 42927 */ {(13<<2)|2,{109,107,0}}, +/* 42928 */ {(13<<2)|2,{109,113,0}}, +/* 42929 */ {(13<<2)|2,{109,113,0}}, +/* 42930 */ {(13<<2)|2,{109,113,0}}, +/* 42931 */ {(13<<2)|2,{109,113,0}}, +/* 42932 */ {(13<<2)|2,{109,113,0}}, +/* 42933 */ {(13<<2)|2,{109,113,0}}, +/* 42934 */ {(13<<2)|2,{109,113,0}}, +/* 42935 */ {(13<<2)|2,{109,113,0}}, +/* 42936 */ {(13<<2)|2,{109,118,0}}, +/* 42937 */ {(13<<2)|2,{109,118,0}}, +/* 42938 */ {(13<<2)|2,{109,118,0}}, +/* 42939 */ {(13<<2)|2,{109,118,0}}, +/* 42940 */ {(13<<2)|2,{109,118,0}}, +/* 42941 */ {(13<<2)|2,{109,118,0}}, +/* 42942 */ {(13<<2)|2,{109,118,0}}, +/* 42943 */ {(13<<2)|2,{109,118,0}}, +/* 42944 */ {(13<<2)|2,{109,119,0}}, +/* 42945 */ {(13<<2)|2,{109,119,0}}, +/* 42946 */ {(13<<2)|2,{109,119,0}}, +/* 42947 */ {(13<<2)|2,{109,119,0}}, +/* 42948 */ {(13<<2)|2,{109,119,0}}, +/* 42949 */ {(13<<2)|2,{109,119,0}}, +/* 42950 */ {(13<<2)|2,{109,119,0}}, +/* 42951 */ {(13<<2)|2,{109,119,0}}, +/* 42952 */ {(13<<2)|2,{109,120,0}}, +/* 42953 */ {(13<<2)|2,{109,120,0}}, +/* 42954 */ {(13<<2)|2,{109,120,0}}, +/* 42955 */ {(13<<2)|2,{109,120,0}}, +/* 42956 */ {(13<<2)|2,{109,120,0}}, +/* 42957 */ {(13<<2)|2,{109,120,0}}, +/* 42958 */ {(13<<2)|2,{109,120,0}}, +/* 42959 */ {(13<<2)|2,{109,120,0}}, +/* 42960 */ {(13<<2)|2,{109,121,0}}, +/* 42961 */ {(13<<2)|2,{109,121,0}}, +/* 42962 */ {(13<<2)|2,{109,121,0}}, +/* 42963 */ {(13<<2)|2,{109,121,0}}, +/* 42964 */ {(13<<2)|2,{109,121,0}}, +/* 42965 */ {(13<<2)|2,{109,121,0}}, +/* 42966 */ {(13<<2)|2,{109,121,0}}, +/* 42967 */ {(13<<2)|2,{109,121,0}}, +/* 42968 */ {(13<<2)|2,{109,122,0}}, +/* 42969 */ {(13<<2)|2,{109,122,0}}, +/* 42970 */ {(13<<2)|2,{109,122,0}}, +/* 42971 */ {(13<<2)|2,{109,122,0}}, +/* 42972 */ {(13<<2)|2,{109,122,0}}, +/* 42973 */ {(13<<2)|2,{109,122,0}}, +/* 42974 */ {(13<<2)|2,{109,122,0}}, +/* 42975 */ {(13<<2)|2,{109,122,0}}, +/* 42976 */ {(14<<2)|2,{109,38,0}}, +/* 42977 */ {(14<<2)|2,{109,38,0}}, +/* 42978 */ {(14<<2)|2,{109,38,0}}, +/* 42979 */ {(14<<2)|2,{109,38,0}}, +/* 42980 */ {(14<<2)|2,{109,42,0}}, +/* 42981 */ {(14<<2)|2,{109,42,0}}, +/* 42982 */ {(14<<2)|2,{109,42,0}}, +/* 42983 */ {(14<<2)|2,{109,42,0}}, +/* 42984 */ {(14<<2)|2,{109,44,0}}, +/* 42985 */ {(14<<2)|2,{109,44,0}}, +/* 42986 */ {(14<<2)|2,{109,44,0}}, +/* 42987 */ {(14<<2)|2,{109,44,0}}, +/* 42988 */ {(14<<2)|2,{109,59,0}}, +/* 42989 */ {(14<<2)|2,{109,59,0}}, +/* 42990 */ {(14<<2)|2,{109,59,0}}, +/* 42991 */ {(14<<2)|2,{109,59,0}}, +/* 42992 */ {(14<<2)|2,{109,88,0}}, +/* 42993 */ {(14<<2)|2,{109,88,0}}, +/* 42994 */ {(14<<2)|2,{109,88,0}}, +/* 42995 */ {(14<<2)|2,{109,88,0}}, +/* 42996 */ {(14<<2)|2,{109,90,0}}, +/* 42997 */ {(14<<2)|2,{109,90,0}}, +/* 42998 */ {(14<<2)|2,{109,90,0}}, +/* 42999 */ {(14<<2)|2,{109,90,0}}, +/* 43000 */ {(16<<2)|2,{109,33,0}}, +/* 43001 */ {(16<<2)|2,{109,34,0}}, +/* 43002 */ {(16<<2)|2,{109,40,0}}, +/* 43003 */ {(16<<2)|2,{109,41,0}}, +/* 43004 */ {(16<<2)|2,{109,63,0}}, +/* 43005 */ {(6<<2)|1,{109,0,0}}, +/* 43006 */ {(6<<2)|1,{109,0,0}}, +/* 43007 */ {(6<<2)|1,{109,0,0}}, +/* 43008 */ {(16<<2)|3,{110,48,48}}, +/* 43009 */ {(16<<2)|3,{110,48,49}}, +/* 43010 */ {(16<<2)|3,{110,48,50}}, +/* 43011 */ {(16<<2)|3,{110,48,97}}, +/* 43012 */ {(16<<2)|3,{110,48,99}}, +/* 43013 */ {(16<<2)|3,{110,48,101}}, +/* 43014 */ {(16<<2)|3,{110,48,105}}, +/* 43015 */ {(16<<2)|3,{110,48,111}}, +/* 43016 */ {(16<<2)|3,{110,48,115}}, +/* 43017 */ {(16<<2)|3,{110,48,116}}, +/* 43018 */ {(11<<2)|2,{110,48,0}}, +/* 43019 */ {(11<<2)|2,{110,48,0}}, +/* 43020 */ {(11<<2)|2,{110,48,0}}, +/* 43021 */ {(11<<2)|2,{110,48,0}}, +/* 43022 */ {(11<<2)|2,{110,48,0}}, +/* 43023 */ {(11<<2)|2,{110,48,0}}, +/* 43024 */ {(11<<2)|2,{110,48,0}}, +/* 43025 */ {(11<<2)|2,{110,48,0}}, +/* 43026 */ {(11<<2)|2,{110,48,0}}, +/* 43027 */ {(11<<2)|2,{110,48,0}}, +/* 43028 */ {(11<<2)|2,{110,48,0}}, +/* 43029 */ {(11<<2)|2,{110,48,0}}, +/* 43030 */ {(11<<2)|2,{110,48,0}}, +/* 43031 */ {(11<<2)|2,{110,48,0}}, +/* 43032 */ {(11<<2)|2,{110,48,0}}, +/* 43033 */ {(11<<2)|2,{110,48,0}}, +/* 43034 */ {(11<<2)|2,{110,48,0}}, +/* 43035 */ {(11<<2)|2,{110,48,0}}, +/* 43036 */ {(11<<2)|2,{110,48,0}}, +/* 43037 */ {(11<<2)|2,{110,48,0}}, +/* 43038 */ {(11<<2)|2,{110,48,0}}, +/* 43039 */ {(11<<2)|2,{110,48,0}}, +/* 43040 */ {(16<<2)|3,{110,49,48}}, +/* 43041 */ {(16<<2)|3,{110,49,49}}, +/* 43042 */ {(16<<2)|3,{110,49,50}}, +/* 43043 */ {(16<<2)|3,{110,49,97}}, +/* 43044 */ {(16<<2)|3,{110,49,99}}, +/* 43045 */ {(16<<2)|3,{110,49,101}}, +/* 43046 */ {(16<<2)|3,{110,49,105}}, +/* 43047 */ {(16<<2)|3,{110,49,111}}, +/* 43048 */ {(16<<2)|3,{110,49,115}}, +/* 43049 */ {(16<<2)|3,{110,49,116}}, +/* 43050 */ {(11<<2)|2,{110,49,0}}, +/* 43051 */ {(11<<2)|2,{110,49,0}}, +/* 43052 */ {(11<<2)|2,{110,49,0}}, +/* 43053 */ {(11<<2)|2,{110,49,0}}, +/* 43054 */ {(11<<2)|2,{110,49,0}}, +/* 43055 */ {(11<<2)|2,{110,49,0}}, +/* 43056 */ {(11<<2)|2,{110,49,0}}, +/* 43057 */ {(11<<2)|2,{110,49,0}}, +/* 43058 */ {(11<<2)|2,{110,49,0}}, +/* 43059 */ {(11<<2)|2,{110,49,0}}, +/* 43060 */ {(11<<2)|2,{110,49,0}}, +/* 43061 */ {(11<<2)|2,{110,49,0}}, +/* 43062 */ {(11<<2)|2,{110,49,0}}, +/* 43063 */ {(11<<2)|2,{110,49,0}}, +/* 43064 */ {(11<<2)|2,{110,49,0}}, +/* 43065 */ {(11<<2)|2,{110,49,0}}, +/* 43066 */ {(11<<2)|2,{110,49,0}}, +/* 43067 */ {(11<<2)|2,{110,49,0}}, +/* 43068 */ {(11<<2)|2,{110,49,0}}, +/* 43069 */ {(11<<2)|2,{110,49,0}}, +/* 43070 */ {(11<<2)|2,{110,49,0}}, +/* 43071 */ {(11<<2)|2,{110,49,0}}, +/* 43072 */ {(16<<2)|3,{110,50,48}}, +/* 43073 */ {(16<<2)|3,{110,50,49}}, +/* 43074 */ {(16<<2)|3,{110,50,50}}, +/* 43075 */ {(16<<2)|3,{110,50,97}}, +/* 43076 */ {(16<<2)|3,{110,50,99}}, +/* 43077 */ {(16<<2)|3,{110,50,101}}, +/* 43078 */ {(16<<2)|3,{110,50,105}}, +/* 43079 */ {(16<<2)|3,{110,50,111}}, +/* 43080 */ {(16<<2)|3,{110,50,115}}, +/* 43081 */ {(16<<2)|3,{110,50,116}}, +/* 43082 */ {(11<<2)|2,{110,50,0}}, +/* 43083 */ {(11<<2)|2,{110,50,0}}, +/* 43084 */ {(11<<2)|2,{110,50,0}}, +/* 43085 */ {(11<<2)|2,{110,50,0}}, +/* 43086 */ {(11<<2)|2,{110,50,0}}, +/* 43087 */ {(11<<2)|2,{110,50,0}}, +/* 43088 */ {(11<<2)|2,{110,50,0}}, +/* 43089 */ {(11<<2)|2,{110,50,0}}, +/* 43090 */ {(11<<2)|2,{110,50,0}}, +/* 43091 */ {(11<<2)|2,{110,50,0}}, +/* 43092 */ {(11<<2)|2,{110,50,0}}, +/* 43093 */ {(11<<2)|2,{110,50,0}}, +/* 43094 */ {(11<<2)|2,{110,50,0}}, +/* 43095 */ {(11<<2)|2,{110,50,0}}, +/* 43096 */ {(11<<2)|2,{110,50,0}}, +/* 43097 */ {(11<<2)|2,{110,50,0}}, +/* 43098 */ {(11<<2)|2,{110,50,0}}, +/* 43099 */ {(11<<2)|2,{110,50,0}}, +/* 43100 */ {(11<<2)|2,{110,50,0}}, +/* 43101 */ {(11<<2)|2,{110,50,0}}, +/* 43102 */ {(11<<2)|2,{110,50,0}}, +/* 43103 */ {(11<<2)|2,{110,50,0}}, +/* 43104 */ {(16<<2)|3,{110,97,48}}, +/* 43105 */ {(16<<2)|3,{110,97,49}}, +/* 43106 */ {(16<<2)|3,{110,97,50}}, +/* 43107 */ {(16<<2)|3,{110,97,97}}, +/* 43108 */ {(16<<2)|3,{110,97,99}}, +/* 43109 */ {(16<<2)|3,{110,97,101}}, +/* 43110 */ {(16<<2)|3,{110,97,105}}, +/* 43111 */ {(16<<2)|3,{110,97,111}}, +/* 43112 */ {(16<<2)|3,{110,97,115}}, +/* 43113 */ {(16<<2)|3,{110,97,116}}, +/* 43114 */ {(11<<2)|2,{110,97,0}}, +/* 43115 */ {(11<<2)|2,{110,97,0}}, +/* 43116 */ {(11<<2)|2,{110,97,0}}, +/* 43117 */ {(11<<2)|2,{110,97,0}}, +/* 43118 */ {(11<<2)|2,{110,97,0}}, +/* 43119 */ {(11<<2)|2,{110,97,0}}, +/* 43120 */ {(11<<2)|2,{110,97,0}}, +/* 43121 */ {(11<<2)|2,{110,97,0}}, +/* 43122 */ {(11<<2)|2,{110,97,0}}, +/* 43123 */ {(11<<2)|2,{110,97,0}}, +/* 43124 */ {(11<<2)|2,{110,97,0}}, +/* 43125 */ {(11<<2)|2,{110,97,0}}, +/* 43126 */ {(11<<2)|2,{110,97,0}}, +/* 43127 */ {(11<<2)|2,{110,97,0}}, +/* 43128 */ {(11<<2)|2,{110,97,0}}, +/* 43129 */ {(11<<2)|2,{110,97,0}}, +/* 43130 */ {(11<<2)|2,{110,97,0}}, +/* 43131 */ {(11<<2)|2,{110,97,0}}, +/* 43132 */ {(11<<2)|2,{110,97,0}}, +/* 43133 */ {(11<<2)|2,{110,97,0}}, +/* 43134 */ {(11<<2)|2,{110,97,0}}, +/* 43135 */ {(11<<2)|2,{110,97,0}}, +/* 43136 */ {(16<<2)|3,{110,99,48}}, +/* 43137 */ {(16<<2)|3,{110,99,49}}, +/* 43138 */ {(16<<2)|3,{110,99,50}}, +/* 43139 */ {(16<<2)|3,{110,99,97}}, +/* 43140 */ {(16<<2)|3,{110,99,99}}, +/* 43141 */ {(16<<2)|3,{110,99,101}}, +/* 43142 */ {(16<<2)|3,{110,99,105}}, +/* 43143 */ {(16<<2)|3,{110,99,111}}, +/* 43144 */ {(16<<2)|3,{110,99,115}}, +/* 43145 */ {(16<<2)|3,{110,99,116}}, +/* 43146 */ {(11<<2)|2,{110,99,0}}, +/* 43147 */ {(11<<2)|2,{110,99,0}}, +/* 43148 */ {(11<<2)|2,{110,99,0}}, +/* 43149 */ {(11<<2)|2,{110,99,0}}, +/* 43150 */ {(11<<2)|2,{110,99,0}}, +/* 43151 */ {(11<<2)|2,{110,99,0}}, +/* 43152 */ {(11<<2)|2,{110,99,0}}, +/* 43153 */ {(11<<2)|2,{110,99,0}}, +/* 43154 */ {(11<<2)|2,{110,99,0}}, +/* 43155 */ {(11<<2)|2,{110,99,0}}, +/* 43156 */ {(11<<2)|2,{110,99,0}}, +/* 43157 */ {(11<<2)|2,{110,99,0}}, +/* 43158 */ {(11<<2)|2,{110,99,0}}, +/* 43159 */ {(11<<2)|2,{110,99,0}}, +/* 43160 */ {(11<<2)|2,{110,99,0}}, +/* 43161 */ {(11<<2)|2,{110,99,0}}, +/* 43162 */ {(11<<2)|2,{110,99,0}}, +/* 43163 */ {(11<<2)|2,{110,99,0}}, +/* 43164 */ {(11<<2)|2,{110,99,0}}, +/* 43165 */ {(11<<2)|2,{110,99,0}}, +/* 43166 */ {(11<<2)|2,{110,99,0}}, +/* 43167 */ {(11<<2)|2,{110,99,0}}, +/* 43168 */ {(16<<2)|3,{110,101,48}}, +/* 43169 */ {(16<<2)|3,{110,101,49}}, +/* 43170 */ {(16<<2)|3,{110,101,50}}, +/* 43171 */ {(16<<2)|3,{110,101,97}}, +/* 43172 */ {(16<<2)|3,{110,101,99}}, +/* 43173 */ {(16<<2)|3,{110,101,101}}, +/* 43174 */ {(16<<2)|3,{110,101,105}}, +/* 43175 */ {(16<<2)|3,{110,101,111}}, +/* 43176 */ {(16<<2)|3,{110,101,115}}, +/* 43177 */ {(16<<2)|3,{110,101,116}}, +/* 43178 */ {(11<<2)|2,{110,101,0}}, +/* 43179 */ {(11<<2)|2,{110,101,0}}, +/* 43180 */ {(11<<2)|2,{110,101,0}}, +/* 43181 */ {(11<<2)|2,{110,101,0}}, +/* 43182 */ {(11<<2)|2,{110,101,0}}, +/* 43183 */ {(11<<2)|2,{110,101,0}}, +/* 43184 */ {(11<<2)|2,{110,101,0}}, +/* 43185 */ {(11<<2)|2,{110,101,0}}, +/* 43186 */ {(11<<2)|2,{110,101,0}}, +/* 43187 */ {(11<<2)|2,{110,101,0}}, +/* 43188 */ {(11<<2)|2,{110,101,0}}, +/* 43189 */ {(11<<2)|2,{110,101,0}}, +/* 43190 */ {(11<<2)|2,{110,101,0}}, +/* 43191 */ {(11<<2)|2,{110,101,0}}, +/* 43192 */ {(11<<2)|2,{110,101,0}}, +/* 43193 */ {(11<<2)|2,{110,101,0}}, +/* 43194 */ {(11<<2)|2,{110,101,0}}, +/* 43195 */ {(11<<2)|2,{110,101,0}}, +/* 43196 */ {(11<<2)|2,{110,101,0}}, +/* 43197 */ {(11<<2)|2,{110,101,0}}, +/* 43198 */ {(11<<2)|2,{110,101,0}}, +/* 43199 */ {(11<<2)|2,{110,101,0}}, +/* 43200 */ {(16<<2)|3,{110,105,48}}, +/* 43201 */ {(16<<2)|3,{110,105,49}}, +/* 43202 */ {(16<<2)|3,{110,105,50}}, +/* 43203 */ {(16<<2)|3,{110,105,97}}, +/* 43204 */ {(16<<2)|3,{110,105,99}}, +/* 43205 */ {(16<<2)|3,{110,105,101}}, +/* 43206 */ {(16<<2)|3,{110,105,105}}, +/* 43207 */ {(16<<2)|3,{110,105,111}}, +/* 43208 */ {(16<<2)|3,{110,105,115}}, +/* 43209 */ {(16<<2)|3,{110,105,116}}, +/* 43210 */ {(11<<2)|2,{110,105,0}}, +/* 43211 */ {(11<<2)|2,{110,105,0}}, +/* 43212 */ {(11<<2)|2,{110,105,0}}, +/* 43213 */ {(11<<2)|2,{110,105,0}}, +/* 43214 */ {(11<<2)|2,{110,105,0}}, +/* 43215 */ {(11<<2)|2,{110,105,0}}, +/* 43216 */ {(11<<2)|2,{110,105,0}}, +/* 43217 */ {(11<<2)|2,{110,105,0}}, +/* 43218 */ {(11<<2)|2,{110,105,0}}, +/* 43219 */ {(11<<2)|2,{110,105,0}}, +/* 43220 */ {(11<<2)|2,{110,105,0}}, +/* 43221 */ {(11<<2)|2,{110,105,0}}, +/* 43222 */ {(11<<2)|2,{110,105,0}}, +/* 43223 */ {(11<<2)|2,{110,105,0}}, +/* 43224 */ {(11<<2)|2,{110,105,0}}, +/* 43225 */ {(11<<2)|2,{110,105,0}}, +/* 43226 */ {(11<<2)|2,{110,105,0}}, +/* 43227 */ {(11<<2)|2,{110,105,0}}, +/* 43228 */ {(11<<2)|2,{110,105,0}}, +/* 43229 */ {(11<<2)|2,{110,105,0}}, +/* 43230 */ {(11<<2)|2,{110,105,0}}, +/* 43231 */ {(11<<2)|2,{110,105,0}}, +/* 43232 */ {(16<<2)|3,{110,111,48}}, +/* 43233 */ {(16<<2)|3,{110,111,49}}, +/* 43234 */ {(16<<2)|3,{110,111,50}}, +/* 43235 */ {(16<<2)|3,{110,111,97}}, +/* 43236 */ {(16<<2)|3,{110,111,99}}, +/* 43237 */ {(16<<2)|3,{110,111,101}}, +/* 43238 */ {(16<<2)|3,{110,111,105}}, +/* 43239 */ {(16<<2)|3,{110,111,111}}, +/* 43240 */ {(16<<2)|3,{110,111,115}}, +/* 43241 */ {(16<<2)|3,{110,111,116}}, +/* 43242 */ {(11<<2)|2,{110,111,0}}, +/* 43243 */ {(11<<2)|2,{110,111,0}}, +/* 43244 */ {(11<<2)|2,{110,111,0}}, +/* 43245 */ {(11<<2)|2,{110,111,0}}, +/* 43246 */ {(11<<2)|2,{110,111,0}}, +/* 43247 */ {(11<<2)|2,{110,111,0}}, +/* 43248 */ {(11<<2)|2,{110,111,0}}, +/* 43249 */ {(11<<2)|2,{110,111,0}}, +/* 43250 */ {(11<<2)|2,{110,111,0}}, +/* 43251 */ {(11<<2)|2,{110,111,0}}, +/* 43252 */ {(11<<2)|2,{110,111,0}}, +/* 43253 */ {(11<<2)|2,{110,111,0}}, +/* 43254 */ {(11<<2)|2,{110,111,0}}, +/* 43255 */ {(11<<2)|2,{110,111,0}}, +/* 43256 */ {(11<<2)|2,{110,111,0}}, +/* 43257 */ {(11<<2)|2,{110,111,0}}, +/* 43258 */ {(11<<2)|2,{110,111,0}}, +/* 43259 */ {(11<<2)|2,{110,111,0}}, +/* 43260 */ {(11<<2)|2,{110,111,0}}, +/* 43261 */ {(11<<2)|2,{110,111,0}}, +/* 43262 */ {(11<<2)|2,{110,111,0}}, +/* 43263 */ {(11<<2)|2,{110,111,0}}, +/* 43264 */ {(16<<2)|3,{110,115,48}}, +/* 43265 */ {(16<<2)|3,{110,115,49}}, +/* 43266 */ {(16<<2)|3,{110,115,50}}, +/* 43267 */ {(16<<2)|3,{110,115,97}}, +/* 43268 */ {(16<<2)|3,{110,115,99}}, +/* 43269 */ {(16<<2)|3,{110,115,101}}, +/* 43270 */ {(16<<2)|3,{110,115,105}}, +/* 43271 */ {(16<<2)|3,{110,115,111}}, +/* 43272 */ {(16<<2)|3,{110,115,115}}, +/* 43273 */ {(16<<2)|3,{110,115,116}}, +/* 43274 */ {(11<<2)|2,{110,115,0}}, +/* 43275 */ {(11<<2)|2,{110,115,0}}, +/* 43276 */ {(11<<2)|2,{110,115,0}}, +/* 43277 */ {(11<<2)|2,{110,115,0}}, +/* 43278 */ {(11<<2)|2,{110,115,0}}, +/* 43279 */ {(11<<2)|2,{110,115,0}}, +/* 43280 */ {(11<<2)|2,{110,115,0}}, +/* 43281 */ {(11<<2)|2,{110,115,0}}, +/* 43282 */ {(11<<2)|2,{110,115,0}}, +/* 43283 */ {(11<<2)|2,{110,115,0}}, +/* 43284 */ {(11<<2)|2,{110,115,0}}, +/* 43285 */ {(11<<2)|2,{110,115,0}}, +/* 43286 */ {(11<<2)|2,{110,115,0}}, +/* 43287 */ {(11<<2)|2,{110,115,0}}, +/* 43288 */ {(11<<2)|2,{110,115,0}}, +/* 43289 */ {(11<<2)|2,{110,115,0}}, +/* 43290 */ {(11<<2)|2,{110,115,0}}, +/* 43291 */ {(11<<2)|2,{110,115,0}}, +/* 43292 */ {(11<<2)|2,{110,115,0}}, +/* 43293 */ {(11<<2)|2,{110,115,0}}, +/* 43294 */ {(11<<2)|2,{110,115,0}}, +/* 43295 */ {(11<<2)|2,{110,115,0}}, +/* 43296 */ {(16<<2)|3,{110,116,48}}, +/* 43297 */ {(16<<2)|3,{110,116,49}}, +/* 43298 */ {(16<<2)|3,{110,116,50}}, +/* 43299 */ {(16<<2)|3,{110,116,97}}, +/* 43300 */ {(16<<2)|3,{110,116,99}}, +/* 43301 */ {(16<<2)|3,{110,116,101}}, +/* 43302 */ {(16<<2)|3,{110,116,105}}, +/* 43303 */ {(16<<2)|3,{110,116,111}}, +/* 43304 */ {(16<<2)|3,{110,116,115}}, +/* 43305 */ {(16<<2)|3,{110,116,116}}, +/* 43306 */ {(11<<2)|2,{110,116,0}}, +/* 43307 */ {(11<<2)|2,{110,116,0}}, +/* 43308 */ {(11<<2)|2,{110,116,0}}, +/* 43309 */ {(11<<2)|2,{110,116,0}}, +/* 43310 */ {(11<<2)|2,{110,116,0}}, +/* 43311 */ {(11<<2)|2,{110,116,0}}, +/* 43312 */ {(11<<2)|2,{110,116,0}}, +/* 43313 */ {(11<<2)|2,{110,116,0}}, +/* 43314 */ {(11<<2)|2,{110,116,0}}, +/* 43315 */ {(11<<2)|2,{110,116,0}}, +/* 43316 */ {(11<<2)|2,{110,116,0}}, +/* 43317 */ {(11<<2)|2,{110,116,0}}, +/* 43318 */ {(11<<2)|2,{110,116,0}}, +/* 43319 */ {(11<<2)|2,{110,116,0}}, +/* 43320 */ {(11<<2)|2,{110,116,0}}, +/* 43321 */ {(11<<2)|2,{110,116,0}}, +/* 43322 */ {(11<<2)|2,{110,116,0}}, +/* 43323 */ {(11<<2)|2,{110,116,0}}, +/* 43324 */ {(11<<2)|2,{110,116,0}}, +/* 43325 */ {(11<<2)|2,{110,116,0}}, +/* 43326 */ {(11<<2)|2,{110,116,0}}, +/* 43327 */ {(11<<2)|2,{110,116,0}}, +/* 43328 */ {(12<<2)|2,{110,32,0}}, +/* 43329 */ {(12<<2)|2,{110,32,0}}, +/* 43330 */ {(12<<2)|2,{110,32,0}}, +/* 43331 */ {(12<<2)|2,{110,32,0}}, +/* 43332 */ {(12<<2)|2,{110,32,0}}, +/* 43333 */ {(12<<2)|2,{110,32,0}}, +/* 43334 */ {(12<<2)|2,{110,32,0}}, +/* 43335 */ {(12<<2)|2,{110,32,0}}, +/* 43336 */ {(12<<2)|2,{110,32,0}}, +/* 43337 */ {(12<<2)|2,{110,32,0}}, +/* 43338 */ {(12<<2)|2,{110,32,0}}, +/* 43339 */ {(12<<2)|2,{110,32,0}}, +/* 43340 */ {(12<<2)|2,{110,32,0}}, +/* 43341 */ {(12<<2)|2,{110,32,0}}, +/* 43342 */ {(12<<2)|2,{110,32,0}}, +/* 43343 */ {(12<<2)|2,{110,32,0}}, +/* 43344 */ {(12<<2)|2,{110,37,0}}, +/* 43345 */ {(12<<2)|2,{110,37,0}}, +/* 43346 */ {(12<<2)|2,{110,37,0}}, +/* 43347 */ {(12<<2)|2,{110,37,0}}, +/* 43348 */ {(12<<2)|2,{110,37,0}}, +/* 43349 */ {(12<<2)|2,{110,37,0}}, +/* 43350 */ {(12<<2)|2,{110,37,0}}, +/* 43351 */ {(12<<2)|2,{110,37,0}}, +/* 43352 */ {(12<<2)|2,{110,37,0}}, +/* 43353 */ {(12<<2)|2,{110,37,0}}, +/* 43354 */ {(12<<2)|2,{110,37,0}}, +/* 43355 */ {(12<<2)|2,{110,37,0}}, +/* 43356 */ {(12<<2)|2,{110,37,0}}, +/* 43357 */ {(12<<2)|2,{110,37,0}}, +/* 43358 */ {(12<<2)|2,{110,37,0}}, +/* 43359 */ {(12<<2)|2,{110,37,0}}, +/* 43360 */ {(12<<2)|2,{110,45,0}}, +/* 43361 */ {(12<<2)|2,{110,45,0}}, +/* 43362 */ {(12<<2)|2,{110,45,0}}, +/* 43363 */ {(12<<2)|2,{110,45,0}}, +/* 43364 */ {(12<<2)|2,{110,45,0}}, +/* 43365 */ {(12<<2)|2,{110,45,0}}, +/* 43366 */ {(12<<2)|2,{110,45,0}}, +/* 43367 */ {(12<<2)|2,{110,45,0}}, +/* 43368 */ {(12<<2)|2,{110,45,0}}, +/* 43369 */ {(12<<2)|2,{110,45,0}}, +/* 43370 */ {(12<<2)|2,{110,45,0}}, +/* 43371 */ {(12<<2)|2,{110,45,0}}, +/* 43372 */ {(12<<2)|2,{110,45,0}}, +/* 43373 */ {(12<<2)|2,{110,45,0}}, +/* 43374 */ {(12<<2)|2,{110,45,0}}, +/* 43375 */ {(12<<2)|2,{110,45,0}}, +/* 43376 */ {(12<<2)|2,{110,46,0}}, +/* 43377 */ {(12<<2)|2,{110,46,0}}, +/* 43378 */ {(12<<2)|2,{110,46,0}}, +/* 43379 */ {(12<<2)|2,{110,46,0}}, +/* 43380 */ {(12<<2)|2,{110,46,0}}, +/* 43381 */ {(12<<2)|2,{110,46,0}}, +/* 43382 */ {(12<<2)|2,{110,46,0}}, +/* 43383 */ {(12<<2)|2,{110,46,0}}, +/* 43384 */ {(12<<2)|2,{110,46,0}}, +/* 43385 */ {(12<<2)|2,{110,46,0}}, +/* 43386 */ {(12<<2)|2,{110,46,0}}, +/* 43387 */ {(12<<2)|2,{110,46,0}}, +/* 43388 */ {(12<<2)|2,{110,46,0}}, +/* 43389 */ {(12<<2)|2,{110,46,0}}, +/* 43390 */ {(12<<2)|2,{110,46,0}}, +/* 43391 */ {(12<<2)|2,{110,46,0}}, +/* 43392 */ {(12<<2)|2,{110,47,0}}, +/* 43393 */ {(12<<2)|2,{110,47,0}}, +/* 43394 */ {(12<<2)|2,{110,47,0}}, +/* 43395 */ {(12<<2)|2,{110,47,0}}, +/* 43396 */ {(12<<2)|2,{110,47,0}}, +/* 43397 */ {(12<<2)|2,{110,47,0}}, +/* 43398 */ {(12<<2)|2,{110,47,0}}, +/* 43399 */ {(12<<2)|2,{110,47,0}}, +/* 43400 */ {(12<<2)|2,{110,47,0}}, +/* 43401 */ {(12<<2)|2,{110,47,0}}, +/* 43402 */ {(12<<2)|2,{110,47,0}}, +/* 43403 */ {(12<<2)|2,{110,47,0}}, +/* 43404 */ {(12<<2)|2,{110,47,0}}, +/* 43405 */ {(12<<2)|2,{110,47,0}}, +/* 43406 */ {(12<<2)|2,{110,47,0}}, +/* 43407 */ {(12<<2)|2,{110,47,0}}, +/* 43408 */ {(12<<2)|2,{110,51,0}}, +/* 43409 */ {(12<<2)|2,{110,51,0}}, +/* 43410 */ {(12<<2)|2,{110,51,0}}, +/* 43411 */ {(12<<2)|2,{110,51,0}}, +/* 43412 */ {(12<<2)|2,{110,51,0}}, +/* 43413 */ {(12<<2)|2,{110,51,0}}, +/* 43414 */ {(12<<2)|2,{110,51,0}}, +/* 43415 */ {(12<<2)|2,{110,51,0}}, +/* 43416 */ {(12<<2)|2,{110,51,0}}, +/* 43417 */ {(12<<2)|2,{110,51,0}}, +/* 43418 */ {(12<<2)|2,{110,51,0}}, +/* 43419 */ {(12<<2)|2,{110,51,0}}, +/* 43420 */ {(12<<2)|2,{110,51,0}}, +/* 43421 */ {(12<<2)|2,{110,51,0}}, +/* 43422 */ {(12<<2)|2,{110,51,0}}, +/* 43423 */ {(12<<2)|2,{110,51,0}}, +/* 43424 */ {(12<<2)|2,{110,52,0}}, +/* 43425 */ {(12<<2)|2,{110,52,0}}, +/* 43426 */ {(12<<2)|2,{110,52,0}}, +/* 43427 */ {(12<<2)|2,{110,52,0}}, +/* 43428 */ {(12<<2)|2,{110,52,0}}, +/* 43429 */ {(12<<2)|2,{110,52,0}}, +/* 43430 */ {(12<<2)|2,{110,52,0}}, +/* 43431 */ {(12<<2)|2,{110,52,0}}, +/* 43432 */ {(12<<2)|2,{110,52,0}}, +/* 43433 */ {(12<<2)|2,{110,52,0}}, +/* 43434 */ {(12<<2)|2,{110,52,0}}, +/* 43435 */ {(12<<2)|2,{110,52,0}}, +/* 43436 */ {(12<<2)|2,{110,52,0}}, +/* 43437 */ {(12<<2)|2,{110,52,0}}, +/* 43438 */ {(12<<2)|2,{110,52,0}}, +/* 43439 */ {(12<<2)|2,{110,52,0}}, +/* 43440 */ {(12<<2)|2,{110,53,0}}, +/* 43441 */ {(12<<2)|2,{110,53,0}}, +/* 43442 */ {(12<<2)|2,{110,53,0}}, +/* 43443 */ {(12<<2)|2,{110,53,0}}, +/* 43444 */ {(12<<2)|2,{110,53,0}}, +/* 43445 */ {(12<<2)|2,{110,53,0}}, +/* 43446 */ {(12<<2)|2,{110,53,0}}, +/* 43447 */ {(12<<2)|2,{110,53,0}}, +/* 43448 */ {(12<<2)|2,{110,53,0}}, +/* 43449 */ {(12<<2)|2,{110,53,0}}, +/* 43450 */ {(12<<2)|2,{110,53,0}}, +/* 43451 */ {(12<<2)|2,{110,53,0}}, +/* 43452 */ {(12<<2)|2,{110,53,0}}, +/* 43453 */ {(12<<2)|2,{110,53,0}}, +/* 43454 */ {(12<<2)|2,{110,53,0}}, +/* 43455 */ {(12<<2)|2,{110,53,0}}, +/* 43456 */ {(12<<2)|2,{110,54,0}}, +/* 43457 */ {(12<<2)|2,{110,54,0}}, +/* 43458 */ {(12<<2)|2,{110,54,0}}, +/* 43459 */ {(12<<2)|2,{110,54,0}}, +/* 43460 */ {(12<<2)|2,{110,54,0}}, +/* 43461 */ {(12<<2)|2,{110,54,0}}, +/* 43462 */ {(12<<2)|2,{110,54,0}}, +/* 43463 */ {(12<<2)|2,{110,54,0}}, +/* 43464 */ {(12<<2)|2,{110,54,0}}, +/* 43465 */ {(12<<2)|2,{110,54,0}}, +/* 43466 */ {(12<<2)|2,{110,54,0}}, +/* 43467 */ {(12<<2)|2,{110,54,0}}, +/* 43468 */ {(12<<2)|2,{110,54,0}}, +/* 43469 */ {(12<<2)|2,{110,54,0}}, +/* 43470 */ {(12<<2)|2,{110,54,0}}, +/* 43471 */ {(12<<2)|2,{110,54,0}}, +/* 43472 */ {(12<<2)|2,{110,55,0}}, +/* 43473 */ {(12<<2)|2,{110,55,0}}, +/* 43474 */ {(12<<2)|2,{110,55,0}}, +/* 43475 */ {(12<<2)|2,{110,55,0}}, +/* 43476 */ {(12<<2)|2,{110,55,0}}, +/* 43477 */ {(12<<2)|2,{110,55,0}}, +/* 43478 */ {(12<<2)|2,{110,55,0}}, +/* 43479 */ {(12<<2)|2,{110,55,0}}, +/* 43480 */ {(12<<2)|2,{110,55,0}}, +/* 43481 */ {(12<<2)|2,{110,55,0}}, +/* 43482 */ {(12<<2)|2,{110,55,0}}, +/* 43483 */ {(12<<2)|2,{110,55,0}}, +/* 43484 */ {(12<<2)|2,{110,55,0}}, +/* 43485 */ {(12<<2)|2,{110,55,0}}, +/* 43486 */ {(12<<2)|2,{110,55,0}}, +/* 43487 */ {(12<<2)|2,{110,55,0}}, +/* 43488 */ {(12<<2)|2,{110,56,0}}, +/* 43489 */ {(12<<2)|2,{110,56,0}}, +/* 43490 */ {(12<<2)|2,{110,56,0}}, +/* 43491 */ {(12<<2)|2,{110,56,0}}, +/* 43492 */ {(12<<2)|2,{110,56,0}}, +/* 43493 */ {(12<<2)|2,{110,56,0}}, +/* 43494 */ {(12<<2)|2,{110,56,0}}, +/* 43495 */ {(12<<2)|2,{110,56,0}}, +/* 43496 */ {(12<<2)|2,{110,56,0}}, +/* 43497 */ {(12<<2)|2,{110,56,0}}, +/* 43498 */ {(12<<2)|2,{110,56,0}}, +/* 43499 */ {(12<<2)|2,{110,56,0}}, +/* 43500 */ {(12<<2)|2,{110,56,0}}, +/* 43501 */ {(12<<2)|2,{110,56,0}}, +/* 43502 */ {(12<<2)|2,{110,56,0}}, +/* 43503 */ {(12<<2)|2,{110,56,0}}, +/* 43504 */ {(12<<2)|2,{110,57,0}}, +/* 43505 */ {(12<<2)|2,{110,57,0}}, +/* 43506 */ {(12<<2)|2,{110,57,0}}, +/* 43507 */ {(12<<2)|2,{110,57,0}}, +/* 43508 */ {(12<<2)|2,{110,57,0}}, +/* 43509 */ {(12<<2)|2,{110,57,0}}, +/* 43510 */ {(12<<2)|2,{110,57,0}}, +/* 43511 */ {(12<<2)|2,{110,57,0}}, +/* 43512 */ {(12<<2)|2,{110,57,0}}, +/* 43513 */ {(12<<2)|2,{110,57,0}}, +/* 43514 */ {(12<<2)|2,{110,57,0}}, +/* 43515 */ {(12<<2)|2,{110,57,0}}, +/* 43516 */ {(12<<2)|2,{110,57,0}}, +/* 43517 */ {(12<<2)|2,{110,57,0}}, +/* 43518 */ {(12<<2)|2,{110,57,0}}, +/* 43519 */ {(12<<2)|2,{110,57,0}}, +/* 43520 */ {(12<<2)|2,{110,61,0}}, +/* 43521 */ {(12<<2)|2,{110,61,0}}, +/* 43522 */ {(12<<2)|2,{110,61,0}}, +/* 43523 */ {(12<<2)|2,{110,61,0}}, +/* 43524 */ {(12<<2)|2,{110,61,0}}, +/* 43525 */ {(12<<2)|2,{110,61,0}}, +/* 43526 */ {(12<<2)|2,{110,61,0}}, +/* 43527 */ {(12<<2)|2,{110,61,0}}, +/* 43528 */ {(12<<2)|2,{110,61,0}}, +/* 43529 */ {(12<<2)|2,{110,61,0}}, +/* 43530 */ {(12<<2)|2,{110,61,0}}, +/* 43531 */ {(12<<2)|2,{110,61,0}}, +/* 43532 */ {(12<<2)|2,{110,61,0}}, +/* 43533 */ {(12<<2)|2,{110,61,0}}, +/* 43534 */ {(12<<2)|2,{110,61,0}}, +/* 43535 */ {(12<<2)|2,{110,61,0}}, +/* 43536 */ {(12<<2)|2,{110,65,0}}, +/* 43537 */ {(12<<2)|2,{110,65,0}}, +/* 43538 */ {(12<<2)|2,{110,65,0}}, +/* 43539 */ {(12<<2)|2,{110,65,0}}, +/* 43540 */ {(12<<2)|2,{110,65,0}}, +/* 43541 */ {(12<<2)|2,{110,65,0}}, +/* 43542 */ {(12<<2)|2,{110,65,0}}, +/* 43543 */ {(12<<2)|2,{110,65,0}}, +/* 43544 */ {(12<<2)|2,{110,65,0}}, +/* 43545 */ {(12<<2)|2,{110,65,0}}, +/* 43546 */ {(12<<2)|2,{110,65,0}}, +/* 43547 */ {(12<<2)|2,{110,65,0}}, +/* 43548 */ {(12<<2)|2,{110,65,0}}, +/* 43549 */ {(12<<2)|2,{110,65,0}}, +/* 43550 */ {(12<<2)|2,{110,65,0}}, +/* 43551 */ {(12<<2)|2,{110,65,0}}, +/* 43552 */ {(12<<2)|2,{110,95,0}}, +/* 43553 */ {(12<<2)|2,{110,95,0}}, +/* 43554 */ {(12<<2)|2,{110,95,0}}, +/* 43555 */ {(12<<2)|2,{110,95,0}}, +/* 43556 */ {(12<<2)|2,{110,95,0}}, +/* 43557 */ {(12<<2)|2,{110,95,0}}, +/* 43558 */ {(12<<2)|2,{110,95,0}}, +/* 43559 */ {(12<<2)|2,{110,95,0}}, +/* 43560 */ {(12<<2)|2,{110,95,0}}, +/* 43561 */ {(12<<2)|2,{110,95,0}}, +/* 43562 */ {(12<<2)|2,{110,95,0}}, +/* 43563 */ {(12<<2)|2,{110,95,0}}, +/* 43564 */ {(12<<2)|2,{110,95,0}}, +/* 43565 */ {(12<<2)|2,{110,95,0}}, +/* 43566 */ {(12<<2)|2,{110,95,0}}, +/* 43567 */ {(12<<2)|2,{110,95,0}}, +/* 43568 */ {(12<<2)|2,{110,98,0}}, +/* 43569 */ {(12<<2)|2,{110,98,0}}, +/* 43570 */ {(12<<2)|2,{110,98,0}}, +/* 43571 */ {(12<<2)|2,{110,98,0}}, +/* 43572 */ {(12<<2)|2,{110,98,0}}, +/* 43573 */ {(12<<2)|2,{110,98,0}}, +/* 43574 */ {(12<<2)|2,{110,98,0}}, +/* 43575 */ {(12<<2)|2,{110,98,0}}, +/* 43576 */ {(12<<2)|2,{110,98,0}}, +/* 43577 */ {(12<<2)|2,{110,98,0}}, +/* 43578 */ {(12<<2)|2,{110,98,0}}, +/* 43579 */ {(12<<2)|2,{110,98,0}}, +/* 43580 */ {(12<<2)|2,{110,98,0}}, +/* 43581 */ {(12<<2)|2,{110,98,0}}, +/* 43582 */ {(12<<2)|2,{110,98,0}}, +/* 43583 */ {(12<<2)|2,{110,98,0}}, +/* 43584 */ {(12<<2)|2,{110,100,0}}, +/* 43585 */ {(12<<2)|2,{110,100,0}}, +/* 43586 */ {(12<<2)|2,{110,100,0}}, +/* 43587 */ {(12<<2)|2,{110,100,0}}, +/* 43588 */ {(12<<2)|2,{110,100,0}}, +/* 43589 */ {(12<<2)|2,{110,100,0}}, +/* 43590 */ {(12<<2)|2,{110,100,0}}, +/* 43591 */ {(12<<2)|2,{110,100,0}}, +/* 43592 */ {(12<<2)|2,{110,100,0}}, +/* 43593 */ {(12<<2)|2,{110,100,0}}, +/* 43594 */ {(12<<2)|2,{110,100,0}}, +/* 43595 */ {(12<<2)|2,{110,100,0}}, +/* 43596 */ {(12<<2)|2,{110,100,0}}, +/* 43597 */ {(12<<2)|2,{110,100,0}}, +/* 43598 */ {(12<<2)|2,{110,100,0}}, +/* 43599 */ {(12<<2)|2,{110,100,0}}, +/* 43600 */ {(12<<2)|2,{110,102,0}}, +/* 43601 */ {(12<<2)|2,{110,102,0}}, +/* 43602 */ {(12<<2)|2,{110,102,0}}, +/* 43603 */ {(12<<2)|2,{110,102,0}}, +/* 43604 */ {(12<<2)|2,{110,102,0}}, +/* 43605 */ {(12<<2)|2,{110,102,0}}, +/* 43606 */ {(12<<2)|2,{110,102,0}}, +/* 43607 */ {(12<<2)|2,{110,102,0}}, +/* 43608 */ {(12<<2)|2,{110,102,0}}, +/* 43609 */ {(12<<2)|2,{110,102,0}}, +/* 43610 */ {(12<<2)|2,{110,102,0}}, +/* 43611 */ {(12<<2)|2,{110,102,0}}, +/* 43612 */ {(12<<2)|2,{110,102,0}}, +/* 43613 */ {(12<<2)|2,{110,102,0}}, +/* 43614 */ {(12<<2)|2,{110,102,0}}, +/* 43615 */ {(12<<2)|2,{110,102,0}}, +/* 43616 */ {(12<<2)|2,{110,103,0}}, +/* 43617 */ {(12<<2)|2,{110,103,0}}, +/* 43618 */ {(12<<2)|2,{110,103,0}}, +/* 43619 */ {(12<<2)|2,{110,103,0}}, +/* 43620 */ {(12<<2)|2,{110,103,0}}, +/* 43621 */ {(12<<2)|2,{110,103,0}}, +/* 43622 */ {(12<<2)|2,{110,103,0}}, +/* 43623 */ {(12<<2)|2,{110,103,0}}, +/* 43624 */ {(12<<2)|2,{110,103,0}}, +/* 43625 */ {(12<<2)|2,{110,103,0}}, +/* 43626 */ {(12<<2)|2,{110,103,0}}, +/* 43627 */ {(12<<2)|2,{110,103,0}}, +/* 43628 */ {(12<<2)|2,{110,103,0}}, +/* 43629 */ {(12<<2)|2,{110,103,0}}, +/* 43630 */ {(12<<2)|2,{110,103,0}}, +/* 43631 */ {(12<<2)|2,{110,103,0}}, +/* 43632 */ {(12<<2)|2,{110,104,0}}, +/* 43633 */ {(12<<2)|2,{110,104,0}}, +/* 43634 */ {(12<<2)|2,{110,104,0}}, +/* 43635 */ {(12<<2)|2,{110,104,0}}, +/* 43636 */ {(12<<2)|2,{110,104,0}}, +/* 43637 */ {(12<<2)|2,{110,104,0}}, +/* 43638 */ {(12<<2)|2,{110,104,0}}, +/* 43639 */ {(12<<2)|2,{110,104,0}}, +/* 43640 */ {(12<<2)|2,{110,104,0}}, +/* 43641 */ {(12<<2)|2,{110,104,0}}, +/* 43642 */ {(12<<2)|2,{110,104,0}}, +/* 43643 */ {(12<<2)|2,{110,104,0}}, +/* 43644 */ {(12<<2)|2,{110,104,0}}, +/* 43645 */ {(12<<2)|2,{110,104,0}}, +/* 43646 */ {(12<<2)|2,{110,104,0}}, +/* 43647 */ {(12<<2)|2,{110,104,0}}, +/* 43648 */ {(12<<2)|2,{110,108,0}}, +/* 43649 */ {(12<<2)|2,{110,108,0}}, +/* 43650 */ {(12<<2)|2,{110,108,0}}, +/* 43651 */ {(12<<2)|2,{110,108,0}}, +/* 43652 */ {(12<<2)|2,{110,108,0}}, +/* 43653 */ {(12<<2)|2,{110,108,0}}, +/* 43654 */ {(12<<2)|2,{110,108,0}}, +/* 43655 */ {(12<<2)|2,{110,108,0}}, +/* 43656 */ {(12<<2)|2,{110,108,0}}, +/* 43657 */ {(12<<2)|2,{110,108,0}}, +/* 43658 */ {(12<<2)|2,{110,108,0}}, +/* 43659 */ {(12<<2)|2,{110,108,0}}, +/* 43660 */ {(12<<2)|2,{110,108,0}}, +/* 43661 */ {(12<<2)|2,{110,108,0}}, +/* 43662 */ {(12<<2)|2,{110,108,0}}, +/* 43663 */ {(12<<2)|2,{110,108,0}}, +/* 43664 */ {(12<<2)|2,{110,109,0}}, +/* 43665 */ {(12<<2)|2,{110,109,0}}, +/* 43666 */ {(12<<2)|2,{110,109,0}}, +/* 43667 */ {(12<<2)|2,{110,109,0}}, +/* 43668 */ {(12<<2)|2,{110,109,0}}, +/* 43669 */ {(12<<2)|2,{110,109,0}}, +/* 43670 */ {(12<<2)|2,{110,109,0}}, +/* 43671 */ {(12<<2)|2,{110,109,0}}, +/* 43672 */ {(12<<2)|2,{110,109,0}}, +/* 43673 */ {(12<<2)|2,{110,109,0}}, +/* 43674 */ {(12<<2)|2,{110,109,0}}, +/* 43675 */ {(12<<2)|2,{110,109,0}}, +/* 43676 */ {(12<<2)|2,{110,109,0}}, +/* 43677 */ {(12<<2)|2,{110,109,0}}, +/* 43678 */ {(12<<2)|2,{110,109,0}}, +/* 43679 */ {(12<<2)|2,{110,109,0}}, +/* 43680 */ {(12<<2)|2,{110,110,0}}, +/* 43681 */ {(12<<2)|2,{110,110,0}}, +/* 43682 */ {(12<<2)|2,{110,110,0}}, +/* 43683 */ {(12<<2)|2,{110,110,0}}, +/* 43684 */ {(12<<2)|2,{110,110,0}}, +/* 43685 */ {(12<<2)|2,{110,110,0}}, +/* 43686 */ {(12<<2)|2,{110,110,0}}, +/* 43687 */ {(12<<2)|2,{110,110,0}}, +/* 43688 */ {(12<<2)|2,{110,110,0}}, +/* 43689 */ {(12<<2)|2,{110,110,0}}, +/* 43690 */ {(12<<2)|2,{110,110,0}}, +/* 43691 */ {(12<<2)|2,{110,110,0}}, +/* 43692 */ {(12<<2)|2,{110,110,0}}, +/* 43693 */ {(12<<2)|2,{110,110,0}}, +/* 43694 */ {(12<<2)|2,{110,110,0}}, +/* 43695 */ {(12<<2)|2,{110,110,0}}, +/* 43696 */ {(12<<2)|2,{110,112,0}}, +/* 43697 */ {(12<<2)|2,{110,112,0}}, +/* 43698 */ {(12<<2)|2,{110,112,0}}, +/* 43699 */ {(12<<2)|2,{110,112,0}}, +/* 43700 */ {(12<<2)|2,{110,112,0}}, +/* 43701 */ {(12<<2)|2,{110,112,0}}, +/* 43702 */ {(12<<2)|2,{110,112,0}}, +/* 43703 */ {(12<<2)|2,{110,112,0}}, +/* 43704 */ {(12<<2)|2,{110,112,0}}, +/* 43705 */ {(12<<2)|2,{110,112,0}}, +/* 43706 */ {(12<<2)|2,{110,112,0}}, +/* 43707 */ {(12<<2)|2,{110,112,0}}, +/* 43708 */ {(12<<2)|2,{110,112,0}}, +/* 43709 */ {(12<<2)|2,{110,112,0}}, +/* 43710 */ {(12<<2)|2,{110,112,0}}, +/* 43711 */ {(12<<2)|2,{110,112,0}}, +/* 43712 */ {(12<<2)|2,{110,114,0}}, +/* 43713 */ {(12<<2)|2,{110,114,0}}, +/* 43714 */ {(12<<2)|2,{110,114,0}}, +/* 43715 */ {(12<<2)|2,{110,114,0}}, +/* 43716 */ {(12<<2)|2,{110,114,0}}, +/* 43717 */ {(12<<2)|2,{110,114,0}}, +/* 43718 */ {(12<<2)|2,{110,114,0}}, +/* 43719 */ {(12<<2)|2,{110,114,0}}, +/* 43720 */ {(12<<2)|2,{110,114,0}}, +/* 43721 */ {(12<<2)|2,{110,114,0}}, +/* 43722 */ {(12<<2)|2,{110,114,0}}, +/* 43723 */ {(12<<2)|2,{110,114,0}}, +/* 43724 */ {(12<<2)|2,{110,114,0}}, +/* 43725 */ {(12<<2)|2,{110,114,0}}, +/* 43726 */ {(12<<2)|2,{110,114,0}}, +/* 43727 */ {(12<<2)|2,{110,114,0}}, +/* 43728 */ {(12<<2)|2,{110,117,0}}, +/* 43729 */ {(12<<2)|2,{110,117,0}}, +/* 43730 */ {(12<<2)|2,{110,117,0}}, +/* 43731 */ {(12<<2)|2,{110,117,0}}, +/* 43732 */ {(12<<2)|2,{110,117,0}}, +/* 43733 */ {(12<<2)|2,{110,117,0}}, +/* 43734 */ {(12<<2)|2,{110,117,0}}, +/* 43735 */ {(12<<2)|2,{110,117,0}}, +/* 43736 */ {(12<<2)|2,{110,117,0}}, +/* 43737 */ {(12<<2)|2,{110,117,0}}, +/* 43738 */ {(12<<2)|2,{110,117,0}}, +/* 43739 */ {(12<<2)|2,{110,117,0}}, +/* 43740 */ {(12<<2)|2,{110,117,0}}, +/* 43741 */ {(12<<2)|2,{110,117,0}}, +/* 43742 */ {(12<<2)|2,{110,117,0}}, +/* 43743 */ {(12<<2)|2,{110,117,0}}, +/* 43744 */ {(13<<2)|2,{110,58,0}}, +/* 43745 */ {(13<<2)|2,{110,58,0}}, +/* 43746 */ {(13<<2)|2,{110,58,0}}, +/* 43747 */ {(13<<2)|2,{110,58,0}}, +/* 43748 */ {(13<<2)|2,{110,58,0}}, +/* 43749 */ {(13<<2)|2,{110,58,0}}, +/* 43750 */ {(13<<2)|2,{110,58,0}}, +/* 43751 */ {(13<<2)|2,{110,58,0}}, +/* 43752 */ {(13<<2)|2,{110,66,0}}, +/* 43753 */ {(13<<2)|2,{110,66,0}}, +/* 43754 */ {(13<<2)|2,{110,66,0}}, +/* 43755 */ {(13<<2)|2,{110,66,0}}, +/* 43756 */ {(13<<2)|2,{110,66,0}}, +/* 43757 */ {(13<<2)|2,{110,66,0}}, +/* 43758 */ {(13<<2)|2,{110,66,0}}, +/* 43759 */ {(13<<2)|2,{110,66,0}}, +/* 43760 */ {(13<<2)|2,{110,67,0}}, +/* 43761 */ {(13<<2)|2,{110,67,0}}, +/* 43762 */ {(13<<2)|2,{110,67,0}}, +/* 43763 */ {(13<<2)|2,{110,67,0}}, +/* 43764 */ {(13<<2)|2,{110,67,0}}, +/* 43765 */ {(13<<2)|2,{110,67,0}}, +/* 43766 */ {(13<<2)|2,{110,67,0}}, +/* 43767 */ {(13<<2)|2,{110,67,0}}, +/* 43768 */ {(13<<2)|2,{110,68,0}}, +/* 43769 */ {(13<<2)|2,{110,68,0}}, +/* 43770 */ {(13<<2)|2,{110,68,0}}, +/* 43771 */ {(13<<2)|2,{110,68,0}}, +/* 43772 */ {(13<<2)|2,{110,68,0}}, +/* 43773 */ {(13<<2)|2,{110,68,0}}, +/* 43774 */ {(13<<2)|2,{110,68,0}}, +/* 43775 */ {(13<<2)|2,{110,68,0}}, +/* 43776 */ {(13<<2)|2,{110,69,0}}, +/* 43777 */ {(13<<2)|2,{110,69,0}}, +/* 43778 */ {(13<<2)|2,{110,69,0}}, +/* 43779 */ {(13<<2)|2,{110,69,0}}, +/* 43780 */ {(13<<2)|2,{110,69,0}}, +/* 43781 */ {(13<<2)|2,{110,69,0}}, +/* 43782 */ {(13<<2)|2,{110,69,0}}, +/* 43783 */ {(13<<2)|2,{110,69,0}}, +/* 43784 */ {(13<<2)|2,{110,70,0}}, +/* 43785 */ {(13<<2)|2,{110,70,0}}, +/* 43786 */ {(13<<2)|2,{110,70,0}}, +/* 43787 */ {(13<<2)|2,{110,70,0}}, +/* 43788 */ {(13<<2)|2,{110,70,0}}, +/* 43789 */ {(13<<2)|2,{110,70,0}}, +/* 43790 */ {(13<<2)|2,{110,70,0}}, +/* 43791 */ {(13<<2)|2,{110,70,0}}, +/* 43792 */ {(13<<2)|2,{110,71,0}}, +/* 43793 */ {(13<<2)|2,{110,71,0}}, +/* 43794 */ {(13<<2)|2,{110,71,0}}, +/* 43795 */ {(13<<2)|2,{110,71,0}}, +/* 43796 */ {(13<<2)|2,{110,71,0}}, +/* 43797 */ {(13<<2)|2,{110,71,0}}, +/* 43798 */ {(13<<2)|2,{110,71,0}}, +/* 43799 */ {(13<<2)|2,{110,71,0}}, +/* 43800 */ {(13<<2)|2,{110,72,0}}, +/* 43801 */ {(13<<2)|2,{110,72,0}}, +/* 43802 */ {(13<<2)|2,{110,72,0}}, +/* 43803 */ {(13<<2)|2,{110,72,0}}, +/* 43804 */ {(13<<2)|2,{110,72,0}}, +/* 43805 */ {(13<<2)|2,{110,72,0}}, +/* 43806 */ {(13<<2)|2,{110,72,0}}, +/* 43807 */ {(13<<2)|2,{110,72,0}}, +/* 43808 */ {(13<<2)|2,{110,73,0}}, +/* 43809 */ {(13<<2)|2,{110,73,0}}, +/* 43810 */ {(13<<2)|2,{110,73,0}}, +/* 43811 */ {(13<<2)|2,{110,73,0}}, +/* 43812 */ {(13<<2)|2,{110,73,0}}, +/* 43813 */ {(13<<2)|2,{110,73,0}}, +/* 43814 */ {(13<<2)|2,{110,73,0}}, +/* 43815 */ {(13<<2)|2,{110,73,0}}, +/* 43816 */ {(13<<2)|2,{110,74,0}}, +/* 43817 */ {(13<<2)|2,{110,74,0}}, +/* 43818 */ {(13<<2)|2,{110,74,0}}, +/* 43819 */ {(13<<2)|2,{110,74,0}}, +/* 43820 */ {(13<<2)|2,{110,74,0}}, +/* 43821 */ {(13<<2)|2,{110,74,0}}, +/* 43822 */ {(13<<2)|2,{110,74,0}}, +/* 43823 */ {(13<<2)|2,{110,74,0}}, +/* 43824 */ {(13<<2)|2,{110,75,0}}, +/* 43825 */ {(13<<2)|2,{110,75,0}}, +/* 43826 */ {(13<<2)|2,{110,75,0}}, +/* 43827 */ {(13<<2)|2,{110,75,0}}, +/* 43828 */ {(13<<2)|2,{110,75,0}}, +/* 43829 */ {(13<<2)|2,{110,75,0}}, +/* 43830 */ {(13<<2)|2,{110,75,0}}, +/* 43831 */ {(13<<2)|2,{110,75,0}}, +/* 43832 */ {(13<<2)|2,{110,76,0}}, +/* 43833 */ {(13<<2)|2,{110,76,0}}, +/* 43834 */ {(13<<2)|2,{110,76,0}}, +/* 43835 */ {(13<<2)|2,{110,76,0}}, +/* 43836 */ {(13<<2)|2,{110,76,0}}, +/* 43837 */ {(13<<2)|2,{110,76,0}}, +/* 43838 */ {(13<<2)|2,{110,76,0}}, +/* 43839 */ {(13<<2)|2,{110,76,0}}, +/* 43840 */ {(13<<2)|2,{110,77,0}}, +/* 43841 */ {(13<<2)|2,{110,77,0}}, +/* 43842 */ {(13<<2)|2,{110,77,0}}, +/* 43843 */ {(13<<2)|2,{110,77,0}}, +/* 43844 */ {(13<<2)|2,{110,77,0}}, +/* 43845 */ {(13<<2)|2,{110,77,0}}, +/* 43846 */ {(13<<2)|2,{110,77,0}}, +/* 43847 */ {(13<<2)|2,{110,77,0}}, +/* 43848 */ {(13<<2)|2,{110,78,0}}, +/* 43849 */ {(13<<2)|2,{110,78,0}}, +/* 43850 */ {(13<<2)|2,{110,78,0}}, +/* 43851 */ {(13<<2)|2,{110,78,0}}, +/* 43852 */ {(13<<2)|2,{110,78,0}}, +/* 43853 */ {(13<<2)|2,{110,78,0}}, +/* 43854 */ {(13<<2)|2,{110,78,0}}, +/* 43855 */ {(13<<2)|2,{110,78,0}}, +/* 43856 */ {(13<<2)|2,{110,79,0}}, +/* 43857 */ {(13<<2)|2,{110,79,0}}, +/* 43858 */ {(13<<2)|2,{110,79,0}}, +/* 43859 */ {(13<<2)|2,{110,79,0}}, +/* 43860 */ {(13<<2)|2,{110,79,0}}, +/* 43861 */ {(13<<2)|2,{110,79,0}}, +/* 43862 */ {(13<<2)|2,{110,79,0}}, +/* 43863 */ {(13<<2)|2,{110,79,0}}, +/* 43864 */ {(13<<2)|2,{110,80,0}}, +/* 43865 */ {(13<<2)|2,{110,80,0}}, +/* 43866 */ {(13<<2)|2,{110,80,0}}, +/* 43867 */ {(13<<2)|2,{110,80,0}}, +/* 43868 */ {(13<<2)|2,{110,80,0}}, +/* 43869 */ {(13<<2)|2,{110,80,0}}, +/* 43870 */ {(13<<2)|2,{110,80,0}}, +/* 43871 */ {(13<<2)|2,{110,80,0}}, +/* 43872 */ {(13<<2)|2,{110,81,0}}, +/* 43873 */ {(13<<2)|2,{110,81,0}}, +/* 43874 */ {(13<<2)|2,{110,81,0}}, +/* 43875 */ {(13<<2)|2,{110,81,0}}, +/* 43876 */ {(13<<2)|2,{110,81,0}}, +/* 43877 */ {(13<<2)|2,{110,81,0}}, +/* 43878 */ {(13<<2)|2,{110,81,0}}, +/* 43879 */ {(13<<2)|2,{110,81,0}}, +/* 43880 */ {(13<<2)|2,{110,82,0}}, +/* 43881 */ {(13<<2)|2,{110,82,0}}, +/* 43882 */ {(13<<2)|2,{110,82,0}}, +/* 43883 */ {(13<<2)|2,{110,82,0}}, +/* 43884 */ {(13<<2)|2,{110,82,0}}, +/* 43885 */ {(13<<2)|2,{110,82,0}}, +/* 43886 */ {(13<<2)|2,{110,82,0}}, +/* 43887 */ {(13<<2)|2,{110,82,0}}, +/* 43888 */ {(13<<2)|2,{110,83,0}}, +/* 43889 */ {(13<<2)|2,{110,83,0}}, +/* 43890 */ {(13<<2)|2,{110,83,0}}, +/* 43891 */ {(13<<2)|2,{110,83,0}}, +/* 43892 */ {(13<<2)|2,{110,83,0}}, +/* 43893 */ {(13<<2)|2,{110,83,0}}, +/* 43894 */ {(13<<2)|2,{110,83,0}}, +/* 43895 */ {(13<<2)|2,{110,83,0}}, +/* 43896 */ {(13<<2)|2,{110,84,0}}, +/* 43897 */ {(13<<2)|2,{110,84,0}}, +/* 43898 */ {(13<<2)|2,{110,84,0}}, +/* 43899 */ {(13<<2)|2,{110,84,0}}, +/* 43900 */ {(13<<2)|2,{110,84,0}}, +/* 43901 */ {(13<<2)|2,{110,84,0}}, +/* 43902 */ {(13<<2)|2,{110,84,0}}, +/* 43903 */ {(13<<2)|2,{110,84,0}}, +/* 43904 */ {(13<<2)|2,{110,85,0}}, +/* 43905 */ {(13<<2)|2,{110,85,0}}, +/* 43906 */ {(13<<2)|2,{110,85,0}}, +/* 43907 */ {(13<<2)|2,{110,85,0}}, +/* 43908 */ {(13<<2)|2,{110,85,0}}, +/* 43909 */ {(13<<2)|2,{110,85,0}}, +/* 43910 */ {(13<<2)|2,{110,85,0}}, +/* 43911 */ {(13<<2)|2,{110,85,0}}, +/* 43912 */ {(13<<2)|2,{110,86,0}}, +/* 43913 */ {(13<<2)|2,{110,86,0}}, +/* 43914 */ {(13<<2)|2,{110,86,0}}, +/* 43915 */ {(13<<2)|2,{110,86,0}}, +/* 43916 */ {(13<<2)|2,{110,86,0}}, +/* 43917 */ {(13<<2)|2,{110,86,0}}, +/* 43918 */ {(13<<2)|2,{110,86,0}}, +/* 43919 */ {(13<<2)|2,{110,86,0}}, +/* 43920 */ {(13<<2)|2,{110,87,0}}, +/* 43921 */ {(13<<2)|2,{110,87,0}}, +/* 43922 */ {(13<<2)|2,{110,87,0}}, +/* 43923 */ {(13<<2)|2,{110,87,0}}, +/* 43924 */ {(13<<2)|2,{110,87,0}}, +/* 43925 */ {(13<<2)|2,{110,87,0}}, +/* 43926 */ {(13<<2)|2,{110,87,0}}, +/* 43927 */ {(13<<2)|2,{110,87,0}}, +/* 43928 */ {(13<<2)|2,{110,89,0}}, +/* 43929 */ {(13<<2)|2,{110,89,0}}, +/* 43930 */ {(13<<2)|2,{110,89,0}}, +/* 43931 */ {(13<<2)|2,{110,89,0}}, +/* 43932 */ {(13<<2)|2,{110,89,0}}, +/* 43933 */ {(13<<2)|2,{110,89,0}}, +/* 43934 */ {(13<<2)|2,{110,89,0}}, +/* 43935 */ {(13<<2)|2,{110,89,0}}, +/* 43936 */ {(13<<2)|2,{110,106,0}}, +/* 43937 */ {(13<<2)|2,{110,106,0}}, +/* 43938 */ {(13<<2)|2,{110,106,0}}, +/* 43939 */ {(13<<2)|2,{110,106,0}}, +/* 43940 */ {(13<<2)|2,{110,106,0}}, +/* 43941 */ {(13<<2)|2,{110,106,0}}, +/* 43942 */ {(13<<2)|2,{110,106,0}}, +/* 43943 */ {(13<<2)|2,{110,106,0}}, +/* 43944 */ {(13<<2)|2,{110,107,0}}, +/* 43945 */ {(13<<2)|2,{110,107,0}}, +/* 43946 */ {(13<<2)|2,{110,107,0}}, +/* 43947 */ {(13<<2)|2,{110,107,0}}, +/* 43948 */ {(13<<2)|2,{110,107,0}}, +/* 43949 */ {(13<<2)|2,{110,107,0}}, +/* 43950 */ {(13<<2)|2,{110,107,0}}, +/* 43951 */ {(13<<2)|2,{110,107,0}}, +/* 43952 */ {(13<<2)|2,{110,113,0}}, +/* 43953 */ {(13<<2)|2,{110,113,0}}, +/* 43954 */ {(13<<2)|2,{110,113,0}}, +/* 43955 */ {(13<<2)|2,{110,113,0}}, +/* 43956 */ {(13<<2)|2,{110,113,0}}, +/* 43957 */ {(13<<2)|2,{110,113,0}}, +/* 43958 */ {(13<<2)|2,{110,113,0}}, +/* 43959 */ {(13<<2)|2,{110,113,0}}, +/* 43960 */ {(13<<2)|2,{110,118,0}}, +/* 43961 */ {(13<<2)|2,{110,118,0}}, +/* 43962 */ {(13<<2)|2,{110,118,0}}, +/* 43963 */ {(13<<2)|2,{110,118,0}}, +/* 43964 */ {(13<<2)|2,{110,118,0}}, +/* 43965 */ {(13<<2)|2,{110,118,0}}, +/* 43966 */ {(13<<2)|2,{110,118,0}}, +/* 43967 */ {(13<<2)|2,{110,118,0}}, +/* 43968 */ {(13<<2)|2,{110,119,0}}, +/* 43969 */ {(13<<2)|2,{110,119,0}}, +/* 43970 */ {(13<<2)|2,{110,119,0}}, +/* 43971 */ {(13<<2)|2,{110,119,0}}, +/* 43972 */ {(13<<2)|2,{110,119,0}}, +/* 43973 */ {(13<<2)|2,{110,119,0}}, +/* 43974 */ {(13<<2)|2,{110,119,0}}, +/* 43975 */ {(13<<2)|2,{110,119,0}}, +/* 43976 */ {(13<<2)|2,{110,120,0}}, +/* 43977 */ {(13<<2)|2,{110,120,0}}, +/* 43978 */ {(13<<2)|2,{110,120,0}}, +/* 43979 */ {(13<<2)|2,{110,120,0}}, +/* 43980 */ {(13<<2)|2,{110,120,0}}, +/* 43981 */ {(13<<2)|2,{110,120,0}}, +/* 43982 */ {(13<<2)|2,{110,120,0}}, +/* 43983 */ {(13<<2)|2,{110,120,0}}, +/* 43984 */ {(13<<2)|2,{110,121,0}}, +/* 43985 */ {(13<<2)|2,{110,121,0}}, +/* 43986 */ {(13<<2)|2,{110,121,0}}, +/* 43987 */ {(13<<2)|2,{110,121,0}}, +/* 43988 */ {(13<<2)|2,{110,121,0}}, +/* 43989 */ {(13<<2)|2,{110,121,0}}, +/* 43990 */ {(13<<2)|2,{110,121,0}}, +/* 43991 */ {(13<<2)|2,{110,121,0}}, +/* 43992 */ {(13<<2)|2,{110,122,0}}, +/* 43993 */ {(13<<2)|2,{110,122,0}}, +/* 43994 */ {(13<<2)|2,{110,122,0}}, +/* 43995 */ {(13<<2)|2,{110,122,0}}, +/* 43996 */ {(13<<2)|2,{110,122,0}}, +/* 43997 */ {(13<<2)|2,{110,122,0}}, +/* 43998 */ {(13<<2)|2,{110,122,0}}, +/* 43999 */ {(13<<2)|2,{110,122,0}}, +/* 44000 */ {(14<<2)|2,{110,38,0}}, +/* 44001 */ {(14<<2)|2,{110,38,0}}, +/* 44002 */ {(14<<2)|2,{110,38,0}}, +/* 44003 */ {(14<<2)|2,{110,38,0}}, +/* 44004 */ {(14<<2)|2,{110,42,0}}, +/* 44005 */ {(14<<2)|2,{110,42,0}}, +/* 44006 */ {(14<<2)|2,{110,42,0}}, +/* 44007 */ {(14<<2)|2,{110,42,0}}, +/* 44008 */ {(14<<2)|2,{110,44,0}}, +/* 44009 */ {(14<<2)|2,{110,44,0}}, +/* 44010 */ {(14<<2)|2,{110,44,0}}, +/* 44011 */ {(14<<2)|2,{110,44,0}}, +/* 44012 */ {(14<<2)|2,{110,59,0}}, +/* 44013 */ {(14<<2)|2,{110,59,0}}, +/* 44014 */ {(14<<2)|2,{110,59,0}}, +/* 44015 */ {(14<<2)|2,{110,59,0}}, +/* 44016 */ {(14<<2)|2,{110,88,0}}, +/* 44017 */ {(14<<2)|2,{110,88,0}}, +/* 44018 */ {(14<<2)|2,{110,88,0}}, +/* 44019 */ {(14<<2)|2,{110,88,0}}, +/* 44020 */ {(14<<2)|2,{110,90,0}}, +/* 44021 */ {(14<<2)|2,{110,90,0}}, +/* 44022 */ {(14<<2)|2,{110,90,0}}, +/* 44023 */ {(14<<2)|2,{110,90,0}}, +/* 44024 */ {(16<<2)|2,{110,33,0}}, +/* 44025 */ {(16<<2)|2,{110,34,0}}, +/* 44026 */ {(16<<2)|2,{110,40,0}}, +/* 44027 */ {(16<<2)|2,{110,41,0}}, +/* 44028 */ {(16<<2)|2,{110,63,0}}, +/* 44029 */ {(6<<2)|1,{110,0,0}}, +/* 44030 */ {(6<<2)|1,{110,0,0}}, +/* 44031 */ {(6<<2)|1,{110,0,0}}, +/* 44032 */ {(16<<2)|3,{112,48,48}}, +/* 44033 */ {(16<<2)|3,{112,48,49}}, +/* 44034 */ {(16<<2)|3,{112,48,50}}, +/* 44035 */ {(16<<2)|3,{112,48,97}}, +/* 44036 */ {(16<<2)|3,{112,48,99}}, +/* 44037 */ {(16<<2)|3,{112,48,101}}, +/* 44038 */ {(16<<2)|3,{112,48,105}}, +/* 44039 */ {(16<<2)|3,{112,48,111}}, +/* 44040 */ {(16<<2)|3,{112,48,115}}, +/* 44041 */ {(16<<2)|3,{112,48,116}}, +/* 44042 */ {(11<<2)|2,{112,48,0}}, +/* 44043 */ {(11<<2)|2,{112,48,0}}, +/* 44044 */ {(11<<2)|2,{112,48,0}}, +/* 44045 */ {(11<<2)|2,{112,48,0}}, +/* 44046 */ {(11<<2)|2,{112,48,0}}, +/* 44047 */ {(11<<2)|2,{112,48,0}}, +/* 44048 */ {(11<<2)|2,{112,48,0}}, +/* 44049 */ {(11<<2)|2,{112,48,0}}, +/* 44050 */ {(11<<2)|2,{112,48,0}}, +/* 44051 */ {(11<<2)|2,{112,48,0}}, +/* 44052 */ {(11<<2)|2,{112,48,0}}, +/* 44053 */ {(11<<2)|2,{112,48,0}}, +/* 44054 */ {(11<<2)|2,{112,48,0}}, +/* 44055 */ {(11<<2)|2,{112,48,0}}, +/* 44056 */ {(11<<2)|2,{112,48,0}}, +/* 44057 */ {(11<<2)|2,{112,48,0}}, +/* 44058 */ {(11<<2)|2,{112,48,0}}, +/* 44059 */ {(11<<2)|2,{112,48,0}}, +/* 44060 */ {(11<<2)|2,{112,48,0}}, +/* 44061 */ {(11<<2)|2,{112,48,0}}, +/* 44062 */ {(11<<2)|2,{112,48,0}}, +/* 44063 */ {(11<<2)|2,{112,48,0}}, +/* 44064 */ {(16<<2)|3,{112,49,48}}, +/* 44065 */ {(16<<2)|3,{112,49,49}}, +/* 44066 */ {(16<<2)|3,{112,49,50}}, +/* 44067 */ {(16<<2)|3,{112,49,97}}, +/* 44068 */ {(16<<2)|3,{112,49,99}}, +/* 44069 */ {(16<<2)|3,{112,49,101}}, +/* 44070 */ {(16<<2)|3,{112,49,105}}, +/* 44071 */ {(16<<2)|3,{112,49,111}}, +/* 44072 */ {(16<<2)|3,{112,49,115}}, +/* 44073 */ {(16<<2)|3,{112,49,116}}, +/* 44074 */ {(11<<2)|2,{112,49,0}}, +/* 44075 */ {(11<<2)|2,{112,49,0}}, +/* 44076 */ {(11<<2)|2,{112,49,0}}, +/* 44077 */ {(11<<2)|2,{112,49,0}}, +/* 44078 */ {(11<<2)|2,{112,49,0}}, +/* 44079 */ {(11<<2)|2,{112,49,0}}, +/* 44080 */ {(11<<2)|2,{112,49,0}}, +/* 44081 */ {(11<<2)|2,{112,49,0}}, +/* 44082 */ {(11<<2)|2,{112,49,0}}, +/* 44083 */ {(11<<2)|2,{112,49,0}}, +/* 44084 */ {(11<<2)|2,{112,49,0}}, +/* 44085 */ {(11<<2)|2,{112,49,0}}, +/* 44086 */ {(11<<2)|2,{112,49,0}}, +/* 44087 */ {(11<<2)|2,{112,49,0}}, +/* 44088 */ {(11<<2)|2,{112,49,0}}, +/* 44089 */ {(11<<2)|2,{112,49,0}}, +/* 44090 */ {(11<<2)|2,{112,49,0}}, +/* 44091 */ {(11<<2)|2,{112,49,0}}, +/* 44092 */ {(11<<2)|2,{112,49,0}}, +/* 44093 */ {(11<<2)|2,{112,49,0}}, +/* 44094 */ {(11<<2)|2,{112,49,0}}, +/* 44095 */ {(11<<2)|2,{112,49,0}}, +/* 44096 */ {(16<<2)|3,{112,50,48}}, +/* 44097 */ {(16<<2)|3,{112,50,49}}, +/* 44098 */ {(16<<2)|3,{112,50,50}}, +/* 44099 */ {(16<<2)|3,{112,50,97}}, +/* 44100 */ {(16<<2)|3,{112,50,99}}, +/* 44101 */ {(16<<2)|3,{112,50,101}}, +/* 44102 */ {(16<<2)|3,{112,50,105}}, +/* 44103 */ {(16<<2)|3,{112,50,111}}, +/* 44104 */ {(16<<2)|3,{112,50,115}}, +/* 44105 */ {(16<<2)|3,{112,50,116}}, +/* 44106 */ {(11<<2)|2,{112,50,0}}, +/* 44107 */ {(11<<2)|2,{112,50,0}}, +/* 44108 */ {(11<<2)|2,{112,50,0}}, +/* 44109 */ {(11<<2)|2,{112,50,0}}, +/* 44110 */ {(11<<2)|2,{112,50,0}}, +/* 44111 */ {(11<<2)|2,{112,50,0}}, +/* 44112 */ {(11<<2)|2,{112,50,0}}, +/* 44113 */ {(11<<2)|2,{112,50,0}}, +/* 44114 */ {(11<<2)|2,{112,50,0}}, +/* 44115 */ {(11<<2)|2,{112,50,0}}, +/* 44116 */ {(11<<2)|2,{112,50,0}}, +/* 44117 */ {(11<<2)|2,{112,50,0}}, +/* 44118 */ {(11<<2)|2,{112,50,0}}, +/* 44119 */ {(11<<2)|2,{112,50,0}}, +/* 44120 */ {(11<<2)|2,{112,50,0}}, +/* 44121 */ {(11<<2)|2,{112,50,0}}, +/* 44122 */ {(11<<2)|2,{112,50,0}}, +/* 44123 */ {(11<<2)|2,{112,50,0}}, +/* 44124 */ {(11<<2)|2,{112,50,0}}, +/* 44125 */ {(11<<2)|2,{112,50,0}}, +/* 44126 */ {(11<<2)|2,{112,50,0}}, +/* 44127 */ {(11<<2)|2,{112,50,0}}, +/* 44128 */ {(16<<2)|3,{112,97,48}}, +/* 44129 */ {(16<<2)|3,{112,97,49}}, +/* 44130 */ {(16<<2)|3,{112,97,50}}, +/* 44131 */ {(16<<2)|3,{112,97,97}}, +/* 44132 */ {(16<<2)|3,{112,97,99}}, +/* 44133 */ {(16<<2)|3,{112,97,101}}, +/* 44134 */ {(16<<2)|3,{112,97,105}}, +/* 44135 */ {(16<<2)|3,{112,97,111}}, +/* 44136 */ {(16<<2)|3,{112,97,115}}, +/* 44137 */ {(16<<2)|3,{112,97,116}}, +/* 44138 */ {(11<<2)|2,{112,97,0}}, +/* 44139 */ {(11<<2)|2,{112,97,0}}, +/* 44140 */ {(11<<2)|2,{112,97,0}}, +/* 44141 */ {(11<<2)|2,{112,97,0}}, +/* 44142 */ {(11<<2)|2,{112,97,0}}, +/* 44143 */ {(11<<2)|2,{112,97,0}}, +/* 44144 */ {(11<<2)|2,{112,97,0}}, +/* 44145 */ {(11<<2)|2,{112,97,0}}, +/* 44146 */ {(11<<2)|2,{112,97,0}}, +/* 44147 */ {(11<<2)|2,{112,97,0}}, +/* 44148 */ {(11<<2)|2,{112,97,0}}, +/* 44149 */ {(11<<2)|2,{112,97,0}}, +/* 44150 */ {(11<<2)|2,{112,97,0}}, +/* 44151 */ {(11<<2)|2,{112,97,0}}, +/* 44152 */ {(11<<2)|2,{112,97,0}}, +/* 44153 */ {(11<<2)|2,{112,97,0}}, +/* 44154 */ {(11<<2)|2,{112,97,0}}, +/* 44155 */ {(11<<2)|2,{112,97,0}}, +/* 44156 */ {(11<<2)|2,{112,97,0}}, +/* 44157 */ {(11<<2)|2,{112,97,0}}, +/* 44158 */ {(11<<2)|2,{112,97,0}}, +/* 44159 */ {(11<<2)|2,{112,97,0}}, +/* 44160 */ {(16<<2)|3,{112,99,48}}, +/* 44161 */ {(16<<2)|3,{112,99,49}}, +/* 44162 */ {(16<<2)|3,{112,99,50}}, +/* 44163 */ {(16<<2)|3,{112,99,97}}, +/* 44164 */ {(16<<2)|3,{112,99,99}}, +/* 44165 */ {(16<<2)|3,{112,99,101}}, +/* 44166 */ {(16<<2)|3,{112,99,105}}, +/* 44167 */ {(16<<2)|3,{112,99,111}}, +/* 44168 */ {(16<<2)|3,{112,99,115}}, +/* 44169 */ {(16<<2)|3,{112,99,116}}, +/* 44170 */ {(11<<2)|2,{112,99,0}}, +/* 44171 */ {(11<<2)|2,{112,99,0}}, +/* 44172 */ {(11<<2)|2,{112,99,0}}, +/* 44173 */ {(11<<2)|2,{112,99,0}}, +/* 44174 */ {(11<<2)|2,{112,99,0}}, +/* 44175 */ {(11<<2)|2,{112,99,0}}, +/* 44176 */ {(11<<2)|2,{112,99,0}}, +/* 44177 */ {(11<<2)|2,{112,99,0}}, +/* 44178 */ {(11<<2)|2,{112,99,0}}, +/* 44179 */ {(11<<2)|2,{112,99,0}}, +/* 44180 */ {(11<<2)|2,{112,99,0}}, +/* 44181 */ {(11<<2)|2,{112,99,0}}, +/* 44182 */ {(11<<2)|2,{112,99,0}}, +/* 44183 */ {(11<<2)|2,{112,99,0}}, +/* 44184 */ {(11<<2)|2,{112,99,0}}, +/* 44185 */ {(11<<2)|2,{112,99,0}}, +/* 44186 */ {(11<<2)|2,{112,99,0}}, +/* 44187 */ {(11<<2)|2,{112,99,0}}, +/* 44188 */ {(11<<2)|2,{112,99,0}}, +/* 44189 */ {(11<<2)|2,{112,99,0}}, +/* 44190 */ {(11<<2)|2,{112,99,0}}, +/* 44191 */ {(11<<2)|2,{112,99,0}}, +/* 44192 */ {(16<<2)|3,{112,101,48}}, +/* 44193 */ {(16<<2)|3,{112,101,49}}, +/* 44194 */ {(16<<2)|3,{112,101,50}}, +/* 44195 */ {(16<<2)|3,{112,101,97}}, +/* 44196 */ {(16<<2)|3,{112,101,99}}, +/* 44197 */ {(16<<2)|3,{112,101,101}}, +/* 44198 */ {(16<<2)|3,{112,101,105}}, +/* 44199 */ {(16<<2)|3,{112,101,111}}, +/* 44200 */ {(16<<2)|3,{112,101,115}}, +/* 44201 */ {(16<<2)|3,{112,101,116}}, +/* 44202 */ {(11<<2)|2,{112,101,0}}, +/* 44203 */ {(11<<2)|2,{112,101,0}}, +/* 44204 */ {(11<<2)|2,{112,101,0}}, +/* 44205 */ {(11<<2)|2,{112,101,0}}, +/* 44206 */ {(11<<2)|2,{112,101,0}}, +/* 44207 */ {(11<<2)|2,{112,101,0}}, +/* 44208 */ {(11<<2)|2,{112,101,0}}, +/* 44209 */ {(11<<2)|2,{112,101,0}}, +/* 44210 */ {(11<<2)|2,{112,101,0}}, +/* 44211 */ {(11<<2)|2,{112,101,0}}, +/* 44212 */ {(11<<2)|2,{112,101,0}}, +/* 44213 */ {(11<<2)|2,{112,101,0}}, +/* 44214 */ {(11<<2)|2,{112,101,0}}, +/* 44215 */ {(11<<2)|2,{112,101,0}}, +/* 44216 */ {(11<<2)|2,{112,101,0}}, +/* 44217 */ {(11<<2)|2,{112,101,0}}, +/* 44218 */ {(11<<2)|2,{112,101,0}}, +/* 44219 */ {(11<<2)|2,{112,101,0}}, +/* 44220 */ {(11<<2)|2,{112,101,0}}, +/* 44221 */ {(11<<2)|2,{112,101,0}}, +/* 44222 */ {(11<<2)|2,{112,101,0}}, +/* 44223 */ {(11<<2)|2,{112,101,0}}, +/* 44224 */ {(16<<2)|3,{112,105,48}}, +/* 44225 */ {(16<<2)|3,{112,105,49}}, +/* 44226 */ {(16<<2)|3,{112,105,50}}, +/* 44227 */ {(16<<2)|3,{112,105,97}}, +/* 44228 */ {(16<<2)|3,{112,105,99}}, +/* 44229 */ {(16<<2)|3,{112,105,101}}, +/* 44230 */ {(16<<2)|3,{112,105,105}}, +/* 44231 */ {(16<<2)|3,{112,105,111}}, +/* 44232 */ {(16<<2)|3,{112,105,115}}, +/* 44233 */ {(16<<2)|3,{112,105,116}}, +/* 44234 */ {(11<<2)|2,{112,105,0}}, +/* 44235 */ {(11<<2)|2,{112,105,0}}, +/* 44236 */ {(11<<2)|2,{112,105,0}}, +/* 44237 */ {(11<<2)|2,{112,105,0}}, +/* 44238 */ {(11<<2)|2,{112,105,0}}, +/* 44239 */ {(11<<2)|2,{112,105,0}}, +/* 44240 */ {(11<<2)|2,{112,105,0}}, +/* 44241 */ {(11<<2)|2,{112,105,0}}, +/* 44242 */ {(11<<2)|2,{112,105,0}}, +/* 44243 */ {(11<<2)|2,{112,105,0}}, +/* 44244 */ {(11<<2)|2,{112,105,0}}, +/* 44245 */ {(11<<2)|2,{112,105,0}}, +/* 44246 */ {(11<<2)|2,{112,105,0}}, +/* 44247 */ {(11<<2)|2,{112,105,0}}, +/* 44248 */ {(11<<2)|2,{112,105,0}}, +/* 44249 */ {(11<<2)|2,{112,105,0}}, +/* 44250 */ {(11<<2)|2,{112,105,0}}, +/* 44251 */ {(11<<2)|2,{112,105,0}}, +/* 44252 */ {(11<<2)|2,{112,105,0}}, +/* 44253 */ {(11<<2)|2,{112,105,0}}, +/* 44254 */ {(11<<2)|2,{112,105,0}}, +/* 44255 */ {(11<<2)|2,{112,105,0}}, +/* 44256 */ {(16<<2)|3,{112,111,48}}, +/* 44257 */ {(16<<2)|3,{112,111,49}}, +/* 44258 */ {(16<<2)|3,{112,111,50}}, +/* 44259 */ {(16<<2)|3,{112,111,97}}, +/* 44260 */ {(16<<2)|3,{112,111,99}}, +/* 44261 */ {(16<<2)|3,{112,111,101}}, +/* 44262 */ {(16<<2)|3,{112,111,105}}, +/* 44263 */ {(16<<2)|3,{112,111,111}}, +/* 44264 */ {(16<<2)|3,{112,111,115}}, +/* 44265 */ {(16<<2)|3,{112,111,116}}, +/* 44266 */ {(11<<2)|2,{112,111,0}}, +/* 44267 */ {(11<<2)|2,{112,111,0}}, +/* 44268 */ {(11<<2)|2,{112,111,0}}, +/* 44269 */ {(11<<2)|2,{112,111,0}}, +/* 44270 */ {(11<<2)|2,{112,111,0}}, +/* 44271 */ {(11<<2)|2,{112,111,0}}, +/* 44272 */ {(11<<2)|2,{112,111,0}}, +/* 44273 */ {(11<<2)|2,{112,111,0}}, +/* 44274 */ {(11<<2)|2,{112,111,0}}, +/* 44275 */ {(11<<2)|2,{112,111,0}}, +/* 44276 */ {(11<<2)|2,{112,111,0}}, +/* 44277 */ {(11<<2)|2,{112,111,0}}, +/* 44278 */ {(11<<2)|2,{112,111,0}}, +/* 44279 */ {(11<<2)|2,{112,111,0}}, +/* 44280 */ {(11<<2)|2,{112,111,0}}, +/* 44281 */ {(11<<2)|2,{112,111,0}}, +/* 44282 */ {(11<<2)|2,{112,111,0}}, +/* 44283 */ {(11<<2)|2,{112,111,0}}, +/* 44284 */ {(11<<2)|2,{112,111,0}}, +/* 44285 */ {(11<<2)|2,{112,111,0}}, +/* 44286 */ {(11<<2)|2,{112,111,0}}, +/* 44287 */ {(11<<2)|2,{112,111,0}}, +/* 44288 */ {(16<<2)|3,{112,115,48}}, +/* 44289 */ {(16<<2)|3,{112,115,49}}, +/* 44290 */ {(16<<2)|3,{112,115,50}}, +/* 44291 */ {(16<<2)|3,{112,115,97}}, +/* 44292 */ {(16<<2)|3,{112,115,99}}, +/* 44293 */ {(16<<2)|3,{112,115,101}}, +/* 44294 */ {(16<<2)|3,{112,115,105}}, +/* 44295 */ {(16<<2)|3,{112,115,111}}, +/* 44296 */ {(16<<2)|3,{112,115,115}}, +/* 44297 */ {(16<<2)|3,{112,115,116}}, +/* 44298 */ {(11<<2)|2,{112,115,0}}, +/* 44299 */ {(11<<2)|2,{112,115,0}}, +/* 44300 */ {(11<<2)|2,{112,115,0}}, +/* 44301 */ {(11<<2)|2,{112,115,0}}, +/* 44302 */ {(11<<2)|2,{112,115,0}}, +/* 44303 */ {(11<<2)|2,{112,115,0}}, +/* 44304 */ {(11<<2)|2,{112,115,0}}, +/* 44305 */ {(11<<2)|2,{112,115,0}}, +/* 44306 */ {(11<<2)|2,{112,115,0}}, +/* 44307 */ {(11<<2)|2,{112,115,0}}, +/* 44308 */ {(11<<2)|2,{112,115,0}}, +/* 44309 */ {(11<<2)|2,{112,115,0}}, +/* 44310 */ {(11<<2)|2,{112,115,0}}, +/* 44311 */ {(11<<2)|2,{112,115,0}}, +/* 44312 */ {(11<<2)|2,{112,115,0}}, +/* 44313 */ {(11<<2)|2,{112,115,0}}, +/* 44314 */ {(11<<2)|2,{112,115,0}}, +/* 44315 */ {(11<<2)|2,{112,115,0}}, +/* 44316 */ {(11<<2)|2,{112,115,0}}, +/* 44317 */ {(11<<2)|2,{112,115,0}}, +/* 44318 */ {(11<<2)|2,{112,115,0}}, +/* 44319 */ {(11<<2)|2,{112,115,0}}, +/* 44320 */ {(16<<2)|3,{112,116,48}}, +/* 44321 */ {(16<<2)|3,{112,116,49}}, +/* 44322 */ {(16<<2)|3,{112,116,50}}, +/* 44323 */ {(16<<2)|3,{112,116,97}}, +/* 44324 */ {(16<<2)|3,{112,116,99}}, +/* 44325 */ {(16<<2)|3,{112,116,101}}, +/* 44326 */ {(16<<2)|3,{112,116,105}}, +/* 44327 */ {(16<<2)|3,{112,116,111}}, +/* 44328 */ {(16<<2)|3,{112,116,115}}, +/* 44329 */ {(16<<2)|3,{112,116,116}}, +/* 44330 */ {(11<<2)|2,{112,116,0}}, +/* 44331 */ {(11<<2)|2,{112,116,0}}, +/* 44332 */ {(11<<2)|2,{112,116,0}}, +/* 44333 */ {(11<<2)|2,{112,116,0}}, +/* 44334 */ {(11<<2)|2,{112,116,0}}, +/* 44335 */ {(11<<2)|2,{112,116,0}}, +/* 44336 */ {(11<<2)|2,{112,116,0}}, +/* 44337 */ {(11<<2)|2,{112,116,0}}, +/* 44338 */ {(11<<2)|2,{112,116,0}}, +/* 44339 */ {(11<<2)|2,{112,116,0}}, +/* 44340 */ {(11<<2)|2,{112,116,0}}, +/* 44341 */ {(11<<2)|2,{112,116,0}}, +/* 44342 */ {(11<<2)|2,{112,116,0}}, +/* 44343 */ {(11<<2)|2,{112,116,0}}, +/* 44344 */ {(11<<2)|2,{112,116,0}}, +/* 44345 */ {(11<<2)|2,{112,116,0}}, +/* 44346 */ {(11<<2)|2,{112,116,0}}, +/* 44347 */ {(11<<2)|2,{112,116,0}}, +/* 44348 */ {(11<<2)|2,{112,116,0}}, +/* 44349 */ {(11<<2)|2,{112,116,0}}, +/* 44350 */ {(11<<2)|2,{112,116,0}}, +/* 44351 */ {(11<<2)|2,{112,116,0}}, +/* 44352 */ {(12<<2)|2,{112,32,0}}, +/* 44353 */ {(12<<2)|2,{112,32,0}}, +/* 44354 */ {(12<<2)|2,{112,32,0}}, +/* 44355 */ {(12<<2)|2,{112,32,0}}, +/* 44356 */ {(12<<2)|2,{112,32,0}}, +/* 44357 */ {(12<<2)|2,{112,32,0}}, +/* 44358 */ {(12<<2)|2,{112,32,0}}, +/* 44359 */ {(12<<2)|2,{112,32,0}}, +/* 44360 */ {(12<<2)|2,{112,32,0}}, +/* 44361 */ {(12<<2)|2,{112,32,0}}, +/* 44362 */ {(12<<2)|2,{112,32,0}}, +/* 44363 */ {(12<<2)|2,{112,32,0}}, +/* 44364 */ {(12<<2)|2,{112,32,0}}, +/* 44365 */ {(12<<2)|2,{112,32,0}}, +/* 44366 */ {(12<<2)|2,{112,32,0}}, +/* 44367 */ {(12<<2)|2,{112,32,0}}, +/* 44368 */ {(12<<2)|2,{112,37,0}}, +/* 44369 */ {(12<<2)|2,{112,37,0}}, +/* 44370 */ {(12<<2)|2,{112,37,0}}, +/* 44371 */ {(12<<2)|2,{112,37,0}}, +/* 44372 */ {(12<<2)|2,{112,37,0}}, +/* 44373 */ {(12<<2)|2,{112,37,0}}, +/* 44374 */ {(12<<2)|2,{112,37,0}}, +/* 44375 */ {(12<<2)|2,{112,37,0}}, +/* 44376 */ {(12<<2)|2,{112,37,0}}, +/* 44377 */ {(12<<2)|2,{112,37,0}}, +/* 44378 */ {(12<<2)|2,{112,37,0}}, +/* 44379 */ {(12<<2)|2,{112,37,0}}, +/* 44380 */ {(12<<2)|2,{112,37,0}}, +/* 44381 */ {(12<<2)|2,{112,37,0}}, +/* 44382 */ {(12<<2)|2,{112,37,0}}, +/* 44383 */ {(12<<2)|2,{112,37,0}}, +/* 44384 */ {(12<<2)|2,{112,45,0}}, +/* 44385 */ {(12<<2)|2,{112,45,0}}, +/* 44386 */ {(12<<2)|2,{112,45,0}}, +/* 44387 */ {(12<<2)|2,{112,45,0}}, +/* 44388 */ {(12<<2)|2,{112,45,0}}, +/* 44389 */ {(12<<2)|2,{112,45,0}}, +/* 44390 */ {(12<<2)|2,{112,45,0}}, +/* 44391 */ {(12<<2)|2,{112,45,0}}, +/* 44392 */ {(12<<2)|2,{112,45,0}}, +/* 44393 */ {(12<<2)|2,{112,45,0}}, +/* 44394 */ {(12<<2)|2,{112,45,0}}, +/* 44395 */ {(12<<2)|2,{112,45,0}}, +/* 44396 */ {(12<<2)|2,{112,45,0}}, +/* 44397 */ {(12<<2)|2,{112,45,0}}, +/* 44398 */ {(12<<2)|2,{112,45,0}}, +/* 44399 */ {(12<<2)|2,{112,45,0}}, +/* 44400 */ {(12<<2)|2,{112,46,0}}, +/* 44401 */ {(12<<2)|2,{112,46,0}}, +/* 44402 */ {(12<<2)|2,{112,46,0}}, +/* 44403 */ {(12<<2)|2,{112,46,0}}, +/* 44404 */ {(12<<2)|2,{112,46,0}}, +/* 44405 */ {(12<<2)|2,{112,46,0}}, +/* 44406 */ {(12<<2)|2,{112,46,0}}, +/* 44407 */ {(12<<2)|2,{112,46,0}}, +/* 44408 */ {(12<<2)|2,{112,46,0}}, +/* 44409 */ {(12<<2)|2,{112,46,0}}, +/* 44410 */ {(12<<2)|2,{112,46,0}}, +/* 44411 */ {(12<<2)|2,{112,46,0}}, +/* 44412 */ {(12<<2)|2,{112,46,0}}, +/* 44413 */ {(12<<2)|2,{112,46,0}}, +/* 44414 */ {(12<<2)|2,{112,46,0}}, +/* 44415 */ {(12<<2)|2,{112,46,0}}, +/* 44416 */ {(12<<2)|2,{112,47,0}}, +/* 44417 */ {(12<<2)|2,{112,47,0}}, +/* 44418 */ {(12<<2)|2,{112,47,0}}, +/* 44419 */ {(12<<2)|2,{112,47,0}}, +/* 44420 */ {(12<<2)|2,{112,47,0}}, +/* 44421 */ {(12<<2)|2,{112,47,0}}, +/* 44422 */ {(12<<2)|2,{112,47,0}}, +/* 44423 */ {(12<<2)|2,{112,47,0}}, +/* 44424 */ {(12<<2)|2,{112,47,0}}, +/* 44425 */ {(12<<2)|2,{112,47,0}}, +/* 44426 */ {(12<<2)|2,{112,47,0}}, +/* 44427 */ {(12<<2)|2,{112,47,0}}, +/* 44428 */ {(12<<2)|2,{112,47,0}}, +/* 44429 */ {(12<<2)|2,{112,47,0}}, +/* 44430 */ {(12<<2)|2,{112,47,0}}, +/* 44431 */ {(12<<2)|2,{112,47,0}}, +/* 44432 */ {(12<<2)|2,{112,51,0}}, +/* 44433 */ {(12<<2)|2,{112,51,0}}, +/* 44434 */ {(12<<2)|2,{112,51,0}}, +/* 44435 */ {(12<<2)|2,{112,51,0}}, +/* 44436 */ {(12<<2)|2,{112,51,0}}, +/* 44437 */ {(12<<2)|2,{112,51,0}}, +/* 44438 */ {(12<<2)|2,{112,51,0}}, +/* 44439 */ {(12<<2)|2,{112,51,0}}, +/* 44440 */ {(12<<2)|2,{112,51,0}}, +/* 44441 */ {(12<<2)|2,{112,51,0}}, +/* 44442 */ {(12<<2)|2,{112,51,0}}, +/* 44443 */ {(12<<2)|2,{112,51,0}}, +/* 44444 */ {(12<<2)|2,{112,51,0}}, +/* 44445 */ {(12<<2)|2,{112,51,0}}, +/* 44446 */ {(12<<2)|2,{112,51,0}}, +/* 44447 */ {(12<<2)|2,{112,51,0}}, +/* 44448 */ {(12<<2)|2,{112,52,0}}, +/* 44449 */ {(12<<2)|2,{112,52,0}}, +/* 44450 */ {(12<<2)|2,{112,52,0}}, +/* 44451 */ {(12<<2)|2,{112,52,0}}, +/* 44452 */ {(12<<2)|2,{112,52,0}}, +/* 44453 */ {(12<<2)|2,{112,52,0}}, +/* 44454 */ {(12<<2)|2,{112,52,0}}, +/* 44455 */ {(12<<2)|2,{112,52,0}}, +/* 44456 */ {(12<<2)|2,{112,52,0}}, +/* 44457 */ {(12<<2)|2,{112,52,0}}, +/* 44458 */ {(12<<2)|2,{112,52,0}}, +/* 44459 */ {(12<<2)|2,{112,52,0}}, +/* 44460 */ {(12<<2)|2,{112,52,0}}, +/* 44461 */ {(12<<2)|2,{112,52,0}}, +/* 44462 */ {(12<<2)|2,{112,52,0}}, +/* 44463 */ {(12<<2)|2,{112,52,0}}, +/* 44464 */ {(12<<2)|2,{112,53,0}}, +/* 44465 */ {(12<<2)|2,{112,53,0}}, +/* 44466 */ {(12<<2)|2,{112,53,0}}, +/* 44467 */ {(12<<2)|2,{112,53,0}}, +/* 44468 */ {(12<<2)|2,{112,53,0}}, +/* 44469 */ {(12<<2)|2,{112,53,0}}, +/* 44470 */ {(12<<2)|2,{112,53,0}}, +/* 44471 */ {(12<<2)|2,{112,53,0}}, +/* 44472 */ {(12<<2)|2,{112,53,0}}, +/* 44473 */ {(12<<2)|2,{112,53,0}}, +/* 44474 */ {(12<<2)|2,{112,53,0}}, +/* 44475 */ {(12<<2)|2,{112,53,0}}, +/* 44476 */ {(12<<2)|2,{112,53,0}}, +/* 44477 */ {(12<<2)|2,{112,53,0}}, +/* 44478 */ {(12<<2)|2,{112,53,0}}, +/* 44479 */ {(12<<2)|2,{112,53,0}}, +/* 44480 */ {(12<<2)|2,{112,54,0}}, +/* 44481 */ {(12<<2)|2,{112,54,0}}, +/* 44482 */ {(12<<2)|2,{112,54,0}}, +/* 44483 */ {(12<<2)|2,{112,54,0}}, +/* 44484 */ {(12<<2)|2,{112,54,0}}, +/* 44485 */ {(12<<2)|2,{112,54,0}}, +/* 44486 */ {(12<<2)|2,{112,54,0}}, +/* 44487 */ {(12<<2)|2,{112,54,0}}, +/* 44488 */ {(12<<2)|2,{112,54,0}}, +/* 44489 */ {(12<<2)|2,{112,54,0}}, +/* 44490 */ {(12<<2)|2,{112,54,0}}, +/* 44491 */ {(12<<2)|2,{112,54,0}}, +/* 44492 */ {(12<<2)|2,{112,54,0}}, +/* 44493 */ {(12<<2)|2,{112,54,0}}, +/* 44494 */ {(12<<2)|2,{112,54,0}}, +/* 44495 */ {(12<<2)|2,{112,54,0}}, +/* 44496 */ {(12<<2)|2,{112,55,0}}, +/* 44497 */ {(12<<2)|2,{112,55,0}}, +/* 44498 */ {(12<<2)|2,{112,55,0}}, +/* 44499 */ {(12<<2)|2,{112,55,0}}, +/* 44500 */ {(12<<2)|2,{112,55,0}}, +/* 44501 */ {(12<<2)|2,{112,55,0}}, +/* 44502 */ {(12<<2)|2,{112,55,0}}, +/* 44503 */ {(12<<2)|2,{112,55,0}}, +/* 44504 */ {(12<<2)|2,{112,55,0}}, +/* 44505 */ {(12<<2)|2,{112,55,0}}, +/* 44506 */ {(12<<2)|2,{112,55,0}}, +/* 44507 */ {(12<<2)|2,{112,55,0}}, +/* 44508 */ {(12<<2)|2,{112,55,0}}, +/* 44509 */ {(12<<2)|2,{112,55,0}}, +/* 44510 */ {(12<<2)|2,{112,55,0}}, +/* 44511 */ {(12<<2)|2,{112,55,0}}, +/* 44512 */ {(12<<2)|2,{112,56,0}}, +/* 44513 */ {(12<<2)|2,{112,56,0}}, +/* 44514 */ {(12<<2)|2,{112,56,0}}, +/* 44515 */ {(12<<2)|2,{112,56,0}}, +/* 44516 */ {(12<<2)|2,{112,56,0}}, +/* 44517 */ {(12<<2)|2,{112,56,0}}, +/* 44518 */ {(12<<2)|2,{112,56,0}}, +/* 44519 */ {(12<<2)|2,{112,56,0}}, +/* 44520 */ {(12<<2)|2,{112,56,0}}, +/* 44521 */ {(12<<2)|2,{112,56,0}}, +/* 44522 */ {(12<<2)|2,{112,56,0}}, +/* 44523 */ {(12<<2)|2,{112,56,0}}, +/* 44524 */ {(12<<2)|2,{112,56,0}}, +/* 44525 */ {(12<<2)|2,{112,56,0}}, +/* 44526 */ {(12<<2)|2,{112,56,0}}, +/* 44527 */ {(12<<2)|2,{112,56,0}}, +/* 44528 */ {(12<<2)|2,{112,57,0}}, +/* 44529 */ {(12<<2)|2,{112,57,0}}, +/* 44530 */ {(12<<2)|2,{112,57,0}}, +/* 44531 */ {(12<<2)|2,{112,57,0}}, +/* 44532 */ {(12<<2)|2,{112,57,0}}, +/* 44533 */ {(12<<2)|2,{112,57,0}}, +/* 44534 */ {(12<<2)|2,{112,57,0}}, +/* 44535 */ {(12<<2)|2,{112,57,0}}, +/* 44536 */ {(12<<2)|2,{112,57,0}}, +/* 44537 */ {(12<<2)|2,{112,57,0}}, +/* 44538 */ {(12<<2)|2,{112,57,0}}, +/* 44539 */ {(12<<2)|2,{112,57,0}}, +/* 44540 */ {(12<<2)|2,{112,57,0}}, +/* 44541 */ {(12<<2)|2,{112,57,0}}, +/* 44542 */ {(12<<2)|2,{112,57,0}}, +/* 44543 */ {(12<<2)|2,{112,57,0}}, +/* 44544 */ {(12<<2)|2,{112,61,0}}, +/* 44545 */ {(12<<2)|2,{112,61,0}}, +/* 44546 */ {(12<<2)|2,{112,61,0}}, +/* 44547 */ {(12<<2)|2,{112,61,0}}, +/* 44548 */ {(12<<2)|2,{112,61,0}}, +/* 44549 */ {(12<<2)|2,{112,61,0}}, +/* 44550 */ {(12<<2)|2,{112,61,0}}, +/* 44551 */ {(12<<2)|2,{112,61,0}}, +/* 44552 */ {(12<<2)|2,{112,61,0}}, +/* 44553 */ {(12<<2)|2,{112,61,0}}, +/* 44554 */ {(12<<2)|2,{112,61,0}}, +/* 44555 */ {(12<<2)|2,{112,61,0}}, +/* 44556 */ {(12<<2)|2,{112,61,0}}, +/* 44557 */ {(12<<2)|2,{112,61,0}}, +/* 44558 */ {(12<<2)|2,{112,61,0}}, +/* 44559 */ {(12<<2)|2,{112,61,0}}, +/* 44560 */ {(12<<2)|2,{112,65,0}}, +/* 44561 */ {(12<<2)|2,{112,65,0}}, +/* 44562 */ {(12<<2)|2,{112,65,0}}, +/* 44563 */ {(12<<2)|2,{112,65,0}}, +/* 44564 */ {(12<<2)|2,{112,65,0}}, +/* 44565 */ {(12<<2)|2,{112,65,0}}, +/* 44566 */ {(12<<2)|2,{112,65,0}}, +/* 44567 */ {(12<<2)|2,{112,65,0}}, +/* 44568 */ {(12<<2)|2,{112,65,0}}, +/* 44569 */ {(12<<2)|2,{112,65,0}}, +/* 44570 */ {(12<<2)|2,{112,65,0}}, +/* 44571 */ {(12<<2)|2,{112,65,0}}, +/* 44572 */ {(12<<2)|2,{112,65,0}}, +/* 44573 */ {(12<<2)|2,{112,65,0}}, +/* 44574 */ {(12<<2)|2,{112,65,0}}, +/* 44575 */ {(12<<2)|2,{112,65,0}}, +/* 44576 */ {(12<<2)|2,{112,95,0}}, +/* 44577 */ {(12<<2)|2,{112,95,0}}, +/* 44578 */ {(12<<2)|2,{112,95,0}}, +/* 44579 */ {(12<<2)|2,{112,95,0}}, +/* 44580 */ {(12<<2)|2,{112,95,0}}, +/* 44581 */ {(12<<2)|2,{112,95,0}}, +/* 44582 */ {(12<<2)|2,{112,95,0}}, +/* 44583 */ {(12<<2)|2,{112,95,0}}, +/* 44584 */ {(12<<2)|2,{112,95,0}}, +/* 44585 */ {(12<<2)|2,{112,95,0}}, +/* 44586 */ {(12<<2)|2,{112,95,0}}, +/* 44587 */ {(12<<2)|2,{112,95,0}}, +/* 44588 */ {(12<<2)|2,{112,95,0}}, +/* 44589 */ {(12<<2)|2,{112,95,0}}, +/* 44590 */ {(12<<2)|2,{112,95,0}}, +/* 44591 */ {(12<<2)|2,{112,95,0}}, +/* 44592 */ {(12<<2)|2,{112,98,0}}, +/* 44593 */ {(12<<2)|2,{112,98,0}}, +/* 44594 */ {(12<<2)|2,{112,98,0}}, +/* 44595 */ {(12<<2)|2,{112,98,0}}, +/* 44596 */ {(12<<2)|2,{112,98,0}}, +/* 44597 */ {(12<<2)|2,{112,98,0}}, +/* 44598 */ {(12<<2)|2,{112,98,0}}, +/* 44599 */ {(12<<2)|2,{112,98,0}}, +/* 44600 */ {(12<<2)|2,{112,98,0}}, +/* 44601 */ {(12<<2)|2,{112,98,0}}, +/* 44602 */ {(12<<2)|2,{112,98,0}}, +/* 44603 */ {(12<<2)|2,{112,98,0}}, +/* 44604 */ {(12<<2)|2,{112,98,0}}, +/* 44605 */ {(12<<2)|2,{112,98,0}}, +/* 44606 */ {(12<<2)|2,{112,98,0}}, +/* 44607 */ {(12<<2)|2,{112,98,0}}, +/* 44608 */ {(12<<2)|2,{112,100,0}}, +/* 44609 */ {(12<<2)|2,{112,100,0}}, +/* 44610 */ {(12<<2)|2,{112,100,0}}, +/* 44611 */ {(12<<2)|2,{112,100,0}}, +/* 44612 */ {(12<<2)|2,{112,100,0}}, +/* 44613 */ {(12<<2)|2,{112,100,0}}, +/* 44614 */ {(12<<2)|2,{112,100,0}}, +/* 44615 */ {(12<<2)|2,{112,100,0}}, +/* 44616 */ {(12<<2)|2,{112,100,0}}, +/* 44617 */ {(12<<2)|2,{112,100,0}}, +/* 44618 */ {(12<<2)|2,{112,100,0}}, +/* 44619 */ {(12<<2)|2,{112,100,0}}, +/* 44620 */ {(12<<2)|2,{112,100,0}}, +/* 44621 */ {(12<<2)|2,{112,100,0}}, +/* 44622 */ {(12<<2)|2,{112,100,0}}, +/* 44623 */ {(12<<2)|2,{112,100,0}}, +/* 44624 */ {(12<<2)|2,{112,102,0}}, +/* 44625 */ {(12<<2)|2,{112,102,0}}, +/* 44626 */ {(12<<2)|2,{112,102,0}}, +/* 44627 */ {(12<<2)|2,{112,102,0}}, +/* 44628 */ {(12<<2)|2,{112,102,0}}, +/* 44629 */ {(12<<2)|2,{112,102,0}}, +/* 44630 */ {(12<<2)|2,{112,102,0}}, +/* 44631 */ {(12<<2)|2,{112,102,0}}, +/* 44632 */ {(12<<2)|2,{112,102,0}}, +/* 44633 */ {(12<<2)|2,{112,102,0}}, +/* 44634 */ {(12<<2)|2,{112,102,0}}, +/* 44635 */ {(12<<2)|2,{112,102,0}}, +/* 44636 */ {(12<<2)|2,{112,102,0}}, +/* 44637 */ {(12<<2)|2,{112,102,0}}, +/* 44638 */ {(12<<2)|2,{112,102,0}}, +/* 44639 */ {(12<<2)|2,{112,102,0}}, +/* 44640 */ {(12<<2)|2,{112,103,0}}, +/* 44641 */ {(12<<2)|2,{112,103,0}}, +/* 44642 */ {(12<<2)|2,{112,103,0}}, +/* 44643 */ {(12<<2)|2,{112,103,0}}, +/* 44644 */ {(12<<2)|2,{112,103,0}}, +/* 44645 */ {(12<<2)|2,{112,103,0}}, +/* 44646 */ {(12<<2)|2,{112,103,0}}, +/* 44647 */ {(12<<2)|2,{112,103,0}}, +/* 44648 */ {(12<<2)|2,{112,103,0}}, +/* 44649 */ {(12<<2)|2,{112,103,0}}, +/* 44650 */ {(12<<2)|2,{112,103,0}}, +/* 44651 */ {(12<<2)|2,{112,103,0}}, +/* 44652 */ {(12<<2)|2,{112,103,0}}, +/* 44653 */ {(12<<2)|2,{112,103,0}}, +/* 44654 */ {(12<<2)|2,{112,103,0}}, +/* 44655 */ {(12<<2)|2,{112,103,0}}, +/* 44656 */ {(12<<2)|2,{112,104,0}}, +/* 44657 */ {(12<<2)|2,{112,104,0}}, +/* 44658 */ {(12<<2)|2,{112,104,0}}, +/* 44659 */ {(12<<2)|2,{112,104,0}}, +/* 44660 */ {(12<<2)|2,{112,104,0}}, +/* 44661 */ {(12<<2)|2,{112,104,0}}, +/* 44662 */ {(12<<2)|2,{112,104,0}}, +/* 44663 */ {(12<<2)|2,{112,104,0}}, +/* 44664 */ {(12<<2)|2,{112,104,0}}, +/* 44665 */ {(12<<2)|2,{112,104,0}}, +/* 44666 */ {(12<<2)|2,{112,104,0}}, +/* 44667 */ {(12<<2)|2,{112,104,0}}, +/* 44668 */ {(12<<2)|2,{112,104,0}}, +/* 44669 */ {(12<<2)|2,{112,104,0}}, +/* 44670 */ {(12<<2)|2,{112,104,0}}, +/* 44671 */ {(12<<2)|2,{112,104,0}}, +/* 44672 */ {(12<<2)|2,{112,108,0}}, +/* 44673 */ {(12<<2)|2,{112,108,0}}, +/* 44674 */ {(12<<2)|2,{112,108,0}}, +/* 44675 */ {(12<<2)|2,{112,108,0}}, +/* 44676 */ {(12<<2)|2,{112,108,0}}, +/* 44677 */ {(12<<2)|2,{112,108,0}}, +/* 44678 */ {(12<<2)|2,{112,108,0}}, +/* 44679 */ {(12<<2)|2,{112,108,0}}, +/* 44680 */ {(12<<2)|2,{112,108,0}}, +/* 44681 */ {(12<<2)|2,{112,108,0}}, +/* 44682 */ {(12<<2)|2,{112,108,0}}, +/* 44683 */ {(12<<2)|2,{112,108,0}}, +/* 44684 */ {(12<<2)|2,{112,108,0}}, +/* 44685 */ {(12<<2)|2,{112,108,0}}, +/* 44686 */ {(12<<2)|2,{112,108,0}}, +/* 44687 */ {(12<<2)|2,{112,108,0}}, +/* 44688 */ {(12<<2)|2,{112,109,0}}, +/* 44689 */ {(12<<2)|2,{112,109,0}}, +/* 44690 */ {(12<<2)|2,{112,109,0}}, +/* 44691 */ {(12<<2)|2,{112,109,0}}, +/* 44692 */ {(12<<2)|2,{112,109,0}}, +/* 44693 */ {(12<<2)|2,{112,109,0}}, +/* 44694 */ {(12<<2)|2,{112,109,0}}, +/* 44695 */ {(12<<2)|2,{112,109,0}}, +/* 44696 */ {(12<<2)|2,{112,109,0}}, +/* 44697 */ {(12<<2)|2,{112,109,0}}, +/* 44698 */ {(12<<2)|2,{112,109,0}}, +/* 44699 */ {(12<<2)|2,{112,109,0}}, +/* 44700 */ {(12<<2)|2,{112,109,0}}, +/* 44701 */ {(12<<2)|2,{112,109,0}}, +/* 44702 */ {(12<<2)|2,{112,109,0}}, +/* 44703 */ {(12<<2)|2,{112,109,0}}, +/* 44704 */ {(12<<2)|2,{112,110,0}}, +/* 44705 */ {(12<<2)|2,{112,110,0}}, +/* 44706 */ {(12<<2)|2,{112,110,0}}, +/* 44707 */ {(12<<2)|2,{112,110,0}}, +/* 44708 */ {(12<<2)|2,{112,110,0}}, +/* 44709 */ {(12<<2)|2,{112,110,0}}, +/* 44710 */ {(12<<2)|2,{112,110,0}}, +/* 44711 */ {(12<<2)|2,{112,110,0}}, +/* 44712 */ {(12<<2)|2,{112,110,0}}, +/* 44713 */ {(12<<2)|2,{112,110,0}}, +/* 44714 */ {(12<<2)|2,{112,110,0}}, +/* 44715 */ {(12<<2)|2,{112,110,0}}, +/* 44716 */ {(12<<2)|2,{112,110,0}}, +/* 44717 */ {(12<<2)|2,{112,110,0}}, +/* 44718 */ {(12<<2)|2,{112,110,0}}, +/* 44719 */ {(12<<2)|2,{112,110,0}}, +/* 44720 */ {(12<<2)|2,{112,112,0}}, +/* 44721 */ {(12<<2)|2,{112,112,0}}, +/* 44722 */ {(12<<2)|2,{112,112,0}}, +/* 44723 */ {(12<<2)|2,{112,112,0}}, +/* 44724 */ {(12<<2)|2,{112,112,0}}, +/* 44725 */ {(12<<2)|2,{112,112,0}}, +/* 44726 */ {(12<<2)|2,{112,112,0}}, +/* 44727 */ {(12<<2)|2,{112,112,0}}, +/* 44728 */ {(12<<2)|2,{112,112,0}}, +/* 44729 */ {(12<<2)|2,{112,112,0}}, +/* 44730 */ {(12<<2)|2,{112,112,0}}, +/* 44731 */ {(12<<2)|2,{112,112,0}}, +/* 44732 */ {(12<<2)|2,{112,112,0}}, +/* 44733 */ {(12<<2)|2,{112,112,0}}, +/* 44734 */ {(12<<2)|2,{112,112,0}}, +/* 44735 */ {(12<<2)|2,{112,112,0}}, +/* 44736 */ {(12<<2)|2,{112,114,0}}, +/* 44737 */ {(12<<2)|2,{112,114,0}}, +/* 44738 */ {(12<<2)|2,{112,114,0}}, +/* 44739 */ {(12<<2)|2,{112,114,0}}, +/* 44740 */ {(12<<2)|2,{112,114,0}}, +/* 44741 */ {(12<<2)|2,{112,114,0}}, +/* 44742 */ {(12<<2)|2,{112,114,0}}, +/* 44743 */ {(12<<2)|2,{112,114,0}}, +/* 44744 */ {(12<<2)|2,{112,114,0}}, +/* 44745 */ {(12<<2)|2,{112,114,0}}, +/* 44746 */ {(12<<2)|2,{112,114,0}}, +/* 44747 */ {(12<<2)|2,{112,114,0}}, +/* 44748 */ {(12<<2)|2,{112,114,0}}, +/* 44749 */ {(12<<2)|2,{112,114,0}}, +/* 44750 */ {(12<<2)|2,{112,114,0}}, +/* 44751 */ {(12<<2)|2,{112,114,0}}, +/* 44752 */ {(12<<2)|2,{112,117,0}}, +/* 44753 */ {(12<<2)|2,{112,117,0}}, +/* 44754 */ {(12<<2)|2,{112,117,0}}, +/* 44755 */ {(12<<2)|2,{112,117,0}}, +/* 44756 */ {(12<<2)|2,{112,117,0}}, +/* 44757 */ {(12<<2)|2,{112,117,0}}, +/* 44758 */ {(12<<2)|2,{112,117,0}}, +/* 44759 */ {(12<<2)|2,{112,117,0}}, +/* 44760 */ {(12<<2)|2,{112,117,0}}, +/* 44761 */ {(12<<2)|2,{112,117,0}}, +/* 44762 */ {(12<<2)|2,{112,117,0}}, +/* 44763 */ {(12<<2)|2,{112,117,0}}, +/* 44764 */ {(12<<2)|2,{112,117,0}}, +/* 44765 */ {(12<<2)|2,{112,117,0}}, +/* 44766 */ {(12<<2)|2,{112,117,0}}, +/* 44767 */ {(12<<2)|2,{112,117,0}}, +/* 44768 */ {(13<<2)|2,{112,58,0}}, +/* 44769 */ {(13<<2)|2,{112,58,0}}, +/* 44770 */ {(13<<2)|2,{112,58,0}}, +/* 44771 */ {(13<<2)|2,{112,58,0}}, +/* 44772 */ {(13<<2)|2,{112,58,0}}, +/* 44773 */ {(13<<2)|2,{112,58,0}}, +/* 44774 */ {(13<<2)|2,{112,58,0}}, +/* 44775 */ {(13<<2)|2,{112,58,0}}, +/* 44776 */ {(13<<2)|2,{112,66,0}}, +/* 44777 */ {(13<<2)|2,{112,66,0}}, +/* 44778 */ {(13<<2)|2,{112,66,0}}, +/* 44779 */ {(13<<2)|2,{112,66,0}}, +/* 44780 */ {(13<<2)|2,{112,66,0}}, +/* 44781 */ {(13<<2)|2,{112,66,0}}, +/* 44782 */ {(13<<2)|2,{112,66,0}}, +/* 44783 */ {(13<<2)|2,{112,66,0}}, +/* 44784 */ {(13<<2)|2,{112,67,0}}, +/* 44785 */ {(13<<2)|2,{112,67,0}}, +/* 44786 */ {(13<<2)|2,{112,67,0}}, +/* 44787 */ {(13<<2)|2,{112,67,0}}, +/* 44788 */ {(13<<2)|2,{112,67,0}}, +/* 44789 */ {(13<<2)|2,{112,67,0}}, +/* 44790 */ {(13<<2)|2,{112,67,0}}, +/* 44791 */ {(13<<2)|2,{112,67,0}}, +/* 44792 */ {(13<<2)|2,{112,68,0}}, +/* 44793 */ {(13<<2)|2,{112,68,0}}, +/* 44794 */ {(13<<2)|2,{112,68,0}}, +/* 44795 */ {(13<<2)|2,{112,68,0}}, +/* 44796 */ {(13<<2)|2,{112,68,0}}, +/* 44797 */ {(13<<2)|2,{112,68,0}}, +/* 44798 */ {(13<<2)|2,{112,68,0}}, +/* 44799 */ {(13<<2)|2,{112,68,0}}, +/* 44800 */ {(13<<2)|2,{112,69,0}}, +/* 44801 */ {(13<<2)|2,{112,69,0}}, +/* 44802 */ {(13<<2)|2,{112,69,0}}, +/* 44803 */ {(13<<2)|2,{112,69,0}}, +/* 44804 */ {(13<<2)|2,{112,69,0}}, +/* 44805 */ {(13<<2)|2,{112,69,0}}, +/* 44806 */ {(13<<2)|2,{112,69,0}}, +/* 44807 */ {(13<<2)|2,{112,69,0}}, +/* 44808 */ {(13<<2)|2,{112,70,0}}, +/* 44809 */ {(13<<2)|2,{112,70,0}}, +/* 44810 */ {(13<<2)|2,{112,70,0}}, +/* 44811 */ {(13<<2)|2,{112,70,0}}, +/* 44812 */ {(13<<2)|2,{112,70,0}}, +/* 44813 */ {(13<<2)|2,{112,70,0}}, +/* 44814 */ {(13<<2)|2,{112,70,0}}, +/* 44815 */ {(13<<2)|2,{112,70,0}}, +/* 44816 */ {(13<<2)|2,{112,71,0}}, +/* 44817 */ {(13<<2)|2,{112,71,0}}, +/* 44818 */ {(13<<2)|2,{112,71,0}}, +/* 44819 */ {(13<<2)|2,{112,71,0}}, +/* 44820 */ {(13<<2)|2,{112,71,0}}, +/* 44821 */ {(13<<2)|2,{112,71,0}}, +/* 44822 */ {(13<<2)|2,{112,71,0}}, +/* 44823 */ {(13<<2)|2,{112,71,0}}, +/* 44824 */ {(13<<2)|2,{112,72,0}}, +/* 44825 */ {(13<<2)|2,{112,72,0}}, +/* 44826 */ {(13<<2)|2,{112,72,0}}, +/* 44827 */ {(13<<2)|2,{112,72,0}}, +/* 44828 */ {(13<<2)|2,{112,72,0}}, +/* 44829 */ {(13<<2)|2,{112,72,0}}, +/* 44830 */ {(13<<2)|2,{112,72,0}}, +/* 44831 */ {(13<<2)|2,{112,72,0}}, +/* 44832 */ {(13<<2)|2,{112,73,0}}, +/* 44833 */ {(13<<2)|2,{112,73,0}}, +/* 44834 */ {(13<<2)|2,{112,73,0}}, +/* 44835 */ {(13<<2)|2,{112,73,0}}, +/* 44836 */ {(13<<2)|2,{112,73,0}}, +/* 44837 */ {(13<<2)|2,{112,73,0}}, +/* 44838 */ {(13<<2)|2,{112,73,0}}, +/* 44839 */ {(13<<2)|2,{112,73,0}}, +/* 44840 */ {(13<<2)|2,{112,74,0}}, +/* 44841 */ {(13<<2)|2,{112,74,0}}, +/* 44842 */ {(13<<2)|2,{112,74,0}}, +/* 44843 */ {(13<<2)|2,{112,74,0}}, +/* 44844 */ {(13<<2)|2,{112,74,0}}, +/* 44845 */ {(13<<2)|2,{112,74,0}}, +/* 44846 */ {(13<<2)|2,{112,74,0}}, +/* 44847 */ {(13<<2)|2,{112,74,0}}, +/* 44848 */ {(13<<2)|2,{112,75,0}}, +/* 44849 */ {(13<<2)|2,{112,75,0}}, +/* 44850 */ {(13<<2)|2,{112,75,0}}, +/* 44851 */ {(13<<2)|2,{112,75,0}}, +/* 44852 */ {(13<<2)|2,{112,75,0}}, +/* 44853 */ {(13<<2)|2,{112,75,0}}, +/* 44854 */ {(13<<2)|2,{112,75,0}}, +/* 44855 */ {(13<<2)|2,{112,75,0}}, +/* 44856 */ {(13<<2)|2,{112,76,0}}, +/* 44857 */ {(13<<2)|2,{112,76,0}}, +/* 44858 */ {(13<<2)|2,{112,76,0}}, +/* 44859 */ {(13<<2)|2,{112,76,0}}, +/* 44860 */ {(13<<2)|2,{112,76,0}}, +/* 44861 */ {(13<<2)|2,{112,76,0}}, +/* 44862 */ {(13<<2)|2,{112,76,0}}, +/* 44863 */ {(13<<2)|2,{112,76,0}}, +/* 44864 */ {(13<<2)|2,{112,77,0}}, +/* 44865 */ {(13<<2)|2,{112,77,0}}, +/* 44866 */ {(13<<2)|2,{112,77,0}}, +/* 44867 */ {(13<<2)|2,{112,77,0}}, +/* 44868 */ {(13<<2)|2,{112,77,0}}, +/* 44869 */ {(13<<2)|2,{112,77,0}}, +/* 44870 */ {(13<<2)|2,{112,77,0}}, +/* 44871 */ {(13<<2)|2,{112,77,0}}, +/* 44872 */ {(13<<2)|2,{112,78,0}}, +/* 44873 */ {(13<<2)|2,{112,78,0}}, +/* 44874 */ {(13<<2)|2,{112,78,0}}, +/* 44875 */ {(13<<2)|2,{112,78,0}}, +/* 44876 */ {(13<<2)|2,{112,78,0}}, +/* 44877 */ {(13<<2)|2,{112,78,0}}, +/* 44878 */ {(13<<2)|2,{112,78,0}}, +/* 44879 */ {(13<<2)|2,{112,78,0}}, +/* 44880 */ {(13<<2)|2,{112,79,0}}, +/* 44881 */ {(13<<2)|2,{112,79,0}}, +/* 44882 */ {(13<<2)|2,{112,79,0}}, +/* 44883 */ {(13<<2)|2,{112,79,0}}, +/* 44884 */ {(13<<2)|2,{112,79,0}}, +/* 44885 */ {(13<<2)|2,{112,79,0}}, +/* 44886 */ {(13<<2)|2,{112,79,0}}, +/* 44887 */ {(13<<2)|2,{112,79,0}}, +/* 44888 */ {(13<<2)|2,{112,80,0}}, +/* 44889 */ {(13<<2)|2,{112,80,0}}, +/* 44890 */ {(13<<2)|2,{112,80,0}}, +/* 44891 */ {(13<<2)|2,{112,80,0}}, +/* 44892 */ {(13<<2)|2,{112,80,0}}, +/* 44893 */ {(13<<2)|2,{112,80,0}}, +/* 44894 */ {(13<<2)|2,{112,80,0}}, +/* 44895 */ {(13<<2)|2,{112,80,0}}, +/* 44896 */ {(13<<2)|2,{112,81,0}}, +/* 44897 */ {(13<<2)|2,{112,81,0}}, +/* 44898 */ {(13<<2)|2,{112,81,0}}, +/* 44899 */ {(13<<2)|2,{112,81,0}}, +/* 44900 */ {(13<<2)|2,{112,81,0}}, +/* 44901 */ {(13<<2)|2,{112,81,0}}, +/* 44902 */ {(13<<2)|2,{112,81,0}}, +/* 44903 */ {(13<<2)|2,{112,81,0}}, +/* 44904 */ {(13<<2)|2,{112,82,0}}, +/* 44905 */ {(13<<2)|2,{112,82,0}}, +/* 44906 */ {(13<<2)|2,{112,82,0}}, +/* 44907 */ {(13<<2)|2,{112,82,0}}, +/* 44908 */ {(13<<2)|2,{112,82,0}}, +/* 44909 */ {(13<<2)|2,{112,82,0}}, +/* 44910 */ {(13<<2)|2,{112,82,0}}, +/* 44911 */ {(13<<2)|2,{112,82,0}}, +/* 44912 */ {(13<<2)|2,{112,83,0}}, +/* 44913 */ {(13<<2)|2,{112,83,0}}, +/* 44914 */ {(13<<2)|2,{112,83,0}}, +/* 44915 */ {(13<<2)|2,{112,83,0}}, +/* 44916 */ {(13<<2)|2,{112,83,0}}, +/* 44917 */ {(13<<2)|2,{112,83,0}}, +/* 44918 */ {(13<<2)|2,{112,83,0}}, +/* 44919 */ {(13<<2)|2,{112,83,0}}, +/* 44920 */ {(13<<2)|2,{112,84,0}}, +/* 44921 */ {(13<<2)|2,{112,84,0}}, +/* 44922 */ {(13<<2)|2,{112,84,0}}, +/* 44923 */ {(13<<2)|2,{112,84,0}}, +/* 44924 */ {(13<<2)|2,{112,84,0}}, +/* 44925 */ {(13<<2)|2,{112,84,0}}, +/* 44926 */ {(13<<2)|2,{112,84,0}}, +/* 44927 */ {(13<<2)|2,{112,84,0}}, +/* 44928 */ {(13<<2)|2,{112,85,0}}, +/* 44929 */ {(13<<2)|2,{112,85,0}}, +/* 44930 */ {(13<<2)|2,{112,85,0}}, +/* 44931 */ {(13<<2)|2,{112,85,0}}, +/* 44932 */ {(13<<2)|2,{112,85,0}}, +/* 44933 */ {(13<<2)|2,{112,85,0}}, +/* 44934 */ {(13<<2)|2,{112,85,0}}, +/* 44935 */ {(13<<2)|2,{112,85,0}}, +/* 44936 */ {(13<<2)|2,{112,86,0}}, +/* 44937 */ {(13<<2)|2,{112,86,0}}, +/* 44938 */ {(13<<2)|2,{112,86,0}}, +/* 44939 */ {(13<<2)|2,{112,86,0}}, +/* 44940 */ {(13<<2)|2,{112,86,0}}, +/* 44941 */ {(13<<2)|2,{112,86,0}}, +/* 44942 */ {(13<<2)|2,{112,86,0}}, +/* 44943 */ {(13<<2)|2,{112,86,0}}, +/* 44944 */ {(13<<2)|2,{112,87,0}}, +/* 44945 */ {(13<<2)|2,{112,87,0}}, +/* 44946 */ {(13<<2)|2,{112,87,0}}, +/* 44947 */ {(13<<2)|2,{112,87,0}}, +/* 44948 */ {(13<<2)|2,{112,87,0}}, +/* 44949 */ {(13<<2)|2,{112,87,0}}, +/* 44950 */ {(13<<2)|2,{112,87,0}}, +/* 44951 */ {(13<<2)|2,{112,87,0}}, +/* 44952 */ {(13<<2)|2,{112,89,0}}, +/* 44953 */ {(13<<2)|2,{112,89,0}}, +/* 44954 */ {(13<<2)|2,{112,89,0}}, +/* 44955 */ {(13<<2)|2,{112,89,0}}, +/* 44956 */ {(13<<2)|2,{112,89,0}}, +/* 44957 */ {(13<<2)|2,{112,89,0}}, +/* 44958 */ {(13<<2)|2,{112,89,0}}, +/* 44959 */ {(13<<2)|2,{112,89,0}}, +/* 44960 */ {(13<<2)|2,{112,106,0}}, +/* 44961 */ {(13<<2)|2,{112,106,0}}, +/* 44962 */ {(13<<2)|2,{112,106,0}}, +/* 44963 */ {(13<<2)|2,{112,106,0}}, +/* 44964 */ {(13<<2)|2,{112,106,0}}, +/* 44965 */ {(13<<2)|2,{112,106,0}}, +/* 44966 */ {(13<<2)|2,{112,106,0}}, +/* 44967 */ {(13<<2)|2,{112,106,0}}, +/* 44968 */ {(13<<2)|2,{112,107,0}}, +/* 44969 */ {(13<<2)|2,{112,107,0}}, +/* 44970 */ {(13<<2)|2,{112,107,0}}, +/* 44971 */ {(13<<2)|2,{112,107,0}}, +/* 44972 */ {(13<<2)|2,{112,107,0}}, +/* 44973 */ {(13<<2)|2,{112,107,0}}, +/* 44974 */ {(13<<2)|2,{112,107,0}}, +/* 44975 */ {(13<<2)|2,{112,107,0}}, +/* 44976 */ {(13<<2)|2,{112,113,0}}, +/* 44977 */ {(13<<2)|2,{112,113,0}}, +/* 44978 */ {(13<<2)|2,{112,113,0}}, +/* 44979 */ {(13<<2)|2,{112,113,0}}, +/* 44980 */ {(13<<2)|2,{112,113,0}}, +/* 44981 */ {(13<<2)|2,{112,113,0}}, +/* 44982 */ {(13<<2)|2,{112,113,0}}, +/* 44983 */ {(13<<2)|2,{112,113,0}}, +/* 44984 */ {(13<<2)|2,{112,118,0}}, +/* 44985 */ {(13<<2)|2,{112,118,0}}, +/* 44986 */ {(13<<2)|2,{112,118,0}}, +/* 44987 */ {(13<<2)|2,{112,118,0}}, +/* 44988 */ {(13<<2)|2,{112,118,0}}, +/* 44989 */ {(13<<2)|2,{112,118,0}}, +/* 44990 */ {(13<<2)|2,{112,118,0}}, +/* 44991 */ {(13<<2)|2,{112,118,0}}, +/* 44992 */ {(13<<2)|2,{112,119,0}}, +/* 44993 */ {(13<<2)|2,{112,119,0}}, +/* 44994 */ {(13<<2)|2,{112,119,0}}, +/* 44995 */ {(13<<2)|2,{112,119,0}}, +/* 44996 */ {(13<<2)|2,{112,119,0}}, +/* 44997 */ {(13<<2)|2,{112,119,0}}, +/* 44998 */ {(13<<2)|2,{112,119,0}}, +/* 44999 */ {(13<<2)|2,{112,119,0}}, +/* 45000 */ {(13<<2)|2,{112,120,0}}, +/* 45001 */ {(13<<2)|2,{112,120,0}}, +/* 45002 */ {(13<<2)|2,{112,120,0}}, +/* 45003 */ {(13<<2)|2,{112,120,0}}, +/* 45004 */ {(13<<2)|2,{112,120,0}}, +/* 45005 */ {(13<<2)|2,{112,120,0}}, +/* 45006 */ {(13<<2)|2,{112,120,0}}, +/* 45007 */ {(13<<2)|2,{112,120,0}}, +/* 45008 */ {(13<<2)|2,{112,121,0}}, +/* 45009 */ {(13<<2)|2,{112,121,0}}, +/* 45010 */ {(13<<2)|2,{112,121,0}}, +/* 45011 */ {(13<<2)|2,{112,121,0}}, +/* 45012 */ {(13<<2)|2,{112,121,0}}, +/* 45013 */ {(13<<2)|2,{112,121,0}}, +/* 45014 */ {(13<<2)|2,{112,121,0}}, +/* 45015 */ {(13<<2)|2,{112,121,0}}, +/* 45016 */ {(13<<2)|2,{112,122,0}}, +/* 45017 */ {(13<<2)|2,{112,122,0}}, +/* 45018 */ {(13<<2)|2,{112,122,0}}, +/* 45019 */ {(13<<2)|2,{112,122,0}}, +/* 45020 */ {(13<<2)|2,{112,122,0}}, +/* 45021 */ {(13<<2)|2,{112,122,0}}, +/* 45022 */ {(13<<2)|2,{112,122,0}}, +/* 45023 */ {(13<<2)|2,{112,122,0}}, +/* 45024 */ {(14<<2)|2,{112,38,0}}, +/* 45025 */ {(14<<2)|2,{112,38,0}}, +/* 45026 */ {(14<<2)|2,{112,38,0}}, +/* 45027 */ {(14<<2)|2,{112,38,0}}, +/* 45028 */ {(14<<2)|2,{112,42,0}}, +/* 45029 */ {(14<<2)|2,{112,42,0}}, +/* 45030 */ {(14<<2)|2,{112,42,0}}, +/* 45031 */ {(14<<2)|2,{112,42,0}}, +/* 45032 */ {(14<<2)|2,{112,44,0}}, +/* 45033 */ {(14<<2)|2,{112,44,0}}, +/* 45034 */ {(14<<2)|2,{112,44,0}}, +/* 45035 */ {(14<<2)|2,{112,44,0}}, +/* 45036 */ {(14<<2)|2,{112,59,0}}, +/* 45037 */ {(14<<2)|2,{112,59,0}}, +/* 45038 */ {(14<<2)|2,{112,59,0}}, +/* 45039 */ {(14<<2)|2,{112,59,0}}, +/* 45040 */ {(14<<2)|2,{112,88,0}}, +/* 45041 */ {(14<<2)|2,{112,88,0}}, +/* 45042 */ {(14<<2)|2,{112,88,0}}, +/* 45043 */ {(14<<2)|2,{112,88,0}}, +/* 45044 */ {(14<<2)|2,{112,90,0}}, +/* 45045 */ {(14<<2)|2,{112,90,0}}, +/* 45046 */ {(14<<2)|2,{112,90,0}}, +/* 45047 */ {(14<<2)|2,{112,90,0}}, +/* 45048 */ {(16<<2)|2,{112,33,0}}, +/* 45049 */ {(16<<2)|2,{112,34,0}}, +/* 45050 */ {(16<<2)|2,{112,40,0}}, +/* 45051 */ {(16<<2)|2,{112,41,0}}, +/* 45052 */ {(16<<2)|2,{112,63,0}}, +/* 45053 */ {(6<<2)|1,{112,0,0}}, +/* 45054 */ {(6<<2)|1,{112,0,0}}, +/* 45055 */ {(6<<2)|1,{112,0,0}}, +/* 45056 */ {(16<<2)|3,{114,48,48}}, +/* 45057 */ {(16<<2)|3,{114,48,49}}, +/* 45058 */ {(16<<2)|3,{114,48,50}}, +/* 45059 */ {(16<<2)|3,{114,48,97}}, +/* 45060 */ {(16<<2)|3,{114,48,99}}, +/* 45061 */ {(16<<2)|3,{114,48,101}}, +/* 45062 */ {(16<<2)|3,{114,48,105}}, +/* 45063 */ {(16<<2)|3,{114,48,111}}, +/* 45064 */ {(16<<2)|3,{114,48,115}}, +/* 45065 */ {(16<<2)|3,{114,48,116}}, +/* 45066 */ {(11<<2)|2,{114,48,0}}, +/* 45067 */ {(11<<2)|2,{114,48,0}}, +/* 45068 */ {(11<<2)|2,{114,48,0}}, +/* 45069 */ {(11<<2)|2,{114,48,0}}, +/* 45070 */ {(11<<2)|2,{114,48,0}}, +/* 45071 */ {(11<<2)|2,{114,48,0}}, +/* 45072 */ {(11<<2)|2,{114,48,0}}, +/* 45073 */ {(11<<2)|2,{114,48,0}}, +/* 45074 */ {(11<<2)|2,{114,48,0}}, +/* 45075 */ {(11<<2)|2,{114,48,0}}, +/* 45076 */ {(11<<2)|2,{114,48,0}}, +/* 45077 */ {(11<<2)|2,{114,48,0}}, +/* 45078 */ {(11<<2)|2,{114,48,0}}, +/* 45079 */ {(11<<2)|2,{114,48,0}}, +/* 45080 */ {(11<<2)|2,{114,48,0}}, +/* 45081 */ {(11<<2)|2,{114,48,0}}, +/* 45082 */ {(11<<2)|2,{114,48,0}}, +/* 45083 */ {(11<<2)|2,{114,48,0}}, +/* 45084 */ {(11<<2)|2,{114,48,0}}, +/* 45085 */ {(11<<2)|2,{114,48,0}}, +/* 45086 */ {(11<<2)|2,{114,48,0}}, +/* 45087 */ {(11<<2)|2,{114,48,0}}, +/* 45088 */ {(16<<2)|3,{114,49,48}}, +/* 45089 */ {(16<<2)|3,{114,49,49}}, +/* 45090 */ {(16<<2)|3,{114,49,50}}, +/* 45091 */ {(16<<2)|3,{114,49,97}}, +/* 45092 */ {(16<<2)|3,{114,49,99}}, +/* 45093 */ {(16<<2)|3,{114,49,101}}, +/* 45094 */ {(16<<2)|3,{114,49,105}}, +/* 45095 */ {(16<<2)|3,{114,49,111}}, +/* 45096 */ {(16<<2)|3,{114,49,115}}, +/* 45097 */ {(16<<2)|3,{114,49,116}}, +/* 45098 */ {(11<<2)|2,{114,49,0}}, +/* 45099 */ {(11<<2)|2,{114,49,0}}, +/* 45100 */ {(11<<2)|2,{114,49,0}}, +/* 45101 */ {(11<<2)|2,{114,49,0}}, +/* 45102 */ {(11<<2)|2,{114,49,0}}, +/* 45103 */ {(11<<2)|2,{114,49,0}}, +/* 45104 */ {(11<<2)|2,{114,49,0}}, +/* 45105 */ {(11<<2)|2,{114,49,0}}, +/* 45106 */ {(11<<2)|2,{114,49,0}}, +/* 45107 */ {(11<<2)|2,{114,49,0}}, +/* 45108 */ {(11<<2)|2,{114,49,0}}, +/* 45109 */ {(11<<2)|2,{114,49,0}}, +/* 45110 */ {(11<<2)|2,{114,49,0}}, +/* 45111 */ {(11<<2)|2,{114,49,0}}, +/* 45112 */ {(11<<2)|2,{114,49,0}}, +/* 45113 */ {(11<<2)|2,{114,49,0}}, +/* 45114 */ {(11<<2)|2,{114,49,0}}, +/* 45115 */ {(11<<2)|2,{114,49,0}}, +/* 45116 */ {(11<<2)|2,{114,49,0}}, +/* 45117 */ {(11<<2)|2,{114,49,0}}, +/* 45118 */ {(11<<2)|2,{114,49,0}}, +/* 45119 */ {(11<<2)|2,{114,49,0}}, +/* 45120 */ {(16<<2)|3,{114,50,48}}, +/* 45121 */ {(16<<2)|3,{114,50,49}}, +/* 45122 */ {(16<<2)|3,{114,50,50}}, +/* 45123 */ {(16<<2)|3,{114,50,97}}, +/* 45124 */ {(16<<2)|3,{114,50,99}}, +/* 45125 */ {(16<<2)|3,{114,50,101}}, +/* 45126 */ {(16<<2)|3,{114,50,105}}, +/* 45127 */ {(16<<2)|3,{114,50,111}}, +/* 45128 */ {(16<<2)|3,{114,50,115}}, +/* 45129 */ {(16<<2)|3,{114,50,116}}, +/* 45130 */ {(11<<2)|2,{114,50,0}}, +/* 45131 */ {(11<<2)|2,{114,50,0}}, +/* 45132 */ {(11<<2)|2,{114,50,0}}, +/* 45133 */ {(11<<2)|2,{114,50,0}}, +/* 45134 */ {(11<<2)|2,{114,50,0}}, +/* 45135 */ {(11<<2)|2,{114,50,0}}, +/* 45136 */ {(11<<2)|2,{114,50,0}}, +/* 45137 */ {(11<<2)|2,{114,50,0}}, +/* 45138 */ {(11<<2)|2,{114,50,0}}, +/* 45139 */ {(11<<2)|2,{114,50,0}}, +/* 45140 */ {(11<<2)|2,{114,50,0}}, +/* 45141 */ {(11<<2)|2,{114,50,0}}, +/* 45142 */ {(11<<2)|2,{114,50,0}}, +/* 45143 */ {(11<<2)|2,{114,50,0}}, +/* 45144 */ {(11<<2)|2,{114,50,0}}, +/* 45145 */ {(11<<2)|2,{114,50,0}}, +/* 45146 */ {(11<<2)|2,{114,50,0}}, +/* 45147 */ {(11<<2)|2,{114,50,0}}, +/* 45148 */ {(11<<2)|2,{114,50,0}}, +/* 45149 */ {(11<<2)|2,{114,50,0}}, +/* 45150 */ {(11<<2)|2,{114,50,0}}, +/* 45151 */ {(11<<2)|2,{114,50,0}}, +/* 45152 */ {(16<<2)|3,{114,97,48}}, +/* 45153 */ {(16<<2)|3,{114,97,49}}, +/* 45154 */ {(16<<2)|3,{114,97,50}}, +/* 45155 */ {(16<<2)|3,{114,97,97}}, +/* 45156 */ {(16<<2)|3,{114,97,99}}, +/* 45157 */ {(16<<2)|3,{114,97,101}}, +/* 45158 */ {(16<<2)|3,{114,97,105}}, +/* 45159 */ {(16<<2)|3,{114,97,111}}, +/* 45160 */ {(16<<2)|3,{114,97,115}}, +/* 45161 */ {(16<<2)|3,{114,97,116}}, +/* 45162 */ {(11<<2)|2,{114,97,0}}, +/* 45163 */ {(11<<2)|2,{114,97,0}}, +/* 45164 */ {(11<<2)|2,{114,97,0}}, +/* 45165 */ {(11<<2)|2,{114,97,0}}, +/* 45166 */ {(11<<2)|2,{114,97,0}}, +/* 45167 */ {(11<<2)|2,{114,97,0}}, +/* 45168 */ {(11<<2)|2,{114,97,0}}, +/* 45169 */ {(11<<2)|2,{114,97,0}}, +/* 45170 */ {(11<<2)|2,{114,97,0}}, +/* 45171 */ {(11<<2)|2,{114,97,0}}, +/* 45172 */ {(11<<2)|2,{114,97,0}}, +/* 45173 */ {(11<<2)|2,{114,97,0}}, +/* 45174 */ {(11<<2)|2,{114,97,0}}, +/* 45175 */ {(11<<2)|2,{114,97,0}}, +/* 45176 */ {(11<<2)|2,{114,97,0}}, +/* 45177 */ {(11<<2)|2,{114,97,0}}, +/* 45178 */ {(11<<2)|2,{114,97,0}}, +/* 45179 */ {(11<<2)|2,{114,97,0}}, +/* 45180 */ {(11<<2)|2,{114,97,0}}, +/* 45181 */ {(11<<2)|2,{114,97,0}}, +/* 45182 */ {(11<<2)|2,{114,97,0}}, +/* 45183 */ {(11<<2)|2,{114,97,0}}, +/* 45184 */ {(16<<2)|3,{114,99,48}}, +/* 45185 */ {(16<<2)|3,{114,99,49}}, +/* 45186 */ {(16<<2)|3,{114,99,50}}, +/* 45187 */ {(16<<2)|3,{114,99,97}}, +/* 45188 */ {(16<<2)|3,{114,99,99}}, +/* 45189 */ {(16<<2)|3,{114,99,101}}, +/* 45190 */ {(16<<2)|3,{114,99,105}}, +/* 45191 */ {(16<<2)|3,{114,99,111}}, +/* 45192 */ {(16<<2)|3,{114,99,115}}, +/* 45193 */ {(16<<2)|3,{114,99,116}}, +/* 45194 */ {(11<<2)|2,{114,99,0}}, +/* 45195 */ {(11<<2)|2,{114,99,0}}, +/* 45196 */ {(11<<2)|2,{114,99,0}}, +/* 45197 */ {(11<<2)|2,{114,99,0}}, +/* 45198 */ {(11<<2)|2,{114,99,0}}, +/* 45199 */ {(11<<2)|2,{114,99,0}}, +/* 45200 */ {(11<<2)|2,{114,99,0}}, +/* 45201 */ {(11<<2)|2,{114,99,0}}, +/* 45202 */ {(11<<2)|2,{114,99,0}}, +/* 45203 */ {(11<<2)|2,{114,99,0}}, +/* 45204 */ {(11<<2)|2,{114,99,0}}, +/* 45205 */ {(11<<2)|2,{114,99,0}}, +/* 45206 */ {(11<<2)|2,{114,99,0}}, +/* 45207 */ {(11<<2)|2,{114,99,0}}, +/* 45208 */ {(11<<2)|2,{114,99,0}}, +/* 45209 */ {(11<<2)|2,{114,99,0}}, +/* 45210 */ {(11<<2)|2,{114,99,0}}, +/* 45211 */ {(11<<2)|2,{114,99,0}}, +/* 45212 */ {(11<<2)|2,{114,99,0}}, +/* 45213 */ {(11<<2)|2,{114,99,0}}, +/* 45214 */ {(11<<2)|2,{114,99,0}}, +/* 45215 */ {(11<<2)|2,{114,99,0}}, +/* 45216 */ {(16<<2)|3,{114,101,48}}, +/* 45217 */ {(16<<2)|3,{114,101,49}}, +/* 45218 */ {(16<<2)|3,{114,101,50}}, +/* 45219 */ {(16<<2)|3,{114,101,97}}, +/* 45220 */ {(16<<2)|3,{114,101,99}}, +/* 45221 */ {(16<<2)|3,{114,101,101}}, +/* 45222 */ {(16<<2)|3,{114,101,105}}, +/* 45223 */ {(16<<2)|3,{114,101,111}}, +/* 45224 */ {(16<<2)|3,{114,101,115}}, +/* 45225 */ {(16<<2)|3,{114,101,116}}, +/* 45226 */ {(11<<2)|2,{114,101,0}}, +/* 45227 */ {(11<<2)|2,{114,101,0}}, +/* 45228 */ {(11<<2)|2,{114,101,0}}, +/* 45229 */ {(11<<2)|2,{114,101,0}}, +/* 45230 */ {(11<<2)|2,{114,101,0}}, +/* 45231 */ {(11<<2)|2,{114,101,0}}, +/* 45232 */ {(11<<2)|2,{114,101,0}}, +/* 45233 */ {(11<<2)|2,{114,101,0}}, +/* 45234 */ {(11<<2)|2,{114,101,0}}, +/* 45235 */ {(11<<2)|2,{114,101,0}}, +/* 45236 */ {(11<<2)|2,{114,101,0}}, +/* 45237 */ {(11<<2)|2,{114,101,0}}, +/* 45238 */ {(11<<2)|2,{114,101,0}}, +/* 45239 */ {(11<<2)|2,{114,101,0}}, +/* 45240 */ {(11<<2)|2,{114,101,0}}, +/* 45241 */ {(11<<2)|2,{114,101,0}}, +/* 45242 */ {(11<<2)|2,{114,101,0}}, +/* 45243 */ {(11<<2)|2,{114,101,0}}, +/* 45244 */ {(11<<2)|2,{114,101,0}}, +/* 45245 */ {(11<<2)|2,{114,101,0}}, +/* 45246 */ {(11<<2)|2,{114,101,0}}, +/* 45247 */ {(11<<2)|2,{114,101,0}}, +/* 45248 */ {(16<<2)|3,{114,105,48}}, +/* 45249 */ {(16<<2)|3,{114,105,49}}, +/* 45250 */ {(16<<2)|3,{114,105,50}}, +/* 45251 */ {(16<<2)|3,{114,105,97}}, +/* 45252 */ {(16<<2)|3,{114,105,99}}, +/* 45253 */ {(16<<2)|3,{114,105,101}}, +/* 45254 */ {(16<<2)|3,{114,105,105}}, +/* 45255 */ {(16<<2)|3,{114,105,111}}, +/* 45256 */ {(16<<2)|3,{114,105,115}}, +/* 45257 */ {(16<<2)|3,{114,105,116}}, +/* 45258 */ {(11<<2)|2,{114,105,0}}, +/* 45259 */ {(11<<2)|2,{114,105,0}}, +/* 45260 */ {(11<<2)|2,{114,105,0}}, +/* 45261 */ {(11<<2)|2,{114,105,0}}, +/* 45262 */ {(11<<2)|2,{114,105,0}}, +/* 45263 */ {(11<<2)|2,{114,105,0}}, +/* 45264 */ {(11<<2)|2,{114,105,0}}, +/* 45265 */ {(11<<2)|2,{114,105,0}}, +/* 45266 */ {(11<<2)|2,{114,105,0}}, +/* 45267 */ {(11<<2)|2,{114,105,0}}, +/* 45268 */ {(11<<2)|2,{114,105,0}}, +/* 45269 */ {(11<<2)|2,{114,105,0}}, +/* 45270 */ {(11<<2)|2,{114,105,0}}, +/* 45271 */ {(11<<2)|2,{114,105,0}}, +/* 45272 */ {(11<<2)|2,{114,105,0}}, +/* 45273 */ {(11<<2)|2,{114,105,0}}, +/* 45274 */ {(11<<2)|2,{114,105,0}}, +/* 45275 */ {(11<<2)|2,{114,105,0}}, +/* 45276 */ {(11<<2)|2,{114,105,0}}, +/* 45277 */ {(11<<2)|2,{114,105,0}}, +/* 45278 */ {(11<<2)|2,{114,105,0}}, +/* 45279 */ {(11<<2)|2,{114,105,0}}, +/* 45280 */ {(16<<2)|3,{114,111,48}}, +/* 45281 */ {(16<<2)|3,{114,111,49}}, +/* 45282 */ {(16<<2)|3,{114,111,50}}, +/* 45283 */ {(16<<2)|3,{114,111,97}}, +/* 45284 */ {(16<<2)|3,{114,111,99}}, +/* 45285 */ {(16<<2)|3,{114,111,101}}, +/* 45286 */ {(16<<2)|3,{114,111,105}}, +/* 45287 */ {(16<<2)|3,{114,111,111}}, +/* 45288 */ {(16<<2)|3,{114,111,115}}, +/* 45289 */ {(16<<2)|3,{114,111,116}}, +/* 45290 */ {(11<<2)|2,{114,111,0}}, +/* 45291 */ {(11<<2)|2,{114,111,0}}, +/* 45292 */ {(11<<2)|2,{114,111,0}}, +/* 45293 */ {(11<<2)|2,{114,111,0}}, +/* 45294 */ {(11<<2)|2,{114,111,0}}, +/* 45295 */ {(11<<2)|2,{114,111,0}}, +/* 45296 */ {(11<<2)|2,{114,111,0}}, +/* 45297 */ {(11<<2)|2,{114,111,0}}, +/* 45298 */ {(11<<2)|2,{114,111,0}}, +/* 45299 */ {(11<<2)|2,{114,111,0}}, +/* 45300 */ {(11<<2)|2,{114,111,0}}, +/* 45301 */ {(11<<2)|2,{114,111,0}}, +/* 45302 */ {(11<<2)|2,{114,111,0}}, +/* 45303 */ {(11<<2)|2,{114,111,0}}, +/* 45304 */ {(11<<2)|2,{114,111,0}}, +/* 45305 */ {(11<<2)|2,{114,111,0}}, +/* 45306 */ {(11<<2)|2,{114,111,0}}, +/* 45307 */ {(11<<2)|2,{114,111,0}}, +/* 45308 */ {(11<<2)|2,{114,111,0}}, +/* 45309 */ {(11<<2)|2,{114,111,0}}, +/* 45310 */ {(11<<2)|2,{114,111,0}}, +/* 45311 */ {(11<<2)|2,{114,111,0}}, +/* 45312 */ {(16<<2)|3,{114,115,48}}, +/* 45313 */ {(16<<2)|3,{114,115,49}}, +/* 45314 */ {(16<<2)|3,{114,115,50}}, +/* 45315 */ {(16<<2)|3,{114,115,97}}, +/* 45316 */ {(16<<2)|3,{114,115,99}}, +/* 45317 */ {(16<<2)|3,{114,115,101}}, +/* 45318 */ {(16<<2)|3,{114,115,105}}, +/* 45319 */ {(16<<2)|3,{114,115,111}}, +/* 45320 */ {(16<<2)|3,{114,115,115}}, +/* 45321 */ {(16<<2)|3,{114,115,116}}, +/* 45322 */ {(11<<2)|2,{114,115,0}}, +/* 45323 */ {(11<<2)|2,{114,115,0}}, +/* 45324 */ {(11<<2)|2,{114,115,0}}, +/* 45325 */ {(11<<2)|2,{114,115,0}}, +/* 45326 */ {(11<<2)|2,{114,115,0}}, +/* 45327 */ {(11<<2)|2,{114,115,0}}, +/* 45328 */ {(11<<2)|2,{114,115,0}}, +/* 45329 */ {(11<<2)|2,{114,115,0}}, +/* 45330 */ {(11<<2)|2,{114,115,0}}, +/* 45331 */ {(11<<2)|2,{114,115,0}}, +/* 45332 */ {(11<<2)|2,{114,115,0}}, +/* 45333 */ {(11<<2)|2,{114,115,0}}, +/* 45334 */ {(11<<2)|2,{114,115,0}}, +/* 45335 */ {(11<<2)|2,{114,115,0}}, +/* 45336 */ {(11<<2)|2,{114,115,0}}, +/* 45337 */ {(11<<2)|2,{114,115,0}}, +/* 45338 */ {(11<<2)|2,{114,115,0}}, +/* 45339 */ {(11<<2)|2,{114,115,0}}, +/* 45340 */ {(11<<2)|2,{114,115,0}}, +/* 45341 */ {(11<<2)|2,{114,115,0}}, +/* 45342 */ {(11<<2)|2,{114,115,0}}, +/* 45343 */ {(11<<2)|2,{114,115,0}}, +/* 45344 */ {(16<<2)|3,{114,116,48}}, +/* 45345 */ {(16<<2)|3,{114,116,49}}, +/* 45346 */ {(16<<2)|3,{114,116,50}}, +/* 45347 */ {(16<<2)|3,{114,116,97}}, +/* 45348 */ {(16<<2)|3,{114,116,99}}, +/* 45349 */ {(16<<2)|3,{114,116,101}}, +/* 45350 */ {(16<<2)|3,{114,116,105}}, +/* 45351 */ {(16<<2)|3,{114,116,111}}, +/* 45352 */ {(16<<2)|3,{114,116,115}}, +/* 45353 */ {(16<<2)|3,{114,116,116}}, +/* 45354 */ {(11<<2)|2,{114,116,0}}, +/* 45355 */ {(11<<2)|2,{114,116,0}}, +/* 45356 */ {(11<<2)|2,{114,116,0}}, +/* 45357 */ {(11<<2)|2,{114,116,0}}, +/* 45358 */ {(11<<2)|2,{114,116,0}}, +/* 45359 */ {(11<<2)|2,{114,116,0}}, +/* 45360 */ {(11<<2)|2,{114,116,0}}, +/* 45361 */ {(11<<2)|2,{114,116,0}}, +/* 45362 */ {(11<<2)|2,{114,116,0}}, +/* 45363 */ {(11<<2)|2,{114,116,0}}, +/* 45364 */ {(11<<2)|2,{114,116,0}}, +/* 45365 */ {(11<<2)|2,{114,116,0}}, +/* 45366 */ {(11<<2)|2,{114,116,0}}, +/* 45367 */ {(11<<2)|2,{114,116,0}}, +/* 45368 */ {(11<<2)|2,{114,116,0}}, +/* 45369 */ {(11<<2)|2,{114,116,0}}, +/* 45370 */ {(11<<2)|2,{114,116,0}}, +/* 45371 */ {(11<<2)|2,{114,116,0}}, +/* 45372 */ {(11<<2)|2,{114,116,0}}, +/* 45373 */ {(11<<2)|2,{114,116,0}}, +/* 45374 */ {(11<<2)|2,{114,116,0}}, +/* 45375 */ {(11<<2)|2,{114,116,0}}, +/* 45376 */ {(12<<2)|2,{114,32,0}}, +/* 45377 */ {(12<<2)|2,{114,32,0}}, +/* 45378 */ {(12<<2)|2,{114,32,0}}, +/* 45379 */ {(12<<2)|2,{114,32,0}}, +/* 45380 */ {(12<<2)|2,{114,32,0}}, +/* 45381 */ {(12<<2)|2,{114,32,0}}, +/* 45382 */ {(12<<2)|2,{114,32,0}}, +/* 45383 */ {(12<<2)|2,{114,32,0}}, +/* 45384 */ {(12<<2)|2,{114,32,0}}, +/* 45385 */ {(12<<2)|2,{114,32,0}}, +/* 45386 */ {(12<<2)|2,{114,32,0}}, +/* 45387 */ {(12<<2)|2,{114,32,0}}, +/* 45388 */ {(12<<2)|2,{114,32,0}}, +/* 45389 */ {(12<<2)|2,{114,32,0}}, +/* 45390 */ {(12<<2)|2,{114,32,0}}, +/* 45391 */ {(12<<2)|2,{114,32,0}}, +/* 45392 */ {(12<<2)|2,{114,37,0}}, +/* 45393 */ {(12<<2)|2,{114,37,0}}, +/* 45394 */ {(12<<2)|2,{114,37,0}}, +/* 45395 */ {(12<<2)|2,{114,37,0}}, +/* 45396 */ {(12<<2)|2,{114,37,0}}, +/* 45397 */ {(12<<2)|2,{114,37,0}}, +/* 45398 */ {(12<<2)|2,{114,37,0}}, +/* 45399 */ {(12<<2)|2,{114,37,0}}, +/* 45400 */ {(12<<2)|2,{114,37,0}}, +/* 45401 */ {(12<<2)|2,{114,37,0}}, +/* 45402 */ {(12<<2)|2,{114,37,0}}, +/* 45403 */ {(12<<2)|2,{114,37,0}}, +/* 45404 */ {(12<<2)|2,{114,37,0}}, +/* 45405 */ {(12<<2)|2,{114,37,0}}, +/* 45406 */ {(12<<2)|2,{114,37,0}}, +/* 45407 */ {(12<<2)|2,{114,37,0}}, +/* 45408 */ {(12<<2)|2,{114,45,0}}, +/* 45409 */ {(12<<2)|2,{114,45,0}}, +/* 45410 */ {(12<<2)|2,{114,45,0}}, +/* 45411 */ {(12<<2)|2,{114,45,0}}, +/* 45412 */ {(12<<2)|2,{114,45,0}}, +/* 45413 */ {(12<<2)|2,{114,45,0}}, +/* 45414 */ {(12<<2)|2,{114,45,0}}, +/* 45415 */ {(12<<2)|2,{114,45,0}}, +/* 45416 */ {(12<<2)|2,{114,45,0}}, +/* 45417 */ {(12<<2)|2,{114,45,0}}, +/* 45418 */ {(12<<2)|2,{114,45,0}}, +/* 45419 */ {(12<<2)|2,{114,45,0}}, +/* 45420 */ {(12<<2)|2,{114,45,0}}, +/* 45421 */ {(12<<2)|2,{114,45,0}}, +/* 45422 */ {(12<<2)|2,{114,45,0}}, +/* 45423 */ {(12<<2)|2,{114,45,0}}, +/* 45424 */ {(12<<2)|2,{114,46,0}}, +/* 45425 */ {(12<<2)|2,{114,46,0}}, +/* 45426 */ {(12<<2)|2,{114,46,0}}, +/* 45427 */ {(12<<2)|2,{114,46,0}}, +/* 45428 */ {(12<<2)|2,{114,46,0}}, +/* 45429 */ {(12<<2)|2,{114,46,0}}, +/* 45430 */ {(12<<2)|2,{114,46,0}}, +/* 45431 */ {(12<<2)|2,{114,46,0}}, +/* 45432 */ {(12<<2)|2,{114,46,0}}, +/* 45433 */ {(12<<2)|2,{114,46,0}}, +/* 45434 */ {(12<<2)|2,{114,46,0}}, +/* 45435 */ {(12<<2)|2,{114,46,0}}, +/* 45436 */ {(12<<2)|2,{114,46,0}}, +/* 45437 */ {(12<<2)|2,{114,46,0}}, +/* 45438 */ {(12<<2)|2,{114,46,0}}, +/* 45439 */ {(12<<2)|2,{114,46,0}}, +/* 45440 */ {(12<<2)|2,{114,47,0}}, +/* 45441 */ {(12<<2)|2,{114,47,0}}, +/* 45442 */ {(12<<2)|2,{114,47,0}}, +/* 45443 */ {(12<<2)|2,{114,47,0}}, +/* 45444 */ {(12<<2)|2,{114,47,0}}, +/* 45445 */ {(12<<2)|2,{114,47,0}}, +/* 45446 */ {(12<<2)|2,{114,47,0}}, +/* 45447 */ {(12<<2)|2,{114,47,0}}, +/* 45448 */ {(12<<2)|2,{114,47,0}}, +/* 45449 */ {(12<<2)|2,{114,47,0}}, +/* 45450 */ {(12<<2)|2,{114,47,0}}, +/* 45451 */ {(12<<2)|2,{114,47,0}}, +/* 45452 */ {(12<<2)|2,{114,47,0}}, +/* 45453 */ {(12<<2)|2,{114,47,0}}, +/* 45454 */ {(12<<2)|2,{114,47,0}}, +/* 45455 */ {(12<<2)|2,{114,47,0}}, +/* 45456 */ {(12<<2)|2,{114,51,0}}, +/* 45457 */ {(12<<2)|2,{114,51,0}}, +/* 45458 */ {(12<<2)|2,{114,51,0}}, +/* 45459 */ {(12<<2)|2,{114,51,0}}, +/* 45460 */ {(12<<2)|2,{114,51,0}}, +/* 45461 */ {(12<<2)|2,{114,51,0}}, +/* 45462 */ {(12<<2)|2,{114,51,0}}, +/* 45463 */ {(12<<2)|2,{114,51,0}}, +/* 45464 */ {(12<<2)|2,{114,51,0}}, +/* 45465 */ {(12<<2)|2,{114,51,0}}, +/* 45466 */ {(12<<2)|2,{114,51,0}}, +/* 45467 */ {(12<<2)|2,{114,51,0}}, +/* 45468 */ {(12<<2)|2,{114,51,0}}, +/* 45469 */ {(12<<2)|2,{114,51,0}}, +/* 45470 */ {(12<<2)|2,{114,51,0}}, +/* 45471 */ {(12<<2)|2,{114,51,0}}, +/* 45472 */ {(12<<2)|2,{114,52,0}}, +/* 45473 */ {(12<<2)|2,{114,52,0}}, +/* 45474 */ {(12<<2)|2,{114,52,0}}, +/* 45475 */ {(12<<2)|2,{114,52,0}}, +/* 45476 */ {(12<<2)|2,{114,52,0}}, +/* 45477 */ {(12<<2)|2,{114,52,0}}, +/* 45478 */ {(12<<2)|2,{114,52,0}}, +/* 45479 */ {(12<<2)|2,{114,52,0}}, +/* 45480 */ {(12<<2)|2,{114,52,0}}, +/* 45481 */ {(12<<2)|2,{114,52,0}}, +/* 45482 */ {(12<<2)|2,{114,52,0}}, +/* 45483 */ {(12<<2)|2,{114,52,0}}, +/* 45484 */ {(12<<2)|2,{114,52,0}}, +/* 45485 */ {(12<<2)|2,{114,52,0}}, +/* 45486 */ {(12<<2)|2,{114,52,0}}, +/* 45487 */ {(12<<2)|2,{114,52,0}}, +/* 45488 */ {(12<<2)|2,{114,53,0}}, +/* 45489 */ {(12<<2)|2,{114,53,0}}, +/* 45490 */ {(12<<2)|2,{114,53,0}}, +/* 45491 */ {(12<<2)|2,{114,53,0}}, +/* 45492 */ {(12<<2)|2,{114,53,0}}, +/* 45493 */ {(12<<2)|2,{114,53,0}}, +/* 45494 */ {(12<<2)|2,{114,53,0}}, +/* 45495 */ {(12<<2)|2,{114,53,0}}, +/* 45496 */ {(12<<2)|2,{114,53,0}}, +/* 45497 */ {(12<<2)|2,{114,53,0}}, +/* 45498 */ {(12<<2)|2,{114,53,0}}, +/* 45499 */ {(12<<2)|2,{114,53,0}}, +/* 45500 */ {(12<<2)|2,{114,53,0}}, +/* 45501 */ {(12<<2)|2,{114,53,0}}, +/* 45502 */ {(12<<2)|2,{114,53,0}}, +/* 45503 */ {(12<<2)|2,{114,53,0}}, +/* 45504 */ {(12<<2)|2,{114,54,0}}, +/* 45505 */ {(12<<2)|2,{114,54,0}}, +/* 45506 */ {(12<<2)|2,{114,54,0}}, +/* 45507 */ {(12<<2)|2,{114,54,0}}, +/* 45508 */ {(12<<2)|2,{114,54,0}}, +/* 45509 */ {(12<<2)|2,{114,54,0}}, +/* 45510 */ {(12<<2)|2,{114,54,0}}, +/* 45511 */ {(12<<2)|2,{114,54,0}}, +/* 45512 */ {(12<<2)|2,{114,54,0}}, +/* 45513 */ {(12<<2)|2,{114,54,0}}, +/* 45514 */ {(12<<2)|2,{114,54,0}}, +/* 45515 */ {(12<<2)|2,{114,54,0}}, +/* 45516 */ {(12<<2)|2,{114,54,0}}, +/* 45517 */ {(12<<2)|2,{114,54,0}}, +/* 45518 */ {(12<<2)|2,{114,54,0}}, +/* 45519 */ {(12<<2)|2,{114,54,0}}, +/* 45520 */ {(12<<2)|2,{114,55,0}}, +/* 45521 */ {(12<<2)|2,{114,55,0}}, +/* 45522 */ {(12<<2)|2,{114,55,0}}, +/* 45523 */ {(12<<2)|2,{114,55,0}}, +/* 45524 */ {(12<<2)|2,{114,55,0}}, +/* 45525 */ {(12<<2)|2,{114,55,0}}, +/* 45526 */ {(12<<2)|2,{114,55,0}}, +/* 45527 */ {(12<<2)|2,{114,55,0}}, +/* 45528 */ {(12<<2)|2,{114,55,0}}, +/* 45529 */ {(12<<2)|2,{114,55,0}}, +/* 45530 */ {(12<<2)|2,{114,55,0}}, +/* 45531 */ {(12<<2)|2,{114,55,0}}, +/* 45532 */ {(12<<2)|2,{114,55,0}}, +/* 45533 */ {(12<<2)|2,{114,55,0}}, +/* 45534 */ {(12<<2)|2,{114,55,0}}, +/* 45535 */ {(12<<2)|2,{114,55,0}}, +/* 45536 */ {(12<<2)|2,{114,56,0}}, +/* 45537 */ {(12<<2)|2,{114,56,0}}, +/* 45538 */ {(12<<2)|2,{114,56,0}}, +/* 45539 */ {(12<<2)|2,{114,56,0}}, +/* 45540 */ {(12<<2)|2,{114,56,0}}, +/* 45541 */ {(12<<2)|2,{114,56,0}}, +/* 45542 */ {(12<<2)|2,{114,56,0}}, +/* 45543 */ {(12<<2)|2,{114,56,0}}, +/* 45544 */ {(12<<2)|2,{114,56,0}}, +/* 45545 */ {(12<<2)|2,{114,56,0}}, +/* 45546 */ {(12<<2)|2,{114,56,0}}, +/* 45547 */ {(12<<2)|2,{114,56,0}}, +/* 45548 */ {(12<<2)|2,{114,56,0}}, +/* 45549 */ {(12<<2)|2,{114,56,0}}, +/* 45550 */ {(12<<2)|2,{114,56,0}}, +/* 45551 */ {(12<<2)|2,{114,56,0}}, +/* 45552 */ {(12<<2)|2,{114,57,0}}, +/* 45553 */ {(12<<2)|2,{114,57,0}}, +/* 45554 */ {(12<<2)|2,{114,57,0}}, +/* 45555 */ {(12<<2)|2,{114,57,0}}, +/* 45556 */ {(12<<2)|2,{114,57,0}}, +/* 45557 */ {(12<<2)|2,{114,57,0}}, +/* 45558 */ {(12<<2)|2,{114,57,0}}, +/* 45559 */ {(12<<2)|2,{114,57,0}}, +/* 45560 */ {(12<<2)|2,{114,57,0}}, +/* 45561 */ {(12<<2)|2,{114,57,0}}, +/* 45562 */ {(12<<2)|2,{114,57,0}}, +/* 45563 */ {(12<<2)|2,{114,57,0}}, +/* 45564 */ {(12<<2)|2,{114,57,0}}, +/* 45565 */ {(12<<2)|2,{114,57,0}}, +/* 45566 */ {(12<<2)|2,{114,57,0}}, +/* 45567 */ {(12<<2)|2,{114,57,0}}, +/* 45568 */ {(12<<2)|2,{114,61,0}}, +/* 45569 */ {(12<<2)|2,{114,61,0}}, +/* 45570 */ {(12<<2)|2,{114,61,0}}, +/* 45571 */ {(12<<2)|2,{114,61,0}}, +/* 45572 */ {(12<<2)|2,{114,61,0}}, +/* 45573 */ {(12<<2)|2,{114,61,0}}, +/* 45574 */ {(12<<2)|2,{114,61,0}}, +/* 45575 */ {(12<<2)|2,{114,61,0}}, +/* 45576 */ {(12<<2)|2,{114,61,0}}, +/* 45577 */ {(12<<2)|2,{114,61,0}}, +/* 45578 */ {(12<<2)|2,{114,61,0}}, +/* 45579 */ {(12<<2)|2,{114,61,0}}, +/* 45580 */ {(12<<2)|2,{114,61,0}}, +/* 45581 */ {(12<<2)|2,{114,61,0}}, +/* 45582 */ {(12<<2)|2,{114,61,0}}, +/* 45583 */ {(12<<2)|2,{114,61,0}}, +/* 45584 */ {(12<<2)|2,{114,65,0}}, +/* 45585 */ {(12<<2)|2,{114,65,0}}, +/* 45586 */ {(12<<2)|2,{114,65,0}}, +/* 45587 */ {(12<<2)|2,{114,65,0}}, +/* 45588 */ {(12<<2)|2,{114,65,0}}, +/* 45589 */ {(12<<2)|2,{114,65,0}}, +/* 45590 */ {(12<<2)|2,{114,65,0}}, +/* 45591 */ {(12<<2)|2,{114,65,0}}, +/* 45592 */ {(12<<2)|2,{114,65,0}}, +/* 45593 */ {(12<<2)|2,{114,65,0}}, +/* 45594 */ {(12<<2)|2,{114,65,0}}, +/* 45595 */ {(12<<2)|2,{114,65,0}}, +/* 45596 */ {(12<<2)|2,{114,65,0}}, +/* 45597 */ {(12<<2)|2,{114,65,0}}, +/* 45598 */ {(12<<2)|2,{114,65,0}}, +/* 45599 */ {(12<<2)|2,{114,65,0}}, +/* 45600 */ {(12<<2)|2,{114,95,0}}, +/* 45601 */ {(12<<2)|2,{114,95,0}}, +/* 45602 */ {(12<<2)|2,{114,95,0}}, +/* 45603 */ {(12<<2)|2,{114,95,0}}, +/* 45604 */ {(12<<2)|2,{114,95,0}}, +/* 45605 */ {(12<<2)|2,{114,95,0}}, +/* 45606 */ {(12<<2)|2,{114,95,0}}, +/* 45607 */ {(12<<2)|2,{114,95,0}}, +/* 45608 */ {(12<<2)|2,{114,95,0}}, +/* 45609 */ {(12<<2)|2,{114,95,0}}, +/* 45610 */ {(12<<2)|2,{114,95,0}}, +/* 45611 */ {(12<<2)|2,{114,95,0}}, +/* 45612 */ {(12<<2)|2,{114,95,0}}, +/* 45613 */ {(12<<2)|2,{114,95,0}}, +/* 45614 */ {(12<<2)|2,{114,95,0}}, +/* 45615 */ {(12<<2)|2,{114,95,0}}, +/* 45616 */ {(12<<2)|2,{114,98,0}}, +/* 45617 */ {(12<<2)|2,{114,98,0}}, +/* 45618 */ {(12<<2)|2,{114,98,0}}, +/* 45619 */ {(12<<2)|2,{114,98,0}}, +/* 45620 */ {(12<<2)|2,{114,98,0}}, +/* 45621 */ {(12<<2)|2,{114,98,0}}, +/* 45622 */ {(12<<2)|2,{114,98,0}}, +/* 45623 */ {(12<<2)|2,{114,98,0}}, +/* 45624 */ {(12<<2)|2,{114,98,0}}, +/* 45625 */ {(12<<2)|2,{114,98,0}}, +/* 45626 */ {(12<<2)|2,{114,98,0}}, +/* 45627 */ {(12<<2)|2,{114,98,0}}, +/* 45628 */ {(12<<2)|2,{114,98,0}}, +/* 45629 */ {(12<<2)|2,{114,98,0}}, +/* 45630 */ {(12<<2)|2,{114,98,0}}, +/* 45631 */ {(12<<2)|2,{114,98,0}}, +/* 45632 */ {(12<<2)|2,{114,100,0}}, +/* 45633 */ {(12<<2)|2,{114,100,0}}, +/* 45634 */ {(12<<2)|2,{114,100,0}}, +/* 45635 */ {(12<<2)|2,{114,100,0}}, +/* 45636 */ {(12<<2)|2,{114,100,0}}, +/* 45637 */ {(12<<2)|2,{114,100,0}}, +/* 45638 */ {(12<<2)|2,{114,100,0}}, +/* 45639 */ {(12<<2)|2,{114,100,0}}, +/* 45640 */ {(12<<2)|2,{114,100,0}}, +/* 45641 */ {(12<<2)|2,{114,100,0}}, +/* 45642 */ {(12<<2)|2,{114,100,0}}, +/* 45643 */ {(12<<2)|2,{114,100,0}}, +/* 45644 */ {(12<<2)|2,{114,100,0}}, +/* 45645 */ {(12<<2)|2,{114,100,0}}, +/* 45646 */ {(12<<2)|2,{114,100,0}}, +/* 45647 */ {(12<<2)|2,{114,100,0}}, +/* 45648 */ {(12<<2)|2,{114,102,0}}, +/* 45649 */ {(12<<2)|2,{114,102,0}}, +/* 45650 */ {(12<<2)|2,{114,102,0}}, +/* 45651 */ {(12<<2)|2,{114,102,0}}, +/* 45652 */ {(12<<2)|2,{114,102,0}}, +/* 45653 */ {(12<<2)|2,{114,102,0}}, +/* 45654 */ {(12<<2)|2,{114,102,0}}, +/* 45655 */ {(12<<2)|2,{114,102,0}}, +/* 45656 */ {(12<<2)|2,{114,102,0}}, +/* 45657 */ {(12<<2)|2,{114,102,0}}, +/* 45658 */ {(12<<2)|2,{114,102,0}}, +/* 45659 */ {(12<<2)|2,{114,102,0}}, +/* 45660 */ {(12<<2)|2,{114,102,0}}, +/* 45661 */ {(12<<2)|2,{114,102,0}}, +/* 45662 */ {(12<<2)|2,{114,102,0}}, +/* 45663 */ {(12<<2)|2,{114,102,0}}, +/* 45664 */ {(12<<2)|2,{114,103,0}}, +/* 45665 */ {(12<<2)|2,{114,103,0}}, +/* 45666 */ {(12<<2)|2,{114,103,0}}, +/* 45667 */ {(12<<2)|2,{114,103,0}}, +/* 45668 */ {(12<<2)|2,{114,103,0}}, +/* 45669 */ {(12<<2)|2,{114,103,0}}, +/* 45670 */ {(12<<2)|2,{114,103,0}}, +/* 45671 */ {(12<<2)|2,{114,103,0}}, +/* 45672 */ {(12<<2)|2,{114,103,0}}, +/* 45673 */ {(12<<2)|2,{114,103,0}}, +/* 45674 */ {(12<<2)|2,{114,103,0}}, +/* 45675 */ {(12<<2)|2,{114,103,0}}, +/* 45676 */ {(12<<2)|2,{114,103,0}}, +/* 45677 */ {(12<<2)|2,{114,103,0}}, +/* 45678 */ {(12<<2)|2,{114,103,0}}, +/* 45679 */ {(12<<2)|2,{114,103,0}}, +/* 45680 */ {(12<<2)|2,{114,104,0}}, +/* 45681 */ {(12<<2)|2,{114,104,0}}, +/* 45682 */ {(12<<2)|2,{114,104,0}}, +/* 45683 */ {(12<<2)|2,{114,104,0}}, +/* 45684 */ {(12<<2)|2,{114,104,0}}, +/* 45685 */ {(12<<2)|2,{114,104,0}}, +/* 45686 */ {(12<<2)|2,{114,104,0}}, +/* 45687 */ {(12<<2)|2,{114,104,0}}, +/* 45688 */ {(12<<2)|2,{114,104,0}}, +/* 45689 */ {(12<<2)|2,{114,104,0}}, +/* 45690 */ {(12<<2)|2,{114,104,0}}, +/* 45691 */ {(12<<2)|2,{114,104,0}}, +/* 45692 */ {(12<<2)|2,{114,104,0}}, +/* 45693 */ {(12<<2)|2,{114,104,0}}, +/* 45694 */ {(12<<2)|2,{114,104,0}}, +/* 45695 */ {(12<<2)|2,{114,104,0}}, +/* 45696 */ {(12<<2)|2,{114,108,0}}, +/* 45697 */ {(12<<2)|2,{114,108,0}}, +/* 45698 */ {(12<<2)|2,{114,108,0}}, +/* 45699 */ {(12<<2)|2,{114,108,0}}, +/* 45700 */ {(12<<2)|2,{114,108,0}}, +/* 45701 */ {(12<<2)|2,{114,108,0}}, +/* 45702 */ {(12<<2)|2,{114,108,0}}, +/* 45703 */ {(12<<2)|2,{114,108,0}}, +/* 45704 */ {(12<<2)|2,{114,108,0}}, +/* 45705 */ {(12<<2)|2,{114,108,0}}, +/* 45706 */ {(12<<2)|2,{114,108,0}}, +/* 45707 */ {(12<<2)|2,{114,108,0}}, +/* 45708 */ {(12<<2)|2,{114,108,0}}, +/* 45709 */ {(12<<2)|2,{114,108,0}}, +/* 45710 */ {(12<<2)|2,{114,108,0}}, +/* 45711 */ {(12<<2)|2,{114,108,0}}, +/* 45712 */ {(12<<2)|2,{114,109,0}}, +/* 45713 */ {(12<<2)|2,{114,109,0}}, +/* 45714 */ {(12<<2)|2,{114,109,0}}, +/* 45715 */ {(12<<2)|2,{114,109,0}}, +/* 45716 */ {(12<<2)|2,{114,109,0}}, +/* 45717 */ {(12<<2)|2,{114,109,0}}, +/* 45718 */ {(12<<2)|2,{114,109,0}}, +/* 45719 */ {(12<<2)|2,{114,109,0}}, +/* 45720 */ {(12<<2)|2,{114,109,0}}, +/* 45721 */ {(12<<2)|2,{114,109,0}}, +/* 45722 */ {(12<<2)|2,{114,109,0}}, +/* 45723 */ {(12<<2)|2,{114,109,0}}, +/* 45724 */ {(12<<2)|2,{114,109,0}}, +/* 45725 */ {(12<<2)|2,{114,109,0}}, +/* 45726 */ {(12<<2)|2,{114,109,0}}, +/* 45727 */ {(12<<2)|2,{114,109,0}}, +/* 45728 */ {(12<<2)|2,{114,110,0}}, +/* 45729 */ {(12<<2)|2,{114,110,0}}, +/* 45730 */ {(12<<2)|2,{114,110,0}}, +/* 45731 */ {(12<<2)|2,{114,110,0}}, +/* 45732 */ {(12<<2)|2,{114,110,0}}, +/* 45733 */ {(12<<2)|2,{114,110,0}}, +/* 45734 */ {(12<<2)|2,{114,110,0}}, +/* 45735 */ {(12<<2)|2,{114,110,0}}, +/* 45736 */ {(12<<2)|2,{114,110,0}}, +/* 45737 */ {(12<<2)|2,{114,110,0}}, +/* 45738 */ {(12<<2)|2,{114,110,0}}, +/* 45739 */ {(12<<2)|2,{114,110,0}}, +/* 45740 */ {(12<<2)|2,{114,110,0}}, +/* 45741 */ {(12<<2)|2,{114,110,0}}, +/* 45742 */ {(12<<2)|2,{114,110,0}}, +/* 45743 */ {(12<<2)|2,{114,110,0}}, +/* 45744 */ {(12<<2)|2,{114,112,0}}, +/* 45745 */ {(12<<2)|2,{114,112,0}}, +/* 45746 */ {(12<<2)|2,{114,112,0}}, +/* 45747 */ {(12<<2)|2,{114,112,0}}, +/* 45748 */ {(12<<2)|2,{114,112,0}}, +/* 45749 */ {(12<<2)|2,{114,112,0}}, +/* 45750 */ {(12<<2)|2,{114,112,0}}, +/* 45751 */ {(12<<2)|2,{114,112,0}}, +/* 45752 */ {(12<<2)|2,{114,112,0}}, +/* 45753 */ {(12<<2)|2,{114,112,0}}, +/* 45754 */ {(12<<2)|2,{114,112,0}}, +/* 45755 */ {(12<<2)|2,{114,112,0}}, +/* 45756 */ {(12<<2)|2,{114,112,0}}, +/* 45757 */ {(12<<2)|2,{114,112,0}}, +/* 45758 */ {(12<<2)|2,{114,112,0}}, +/* 45759 */ {(12<<2)|2,{114,112,0}}, +/* 45760 */ {(12<<2)|2,{114,114,0}}, +/* 45761 */ {(12<<2)|2,{114,114,0}}, +/* 45762 */ {(12<<2)|2,{114,114,0}}, +/* 45763 */ {(12<<2)|2,{114,114,0}}, +/* 45764 */ {(12<<2)|2,{114,114,0}}, +/* 45765 */ {(12<<2)|2,{114,114,0}}, +/* 45766 */ {(12<<2)|2,{114,114,0}}, +/* 45767 */ {(12<<2)|2,{114,114,0}}, +/* 45768 */ {(12<<2)|2,{114,114,0}}, +/* 45769 */ {(12<<2)|2,{114,114,0}}, +/* 45770 */ {(12<<2)|2,{114,114,0}}, +/* 45771 */ {(12<<2)|2,{114,114,0}}, +/* 45772 */ {(12<<2)|2,{114,114,0}}, +/* 45773 */ {(12<<2)|2,{114,114,0}}, +/* 45774 */ {(12<<2)|2,{114,114,0}}, +/* 45775 */ {(12<<2)|2,{114,114,0}}, +/* 45776 */ {(12<<2)|2,{114,117,0}}, +/* 45777 */ {(12<<2)|2,{114,117,0}}, +/* 45778 */ {(12<<2)|2,{114,117,0}}, +/* 45779 */ {(12<<2)|2,{114,117,0}}, +/* 45780 */ {(12<<2)|2,{114,117,0}}, +/* 45781 */ {(12<<2)|2,{114,117,0}}, +/* 45782 */ {(12<<2)|2,{114,117,0}}, +/* 45783 */ {(12<<2)|2,{114,117,0}}, +/* 45784 */ {(12<<2)|2,{114,117,0}}, +/* 45785 */ {(12<<2)|2,{114,117,0}}, +/* 45786 */ {(12<<2)|2,{114,117,0}}, +/* 45787 */ {(12<<2)|2,{114,117,0}}, +/* 45788 */ {(12<<2)|2,{114,117,0}}, +/* 45789 */ {(12<<2)|2,{114,117,0}}, +/* 45790 */ {(12<<2)|2,{114,117,0}}, +/* 45791 */ {(12<<2)|2,{114,117,0}}, +/* 45792 */ {(13<<2)|2,{114,58,0}}, +/* 45793 */ {(13<<2)|2,{114,58,0}}, +/* 45794 */ {(13<<2)|2,{114,58,0}}, +/* 45795 */ {(13<<2)|2,{114,58,0}}, +/* 45796 */ {(13<<2)|2,{114,58,0}}, +/* 45797 */ {(13<<2)|2,{114,58,0}}, +/* 45798 */ {(13<<2)|2,{114,58,0}}, +/* 45799 */ {(13<<2)|2,{114,58,0}}, +/* 45800 */ {(13<<2)|2,{114,66,0}}, +/* 45801 */ {(13<<2)|2,{114,66,0}}, +/* 45802 */ {(13<<2)|2,{114,66,0}}, +/* 45803 */ {(13<<2)|2,{114,66,0}}, +/* 45804 */ {(13<<2)|2,{114,66,0}}, +/* 45805 */ {(13<<2)|2,{114,66,0}}, +/* 45806 */ {(13<<2)|2,{114,66,0}}, +/* 45807 */ {(13<<2)|2,{114,66,0}}, +/* 45808 */ {(13<<2)|2,{114,67,0}}, +/* 45809 */ {(13<<2)|2,{114,67,0}}, +/* 45810 */ {(13<<2)|2,{114,67,0}}, +/* 45811 */ {(13<<2)|2,{114,67,0}}, +/* 45812 */ {(13<<2)|2,{114,67,0}}, +/* 45813 */ {(13<<2)|2,{114,67,0}}, +/* 45814 */ {(13<<2)|2,{114,67,0}}, +/* 45815 */ {(13<<2)|2,{114,67,0}}, +/* 45816 */ {(13<<2)|2,{114,68,0}}, +/* 45817 */ {(13<<2)|2,{114,68,0}}, +/* 45818 */ {(13<<2)|2,{114,68,0}}, +/* 45819 */ {(13<<2)|2,{114,68,0}}, +/* 45820 */ {(13<<2)|2,{114,68,0}}, +/* 45821 */ {(13<<2)|2,{114,68,0}}, +/* 45822 */ {(13<<2)|2,{114,68,0}}, +/* 45823 */ {(13<<2)|2,{114,68,0}}, +/* 45824 */ {(13<<2)|2,{114,69,0}}, +/* 45825 */ {(13<<2)|2,{114,69,0}}, +/* 45826 */ {(13<<2)|2,{114,69,0}}, +/* 45827 */ {(13<<2)|2,{114,69,0}}, +/* 45828 */ {(13<<2)|2,{114,69,0}}, +/* 45829 */ {(13<<2)|2,{114,69,0}}, +/* 45830 */ {(13<<2)|2,{114,69,0}}, +/* 45831 */ {(13<<2)|2,{114,69,0}}, +/* 45832 */ {(13<<2)|2,{114,70,0}}, +/* 45833 */ {(13<<2)|2,{114,70,0}}, +/* 45834 */ {(13<<2)|2,{114,70,0}}, +/* 45835 */ {(13<<2)|2,{114,70,0}}, +/* 45836 */ {(13<<2)|2,{114,70,0}}, +/* 45837 */ {(13<<2)|2,{114,70,0}}, +/* 45838 */ {(13<<2)|2,{114,70,0}}, +/* 45839 */ {(13<<2)|2,{114,70,0}}, +/* 45840 */ {(13<<2)|2,{114,71,0}}, +/* 45841 */ {(13<<2)|2,{114,71,0}}, +/* 45842 */ {(13<<2)|2,{114,71,0}}, +/* 45843 */ {(13<<2)|2,{114,71,0}}, +/* 45844 */ {(13<<2)|2,{114,71,0}}, +/* 45845 */ {(13<<2)|2,{114,71,0}}, +/* 45846 */ {(13<<2)|2,{114,71,0}}, +/* 45847 */ {(13<<2)|2,{114,71,0}}, +/* 45848 */ {(13<<2)|2,{114,72,0}}, +/* 45849 */ {(13<<2)|2,{114,72,0}}, +/* 45850 */ {(13<<2)|2,{114,72,0}}, +/* 45851 */ {(13<<2)|2,{114,72,0}}, +/* 45852 */ {(13<<2)|2,{114,72,0}}, +/* 45853 */ {(13<<2)|2,{114,72,0}}, +/* 45854 */ {(13<<2)|2,{114,72,0}}, +/* 45855 */ {(13<<2)|2,{114,72,0}}, +/* 45856 */ {(13<<2)|2,{114,73,0}}, +/* 45857 */ {(13<<2)|2,{114,73,0}}, +/* 45858 */ {(13<<2)|2,{114,73,0}}, +/* 45859 */ {(13<<2)|2,{114,73,0}}, +/* 45860 */ {(13<<2)|2,{114,73,0}}, +/* 45861 */ {(13<<2)|2,{114,73,0}}, +/* 45862 */ {(13<<2)|2,{114,73,0}}, +/* 45863 */ {(13<<2)|2,{114,73,0}}, +/* 45864 */ {(13<<2)|2,{114,74,0}}, +/* 45865 */ {(13<<2)|2,{114,74,0}}, +/* 45866 */ {(13<<2)|2,{114,74,0}}, +/* 45867 */ {(13<<2)|2,{114,74,0}}, +/* 45868 */ {(13<<2)|2,{114,74,0}}, +/* 45869 */ {(13<<2)|2,{114,74,0}}, +/* 45870 */ {(13<<2)|2,{114,74,0}}, +/* 45871 */ {(13<<2)|2,{114,74,0}}, +/* 45872 */ {(13<<2)|2,{114,75,0}}, +/* 45873 */ {(13<<2)|2,{114,75,0}}, +/* 45874 */ {(13<<2)|2,{114,75,0}}, +/* 45875 */ {(13<<2)|2,{114,75,0}}, +/* 45876 */ {(13<<2)|2,{114,75,0}}, +/* 45877 */ {(13<<2)|2,{114,75,0}}, +/* 45878 */ {(13<<2)|2,{114,75,0}}, +/* 45879 */ {(13<<2)|2,{114,75,0}}, +/* 45880 */ {(13<<2)|2,{114,76,0}}, +/* 45881 */ {(13<<2)|2,{114,76,0}}, +/* 45882 */ {(13<<2)|2,{114,76,0}}, +/* 45883 */ {(13<<2)|2,{114,76,0}}, +/* 45884 */ {(13<<2)|2,{114,76,0}}, +/* 45885 */ {(13<<2)|2,{114,76,0}}, +/* 45886 */ {(13<<2)|2,{114,76,0}}, +/* 45887 */ {(13<<2)|2,{114,76,0}}, +/* 45888 */ {(13<<2)|2,{114,77,0}}, +/* 45889 */ {(13<<2)|2,{114,77,0}}, +/* 45890 */ {(13<<2)|2,{114,77,0}}, +/* 45891 */ {(13<<2)|2,{114,77,0}}, +/* 45892 */ {(13<<2)|2,{114,77,0}}, +/* 45893 */ {(13<<2)|2,{114,77,0}}, +/* 45894 */ {(13<<2)|2,{114,77,0}}, +/* 45895 */ {(13<<2)|2,{114,77,0}}, +/* 45896 */ {(13<<2)|2,{114,78,0}}, +/* 45897 */ {(13<<2)|2,{114,78,0}}, +/* 45898 */ {(13<<2)|2,{114,78,0}}, +/* 45899 */ {(13<<2)|2,{114,78,0}}, +/* 45900 */ {(13<<2)|2,{114,78,0}}, +/* 45901 */ {(13<<2)|2,{114,78,0}}, +/* 45902 */ {(13<<2)|2,{114,78,0}}, +/* 45903 */ {(13<<2)|2,{114,78,0}}, +/* 45904 */ {(13<<2)|2,{114,79,0}}, +/* 45905 */ {(13<<2)|2,{114,79,0}}, +/* 45906 */ {(13<<2)|2,{114,79,0}}, +/* 45907 */ {(13<<2)|2,{114,79,0}}, +/* 45908 */ {(13<<2)|2,{114,79,0}}, +/* 45909 */ {(13<<2)|2,{114,79,0}}, +/* 45910 */ {(13<<2)|2,{114,79,0}}, +/* 45911 */ {(13<<2)|2,{114,79,0}}, +/* 45912 */ {(13<<2)|2,{114,80,0}}, +/* 45913 */ {(13<<2)|2,{114,80,0}}, +/* 45914 */ {(13<<2)|2,{114,80,0}}, +/* 45915 */ {(13<<2)|2,{114,80,0}}, +/* 45916 */ {(13<<2)|2,{114,80,0}}, +/* 45917 */ {(13<<2)|2,{114,80,0}}, +/* 45918 */ {(13<<2)|2,{114,80,0}}, +/* 45919 */ {(13<<2)|2,{114,80,0}}, +/* 45920 */ {(13<<2)|2,{114,81,0}}, +/* 45921 */ {(13<<2)|2,{114,81,0}}, +/* 45922 */ {(13<<2)|2,{114,81,0}}, +/* 45923 */ {(13<<2)|2,{114,81,0}}, +/* 45924 */ {(13<<2)|2,{114,81,0}}, +/* 45925 */ {(13<<2)|2,{114,81,0}}, +/* 45926 */ {(13<<2)|2,{114,81,0}}, +/* 45927 */ {(13<<2)|2,{114,81,0}}, +/* 45928 */ {(13<<2)|2,{114,82,0}}, +/* 45929 */ {(13<<2)|2,{114,82,0}}, +/* 45930 */ {(13<<2)|2,{114,82,0}}, +/* 45931 */ {(13<<2)|2,{114,82,0}}, +/* 45932 */ {(13<<2)|2,{114,82,0}}, +/* 45933 */ {(13<<2)|2,{114,82,0}}, +/* 45934 */ {(13<<2)|2,{114,82,0}}, +/* 45935 */ {(13<<2)|2,{114,82,0}}, +/* 45936 */ {(13<<2)|2,{114,83,0}}, +/* 45937 */ {(13<<2)|2,{114,83,0}}, +/* 45938 */ {(13<<2)|2,{114,83,0}}, +/* 45939 */ {(13<<2)|2,{114,83,0}}, +/* 45940 */ {(13<<2)|2,{114,83,0}}, +/* 45941 */ {(13<<2)|2,{114,83,0}}, +/* 45942 */ {(13<<2)|2,{114,83,0}}, +/* 45943 */ {(13<<2)|2,{114,83,0}}, +/* 45944 */ {(13<<2)|2,{114,84,0}}, +/* 45945 */ {(13<<2)|2,{114,84,0}}, +/* 45946 */ {(13<<2)|2,{114,84,0}}, +/* 45947 */ {(13<<2)|2,{114,84,0}}, +/* 45948 */ {(13<<2)|2,{114,84,0}}, +/* 45949 */ {(13<<2)|2,{114,84,0}}, +/* 45950 */ {(13<<2)|2,{114,84,0}}, +/* 45951 */ {(13<<2)|2,{114,84,0}}, +/* 45952 */ {(13<<2)|2,{114,85,0}}, +/* 45953 */ {(13<<2)|2,{114,85,0}}, +/* 45954 */ {(13<<2)|2,{114,85,0}}, +/* 45955 */ {(13<<2)|2,{114,85,0}}, +/* 45956 */ {(13<<2)|2,{114,85,0}}, +/* 45957 */ {(13<<2)|2,{114,85,0}}, +/* 45958 */ {(13<<2)|2,{114,85,0}}, +/* 45959 */ {(13<<2)|2,{114,85,0}}, +/* 45960 */ {(13<<2)|2,{114,86,0}}, +/* 45961 */ {(13<<2)|2,{114,86,0}}, +/* 45962 */ {(13<<2)|2,{114,86,0}}, +/* 45963 */ {(13<<2)|2,{114,86,0}}, +/* 45964 */ {(13<<2)|2,{114,86,0}}, +/* 45965 */ {(13<<2)|2,{114,86,0}}, +/* 45966 */ {(13<<2)|2,{114,86,0}}, +/* 45967 */ {(13<<2)|2,{114,86,0}}, +/* 45968 */ {(13<<2)|2,{114,87,0}}, +/* 45969 */ {(13<<2)|2,{114,87,0}}, +/* 45970 */ {(13<<2)|2,{114,87,0}}, +/* 45971 */ {(13<<2)|2,{114,87,0}}, +/* 45972 */ {(13<<2)|2,{114,87,0}}, +/* 45973 */ {(13<<2)|2,{114,87,0}}, +/* 45974 */ {(13<<2)|2,{114,87,0}}, +/* 45975 */ {(13<<2)|2,{114,87,0}}, +/* 45976 */ {(13<<2)|2,{114,89,0}}, +/* 45977 */ {(13<<2)|2,{114,89,0}}, +/* 45978 */ {(13<<2)|2,{114,89,0}}, +/* 45979 */ {(13<<2)|2,{114,89,0}}, +/* 45980 */ {(13<<2)|2,{114,89,0}}, +/* 45981 */ {(13<<2)|2,{114,89,0}}, +/* 45982 */ {(13<<2)|2,{114,89,0}}, +/* 45983 */ {(13<<2)|2,{114,89,0}}, +/* 45984 */ {(13<<2)|2,{114,106,0}}, +/* 45985 */ {(13<<2)|2,{114,106,0}}, +/* 45986 */ {(13<<2)|2,{114,106,0}}, +/* 45987 */ {(13<<2)|2,{114,106,0}}, +/* 45988 */ {(13<<2)|2,{114,106,0}}, +/* 45989 */ {(13<<2)|2,{114,106,0}}, +/* 45990 */ {(13<<2)|2,{114,106,0}}, +/* 45991 */ {(13<<2)|2,{114,106,0}}, +/* 45992 */ {(13<<2)|2,{114,107,0}}, +/* 45993 */ {(13<<2)|2,{114,107,0}}, +/* 45994 */ {(13<<2)|2,{114,107,0}}, +/* 45995 */ {(13<<2)|2,{114,107,0}}, +/* 45996 */ {(13<<2)|2,{114,107,0}}, +/* 45997 */ {(13<<2)|2,{114,107,0}}, +/* 45998 */ {(13<<2)|2,{114,107,0}}, +/* 45999 */ {(13<<2)|2,{114,107,0}}, +/* 46000 */ {(13<<2)|2,{114,113,0}}, +/* 46001 */ {(13<<2)|2,{114,113,0}}, +/* 46002 */ {(13<<2)|2,{114,113,0}}, +/* 46003 */ {(13<<2)|2,{114,113,0}}, +/* 46004 */ {(13<<2)|2,{114,113,0}}, +/* 46005 */ {(13<<2)|2,{114,113,0}}, +/* 46006 */ {(13<<2)|2,{114,113,0}}, +/* 46007 */ {(13<<2)|2,{114,113,0}}, +/* 46008 */ {(13<<2)|2,{114,118,0}}, +/* 46009 */ {(13<<2)|2,{114,118,0}}, +/* 46010 */ {(13<<2)|2,{114,118,0}}, +/* 46011 */ {(13<<2)|2,{114,118,0}}, +/* 46012 */ {(13<<2)|2,{114,118,0}}, +/* 46013 */ {(13<<2)|2,{114,118,0}}, +/* 46014 */ {(13<<2)|2,{114,118,0}}, +/* 46015 */ {(13<<2)|2,{114,118,0}}, +/* 46016 */ {(13<<2)|2,{114,119,0}}, +/* 46017 */ {(13<<2)|2,{114,119,0}}, +/* 46018 */ {(13<<2)|2,{114,119,0}}, +/* 46019 */ {(13<<2)|2,{114,119,0}}, +/* 46020 */ {(13<<2)|2,{114,119,0}}, +/* 46021 */ {(13<<2)|2,{114,119,0}}, +/* 46022 */ {(13<<2)|2,{114,119,0}}, +/* 46023 */ {(13<<2)|2,{114,119,0}}, +/* 46024 */ {(13<<2)|2,{114,120,0}}, +/* 46025 */ {(13<<2)|2,{114,120,0}}, +/* 46026 */ {(13<<2)|2,{114,120,0}}, +/* 46027 */ {(13<<2)|2,{114,120,0}}, +/* 46028 */ {(13<<2)|2,{114,120,0}}, +/* 46029 */ {(13<<2)|2,{114,120,0}}, +/* 46030 */ {(13<<2)|2,{114,120,0}}, +/* 46031 */ {(13<<2)|2,{114,120,0}}, +/* 46032 */ {(13<<2)|2,{114,121,0}}, +/* 46033 */ {(13<<2)|2,{114,121,0}}, +/* 46034 */ {(13<<2)|2,{114,121,0}}, +/* 46035 */ {(13<<2)|2,{114,121,0}}, +/* 46036 */ {(13<<2)|2,{114,121,0}}, +/* 46037 */ {(13<<2)|2,{114,121,0}}, +/* 46038 */ {(13<<2)|2,{114,121,0}}, +/* 46039 */ {(13<<2)|2,{114,121,0}}, +/* 46040 */ {(13<<2)|2,{114,122,0}}, +/* 46041 */ {(13<<2)|2,{114,122,0}}, +/* 46042 */ {(13<<2)|2,{114,122,0}}, +/* 46043 */ {(13<<2)|2,{114,122,0}}, +/* 46044 */ {(13<<2)|2,{114,122,0}}, +/* 46045 */ {(13<<2)|2,{114,122,0}}, +/* 46046 */ {(13<<2)|2,{114,122,0}}, +/* 46047 */ {(13<<2)|2,{114,122,0}}, +/* 46048 */ {(14<<2)|2,{114,38,0}}, +/* 46049 */ {(14<<2)|2,{114,38,0}}, +/* 46050 */ {(14<<2)|2,{114,38,0}}, +/* 46051 */ {(14<<2)|2,{114,38,0}}, +/* 46052 */ {(14<<2)|2,{114,42,0}}, +/* 46053 */ {(14<<2)|2,{114,42,0}}, +/* 46054 */ {(14<<2)|2,{114,42,0}}, +/* 46055 */ {(14<<2)|2,{114,42,0}}, +/* 46056 */ {(14<<2)|2,{114,44,0}}, +/* 46057 */ {(14<<2)|2,{114,44,0}}, +/* 46058 */ {(14<<2)|2,{114,44,0}}, +/* 46059 */ {(14<<2)|2,{114,44,0}}, +/* 46060 */ {(14<<2)|2,{114,59,0}}, +/* 46061 */ {(14<<2)|2,{114,59,0}}, +/* 46062 */ {(14<<2)|2,{114,59,0}}, +/* 46063 */ {(14<<2)|2,{114,59,0}}, +/* 46064 */ {(14<<2)|2,{114,88,0}}, +/* 46065 */ {(14<<2)|2,{114,88,0}}, +/* 46066 */ {(14<<2)|2,{114,88,0}}, +/* 46067 */ {(14<<2)|2,{114,88,0}}, +/* 46068 */ {(14<<2)|2,{114,90,0}}, +/* 46069 */ {(14<<2)|2,{114,90,0}}, +/* 46070 */ {(14<<2)|2,{114,90,0}}, +/* 46071 */ {(14<<2)|2,{114,90,0}}, +/* 46072 */ {(16<<2)|2,{114,33,0}}, +/* 46073 */ {(16<<2)|2,{114,34,0}}, +/* 46074 */ {(16<<2)|2,{114,40,0}}, +/* 46075 */ {(16<<2)|2,{114,41,0}}, +/* 46076 */ {(16<<2)|2,{114,63,0}}, +/* 46077 */ {(6<<2)|1,{114,0,0}}, +/* 46078 */ {(6<<2)|1,{114,0,0}}, +/* 46079 */ {(6<<2)|1,{114,0,0}}, +/* 46080 */ {(16<<2)|3,{117,48,48}}, +/* 46081 */ {(16<<2)|3,{117,48,49}}, +/* 46082 */ {(16<<2)|3,{117,48,50}}, +/* 46083 */ {(16<<2)|3,{117,48,97}}, +/* 46084 */ {(16<<2)|3,{117,48,99}}, +/* 46085 */ {(16<<2)|3,{117,48,101}}, +/* 46086 */ {(16<<2)|3,{117,48,105}}, +/* 46087 */ {(16<<2)|3,{117,48,111}}, +/* 46088 */ {(16<<2)|3,{117,48,115}}, +/* 46089 */ {(16<<2)|3,{117,48,116}}, +/* 46090 */ {(11<<2)|2,{117,48,0}}, +/* 46091 */ {(11<<2)|2,{117,48,0}}, +/* 46092 */ {(11<<2)|2,{117,48,0}}, +/* 46093 */ {(11<<2)|2,{117,48,0}}, +/* 46094 */ {(11<<2)|2,{117,48,0}}, +/* 46095 */ {(11<<2)|2,{117,48,0}}, +/* 46096 */ {(11<<2)|2,{117,48,0}}, +/* 46097 */ {(11<<2)|2,{117,48,0}}, +/* 46098 */ {(11<<2)|2,{117,48,0}}, +/* 46099 */ {(11<<2)|2,{117,48,0}}, +/* 46100 */ {(11<<2)|2,{117,48,0}}, +/* 46101 */ {(11<<2)|2,{117,48,0}}, +/* 46102 */ {(11<<2)|2,{117,48,0}}, +/* 46103 */ {(11<<2)|2,{117,48,0}}, +/* 46104 */ {(11<<2)|2,{117,48,0}}, +/* 46105 */ {(11<<2)|2,{117,48,0}}, +/* 46106 */ {(11<<2)|2,{117,48,0}}, +/* 46107 */ {(11<<2)|2,{117,48,0}}, +/* 46108 */ {(11<<2)|2,{117,48,0}}, +/* 46109 */ {(11<<2)|2,{117,48,0}}, +/* 46110 */ {(11<<2)|2,{117,48,0}}, +/* 46111 */ {(11<<2)|2,{117,48,0}}, +/* 46112 */ {(16<<2)|3,{117,49,48}}, +/* 46113 */ {(16<<2)|3,{117,49,49}}, +/* 46114 */ {(16<<2)|3,{117,49,50}}, +/* 46115 */ {(16<<2)|3,{117,49,97}}, +/* 46116 */ {(16<<2)|3,{117,49,99}}, +/* 46117 */ {(16<<2)|3,{117,49,101}}, +/* 46118 */ {(16<<2)|3,{117,49,105}}, +/* 46119 */ {(16<<2)|3,{117,49,111}}, +/* 46120 */ {(16<<2)|3,{117,49,115}}, +/* 46121 */ {(16<<2)|3,{117,49,116}}, +/* 46122 */ {(11<<2)|2,{117,49,0}}, +/* 46123 */ {(11<<2)|2,{117,49,0}}, +/* 46124 */ {(11<<2)|2,{117,49,0}}, +/* 46125 */ {(11<<2)|2,{117,49,0}}, +/* 46126 */ {(11<<2)|2,{117,49,0}}, +/* 46127 */ {(11<<2)|2,{117,49,0}}, +/* 46128 */ {(11<<2)|2,{117,49,0}}, +/* 46129 */ {(11<<2)|2,{117,49,0}}, +/* 46130 */ {(11<<2)|2,{117,49,0}}, +/* 46131 */ {(11<<2)|2,{117,49,0}}, +/* 46132 */ {(11<<2)|2,{117,49,0}}, +/* 46133 */ {(11<<2)|2,{117,49,0}}, +/* 46134 */ {(11<<2)|2,{117,49,0}}, +/* 46135 */ {(11<<2)|2,{117,49,0}}, +/* 46136 */ {(11<<2)|2,{117,49,0}}, +/* 46137 */ {(11<<2)|2,{117,49,0}}, +/* 46138 */ {(11<<2)|2,{117,49,0}}, +/* 46139 */ {(11<<2)|2,{117,49,0}}, +/* 46140 */ {(11<<2)|2,{117,49,0}}, +/* 46141 */ {(11<<2)|2,{117,49,0}}, +/* 46142 */ {(11<<2)|2,{117,49,0}}, +/* 46143 */ {(11<<2)|2,{117,49,0}}, +/* 46144 */ {(16<<2)|3,{117,50,48}}, +/* 46145 */ {(16<<2)|3,{117,50,49}}, +/* 46146 */ {(16<<2)|3,{117,50,50}}, +/* 46147 */ {(16<<2)|3,{117,50,97}}, +/* 46148 */ {(16<<2)|3,{117,50,99}}, +/* 46149 */ {(16<<2)|3,{117,50,101}}, +/* 46150 */ {(16<<2)|3,{117,50,105}}, +/* 46151 */ {(16<<2)|3,{117,50,111}}, +/* 46152 */ {(16<<2)|3,{117,50,115}}, +/* 46153 */ {(16<<2)|3,{117,50,116}}, +/* 46154 */ {(11<<2)|2,{117,50,0}}, +/* 46155 */ {(11<<2)|2,{117,50,0}}, +/* 46156 */ {(11<<2)|2,{117,50,0}}, +/* 46157 */ {(11<<2)|2,{117,50,0}}, +/* 46158 */ {(11<<2)|2,{117,50,0}}, +/* 46159 */ {(11<<2)|2,{117,50,0}}, +/* 46160 */ {(11<<2)|2,{117,50,0}}, +/* 46161 */ {(11<<2)|2,{117,50,0}}, +/* 46162 */ {(11<<2)|2,{117,50,0}}, +/* 46163 */ {(11<<2)|2,{117,50,0}}, +/* 46164 */ {(11<<2)|2,{117,50,0}}, +/* 46165 */ {(11<<2)|2,{117,50,0}}, +/* 46166 */ {(11<<2)|2,{117,50,0}}, +/* 46167 */ {(11<<2)|2,{117,50,0}}, +/* 46168 */ {(11<<2)|2,{117,50,0}}, +/* 46169 */ {(11<<2)|2,{117,50,0}}, +/* 46170 */ {(11<<2)|2,{117,50,0}}, +/* 46171 */ {(11<<2)|2,{117,50,0}}, +/* 46172 */ {(11<<2)|2,{117,50,0}}, +/* 46173 */ {(11<<2)|2,{117,50,0}}, +/* 46174 */ {(11<<2)|2,{117,50,0}}, +/* 46175 */ {(11<<2)|2,{117,50,0}}, +/* 46176 */ {(16<<2)|3,{117,97,48}}, +/* 46177 */ {(16<<2)|3,{117,97,49}}, +/* 46178 */ {(16<<2)|3,{117,97,50}}, +/* 46179 */ {(16<<2)|3,{117,97,97}}, +/* 46180 */ {(16<<2)|3,{117,97,99}}, +/* 46181 */ {(16<<2)|3,{117,97,101}}, +/* 46182 */ {(16<<2)|3,{117,97,105}}, +/* 46183 */ {(16<<2)|3,{117,97,111}}, +/* 46184 */ {(16<<2)|3,{117,97,115}}, +/* 46185 */ {(16<<2)|3,{117,97,116}}, +/* 46186 */ {(11<<2)|2,{117,97,0}}, +/* 46187 */ {(11<<2)|2,{117,97,0}}, +/* 46188 */ {(11<<2)|2,{117,97,0}}, +/* 46189 */ {(11<<2)|2,{117,97,0}}, +/* 46190 */ {(11<<2)|2,{117,97,0}}, +/* 46191 */ {(11<<2)|2,{117,97,0}}, +/* 46192 */ {(11<<2)|2,{117,97,0}}, +/* 46193 */ {(11<<2)|2,{117,97,0}}, +/* 46194 */ {(11<<2)|2,{117,97,0}}, +/* 46195 */ {(11<<2)|2,{117,97,0}}, +/* 46196 */ {(11<<2)|2,{117,97,0}}, +/* 46197 */ {(11<<2)|2,{117,97,0}}, +/* 46198 */ {(11<<2)|2,{117,97,0}}, +/* 46199 */ {(11<<2)|2,{117,97,0}}, +/* 46200 */ {(11<<2)|2,{117,97,0}}, +/* 46201 */ {(11<<2)|2,{117,97,0}}, +/* 46202 */ {(11<<2)|2,{117,97,0}}, +/* 46203 */ {(11<<2)|2,{117,97,0}}, +/* 46204 */ {(11<<2)|2,{117,97,0}}, +/* 46205 */ {(11<<2)|2,{117,97,0}}, +/* 46206 */ {(11<<2)|2,{117,97,0}}, +/* 46207 */ {(11<<2)|2,{117,97,0}}, +/* 46208 */ {(16<<2)|3,{117,99,48}}, +/* 46209 */ {(16<<2)|3,{117,99,49}}, +/* 46210 */ {(16<<2)|3,{117,99,50}}, +/* 46211 */ {(16<<2)|3,{117,99,97}}, +/* 46212 */ {(16<<2)|3,{117,99,99}}, +/* 46213 */ {(16<<2)|3,{117,99,101}}, +/* 46214 */ {(16<<2)|3,{117,99,105}}, +/* 46215 */ {(16<<2)|3,{117,99,111}}, +/* 46216 */ {(16<<2)|3,{117,99,115}}, +/* 46217 */ {(16<<2)|3,{117,99,116}}, +/* 46218 */ {(11<<2)|2,{117,99,0}}, +/* 46219 */ {(11<<2)|2,{117,99,0}}, +/* 46220 */ {(11<<2)|2,{117,99,0}}, +/* 46221 */ {(11<<2)|2,{117,99,0}}, +/* 46222 */ {(11<<2)|2,{117,99,0}}, +/* 46223 */ {(11<<2)|2,{117,99,0}}, +/* 46224 */ {(11<<2)|2,{117,99,0}}, +/* 46225 */ {(11<<2)|2,{117,99,0}}, +/* 46226 */ {(11<<2)|2,{117,99,0}}, +/* 46227 */ {(11<<2)|2,{117,99,0}}, +/* 46228 */ {(11<<2)|2,{117,99,0}}, +/* 46229 */ {(11<<2)|2,{117,99,0}}, +/* 46230 */ {(11<<2)|2,{117,99,0}}, +/* 46231 */ {(11<<2)|2,{117,99,0}}, +/* 46232 */ {(11<<2)|2,{117,99,0}}, +/* 46233 */ {(11<<2)|2,{117,99,0}}, +/* 46234 */ {(11<<2)|2,{117,99,0}}, +/* 46235 */ {(11<<2)|2,{117,99,0}}, +/* 46236 */ {(11<<2)|2,{117,99,0}}, +/* 46237 */ {(11<<2)|2,{117,99,0}}, +/* 46238 */ {(11<<2)|2,{117,99,0}}, +/* 46239 */ {(11<<2)|2,{117,99,0}}, +/* 46240 */ {(16<<2)|3,{117,101,48}}, +/* 46241 */ {(16<<2)|3,{117,101,49}}, +/* 46242 */ {(16<<2)|3,{117,101,50}}, +/* 46243 */ {(16<<2)|3,{117,101,97}}, +/* 46244 */ {(16<<2)|3,{117,101,99}}, +/* 46245 */ {(16<<2)|3,{117,101,101}}, +/* 46246 */ {(16<<2)|3,{117,101,105}}, +/* 46247 */ {(16<<2)|3,{117,101,111}}, +/* 46248 */ {(16<<2)|3,{117,101,115}}, +/* 46249 */ {(16<<2)|3,{117,101,116}}, +/* 46250 */ {(11<<2)|2,{117,101,0}}, +/* 46251 */ {(11<<2)|2,{117,101,0}}, +/* 46252 */ {(11<<2)|2,{117,101,0}}, +/* 46253 */ {(11<<2)|2,{117,101,0}}, +/* 46254 */ {(11<<2)|2,{117,101,0}}, +/* 46255 */ {(11<<2)|2,{117,101,0}}, +/* 46256 */ {(11<<2)|2,{117,101,0}}, +/* 46257 */ {(11<<2)|2,{117,101,0}}, +/* 46258 */ {(11<<2)|2,{117,101,0}}, +/* 46259 */ {(11<<2)|2,{117,101,0}}, +/* 46260 */ {(11<<2)|2,{117,101,0}}, +/* 46261 */ {(11<<2)|2,{117,101,0}}, +/* 46262 */ {(11<<2)|2,{117,101,0}}, +/* 46263 */ {(11<<2)|2,{117,101,0}}, +/* 46264 */ {(11<<2)|2,{117,101,0}}, +/* 46265 */ {(11<<2)|2,{117,101,0}}, +/* 46266 */ {(11<<2)|2,{117,101,0}}, +/* 46267 */ {(11<<2)|2,{117,101,0}}, +/* 46268 */ {(11<<2)|2,{117,101,0}}, +/* 46269 */ {(11<<2)|2,{117,101,0}}, +/* 46270 */ {(11<<2)|2,{117,101,0}}, +/* 46271 */ {(11<<2)|2,{117,101,0}}, +/* 46272 */ {(16<<2)|3,{117,105,48}}, +/* 46273 */ {(16<<2)|3,{117,105,49}}, +/* 46274 */ {(16<<2)|3,{117,105,50}}, +/* 46275 */ {(16<<2)|3,{117,105,97}}, +/* 46276 */ {(16<<2)|3,{117,105,99}}, +/* 46277 */ {(16<<2)|3,{117,105,101}}, +/* 46278 */ {(16<<2)|3,{117,105,105}}, +/* 46279 */ {(16<<2)|3,{117,105,111}}, +/* 46280 */ {(16<<2)|3,{117,105,115}}, +/* 46281 */ {(16<<2)|3,{117,105,116}}, +/* 46282 */ {(11<<2)|2,{117,105,0}}, +/* 46283 */ {(11<<2)|2,{117,105,0}}, +/* 46284 */ {(11<<2)|2,{117,105,0}}, +/* 46285 */ {(11<<2)|2,{117,105,0}}, +/* 46286 */ {(11<<2)|2,{117,105,0}}, +/* 46287 */ {(11<<2)|2,{117,105,0}}, +/* 46288 */ {(11<<2)|2,{117,105,0}}, +/* 46289 */ {(11<<2)|2,{117,105,0}}, +/* 46290 */ {(11<<2)|2,{117,105,0}}, +/* 46291 */ {(11<<2)|2,{117,105,0}}, +/* 46292 */ {(11<<2)|2,{117,105,0}}, +/* 46293 */ {(11<<2)|2,{117,105,0}}, +/* 46294 */ {(11<<2)|2,{117,105,0}}, +/* 46295 */ {(11<<2)|2,{117,105,0}}, +/* 46296 */ {(11<<2)|2,{117,105,0}}, +/* 46297 */ {(11<<2)|2,{117,105,0}}, +/* 46298 */ {(11<<2)|2,{117,105,0}}, +/* 46299 */ {(11<<2)|2,{117,105,0}}, +/* 46300 */ {(11<<2)|2,{117,105,0}}, +/* 46301 */ {(11<<2)|2,{117,105,0}}, +/* 46302 */ {(11<<2)|2,{117,105,0}}, +/* 46303 */ {(11<<2)|2,{117,105,0}}, +/* 46304 */ {(16<<2)|3,{117,111,48}}, +/* 46305 */ {(16<<2)|3,{117,111,49}}, +/* 46306 */ {(16<<2)|3,{117,111,50}}, +/* 46307 */ {(16<<2)|3,{117,111,97}}, +/* 46308 */ {(16<<2)|3,{117,111,99}}, +/* 46309 */ {(16<<2)|3,{117,111,101}}, +/* 46310 */ {(16<<2)|3,{117,111,105}}, +/* 46311 */ {(16<<2)|3,{117,111,111}}, +/* 46312 */ {(16<<2)|3,{117,111,115}}, +/* 46313 */ {(16<<2)|3,{117,111,116}}, +/* 46314 */ {(11<<2)|2,{117,111,0}}, +/* 46315 */ {(11<<2)|2,{117,111,0}}, +/* 46316 */ {(11<<2)|2,{117,111,0}}, +/* 46317 */ {(11<<2)|2,{117,111,0}}, +/* 46318 */ {(11<<2)|2,{117,111,0}}, +/* 46319 */ {(11<<2)|2,{117,111,0}}, +/* 46320 */ {(11<<2)|2,{117,111,0}}, +/* 46321 */ {(11<<2)|2,{117,111,0}}, +/* 46322 */ {(11<<2)|2,{117,111,0}}, +/* 46323 */ {(11<<2)|2,{117,111,0}}, +/* 46324 */ {(11<<2)|2,{117,111,0}}, +/* 46325 */ {(11<<2)|2,{117,111,0}}, +/* 46326 */ {(11<<2)|2,{117,111,0}}, +/* 46327 */ {(11<<2)|2,{117,111,0}}, +/* 46328 */ {(11<<2)|2,{117,111,0}}, +/* 46329 */ {(11<<2)|2,{117,111,0}}, +/* 46330 */ {(11<<2)|2,{117,111,0}}, +/* 46331 */ {(11<<2)|2,{117,111,0}}, +/* 46332 */ {(11<<2)|2,{117,111,0}}, +/* 46333 */ {(11<<2)|2,{117,111,0}}, +/* 46334 */ {(11<<2)|2,{117,111,0}}, +/* 46335 */ {(11<<2)|2,{117,111,0}}, +/* 46336 */ {(16<<2)|3,{117,115,48}}, +/* 46337 */ {(16<<2)|3,{117,115,49}}, +/* 46338 */ {(16<<2)|3,{117,115,50}}, +/* 46339 */ {(16<<2)|3,{117,115,97}}, +/* 46340 */ {(16<<2)|3,{117,115,99}}, +/* 46341 */ {(16<<2)|3,{117,115,101}}, +/* 46342 */ {(16<<2)|3,{117,115,105}}, +/* 46343 */ {(16<<2)|3,{117,115,111}}, +/* 46344 */ {(16<<2)|3,{117,115,115}}, +/* 46345 */ {(16<<2)|3,{117,115,116}}, +/* 46346 */ {(11<<2)|2,{117,115,0}}, +/* 46347 */ {(11<<2)|2,{117,115,0}}, +/* 46348 */ {(11<<2)|2,{117,115,0}}, +/* 46349 */ {(11<<2)|2,{117,115,0}}, +/* 46350 */ {(11<<2)|2,{117,115,0}}, +/* 46351 */ {(11<<2)|2,{117,115,0}}, +/* 46352 */ {(11<<2)|2,{117,115,0}}, +/* 46353 */ {(11<<2)|2,{117,115,0}}, +/* 46354 */ {(11<<2)|2,{117,115,0}}, +/* 46355 */ {(11<<2)|2,{117,115,0}}, +/* 46356 */ {(11<<2)|2,{117,115,0}}, +/* 46357 */ {(11<<2)|2,{117,115,0}}, +/* 46358 */ {(11<<2)|2,{117,115,0}}, +/* 46359 */ {(11<<2)|2,{117,115,0}}, +/* 46360 */ {(11<<2)|2,{117,115,0}}, +/* 46361 */ {(11<<2)|2,{117,115,0}}, +/* 46362 */ {(11<<2)|2,{117,115,0}}, +/* 46363 */ {(11<<2)|2,{117,115,0}}, +/* 46364 */ {(11<<2)|2,{117,115,0}}, +/* 46365 */ {(11<<2)|2,{117,115,0}}, +/* 46366 */ {(11<<2)|2,{117,115,0}}, +/* 46367 */ {(11<<2)|2,{117,115,0}}, +/* 46368 */ {(16<<2)|3,{117,116,48}}, +/* 46369 */ {(16<<2)|3,{117,116,49}}, +/* 46370 */ {(16<<2)|3,{117,116,50}}, +/* 46371 */ {(16<<2)|3,{117,116,97}}, +/* 46372 */ {(16<<2)|3,{117,116,99}}, +/* 46373 */ {(16<<2)|3,{117,116,101}}, +/* 46374 */ {(16<<2)|3,{117,116,105}}, +/* 46375 */ {(16<<2)|3,{117,116,111}}, +/* 46376 */ {(16<<2)|3,{117,116,115}}, +/* 46377 */ {(16<<2)|3,{117,116,116}}, +/* 46378 */ {(11<<2)|2,{117,116,0}}, +/* 46379 */ {(11<<2)|2,{117,116,0}}, +/* 46380 */ {(11<<2)|2,{117,116,0}}, +/* 46381 */ {(11<<2)|2,{117,116,0}}, +/* 46382 */ {(11<<2)|2,{117,116,0}}, +/* 46383 */ {(11<<2)|2,{117,116,0}}, +/* 46384 */ {(11<<2)|2,{117,116,0}}, +/* 46385 */ {(11<<2)|2,{117,116,0}}, +/* 46386 */ {(11<<2)|2,{117,116,0}}, +/* 46387 */ {(11<<2)|2,{117,116,0}}, +/* 46388 */ {(11<<2)|2,{117,116,0}}, +/* 46389 */ {(11<<2)|2,{117,116,0}}, +/* 46390 */ {(11<<2)|2,{117,116,0}}, +/* 46391 */ {(11<<2)|2,{117,116,0}}, +/* 46392 */ {(11<<2)|2,{117,116,0}}, +/* 46393 */ {(11<<2)|2,{117,116,0}}, +/* 46394 */ {(11<<2)|2,{117,116,0}}, +/* 46395 */ {(11<<2)|2,{117,116,0}}, +/* 46396 */ {(11<<2)|2,{117,116,0}}, +/* 46397 */ {(11<<2)|2,{117,116,0}}, +/* 46398 */ {(11<<2)|2,{117,116,0}}, +/* 46399 */ {(11<<2)|2,{117,116,0}}, +/* 46400 */ {(12<<2)|2,{117,32,0}}, +/* 46401 */ {(12<<2)|2,{117,32,0}}, +/* 46402 */ {(12<<2)|2,{117,32,0}}, +/* 46403 */ {(12<<2)|2,{117,32,0}}, +/* 46404 */ {(12<<2)|2,{117,32,0}}, +/* 46405 */ {(12<<2)|2,{117,32,0}}, +/* 46406 */ {(12<<2)|2,{117,32,0}}, +/* 46407 */ {(12<<2)|2,{117,32,0}}, +/* 46408 */ {(12<<2)|2,{117,32,0}}, +/* 46409 */ {(12<<2)|2,{117,32,0}}, +/* 46410 */ {(12<<2)|2,{117,32,0}}, +/* 46411 */ {(12<<2)|2,{117,32,0}}, +/* 46412 */ {(12<<2)|2,{117,32,0}}, +/* 46413 */ {(12<<2)|2,{117,32,0}}, +/* 46414 */ {(12<<2)|2,{117,32,0}}, +/* 46415 */ {(12<<2)|2,{117,32,0}}, +/* 46416 */ {(12<<2)|2,{117,37,0}}, +/* 46417 */ {(12<<2)|2,{117,37,0}}, +/* 46418 */ {(12<<2)|2,{117,37,0}}, +/* 46419 */ {(12<<2)|2,{117,37,0}}, +/* 46420 */ {(12<<2)|2,{117,37,0}}, +/* 46421 */ {(12<<2)|2,{117,37,0}}, +/* 46422 */ {(12<<2)|2,{117,37,0}}, +/* 46423 */ {(12<<2)|2,{117,37,0}}, +/* 46424 */ {(12<<2)|2,{117,37,0}}, +/* 46425 */ {(12<<2)|2,{117,37,0}}, +/* 46426 */ {(12<<2)|2,{117,37,0}}, +/* 46427 */ {(12<<2)|2,{117,37,0}}, +/* 46428 */ {(12<<2)|2,{117,37,0}}, +/* 46429 */ {(12<<2)|2,{117,37,0}}, +/* 46430 */ {(12<<2)|2,{117,37,0}}, +/* 46431 */ {(12<<2)|2,{117,37,0}}, +/* 46432 */ {(12<<2)|2,{117,45,0}}, +/* 46433 */ {(12<<2)|2,{117,45,0}}, +/* 46434 */ {(12<<2)|2,{117,45,0}}, +/* 46435 */ {(12<<2)|2,{117,45,0}}, +/* 46436 */ {(12<<2)|2,{117,45,0}}, +/* 46437 */ {(12<<2)|2,{117,45,0}}, +/* 46438 */ {(12<<2)|2,{117,45,0}}, +/* 46439 */ {(12<<2)|2,{117,45,0}}, +/* 46440 */ {(12<<2)|2,{117,45,0}}, +/* 46441 */ {(12<<2)|2,{117,45,0}}, +/* 46442 */ {(12<<2)|2,{117,45,0}}, +/* 46443 */ {(12<<2)|2,{117,45,0}}, +/* 46444 */ {(12<<2)|2,{117,45,0}}, +/* 46445 */ {(12<<2)|2,{117,45,0}}, +/* 46446 */ {(12<<2)|2,{117,45,0}}, +/* 46447 */ {(12<<2)|2,{117,45,0}}, +/* 46448 */ {(12<<2)|2,{117,46,0}}, +/* 46449 */ {(12<<2)|2,{117,46,0}}, +/* 46450 */ {(12<<2)|2,{117,46,0}}, +/* 46451 */ {(12<<2)|2,{117,46,0}}, +/* 46452 */ {(12<<2)|2,{117,46,0}}, +/* 46453 */ {(12<<2)|2,{117,46,0}}, +/* 46454 */ {(12<<2)|2,{117,46,0}}, +/* 46455 */ {(12<<2)|2,{117,46,0}}, +/* 46456 */ {(12<<2)|2,{117,46,0}}, +/* 46457 */ {(12<<2)|2,{117,46,0}}, +/* 46458 */ {(12<<2)|2,{117,46,0}}, +/* 46459 */ {(12<<2)|2,{117,46,0}}, +/* 46460 */ {(12<<2)|2,{117,46,0}}, +/* 46461 */ {(12<<2)|2,{117,46,0}}, +/* 46462 */ {(12<<2)|2,{117,46,0}}, +/* 46463 */ {(12<<2)|2,{117,46,0}}, +/* 46464 */ {(12<<2)|2,{117,47,0}}, +/* 46465 */ {(12<<2)|2,{117,47,0}}, +/* 46466 */ {(12<<2)|2,{117,47,0}}, +/* 46467 */ {(12<<2)|2,{117,47,0}}, +/* 46468 */ {(12<<2)|2,{117,47,0}}, +/* 46469 */ {(12<<2)|2,{117,47,0}}, +/* 46470 */ {(12<<2)|2,{117,47,0}}, +/* 46471 */ {(12<<2)|2,{117,47,0}}, +/* 46472 */ {(12<<2)|2,{117,47,0}}, +/* 46473 */ {(12<<2)|2,{117,47,0}}, +/* 46474 */ {(12<<2)|2,{117,47,0}}, +/* 46475 */ {(12<<2)|2,{117,47,0}}, +/* 46476 */ {(12<<2)|2,{117,47,0}}, +/* 46477 */ {(12<<2)|2,{117,47,0}}, +/* 46478 */ {(12<<2)|2,{117,47,0}}, +/* 46479 */ {(12<<2)|2,{117,47,0}}, +/* 46480 */ {(12<<2)|2,{117,51,0}}, +/* 46481 */ {(12<<2)|2,{117,51,0}}, +/* 46482 */ {(12<<2)|2,{117,51,0}}, +/* 46483 */ {(12<<2)|2,{117,51,0}}, +/* 46484 */ {(12<<2)|2,{117,51,0}}, +/* 46485 */ {(12<<2)|2,{117,51,0}}, +/* 46486 */ {(12<<2)|2,{117,51,0}}, +/* 46487 */ {(12<<2)|2,{117,51,0}}, +/* 46488 */ {(12<<2)|2,{117,51,0}}, +/* 46489 */ {(12<<2)|2,{117,51,0}}, +/* 46490 */ {(12<<2)|2,{117,51,0}}, +/* 46491 */ {(12<<2)|2,{117,51,0}}, +/* 46492 */ {(12<<2)|2,{117,51,0}}, +/* 46493 */ {(12<<2)|2,{117,51,0}}, +/* 46494 */ {(12<<2)|2,{117,51,0}}, +/* 46495 */ {(12<<2)|2,{117,51,0}}, +/* 46496 */ {(12<<2)|2,{117,52,0}}, +/* 46497 */ {(12<<2)|2,{117,52,0}}, +/* 46498 */ {(12<<2)|2,{117,52,0}}, +/* 46499 */ {(12<<2)|2,{117,52,0}}, +/* 46500 */ {(12<<2)|2,{117,52,0}}, +/* 46501 */ {(12<<2)|2,{117,52,0}}, +/* 46502 */ {(12<<2)|2,{117,52,0}}, +/* 46503 */ {(12<<2)|2,{117,52,0}}, +/* 46504 */ {(12<<2)|2,{117,52,0}}, +/* 46505 */ {(12<<2)|2,{117,52,0}}, +/* 46506 */ {(12<<2)|2,{117,52,0}}, +/* 46507 */ {(12<<2)|2,{117,52,0}}, +/* 46508 */ {(12<<2)|2,{117,52,0}}, +/* 46509 */ {(12<<2)|2,{117,52,0}}, +/* 46510 */ {(12<<2)|2,{117,52,0}}, +/* 46511 */ {(12<<2)|2,{117,52,0}}, +/* 46512 */ {(12<<2)|2,{117,53,0}}, +/* 46513 */ {(12<<2)|2,{117,53,0}}, +/* 46514 */ {(12<<2)|2,{117,53,0}}, +/* 46515 */ {(12<<2)|2,{117,53,0}}, +/* 46516 */ {(12<<2)|2,{117,53,0}}, +/* 46517 */ {(12<<2)|2,{117,53,0}}, +/* 46518 */ {(12<<2)|2,{117,53,0}}, +/* 46519 */ {(12<<2)|2,{117,53,0}}, +/* 46520 */ {(12<<2)|2,{117,53,0}}, +/* 46521 */ {(12<<2)|2,{117,53,0}}, +/* 46522 */ {(12<<2)|2,{117,53,0}}, +/* 46523 */ {(12<<2)|2,{117,53,0}}, +/* 46524 */ {(12<<2)|2,{117,53,0}}, +/* 46525 */ {(12<<2)|2,{117,53,0}}, +/* 46526 */ {(12<<2)|2,{117,53,0}}, +/* 46527 */ {(12<<2)|2,{117,53,0}}, +/* 46528 */ {(12<<2)|2,{117,54,0}}, +/* 46529 */ {(12<<2)|2,{117,54,0}}, +/* 46530 */ {(12<<2)|2,{117,54,0}}, +/* 46531 */ {(12<<2)|2,{117,54,0}}, +/* 46532 */ {(12<<2)|2,{117,54,0}}, +/* 46533 */ {(12<<2)|2,{117,54,0}}, +/* 46534 */ {(12<<2)|2,{117,54,0}}, +/* 46535 */ {(12<<2)|2,{117,54,0}}, +/* 46536 */ {(12<<2)|2,{117,54,0}}, +/* 46537 */ {(12<<2)|2,{117,54,0}}, +/* 46538 */ {(12<<2)|2,{117,54,0}}, +/* 46539 */ {(12<<2)|2,{117,54,0}}, +/* 46540 */ {(12<<2)|2,{117,54,0}}, +/* 46541 */ {(12<<2)|2,{117,54,0}}, +/* 46542 */ {(12<<2)|2,{117,54,0}}, +/* 46543 */ {(12<<2)|2,{117,54,0}}, +/* 46544 */ {(12<<2)|2,{117,55,0}}, +/* 46545 */ {(12<<2)|2,{117,55,0}}, +/* 46546 */ {(12<<2)|2,{117,55,0}}, +/* 46547 */ {(12<<2)|2,{117,55,0}}, +/* 46548 */ {(12<<2)|2,{117,55,0}}, +/* 46549 */ {(12<<2)|2,{117,55,0}}, +/* 46550 */ {(12<<2)|2,{117,55,0}}, +/* 46551 */ {(12<<2)|2,{117,55,0}}, +/* 46552 */ {(12<<2)|2,{117,55,0}}, +/* 46553 */ {(12<<2)|2,{117,55,0}}, +/* 46554 */ {(12<<2)|2,{117,55,0}}, +/* 46555 */ {(12<<2)|2,{117,55,0}}, +/* 46556 */ {(12<<2)|2,{117,55,0}}, +/* 46557 */ {(12<<2)|2,{117,55,0}}, +/* 46558 */ {(12<<2)|2,{117,55,0}}, +/* 46559 */ {(12<<2)|2,{117,55,0}}, +/* 46560 */ {(12<<2)|2,{117,56,0}}, +/* 46561 */ {(12<<2)|2,{117,56,0}}, +/* 46562 */ {(12<<2)|2,{117,56,0}}, +/* 46563 */ {(12<<2)|2,{117,56,0}}, +/* 46564 */ {(12<<2)|2,{117,56,0}}, +/* 46565 */ {(12<<2)|2,{117,56,0}}, +/* 46566 */ {(12<<2)|2,{117,56,0}}, +/* 46567 */ {(12<<2)|2,{117,56,0}}, +/* 46568 */ {(12<<2)|2,{117,56,0}}, +/* 46569 */ {(12<<2)|2,{117,56,0}}, +/* 46570 */ {(12<<2)|2,{117,56,0}}, +/* 46571 */ {(12<<2)|2,{117,56,0}}, +/* 46572 */ {(12<<2)|2,{117,56,0}}, +/* 46573 */ {(12<<2)|2,{117,56,0}}, +/* 46574 */ {(12<<2)|2,{117,56,0}}, +/* 46575 */ {(12<<2)|2,{117,56,0}}, +/* 46576 */ {(12<<2)|2,{117,57,0}}, +/* 46577 */ {(12<<2)|2,{117,57,0}}, +/* 46578 */ {(12<<2)|2,{117,57,0}}, +/* 46579 */ {(12<<2)|2,{117,57,0}}, +/* 46580 */ {(12<<2)|2,{117,57,0}}, +/* 46581 */ {(12<<2)|2,{117,57,0}}, +/* 46582 */ {(12<<2)|2,{117,57,0}}, +/* 46583 */ {(12<<2)|2,{117,57,0}}, +/* 46584 */ {(12<<2)|2,{117,57,0}}, +/* 46585 */ {(12<<2)|2,{117,57,0}}, +/* 46586 */ {(12<<2)|2,{117,57,0}}, +/* 46587 */ {(12<<2)|2,{117,57,0}}, +/* 46588 */ {(12<<2)|2,{117,57,0}}, +/* 46589 */ {(12<<2)|2,{117,57,0}}, +/* 46590 */ {(12<<2)|2,{117,57,0}}, +/* 46591 */ {(12<<2)|2,{117,57,0}}, +/* 46592 */ {(12<<2)|2,{117,61,0}}, +/* 46593 */ {(12<<2)|2,{117,61,0}}, +/* 46594 */ {(12<<2)|2,{117,61,0}}, +/* 46595 */ {(12<<2)|2,{117,61,0}}, +/* 46596 */ {(12<<2)|2,{117,61,0}}, +/* 46597 */ {(12<<2)|2,{117,61,0}}, +/* 46598 */ {(12<<2)|2,{117,61,0}}, +/* 46599 */ {(12<<2)|2,{117,61,0}}, +/* 46600 */ {(12<<2)|2,{117,61,0}}, +/* 46601 */ {(12<<2)|2,{117,61,0}}, +/* 46602 */ {(12<<2)|2,{117,61,0}}, +/* 46603 */ {(12<<2)|2,{117,61,0}}, +/* 46604 */ {(12<<2)|2,{117,61,0}}, +/* 46605 */ {(12<<2)|2,{117,61,0}}, +/* 46606 */ {(12<<2)|2,{117,61,0}}, +/* 46607 */ {(12<<2)|2,{117,61,0}}, +/* 46608 */ {(12<<2)|2,{117,65,0}}, +/* 46609 */ {(12<<2)|2,{117,65,0}}, +/* 46610 */ {(12<<2)|2,{117,65,0}}, +/* 46611 */ {(12<<2)|2,{117,65,0}}, +/* 46612 */ {(12<<2)|2,{117,65,0}}, +/* 46613 */ {(12<<2)|2,{117,65,0}}, +/* 46614 */ {(12<<2)|2,{117,65,0}}, +/* 46615 */ {(12<<2)|2,{117,65,0}}, +/* 46616 */ {(12<<2)|2,{117,65,0}}, +/* 46617 */ {(12<<2)|2,{117,65,0}}, +/* 46618 */ {(12<<2)|2,{117,65,0}}, +/* 46619 */ {(12<<2)|2,{117,65,0}}, +/* 46620 */ {(12<<2)|2,{117,65,0}}, +/* 46621 */ {(12<<2)|2,{117,65,0}}, +/* 46622 */ {(12<<2)|2,{117,65,0}}, +/* 46623 */ {(12<<2)|2,{117,65,0}}, +/* 46624 */ {(12<<2)|2,{117,95,0}}, +/* 46625 */ {(12<<2)|2,{117,95,0}}, +/* 46626 */ {(12<<2)|2,{117,95,0}}, +/* 46627 */ {(12<<2)|2,{117,95,0}}, +/* 46628 */ {(12<<2)|2,{117,95,0}}, +/* 46629 */ {(12<<2)|2,{117,95,0}}, +/* 46630 */ {(12<<2)|2,{117,95,0}}, +/* 46631 */ {(12<<2)|2,{117,95,0}}, +/* 46632 */ {(12<<2)|2,{117,95,0}}, +/* 46633 */ {(12<<2)|2,{117,95,0}}, +/* 46634 */ {(12<<2)|2,{117,95,0}}, +/* 46635 */ {(12<<2)|2,{117,95,0}}, +/* 46636 */ {(12<<2)|2,{117,95,0}}, +/* 46637 */ {(12<<2)|2,{117,95,0}}, +/* 46638 */ {(12<<2)|2,{117,95,0}}, +/* 46639 */ {(12<<2)|2,{117,95,0}}, +/* 46640 */ {(12<<2)|2,{117,98,0}}, +/* 46641 */ {(12<<2)|2,{117,98,0}}, +/* 46642 */ {(12<<2)|2,{117,98,0}}, +/* 46643 */ {(12<<2)|2,{117,98,0}}, +/* 46644 */ {(12<<2)|2,{117,98,0}}, +/* 46645 */ {(12<<2)|2,{117,98,0}}, +/* 46646 */ {(12<<2)|2,{117,98,0}}, +/* 46647 */ {(12<<2)|2,{117,98,0}}, +/* 46648 */ {(12<<2)|2,{117,98,0}}, +/* 46649 */ {(12<<2)|2,{117,98,0}}, +/* 46650 */ {(12<<2)|2,{117,98,0}}, +/* 46651 */ {(12<<2)|2,{117,98,0}}, +/* 46652 */ {(12<<2)|2,{117,98,0}}, +/* 46653 */ {(12<<2)|2,{117,98,0}}, +/* 46654 */ {(12<<2)|2,{117,98,0}}, +/* 46655 */ {(12<<2)|2,{117,98,0}}, +/* 46656 */ {(12<<2)|2,{117,100,0}}, +/* 46657 */ {(12<<2)|2,{117,100,0}}, +/* 46658 */ {(12<<2)|2,{117,100,0}}, +/* 46659 */ {(12<<2)|2,{117,100,0}}, +/* 46660 */ {(12<<2)|2,{117,100,0}}, +/* 46661 */ {(12<<2)|2,{117,100,0}}, +/* 46662 */ {(12<<2)|2,{117,100,0}}, +/* 46663 */ {(12<<2)|2,{117,100,0}}, +/* 46664 */ {(12<<2)|2,{117,100,0}}, +/* 46665 */ {(12<<2)|2,{117,100,0}}, +/* 46666 */ {(12<<2)|2,{117,100,0}}, +/* 46667 */ {(12<<2)|2,{117,100,0}}, +/* 46668 */ {(12<<2)|2,{117,100,0}}, +/* 46669 */ {(12<<2)|2,{117,100,0}}, +/* 46670 */ {(12<<2)|2,{117,100,0}}, +/* 46671 */ {(12<<2)|2,{117,100,0}}, +/* 46672 */ {(12<<2)|2,{117,102,0}}, +/* 46673 */ {(12<<2)|2,{117,102,0}}, +/* 46674 */ {(12<<2)|2,{117,102,0}}, +/* 46675 */ {(12<<2)|2,{117,102,0}}, +/* 46676 */ {(12<<2)|2,{117,102,0}}, +/* 46677 */ {(12<<2)|2,{117,102,0}}, +/* 46678 */ {(12<<2)|2,{117,102,0}}, +/* 46679 */ {(12<<2)|2,{117,102,0}}, +/* 46680 */ {(12<<2)|2,{117,102,0}}, +/* 46681 */ {(12<<2)|2,{117,102,0}}, +/* 46682 */ {(12<<2)|2,{117,102,0}}, +/* 46683 */ {(12<<2)|2,{117,102,0}}, +/* 46684 */ {(12<<2)|2,{117,102,0}}, +/* 46685 */ {(12<<2)|2,{117,102,0}}, +/* 46686 */ {(12<<2)|2,{117,102,0}}, +/* 46687 */ {(12<<2)|2,{117,102,0}}, +/* 46688 */ {(12<<2)|2,{117,103,0}}, +/* 46689 */ {(12<<2)|2,{117,103,0}}, +/* 46690 */ {(12<<2)|2,{117,103,0}}, +/* 46691 */ {(12<<2)|2,{117,103,0}}, +/* 46692 */ {(12<<2)|2,{117,103,0}}, +/* 46693 */ {(12<<2)|2,{117,103,0}}, +/* 46694 */ {(12<<2)|2,{117,103,0}}, +/* 46695 */ {(12<<2)|2,{117,103,0}}, +/* 46696 */ {(12<<2)|2,{117,103,0}}, +/* 46697 */ {(12<<2)|2,{117,103,0}}, +/* 46698 */ {(12<<2)|2,{117,103,0}}, +/* 46699 */ {(12<<2)|2,{117,103,0}}, +/* 46700 */ {(12<<2)|2,{117,103,0}}, +/* 46701 */ {(12<<2)|2,{117,103,0}}, +/* 46702 */ {(12<<2)|2,{117,103,0}}, +/* 46703 */ {(12<<2)|2,{117,103,0}}, +/* 46704 */ {(12<<2)|2,{117,104,0}}, +/* 46705 */ {(12<<2)|2,{117,104,0}}, +/* 46706 */ {(12<<2)|2,{117,104,0}}, +/* 46707 */ {(12<<2)|2,{117,104,0}}, +/* 46708 */ {(12<<2)|2,{117,104,0}}, +/* 46709 */ {(12<<2)|2,{117,104,0}}, +/* 46710 */ {(12<<2)|2,{117,104,0}}, +/* 46711 */ {(12<<2)|2,{117,104,0}}, +/* 46712 */ {(12<<2)|2,{117,104,0}}, +/* 46713 */ {(12<<2)|2,{117,104,0}}, +/* 46714 */ {(12<<2)|2,{117,104,0}}, +/* 46715 */ {(12<<2)|2,{117,104,0}}, +/* 46716 */ {(12<<2)|2,{117,104,0}}, +/* 46717 */ {(12<<2)|2,{117,104,0}}, +/* 46718 */ {(12<<2)|2,{117,104,0}}, +/* 46719 */ {(12<<2)|2,{117,104,0}}, +/* 46720 */ {(12<<2)|2,{117,108,0}}, +/* 46721 */ {(12<<2)|2,{117,108,0}}, +/* 46722 */ {(12<<2)|2,{117,108,0}}, +/* 46723 */ {(12<<2)|2,{117,108,0}}, +/* 46724 */ {(12<<2)|2,{117,108,0}}, +/* 46725 */ {(12<<2)|2,{117,108,0}}, +/* 46726 */ {(12<<2)|2,{117,108,0}}, +/* 46727 */ {(12<<2)|2,{117,108,0}}, +/* 46728 */ {(12<<2)|2,{117,108,0}}, +/* 46729 */ {(12<<2)|2,{117,108,0}}, +/* 46730 */ {(12<<2)|2,{117,108,0}}, +/* 46731 */ {(12<<2)|2,{117,108,0}}, +/* 46732 */ {(12<<2)|2,{117,108,0}}, +/* 46733 */ {(12<<2)|2,{117,108,0}}, +/* 46734 */ {(12<<2)|2,{117,108,0}}, +/* 46735 */ {(12<<2)|2,{117,108,0}}, +/* 46736 */ {(12<<2)|2,{117,109,0}}, +/* 46737 */ {(12<<2)|2,{117,109,0}}, +/* 46738 */ {(12<<2)|2,{117,109,0}}, +/* 46739 */ {(12<<2)|2,{117,109,0}}, +/* 46740 */ {(12<<2)|2,{117,109,0}}, +/* 46741 */ {(12<<2)|2,{117,109,0}}, +/* 46742 */ {(12<<2)|2,{117,109,0}}, +/* 46743 */ {(12<<2)|2,{117,109,0}}, +/* 46744 */ {(12<<2)|2,{117,109,0}}, +/* 46745 */ {(12<<2)|2,{117,109,0}}, +/* 46746 */ {(12<<2)|2,{117,109,0}}, +/* 46747 */ {(12<<2)|2,{117,109,0}}, +/* 46748 */ {(12<<2)|2,{117,109,0}}, +/* 46749 */ {(12<<2)|2,{117,109,0}}, +/* 46750 */ {(12<<2)|2,{117,109,0}}, +/* 46751 */ {(12<<2)|2,{117,109,0}}, +/* 46752 */ {(12<<2)|2,{117,110,0}}, +/* 46753 */ {(12<<2)|2,{117,110,0}}, +/* 46754 */ {(12<<2)|2,{117,110,0}}, +/* 46755 */ {(12<<2)|2,{117,110,0}}, +/* 46756 */ {(12<<2)|2,{117,110,0}}, +/* 46757 */ {(12<<2)|2,{117,110,0}}, +/* 46758 */ {(12<<2)|2,{117,110,0}}, +/* 46759 */ {(12<<2)|2,{117,110,0}}, +/* 46760 */ {(12<<2)|2,{117,110,0}}, +/* 46761 */ {(12<<2)|2,{117,110,0}}, +/* 46762 */ {(12<<2)|2,{117,110,0}}, +/* 46763 */ {(12<<2)|2,{117,110,0}}, +/* 46764 */ {(12<<2)|2,{117,110,0}}, +/* 46765 */ {(12<<2)|2,{117,110,0}}, +/* 46766 */ {(12<<2)|2,{117,110,0}}, +/* 46767 */ {(12<<2)|2,{117,110,0}}, +/* 46768 */ {(12<<2)|2,{117,112,0}}, +/* 46769 */ {(12<<2)|2,{117,112,0}}, +/* 46770 */ {(12<<2)|2,{117,112,0}}, +/* 46771 */ {(12<<2)|2,{117,112,0}}, +/* 46772 */ {(12<<2)|2,{117,112,0}}, +/* 46773 */ {(12<<2)|2,{117,112,0}}, +/* 46774 */ {(12<<2)|2,{117,112,0}}, +/* 46775 */ {(12<<2)|2,{117,112,0}}, +/* 46776 */ {(12<<2)|2,{117,112,0}}, +/* 46777 */ {(12<<2)|2,{117,112,0}}, +/* 46778 */ {(12<<2)|2,{117,112,0}}, +/* 46779 */ {(12<<2)|2,{117,112,0}}, +/* 46780 */ {(12<<2)|2,{117,112,0}}, +/* 46781 */ {(12<<2)|2,{117,112,0}}, +/* 46782 */ {(12<<2)|2,{117,112,0}}, +/* 46783 */ {(12<<2)|2,{117,112,0}}, +/* 46784 */ {(12<<2)|2,{117,114,0}}, +/* 46785 */ {(12<<2)|2,{117,114,0}}, +/* 46786 */ {(12<<2)|2,{117,114,0}}, +/* 46787 */ {(12<<2)|2,{117,114,0}}, +/* 46788 */ {(12<<2)|2,{117,114,0}}, +/* 46789 */ {(12<<2)|2,{117,114,0}}, +/* 46790 */ {(12<<2)|2,{117,114,0}}, +/* 46791 */ {(12<<2)|2,{117,114,0}}, +/* 46792 */ {(12<<2)|2,{117,114,0}}, +/* 46793 */ {(12<<2)|2,{117,114,0}}, +/* 46794 */ {(12<<2)|2,{117,114,0}}, +/* 46795 */ {(12<<2)|2,{117,114,0}}, +/* 46796 */ {(12<<2)|2,{117,114,0}}, +/* 46797 */ {(12<<2)|2,{117,114,0}}, +/* 46798 */ {(12<<2)|2,{117,114,0}}, +/* 46799 */ {(12<<2)|2,{117,114,0}}, +/* 46800 */ {(12<<2)|2,{117,117,0}}, +/* 46801 */ {(12<<2)|2,{117,117,0}}, +/* 46802 */ {(12<<2)|2,{117,117,0}}, +/* 46803 */ {(12<<2)|2,{117,117,0}}, +/* 46804 */ {(12<<2)|2,{117,117,0}}, +/* 46805 */ {(12<<2)|2,{117,117,0}}, +/* 46806 */ {(12<<2)|2,{117,117,0}}, +/* 46807 */ {(12<<2)|2,{117,117,0}}, +/* 46808 */ {(12<<2)|2,{117,117,0}}, +/* 46809 */ {(12<<2)|2,{117,117,0}}, +/* 46810 */ {(12<<2)|2,{117,117,0}}, +/* 46811 */ {(12<<2)|2,{117,117,0}}, +/* 46812 */ {(12<<2)|2,{117,117,0}}, +/* 46813 */ {(12<<2)|2,{117,117,0}}, +/* 46814 */ {(12<<2)|2,{117,117,0}}, +/* 46815 */ {(12<<2)|2,{117,117,0}}, +/* 46816 */ {(13<<2)|2,{117,58,0}}, +/* 46817 */ {(13<<2)|2,{117,58,0}}, +/* 46818 */ {(13<<2)|2,{117,58,0}}, +/* 46819 */ {(13<<2)|2,{117,58,0}}, +/* 46820 */ {(13<<2)|2,{117,58,0}}, +/* 46821 */ {(13<<2)|2,{117,58,0}}, +/* 46822 */ {(13<<2)|2,{117,58,0}}, +/* 46823 */ {(13<<2)|2,{117,58,0}}, +/* 46824 */ {(13<<2)|2,{117,66,0}}, +/* 46825 */ {(13<<2)|2,{117,66,0}}, +/* 46826 */ {(13<<2)|2,{117,66,0}}, +/* 46827 */ {(13<<2)|2,{117,66,0}}, +/* 46828 */ {(13<<2)|2,{117,66,0}}, +/* 46829 */ {(13<<2)|2,{117,66,0}}, +/* 46830 */ {(13<<2)|2,{117,66,0}}, +/* 46831 */ {(13<<2)|2,{117,66,0}}, +/* 46832 */ {(13<<2)|2,{117,67,0}}, +/* 46833 */ {(13<<2)|2,{117,67,0}}, +/* 46834 */ {(13<<2)|2,{117,67,0}}, +/* 46835 */ {(13<<2)|2,{117,67,0}}, +/* 46836 */ {(13<<2)|2,{117,67,0}}, +/* 46837 */ {(13<<2)|2,{117,67,0}}, +/* 46838 */ {(13<<2)|2,{117,67,0}}, +/* 46839 */ {(13<<2)|2,{117,67,0}}, +/* 46840 */ {(13<<2)|2,{117,68,0}}, +/* 46841 */ {(13<<2)|2,{117,68,0}}, +/* 46842 */ {(13<<2)|2,{117,68,0}}, +/* 46843 */ {(13<<2)|2,{117,68,0}}, +/* 46844 */ {(13<<2)|2,{117,68,0}}, +/* 46845 */ {(13<<2)|2,{117,68,0}}, +/* 46846 */ {(13<<2)|2,{117,68,0}}, +/* 46847 */ {(13<<2)|2,{117,68,0}}, +/* 46848 */ {(13<<2)|2,{117,69,0}}, +/* 46849 */ {(13<<2)|2,{117,69,0}}, +/* 46850 */ {(13<<2)|2,{117,69,0}}, +/* 46851 */ {(13<<2)|2,{117,69,0}}, +/* 46852 */ {(13<<2)|2,{117,69,0}}, +/* 46853 */ {(13<<2)|2,{117,69,0}}, +/* 46854 */ {(13<<2)|2,{117,69,0}}, +/* 46855 */ {(13<<2)|2,{117,69,0}}, +/* 46856 */ {(13<<2)|2,{117,70,0}}, +/* 46857 */ {(13<<2)|2,{117,70,0}}, +/* 46858 */ {(13<<2)|2,{117,70,0}}, +/* 46859 */ {(13<<2)|2,{117,70,0}}, +/* 46860 */ {(13<<2)|2,{117,70,0}}, +/* 46861 */ {(13<<2)|2,{117,70,0}}, +/* 46862 */ {(13<<2)|2,{117,70,0}}, +/* 46863 */ {(13<<2)|2,{117,70,0}}, +/* 46864 */ {(13<<2)|2,{117,71,0}}, +/* 46865 */ {(13<<2)|2,{117,71,0}}, +/* 46866 */ {(13<<2)|2,{117,71,0}}, +/* 46867 */ {(13<<2)|2,{117,71,0}}, +/* 46868 */ {(13<<2)|2,{117,71,0}}, +/* 46869 */ {(13<<2)|2,{117,71,0}}, +/* 46870 */ {(13<<2)|2,{117,71,0}}, +/* 46871 */ {(13<<2)|2,{117,71,0}}, +/* 46872 */ {(13<<2)|2,{117,72,0}}, +/* 46873 */ {(13<<2)|2,{117,72,0}}, +/* 46874 */ {(13<<2)|2,{117,72,0}}, +/* 46875 */ {(13<<2)|2,{117,72,0}}, +/* 46876 */ {(13<<2)|2,{117,72,0}}, +/* 46877 */ {(13<<2)|2,{117,72,0}}, +/* 46878 */ {(13<<2)|2,{117,72,0}}, +/* 46879 */ {(13<<2)|2,{117,72,0}}, +/* 46880 */ {(13<<2)|2,{117,73,0}}, +/* 46881 */ {(13<<2)|2,{117,73,0}}, +/* 46882 */ {(13<<2)|2,{117,73,0}}, +/* 46883 */ {(13<<2)|2,{117,73,0}}, +/* 46884 */ {(13<<2)|2,{117,73,0}}, +/* 46885 */ {(13<<2)|2,{117,73,0}}, +/* 46886 */ {(13<<2)|2,{117,73,0}}, +/* 46887 */ {(13<<2)|2,{117,73,0}}, +/* 46888 */ {(13<<2)|2,{117,74,0}}, +/* 46889 */ {(13<<2)|2,{117,74,0}}, +/* 46890 */ {(13<<2)|2,{117,74,0}}, +/* 46891 */ {(13<<2)|2,{117,74,0}}, +/* 46892 */ {(13<<2)|2,{117,74,0}}, +/* 46893 */ {(13<<2)|2,{117,74,0}}, +/* 46894 */ {(13<<2)|2,{117,74,0}}, +/* 46895 */ {(13<<2)|2,{117,74,0}}, +/* 46896 */ {(13<<2)|2,{117,75,0}}, +/* 46897 */ {(13<<2)|2,{117,75,0}}, +/* 46898 */ {(13<<2)|2,{117,75,0}}, +/* 46899 */ {(13<<2)|2,{117,75,0}}, +/* 46900 */ {(13<<2)|2,{117,75,0}}, +/* 46901 */ {(13<<2)|2,{117,75,0}}, +/* 46902 */ {(13<<2)|2,{117,75,0}}, +/* 46903 */ {(13<<2)|2,{117,75,0}}, +/* 46904 */ {(13<<2)|2,{117,76,0}}, +/* 46905 */ {(13<<2)|2,{117,76,0}}, +/* 46906 */ {(13<<2)|2,{117,76,0}}, +/* 46907 */ {(13<<2)|2,{117,76,0}}, +/* 46908 */ {(13<<2)|2,{117,76,0}}, +/* 46909 */ {(13<<2)|2,{117,76,0}}, +/* 46910 */ {(13<<2)|2,{117,76,0}}, +/* 46911 */ {(13<<2)|2,{117,76,0}}, +/* 46912 */ {(13<<2)|2,{117,77,0}}, +/* 46913 */ {(13<<2)|2,{117,77,0}}, +/* 46914 */ {(13<<2)|2,{117,77,0}}, +/* 46915 */ {(13<<2)|2,{117,77,0}}, +/* 46916 */ {(13<<2)|2,{117,77,0}}, +/* 46917 */ {(13<<2)|2,{117,77,0}}, +/* 46918 */ {(13<<2)|2,{117,77,0}}, +/* 46919 */ {(13<<2)|2,{117,77,0}}, +/* 46920 */ {(13<<2)|2,{117,78,0}}, +/* 46921 */ {(13<<2)|2,{117,78,0}}, +/* 46922 */ {(13<<2)|2,{117,78,0}}, +/* 46923 */ {(13<<2)|2,{117,78,0}}, +/* 46924 */ {(13<<2)|2,{117,78,0}}, +/* 46925 */ {(13<<2)|2,{117,78,0}}, +/* 46926 */ {(13<<2)|2,{117,78,0}}, +/* 46927 */ {(13<<2)|2,{117,78,0}}, +/* 46928 */ {(13<<2)|2,{117,79,0}}, +/* 46929 */ {(13<<2)|2,{117,79,0}}, +/* 46930 */ {(13<<2)|2,{117,79,0}}, +/* 46931 */ {(13<<2)|2,{117,79,0}}, +/* 46932 */ {(13<<2)|2,{117,79,0}}, +/* 46933 */ {(13<<2)|2,{117,79,0}}, +/* 46934 */ {(13<<2)|2,{117,79,0}}, +/* 46935 */ {(13<<2)|2,{117,79,0}}, +/* 46936 */ {(13<<2)|2,{117,80,0}}, +/* 46937 */ {(13<<2)|2,{117,80,0}}, +/* 46938 */ {(13<<2)|2,{117,80,0}}, +/* 46939 */ {(13<<2)|2,{117,80,0}}, +/* 46940 */ {(13<<2)|2,{117,80,0}}, +/* 46941 */ {(13<<2)|2,{117,80,0}}, +/* 46942 */ {(13<<2)|2,{117,80,0}}, +/* 46943 */ {(13<<2)|2,{117,80,0}}, +/* 46944 */ {(13<<2)|2,{117,81,0}}, +/* 46945 */ {(13<<2)|2,{117,81,0}}, +/* 46946 */ {(13<<2)|2,{117,81,0}}, +/* 46947 */ {(13<<2)|2,{117,81,0}}, +/* 46948 */ {(13<<2)|2,{117,81,0}}, +/* 46949 */ {(13<<2)|2,{117,81,0}}, +/* 46950 */ {(13<<2)|2,{117,81,0}}, +/* 46951 */ {(13<<2)|2,{117,81,0}}, +/* 46952 */ {(13<<2)|2,{117,82,0}}, +/* 46953 */ {(13<<2)|2,{117,82,0}}, +/* 46954 */ {(13<<2)|2,{117,82,0}}, +/* 46955 */ {(13<<2)|2,{117,82,0}}, +/* 46956 */ {(13<<2)|2,{117,82,0}}, +/* 46957 */ {(13<<2)|2,{117,82,0}}, +/* 46958 */ {(13<<2)|2,{117,82,0}}, +/* 46959 */ {(13<<2)|2,{117,82,0}}, +/* 46960 */ {(13<<2)|2,{117,83,0}}, +/* 46961 */ {(13<<2)|2,{117,83,0}}, +/* 46962 */ {(13<<2)|2,{117,83,0}}, +/* 46963 */ {(13<<2)|2,{117,83,0}}, +/* 46964 */ {(13<<2)|2,{117,83,0}}, +/* 46965 */ {(13<<2)|2,{117,83,0}}, +/* 46966 */ {(13<<2)|2,{117,83,0}}, +/* 46967 */ {(13<<2)|2,{117,83,0}}, +/* 46968 */ {(13<<2)|2,{117,84,0}}, +/* 46969 */ {(13<<2)|2,{117,84,0}}, +/* 46970 */ {(13<<2)|2,{117,84,0}}, +/* 46971 */ {(13<<2)|2,{117,84,0}}, +/* 46972 */ {(13<<2)|2,{117,84,0}}, +/* 46973 */ {(13<<2)|2,{117,84,0}}, +/* 46974 */ {(13<<2)|2,{117,84,0}}, +/* 46975 */ {(13<<2)|2,{117,84,0}}, +/* 46976 */ {(13<<2)|2,{117,85,0}}, +/* 46977 */ {(13<<2)|2,{117,85,0}}, +/* 46978 */ {(13<<2)|2,{117,85,0}}, +/* 46979 */ {(13<<2)|2,{117,85,0}}, +/* 46980 */ {(13<<2)|2,{117,85,0}}, +/* 46981 */ {(13<<2)|2,{117,85,0}}, +/* 46982 */ {(13<<2)|2,{117,85,0}}, +/* 46983 */ {(13<<2)|2,{117,85,0}}, +/* 46984 */ {(13<<2)|2,{117,86,0}}, +/* 46985 */ {(13<<2)|2,{117,86,0}}, +/* 46986 */ {(13<<2)|2,{117,86,0}}, +/* 46987 */ {(13<<2)|2,{117,86,0}}, +/* 46988 */ {(13<<2)|2,{117,86,0}}, +/* 46989 */ {(13<<2)|2,{117,86,0}}, +/* 46990 */ {(13<<2)|2,{117,86,0}}, +/* 46991 */ {(13<<2)|2,{117,86,0}}, +/* 46992 */ {(13<<2)|2,{117,87,0}}, +/* 46993 */ {(13<<2)|2,{117,87,0}}, +/* 46994 */ {(13<<2)|2,{117,87,0}}, +/* 46995 */ {(13<<2)|2,{117,87,0}}, +/* 46996 */ {(13<<2)|2,{117,87,0}}, +/* 46997 */ {(13<<2)|2,{117,87,0}}, +/* 46998 */ {(13<<2)|2,{117,87,0}}, +/* 46999 */ {(13<<2)|2,{117,87,0}}, +/* 47000 */ {(13<<2)|2,{117,89,0}}, +/* 47001 */ {(13<<2)|2,{117,89,0}}, +/* 47002 */ {(13<<2)|2,{117,89,0}}, +/* 47003 */ {(13<<2)|2,{117,89,0}}, +/* 47004 */ {(13<<2)|2,{117,89,0}}, +/* 47005 */ {(13<<2)|2,{117,89,0}}, +/* 47006 */ {(13<<2)|2,{117,89,0}}, +/* 47007 */ {(13<<2)|2,{117,89,0}}, +/* 47008 */ {(13<<2)|2,{117,106,0}}, +/* 47009 */ {(13<<2)|2,{117,106,0}}, +/* 47010 */ {(13<<2)|2,{117,106,0}}, +/* 47011 */ {(13<<2)|2,{117,106,0}}, +/* 47012 */ {(13<<2)|2,{117,106,0}}, +/* 47013 */ {(13<<2)|2,{117,106,0}}, +/* 47014 */ {(13<<2)|2,{117,106,0}}, +/* 47015 */ {(13<<2)|2,{117,106,0}}, +/* 47016 */ {(13<<2)|2,{117,107,0}}, +/* 47017 */ {(13<<2)|2,{117,107,0}}, +/* 47018 */ {(13<<2)|2,{117,107,0}}, +/* 47019 */ {(13<<2)|2,{117,107,0}}, +/* 47020 */ {(13<<2)|2,{117,107,0}}, +/* 47021 */ {(13<<2)|2,{117,107,0}}, +/* 47022 */ {(13<<2)|2,{117,107,0}}, +/* 47023 */ {(13<<2)|2,{117,107,0}}, +/* 47024 */ {(13<<2)|2,{117,113,0}}, +/* 47025 */ {(13<<2)|2,{117,113,0}}, +/* 47026 */ {(13<<2)|2,{117,113,0}}, +/* 47027 */ {(13<<2)|2,{117,113,0}}, +/* 47028 */ {(13<<2)|2,{117,113,0}}, +/* 47029 */ {(13<<2)|2,{117,113,0}}, +/* 47030 */ {(13<<2)|2,{117,113,0}}, +/* 47031 */ {(13<<2)|2,{117,113,0}}, +/* 47032 */ {(13<<2)|2,{117,118,0}}, +/* 47033 */ {(13<<2)|2,{117,118,0}}, +/* 47034 */ {(13<<2)|2,{117,118,0}}, +/* 47035 */ {(13<<2)|2,{117,118,0}}, +/* 47036 */ {(13<<2)|2,{117,118,0}}, +/* 47037 */ {(13<<2)|2,{117,118,0}}, +/* 47038 */ {(13<<2)|2,{117,118,0}}, +/* 47039 */ {(13<<2)|2,{117,118,0}}, +/* 47040 */ {(13<<2)|2,{117,119,0}}, +/* 47041 */ {(13<<2)|2,{117,119,0}}, +/* 47042 */ {(13<<2)|2,{117,119,0}}, +/* 47043 */ {(13<<2)|2,{117,119,0}}, +/* 47044 */ {(13<<2)|2,{117,119,0}}, +/* 47045 */ {(13<<2)|2,{117,119,0}}, +/* 47046 */ {(13<<2)|2,{117,119,0}}, +/* 47047 */ {(13<<2)|2,{117,119,0}}, +/* 47048 */ {(13<<2)|2,{117,120,0}}, +/* 47049 */ {(13<<2)|2,{117,120,0}}, +/* 47050 */ {(13<<2)|2,{117,120,0}}, +/* 47051 */ {(13<<2)|2,{117,120,0}}, +/* 47052 */ {(13<<2)|2,{117,120,0}}, +/* 47053 */ {(13<<2)|2,{117,120,0}}, +/* 47054 */ {(13<<2)|2,{117,120,0}}, +/* 47055 */ {(13<<2)|2,{117,120,0}}, +/* 47056 */ {(13<<2)|2,{117,121,0}}, +/* 47057 */ {(13<<2)|2,{117,121,0}}, +/* 47058 */ {(13<<2)|2,{117,121,0}}, +/* 47059 */ {(13<<2)|2,{117,121,0}}, +/* 47060 */ {(13<<2)|2,{117,121,0}}, +/* 47061 */ {(13<<2)|2,{117,121,0}}, +/* 47062 */ {(13<<2)|2,{117,121,0}}, +/* 47063 */ {(13<<2)|2,{117,121,0}}, +/* 47064 */ {(13<<2)|2,{117,122,0}}, +/* 47065 */ {(13<<2)|2,{117,122,0}}, +/* 47066 */ {(13<<2)|2,{117,122,0}}, +/* 47067 */ {(13<<2)|2,{117,122,0}}, +/* 47068 */ {(13<<2)|2,{117,122,0}}, +/* 47069 */ {(13<<2)|2,{117,122,0}}, +/* 47070 */ {(13<<2)|2,{117,122,0}}, +/* 47071 */ {(13<<2)|2,{117,122,0}}, +/* 47072 */ {(14<<2)|2,{117,38,0}}, +/* 47073 */ {(14<<2)|2,{117,38,0}}, +/* 47074 */ {(14<<2)|2,{117,38,0}}, +/* 47075 */ {(14<<2)|2,{117,38,0}}, +/* 47076 */ {(14<<2)|2,{117,42,0}}, +/* 47077 */ {(14<<2)|2,{117,42,0}}, +/* 47078 */ {(14<<2)|2,{117,42,0}}, +/* 47079 */ {(14<<2)|2,{117,42,0}}, +/* 47080 */ {(14<<2)|2,{117,44,0}}, +/* 47081 */ {(14<<2)|2,{117,44,0}}, +/* 47082 */ {(14<<2)|2,{117,44,0}}, +/* 47083 */ {(14<<2)|2,{117,44,0}}, +/* 47084 */ {(14<<2)|2,{117,59,0}}, +/* 47085 */ {(14<<2)|2,{117,59,0}}, +/* 47086 */ {(14<<2)|2,{117,59,0}}, +/* 47087 */ {(14<<2)|2,{117,59,0}}, +/* 47088 */ {(14<<2)|2,{117,88,0}}, +/* 47089 */ {(14<<2)|2,{117,88,0}}, +/* 47090 */ {(14<<2)|2,{117,88,0}}, +/* 47091 */ {(14<<2)|2,{117,88,0}}, +/* 47092 */ {(14<<2)|2,{117,90,0}}, +/* 47093 */ {(14<<2)|2,{117,90,0}}, +/* 47094 */ {(14<<2)|2,{117,90,0}}, +/* 47095 */ {(14<<2)|2,{117,90,0}}, +/* 47096 */ {(16<<2)|2,{117,33,0}}, +/* 47097 */ {(16<<2)|2,{117,34,0}}, +/* 47098 */ {(16<<2)|2,{117,40,0}}, +/* 47099 */ {(16<<2)|2,{117,41,0}}, +/* 47100 */ {(16<<2)|2,{117,63,0}}, +/* 47101 */ {(6<<2)|1,{117,0,0}}, +/* 47102 */ {(6<<2)|1,{117,0,0}}, +/* 47103 */ {(6<<2)|1,{117,0,0}}, +/* 47104 */ {(12<<2)|2,{58,48,0}}, +/* 47105 */ {(12<<2)|2,{58,48,0}}, +/* 47106 */ {(12<<2)|2,{58,48,0}}, +/* 47107 */ {(12<<2)|2,{58,48,0}}, +/* 47108 */ {(12<<2)|2,{58,48,0}}, +/* 47109 */ {(12<<2)|2,{58,48,0}}, +/* 47110 */ {(12<<2)|2,{58,48,0}}, +/* 47111 */ {(12<<2)|2,{58,48,0}}, +/* 47112 */ {(12<<2)|2,{58,48,0}}, +/* 47113 */ {(12<<2)|2,{58,48,0}}, +/* 47114 */ {(12<<2)|2,{58,48,0}}, +/* 47115 */ {(12<<2)|2,{58,48,0}}, +/* 47116 */ {(12<<2)|2,{58,48,0}}, +/* 47117 */ {(12<<2)|2,{58,48,0}}, +/* 47118 */ {(12<<2)|2,{58,48,0}}, +/* 47119 */ {(12<<2)|2,{58,48,0}}, +/* 47120 */ {(12<<2)|2,{58,49,0}}, +/* 47121 */ {(12<<2)|2,{58,49,0}}, +/* 47122 */ {(12<<2)|2,{58,49,0}}, +/* 47123 */ {(12<<2)|2,{58,49,0}}, +/* 47124 */ {(12<<2)|2,{58,49,0}}, +/* 47125 */ {(12<<2)|2,{58,49,0}}, +/* 47126 */ {(12<<2)|2,{58,49,0}}, +/* 47127 */ {(12<<2)|2,{58,49,0}}, +/* 47128 */ {(12<<2)|2,{58,49,0}}, +/* 47129 */ {(12<<2)|2,{58,49,0}}, +/* 47130 */ {(12<<2)|2,{58,49,0}}, +/* 47131 */ {(12<<2)|2,{58,49,0}}, +/* 47132 */ {(12<<2)|2,{58,49,0}}, +/* 47133 */ {(12<<2)|2,{58,49,0}}, +/* 47134 */ {(12<<2)|2,{58,49,0}}, +/* 47135 */ {(12<<2)|2,{58,49,0}}, +/* 47136 */ {(12<<2)|2,{58,50,0}}, +/* 47137 */ {(12<<2)|2,{58,50,0}}, +/* 47138 */ {(12<<2)|2,{58,50,0}}, +/* 47139 */ {(12<<2)|2,{58,50,0}}, +/* 47140 */ {(12<<2)|2,{58,50,0}}, +/* 47141 */ {(12<<2)|2,{58,50,0}}, +/* 47142 */ {(12<<2)|2,{58,50,0}}, +/* 47143 */ {(12<<2)|2,{58,50,0}}, +/* 47144 */ {(12<<2)|2,{58,50,0}}, +/* 47145 */ {(12<<2)|2,{58,50,0}}, +/* 47146 */ {(12<<2)|2,{58,50,0}}, +/* 47147 */ {(12<<2)|2,{58,50,0}}, +/* 47148 */ {(12<<2)|2,{58,50,0}}, +/* 47149 */ {(12<<2)|2,{58,50,0}}, +/* 47150 */ {(12<<2)|2,{58,50,0}}, +/* 47151 */ {(12<<2)|2,{58,50,0}}, +/* 47152 */ {(12<<2)|2,{58,97,0}}, +/* 47153 */ {(12<<2)|2,{58,97,0}}, +/* 47154 */ {(12<<2)|2,{58,97,0}}, +/* 47155 */ {(12<<2)|2,{58,97,0}}, +/* 47156 */ {(12<<2)|2,{58,97,0}}, +/* 47157 */ {(12<<2)|2,{58,97,0}}, +/* 47158 */ {(12<<2)|2,{58,97,0}}, +/* 47159 */ {(12<<2)|2,{58,97,0}}, +/* 47160 */ {(12<<2)|2,{58,97,0}}, +/* 47161 */ {(12<<2)|2,{58,97,0}}, +/* 47162 */ {(12<<2)|2,{58,97,0}}, +/* 47163 */ {(12<<2)|2,{58,97,0}}, +/* 47164 */ {(12<<2)|2,{58,97,0}}, +/* 47165 */ {(12<<2)|2,{58,97,0}}, +/* 47166 */ {(12<<2)|2,{58,97,0}}, +/* 47167 */ {(12<<2)|2,{58,97,0}}, +/* 47168 */ {(12<<2)|2,{58,99,0}}, +/* 47169 */ {(12<<2)|2,{58,99,0}}, +/* 47170 */ {(12<<2)|2,{58,99,0}}, +/* 47171 */ {(12<<2)|2,{58,99,0}}, +/* 47172 */ {(12<<2)|2,{58,99,0}}, +/* 47173 */ {(12<<2)|2,{58,99,0}}, +/* 47174 */ {(12<<2)|2,{58,99,0}}, +/* 47175 */ {(12<<2)|2,{58,99,0}}, +/* 47176 */ {(12<<2)|2,{58,99,0}}, +/* 47177 */ {(12<<2)|2,{58,99,0}}, +/* 47178 */ {(12<<2)|2,{58,99,0}}, +/* 47179 */ {(12<<2)|2,{58,99,0}}, +/* 47180 */ {(12<<2)|2,{58,99,0}}, +/* 47181 */ {(12<<2)|2,{58,99,0}}, +/* 47182 */ {(12<<2)|2,{58,99,0}}, +/* 47183 */ {(12<<2)|2,{58,99,0}}, +/* 47184 */ {(12<<2)|2,{58,101,0}}, +/* 47185 */ {(12<<2)|2,{58,101,0}}, +/* 47186 */ {(12<<2)|2,{58,101,0}}, +/* 47187 */ {(12<<2)|2,{58,101,0}}, +/* 47188 */ {(12<<2)|2,{58,101,0}}, +/* 47189 */ {(12<<2)|2,{58,101,0}}, +/* 47190 */ {(12<<2)|2,{58,101,0}}, +/* 47191 */ {(12<<2)|2,{58,101,0}}, +/* 47192 */ {(12<<2)|2,{58,101,0}}, +/* 47193 */ {(12<<2)|2,{58,101,0}}, +/* 47194 */ {(12<<2)|2,{58,101,0}}, +/* 47195 */ {(12<<2)|2,{58,101,0}}, +/* 47196 */ {(12<<2)|2,{58,101,0}}, +/* 47197 */ {(12<<2)|2,{58,101,0}}, +/* 47198 */ {(12<<2)|2,{58,101,0}}, +/* 47199 */ {(12<<2)|2,{58,101,0}}, +/* 47200 */ {(12<<2)|2,{58,105,0}}, +/* 47201 */ {(12<<2)|2,{58,105,0}}, +/* 47202 */ {(12<<2)|2,{58,105,0}}, +/* 47203 */ {(12<<2)|2,{58,105,0}}, +/* 47204 */ {(12<<2)|2,{58,105,0}}, +/* 47205 */ {(12<<2)|2,{58,105,0}}, +/* 47206 */ {(12<<2)|2,{58,105,0}}, +/* 47207 */ {(12<<2)|2,{58,105,0}}, +/* 47208 */ {(12<<2)|2,{58,105,0}}, +/* 47209 */ {(12<<2)|2,{58,105,0}}, +/* 47210 */ {(12<<2)|2,{58,105,0}}, +/* 47211 */ {(12<<2)|2,{58,105,0}}, +/* 47212 */ {(12<<2)|2,{58,105,0}}, +/* 47213 */ {(12<<2)|2,{58,105,0}}, +/* 47214 */ {(12<<2)|2,{58,105,0}}, +/* 47215 */ {(12<<2)|2,{58,105,0}}, +/* 47216 */ {(12<<2)|2,{58,111,0}}, +/* 47217 */ {(12<<2)|2,{58,111,0}}, +/* 47218 */ {(12<<2)|2,{58,111,0}}, +/* 47219 */ {(12<<2)|2,{58,111,0}}, +/* 47220 */ {(12<<2)|2,{58,111,0}}, +/* 47221 */ {(12<<2)|2,{58,111,0}}, +/* 47222 */ {(12<<2)|2,{58,111,0}}, +/* 47223 */ {(12<<2)|2,{58,111,0}}, +/* 47224 */ {(12<<2)|2,{58,111,0}}, +/* 47225 */ {(12<<2)|2,{58,111,0}}, +/* 47226 */ {(12<<2)|2,{58,111,0}}, +/* 47227 */ {(12<<2)|2,{58,111,0}}, +/* 47228 */ {(12<<2)|2,{58,111,0}}, +/* 47229 */ {(12<<2)|2,{58,111,0}}, +/* 47230 */ {(12<<2)|2,{58,111,0}}, +/* 47231 */ {(12<<2)|2,{58,111,0}}, +/* 47232 */ {(12<<2)|2,{58,115,0}}, +/* 47233 */ {(12<<2)|2,{58,115,0}}, +/* 47234 */ {(12<<2)|2,{58,115,0}}, +/* 47235 */ {(12<<2)|2,{58,115,0}}, +/* 47236 */ {(12<<2)|2,{58,115,0}}, +/* 47237 */ {(12<<2)|2,{58,115,0}}, +/* 47238 */ {(12<<2)|2,{58,115,0}}, +/* 47239 */ {(12<<2)|2,{58,115,0}}, +/* 47240 */ {(12<<2)|2,{58,115,0}}, +/* 47241 */ {(12<<2)|2,{58,115,0}}, +/* 47242 */ {(12<<2)|2,{58,115,0}}, +/* 47243 */ {(12<<2)|2,{58,115,0}}, +/* 47244 */ {(12<<2)|2,{58,115,0}}, +/* 47245 */ {(12<<2)|2,{58,115,0}}, +/* 47246 */ {(12<<2)|2,{58,115,0}}, +/* 47247 */ {(12<<2)|2,{58,115,0}}, +/* 47248 */ {(12<<2)|2,{58,116,0}}, +/* 47249 */ {(12<<2)|2,{58,116,0}}, +/* 47250 */ {(12<<2)|2,{58,116,0}}, +/* 47251 */ {(12<<2)|2,{58,116,0}}, +/* 47252 */ {(12<<2)|2,{58,116,0}}, +/* 47253 */ {(12<<2)|2,{58,116,0}}, +/* 47254 */ {(12<<2)|2,{58,116,0}}, +/* 47255 */ {(12<<2)|2,{58,116,0}}, +/* 47256 */ {(12<<2)|2,{58,116,0}}, +/* 47257 */ {(12<<2)|2,{58,116,0}}, +/* 47258 */ {(12<<2)|2,{58,116,0}}, +/* 47259 */ {(12<<2)|2,{58,116,0}}, +/* 47260 */ {(12<<2)|2,{58,116,0}}, +/* 47261 */ {(12<<2)|2,{58,116,0}}, +/* 47262 */ {(12<<2)|2,{58,116,0}}, +/* 47263 */ {(12<<2)|2,{58,116,0}}, +/* 47264 */ {(13<<2)|2,{58,32,0}}, +/* 47265 */ {(13<<2)|2,{58,32,0}}, +/* 47266 */ {(13<<2)|2,{58,32,0}}, +/* 47267 */ {(13<<2)|2,{58,32,0}}, +/* 47268 */ {(13<<2)|2,{58,32,0}}, +/* 47269 */ {(13<<2)|2,{58,32,0}}, +/* 47270 */ {(13<<2)|2,{58,32,0}}, +/* 47271 */ {(13<<2)|2,{58,32,0}}, +/* 47272 */ {(13<<2)|2,{58,37,0}}, +/* 47273 */ {(13<<2)|2,{58,37,0}}, +/* 47274 */ {(13<<2)|2,{58,37,0}}, +/* 47275 */ {(13<<2)|2,{58,37,0}}, +/* 47276 */ {(13<<2)|2,{58,37,0}}, +/* 47277 */ {(13<<2)|2,{58,37,0}}, +/* 47278 */ {(13<<2)|2,{58,37,0}}, +/* 47279 */ {(13<<2)|2,{58,37,0}}, +/* 47280 */ {(13<<2)|2,{58,45,0}}, +/* 47281 */ {(13<<2)|2,{58,45,0}}, +/* 47282 */ {(13<<2)|2,{58,45,0}}, +/* 47283 */ {(13<<2)|2,{58,45,0}}, +/* 47284 */ {(13<<2)|2,{58,45,0}}, +/* 47285 */ {(13<<2)|2,{58,45,0}}, +/* 47286 */ {(13<<2)|2,{58,45,0}}, +/* 47287 */ {(13<<2)|2,{58,45,0}}, +/* 47288 */ {(13<<2)|2,{58,46,0}}, +/* 47289 */ {(13<<2)|2,{58,46,0}}, +/* 47290 */ {(13<<2)|2,{58,46,0}}, +/* 47291 */ {(13<<2)|2,{58,46,0}}, +/* 47292 */ {(13<<2)|2,{58,46,0}}, +/* 47293 */ {(13<<2)|2,{58,46,0}}, +/* 47294 */ {(13<<2)|2,{58,46,0}}, +/* 47295 */ {(13<<2)|2,{58,46,0}}, +/* 47296 */ {(13<<2)|2,{58,47,0}}, +/* 47297 */ {(13<<2)|2,{58,47,0}}, +/* 47298 */ {(13<<2)|2,{58,47,0}}, +/* 47299 */ {(13<<2)|2,{58,47,0}}, +/* 47300 */ {(13<<2)|2,{58,47,0}}, +/* 47301 */ {(13<<2)|2,{58,47,0}}, +/* 47302 */ {(13<<2)|2,{58,47,0}}, +/* 47303 */ {(13<<2)|2,{58,47,0}}, +/* 47304 */ {(13<<2)|2,{58,51,0}}, +/* 47305 */ {(13<<2)|2,{58,51,0}}, +/* 47306 */ {(13<<2)|2,{58,51,0}}, +/* 47307 */ {(13<<2)|2,{58,51,0}}, +/* 47308 */ {(13<<2)|2,{58,51,0}}, +/* 47309 */ {(13<<2)|2,{58,51,0}}, +/* 47310 */ {(13<<2)|2,{58,51,0}}, +/* 47311 */ {(13<<2)|2,{58,51,0}}, +/* 47312 */ {(13<<2)|2,{58,52,0}}, +/* 47313 */ {(13<<2)|2,{58,52,0}}, +/* 47314 */ {(13<<2)|2,{58,52,0}}, +/* 47315 */ {(13<<2)|2,{58,52,0}}, +/* 47316 */ {(13<<2)|2,{58,52,0}}, +/* 47317 */ {(13<<2)|2,{58,52,0}}, +/* 47318 */ {(13<<2)|2,{58,52,0}}, +/* 47319 */ {(13<<2)|2,{58,52,0}}, +/* 47320 */ {(13<<2)|2,{58,53,0}}, +/* 47321 */ {(13<<2)|2,{58,53,0}}, +/* 47322 */ {(13<<2)|2,{58,53,0}}, +/* 47323 */ {(13<<2)|2,{58,53,0}}, +/* 47324 */ {(13<<2)|2,{58,53,0}}, +/* 47325 */ {(13<<2)|2,{58,53,0}}, +/* 47326 */ {(13<<2)|2,{58,53,0}}, +/* 47327 */ {(13<<2)|2,{58,53,0}}, +/* 47328 */ {(13<<2)|2,{58,54,0}}, +/* 47329 */ {(13<<2)|2,{58,54,0}}, +/* 47330 */ {(13<<2)|2,{58,54,0}}, +/* 47331 */ {(13<<2)|2,{58,54,0}}, +/* 47332 */ {(13<<2)|2,{58,54,0}}, +/* 47333 */ {(13<<2)|2,{58,54,0}}, +/* 47334 */ {(13<<2)|2,{58,54,0}}, +/* 47335 */ {(13<<2)|2,{58,54,0}}, +/* 47336 */ {(13<<2)|2,{58,55,0}}, +/* 47337 */ {(13<<2)|2,{58,55,0}}, +/* 47338 */ {(13<<2)|2,{58,55,0}}, +/* 47339 */ {(13<<2)|2,{58,55,0}}, +/* 47340 */ {(13<<2)|2,{58,55,0}}, +/* 47341 */ {(13<<2)|2,{58,55,0}}, +/* 47342 */ {(13<<2)|2,{58,55,0}}, +/* 47343 */ {(13<<2)|2,{58,55,0}}, +/* 47344 */ {(13<<2)|2,{58,56,0}}, +/* 47345 */ {(13<<2)|2,{58,56,0}}, +/* 47346 */ {(13<<2)|2,{58,56,0}}, +/* 47347 */ {(13<<2)|2,{58,56,0}}, +/* 47348 */ {(13<<2)|2,{58,56,0}}, +/* 47349 */ {(13<<2)|2,{58,56,0}}, +/* 47350 */ {(13<<2)|2,{58,56,0}}, +/* 47351 */ {(13<<2)|2,{58,56,0}}, +/* 47352 */ {(13<<2)|2,{58,57,0}}, +/* 47353 */ {(13<<2)|2,{58,57,0}}, +/* 47354 */ {(13<<2)|2,{58,57,0}}, +/* 47355 */ {(13<<2)|2,{58,57,0}}, +/* 47356 */ {(13<<2)|2,{58,57,0}}, +/* 47357 */ {(13<<2)|2,{58,57,0}}, +/* 47358 */ {(13<<2)|2,{58,57,0}}, +/* 47359 */ {(13<<2)|2,{58,57,0}}, +/* 47360 */ {(13<<2)|2,{58,61,0}}, +/* 47361 */ {(13<<2)|2,{58,61,0}}, +/* 47362 */ {(13<<2)|2,{58,61,0}}, +/* 47363 */ {(13<<2)|2,{58,61,0}}, +/* 47364 */ {(13<<2)|2,{58,61,0}}, +/* 47365 */ {(13<<2)|2,{58,61,0}}, +/* 47366 */ {(13<<2)|2,{58,61,0}}, +/* 47367 */ {(13<<2)|2,{58,61,0}}, +/* 47368 */ {(13<<2)|2,{58,65,0}}, +/* 47369 */ {(13<<2)|2,{58,65,0}}, +/* 47370 */ {(13<<2)|2,{58,65,0}}, +/* 47371 */ {(13<<2)|2,{58,65,0}}, +/* 47372 */ {(13<<2)|2,{58,65,0}}, +/* 47373 */ {(13<<2)|2,{58,65,0}}, +/* 47374 */ {(13<<2)|2,{58,65,0}}, +/* 47375 */ {(13<<2)|2,{58,65,0}}, +/* 47376 */ {(13<<2)|2,{58,95,0}}, +/* 47377 */ {(13<<2)|2,{58,95,0}}, +/* 47378 */ {(13<<2)|2,{58,95,0}}, +/* 47379 */ {(13<<2)|2,{58,95,0}}, +/* 47380 */ {(13<<2)|2,{58,95,0}}, +/* 47381 */ {(13<<2)|2,{58,95,0}}, +/* 47382 */ {(13<<2)|2,{58,95,0}}, +/* 47383 */ {(13<<2)|2,{58,95,0}}, +/* 47384 */ {(13<<2)|2,{58,98,0}}, +/* 47385 */ {(13<<2)|2,{58,98,0}}, +/* 47386 */ {(13<<2)|2,{58,98,0}}, +/* 47387 */ {(13<<2)|2,{58,98,0}}, +/* 47388 */ {(13<<2)|2,{58,98,0}}, +/* 47389 */ {(13<<2)|2,{58,98,0}}, +/* 47390 */ {(13<<2)|2,{58,98,0}}, +/* 47391 */ {(13<<2)|2,{58,98,0}}, +/* 47392 */ {(13<<2)|2,{58,100,0}}, +/* 47393 */ {(13<<2)|2,{58,100,0}}, +/* 47394 */ {(13<<2)|2,{58,100,0}}, +/* 47395 */ {(13<<2)|2,{58,100,0}}, +/* 47396 */ {(13<<2)|2,{58,100,0}}, +/* 47397 */ {(13<<2)|2,{58,100,0}}, +/* 47398 */ {(13<<2)|2,{58,100,0}}, +/* 47399 */ {(13<<2)|2,{58,100,0}}, +/* 47400 */ {(13<<2)|2,{58,102,0}}, +/* 47401 */ {(13<<2)|2,{58,102,0}}, +/* 47402 */ {(13<<2)|2,{58,102,0}}, +/* 47403 */ {(13<<2)|2,{58,102,0}}, +/* 47404 */ {(13<<2)|2,{58,102,0}}, +/* 47405 */ {(13<<2)|2,{58,102,0}}, +/* 47406 */ {(13<<2)|2,{58,102,0}}, +/* 47407 */ {(13<<2)|2,{58,102,0}}, +/* 47408 */ {(13<<2)|2,{58,103,0}}, +/* 47409 */ {(13<<2)|2,{58,103,0}}, +/* 47410 */ {(13<<2)|2,{58,103,0}}, +/* 47411 */ {(13<<2)|2,{58,103,0}}, +/* 47412 */ {(13<<2)|2,{58,103,0}}, +/* 47413 */ {(13<<2)|2,{58,103,0}}, +/* 47414 */ {(13<<2)|2,{58,103,0}}, +/* 47415 */ {(13<<2)|2,{58,103,0}}, +/* 47416 */ {(13<<2)|2,{58,104,0}}, +/* 47417 */ {(13<<2)|2,{58,104,0}}, +/* 47418 */ {(13<<2)|2,{58,104,0}}, +/* 47419 */ {(13<<2)|2,{58,104,0}}, +/* 47420 */ {(13<<2)|2,{58,104,0}}, +/* 47421 */ {(13<<2)|2,{58,104,0}}, +/* 47422 */ {(13<<2)|2,{58,104,0}}, +/* 47423 */ {(13<<2)|2,{58,104,0}}, +/* 47424 */ {(13<<2)|2,{58,108,0}}, +/* 47425 */ {(13<<2)|2,{58,108,0}}, +/* 47426 */ {(13<<2)|2,{58,108,0}}, +/* 47427 */ {(13<<2)|2,{58,108,0}}, +/* 47428 */ {(13<<2)|2,{58,108,0}}, +/* 47429 */ {(13<<2)|2,{58,108,0}}, +/* 47430 */ {(13<<2)|2,{58,108,0}}, +/* 47431 */ {(13<<2)|2,{58,108,0}}, +/* 47432 */ {(13<<2)|2,{58,109,0}}, +/* 47433 */ {(13<<2)|2,{58,109,0}}, +/* 47434 */ {(13<<2)|2,{58,109,0}}, +/* 47435 */ {(13<<2)|2,{58,109,0}}, +/* 47436 */ {(13<<2)|2,{58,109,0}}, +/* 47437 */ {(13<<2)|2,{58,109,0}}, +/* 47438 */ {(13<<2)|2,{58,109,0}}, +/* 47439 */ {(13<<2)|2,{58,109,0}}, +/* 47440 */ {(13<<2)|2,{58,110,0}}, +/* 47441 */ {(13<<2)|2,{58,110,0}}, +/* 47442 */ {(13<<2)|2,{58,110,0}}, +/* 47443 */ {(13<<2)|2,{58,110,0}}, +/* 47444 */ {(13<<2)|2,{58,110,0}}, +/* 47445 */ {(13<<2)|2,{58,110,0}}, +/* 47446 */ {(13<<2)|2,{58,110,0}}, +/* 47447 */ {(13<<2)|2,{58,110,0}}, +/* 47448 */ {(13<<2)|2,{58,112,0}}, +/* 47449 */ {(13<<2)|2,{58,112,0}}, +/* 47450 */ {(13<<2)|2,{58,112,0}}, +/* 47451 */ {(13<<2)|2,{58,112,0}}, +/* 47452 */ {(13<<2)|2,{58,112,0}}, +/* 47453 */ {(13<<2)|2,{58,112,0}}, +/* 47454 */ {(13<<2)|2,{58,112,0}}, +/* 47455 */ {(13<<2)|2,{58,112,0}}, +/* 47456 */ {(13<<2)|2,{58,114,0}}, +/* 47457 */ {(13<<2)|2,{58,114,0}}, +/* 47458 */ {(13<<2)|2,{58,114,0}}, +/* 47459 */ {(13<<2)|2,{58,114,0}}, +/* 47460 */ {(13<<2)|2,{58,114,0}}, +/* 47461 */ {(13<<2)|2,{58,114,0}}, +/* 47462 */ {(13<<2)|2,{58,114,0}}, +/* 47463 */ {(13<<2)|2,{58,114,0}}, +/* 47464 */ {(13<<2)|2,{58,117,0}}, +/* 47465 */ {(13<<2)|2,{58,117,0}}, +/* 47466 */ {(13<<2)|2,{58,117,0}}, +/* 47467 */ {(13<<2)|2,{58,117,0}}, +/* 47468 */ {(13<<2)|2,{58,117,0}}, +/* 47469 */ {(13<<2)|2,{58,117,0}}, +/* 47470 */ {(13<<2)|2,{58,117,0}}, +/* 47471 */ {(13<<2)|2,{58,117,0}}, +/* 47472 */ {(14<<2)|2,{58,58,0}}, +/* 47473 */ {(14<<2)|2,{58,58,0}}, +/* 47474 */ {(14<<2)|2,{58,58,0}}, +/* 47475 */ {(14<<2)|2,{58,58,0}}, +/* 47476 */ {(14<<2)|2,{58,66,0}}, +/* 47477 */ {(14<<2)|2,{58,66,0}}, +/* 47478 */ {(14<<2)|2,{58,66,0}}, +/* 47479 */ {(14<<2)|2,{58,66,0}}, +/* 47480 */ {(14<<2)|2,{58,67,0}}, +/* 47481 */ {(14<<2)|2,{58,67,0}}, +/* 47482 */ {(14<<2)|2,{58,67,0}}, +/* 47483 */ {(14<<2)|2,{58,67,0}}, +/* 47484 */ {(14<<2)|2,{58,68,0}}, +/* 47485 */ {(14<<2)|2,{58,68,0}}, +/* 47486 */ {(14<<2)|2,{58,68,0}}, +/* 47487 */ {(14<<2)|2,{58,68,0}}, +/* 47488 */ {(14<<2)|2,{58,69,0}}, +/* 47489 */ {(14<<2)|2,{58,69,0}}, +/* 47490 */ {(14<<2)|2,{58,69,0}}, +/* 47491 */ {(14<<2)|2,{58,69,0}}, +/* 47492 */ {(14<<2)|2,{58,70,0}}, +/* 47493 */ {(14<<2)|2,{58,70,0}}, +/* 47494 */ {(14<<2)|2,{58,70,0}}, +/* 47495 */ {(14<<2)|2,{58,70,0}}, +/* 47496 */ {(14<<2)|2,{58,71,0}}, +/* 47497 */ {(14<<2)|2,{58,71,0}}, +/* 47498 */ {(14<<2)|2,{58,71,0}}, +/* 47499 */ {(14<<2)|2,{58,71,0}}, +/* 47500 */ {(14<<2)|2,{58,72,0}}, +/* 47501 */ {(14<<2)|2,{58,72,0}}, +/* 47502 */ {(14<<2)|2,{58,72,0}}, +/* 47503 */ {(14<<2)|2,{58,72,0}}, +/* 47504 */ {(14<<2)|2,{58,73,0}}, +/* 47505 */ {(14<<2)|2,{58,73,0}}, +/* 47506 */ {(14<<2)|2,{58,73,0}}, +/* 47507 */ {(14<<2)|2,{58,73,0}}, +/* 47508 */ {(14<<2)|2,{58,74,0}}, +/* 47509 */ {(14<<2)|2,{58,74,0}}, +/* 47510 */ {(14<<2)|2,{58,74,0}}, +/* 47511 */ {(14<<2)|2,{58,74,0}}, +/* 47512 */ {(14<<2)|2,{58,75,0}}, +/* 47513 */ {(14<<2)|2,{58,75,0}}, +/* 47514 */ {(14<<2)|2,{58,75,0}}, +/* 47515 */ {(14<<2)|2,{58,75,0}}, +/* 47516 */ {(14<<2)|2,{58,76,0}}, +/* 47517 */ {(14<<2)|2,{58,76,0}}, +/* 47518 */ {(14<<2)|2,{58,76,0}}, +/* 47519 */ {(14<<2)|2,{58,76,0}}, +/* 47520 */ {(14<<2)|2,{58,77,0}}, +/* 47521 */ {(14<<2)|2,{58,77,0}}, +/* 47522 */ {(14<<2)|2,{58,77,0}}, +/* 47523 */ {(14<<2)|2,{58,77,0}}, +/* 47524 */ {(14<<2)|2,{58,78,0}}, +/* 47525 */ {(14<<2)|2,{58,78,0}}, +/* 47526 */ {(14<<2)|2,{58,78,0}}, +/* 47527 */ {(14<<2)|2,{58,78,0}}, +/* 47528 */ {(14<<2)|2,{58,79,0}}, +/* 47529 */ {(14<<2)|2,{58,79,0}}, +/* 47530 */ {(14<<2)|2,{58,79,0}}, +/* 47531 */ {(14<<2)|2,{58,79,0}}, +/* 47532 */ {(14<<2)|2,{58,80,0}}, +/* 47533 */ {(14<<2)|2,{58,80,0}}, +/* 47534 */ {(14<<2)|2,{58,80,0}}, +/* 47535 */ {(14<<2)|2,{58,80,0}}, +/* 47536 */ {(14<<2)|2,{58,81,0}}, +/* 47537 */ {(14<<2)|2,{58,81,0}}, +/* 47538 */ {(14<<2)|2,{58,81,0}}, +/* 47539 */ {(14<<2)|2,{58,81,0}}, +/* 47540 */ {(14<<2)|2,{58,82,0}}, +/* 47541 */ {(14<<2)|2,{58,82,0}}, +/* 47542 */ {(14<<2)|2,{58,82,0}}, +/* 47543 */ {(14<<2)|2,{58,82,0}}, +/* 47544 */ {(14<<2)|2,{58,83,0}}, +/* 47545 */ {(14<<2)|2,{58,83,0}}, +/* 47546 */ {(14<<2)|2,{58,83,0}}, +/* 47547 */ {(14<<2)|2,{58,83,0}}, +/* 47548 */ {(14<<2)|2,{58,84,0}}, +/* 47549 */ {(14<<2)|2,{58,84,0}}, +/* 47550 */ {(14<<2)|2,{58,84,0}}, +/* 47551 */ {(14<<2)|2,{58,84,0}}, +/* 47552 */ {(14<<2)|2,{58,85,0}}, +/* 47553 */ {(14<<2)|2,{58,85,0}}, +/* 47554 */ {(14<<2)|2,{58,85,0}}, +/* 47555 */ {(14<<2)|2,{58,85,0}}, +/* 47556 */ {(14<<2)|2,{58,86,0}}, +/* 47557 */ {(14<<2)|2,{58,86,0}}, +/* 47558 */ {(14<<2)|2,{58,86,0}}, +/* 47559 */ {(14<<2)|2,{58,86,0}}, +/* 47560 */ {(14<<2)|2,{58,87,0}}, +/* 47561 */ {(14<<2)|2,{58,87,0}}, +/* 47562 */ {(14<<2)|2,{58,87,0}}, +/* 47563 */ {(14<<2)|2,{58,87,0}}, +/* 47564 */ {(14<<2)|2,{58,89,0}}, +/* 47565 */ {(14<<2)|2,{58,89,0}}, +/* 47566 */ {(14<<2)|2,{58,89,0}}, +/* 47567 */ {(14<<2)|2,{58,89,0}}, +/* 47568 */ {(14<<2)|2,{58,106,0}}, +/* 47569 */ {(14<<2)|2,{58,106,0}}, +/* 47570 */ {(14<<2)|2,{58,106,0}}, +/* 47571 */ {(14<<2)|2,{58,106,0}}, +/* 47572 */ {(14<<2)|2,{58,107,0}}, +/* 47573 */ {(14<<2)|2,{58,107,0}}, +/* 47574 */ {(14<<2)|2,{58,107,0}}, +/* 47575 */ {(14<<2)|2,{58,107,0}}, +/* 47576 */ {(14<<2)|2,{58,113,0}}, +/* 47577 */ {(14<<2)|2,{58,113,0}}, +/* 47578 */ {(14<<2)|2,{58,113,0}}, +/* 47579 */ {(14<<2)|2,{58,113,0}}, +/* 47580 */ {(14<<2)|2,{58,118,0}}, +/* 47581 */ {(14<<2)|2,{58,118,0}}, +/* 47582 */ {(14<<2)|2,{58,118,0}}, +/* 47583 */ {(14<<2)|2,{58,118,0}}, +/* 47584 */ {(14<<2)|2,{58,119,0}}, +/* 47585 */ {(14<<2)|2,{58,119,0}}, +/* 47586 */ {(14<<2)|2,{58,119,0}}, +/* 47587 */ {(14<<2)|2,{58,119,0}}, +/* 47588 */ {(14<<2)|2,{58,120,0}}, +/* 47589 */ {(14<<2)|2,{58,120,0}}, +/* 47590 */ {(14<<2)|2,{58,120,0}}, +/* 47591 */ {(14<<2)|2,{58,120,0}}, +/* 47592 */ {(14<<2)|2,{58,121,0}}, +/* 47593 */ {(14<<2)|2,{58,121,0}}, +/* 47594 */ {(14<<2)|2,{58,121,0}}, +/* 47595 */ {(14<<2)|2,{58,121,0}}, +/* 47596 */ {(14<<2)|2,{58,122,0}}, +/* 47597 */ {(14<<2)|2,{58,122,0}}, +/* 47598 */ {(14<<2)|2,{58,122,0}}, +/* 47599 */ {(14<<2)|2,{58,122,0}}, +/* 47600 */ {(15<<2)|2,{58,38,0}}, +/* 47601 */ {(15<<2)|2,{58,38,0}}, +/* 47602 */ {(15<<2)|2,{58,42,0}}, +/* 47603 */ {(15<<2)|2,{58,42,0}}, +/* 47604 */ {(15<<2)|2,{58,44,0}}, +/* 47605 */ {(15<<2)|2,{58,44,0}}, +/* 47606 */ {(15<<2)|2,{58,59,0}}, +/* 47607 */ {(15<<2)|2,{58,59,0}}, +/* 47608 */ {(15<<2)|2,{58,88,0}}, +/* 47609 */ {(15<<2)|2,{58,88,0}}, +/* 47610 */ {(15<<2)|2,{58,90,0}}, +/* 47611 */ {(15<<2)|2,{58,90,0}}, +/* 47612 */ {(7<<2)|1,{58,0,0}}, +/* 47613 */ {(7<<2)|1,{58,0,0}}, +/* 47614 */ {(7<<2)|1,{58,0,0}}, +/* 47615 */ {(7<<2)|1,{58,0,0}}, +/* 47616 */ {(12<<2)|2,{66,48,0}}, +/* 47617 */ {(12<<2)|2,{66,48,0}}, +/* 47618 */ {(12<<2)|2,{66,48,0}}, +/* 47619 */ {(12<<2)|2,{66,48,0}}, +/* 47620 */ {(12<<2)|2,{66,48,0}}, +/* 47621 */ {(12<<2)|2,{66,48,0}}, +/* 47622 */ {(12<<2)|2,{66,48,0}}, +/* 47623 */ {(12<<2)|2,{66,48,0}}, +/* 47624 */ {(12<<2)|2,{66,48,0}}, +/* 47625 */ {(12<<2)|2,{66,48,0}}, +/* 47626 */ {(12<<2)|2,{66,48,0}}, +/* 47627 */ {(12<<2)|2,{66,48,0}}, +/* 47628 */ {(12<<2)|2,{66,48,0}}, +/* 47629 */ {(12<<2)|2,{66,48,0}}, +/* 47630 */ {(12<<2)|2,{66,48,0}}, +/* 47631 */ {(12<<2)|2,{66,48,0}}, +/* 47632 */ {(12<<2)|2,{66,49,0}}, +/* 47633 */ {(12<<2)|2,{66,49,0}}, +/* 47634 */ {(12<<2)|2,{66,49,0}}, +/* 47635 */ {(12<<2)|2,{66,49,0}}, +/* 47636 */ {(12<<2)|2,{66,49,0}}, +/* 47637 */ {(12<<2)|2,{66,49,0}}, +/* 47638 */ {(12<<2)|2,{66,49,0}}, +/* 47639 */ {(12<<2)|2,{66,49,0}}, +/* 47640 */ {(12<<2)|2,{66,49,0}}, +/* 47641 */ {(12<<2)|2,{66,49,0}}, +/* 47642 */ {(12<<2)|2,{66,49,0}}, +/* 47643 */ {(12<<2)|2,{66,49,0}}, +/* 47644 */ {(12<<2)|2,{66,49,0}}, +/* 47645 */ {(12<<2)|2,{66,49,0}}, +/* 47646 */ {(12<<2)|2,{66,49,0}}, +/* 47647 */ {(12<<2)|2,{66,49,0}}, +/* 47648 */ {(12<<2)|2,{66,50,0}}, +/* 47649 */ {(12<<2)|2,{66,50,0}}, +/* 47650 */ {(12<<2)|2,{66,50,0}}, +/* 47651 */ {(12<<2)|2,{66,50,0}}, +/* 47652 */ {(12<<2)|2,{66,50,0}}, +/* 47653 */ {(12<<2)|2,{66,50,0}}, +/* 47654 */ {(12<<2)|2,{66,50,0}}, +/* 47655 */ {(12<<2)|2,{66,50,0}}, +/* 47656 */ {(12<<2)|2,{66,50,0}}, +/* 47657 */ {(12<<2)|2,{66,50,0}}, +/* 47658 */ {(12<<2)|2,{66,50,0}}, +/* 47659 */ {(12<<2)|2,{66,50,0}}, +/* 47660 */ {(12<<2)|2,{66,50,0}}, +/* 47661 */ {(12<<2)|2,{66,50,0}}, +/* 47662 */ {(12<<2)|2,{66,50,0}}, +/* 47663 */ {(12<<2)|2,{66,50,0}}, +/* 47664 */ {(12<<2)|2,{66,97,0}}, +/* 47665 */ {(12<<2)|2,{66,97,0}}, +/* 47666 */ {(12<<2)|2,{66,97,0}}, +/* 47667 */ {(12<<2)|2,{66,97,0}}, +/* 47668 */ {(12<<2)|2,{66,97,0}}, +/* 47669 */ {(12<<2)|2,{66,97,0}}, +/* 47670 */ {(12<<2)|2,{66,97,0}}, +/* 47671 */ {(12<<2)|2,{66,97,0}}, +/* 47672 */ {(12<<2)|2,{66,97,0}}, +/* 47673 */ {(12<<2)|2,{66,97,0}}, +/* 47674 */ {(12<<2)|2,{66,97,0}}, +/* 47675 */ {(12<<2)|2,{66,97,0}}, +/* 47676 */ {(12<<2)|2,{66,97,0}}, +/* 47677 */ {(12<<2)|2,{66,97,0}}, +/* 47678 */ {(12<<2)|2,{66,97,0}}, +/* 47679 */ {(12<<2)|2,{66,97,0}}, +/* 47680 */ {(12<<2)|2,{66,99,0}}, +/* 47681 */ {(12<<2)|2,{66,99,0}}, +/* 47682 */ {(12<<2)|2,{66,99,0}}, +/* 47683 */ {(12<<2)|2,{66,99,0}}, +/* 47684 */ {(12<<2)|2,{66,99,0}}, +/* 47685 */ {(12<<2)|2,{66,99,0}}, +/* 47686 */ {(12<<2)|2,{66,99,0}}, +/* 47687 */ {(12<<2)|2,{66,99,0}}, +/* 47688 */ {(12<<2)|2,{66,99,0}}, +/* 47689 */ {(12<<2)|2,{66,99,0}}, +/* 47690 */ {(12<<2)|2,{66,99,0}}, +/* 47691 */ {(12<<2)|2,{66,99,0}}, +/* 47692 */ {(12<<2)|2,{66,99,0}}, +/* 47693 */ {(12<<2)|2,{66,99,0}}, +/* 47694 */ {(12<<2)|2,{66,99,0}}, +/* 47695 */ {(12<<2)|2,{66,99,0}}, +/* 47696 */ {(12<<2)|2,{66,101,0}}, +/* 47697 */ {(12<<2)|2,{66,101,0}}, +/* 47698 */ {(12<<2)|2,{66,101,0}}, +/* 47699 */ {(12<<2)|2,{66,101,0}}, +/* 47700 */ {(12<<2)|2,{66,101,0}}, +/* 47701 */ {(12<<2)|2,{66,101,0}}, +/* 47702 */ {(12<<2)|2,{66,101,0}}, +/* 47703 */ {(12<<2)|2,{66,101,0}}, +/* 47704 */ {(12<<2)|2,{66,101,0}}, +/* 47705 */ {(12<<2)|2,{66,101,0}}, +/* 47706 */ {(12<<2)|2,{66,101,0}}, +/* 47707 */ {(12<<2)|2,{66,101,0}}, +/* 47708 */ {(12<<2)|2,{66,101,0}}, +/* 47709 */ {(12<<2)|2,{66,101,0}}, +/* 47710 */ {(12<<2)|2,{66,101,0}}, +/* 47711 */ {(12<<2)|2,{66,101,0}}, +/* 47712 */ {(12<<2)|2,{66,105,0}}, +/* 47713 */ {(12<<2)|2,{66,105,0}}, +/* 47714 */ {(12<<2)|2,{66,105,0}}, +/* 47715 */ {(12<<2)|2,{66,105,0}}, +/* 47716 */ {(12<<2)|2,{66,105,0}}, +/* 47717 */ {(12<<2)|2,{66,105,0}}, +/* 47718 */ {(12<<2)|2,{66,105,0}}, +/* 47719 */ {(12<<2)|2,{66,105,0}}, +/* 47720 */ {(12<<2)|2,{66,105,0}}, +/* 47721 */ {(12<<2)|2,{66,105,0}}, +/* 47722 */ {(12<<2)|2,{66,105,0}}, +/* 47723 */ {(12<<2)|2,{66,105,0}}, +/* 47724 */ {(12<<2)|2,{66,105,0}}, +/* 47725 */ {(12<<2)|2,{66,105,0}}, +/* 47726 */ {(12<<2)|2,{66,105,0}}, +/* 47727 */ {(12<<2)|2,{66,105,0}}, +/* 47728 */ {(12<<2)|2,{66,111,0}}, +/* 47729 */ {(12<<2)|2,{66,111,0}}, +/* 47730 */ {(12<<2)|2,{66,111,0}}, +/* 47731 */ {(12<<2)|2,{66,111,0}}, +/* 47732 */ {(12<<2)|2,{66,111,0}}, +/* 47733 */ {(12<<2)|2,{66,111,0}}, +/* 47734 */ {(12<<2)|2,{66,111,0}}, +/* 47735 */ {(12<<2)|2,{66,111,0}}, +/* 47736 */ {(12<<2)|2,{66,111,0}}, +/* 47737 */ {(12<<2)|2,{66,111,0}}, +/* 47738 */ {(12<<2)|2,{66,111,0}}, +/* 47739 */ {(12<<2)|2,{66,111,0}}, +/* 47740 */ {(12<<2)|2,{66,111,0}}, +/* 47741 */ {(12<<2)|2,{66,111,0}}, +/* 47742 */ {(12<<2)|2,{66,111,0}}, +/* 47743 */ {(12<<2)|2,{66,111,0}}, +/* 47744 */ {(12<<2)|2,{66,115,0}}, +/* 47745 */ {(12<<2)|2,{66,115,0}}, +/* 47746 */ {(12<<2)|2,{66,115,0}}, +/* 47747 */ {(12<<2)|2,{66,115,0}}, +/* 47748 */ {(12<<2)|2,{66,115,0}}, +/* 47749 */ {(12<<2)|2,{66,115,0}}, +/* 47750 */ {(12<<2)|2,{66,115,0}}, +/* 47751 */ {(12<<2)|2,{66,115,0}}, +/* 47752 */ {(12<<2)|2,{66,115,0}}, +/* 47753 */ {(12<<2)|2,{66,115,0}}, +/* 47754 */ {(12<<2)|2,{66,115,0}}, +/* 47755 */ {(12<<2)|2,{66,115,0}}, +/* 47756 */ {(12<<2)|2,{66,115,0}}, +/* 47757 */ {(12<<2)|2,{66,115,0}}, +/* 47758 */ {(12<<2)|2,{66,115,0}}, +/* 47759 */ {(12<<2)|2,{66,115,0}}, +/* 47760 */ {(12<<2)|2,{66,116,0}}, +/* 47761 */ {(12<<2)|2,{66,116,0}}, +/* 47762 */ {(12<<2)|2,{66,116,0}}, +/* 47763 */ {(12<<2)|2,{66,116,0}}, +/* 47764 */ {(12<<2)|2,{66,116,0}}, +/* 47765 */ {(12<<2)|2,{66,116,0}}, +/* 47766 */ {(12<<2)|2,{66,116,0}}, +/* 47767 */ {(12<<2)|2,{66,116,0}}, +/* 47768 */ {(12<<2)|2,{66,116,0}}, +/* 47769 */ {(12<<2)|2,{66,116,0}}, +/* 47770 */ {(12<<2)|2,{66,116,0}}, +/* 47771 */ {(12<<2)|2,{66,116,0}}, +/* 47772 */ {(12<<2)|2,{66,116,0}}, +/* 47773 */ {(12<<2)|2,{66,116,0}}, +/* 47774 */ {(12<<2)|2,{66,116,0}}, +/* 47775 */ {(12<<2)|2,{66,116,0}}, +/* 47776 */ {(13<<2)|2,{66,32,0}}, +/* 47777 */ {(13<<2)|2,{66,32,0}}, +/* 47778 */ {(13<<2)|2,{66,32,0}}, +/* 47779 */ {(13<<2)|2,{66,32,0}}, +/* 47780 */ {(13<<2)|2,{66,32,0}}, +/* 47781 */ {(13<<2)|2,{66,32,0}}, +/* 47782 */ {(13<<2)|2,{66,32,0}}, +/* 47783 */ {(13<<2)|2,{66,32,0}}, +/* 47784 */ {(13<<2)|2,{66,37,0}}, +/* 47785 */ {(13<<2)|2,{66,37,0}}, +/* 47786 */ {(13<<2)|2,{66,37,0}}, +/* 47787 */ {(13<<2)|2,{66,37,0}}, +/* 47788 */ {(13<<2)|2,{66,37,0}}, +/* 47789 */ {(13<<2)|2,{66,37,0}}, +/* 47790 */ {(13<<2)|2,{66,37,0}}, +/* 47791 */ {(13<<2)|2,{66,37,0}}, +/* 47792 */ {(13<<2)|2,{66,45,0}}, +/* 47793 */ {(13<<2)|2,{66,45,0}}, +/* 47794 */ {(13<<2)|2,{66,45,0}}, +/* 47795 */ {(13<<2)|2,{66,45,0}}, +/* 47796 */ {(13<<2)|2,{66,45,0}}, +/* 47797 */ {(13<<2)|2,{66,45,0}}, +/* 47798 */ {(13<<2)|2,{66,45,0}}, +/* 47799 */ {(13<<2)|2,{66,45,0}}, +/* 47800 */ {(13<<2)|2,{66,46,0}}, +/* 47801 */ {(13<<2)|2,{66,46,0}}, +/* 47802 */ {(13<<2)|2,{66,46,0}}, +/* 47803 */ {(13<<2)|2,{66,46,0}}, +/* 47804 */ {(13<<2)|2,{66,46,0}}, +/* 47805 */ {(13<<2)|2,{66,46,0}}, +/* 47806 */ {(13<<2)|2,{66,46,0}}, +/* 47807 */ {(13<<2)|2,{66,46,0}}, +/* 47808 */ {(13<<2)|2,{66,47,0}}, +/* 47809 */ {(13<<2)|2,{66,47,0}}, +/* 47810 */ {(13<<2)|2,{66,47,0}}, +/* 47811 */ {(13<<2)|2,{66,47,0}}, +/* 47812 */ {(13<<2)|2,{66,47,0}}, +/* 47813 */ {(13<<2)|2,{66,47,0}}, +/* 47814 */ {(13<<2)|2,{66,47,0}}, +/* 47815 */ {(13<<2)|2,{66,47,0}}, +/* 47816 */ {(13<<2)|2,{66,51,0}}, +/* 47817 */ {(13<<2)|2,{66,51,0}}, +/* 47818 */ {(13<<2)|2,{66,51,0}}, +/* 47819 */ {(13<<2)|2,{66,51,0}}, +/* 47820 */ {(13<<2)|2,{66,51,0}}, +/* 47821 */ {(13<<2)|2,{66,51,0}}, +/* 47822 */ {(13<<2)|2,{66,51,0}}, +/* 47823 */ {(13<<2)|2,{66,51,0}}, +/* 47824 */ {(13<<2)|2,{66,52,0}}, +/* 47825 */ {(13<<2)|2,{66,52,0}}, +/* 47826 */ {(13<<2)|2,{66,52,0}}, +/* 47827 */ {(13<<2)|2,{66,52,0}}, +/* 47828 */ {(13<<2)|2,{66,52,0}}, +/* 47829 */ {(13<<2)|2,{66,52,0}}, +/* 47830 */ {(13<<2)|2,{66,52,0}}, +/* 47831 */ {(13<<2)|2,{66,52,0}}, +/* 47832 */ {(13<<2)|2,{66,53,0}}, +/* 47833 */ {(13<<2)|2,{66,53,0}}, +/* 47834 */ {(13<<2)|2,{66,53,0}}, +/* 47835 */ {(13<<2)|2,{66,53,0}}, +/* 47836 */ {(13<<2)|2,{66,53,0}}, +/* 47837 */ {(13<<2)|2,{66,53,0}}, +/* 47838 */ {(13<<2)|2,{66,53,0}}, +/* 47839 */ {(13<<2)|2,{66,53,0}}, +/* 47840 */ {(13<<2)|2,{66,54,0}}, +/* 47841 */ {(13<<2)|2,{66,54,0}}, +/* 47842 */ {(13<<2)|2,{66,54,0}}, +/* 47843 */ {(13<<2)|2,{66,54,0}}, +/* 47844 */ {(13<<2)|2,{66,54,0}}, +/* 47845 */ {(13<<2)|2,{66,54,0}}, +/* 47846 */ {(13<<2)|2,{66,54,0}}, +/* 47847 */ {(13<<2)|2,{66,54,0}}, +/* 47848 */ {(13<<2)|2,{66,55,0}}, +/* 47849 */ {(13<<2)|2,{66,55,0}}, +/* 47850 */ {(13<<2)|2,{66,55,0}}, +/* 47851 */ {(13<<2)|2,{66,55,0}}, +/* 47852 */ {(13<<2)|2,{66,55,0}}, +/* 47853 */ {(13<<2)|2,{66,55,0}}, +/* 47854 */ {(13<<2)|2,{66,55,0}}, +/* 47855 */ {(13<<2)|2,{66,55,0}}, +/* 47856 */ {(13<<2)|2,{66,56,0}}, +/* 47857 */ {(13<<2)|2,{66,56,0}}, +/* 47858 */ {(13<<2)|2,{66,56,0}}, +/* 47859 */ {(13<<2)|2,{66,56,0}}, +/* 47860 */ {(13<<2)|2,{66,56,0}}, +/* 47861 */ {(13<<2)|2,{66,56,0}}, +/* 47862 */ {(13<<2)|2,{66,56,0}}, +/* 47863 */ {(13<<2)|2,{66,56,0}}, +/* 47864 */ {(13<<2)|2,{66,57,0}}, +/* 47865 */ {(13<<2)|2,{66,57,0}}, +/* 47866 */ {(13<<2)|2,{66,57,0}}, +/* 47867 */ {(13<<2)|2,{66,57,0}}, +/* 47868 */ {(13<<2)|2,{66,57,0}}, +/* 47869 */ {(13<<2)|2,{66,57,0}}, +/* 47870 */ {(13<<2)|2,{66,57,0}}, +/* 47871 */ {(13<<2)|2,{66,57,0}}, +/* 47872 */ {(13<<2)|2,{66,61,0}}, +/* 47873 */ {(13<<2)|2,{66,61,0}}, +/* 47874 */ {(13<<2)|2,{66,61,0}}, +/* 47875 */ {(13<<2)|2,{66,61,0}}, +/* 47876 */ {(13<<2)|2,{66,61,0}}, +/* 47877 */ {(13<<2)|2,{66,61,0}}, +/* 47878 */ {(13<<2)|2,{66,61,0}}, +/* 47879 */ {(13<<2)|2,{66,61,0}}, +/* 47880 */ {(13<<2)|2,{66,65,0}}, +/* 47881 */ {(13<<2)|2,{66,65,0}}, +/* 47882 */ {(13<<2)|2,{66,65,0}}, +/* 47883 */ {(13<<2)|2,{66,65,0}}, +/* 47884 */ {(13<<2)|2,{66,65,0}}, +/* 47885 */ {(13<<2)|2,{66,65,0}}, +/* 47886 */ {(13<<2)|2,{66,65,0}}, +/* 47887 */ {(13<<2)|2,{66,65,0}}, +/* 47888 */ {(13<<2)|2,{66,95,0}}, +/* 47889 */ {(13<<2)|2,{66,95,0}}, +/* 47890 */ {(13<<2)|2,{66,95,0}}, +/* 47891 */ {(13<<2)|2,{66,95,0}}, +/* 47892 */ {(13<<2)|2,{66,95,0}}, +/* 47893 */ {(13<<2)|2,{66,95,0}}, +/* 47894 */ {(13<<2)|2,{66,95,0}}, +/* 47895 */ {(13<<2)|2,{66,95,0}}, +/* 47896 */ {(13<<2)|2,{66,98,0}}, +/* 47897 */ {(13<<2)|2,{66,98,0}}, +/* 47898 */ {(13<<2)|2,{66,98,0}}, +/* 47899 */ {(13<<2)|2,{66,98,0}}, +/* 47900 */ {(13<<2)|2,{66,98,0}}, +/* 47901 */ {(13<<2)|2,{66,98,0}}, +/* 47902 */ {(13<<2)|2,{66,98,0}}, +/* 47903 */ {(13<<2)|2,{66,98,0}}, +/* 47904 */ {(13<<2)|2,{66,100,0}}, +/* 47905 */ {(13<<2)|2,{66,100,0}}, +/* 47906 */ {(13<<2)|2,{66,100,0}}, +/* 47907 */ {(13<<2)|2,{66,100,0}}, +/* 47908 */ {(13<<2)|2,{66,100,0}}, +/* 47909 */ {(13<<2)|2,{66,100,0}}, +/* 47910 */ {(13<<2)|2,{66,100,0}}, +/* 47911 */ {(13<<2)|2,{66,100,0}}, +/* 47912 */ {(13<<2)|2,{66,102,0}}, +/* 47913 */ {(13<<2)|2,{66,102,0}}, +/* 47914 */ {(13<<2)|2,{66,102,0}}, +/* 47915 */ {(13<<2)|2,{66,102,0}}, +/* 47916 */ {(13<<2)|2,{66,102,0}}, +/* 47917 */ {(13<<2)|2,{66,102,0}}, +/* 47918 */ {(13<<2)|2,{66,102,0}}, +/* 47919 */ {(13<<2)|2,{66,102,0}}, +/* 47920 */ {(13<<2)|2,{66,103,0}}, +/* 47921 */ {(13<<2)|2,{66,103,0}}, +/* 47922 */ {(13<<2)|2,{66,103,0}}, +/* 47923 */ {(13<<2)|2,{66,103,0}}, +/* 47924 */ {(13<<2)|2,{66,103,0}}, +/* 47925 */ {(13<<2)|2,{66,103,0}}, +/* 47926 */ {(13<<2)|2,{66,103,0}}, +/* 47927 */ {(13<<2)|2,{66,103,0}}, +/* 47928 */ {(13<<2)|2,{66,104,0}}, +/* 47929 */ {(13<<2)|2,{66,104,0}}, +/* 47930 */ {(13<<2)|2,{66,104,0}}, +/* 47931 */ {(13<<2)|2,{66,104,0}}, +/* 47932 */ {(13<<2)|2,{66,104,0}}, +/* 47933 */ {(13<<2)|2,{66,104,0}}, +/* 47934 */ {(13<<2)|2,{66,104,0}}, +/* 47935 */ {(13<<2)|2,{66,104,0}}, +/* 47936 */ {(13<<2)|2,{66,108,0}}, +/* 47937 */ {(13<<2)|2,{66,108,0}}, +/* 47938 */ {(13<<2)|2,{66,108,0}}, +/* 47939 */ {(13<<2)|2,{66,108,0}}, +/* 47940 */ {(13<<2)|2,{66,108,0}}, +/* 47941 */ {(13<<2)|2,{66,108,0}}, +/* 47942 */ {(13<<2)|2,{66,108,0}}, +/* 47943 */ {(13<<2)|2,{66,108,0}}, +/* 47944 */ {(13<<2)|2,{66,109,0}}, +/* 47945 */ {(13<<2)|2,{66,109,0}}, +/* 47946 */ {(13<<2)|2,{66,109,0}}, +/* 47947 */ {(13<<2)|2,{66,109,0}}, +/* 47948 */ {(13<<2)|2,{66,109,0}}, +/* 47949 */ {(13<<2)|2,{66,109,0}}, +/* 47950 */ {(13<<2)|2,{66,109,0}}, +/* 47951 */ {(13<<2)|2,{66,109,0}}, +/* 47952 */ {(13<<2)|2,{66,110,0}}, +/* 47953 */ {(13<<2)|2,{66,110,0}}, +/* 47954 */ {(13<<2)|2,{66,110,0}}, +/* 47955 */ {(13<<2)|2,{66,110,0}}, +/* 47956 */ {(13<<2)|2,{66,110,0}}, +/* 47957 */ {(13<<2)|2,{66,110,0}}, +/* 47958 */ {(13<<2)|2,{66,110,0}}, +/* 47959 */ {(13<<2)|2,{66,110,0}}, +/* 47960 */ {(13<<2)|2,{66,112,0}}, +/* 47961 */ {(13<<2)|2,{66,112,0}}, +/* 47962 */ {(13<<2)|2,{66,112,0}}, +/* 47963 */ {(13<<2)|2,{66,112,0}}, +/* 47964 */ {(13<<2)|2,{66,112,0}}, +/* 47965 */ {(13<<2)|2,{66,112,0}}, +/* 47966 */ {(13<<2)|2,{66,112,0}}, +/* 47967 */ {(13<<2)|2,{66,112,0}}, +/* 47968 */ {(13<<2)|2,{66,114,0}}, +/* 47969 */ {(13<<2)|2,{66,114,0}}, +/* 47970 */ {(13<<2)|2,{66,114,0}}, +/* 47971 */ {(13<<2)|2,{66,114,0}}, +/* 47972 */ {(13<<2)|2,{66,114,0}}, +/* 47973 */ {(13<<2)|2,{66,114,0}}, +/* 47974 */ {(13<<2)|2,{66,114,0}}, +/* 47975 */ {(13<<2)|2,{66,114,0}}, +/* 47976 */ {(13<<2)|2,{66,117,0}}, +/* 47977 */ {(13<<2)|2,{66,117,0}}, +/* 47978 */ {(13<<2)|2,{66,117,0}}, +/* 47979 */ {(13<<2)|2,{66,117,0}}, +/* 47980 */ {(13<<2)|2,{66,117,0}}, +/* 47981 */ {(13<<2)|2,{66,117,0}}, +/* 47982 */ {(13<<2)|2,{66,117,0}}, +/* 47983 */ {(13<<2)|2,{66,117,0}}, +/* 47984 */ {(14<<2)|2,{66,58,0}}, +/* 47985 */ {(14<<2)|2,{66,58,0}}, +/* 47986 */ {(14<<2)|2,{66,58,0}}, +/* 47987 */ {(14<<2)|2,{66,58,0}}, +/* 47988 */ {(14<<2)|2,{66,66,0}}, +/* 47989 */ {(14<<2)|2,{66,66,0}}, +/* 47990 */ {(14<<2)|2,{66,66,0}}, +/* 47991 */ {(14<<2)|2,{66,66,0}}, +/* 47992 */ {(14<<2)|2,{66,67,0}}, +/* 47993 */ {(14<<2)|2,{66,67,0}}, +/* 47994 */ {(14<<2)|2,{66,67,0}}, +/* 47995 */ {(14<<2)|2,{66,67,0}}, +/* 47996 */ {(14<<2)|2,{66,68,0}}, +/* 47997 */ {(14<<2)|2,{66,68,0}}, +/* 47998 */ {(14<<2)|2,{66,68,0}}, +/* 47999 */ {(14<<2)|2,{66,68,0}}, +/* 48000 */ {(14<<2)|2,{66,69,0}}, +/* 48001 */ {(14<<2)|2,{66,69,0}}, +/* 48002 */ {(14<<2)|2,{66,69,0}}, +/* 48003 */ {(14<<2)|2,{66,69,0}}, +/* 48004 */ {(14<<2)|2,{66,70,0}}, +/* 48005 */ {(14<<2)|2,{66,70,0}}, +/* 48006 */ {(14<<2)|2,{66,70,0}}, +/* 48007 */ {(14<<2)|2,{66,70,0}}, +/* 48008 */ {(14<<2)|2,{66,71,0}}, +/* 48009 */ {(14<<2)|2,{66,71,0}}, +/* 48010 */ {(14<<2)|2,{66,71,0}}, +/* 48011 */ {(14<<2)|2,{66,71,0}}, +/* 48012 */ {(14<<2)|2,{66,72,0}}, +/* 48013 */ {(14<<2)|2,{66,72,0}}, +/* 48014 */ {(14<<2)|2,{66,72,0}}, +/* 48015 */ {(14<<2)|2,{66,72,0}}, +/* 48016 */ {(14<<2)|2,{66,73,0}}, +/* 48017 */ {(14<<2)|2,{66,73,0}}, +/* 48018 */ {(14<<2)|2,{66,73,0}}, +/* 48019 */ {(14<<2)|2,{66,73,0}}, +/* 48020 */ {(14<<2)|2,{66,74,0}}, +/* 48021 */ {(14<<2)|2,{66,74,0}}, +/* 48022 */ {(14<<2)|2,{66,74,0}}, +/* 48023 */ {(14<<2)|2,{66,74,0}}, +/* 48024 */ {(14<<2)|2,{66,75,0}}, +/* 48025 */ {(14<<2)|2,{66,75,0}}, +/* 48026 */ {(14<<2)|2,{66,75,0}}, +/* 48027 */ {(14<<2)|2,{66,75,0}}, +/* 48028 */ {(14<<2)|2,{66,76,0}}, +/* 48029 */ {(14<<2)|2,{66,76,0}}, +/* 48030 */ {(14<<2)|2,{66,76,0}}, +/* 48031 */ {(14<<2)|2,{66,76,0}}, +/* 48032 */ {(14<<2)|2,{66,77,0}}, +/* 48033 */ {(14<<2)|2,{66,77,0}}, +/* 48034 */ {(14<<2)|2,{66,77,0}}, +/* 48035 */ {(14<<2)|2,{66,77,0}}, +/* 48036 */ {(14<<2)|2,{66,78,0}}, +/* 48037 */ {(14<<2)|2,{66,78,0}}, +/* 48038 */ {(14<<2)|2,{66,78,0}}, +/* 48039 */ {(14<<2)|2,{66,78,0}}, +/* 48040 */ {(14<<2)|2,{66,79,0}}, +/* 48041 */ {(14<<2)|2,{66,79,0}}, +/* 48042 */ {(14<<2)|2,{66,79,0}}, +/* 48043 */ {(14<<2)|2,{66,79,0}}, +/* 48044 */ {(14<<2)|2,{66,80,0}}, +/* 48045 */ {(14<<2)|2,{66,80,0}}, +/* 48046 */ {(14<<2)|2,{66,80,0}}, +/* 48047 */ {(14<<2)|2,{66,80,0}}, +/* 48048 */ {(14<<2)|2,{66,81,0}}, +/* 48049 */ {(14<<2)|2,{66,81,0}}, +/* 48050 */ {(14<<2)|2,{66,81,0}}, +/* 48051 */ {(14<<2)|2,{66,81,0}}, +/* 48052 */ {(14<<2)|2,{66,82,0}}, +/* 48053 */ {(14<<2)|2,{66,82,0}}, +/* 48054 */ {(14<<2)|2,{66,82,0}}, +/* 48055 */ {(14<<2)|2,{66,82,0}}, +/* 48056 */ {(14<<2)|2,{66,83,0}}, +/* 48057 */ {(14<<2)|2,{66,83,0}}, +/* 48058 */ {(14<<2)|2,{66,83,0}}, +/* 48059 */ {(14<<2)|2,{66,83,0}}, +/* 48060 */ {(14<<2)|2,{66,84,0}}, +/* 48061 */ {(14<<2)|2,{66,84,0}}, +/* 48062 */ {(14<<2)|2,{66,84,0}}, +/* 48063 */ {(14<<2)|2,{66,84,0}}, +/* 48064 */ {(14<<2)|2,{66,85,0}}, +/* 48065 */ {(14<<2)|2,{66,85,0}}, +/* 48066 */ {(14<<2)|2,{66,85,0}}, +/* 48067 */ {(14<<2)|2,{66,85,0}}, +/* 48068 */ {(14<<2)|2,{66,86,0}}, +/* 48069 */ {(14<<2)|2,{66,86,0}}, +/* 48070 */ {(14<<2)|2,{66,86,0}}, +/* 48071 */ {(14<<2)|2,{66,86,0}}, +/* 48072 */ {(14<<2)|2,{66,87,0}}, +/* 48073 */ {(14<<2)|2,{66,87,0}}, +/* 48074 */ {(14<<2)|2,{66,87,0}}, +/* 48075 */ {(14<<2)|2,{66,87,0}}, +/* 48076 */ {(14<<2)|2,{66,89,0}}, +/* 48077 */ {(14<<2)|2,{66,89,0}}, +/* 48078 */ {(14<<2)|2,{66,89,0}}, +/* 48079 */ {(14<<2)|2,{66,89,0}}, +/* 48080 */ {(14<<2)|2,{66,106,0}}, +/* 48081 */ {(14<<2)|2,{66,106,0}}, +/* 48082 */ {(14<<2)|2,{66,106,0}}, +/* 48083 */ {(14<<2)|2,{66,106,0}}, +/* 48084 */ {(14<<2)|2,{66,107,0}}, +/* 48085 */ {(14<<2)|2,{66,107,0}}, +/* 48086 */ {(14<<2)|2,{66,107,0}}, +/* 48087 */ {(14<<2)|2,{66,107,0}}, +/* 48088 */ {(14<<2)|2,{66,113,0}}, +/* 48089 */ {(14<<2)|2,{66,113,0}}, +/* 48090 */ {(14<<2)|2,{66,113,0}}, +/* 48091 */ {(14<<2)|2,{66,113,0}}, +/* 48092 */ {(14<<2)|2,{66,118,0}}, +/* 48093 */ {(14<<2)|2,{66,118,0}}, +/* 48094 */ {(14<<2)|2,{66,118,0}}, +/* 48095 */ {(14<<2)|2,{66,118,0}}, +/* 48096 */ {(14<<2)|2,{66,119,0}}, +/* 48097 */ {(14<<2)|2,{66,119,0}}, +/* 48098 */ {(14<<2)|2,{66,119,0}}, +/* 48099 */ {(14<<2)|2,{66,119,0}}, +/* 48100 */ {(14<<2)|2,{66,120,0}}, +/* 48101 */ {(14<<2)|2,{66,120,0}}, +/* 48102 */ {(14<<2)|2,{66,120,0}}, +/* 48103 */ {(14<<2)|2,{66,120,0}}, +/* 48104 */ {(14<<2)|2,{66,121,0}}, +/* 48105 */ {(14<<2)|2,{66,121,0}}, +/* 48106 */ {(14<<2)|2,{66,121,0}}, +/* 48107 */ {(14<<2)|2,{66,121,0}}, +/* 48108 */ {(14<<2)|2,{66,122,0}}, +/* 48109 */ {(14<<2)|2,{66,122,0}}, +/* 48110 */ {(14<<2)|2,{66,122,0}}, +/* 48111 */ {(14<<2)|2,{66,122,0}}, +/* 48112 */ {(15<<2)|2,{66,38,0}}, +/* 48113 */ {(15<<2)|2,{66,38,0}}, +/* 48114 */ {(15<<2)|2,{66,42,0}}, +/* 48115 */ {(15<<2)|2,{66,42,0}}, +/* 48116 */ {(15<<2)|2,{66,44,0}}, +/* 48117 */ {(15<<2)|2,{66,44,0}}, +/* 48118 */ {(15<<2)|2,{66,59,0}}, +/* 48119 */ {(15<<2)|2,{66,59,0}}, +/* 48120 */ {(15<<2)|2,{66,88,0}}, +/* 48121 */ {(15<<2)|2,{66,88,0}}, +/* 48122 */ {(15<<2)|2,{66,90,0}}, +/* 48123 */ {(15<<2)|2,{66,90,0}}, +/* 48124 */ {(7<<2)|1,{66,0,0}}, +/* 48125 */ {(7<<2)|1,{66,0,0}}, +/* 48126 */ {(7<<2)|1,{66,0,0}}, +/* 48127 */ {(7<<2)|1,{66,0,0}}, +/* 48128 */ {(12<<2)|2,{67,48,0}}, +/* 48129 */ {(12<<2)|2,{67,48,0}}, +/* 48130 */ {(12<<2)|2,{67,48,0}}, +/* 48131 */ {(12<<2)|2,{67,48,0}}, +/* 48132 */ {(12<<2)|2,{67,48,0}}, +/* 48133 */ {(12<<2)|2,{67,48,0}}, +/* 48134 */ {(12<<2)|2,{67,48,0}}, +/* 48135 */ {(12<<2)|2,{67,48,0}}, +/* 48136 */ {(12<<2)|2,{67,48,0}}, +/* 48137 */ {(12<<2)|2,{67,48,0}}, +/* 48138 */ {(12<<2)|2,{67,48,0}}, +/* 48139 */ {(12<<2)|2,{67,48,0}}, +/* 48140 */ {(12<<2)|2,{67,48,0}}, +/* 48141 */ {(12<<2)|2,{67,48,0}}, +/* 48142 */ {(12<<2)|2,{67,48,0}}, +/* 48143 */ {(12<<2)|2,{67,48,0}}, +/* 48144 */ {(12<<2)|2,{67,49,0}}, +/* 48145 */ {(12<<2)|2,{67,49,0}}, +/* 48146 */ {(12<<2)|2,{67,49,0}}, +/* 48147 */ {(12<<2)|2,{67,49,0}}, +/* 48148 */ {(12<<2)|2,{67,49,0}}, +/* 48149 */ {(12<<2)|2,{67,49,0}}, +/* 48150 */ {(12<<2)|2,{67,49,0}}, +/* 48151 */ {(12<<2)|2,{67,49,0}}, +/* 48152 */ {(12<<2)|2,{67,49,0}}, +/* 48153 */ {(12<<2)|2,{67,49,0}}, +/* 48154 */ {(12<<2)|2,{67,49,0}}, +/* 48155 */ {(12<<2)|2,{67,49,0}}, +/* 48156 */ {(12<<2)|2,{67,49,0}}, +/* 48157 */ {(12<<2)|2,{67,49,0}}, +/* 48158 */ {(12<<2)|2,{67,49,0}}, +/* 48159 */ {(12<<2)|2,{67,49,0}}, +/* 48160 */ {(12<<2)|2,{67,50,0}}, +/* 48161 */ {(12<<2)|2,{67,50,0}}, +/* 48162 */ {(12<<2)|2,{67,50,0}}, +/* 48163 */ {(12<<2)|2,{67,50,0}}, +/* 48164 */ {(12<<2)|2,{67,50,0}}, +/* 48165 */ {(12<<2)|2,{67,50,0}}, +/* 48166 */ {(12<<2)|2,{67,50,0}}, +/* 48167 */ {(12<<2)|2,{67,50,0}}, +/* 48168 */ {(12<<2)|2,{67,50,0}}, +/* 48169 */ {(12<<2)|2,{67,50,0}}, +/* 48170 */ {(12<<2)|2,{67,50,0}}, +/* 48171 */ {(12<<2)|2,{67,50,0}}, +/* 48172 */ {(12<<2)|2,{67,50,0}}, +/* 48173 */ {(12<<2)|2,{67,50,0}}, +/* 48174 */ {(12<<2)|2,{67,50,0}}, +/* 48175 */ {(12<<2)|2,{67,50,0}}, +/* 48176 */ {(12<<2)|2,{67,97,0}}, +/* 48177 */ {(12<<2)|2,{67,97,0}}, +/* 48178 */ {(12<<2)|2,{67,97,0}}, +/* 48179 */ {(12<<2)|2,{67,97,0}}, +/* 48180 */ {(12<<2)|2,{67,97,0}}, +/* 48181 */ {(12<<2)|2,{67,97,0}}, +/* 48182 */ {(12<<2)|2,{67,97,0}}, +/* 48183 */ {(12<<2)|2,{67,97,0}}, +/* 48184 */ {(12<<2)|2,{67,97,0}}, +/* 48185 */ {(12<<2)|2,{67,97,0}}, +/* 48186 */ {(12<<2)|2,{67,97,0}}, +/* 48187 */ {(12<<2)|2,{67,97,0}}, +/* 48188 */ {(12<<2)|2,{67,97,0}}, +/* 48189 */ {(12<<2)|2,{67,97,0}}, +/* 48190 */ {(12<<2)|2,{67,97,0}}, +/* 48191 */ {(12<<2)|2,{67,97,0}}, +/* 48192 */ {(12<<2)|2,{67,99,0}}, +/* 48193 */ {(12<<2)|2,{67,99,0}}, +/* 48194 */ {(12<<2)|2,{67,99,0}}, +/* 48195 */ {(12<<2)|2,{67,99,0}}, +/* 48196 */ {(12<<2)|2,{67,99,0}}, +/* 48197 */ {(12<<2)|2,{67,99,0}}, +/* 48198 */ {(12<<2)|2,{67,99,0}}, +/* 48199 */ {(12<<2)|2,{67,99,0}}, +/* 48200 */ {(12<<2)|2,{67,99,0}}, +/* 48201 */ {(12<<2)|2,{67,99,0}}, +/* 48202 */ {(12<<2)|2,{67,99,0}}, +/* 48203 */ {(12<<2)|2,{67,99,0}}, +/* 48204 */ {(12<<2)|2,{67,99,0}}, +/* 48205 */ {(12<<2)|2,{67,99,0}}, +/* 48206 */ {(12<<2)|2,{67,99,0}}, +/* 48207 */ {(12<<2)|2,{67,99,0}}, +/* 48208 */ {(12<<2)|2,{67,101,0}}, +/* 48209 */ {(12<<2)|2,{67,101,0}}, +/* 48210 */ {(12<<2)|2,{67,101,0}}, +/* 48211 */ {(12<<2)|2,{67,101,0}}, +/* 48212 */ {(12<<2)|2,{67,101,0}}, +/* 48213 */ {(12<<2)|2,{67,101,0}}, +/* 48214 */ {(12<<2)|2,{67,101,0}}, +/* 48215 */ {(12<<2)|2,{67,101,0}}, +/* 48216 */ {(12<<2)|2,{67,101,0}}, +/* 48217 */ {(12<<2)|2,{67,101,0}}, +/* 48218 */ {(12<<2)|2,{67,101,0}}, +/* 48219 */ {(12<<2)|2,{67,101,0}}, +/* 48220 */ {(12<<2)|2,{67,101,0}}, +/* 48221 */ {(12<<2)|2,{67,101,0}}, +/* 48222 */ {(12<<2)|2,{67,101,0}}, +/* 48223 */ {(12<<2)|2,{67,101,0}}, +/* 48224 */ {(12<<2)|2,{67,105,0}}, +/* 48225 */ {(12<<2)|2,{67,105,0}}, +/* 48226 */ {(12<<2)|2,{67,105,0}}, +/* 48227 */ {(12<<2)|2,{67,105,0}}, +/* 48228 */ {(12<<2)|2,{67,105,0}}, +/* 48229 */ {(12<<2)|2,{67,105,0}}, +/* 48230 */ {(12<<2)|2,{67,105,0}}, +/* 48231 */ {(12<<2)|2,{67,105,0}}, +/* 48232 */ {(12<<2)|2,{67,105,0}}, +/* 48233 */ {(12<<2)|2,{67,105,0}}, +/* 48234 */ {(12<<2)|2,{67,105,0}}, +/* 48235 */ {(12<<2)|2,{67,105,0}}, +/* 48236 */ {(12<<2)|2,{67,105,0}}, +/* 48237 */ {(12<<2)|2,{67,105,0}}, +/* 48238 */ {(12<<2)|2,{67,105,0}}, +/* 48239 */ {(12<<2)|2,{67,105,0}}, +/* 48240 */ {(12<<2)|2,{67,111,0}}, +/* 48241 */ {(12<<2)|2,{67,111,0}}, +/* 48242 */ {(12<<2)|2,{67,111,0}}, +/* 48243 */ {(12<<2)|2,{67,111,0}}, +/* 48244 */ {(12<<2)|2,{67,111,0}}, +/* 48245 */ {(12<<2)|2,{67,111,0}}, +/* 48246 */ {(12<<2)|2,{67,111,0}}, +/* 48247 */ {(12<<2)|2,{67,111,0}}, +/* 48248 */ {(12<<2)|2,{67,111,0}}, +/* 48249 */ {(12<<2)|2,{67,111,0}}, +/* 48250 */ {(12<<2)|2,{67,111,0}}, +/* 48251 */ {(12<<2)|2,{67,111,0}}, +/* 48252 */ {(12<<2)|2,{67,111,0}}, +/* 48253 */ {(12<<2)|2,{67,111,0}}, +/* 48254 */ {(12<<2)|2,{67,111,0}}, +/* 48255 */ {(12<<2)|2,{67,111,0}}, +/* 48256 */ {(12<<2)|2,{67,115,0}}, +/* 48257 */ {(12<<2)|2,{67,115,0}}, +/* 48258 */ {(12<<2)|2,{67,115,0}}, +/* 48259 */ {(12<<2)|2,{67,115,0}}, +/* 48260 */ {(12<<2)|2,{67,115,0}}, +/* 48261 */ {(12<<2)|2,{67,115,0}}, +/* 48262 */ {(12<<2)|2,{67,115,0}}, +/* 48263 */ {(12<<2)|2,{67,115,0}}, +/* 48264 */ {(12<<2)|2,{67,115,0}}, +/* 48265 */ {(12<<2)|2,{67,115,0}}, +/* 48266 */ {(12<<2)|2,{67,115,0}}, +/* 48267 */ {(12<<2)|2,{67,115,0}}, +/* 48268 */ {(12<<2)|2,{67,115,0}}, +/* 48269 */ {(12<<2)|2,{67,115,0}}, +/* 48270 */ {(12<<2)|2,{67,115,0}}, +/* 48271 */ {(12<<2)|2,{67,115,0}}, +/* 48272 */ {(12<<2)|2,{67,116,0}}, +/* 48273 */ {(12<<2)|2,{67,116,0}}, +/* 48274 */ {(12<<2)|2,{67,116,0}}, +/* 48275 */ {(12<<2)|2,{67,116,0}}, +/* 48276 */ {(12<<2)|2,{67,116,0}}, +/* 48277 */ {(12<<2)|2,{67,116,0}}, +/* 48278 */ {(12<<2)|2,{67,116,0}}, +/* 48279 */ {(12<<2)|2,{67,116,0}}, +/* 48280 */ {(12<<2)|2,{67,116,0}}, +/* 48281 */ {(12<<2)|2,{67,116,0}}, +/* 48282 */ {(12<<2)|2,{67,116,0}}, +/* 48283 */ {(12<<2)|2,{67,116,0}}, +/* 48284 */ {(12<<2)|2,{67,116,0}}, +/* 48285 */ {(12<<2)|2,{67,116,0}}, +/* 48286 */ {(12<<2)|2,{67,116,0}}, +/* 48287 */ {(12<<2)|2,{67,116,0}}, +/* 48288 */ {(13<<2)|2,{67,32,0}}, +/* 48289 */ {(13<<2)|2,{67,32,0}}, +/* 48290 */ {(13<<2)|2,{67,32,0}}, +/* 48291 */ {(13<<2)|2,{67,32,0}}, +/* 48292 */ {(13<<2)|2,{67,32,0}}, +/* 48293 */ {(13<<2)|2,{67,32,0}}, +/* 48294 */ {(13<<2)|2,{67,32,0}}, +/* 48295 */ {(13<<2)|2,{67,32,0}}, +/* 48296 */ {(13<<2)|2,{67,37,0}}, +/* 48297 */ {(13<<2)|2,{67,37,0}}, +/* 48298 */ {(13<<2)|2,{67,37,0}}, +/* 48299 */ {(13<<2)|2,{67,37,0}}, +/* 48300 */ {(13<<2)|2,{67,37,0}}, +/* 48301 */ {(13<<2)|2,{67,37,0}}, +/* 48302 */ {(13<<2)|2,{67,37,0}}, +/* 48303 */ {(13<<2)|2,{67,37,0}}, +/* 48304 */ {(13<<2)|2,{67,45,0}}, +/* 48305 */ {(13<<2)|2,{67,45,0}}, +/* 48306 */ {(13<<2)|2,{67,45,0}}, +/* 48307 */ {(13<<2)|2,{67,45,0}}, +/* 48308 */ {(13<<2)|2,{67,45,0}}, +/* 48309 */ {(13<<2)|2,{67,45,0}}, +/* 48310 */ {(13<<2)|2,{67,45,0}}, +/* 48311 */ {(13<<2)|2,{67,45,0}}, +/* 48312 */ {(13<<2)|2,{67,46,0}}, +/* 48313 */ {(13<<2)|2,{67,46,0}}, +/* 48314 */ {(13<<2)|2,{67,46,0}}, +/* 48315 */ {(13<<2)|2,{67,46,0}}, +/* 48316 */ {(13<<2)|2,{67,46,0}}, +/* 48317 */ {(13<<2)|2,{67,46,0}}, +/* 48318 */ {(13<<2)|2,{67,46,0}}, +/* 48319 */ {(13<<2)|2,{67,46,0}}, +/* 48320 */ {(13<<2)|2,{67,47,0}}, +/* 48321 */ {(13<<2)|2,{67,47,0}}, +/* 48322 */ {(13<<2)|2,{67,47,0}}, +/* 48323 */ {(13<<2)|2,{67,47,0}}, +/* 48324 */ {(13<<2)|2,{67,47,0}}, +/* 48325 */ {(13<<2)|2,{67,47,0}}, +/* 48326 */ {(13<<2)|2,{67,47,0}}, +/* 48327 */ {(13<<2)|2,{67,47,0}}, +/* 48328 */ {(13<<2)|2,{67,51,0}}, +/* 48329 */ {(13<<2)|2,{67,51,0}}, +/* 48330 */ {(13<<2)|2,{67,51,0}}, +/* 48331 */ {(13<<2)|2,{67,51,0}}, +/* 48332 */ {(13<<2)|2,{67,51,0}}, +/* 48333 */ {(13<<2)|2,{67,51,0}}, +/* 48334 */ {(13<<2)|2,{67,51,0}}, +/* 48335 */ {(13<<2)|2,{67,51,0}}, +/* 48336 */ {(13<<2)|2,{67,52,0}}, +/* 48337 */ {(13<<2)|2,{67,52,0}}, +/* 48338 */ {(13<<2)|2,{67,52,0}}, +/* 48339 */ {(13<<2)|2,{67,52,0}}, +/* 48340 */ {(13<<2)|2,{67,52,0}}, +/* 48341 */ {(13<<2)|2,{67,52,0}}, +/* 48342 */ {(13<<2)|2,{67,52,0}}, +/* 48343 */ {(13<<2)|2,{67,52,0}}, +/* 48344 */ {(13<<2)|2,{67,53,0}}, +/* 48345 */ {(13<<2)|2,{67,53,0}}, +/* 48346 */ {(13<<2)|2,{67,53,0}}, +/* 48347 */ {(13<<2)|2,{67,53,0}}, +/* 48348 */ {(13<<2)|2,{67,53,0}}, +/* 48349 */ {(13<<2)|2,{67,53,0}}, +/* 48350 */ {(13<<2)|2,{67,53,0}}, +/* 48351 */ {(13<<2)|2,{67,53,0}}, +/* 48352 */ {(13<<2)|2,{67,54,0}}, +/* 48353 */ {(13<<2)|2,{67,54,0}}, +/* 48354 */ {(13<<2)|2,{67,54,0}}, +/* 48355 */ {(13<<2)|2,{67,54,0}}, +/* 48356 */ {(13<<2)|2,{67,54,0}}, +/* 48357 */ {(13<<2)|2,{67,54,0}}, +/* 48358 */ {(13<<2)|2,{67,54,0}}, +/* 48359 */ {(13<<2)|2,{67,54,0}}, +/* 48360 */ {(13<<2)|2,{67,55,0}}, +/* 48361 */ {(13<<2)|2,{67,55,0}}, +/* 48362 */ {(13<<2)|2,{67,55,0}}, +/* 48363 */ {(13<<2)|2,{67,55,0}}, +/* 48364 */ {(13<<2)|2,{67,55,0}}, +/* 48365 */ {(13<<2)|2,{67,55,0}}, +/* 48366 */ {(13<<2)|2,{67,55,0}}, +/* 48367 */ {(13<<2)|2,{67,55,0}}, +/* 48368 */ {(13<<2)|2,{67,56,0}}, +/* 48369 */ {(13<<2)|2,{67,56,0}}, +/* 48370 */ {(13<<2)|2,{67,56,0}}, +/* 48371 */ {(13<<2)|2,{67,56,0}}, +/* 48372 */ {(13<<2)|2,{67,56,0}}, +/* 48373 */ {(13<<2)|2,{67,56,0}}, +/* 48374 */ {(13<<2)|2,{67,56,0}}, +/* 48375 */ {(13<<2)|2,{67,56,0}}, +/* 48376 */ {(13<<2)|2,{67,57,0}}, +/* 48377 */ {(13<<2)|2,{67,57,0}}, +/* 48378 */ {(13<<2)|2,{67,57,0}}, +/* 48379 */ {(13<<2)|2,{67,57,0}}, +/* 48380 */ {(13<<2)|2,{67,57,0}}, +/* 48381 */ {(13<<2)|2,{67,57,0}}, +/* 48382 */ {(13<<2)|2,{67,57,0}}, +/* 48383 */ {(13<<2)|2,{67,57,0}}, +/* 48384 */ {(13<<2)|2,{67,61,0}}, +/* 48385 */ {(13<<2)|2,{67,61,0}}, +/* 48386 */ {(13<<2)|2,{67,61,0}}, +/* 48387 */ {(13<<2)|2,{67,61,0}}, +/* 48388 */ {(13<<2)|2,{67,61,0}}, +/* 48389 */ {(13<<2)|2,{67,61,0}}, +/* 48390 */ {(13<<2)|2,{67,61,0}}, +/* 48391 */ {(13<<2)|2,{67,61,0}}, +/* 48392 */ {(13<<2)|2,{67,65,0}}, +/* 48393 */ {(13<<2)|2,{67,65,0}}, +/* 48394 */ {(13<<2)|2,{67,65,0}}, +/* 48395 */ {(13<<2)|2,{67,65,0}}, +/* 48396 */ {(13<<2)|2,{67,65,0}}, +/* 48397 */ {(13<<2)|2,{67,65,0}}, +/* 48398 */ {(13<<2)|2,{67,65,0}}, +/* 48399 */ {(13<<2)|2,{67,65,0}}, +/* 48400 */ {(13<<2)|2,{67,95,0}}, +/* 48401 */ {(13<<2)|2,{67,95,0}}, +/* 48402 */ {(13<<2)|2,{67,95,0}}, +/* 48403 */ {(13<<2)|2,{67,95,0}}, +/* 48404 */ {(13<<2)|2,{67,95,0}}, +/* 48405 */ {(13<<2)|2,{67,95,0}}, +/* 48406 */ {(13<<2)|2,{67,95,0}}, +/* 48407 */ {(13<<2)|2,{67,95,0}}, +/* 48408 */ {(13<<2)|2,{67,98,0}}, +/* 48409 */ {(13<<2)|2,{67,98,0}}, +/* 48410 */ {(13<<2)|2,{67,98,0}}, +/* 48411 */ {(13<<2)|2,{67,98,0}}, +/* 48412 */ {(13<<2)|2,{67,98,0}}, +/* 48413 */ {(13<<2)|2,{67,98,0}}, +/* 48414 */ {(13<<2)|2,{67,98,0}}, +/* 48415 */ {(13<<2)|2,{67,98,0}}, +/* 48416 */ {(13<<2)|2,{67,100,0}}, +/* 48417 */ {(13<<2)|2,{67,100,0}}, +/* 48418 */ {(13<<2)|2,{67,100,0}}, +/* 48419 */ {(13<<2)|2,{67,100,0}}, +/* 48420 */ {(13<<2)|2,{67,100,0}}, +/* 48421 */ {(13<<2)|2,{67,100,0}}, +/* 48422 */ {(13<<2)|2,{67,100,0}}, +/* 48423 */ {(13<<2)|2,{67,100,0}}, +/* 48424 */ {(13<<2)|2,{67,102,0}}, +/* 48425 */ {(13<<2)|2,{67,102,0}}, +/* 48426 */ {(13<<2)|2,{67,102,0}}, +/* 48427 */ {(13<<2)|2,{67,102,0}}, +/* 48428 */ {(13<<2)|2,{67,102,0}}, +/* 48429 */ {(13<<2)|2,{67,102,0}}, +/* 48430 */ {(13<<2)|2,{67,102,0}}, +/* 48431 */ {(13<<2)|2,{67,102,0}}, +/* 48432 */ {(13<<2)|2,{67,103,0}}, +/* 48433 */ {(13<<2)|2,{67,103,0}}, +/* 48434 */ {(13<<2)|2,{67,103,0}}, +/* 48435 */ {(13<<2)|2,{67,103,0}}, +/* 48436 */ {(13<<2)|2,{67,103,0}}, +/* 48437 */ {(13<<2)|2,{67,103,0}}, +/* 48438 */ {(13<<2)|2,{67,103,0}}, +/* 48439 */ {(13<<2)|2,{67,103,0}}, +/* 48440 */ {(13<<2)|2,{67,104,0}}, +/* 48441 */ {(13<<2)|2,{67,104,0}}, +/* 48442 */ {(13<<2)|2,{67,104,0}}, +/* 48443 */ {(13<<2)|2,{67,104,0}}, +/* 48444 */ {(13<<2)|2,{67,104,0}}, +/* 48445 */ {(13<<2)|2,{67,104,0}}, +/* 48446 */ {(13<<2)|2,{67,104,0}}, +/* 48447 */ {(13<<2)|2,{67,104,0}}, +/* 48448 */ {(13<<2)|2,{67,108,0}}, +/* 48449 */ {(13<<2)|2,{67,108,0}}, +/* 48450 */ {(13<<2)|2,{67,108,0}}, +/* 48451 */ {(13<<2)|2,{67,108,0}}, +/* 48452 */ {(13<<2)|2,{67,108,0}}, +/* 48453 */ {(13<<2)|2,{67,108,0}}, +/* 48454 */ {(13<<2)|2,{67,108,0}}, +/* 48455 */ {(13<<2)|2,{67,108,0}}, +/* 48456 */ {(13<<2)|2,{67,109,0}}, +/* 48457 */ {(13<<2)|2,{67,109,0}}, +/* 48458 */ {(13<<2)|2,{67,109,0}}, +/* 48459 */ {(13<<2)|2,{67,109,0}}, +/* 48460 */ {(13<<2)|2,{67,109,0}}, +/* 48461 */ {(13<<2)|2,{67,109,0}}, +/* 48462 */ {(13<<2)|2,{67,109,0}}, +/* 48463 */ {(13<<2)|2,{67,109,0}}, +/* 48464 */ {(13<<2)|2,{67,110,0}}, +/* 48465 */ {(13<<2)|2,{67,110,0}}, +/* 48466 */ {(13<<2)|2,{67,110,0}}, +/* 48467 */ {(13<<2)|2,{67,110,0}}, +/* 48468 */ {(13<<2)|2,{67,110,0}}, +/* 48469 */ {(13<<2)|2,{67,110,0}}, +/* 48470 */ {(13<<2)|2,{67,110,0}}, +/* 48471 */ {(13<<2)|2,{67,110,0}}, +/* 48472 */ {(13<<2)|2,{67,112,0}}, +/* 48473 */ {(13<<2)|2,{67,112,0}}, +/* 48474 */ {(13<<2)|2,{67,112,0}}, +/* 48475 */ {(13<<2)|2,{67,112,0}}, +/* 48476 */ {(13<<2)|2,{67,112,0}}, +/* 48477 */ {(13<<2)|2,{67,112,0}}, +/* 48478 */ {(13<<2)|2,{67,112,0}}, +/* 48479 */ {(13<<2)|2,{67,112,0}}, +/* 48480 */ {(13<<2)|2,{67,114,0}}, +/* 48481 */ {(13<<2)|2,{67,114,0}}, +/* 48482 */ {(13<<2)|2,{67,114,0}}, +/* 48483 */ {(13<<2)|2,{67,114,0}}, +/* 48484 */ {(13<<2)|2,{67,114,0}}, +/* 48485 */ {(13<<2)|2,{67,114,0}}, +/* 48486 */ {(13<<2)|2,{67,114,0}}, +/* 48487 */ {(13<<2)|2,{67,114,0}}, +/* 48488 */ {(13<<2)|2,{67,117,0}}, +/* 48489 */ {(13<<2)|2,{67,117,0}}, +/* 48490 */ {(13<<2)|2,{67,117,0}}, +/* 48491 */ {(13<<2)|2,{67,117,0}}, +/* 48492 */ {(13<<2)|2,{67,117,0}}, +/* 48493 */ {(13<<2)|2,{67,117,0}}, +/* 48494 */ {(13<<2)|2,{67,117,0}}, +/* 48495 */ {(13<<2)|2,{67,117,0}}, +/* 48496 */ {(14<<2)|2,{67,58,0}}, +/* 48497 */ {(14<<2)|2,{67,58,0}}, +/* 48498 */ {(14<<2)|2,{67,58,0}}, +/* 48499 */ {(14<<2)|2,{67,58,0}}, +/* 48500 */ {(14<<2)|2,{67,66,0}}, +/* 48501 */ {(14<<2)|2,{67,66,0}}, +/* 48502 */ {(14<<2)|2,{67,66,0}}, +/* 48503 */ {(14<<2)|2,{67,66,0}}, +/* 48504 */ {(14<<2)|2,{67,67,0}}, +/* 48505 */ {(14<<2)|2,{67,67,0}}, +/* 48506 */ {(14<<2)|2,{67,67,0}}, +/* 48507 */ {(14<<2)|2,{67,67,0}}, +/* 48508 */ {(14<<2)|2,{67,68,0}}, +/* 48509 */ {(14<<2)|2,{67,68,0}}, +/* 48510 */ {(14<<2)|2,{67,68,0}}, +/* 48511 */ {(14<<2)|2,{67,68,0}}, +/* 48512 */ {(14<<2)|2,{67,69,0}}, +/* 48513 */ {(14<<2)|2,{67,69,0}}, +/* 48514 */ {(14<<2)|2,{67,69,0}}, +/* 48515 */ {(14<<2)|2,{67,69,0}}, +/* 48516 */ {(14<<2)|2,{67,70,0}}, +/* 48517 */ {(14<<2)|2,{67,70,0}}, +/* 48518 */ {(14<<2)|2,{67,70,0}}, +/* 48519 */ {(14<<2)|2,{67,70,0}}, +/* 48520 */ {(14<<2)|2,{67,71,0}}, +/* 48521 */ {(14<<2)|2,{67,71,0}}, +/* 48522 */ {(14<<2)|2,{67,71,0}}, +/* 48523 */ {(14<<2)|2,{67,71,0}}, +/* 48524 */ {(14<<2)|2,{67,72,0}}, +/* 48525 */ {(14<<2)|2,{67,72,0}}, +/* 48526 */ {(14<<2)|2,{67,72,0}}, +/* 48527 */ {(14<<2)|2,{67,72,0}}, +/* 48528 */ {(14<<2)|2,{67,73,0}}, +/* 48529 */ {(14<<2)|2,{67,73,0}}, +/* 48530 */ {(14<<2)|2,{67,73,0}}, +/* 48531 */ {(14<<2)|2,{67,73,0}}, +/* 48532 */ {(14<<2)|2,{67,74,0}}, +/* 48533 */ {(14<<2)|2,{67,74,0}}, +/* 48534 */ {(14<<2)|2,{67,74,0}}, +/* 48535 */ {(14<<2)|2,{67,74,0}}, +/* 48536 */ {(14<<2)|2,{67,75,0}}, +/* 48537 */ {(14<<2)|2,{67,75,0}}, +/* 48538 */ {(14<<2)|2,{67,75,0}}, +/* 48539 */ {(14<<2)|2,{67,75,0}}, +/* 48540 */ {(14<<2)|2,{67,76,0}}, +/* 48541 */ {(14<<2)|2,{67,76,0}}, +/* 48542 */ {(14<<2)|2,{67,76,0}}, +/* 48543 */ {(14<<2)|2,{67,76,0}}, +/* 48544 */ {(14<<2)|2,{67,77,0}}, +/* 48545 */ {(14<<2)|2,{67,77,0}}, +/* 48546 */ {(14<<2)|2,{67,77,0}}, +/* 48547 */ {(14<<2)|2,{67,77,0}}, +/* 48548 */ {(14<<2)|2,{67,78,0}}, +/* 48549 */ {(14<<2)|2,{67,78,0}}, +/* 48550 */ {(14<<2)|2,{67,78,0}}, +/* 48551 */ {(14<<2)|2,{67,78,0}}, +/* 48552 */ {(14<<2)|2,{67,79,0}}, +/* 48553 */ {(14<<2)|2,{67,79,0}}, +/* 48554 */ {(14<<2)|2,{67,79,0}}, +/* 48555 */ {(14<<2)|2,{67,79,0}}, +/* 48556 */ {(14<<2)|2,{67,80,0}}, +/* 48557 */ {(14<<2)|2,{67,80,0}}, +/* 48558 */ {(14<<2)|2,{67,80,0}}, +/* 48559 */ {(14<<2)|2,{67,80,0}}, +/* 48560 */ {(14<<2)|2,{67,81,0}}, +/* 48561 */ {(14<<2)|2,{67,81,0}}, +/* 48562 */ {(14<<2)|2,{67,81,0}}, +/* 48563 */ {(14<<2)|2,{67,81,0}}, +/* 48564 */ {(14<<2)|2,{67,82,0}}, +/* 48565 */ {(14<<2)|2,{67,82,0}}, +/* 48566 */ {(14<<2)|2,{67,82,0}}, +/* 48567 */ {(14<<2)|2,{67,82,0}}, +/* 48568 */ {(14<<2)|2,{67,83,0}}, +/* 48569 */ {(14<<2)|2,{67,83,0}}, +/* 48570 */ {(14<<2)|2,{67,83,0}}, +/* 48571 */ {(14<<2)|2,{67,83,0}}, +/* 48572 */ {(14<<2)|2,{67,84,0}}, +/* 48573 */ {(14<<2)|2,{67,84,0}}, +/* 48574 */ {(14<<2)|2,{67,84,0}}, +/* 48575 */ {(14<<2)|2,{67,84,0}}, +/* 48576 */ {(14<<2)|2,{67,85,0}}, +/* 48577 */ {(14<<2)|2,{67,85,0}}, +/* 48578 */ {(14<<2)|2,{67,85,0}}, +/* 48579 */ {(14<<2)|2,{67,85,0}}, +/* 48580 */ {(14<<2)|2,{67,86,0}}, +/* 48581 */ {(14<<2)|2,{67,86,0}}, +/* 48582 */ {(14<<2)|2,{67,86,0}}, +/* 48583 */ {(14<<2)|2,{67,86,0}}, +/* 48584 */ {(14<<2)|2,{67,87,0}}, +/* 48585 */ {(14<<2)|2,{67,87,0}}, +/* 48586 */ {(14<<2)|2,{67,87,0}}, +/* 48587 */ {(14<<2)|2,{67,87,0}}, +/* 48588 */ {(14<<2)|2,{67,89,0}}, +/* 48589 */ {(14<<2)|2,{67,89,0}}, +/* 48590 */ {(14<<2)|2,{67,89,0}}, +/* 48591 */ {(14<<2)|2,{67,89,0}}, +/* 48592 */ {(14<<2)|2,{67,106,0}}, +/* 48593 */ {(14<<2)|2,{67,106,0}}, +/* 48594 */ {(14<<2)|2,{67,106,0}}, +/* 48595 */ {(14<<2)|2,{67,106,0}}, +/* 48596 */ {(14<<2)|2,{67,107,0}}, +/* 48597 */ {(14<<2)|2,{67,107,0}}, +/* 48598 */ {(14<<2)|2,{67,107,0}}, +/* 48599 */ {(14<<2)|2,{67,107,0}}, +/* 48600 */ {(14<<2)|2,{67,113,0}}, +/* 48601 */ {(14<<2)|2,{67,113,0}}, +/* 48602 */ {(14<<2)|2,{67,113,0}}, +/* 48603 */ {(14<<2)|2,{67,113,0}}, +/* 48604 */ {(14<<2)|2,{67,118,0}}, +/* 48605 */ {(14<<2)|2,{67,118,0}}, +/* 48606 */ {(14<<2)|2,{67,118,0}}, +/* 48607 */ {(14<<2)|2,{67,118,0}}, +/* 48608 */ {(14<<2)|2,{67,119,0}}, +/* 48609 */ {(14<<2)|2,{67,119,0}}, +/* 48610 */ {(14<<2)|2,{67,119,0}}, +/* 48611 */ {(14<<2)|2,{67,119,0}}, +/* 48612 */ {(14<<2)|2,{67,120,0}}, +/* 48613 */ {(14<<2)|2,{67,120,0}}, +/* 48614 */ {(14<<2)|2,{67,120,0}}, +/* 48615 */ {(14<<2)|2,{67,120,0}}, +/* 48616 */ {(14<<2)|2,{67,121,0}}, +/* 48617 */ {(14<<2)|2,{67,121,0}}, +/* 48618 */ {(14<<2)|2,{67,121,0}}, +/* 48619 */ {(14<<2)|2,{67,121,0}}, +/* 48620 */ {(14<<2)|2,{67,122,0}}, +/* 48621 */ {(14<<2)|2,{67,122,0}}, +/* 48622 */ {(14<<2)|2,{67,122,0}}, +/* 48623 */ {(14<<2)|2,{67,122,0}}, +/* 48624 */ {(15<<2)|2,{67,38,0}}, +/* 48625 */ {(15<<2)|2,{67,38,0}}, +/* 48626 */ {(15<<2)|2,{67,42,0}}, +/* 48627 */ {(15<<2)|2,{67,42,0}}, +/* 48628 */ {(15<<2)|2,{67,44,0}}, +/* 48629 */ {(15<<2)|2,{67,44,0}}, +/* 48630 */ {(15<<2)|2,{67,59,0}}, +/* 48631 */ {(15<<2)|2,{67,59,0}}, +/* 48632 */ {(15<<2)|2,{67,88,0}}, +/* 48633 */ {(15<<2)|2,{67,88,0}}, +/* 48634 */ {(15<<2)|2,{67,90,0}}, +/* 48635 */ {(15<<2)|2,{67,90,0}}, +/* 48636 */ {(7<<2)|1,{67,0,0}}, +/* 48637 */ {(7<<2)|1,{67,0,0}}, +/* 48638 */ {(7<<2)|1,{67,0,0}}, +/* 48639 */ {(7<<2)|1,{67,0,0}}, +/* 48640 */ {(12<<2)|2,{68,48,0}}, +/* 48641 */ {(12<<2)|2,{68,48,0}}, +/* 48642 */ {(12<<2)|2,{68,48,0}}, +/* 48643 */ {(12<<2)|2,{68,48,0}}, +/* 48644 */ {(12<<2)|2,{68,48,0}}, +/* 48645 */ {(12<<2)|2,{68,48,0}}, +/* 48646 */ {(12<<2)|2,{68,48,0}}, +/* 48647 */ {(12<<2)|2,{68,48,0}}, +/* 48648 */ {(12<<2)|2,{68,48,0}}, +/* 48649 */ {(12<<2)|2,{68,48,0}}, +/* 48650 */ {(12<<2)|2,{68,48,0}}, +/* 48651 */ {(12<<2)|2,{68,48,0}}, +/* 48652 */ {(12<<2)|2,{68,48,0}}, +/* 48653 */ {(12<<2)|2,{68,48,0}}, +/* 48654 */ {(12<<2)|2,{68,48,0}}, +/* 48655 */ {(12<<2)|2,{68,48,0}}, +/* 48656 */ {(12<<2)|2,{68,49,0}}, +/* 48657 */ {(12<<2)|2,{68,49,0}}, +/* 48658 */ {(12<<2)|2,{68,49,0}}, +/* 48659 */ {(12<<2)|2,{68,49,0}}, +/* 48660 */ {(12<<2)|2,{68,49,0}}, +/* 48661 */ {(12<<2)|2,{68,49,0}}, +/* 48662 */ {(12<<2)|2,{68,49,0}}, +/* 48663 */ {(12<<2)|2,{68,49,0}}, +/* 48664 */ {(12<<2)|2,{68,49,0}}, +/* 48665 */ {(12<<2)|2,{68,49,0}}, +/* 48666 */ {(12<<2)|2,{68,49,0}}, +/* 48667 */ {(12<<2)|2,{68,49,0}}, +/* 48668 */ {(12<<2)|2,{68,49,0}}, +/* 48669 */ {(12<<2)|2,{68,49,0}}, +/* 48670 */ {(12<<2)|2,{68,49,0}}, +/* 48671 */ {(12<<2)|2,{68,49,0}}, +/* 48672 */ {(12<<2)|2,{68,50,0}}, +/* 48673 */ {(12<<2)|2,{68,50,0}}, +/* 48674 */ {(12<<2)|2,{68,50,0}}, +/* 48675 */ {(12<<2)|2,{68,50,0}}, +/* 48676 */ {(12<<2)|2,{68,50,0}}, +/* 48677 */ {(12<<2)|2,{68,50,0}}, +/* 48678 */ {(12<<2)|2,{68,50,0}}, +/* 48679 */ {(12<<2)|2,{68,50,0}}, +/* 48680 */ {(12<<2)|2,{68,50,0}}, +/* 48681 */ {(12<<2)|2,{68,50,0}}, +/* 48682 */ {(12<<2)|2,{68,50,0}}, +/* 48683 */ {(12<<2)|2,{68,50,0}}, +/* 48684 */ {(12<<2)|2,{68,50,0}}, +/* 48685 */ {(12<<2)|2,{68,50,0}}, +/* 48686 */ {(12<<2)|2,{68,50,0}}, +/* 48687 */ {(12<<2)|2,{68,50,0}}, +/* 48688 */ {(12<<2)|2,{68,97,0}}, +/* 48689 */ {(12<<2)|2,{68,97,0}}, +/* 48690 */ {(12<<2)|2,{68,97,0}}, +/* 48691 */ {(12<<2)|2,{68,97,0}}, +/* 48692 */ {(12<<2)|2,{68,97,0}}, +/* 48693 */ {(12<<2)|2,{68,97,0}}, +/* 48694 */ {(12<<2)|2,{68,97,0}}, +/* 48695 */ {(12<<2)|2,{68,97,0}}, +/* 48696 */ {(12<<2)|2,{68,97,0}}, +/* 48697 */ {(12<<2)|2,{68,97,0}}, +/* 48698 */ {(12<<2)|2,{68,97,0}}, +/* 48699 */ {(12<<2)|2,{68,97,0}}, +/* 48700 */ {(12<<2)|2,{68,97,0}}, +/* 48701 */ {(12<<2)|2,{68,97,0}}, +/* 48702 */ {(12<<2)|2,{68,97,0}}, +/* 48703 */ {(12<<2)|2,{68,97,0}}, +/* 48704 */ {(12<<2)|2,{68,99,0}}, +/* 48705 */ {(12<<2)|2,{68,99,0}}, +/* 48706 */ {(12<<2)|2,{68,99,0}}, +/* 48707 */ {(12<<2)|2,{68,99,0}}, +/* 48708 */ {(12<<2)|2,{68,99,0}}, +/* 48709 */ {(12<<2)|2,{68,99,0}}, +/* 48710 */ {(12<<2)|2,{68,99,0}}, +/* 48711 */ {(12<<2)|2,{68,99,0}}, +/* 48712 */ {(12<<2)|2,{68,99,0}}, +/* 48713 */ {(12<<2)|2,{68,99,0}}, +/* 48714 */ {(12<<2)|2,{68,99,0}}, +/* 48715 */ {(12<<2)|2,{68,99,0}}, +/* 48716 */ {(12<<2)|2,{68,99,0}}, +/* 48717 */ {(12<<2)|2,{68,99,0}}, +/* 48718 */ {(12<<2)|2,{68,99,0}}, +/* 48719 */ {(12<<2)|2,{68,99,0}}, +/* 48720 */ {(12<<2)|2,{68,101,0}}, +/* 48721 */ {(12<<2)|2,{68,101,0}}, +/* 48722 */ {(12<<2)|2,{68,101,0}}, +/* 48723 */ {(12<<2)|2,{68,101,0}}, +/* 48724 */ {(12<<2)|2,{68,101,0}}, +/* 48725 */ {(12<<2)|2,{68,101,0}}, +/* 48726 */ {(12<<2)|2,{68,101,0}}, +/* 48727 */ {(12<<2)|2,{68,101,0}}, +/* 48728 */ {(12<<2)|2,{68,101,0}}, +/* 48729 */ {(12<<2)|2,{68,101,0}}, +/* 48730 */ {(12<<2)|2,{68,101,0}}, +/* 48731 */ {(12<<2)|2,{68,101,0}}, +/* 48732 */ {(12<<2)|2,{68,101,0}}, +/* 48733 */ {(12<<2)|2,{68,101,0}}, +/* 48734 */ {(12<<2)|2,{68,101,0}}, +/* 48735 */ {(12<<2)|2,{68,101,0}}, +/* 48736 */ {(12<<2)|2,{68,105,0}}, +/* 48737 */ {(12<<2)|2,{68,105,0}}, +/* 48738 */ {(12<<2)|2,{68,105,0}}, +/* 48739 */ {(12<<2)|2,{68,105,0}}, +/* 48740 */ {(12<<2)|2,{68,105,0}}, +/* 48741 */ {(12<<2)|2,{68,105,0}}, +/* 48742 */ {(12<<2)|2,{68,105,0}}, +/* 48743 */ {(12<<2)|2,{68,105,0}}, +/* 48744 */ {(12<<2)|2,{68,105,0}}, +/* 48745 */ {(12<<2)|2,{68,105,0}}, +/* 48746 */ {(12<<2)|2,{68,105,0}}, +/* 48747 */ {(12<<2)|2,{68,105,0}}, +/* 48748 */ {(12<<2)|2,{68,105,0}}, +/* 48749 */ {(12<<2)|2,{68,105,0}}, +/* 48750 */ {(12<<2)|2,{68,105,0}}, +/* 48751 */ {(12<<2)|2,{68,105,0}}, +/* 48752 */ {(12<<2)|2,{68,111,0}}, +/* 48753 */ {(12<<2)|2,{68,111,0}}, +/* 48754 */ {(12<<2)|2,{68,111,0}}, +/* 48755 */ {(12<<2)|2,{68,111,0}}, +/* 48756 */ {(12<<2)|2,{68,111,0}}, +/* 48757 */ {(12<<2)|2,{68,111,0}}, +/* 48758 */ {(12<<2)|2,{68,111,0}}, +/* 48759 */ {(12<<2)|2,{68,111,0}}, +/* 48760 */ {(12<<2)|2,{68,111,0}}, +/* 48761 */ {(12<<2)|2,{68,111,0}}, +/* 48762 */ {(12<<2)|2,{68,111,0}}, +/* 48763 */ {(12<<2)|2,{68,111,0}}, +/* 48764 */ {(12<<2)|2,{68,111,0}}, +/* 48765 */ {(12<<2)|2,{68,111,0}}, +/* 48766 */ {(12<<2)|2,{68,111,0}}, +/* 48767 */ {(12<<2)|2,{68,111,0}}, +/* 48768 */ {(12<<2)|2,{68,115,0}}, +/* 48769 */ {(12<<2)|2,{68,115,0}}, +/* 48770 */ {(12<<2)|2,{68,115,0}}, +/* 48771 */ {(12<<2)|2,{68,115,0}}, +/* 48772 */ {(12<<2)|2,{68,115,0}}, +/* 48773 */ {(12<<2)|2,{68,115,0}}, +/* 48774 */ {(12<<2)|2,{68,115,0}}, +/* 48775 */ {(12<<2)|2,{68,115,0}}, +/* 48776 */ {(12<<2)|2,{68,115,0}}, +/* 48777 */ {(12<<2)|2,{68,115,0}}, +/* 48778 */ {(12<<2)|2,{68,115,0}}, +/* 48779 */ {(12<<2)|2,{68,115,0}}, +/* 48780 */ {(12<<2)|2,{68,115,0}}, +/* 48781 */ {(12<<2)|2,{68,115,0}}, +/* 48782 */ {(12<<2)|2,{68,115,0}}, +/* 48783 */ {(12<<2)|2,{68,115,0}}, +/* 48784 */ {(12<<2)|2,{68,116,0}}, +/* 48785 */ {(12<<2)|2,{68,116,0}}, +/* 48786 */ {(12<<2)|2,{68,116,0}}, +/* 48787 */ {(12<<2)|2,{68,116,0}}, +/* 48788 */ {(12<<2)|2,{68,116,0}}, +/* 48789 */ {(12<<2)|2,{68,116,0}}, +/* 48790 */ {(12<<2)|2,{68,116,0}}, +/* 48791 */ {(12<<2)|2,{68,116,0}}, +/* 48792 */ {(12<<2)|2,{68,116,0}}, +/* 48793 */ {(12<<2)|2,{68,116,0}}, +/* 48794 */ {(12<<2)|2,{68,116,0}}, +/* 48795 */ {(12<<2)|2,{68,116,0}}, +/* 48796 */ {(12<<2)|2,{68,116,0}}, +/* 48797 */ {(12<<2)|2,{68,116,0}}, +/* 48798 */ {(12<<2)|2,{68,116,0}}, +/* 48799 */ {(12<<2)|2,{68,116,0}}, +/* 48800 */ {(13<<2)|2,{68,32,0}}, +/* 48801 */ {(13<<2)|2,{68,32,0}}, +/* 48802 */ {(13<<2)|2,{68,32,0}}, +/* 48803 */ {(13<<2)|2,{68,32,0}}, +/* 48804 */ {(13<<2)|2,{68,32,0}}, +/* 48805 */ {(13<<2)|2,{68,32,0}}, +/* 48806 */ {(13<<2)|2,{68,32,0}}, +/* 48807 */ {(13<<2)|2,{68,32,0}}, +/* 48808 */ {(13<<2)|2,{68,37,0}}, +/* 48809 */ {(13<<2)|2,{68,37,0}}, +/* 48810 */ {(13<<2)|2,{68,37,0}}, +/* 48811 */ {(13<<2)|2,{68,37,0}}, +/* 48812 */ {(13<<2)|2,{68,37,0}}, +/* 48813 */ {(13<<2)|2,{68,37,0}}, +/* 48814 */ {(13<<2)|2,{68,37,0}}, +/* 48815 */ {(13<<2)|2,{68,37,0}}, +/* 48816 */ {(13<<2)|2,{68,45,0}}, +/* 48817 */ {(13<<2)|2,{68,45,0}}, +/* 48818 */ {(13<<2)|2,{68,45,0}}, +/* 48819 */ {(13<<2)|2,{68,45,0}}, +/* 48820 */ {(13<<2)|2,{68,45,0}}, +/* 48821 */ {(13<<2)|2,{68,45,0}}, +/* 48822 */ {(13<<2)|2,{68,45,0}}, +/* 48823 */ {(13<<2)|2,{68,45,0}}, +/* 48824 */ {(13<<2)|2,{68,46,0}}, +/* 48825 */ {(13<<2)|2,{68,46,0}}, +/* 48826 */ {(13<<2)|2,{68,46,0}}, +/* 48827 */ {(13<<2)|2,{68,46,0}}, +/* 48828 */ {(13<<2)|2,{68,46,0}}, +/* 48829 */ {(13<<2)|2,{68,46,0}}, +/* 48830 */ {(13<<2)|2,{68,46,0}}, +/* 48831 */ {(13<<2)|2,{68,46,0}}, +/* 48832 */ {(13<<2)|2,{68,47,0}}, +/* 48833 */ {(13<<2)|2,{68,47,0}}, +/* 48834 */ {(13<<2)|2,{68,47,0}}, +/* 48835 */ {(13<<2)|2,{68,47,0}}, +/* 48836 */ {(13<<2)|2,{68,47,0}}, +/* 48837 */ {(13<<2)|2,{68,47,0}}, +/* 48838 */ {(13<<2)|2,{68,47,0}}, +/* 48839 */ {(13<<2)|2,{68,47,0}}, +/* 48840 */ {(13<<2)|2,{68,51,0}}, +/* 48841 */ {(13<<2)|2,{68,51,0}}, +/* 48842 */ {(13<<2)|2,{68,51,0}}, +/* 48843 */ {(13<<2)|2,{68,51,0}}, +/* 48844 */ {(13<<2)|2,{68,51,0}}, +/* 48845 */ {(13<<2)|2,{68,51,0}}, +/* 48846 */ {(13<<2)|2,{68,51,0}}, +/* 48847 */ {(13<<2)|2,{68,51,0}}, +/* 48848 */ {(13<<2)|2,{68,52,0}}, +/* 48849 */ {(13<<2)|2,{68,52,0}}, +/* 48850 */ {(13<<2)|2,{68,52,0}}, +/* 48851 */ {(13<<2)|2,{68,52,0}}, +/* 48852 */ {(13<<2)|2,{68,52,0}}, +/* 48853 */ {(13<<2)|2,{68,52,0}}, +/* 48854 */ {(13<<2)|2,{68,52,0}}, +/* 48855 */ {(13<<2)|2,{68,52,0}}, +/* 48856 */ {(13<<2)|2,{68,53,0}}, +/* 48857 */ {(13<<2)|2,{68,53,0}}, +/* 48858 */ {(13<<2)|2,{68,53,0}}, +/* 48859 */ {(13<<2)|2,{68,53,0}}, +/* 48860 */ {(13<<2)|2,{68,53,0}}, +/* 48861 */ {(13<<2)|2,{68,53,0}}, +/* 48862 */ {(13<<2)|2,{68,53,0}}, +/* 48863 */ {(13<<2)|2,{68,53,0}}, +/* 48864 */ {(13<<2)|2,{68,54,0}}, +/* 48865 */ {(13<<2)|2,{68,54,0}}, +/* 48866 */ {(13<<2)|2,{68,54,0}}, +/* 48867 */ {(13<<2)|2,{68,54,0}}, +/* 48868 */ {(13<<2)|2,{68,54,0}}, +/* 48869 */ {(13<<2)|2,{68,54,0}}, +/* 48870 */ {(13<<2)|2,{68,54,0}}, +/* 48871 */ {(13<<2)|2,{68,54,0}}, +/* 48872 */ {(13<<2)|2,{68,55,0}}, +/* 48873 */ {(13<<2)|2,{68,55,0}}, +/* 48874 */ {(13<<2)|2,{68,55,0}}, +/* 48875 */ {(13<<2)|2,{68,55,0}}, +/* 48876 */ {(13<<2)|2,{68,55,0}}, +/* 48877 */ {(13<<2)|2,{68,55,0}}, +/* 48878 */ {(13<<2)|2,{68,55,0}}, +/* 48879 */ {(13<<2)|2,{68,55,0}}, +/* 48880 */ {(13<<2)|2,{68,56,0}}, +/* 48881 */ {(13<<2)|2,{68,56,0}}, +/* 48882 */ {(13<<2)|2,{68,56,0}}, +/* 48883 */ {(13<<2)|2,{68,56,0}}, +/* 48884 */ {(13<<2)|2,{68,56,0}}, +/* 48885 */ {(13<<2)|2,{68,56,0}}, +/* 48886 */ {(13<<2)|2,{68,56,0}}, +/* 48887 */ {(13<<2)|2,{68,56,0}}, +/* 48888 */ {(13<<2)|2,{68,57,0}}, +/* 48889 */ {(13<<2)|2,{68,57,0}}, +/* 48890 */ {(13<<2)|2,{68,57,0}}, +/* 48891 */ {(13<<2)|2,{68,57,0}}, +/* 48892 */ {(13<<2)|2,{68,57,0}}, +/* 48893 */ {(13<<2)|2,{68,57,0}}, +/* 48894 */ {(13<<2)|2,{68,57,0}}, +/* 48895 */ {(13<<2)|2,{68,57,0}}, +/* 48896 */ {(13<<2)|2,{68,61,0}}, +/* 48897 */ {(13<<2)|2,{68,61,0}}, +/* 48898 */ {(13<<2)|2,{68,61,0}}, +/* 48899 */ {(13<<2)|2,{68,61,0}}, +/* 48900 */ {(13<<2)|2,{68,61,0}}, +/* 48901 */ {(13<<2)|2,{68,61,0}}, +/* 48902 */ {(13<<2)|2,{68,61,0}}, +/* 48903 */ {(13<<2)|2,{68,61,0}}, +/* 48904 */ {(13<<2)|2,{68,65,0}}, +/* 48905 */ {(13<<2)|2,{68,65,0}}, +/* 48906 */ {(13<<2)|2,{68,65,0}}, +/* 48907 */ {(13<<2)|2,{68,65,0}}, +/* 48908 */ {(13<<2)|2,{68,65,0}}, +/* 48909 */ {(13<<2)|2,{68,65,0}}, +/* 48910 */ {(13<<2)|2,{68,65,0}}, +/* 48911 */ {(13<<2)|2,{68,65,0}}, +/* 48912 */ {(13<<2)|2,{68,95,0}}, +/* 48913 */ {(13<<2)|2,{68,95,0}}, +/* 48914 */ {(13<<2)|2,{68,95,0}}, +/* 48915 */ {(13<<2)|2,{68,95,0}}, +/* 48916 */ {(13<<2)|2,{68,95,0}}, +/* 48917 */ {(13<<2)|2,{68,95,0}}, +/* 48918 */ {(13<<2)|2,{68,95,0}}, +/* 48919 */ {(13<<2)|2,{68,95,0}}, +/* 48920 */ {(13<<2)|2,{68,98,0}}, +/* 48921 */ {(13<<2)|2,{68,98,0}}, +/* 48922 */ {(13<<2)|2,{68,98,0}}, +/* 48923 */ {(13<<2)|2,{68,98,0}}, +/* 48924 */ {(13<<2)|2,{68,98,0}}, +/* 48925 */ {(13<<2)|2,{68,98,0}}, +/* 48926 */ {(13<<2)|2,{68,98,0}}, +/* 48927 */ {(13<<2)|2,{68,98,0}}, +/* 48928 */ {(13<<2)|2,{68,100,0}}, +/* 48929 */ {(13<<2)|2,{68,100,0}}, +/* 48930 */ {(13<<2)|2,{68,100,0}}, +/* 48931 */ {(13<<2)|2,{68,100,0}}, +/* 48932 */ {(13<<2)|2,{68,100,0}}, +/* 48933 */ {(13<<2)|2,{68,100,0}}, +/* 48934 */ {(13<<2)|2,{68,100,0}}, +/* 48935 */ {(13<<2)|2,{68,100,0}}, +/* 48936 */ {(13<<2)|2,{68,102,0}}, +/* 48937 */ {(13<<2)|2,{68,102,0}}, +/* 48938 */ {(13<<2)|2,{68,102,0}}, +/* 48939 */ {(13<<2)|2,{68,102,0}}, +/* 48940 */ {(13<<2)|2,{68,102,0}}, +/* 48941 */ {(13<<2)|2,{68,102,0}}, +/* 48942 */ {(13<<2)|2,{68,102,0}}, +/* 48943 */ {(13<<2)|2,{68,102,0}}, +/* 48944 */ {(13<<2)|2,{68,103,0}}, +/* 48945 */ {(13<<2)|2,{68,103,0}}, +/* 48946 */ {(13<<2)|2,{68,103,0}}, +/* 48947 */ {(13<<2)|2,{68,103,0}}, +/* 48948 */ {(13<<2)|2,{68,103,0}}, +/* 48949 */ {(13<<2)|2,{68,103,0}}, +/* 48950 */ {(13<<2)|2,{68,103,0}}, +/* 48951 */ {(13<<2)|2,{68,103,0}}, +/* 48952 */ {(13<<2)|2,{68,104,0}}, +/* 48953 */ {(13<<2)|2,{68,104,0}}, +/* 48954 */ {(13<<2)|2,{68,104,0}}, +/* 48955 */ {(13<<2)|2,{68,104,0}}, +/* 48956 */ {(13<<2)|2,{68,104,0}}, +/* 48957 */ {(13<<2)|2,{68,104,0}}, +/* 48958 */ {(13<<2)|2,{68,104,0}}, +/* 48959 */ {(13<<2)|2,{68,104,0}}, +/* 48960 */ {(13<<2)|2,{68,108,0}}, +/* 48961 */ {(13<<2)|2,{68,108,0}}, +/* 48962 */ {(13<<2)|2,{68,108,0}}, +/* 48963 */ {(13<<2)|2,{68,108,0}}, +/* 48964 */ {(13<<2)|2,{68,108,0}}, +/* 48965 */ {(13<<2)|2,{68,108,0}}, +/* 48966 */ {(13<<2)|2,{68,108,0}}, +/* 48967 */ {(13<<2)|2,{68,108,0}}, +/* 48968 */ {(13<<2)|2,{68,109,0}}, +/* 48969 */ {(13<<2)|2,{68,109,0}}, +/* 48970 */ {(13<<2)|2,{68,109,0}}, +/* 48971 */ {(13<<2)|2,{68,109,0}}, +/* 48972 */ {(13<<2)|2,{68,109,0}}, +/* 48973 */ {(13<<2)|2,{68,109,0}}, +/* 48974 */ {(13<<2)|2,{68,109,0}}, +/* 48975 */ {(13<<2)|2,{68,109,0}}, +/* 48976 */ {(13<<2)|2,{68,110,0}}, +/* 48977 */ {(13<<2)|2,{68,110,0}}, +/* 48978 */ {(13<<2)|2,{68,110,0}}, +/* 48979 */ {(13<<2)|2,{68,110,0}}, +/* 48980 */ {(13<<2)|2,{68,110,0}}, +/* 48981 */ {(13<<2)|2,{68,110,0}}, +/* 48982 */ {(13<<2)|2,{68,110,0}}, +/* 48983 */ {(13<<2)|2,{68,110,0}}, +/* 48984 */ {(13<<2)|2,{68,112,0}}, +/* 48985 */ {(13<<2)|2,{68,112,0}}, +/* 48986 */ {(13<<2)|2,{68,112,0}}, +/* 48987 */ {(13<<2)|2,{68,112,0}}, +/* 48988 */ {(13<<2)|2,{68,112,0}}, +/* 48989 */ {(13<<2)|2,{68,112,0}}, +/* 48990 */ {(13<<2)|2,{68,112,0}}, +/* 48991 */ {(13<<2)|2,{68,112,0}}, +/* 48992 */ {(13<<2)|2,{68,114,0}}, +/* 48993 */ {(13<<2)|2,{68,114,0}}, +/* 48994 */ {(13<<2)|2,{68,114,0}}, +/* 48995 */ {(13<<2)|2,{68,114,0}}, +/* 48996 */ {(13<<2)|2,{68,114,0}}, +/* 48997 */ {(13<<2)|2,{68,114,0}}, +/* 48998 */ {(13<<2)|2,{68,114,0}}, +/* 48999 */ {(13<<2)|2,{68,114,0}}, +/* 49000 */ {(13<<2)|2,{68,117,0}}, +/* 49001 */ {(13<<2)|2,{68,117,0}}, +/* 49002 */ {(13<<2)|2,{68,117,0}}, +/* 49003 */ {(13<<2)|2,{68,117,0}}, +/* 49004 */ {(13<<2)|2,{68,117,0}}, +/* 49005 */ {(13<<2)|2,{68,117,0}}, +/* 49006 */ {(13<<2)|2,{68,117,0}}, +/* 49007 */ {(13<<2)|2,{68,117,0}}, +/* 49008 */ {(14<<2)|2,{68,58,0}}, +/* 49009 */ {(14<<2)|2,{68,58,0}}, +/* 49010 */ {(14<<2)|2,{68,58,0}}, +/* 49011 */ {(14<<2)|2,{68,58,0}}, +/* 49012 */ {(14<<2)|2,{68,66,0}}, +/* 49013 */ {(14<<2)|2,{68,66,0}}, +/* 49014 */ {(14<<2)|2,{68,66,0}}, +/* 49015 */ {(14<<2)|2,{68,66,0}}, +/* 49016 */ {(14<<2)|2,{68,67,0}}, +/* 49017 */ {(14<<2)|2,{68,67,0}}, +/* 49018 */ {(14<<2)|2,{68,67,0}}, +/* 49019 */ {(14<<2)|2,{68,67,0}}, +/* 49020 */ {(14<<2)|2,{68,68,0}}, +/* 49021 */ {(14<<2)|2,{68,68,0}}, +/* 49022 */ {(14<<2)|2,{68,68,0}}, +/* 49023 */ {(14<<2)|2,{68,68,0}}, +/* 49024 */ {(14<<2)|2,{68,69,0}}, +/* 49025 */ {(14<<2)|2,{68,69,0}}, +/* 49026 */ {(14<<2)|2,{68,69,0}}, +/* 49027 */ {(14<<2)|2,{68,69,0}}, +/* 49028 */ {(14<<2)|2,{68,70,0}}, +/* 49029 */ {(14<<2)|2,{68,70,0}}, +/* 49030 */ {(14<<2)|2,{68,70,0}}, +/* 49031 */ {(14<<2)|2,{68,70,0}}, +/* 49032 */ {(14<<2)|2,{68,71,0}}, +/* 49033 */ {(14<<2)|2,{68,71,0}}, +/* 49034 */ {(14<<2)|2,{68,71,0}}, +/* 49035 */ {(14<<2)|2,{68,71,0}}, +/* 49036 */ {(14<<2)|2,{68,72,0}}, +/* 49037 */ {(14<<2)|2,{68,72,0}}, +/* 49038 */ {(14<<2)|2,{68,72,0}}, +/* 49039 */ {(14<<2)|2,{68,72,0}}, +/* 49040 */ {(14<<2)|2,{68,73,0}}, +/* 49041 */ {(14<<2)|2,{68,73,0}}, +/* 49042 */ {(14<<2)|2,{68,73,0}}, +/* 49043 */ {(14<<2)|2,{68,73,0}}, +/* 49044 */ {(14<<2)|2,{68,74,0}}, +/* 49045 */ {(14<<2)|2,{68,74,0}}, +/* 49046 */ {(14<<2)|2,{68,74,0}}, +/* 49047 */ {(14<<2)|2,{68,74,0}}, +/* 49048 */ {(14<<2)|2,{68,75,0}}, +/* 49049 */ {(14<<2)|2,{68,75,0}}, +/* 49050 */ {(14<<2)|2,{68,75,0}}, +/* 49051 */ {(14<<2)|2,{68,75,0}}, +/* 49052 */ {(14<<2)|2,{68,76,0}}, +/* 49053 */ {(14<<2)|2,{68,76,0}}, +/* 49054 */ {(14<<2)|2,{68,76,0}}, +/* 49055 */ {(14<<2)|2,{68,76,0}}, +/* 49056 */ {(14<<2)|2,{68,77,0}}, +/* 49057 */ {(14<<2)|2,{68,77,0}}, +/* 49058 */ {(14<<2)|2,{68,77,0}}, +/* 49059 */ {(14<<2)|2,{68,77,0}}, +/* 49060 */ {(14<<2)|2,{68,78,0}}, +/* 49061 */ {(14<<2)|2,{68,78,0}}, +/* 49062 */ {(14<<2)|2,{68,78,0}}, +/* 49063 */ {(14<<2)|2,{68,78,0}}, +/* 49064 */ {(14<<2)|2,{68,79,0}}, +/* 49065 */ {(14<<2)|2,{68,79,0}}, +/* 49066 */ {(14<<2)|2,{68,79,0}}, +/* 49067 */ {(14<<2)|2,{68,79,0}}, +/* 49068 */ {(14<<2)|2,{68,80,0}}, +/* 49069 */ {(14<<2)|2,{68,80,0}}, +/* 49070 */ {(14<<2)|2,{68,80,0}}, +/* 49071 */ {(14<<2)|2,{68,80,0}}, +/* 49072 */ {(14<<2)|2,{68,81,0}}, +/* 49073 */ {(14<<2)|2,{68,81,0}}, +/* 49074 */ {(14<<2)|2,{68,81,0}}, +/* 49075 */ {(14<<2)|2,{68,81,0}}, +/* 49076 */ {(14<<2)|2,{68,82,0}}, +/* 49077 */ {(14<<2)|2,{68,82,0}}, +/* 49078 */ {(14<<2)|2,{68,82,0}}, +/* 49079 */ {(14<<2)|2,{68,82,0}}, +/* 49080 */ {(14<<2)|2,{68,83,0}}, +/* 49081 */ {(14<<2)|2,{68,83,0}}, +/* 49082 */ {(14<<2)|2,{68,83,0}}, +/* 49083 */ {(14<<2)|2,{68,83,0}}, +/* 49084 */ {(14<<2)|2,{68,84,0}}, +/* 49085 */ {(14<<2)|2,{68,84,0}}, +/* 49086 */ {(14<<2)|2,{68,84,0}}, +/* 49087 */ {(14<<2)|2,{68,84,0}}, +/* 49088 */ {(14<<2)|2,{68,85,0}}, +/* 49089 */ {(14<<2)|2,{68,85,0}}, +/* 49090 */ {(14<<2)|2,{68,85,0}}, +/* 49091 */ {(14<<2)|2,{68,85,0}}, +/* 49092 */ {(14<<2)|2,{68,86,0}}, +/* 49093 */ {(14<<2)|2,{68,86,0}}, +/* 49094 */ {(14<<2)|2,{68,86,0}}, +/* 49095 */ {(14<<2)|2,{68,86,0}}, +/* 49096 */ {(14<<2)|2,{68,87,0}}, +/* 49097 */ {(14<<2)|2,{68,87,0}}, +/* 49098 */ {(14<<2)|2,{68,87,0}}, +/* 49099 */ {(14<<2)|2,{68,87,0}}, +/* 49100 */ {(14<<2)|2,{68,89,0}}, +/* 49101 */ {(14<<2)|2,{68,89,0}}, +/* 49102 */ {(14<<2)|2,{68,89,0}}, +/* 49103 */ {(14<<2)|2,{68,89,0}}, +/* 49104 */ {(14<<2)|2,{68,106,0}}, +/* 49105 */ {(14<<2)|2,{68,106,0}}, +/* 49106 */ {(14<<2)|2,{68,106,0}}, +/* 49107 */ {(14<<2)|2,{68,106,0}}, +/* 49108 */ {(14<<2)|2,{68,107,0}}, +/* 49109 */ {(14<<2)|2,{68,107,0}}, +/* 49110 */ {(14<<2)|2,{68,107,0}}, +/* 49111 */ {(14<<2)|2,{68,107,0}}, +/* 49112 */ {(14<<2)|2,{68,113,0}}, +/* 49113 */ {(14<<2)|2,{68,113,0}}, +/* 49114 */ {(14<<2)|2,{68,113,0}}, +/* 49115 */ {(14<<2)|2,{68,113,0}}, +/* 49116 */ {(14<<2)|2,{68,118,0}}, +/* 49117 */ {(14<<2)|2,{68,118,0}}, +/* 49118 */ {(14<<2)|2,{68,118,0}}, +/* 49119 */ {(14<<2)|2,{68,118,0}}, +/* 49120 */ {(14<<2)|2,{68,119,0}}, +/* 49121 */ {(14<<2)|2,{68,119,0}}, +/* 49122 */ {(14<<2)|2,{68,119,0}}, +/* 49123 */ {(14<<2)|2,{68,119,0}}, +/* 49124 */ {(14<<2)|2,{68,120,0}}, +/* 49125 */ {(14<<2)|2,{68,120,0}}, +/* 49126 */ {(14<<2)|2,{68,120,0}}, +/* 49127 */ {(14<<2)|2,{68,120,0}}, +/* 49128 */ {(14<<2)|2,{68,121,0}}, +/* 49129 */ {(14<<2)|2,{68,121,0}}, +/* 49130 */ {(14<<2)|2,{68,121,0}}, +/* 49131 */ {(14<<2)|2,{68,121,0}}, +/* 49132 */ {(14<<2)|2,{68,122,0}}, +/* 49133 */ {(14<<2)|2,{68,122,0}}, +/* 49134 */ {(14<<2)|2,{68,122,0}}, +/* 49135 */ {(14<<2)|2,{68,122,0}}, +/* 49136 */ {(15<<2)|2,{68,38,0}}, +/* 49137 */ {(15<<2)|2,{68,38,0}}, +/* 49138 */ {(15<<2)|2,{68,42,0}}, +/* 49139 */ {(15<<2)|2,{68,42,0}}, +/* 49140 */ {(15<<2)|2,{68,44,0}}, +/* 49141 */ {(15<<2)|2,{68,44,0}}, +/* 49142 */ {(15<<2)|2,{68,59,0}}, +/* 49143 */ {(15<<2)|2,{68,59,0}}, +/* 49144 */ {(15<<2)|2,{68,88,0}}, +/* 49145 */ {(15<<2)|2,{68,88,0}}, +/* 49146 */ {(15<<2)|2,{68,90,0}}, +/* 49147 */ {(15<<2)|2,{68,90,0}}, +/* 49148 */ {(7<<2)|1,{68,0,0}}, +/* 49149 */ {(7<<2)|1,{68,0,0}}, +/* 49150 */ {(7<<2)|1,{68,0,0}}, +/* 49151 */ {(7<<2)|1,{68,0,0}}, +/* 49152 */ {(12<<2)|2,{69,48,0}}, +/* 49153 */ {(12<<2)|2,{69,48,0}}, +/* 49154 */ {(12<<2)|2,{69,48,0}}, +/* 49155 */ {(12<<2)|2,{69,48,0}}, +/* 49156 */ {(12<<2)|2,{69,48,0}}, +/* 49157 */ {(12<<2)|2,{69,48,0}}, +/* 49158 */ {(12<<2)|2,{69,48,0}}, +/* 49159 */ {(12<<2)|2,{69,48,0}}, +/* 49160 */ {(12<<2)|2,{69,48,0}}, +/* 49161 */ {(12<<2)|2,{69,48,0}}, +/* 49162 */ {(12<<2)|2,{69,48,0}}, +/* 49163 */ {(12<<2)|2,{69,48,0}}, +/* 49164 */ {(12<<2)|2,{69,48,0}}, +/* 49165 */ {(12<<2)|2,{69,48,0}}, +/* 49166 */ {(12<<2)|2,{69,48,0}}, +/* 49167 */ {(12<<2)|2,{69,48,0}}, +/* 49168 */ {(12<<2)|2,{69,49,0}}, +/* 49169 */ {(12<<2)|2,{69,49,0}}, +/* 49170 */ {(12<<2)|2,{69,49,0}}, +/* 49171 */ {(12<<2)|2,{69,49,0}}, +/* 49172 */ {(12<<2)|2,{69,49,0}}, +/* 49173 */ {(12<<2)|2,{69,49,0}}, +/* 49174 */ {(12<<2)|2,{69,49,0}}, +/* 49175 */ {(12<<2)|2,{69,49,0}}, +/* 49176 */ {(12<<2)|2,{69,49,0}}, +/* 49177 */ {(12<<2)|2,{69,49,0}}, +/* 49178 */ {(12<<2)|2,{69,49,0}}, +/* 49179 */ {(12<<2)|2,{69,49,0}}, +/* 49180 */ {(12<<2)|2,{69,49,0}}, +/* 49181 */ {(12<<2)|2,{69,49,0}}, +/* 49182 */ {(12<<2)|2,{69,49,0}}, +/* 49183 */ {(12<<2)|2,{69,49,0}}, +/* 49184 */ {(12<<2)|2,{69,50,0}}, +/* 49185 */ {(12<<2)|2,{69,50,0}}, +/* 49186 */ {(12<<2)|2,{69,50,0}}, +/* 49187 */ {(12<<2)|2,{69,50,0}}, +/* 49188 */ {(12<<2)|2,{69,50,0}}, +/* 49189 */ {(12<<2)|2,{69,50,0}}, +/* 49190 */ {(12<<2)|2,{69,50,0}}, +/* 49191 */ {(12<<2)|2,{69,50,0}}, +/* 49192 */ {(12<<2)|2,{69,50,0}}, +/* 49193 */ {(12<<2)|2,{69,50,0}}, +/* 49194 */ {(12<<2)|2,{69,50,0}}, +/* 49195 */ {(12<<2)|2,{69,50,0}}, +/* 49196 */ {(12<<2)|2,{69,50,0}}, +/* 49197 */ {(12<<2)|2,{69,50,0}}, +/* 49198 */ {(12<<2)|2,{69,50,0}}, +/* 49199 */ {(12<<2)|2,{69,50,0}}, +/* 49200 */ {(12<<2)|2,{69,97,0}}, +/* 49201 */ {(12<<2)|2,{69,97,0}}, +/* 49202 */ {(12<<2)|2,{69,97,0}}, +/* 49203 */ {(12<<2)|2,{69,97,0}}, +/* 49204 */ {(12<<2)|2,{69,97,0}}, +/* 49205 */ {(12<<2)|2,{69,97,0}}, +/* 49206 */ {(12<<2)|2,{69,97,0}}, +/* 49207 */ {(12<<2)|2,{69,97,0}}, +/* 49208 */ {(12<<2)|2,{69,97,0}}, +/* 49209 */ {(12<<2)|2,{69,97,0}}, +/* 49210 */ {(12<<2)|2,{69,97,0}}, +/* 49211 */ {(12<<2)|2,{69,97,0}}, +/* 49212 */ {(12<<2)|2,{69,97,0}}, +/* 49213 */ {(12<<2)|2,{69,97,0}}, +/* 49214 */ {(12<<2)|2,{69,97,0}}, +/* 49215 */ {(12<<2)|2,{69,97,0}}, +/* 49216 */ {(12<<2)|2,{69,99,0}}, +/* 49217 */ {(12<<2)|2,{69,99,0}}, +/* 49218 */ {(12<<2)|2,{69,99,0}}, +/* 49219 */ {(12<<2)|2,{69,99,0}}, +/* 49220 */ {(12<<2)|2,{69,99,0}}, +/* 49221 */ {(12<<2)|2,{69,99,0}}, +/* 49222 */ {(12<<2)|2,{69,99,0}}, +/* 49223 */ {(12<<2)|2,{69,99,0}}, +/* 49224 */ {(12<<2)|2,{69,99,0}}, +/* 49225 */ {(12<<2)|2,{69,99,0}}, +/* 49226 */ {(12<<2)|2,{69,99,0}}, +/* 49227 */ {(12<<2)|2,{69,99,0}}, +/* 49228 */ {(12<<2)|2,{69,99,0}}, +/* 49229 */ {(12<<2)|2,{69,99,0}}, +/* 49230 */ {(12<<2)|2,{69,99,0}}, +/* 49231 */ {(12<<2)|2,{69,99,0}}, +/* 49232 */ {(12<<2)|2,{69,101,0}}, +/* 49233 */ {(12<<2)|2,{69,101,0}}, +/* 49234 */ {(12<<2)|2,{69,101,0}}, +/* 49235 */ {(12<<2)|2,{69,101,0}}, +/* 49236 */ {(12<<2)|2,{69,101,0}}, +/* 49237 */ {(12<<2)|2,{69,101,0}}, +/* 49238 */ {(12<<2)|2,{69,101,0}}, +/* 49239 */ {(12<<2)|2,{69,101,0}}, +/* 49240 */ {(12<<2)|2,{69,101,0}}, +/* 49241 */ {(12<<2)|2,{69,101,0}}, +/* 49242 */ {(12<<2)|2,{69,101,0}}, +/* 49243 */ {(12<<2)|2,{69,101,0}}, +/* 49244 */ {(12<<2)|2,{69,101,0}}, +/* 49245 */ {(12<<2)|2,{69,101,0}}, +/* 49246 */ {(12<<2)|2,{69,101,0}}, +/* 49247 */ {(12<<2)|2,{69,101,0}}, +/* 49248 */ {(12<<2)|2,{69,105,0}}, +/* 49249 */ {(12<<2)|2,{69,105,0}}, +/* 49250 */ {(12<<2)|2,{69,105,0}}, +/* 49251 */ {(12<<2)|2,{69,105,0}}, +/* 49252 */ {(12<<2)|2,{69,105,0}}, +/* 49253 */ {(12<<2)|2,{69,105,0}}, +/* 49254 */ {(12<<2)|2,{69,105,0}}, +/* 49255 */ {(12<<2)|2,{69,105,0}}, +/* 49256 */ {(12<<2)|2,{69,105,0}}, +/* 49257 */ {(12<<2)|2,{69,105,0}}, +/* 49258 */ {(12<<2)|2,{69,105,0}}, +/* 49259 */ {(12<<2)|2,{69,105,0}}, +/* 49260 */ {(12<<2)|2,{69,105,0}}, +/* 49261 */ {(12<<2)|2,{69,105,0}}, +/* 49262 */ {(12<<2)|2,{69,105,0}}, +/* 49263 */ {(12<<2)|2,{69,105,0}}, +/* 49264 */ {(12<<2)|2,{69,111,0}}, +/* 49265 */ {(12<<2)|2,{69,111,0}}, +/* 49266 */ {(12<<2)|2,{69,111,0}}, +/* 49267 */ {(12<<2)|2,{69,111,0}}, +/* 49268 */ {(12<<2)|2,{69,111,0}}, +/* 49269 */ {(12<<2)|2,{69,111,0}}, +/* 49270 */ {(12<<2)|2,{69,111,0}}, +/* 49271 */ {(12<<2)|2,{69,111,0}}, +/* 49272 */ {(12<<2)|2,{69,111,0}}, +/* 49273 */ {(12<<2)|2,{69,111,0}}, +/* 49274 */ {(12<<2)|2,{69,111,0}}, +/* 49275 */ {(12<<2)|2,{69,111,0}}, +/* 49276 */ {(12<<2)|2,{69,111,0}}, +/* 49277 */ {(12<<2)|2,{69,111,0}}, +/* 49278 */ {(12<<2)|2,{69,111,0}}, +/* 49279 */ {(12<<2)|2,{69,111,0}}, +/* 49280 */ {(12<<2)|2,{69,115,0}}, +/* 49281 */ {(12<<2)|2,{69,115,0}}, +/* 49282 */ {(12<<2)|2,{69,115,0}}, +/* 49283 */ {(12<<2)|2,{69,115,0}}, +/* 49284 */ {(12<<2)|2,{69,115,0}}, +/* 49285 */ {(12<<2)|2,{69,115,0}}, +/* 49286 */ {(12<<2)|2,{69,115,0}}, +/* 49287 */ {(12<<2)|2,{69,115,0}}, +/* 49288 */ {(12<<2)|2,{69,115,0}}, +/* 49289 */ {(12<<2)|2,{69,115,0}}, +/* 49290 */ {(12<<2)|2,{69,115,0}}, +/* 49291 */ {(12<<2)|2,{69,115,0}}, +/* 49292 */ {(12<<2)|2,{69,115,0}}, +/* 49293 */ {(12<<2)|2,{69,115,0}}, +/* 49294 */ {(12<<2)|2,{69,115,0}}, +/* 49295 */ {(12<<2)|2,{69,115,0}}, +/* 49296 */ {(12<<2)|2,{69,116,0}}, +/* 49297 */ {(12<<2)|2,{69,116,0}}, +/* 49298 */ {(12<<2)|2,{69,116,0}}, +/* 49299 */ {(12<<2)|2,{69,116,0}}, +/* 49300 */ {(12<<2)|2,{69,116,0}}, +/* 49301 */ {(12<<2)|2,{69,116,0}}, +/* 49302 */ {(12<<2)|2,{69,116,0}}, +/* 49303 */ {(12<<2)|2,{69,116,0}}, +/* 49304 */ {(12<<2)|2,{69,116,0}}, +/* 49305 */ {(12<<2)|2,{69,116,0}}, +/* 49306 */ {(12<<2)|2,{69,116,0}}, +/* 49307 */ {(12<<2)|2,{69,116,0}}, +/* 49308 */ {(12<<2)|2,{69,116,0}}, +/* 49309 */ {(12<<2)|2,{69,116,0}}, +/* 49310 */ {(12<<2)|2,{69,116,0}}, +/* 49311 */ {(12<<2)|2,{69,116,0}}, +/* 49312 */ {(13<<2)|2,{69,32,0}}, +/* 49313 */ {(13<<2)|2,{69,32,0}}, +/* 49314 */ {(13<<2)|2,{69,32,0}}, +/* 49315 */ {(13<<2)|2,{69,32,0}}, +/* 49316 */ {(13<<2)|2,{69,32,0}}, +/* 49317 */ {(13<<2)|2,{69,32,0}}, +/* 49318 */ {(13<<2)|2,{69,32,0}}, +/* 49319 */ {(13<<2)|2,{69,32,0}}, +/* 49320 */ {(13<<2)|2,{69,37,0}}, +/* 49321 */ {(13<<2)|2,{69,37,0}}, +/* 49322 */ {(13<<2)|2,{69,37,0}}, +/* 49323 */ {(13<<2)|2,{69,37,0}}, +/* 49324 */ {(13<<2)|2,{69,37,0}}, +/* 49325 */ {(13<<2)|2,{69,37,0}}, +/* 49326 */ {(13<<2)|2,{69,37,0}}, +/* 49327 */ {(13<<2)|2,{69,37,0}}, +/* 49328 */ {(13<<2)|2,{69,45,0}}, +/* 49329 */ {(13<<2)|2,{69,45,0}}, +/* 49330 */ {(13<<2)|2,{69,45,0}}, +/* 49331 */ {(13<<2)|2,{69,45,0}}, +/* 49332 */ {(13<<2)|2,{69,45,0}}, +/* 49333 */ {(13<<2)|2,{69,45,0}}, +/* 49334 */ {(13<<2)|2,{69,45,0}}, +/* 49335 */ {(13<<2)|2,{69,45,0}}, +/* 49336 */ {(13<<2)|2,{69,46,0}}, +/* 49337 */ {(13<<2)|2,{69,46,0}}, +/* 49338 */ {(13<<2)|2,{69,46,0}}, +/* 49339 */ {(13<<2)|2,{69,46,0}}, +/* 49340 */ {(13<<2)|2,{69,46,0}}, +/* 49341 */ {(13<<2)|2,{69,46,0}}, +/* 49342 */ {(13<<2)|2,{69,46,0}}, +/* 49343 */ {(13<<2)|2,{69,46,0}}, +/* 49344 */ {(13<<2)|2,{69,47,0}}, +/* 49345 */ {(13<<2)|2,{69,47,0}}, +/* 49346 */ {(13<<2)|2,{69,47,0}}, +/* 49347 */ {(13<<2)|2,{69,47,0}}, +/* 49348 */ {(13<<2)|2,{69,47,0}}, +/* 49349 */ {(13<<2)|2,{69,47,0}}, +/* 49350 */ {(13<<2)|2,{69,47,0}}, +/* 49351 */ {(13<<2)|2,{69,47,0}}, +/* 49352 */ {(13<<2)|2,{69,51,0}}, +/* 49353 */ {(13<<2)|2,{69,51,0}}, +/* 49354 */ {(13<<2)|2,{69,51,0}}, +/* 49355 */ {(13<<2)|2,{69,51,0}}, +/* 49356 */ {(13<<2)|2,{69,51,0}}, +/* 49357 */ {(13<<2)|2,{69,51,0}}, +/* 49358 */ {(13<<2)|2,{69,51,0}}, +/* 49359 */ {(13<<2)|2,{69,51,0}}, +/* 49360 */ {(13<<2)|2,{69,52,0}}, +/* 49361 */ {(13<<2)|2,{69,52,0}}, +/* 49362 */ {(13<<2)|2,{69,52,0}}, +/* 49363 */ {(13<<2)|2,{69,52,0}}, +/* 49364 */ {(13<<2)|2,{69,52,0}}, +/* 49365 */ {(13<<2)|2,{69,52,0}}, +/* 49366 */ {(13<<2)|2,{69,52,0}}, +/* 49367 */ {(13<<2)|2,{69,52,0}}, +/* 49368 */ {(13<<2)|2,{69,53,0}}, +/* 49369 */ {(13<<2)|2,{69,53,0}}, +/* 49370 */ {(13<<2)|2,{69,53,0}}, +/* 49371 */ {(13<<2)|2,{69,53,0}}, +/* 49372 */ {(13<<2)|2,{69,53,0}}, +/* 49373 */ {(13<<2)|2,{69,53,0}}, +/* 49374 */ {(13<<2)|2,{69,53,0}}, +/* 49375 */ {(13<<2)|2,{69,53,0}}, +/* 49376 */ {(13<<2)|2,{69,54,0}}, +/* 49377 */ {(13<<2)|2,{69,54,0}}, +/* 49378 */ {(13<<2)|2,{69,54,0}}, +/* 49379 */ {(13<<2)|2,{69,54,0}}, +/* 49380 */ {(13<<2)|2,{69,54,0}}, +/* 49381 */ {(13<<2)|2,{69,54,0}}, +/* 49382 */ {(13<<2)|2,{69,54,0}}, +/* 49383 */ {(13<<2)|2,{69,54,0}}, +/* 49384 */ {(13<<2)|2,{69,55,0}}, +/* 49385 */ {(13<<2)|2,{69,55,0}}, +/* 49386 */ {(13<<2)|2,{69,55,0}}, +/* 49387 */ {(13<<2)|2,{69,55,0}}, +/* 49388 */ {(13<<2)|2,{69,55,0}}, +/* 49389 */ {(13<<2)|2,{69,55,0}}, +/* 49390 */ {(13<<2)|2,{69,55,0}}, +/* 49391 */ {(13<<2)|2,{69,55,0}}, +/* 49392 */ {(13<<2)|2,{69,56,0}}, +/* 49393 */ {(13<<2)|2,{69,56,0}}, +/* 49394 */ {(13<<2)|2,{69,56,0}}, +/* 49395 */ {(13<<2)|2,{69,56,0}}, +/* 49396 */ {(13<<2)|2,{69,56,0}}, +/* 49397 */ {(13<<2)|2,{69,56,0}}, +/* 49398 */ {(13<<2)|2,{69,56,0}}, +/* 49399 */ {(13<<2)|2,{69,56,0}}, +/* 49400 */ {(13<<2)|2,{69,57,0}}, +/* 49401 */ {(13<<2)|2,{69,57,0}}, +/* 49402 */ {(13<<2)|2,{69,57,0}}, +/* 49403 */ {(13<<2)|2,{69,57,0}}, +/* 49404 */ {(13<<2)|2,{69,57,0}}, +/* 49405 */ {(13<<2)|2,{69,57,0}}, +/* 49406 */ {(13<<2)|2,{69,57,0}}, +/* 49407 */ {(13<<2)|2,{69,57,0}}, +/* 49408 */ {(13<<2)|2,{69,61,0}}, +/* 49409 */ {(13<<2)|2,{69,61,0}}, +/* 49410 */ {(13<<2)|2,{69,61,0}}, +/* 49411 */ {(13<<2)|2,{69,61,0}}, +/* 49412 */ {(13<<2)|2,{69,61,0}}, +/* 49413 */ {(13<<2)|2,{69,61,0}}, +/* 49414 */ {(13<<2)|2,{69,61,0}}, +/* 49415 */ {(13<<2)|2,{69,61,0}}, +/* 49416 */ {(13<<2)|2,{69,65,0}}, +/* 49417 */ {(13<<2)|2,{69,65,0}}, +/* 49418 */ {(13<<2)|2,{69,65,0}}, +/* 49419 */ {(13<<2)|2,{69,65,0}}, +/* 49420 */ {(13<<2)|2,{69,65,0}}, +/* 49421 */ {(13<<2)|2,{69,65,0}}, +/* 49422 */ {(13<<2)|2,{69,65,0}}, +/* 49423 */ {(13<<2)|2,{69,65,0}}, +/* 49424 */ {(13<<2)|2,{69,95,0}}, +/* 49425 */ {(13<<2)|2,{69,95,0}}, +/* 49426 */ {(13<<2)|2,{69,95,0}}, +/* 49427 */ {(13<<2)|2,{69,95,0}}, +/* 49428 */ {(13<<2)|2,{69,95,0}}, +/* 49429 */ {(13<<2)|2,{69,95,0}}, +/* 49430 */ {(13<<2)|2,{69,95,0}}, +/* 49431 */ {(13<<2)|2,{69,95,0}}, +/* 49432 */ {(13<<2)|2,{69,98,0}}, +/* 49433 */ {(13<<2)|2,{69,98,0}}, +/* 49434 */ {(13<<2)|2,{69,98,0}}, +/* 49435 */ {(13<<2)|2,{69,98,0}}, +/* 49436 */ {(13<<2)|2,{69,98,0}}, +/* 49437 */ {(13<<2)|2,{69,98,0}}, +/* 49438 */ {(13<<2)|2,{69,98,0}}, +/* 49439 */ {(13<<2)|2,{69,98,0}}, +/* 49440 */ {(13<<2)|2,{69,100,0}}, +/* 49441 */ {(13<<2)|2,{69,100,0}}, +/* 49442 */ {(13<<2)|2,{69,100,0}}, +/* 49443 */ {(13<<2)|2,{69,100,0}}, +/* 49444 */ {(13<<2)|2,{69,100,0}}, +/* 49445 */ {(13<<2)|2,{69,100,0}}, +/* 49446 */ {(13<<2)|2,{69,100,0}}, +/* 49447 */ {(13<<2)|2,{69,100,0}}, +/* 49448 */ {(13<<2)|2,{69,102,0}}, +/* 49449 */ {(13<<2)|2,{69,102,0}}, +/* 49450 */ {(13<<2)|2,{69,102,0}}, +/* 49451 */ {(13<<2)|2,{69,102,0}}, +/* 49452 */ {(13<<2)|2,{69,102,0}}, +/* 49453 */ {(13<<2)|2,{69,102,0}}, +/* 49454 */ {(13<<2)|2,{69,102,0}}, +/* 49455 */ {(13<<2)|2,{69,102,0}}, +/* 49456 */ {(13<<2)|2,{69,103,0}}, +/* 49457 */ {(13<<2)|2,{69,103,0}}, +/* 49458 */ {(13<<2)|2,{69,103,0}}, +/* 49459 */ {(13<<2)|2,{69,103,0}}, +/* 49460 */ {(13<<2)|2,{69,103,0}}, +/* 49461 */ {(13<<2)|2,{69,103,0}}, +/* 49462 */ {(13<<2)|2,{69,103,0}}, +/* 49463 */ {(13<<2)|2,{69,103,0}}, +/* 49464 */ {(13<<2)|2,{69,104,0}}, +/* 49465 */ {(13<<2)|2,{69,104,0}}, +/* 49466 */ {(13<<2)|2,{69,104,0}}, +/* 49467 */ {(13<<2)|2,{69,104,0}}, +/* 49468 */ {(13<<2)|2,{69,104,0}}, +/* 49469 */ {(13<<2)|2,{69,104,0}}, +/* 49470 */ {(13<<2)|2,{69,104,0}}, +/* 49471 */ {(13<<2)|2,{69,104,0}}, +/* 49472 */ {(13<<2)|2,{69,108,0}}, +/* 49473 */ {(13<<2)|2,{69,108,0}}, +/* 49474 */ {(13<<2)|2,{69,108,0}}, +/* 49475 */ {(13<<2)|2,{69,108,0}}, +/* 49476 */ {(13<<2)|2,{69,108,0}}, +/* 49477 */ {(13<<2)|2,{69,108,0}}, +/* 49478 */ {(13<<2)|2,{69,108,0}}, +/* 49479 */ {(13<<2)|2,{69,108,0}}, +/* 49480 */ {(13<<2)|2,{69,109,0}}, +/* 49481 */ {(13<<2)|2,{69,109,0}}, +/* 49482 */ {(13<<2)|2,{69,109,0}}, +/* 49483 */ {(13<<2)|2,{69,109,0}}, +/* 49484 */ {(13<<2)|2,{69,109,0}}, +/* 49485 */ {(13<<2)|2,{69,109,0}}, +/* 49486 */ {(13<<2)|2,{69,109,0}}, +/* 49487 */ {(13<<2)|2,{69,109,0}}, +/* 49488 */ {(13<<2)|2,{69,110,0}}, +/* 49489 */ {(13<<2)|2,{69,110,0}}, +/* 49490 */ {(13<<2)|2,{69,110,0}}, +/* 49491 */ {(13<<2)|2,{69,110,0}}, +/* 49492 */ {(13<<2)|2,{69,110,0}}, +/* 49493 */ {(13<<2)|2,{69,110,0}}, +/* 49494 */ {(13<<2)|2,{69,110,0}}, +/* 49495 */ {(13<<2)|2,{69,110,0}}, +/* 49496 */ {(13<<2)|2,{69,112,0}}, +/* 49497 */ {(13<<2)|2,{69,112,0}}, +/* 49498 */ {(13<<2)|2,{69,112,0}}, +/* 49499 */ {(13<<2)|2,{69,112,0}}, +/* 49500 */ {(13<<2)|2,{69,112,0}}, +/* 49501 */ {(13<<2)|2,{69,112,0}}, +/* 49502 */ {(13<<2)|2,{69,112,0}}, +/* 49503 */ {(13<<2)|2,{69,112,0}}, +/* 49504 */ {(13<<2)|2,{69,114,0}}, +/* 49505 */ {(13<<2)|2,{69,114,0}}, +/* 49506 */ {(13<<2)|2,{69,114,0}}, +/* 49507 */ {(13<<2)|2,{69,114,0}}, +/* 49508 */ {(13<<2)|2,{69,114,0}}, +/* 49509 */ {(13<<2)|2,{69,114,0}}, +/* 49510 */ {(13<<2)|2,{69,114,0}}, +/* 49511 */ {(13<<2)|2,{69,114,0}}, +/* 49512 */ {(13<<2)|2,{69,117,0}}, +/* 49513 */ {(13<<2)|2,{69,117,0}}, +/* 49514 */ {(13<<2)|2,{69,117,0}}, +/* 49515 */ {(13<<2)|2,{69,117,0}}, +/* 49516 */ {(13<<2)|2,{69,117,0}}, +/* 49517 */ {(13<<2)|2,{69,117,0}}, +/* 49518 */ {(13<<2)|2,{69,117,0}}, +/* 49519 */ {(13<<2)|2,{69,117,0}}, +/* 49520 */ {(14<<2)|2,{69,58,0}}, +/* 49521 */ {(14<<2)|2,{69,58,0}}, +/* 49522 */ {(14<<2)|2,{69,58,0}}, +/* 49523 */ {(14<<2)|2,{69,58,0}}, +/* 49524 */ {(14<<2)|2,{69,66,0}}, +/* 49525 */ {(14<<2)|2,{69,66,0}}, +/* 49526 */ {(14<<2)|2,{69,66,0}}, +/* 49527 */ {(14<<2)|2,{69,66,0}}, +/* 49528 */ {(14<<2)|2,{69,67,0}}, +/* 49529 */ {(14<<2)|2,{69,67,0}}, +/* 49530 */ {(14<<2)|2,{69,67,0}}, +/* 49531 */ {(14<<2)|2,{69,67,0}}, +/* 49532 */ {(14<<2)|2,{69,68,0}}, +/* 49533 */ {(14<<2)|2,{69,68,0}}, +/* 49534 */ {(14<<2)|2,{69,68,0}}, +/* 49535 */ {(14<<2)|2,{69,68,0}}, +/* 49536 */ {(14<<2)|2,{69,69,0}}, +/* 49537 */ {(14<<2)|2,{69,69,0}}, +/* 49538 */ {(14<<2)|2,{69,69,0}}, +/* 49539 */ {(14<<2)|2,{69,69,0}}, +/* 49540 */ {(14<<2)|2,{69,70,0}}, +/* 49541 */ {(14<<2)|2,{69,70,0}}, +/* 49542 */ {(14<<2)|2,{69,70,0}}, +/* 49543 */ {(14<<2)|2,{69,70,0}}, +/* 49544 */ {(14<<2)|2,{69,71,0}}, +/* 49545 */ {(14<<2)|2,{69,71,0}}, +/* 49546 */ {(14<<2)|2,{69,71,0}}, +/* 49547 */ {(14<<2)|2,{69,71,0}}, +/* 49548 */ {(14<<2)|2,{69,72,0}}, +/* 49549 */ {(14<<2)|2,{69,72,0}}, +/* 49550 */ {(14<<2)|2,{69,72,0}}, +/* 49551 */ {(14<<2)|2,{69,72,0}}, +/* 49552 */ {(14<<2)|2,{69,73,0}}, +/* 49553 */ {(14<<2)|2,{69,73,0}}, +/* 49554 */ {(14<<2)|2,{69,73,0}}, +/* 49555 */ {(14<<2)|2,{69,73,0}}, +/* 49556 */ {(14<<2)|2,{69,74,0}}, +/* 49557 */ {(14<<2)|2,{69,74,0}}, +/* 49558 */ {(14<<2)|2,{69,74,0}}, +/* 49559 */ {(14<<2)|2,{69,74,0}}, +/* 49560 */ {(14<<2)|2,{69,75,0}}, +/* 49561 */ {(14<<2)|2,{69,75,0}}, +/* 49562 */ {(14<<2)|2,{69,75,0}}, +/* 49563 */ {(14<<2)|2,{69,75,0}}, +/* 49564 */ {(14<<2)|2,{69,76,0}}, +/* 49565 */ {(14<<2)|2,{69,76,0}}, +/* 49566 */ {(14<<2)|2,{69,76,0}}, +/* 49567 */ {(14<<2)|2,{69,76,0}}, +/* 49568 */ {(14<<2)|2,{69,77,0}}, +/* 49569 */ {(14<<2)|2,{69,77,0}}, +/* 49570 */ {(14<<2)|2,{69,77,0}}, +/* 49571 */ {(14<<2)|2,{69,77,0}}, +/* 49572 */ {(14<<2)|2,{69,78,0}}, +/* 49573 */ {(14<<2)|2,{69,78,0}}, +/* 49574 */ {(14<<2)|2,{69,78,0}}, +/* 49575 */ {(14<<2)|2,{69,78,0}}, +/* 49576 */ {(14<<2)|2,{69,79,0}}, +/* 49577 */ {(14<<2)|2,{69,79,0}}, +/* 49578 */ {(14<<2)|2,{69,79,0}}, +/* 49579 */ {(14<<2)|2,{69,79,0}}, +/* 49580 */ {(14<<2)|2,{69,80,0}}, +/* 49581 */ {(14<<2)|2,{69,80,0}}, +/* 49582 */ {(14<<2)|2,{69,80,0}}, +/* 49583 */ {(14<<2)|2,{69,80,0}}, +/* 49584 */ {(14<<2)|2,{69,81,0}}, +/* 49585 */ {(14<<2)|2,{69,81,0}}, +/* 49586 */ {(14<<2)|2,{69,81,0}}, +/* 49587 */ {(14<<2)|2,{69,81,0}}, +/* 49588 */ {(14<<2)|2,{69,82,0}}, +/* 49589 */ {(14<<2)|2,{69,82,0}}, +/* 49590 */ {(14<<2)|2,{69,82,0}}, +/* 49591 */ {(14<<2)|2,{69,82,0}}, +/* 49592 */ {(14<<2)|2,{69,83,0}}, +/* 49593 */ {(14<<2)|2,{69,83,0}}, +/* 49594 */ {(14<<2)|2,{69,83,0}}, +/* 49595 */ {(14<<2)|2,{69,83,0}}, +/* 49596 */ {(14<<2)|2,{69,84,0}}, +/* 49597 */ {(14<<2)|2,{69,84,0}}, +/* 49598 */ {(14<<2)|2,{69,84,0}}, +/* 49599 */ {(14<<2)|2,{69,84,0}}, +/* 49600 */ {(14<<2)|2,{69,85,0}}, +/* 49601 */ {(14<<2)|2,{69,85,0}}, +/* 49602 */ {(14<<2)|2,{69,85,0}}, +/* 49603 */ {(14<<2)|2,{69,85,0}}, +/* 49604 */ {(14<<2)|2,{69,86,0}}, +/* 49605 */ {(14<<2)|2,{69,86,0}}, +/* 49606 */ {(14<<2)|2,{69,86,0}}, +/* 49607 */ {(14<<2)|2,{69,86,0}}, +/* 49608 */ {(14<<2)|2,{69,87,0}}, +/* 49609 */ {(14<<2)|2,{69,87,0}}, +/* 49610 */ {(14<<2)|2,{69,87,0}}, +/* 49611 */ {(14<<2)|2,{69,87,0}}, +/* 49612 */ {(14<<2)|2,{69,89,0}}, +/* 49613 */ {(14<<2)|2,{69,89,0}}, +/* 49614 */ {(14<<2)|2,{69,89,0}}, +/* 49615 */ {(14<<2)|2,{69,89,0}}, +/* 49616 */ {(14<<2)|2,{69,106,0}}, +/* 49617 */ {(14<<2)|2,{69,106,0}}, +/* 49618 */ {(14<<2)|2,{69,106,0}}, +/* 49619 */ {(14<<2)|2,{69,106,0}}, +/* 49620 */ {(14<<2)|2,{69,107,0}}, +/* 49621 */ {(14<<2)|2,{69,107,0}}, +/* 49622 */ {(14<<2)|2,{69,107,0}}, +/* 49623 */ {(14<<2)|2,{69,107,0}}, +/* 49624 */ {(14<<2)|2,{69,113,0}}, +/* 49625 */ {(14<<2)|2,{69,113,0}}, +/* 49626 */ {(14<<2)|2,{69,113,0}}, +/* 49627 */ {(14<<2)|2,{69,113,0}}, +/* 49628 */ {(14<<2)|2,{69,118,0}}, +/* 49629 */ {(14<<2)|2,{69,118,0}}, +/* 49630 */ {(14<<2)|2,{69,118,0}}, +/* 49631 */ {(14<<2)|2,{69,118,0}}, +/* 49632 */ {(14<<2)|2,{69,119,0}}, +/* 49633 */ {(14<<2)|2,{69,119,0}}, +/* 49634 */ {(14<<2)|2,{69,119,0}}, +/* 49635 */ {(14<<2)|2,{69,119,0}}, +/* 49636 */ {(14<<2)|2,{69,120,0}}, +/* 49637 */ {(14<<2)|2,{69,120,0}}, +/* 49638 */ {(14<<2)|2,{69,120,0}}, +/* 49639 */ {(14<<2)|2,{69,120,0}}, +/* 49640 */ {(14<<2)|2,{69,121,0}}, +/* 49641 */ {(14<<2)|2,{69,121,0}}, +/* 49642 */ {(14<<2)|2,{69,121,0}}, +/* 49643 */ {(14<<2)|2,{69,121,0}}, +/* 49644 */ {(14<<2)|2,{69,122,0}}, +/* 49645 */ {(14<<2)|2,{69,122,0}}, +/* 49646 */ {(14<<2)|2,{69,122,0}}, +/* 49647 */ {(14<<2)|2,{69,122,0}}, +/* 49648 */ {(15<<2)|2,{69,38,0}}, +/* 49649 */ {(15<<2)|2,{69,38,0}}, +/* 49650 */ {(15<<2)|2,{69,42,0}}, +/* 49651 */ {(15<<2)|2,{69,42,0}}, +/* 49652 */ {(15<<2)|2,{69,44,0}}, +/* 49653 */ {(15<<2)|2,{69,44,0}}, +/* 49654 */ {(15<<2)|2,{69,59,0}}, +/* 49655 */ {(15<<2)|2,{69,59,0}}, +/* 49656 */ {(15<<2)|2,{69,88,0}}, +/* 49657 */ {(15<<2)|2,{69,88,0}}, +/* 49658 */ {(15<<2)|2,{69,90,0}}, +/* 49659 */ {(15<<2)|2,{69,90,0}}, +/* 49660 */ {(7<<2)|1,{69,0,0}}, +/* 49661 */ {(7<<2)|1,{69,0,0}}, +/* 49662 */ {(7<<2)|1,{69,0,0}}, +/* 49663 */ {(7<<2)|1,{69,0,0}}, +/* 49664 */ {(12<<2)|2,{70,48,0}}, +/* 49665 */ {(12<<2)|2,{70,48,0}}, +/* 49666 */ {(12<<2)|2,{70,48,0}}, +/* 49667 */ {(12<<2)|2,{70,48,0}}, +/* 49668 */ {(12<<2)|2,{70,48,0}}, +/* 49669 */ {(12<<2)|2,{70,48,0}}, +/* 49670 */ {(12<<2)|2,{70,48,0}}, +/* 49671 */ {(12<<2)|2,{70,48,0}}, +/* 49672 */ {(12<<2)|2,{70,48,0}}, +/* 49673 */ {(12<<2)|2,{70,48,0}}, +/* 49674 */ {(12<<2)|2,{70,48,0}}, +/* 49675 */ {(12<<2)|2,{70,48,0}}, +/* 49676 */ {(12<<2)|2,{70,48,0}}, +/* 49677 */ {(12<<2)|2,{70,48,0}}, +/* 49678 */ {(12<<2)|2,{70,48,0}}, +/* 49679 */ {(12<<2)|2,{70,48,0}}, +/* 49680 */ {(12<<2)|2,{70,49,0}}, +/* 49681 */ {(12<<2)|2,{70,49,0}}, +/* 49682 */ {(12<<2)|2,{70,49,0}}, +/* 49683 */ {(12<<2)|2,{70,49,0}}, +/* 49684 */ {(12<<2)|2,{70,49,0}}, +/* 49685 */ {(12<<2)|2,{70,49,0}}, +/* 49686 */ {(12<<2)|2,{70,49,0}}, +/* 49687 */ {(12<<2)|2,{70,49,0}}, +/* 49688 */ {(12<<2)|2,{70,49,0}}, +/* 49689 */ {(12<<2)|2,{70,49,0}}, +/* 49690 */ {(12<<2)|2,{70,49,0}}, +/* 49691 */ {(12<<2)|2,{70,49,0}}, +/* 49692 */ {(12<<2)|2,{70,49,0}}, +/* 49693 */ {(12<<2)|2,{70,49,0}}, +/* 49694 */ {(12<<2)|2,{70,49,0}}, +/* 49695 */ {(12<<2)|2,{70,49,0}}, +/* 49696 */ {(12<<2)|2,{70,50,0}}, +/* 49697 */ {(12<<2)|2,{70,50,0}}, +/* 49698 */ {(12<<2)|2,{70,50,0}}, +/* 49699 */ {(12<<2)|2,{70,50,0}}, +/* 49700 */ {(12<<2)|2,{70,50,0}}, +/* 49701 */ {(12<<2)|2,{70,50,0}}, +/* 49702 */ {(12<<2)|2,{70,50,0}}, +/* 49703 */ {(12<<2)|2,{70,50,0}}, +/* 49704 */ {(12<<2)|2,{70,50,0}}, +/* 49705 */ {(12<<2)|2,{70,50,0}}, +/* 49706 */ {(12<<2)|2,{70,50,0}}, +/* 49707 */ {(12<<2)|2,{70,50,0}}, +/* 49708 */ {(12<<2)|2,{70,50,0}}, +/* 49709 */ {(12<<2)|2,{70,50,0}}, +/* 49710 */ {(12<<2)|2,{70,50,0}}, +/* 49711 */ {(12<<2)|2,{70,50,0}}, +/* 49712 */ {(12<<2)|2,{70,97,0}}, +/* 49713 */ {(12<<2)|2,{70,97,0}}, +/* 49714 */ {(12<<2)|2,{70,97,0}}, +/* 49715 */ {(12<<2)|2,{70,97,0}}, +/* 49716 */ {(12<<2)|2,{70,97,0}}, +/* 49717 */ {(12<<2)|2,{70,97,0}}, +/* 49718 */ {(12<<2)|2,{70,97,0}}, +/* 49719 */ {(12<<2)|2,{70,97,0}}, +/* 49720 */ {(12<<2)|2,{70,97,0}}, +/* 49721 */ {(12<<2)|2,{70,97,0}}, +/* 49722 */ {(12<<2)|2,{70,97,0}}, +/* 49723 */ {(12<<2)|2,{70,97,0}}, +/* 49724 */ {(12<<2)|2,{70,97,0}}, +/* 49725 */ {(12<<2)|2,{70,97,0}}, +/* 49726 */ {(12<<2)|2,{70,97,0}}, +/* 49727 */ {(12<<2)|2,{70,97,0}}, +/* 49728 */ {(12<<2)|2,{70,99,0}}, +/* 49729 */ {(12<<2)|2,{70,99,0}}, +/* 49730 */ {(12<<2)|2,{70,99,0}}, +/* 49731 */ {(12<<2)|2,{70,99,0}}, +/* 49732 */ {(12<<2)|2,{70,99,0}}, +/* 49733 */ {(12<<2)|2,{70,99,0}}, +/* 49734 */ {(12<<2)|2,{70,99,0}}, +/* 49735 */ {(12<<2)|2,{70,99,0}}, +/* 49736 */ {(12<<2)|2,{70,99,0}}, +/* 49737 */ {(12<<2)|2,{70,99,0}}, +/* 49738 */ {(12<<2)|2,{70,99,0}}, +/* 49739 */ {(12<<2)|2,{70,99,0}}, +/* 49740 */ {(12<<2)|2,{70,99,0}}, +/* 49741 */ {(12<<2)|2,{70,99,0}}, +/* 49742 */ {(12<<2)|2,{70,99,0}}, +/* 49743 */ {(12<<2)|2,{70,99,0}}, +/* 49744 */ {(12<<2)|2,{70,101,0}}, +/* 49745 */ {(12<<2)|2,{70,101,0}}, +/* 49746 */ {(12<<2)|2,{70,101,0}}, +/* 49747 */ {(12<<2)|2,{70,101,0}}, +/* 49748 */ {(12<<2)|2,{70,101,0}}, +/* 49749 */ {(12<<2)|2,{70,101,0}}, +/* 49750 */ {(12<<2)|2,{70,101,0}}, +/* 49751 */ {(12<<2)|2,{70,101,0}}, +/* 49752 */ {(12<<2)|2,{70,101,0}}, +/* 49753 */ {(12<<2)|2,{70,101,0}}, +/* 49754 */ {(12<<2)|2,{70,101,0}}, +/* 49755 */ {(12<<2)|2,{70,101,0}}, +/* 49756 */ {(12<<2)|2,{70,101,0}}, +/* 49757 */ {(12<<2)|2,{70,101,0}}, +/* 49758 */ {(12<<2)|2,{70,101,0}}, +/* 49759 */ {(12<<2)|2,{70,101,0}}, +/* 49760 */ {(12<<2)|2,{70,105,0}}, +/* 49761 */ {(12<<2)|2,{70,105,0}}, +/* 49762 */ {(12<<2)|2,{70,105,0}}, +/* 49763 */ {(12<<2)|2,{70,105,0}}, +/* 49764 */ {(12<<2)|2,{70,105,0}}, +/* 49765 */ {(12<<2)|2,{70,105,0}}, +/* 49766 */ {(12<<2)|2,{70,105,0}}, +/* 49767 */ {(12<<2)|2,{70,105,0}}, +/* 49768 */ {(12<<2)|2,{70,105,0}}, +/* 49769 */ {(12<<2)|2,{70,105,0}}, +/* 49770 */ {(12<<2)|2,{70,105,0}}, +/* 49771 */ {(12<<2)|2,{70,105,0}}, +/* 49772 */ {(12<<2)|2,{70,105,0}}, +/* 49773 */ {(12<<2)|2,{70,105,0}}, +/* 49774 */ {(12<<2)|2,{70,105,0}}, +/* 49775 */ {(12<<2)|2,{70,105,0}}, +/* 49776 */ {(12<<2)|2,{70,111,0}}, +/* 49777 */ {(12<<2)|2,{70,111,0}}, +/* 49778 */ {(12<<2)|2,{70,111,0}}, +/* 49779 */ {(12<<2)|2,{70,111,0}}, +/* 49780 */ {(12<<2)|2,{70,111,0}}, +/* 49781 */ {(12<<2)|2,{70,111,0}}, +/* 49782 */ {(12<<2)|2,{70,111,0}}, +/* 49783 */ {(12<<2)|2,{70,111,0}}, +/* 49784 */ {(12<<2)|2,{70,111,0}}, +/* 49785 */ {(12<<2)|2,{70,111,0}}, +/* 49786 */ {(12<<2)|2,{70,111,0}}, +/* 49787 */ {(12<<2)|2,{70,111,0}}, +/* 49788 */ {(12<<2)|2,{70,111,0}}, +/* 49789 */ {(12<<2)|2,{70,111,0}}, +/* 49790 */ {(12<<2)|2,{70,111,0}}, +/* 49791 */ {(12<<2)|2,{70,111,0}}, +/* 49792 */ {(12<<2)|2,{70,115,0}}, +/* 49793 */ {(12<<2)|2,{70,115,0}}, +/* 49794 */ {(12<<2)|2,{70,115,0}}, +/* 49795 */ {(12<<2)|2,{70,115,0}}, +/* 49796 */ {(12<<2)|2,{70,115,0}}, +/* 49797 */ {(12<<2)|2,{70,115,0}}, +/* 49798 */ {(12<<2)|2,{70,115,0}}, +/* 49799 */ {(12<<2)|2,{70,115,0}}, +/* 49800 */ {(12<<2)|2,{70,115,0}}, +/* 49801 */ {(12<<2)|2,{70,115,0}}, +/* 49802 */ {(12<<2)|2,{70,115,0}}, +/* 49803 */ {(12<<2)|2,{70,115,0}}, +/* 49804 */ {(12<<2)|2,{70,115,0}}, +/* 49805 */ {(12<<2)|2,{70,115,0}}, +/* 49806 */ {(12<<2)|2,{70,115,0}}, +/* 49807 */ {(12<<2)|2,{70,115,0}}, +/* 49808 */ {(12<<2)|2,{70,116,0}}, +/* 49809 */ {(12<<2)|2,{70,116,0}}, +/* 49810 */ {(12<<2)|2,{70,116,0}}, +/* 49811 */ {(12<<2)|2,{70,116,0}}, +/* 49812 */ {(12<<2)|2,{70,116,0}}, +/* 49813 */ {(12<<2)|2,{70,116,0}}, +/* 49814 */ {(12<<2)|2,{70,116,0}}, +/* 49815 */ {(12<<2)|2,{70,116,0}}, +/* 49816 */ {(12<<2)|2,{70,116,0}}, +/* 49817 */ {(12<<2)|2,{70,116,0}}, +/* 49818 */ {(12<<2)|2,{70,116,0}}, +/* 49819 */ {(12<<2)|2,{70,116,0}}, +/* 49820 */ {(12<<2)|2,{70,116,0}}, +/* 49821 */ {(12<<2)|2,{70,116,0}}, +/* 49822 */ {(12<<2)|2,{70,116,0}}, +/* 49823 */ {(12<<2)|2,{70,116,0}}, +/* 49824 */ {(13<<2)|2,{70,32,0}}, +/* 49825 */ {(13<<2)|2,{70,32,0}}, +/* 49826 */ {(13<<2)|2,{70,32,0}}, +/* 49827 */ {(13<<2)|2,{70,32,0}}, +/* 49828 */ {(13<<2)|2,{70,32,0}}, +/* 49829 */ {(13<<2)|2,{70,32,0}}, +/* 49830 */ {(13<<2)|2,{70,32,0}}, +/* 49831 */ {(13<<2)|2,{70,32,0}}, +/* 49832 */ {(13<<2)|2,{70,37,0}}, +/* 49833 */ {(13<<2)|2,{70,37,0}}, +/* 49834 */ {(13<<2)|2,{70,37,0}}, +/* 49835 */ {(13<<2)|2,{70,37,0}}, +/* 49836 */ {(13<<2)|2,{70,37,0}}, +/* 49837 */ {(13<<2)|2,{70,37,0}}, +/* 49838 */ {(13<<2)|2,{70,37,0}}, +/* 49839 */ {(13<<2)|2,{70,37,0}}, +/* 49840 */ {(13<<2)|2,{70,45,0}}, +/* 49841 */ {(13<<2)|2,{70,45,0}}, +/* 49842 */ {(13<<2)|2,{70,45,0}}, +/* 49843 */ {(13<<2)|2,{70,45,0}}, +/* 49844 */ {(13<<2)|2,{70,45,0}}, +/* 49845 */ {(13<<2)|2,{70,45,0}}, +/* 49846 */ {(13<<2)|2,{70,45,0}}, +/* 49847 */ {(13<<2)|2,{70,45,0}}, +/* 49848 */ {(13<<2)|2,{70,46,0}}, +/* 49849 */ {(13<<2)|2,{70,46,0}}, +/* 49850 */ {(13<<2)|2,{70,46,0}}, +/* 49851 */ {(13<<2)|2,{70,46,0}}, +/* 49852 */ {(13<<2)|2,{70,46,0}}, +/* 49853 */ {(13<<2)|2,{70,46,0}}, +/* 49854 */ {(13<<2)|2,{70,46,0}}, +/* 49855 */ {(13<<2)|2,{70,46,0}}, +/* 49856 */ {(13<<2)|2,{70,47,0}}, +/* 49857 */ {(13<<2)|2,{70,47,0}}, +/* 49858 */ {(13<<2)|2,{70,47,0}}, +/* 49859 */ {(13<<2)|2,{70,47,0}}, +/* 49860 */ {(13<<2)|2,{70,47,0}}, +/* 49861 */ {(13<<2)|2,{70,47,0}}, +/* 49862 */ {(13<<2)|2,{70,47,0}}, +/* 49863 */ {(13<<2)|2,{70,47,0}}, +/* 49864 */ {(13<<2)|2,{70,51,0}}, +/* 49865 */ {(13<<2)|2,{70,51,0}}, +/* 49866 */ {(13<<2)|2,{70,51,0}}, +/* 49867 */ {(13<<2)|2,{70,51,0}}, +/* 49868 */ {(13<<2)|2,{70,51,0}}, +/* 49869 */ {(13<<2)|2,{70,51,0}}, +/* 49870 */ {(13<<2)|2,{70,51,0}}, +/* 49871 */ {(13<<2)|2,{70,51,0}}, +/* 49872 */ {(13<<2)|2,{70,52,0}}, +/* 49873 */ {(13<<2)|2,{70,52,0}}, +/* 49874 */ {(13<<2)|2,{70,52,0}}, +/* 49875 */ {(13<<2)|2,{70,52,0}}, +/* 49876 */ {(13<<2)|2,{70,52,0}}, +/* 49877 */ {(13<<2)|2,{70,52,0}}, +/* 49878 */ {(13<<2)|2,{70,52,0}}, +/* 49879 */ {(13<<2)|2,{70,52,0}}, +/* 49880 */ {(13<<2)|2,{70,53,0}}, +/* 49881 */ {(13<<2)|2,{70,53,0}}, +/* 49882 */ {(13<<2)|2,{70,53,0}}, +/* 49883 */ {(13<<2)|2,{70,53,0}}, +/* 49884 */ {(13<<2)|2,{70,53,0}}, +/* 49885 */ {(13<<2)|2,{70,53,0}}, +/* 49886 */ {(13<<2)|2,{70,53,0}}, +/* 49887 */ {(13<<2)|2,{70,53,0}}, +/* 49888 */ {(13<<2)|2,{70,54,0}}, +/* 49889 */ {(13<<2)|2,{70,54,0}}, +/* 49890 */ {(13<<2)|2,{70,54,0}}, +/* 49891 */ {(13<<2)|2,{70,54,0}}, +/* 49892 */ {(13<<2)|2,{70,54,0}}, +/* 49893 */ {(13<<2)|2,{70,54,0}}, +/* 49894 */ {(13<<2)|2,{70,54,0}}, +/* 49895 */ {(13<<2)|2,{70,54,0}}, +/* 49896 */ {(13<<2)|2,{70,55,0}}, +/* 49897 */ {(13<<2)|2,{70,55,0}}, +/* 49898 */ {(13<<2)|2,{70,55,0}}, +/* 49899 */ {(13<<2)|2,{70,55,0}}, +/* 49900 */ {(13<<2)|2,{70,55,0}}, +/* 49901 */ {(13<<2)|2,{70,55,0}}, +/* 49902 */ {(13<<2)|2,{70,55,0}}, +/* 49903 */ {(13<<2)|2,{70,55,0}}, +/* 49904 */ {(13<<2)|2,{70,56,0}}, +/* 49905 */ {(13<<2)|2,{70,56,0}}, +/* 49906 */ {(13<<2)|2,{70,56,0}}, +/* 49907 */ {(13<<2)|2,{70,56,0}}, +/* 49908 */ {(13<<2)|2,{70,56,0}}, +/* 49909 */ {(13<<2)|2,{70,56,0}}, +/* 49910 */ {(13<<2)|2,{70,56,0}}, +/* 49911 */ {(13<<2)|2,{70,56,0}}, +/* 49912 */ {(13<<2)|2,{70,57,0}}, +/* 49913 */ {(13<<2)|2,{70,57,0}}, +/* 49914 */ {(13<<2)|2,{70,57,0}}, +/* 49915 */ {(13<<2)|2,{70,57,0}}, +/* 49916 */ {(13<<2)|2,{70,57,0}}, +/* 49917 */ {(13<<2)|2,{70,57,0}}, +/* 49918 */ {(13<<2)|2,{70,57,0}}, +/* 49919 */ {(13<<2)|2,{70,57,0}}, +/* 49920 */ {(13<<2)|2,{70,61,0}}, +/* 49921 */ {(13<<2)|2,{70,61,0}}, +/* 49922 */ {(13<<2)|2,{70,61,0}}, +/* 49923 */ {(13<<2)|2,{70,61,0}}, +/* 49924 */ {(13<<2)|2,{70,61,0}}, +/* 49925 */ {(13<<2)|2,{70,61,0}}, +/* 49926 */ {(13<<2)|2,{70,61,0}}, +/* 49927 */ {(13<<2)|2,{70,61,0}}, +/* 49928 */ {(13<<2)|2,{70,65,0}}, +/* 49929 */ {(13<<2)|2,{70,65,0}}, +/* 49930 */ {(13<<2)|2,{70,65,0}}, +/* 49931 */ {(13<<2)|2,{70,65,0}}, +/* 49932 */ {(13<<2)|2,{70,65,0}}, +/* 49933 */ {(13<<2)|2,{70,65,0}}, +/* 49934 */ {(13<<2)|2,{70,65,0}}, +/* 49935 */ {(13<<2)|2,{70,65,0}}, +/* 49936 */ {(13<<2)|2,{70,95,0}}, +/* 49937 */ {(13<<2)|2,{70,95,0}}, +/* 49938 */ {(13<<2)|2,{70,95,0}}, +/* 49939 */ {(13<<2)|2,{70,95,0}}, +/* 49940 */ {(13<<2)|2,{70,95,0}}, +/* 49941 */ {(13<<2)|2,{70,95,0}}, +/* 49942 */ {(13<<2)|2,{70,95,0}}, +/* 49943 */ {(13<<2)|2,{70,95,0}}, +/* 49944 */ {(13<<2)|2,{70,98,0}}, +/* 49945 */ {(13<<2)|2,{70,98,0}}, +/* 49946 */ {(13<<2)|2,{70,98,0}}, +/* 49947 */ {(13<<2)|2,{70,98,0}}, +/* 49948 */ {(13<<2)|2,{70,98,0}}, +/* 49949 */ {(13<<2)|2,{70,98,0}}, +/* 49950 */ {(13<<2)|2,{70,98,0}}, +/* 49951 */ {(13<<2)|2,{70,98,0}}, +/* 49952 */ {(13<<2)|2,{70,100,0}}, +/* 49953 */ {(13<<2)|2,{70,100,0}}, +/* 49954 */ {(13<<2)|2,{70,100,0}}, +/* 49955 */ {(13<<2)|2,{70,100,0}}, +/* 49956 */ {(13<<2)|2,{70,100,0}}, +/* 49957 */ {(13<<2)|2,{70,100,0}}, +/* 49958 */ {(13<<2)|2,{70,100,0}}, +/* 49959 */ {(13<<2)|2,{70,100,0}}, +/* 49960 */ {(13<<2)|2,{70,102,0}}, +/* 49961 */ {(13<<2)|2,{70,102,0}}, +/* 49962 */ {(13<<2)|2,{70,102,0}}, +/* 49963 */ {(13<<2)|2,{70,102,0}}, +/* 49964 */ {(13<<2)|2,{70,102,0}}, +/* 49965 */ {(13<<2)|2,{70,102,0}}, +/* 49966 */ {(13<<2)|2,{70,102,0}}, +/* 49967 */ {(13<<2)|2,{70,102,0}}, +/* 49968 */ {(13<<2)|2,{70,103,0}}, +/* 49969 */ {(13<<2)|2,{70,103,0}}, +/* 49970 */ {(13<<2)|2,{70,103,0}}, +/* 49971 */ {(13<<2)|2,{70,103,0}}, +/* 49972 */ {(13<<2)|2,{70,103,0}}, +/* 49973 */ {(13<<2)|2,{70,103,0}}, +/* 49974 */ {(13<<2)|2,{70,103,0}}, +/* 49975 */ {(13<<2)|2,{70,103,0}}, +/* 49976 */ {(13<<2)|2,{70,104,0}}, +/* 49977 */ {(13<<2)|2,{70,104,0}}, +/* 49978 */ {(13<<2)|2,{70,104,0}}, +/* 49979 */ {(13<<2)|2,{70,104,0}}, +/* 49980 */ {(13<<2)|2,{70,104,0}}, +/* 49981 */ {(13<<2)|2,{70,104,0}}, +/* 49982 */ {(13<<2)|2,{70,104,0}}, +/* 49983 */ {(13<<2)|2,{70,104,0}}, +/* 49984 */ {(13<<2)|2,{70,108,0}}, +/* 49985 */ {(13<<2)|2,{70,108,0}}, +/* 49986 */ {(13<<2)|2,{70,108,0}}, +/* 49987 */ {(13<<2)|2,{70,108,0}}, +/* 49988 */ {(13<<2)|2,{70,108,0}}, +/* 49989 */ {(13<<2)|2,{70,108,0}}, +/* 49990 */ {(13<<2)|2,{70,108,0}}, +/* 49991 */ {(13<<2)|2,{70,108,0}}, +/* 49992 */ {(13<<2)|2,{70,109,0}}, +/* 49993 */ {(13<<2)|2,{70,109,0}}, +/* 49994 */ {(13<<2)|2,{70,109,0}}, +/* 49995 */ {(13<<2)|2,{70,109,0}}, +/* 49996 */ {(13<<2)|2,{70,109,0}}, +/* 49997 */ {(13<<2)|2,{70,109,0}}, +/* 49998 */ {(13<<2)|2,{70,109,0}}, +/* 49999 */ {(13<<2)|2,{70,109,0}}, +/* 50000 */ {(13<<2)|2,{70,110,0}}, +/* 50001 */ {(13<<2)|2,{70,110,0}}, +/* 50002 */ {(13<<2)|2,{70,110,0}}, +/* 50003 */ {(13<<2)|2,{70,110,0}}, +/* 50004 */ {(13<<2)|2,{70,110,0}}, +/* 50005 */ {(13<<2)|2,{70,110,0}}, +/* 50006 */ {(13<<2)|2,{70,110,0}}, +/* 50007 */ {(13<<2)|2,{70,110,0}}, +/* 50008 */ {(13<<2)|2,{70,112,0}}, +/* 50009 */ {(13<<2)|2,{70,112,0}}, +/* 50010 */ {(13<<2)|2,{70,112,0}}, +/* 50011 */ {(13<<2)|2,{70,112,0}}, +/* 50012 */ {(13<<2)|2,{70,112,0}}, +/* 50013 */ {(13<<2)|2,{70,112,0}}, +/* 50014 */ {(13<<2)|2,{70,112,0}}, +/* 50015 */ {(13<<2)|2,{70,112,0}}, +/* 50016 */ {(13<<2)|2,{70,114,0}}, +/* 50017 */ {(13<<2)|2,{70,114,0}}, +/* 50018 */ {(13<<2)|2,{70,114,0}}, +/* 50019 */ {(13<<2)|2,{70,114,0}}, +/* 50020 */ {(13<<2)|2,{70,114,0}}, +/* 50021 */ {(13<<2)|2,{70,114,0}}, +/* 50022 */ {(13<<2)|2,{70,114,0}}, +/* 50023 */ {(13<<2)|2,{70,114,0}}, +/* 50024 */ {(13<<2)|2,{70,117,0}}, +/* 50025 */ {(13<<2)|2,{70,117,0}}, +/* 50026 */ {(13<<2)|2,{70,117,0}}, +/* 50027 */ {(13<<2)|2,{70,117,0}}, +/* 50028 */ {(13<<2)|2,{70,117,0}}, +/* 50029 */ {(13<<2)|2,{70,117,0}}, +/* 50030 */ {(13<<2)|2,{70,117,0}}, +/* 50031 */ {(13<<2)|2,{70,117,0}}, +/* 50032 */ {(14<<2)|2,{70,58,0}}, +/* 50033 */ {(14<<2)|2,{70,58,0}}, +/* 50034 */ {(14<<2)|2,{70,58,0}}, +/* 50035 */ {(14<<2)|2,{70,58,0}}, +/* 50036 */ {(14<<2)|2,{70,66,0}}, +/* 50037 */ {(14<<2)|2,{70,66,0}}, +/* 50038 */ {(14<<2)|2,{70,66,0}}, +/* 50039 */ {(14<<2)|2,{70,66,0}}, +/* 50040 */ {(14<<2)|2,{70,67,0}}, +/* 50041 */ {(14<<2)|2,{70,67,0}}, +/* 50042 */ {(14<<2)|2,{70,67,0}}, +/* 50043 */ {(14<<2)|2,{70,67,0}}, +/* 50044 */ {(14<<2)|2,{70,68,0}}, +/* 50045 */ {(14<<2)|2,{70,68,0}}, +/* 50046 */ {(14<<2)|2,{70,68,0}}, +/* 50047 */ {(14<<2)|2,{70,68,0}}, +/* 50048 */ {(14<<2)|2,{70,69,0}}, +/* 50049 */ {(14<<2)|2,{70,69,0}}, +/* 50050 */ {(14<<2)|2,{70,69,0}}, +/* 50051 */ {(14<<2)|2,{70,69,0}}, +/* 50052 */ {(14<<2)|2,{70,70,0}}, +/* 50053 */ {(14<<2)|2,{70,70,0}}, +/* 50054 */ {(14<<2)|2,{70,70,0}}, +/* 50055 */ {(14<<2)|2,{70,70,0}}, +/* 50056 */ {(14<<2)|2,{70,71,0}}, +/* 50057 */ {(14<<2)|2,{70,71,0}}, +/* 50058 */ {(14<<2)|2,{70,71,0}}, +/* 50059 */ {(14<<2)|2,{70,71,0}}, +/* 50060 */ {(14<<2)|2,{70,72,0}}, +/* 50061 */ {(14<<2)|2,{70,72,0}}, +/* 50062 */ {(14<<2)|2,{70,72,0}}, +/* 50063 */ {(14<<2)|2,{70,72,0}}, +/* 50064 */ {(14<<2)|2,{70,73,0}}, +/* 50065 */ {(14<<2)|2,{70,73,0}}, +/* 50066 */ {(14<<2)|2,{70,73,0}}, +/* 50067 */ {(14<<2)|2,{70,73,0}}, +/* 50068 */ {(14<<2)|2,{70,74,0}}, +/* 50069 */ {(14<<2)|2,{70,74,0}}, +/* 50070 */ {(14<<2)|2,{70,74,0}}, +/* 50071 */ {(14<<2)|2,{70,74,0}}, +/* 50072 */ {(14<<2)|2,{70,75,0}}, +/* 50073 */ {(14<<2)|2,{70,75,0}}, +/* 50074 */ {(14<<2)|2,{70,75,0}}, +/* 50075 */ {(14<<2)|2,{70,75,0}}, +/* 50076 */ {(14<<2)|2,{70,76,0}}, +/* 50077 */ {(14<<2)|2,{70,76,0}}, +/* 50078 */ {(14<<2)|2,{70,76,0}}, +/* 50079 */ {(14<<2)|2,{70,76,0}}, +/* 50080 */ {(14<<2)|2,{70,77,0}}, +/* 50081 */ {(14<<2)|2,{70,77,0}}, +/* 50082 */ {(14<<2)|2,{70,77,0}}, +/* 50083 */ {(14<<2)|2,{70,77,0}}, +/* 50084 */ {(14<<2)|2,{70,78,0}}, +/* 50085 */ {(14<<2)|2,{70,78,0}}, +/* 50086 */ {(14<<2)|2,{70,78,0}}, +/* 50087 */ {(14<<2)|2,{70,78,0}}, +/* 50088 */ {(14<<2)|2,{70,79,0}}, +/* 50089 */ {(14<<2)|2,{70,79,0}}, +/* 50090 */ {(14<<2)|2,{70,79,0}}, +/* 50091 */ {(14<<2)|2,{70,79,0}}, +/* 50092 */ {(14<<2)|2,{70,80,0}}, +/* 50093 */ {(14<<2)|2,{70,80,0}}, +/* 50094 */ {(14<<2)|2,{70,80,0}}, +/* 50095 */ {(14<<2)|2,{70,80,0}}, +/* 50096 */ {(14<<2)|2,{70,81,0}}, +/* 50097 */ {(14<<2)|2,{70,81,0}}, +/* 50098 */ {(14<<2)|2,{70,81,0}}, +/* 50099 */ {(14<<2)|2,{70,81,0}}, +/* 50100 */ {(14<<2)|2,{70,82,0}}, +/* 50101 */ {(14<<2)|2,{70,82,0}}, +/* 50102 */ {(14<<2)|2,{70,82,0}}, +/* 50103 */ {(14<<2)|2,{70,82,0}}, +/* 50104 */ {(14<<2)|2,{70,83,0}}, +/* 50105 */ {(14<<2)|2,{70,83,0}}, +/* 50106 */ {(14<<2)|2,{70,83,0}}, +/* 50107 */ {(14<<2)|2,{70,83,0}}, +/* 50108 */ {(14<<2)|2,{70,84,0}}, +/* 50109 */ {(14<<2)|2,{70,84,0}}, +/* 50110 */ {(14<<2)|2,{70,84,0}}, +/* 50111 */ {(14<<2)|2,{70,84,0}}, +/* 50112 */ {(14<<2)|2,{70,85,0}}, +/* 50113 */ {(14<<2)|2,{70,85,0}}, +/* 50114 */ {(14<<2)|2,{70,85,0}}, +/* 50115 */ {(14<<2)|2,{70,85,0}}, +/* 50116 */ {(14<<2)|2,{70,86,0}}, +/* 50117 */ {(14<<2)|2,{70,86,0}}, +/* 50118 */ {(14<<2)|2,{70,86,0}}, +/* 50119 */ {(14<<2)|2,{70,86,0}}, +/* 50120 */ {(14<<2)|2,{70,87,0}}, +/* 50121 */ {(14<<2)|2,{70,87,0}}, +/* 50122 */ {(14<<2)|2,{70,87,0}}, +/* 50123 */ {(14<<2)|2,{70,87,0}}, +/* 50124 */ {(14<<2)|2,{70,89,0}}, +/* 50125 */ {(14<<2)|2,{70,89,0}}, +/* 50126 */ {(14<<2)|2,{70,89,0}}, +/* 50127 */ {(14<<2)|2,{70,89,0}}, +/* 50128 */ {(14<<2)|2,{70,106,0}}, +/* 50129 */ {(14<<2)|2,{70,106,0}}, +/* 50130 */ {(14<<2)|2,{70,106,0}}, +/* 50131 */ {(14<<2)|2,{70,106,0}}, +/* 50132 */ {(14<<2)|2,{70,107,0}}, +/* 50133 */ {(14<<2)|2,{70,107,0}}, +/* 50134 */ {(14<<2)|2,{70,107,0}}, +/* 50135 */ {(14<<2)|2,{70,107,0}}, +/* 50136 */ {(14<<2)|2,{70,113,0}}, +/* 50137 */ {(14<<2)|2,{70,113,0}}, +/* 50138 */ {(14<<2)|2,{70,113,0}}, +/* 50139 */ {(14<<2)|2,{70,113,0}}, +/* 50140 */ {(14<<2)|2,{70,118,0}}, +/* 50141 */ {(14<<2)|2,{70,118,0}}, +/* 50142 */ {(14<<2)|2,{70,118,0}}, +/* 50143 */ {(14<<2)|2,{70,118,0}}, +/* 50144 */ {(14<<2)|2,{70,119,0}}, +/* 50145 */ {(14<<2)|2,{70,119,0}}, +/* 50146 */ {(14<<2)|2,{70,119,0}}, +/* 50147 */ {(14<<2)|2,{70,119,0}}, +/* 50148 */ {(14<<2)|2,{70,120,0}}, +/* 50149 */ {(14<<2)|2,{70,120,0}}, +/* 50150 */ {(14<<2)|2,{70,120,0}}, +/* 50151 */ {(14<<2)|2,{70,120,0}}, +/* 50152 */ {(14<<2)|2,{70,121,0}}, +/* 50153 */ {(14<<2)|2,{70,121,0}}, +/* 50154 */ {(14<<2)|2,{70,121,0}}, +/* 50155 */ {(14<<2)|2,{70,121,0}}, +/* 50156 */ {(14<<2)|2,{70,122,0}}, +/* 50157 */ {(14<<2)|2,{70,122,0}}, +/* 50158 */ {(14<<2)|2,{70,122,0}}, +/* 50159 */ {(14<<2)|2,{70,122,0}}, +/* 50160 */ {(15<<2)|2,{70,38,0}}, +/* 50161 */ {(15<<2)|2,{70,38,0}}, +/* 50162 */ {(15<<2)|2,{70,42,0}}, +/* 50163 */ {(15<<2)|2,{70,42,0}}, +/* 50164 */ {(15<<2)|2,{70,44,0}}, +/* 50165 */ {(15<<2)|2,{70,44,0}}, +/* 50166 */ {(15<<2)|2,{70,59,0}}, +/* 50167 */ {(15<<2)|2,{70,59,0}}, +/* 50168 */ {(15<<2)|2,{70,88,0}}, +/* 50169 */ {(15<<2)|2,{70,88,0}}, +/* 50170 */ {(15<<2)|2,{70,90,0}}, +/* 50171 */ {(15<<2)|2,{70,90,0}}, +/* 50172 */ {(7<<2)|1,{70,0,0}}, +/* 50173 */ {(7<<2)|1,{70,0,0}}, +/* 50174 */ {(7<<2)|1,{70,0,0}}, +/* 50175 */ {(7<<2)|1,{70,0,0}}, +/* 50176 */ {(12<<2)|2,{71,48,0}}, +/* 50177 */ {(12<<2)|2,{71,48,0}}, +/* 50178 */ {(12<<2)|2,{71,48,0}}, +/* 50179 */ {(12<<2)|2,{71,48,0}}, +/* 50180 */ {(12<<2)|2,{71,48,0}}, +/* 50181 */ {(12<<2)|2,{71,48,0}}, +/* 50182 */ {(12<<2)|2,{71,48,0}}, +/* 50183 */ {(12<<2)|2,{71,48,0}}, +/* 50184 */ {(12<<2)|2,{71,48,0}}, +/* 50185 */ {(12<<2)|2,{71,48,0}}, +/* 50186 */ {(12<<2)|2,{71,48,0}}, +/* 50187 */ {(12<<2)|2,{71,48,0}}, +/* 50188 */ {(12<<2)|2,{71,48,0}}, +/* 50189 */ {(12<<2)|2,{71,48,0}}, +/* 50190 */ {(12<<2)|2,{71,48,0}}, +/* 50191 */ {(12<<2)|2,{71,48,0}}, +/* 50192 */ {(12<<2)|2,{71,49,0}}, +/* 50193 */ {(12<<2)|2,{71,49,0}}, +/* 50194 */ {(12<<2)|2,{71,49,0}}, +/* 50195 */ {(12<<2)|2,{71,49,0}}, +/* 50196 */ {(12<<2)|2,{71,49,0}}, +/* 50197 */ {(12<<2)|2,{71,49,0}}, +/* 50198 */ {(12<<2)|2,{71,49,0}}, +/* 50199 */ {(12<<2)|2,{71,49,0}}, +/* 50200 */ {(12<<2)|2,{71,49,0}}, +/* 50201 */ {(12<<2)|2,{71,49,0}}, +/* 50202 */ {(12<<2)|2,{71,49,0}}, +/* 50203 */ {(12<<2)|2,{71,49,0}}, +/* 50204 */ {(12<<2)|2,{71,49,0}}, +/* 50205 */ {(12<<2)|2,{71,49,0}}, +/* 50206 */ {(12<<2)|2,{71,49,0}}, +/* 50207 */ {(12<<2)|2,{71,49,0}}, +/* 50208 */ {(12<<2)|2,{71,50,0}}, +/* 50209 */ {(12<<2)|2,{71,50,0}}, +/* 50210 */ {(12<<2)|2,{71,50,0}}, +/* 50211 */ {(12<<2)|2,{71,50,0}}, +/* 50212 */ {(12<<2)|2,{71,50,0}}, +/* 50213 */ {(12<<2)|2,{71,50,0}}, +/* 50214 */ {(12<<2)|2,{71,50,0}}, +/* 50215 */ {(12<<2)|2,{71,50,0}}, +/* 50216 */ {(12<<2)|2,{71,50,0}}, +/* 50217 */ {(12<<2)|2,{71,50,0}}, +/* 50218 */ {(12<<2)|2,{71,50,0}}, +/* 50219 */ {(12<<2)|2,{71,50,0}}, +/* 50220 */ {(12<<2)|2,{71,50,0}}, +/* 50221 */ {(12<<2)|2,{71,50,0}}, +/* 50222 */ {(12<<2)|2,{71,50,0}}, +/* 50223 */ {(12<<2)|2,{71,50,0}}, +/* 50224 */ {(12<<2)|2,{71,97,0}}, +/* 50225 */ {(12<<2)|2,{71,97,0}}, +/* 50226 */ {(12<<2)|2,{71,97,0}}, +/* 50227 */ {(12<<2)|2,{71,97,0}}, +/* 50228 */ {(12<<2)|2,{71,97,0}}, +/* 50229 */ {(12<<2)|2,{71,97,0}}, +/* 50230 */ {(12<<2)|2,{71,97,0}}, +/* 50231 */ {(12<<2)|2,{71,97,0}}, +/* 50232 */ {(12<<2)|2,{71,97,0}}, +/* 50233 */ {(12<<2)|2,{71,97,0}}, +/* 50234 */ {(12<<2)|2,{71,97,0}}, +/* 50235 */ {(12<<2)|2,{71,97,0}}, +/* 50236 */ {(12<<2)|2,{71,97,0}}, +/* 50237 */ {(12<<2)|2,{71,97,0}}, +/* 50238 */ {(12<<2)|2,{71,97,0}}, +/* 50239 */ {(12<<2)|2,{71,97,0}}, +/* 50240 */ {(12<<2)|2,{71,99,0}}, +/* 50241 */ {(12<<2)|2,{71,99,0}}, +/* 50242 */ {(12<<2)|2,{71,99,0}}, +/* 50243 */ {(12<<2)|2,{71,99,0}}, +/* 50244 */ {(12<<2)|2,{71,99,0}}, +/* 50245 */ {(12<<2)|2,{71,99,0}}, +/* 50246 */ {(12<<2)|2,{71,99,0}}, +/* 50247 */ {(12<<2)|2,{71,99,0}}, +/* 50248 */ {(12<<2)|2,{71,99,0}}, +/* 50249 */ {(12<<2)|2,{71,99,0}}, +/* 50250 */ {(12<<2)|2,{71,99,0}}, +/* 50251 */ {(12<<2)|2,{71,99,0}}, +/* 50252 */ {(12<<2)|2,{71,99,0}}, +/* 50253 */ {(12<<2)|2,{71,99,0}}, +/* 50254 */ {(12<<2)|2,{71,99,0}}, +/* 50255 */ {(12<<2)|2,{71,99,0}}, +/* 50256 */ {(12<<2)|2,{71,101,0}}, +/* 50257 */ {(12<<2)|2,{71,101,0}}, +/* 50258 */ {(12<<2)|2,{71,101,0}}, +/* 50259 */ {(12<<2)|2,{71,101,0}}, +/* 50260 */ {(12<<2)|2,{71,101,0}}, +/* 50261 */ {(12<<2)|2,{71,101,0}}, +/* 50262 */ {(12<<2)|2,{71,101,0}}, +/* 50263 */ {(12<<2)|2,{71,101,0}}, +/* 50264 */ {(12<<2)|2,{71,101,0}}, +/* 50265 */ {(12<<2)|2,{71,101,0}}, +/* 50266 */ {(12<<2)|2,{71,101,0}}, +/* 50267 */ {(12<<2)|2,{71,101,0}}, +/* 50268 */ {(12<<2)|2,{71,101,0}}, +/* 50269 */ {(12<<2)|2,{71,101,0}}, +/* 50270 */ {(12<<2)|2,{71,101,0}}, +/* 50271 */ {(12<<2)|2,{71,101,0}}, +/* 50272 */ {(12<<2)|2,{71,105,0}}, +/* 50273 */ {(12<<2)|2,{71,105,0}}, +/* 50274 */ {(12<<2)|2,{71,105,0}}, +/* 50275 */ {(12<<2)|2,{71,105,0}}, +/* 50276 */ {(12<<2)|2,{71,105,0}}, +/* 50277 */ {(12<<2)|2,{71,105,0}}, +/* 50278 */ {(12<<2)|2,{71,105,0}}, +/* 50279 */ {(12<<2)|2,{71,105,0}}, +/* 50280 */ {(12<<2)|2,{71,105,0}}, +/* 50281 */ {(12<<2)|2,{71,105,0}}, +/* 50282 */ {(12<<2)|2,{71,105,0}}, +/* 50283 */ {(12<<2)|2,{71,105,0}}, +/* 50284 */ {(12<<2)|2,{71,105,0}}, +/* 50285 */ {(12<<2)|2,{71,105,0}}, +/* 50286 */ {(12<<2)|2,{71,105,0}}, +/* 50287 */ {(12<<2)|2,{71,105,0}}, +/* 50288 */ {(12<<2)|2,{71,111,0}}, +/* 50289 */ {(12<<2)|2,{71,111,0}}, +/* 50290 */ {(12<<2)|2,{71,111,0}}, +/* 50291 */ {(12<<2)|2,{71,111,0}}, +/* 50292 */ {(12<<2)|2,{71,111,0}}, +/* 50293 */ {(12<<2)|2,{71,111,0}}, +/* 50294 */ {(12<<2)|2,{71,111,0}}, +/* 50295 */ {(12<<2)|2,{71,111,0}}, +/* 50296 */ {(12<<2)|2,{71,111,0}}, +/* 50297 */ {(12<<2)|2,{71,111,0}}, +/* 50298 */ {(12<<2)|2,{71,111,0}}, +/* 50299 */ {(12<<2)|2,{71,111,0}}, +/* 50300 */ {(12<<2)|2,{71,111,0}}, +/* 50301 */ {(12<<2)|2,{71,111,0}}, +/* 50302 */ {(12<<2)|2,{71,111,0}}, +/* 50303 */ {(12<<2)|2,{71,111,0}}, +/* 50304 */ {(12<<2)|2,{71,115,0}}, +/* 50305 */ {(12<<2)|2,{71,115,0}}, +/* 50306 */ {(12<<2)|2,{71,115,0}}, +/* 50307 */ {(12<<2)|2,{71,115,0}}, +/* 50308 */ {(12<<2)|2,{71,115,0}}, +/* 50309 */ {(12<<2)|2,{71,115,0}}, +/* 50310 */ {(12<<2)|2,{71,115,0}}, +/* 50311 */ {(12<<2)|2,{71,115,0}}, +/* 50312 */ {(12<<2)|2,{71,115,0}}, +/* 50313 */ {(12<<2)|2,{71,115,0}}, +/* 50314 */ {(12<<2)|2,{71,115,0}}, +/* 50315 */ {(12<<2)|2,{71,115,0}}, +/* 50316 */ {(12<<2)|2,{71,115,0}}, +/* 50317 */ {(12<<2)|2,{71,115,0}}, +/* 50318 */ {(12<<2)|2,{71,115,0}}, +/* 50319 */ {(12<<2)|2,{71,115,0}}, +/* 50320 */ {(12<<2)|2,{71,116,0}}, +/* 50321 */ {(12<<2)|2,{71,116,0}}, +/* 50322 */ {(12<<2)|2,{71,116,0}}, +/* 50323 */ {(12<<2)|2,{71,116,0}}, +/* 50324 */ {(12<<2)|2,{71,116,0}}, +/* 50325 */ {(12<<2)|2,{71,116,0}}, +/* 50326 */ {(12<<2)|2,{71,116,0}}, +/* 50327 */ {(12<<2)|2,{71,116,0}}, +/* 50328 */ {(12<<2)|2,{71,116,0}}, +/* 50329 */ {(12<<2)|2,{71,116,0}}, +/* 50330 */ {(12<<2)|2,{71,116,0}}, +/* 50331 */ {(12<<2)|2,{71,116,0}}, +/* 50332 */ {(12<<2)|2,{71,116,0}}, +/* 50333 */ {(12<<2)|2,{71,116,0}}, +/* 50334 */ {(12<<2)|2,{71,116,0}}, +/* 50335 */ {(12<<2)|2,{71,116,0}}, +/* 50336 */ {(13<<2)|2,{71,32,0}}, +/* 50337 */ {(13<<2)|2,{71,32,0}}, +/* 50338 */ {(13<<2)|2,{71,32,0}}, +/* 50339 */ {(13<<2)|2,{71,32,0}}, +/* 50340 */ {(13<<2)|2,{71,32,0}}, +/* 50341 */ {(13<<2)|2,{71,32,0}}, +/* 50342 */ {(13<<2)|2,{71,32,0}}, +/* 50343 */ {(13<<2)|2,{71,32,0}}, +/* 50344 */ {(13<<2)|2,{71,37,0}}, +/* 50345 */ {(13<<2)|2,{71,37,0}}, +/* 50346 */ {(13<<2)|2,{71,37,0}}, +/* 50347 */ {(13<<2)|2,{71,37,0}}, +/* 50348 */ {(13<<2)|2,{71,37,0}}, +/* 50349 */ {(13<<2)|2,{71,37,0}}, +/* 50350 */ {(13<<2)|2,{71,37,0}}, +/* 50351 */ {(13<<2)|2,{71,37,0}}, +/* 50352 */ {(13<<2)|2,{71,45,0}}, +/* 50353 */ {(13<<2)|2,{71,45,0}}, +/* 50354 */ {(13<<2)|2,{71,45,0}}, +/* 50355 */ {(13<<2)|2,{71,45,0}}, +/* 50356 */ {(13<<2)|2,{71,45,0}}, +/* 50357 */ {(13<<2)|2,{71,45,0}}, +/* 50358 */ {(13<<2)|2,{71,45,0}}, +/* 50359 */ {(13<<2)|2,{71,45,0}}, +/* 50360 */ {(13<<2)|2,{71,46,0}}, +/* 50361 */ {(13<<2)|2,{71,46,0}}, +/* 50362 */ {(13<<2)|2,{71,46,0}}, +/* 50363 */ {(13<<2)|2,{71,46,0}}, +/* 50364 */ {(13<<2)|2,{71,46,0}}, +/* 50365 */ {(13<<2)|2,{71,46,0}}, +/* 50366 */ {(13<<2)|2,{71,46,0}}, +/* 50367 */ {(13<<2)|2,{71,46,0}}, +/* 50368 */ {(13<<2)|2,{71,47,0}}, +/* 50369 */ {(13<<2)|2,{71,47,0}}, +/* 50370 */ {(13<<2)|2,{71,47,0}}, +/* 50371 */ {(13<<2)|2,{71,47,0}}, +/* 50372 */ {(13<<2)|2,{71,47,0}}, +/* 50373 */ {(13<<2)|2,{71,47,0}}, +/* 50374 */ {(13<<2)|2,{71,47,0}}, +/* 50375 */ {(13<<2)|2,{71,47,0}}, +/* 50376 */ {(13<<2)|2,{71,51,0}}, +/* 50377 */ {(13<<2)|2,{71,51,0}}, +/* 50378 */ {(13<<2)|2,{71,51,0}}, +/* 50379 */ {(13<<2)|2,{71,51,0}}, +/* 50380 */ {(13<<2)|2,{71,51,0}}, +/* 50381 */ {(13<<2)|2,{71,51,0}}, +/* 50382 */ {(13<<2)|2,{71,51,0}}, +/* 50383 */ {(13<<2)|2,{71,51,0}}, +/* 50384 */ {(13<<2)|2,{71,52,0}}, +/* 50385 */ {(13<<2)|2,{71,52,0}}, +/* 50386 */ {(13<<2)|2,{71,52,0}}, +/* 50387 */ {(13<<2)|2,{71,52,0}}, +/* 50388 */ {(13<<2)|2,{71,52,0}}, +/* 50389 */ {(13<<2)|2,{71,52,0}}, +/* 50390 */ {(13<<2)|2,{71,52,0}}, +/* 50391 */ {(13<<2)|2,{71,52,0}}, +/* 50392 */ {(13<<2)|2,{71,53,0}}, +/* 50393 */ {(13<<2)|2,{71,53,0}}, +/* 50394 */ {(13<<2)|2,{71,53,0}}, +/* 50395 */ {(13<<2)|2,{71,53,0}}, +/* 50396 */ {(13<<2)|2,{71,53,0}}, +/* 50397 */ {(13<<2)|2,{71,53,0}}, +/* 50398 */ {(13<<2)|2,{71,53,0}}, +/* 50399 */ {(13<<2)|2,{71,53,0}}, +/* 50400 */ {(13<<2)|2,{71,54,0}}, +/* 50401 */ {(13<<2)|2,{71,54,0}}, +/* 50402 */ {(13<<2)|2,{71,54,0}}, +/* 50403 */ {(13<<2)|2,{71,54,0}}, +/* 50404 */ {(13<<2)|2,{71,54,0}}, +/* 50405 */ {(13<<2)|2,{71,54,0}}, +/* 50406 */ {(13<<2)|2,{71,54,0}}, +/* 50407 */ {(13<<2)|2,{71,54,0}}, +/* 50408 */ {(13<<2)|2,{71,55,0}}, +/* 50409 */ {(13<<2)|2,{71,55,0}}, +/* 50410 */ {(13<<2)|2,{71,55,0}}, +/* 50411 */ {(13<<2)|2,{71,55,0}}, +/* 50412 */ {(13<<2)|2,{71,55,0}}, +/* 50413 */ {(13<<2)|2,{71,55,0}}, +/* 50414 */ {(13<<2)|2,{71,55,0}}, +/* 50415 */ {(13<<2)|2,{71,55,0}}, +/* 50416 */ {(13<<2)|2,{71,56,0}}, +/* 50417 */ {(13<<2)|2,{71,56,0}}, +/* 50418 */ {(13<<2)|2,{71,56,0}}, +/* 50419 */ {(13<<2)|2,{71,56,0}}, +/* 50420 */ {(13<<2)|2,{71,56,0}}, +/* 50421 */ {(13<<2)|2,{71,56,0}}, +/* 50422 */ {(13<<2)|2,{71,56,0}}, +/* 50423 */ {(13<<2)|2,{71,56,0}}, +/* 50424 */ {(13<<2)|2,{71,57,0}}, +/* 50425 */ {(13<<2)|2,{71,57,0}}, +/* 50426 */ {(13<<2)|2,{71,57,0}}, +/* 50427 */ {(13<<2)|2,{71,57,0}}, +/* 50428 */ {(13<<2)|2,{71,57,0}}, +/* 50429 */ {(13<<2)|2,{71,57,0}}, +/* 50430 */ {(13<<2)|2,{71,57,0}}, +/* 50431 */ {(13<<2)|2,{71,57,0}}, +/* 50432 */ {(13<<2)|2,{71,61,0}}, +/* 50433 */ {(13<<2)|2,{71,61,0}}, +/* 50434 */ {(13<<2)|2,{71,61,0}}, +/* 50435 */ {(13<<2)|2,{71,61,0}}, +/* 50436 */ {(13<<2)|2,{71,61,0}}, +/* 50437 */ {(13<<2)|2,{71,61,0}}, +/* 50438 */ {(13<<2)|2,{71,61,0}}, +/* 50439 */ {(13<<2)|2,{71,61,0}}, +/* 50440 */ {(13<<2)|2,{71,65,0}}, +/* 50441 */ {(13<<2)|2,{71,65,0}}, +/* 50442 */ {(13<<2)|2,{71,65,0}}, +/* 50443 */ {(13<<2)|2,{71,65,0}}, +/* 50444 */ {(13<<2)|2,{71,65,0}}, +/* 50445 */ {(13<<2)|2,{71,65,0}}, +/* 50446 */ {(13<<2)|2,{71,65,0}}, +/* 50447 */ {(13<<2)|2,{71,65,0}}, +/* 50448 */ {(13<<2)|2,{71,95,0}}, +/* 50449 */ {(13<<2)|2,{71,95,0}}, +/* 50450 */ {(13<<2)|2,{71,95,0}}, +/* 50451 */ {(13<<2)|2,{71,95,0}}, +/* 50452 */ {(13<<2)|2,{71,95,0}}, +/* 50453 */ {(13<<2)|2,{71,95,0}}, +/* 50454 */ {(13<<2)|2,{71,95,0}}, +/* 50455 */ {(13<<2)|2,{71,95,0}}, +/* 50456 */ {(13<<2)|2,{71,98,0}}, +/* 50457 */ {(13<<2)|2,{71,98,0}}, +/* 50458 */ {(13<<2)|2,{71,98,0}}, +/* 50459 */ {(13<<2)|2,{71,98,0}}, +/* 50460 */ {(13<<2)|2,{71,98,0}}, +/* 50461 */ {(13<<2)|2,{71,98,0}}, +/* 50462 */ {(13<<2)|2,{71,98,0}}, +/* 50463 */ {(13<<2)|2,{71,98,0}}, +/* 50464 */ {(13<<2)|2,{71,100,0}}, +/* 50465 */ {(13<<2)|2,{71,100,0}}, +/* 50466 */ {(13<<2)|2,{71,100,0}}, +/* 50467 */ {(13<<2)|2,{71,100,0}}, +/* 50468 */ {(13<<2)|2,{71,100,0}}, +/* 50469 */ {(13<<2)|2,{71,100,0}}, +/* 50470 */ {(13<<2)|2,{71,100,0}}, +/* 50471 */ {(13<<2)|2,{71,100,0}}, +/* 50472 */ {(13<<2)|2,{71,102,0}}, +/* 50473 */ {(13<<2)|2,{71,102,0}}, +/* 50474 */ {(13<<2)|2,{71,102,0}}, +/* 50475 */ {(13<<2)|2,{71,102,0}}, +/* 50476 */ {(13<<2)|2,{71,102,0}}, +/* 50477 */ {(13<<2)|2,{71,102,0}}, +/* 50478 */ {(13<<2)|2,{71,102,0}}, +/* 50479 */ {(13<<2)|2,{71,102,0}}, +/* 50480 */ {(13<<2)|2,{71,103,0}}, +/* 50481 */ {(13<<2)|2,{71,103,0}}, +/* 50482 */ {(13<<2)|2,{71,103,0}}, +/* 50483 */ {(13<<2)|2,{71,103,0}}, +/* 50484 */ {(13<<2)|2,{71,103,0}}, +/* 50485 */ {(13<<2)|2,{71,103,0}}, +/* 50486 */ {(13<<2)|2,{71,103,0}}, +/* 50487 */ {(13<<2)|2,{71,103,0}}, +/* 50488 */ {(13<<2)|2,{71,104,0}}, +/* 50489 */ {(13<<2)|2,{71,104,0}}, +/* 50490 */ {(13<<2)|2,{71,104,0}}, +/* 50491 */ {(13<<2)|2,{71,104,0}}, +/* 50492 */ {(13<<2)|2,{71,104,0}}, +/* 50493 */ {(13<<2)|2,{71,104,0}}, +/* 50494 */ {(13<<2)|2,{71,104,0}}, +/* 50495 */ {(13<<2)|2,{71,104,0}}, +/* 50496 */ {(13<<2)|2,{71,108,0}}, +/* 50497 */ {(13<<2)|2,{71,108,0}}, +/* 50498 */ {(13<<2)|2,{71,108,0}}, +/* 50499 */ {(13<<2)|2,{71,108,0}}, +/* 50500 */ {(13<<2)|2,{71,108,0}}, +/* 50501 */ {(13<<2)|2,{71,108,0}}, +/* 50502 */ {(13<<2)|2,{71,108,0}}, +/* 50503 */ {(13<<2)|2,{71,108,0}}, +/* 50504 */ {(13<<2)|2,{71,109,0}}, +/* 50505 */ {(13<<2)|2,{71,109,0}}, +/* 50506 */ {(13<<2)|2,{71,109,0}}, +/* 50507 */ {(13<<2)|2,{71,109,0}}, +/* 50508 */ {(13<<2)|2,{71,109,0}}, +/* 50509 */ {(13<<2)|2,{71,109,0}}, +/* 50510 */ {(13<<2)|2,{71,109,0}}, +/* 50511 */ {(13<<2)|2,{71,109,0}}, +/* 50512 */ {(13<<2)|2,{71,110,0}}, +/* 50513 */ {(13<<2)|2,{71,110,0}}, +/* 50514 */ {(13<<2)|2,{71,110,0}}, +/* 50515 */ {(13<<2)|2,{71,110,0}}, +/* 50516 */ {(13<<2)|2,{71,110,0}}, +/* 50517 */ {(13<<2)|2,{71,110,0}}, +/* 50518 */ {(13<<2)|2,{71,110,0}}, +/* 50519 */ {(13<<2)|2,{71,110,0}}, +/* 50520 */ {(13<<2)|2,{71,112,0}}, +/* 50521 */ {(13<<2)|2,{71,112,0}}, +/* 50522 */ {(13<<2)|2,{71,112,0}}, +/* 50523 */ {(13<<2)|2,{71,112,0}}, +/* 50524 */ {(13<<2)|2,{71,112,0}}, +/* 50525 */ {(13<<2)|2,{71,112,0}}, +/* 50526 */ {(13<<2)|2,{71,112,0}}, +/* 50527 */ {(13<<2)|2,{71,112,0}}, +/* 50528 */ {(13<<2)|2,{71,114,0}}, +/* 50529 */ {(13<<2)|2,{71,114,0}}, +/* 50530 */ {(13<<2)|2,{71,114,0}}, +/* 50531 */ {(13<<2)|2,{71,114,0}}, +/* 50532 */ {(13<<2)|2,{71,114,0}}, +/* 50533 */ {(13<<2)|2,{71,114,0}}, +/* 50534 */ {(13<<2)|2,{71,114,0}}, +/* 50535 */ {(13<<2)|2,{71,114,0}}, +/* 50536 */ {(13<<2)|2,{71,117,0}}, +/* 50537 */ {(13<<2)|2,{71,117,0}}, +/* 50538 */ {(13<<2)|2,{71,117,0}}, +/* 50539 */ {(13<<2)|2,{71,117,0}}, +/* 50540 */ {(13<<2)|2,{71,117,0}}, +/* 50541 */ {(13<<2)|2,{71,117,0}}, +/* 50542 */ {(13<<2)|2,{71,117,0}}, +/* 50543 */ {(13<<2)|2,{71,117,0}}, +/* 50544 */ {(14<<2)|2,{71,58,0}}, +/* 50545 */ {(14<<2)|2,{71,58,0}}, +/* 50546 */ {(14<<2)|2,{71,58,0}}, +/* 50547 */ {(14<<2)|2,{71,58,0}}, +/* 50548 */ {(14<<2)|2,{71,66,0}}, +/* 50549 */ {(14<<2)|2,{71,66,0}}, +/* 50550 */ {(14<<2)|2,{71,66,0}}, +/* 50551 */ {(14<<2)|2,{71,66,0}}, +/* 50552 */ {(14<<2)|2,{71,67,0}}, +/* 50553 */ {(14<<2)|2,{71,67,0}}, +/* 50554 */ {(14<<2)|2,{71,67,0}}, +/* 50555 */ {(14<<2)|2,{71,67,0}}, +/* 50556 */ {(14<<2)|2,{71,68,0}}, +/* 50557 */ {(14<<2)|2,{71,68,0}}, +/* 50558 */ {(14<<2)|2,{71,68,0}}, +/* 50559 */ {(14<<2)|2,{71,68,0}}, +/* 50560 */ {(14<<2)|2,{71,69,0}}, +/* 50561 */ {(14<<2)|2,{71,69,0}}, +/* 50562 */ {(14<<2)|2,{71,69,0}}, +/* 50563 */ {(14<<2)|2,{71,69,0}}, +/* 50564 */ {(14<<2)|2,{71,70,0}}, +/* 50565 */ {(14<<2)|2,{71,70,0}}, +/* 50566 */ {(14<<2)|2,{71,70,0}}, +/* 50567 */ {(14<<2)|2,{71,70,0}}, +/* 50568 */ {(14<<2)|2,{71,71,0}}, +/* 50569 */ {(14<<2)|2,{71,71,0}}, +/* 50570 */ {(14<<2)|2,{71,71,0}}, +/* 50571 */ {(14<<2)|2,{71,71,0}}, +/* 50572 */ {(14<<2)|2,{71,72,0}}, +/* 50573 */ {(14<<2)|2,{71,72,0}}, +/* 50574 */ {(14<<2)|2,{71,72,0}}, +/* 50575 */ {(14<<2)|2,{71,72,0}}, +/* 50576 */ {(14<<2)|2,{71,73,0}}, +/* 50577 */ {(14<<2)|2,{71,73,0}}, +/* 50578 */ {(14<<2)|2,{71,73,0}}, +/* 50579 */ {(14<<2)|2,{71,73,0}}, +/* 50580 */ {(14<<2)|2,{71,74,0}}, +/* 50581 */ {(14<<2)|2,{71,74,0}}, +/* 50582 */ {(14<<2)|2,{71,74,0}}, +/* 50583 */ {(14<<2)|2,{71,74,0}}, +/* 50584 */ {(14<<2)|2,{71,75,0}}, +/* 50585 */ {(14<<2)|2,{71,75,0}}, +/* 50586 */ {(14<<2)|2,{71,75,0}}, +/* 50587 */ {(14<<2)|2,{71,75,0}}, +/* 50588 */ {(14<<2)|2,{71,76,0}}, +/* 50589 */ {(14<<2)|2,{71,76,0}}, +/* 50590 */ {(14<<2)|2,{71,76,0}}, +/* 50591 */ {(14<<2)|2,{71,76,0}}, +/* 50592 */ {(14<<2)|2,{71,77,0}}, +/* 50593 */ {(14<<2)|2,{71,77,0}}, +/* 50594 */ {(14<<2)|2,{71,77,0}}, +/* 50595 */ {(14<<2)|2,{71,77,0}}, +/* 50596 */ {(14<<2)|2,{71,78,0}}, +/* 50597 */ {(14<<2)|2,{71,78,0}}, +/* 50598 */ {(14<<2)|2,{71,78,0}}, +/* 50599 */ {(14<<2)|2,{71,78,0}}, +/* 50600 */ {(14<<2)|2,{71,79,0}}, +/* 50601 */ {(14<<2)|2,{71,79,0}}, +/* 50602 */ {(14<<2)|2,{71,79,0}}, +/* 50603 */ {(14<<2)|2,{71,79,0}}, +/* 50604 */ {(14<<2)|2,{71,80,0}}, +/* 50605 */ {(14<<2)|2,{71,80,0}}, +/* 50606 */ {(14<<2)|2,{71,80,0}}, +/* 50607 */ {(14<<2)|2,{71,80,0}}, +/* 50608 */ {(14<<2)|2,{71,81,0}}, +/* 50609 */ {(14<<2)|2,{71,81,0}}, +/* 50610 */ {(14<<2)|2,{71,81,0}}, +/* 50611 */ {(14<<2)|2,{71,81,0}}, +/* 50612 */ {(14<<2)|2,{71,82,0}}, +/* 50613 */ {(14<<2)|2,{71,82,0}}, +/* 50614 */ {(14<<2)|2,{71,82,0}}, +/* 50615 */ {(14<<2)|2,{71,82,0}}, +/* 50616 */ {(14<<2)|2,{71,83,0}}, +/* 50617 */ {(14<<2)|2,{71,83,0}}, +/* 50618 */ {(14<<2)|2,{71,83,0}}, +/* 50619 */ {(14<<2)|2,{71,83,0}}, +/* 50620 */ {(14<<2)|2,{71,84,0}}, +/* 50621 */ {(14<<2)|2,{71,84,0}}, +/* 50622 */ {(14<<2)|2,{71,84,0}}, +/* 50623 */ {(14<<2)|2,{71,84,0}}, +/* 50624 */ {(14<<2)|2,{71,85,0}}, +/* 50625 */ {(14<<2)|2,{71,85,0}}, +/* 50626 */ {(14<<2)|2,{71,85,0}}, +/* 50627 */ {(14<<2)|2,{71,85,0}}, +/* 50628 */ {(14<<2)|2,{71,86,0}}, +/* 50629 */ {(14<<2)|2,{71,86,0}}, +/* 50630 */ {(14<<2)|2,{71,86,0}}, +/* 50631 */ {(14<<2)|2,{71,86,0}}, +/* 50632 */ {(14<<2)|2,{71,87,0}}, +/* 50633 */ {(14<<2)|2,{71,87,0}}, +/* 50634 */ {(14<<2)|2,{71,87,0}}, +/* 50635 */ {(14<<2)|2,{71,87,0}}, +/* 50636 */ {(14<<2)|2,{71,89,0}}, +/* 50637 */ {(14<<2)|2,{71,89,0}}, +/* 50638 */ {(14<<2)|2,{71,89,0}}, +/* 50639 */ {(14<<2)|2,{71,89,0}}, +/* 50640 */ {(14<<2)|2,{71,106,0}}, +/* 50641 */ {(14<<2)|2,{71,106,0}}, +/* 50642 */ {(14<<2)|2,{71,106,0}}, +/* 50643 */ {(14<<2)|2,{71,106,0}}, +/* 50644 */ {(14<<2)|2,{71,107,0}}, +/* 50645 */ {(14<<2)|2,{71,107,0}}, +/* 50646 */ {(14<<2)|2,{71,107,0}}, +/* 50647 */ {(14<<2)|2,{71,107,0}}, +/* 50648 */ {(14<<2)|2,{71,113,0}}, +/* 50649 */ {(14<<2)|2,{71,113,0}}, +/* 50650 */ {(14<<2)|2,{71,113,0}}, +/* 50651 */ {(14<<2)|2,{71,113,0}}, +/* 50652 */ {(14<<2)|2,{71,118,0}}, +/* 50653 */ {(14<<2)|2,{71,118,0}}, +/* 50654 */ {(14<<2)|2,{71,118,0}}, +/* 50655 */ {(14<<2)|2,{71,118,0}}, +/* 50656 */ {(14<<2)|2,{71,119,0}}, +/* 50657 */ {(14<<2)|2,{71,119,0}}, +/* 50658 */ {(14<<2)|2,{71,119,0}}, +/* 50659 */ {(14<<2)|2,{71,119,0}}, +/* 50660 */ {(14<<2)|2,{71,120,0}}, +/* 50661 */ {(14<<2)|2,{71,120,0}}, +/* 50662 */ {(14<<2)|2,{71,120,0}}, +/* 50663 */ {(14<<2)|2,{71,120,0}}, +/* 50664 */ {(14<<2)|2,{71,121,0}}, +/* 50665 */ {(14<<2)|2,{71,121,0}}, +/* 50666 */ {(14<<2)|2,{71,121,0}}, +/* 50667 */ {(14<<2)|2,{71,121,0}}, +/* 50668 */ {(14<<2)|2,{71,122,0}}, +/* 50669 */ {(14<<2)|2,{71,122,0}}, +/* 50670 */ {(14<<2)|2,{71,122,0}}, +/* 50671 */ {(14<<2)|2,{71,122,0}}, +/* 50672 */ {(15<<2)|2,{71,38,0}}, +/* 50673 */ {(15<<2)|2,{71,38,0}}, +/* 50674 */ {(15<<2)|2,{71,42,0}}, +/* 50675 */ {(15<<2)|2,{71,42,0}}, +/* 50676 */ {(15<<2)|2,{71,44,0}}, +/* 50677 */ {(15<<2)|2,{71,44,0}}, +/* 50678 */ {(15<<2)|2,{71,59,0}}, +/* 50679 */ {(15<<2)|2,{71,59,0}}, +/* 50680 */ {(15<<2)|2,{71,88,0}}, +/* 50681 */ {(15<<2)|2,{71,88,0}}, +/* 50682 */ {(15<<2)|2,{71,90,0}}, +/* 50683 */ {(15<<2)|2,{71,90,0}}, +/* 50684 */ {(7<<2)|1,{71,0,0}}, +/* 50685 */ {(7<<2)|1,{71,0,0}}, +/* 50686 */ {(7<<2)|1,{71,0,0}}, +/* 50687 */ {(7<<2)|1,{71,0,0}}, +/* 50688 */ {(12<<2)|2,{72,48,0}}, +/* 50689 */ {(12<<2)|2,{72,48,0}}, +/* 50690 */ {(12<<2)|2,{72,48,0}}, +/* 50691 */ {(12<<2)|2,{72,48,0}}, +/* 50692 */ {(12<<2)|2,{72,48,0}}, +/* 50693 */ {(12<<2)|2,{72,48,0}}, +/* 50694 */ {(12<<2)|2,{72,48,0}}, +/* 50695 */ {(12<<2)|2,{72,48,0}}, +/* 50696 */ {(12<<2)|2,{72,48,0}}, +/* 50697 */ {(12<<2)|2,{72,48,0}}, +/* 50698 */ {(12<<2)|2,{72,48,0}}, +/* 50699 */ {(12<<2)|2,{72,48,0}}, +/* 50700 */ {(12<<2)|2,{72,48,0}}, +/* 50701 */ {(12<<2)|2,{72,48,0}}, +/* 50702 */ {(12<<2)|2,{72,48,0}}, +/* 50703 */ {(12<<2)|2,{72,48,0}}, +/* 50704 */ {(12<<2)|2,{72,49,0}}, +/* 50705 */ {(12<<2)|2,{72,49,0}}, +/* 50706 */ {(12<<2)|2,{72,49,0}}, +/* 50707 */ {(12<<2)|2,{72,49,0}}, +/* 50708 */ {(12<<2)|2,{72,49,0}}, +/* 50709 */ {(12<<2)|2,{72,49,0}}, +/* 50710 */ {(12<<2)|2,{72,49,0}}, +/* 50711 */ {(12<<2)|2,{72,49,0}}, +/* 50712 */ {(12<<2)|2,{72,49,0}}, +/* 50713 */ {(12<<2)|2,{72,49,0}}, +/* 50714 */ {(12<<2)|2,{72,49,0}}, +/* 50715 */ {(12<<2)|2,{72,49,0}}, +/* 50716 */ {(12<<2)|2,{72,49,0}}, +/* 50717 */ {(12<<2)|2,{72,49,0}}, +/* 50718 */ {(12<<2)|2,{72,49,0}}, +/* 50719 */ {(12<<2)|2,{72,49,0}}, +/* 50720 */ {(12<<2)|2,{72,50,0}}, +/* 50721 */ {(12<<2)|2,{72,50,0}}, +/* 50722 */ {(12<<2)|2,{72,50,0}}, +/* 50723 */ {(12<<2)|2,{72,50,0}}, +/* 50724 */ {(12<<2)|2,{72,50,0}}, +/* 50725 */ {(12<<2)|2,{72,50,0}}, +/* 50726 */ {(12<<2)|2,{72,50,0}}, +/* 50727 */ {(12<<2)|2,{72,50,0}}, +/* 50728 */ {(12<<2)|2,{72,50,0}}, +/* 50729 */ {(12<<2)|2,{72,50,0}}, +/* 50730 */ {(12<<2)|2,{72,50,0}}, +/* 50731 */ {(12<<2)|2,{72,50,0}}, +/* 50732 */ {(12<<2)|2,{72,50,0}}, +/* 50733 */ {(12<<2)|2,{72,50,0}}, +/* 50734 */ {(12<<2)|2,{72,50,0}}, +/* 50735 */ {(12<<2)|2,{72,50,0}}, +/* 50736 */ {(12<<2)|2,{72,97,0}}, +/* 50737 */ {(12<<2)|2,{72,97,0}}, +/* 50738 */ {(12<<2)|2,{72,97,0}}, +/* 50739 */ {(12<<2)|2,{72,97,0}}, +/* 50740 */ {(12<<2)|2,{72,97,0}}, +/* 50741 */ {(12<<2)|2,{72,97,0}}, +/* 50742 */ {(12<<2)|2,{72,97,0}}, +/* 50743 */ {(12<<2)|2,{72,97,0}}, +/* 50744 */ {(12<<2)|2,{72,97,0}}, +/* 50745 */ {(12<<2)|2,{72,97,0}}, +/* 50746 */ {(12<<2)|2,{72,97,0}}, +/* 50747 */ {(12<<2)|2,{72,97,0}}, +/* 50748 */ {(12<<2)|2,{72,97,0}}, +/* 50749 */ {(12<<2)|2,{72,97,0}}, +/* 50750 */ {(12<<2)|2,{72,97,0}}, +/* 50751 */ {(12<<2)|2,{72,97,0}}, +/* 50752 */ {(12<<2)|2,{72,99,0}}, +/* 50753 */ {(12<<2)|2,{72,99,0}}, +/* 50754 */ {(12<<2)|2,{72,99,0}}, +/* 50755 */ {(12<<2)|2,{72,99,0}}, +/* 50756 */ {(12<<2)|2,{72,99,0}}, +/* 50757 */ {(12<<2)|2,{72,99,0}}, +/* 50758 */ {(12<<2)|2,{72,99,0}}, +/* 50759 */ {(12<<2)|2,{72,99,0}}, +/* 50760 */ {(12<<2)|2,{72,99,0}}, +/* 50761 */ {(12<<2)|2,{72,99,0}}, +/* 50762 */ {(12<<2)|2,{72,99,0}}, +/* 50763 */ {(12<<2)|2,{72,99,0}}, +/* 50764 */ {(12<<2)|2,{72,99,0}}, +/* 50765 */ {(12<<2)|2,{72,99,0}}, +/* 50766 */ {(12<<2)|2,{72,99,0}}, +/* 50767 */ {(12<<2)|2,{72,99,0}}, +/* 50768 */ {(12<<2)|2,{72,101,0}}, +/* 50769 */ {(12<<2)|2,{72,101,0}}, +/* 50770 */ {(12<<2)|2,{72,101,0}}, +/* 50771 */ {(12<<2)|2,{72,101,0}}, +/* 50772 */ {(12<<2)|2,{72,101,0}}, +/* 50773 */ {(12<<2)|2,{72,101,0}}, +/* 50774 */ {(12<<2)|2,{72,101,0}}, +/* 50775 */ {(12<<2)|2,{72,101,0}}, +/* 50776 */ {(12<<2)|2,{72,101,0}}, +/* 50777 */ {(12<<2)|2,{72,101,0}}, +/* 50778 */ {(12<<2)|2,{72,101,0}}, +/* 50779 */ {(12<<2)|2,{72,101,0}}, +/* 50780 */ {(12<<2)|2,{72,101,0}}, +/* 50781 */ {(12<<2)|2,{72,101,0}}, +/* 50782 */ {(12<<2)|2,{72,101,0}}, +/* 50783 */ {(12<<2)|2,{72,101,0}}, +/* 50784 */ {(12<<2)|2,{72,105,0}}, +/* 50785 */ {(12<<2)|2,{72,105,0}}, +/* 50786 */ {(12<<2)|2,{72,105,0}}, +/* 50787 */ {(12<<2)|2,{72,105,0}}, +/* 50788 */ {(12<<2)|2,{72,105,0}}, +/* 50789 */ {(12<<2)|2,{72,105,0}}, +/* 50790 */ {(12<<2)|2,{72,105,0}}, +/* 50791 */ {(12<<2)|2,{72,105,0}}, +/* 50792 */ {(12<<2)|2,{72,105,0}}, +/* 50793 */ {(12<<2)|2,{72,105,0}}, +/* 50794 */ {(12<<2)|2,{72,105,0}}, +/* 50795 */ {(12<<2)|2,{72,105,0}}, +/* 50796 */ {(12<<2)|2,{72,105,0}}, +/* 50797 */ {(12<<2)|2,{72,105,0}}, +/* 50798 */ {(12<<2)|2,{72,105,0}}, +/* 50799 */ {(12<<2)|2,{72,105,0}}, +/* 50800 */ {(12<<2)|2,{72,111,0}}, +/* 50801 */ {(12<<2)|2,{72,111,0}}, +/* 50802 */ {(12<<2)|2,{72,111,0}}, +/* 50803 */ {(12<<2)|2,{72,111,0}}, +/* 50804 */ {(12<<2)|2,{72,111,0}}, +/* 50805 */ {(12<<2)|2,{72,111,0}}, +/* 50806 */ {(12<<2)|2,{72,111,0}}, +/* 50807 */ {(12<<2)|2,{72,111,0}}, +/* 50808 */ {(12<<2)|2,{72,111,0}}, +/* 50809 */ {(12<<2)|2,{72,111,0}}, +/* 50810 */ {(12<<2)|2,{72,111,0}}, +/* 50811 */ {(12<<2)|2,{72,111,0}}, +/* 50812 */ {(12<<2)|2,{72,111,0}}, +/* 50813 */ {(12<<2)|2,{72,111,0}}, +/* 50814 */ {(12<<2)|2,{72,111,0}}, +/* 50815 */ {(12<<2)|2,{72,111,0}}, +/* 50816 */ {(12<<2)|2,{72,115,0}}, +/* 50817 */ {(12<<2)|2,{72,115,0}}, +/* 50818 */ {(12<<2)|2,{72,115,0}}, +/* 50819 */ {(12<<2)|2,{72,115,0}}, +/* 50820 */ {(12<<2)|2,{72,115,0}}, +/* 50821 */ {(12<<2)|2,{72,115,0}}, +/* 50822 */ {(12<<2)|2,{72,115,0}}, +/* 50823 */ {(12<<2)|2,{72,115,0}}, +/* 50824 */ {(12<<2)|2,{72,115,0}}, +/* 50825 */ {(12<<2)|2,{72,115,0}}, +/* 50826 */ {(12<<2)|2,{72,115,0}}, +/* 50827 */ {(12<<2)|2,{72,115,0}}, +/* 50828 */ {(12<<2)|2,{72,115,0}}, +/* 50829 */ {(12<<2)|2,{72,115,0}}, +/* 50830 */ {(12<<2)|2,{72,115,0}}, +/* 50831 */ {(12<<2)|2,{72,115,0}}, +/* 50832 */ {(12<<2)|2,{72,116,0}}, +/* 50833 */ {(12<<2)|2,{72,116,0}}, +/* 50834 */ {(12<<2)|2,{72,116,0}}, +/* 50835 */ {(12<<2)|2,{72,116,0}}, +/* 50836 */ {(12<<2)|2,{72,116,0}}, +/* 50837 */ {(12<<2)|2,{72,116,0}}, +/* 50838 */ {(12<<2)|2,{72,116,0}}, +/* 50839 */ {(12<<2)|2,{72,116,0}}, +/* 50840 */ {(12<<2)|2,{72,116,0}}, +/* 50841 */ {(12<<2)|2,{72,116,0}}, +/* 50842 */ {(12<<2)|2,{72,116,0}}, +/* 50843 */ {(12<<2)|2,{72,116,0}}, +/* 50844 */ {(12<<2)|2,{72,116,0}}, +/* 50845 */ {(12<<2)|2,{72,116,0}}, +/* 50846 */ {(12<<2)|2,{72,116,0}}, +/* 50847 */ {(12<<2)|2,{72,116,0}}, +/* 50848 */ {(13<<2)|2,{72,32,0}}, +/* 50849 */ {(13<<2)|2,{72,32,0}}, +/* 50850 */ {(13<<2)|2,{72,32,0}}, +/* 50851 */ {(13<<2)|2,{72,32,0}}, +/* 50852 */ {(13<<2)|2,{72,32,0}}, +/* 50853 */ {(13<<2)|2,{72,32,0}}, +/* 50854 */ {(13<<2)|2,{72,32,0}}, +/* 50855 */ {(13<<2)|2,{72,32,0}}, +/* 50856 */ {(13<<2)|2,{72,37,0}}, +/* 50857 */ {(13<<2)|2,{72,37,0}}, +/* 50858 */ {(13<<2)|2,{72,37,0}}, +/* 50859 */ {(13<<2)|2,{72,37,0}}, +/* 50860 */ {(13<<2)|2,{72,37,0}}, +/* 50861 */ {(13<<2)|2,{72,37,0}}, +/* 50862 */ {(13<<2)|2,{72,37,0}}, +/* 50863 */ {(13<<2)|2,{72,37,0}}, +/* 50864 */ {(13<<2)|2,{72,45,0}}, +/* 50865 */ {(13<<2)|2,{72,45,0}}, +/* 50866 */ {(13<<2)|2,{72,45,0}}, +/* 50867 */ {(13<<2)|2,{72,45,0}}, +/* 50868 */ {(13<<2)|2,{72,45,0}}, +/* 50869 */ {(13<<2)|2,{72,45,0}}, +/* 50870 */ {(13<<2)|2,{72,45,0}}, +/* 50871 */ {(13<<2)|2,{72,45,0}}, +/* 50872 */ {(13<<2)|2,{72,46,0}}, +/* 50873 */ {(13<<2)|2,{72,46,0}}, +/* 50874 */ {(13<<2)|2,{72,46,0}}, +/* 50875 */ {(13<<2)|2,{72,46,0}}, +/* 50876 */ {(13<<2)|2,{72,46,0}}, +/* 50877 */ {(13<<2)|2,{72,46,0}}, +/* 50878 */ {(13<<2)|2,{72,46,0}}, +/* 50879 */ {(13<<2)|2,{72,46,0}}, +/* 50880 */ {(13<<2)|2,{72,47,0}}, +/* 50881 */ {(13<<2)|2,{72,47,0}}, +/* 50882 */ {(13<<2)|2,{72,47,0}}, +/* 50883 */ {(13<<2)|2,{72,47,0}}, +/* 50884 */ {(13<<2)|2,{72,47,0}}, +/* 50885 */ {(13<<2)|2,{72,47,0}}, +/* 50886 */ {(13<<2)|2,{72,47,0}}, +/* 50887 */ {(13<<2)|2,{72,47,0}}, +/* 50888 */ {(13<<2)|2,{72,51,0}}, +/* 50889 */ {(13<<2)|2,{72,51,0}}, +/* 50890 */ {(13<<2)|2,{72,51,0}}, +/* 50891 */ {(13<<2)|2,{72,51,0}}, +/* 50892 */ {(13<<2)|2,{72,51,0}}, +/* 50893 */ {(13<<2)|2,{72,51,0}}, +/* 50894 */ {(13<<2)|2,{72,51,0}}, +/* 50895 */ {(13<<2)|2,{72,51,0}}, +/* 50896 */ {(13<<2)|2,{72,52,0}}, +/* 50897 */ {(13<<2)|2,{72,52,0}}, +/* 50898 */ {(13<<2)|2,{72,52,0}}, +/* 50899 */ {(13<<2)|2,{72,52,0}}, +/* 50900 */ {(13<<2)|2,{72,52,0}}, +/* 50901 */ {(13<<2)|2,{72,52,0}}, +/* 50902 */ {(13<<2)|2,{72,52,0}}, +/* 50903 */ {(13<<2)|2,{72,52,0}}, +/* 50904 */ {(13<<2)|2,{72,53,0}}, +/* 50905 */ {(13<<2)|2,{72,53,0}}, +/* 50906 */ {(13<<2)|2,{72,53,0}}, +/* 50907 */ {(13<<2)|2,{72,53,0}}, +/* 50908 */ {(13<<2)|2,{72,53,0}}, +/* 50909 */ {(13<<2)|2,{72,53,0}}, +/* 50910 */ {(13<<2)|2,{72,53,0}}, +/* 50911 */ {(13<<2)|2,{72,53,0}}, +/* 50912 */ {(13<<2)|2,{72,54,0}}, +/* 50913 */ {(13<<2)|2,{72,54,0}}, +/* 50914 */ {(13<<2)|2,{72,54,0}}, +/* 50915 */ {(13<<2)|2,{72,54,0}}, +/* 50916 */ {(13<<2)|2,{72,54,0}}, +/* 50917 */ {(13<<2)|2,{72,54,0}}, +/* 50918 */ {(13<<2)|2,{72,54,0}}, +/* 50919 */ {(13<<2)|2,{72,54,0}}, +/* 50920 */ {(13<<2)|2,{72,55,0}}, +/* 50921 */ {(13<<2)|2,{72,55,0}}, +/* 50922 */ {(13<<2)|2,{72,55,0}}, +/* 50923 */ {(13<<2)|2,{72,55,0}}, +/* 50924 */ {(13<<2)|2,{72,55,0}}, +/* 50925 */ {(13<<2)|2,{72,55,0}}, +/* 50926 */ {(13<<2)|2,{72,55,0}}, +/* 50927 */ {(13<<2)|2,{72,55,0}}, +/* 50928 */ {(13<<2)|2,{72,56,0}}, +/* 50929 */ {(13<<2)|2,{72,56,0}}, +/* 50930 */ {(13<<2)|2,{72,56,0}}, +/* 50931 */ {(13<<2)|2,{72,56,0}}, +/* 50932 */ {(13<<2)|2,{72,56,0}}, +/* 50933 */ {(13<<2)|2,{72,56,0}}, +/* 50934 */ {(13<<2)|2,{72,56,0}}, +/* 50935 */ {(13<<2)|2,{72,56,0}}, +/* 50936 */ {(13<<2)|2,{72,57,0}}, +/* 50937 */ {(13<<2)|2,{72,57,0}}, +/* 50938 */ {(13<<2)|2,{72,57,0}}, +/* 50939 */ {(13<<2)|2,{72,57,0}}, +/* 50940 */ {(13<<2)|2,{72,57,0}}, +/* 50941 */ {(13<<2)|2,{72,57,0}}, +/* 50942 */ {(13<<2)|2,{72,57,0}}, +/* 50943 */ {(13<<2)|2,{72,57,0}}, +/* 50944 */ {(13<<2)|2,{72,61,0}}, +/* 50945 */ {(13<<2)|2,{72,61,0}}, +/* 50946 */ {(13<<2)|2,{72,61,0}}, +/* 50947 */ {(13<<2)|2,{72,61,0}}, +/* 50948 */ {(13<<2)|2,{72,61,0}}, +/* 50949 */ {(13<<2)|2,{72,61,0}}, +/* 50950 */ {(13<<2)|2,{72,61,0}}, +/* 50951 */ {(13<<2)|2,{72,61,0}}, +/* 50952 */ {(13<<2)|2,{72,65,0}}, +/* 50953 */ {(13<<2)|2,{72,65,0}}, +/* 50954 */ {(13<<2)|2,{72,65,0}}, +/* 50955 */ {(13<<2)|2,{72,65,0}}, +/* 50956 */ {(13<<2)|2,{72,65,0}}, +/* 50957 */ {(13<<2)|2,{72,65,0}}, +/* 50958 */ {(13<<2)|2,{72,65,0}}, +/* 50959 */ {(13<<2)|2,{72,65,0}}, +/* 50960 */ {(13<<2)|2,{72,95,0}}, +/* 50961 */ {(13<<2)|2,{72,95,0}}, +/* 50962 */ {(13<<2)|2,{72,95,0}}, +/* 50963 */ {(13<<2)|2,{72,95,0}}, +/* 50964 */ {(13<<2)|2,{72,95,0}}, +/* 50965 */ {(13<<2)|2,{72,95,0}}, +/* 50966 */ {(13<<2)|2,{72,95,0}}, +/* 50967 */ {(13<<2)|2,{72,95,0}}, +/* 50968 */ {(13<<2)|2,{72,98,0}}, +/* 50969 */ {(13<<2)|2,{72,98,0}}, +/* 50970 */ {(13<<2)|2,{72,98,0}}, +/* 50971 */ {(13<<2)|2,{72,98,0}}, +/* 50972 */ {(13<<2)|2,{72,98,0}}, +/* 50973 */ {(13<<2)|2,{72,98,0}}, +/* 50974 */ {(13<<2)|2,{72,98,0}}, +/* 50975 */ {(13<<2)|2,{72,98,0}}, +/* 50976 */ {(13<<2)|2,{72,100,0}}, +/* 50977 */ {(13<<2)|2,{72,100,0}}, +/* 50978 */ {(13<<2)|2,{72,100,0}}, +/* 50979 */ {(13<<2)|2,{72,100,0}}, +/* 50980 */ {(13<<2)|2,{72,100,0}}, +/* 50981 */ {(13<<2)|2,{72,100,0}}, +/* 50982 */ {(13<<2)|2,{72,100,0}}, +/* 50983 */ {(13<<2)|2,{72,100,0}}, +/* 50984 */ {(13<<2)|2,{72,102,0}}, +/* 50985 */ {(13<<2)|2,{72,102,0}}, +/* 50986 */ {(13<<2)|2,{72,102,0}}, +/* 50987 */ {(13<<2)|2,{72,102,0}}, +/* 50988 */ {(13<<2)|2,{72,102,0}}, +/* 50989 */ {(13<<2)|2,{72,102,0}}, +/* 50990 */ {(13<<2)|2,{72,102,0}}, +/* 50991 */ {(13<<2)|2,{72,102,0}}, +/* 50992 */ {(13<<2)|2,{72,103,0}}, +/* 50993 */ {(13<<2)|2,{72,103,0}}, +/* 50994 */ {(13<<2)|2,{72,103,0}}, +/* 50995 */ {(13<<2)|2,{72,103,0}}, +/* 50996 */ {(13<<2)|2,{72,103,0}}, +/* 50997 */ {(13<<2)|2,{72,103,0}}, +/* 50998 */ {(13<<2)|2,{72,103,0}}, +/* 50999 */ {(13<<2)|2,{72,103,0}}, +/* 51000 */ {(13<<2)|2,{72,104,0}}, +/* 51001 */ {(13<<2)|2,{72,104,0}}, +/* 51002 */ {(13<<2)|2,{72,104,0}}, +/* 51003 */ {(13<<2)|2,{72,104,0}}, +/* 51004 */ {(13<<2)|2,{72,104,0}}, +/* 51005 */ {(13<<2)|2,{72,104,0}}, +/* 51006 */ {(13<<2)|2,{72,104,0}}, +/* 51007 */ {(13<<2)|2,{72,104,0}}, +/* 51008 */ {(13<<2)|2,{72,108,0}}, +/* 51009 */ {(13<<2)|2,{72,108,0}}, +/* 51010 */ {(13<<2)|2,{72,108,0}}, +/* 51011 */ {(13<<2)|2,{72,108,0}}, +/* 51012 */ {(13<<2)|2,{72,108,0}}, +/* 51013 */ {(13<<2)|2,{72,108,0}}, +/* 51014 */ {(13<<2)|2,{72,108,0}}, +/* 51015 */ {(13<<2)|2,{72,108,0}}, +/* 51016 */ {(13<<2)|2,{72,109,0}}, +/* 51017 */ {(13<<2)|2,{72,109,0}}, +/* 51018 */ {(13<<2)|2,{72,109,0}}, +/* 51019 */ {(13<<2)|2,{72,109,0}}, +/* 51020 */ {(13<<2)|2,{72,109,0}}, +/* 51021 */ {(13<<2)|2,{72,109,0}}, +/* 51022 */ {(13<<2)|2,{72,109,0}}, +/* 51023 */ {(13<<2)|2,{72,109,0}}, +/* 51024 */ {(13<<2)|2,{72,110,0}}, +/* 51025 */ {(13<<2)|2,{72,110,0}}, +/* 51026 */ {(13<<2)|2,{72,110,0}}, +/* 51027 */ {(13<<2)|2,{72,110,0}}, +/* 51028 */ {(13<<2)|2,{72,110,0}}, +/* 51029 */ {(13<<2)|2,{72,110,0}}, +/* 51030 */ {(13<<2)|2,{72,110,0}}, +/* 51031 */ {(13<<2)|2,{72,110,0}}, +/* 51032 */ {(13<<2)|2,{72,112,0}}, +/* 51033 */ {(13<<2)|2,{72,112,0}}, +/* 51034 */ {(13<<2)|2,{72,112,0}}, +/* 51035 */ {(13<<2)|2,{72,112,0}}, +/* 51036 */ {(13<<2)|2,{72,112,0}}, +/* 51037 */ {(13<<2)|2,{72,112,0}}, +/* 51038 */ {(13<<2)|2,{72,112,0}}, +/* 51039 */ {(13<<2)|2,{72,112,0}}, +/* 51040 */ {(13<<2)|2,{72,114,0}}, +/* 51041 */ {(13<<2)|2,{72,114,0}}, +/* 51042 */ {(13<<2)|2,{72,114,0}}, +/* 51043 */ {(13<<2)|2,{72,114,0}}, +/* 51044 */ {(13<<2)|2,{72,114,0}}, +/* 51045 */ {(13<<2)|2,{72,114,0}}, +/* 51046 */ {(13<<2)|2,{72,114,0}}, +/* 51047 */ {(13<<2)|2,{72,114,0}}, +/* 51048 */ {(13<<2)|2,{72,117,0}}, +/* 51049 */ {(13<<2)|2,{72,117,0}}, +/* 51050 */ {(13<<2)|2,{72,117,0}}, +/* 51051 */ {(13<<2)|2,{72,117,0}}, +/* 51052 */ {(13<<2)|2,{72,117,0}}, +/* 51053 */ {(13<<2)|2,{72,117,0}}, +/* 51054 */ {(13<<2)|2,{72,117,0}}, +/* 51055 */ {(13<<2)|2,{72,117,0}}, +/* 51056 */ {(14<<2)|2,{72,58,0}}, +/* 51057 */ {(14<<2)|2,{72,58,0}}, +/* 51058 */ {(14<<2)|2,{72,58,0}}, +/* 51059 */ {(14<<2)|2,{72,58,0}}, +/* 51060 */ {(14<<2)|2,{72,66,0}}, +/* 51061 */ {(14<<2)|2,{72,66,0}}, +/* 51062 */ {(14<<2)|2,{72,66,0}}, +/* 51063 */ {(14<<2)|2,{72,66,0}}, +/* 51064 */ {(14<<2)|2,{72,67,0}}, +/* 51065 */ {(14<<2)|2,{72,67,0}}, +/* 51066 */ {(14<<2)|2,{72,67,0}}, +/* 51067 */ {(14<<2)|2,{72,67,0}}, +/* 51068 */ {(14<<2)|2,{72,68,0}}, +/* 51069 */ {(14<<2)|2,{72,68,0}}, +/* 51070 */ {(14<<2)|2,{72,68,0}}, +/* 51071 */ {(14<<2)|2,{72,68,0}}, +/* 51072 */ {(14<<2)|2,{72,69,0}}, +/* 51073 */ {(14<<2)|2,{72,69,0}}, +/* 51074 */ {(14<<2)|2,{72,69,0}}, +/* 51075 */ {(14<<2)|2,{72,69,0}}, +/* 51076 */ {(14<<2)|2,{72,70,0}}, +/* 51077 */ {(14<<2)|2,{72,70,0}}, +/* 51078 */ {(14<<2)|2,{72,70,0}}, +/* 51079 */ {(14<<2)|2,{72,70,0}}, +/* 51080 */ {(14<<2)|2,{72,71,0}}, +/* 51081 */ {(14<<2)|2,{72,71,0}}, +/* 51082 */ {(14<<2)|2,{72,71,0}}, +/* 51083 */ {(14<<2)|2,{72,71,0}}, +/* 51084 */ {(14<<2)|2,{72,72,0}}, +/* 51085 */ {(14<<2)|2,{72,72,0}}, +/* 51086 */ {(14<<2)|2,{72,72,0}}, +/* 51087 */ {(14<<2)|2,{72,72,0}}, +/* 51088 */ {(14<<2)|2,{72,73,0}}, +/* 51089 */ {(14<<2)|2,{72,73,0}}, +/* 51090 */ {(14<<2)|2,{72,73,0}}, +/* 51091 */ {(14<<2)|2,{72,73,0}}, +/* 51092 */ {(14<<2)|2,{72,74,0}}, +/* 51093 */ {(14<<2)|2,{72,74,0}}, +/* 51094 */ {(14<<2)|2,{72,74,0}}, +/* 51095 */ {(14<<2)|2,{72,74,0}}, +/* 51096 */ {(14<<2)|2,{72,75,0}}, +/* 51097 */ {(14<<2)|2,{72,75,0}}, +/* 51098 */ {(14<<2)|2,{72,75,0}}, +/* 51099 */ {(14<<2)|2,{72,75,0}}, +/* 51100 */ {(14<<2)|2,{72,76,0}}, +/* 51101 */ {(14<<2)|2,{72,76,0}}, +/* 51102 */ {(14<<2)|2,{72,76,0}}, +/* 51103 */ {(14<<2)|2,{72,76,0}}, +/* 51104 */ {(14<<2)|2,{72,77,0}}, +/* 51105 */ {(14<<2)|2,{72,77,0}}, +/* 51106 */ {(14<<2)|2,{72,77,0}}, +/* 51107 */ {(14<<2)|2,{72,77,0}}, +/* 51108 */ {(14<<2)|2,{72,78,0}}, +/* 51109 */ {(14<<2)|2,{72,78,0}}, +/* 51110 */ {(14<<2)|2,{72,78,0}}, +/* 51111 */ {(14<<2)|2,{72,78,0}}, +/* 51112 */ {(14<<2)|2,{72,79,0}}, +/* 51113 */ {(14<<2)|2,{72,79,0}}, +/* 51114 */ {(14<<2)|2,{72,79,0}}, +/* 51115 */ {(14<<2)|2,{72,79,0}}, +/* 51116 */ {(14<<2)|2,{72,80,0}}, +/* 51117 */ {(14<<2)|2,{72,80,0}}, +/* 51118 */ {(14<<2)|2,{72,80,0}}, +/* 51119 */ {(14<<2)|2,{72,80,0}}, +/* 51120 */ {(14<<2)|2,{72,81,0}}, +/* 51121 */ {(14<<2)|2,{72,81,0}}, +/* 51122 */ {(14<<2)|2,{72,81,0}}, +/* 51123 */ {(14<<2)|2,{72,81,0}}, +/* 51124 */ {(14<<2)|2,{72,82,0}}, +/* 51125 */ {(14<<2)|2,{72,82,0}}, +/* 51126 */ {(14<<2)|2,{72,82,0}}, +/* 51127 */ {(14<<2)|2,{72,82,0}}, +/* 51128 */ {(14<<2)|2,{72,83,0}}, +/* 51129 */ {(14<<2)|2,{72,83,0}}, +/* 51130 */ {(14<<2)|2,{72,83,0}}, +/* 51131 */ {(14<<2)|2,{72,83,0}}, +/* 51132 */ {(14<<2)|2,{72,84,0}}, +/* 51133 */ {(14<<2)|2,{72,84,0}}, +/* 51134 */ {(14<<2)|2,{72,84,0}}, +/* 51135 */ {(14<<2)|2,{72,84,0}}, +/* 51136 */ {(14<<2)|2,{72,85,0}}, +/* 51137 */ {(14<<2)|2,{72,85,0}}, +/* 51138 */ {(14<<2)|2,{72,85,0}}, +/* 51139 */ {(14<<2)|2,{72,85,0}}, +/* 51140 */ {(14<<2)|2,{72,86,0}}, +/* 51141 */ {(14<<2)|2,{72,86,0}}, +/* 51142 */ {(14<<2)|2,{72,86,0}}, +/* 51143 */ {(14<<2)|2,{72,86,0}}, +/* 51144 */ {(14<<2)|2,{72,87,0}}, +/* 51145 */ {(14<<2)|2,{72,87,0}}, +/* 51146 */ {(14<<2)|2,{72,87,0}}, +/* 51147 */ {(14<<2)|2,{72,87,0}}, +/* 51148 */ {(14<<2)|2,{72,89,0}}, +/* 51149 */ {(14<<2)|2,{72,89,0}}, +/* 51150 */ {(14<<2)|2,{72,89,0}}, +/* 51151 */ {(14<<2)|2,{72,89,0}}, +/* 51152 */ {(14<<2)|2,{72,106,0}}, +/* 51153 */ {(14<<2)|2,{72,106,0}}, +/* 51154 */ {(14<<2)|2,{72,106,0}}, +/* 51155 */ {(14<<2)|2,{72,106,0}}, +/* 51156 */ {(14<<2)|2,{72,107,0}}, +/* 51157 */ {(14<<2)|2,{72,107,0}}, +/* 51158 */ {(14<<2)|2,{72,107,0}}, +/* 51159 */ {(14<<2)|2,{72,107,0}}, +/* 51160 */ {(14<<2)|2,{72,113,0}}, +/* 51161 */ {(14<<2)|2,{72,113,0}}, +/* 51162 */ {(14<<2)|2,{72,113,0}}, +/* 51163 */ {(14<<2)|2,{72,113,0}}, +/* 51164 */ {(14<<2)|2,{72,118,0}}, +/* 51165 */ {(14<<2)|2,{72,118,0}}, +/* 51166 */ {(14<<2)|2,{72,118,0}}, +/* 51167 */ {(14<<2)|2,{72,118,0}}, +/* 51168 */ {(14<<2)|2,{72,119,0}}, +/* 51169 */ {(14<<2)|2,{72,119,0}}, +/* 51170 */ {(14<<2)|2,{72,119,0}}, +/* 51171 */ {(14<<2)|2,{72,119,0}}, +/* 51172 */ {(14<<2)|2,{72,120,0}}, +/* 51173 */ {(14<<2)|2,{72,120,0}}, +/* 51174 */ {(14<<2)|2,{72,120,0}}, +/* 51175 */ {(14<<2)|2,{72,120,0}}, +/* 51176 */ {(14<<2)|2,{72,121,0}}, +/* 51177 */ {(14<<2)|2,{72,121,0}}, +/* 51178 */ {(14<<2)|2,{72,121,0}}, +/* 51179 */ {(14<<2)|2,{72,121,0}}, +/* 51180 */ {(14<<2)|2,{72,122,0}}, +/* 51181 */ {(14<<2)|2,{72,122,0}}, +/* 51182 */ {(14<<2)|2,{72,122,0}}, +/* 51183 */ {(14<<2)|2,{72,122,0}}, +/* 51184 */ {(15<<2)|2,{72,38,0}}, +/* 51185 */ {(15<<2)|2,{72,38,0}}, +/* 51186 */ {(15<<2)|2,{72,42,0}}, +/* 51187 */ {(15<<2)|2,{72,42,0}}, +/* 51188 */ {(15<<2)|2,{72,44,0}}, +/* 51189 */ {(15<<2)|2,{72,44,0}}, +/* 51190 */ {(15<<2)|2,{72,59,0}}, +/* 51191 */ {(15<<2)|2,{72,59,0}}, +/* 51192 */ {(15<<2)|2,{72,88,0}}, +/* 51193 */ {(15<<2)|2,{72,88,0}}, +/* 51194 */ {(15<<2)|2,{72,90,0}}, +/* 51195 */ {(15<<2)|2,{72,90,0}}, +/* 51196 */ {(7<<2)|1,{72,0,0}}, +/* 51197 */ {(7<<2)|1,{72,0,0}}, +/* 51198 */ {(7<<2)|1,{72,0,0}}, +/* 51199 */ {(7<<2)|1,{72,0,0}}, +/* 51200 */ {(12<<2)|2,{73,48,0}}, +/* 51201 */ {(12<<2)|2,{73,48,0}}, +/* 51202 */ {(12<<2)|2,{73,48,0}}, +/* 51203 */ {(12<<2)|2,{73,48,0}}, +/* 51204 */ {(12<<2)|2,{73,48,0}}, +/* 51205 */ {(12<<2)|2,{73,48,0}}, +/* 51206 */ {(12<<2)|2,{73,48,0}}, +/* 51207 */ {(12<<2)|2,{73,48,0}}, +/* 51208 */ {(12<<2)|2,{73,48,0}}, +/* 51209 */ {(12<<2)|2,{73,48,0}}, +/* 51210 */ {(12<<2)|2,{73,48,0}}, +/* 51211 */ {(12<<2)|2,{73,48,0}}, +/* 51212 */ {(12<<2)|2,{73,48,0}}, +/* 51213 */ {(12<<2)|2,{73,48,0}}, +/* 51214 */ {(12<<2)|2,{73,48,0}}, +/* 51215 */ {(12<<2)|2,{73,48,0}}, +/* 51216 */ {(12<<2)|2,{73,49,0}}, +/* 51217 */ {(12<<2)|2,{73,49,0}}, +/* 51218 */ {(12<<2)|2,{73,49,0}}, +/* 51219 */ {(12<<2)|2,{73,49,0}}, +/* 51220 */ {(12<<2)|2,{73,49,0}}, +/* 51221 */ {(12<<2)|2,{73,49,0}}, +/* 51222 */ {(12<<2)|2,{73,49,0}}, +/* 51223 */ {(12<<2)|2,{73,49,0}}, +/* 51224 */ {(12<<2)|2,{73,49,0}}, +/* 51225 */ {(12<<2)|2,{73,49,0}}, +/* 51226 */ {(12<<2)|2,{73,49,0}}, +/* 51227 */ {(12<<2)|2,{73,49,0}}, +/* 51228 */ {(12<<2)|2,{73,49,0}}, +/* 51229 */ {(12<<2)|2,{73,49,0}}, +/* 51230 */ {(12<<2)|2,{73,49,0}}, +/* 51231 */ {(12<<2)|2,{73,49,0}}, +/* 51232 */ {(12<<2)|2,{73,50,0}}, +/* 51233 */ {(12<<2)|2,{73,50,0}}, +/* 51234 */ {(12<<2)|2,{73,50,0}}, +/* 51235 */ {(12<<2)|2,{73,50,0}}, +/* 51236 */ {(12<<2)|2,{73,50,0}}, +/* 51237 */ {(12<<2)|2,{73,50,0}}, +/* 51238 */ {(12<<2)|2,{73,50,0}}, +/* 51239 */ {(12<<2)|2,{73,50,0}}, +/* 51240 */ {(12<<2)|2,{73,50,0}}, +/* 51241 */ {(12<<2)|2,{73,50,0}}, +/* 51242 */ {(12<<2)|2,{73,50,0}}, +/* 51243 */ {(12<<2)|2,{73,50,0}}, +/* 51244 */ {(12<<2)|2,{73,50,0}}, +/* 51245 */ {(12<<2)|2,{73,50,0}}, +/* 51246 */ {(12<<2)|2,{73,50,0}}, +/* 51247 */ {(12<<2)|2,{73,50,0}}, +/* 51248 */ {(12<<2)|2,{73,97,0}}, +/* 51249 */ {(12<<2)|2,{73,97,0}}, +/* 51250 */ {(12<<2)|2,{73,97,0}}, +/* 51251 */ {(12<<2)|2,{73,97,0}}, +/* 51252 */ {(12<<2)|2,{73,97,0}}, +/* 51253 */ {(12<<2)|2,{73,97,0}}, +/* 51254 */ {(12<<2)|2,{73,97,0}}, +/* 51255 */ {(12<<2)|2,{73,97,0}}, +/* 51256 */ {(12<<2)|2,{73,97,0}}, +/* 51257 */ {(12<<2)|2,{73,97,0}}, +/* 51258 */ {(12<<2)|2,{73,97,0}}, +/* 51259 */ {(12<<2)|2,{73,97,0}}, +/* 51260 */ {(12<<2)|2,{73,97,0}}, +/* 51261 */ {(12<<2)|2,{73,97,0}}, +/* 51262 */ {(12<<2)|2,{73,97,0}}, +/* 51263 */ {(12<<2)|2,{73,97,0}}, +/* 51264 */ {(12<<2)|2,{73,99,0}}, +/* 51265 */ {(12<<2)|2,{73,99,0}}, +/* 51266 */ {(12<<2)|2,{73,99,0}}, +/* 51267 */ {(12<<2)|2,{73,99,0}}, +/* 51268 */ {(12<<2)|2,{73,99,0}}, +/* 51269 */ {(12<<2)|2,{73,99,0}}, +/* 51270 */ {(12<<2)|2,{73,99,0}}, +/* 51271 */ {(12<<2)|2,{73,99,0}}, +/* 51272 */ {(12<<2)|2,{73,99,0}}, +/* 51273 */ {(12<<2)|2,{73,99,0}}, +/* 51274 */ {(12<<2)|2,{73,99,0}}, +/* 51275 */ {(12<<2)|2,{73,99,0}}, +/* 51276 */ {(12<<2)|2,{73,99,0}}, +/* 51277 */ {(12<<2)|2,{73,99,0}}, +/* 51278 */ {(12<<2)|2,{73,99,0}}, +/* 51279 */ {(12<<2)|2,{73,99,0}}, +/* 51280 */ {(12<<2)|2,{73,101,0}}, +/* 51281 */ {(12<<2)|2,{73,101,0}}, +/* 51282 */ {(12<<2)|2,{73,101,0}}, +/* 51283 */ {(12<<2)|2,{73,101,0}}, +/* 51284 */ {(12<<2)|2,{73,101,0}}, +/* 51285 */ {(12<<2)|2,{73,101,0}}, +/* 51286 */ {(12<<2)|2,{73,101,0}}, +/* 51287 */ {(12<<2)|2,{73,101,0}}, +/* 51288 */ {(12<<2)|2,{73,101,0}}, +/* 51289 */ {(12<<2)|2,{73,101,0}}, +/* 51290 */ {(12<<2)|2,{73,101,0}}, +/* 51291 */ {(12<<2)|2,{73,101,0}}, +/* 51292 */ {(12<<2)|2,{73,101,0}}, +/* 51293 */ {(12<<2)|2,{73,101,0}}, +/* 51294 */ {(12<<2)|2,{73,101,0}}, +/* 51295 */ {(12<<2)|2,{73,101,0}}, +/* 51296 */ {(12<<2)|2,{73,105,0}}, +/* 51297 */ {(12<<2)|2,{73,105,0}}, +/* 51298 */ {(12<<2)|2,{73,105,0}}, +/* 51299 */ {(12<<2)|2,{73,105,0}}, +/* 51300 */ {(12<<2)|2,{73,105,0}}, +/* 51301 */ {(12<<2)|2,{73,105,0}}, +/* 51302 */ {(12<<2)|2,{73,105,0}}, +/* 51303 */ {(12<<2)|2,{73,105,0}}, +/* 51304 */ {(12<<2)|2,{73,105,0}}, +/* 51305 */ {(12<<2)|2,{73,105,0}}, +/* 51306 */ {(12<<2)|2,{73,105,0}}, +/* 51307 */ {(12<<2)|2,{73,105,0}}, +/* 51308 */ {(12<<2)|2,{73,105,0}}, +/* 51309 */ {(12<<2)|2,{73,105,0}}, +/* 51310 */ {(12<<2)|2,{73,105,0}}, +/* 51311 */ {(12<<2)|2,{73,105,0}}, +/* 51312 */ {(12<<2)|2,{73,111,0}}, +/* 51313 */ {(12<<2)|2,{73,111,0}}, +/* 51314 */ {(12<<2)|2,{73,111,0}}, +/* 51315 */ {(12<<2)|2,{73,111,0}}, +/* 51316 */ {(12<<2)|2,{73,111,0}}, +/* 51317 */ {(12<<2)|2,{73,111,0}}, +/* 51318 */ {(12<<2)|2,{73,111,0}}, +/* 51319 */ {(12<<2)|2,{73,111,0}}, +/* 51320 */ {(12<<2)|2,{73,111,0}}, +/* 51321 */ {(12<<2)|2,{73,111,0}}, +/* 51322 */ {(12<<2)|2,{73,111,0}}, +/* 51323 */ {(12<<2)|2,{73,111,0}}, +/* 51324 */ {(12<<2)|2,{73,111,0}}, +/* 51325 */ {(12<<2)|2,{73,111,0}}, +/* 51326 */ {(12<<2)|2,{73,111,0}}, +/* 51327 */ {(12<<2)|2,{73,111,0}}, +/* 51328 */ {(12<<2)|2,{73,115,0}}, +/* 51329 */ {(12<<2)|2,{73,115,0}}, +/* 51330 */ {(12<<2)|2,{73,115,0}}, +/* 51331 */ {(12<<2)|2,{73,115,0}}, +/* 51332 */ {(12<<2)|2,{73,115,0}}, +/* 51333 */ {(12<<2)|2,{73,115,0}}, +/* 51334 */ {(12<<2)|2,{73,115,0}}, +/* 51335 */ {(12<<2)|2,{73,115,0}}, +/* 51336 */ {(12<<2)|2,{73,115,0}}, +/* 51337 */ {(12<<2)|2,{73,115,0}}, +/* 51338 */ {(12<<2)|2,{73,115,0}}, +/* 51339 */ {(12<<2)|2,{73,115,0}}, +/* 51340 */ {(12<<2)|2,{73,115,0}}, +/* 51341 */ {(12<<2)|2,{73,115,0}}, +/* 51342 */ {(12<<2)|2,{73,115,0}}, +/* 51343 */ {(12<<2)|2,{73,115,0}}, +/* 51344 */ {(12<<2)|2,{73,116,0}}, +/* 51345 */ {(12<<2)|2,{73,116,0}}, +/* 51346 */ {(12<<2)|2,{73,116,0}}, +/* 51347 */ {(12<<2)|2,{73,116,0}}, +/* 51348 */ {(12<<2)|2,{73,116,0}}, +/* 51349 */ {(12<<2)|2,{73,116,0}}, +/* 51350 */ {(12<<2)|2,{73,116,0}}, +/* 51351 */ {(12<<2)|2,{73,116,0}}, +/* 51352 */ {(12<<2)|2,{73,116,0}}, +/* 51353 */ {(12<<2)|2,{73,116,0}}, +/* 51354 */ {(12<<2)|2,{73,116,0}}, +/* 51355 */ {(12<<2)|2,{73,116,0}}, +/* 51356 */ {(12<<2)|2,{73,116,0}}, +/* 51357 */ {(12<<2)|2,{73,116,0}}, +/* 51358 */ {(12<<2)|2,{73,116,0}}, +/* 51359 */ {(12<<2)|2,{73,116,0}}, +/* 51360 */ {(13<<2)|2,{73,32,0}}, +/* 51361 */ {(13<<2)|2,{73,32,0}}, +/* 51362 */ {(13<<2)|2,{73,32,0}}, +/* 51363 */ {(13<<2)|2,{73,32,0}}, +/* 51364 */ {(13<<2)|2,{73,32,0}}, +/* 51365 */ {(13<<2)|2,{73,32,0}}, +/* 51366 */ {(13<<2)|2,{73,32,0}}, +/* 51367 */ {(13<<2)|2,{73,32,0}}, +/* 51368 */ {(13<<2)|2,{73,37,0}}, +/* 51369 */ {(13<<2)|2,{73,37,0}}, +/* 51370 */ {(13<<2)|2,{73,37,0}}, +/* 51371 */ {(13<<2)|2,{73,37,0}}, +/* 51372 */ {(13<<2)|2,{73,37,0}}, +/* 51373 */ {(13<<2)|2,{73,37,0}}, +/* 51374 */ {(13<<2)|2,{73,37,0}}, +/* 51375 */ {(13<<2)|2,{73,37,0}}, +/* 51376 */ {(13<<2)|2,{73,45,0}}, +/* 51377 */ {(13<<2)|2,{73,45,0}}, +/* 51378 */ {(13<<2)|2,{73,45,0}}, +/* 51379 */ {(13<<2)|2,{73,45,0}}, +/* 51380 */ {(13<<2)|2,{73,45,0}}, +/* 51381 */ {(13<<2)|2,{73,45,0}}, +/* 51382 */ {(13<<2)|2,{73,45,0}}, +/* 51383 */ {(13<<2)|2,{73,45,0}}, +/* 51384 */ {(13<<2)|2,{73,46,0}}, +/* 51385 */ {(13<<2)|2,{73,46,0}}, +/* 51386 */ {(13<<2)|2,{73,46,0}}, +/* 51387 */ {(13<<2)|2,{73,46,0}}, +/* 51388 */ {(13<<2)|2,{73,46,0}}, +/* 51389 */ {(13<<2)|2,{73,46,0}}, +/* 51390 */ {(13<<2)|2,{73,46,0}}, +/* 51391 */ {(13<<2)|2,{73,46,0}}, +/* 51392 */ {(13<<2)|2,{73,47,0}}, +/* 51393 */ {(13<<2)|2,{73,47,0}}, +/* 51394 */ {(13<<2)|2,{73,47,0}}, +/* 51395 */ {(13<<2)|2,{73,47,0}}, +/* 51396 */ {(13<<2)|2,{73,47,0}}, +/* 51397 */ {(13<<2)|2,{73,47,0}}, +/* 51398 */ {(13<<2)|2,{73,47,0}}, +/* 51399 */ {(13<<2)|2,{73,47,0}}, +/* 51400 */ {(13<<2)|2,{73,51,0}}, +/* 51401 */ {(13<<2)|2,{73,51,0}}, +/* 51402 */ {(13<<2)|2,{73,51,0}}, +/* 51403 */ {(13<<2)|2,{73,51,0}}, +/* 51404 */ {(13<<2)|2,{73,51,0}}, +/* 51405 */ {(13<<2)|2,{73,51,0}}, +/* 51406 */ {(13<<2)|2,{73,51,0}}, +/* 51407 */ {(13<<2)|2,{73,51,0}}, +/* 51408 */ {(13<<2)|2,{73,52,0}}, +/* 51409 */ {(13<<2)|2,{73,52,0}}, +/* 51410 */ {(13<<2)|2,{73,52,0}}, +/* 51411 */ {(13<<2)|2,{73,52,0}}, +/* 51412 */ {(13<<2)|2,{73,52,0}}, +/* 51413 */ {(13<<2)|2,{73,52,0}}, +/* 51414 */ {(13<<2)|2,{73,52,0}}, +/* 51415 */ {(13<<2)|2,{73,52,0}}, +/* 51416 */ {(13<<2)|2,{73,53,0}}, +/* 51417 */ {(13<<2)|2,{73,53,0}}, +/* 51418 */ {(13<<2)|2,{73,53,0}}, +/* 51419 */ {(13<<2)|2,{73,53,0}}, +/* 51420 */ {(13<<2)|2,{73,53,0}}, +/* 51421 */ {(13<<2)|2,{73,53,0}}, +/* 51422 */ {(13<<2)|2,{73,53,0}}, +/* 51423 */ {(13<<2)|2,{73,53,0}}, +/* 51424 */ {(13<<2)|2,{73,54,0}}, +/* 51425 */ {(13<<2)|2,{73,54,0}}, +/* 51426 */ {(13<<2)|2,{73,54,0}}, +/* 51427 */ {(13<<2)|2,{73,54,0}}, +/* 51428 */ {(13<<2)|2,{73,54,0}}, +/* 51429 */ {(13<<2)|2,{73,54,0}}, +/* 51430 */ {(13<<2)|2,{73,54,0}}, +/* 51431 */ {(13<<2)|2,{73,54,0}}, +/* 51432 */ {(13<<2)|2,{73,55,0}}, +/* 51433 */ {(13<<2)|2,{73,55,0}}, +/* 51434 */ {(13<<2)|2,{73,55,0}}, +/* 51435 */ {(13<<2)|2,{73,55,0}}, +/* 51436 */ {(13<<2)|2,{73,55,0}}, +/* 51437 */ {(13<<2)|2,{73,55,0}}, +/* 51438 */ {(13<<2)|2,{73,55,0}}, +/* 51439 */ {(13<<2)|2,{73,55,0}}, +/* 51440 */ {(13<<2)|2,{73,56,0}}, +/* 51441 */ {(13<<2)|2,{73,56,0}}, +/* 51442 */ {(13<<2)|2,{73,56,0}}, +/* 51443 */ {(13<<2)|2,{73,56,0}}, +/* 51444 */ {(13<<2)|2,{73,56,0}}, +/* 51445 */ {(13<<2)|2,{73,56,0}}, +/* 51446 */ {(13<<2)|2,{73,56,0}}, +/* 51447 */ {(13<<2)|2,{73,56,0}}, +/* 51448 */ {(13<<2)|2,{73,57,0}}, +/* 51449 */ {(13<<2)|2,{73,57,0}}, +/* 51450 */ {(13<<2)|2,{73,57,0}}, +/* 51451 */ {(13<<2)|2,{73,57,0}}, +/* 51452 */ {(13<<2)|2,{73,57,0}}, +/* 51453 */ {(13<<2)|2,{73,57,0}}, +/* 51454 */ {(13<<2)|2,{73,57,0}}, +/* 51455 */ {(13<<2)|2,{73,57,0}}, +/* 51456 */ {(13<<2)|2,{73,61,0}}, +/* 51457 */ {(13<<2)|2,{73,61,0}}, +/* 51458 */ {(13<<2)|2,{73,61,0}}, +/* 51459 */ {(13<<2)|2,{73,61,0}}, +/* 51460 */ {(13<<2)|2,{73,61,0}}, +/* 51461 */ {(13<<2)|2,{73,61,0}}, +/* 51462 */ {(13<<2)|2,{73,61,0}}, +/* 51463 */ {(13<<2)|2,{73,61,0}}, +/* 51464 */ {(13<<2)|2,{73,65,0}}, +/* 51465 */ {(13<<2)|2,{73,65,0}}, +/* 51466 */ {(13<<2)|2,{73,65,0}}, +/* 51467 */ {(13<<2)|2,{73,65,0}}, +/* 51468 */ {(13<<2)|2,{73,65,0}}, +/* 51469 */ {(13<<2)|2,{73,65,0}}, +/* 51470 */ {(13<<2)|2,{73,65,0}}, +/* 51471 */ {(13<<2)|2,{73,65,0}}, +/* 51472 */ {(13<<2)|2,{73,95,0}}, +/* 51473 */ {(13<<2)|2,{73,95,0}}, +/* 51474 */ {(13<<2)|2,{73,95,0}}, +/* 51475 */ {(13<<2)|2,{73,95,0}}, +/* 51476 */ {(13<<2)|2,{73,95,0}}, +/* 51477 */ {(13<<2)|2,{73,95,0}}, +/* 51478 */ {(13<<2)|2,{73,95,0}}, +/* 51479 */ {(13<<2)|2,{73,95,0}}, +/* 51480 */ {(13<<2)|2,{73,98,0}}, +/* 51481 */ {(13<<2)|2,{73,98,0}}, +/* 51482 */ {(13<<2)|2,{73,98,0}}, +/* 51483 */ {(13<<2)|2,{73,98,0}}, +/* 51484 */ {(13<<2)|2,{73,98,0}}, +/* 51485 */ {(13<<2)|2,{73,98,0}}, +/* 51486 */ {(13<<2)|2,{73,98,0}}, +/* 51487 */ {(13<<2)|2,{73,98,0}}, +/* 51488 */ {(13<<2)|2,{73,100,0}}, +/* 51489 */ {(13<<2)|2,{73,100,0}}, +/* 51490 */ {(13<<2)|2,{73,100,0}}, +/* 51491 */ {(13<<2)|2,{73,100,0}}, +/* 51492 */ {(13<<2)|2,{73,100,0}}, +/* 51493 */ {(13<<2)|2,{73,100,0}}, +/* 51494 */ {(13<<2)|2,{73,100,0}}, +/* 51495 */ {(13<<2)|2,{73,100,0}}, +/* 51496 */ {(13<<2)|2,{73,102,0}}, +/* 51497 */ {(13<<2)|2,{73,102,0}}, +/* 51498 */ {(13<<2)|2,{73,102,0}}, +/* 51499 */ {(13<<2)|2,{73,102,0}}, +/* 51500 */ {(13<<2)|2,{73,102,0}}, +/* 51501 */ {(13<<2)|2,{73,102,0}}, +/* 51502 */ {(13<<2)|2,{73,102,0}}, +/* 51503 */ {(13<<2)|2,{73,102,0}}, +/* 51504 */ {(13<<2)|2,{73,103,0}}, +/* 51505 */ {(13<<2)|2,{73,103,0}}, +/* 51506 */ {(13<<2)|2,{73,103,0}}, +/* 51507 */ {(13<<2)|2,{73,103,0}}, +/* 51508 */ {(13<<2)|2,{73,103,0}}, +/* 51509 */ {(13<<2)|2,{73,103,0}}, +/* 51510 */ {(13<<2)|2,{73,103,0}}, +/* 51511 */ {(13<<2)|2,{73,103,0}}, +/* 51512 */ {(13<<2)|2,{73,104,0}}, +/* 51513 */ {(13<<2)|2,{73,104,0}}, +/* 51514 */ {(13<<2)|2,{73,104,0}}, +/* 51515 */ {(13<<2)|2,{73,104,0}}, +/* 51516 */ {(13<<2)|2,{73,104,0}}, +/* 51517 */ {(13<<2)|2,{73,104,0}}, +/* 51518 */ {(13<<2)|2,{73,104,0}}, +/* 51519 */ {(13<<2)|2,{73,104,0}}, +/* 51520 */ {(13<<2)|2,{73,108,0}}, +/* 51521 */ {(13<<2)|2,{73,108,0}}, +/* 51522 */ {(13<<2)|2,{73,108,0}}, +/* 51523 */ {(13<<2)|2,{73,108,0}}, +/* 51524 */ {(13<<2)|2,{73,108,0}}, +/* 51525 */ {(13<<2)|2,{73,108,0}}, +/* 51526 */ {(13<<2)|2,{73,108,0}}, +/* 51527 */ {(13<<2)|2,{73,108,0}}, +/* 51528 */ {(13<<2)|2,{73,109,0}}, +/* 51529 */ {(13<<2)|2,{73,109,0}}, +/* 51530 */ {(13<<2)|2,{73,109,0}}, +/* 51531 */ {(13<<2)|2,{73,109,0}}, +/* 51532 */ {(13<<2)|2,{73,109,0}}, +/* 51533 */ {(13<<2)|2,{73,109,0}}, +/* 51534 */ {(13<<2)|2,{73,109,0}}, +/* 51535 */ {(13<<2)|2,{73,109,0}}, +/* 51536 */ {(13<<2)|2,{73,110,0}}, +/* 51537 */ {(13<<2)|2,{73,110,0}}, +/* 51538 */ {(13<<2)|2,{73,110,0}}, +/* 51539 */ {(13<<2)|2,{73,110,0}}, +/* 51540 */ {(13<<2)|2,{73,110,0}}, +/* 51541 */ {(13<<2)|2,{73,110,0}}, +/* 51542 */ {(13<<2)|2,{73,110,0}}, +/* 51543 */ {(13<<2)|2,{73,110,0}}, +/* 51544 */ {(13<<2)|2,{73,112,0}}, +/* 51545 */ {(13<<2)|2,{73,112,0}}, +/* 51546 */ {(13<<2)|2,{73,112,0}}, +/* 51547 */ {(13<<2)|2,{73,112,0}}, +/* 51548 */ {(13<<2)|2,{73,112,0}}, +/* 51549 */ {(13<<2)|2,{73,112,0}}, +/* 51550 */ {(13<<2)|2,{73,112,0}}, +/* 51551 */ {(13<<2)|2,{73,112,0}}, +/* 51552 */ {(13<<2)|2,{73,114,0}}, +/* 51553 */ {(13<<2)|2,{73,114,0}}, +/* 51554 */ {(13<<2)|2,{73,114,0}}, +/* 51555 */ {(13<<2)|2,{73,114,0}}, +/* 51556 */ {(13<<2)|2,{73,114,0}}, +/* 51557 */ {(13<<2)|2,{73,114,0}}, +/* 51558 */ {(13<<2)|2,{73,114,0}}, +/* 51559 */ {(13<<2)|2,{73,114,0}}, +/* 51560 */ {(13<<2)|2,{73,117,0}}, +/* 51561 */ {(13<<2)|2,{73,117,0}}, +/* 51562 */ {(13<<2)|2,{73,117,0}}, +/* 51563 */ {(13<<2)|2,{73,117,0}}, +/* 51564 */ {(13<<2)|2,{73,117,0}}, +/* 51565 */ {(13<<2)|2,{73,117,0}}, +/* 51566 */ {(13<<2)|2,{73,117,0}}, +/* 51567 */ {(13<<2)|2,{73,117,0}}, +/* 51568 */ {(14<<2)|2,{73,58,0}}, +/* 51569 */ {(14<<2)|2,{73,58,0}}, +/* 51570 */ {(14<<2)|2,{73,58,0}}, +/* 51571 */ {(14<<2)|2,{73,58,0}}, +/* 51572 */ {(14<<2)|2,{73,66,0}}, +/* 51573 */ {(14<<2)|2,{73,66,0}}, +/* 51574 */ {(14<<2)|2,{73,66,0}}, +/* 51575 */ {(14<<2)|2,{73,66,0}}, +/* 51576 */ {(14<<2)|2,{73,67,0}}, +/* 51577 */ {(14<<2)|2,{73,67,0}}, +/* 51578 */ {(14<<2)|2,{73,67,0}}, +/* 51579 */ {(14<<2)|2,{73,67,0}}, +/* 51580 */ {(14<<2)|2,{73,68,0}}, +/* 51581 */ {(14<<2)|2,{73,68,0}}, +/* 51582 */ {(14<<2)|2,{73,68,0}}, +/* 51583 */ {(14<<2)|2,{73,68,0}}, +/* 51584 */ {(14<<2)|2,{73,69,0}}, +/* 51585 */ {(14<<2)|2,{73,69,0}}, +/* 51586 */ {(14<<2)|2,{73,69,0}}, +/* 51587 */ {(14<<2)|2,{73,69,0}}, +/* 51588 */ {(14<<2)|2,{73,70,0}}, +/* 51589 */ {(14<<2)|2,{73,70,0}}, +/* 51590 */ {(14<<2)|2,{73,70,0}}, +/* 51591 */ {(14<<2)|2,{73,70,0}}, +/* 51592 */ {(14<<2)|2,{73,71,0}}, +/* 51593 */ {(14<<2)|2,{73,71,0}}, +/* 51594 */ {(14<<2)|2,{73,71,0}}, +/* 51595 */ {(14<<2)|2,{73,71,0}}, +/* 51596 */ {(14<<2)|2,{73,72,0}}, +/* 51597 */ {(14<<2)|2,{73,72,0}}, +/* 51598 */ {(14<<2)|2,{73,72,0}}, +/* 51599 */ {(14<<2)|2,{73,72,0}}, +/* 51600 */ {(14<<2)|2,{73,73,0}}, +/* 51601 */ {(14<<2)|2,{73,73,0}}, +/* 51602 */ {(14<<2)|2,{73,73,0}}, +/* 51603 */ {(14<<2)|2,{73,73,0}}, +/* 51604 */ {(14<<2)|2,{73,74,0}}, +/* 51605 */ {(14<<2)|2,{73,74,0}}, +/* 51606 */ {(14<<2)|2,{73,74,0}}, +/* 51607 */ {(14<<2)|2,{73,74,0}}, +/* 51608 */ {(14<<2)|2,{73,75,0}}, +/* 51609 */ {(14<<2)|2,{73,75,0}}, +/* 51610 */ {(14<<2)|2,{73,75,0}}, +/* 51611 */ {(14<<2)|2,{73,75,0}}, +/* 51612 */ {(14<<2)|2,{73,76,0}}, +/* 51613 */ {(14<<2)|2,{73,76,0}}, +/* 51614 */ {(14<<2)|2,{73,76,0}}, +/* 51615 */ {(14<<2)|2,{73,76,0}}, +/* 51616 */ {(14<<2)|2,{73,77,0}}, +/* 51617 */ {(14<<2)|2,{73,77,0}}, +/* 51618 */ {(14<<2)|2,{73,77,0}}, +/* 51619 */ {(14<<2)|2,{73,77,0}}, +/* 51620 */ {(14<<2)|2,{73,78,0}}, +/* 51621 */ {(14<<2)|2,{73,78,0}}, +/* 51622 */ {(14<<2)|2,{73,78,0}}, +/* 51623 */ {(14<<2)|2,{73,78,0}}, +/* 51624 */ {(14<<2)|2,{73,79,0}}, +/* 51625 */ {(14<<2)|2,{73,79,0}}, +/* 51626 */ {(14<<2)|2,{73,79,0}}, +/* 51627 */ {(14<<2)|2,{73,79,0}}, +/* 51628 */ {(14<<2)|2,{73,80,0}}, +/* 51629 */ {(14<<2)|2,{73,80,0}}, +/* 51630 */ {(14<<2)|2,{73,80,0}}, +/* 51631 */ {(14<<2)|2,{73,80,0}}, +/* 51632 */ {(14<<2)|2,{73,81,0}}, +/* 51633 */ {(14<<2)|2,{73,81,0}}, +/* 51634 */ {(14<<2)|2,{73,81,0}}, +/* 51635 */ {(14<<2)|2,{73,81,0}}, +/* 51636 */ {(14<<2)|2,{73,82,0}}, +/* 51637 */ {(14<<2)|2,{73,82,0}}, +/* 51638 */ {(14<<2)|2,{73,82,0}}, +/* 51639 */ {(14<<2)|2,{73,82,0}}, +/* 51640 */ {(14<<2)|2,{73,83,0}}, +/* 51641 */ {(14<<2)|2,{73,83,0}}, +/* 51642 */ {(14<<2)|2,{73,83,0}}, +/* 51643 */ {(14<<2)|2,{73,83,0}}, +/* 51644 */ {(14<<2)|2,{73,84,0}}, +/* 51645 */ {(14<<2)|2,{73,84,0}}, +/* 51646 */ {(14<<2)|2,{73,84,0}}, +/* 51647 */ {(14<<2)|2,{73,84,0}}, +/* 51648 */ {(14<<2)|2,{73,85,0}}, +/* 51649 */ {(14<<2)|2,{73,85,0}}, +/* 51650 */ {(14<<2)|2,{73,85,0}}, +/* 51651 */ {(14<<2)|2,{73,85,0}}, +/* 51652 */ {(14<<2)|2,{73,86,0}}, +/* 51653 */ {(14<<2)|2,{73,86,0}}, +/* 51654 */ {(14<<2)|2,{73,86,0}}, +/* 51655 */ {(14<<2)|2,{73,86,0}}, +/* 51656 */ {(14<<2)|2,{73,87,0}}, +/* 51657 */ {(14<<2)|2,{73,87,0}}, +/* 51658 */ {(14<<2)|2,{73,87,0}}, +/* 51659 */ {(14<<2)|2,{73,87,0}}, +/* 51660 */ {(14<<2)|2,{73,89,0}}, +/* 51661 */ {(14<<2)|2,{73,89,0}}, +/* 51662 */ {(14<<2)|2,{73,89,0}}, +/* 51663 */ {(14<<2)|2,{73,89,0}}, +/* 51664 */ {(14<<2)|2,{73,106,0}}, +/* 51665 */ {(14<<2)|2,{73,106,0}}, +/* 51666 */ {(14<<2)|2,{73,106,0}}, +/* 51667 */ {(14<<2)|2,{73,106,0}}, +/* 51668 */ {(14<<2)|2,{73,107,0}}, +/* 51669 */ {(14<<2)|2,{73,107,0}}, +/* 51670 */ {(14<<2)|2,{73,107,0}}, +/* 51671 */ {(14<<2)|2,{73,107,0}}, +/* 51672 */ {(14<<2)|2,{73,113,0}}, +/* 51673 */ {(14<<2)|2,{73,113,0}}, +/* 51674 */ {(14<<2)|2,{73,113,0}}, +/* 51675 */ {(14<<2)|2,{73,113,0}}, +/* 51676 */ {(14<<2)|2,{73,118,0}}, +/* 51677 */ {(14<<2)|2,{73,118,0}}, +/* 51678 */ {(14<<2)|2,{73,118,0}}, +/* 51679 */ {(14<<2)|2,{73,118,0}}, +/* 51680 */ {(14<<2)|2,{73,119,0}}, +/* 51681 */ {(14<<2)|2,{73,119,0}}, +/* 51682 */ {(14<<2)|2,{73,119,0}}, +/* 51683 */ {(14<<2)|2,{73,119,0}}, +/* 51684 */ {(14<<2)|2,{73,120,0}}, +/* 51685 */ {(14<<2)|2,{73,120,0}}, +/* 51686 */ {(14<<2)|2,{73,120,0}}, +/* 51687 */ {(14<<2)|2,{73,120,0}}, +/* 51688 */ {(14<<2)|2,{73,121,0}}, +/* 51689 */ {(14<<2)|2,{73,121,0}}, +/* 51690 */ {(14<<2)|2,{73,121,0}}, +/* 51691 */ {(14<<2)|2,{73,121,0}}, +/* 51692 */ {(14<<2)|2,{73,122,0}}, +/* 51693 */ {(14<<2)|2,{73,122,0}}, +/* 51694 */ {(14<<2)|2,{73,122,0}}, +/* 51695 */ {(14<<2)|2,{73,122,0}}, +/* 51696 */ {(15<<2)|2,{73,38,0}}, +/* 51697 */ {(15<<2)|2,{73,38,0}}, +/* 51698 */ {(15<<2)|2,{73,42,0}}, +/* 51699 */ {(15<<2)|2,{73,42,0}}, +/* 51700 */ {(15<<2)|2,{73,44,0}}, +/* 51701 */ {(15<<2)|2,{73,44,0}}, +/* 51702 */ {(15<<2)|2,{73,59,0}}, +/* 51703 */ {(15<<2)|2,{73,59,0}}, +/* 51704 */ {(15<<2)|2,{73,88,0}}, +/* 51705 */ {(15<<2)|2,{73,88,0}}, +/* 51706 */ {(15<<2)|2,{73,90,0}}, +/* 51707 */ {(15<<2)|2,{73,90,0}}, +/* 51708 */ {(7<<2)|1,{73,0,0}}, +/* 51709 */ {(7<<2)|1,{73,0,0}}, +/* 51710 */ {(7<<2)|1,{73,0,0}}, +/* 51711 */ {(7<<2)|1,{73,0,0}}, +/* 51712 */ {(12<<2)|2,{74,48,0}}, +/* 51713 */ {(12<<2)|2,{74,48,0}}, +/* 51714 */ {(12<<2)|2,{74,48,0}}, +/* 51715 */ {(12<<2)|2,{74,48,0}}, +/* 51716 */ {(12<<2)|2,{74,48,0}}, +/* 51717 */ {(12<<2)|2,{74,48,0}}, +/* 51718 */ {(12<<2)|2,{74,48,0}}, +/* 51719 */ {(12<<2)|2,{74,48,0}}, +/* 51720 */ {(12<<2)|2,{74,48,0}}, +/* 51721 */ {(12<<2)|2,{74,48,0}}, +/* 51722 */ {(12<<2)|2,{74,48,0}}, +/* 51723 */ {(12<<2)|2,{74,48,0}}, +/* 51724 */ {(12<<2)|2,{74,48,0}}, +/* 51725 */ {(12<<2)|2,{74,48,0}}, +/* 51726 */ {(12<<2)|2,{74,48,0}}, +/* 51727 */ {(12<<2)|2,{74,48,0}}, +/* 51728 */ {(12<<2)|2,{74,49,0}}, +/* 51729 */ {(12<<2)|2,{74,49,0}}, +/* 51730 */ {(12<<2)|2,{74,49,0}}, +/* 51731 */ {(12<<2)|2,{74,49,0}}, +/* 51732 */ {(12<<2)|2,{74,49,0}}, +/* 51733 */ {(12<<2)|2,{74,49,0}}, +/* 51734 */ {(12<<2)|2,{74,49,0}}, +/* 51735 */ {(12<<2)|2,{74,49,0}}, +/* 51736 */ {(12<<2)|2,{74,49,0}}, +/* 51737 */ {(12<<2)|2,{74,49,0}}, +/* 51738 */ {(12<<2)|2,{74,49,0}}, +/* 51739 */ {(12<<2)|2,{74,49,0}}, +/* 51740 */ {(12<<2)|2,{74,49,0}}, +/* 51741 */ {(12<<2)|2,{74,49,0}}, +/* 51742 */ {(12<<2)|2,{74,49,0}}, +/* 51743 */ {(12<<2)|2,{74,49,0}}, +/* 51744 */ {(12<<2)|2,{74,50,0}}, +/* 51745 */ {(12<<2)|2,{74,50,0}}, +/* 51746 */ {(12<<2)|2,{74,50,0}}, +/* 51747 */ {(12<<2)|2,{74,50,0}}, +/* 51748 */ {(12<<2)|2,{74,50,0}}, +/* 51749 */ {(12<<2)|2,{74,50,0}}, +/* 51750 */ {(12<<2)|2,{74,50,0}}, +/* 51751 */ {(12<<2)|2,{74,50,0}}, +/* 51752 */ {(12<<2)|2,{74,50,0}}, +/* 51753 */ {(12<<2)|2,{74,50,0}}, +/* 51754 */ {(12<<2)|2,{74,50,0}}, +/* 51755 */ {(12<<2)|2,{74,50,0}}, +/* 51756 */ {(12<<2)|2,{74,50,0}}, +/* 51757 */ {(12<<2)|2,{74,50,0}}, +/* 51758 */ {(12<<2)|2,{74,50,0}}, +/* 51759 */ {(12<<2)|2,{74,50,0}}, +/* 51760 */ {(12<<2)|2,{74,97,0}}, +/* 51761 */ {(12<<2)|2,{74,97,0}}, +/* 51762 */ {(12<<2)|2,{74,97,0}}, +/* 51763 */ {(12<<2)|2,{74,97,0}}, +/* 51764 */ {(12<<2)|2,{74,97,0}}, +/* 51765 */ {(12<<2)|2,{74,97,0}}, +/* 51766 */ {(12<<2)|2,{74,97,0}}, +/* 51767 */ {(12<<2)|2,{74,97,0}}, +/* 51768 */ {(12<<2)|2,{74,97,0}}, +/* 51769 */ {(12<<2)|2,{74,97,0}}, +/* 51770 */ {(12<<2)|2,{74,97,0}}, +/* 51771 */ {(12<<2)|2,{74,97,0}}, +/* 51772 */ {(12<<2)|2,{74,97,0}}, +/* 51773 */ {(12<<2)|2,{74,97,0}}, +/* 51774 */ {(12<<2)|2,{74,97,0}}, +/* 51775 */ {(12<<2)|2,{74,97,0}}, +/* 51776 */ {(12<<2)|2,{74,99,0}}, +/* 51777 */ {(12<<2)|2,{74,99,0}}, +/* 51778 */ {(12<<2)|2,{74,99,0}}, +/* 51779 */ {(12<<2)|2,{74,99,0}}, +/* 51780 */ {(12<<2)|2,{74,99,0}}, +/* 51781 */ {(12<<2)|2,{74,99,0}}, +/* 51782 */ {(12<<2)|2,{74,99,0}}, +/* 51783 */ {(12<<2)|2,{74,99,0}}, +/* 51784 */ {(12<<2)|2,{74,99,0}}, +/* 51785 */ {(12<<2)|2,{74,99,0}}, +/* 51786 */ {(12<<2)|2,{74,99,0}}, +/* 51787 */ {(12<<2)|2,{74,99,0}}, +/* 51788 */ {(12<<2)|2,{74,99,0}}, +/* 51789 */ {(12<<2)|2,{74,99,0}}, +/* 51790 */ {(12<<2)|2,{74,99,0}}, +/* 51791 */ {(12<<2)|2,{74,99,0}}, +/* 51792 */ {(12<<2)|2,{74,101,0}}, +/* 51793 */ {(12<<2)|2,{74,101,0}}, +/* 51794 */ {(12<<2)|2,{74,101,0}}, +/* 51795 */ {(12<<2)|2,{74,101,0}}, +/* 51796 */ {(12<<2)|2,{74,101,0}}, +/* 51797 */ {(12<<2)|2,{74,101,0}}, +/* 51798 */ {(12<<2)|2,{74,101,0}}, +/* 51799 */ {(12<<2)|2,{74,101,0}}, +/* 51800 */ {(12<<2)|2,{74,101,0}}, +/* 51801 */ {(12<<2)|2,{74,101,0}}, +/* 51802 */ {(12<<2)|2,{74,101,0}}, +/* 51803 */ {(12<<2)|2,{74,101,0}}, +/* 51804 */ {(12<<2)|2,{74,101,0}}, +/* 51805 */ {(12<<2)|2,{74,101,0}}, +/* 51806 */ {(12<<2)|2,{74,101,0}}, +/* 51807 */ {(12<<2)|2,{74,101,0}}, +/* 51808 */ {(12<<2)|2,{74,105,0}}, +/* 51809 */ {(12<<2)|2,{74,105,0}}, +/* 51810 */ {(12<<2)|2,{74,105,0}}, +/* 51811 */ {(12<<2)|2,{74,105,0}}, +/* 51812 */ {(12<<2)|2,{74,105,0}}, +/* 51813 */ {(12<<2)|2,{74,105,0}}, +/* 51814 */ {(12<<2)|2,{74,105,0}}, +/* 51815 */ {(12<<2)|2,{74,105,0}}, +/* 51816 */ {(12<<2)|2,{74,105,0}}, +/* 51817 */ {(12<<2)|2,{74,105,0}}, +/* 51818 */ {(12<<2)|2,{74,105,0}}, +/* 51819 */ {(12<<2)|2,{74,105,0}}, +/* 51820 */ {(12<<2)|2,{74,105,0}}, +/* 51821 */ {(12<<2)|2,{74,105,0}}, +/* 51822 */ {(12<<2)|2,{74,105,0}}, +/* 51823 */ {(12<<2)|2,{74,105,0}}, +/* 51824 */ {(12<<2)|2,{74,111,0}}, +/* 51825 */ {(12<<2)|2,{74,111,0}}, +/* 51826 */ {(12<<2)|2,{74,111,0}}, +/* 51827 */ {(12<<2)|2,{74,111,0}}, +/* 51828 */ {(12<<2)|2,{74,111,0}}, +/* 51829 */ {(12<<2)|2,{74,111,0}}, +/* 51830 */ {(12<<2)|2,{74,111,0}}, +/* 51831 */ {(12<<2)|2,{74,111,0}}, +/* 51832 */ {(12<<2)|2,{74,111,0}}, +/* 51833 */ {(12<<2)|2,{74,111,0}}, +/* 51834 */ {(12<<2)|2,{74,111,0}}, +/* 51835 */ {(12<<2)|2,{74,111,0}}, +/* 51836 */ {(12<<2)|2,{74,111,0}}, +/* 51837 */ {(12<<2)|2,{74,111,0}}, +/* 51838 */ {(12<<2)|2,{74,111,0}}, +/* 51839 */ {(12<<2)|2,{74,111,0}}, +/* 51840 */ {(12<<2)|2,{74,115,0}}, +/* 51841 */ {(12<<2)|2,{74,115,0}}, +/* 51842 */ {(12<<2)|2,{74,115,0}}, +/* 51843 */ {(12<<2)|2,{74,115,0}}, +/* 51844 */ {(12<<2)|2,{74,115,0}}, +/* 51845 */ {(12<<2)|2,{74,115,0}}, +/* 51846 */ {(12<<2)|2,{74,115,0}}, +/* 51847 */ {(12<<2)|2,{74,115,0}}, +/* 51848 */ {(12<<2)|2,{74,115,0}}, +/* 51849 */ {(12<<2)|2,{74,115,0}}, +/* 51850 */ {(12<<2)|2,{74,115,0}}, +/* 51851 */ {(12<<2)|2,{74,115,0}}, +/* 51852 */ {(12<<2)|2,{74,115,0}}, +/* 51853 */ {(12<<2)|2,{74,115,0}}, +/* 51854 */ {(12<<2)|2,{74,115,0}}, +/* 51855 */ {(12<<2)|2,{74,115,0}}, +/* 51856 */ {(12<<2)|2,{74,116,0}}, +/* 51857 */ {(12<<2)|2,{74,116,0}}, +/* 51858 */ {(12<<2)|2,{74,116,0}}, +/* 51859 */ {(12<<2)|2,{74,116,0}}, +/* 51860 */ {(12<<2)|2,{74,116,0}}, +/* 51861 */ {(12<<2)|2,{74,116,0}}, +/* 51862 */ {(12<<2)|2,{74,116,0}}, +/* 51863 */ {(12<<2)|2,{74,116,0}}, +/* 51864 */ {(12<<2)|2,{74,116,0}}, +/* 51865 */ {(12<<2)|2,{74,116,0}}, +/* 51866 */ {(12<<2)|2,{74,116,0}}, +/* 51867 */ {(12<<2)|2,{74,116,0}}, +/* 51868 */ {(12<<2)|2,{74,116,0}}, +/* 51869 */ {(12<<2)|2,{74,116,0}}, +/* 51870 */ {(12<<2)|2,{74,116,0}}, +/* 51871 */ {(12<<2)|2,{74,116,0}}, +/* 51872 */ {(13<<2)|2,{74,32,0}}, +/* 51873 */ {(13<<2)|2,{74,32,0}}, +/* 51874 */ {(13<<2)|2,{74,32,0}}, +/* 51875 */ {(13<<2)|2,{74,32,0}}, +/* 51876 */ {(13<<2)|2,{74,32,0}}, +/* 51877 */ {(13<<2)|2,{74,32,0}}, +/* 51878 */ {(13<<2)|2,{74,32,0}}, +/* 51879 */ {(13<<2)|2,{74,32,0}}, +/* 51880 */ {(13<<2)|2,{74,37,0}}, +/* 51881 */ {(13<<2)|2,{74,37,0}}, +/* 51882 */ {(13<<2)|2,{74,37,0}}, +/* 51883 */ {(13<<2)|2,{74,37,0}}, +/* 51884 */ {(13<<2)|2,{74,37,0}}, +/* 51885 */ {(13<<2)|2,{74,37,0}}, +/* 51886 */ {(13<<2)|2,{74,37,0}}, +/* 51887 */ {(13<<2)|2,{74,37,0}}, +/* 51888 */ {(13<<2)|2,{74,45,0}}, +/* 51889 */ {(13<<2)|2,{74,45,0}}, +/* 51890 */ {(13<<2)|2,{74,45,0}}, +/* 51891 */ {(13<<2)|2,{74,45,0}}, +/* 51892 */ {(13<<2)|2,{74,45,0}}, +/* 51893 */ {(13<<2)|2,{74,45,0}}, +/* 51894 */ {(13<<2)|2,{74,45,0}}, +/* 51895 */ {(13<<2)|2,{74,45,0}}, +/* 51896 */ {(13<<2)|2,{74,46,0}}, +/* 51897 */ {(13<<2)|2,{74,46,0}}, +/* 51898 */ {(13<<2)|2,{74,46,0}}, +/* 51899 */ {(13<<2)|2,{74,46,0}}, +/* 51900 */ {(13<<2)|2,{74,46,0}}, +/* 51901 */ {(13<<2)|2,{74,46,0}}, +/* 51902 */ {(13<<2)|2,{74,46,0}}, +/* 51903 */ {(13<<2)|2,{74,46,0}}, +/* 51904 */ {(13<<2)|2,{74,47,0}}, +/* 51905 */ {(13<<2)|2,{74,47,0}}, +/* 51906 */ {(13<<2)|2,{74,47,0}}, +/* 51907 */ {(13<<2)|2,{74,47,0}}, +/* 51908 */ {(13<<2)|2,{74,47,0}}, +/* 51909 */ {(13<<2)|2,{74,47,0}}, +/* 51910 */ {(13<<2)|2,{74,47,0}}, +/* 51911 */ {(13<<2)|2,{74,47,0}}, +/* 51912 */ {(13<<2)|2,{74,51,0}}, +/* 51913 */ {(13<<2)|2,{74,51,0}}, +/* 51914 */ {(13<<2)|2,{74,51,0}}, +/* 51915 */ {(13<<2)|2,{74,51,0}}, +/* 51916 */ {(13<<2)|2,{74,51,0}}, +/* 51917 */ {(13<<2)|2,{74,51,0}}, +/* 51918 */ {(13<<2)|2,{74,51,0}}, +/* 51919 */ {(13<<2)|2,{74,51,0}}, +/* 51920 */ {(13<<2)|2,{74,52,0}}, +/* 51921 */ {(13<<2)|2,{74,52,0}}, +/* 51922 */ {(13<<2)|2,{74,52,0}}, +/* 51923 */ {(13<<2)|2,{74,52,0}}, +/* 51924 */ {(13<<2)|2,{74,52,0}}, +/* 51925 */ {(13<<2)|2,{74,52,0}}, +/* 51926 */ {(13<<2)|2,{74,52,0}}, +/* 51927 */ {(13<<2)|2,{74,52,0}}, +/* 51928 */ {(13<<2)|2,{74,53,0}}, +/* 51929 */ {(13<<2)|2,{74,53,0}}, +/* 51930 */ {(13<<2)|2,{74,53,0}}, +/* 51931 */ {(13<<2)|2,{74,53,0}}, +/* 51932 */ {(13<<2)|2,{74,53,0}}, +/* 51933 */ {(13<<2)|2,{74,53,0}}, +/* 51934 */ {(13<<2)|2,{74,53,0}}, +/* 51935 */ {(13<<2)|2,{74,53,0}}, +/* 51936 */ {(13<<2)|2,{74,54,0}}, +/* 51937 */ {(13<<2)|2,{74,54,0}}, +/* 51938 */ {(13<<2)|2,{74,54,0}}, +/* 51939 */ {(13<<2)|2,{74,54,0}}, +/* 51940 */ {(13<<2)|2,{74,54,0}}, +/* 51941 */ {(13<<2)|2,{74,54,0}}, +/* 51942 */ {(13<<2)|2,{74,54,0}}, +/* 51943 */ {(13<<2)|2,{74,54,0}}, +/* 51944 */ {(13<<2)|2,{74,55,0}}, +/* 51945 */ {(13<<2)|2,{74,55,0}}, +/* 51946 */ {(13<<2)|2,{74,55,0}}, +/* 51947 */ {(13<<2)|2,{74,55,0}}, +/* 51948 */ {(13<<2)|2,{74,55,0}}, +/* 51949 */ {(13<<2)|2,{74,55,0}}, +/* 51950 */ {(13<<2)|2,{74,55,0}}, +/* 51951 */ {(13<<2)|2,{74,55,0}}, +/* 51952 */ {(13<<2)|2,{74,56,0}}, +/* 51953 */ {(13<<2)|2,{74,56,0}}, +/* 51954 */ {(13<<2)|2,{74,56,0}}, +/* 51955 */ {(13<<2)|2,{74,56,0}}, +/* 51956 */ {(13<<2)|2,{74,56,0}}, +/* 51957 */ {(13<<2)|2,{74,56,0}}, +/* 51958 */ {(13<<2)|2,{74,56,0}}, +/* 51959 */ {(13<<2)|2,{74,56,0}}, +/* 51960 */ {(13<<2)|2,{74,57,0}}, +/* 51961 */ {(13<<2)|2,{74,57,0}}, +/* 51962 */ {(13<<2)|2,{74,57,0}}, +/* 51963 */ {(13<<2)|2,{74,57,0}}, +/* 51964 */ {(13<<2)|2,{74,57,0}}, +/* 51965 */ {(13<<2)|2,{74,57,0}}, +/* 51966 */ {(13<<2)|2,{74,57,0}}, +/* 51967 */ {(13<<2)|2,{74,57,0}}, +/* 51968 */ {(13<<2)|2,{74,61,0}}, +/* 51969 */ {(13<<2)|2,{74,61,0}}, +/* 51970 */ {(13<<2)|2,{74,61,0}}, +/* 51971 */ {(13<<2)|2,{74,61,0}}, +/* 51972 */ {(13<<2)|2,{74,61,0}}, +/* 51973 */ {(13<<2)|2,{74,61,0}}, +/* 51974 */ {(13<<2)|2,{74,61,0}}, +/* 51975 */ {(13<<2)|2,{74,61,0}}, +/* 51976 */ {(13<<2)|2,{74,65,0}}, +/* 51977 */ {(13<<2)|2,{74,65,0}}, +/* 51978 */ {(13<<2)|2,{74,65,0}}, +/* 51979 */ {(13<<2)|2,{74,65,0}}, +/* 51980 */ {(13<<2)|2,{74,65,0}}, +/* 51981 */ {(13<<2)|2,{74,65,0}}, +/* 51982 */ {(13<<2)|2,{74,65,0}}, +/* 51983 */ {(13<<2)|2,{74,65,0}}, +/* 51984 */ {(13<<2)|2,{74,95,0}}, +/* 51985 */ {(13<<2)|2,{74,95,0}}, +/* 51986 */ {(13<<2)|2,{74,95,0}}, +/* 51987 */ {(13<<2)|2,{74,95,0}}, +/* 51988 */ {(13<<2)|2,{74,95,0}}, +/* 51989 */ {(13<<2)|2,{74,95,0}}, +/* 51990 */ {(13<<2)|2,{74,95,0}}, +/* 51991 */ {(13<<2)|2,{74,95,0}}, +/* 51992 */ {(13<<2)|2,{74,98,0}}, +/* 51993 */ {(13<<2)|2,{74,98,0}}, +/* 51994 */ {(13<<2)|2,{74,98,0}}, +/* 51995 */ {(13<<2)|2,{74,98,0}}, +/* 51996 */ {(13<<2)|2,{74,98,0}}, +/* 51997 */ {(13<<2)|2,{74,98,0}}, +/* 51998 */ {(13<<2)|2,{74,98,0}}, +/* 51999 */ {(13<<2)|2,{74,98,0}}, +/* 52000 */ {(13<<2)|2,{74,100,0}}, +/* 52001 */ {(13<<2)|2,{74,100,0}}, +/* 52002 */ {(13<<2)|2,{74,100,0}}, +/* 52003 */ {(13<<2)|2,{74,100,0}}, +/* 52004 */ {(13<<2)|2,{74,100,0}}, +/* 52005 */ {(13<<2)|2,{74,100,0}}, +/* 52006 */ {(13<<2)|2,{74,100,0}}, +/* 52007 */ {(13<<2)|2,{74,100,0}}, +/* 52008 */ {(13<<2)|2,{74,102,0}}, +/* 52009 */ {(13<<2)|2,{74,102,0}}, +/* 52010 */ {(13<<2)|2,{74,102,0}}, +/* 52011 */ {(13<<2)|2,{74,102,0}}, +/* 52012 */ {(13<<2)|2,{74,102,0}}, +/* 52013 */ {(13<<2)|2,{74,102,0}}, +/* 52014 */ {(13<<2)|2,{74,102,0}}, +/* 52015 */ {(13<<2)|2,{74,102,0}}, +/* 52016 */ {(13<<2)|2,{74,103,0}}, +/* 52017 */ {(13<<2)|2,{74,103,0}}, +/* 52018 */ {(13<<2)|2,{74,103,0}}, +/* 52019 */ {(13<<2)|2,{74,103,0}}, +/* 52020 */ {(13<<2)|2,{74,103,0}}, +/* 52021 */ {(13<<2)|2,{74,103,0}}, +/* 52022 */ {(13<<2)|2,{74,103,0}}, +/* 52023 */ {(13<<2)|2,{74,103,0}}, +/* 52024 */ {(13<<2)|2,{74,104,0}}, +/* 52025 */ {(13<<2)|2,{74,104,0}}, +/* 52026 */ {(13<<2)|2,{74,104,0}}, +/* 52027 */ {(13<<2)|2,{74,104,0}}, +/* 52028 */ {(13<<2)|2,{74,104,0}}, +/* 52029 */ {(13<<2)|2,{74,104,0}}, +/* 52030 */ {(13<<2)|2,{74,104,0}}, +/* 52031 */ {(13<<2)|2,{74,104,0}}, +/* 52032 */ {(13<<2)|2,{74,108,0}}, +/* 52033 */ {(13<<2)|2,{74,108,0}}, +/* 52034 */ {(13<<2)|2,{74,108,0}}, +/* 52035 */ {(13<<2)|2,{74,108,0}}, +/* 52036 */ {(13<<2)|2,{74,108,0}}, +/* 52037 */ {(13<<2)|2,{74,108,0}}, +/* 52038 */ {(13<<2)|2,{74,108,0}}, +/* 52039 */ {(13<<2)|2,{74,108,0}}, +/* 52040 */ {(13<<2)|2,{74,109,0}}, +/* 52041 */ {(13<<2)|2,{74,109,0}}, +/* 52042 */ {(13<<2)|2,{74,109,0}}, +/* 52043 */ {(13<<2)|2,{74,109,0}}, +/* 52044 */ {(13<<2)|2,{74,109,0}}, +/* 52045 */ {(13<<2)|2,{74,109,0}}, +/* 52046 */ {(13<<2)|2,{74,109,0}}, +/* 52047 */ {(13<<2)|2,{74,109,0}}, +/* 52048 */ {(13<<2)|2,{74,110,0}}, +/* 52049 */ {(13<<2)|2,{74,110,0}}, +/* 52050 */ {(13<<2)|2,{74,110,0}}, +/* 52051 */ {(13<<2)|2,{74,110,0}}, +/* 52052 */ {(13<<2)|2,{74,110,0}}, +/* 52053 */ {(13<<2)|2,{74,110,0}}, +/* 52054 */ {(13<<2)|2,{74,110,0}}, +/* 52055 */ {(13<<2)|2,{74,110,0}}, +/* 52056 */ {(13<<2)|2,{74,112,0}}, +/* 52057 */ {(13<<2)|2,{74,112,0}}, +/* 52058 */ {(13<<2)|2,{74,112,0}}, +/* 52059 */ {(13<<2)|2,{74,112,0}}, +/* 52060 */ {(13<<2)|2,{74,112,0}}, +/* 52061 */ {(13<<2)|2,{74,112,0}}, +/* 52062 */ {(13<<2)|2,{74,112,0}}, +/* 52063 */ {(13<<2)|2,{74,112,0}}, +/* 52064 */ {(13<<2)|2,{74,114,0}}, +/* 52065 */ {(13<<2)|2,{74,114,0}}, +/* 52066 */ {(13<<2)|2,{74,114,0}}, +/* 52067 */ {(13<<2)|2,{74,114,0}}, +/* 52068 */ {(13<<2)|2,{74,114,0}}, +/* 52069 */ {(13<<2)|2,{74,114,0}}, +/* 52070 */ {(13<<2)|2,{74,114,0}}, +/* 52071 */ {(13<<2)|2,{74,114,0}}, +/* 52072 */ {(13<<2)|2,{74,117,0}}, +/* 52073 */ {(13<<2)|2,{74,117,0}}, +/* 52074 */ {(13<<2)|2,{74,117,0}}, +/* 52075 */ {(13<<2)|2,{74,117,0}}, +/* 52076 */ {(13<<2)|2,{74,117,0}}, +/* 52077 */ {(13<<2)|2,{74,117,0}}, +/* 52078 */ {(13<<2)|2,{74,117,0}}, +/* 52079 */ {(13<<2)|2,{74,117,0}}, +/* 52080 */ {(14<<2)|2,{74,58,0}}, +/* 52081 */ {(14<<2)|2,{74,58,0}}, +/* 52082 */ {(14<<2)|2,{74,58,0}}, +/* 52083 */ {(14<<2)|2,{74,58,0}}, +/* 52084 */ {(14<<2)|2,{74,66,0}}, +/* 52085 */ {(14<<2)|2,{74,66,0}}, +/* 52086 */ {(14<<2)|2,{74,66,0}}, +/* 52087 */ {(14<<2)|2,{74,66,0}}, +/* 52088 */ {(14<<2)|2,{74,67,0}}, +/* 52089 */ {(14<<2)|2,{74,67,0}}, +/* 52090 */ {(14<<2)|2,{74,67,0}}, +/* 52091 */ {(14<<2)|2,{74,67,0}}, +/* 52092 */ {(14<<2)|2,{74,68,0}}, +/* 52093 */ {(14<<2)|2,{74,68,0}}, +/* 52094 */ {(14<<2)|2,{74,68,0}}, +/* 52095 */ {(14<<2)|2,{74,68,0}}, +/* 52096 */ {(14<<2)|2,{74,69,0}}, +/* 52097 */ {(14<<2)|2,{74,69,0}}, +/* 52098 */ {(14<<2)|2,{74,69,0}}, +/* 52099 */ {(14<<2)|2,{74,69,0}}, +/* 52100 */ {(14<<2)|2,{74,70,0}}, +/* 52101 */ {(14<<2)|2,{74,70,0}}, +/* 52102 */ {(14<<2)|2,{74,70,0}}, +/* 52103 */ {(14<<2)|2,{74,70,0}}, +/* 52104 */ {(14<<2)|2,{74,71,0}}, +/* 52105 */ {(14<<2)|2,{74,71,0}}, +/* 52106 */ {(14<<2)|2,{74,71,0}}, +/* 52107 */ {(14<<2)|2,{74,71,0}}, +/* 52108 */ {(14<<2)|2,{74,72,0}}, +/* 52109 */ {(14<<2)|2,{74,72,0}}, +/* 52110 */ {(14<<2)|2,{74,72,0}}, +/* 52111 */ {(14<<2)|2,{74,72,0}}, +/* 52112 */ {(14<<2)|2,{74,73,0}}, +/* 52113 */ {(14<<2)|2,{74,73,0}}, +/* 52114 */ {(14<<2)|2,{74,73,0}}, +/* 52115 */ {(14<<2)|2,{74,73,0}}, +/* 52116 */ {(14<<2)|2,{74,74,0}}, +/* 52117 */ {(14<<2)|2,{74,74,0}}, +/* 52118 */ {(14<<2)|2,{74,74,0}}, +/* 52119 */ {(14<<2)|2,{74,74,0}}, +/* 52120 */ {(14<<2)|2,{74,75,0}}, +/* 52121 */ {(14<<2)|2,{74,75,0}}, +/* 52122 */ {(14<<2)|2,{74,75,0}}, +/* 52123 */ {(14<<2)|2,{74,75,0}}, +/* 52124 */ {(14<<2)|2,{74,76,0}}, +/* 52125 */ {(14<<2)|2,{74,76,0}}, +/* 52126 */ {(14<<2)|2,{74,76,0}}, +/* 52127 */ {(14<<2)|2,{74,76,0}}, +/* 52128 */ {(14<<2)|2,{74,77,0}}, +/* 52129 */ {(14<<2)|2,{74,77,0}}, +/* 52130 */ {(14<<2)|2,{74,77,0}}, +/* 52131 */ {(14<<2)|2,{74,77,0}}, +/* 52132 */ {(14<<2)|2,{74,78,0}}, +/* 52133 */ {(14<<2)|2,{74,78,0}}, +/* 52134 */ {(14<<2)|2,{74,78,0}}, +/* 52135 */ {(14<<2)|2,{74,78,0}}, +/* 52136 */ {(14<<2)|2,{74,79,0}}, +/* 52137 */ {(14<<2)|2,{74,79,0}}, +/* 52138 */ {(14<<2)|2,{74,79,0}}, +/* 52139 */ {(14<<2)|2,{74,79,0}}, +/* 52140 */ {(14<<2)|2,{74,80,0}}, +/* 52141 */ {(14<<2)|2,{74,80,0}}, +/* 52142 */ {(14<<2)|2,{74,80,0}}, +/* 52143 */ {(14<<2)|2,{74,80,0}}, +/* 52144 */ {(14<<2)|2,{74,81,0}}, +/* 52145 */ {(14<<2)|2,{74,81,0}}, +/* 52146 */ {(14<<2)|2,{74,81,0}}, +/* 52147 */ {(14<<2)|2,{74,81,0}}, +/* 52148 */ {(14<<2)|2,{74,82,0}}, +/* 52149 */ {(14<<2)|2,{74,82,0}}, +/* 52150 */ {(14<<2)|2,{74,82,0}}, +/* 52151 */ {(14<<2)|2,{74,82,0}}, +/* 52152 */ {(14<<2)|2,{74,83,0}}, +/* 52153 */ {(14<<2)|2,{74,83,0}}, +/* 52154 */ {(14<<2)|2,{74,83,0}}, +/* 52155 */ {(14<<2)|2,{74,83,0}}, +/* 52156 */ {(14<<2)|2,{74,84,0}}, +/* 52157 */ {(14<<2)|2,{74,84,0}}, +/* 52158 */ {(14<<2)|2,{74,84,0}}, +/* 52159 */ {(14<<2)|2,{74,84,0}}, +/* 52160 */ {(14<<2)|2,{74,85,0}}, +/* 52161 */ {(14<<2)|2,{74,85,0}}, +/* 52162 */ {(14<<2)|2,{74,85,0}}, +/* 52163 */ {(14<<2)|2,{74,85,0}}, +/* 52164 */ {(14<<2)|2,{74,86,0}}, +/* 52165 */ {(14<<2)|2,{74,86,0}}, +/* 52166 */ {(14<<2)|2,{74,86,0}}, +/* 52167 */ {(14<<2)|2,{74,86,0}}, +/* 52168 */ {(14<<2)|2,{74,87,0}}, +/* 52169 */ {(14<<2)|2,{74,87,0}}, +/* 52170 */ {(14<<2)|2,{74,87,0}}, +/* 52171 */ {(14<<2)|2,{74,87,0}}, +/* 52172 */ {(14<<2)|2,{74,89,0}}, +/* 52173 */ {(14<<2)|2,{74,89,0}}, +/* 52174 */ {(14<<2)|2,{74,89,0}}, +/* 52175 */ {(14<<2)|2,{74,89,0}}, +/* 52176 */ {(14<<2)|2,{74,106,0}}, +/* 52177 */ {(14<<2)|2,{74,106,0}}, +/* 52178 */ {(14<<2)|2,{74,106,0}}, +/* 52179 */ {(14<<2)|2,{74,106,0}}, +/* 52180 */ {(14<<2)|2,{74,107,0}}, +/* 52181 */ {(14<<2)|2,{74,107,0}}, +/* 52182 */ {(14<<2)|2,{74,107,0}}, +/* 52183 */ {(14<<2)|2,{74,107,0}}, +/* 52184 */ {(14<<2)|2,{74,113,0}}, +/* 52185 */ {(14<<2)|2,{74,113,0}}, +/* 52186 */ {(14<<2)|2,{74,113,0}}, +/* 52187 */ {(14<<2)|2,{74,113,0}}, +/* 52188 */ {(14<<2)|2,{74,118,0}}, +/* 52189 */ {(14<<2)|2,{74,118,0}}, +/* 52190 */ {(14<<2)|2,{74,118,0}}, +/* 52191 */ {(14<<2)|2,{74,118,0}}, +/* 52192 */ {(14<<2)|2,{74,119,0}}, +/* 52193 */ {(14<<2)|2,{74,119,0}}, +/* 52194 */ {(14<<2)|2,{74,119,0}}, +/* 52195 */ {(14<<2)|2,{74,119,0}}, +/* 52196 */ {(14<<2)|2,{74,120,0}}, +/* 52197 */ {(14<<2)|2,{74,120,0}}, +/* 52198 */ {(14<<2)|2,{74,120,0}}, +/* 52199 */ {(14<<2)|2,{74,120,0}}, +/* 52200 */ {(14<<2)|2,{74,121,0}}, +/* 52201 */ {(14<<2)|2,{74,121,0}}, +/* 52202 */ {(14<<2)|2,{74,121,0}}, +/* 52203 */ {(14<<2)|2,{74,121,0}}, +/* 52204 */ {(14<<2)|2,{74,122,0}}, +/* 52205 */ {(14<<2)|2,{74,122,0}}, +/* 52206 */ {(14<<2)|2,{74,122,0}}, +/* 52207 */ {(14<<2)|2,{74,122,0}}, +/* 52208 */ {(15<<2)|2,{74,38,0}}, +/* 52209 */ {(15<<2)|2,{74,38,0}}, +/* 52210 */ {(15<<2)|2,{74,42,0}}, +/* 52211 */ {(15<<2)|2,{74,42,0}}, +/* 52212 */ {(15<<2)|2,{74,44,0}}, +/* 52213 */ {(15<<2)|2,{74,44,0}}, +/* 52214 */ {(15<<2)|2,{74,59,0}}, +/* 52215 */ {(15<<2)|2,{74,59,0}}, +/* 52216 */ {(15<<2)|2,{74,88,0}}, +/* 52217 */ {(15<<2)|2,{74,88,0}}, +/* 52218 */ {(15<<2)|2,{74,90,0}}, +/* 52219 */ {(15<<2)|2,{74,90,0}}, +/* 52220 */ {(7<<2)|1,{74,0,0}}, +/* 52221 */ {(7<<2)|1,{74,0,0}}, +/* 52222 */ {(7<<2)|1,{74,0,0}}, +/* 52223 */ {(7<<2)|1,{74,0,0}}, +/* 52224 */ {(12<<2)|2,{75,48,0}}, +/* 52225 */ {(12<<2)|2,{75,48,0}}, +/* 52226 */ {(12<<2)|2,{75,48,0}}, +/* 52227 */ {(12<<2)|2,{75,48,0}}, +/* 52228 */ {(12<<2)|2,{75,48,0}}, +/* 52229 */ {(12<<2)|2,{75,48,0}}, +/* 52230 */ {(12<<2)|2,{75,48,0}}, +/* 52231 */ {(12<<2)|2,{75,48,0}}, +/* 52232 */ {(12<<2)|2,{75,48,0}}, +/* 52233 */ {(12<<2)|2,{75,48,0}}, +/* 52234 */ {(12<<2)|2,{75,48,0}}, +/* 52235 */ {(12<<2)|2,{75,48,0}}, +/* 52236 */ {(12<<2)|2,{75,48,0}}, +/* 52237 */ {(12<<2)|2,{75,48,0}}, +/* 52238 */ {(12<<2)|2,{75,48,0}}, +/* 52239 */ {(12<<2)|2,{75,48,0}}, +/* 52240 */ {(12<<2)|2,{75,49,0}}, +/* 52241 */ {(12<<2)|2,{75,49,0}}, +/* 52242 */ {(12<<2)|2,{75,49,0}}, +/* 52243 */ {(12<<2)|2,{75,49,0}}, +/* 52244 */ {(12<<2)|2,{75,49,0}}, +/* 52245 */ {(12<<2)|2,{75,49,0}}, +/* 52246 */ {(12<<2)|2,{75,49,0}}, +/* 52247 */ {(12<<2)|2,{75,49,0}}, +/* 52248 */ {(12<<2)|2,{75,49,0}}, +/* 52249 */ {(12<<2)|2,{75,49,0}}, +/* 52250 */ {(12<<2)|2,{75,49,0}}, +/* 52251 */ {(12<<2)|2,{75,49,0}}, +/* 52252 */ {(12<<2)|2,{75,49,0}}, +/* 52253 */ {(12<<2)|2,{75,49,0}}, +/* 52254 */ {(12<<2)|2,{75,49,0}}, +/* 52255 */ {(12<<2)|2,{75,49,0}}, +/* 52256 */ {(12<<2)|2,{75,50,0}}, +/* 52257 */ {(12<<2)|2,{75,50,0}}, +/* 52258 */ {(12<<2)|2,{75,50,0}}, +/* 52259 */ {(12<<2)|2,{75,50,0}}, +/* 52260 */ {(12<<2)|2,{75,50,0}}, +/* 52261 */ {(12<<2)|2,{75,50,0}}, +/* 52262 */ {(12<<2)|2,{75,50,0}}, +/* 52263 */ {(12<<2)|2,{75,50,0}}, +/* 52264 */ {(12<<2)|2,{75,50,0}}, +/* 52265 */ {(12<<2)|2,{75,50,0}}, +/* 52266 */ {(12<<2)|2,{75,50,0}}, +/* 52267 */ {(12<<2)|2,{75,50,0}}, +/* 52268 */ {(12<<2)|2,{75,50,0}}, +/* 52269 */ {(12<<2)|2,{75,50,0}}, +/* 52270 */ {(12<<2)|2,{75,50,0}}, +/* 52271 */ {(12<<2)|2,{75,50,0}}, +/* 52272 */ {(12<<2)|2,{75,97,0}}, +/* 52273 */ {(12<<2)|2,{75,97,0}}, +/* 52274 */ {(12<<2)|2,{75,97,0}}, +/* 52275 */ {(12<<2)|2,{75,97,0}}, +/* 52276 */ {(12<<2)|2,{75,97,0}}, +/* 52277 */ {(12<<2)|2,{75,97,0}}, +/* 52278 */ {(12<<2)|2,{75,97,0}}, +/* 52279 */ {(12<<2)|2,{75,97,0}}, +/* 52280 */ {(12<<2)|2,{75,97,0}}, +/* 52281 */ {(12<<2)|2,{75,97,0}}, +/* 52282 */ {(12<<2)|2,{75,97,0}}, +/* 52283 */ {(12<<2)|2,{75,97,0}}, +/* 52284 */ {(12<<2)|2,{75,97,0}}, +/* 52285 */ {(12<<2)|2,{75,97,0}}, +/* 52286 */ {(12<<2)|2,{75,97,0}}, +/* 52287 */ {(12<<2)|2,{75,97,0}}, +/* 52288 */ {(12<<2)|2,{75,99,0}}, +/* 52289 */ {(12<<2)|2,{75,99,0}}, +/* 52290 */ {(12<<2)|2,{75,99,0}}, +/* 52291 */ {(12<<2)|2,{75,99,0}}, +/* 52292 */ {(12<<2)|2,{75,99,0}}, +/* 52293 */ {(12<<2)|2,{75,99,0}}, +/* 52294 */ {(12<<2)|2,{75,99,0}}, +/* 52295 */ {(12<<2)|2,{75,99,0}}, +/* 52296 */ {(12<<2)|2,{75,99,0}}, +/* 52297 */ {(12<<2)|2,{75,99,0}}, +/* 52298 */ {(12<<2)|2,{75,99,0}}, +/* 52299 */ {(12<<2)|2,{75,99,0}}, +/* 52300 */ {(12<<2)|2,{75,99,0}}, +/* 52301 */ {(12<<2)|2,{75,99,0}}, +/* 52302 */ {(12<<2)|2,{75,99,0}}, +/* 52303 */ {(12<<2)|2,{75,99,0}}, +/* 52304 */ {(12<<2)|2,{75,101,0}}, +/* 52305 */ {(12<<2)|2,{75,101,0}}, +/* 52306 */ {(12<<2)|2,{75,101,0}}, +/* 52307 */ {(12<<2)|2,{75,101,0}}, +/* 52308 */ {(12<<2)|2,{75,101,0}}, +/* 52309 */ {(12<<2)|2,{75,101,0}}, +/* 52310 */ {(12<<2)|2,{75,101,0}}, +/* 52311 */ {(12<<2)|2,{75,101,0}}, +/* 52312 */ {(12<<2)|2,{75,101,0}}, +/* 52313 */ {(12<<2)|2,{75,101,0}}, +/* 52314 */ {(12<<2)|2,{75,101,0}}, +/* 52315 */ {(12<<2)|2,{75,101,0}}, +/* 52316 */ {(12<<2)|2,{75,101,0}}, +/* 52317 */ {(12<<2)|2,{75,101,0}}, +/* 52318 */ {(12<<2)|2,{75,101,0}}, +/* 52319 */ {(12<<2)|2,{75,101,0}}, +/* 52320 */ {(12<<2)|2,{75,105,0}}, +/* 52321 */ {(12<<2)|2,{75,105,0}}, +/* 52322 */ {(12<<2)|2,{75,105,0}}, +/* 52323 */ {(12<<2)|2,{75,105,0}}, +/* 52324 */ {(12<<2)|2,{75,105,0}}, +/* 52325 */ {(12<<2)|2,{75,105,0}}, +/* 52326 */ {(12<<2)|2,{75,105,0}}, +/* 52327 */ {(12<<2)|2,{75,105,0}}, +/* 52328 */ {(12<<2)|2,{75,105,0}}, +/* 52329 */ {(12<<2)|2,{75,105,0}}, +/* 52330 */ {(12<<2)|2,{75,105,0}}, +/* 52331 */ {(12<<2)|2,{75,105,0}}, +/* 52332 */ {(12<<2)|2,{75,105,0}}, +/* 52333 */ {(12<<2)|2,{75,105,0}}, +/* 52334 */ {(12<<2)|2,{75,105,0}}, +/* 52335 */ {(12<<2)|2,{75,105,0}}, +/* 52336 */ {(12<<2)|2,{75,111,0}}, +/* 52337 */ {(12<<2)|2,{75,111,0}}, +/* 52338 */ {(12<<2)|2,{75,111,0}}, +/* 52339 */ {(12<<2)|2,{75,111,0}}, +/* 52340 */ {(12<<2)|2,{75,111,0}}, +/* 52341 */ {(12<<2)|2,{75,111,0}}, +/* 52342 */ {(12<<2)|2,{75,111,0}}, +/* 52343 */ {(12<<2)|2,{75,111,0}}, +/* 52344 */ {(12<<2)|2,{75,111,0}}, +/* 52345 */ {(12<<2)|2,{75,111,0}}, +/* 52346 */ {(12<<2)|2,{75,111,0}}, +/* 52347 */ {(12<<2)|2,{75,111,0}}, +/* 52348 */ {(12<<2)|2,{75,111,0}}, +/* 52349 */ {(12<<2)|2,{75,111,0}}, +/* 52350 */ {(12<<2)|2,{75,111,0}}, +/* 52351 */ {(12<<2)|2,{75,111,0}}, +/* 52352 */ {(12<<2)|2,{75,115,0}}, +/* 52353 */ {(12<<2)|2,{75,115,0}}, +/* 52354 */ {(12<<2)|2,{75,115,0}}, +/* 52355 */ {(12<<2)|2,{75,115,0}}, +/* 52356 */ {(12<<2)|2,{75,115,0}}, +/* 52357 */ {(12<<2)|2,{75,115,0}}, +/* 52358 */ {(12<<2)|2,{75,115,0}}, +/* 52359 */ {(12<<2)|2,{75,115,0}}, +/* 52360 */ {(12<<2)|2,{75,115,0}}, +/* 52361 */ {(12<<2)|2,{75,115,0}}, +/* 52362 */ {(12<<2)|2,{75,115,0}}, +/* 52363 */ {(12<<2)|2,{75,115,0}}, +/* 52364 */ {(12<<2)|2,{75,115,0}}, +/* 52365 */ {(12<<2)|2,{75,115,0}}, +/* 52366 */ {(12<<2)|2,{75,115,0}}, +/* 52367 */ {(12<<2)|2,{75,115,0}}, +/* 52368 */ {(12<<2)|2,{75,116,0}}, +/* 52369 */ {(12<<2)|2,{75,116,0}}, +/* 52370 */ {(12<<2)|2,{75,116,0}}, +/* 52371 */ {(12<<2)|2,{75,116,0}}, +/* 52372 */ {(12<<2)|2,{75,116,0}}, +/* 52373 */ {(12<<2)|2,{75,116,0}}, +/* 52374 */ {(12<<2)|2,{75,116,0}}, +/* 52375 */ {(12<<2)|2,{75,116,0}}, +/* 52376 */ {(12<<2)|2,{75,116,0}}, +/* 52377 */ {(12<<2)|2,{75,116,0}}, +/* 52378 */ {(12<<2)|2,{75,116,0}}, +/* 52379 */ {(12<<2)|2,{75,116,0}}, +/* 52380 */ {(12<<2)|2,{75,116,0}}, +/* 52381 */ {(12<<2)|2,{75,116,0}}, +/* 52382 */ {(12<<2)|2,{75,116,0}}, +/* 52383 */ {(12<<2)|2,{75,116,0}}, +/* 52384 */ {(13<<2)|2,{75,32,0}}, +/* 52385 */ {(13<<2)|2,{75,32,0}}, +/* 52386 */ {(13<<2)|2,{75,32,0}}, +/* 52387 */ {(13<<2)|2,{75,32,0}}, +/* 52388 */ {(13<<2)|2,{75,32,0}}, +/* 52389 */ {(13<<2)|2,{75,32,0}}, +/* 52390 */ {(13<<2)|2,{75,32,0}}, +/* 52391 */ {(13<<2)|2,{75,32,0}}, +/* 52392 */ {(13<<2)|2,{75,37,0}}, +/* 52393 */ {(13<<2)|2,{75,37,0}}, +/* 52394 */ {(13<<2)|2,{75,37,0}}, +/* 52395 */ {(13<<2)|2,{75,37,0}}, +/* 52396 */ {(13<<2)|2,{75,37,0}}, +/* 52397 */ {(13<<2)|2,{75,37,0}}, +/* 52398 */ {(13<<2)|2,{75,37,0}}, +/* 52399 */ {(13<<2)|2,{75,37,0}}, +/* 52400 */ {(13<<2)|2,{75,45,0}}, +/* 52401 */ {(13<<2)|2,{75,45,0}}, +/* 52402 */ {(13<<2)|2,{75,45,0}}, +/* 52403 */ {(13<<2)|2,{75,45,0}}, +/* 52404 */ {(13<<2)|2,{75,45,0}}, +/* 52405 */ {(13<<2)|2,{75,45,0}}, +/* 52406 */ {(13<<2)|2,{75,45,0}}, +/* 52407 */ {(13<<2)|2,{75,45,0}}, +/* 52408 */ {(13<<2)|2,{75,46,0}}, +/* 52409 */ {(13<<2)|2,{75,46,0}}, +/* 52410 */ {(13<<2)|2,{75,46,0}}, +/* 52411 */ {(13<<2)|2,{75,46,0}}, +/* 52412 */ {(13<<2)|2,{75,46,0}}, +/* 52413 */ {(13<<2)|2,{75,46,0}}, +/* 52414 */ {(13<<2)|2,{75,46,0}}, +/* 52415 */ {(13<<2)|2,{75,46,0}}, +/* 52416 */ {(13<<2)|2,{75,47,0}}, +/* 52417 */ {(13<<2)|2,{75,47,0}}, +/* 52418 */ {(13<<2)|2,{75,47,0}}, +/* 52419 */ {(13<<2)|2,{75,47,0}}, +/* 52420 */ {(13<<2)|2,{75,47,0}}, +/* 52421 */ {(13<<2)|2,{75,47,0}}, +/* 52422 */ {(13<<2)|2,{75,47,0}}, +/* 52423 */ {(13<<2)|2,{75,47,0}}, +/* 52424 */ {(13<<2)|2,{75,51,0}}, +/* 52425 */ {(13<<2)|2,{75,51,0}}, +/* 52426 */ {(13<<2)|2,{75,51,0}}, +/* 52427 */ {(13<<2)|2,{75,51,0}}, +/* 52428 */ {(13<<2)|2,{75,51,0}}, +/* 52429 */ {(13<<2)|2,{75,51,0}}, +/* 52430 */ {(13<<2)|2,{75,51,0}}, +/* 52431 */ {(13<<2)|2,{75,51,0}}, +/* 52432 */ {(13<<2)|2,{75,52,0}}, +/* 52433 */ {(13<<2)|2,{75,52,0}}, +/* 52434 */ {(13<<2)|2,{75,52,0}}, +/* 52435 */ {(13<<2)|2,{75,52,0}}, +/* 52436 */ {(13<<2)|2,{75,52,0}}, +/* 52437 */ {(13<<2)|2,{75,52,0}}, +/* 52438 */ {(13<<2)|2,{75,52,0}}, +/* 52439 */ {(13<<2)|2,{75,52,0}}, +/* 52440 */ {(13<<2)|2,{75,53,0}}, +/* 52441 */ {(13<<2)|2,{75,53,0}}, +/* 52442 */ {(13<<2)|2,{75,53,0}}, +/* 52443 */ {(13<<2)|2,{75,53,0}}, +/* 52444 */ {(13<<2)|2,{75,53,0}}, +/* 52445 */ {(13<<2)|2,{75,53,0}}, +/* 52446 */ {(13<<2)|2,{75,53,0}}, +/* 52447 */ {(13<<2)|2,{75,53,0}}, +/* 52448 */ {(13<<2)|2,{75,54,0}}, +/* 52449 */ {(13<<2)|2,{75,54,0}}, +/* 52450 */ {(13<<2)|2,{75,54,0}}, +/* 52451 */ {(13<<2)|2,{75,54,0}}, +/* 52452 */ {(13<<2)|2,{75,54,0}}, +/* 52453 */ {(13<<2)|2,{75,54,0}}, +/* 52454 */ {(13<<2)|2,{75,54,0}}, +/* 52455 */ {(13<<2)|2,{75,54,0}}, +/* 52456 */ {(13<<2)|2,{75,55,0}}, +/* 52457 */ {(13<<2)|2,{75,55,0}}, +/* 52458 */ {(13<<2)|2,{75,55,0}}, +/* 52459 */ {(13<<2)|2,{75,55,0}}, +/* 52460 */ {(13<<2)|2,{75,55,0}}, +/* 52461 */ {(13<<2)|2,{75,55,0}}, +/* 52462 */ {(13<<2)|2,{75,55,0}}, +/* 52463 */ {(13<<2)|2,{75,55,0}}, +/* 52464 */ {(13<<2)|2,{75,56,0}}, +/* 52465 */ {(13<<2)|2,{75,56,0}}, +/* 52466 */ {(13<<2)|2,{75,56,0}}, +/* 52467 */ {(13<<2)|2,{75,56,0}}, +/* 52468 */ {(13<<2)|2,{75,56,0}}, +/* 52469 */ {(13<<2)|2,{75,56,0}}, +/* 52470 */ {(13<<2)|2,{75,56,0}}, +/* 52471 */ {(13<<2)|2,{75,56,0}}, +/* 52472 */ {(13<<2)|2,{75,57,0}}, +/* 52473 */ {(13<<2)|2,{75,57,0}}, +/* 52474 */ {(13<<2)|2,{75,57,0}}, +/* 52475 */ {(13<<2)|2,{75,57,0}}, +/* 52476 */ {(13<<2)|2,{75,57,0}}, +/* 52477 */ {(13<<2)|2,{75,57,0}}, +/* 52478 */ {(13<<2)|2,{75,57,0}}, +/* 52479 */ {(13<<2)|2,{75,57,0}}, +/* 52480 */ {(13<<2)|2,{75,61,0}}, +/* 52481 */ {(13<<2)|2,{75,61,0}}, +/* 52482 */ {(13<<2)|2,{75,61,0}}, +/* 52483 */ {(13<<2)|2,{75,61,0}}, +/* 52484 */ {(13<<2)|2,{75,61,0}}, +/* 52485 */ {(13<<2)|2,{75,61,0}}, +/* 52486 */ {(13<<2)|2,{75,61,0}}, +/* 52487 */ {(13<<2)|2,{75,61,0}}, +/* 52488 */ {(13<<2)|2,{75,65,0}}, +/* 52489 */ {(13<<2)|2,{75,65,0}}, +/* 52490 */ {(13<<2)|2,{75,65,0}}, +/* 52491 */ {(13<<2)|2,{75,65,0}}, +/* 52492 */ {(13<<2)|2,{75,65,0}}, +/* 52493 */ {(13<<2)|2,{75,65,0}}, +/* 52494 */ {(13<<2)|2,{75,65,0}}, +/* 52495 */ {(13<<2)|2,{75,65,0}}, +/* 52496 */ {(13<<2)|2,{75,95,0}}, +/* 52497 */ {(13<<2)|2,{75,95,0}}, +/* 52498 */ {(13<<2)|2,{75,95,0}}, +/* 52499 */ {(13<<2)|2,{75,95,0}}, +/* 52500 */ {(13<<2)|2,{75,95,0}}, +/* 52501 */ {(13<<2)|2,{75,95,0}}, +/* 52502 */ {(13<<2)|2,{75,95,0}}, +/* 52503 */ {(13<<2)|2,{75,95,0}}, +/* 52504 */ {(13<<2)|2,{75,98,0}}, +/* 52505 */ {(13<<2)|2,{75,98,0}}, +/* 52506 */ {(13<<2)|2,{75,98,0}}, +/* 52507 */ {(13<<2)|2,{75,98,0}}, +/* 52508 */ {(13<<2)|2,{75,98,0}}, +/* 52509 */ {(13<<2)|2,{75,98,0}}, +/* 52510 */ {(13<<2)|2,{75,98,0}}, +/* 52511 */ {(13<<2)|2,{75,98,0}}, +/* 52512 */ {(13<<2)|2,{75,100,0}}, +/* 52513 */ {(13<<2)|2,{75,100,0}}, +/* 52514 */ {(13<<2)|2,{75,100,0}}, +/* 52515 */ {(13<<2)|2,{75,100,0}}, +/* 52516 */ {(13<<2)|2,{75,100,0}}, +/* 52517 */ {(13<<2)|2,{75,100,0}}, +/* 52518 */ {(13<<2)|2,{75,100,0}}, +/* 52519 */ {(13<<2)|2,{75,100,0}}, +/* 52520 */ {(13<<2)|2,{75,102,0}}, +/* 52521 */ {(13<<2)|2,{75,102,0}}, +/* 52522 */ {(13<<2)|2,{75,102,0}}, +/* 52523 */ {(13<<2)|2,{75,102,0}}, +/* 52524 */ {(13<<2)|2,{75,102,0}}, +/* 52525 */ {(13<<2)|2,{75,102,0}}, +/* 52526 */ {(13<<2)|2,{75,102,0}}, +/* 52527 */ {(13<<2)|2,{75,102,0}}, +/* 52528 */ {(13<<2)|2,{75,103,0}}, +/* 52529 */ {(13<<2)|2,{75,103,0}}, +/* 52530 */ {(13<<2)|2,{75,103,0}}, +/* 52531 */ {(13<<2)|2,{75,103,0}}, +/* 52532 */ {(13<<2)|2,{75,103,0}}, +/* 52533 */ {(13<<2)|2,{75,103,0}}, +/* 52534 */ {(13<<2)|2,{75,103,0}}, +/* 52535 */ {(13<<2)|2,{75,103,0}}, +/* 52536 */ {(13<<2)|2,{75,104,0}}, +/* 52537 */ {(13<<2)|2,{75,104,0}}, +/* 52538 */ {(13<<2)|2,{75,104,0}}, +/* 52539 */ {(13<<2)|2,{75,104,0}}, +/* 52540 */ {(13<<2)|2,{75,104,0}}, +/* 52541 */ {(13<<2)|2,{75,104,0}}, +/* 52542 */ {(13<<2)|2,{75,104,0}}, +/* 52543 */ {(13<<2)|2,{75,104,0}}, +/* 52544 */ {(13<<2)|2,{75,108,0}}, +/* 52545 */ {(13<<2)|2,{75,108,0}}, +/* 52546 */ {(13<<2)|2,{75,108,0}}, +/* 52547 */ {(13<<2)|2,{75,108,0}}, +/* 52548 */ {(13<<2)|2,{75,108,0}}, +/* 52549 */ {(13<<2)|2,{75,108,0}}, +/* 52550 */ {(13<<2)|2,{75,108,0}}, +/* 52551 */ {(13<<2)|2,{75,108,0}}, +/* 52552 */ {(13<<2)|2,{75,109,0}}, +/* 52553 */ {(13<<2)|2,{75,109,0}}, +/* 52554 */ {(13<<2)|2,{75,109,0}}, +/* 52555 */ {(13<<2)|2,{75,109,0}}, +/* 52556 */ {(13<<2)|2,{75,109,0}}, +/* 52557 */ {(13<<2)|2,{75,109,0}}, +/* 52558 */ {(13<<2)|2,{75,109,0}}, +/* 52559 */ {(13<<2)|2,{75,109,0}}, +/* 52560 */ {(13<<2)|2,{75,110,0}}, +/* 52561 */ {(13<<2)|2,{75,110,0}}, +/* 52562 */ {(13<<2)|2,{75,110,0}}, +/* 52563 */ {(13<<2)|2,{75,110,0}}, +/* 52564 */ {(13<<2)|2,{75,110,0}}, +/* 52565 */ {(13<<2)|2,{75,110,0}}, +/* 52566 */ {(13<<2)|2,{75,110,0}}, +/* 52567 */ {(13<<2)|2,{75,110,0}}, +/* 52568 */ {(13<<2)|2,{75,112,0}}, +/* 52569 */ {(13<<2)|2,{75,112,0}}, +/* 52570 */ {(13<<2)|2,{75,112,0}}, +/* 52571 */ {(13<<2)|2,{75,112,0}}, +/* 52572 */ {(13<<2)|2,{75,112,0}}, +/* 52573 */ {(13<<2)|2,{75,112,0}}, +/* 52574 */ {(13<<2)|2,{75,112,0}}, +/* 52575 */ {(13<<2)|2,{75,112,0}}, +/* 52576 */ {(13<<2)|2,{75,114,0}}, +/* 52577 */ {(13<<2)|2,{75,114,0}}, +/* 52578 */ {(13<<2)|2,{75,114,0}}, +/* 52579 */ {(13<<2)|2,{75,114,0}}, +/* 52580 */ {(13<<2)|2,{75,114,0}}, +/* 52581 */ {(13<<2)|2,{75,114,0}}, +/* 52582 */ {(13<<2)|2,{75,114,0}}, +/* 52583 */ {(13<<2)|2,{75,114,0}}, +/* 52584 */ {(13<<2)|2,{75,117,0}}, +/* 52585 */ {(13<<2)|2,{75,117,0}}, +/* 52586 */ {(13<<2)|2,{75,117,0}}, +/* 52587 */ {(13<<2)|2,{75,117,0}}, +/* 52588 */ {(13<<2)|2,{75,117,0}}, +/* 52589 */ {(13<<2)|2,{75,117,0}}, +/* 52590 */ {(13<<2)|2,{75,117,0}}, +/* 52591 */ {(13<<2)|2,{75,117,0}}, +/* 52592 */ {(14<<2)|2,{75,58,0}}, +/* 52593 */ {(14<<2)|2,{75,58,0}}, +/* 52594 */ {(14<<2)|2,{75,58,0}}, +/* 52595 */ {(14<<2)|2,{75,58,0}}, +/* 52596 */ {(14<<2)|2,{75,66,0}}, +/* 52597 */ {(14<<2)|2,{75,66,0}}, +/* 52598 */ {(14<<2)|2,{75,66,0}}, +/* 52599 */ {(14<<2)|2,{75,66,0}}, +/* 52600 */ {(14<<2)|2,{75,67,0}}, +/* 52601 */ {(14<<2)|2,{75,67,0}}, +/* 52602 */ {(14<<2)|2,{75,67,0}}, +/* 52603 */ {(14<<2)|2,{75,67,0}}, +/* 52604 */ {(14<<2)|2,{75,68,0}}, +/* 52605 */ {(14<<2)|2,{75,68,0}}, +/* 52606 */ {(14<<2)|2,{75,68,0}}, +/* 52607 */ {(14<<2)|2,{75,68,0}}, +/* 52608 */ {(14<<2)|2,{75,69,0}}, +/* 52609 */ {(14<<2)|2,{75,69,0}}, +/* 52610 */ {(14<<2)|2,{75,69,0}}, +/* 52611 */ {(14<<2)|2,{75,69,0}}, +/* 52612 */ {(14<<2)|2,{75,70,0}}, +/* 52613 */ {(14<<2)|2,{75,70,0}}, +/* 52614 */ {(14<<2)|2,{75,70,0}}, +/* 52615 */ {(14<<2)|2,{75,70,0}}, +/* 52616 */ {(14<<2)|2,{75,71,0}}, +/* 52617 */ {(14<<2)|2,{75,71,0}}, +/* 52618 */ {(14<<2)|2,{75,71,0}}, +/* 52619 */ {(14<<2)|2,{75,71,0}}, +/* 52620 */ {(14<<2)|2,{75,72,0}}, +/* 52621 */ {(14<<2)|2,{75,72,0}}, +/* 52622 */ {(14<<2)|2,{75,72,0}}, +/* 52623 */ {(14<<2)|2,{75,72,0}}, +/* 52624 */ {(14<<2)|2,{75,73,0}}, +/* 52625 */ {(14<<2)|2,{75,73,0}}, +/* 52626 */ {(14<<2)|2,{75,73,0}}, +/* 52627 */ {(14<<2)|2,{75,73,0}}, +/* 52628 */ {(14<<2)|2,{75,74,0}}, +/* 52629 */ {(14<<2)|2,{75,74,0}}, +/* 52630 */ {(14<<2)|2,{75,74,0}}, +/* 52631 */ {(14<<2)|2,{75,74,0}}, +/* 52632 */ {(14<<2)|2,{75,75,0}}, +/* 52633 */ {(14<<2)|2,{75,75,0}}, +/* 52634 */ {(14<<2)|2,{75,75,0}}, +/* 52635 */ {(14<<2)|2,{75,75,0}}, +/* 52636 */ {(14<<2)|2,{75,76,0}}, +/* 52637 */ {(14<<2)|2,{75,76,0}}, +/* 52638 */ {(14<<2)|2,{75,76,0}}, +/* 52639 */ {(14<<2)|2,{75,76,0}}, +/* 52640 */ {(14<<2)|2,{75,77,0}}, +/* 52641 */ {(14<<2)|2,{75,77,0}}, +/* 52642 */ {(14<<2)|2,{75,77,0}}, +/* 52643 */ {(14<<2)|2,{75,77,0}}, +/* 52644 */ {(14<<2)|2,{75,78,0}}, +/* 52645 */ {(14<<2)|2,{75,78,0}}, +/* 52646 */ {(14<<2)|2,{75,78,0}}, +/* 52647 */ {(14<<2)|2,{75,78,0}}, +/* 52648 */ {(14<<2)|2,{75,79,0}}, +/* 52649 */ {(14<<2)|2,{75,79,0}}, +/* 52650 */ {(14<<2)|2,{75,79,0}}, +/* 52651 */ {(14<<2)|2,{75,79,0}}, +/* 52652 */ {(14<<2)|2,{75,80,0}}, +/* 52653 */ {(14<<2)|2,{75,80,0}}, +/* 52654 */ {(14<<2)|2,{75,80,0}}, +/* 52655 */ {(14<<2)|2,{75,80,0}}, +/* 52656 */ {(14<<2)|2,{75,81,0}}, +/* 52657 */ {(14<<2)|2,{75,81,0}}, +/* 52658 */ {(14<<2)|2,{75,81,0}}, +/* 52659 */ {(14<<2)|2,{75,81,0}}, +/* 52660 */ {(14<<2)|2,{75,82,0}}, +/* 52661 */ {(14<<2)|2,{75,82,0}}, +/* 52662 */ {(14<<2)|2,{75,82,0}}, +/* 52663 */ {(14<<2)|2,{75,82,0}}, +/* 52664 */ {(14<<2)|2,{75,83,0}}, +/* 52665 */ {(14<<2)|2,{75,83,0}}, +/* 52666 */ {(14<<2)|2,{75,83,0}}, +/* 52667 */ {(14<<2)|2,{75,83,0}}, +/* 52668 */ {(14<<2)|2,{75,84,0}}, +/* 52669 */ {(14<<2)|2,{75,84,0}}, +/* 52670 */ {(14<<2)|2,{75,84,0}}, +/* 52671 */ {(14<<2)|2,{75,84,0}}, +/* 52672 */ {(14<<2)|2,{75,85,0}}, +/* 52673 */ {(14<<2)|2,{75,85,0}}, +/* 52674 */ {(14<<2)|2,{75,85,0}}, +/* 52675 */ {(14<<2)|2,{75,85,0}}, +/* 52676 */ {(14<<2)|2,{75,86,0}}, +/* 52677 */ {(14<<2)|2,{75,86,0}}, +/* 52678 */ {(14<<2)|2,{75,86,0}}, +/* 52679 */ {(14<<2)|2,{75,86,0}}, +/* 52680 */ {(14<<2)|2,{75,87,0}}, +/* 52681 */ {(14<<2)|2,{75,87,0}}, +/* 52682 */ {(14<<2)|2,{75,87,0}}, +/* 52683 */ {(14<<2)|2,{75,87,0}}, +/* 52684 */ {(14<<2)|2,{75,89,0}}, +/* 52685 */ {(14<<2)|2,{75,89,0}}, +/* 52686 */ {(14<<2)|2,{75,89,0}}, +/* 52687 */ {(14<<2)|2,{75,89,0}}, +/* 52688 */ {(14<<2)|2,{75,106,0}}, +/* 52689 */ {(14<<2)|2,{75,106,0}}, +/* 52690 */ {(14<<2)|2,{75,106,0}}, +/* 52691 */ {(14<<2)|2,{75,106,0}}, +/* 52692 */ {(14<<2)|2,{75,107,0}}, +/* 52693 */ {(14<<2)|2,{75,107,0}}, +/* 52694 */ {(14<<2)|2,{75,107,0}}, +/* 52695 */ {(14<<2)|2,{75,107,0}}, +/* 52696 */ {(14<<2)|2,{75,113,0}}, +/* 52697 */ {(14<<2)|2,{75,113,0}}, +/* 52698 */ {(14<<2)|2,{75,113,0}}, +/* 52699 */ {(14<<2)|2,{75,113,0}}, +/* 52700 */ {(14<<2)|2,{75,118,0}}, +/* 52701 */ {(14<<2)|2,{75,118,0}}, +/* 52702 */ {(14<<2)|2,{75,118,0}}, +/* 52703 */ {(14<<2)|2,{75,118,0}}, +/* 52704 */ {(14<<2)|2,{75,119,0}}, +/* 52705 */ {(14<<2)|2,{75,119,0}}, +/* 52706 */ {(14<<2)|2,{75,119,0}}, +/* 52707 */ {(14<<2)|2,{75,119,0}}, +/* 52708 */ {(14<<2)|2,{75,120,0}}, +/* 52709 */ {(14<<2)|2,{75,120,0}}, +/* 52710 */ {(14<<2)|2,{75,120,0}}, +/* 52711 */ {(14<<2)|2,{75,120,0}}, +/* 52712 */ {(14<<2)|2,{75,121,0}}, +/* 52713 */ {(14<<2)|2,{75,121,0}}, +/* 52714 */ {(14<<2)|2,{75,121,0}}, +/* 52715 */ {(14<<2)|2,{75,121,0}}, +/* 52716 */ {(14<<2)|2,{75,122,0}}, +/* 52717 */ {(14<<2)|2,{75,122,0}}, +/* 52718 */ {(14<<2)|2,{75,122,0}}, +/* 52719 */ {(14<<2)|2,{75,122,0}}, +/* 52720 */ {(15<<2)|2,{75,38,0}}, +/* 52721 */ {(15<<2)|2,{75,38,0}}, +/* 52722 */ {(15<<2)|2,{75,42,0}}, +/* 52723 */ {(15<<2)|2,{75,42,0}}, +/* 52724 */ {(15<<2)|2,{75,44,0}}, +/* 52725 */ {(15<<2)|2,{75,44,0}}, +/* 52726 */ {(15<<2)|2,{75,59,0}}, +/* 52727 */ {(15<<2)|2,{75,59,0}}, +/* 52728 */ {(15<<2)|2,{75,88,0}}, +/* 52729 */ {(15<<2)|2,{75,88,0}}, +/* 52730 */ {(15<<2)|2,{75,90,0}}, +/* 52731 */ {(15<<2)|2,{75,90,0}}, +/* 52732 */ {(7<<2)|1,{75,0,0}}, +/* 52733 */ {(7<<2)|1,{75,0,0}}, +/* 52734 */ {(7<<2)|1,{75,0,0}}, +/* 52735 */ {(7<<2)|1,{75,0,0}}, +/* 52736 */ {(12<<2)|2,{76,48,0}}, +/* 52737 */ {(12<<2)|2,{76,48,0}}, +/* 52738 */ {(12<<2)|2,{76,48,0}}, +/* 52739 */ {(12<<2)|2,{76,48,0}}, +/* 52740 */ {(12<<2)|2,{76,48,0}}, +/* 52741 */ {(12<<2)|2,{76,48,0}}, +/* 52742 */ {(12<<2)|2,{76,48,0}}, +/* 52743 */ {(12<<2)|2,{76,48,0}}, +/* 52744 */ {(12<<2)|2,{76,48,0}}, +/* 52745 */ {(12<<2)|2,{76,48,0}}, +/* 52746 */ {(12<<2)|2,{76,48,0}}, +/* 52747 */ {(12<<2)|2,{76,48,0}}, +/* 52748 */ {(12<<2)|2,{76,48,0}}, +/* 52749 */ {(12<<2)|2,{76,48,0}}, +/* 52750 */ {(12<<2)|2,{76,48,0}}, +/* 52751 */ {(12<<2)|2,{76,48,0}}, +/* 52752 */ {(12<<2)|2,{76,49,0}}, +/* 52753 */ {(12<<2)|2,{76,49,0}}, +/* 52754 */ {(12<<2)|2,{76,49,0}}, +/* 52755 */ {(12<<2)|2,{76,49,0}}, +/* 52756 */ {(12<<2)|2,{76,49,0}}, +/* 52757 */ {(12<<2)|2,{76,49,0}}, +/* 52758 */ {(12<<2)|2,{76,49,0}}, +/* 52759 */ {(12<<2)|2,{76,49,0}}, +/* 52760 */ {(12<<2)|2,{76,49,0}}, +/* 52761 */ {(12<<2)|2,{76,49,0}}, +/* 52762 */ {(12<<2)|2,{76,49,0}}, +/* 52763 */ {(12<<2)|2,{76,49,0}}, +/* 52764 */ {(12<<2)|2,{76,49,0}}, +/* 52765 */ {(12<<2)|2,{76,49,0}}, +/* 52766 */ {(12<<2)|2,{76,49,0}}, +/* 52767 */ {(12<<2)|2,{76,49,0}}, +/* 52768 */ {(12<<2)|2,{76,50,0}}, +/* 52769 */ {(12<<2)|2,{76,50,0}}, +/* 52770 */ {(12<<2)|2,{76,50,0}}, +/* 52771 */ {(12<<2)|2,{76,50,0}}, +/* 52772 */ {(12<<2)|2,{76,50,0}}, +/* 52773 */ {(12<<2)|2,{76,50,0}}, +/* 52774 */ {(12<<2)|2,{76,50,0}}, +/* 52775 */ {(12<<2)|2,{76,50,0}}, +/* 52776 */ {(12<<2)|2,{76,50,0}}, +/* 52777 */ {(12<<2)|2,{76,50,0}}, +/* 52778 */ {(12<<2)|2,{76,50,0}}, +/* 52779 */ {(12<<2)|2,{76,50,0}}, +/* 52780 */ {(12<<2)|2,{76,50,0}}, +/* 52781 */ {(12<<2)|2,{76,50,0}}, +/* 52782 */ {(12<<2)|2,{76,50,0}}, +/* 52783 */ {(12<<2)|2,{76,50,0}}, +/* 52784 */ {(12<<2)|2,{76,97,0}}, +/* 52785 */ {(12<<2)|2,{76,97,0}}, +/* 52786 */ {(12<<2)|2,{76,97,0}}, +/* 52787 */ {(12<<2)|2,{76,97,0}}, +/* 52788 */ {(12<<2)|2,{76,97,0}}, +/* 52789 */ {(12<<2)|2,{76,97,0}}, +/* 52790 */ {(12<<2)|2,{76,97,0}}, +/* 52791 */ {(12<<2)|2,{76,97,0}}, +/* 52792 */ {(12<<2)|2,{76,97,0}}, +/* 52793 */ {(12<<2)|2,{76,97,0}}, +/* 52794 */ {(12<<2)|2,{76,97,0}}, +/* 52795 */ {(12<<2)|2,{76,97,0}}, +/* 52796 */ {(12<<2)|2,{76,97,0}}, +/* 52797 */ {(12<<2)|2,{76,97,0}}, +/* 52798 */ {(12<<2)|2,{76,97,0}}, +/* 52799 */ {(12<<2)|2,{76,97,0}}, +/* 52800 */ {(12<<2)|2,{76,99,0}}, +/* 52801 */ {(12<<2)|2,{76,99,0}}, +/* 52802 */ {(12<<2)|2,{76,99,0}}, +/* 52803 */ {(12<<2)|2,{76,99,0}}, +/* 52804 */ {(12<<2)|2,{76,99,0}}, +/* 52805 */ {(12<<2)|2,{76,99,0}}, +/* 52806 */ {(12<<2)|2,{76,99,0}}, +/* 52807 */ {(12<<2)|2,{76,99,0}}, +/* 52808 */ {(12<<2)|2,{76,99,0}}, +/* 52809 */ {(12<<2)|2,{76,99,0}}, +/* 52810 */ {(12<<2)|2,{76,99,0}}, +/* 52811 */ {(12<<2)|2,{76,99,0}}, +/* 52812 */ {(12<<2)|2,{76,99,0}}, +/* 52813 */ {(12<<2)|2,{76,99,0}}, +/* 52814 */ {(12<<2)|2,{76,99,0}}, +/* 52815 */ {(12<<2)|2,{76,99,0}}, +/* 52816 */ {(12<<2)|2,{76,101,0}}, +/* 52817 */ {(12<<2)|2,{76,101,0}}, +/* 52818 */ {(12<<2)|2,{76,101,0}}, +/* 52819 */ {(12<<2)|2,{76,101,0}}, +/* 52820 */ {(12<<2)|2,{76,101,0}}, +/* 52821 */ {(12<<2)|2,{76,101,0}}, +/* 52822 */ {(12<<2)|2,{76,101,0}}, +/* 52823 */ {(12<<2)|2,{76,101,0}}, +/* 52824 */ {(12<<2)|2,{76,101,0}}, +/* 52825 */ {(12<<2)|2,{76,101,0}}, +/* 52826 */ {(12<<2)|2,{76,101,0}}, +/* 52827 */ {(12<<2)|2,{76,101,0}}, +/* 52828 */ {(12<<2)|2,{76,101,0}}, +/* 52829 */ {(12<<2)|2,{76,101,0}}, +/* 52830 */ {(12<<2)|2,{76,101,0}}, +/* 52831 */ {(12<<2)|2,{76,101,0}}, +/* 52832 */ {(12<<2)|2,{76,105,0}}, +/* 52833 */ {(12<<2)|2,{76,105,0}}, +/* 52834 */ {(12<<2)|2,{76,105,0}}, +/* 52835 */ {(12<<2)|2,{76,105,0}}, +/* 52836 */ {(12<<2)|2,{76,105,0}}, +/* 52837 */ {(12<<2)|2,{76,105,0}}, +/* 52838 */ {(12<<2)|2,{76,105,0}}, +/* 52839 */ {(12<<2)|2,{76,105,0}}, +/* 52840 */ {(12<<2)|2,{76,105,0}}, +/* 52841 */ {(12<<2)|2,{76,105,0}}, +/* 52842 */ {(12<<2)|2,{76,105,0}}, +/* 52843 */ {(12<<2)|2,{76,105,0}}, +/* 52844 */ {(12<<2)|2,{76,105,0}}, +/* 52845 */ {(12<<2)|2,{76,105,0}}, +/* 52846 */ {(12<<2)|2,{76,105,0}}, +/* 52847 */ {(12<<2)|2,{76,105,0}}, +/* 52848 */ {(12<<2)|2,{76,111,0}}, +/* 52849 */ {(12<<2)|2,{76,111,0}}, +/* 52850 */ {(12<<2)|2,{76,111,0}}, +/* 52851 */ {(12<<2)|2,{76,111,0}}, +/* 52852 */ {(12<<2)|2,{76,111,0}}, +/* 52853 */ {(12<<2)|2,{76,111,0}}, +/* 52854 */ {(12<<2)|2,{76,111,0}}, +/* 52855 */ {(12<<2)|2,{76,111,0}}, +/* 52856 */ {(12<<2)|2,{76,111,0}}, +/* 52857 */ {(12<<2)|2,{76,111,0}}, +/* 52858 */ {(12<<2)|2,{76,111,0}}, +/* 52859 */ {(12<<2)|2,{76,111,0}}, +/* 52860 */ {(12<<2)|2,{76,111,0}}, +/* 52861 */ {(12<<2)|2,{76,111,0}}, +/* 52862 */ {(12<<2)|2,{76,111,0}}, +/* 52863 */ {(12<<2)|2,{76,111,0}}, +/* 52864 */ {(12<<2)|2,{76,115,0}}, +/* 52865 */ {(12<<2)|2,{76,115,0}}, +/* 52866 */ {(12<<2)|2,{76,115,0}}, +/* 52867 */ {(12<<2)|2,{76,115,0}}, +/* 52868 */ {(12<<2)|2,{76,115,0}}, +/* 52869 */ {(12<<2)|2,{76,115,0}}, +/* 52870 */ {(12<<2)|2,{76,115,0}}, +/* 52871 */ {(12<<2)|2,{76,115,0}}, +/* 52872 */ {(12<<2)|2,{76,115,0}}, +/* 52873 */ {(12<<2)|2,{76,115,0}}, +/* 52874 */ {(12<<2)|2,{76,115,0}}, +/* 52875 */ {(12<<2)|2,{76,115,0}}, +/* 52876 */ {(12<<2)|2,{76,115,0}}, +/* 52877 */ {(12<<2)|2,{76,115,0}}, +/* 52878 */ {(12<<2)|2,{76,115,0}}, +/* 52879 */ {(12<<2)|2,{76,115,0}}, +/* 52880 */ {(12<<2)|2,{76,116,0}}, +/* 52881 */ {(12<<2)|2,{76,116,0}}, +/* 52882 */ {(12<<2)|2,{76,116,0}}, +/* 52883 */ {(12<<2)|2,{76,116,0}}, +/* 52884 */ {(12<<2)|2,{76,116,0}}, +/* 52885 */ {(12<<2)|2,{76,116,0}}, +/* 52886 */ {(12<<2)|2,{76,116,0}}, +/* 52887 */ {(12<<2)|2,{76,116,0}}, +/* 52888 */ {(12<<2)|2,{76,116,0}}, +/* 52889 */ {(12<<2)|2,{76,116,0}}, +/* 52890 */ {(12<<2)|2,{76,116,0}}, +/* 52891 */ {(12<<2)|2,{76,116,0}}, +/* 52892 */ {(12<<2)|2,{76,116,0}}, +/* 52893 */ {(12<<2)|2,{76,116,0}}, +/* 52894 */ {(12<<2)|2,{76,116,0}}, +/* 52895 */ {(12<<2)|2,{76,116,0}}, +/* 52896 */ {(13<<2)|2,{76,32,0}}, +/* 52897 */ {(13<<2)|2,{76,32,0}}, +/* 52898 */ {(13<<2)|2,{76,32,0}}, +/* 52899 */ {(13<<2)|2,{76,32,0}}, +/* 52900 */ {(13<<2)|2,{76,32,0}}, +/* 52901 */ {(13<<2)|2,{76,32,0}}, +/* 52902 */ {(13<<2)|2,{76,32,0}}, +/* 52903 */ {(13<<2)|2,{76,32,0}}, +/* 52904 */ {(13<<2)|2,{76,37,0}}, +/* 52905 */ {(13<<2)|2,{76,37,0}}, +/* 52906 */ {(13<<2)|2,{76,37,0}}, +/* 52907 */ {(13<<2)|2,{76,37,0}}, +/* 52908 */ {(13<<2)|2,{76,37,0}}, +/* 52909 */ {(13<<2)|2,{76,37,0}}, +/* 52910 */ {(13<<2)|2,{76,37,0}}, +/* 52911 */ {(13<<2)|2,{76,37,0}}, +/* 52912 */ {(13<<2)|2,{76,45,0}}, +/* 52913 */ {(13<<2)|2,{76,45,0}}, +/* 52914 */ {(13<<2)|2,{76,45,0}}, +/* 52915 */ {(13<<2)|2,{76,45,0}}, +/* 52916 */ {(13<<2)|2,{76,45,0}}, +/* 52917 */ {(13<<2)|2,{76,45,0}}, +/* 52918 */ {(13<<2)|2,{76,45,0}}, +/* 52919 */ {(13<<2)|2,{76,45,0}}, +/* 52920 */ {(13<<2)|2,{76,46,0}}, +/* 52921 */ {(13<<2)|2,{76,46,0}}, +/* 52922 */ {(13<<2)|2,{76,46,0}}, +/* 52923 */ {(13<<2)|2,{76,46,0}}, +/* 52924 */ {(13<<2)|2,{76,46,0}}, +/* 52925 */ {(13<<2)|2,{76,46,0}}, +/* 52926 */ {(13<<2)|2,{76,46,0}}, +/* 52927 */ {(13<<2)|2,{76,46,0}}, +/* 52928 */ {(13<<2)|2,{76,47,0}}, +/* 52929 */ {(13<<2)|2,{76,47,0}}, +/* 52930 */ {(13<<2)|2,{76,47,0}}, +/* 52931 */ {(13<<2)|2,{76,47,0}}, +/* 52932 */ {(13<<2)|2,{76,47,0}}, +/* 52933 */ {(13<<2)|2,{76,47,0}}, +/* 52934 */ {(13<<2)|2,{76,47,0}}, +/* 52935 */ {(13<<2)|2,{76,47,0}}, +/* 52936 */ {(13<<2)|2,{76,51,0}}, +/* 52937 */ {(13<<2)|2,{76,51,0}}, +/* 52938 */ {(13<<2)|2,{76,51,0}}, +/* 52939 */ {(13<<2)|2,{76,51,0}}, +/* 52940 */ {(13<<2)|2,{76,51,0}}, +/* 52941 */ {(13<<2)|2,{76,51,0}}, +/* 52942 */ {(13<<2)|2,{76,51,0}}, +/* 52943 */ {(13<<2)|2,{76,51,0}}, +/* 52944 */ {(13<<2)|2,{76,52,0}}, +/* 52945 */ {(13<<2)|2,{76,52,0}}, +/* 52946 */ {(13<<2)|2,{76,52,0}}, +/* 52947 */ {(13<<2)|2,{76,52,0}}, +/* 52948 */ {(13<<2)|2,{76,52,0}}, +/* 52949 */ {(13<<2)|2,{76,52,0}}, +/* 52950 */ {(13<<2)|2,{76,52,0}}, +/* 52951 */ {(13<<2)|2,{76,52,0}}, +/* 52952 */ {(13<<2)|2,{76,53,0}}, +/* 52953 */ {(13<<2)|2,{76,53,0}}, +/* 52954 */ {(13<<2)|2,{76,53,0}}, +/* 52955 */ {(13<<2)|2,{76,53,0}}, +/* 52956 */ {(13<<2)|2,{76,53,0}}, +/* 52957 */ {(13<<2)|2,{76,53,0}}, +/* 52958 */ {(13<<2)|2,{76,53,0}}, +/* 52959 */ {(13<<2)|2,{76,53,0}}, +/* 52960 */ {(13<<2)|2,{76,54,0}}, +/* 52961 */ {(13<<2)|2,{76,54,0}}, +/* 52962 */ {(13<<2)|2,{76,54,0}}, +/* 52963 */ {(13<<2)|2,{76,54,0}}, +/* 52964 */ {(13<<2)|2,{76,54,0}}, +/* 52965 */ {(13<<2)|2,{76,54,0}}, +/* 52966 */ {(13<<2)|2,{76,54,0}}, +/* 52967 */ {(13<<2)|2,{76,54,0}}, +/* 52968 */ {(13<<2)|2,{76,55,0}}, +/* 52969 */ {(13<<2)|2,{76,55,0}}, +/* 52970 */ {(13<<2)|2,{76,55,0}}, +/* 52971 */ {(13<<2)|2,{76,55,0}}, +/* 52972 */ {(13<<2)|2,{76,55,0}}, +/* 52973 */ {(13<<2)|2,{76,55,0}}, +/* 52974 */ {(13<<2)|2,{76,55,0}}, +/* 52975 */ {(13<<2)|2,{76,55,0}}, +/* 52976 */ {(13<<2)|2,{76,56,0}}, +/* 52977 */ {(13<<2)|2,{76,56,0}}, +/* 52978 */ {(13<<2)|2,{76,56,0}}, +/* 52979 */ {(13<<2)|2,{76,56,0}}, +/* 52980 */ {(13<<2)|2,{76,56,0}}, +/* 52981 */ {(13<<2)|2,{76,56,0}}, +/* 52982 */ {(13<<2)|2,{76,56,0}}, +/* 52983 */ {(13<<2)|2,{76,56,0}}, +/* 52984 */ {(13<<2)|2,{76,57,0}}, +/* 52985 */ {(13<<2)|2,{76,57,0}}, +/* 52986 */ {(13<<2)|2,{76,57,0}}, +/* 52987 */ {(13<<2)|2,{76,57,0}}, +/* 52988 */ {(13<<2)|2,{76,57,0}}, +/* 52989 */ {(13<<2)|2,{76,57,0}}, +/* 52990 */ {(13<<2)|2,{76,57,0}}, +/* 52991 */ {(13<<2)|2,{76,57,0}}, +/* 52992 */ {(13<<2)|2,{76,61,0}}, +/* 52993 */ {(13<<2)|2,{76,61,0}}, +/* 52994 */ {(13<<2)|2,{76,61,0}}, +/* 52995 */ {(13<<2)|2,{76,61,0}}, +/* 52996 */ {(13<<2)|2,{76,61,0}}, +/* 52997 */ {(13<<2)|2,{76,61,0}}, +/* 52998 */ {(13<<2)|2,{76,61,0}}, +/* 52999 */ {(13<<2)|2,{76,61,0}}, +/* 53000 */ {(13<<2)|2,{76,65,0}}, +/* 53001 */ {(13<<2)|2,{76,65,0}}, +/* 53002 */ {(13<<2)|2,{76,65,0}}, +/* 53003 */ {(13<<2)|2,{76,65,0}}, +/* 53004 */ {(13<<2)|2,{76,65,0}}, +/* 53005 */ {(13<<2)|2,{76,65,0}}, +/* 53006 */ {(13<<2)|2,{76,65,0}}, +/* 53007 */ {(13<<2)|2,{76,65,0}}, +/* 53008 */ {(13<<2)|2,{76,95,0}}, +/* 53009 */ {(13<<2)|2,{76,95,0}}, +/* 53010 */ {(13<<2)|2,{76,95,0}}, +/* 53011 */ {(13<<2)|2,{76,95,0}}, +/* 53012 */ {(13<<2)|2,{76,95,0}}, +/* 53013 */ {(13<<2)|2,{76,95,0}}, +/* 53014 */ {(13<<2)|2,{76,95,0}}, +/* 53015 */ {(13<<2)|2,{76,95,0}}, +/* 53016 */ {(13<<2)|2,{76,98,0}}, +/* 53017 */ {(13<<2)|2,{76,98,0}}, +/* 53018 */ {(13<<2)|2,{76,98,0}}, +/* 53019 */ {(13<<2)|2,{76,98,0}}, +/* 53020 */ {(13<<2)|2,{76,98,0}}, +/* 53021 */ {(13<<2)|2,{76,98,0}}, +/* 53022 */ {(13<<2)|2,{76,98,0}}, +/* 53023 */ {(13<<2)|2,{76,98,0}}, +/* 53024 */ {(13<<2)|2,{76,100,0}}, +/* 53025 */ {(13<<2)|2,{76,100,0}}, +/* 53026 */ {(13<<2)|2,{76,100,0}}, +/* 53027 */ {(13<<2)|2,{76,100,0}}, +/* 53028 */ {(13<<2)|2,{76,100,0}}, +/* 53029 */ {(13<<2)|2,{76,100,0}}, +/* 53030 */ {(13<<2)|2,{76,100,0}}, +/* 53031 */ {(13<<2)|2,{76,100,0}}, +/* 53032 */ {(13<<2)|2,{76,102,0}}, +/* 53033 */ {(13<<2)|2,{76,102,0}}, +/* 53034 */ {(13<<2)|2,{76,102,0}}, +/* 53035 */ {(13<<2)|2,{76,102,0}}, +/* 53036 */ {(13<<2)|2,{76,102,0}}, +/* 53037 */ {(13<<2)|2,{76,102,0}}, +/* 53038 */ {(13<<2)|2,{76,102,0}}, +/* 53039 */ {(13<<2)|2,{76,102,0}}, +/* 53040 */ {(13<<2)|2,{76,103,0}}, +/* 53041 */ {(13<<2)|2,{76,103,0}}, +/* 53042 */ {(13<<2)|2,{76,103,0}}, +/* 53043 */ {(13<<2)|2,{76,103,0}}, +/* 53044 */ {(13<<2)|2,{76,103,0}}, +/* 53045 */ {(13<<2)|2,{76,103,0}}, +/* 53046 */ {(13<<2)|2,{76,103,0}}, +/* 53047 */ {(13<<2)|2,{76,103,0}}, +/* 53048 */ {(13<<2)|2,{76,104,0}}, +/* 53049 */ {(13<<2)|2,{76,104,0}}, +/* 53050 */ {(13<<2)|2,{76,104,0}}, +/* 53051 */ {(13<<2)|2,{76,104,0}}, +/* 53052 */ {(13<<2)|2,{76,104,0}}, +/* 53053 */ {(13<<2)|2,{76,104,0}}, +/* 53054 */ {(13<<2)|2,{76,104,0}}, +/* 53055 */ {(13<<2)|2,{76,104,0}}, +/* 53056 */ {(13<<2)|2,{76,108,0}}, +/* 53057 */ {(13<<2)|2,{76,108,0}}, +/* 53058 */ {(13<<2)|2,{76,108,0}}, +/* 53059 */ {(13<<2)|2,{76,108,0}}, +/* 53060 */ {(13<<2)|2,{76,108,0}}, +/* 53061 */ {(13<<2)|2,{76,108,0}}, +/* 53062 */ {(13<<2)|2,{76,108,0}}, +/* 53063 */ {(13<<2)|2,{76,108,0}}, +/* 53064 */ {(13<<2)|2,{76,109,0}}, +/* 53065 */ {(13<<2)|2,{76,109,0}}, +/* 53066 */ {(13<<2)|2,{76,109,0}}, +/* 53067 */ {(13<<2)|2,{76,109,0}}, +/* 53068 */ {(13<<2)|2,{76,109,0}}, +/* 53069 */ {(13<<2)|2,{76,109,0}}, +/* 53070 */ {(13<<2)|2,{76,109,0}}, +/* 53071 */ {(13<<2)|2,{76,109,0}}, +/* 53072 */ {(13<<2)|2,{76,110,0}}, +/* 53073 */ {(13<<2)|2,{76,110,0}}, +/* 53074 */ {(13<<2)|2,{76,110,0}}, +/* 53075 */ {(13<<2)|2,{76,110,0}}, +/* 53076 */ {(13<<2)|2,{76,110,0}}, +/* 53077 */ {(13<<2)|2,{76,110,0}}, +/* 53078 */ {(13<<2)|2,{76,110,0}}, +/* 53079 */ {(13<<2)|2,{76,110,0}}, +/* 53080 */ {(13<<2)|2,{76,112,0}}, +/* 53081 */ {(13<<2)|2,{76,112,0}}, +/* 53082 */ {(13<<2)|2,{76,112,0}}, +/* 53083 */ {(13<<2)|2,{76,112,0}}, +/* 53084 */ {(13<<2)|2,{76,112,0}}, +/* 53085 */ {(13<<2)|2,{76,112,0}}, +/* 53086 */ {(13<<2)|2,{76,112,0}}, +/* 53087 */ {(13<<2)|2,{76,112,0}}, +/* 53088 */ {(13<<2)|2,{76,114,0}}, +/* 53089 */ {(13<<2)|2,{76,114,0}}, +/* 53090 */ {(13<<2)|2,{76,114,0}}, +/* 53091 */ {(13<<2)|2,{76,114,0}}, +/* 53092 */ {(13<<2)|2,{76,114,0}}, +/* 53093 */ {(13<<2)|2,{76,114,0}}, +/* 53094 */ {(13<<2)|2,{76,114,0}}, +/* 53095 */ {(13<<2)|2,{76,114,0}}, +/* 53096 */ {(13<<2)|2,{76,117,0}}, +/* 53097 */ {(13<<2)|2,{76,117,0}}, +/* 53098 */ {(13<<2)|2,{76,117,0}}, +/* 53099 */ {(13<<2)|2,{76,117,0}}, +/* 53100 */ {(13<<2)|2,{76,117,0}}, +/* 53101 */ {(13<<2)|2,{76,117,0}}, +/* 53102 */ {(13<<2)|2,{76,117,0}}, +/* 53103 */ {(13<<2)|2,{76,117,0}}, +/* 53104 */ {(14<<2)|2,{76,58,0}}, +/* 53105 */ {(14<<2)|2,{76,58,0}}, +/* 53106 */ {(14<<2)|2,{76,58,0}}, +/* 53107 */ {(14<<2)|2,{76,58,0}}, +/* 53108 */ {(14<<2)|2,{76,66,0}}, +/* 53109 */ {(14<<2)|2,{76,66,0}}, +/* 53110 */ {(14<<2)|2,{76,66,0}}, +/* 53111 */ {(14<<2)|2,{76,66,0}}, +/* 53112 */ {(14<<2)|2,{76,67,0}}, +/* 53113 */ {(14<<2)|2,{76,67,0}}, +/* 53114 */ {(14<<2)|2,{76,67,0}}, +/* 53115 */ {(14<<2)|2,{76,67,0}}, +/* 53116 */ {(14<<2)|2,{76,68,0}}, +/* 53117 */ {(14<<2)|2,{76,68,0}}, +/* 53118 */ {(14<<2)|2,{76,68,0}}, +/* 53119 */ {(14<<2)|2,{76,68,0}}, +/* 53120 */ {(14<<2)|2,{76,69,0}}, +/* 53121 */ {(14<<2)|2,{76,69,0}}, +/* 53122 */ {(14<<2)|2,{76,69,0}}, +/* 53123 */ {(14<<2)|2,{76,69,0}}, +/* 53124 */ {(14<<2)|2,{76,70,0}}, +/* 53125 */ {(14<<2)|2,{76,70,0}}, +/* 53126 */ {(14<<2)|2,{76,70,0}}, +/* 53127 */ {(14<<2)|2,{76,70,0}}, +/* 53128 */ {(14<<2)|2,{76,71,0}}, +/* 53129 */ {(14<<2)|2,{76,71,0}}, +/* 53130 */ {(14<<2)|2,{76,71,0}}, +/* 53131 */ {(14<<2)|2,{76,71,0}}, +/* 53132 */ {(14<<2)|2,{76,72,0}}, +/* 53133 */ {(14<<2)|2,{76,72,0}}, +/* 53134 */ {(14<<2)|2,{76,72,0}}, +/* 53135 */ {(14<<2)|2,{76,72,0}}, +/* 53136 */ {(14<<2)|2,{76,73,0}}, +/* 53137 */ {(14<<2)|2,{76,73,0}}, +/* 53138 */ {(14<<2)|2,{76,73,0}}, +/* 53139 */ {(14<<2)|2,{76,73,0}}, +/* 53140 */ {(14<<2)|2,{76,74,0}}, +/* 53141 */ {(14<<2)|2,{76,74,0}}, +/* 53142 */ {(14<<2)|2,{76,74,0}}, +/* 53143 */ {(14<<2)|2,{76,74,0}}, +/* 53144 */ {(14<<2)|2,{76,75,0}}, +/* 53145 */ {(14<<2)|2,{76,75,0}}, +/* 53146 */ {(14<<2)|2,{76,75,0}}, +/* 53147 */ {(14<<2)|2,{76,75,0}}, +/* 53148 */ {(14<<2)|2,{76,76,0}}, +/* 53149 */ {(14<<2)|2,{76,76,0}}, +/* 53150 */ {(14<<2)|2,{76,76,0}}, +/* 53151 */ {(14<<2)|2,{76,76,0}}, +/* 53152 */ {(14<<2)|2,{76,77,0}}, +/* 53153 */ {(14<<2)|2,{76,77,0}}, +/* 53154 */ {(14<<2)|2,{76,77,0}}, +/* 53155 */ {(14<<2)|2,{76,77,0}}, +/* 53156 */ {(14<<2)|2,{76,78,0}}, +/* 53157 */ {(14<<2)|2,{76,78,0}}, +/* 53158 */ {(14<<2)|2,{76,78,0}}, +/* 53159 */ {(14<<2)|2,{76,78,0}}, +/* 53160 */ {(14<<2)|2,{76,79,0}}, +/* 53161 */ {(14<<2)|2,{76,79,0}}, +/* 53162 */ {(14<<2)|2,{76,79,0}}, +/* 53163 */ {(14<<2)|2,{76,79,0}}, +/* 53164 */ {(14<<2)|2,{76,80,0}}, +/* 53165 */ {(14<<2)|2,{76,80,0}}, +/* 53166 */ {(14<<2)|2,{76,80,0}}, +/* 53167 */ {(14<<2)|2,{76,80,0}}, +/* 53168 */ {(14<<2)|2,{76,81,0}}, +/* 53169 */ {(14<<2)|2,{76,81,0}}, +/* 53170 */ {(14<<2)|2,{76,81,0}}, +/* 53171 */ {(14<<2)|2,{76,81,0}}, +/* 53172 */ {(14<<2)|2,{76,82,0}}, +/* 53173 */ {(14<<2)|2,{76,82,0}}, +/* 53174 */ {(14<<2)|2,{76,82,0}}, +/* 53175 */ {(14<<2)|2,{76,82,0}}, +/* 53176 */ {(14<<2)|2,{76,83,0}}, +/* 53177 */ {(14<<2)|2,{76,83,0}}, +/* 53178 */ {(14<<2)|2,{76,83,0}}, +/* 53179 */ {(14<<2)|2,{76,83,0}}, +/* 53180 */ {(14<<2)|2,{76,84,0}}, +/* 53181 */ {(14<<2)|2,{76,84,0}}, +/* 53182 */ {(14<<2)|2,{76,84,0}}, +/* 53183 */ {(14<<2)|2,{76,84,0}}, +/* 53184 */ {(14<<2)|2,{76,85,0}}, +/* 53185 */ {(14<<2)|2,{76,85,0}}, +/* 53186 */ {(14<<2)|2,{76,85,0}}, +/* 53187 */ {(14<<2)|2,{76,85,0}}, +/* 53188 */ {(14<<2)|2,{76,86,0}}, +/* 53189 */ {(14<<2)|2,{76,86,0}}, +/* 53190 */ {(14<<2)|2,{76,86,0}}, +/* 53191 */ {(14<<2)|2,{76,86,0}}, +/* 53192 */ {(14<<2)|2,{76,87,0}}, +/* 53193 */ {(14<<2)|2,{76,87,0}}, +/* 53194 */ {(14<<2)|2,{76,87,0}}, +/* 53195 */ {(14<<2)|2,{76,87,0}}, +/* 53196 */ {(14<<2)|2,{76,89,0}}, +/* 53197 */ {(14<<2)|2,{76,89,0}}, +/* 53198 */ {(14<<2)|2,{76,89,0}}, +/* 53199 */ {(14<<2)|2,{76,89,0}}, +/* 53200 */ {(14<<2)|2,{76,106,0}}, +/* 53201 */ {(14<<2)|2,{76,106,0}}, +/* 53202 */ {(14<<2)|2,{76,106,0}}, +/* 53203 */ {(14<<2)|2,{76,106,0}}, +/* 53204 */ {(14<<2)|2,{76,107,0}}, +/* 53205 */ {(14<<2)|2,{76,107,0}}, +/* 53206 */ {(14<<2)|2,{76,107,0}}, +/* 53207 */ {(14<<2)|2,{76,107,0}}, +/* 53208 */ {(14<<2)|2,{76,113,0}}, +/* 53209 */ {(14<<2)|2,{76,113,0}}, +/* 53210 */ {(14<<2)|2,{76,113,0}}, +/* 53211 */ {(14<<2)|2,{76,113,0}}, +/* 53212 */ {(14<<2)|2,{76,118,0}}, +/* 53213 */ {(14<<2)|2,{76,118,0}}, +/* 53214 */ {(14<<2)|2,{76,118,0}}, +/* 53215 */ {(14<<2)|2,{76,118,0}}, +/* 53216 */ {(14<<2)|2,{76,119,0}}, +/* 53217 */ {(14<<2)|2,{76,119,0}}, +/* 53218 */ {(14<<2)|2,{76,119,0}}, +/* 53219 */ {(14<<2)|2,{76,119,0}}, +/* 53220 */ {(14<<2)|2,{76,120,0}}, +/* 53221 */ {(14<<2)|2,{76,120,0}}, +/* 53222 */ {(14<<2)|2,{76,120,0}}, +/* 53223 */ {(14<<2)|2,{76,120,0}}, +/* 53224 */ {(14<<2)|2,{76,121,0}}, +/* 53225 */ {(14<<2)|2,{76,121,0}}, +/* 53226 */ {(14<<2)|2,{76,121,0}}, +/* 53227 */ {(14<<2)|2,{76,121,0}}, +/* 53228 */ {(14<<2)|2,{76,122,0}}, +/* 53229 */ {(14<<2)|2,{76,122,0}}, +/* 53230 */ {(14<<2)|2,{76,122,0}}, +/* 53231 */ {(14<<2)|2,{76,122,0}}, +/* 53232 */ {(15<<2)|2,{76,38,0}}, +/* 53233 */ {(15<<2)|2,{76,38,0}}, +/* 53234 */ {(15<<2)|2,{76,42,0}}, +/* 53235 */ {(15<<2)|2,{76,42,0}}, +/* 53236 */ {(15<<2)|2,{76,44,0}}, +/* 53237 */ {(15<<2)|2,{76,44,0}}, +/* 53238 */ {(15<<2)|2,{76,59,0}}, +/* 53239 */ {(15<<2)|2,{76,59,0}}, +/* 53240 */ {(15<<2)|2,{76,88,0}}, +/* 53241 */ {(15<<2)|2,{76,88,0}}, +/* 53242 */ {(15<<2)|2,{76,90,0}}, +/* 53243 */ {(15<<2)|2,{76,90,0}}, +/* 53244 */ {(7<<2)|1,{76,0,0}}, +/* 53245 */ {(7<<2)|1,{76,0,0}}, +/* 53246 */ {(7<<2)|1,{76,0,0}}, +/* 53247 */ {(7<<2)|1,{76,0,0}}, +/* 53248 */ {(12<<2)|2,{77,48,0}}, +/* 53249 */ {(12<<2)|2,{77,48,0}}, +/* 53250 */ {(12<<2)|2,{77,48,0}}, +/* 53251 */ {(12<<2)|2,{77,48,0}}, +/* 53252 */ {(12<<2)|2,{77,48,0}}, +/* 53253 */ {(12<<2)|2,{77,48,0}}, +/* 53254 */ {(12<<2)|2,{77,48,0}}, +/* 53255 */ {(12<<2)|2,{77,48,0}}, +/* 53256 */ {(12<<2)|2,{77,48,0}}, +/* 53257 */ {(12<<2)|2,{77,48,0}}, +/* 53258 */ {(12<<2)|2,{77,48,0}}, +/* 53259 */ {(12<<2)|2,{77,48,0}}, +/* 53260 */ {(12<<2)|2,{77,48,0}}, +/* 53261 */ {(12<<2)|2,{77,48,0}}, +/* 53262 */ {(12<<2)|2,{77,48,0}}, +/* 53263 */ {(12<<2)|2,{77,48,0}}, +/* 53264 */ {(12<<2)|2,{77,49,0}}, +/* 53265 */ {(12<<2)|2,{77,49,0}}, +/* 53266 */ {(12<<2)|2,{77,49,0}}, +/* 53267 */ {(12<<2)|2,{77,49,0}}, +/* 53268 */ {(12<<2)|2,{77,49,0}}, +/* 53269 */ {(12<<2)|2,{77,49,0}}, +/* 53270 */ {(12<<2)|2,{77,49,0}}, +/* 53271 */ {(12<<2)|2,{77,49,0}}, +/* 53272 */ {(12<<2)|2,{77,49,0}}, +/* 53273 */ {(12<<2)|2,{77,49,0}}, +/* 53274 */ {(12<<2)|2,{77,49,0}}, +/* 53275 */ {(12<<2)|2,{77,49,0}}, +/* 53276 */ {(12<<2)|2,{77,49,0}}, +/* 53277 */ {(12<<2)|2,{77,49,0}}, +/* 53278 */ {(12<<2)|2,{77,49,0}}, +/* 53279 */ {(12<<2)|2,{77,49,0}}, +/* 53280 */ {(12<<2)|2,{77,50,0}}, +/* 53281 */ {(12<<2)|2,{77,50,0}}, +/* 53282 */ {(12<<2)|2,{77,50,0}}, +/* 53283 */ {(12<<2)|2,{77,50,0}}, +/* 53284 */ {(12<<2)|2,{77,50,0}}, +/* 53285 */ {(12<<2)|2,{77,50,0}}, +/* 53286 */ {(12<<2)|2,{77,50,0}}, +/* 53287 */ {(12<<2)|2,{77,50,0}}, +/* 53288 */ {(12<<2)|2,{77,50,0}}, +/* 53289 */ {(12<<2)|2,{77,50,0}}, +/* 53290 */ {(12<<2)|2,{77,50,0}}, +/* 53291 */ {(12<<2)|2,{77,50,0}}, +/* 53292 */ {(12<<2)|2,{77,50,0}}, +/* 53293 */ {(12<<2)|2,{77,50,0}}, +/* 53294 */ {(12<<2)|2,{77,50,0}}, +/* 53295 */ {(12<<2)|2,{77,50,0}}, +/* 53296 */ {(12<<2)|2,{77,97,0}}, +/* 53297 */ {(12<<2)|2,{77,97,0}}, +/* 53298 */ {(12<<2)|2,{77,97,0}}, +/* 53299 */ {(12<<2)|2,{77,97,0}}, +/* 53300 */ {(12<<2)|2,{77,97,0}}, +/* 53301 */ {(12<<2)|2,{77,97,0}}, +/* 53302 */ {(12<<2)|2,{77,97,0}}, +/* 53303 */ {(12<<2)|2,{77,97,0}}, +/* 53304 */ {(12<<2)|2,{77,97,0}}, +/* 53305 */ {(12<<2)|2,{77,97,0}}, +/* 53306 */ {(12<<2)|2,{77,97,0}}, +/* 53307 */ {(12<<2)|2,{77,97,0}}, +/* 53308 */ {(12<<2)|2,{77,97,0}}, +/* 53309 */ {(12<<2)|2,{77,97,0}}, +/* 53310 */ {(12<<2)|2,{77,97,0}}, +/* 53311 */ {(12<<2)|2,{77,97,0}}, +/* 53312 */ {(12<<2)|2,{77,99,0}}, +/* 53313 */ {(12<<2)|2,{77,99,0}}, +/* 53314 */ {(12<<2)|2,{77,99,0}}, +/* 53315 */ {(12<<2)|2,{77,99,0}}, +/* 53316 */ {(12<<2)|2,{77,99,0}}, +/* 53317 */ {(12<<2)|2,{77,99,0}}, +/* 53318 */ {(12<<2)|2,{77,99,0}}, +/* 53319 */ {(12<<2)|2,{77,99,0}}, +/* 53320 */ {(12<<2)|2,{77,99,0}}, +/* 53321 */ {(12<<2)|2,{77,99,0}}, +/* 53322 */ {(12<<2)|2,{77,99,0}}, +/* 53323 */ {(12<<2)|2,{77,99,0}}, +/* 53324 */ {(12<<2)|2,{77,99,0}}, +/* 53325 */ {(12<<2)|2,{77,99,0}}, +/* 53326 */ {(12<<2)|2,{77,99,0}}, +/* 53327 */ {(12<<2)|2,{77,99,0}}, +/* 53328 */ {(12<<2)|2,{77,101,0}}, +/* 53329 */ {(12<<2)|2,{77,101,0}}, +/* 53330 */ {(12<<2)|2,{77,101,0}}, +/* 53331 */ {(12<<2)|2,{77,101,0}}, +/* 53332 */ {(12<<2)|2,{77,101,0}}, +/* 53333 */ {(12<<2)|2,{77,101,0}}, +/* 53334 */ {(12<<2)|2,{77,101,0}}, +/* 53335 */ {(12<<2)|2,{77,101,0}}, +/* 53336 */ {(12<<2)|2,{77,101,0}}, +/* 53337 */ {(12<<2)|2,{77,101,0}}, +/* 53338 */ {(12<<2)|2,{77,101,0}}, +/* 53339 */ {(12<<2)|2,{77,101,0}}, +/* 53340 */ {(12<<2)|2,{77,101,0}}, +/* 53341 */ {(12<<2)|2,{77,101,0}}, +/* 53342 */ {(12<<2)|2,{77,101,0}}, +/* 53343 */ {(12<<2)|2,{77,101,0}}, +/* 53344 */ {(12<<2)|2,{77,105,0}}, +/* 53345 */ {(12<<2)|2,{77,105,0}}, +/* 53346 */ {(12<<2)|2,{77,105,0}}, +/* 53347 */ {(12<<2)|2,{77,105,0}}, +/* 53348 */ {(12<<2)|2,{77,105,0}}, +/* 53349 */ {(12<<2)|2,{77,105,0}}, +/* 53350 */ {(12<<2)|2,{77,105,0}}, +/* 53351 */ {(12<<2)|2,{77,105,0}}, +/* 53352 */ {(12<<2)|2,{77,105,0}}, +/* 53353 */ {(12<<2)|2,{77,105,0}}, +/* 53354 */ {(12<<2)|2,{77,105,0}}, +/* 53355 */ {(12<<2)|2,{77,105,0}}, +/* 53356 */ {(12<<2)|2,{77,105,0}}, +/* 53357 */ {(12<<2)|2,{77,105,0}}, +/* 53358 */ {(12<<2)|2,{77,105,0}}, +/* 53359 */ {(12<<2)|2,{77,105,0}}, +/* 53360 */ {(12<<2)|2,{77,111,0}}, +/* 53361 */ {(12<<2)|2,{77,111,0}}, +/* 53362 */ {(12<<2)|2,{77,111,0}}, +/* 53363 */ {(12<<2)|2,{77,111,0}}, +/* 53364 */ {(12<<2)|2,{77,111,0}}, +/* 53365 */ {(12<<2)|2,{77,111,0}}, +/* 53366 */ {(12<<2)|2,{77,111,0}}, +/* 53367 */ {(12<<2)|2,{77,111,0}}, +/* 53368 */ {(12<<2)|2,{77,111,0}}, +/* 53369 */ {(12<<2)|2,{77,111,0}}, +/* 53370 */ {(12<<2)|2,{77,111,0}}, +/* 53371 */ {(12<<2)|2,{77,111,0}}, +/* 53372 */ {(12<<2)|2,{77,111,0}}, +/* 53373 */ {(12<<2)|2,{77,111,0}}, +/* 53374 */ {(12<<2)|2,{77,111,0}}, +/* 53375 */ {(12<<2)|2,{77,111,0}}, +/* 53376 */ {(12<<2)|2,{77,115,0}}, +/* 53377 */ {(12<<2)|2,{77,115,0}}, +/* 53378 */ {(12<<2)|2,{77,115,0}}, +/* 53379 */ {(12<<2)|2,{77,115,0}}, +/* 53380 */ {(12<<2)|2,{77,115,0}}, +/* 53381 */ {(12<<2)|2,{77,115,0}}, +/* 53382 */ {(12<<2)|2,{77,115,0}}, +/* 53383 */ {(12<<2)|2,{77,115,0}}, +/* 53384 */ {(12<<2)|2,{77,115,0}}, +/* 53385 */ {(12<<2)|2,{77,115,0}}, +/* 53386 */ {(12<<2)|2,{77,115,0}}, +/* 53387 */ {(12<<2)|2,{77,115,0}}, +/* 53388 */ {(12<<2)|2,{77,115,0}}, +/* 53389 */ {(12<<2)|2,{77,115,0}}, +/* 53390 */ {(12<<2)|2,{77,115,0}}, +/* 53391 */ {(12<<2)|2,{77,115,0}}, +/* 53392 */ {(12<<2)|2,{77,116,0}}, +/* 53393 */ {(12<<2)|2,{77,116,0}}, +/* 53394 */ {(12<<2)|2,{77,116,0}}, +/* 53395 */ {(12<<2)|2,{77,116,0}}, +/* 53396 */ {(12<<2)|2,{77,116,0}}, +/* 53397 */ {(12<<2)|2,{77,116,0}}, +/* 53398 */ {(12<<2)|2,{77,116,0}}, +/* 53399 */ {(12<<2)|2,{77,116,0}}, +/* 53400 */ {(12<<2)|2,{77,116,0}}, +/* 53401 */ {(12<<2)|2,{77,116,0}}, +/* 53402 */ {(12<<2)|2,{77,116,0}}, +/* 53403 */ {(12<<2)|2,{77,116,0}}, +/* 53404 */ {(12<<2)|2,{77,116,0}}, +/* 53405 */ {(12<<2)|2,{77,116,0}}, +/* 53406 */ {(12<<2)|2,{77,116,0}}, +/* 53407 */ {(12<<2)|2,{77,116,0}}, +/* 53408 */ {(13<<2)|2,{77,32,0}}, +/* 53409 */ {(13<<2)|2,{77,32,0}}, +/* 53410 */ {(13<<2)|2,{77,32,0}}, +/* 53411 */ {(13<<2)|2,{77,32,0}}, +/* 53412 */ {(13<<2)|2,{77,32,0}}, +/* 53413 */ {(13<<2)|2,{77,32,0}}, +/* 53414 */ {(13<<2)|2,{77,32,0}}, +/* 53415 */ {(13<<2)|2,{77,32,0}}, +/* 53416 */ {(13<<2)|2,{77,37,0}}, +/* 53417 */ {(13<<2)|2,{77,37,0}}, +/* 53418 */ {(13<<2)|2,{77,37,0}}, +/* 53419 */ {(13<<2)|2,{77,37,0}}, +/* 53420 */ {(13<<2)|2,{77,37,0}}, +/* 53421 */ {(13<<2)|2,{77,37,0}}, +/* 53422 */ {(13<<2)|2,{77,37,0}}, +/* 53423 */ {(13<<2)|2,{77,37,0}}, +/* 53424 */ {(13<<2)|2,{77,45,0}}, +/* 53425 */ {(13<<2)|2,{77,45,0}}, +/* 53426 */ {(13<<2)|2,{77,45,0}}, +/* 53427 */ {(13<<2)|2,{77,45,0}}, +/* 53428 */ {(13<<2)|2,{77,45,0}}, +/* 53429 */ {(13<<2)|2,{77,45,0}}, +/* 53430 */ {(13<<2)|2,{77,45,0}}, +/* 53431 */ {(13<<2)|2,{77,45,0}}, +/* 53432 */ {(13<<2)|2,{77,46,0}}, +/* 53433 */ {(13<<2)|2,{77,46,0}}, +/* 53434 */ {(13<<2)|2,{77,46,0}}, +/* 53435 */ {(13<<2)|2,{77,46,0}}, +/* 53436 */ {(13<<2)|2,{77,46,0}}, +/* 53437 */ {(13<<2)|2,{77,46,0}}, +/* 53438 */ {(13<<2)|2,{77,46,0}}, +/* 53439 */ {(13<<2)|2,{77,46,0}}, +/* 53440 */ {(13<<2)|2,{77,47,0}}, +/* 53441 */ {(13<<2)|2,{77,47,0}}, +/* 53442 */ {(13<<2)|2,{77,47,0}}, +/* 53443 */ {(13<<2)|2,{77,47,0}}, +/* 53444 */ {(13<<2)|2,{77,47,0}}, +/* 53445 */ {(13<<2)|2,{77,47,0}}, +/* 53446 */ {(13<<2)|2,{77,47,0}}, +/* 53447 */ {(13<<2)|2,{77,47,0}}, +/* 53448 */ {(13<<2)|2,{77,51,0}}, +/* 53449 */ {(13<<2)|2,{77,51,0}}, +/* 53450 */ {(13<<2)|2,{77,51,0}}, +/* 53451 */ {(13<<2)|2,{77,51,0}}, +/* 53452 */ {(13<<2)|2,{77,51,0}}, +/* 53453 */ {(13<<2)|2,{77,51,0}}, +/* 53454 */ {(13<<2)|2,{77,51,0}}, +/* 53455 */ {(13<<2)|2,{77,51,0}}, +/* 53456 */ {(13<<2)|2,{77,52,0}}, +/* 53457 */ {(13<<2)|2,{77,52,0}}, +/* 53458 */ {(13<<2)|2,{77,52,0}}, +/* 53459 */ {(13<<2)|2,{77,52,0}}, +/* 53460 */ {(13<<2)|2,{77,52,0}}, +/* 53461 */ {(13<<2)|2,{77,52,0}}, +/* 53462 */ {(13<<2)|2,{77,52,0}}, +/* 53463 */ {(13<<2)|2,{77,52,0}}, +/* 53464 */ {(13<<2)|2,{77,53,0}}, +/* 53465 */ {(13<<2)|2,{77,53,0}}, +/* 53466 */ {(13<<2)|2,{77,53,0}}, +/* 53467 */ {(13<<2)|2,{77,53,0}}, +/* 53468 */ {(13<<2)|2,{77,53,0}}, +/* 53469 */ {(13<<2)|2,{77,53,0}}, +/* 53470 */ {(13<<2)|2,{77,53,0}}, +/* 53471 */ {(13<<2)|2,{77,53,0}}, +/* 53472 */ {(13<<2)|2,{77,54,0}}, +/* 53473 */ {(13<<2)|2,{77,54,0}}, +/* 53474 */ {(13<<2)|2,{77,54,0}}, +/* 53475 */ {(13<<2)|2,{77,54,0}}, +/* 53476 */ {(13<<2)|2,{77,54,0}}, +/* 53477 */ {(13<<2)|2,{77,54,0}}, +/* 53478 */ {(13<<2)|2,{77,54,0}}, +/* 53479 */ {(13<<2)|2,{77,54,0}}, +/* 53480 */ {(13<<2)|2,{77,55,0}}, +/* 53481 */ {(13<<2)|2,{77,55,0}}, +/* 53482 */ {(13<<2)|2,{77,55,0}}, +/* 53483 */ {(13<<2)|2,{77,55,0}}, +/* 53484 */ {(13<<2)|2,{77,55,0}}, +/* 53485 */ {(13<<2)|2,{77,55,0}}, +/* 53486 */ {(13<<2)|2,{77,55,0}}, +/* 53487 */ {(13<<2)|2,{77,55,0}}, +/* 53488 */ {(13<<2)|2,{77,56,0}}, +/* 53489 */ {(13<<2)|2,{77,56,0}}, +/* 53490 */ {(13<<2)|2,{77,56,0}}, +/* 53491 */ {(13<<2)|2,{77,56,0}}, +/* 53492 */ {(13<<2)|2,{77,56,0}}, +/* 53493 */ {(13<<2)|2,{77,56,0}}, +/* 53494 */ {(13<<2)|2,{77,56,0}}, +/* 53495 */ {(13<<2)|2,{77,56,0}}, +/* 53496 */ {(13<<2)|2,{77,57,0}}, +/* 53497 */ {(13<<2)|2,{77,57,0}}, +/* 53498 */ {(13<<2)|2,{77,57,0}}, +/* 53499 */ {(13<<2)|2,{77,57,0}}, +/* 53500 */ {(13<<2)|2,{77,57,0}}, +/* 53501 */ {(13<<2)|2,{77,57,0}}, +/* 53502 */ {(13<<2)|2,{77,57,0}}, +/* 53503 */ {(13<<2)|2,{77,57,0}}, +/* 53504 */ {(13<<2)|2,{77,61,0}}, +/* 53505 */ {(13<<2)|2,{77,61,0}}, +/* 53506 */ {(13<<2)|2,{77,61,0}}, +/* 53507 */ {(13<<2)|2,{77,61,0}}, +/* 53508 */ {(13<<2)|2,{77,61,0}}, +/* 53509 */ {(13<<2)|2,{77,61,0}}, +/* 53510 */ {(13<<2)|2,{77,61,0}}, +/* 53511 */ {(13<<2)|2,{77,61,0}}, +/* 53512 */ {(13<<2)|2,{77,65,0}}, +/* 53513 */ {(13<<2)|2,{77,65,0}}, +/* 53514 */ {(13<<2)|2,{77,65,0}}, +/* 53515 */ {(13<<2)|2,{77,65,0}}, +/* 53516 */ {(13<<2)|2,{77,65,0}}, +/* 53517 */ {(13<<2)|2,{77,65,0}}, +/* 53518 */ {(13<<2)|2,{77,65,0}}, +/* 53519 */ {(13<<2)|2,{77,65,0}}, +/* 53520 */ {(13<<2)|2,{77,95,0}}, +/* 53521 */ {(13<<2)|2,{77,95,0}}, +/* 53522 */ {(13<<2)|2,{77,95,0}}, +/* 53523 */ {(13<<2)|2,{77,95,0}}, +/* 53524 */ {(13<<2)|2,{77,95,0}}, +/* 53525 */ {(13<<2)|2,{77,95,0}}, +/* 53526 */ {(13<<2)|2,{77,95,0}}, +/* 53527 */ {(13<<2)|2,{77,95,0}}, +/* 53528 */ {(13<<2)|2,{77,98,0}}, +/* 53529 */ {(13<<2)|2,{77,98,0}}, +/* 53530 */ {(13<<2)|2,{77,98,0}}, +/* 53531 */ {(13<<2)|2,{77,98,0}}, +/* 53532 */ {(13<<2)|2,{77,98,0}}, +/* 53533 */ {(13<<2)|2,{77,98,0}}, +/* 53534 */ {(13<<2)|2,{77,98,0}}, +/* 53535 */ {(13<<2)|2,{77,98,0}}, +/* 53536 */ {(13<<2)|2,{77,100,0}}, +/* 53537 */ {(13<<2)|2,{77,100,0}}, +/* 53538 */ {(13<<2)|2,{77,100,0}}, +/* 53539 */ {(13<<2)|2,{77,100,0}}, +/* 53540 */ {(13<<2)|2,{77,100,0}}, +/* 53541 */ {(13<<2)|2,{77,100,0}}, +/* 53542 */ {(13<<2)|2,{77,100,0}}, +/* 53543 */ {(13<<2)|2,{77,100,0}}, +/* 53544 */ {(13<<2)|2,{77,102,0}}, +/* 53545 */ {(13<<2)|2,{77,102,0}}, +/* 53546 */ {(13<<2)|2,{77,102,0}}, +/* 53547 */ {(13<<2)|2,{77,102,0}}, +/* 53548 */ {(13<<2)|2,{77,102,0}}, +/* 53549 */ {(13<<2)|2,{77,102,0}}, +/* 53550 */ {(13<<2)|2,{77,102,0}}, +/* 53551 */ {(13<<2)|2,{77,102,0}}, +/* 53552 */ {(13<<2)|2,{77,103,0}}, +/* 53553 */ {(13<<2)|2,{77,103,0}}, +/* 53554 */ {(13<<2)|2,{77,103,0}}, +/* 53555 */ {(13<<2)|2,{77,103,0}}, +/* 53556 */ {(13<<2)|2,{77,103,0}}, +/* 53557 */ {(13<<2)|2,{77,103,0}}, +/* 53558 */ {(13<<2)|2,{77,103,0}}, +/* 53559 */ {(13<<2)|2,{77,103,0}}, +/* 53560 */ {(13<<2)|2,{77,104,0}}, +/* 53561 */ {(13<<2)|2,{77,104,0}}, +/* 53562 */ {(13<<2)|2,{77,104,0}}, +/* 53563 */ {(13<<2)|2,{77,104,0}}, +/* 53564 */ {(13<<2)|2,{77,104,0}}, +/* 53565 */ {(13<<2)|2,{77,104,0}}, +/* 53566 */ {(13<<2)|2,{77,104,0}}, +/* 53567 */ {(13<<2)|2,{77,104,0}}, +/* 53568 */ {(13<<2)|2,{77,108,0}}, +/* 53569 */ {(13<<2)|2,{77,108,0}}, +/* 53570 */ {(13<<2)|2,{77,108,0}}, +/* 53571 */ {(13<<2)|2,{77,108,0}}, +/* 53572 */ {(13<<2)|2,{77,108,0}}, +/* 53573 */ {(13<<2)|2,{77,108,0}}, +/* 53574 */ {(13<<2)|2,{77,108,0}}, +/* 53575 */ {(13<<2)|2,{77,108,0}}, +/* 53576 */ {(13<<2)|2,{77,109,0}}, +/* 53577 */ {(13<<2)|2,{77,109,0}}, +/* 53578 */ {(13<<2)|2,{77,109,0}}, +/* 53579 */ {(13<<2)|2,{77,109,0}}, +/* 53580 */ {(13<<2)|2,{77,109,0}}, +/* 53581 */ {(13<<2)|2,{77,109,0}}, +/* 53582 */ {(13<<2)|2,{77,109,0}}, +/* 53583 */ {(13<<2)|2,{77,109,0}}, +/* 53584 */ {(13<<2)|2,{77,110,0}}, +/* 53585 */ {(13<<2)|2,{77,110,0}}, +/* 53586 */ {(13<<2)|2,{77,110,0}}, +/* 53587 */ {(13<<2)|2,{77,110,0}}, +/* 53588 */ {(13<<2)|2,{77,110,0}}, +/* 53589 */ {(13<<2)|2,{77,110,0}}, +/* 53590 */ {(13<<2)|2,{77,110,0}}, +/* 53591 */ {(13<<2)|2,{77,110,0}}, +/* 53592 */ {(13<<2)|2,{77,112,0}}, +/* 53593 */ {(13<<2)|2,{77,112,0}}, +/* 53594 */ {(13<<2)|2,{77,112,0}}, +/* 53595 */ {(13<<2)|2,{77,112,0}}, +/* 53596 */ {(13<<2)|2,{77,112,0}}, +/* 53597 */ {(13<<2)|2,{77,112,0}}, +/* 53598 */ {(13<<2)|2,{77,112,0}}, +/* 53599 */ {(13<<2)|2,{77,112,0}}, +/* 53600 */ {(13<<2)|2,{77,114,0}}, +/* 53601 */ {(13<<2)|2,{77,114,0}}, +/* 53602 */ {(13<<2)|2,{77,114,0}}, +/* 53603 */ {(13<<2)|2,{77,114,0}}, +/* 53604 */ {(13<<2)|2,{77,114,0}}, +/* 53605 */ {(13<<2)|2,{77,114,0}}, +/* 53606 */ {(13<<2)|2,{77,114,0}}, +/* 53607 */ {(13<<2)|2,{77,114,0}}, +/* 53608 */ {(13<<2)|2,{77,117,0}}, +/* 53609 */ {(13<<2)|2,{77,117,0}}, +/* 53610 */ {(13<<2)|2,{77,117,0}}, +/* 53611 */ {(13<<2)|2,{77,117,0}}, +/* 53612 */ {(13<<2)|2,{77,117,0}}, +/* 53613 */ {(13<<2)|2,{77,117,0}}, +/* 53614 */ {(13<<2)|2,{77,117,0}}, +/* 53615 */ {(13<<2)|2,{77,117,0}}, +/* 53616 */ {(14<<2)|2,{77,58,0}}, +/* 53617 */ {(14<<2)|2,{77,58,0}}, +/* 53618 */ {(14<<2)|2,{77,58,0}}, +/* 53619 */ {(14<<2)|2,{77,58,0}}, +/* 53620 */ {(14<<2)|2,{77,66,0}}, +/* 53621 */ {(14<<2)|2,{77,66,0}}, +/* 53622 */ {(14<<2)|2,{77,66,0}}, +/* 53623 */ {(14<<2)|2,{77,66,0}}, +/* 53624 */ {(14<<2)|2,{77,67,0}}, +/* 53625 */ {(14<<2)|2,{77,67,0}}, +/* 53626 */ {(14<<2)|2,{77,67,0}}, +/* 53627 */ {(14<<2)|2,{77,67,0}}, +/* 53628 */ {(14<<2)|2,{77,68,0}}, +/* 53629 */ {(14<<2)|2,{77,68,0}}, +/* 53630 */ {(14<<2)|2,{77,68,0}}, +/* 53631 */ {(14<<2)|2,{77,68,0}}, +/* 53632 */ {(14<<2)|2,{77,69,0}}, +/* 53633 */ {(14<<2)|2,{77,69,0}}, +/* 53634 */ {(14<<2)|2,{77,69,0}}, +/* 53635 */ {(14<<2)|2,{77,69,0}}, +/* 53636 */ {(14<<2)|2,{77,70,0}}, +/* 53637 */ {(14<<2)|2,{77,70,0}}, +/* 53638 */ {(14<<2)|2,{77,70,0}}, +/* 53639 */ {(14<<2)|2,{77,70,0}}, +/* 53640 */ {(14<<2)|2,{77,71,0}}, +/* 53641 */ {(14<<2)|2,{77,71,0}}, +/* 53642 */ {(14<<2)|2,{77,71,0}}, +/* 53643 */ {(14<<2)|2,{77,71,0}}, +/* 53644 */ {(14<<2)|2,{77,72,0}}, +/* 53645 */ {(14<<2)|2,{77,72,0}}, +/* 53646 */ {(14<<2)|2,{77,72,0}}, +/* 53647 */ {(14<<2)|2,{77,72,0}}, +/* 53648 */ {(14<<2)|2,{77,73,0}}, +/* 53649 */ {(14<<2)|2,{77,73,0}}, +/* 53650 */ {(14<<2)|2,{77,73,0}}, +/* 53651 */ {(14<<2)|2,{77,73,0}}, +/* 53652 */ {(14<<2)|2,{77,74,0}}, +/* 53653 */ {(14<<2)|2,{77,74,0}}, +/* 53654 */ {(14<<2)|2,{77,74,0}}, +/* 53655 */ {(14<<2)|2,{77,74,0}}, +/* 53656 */ {(14<<2)|2,{77,75,0}}, +/* 53657 */ {(14<<2)|2,{77,75,0}}, +/* 53658 */ {(14<<2)|2,{77,75,0}}, +/* 53659 */ {(14<<2)|2,{77,75,0}}, +/* 53660 */ {(14<<2)|2,{77,76,0}}, +/* 53661 */ {(14<<2)|2,{77,76,0}}, +/* 53662 */ {(14<<2)|2,{77,76,0}}, +/* 53663 */ {(14<<2)|2,{77,76,0}}, +/* 53664 */ {(14<<2)|2,{77,77,0}}, +/* 53665 */ {(14<<2)|2,{77,77,0}}, +/* 53666 */ {(14<<2)|2,{77,77,0}}, +/* 53667 */ {(14<<2)|2,{77,77,0}}, +/* 53668 */ {(14<<2)|2,{77,78,0}}, +/* 53669 */ {(14<<2)|2,{77,78,0}}, +/* 53670 */ {(14<<2)|2,{77,78,0}}, +/* 53671 */ {(14<<2)|2,{77,78,0}}, +/* 53672 */ {(14<<2)|2,{77,79,0}}, +/* 53673 */ {(14<<2)|2,{77,79,0}}, +/* 53674 */ {(14<<2)|2,{77,79,0}}, +/* 53675 */ {(14<<2)|2,{77,79,0}}, +/* 53676 */ {(14<<2)|2,{77,80,0}}, +/* 53677 */ {(14<<2)|2,{77,80,0}}, +/* 53678 */ {(14<<2)|2,{77,80,0}}, +/* 53679 */ {(14<<2)|2,{77,80,0}}, +/* 53680 */ {(14<<2)|2,{77,81,0}}, +/* 53681 */ {(14<<2)|2,{77,81,0}}, +/* 53682 */ {(14<<2)|2,{77,81,0}}, +/* 53683 */ {(14<<2)|2,{77,81,0}}, +/* 53684 */ {(14<<2)|2,{77,82,0}}, +/* 53685 */ {(14<<2)|2,{77,82,0}}, +/* 53686 */ {(14<<2)|2,{77,82,0}}, +/* 53687 */ {(14<<2)|2,{77,82,0}}, +/* 53688 */ {(14<<2)|2,{77,83,0}}, +/* 53689 */ {(14<<2)|2,{77,83,0}}, +/* 53690 */ {(14<<2)|2,{77,83,0}}, +/* 53691 */ {(14<<2)|2,{77,83,0}}, +/* 53692 */ {(14<<2)|2,{77,84,0}}, +/* 53693 */ {(14<<2)|2,{77,84,0}}, +/* 53694 */ {(14<<2)|2,{77,84,0}}, +/* 53695 */ {(14<<2)|2,{77,84,0}}, +/* 53696 */ {(14<<2)|2,{77,85,0}}, +/* 53697 */ {(14<<2)|2,{77,85,0}}, +/* 53698 */ {(14<<2)|2,{77,85,0}}, +/* 53699 */ {(14<<2)|2,{77,85,0}}, +/* 53700 */ {(14<<2)|2,{77,86,0}}, +/* 53701 */ {(14<<2)|2,{77,86,0}}, +/* 53702 */ {(14<<2)|2,{77,86,0}}, +/* 53703 */ {(14<<2)|2,{77,86,0}}, +/* 53704 */ {(14<<2)|2,{77,87,0}}, +/* 53705 */ {(14<<2)|2,{77,87,0}}, +/* 53706 */ {(14<<2)|2,{77,87,0}}, +/* 53707 */ {(14<<2)|2,{77,87,0}}, +/* 53708 */ {(14<<2)|2,{77,89,0}}, +/* 53709 */ {(14<<2)|2,{77,89,0}}, +/* 53710 */ {(14<<2)|2,{77,89,0}}, +/* 53711 */ {(14<<2)|2,{77,89,0}}, +/* 53712 */ {(14<<2)|2,{77,106,0}}, +/* 53713 */ {(14<<2)|2,{77,106,0}}, +/* 53714 */ {(14<<2)|2,{77,106,0}}, +/* 53715 */ {(14<<2)|2,{77,106,0}}, +/* 53716 */ {(14<<2)|2,{77,107,0}}, +/* 53717 */ {(14<<2)|2,{77,107,0}}, +/* 53718 */ {(14<<2)|2,{77,107,0}}, +/* 53719 */ {(14<<2)|2,{77,107,0}}, +/* 53720 */ {(14<<2)|2,{77,113,0}}, +/* 53721 */ {(14<<2)|2,{77,113,0}}, +/* 53722 */ {(14<<2)|2,{77,113,0}}, +/* 53723 */ {(14<<2)|2,{77,113,0}}, +/* 53724 */ {(14<<2)|2,{77,118,0}}, +/* 53725 */ {(14<<2)|2,{77,118,0}}, +/* 53726 */ {(14<<2)|2,{77,118,0}}, +/* 53727 */ {(14<<2)|2,{77,118,0}}, +/* 53728 */ {(14<<2)|2,{77,119,0}}, +/* 53729 */ {(14<<2)|2,{77,119,0}}, +/* 53730 */ {(14<<2)|2,{77,119,0}}, +/* 53731 */ {(14<<2)|2,{77,119,0}}, +/* 53732 */ {(14<<2)|2,{77,120,0}}, +/* 53733 */ {(14<<2)|2,{77,120,0}}, +/* 53734 */ {(14<<2)|2,{77,120,0}}, +/* 53735 */ {(14<<2)|2,{77,120,0}}, +/* 53736 */ {(14<<2)|2,{77,121,0}}, +/* 53737 */ {(14<<2)|2,{77,121,0}}, +/* 53738 */ {(14<<2)|2,{77,121,0}}, +/* 53739 */ {(14<<2)|2,{77,121,0}}, +/* 53740 */ {(14<<2)|2,{77,122,0}}, +/* 53741 */ {(14<<2)|2,{77,122,0}}, +/* 53742 */ {(14<<2)|2,{77,122,0}}, +/* 53743 */ {(14<<2)|2,{77,122,0}}, +/* 53744 */ {(15<<2)|2,{77,38,0}}, +/* 53745 */ {(15<<2)|2,{77,38,0}}, +/* 53746 */ {(15<<2)|2,{77,42,0}}, +/* 53747 */ {(15<<2)|2,{77,42,0}}, +/* 53748 */ {(15<<2)|2,{77,44,0}}, +/* 53749 */ {(15<<2)|2,{77,44,0}}, +/* 53750 */ {(15<<2)|2,{77,59,0}}, +/* 53751 */ {(15<<2)|2,{77,59,0}}, +/* 53752 */ {(15<<2)|2,{77,88,0}}, +/* 53753 */ {(15<<2)|2,{77,88,0}}, +/* 53754 */ {(15<<2)|2,{77,90,0}}, +/* 53755 */ {(15<<2)|2,{77,90,0}}, +/* 53756 */ {(7<<2)|1,{77,0,0}}, +/* 53757 */ {(7<<2)|1,{77,0,0}}, +/* 53758 */ {(7<<2)|1,{77,0,0}}, +/* 53759 */ {(7<<2)|1,{77,0,0}}, +/* 53760 */ {(12<<2)|2,{78,48,0}}, +/* 53761 */ {(12<<2)|2,{78,48,0}}, +/* 53762 */ {(12<<2)|2,{78,48,0}}, +/* 53763 */ {(12<<2)|2,{78,48,0}}, +/* 53764 */ {(12<<2)|2,{78,48,0}}, +/* 53765 */ {(12<<2)|2,{78,48,0}}, +/* 53766 */ {(12<<2)|2,{78,48,0}}, +/* 53767 */ {(12<<2)|2,{78,48,0}}, +/* 53768 */ {(12<<2)|2,{78,48,0}}, +/* 53769 */ {(12<<2)|2,{78,48,0}}, +/* 53770 */ {(12<<2)|2,{78,48,0}}, +/* 53771 */ {(12<<2)|2,{78,48,0}}, +/* 53772 */ {(12<<2)|2,{78,48,0}}, +/* 53773 */ {(12<<2)|2,{78,48,0}}, +/* 53774 */ {(12<<2)|2,{78,48,0}}, +/* 53775 */ {(12<<2)|2,{78,48,0}}, +/* 53776 */ {(12<<2)|2,{78,49,0}}, +/* 53777 */ {(12<<2)|2,{78,49,0}}, +/* 53778 */ {(12<<2)|2,{78,49,0}}, +/* 53779 */ {(12<<2)|2,{78,49,0}}, +/* 53780 */ {(12<<2)|2,{78,49,0}}, +/* 53781 */ {(12<<2)|2,{78,49,0}}, +/* 53782 */ {(12<<2)|2,{78,49,0}}, +/* 53783 */ {(12<<2)|2,{78,49,0}}, +/* 53784 */ {(12<<2)|2,{78,49,0}}, +/* 53785 */ {(12<<2)|2,{78,49,0}}, +/* 53786 */ {(12<<2)|2,{78,49,0}}, +/* 53787 */ {(12<<2)|2,{78,49,0}}, +/* 53788 */ {(12<<2)|2,{78,49,0}}, +/* 53789 */ {(12<<2)|2,{78,49,0}}, +/* 53790 */ {(12<<2)|2,{78,49,0}}, +/* 53791 */ {(12<<2)|2,{78,49,0}}, +/* 53792 */ {(12<<2)|2,{78,50,0}}, +/* 53793 */ {(12<<2)|2,{78,50,0}}, +/* 53794 */ {(12<<2)|2,{78,50,0}}, +/* 53795 */ {(12<<2)|2,{78,50,0}}, +/* 53796 */ {(12<<2)|2,{78,50,0}}, +/* 53797 */ {(12<<2)|2,{78,50,0}}, +/* 53798 */ {(12<<2)|2,{78,50,0}}, +/* 53799 */ {(12<<2)|2,{78,50,0}}, +/* 53800 */ {(12<<2)|2,{78,50,0}}, +/* 53801 */ {(12<<2)|2,{78,50,0}}, +/* 53802 */ {(12<<2)|2,{78,50,0}}, +/* 53803 */ {(12<<2)|2,{78,50,0}}, +/* 53804 */ {(12<<2)|2,{78,50,0}}, +/* 53805 */ {(12<<2)|2,{78,50,0}}, +/* 53806 */ {(12<<2)|2,{78,50,0}}, +/* 53807 */ {(12<<2)|2,{78,50,0}}, +/* 53808 */ {(12<<2)|2,{78,97,0}}, +/* 53809 */ {(12<<2)|2,{78,97,0}}, +/* 53810 */ {(12<<2)|2,{78,97,0}}, +/* 53811 */ {(12<<2)|2,{78,97,0}}, +/* 53812 */ {(12<<2)|2,{78,97,0}}, +/* 53813 */ {(12<<2)|2,{78,97,0}}, +/* 53814 */ {(12<<2)|2,{78,97,0}}, +/* 53815 */ {(12<<2)|2,{78,97,0}}, +/* 53816 */ {(12<<2)|2,{78,97,0}}, +/* 53817 */ {(12<<2)|2,{78,97,0}}, +/* 53818 */ {(12<<2)|2,{78,97,0}}, +/* 53819 */ {(12<<2)|2,{78,97,0}}, +/* 53820 */ {(12<<2)|2,{78,97,0}}, +/* 53821 */ {(12<<2)|2,{78,97,0}}, +/* 53822 */ {(12<<2)|2,{78,97,0}}, +/* 53823 */ {(12<<2)|2,{78,97,0}}, +/* 53824 */ {(12<<2)|2,{78,99,0}}, +/* 53825 */ {(12<<2)|2,{78,99,0}}, +/* 53826 */ {(12<<2)|2,{78,99,0}}, +/* 53827 */ {(12<<2)|2,{78,99,0}}, +/* 53828 */ {(12<<2)|2,{78,99,0}}, +/* 53829 */ {(12<<2)|2,{78,99,0}}, +/* 53830 */ {(12<<2)|2,{78,99,0}}, +/* 53831 */ {(12<<2)|2,{78,99,0}}, +/* 53832 */ {(12<<2)|2,{78,99,0}}, +/* 53833 */ {(12<<2)|2,{78,99,0}}, +/* 53834 */ {(12<<2)|2,{78,99,0}}, +/* 53835 */ {(12<<2)|2,{78,99,0}}, +/* 53836 */ {(12<<2)|2,{78,99,0}}, +/* 53837 */ {(12<<2)|2,{78,99,0}}, +/* 53838 */ {(12<<2)|2,{78,99,0}}, +/* 53839 */ {(12<<2)|2,{78,99,0}}, +/* 53840 */ {(12<<2)|2,{78,101,0}}, +/* 53841 */ {(12<<2)|2,{78,101,0}}, +/* 53842 */ {(12<<2)|2,{78,101,0}}, +/* 53843 */ {(12<<2)|2,{78,101,0}}, +/* 53844 */ {(12<<2)|2,{78,101,0}}, +/* 53845 */ {(12<<2)|2,{78,101,0}}, +/* 53846 */ {(12<<2)|2,{78,101,0}}, +/* 53847 */ {(12<<2)|2,{78,101,0}}, +/* 53848 */ {(12<<2)|2,{78,101,0}}, +/* 53849 */ {(12<<2)|2,{78,101,0}}, +/* 53850 */ {(12<<2)|2,{78,101,0}}, +/* 53851 */ {(12<<2)|2,{78,101,0}}, +/* 53852 */ {(12<<2)|2,{78,101,0}}, +/* 53853 */ {(12<<2)|2,{78,101,0}}, +/* 53854 */ {(12<<2)|2,{78,101,0}}, +/* 53855 */ {(12<<2)|2,{78,101,0}}, +/* 53856 */ {(12<<2)|2,{78,105,0}}, +/* 53857 */ {(12<<2)|2,{78,105,0}}, +/* 53858 */ {(12<<2)|2,{78,105,0}}, +/* 53859 */ {(12<<2)|2,{78,105,0}}, +/* 53860 */ {(12<<2)|2,{78,105,0}}, +/* 53861 */ {(12<<2)|2,{78,105,0}}, +/* 53862 */ {(12<<2)|2,{78,105,0}}, +/* 53863 */ {(12<<2)|2,{78,105,0}}, +/* 53864 */ {(12<<2)|2,{78,105,0}}, +/* 53865 */ {(12<<2)|2,{78,105,0}}, +/* 53866 */ {(12<<2)|2,{78,105,0}}, +/* 53867 */ {(12<<2)|2,{78,105,0}}, +/* 53868 */ {(12<<2)|2,{78,105,0}}, +/* 53869 */ {(12<<2)|2,{78,105,0}}, +/* 53870 */ {(12<<2)|2,{78,105,0}}, +/* 53871 */ {(12<<2)|2,{78,105,0}}, +/* 53872 */ {(12<<2)|2,{78,111,0}}, +/* 53873 */ {(12<<2)|2,{78,111,0}}, +/* 53874 */ {(12<<2)|2,{78,111,0}}, +/* 53875 */ {(12<<2)|2,{78,111,0}}, +/* 53876 */ {(12<<2)|2,{78,111,0}}, +/* 53877 */ {(12<<2)|2,{78,111,0}}, +/* 53878 */ {(12<<2)|2,{78,111,0}}, +/* 53879 */ {(12<<2)|2,{78,111,0}}, +/* 53880 */ {(12<<2)|2,{78,111,0}}, +/* 53881 */ {(12<<2)|2,{78,111,0}}, +/* 53882 */ {(12<<2)|2,{78,111,0}}, +/* 53883 */ {(12<<2)|2,{78,111,0}}, +/* 53884 */ {(12<<2)|2,{78,111,0}}, +/* 53885 */ {(12<<2)|2,{78,111,0}}, +/* 53886 */ {(12<<2)|2,{78,111,0}}, +/* 53887 */ {(12<<2)|2,{78,111,0}}, +/* 53888 */ {(12<<2)|2,{78,115,0}}, +/* 53889 */ {(12<<2)|2,{78,115,0}}, +/* 53890 */ {(12<<2)|2,{78,115,0}}, +/* 53891 */ {(12<<2)|2,{78,115,0}}, +/* 53892 */ {(12<<2)|2,{78,115,0}}, +/* 53893 */ {(12<<2)|2,{78,115,0}}, +/* 53894 */ {(12<<2)|2,{78,115,0}}, +/* 53895 */ {(12<<2)|2,{78,115,0}}, +/* 53896 */ {(12<<2)|2,{78,115,0}}, +/* 53897 */ {(12<<2)|2,{78,115,0}}, +/* 53898 */ {(12<<2)|2,{78,115,0}}, +/* 53899 */ {(12<<2)|2,{78,115,0}}, +/* 53900 */ {(12<<2)|2,{78,115,0}}, +/* 53901 */ {(12<<2)|2,{78,115,0}}, +/* 53902 */ {(12<<2)|2,{78,115,0}}, +/* 53903 */ {(12<<2)|2,{78,115,0}}, +/* 53904 */ {(12<<2)|2,{78,116,0}}, +/* 53905 */ {(12<<2)|2,{78,116,0}}, +/* 53906 */ {(12<<2)|2,{78,116,0}}, +/* 53907 */ {(12<<2)|2,{78,116,0}}, +/* 53908 */ {(12<<2)|2,{78,116,0}}, +/* 53909 */ {(12<<2)|2,{78,116,0}}, +/* 53910 */ {(12<<2)|2,{78,116,0}}, +/* 53911 */ {(12<<2)|2,{78,116,0}}, +/* 53912 */ {(12<<2)|2,{78,116,0}}, +/* 53913 */ {(12<<2)|2,{78,116,0}}, +/* 53914 */ {(12<<2)|2,{78,116,0}}, +/* 53915 */ {(12<<2)|2,{78,116,0}}, +/* 53916 */ {(12<<2)|2,{78,116,0}}, +/* 53917 */ {(12<<2)|2,{78,116,0}}, +/* 53918 */ {(12<<2)|2,{78,116,0}}, +/* 53919 */ {(12<<2)|2,{78,116,0}}, +/* 53920 */ {(13<<2)|2,{78,32,0}}, +/* 53921 */ {(13<<2)|2,{78,32,0}}, +/* 53922 */ {(13<<2)|2,{78,32,0}}, +/* 53923 */ {(13<<2)|2,{78,32,0}}, +/* 53924 */ {(13<<2)|2,{78,32,0}}, +/* 53925 */ {(13<<2)|2,{78,32,0}}, +/* 53926 */ {(13<<2)|2,{78,32,0}}, +/* 53927 */ {(13<<2)|2,{78,32,0}}, +/* 53928 */ {(13<<2)|2,{78,37,0}}, +/* 53929 */ {(13<<2)|2,{78,37,0}}, +/* 53930 */ {(13<<2)|2,{78,37,0}}, +/* 53931 */ {(13<<2)|2,{78,37,0}}, +/* 53932 */ {(13<<2)|2,{78,37,0}}, +/* 53933 */ {(13<<2)|2,{78,37,0}}, +/* 53934 */ {(13<<2)|2,{78,37,0}}, +/* 53935 */ {(13<<2)|2,{78,37,0}}, +/* 53936 */ {(13<<2)|2,{78,45,0}}, +/* 53937 */ {(13<<2)|2,{78,45,0}}, +/* 53938 */ {(13<<2)|2,{78,45,0}}, +/* 53939 */ {(13<<2)|2,{78,45,0}}, +/* 53940 */ {(13<<2)|2,{78,45,0}}, +/* 53941 */ {(13<<2)|2,{78,45,0}}, +/* 53942 */ {(13<<2)|2,{78,45,0}}, +/* 53943 */ {(13<<2)|2,{78,45,0}}, +/* 53944 */ {(13<<2)|2,{78,46,0}}, +/* 53945 */ {(13<<2)|2,{78,46,0}}, +/* 53946 */ {(13<<2)|2,{78,46,0}}, +/* 53947 */ {(13<<2)|2,{78,46,0}}, +/* 53948 */ {(13<<2)|2,{78,46,0}}, +/* 53949 */ {(13<<2)|2,{78,46,0}}, +/* 53950 */ {(13<<2)|2,{78,46,0}}, +/* 53951 */ {(13<<2)|2,{78,46,0}}, +/* 53952 */ {(13<<2)|2,{78,47,0}}, +/* 53953 */ {(13<<2)|2,{78,47,0}}, +/* 53954 */ {(13<<2)|2,{78,47,0}}, +/* 53955 */ {(13<<2)|2,{78,47,0}}, +/* 53956 */ {(13<<2)|2,{78,47,0}}, +/* 53957 */ {(13<<2)|2,{78,47,0}}, +/* 53958 */ {(13<<2)|2,{78,47,0}}, +/* 53959 */ {(13<<2)|2,{78,47,0}}, +/* 53960 */ {(13<<2)|2,{78,51,0}}, +/* 53961 */ {(13<<2)|2,{78,51,0}}, +/* 53962 */ {(13<<2)|2,{78,51,0}}, +/* 53963 */ {(13<<2)|2,{78,51,0}}, +/* 53964 */ {(13<<2)|2,{78,51,0}}, +/* 53965 */ {(13<<2)|2,{78,51,0}}, +/* 53966 */ {(13<<2)|2,{78,51,0}}, +/* 53967 */ {(13<<2)|2,{78,51,0}}, +/* 53968 */ {(13<<2)|2,{78,52,0}}, +/* 53969 */ {(13<<2)|2,{78,52,0}}, +/* 53970 */ {(13<<2)|2,{78,52,0}}, +/* 53971 */ {(13<<2)|2,{78,52,0}}, +/* 53972 */ {(13<<2)|2,{78,52,0}}, +/* 53973 */ {(13<<2)|2,{78,52,0}}, +/* 53974 */ {(13<<2)|2,{78,52,0}}, +/* 53975 */ {(13<<2)|2,{78,52,0}}, +/* 53976 */ {(13<<2)|2,{78,53,0}}, +/* 53977 */ {(13<<2)|2,{78,53,0}}, +/* 53978 */ {(13<<2)|2,{78,53,0}}, +/* 53979 */ {(13<<2)|2,{78,53,0}}, +/* 53980 */ {(13<<2)|2,{78,53,0}}, +/* 53981 */ {(13<<2)|2,{78,53,0}}, +/* 53982 */ {(13<<2)|2,{78,53,0}}, +/* 53983 */ {(13<<2)|2,{78,53,0}}, +/* 53984 */ {(13<<2)|2,{78,54,0}}, +/* 53985 */ {(13<<2)|2,{78,54,0}}, +/* 53986 */ {(13<<2)|2,{78,54,0}}, +/* 53987 */ {(13<<2)|2,{78,54,0}}, +/* 53988 */ {(13<<2)|2,{78,54,0}}, +/* 53989 */ {(13<<2)|2,{78,54,0}}, +/* 53990 */ {(13<<2)|2,{78,54,0}}, +/* 53991 */ {(13<<2)|2,{78,54,0}}, +/* 53992 */ {(13<<2)|2,{78,55,0}}, +/* 53993 */ {(13<<2)|2,{78,55,0}}, +/* 53994 */ {(13<<2)|2,{78,55,0}}, +/* 53995 */ {(13<<2)|2,{78,55,0}}, +/* 53996 */ {(13<<2)|2,{78,55,0}}, +/* 53997 */ {(13<<2)|2,{78,55,0}}, +/* 53998 */ {(13<<2)|2,{78,55,0}}, +/* 53999 */ {(13<<2)|2,{78,55,0}}, +/* 54000 */ {(13<<2)|2,{78,56,0}}, +/* 54001 */ {(13<<2)|2,{78,56,0}}, +/* 54002 */ {(13<<2)|2,{78,56,0}}, +/* 54003 */ {(13<<2)|2,{78,56,0}}, +/* 54004 */ {(13<<2)|2,{78,56,0}}, +/* 54005 */ {(13<<2)|2,{78,56,0}}, +/* 54006 */ {(13<<2)|2,{78,56,0}}, +/* 54007 */ {(13<<2)|2,{78,56,0}}, +/* 54008 */ {(13<<2)|2,{78,57,0}}, +/* 54009 */ {(13<<2)|2,{78,57,0}}, +/* 54010 */ {(13<<2)|2,{78,57,0}}, +/* 54011 */ {(13<<2)|2,{78,57,0}}, +/* 54012 */ {(13<<2)|2,{78,57,0}}, +/* 54013 */ {(13<<2)|2,{78,57,0}}, +/* 54014 */ {(13<<2)|2,{78,57,0}}, +/* 54015 */ {(13<<2)|2,{78,57,0}}, +/* 54016 */ {(13<<2)|2,{78,61,0}}, +/* 54017 */ {(13<<2)|2,{78,61,0}}, +/* 54018 */ {(13<<2)|2,{78,61,0}}, +/* 54019 */ {(13<<2)|2,{78,61,0}}, +/* 54020 */ {(13<<2)|2,{78,61,0}}, +/* 54021 */ {(13<<2)|2,{78,61,0}}, +/* 54022 */ {(13<<2)|2,{78,61,0}}, +/* 54023 */ {(13<<2)|2,{78,61,0}}, +/* 54024 */ {(13<<2)|2,{78,65,0}}, +/* 54025 */ {(13<<2)|2,{78,65,0}}, +/* 54026 */ {(13<<2)|2,{78,65,0}}, +/* 54027 */ {(13<<2)|2,{78,65,0}}, +/* 54028 */ {(13<<2)|2,{78,65,0}}, +/* 54029 */ {(13<<2)|2,{78,65,0}}, +/* 54030 */ {(13<<2)|2,{78,65,0}}, +/* 54031 */ {(13<<2)|2,{78,65,0}}, +/* 54032 */ {(13<<2)|2,{78,95,0}}, +/* 54033 */ {(13<<2)|2,{78,95,0}}, +/* 54034 */ {(13<<2)|2,{78,95,0}}, +/* 54035 */ {(13<<2)|2,{78,95,0}}, +/* 54036 */ {(13<<2)|2,{78,95,0}}, +/* 54037 */ {(13<<2)|2,{78,95,0}}, +/* 54038 */ {(13<<2)|2,{78,95,0}}, +/* 54039 */ {(13<<2)|2,{78,95,0}}, +/* 54040 */ {(13<<2)|2,{78,98,0}}, +/* 54041 */ {(13<<2)|2,{78,98,0}}, +/* 54042 */ {(13<<2)|2,{78,98,0}}, +/* 54043 */ {(13<<2)|2,{78,98,0}}, +/* 54044 */ {(13<<2)|2,{78,98,0}}, +/* 54045 */ {(13<<2)|2,{78,98,0}}, +/* 54046 */ {(13<<2)|2,{78,98,0}}, +/* 54047 */ {(13<<2)|2,{78,98,0}}, +/* 54048 */ {(13<<2)|2,{78,100,0}}, +/* 54049 */ {(13<<2)|2,{78,100,0}}, +/* 54050 */ {(13<<2)|2,{78,100,0}}, +/* 54051 */ {(13<<2)|2,{78,100,0}}, +/* 54052 */ {(13<<2)|2,{78,100,0}}, +/* 54053 */ {(13<<2)|2,{78,100,0}}, +/* 54054 */ {(13<<2)|2,{78,100,0}}, +/* 54055 */ {(13<<2)|2,{78,100,0}}, +/* 54056 */ {(13<<2)|2,{78,102,0}}, +/* 54057 */ {(13<<2)|2,{78,102,0}}, +/* 54058 */ {(13<<2)|2,{78,102,0}}, +/* 54059 */ {(13<<2)|2,{78,102,0}}, +/* 54060 */ {(13<<2)|2,{78,102,0}}, +/* 54061 */ {(13<<2)|2,{78,102,0}}, +/* 54062 */ {(13<<2)|2,{78,102,0}}, +/* 54063 */ {(13<<2)|2,{78,102,0}}, +/* 54064 */ {(13<<2)|2,{78,103,0}}, +/* 54065 */ {(13<<2)|2,{78,103,0}}, +/* 54066 */ {(13<<2)|2,{78,103,0}}, +/* 54067 */ {(13<<2)|2,{78,103,0}}, +/* 54068 */ {(13<<2)|2,{78,103,0}}, +/* 54069 */ {(13<<2)|2,{78,103,0}}, +/* 54070 */ {(13<<2)|2,{78,103,0}}, +/* 54071 */ {(13<<2)|2,{78,103,0}}, +/* 54072 */ {(13<<2)|2,{78,104,0}}, +/* 54073 */ {(13<<2)|2,{78,104,0}}, +/* 54074 */ {(13<<2)|2,{78,104,0}}, +/* 54075 */ {(13<<2)|2,{78,104,0}}, +/* 54076 */ {(13<<2)|2,{78,104,0}}, +/* 54077 */ {(13<<2)|2,{78,104,0}}, +/* 54078 */ {(13<<2)|2,{78,104,0}}, +/* 54079 */ {(13<<2)|2,{78,104,0}}, +/* 54080 */ {(13<<2)|2,{78,108,0}}, +/* 54081 */ {(13<<2)|2,{78,108,0}}, +/* 54082 */ {(13<<2)|2,{78,108,0}}, +/* 54083 */ {(13<<2)|2,{78,108,0}}, +/* 54084 */ {(13<<2)|2,{78,108,0}}, +/* 54085 */ {(13<<2)|2,{78,108,0}}, +/* 54086 */ {(13<<2)|2,{78,108,0}}, +/* 54087 */ {(13<<2)|2,{78,108,0}}, +/* 54088 */ {(13<<2)|2,{78,109,0}}, +/* 54089 */ {(13<<2)|2,{78,109,0}}, +/* 54090 */ {(13<<2)|2,{78,109,0}}, +/* 54091 */ {(13<<2)|2,{78,109,0}}, +/* 54092 */ {(13<<2)|2,{78,109,0}}, +/* 54093 */ {(13<<2)|2,{78,109,0}}, +/* 54094 */ {(13<<2)|2,{78,109,0}}, +/* 54095 */ {(13<<2)|2,{78,109,0}}, +/* 54096 */ {(13<<2)|2,{78,110,0}}, +/* 54097 */ {(13<<2)|2,{78,110,0}}, +/* 54098 */ {(13<<2)|2,{78,110,0}}, +/* 54099 */ {(13<<2)|2,{78,110,0}}, +/* 54100 */ {(13<<2)|2,{78,110,0}}, +/* 54101 */ {(13<<2)|2,{78,110,0}}, +/* 54102 */ {(13<<2)|2,{78,110,0}}, +/* 54103 */ {(13<<2)|2,{78,110,0}}, +/* 54104 */ {(13<<2)|2,{78,112,0}}, +/* 54105 */ {(13<<2)|2,{78,112,0}}, +/* 54106 */ {(13<<2)|2,{78,112,0}}, +/* 54107 */ {(13<<2)|2,{78,112,0}}, +/* 54108 */ {(13<<2)|2,{78,112,0}}, +/* 54109 */ {(13<<2)|2,{78,112,0}}, +/* 54110 */ {(13<<2)|2,{78,112,0}}, +/* 54111 */ {(13<<2)|2,{78,112,0}}, +/* 54112 */ {(13<<2)|2,{78,114,0}}, +/* 54113 */ {(13<<2)|2,{78,114,0}}, +/* 54114 */ {(13<<2)|2,{78,114,0}}, +/* 54115 */ {(13<<2)|2,{78,114,0}}, +/* 54116 */ {(13<<2)|2,{78,114,0}}, +/* 54117 */ {(13<<2)|2,{78,114,0}}, +/* 54118 */ {(13<<2)|2,{78,114,0}}, +/* 54119 */ {(13<<2)|2,{78,114,0}}, +/* 54120 */ {(13<<2)|2,{78,117,0}}, +/* 54121 */ {(13<<2)|2,{78,117,0}}, +/* 54122 */ {(13<<2)|2,{78,117,0}}, +/* 54123 */ {(13<<2)|2,{78,117,0}}, +/* 54124 */ {(13<<2)|2,{78,117,0}}, +/* 54125 */ {(13<<2)|2,{78,117,0}}, +/* 54126 */ {(13<<2)|2,{78,117,0}}, +/* 54127 */ {(13<<2)|2,{78,117,0}}, +/* 54128 */ {(14<<2)|2,{78,58,0}}, +/* 54129 */ {(14<<2)|2,{78,58,0}}, +/* 54130 */ {(14<<2)|2,{78,58,0}}, +/* 54131 */ {(14<<2)|2,{78,58,0}}, +/* 54132 */ {(14<<2)|2,{78,66,0}}, +/* 54133 */ {(14<<2)|2,{78,66,0}}, +/* 54134 */ {(14<<2)|2,{78,66,0}}, +/* 54135 */ {(14<<2)|2,{78,66,0}}, +/* 54136 */ {(14<<2)|2,{78,67,0}}, +/* 54137 */ {(14<<2)|2,{78,67,0}}, +/* 54138 */ {(14<<2)|2,{78,67,0}}, +/* 54139 */ {(14<<2)|2,{78,67,0}}, +/* 54140 */ {(14<<2)|2,{78,68,0}}, +/* 54141 */ {(14<<2)|2,{78,68,0}}, +/* 54142 */ {(14<<2)|2,{78,68,0}}, +/* 54143 */ {(14<<2)|2,{78,68,0}}, +/* 54144 */ {(14<<2)|2,{78,69,0}}, +/* 54145 */ {(14<<2)|2,{78,69,0}}, +/* 54146 */ {(14<<2)|2,{78,69,0}}, +/* 54147 */ {(14<<2)|2,{78,69,0}}, +/* 54148 */ {(14<<2)|2,{78,70,0}}, +/* 54149 */ {(14<<2)|2,{78,70,0}}, +/* 54150 */ {(14<<2)|2,{78,70,0}}, +/* 54151 */ {(14<<2)|2,{78,70,0}}, +/* 54152 */ {(14<<2)|2,{78,71,0}}, +/* 54153 */ {(14<<2)|2,{78,71,0}}, +/* 54154 */ {(14<<2)|2,{78,71,0}}, +/* 54155 */ {(14<<2)|2,{78,71,0}}, +/* 54156 */ {(14<<2)|2,{78,72,0}}, +/* 54157 */ {(14<<2)|2,{78,72,0}}, +/* 54158 */ {(14<<2)|2,{78,72,0}}, +/* 54159 */ {(14<<2)|2,{78,72,0}}, +/* 54160 */ {(14<<2)|2,{78,73,0}}, +/* 54161 */ {(14<<2)|2,{78,73,0}}, +/* 54162 */ {(14<<2)|2,{78,73,0}}, +/* 54163 */ {(14<<2)|2,{78,73,0}}, +/* 54164 */ {(14<<2)|2,{78,74,0}}, +/* 54165 */ {(14<<2)|2,{78,74,0}}, +/* 54166 */ {(14<<2)|2,{78,74,0}}, +/* 54167 */ {(14<<2)|2,{78,74,0}}, +/* 54168 */ {(14<<2)|2,{78,75,0}}, +/* 54169 */ {(14<<2)|2,{78,75,0}}, +/* 54170 */ {(14<<2)|2,{78,75,0}}, +/* 54171 */ {(14<<2)|2,{78,75,0}}, +/* 54172 */ {(14<<2)|2,{78,76,0}}, +/* 54173 */ {(14<<2)|2,{78,76,0}}, +/* 54174 */ {(14<<2)|2,{78,76,0}}, +/* 54175 */ {(14<<2)|2,{78,76,0}}, +/* 54176 */ {(14<<2)|2,{78,77,0}}, +/* 54177 */ {(14<<2)|2,{78,77,0}}, +/* 54178 */ {(14<<2)|2,{78,77,0}}, +/* 54179 */ {(14<<2)|2,{78,77,0}}, +/* 54180 */ {(14<<2)|2,{78,78,0}}, +/* 54181 */ {(14<<2)|2,{78,78,0}}, +/* 54182 */ {(14<<2)|2,{78,78,0}}, +/* 54183 */ {(14<<2)|2,{78,78,0}}, +/* 54184 */ {(14<<2)|2,{78,79,0}}, +/* 54185 */ {(14<<2)|2,{78,79,0}}, +/* 54186 */ {(14<<2)|2,{78,79,0}}, +/* 54187 */ {(14<<2)|2,{78,79,0}}, +/* 54188 */ {(14<<2)|2,{78,80,0}}, +/* 54189 */ {(14<<2)|2,{78,80,0}}, +/* 54190 */ {(14<<2)|2,{78,80,0}}, +/* 54191 */ {(14<<2)|2,{78,80,0}}, +/* 54192 */ {(14<<2)|2,{78,81,0}}, +/* 54193 */ {(14<<2)|2,{78,81,0}}, +/* 54194 */ {(14<<2)|2,{78,81,0}}, +/* 54195 */ {(14<<2)|2,{78,81,0}}, +/* 54196 */ {(14<<2)|2,{78,82,0}}, +/* 54197 */ {(14<<2)|2,{78,82,0}}, +/* 54198 */ {(14<<2)|2,{78,82,0}}, +/* 54199 */ {(14<<2)|2,{78,82,0}}, +/* 54200 */ {(14<<2)|2,{78,83,0}}, +/* 54201 */ {(14<<2)|2,{78,83,0}}, +/* 54202 */ {(14<<2)|2,{78,83,0}}, +/* 54203 */ {(14<<2)|2,{78,83,0}}, +/* 54204 */ {(14<<2)|2,{78,84,0}}, +/* 54205 */ {(14<<2)|2,{78,84,0}}, +/* 54206 */ {(14<<2)|2,{78,84,0}}, +/* 54207 */ {(14<<2)|2,{78,84,0}}, +/* 54208 */ {(14<<2)|2,{78,85,0}}, +/* 54209 */ {(14<<2)|2,{78,85,0}}, +/* 54210 */ {(14<<2)|2,{78,85,0}}, +/* 54211 */ {(14<<2)|2,{78,85,0}}, +/* 54212 */ {(14<<2)|2,{78,86,0}}, +/* 54213 */ {(14<<2)|2,{78,86,0}}, +/* 54214 */ {(14<<2)|2,{78,86,0}}, +/* 54215 */ {(14<<2)|2,{78,86,0}}, +/* 54216 */ {(14<<2)|2,{78,87,0}}, +/* 54217 */ {(14<<2)|2,{78,87,0}}, +/* 54218 */ {(14<<2)|2,{78,87,0}}, +/* 54219 */ {(14<<2)|2,{78,87,0}}, +/* 54220 */ {(14<<2)|2,{78,89,0}}, +/* 54221 */ {(14<<2)|2,{78,89,0}}, +/* 54222 */ {(14<<2)|2,{78,89,0}}, +/* 54223 */ {(14<<2)|2,{78,89,0}}, +/* 54224 */ {(14<<2)|2,{78,106,0}}, +/* 54225 */ {(14<<2)|2,{78,106,0}}, +/* 54226 */ {(14<<2)|2,{78,106,0}}, +/* 54227 */ {(14<<2)|2,{78,106,0}}, +/* 54228 */ {(14<<2)|2,{78,107,0}}, +/* 54229 */ {(14<<2)|2,{78,107,0}}, +/* 54230 */ {(14<<2)|2,{78,107,0}}, +/* 54231 */ {(14<<2)|2,{78,107,0}}, +/* 54232 */ {(14<<2)|2,{78,113,0}}, +/* 54233 */ {(14<<2)|2,{78,113,0}}, +/* 54234 */ {(14<<2)|2,{78,113,0}}, +/* 54235 */ {(14<<2)|2,{78,113,0}}, +/* 54236 */ {(14<<2)|2,{78,118,0}}, +/* 54237 */ {(14<<2)|2,{78,118,0}}, +/* 54238 */ {(14<<2)|2,{78,118,0}}, +/* 54239 */ {(14<<2)|2,{78,118,0}}, +/* 54240 */ {(14<<2)|2,{78,119,0}}, +/* 54241 */ {(14<<2)|2,{78,119,0}}, +/* 54242 */ {(14<<2)|2,{78,119,0}}, +/* 54243 */ {(14<<2)|2,{78,119,0}}, +/* 54244 */ {(14<<2)|2,{78,120,0}}, +/* 54245 */ {(14<<2)|2,{78,120,0}}, +/* 54246 */ {(14<<2)|2,{78,120,0}}, +/* 54247 */ {(14<<2)|2,{78,120,0}}, +/* 54248 */ {(14<<2)|2,{78,121,0}}, +/* 54249 */ {(14<<2)|2,{78,121,0}}, +/* 54250 */ {(14<<2)|2,{78,121,0}}, +/* 54251 */ {(14<<2)|2,{78,121,0}}, +/* 54252 */ {(14<<2)|2,{78,122,0}}, +/* 54253 */ {(14<<2)|2,{78,122,0}}, +/* 54254 */ {(14<<2)|2,{78,122,0}}, +/* 54255 */ {(14<<2)|2,{78,122,0}}, +/* 54256 */ {(15<<2)|2,{78,38,0}}, +/* 54257 */ {(15<<2)|2,{78,38,0}}, +/* 54258 */ {(15<<2)|2,{78,42,0}}, +/* 54259 */ {(15<<2)|2,{78,42,0}}, +/* 54260 */ {(15<<2)|2,{78,44,0}}, +/* 54261 */ {(15<<2)|2,{78,44,0}}, +/* 54262 */ {(15<<2)|2,{78,59,0}}, +/* 54263 */ {(15<<2)|2,{78,59,0}}, +/* 54264 */ {(15<<2)|2,{78,88,0}}, +/* 54265 */ {(15<<2)|2,{78,88,0}}, +/* 54266 */ {(15<<2)|2,{78,90,0}}, +/* 54267 */ {(15<<2)|2,{78,90,0}}, +/* 54268 */ {(7<<2)|1,{78,0,0}}, +/* 54269 */ {(7<<2)|1,{78,0,0}}, +/* 54270 */ {(7<<2)|1,{78,0,0}}, +/* 54271 */ {(7<<2)|1,{78,0,0}}, +/* 54272 */ {(12<<2)|2,{79,48,0}}, +/* 54273 */ {(12<<2)|2,{79,48,0}}, +/* 54274 */ {(12<<2)|2,{79,48,0}}, +/* 54275 */ {(12<<2)|2,{79,48,0}}, +/* 54276 */ {(12<<2)|2,{79,48,0}}, +/* 54277 */ {(12<<2)|2,{79,48,0}}, +/* 54278 */ {(12<<2)|2,{79,48,0}}, +/* 54279 */ {(12<<2)|2,{79,48,0}}, +/* 54280 */ {(12<<2)|2,{79,48,0}}, +/* 54281 */ {(12<<2)|2,{79,48,0}}, +/* 54282 */ {(12<<2)|2,{79,48,0}}, +/* 54283 */ {(12<<2)|2,{79,48,0}}, +/* 54284 */ {(12<<2)|2,{79,48,0}}, +/* 54285 */ {(12<<2)|2,{79,48,0}}, +/* 54286 */ {(12<<2)|2,{79,48,0}}, +/* 54287 */ {(12<<2)|2,{79,48,0}}, +/* 54288 */ {(12<<2)|2,{79,49,0}}, +/* 54289 */ {(12<<2)|2,{79,49,0}}, +/* 54290 */ {(12<<2)|2,{79,49,0}}, +/* 54291 */ {(12<<2)|2,{79,49,0}}, +/* 54292 */ {(12<<2)|2,{79,49,0}}, +/* 54293 */ {(12<<2)|2,{79,49,0}}, +/* 54294 */ {(12<<2)|2,{79,49,0}}, +/* 54295 */ {(12<<2)|2,{79,49,0}}, +/* 54296 */ {(12<<2)|2,{79,49,0}}, +/* 54297 */ {(12<<2)|2,{79,49,0}}, +/* 54298 */ {(12<<2)|2,{79,49,0}}, +/* 54299 */ {(12<<2)|2,{79,49,0}}, +/* 54300 */ {(12<<2)|2,{79,49,0}}, +/* 54301 */ {(12<<2)|2,{79,49,0}}, +/* 54302 */ {(12<<2)|2,{79,49,0}}, +/* 54303 */ {(12<<2)|2,{79,49,0}}, +/* 54304 */ {(12<<2)|2,{79,50,0}}, +/* 54305 */ {(12<<2)|2,{79,50,0}}, +/* 54306 */ {(12<<2)|2,{79,50,0}}, +/* 54307 */ {(12<<2)|2,{79,50,0}}, +/* 54308 */ {(12<<2)|2,{79,50,0}}, +/* 54309 */ {(12<<2)|2,{79,50,0}}, +/* 54310 */ {(12<<2)|2,{79,50,0}}, +/* 54311 */ {(12<<2)|2,{79,50,0}}, +/* 54312 */ {(12<<2)|2,{79,50,0}}, +/* 54313 */ {(12<<2)|2,{79,50,0}}, +/* 54314 */ {(12<<2)|2,{79,50,0}}, +/* 54315 */ {(12<<2)|2,{79,50,0}}, +/* 54316 */ {(12<<2)|2,{79,50,0}}, +/* 54317 */ {(12<<2)|2,{79,50,0}}, +/* 54318 */ {(12<<2)|2,{79,50,0}}, +/* 54319 */ {(12<<2)|2,{79,50,0}}, +/* 54320 */ {(12<<2)|2,{79,97,0}}, +/* 54321 */ {(12<<2)|2,{79,97,0}}, +/* 54322 */ {(12<<2)|2,{79,97,0}}, +/* 54323 */ {(12<<2)|2,{79,97,0}}, +/* 54324 */ {(12<<2)|2,{79,97,0}}, +/* 54325 */ {(12<<2)|2,{79,97,0}}, +/* 54326 */ {(12<<2)|2,{79,97,0}}, +/* 54327 */ {(12<<2)|2,{79,97,0}}, +/* 54328 */ {(12<<2)|2,{79,97,0}}, +/* 54329 */ {(12<<2)|2,{79,97,0}}, +/* 54330 */ {(12<<2)|2,{79,97,0}}, +/* 54331 */ {(12<<2)|2,{79,97,0}}, +/* 54332 */ {(12<<2)|2,{79,97,0}}, +/* 54333 */ {(12<<2)|2,{79,97,0}}, +/* 54334 */ {(12<<2)|2,{79,97,0}}, +/* 54335 */ {(12<<2)|2,{79,97,0}}, +/* 54336 */ {(12<<2)|2,{79,99,0}}, +/* 54337 */ {(12<<2)|2,{79,99,0}}, +/* 54338 */ {(12<<2)|2,{79,99,0}}, +/* 54339 */ {(12<<2)|2,{79,99,0}}, +/* 54340 */ {(12<<2)|2,{79,99,0}}, +/* 54341 */ {(12<<2)|2,{79,99,0}}, +/* 54342 */ {(12<<2)|2,{79,99,0}}, +/* 54343 */ {(12<<2)|2,{79,99,0}}, +/* 54344 */ {(12<<2)|2,{79,99,0}}, +/* 54345 */ {(12<<2)|2,{79,99,0}}, +/* 54346 */ {(12<<2)|2,{79,99,0}}, +/* 54347 */ {(12<<2)|2,{79,99,0}}, +/* 54348 */ {(12<<2)|2,{79,99,0}}, +/* 54349 */ {(12<<2)|2,{79,99,0}}, +/* 54350 */ {(12<<2)|2,{79,99,0}}, +/* 54351 */ {(12<<2)|2,{79,99,0}}, +/* 54352 */ {(12<<2)|2,{79,101,0}}, +/* 54353 */ {(12<<2)|2,{79,101,0}}, +/* 54354 */ {(12<<2)|2,{79,101,0}}, +/* 54355 */ {(12<<2)|2,{79,101,0}}, +/* 54356 */ {(12<<2)|2,{79,101,0}}, +/* 54357 */ {(12<<2)|2,{79,101,0}}, +/* 54358 */ {(12<<2)|2,{79,101,0}}, +/* 54359 */ {(12<<2)|2,{79,101,0}}, +/* 54360 */ {(12<<2)|2,{79,101,0}}, +/* 54361 */ {(12<<2)|2,{79,101,0}}, +/* 54362 */ {(12<<2)|2,{79,101,0}}, +/* 54363 */ {(12<<2)|2,{79,101,0}}, +/* 54364 */ {(12<<2)|2,{79,101,0}}, +/* 54365 */ {(12<<2)|2,{79,101,0}}, +/* 54366 */ {(12<<2)|2,{79,101,0}}, +/* 54367 */ {(12<<2)|2,{79,101,0}}, +/* 54368 */ {(12<<2)|2,{79,105,0}}, +/* 54369 */ {(12<<2)|2,{79,105,0}}, +/* 54370 */ {(12<<2)|2,{79,105,0}}, +/* 54371 */ {(12<<2)|2,{79,105,0}}, +/* 54372 */ {(12<<2)|2,{79,105,0}}, +/* 54373 */ {(12<<2)|2,{79,105,0}}, +/* 54374 */ {(12<<2)|2,{79,105,0}}, +/* 54375 */ {(12<<2)|2,{79,105,0}}, +/* 54376 */ {(12<<2)|2,{79,105,0}}, +/* 54377 */ {(12<<2)|2,{79,105,0}}, +/* 54378 */ {(12<<2)|2,{79,105,0}}, +/* 54379 */ {(12<<2)|2,{79,105,0}}, +/* 54380 */ {(12<<2)|2,{79,105,0}}, +/* 54381 */ {(12<<2)|2,{79,105,0}}, +/* 54382 */ {(12<<2)|2,{79,105,0}}, +/* 54383 */ {(12<<2)|2,{79,105,0}}, +/* 54384 */ {(12<<2)|2,{79,111,0}}, +/* 54385 */ {(12<<2)|2,{79,111,0}}, +/* 54386 */ {(12<<2)|2,{79,111,0}}, +/* 54387 */ {(12<<2)|2,{79,111,0}}, +/* 54388 */ {(12<<2)|2,{79,111,0}}, +/* 54389 */ {(12<<2)|2,{79,111,0}}, +/* 54390 */ {(12<<2)|2,{79,111,0}}, +/* 54391 */ {(12<<2)|2,{79,111,0}}, +/* 54392 */ {(12<<2)|2,{79,111,0}}, +/* 54393 */ {(12<<2)|2,{79,111,0}}, +/* 54394 */ {(12<<2)|2,{79,111,0}}, +/* 54395 */ {(12<<2)|2,{79,111,0}}, +/* 54396 */ {(12<<2)|2,{79,111,0}}, +/* 54397 */ {(12<<2)|2,{79,111,0}}, +/* 54398 */ {(12<<2)|2,{79,111,0}}, +/* 54399 */ {(12<<2)|2,{79,111,0}}, +/* 54400 */ {(12<<2)|2,{79,115,0}}, +/* 54401 */ {(12<<2)|2,{79,115,0}}, +/* 54402 */ {(12<<2)|2,{79,115,0}}, +/* 54403 */ {(12<<2)|2,{79,115,0}}, +/* 54404 */ {(12<<2)|2,{79,115,0}}, +/* 54405 */ {(12<<2)|2,{79,115,0}}, +/* 54406 */ {(12<<2)|2,{79,115,0}}, +/* 54407 */ {(12<<2)|2,{79,115,0}}, +/* 54408 */ {(12<<2)|2,{79,115,0}}, +/* 54409 */ {(12<<2)|2,{79,115,0}}, +/* 54410 */ {(12<<2)|2,{79,115,0}}, +/* 54411 */ {(12<<2)|2,{79,115,0}}, +/* 54412 */ {(12<<2)|2,{79,115,0}}, +/* 54413 */ {(12<<2)|2,{79,115,0}}, +/* 54414 */ {(12<<2)|2,{79,115,0}}, +/* 54415 */ {(12<<2)|2,{79,115,0}}, +/* 54416 */ {(12<<2)|2,{79,116,0}}, +/* 54417 */ {(12<<2)|2,{79,116,0}}, +/* 54418 */ {(12<<2)|2,{79,116,0}}, +/* 54419 */ {(12<<2)|2,{79,116,0}}, +/* 54420 */ {(12<<2)|2,{79,116,0}}, +/* 54421 */ {(12<<2)|2,{79,116,0}}, +/* 54422 */ {(12<<2)|2,{79,116,0}}, +/* 54423 */ {(12<<2)|2,{79,116,0}}, +/* 54424 */ {(12<<2)|2,{79,116,0}}, +/* 54425 */ {(12<<2)|2,{79,116,0}}, +/* 54426 */ {(12<<2)|2,{79,116,0}}, +/* 54427 */ {(12<<2)|2,{79,116,0}}, +/* 54428 */ {(12<<2)|2,{79,116,0}}, +/* 54429 */ {(12<<2)|2,{79,116,0}}, +/* 54430 */ {(12<<2)|2,{79,116,0}}, +/* 54431 */ {(12<<2)|2,{79,116,0}}, +/* 54432 */ {(13<<2)|2,{79,32,0}}, +/* 54433 */ {(13<<2)|2,{79,32,0}}, +/* 54434 */ {(13<<2)|2,{79,32,0}}, +/* 54435 */ {(13<<2)|2,{79,32,0}}, +/* 54436 */ {(13<<2)|2,{79,32,0}}, +/* 54437 */ {(13<<2)|2,{79,32,0}}, +/* 54438 */ {(13<<2)|2,{79,32,0}}, +/* 54439 */ {(13<<2)|2,{79,32,0}}, +/* 54440 */ {(13<<2)|2,{79,37,0}}, +/* 54441 */ {(13<<2)|2,{79,37,0}}, +/* 54442 */ {(13<<2)|2,{79,37,0}}, +/* 54443 */ {(13<<2)|2,{79,37,0}}, +/* 54444 */ {(13<<2)|2,{79,37,0}}, +/* 54445 */ {(13<<2)|2,{79,37,0}}, +/* 54446 */ {(13<<2)|2,{79,37,0}}, +/* 54447 */ {(13<<2)|2,{79,37,0}}, +/* 54448 */ {(13<<2)|2,{79,45,0}}, +/* 54449 */ {(13<<2)|2,{79,45,0}}, +/* 54450 */ {(13<<2)|2,{79,45,0}}, +/* 54451 */ {(13<<2)|2,{79,45,0}}, +/* 54452 */ {(13<<2)|2,{79,45,0}}, +/* 54453 */ {(13<<2)|2,{79,45,0}}, +/* 54454 */ {(13<<2)|2,{79,45,0}}, +/* 54455 */ {(13<<2)|2,{79,45,0}}, +/* 54456 */ {(13<<2)|2,{79,46,0}}, +/* 54457 */ {(13<<2)|2,{79,46,0}}, +/* 54458 */ {(13<<2)|2,{79,46,0}}, +/* 54459 */ {(13<<2)|2,{79,46,0}}, +/* 54460 */ {(13<<2)|2,{79,46,0}}, +/* 54461 */ {(13<<2)|2,{79,46,0}}, +/* 54462 */ {(13<<2)|2,{79,46,0}}, +/* 54463 */ {(13<<2)|2,{79,46,0}}, +/* 54464 */ {(13<<2)|2,{79,47,0}}, +/* 54465 */ {(13<<2)|2,{79,47,0}}, +/* 54466 */ {(13<<2)|2,{79,47,0}}, +/* 54467 */ {(13<<2)|2,{79,47,0}}, +/* 54468 */ {(13<<2)|2,{79,47,0}}, +/* 54469 */ {(13<<2)|2,{79,47,0}}, +/* 54470 */ {(13<<2)|2,{79,47,0}}, +/* 54471 */ {(13<<2)|2,{79,47,0}}, +/* 54472 */ {(13<<2)|2,{79,51,0}}, +/* 54473 */ {(13<<2)|2,{79,51,0}}, +/* 54474 */ {(13<<2)|2,{79,51,0}}, +/* 54475 */ {(13<<2)|2,{79,51,0}}, +/* 54476 */ {(13<<2)|2,{79,51,0}}, +/* 54477 */ {(13<<2)|2,{79,51,0}}, +/* 54478 */ {(13<<2)|2,{79,51,0}}, +/* 54479 */ {(13<<2)|2,{79,51,0}}, +/* 54480 */ {(13<<2)|2,{79,52,0}}, +/* 54481 */ {(13<<2)|2,{79,52,0}}, +/* 54482 */ {(13<<2)|2,{79,52,0}}, +/* 54483 */ {(13<<2)|2,{79,52,0}}, +/* 54484 */ {(13<<2)|2,{79,52,0}}, +/* 54485 */ {(13<<2)|2,{79,52,0}}, +/* 54486 */ {(13<<2)|2,{79,52,0}}, +/* 54487 */ {(13<<2)|2,{79,52,0}}, +/* 54488 */ {(13<<2)|2,{79,53,0}}, +/* 54489 */ {(13<<2)|2,{79,53,0}}, +/* 54490 */ {(13<<2)|2,{79,53,0}}, +/* 54491 */ {(13<<2)|2,{79,53,0}}, +/* 54492 */ {(13<<2)|2,{79,53,0}}, +/* 54493 */ {(13<<2)|2,{79,53,0}}, +/* 54494 */ {(13<<2)|2,{79,53,0}}, +/* 54495 */ {(13<<2)|2,{79,53,0}}, +/* 54496 */ {(13<<2)|2,{79,54,0}}, +/* 54497 */ {(13<<2)|2,{79,54,0}}, +/* 54498 */ {(13<<2)|2,{79,54,0}}, +/* 54499 */ {(13<<2)|2,{79,54,0}}, +/* 54500 */ {(13<<2)|2,{79,54,0}}, +/* 54501 */ {(13<<2)|2,{79,54,0}}, +/* 54502 */ {(13<<2)|2,{79,54,0}}, +/* 54503 */ {(13<<2)|2,{79,54,0}}, +/* 54504 */ {(13<<2)|2,{79,55,0}}, +/* 54505 */ {(13<<2)|2,{79,55,0}}, +/* 54506 */ {(13<<2)|2,{79,55,0}}, +/* 54507 */ {(13<<2)|2,{79,55,0}}, +/* 54508 */ {(13<<2)|2,{79,55,0}}, +/* 54509 */ {(13<<2)|2,{79,55,0}}, +/* 54510 */ {(13<<2)|2,{79,55,0}}, +/* 54511 */ {(13<<2)|2,{79,55,0}}, +/* 54512 */ {(13<<2)|2,{79,56,0}}, +/* 54513 */ {(13<<2)|2,{79,56,0}}, +/* 54514 */ {(13<<2)|2,{79,56,0}}, +/* 54515 */ {(13<<2)|2,{79,56,0}}, +/* 54516 */ {(13<<2)|2,{79,56,0}}, +/* 54517 */ {(13<<2)|2,{79,56,0}}, +/* 54518 */ {(13<<2)|2,{79,56,0}}, +/* 54519 */ {(13<<2)|2,{79,56,0}}, +/* 54520 */ {(13<<2)|2,{79,57,0}}, +/* 54521 */ {(13<<2)|2,{79,57,0}}, +/* 54522 */ {(13<<2)|2,{79,57,0}}, +/* 54523 */ {(13<<2)|2,{79,57,0}}, +/* 54524 */ {(13<<2)|2,{79,57,0}}, +/* 54525 */ {(13<<2)|2,{79,57,0}}, +/* 54526 */ {(13<<2)|2,{79,57,0}}, +/* 54527 */ {(13<<2)|2,{79,57,0}}, +/* 54528 */ {(13<<2)|2,{79,61,0}}, +/* 54529 */ {(13<<2)|2,{79,61,0}}, +/* 54530 */ {(13<<2)|2,{79,61,0}}, +/* 54531 */ {(13<<2)|2,{79,61,0}}, +/* 54532 */ {(13<<2)|2,{79,61,0}}, +/* 54533 */ {(13<<2)|2,{79,61,0}}, +/* 54534 */ {(13<<2)|2,{79,61,0}}, +/* 54535 */ {(13<<2)|2,{79,61,0}}, +/* 54536 */ {(13<<2)|2,{79,65,0}}, +/* 54537 */ {(13<<2)|2,{79,65,0}}, +/* 54538 */ {(13<<2)|2,{79,65,0}}, +/* 54539 */ {(13<<2)|2,{79,65,0}}, +/* 54540 */ {(13<<2)|2,{79,65,0}}, +/* 54541 */ {(13<<2)|2,{79,65,0}}, +/* 54542 */ {(13<<2)|2,{79,65,0}}, +/* 54543 */ {(13<<2)|2,{79,65,0}}, +/* 54544 */ {(13<<2)|2,{79,95,0}}, +/* 54545 */ {(13<<2)|2,{79,95,0}}, +/* 54546 */ {(13<<2)|2,{79,95,0}}, +/* 54547 */ {(13<<2)|2,{79,95,0}}, +/* 54548 */ {(13<<2)|2,{79,95,0}}, +/* 54549 */ {(13<<2)|2,{79,95,0}}, +/* 54550 */ {(13<<2)|2,{79,95,0}}, +/* 54551 */ {(13<<2)|2,{79,95,0}}, +/* 54552 */ {(13<<2)|2,{79,98,0}}, +/* 54553 */ {(13<<2)|2,{79,98,0}}, +/* 54554 */ {(13<<2)|2,{79,98,0}}, +/* 54555 */ {(13<<2)|2,{79,98,0}}, +/* 54556 */ {(13<<2)|2,{79,98,0}}, +/* 54557 */ {(13<<2)|2,{79,98,0}}, +/* 54558 */ {(13<<2)|2,{79,98,0}}, +/* 54559 */ {(13<<2)|2,{79,98,0}}, +/* 54560 */ {(13<<2)|2,{79,100,0}}, +/* 54561 */ {(13<<2)|2,{79,100,0}}, +/* 54562 */ {(13<<2)|2,{79,100,0}}, +/* 54563 */ {(13<<2)|2,{79,100,0}}, +/* 54564 */ {(13<<2)|2,{79,100,0}}, +/* 54565 */ {(13<<2)|2,{79,100,0}}, +/* 54566 */ {(13<<2)|2,{79,100,0}}, +/* 54567 */ {(13<<2)|2,{79,100,0}}, +/* 54568 */ {(13<<2)|2,{79,102,0}}, +/* 54569 */ {(13<<2)|2,{79,102,0}}, +/* 54570 */ {(13<<2)|2,{79,102,0}}, +/* 54571 */ {(13<<2)|2,{79,102,0}}, +/* 54572 */ {(13<<2)|2,{79,102,0}}, +/* 54573 */ {(13<<2)|2,{79,102,0}}, +/* 54574 */ {(13<<2)|2,{79,102,0}}, +/* 54575 */ {(13<<2)|2,{79,102,0}}, +/* 54576 */ {(13<<2)|2,{79,103,0}}, +/* 54577 */ {(13<<2)|2,{79,103,0}}, +/* 54578 */ {(13<<2)|2,{79,103,0}}, +/* 54579 */ {(13<<2)|2,{79,103,0}}, +/* 54580 */ {(13<<2)|2,{79,103,0}}, +/* 54581 */ {(13<<2)|2,{79,103,0}}, +/* 54582 */ {(13<<2)|2,{79,103,0}}, +/* 54583 */ {(13<<2)|2,{79,103,0}}, +/* 54584 */ {(13<<2)|2,{79,104,0}}, +/* 54585 */ {(13<<2)|2,{79,104,0}}, +/* 54586 */ {(13<<2)|2,{79,104,0}}, +/* 54587 */ {(13<<2)|2,{79,104,0}}, +/* 54588 */ {(13<<2)|2,{79,104,0}}, +/* 54589 */ {(13<<2)|2,{79,104,0}}, +/* 54590 */ {(13<<2)|2,{79,104,0}}, +/* 54591 */ {(13<<2)|2,{79,104,0}}, +/* 54592 */ {(13<<2)|2,{79,108,0}}, +/* 54593 */ {(13<<2)|2,{79,108,0}}, +/* 54594 */ {(13<<2)|2,{79,108,0}}, +/* 54595 */ {(13<<2)|2,{79,108,0}}, +/* 54596 */ {(13<<2)|2,{79,108,0}}, +/* 54597 */ {(13<<2)|2,{79,108,0}}, +/* 54598 */ {(13<<2)|2,{79,108,0}}, +/* 54599 */ {(13<<2)|2,{79,108,0}}, +/* 54600 */ {(13<<2)|2,{79,109,0}}, +/* 54601 */ {(13<<2)|2,{79,109,0}}, +/* 54602 */ {(13<<2)|2,{79,109,0}}, +/* 54603 */ {(13<<2)|2,{79,109,0}}, +/* 54604 */ {(13<<2)|2,{79,109,0}}, +/* 54605 */ {(13<<2)|2,{79,109,0}}, +/* 54606 */ {(13<<2)|2,{79,109,0}}, +/* 54607 */ {(13<<2)|2,{79,109,0}}, +/* 54608 */ {(13<<2)|2,{79,110,0}}, +/* 54609 */ {(13<<2)|2,{79,110,0}}, +/* 54610 */ {(13<<2)|2,{79,110,0}}, +/* 54611 */ {(13<<2)|2,{79,110,0}}, +/* 54612 */ {(13<<2)|2,{79,110,0}}, +/* 54613 */ {(13<<2)|2,{79,110,0}}, +/* 54614 */ {(13<<2)|2,{79,110,0}}, +/* 54615 */ {(13<<2)|2,{79,110,0}}, +/* 54616 */ {(13<<2)|2,{79,112,0}}, +/* 54617 */ {(13<<2)|2,{79,112,0}}, +/* 54618 */ {(13<<2)|2,{79,112,0}}, +/* 54619 */ {(13<<2)|2,{79,112,0}}, +/* 54620 */ {(13<<2)|2,{79,112,0}}, +/* 54621 */ {(13<<2)|2,{79,112,0}}, +/* 54622 */ {(13<<2)|2,{79,112,0}}, +/* 54623 */ {(13<<2)|2,{79,112,0}}, +/* 54624 */ {(13<<2)|2,{79,114,0}}, +/* 54625 */ {(13<<2)|2,{79,114,0}}, +/* 54626 */ {(13<<2)|2,{79,114,0}}, +/* 54627 */ {(13<<2)|2,{79,114,0}}, +/* 54628 */ {(13<<2)|2,{79,114,0}}, +/* 54629 */ {(13<<2)|2,{79,114,0}}, +/* 54630 */ {(13<<2)|2,{79,114,0}}, +/* 54631 */ {(13<<2)|2,{79,114,0}}, +/* 54632 */ {(13<<2)|2,{79,117,0}}, +/* 54633 */ {(13<<2)|2,{79,117,0}}, +/* 54634 */ {(13<<2)|2,{79,117,0}}, +/* 54635 */ {(13<<2)|2,{79,117,0}}, +/* 54636 */ {(13<<2)|2,{79,117,0}}, +/* 54637 */ {(13<<2)|2,{79,117,0}}, +/* 54638 */ {(13<<2)|2,{79,117,0}}, +/* 54639 */ {(13<<2)|2,{79,117,0}}, +/* 54640 */ {(14<<2)|2,{79,58,0}}, +/* 54641 */ {(14<<2)|2,{79,58,0}}, +/* 54642 */ {(14<<2)|2,{79,58,0}}, +/* 54643 */ {(14<<2)|2,{79,58,0}}, +/* 54644 */ {(14<<2)|2,{79,66,0}}, +/* 54645 */ {(14<<2)|2,{79,66,0}}, +/* 54646 */ {(14<<2)|2,{79,66,0}}, +/* 54647 */ {(14<<2)|2,{79,66,0}}, +/* 54648 */ {(14<<2)|2,{79,67,0}}, +/* 54649 */ {(14<<2)|2,{79,67,0}}, +/* 54650 */ {(14<<2)|2,{79,67,0}}, +/* 54651 */ {(14<<2)|2,{79,67,0}}, +/* 54652 */ {(14<<2)|2,{79,68,0}}, +/* 54653 */ {(14<<2)|2,{79,68,0}}, +/* 54654 */ {(14<<2)|2,{79,68,0}}, +/* 54655 */ {(14<<2)|2,{79,68,0}}, +/* 54656 */ {(14<<2)|2,{79,69,0}}, +/* 54657 */ {(14<<2)|2,{79,69,0}}, +/* 54658 */ {(14<<2)|2,{79,69,0}}, +/* 54659 */ {(14<<2)|2,{79,69,0}}, +/* 54660 */ {(14<<2)|2,{79,70,0}}, +/* 54661 */ {(14<<2)|2,{79,70,0}}, +/* 54662 */ {(14<<2)|2,{79,70,0}}, +/* 54663 */ {(14<<2)|2,{79,70,0}}, +/* 54664 */ {(14<<2)|2,{79,71,0}}, +/* 54665 */ {(14<<2)|2,{79,71,0}}, +/* 54666 */ {(14<<2)|2,{79,71,0}}, +/* 54667 */ {(14<<2)|2,{79,71,0}}, +/* 54668 */ {(14<<2)|2,{79,72,0}}, +/* 54669 */ {(14<<2)|2,{79,72,0}}, +/* 54670 */ {(14<<2)|2,{79,72,0}}, +/* 54671 */ {(14<<2)|2,{79,72,0}}, +/* 54672 */ {(14<<2)|2,{79,73,0}}, +/* 54673 */ {(14<<2)|2,{79,73,0}}, +/* 54674 */ {(14<<2)|2,{79,73,0}}, +/* 54675 */ {(14<<2)|2,{79,73,0}}, +/* 54676 */ {(14<<2)|2,{79,74,0}}, +/* 54677 */ {(14<<2)|2,{79,74,0}}, +/* 54678 */ {(14<<2)|2,{79,74,0}}, +/* 54679 */ {(14<<2)|2,{79,74,0}}, +/* 54680 */ {(14<<2)|2,{79,75,0}}, +/* 54681 */ {(14<<2)|2,{79,75,0}}, +/* 54682 */ {(14<<2)|2,{79,75,0}}, +/* 54683 */ {(14<<2)|2,{79,75,0}}, +/* 54684 */ {(14<<2)|2,{79,76,0}}, +/* 54685 */ {(14<<2)|2,{79,76,0}}, +/* 54686 */ {(14<<2)|2,{79,76,0}}, +/* 54687 */ {(14<<2)|2,{79,76,0}}, +/* 54688 */ {(14<<2)|2,{79,77,0}}, +/* 54689 */ {(14<<2)|2,{79,77,0}}, +/* 54690 */ {(14<<2)|2,{79,77,0}}, +/* 54691 */ {(14<<2)|2,{79,77,0}}, +/* 54692 */ {(14<<2)|2,{79,78,0}}, +/* 54693 */ {(14<<2)|2,{79,78,0}}, +/* 54694 */ {(14<<2)|2,{79,78,0}}, +/* 54695 */ {(14<<2)|2,{79,78,0}}, +/* 54696 */ {(14<<2)|2,{79,79,0}}, +/* 54697 */ {(14<<2)|2,{79,79,0}}, +/* 54698 */ {(14<<2)|2,{79,79,0}}, +/* 54699 */ {(14<<2)|2,{79,79,0}}, +/* 54700 */ {(14<<2)|2,{79,80,0}}, +/* 54701 */ {(14<<2)|2,{79,80,0}}, +/* 54702 */ {(14<<2)|2,{79,80,0}}, +/* 54703 */ {(14<<2)|2,{79,80,0}}, +/* 54704 */ {(14<<2)|2,{79,81,0}}, +/* 54705 */ {(14<<2)|2,{79,81,0}}, +/* 54706 */ {(14<<2)|2,{79,81,0}}, +/* 54707 */ {(14<<2)|2,{79,81,0}}, +/* 54708 */ {(14<<2)|2,{79,82,0}}, +/* 54709 */ {(14<<2)|2,{79,82,0}}, +/* 54710 */ {(14<<2)|2,{79,82,0}}, +/* 54711 */ {(14<<2)|2,{79,82,0}}, +/* 54712 */ {(14<<2)|2,{79,83,0}}, +/* 54713 */ {(14<<2)|2,{79,83,0}}, +/* 54714 */ {(14<<2)|2,{79,83,0}}, +/* 54715 */ {(14<<2)|2,{79,83,0}}, +/* 54716 */ {(14<<2)|2,{79,84,0}}, +/* 54717 */ {(14<<2)|2,{79,84,0}}, +/* 54718 */ {(14<<2)|2,{79,84,0}}, +/* 54719 */ {(14<<2)|2,{79,84,0}}, +/* 54720 */ {(14<<2)|2,{79,85,0}}, +/* 54721 */ {(14<<2)|2,{79,85,0}}, +/* 54722 */ {(14<<2)|2,{79,85,0}}, +/* 54723 */ {(14<<2)|2,{79,85,0}}, +/* 54724 */ {(14<<2)|2,{79,86,0}}, +/* 54725 */ {(14<<2)|2,{79,86,0}}, +/* 54726 */ {(14<<2)|2,{79,86,0}}, +/* 54727 */ {(14<<2)|2,{79,86,0}}, +/* 54728 */ {(14<<2)|2,{79,87,0}}, +/* 54729 */ {(14<<2)|2,{79,87,0}}, +/* 54730 */ {(14<<2)|2,{79,87,0}}, +/* 54731 */ {(14<<2)|2,{79,87,0}}, +/* 54732 */ {(14<<2)|2,{79,89,0}}, +/* 54733 */ {(14<<2)|2,{79,89,0}}, +/* 54734 */ {(14<<2)|2,{79,89,0}}, +/* 54735 */ {(14<<2)|2,{79,89,0}}, +/* 54736 */ {(14<<2)|2,{79,106,0}}, +/* 54737 */ {(14<<2)|2,{79,106,0}}, +/* 54738 */ {(14<<2)|2,{79,106,0}}, +/* 54739 */ {(14<<2)|2,{79,106,0}}, +/* 54740 */ {(14<<2)|2,{79,107,0}}, +/* 54741 */ {(14<<2)|2,{79,107,0}}, +/* 54742 */ {(14<<2)|2,{79,107,0}}, +/* 54743 */ {(14<<2)|2,{79,107,0}}, +/* 54744 */ {(14<<2)|2,{79,113,0}}, +/* 54745 */ {(14<<2)|2,{79,113,0}}, +/* 54746 */ {(14<<2)|2,{79,113,0}}, +/* 54747 */ {(14<<2)|2,{79,113,0}}, +/* 54748 */ {(14<<2)|2,{79,118,0}}, +/* 54749 */ {(14<<2)|2,{79,118,0}}, +/* 54750 */ {(14<<2)|2,{79,118,0}}, +/* 54751 */ {(14<<2)|2,{79,118,0}}, +/* 54752 */ {(14<<2)|2,{79,119,0}}, +/* 54753 */ {(14<<2)|2,{79,119,0}}, +/* 54754 */ {(14<<2)|2,{79,119,0}}, +/* 54755 */ {(14<<2)|2,{79,119,0}}, +/* 54756 */ {(14<<2)|2,{79,120,0}}, +/* 54757 */ {(14<<2)|2,{79,120,0}}, +/* 54758 */ {(14<<2)|2,{79,120,0}}, +/* 54759 */ {(14<<2)|2,{79,120,0}}, +/* 54760 */ {(14<<2)|2,{79,121,0}}, +/* 54761 */ {(14<<2)|2,{79,121,0}}, +/* 54762 */ {(14<<2)|2,{79,121,0}}, +/* 54763 */ {(14<<2)|2,{79,121,0}}, +/* 54764 */ {(14<<2)|2,{79,122,0}}, +/* 54765 */ {(14<<2)|2,{79,122,0}}, +/* 54766 */ {(14<<2)|2,{79,122,0}}, +/* 54767 */ {(14<<2)|2,{79,122,0}}, +/* 54768 */ {(15<<2)|2,{79,38,0}}, +/* 54769 */ {(15<<2)|2,{79,38,0}}, +/* 54770 */ {(15<<2)|2,{79,42,0}}, +/* 54771 */ {(15<<2)|2,{79,42,0}}, +/* 54772 */ {(15<<2)|2,{79,44,0}}, +/* 54773 */ {(15<<2)|2,{79,44,0}}, +/* 54774 */ {(15<<2)|2,{79,59,0}}, +/* 54775 */ {(15<<2)|2,{79,59,0}}, +/* 54776 */ {(15<<2)|2,{79,88,0}}, +/* 54777 */ {(15<<2)|2,{79,88,0}}, +/* 54778 */ {(15<<2)|2,{79,90,0}}, +/* 54779 */ {(15<<2)|2,{79,90,0}}, +/* 54780 */ {(7<<2)|1,{79,0,0}}, +/* 54781 */ {(7<<2)|1,{79,0,0}}, +/* 54782 */ {(7<<2)|1,{79,0,0}}, +/* 54783 */ {(7<<2)|1,{79,0,0}}, +/* 54784 */ {(12<<2)|2,{80,48,0}}, +/* 54785 */ {(12<<2)|2,{80,48,0}}, +/* 54786 */ {(12<<2)|2,{80,48,0}}, +/* 54787 */ {(12<<2)|2,{80,48,0}}, +/* 54788 */ {(12<<2)|2,{80,48,0}}, +/* 54789 */ {(12<<2)|2,{80,48,0}}, +/* 54790 */ {(12<<2)|2,{80,48,0}}, +/* 54791 */ {(12<<2)|2,{80,48,0}}, +/* 54792 */ {(12<<2)|2,{80,48,0}}, +/* 54793 */ {(12<<2)|2,{80,48,0}}, +/* 54794 */ {(12<<2)|2,{80,48,0}}, +/* 54795 */ {(12<<2)|2,{80,48,0}}, +/* 54796 */ {(12<<2)|2,{80,48,0}}, +/* 54797 */ {(12<<2)|2,{80,48,0}}, +/* 54798 */ {(12<<2)|2,{80,48,0}}, +/* 54799 */ {(12<<2)|2,{80,48,0}}, +/* 54800 */ {(12<<2)|2,{80,49,0}}, +/* 54801 */ {(12<<2)|2,{80,49,0}}, +/* 54802 */ {(12<<2)|2,{80,49,0}}, +/* 54803 */ {(12<<2)|2,{80,49,0}}, +/* 54804 */ {(12<<2)|2,{80,49,0}}, +/* 54805 */ {(12<<2)|2,{80,49,0}}, +/* 54806 */ {(12<<2)|2,{80,49,0}}, +/* 54807 */ {(12<<2)|2,{80,49,0}}, +/* 54808 */ {(12<<2)|2,{80,49,0}}, +/* 54809 */ {(12<<2)|2,{80,49,0}}, +/* 54810 */ {(12<<2)|2,{80,49,0}}, +/* 54811 */ {(12<<2)|2,{80,49,0}}, +/* 54812 */ {(12<<2)|2,{80,49,0}}, +/* 54813 */ {(12<<2)|2,{80,49,0}}, +/* 54814 */ {(12<<2)|2,{80,49,0}}, +/* 54815 */ {(12<<2)|2,{80,49,0}}, +/* 54816 */ {(12<<2)|2,{80,50,0}}, +/* 54817 */ {(12<<2)|2,{80,50,0}}, +/* 54818 */ {(12<<2)|2,{80,50,0}}, +/* 54819 */ {(12<<2)|2,{80,50,0}}, +/* 54820 */ {(12<<2)|2,{80,50,0}}, +/* 54821 */ {(12<<2)|2,{80,50,0}}, +/* 54822 */ {(12<<2)|2,{80,50,0}}, +/* 54823 */ {(12<<2)|2,{80,50,0}}, +/* 54824 */ {(12<<2)|2,{80,50,0}}, +/* 54825 */ {(12<<2)|2,{80,50,0}}, +/* 54826 */ {(12<<2)|2,{80,50,0}}, +/* 54827 */ {(12<<2)|2,{80,50,0}}, +/* 54828 */ {(12<<2)|2,{80,50,0}}, +/* 54829 */ {(12<<2)|2,{80,50,0}}, +/* 54830 */ {(12<<2)|2,{80,50,0}}, +/* 54831 */ {(12<<2)|2,{80,50,0}}, +/* 54832 */ {(12<<2)|2,{80,97,0}}, +/* 54833 */ {(12<<2)|2,{80,97,0}}, +/* 54834 */ {(12<<2)|2,{80,97,0}}, +/* 54835 */ {(12<<2)|2,{80,97,0}}, +/* 54836 */ {(12<<2)|2,{80,97,0}}, +/* 54837 */ {(12<<2)|2,{80,97,0}}, +/* 54838 */ {(12<<2)|2,{80,97,0}}, +/* 54839 */ {(12<<2)|2,{80,97,0}}, +/* 54840 */ {(12<<2)|2,{80,97,0}}, +/* 54841 */ {(12<<2)|2,{80,97,0}}, +/* 54842 */ {(12<<2)|2,{80,97,0}}, +/* 54843 */ {(12<<2)|2,{80,97,0}}, +/* 54844 */ {(12<<2)|2,{80,97,0}}, +/* 54845 */ {(12<<2)|2,{80,97,0}}, +/* 54846 */ {(12<<2)|2,{80,97,0}}, +/* 54847 */ {(12<<2)|2,{80,97,0}}, +/* 54848 */ {(12<<2)|2,{80,99,0}}, +/* 54849 */ {(12<<2)|2,{80,99,0}}, +/* 54850 */ {(12<<2)|2,{80,99,0}}, +/* 54851 */ {(12<<2)|2,{80,99,0}}, +/* 54852 */ {(12<<2)|2,{80,99,0}}, +/* 54853 */ {(12<<2)|2,{80,99,0}}, +/* 54854 */ {(12<<2)|2,{80,99,0}}, +/* 54855 */ {(12<<2)|2,{80,99,0}}, +/* 54856 */ {(12<<2)|2,{80,99,0}}, +/* 54857 */ {(12<<2)|2,{80,99,0}}, +/* 54858 */ {(12<<2)|2,{80,99,0}}, +/* 54859 */ {(12<<2)|2,{80,99,0}}, +/* 54860 */ {(12<<2)|2,{80,99,0}}, +/* 54861 */ {(12<<2)|2,{80,99,0}}, +/* 54862 */ {(12<<2)|2,{80,99,0}}, +/* 54863 */ {(12<<2)|2,{80,99,0}}, +/* 54864 */ {(12<<2)|2,{80,101,0}}, +/* 54865 */ {(12<<2)|2,{80,101,0}}, +/* 54866 */ {(12<<2)|2,{80,101,0}}, +/* 54867 */ {(12<<2)|2,{80,101,0}}, +/* 54868 */ {(12<<2)|2,{80,101,0}}, +/* 54869 */ {(12<<2)|2,{80,101,0}}, +/* 54870 */ {(12<<2)|2,{80,101,0}}, +/* 54871 */ {(12<<2)|2,{80,101,0}}, +/* 54872 */ {(12<<2)|2,{80,101,0}}, +/* 54873 */ {(12<<2)|2,{80,101,0}}, +/* 54874 */ {(12<<2)|2,{80,101,0}}, +/* 54875 */ {(12<<2)|2,{80,101,0}}, +/* 54876 */ {(12<<2)|2,{80,101,0}}, +/* 54877 */ {(12<<2)|2,{80,101,0}}, +/* 54878 */ {(12<<2)|2,{80,101,0}}, +/* 54879 */ {(12<<2)|2,{80,101,0}}, +/* 54880 */ {(12<<2)|2,{80,105,0}}, +/* 54881 */ {(12<<2)|2,{80,105,0}}, +/* 54882 */ {(12<<2)|2,{80,105,0}}, +/* 54883 */ {(12<<2)|2,{80,105,0}}, +/* 54884 */ {(12<<2)|2,{80,105,0}}, +/* 54885 */ {(12<<2)|2,{80,105,0}}, +/* 54886 */ {(12<<2)|2,{80,105,0}}, +/* 54887 */ {(12<<2)|2,{80,105,0}}, +/* 54888 */ {(12<<2)|2,{80,105,0}}, +/* 54889 */ {(12<<2)|2,{80,105,0}}, +/* 54890 */ {(12<<2)|2,{80,105,0}}, +/* 54891 */ {(12<<2)|2,{80,105,0}}, +/* 54892 */ {(12<<2)|2,{80,105,0}}, +/* 54893 */ {(12<<2)|2,{80,105,0}}, +/* 54894 */ {(12<<2)|2,{80,105,0}}, +/* 54895 */ {(12<<2)|2,{80,105,0}}, +/* 54896 */ {(12<<2)|2,{80,111,0}}, +/* 54897 */ {(12<<2)|2,{80,111,0}}, +/* 54898 */ {(12<<2)|2,{80,111,0}}, +/* 54899 */ {(12<<2)|2,{80,111,0}}, +/* 54900 */ {(12<<2)|2,{80,111,0}}, +/* 54901 */ {(12<<2)|2,{80,111,0}}, +/* 54902 */ {(12<<2)|2,{80,111,0}}, +/* 54903 */ {(12<<2)|2,{80,111,0}}, +/* 54904 */ {(12<<2)|2,{80,111,0}}, +/* 54905 */ {(12<<2)|2,{80,111,0}}, +/* 54906 */ {(12<<2)|2,{80,111,0}}, +/* 54907 */ {(12<<2)|2,{80,111,0}}, +/* 54908 */ {(12<<2)|2,{80,111,0}}, +/* 54909 */ {(12<<2)|2,{80,111,0}}, +/* 54910 */ {(12<<2)|2,{80,111,0}}, +/* 54911 */ {(12<<2)|2,{80,111,0}}, +/* 54912 */ {(12<<2)|2,{80,115,0}}, +/* 54913 */ {(12<<2)|2,{80,115,0}}, +/* 54914 */ {(12<<2)|2,{80,115,0}}, +/* 54915 */ {(12<<2)|2,{80,115,0}}, +/* 54916 */ {(12<<2)|2,{80,115,0}}, +/* 54917 */ {(12<<2)|2,{80,115,0}}, +/* 54918 */ {(12<<2)|2,{80,115,0}}, +/* 54919 */ {(12<<2)|2,{80,115,0}}, +/* 54920 */ {(12<<2)|2,{80,115,0}}, +/* 54921 */ {(12<<2)|2,{80,115,0}}, +/* 54922 */ {(12<<2)|2,{80,115,0}}, +/* 54923 */ {(12<<2)|2,{80,115,0}}, +/* 54924 */ {(12<<2)|2,{80,115,0}}, +/* 54925 */ {(12<<2)|2,{80,115,0}}, +/* 54926 */ {(12<<2)|2,{80,115,0}}, +/* 54927 */ {(12<<2)|2,{80,115,0}}, +/* 54928 */ {(12<<2)|2,{80,116,0}}, +/* 54929 */ {(12<<2)|2,{80,116,0}}, +/* 54930 */ {(12<<2)|2,{80,116,0}}, +/* 54931 */ {(12<<2)|2,{80,116,0}}, +/* 54932 */ {(12<<2)|2,{80,116,0}}, +/* 54933 */ {(12<<2)|2,{80,116,0}}, +/* 54934 */ {(12<<2)|2,{80,116,0}}, +/* 54935 */ {(12<<2)|2,{80,116,0}}, +/* 54936 */ {(12<<2)|2,{80,116,0}}, +/* 54937 */ {(12<<2)|2,{80,116,0}}, +/* 54938 */ {(12<<2)|2,{80,116,0}}, +/* 54939 */ {(12<<2)|2,{80,116,0}}, +/* 54940 */ {(12<<2)|2,{80,116,0}}, +/* 54941 */ {(12<<2)|2,{80,116,0}}, +/* 54942 */ {(12<<2)|2,{80,116,0}}, +/* 54943 */ {(12<<2)|2,{80,116,0}}, +/* 54944 */ {(13<<2)|2,{80,32,0}}, +/* 54945 */ {(13<<2)|2,{80,32,0}}, +/* 54946 */ {(13<<2)|2,{80,32,0}}, +/* 54947 */ {(13<<2)|2,{80,32,0}}, +/* 54948 */ {(13<<2)|2,{80,32,0}}, +/* 54949 */ {(13<<2)|2,{80,32,0}}, +/* 54950 */ {(13<<2)|2,{80,32,0}}, +/* 54951 */ {(13<<2)|2,{80,32,0}}, +/* 54952 */ {(13<<2)|2,{80,37,0}}, +/* 54953 */ {(13<<2)|2,{80,37,0}}, +/* 54954 */ {(13<<2)|2,{80,37,0}}, +/* 54955 */ {(13<<2)|2,{80,37,0}}, +/* 54956 */ {(13<<2)|2,{80,37,0}}, +/* 54957 */ {(13<<2)|2,{80,37,0}}, +/* 54958 */ {(13<<2)|2,{80,37,0}}, +/* 54959 */ {(13<<2)|2,{80,37,0}}, +/* 54960 */ {(13<<2)|2,{80,45,0}}, +/* 54961 */ {(13<<2)|2,{80,45,0}}, +/* 54962 */ {(13<<2)|2,{80,45,0}}, +/* 54963 */ {(13<<2)|2,{80,45,0}}, +/* 54964 */ {(13<<2)|2,{80,45,0}}, +/* 54965 */ {(13<<2)|2,{80,45,0}}, +/* 54966 */ {(13<<2)|2,{80,45,0}}, +/* 54967 */ {(13<<2)|2,{80,45,0}}, +/* 54968 */ {(13<<2)|2,{80,46,0}}, +/* 54969 */ {(13<<2)|2,{80,46,0}}, +/* 54970 */ {(13<<2)|2,{80,46,0}}, +/* 54971 */ {(13<<2)|2,{80,46,0}}, +/* 54972 */ {(13<<2)|2,{80,46,0}}, +/* 54973 */ {(13<<2)|2,{80,46,0}}, +/* 54974 */ {(13<<2)|2,{80,46,0}}, +/* 54975 */ {(13<<2)|2,{80,46,0}}, +/* 54976 */ {(13<<2)|2,{80,47,0}}, +/* 54977 */ {(13<<2)|2,{80,47,0}}, +/* 54978 */ {(13<<2)|2,{80,47,0}}, +/* 54979 */ {(13<<2)|2,{80,47,0}}, +/* 54980 */ {(13<<2)|2,{80,47,0}}, +/* 54981 */ {(13<<2)|2,{80,47,0}}, +/* 54982 */ {(13<<2)|2,{80,47,0}}, +/* 54983 */ {(13<<2)|2,{80,47,0}}, +/* 54984 */ {(13<<2)|2,{80,51,0}}, +/* 54985 */ {(13<<2)|2,{80,51,0}}, +/* 54986 */ {(13<<2)|2,{80,51,0}}, +/* 54987 */ {(13<<2)|2,{80,51,0}}, +/* 54988 */ {(13<<2)|2,{80,51,0}}, +/* 54989 */ {(13<<2)|2,{80,51,0}}, +/* 54990 */ {(13<<2)|2,{80,51,0}}, +/* 54991 */ {(13<<2)|2,{80,51,0}}, +/* 54992 */ {(13<<2)|2,{80,52,0}}, +/* 54993 */ {(13<<2)|2,{80,52,0}}, +/* 54994 */ {(13<<2)|2,{80,52,0}}, +/* 54995 */ {(13<<2)|2,{80,52,0}}, +/* 54996 */ {(13<<2)|2,{80,52,0}}, +/* 54997 */ {(13<<2)|2,{80,52,0}}, +/* 54998 */ {(13<<2)|2,{80,52,0}}, +/* 54999 */ {(13<<2)|2,{80,52,0}}, +/* 55000 */ {(13<<2)|2,{80,53,0}}, +/* 55001 */ {(13<<2)|2,{80,53,0}}, +/* 55002 */ {(13<<2)|2,{80,53,0}}, +/* 55003 */ {(13<<2)|2,{80,53,0}}, +/* 55004 */ {(13<<2)|2,{80,53,0}}, +/* 55005 */ {(13<<2)|2,{80,53,0}}, +/* 55006 */ {(13<<2)|2,{80,53,0}}, +/* 55007 */ {(13<<2)|2,{80,53,0}}, +/* 55008 */ {(13<<2)|2,{80,54,0}}, +/* 55009 */ {(13<<2)|2,{80,54,0}}, +/* 55010 */ {(13<<2)|2,{80,54,0}}, +/* 55011 */ {(13<<2)|2,{80,54,0}}, +/* 55012 */ {(13<<2)|2,{80,54,0}}, +/* 55013 */ {(13<<2)|2,{80,54,0}}, +/* 55014 */ {(13<<2)|2,{80,54,0}}, +/* 55015 */ {(13<<2)|2,{80,54,0}}, +/* 55016 */ {(13<<2)|2,{80,55,0}}, +/* 55017 */ {(13<<2)|2,{80,55,0}}, +/* 55018 */ {(13<<2)|2,{80,55,0}}, +/* 55019 */ {(13<<2)|2,{80,55,0}}, +/* 55020 */ {(13<<2)|2,{80,55,0}}, +/* 55021 */ {(13<<2)|2,{80,55,0}}, +/* 55022 */ {(13<<2)|2,{80,55,0}}, +/* 55023 */ {(13<<2)|2,{80,55,0}}, +/* 55024 */ {(13<<2)|2,{80,56,0}}, +/* 55025 */ {(13<<2)|2,{80,56,0}}, +/* 55026 */ {(13<<2)|2,{80,56,0}}, +/* 55027 */ {(13<<2)|2,{80,56,0}}, +/* 55028 */ {(13<<2)|2,{80,56,0}}, +/* 55029 */ {(13<<2)|2,{80,56,0}}, +/* 55030 */ {(13<<2)|2,{80,56,0}}, +/* 55031 */ {(13<<2)|2,{80,56,0}}, +/* 55032 */ {(13<<2)|2,{80,57,0}}, +/* 55033 */ {(13<<2)|2,{80,57,0}}, +/* 55034 */ {(13<<2)|2,{80,57,0}}, +/* 55035 */ {(13<<2)|2,{80,57,0}}, +/* 55036 */ {(13<<2)|2,{80,57,0}}, +/* 55037 */ {(13<<2)|2,{80,57,0}}, +/* 55038 */ {(13<<2)|2,{80,57,0}}, +/* 55039 */ {(13<<2)|2,{80,57,0}}, +/* 55040 */ {(13<<2)|2,{80,61,0}}, +/* 55041 */ {(13<<2)|2,{80,61,0}}, +/* 55042 */ {(13<<2)|2,{80,61,0}}, +/* 55043 */ {(13<<2)|2,{80,61,0}}, +/* 55044 */ {(13<<2)|2,{80,61,0}}, +/* 55045 */ {(13<<2)|2,{80,61,0}}, +/* 55046 */ {(13<<2)|2,{80,61,0}}, +/* 55047 */ {(13<<2)|2,{80,61,0}}, +/* 55048 */ {(13<<2)|2,{80,65,0}}, +/* 55049 */ {(13<<2)|2,{80,65,0}}, +/* 55050 */ {(13<<2)|2,{80,65,0}}, +/* 55051 */ {(13<<2)|2,{80,65,0}}, +/* 55052 */ {(13<<2)|2,{80,65,0}}, +/* 55053 */ {(13<<2)|2,{80,65,0}}, +/* 55054 */ {(13<<2)|2,{80,65,0}}, +/* 55055 */ {(13<<2)|2,{80,65,0}}, +/* 55056 */ {(13<<2)|2,{80,95,0}}, +/* 55057 */ {(13<<2)|2,{80,95,0}}, +/* 55058 */ {(13<<2)|2,{80,95,0}}, +/* 55059 */ {(13<<2)|2,{80,95,0}}, +/* 55060 */ {(13<<2)|2,{80,95,0}}, +/* 55061 */ {(13<<2)|2,{80,95,0}}, +/* 55062 */ {(13<<2)|2,{80,95,0}}, +/* 55063 */ {(13<<2)|2,{80,95,0}}, +/* 55064 */ {(13<<2)|2,{80,98,0}}, +/* 55065 */ {(13<<2)|2,{80,98,0}}, +/* 55066 */ {(13<<2)|2,{80,98,0}}, +/* 55067 */ {(13<<2)|2,{80,98,0}}, +/* 55068 */ {(13<<2)|2,{80,98,0}}, +/* 55069 */ {(13<<2)|2,{80,98,0}}, +/* 55070 */ {(13<<2)|2,{80,98,0}}, +/* 55071 */ {(13<<2)|2,{80,98,0}}, +/* 55072 */ {(13<<2)|2,{80,100,0}}, +/* 55073 */ {(13<<2)|2,{80,100,0}}, +/* 55074 */ {(13<<2)|2,{80,100,0}}, +/* 55075 */ {(13<<2)|2,{80,100,0}}, +/* 55076 */ {(13<<2)|2,{80,100,0}}, +/* 55077 */ {(13<<2)|2,{80,100,0}}, +/* 55078 */ {(13<<2)|2,{80,100,0}}, +/* 55079 */ {(13<<2)|2,{80,100,0}}, +/* 55080 */ {(13<<2)|2,{80,102,0}}, +/* 55081 */ {(13<<2)|2,{80,102,0}}, +/* 55082 */ {(13<<2)|2,{80,102,0}}, +/* 55083 */ {(13<<2)|2,{80,102,0}}, +/* 55084 */ {(13<<2)|2,{80,102,0}}, +/* 55085 */ {(13<<2)|2,{80,102,0}}, +/* 55086 */ {(13<<2)|2,{80,102,0}}, +/* 55087 */ {(13<<2)|2,{80,102,0}}, +/* 55088 */ {(13<<2)|2,{80,103,0}}, +/* 55089 */ {(13<<2)|2,{80,103,0}}, +/* 55090 */ {(13<<2)|2,{80,103,0}}, +/* 55091 */ {(13<<2)|2,{80,103,0}}, +/* 55092 */ {(13<<2)|2,{80,103,0}}, +/* 55093 */ {(13<<2)|2,{80,103,0}}, +/* 55094 */ {(13<<2)|2,{80,103,0}}, +/* 55095 */ {(13<<2)|2,{80,103,0}}, +/* 55096 */ {(13<<2)|2,{80,104,0}}, +/* 55097 */ {(13<<2)|2,{80,104,0}}, +/* 55098 */ {(13<<2)|2,{80,104,0}}, +/* 55099 */ {(13<<2)|2,{80,104,0}}, +/* 55100 */ {(13<<2)|2,{80,104,0}}, +/* 55101 */ {(13<<2)|2,{80,104,0}}, +/* 55102 */ {(13<<2)|2,{80,104,0}}, +/* 55103 */ {(13<<2)|2,{80,104,0}}, +/* 55104 */ {(13<<2)|2,{80,108,0}}, +/* 55105 */ {(13<<2)|2,{80,108,0}}, +/* 55106 */ {(13<<2)|2,{80,108,0}}, +/* 55107 */ {(13<<2)|2,{80,108,0}}, +/* 55108 */ {(13<<2)|2,{80,108,0}}, +/* 55109 */ {(13<<2)|2,{80,108,0}}, +/* 55110 */ {(13<<2)|2,{80,108,0}}, +/* 55111 */ {(13<<2)|2,{80,108,0}}, +/* 55112 */ {(13<<2)|2,{80,109,0}}, +/* 55113 */ {(13<<2)|2,{80,109,0}}, +/* 55114 */ {(13<<2)|2,{80,109,0}}, +/* 55115 */ {(13<<2)|2,{80,109,0}}, +/* 55116 */ {(13<<2)|2,{80,109,0}}, +/* 55117 */ {(13<<2)|2,{80,109,0}}, +/* 55118 */ {(13<<2)|2,{80,109,0}}, +/* 55119 */ {(13<<2)|2,{80,109,0}}, +/* 55120 */ {(13<<2)|2,{80,110,0}}, +/* 55121 */ {(13<<2)|2,{80,110,0}}, +/* 55122 */ {(13<<2)|2,{80,110,0}}, +/* 55123 */ {(13<<2)|2,{80,110,0}}, +/* 55124 */ {(13<<2)|2,{80,110,0}}, +/* 55125 */ {(13<<2)|2,{80,110,0}}, +/* 55126 */ {(13<<2)|2,{80,110,0}}, +/* 55127 */ {(13<<2)|2,{80,110,0}}, +/* 55128 */ {(13<<2)|2,{80,112,0}}, +/* 55129 */ {(13<<2)|2,{80,112,0}}, +/* 55130 */ {(13<<2)|2,{80,112,0}}, +/* 55131 */ {(13<<2)|2,{80,112,0}}, +/* 55132 */ {(13<<2)|2,{80,112,0}}, +/* 55133 */ {(13<<2)|2,{80,112,0}}, +/* 55134 */ {(13<<2)|2,{80,112,0}}, +/* 55135 */ {(13<<2)|2,{80,112,0}}, +/* 55136 */ {(13<<2)|2,{80,114,0}}, +/* 55137 */ {(13<<2)|2,{80,114,0}}, +/* 55138 */ {(13<<2)|2,{80,114,0}}, +/* 55139 */ {(13<<2)|2,{80,114,0}}, +/* 55140 */ {(13<<2)|2,{80,114,0}}, +/* 55141 */ {(13<<2)|2,{80,114,0}}, +/* 55142 */ {(13<<2)|2,{80,114,0}}, +/* 55143 */ {(13<<2)|2,{80,114,0}}, +/* 55144 */ {(13<<2)|2,{80,117,0}}, +/* 55145 */ {(13<<2)|2,{80,117,0}}, +/* 55146 */ {(13<<2)|2,{80,117,0}}, +/* 55147 */ {(13<<2)|2,{80,117,0}}, +/* 55148 */ {(13<<2)|2,{80,117,0}}, +/* 55149 */ {(13<<2)|2,{80,117,0}}, +/* 55150 */ {(13<<2)|2,{80,117,0}}, +/* 55151 */ {(13<<2)|2,{80,117,0}}, +/* 55152 */ {(14<<2)|2,{80,58,0}}, +/* 55153 */ {(14<<2)|2,{80,58,0}}, +/* 55154 */ {(14<<2)|2,{80,58,0}}, +/* 55155 */ {(14<<2)|2,{80,58,0}}, +/* 55156 */ {(14<<2)|2,{80,66,0}}, +/* 55157 */ {(14<<2)|2,{80,66,0}}, +/* 55158 */ {(14<<2)|2,{80,66,0}}, +/* 55159 */ {(14<<2)|2,{80,66,0}}, +/* 55160 */ {(14<<2)|2,{80,67,0}}, +/* 55161 */ {(14<<2)|2,{80,67,0}}, +/* 55162 */ {(14<<2)|2,{80,67,0}}, +/* 55163 */ {(14<<2)|2,{80,67,0}}, +/* 55164 */ {(14<<2)|2,{80,68,0}}, +/* 55165 */ {(14<<2)|2,{80,68,0}}, +/* 55166 */ {(14<<2)|2,{80,68,0}}, +/* 55167 */ {(14<<2)|2,{80,68,0}}, +/* 55168 */ {(14<<2)|2,{80,69,0}}, +/* 55169 */ {(14<<2)|2,{80,69,0}}, +/* 55170 */ {(14<<2)|2,{80,69,0}}, +/* 55171 */ {(14<<2)|2,{80,69,0}}, +/* 55172 */ {(14<<2)|2,{80,70,0}}, +/* 55173 */ {(14<<2)|2,{80,70,0}}, +/* 55174 */ {(14<<2)|2,{80,70,0}}, +/* 55175 */ {(14<<2)|2,{80,70,0}}, +/* 55176 */ {(14<<2)|2,{80,71,0}}, +/* 55177 */ {(14<<2)|2,{80,71,0}}, +/* 55178 */ {(14<<2)|2,{80,71,0}}, +/* 55179 */ {(14<<2)|2,{80,71,0}}, +/* 55180 */ {(14<<2)|2,{80,72,0}}, +/* 55181 */ {(14<<2)|2,{80,72,0}}, +/* 55182 */ {(14<<2)|2,{80,72,0}}, +/* 55183 */ {(14<<2)|2,{80,72,0}}, +/* 55184 */ {(14<<2)|2,{80,73,0}}, +/* 55185 */ {(14<<2)|2,{80,73,0}}, +/* 55186 */ {(14<<2)|2,{80,73,0}}, +/* 55187 */ {(14<<2)|2,{80,73,0}}, +/* 55188 */ {(14<<2)|2,{80,74,0}}, +/* 55189 */ {(14<<2)|2,{80,74,0}}, +/* 55190 */ {(14<<2)|2,{80,74,0}}, +/* 55191 */ {(14<<2)|2,{80,74,0}}, +/* 55192 */ {(14<<2)|2,{80,75,0}}, +/* 55193 */ {(14<<2)|2,{80,75,0}}, +/* 55194 */ {(14<<2)|2,{80,75,0}}, +/* 55195 */ {(14<<2)|2,{80,75,0}}, +/* 55196 */ {(14<<2)|2,{80,76,0}}, +/* 55197 */ {(14<<2)|2,{80,76,0}}, +/* 55198 */ {(14<<2)|2,{80,76,0}}, +/* 55199 */ {(14<<2)|2,{80,76,0}}, +/* 55200 */ {(14<<2)|2,{80,77,0}}, +/* 55201 */ {(14<<2)|2,{80,77,0}}, +/* 55202 */ {(14<<2)|2,{80,77,0}}, +/* 55203 */ {(14<<2)|2,{80,77,0}}, +/* 55204 */ {(14<<2)|2,{80,78,0}}, +/* 55205 */ {(14<<2)|2,{80,78,0}}, +/* 55206 */ {(14<<2)|2,{80,78,0}}, +/* 55207 */ {(14<<2)|2,{80,78,0}}, +/* 55208 */ {(14<<2)|2,{80,79,0}}, +/* 55209 */ {(14<<2)|2,{80,79,0}}, +/* 55210 */ {(14<<2)|2,{80,79,0}}, +/* 55211 */ {(14<<2)|2,{80,79,0}}, +/* 55212 */ {(14<<2)|2,{80,80,0}}, +/* 55213 */ {(14<<2)|2,{80,80,0}}, +/* 55214 */ {(14<<2)|2,{80,80,0}}, +/* 55215 */ {(14<<2)|2,{80,80,0}}, +/* 55216 */ {(14<<2)|2,{80,81,0}}, +/* 55217 */ {(14<<2)|2,{80,81,0}}, +/* 55218 */ {(14<<2)|2,{80,81,0}}, +/* 55219 */ {(14<<2)|2,{80,81,0}}, +/* 55220 */ {(14<<2)|2,{80,82,0}}, +/* 55221 */ {(14<<2)|2,{80,82,0}}, +/* 55222 */ {(14<<2)|2,{80,82,0}}, +/* 55223 */ {(14<<2)|2,{80,82,0}}, +/* 55224 */ {(14<<2)|2,{80,83,0}}, +/* 55225 */ {(14<<2)|2,{80,83,0}}, +/* 55226 */ {(14<<2)|2,{80,83,0}}, +/* 55227 */ {(14<<2)|2,{80,83,0}}, +/* 55228 */ {(14<<2)|2,{80,84,0}}, +/* 55229 */ {(14<<2)|2,{80,84,0}}, +/* 55230 */ {(14<<2)|2,{80,84,0}}, +/* 55231 */ {(14<<2)|2,{80,84,0}}, +/* 55232 */ {(14<<2)|2,{80,85,0}}, +/* 55233 */ {(14<<2)|2,{80,85,0}}, +/* 55234 */ {(14<<2)|2,{80,85,0}}, +/* 55235 */ {(14<<2)|2,{80,85,0}}, +/* 55236 */ {(14<<2)|2,{80,86,0}}, +/* 55237 */ {(14<<2)|2,{80,86,0}}, +/* 55238 */ {(14<<2)|2,{80,86,0}}, +/* 55239 */ {(14<<2)|2,{80,86,0}}, +/* 55240 */ {(14<<2)|2,{80,87,0}}, +/* 55241 */ {(14<<2)|2,{80,87,0}}, +/* 55242 */ {(14<<2)|2,{80,87,0}}, +/* 55243 */ {(14<<2)|2,{80,87,0}}, +/* 55244 */ {(14<<2)|2,{80,89,0}}, +/* 55245 */ {(14<<2)|2,{80,89,0}}, +/* 55246 */ {(14<<2)|2,{80,89,0}}, +/* 55247 */ {(14<<2)|2,{80,89,0}}, +/* 55248 */ {(14<<2)|2,{80,106,0}}, +/* 55249 */ {(14<<2)|2,{80,106,0}}, +/* 55250 */ {(14<<2)|2,{80,106,0}}, +/* 55251 */ {(14<<2)|2,{80,106,0}}, +/* 55252 */ {(14<<2)|2,{80,107,0}}, +/* 55253 */ {(14<<2)|2,{80,107,0}}, +/* 55254 */ {(14<<2)|2,{80,107,0}}, +/* 55255 */ {(14<<2)|2,{80,107,0}}, +/* 55256 */ {(14<<2)|2,{80,113,0}}, +/* 55257 */ {(14<<2)|2,{80,113,0}}, +/* 55258 */ {(14<<2)|2,{80,113,0}}, +/* 55259 */ {(14<<2)|2,{80,113,0}}, +/* 55260 */ {(14<<2)|2,{80,118,0}}, +/* 55261 */ {(14<<2)|2,{80,118,0}}, +/* 55262 */ {(14<<2)|2,{80,118,0}}, +/* 55263 */ {(14<<2)|2,{80,118,0}}, +/* 55264 */ {(14<<2)|2,{80,119,0}}, +/* 55265 */ {(14<<2)|2,{80,119,0}}, +/* 55266 */ {(14<<2)|2,{80,119,0}}, +/* 55267 */ {(14<<2)|2,{80,119,0}}, +/* 55268 */ {(14<<2)|2,{80,120,0}}, +/* 55269 */ {(14<<2)|2,{80,120,0}}, +/* 55270 */ {(14<<2)|2,{80,120,0}}, +/* 55271 */ {(14<<2)|2,{80,120,0}}, +/* 55272 */ {(14<<2)|2,{80,121,0}}, +/* 55273 */ {(14<<2)|2,{80,121,0}}, +/* 55274 */ {(14<<2)|2,{80,121,0}}, +/* 55275 */ {(14<<2)|2,{80,121,0}}, +/* 55276 */ {(14<<2)|2,{80,122,0}}, +/* 55277 */ {(14<<2)|2,{80,122,0}}, +/* 55278 */ {(14<<2)|2,{80,122,0}}, +/* 55279 */ {(14<<2)|2,{80,122,0}}, +/* 55280 */ {(15<<2)|2,{80,38,0}}, +/* 55281 */ {(15<<2)|2,{80,38,0}}, +/* 55282 */ {(15<<2)|2,{80,42,0}}, +/* 55283 */ {(15<<2)|2,{80,42,0}}, +/* 55284 */ {(15<<2)|2,{80,44,0}}, +/* 55285 */ {(15<<2)|2,{80,44,0}}, +/* 55286 */ {(15<<2)|2,{80,59,0}}, +/* 55287 */ {(15<<2)|2,{80,59,0}}, +/* 55288 */ {(15<<2)|2,{80,88,0}}, +/* 55289 */ {(15<<2)|2,{80,88,0}}, +/* 55290 */ {(15<<2)|2,{80,90,0}}, +/* 55291 */ {(15<<2)|2,{80,90,0}}, +/* 55292 */ {(7<<2)|1,{80,0,0}}, +/* 55293 */ {(7<<2)|1,{80,0,0}}, +/* 55294 */ {(7<<2)|1,{80,0,0}}, +/* 55295 */ {(7<<2)|1,{80,0,0}}, +/* 55296 */ {(12<<2)|2,{81,48,0}}, +/* 55297 */ {(12<<2)|2,{81,48,0}}, +/* 55298 */ {(12<<2)|2,{81,48,0}}, +/* 55299 */ {(12<<2)|2,{81,48,0}}, +/* 55300 */ {(12<<2)|2,{81,48,0}}, +/* 55301 */ {(12<<2)|2,{81,48,0}}, +/* 55302 */ {(12<<2)|2,{81,48,0}}, +/* 55303 */ {(12<<2)|2,{81,48,0}}, +/* 55304 */ {(12<<2)|2,{81,48,0}}, +/* 55305 */ {(12<<2)|2,{81,48,0}}, +/* 55306 */ {(12<<2)|2,{81,48,0}}, +/* 55307 */ {(12<<2)|2,{81,48,0}}, +/* 55308 */ {(12<<2)|2,{81,48,0}}, +/* 55309 */ {(12<<2)|2,{81,48,0}}, +/* 55310 */ {(12<<2)|2,{81,48,0}}, +/* 55311 */ {(12<<2)|2,{81,48,0}}, +/* 55312 */ {(12<<2)|2,{81,49,0}}, +/* 55313 */ {(12<<2)|2,{81,49,0}}, +/* 55314 */ {(12<<2)|2,{81,49,0}}, +/* 55315 */ {(12<<2)|2,{81,49,0}}, +/* 55316 */ {(12<<2)|2,{81,49,0}}, +/* 55317 */ {(12<<2)|2,{81,49,0}}, +/* 55318 */ {(12<<2)|2,{81,49,0}}, +/* 55319 */ {(12<<2)|2,{81,49,0}}, +/* 55320 */ {(12<<2)|2,{81,49,0}}, +/* 55321 */ {(12<<2)|2,{81,49,0}}, +/* 55322 */ {(12<<2)|2,{81,49,0}}, +/* 55323 */ {(12<<2)|2,{81,49,0}}, +/* 55324 */ {(12<<2)|2,{81,49,0}}, +/* 55325 */ {(12<<2)|2,{81,49,0}}, +/* 55326 */ {(12<<2)|2,{81,49,0}}, +/* 55327 */ {(12<<2)|2,{81,49,0}}, +/* 55328 */ {(12<<2)|2,{81,50,0}}, +/* 55329 */ {(12<<2)|2,{81,50,0}}, +/* 55330 */ {(12<<2)|2,{81,50,0}}, +/* 55331 */ {(12<<2)|2,{81,50,0}}, +/* 55332 */ {(12<<2)|2,{81,50,0}}, +/* 55333 */ {(12<<2)|2,{81,50,0}}, +/* 55334 */ {(12<<2)|2,{81,50,0}}, +/* 55335 */ {(12<<2)|2,{81,50,0}}, +/* 55336 */ {(12<<2)|2,{81,50,0}}, +/* 55337 */ {(12<<2)|2,{81,50,0}}, +/* 55338 */ {(12<<2)|2,{81,50,0}}, +/* 55339 */ {(12<<2)|2,{81,50,0}}, +/* 55340 */ {(12<<2)|2,{81,50,0}}, +/* 55341 */ {(12<<2)|2,{81,50,0}}, +/* 55342 */ {(12<<2)|2,{81,50,0}}, +/* 55343 */ {(12<<2)|2,{81,50,0}}, +/* 55344 */ {(12<<2)|2,{81,97,0}}, +/* 55345 */ {(12<<2)|2,{81,97,0}}, +/* 55346 */ {(12<<2)|2,{81,97,0}}, +/* 55347 */ {(12<<2)|2,{81,97,0}}, +/* 55348 */ {(12<<2)|2,{81,97,0}}, +/* 55349 */ {(12<<2)|2,{81,97,0}}, +/* 55350 */ {(12<<2)|2,{81,97,0}}, +/* 55351 */ {(12<<2)|2,{81,97,0}}, +/* 55352 */ {(12<<2)|2,{81,97,0}}, +/* 55353 */ {(12<<2)|2,{81,97,0}}, +/* 55354 */ {(12<<2)|2,{81,97,0}}, +/* 55355 */ {(12<<2)|2,{81,97,0}}, +/* 55356 */ {(12<<2)|2,{81,97,0}}, +/* 55357 */ {(12<<2)|2,{81,97,0}}, +/* 55358 */ {(12<<2)|2,{81,97,0}}, +/* 55359 */ {(12<<2)|2,{81,97,0}}, +/* 55360 */ {(12<<2)|2,{81,99,0}}, +/* 55361 */ {(12<<2)|2,{81,99,0}}, +/* 55362 */ {(12<<2)|2,{81,99,0}}, +/* 55363 */ {(12<<2)|2,{81,99,0}}, +/* 55364 */ {(12<<2)|2,{81,99,0}}, +/* 55365 */ {(12<<2)|2,{81,99,0}}, +/* 55366 */ {(12<<2)|2,{81,99,0}}, +/* 55367 */ {(12<<2)|2,{81,99,0}}, +/* 55368 */ {(12<<2)|2,{81,99,0}}, +/* 55369 */ {(12<<2)|2,{81,99,0}}, +/* 55370 */ {(12<<2)|2,{81,99,0}}, +/* 55371 */ {(12<<2)|2,{81,99,0}}, +/* 55372 */ {(12<<2)|2,{81,99,0}}, +/* 55373 */ {(12<<2)|2,{81,99,0}}, +/* 55374 */ {(12<<2)|2,{81,99,0}}, +/* 55375 */ {(12<<2)|2,{81,99,0}}, +/* 55376 */ {(12<<2)|2,{81,101,0}}, +/* 55377 */ {(12<<2)|2,{81,101,0}}, +/* 55378 */ {(12<<2)|2,{81,101,0}}, +/* 55379 */ {(12<<2)|2,{81,101,0}}, +/* 55380 */ {(12<<2)|2,{81,101,0}}, +/* 55381 */ {(12<<2)|2,{81,101,0}}, +/* 55382 */ {(12<<2)|2,{81,101,0}}, +/* 55383 */ {(12<<2)|2,{81,101,0}}, +/* 55384 */ {(12<<2)|2,{81,101,0}}, +/* 55385 */ {(12<<2)|2,{81,101,0}}, +/* 55386 */ {(12<<2)|2,{81,101,0}}, +/* 55387 */ {(12<<2)|2,{81,101,0}}, +/* 55388 */ {(12<<2)|2,{81,101,0}}, +/* 55389 */ {(12<<2)|2,{81,101,0}}, +/* 55390 */ {(12<<2)|2,{81,101,0}}, +/* 55391 */ {(12<<2)|2,{81,101,0}}, +/* 55392 */ {(12<<2)|2,{81,105,0}}, +/* 55393 */ {(12<<2)|2,{81,105,0}}, +/* 55394 */ {(12<<2)|2,{81,105,0}}, +/* 55395 */ {(12<<2)|2,{81,105,0}}, +/* 55396 */ {(12<<2)|2,{81,105,0}}, +/* 55397 */ {(12<<2)|2,{81,105,0}}, +/* 55398 */ {(12<<2)|2,{81,105,0}}, +/* 55399 */ {(12<<2)|2,{81,105,0}}, +/* 55400 */ {(12<<2)|2,{81,105,0}}, +/* 55401 */ {(12<<2)|2,{81,105,0}}, +/* 55402 */ {(12<<2)|2,{81,105,0}}, +/* 55403 */ {(12<<2)|2,{81,105,0}}, +/* 55404 */ {(12<<2)|2,{81,105,0}}, +/* 55405 */ {(12<<2)|2,{81,105,0}}, +/* 55406 */ {(12<<2)|2,{81,105,0}}, +/* 55407 */ {(12<<2)|2,{81,105,0}}, +/* 55408 */ {(12<<2)|2,{81,111,0}}, +/* 55409 */ {(12<<2)|2,{81,111,0}}, +/* 55410 */ {(12<<2)|2,{81,111,0}}, +/* 55411 */ {(12<<2)|2,{81,111,0}}, +/* 55412 */ {(12<<2)|2,{81,111,0}}, +/* 55413 */ {(12<<2)|2,{81,111,0}}, +/* 55414 */ {(12<<2)|2,{81,111,0}}, +/* 55415 */ {(12<<2)|2,{81,111,0}}, +/* 55416 */ {(12<<2)|2,{81,111,0}}, +/* 55417 */ {(12<<2)|2,{81,111,0}}, +/* 55418 */ {(12<<2)|2,{81,111,0}}, +/* 55419 */ {(12<<2)|2,{81,111,0}}, +/* 55420 */ {(12<<2)|2,{81,111,0}}, +/* 55421 */ {(12<<2)|2,{81,111,0}}, +/* 55422 */ {(12<<2)|2,{81,111,0}}, +/* 55423 */ {(12<<2)|2,{81,111,0}}, +/* 55424 */ {(12<<2)|2,{81,115,0}}, +/* 55425 */ {(12<<2)|2,{81,115,0}}, +/* 55426 */ {(12<<2)|2,{81,115,0}}, +/* 55427 */ {(12<<2)|2,{81,115,0}}, +/* 55428 */ {(12<<2)|2,{81,115,0}}, +/* 55429 */ {(12<<2)|2,{81,115,0}}, +/* 55430 */ {(12<<2)|2,{81,115,0}}, +/* 55431 */ {(12<<2)|2,{81,115,0}}, +/* 55432 */ {(12<<2)|2,{81,115,0}}, +/* 55433 */ {(12<<2)|2,{81,115,0}}, +/* 55434 */ {(12<<2)|2,{81,115,0}}, +/* 55435 */ {(12<<2)|2,{81,115,0}}, +/* 55436 */ {(12<<2)|2,{81,115,0}}, +/* 55437 */ {(12<<2)|2,{81,115,0}}, +/* 55438 */ {(12<<2)|2,{81,115,0}}, +/* 55439 */ {(12<<2)|2,{81,115,0}}, +/* 55440 */ {(12<<2)|2,{81,116,0}}, +/* 55441 */ {(12<<2)|2,{81,116,0}}, +/* 55442 */ {(12<<2)|2,{81,116,0}}, +/* 55443 */ {(12<<2)|2,{81,116,0}}, +/* 55444 */ {(12<<2)|2,{81,116,0}}, +/* 55445 */ {(12<<2)|2,{81,116,0}}, +/* 55446 */ {(12<<2)|2,{81,116,0}}, +/* 55447 */ {(12<<2)|2,{81,116,0}}, +/* 55448 */ {(12<<2)|2,{81,116,0}}, +/* 55449 */ {(12<<2)|2,{81,116,0}}, +/* 55450 */ {(12<<2)|2,{81,116,0}}, +/* 55451 */ {(12<<2)|2,{81,116,0}}, +/* 55452 */ {(12<<2)|2,{81,116,0}}, +/* 55453 */ {(12<<2)|2,{81,116,0}}, +/* 55454 */ {(12<<2)|2,{81,116,0}}, +/* 55455 */ {(12<<2)|2,{81,116,0}}, +/* 55456 */ {(13<<2)|2,{81,32,0}}, +/* 55457 */ {(13<<2)|2,{81,32,0}}, +/* 55458 */ {(13<<2)|2,{81,32,0}}, +/* 55459 */ {(13<<2)|2,{81,32,0}}, +/* 55460 */ {(13<<2)|2,{81,32,0}}, +/* 55461 */ {(13<<2)|2,{81,32,0}}, +/* 55462 */ {(13<<2)|2,{81,32,0}}, +/* 55463 */ {(13<<2)|2,{81,32,0}}, +/* 55464 */ {(13<<2)|2,{81,37,0}}, +/* 55465 */ {(13<<2)|2,{81,37,0}}, +/* 55466 */ {(13<<2)|2,{81,37,0}}, +/* 55467 */ {(13<<2)|2,{81,37,0}}, +/* 55468 */ {(13<<2)|2,{81,37,0}}, +/* 55469 */ {(13<<2)|2,{81,37,0}}, +/* 55470 */ {(13<<2)|2,{81,37,0}}, +/* 55471 */ {(13<<2)|2,{81,37,0}}, +/* 55472 */ {(13<<2)|2,{81,45,0}}, +/* 55473 */ {(13<<2)|2,{81,45,0}}, +/* 55474 */ {(13<<2)|2,{81,45,0}}, +/* 55475 */ {(13<<2)|2,{81,45,0}}, +/* 55476 */ {(13<<2)|2,{81,45,0}}, +/* 55477 */ {(13<<2)|2,{81,45,0}}, +/* 55478 */ {(13<<2)|2,{81,45,0}}, +/* 55479 */ {(13<<2)|2,{81,45,0}}, +/* 55480 */ {(13<<2)|2,{81,46,0}}, +/* 55481 */ {(13<<2)|2,{81,46,0}}, +/* 55482 */ {(13<<2)|2,{81,46,0}}, +/* 55483 */ {(13<<2)|2,{81,46,0}}, +/* 55484 */ {(13<<2)|2,{81,46,0}}, +/* 55485 */ {(13<<2)|2,{81,46,0}}, +/* 55486 */ {(13<<2)|2,{81,46,0}}, +/* 55487 */ {(13<<2)|2,{81,46,0}}, +/* 55488 */ {(13<<2)|2,{81,47,0}}, +/* 55489 */ {(13<<2)|2,{81,47,0}}, +/* 55490 */ {(13<<2)|2,{81,47,0}}, +/* 55491 */ {(13<<2)|2,{81,47,0}}, +/* 55492 */ {(13<<2)|2,{81,47,0}}, +/* 55493 */ {(13<<2)|2,{81,47,0}}, +/* 55494 */ {(13<<2)|2,{81,47,0}}, +/* 55495 */ {(13<<2)|2,{81,47,0}}, +/* 55496 */ {(13<<2)|2,{81,51,0}}, +/* 55497 */ {(13<<2)|2,{81,51,0}}, +/* 55498 */ {(13<<2)|2,{81,51,0}}, +/* 55499 */ {(13<<2)|2,{81,51,0}}, +/* 55500 */ {(13<<2)|2,{81,51,0}}, +/* 55501 */ {(13<<2)|2,{81,51,0}}, +/* 55502 */ {(13<<2)|2,{81,51,0}}, +/* 55503 */ {(13<<2)|2,{81,51,0}}, +/* 55504 */ {(13<<2)|2,{81,52,0}}, +/* 55505 */ {(13<<2)|2,{81,52,0}}, +/* 55506 */ {(13<<2)|2,{81,52,0}}, +/* 55507 */ {(13<<2)|2,{81,52,0}}, +/* 55508 */ {(13<<2)|2,{81,52,0}}, +/* 55509 */ {(13<<2)|2,{81,52,0}}, +/* 55510 */ {(13<<2)|2,{81,52,0}}, +/* 55511 */ {(13<<2)|2,{81,52,0}}, +/* 55512 */ {(13<<2)|2,{81,53,0}}, +/* 55513 */ {(13<<2)|2,{81,53,0}}, +/* 55514 */ {(13<<2)|2,{81,53,0}}, +/* 55515 */ {(13<<2)|2,{81,53,0}}, +/* 55516 */ {(13<<2)|2,{81,53,0}}, +/* 55517 */ {(13<<2)|2,{81,53,0}}, +/* 55518 */ {(13<<2)|2,{81,53,0}}, +/* 55519 */ {(13<<2)|2,{81,53,0}}, +/* 55520 */ {(13<<2)|2,{81,54,0}}, +/* 55521 */ {(13<<2)|2,{81,54,0}}, +/* 55522 */ {(13<<2)|2,{81,54,0}}, +/* 55523 */ {(13<<2)|2,{81,54,0}}, +/* 55524 */ {(13<<2)|2,{81,54,0}}, +/* 55525 */ {(13<<2)|2,{81,54,0}}, +/* 55526 */ {(13<<2)|2,{81,54,0}}, +/* 55527 */ {(13<<2)|2,{81,54,0}}, +/* 55528 */ {(13<<2)|2,{81,55,0}}, +/* 55529 */ {(13<<2)|2,{81,55,0}}, +/* 55530 */ {(13<<2)|2,{81,55,0}}, +/* 55531 */ {(13<<2)|2,{81,55,0}}, +/* 55532 */ {(13<<2)|2,{81,55,0}}, +/* 55533 */ {(13<<2)|2,{81,55,0}}, +/* 55534 */ {(13<<2)|2,{81,55,0}}, +/* 55535 */ {(13<<2)|2,{81,55,0}}, +/* 55536 */ {(13<<2)|2,{81,56,0}}, +/* 55537 */ {(13<<2)|2,{81,56,0}}, +/* 55538 */ {(13<<2)|2,{81,56,0}}, +/* 55539 */ {(13<<2)|2,{81,56,0}}, +/* 55540 */ {(13<<2)|2,{81,56,0}}, +/* 55541 */ {(13<<2)|2,{81,56,0}}, +/* 55542 */ {(13<<2)|2,{81,56,0}}, +/* 55543 */ {(13<<2)|2,{81,56,0}}, +/* 55544 */ {(13<<2)|2,{81,57,0}}, +/* 55545 */ {(13<<2)|2,{81,57,0}}, +/* 55546 */ {(13<<2)|2,{81,57,0}}, +/* 55547 */ {(13<<2)|2,{81,57,0}}, +/* 55548 */ {(13<<2)|2,{81,57,0}}, +/* 55549 */ {(13<<2)|2,{81,57,0}}, +/* 55550 */ {(13<<2)|2,{81,57,0}}, +/* 55551 */ {(13<<2)|2,{81,57,0}}, +/* 55552 */ {(13<<2)|2,{81,61,0}}, +/* 55553 */ {(13<<2)|2,{81,61,0}}, +/* 55554 */ {(13<<2)|2,{81,61,0}}, +/* 55555 */ {(13<<2)|2,{81,61,0}}, +/* 55556 */ {(13<<2)|2,{81,61,0}}, +/* 55557 */ {(13<<2)|2,{81,61,0}}, +/* 55558 */ {(13<<2)|2,{81,61,0}}, +/* 55559 */ {(13<<2)|2,{81,61,0}}, +/* 55560 */ {(13<<2)|2,{81,65,0}}, +/* 55561 */ {(13<<2)|2,{81,65,0}}, +/* 55562 */ {(13<<2)|2,{81,65,0}}, +/* 55563 */ {(13<<2)|2,{81,65,0}}, +/* 55564 */ {(13<<2)|2,{81,65,0}}, +/* 55565 */ {(13<<2)|2,{81,65,0}}, +/* 55566 */ {(13<<2)|2,{81,65,0}}, +/* 55567 */ {(13<<2)|2,{81,65,0}}, +/* 55568 */ {(13<<2)|2,{81,95,0}}, +/* 55569 */ {(13<<2)|2,{81,95,0}}, +/* 55570 */ {(13<<2)|2,{81,95,0}}, +/* 55571 */ {(13<<2)|2,{81,95,0}}, +/* 55572 */ {(13<<2)|2,{81,95,0}}, +/* 55573 */ {(13<<2)|2,{81,95,0}}, +/* 55574 */ {(13<<2)|2,{81,95,0}}, +/* 55575 */ {(13<<2)|2,{81,95,0}}, +/* 55576 */ {(13<<2)|2,{81,98,0}}, +/* 55577 */ {(13<<2)|2,{81,98,0}}, +/* 55578 */ {(13<<2)|2,{81,98,0}}, +/* 55579 */ {(13<<2)|2,{81,98,0}}, +/* 55580 */ {(13<<2)|2,{81,98,0}}, +/* 55581 */ {(13<<2)|2,{81,98,0}}, +/* 55582 */ {(13<<2)|2,{81,98,0}}, +/* 55583 */ {(13<<2)|2,{81,98,0}}, +/* 55584 */ {(13<<2)|2,{81,100,0}}, +/* 55585 */ {(13<<2)|2,{81,100,0}}, +/* 55586 */ {(13<<2)|2,{81,100,0}}, +/* 55587 */ {(13<<2)|2,{81,100,0}}, +/* 55588 */ {(13<<2)|2,{81,100,0}}, +/* 55589 */ {(13<<2)|2,{81,100,0}}, +/* 55590 */ {(13<<2)|2,{81,100,0}}, +/* 55591 */ {(13<<2)|2,{81,100,0}}, +/* 55592 */ {(13<<2)|2,{81,102,0}}, +/* 55593 */ {(13<<2)|2,{81,102,0}}, +/* 55594 */ {(13<<2)|2,{81,102,0}}, +/* 55595 */ {(13<<2)|2,{81,102,0}}, +/* 55596 */ {(13<<2)|2,{81,102,0}}, +/* 55597 */ {(13<<2)|2,{81,102,0}}, +/* 55598 */ {(13<<2)|2,{81,102,0}}, +/* 55599 */ {(13<<2)|2,{81,102,0}}, +/* 55600 */ {(13<<2)|2,{81,103,0}}, +/* 55601 */ {(13<<2)|2,{81,103,0}}, +/* 55602 */ {(13<<2)|2,{81,103,0}}, +/* 55603 */ {(13<<2)|2,{81,103,0}}, +/* 55604 */ {(13<<2)|2,{81,103,0}}, +/* 55605 */ {(13<<2)|2,{81,103,0}}, +/* 55606 */ {(13<<2)|2,{81,103,0}}, +/* 55607 */ {(13<<2)|2,{81,103,0}}, +/* 55608 */ {(13<<2)|2,{81,104,0}}, +/* 55609 */ {(13<<2)|2,{81,104,0}}, +/* 55610 */ {(13<<2)|2,{81,104,0}}, +/* 55611 */ {(13<<2)|2,{81,104,0}}, +/* 55612 */ {(13<<2)|2,{81,104,0}}, +/* 55613 */ {(13<<2)|2,{81,104,0}}, +/* 55614 */ {(13<<2)|2,{81,104,0}}, +/* 55615 */ {(13<<2)|2,{81,104,0}}, +/* 55616 */ {(13<<2)|2,{81,108,0}}, +/* 55617 */ {(13<<2)|2,{81,108,0}}, +/* 55618 */ {(13<<2)|2,{81,108,0}}, +/* 55619 */ {(13<<2)|2,{81,108,0}}, +/* 55620 */ {(13<<2)|2,{81,108,0}}, +/* 55621 */ {(13<<2)|2,{81,108,0}}, +/* 55622 */ {(13<<2)|2,{81,108,0}}, +/* 55623 */ {(13<<2)|2,{81,108,0}}, +/* 55624 */ {(13<<2)|2,{81,109,0}}, +/* 55625 */ {(13<<2)|2,{81,109,0}}, +/* 55626 */ {(13<<2)|2,{81,109,0}}, +/* 55627 */ {(13<<2)|2,{81,109,0}}, +/* 55628 */ {(13<<2)|2,{81,109,0}}, +/* 55629 */ {(13<<2)|2,{81,109,0}}, +/* 55630 */ {(13<<2)|2,{81,109,0}}, +/* 55631 */ {(13<<2)|2,{81,109,0}}, +/* 55632 */ {(13<<2)|2,{81,110,0}}, +/* 55633 */ {(13<<2)|2,{81,110,0}}, +/* 55634 */ {(13<<2)|2,{81,110,0}}, +/* 55635 */ {(13<<2)|2,{81,110,0}}, +/* 55636 */ {(13<<2)|2,{81,110,0}}, +/* 55637 */ {(13<<2)|2,{81,110,0}}, +/* 55638 */ {(13<<2)|2,{81,110,0}}, +/* 55639 */ {(13<<2)|2,{81,110,0}}, +/* 55640 */ {(13<<2)|2,{81,112,0}}, +/* 55641 */ {(13<<2)|2,{81,112,0}}, +/* 55642 */ {(13<<2)|2,{81,112,0}}, +/* 55643 */ {(13<<2)|2,{81,112,0}}, +/* 55644 */ {(13<<2)|2,{81,112,0}}, +/* 55645 */ {(13<<2)|2,{81,112,0}}, +/* 55646 */ {(13<<2)|2,{81,112,0}}, +/* 55647 */ {(13<<2)|2,{81,112,0}}, +/* 55648 */ {(13<<2)|2,{81,114,0}}, +/* 55649 */ {(13<<2)|2,{81,114,0}}, +/* 55650 */ {(13<<2)|2,{81,114,0}}, +/* 55651 */ {(13<<2)|2,{81,114,0}}, +/* 55652 */ {(13<<2)|2,{81,114,0}}, +/* 55653 */ {(13<<2)|2,{81,114,0}}, +/* 55654 */ {(13<<2)|2,{81,114,0}}, +/* 55655 */ {(13<<2)|2,{81,114,0}}, +/* 55656 */ {(13<<2)|2,{81,117,0}}, +/* 55657 */ {(13<<2)|2,{81,117,0}}, +/* 55658 */ {(13<<2)|2,{81,117,0}}, +/* 55659 */ {(13<<2)|2,{81,117,0}}, +/* 55660 */ {(13<<2)|2,{81,117,0}}, +/* 55661 */ {(13<<2)|2,{81,117,0}}, +/* 55662 */ {(13<<2)|2,{81,117,0}}, +/* 55663 */ {(13<<2)|2,{81,117,0}}, +/* 55664 */ {(14<<2)|2,{81,58,0}}, +/* 55665 */ {(14<<2)|2,{81,58,0}}, +/* 55666 */ {(14<<2)|2,{81,58,0}}, +/* 55667 */ {(14<<2)|2,{81,58,0}}, +/* 55668 */ {(14<<2)|2,{81,66,0}}, +/* 55669 */ {(14<<2)|2,{81,66,0}}, +/* 55670 */ {(14<<2)|2,{81,66,0}}, +/* 55671 */ {(14<<2)|2,{81,66,0}}, +/* 55672 */ {(14<<2)|2,{81,67,0}}, +/* 55673 */ {(14<<2)|2,{81,67,0}}, +/* 55674 */ {(14<<2)|2,{81,67,0}}, +/* 55675 */ {(14<<2)|2,{81,67,0}}, +/* 55676 */ {(14<<2)|2,{81,68,0}}, +/* 55677 */ {(14<<2)|2,{81,68,0}}, +/* 55678 */ {(14<<2)|2,{81,68,0}}, +/* 55679 */ {(14<<2)|2,{81,68,0}}, +/* 55680 */ {(14<<2)|2,{81,69,0}}, +/* 55681 */ {(14<<2)|2,{81,69,0}}, +/* 55682 */ {(14<<2)|2,{81,69,0}}, +/* 55683 */ {(14<<2)|2,{81,69,0}}, +/* 55684 */ {(14<<2)|2,{81,70,0}}, +/* 55685 */ {(14<<2)|2,{81,70,0}}, +/* 55686 */ {(14<<2)|2,{81,70,0}}, +/* 55687 */ {(14<<2)|2,{81,70,0}}, +/* 55688 */ {(14<<2)|2,{81,71,0}}, +/* 55689 */ {(14<<2)|2,{81,71,0}}, +/* 55690 */ {(14<<2)|2,{81,71,0}}, +/* 55691 */ {(14<<2)|2,{81,71,0}}, +/* 55692 */ {(14<<2)|2,{81,72,0}}, +/* 55693 */ {(14<<2)|2,{81,72,0}}, +/* 55694 */ {(14<<2)|2,{81,72,0}}, +/* 55695 */ {(14<<2)|2,{81,72,0}}, +/* 55696 */ {(14<<2)|2,{81,73,0}}, +/* 55697 */ {(14<<2)|2,{81,73,0}}, +/* 55698 */ {(14<<2)|2,{81,73,0}}, +/* 55699 */ {(14<<2)|2,{81,73,0}}, +/* 55700 */ {(14<<2)|2,{81,74,0}}, +/* 55701 */ {(14<<2)|2,{81,74,0}}, +/* 55702 */ {(14<<2)|2,{81,74,0}}, +/* 55703 */ {(14<<2)|2,{81,74,0}}, +/* 55704 */ {(14<<2)|2,{81,75,0}}, +/* 55705 */ {(14<<2)|2,{81,75,0}}, +/* 55706 */ {(14<<2)|2,{81,75,0}}, +/* 55707 */ {(14<<2)|2,{81,75,0}}, +/* 55708 */ {(14<<2)|2,{81,76,0}}, +/* 55709 */ {(14<<2)|2,{81,76,0}}, +/* 55710 */ {(14<<2)|2,{81,76,0}}, +/* 55711 */ {(14<<2)|2,{81,76,0}}, +/* 55712 */ {(14<<2)|2,{81,77,0}}, +/* 55713 */ {(14<<2)|2,{81,77,0}}, +/* 55714 */ {(14<<2)|2,{81,77,0}}, +/* 55715 */ {(14<<2)|2,{81,77,0}}, +/* 55716 */ {(14<<2)|2,{81,78,0}}, +/* 55717 */ {(14<<2)|2,{81,78,0}}, +/* 55718 */ {(14<<2)|2,{81,78,0}}, +/* 55719 */ {(14<<2)|2,{81,78,0}}, +/* 55720 */ {(14<<2)|2,{81,79,0}}, +/* 55721 */ {(14<<2)|2,{81,79,0}}, +/* 55722 */ {(14<<2)|2,{81,79,0}}, +/* 55723 */ {(14<<2)|2,{81,79,0}}, +/* 55724 */ {(14<<2)|2,{81,80,0}}, +/* 55725 */ {(14<<2)|2,{81,80,0}}, +/* 55726 */ {(14<<2)|2,{81,80,0}}, +/* 55727 */ {(14<<2)|2,{81,80,0}}, +/* 55728 */ {(14<<2)|2,{81,81,0}}, +/* 55729 */ {(14<<2)|2,{81,81,0}}, +/* 55730 */ {(14<<2)|2,{81,81,0}}, +/* 55731 */ {(14<<2)|2,{81,81,0}}, +/* 55732 */ {(14<<2)|2,{81,82,0}}, +/* 55733 */ {(14<<2)|2,{81,82,0}}, +/* 55734 */ {(14<<2)|2,{81,82,0}}, +/* 55735 */ {(14<<2)|2,{81,82,0}}, +/* 55736 */ {(14<<2)|2,{81,83,0}}, +/* 55737 */ {(14<<2)|2,{81,83,0}}, +/* 55738 */ {(14<<2)|2,{81,83,0}}, +/* 55739 */ {(14<<2)|2,{81,83,0}}, +/* 55740 */ {(14<<2)|2,{81,84,0}}, +/* 55741 */ {(14<<2)|2,{81,84,0}}, +/* 55742 */ {(14<<2)|2,{81,84,0}}, +/* 55743 */ {(14<<2)|2,{81,84,0}}, +/* 55744 */ {(14<<2)|2,{81,85,0}}, +/* 55745 */ {(14<<2)|2,{81,85,0}}, +/* 55746 */ {(14<<2)|2,{81,85,0}}, +/* 55747 */ {(14<<2)|2,{81,85,0}}, +/* 55748 */ {(14<<2)|2,{81,86,0}}, +/* 55749 */ {(14<<2)|2,{81,86,0}}, +/* 55750 */ {(14<<2)|2,{81,86,0}}, +/* 55751 */ {(14<<2)|2,{81,86,0}}, +/* 55752 */ {(14<<2)|2,{81,87,0}}, +/* 55753 */ {(14<<2)|2,{81,87,0}}, +/* 55754 */ {(14<<2)|2,{81,87,0}}, +/* 55755 */ {(14<<2)|2,{81,87,0}}, +/* 55756 */ {(14<<2)|2,{81,89,0}}, +/* 55757 */ {(14<<2)|2,{81,89,0}}, +/* 55758 */ {(14<<2)|2,{81,89,0}}, +/* 55759 */ {(14<<2)|2,{81,89,0}}, +/* 55760 */ {(14<<2)|2,{81,106,0}}, +/* 55761 */ {(14<<2)|2,{81,106,0}}, +/* 55762 */ {(14<<2)|2,{81,106,0}}, +/* 55763 */ {(14<<2)|2,{81,106,0}}, +/* 55764 */ {(14<<2)|2,{81,107,0}}, +/* 55765 */ {(14<<2)|2,{81,107,0}}, +/* 55766 */ {(14<<2)|2,{81,107,0}}, +/* 55767 */ {(14<<2)|2,{81,107,0}}, +/* 55768 */ {(14<<2)|2,{81,113,0}}, +/* 55769 */ {(14<<2)|2,{81,113,0}}, +/* 55770 */ {(14<<2)|2,{81,113,0}}, +/* 55771 */ {(14<<2)|2,{81,113,0}}, +/* 55772 */ {(14<<2)|2,{81,118,0}}, +/* 55773 */ {(14<<2)|2,{81,118,0}}, +/* 55774 */ {(14<<2)|2,{81,118,0}}, +/* 55775 */ {(14<<2)|2,{81,118,0}}, +/* 55776 */ {(14<<2)|2,{81,119,0}}, +/* 55777 */ {(14<<2)|2,{81,119,0}}, +/* 55778 */ {(14<<2)|2,{81,119,0}}, +/* 55779 */ {(14<<2)|2,{81,119,0}}, +/* 55780 */ {(14<<2)|2,{81,120,0}}, +/* 55781 */ {(14<<2)|2,{81,120,0}}, +/* 55782 */ {(14<<2)|2,{81,120,0}}, +/* 55783 */ {(14<<2)|2,{81,120,0}}, +/* 55784 */ {(14<<2)|2,{81,121,0}}, +/* 55785 */ {(14<<2)|2,{81,121,0}}, +/* 55786 */ {(14<<2)|2,{81,121,0}}, +/* 55787 */ {(14<<2)|2,{81,121,0}}, +/* 55788 */ {(14<<2)|2,{81,122,0}}, +/* 55789 */ {(14<<2)|2,{81,122,0}}, +/* 55790 */ {(14<<2)|2,{81,122,0}}, +/* 55791 */ {(14<<2)|2,{81,122,0}}, +/* 55792 */ {(15<<2)|2,{81,38,0}}, +/* 55793 */ {(15<<2)|2,{81,38,0}}, +/* 55794 */ {(15<<2)|2,{81,42,0}}, +/* 55795 */ {(15<<2)|2,{81,42,0}}, +/* 55796 */ {(15<<2)|2,{81,44,0}}, +/* 55797 */ {(15<<2)|2,{81,44,0}}, +/* 55798 */ {(15<<2)|2,{81,59,0}}, +/* 55799 */ {(15<<2)|2,{81,59,0}}, +/* 55800 */ {(15<<2)|2,{81,88,0}}, +/* 55801 */ {(15<<2)|2,{81,88,0}}, +/* 55802 */ {(15<<2)|2,{81,90,0}}, +/* 55803 */ {(15<<2)|2,{81,90,0}}, +/* 55804 */ {(7<<2)|1,{81,0,0}}, +/* 55805 */ {(7<<2)|1,{81,0,0}}, +/* 55806 */ {(7<<2)|1,{81,0,0}}, +/* 55807 */ {(7<<2)|1,{81,0,0}}, +/* 55808 */ {(12<<2)|2,{82,48,0}}, +/* 55809 */ {(12<<2)|2,{82,48,0}}, +/* 55810 */ {(12<<2)|2,{82,48,0}}, +/* 55811 */ {(12<<2)|2,{82,48,0}}, +/* 55812 */ {(12<<2)|2,{82,48,0}}, +/* 55813 */ {(12<<2)|2,{82,48,0}}, +/* 55814 */ {(12<<2)|2,{82,48,0}}, +/* 55815 */ {(12<<2)|2,{82,48,0}}, +/* 55816 */ {(12<<2)|2,{82,48,0}}, +/* 55817 */ {(12<<2)|2,{82,48,0}}, +/* 55818 */ {(12<<2)|2,{82,48,0}}, +/* 55819 */ {(12<<2)|2,{82,48,0}}, +/* 55820 */ {(12<<2)|2,{82,48,0}}, +/* 55821 */ {(12<<2)|2,{82,48,0}}, +/* 55822 */ {(12<<2)|2,{82,48,0}}, +/* 55823 */ {(12<<2)|2,{82,48,0}}, +/* 55824 */ {(12<<2)|2,{82,49,0}}, +/* 55825 */ {(12<<2)|2,{82,49,0}}, +/* 55826 */ {(12<<2)|2,{82,49,0}}, +/* 55827 */ {(12<<2)|2,{82,49,0}}, +/* 55828 */ {(12<<2)|2,{82,49,0}}, +/* 55829 */ {(12<<2)|2,{82,49,0}}, +/* 55830 */ {(12<<2)|2,{82,49,0}}, +/* 55831 */ {(12<<2)|2,{82,49,0}}, +/* 55832 */ {(12<<2)|2,{82,49,0}}, +/* 55833 */ {(12<<2)|2,{82,49,0}}, +/* 55834 */ {(12<<2)|2,{82,49,0}}, +/* 55835 */ {(12<<2)|2,{82,49,0}}, +/* 55836 */ {(12<<2)|2,{82,49,0}}, +/* 55837 */ {(12<<2)|2,{82,49,0}}, +/* 55838 */ {(12<<2)|2,{82,49,0}}, +/* 55839 */ {(12<<2)|2,{82,49,0}}, +/* 55840 */ {(12<<2)|2,{82,50,0}}, +/* 55841 */ {(12<<2)|2,{82,50,0}}, +/* 55842 */ {(12<<2)|2,{82,50,0}}, +/* 55843 */ {(12<<2)|2,{82,50,0}}, +/* 55844 */ {(12<<2)|2,{82,50,0}}, +/* 55845 */ {(12<<2)|2,{82,50,0}}, +/* 55846 */ {(12<<2)|2,{82,50,0}}, +/* 55847 */ {(12<<2)|2,{82,50,0}}, +/* 55848 */ {(12<<2)|2,{82,50,0}}, +/* 55849 */ {(12<<2)|2,{82,50,0}}, +/* 55850 */ {(12<<2)|2,{82,50,0}}, +/* 55851 */ {(12<<2)|2,{82,50,0}}, +/* 55852 */ {(12<<2)|2,{82,50,0}}, +/* 55853 */ {(12<<2)|2,{82,50,0}}, +/* 55854 */ {(12<<2)|2,{82,50,0}}, +/* 55855 */ {(12<<2)|2,{82,50,0}}, +/* 55856 */ {(12<<2)|2,{82,97,0}}, +/* 55857 */ {(12<<2)|2,{82,97,0}}, +/* 55858 */ {(12<<2)|2,{82,97,0}}, +/* 55859 */ {(12<<2)|2,{82,97,0}}, +/* 55860 */ {(12<<2)|2,{82,97,0}}, +/* 55861 */ {(12<<2)|2,{82,97,0}}, +/* 55862 */ {(12<<2)|2,{82,97,0}}, +/* 55863 */ {(12<<2)|2,{82,97,0}}, +/* 55864 */ {(12<<2)|2,{82,97,0}}, +/* 55865 */ {(12<<2)|2,{82,97,0}}, +/* 55866 */ {(12<<2)|2,{82,97,0}}, +/* 55867 */ {(12<<2)|2,{82,97,0}}, +/* 55868 */ {(12<<2)|2,{82,97,0}}, +/* 55869 */ {(12<<2)|2,{82,97,0}}, +/* 55870 */ {(12<<2)|2,{82,97,0}}, +/* 55871 */ {(12<<2)|2,{82,97,0}}, +/* 55872 */ {(12<<2)|2,{82,99,0}}, +/* 55873 */ {(12<<2)|2,{82,99,0}}, +/* 55874 */ {(12<<2)|2,{82,99,0}}, +/* 55875 */ {(12<<2)|2,{82,99,0}}, +/* 55876 */ {(12<<2)|2,{82,99,0}}, +/* 55877 */ {(12<<2)|2,{82,99,0}}, +/* 55878 */ {(12<<2)|2,{82,99,0}}, +/* 55879 */ {(12<<2)|2,{82,99,0}}, +/* 55880 */ {(12<<2)|2,{82,99,0}}, +/* 55881 */ {(12<<2)|2,{82,99,0}}, +/* 55882 */ {(12<<2)|2,{82,99,0}}, +/* 55883 */ {(12<<2)|2,{82,99,0}}, +/* 55884 */ {(12<<2)|2,{82,99,0}}, +/* 55885 */ {(12<<2)|2,{82,99,0}}, +/* 55886 */ {(12<<2)|2,{82,99,0}}, +/* 55887 */ {(12<<2)|2,{82,99,0}}, +/* 55888 */ {(12<<2)|2,{82,101,0}}, +/* 55889 */ {(12<<2)|2,{82,101,0}}, +/* 55890 */ {(12<<2)|2,{82,101,0}}, +/* 55891 */ {(12<<2)|2,{82,101,0}}, +/* 55892 */ {(12<<2)|2,{82,101,0}}, +/* 55893 */ {(12<<2)|2,{82,101,0}}, +/* 55894 */ {(12<<2)|2,{82,101,0}}, +/* 55895 */ {(12<<2)|2,{82,101,0}}, +/* 55896 */ {(12<<2)|2,{82,101,0}}, +/* 55897 */ {(12<<2)|2,{82,101,0}}, +/* 55898 */ {(12<<2)|2,{82,101,0}}, +/* 55899 */ {(12<<2)|2,{82,101,0}}, +/* 55900 */ {(12<<2)|2,{82,101,0}}, +/* 55901 */ {(12<<2)|2,{82,101,0}}, +/* 55902 */ {(12<<2)|2,{82,101,0}}, +/* 55903 */ {(12<<2)|2,{82,101,0}}, +/* 55904 */ {(12<<2)|2,{82,105,0}}, +/* 55905 */ {(12<<2)|2,{82,105,0}}, +/* 55906 */ {(12<<2)|2,{82,105,0}}, +/* 55907 */ {(12<<2)|2,{82,105,0}}, +/* 55908 */ {(12<<2)|2,{82,105,0}}, +/* 55909 */ {(12<<2)|2,{82,105,0}}, +/* 55910 */ {(12<<2)|2,{82,105,0}}, +/* 55911 */ {(12<<2)|2,{82,105,0}}, +/* 55912 */ {(12<<2)|2,{82,105,0}}, +/* 55913 */ {(12<<2)|2,{82,105,0}}, +/* 55914 */ {(12<<2)|2,{82,105,0}}, +/* 55915 */ {(12<<2)|2,{82,105,0}}, +/* 55916 */ {(12<<2)|2,{82,105,0}}, +/* 55917 */ {(12<<2)|2,{82,105,0}}, +/* 55918 */ {(12<<2)|2,{82,105,0}}, +/* 55919 */ {(12<<2)|2,{82,105,0}}, +/* 55920 */ {(12<<2)|2,{82,111,0}}, +/* 55921 */ {(12<<2)|2,{82,111,0}}, +/* 55922 */ {(12<<2)|2,{82,111,0}}, +/* 55923 */ {(12<<2)|2,{82,111,0}}, +/* 55924 */ {(12<<2)|2,{82,111,0}}, +/* 55925 */ {(12<<2)|2,{82,111,0}}, +/* 55926 */ {(12<<2)|2,{82,111,0}}, +/* 55927 */ {(12<<2)|2,{82,111,0}}, +/* 55928 */ {(12<<2)|2,{82,111,0}}, +/* 55929 */ {(12<<2)|2,{82,111,0}}, +/* 55930 */ {(12<<2)|2,{82,111,0}}, +/* 55931 */ {(12<<2)|2,{82,111,0}}, +/* 55932 */ {(12<<2)|2,{82,111,0}}, +/* 55933 */ {(12<<2)|2,{82,111,0}}, +/* 55934 */ {(12<<2)|2,{82,111,0}}, +/* 55935 */ {(12<<2)|2,{82,111,0}}, +/* 55936 */ {(12<<2)|2,{82,115,0}}, +/* 55937 */ {(12<<2)|2,{82,115,0}}, +/* 55938 */ {(12<<2)|2,{82,115,0}}, +/* 55939 */ {(12<<2)|2,{82,115,0}}, +/* 55940 */ {(12<<2)|2,{82,115,0}}, +/* 55941 */ {(12<<2)|2,{82,115,0}}, +/* 55942 */ {(12<<2)|2,{82,115,0}}, +/* 55943 */ {(12<<2)|2,{82,115,0}}, +/* 55944 */ {(12<<2)|2,{82,115,0}}, +/* 55945 */ {(12<<2)|2,{82,115,0}}, +/* 55946 */ {(12<<2)|2,{82,115,0}}, +/* 55947 */ {(12<<2)|2,{82,115,0}}, +/* 55948 */ {(12<<2)|2,{82,115,0}}, +/* 55949 */ {(12<<2)|2,{82,115,0}}, +/* 55950 */ {(12<<2)|2,{82,115,0}}, +/* 55951 */ {(12<<2)|2,{82,115,0}}, +/* 55952 */ {(12<<2)|2,{82,116,0}}, +/* 55953 */ {(12<<2)|2,{82,116,0}}, +/* 55954 */ {(12<<2)|2,{82,116,0}}, +/* 55955 */ {(12<<2)|2,{82,116,0}}, +/* 55956 */ {(12<<2)|2,{82,116,0}}, +/* 55957 */ {(12<<2)|2,{82,116,0}}, +/* 55958 */ {(12<<2)|2,{82,116,0}}, +/* 55959 */ {(12<<2)|2,{82,116,0}}, +/* 55960 */ {(12<<2)|2,{82,116,0}}, +/* 55961 */ {(12<<2)|2,{82,116,0}}, +/* 55962 */ {(12<<2)|2,{82,116,0}}, +/* 55963 */ {(12<<2)|2,{82,116,0}}, +/* 55964 */ {(12<<2)|2,{82,116,0}}, +/* 55965 */ {(12<<2)|2,{82,116,0}}, +/* 55966 */ {(12<<2)|2,{82,116,0}}, +/* 55967 */ {(12<<2)|2,{82,116,0}}, +/* 55968 */ {(13<<2)|2,{82,32,0}}, +/* 55969 */ {(13<<2)|2,{82,32,0}}, +/* 55970 */ {(13<<2)|2,{82,32,0}}, +/* 55971 */ {(13<<2)|2,{82,32,0}}, +/* 55972 */ {(13<<2)|2,{82,32,0}}, +/* 55973 */ {(13<<2)|2,{82,32,0}}, +/* 55974 */ {(13<<2)|2,{82,32,0}}, +/* 55975 */ {(13<<2)|2,{82,32,0}}, +/* 55976 */ {(13<<2)|2,{82,37,0}}, +/* 55977 */ {(13<<2)|2,{82,37,0}}, +/* 55978 */ {(13<<2)|2,{82,37,0}}, +/* 55979 */ {(13<<2)|2,{82,37,0}}, +/* 55980 */ {(13<<2)|2,{82,37,0}}, +/* 55981 */ {(13<<2)|2,{82,37,0}}, +/* 55982 */ {(13<<2)|2,{82,37,0}}, +/* 55983 */ {(13<<2)|2,{82,37,0}}, +/* 55984 */ {(13<<2)|2,{82,45,0}}, +/* 55985 */ {(13<<2)|2,{82,45,0}}, +/* 55986 */ {(13<<2)|2,{82,45,0}}, +/* 55987 */ {(13<<2)|2,{82,45,0}}, +/* 55988 */ {(13<<2)|2,{82,45,0}}, +/* 55989 */ {(13<<2)|2,{82,45,0}}, +/* 55990 */ {(13<<2)|2,{82,45,0}}, +/* 55991 */ {(13<<2)|2,{82,45,0}}, +/* 55992 */ {(13<<2)|2,{82,46,0}}, +/* 55993 */ {(13<<2)|2,{82,46,0}}, +/* 55994 */ {(13<<2)|2,{82,46,0}}, +/* 55995 */ {(13<<2)|2,{82,46,0}}, +/* 55996 */ {(13<<2)|2,{82,46,0}}, +/* 55997 */ {(13<<2)|2,{82,46,0}}, +/* 55998 */ {(13<<2)|2,{82,46,0}}, +/* 55999 */ {(13<<2)|2,{82,46,0}}, +/* 56000 */ {(13<<2)|2,{82,47,0}}, +/* 56001 */ {(13<<2)|2,{82,47,0}}, +/* 56002 */ {(13<<2)|2,{82,47,0}}, +/* 56003 */ {(13<<2)|2,{82,47,0}}, +/* 56004 */ {(13<<2)|2,{82,47,0}}, +/* 56005 */ {(13<<2)|2,{82,47,0}}, +/* 56006 */ {(13<<2)|2,{82,47,0}}, +/* 56007 */ {(13<<2)|2,{82,47,0}}, +/* 56008 */ {(13<<2)|2,{82,51,0}}, +/* 56009 */ {(13<<2)|2,{82,51,0}}, +/* 56010 */ {(13<<2)|2,{82,51,0}}, +/* 56011 */ {(13<<2)|2,{82,51,0}}, +/* 56012 */ {(13<<2)|2,{82,51,0}}, +/* 56013 */ {(13<<2)|2,{82,51,0}}, +/* 56014 */ {(13<<2)|2,{82,51,0}}, +/* 56015 */ {(13<<2)|2,{82,51,0}}, +/* 56016 */ {(13<<2)|2,{82,52,0}}, +/* 56017 */ {(13<<2)|2,{82,52,0}}, +/* 56018 */ {(13<<2)|2,{82,52,0}}, +/* 56019 */ {(13<<2)|2,{82,52,0}}, +/* 56020 */ {(13<<2)|2,{82,52,0}}, +/* 56021 */ {(13<<2)|2,{82,52,0}}, +/* 56022 */ {(13<<2)|2,{82,52,0}}, +/* 56023 */ {(13<<2)|2,{82,52,0}}, +/* 56024 */ {(13<<2)|2,{82,53,0}}, +/* 56025 */ {(13<<2)|2,{82,53,0}}, +/* 56026 */ {(13<<2)|2,{82,53,0}}, +/* 56027 */ {(13<<2)|2,{82,53,0}}, +/* 56028 */ {(13<<2)|2,{82,53,0}}, +/* 56029 */ {(13<<2)|2,{82,53,0}}, +/* 56030 */ {(13<<2)|2,{82,53,0}}, +/* 56031 */ {(13<<2)|2,{82,53,0}}, +/* 56032 */ {(13<<2)|2,{82,54,0}}, +/* 56033 */ {(13<<2)|2,{82,54,0}}, +/* 56034 */ {(13<<2)|2,{82,54,0}}, +/* 56035 */ {(13<<2)|2,{82,54,0}}, +/* 56036 */ {(13<<2)|2,{82,54,0}}, +/* 56037 */ {(13<<2)|2,{82,54,0}}, +/* 56038 */ {(13<<2)|2,{82,54,0}}, +/* 56039 */ {(13<<2)|2,{82,54,0}}, +/* 56040 */ {(13<<2)|2,{82,55,0}}, +/* 56041 */ {(13<<2)|2,{82,55,0}}, +/* 56042 */ {(13<<2)|2,{82,55,0}}, +/* 56043 */ {(13<<2)|2,{82,55,0}}, +/* 56044 */ {(13<<2)|2,{82,55,0}}, +/* 56045 */ {(13<<2)|2,{82,55,0}}, +/* 56046 */ {(13<<2)|2,{82,55,0}}, +/* 56047 */ {(13<<2)|2,{82,55,0}}, +/* 56048 */ {(13<<2)|2,{82,56,0}}, +/* 56049 */ {(13<<2)|2,{82,56,0}}, +/* 56050 */ {(13<<2)|2,{82,56,0}}, +/* 56051 */ {(13<<2)|2,{82,56,0}}, +/* 56052 */ {(13<<2)|2,{82,56,0}}, +/* 56053 */ {(13<<2)|2,{82,56,0}}, +/* 56054 */ {(13<<2)|2,{82,56,0}}, +/* 56055 */ {(13<<2)|2,{82,56,0}}, +/* 56056 */ {(13<<2)|2,{82,57,0}}, +/* 56057 */ {(13<<2)|2,{82,57,0}}, +/* 56058 */ {(13<<2)|2,{82,57,0}}, +/* 56059 */ {(13<<2)|2,{82,57,0}}, +/* 56060 */ {(13<<2)|2,{82,57,0}}, +/* 56061 */ {(13<<2)|2,{82,57,0}}, +/* 56062 */ {(13<<2)|2,{82,57,0}}, +/* 56063 */ {(13<<2)|2,{82,57,0}}, +/* 56064 */ {(13<<2)|2,{82,61,0}}, +/* 56065 */ {(13<<2)|2,{82,61,0}}, +/* 56066 */ {(13<<2)|2,{82,61,0}}, +/* 56067 */ {(13<<2)|2,{82,61,0}}, +/* 56068 */ {(13<<2)|2,{82,61,0}}, +/* 56069 */ {(13<<2)|2,{82,61,0}}, +/* 56070 */ {(13<<2)|2,{82,61,0}}, +/* 56071 */ {(13<<2)|2,{82,61,0}}, +/* 56072 */ {(13<<2)|2,{82,65,0}}, +/* 56073 */ {(13<<2)|2,{82,65,0}}, +/* 56074 */ {(13<<2)|2,{82,65,0}}, +/* 56075 */ {(13<<2)|2,{82,65,0}}, +/* 56076 */ {(13<<2)|2,{82,65,0}}, +/* 56077 */ {(13<<2)|2,{82,65,0}}, +/* 56078 */ {(13<<2)|2,{82,65,0}}, +/* 56079 */ {(13<<2)|2,{82,65,0}}, +/* 56080 */ {(13<<2)|2,{82,95,0}}, +/* 56081 */ {(13<<2)|2,{82,95,0}}, +/* 56082 */ {(13<<2)|2,{82,95,0}}, +/* 56083 */ {(13<<2)|2,{82,95,0}}, +/* 56084 */ {(13<<2)|2,{82,95,0}}, +/* 56085 */ {(13<<2)|2,{82,95,0}}, +/* 56086 */ {(13<<2)|2,{82,95,0}}, +/* 56087 */ {(13<<2)|2,{82,95,0}}, +/* 56088 */ {(13<<2)|2,{82,98,0}}, +/* 56089 */ {(13<<2)|2,{82,98,0}}, +/* 56090 */ {(13<<2)|2,{82,98,0}}, +/* 56091 */ {(13<<2)|2,{82,98,0}}, +/* 56092 */ {(13<<2)|2,{82,98,0}}, +/* 56093 */ {(13<<2)|2,{82,98,0}}, +/* 56094 */ {(13<<2)|2,{82,98,0}}, +/* 56095 */ {(13<<2)|2,{82,98,0}}, +/* 56096 */ {(13<<2)|2,{82,100,0}}, +/* 56097 */ {(13<<2)|2,{82,100,0}}, +/* 56098 */ {(13<<2)|2,{82,100,0}}, +/* 56099 */ {(13<<2)|2,{82,100,0}}, +/* 56100 */ {(13<<2)|2,{82,100,0}}, +/* 56101 */ {(13<<2)|2,{82,100,0}}, +/* 56102 */ {(13<<2)|2,{82,100,0}}, +/* 56103 */ {(13<<2)|2,{82,100,0}}, +/* 56104 */ {(13<<2)|2,{82,102,0}}, +/* 56105 */ {(13<<2)|2,{82,102,0}}, +/* 56106 */ {(13<<2)|2,{82,102,0}}, +/* 56107 */ {(13<<2)|2,{82,102,0}}, +/* 56108 */ {(13<<2)|2,{82,102,0}}, +/* 56109 */ {(13<<2)|2,{82,102,0}}, +/* 56110 */ {(13<<2)|2,{82,102,0}}, +/* 56111 */ {(13<<2)|2,{82,102,0}}, +/* 56112 */ {(13<<2)|2,{82,103,0}}, +/* 56113 */ {(13<<2)|2,{82,103,0}}, +/* 56114 */ {(13<<2)|2,{82,103,0}}, +/* 56115 */ {(13<<2)|2,{82,103,0}}, +/* 56116 */ {(13<<2)|2,{82,103,0}}, +/* 56117 */ {(13<<2)|2,{82,103,0}}, +/* 56118 */ {(13<<2)|2,{82,103,0}}, +/* 56119 */ {(13<<2)|2,{82,103,0}}, +/* 56120 */ {(13<<2)|2,{82,104,0}}, +/* 56121 */ {(13<<2)|2,{82,104,0}}, +/* 56122 */ {(13<<2)|2,{82,104,0}}, +/* 56123 */ {(13<<2)|2,{82,104,0}}, +/* 56124 */ {(13<<2)|2,{82,104,0}}, +/* 56125 */ {(13<<2)|2,{82,104,0}}, +/* 56126 */ {(13<<2)|2,{82,104,0}}, +/* 56127 */ {(13<<2)|2,{82,104,0}}, +/* 56128 */ {(13<<2)|2,{82,108,0}}, +/* 56129 */ {(13<<2)|2,{82,108,0}}, +/* 56130 */ {(13<<2)|2,{82,108,0}}, +/* 56131 */ {(13<<2)|2,{82,108,0}}, +/* 56132 */ {(13<<2)|2,{82,108,0}}, +/* 56133 */ {(13<<2)|2,{82,108,0}}, +/* 56134 */ {(13<<2)|2,{82,108,0}}, +/* 56135 */ {(13<<2)|2,{82,108,0}}, +/* 56136 */ {(13<<2)|2,{82,109,0}}, +/* 56137 */ {(13<<2)|2,{82,109,0}}, +/* 56138 */ {(13<<2)|2,{82,109,0}}, +/* 56139 */ {(13<<2)|2,{82,109,0}}, +/* 56140 */ {(13<<2)|2,{82,109,0}}, +/* 56141 */ {(13<<2)|2,{82,109,0}}, +/* 56142 */ {(13<<2)|2,{82,109,0}}, +/* 56143 */ {(13<<2)|2,{82,109,0}}, +/* 56144 */ {(13<<2)|2,{82,110,0}}, +/* 56145 */ {(13<<2)|2,{82,110,0}}, +/* 56146 */ {(13<<2)|2,{82,110,0}}, +/* 56147 */ {(13<<2)|2,{82,110,0}}, +/* 56148 */ {(13<<2)|2,{82,110,0}}, +/* 56149 */ {(13<<2)|2,{82,110,0}}, +/* 56150 */ {(13<<2)|2,{82,110,0}}, +/* 56151 */ {(13<<2)|2,{82,110,0}}, +/* 56152 */ {(13<<2)|2,{82,112,0}}, +/* 56153 */ {(13<<2)|2,{82,112,0}}, +/* 56154 */ {(13<<2)|2,{82,112,0}}, +/* 56155 */ {(13<<2)|2,{82,112,0}}, +/* 56156 */ {(13<<2)|2,{82,112,0}}, +/* 56157 */ {(13<<2)|2,{82,112,0}}, +/* 56158 */ {(13<<2)|2,{82,112,0}}, +/* 56159 */ {(13<<2)|2,{82,112,0}}, +/* 56160 */ {(13<<2)|2,{82,114,0}}, +/* 56161 */ {(13<<2)|2,{82,114,0}}, +/* 56162 */ {(13<<2)|2,{82,114,0}}, +/* 56163 */ {(13<<2)|2,{82,114,0}}, +/* 56164 */ {(13<<2)|2,{82,114,0}}, +/* 56165 */ {(13<<2)|2,{82,114,0}}, +/* 56166 */ {(13<<2)|2,{82,114,0}}, +/* 56167 */ {(13<<2)|2,{82,114,0}}, +/* 56168 */ {(13<<2)|2,{82,117,0}}, +/* 56169 */ {(13<<2)|2,{82,117,0}}, +/* 56170 */ {(13<<2)|2,{82,117,0}}, +/* 56171 */ {(13<<2)|2,{82,117,0}}, +/* 56172 */ {(13<<2)|2,{82,117,0}}, +/* 56173 */ {(13<<2)|2,{82,117,0}}, +/* 56174 */ {(13<<2)|2,{82,117,0}}, +/* 56175 */ {(13<<2)|2,{82,117,0}}, +/* 56176 */ {(14<<2)|2,{82,58,0}}, +/* 56177 */ {(14<<2)|2,{82,58,0}}, +/* 56178 */ {(14<<2)|2,{82,58,0}}, +/* 56179 */ {(14<<2)|2,{82,58,0}}, +/* 56180 */ {(14<<2)|2,{82,66,0}}, +/* 56181 */ {(14<<2)|2,{82,66,0}}, +/* 56182 */ {(14<<2)|2,{82,66,0}}, +/* 56183 */ {(14<<2)|2,{82,66,0}}, +/* 56184 */ {(14<<2)|2,{82,67,0}}, +/* 56185 */ {(14<<2)|2,{82,67,0}}, +/* 56186 */ {(14<<2)|2,{82,67,0}}, +/* 56187 */ {(14<<2)|2,{82,67,0}}, +/* 56188 */ {(14<<2)|2,{82,68,0}}, +/* 56189 */ {(14<<2)|2,{82,68,0}}, +/* 56190 */ {(14<<2)|2,{82,68,0}}, +/* 56191 */ {(14<<2)|2,{82,68,0}}, +/* 56192 */ {(14<<2)|2,{82,69,0}}, +/* 56193 */ {(14<<2)|2,{82,69,0}}, +/* 56194 */ {(14<<2)|2,{82,69,0}}, +/* 56195 */ {(14<<2)|2,{82,69,0}}, +/* 56196 */ {(14<<2)|2,{82,70,0}}, +/* 56197 */ {(14<<2)|2,{82,70,0}}, +/* 56198 */ {(14<<2)|2,{82,70,0}}, +/* 56199 */ {(14<<2)|2,{82,70,0}}, +/* 56200 */ {(14<<2)|2,{82,71,0}}, +/* 56201 */ {(14<<2)|2,{82,71,0}}, +/* 56202 */ {(14<<2)|2,{82,71,0}}, +/* 56203 */ {(14<<2)|2,{82,71,0}}, +/* 56204 */ {(14<<2)|2,{82,72,0}}, +/* 56205 */ {(14<<2)|2,{82,72,0}}, +/* 56206 */ {(14<<2)|2,{82,72,0}}, +/* 56207 */ {(14<<2)|2,{82,72,0}}, +/* 56208 */ {(14<<2)|2,{82,73,0}}, +/* 56209 */ {(14<<2)|2,{82,73,0}}, +/* 56210 */ {(14<<2)|2,{82,73,0}}, +/* 56211 */ {(14<<2)|2,{82,73,0}}, +/* 56212 */ {(14<<2)|2,{82,74,0}}, +/* 56213 */ {(14<<2)|2,{82,74,0}}, +/* 56214 */ {(14<<2)|2,{82,74,0}}, +/* 56215 */ {(14<<2)|2,{82,74,0}}, +/* 56216 */ {(14<<2)|2,{82,75,0}}, +/* 56217 */ {(14<<2)|2,{82,75,0}}, +/* 56218 */ {(14<<2)|2,{82,75,0}}, +/* 56219 */ {(14<<2)|2,{82,75,0}}, +/* 56220 */ {(14<<2)|2,{82,76,0}}, +/* 56221 */ {(14<<2)|2,{82,76,0}}, +/* 56222 */ {(14<<2)|2,{82,76,0}}, +/* 56223 */ {(14<<2)|2,{82,76,0}}, +/* 56224 */ {(14<<2)|2,{82,77,0}}, +/* 56225 */ {(14<<2)|2,{82,77,0}}, +/* 56226 */ {(14<<2)|2,{82,77,0}}, +/* 56227 */ {(14<<2)|2,{82,77,0}}, +/* 56228 */ {(14<<2)|2,{82,78,0}}, +/* 56229 */ {(14<<2)|2,{82,78,0}}, +/* 56230 */ {(14<<2)|2,{82,78,0}}, +/* 56231 */ {(14<<2)|2,{82,78,0}}, +/* 56232 */ {(14<<2)|2,{82,79,0}}, +/* 56233 */ {(14<<2)|2,{82,79,0}}, +/* 56234 */ {(14<<2)|2,{82,79,0}}, +/* 56235 */ {(14<<2)|2,{82,79,0}}, +/* 56236 */ {(14<<2)|2,{82,80,0}}, +/* 56237 */ {(14<<2)|2,{82,80,0}}, +/* 56238 */ {(14<<2)|2,{82,80,0}}, +/* 56239 */ {(14<<2)|2,{82,80,0}}, +/* 56240 */ {(14<<2)|2,{82,81,0}}, +/* 56241 */ {(14<<2)|2,{82,81,0}}, +/* 56242 */ {(14<<2)|2,{82,81,0}}, +/* 56243 */ {(14<<2)|2,{82,81,0}}, +/* 56244 */ {(14<<2)|2,{82,82,0}}, +/* 56245 */ {(14<<2)|2,{82,82,0}}, +/* 56246 */ {(14<<2)|2,{82,82,0}}, +/* 56247 */ {(14<<2)|2,{82,82,0}}, +/* 56248 */ {(14<<2)|2,{82,83,0}}, +/* 56249 */ {(14<<2)|2,{82,83,0}}, +/* 56250 */ {(14<<2)|2,{82,83,0}}, +/* 56251 */ {(14<<2)|2,{82,83,0}}, +/* 56252 */ {(14<<2)|2,{82,84,0}}, +/* 56253 */ {(14<<2)|2,{82,84,0}}, +/* 56254 */ {(14<<2)|2,{82,84,0}}, +/* 56255 */ {(14<<2)|2,{82,84,0}}, +/* 56256 */ {(14<<2)|2,{82,85,0}}, +/* 56257 */ {(14<<2)|2,{82,85,0}}, +/* 56258 */ {(14<<2)|2,{82,85,0}}, +/* 56259 */ {(14<<2)|2,{82,85,0}}, +/* 56260 */ {(14<<2)|2,{82,86,0}}, +/* 56261 */ {(14<<2)|2,{82,86,0}}, +/* 56262 */ {(14<<2)|2,{82,86,0}}, +/* 56263 */ {(14<<2)|2,{82,86,0}}, +/* 56264 */ {(14<<2)|2,{82,87,0}}, +/* 56265 */ {(14<<2)|2,{82,87,0}}, +/* 56266 */ {(14<<2)|2,{82,87,0}}, +/* 56267 */ {(14<<2)|2,{82,87,0}}, +/* 56268 */ {(14<<2)|2,{82,89,0}}, +/* 56269 */ {(14<<2)|2,{82,89,0}}, +/* 56270 */ {(14<<2)|2,{82,89,0}}, +/* 56271 */ {(14<<2)|2,{82,89,0}}, +/* 56272 */ {(14<<2)|2,{82,106,0}}, +/* 56273 */ {(14<<2)|2,{82,106,0}}, +/* 56274 */ {(14<<2)|2,{82,106,0}}, +/* 56275 */ {(14<<2)|2,{82,106,0}}, +/* 56276 */ {(14<<2)|2,{82,107,0}}, +/* 56277 */ {(14<<2)|2,{82,107,0}}, +/* 56278 */ {(14<<2)|2,{82,107,0}}, +/* 56279 */ {(14<<2)|2,{82,107,0}}, +/* 56280 */ {(14<<2)|2,{82,113,0}}, +/* 56281 */ {(14<<2)|2,{82,113,0}}, +/* 56282 */ {(14<<2)|2,{82,113,0}}, +/* 56283 */ {(14<<2)|2,{82,113,0}}, +/* 56284 */ {(14<<2)|2,{82,118,0}}, +/* 56285 */ {(14<<2)|2,{82,118,0}}, +/* 56286 */ {(14<<2)|2,{82,118,0}}, +/* 56287 */ {(14<<2)|2,{82,118,0}}, +/* 56288 */ {(14<<2)|2,{82,119,0}}, +/* 56289 */ {(14<<2)|2,{82,119,0}}, +/* 56290 */ {(14<<2)|2,{82,119,0}}, +/* 56291 */ {(14<<2)|2,{82,119,0}}, +/* 56292 */ {(14<<2)|2,{82,120,0}}, +/* 56293 */ {(14<<2)|2,{82,120,0}}, +/* 56294 */ {(14<<2)|2,{82,120,0}}, +/* 56295 */ {(14<<2)|2,{82,120,0}}, +/* 56296 */ {(14<<2)|2,{82,121,0}}, +/* 56297 */ {(14<<2)|2,{82,121,0}}, +/* 56298 */ {(14<<2)|2,{82,121,0}}, +/* 56299 */ {(14<<2)|2,{82,121,0}}, +/* 56300 */ {(14<<2)|2,{82,122,0}}, +/* 56301 */ {(14<<2)|2,{82,122,0}}, +/* 56302 */ {(14<<2)|2,{82,122,0}}, +/* 56303 */ {(14<<2)|2,{82,122,0}}, +/* 56304 */ {(15<<2)|2,{82,38,0}}, +/* 56305 */ {(15<<2)|2,{82,38,0}}, +/* 56306 */ {(15<<2)|2,{82,42,0}}, +/* 56307 */ {(15<<2)|2,{82,42,0}}, +/* 56308 */ {(15<<2)|2,{82,44,0}}, +/* 56309 */ {(15<<2)|2,{82,44,0}}, +/* 56310 */ {(15<<2)|2,{82,59,0}}, +/* 56311 */ {(15<<2)|2,{82,59,0}}, +/* 56312 */ {(15<<2)|2,{82,88,0}}, +/* 56313 */ {(15<<2)|2,{82,88,0}}, +/* 56314 */ {(15<<2)|2,{82,90,0}}, +/* 56315 */ {(15<<2)|2,{82,90,0}}, +/* 56316 */ {(7<<2)|1,{82,0,0}}, +/* 56317 */ {(7<<2)|1,{82,0,0}}, +/* 56318 */ {(7<<2)|1,{82,0,0}}, +/* 56319 */ {(7<<2)|1,{82,0,0}}, +/* 56320 */ {(12<<2)|2,{83,48,0}}, +/* 56321 */ {(12<<2)|2,{83,48,0}}, +/* 56322 */ {(12<<2)|2,{83,48,0}}, +/* 56323 */ {(12<<2)|2,{83,48,0}}, +/* 56324 */ {(12<<2)|2,{83,48,0}}, +/* 56325 */ {(12<<2)|2,{83,48,0}}, +/* 56326 */ {(12<<2)|2,{83,48,0}}, +/* 56327 */ {(12<<2)|2,{83,48,0}}, +/* 56328 */ {(12<<2)|2,{83,48,0}}, +/* 56329 */ {(12<<2)|2,{83,48,0}}, +/* 56330 */ {(12<<2)|2,{83,48,0}}, +/* 56331 */ {(12<<2)|2,{83,48,0}}, +/* 56332 */ {(12<<2)|2,{83,48,0}}, +/* 56333 */ {(12<<2)|2,{83,48,0}}, +/* 56334 */ {(12<<2)|2,{83,48,0}}, +/* 56335 */ {(12<<2)|2,{83,48,0}}, +/* 56336 */ {(12<<2)|2,{83,49,0}}, +/* 56337 */ {(12<<2)|2,{83,49,0}}, +/* 56338 */ {(12<<2)|2,{83,49,0}}, +/* 56339 */ {(12<<2)|2,{83,49,0}}, +/* 56340 */ {(12<<2)|2,{83,49,0}}, +/* 56341 */ {(12<<2)|2,{83,49,0}}, +/* 56342 */ {(12<<2)|2,{83,49,0}}, +/* 56343 */ {(12<<2)|2,{83,49,0}}, +/* 56344 */ {(12<<2)|2,{83,49,0}}, +/* 56345 */ {(12<<2)|2,{83,49,0}}, +/* 56346 */ {(12<<2)|2,{83,49,0}}, +/* 56347 */ {(12<<2)|2,{83,49,0}}, +/* 56348 */ {(12<<2)|2,{83,49,0}}, +/* 56349 */ {(12<<2)|2,{83,49,0}}, +/* 56350 */ {(12<<2)|2,{83,49,0}}, +/* 56351 */ {(12<<2)|2,{83,49,0}}, +/* 56352 */ {(12<<2)|2,{83,50,0}}, +/* 56353 */ {(12<<2)|2,{83,50,0}}, +/* 56354 */ {(12<<2)|2,{83,50,0}}, +/* 56355 */ {(12<<2)|2,{83,50,0}}, +/* 56356 */ {(12<<2)|2,{83,50,0}}, +/* 56357 */ {(12<<2)|2,{83,50,0}}, +/* 56358 */ {(12<<2)|2,{83,50,0}}, +/* 56359 */ {(12<<2)|2,{83,50,0}}, +/* 56360 */ {(12<<2)|2,{83,50,0}}, +/* 56361 */ {(12<<2)|2,{83,50,0}}, +/* 56362 */ {(12<<2)|2,{83,50,0}}, +/* 56363 */ {(12<<2)|2,{83,50,0}}, +/* 56364 */ {(12<<2)|2,{83,50,0}}, +/* 56365 */ {(12<<2)|2,{83,50,0}}, +/* 56366 */ {(12<<2)|2,{83,50,0}}, +/* 56367 */ {(12<<2)|2,{83,50,0}}, +/* 56368 */ {(12<<2)|2,{83,97,0}}, +/* 56369 */ {(12<<2)|2,{83,97,0}}, +/* 56370 */ {(12<<2)|2,{83,97,0}}, +/* 56371 */ {(12<<2)|2,{83,97,0}}, +/* 56372 */ {(12<<2)|2,{83,97,0}}, +/* 56373 */ {(12<<2)|2,{83,97,0}}, +/* 56374 */ {(12<<2)|2,{83,97,0}}, +/* 56375 */ {(12<<2)|2,{83,97,0}}, +/* 56376 */ {(12<<2)|2,{83,97,0}}, +/* 56377 */ {(12<<2)|2,{83,97,0}}, +/* 56378 */ {(12<<2)|2,{83,97,0}}, +/* 56379 */ {(12<<2)|2,{83,97,0}}, +/* 56380 */ {(12<<2)|2,{83,97,0}}, +/* 56381 */ {(12<<2)|2,{83,97,0}}, +/* 56382 */ {(12<<2)|2,{83,97,0}}, +/* 56383 */ {(12<<2)|2,{83,97,0}}, +/* 56384 */ {(12<<2)|2,{83,99,0}}, +/* 56385 */ {(12<<2)|2,{83,99,0}}, +/* 56386 */ {(12<<2)|2,{83,99,0}}, +/* 56387 */ {(12<<2)|2,{83,99,0}}, +/* 56388 */ {(12<<2)|2,{83,99,0}}, +/* 56389 */ {(12<<2)|2,{83,99,0}}, +/* 56390 */ {(12<<2)|2,{83,99,0}}, +/* 56391 */ {(12<<2)|2,{83,99,0}}, +/* 56392 */ {(12<<2)|2,{83,99,0}}, +/* 56393 */ {(12<<2)|2,{83,99,0}}, +/* 56394 */ {(12<<2)|2,{83,99,0}}, +/* 56395 */ {(12<<2)|2,{83,99,0}}, +/* 56396 */ {(12<<2)|2,{83,99,0}}, +/* 56397 */ {(12<<2)|2,{83,99,0}}, +/* 56398 */ {(12<<2)|2,{83,99,0}}, +/* 56399 */ {(12<<2)|2,{83,99,0}}, +/* 56400 */ {(12<<2)|2,{83,101,0}}, +/* 56401 */ {(12<<2)|2,{83,101,0}}, +/* 56402 */ {(12<<2)|2,{83,101,0}}, +/* 56403 */ {(12<<2)|2,{83,101,0}}, +/* 56404 */ {(12<<2)|2,{83,101,0}}, +/* 56405 */ {(12<<2)|2,{83,101,0}}, +/* 56406 */ {(12<<2)|2,{83,101,0}}, +/* 56407 */ {(12<<2)|2,{83,101,0}}, +/* 56408 */ {(12<<2)|2,{83,101,0}}, +/* 56409 */ {(12<<2)|2,{83,101,0}}, +/* 56410 */ {(12<<2)|2,{83,101,0}}, +/* 56411 */ {(12<<2)|2,{83,101,0}}, +/* 56412 */ {(12<<2)|2,{83,101,0}}, +/* 56413 */ {(12<<2)|2,{83,101,0}}, +/* 56414 */ {(12<<2)|2,{83,101,0}}, +/* 56415 */ {(12<<2)|2,{83,101,0}}, +/* 56416 */ {(12<<2)|2,{83,105,0}}, +/* 56417 */ {(12<<2)|2,{83,105,0}}, +/* 56418 */ {(12<<2)|2,{83,105,0}}, +/* 56419 */ {(12<<2)|2,{83,105,0}}, +/* 56420 */ {(12<<2)|2,{83,105,0}}, +/* 56421 */ {(12<<2)|2,{83,105,0}}, +/* 56422 */ {(12<<2)|2,{83,105,0}}, +/* 56423 */ {(12<<2)|2,{83,105,0}}, +/* 56424 */ {(12<<2)|2,{83,105,0}}, +/* 56425 */ {(12<<2)|2,{83,105,0}}, +/* 56426 */ {(12<<2)|2,{83,105,0}}, +/* 56427 */ {(12<<2)|2,{83,105,0}}, +/* 56428 */ {(12<<2)|2,{83,105,0}}, +/* 56429 */ {(12<<2)|2,{83,105,0}}, +/* 56430 */ {(12<<2)|2,{83,105,0}}, +/* 56431 */ {(12<<2)|2,{83,105,0}}, +/* 56432 */ {(12<<2)|2,{83,111,0}}, +/* 56433 */ {(12<<2)|2,{83,111,0}}, +/* 56434 */ {(12<<2)|2,{83,111,0}}, +/* 56435 */ {(12<<2)|2,{83,111,0}}, +/* 56436 */ {(12<<2)|2,{83,111,0}}, +/* 56437 */ {(12<<2)|2,{83,111,0}}, +/* 56438 */ {(12<<2)|2,{83,111,0}}, +/* 56439 */ {(12<<2)|2,{83,111,0}}, +/* 56440 */ {(12<<2)|2,{83,111,0}}, +/* 56441 */ {(12<<2)|2,{83,111,0}}, +/* 56442 */ {(12<<2)|2,{83,111,0}}, +/* 56443 */ {(12<<2)|2,{83,111,0}}, +/* 56444 */ {(12<<2)|2,{83,111,0}}, +/* 56445 */ {(12<<2)|2,{83,111,0}}, +/* 56446 */ {(12<<2)|2,{83,111,0}}, +/* 56447 */ {(12<<2)|2,{83,111,0}}, +/* 56448 */ {(12<<2)|2,{83,115,0}}, +/* 56449 */ {(12<<2)|2,{83,115,0}}, +/* 56450 */ {(12<<2)|2,{83,115,0}}, +/* 56451 */ {(12<<2)|2,{83,115,0}}, +/* 56452 */ {(12<<2)|2,{83,115,0}}, +/* 56453 */ {(12<<2)|2,{83,115,0}}, +/* 56454 */ {(12<<2)|2,{83,115,0}}, +/* 56455 */ {(12<<2)|2,{83,115,0}}, +/* 56456 */ {(12<<2)|2,{83,115,0}}, +/* 56457 */ {(12<<2)|2,{83,115,0}}, +/* 56458 */ {(12<<2)|2,{83,115,0}}, +/* 56459 */ {(12<<2)|2,{83,115,0}}, +/* 56460 */ {(12<<2)|2,{83,115,0}}, +/* 56461 */ {(12<<2)|2,{83,115,0}}, +/* 56462 */ {(12<<2)|2,{83,115,0}}, +/* 56463 */ {(12<<2)|2,{83,115,0}}, +/* 56464 */ {(12<<2)|2,{83,116,0}}, +/* 56465 */ {(12<<2)|2,{83,116,0}}, +/* 56466 */ {(12<<2)|2,{83,116,0}}, +/* 56467 */ {(12<<2)|2,{83,116,0}}, +/* 56468 */ {(12<<2)|2,{83,116,0}}, +/* 56469 */ {(12<<2)|2,{83,116,0}}, +/* 56470 */ {(12<<2)|2,{83,116,0}}, +/* 56471 */ {(12<<2)|2,{83,116,0}}, +/* 56472 */ {(12<<2)|2,{83,116,0}}, +/* 56473 */ {(12<<2)|2,{83,116,0}}, +/* 56474 */ {(12<<2)|2,{83,116,0}}, +/* 56475 */ {(12<<2)|2,{83,116,0}}, +/* 56476 */ {(12<<2)|2,{83,116,0}}, +/* 56477 */ {(12<<2)|2,{83,116,0}}, +/* 56478 */ {(12<<2)|2,{83,116,0}}, +/* 56479 */ {(12<<2)|2,{83,116,0}}, +/* 56480 */ {(13<<2)|2,{83,32,0}}, +/* 56481 */ {(13<<2)|2,{83,32,0}}, +/* 56482 */ {(13<<2)|2,{83,32,0}}, +/* 56483 */ {(13<<2)|2,{83,32,0}}, +/* 56484 */ {(13<<2)|2,{83,32,0}}, +/* 56485 */ {(13<<2)|2,{83,32,0}}, +/* 56486 */ {(13<<2)|2,{83,32,0}}, +/* 56487 */ {(13<<2)|2,{83,32,0}}, +/* 56488 */ {(13<<2)|2,{83,37,0}}, +/* 56489 */ {(13<<2)|2,{83,37,0}}, +/* 56490 */ {(13<<2)|2,{83,37,0}}, +/* 56491 */ {(13<<2)|2,{83,37,0}}, +/* 56492 */ {(13<<2)|2,{83,37,0}}, +/* 56493 */ {(13<<2)|2,{83,37,0}}, +/* 56494 */ {(13<<2)|2,{83,37,0}}, +/* 56495 */ {(13<<2)|2,{83,37,0}}, +/* 56496 */ {(13<<2)|2,{83,45,0}}, +/* 56497 */ {(13<<2)|2,{83,45,0}}, +/* 56498 */ {(13<<2)|2,{83,45,0}}, +/* 56499 */ {(13<<2)|2,{83,45,0}}, +/* 56500 */ {(13<<2)|2,{83,45,0}}, +/* 56501 */ {(13<<2)|2,{83,45,0}}, +/* 56502 */ {(13<<2)|2,{83,45,0}}, +/* 56503 */ {(13<<2)|2,{83,45,0}}, +/* 56504 */ {(13<<2)|2,{83,46,0}}, +/* 56505 */ {(13<<2)|2,{83,46,0}}, +/* 56506 */ {(13<<2)|2,{83,46,0}}, +/* 56507 */ {(13<<2)|2,{83,46,0}}, +/* 56508 */ {(13<<2)|2,{83,46,0}}, +/* 56509 */ {(13<<2)|2,{83,46,0}}, +/* 56510 */ {(13<<2)|2,{83,46,0}}, +/* 56511 */ {(13<<2)|2,{83,46,0}}, +/* 56512 */ {(13<<2)|2,{83,47,0}}, +/* 56513 */ {(13<<2)|2,{83,47,0}}, +/* 56514 */ {(13<<2)|2,{83,47,0}}, +/* 56515 */ {(13<<2)|2,{83,47,0}}, +/* 56516 */ {(13<<2)|2,{83,47,0}}, +/* 56517 */ {(13<<2)|2,{83,47,0}}, +/* 56518 */ {(13<<2)|2,{83,47,0}}, +/* 56519 */ {(13<<2)|2,{83,47,0}}, +/* 56520 */ {(13<<2)|2,{83,51,0}}, +/* 56521 */ {(13<<2)|2,{83,51,0}}, +/* 56522 */ {(13<<2)|2,{83,51,0}}, +/* 56523 */ {(13<<2)|2,{83,51,0}}, +/* 56524 */ {(13<<2)|2,{83,51,0}}, +/* 56525 */ {(13<<2)|2,{83,51,0}}, +/* 56526 */ {(13<<2)|2,{83,51,0}}, +/* 56527 */ {(13<<2)|2,{83,51,0}}, +/* 56528 */ {(13<<2)|2,{83,52,0}}, +/* 56529 */ {(13<<2)|2,{83,52,0}}, +/* 56530 */ {(13<<2)|2,{83,52,0}}, +/* 56531 */ {(13<<2)|2,{83,52,0}}, +/* 56532 */ {(13<<2)|2,{83,52,0}}, +/* 56533 */ {(13<<2)|2,{83,52,0}}, +/* 56534 */ {(13<<2)|2,{83,52,0}}, +/* 56535 */ {(13<<2)|2,{83,52,0}}, +/* 56536 */ {(13<<2)|2,{83,53,0}}, +/* 56537 */ {(13<<2)|2,{83,53,0}}, +/* 56538 */ {(13<<2)|2,{83,53,0}}, +/* 56539 */ {(13<<2)|2,{83,53,0}}, +/* 56540 */ {(13<<2)|2,{83,53,0}}, +/* 56541 */ {(13<<2)|2,{83,53,0}}, +/* 56542 */ {(13<<2)|2,{83,53,0}}, +/* 56543 */ {(13<<2)|2,{83,53,0}}, +/* 56544 */ {(13<<2)|2,{83,54,0}}, +/* 56545 */ {(13<<2)|2,{83,54,0}}, +/* 56546 */ {(13<<2)|2,{83,54,0}}, +/* 56547 */ {(13<<2)|2,{83,54,0}}, +/* 56548 */ {(13<<2)|2,{83,54,0}}, +/* 56549 */ {(13<<2)|2,{83,54,0}}, +/* 56550 */ {(13<<2)|2,{83,54,0}}, +/* 56551 */ {(13<<2)|2,{83,54,0}}, +/* 56552 */ {(13<<2)|2,{83,55,0}}, +/* 56553 */ {(13<<2)|2,{83,55,0}}, +/* 56554 */ {(13<<2)|2,{83,55,0}}, +/* 56555 */ {(13<<2)|2,{83,55,0}}, +/* 56556 */ {(13<<2)|2,{83,55,0}}, +/* 56557 */ {(13<<2)|2,{83,55,0}}, +/* 56558 */ {(13<<2)|2,{83,55,0}}, +/* 56559 */ {(13<<2)|2,{83,55,0}}, +/* 56560 */ {(13<<2)|2,{83,56,0}}, +/* 56561 */ {(13<<2)|2,{83,56,0}}, +/* 56562 */ {(13<<2)|2,{83,56,0}}, +/* 56563 */ {(13<<2)|2,{83,56,0}}, +/* 56564 */ {(13<<2)|2,{83,56,0}}, +/* 56565 */ {(13<<2)|2,{83,56,0}}, +/* 56566 */ {(13<<2)|2,{83,56,0}}, +/* 56567 */ {(13<<2)|2,{83,56,0}}, +/* 56568 */ {(13<<2)|2,{83,57,0}}, +/* 56569 */ {(13<<2)|2,{83,57,0}}, +/* 56570 */ {(13<<2)|2,{83,57,0}}, +/* 56571 */ {(13<<2)|2,{83,57,0}}, +/* 56572 */ {(13<<2)|2,{83,57,0}}, +/* 56573 */ {(13<<2)|2,{83,57,0}}, +/* 56574 */ {(13<<2)|2,{83,57,0}}, +/* 56575 */ {(13<<2)|2,{83,57,0}}, +/* 56576 */ {(13<<2)|2,{83,61,0}}, +/* 56577 */ {(13<<2)|2,{83,61,0}}, +/* 56578 */ {(13<<2)|2,{83,61,0}}, +/* 56579 */ {(13<<2)|2,{83,61,0}}, +/* 56580 */ {(13<<2)|2,{83,61,0}}, +/* 56581 */ {(13<<2)|2,{83,61,0}}, +/* 56582 */ {(13<<2)|2,{83,61,0}}, +/* 56583 */ {(13<<2)|2,{83,61,0}}, +/* 56584 */ {(13<<2)|2,{83,65,0}}, +/* 56585 */ {(13<<2)|2,{83,65,0}}, +/* 56586 */ {(13<<2)|2,{83,65,0}}, +/* 56587 */ {(13<<2)|2,{83,65,0}}, +/* 56588 */ {(13<<2)|2,{83,65,0}}, +/* 56589 */ {(13<<2)|2,{83,65,0}}, +/* 56590 */ {(13<<2)|2,{83,65,0}}, +/* 56591 */ {(13<<2)|2,{83,65,0}}, +/* 56592 */ {(13<<2)|2,{83,95,0}}, +/* 56593 */ {(13<<2)|2,{83,95,0}}, +/* 56594 */ {(13<<2)|2,{83,95,0}}, +/* 56595 */ {(13<<2)|2,{83,95,0}}, +/* 56596 */ {(13<<2)|2,{83,95,0}}, +/* 56597 */ {(13<<2)|2,{83,95,0}}, +/* 56598 */ {(13<<2)|2,{83,95,0}}, +/* 56599 */ {(13<<2)|2,{83,95,0}}, +/* 56600 */ {(13<<2)|2,{83,98,0}}, +/* 56601 */ {(13<<2)|2,{83,98,0}}, +/* 56602 */ {(13<<2)|2,{83,98,0}}, +/* 56603 */ {(13<<2)|2,{83,98,0}}, +/* 56604 */ {(13<<2)|2,{83,98,0}}, +/* 56605 */ {(13<<2)|2,{83,98,0}}, +/* 56606 */ {(13<<2)|2,{83,98,0}}, +/* 56607 */ {(13<<2)|2,{83,98,0}}, +/* 56608 */ {(13<<2)|2,{83,100,0}}, +/* 56609 */ {(13<<2)|2,{83,100,0}}, +/* 56610 */ {(13<<2)|2,{83,100,0}}, +/* 56611 */ {(13<<2)|2,{83,100,0}}, +/* 56612 */ {(13<<2)|2,{83,100,0}}, +/* 56613 */ {(13<<2)|2,{83,100,0}}, +/* 56614 */ {(13<<2)|2,{83,100,0}}, +/* 56615 */ {(13<<2)|2,{83,100,0}}, +/* 56616 */ {(13<<2)|2,{83,102,0}}, +/* 56617 */ {(13<<2)|2,{83,102,0}}, +/* 56618 */ {(13<<2)|2,{83,102,0}}, +/* 56619 */ {(13<<2)|2,{83,102,0}}, +/* 56620 */ {(13<<2)|2,{83,102,0}}, +/* 56621 */ {(13<<2)|2,{83,102,0}}, +/* 56622 */ {(13<<2)|2,{83,102,0}}, +/* 56623 */ {(13<<2)|2,{83,102,0}}, +/* 56624 */ {(13<<2)|2,{83,103,0}}, +/* 56625 */ {(13<<2)|2,{83,103,0}}, +/* 56626 */ {(13<<2)|2,{83,103,0}}, +/* 56627 */ {(13<<2)|2,{83,103,0}}, +/* 56628 */ {(13<<2)|2,{83,103,0}}, +/* 56629 */ {(13<<2)|2,{83,103,0}}, +/* 56630 */ {(13<<2)|2,{83,103,0}}, +/* 56631 */ {(13<<2)|2,{83,103,0}}, +/* 56632 */ {(13<<2)|2,{83,104,0}}, +/* 56633 */ {(13<<2)|2,{83,104,0}}, +/* 56634 */ {(13<<2)|2,{83,104,0}}, +/* 56635 */ {(13<<2)|2,{83,104,0}}, +/* 56636 */ {(13<<2)|2,{83,104,0}}, +/* 56637 */ {(13<<2)|2,{83,104,0}}, +/* 56638 */ {(13<<2)|2,{83,104,0}}, +/* 56639 */ {(13<<2)|2,{83,104,0}}, +/* 56640 */ {(13<<2)|2,{83,108,0}}, +/* 56641 */ {(13<<2)|2,{83,108,0}}, +/* 56642 */ {(13<<2)|2,{83,108,0}}, +/* 56643 */ {(13<<2)|2,{83,108,0}}, +/* 56644 */ {(13<<2)|2,{83,108,0}}, +/* 56645 */ {(13<<2)|2,{83,108,0}}, +/* 56646 */ {(13<<2)|2,{83,108,0}}, +/* 56647 */ {(13<<2)|2,{83,108,0}}, +/* 56648 */ {(13<<2)|2,{83,109,0}}, +/* 56649 */ {(13<<2)|2,{83,109,0}}, +/* 56650 */ {(13<<2)|2,{83,109,0}}, +/* 56651 */ {(13<<2)|2,{83,109,0}}, +/* 56652 */ {(13<<2)|2,{83,109,0}}, +/* 56653 */ {(13<<2)|2,{83,109,0}}, +/* 56654 */ {(13<<2)|2,{83,109,0}}, +/* 56655 */ {(13<<2)|2,{83,109,0}}, +/* 56656 */ {(13<<2)|2,{83,110,0}}, +/* 56657 */ {(13<<2)|2,{83,110,0}}, +/* 56658 */ {(13<<2)|2,{83,110,0}}, +/* 56659 */ {(13<<2)|2,{83,110,0}}, +/* 56660 */ {(13<<2)|2,{83,110,0}}, +/* 56661 */ {(13<<2)|2,{83,110,0}}, +/* 56662 */ {(13<<2)|2,{83,110,0}}, +/* 56663 */ {(13<<2)|2,{83,110,0}}, +/* 56664 */ {(13<<2)|2,{83,112,0}}, +/* 56665 */ {(13<<2)|2,{83,112,0}}, +/* 56666 */ {(13<<2)|2,{83,112,0}}, +/* 56667 */ {(13<<2)|2,{83,112,0}}, +/* 56668 */ {(13<<2)|2,{83,112,0}}, +/* 56669 */ {(13<<2)|2,{83,112,0}}, +/* 56670 */ {(13<<2)|2,{83,112,0}}, +/* 56671 */ {(13<<2)|2,{83,112,0}}, +/* 56672 */ {(13<<2)|2,{83,114,0}}, +/* 56673 */ {(13<<2)|2,{83,114,0}}, +/* 56674 */ {(13<<2)|2,{83,114,0}}, +/* 56675 */ {(13<<2)|2,{83,114,0}}, +/* 56676 */ {(13<<2)|2,{83,114,0}}, +/* 56677 */ {(13<<2)|2,{83,114,0}}, +/* 56678 */ {(13<<2)|2,{83,114,0}}, +/* 56679 */ {(13<<2)|2,{83,114,0}}, +/* 56680 */ {(13<<2)|2,{83,117,0}}, +/* 56681 */ {(13<<2)|2,{83,117,0}}, +/* 56682 */ {(13<<2)|2,{83,117,0}}, +/* 56683 */ {(13<<2)|2,{83,117,0}}, +/* 56684 */ {(13<<2)|2,{83,117,0}}, +/* 56685 */ {(13<<2)|2,{83,117,0}}, +/* 56686 */ {(13<<2)|2,{83,117,0}}, +/* 56687 */ {(13<<2)|2,{83,117,0}}, +/* 56688 */ {(14<<2)|2,{83,58,0}}, +/* 56689 */ {(14<<2)|2,{83,58,0}}, +/* 56690 */ {(14<<2)|2,{83,58,0}}, +/* 56691 */ {(14<<2)|2,{83,58,0}}, +/* 56692 */ {(14<<2)|2,{83,66,0}}, +/* 56693 */ {(14<<2)|2,{83,66,0}}, +/* 56694 */ {(14<<2)|2,{83,66,0}}, +/* 56695 */ {(14<<2)|2,{83,66,0}}, +/* 56696 */ {(14<<2)|2,{83,67,0}}, +/* 56697 */ {(14<<2)|2,{83,67,0}}, +/* 56698 */ {(14<<2)|2,{83,67,0}}, +/* 56699 */ {(14<<2)|2,{83,67,0}}, +/* 56700 */ {(14<<2)|2,{83,68,0}}, +/* 56701 */ {(14<<2)|2,{83,68,0}}, +/* 56702 */ {(14<<2)|2,{83,68,0}}, +/* 56703 */ {(14<<2)|2,{83,68,0}}, +/* 56704 */ {(14<<2)|2,{83,69,0}}, +/* 56705 */ {(14<<2)|2,{83,69,0}}, +/* 56706 */ {(14<<2)|2,{83,69,0}}, +/* 56707 */ {(14<<2)|2,{83,69,0}}, +/* 56708 */ {(14<<2)|2,{83,70,0}}, +/* 56709 */ {(14<<2)|2,{83,70,0}}, +/* 56710 */ {(14<<2)|2,{83,70,0}}, +/* 56711 */ {(14<<2)|2,{83,70,0}}, +/* 56712 */ {(14<<2)|2,{83,71,0}}, +/* 56713 */ {(14<<2)|2,{83,71,0}}, +/* 56714 */ {(14<<2)|2,{83,71,0}}, +/* 56715 */ {(14<<2)|2,{83,71,0}}, +/* 56716 */ {(14<<2)|2,{83,72,0}}, +/* 56717 */ {(14<<2)|2,{83,72,0}}, +/* 56718 */ {(14<<2)|2,{83,72,0}}, +/* 56719 */ {(14<<2)|2,{83,72,0}}, +/* 56720 */ {(14<<2)|2,{83,73,0}}, +/* 56721 */ {(14<<2)|2,{83,73,0}}, +/* 56722 */ {(14<<2)|2,{83,73,0}}, +/* 56723 */ {(14<<2)|2,{83,73,0}}, +/* 56724 */ {(14<<2)|2,{83,74,0}}, +/* 56725 */ {(14<<2)|2,{83,74,0}}, +/* 56726 */ {(14<<2)|2,{83,74,0}}, +/* 56727 */ {(14<<2)|2,{83,74,0}}, +/* 56728 */ {(14<<2)|2,{83,75,0}}, +/* 56729 */ {(14<<2)|2,{83,75,0}}, +/* 56730 */ {(14<<2)|2,{83,75,0}}, +/* 56731 */ {(14<<2)|2,{83,75,0}}, +/* 56732 */ {(14<<2)|2,{83,76,0}}, +/* 56733 */ {(14<<2)|2,{83,76,0}}, +/* 56734 */ {(14<<2)|2,{83,76,0}}, +/* 56735 */ {(14<<2)|2,{83,76,0}}, +/* 56736 */ {(14<<2)|2,{83,77,0}}, +/* 56737 */ {(14<<2)|2,{83,77,0}}, +/* 56738 */ {(14<<2)|2,{83,77,0}}, +/* 56739 */ {(14<<2)|2,{83,77,0}}, +/* 56740 */ {(14<<2)|2,{83,78,0}}, +/* 56741 */ {(14<<2)|2,{83,78,0}}, +/* 56742 */ {(14<<2)|2,{83,78,0}}, +/* 56743 */ {(14<<2)|2,{83,78,0}}, +/* 56744 */ {(14<<2)|2,{83,79,0}}, +/* 56745 */ {(14<<2)|2,{83,79,0}}, +/* 56746 */ {(14<<2)|2,{83,79,0}}, +/* 56747 */ {(14<<2)|2,{83,79,0}}, +/* 56748 */ {(14<<2)|2,{83,80,0}}, +/* 56749 */ {(14<<2)|2,{83,80,0}}, +/* 56750 */ {(14<<2)|2,{83,80,0}}, +/* 56751 */ {(14<<2)|2,{83,80,0}}, +/* 56752 */ {(14<<2)|2,{83,81,0}}, +/* 56753 */ {(14<<2)|2,{83,81,0}}, +/* 56754 */ {(14<<2)|2,{83,81,0}}, +/* 56755 */ {(14<<2)|2,{83,81,0}}, +/* 56756 */ {(14<<2)|2,{83,82,0}}, +/* 56757 */ {(14<<2)|2,{83,82,0}}, +/* 56758 */ {(14<<2)|2,{83,82,0}}, +/* 56759 */ {(14<<2)|2,{83,82,0}}, +/* 56760 */ {(14<<2)|2,{83,83,0}}, +/* 56761 */ {(14<<2)|2,{83,83,0}}, +/* 56762 */ {(14<<2)|2,{83,83,0}}, +/* 56763 */ {(14<<2)|2,{83,83,0}}, +/* 56764 */ {(14<<2)|2,{83,84,0}}, +/* 56765 */ {(14<<2)|2,{83,84,0}}, +/* 56766 */ {(14<<2)|2,{83,84,0}}, +/* 56767 */ {(14<<2)|2,{83,84,0}}, +/* 56768 */ {(14<<2)|2,{83,85,0}}, +/* 56769 */ {(14<<2)|2,{83,85,0}}, +/* 56770 */ {(14<<2)|2,{83,85,0}}, +/* 56771 */ {(14<<2)|2,{83,85,0}}, +/* 56772 */ {(14<<2)|2,{83,86,0}}, +/* 56773 */ {(14<<2)|2,{83,86,0}}, +/* 56774 */ {(14<<2)|2,{83,86,0}}, +/* 56775 */ {(14<<2)|2,{83,86,0}}, +/* 56776 */ {(14<<2)|2,{83,87,0}}, +/* 56777 */ {(14<<2)|2,{83,87,0}}, +/* 56778 */ {(14<<2)|2,{83,87,0}}, +/* 56779 */ {(14<<2)|2,{83,87,0}}, +/* 56780 */ {(14<<2)|2,{83,89,0}}, +/* 56781 */ {(14<<2)|2,{83,89,0}}, +/* 56782 */ {(14<<2)|2,{83,89,0}}, +/* 56783 */ {(14<<2)|2,{83,89,0}}, +/* 56784 */ {(14<<2)|2,{83,106,0}}, +/* 56785 */ {(14<<2)|2,{83,106,0}}, +/* 56786 */ {(14<<2)|2,{83,106,0}}, +/* 56787 */ {(14<<2)|2,{83,106,0}}, +/* 56788 */ {(14<<2)|2,{83,107,0}}, +/* 56789 */ {(14<<2)|2,{83,107,0}}, +/* 56790 */ {(14<<2)|2,{83,107,0}}, +/* 56791 */ {(14<<2)|2,{83,107,0}}, +/* 56792 */ {(14<<2)|2,{83,113,0}}, +/* 56793 */ {(14<<2)|2,{83,113,0}}, +/* 56794 */ {(14<<2)|2,{83,113,0}}, +/* 56795 */ {(14<<2)|2,{83,113,0}}, +/* 56796 */ {(14<<2)|2,{83,118,0}}, +/* 56797 */ {(14<<2)|2,{83,118,0}}, +/* 56798 */ {(14<<2)|2,{83,118,0}}, +/* 56799 */ {(14<<2)|2,{83,118,0}}, +/* 56800 */ {(14<<2)|2,{83,119,0}}, +/* 56801 */ {(14<<2)|2,{83,119,0}}, +/* 56802 */ {(14<<2)|2,{83,119,0}}, +/* 56803 */ {(14<<2)|2,{83,119,0}}, +/* 56804 */ {(14<<2)|2,{83,120,0}}, +/* 56805 */ {(14<<2)|2,{83,120,0}}, +/* 56806 */ {(14<<2)|2,{83,120,0}}, +/* 56807 */ {(14<<2)|2,{83,120,0}}, +/* 56808 */ {(14<<2)|2,{83,121,0}}, +/* 56809 */ {(14<<2)|2,{83,121,0}}, +/* 56810 */ {(14<<2)|2,{83,121,0}}, +/* 56811 */ {(14<<2)|2,{83,121,0}}, +/* 56812 */ {(14<<2)|2,{83,122,0}}, +/* 56813 */ {(14<<2)|2,{83,122,0}}, +/* 56814 */ {(14<<2)|2,{83,122,0}}, +/* 56815 */ {(14<<2)|2,{83,122,0}}, +/* 56816 */ {(15<<2)|2,{83,38,0}}, +/* 56817 */ {(15<<2)|2,{83,38,0}}, +/* 56818 */ {(15<<2)|2,{83,42,0}}, +/* 56819 */ {(15<<2)|2,{83,42,0}}, +/* 56820 */ {(15<<2)|2,{83,44,0}}, +/* 56821 */ {(15<<2)|2,{83,44,0}}, +/* 56822 */ {(15<<2)|2,{83,59,0}}, +/* 56823 */ {(15<<2)|2,{83,59,0}}, +/* 56824 */ {(15<<2)|2,{83,88,0}}, +/* 56825 */ {(15<<2)|2,{83,88,0}}, +/* 56826 */ {(15<<2)|2,{83,90,0}}, +/* 56827 */ {(15<<2)|2,{83,90,0}}, +/* 56828 */ {(7<<2)|1,{83,0,0}}, +/* 56829 */ {(7<<2)|1,{83,0,0}}, +/* 56830 */ {(7<<2)|1,{83,0,0}}, +/* 56831 */ {(7<<2)|1,{83,0,0}}, +/* 56832 */ {(12<<2)|2,{84,48,0}}, +/* 56833 */ {(12<<2)|2,{84,48,0}}, +/* 56834 */ {(12<<2)|2,{84,48,0}}, +/* 56835 */ {(12<<2)|2,{84,48,0}}, +/* 56836 */ {(12<<2)|2,{84,48,0}}, +/* 56837 */ {(12<<2)|2,{84,48,0}}, +/* 56838 */ {(12<<2)|2,{84,48,0}}, +/* 56839 */ {(12<<2)|2,{84,48,0}}, +/* 56840 */ {(12<<2)|2,{84,48,0}}, +/* 56841 */ {(12<<2)|2,{84,48,0}}, +/* 56842 */ {(12<<2)|2,{84,48,0}}, +/* 56843 */ {(12<<2)|2,{84,48,0}}, +/* 56844 */ {(12<<2)|2,{84,48,0}}, +/* 56845 */ {(12<<2)|2,{84,48,0}}, +/* 56846 */ {(12<<2)|2,{84,48,0}}, +/* 56847 */ {(12<<2)|2,{84,48,0}}, +/* 56848 */ {(12<<2)|2,{84,49,0}}, +/* 56849 */ {(12<<2)|2,{84,49,0}}, +/* 56850 */ {(12<<2)|2,{84,49,0}}, +/* 56851 */ {(12<<2)|2,{84,49,0}}, +/* 56852 */ {(12<<2)|2,{84,49,0}}, +/* 56853 */ {(12<<2)|2,{84,49,0}}, +/* 56854 */ {(12<<2)|2,{84,49,0}}, +/* 56855 */ {(12<<2)|2,{84,49,0}}, +/* 56856 */ {(12<<2)|2,{84,49,0}}, +/* 56857 */ {(12<<2)|2,{84,49,0}}, +/* 56858 */ {(12<<2)|2,{84,49,0}}, +/* 56859 */ {(12<<2)|2,{84,49,0}}, +/* 56860 */ {(12<<2)|2,{84,49,0}}, +/* 56861 */ {(12<<2)|2,{84,49,0}}, +/* 56862 */ {(12<<2)|2,{84,49,0}}, +/* 56863 */ {(12<<2)|2,{84,49,0}}, +/* 56864 */ {(12<<2)|2,{84,50,0}}, +/* 56865 */ {(12<<2)|2,{84,50,0}}, +/* 56866 */ {(12<<2)|2,{84,50,0}}, +/* 56867 */ {(12<<2)|2,{84,50,0}}, +/* 56868 */ {(12<<2)|2,{84,50,0}}, +/* 56869 */ {(12<<2)|2,{84,50,0}}, +/* 56870 */ {(12<<2)|2,{84,50,0}}, +/* 56871 */ {(12<<2)|2,{84,50,0}}, +/* 56872 */ {(12<<2)|2,{84,50,0}}, +/* 56873 */ {(12<<2)|2,{84,50,0}}, +/* 56874 */ {(12<<2)|2,{84,50,0}}, +/* 56875 */ {(12<<2)|2,{84,50,0}}, +/* 56876 */ {(12<<2)|2,{84,50,0}}, +/* 56877 */ {(12<<2)|2,{84,50,0}}, +/* 56878 */ {(12<<2)|2,{84,50,0}}, +/* 56879 */ {(12<<2)|2,{84,50,0}}, +/* 56880 */ {(12<<2)|2,{84,97,0}}, +/* 56881 */ {(12<<2)|2,{84,97,0}}, +/* 56882 */ {(12<<2)|2,{84,97,0}}, +/* 56883 */ {(12<<2)|2,{84,97,0}}, +/* 56884 */ {(12<<2)|2,{84,97,0}}, +/* 56885 */ {(12<<2)|2,{84,97,0}}, +/* 56886 */ {(12<<2)|2,{84,97,0}}, +/* 56887 */ {(12<<2)|2,{84,97,0}}, +/* 56888 */ {(12<<2)|2,{84,97,0}}, +/* 56889 */ {(12<<2)|2,{84,97,0}}, +/* 56890 */ {(12<<2)|2,{84,97,0}}, +/* 56891 */ {(12<<2)|2,{84,97,0}}, +/* 56892 */ {(12<<2)|2,{84,97,0}}, +/* 56893 */ {(12<<2)|2,{84,97,0}}, +/* 56894 */ {(12<<2)|2,{84,97,0}}, +/* 56895 */ {(12<<2)|2,{84,97,0}}, +/* 56896 */ {(12<<2)|2,{84,99,0}}, +/* 56897 */ {(12<<2)|2,{84,99,0}}, +/* 56898 */ {(12<<2)|2,{84,99,0}}, +/* 56899 */ {(12<<2)|2,{84,99,0}}, +/* 56900 */ {(12<<2)|2,{84,99,0}}, +/* 56901 */ {(12<<2)|2,{84,99,0}}, +/* 56902 */ {(12<<2)|2,{84,99,0}}, +/* 56903 */ {(12<<2)|2,{84,99,0}}, +/* 56904 */ {(12<<2)|2,{84,99,0}}, +/* 56905 */ {(12<<2)|2,{84,99,0}}, +/* 56906 */ {(12<<2)|2,{84,99,0}}, +/* 56907 */ {(12<<2)|2,{84,99,0}}, +/* 56908 */ {(12<<2)|2,{84,99,0}}, +/* 56909 */ {(12<<2)|2,{84,99,0}}, +/* 56910 */ {(12<<2)|2,{84,99,0}}, +/* 56911 */ {(12<<2)|2,{84,99,0}}, +/* 56912 */ {(12<<2)|2,{84,101,0}}, +/* 56913 */ {(12<<2)|2,{84,101,0}}, +/* 56914 */ {(12<<2)|2,{84,101,0}}, +/* 56915 */ {(12<<2)|2,{84,101,0}}, +/* 56916 */ {(12<<2)|2,{84,101,0}}, +/* 56917 */ {(12<<2)|2,{84,101,0}}, +/* 56918 */ {(12<<2)|2,{84,101,0}}, +/* 56919 */ {(12<<2)|2,{84,101,0}}, +/* 56920 */ {(12<<2)|2,{84,101,0}}, +/* 56921 */ {(12<<2)|2,{84,101,0}}, +/* 56922 */ {(12<<2)|2,{84,101,0}}, +/* 56923 */ {(12<<2)|2,{84,101,0}}, +/* 56924 */ {(12<<2)|2,{84,101,0}}, +/* 56925 */ {(12<<2)|2,{84,101,0}}, +/* 56926 */ {(12<<2)|2,{84,101,0}}, +/* 56927 */ {(12<<2)|2,{84,101,0}}, +/* 56928 */ {(12<<2)|2,{84,105,0}}, +/* 56929 */ {(12<<2)|2,{84,105,0}}, +/* 56930 */ {(12<<2)|2,{84,105,0}}, +/* 56931 */ {(12<<2)|2,{84,105,0}}, +/* 56932 */ {(12<<2)|2,{84,105,0}}, +/* 56933 */ {(12<<2)|2,{84,105,0}}, +/* 56934 */ {(12<<2)|2,{84,105,0}}, +/* 56935 */ {(12<<2)|2,{84,105,0}}, +/* 56936 */ {(12<<2)|2,{84,105,0}}, +/* 56937 */ {(12<<2)|2,{84,105,0}}, +/* 56938 */ {(12<<2)|2,{84,105,0}}, +/* 56939 */ {(12<<2)|2,{84,105,0}}, +/* 56940 */ {(12<<2)|2,{84,105,0}}, +/* 56941 */ {(12<<2)|2,{84,105,0}}, +/* 56942 */ {(12<<2)|2,{84,105,0}}, +/* 56943 */ {(12<<2)|2,{84,105,0}}, +/* 56944 */ {(12<<2)|2,{84,111,0}}, +/* 56945 */ {(12<<2)|2,{84,111,0}}, +/* 56946 */ {(12<<2)|2,{84,111,0}}, +/* 56947 */ {(12<<2)|2,{84,111,0}}, +/* 56948 */ {(12<<2)|2,{84,111,0}}, +/* 56949 */ {(12<<2)|2,{84,111,0}}, +/* 56950 */ {(12<<2)|2,{84,111,0}}, +/* 56951 */ {(12<<2)|2,{84,111,0}}, +/* 56952 */ {(12<<2)|2,{84,111,0}}, +/* 56953 */ {(12<<2)|2,{84,111,0}}, +/* 56954 */ {(12<<2)|2,{84,111,0}}, +/* 56955 */ {(12<<2)|2,{84,111,0}}, +/* 56956 */ {(12<<2)|2,{84,111,0}}, +/* 56957 */ {(12<<2)|2,{84,111,0}}, +/* 56958 */ {(12<<2)|2,{84,111,0}}, +/* 56959 */ {(12<<2)|2,{84,111,0}}, +/* 56960 */ {(12<<2)|2,{84,115,0}}, +/* 56961 */ {(12<<2)|2,{84,115,0}}, +/* 56962 */ {(12<<2)|2,{84,115,0}}, +/* 56963 */ {(12<<2)|2,{84,115,0}}, +/* 56964 */ {(12<<2)|2,{84,115,0}}, +/* 56965 */ {(12<<2)|2,{84,115,0}}, +/* 56966 */ {(12<<2)|2,{84,115,0}}, +/* 56967 */ {(12<<2)|2,{84,115,0}}, +/* 56968 */ {(12<<2)|2,{84,115,0}}, +/* 56969 */ {(12<<2)|2,{84,115,0}}, +/* 56970 */ {(12<<2)|2,{84,115,0}}, +/* 56971 */ {(12<<2)|2,{84,115,0}}, +/* 56972 */ {(12<<2)|2,{84,115,0}}, +/* 56973 */ {(12<<2)|2,{84,115,0}}, +/* 56974 */ {(12<<2)|2,{84,115,0}}, +/* 56975 */ {(12<<2)|2,{84,115,0}}, +/* 56976 */ {(12<<2)|2,{84,116,0}}, +/* 56977 */ {(12<<2)|2,{84,116,0}}, +/* 56978 */ {(12<<2)|2,{84,116,0}}, +/* 56979 */ {(12<<2)|2,{84,116,0}}, +/* 56980 */ {(12<<2)|2,{84,116,0}}, +/* 56981 */ {(12<<2)|2,{84,116,0}}, +/* 56982 */ {(12<<2)|2,{84,116,0}}, +/* 56983 */ {(12<<2)|2,{84,116,0}}, +/* 56984 */ {(12<<2)|2,{84,116,0}}, +/* 56985 */ {(12<<2)|2,{84,116,0}}, +/* 56986 */ {(12<<2)|2,{84,116,0}}, +/* 56987 */ {(12<<2)|2,{84,116,0}}, +/* 56988 */ {(12<<2)|2,{84,116,0}}, +/* 56989 */ {(12<<2)|2,{84,116,0}}, +/* 56990 */ {(12<<2)|2,{84,116,0}}, +/* 56991 */ {(12<<2)|2,{84,116,0}}, +/* 56992 */ {(13<<2)|2,{84,32,0}}, +/* 56993 */ {(13<<2)|2,{84,32,0}}, +/* 56994 */ {(13<<2)|2,{84,32,0}}, +/* 56995 */ {(13<<2)|2,{84,32,0}}, +/* 56996 */ {(13<<2)|2,{84,32,0}}, +/* 56997 */ {(13<<2)|2,{84,32,0}}, +/* 56998 */ {(13<<2)|2,{84,32,0}}, +/* 56999 */ {(13<<2)|2,{84,32,0}}, +/* 57000 */ {(13<<2)|2,{84,37,0}}, +/* 57001 */ {(13<<2)|2,{84,37,0}}, +/* 57002 */ {(13<<2)|2,{84,37,0}}, +/* 57003 */ {(13<<2)|2,{84,37,0}}, +/* 57004 */ {(13<<2)|2,{84,37,0}}, +/* 57005 */ {(13<<2)|2,{84,37,0}}, +/* 57006 */ {(13<<2)|2,{84,37,0}}, +/* 57007 */ {(13<<2)|2,{84,37,0}}, +/* 57008 */ {(13<<2)|2,{84,45,0}}, +/* 57009 */ {(13<<2)|2,{84,45,0}}, +/* 57010 */ {(13<<2)|2,{84,45,0}}, +/* 57011 */ {(13<<2)|2,{84,45,0}}, +/* 57012 */ {(13<<2)|2,{84,45,0}}, +/* 57013 */ {(13<<2)|2,{84,45,0}}, +/* 57014 */ {(13<<2)|2,{84,45,0}}, +/* 57015 */ {(13<<2)|2,{84,45,0}}, +/* 57016 */ {(13<<2)|2,{84,46,0}}, +/* 57017 */ {(13<<2)|2,{84,46,0}}, +/* 57018 */ {(13<<2)|2,{84,46,0}}, +/* 57019 */ {(13<<2)|2,{84,46,0}}, +/* 57020 */ {(13<<2)|2,{84,46,0}}, +/* 57021 */ {(13<<2)|2,{84,46,0}}, +/* 57022 */ {(13<<2)|2,{84,46,0}}, +/* 57023 */ {(13<<2)|2,{84,46,0}}, +/* 57024 */ {(13<<2)|2,{84,47,0}}, +/* 57025 */ {(13<<2)|2,{84,47,0}}, +/* 57026 */ {(13<<2)|2,{84,47,0}}, +/* 57027 */ {(13<<2)|2,{84,47,0}}, +/* 57028 */ {(13<<2)|2,{84,47,0}}, +/* 57029 */ {(13<<2)|2,{84,47,0}}, +/* 57030 */ {(13<<2)|2,{84,47,0}}, +/* 57031 */ {(13<<2)|2,{84,47,0}}, +/* 57032 */ {(13<<2)|2,{84,51,0}}, +/* 57033 */ {(13<<2)|2,{84,51,0}}, +/* 57034 */ {(13<<2)|2,{84,51,0}}, +/* 57035 */ {(13<<2)|2,{84,51,0}}, +/* 57036 */ {(13<<2)|2,{84,51,0}}, +/* 57037 */ {(13<<2)|2,{84,51,0}}, +/* 57038 */ {(13<<2)|2,{84,51,0}}, +/* 57039 */ {(13<<2)|2,{84,51,0}}, +/* 57040 */ {(13<<2)|2,{84,52,0}}, +/* 57041 */ {(13<<2)|2,{84,52,0}}, +/* 57042 */ {(13<<2)|2,{84,52,0}}, +/* 57043 */ {(13<<2)|2,{84,52,0}}, +/* 57044 */ {(13<<2)|2,{84,52,0}}, +/* 57045 */ {(13<<2)|2,{84,52,0}}, +/* 57046 */ {(13<<2)|2,{84,52,0}}, +/* 57047 */ {(13<<2)|2,{84,52,0}}, +/* 57048 */ {(13<<2)|2,{84,53,0}}, +/* 57049 */ {(13<<2)|2,{84,53,0}}, +/* 57050 */ {(13<<2)|2,{84,53,0}}, +/* 57051 */ {(13<<2)|2,{84,53,0}}, +/* 57052 */ {(13<<2)|2,{84,53,0}}, +/* 57053 */ {(13<<2)|2,{84,53,0}}, +/* 57054 */ {(13<<2)|2,{84,53,0}}, +/* 57055 */ {(13<<2)|2,{84,53,0}}, +/* 57056 */ {(13<<2)|2,{84,54,0}}, +/* 57057 */ {(13<<2)|2,{84,54,0}}, +/* 57058 */ {(13<<2)|2,{84,54,0}}, +/* 57059 */ {(13<<2)|2,{84,54,0}}, +/* 57060 */ {(13<<2)|2,{84,54,0}}, +/* 57061 */ {(13<<2)|2,{84,54,0}}, +/* 57062 */ {(13<<2)|2,{84,54,0}}, +/* 57063 */ {(13<<2)|2,{84,54,0}}, +/* 57064 */ {(13<<2)|2,{84,55,0}}, +/* 57065 */ {(13<<2)|2,{84,55,0}}, +/* 57066 */ {(13<<2)|2,{84,55,0}}, +/* 57067 */ {(13<<2)|2,{84,55,0}}, +/* 57068 */ {(13<<2)|2,{84,55,0}}, +/* 57069 */ {(13<<2)|2,{84,55,0}}, +/* 57070 */ {(13<<2)|2,{84,55,0}}, +/* 57071 */ {(13<<2)|2,{84,55,0}}, +/* 57072 */ {(13<<2)|2,{84,56,0}}, +/* 57073 */ {(13<<2)|2,{84,56,0}}, +/* 57074 */ {(13<<2)|2,{84,56,0}}, +/* 57075 */ {(13<<2)|2,{84,56,0}}, +/* 57076 */ {(13<<2)|2,{84,56,0}}, +/* 57077 */ {(13<<2)|2,{84,56,0}}, +/* 57078 */ {(13<<2)|2,{84,56,0}}, +/* 57079 */ {(13<<2)|2,{84,56,0}}, +/* 57080 */ {(13<<2)|2,{84,57,0}}, +/* 57081 */ {(13<<2)|2,{84,57,0}}, +/* 57082 */ {(13<<2)|2,{84,57,0}}, +/* 57083 */ {(13<<2)|2,{84,57,0}}, +/* 57084 */ {(13<<2)|2,{84,57,0}}, +/* 57085 */ {(13<<2)|2,{84,57,0}}, +/* 57086 */ {(13<<2)|2,{84,57,0}}, +/* 57087 */ {(13<<2)|2,{84,57,0}}, +/* 57088 */ {(13<<2)|2,{84,61,0}}, +/* 57089 */ {(13<<2)|2,{84,61,0}}, +/* 57090 */ {(13<<2)|2,{84,61,0}}, +/* 57091 */ {(13<<2)|2,{84,61,0}}, +/* 57092 */ {(13<<2)|2,{84,61,0}}, +/* 57093 */ {(13<<2)|2,{84,61,0}}, +/* 57094 */ {(13<<2)|2,{84,61,0}}, +/* 57095 */ {(13<<2)|2,{84,61,0}}, +/* 57096 */ {(13<<2)|2,{84,65,0}}, +/* 57097 */ {(13<<2)|2,{84,65,0}}, +/* 57098 */ {(13<<2)|2,{84,65,0}}, +/* 57099 */ {(13<<2)|2,{84,65,0}}, +/* 57100 */ {(13<<2)|2,{84,65,0}}, +/* 57101 */ {(13<<2)|2,{84,65,0}}, +/* 57102 */ {(13<<2)|2,{84,65,0}}, +/* 57103 */ {(13<<2)|2,{84,65,0}}, +/* 57104 */ {(13<<2)|2,{84,95,0}}, +/* 57105 */ {(13<<2)|2,{84,95,0}}, +/* 57106 */ {(13<<2)|2,{84,95,0}}, +/* 57107 */ {(13<<2)|2,{84,95,0}}, +/* 57108 */ {(13<<2)|2,{84,95,0}}, +/* 57109 */ {(13<<2)|2,{84,95,0}}, +/* 57110 */ {(13<<2)|2,{84,95,0}}, +/* 57111 */ {(13<<2)|2,{84,95,0}}, +/* 57112 */ {(13<<2)|2,{84,98,0}}, +/* 57113 */ {(13<<2)|2,{84,98,0}}, +/* 57114 */ {(13<<2)|2,{84,98,0}}, +/* 57115 */ {(13<<2)|2,{84,98,0}}, +/* 57116 */ {(13<<2)|2,{84,98,0}}, +/* 57117 */ {(13<<2)|2,{84,98,0}}, +/* 57118 */ {(13<<2)|2,{84,98,0}}, +/* 57119 */ {(13<<2)|2,{84,98,0}}, +/* 57120 */ {(13<<2)|2,{84,100,0}}, +/* 57121 */ {(13<<2)|2,{84,100,0}}, +/* 57122 */ {(13<<2)|2,{84,100,0}}, +/* 57123 */ {(13<<2)|2,{84,100,0}}, +/* 57124 */ {(13<<2)|2,{84,100,0}}, +/* 57125 */ {(13<<2)|2,{84,100,0}}, +/* 57126 */ {(13<<2)|2,{84,100,0}}, +/* 57127 */ {(13<<2)|2,{84,100,0}}, +/* 57128 */ {(13<<2)|2,{84,102,0}}, +/* 57129 */ {(13<<2)|2,{84,102,0}}, +/* 57130 */ {(13<<2)|2,{84,102,0}}, +/* 57131 */ {(13<<2)|2,{84,102,0}}, +/* 57132 */ {(13<<2)|2,{84,102,0}}, +/* 57133 */ {(13<<2)|2,{84,102,0}}, +/* 57134 */ {(13<<2)|2,{84,102,0}}, +/* 57135 */ {(13<<2)|2,{84,102,0}}, +/* 57136 */ {(13<<2)|2,{84,103,0}}, +/* 57137 */ {(13<<2)|2,{84,103,0}}, +/* 57138 */ {(13<<2)|2,{84,103,0}}, +/* 57139 */ {(13<<2)|2,{84,103,0}}, +/* 57140 */ {(13<<2)|2,{84,103,0}}, +/* 57141 */ {(13<<2)|2,{84,103,0}}, +/* 57142 */ {(13<<2)|2,{84,103,0}}, +/* 57143 */ {(13<<2)|2,{84,103,0}}, +/* 57144 */ {(13<<2)|2,{84,104,0}}, +/* 57145 */ {(13<<2)|2,{84,104,0}}, +/* 57146 */ {(13<<2)|2,{84,104,0}}, +/* 57147 */ {(13<<2)|2,{84,104,0}}, +/* 57148 */ {(13<<2)|2,{84,104,0}}, +/* 57149 */ {(13<<2)|2,{84,104,0}}, +/* 57150 */ {(13<<2)|2,{84,104,0}}, +/* 57151 */ {(13<<2)|2,{84,104,0}}, +/* 57152 */ {(13<<2)|2,{84,108,0}}, +/* 57153 */ {(13<<2)|2,{84,108,0}}, +/* 57154 */ {(13<<2)|2,{84,108,0}}, +/* 57155 */ {(13<<2)|2,{84,108,0}}, +/* 57156 */ {(13<<2)|2,{84,108,0}}, +/* 57157 */ {(13<<2)|2,{84,108,0}}, +/* 57158 */ {(13<<2)|2,{84,108,0}}, +/* 57159 */ {(13<<2)|2,{84,108,0}}, +/* 57160 */ {(13<<2)|2,{84,109,0}}, +/* 57161 */ {(13<<2)|2,{84,109,0}}, +/* 57162 */ {(13<<2)|2,{84,109,0}}, +/* 57163 */ {(13<<2)|2,{84,109,0}}, +/* 57164 */ {(13<<2)|2,{84,109,0}}, +/* 57165 */ {(13<<2)|2,{84,109,0}}, +/* 57166 */ {(13<<2)|2,{84,109,0}}, +/* 57167 */ {(13<<2)|2,{84,109,0}}, +/* 57168 */ {(13<<2)|2,{84,110,0}}, +/* 57169 */ {(13<<2)|2,{84,110,0}}, +/* 57170 */ {(13<<2)|2,{84,110,0}}, +/* 57171 */ {(13<<2)|2,{84,110,0}}, +/* 57172 */ {(13<<2)|2,{84,110,0}}, +/* 57173 */ {(13<<2)|2,{84,110,0}}, +/* 57174 */ {(13<<2)|2,{84,110,0}}, +/* 57175 */ {(13<<2)|2,{84,110,0}}, +/* 57176 */ {(13<<2)|2,{84,112,0}}, +/* 57177 */ {(13<<2)|2,{84,112,0}}, +/* 57178 */ {(13<<2)|2,{84,112,0}}, +/* 57179 */ {(13<<2)|2,{84,112,0}}, +/* 57180 */ {(13<<2)|2,{84,112,0}}, +/* 57181 */ {(13<<2)|2,{84,112,0}}, +/* 57182 */ {(13<<2)|2,{84,112,0}}, +/* 57183 */ {(13<<2)|2,{84,112,0}}, +/* 57184 */ {(13<<2)|2,{84,114,0}}, +/* 57185 */ {(13<<2)|2,{84,114,0}}, +/* 57186 */ {(13<<2)|2,{84,114,0}}, +/* 57187 */ {(13<<2)|2,{84,114,0}}, +/* 57188 */ {(13<<2)|2,{84,114,0}}, +/* 57189 */ {(13<<2)|2,{84,114,0}}, +/* 57190 */ {(13<<2)|2,{84,114,0}}, +/* 57191 */ {(13<<2)|2,{84,114,0}}, +/* 57192 */ {(13<<2)|2,{84,117,0}}, +/* 57193 */ {(13<<2)|2,{84,117,0}}, +/* 57194 */ {(13<<2)|2,{84,117,0}}, +/* 57195 */ {(13<<2)|2,{84,117,0}}, +/* 57196 */ {(13<<2)|2,{84,117,0}}, +/* 57197 */ {(13<<2)|2,{84,117,0}}, +/* 57198 */ {(13<<2)|2,{84,117,0}}, +/* 57199 */ {(13<<2)|2,{84,117,0}}, +/* 57200 */ {(14<<2)|2,{84,58,0}}, +/* 57201 */ {(14<<2)|2,{84,58,0}}, +/* 57202 */ {(14<<2)|2,{84,58,0}}, +/* 57203 */ {(14<<2)|2,{84,58,0}}, +/* 57204 */ {(14<<2)|2,{84,66,0}}, +/* 57205 */ {(14<<2)|2,{84,66,0}}, +/* 57206 */ {(14<<2)|2,{84,66,0}}, +/* 57207 */ {(14<<2)|2,{84,66,0}}, +/* 57208 */ {(14<<2)|2,{84,67,0}}, +/* 57209 */ {(14<<2)|2,{84,67,0}}, +/* 57210 */ {(14<<2)|2,{84,67,0}}, +/* 57211 */ {(14<<2)|2,{84,67,0}}, +/* 57212 */ {(14<<2)|2,{84,68,0}}, +/* 57213 */ {(14<<2)|2,{84,68,0}}, +/* 57214 */ {(14<<2)|2,{84,68,0}}, +/* 57215 */ {(14<<2)|2,{84,68,0}}, +/* 57216 */ {(14<<2)|2,{84,69,0}}, +/* 57217 */ {(14<<2)|2,{84,69,0}}, +/* 57218 */ {(14<<2)|2,{84,69,0}}, +/* 57219 */ {(14<<2)|2,{84,69,0}}, +/* 57220 */ {(14<<2)|2,{84,70,0}}, +/* 57221 */ {(14<<2)|2,{84,70,0}}, +/* 57222 */ {(14<<2)|2,{84,70,0}}, +/* 57223 */ {(14<<2)|2,{84,70,0}}, +/* 57224 */ {(14<<2)|2,{84,71,0}}, +/* 57225 */ {(14<<2)|2,{84,71,0}}, +/* 57226 */ {(14<<2)|2,{84,71,0}}, +/* 57227 */ {(14<<2)|2,{84,71,0}}, +/* 57228 */ {(14<<2)|2,{84,72,0}}, +/* 57229 */ {(14<<2)|2,{84,72,0}}, +/* 57230 */ {(14<<2)|2,{84,72,0}}, +/* 57231 */ {(14<<2)|2,{84,72,0}}, +/* 57232 */ {(14<<2)|2,{84,73,0}}, +/* 57233 */ {(14<<2)|2,{84,73,0}}, +/* 57234 */ {(14<<2)|2,{84,73,0}}, +/* 57235 */ {(14<<2)|2,{84,73,0}}, +/* 57236 */ {(14<<2)|2,{84,74,0}}, +/* 57237 */ {(14<<2)|2,{84,74,0}}, +/* 57238 */ {(14<<2)|2,{84,74,0}}, +/* 57239 */ {(14<<2)|2,{84,74,0}}, +/* 57240 */ {(14<<2)|2,{84,75,0}}, +/* 57241 */ {(14<<2)|2,{84,75,0}}, +/* 57242 */ {(14<<2)|2,{84,75,0}}, +/* 57243 */ {(14<<2)|2,{84,75,0}}, +/* 57244 */ {(14<<2)|2,{84,76,0}}, +/* 57245 */ {(14<<2)|2,{84,76,0}}, +/* 57246 */ {(14<<2)|2,{84,76,0}}, +/* 57247 */ {(14<<2)|2,{84,76,0}}, +/* 57248 */ {(14<<2)|2,{84,77,0}}, +/* 57249 */ {(14<<2)|2,{84,77,0}}, +/* 57250 */ {(14<<2)|2,{84,77,0}}, +/* 57251 */ {(14<<2)|2,{84,77,0}}, +/* 57252 */ {(14<<2)|2,{84,78,0}}, +/* 57253 */ {(14<<2)|2,{84,78,0}}, +/* 57254 */ {(14<<2)|2,{84,78,0}}, +/* 57255 */ {(14<<2)|2,{84,78,0}}, +/* 57256 */ {(14<<2)|2,{84,79,0}}, +/* 57257 */ {(14<<2)|2,{84,79,0}}, +/* 57258 */ {(14<<2)|2,{84,79,0}}, +/* 57259 */ {(14<<2)|2,{84,79,0}}, +/* 57260 */ {(14<<2)|2,{84,80,0}}, +/* 57261 */ {(14<<2)|2,{84,80,0}}, +/* 57262 */ {(14<<2)|2,{84,80,0}}, +/* 57263 */ {(14<<2)|2,{84,80,0}}, +/* 57264 */ {(14<<2)|2,{84,81,0}}, +/* 57265 */ {(14<<2)|2,{84,81,0}}, +/* 57266 */ {(14<<2)|2,{84,81,0}}, +/* 57267 */ {(14<<2)|2,{84,81,0}}, +/* 57268 */ {(14<<2)|2,{84,82,0}}, +/* 57269 */ {(14<<2)|2,{84,82,0}}, +/* 57270 */ {(14<<2)|2,{84,82,0}}, +/* 57271 */ {(14<<2)|2,{84,82,0}}, +/* 57272 */ {(14<<2)|2,{84,83,0}}, +/* 57273 */ {(14<<2)|2,{84,83,0}}, +/* 57274 */ {(14<<2)|2,{84,83,0}}, +/* 57275 */ {(14<<2)|2,{84,83,0}}, +/* 57276 */ {(14<<2)|2,{84,84,0}}, +/* 57277 */ {(14<<2)|2,{84,84,0}}, +/* 57278 */ {(14<<2)|2,{84,84,0}}, +/* 57279 */ {(14<<2)|2,{84,84,0}}, +/* 57280 */ {(14<<2)|2,{84,85,0}}, +/* 57281 */ {(14<<2)|2,{84,85,0}}, +/* 57282 */ {(14<<2)|2,{84,85,0}}, +/* 57283 */ {(14<<2)|2,{84,85,0}}, +/* 57284 */ {(14<<2)|2,{84,86,0}}, +/* 57285 */ {(14<<2)|2,{84,86,0}}, +/* 57286 */ {(14<<2)|2,{84,86,0}}, +/* 57287 */ {(14<<2)|2,{84,86,0}}, +/* 57288 */ {(14<<2)|2,{84,87,0}}, +/* 57289 */ {(14<<2)|2,{84,87,0}}, +/* 57290 */ {(14<<2)|2,{84,87,0}}, +/* 57291 */ {(14<<2)|2,{84,87,0}}, +/* 57292 */ {(14<<2)|2,{84,89,0}}, +/* 57293 */ {(14<<2)|2,{84,89,0}}, +/* 57294 */ {(14<<2)|2,{84,89,0}}, +/* 57295 */ {(14<<2)|2,{84,89,0}}, +/* 57296 */ {(14<<2)|2,{84,106,0}}, +/* 57297 */ {(14<<2)|2,{84,106,0}}, +/* 57298 */ {(14<<2)|2,{84,106,0}}, +/* 57299 */ {(14<<2)|2,{84,106,0}}, +/* 57300 */ {(14<<2)|2,{84,107,0}}, +/* 57301 */ {(14<<2)|2,{84,107,0}}, +/* 57302 */ {(14<<2)|2,{84,107,0}}, +/* 57303 */ {(14<<2)|2,{84,107,0}}, +/* 57304 */ {(14<<2)|2,{84,113,0}}, +/* 57305 */ {(14<<2)|2,{84,113,0}}, +/* 57306 */ {(14<<2)|2,{84,113,0}}, +/* 57307 */ {(14<<2)|2,{84,113,0}}, +/* 57308 */ {(14<<2)|2,{84,118,0}}, +/* 57309 */ {(14<<2)|2,{84,118,0}}, +/* 57310 */ {(14<<2)|2,{84,118,0}}, +/* 57311 */ {(14<<2)|2,{84,118,0}}, +/* 57312 */ {(14<<2)|2,{84,119,0}}, +/* 57313 */ {(14<<2)|2,{84,119,0}}, +/* 57314 */ {(14<<2)|2,{84,119,0}}, +/* 57315 */ {(14<<2)|2,{84,119,0}}, +/* 57316 */ {(14<<2)|2,{84,120,0}}, +/* 57317 */ {(14<<2)|2,{84,120,0}}, +/* 57318 */ {(14<<2)|2,{84,120,0}}, +/* 57319 */ {(14<<2)|2,{84,120,0}}, +/* 57320 */ {(14<<2)|2,{84,121,0}}, +/* 57321 */ {(14<<2)|2,{84,121,0}}, +/* 57322 */ {(14<<2)|2,{84,121,0}}, +/* 57323 */ {(14<<2)|2,{84,121,0}}, +/* 57324 */ {(14<<2)|2,{84,122,0}}, +/* 57325 */ {(14<<2)|2,{84,122,0}}, +/* 57326 */ {(14<<2)|2,{84,122,0}}, +/* 57327 */ {(14<<2)|2,{84,122,0}}, +/* 57328 */ {(15<<2)|2,{84,38,0}}, +/* 57329 */ {(15<<2)|2,{84,38,0}}, +/* 57330 */ {(15<<2)|2,{84,42,0}}, +/* 57331 */ {(15<<2)|2,{84,42,0}}, +/* 57332 */ {(15<<2)|2,{84,44,0}}, +/* 57333 */ {(15<<2)|2,{84,44,0}}, +/* 57334 */ {(15<<2)|2,{84,59,0}}, +/* 57335 */ {(15<<2)|2,{84,59,0}}, +/* 57336 */ {(15<<2)|2,{84,88,0}}, +/* 57337 */ {(15<<2)|2,{84,88,0}}, +/* 57338 */ {(15<<2)|2,{84,90,0}}, +/* 57339 */ {(15<<2)|2,{84,90,0}}, +/* 57340 */ {(7<<2)|1,{84,0,0}}, +/* 57341 */ {(7<<2)|1,{84,0,0}}, +/* 57342 */ {(7<<2)|1,{84,0,0}}, +/* 57343 */ {(7<<2)|1,{84,0,0}}, +/* 57344 */ {(12<<2)|2,{85,48,0}}, +/* 57345 */ {(12<<2)|2,{85,48,0}}, +/* 57346 */ {(12<<2)|2,{85,48,0}}, +/* 57347 */ {(12<<2)|2,{85,48,0}}, +/* 57348 */ {(12<<2)|2,{85,48,0}}, +/* 57349 */ {(12<<2)|2,{85,48,0}}, +/* 57350 */ {(12<<2)|2,{85,48,0}}, +/* 57351 */ {(12<<2)|2,{85,48,0}}, +/* 57352 */ {(12<<2)|2,{85,48,0}}, +/* 57353 */ {(12<<2)|2,{85,48,0}}, +/* 57354 */ {(12<<2)|2,{85,48,0}}, +/* 57355 */ {(12<<2)|2,{85,48,0}}, +/* 57356 */ {(12<<2)|2,{85,48,0}}, +/* 57357 */ {(12<<2)|2,{85,48,0}}, +/* 57358 */ {(12<<2)|2,{85,48,0}}, +/* 57359 */ {(12<<2)|2,{85,48,0}}, +/* 57360 */ {(12<<2)|2,{85,49,0}}, +/* 57361 */ {(12<<2)|2,{85,49,0}}, +/* 57362 */ {(12<<2)|2,{85,49,0}}, +/* 57363 */ {(12<<2)|2,{85,49,0}}, +/* 57364 */ {(12<<2)|2,{85,49,0}}, +/* 57365 */ {(12<<2)|2,{85,49,0}}, +/* 57366 */ {(12<<2)|2,{85,49,0}}, +/* 57367 */ {(12<<2)|2,{85,49,0}}, +/* 57368 */ {(12<<2)|2,{85,49,0}}, +/* 57369 */ {(12<<2)|2,{85,49,0}}, +/* 57370 */ {(12<<2)|2,{85,49,0}}, +/* 57371 */ {(12<<2)|2,{85,49,0}}, +/* 57372 */ {(12<<2)|2,{85,49,0}}, +/* 57373 */ {(12<<2)|2,{85,49,0}}, +/* 57374 */ {(12<<2)|2,{85,49,0}}, +/* 57375 */ {(12<<2)|2,{85,49,0}}, +/* 57376 */ {(12<<2)|2,{85,50,0}}, +/* 57377 */ {(12<<2)|2,{85,50,0}}, +/* 57378 */ {(12<<2)|2,{85,50,0}}, +/* 57379 */ {(12<<2)|2,{85,50,0}}, +/* 57380 */ {(12<<2)|2,{85,50,0}}, +/* 57381 */ {(12<<2)|2,{85,50,0}}, +/* 57382 */ {(12<<2)|2,{85,50,0}}, +/* 57383 */ {(12<<2)|2,{85,50,0}}, +/* 57384 */ {(12<<2)|2,{85,50,0}}, +/* 57385 */ {(12<<2)|2,{85,50,0}}, +/* 57386 */ {(12<<2)|2,{85,50,0}}, +/* 57387 */ {(12<<2)|2,{85,50,0}}, +/* 57388 */ {(12<<2)|2,{85,50,0}}, +/* 57389 */ {(12<<2)|2,{85,50,0}}, +/* 57390 */ {(12<<2)|2,{85,50,0}}, +/* 57391 */ {(12<<2)|2,{85,50,0}}, +/* 57392 */ {(12<<2)|2,{85,97,0}}, +/* 57393 */ {(12<<2)|2,{85,97,0}}, +/* 57394 */ {(12<<2)|2,{85,97,0}}, +/* 57395 */ {(12<<2)|2,{85,97,0}}, +/* 57396 */ {(12<<2)|2,{85,97,0}}, +/* 57397 */ {(12<<2)|2,{85,97,0}}, +/* 57398 */ {(12<<2)|2,{85,97,0}}, +/* 57399 */ {(12<<2)|2,{85,97,0}}, +/* 57400 */ {(12<<2)|2,{85,97,0}}, +/* 57401 */ {(12<<2)|2,{85,97,0}}, +/* 57402 */ {(12<<2)|2,{85,97,0}}, +/* 57403 */ {(12<<2)|2,{85,97,0}}, +/* 57404 */ {(12<<2)|2,{85,97,0}}, +/* 57405 */ {(12<<2)|2,{85,97,0}}, +/* 57406 */ {(12<<2)|2,{85,97,0}}, +/* 57407 */ {(12<<2)|2,{85,97,0}}, +/* 57408 */ {(12<<2)|2,{85,99,0}}, +/* 57409 */ {(12<<2)|2,{85,99,0}}, +/* 57410 */ {(12<<2)|2,{85,99,0}}, +/* 57411 */ {(12<<2)|2,{85,99,0}}, +/* 57412 */ {(12<<2)|2,{85,99,0}}, +/* 57413 */ {(12<<2)|2,{85,99,0}}, +/* 57414 */ {(12<<2)|2,{85,99,0}}, +/* 57415 */ {(12<<2)|2,{85,99,0}}, +/* 57416 */ {(12<<2)|2,{85,99,0}}, +/* 57417 */ {(12<<2)|2,{85,99,0}}, +/* 57418 */ {(12<<2)|2,{85,99,0}}, +/* 57419 */ {(12<<2)|2,{85,99,0}}, +/* 57420 */ {(12<<2)|2,{85,99,0}}, +/* 57421 */ {(12<<2)|2,{85,99,0}}, +/* 57422 */ {(12<<2)|2,{85,99,0}}, +/* 57423 */ {(12<<2)|2,{85,99,0}}, +/* 57424 */ {(12<<2)|2,{85,101,0}}, +/* 57425 */ {(12<<2)|2,{85,101,0}}, +/* 57426 */ {(12<<2)|2,{85,101,0}}, +/* 57427 */ {(12<<2)|2,{85,101,0}}, +/* 57428 */ {(12<<2)|2,{85,101,0}}, +/* 57429 */ {(12<<2)|2,{85,101,0}}, +/* 57430 */ {(12<<2)|2,{85,101,0}}, +/* 57431 */ {(12<<2)|2,{85,101,0}}, +/* 57432 */ {(12<<2)|2,{85,101,0}}, +/* 57433 */ {(12<<2)|2,{85,101,0}}, +/* 57434 */ {(12<<2)|2,{85,101,0}}, +/* 57435 */ {(12<<2)|2,{85,101,0}}, +/* 57436 */ {(12<<2)|2,{85,101,0}}, +/* 57437 */ {(12<<2)|2,{85,101,0}}, +/* 57438 */ {(12<<2)|2,{85,101,0}}, +/* 57439 */ {(12<<2)|2,{85,101,0}}, +/* 57440 */ {(12<<2)|2,{85,105,0}}, +/* 57441 */ {(12<<2)|2,{85,105,0}}, +/* 57442 */ {(12<<2)|2,{85,105,0}}, +/* 57443 */ {(12<<2)|2,{85,105,0}}, +/* 57444 */ {(12<<2)|2,{85,105,0}}, +/* 57445 */ {(12<<2)|2,{85,105,0}}, +/* 57446 */ {(12<<2)|2,{85,105,0}}, +/* 57447 */ {(12<<2)|2,{85,105,0}}, +/* 57448 */ {(12<<2)|2,{85,105,0}}, +/* 57449 */ {(12<<2)|2,{85,105,0}}, +/* 57450 */ {(12<<2)|2,{85,105,0}}, +/* 57451 */ {(12<<2)|2,{85,105,0}}, +/* 57452 */ {(12<<2)|2,{85,105,0}}, +/* 57453 */ {(12<<2)|2,{85,105,0}}, +/* 57454 */ {(12<<2)|2,{85,105,0}}, +/* 57455 */ {(12<<2)|2,{85,105,0}}, +/* 57456 */ {(12<<2)|2,{85,111,0}}, +/* 57457 */ {(12<<2)|2,{85,111,0}}, +/* 57458 */ {(12<<2)|2,{85,111,0}}, +/* 57459 */ {(12<<2)|2,{85,111,0}}, +/* 57460 */ {(12<<2)|2,{85,111,0}}, +/* 57461 */ {(12<<2)|2,{85,111,0}}, +/* 57462 */ {(12<<2)|2,{85,111,0}}, +/* 57463 */ {(12<<2)|2,{85,111,0}}, +/* 57464 */ {(12<<2)|2,{85,111,0}}, +/* 57465 */ {(12<<2)|2,{85,111,0}}, +/* 57466 */ {(12<<2)|2,{85,111,0}}, +/* 57467 */ {(12<<2)|2,{85,111,0}}, +/* 57468 */ {(12<<2)|2,{85,111,0}}, +/* 57469 */ {(12<<2)|2,{85,111,0}}, +/* 57470 */ {(12<<2)|2,{85,111,0}}, +/* 57471 */ {(12<<2)|2,{85,111,0}}, +/* 57472 */ {(12<<2)|2,{85,115,0}}, +/* 57473 */ {(12<<2)|2,{85,115,0}}, +/* 57474 */ {(12<<2)|2,{85,115,0}}, +/* 57475 */ {(12<<2)|2,{85,115,0}}, +/* 57476 */ {(12<<2)|2,{85,115,0}}, +/* 57477 */ {(12<<2)|2,{85,115,0}}, +/* 57478 */ {(12<<2)|2,{85,115,0}}, +/* 57479 */ {(12<<2)|2,{85,115,0}}, +/* 57480 */ {(12<<2)|2,{85,115,0}}, +/* 57481 */ {(12<<2)|2,{85,115,0}}, +/* 57482 */ {(12<<2)|2,{85,115,0}}, +/* 57483 */ {(12<<2)|2,{85,115,0}}, +/* 57484 */ {(12<<2)|2,{85,115,0}}, +/* 57485 */ {(12<<2)|2,{85,115,0}}, +/* 57486 */ {(12<<2)|2,{85,115,0}}, +/* 57487 */ {(12<<2)|2,{85,115,0}}, +/* 57488 */ {(12<<2)|2,{85,116,0}}, +/* 57489 */ {(12<<2)|2,{85,116,0}}, +/* 57490 */ {(12<<2)|2,{85,116,0}}, +/* 57491 */ {(12<<2)|2,{85,116,0}}, +/* 57492 */ {(12<<2)|2,{85,116,0}}, +/* 57493 */ {(12<<2)|2,{85,116,0}}, +/* 57494 */ {(12<<2)|2,{85,116,0}}, +/* 57495 */ {(12<<2)|2,{85,116,0}}, +/* 57496 */ {(12<<2)|2,{85,116,0}}, +/* 57497 */ {(12<<2)|2,{85,116,0}}, +/* 57498 */ {(12<<2)|2,{85,116,0}}, +/* 57499 */ {(12<<2)|2,{85,116,0}}, +/* 57500 */ {(12<<2)|2,{85,116,0}}, +/* 57501 */ {(12<<2)|2,{85,116,0}}, +/* 57502 */ {(12<<2)|2,{85,116,0}}, +/* 57503 */ {(12<<2)|2,{85,116,0}}, +/* 57504 */ {(13<<2)|2,{85,32,0}}, +/* 57505 */ {(13<<2)|2,{85,32,0}}, +/* 57506 */ {(13<<2)|2,{85,32,0}}, +/* 57507 */ {(13<<2)|2,{85,32,0}}, +/* 57508 */ {(13<<2)|2,{85,32,0}}, +/* 57509 */ {(13<<2)|2,{85,32,0}}, +/* 57510 */ {(13<<2)|2,{85,32,0}}, +/* 57511 */ {(13<<2)|2,{85,32,0}}, +/* 57512 */ {(13<<2)|2,{85,37,0}}, +/* 57513 */ {(13<<2)|2,{85,37,0}}, +/* 57514 */ {(13<<2)|2,{85,37,0}}, +/* 57515 */ {(13<<2)|2,{85,37,0}}, +/* 57516 */ {(13<<2)|2,{85,37,0}}, +/* 57517 */ {(13<<2)|2,{85,37,0}}, +/* 57518 */ {(13<<2)|2,{85,37,0}}, +/* 57519 */ {(13<<2)|2,{85,37,0}}, +/* 57520 */ {(13<<2)|2,{85,45,0}}, +/* 57521 */ {(13<<2)|2,{85,45,0}}, +/* 57522 */ {(13<<2)|2,{85,45,0}}, +/* 57523 */ {(13<<2)|2,{85,45,0}}, +/* 57524 */ {(13<<2)|2,{85,45,0}}, +/* 57525 */ {(13<<2)|2,{85,45,0}}, +/* 57526 */ {(13<<2)|2,{85,45,0}}, +/* 57527 */ {(13<<2)|2,{85,45,0}}, +/* 57528 */ {(13<<2)|2,{85,46,0}}, +/* 57529 */ {(13<<2)|2,{85,46,0}}, +/* 57530 */ {(13<<2)|2,{85,46,0}}, +/* 57531 */ {(13<<2)|2,{85,46,0}}, +/* 57532 */ {(13<<2)|2,{85,46,0}}, +/* 57533 */ {(13<<2)|2,{85,46,0}}, +/* 57534 */ {(13<<2)|2,{85,46,0}}, +/* 57535 */ {(13<<2)|2,{85,46,0}}, +/* 57536 */ {(13<<2)|2,{85,47,0}}, +/* 57537 */ {(13<<2)|2,{85,47,0}}, +/* 57538 */ {(13<<2)|2,{85,47,0}}, +/* 57539 */ {(13<<2)|2,{85,47,0}}, +/* 57540 */ {(13<<2)|2,{85,47,0}}, +/* 57541 */ {(13<<2)|2,{85,47,0}}, +/* 57542 */ {(13<<2)|2,{85,47,0}}, +/* 57543 */ {(13<<2)|2,{85,47,0}}, +/* 57544 */ {(13<<2)|2,{85,51,0}}, +/* 57545 */ {(13<<2)|2,{85,51,0}}, +/* 57546 */ {(13<<2)|2,{85,51,0}}, +/* 57547 */ {(13<<2)|2,{85,51,0}}, +/* 57548 */ {(13<<2)|2,{85,51,0}}, +/* 57549 */ {(13<<2)|2,{85,51,0}}, +/* 57550 */ {(13<<2)|2,{85,51,0}}, +/* 57551 */ {(13<<2)|2,{85,51,0}}, +/* 57552 */ {(13<<2)|2,{85,52,0}}, +/* 57553 */ {(13<<2)|2,{85,52,0}}, +/* 57554 */ {(13<<2)|2,{85,52,0}}, +/* 57555 */ {(13<<2)|2,{85,52,0}}, +/* 57556 */ {(13<<2)|2,{85,52,0}}, +/* 57557 */ {(13<<2)|2,{85,52,0}}, +/* 57558 */ {(13<<2)|2,{85,52,0}}, +/* 57559 */ {(13<<2)|2,{85,52,0}}, +/* 57560 */ {(13<<2)|2,{85,53,0}}, +/* 57561 */ {(13<<2)|2,{85,53,0}}, +/* 57562 */ {(13<<2)|2,{85,53,0}}, +/* 57563 */ {(13<<2)|2,{85,53,0}}, +/* 57564 */ {(13<<2)|2,{85,53,0}}, +/* 57565 */ {(13<<2)|2,{85,53,0}}, +/* 57566 */ {(13<<2)|2,{85,53,0}}, +/* 57567 */ {(13<<2)|2,{85,53,0}}, +/* 57568 */ {(13<<2)|2,{85,54,0}}, +/* 57569 */ {(13<<2)|2,{85,54,0}}, +/* 57570 */ {(13<<2)|2,{85,54,0}}, +/* 57571 */ {(13<<2)|2,{85,54,0}}, +/* 57572 */ {(13<<2)|2,{85,54,0}}, +/* 57573 */ {(13<<2)|2,{85,54,0}}, +/* 57574 */ {(13<<2)|2,{85,54,0}}, +/* 57575 */ {(13<<2)|2,{85,54,0}}, +/* 57576 */ {(13<<2)|2,{85,55,0}}, +/* 57577 */ {(13<<2)|2,{85,55,0}}, +/* 57578 */ {(13<<2)|2,{85,55,0}}, +/* 57579 */ {(13<<2)|2,{85,55,0}}, +/* 57580 */ {(13<<2)|2,{85,55,0}}, +/* 57581 */ {(13<<2)|2,{85,55,0}}, +/* 57582 */ {(13<<2)|2,{85,55,0}}, +/* 57583 */ {(13<<2)|2,{85,55,0}}, +/* 57584 */ {(13<<2)|2,{85,56,0}}, +/* 57585 */ {(13<<2)|2,{85,56,0}}, +/* 57586 */ {(13<<2)|2,{85,56,0}}, +/* 57587 */ {(13<<2)|2,{85,56,0}}, +/* 57588 */ {(13<<2)|2,{85,56,0}}, +/* 57589 */ {(13<<2)|2,{85,56,0}}, +/* 57590 */ {(13<<2)|2,{85,56,0}}, +/* 57591 */ {(13<<2)|2,{85,56,0}}, +/* 57592 */ {(13<<2)|2,{85,57,0}}, +/* 57593 */ {(13<<2)|2,{85,57,0}}, +/* 57594 */ {(13<<2)|2,{85,57,0}}, +/* 57595 */ {(13<<2)|2,{85,57,0}}, +/* 57596 */ {(13<<2)|2,{85,57,0}}, +/* 57597 */ {(13<<2)|2,{85,57,0}}, +/* 57598 */ {(13<<2)|2,{85,57,0}}, +/* 57599 */ {(13<<2)|2,{85,57,0}}, +/* 57600 */ {(13<<2)|2,{85,61,0}}, +/* 57601 */ {(13<<2)|2,{85,61,0}}, +/* 57602 */ {(13<<2)|2,{85,61,0}}, +/* 57603 */ {(13<<2)|2,{85,61,0}}, +/* 57604 */ {(13<<2)|2,{85,61,0}}, +/* 57605 */ {(13<<2)|2,{85,61,0}}, +/* 57606 */ {(13<<2)|2,{85,61,0}}, +/* 57607 */ {(13<<2)|2,{85,61,0}}, +/* 57608 */ {(13<<2)|2,{85,65,0}}, +/* 57609 */ {(13<<2)|2,{85,65,0}}, +/* 57610 */ {(13<<2)|2,{85,65,0}}, +/* 57611 */ {(13<<2)|2,{85,65,0}}, +/* 57612 */ {(13<<2)|2,{85,65,0}}, +/* 57613 */ {(13<<2)|2,{85,65,0}}, +/* 57614 */ {(13<<2)|2,{85,65,0}}, +/* 57615 */ {(13<<2)|2,{85,65,0}}, +/* 57616 */ {(13<<2)|2,{85,95,0}}, +/* 57617 */ {(13<<2)|2,{85,95,0}}, +/* 57618 */ {(13<<2)|2,{85,95,0}}, +/* 57619 */ {(13<<2)|2,{85,95,0}}, +/* 57620 */ {(13<<2)|2,{85,95,0}}, +/* 57621 */ {(13<<2)|2,{85,95,0}}, +/* 57622 */ {(13<<2)|2,{85,95,0}}, +/* 57623 */ {(13<<2)|2,{85,95,0}}, +/* 57624 */ {(13<<2)|2,{85,98,0}}, +/* 57625 */ {(13<<2)|2,{85,98,0}}, +/* 57626 */ {(13<<2)|2,{85,98,0}}, +/* 57627 */ {(13<<2)|2,{85,98,0}}, +/* 57628 */ {(13<<2)|2,{85,98,0}}, +/* 57629 */ {(13<<2)|2,{85,98,0}}, +/* 57630 */ {(13<<2)|2,{85,98,0}}, +/* 57631 */ {(13<<2)|2,{85,98,0}}, +/* 57632 */ {(13<<2)|2,{85,100,0}}, +/* 57633 */ {(13<<2)|2,{85,100,0}}, +/* 57634 */ {(13<<2)|2,{85,100,0}}, +/* 57635 */ {(13<<2)|2,{85,100,0}}, +/* 57636 */ {(13<<2)|2,{85,100,0}}, +/* 57637 */ {(13<<2)|2,{85,100,0}}, +/* 57638 */ {(13<<2)|2,{85,100,0}}, +/* 57639 */ {(13<<2)|2,{85,100,0}}, +/* 57640 */ {(13<<2)|2,{85,102,0}}, +/* 57641 */ {(13<<2)|2,{85,102,0}}, +/* 57642 */ {(13<<2)|2,{85,102,0}}, +/* 57643 */ {(13<<2)|2,{85,102,0}}, +/* 57644 */ {(13<<2)|2,{85,102,0}}, +/* 57645 */ {(13<<2)|2,{85,102,0}}, +/* 57646 */ {(13<<2)|2,{85,102,0}}, +/* 57647 */ {(13<<2)|2,{85,102,0}}, +/* 57648 */ {(13<<2)|2,{85,103,0}}, +/* 57649 */ {(13<<2)|2,{85,103,0}}, +/* 57650 */ {(13<<2)|2,{85,103,0}}, +/* 57651 */ {(13<<2)|2,{85,103,0}}, +/* 57652 */ {(13<<2)|2,{85,103,0}}, +/* 57653 */ {(13<<2)|2,{85,103,0}}, +/* 57654 */ {(13<<2)|2,{85,103,0}}, +/* 57655 */ {(13<<2)|2,{85,103,0}}, +/* 57656 */ {(13<<2)|2,{85,104,0}}, +/* 57657 */ {(13<<2)|2,{85,104,0}}, +/* 57658 */ {(13<<2)|2,{85,104,0}}, +/* 57659 */ {(13<<2)|2,{85,104,0}}, +/* 57660 */ {(13<<2)|2,{85,104,0}}, +/* 57661 */ {(13<<2)|2,{85,104,0}}, +/* 57662 */ {(13<<2)|2,{85,104,0}}, +/* 57663 */ {(13<<2)|2,{85,104,0}}, +/* 57664 */ {(13<<2)|2,{85,108,0}}, +/* 57665 */ {(13<<2)|2,{85,108,0}}, +/* 57666 */ {(13<<2)|2,{85,108,0}}, +/* 57667 */ {(13<<2)|2,{85,108,0}}, +/* 57668 */ {(13<<2)|2,{85,108,0}}, +/* 57669 */ {(13<<2)|2,{85,108,0}}, +/* 57670 */ {(13<<2)|2,{85,108,0}}, +/* 57671 */ {(13<<2)|2,{85,108,0}}, +/* 57672 */ {(13<<2)|2,{85,109,0}}, +/* 57673 */ {(13<<2)|2,{85,109,0}}, +/* 57674 */ {(13<<2)|2,{85,109,0}}, +/* 57675 */ {(13<<2)|2,{85,109,0}}, +/* 57676 */ {(13<<2)|2,{85,109,0}}, +/* 57677 */ {(13<<2)|2,{85,109,0}}, +/* 57678 */ {(13<<2)|2,{85,109,0}}, +/* 57679 */ {(13<<2)|2,{85,109,0}}, +/* 57680 */ {(13<<2)|2,{85,110,0}}, +/* 57681 */ {(13<<2)|2,{85,110,0}}, +/* 57682 */ {(13<<2)|2,{85,110,0}}, +/* 57683 */ {(13<<2)|2,{85,110,0}}, +/* 57684 */ {(13<<2)|2,{85,110,0}}, +/* 57685 */ {(13<<2)|2,{85,110,0}}, +/* 57686 */ {(13<<2)|2,{85,110,0}}, +/* 57687 */ {(13<<2)|2,{85,110,0}}, +/* 57688 */ {(13<<2)|2,{85,112,0}}, +/* 57689 */ {(13<<2)|2,{85,112,0}}, +/* 57690 */ {(13<<2)|2,{85,112,0}}, +/* 57691 */ {(13<<2)|2,{85,112,0}}, +/* 57692 */ {(13<<2)|2,{85,112,0}}, +/* 57693 */ {(13<<2)|2,{85,112,0}}, +/* 57694 */ {(13<<2)|2,{85,112,0}}, +/* 57695 */ {(13<<2)|2,{85,112,0}}, +/* 57696 */ {(13<<2)|2,{85,114,0}}, +/* 57697 */ {(13<<2)|2,{85,114,0}}, +/* 57698 */ {(13<<2)|2,{85,114,0}}, +/* 57699 */ {(13<<2)|2,{85,114,0}}, +/* 57700 */ {(13<<2)|2,{85,114,0}}, +/* 57701 */ {(13<<2)|2,{85,114,0}}, +/* 57702 */ {(13<<2)|2,{85,114,0}}, +/* 57703 */ {(13<<2)|2,{85,114,0}}, +/* 57704 */ {(13<<2)|2,{85,117,0}}, +/* 57705 */ {(13<<2)|2,{85,117,0}}, +/* 57706 */ {(13<<2)|2,{85,117,0}}, +/* 57707 */ {(13<<2)|2,{85,117,0}}, +/* 57708 */ {(13<<2)|2,{85,117,0}}, +/* 57709 */ {(13<<2)|2,{85,117,0}}, +/* 57710 */ {(13<<2)|2,{85,117,0}}, +/* 57711 */ {(13<<2)|2,{85,117,0}}, +/* 57712 */ {(14<<2)|2,{85,58,0}}, +/* 57713 */ {(14<<2)|2,{85,58,0}}, +/* 57714 */ {(14<<2)|2,{85,58,0}}, +/* 57715 */ {(14<<2)|2,{85,58,0}}, +/* 57716 */ {(14<<2)|2,{85,66,0}}, +/* 57717 */ {(14<<2)|2,{85,66,0}}, +/* 57718 */ {(14<<2)|2,{85,66,0}}, +/* 57719 */ {(14<<2)|2,{85,66,0}}, +/* 57720 */ {(14<<2)|2,{85,67,0}}, +/* 57721 */ {(14<<2)|2,{85,67,0}}, +/* 57722 */ {(14<<2)|2,{85,67,0}}, +/* 57723 */ {(14<<2)|2,{85,67,0}}, +/* 57724 */ {(14<<2)|2,{85,68,0}}, +/* 57725 */ {(14<<2)|2,{85,68,0}}, +/* 57726 */ {(14<<2)|2,{85,68,0}}, +/* 57727 */ {(14<<2)|2,{85,68,0}}, +/* 57728 */ {(14<<2)|2,{85,69,0}}, +/* 57729 */ {(14<<2)|2,{85,69,0}}, +/* 57730 */ {(14<<2)|2,{85,69,0}}, +/* 57731 */ {(14<<2)|2,{85,69,0}}, +/* 57732 */ {(14<<2)|2,{85,70,0}}, +/* 57733 */ {(14<<2)|2,{85,70,0}}, +/* 57734 */ {(14<<2)|2,{85,70,0}}, +/* 57735 */ {(14<<2)|2,{85,70,0}}, +/* 57736 */ {(14<<2)|2,{85,71,0}}, +/* 57737 */ {(14<<2)|2,{85,71,0}}, +/* 57738 */ {(14<<2)|2,{85,71,0}}, +/* 57739 */ {(14<<2)|2,{85,71,0}}, +/* 57740 */ {(14<<2)|2,{85,72,0}}, +/* 57741 */ {(14<<2)|2,{85,72,0}}, +/* 57742 */ {(14<<2)|2,{85,72,0}}, +/* 57743 */ {(14<<2)|2,{85,72,0}}, +/* 57744 */ {(14<<2)|2,{85,73,0}}, +/* 57745 */ {(14<<2)|2,{85,73,0}}, +/* 57746 */ {(14<<2)|2,{85,73,0}}, +/* 57747 */ {(14<<2)|2,{85,73,0}}, +/* 57748 */ {(14<<2)|2,{85,74,0}}, +/* 57749 */ {(14<<2)|2,{85,74,0}}, +/* 57750 */ {(14<<2)|2,{85,74,0}}, +/* 57751 */ {(14<<2)|2,{85,74,0}}, +/* 57752 */ {(14<<2)|2,{85,75,0}}, +/* 57753 */ {(14<<2)|2,{85,75,0}}, +/* 57754 */ {(14<<2)|2,{85,75,0}}, +/* 57755 */ {(14<<2)|2,{85,75,0}}, +/* 57756 */ {(14<<2)|2,{85,76,0}}, +/* 57757 */ {(14<<2)|2,{85,76,0}}, +/* 57758 */ {(14<<2)|2,{85,76,0}}, +/* 57759 */ {(14<<2)|2,{85,76,0}}, +/* 57760 */ {(14<<2)|2,{85,77,0}}, +/* 57761 */ {(14<<2)|2,{85,77,0}}, +/* 57762 */ {(14<<2)|2,{85,77,0}}, +/* 57763 */ {(14<<2)|2,{85,77,0}}, +/* 57764 */ {(14<<2)|2,{85,78,0}}, +/* 57765 */ {(14<<2)|2,{85,78,0}}, +/* 57766 */ {(14<<2)|2,{85,78,0}}, +/* 57767 */ {(14<<2)|2,{85,78,0}}, +/* 57768 */ {(14<<2)|2,{85,79,0}}, +/* 57769 */ {(14<<2)|2,{85,79,0}}, +/* 57770 */ {(14<<2)|2,{85,79,0}}, +/* 57771 */ {(14<<2)|2,{85,79,0}}, +/* 57772 */ {(14<<2)|2,{85,80,0}}, +/* 57773 */ {(14<<2)|2,{85,80,0}}, +/* 57774 */ {(14<<2)|2,{85,80,0}}, +/* 57775 */ {(14<<2)|2,{85,80,0}}, +/* 57776 */ {(14<<2)|2,{85,81,0}}, +/* 57777 */ {(14<<2)|2,{85,81,0}}, +/* 57778 */ {(14<<2)|2,{85,81,0}}, +/* 57779 */ {(14<<2)|2,{85,81,0}}, +/* 57780 */ {(14<<2)|2,{85,82,0}}, +/* 57781 */ {(14<<2)|2,{85,82,0}}, +/* 57782 */ {(14<<2)|2,{85,82,0}}, +/* 57783 */ {(14<<2)|2,{85,82,0}}, +/* 57784 */ {(14<<2)|2,{85,83,0}}, +/* 57785 */ {(14<<2)|2,{85,83,0}}, +/* 57786 */ {(14<<2)|2,{85,83,0}}, +/* 57787 */ {(14<<2)|2,{85,83,0}}, +/* 57788 */ {(14<<2)|2,{85,84,0}}, +/* 57789 */ {(14<<2)|2,{85,84,0}}, +/* 57790 */ {(14<<2)|2,{85,84,0}}, +/* 57791 */ {(14<<2)|2,{85,84,0}}, +/* 57792 */ {(14<<2)|2,{85,85,0}}, +/* 57793 */ {(14<<2)|2,{85,85,0}}, +/* 57794 */ {(14<<2)|2,{85,85,0}}, +/* 57795 */ {(14<<2)|2,{85,85,0}}, +/* 57796 */ {(14<<2)|2,{85,86,0}}, +/* 57797 */ {(14<<2)|2,{85,86,0}}, +/* 57798 */ {(14<<2)|2,{85,86,0}}, +/* 57799 */ {(14<<2)|2,{85,86,0}}, +/* 57800 */ {(14<<2)|2,{85,87,0}}, +/* 57801 */ {(14<<2)|2,{85,87,0}}, +/* 57802 */ {(14<<2)|2,{85,87,0}}, +/* 57803 */ {(14<<2)|2,{85,87,0}}, +/* 57804 */ {(14<<2)|2,{85,89,0}}, +/* 57805 */ {(14<<2)|2,{85,89,0}}, +/* 57806 */ {(14<<2)|2,{85,89,0}}, +/* 57807 */ {(14<<2)|2,{85,89,0}}, +/* 57808 */ {(14<<2)|2,{85,106,0}}, +/* 57809 */ {(14<<2)|2,{85,106,0}}, +/* 57810 */ {(14<<2)|2,{85,106,0}}, +/* 57811 */ {(14<<2)|2,{85,106,0}}, +/* 57812 */ {(14<<2)|2,{85,107,0}}, +/* 57813 */ {(14<<2)|2,{85,107,0}}, +/* 57814 */ {(14<<2)|2,{85,107,0}}, +/* 57815 */ {(14<<2)|2,{85,107,0}}, +/* 57816 */ {(14<<2)|2,{85,113,0}}, +/* 57817 */ {(14<<2)|2,{85,113,0}}, +/* 57818 */ {(14<<2)|2,{85,113,0}}, +/* 57819 */ {(14<<2)|2,{85,113,0}}, +/* 57820 */ {(14<<2)|2,{85,118,0}}, +/* 57821 */ {(14<<2)|2,{85,118,0}}, +/* 57822 */ {(14<<2)|2,{85,118,0}}, +/* 57823 */ {(14<<2)|2,{85,118,0}}, +/* 57824 */ {(14<<2)|2,{85,119,0}}, +/* 57825 */ {(14<<2)|2,{85,119,0}}, +/* 57826 */ {(14<<2)|2,{85,119,0}}, +/* 57827 */ {(14<<2)|2,{85,119,0}}, +/* 57828 */ {(14<<2)|2,{85,120,0}}, +/* 57829 */ {(14<<2)|2,{85,120,0}}, +/* 57830 */ {(14<<2)|2,{85,120,0}}, +/* 57831 */ {(14<<2)|2,{85,120,0}}, +/* 57832 */ {(14<<2)|2,{85,121,0}}, +/* 57833 */ {(14<<2)|2,{85,121,0}}, +/* 57834 */ {(14<<2)|2,{85,121,0}}, +/* 57835 */ {(14<<2)|2,{85,121,0}}, +/* 57836 */ {(14<<2)|2,{85,122,0}}, +/* 57837 */ {(14<<2)|2,{85,122,0}}, +/* 57838 */ {(14<<2)|2,{85,122,0}}, +/* 57839 */ {(14<<2)|2,{85,122,0}}, +/* 57840 */ {(15<<2)|2,{85,38,0}}, +/* 57841 */ {(15<<2)|2,{85,38,0}}, +/* 57842 */ {(15<<2)|2,{85,42,0}}, +/* 57843 */ {(15<<2)|2,{85,42,0}}, +/* 57844 */ {(15<<2)|2,{85,44,0}}, +/* 57845 */ {(15<<2)|2,{85,44,0}}, +/* 57846 */ {(15<<2)|2,{85,59,0}}, +/* 57847 */ {(15<<2)|2,{85,59,0}}, +/* 57848 */ {(15<<2)|2,{85,88,0}}, +/* 57849 */ {(15<<2)|2,{85,88,0}}, +/* 57850 */ {(15<<2)|2,{85,90,0}}, +/* 57851 */ {(15<<2)|2,{85,90,0}}, +/* 57852 */ {(7<<2)|1,{85,0,0}}, +/* 57853 */ {(7<<2)|1,{85,0,0}}, +/* 57854 */ {(7<<2)|1,{85,0,0}}, +/* 57855 */ {(7<<2)|1,{85,0,0}}, +/* 57856 */ {(12<<2)|2,{86,48,0}}, +/* 57857 */ {(12<<2)|2,{86,48,0}}, +/* 57858 */ {(12<<2)|2,{86,48,0}}, +/* 57859 */ {(12<<2)|2,{86,48,0}}, +/* 57860 */ {(12<<2)|2,{86,48,0}}, +/* 57861 */ {(12<<2)|2,{86,48,0}}, +/* 57862 */ {(12<<2)|2,{86,48,0}}, +/* 57863 */ {(12<<2)|2,{86,48,0}}, +/* 57864 */ {(12<<2)|2,{86,48,0}}, +/* 57865 */ {(12<<2)|2,{86,48,0}}, +/* 57866 */ {(12<<2)|2,{86,48,0}}, +/* 57867 */ {(12<<2)|2,{86,48,0}}, +/* 57868 */ {(12<<2)|2,{86,48,0}}, +/* 57869 */ {(12<<2)|2,{86,48,0}}, +/* 57870 */ {(12<<2)|2,{86,48,0}}, +/* 57871 */ {(12<<2)|2,{86,48,0}}, +/* 57872 */ {(12<<2)|2,{86,49,0}}, +/* 57873 */ {(12<<2)|2,{86,49,0}}, +/* 57874 */ {(12<<2)|2,{86,49,0}}, +/* 57875 */ {(12<<2)|2,{86,49,0}}, +/* 57876 */ {(12<<2)|2,{86,49,0}}, +/* 57877 */ {(12<<2)|2,{86,49,0}}, +/* 57878 */ {(12<<2)|2,{86,49,0}}, +/* 57879 */ {(12<<2)|2,{86,49,0}}, +/* 57880 */ {(12<<2)|2,{86,49,0}}, +/* 57881 */ {(12<<2)|2,{86,49,0}}, +/* 57882 */ {(12<<2)|2,{86,49,0}}, +/* 57883 */ {(12<<2)|2,{86,49,0}}, +/* 57884 */ {(12<<2)|2,{86,49,0}}, +/* 57885 */ {(12<<2)|2,{86,49,0}}, +/* 57886 */ {(12<<2)|2,{86,49,0}}, +/* 57887 */ {(12<<2)|2,{86,49,0}}, +/* 57888 */ {(12<<2)|2,{86,50,0}}, +/* 57889 */ {(12<<2)|2,{86,50,0}}, +/* 57890 */ {(12<<2)|2,{86,50,0}}, +/* 57891 */ {(12<<2)|2,{86,50,0}}, +/* 57892 */ {(12<<2)|2,{86,50,0}}, +/* 57893 */ {(12<<2)|2,{86,50,0}}, +/* 57894 */ {(12<<2)|2,{86,50,0}}, +/* 57895 */ {(12<<2)|2,{86,50,0}}, +/* 57896 */ {(12<<2)|2,{86,50,0}}, +/* 57897 */ {(12<<2)|2,{86,50,0}}, +/* 57898 */ {(12<<2)|2,{86,50,0}}, +/* 57899 */ {(12<<2)|2,{86,50,0}}, +/* 57900 */ {(12<<2)|2,{86,50,0}}, +/* 57901 */ {(12<<2)|2,{86,50,0}}, +/* 57902 */ {(12<<2)|2,{86,50,0}}, +/* 57903 */ {(12<<2)|2,{86,50,0}}, +/* 57904 */ {(12<<2)|2,{86,97,0}}, +/* 57905 */ {(12<<2)|2,{86,97,0}}, +/* 57906 */ {(12<<2)|2,{86,97,0}}, +/* 57907 */ {(12<<2)|2,{86,97,0}}, +/* 57908 */ {(12<<2)|2,{86,97,0}}, +/* 57909 */ {(12<<2)|2,{86,97,0}}, +/* 57910 */ {(12<<2)|2,{86,97,0}}, +/* 57911 */ {(12<<2)|2,{86,97,0}}, +/* 57912 */ {(12<<2)|2,{86,97,0}}, +/* 57913 */ {(12<<2)|2,{86,97,0}}, +/* 57914 */ {(12<<2)|2,{86,97,0}}, +/* 57915 */ {(12<<2)|2,{86,97,0}}, +/* 57916 */ {(12<<2)|2,{86,97,0}}, +/* 57917 */ {(12<<2)|2,{86,97,0}}, +/* 57918 */ {(12<<2)|2,{86,97,0}}, +/* 57919 */ {(12<<2)|2,{86,97,0}}, +/* 57920 */ {(12<<2)|2,{86,99,0}}, +/* 57921 */ {(12<<2)|2,{86,99,0}}, +/* 57922 */ {(12<<2)|2,{86,99,0}}, +/* 57923 */ {(12<<2)|2,{86,99,0}}, +/* 57924 */ {(12<<2)|2,{86,99,0}}, +/* 57925 */ {(12<<2)|2,{86,99,0}}, +/* 57926 */ {(12<<2)|2,{86,99,0}}, +/* 57927 */ {(12<<2)|2,{86,99,0}}, +/* 57928 */ {(12<<2)|2,{86,99,0}}, +/* 57929 */ {(12<<2)|2,{86,99,0}}, +/* 57930 */ {(12<<2)|2,{86,99,0}}, +/* 57931 */ {(12<<2)|2,{86,99,0}}, +/* 57932 */ {(12<<2)|2,{86,99,0}}, +/* 57933 */ {(12<<2)|2,{86,99,0}}, +/* 57934 */ {(12<<2)|2,{86,99,0}}, +/* 57935 */ {(12<<2)|2,{86,99,0}}, +/* 57936 */ {(12<<2)|2,{86,101,0}}, +/* 57937 */ {(12<<2)|2,{86,101,0}}, +/* 57938 */ {(12<<2)|2,{86,101,0}}, +/* 57939 */ {(12<<2)|2,{86,101,0}}, +/* 57940 */ {(12<<2)|2,{86,101,0}}, +/* 57941 */ {(12<<2)|2,{86,101,0}}, +/* 57942 */ {(12<<2)|2,{86,101,0}}, +/* 57943 */ {(12<<2)|2,{86,101,0}}, +/* 57944 */ {(12<<2)|2,{86,101,0}}, +/* 57945 */ {(12<<2)|2,{86,101,0}}, +/* 57946 */ {(12<<2)|2,{86,101,0}}, +/* 57947 */ {(12<<2)|2,{86,101,0}}, +/* 57948 */ {(12<<2)|2,{86,101,0}}, +/* 57949 */ {(12<<2)|2,{86,101,0}}, +/* 57950 */ {(12<<2)|2,{86,101,0}}, +/* 57951 */ {(12<<2)|2,{86,101,0}}, +/* 57952 */ {(12<<2)|2,{86,105,0}}, +/* 57953 */ {(12<<2)|2,{86,105,0}}, +/* 57954 */ {(12<<2)|2,{86,105,0}}, +/* 57955 */ {(12<<2)|2,{86,105,0}}, +/* 57956 */ {(12<<2)|2,{86,105,0}}, +/* 57957 */ {(12<<2)|2,{86,105,0}}, +/* 57958 */ {(12<<2)|2,{86,105,0}}, +/* 57959 */ {(12<<2)|2,{86,105,0}}, +/* 57960 */ {(12<<2)|2,{86,105,0}}, +/* 57961 */ {(12<<2)|2,{86,105,0}}, +/* 57962 */ {(12<<2)|2,{86,105,0}}, +/* 57963 */ {(12<<2)|2,{86,105,0}}, +/* 57964 */ {(12<<2)|2,{86,105,0}}, +/* 57965 */ {(12<<2)|2,{86,105,0}}, +/* 57966 */ {(12<<2)|2,{86,105,0}}, +/* 57967 */ {(12<<2)|2,{86,105,0}}, +/* 57968 */ {(12<<2)|2,{86,111,0}}, +/* 57969 */ {(12<<2)|2,{86,111,0}}, +/* 57970 */ {(12<<2)|2,{86,111,0}}, +/* 57971 */ {(12<<2)|2,{86,111,0}}, +/* 57972 */ {(12<<2)|2,{86,111,0}}, +/* 57973 */ {(12<<2)|2,{86,111,0}}, +/* 57974 */ {(12<<2)|2,{86,111,0}}, +/* 57975 */ {(12<<2)|2,{86,111,0}}, +/* 57976 */ {(12<<2)|2,{86,111,0}}, +/* 57977 */ {(12<<2)|2,{86,111,0}}, +/* 57978 */ {(12<<2)|2,{86,111,0}}, +/* 57979 */ {(12<<2)|2,{86,111,0}}, +/* 57980 */ {(12<<2)|2,{86,111,0}}, +/* 57981 */ {(12<<2)|2,{86,111,0}}, +/* 57982 */ {(12<<2)|2,{86,111,0}}, +/* 57983 */ {(12<<2)|2,{86,111,0}}, +/* 57984 */ {(12<<2)|2,{86,115,0}}, +/* 57985 */ {(12<<2)|2,{86,115,0}}, +/* 57986 */ {(12<<2)|2,{86,115,0}}, +/* 57987 */ {(12<<2)|2,{86,115,0}}, +/* 57988 */ {(12<<2)|2,{86,115,0}}, +/* 57989 */ {(12<<2)|2,{86,115,0}}, +/* 57990 */ {(12<<2)|2,{86,115,0}}, +/* 57991 */ {(12<<2)|2,{86,115,0}}, +/* 57992 */ {(12<<2)|2,{86,115,0}}, +/* 57993 */ {(12<<2)|2,{86,115,0}}, +/* 57994 */ {(12<<2)|2,{86,115,0}}, +/* 57995 */ {(12<<2)|2,{86,115,0}}, +/* 57996 */ {(12<<2)|2,{86,115,0}}, +/* 57997 */ {(12<<2)|2,{86,115,0}}, +/* 57998 */ {(12<<2)|2,{86,115,0}}, +/* 57999 */ {(12<<2)|2,{86,115,0}}, +/* 58000 */ {(12<<2)|2,{86,116,0}}, +/* 58001 */ {(12<<2)|2,{86,116,0}}, +/* 58002 */ {(12<<2)|2,{86,116,0}}, +/* 58003 */ {(12<<2)|2,{86,116,0}}, +/* 58004 */ {(12<<2)|2,{86,116,0}}, +/* 58005 */ {(12<<2)|2,{86,116,0}}, +/* 58006 */ {(12<<2)|2,{86,116,0}}, +/* 58007 */ {(12<<2)|2,{86,116,0}}, +/* 58008 */ {(12<<2)|2,{86,116,0}}, +/* 58009 */ {(12<<2)|2,{86,116,0}}, +/* 58010 */ {(12<<2)|2,{86,116,0}}, +/* 58011 */ {(12<<2)|2,{86,116,0}}, +/* 58012 */ {(12<<2)|2,{86,116,0}}, +/* 58013 */ {(12<<2)|2,{86,116,0}}, +/* 58014 */ {(12<<2)|2,{86,116,0}}, +/* 58015 */ {(12<<2)|2,{86,116,0}}, +/* 58016 */ {(13<<2)|2,{86,32,0}}, +/* 58017 */ {(13<<2)|2,{86,32,0}}, +/* 58018 */ {(13<<2)|2,{86,32,0}}, +/* 58019 */ {(13<<2)|2,{86,32,0}}, +/* 58020 */ {(13<<2)|2,{86,32,0}}, +/* 58021 */ {(13<<2)|2,{86,32,0}}, +/* 58022 */ {(13<<2)|2,{86,32,0}}, +/* 58023 */ {(13<<2)|2,{86,32,0}}, +/* 58024 */ {(13<<2)|2,{86,37,0}}, +/* 58025 */ {(13<<2)|2,{86,37,0}}, +/* 58026 */ {(13<<2)|2,{86,37,0}}, +/* 58027 */ {(13<<2)|2,{86,37,0}}, +/* 58028 */ {(13<<2)|2,{86,37,0}}, +/* 58029 */ {(13<<2)|2,{86,37,0}}, +/* 58030 */ {(13<<2)|2,{86,37,0}}, +/* 58031 */ {(13<<2)|2,{86,37,0}}, +/* 58032 */ {(13<<2)|2,{86,45,0}}, +/* 58033 */ {(13<<2)|2,{86,45,0}}, +/* 58034 */ {(13<<2)|2,{86,45,0}}, +/* 58035 */ {(13<<2)|2,{86,45,0}}, +/* 58036 */ {(13<<2)|2,{86,45,0}}, +/* 58037 */ {(13<<2)|2,{86,45,0}}, +/* 58038 */ {(13<<2)|2,{86,45,0}}, +/* 58039 */ {(13<<2)|2,{86,45,0}}, +/* 58040 */ {(13<<2)|2,{86,46,0}}, +/* 58041 */ {(13<<2)|2,{86,46,0}}, +/* 58042 */ {(13<<2)|2,{86,46,0}}, +/* 58043 */ {(13<<2)|2,{86,46,0}}, +/* 58044 */ {(13<<2)|2,{86,46,0}}, +/* 58045 */ {(13<<2)|2,{86,46,0}}, +/* 58046 */ {(13<<2)|2,{86,46,0}}, +/* 58047 */ {(13<<2)|2,{86,46,0}}, +/* 58048 */ {(13<<2)|2,{86,47,0}}, +/* 58049 */ {(13<<2)|2,{86,47,0}}, +/* 58050 */ {(13<<2)|2,{86,47,0}}, +/* 58051 */ {(13<<2)|2,{86,47,0}}, +/* 58052 */ {(13<<2)|2,{86,47,0}}, +/* 58053 */ {(13<<2)|2,{86,47,0}}, +/* 58054 */ {(13<<2)|2,{86,47,0}}, +/* 58055 */ {(13<<2)|2,{86,47,0}}, +/* 58056 */ {(13<<2)|2,{86,51,0}}, +/* 58057 */ {(13<<2)|2,{86,51,0}}, +/* 58058 */ {(13<<2)|2,{86,51,0}}, +/* 58059 */ {(13<<2)|2,{86,51,0}}, +/* 58060 */ {(13<<2)|2,{86,51,0}}, +/* 58061 */ {(13<<2)|2,{86,51,0}}, +/* 58062 */ {(13<<2)|2,{86,51,0}}, +/* 58063 */ {(13<<2)|2,{86,51,0}}, +/* 58064 */ {(13<<2)|2,{86,52,0}}, +/* 58065 */ {(13<<2)|2,{86,52,0}}, +/* 58066 */ {(13<<2)|2,{86,52,0}}, +/* 58067 */ {(13<<2)|2,{86,52,0}}, +/* 58068 */ {(13<<2)|2,{86,52,0}}, +/* 58069 */ {(13<<2)|2,{86,52,0}}, +/* 58070 */ {(13<<2)|2,{86,52,0}}, +/* 58071 */ {(13<<2)|2,{86,52,0}}, +/* 58072 */ {(13<<2)|2,{86,53,0}}, +/* 58073 */ {(13<<2)|2,{86,53,0}}, +/* 58074 */ {(13<<2)|2,{86,53,0}}, +/* 58075 */ {(13<<2)|2,{86,53,0}}, +/* 58076 */ {(13<<2)|2,{86,53,0}}, +/* 58077 */ {(13<<2)|2,{86,53,0}}, +/* 58078 */ {(13<<2)|2,{86,53,0}}, +/* 58079 */ {(13<<2)|2,{86,53,0}}, +/* 58080 */ {(13<<2)|2,{86,54,0}}, +/* 58081 */ {(13<<2)|2,{86,54,0}}, +/* 58082 */ {(13<<2)|2,{86,54,0}}, +/* 58083 */ {(13<<2)|2,{86,54,0}}, +/* 58084 */ {(13<<2)|2,{86,54,0}}, +/* 58085 */ {(13<<2)|2,{86,54,0}}, +/* 58086 */ {(13<<2)|2,{86,54,0}}, +/* 58087 */ {(13<<2)|2,{86,54,0}}, +/* 58088 */ {(13<<2)|2,{86,55,0}}, +/* 58089 */ {(13<<2)|2,{86,55,0}}, +/* 58090 */ {(13<<2)|2,{86,55,0}}, +/* 58091 */ {(13<<2)|2,{86,55,0}}, +/* 58092 */ {(13<<2)|2,{86,55,0}}, +/* 58093 */ {(13<<2)|2,{86,55,0}}, +/* 58094 */ {(13<<2)|2,{86,55,0}}, +/* 58095 */ {(13<<2)|2,{86,55,0}}, +/* 58096 */ {(13<<2)|2,{86,56,0}}, +/* 58097 */ {(13<<2)|2,{86,56,0}}, +/* 58098 */ {(13<<2)|2,{86,56,0}}, +/* 58099 */ {(13<<2)|2,{86,56,0}}, +/* 58100 */ {(13<<2)|2,{86,56,0}}, +/* 58101 */ {(13<<2)|2,{86,56,0}}, +/* 58102 */ {(13<<2)|2,{86,56,0}}, +/* 58103 */ {(13<<2)|2,{86,56,0}}, +/* 58104 */ {(13<<2)|2,{86,57,0}}, +/* 58105 */ {(13<<2)|2,{86,57,0}}, +/* 58106 */ {(13<<2)|2,{86,57,0}}, +/* 58107 */ {(13<<2)|2,{86,57,0}}, +/* 58108 */ {(13<<2)|2,{86,57,0}}, +/* 58109 */ {(13<<2)|2,{86,57,0}}, +/* 58110 */ {(13<<2)|2,{86,57,0}}, +/* 58111 */ {(13<<2)|2,{86,57,0}}, +/* 58112 */ {(13<<2)|2,{86,61,0}}, +/* 58113 */ {(13<<2)|2,{86,61,0}}, +/* 58114 */ {(13<<2)|2,{86,61,0}}, +/* 58115 */ {(13<<2)|2,{86,61,0}}, +/* 58116 */ {(13<<2)|2,{86,61,0}}, +/* 58117 */ {(13<<2)|2,{86,61,0}}, +/* 58118 */ {(13<<2)|2,{86,61,0}}, +/* 58119 */ {(13<<2)|2,{86,61,0}}, +/* 58120 */ {(13<<2)|2,{86,65,0}}, +/* 58121 */ {(13<<2)|2,{86,65,0}}, +/* 58122 */ {(13<<2)|2,{86,65,0}}, +/* 58123 */ {(13<<2)|2,{86,65,0}}, +/* 58124 */ {(13<<2)|2,{86,65,0}}, +/* 58125 */ {(13<<2)|2,{86,65,0}}, +/* 58126 */ {(13<<2)|2,{86,65,0}}, +/* 58127 */ {(13<<2)|2,{86,65,0}}, +/* 58128 */ {(13<<2)|2,{86,95,0}}, +/* 58129 */ {(13<<2)|2,{86,95,0}}, +/* 58130 */ {(13<<2)|2,{86,95,0}}, +/* 58131 */ {(13<<2)|2,{86,95,0}}, +/* 58132 */ {(13<<2)|2,{86,95,0}}, +/* 58133 */ {(13<<2)|2,{86,95,0}}, +/* 58134 */ {(13<<2)|2,{86,95,0}}, +/* 58135 */ {(13<<2)|2,{86,95,0}}, +/* 58136 */ {(13<<2)|2,{86,98,0}}, +/* 58137 */ {(13<<2)|2,{86,98,0}}, +/* 58138 */ {(13<<2)|2,{86,98,0}}, +/* 58139 */ {(13<<2)|2,{86,98,0}}, +/* 58140 */ {(13<<2)|2,{86,98,0}}, +/* 58141 */ {(13<<2)|2,{86,98,0}}, +/* 58142 */ {(13<<2)|2,{86,98,0}}, +/* 58143 */ {(13<<2)|2,{86,98,0}}, +/* 58144 */ {(13<<2)|2,{86,100,0}}, +/* 58145 */ {(13<<2)|2,{86,100,0}}, +/* 58146 */ {(13<<2)|2,{86,100,0}}, +/* 58147 */ {(13<<2)|2,{86,100,0}}, +/* 58148 */ {(13<<2)|2,{86,100,0}}, +/* 58149 */ {(13<<2)|2,{86,100,0}}, +/* 58150 */ {(13<<2)|2,{86,100,0}}, +/* 58151 */ {(13<<2)|2,{86,100,0}}, +/* 58152 */ {(13<<2)|2,{86,102,0}}, +/* 58153 */ {(13<<2)|2,{86,102,0}}, +/* 58154 */ {(13<<2)|2,{86,102,0}}, +/* 58155 */ {(13<<2)|2,{86,102,0}}, +/* 58156 */ {(13<<2)|2,{86,102,0}}, +/* 58157 */ {(13<<2)|2,{86,102,0}}, +/* 58158 */ {(13<<2)|2,{86,102,0}}, +/* 58159 */ {(13<<2)|2,{86,102,0}}, +/* 58160 */ {(13<<2)|2,{86,103,0}}, +/* 58161 */ {(13<<2)|2,{86,103,0}}, +/* 58162 */ {(13<<2)|2,{86,103,0}}, +/* 58163 */ {(13<<2)|2,{86,103,0}}, +/* 58164 */ {(13<<2)|2,{86,103,0}}, +/* 58165 */ {(13<<2)|2,{86,103,0}}, +/* 58166 */ {(13<<2)|2,{86,103,0}}, +/* 58167 */ {(13<<2)|2,{86,103,0}}, +/* 58168 */ {(13<<2)|2,{86,104,0}}, +/* 58169 */ {(13<<2)|2,{86,104,0}}, +/* 58170 */ {(13<<2)|2,{86,104,0}}, +/* 58171 */ {(13<<2)|2,{86,104,0}}, +/* 58172 */ {(13<<2)|2,{86,104,0}}, +/* 58173 */ {(13<<2)|2,{86,104,0}}, +/* 58174 */ {(13<<2)|2,{86,104,0}}, +/* 58175 */ {(13<<2)|2,{86,104,0}}, +/* 58176 */ {(13<<2)|2,{86,108,0}}, +/* 58177 */ {(13<<2)|2,{86,108,0}}, +/* 58178 */ {(13<<2)|2,{86,108,0}}, +/* 58179 */ {(13<<2)|2,{86,108,0}}, +/* 58180 */ {(13<<2)|2,{86,108,0}}, +/* 58181 */ {(13<<2)|2,{86,108,0}}, +/* 58182 */ {(13<<2)|2,{86,108,0}}, +/* 58183 */ {(13<<2)|2,{86,108,0}}, +/* 58184 */ {(13<<2)|2,{86,109,0}}, +/* 58185 */ {(13<<2)|2,{86,109,0}}, +/* 58186 */ {(13<<2)|2,{86,109,0}}, +/* 58187 */ {(13<<2)|2,{86,109,0}}, +/* 58188 */ {(13<<2)|2,{86,109,0}}, +/* 58189 */ {(13<<2)|2,{86,109,0}}, +/* 58190 */ {(13<<2)|2,{86,109,0}}, +/* 58191 */ {(13<<2)|2,{86,109,0}}, +/* 58192 */ {(13<<2)|2,{86,110,0}}, +/* 58193 */ {(13<<2)|2,{86,110,0}}, +/* 58194 */ {(13<<2)|2,{86,110,0}}, +/* 58195 */ {(13<<2)|2,{86,110,0}}, +/* 58196 */ {(13<<2)|2,{86,110,0}}, +/* 58197 */ {(13<<2)|2,{86,110,0}}, +/* 58198 */ {(13<<2)|2,{86,110,0}}, +/* 58199 */ {(13<<2)|2,{86,110,0}}, +/* 58200 */ {(13<<2)|2,{86,112,0}}, +/* 58201 */ {(13<<2)|2,{86,112,0}}, +/* 58202 */ {(13<<2)|2,{86,112,0}}, +/* 58203 */ {(13<<2)|2,{86,112,0}}, +/* 58204 */ {(13<<2)|2,{86,112,0}}, +/* 58205 */ {(13<<2)|2,{86,112,0}}, +/* 58206 */ {(13<<2)|2,{86,112,0}}, +/* 58207 */ {(13<<2)|2,{86,112,0}}, +/* 58208 */ {(13<<2)|2,{86,114,0}}, +/* 58209 */ {(13<<2)|2,{86,114,0}}, +/* 58210 */ {(13<<2)|2,{86,114,0}}, +/* 58211 */ {(13<<2)|2,{86,114,0}}, +/* 58212 */ {(13<<2)|2,{86,114,0}}, +/* 58213 */ {(13<<2)|2,{86,114,0}}, +/* 58214 */ {(13<<2)|2,{86,114,0}}, +/* 58215 */ {(13<<2)|2,{86,114,0}}, +/* 58216 */ {(13<<2)|2,{86,117,0}}, +/* 58217 */ {(13<<2)|2,{86,117,0}}, +/* 58218 */ {(13<<2)|2,{86,117,0}}, +/* 58219 */ {(13<<2)|2,{86,117,0}}, +/* 58220 */ {(13<<2)|2,{86,117,0}}, +/* 58221 */ {(13<<2)|2,{86,117,0}}, +/* 58222 */ {(13<<2)|2,{86,117,0}}, +/* 58223 */ {(13<<2)|2,{86,117,0}}, +/* 58224 */ {(14<<2)|2,{86,58,0}}, +/* 58225 */ {(14<<2)|2,{86,58,0}}, +/* 58226 */ {(14<<2)|2,{86,58,0}}, +/* 58227 */ {(14<<2)|2,{86,58,0}}, +/* 58228 */ {(14<<2)|2,{86,66,0}}, +/* 58229 */ {(14<<2)|2,{86,66,0}}, +/* 58230 */ {(14<<2)|2,{86,66,0}}, +/* 58231 */ {(14<<2)|2,{86,66,0}}, +/* 58232 */ {(14<<2)|2,{86,67,0}}, +/* 58233 */ {(14<<2)|2,{86,67,0}}, +/* 58234 */ {(14<<2)|2,{86,67,0}}, +/* 58235 */ {(14<<2)|2,{86,67,0}}, +/* 58236 */ {(14<<2)|2,{86,68,0}}, +/* 58237 */ {(14<<2)|2,{86,68,0}}, +/* 58238 */ {(14<<2)|2,{86,68,0}}, +/* 58239 */ {(14<<2)|2,{86,68,0}}, +/* 58240 */ {(14<<2)|2,{86,69,0}}, +/* 58241 */ {(14<<2)|2,{86,69,0}}, +/* 58242 */ {(14<<2)|2,{86,69,0}}, +/* 58243 */ {(14<<2)|2,{86,69,0}}, +/* 58244 */ {(14<<2)|2,{86,70,0}}, +/* 58245 */ {(14<<2)|2,{86,70,0}}, +/* 58246 */ {(14<<2)|2,{86,70,0}}, +/* 58247 */ {(14<<2)|2,{86,70,0}}, +/* 58248 */ {(14<<2)|2,{86,71,0}}, +/* 58249 */ {(14<<2)|2,{86,71,0}}, +/* 58250 */ {(14<<2)|2,{86,71,0}}, +/* 58251 */ {(14<<2)|2,{86,71,0}}, +/* 58252 */ {(14<<2)|2,{86,72,0}}, +/* 58253 */ {(14<<2)|2,{86,72,0}}, +/* 58254 */ {(14<<2)|2,{86,72,0}}, +/* 58255 */ {(14<<2)|2,{86,72,0}}, +/* 58256 */ {(14<<2)|2,{86,73,0}}, +/* 58257 */ {(14<<2)|2,{86,73,0}}, +/* 58258 */ {(14<<2)|2,{86,73,0}}, +/* 58259 */ {(14<<2)|2,{86,73,0}}, +/* 58260 */ {(14<<2)|2,{86,74,0}}, +/* 58261 */ {(14<<2)|2,{86,74,0}}, +/* 58262 */ {(14<<2)|2,{86,74,0}}, +/* 58263 */ {(14<<2)|2,{86,74,0}}, +/* 58264 */ {(14<<2)|2,{86,75,0}}, +/* 58265 */ {(14<<2)|2,{86,75,0}}, +/* 58266 */ {(14<<2)|2,{86,75,0}}, +/* 58267 */ {(14<<2)|2,{86,75,0}}, +/* 58268 */ {(14<<2)|2,{86,76,0}}, +/* 58269 */ {(14<<2)|2,{86,76,0}}, +/* 58270 */ {(14<<2)|2,{86,76,0}}, +/* 58271 */ {(14<<2)|2,{86,76,0}}, +/* 58272 */ {(14<<2)|2,{86,77,0}}, +/* 58273 */ {(14<<2)|2,{86,77,0}}, +/* 58274 */ {(14<<2)|2,{86,77,0}}, +/* 58275 */ {(14<<2)|2,{86,77,0}}, +/* 58276 */ {(14<<2)|2,{86,78,0}}, +/* 58277 */ {(14<<2)|2,{86,78,0}}, +/* 58278 */ {(14<<2)|2,{86,78,0}}, +/* 58279 */ {(14<<2)|2,{86,78,0}}, +/* 58280 */ {(14<<2)|2,{86,79,0}}, +/* 58281 */ {(14<<2)|2,{86,79,0}}, +/* 58282 */ {(14<<2)|2,{86,79,0}}, +/* 58283 */ {(14<<2)|2,{86,79,0}}, +/* 58284 */ {(14<<2)|2,{86,80,0}}, +/* 58285 */ {(14<<2)|2,{86,80,0}}, +/* 58286 */ {(14<<2)|2,{86,80,0}}, +/* 58287 */ {(14<<2)|2,{86,80,0}}, +/* 58288 */ {(14<<2)|2,{86,81,0}}, +/* 58289 */ {(14<<2)|2,{86,81,0}}, +/* 58290 */ {(14<<2)|2,{86,81,0}}, +/* 58291 */ {(14<<2)|2,{86,81,0}}, +/* 58292 */ {(14<<2)|2,{86,82,0}}, +/* 58293 */ {(14<<2)|2,{86,82,0}}, +/* 58294 */ {(14<<2)|2,{86,82,0}}, +/* 58295 */ {(14<<2)|2,{86,82,0}}, +/* 58296 */ {(14<<2)|2,{86,83,0}}, +/* 58297 */ {(14<<2)|2,{86,83,0}}, +/* 58298 */ {(14<<2)|2,{86,83,0}}, +/* 58299 */ {(14<<2)|2,{86,83,0}}, +/* 58300 */ {(14<<2)|2,{86,84,0}}, +/* 58301 */ {(14<<2)|2,{86,84,0}}, +/* 58302 */ {(14<<2)|2,{86,84,0}}, +/* 58303 */ {(14<<2)|2,{86,84,0}}, +/* 58304 */ {(14<<2)|2,{86,85,0}}, +/* 58305 */ {(14<<2)|2,{86,85,0}}, +/* 58306 */ {(14<<2)|2,{86,85,0}}, +/* 58307 */ {(14<<2)|2,{86,85,0}}, +/* 58308 */ {(14<<2)|2,{86,86,0}}, +/* 58309 */ {(14<<2)|2,{86,86,0}}, +/* 58310 */ {(14<<2)|2,{86,86,0}}, +/* 58311 */ {(14<<2)|2,{86,86,0}}, +/* 58312 */ {(14<<2)|2,{86,87,0}}, +/* 58313 */ {(14<<2)|2,{86,87,0}}, +/* 58314 */ {(14<<2)|2,{86,87,0}}, +/* 58315 */ {(14<<2)|2,{86,87,0}}, +/* 58316 */ {(14<<2)|2,{86,89,0}}, +/* 58317 */ {(14<<2)|2,{86,89,0}}, +/* 58318 */ {(14<<2)|2,{86,89,0}}, +/* 58319 */ {(14<<2)|2,{86,89,0}}, +/* 58320 */ {(14<<2)|2,{86,106,0}}, +/* 58321 */ {(14<<2)|2,{86,106,0}}, +/* 58322 */ {(14<<2)|2,{86,106,0}}, +/* 58323 */ {(14<<2)|2,{86,106,0}}, +/* 58324 */ {(14<<2)|2,{86,107,0}}, +/* 58325 */ {(14<<2)|2,{86,107,0}}, +/* 58326 */ {(14<<2)|2,{86,107,0}}, +/* 58327 */ {(14<<2)|2,{86,107,0}}, +/* 58328 */ {(14<<2)|2,{86,113,0}}, +/* 58329 */ {(14<<2)|2,{86,113,0}}, +/* 58330 */ {(14<<2)|2,{86,113,0}}, +/* 58331 */ {(14<<2)|2,{86,113,0}}, +/* 58332 */ {(14<<2)|2,{86,118,0}}, +/* 58333 */ {(14<<2)|2,{86,118,0}}, +/* 58334 */ {(14<<2)|2,{86,118,0}}, +/* 58335 */ {(14<<2)|2,{86,118,0}}, +/* 58336 */ {(14<<2)|2,{86,119,0}}, +/* 58337 */ {(14<<2)|2,{86,119,0}}, +/* 58338 */ {(14<<2)|2,{86,119,0}}, +/* 58339 */ {(14<<2)|2,{86,119,0}}, +/* 58340 */ {(14<<2)|2,{86,120,0}}, +/* 58341 */ {(14<<2)|2,{86,120,0}}, +/* 58342 */ {(14<<2)|2,{86,120,0}}, +/* 58343 */ {(14<<2)|2,{86,120,0}}, +/* 58344 */ {(14<<2)|2,{86,121,0}}, +/* 58345 */ {(14<<2)|2,{86,121,0}}, +/* 58346 */ {(14<<2)|2,{86,121,0}}, +/* 58347 */ {(14<<2)|2,{86,121,0}}, +/* 58348 */ {(14<<2)|2,{86,122,0}}, +/* 58349 */ {(14<<2)|2,{86,122,0}}, +/* 58350 */ {(14<<2)|2,{86,122,0}}, +/* 58351 */ {(14<<2)|2,{86,122,0}}, +/* 58352 */ {(15<<2)|2,{86,38,0}}, +/* 58353 */ {(15<<2)|2,{86,38,0}}, +/* 58354 */ {(15<<2)|2,{86,42,0}}, +/* 58355 */ {(15<<2)|2,{86,42,0}}, +/* 58356 */ {(15<<2)|2,{86,44,0}}, +/* 58357 */ {(15<<2)|2,{86,44,0}}, +/* 58358 */ {(15<<2)|2,{86,59,0}}, +/* 58359 */ {(15<<2)|2,{86,59,0}}, +/* 58360 */ {(15<<2)|2,{86,88,0}}, +/* 58361 */ {(15<<2)|2,{86,88,0}}, +/* 58362 */ {(15<<2)|2,{86,90,0}}, +/* 58363 */ {(15<<2)|2,{86,90,0}}, +/* 58364 */ {(7<<2)|1,{86,0,0}}, +/* 58365 */ {(7<<2)|1,{86,0,0}}, +/* 58366 */ {(7<<2)|1,{86,0,0}}, +/* 58367 */ {(7<<2)|1,{86,0,0}}, +/* 58368 */ {(12<<2)|2,{87,48,0}}, +/* 58369 */ {(12<<2)|2,{87,48,0}}, +/* 58370 */ {(12<<2)|2,{87,48,0}}, +/* 58371 */ {(12<<2)|2,{87,48,0}}, +/* 58372 */ {(12<<2)|2,{87,48,0}}, +/* 58373 */ {(12<<2)|2,{87,48,0}}, +/* 58374 */ {(12<<2)|2,{87,48,0}}, +/* 58375 */ {(12<<2)|2,{87,48,0}}, +/* 58376 */ {(12<<2)|2,{87,48,0}}, +/* 58377 */ {(12<<2)|2,{87,48,0}}, +/* 58378 */ {(12<<2)|2,{87,48,0}}, +/* 58379 */ {(12<<2)|2,{87,48,0}}, +/* 58380 */ {(12<<2)|2,{87,48,0}}, +/* 58381 */ {(12<<2)|2,{87,48,0}}, +/* 58382 */ {(12<<2)|2,{87,48,0}}, +/* 58383 */ {(12<<2)|2,{87,48,0}}, +/* 58384 */ {(12<<2)|2,{87,49,0}}, +/* 58385 */ {(12<<2)|2,{87,49,0}}, +/* 58386 */ {(12<<2)|2,{87,49,0}}, +/* 58387 */ {(12<<2)|2,{87,49,0}}, +/* 58388 */ {(12<<2)|2,{87,49,0}}, +/* 58389 */ {(12<<2)|2,{87,49,0}}, +/* 58390 */ {(12<<2)|2,{87,49,0}}, +/* 58391 */ {(12<<2)|2,{87,49,0}}, +/* 58392 */ {(12<<2)|2,{87,49,0}}, +/* 58393 */ {(12<<2)|2,{87,49,0}}, +/* 58394 */ {(12<<2)|2,{87,49,0}}, +/* 58395 */ {(12<<2)|2,{87,49,0}}, +/* 58396 */ {(12<<2)|2,{87,49,0}}, +/* 58397 */ {(12<<2)|2,{87,49,0}}, +/* 58398 */ {(12<<2)|2,{87,49,0}}, +/* 58399 */ {(12<<2)|2,{87,49,0}}, +/* 58400 */ {(12<<2)|2,{87,50,0}}, +/* 58401 */ {(12<<2)|2,{87,50,0}}, +/* 58402 */ {(12<<2)|2,{87,50,0}}, +/* 58403 */ {(12<<2)|2,{87,50,0}}, +/* 58404 */ {(12<<2)|2,{87,50,0}}, +/* 58405 */ {(12<<2)|2,{87,50,0}}, +/* 58406 */ {(12<<2)|2,{87,50,0}}, +/* 58407 */ {(12<<2)|2,{87,50,0}}, +/* 58408 */ {(12<<2)|2,{87,50,0}}, +/* 58409 */ {(12<<2)|2,{87,50,0}}, +/* 58410 */ {(12<<2)|2,{87,50,0}}, +/* 58411 */ {(12<<2)|2,{87,50,0}}, +/* 58412 */ {(12<<2)|2,{87,50,0}}, +/* 58413 */ {(12<<2)|2,{87,50,0}}, +/* 58414 */ {(12<<2)|2,{87,50,0}}, +/* 58415 */ {(12<<2)|2,{87,50,0}}, +/* 58416 */ {(12<<2)|2,{87,97,0}}, +/* 58417 */ {(12<<2)|2,{87,97,0}}, +/* 58418 */ {(12<<2)|2,{87,97,0}}, +/* 58419 */ {(12<<2)|2,{87,97,0}}, +/* 58420 */ {(12<<2)|2,{87,97,0}}, +/* 58421 */ {(12<<2)|2,{87,97,0}}, +/* 58422 */ {(12<<2)|2,{87,97,0}}, +/* 58423 */ {(12<<2)|2,{87,97,0}}, +/* 58424 */ {(12<<2)|2,{87,97,0}}, +/* 58425 */ {(12<<2)|2,{87,97,0}}, +/* 58426 */ {(12<<2)|2,{87,97,0}}, +/* 58427 */ {(12<<2)|2,{87,97,0}}, +/* 58428 */ {(12<<2)|2,{87,97,0}}, +/* 58429 */ {(12<<2)|2,{87,97,0}}, +/* 58430 */ {(12<<2)|2,{87,97,0}}, +/* 58431 */ {(12<<2)|2,{87,97,0}}, +/* 58432 */ {(12<<2)|2,{87,99,0}}, +/* 58433 */ {(12<<2)|2,{87,99,0}}, +/* 58434 */ {(12<<2)|2,{87,99,0}}, +/* 58435 */ {(12<<2)|2,{87,99,0}}, +/* 58436 */ {(12<<2)|2,{87,99,0}}, +/* 58437 */ {(12<<2)|2,{87,99,0}}, +/* 58438 */ {(12<<2)|2,{87,99,0}}, +/* 58439 */ {(12<<2)|2,{87,99,0}}, +/* 58440 */ {(12<<2)|2,{87,99,0}}, +/* 58441 */ {(12<<2)|2,{87,99,0}}, +/* 58442 */ {(12<<2)|2,{87,99,0}}, +/* 58443 */ {(12<<2)|2,{87,99,0}}, +/* 58444 */ {(12<<2)|2,{87,99,0}}, +/* 58445 */ {(12<<2)|2,{87,99,0}}, +/* 58446 */ {(12<<2)|2,{87,99,0}}, +/* 58447 */ {(12<<2)|2,{87,99,0}}, +/* 58448 */ {(12<<2)|2,{87,101,0}}, +/* 58449 */ {(12<<2)|2,{87,101,0}}, +/* 58450 */ {(12<<2)|2,{87,101,0}}, +/* 58451 */ {(12<<2)|2,{87,101,0}}, +/* 58452 */ {(12<<2)|2,{87,101,0}}, +/* 58453 */ {(12<<2)|2,{87,101,0}}, +/* 58454 */ {(12<<2)|2,{87,101,0}}, +/* 58455 */ {(12<<2)|2,{87,101,0}}, +/* 58456 */ {(12<<2)|2,{87,101,0}}, +/* 58457 */ {(12<<2)|2,{87,101,0}}, +/* 58458 */ {(12<<2)|2,{87,101,0}}, +/* 58459 */ {(12<<2)|2,{87,101,0}}, +/* 58460 */ {(12<<2)|2,{87,101,0}}, +/* 58461 */ {(12<<2)|2,{87,101,0}}, +/* 58462 */ {(12<<2)|2,{87,101,0}}, +/* 58463 */ {(12<<2)|2,{87,101,0}}, +/* 58464 */ {(12<<2)|2,{87,105,0}}, +/* 58465 */ {(12<<2)|2,{87,105,0}}, +/* 58466 */ {(12<<2)|2,{87,105,0}}, +/* 58467 */ {(12<<2)|2,{87,105,0}}, +/* 58468 */ {(12<<2)|2,{87,105,0}}, +/* 58469 */ {(12<<2)|2,{87,105,0}}, +/* 58470 */ {(12<<2)|2,{87,105,0}}, +/* 58471 */ {(12<<2)|2,{87,105,0}}, +/* 58472 */ {(12<<2)|2,{87,105,0}}, +/* 58473 */ {(12<<2)|2,{87,105,0}}, +/* 58474 */ {(12<<2)|2,{87,105,0}}, +/* 58475 */ {(12<<2)|2,{87,105,0}}, +/* 58476 */ {(12<<2)|2,{87,105,0}}, +/* 58477 */ {(12<<2)|2,{87,105,0}}, +/* 58478 */ {(12<<2)|2,{87,105,0}}, +/* 58479 */ {(12<<2)|2,{87,105,0}}, +/* 58480 */ {(12<<2)|2,{87,111,0}}, +/* 58481 */ {(12<<2)|2,{87,111,0}}, +/* 58482 */ {(12<<2)|2,{87,111,0}}, +/* 58483 */ {(12<<2)|2,{87,111,0}}, +/* 58484 */ {(12<<2)|2,{87,111,0}}, +/* 58485 */ {(12<<2)|2,{87,111,0}}, +/* 58486 */ {(12<<2)|2,{87,111,0}}, +/* 58487 */ {(12<<2)|2,{87,111,0}}, +/* 58488 */ {(12<<2)|2,{87,111,0}}, +/* 58489 */ {(12<<2)|2,{87,111,0}}, +/* 58490 */ {(12<<2)|2,{87,111,0}}, +/* 58491 */ {(12<<2)|2,{87,111,0}}, +/* 58492 */ {(12<<2)|2,{87,111,0}}, +/* 58493 */ {(12<<2)|2,{87,111,0}}, +/* 58494 */ {(12<<2)|2,{87,111,0}}, +/* 58495 */ {(12<<2)|2,{87,111,0}}, +/* 58496 */ {(12<<2)|2,{87,115,0}}, +/* 58497 */ {(12<<2)|2,{87,115,0}}, +/* 58498 */ {(12<<2)|2,{87,115,0}}, +/* 58499 */ {(12<<2)|2,{87,115,0}}, +/* 58500 */ {(12<<2)|2,{87,115,0}}, +/* 58501 */ {(12<<2)|2,{87,115,0}}, +/* 58502 */ {(12<<2)|2,{87,115,0}}, +/* 58503 */ {(12<<2)|2,{87,115,0}}, +/* 58504 */ {(12<<2)|2,{87,115,0}}, +/* 58505 */ {(12<<2)|2,{87,115,0}}, +/* 58506 */ {(12<<2)|2,{87,115,0}}, +/* 58507 */ {(12<<2)|2,{87,115,0}}, +/* 58508 */ {(12<<2)|2,{87,115,0}}, +/* 58509 */ {(12<<2)|2,{87,115,0}}, +/* 58510 */ {(12<<2)|2,{87,115,0}}, +/* 58511 */ {(12<<2)|2,{87,115,0}}, +/* 58512 */ {(12<<2)|2,{87,116,0}}, +/* 58513 */ {(12<<2)|2,{87,116,0}}, +/* 58514 */ {(12<<2)|2,{87,116,0}}, +/* 58515 */ {(12<<2)|2,{87,116,0}}, +/* 58516 */ {(12<<2)|2,{87,116,0}}, +/* 58517 */ {(12<<2)|2,{87,116,0}}, +/* 58518 */ {(12<<2)|2,{87,116,0}}, +/* 58519 */ {(12<<2)|2,{87,116,0}}, +/* 58520 */ {(12<<2)|2,{87,116,0}}, +/* 58521 */ {(12<<2)|2,{87,116,0}}, +/* 58522 */ {(12<<2)|2,{87,116,0}}, +/* 58523 */ {(12<<2)|2,{87,116,0}}, +/* 58524 */ {(12<<2)|2,{87,116,0}}, +/* 58525 */ {(12<<2)|2,{87,116,0}}, +/* 58526 */ {(12<<2)|2,{87,116,0}}, +/* 58527 */ {(12<<2)|2,{87,116,0}}, +/* 58528 */ {(13<<2)|2,{87,32,0}}, +/* 58529 */ {(13<<2)|2,{87,32,0}}, +/* 58530 */ {(13<<2)|2,{87,32,0}}, +/* 58531 */ {(13<<2)|2,{87,32,0}}, +/* 58532 */ {(13<<2)|2,{87,32,0}}, +/* 58533 */ {(13<<2)|2,{87,32,0}}, +/* 58534 */ {(13<<2)|2,{87,32,0}}, +/* 58535 */ {(13<<2)|2,{87,32,0}}, +/* 58536 */ {(13<<2)|2,{87,37,0}}, +/* 58537 */ {(13<<2)|2,{87,37,0}}, +/* 58538 */ {(13<<2)|2,{87,37,0}}, +/* 58539 */ {(13<<2)|2,{87,37,0}}, +/* 58540 */ {(13<<2)|2,{87,37,0}}, +/* 58541 */ {(13<<2)|2,{87,37,0}}, +/* 58542 */ {(13<<2)|2,{87,37,0}}, +/* 58543 */ {(13<<2)|2,{87,37,0}}, +/* 58544 */ {(13<<2)|2,{87,45,0}}, +/* 58545 */ {(13<<2)|2,{87,45,0}}, +/* 58546 */ {(13<<2)|2,{87,45,0}}, +/* 58547 */ {(13<<2)|2,{87,45,0}}, +/* 58548 */ {(13<<2)|2,{87,45,0}}, +/* 58549 */ {(13<<2)|2,{87,45,0}}, +/* 58550 */ {(13<<2)|2,{87,45,0}}, +/* 58551 */ {(13<<2)|2,{87,45,0}}, +/* 58552 */ {(13<<2)|2,{87,46,0}}, +/* 58553 */ {(13<<2)|2,{87,46,0}}, +/* 58554 */ {(13<<2)|2,{87,46,0}}, +/* 58555 */ {(13<<2)|2,{87,46,0}}, +/* 58556 */ {(13<<2)|2,{87,46,0}}, +/* 58557 */ {(13<<2)|2,{87,46,0}}, +/* 58558 */ {(13<<2)|2,{87,46,0}}, +/* 58559 */ {(13<<2)|2,{87,46,0}}, +/* 58560 */ {(13<<2)|2,{87,47,0}}, +/* 58561 */ {(13<<2)|2,{87,47,0}}, +/* 58562 */ {(13<<2)|2,{87,47,0}}, +/* 58563 */ {(13<<2)|2,{87,47,0}}, +/* 58564 */ {(13<<2)|2,{87,47,0}}, +/* 58565 */ {(13<<2)|2,{87,47,0}}, +/* 58566 */ {(13<<2)|2,{87,47,0}}, +/* 58567 */ {(13<<2)|2,{87,47,0}}, +/* 58568 */ {(13<<2)|2,{87,51,0}}, +/* 58569 */ {(13<<2)|2,{87,51,0}}, +/* 58570 */ {(13<<2)|2,{87,51,0}}, +/* 58571 */ {(13<<2)|2,{87,51,0}}, +/* 58572 */ {(13<<2)|2,{87,51,0}}, +/* 58573 */ {(13<<2)|2,{87,51,0}}, +/* 58574 */ {(13<<2)|2,{87,51,0}}, +/* 58575 */ {(13<<2)|2,{87,51,0}}, +/* 58576 */ {(13<<2)|2,{87,52,0}}, +/* 58577 */ {(13<<2)|2,{87,52,0}}, +/* 58578 */ {(13<<2)|2,{87,52,0}}, +/* 58579 */ {(13<<2)|2,{87,52,0}}, +/* 58580 */ {(13<<2)|2,{87,52,0}}, +/* 58581 */ {(13<<2)|2,{87,52,0}}, +/* 58582 */ {(13<<2)|2,{87,52,0}}, +/* 58583 */ {(13<<2)|2,{87,52,0}}, +/* 58584 */ {(13<<2)|2,{87,53,0}}, +/* 58585 */ {(13<<2)|2,{87,53,0}}, +/* 58586 */ {(13<<2)|2,{87,53,0}}, +/* 58587 */ {(13<<2)|2,{87,53,0}}, +/* 58588 */ {(13<<2)|2,{87,53,0}}, +/* 58589 */ {(13<<2)|2,{87,53,0}}, +/* 58590 */ {(13<<2)|2,{87,53,0}}, +/* 58591 */ {(13<<2)|2,{87,53,0}}, +/* 58592 */ {(13<<2)|2,{87,54,0}}, +/* 58593 */ {(13<<2)|2,{87,54,0}}, +/* 58594 */ {(13<<2)|2,{87,54,0}}, +/* 58595 */ {(13<<2)|2,{87,54,0}}, +/* 58596 */ {(13<<2)|2,{87,54,0}}, +/* 58597 */ {(13<<2)|2,{87,54,0}}, +/* 58598 */ {(13<<2)|2,{87,54,0}}, +/* 58599 */ {(13<<2)|2,{87,54,0}}, +/* 58600 */ {(13<<2)|2,{87,55,0}}, +/* 58601 */ {(13<<2)|2,{87,55,0}}, +/* 58602 */ {(13<<2)|2,{87,55,0}}, +/* 58603 */ {(13<<2)|2,{87,55,0}}, +/* 58604 */ {(13<<2)|2,{87,55,0}}, +/* 58605 */ {(13<<2)|2,{87,55,0}}, +/* 58606 */ {(13<<2)|2,{87,55,0}}, +/* 58607 */ {(13<<2)|2,{87,55,0}}, +/* 58608 */ {(13<<2)|2,{87,56,0}}, +/* 58609 */ {(13<<2)|2,{87,56,0}}, +/* 58610 */ {(13<<2)|2,{87,56,0}}, +/* 58611 */ {(13<<2)|2,{87,56,0}}, +/* 58612 */ {(13<<2)|2,{87,56,0}}, +/* 58613 */ {(13<<2)|2,{87,56,0}}, +/* 58614 */ {(13<<2)|2,{87,56,0}}, +/* 58615 */ {(13<<2)|2,{87,56,0}}, +/* 58616 */ {(13<<2)|2,{87,57,0}}, +/* 58617 */ {(13<<2)|2,{87,57,0}}, +/* 58618 */ {(13<<2)|2,{87,57,0}}, +/* 58619 */ {(13<<2)|2,{87,57,0}}, +/* 58620 */ {(13<<2)|2,{87,57,0}}, +/* 58621 */ {(13<<2)|2,{87,57,0}}, +/* 58622 */ {(13<<2)|2,{87,57,0}}, +/* 58623 */ {(13<<2)|2,{87,57,0}}, +/* 58624 */ {(13<<2)|2,{87,61,0}}, +/* 58625 */ {(13<<2)|2,{87,61,0}}, +/* 58626 */ {(13<<2)|2,{87,61,0}}, +/* 58627 */ {(13<<2)|2,{87,61,0}}, +/* 58628 */ {(13<<2)|2,{87,61,0}}, +/* 58629 */ {(13<<2)|2,{87,61,0}}, +/* 58630 */ {(13<<2)|2,{87,61,0}}, +/* 58631 */ {(13<<2)|2,{87,61,0}}, +/* 58632 */ {(13<<2)|2,{87,65,0}}, +/* 58633 */ {(13<<2)|2,{87,65,0}}, +/* 58634 */ {(13<<2)|2,{87,65,0}}, +/* 58635 */ {(13<<2)|2,{87,65,0}}, +/* 58636 */ {(13<<2)|2,{87,65,0}}, +/* 58637 */ {(13<<2)|2,{87,65,0}}, +/* 58638 */ {(13<<2)|2,{87,65,0}}, +/* 58639 */ {(13<<2)|2,{87,65,0}}, +/* 58640 */ {(13<<2)|2,{87,95,0}}, +/* 58641 */ {(13<<2)|2,{87,95,0}}, +/* 58642 */ {(13<<2)|2,{87,95,0}}, +/* 58643 */ {(13<<2)|2,{87,95,0}}, +/* 58644 */ {(13<<2)|2,{87,95,0}}, +/* 58645 */ {(13<<2)|2,{87,95,0}}, +/* 58646 */ {(13<<2)|2,{87,95,0}}, +/* 58647 */ {(13<<2)|2,{87,95,0}}, +/* 58648 */ {(13<<2)|2,{87,98,0}}, +/* 58649 */ {(13<<2)|2,{87,98,0}}, +/* 58650 */ {(13<<2)|2,{87,98,0}}, +/* 58651 */ {(13<<2)|2,{87,98,0}}, +/* 58652 */ {(13<<2)|2,{87,98,0}}, +/* 58653 */ {(13<<2)|2,{87,98,0}}, +/* 58654 */ {(13<<2)|2,{87,98,0}}, +/* 58655 */ {(13<<2)|2,{87,98,0}}, +/* 58656 */ {(13<<2)|2,{87,100,0}}, +/* 58657 */ {(13<<2)|2,{87,100,0}}, +/* 58658 */ {(13<<2)|2,{87,100,0}}, +/* 58659 */ {(13<<2)|2,{87,100,0}}, +/* 58660 */ {(13<<2)|2,{87,100,0}}, +/* 58661 */ {(13<<2)|2,{87,100,0}}, +/* 58662 */ {(13<<2)|2,{87,100,0}}, +/* 58663 */ {(13<<2)|2,{87,100,0}}, +/* 58664 */ {(13<<2)|2,{87,102,0}}, +/* 58665 */ {(13<<2)|2,{87,102,0}}, +/* 58666 */ {(13<<2)|2,{87,102,0}}, +/* 58667 */ {(13<<2)|2,{87,102,0}}, +/* 58668 */ {(13<<2)|2,{87,102,0}}, +/* 58669 */ {(13<<2)|2,{87,102,0}}, +/* 58670 */ {(13<<2)|2,{87,102,0}}, +/* 58671 */ {(13<<2)|2,{87,102,0}}, +/* 58672 */ {(13<<2)|2,{87,103,0}}, +/* 58673 */ {(13<<2)|2,{87,103,0}}, +/* 58674 */ {(13<<2)|2,{87,103,0}}, +/* 58675 */ {(13<<2)|2,{87,103,0}}, +/* 58676 */ {(13<<2)|2,{87,103,0}}, +/* 58677 */ {(13<<2)|2,{87,103,0}}, +/* 58678 */ {(13<<2)|2,{87,103,0}}, +/* 58679 */ {(13<<2)|2,{87,103,0}}, +/* 58680 */ {(13<<2)|2,{87,104,0}}, +/* 58681 */ {(13<<2)|2,{87,104,0}}, +/* 58682 */ {(13<<2)|2,{87,104,0}}, +/* 58683 */ {(13<<2)|2,{87,104,0}}, +/* 58684 */ {(13<<2)|2,{87,104,0}}, +/* 58685 */ {(13<<2)|2,{87,104,0}}, +/* 58686 */ {(13<<2)|2,{87,104,0}}, +/* 58687 */ {(13<<2)|2,{87,104,0}}, +/* 58688 */ {(13<<2)|2,{87,108,0}}, +/* 58689 */ {(13<<2)|2,{87,108,0}}, +/* 58690 */ {(13<<2)|2,{87,108,0}}, +/* 58691 */ {(13<<2)|2,{87,108,0}}, +/* 58692 */ {(13<<2)|2,{87,108,0}}, +/* 58693 */ {(13<<2)|2,{87,108,0}}, +/* 58694 */ {(13<<2)|2,{87,108,0}}, +/* 58695 */ {(13<<2)|2,{87,108,0}}, +/* 58696 */ {(13<<2)|2,{87,109,0}}, +/* 58697 */ {(13<<2)|2,{87,109,0}}, +/* 58698 */ {(13<<2)|2,{87,109,0}}, +/* 58699 */ {(13<<2)|2,{87,109,0}}, +/* 58700 */ {(13<<2)|2,{87,109,0}}, +/* 58701 */ {(13<<2)|2,{87,109,0}}, +/* 58702 */ {(13<<2)|2,{87,109,0}}, +/* 58703 */ {(13<<2)|2,{87,109,0}}, +/* 58704 */ {(13<<2)|2,{87,110,0}}, +/* 58705 */ {(13<<2)|2,{87,110,0}}, +/* 58706 */ {(13<<2)|2,{87,110,0}}, +/* 58707 */ {(13<<2)|2,{87,110,0}}, +/* 58708 */ {(13<<2)|2,{87,110,0}}, +/* 58709 */ {(13<<2)|2,{87,110,0}}, +/* 58710 */ {(13<<2)|2,{87,110,0}}, +/* 58711 */ {(13<<2)|2,{87,110,0}}, +/* 58712 */ {(13<<2)|2,{87,112,0}}, +/* 58713 */ {(13<<2)|2,{87,112,0}}, +/* 58714 */ {(13<<2)|2,{87,112,0}}, +/* 58715 */ {(13<<2)|2,{87,112,0}}, +/* 58716 */ {(13<<2)|2,{87,112,0}}, +/* 58717 */ {(13<<2)|2,{87,112,0}}, +/* 58718 */ {(13<<2)|2,{87,112,0}}, +/* 58719 */ {(13<<2)|2,{87,112,0}}, +/* 58720 */ {(13<<2)|2,{87,114,0}}, +/* 58721 */ {(13<<2)|2,{87,114,0}}, +/* 58722 */ {(13<<2)|2,{87,114,0}}, +/* 58723 */ {(13<<2)|2,{87,114,0}}, +/* 58724 */ {(13<<2)|2,{87,114,0}}, +/* 58725 */ {(13<<2)|2,{87,114,0}}, +/* 58726 */ {(13<<2)|2,{87,114,0}}, +/* 58727 */ {(13<<2)|2,{87,114,0}}, +/* 58728 */ {(13<<2)|2,{87,117,0}}, +/* 58729 */ {(13<<2)|2,{87,117,0}}, +/* 58730 */ {(13<<2)|2,{87,117,0}}, +/* 58731 */ {(13<<2)|2,{87,117,0}}, +/* 58732 */ {(13<<2)|2,{87,117,0}}, +/* 58733 */ {(13<<2)|2,{87,117,0}}, +/* 58734 */ {(13<<2)|2,{87,117,0}}, +/* 58735 */ {(13<<2)|2,{87,117,0}}, +/* 58736 */ {(14<<2)|2,{87,58,0}}, +/* 58737 */ {(14<<2)|2,{87,58,0}}, +/* 58738 */ {(14<<2)|2,{87,58,0}}, +/* 58739 */ {(14<<2)|2,{87,58,0}}, +/* 58740 */ {(14<<2)|2,{87,66,0}}, +/* 58741 */ {(14<<2)|2,{87,66,0}}, +/* 58742 */ {(14<<2)|2,{87,66,0}}, +/* 58743 */ {(14<<2)|2,{87,66,0}}, +/* 58744 */ {(14<<2)|2,{87,67,0}}, +/* 58745 */ {(14<<2)|2,{87,67,0}}, +/* 58746 */ {(14<<2)|2,{87,67,0}}, +/* 58747 */ {(14<<2)|2,{87,67,0}}, +/* 58748 */ {(14<<2)|2,{87,68,0}}, +/* 58749 */ {(14<<2)|2,{87,68,0}}, +/* 58750 */ {(14<<2)|2,{87,68,0}}, +/* 58751 */ {(14<<2)|2,{87,68,0}}, +/* 58752 */ {(14<<2)|2,{87,69,0}}, +/* 58753 */ {(14<<2)|2,{87,69,0}}, +/* 58754 */ {(14<<2)|2,{87,69,0}}, +/* 58755 */ {(14<<2)|2,{87,69,0}}, +/* 58756 */ {(14<<2)|2,{87,70,0}}, +/* 58757 */ {(14<<2)|2,{87,70,0}}, +/* 58758 */ {(14<<2)|2,{87,70,0}}, +/* 58759 */ {(14<<2)|2,{87,70,0}}, +/* 58760 */ {(14<<2)|2,{87,71,0}}, +/* 58761 */ {(14<<2)|2,{87,71,0}}, +/* 58762 */ {(14<<2)|2,{87,71,0}}, +/* 58763 */ {(14<<2)|2,{87,71,0}}, +/* 58764 */ {(14<<2)|2,{87,72,0}}, +/* 58765 */ {(14<<2)|2,{87,72,0}}, +/* 58766 */ {(14<<2)|2,{87,72,0}}, +/* 58767 */ {(14<<2)|2,{87,72,0}}, +/* 58768 */ {(14<<2)|2,{87,73,0}}, +/* 58769 */ {(14<<2)|2,{87,73,0}}, +/* 58770 */ {(14<<2)|2,{87,73,0}}, +/* 58771 */ {(14<<2)|2,{87,73,0}}, +/* 58772 */ {(14<<2)|2,{87,74,0}}, +/* 58773 */ {(14<<2)|2,{87,74,0}}, +/* 58774 */ {(14<<2)|2,{87,74,0}}, +/* 58775 */ {(14<<2)|2,{87,74,0}}, +/* 58776 */ {(14<<2)|2,{87,75,0}}, +/* 58777 */ {(14<<2)|2,{87,75,0}}, +/* 58778 */ {(14<<2)|2,{87,75,0}}, +/* 58779 */ {(14<<2)|2,{87,75,0}}, +/* 58780 */ {(14<<2)|2,{87,76,0}}, +/* 58781 */ {(14<<2)|2,{87,76,0}}, +/* 58782 */ {(14<<2)|2,{87,76,0}}, +/* 58783 */ {(14<<2)|2,{87,76,0}}, +/* 58784 */ {(14<<2)|2,{87,77,0}}, +/* 58785 */ {(14<<2)|2,{87,77,0}}, +/* 58786 */ {(14<<2)|2,{87,77,0}}, +/* 58787 */ {(14<<2)|2,{87,77,0}}, +/* 58788 */ {(14<<2)|2,{87,78,0}}, +/* 58789 */ {(14<<2)|2,{87,78,0}}, +/* 58790 */ {(14<<2)|2,{87,78,0}}, +/* 58791 */ {(14<<2)|2,{87,78,0}}, +/* 58792 */ {(14<<2)|2,{87,79,0}}, +/* 58793 */ {(14<<2)|2,{87,79,0}}, +/* 58794 */ {(14<<2)|2,{87,79,0}}, +/* 58795 */ {(14<<2)|2,{87,79,0}}, +/* 58796 */ {(14<<2)|2,{87,80,0}}, +/* 58797 */ {(14<<2)|2,{87,80,0}}, +/* 58798 */ {(14<<2)|2,{87,80,0}}, +/* 58799 */ {(14<<2)|2,{87,80,0}}, +/* 58800 */ {(14<<2)|2,{87,81,0}}, +/* 58801 */ {(14<<2)|2,{87,81,0}}, +/* 58802 */ {(14<<2)|2,{87,81,0}}, +/* 58803 */ {(14<<2)|2,{87,81,0}}, +/* 58804 */ {(14<<2)|2,{87,82,0}}, +/* 58805 */ {(14<<2)|2,{87,82,0}}, +/* 58806 */ {(14<<2)|2,{87,82,0}}, +/* 58807 */ {(14<<2)|2,{87,82,0}}, +/* 58808 */ {(14<<2)|2,{87,83,0}}, +/* 58809 */ {(14<<2)|2,{87,83,0}}, +/* 58810 */ {(14<<2)|2,{87,83,0}}, +/* 58811 */ {(14<<2)|2,{87,83,0}}, +/* 58812 */ {(14<<2)|2,{87,84,0}}, +/* 58813 */ {(14<<2)|2,{87,84,0}}, +/* 58814 */ {(14<<2)|2,{87,84,0}}, +/* 58815 */ {(14<<2)|2,{87,84,0}}, +/* 58816 */ {(14<<2)|2,{87,85,0}}, +/* 58817 */ {(14<<2)|2,{87,85,0}}, +/* 58818 */ {(14<<2)|2,{87,85,0}}, +/* 58819 */ {(14<<2)|2,{87,85,0}}, +/* 58820 */ {(14<<2)|2,{87,86,0}}, +/* 58821 */ {(14<<2)|2,{87,86,0}}, +/* 58822 */ {(14<<2)|2,{87,86,0}}, +/* 58823 */ {(14<<2)|2,{87,86,0}}, +/* 58824 */ {(14<<2)|2,{87,87,0}}, +/* 58825 */ {(14<<2)|2,{87,87,0}}, +/* 58826 */ {(14<<2)|2,{87,87,0}}, +/* 58827 */ {(14<<2)|2,{87,87,0}}, +/* 58828 */ {(14<<2)|2,{87,89,0}}, +/* 58829 */ {(14<<2)|2,{87,89,0}}, +/* 58830 */ {(14<<2)|2,{87,89,0}}, +/* 58831 */ {(14<<2)|2,{87,89,0}}, +/* 58832 */ {(14<<2)|2,{87,106,0}}, +/* 58833 */ {(14<<2)|2,{87,106,0}}, +/* 58834 */ {(14<<2)|2,{87,106,0}}, +/* 58835 */ {(14<<2)|2,{87,106,0}}, +/* 58836 */ {(14<<2)|2,{87,107,0}}, +/* 58837 */ {(14<<2)|2,{87,107,0}}, +/* 58838 */ {(14<<2)|2,{87,107,0}}, +/* 58839 */ {(14<<2)|2,{87,107,0}}, +/* 58840 */ {(14<<2)|2,{87,113,0}}, +/* 58841 */ {(14<<2)|2,{87,113,0}}, +/* 58842 */ {(14<<2)|2,{87,113,0}}, +/* 58843 */ {(14<<2)|2,{87,113,0}}, +/* 58844 */ {(14<<2)|2,{87,118,0}}, +/* 58845 */ {(14<<2)|2,{87,118,0}}, +/* 58846 */ {(14<<2)|2,{87,118,0}}, +/* 58847 */ {(14<<2)|2,{87,118,0}}, +/* 58848 */ {(14<<2)|2,{87,119,0}}, +/* 58849 */ {(14<<2)|2,{87,119,0}}, +/* 58850 */ {(14<<2)|2,{87,119,0}}, +/* 58851 */ {(14<<2)|2,{87,119,0}}, +/* 58852 */ {(14<<2)|2,{87,120,0}}, +/* 58853 */ {(14<<2)|2,{87,120,0}}, +/* 58854 */ {(14<<2)|2,{87,120,0}}, +/* 58855 */ {(14<<2)|2,{87,120,0}}, +/* 58856 */ {(14<<2)|2,{87,121,0}}, +/* 58857 */ {(14<<2)|2,{87,121,0}}, +/* 58858 */ {(14<<2)|2,{87,121,0}}, +/* 58859 */ {(14<<2)|2,{87,121,0}}, +/* 58860 */ {(14<<2)|2,{87,122,0}}, +/* 58861 */ {(14<<2)|2,{87,122,0}}, +/* 58862 */ {(14<<2)|2,{87,122,0}}, +/* 58863 */ {(14<<2)|2,{87,122,0}}, +/* 58864 */ {(15<<2)|2,{87,38,0}}, +/* 58865 */ {(15<<2)|2,{87,38,0}}, +/* 58866 */ {(15<<2)|2,{87,42,0}}, +/* 58867 */ {(15<<2)|2,{87,42,0}}, +/* 58868 */ {(15<<2)|2,{87,44,0}}, +/* 58869 */ {(15<<2)|2,{87,44,0}}, +/* 58870 */ {(15<<2)|2,{87,59,0}}, +/* 58871 */ {(15<<2)|2,{87,59,0}}, +/* 58872 */ {(15<<2)|2,{87,88,0}}, +/* 58873 */ {(15<<2)|2,{87,88,0}}, +/* 58874 */ {(15<<2)|2,{87,90,0}}, +/* 58875 */ {(15<<2)|2,{87,90,0}}, +/* 58876 */ {(7<<2)|1,{87,0,0}}, +/* 58877 */ {(7<<2)|1,{87,0,0}}, +/* 58878 */ {(7<<2)|1,{87,0,0}}, +/* 58879 */ {(7<<2)|1,{87,0,0}}, +/* 58880 */ {(12<<2)|2,{89,48,0}}, +/* 58881 */ {(12<<2)|2,{89,48,0}}, +/* 58882 */ {(12<<2)|2,{89,48,0}}, +/* 58883 */ {(12<<2)|2,{89,48,0}}, +/* 58884 */ {(12<<2)|2,{89,48,0}}, +/* 58885 */ {(12<<2)|2,{89,48,0}}, +/* 58886 */ {(12<<2)|2,{89,48,0}}, +/* 58887 */ {(12<<2)|2,{89,48,0}}, +/* 58888 */ {(12<<2)|2,{89,48,0}}, +/* 58889 */ {(12<<2)|2,{89,48,0}}, +/* 58890 */ {(12<<2)|2,{89,48,0}}, +/* 58891 */ {(12<<2)|2,{89,48,0}}, +/* 58892 */ {(12<<2)|2,{89,48,0}}, +/* 58893 */ {(12<<2)|2,{89,48,0}}, +/* 58894 */ {(12<<2)|2,{89,48,0}}, +/* 58895 */ {(12<<2)|2,{89,48,0}}, +/* 58896 */ {(12<<2)|2,{89,49,0}}, +/* 58897 */ {(12<<2)|2,{89,49,0}}, +/* 58898 */ {(12<<2)|2,{89,49,0}}, +/* 58899 */ {(12<<2)|2,{89,49,0}}, +/* 58900 */ {(12<<2)|2,{89,49,0}}, +/* 58901 */ {(12<<2)|2,{89,49,0}}, +/* 58902 */ {(12<<2)|2,{89,49,0}}, +/* 58903 */ {(12<<2)|2,{89,49,0}}, +/* 58904 */ {(12<<2)|2,{89,49,0}}, +/* 58905 */ {(12<<2)|2,{89,49,0}}, +/* 58906 */ {(12<<2)|2,{89,49,0}}, +/* 58907 */ {(12<<2)|2,{89,49,0}}, +/* 58908 */ {(12<<2)|2,{89,49,0}}, +/* 58909 */ {(12<<2)|2,{89,49,0}}, +/* 58910 */ {(12<<2)|2,{89,49,0}}, +/* 58911 */ {(12<<2)|2,{89,49,0}}, +/* 58912 */ {(12<<2)|2,{89,50,0}}, +/* 58913 */ {(12<<2)|2,{89,50,0}}, +/* 58914 */ {(12<<2)|2,{89,50,0}}, +/* 58915 */ {(12<<2)|2,{89,50,0}}, +/* 58916 */ {(12<<2)|2,{89,50,0}}, +/* 58917 */ {(12<<2)|2,{89,50,0}}, +/* 58918 */ {(12<<2)|2,{89,50,0}}, +/* 58919 */ {(12<<2)|2,{89,50,0}}, +/* 58920 */ {(12<<2)|2,{89,50,0}}, +/* 58921 */ {(12<<2)|2,{89,50,0}}, +/* 58922 */ {(12<<2)|2,{89,50,0}}, +/* 58923 */ {(12<<2)|2,{89,50,0}}, +/* 58924 */ {(12<<2)|2,{89,50,0}}, +/* 58925 */ {(12<<2)|2,{89,50,0}}, +/* 58926 */ {(12<<2)|2,{89,50,0}}, +/* 58927 */ {(12<<2)|2,{89,50,0}}, +/* 58928 */ {(12<<2)|2,{89,97,0}}, +/* 58929 */ {(12<<2)|2,{89,97,0}}, +/* 58930 */ {(12<<2)|2,{89,97,0}}, +/* 58931 */ {(12<<2)|2,{89,97,0}}, +/* 58932 */ {(12<<2)|2,{89,97,0}}, +/* 58933 */ {(12<<2)|2,{89,97,0}}, +/* 58934 */ {(12<<2)|2,{89,97,0}}, +/* 58935 */ {(12<<2)|2,{89,97,0}}, +/* 58936 */ {(12<<2)|2,{89,97,0}}, +/* 58937 */ {(12<<2)|2,{89,97,0}}, +/* 58938 */ {(12<<2)|2,{89,97,0}}, +/* 58939 */ {(12<<2)|2,{89,97,0}}, +/* 58940 */ {(12<<2)|2,{89,97,0}}, +/* 58941 */ {(12<<2)|2,{89,97,0}}, +/* 58942 */ {(12<<2)|2,{89,97,0}}, +/* 58943 */ {(12<<2)|2,{89,97,0}}, +/* 58944 */ {(12<<2)|2,{89,99,0}}, +/* 58945 */ {(12<<2)|2,{89,99,0}}, +/* 58946 */ {(12<<2)|2,{89,99,0}}, +/* 58947 */ {(12<<2)|2,{89,99,0}}, +/* 58948 */ {(12<<2)|2,{89,99,0}}, +/* 58949 */ {(12<<2)|2,{89,99,0}}, +/* 58950 */ {(12<<2)|2,{89,99,0}}, +/* 58951 */ {(12<<2)|2,{89,99,0}}, +/* 58952 */ {(12<<2)|2,{89,99,0}}, +/* 58953 */ {(12<<2)|2,{89,99,0}}, +/* 58954 */ {(12<<2)|2,{89,99,0}}, +/* 58955 */ {(12<<2)|2,{89,99,0}}, +/* 58956 */ {(12<<2)|2,{89,99,0}}, +/* 58957 */ {(12<<2)|2,{89,99,0}}, +/* 58958 */ {(12<<2)|2,{89,99,0}}, +/* 58959 */ {(12<<2)|2,{89,99,0}}, +/* 58960 */ {(12<<2)|2,{89,101,0}}, +/* 58961 */ {(12<<2)|2,{89,101,0}}, +/* 58962 */ {(12<<2)|2,{89,101,0}}, +/* 58963 */ {(12<<2)|2,{89,101,0}}, +/* 58964 */ {(12<<2)|2,{89,101,0}}, +/* 58965 */ {(12<<2)|2,{89,101,0}}, +/* 58966 */ {(12<<2)|2,{89,101,0}}, +/* 58967 */ {(12<<2)|2,{89,101,0}}, +/* 58968 */ {(12<<2)|2,{89,101,0}}, +/* 58969 */ {(12<<2)|2,{89,101,0}}, +/* 58970 */ {(12<<2)|2,{89,101,0}}, +/* 58971 */ {(12<<2)|2,{89,101,0}}, +/* 58972 */ {(12<<2)|2,{89,101,0}}, +/* 58973 */ {(12<<2)|2,{89,101,0}}, +/* 58974 */ {(12<<2)|2,{89,101,0}}, +/* 58975 */ {(12<<2)|2,{89,101,0}}, +/* 58976 */ {(12<<2)|2,{89,105,0}}, +/* 58977 */ {(12<<2)|2,{89,105,0}}, +/* 58978 */ {(12<<2)|2,{89,105,0}}, +/* 58979 */ {(12<<2)|2,{89,105,0}}, +/* 58980 */ {(12<<2)|2,{89,105,0}}, +/* 58981 */ {(12<<2)|2,{89,105,0}}, +/* 58982 */ {(12<<2)|2,{89,105,0}}, +/* 58983 */ {(12<<2)|2,{89,105,0}}, +/* 58984 */ {(12<<2)|2,{89,105,0}}, +/* 58985 */ {(12<<2)|2,{89,105,0}}, +/* 58986 */ {(12<<2)|2,{89,105,0}}, +/* 58987 */ {(12<<2)|2,{89,105,0}}, +/* 58988 */ {(12<<2)|2,{89,105,0}}, +/* 58989 */ {(12<<2)|2,{89,105,0}}, +/* 58990 */ {(12<<2)|2,{89,105,0}}, +/* 58991 */ {(12<<2)|2,{89,105,0}}, +/* 58992 */ {(12<<2)|2,{89,111,0}}, +/* 58993 */ {(12<<2)|2,{89,111,0}}, +/* 58994 */ {(12<<2)|2,{89,111,0}}, +/* 58995 */ {(12<<2)|2,{89,111,0}}, +/* 58996 */ {(12<<2)|2,{89,111,0}}, +/* 58997 */ {(12<<2)|2,{89,111,0}}, +/* 58998 */ {(12<<2)|2,{89,111,0}}, +/* 58999 */ {(12<<2)|2,{89,111,0}}, +/* 59000 */ {(12<<2)|2,{89,111,0}}, +/* 59001 */ {(12<<2)|2,{89,111,0}}, +/* 59002 */ {(12<<2)|2,{89,111,0}}, +/* 59003 */ {(12<<2)|2,{89,111,0}}, +/* 59004 */ {(12<<2)|2,{89,111,0}}, +/* 59005 */ {(12<<2)|2,{89,111,0}}, +/* 59006 */ {(12<<2)|2,{89,111,0}}, +/* 59007 */ {(12<<2)|2,{89,111,0}}, +/* 59008 */ {(12<<2)|2,{89,115,0}}, +/* 59009 */ {(12<<2)|2,{89,115,0}}, +/* 59010 */ {(12<<2)|2,{89,115,0}}, +/* 59011 */ {(12<<2)|2,{89,115,0}}, +/* 59012 */ {(12<<2)|2,{89,115,0}}, +/* 59013 */ {(12<<2)|2,{89,115,0}}, +/* 59014 */ {(12<<2)|2,{89,115,0}}, +/* 59015 */ {(12<<2)|2,{89,115,0}}, +/* 59016 */ {(12<<2)|2,{89,115,0}}, +/* 59017 */ {(12<<2)|2,{89,115,0}}, +/* 59018 */ {(12<<2)|2,{89,115,0}}, +/* 59019 */ {(12<<2)|2,{89,115,0}}, +/* 59020 */ {(12<<2)|2,{89,115,0}}, +/* 59021 */ {(12<<2)|2,{89,115,0}}, +/* 59022 */ {(12<<2)|2,{89,115,0}}, +/* 59023 */ {(12<<2)|2,{89,115,0}}, +/* 59024 */ {(12<<2)|2,{89,116,0}}, +/* 59025 */ {(12<<2)|2,{89,116,0}}, +/* 59026 */ {(12<<2)|2,{89,116,0}}, +/* 59027 */ {(12<<2)|2,{89,116,0}}, +/* 59028 */ {(12<<2)|2,{89,116,0}}, +/* 59029 */ {(12<<2)|2,{89,116,0}}, +/* 59030 */ {(12<<2)|2,{89,116,0}}, +/* 59031 */ {(12<<2)|2,{89,116,0}}, +/* 59032 */ {(12<<2)|2,{89,116,0}}, +/* 59033 */ {(12<<2)|2,{89,116,0}}, +/* 59034 */ {(12<<2)|2,{89,116,0}}, +/* 59035 */ {(12<<2)|2,{89,116,0}}, +/* 59036 */ {(12<<2)|2,{89,116,0}}, +/* 59037 */ {(12<<2)|2,{89,116,0}}, +/* 59038 */ {(12<<2)|2,{89,116,0}}, +/* 59039 */ {(12<<2)|2,{89,116,0}}, +/* 59040 */ {(13<<2)|2,{89,32,0}}, +/* 59041 */ {(13<<2)|2,{89,32,0}}, +/* 59042 */ {(13<<2)|2,{89,32,0}}, +/* 59043 */ {(13<<2)|2,{89,32,0}}, +/* 59044 */ {(13<<2)|2,{89,32,0}}, +/* 59045 */ {(13<<2)|2,{89,32,0}}, +/* 59046 */ {(13<<2)|2,{89,32,0}}, +/* 59047 */ {(13<<2)|2,{89,32,0}}, +/* 59048 */ {(13<<2)|2,{89,37,0}}, +/* 59049 */ {(13<<2)|2,{89,37,0}}, +/* 59050 */ {(13<<2)|2,{89,37,0}}, +/* 59051 */ {(13<<2)|2,{89,37,0}}, +/* 59052 */ {(13<<2)|2,{89,37,0}}, +/* 59053 */ {(13<<2)|2,{89,37,0}}, +/* 59054 */ {(13<<2)|2,{89,37,0}}, +/* 59055 */ {(13<<2)|2,{89,37,0}}, +/* 59056 */ {(13<<2)|2,{89,45,0}}, +/* 59057 */ {(13<<2)|2,{89,45,0}}, +/* 59058 */ {(13<<2)|2,{89,45,0}}, +/* 59059 */ {(13<<2)|2,{89,45,0}}, +/* 59060 */ {(13<<2)|2,{89,45,0}}, +/* 59061 */ {(13<<2)|2,{89,45,0}}, +/* 59062 */ {(13<<2)|2,{89,45,0}}, +/* 59063 */ {(13<<2)|2,{89,45,0}}, +/* 59064 */ {(13<<2)|2,{89,46,0}}, +/* 59065 */ {(13<<2)|2,{89,46,0}}, +/* 59066 */ {(13<<2)|2,{89,46,0}}, +/* 59067 */ {(13<<2)|2,{89,46,0}}, +/* 59068 */ {(13<<2)|2,{89,46,0}}, +/* 59069 */ {(13<<2)|2,{89,46,0}}, +/* 59070 */ {(13<<2)|2,{89,46,0}}, +/* 59071 */ {(13<<2)|2,{89,46,0}}, +/* 59072 */ {(13<<2)|2,{89,47,0}}, +/* 59073 */ {(13<<2)|2,{89,47,0}}, +/* 59074 */ {(13<<2)|2,{89,47,0}}, +/* 59075 */ {(13<<2)|2,{89,47,0}}, +/* 59076 */ {(13<<2)|2,{89,47,0}}, +/* 59077 */ {(13<<2)|2,{89,47,0}}, +/* 59078 */ {(13<<2)|2,{89,47,0}}, +/* 59079 */ {(13<<2)|2,{89,47,0}}, +/* 59080 */ {(13<<2)|2,{89,51,0}}, +/* 59081 */ {(13<<2)|2,{89,51,0}}, +/* 59082 */ {(13<<2)|2,{89,51,0}}, +/* 59083 */ {(13<<2)|2,{89,51,0}}, +/* 59084 */ {(13<<2)|2,{89,51,0}}, +/* 59085 */ {(13<<2)|2,{89,51,0}}, +/* 59086 */ {(13<<2)|2,{89,51,0}}, +/* 59087 */ {(13<<2)|2,{89,51,0}}, +/* 59088 */ {(13<<2)|2,{89,52,0}}, +/* 59089 */ {(13<<2)|2,{89,52,0}}, +/* 59090 */ {(13<<2)|2,{89,52,0}}, +/* 59091 */ {(13<<2)|2,{89,52,0}}, +/* 59092 */ {(13<<2)|2,{89,52,0}}, +/* 59093 */ {(13<<2)|2,{89,52,0}}, +/* 59094 */ {(13<<2)|2,{89,52,0}}, +/* 59095 */ {(13<<2)|2,{89,52,0}}, +/* 59096 */ {(13<<2)|2,{89,53,0}}, +/* 59097 */ {(13<<2)|2,{89,53,0}}, +/* 59098 */ {(13<<2)|2,{89,53,0}}, +/* 59099 */ {(13<<2)|2,{89,53,0}}, +/* 59100 */ {(13<<2)|2,{89,53,0}}, +/* 59101 */ {(13<<2)|2,{89,53,0}}, +/* 59102 */ {(13<<2)|2,{89,53,0}}, +/* 59103 */ {(13<<2)|2,{89,53,0}}, +/* 59104 */ {(13<<2)|2,{89,54,0}}, +/* 59105 */ {(13<<2)|2,{89,54,0}}, +/* 59106 */ {(13<<2)|2,{89,54,0}}, +/* 59107 */ {(13<<2)|2,{89,54,0}}, +/* 59108 */ {(13<<2)|2,{89,54,0}}, +/* 59109 */ {(13<<2)|2,{89,54,0}}, +/* 59110 */ {(13<<2)|2,{89,54,0}}, +/* 59111 */ {(13<<2)|2,{89,54,0}}, +/* 59112 */ {(13<<2)|2,{89,55,0}}, +/* 59113 */ {(13<<2)|2,{89,55,0}}, +/* 59114 */ {(13<<2)|2,{89,55,0}}, +/* 59115 */ {(13<<2)|2,{89,55,0}}, +/* 59116 */ {(13<<2)|2,{89,55,0}}, +/* 59117 */ {(13<<2)|2,{89,55,0}}, +/* 59118 */ {(13<<2)|2,{89,55,0}}, +/* 59119 */ {(13<<2)|2,{89,55,0}}, +/* 59120 */ {(13<<2)|2,{89,56,0}}, +/* 59121 */ {(13<<2)|2,{89,56,0}}, +/* 59122 */ {(13<<2)|2,{89,56,0}}, +/* 59123 */ {(13<<2)|2,{89,56,0}}, +/* 59124 */ {(13<<2)|2,{89,56,0}}, +/* 59125 */ {(13<<2)|2,{89,56,0}}, +/* 59126 */ {(13<<2)|2,{89,56,0}}, +/* 59127 */ {(13<<2)|2,{89,56,0}}, +/* 59128 */ {(13<<2)|2,{89,57,0}}, +/* 59129 */ {(13<<2)|2,{89,57,0}}, +/* 59130 */ {(13<<2)|2,{89,57,0}}, +/* 59131 */ {(13<<2)|2,{89,57,0}}, +/* 59132 */ {(13<<2)|2,{89,57,0}}, +/* 59133 */ {(13<<2)|2,{89,57,0}}, +/* 59134 */ {(13<<2)|2,{89,57,0}}, +/* 59135 */ {(13<<2)|2,{89,57,0}}, +/* 59136 */ {(13<<2)|2,{89,61,0}}, +/* 59137 */ {(13<<2)|2,{89,61,0}}, +/* 59138 */ {(13<<2)|2,{89,61,0}}, +/* 59139 */ {(13<<2)|2,{89,61,0}}, +/* 59140 */ {(13<<2)|2,{89,61,0}}, +/* 59141 */ {(13<<2)|2,{89,61,0}}, +/* 59142 */ {(13<<2)|2,{89,61,0}}, +/* 59143 */ {(13<<2)|2,{89,61,0}}, +/* 59144 */ {(13<<2)|2,{89,65,0}}, +/* 59145 */ {(13<<2)|2,{89,65,0}}, +/* 59146 */ {(13<<2)|2,{89,65,0}}, +/* 59147 */ {(13<<2)|2,{89,65,0}}, +/* 59148 */ {(13<<2)|2,{89,65,0}}, +/* 59149 */ {(13<<2)|2,{89,65,0}}, +/* 59150 */ {(13<<2)|2,{89,65,0}}, +/* 59151 */ {(13<<2)|2,{89,65,0}}, +/* 59152 */ {(13<<2)|2,{89,95,0}}, +/* 59153 */ {(13<<2)|2,{89,95,0}}, +/* 59154 */ {(13<<2)|2,{89,95,0}}, +/* 59155 */ {(13<<2)|2,{89,95,0}}, +/* 59156 */ {(13<<2)|2,{89,95,0}}, +/* 59157 */ {(13<<2)|2,{89,95,0}}, +/* 59158 */ {(13<<2)|2,{89,95,0}}, +/* 59159 */ {(13<<2)|2,{89,95,0}}, +/* 59160 */ {(13<<2)|2,{89,98,0}}, +/* 59161 */ {(13<<2)|2,{89,98,0}}, +/* 59162 */ {(13<<2)|2,{89,98,0}}, +/* 59163 */ {(13<<2)|2,{89,98,0}}, +/* 59164 */ {(13<<2)|2,{89,98,0}}, +/* 59165 */ {(13<<2)|2,{89,98,0}}, +/* 59166 */ {(13<<2)|2,{89,98,0}}, +/* 59167 */ {(13<<2)|2,{89,98,0}}, +/* 59168 */ {(13<<2)|2,{89,100,0}}, +/* 59169 */ {(13<<2)|2,{89,100,0}}, +/* 59170 */ {(13<<2)|2,{89,100,0}}, +/* 59171 */ {(13<<2)|2,{89,100,0}}, +/* 59172 */ {(13<<2)|2,{89,100,0}}, +/* 59173 */ {(13<<2)|2,{89,100,0}}, +/* 59174 */ {(13<<2)|2,{89,100,0}}, +/* 59175 */ {(13<<2)|2,{89,100,0}}, +/* 59176 */ {(13<<2)|2,{89,102,0}}, +/* 59177 */ {(13<<2)|2,{89,102,0}}, +/* 59178 */ {(13<<2)|2,{89,102,0}}, +/* 59179 */ {(13<<2)|2,{89,102,0}}, +/* 59180 */ {(13<<2)|2,{89,102,0}}, +/* 59181 */ {(13<<2)|2,{89,102,0}}, +/* 59182 */ {(13<<2)|2,{89,102,0}}, +/* 59183 */ {(13<<2)|2,{89,102,0}}, +/* 59184 */ {(13<<2)|2,{89,103,0}}, +/* 59185 */ {(13<<2)|2,{89,103,0}}, +/* 59186 */ {(13<<2)|2,{89,103,0}}, +/* 59187 */ {(13<<2)|2,{89,103,0}}, +/* 59188 */ {(13<<2)|2,{89,103,0}}, +/* 59189 */ {(13<<2)|2,{89,103,0}}, +/* 59190 */ {(13<<2)|2,{89,103,0}}, +/* 59191 */ {(13<<2)|2,{89,103,0}}, +/* 59192 */ {(13<<2)|2,{89,104,0}}, +/* 59193 */ {(13<<2)|2,{89,104,0}}, +/* 59194 */ {(13<<2)|2,{89,104,0}}, +/* 59195 */ {(13<<2)|2,{89,104,0}}, +/* 59196 */ {(13<<2)|2,{89,104,0}}, +/* 59197 */ {(13<<2)|2,{89,104,0}}, +/* 59198 */ {(13<<2)|2,{89,104,0}}, +/* 59199 */ {(13<<2)|2,{89,104,0}}, +/* 59200 */ {(13<<2)|2,{89,108,0}}, +/* 59201 */ {(13<<2)|2,{89,108,0}}, +/* 59202 */ {(13<<2)|2,{89,108,0}}, +/* 59203 */ {(13<<2)|2,{89,108,0}}, +/* 59204 */ {(13<<2)|2,{89,108,0}}, +/* 59205 */ {(13<<2)|2,{89,108,0}}, +/* 59206 */ {(13<<2)|2,{89,108,0}}, +/* 59207 */ {(13<<2)|2,{89,108,0}}, +/* 59208 */ {(13<<2)|2,{89,109,0}}, +/* 59209 */ {(13<<2)|2,{89,109,0}}, +/* 59210 */ {(13<<2)|2,{89,109,0}}, +/* 59211 */ {(13<<2)|2,{89,109,0}}, +/* 59212 */ {(13<<2)|2,{89,109,0}}, +/* 59213 */ {(13<<2)|2,{89,109,0}}, +/* 59214 */ {(13<<2)|2,{89,109,0}}, +/* 59215 */ {(13<<2)|2,{89,109,0}}, +/* 59216 */ {(13<<2)|2,{89,110,0}}, +/* 59217 */ {(13<<2)|2,{89,110,0}}, +/* 59218 */ {(13<<2)|2,{89,110,0}}, +/* 59219 */ {(13<<2)|2,{89,110,0}}, +/* 59220 */ {(13<<2)|2,{89,110,0}}, +/* 59221 */ {(13<<2)|2,{89,110,0}}, +/* 59222 */ {(13<<2)|2,{89,110,0}}, +/* 59223 */ {(13<<2)|2,{89,110,0}}, +/* 59224 */ {(13<<2)|2,{89,112,0}}, +/* 59225 */ {(13<<2)|2,{89,112,0}}, +/* 59226 */ {(13<<2)|2,{89,112,0}}, +/* 59227 */ {(13<<2)|2,{89,112,0}}, +/* 59228 */ {(13<<2)|2,{89,112,0}}, +/* 59229 */ {(13<<2)|2,{89,112,0}}, +/* 59230 */ {(13<<2)|2,{89,112,0}}, +/* 59231 */ {(13<<2)|2,{89,112,0}}, +/* 59232 */ {(13<<2)|2,{89,114,0}}, +/* 59233 */ {(13<<2)|2,{89,114,0}}, +/* 59234 */ {(13<<2)|2,{89,114,0}}, +/* 59235 */ {(13<<2)|2,{89,114,0}}, +/* 59236 */ {(13<<2)|2,{89,114,0}}, +/* 59237 */ {(13<<2)|2,{89,114,0}}, +/* 59238 */ {(13<<2)|2,{89,114,0}}, +/* 59239 */ {(13<<2)|2,{89,114,0}}, +/* 59240 */ {(13<<2)|2,{89,117,0}}, +/* 59241 */ {(13<<2)|2,{89,117,0}}, +/* 59242 */ {(13<<2)|2,{89,117,0}}, +/* 59243 */ {(13<<2)|2,{89,117,0}}, +/* 59244 */ {(13<<2)|2,{89,117,0}}, +/* 59245 */ {(13<<2)|2,{89,117,0}}, +/* 59246 */ {(13<<2)|2,{89,117,0}}, +/* 59247 */ {(13<<2)|2,{89,117,0}}, +/* 59248 */ {(14<<2)|2,{89,58,0}}, +/* 59249 */ {(14<<2)|2,{89,58,0}}, +/* 59250 */ {(14<<2)|2,{89,58,0}}, +/* 59251 */ {(14<<2)|2,{89,58,0}}, +/* 59252 */ {(14<<2)|2,{89,66,0}}, +/* 59253 */ {(14<<2)|2,{89,66,0}}, +/* 59254 */ {(14<<2)|2,{89,66,0}}, +/* 59255 */ {(14<<2)|2,{89,66,0}}, +/* 59256 */ {(14<<2)|2,{89,67,0}}, +/* 59257 */ {(14<<2)|2,{89,67,0}}, +/* 59258 */ {(14<<2)|2,{89,67,0}}, +/* 59259 */ {(14<<2)|2,{89,67,0}}, +/* 59260 */ {(14<<2)|2,{89,68,0}}, +/* 59261 */ {(14<<2)|2,{89,68,0}}, +/* 59262 */ {(14<<2)|2,{89,68,0}}, +/* 59263 */ {(14<<2)|2,{89,68,0}}, +/* 59264 */ {(14<<2)|2,{89,69,0}}, +/* 59265 */ {(14<<2)|2,{89,69,0}}, +/* 59266 */ {(14<<2)|2,{89,69,0}}, +/* 59267 */ {(14<<2)|2,{89,69,0}}, +/* 59268 */ {(14<<2)|2,{89,70,0}}, +/* 59269 */ {(14<<2)|2,{89,70,0}}, +/* 59270 */ {(14<<2)|2,{89,70,0}}, +/* 59271 */ {(14<<2)|2,{89,70,0}}, +/* 59272 */ {(14<<2)|2,{89,71,0}}, +/* 59273 */ {(14<<2)|2,{89,71,0}}, +/* 59274 */ {(14<<2)|2,{89,71,0}}, +/* 59275 */ {(14<<2)|2,{89,71,0}}, +/* 59276 */ {(14<<2)|2,{89,72,0}}, +/* 59277 */ {(14<<2)|2,{89,72,0}}, +/* 59278 */ {(14<<2)|2,{89,72,0}}, +/* 59279 */ {(14<<2)|2,{89,72,0}}, +/* 59280 */ {(14<<2)|2,{89,73,0}}, +/* 59281 */ {(14<<2)|2,{89,73,0}}, +/* 59282 */ {(14<<2)|2,{89,73,0}}, +/* 59283 */ {(14<<2)|2,{89,73,0}}, +/* 59284 */ {(14<<2)|2,{89,74,0}}, +/* 59285 */ {(14<<2)|2,{89,74,0}}, +/* 59286 */ {(14<<2)|2,{89,74,0}}, +/* 59287 */ {(14<<2)|2,{89,74,0}}, +/* 59288 */ {(14<<2)|2,{89,75,0}}, +/* 59289 */ {(14<<2)|2,{89,75,0}}, +/* 59290 */ {(14<<2)|2,{89,75,0}}, +/* 59291 */ {(14<<2)|2,{89,75,0}}, +/* 59292 */ {(14<<2)|2,{89,76,0}}, +/* 59293 */ {(14<<2)|2,{89,76,0}}, +/* 59294 */ {(14<<2)|2,{89,76,0}}, +/* 59295 */ {(14<<2)|2,{89,76,0}}, +/* 59296 */ {(14<<2)|2,{89,77,0}}, +/* 59297 */ {(14<<2)|2,{89,77,0}}, +/* 59298 */ {(14<<2)|2,{89,77,0}}, +/* 59299 */ {(14<<2)|2,{89,77,0}}, +/* 59300 */ {(14<<2)|2,{89,78,0}}, +/* 59301 */ {(14<<2)|2,{89,78,0}}, +/* 59302 */ {(14<<2)|2,{89,78,0}}, +/* 59303 */ {(14<<2)|2,{89,78,0}}, +/* 59304 */ {(14<<2)|2,{89,79,0}}, +/* 59305 */ {(14<<2)|2,{89,79,0}}, +/* 59306 */ {(14<<2)|2,{89,79,0}}, +/* 59307 */ {(14<<2)|2,{89,79,0}}, +/* 59308 */ {(14<<2)|2,{89,80,0}}, +/* 59309 */ {(14<<2)|2,{89,80,0}}, +/* 59310 */ {(14<<2)|2,{89,80,0}}, +/* 59311 */ {(14<<2)|2,{89,80,0}}, +/* 59312 */ {(14<<2)|2,{89,81,0}}, +/* 59313 */ {(14<<2)|2,{89,81,0}}, +/* 59314 */ {(14<<2)|2,{89,81,0}}, +/* 59315 */ {(14<<2)|2,{89,81,0}}, +/* 59316 */ {(14<<2)|2,{89,82,0}}, +/* 59317 */ {(14<<2)|2,{89,82,0}}, +/* 59318 */ {(14<<2)|2,{89,82,0}}, +/* 59319 */ {(14<<2)|2,{89,82,0}}, +/* 59320 */ {(14<<2)|2,{89,83,0}}, +/* 59321 */ {(14<<2)|2,{89,83,0}}, +/* 59322 */ {(14<<2)|2,{89,83,0}}, +/* 59323 */ {(14<<2)|2,{89,83,0}}, +/* 59324 */ {(14<<2)|2,{89,84,0}}, +/* 59325 */ {(14<<2)|2,{89,84,0}}, +/* 59326 */ {(14<<2)|2,{89,84,0}}, +/* 59327 */ {(14<<2)|2,{89,84,0}}, +/* 59328 */ {(14<<2)|2,{89,85,0}}, +/* 59329 */ {(14<<2)|2,{89,85,0}}, +/* 59330 */ {(14<<2)|2,{89,85,0}}, +/* 59331 */ {(14<<2)|2,{89,85,0}}, +/* 59332 */ {(14<<2)|2,{89,86,0}}, +/* 59333 */ {(14<<2)|2,{89,86,0}}, +/* 59334 */ {(14<<2)|2,{89,86,0}}, +/* 59335 */ {(14<<2)|2,{89,86,0}}, +/* 59336 */ {(14<<2)|2,{89,87,0}}, +/* 59337 */ {(14<<2)|2,{89,87,0}}, +/* 59338 */ {(14<<2)|2,{89,87,0}}, +/* 59339 */ {(14<<2)|2,{89,87,0}}, +/* 59340 */ {(14<<2)|2,{89,89,0}}, +/* 59341 */ {(14<<2)|2,{89,89,0}}, +/* 59342 */ {(14<<2)|2,{89,89,0}}, +/* 59343 */ {(14<<2)|2,{89,89,0}}, +/* 59344 */ {(14<<2)|2,{89,106,0}}, +/* 59345 */ {(14<<2)|2,{89,106,0}}, +/* 59346 */ {(14<<2)|2,{89,106,0}}, +/* 59347 */ {(14<<2)|2,{89,106,0}}, +/* 59348 */ {(14<<2)|2,{89,107,0}}, +/* 59349 */ {(14<<2)|2,{89,107,0}}, +/* 59350 */ {(14<<2)|2,{89,107,0}}, +/* 59351 */ {(14<<2)|2,{89,107,0}}, +/* 59352 */ {(14<<2)|2,{89,113,0}}, +/* 59353 */ {(14<<2)|2,{89,113,0}}, +/* 59354 */ {(14<<2)|2,{89,113,0}}, +/* 59355 */ {(14<<2)|2,{89,113,0}}, +/* 59356 */ {(14<<2)|2,{89,118,0}}, +/* 59357 */ {(14<<2)|2,{89,118,0}}, +/* 59358 */ {(14<<2)|2,{89,118,0}}, +/* 59359 */ {(14<<2)|2,{89,118,0}}, +/* 59360 */ {(14<<2)|2,{89,119,0}}, +/* 59361 */ {(14<<2)|2,{89,119,0}}, +/* 59362 */ {(14<<2)|2,{89,119,0}}, +/* 59363 */ {(14<<2)|2,{89,119,0}}, +/* 59364 */ {(14<<2)|2,{89,120,0}}, +/* 59365 */ {(14<<2)|2,{89,120,0}}, +/* 59366 */ {(14<<2)|2,{89,120,0}}, +/* 59367 */ {(14<<2)|2,{89,120,0}}, +/* 59368 */ {(14<<2)|2,{89,121,0}}, +/* 59369 */ {(14<<2)|2,{89,121,0}}, +/* 59370 */ {(14<<2)|2,{89,121,0}}, +/* 59371 */ {(14<<2)|2,{89,121,0}}, +/* 59372 */ {(14<<2)|2,{89,122,0}}, +/* 59373 */ {(14<<2)|2,{89,122,0}}, +/* 59374 */ {(14<<2)|2,{89,122,0}}, +/* 59375 */ {(14<<2)|2,{89,122,0}}, +/* 59376 */ {(15<<2)|2,{89,38,0}}, +/* 59377 */ {(15<<2)|2,{89,38,0}}, +/* 59378 */ {(15<<2)|2,{89,42,0}}, +/* 59379 */ {(15<<2)|2,{89,42,0}}, +/* 59380 */ {(15<<2)|2,{89,44,0}}, +/* 59381 */ {(15<<2)|2,{89,44,0}}, +/* 59382 */ {(15<<2)|2,{89,59,0}}, +/* 59383 */ {(15<<2)|2,{89,59,0}}, +/* 59384 */ {(15<<2)|2,{89,88,0}}, +/* 59385 */ {(15<<2)|2,{89,88,0}}, +/* 59386 */ {(15<<2)|2,{89,90,0}}, +/* 59387 */ {(15<<2)|2,{89,90,0}}, +/* 59388 */ {(7<<2)|1,{89,0,0}}, +/* 59389 */ {(7<<2)|1,{89,0,0}}, +/* 59390 */ {(7<<2)|1,{89,0,0}}, +/* 59391 */ {(7<<2)|1,{89,0,0}}, +/* 59392 */ {(12<<2)|2,{106,48,0}}, +/* 59393 */ {(12<<2)|2,{106,48,0}}, +/* 59394 */ {(12<<2)|2,{106,48,0}}, +/* 59395 */ {(12<<2)|2,{106,48,0}}, +/* 59396 */ {(12<<2)|2,{106,48,0}}, +/* 59397 */ {(12<<2)|2,{106,48,0}}, +/* 59398 */ {(12<<2)|2,{106,48,0}}, +/* 59399 */ {(12<<2)|2,{106,48,0}}, +/* 59400 */ {(12<<2)|2,{106,48,0}}, +/* 59401 */ {(12<<2)|2,{106,48,0}}, +/* 59402 */ {(12<<2)|2,{106,48,0}}, +/* 59403 */ {(12<<2)|2,{106,48,0}}, +/* 59404 */ {(12<<2)|2,{106,48,0}}, +/* 59405 */ {(12<<2)|2,{106,48,0}}, +/* 59406 */ {(12<<2)|2,{106,48,0}}, +/* 59407 */ {(12<<2)|2,{106,48,0}}, +/* 59408 */ {(12<<2)|2,{106,49,0}}, +/* 59409 */ {(12<<2)|2,{106,49,0}}, +/* 59410 */ {(12<<2)|2,{106,49,0}}, +/* 59411 */ {(12<<2)|2,{106,49,0}}, +/* 59412 */ {(12<<2)|2,{106,49,0}}, +/* 59413 */ {(12<<2)|2,{106,49,0}}, +/* 59414 */ {(12<<2)|2,{106,49,0}}, +/* 59415 */ {(12<<2)|2,{106,49,0}}, +/* 59416 */ {(12<<2)|2,{106,49,0}}, +/* 59417 */ {(12<<2)|2,{106,49,0}}, +/* 59418 */ {(12<<2)|2,{106,49,0}}, +/* 59419 */ {(12<<2)|2,{106,49,0}}, +/* 59420 */ {(12<<2)|2,{106,49,0}}, +/* 59421 */ {(12<<2)|2,{106,49,0}}, +/* 59422 */ {(12<<2)|2,{106,49,0}}, +/* 59423 */ {(12<<2)|2,{106,49,0}}, +/* 59424 */ {(12<<2)|2,{106,50,0}}, +/* 59425 */ {(12<<2)|2,{106,50,0}}, +/* 59426 */ {(12<<2)|2,{106,50,0}}, +/* 59427 */ {(12<<2)|2,{106,50,0}}, +/* 59428 */ {(12<<2)|2,{106,50,0}}, +/* 59429 */ {(12<<2)|2,{106,50,0}}, +/* 59430 */ {(12<<2)|2,{106,50,0}}, +/* 59431 */ {(12<<2)|2,{106,50,0}}, +/* 59432 */ {(12<<2)|2,{106,50,0}}, +/* 59433 */ {(12<<2)|2,{106,50,0}}, +/* 59434 */ {(12<<2)|2,{106,50,0}}, +/* 59435 */ {(12<<2)|2,{106,50,0}}, +/* 59436 */ {(12<<2)|2,{106,50,0}}, +/* 59437 */ {(12<<2)|2,{106,50,0}}, +/* 59438 */ {(12<<2)|2,{106,50,0}}, +/* 59439 */ {(12<<2)|2,{106,50,0}}, +/* 59440 */ {(12<<2)|2,{106,97,0}}, +/* 59441 */ {(12<<2)|2,{106,97,0}}, +/* 59442 */ {(12<<2)|2,{106,97,0}}, +/* 59443 */ {(12<<2)|2,{106,97,0}}, +/* 59444 */ {(12<<2)|2,{106,97,0}}, +/* 59445 */ {(12<<2)|2,{106,97,0}}, +/* 59446 */ {(12<<2)|2,{106,97,0}}, +/* 59447 */ {(12<<2)|2,{106,97,0}}, +/* 59448 */ {(12<<2)|2,{106,97,0}}, +/* 59449 */ {(12<<2)|2,{106,97,0}}, +/* 59450 */ {(12<<2)|2,{106,97,0}}, +/* 59451 */ {(12<<2)|2,{106,97,0}}, +/* 59452 */ {(12<<2)|2,{106,97,0}}, +/* 59453 */ {(12<<2)|2,{106,97,0}}, +/* 59454 */ {(12<<2)|2,{106,97,0}}, +/* 59455 */ {(12<<2)|2,{106,97,0}}, +/* 59456 */ {(12<<2)|2,{106,99,0}}, +/* 59457 */ {(12<<2)|2,{106,99,0}}, +/* 59458 */ {(12<<2)|2,{106,99,0}}, +/* 59459 */ {(12<<2)|2,{106,99,0}}, +/* 59460 */ {(12<<2)|2,{106,99,0}}, +/* 59461 */ {(12<<2)|2,{106,99,0}}, +/* 59462 */ {(12<<2)|2,{106,99,0}}, +/* 59463 */ {(12<<2)|2,{106,99,0}}, +/* 59464 */ {(12<<2)|2,{106,99,0}}, +/* 59465 */ {(12<<2)|2,{106,99,0}}, +/* 59466 */ {(12<<2)|2,{106,99,0}}, +/* 59467 */ {(12<<2)|2,{106,99,0}}, +/* 59468 */ {(12<<2)|2,{106,99,0}}, +/* 59469 */ {(12<<2)|2,{106,99,0}}, +/* 59470 */ {(12<<2)|2,{106,99,0}}, +/* 59471 */ {(12<<2)|2,{106,99,0}}, +/* 59472 */ {(12<<2)|2,{106,101,0}}, +/* 59473 */ {(12<<2)|2,{106,101,0}}, +/* 59474 */ {(12<<2)|2,{106,101,0}}, +/* 59475 */ {(12<<2)|2,{106,101,0}}, +/* 59476 */ {(12<<2)|2,{106,101,0}}, +/* 59477 */ {(12<<2)|2,{106,101,0}}, +/* 59478 */ {(12<<2)|2,{106,101,0}}, +/* 59479 */ {(12<<2)|2,{106,101,0}}, +/* 59480 */ {(12<<2)|2,{106,101,0}}, +/* 59481 */ {(12<<2)|2,{106,101,0}}, +/* 59482 */ {(12<<2)|2,{106,101,0}}, +/* 59483 */ {(12<<2)|2,{106,101,0}}, +/* 59484 */ {(12<<2)|2,{106,101,0}}, +/* 59485 */ {(12<<2)|2,{106,101,0}}, +/* 59486 */ {(12<<2)|2,{106,101,0}}, +/* 59487 */ {(12<<2)|2,{106,101,0}}, +/* 59488 */ {(12<<2)|2,{106,105,0}}, +/* 59489 */ {(12<<2)|2,{106,105,0}}, +/* 59490 */ {(12<<2)|2,{106,105,0}}, +/* 59491 */ {(12<<2)|2,{106,105,0}}, +/* 59492 */ {(12<<2)|2,{106,105,0}}, +/* 59493 */ {(12<<2)|2,{106,105,0}}, +/* 59494 */ {(12<<2)|2,{106,105,0}}, +/* 59495 */ {(12<<2)|2,{106,105,0}}, +/* 59496 */ {(12<<2)|2,{106,105,0}}, +/* 59497 */ {(12<<2)|2,{106,105,0}}, +/* 59498 */ {(12<<2)|2,{106,105,0}}, +/* 59499 */ {(12<<2)|2,{106,105,0}}, +/* 59500 */ {(12<<2)|2,{106,105,0}}, +/* 59501 */ {(12<<2)|2,{106,105,0}}, +/* 59502 */ {(12<<2)|2,{106,105,0}}, +/* 59503 */ {(12<<2)|2,{106,105,0}}, +/* 59504 */ {(12<<2)|2,{106,111,0}}, +/* 59505 */ {(12<<2)|2,{106,111,0}}, +/* 59506 */ {(12<<2)|2,{106,111,0}}, +/* 59507 */ {(12<<2)|2,{106,111,0}}, +/* 59508 */ {(12<<2)|2,{106,111,0}}, +/* 59509 */ {(12<<2)|2,{106,111,0}}, +/* 59510 */ {(12<<2)|2,{106,111,0}}, +/* 59511 */ {(12<<2)|2,{106,111,0}}, +/* 59512 */ {(12<<2)|2,{106,111,0}}, +/* 59513 */ {(12<<2)|2,{106,111,0}}, +/* 59514 */ {(12<<2)|2,{106,111,0}}, +/* 59515 */ {(12<<2)|2,{106,111,0}}, +/* 59516 */ {(12<<2)|2,{106,111,0}}, +/* 59517 */ {(12<<2)|2,{106,111,0}}, +/* 59518 */ {(12<<2)|2,{106,111,0}}, +/* 59519 */ {(12<<2)|2,{106,111,0}}, +/* 59520 */ {(12<<2)|2,{106,115,0}}, +/* 59521 */ {(12<<2)|2,{106,115,0}}, +/* 59522 */ {(12<<2)|2,{106,115,0}}, +/* 59523 */ {(12<<2)|2,{106,115,0}}, +/* 59524 */ {(12<<2)|2,{106,115,0}}, +/* 59525 */ {(12<<2)|2,{106,115,0}}, +/* 59526 */ {(12<<2)|2,{106,115,0}}, +/* 59527 */ {(12<<2)|2,{106,115,0}}, +/* 59528 */ {(12<<2)|2,{106,115,0}}, +/* 59529 */ {(12<<2)|2,{106,115,0}}, +/* 59530 */ {(12<<2)|2,{106,115,0}}, +/* 59531 */ {(12<<2)|2,{106,115,0}}, +/* 59532 */ {(12<<2)|2,{106,115,0}}, +/* 59533 */ {(12<<2)|2,{106,115,0}}, +/* 59534 */ {(12<<2)|2,{106,115,0}}, +/* 59535 */ {(12<<2)|2,{106,115,0}}, +/* 59536 */ {(12<<2)|2,{106,116,0}}, +/* 59537 */ {(12<<2)|2,{106,116,0}}, +/* 59538 */ {(12<<2)|2,{106,116,0}}, +/* 59539 */ {(12<<2)|2,{106,116,0}}, +/* 59540 */ {(12<<2)|2,{106,116,0}}, +/* 59541 */ {(12<<2)|2,{106,116,0}}, +/* 59542 */ {(12<<2)|2,{106,116,0}}, +/* 59543 */ {(12<<2)|2,{106,116,0}}, +/* 59544 */ {(12<<2)|2,{106,116,0}}, +/* 59545 */ {(12<<2)|2,{106,116,0}}, +/* 59546 */ {(12<<2)|2,{106,116,0}}, +/* 59547 */ {(12<<2)|2,{106,116,0}}, +/* 59548 */ {(12<<2)|2,{106,116,0}}, +/* 59549 */ {(12<<2)|2,{106,116,0}}, +/* 59550 */ {(12<<2)|2,{106,116,0}}, +/* 59551 */ {(12<<2)|2,{106,116,0}}, +/* 59552 */ {(13<<2)|2,{106,32,0}}, +/* 59553 */ {(13<<2)|2,{106,32,0}}, +/* 59554 */ {(13<<2)|2,{106,32,0}}, +/* 59555 */ {(13<<2)|2,{106,32,0}}, +/* 59556 */ {(13<<2)|2,{106,32,0}}, +/* 59557 */ {(13<<2)|2,{106,32,0}}, +/* 59558 */ {(13<<2)|2,{106,32,0}}, +/* 59559 */ {(13<<2)|2,{106,32,0}}, +/* 59560 */ {(13<<2)|2,{106,37,0}}, +/* 59561 */ {(13<<2)|2,{106,37,0}}, +/* 59562 */ {(13<<2)|2,{106,37,0}}, +/* 59563 */ {(13<<2)|2,{106,37,0}}, +/* 59564 */ {(13<<2)|2,{106,37,0}}, +/* 59565 */ {(13<<2)|2,{106,37,0}}, +/* 59566 */ {(13<<2)|2,{106,37,0}}, +/* 59567 */ {(13<<2)|2,{106,37,0}}, +/* 59568 */ {(13<<2)|2,{106,45,0}}, +/* 59569 */ {(13<<2)|2,{106,45,0}}, +/* 59570 */ {(13<<2)|2,{106,45,0}}, +/* 59571 */ {(13<<2)|2,{106,45,0}}, +/* 59572 */ {(13<<2)|2,{106,45,0}}, +/* 59573 */ {(13<<2)|2,{106,45,0}}, +/* 59574 */ {(13<<2)|2,{106,45,0}}, +/* 59575 */ {(13<<2)|2,{106,45,0}}, +/* 59576 */ {(13<<2)|2,{106,46,0}}, +/* 59577 */ {(13<<2)|2,{106,46,0}}, +/* 59578 */ {(13<<2)|2,{106,46,0}}, +/* 59579 */ {(13<<2)|2,{106,46,0}}, +/* 59580 */ {(13<<2)|2,{106,46,0}}, +/* 59581 */ {(13<<2)|2,{106,46,0}}, +/* 59582 */ {(13<<2)|2,{106,46,0}}, +/* 59583 */ {(13<<2)|2,{106,46,0}}, +/* 59584 */ {(13<<2)|2,{106,47,0}}, +/* 59585 */ {(13<<2)|2,{106,47,0}}, +/* 59586 */ {(13<<2)|2,{106,47,0}}, +/* 59587 */ {(13<<2)|2,{106,47,0}}, +/* 59588 */ {(13<<2)|2,{106,47,0}}, +/* 59589 */ {(13<<2)|2,{106,47,0}}, +/* 59590 */ {(13<<2)|2,{106,47,0}}, +/* 59591 */ {(13<<2)|2,{106,47,0}}, +/* 59592 */ {(13<<2)|2,{106,51,0}}, +/* 59593 */ {(13<<2)|2,{106,51,0}}, +/* 59594 */ {(13<<2)|2,{106,51,0}}, +/* 59595 */ {(13<<2)|2,{106,51,0}}, +/* 59596 */ {(13<<2)|2,{106,51,0}}, +/* 59597 */ {(13<<2)|2,{106,51,0}}, +/* 59598 */ {(13<<2)|2,{106,51,0}}, +/* 59599 */ {(13<<2)|2,{106,51,0}}, +/* 59600 */ {(13<<2)|2,{106,52,0}}, +/* 59601 */ {(13<<2)|2,{106,52,0}}, +/* 59602 */ {(13<<2)|2,{106,52,0}}, +/* 59603 */ {(13<<2)|2,{106,52,0}}, +/* 59604 */ {(13<<2)|2,{106,52,0}}, +/* 59605 */ {(13<<2)|2,{106,52,0}}, +/* 59606 */ {(13<<2)|2,{106,52,0}}, +/* 59607 */ {(13<<2)|2,{106,52,0}}, +/* 59608 */ {(13<<2)|2,{106,53,0}}, +/* 59609 */ {(13<<2)|2,{106,53,0}}, +/* 59610 */ {(13<<2)|2,{106,53,0}}, +/* 59611 */ {(13<<2)|2,{106,53,0}}, +/* 59612 */ {(13<<2)|2,{106,53,0}}, +/* 59613 */ {(13<<2)|2,{106,53,0}}, +/* 59614 */ {(13<<2)|2,{106,53,0}}, +/* 59615 */ {(13<<2)|2,{106,53,0}}, +/* 59616 */ {(13<<2)|2,{106,54,0}}, +/* 59617 */ {(13<<2)|2,{106,54,0}}, +/* 59618 */ {(13<<2)|2,{106,54,0}}, +/* 59619 */ {(13<<2)|2,{106,54,0}}, +/* 59620 */ {(13<<2)|2,{106,54,0}}, +/* 59621 */ {(13<<2)|2,{106,54,0}}, +/* 59622 */ {(13<<2)|2,{106,54,0}}, +/* 59623 */ {(13<<2)|2,{106,54,0}}, +/* 59624 */ {(13<<2)|2,{106,55,0}}, +/* 59625 */ {(13<<2)|2,{106,55,0}}, +/* 59626 */ {(13<<2)|2,{106,55,0}}, +/* 59627 */ {(13<<2)|2,{106,55,0}}, +/* 59628 */ {(13<<2)|2,{106,55,0}}, +/* 59629 */ {(13<<2)|2,{106,55,0}}, +/* 59630 */ {(13<<2)|2,{106,55,0}}, +/* 59631 */ {(13<<2)|2,{106,55,0}}, +/* 59632 */ {(13<<2)|2,{106,56,0}}, +/* 59633 */ {(13<<2)|2,{106,56,0}}, +/* 59634 */ {(13<<2)|2,{106,56,0}}, +/* 59635 */ {(13<<2)|2,{106,56,0}}, +/* 59636 */ {(13<<2)|2,{106,56,0}}, +/* 59637 */ {(13<<2)|2,{106,56,0}}, +/* 59638 */ {(13<<2)|2,{106,56,0}}, +/* 59639 */ {(13<<2)|2,{106,56,0}}, +/* 59640 */ {(13<<2)|2,{106,57,0}}, +/* 59641 */ {(13<<2)|2,{106,57,0}}, +/* 59642 */ {(13<<2)|2,{106,57,0}}, +/* 59643 */ {(13<<2)|2,{106,57,0}}, +/* 59644 */ {(13<<2)|2,{106,57,0}}, +/* 59645 */ {(13<<2)|2,{106,57,0}}, +/* 59646 */ {(13<<2)|2,{106,57,0}}, +/* 59647 */ {(13<<2)|2,{106,57,0}}, +/* 59648 */ {(13<<2)|2,{106,61,0}}, +/* 59649 */ {(13<<2)|2,{106,61,0}}, +/* 59650 */ {(13<<2)|2,{106,61,0}}, +/* 59651 */ {(13<<2)|2,{106,61,0}}, +/* 59652 */ {(13<<2)|2,{106,61,0}}, +/* 59653 */ {(13<<2)|2,{106,61,0}}, +/* 59654 */ {(13<<2)|2,{106,61,0}}, +/* 59655 */ {(13<<2)|2,{106,61,0}}, +/* 59656 */ {(13<<2)|2,{106,65,0}}, +/* 59657 */ {(13<<2)|2,{106,65,0}}, +/* 59658 */ {(13<<2)|2,{106,65,0}}, +/* 59659 */ {(13<<2)|2,{106,65,0}}, +/* 59660 */ {(13<<2)|2,{106,65,0}}, +/* 59661 */ {(13<<2)|2,{106,65,0}}, +/* 59662 */ {(13<<2)|2,{106,65,0}}, +/* 59663 */ {(13<<2)|2,{106,65,0}}, +/* 59664 */ {(13<<2)|2,{106,95,0}}, +/* 59665 */ {(13<<2)|2,{106,95,0}}, +/* 59666 */ {(13<<2)|2,{106,95,0}}, +/* 59667 */ {(13<<2)|2,{106,95,0}}, +/* 59668 */ {(13<<2)|2,{106,95,0}}, +/* 59669 */ {(13<<2)|2,{106,95,0}}, +/* 59670 */ {(13<<2)|2,{106,95,0}}, +/* 59671 */ {(13<<2)|2,{106,95,0}}, +/* 59672 */ {(13<<2)|2,{106,98,0}}, +/* 59673 */ {(13<<2)|2,{106,98,0}}, +/* 59674 */ {(13<<2)|2,{106,98,0}}, +/* 59675 */ {(13<<2)|2,{106,98,0}}, +/* 59676 */ {(13<<2)|2,{106,98,0}}, +/* 59677 */ {(13<<2)|2,{106,98,0}}, +/* 59678 */ {(13<<2)|2,{106,98,0}}, +/* 59679 */ {(13<<2)|2,{106,98,0}}, +/* 59680 */ {(13<<2)|2,{106,100,0}}, +/* 59681 */ {(13<<2)|2,{106,100,0}}, +/* 59682 */ {(13<<2)|2,{106,100,0}}, +/* 59683 */ {(13<<2)|2,{106,100,0}}, +/* 59684 */ {(13<<2)|2,{106,100,0}}, +/* 59685 */ {(13<<2)|2,{106,100,0}}, +/* 59686 */ {(13<<2)|2,{106,100,0}}, +/* 59687 */ {(13<<2)|2,{106,100,0}}, +/* 59688 */ {(13<<2)|2,{106,102,0}}, +/* 59689 */ {(13<<2)|2,{106,102,0}}, +/* 59690 */ {(13<<2)|2,{106,102,0}}, +/* 59691 */ {(13<<2)|2,{106,102,0}}, +/* 59692 */ {(13<<2)|2,{106,102,0}}, +/* 59693 */ {(13<<2)|2,{106,102,0}}, +/* 59694 */ {(13<<2)|2,{106,102,0}}, +/* 59695 */ {(13<<2)|2,{106,102,0}}, +/* 59696 */ {(13<<2)|2,{106,103,0}}, +/* 59697 */ {(13<<2)|2,{106,103,0}}, +/* 59698 */ {(13<<2)|2,{106,103,0}}, +/* 59699 */ {(13<<2)|2,{106,103,0}}, +/* 59700 */ {(13<<2)|2,{106,103,0}}, +/* 59701 */ {(13<<2)|2,{106,103,0}}, +/* 59702 */ {(13<<2)|2,{106,103,0}}, +/* 59703 */ {(13<<2)|2,{106,103,0}}, +/* 59704 */ {(13<<2)|2,{106,104,0}}, +/* 59705 */ {(13<<2)|2,{106,104,0}}, +/* 59706 */ {(13<<2)|2,{106,104,0}}, +/* 59707 */ {(13<<2)|2,{106,104,0}}, +/* 59708 */ {(13<<2)|2,{106,104,0}}, +/* 59709 */ {(13<<2)|2,{106,104,0}}, +/* 59710 */ {(13<<2)|2,{106,104,0}}, +/* 59711 */ {(13<<2)|2,{106,104,0}}, +/* 59712 */ {(13<<2)|2,{106,108,0}}, +/* 59713 */ {(13<<2)|2,{106,108,0}}, +/* 59714 */ {(13<<2)|2,{106,108,0}}, +/* 59715 */ {(13<<2)|2,{106,108,0}}, +/* 59716 */ {(13<<2)|2,{106,108,0}}, +/* 59717 */ {(13<<2)|2,{106,108,0}}, +/* 59718 */ {(13<<2)|2,{106,108,0}}, +/* 59719 */ {(13<<2)|2,{106,108,0}}, +/* 59720 */ {(13<<2)|2,{106,109,0}}, +/* 59721 */ {(13<<2)|2,{106,109,0}}, +/* 59722 */ {(13<<2)|2,{106,109,0}}, +/* 59723 */ {(13<<2)|2,{106,109,0}}, +/* 59724 */ {(13<<2)|2,{106,109,0}}, +/* 59725 */ {(13<<2)|2,{106,109,0}}, +/* 59726 */ {(13<<2)|2,{106,109,0}}, +/* 59727 */ {(13<<2)|2,{106,109,0}}, +/* 59728 */ {(13<<2)|2,{106,110,0}}, +/* 59729 */ {(13<<2)|2,{106,110,0}}, +/* 59730 */ {(13<<2)|2,{106,110,0}}, +/* 59731 */ {(13<<2)|2,{106,110,0}}, +/* 59732 */ {(13<<2)|2,{106,110,0}}, +/* 59733 */ {(13<<2)|2,{106,110,0}}, +/* 59734 */ {(13<<2)|2,{106,110,0}}, +/* 59735 */ {(13<<2)|2,{106,110,0}}, +/* 59736 */ {(13<<2)|2,{106,112,0}}, +/* 59737 */ {(13<<2)|2,{106,112,0}}, +/* 59738 */ {(13<<2)|2,{106,112,0}}, +/* 59739 */ {(13<<2)|2,{106,112,0}}, +/* 59740 */ {(13<<2)|2,{106,112,0}}, +/* 59741 */ {(13<<2)|2,{106,112,0}}, +/* 59742 */ {(13<<2)|2,{106,112,0}}, +/* 59743 */ {(13<<2)|2,{106,112,0}}, +/* 59744 */ {(13<<2)|2,{106,114,0}}, +/* 59745 */ {(13<<2)|2,{106,114,0}}, +/* 59746 */ {(13<<2)|2,{106,114,0}}, +/* 59747 */ {(13<<2)|2,{106,114,0}}, +/* 59748 */ {(13<<2)|2,{106,114,0}}, +/* 59749 */ {(13<<2)|2,{106,114,0}}, +/* 59750 */ {(13<<2)|2,{106,114,0}}, +/* 59751 */ {(13<<2)|2,{106,114,0}}, +/* 59752 */ {(13<<2)|2,{106,117,0}}, +/* 59753 */ {(13<<2)|2,{106,117,0}}, +/* 59754 */ {(13<<2)|2,{106,117,0}}, +/* 59755 */ {(13<<2)|2,{106,117,0}}, +/* 59756 */ {(13<<2)|2,{106,117,0}}, +/* 59757 */ {(13<<2)|2,{106,117,0}}, +/* 59758 */ {(13<<2)|2,{106,117,0}}, +/* 59759 */ {(13<<2)|2,{106,117,0}}, +/* 59760 */ {(14<<2)|2,{106,58,0}}, +/* 59761 */ {(14<<2)|2,{106,58,0}}, +/* 59762 */ {(14<<2)|2,{106,58,0}}, +/* 59763 */ {(14<<2)|2,{106,58,0}}, +/* 59764 */ {(14<<2)|2,{106,66,0}}, +/* 59765 */ {(14<<2)|2,{106,66,0}}, +/* 59766 */ {(14<<2)|2,{106,66,0}}, +/* 59767 */ {(14<<2)|2,{106,66,0}}, +/* 59768 */ {(14<<2)|2,{106,67,0}}, +/* 59769 */ {(14<<2)|2,{106,67,0}}, +/* 59770 */ {(14<<2)|2,{106,67,0}}, +/* 59771 */ {(14<<2)|2,{106,67,0}}, +/* 59772 */ {(14<<2)|2,{106,68,0}}, +/* 59773 */ {(14<<2)|2,{106,68,0}}, +/* 59774 */ {(14<<2)|2,{106,68,0}}, +/* 59775 */ {(14<<2)|2,{106,68,0}}, +/* 59776 */ {(14<<2)|2,{106,69,0}}, +/* 59777 */ {(14<<2)|2,{106,69,0}}, +/* 59778 */ {(14<<2)|2,{106,69,0}}, +/* 59779 */ {(14<<2)|2,{106,69,0}}, +/* 59780 */ {(14<<2)|2,{106,70,0}}, +/* 59781 */ {(14<<2)|2,{106,70,0}}, +/* 59782 */ {(14<<2)|2,{106,70,0}}, +/* 59783 */ {(14<<2)|2,{106,70,0}}, +/* 59784 */ {(14<<2)|2,{106,71,0}}, +/* 59785 */ {(14<<2)|2,{106,71,0}}, +/* 59786 */ {(14<<2)|2,{106,71,0}}, +/* 59787 */ {(14<<2)|2,{106,71,0}}, +/* 59788 */ {(14<<2)|2,{106,72,0}}, +/* 59789 */ {(14<<2)|2,{106,72,0}}, +/* 59790 */ {(14<<2)|2,{106,72,0}}, +/* 59791 */ {(14<<2)|2,{106,72,0}}, +/* 59792 */ {(14<<2)|2,{106,73,0}}, +/* 59793 */ {(14<<2)|2,{106,73,0}}, +/* 59794 */ {(14<<2)|2,{106,73,0}}, +/* 59795 */ {(14<<2)|2,{106,73,0}}, +/* 59796 */ {(14<<2)|2,{106,74,0}}, +/* 59797 */ {(14<<2)|2,{106,74,0}}, +/* 59798 */ {(14<<2)|2,{106,74,0}}, +/* 59799 */ {(14<<2)|2,{106,74,0}}, +/* 59800 */ {(14<<2)|2,{106,75,0}}, +/* 59801 */ {(14<<2)|2,{106,75,0}}, +/* 59802 */ {(14<<2)|2,{106,75,0}}, +/* 59803 */ {(14<<2)|2,{106,75,0}}, +/* 59804 */ {(14<<2)|2,{106,76,0}}, +/* 59805 */ {(14<<2)|2,{106,76,0}}, +/* 59806 */ {(14<<2)|2,{106,76,0}}, +/* 59807 */ {(14<<2)|2,{106,76,0}}, +/* 59808 */ {(14<<2)|2,{106,77,0}}, +/* 59809 */ {(14<<2)|2,{106,77,0}}, +/* 59810 */ {(14<<2)|2,{106,77,0}}, +/* 59811 */ {(14<<2)|2,{106,77,0}}, +/* 59812 */ {(14<<2)|2,{106,78,0}}, +/* 59813 */ {(14<<2)|2,{106,78,0}}, +/* 59814 */ {(14<<2)|2,{106,78,0}}, +/* 59815 */ {(14<<2)|2,{106,78,0}}, +/* 59816 */ {(14<<2)|2,{106,79,0}}, +/* 59817 */ {(14<<2)|2,{106,79,0}}, +/* 59818 */ {(14<<2)|2,{106,79,0}}, +/* 59819 */ {(14<<2)|2,{106,79,0}}, +/* 59820 */ {(14<<2)|2,{106,80,0}}, +/* 59821 */ {(14<<2)|2,{106,80,0}}, +/* 59822 */ {(14<<2)|2,{106,80,0}}, +/* 59823 */ {(14<<2)|2,{106,80,0}}, +/* 59824 */ {(14<<2)|2,{106,81,0}}, +/* 59825 */ {(14<<2)|2,{106,81,0}}, +/* 59826 */ {(14<<2)|2,{106,81,0}}, +/* 59827 */ {(14<<2)|2,{106,81,0}}, +/* 59828 */ {(14<<2)|2,{106,82,0}}, +/* 59829 */ {(14<<2)|2,{106,82,0}}, +/* 59830 */ {(14<<2)|2,{106,82,0}}, +/* 59831 */ {(14<<2)|2,{106,82,0}}, +/* 59832 */ {(14<<2)|2,{106,83,0}}, +/* 59833 */ {(14<<2)|2,{106,83,0}}, +/* 59834 */ {(14<<2)|2,{106,83,0}}, +/* 59835 */ {(14<<2)|2,{106,83,0}}, +/* 59836 */ {(14<<2)|2,{106,84,0}}, +/* 59837 */ {(14<<2)|2,{106,84,0}}, +/* 59838 */ {(14<<2)|2,{106,84,0}}, +/* 59839 */ {(14<<2)|2,{106,84,0}}, +/* 59840 */ {(14<<2)|2,{106,85,0}}, +/* 59841 */ {(14<<2)|2,{106,85,0}}, +/* 59842 */ {(14<<2)|2,{106,85,0}}, +/* 59843 */ {(14<<2)|2,{106,85,0}}, +/* 59844 */ {(14<<2)|2,{106,86,0}}, +/* 59845 */ {(14<<2)|2,{106,86,0}}, +/* 59846 */ {(14<<2)|2,{106,86,0}}, +/* 59847 */ {(14<<2)|2,{106,86,0}}, +/* 59848 */ {(14<<2)|2,{106,87,0}}, +/* 59849 */ {(14<<2)|2,{106,87,0}}, +/* 59850 */ {(14<<2)|2,{106,87,0}}, +/* 59851 */ {(14<<2)|2,{106,87,0}}, +/* 59852 */ {(14<<2)|2,{106,89,0}}, +/* 59853 */ {(14<<2)|2,{106,89,0}}, +/* 59854 */ {(14<<2)|2,{106,89,0}}, +/* 59855 */ {(14<<2)|2,{106,89,0}}, +/* 59856 */ {(14<<2)|2,{106,106,0}}, +/* 59857 */ {(14<<2)|2,{106,106,0}}, +/* 59858 */ {(14<<2)|2,{106,106,0}}, +/* 59859 */ {(14<<2)|2,{106,106,0}}, +/* 59860 */ {(14<<2)|2,{106,107,0}}, +/* 59861 */ {(14<<2)|2,{106,107,0}}, +/* 59862 */ {(14<<2)|2,{106,107,0}}, +/* 59863 */ {(14<<2)|2,{106,107,0}}, +/* 59864 */ {(14<<2)|2,{106,113,0}}, +/* 59865 */ {(14<<2)|2,{106,113,0}}, +/* 59866 */ {(14<<2)|2,{106,113,0}}, +/* 59867 */ {(14<<2)|2,{106,113,0}}, +/* 59868 */ {(14<<2)|2,{106,118,0}}, +/* 59869 */ {(14<<2)|2,{106,118,0}}, +/* 59870 */ {(14<<2)|2,{106,118,0}}, +/* 59871 */ {(14<<2)|2,{106,118,0}}, +/* 59872 */ {(14<<2)|2,{106,119,0}}, +/* 59873 */ {(14<<2)|2,{106,119,0}}, +/* 59874 */ {(14<<2)|2,{106,119,0}}, +/* 59875 */ {(14<<2)|2,{106,119,0}}, +/* 59876 */ {(14<<2)|2,{106,120,0}}, +/* 59877 */ {(14<<2)|2,{106,120,0}}, +/* 59878 */ {(14<<2)|2,{106,120,0}}, +/* 59879 */ {(14<<2)|2,{106,120,0}}, +/* 59880 */ {(14<<2)|2,{106,121,0}}, +/* 59881 */ {(14<<2)|2,{106,121,0}}, +/* 59882 */ {(14<<2)|2,{106,121,0}}, +/* 59883 */ {(14<<2)|2,{106,121,0}}, +/* 59884 */ {(14<<2)|2,{106,122,0}}, +/* 59885 */ {(14<<2)|2,{106,122,0}}, +/* 59886 */ {(14<<2)|2,{106,122,0}}, +/* 59887 */ {(14<<2)|2,{106,122,0}}, +/* 59888 */ {(15<<2)|2,{106,38,0}}, +/* 59889 */ {(15<<2)|2,{106,38,0}}, +/* 59890 */ {(15<<2)|2,{106,42,0}}, +/* 59891 */ {(15<<2)|2,{106,42,0}}, +/* 59892 */ {(15<<2)|2,{106,44,0}}, +/* 59893 */ {(15<<2)|2,{106,44,0}}, +/* 59894 */ {(15<<2)|2,{106,59,0}}, +/* 59895 */ {(15<<2)|2,{106,59,0}}, +/* 59896 */ {(15<<2)|2,{106,88,0}}, +/* 59897 */ {(15<<2)|2,{106,88,0}}, +/* 59898 */ {(15<<2)|2,{106,90,0}}, +/* 59899 */ {(15<<2)|2,{106,90,0}}, +/* 59900 */ {(7<<2)|1,{106,0,0}}, +/* 59901 */ {(7<<2)|1,{106,0,0}}, +/* 59902 */ {(7<<2)|1,{106,0,0}}, +/* 59903 */ {(7<<2)|1,{106,0,0}}, +/* 59904 */ {(12<<2)|2,{107,48,0}}, +/* 59905 */ {(12<<2)|2,{107,48,0}}, +/* 59906 */ {(12<<2)|2,{107,48,0}}, +/* 59907 */ {(12<<2)|2,{107,48,0}}, +/* 59908 */ {(12<<2)|2,{107,48,0}}, +/* 59909 */ {(12<<2)|2,{107,48,0}}, +/* 59910 */ {(12<<2)|2,{107,48,0}}, +/* 59911 */ {(12<<2)|2,{107,48,0}}, +/* 59912 */ {(12<<2)|2,{107,48,0}}, +/* 59913 */ {(12<<2)|2,{107,48,0}}, +/* 59914 */ {(12<<2)|2,{107,48,0}}, +/* 59915 */ {(12<<2)|2,{107,48,0}}, +/* 59916 */ {(12<<2)|2,{107,48,0}}, +/* 59917 */ {(12<<2)|2,{107,48,0}}, +/* 59918 */ {(12<<2)|2,{107,48,0}}, +/* 59919 */ {(12<<2)|2,{107,48,0}}, +/* 59920 */ {(12<<2)|2,{107,49,0}}, +/* 59921 */ {(12<<2)|2,{107,49,0}}, +/* 59922 */ {(12<<2)|2,{107,49,0}}, +/* 59923 */ {(12<<2)|2,{107,49,0}}, +/* 59924 */ {(12<<2)|2,{107,49,0}}, +/* 59925 */ {(12<<2)|2,{107,49,0}}, +/* 59926 */ {(12<<2)|2,{107,49,0}}, +/* 59927 */ {(12<<2)|2,{107,49,0}}, +/* 59928 */ {(12<<2)|2,{107,49,0}}, +/* 59929 */ {(12<<2)|2,{107,49,0}}, +/* 59930 */ {(12<<2)|2,{107,49,0}}, +/* 59931 */ {(12<<2)|2,{107,49,0}}, +/* 59932 */ {(12<<2)|2,{107,49,0}}, +/* 59933 */ {(12<<2)|2,{107,49,0}}, +/* 59934 */ {(12<<2)|2,{107,49,0}}, +/* 59935 */ {(12<<2)|2,{107,49,0}}, +/* 59936 */ {(12<<2)|2,{107,50,0}}, +/* 59937 */ {(12<<2)|2,{107,50,0}}, +/* 59938 */ {(12<<2)|2,{107,50,0}}, +/* 59939 */ {(12<<2)|2,{107,50,0}}, +/* 59940 */ {(12<<2)|2,{107,50,0}}, +/* 59941 */ {(12<<2)|2,{107,50,0}}, +/* 59942 */ {(12<<2)|2,{107,50,0}}, +/* 59943 */ {(12<<2)|2,{107,50,0}}, +/* 59944 */ {(12<<2)|2,{107,50,0}}, +/* 59945 */ {(12<<2)|2,{107,50,0}}, +/* 59946 */ {(12<<2)|2,{107,50,0}}, +/* 59947 */ {(12<<2)|2,{107,50,0}}, +/* 59948 */ {(12<<2)|2,{107,50,0}}, +/* 59949 */ {(12<<2)|2,{107,50,0}}, +/* 59950 */ {(12<<2)|2,{107,50,0}}, +/* 59951 */ {(12<<2)|2,{107,50,0}}, +/* 59952 */ {(12<<2)|2,{107,97,0}}, +/* 59953 */ {(12<<2)|2,{107,97,0}}, +/* 59954 */ {(12<<2)|2,{107,97,0}}, +/* 59955 */ {(12<<2)|2,{107,97,0}}, +/* 59956 */ {(12<<2)|2,{107,97,0}}, +/* 59957 */ {(12<<2)|2,{107,97,0}}, +/* 59958 */ {(12<<2)|2,{107,97,0}}, +/* 59959 */ {(12<<2)|2,{107,97,0}}, +/* 59960 */ {(12<<2)|2,{107,97,0}}, +/* 59961 */ {(12<<2)|2,{107,97,0}}, +/* 59962 */ {(12<<2)|2,{107,97,0}}, +/* 59963 */ {(12<<2)|2,{107,97,0}}, +/* 59964 */ {(12<<2)|2,{107,97,0}}, +/* 59965 */ {(12<<2)|2,{107,97,0}}, +/* 59966 */ {(12<<2)|2,{107,97,0}}, +/* 59967 */ {(12<<2)|2,{107,97,0}}, +/* 59968 */ {(12<<2)|2,{107,99,0}}, +/* 59969 */ {(12<<2)|2,{107,99,0}}, +/* 59970 */ {(12<<2)|2,{107,99,0}}, +/* 59971 */ {(12<<2)|2,{107,99,0}}, +/* 59972 */ {(12<<2)|2,{107,99,0}}, +/* 59973 */ {(12<<2)|2,{107,99,0}}, +/* 59974 */ {(12<<2)|2,{107,99,0}}, +/* 59975 */ {(12<<2)|2,{107,99,0}}, +/* 59976 */ {(12<<2)|2,{107,99,0}}, +/* 59977 */ {(12<<2)|2,{107,99,0}}, +/* 59978 */ {(12<<2)|2,{107,99,0}}, +/* 59979 */ {(12<<2)|2,{107,99,0}}, +/* 59980 */ {(12<<2)|2,{107,99,0}}, +/* 59981 */ {(12<<2)|2,{107,99,0}}, +/* 59982 */ {(12<<2)|2,{107,99,0}}, +/* 59983 */ {(12<<2)|2,{107,99,0}}, +/* 59984 */ {(12<<2)|2,{107,101,0}}, +/* 59985 */ {(12<<2)|2,{107,101,0}}, +/* 59986 */ {(12<<2)|2,{107,101,0}}, +/* 59987 */ {(12<<2)|2,{107,101,0}}, +/* 59988 */ {(12<<2)|2,{107,101,0}}, +/* 59989 */ {(12<<2)|2,{107,101,0}}, +/* 59990 */ {(12<<2)|2,{107,101,0}}, +/* 59991 */ {(12<<2)|2,{107,101,0}}, +/* 59992 */ {(12<<2)|2,{107,101,0}}, +/* 59993 */ {(12<<2)|2,{107,101,0}}, +/* 59994 */ {(12<<2)|2,{107,101,0}}, +/* 59995 */ {(12<<2)|2,{107,101,0}}, +/* 59996 */ {(12<<2)|2,{107,101,0}}, +/* 59997 */ {(12<<2)|2,{107,101,0}}, +/* 59998 */ {(12<<2)|2,{107,101,0}}, +/* 59999 */ {(12<<2)|2,{107,101,0}}, +/* 60000 */ {(12<<2)|2,{107,105,0}}, +/* 60001 */ {(12<<2)|2,{107,105,0}}, +/* 60002 */ {(12<<2)|2,{107,105,0}}, +/* 60003 */ {(12<<2)|2,{107,105,0}}, +/* 60004 */ {(12<<2)|2,{107,105,0}}, +/* 60005 */ {(12<<2)|2,{107,105,0}}, +/* 60006 */ {(12<<2)|2,{107,105,0}}, +/* 60007 */ {(12<<2)|2,{107,105,0}}, +/* 60008 */ {(12<<2)|2,{107,105,0}}, +/* 60009 */ {(12<<2)|2,{107,105,0}}, +/* 60010 */ {(12<<2)|2,{107,105,0}}, +/* 60011 */ {(12<<2)|2,{107,105,0}}, +/* 60012 */ {(12<<2)|2,{107,105,0}}, +/* 60013 */ {(12<<2)|2,{107,105,0}}, +/* 60014 */ {(12<<2)|2,{107,105,0}}, +/* 60015 */ {(12<<2)|2,{107,105,0}}, +/* 60016 */ {(12<<2)|2,{107,111,0}}, +/* 60017 */ {(12<<2)|2,{107,111,0}}, +/* 60018 */ {(12<<2)|2,{107,111,0}}, +/* 60019 */ {(12<<2)|2,{107,111,0}}, +/* 60020 */ {(12<<2)|2,{107,111,0}}, +/* 60021 */ {(12<<2)|2,{107,111,0}}, +/* 60022 */ {(12<<2)|2,{107,111,0}}, +/* 60023 */ {(12<<2)|2,{107,111,0}}, +/* 60024 */ {(12<<2)|2,{107,111,0}}, +/* 60025 */ {(12<<2)|2,{107,111,0}}, +/* 60026 */ {(12<<2)|2,{107,111,0}}, +/* 60027 */ {(12<<2)|2,{107,111,0}}, +/* 60028 */ {(12<<2)|2,{107,111,0}}, +/* 60029 */ {(12<<2)|2,{107,111,0}}, +/* 60030 */ {(12<<2)|2,{107,111,0}}, +/* 60031 */ {(12<<2)|2,{107,111,0}}, +/* 60032 */ {(12<<2)|2,{107,115,0}}, +/* 60033 */ {(12<<2)|2,{107,115,0}}, +/* 60034 */ {(12<<2)|2,{107,115,0}}, +/* 60035 */ {(12<<2)|2,{107,115,0}}, +/* 60036 */ {(12<<2)|2,{107,115,0}}, +/* 60037 */ {(12<<2)|2,{107,115,0}}, +/* 60038 */ {(12<<2)|2,{107,115,0}}, +/* 60039 */ {(12<<2)|2,{107,115,0}}, +/* 60040 */ {(12<<2)|2,{107,115,0}}, +/* 60041 */ {(12<<2)|2,{107,115,0}}, +/* 60042 */ {(12<<2)|2,{107,115,0}}, +/* 60043 */ {(12<<2)|2,{107,115,0}}, +/* 60044 */ {(12<<2)|2,{107,115,0}}, +/* 60045 */ {(12<<2)|2,{107,115,0}}, +/* 60046 */ {(12<<2)|2,{107,115,0}}, +/* 60047 */ {(12<<2)|2,{107,115,0}}, +/* 60048 */ {(12<<2)|2,{107,116,0}}, +/* 60049 */ {(12<<2)|2,{107,116,0}}, +/* 60050 */ {(12<<2)|2,{107,116,0}}, +/* 60051 */ {(12<<2)|2,{107,116,0}}, +/* 60052 */ {(12<<2)|2,{107,116,0}}, +/* 60053 */ {(12<<2)|2,{107,116,0}}, +/* 60054 */ {(12<<2)|2,{107,116,0}}, +/* 60055 */ {(12<<2)|2,{107,116,0}}, +/* 60056 */ {(12<<2)|2,{107,116,0}}, +/* 60057 */ {(12<<2)|2,{107,116,0}}, +/* 60058 */ {(12<<2)|2,{107,116,0}}, +/* 60059 */ {(12<<2)|2,{107,116,0}}, +/* 60060 */ {(12<<2)|2,{107,116,0}}, +/* 60061 */ {(12<<2)|2,{107,116,0}}, +/* 60062 */ {(12<<2)|2,{107,116,0}}, +/* 60063 */ {(12<<2)|2,{107,116,0}}, +/* 60064 */ {(13<<2)|2,{107,32,0}}, +/* 60065 */ {(13<<2)|2,{107,32,0}}, +/* 60066 */ {(13<<2)|2,{107,32,0}}, +/* 60067 */ {(13<<2)|2,{107,32,0}}, +/* 60068 */ {(13<<2)|2,{107,32,0}}, +/* 60069 */ {(13<<2)|2,{107,32,0}}, +/* 60070 */ {(13<<2)|2,{107,32,0}}, +/* 60071 */ {(13<<2)|2,{107,32,0}}, +/* 60072 */ {(13<<2)|2,{107,37,0}}, +/* 60073 */ {(13<<2)|2,{107,37,0}}, +/* 60074 */ {(13<<2)|2,{107,37,0}}, +/* 60075 */ {(13<<2)|2,{107,37,0}}, +/* 60076 */ {(13<<2)|2,{107,37,0}}, +/* 60077 */ {(13<<2)|2,{107,37,0}}, +/* 60078 */ {(13<<2)|2,{107,37,0}}, +/* 60079 */ {(13<<2)|2,{107,37,0}}, +/* 60080 */ {(13<<2)|2,{107,45,0}}, +/* 60081 */ {(13<<2)|2,{107,45,0}}, +/* 60082 */ {(13<<2)|2,{107,45,0}}, +/* 60083 */ {(13<<2)|2,{107,45,0}}, +/* 60084 */ {(13<<2)|2,{107,45,0}}, +/* 60085 */ {(13<<2)|2,{107,45,0}}, +/* 60086 */ {(13<<2)|2,{107,45,0}}, +/* 60087 */ {(13<<2)|2,{107,45,0}}, +/* 60088 */ {(13<<2)|2,{107,46,0}}, +/* 60089 */ {(13<<2)|2,{107,46,0}}, +/* 60090 */ {(13<<2)|2,{107,46,0}}, +/* 60091 */ {(13<<2)|2,{107,46,0}}, +/* 60092 */ {(13<<2)|2,{107,46,0}}, +/* 60093 */ {(13<<2)|2,{107,46,0}}, +/* 60094 */ {(13<<2)|2,{107,46,0}}, +/* 60095 */ {(13<<2)|2,{107,46,0}}, +/* 60096 */ {(13<<2)|2,{107,47,0}}, +/* 60097 */ {(13<<2)|2,{107,47,0}}, +/* 60098 */ {(13<<2)|2,{107,47,0}}, +/* 60099 */ {(13<<2)|2,{107,47,0}}, +/* 60100 */ {(13<<2)|2,{107,47,0}}, +/* 60101 */ {(13<<2)|2,{107,47,0}}, +/* 60102 */ {(13<<2)|2,{107,47,0}}, +/* 60103 */ {(13<<2)|2,{107,47,0}}, +/* 60104 */ {(13<<2)|2,{107,51,0}}, +/* 60105 */ {(13<<2)|2,{107,51,0}}, +/* 60106 */ {(13<<2)|2,{107,51,0}}, +/* 60107 */ {(13<<2)|2,{107,51,0}}, +/* 60108 */ {(13<<2)|2,{107,51,0}}, +/* 60109 */ {(13<<2)|2,{107,51,0}}, +/* 60110 */ {(13<<2)|2,{107,51,0}}, +/* 60111 */ {(13<<2)|2,{107,51,0}}, +/* 60112 */ {(13<<2)|2,{107,52,0}}, +/* 60113 */ {(13<<2)|2,{107,52,0}}, +/* 60114 */ {(13<<2)|2,{107,52,0}}, +/* 60115 */ {(13<<2)|2,{107,52,0}}, +/* 60116 */ {(13<<2)|2,{107,52,0}}, +/* 60117 */ {(13<<2)|2,{107,52,0}}, +/* 60118 */ {(13<<2)|2,{107,52,0}}, +/* 60119 */ {(13<<2)|2,{107,52,0}}, +/* 60120 */ {(13<<2)|2,{107,53,0}}, +/* 60121 */ {(13<<2)|2,{107,53,0}}, +/* 60122 */ {(13<<2)|2,{107,53,0}}, +/* 60123 */ {(13<<2)|2,{107,53,0}}, +/* 60124 */ {(13<<2)|2,{107,53,0}}, +/* 60125 */ {(13<<2)|2,{107,53,0}}, +/* 60126 */ {(13<<2)|2,{107,53,0}}, +/* 60127 */ {(13<<2)|2,{107,53,0}}, +/* 60128 */ {(13<<2)|2,{107,54,0}}, +/* 60129 */ {(13<<2)|2,{107,54,0}}, +/* 60130 */ {(13<<2)|2,{107,54,0}}, +/* 60131 */ {(13<<2)|2,{107,54,0}}, +/* 60132 */ {(13<<2)|2,{107,54,0}}, +/* 60133 */ {(13<<2)|2,{107,54,0}}, +/* 60134 */ {(13<<2)|2,{107,54,0}}, +/* 60135 */ {(13<<2)|2,{107,54,0}}, +/* 60136 */ {(13<<2)|2,{107,55,0}}, +/* 60137 */ {(13<<2)|2,{107,55,0}}, +/* 60138 */ {(13<<2)|2,{107,55,0}}, +/* 60139 */ {(13<<2)|2,{107,55,0}}, +/* 60140 */ {(13<<2)|2,{107,55,0}}, +/* 60141 */ {(13<<2)|2,{107,55,0}}, +/* 60142 */ {(13<<2)|2,{107,55,0}}, +/* 60143 */ {(13<<2)|2,{107,55,0}}, +/* 60144 */ {(13<<2)|2,{107,56,0}}, +/* 60145 */ {(13<<2)|2,{107,56,0}}, +/* 60146 */ {(13<<2)|2,{107,56,0}}, +/* 60147 */ {(13<<2)|2,{107,56,0}}, +/* 60148 */ {(13<<2)|2,{107,56,0}}, +/* 60149 */ {(13<<2)|2,{107,56,0}}, +/* 60150 */ {(13<<2)|2,{107,56,0}}, +/* 60151 */ {(13<<2)|2,{107,56,0}}, +/* 60152 */ {(13<<2)|2,{107,57,0}}, +/* 60153 */ {(13<<2)|2,{107,57,0}}, +/* 60154 */ {(13<<2)|2,{107,57,0}}, +/* 60155 */ {(13<<2)|2,{107,57,0}}, +/* 60156 */ {(13<<2)|2,{107,57,0}}, +/* 60157 */ {(13<<2)|2,{107,57,0}}, +/* 60158 */ {(13<<2)|2,{107,57,0}}, +/* 60159 */ {(13<<2)|2,{107,57,0}}, +/* 60160 */ {(13<<2)|2,{107,61,0}}, +/* 60161 */ {(13<<2)|2,{107,61,0}}, +/* 60162 */ {(13<<2)|2,{107,61,0}}, +/* 60163 */ {(13<<2)|2,{107,61,0}}, +/* 60164 */ {(13<<2)|2,{107,61,0}}, +/* 60165 */ {(13<<2)|2,{107,61,0}}, +/* 60166 */ {(13<<2)|2,{107,61,0}}, +/* 60167 */ {(13<<2)|2,{107,61,0}}, +/* 60168 */ {(13<<2)|2,{107,65,0}}, +/* 60169 */ {(13<<2)|2,{107,65,0}}, +/* 60170 */ {(13<<2)|2,{107,65,0}}, +/* 60171 */ {(13<<2)|2,{107,65,0}}, +/* 60172 */ {(13<<2)|2,{107,65,0}}, +/* 60173 */ {(13<<2)|2,{107,65,0}}, +/* 60174 */ {(13<<2)|2,{107,65,0}}, +/* 60175 */ {(13<<2)|2,{107,65,0}}, +/* 60176 */ {(13<<2)|2,{107,95,0}}, +/* 60177 */ {(13<<2)|2,{107,95,0}}, +/* 60178 */ {(13<<2)|2,{107,95,0}}, +/* 60179 */ {(13<<2)|2,{107,95,0}}, +/* 60180 */ {(13<<2)|2,{107,95,0}}, +/* 60181 */ {(13<<2)|2,{107,95,0}}, +/* 60182 */ {(13<<2)|2,{107,95,0}}, +/* 60183 */ {(13<<2)|2,{107,95,0}}, +/* 60184 */ {(13<<2)|2,{107,98,0}}, +/* 60185 */ {(13<<2)|2,{107,98,0}}, +/* 60186 */ {(13<<2)|2,{107,98,0}}, +/* 60187 */ {(13<<2)|2,{107,98,0}}, +/* 60188 */ {(13<<2)|2,{107,98,0}}, +/* 60189 */ {(13<<2)|2,{107,98,0}}, +/* 60190 */ {(13<<2)|2,{107,98,0}}, +/* 60191 */ {(13<<2)|2,{107,98,0}}, +/* 60192 */ {(13<<2)|2,{107,100,0}}, +/* 60193 */ {(13<<2)|2,{107,100,0}}, +/* 60194 */ {(13<<2)|2,{107,100,0}}, +/* 60195 */ {(13<<2)|2,{107,100,0}}, +/* 60196 */ {(13<<2)|2,{107,100,0}}, +/* 60197 */ {(13<<2)|2,{107,100,0}}, +/* 60198 */ {(13<<2)|2,{107,100,0}}, +/* 60199 */ {(13<<2)|2,{107,100,0}}, +/* 60200 */ {(13<<2)|2,{107,102,0}}, +/* 60201 */ {(13<<2)|2,{107,102,0}}, +/* 60202 */ {(13<<2)|2,{107,102,0}}, +/* 60203 */ {(13<<2)|2,{107,102,0}}, +/* 60204 */ {(13<<2)|2,{107,102,0}}, +/* 60205 */ {(13<<2)|2,{107,102,0}}, +/* 60206 */ {(13<<2)|2,{107,102,0}}, +/* 60207 */ {(13<<2)|2,{107,102,0}}, +/* 60208 */ {(13<<2)|2,{107,103,0}}, +/* 60209 */ {(13<<2)|2,{107,103,0}}, +/* 60210 */ {(13<<2)|2,{107,103,0}}, +/* 60211 */ {(13<<2)|2,{107,103,0}}, +/* 60212 */ {(13<<2)|2,{107,103,0}}, +/* 60213 */ {(13<<2)|2,{107,103,0}}, +/* 60214 */ {(13<<2)|2,{107,103,0}}, +/* 60215 */ {(13<<2)|2,{107,103,0}}, +/* 60216 */ {(13<<2)|2,{107,104,0}}, +/* 60217 */ {(13<<2)|2,{107,104,0}}, +/* 60218 */ {(13<<2)|2,{107,104,0}}, +/* 60219 */ {(13<<2)|2,{107,104,0}}, +/* 60220 */ {(13<<2)|2,{107,104,0}}, +/* 60221 */ {(13<<2)|2,{107,104,0}}, +/* 60222 */ {(13<<2)|2,{107,104,0}}, +/* 60223 */ {(13<<2)|2,{107,104,0}}, +/* 60224 */ {(13<<2)|2,{107,108,0}}, +/* 60225 */ {(13<<2)|2,{107,108,0}}, +/* 60226 */ {(13<<2)|2,{107,108,0}}, +/* 60227 */ {(13<<2)|2,{107,108,0}}, +/* 60228 */ {(13<<2)|2,{107,108,0}}, +/* 60229 */ {(13<<2)|2,{107,108,0}}, +/* 60230 */ {(13<<2)|2,{107,108,0}}, +/* 60231 */ {(13<<2)|2,{107,108,0}}, +/* 60232 */ {(13<<2)|2,{107,109,0}}, +/* 60233 */ {(13<<2)|2,{107,109,0}}, +/* 60234 */ {(13<<2)|2,{107,109,0}}, +/* 60235 */ {(13<<2)|2,{107,109,0}}, +/* 60236 */ {(13<<2)|2,{107,109,0}}, +/* 60237 */ {(13<<2)|2,{107,109,0}}, +/* 60238 */ {(13<<2)|2,{107,109,0}}, +/* 60239 */ {(13<<2)|2,{107,109,0}}, +/* 60240 */ {(13<<2)|2,{107,110,0}}, +/* 60241 */ {(13<<2)|2,{107,110,0}}, +/* 60242 */ {(13<<2)|2,{107,110,0}}, +/* 60243 */ {(13<<2)|2,{107,110,0}}, +/* 60244 */ {(13<<2)|2,{107,110,0}}, +/* 60245 */ {(13<<2)|2,{107,110,0}}, +/* 60246 */ {(13<<2)|2,{107,110,0}}, +/* 60247 */ {(13<<2)|2,{107,110,0}}, +/* 60248 */ {(13<<2)|2,{107,112,0}}, +/* 60249 */ {(13<<2)|2,{107,112,0}}, +/* 60250 */ {(13<<2)|2,{107,112,0}}, +/* 60251 */ {(13<<2)|2,{107,112,0}}, +/* 60252 */ {(13<<2)|2,{107,112,0}}, +/* 60253 */ {(13<<2)|2,{107,112,0}}, +/* 60254 */ {(13<<2)|2,{107,112,0}}, +/* 60255 */ {(13<<2)|2,{107,112,0}}, +/* 60256 */ {(13<<2)|2,{107,114,0}}, +/* 60257 */ {(13<<2)|2,{107,114,0}}, +/* 60258 */ {(13<<2)|2,{107,114,0}}, +/* 60259 */ {(13<<2)|2,{107,114,0}}, +/* 60260 */ {(13<<2)|2,{107,114,0}}, +/* 60261 */ {(13<<2)|2,{107,114,0}}, +/* 60262 */ {(13<<2)|2,{107,114,0}}, +/* 60263 */ {(13<<2)|2,{107,114,0}}, +/* 60264 */ {(13<<2)|2,{107,117,0}}, +/* 60265 */ {(13<<2)|2,{107,117,0}}, +/* 60266 */ {(13<<2)|2,{107,117,0}}, +/* 60267 */ {(13<<2)|2,{107,117,0}}, +/* 60268 */ {(13<<2)|2,{107,117,0}}, +/* 60269 */ {(13<<2)|2,{107,117,0}}, +/* 60270 */ {(13<<2)|2,{107,117,0}}, +/* 60271 */ {(13<<2)|2,{107,117,0}}, +/* 60272 */ {(14<<2)|2,{107,58,0}}, +/* 60273 */ {(14<<2)|2,{107,58,0}}, +/* 60274 */ {(14<<2)|2,{107,58,0}}, +/* 60275 */ {(14<<2)|2,{107,58,0}}, +/* 60276 */ {(14<<2)|2,{107,66,0}}, +/* 60277 */ {(14<<2)|2,{107,66,0}}, +/* 60278 */ {(14<<2)|2,{107,66,0}}, +/* 60279 */ {(14<<2)|2,{107,66,0}}, +/* 60280 */ {(14<<2)|2,{107,67,0}}, +/* 60281 */ {(14<<2)|2,{107,67,0}}, +/* 60282 */ {(14<<2)|2,{107,67,0}}, +/* 60283 */ {(14<<2)|2,{107,67,0}}, +/* 60284 */ {(14<<2)|2,{107,68,0}}, +/* 60285 */ {(14<<2)|2,{107,68,0}}, +/* 60286 */ {(14<<2)|2,{107,68,0}}, +/* 60287 */ {(14<<2)|2,{107,68,0}}, +/* 60288 */ {(14<<2)|2,{107,69,0}}, +/* 60289 */ {(14<<2)|2,{107,69,0}}, +/* 60290 */ {(14<<2)|2,{107,69,0}}, +/* 60291 */ {(14<<2)|2,{107,69,0}}, +/* 60292 */ {(14<<2)|2,{107,70,0}}, +/* 60293 */ {(14<<2)|2,{107,70,0}}, +/* 60294 */ {(14<<2)|2,{107,70,0}}, +/* 60295 */ {(14<<2)|2,{107,70,0}}, +/* 60296 */ {(14<<2)|2,{107,71,0}}, +/* 60297 */ {(14<<2)|2,{107,71,0}}, +/* 60298 */ {(14<<2)|2,{107,71,0}}, +/* 60299 */ {(14<<2)|2,{107,71,0}}, +/* 60300 */ {(14<<2)|2,{107,72,0}}, +/* 60301 */ {(14<<2)|2,{107,72,0}}, +/* 60302 */ {(14<<2)|2,{107,72,0}}, +/* 60303 */ {(14<<2)|2,{107,72,0}}, +/* 60304 */ {(14<<2)|2,{107,73,0}}, +/* 60305 */ {(14<<2)|2,{107,73,0}}, +/* 60306 */ {(14<<2)|2,{107,73,0}}, +/* 60307 */ {(14<<2)|2,{107,73,0}}, +/* 60308 */ {(14<<2)|2,{107,74,0}}, +/* 60309 */ {(14<<2)|2,{107,74,0}}, +/* 60310 */ {(14<<2)|2,{107,74,0}}, +/* 60311 */ {(14<<2)|2,{107,74,0}}, +/* 60312 */ {(14<<2)|2,{107,75,0}}, +/* 60313 */ {(14<<2)|2,{107,75,0}}, +/* 60314 */ {(14<<2)|2,{107,75,0}}, +/* 60315 */ {(14<<2)|2,{107,75,0}}, +/* 60316 */ {(14<<2)|2,{107,76,0}}, +/* 60317 */ {(14<<2)|2,{107,76,0}}, +/* 60318 */ {(14<<2)|2,{107,76,0}}, +/* 60319 */ {(14<<2)|2,{107,76,0}}, +/* 60320 */ {(14<<2)|2,{107,77,0}}, +/* 60321 */ {(14<<2)|2,{107,77,0}}, +/* 60322 */ {(14<<2)|2,{107,77,0}}, +/* 60323 */ {(14<<2)|2,{107,77,0}}, +/* 60324 */ {(14<<2)|2,{107,78,0}}, +/* 60325 */ {(14<<2)|2,{107,78,0}}, +/* 60326 */ {(14<<2)|2,{107,78,0}}, +/* 60327 */ {(14<<2)|2,{107,78,0}}, +/* 60328 */ {(14<<2)|2,{107,79,0}}, +/* 60329 */ {(14<<2)|2,{107,79,0}}, +/* 60330 */ {(14<<2)|2,{107,79,0}}, +/* 60331 */ {(14<<2)|2,{107,79,0}}, +/* 60332 */ {(14<<2)|2,{107,80,0}}, +/* 60333 */ {(14<<2)|2,{107,80,0}}, +/* 60334 */ {(14<<2)|2,{107,80,0}}, +/* 60335 */ {(14<<2)|2,{107,80,0}}, +/* 60336 */ {(14<<2)|2,{107,81,0}}, +/* 60337 */ {(14<<2)|2,{107,81,0}}, +/* 60338 */ {(14<<2)|2,{107,81,0}}, +/* 60339 */ {(14<<2)|2,{107,81,0}}, +/* 60340 */ {(14<<2)|2,{107,82,0}}, +/* 60341 */ {(14<<2)|2,{107,82,0}}, +/* 60342 */ {(14<<2)|2,{107,82,0}}, +/* 60343 */ {(14<<2)|2,{107,82,0}}, +/* 60344 */ {(14<<2)|2,{107,83,0}}, +/* 60345 */ {(14<<2)|2,{107,83,0}}, +/* 60346 */ {(14<<2)|2,{107,83,0}}, +/* 60347 */ {(14<<2)|2,{107,83,0}}, +/* 60348 */ {(14<<2)|2,{107,84,0}}, +/* 60349 */ {(14<<2)|2,{107,84,0}}, +/* 60350 */ {(14<<2)|2,{107,84,0}}, +/* 60351 */ {(14<<2)|2,{107,84,0}}, +/* 60352 */ {(14<<2)|2,{107,85,0}}, +/* 60353 */ {(14<<2)|2,{107,85,0}}, +/* 60354 */ {(14<<2)|2,{107,85,0}}, +/* 60355 */ {(14<<2)|2,{107,85,0}}, +/* 60356 */ {(14<<2)|2,{107,86,0}}, +/* 60357 */ {(14<<2)|2,{107,86,0}}, +/* 60358 */ {(14<<2)|2,{107,86,0}}, +/* 60359 */ {(14<<2)|2,{107,86,0}}, +/* 60360 */ {(14<<2)|2,{107,87,0}}, +/* 60361 */ {(14<<2)|2,{107,87,0}}, +/* 60362 */ {(14<<2)|2,{107,87,0}}, +/* 60363 */ {(14<<2)|2,{107,87,0}}, +/* 60364 */ {(14<<2)|2,{107,89,0}}, +/* 60365 */ {(14<<2)|2,{107,89,0}}, +/* 60366 */ {(14<<2)|2,{107,89,0}}, +/* 60367 */ {(14<<2)|2,{107,89,0}}, +/* 60368 */ {(14<<2)|2,{107,106,0}}, +/* 60369 */ {(14<<2)|2,{107,106,0}}, +/* 60370 */ {(14<<2)|2,{107,106,0}}, +/* 60371 */ {(14<<2)|2,{107,106,0}}, +/* 60372 */ {(14<<2)|2,{107,107,0}}, +/* 60373 */ {(14<<2)|2,{107,107,0}}, +/* 60374 */ {(14<<2)|2,{107,107,0}}, +/* 60375 */ {(14<<2)|2,{107,107,0}}, +/* 60376 */ {(14<<2)|2,{107,113,0}}, +/* 60377 */ {(14<<2)|2,{107,113,0}}, +/* 60378 */ {(14<<2)|2,{107,113,0}}, +/* 60379 */ {(14<<2)|2,{107,113,0}}, +/* 60380 */ {(14<<2)|2,{107,118,0}}, +/* 60381 */ {(14<<2)|2,{107,118,0}}, +/* 60382 */ {(14<<2)|2,{107,118,0}}, +/* 60383 */ {(14<<2)|2,{107,118,0}}, +/* 60384 */ {(14<<2)|2,{107,119,0}}, +/* 60385 */ {(14<<2)|2,{107,119,0}}, +/* 60386 */ {(14<<2)|2,{107,119,0}}, +/* 60387 */ {(14<<2)|2,{107,119,0}}, +/* 60388 */ {(14<<2)|2,{107,120,0}}, +/* 60389 */ {(14<<2)|2,{107,120,0}}, +/* 60390 */ {(14<<2)|2,{107,120,0}}, +/* 60391 */ {(14<<2)|2,{107,120,0}}, +/* 60392 */ {(14<<2)|2,{107,121,0}}, +/* 60393 */ {(14<<2)|2,{107,121,0}}, +/* 60394 */ {(14<<2)|2,{107,121,0}}, +/* 60395 */ {(14<<2)|2,{107,121,0}}, +/* 60396 */ {(14<<2)|2,{107,122,0}}, +/* 60397 */ {(14<<2)|2,{107,122,0}}, +/* 60398 */ {(14<<2)|2,{107,122,0}}, +/* 60399 */ {(14<<2)|2,{107,122,0}}, +/* 60400 */ {(15<<2)|2,{107,38,0}}, +/* 60401 */ {(15<<2)|2,{107,38,0}}, +/* 60402 */ {(15<<2)|2,{107,42,0}}, +/* 60403 */ {(15<<2)|2,{107,42,0}}, +/* 60404 */ {(15<<2)|2,{107,44,0}}, +/* 60405 */ {(15<<2)|2,{107,44,0}}, +/* 60406 */ {(15<<2)|2,{107,59,0}}, +/* 60407 */ {(15<<2)|2,{107,59,0}}, +/* 60408 */ {(15<<2)|2,{107,88,0}}, +/* 60409 */ {(15<<2)|2,{107,88,0}}, +/* 60410 */ {(15<<2)|2,{107,90,0}}, +/* 60411 */ {(15<<2)|2,{107,90,0}}, +/* 60412 */ {(7<<2)|1,{107,0,0}}, +/* 60413 */ {(7<<2)|1,{107,0,0}}, +/* 60414 */ {(7<<2)|1,{107,0,0}}, +/* 60415 */ {(7<<2)|1,{107,0,0}}, +/* 60416 */ {(12<<2)|2,{113,48,0}}, +/* 60417 */ {(12<<2)|2,{113,48,0}}, +/* 60418 */ {(12<<2)|2,{113,48,0}}, +/* 60419 */ {(12<<2)|2,{113,48,0}}, +/* 60420 */ {(12<<2)|2,{113,48,0}}, +/* 60421 */ {(12<<2)|2,{113,48,0}}, +/* 60422 */ {(12<<2)|2,{113,48,0}}, +/* 60423 */ {(12<<2)|2,{113,48,0}}, +/* 60424 */ {(12<<2)|2,{113,48,0}}, +/* 60425 */ {(12<<2)|2,{113,48,0}}, +/* 60426 */ {(12<<2)|2,{113,48,0}}, +/* 60427 */ {(12<<2)|2,{113,48,0}}, +/* 60428 */ {(12<<2)|2,{113,48,0}}, +/* 60429 */ {(12<<2)|2,{113,48,0}}, +/* 60430 */ {(12<<2)|2,{113,48,0}}, +/* 60431 */ {(12<<2)|2,{113,48,0}}, +/* 60432 */ {(12<<2)|2,{113,49,0}}, +/* 60433 */ {(12<<2)|2,{113,49,0}}, +/* 60434 */ {(12<<2)|2,{113,49,0}}, +/* 60435 */ {(12<<2)|2,{113,49,0}}, +/* 60436 */ {(12<<2)|2,{113,49,0}}, +/* 60437 */ {(12<<2)|2,{113,49,0}}, +/* 60438 */ {(12<<2)|2,{113,49,0}}, +/* 60439 */ {(12<<2)|2,{113,49,0}}, +/* 60440 */ {(12<<2)|2,{113,49,0}}, +/* 60441 */ {(12<<2)|2,{113,49,0}}, +/* 60442 */ {(12<<2)|2,{113,49,0}}, +/* 60443 */ {(12<<2)|2,{113,49,0}}, +/* 60444 */ {(12<<2)|2,{113,49,0}}, +/* 60445 */ {(12<<2)|2,{113,49,0}}, +/* 60446 */ {(12<<2)|2,{113,49,0}}, +/* 60447 */ {(12<<2)|2,{113,49,0}}, +/* 60448 */ {(12<<2)|2,{113,50,0}}, +/* 60449 */ {(12<<2)|2,{113,50,0}}, +/* 60450 */ {(12<<2)|2,{113,50,0}}, +/* 60451 */ {(12<<2)|2,{113,50,0}}, +/* 60452 */ {(12<<2)|2,{113,50,0}}, +/* 60453 */ {(12<<2)|2,{113,50,0}}, +/* 60454 */ {(12<<2)|2,{113,50,0}}, +/* 60455 */ {(12<<2)|2,{113,50,0}}, +/* 60456 */ {(12<<2)|2,{113,50,0}}, +/* 60457 */ {(12<<2)|2,{113,50,0}}, +/* 60458 */ {(12<<2)|2,{113,50,0}}, +/* 60459 */ {(12<<2)|2,{113,50,0}}, +/* 60460 */ {(12<<2)|2,{113,50,0}}, +/* 60461 */ {(12<<2)|2,{113,50,0}}, +/* 60462 */ {(12<<2)|2,{113,50,0}}, +/* 60463 */ {(12<<2)|2,{113,50,0}}, +/* 60464 */ {(12<<2)|2,{113,97,0}}, +/* 60465 */ {(12<<2)|2,{113,97,0}}, +/* 60466 */ {(12<<2)|2,{113,97,0}}, +/* 60467 */ {(12<<2)|2,{113,97,0}}, +/* 60468 */ {(12<<2)|2,{113,97,0}}, +/* 60469 */ {(12<<2)|2,{113,97,0}}, +/* 60470 */ {(12<<2)|2,{113,97,0}}, +/* 60471 */ {(12<<2)|2,{113,97,0}}, +/* 60472 */ {(12<<2)|2,{113,97,0}}, +/* 60473 */ {(12<<2)|2,{113,97,0}}, +/* 60474 */ {(12<<2)|2,{113,97,0}}, +/* 60475 */ {(12<<2)|2,{113,97,0}}, +/* 60476 */ {(12<<2)|2,{113,97,0}}, +/* 60477 */ {(12<<2)|2,{113,97,0}}, +/* 60478 */ {(12<<2)|2,{113,97,0}}, +/* 60479 */ {(12<<2)|2,{113,97,0}}, +/* 60480 */ {(12<<2)|2,{113,99,0}}, +/* 60481 */ {(12<<2)|2,{113,99,0}}, +/* 60482 */ {(12<<2)|2,{113,99,0}}, +/* 60483 */ {(12<<2)|2,{113,99,0}}, +/* 60484 */ {(12<<2)|2,{113,99,0}}, +/* 60485 */ {(12<<2)|2,{113,99,0}}, +/* 60486 */ {(12<<2)|2,{113,99,0}}, +/* 60487 */ {(12<<2)|2,{113,99,0}}, +/* 60488 */ {(12<<2)|2,{113,99,0}}, +/* 60489 */ {(12<<2)|2,{113,99,0}}, +/* 60490 */ {(12<<2)|2,{113,99,0}}, +/* 60491 */ {(12<<2)|2,{113,99,0}}, +/* 60492 */ {(12<<2)|2,{113,99,0}}, +/* 60493 */ {(12<<2)|2,{113,99,0}}, +/* 60494 */ {(12<<2)|2,{113,99,0}}, +/* 60495 */ {(12<<2)|2,{113,99,0}}, +/* 60496 */ {(12<<2)|2,{113,101,0}}, +/* 60497 */ {(12<<2)|2,{113,101,0}}, +/* 60498 */ {(12<<2)|2,{113,101,0}}, +/* 60499 */ {(12<<2)|2,{113,101,0}}, +/* 60500 */ {(12<<2)|2,{113,101,0}}, +/* 60501 */ {(12<<2)|2,{113,101,0}}, +/* 60502 */ {(12<<2)|2,{113,101,0}}, +/* 60503 */ {(12<<2)|2,{113,101,0}}, +/* 60504 */ {(12<<2)|2,{113,101,0}}, +/* 60505 */ {(12<<2)|2,{113,101,0}}, +/* 60506 */ {(12<<2)|2,{113,101,0}}, +/* 60507 */ {(12<<2)|2,{113,101,0}}, +/* 60508 */ {(12<<2)|2,{113,101,0}}, +/* 60509 */ {(12<<2)|2,{113,101,0}}, +/* 60510 */ {(12<<2)|2,{113,101,0}}, +/* 60511 */ {(12<<2)|2,{113,101,0}}, +/* 60512 */ {(12<<2)|2,{113,105,0}}, +/* 60513 */ {(12<<2)|2,{113,105,0}}, +/* 60514 */ {(12<<2)|2,{113,105,0}}, +/* 60515 */ {(12<<2)|2,{113,105,0}}, +/* 60516 */ {(12<<2)|2,{113,105,0}}, +/* 60517 */ {(12<<2)|2,{113,105,0}}, +/* 60518 */ {(12<<2)|2,{113,105,0}}, +/* 60519 */ {(12<<2)|2,{113,105,0}}, +/* 60520 */ {(12<<2)|2,{113,105,0}}, +/* 60521 */ {(12<<2)|2,{113,105,0}}, +/* 60522 */ {(12<<2)|2,{113,105,0}}, +/* 60523 */ {(12<<2)|2,{113,105,0}}, +/* 60524 */ {(12<<2)|2,{113,105,0}}, +/* 60525 */ {(12<<2)|2,{113,105,0}}, +/* 60526 */ {(12<<2)|2,{113,105,0}}, +/* 60527 */ {(12<<2)|2,{113,105,0}}, +/* 60528 */ {(12<<2)|2,{113,111,0}}, +/* 60529 */ {(12<<2)|2,{113,111,0}}, +/* 60530 */ {(12<<2)|2,{113,111,0}}, +/* 60531 */ {(12<<2)|2,{113,111,0}}, +/* 60532 */ {(12<<2)|2,{113,111,0}}, +/* 60533 */ {(12<<2)|2,{113,111,0}}, +/* 60534 */ {(12<<2)|2,{113,111,0}}, +/* 60535 */ {(12<<2)|2,{113,111,0}}, +/* 60536 */ {(12<<2)|2,{113,111,0}}, +/* 60537 */ {(12<<2)|2,{113,111,0}}, +/* 60538 */ {(12<<2)|2,{113,111,0}}, +/* 60539 */ {(12<<2)|2,{113,111,0}}, +/* 60540 */ {(12<<2)|2,{113,111,0}}, +/* 60541 */ {(12<<2)|2,{113,111,0}}, +/* 60542 */ {(12<<2)|2,{113,111,0}}, +/* 60543 */ {(12<<2)|2,{113,111,0}}, +/* 60544 */ {(12<<2)|2,{113,115,0}}, +/* 60545 */ {(12<<2)|2,{113,115,0}}, +/* 60546 */ {(12<<2)|2,{113,115,0}}, +/* 60547 */ {(12<<2)|2,{113,115,0}}, +/* 60548 */ {(12<<2)|2,{113,115,0}}, +/* 60549 */ {(12<<2)|2,{113,115,0}}, +/* 60550 */ {(12<<2)|2,{113,115,0}}, +/* 60551 */ {(12<<2)|2,{113,115,0}}, +/* 60552 */ {(12<<2)|2,{113,115,0}}, +/* 60553 */ {(12<<2)|2,{113,115,0}}, +/* 60554 */ {(12<<2)|2,{113,115,0}}, +/* 60555 */ {(12<<2)|2,{113,115,0}}, +/* 60556 */ {(12<<2)|2,{113,115,0}}, +/* 60557 */ {(12<<2)|2,{113,115,0}}, +/* 60558 */ {(12<<2)|2,{113,115,0}}, +/* 60559 */ {(12<<2)|2,{113,115,0}}, +/* 60560 */ {(12<<2)|2,{113,116,0}}, +/* 60561 */ {(12<<2)|2,{113,116,0}}, +/* 60562 */ {(12<<2)|2,{113,116,0}}, +/* 60563 */ {(12<<2)|2,{113,116,0}}, +/* 60564 */ {(12<<2)|2,{113,116,0}}, +/* 60565 */ {(12<<2)|2,{113,116,0}}, +/* 60566 */ {(12<<2)|2,{113,116,0}}, +/* 60567 */ {(12<<2)|2,{113,116,0}}, +/* 60568 */ {(12<<2)|2,{113,116,0}}, +/* 60569 */ {(12<<2)|2,{113,116,0}}, +/* 60570 */ {(12<<2)|2,{113,116,0}}, +/* 60571 */ {(12<<2)|2,{113,116,0}}, +/* 60572 */ {(12<<2)|2,{113,116,0}}, +/* 60573 */ {(12<<2)|2,{113,116,0}}, +/* 60574 */ {(12<<2)|2,{113,116,0}}, +/* 60575 */ {(12<<2)|2,{113,116,0}}, +/* 60576 */ {(13<<2)|2,{113,32,0}}, +/* 60577 */ {(13<<2)|2,{113,32,0}}, +/* 60578 */ {(13<<2)|2,{113,32,0}}, +/* 60579 */ {(13<<2)|2,{113,32,0}}, +/* 60580 */ {(13<<2)|2,{113,32,0}}, +/* 60581 */ {(13<<2)|2,{113,32,0}}, +/* 60582 */ {(13<<2)|2,{113,32,0}}, +/* 60583 */ {(13<<2)|2,{113,32,0}}, +/* 60584 */ {(13<<2)|2,{113,37,0}}, +/* 60585 */ {(13<<2)|2,{113,37,0}}, +/* 60586 */ {(13<<2)|2,{113,37,0}}, +/* 60587 */ {(13<<2)|2,{113,37,0}}, +/* 60588 */ {(13<<2)|2,{113,37,0}}, +/* 60589 */ {(13<<2)|2,{113,37,0}}, +/* 60590 */ {(13<<2)|2,{113,37,0}}, +/* 60591 */ {(13<<2)|2,{113,37,0}}, +/* 60592 */ {(13<<2)|2,{113,45,0}}, +/* 60593 */ {(13<<2)|2,{113,45,0}}, +/* 60594 */ {(13<<2)|2,{113,45,0}}, +/* 60595 */ {(13<<2)|2,{113,45,0}}, +/* 60596 */ {(13<<2)|2,{113,45,0}}, +/* 60597 */ {(13<<2)|2,{113,45,0}}, +/* 60598 */ {(13<<2)|2,{113,45,0}}, +/* 60599 */ {(13<<2)|2,{113,45,0}}, +/* 60600 */ {(13<<2)|2,{113,46,0}}, +/* 60601 */ {(13<<2)|2,{113,46,0}}, +/* 60602 */ {(13<<2)|2,{113,46,0}}, +/* 60603 */ {(13<<2)|2,{113,46,0}}, +/* 60604 */ {(13<<2)|2,{113,46,0}}, +/* 60605 */ {(13<<2)|2,{113,46,0}}, +/* 60606 */ {(13<<2)|2,{113,46,0}}, +/* 60607 */ {(13<<2)|2,{113,46,0}}, +/* 60608 */ {(13<<2)|2,{113,47,0}}, +/* 60609 */ {(13<<2)|2,{113,47,0}}, +/* 60610 */ {(13<<2)|2,{113,47,0}}, +/* 60611 */ {(13<<2)|2,{113,47,0}}, +/* 60612 */ {(13<<2)|2,{113,47,0}}, +/* 60613 */ {(13<<2)|2,{113,47,0}}, +/* 60614 */ {(13<<2)|2,{113,47,0}}, +/* 60615 */ {(13<<2)|2,{113,47,0}}, +/* 60616 */ {(13<<2)|2,{113,51,0}}, +/* 60617 */ {(13<<2)|2,{113,51,0}}, +/* 60618 */ {(13<<2)|2,{113,51,0}}, +/* 60619 */ {(13<<2)|2,{113,51,0}}, +/* 60620 */ {(13<<2)|2,{113,51,0}}, +/* 60621 */ {(13<<2)|2,{113,51,0}}, +/* 60622 */ {(13<<2)|2,{113,51,0}}, +/* 60623 */ {(13<<2)|2,{113,51,0}}, +/* 60624 */ {(13<<2)|2,{113,52,0}}, +/* 60625 */ {(13<<2)|2,{113,52,0}}, +/* 60626 */ {(13<<2)|2,{113,52,0}}, +/* 60627 */ {(13<<2)|2,{113,52,0}}, +/* 60628 */ {(13<<2)|2,{113,52,0}}, +/* 60629 */ {(13<<2)|2,{113,52,0}}, +/* 60630 */ {(13<<2)|2,{113,52,0}}, +/* 60631 */ {(13<<2)|2,{113,52,0}}, +/* 60632 */ {(13<<2)|2,{113,53,0}}, +/* 60633 */ {(13<<2)|2,{113,53,0}}, +/* 60634 */ {(13<<2)|2,{113,53,0}}, +/* 60635 */ {(13<<2)|2,{113,53,0}}, +/* 60636 */ {(13<<2)|2,{113,53,0}}, +/* 60637 */ {(13<<2)|2,{113,53,0}}, +/* 60638 */ {(13<<2)|2,{113,53,0}}, +/* 60639 */ {(13<<2)|2,{113,53,0}}, +/* 60640 */ {(13<<2)|2,{113,54,0}}, +/* 60641 */ {(13<<2)|2,{113,54,0}}, +/* 60642 */ {(13<<2)|2,{113,54,0}}, +/* 60643 */ {(13<<2)|2,{113,54,0}}, +/* 60644 */ {(13<<2)|2,{113,54,0}}, +/* 60645 */ {(13<<2)|2,{113,54,0}}, +/* 60646 */ {(13<<2)|2,{113,54,0}}, +/* 60647 */ {(13<<2)|2,{113,54,0}}, +/* 60648 */ {(13<<2)|2,{113,55,0}}, +/* 60649 */ {(13<<2)|2,{113,55,0}}, +/* 60650 */ {(13<<2)|2,{113,55,0}}, +/* 60651 */ {(13<<2)|2,{113,55,0}}, +/* 60652 */ {(13<<2)|2,{113,55,0}}, +/* 60653 */ {(13<<2)|2,{113,55,0}}, +/* 60654 */ {(13<<2)|2,{113,55,0}}, +/* 60655 */ {(13<<2)|2,{113,55,0}}, +/* 60656 */ {(13<<2)|2,{113,56,0}}, +/* 60657 */ {(13<<2)|2,{113,56,0}}, +/* 60658 */ {(13<<2)|2,{113,56,0}}, +/* 60659 */ {(13<<2)|2,{113,56,0}}, +/* 60660 */ {(13<<2)|2,{113,56,0}}, +/* 60661 */ {(13<<2)|2,{113,56,0}}, +/* 60662 */ {(13<<2)|2,{113,56,0}}, +/* 60663 */ {(13<<2)|2,{113,56,0}}, +/* 60664 */ {(13<<2)|2,{113,57,0}}, +/* 60665 */ {(13<<2)|2,{113,57,0}}, +/* 60666 */ {(13<<2)|2,{113,57,0}}, +/* 60667 */ {(13<<2)|2,{113,57,0}}, +/* 60668 */ {(13<<2)|2,{113,57,0}}, +/* 60669 */ {(13<<2)|2,{113,57,0}}, +/* 60670 */ {(13<<2)|2,{113,57,0}}, +/* 60671 */ {(13<<2)|2,{113,57,0}}, +/* 60672 */ {(13<<2)|2,{113,61,0}}, +/* 60673 */ {(13<<2)|2,{113,61,0}}, +/* 60674 */ {(13<<2)|2,{113,61,0}}, +/* 60675 */ {(13<<2)|2,{113,61,0}}, +/* 60676 */ {(13<<2)|2,{113,61,0}}, +/* 60677 */ {(13<<2)|2,{113,61,0}}, +/* 60678 */ {(13<<2)|2,{113,61,0}}, +/* 60679 */ {(13<<2)|2,{113,61,0}}, +/* 60680 */ {(13<<2)|2,{113,65,0}}, +/* 60681 */ {(13<<2)|2,{113,65,0}}, +/* 60682 */ {(13<<2)|2,{113,65,0}}, +/* 60683 */ {(13<<2)|2,{113,65,0}}, +/* 60684 */ {(13<<2)|2,{113,65,0}}, +/* 60685 */ {(13<<2)|2,{113,65,0}}, +/* 60686 */ {(13<<2)|2,{113,65,0}}, +/* 60687 */ {(13<<2)|2,{113,65,0}}, +/* 60688 */ {(13<<2)|2,{113,95,0}}, +/* 60689 */ {(13<<2)|2,{113,95,0}}, +/* 60690 */ {(13<<2)|2,{113,95,0}}, +/* 60691 */ {(13<<2)|2,{113,95,0}}, +/* 60692 */ {(13<<2)|2,{113,95,0}}, +/* 60693 */ {(13<<2)|2,{113,95,0}}, +/* 60694 */ {(13<<2)|2,{113,95,0}}, +/* 60695 */ {(13<<2)|2,{113,95,0}}, +/* 60696 */ {(13<<2)|2,{113,98,0}}, +/* 60697 */ {(13<<2)|2,{113,98,0}}, +/* 60698 */ {(13<<2)|2,{113,98,0}}, +/* 60699 */ {(13<<2)|2,{113,98,0}}, +/* 60700 */ {(13<<2)|2,{113,98,0}}, +/* 60701 */ {(13<<2)|2,{113,98,0}}, +/* 60702 */ {(13<<2)|2,{113,98,0}}, +/* 60703 */ {(13<<2)|2,{113,98,0}}, +/* 60704 */ {(13<<2)|2,{113,100,0}}, +/* 60705 */ {(13<<2)|2,{113,100,0}}, +/* 60706 */ {(13<<2)|2,{113,100,0}}, +/* 60707 */ {(13<<2)|2,{113,100,0}}, +/* 60708 */ {(13<<2)|2,{113,100,0}}, +/* 60709 */ {(13<<2)|2,{113,100,0}}, +/* 60710 */ {(13<<2)|2,{113,100,0}}, +/* 60711 */ {(13<<2)|2,{113,100,0}}, +/* 60712 */ {(13<<2)|2,{113,102,0}}, +/* 60713 */ {(13<<2)|2,{113,102,0}}, +/* 60714 */ {(13<<2)|2,{113,102,0}}, +/* 60715 */ {(13<<2)|2,{113,102,0}}, +/* 60716 */ {(13<<2)|2,{113,102,0}}, +/* 60717 */ {(13<<2)|2,{113,102,0}}, +/* 60718 */ {(13<<2)|2,{113,102,0}}, +/* 60719 */ {(13<<2)|2,{113,102,0}}, +/* 60720 */ {(13<<2)|2,{113,103,0}}, +/* 60721 */ {(13<<2)|2,{113,103,0}}, +/* 60722 */ {(13<<2)|2,{113,103,0}}, +/* 60723 */ {(13<<2)|2,{113,103,0}}, +/* 60724 */ {(13<<2)|2,{113,103,0}}, +/* 60725 */ {(13<<2)|2,{113,103,0}}, +/* 60726 */ {(13<<2)|2,{113,103,0}}, +/* 60727 */ {(13<<2)|2,{113,103,0}}, +/* 60728 */ {(13<<2)|2,{113,104,0}}, +/* 60729 */ {(13<<2)|2,{113,104,0}}, +/* 60730 */ {(13<<2)|2,{113,104,0}}, +/* 60731 */ {(13<<2)|2,{113,104,0}}, +/* 60732 */ {(13<<2)|2,{113,104,0}}, +/* 60733 */ {(13<<2)|2,{113,104,0}}, +/* 60734 */ {(13<<2)|2,{113,104,0}}, +/* 60735 */ {(13<<2)|2,{113,104,0}}, +/* 60736 */ {(13<<2)|2,{113,108,0}}, +/* 60737 */ {(13<<2)|2,{113,108,0}}, +/* 60738 */ {(13<<2)|2,{113,108,0}}, +/* 60739 */ {(13<<2)|2,{113,108,0}}, +/* 60740 */ {(13<<2)|2,{113,108,0}}, +/* 60741 */ {(13<<2)|2,{113,108,0}}, +/* 60742 */ {(13<<2)|2,{113,108,0}}, +/* 60743 */ {(13<<2)|2,{113,108,0}}, +/* 60744 */ {(13<<2)|2,{113,109,0}}, +/* 60745 */ {(13<<2)|2,{113,109,0}}, +/* 60746 */ {(13<<2)|2,{113,109,0}}, +/* 60747 */ {(13<<2)|2,{113,109,0}}, +/* 60748 */ {(13<<2)|2,{113,109,0}}, +/* 60749 */ {(13<<2)|2,{113,109,0}}, +/* 60750 */ {(13<<2)|2,{113,109,0}}, +/* 60751 */ {(13<<2)|2,{113,109,0}}, +/* 60752 */ {(13<<2)|2,{113,110,0}}, +/* 60753 */ {(13<<2)|2,{113,110,0}}, +/* 60754 */ {(13<<2)|2,{113,110,0}}, +/* 60755 */ {(13<<2)|2,{113,110,0}}, +/* 60756 */ {(13<<2)|2,{113,110,0}}, +/* 60757 */ {(13<<2)|2,{113,110,0}}, +/* 60758 */ {(13<<2)|2,{113,110,0}}, +/* 60759 */ {(13<<2)|2,{113,110,0}}, +/* 60760 */ {(13<<2)|2,{113,112,0}}, +/* 60761 */ {(13<<2)|2,{113,112,0}}, +/* 60762 */ {(13<<2)|2,{113,112,0}}, +/* 60763 */ {(13<<2)|2,{113,112,0}}, +/* 60764 */ {(13<<2)|2,{113,112,0}}, +/* 60765 */ {(13<<2)|2,{113,112,0}}, +/* 60766 */ {(13<<2)|2,{113,112,0}}, +/* 60767 */ {(13<<2)|2,{113,112,0}}, +/* 60768 */ {(13<<2)|2,{113,114,0}}, +/* 60769 */ {(13<<2)|2,{113,114,0}}, +/* 60770 */ {(13<<2)|2,{113,114,0}}, +/* 60771 */ {(13<<2)|2,{113,114,0}}, +/* 60772 */ {(13<<2)|2,{113,114,0}}, +/* 60773 */ {(13<<2)|2,{113,114,0}}, +/* 60774 */ {(13<<2)|2,{113,114,0}}, +/* 60775 */ {(13<<2)|2,{113,114,0}}, +/* 60776 */ {(13<<2)|2,{113,117,0}}, +/* 60777 */ {(13<<2)|2,{113,117,0}}, +/* 60778 */ {(13<<2)|2,{113,117,0}}, +/* 60779 */ {(13<<2)|2,{113,117,0}}, +/* 60780 */ {(13<<2)|2,{113,117,0}}, +/* 60781 */ {(13<<2)|2,{113,117,0}}, +/* 60782 */ {(13<<2)|2,{113,117,0}}, +/* 60783 */ {(13<<2)|2,{113,117,0}}, +/* 60784 */ {(14<<2)|2,{113,58,0}}, +/* 60785 */ {(14<<2)|2,{113,58,0}}, +/* 60786 */ {(14<<2)|2,{113,58,0}}, +/* 60787 */ {(14<<2)|2,{113,58,0}}, +/* 60788 */ {(14<<2)|2,{113,66,0}}, +/* 60789 */ {(14<<2)|2,{113,66,0}}, +/* 60790 */ {(14<<2)|2,{113,66,0}}, +/* 60791 */ {(14<<2)|2,{113,66,0}}, +/* 60792 */ {(14<<2)|2,{113,67,0}}, +/* 60793 */ {(14<<2)|2,{113,67,0}}, +/* 60794 */ {(14<<2)|2,{113,67,0}}, +/* 60795 */ {(14<<2)|2,{113,67,0}}, +/* 60796 */ {(14<<2)|2,{113,68,0}}, +/* 60797 */ {(14<<2)|2,{113,68,0}}, +/* 60798 */ {(14<<2)|2,{113,68,0}}, +/* 60799 */ {(14<<2)|2,{113,68,0}}, +/* 60800 */ {(14<<2)|2,{113,69,0}}, +/* 60801 */ {(14<<2)|2,{113,69,0}}, +/* 60802 */ {(14<<2)|2,{113,69,0}}, +/* 60803 */ {(14<<2)|2,{113,69,0}}, +/* 60804 */ {(14<<2)|2,{113,70,0}}, +/* 60805 */ {(14<<2)|2,{113,70,0}}, +/* 60806 */ {(14<<2)|2,{113,70,0}}, +/* 60807 */ {(14<<2)|2,{113,70,0}}, +/* 60808 */ {(14<<2)|2,{113,71,0}}, +/* 60809 */ {(14<<2)|2,{113,71,0}}, +/* 60810 */ {(14<<2)|2,{113,71,0}}, +/* 60811 */ {(14<<2)|2,{113,71,0}}, +/* 60812 */ {(14<<2)|2,{113,72,0}}, +/* 60813 */ {(14<<2)|2,{113,72,0}}, +/* 60814 */ {(14<<2)|2,{113,72,0}}, +/* 60815 */ {(14<<2)|2,{113,72,0}}, +/* 60816 */ {(14<<2)|2,{113,73,0}}, +/* 60817 */ {(14<<2)|2,{113,73,0}}, +/* 60818 */ {(14<<2)|2,{113,73,0}}, +/* 60819 */ {(14<<2)|2,{113,73,0}}, +/* 60820 */ {(14<<2)|2,{113,74,0}}, +/* 60821 */ {(14<<2)|2,{113,74,0}}, +/* 60822 */ {(14<<2)|2,{113,74,0}}, +/* 60823 */ {(14<<2)|2,{113,74,0}}, +/* 60824 */ {(14<<2)|2,{113,75,0}}, +/* 60825 */ {(14<<2)|2,{113,75,0}}, +/* 60826 */ {(14<<2)|2,{113,75,0}}, +/* 60827 */ {(14<<2)|2,{113,75,0}}, +/* 60828 */ {(14<<2)|2,{113,76,0}}, +/* 60829 */ {(14<<2)|2,{113,76,0}}, +/* 60830 */ {(14<<2)|2,{113,76,0}}, +/* 60831 */ {(14<<2)|2,{113,76,0}}, +/* 60832 */ {(14<<2)|2,{113,77,0}}, +/* 60833 */ {(14<<2)|2,{113,77,0}}, +/* 60834 */ {(14<<2)|2,{113,77,0}}, +/* 60835 */ {(14<<2)|2,{113,77,0}}, +/* 60836 */ {(14<<2)|2,{113,78,0}}, +/* 60837 */ {(14<<2)|2,{113,78,0}}, +/* 60838 */ {(14<<2)|2,{113,78,0}}, +/* 60839 */ {(14<<2)|2,{113,78,0}}, +/* 60840 */ {(14<<2)|2,{113,79,0}}, +/* 60841 */ {(14<<2)|2,{113,79,0}}, +/* 60842 */ {(14<<2)|2,{113,79,0}}, +/* 60843 */ {(14<<2)|2,{113,79,0}}, +/* 60844 */ {(14<<2)|2,{113,80,0}}, +/* 60845 */ {(14<<2)|2,{113,80,0}}, +/* 60846 */ {(14<<2)|2,{113,80,0}}, +/* 60847 */ {(14<<2)|2,{113,80,0}}, +/* 60848 */ {(14<<2)|2,{113,81,0}}, +/* 60849 */ {(14<<2)|2,{113,81,0}}, +/* 60850 */ {(14<<2)|2,{113,81,0}}, +/* 60851 */ {(14<<2)|2,{113,81,0}}, +/* 60852 */ {(14<<2)|2,{113,82,0}}, +/* 60853 */ {(14<<2)|2,{113,82,0}}, +/* 60854 */ {(14<<2)|2,{113,82,0}}, +/* 60855 */ {(14<<2)|2,{113,82,0}}, +/* 60856 */ {(14<<2)|2,{113,83,0}}, +/* 60857 */ {(14<<2)|2,{113,83,0}}, +/* 60858 */ {(14<<2)|2,{113,83,0}}, +/* 60859 */ {(14<<2)|2,{113,83,0}}, +/* 60860 */ {(14<<2)|2,{113,84,0}}, +/* 60861 */ {(14<<2)|2,{113,84,0}}, +/* 60862 */ {(14<<2)|2,{113,84,0}}, +/* 60863 */ {(14<<2)|2,{113,84,0}}, +/* 60864 */ {(14<<2)|2,{113,85,0}}, +/* 60865 */ {(14<<2)|2,{113,85,0}}, +/* 60866 */ {(14<<2)|2,{113,85,0}}, +/* 60867 */ {(14<<2)|2,{113,85,0}}, +/* 60868 */ {(14<<2)|2,{113,86,0}}, +/* 60869 */ {(14<<2)|2,{113,86,0}}, +/* 60870 */ {(14<<2)|2,{113,86,0}}, +/* 60871 */ {(14<<2)|2,{113,86,0}}, +/* 60872 */ {(14<<2)|2,{113,87,0}}, +/* 60873 */ {(14<<2)|2,{113,87,0}}, +/* 60874 */ {(14<<2)|2,{113,87,0}}, +/* 60875 */ {(14<<2)|2,{113,87,0}}, +/* 60876 */ {(14<<2)|2,{113,89,0}}, +/* 60877 */ {(14<<2)|2,{113,89,0}}, +/* 60878 */ {(14<<2)|2,{113,89,0}}, +/* 60879 */ {(14<<2)|2,{113,89,0}}, +/* 60880 */ {(14<<2)|2,{113,106,0}}, +/* 60881 */ {(14<<2)|2,{113,106,0}}, +/* 60882 */ {(14<<2)|2,{113,106,0}}, +/* 60883 */ {(14<<2)|2,{113,106,0}}, +/* 60884 */ {(14<<2)|2,{113,107,0}}, +/* 60885 */ {(14<<2)|2,{113,107,0}}, +/* 60886 */ {(14<<2)|2,{113,107,0}}, +/* 60887 */ {(14<<2)|2,{113,107,0}}, +/* 60888 */ {(14<<2)|2,{113,113,0}}, +/* 60889 */ {(14<<2)|2,{113,113,0}}, +/* 60890 */ {(14<<2)|2,{113,113,0}}, +/* 60891 */ {(14<<2)|2,{113,113,0}}, +/* 60892 */ {(14<<2)|2,{113,118,0}}, +/* 60893 */ {(14<<2)|2,{113,118,0}}, +/* 60894 */ {(14<<2)|2,{113,118,0}}, +/* 60895 */ {(14<<2)|2,{113,118,0}}, +/* 60896 */ {(14<<2)|2,{113,119,0}}, +/* 60897 */ {(14<<2)|2,{113,119,0}}, +/* 60898 */ {(14<<2)|2,{113,119,0}}, +/* 60899 */ {(14<<2)|2,{113,119,0}}, +/* 60900 */ {(14<<2)|2,{113,120,0}}, +/* 60901 */ {(14<<2)|2,{113,120,0}}, +/* 60902 */ {(14<<2)|2,{113,120,0}}, +/* 60903 */ {(14<<2)|2,{113,120,0}}, +/* 60904 */ {(14<<2)|2,{113,121,0}}, +/* 60905 */ {(14<<2)|2,{113,121,0}}, +/* 60906 */ {(14<<2)|2,{113,121,0}}, +/* 60907 */ {(14<<2)|2,{113,121,0}}, +/* 60908 */ {(14<<2)|2,{113,122,0}}, +/* 60909 */ {(14<<2)|2,{113,122,0}}, +/* 60910 */ {(14<<2)|2,{113,122,0}}, +/* 60911 */ {(14<<2)|2,{113,122,0}}, +/* 60912 */ {(15<<2)|2,{113,38,0}}, +/* 60913 */ {(15<<2)|2,{113,38,0}}, +/* 60914 */ {(15<<2)|2,{113,42,0}}, +/* 60915 */ {(15<<2)|2,{113,42,0}}, +/* 60916 */ {(15<<2)|2,{113,44,0}}, +/* 60917 */ {(15<<2)|2,{113,44,0}}, +/* 60918 */ {(15<<2)|2,{113,59,0}}, +/* 60919 */ {(15<<2)|2,{113,59,0}}, +/* 60920 */ {(15<<2)|2,{113,88,0}}, +/* 60921 */ {(15<<2)|2,{113,88,0}}, +/* 60922 */ {(15<<2)|2,{113,90,0}}, +/* 60923 */ {(15<<2)|2,{113,90,0}}, +/* 60924 */ {(7<<2)|1,{113,0,0}}, +/* 60925 */ {(7<<2)|1,{113,0,0}}, +/* 60926 */ {(7<<2)|1,{113,0,0}}, +/* 60927 */ {(7<<2)|1,{113,0,0}}, +/* 60928 */ {(12<<2)|2,{118,48,0}}, +/* 60929 */ {(12<<2)|2,{118,48,0}}, +/* 60930 */ {(12<<2)|2,{118,48,0}}, +/* 60931 */ {(12<<2)|2,{118,48,0}}, +/* 60932 */ {(12<<2)|2,{118,48,0}}, +/* 60933 */ {(12<<2)|2,{118,48,0}}, +/* 60934 */ {(12<<2)|2,{118,48,0}}, +/* 60935 */ {(12<<2)|2,{118,48,0}}, +/* 60936 */ {(12<<2)|2,{118,48,0}}, +/* 60937 */ {(12<<2)|2,{118,48,0}}, +/* 60938 */ {(12<<2)|2,{118,48,0}}, +/* 60939 */ {(12<<2)|2,{118,48,0}}, +/* 60940 */ {(12<<2)|2,{118,48,0}}, +/* 60941 */ {(12<<2)|2,{118,48,0}}, +/* 60942 */ {(12<<2)|2,{118,48,0}}, +/* 60943 */ {(12<<2)|2,{118,48,0}}, +/* 60944 */ {(12<<2)|2,{118,49,0}}, +/* 60945 */ {(12<<2)|2,{118,49,0}}, +/* 60946 */ {(12<<2)|2,{118,49,0}}, +/* 60947 */ {(12<<2)|2,{118,49,0}}, +/* 60948 */ {(12<<2)|2,{118,49,0}}, +/* 60949 */ {(12<<2)|2,{118,49,0}}, +/* 60950 */ {(12<<2)|2,{118,49,0}}, +/* 60951 */ {(12<<2)|2,{118,49,0}}, +/* 60952 */ {(12<<2)|2,{118,49,0}}, +/* 60953 */ {(12<<2)|2,{118,49,0}}, +/* 60954 */ {(12<<2)|2,{118,49,0}}, +/* 60955 */ {(12<<2)|2,{118,49,0}}, +/* 60956 */ {(12<<2)|2,{118,49,0}}, +/* 60957 */ {(12<<2)|2,{118,49,0}}, +/* 60958 */ {(12<<2)|2,{118,49,0}}, +/* 60959 */ {(12<<2)|2,{118,49,0}}, +/* 60960 */ {(12<<2)|2,{118,50,0}}, +/* 60961 */ {(12<<2)|2,{118,50,0}}, +/* 60962 */ {(12<<2)|2,{118,50,0}}, +/* 60963 */ {(12<<2)|2,{118,50,0}}, +/* 60964 */ {(12<<2)|2,{118,50,0}}, +/* 60965 */ {(12<<2)|2,{118,50,0}}, +/* 60966 */ {(12<<2)|2,{118,50,0}}, +/* 60967 */ {(12<<2)|2,{118,50,0}}, +/* 60968 */ {(12<<2)|2,{118,50,0}}, +/* 60969 */ {(12<<2)|2,{118,50,0}}, +/* 60970 */ {(12<<2)|2,{118,50,0}}, +/* 60971 */ {(12<<2)|2,{118,50,0}}, +/* 60972 */ {(12<<2)|2,{118,50,0}}, +/* 60973 */ {(12<<2)|2,{118,50,0}}, +/* 60974 */ {(12<<2)|2,{118,50,0}}, +/* 60975 */ {(12<<2)|2,{118,50,0}}, +/* 60976 */ {(12<<2)|2,{118,97,0}}, +/* 60977 */ {(12<<2)|2,{118,97,0}}, +/* 60978 */ {(12<<2)|2,{118,97,0}}, +/* 60979 */ {(12<<2)|2,{118,97,0}}, +/* 60980 */ {(12<<2)|2,{118,97,0}}, +/* 60981 */ {(12<<2)|2,{118,97,0}}, +/* 60982 */ {(12<<2)|2,{118,97,0}}, +/* 60983 */ {(12<<2)|2,{118,97,0}}, +/* 60984 */ {(12<<2)|2,{118,97,0}}, +/* 60985 */ {(12<<2)|2,{118,97,0}}, +/* 60986 */ {(12<<2)|2,{118,97,0}}, +/* 60987 */ {(12<<2)|2,{118,97,0}}, +/* 60988 */ {(12<<2)|2,{118,97,0}}, +/* 60989 */ {(12<<2)|2,{118,97,0}}, +/* 60990 */ {(12<<2)|2,{118,97,0}}, +/* 60991 */ {(12<<2)|2,{118,97,0}}, +/* 60992 */ {(12<<2)|2,{118,99,0}}, +/* 60993 */ {(12<<2)|2,{118,99,0}}, +/* 60994 */ {(12<<2)|2,{118,99,0}}, +/* 60995 */ {(12<<2)|2,{118,99,0}}, +/* 60996 */ {(12<<2)|2,{118,99,0}}, +/* 60997 */ {(12<<2)|2,{118,99,0}}, +/* 60998 */ {(12<<2)|2,{118,99,0}}, +/* 60999 */ {(12<<2)|2,{118,99,0}}, +/* 61000 */ {(12<<2)|2,{118,99,0}}, +/* 61001 */ {(12<<2)|2,{118,99,0}}, +/* 61002 */ {(12<<2)|2,{118,99,0}}, +/* 61003 */ {(12<<2)|2,{118,99,0}}, +/* 61004 */ {(12<<2)|2,{118,99,0}}, +/* 61005 */ {(12<<2)|2,{118,99,0}}, +/* 61006 */ {(12<<2)|2,{118,99,0}}, +/* 61007 */ {(12<<2)|2,{118,99,0}}, +/* 61008 */ {(12<<2)|2,{118,101,0}}, +/* 61009 */ {(12<<2)|2,{118,101,0}}, +/* 61010 */ {(12<<2)|2,{118,101,0}}, +/* 61011 */ {(12<<2)|2,{118,101,0}}, +/* 61012 */ {(12<<2)|2,{118,101,0}}, +/* 61013 */ {(12<<2)|2,{118,101,0}}, +/* 61014 */ {(12<<2)|2,{118,101,0}}, +/* 61015 */ {(12<<2)|2,{118,101,0}}, +/* 61016 */ {(12<<2)|2,{118,101,0}}, +/* 61017 */ {(12<<2)|2,{118,101,0}}, +/* 61018 */ {(12<<2)|2,{118,101,0}}, +/* 61019 */ {(12<<2)|2,{118,101,0}}, +/* 61020 */ {(12<<2)|2,{118,101,0}}, +/* 61021 */ {(12<<2)|2,{118,101,0}}, +/* 61022 */ {(12<<2)|2,{118,101,0}}, +/* 61023 */ {(12<<2)|2,{118,101,0}}, +/* 61024 */ {(12<<2)|2,{118,105,0}}, +/* 61025 */ {(12<<2)|2,{118,105,0}}, +/* 61026 */ {(12<<2)|2,{118,105,0}}, +/* 61027 */ {(12<<2)|2,{118,105,0}}, +/* 61028 */ {(12<<2)|2,{118,105,0}}, +/* 61029 */ {(12<<2)|2,{118,105,0}}, +/* 61030 */ {(12<<2)|2,{118,105,0}}, +/* 61031 */ {(12<<2)|2,{118,105,0}}, +/* 61032 */ {(12<<2)|2,{118,105,0}}, +/* 61033 */ {(12<<2)|2,{118,105,0}}, +/* 61034 */ {(12<<2)|2,{118,105,0}}, +/* 61035 */ {(12<<2)|2,{118,105,0}}, +/* 61036 */ {(12<<2)|2,{118,105,0}}, +/* 61037 */ {(12<<2)|2,{118,105,0}}, +/* 61038 */ {(12<<2)|2,{118,105,0}}, +/* 61039 */ {(12<<2)|2,{118,105,0}}, +/* 61040 */ {(12<<2)|2,{118,111,0}}, +/* 61041 */ {(12<<2)|2,{118,111,0}}, +/* 61042 */ {(12<<2)|2,{118,111,0}}, +/* 61043 */ {(12<<2)|2,{118,111,0}}, +/* 61044 */ {(12<<2)|2,{118,111,0}}, +/* 61045 */ {(12<<2)|2,{118,111,0}}, +/* 61046 */ {(12<<2)|2,{118,111,0}}, +/* 61047 */ {(12<<2)|2,{118,111,0}}, +/* 61048 */ {(12<<2)|2,{118,111,0}}, +/* 61049 */ {(12<<2)|2,{118,111,0}}, +/* 61050 */ {(12<<2)|2,{118,111,0}}, +/* 61051 */ {(12<<2)|2,{118,111,0}}, +/* 61052 */ {(12<<2)|2,{118,111,0}}, +/* 61053 */ {(12<<2)|2,{118,111,0}}, +/* 61054 */ {(12<<2)|2,{118,111,0}}, +/* 61055 */ {(12<<2)|2,{118,111,0}}, +/* 61056 */ {(12<<2)|2,{118,115,0}}, +/* 61057 */ {(12<<2)|2,{118,115,0}}, +/* 61058 */ {(12<<2)|2,{118,115,0}}, +/* 61059 */ {(12<<2)|2,{118,115,0}}, +/* 61060 */ {(12<<2)|2,{118,115,0}}, +/* 61061 */ {(12<<2)|2,{118,115,0}}, +/* 61062 */ {(12<<2)|2,{118,115,0}}, +/* 61063 */ {(12<<2)|2,{118,115,0}}, +/* 61064 */ {(12<<2)|2,{118,115,0}}, +/* 61065 */ {(12<<2)|2,{118,115,0}}, +/* 61066 */ {(12<<2)|2,{118,115,0}}, +/* 61067 */ {(12<<2)|2,{118,115,0}}, +/* 61068 */ {(12<<2)|2,{118,115,0}}, +/* 61069 */ {(12<<2)|2,{118,115,0}}, +/* 61070 */ {(12<<2)|2,{118,115,0}}, +/* 61071 */ {(12<<2)|2,{118,115,0}}, +/* 61072 */ {(12<<2)|2,{118,116,0}}, +/* 61073 */ {(12<<2)|2,{118,116,0}}, +/* 61074 */ {(12<<2)|2,{118,116,0}}, +/* 61075 */ {(12<<2)|2,{118,116,0}}, +/* 61076 */ {(12<<2)|2,{118,116,0}}, +/* 61077 */ {(12<<2)|2,{118,116,0}}, +/* 61078 */ {(12<<2)|2,{118,116,0}}, +/* 61079 */ {(12<<2)|2,{118,116,0}}, +/* 61080 */ {(12<<2)|2,{118,116,0}}, +/* 61081 */ {(12<<2)|2,{118,116,0}}, +/* 61082 */ {(12<<2)|2,{118,116,0}}, +/* 61083 */ {(12<<2)|2,{118,116,0}}, +/* 61084 */ {(12<<2)|2,{118,116,0}}, +/* 61085 */ {(12<<2)|2,{118,116,0}}, +/* 61086 */ {(12<<2)|2,{118,116,0}}, +/* 61087 */ {(12<<2)|2,{118,116,0}}, +/* 61088 */ {(13<<2)|2,{118,32,0}}, +/* 61089 */ {(13<<2)|2,{118,32,0}}, +/* 61090 */ {(13<<2)|2,{118,32,0}}, +/* 61091 */ {(13<<2)|2,{118,32,0}}, +/* 61092 */ {(13<<2)|2,{118,32,0}}, +/* 61093 */ {(13<<2)|2,{118,32,0}}, +/* 61094 */ {(13<<2)|2,{118,32,0}}, +/* 61095 */ {(13<<2)|2,{118,32,0}}, +/* 61096 */ {(13<<2)|2,{118,37,0}}, +/* 61097 */ {(13<<2)|2,{118,37,0}}, +/* 61098 */ {(13<<2)|2,{118,37,0}}, +/* 61099 */ {(13<<2)|2,{118,37,0}}, +/* 61100 */ {(13<<2)|2,{118,37,0}}, +/* 61101 */ {(13<<2)|2,{118,37,0}}, +/* 61102 */ {(13<<2)|2,{118,37,0}}, +/* 61103 */ {(13<<2)|2,{118,37,0}}, +/* 61104 */ {(13<<2)|2,{118,45,0}}, +/* 61105 */ {(13<<2)|2,{118,45,0}}, +/* 61106 */ {(13<<2)|2,{118,45,0}}, +/* 61107 */ {(13<<2)|2,{118,45,0}}, +/* 61108 */ {(13<<2)|2,{118,45,0}}, +/* 61109 */ {(13<<2)|2,{118,45,0}}, +/* 61110 */ {(13<<2)|2,{118,45,0}}, +/* 61111 */ {(13<<2)|2,{118,45,0}}, +/* 61112 */ {(13<<2)|2,{118,46,0}}, +/* 61113 */ {(13<<2)|2,{118,46,0}}, +/* 61114 */ {(13<<2)|2,{118,46,0}}, +/* 61115 */ {(13<<2)|2,{118,46,0}}, +/* 61116 */ {(13<<2)|2,{118,46,0}}, +/* 61117 */ {(13<<2)|2,{118,46,0}}, +/* 61118 */ {(13<<2)|2,{118,46,0}}, +/* 61119 */ {(13<<2)|2,{118,46,0}}, +/* 61120 */ {(13<<2)|2,{118,47,0}}, +/* 61121 */ {(13<<2)|2,{118,47,0}}, +/* 61122 */ {(13<<2)|2,{118,47,0}}, +/* 61123 */ {(13<<2)|2,{118,47,0}}, +/* 61124 */ {(13<<2)|2,{118,47,0}}, +/* 61125 */ {(13<<2)|2,{118,47,0}}, +/* 61126 */ {(13<<2)|2,{118,47,0}}, +/* 61127 */ {(13<<2)|2,{118,47,0}}, +/* 61128 */ {(13<<2)|2,{118,51,0}}, +/* 61129 */ {(13<<2)|2,{118,51,0}}, +/* 61130 */ {(13<<2)|2,{118,51,0}}, +/* 61131 */ {(13<<2)|2,{118,51,0}}, +/* 61132 */ {(13<<2)|2,{118,51,0}}, +/* 61133 */ {(13<<2)|2,{118,51,0}}, +/* 61134 */ {(13<<2)|2,{118,51,0}}, +/* 61135 */ {(13<<2)|2,{118,51,0}}, +/* 61136 */ {(13<<2)|2,{118,52,0}}, +/* 61137 */ {(13<<2)|2,{118,52,0}}, +/* 61138 */ {(13<<2)|2,{118,52,0}}, +/* 61139 */ {(13<<2)|2,{118,52,0}}, +/* 61140 */ {(13<<2)|2,{118,52,0}}, +/* 61141 */ {(13<<2)|2,{118,52,0}}, +/* 61142 */ {(13<<2)|2,{118,52,0}}, +/* 61143 */ {(13<<2)|2,{118,52,0}}, +/* 61144 */ {(13<<2)|2,{118,53,0}}, +/* 61145 */ {(13<<2)|2,{118,53,0}}, +/* 61146 */ {(13<<2)|2,{118,53,0}}, +/* 61147 */ {(13<<2)|2,{118,53,0}}, +/* 61148 */ {(13<<2)|2,{118,53,0}}, +/* 61149 */ {(13<<2)|2,{118,53,0}}, +/* 61150 */ {(13<<2)|2,{118,53,0}}, +/* 61151 */ {(13<<2)|2,{118,53,0}}, +/* 61152 */ {(13<<2)|2,{118,54,0}}, +/* 61153 */ {(13<<2)|2,{118,54,0}}, +/* 61154 */ {(13<<2)|2,{118,54,0}}, +/* 61155 */ {(13<<2)|2,{118,54,0}}, +/* 61156 */ {(13<<2)|2,{118,54,0}}, +/* 61157 */ {(13<<2)|2,{118,54,0}}, +/* 61158 */ {(13<<2)|2,{118,54,0}}, +/* 61159 */ {(13<<2)|2,{118,54,0}}, +/* 61160 */ {(13<<2)|2,{118,55,0}}, +/* 61161 */ {(13<<2)|2,{118,55,0}}, +/* 61162 */ {(13<<2)|2,{118,55,0}}, +/* 61163 */ {(13<<2)|2,{118,55,0}}, +/* 61164 */ {(13<<2)|2,{118,55,0}}, +/* 61165 */ {(13<<2)|2,{118,55,0}}, +/* 61166 */ {(13<<2)|2,{118,55,0}}, +/* 61167 */ {(13<<2)|2,{118,55,0}}, +/* 61168 */ {(13<<2)|2,{118,56,0}}, +/* 61169 */ {(13<<2)|2,{118,56,0}}, +/* 61170 */ {(13<<2)|2,{118,56,0}}, +/* 61171 */ {(13<<2)|2,{118,56,0}}, +/* 61172 */ {(13<<2)|2,{118,56,0}}, +/* 61173 */ {(13<<2)|2,{118,56,0}}, +/* 61174 */ {(13<<2)|2,{118,56,0}}, +/* 61175 */ {(13<<2)|2,{118,56,0}}, +/* 61176 */ {(13<<2)|2,{118,57,0}}, +/* 61177 */ {(13<<2)|2,{118,57,0}}, +/* 61178 */ {(13<<2)|2,{118,57,0}}, +/* 61179 */ {(13<<2)|2,{118,57,0}}, +/* 61180 */ {(13<<2)|2,{118,57,0}}, +/* 61181 */ {(13<<2)|2,{118,57,0}}, +/* 61182 */ {(13<<2)|2,{118,57,0}}, +/* 61183 */ {(13<<2)|2,{118,57,0}}, +/* 61184 */ {(13<<2)|2,{118,61,0}}, +/* 61185 */ {(13<<2)|2,{118,61,0}}, +/* 61186 */ {(13<<2)|2,{118,61,0}}, +/* 61187 */ {(13<<2)|2,{118,61,0}}, +/* 61188 */ {(13<<2)|2,{118,61,0}}, +/* 61189 */ {(13<<2)|2,{118,61,0}}, +/* 61190 */ {(13<<2)|2,{118,61,0}}, +/* 61191 */ {(13<<2)|2,{118,61,0}}, +/* 61192 */ {(13<<2)|2,{118,65,0}}, +/* 61193 */ {(13<<2)|2,{118,65,0}}, +/* 61194 */ {(13<<2)|2,{118,65,0}}, +/* 61195 */ {(13<<2)|2,{118,65,0}}, +/* 61196 */ {(13<<2)|2,{118,65,0}}, +/* 61197 */ {(13<<2)|2,{118,65,0}}, +/* 61198 */ {(13<<2)|2,{118,65,0}}, +/* 61199 */ {(13<<2)|2,{118,65,0}}, +/* 61200 */ {(13<<2)|2,{118,95,0}}, +/* 61201 */ {(13<<2)|2,{118,95,0}}, +/* 61202 */ {(13<<2)|2,{118,95,0}}, +/* 61203 */ {(13<<2)|2,{118,95,0}}, +/* 61204 */ {(13<<2)|2,{118,95,0}}, +/* 61205 */ {(13<<2)|2,{118,95,0}}, +/* 61206 */ {(13<<2)|2,{118,95,0}}, +/* 61207 */ {(13<<2)|2,{118,95,0}}, +/* 61208 */ {(13<<2)|2,{118,98,0}}, +/* 61209 */ {(13<<2)|2,{118,98,0}}, +/* 61210 */ {(13<<2)|2,{118,98,0}}, +/* 61211 */ {(13<<2)|2,{118,98,0}}, +/* 61212 */ {(13<<2)|2,{118,98,0}}, +/* 61213 */ {(13<<2)|2,{118,98,0}}, +/* 61214 */ {(13<<2)|2,{118,98,0}}, +/* 61215 */ {(13<<2)|2,{118,98,0}}, +/* 61216 */ {(13<<2)|2,{118,100,0}}, +/* 61217 */ {(13<<2)|2,{118,100,0}}, +/* 61218 */ {(13<<2)|2,{118,100,0}}, +/* 61219 */ {(13<<2)|2,{118,100,0}}, +/* 61220 */ {(13<<2)|2,{118,100,0}}, +/* 61221 */ {(13<<2)|2,{118,100,0}}, +/* 61222 */ {(13<<2)|2,{118,100,0}}, +/* 61223 */ {(13<<2)|2,{118,100,0}}, +/* 61224 */ {(13<<2)|2,{118,102,0}}, +/* 61225 */ {(13<<2)|2,{118,102,0}}, +/* 61226 */ {(13<<2)|2,{118,102,0}}, +/* 61227 */ {(13<<2)|2,{118,102,0}}, +/* 61228 */ {(13<<2)|2,{118,102,0}}, +/* 61229 */ {(13<<2)|2,{118,102,0}}, +/* 61230 */ {(13<<2)|2,{118,102,0}}, +/* 61231 */ {(13<<2)|2,{118,102,0}}, +/* 61232 */ {(13<<2)|2,{118,103,0}}, +/* 61233 */ {(13<<2)|2,{118,103,0}}, +/* 61234 */ {(13<<2)|2,{118,103,0}}, +/* 61235 */ {(13<<2)|2,{118,103,0}}, +/* 61236 */ {(13<<2)|2,{118,103,0}}, +/* 61237 */ {(13<<2)|2,{118,103,0}}, +/* 61238 */ {(13<<2)|2,{118,103,0}}, +/* 61239 */ {(13<<2)|2,{118,103,0}}, +/* 61240 */ {(13<<2)|2,{118,104,0}}, +/* 61241 */ {(13<<2)|2,{118,104,0}}, +/* 61242 */ {(13<<2)|2,{118,104,0}}, +/* 61243 */ {(13<<2)|2,{118,104,0}}, +/* 61244 */ {(13<<2)|2,{118,104,0}}, +/* 61245 */ {(13<<2)|2,{118,104,0}}, +/* 61246 */ {(13<<2)|2,{118,104,0}}, +/* 61247 */ {(13<<2)|2,{118,104,0}}, +/* 61248 */ {(13<<2)|2,{118,108,0}}, +/* 61249 */ {(13<<2)|2,{118,108,0}}, +/* 61250 */ {(13<<2)|2,{118,108,0}}, +/* 61251 */ {(13<<2)|2,{118,108,0}}, +/* 61252 */ {(13<<2)|2,{118,108,0}}, +/* 61253 */ {(13<<2)|2,{118,108,0}}, +/* 61254 */ {(13<<2)|2,{118,108,0}}, +/* 61255 */ {(13<<2)|2,{118,108,0}}, +/* 61256 */ {(13<<2)|2,{118,109,0}}, +/* 61257 */ {(13<<2)|2,{118,109,0}}, +/* 61258 */ {(13<<2)|2,{118,109,0}}, +/* 61259 */ {(13<<2)|2,{118,109,0}}, +/* 61260 */ {(13<<2)|2,{118,109,0}}, +/* 61261 */ {(13<<2)|2,{118,109,0}}, +/* 61262 */ {(13<<2)|2,{118,109,0}}, +/* 61263 */ {(13<<2)|2,{118,109,0}}, +/* 61264 */ {(13<<2)|2,{118,110,0}}, +/* 61265 */ {(13<<2)|2,{118,110,0}}, +/* 61266 */ {(13<<2)|2,{118,110,0}}, +/* 61267 */ {(13<<2)|2,{118,110,0}}, +/* 61268 */ {(13<<2)|2,{118,110,0}}, +/* 61269 */ {(13<<2)|2,{118,110,0}}, +/* 61270 */ {(13<<2)|2,{118,110,0}}, +/* 61271 */ {(13<<2)|2,{118,110,0}}, +/* 61272 */ {(13<<2)|2,{118,112,0}}, +/* 61273 */ {(13<<2)|2,{118,112,0}}, +/* 61274 */ {(13<<2)|2,{118,112,0}}, +/* 61275 */ {(13<<2)|2,{118,112,0}}, +/* 61276 */ {(13<<2)|2,{118,112,0}}, +/* 61277 */ {(13<<2)|2,{118,112,0}}, +/* 61278 */ {(13<<2)|2,{118,112,0}}, +/* 61279 */ {(13<<2)|2,{118,112,0}}, +/* 61280 */ {(13<<2)|2,{118,114,0}}, +/* 61281 */ {(13<<2)|2,{118,114,0}}, +/* 61282 */ {(13<<2)|2,{118,114,0}}, +/* 61283 */ {(13<<2)|2,{118,114,0}}, +/* 61284 */ {(13<<2)|2,{118,114,0}}, +/* 61285 */ {(13<<2)|2,{118,114,0}}, +/* 61286 */ {(13<<2)|2,{118,114,0}}, +/* 61287 */ {(13<<2)|2,{118,114,0}}, +/* 61288 */ {(13<<2)|2,{118,117,0}}, +/* 61289 */ {(13<<2)|2,{118,117,0}}, +/* 61290 */ {(13<<2)|2,{118,117,0}}, +/* 61291 */ {(13<<2)|2,{118,117,0}}, +/* 61292 */ {(13<<2)|2,{118,117,0}}, +/* 61293 */ {(13<<2)|2,{118,117,0}}, +/* 61294 */ {(13<<2)|2,{118,117,0}}, +/* 61295 */ {(13<<2)|2,{118,117,0}}, +/* 61296 */ {(14<<2)|2,{118,58,0}}, +/* 61297 */ {(14<<2)|2,{118,58,0}}, +/* 61298 */ {(14<<2)|2,{118,58,0}}, +/* 61299 */ {(14<<2)|2,{118,58,0}}, +/* 61300 */ {(14<<2)|2,{118,66,0}}, +/* 61301 */ {(14<<2)|2,{118,66,0}}, +/* 61302 */ {(14<<2)|2,{118,66,0}}, +/* 61303 */ {(14<<2)|2,{118,66,0}}, +/* 61304 */ {(14<<2)|2,{118,67,0}}, +/* 61305 */ {(14<<2)|2,{118,67,0}}, +/* 61306 */ {(14<<2)|2,{118,67,0}}, +/* 61307 */ {(14<<2)|2,{118,67,0}}, +/* 61308 */ {(14<<2)|2,{118,68,0}}, +/* 61309 */ {(14<<2)|2,{118,68,0}}, +/* 61310 */ {(14<<2)|2,{118,68,0}}, +/* 61311 */ {(14<<2)|2,{118,68,0}}, +/* 61312 */ {(14<<2)|2,{118,69,0}}, +/* 61313 */ {(14<<2)|2,{118,69,0}}, +/* 61314 */ {(14<<2)|2,{118,69,0}}, +/* 61315 */ {(14<<2)|2,{118,69,0}}, +/* 61316 */ {(14<<2)|2,{118,70,0}}, +/* 61317 */ {(14<<2)|2,{118,70,0}}, +/* 61318 */ {(14<<2)|2,{118,70,0}}, +/* 61319 */ {(14<<2)|2,{118,70,0}}, +/* 61320 */ {(14<<2)|2,{118,71,0}}, +/* 61321 */ {(14<<2)|2,{118,71,0}}, +/* 61322 */ {(14<<2)|2,{118,71,0}}, +/* 61323 */ {(14<<2)|2,{118,71,0}}, +/* 61324 */ {(14<<2)|2,{118,72,0}}, +/* 61325 */ {(14<<2)|2,{118,72,0}}, +/* 61326 */ {(14<<2)|2,{118,72,0}}, +/* 61327 */ {(14<<2)|2,{118,72,0}}, +/* 61328 */ {(14<<2)|2,{118,73,0}}, +/* 61329 */ {(14<<2)|2,{118,73,0}}, +/* 61330 */ {(14<<2)|2,{118,73,0}}, +/* 61331 */ {(14<<2)|2,{118,73,0}}, +/* 61332 */ {(14<<2)|2,{118,74,0}}, +/* 61333 */ {(14<<2)|2,{118,74,0}}, +/* 61334 */ {(14<<2)|2,{118,74,0}}, +/* 61335 */ {(14<<2)|2,{118,74,0}}, +/* 61336 */ {(14<<2)|2,{118,75,0}}, +/* 61337 */ {(14<<2)|2,{118,75,0}}, +/* 61338 */ {(14<<2)|2,{118,75,0}}, +/* 61339 */ {(14<<2)|2,{118,75,0}}, +/* 61340 */ {(14<<2)|2,{118,76,0}}, +/* 61341 */ {(14<<2)|2,{118,76,0}}, +/* 61342 */ {(14<<2)|2,{118,76,0}}, +/* 61343 */ {(14<<2)|2,{118,76,0}}, +/* 61344 */ {(14<<2)|2,{118,77,0}}, +/* 61345 */ {(14<<2)|2,{118,77,0}}, +/* 61346 */ {(14<<2)|2,{118,77,0}}, +/* 61347 */ {(14<<2)|2,{118,77,0}}, +/* 61348 */ {(14<<2)|2,{118,78,0}}, +/* 61349 */ {(14<<2)|2,{118,78,0}}, +/* 61350 */ {(14<<2)|2,{118,78,0}}, +/* 61351 */ {(14<<2)|2,{118,78,0}}, +/* 61352 */ {(14<<2)|2,{118,79,0}}, +/* 61353 */ {(14<<2)|2,{118,79,0}}, +/* 61354 */ {(14<<2)|2,{118,79,0}}, +/* 61355 */ {(14<<2)|2,{118,79,0}}, +/* 61356 */ {(14<<2)|2,{118,80,0}}, +/* 61357 */ {(14<<2)|2,{118,80,0}}, +/* 61358 */ {(14<<2)|2,{118,80,0}}, +/* 61359 */ {(14<<2)|2,{118,80,0}}, +/* 61360 */ {(14<<2)|2,{118,81,0}}, +/* 61361 */ {(14<<2)|2,{118,81,0}}, +/* 61362 */ {(14<<2)|2,{118,81,0}}, +/* 61363 */ {(14<<2)|2,{118,81,0}}, +/* 61364 */ {(14<<2)|2,{118,82,0}}, +/* 61365 */ {(14<<2)|2,{118,82,0}}, +/* 61366 */ {(14<<2)|2,{118,82,0}}, +/* 61367 */ {(14<<2)|2,{118,82,0}}, +/* 61368 */ {(14<<2)|2,{118,83,0}}, +/* 61369 */ {(14<<2)|2,{118,83,0}}, +/* 61370 */ {(14<<2)|2,{118,83,0}}, +/* 61371 */ {(14<<2)|2,{118,83,0}}, +/* 61372 */ {(14<<2)|2,{118,84,0}}, +/* 61373 */ {(14<<2)|2,{118,84,0}}, +/* 61374 */ {(14<<2)|2,{118,84,0}}, +/* 61375 */ {(14<<2)|2,{118,84,0}}, +/* 61376 */ {(14<<2)|2,{118,85,0}}, +/* 61377 */ {(14<<2)|2,{118,85,0}}, +/* 61378 */ {(14<<2)|2,{118,85,0}}, +/* 61379 */ {(14<<2)|2,{118,85,0}}, +/* 61380 */ {(14<<2)|2,{118,86,0}}, +/* 61381 */ {(14<<2)|2,{118,86,0}}, +/* 61382 */ {(14<<2)|2,{118,86,0}}, +/* 61383 */ {(14<<2)|2,{118,86,0}}, +/* 61384 */ {(14<<2)|2,{118,87,0}}, +/* 61385 */ {(14<<2)|2,{118,87,0}}, +/* 61386 */ {(14<<2)|2,{118,87,0}}, +/* 61387 */ {(14<<2)|2,{118,87,0}}, +/* 61388 */ {(14<<2)|2,{118,89,0}}, +/* 61389 */ {(14<<2)|2,{118,89,0}}, +/* 61390 */ {(14<<2)|2,{118,89,0}}, +/* 61391 */ {(14<<2)|2,{118,89,0}}, +/* 61392 */ {(14<<2)|2,{118,106,0}}, +/* 61393 */ {(14<<2)|2,{118,106,0}}, +/* 61394 */ {(14<<2)|2,{118,106,0}}, +/* 61395 */ {(14<<2)|2,{118,106,0}}, +/* 61396 */ {(14<<2)|2,{118,107,0}}, +/* 61397 */ {(14<<2)|2,{118,107,0}}, +/* 61398 */ {(14<<2)|2,{118,107,0}}, +/* 61399 */ {(14<<2)|2,{118,107,0}}, +/* 61400 */ {(14<<2)|2,{118,113,0}}, +/* 61401 */ {(14<<2)|2,{118,113,0}}, +/* 61402 */ {(14<<2)|2,{118,113,0}}, +/* 61403 */ {(14<<2)|2,{118,113,0}}, +/* 61404 */ {(14<<2)|2,{118,118,0}}, +/* 61405 */ {(14<<2)|2,{118,118,0}}, +/* 61406 */ {(14<<2)|2,{118,118,0}}, +/* 61407 */ {(14<<2)|2,{118,118,0}}, +/* 61408 */ {(14<<2)|2,{118,119,0}}, +/* 61409 */ {(14<<2)|2,{118,119,0}}, +/* 61410 */ {(14<<2)|2,{118,119,0}}, +/* 61411 */ {(14<<2)|2,{118,119,0}}, +/* 61412 */ {(14<<2)|2,{118,120,0}}, +/* 61413 */ {(14<<2)|2,{118,120,0}}, +/* 61414 */ {(14<<2)|2,{118,120,0}}, +/* 61415 */ {(14<<2)|2,{118,120,0}}, +/* 61416 */ {(14<<2)|2,{118,121,0}}, +/* 61417 */ {(14<<2)|2,{118,121,0}}, +/* 61418 */ {(14<<2)|2,{118,121,0}}, +/* 61419 */ {(14<<2)|2,{118,121,0}}, +/* 61420 */ {(14<<2)|2,{118,122,0}}, +/* 61421 */ {(14<<2)|2,{118,122,0}}, +/* 61422 */ {(14<<2)|2,{118,122,0}}, +/* 61423 */ {(14<<2)|2,{118,122,0}}, +/* 61424 */ {(15<<2)|2,{118,38,0}}, +/* 61425 */ {(15<<2)|2,{118,38,0}}, +/* 61426 */ {(15<<2)|2,{118,42,0}}, +/* 61427 */ {(15<<2)|2,{118,42,0}}, +/* 61428 */ {(15<<2)|2,{118,44,0}}, +/* 61429 */ {(15<<2)|2,{118,44,0}}, +/* 61430 */ {(15<<2)|2,{118,59,0}}, +/* 61431 */ {(15<<2)|2,{118,59,0}}, +/* 61432 */ {(15<<2)|2,{118,88,0}}, +/* 61433 */ {(15<<2)|2,{118,88,0}}, +/* 61434 */ {(15<<2)|2,{118,90,0}}, +/* 61435 */ {(15<<2)|2,{118,90,0}}, +/* 61436 */ {(7<<2)|1,{118,0,0}}, +/* 61437 */ {(7<<2)|1,{118,0,0}}, +/* 61438 */ {(7<<2)|1,{118,0,0}}, +/* 61439 */ {(7<<2)|1,{118,0,0}}, +/* 61440 */ {(12<<2)|2,{119,48,0}}, +/* 61441 */ {(12<<2)|2,{119,48,0}}, +/* 61442 */ {(12<<2)|2,{119,48,0}}, +/* 61443 */ {(12<<2)|2,{119,48,0}}, +/* 61444 */ {(12<<2)|2,{119,48,0}}, +/* 61445 */ {(12<<2)|2,{119,48,0}}, +/* 61446 */ {(12<<2)|2,{119,48,0}}, +/* 61447 */ {(12<<2)|2,{119,48,0}}, +/* 61448 */ {(12<<2)|2,{119,48,0}}, +/* 61449 */ {(12<<2)|2,{119,48,0}}, +/* 61450 */ {(12<<2)|2,{119,48,0}}, +/* 61451 */ {(12<<2)|2,{119,48,0}}, +/* 61452 */ {(12<<2)|2,{119,48,0}}, +/* 61453 */ {(12<<2)|2,{119,48,0}}, +/* 61454 */ {(12<<2)|2,{119,48,0}}, +/* 61455 */ {(12<<2)|2,{119,48,0}}, +/* 61456 */ {(12<<2)|2,{119,49,0}}, +/* 61457 */ {(12<<2)|2,{119,49,0}}, +/* 61458 */ {(12<<2)|2,{119,49,0}}, +/* 61459 */ {(12<<2)|2,{119,49,0}}, +/* 61460 */ {(12<<2)|2,{119,49,0}}, +/* 61461 */ {(12<<2)|2,{119,49,0}}, +/* 61462 */ {(12<<2)|2,{119,49,0}}, +/* 61463 */ {(12<<2)|2,{119,49,0}}, +/* 61464 */ {(12<<2)|2,{119,49,0}}, +/* 61465 */ {(12<<2)|2,{119,49,0}}, +/* 61466 */ {(12<<2)|2,{119,49,0}}, +/* 61467 */ {(12<<2)|2,{119,49,0}}, +/* 61468 */ {(12<<2)|2,{119,49,0}}, +/* 61469 */ {(12<<2)|2,{119,49,0}}, +/* 61470 */ {(12<<2)|2,{119,49,0}}, +/* 61471 */ {(12<<2)|2,{119,49,0}}, +/* 61472 */ {(12<<2)|2,{119,50,0}}, +/* 61473 */ {(12<<2)|2,{119,50,0}}, +/* 61474 */ {(12<<2)|2,{119,50,0}}, +/* 61475 */ {(12<<2)|2,{119,50,0}}, +/* 61476 */ {(12<<2)|2,{119,50,0}}, +/* 61477 */ {(12<<2)|2,{119,50,0}}, +/* 61478 */ {(12<<2)|2,{119,50,0}}, +/* 61479 */ {(12<<2)|2,{119,50,0}}, +/* 61480 */ {(12<<2)|2,{119,50,0}}, +/* 61481 */ {(12<<2)|2,{119,50,0}}, +/* 61482 */ {(12<<2)|2,{119,50,0}}, +/* 61483 */ {(12<<2)|2,{119,50,0}}, +/* 61484 */ {(12<<2)|2,{119,50,0}}, +/* 61485 */ {(12<<2)|2,{119,50,0}}, +/* 61486 */ {(12<<2)|2,{119,50,0}}, +/* 61487 */ {(12<<2)|2,{119,50,0}}, +/* 61488 */ {(12<<2)|2,{119,97,0}}, +/* 61489 */ {(12<<2)|2,{119,97,0}}, +/* 61490 */ {(12<<2)|2,{119,97,0}}, +/* 61491 */ {(12<<2)|2,{119,97,0}}, +/* 61492 */ {(12<<2)|2,{119,97,0}}, +/* 61493 */ {(12<<2)|2,{119,97,0}}, +/* 61494 */ {(12<<2)|2,{119,97,0}}, +/* 61495 */ {(12<<2)|2,{119,97,0}}, +/* 61496 */ {(12<<2)|2,{119,97,0}}, +/* 61497 */ {(12<<2)|2,{119,97,0}}, +/* 61498 */ {(12<<2)|2,{119,97,0}}, +/* 61499 */ {(12<<2)|2,{119,97,0}}, +/* 61500 */ {(12<<2)|2,{119,97,0}}, +/* 61501 */ {(12<<2)|2,{119,97,0}}, +/* 61502 */ {(12<<2)|2,{119,97,0}}, +/* 61503 */ {(12<<2)|2,{119,97,0}}, +/* 61504 */ {(12<<2)|2,{119,99,0}}, +/* 61505 */ {(12<<2)|2,{119,99,0}}, +/* 61506 */ {(12<<2)|2,{119,99,0}}, +/* 61507 */ {(12<<2)|2,{119,99,0}}, +/* 61508 */ {(12<<2)|2,{119,99,0}}, +/* 61509 */ {(12<<2)|2,{119,99,0}}, +/* 61510 */ {(12<<2)|2,{119,99,0}}, +/* 61511 */ {(12<<2)|2,{119,99,0}}, +/* 61512 */ {(12<<2)|2,{119,99,0}}, +/* 61513 */ {(12<<2)|2,{119,99,0}}, +/* 61514 */ {(12<<2)|2,{119,99,0}}, +/* 61515 */ {(12<<2)|2,{119,99,0}}, +/* 61516 */ {(12<<2)|2,{119,99,0}}, +/* 61517 */ {(12<<2)|2,{119,99,0}}, +/* 61518 */ {(12<<2)|2,{119,99,0}}, +/* 61519 */ {(12<<2)|2,{119,99,0}}, +/* 61520 */ {(12<<2)|2,{119,101,0}}, +/* 61521 */ {(12<<2)|2,{119,101,0}}, +/* 61522 */ {(12<<2)|2,{119,101,0}}, +/* 61523 */ {(12<<2)|2,{119,101,0}}, +/* 61524 */ {(12<<2)|2,{119,101,0}}, +/* 61525 */ {(12<<2)|2,{119,101,0}}, +/* 61526 */ {(12<<2)|2,{119,101,0}}, +/* 61527 */ {(12<<2)|2,{119,101,0}}, +/* 61528 */ {(12<<2)|2,{119,101,0}}, +/* 61529 */ {(12<<2)|2,{119,101,0}}, +/* 61530 */ {(12<<2)|2,{119,101,0}}, +/* 61531 */ {(12<<2)|2,{119,101,0}}, +/* 61532 */ {(12<<2)|2,{119,101,0}}, +/* 61533 */ {(12<<2)|2,{119,101,0}}, +/* 61534 */ {(12<<2)|2,{119,101,0}}, +/* 61535 */ {(12<<2)|2,{119,101,0}}, +/* 61536 */ {(12<<2)|2,{119,105,0}}, +/* 61537 */ {(12<<2)|2,{119,105,0}}, +/* 61538 */ {(12<<2)|2,{119,105,0}}, +/* 61539 */ {(12<<2)|2,{119,105,0}}, +/* 61540 */ {(12<<2)|2,{119,105,0}}, +/* 61541 */ {(12<<2)|2,{119,105,0}}, +/* 61542 */ {(12<<2)|2,{119,105,0}}, +/* 61543 */ {(12<<2)|2,{119,105,0}}, +/* 61544 */ {(12<<2)|2,{119,105,0}}, +/* 61545 */ {(12<<2)|2,{119,105,0}}, +/* 61546 */ {(12<<2)|2,{119,105,0}}, +/* 61547 */ {(12<<2)|2,{119,105,0}}, +/* 61548 */ {(12<<2)|2,{119,105,0}}, +/* 61549 */ {(12<<2)|2,{119,105,0}}, +/* 61550 */ {(12<<2)|2,{119,105,0}}, +/* 61551 */ {(12<<2)|2,{119,105,0}}, +/* 61552 */ {(12<<2)|2,{119,111,0}}, +/* 61553 */ {(12<<2)|2,{119,111,0}}, +/* 61554 */ {(12<<2)|2,{119,111,0}}, +/* 61555 */ {(12<<2)|2,{119,111,0}}, +/* 61556 */ {(12<<2)|2,{119,111,0}}, +/* 61557 */ {(12<<2)|2,{119,111,0}}, +/* 61558 */ {(12<<2)|2,{119,111,0}}, +/* 61559 */ {(12<<2)|2,{119,111,0}}, +/* 61560 */ {(12<<2)|2,{119,111,0}}, +/* 61561 */ {(12<<2)|2,{119,111,0}}, +/* 61562 */ {(12<<2)|2,{119,111,0}}, +/* 61563 */ {(12<<2)|2,{119,111,0}}, +/* 61564 */ {(12<<2)|2,{119,111,0}}, +/* 61565 */ {(12<<2)|2,{119,111,0}}, +/* 61566 */ {(12<<2)|2,{119,111,0}}, +/* 61567 */ {(12<<2)|2,{119,111,0}}, +/* 61568 */ {(12<<2)|2,{119,115,0}}, +/* 61569 */ {(12<<2)|2,{119,115,0}}, +/* 61570 */ {(12<<2)|2,{119,115,0}}, +/* 61571 */ {(12<<2)|2,{119,115,0}}, +/* 61572 */ {(12<<2)|2,{119,115,0}}, +/* 61573 */ {(12<<2)|2,{119,115,0}}, +/* 61574 */ {(12<<2)|2,{119,115,0}}, +/* 61575 */ {(12<<2)|2,{119,115,0}}, +/* 61576 */ {(12<<2)|2,{119,115,0}}, +/* 61577 */ {(12<<2)|2,{119,115,0}}, +/* 61578 */ {(12<<2)|2,{119,115,0}}, +/* 61579 */ {(12<<2)|2,{119,115,0}}, +/* 61580 */ {(12<<2)|2,{119,115,0}}, +/* 61581 */ {(12<<2)|2,{119,115,0}}, +/* 61582 */ {(12<<2)|2,{119,115,0}}, +/* 61583 */ {(12<<2)|2,{119,115,0}}, +/* 61584 */ {(12<<2)|2,{119,116,0}}, +/* 61585 */ {(12<<2)|2,{119,116,0}}, +/* 61586 */ {(12<<2)|2,{119,116,0}}, +/* 61587 */ {(12<<2)|2,{119,116,0}}, +/* 61588 */ {(12<<2)|2,{119,116,0}}, +/* 61589 */ {(12<<2)|2,{119,116,0}}, +/* 61590 */ {(12<<2)|2,{119,116,0}}, +/* 61591 */ {(12<<2)|2,{119,116,0}}, +/* 61592 */ {(12<<2)|2,{119,116,0}}, +/* 61593 */ {(12<<2)|2,{119,116,0}}, +/* 61594 */ {(12<<2)|2,{119,116,0}}, +/* 61595 */ {(12<<2)|2,{119,116,0}}, +/* 61596 */ {(12<<2)|2,{119,116,0}}, +/* 61597 */ {(12<<2)|2,{119,116,0}}, +/* 61598 */ {(12<<2)|2,{119,116,0}}, +/* 61599 */ {(12<<2)|2,{119,116,0}}, +/* 61600 */ {(13<<2)|2,{119,32,0}}, +/* 61601 */ {(13<<2)|2,{119,32,0}}, +/* 61602 */ {(13<<2)|2,{119,32,0}}, +/* 61603 */ {(13<<2)|2,{119,32,0}}, +/* 61604 */ {(13<<2)|2,{119,32,0}}, +/* 61605 */ {(13<<2)|2,{119,32,0}}, +/* 61606 */ {(13<<2)|2,{119,32,0}}, +/* 61607 */ {(13<<2)|2,{119,32,0}}, +/* 61608 */ {(13<<2)|2,{119,37,0}}, +/* 61609 */ {(13<<2)|2,{119,37,0}}, +/* 61610 */ {(13<<2)|2,{119,37,0}}, +/* 61611 */ {(13<<2)|2,{119,37,0}}, +/* 61612 */ {(13<<2)|2,{119,37,0}}, +/* 61613 */ {(13<<2)|2,{119,37,0}}, +/* 61614 */ {(13<<2)|2,{119,37,0}}, +/* 61615 */ {(13<<2)|2,{119,37,0}}, +/* 61616 */ {(13<<2)|2,{119,45,0}}, +/* 61617 */ {(13<<2)|2,{119,45,0}}, +/* 61618 */ {(13<<2)|2,{119,45,0}}, +/* 61619 */ {(13<<2)|2,{119,45,0}}, +/* 61620 */ {(13<<2)|2,{119,45,0}}, +/* 61621 */ {(13<<2)|2,{119,45,0}}, +/* 61622 */ {(13<<2)|2,{119,45,0}}, +/* 61623 */ {(13<<2)|2,{119,45,0}}, +/* 61624 */ {(13<<2)|2,{119,46,0}}, +/* 61625 */ {(13<<2)|2,{119,46,0}}, +/* 61626 */ {(13<<2)|2,{119,46,0}}, +/* 61627 */ {(13<<2)|2,{119,46,0}}, +/* 61628 */ {(13<<2)|2,{119,46,0}}, +/* 61629 */ {(13<<2)|2,{119,46,0}}, +/* 61630 */ {(13<<2)|2,{119,46,0}}, +/* 61631 */ {(13<<2)|2,{119,46,0}}, +/* 61632 */ {(13<<2)|2,{119,47,0}}, +/* 61633 */ {(13<<2)|2,{119,47,0}}, +/* 61634 */ {(13<<2)|2,{119,47,0}}, +/* 61635 */ {(13<<2)|2,{119,47,0}}, +/* 61636 */ {(13<<2)|2,{119,47,0}}, +/* 61637 */ {(13<<2)|2,{119,47,0}}, +/* 61638 */ {(13<<2)|2,{119,47,0}}, +/* 61639 */ {(13<<2)|2,{119,47,0}}, +/* 61640 */ {(13<<2)|2,{119,51,0}}, +/* 61641 */ {(13<<2)|2,{119,51,0}}, +/* 61642 */ {(13<<2)|2,{119,51,0}}, +/* 61643 */ {(13<<2)|2,{119,51,0}}, +/* 61644 */ {(13<<2)|2,{119,51,0}}, +/* 61645 */ {(13<<2)|2,{119,51,0}}, +/* 61646 */ {(13<<2)|2,{119,51,0}}, +/* 61647 */ {(13<<2)|2,{119,51,0}}, +/* 61648 */ {(13<<2)|2,{119,52,0}}, +/* 61649 */ {(13<<2)|2,{119,52,0}}, +/* 61650 */ {(13<<2)|2,{119,52,0}}, +/* 61651 */ {(13<<2)|2,{119,52,0}}, +/* 61652 */ {(13<<2)|2,{119,52,0}}, +/* 61653 */ {(13<<2)|2,{119,52,0}}, +/* 61654 */ {(13<<2)|2,{119,52,0}}, +/* 61655 */ {(13<<2)|2,{119,52,0}}, +/* 61656 */ {(13<<2)|2,{119,53,0}}, +/* 61657 */ {(13<<2)|2,{119,53,0}}, +/* 61658 */ {(13<<2)|2,{119,53,0}}, +/* 61659 */ {(13<<2)|2,{119,53,0}}, +/* 61660 */ {(13<<2)|2,{119,53,0}}, +/* 61661 */ {(13<<2)|2,{119,53,0}}, +/* 61662 */ {(13<<2)|2,{119,53,0}}, +/* 61663 */ {(13<<2)|2,{119,53,0}}, +/* 61664 */ {(13<<2)|2,{119,54,0}}, +/* 61665 */ {(13<<2)|2,{119,54,0}}, +/* 61666 */ {(13<<2)|2,{119,54,0}}, +/* 61667 */ {(13<<2)|2,{119,54,0}}, +/* 61668 */ {(13<<2)|2,{119,54,0}}, +/* 61669 */ {(13<<2)|2,{119,54,0}}, +/* 61670 */ {(13<<2)|2,{119,54,0}}, +/* 61671 */ {(13<<2)|2,{119,54,0}}, +/* 61672 */ {(13<<2)|2,{119,55,0}}, +/* 61673 */ {(13<<2)|2,{119,55,0}}, +/* 61674 */ {(13<<2)|2,{119,55,0}}, +/* 61675 */ {(13<<2)|2,{119,55,0}}, +/* 61676 */ {(13<<2)|2,{119,55,0}}, +/* 61677 */ {(13<<2)|2,{119,55,0}}, +/* 61678 */ {(13<<2)|2,{119,55,0}}, +/* 61679 */ {(13<<2)|2,{119,55,0}}, +/* 61680 */ {(13<<2)|2,{119,56,0}}, +/* 61681 */ {(13<<2)|2,{119,56,0}}, +/* 61682 */ {(13<<2)|2,{119,56,0}}, +/* 61683 */ {(13<<2)|2,{119,56,0}}, +/* 61684 */ {(13<<2)|2,{119,56,0}}, +/* 61685 */ {(13<<2)|2,{119,56,0}}, +/* 61686 */ {(13<<2)|2,{119,56,0}}, +/* 61687 */ {(13<<2)|2,{119,56,0}}, +/* 61688 */ {(13<<2)|2,{119,57,0}}, +/* 61689 */ {(13<<2)|2,{119,57,0}}, +/* 61690 */ {(13<<2)|2,{119,57,0}}, +/* 61691 */ {(13<<2)|2,{119,57,0}}, +/* 61692 */ {(13<<2)|2,{119,57,0}}, +/* 61693 */ {(13<<2)|2,{119,57,0}}, +/* 61694 */ {(13<<2)|2,{119,57,0}}, +/* 61695 */ {(13<<2)|2,{119,57,0}}, +/* 61696 */ {(13<<2)|2,{119,61,0}}, +/* 61697 */ {(13<<2)|2,{119,61,0}}, +/* 61698 */ {(13<<2)|2,{119,61,0}}, +/* 61699 */ {(13<<2)|2,{119,61,0}}, +/* 61700 */ {(13<<2)|2,{119,61,0}}, +/* 61701 */ {(13<<2)|2,{119,61,0}}, +/* 61702 */ {(13<<2)|2,{119,61,0}}, +/* 61703 */ {(13<<2)|2,{119,61,0}}, +/* 61704 */ {(13<<2)|2,{119,65,0}}, +/* 61705 */ {(13<<2)|2,{119,65,0}}, +/* 61706 */ {(13<<2)|2,{119,65,0}}, +/* 61707 */ {(13<<2)|2,{119,65,0}}, +/* 61708 */ {(13<<2)|2,{119,65,0}}, +/* 61709 */ {(13<<2)|2,{119,65,0}}, +/* 61710 */ {(13<<2)|2,{119,65,0}}, +/* 61711 */ {(13<<2)|2,{119,65,0}}, +/* 61712 */ {(13<<2)|2,{119,95,0}}, +/* 61713 */ {(13<<2)|2,{119,95,0}}, +/* 61714 */ {(13<<2)|2,{119,95,0}}, +/* 61715 */ {(13<<2)|2,{119,95,0}}, +/* 61716 */ {(13<<2)|2,{119,95,0}}, +/* 61717 */ {(13<<2)|2,{119,95,0}}, +/* 61718 */ {(13<<2)|2,{119,95,0}}, +/* 61719 */ {(13<<2)|2,{119,95,0}}, +/* 61720 */ {(13<<2)|2,{119,98,0}}, +/* 61721 */ {(13<<2)|2,{119,98,0}}, +/* 61722 */ {(13<<2)|2,{119,98,0}}, +/* 61723 */ {(13<<2)|2,{119,98,0}}, +/* 61724 */ {(13<<2)|2,{119,98,0}}, +/* 61725 */ {(13<<2)|2,{119,98,0}}, +/* 61726 */ {(13<<2)|2,{119,98,0}}, +/* 61727 */ {(13<<2)|2,{119,98,0}}, +/* 61728 */ {(13<<2)|2,{119,100,0}}, +/* 61729 */ {(13<<2)|2,{119,100,0}}, +/* 61730 */ {(13<<2)|2,{119,100,0}}, +/* 61731 */ {(13<<2)|2,{119,100,0}}, +/* 61732 */ {(13<<2)|2,{119,100,0}}, +/* 61733 */ {(13<<2)|2,{119,100,0}}, +/* 61734 */ {(13<<2)|2,{119,100,0}}, +/* 61735 */ {(13<<2)|2,{119,100,0}}, +/* 61736 */ {(13<<2)|2,{119,102,0}}, +/* 61737 */ {(13<<2)|2,{119,102,0}}, +/* 61738 */ {(13<<2)|2,{119,102,0}}, +/* 61739 */ {(13<<2)|2,{119,102,0}}, +/* 61740 */ {(13<<2)|2,{119,102,0}}, +/* 61741 */ {(13<<2)|2,{119,102,0}}, +/* 61742 */ {(13<<2)|2,{119,102,0}}, +/* 61743 */ {(13<<2)|2,{119,102,0}}, +/* 61744 */ {(13<<2)|2,{119,103,0}}, +/* 61745 */ {(13<<2)|2,{119,103,0}}, +/* 61746 */ {(13<<2)|2,{119,103,0}}, +/* 61747 */ {(13<<2)|2,{119,103,0}}, +/* 61748 */ {(13<<2)|2,{119,103,0}}, +/* 61749 */ {(13<<2)|2,{119,103,0}}, +/* 61750 */ {(13<<2)|2,{119,103,0}}, +/* 61751 */ {(13<<2)|2,{119,103,0}}, +/* 61752 */ {(13<<2)|2,{119,104,0}}, +/* 61753 */ {(13<<2)|2,{119,104,0}}, +/* 61754 */ {(13<<2)|2,{119,104,0}}, +/* 61755 */ {(13<<2)|2,{119,104,0}}, +/* 61756 */ {(13<<2)|2,{119,104,0}}, +/* 61757 */ {(13<<2)|2,{119,104,0}}, +/* 61758 */ {(13<<2)|2,{119,104,0}}, +/* 61759 */ {(13<<2)|2,{119,104,0}}, +/* 61760 */ {(13<<2)|2,{119,108,0}}, +/* 61761 */ {(13<<2)|2,{119,108,0}}, +/* 61762 */ {(13<<2)|2,{119,108,0}}, +/* 61763 */ {(13<<2)|2,{119,108,0}}, +/* 61764 */ {(13<<2)|2,{119,108,0}}, +/* 61765 */ {(13<<2)|2,{119,108,0}}, +/* 61766 */ {(13<<2)|2,{119,108,0}}, +/* 61767 */ {(13<<2)|2,{119,108,0}}, +/* 61768 */ {(13<<2)|2,{119,109,0}}, +/* 61769 */ {(13<<2)|2,{119,109,0}}, +/* 61770 */ {(13<<2)|2,{119,109,0}}, +/* 61771 */ {(13<<2)|2,{119,109,0}}, +/* 61772 */ {(13<<2)|2,{119,109,0}}, +/* 61773 */ {(13<<2)|2,{119,109,0}}, +/* 61774 */ {(13<<2)|2,{119,109,0}}, +/* 61775 */ {(13<<2)|2,{119,109,0}}, +/* 61776 */ {(13<<2)|2,{119,110,0}}, +/* 61777 */ {(13<<2)|2,{119,110,0}}, +/* 61778 */ {(13<<2)|2,{119,110,0}}, +/* 61779 */ {(13<<2)|2,{119,110,0}}, +/* 61780 */ {(13<<2)|2,{119,110,0}}, +/* 61781 */ {(13<<2)|2,{119,110,0}}, +/* 61782 */ {(13<<2)|2,{119,110,0}}, +/* 61783 */ {(13<<2)|2,{119,110,0}}, +/* 61784 */ {(13<<2)|2,{119,112,0}}, +/* 61785 */ {(13<<2)|2,{119,112,0}}, +/* 61786 */ {(13<<2)|2,{119,112,0}}, +/* 61787 */ {(13<<2)|2,{119,112,0}}, +/* 61788 */ {(13<<2)|2,{119,112,0}}, +/* 61789 */ {(13<<2)|2,{119,112,0}}, +/* 61790 */ {(13<<2)|2,{119,112,0}}, +/* 61791 */ {(13<<2)|2,{119,112,0}}, +/* 61792 */ {(13<<2)|2,{119,114,0}}, +/* 61793 */ {(13<<2)|2,{119,114,0}}, +/* 61794 */ {(13<<2)|2,{119,114,0}}, +/* 61795 */ {(13<<2)|2,{119,114,0}}, +/* 61796 */ {(13<<2)|2,{119,114,0}}, +/* 61797 */ {(13<<2)|2,{119,114,0}}, +/* 61798 */ {(13<<2)|2,{119,114,0}}, +/* 61799 */ {(13<<2)|2,{119,114,0}}, +/* 61800 */ {(13<<2)|2,{119,117,0}}, +/* 61801 */ {(13<<2)|2,{119,117,0}}, +/* 61802 */ {(13<<2)|2,{119,117,0}}, +/* 61803 */ {(13<<2)|2,{119,117,0}}, +/* 61804 */ {(13<<2)|2,{119,117,0}}, +/* 61805 */ {(13<<2)|2,{119,117,0}}, +/* 61806 */ {(13<<2)|2,{119,117,0}}, +/* 61807 */ {(13<<2)|2,{119,117,0}}, +/* 61808 */ {(14<<2)|2,{119,58,0}}, +/* 61809 */ {(14<<2)|2,{119,58,0}}, +/* 61810 */ {(14<<2)|2,{119,58,0}}, +/* 61811 */ {(14<<2)|2,{119,58,0}}, +/* 61812 */ {(14<<2)|2,{119,66,0}}, +/* 61813 */ {(14<<2)|2,{119,66,0}}, +/* 61814 */ {(14<<2)|2,{119,66,0}}, +/* 61815 */ {(14<<2)|2,{119,66,0}}, +/* 61816 */ {(14<<2)|2,{119,67,0}}, +/* 61817 */ {(14<<2)|2,{119,67,0}}, +/* 61818 */ {(14<<2)|2,{119,67,0}}, +/* 61819 */ {(14<<2)|2,{119,67,0}}, +/* 61820 */ {(14<<2)|2,{119,68,0}}, +/* 61821 */ {(14<<2)|2,{119,68,0}}, +/* 61822 */ {(14<<2)|2,{119,68,0}}, +/* 61823 */ {(14<<2)|2,{119,68,0}}, +/* 61824 */ {(14<<2)|2,{119,69,0}}, +/* 61825 */ {(14<<2)|2,{119,69,0}}, +/* 61826 */ {(14<<2)|2,{119,69,0}}, +/* 61827 */ {(14<<2)|2,{119,69,0}}, +/* 61828 */ {(14<<2)|2,{119,70,0}}, +/* 61829 */ {(14<<2)|2,{119,70,0}}, +/* 61830 */ {(14<<2)|2,{119,70,0}}, +/* 61831 */ {(14<<2)|2,{119,70,0}}, +/* 61832 */ {(14<<2)|2,{119,71,0}}, +/* 61833 */ {(14<<2)|2,{119,71,0}}, +/* 61834 */ {(14<<2)|2,{119,71,0}}, +/* 61835 */ {(14<<2)|2,{119,71,0}}, +/* 61836 */ {(14<<2)|2,{119,72,0}}, +/* 61837 */ {(14<<2)|2,{119,72,0}}, +/* 61838 */ {(14<<2)|2,{119,72,0}}, +/* 61839 */ {(14<<2)|2,{119,72,0}}, +/* 61840 */ {(14<<2)|2,{119,73,0}}, +/* 61841 */ {(14<<2)|2,{119,73,0}}, +/* 61842 */ {(14<<2)|2,{119,73,0}}, +/* 61843 */ {(14<<2)|2,{119,73,0}}, +/* 61844 */ {(14<<2)|2,{119,74,0}}, +/* 61845 */ {(14<<2)|2,{119,74,0}}, +/* 61846 */ {(14<<2)|2,{119,74,0}}, +/* 61847 */ {(14<<2)|2,{119,74,0}}, +/* 61848 */ {(14<<2)|2,{119,75,0}}, +/* 61849 */ {(14<<2)|2,{119,75,0}}, +/* 61850 */ {(14<<2)|2,{119,75,0}}, +/* 61851 */ {(14<<2)|2,{119,75,0}}, +/* 61852 */ {(14<<2)|2,{119,76,0}}, +/* 61853 */ {(14<<2)|2,{119,76,0}}, +/* 61854 */ {(14<<2)|2,{119,76,0}}, +/* 61855 */ {(14<<2)|2,{119,76,0}}, +/* 61856 */ {(14<<2)|2,{119,77,0}}, +/* 61857 */ {(14<<2)|2,{119,77,0}}, +/* 61858 */ {(14<<2)|2,{119,77,0}}, +/* 61859 */ {(14<<2)|2,{119,77,0}}, +/* 61860 */ {(14<<2)|2,{119,78,0}}, +/* 61861 */ {(14<<2)|2,{119,78,0}}, +/* 61862 */ {(14<<2)|2,{119,78,0}}, +/* 61863 */ {(14<<2)|2,{119,78,0}}, +/* 61864 */ {(14<<2)|2,{119,79,0}}, +/* 61865 */ {(14<<2)|2,{119,79,0}}, +/* 61866 */ {(14<<2)|2,{119,79,0}}, +/* 61867 */ {(14<<2)|2,{119,79,0}}, +/* 61868 */ {(14<<2)|2,{119,80,0}}, +/* 61869 */ {(14<<2)|2,{119,80,0}}, +/* 61870 */ {(14<<2)|2,{119,80,0}}, +/* 61871 */ {(14<<2)|2,{119,80,0}}, +/* 61872 */ {(14<<2)|2,{119,81,0}}, +/* 61873 */ {(14<<2)|2,{119,81,0}}, +/* 61874 */ {(14<<2)|2,{119,81,0}}, +/* 61875 */ {(14<<2)|2,{119,81,0}}, +/* 61876 */ {(14<<2)|2,{119,82,0}}, +/* 61877 */ {(14<<2)|2,{119,82,0}}, +/* 61878 */ {(14<<2)|2,{119,82,0}}, +/* 61879 */ {(14<<2)|2,{119,82,0}}, +/* 61880 */ {(14<<2)|2,{119,83,0}}, +/* 61881 */ {(14<<2)|2,{119,83,0}}, +/* 61882 */ {(14<<2)|2,{119,83,0}}, +/* 61883 */ {(14<<2)|2,{119,83,0}}, +/* 61884 */ {(14<<2)|2,{119,84,0}}, +/* 61885 */ {(14<<2)|2,{119,84,0}}, +/* 61886 */ {(14<<2)|2,{119,84,0}}, +/* 61887 */ {(14<<2)|2,{119,84,0}}, +/* 61888 */ {(14<<2)|2,{119,85,0}}, +/* 61889 */ {(14<<2)|2,{119,85,0}}, +/* 61890 */ {(14<<2)|2,{119,85,0}}, +/* 61891 */ {(14<<2)|2,{119,85,0}}, +/* 61892 */ {(14<<2)|2,{119,86,0}}, +/* 61893 */ {(14<<2)|2,{119,86,0}}, +/* 61894 */ {(14<<2)|2,{119,86,0}}, +/* 61895 */ {(14<<2)|2,{119,86,0}}, +/* 61896 */ {(14<<2)|2,{119,87,0}}, +/* 61897 */ {(14<<2)|2,{119,87,0}}, +/* 61898 */ {(14<<2)|2,{119,87,0}}, +/* 61899 */ {(14<<2)|2,{119,87,0}}, +/* 61900 */ {(14<<2)|2,{119,89,0}}, +/* 61901 */ {(14<<2)|2,{119,89,0}}, +/* 61902 */ {(14<<2)|2,{119,89,0}}, +/* 61903 */ {(14<<2)|2,{119,89,0}}, +/* 61904 */ {(14<<2)|2,{119,106,0}}, +/* 61905 */ {(14<<2)|2,{119,106,0}}, +/* 61906 */ {(14<<2)|2,{119,106,0}}, +/* 61907 */ {(14<<2)|2,{119,106,0}}, +/* 61908 */ {(14<<2)|2,{119,107,0}}, +/* 61909 */ {(14<<2)|2,{119,107,0}}, +/* 61910 */ {(14<<2)|2,{119,107,0}}, +/* 61911 */ {(14<<2)|2,{119,107,0}}, +/* 61912 */ {(14<<2)|2,{119,113,0}}, +/* 61913 */ {(14<<2)|2,{119,113,0}}, +/* 61914 */ {(14<<2)|2,{119,113,0}}, +/* 61915 */ {(14<<2)|2,{119,113,0}}, +/* 61916 */ {(14<<2)|2,{119,118,0}}, +/* 61917 */ {(14<<2)|2,{119,118,0}}, +/* 61918 */ {(14<<2)|2,{119,118,0}}, +/* 61919 */ {(14<<2)|2,{119,118,0}}, +/* 61920 */ {(14<<2)|2,{119,119,0}}, +/* 61921 */ {(14<<2)|2,{119,119,0}}, +/* 61922 */ {(14<<2)|2,{119,119,0}}, +/* 61923 */ {(14<<2)|2,{119,119,0}}, +/* 61924 */ {(14<<2)|2,{119,120,0}}, +/* 61925 */ {(14<<2)|2,{119,120,0}}, +/* 61926 */ {(14<<2)|2,{119,120,0}}, +/* 61927 */ {(14<<2)|2,{119,120,0}}, +/* 61928 */ {(14<<2)|2,{119,121,0}}, +/* 61929 */ {(14<<2)|2,{119,121,0}}, +/* 61930 */ {(14<<2)|2,{119,121,0}}, +/* 61931 */ {(14<<2)|2,{119,121,0}}, +/* 61932 */ {(14<<2)|2,{119,122,0}}, +/* 61933 */ {(14<<2)|2,{119,122,0}}, +/* 61934 */ {(14<<2)|2,{119,122,0}}, +/* 61935 */ {(14<<2)|2,{119,122,0}}, +/* 61936 */ {(15<<2)|2,{119,38,0}}, +/* 61937 */ {(15<<2)|2,{119,38,0}}, +/* 61938 */ {(15<<2)|2,{119,42,0}}, +/* 61939 */ {(15<<2)|2,{119,42,0}}, +/* 61940 */ {(15<<2)|2,{119,44,0}}, +/* 61941 */ {(15<<2)|2,{119,44,0}}, +/* 61942 */ {(15<<2)|2,{119,59,0}}, +/* 61943 */ {(15<<2)|2,{119,59,0}}, +/* 61944 */ {(15<<2)|2,{119,88,0}}, +/* 61945 */ {(15<<2)|2,{119,88,0}}, +/* 61946 */ {(15<<2)|2,{119,90,0}}, +/* 61947 */ {(15<<2)|2,{119,90,0}}, +/* 61948 */ {(7<<2)|1,{119,0,0}}, +/* 61949 */ {(7<<2)|1,{119,0,0}}, +/* 61950 */ {(7<<2)|1,{119,0,0}}, +/* 61951 */ {(7<<2)|1,{119,0,0}}, +/* 61952 */ {(12<<2)|2,{120,48,0}}, +/* 61953 */ {(12<<2)|2,{120,48,0}}, +/* 61954 */ {(12<<2)|2,{120,48,0}}, +/* 61955 */ {(12<<2)|2,{120,48,0}}, +/* 61956 */ {(12<<2)|2,{120,48,0}}, +/* 61957 */ {(12<<2)|2,{120,48,0}}, +/* 61958 */ {(12<<2)|2,{120,48,0}}, +/* 61959 */ {(12<<2)|2,{120,48,0}}, +/* 61960 */ {(12<<2)|2,{120,48,0}}, +/* 61961 */ {(12<<2)|2,{120,48,0}}, +/* 61962 */ {(12<<2)|2,{120,48,0}}, +/* 61963 */ {(12<<2)|2,{120,48,0}}, +/* 61964 */ {(12<<2)|2,{120,48,0}}, +/* 61965 */ {(12<<2)|2,{120,48,0}}, +/* 61966 */ {(12<<2)|2,{120,48,0}}, +/* 61967 */ {(12<<2)|2,{120,48,0}}, +/* 61968 */ {(12<<2)|2,{120,49,0}}, +/* 61969 */ {(12<<2)|2,{120,49,0}}, +/* 61970 */ {(12<<2)|2,{120,49,0}}, +/* 61971 */ {(12<<2)|2,{120,49,0}}, +/* 61972 */ {(12<<2)|2,{120,49,0}}, +/* 61973 */ {(12<<2)|2,{120,49,0}}, +/* 61974 */ {(12<<2)|2,{120,49,0}}, +/* 61975 */ {(12<<2)|2,{120,49,0}}, +/* 61976 */ {(12<<2)|2,{120,49,0}}, +/* 61977 */ {(12<<2)|2,{120,49,0}}, +/* 61978 */ {(12<<2)|2,{120,49,0}}, +/* 61979 */ {(12<<2)|2,{120,49,0}}, +/* 61980 */ {(12<<2)|2,{120,49,0}}, +/* 61981 */ {(12<<2)|2,{120,49,0}}, +/* 61982 */ {(12<<2)|2,{120,49,0}}, +/* 61983 */ {(12<<2)|2,{120,49,0}}, +/* 61984 */ {(12<<2)|2,{120,50,0}}, +/* 61985 */ {(12<<2)|2,{120,50,0}}, +/* 61986 */ {(12<<2)|2,{120,50,0}}, +/* 61987 */ {(12<<2)|2,{120,50,0}}, +/* 61988 */ {(12<<2)|2,{120,50,0}}, +/* 61989 */ {(12<<2)|2,{120,50,0}}, +/* 61990 */ {(12<<2)|2,{120,50,0}}, +/* 61991 */ {(12<<2)|2,{120,50,0}}, +/* 61992 */ {(12<<2)|2,{120,50,0}}, +/* 61993 */ {(12<<2)|2,{120,50,0}}, +/* 61994 */ {(12<<2)|2,{120,50,0}}, +/* 61995 */ {(12<<2)|2,{120,50,0}}, +/* 61996 */ {(12<<2)|2,{120,50,0}}, +/* 61997 */ {(12<<2)|2,{120,50,0}}, +/* 61998 */ {(12<<2)|2,{120,50,0}}, +/* 61999 */ {(12<<2)|2,{120,50,0}}, +/* 62000 */ {(12<<2)|2,{120,97,0}}, +/* 62001 */ {(12<<2)|2,{120,97,0}}, +/* 62002 */ {(12<<2)|2,{120,97,0}}, +/* 62003 */ {(12<<2)|2,{120,97,0}}, +/* 62004 */ {(12<<2)|2,{120,97,0}}, +/* 62005 */ {(12<<2)|2,{120,97,0}}, +/* 62006 */ {(12<<2)|2,{120,97,0}}, +/* 62007 */ {(12<<2)|2,{120,97,0}}, +/* 62008 */ {(12<<2)|2,{120,97,0}}, +/* 62009 */ {(12<<2)|2,{120,97,0}}, +/* 62010 */ {(12<<2)|2,{120,97,0}}, +/* 62011 */ {(12<<2)|2,{120,97,0}}, +/* 62012 */ {(12<<2)|2,{120,97,0}}, +/* 62013 */ {(12<<2)|2,{120,97,0}}, +/* 62014 */ {(12<<2)|2,{120,97,0}}, +/* 62015 */ {(12<<2)|2,{120,97,0}}, +/* 62016 */ {(12<<2)|2,{120,99,0}}, +/* 62017 */ {(12<<2)|2,{120,99,0}}, +/* 62018 */ {(12<<2)|2,{120,99,0}}, +/* 62019 */ {(12<<2)|2,{120,99,0}}, +/* 62020 */ {(12<<2)|2,{120,99,0}}, +/* 62021 */ {(12<<2)|2,{120,99,0}}, +/* 62022 */ {(12<<2)|2,{120,99,0}}, +/* 62023 */ {(12<<2)|2,{120,99,0}}, +/* 62024 */ {(12<<2)|2,{120,99,0}}, +/* 62025 */ {(12<<2)|2,{120,99,0}}, +/* 62026 */ {(12<<2)|2,{120,99,0}}, +/* 62027 */ {(12<<2)|2,{120,99,0}}, +/* 62028 */ {(12<<2)|2,{120,99,0}}, +/* 62029 */ {(12<<2)|2,{120,99,0}}, +/* 62030 */ {(12<<2)|2,{120,99,0}}, +/* 62031 */ {(12<<2)|2,{120,99,0}}, +/* 62032 */ {(12<<2)|2,{120,101,0}}, +/* 62033 */ {(12<<2)|2,{120,101,0}}, +/* 62034 */ {(12<<2)|2,{120,101,0}}, +/* 62035 */ {(12<<2)|2,{120,101,0}}, +/* 62036 */ {(12<<2)|2,{120,101,0}}, +/* 62037 */ {(12<<2)|2,{120,101,0}}, +/* 62038 */ {(12<<2)|2,{120,101,0}}, +/* 62039 */ {(12<<2)|2,{120,101,0}}, +/* 62040 */ {(12<<2)|2,{120,101,0}}, +/* 62041 */ {(12<<2)|2,{120,101,0}}, +/* 62042 */ {(12<<2)|2,{120,101,0}}, +/* 62043 */ {(12<<2)|2,{120,101,0}}, +/* 62044 */ {(12<<2)|2,{120,101,0}}, +/* 62045 */ {(12<<2)|2,{120,101,0}}, +/* 62046 */ {(12<<2)|2,{120,101,0}}, +/* 62047 */ {(12<<2)|2,{120,101,0}}, +/* 62048 */ {(12<<2)|2,{120,105,0}}, +/* 62049 */ {(12<<2)|2,{120,105,0}}, +/* 62050 */ {(12<<2)|2,{120,105,0}}, +/* 62051 */ {(12<<2)|2,{120,105,0}}, +/* 62052 */ {(12<<2)|2,{120,105,0}}, +/* 62053 */ {(12<<2)|2,{120,105,0}}, +/* 62054 */ {(12<<2)|2,{120,105,0}}, +/* 62055 */ {(12<<2)|2,{120,105,0}}, +/* 62056 */ {(12<<2)|2,{120,105,0}}, +/* 62057 */ {(12<<2)|2,{120,105,0}}, +/* 62058 */ {(12<<2)|2,{120,105,0}}, +/* 62059 */ {(12<<2)|2,{120,105,0}}, +/* 62060 */ {(12<<2)|2,{120,105,0}}, +/* 62061 */ {(12<<2)|2,{120,105,0}}, +/* 62062 */ {(12<<2)|2,{120,105,0}}, +/* 62063 */ {(12<<2)|2,{120,105,0}}, +/* 62064 */ {(12<<2)|2,{120,111,0}}, +/* 62065 */ {(12<<2)|2,{120,111,0}}, +/* 62066 */ {(12<<2)|2,{120,111,0}}, +/* 62067 */ {(12<<2)|2,{120,111,0}}, +/* 62068 */ {(12<<2)|2,{120,111,0}}, +/* 62069 */ {(12<<2)|2,{120,111,0}}, +/* 62070 */ {(12<<2)|2,{120,111,0}}, +/* 62071 */ {(12<<2)|2,{120,111,0}}, +/* 62072 */ {(12<<2)|2,{120,111,0}}, +/* 62073 */ {(12<<2)|2,{120,111,0}}, +/* 62074 */ {(12<<2)|2,{120,111,0}}, +/* 62075 */ {(12<<2)|2,{120,111,0}}, +/* 62076 */ {(12<<2)|2,{120,111,0}}, +/* 62077 */ {(12<<2)|2,{120,111,0}}, +/* 62078 */ {(12<<2)|2,{120,111,0}}, +/* 62079 */ {(12<<2)|2,{120,111,0}}, +/* 62080 */ {(12<<2)|2,{120,115,0}}, +/* 62081 */ {(12<<2)|2,{120,115,0}}, +/* 62082 */ {(12<<2)|2,{120,115,0}}, +/* 62083 */ {(12<<2)|2,{120,115,0}}, +/* 62084 */ {(12<<2)|2,{120,115,0}}, +/* 62085 */ {(12<<2)|2,{120,115,0}}, +/* 62086 */ {(12<<2)|2,{120,115,0}}, +/* 62087 */ {(12<<2)|2,{120,115,0}}, +/* 62088 */ {(12<<2)|2,{120,115,0}}, +/* 62089 */ {(12<<2)|2,{120,115,0}}, +/* 62090 */ {(12<<2)|2,{120,115,0}}, +/* 62091 */ {(12<<2)|2,{120,115,0}}, +/* 62092 */ {(12<<2)|2,{120,115,0}}, +/* 62093 */ {(12<<2)|2,{120,115,0}}, +/* 62094 */ {(12<<2)|2,{120,115,0}}, +/* 62095 */ {(12<<2)|2,{120,115,0}}, +/* 62096 */ {(12<<2)|2,{120,116,0}}, +/* 62097 */ {(12<<2)|2,{120,116,0}}, +/* 62098 */ {(12<<2)|2,{120,116,0}}, +/* 62099 */ {(12<<2)|2,{120,116,0}}, +/* 62100 */ {(12<<2)|2,{120,116,0}}, +/* 62101 */ {(12<<2)|2,{120,116,0}}, +/* 62102 */ {(12<<2)|2,{120,116,0}}, +/* 62103 */ {(12<<2)|2,{120,116,0}}, +/* 62104 */ {(12<<2)|2,{120,116,0}}, +/* 62105 */ {(12<<2)|2,{120,116,0}}, +/* 62106 */ {(12<<2)|2,{120,116,0}}, +/* 62107 */ {(12<<2)|2,{120,116,0}}, +/* 62108 */ {(12<<2)|2,{120,116,0}}, +/* 62109 */ {(12<<2)|2,{120,116,0}}, +/* 62110 */ {(12<<2)|2,{120,116,0}}, +/* 62111 */ {(12<<2)|2,{120,116,0}}, +/* 62112 */ {(13<<2)|2,{120,32,0}}, +/* 62113 */ {(13<<2)|2,{120,32,0}}, +/* 62114 */ {(13<<2)|2,{120,32,0}}, +/* 62115 */ {(13<<2)|2,{120,32,0}}, +/* 62116 */ {(13<<2)|2,{120,32,0}}, +/* 62117 */ {(13<<2)|2,{120,32,0}}, +/* 62118 */ {(13<<2)|2,{120,32,0}}, +/* 62119 */ {(13<<2)|2,{120,32,0}}, +/* 62120 */ {(13<<2)|2,{120,37,0}}, +/* 62121 */ {(13<<2)|2,{120,37,0}}, +/* 62122 */ {(13<<2)|2,{120,37,0}}, +/* 62123 */ {(13<<2)|2,{120,37,0}}, +/* 62124 */ {(13<<2)|2,{120,37,0}}, +/* 62125 */ {(13<<2)|2,{120,37,0}}, +/* 62126 */ {(13<<2)|2,{120,37,0}}, +/* 62127 */ {(13<<2)|2,{120,37,0}}, +/* 62128 */ {(13<<2)|2,{120,45,0}}, +/* 62129 */ {(13<<2)|2,{120,45,0}}, +/* 62130 */ {(13<<2)|2,{120,45,0}}, +/* 62131 */ {(13<<2)|2,{120,45,0}}, +/* 62132 */ {(13<<2)|2,{120,45,0}}, +/* 62133 */ {(13<<2)|2,{120,45,0}}, +/* 62134 */ {(13<<2)|2,{120,45,0}}, +/* 62135 */ {(13<<2)|2,{120,45,0}}, +/* 62136 */ {(13<<2)|2,{120,46,0}}, +/* 62137 */ {(13<<2)|2,{120,46,0}}, +/* 62138 */ {(13<<2)|2,{120,46,0}}, +/* 62139 */ {(13<<2)|2,{120,46,0}}, +/* 62140 */ {(13<<2)|2,{120,46,0}}, +/* 62141 */ {(13<<2)|2,{120,46,0}}, +/* 62142 */ {(13<<2)|2,{120,46,0}}, +/* 62143 */ {(13<<2)|2,{120,46,0}}, +/* 62144 */ {(13<<2)|2,{120,47,0}}, +/* 62145 */ {(13<<2)|2,{120,47,0}}, +/* 62146 */ {(13<<2)|2,{120,47,0}}, +/* 62147 */ {(13<<2)|2,{120,47,0}}, +/* 62148 */ {(13<<2)|2,{120,47,0}}, +/* 62149 */ {(13<<2)|2,{120,47,0}}, +/* 62150 */ {(13<<2)|2,{120,47,0}}, +/* 62151 */ {(13<<2)|2,{120,47,0}}, +/* 62152 */ {(13<<2)|2,{120,51,0}}, +/* 62153 */ {(13<<2)|2,{120,51,0}}, +/* 62154 */ {(13<<2)|2,{120,51,0}}, +/* 62155 */ {(13<<2)|2,{120,51,0}}, +/* 62156 */ {(13<<2)|2,{120,51,0}}, +/* 62157 */ {(13<<2)|2,{120,51,0}}, +/* 62158 */ {(13<<2)|2,{120,51,0}}, +/* 62159 */ {(13<<2)|2,{120,51,0}}, +/* 62160 */ {(13<<2)|2,{120,52,0}}, +/* 62161 */ {(13<<2)|2,{120,52,0}}, +/* 62162 */ {(13<<2)|2,{120,52,0}}, +/* 62163 */ {(13<<2)|2,{120,52,0}}, +/* 62164 */ {(13<<2)|2,{120,52,0}}, +/* 62165 */ {(13<<2)|2,{120,52,0}}, +/* 62166 */ {(13<<2)|2,{120,52,0}}, +/* 62167 */ {(13<<2)|2,{120,52,0}}, +/* 62168 */ {(13<<2)|2,{120,53,0}}, +/* 62169 */ {(13<<2)|2,{120,53,0}}, +/* 62170 */ {(13<<2)|2,{120,53,0}}, +/* 62171 */ {(13<<2)|2,{120,53,0}}, +/* 62172 */ {(13<<2)|2,{120,53,0}}, +/* 62173 */ {(13<<2)|2,{120,53,0}}, +/* 62174 */ {(13<<2)|2,{120,53,0}}, +/* 62175 */ {(13<<2)|2,{120,53,0}}, +/* 62176 */ {(13<<2)|2,{120,54,0}}, +/* 62177 */ {(13<<2)|2,{120,54,0}}, +/* 62178 */ {(13<<2)|2,{120,54,0}}, +/* 62179 */ {(13<<2)|2,{120,54,0}}, +/* 62180 */ {(13<<2)|2,{120,54,0}}, +/* 62181 */ {(13<<2)|2,{120,54,0}}, +/* 62182 */ {(13<<2)|2,{120,54,0}}, +/* 62183 */ {(13<<2)|2,{120,54,0}}, +/* 62184 */ {(13<<2)|2,{120,55,0}}, +/* 62185 */ {(13<<2)|2,{120,55,0}}, +/* 62186 */ {(13<<2)|2,{120,55,0}}, +/* 62187 */ {(13<<2)|2,{120,55,0}}, +/* 62188 */ {(13<<2)|2,{120,55,0}}, +/* 62189 */ {(13<<2)|2,{120,55,0}}, +/* 62190 */ {(13<<2)|2,{120,55,0}}, +/* 62191 */ {(13<<2)|2,{120,55,0}}, +/* 62192 */ {(13<<2)|2,{120,56,0}}, +/* 62193 */ {(13<<2)|2,{120,56,0}}, +/* 62194 */ {(13<<2)|2,{120,56,0}}, +/* 62195 */ {(13<<2)|2,{120,56,0}}, +/* 62196 */ {(13<<2)|2,{120,56,0}}, +/* 62197 */ {(13<<2)|2,{120,56,0}}, +/* 62198 */ {(13<<2)|2,{120,56,0}}, +/* 62199 */ {(13<<2)|2,{120,56,0}}, +/* 62200 */ {(13<<2)|2,{120,57,0}}, +/* 62201 */ {(13<<2)|2,{120,57,0}}, +/* 62202 */ {(13<<2)|2,{120,57,0}}, +/* 62203 */ {(13<<2)|2,{120,57,0}}, +/* 62204 */ {(13<<2)|2,{120,57,0}}, +/* 62205 */ {(13<<2)|2,{120,57,0}}, +/* 62206 */ {(13<<2)|2,{120,57,0}}, +/* 62207 */ {(13<<2)|2,{120,57,0}}, +/* 62208 */ {(13<<2)|2,{120,61,0}}, +/* 62209 */ {(13<<2)|2,{120,61,0}}, +/* 62210 */ {(13<<2)|2,{120,61,0}}, +/* 62211 */ {(13<<2)|2,{120,61,0}}, +/* 62212 */ {(13<<2)|2,{120,61,0}}, +/* 62213 */ {(13<<2)|2,{120,61,0}}, +/* 62214 */ {(13<<2)|2,{120,61,0}}, +/* 62215 */ {(13<<2)|2,{120,61,0}}, +/* 62216 */ {(13<<2)|2,{120,65,0}}, +/* 62217 */ {(13<<2)|2,{120,65,0}}, +/* 62218 */ {(13<<2)|2,{120,65,0}}, +/* 62219 */ {(13<<2)|2,{120,65,0}}, +/* 62220 */ {(13<<2)|2,{120,65,0}}, +/* 62221 */ {(13<<2)|2,{120,65,0}}, +/* 62222 */ {(13<<2)|2,{120,65,0}}, +/* 62223 */ {(13<<2)|2,{120,65,0}}, +/* 62224 */ {(13<<2)|2,{120,95,0}}, +/* 62225 */ {(13<<2)|2,{120,95,0}}, +/* 62226 */ {(13<<2)|2,{120,95,0}}, +/* 62227 */ {(13<<2)|2,{120,95,0}}, +/* 62228 */ {(13<<2)|2,{120,95,0}}, +/* 62229 */ {(13<<2)|2,{120,95,0}}, +/* 62230 */ {(13<<2)|2,{120,95,0}}, +/* 62231 */ {(13<<2)|2,{120,95,0}}, +/* 62232 */ {(13<<2)|2,{120,98,0}}, +/* 62233 */ {(13<<2)|2,{120,98,0}}, +/* 62234 */ {(13<<2)|2,{120,98,0}}, +/* 62235 */ {(13<<2)|2,{120,98,0}}, +/* 62236 */ {(13<<2)|2,{120,98,0}}, +/* 62237 */ {(13<<2)|2,{120,98,0}}, +/* 62238 */ {(13<<2)|2,{120,98,0}}, +/* 62239 */ {(13<<2)|2,{120,98,0}}, +/* 62240 */ {(13<<2)|2,{120,100,0}}, +/* 62241 */ {(13<<2)|2,{120,100,0}}, +/* 62242 */ {(13<<2)|2,{120,100,0}}, +/* 62243 */ {(13<<2)|2,{120,100,0}}, +/* 62244 */ {(13<<2)|2,{120,100,0}}, +/* 62245 */ {(13<<2)|2,{120,100,0}}, +/* 62246 */ {(13<<2)|2,{120,100,0}}, +/* 62247 */ {(13<<2)|2,{120,100,0}}, +/* 62248 */ {(13<<2)|2,{120,102,0}}, +/* 62249 */ {(13<<2)|2,{120,102,0}}, +/* 62250 */ {(13<<2)|2,{120,102,0}}, +/* 62251 */ {(13<<2)|2,{120,102,0}}, +/* 62252 */ {(13<<2)|2,{120,102,0}}, +/* 62253 */ {(13<<2)|2,{120,102,0}}, +/* 62254 */ {(13<<2)|2,{120,102,0}}, +/* 62255 */ {(13<<2)|2,{120,102,0}}, +/* 62256 */ {(13<<2)|2,{120,103,0}}, +/* 62257 */ {(13<<2)|2,{120,103,0}}, +/* 62258 */ {(13<<2)|2,{120,103,0}}, +/* 62259 */ {(13<<2)|2,{120,103,0}}, +/* 62260 */ {(13<<2)|2,{120,103,0}}, +/* 62261 */ {(13<<2)|2,{120,103,0}}, +/* 62262 */ {(13<<2)|2,{120,103,0}}, +/* 62263 */ {(13<<2)|2,{120,103,0}}, +/* 62264 */ {(13<<2)|2,{120,104,0}}, +/* 62265 */ {(13<<2)|2,{120,104,0}}, +/* 62266 */ {(13<<2)|2,{120,104,0}}, +/* 62267 */ {(13<<2)|2,{120,104,0}}, +/* 62268 */ {(13<<2)|2,{120,104,0}}, +/* 62269 */ {(13<<2)|2,{120,104,0}}, +/* 62270 */ {(13<<2)|2,{120,104,0}}, +/* 62271 */ {(13<<2)|2,{120,104,0}}, +/* 62272 */ {(13<<2)|2,{120,108,0}}, +/* 62273 */ {(13<<2)|2,{120,108,0}}, +/* 62274 */ {(13<<2)|2,{120,108,0}}, +/* 62275 */ {(13<<2)|2,{120,108,0}}, +/* 62276 */ {(13<<2)|2,{120,108,0}}, +/* 62277 */ {(13<<2)|2,{120,108,0}}, +/* 62278 */ {(13<<2)|2,{120,108,0}}, +/* 62279 */ {(13<<2)|2,{120,108,0}}, +/* 62280 */ {(13<<2)|2,{120,109,0}}, +/* 62281 */ {(13<<2)|2,{120,109,0}}, +/* 62282 */ {(13<<2)|2,{120,109,0}}, +/* 62283 */ {(13<<2)|2,{120,109,0}}, +/* 62284 */ {(13<<2)|2,{120,109,0}}, +/* 62285 */ {(13<<2)|2,{120,109,0}}, +/* 62286 */ {(13<<2)|2,{120,109,0}}, +/* 62287 */ {(13<<2)|2,{120,109,0}}, +/* 62288 */ {(13<<2)|2,{120,110,0}}, +/* 62289 */ {(13<<2)|2,{120,110,0}}, +/* 62290 */ {(13<<2)|2,{120,110,0}}, +/* 62291 */ {(13<<2)|2,{120,110,0}}, +/* 62292 */ {(13<<2)|2,{120,110,0}}, +/* 62293 */ {(13<<2)|2,{120,110,0}}, +/* 62294 */ {(13<<2)|2,{120,110,0}}, +/* 62295 */ {(13<<2)|2,{120,110,0}}, +/* 62296 */ {(13<<2)|2,{120,112,0}}, +/* 62297 */ {(13<<2)|2,{120,112,0}}, +/* 62298 */ {(13<<2)|2,{120,112,0}}, +/* 62299 */ {(13<<2)|2,{120,112,0}}, +/* 62300 */ {(13<<2)|2,{120,112,0}}, +/* 62301 */ {(13<<2)|2,{120,112,0}}, +/* 62302 */ {(13<<2)|2,{120,112,0}}, +/* 62303 */ {(13<<2)|2,{120,112,0}}, +/* 62304 */ {(13<<2)|2,{120,114,0}}, +/* 62305 */ {(13<<2)|2,{120,114,0}}, +/* 62306 */ {(13<<2)|2,{120,114,0}}, +/* 62307 */ {(13<<2)|2,{120,114,0}}, +/* 62308 */ {(13<<2)|2,{120,114,0}}, +/* 62309 */ {(13<<2)|2,{120,114,0}}, +/* 62310 */ {(13<<2)|2,{120,114,0}}, +/* 62311 */ {(13<<2)|2,{120,114,0}}, +/* 62312 */ {(13<<2)|2,{120,117,0}}, +/* 62313 */ {(13<<2)|2,{120,117,0}}, +/* 62314 */ {(13<<2)|2,{120,117,0}}, +/* 62315 */ {(13<<2)|2,{120,117,0}}, +/* 62316 */ {(13<<2)|2,{120,117,0}}, +/* 62317 */ {(13<<2)|2,{120,117,0}}, +/* 62318 */ {(13<<2)|2,{120,117,0}}, +/* 62319 */ {(13<<2)|2,{120,117,0}}, +/* 62320 */ {(14<<2)|2,{120,58,0}}, +/* 62321 */ {(14<<2)|2,{120,58,0}}, +/* 62322 */ {(14<<2)|2,{120,58,0}}, +/* 62323 */ {(14<<2)|2,{120,58,0}}, +/* 62324 */ {(14<<2)|2,{120,66,0}}, +/* 62325 */ {(14<<2)|2,{120,66,0}}, +/* 62326 */ {(14<<2)|2,{120,66,0}}, +/* 62327 */ {(14<<2)|2,{120,66,0}}, +/* 62328 */ {(14<<2)|2,{120,67,0}}, +/* 62329 */ {(14<<2)|2,{120,67,0}}, +/* 62330 */ {(14<<2)|2,{120,67,0}}, +/* 62331 */ {(14<<2)|2,{120,67,0}}, +/* 62332 */ {(14<<2)|2,{120,68,0}}, +/* 62333 */ {(14<<2)|2,{120,68,0}}, +/* 62334 */ {(14<<2)|2,{120,68,0}}, +/* 62335 */ {(14<<2)|2,{120,68,0}}, +/* 62336 */ {(14<<2)|2,{120,69,0}}, +/* 62337 */ {(14<<2)|2,{120,69,0}}, +/* 62338 */ {(14<<2)|2,{120,69,0}}, +/* 62339 */ {(14<<2)|2,{120,69,0}}, +/* 62340 */ {(14<<2)|2,{120,70,0}}, +/* 62341 */ {(14<<2)|2,{120,70,0}}, +/* 62342 */ {(14<<2)|2,{120,70,0}}, +/* 62343 */ {(14<<2)|2,{120,70,0}}, +/* 62344 */ {(14<<2)|2,{120,71,0}}, +/* 62345 */ {(14<<2)|2,{120,71,0}}, +/* 62346 */ {(14<<2)|2,{120,71,0}}, +/* 62347 */ {(14<<2)|2,{120,71,0}}, +/* 62348 */ {(14<<2)|2,{120,72,0}}, +/* 62349 */ {(14<<2)|2,{120,72,0}}, +/* 62350 */ {(14<<2)|2,{120,72,0}}, +/* 62351 */ {(14<<2)|2,{120,72,0}}, +/* 62352 */ {(14<<2)|2,{120,73,0}}, +/* 62353 */ {(14<<2)|2,{120,73,0}}, +/* 62354 */ {(14<<2)|2,{120,73,0}}, +/* 62355 */ {(14<<2)|2,{120,73,0}}, +/* 62356 */ {(14<<2)|2,{120,74,0}}, +/* 62357 */ {(14<<2)|2,{120,74,0}}, +/* 62358 */ {(14<<2)|2,{120,74,0}}, +/* 62359 */ {(14<<2)|2,{120,74,0}}, +/* 62360 */ {(14<<2)|2,{120,75,0}}, +/* 62361 */ {(14<<2)|2,{120,75,0}}, +/* 62362 */ {(14<<2)|2,{120,75,0}}, +/* 62363 */ {(14<<2)|2,{120,75,0}}, +/* 62364 */ {(14<<2)|2,{120,76,0}}, +/* 62365 */ {(14<<2)|2,{120,76,0}}, +/* 62366 */ {(14<<2)|2,{120,76,0}}, +/* 62367 */ {(14<<2)|2,{120,76,0}}, +/* 62368 */ {(14<<2)|2,{120,77,0}}, +/* 62369 */ {(14<<2)|2,{120,77,0}}, +/* 62370 */ {(14<<2)|2,{120,77,0}}, +/* 62371 */ {(14<<2)|2,{120,77,0}}, +/* 62372 */ {(14<<2)|2,{120,78,0}}, +/* 62373 */ {(14<<2)|2,{120,78,0}}, +/* 62374 */ {(14<<2)|2,{120,78,0}}, +/* 62375 */ {(14<<2)|2,{120,78,0}}, +/* 62376 */ {(14<<2)|2,{120,79,0}}, +/* 62377 */ {(14<<2)|2,{120,79,0}}, +/* 62378 */ {(14<<2)|2,{120,79,0}}, +/* 62379 */ {(14<<2)|2,{120,79,0}}, +/* 62380 */ {(14<<2)|2,{120,80,0}}, +/* 62381 */ {(14<<2)|2,{120,80,0}}, +/* 62382 */ {(14<<2)|2,{120,80,0}}, +/* 62383 */ {(14<<2)|2,{120,80,0}}, +/* 62384 */ {(14<<2)|2,{120,81,0}}, +/* 62385 */ {(14<<2)|2,{120,81,0}}, +/* 62386 */ {(14<<2)|2,{120,81,0}}, +/* 62387 */ {(14<<2)|2,{120,81,0}}, +/* 62388 */ {(14<<2)|2,{120,82,0}}, +/* 62389 */ {(14<<2)|2,{120,82,0}}, +/* 62390 */ {(14<<2)|2,{120,82,0}}, +/* 62391 */ {(14<<2)|2,{120,82,0}}, +/* 62392 */ {(14<<2)|2,{120,83,0}}, +/* 62393 */ {(14<<2)|2,{120,83,0}}, +/* 62394 */ {(14<<2)|2,{120,83,0}}, +/* 62395 */ {(14<<2)|2,{120,83,0}}, +/* 62396 */ {(14<<2)|2,{120,84,0}}, +/* 62397 */ {(14<<2)|2,{120,84,0}}, +/* 62398 */ {(14<<2)|2,{120,84,0}}, +/* 62399 */ {(14<<2)|2,{120,84,0}}, +/* 62400 */ {(14<<2)|2,{120,85,0}}, +/* 62401 */ {(14<<2)|2,{120,85,0}}, +/* 62402 */ {(14<<2)|2,{120,85,0}}, +/* 62403 */ {(14<<2)|2,{120,85,0}}, +/* 62404 */ {(14<<2)|2,{120,86,0}}, +/* 62405 */ {(14<<2)|2,{120,86,0}}, +/* 62406 */ {(14<<2)|2,{120,86,0}}, +/* 62407 */ {(14<<2)|2,{120,86,0}}, +/* 62408 */ {(14<<2)|2,{120,87,0}}, +/* 62409 */ {(14<<2)|2,{120,87,0}}, +/* 62410 */ {(14<<2)|2,{120,87,0}}, +/* 62411 */ {(14<<2)|2,{120,87,0}}, +/* 62412 */ {(14<<2)|2,{120,89,0}}, +/* 62413 */ {(14<<2)|2,{120,89,0}}, +/* 62414 */ {(14<<2)|2,{120,89,0}}, +/* 62415 */ {(14<<2)|2,{120,89,0}}, +/* 62416 */ {(14<<2)|2,{120,106,0}}, +/* 62417 */ {(14<<2)|2,{120,106,0}}, +/* 62418 */ {(14<<2)|2,{120,106,0}}, +/* 62419 */ {(14<<2)|2,{120,106,0}}, +/* 62420 */ {(14<<2)|2,{120,107,0}}, +/* 62421 */ {(14<<2)|2,{120,107,0}}, +/* 62422 */ {(14<<2)|2,{120,107,0}}, +/* 62423 */ {(14<<2)|2,{120,107,0}}, +/* 62424 */ {(14<<2)|2,{120,113,0}}, +/* 62425 */ {(14<<2)|2,{120,113,0}}, +/* 62426 */ {(14<<2)|2,{120,113,0}}, +/* 62427 */ {(14<<2)|2,{120,113,0}}, +/* 62428 */ {(14<<2)|2,{120,118,0}}, +/* 62429 */ {(14<<2)|2,{120,118,0}}, +/* 62430 */ {(14<<2)|2,{120,118,0}}, +/* 62431 */ {(14<<2)|2,{120,118,0}}, +/* 62432 */ {(14<<2)|2,{120,119,0}}, +/* 62433 */ {(14<<2)|2,{120,119,0}}, +/* 62434 */ {(14<<2)|2,{120,119,0}}, +/* 62435 */ {(14<<2)|2,{120,119,0}}, +/* 62436 */ {(14<<2)|2,{120,120,0}}, +/* 62437 */ {(14<<2)|2,{120,120,0}}, +/* 62438 */ {(14<<2)|2,{120,120,0}}, +/* 62439 */ {(14<<2)|2,{120,120,0}}, +/* 62440 */ {(14<<2)|2,{120,121,0}}, +/* 62441 */ {(14<<2)|2,{120,121,0}}, +/* 62442 */ {(14<<2)|2,{120,121,0}}, +/* 62443 */ {(14<<2)|2,{120,121,0}}, +/* 62444 */ {(14<<2)|2,{120,122,0}}, +/* 62445 */ {(14<<2)|2,{120,122,0}}, +/* 62446 */ {(14<<2)|2,{120,122,0}}, +/* 62447 */ {(14<<2)|2,{120,122,0}}, +/* 62448 */ {(15<<2)|2,{120,38,0}}, +/* 62449 */ {(15<<2)|2,{120,38,0}}, +/* 62450 */ {(15<<2)|2,{120,42,0}}, +/* 62451 */ {(15<<2)|2,{120,42,0}}, +/* 62452 */ {(15<<2)|2,{120,44,0}}, +/* 62453 */ {(15<<2)|2,{120,44,0}}, +/* 62454 */ {(15<<2)|2,{120,59,0}}, +/* 62455 */ {(15<<2)|2,{120,59,0}}, +/* 62456 */ {(15<<2)|2,{120,88,0}}, +/* 62457 */ {(15<<2)|2,{120,88,0}}, +/* 62458 */ {(15<<2)|2,{120,90,0}}, +/* 62459 */ {(15<<2)|2,{120,90,0}}, +/* 62460 */ {(7<<2)|1,{120,0,0}}, +/* 62461 */ {(7<<2)|1,{120,0,0}}, +/* 62462 */ {(7<<2)|1,{120,0,0}}, +/* 62463 */ {(7<<2)|1,{120,0,0}}, +/* 62464 */ {(12<<2)|2,{121,48,0}}, +/* 62465 */ {(12<<2)|2,{121,48,0}}, +/* 62466 */ {(12<<2)|2,{121,48,0}}, +/* 62467 */ {(12<<2)|2,{121,48,0}}, +/* 62468 */ {(12<<2)|2,{121,48,0}}, +/* 62469 */ {(12<<2)|2,{121,48,0}}, +/* 62470 */ {(12<<2)|2,{121,48,0}}, +/* 62471 */ {(12<<2)|2,{121,48,0}}, +/* 62472 */ {(12<<2)|2,{121,48,0}}, +/* 62473 */ {(12<<2)|2,{121,48,0}}, +/* 62474 */ {(12<<2)|2,{121,48,0}}, +/* 62475 */ {(12<<2)|2,{121,48,0}}, +/* 62476 */ {(12<<2)|2,{121,48,0}}, +/* 62477 */ {(12<<2)|2,{121,48,0}}, +/* 62478 */ {(12<<2)|2,{121,48,0}}, +/* 62479 */ {(12<<2)|2,{121,48,0}}, +/* 62480 */ {(12<<2)|2,{121,49,0}}, +/* 62481 */ {(12<<2)|2,{121,49,0}}, +/* 62482 */ {(12<<2)|2,{121,49,0}}, +/* 62483 */ {(12<<2)|2,{121,49,0}}, +/* 62484 */ {(12<<2)|2,{121,49,0}}, +/* 62485 */ {(12<<2)|2,{121,49,0}}, +/* 62486 */ {(12<<2)|2,{121,49,0}}, +/* 62487 */ {(12<<2)|2,{121,49,0}}, +/* 62488 */ {(12<<2)|2,{121,49,0}}, +/* 62489 */ {(12<<2)|2,{121,49,0}}, +/* 62490 */ {(12<<2)|2,{121,49,0}}, +/* 62491 */ {(12<<2)|2,{121,49,0}}, +/* 62492 */ {(12<<2)|2,{121,49,0}}, +/* 62493 */ {(12<<2)|2,{121,49,0}}, +/* 62494 */ {(12<<2)|2,{121,49,0}}, +/* 62495 */ {(12<<2)|2,{121,49,0}}, +/* 62496 */ {(12<<2)|2,{121,50,0}}, +/* 62497 */ {(12<<2)|2,{121,50,0}}, +/* 62498 */ {(12<<2)|2,{121,50,0}}, +/* 62499 */ {(12<<2)|2,{121,50,0}}, +/* 62500 */ {(12<<2)|2,{121,50,0}}, +/* 62501 */ {(12<<2)|2,{121,50,0}}, +/* 62502 */ {(12<<2)|2,{121,50,0}}, +/* 62503 */ {(12<<2)|2,{121,50,0}}, +/* 62504 */ {(12<<2)|2,{121,50,0}}, +/* 62505 */ {(12<<2)|2,{121,50,0}}, +/* 62506 */ {(12<<2)|2,{121,50,0}}, +/* 62507 */ {(12<<2)|2,{121,50,0}}, +/* 62508 */ {(12<<2)|2,{121,50,0}}, +/* 62509 */ {(12<<2)|2,{121,50,0}}, +/* 62510 */ {(12<<2)|2,{121,50,0}}, +/* 62511 */ {(12<<2)|2,{121,50,0}}, +/* 62512 */ {(12<<2)|2,{121,97,0}}, +/* 62513 */ {(12<<2)|2,{121,97,0}}, +/* 62514 */ {(12<<2)|2,{121,97,0}}, +/* 62515 */ {(12<<2)|2,{121,97,0}}, +/* 62516 */ {(12<<2)|2,{121,97,0}}, +/* 62517 */ {(12<<2)|2,{121,97,0}}, +/* 62518 */ {(12<<2)|2,{121,97,0}}, +/* 62519 */ {(12<<2)|2,{121,97,0}}, +/* 62520 */ {(12<<2)|2,{121,97,0}}, +/* 62521 */ {(12<<2)|2,{121,97,0}}, +/* 62522 */ {(12<<2)|2,{121,97,0}}, +/* 62523 */ {(12<<2)|2,{121,97,0}}, +/* 62524 */ {(12<<2)|2,{121,97,0}}, +/* 62525 */ {(12<<2)|2,{121,97,0}}, +/* 62526 */ {(12<<2)|2,{121,97,0}}, +/* 62527 */ {(12<<2)|2,{121,97,0}}, +/* 62528 */ {(12<<2)|2,{121,99,0}}, +/* 62529 */ {(12<<2)|2,{121,99,0}}, +/* 62530 */ {(12<<2)|2,{121,99,0}}, +/* 62531 */ {(12<<2)|2,{121,99,0}}, +/* 62532 */ {(12<<2)|2,{121,99,0}}, +/* 62533 */ {(12<<2)|2,{121,99,0}}, +/* 62534 */ {(12<<2)|2,{121,99,0}}, +/* 62535 */ {(12<<2)|2,{121,99,0}}, +/* 62536 */ {(12<<2)|2,{121,99,0}}, +/* 62537 */ {(12<<2)|2,{121,99,0}}, +/* 62538 */ {(12<<2)|2,{121,99,0}}, +/* 62539 */ {(12<<2)|2,{121,99,0}}, +/* 62540 */ {(12<<2)|2,{121,99,0}}, +/* 62541 */ {(12<<2)|2,{121,99,0}}, +/* 62542 */ {(12<<2)|2,{121,99,0}}, +/* 62543 */ {(12<<2)|2,{121,99,0}}, +/* 62544 */ {(12<<2)|2,{121,101,0}}, +/* 62545 */ {(12<<2)|2,{121,101,0}}, +/* 62546 */ {(12<<2)|2,{121,101,0}}, +/* 62547 */ {(12<<2)|2,{121,101,0}}, +/* 62548 */ {(12<<2)|2,{121,101,0}}, +/* 62549 */ {(12<<2)|2,{121,101,0}}, +/* 62550 */ {(12<<2)|2,{121,101,0}}, +/* 62551 */ {(12<<2)|2,{121,101,0}}, +/* 62552 */ {(12<<2)|2,{121,101,0}}, +/* 62553 */ {(12<<2)|2,{121,101,0}}, +/* 62554 */ {(12<<2)|2,{121,101,0}}, +/* 62555 */ {(12<<2)|2,{121,101,0}}, +/* 62556 */ {(12<<2)|2,{121,101,0}}, +/* 62557 */ {(12<<2)|2,{121,101,0}}, +/* 62558 */ {(12<<2)|2,{121,101,0}}, +/* 62559 */ {(12<<2)|2,{121,101,0}}, +/* 62560 */ {(12<<2)|2,{121,105,0}}, +/* 62561 */ {(12<<2)|2,{121,105,0}}, +/* 62562 */ {(12<<2)|2,{121,105,0}}, +/* 62563 */ {(12<<2)|2,{121,105,0}}, +/* 62564 */ {(12<<2)|2,{121,105,0}}, +/* 62565 */ {(12<<2)|2,{121,105,0}}, +/* 62566 */ {(12<<2)|2,{121,105,0}}, +/* 62567 */ {(12<<2)|2,{121,105,0}}, +/* 62568 */ {(12<<2)|2,{121,105,0}}, +/* 62569 */ {(12<<2)|2,{121,105,0}}, +/* 62570 */ {(12<<2)|2,{121,105,0}}, +/* 62571 */ {(12<<2)|2,{121,105,0}}, +/* 62572 */ {(12<<2)|2,{121,105,0}}, +/* 62573 */ {(12<<2)|2,{121,105,0}}, +/* 62574 */ {(12<<2)|2,{121,105,0}}, +/* 62575 */ {(12<<2)|2,{121,105,0}}, +/* 62576 */ {(12<<2)|2,{121,111,0}}, +/* 62577 */ {(12<<2)|2,{121,111,0}}, +/* 62578 */ {(12<<2)|2,{121,111,0}}, +/* 62579 */ {(12<<2)|2,{121,111,0}}, +/* 62580 */ {(12<<2)|2,{121,111,0}}, +/* 62581 */ {(12<<2)|2,{121,111,0}}, +/* 62582 */ {(12<<2)|2,{121,111,0}}, +/* 62583 */ {(12<<2)|2,{121,111,0}}, +/* 62584 */ {(12<<2)|2,{121,111,0}}, +/* 62585 */ {(12<<2)|2,{121,111,0}}, +/* 62586 */ {(12<<2)|2,{121,111,0}}, +/* 62587 */ {(12<<2)|2,{121,111,0}}, +/* 62588 */ {(12<<2)|2,{121,111,0}}, +/* 62589 */ {(12<<2)|2,{121,111,0}}, +/* 62590 */ {(12<<2)|2,{121,111,0}}, +/* 62591 */ {(12<<2)|2,{121,111,0}}, +/* 62592 */ {(12<<2)|2,{121,115,0}}, +/* 62593 */ {(12<<2)|2,{121,115,0}}, +/* 62594 */ {(12<<2)|2,{121,115,0}}, +/* 62595 */ {(12<<2)|2,{121,115,0}}, +/* 62596 */ {(12<<2)|2,{121,115,0}}, +/* 62597 */ {(12<<2)|2,{121,115,0}}, +/* 62598 */ {(12<<2)|2,{121,115,0}}, +/* 62599 */ {(12<<2)|2,{121,115,0}}, +/* 62600 */ {(12<<2)|2,{121,115,0}}, +/* 62601 */ {(12<<2)|2,{121,115,0}}, +/* 62602 */ {(12<<2)|2,{121,115,0}}, +/* 62603 */ {(12<<2)|2,{121,115,0}}, +/* 62604 */ {(12<<2)|2,{121,115,0}}, +/* 62605 */ {(12<<2)|2,{121,115,0}}, +/* 62606 */ {(12<<2)|2,{121,115,0}}, +/* 62607 */ {(12<<2)|2,{121,115,0}}, +/* 62608 */ {(12<<2)|2,{121,116,0}}, +/* 62609 */ {(12<<2)|2,{121,116,0}}, +/* 62610 */ {(12<<2)|2,{121,116,0}}, +/* 62611 */ {(12<<2)|2,{121,116,0}}, +/* 62612 */ {(12<<2)|2,{121,116,0}}, +/* 62613 */ {(12<<2)|2,{121,116,0}}, +/* 62614 */ {(12<<2)|2,{121,116,0}}, +/* 62615 */ {(12<<2)|2,{121,116,0}}, +/* 62616 */ {(12<<2)|2,{121,116,0}}, +/* 62617 */ {(12<<2)|2,{121,116,0}}, +/* 62618 */ {(12<<2)|2,{121,116,0}}, +/* 62619 */ {(12<<2)|2,{121,116,0}}, +/* 62620 */ {(12<<2)|2,{121,116,0}}, +/* 62621 */ {(12<<2)|2,{121,116,0}}, +/* 62622 */ {(12<<2)|2,{121,116,0}}, +/* 62623 */ {(12<<2)|2,{121,116,0}}, +/* 62624 */ {(13<<2)|2,{121,32,0}}, +/* 62625 */ {(13<<2)|2,{121,32,0}}, +/* 62626 */ {(13<<2)|2,{121,32,0}}, +/* 62627 */ {(13<<2)|2,{121,32,0}}, +/* 62628 */ {(13<<2)|2,{121,32,0}}, +/* 62629 */ {(13<<2)|2,{121,32,0}}, +/* 62630 */ {(13<<2)|2,{121,32,0}}, +/* 62631 */ {(13<<2)|2,{121,32,0}}, +/* 62632 */ {(13<<2)|2,{121,37,0}}, +/* 62633 */ {(13<<2)|2,{121,37,0}}, +/* 62634 */ {(13<<2)|2,{121,37,0}}, +/* 62635 */ {(13<<2)|2,{121,37,0}}, +/* 62636 */ {(13<<2)|2,{121,37,0}}, +/* 62637 */ {(13<<2)|2,{121,37,0}}, +/* 62638 */ {(13<<2)|2,{121,37,0}}, +/* 62639 */ {(13<<2)|2,{121,37,0}}, +/* 62640 */ {(13<<2)|2,{121,45,0}}, +/* 62641 */ {(13<<2)|2,{121,45,0}}, +/* 62642 */ {(13<<2)|2,{121,45,0}}, +/* 62643 */ {(13<<2)|2,{121,45,0}}, +/* 62644 */ {(13<<2)|2,{121,45,0}}, +/* 62645 */ {(13<<2)|2,{121,45,0}}, +/* 62646 */ {(13<<2)|2,{121,45,0}}, +/* 62647 */ {(13<<2)|2,{121,45,0}}, +/* 62648 */ {(13<<2)|2,{121,46,0}}, +/* 62649 */ {(13<<2)|2,{121,46,0}}, +/* 62650 */ {(13<<2)|2,{121,46,0}}, +/* 62651 */ {(13<<2)|2,{121,46,0}}, +/* 62652 */ {(13<<2)|2,{121,46,0}}, +/* 62653 */ {(13<<2)|2,{121,46,0}}, +/* 62654 */ {(13<<2)|2,{121,46,0}}, +/* 62655 */ {(13<<2)|2,{121,46,0}}, +/* 62656 */ {(13<<2)|2,{121,47,0}}, +/* 62657 */ {(13<<2)|2,{121,47,0}}, +/* 62658 */ {(13<<2)|2,{121,47,0}}, +/* 62659 */ {(13<<2)|2,{121,47,0}}, +/* 62660 */ {(13<<2)|2,{121,47,0}}, +/* 62661 */ {(13<<2)|2,{121,47,0}}, +/* 62662 */ {(13<<2)|2,{121,47,0}}, +/* 62663 */ {(13<<2)|2,{121,47,0}}, +/* 62664 */ {(13<<2)|2,{121,51,0}}, +/* 62665 */ {(13<<2)|2,{121,51,0}}, +/* 62666 */ {(13<<2)|2,{121,51,0}}, +/* 62667 */ {(13<<2)|2,{121,51,0}}, +/* 62668 */ {(13<<2)|2,{121,51,0}}, +/* 62669 */ {(13<<2)|2,{121,51,0}}, +/* 62670 */ {(13<<2)|2,{121,51,0}}, +/* 62671 */ {(13<<2)|2,{121,51,0}}, +/* 62672 */ {(13<<2)|2,{121,52,0}}, +/* 62673 */ {(13<<2)|2,{121,52,0}}, +/* 62674 */ {(13<<2)|2,{121,52,0}}, +/* 62675 */ {(13<<2)|2,{121,52,0}}, +/* 62676 */ {(13<<2)|2,{121,52,0}}, +/* 62677 */ {(13<<2)|2,{121,52,0}}, +/* 62678 */ {(13<<2)|2,{121,52,0}}, +/* 62679 */ {(13<<2)|2,{121,52,0}}, +/* 62680 */ {(13<<2)|2,{121,53,0}}, +/* 62681 */ {(13<<2)|2,{121,53,0}}, +/* 62682 */ {(13<<2)|2,{121,53,0}}, +/* 62683 */ {(13<<2)|2,{121,53,0}}, +/* 62684 */ {(13<<2)|2,{121,53,0}}, +/* 62685 */ {(13<<2)|2,{121,53,0}}, +/* 62686 */ {(13<<2)|2,{121,53,0}}, +/* 62687 */ {(13<<2)|2,{121,53,0}}, +/* 62688 */ {(13<<2)|2,{121,54,0}}, +/* 62689 */ {(13<<2)|2,{121,54,0}}, +/* 62690 */ {(13<<2)|2,{121,54,0}}, +/* 62691 */ {(13<<2)|2,{121,54,0}}, +/* 62692 */ {(13<<2)|2,{121,54,0}}, +/* 62693 */ {(13<<2)|2,{121,54,0}}, +/* 62694 */ {(13<<2)|2,{121,54,0}}, +/* 62695 */ {(13<<2)|2,{121,54,0}}, +/* 62696 */ {(13<<2)|2,{121,55,0}}, +/* 62697 */ {(13<<2)|2,{121,55,0}}, +/* 62698 */ {(13<<2)|2,{121,55,0}}, +/* 62699 */ {(13<<2)|2,{121,55,0}}, +/* 62700 */ {(13<<2)|2,{121,55,0}}, +/* 62701 */ {(13<<2)|2,{121,55,0}}, +/* 62702 */ {(13<<2)|2,{121,55,0}}, +/* 62703 */ {(13<<2)|2,{121,55,0}}, +/* 62704 */ {(13<<2)|2,{121,56,0}}, +/* 62705 */ {(13<<2)|2,{121,56,0}}, +/* 62706 */ {(13<<2)|2,{121,56,0}}, +/* 62707 */ {(13<<2)|2,{121,56,0}}, +/* 62708 */ {(13<<2)|2,{121,56,0}}, +/* 62709 */ {(13<<2)|2,{121,56,0}}, +/* 62710 */ {(13<<2)|2,{121,56,0}}, +/* 62711 */ {(13<<2)|2,{121,56,0}}, +/* 62712 */ {(13<<2)|2,{121,57,0}}, +/* 62713 */ {(13<<2)|2,{121,57,0}}, +/* 62714 */ {(13<<2)|2,{121,57,0}}, +/* 62715 */ {(13<<2)|2,{121,57,0}}, +/* 62716 */ {(13<<2)|2,{121,57,0}}, +/* 62717 */ {(13<<2)|2,{121,57,0}}, +/* 62718 */ {(13<<2)|2,{121,57,0}}, +/* 62719 */ {(13<<2)|2,{121,57,0}}, +/* 62720 */ {(13<<2)|2,{121,61,0}}, +/* 62721 */ {(13<<2)|2,{121,61,0}}, +/* 62722 */ {(13<<2)|2,{121,61,0}}, +/* 62723 */ {(13<<2)|2,{121,61,0}}, +/* 62724 */ {(13<<2)|2,{121,61,0}}, +/* 62725 */ {(13<<2)|2,{121,61,0}}, +/* 62726 */ {(13<<2)|2,{121,61,0}}, +/* 62727 */ {(13<<2)|2,{121,61,0}}, +/* 62728 */ {(13<<2)|2,{121,65,0}}, +/* 62729 */ {(13<<2)|2,{121,65,0}}, +/* 62730 */ {(13<<2)|2,{121,65,0}}, +/* 62731 */ {(13<<2)|2,{121,65,0}}, +/* 62732 */ {(13<<2)|2,{121,65,0}}, +/* 62733 */ {(13<<2)|2,{121,65,0}}, +/* 62734 */ {(13<<2)|2,{121,65,0}}, +/* 62735 */ {(13<<2)|2,{121,65,0}}, +/* 62736 */ {(13<<2)|2,{121,95,0}}, +/* 62737 */ {(13<<2)|2,{121,95,0}}, +/* 62738 */ {(13<<2)|2,{121,95,0}}, +/* 62739 */ {(13<<2)|2,{121,95,0}}, +/* 62740 */ {(13<<2)|2,{121,95,0}}, +/* 62741 */ {(13<<2)|2,{121,95,0}}, +/* 62742 */ {(13<<2)|2,{121,95,0}}, +/* 62743 */ {(13<<2)|2,{121,95,0}}, +/* 62744 */ {(13<<2)|2,{121,98,0}}, +/* 62745 */ {(13<<2)|2,{121,98,0}}, +/* 62746 */ {(13<<2)|2,{121,98,0}}, +/* 62747 */ {(13<<2)|2,{121,98,0}}, +/* 62748 */ {(13<<2)|2,{121,98,0}}, +/* 62749 */ {(13<<2)|2,{121,98,0}}, +/* 62750 */ {(13<<2)|2,{121,98,0}}, +/* 62751 */ {(13<<2)|2,{121,98,0}}, +/* 62752 */ {(13<<2)|2,{121,100,0}}, +/* 62753 */ {(13<<2)|2,{121,100,0}}, +/* 62754 */ {(13<<2)|2,{121,100,0}}, +/* 62755 */ {(13<<2)|2,{121,100,0}}, +/* 62756 */ {(13<<2)|2,{121,100,0}}, +/* 62757 */ {(13<<2)|2,{121,100,0}}, +/* 62758 */ {(13<<2)|2,{121,100,0}}, +/* 62759 */ {(13<<2)|2,{121,100,0}}, +/* 62760 */ {(13<<2)|2,{121,102,0}}, +/* 62761 */ {(13<<2)|2,{121,102,0}}, +/* 62762 */ {(13<<2)|2,{121,102,0}}, +/* 62763 */ {(13<<2)|2,{121,102,0}}, +/* 62764 */ {(13<<2)|2,{121,102,0}}, +/* 62765 */ {(13<<2)|2,{121,102,0}}, +/* 62766 */ {(13<<2)|2,{121,102,0}}, +/* 62767 */ {(13<<2)|2,{121,102,0}}, +/* 62768 */ {(13<<2)|2,{121,103,0}}, +/* 62769 */ {(13<<2)|2,{121,103,0}}, +/* 62770 */ {(13<<2)|2,{121,103,0}}, +/* 62771 */ {(13<<2)|2,{121,103,0}}, +/* 62772 */ {(13<<2)|2,{121,103,0}}, +/* 62773 */ {(13<<2)|2,{121,103,0}}, +/* 62774 */ {(13<<2)|2,{121,103,0}}, +/* 62775 */ {(13<<2)|2,{121,103,0}}, +/* 62776 */ {(13<<2)|2,{121,104,0}}, +/* 62777 */ {(13<<2)|2,{121,104,0}}, +/* 62778 */ {(13<<2)|2,{121,104,0}}, +/* 62779 */ {(13<<2)|2,{121,104,0}}, +/* 62780 */ {(13<<2)|2,{121,104,0}}, +/* 62781 */ {(13<<2)|2,{121,104,0}}, +/* 62782 */ {(13<<2)|2,{121,104,0}}, +/* 62783 */ {(13<<2)|2,{121,104,0}}, +/* 62784 */ {(13<<2)|2,{121,108,0}}, +/* 62785 */ {(13<<2)|2,{121,108,0}}, +/* 62786 */ {(13<<2)|2,{121,108,0}}, +/* 62787 */ {(13<<2)|2,{121,108,0}}, +/* 62788 */ {(13<<2)|2,{121,108,0}}, +/* 62789 */ {(13<<2)|2,{121,108,0}}, +/* 62790 */ {(13<<2)|2,{121,108,0}}, +/* 62791 */ {(13<<2)|2,{121,108,0}}, +/* 62792 */ {(13<<2)|2,{121,109,0}}, +/* 62793 */ {(13<<2)|2,{121,109,0}}, +/* 62794 */ {(13<<2)|2,{121,109,0}}, +/* 62795 */ {(13<<2)|2,{121,109,0}}, +/* 62796 */ {(13<<2)|2,{121,109,0}}, +/* 62797 */ {(13<<2)|2,{121,109,0}}, +/* 62798 */ {(13<<2)|2,{121,109,0}}, +/* 62799 */ {(13<<2)|2,{121,109,0}}, +/* 62800 */ {(13<<2)|2,{121,110,0}}, +/* 62801 */ {(13<<2)|2,{121,110,0}}, +/* 62802 */ {(13<<2)|2,{121,110,0}}, +/* 62803 */ {(13<<2)|2,{121,110,0}}, +/* 62804 */ {(13<<2)|2,{121,110,0}}, +/* 62805 */ {(13<<2)|2,{121,110,0}}, +/* 62806 */ {(13<<2)|2,{121,110,0}}, +/* 62807 */ {(13<<2)|2,{121,110,0}}, +/* 62808 */ {(13<<2)|2,{121,112,0}}, +/* 62809 */ {(13<<2)|2,{121,112,0}}, +/* 62810 */ {(13<<2)|2,{121,112,0}}, +/* 62811 */ {(13<<2)|2,{121,112,0}}, +/* 62812 */ {(13<<2)|2,{121,112,0}}, +/* 62813 */ {(13<<2)|2,{121,112,0}}, +/* 62814 */ {(13<<2)|2,{121,112,0}}, +/* 62815 */ {(13<<2)|2,{121,112,0}}, +/* 62816 */ {(13<<2)|2,{121,114,0}}, +/* 62817 */ {(13<<2)|2,{121,114,0}}, +/* 62818 */ {(13<<2)|2,{121,114,0}}, +/* 62819 */ {(13<<2)|2,{121,114,0}}, +/* 62820 */ {(13<<2)|2,{121,114,0}}, +/* 62821 */ {(13<<2)|2,{121,114,0}}, +/* 62822 */ {(13<<2)|2,{121,114,0}}, +/* 62823 */ {(13<<2)|2,{121,114,0}}, +/* 62824 */ {(13<<2)|2,{121,117,0}}, +/* 62825 */ {(13<<2)|2,{121,117,0}}, +/* 62826 */ {(13<<2)|2,{121,117,0}}, +/* 62827 */ {(13<<2)|2,{121,117,0}}, +/* 62828 */ {(13<<2)|2,{121,117,0}}, +/* 62829 */ {(13<<2)|2,{121,117,0}}, +/* 62830 */ {(13<<2)|2,{121,117,0}}, +/* 62831 */ {(13<<2)|2,{121,117,0}}, +/* 62832 */ {(14<<2)|2,{121,58,0}}, +/* 62833 */ {(14<<2)|2,{121,58,0}}, +/* 62834 */ {(14<<2)|2,{121,58,0}}, +/* 62835 */ {(14<<2)|2,{121,58,0}}, +/* 62836 */ {(14<<2)|2,{121,66,0}}, +/* 62837 */ {(14<<2)|2,{121,66,0}}, +/* 62838 */ {(14<<2)|2,{121,66,0}}, +/* 62839 */ {(14<<2)|2,{121,66,0}}, +/* 62840 */ {(14<<2)|2,{121,67,0}}, +/* 62841 */ {(14<<2)|2,{121,67,0}}, +/* 62842 */ {(14<<2)|2,{121,67,0}}, +/* 62843 */ {(14<<2)|2,{121,67,0}}, +/* 62844 */ {(14<<2)|2,{121,68,0}}, +/* 62845 */ {(14<<2)|2,{121,68,0}}, +/* 62846 */ {(14<<2)|2,{121,68,0}}, +/* 62847 */ {(14<<2)|2,{121,68,0}}, +/* 62848 */ {(14<<2)|2,{121,69,0}}, +/* 62849 */ {(14<<2)|2,{121,69,0}}, +/* 62850 */ {(14<<2)|2,{121,69,0}}, +/* 62851 */ {(14<<2)|2,{121,69,0}}, +/* 62852 */ {(14<<2)|2,{121,70,0}}, +/* 62853 */ {(14<<2)|2,{121,70,0}}, +/* 62854 */ {(14<<2)|2,{121,70,0}}, +/* 62855 */ {(14<<2)|2,{121,70,0}}, +/* 62856 */ {(14<<2)|2,{121,71,0}}, +/* 62857 */ {(14<<2)|2,{121,71,0}}, +/* 62858 */ {(14<<2)|2,{121,71,0}}, +/* 62859 */ {(14<<2)|2,{121,71,0}}, +/* 62860 */ {(14<<2)|2,{121,72,0}}, +/* 62861 */ {(14<<2)|2,{121,72,0}}, +/* 62862 */ {(14<<2)|2,{121,72,0}}, +/* 62863 */ {(14<<2)|2,{121,72,0}}, +/* 62864 */ {(14<<2)|2,{121,73,0}}, +/* 62865 */ {(14<<2)|2,{121,73,0}}, +/* 62866 */ {(14<<2)|2,{121,73,0}}, +/* 62867 */ {(14<<2)|2,{121,73,0}}, +/* 62868 */ {(14<<2)|2,{121,74,0}}, +/* 62869 */ {(14<<2)|2,{121,74,0}}, +/* 62870 */ {(14<<2)|2,{121,74,0}}, +/* 62871 */ {(14<<2)|2,{121,74,0}}, +/* 62872 */ {(14<<2)|2,{121,75,0}}, +/* 62873 */ {(14<<2)|2,{121,75,0}}, +/* 62874 */ {(14<<2)|2,{121,75,0}}, +/* 62875 */ {(14<<2)|2,{121,75,0}}, +/* 62876 */ {(14<<2)|2,{121,76,0}}, +/* 62877 */ {(14<<2)|2,{121,76,0}}, +/* 62878 */ {(14<<2)|2,{121,76,0}}, +/* 62879 */ {(14<<2)|2,{121,76,0}}, +/* 62880 */ {(14<<2)|2,{121,77,0}}, +/* 62881 */ {(14<<2)|2,{121,77,0}}, +/* 62882 */ {(14<<2)|2,{121,77,0}}, +/* 62883 */ {(14<<2)|2,{121,77,0}}, +/* 62884 */ {(14<<2)|2,{121,78,0}}, +/* 62885 */ {(14<<2)|2,{121,78,0}}, +/* 62886 */ {(14<<2)|2,{121,78,0}}, +/* 62887 */ {(14<<2)|2,{121,78,0}}, +/* 62888 */ {(14<<2)|2,{121,79,0}}, +/* 62889 */ {(14<<2)|2,{121,79,0}}, +/* 62890 */ {(14<<2)|2,{121,79,0}}, +/* 62891 */ {(14<<2)|2,{121,79,0}}, +/* 62892 */ {(14<<2)|2,{121,80,0}}, +/* 62893 */ {(14<<2)|2,{121,80,0}}, +/* 62894 */ {(14<<2)|2,{121,80,0}}, +/* 62895 */ {(14<<2)|2,{121,80,0}}, +/* 62896 */ {(14<<2)|2,{121,81,0}}, +/* 62897 */ {(14<<2)|2,{121,81,0}}, +/* 62898 */ {(14<<2)|2,{121,81,0}}, +/* 62899 */ {(14<<2)|2,{121,81,0}}, +/* 62900 */ {(14<<2)|2,{121,82,0}}, +/* 62901 */ {(14<<2)|2,{121,82,0}}, +/* 62902 */ {(14<<2)|2,{121,82,0}}, +/* 62903 */ {(14<<2)|2,{121,82,0}}, +/* 62904 */ {(14<<2)|2,{121,83,0}}, +/* 62905 */ {(14<<2)|2,{121,83,0}}, +/* 62906 */ {(14<<2)|2,{121,83,0}}, +/* 62907 */ {(14<<2)|2,{121,83,0}}, +/* 62908 */ {(14<<2)|2,{121,84,0}}, +/* 62909 */ {(14<<2)|2,{121,84,0}}, +/* 62910 */ {(14<<2)|2,{121,84,0}}, +/* 62911 */ {(14<<2)|2,{121,84,0}}, +/* 62912 */ {(14<<2)|2,{121,85,0}}, +/* 62913 */ {(14<<2)|2,{121,85,0}}, +/* 62914 */ {(14<<2)|2,{121,85,0}}, +/* 62915 */ {(14<<2)|2,{121,85,0}}, +/* 62916 */ {(14<<2)|2,{121,86,0}}, +/* 62917 */ {(14<<2)|2,{121,86,0}}, +/* 62918 */ {(14<<2)|2,{121,86,0}}, +/* 62919 */ {(14<<2)|2,{121,86,0}}, +/* 62920 */ {(14<<2)|2,{121,87,0}}, +/* 62921 */ {(14<<2)|2,{121,87,0}}, +/* 62922 */ {(14<<2)|2,{121,87,0}}, +/* 62923 */ {(14<<2)|2,{121,87,0}}, +/* 62924 */ {(14<<2)|2,{121,89,0}}, +/* 62925 */ {(14<<2)|2,{121,89,0}}, +/* 62926 */ {(14<<2)|2,{121,89,0}}, +/* 62927 */ {(14<<2)|2,{121,89,0}}, +/* 62928 */ {(14<<2)|2,{121,106,0}}, +/* 62929 */ {(14<<2)|2,{121,106,0}}, +/* 62930 */ {(14<<2)|2,{121,106,0}}, +/* 62931 */ {(14<<2)|2,{121,106,0}}, +/* 62932 */ {(14<<2)|2,{121,107,0}}, +/* 62933 */ {(14<<2)|2,{121,107,0}}, +/* 62934 */ {(14<<2)|2,{121,107,0}}, +/* 62935 */ {(14<<2)|2,{121,107,0}}, +/* 62936 */ {(14<<2)|2,{121,113,0}}, +/* 62937 */ {(14<<2)|2,{121,113,0}}, +/* 62938 */ {(14<<2)|2,{121,113,0}}, +/* 62939 */ {(14<<2)|2,{121,113,0}}, +/* 62940 */ {(14<<2)|2,{121,118,0}}, +/* 62941 */ {(14<<2)|2,{121,118,0}}, +/* 62942 */ {(14<<2)|2,{121,118,0}}, +/* 62943 */ {(14<<2)|2,{121,118,0}}, +/* 62944 */ {(14<<2)|2,{121,119,0}}, +/* 62945 */ {(14<<2)|2,{121,119,0}}, +/* 62946 */ {(14<<2)|2,{121,119,0}}, +/* 62947 */ {(14<<2)|2,{121,119,0}}, +/* 62948 */ {(14<<2)|2,{121,120,0}}, +/* 62949 */ {(14<<2)|2,{121,120,0}}, +/* 62950 */ {(14<<2)|2,{121,120,0}}, +/* 62951 */ {(14<<2)|2,{121,120,0}}, +/* 62952 */ {(14<<2)|2,{121,121,0}}, +/* 62953 */ {(14<<2)|2,{121,121,0}}, +/* 62954 */ {(14<<2)|2,{121,121,0}}, +/* 62955 */ {(14<<2)|2,{121,121,0}}, +/* 62956 */ {(14<<2)|2,{121,122,0}}, +/* 62957 */ {(14<<2)|2,{121,122,0}}, +/* 62958 */ {(14<<2)|2,{121,122,0}}, +/* 62959 */ {(14<<2)|2,{121,122,0}}, +/* 62960 */ {(15<<2)|2,{121,38,0}}, +/* 62961 */ {(15<<2)|2,{121,38,0}}, +/* 62962 */ {(15<<2)|2,{121,42,0}}, +/* 62963 */ {(15<<2)|2,{121,42,0}}, +/* 62964 */ {(15<<2)|2,{121,44,0}}, +/* 62965 */ {(15<<2)|2,{121,44,0}}, +/* 62966 */ {(15<<2)|2,{121,59,0}}, +/* 62967 */ {(15<<2)|2,{121,59,0}}, +/* 62968 */ {(15<<2)|2,{121,88,0}}, +/* 62969 */ {(15<<2)|2,{121,88,0}}, +/* 62970 */ {(15<<2)|2,{121,90,0}}, +/* 62971 */ {(15<<2)|2,{121,90,0}}, +/* 62972 */ {(7<<2)|1,{121,0,0}}, +/* 62973 */ {(7<<2)|1,{121,0,0}}, +/* 62974 */ {(7<<2)|1,{121,0,0}}, +/* 62975 */ {(7<<2)|1,{121,0,0}}, +/* 62976 */ {(12<<2)|2,{122,48,0}}, +/* 62977 */ {(12<<2)|2,{122,48,0}}, +/* 62978 */ {(12<<2)|2,{122,48,0}}, +/* 62979 */ {(12<<2)|2,{122,48,0}}, +/* 62980 */ {(12<<2)|2,{122,48,0}}, +/* 62981 */ {(12<<2)|2,{122,48,0}}, +/* 62982 */ {(12<<2)|2,{122,48,0}}, +/* 62983 */ {(12<<2)|2,{122,48,0}}, +/* 62984 */ {(12<<2)|2,{122,48,0}}, +/* 62985 */ {(12<<2)|2,{122,48,0}}, +/* 62986 */ {(12<<2)|2,{122,48,0}}, +/* 62987 */ {(12<<2)|2,{122,48,0}}, +/* 62988 */ {(12<<2)|2,{122,48,0}}, +/* 62989 */ {(12<<2)|2,{122,48,0}}, +/* 62990 */ {(12<<2)|2,{122,48,0}}, +/* 62991 */ {(12<<2)|2,{122,48,0}}, +/* 62992 */ {(12<<2)|2,{122,49,0}}, +/* 62993 */ {(12<<2)|2,{122,49,0}}, +/* 62994 */ {(12<<2)|2,{122,49,0}}, +/* 62995 */ {(12<<2)|2,{122,49,0}}, +/* 62996 */ {(12<<2)|2,{122,49,0}}, +/* 62997 */ {(12<<2)|2,{122,49,0}}, +/* 62998 */ {(12<<2)|2,{122,49,0}}, +/* 62999 */ {(12<<2)|2,{122,49,0}}, +/* 63000 */ {(12<<2)|2,{122,49,0}}, +/* 63001 */ {(12<<2)|2,{122,49,0}}, +/* 63002 */ {(12<<2)|2,{122,49,0}}, +/* 63003 */ {(12<<2)|2,{122,49,0}}, +/* 63004 */ {(12<<2)|2,{122,49,0}}, +/* 63005 */ {(12<<2)|2,{122,49,0}}, +/* 63006 */ {(12<<2)|2,{122,49,0}}, +/* 63007 */ {(12<<2)|2,{122,49,0}}, +/* 63008 */ {(12<<2)|2,{122,50,0}}, +/* 63009 */ {(12<<2)|2,{122,50,0}}, +/* 63010 */ {(12<<2)|2,{122,50,0}}, +/* 63011 */ {(12<<2)|2,{122,50,0}}, +/* 63012 */ {(12<<2)|2,{122,50,0}}, +/* 63013 */ {(12<<2)|2,{122,50,0}}, +/* 63014 */ {(12<<2)|2,{122,50,0}}, +/* 63015 */ {(12<<2)|2,{122,50,0}}, +/* 63016 */ {(12<<2)|2,{122,50,0}}, +/* 63017 */ {(12<<2)|2,{122,50,0}}, +/* 63018 */ {(12<<2)|2,{122,50,0}}, +/* 63019 */ {(12<<2)|2,{122,50,0}}, +/* 63020 */ {(12<<2)|2,{122,50,0}}, +/* 63021 */ {(12<<2)|2,{122,50,0}}, +/* 63022 */ {(12<<2)|2,{122,50,0}}, +/* 63023 */ {(12<<2)|2,{122,50,0}}, +/* 63024 */ {(12<<2)|2,{122,97,0}}, +/* 63025 */ {(12<<2)|2,{122,97,0}}, +/* 63026 */ {(12<<2)|2,{122,97,0}}, +/* 63027 */ {(12<<2)|2,{122,97,0}}, +/* 63028 */ {(12<<2)|2,{122,97,0}}, +/* 63029 */ {(12<<2)|2,{122,97,0}}, +/* 63030 */ {(12<<2)|2,{122,97,0}}, +/* 63031 */ {(12<<2)|2,{122,97,0}}, +/* 63032 */ {(12<<2)|2,{122,97,0}}, +/* 63033 */ {(12<<2)|2,{122,97,0}}, +/* 63034 */ {(12<<2)|2,{122,97,0}}, +/* 63035 */ {(12<<2)|2,{122,97,0}}, +/* 63036 */ {(12<<2)|2,{122,97,0}}, +/* 63037 */ {(12<<2)|2,{122,97,0}}, +/* 63038 */ {(12<<2)|2,{122,97,0}}, +/* 63039 */ {(12<<2)|2,{122,97,0}}, +/* 63040 */ {(12<<2)|2,{122,99,0}}, +/* 63041 */ {(12<<2)|2,{122,99,0}}, +/* 63042 */ {(12<<2)|2,{122,99,0}}, +/* 63043 */ {(12<<2)|2,{122,99,0}}, +/* 63044 */ {(12<<2)|2,{122,99,0}}, +/* 63045 */ {(12<<2)|2,{122,99,0}}, +/* 63046 */ {(12<<2)|2,{122,99,0}}, +/* 63047 */ {(12<<2)|2,{122,99,0}}, +/* 63048 */ {(12<<2)|2,{122,99,0}}, +/* 63049 */ {(12<<2)|2,{122,99,0}}, +/* 63050 */ {(12<<2)|2,{122,99,0}}, +/* 63051 */ {(12<<2)|2,{122,99,0}}, +/* 63052 */ {(12<<2)|2,{122,99,0}}, +/* 63053 */ {(12<<2)|2,{122,99,0}}, +/* 63054 */ {(12<<2)|2,{122,99,0}}, +/* 63055 */ {(12<<2)|2,{122,99,0}}, +/* 63056 */ {(12<<2)|2,{122,101,0}}, +/* 63057 */ {(12<<2)|2,{122,101,0}}, +/* 63058 */ {(12<<2)|2,{122,101,0}}, +/* 63059 */ {(12<<2)|2,{122,101,0}}, +/* 63060 */ {(12<<2)|2,{122,101,0}}, +/* 63061 */ {(12<<2)|2,{122,101,0}}, +/* 63062 */ {(12<<2)|2,{122,101,0}}, +/* 63063 */ {(12<<2)|2,{122,101,0}}, +/* 63064 */ {(12<<2)|2,{122,101,0}}, +/* 63065 */ {(12<<2)|2,{122,101,0}}, +/* 63066 */ {(12<<2)|2,{122,101,0}}, +/* 63067 */ {(12<<2)|2,{122,101,0}}, +/* 63068 */ {(12<<2)|2,{122,101,0}}, +/* 63069 */ {(12<<2)|2,{122,101,0}}, +/* 63070 */ {(12<<2)|2,{122,101,0}}, +/* 63071 */ {(12<<2)|2,{122,101,0}}, +/* 63072 */ {(12<<2)|2,{122,105,0}}, +/* 63073 */ {(12<<2)|2,{122,105,0}}, +/* 63074 */ {(12<<2)|2,{122,105,0}}, +/* 63075 */ {(12<<2)|2,{122,105,0}}, +/* 63076 */ {(12<<2)|2,{122,105,0}}, +/* 63077 */ {(12<<2)|2,{122,105,0}}, +/* 63078 */ {(12<<2)|2,{122,105,0}}, +/* 63079 */ {(12<<2)|2,{122,105,0}}, +/* 63080 */ {(12<<2)|2,{122,105,0}}, +/* 63081 */ {(12<<2)|2,{122,105,0}}, +/* 63082 */ {(12<<2)|2,{122,105,0}}, +/* 63083 */ {(12<<2)|2,{122,105,0}}, +/* 63084 */ {(12<<2)|2,{122,105,0}}, +/* 63085 */ {(12<<2)|2,{122,105,0}}, +/* 63086 */ {(12<<2)|2,{122,105,0}}, +/* 63087 */ {(12<<2)|2,{122,105,0}}, +/* 63088 */ {(12<<2)|2,{122,111,0}}, +/* 63089 */ {(12<<2)|2,{122,111,0}}, +/* 63090 */ {(12<<2)|2,{122,111,0}}, +/* 63091 */ {(12<<2)|2,{122,111,0}}, +/* 63092 */ {(12<<2)|2,{122,111,0}}, +/* 63093 */ {(12<<2)|2,{122,111,0}}, +/* 63094 */ {(12<<2)|2,{122,111,0}}, +/* 63095 */ {(12<<2)|2,{122,111,0}}, +/* 63096 */ {(12<<2)|2,{122,111,0}}, +/* 63097 */ {(12<<2)|2,{122,111,0}}, +/* 63098 */ {(12<<2)|2,{122,111,0}}, +/* 63099 */ {(12<<2)|2,{122,111,0}}, +/* 63100 */ {(12<<2)|2,{122,111,0}}, +/* 63101 */ {(12<<2)|2,{122,111,0}}, +/* 63102 */ {(12<<2)|2,{122,111,0}}, +/* 63103 */ {(12<<2)|2,{122,111,0}}, +/* 63104 */ {(12<<2)|2,{122,115,0}}, +/* 63105 */ {(12<<2)|2,{122,115,0}}, +/* 63106 */ {(12<<2)|2,{122,115,0}}, +/* 63107 */ {(12<<2)|2,{122,115,0}}, +/* 63108 */ {(12<<2)|2,{122,115,0}}, +/* 63109 */ {(12<<2)|2,{122,115,0}}, +/* 63110 */ {(12<<2)|2,{122,115,0}}, +/* 63111 */ {(12<<2)|2,{122,115,0}}, +/* 63112 */ {(12<<2)|2,{122,115,0}}, +/* 63113 */ {(12<<2)|2,{122,115,0}}, +/* 63114 */ {(12<<2)|2,{122,115,0}}, +/* 63115 */ {(12<<2)|2,{122,115,0}}, +/* 63116 */ {(12<<2)|2,{122,115,0}}, +/* 63117 */ {(12<<2)|2,{122,115,0}}, +/* 63118 */ {(12<<2)|2,{122,115,0}}, +/* 63119 */ {(12<<2)|2,{122,115,0}}, +/* 63120 */ {(12<<2)|2,{122,116,0}}, +/* 63121 */ {(12<<2)|2,{122,116,0}}, +/* 63122 */ {(12<<2)|2,{122,116,0}}, +/* 63123 */ {(12<<2)|2,{122,116,0}}, +/* 63124 */ {(12<<2)|2,{122,116,0}}, +/* 63125 */ {(12<<2)|2,{122,116,0}}, +/* 63126 */ {(12<<2)|2,{122,116,0}}, +/* 63127 */ {(12<<2)|2,{122,116,0}}, +/* 63128 */ {(12<<2)|2,{122,116,0}}, +/* 63129 */ {(12<<2)|2,{122,116,0}}, +/* 63130 */ {(12<<2)|2,{122,116,0}}, +/* 63131 */ {(12<<2)|2,{122,116,0}}, +/* 63132 */ {(12<<2)|2,{122,116,0}}, +/* 63133 */ {(12<<2)|2,{122,116,0}}, +/* 63134 */ {(12<<2)|2,{122,116,0}}, +/* 63135 */ {(12<<2)|2,{122,116,0}}, +/* 63136 */ {(13<<2)|2,{122,32,0}}, +/* 63137 */ {(13<<2)|2,{122,32,0}}, +/* 63138 */ {(13<<2)|2,{122,32,0}}, +/* 63139 */ {(13<<2)|2,{122,32,0}}, +/* 63140 */ {(13<<2)|2,{122,32,0}}, +/* 63141 */ {(13<<2)|2,{122,32,0}}, +/* 63142 */ {(13<<2)|2,{122,32,0}}, +/* 63143 */ {(13<<2)|2,{122,32,0}}, +/* 63144 */ {(13<<2)|2,{122,37,0}}, +/* 63145 */ {(13<<2)|2,{122,37,0}}, +/* 63146 */ {(13<<2)|2,{122,37,0}}, +/* 63147 */ {(13<<2)|2,{122,37,0}}, +/* 63148 */ {(13<<2)|2,{122,37,0}}, +/* 63149 */ {(13<<2)|2,{122,37,0}}, +/* 63150 */ {(13<<2)|2,{122,37,0}}, +/* 63151 */ {(13<<2)|2,{122,37,0}}, +/* 63152 */ {(13<<2)|2,{122,45,0}}, +/* 63153 */ {(13<<2)|2,{122,45,0}}, +/* 63154 */ {(13<<2)|2,{122,45,0}}, +/* 63155 */ {(13<<2)|2,{122,45,0}}, +/* 63156 */ {(13<<2)|2,{122,45,0}}, +/* 63157 */ {(13<<2)|2,{122,45,0}}, +/* 63158 */ {(13<<2)|2,{122,45,0}}, +/* 63159 */ {(13<<2)|2,{122,45,0}}, +/* 63160 */ {(13<<2)|2,{122,46,0}}, +/* 63161 */ {(13<<2)|2,{122,46,0}}, +/* 63162 */ {(13<<2)|2,{122,46,0}}, +/* 63163 */ {(13<<2)|2,{122,46,0}}, +/* 63164 */ {(13<<2)|2,{122,46,0}}, +/* 63165 */ {(13<<2)|2,{122,46,0}}, +/* 63166 */ {(13<<2)|2,{122,46,0}}, +/* 63167 */ {(13<<2)|2,{122,46,0}}, +/* 63168 */ {(13<<2)|2,{122,47,0}}, +/* 63169 */ {(13<<2)|2,{122,47,0}}, +/* 63170 */ {(13<<2)|2,{122,47,0}}, +/* 63171 */ {(13<<2)|2,{122,47,0}}, +/* 63172 */ {(13<<2)|2,{122,47,0}}, +/* 63173 */ {(13<<2)|2,{122,47,0}}, +/* 63174 */ {(13<<2)|2,{122,47,0}}, +/* 63175 */ {(13<<2)|2,{122,47,0}}, +/* 63176 */ {(13<<2)|2,{122,51,0}}, +/* 63177 */ {(13<<2)|2,{122,51,0}}, +/* 63178 */ {(13<<2)|2,{122,51,0}}, +/* 63179 */ {(13<<2)|2,{122,51,0}}, +/* 63180 */ {(13<<2)|2,{122,51,0}}, +/* 63181 */ {(13<<2)|2,{122,51,0}}, +/* 63182 */ {(13<<2)|2,{122,51,0}}, +/* 63183 */ {(13<<2)|2,{122,51,0}}, +/* 63184 */ {(13<<2)|2,{122,52,0}}, +/* 63185 */ {(13<<2)|2,{122,52,0}}, +/* 63186 */ {(13<<2)|2,{122,52,0}}, +/* 63187 */ {(13<<2)|2,{122,52,0}}, +/* 63188 */ {(13<<2)|2,{122,52,0}}, +/* 63189 */ {(13<<2)|2,{122,52,0}}, +/* 63190 */ {(13<<2)|2,{122,52,0}}, +/* 63191 */ {(13<<2)|2,{122,52,0}}, +/* 63192 */ {(13<<2)|2,{122,53,0}}, +/* 63193 */ {(13<<2)|2,{122,53,0}}, +/* 63194 */ {(13<<2)|2,{122,53,0}}, +/* 63195 */ {(13<<2)|2,{122,53,0}}, +/* 63196 */ {(13<<2)|2,{122,53,0}}, +/* 63197 */ {(13<<2)|2,{122,53,0}}, +/* 63198 */ {(13<<2)|2,{122,53,0}}, +/* 63199 */ {(13<<2)|2,{122,53,0}}, +/* 63200 */ {(13<<2)|2,{122,54,0}}, +/* 63201 */ {(13<<2)|2,{122,54,0}}, +/* 63202 */ {(13<<2)|2,{122,54,0}}, +/* 63203 */ {(13<<2)|2,{122,54,0}}, +/* 63204 */ {(13<<2)|2,{122,54,0}}, +/* 63205 */ {(13<<2)|2,{122,54,0}}, +/* 63206 */ {(13<<2)|2,{122,54,0}}, +/* 63207 */ {(13<<2)|2,{122,54,0}}, +/* 63208 */ {(13<<2)|2,{122,55,0}}, +/* 63209 */ {(13<<2)|2,{122,55,0}}, +/* 63210 */ {(13<<2)|2,{122,55,0}}, +/* 63211 */ {(13<<2)|2,{122,55,0}}, +/* 63212 */ {(13<<2)|2,{122,55,0}}, +/* 63213 */ {(13<<2)|2,{122,55,0}}, +/* 63214 */ {(13<<2)|2,{122,55,0}}, +/* 63215 */ {(13<<2)|2,{122,55,0}}, +/* 63216 */ {(13<<2)|2,{122,56,0}}, +/* 63217 */ {(13<<2)|2,{122,56,0}}, +/* 63218 */ {(13<<2)|2,{122,56,0}}, +/* 63219 */ {(13<<2)|2,{122,56,0}}, +/* 63220 */ {(13<<2)|2,{122,56,0}}, +/* 63221 */ {(13<<2)|2,{122,56,0}}, +/* 63222 */ {(13<<2)|2,{122,56,0}}, +/* 63223 */ {(13<<2)|2,{122,56,0}}, +/* 63224 */ {(13<<2)|2,{122,57,0}}, +/* 63225 */ {(13<<2)|2,{122,57,0}}, +/* 63226 */ {(13<<2)|2,{122,57,0}}, +/* 63227 */ {(13<<2)|2,{122,57,0}}, +/* 63228 */ {(13<<2)|2,{122,57,0}}, +/* 63229 */ {(13<<2)|2,{122,57,0}}, +/* 63230 */ {(13<<2)|2,{122,57,0}}, +/* 63231 */ {(13<<2)|2,{122,57,0}}, +/* 63232 */ {(13<<2)|2,{122,61,0}}, +/* 63233 */ {(13<<2)|2,{122,61,0}}, +/* 63234 */ {(13<<2)|2,{122,61,0}}, +/* 63235 */ {(13<<2)|2,{122,61,0}}, +/* 63236 */ {(13<<2)|2,{122,61,0}}, +/* 63237 */ {(13<<2)|2,{122,61,0}}, +/* 63238 */ {(13<<2)|2,{122,61,0}}, +/* 63239 */ {(13<<2)|2,{122,61,0}}, +/* 63240 */ {(13<<2)|2,{122,65,0}}, +/* 63241 */ {(13<<2)|2,{122,65,0}}, +/* 63242 */ {(13<<2)|2,{122,65,0}}, +/* 63243 */ {(13<<2)|2,{122,65,0}}, +/* 63244 */ {(13<<2)|2,{122,65,0}}, +/* 63245 */ {(13<<2)|2,{122,65,0}}, +/* 63246 */ {(13<<2)|2,{122,65,0}}, +/* 63247 */ {(13<<2)|2,{122,65,0}}, +/* 63248 */ {(13<<2)|2,{122,95,0}}, +/* 63249 */ {(13<<2)|2,{122,95,0}}, +/* 63250 */ {(13<<2)|2,{122,95,0}}, +/* 63251 */ {(13<<2)|2,{122,95,0}}, +/* 63252 */ {(13<<2)|2,{122,95,0}}, +/* 63253 */ {(13<<2)|2,{122,95,0}}, +/* 63254 */ {(13<<2)|2,{122,95,0}}, +/* 63255 */ {(13<<2)|2,{122,95,0}}, +/* 63256 */ {(13<<2)|2,{122,98,0}}, +/* 63257 */ {(13<<2)|2,{122,98,0}}, +/* 63258 */ {(13<<2)|2,{122,98,0}}, +/* 63259 */ {(13<<2)|2,{122,98,0}}, +/* 63260 */ {(13<<2)|2,{122,98,0}}, +/* 63261 */ {(13<<2)|2,{122,98,0}}, +/* 63262 */ {(13<<2)|2,{122,98,0}}, +/* 63263 */ {(13<<2)|2,{122,98,0}}, +/* 63264 */ {(13<<2)|2,{122,100,0}}, +/* 63265 */ {(13<<2)|2,{122,100,0}}, +/* 63266 */ {(13<<2)|2,{122,100,0}}, +/* 63267 */ {(13<<2)|2,{122,100,0}}, +/* 63268 */ {(13<<2)|2,{122,100,0}}, +/* 63269 */ {(13<<2)|2,{122,100,0}}, +/* 63270 */ {(13<<2)|2,{122,100,0}}, +/* 63271 */ {(13<<2)|2,{122,100,0}}, +/* 63272 */ {(13<<2)|2,{122,102,0}}, +/* 63273 */ {(13<<2)|2,{122,102,0}}, +/* 63274 */ {(13<<2)|2,{122,102,0}}, +/* 63275 */ {(13<<2)|2,{122,102,0}}, +/* 63276 */ {(13<<2)|2,{122,102,0}}, +/* 63277 */ {(13<<2)|2,{122,102,0}}, +/* 63278 */ {(13<<2)|2,{122,102,0}}, +/* 63279 */ {(13<<2)|2,{122,102,0}}, +/* 63280 */ {(13<<2)|2,{122,103,0}}, +/* 63281 */ {(13<<2)|2,{122,103,0}}, +/* 63282 */ {(13<<2)|2,{122,103,0}}, +/* 63283 */ {(13<<2)|2,{122,103,0}}, +/* 63284 */ {(13<<2)|2,{122,103,0}}, +/* 63285 */ {(13<<2)|2,{122,103,0}}, +/* 63286 */ {(13<<2)|2,{122,103,0}}, +/* 63287 */ {(13<<2)|2,{122,103,0}}, +/* 63288 */ {(13<<2)|2,{122,104,0}}, +/* 63289 */ {(13<<2)|2,{122,104,0}}, +/* 63290 */ {(13<<2)|2,{122,104,0}}, +/* 63291 */ {(13<<2)|2,{122,104,0}}, +/* 63292 */ {(13<<2)|2,{122,104,0}}, +/* 63293 */ {(13<<2)|2,{122,104,0}}, +/* 63294 */ {(13<<2)|2,{122,104,0}}, +/* 63295 */ {(13<<2)|2,{122,104,0}}, +/* 63296 */ {(13<<2)|2,{122,108,0}}, +/* 63297 */ {(13<<2)|2,{122,108,0}}, +/* 63298 */ {(13<<2)|2,{122,108,0}}, +/* 63299 */ {(13<<2)|2,{122,108,0}}, +/* 63300 */ {(13<<2)|2,{122,108,0}}, +/* 63301 */ {(13<<2)|2,{122,108,0}}, +/* 63302 */ {(13<<2)|2,{122,108,0}}, +/* 63303 */ {(13<<2)|2,{122,108,0}}, +/* 63304 */ {(13<<2)|2,{122,109,0}}, +/* 63305 */ {(13<<2)|2,{122,109,0}}, +/* 63306 */ {(13<<2)|2,{122,109,0}}, +/* 63307 */ {(13<<2)|2,{122,109,0}}, +/* 63308 */ {(13<<2)|2,{122,109,0}}, +/* 63309 */ {(13<<2)|2,{122,109,0}}, +/* 63310 */ {(13<<2)|2,{122,109,0}}, +/* 63311 */ {(13<<2)|2,{122,109,0}}, +/* 63312 */ {(13<<2)|2,{122,110,0}}, +/* 63313 */ {(13<<2)|2,{122,110,0}}, +/* 63314 */ {(13<<2)|2,{122,110,0}}, +/* 63315 */ {(13<<2)|2,{122,110,0}}, +/* 63316 */ {(13<<2)|2,{122,110,0}}, +/* 63317 */ {(13<<2)|2,{122,110,0}}, +/* 63318 */ {(13<<2)|2,{122,110,0}}, +/* 63319 */ {(13<<2)|2,{122,110,0}}, +/* 63320 */ {(13<<2)|2,{122,112,0}}, +/* 63321 */ {(13<<2)|2,{122,112,0}}, +/* 63322 */ {(13<<2)|2,{122,112,0}}, +/* 63323 */ {(13<<2)|2,{122,112,0}}, +/* 63324 */ {(13<<2)|2,{122,112,0}}, +/* 63325 */ {(13<<2)|2,{122,112,0}}, +/* 63326 */ {(13<<2)|2,{122,112,0}}, +/* 63327 */ {(13<<2)|2,{122,112,0}}, +/* 63328 */ {(13<<2)|2,{122,114,0}}, +/* 63329 */ {(13<<2)|2,{122,114,0}}, +/* 63330 */ {(13<<2)|2,{122,114,0}}, +/* 63331 */ {(13<<2)|2,{122,114,0}}, +/* 63332 */ {(13<<2)|2,{122,114,0}}, +/* 63333 */ {(13<<2)|2,{122,114,0}}, +/* 63334 */ {(13<<2)|2,{122,114,0}}, +/* 63335 */ {(13<<2)|2,{122,114,0}}, +/* 63336 */ {(13<<2)|2,{122,117,0}}, +/* 63337 */ {(13<<2)|2,{122,117,0}}, +/* 63338 */ {(13<<2)|2,{122,117,0}}, +/* 63339 */ {(13<<2)|2,{122,117,0}}, +/* 63340 */ {(13<<2)|2,{122,117,0}}, +/* 63341 */ {(13<<2)|2,{122,117,0}}, +/* 63342 */ {(13<<2)|2,{122,117,0}}, +/* 63343 */ {(13<<2)|2,{122,117,0}}, +/* 63344 */ {(14<<2)|2,{122,58,0}}, +/* 63345 */ {(14<<2)|2,{122,58,0}}, +/* 63346 */ {(14<<2)|2,{122,58,0}}, +/* 63347 */ {(14<<2)|2,{122,58,0}}, +/* 63348 */ {(14<<2)|2,{122,66,0}}, +/* 63349 */ {(14<<2)|2,{122,66,0}}, +/* 63350 */ {(14<<2)|2,{122,66,0}}, +/* 63351 */ {(14<<2)|2,{122,66,0}}, +/* 63352 */ {(14<<2)|2,{122,67,0}}, +/* 63353 */ {(14<<2)|2,{122,67,0}}, +/* 63354 */ {(14<<2)|2,{122,67,0}}, +/* 63355 */ {(14<<2)|2,{122,67,0}}, +/* 63356 */ {(14<<2)|2,{122,68,0}}, +/* 63357 */ {(14<<2)|2,{122,68,0}}, +/* 63358 */ {(14<<2)|2,{122,68,0}}, +/* 63359 */ {(14<<2)|2,{122,68,0}}, +/* 63360 */ {(14<<2)|2,{122,69,0}}, +/* 63361 */ {(14<<2)|2,{122,69,0}}, +/* 63362 */ {(14<<2)|2,{122,69,0}}, +/* 63363 */ {(14<<2)|2,{122,69,0}}, +/* 63364 */ {(14<<2)|2,{122,70,0}}, +/* 63365 */ {(14<<2)|2,{122,70,0}}, +/* 63366 */ {(14<<2)|2,{122,70,0}}, +/* 63367 */ {(14<<2)|2,{122,70,0}}, +/* 63368 */ {(14<<2)|2,{122,71,0}}, +/* 63369 */ {(14<<2)|2,{122,71,0}}, +/* 63370 */ {(14<<2)|2,{122,71,0}}, +/* 63371 */ {(14<<2)|2,{122,71,0}}, +/* 63372 */ {(14<<2)|2,{122,72,0}}, +/* 63373 */ {(14<<2)|2,{122,72,0}}, +/* 63374 */ {(14<<2)|2,{122,72,0}}, +/* 63375 */ {(14<<2)|2,{122,72,0}}, +/* 63376 */ {(14<<2)|2,{122,73,0}}, +/* 63377 */ {(14<<2)|2,{122,73,0}}, +/* 63378 */ {(14<<2)|2,{122,73,0}}, +/* 63379 */ {(14<<2)|2,{122,73,0}}, +/* 63380 */ {(14<<2)|2,{122,74,0}}, +/* 63381 */ {(14<<2)|2,{122,74,0}}, +/* 63382 */ {(14<<2)|2,{122,74,0}}, +/* 63383 */ {(14<<2)|2,{122,74,0}}, +/* 63384 */ {(14<<2)|2,{122,75,0}}, +/* 63385 */ {(14<<2)|2,{122,75,0}}, +/* 63386 */ {(14<<2)|2,{122,75,0}}, +/* 63387 */ {(14<<2)|2,{122,75,0}}, +/* 63388 */ {(14<<2)|2,{122,76,0}}, +/* 63389 */ {(14<<2)|2,{122,76,0}}, +/* 63390 */ {(14<<2)|2,{122,76,0}}, +/* 63391 */ {(14<<2)|2,{122,76,0}}, +/* 63392 */ {(14<<2)|2,{122,77,0}}, +/* 63393 */ {(14<<2)|2,{122,77,0}}, +/* 63394 */ {(14<<2)|2,{122,77,0}}, +/* 63395 */ {(14<<2)|2,{122,77,0}}, +/* 63396 */ {(14<<2)|2,{122,78,0}}, +/* 63397 */ {(14<<2)|2,{122,78,0}}, +/* 63398 */ {(14<<2)|2,{122,78,0}}, +/* 63399 */ {(14<<2)|2,{122,78,0}}, +/* 63400 */ {(14<<2)|2,{122,79,0}}, +/* 63401 */ {(14<<2)|2,{122,79,0}}, +/* 63402 */ {(14<<2)|2,{122,79,0}}, +/* 63403 */ {(14<<2)|2,{122,79,0}}, +/* 63404 */ {(14<<2)|2,{122,80,0}}, +/* 63405 */ {(14<<2)|2,{122,80,0}}, +/* 63406 */ {(14<<2)|2,{122,80,0}}, +/* 63407 */ {(14<<2)|2,{122,80,0}}, +/* 63408 */ {(14<<2)|2,{122,81,0}}, +/* 63409 */ {(14<<2)|2,{122,81,0}}, +/* 63410 */ {(14<<2)|2,{122,81,0}}, +/* 63411 */ {(14<<2)|2,{122,81,0}}, +/* 63412 */ {(14<<2)|2,{122,82,0}}, +/* 63413 */ {(14<<2)|2,{122,82,0}}, +/* 63414 */ {(14<<2)|2,{122,82,0}}, +/* 63415 */ {(14<<2)|2,{122,82,0}}, +/* 63416 */ {(14<<2)|2,{122,83,0}}, +/* 63417 */ {(14<<2)|2,{122,83,0}}, +/* 63418 */ {(14<<2)|2,{122,83,0}}, +/* 63419 */ {(14<<2)|2,{122,83,0}}, +/* 63420 */ {(14<<2)|2,{122,84,0}}, +/* 63421 */ {(14<<2)|2,{122,84,0}}, +/* 63422 */ {(14<<2)|2,{122,84,0}}, +/* 63423 */ {(14<<2)|2,{122,84,0}}, +/* 63424 */ {(14<<2)|2,{122,85,0}}, +/* 63425 */ {(14<<2)|2,{122,85,0}}, +/* 63426 */ {(14<<2)|2,{122,85,0}}, +/* 63427 */ {(14<<2)|2,{122,85,0}}, +/* 63428 */ {(14<<2)|2,{122,86,0}}, +/* 63429 */ {(14<<2)|2,{122,86,0}}, +/* 63430 */ {(14<<2)|2,{122,86,0}}, +/* 63431 */ {(14<<2)|2,{122,86,0}}, +/* 63432 */ {(14<<2)|2,{122,87,0}}, +/* 63433 */ {(14<<2)|2,{122,87,0}}, +/* 63434 */ {(14<<2)|2,{122,87,0}}, +/* 63435 */ {(14<<2)|2,{122,87,0}}, +/* 63436 */ {(14<<2)|2,{122,89,0}}, +/* 63437 */ {(14<<2)|2,{122,89,0}}, +/* 63438 */ {(14<<2)|2,{122,89,0}}, +/* 63439 */ {(14<<2)|2,{122,89,0}}, +/* 63440 */ {(14<<2)|2,{122,106,0}}, +/* 63441 */ {(14<<2)|2,{122,106,0}}, +/* 63442 */ {(14<<2)|2,{122,106,0}}, +/* 63443 */ {(14<<2)|2,{122,106,0}}, +/* 63444 */ {(14<<2)|2,{122,107,0}}, +/* 63445 */ {(14<<2)|2,{122,107,0}}, +/* 63446 */ {(14<<2)|2,{122,107,0}}, +/* 63447 */ {(14<<2)|2,{122,107,0}}, +/* 63448 */ {(14<<2)|2,{122,113,0}}, +/* 63449 */ {(14<<2)|2,{122,113,0}}, +/* 63450 */ {(14<<2)|2,{122,113,0}}, +/* 63451 */ {(14<<2)|2,{122,113,0}}, +/* 63452 */ {(14<<2)|2,{122,118,0}}, +/* 63453 */ {(14<<2)|2,{122,118,0}}, +/* 63454 */ {(14<<2)|2,{122,118,0}}, +/* 63455 */ {(14<<2)|2,{122,118,0}}, +/* 63456 */ {(14<<2)|2,{122,119,0}}, +/* 63457 */ {(14<<2)|2,{122,119,0}}, +/* 63458 */ {(14<<2)|2,{122,119,0}}, +/* 63459 */ {(14<<2)|2,{122,119,0}}, +/* 63460 */ {(14<<2)|2,{122,120,0}}, +/* 63461 */ {(14<<2)|2,{122,120,0}}, +/* 63462 */ {(14<<2)|2,{122,120,0}}, +/* 63463 */ {(14<<2)|2,{122,120,0}}, +/* 63464 */ {(14<<2)|2,{122,121,0}}, +/* 63465 */ {(14<<2)|2,{122,121,0}}, +/* 63466 */ {(14<<2)|2,{122,121,0}}, +/* 63467 */ {(14<<2)|2,{122,121,0}}, +/* 63468 */ {(14<<2)|2,{122,122,0}}, +/* 63469 */ {(14<<2)|2,{122,122,0}}, +/* 63470 */ {(14<<2)|2,{122,122,0}}, +/* 63471 */ {(14<<2)|2,{122,122,0}}, +/* 63472 */ {(15<<2)|2,{122,38,0}}, +/* 63473 */ {(15<<2)|2,{122,38,0}}, +/* 63474 */ {(15<<2)|2,{122,42,0}}, +/* 63475 */ {(15<<2)|2,{122,42,0}}, +/* 63476 */ {(15<<2)|2,{122,44,0}}, +/* 63477 */ {(15<<2)|2,{122,44,0}}, +/* 63478 */ {(15<<2)|2,{122,59,0}}, +/* 63479 */ {(15<<2)|2,{122,59,0}}, +/* 63480 */ {(15<<2)|2,{122,88,0}}, +/* 63481 */ {(15<<2)|2,{122,88,0}}, +/* 63482 */ {(15<<2)|2,{122,90,0}}, +/* 63483 */ {(15<<2)|2,{122,90,0}}, +/* 63484 */ {(7<<2)|1,{122,0,0}}, +/* 63485 */ {(7<<2)|1,{122,0,0}}, +/* 63486 */ {(7<<2)|1,{122,0,0}}, +/* 63487 */ {(7<<2)|1,{122,0,0}}, +/* 63488 */ {(13<<2)|2,{38,48,0}}, +/* 63489 */ {(13<<2)|2,{38,48,0}}, +/* 63490 */ {(13<<2)|2,{38,48,0}}, +/* 63491 */ {(13<<2)|2,{38,48,0}}, +/* 63492 */ {(13<<2)|2,{38,48,0}}, +/* 63493 */ {(13<<2)|2,{38,48,0}}, +/* 63494 */ {(13<<2)|2,{38,48,0}}, +/* 63495 */ {(13<<2)|2,{38,48,0}}, +/* 63496 */ {(13<<2)|2,{38,49,0}}, +/* 63497 */ {(13<<2)|2,{38,49,0}}, +/* 63498 */ {(13<<2)|2,{38,49,0}}, +/* 63499 */ {(13<<2)|2,{38,49,0}}, +/* 63500 */ {(13<<2)|2,{38,49,0}}, +/* 63501 */ {(13<<2)|2,{38,49,0}}, +/* 63502 */ {(13<<2)|2,{38,49,0}}, +/* 63503 */ {(13<<2)|2,{38,49,0}}, +/* 63504 */ {(13<<2)|2,{38,50,0}}, +/* 63505 */ {(13<<2)|2,{38,50,0}}, +/* 63506 */ {(13<<2)|2,{38,50,0}}, +/* 63507 */ {(13<<2)|2,{38,50,0}}, +/* 63508 */ {(13<<2)|2,{38,50,0}}, +/* 63509 */ {(13<<2)|2,{38,50,0}}, +/* 63510 */ {(13<<2)|2,{38,50,0}}, +/* 63511 */ {(13<<2)|2,{38,50,0}}, +/* 63512 */ {(13<<2)|2,{38,97,0}}, +/* 63513 */ {(13<<2)|2,{38,97,0}}, +/* 63514 */ {(13<<2)|2,{38,97,0}}, +/* 63515 */ {(13<<2)|2,{38,97,0}}, +/* 63516 */ {(13<<2)|2,{38,97,0}}, +/* 63517 */ {(13<<2)|2,{38,97,0}}, +/* 63518 */ {(13<<2)|2,{38,97,0}}, +/* 63519 */ {(13<<2)|2,{38,97,0}}, +/* 63520 */ {(13<<2)|2,{38,99,0}}, +/* 63521 */ {(13<<2)|2,{38,99,0}}, +/* 63522 */ {(13<<2)|2,{38,99,0}}, +/* 63523 */ {(13<<2)|2,{38,99,0}}, +/* 63524 */ {(13<<2)|2,{38,99,0}}, +/* 63525 */ {(13<<2)|2,{38,99,0}}, +/* 63526 */ {(13<<2)|2,{38,99,0}}, +/* 63527 */ {(13<<2)|2,{38,99,0}}, +/* 63528 */ {(13<<2)|2,{38,101,0}}, +/* 63529 */ {(13<<2)|2,{38,101,0}}, +/* 63530 */ {(13<<2)|2,{38,101,0}}, +/* 63531 */ {(13<<2)|2,{38,101,0}}, +/* 63532 */ {(13<<2)|2,{38,101,0}}, +/* 63533 */ {(13<<2)|2,{38,101,0}}, +/* 63534 */ {(13<<2)|2,{38,101,0}}, +/* 63535 */ {(13<<2)|2,{38,101,0}}, +/* 63536 */ {(13<<2)|2,{38,105,0}}, +/* 63537 */ {(13<<2)|2,{38,105,0}}, +/* 63538 */ {(13<<2)|2,{38,105,0}}, +/* 63539 */ {(13<<2)|2,{38,105,0}}, +/* 63540 */ {(13<<2)|2,{38,105,0}}, +/* 63541 */ {(13<<2)|2,{38,105,0}}, +/* 63542 */ {(13<<2)|2,{38,105,0}}, +/* 63543 */ {(13<<2)|2,{38,105,0}}, +/* 63544 */ {(13<<2)|2,{38,111,0}}, +/* 63545 */ {(13<<2)|2,{38,111,0}}, +/* 63546 */ {(13<<2)|2,{38,111,0}}, +/* 63547 */ {(13<<2)|2,{38,111,0}}, +/* 63548 */ {(13<<2)|2,{38,111,0}}, +/* 63549 */ {(13<<2)|2,{38,111,0}}, +/* 63550 */ {(13<<2)|2,{38,111,0}}, +/* 63551 */ {(13<<2)|2,{38,111,0}}, +/* 63552 */ {(13<<2)|2,{38,115,0}}, +/* 63553 */ {(13<<2)|2,{38,115,0}}, +/* 63554 */ {(13<<2)|2,{38,115,0}}, +/* 63555 */ {(13<<2)|2,{38,115,0}}, +/* 63556 */ {(13<<2)|2,{38,115,0}}, +/* 63557 */ {(13<<2)|2,{38,115,0}}, +/* 63558 */ {(13<<2)|2,{38,115,0}}, +/* 63559 */ {(13<<2)|2,{38,115,0}}, +/* 63560 */ {(13<<2)|2,{38,116,0}}, +/* 63561 */ {(13<<2)|2,{38,116,0}}, +/* 63562 */ {(13<<2)|2,{38,116,0}}, +/* 63563 */ {(13<<2)|2,{38,116,0}}, +/* 63564 */ {(13<<2)|2,{38,116,0}}, +/* 63565 */ {(13<<2)|2,{38,116,0}}, +/* 63566 */ {(13<<2)|2,{38,116,0}}, +/* 63567 */ {(13<<2)|2,{38,116,0}}, +/* 63568 */ {(14<<2)|2,{38,32,0}}, +/* 63569 */ {(14<<2)|2,{38,32,0}}, +/* 63570 */ {(14<<2)|2,{38,32,0}}, +/* 63571 */ {(14<<2)|2,{38,32,0}}, +/* 63572 */ {(14<<2)|2,{38,37,0}}, +/* 63573 */ {(14<<2)|2,{38,37,0}}, +/* 63574 */ {(14<<2)|2,{38,37,0}}, +/* 63575 */ {(14<<2)|2,{38,37,0}}, +/* 63576 */ {(14<<2)|2,{38,45,0}}, +/* 63577 */ {(14<<2)|2,{38,45,0}}, +/* 63578 */ {(14<<2)|2,{38,45,0}}, +/* 63579 */ {(14<<2)|2,{38,45,0}}, +/* 63580 */ {(14<<2)|2,{38,46,0}}, +/* 63581 */ {(14<<2)|2,{38,46,0}}, +/* 63582 */ {(14<<2)|2,{38,46,0}}, +/* 63583 */ {(14<<2)|2,{38,46,0}}, +/* 63584 */ {(14<<2)|2,{38,47,0}}, +/* 63585 */ {(14<<2)|2,{38,47,0}}, +/* 63586 */ {(14<<2)|2,{38,47,0}}, +/* 63587 */ {(14<<2)|2,{38,47,0}}, +/* 63588 */ {(14<<2)|2,{38,51,0}}, +/* 63589 */ {(14<<2)|2,{38,51,0}}, +/* 63590 */ {(14<<2)|2,{38,51,0}}, +/* 63591 */ {(14<<2)|2,{38,51,0}}, +/* 63592 */ {(14<<2)|2,{38,52,0}}, +/* 63593 */ {(14<<2)|2,{38,52,0}}, +/* 63594 */ {(14<<2)|2,{38,52,0}}, +/* 63595 */ {(14<<2)|2,{38,52,0}}, +/* 63596 */ {(14<<2)|2,{38,53,0}}, +/* 63597 */ {(14<<2)|2,{38,53,0}}, +/* 63598 */ {(14<<2)|2,{38,53,0}}, +/* 63599 */ {(14<<2)|2,{38,53,0}}, +/* 63600 */ {(14<<2)|2,{38,54,0}}, +/* 63601 */ {(14<<2)|2,{38,54,0}}, +/* 63602 */ {(14<<2)|2,{38,54,0}}, +/* 63603 */ {(14<<2)|2,{38,54,0}}, +/* 63604 */ {(14<<2)|2,{38,55,0}}, +/* 63605 */ {(14<<2)|2,{38,55,0}}, +/* 63606 */ {(14<<2)|2,{38,55,0}}, +/* 63607 */ {(14<<2)|2,{38,55,0}}, +/* 63608 */ {(14<<2)|2,{38,56,0}}, +/* 63609 */ {(14<<2)|2,{38,56,0}}, +/* 63610 */ {(14<<2)|2,{38,56,0}}, +/* 63611 */ {(14<<2)|2,{38,56,0}}, +/* 63612 */ {(14<<2)|2,{38,57,0}}, +/* 63613 */ {(14<<2)|2,{38,57,0}}, +/* 63614 */ {(14<<2)|2,{38,57,0}}, +/* 63615 */ {(14<<2)|2,{38,57,0}}, +/* 63616 */ {(14<<2)|2,{38,61,0}}, +/* 63617 */ {(14<<2)|2,{38,61,0}}, +/* 63618 */ {(14<<2)|2,{38,61,0}}, +/* 63619 */ {(14<<2)|2,{38,61,0}}, +/* 63620 */ {(14<<2)|2,{38,65,0}}, +/* 63621 */ {(14<<2)|2,{38,65,0}}, +/* 63622 */ {(14<<2)|2,{38,65,0}}, +/* 63623 */ {(14<<2)|2,{38,65,0}}, +/* 63624 */ {(14<<2)|2,{38,95,0}}, +/* 63625 */ {(14<<2)|2,{38,95,0}}, +/* 63626 */ {(14<<2)|2,{38,95,0}}, +/* 63627 */ {(14<<2)|2,{38,95,0}}, +/* 63628 */ {(14<<2)|2,{38,98,0}}, +/* 63629 */ {(14<<2)|2,{38,98,0}}, +/* 63630 */ {(14<<2)|2,{38,98,0}}, +/* 63631 */ {(14<<2)|2,{38,98,0}}, +/* 63632 */ {(14<<2)|2,{38,100,0}}, +/* 63633 */ {(14<<2)|2,{38,100,0}}, +/* 63634 */ {(14<<2)|2,{38,100,0}}, +/* 63635 */ {(14<<2)|2,{38,100,0}}, +/* 63636 */ {(14<<2)|2,{38,102,0}}, +/* 63637 */ {(14<<2)|2,{38,102,0}}, +/* 63638 */ {(14<<2)|2,{38,102,0}}, +/* 63639 */ {(14<<2)|2,{38,102,0}}, +/* 63640 */ {(14<<2)|2,{38,103,0}}, +/* 63641 */ {(14<<2)|2,{38,103,0}}, +/* 63642 */ {(14<<2)|2,{38,103,0}}, +/* 63643 */ {(14<<2)|2,{38,103,0}}, +/* 63644 */ {(14<<2)|2,{38,104,0}}, +/* 63645 */ {(14<<2)|2,{38,104,0}}, +/* 63646 */ {(14<<2)|2,{38,104,0}}, +/* 63647 */ {(14<<2)|2,{38,104,0}}, +/* 63648 */ {(14<<2)|2,{38,108,0}}, +/* 63649 */ {(14<<2)|2,{38,108,0}}, +/* 63650 */ {(14<<2)|2,{38,108,0}}, +/* 63651 */ {(14<<2)|2,{38,108,0}}, +/* 63652 */ {(14<<2)|2,{38,109,0}}, +/* 63653 */ {(14<<2)|2,{38,109,0}}, +/* 63654 */ {(14<<2)|2,{38,109,0}}, +/* 63655 */ {(14<<2)|2,{38,109,0}}, +/* 63656 */ {(14<<2)|2,{38,110,0}}, +/* 63657 */ {(14<<2)|2,{38,110,0}}, +/* 63658 */ {(14<<2)|2,{38,110,0}}, +/* 63659 */ {(14<<2)|2,{38,110,0}}, +/* 63660 */ {(14<<2)|2,{38,112,0}}, +/* 63661 */ {(14<<2)|2,{38,112,0}}, +/* 63662 */ {(14<<2)|2,{38,112,0}}, +/* 63663 */ {(14<<2)|2,{38,112,0}}, +/* 63664 */ {(14<<2)|2,{38,114,0}}, +/* 63665 */ {(14<<2)|2,{38,114,0}}, +/* 63666 */ {(14<<2)|2,{38,114,0}}, +/* 63667 */ {(14<<2)|2,{38,114,0}}, +/* 63668 */ {(14<<2)|2,{38,117,0}}, +/* 63669 */ {(14<<2)|2,{38,117,0}}, +/* 63670 */ {(14<<2)|2,{38,117,0}}, +/* 63671 */ {(14<<2)|2,{38,117,0}}, +/* 63672 */ {(15<<2)|2,{38,58,0}}, +/* 63673 */ {(15<<2)|2,{38,58,0}}, +/* 63674 */ {(15<<2)|2,{38,66,0}}, +/* 63675 */ {(15<<2)|2,{38,66,0}}, +/* 63676 */ {(15<<2)|2,{38,67,0}}, +/* 63677 */ {(15<<2)|2,{38,67,0}}, +/* 63678 */ {(15<<2)|2,{38,68,0}}, +/* 63679 */ {(15<<2)|2,{38,68,0}}, +/* 63680 */ {(15<<2)|2,{38,69,0}}, +/* 63681 */ {(15<<2)|2,{38,69,0}}, +/* 63682 */ {(15<<2)|2,{38,70,0}}, +/* 63683 */ {(15<<2)|2,{38,70,0}}, +/* 63684 */ {(15<<2)|2,{38,71,0}}, +/* 63685 */ {(15<<2)|2,{38,71,0}}, +/* 63686 */ {(15<<2)|2,{38,72,0}}, +/* 63687 */ {(15<<2)|2,{38,72,0}}, +/* 63688 */ {(15<<2)|2,{38,73,0}}, +/* 63689 */ {(15<<2)|2,{38,73,0}}, +/* 63690 */ {(15<<2)|2,{38,74,0}}, +/* 63691 */ {(15<<2)|2,{38,74,0}}, +/* 63692 */ {(15<<2)|2,{38,75,0}}, +/* 63693 */ {(15<<2)|2,{38,75,0}}, +/* 63694 */ {(15<<2)|2,{38,76,0}}, +/* 63695 */ {(15<<2)|2,{38,76,0}}, +/* 63696 */ {(15<<2)|2,{38,77,0}}, +/* 63697 */ {(15<<2)|2,{38,77,0}}, +/* 63698 */ {(15<<2)|2,{38,78,0}}, +/* 63699 */ {(15<<2)|2,{38,78,0}}, +/* 63700 */ {(15<<2)|2,{38,79,0}}, +/* 63701 */ {(15<<2)|2,{38,79,0}}, +/* 63702 */ {(15<<2)|2,{38,80,0}}, +/* 63703 */ {(15<<2)|2,{38,80,0}}, +/* 63704 */ {(15<<2)|2,{38,81,0}}, +/* 63705 */ {(15<<2)|2,{38,81,0}}, +/* 63706 */ {(15<<2)|2,{38,82,0}}, +/* 63707 */ {(15<<2)|2,{38,82,0}}, +/* 63708 */ {(15<<2)|2,{38,83,0}}, +/* 63709 */ {(15<<2)|2,{38,83,0}}, +/* 63710 */ {(15<<2)|2,{38,84,0}}, +/* 63711 */ {(15<<2)|2,{38,84,0}}, +/* 63712 */ {(15<<2)|2,{38,85,0}}, +/* 63713 */ {(15<<2)|2,{38,85,0}}, +/* 63714 */ {(15<<2)|2,{38,86,0}}, +/* 63715 */ {(15<<2)|2,{38,86,0}}, +/* 63716 */ {(15<<2)|2,{38,87,0}}, +/* 63717 */ {(15<<2)|2,{38,87,0}}, +/* 63718 */ {(15<<2)|2,{38,89,0}}, +/* 63719 */ {(15<<2)|2,{38,89,0}}, +/* 63720 */ {(15<<2)|2,{38,106,0}}, +/* 63721 */ {(15<<2)|2,{38,106,0}}, +/* 63722 */ {(15<<2)|2,{38,107,0}}, +/* 63723 */ {(15<<2)|2,{38,107,0}}, +/* 63724 */ {(15<<2)|2,{38,113,0}}, +/* 63725 */ {(15<<2)|2,{38,113,0}}, +/* 63726 */ {(15<<2)|2,{38,118,0}}, +/* 63727 */ {(15<<2)|2,{38,118,0}}, +/* 63728 */ {(15<<2)|2,{38,119,0}}, +/* 63729 */ {(15<<2)|2,{38,119,0}}, +/* 63730 */ {(15<<2)|2,{38,120,0}}, +/* 63731 */ {(15<<2)|2,{38,120,0}}, +/* 63732 */ {(15<<2)|2,{38,121,0}}, +/* 63733 */ {(15<<2)|2,{38,121,0}}, +/* 63734 */ {(15<<2)|2,{38,122,0}}, +/* 63735 */ {(15<<2)|2,{38,122,0}}, +/* 63736 */ {(16<<2)|2,{38,38,0}}, +/* 63737 */ {(16<<2)|2,{38,42,0}}, +/* 63738 */ {(16<<2)|2,{38,44,0}}, +/* 63739 */ {(16<<2)|2,{38,59,0}}, +/* 63740 */ {(16<<2)|2,{38,88,0}}, +/* 63741 */ {(16<<2)|2,{38,90,0}}, +/* 63742 */ {(8<<2)|1,{38,0,0}}, +/* 63743 */ {(8<<2)|1,{38,0,0}}, +/* 63744 */ {(13<<2)|2,{42,48,0}}, +/* 63745 */ {(13<<2)|2,{42,48,0}}, +/* 63746 */ {(13<<2)|2,{42,48,0}}, +/* 63747 */ {(13<<2)|2,{42,48,0}}, +/* 63748 */ {(13<<2)|2,{42,48,0}}, +/* 63749 */ {(13<<2)|2,{42,48,0}}, +/* 63750 */ {(13<<2)|2,{42,48,0}}, +/* 63751 */ {(13<<2)|2,{42,48,0}}, +/* 63752 */ {(13<<2)|2,{42,49,0}}, +/* 63753 */ {(13<<2)|2,{42,49,0}}, +/* 63754 */ {(13<<2)|2,{42,49,0}}, +/* 63755 */ {(13<<2)|2,{42,49,0}}, +/* 63756 */ {(13<<2)|2,{42,49,0}}, +/* 63757 */ {(13<<2)|2,{42,49,0}}, +/* 63758 */ {(13<<2)|2,{42,49,0}}, +/* 63759 */ {(13<<2)|2,{42,49,0}}, +/* 63760 */ {(13<<2)|2,{42,50,0}}, +/* 63761 */ {(13<<2)|2,{42,50,0}}, +/* 63762 */ {(13<<2)|2,{42,50,0}}, +/* 63763 */ {(13<<2)|2,{42,50,0}}, +/* 63764 */ {(13<<2)|2,{42,50,0}}, +/* 63765 */ {(13<<2)|2,{42,50,0}}, +/* 63766 */ {(13<<2)|2,{42,50,0}}, +/* 63767 */ {(13<<2)|2,{42,50,0}}, +/* 63768 */ {(13<<2)|2,{42,97,0}}, +/* 63769 */ {(13<<2)|2,{42,97,0}}, +/* 63770 */ {(13<<2)|2,{42,97,0}}, +/* 63771 */ {(13<<2)|2,{42,97,0}}, +/* 63772 */ {(13<<2)|2,{42,97,0}}, +/* 63773 */ {(13<<2)|2,{42,97,0}}, +/* 63774 */ {(13<<2)|2,{42,97,0}}, +/* 63775 */ {(13<<2)|2,{42,97,0}}, +/* 63776 */ {(13<<2)|2,{42,99,0}}, +/* 63777 */ {(13<<2)|2,{42,99,0}}, +/* 63778 */ {(13<<2)|2,{42,99,0}}, +/* 63779 */ {(13<<2)|2,{42,99,0}}, +/* 63780 */ {(13<<2)|2,{42,99,0}}, +/* 63781 */ {(13<<2)|2,{42,99,0}}, +/* 63782 */ {(13<<2)|2,{42,99,0}}, +/* 63783 */ {(13<<2)|2,{42,99,0}}, +/* 63784 */ {(13<<2)|2,{42,101,0}}, +/* 63785 */ {(13<<2)|2,{42,101,0}}, +/* 63786 */ {(13<<2)|2,{42,101,0}}, +/* 63787 */ {(13<<2)|2,{42,101,0}}, +/* 63788 */ {(13<<2)|2,{42,101,0}}, +/* 63789 */ {(13<<2)|2,{42,101,0}}, +/* 63790 */ {(13<<2)|2,{42,101,0}}, +/* 63791 */ {(13<<2)|2,{42,101,0}}, +/* 63792 */ {(13<<2)|2,{42,105,0}}, +/* 63793 */ {(13<<2)|2,{42,105,0}}, +/* 63794 */ {(13<<2)|2,{42,105,0}}, +/* 63795 */ {(13<<2)|2,{42,105,0}}, +/* 63796 */ {(13<<2)|2,{42,105,0}}, +/* 63797 */ {(13<<2)|2,{42,105,0}}, +/* 63798 */ {(13<<2)|2,{42,105,0}}, +/* 63799 */ {(13<<2)|2,{42,105,0}}, +/* 63800 */ {(13<<2)|2,{42,111,0}}, +/* 63801 */ {(13<<2)|2,{42,111,0}}, +/* 63802 */ {(13<<2)|2,{42,111,0}}, +/* 63803 */ {(13<<2)|2,{42,111,0}}, +/* 63804 */ {(13<<2)|2,{42,111,0}}, +/* 63805 */ {(13<<2)|2,{42,111,0}}, +/* 63806 */ {(13<<2)|2,{42,111,0}}, +/* 63807 */ {(13<<2)|2,{42,111,0}}, +/* 63808 */ {(13<<2)|2,{42,115,0}}, +/* 63809 */ {(13<<2)|2,{42,115,0}}, +/* 63810 */ {(13<<2)|2,{42,115,0}}, +/* 63811 */ {(13<<2)|2,{42,115,0}}, +/* 63812 */ {(13<<2)|2,{42,115,0}}, +/* 63813 */ {(13<<2)|2,{42,115,0}}, +/* 63814 */ {(13<<2)|2,{42,115,0}}, +/* 63815 */ {(13<<2)|2,{42,115,0}}, +/* 63816 */ {(13<<2)|2,{42,116,0}}, +/* 63817 */ {(13<<2)|2,{42,116,0}}, +/* 63818 */ {(13<<2)|2,{42,116,0}}, +/* 63819 */ {(13<<2)|2,{42,116,0}}, +/* 63820 */ {(13<<2)|2,{42,116,0}}, +/* 63821 */ {(13<<2)|2,{42,116,0}}, +/* 63822 */ {(13<<2)|2,{42,116,0}}, +/* 63823 */ {(13<<2)|2,{42,116,0}}, +/* 63824 */ {(14<<2)|2,{42,32,0}}, +/* 63825 */ {(14<<2)|2,{42,32,0}}, +/* 63826 */ {(14<<2)|2,{42,32,0}}, +/* 63827 */ {(14<<2)|2,{42,32,0}}, +/* 63828 */ {(14<<2)|2,{42,37,0}}, +/* 63829 */ {(14<<2)|2,{42,37,0}}, +/* 63830 */ {(14<<2)|2,{42,37,0}}, +/* 63831 */ {(14<<2)|2,{42,37,0}}, +/* 63832 */ {(14<<2)|2,{42,45,0}}, +/* 63833 */ {(14<<2)|2,{42,45,0}}, +/* 63834 */ {(14<<2)|2,{42,45,0}}, +/* 63835 */ {(14<<2)|2,{42,45,0}}, +/* 63836 */ {(14<<2)|2,{42,46,0}}, +/* 63837 */ {(14<<2)|2,{42,46,0}}, +/* 63838 */ {(14<<2)|2,{42,46,0}}, +/* 63839 */ {(14<<2)|2,{42,46,0}}, +/* 63840 */ {(14<<2)|2,{42,47,0}}, +/* 63841 */ {(14<<2)|2,{42,47,0}}, +/* 63842 */ {(14<<2)|2,{42,47,0}}, +/* 63843 */ {(14<<2)|2,{42,47,0}}, +/* 63844 */ {(14<<2)|2,{42,51,0}}, +/* 63845 */ {(14<<2)|2,{42,51,0}}, +/* 63846 */ {(14<<2)|2,{42,51,0}}, +/* 63847 */ {(14<<2)|2,{42,51,0}}, +/* 63848 */ {(14<<2)|2,{42,52,0}}, +/* 63849 */ {(14<<2)|2,{42,52,0}}, +/* 63850 */ {(14<<2)|2,{42,52,0}}, +/* 63851 */ {(14<<2)|2,{42,52,0}}, +/* 63852 */ {(14<<2)|2,{42,53,0}}, +/* 63853 */ {(14<<2)|2,{42,53,0}}, +/* 63854 */ {(14<<2)|2,{42,53,0}}, +/* 63855 */ {(14<<2)|2,{42,53,0}}, +/* 63856 */ {(14<<2)|2,{42,54,0}}, +/* 63857 */ {(14<<2)|2,{42,54,0}}, +/* 63858 */ {(14<<2)|2,{42,54,0}}, +/* 63859 */ {(14<<2)|2,{42,54,0}}, +/* 63860 */ {(14<<2)|2,{42,55,0}}, +/* 63861 */ {(14<<2)|2,{42,55,0}}, +/* 63862 */ {(14<<2)|2,{42,55,0}}, +/* 63863 */ {(14<<2)|2,{42,55,0}}, +/* 63864 */ {(14<<2)|2,{42,56,0}}, +/* 63865 */ {(14<<2)|2,{42,56,0}}, +/* 63866 */ {(14<<2)|2,{42,56,0}}, +/* 63867 */ {(14<<2)|2,{42,56,0}}, +/* 63868 */ {(14<<2)|2,{42,57,0}}, +/* 63869 */ {(14<<2)|2,{42,57,0}}, +/* 63870 */ {(14<<2)|2,{42,57,0}}, +/* 63871 */ {(14<<2)|2,{42,57,0}}, +/* 63872 */ {(14<<2)|2,{42,61,0}}, +/* 63873 */ {(14<<2)|2,{42,61,0}}, +/* 63874 */ {(14<<2)|2,{42,61,0}}, +/* 63875 */ {(14<<2)|2,{42,61,0}}, +/* 63876 */ {(14<<2)|2,{42,65,0}}, +/* 63877 */ {(14<<2)|2,{42,65,0}}, +/* 63878 */ {(14<<2)|2,{42,65,0}}, +/* 63879 */ {(14<<2)|2,{42,65,0}}, +/* 63880 */ {(14<<2)|2,{42,95,0}}, +/* 63881 */ {(14<<2)|2,{42,95,0}}, +/* 63882 */ {(14<<2)|2,{42,95,0}}, +/* 63883 */ {(14<<2)|2,{42,95,0}}, +/* 63884 */ {(14<<2)|2,{42,98,0}}, +/* 63885 */ {(14<<2)|2,{42,98,0}}, +/* 63886 */ {(14<<2)|2,{42,98,0}}, +/* 63887 */ {(14<<2)|2,{42,98,0}}, +/* 63888 */ {(14<<2)|2,{42,100,0}}, +/* 63889 */ {(14<<2)|2,{42,100,0}}, +/* 63890 */ {(14<<2)|2,{42,100,0}}, +/* 63891 */ {(14<<2)|2,{42,100,0}}, +/* 63892 */ {(14<<2)|2,{42,102,0}}, +/* 63893 */ {(14<<2)|2,{42,102,0}}, +/* 63894 */ {(14<<2)|2,{42,102,0}}, +/* 63895 */ {(14<<2)|2,{42,102,0}}, +/* 63896 */ {(14<<2)|2,{42,103,0}}, +/* 63897 */ {(14<<2)|2,{42,103,0}}, +/* 63898 */ {(14<<2)|2,{42,103,0}}, +/* 63899 */ {(14<<2)|2,{42,103,0}}, +/* 63900 */ {(14<<2)|2,{42,104,0}}, +/* 63901 */ {(14<<2)|2,{42,104,0}}, +/* 63902 */ {(14<<2)|2,{42,104,0}}, +/* 63903 */ {(14<<2)|2,{42,104,0}}, +/* 63904 */ {(14<<2)|2,{42,108,0}}, +/* 63905 */ {(14<<2)|2,{42,108,0}}, +/* 63906 */ {(14<<2)|2,{42,108,0}}, +/* 63907 */ {(14<<2)|2,{42,108,0}}, +/* 63908 */ {(14<<2)|2,{42,109,0}}, +/* 63909 */ {(14<<2)|2,{42,109,0}}, +/* 63910 */ {(14<<2)|2,{42,109,0}}, +/* 63911 */ {(14<<2)|2,{42,109,0}}, +/* 63912 */ {(14<<2)|2,{42,110,0}}, +/* 63913 */ {(14<<2)|2,{42,110,0}}, +/* 63914 */ {(14<<2)|2,{42,110,0}}, +/* 63915 */ {(14<<2)|2,{42,110,0}}, +/* 63916 */ {(14<<2)|2,{42,112,0}}, +/* 63917 */ {(14<<2)|2,{42,112,0}}, +/* 63918 */ {(14<<2)|2,{42,112,0}}, +/* 63919 */ {(14<<2)|2,{42,112,0}}, +/* 63920 */ {(14<<2)|2,{42,114,0}}, +/* 63921 */ {(14<<2)|2,{42,114,0}}, +/* 63922 */ {(14<<2)|2,{42,114,0}}, +/* 63923 */ {(14<<2)|2,{42,114,0}}, +/* 63924 */ {(14<<2)|2,{42,117,0}}, +/* 63925 */ {(14<<2)|2,{42,117,0}}, +/* 63926 */ {(14<<2)|2,{42,117,0}}, +/* 63927 */ {(14<<2)|2,{42,117,0}}, +/* 63928 */ {(15<<2)|2,{42,58,0}}, +/* 63929 */ {(15<<2)|2,{42,58,0}}, +/* 63930 */ {(15<<2)|2,{42,66,0}}, +/* 63931 */ {(15<<2)|2,{42,66,0}}, +/* 63932 */ {(15<<2)|2,{42,67,0}}, +/* 63933 */ {(15<<2)|2,{42,67,0}}, +/* 63934 */ {(15<<2)|2,{42,68,0}}, +/* 63935 */ {(15<<2)|2,{42,68,0}}, +/* 63936 */ {(15<<2)|2,{42,69,0}}, +/* 63937 */ {(15<<2)|2,{42,69,0}}, +/* 63938 */ {(15<<2)|2,{42,70,0}}, +/* 63939 */ {(15<<2)|2,{42,70,0}}, +/* 63940 */ {(15<<2)|2,{42,71,0}}, +/* 63941 */ {(15<<2)|2,{42,71,0}}, +/* 63942 */ {(15<<2)|2,{42,72,0}}, +/* 63943 */ {(15<<2)|2,{42,72,0}}, +/* 63944 */ {(15<<2)|2,{42,73,0}}, +/* 63945 */ {(15<<2)|2,{42,73,0}}, +/* 63946 */ {(15<<2)|2,{42,74,0}}, +/* 63947 */ {(15<<2)|2,{42,74,0}}, +/* 63948 */ {(15<<2)|2,{42,75,0}}, +/* 63949 */ {(15<<2)|2,{42,75,0}}, +/* 63950 */ {(15<<2)|2,{42,76,0}}, +/* 63951 */ {(15<<2)|2,{42,76,0}}, +/* 63952 */ {(15<<2)|2,{42,77,0}}, +/* 63953 */ {(15<<2)|2,{42,77,0}}, +/* 63954 */ {(15<<2)|2,{42,78,0}}, +/* 63955 */ {(15<<2)|2,{42,78,0}}, +/* 63956 */ {(15<<2)|2,{42,79,0}}, +/* 63957 */ {(15<<2)|2,{42,79,0}}, +/* 63958 */ {(15<<2)|2,{42,80,0}}, +/* 63959 */ {(15<<2)|2,{42,80,0}}, +/* 63960 */ {(15<<2)|2,{42,81,0}}, +/* 63961 */ {(15<<2)|2,{42,81,0}}, +/* 63962 */ {(15<<2)|2,{42,82,0}}, +/* 63963 */ {(15<<2)|2,{42,82,0}}, +/* 63964 */ {(15<<2)|2,{42,83,0}}, +/* 63965 */ {(15<<2)|2,{42,83,0}}, +/* 63966 */ {(15<<2)|2,{42,84,0}}, +/* 63967 */ {(15<<2)|2,{42,84,0}}, +/* 63968 */ {(15<<2)|2,{42,85,0}}, +/* 63969 */ {(15<<2)|2,{42,85,0}}, +/* 63970 */ {(15<<2)|2,{42,86,0}}, +/* 63971 */ {(15<<2)|2,{42,86,0}}, +/* 63972 */ {(15<<2)|2,{42,87,0}}, +/* 63973 */ {(15<<2)|2,{42,87,0}}, +/* 63974 */ {(15<<2)|2,{42,89,0}}, +/* 63975 */ {(15<<2)|2,{42,89,0}}, +/* 63976 */ {(15<<2)|2,{42,106,0}}, +/* 63977 */ {(15<<2)|2,{42,106,0}}, +/* 63978 */ {(15<<2)|2,{42,107,0}}, +/* 63979 */ {(15<<2)|2,{42,107,0}}, +/* 63980 */ {(15<<2)|2,{42,113,0}}, +/* 63981 */ {(15<<2)|2,{42,113,0}}, +/* 63982 */ {(15<<2)|2,{42,118,0}}, +/* 63983 */ {(15<<2)|2,{42,118,0}}, +/* 63984 */ {(15<<2)|2,{42,119,0}}, +/* 63985 */ {(15<<2)|2,{42,119,0}}, +/* 63986 */ {(15<<2)|2,{42,120,0}}, +/* 63987 */ {(15<<2)|2,{42,120,0}}, +/* 63988 */ {(15<<2)|2,{42,121,0}}, +/* 63989 */ {(15<<2)|2,{42,121,0}}, +/* 63990 */ {(15<<2)|2,{42,122,0}}, +/* 63991 */ {(15<<2)|2,{42,122,0}}, +/* 63992 */ {(16<<2)|2,{42,38,0}}, +/* 63993 */ {(16<<2)|2,{42,42,0}}, +/* 63994 */ {(16<<2)|2,{42,44,0}}, +/* 63995 */ {(16<<2)|2,{42,59,0}}, +/* 63996 */ {(16<<2)|2,{42,88,0}}, +/* 63997 */ {(16<<2)|2,{42,90,0}}, +/* 63998 */ {(8<<2)|1,{42,0,0}}, +/* 63999 */ {(8<<2)|1,{42,0,0}}, +/* 64000 */ {(13<<2)|2,{44,48,0}}, +/* 64001 */ {(13<<2)|2,{44,48,0}}, +/* 64002 */ {(13<<2)|2,{44,48,0}}, +/* 64003 */ {(13<<2)|2,{44,48,0}}, +/* 64004 */ {(13<<2)|2,{44,48,0}}, +/* 64005 */ {(13<<2)|2,{44,48,0}}, +/* 64006 */ {(13<<2)|2,{44,48,0}}, +/* 64007 */ {(13<<2)|2,{44,48,0}}, +/* 64008 */ {(13<<2)|2,{44,49,0}}, +/* 64009 */ {(13<<2)|2,{44,49,0}}, +/* 64010 */ {(13<<2)|2,{44,49,0}}, +/* 64011 */ {(13<<2)|2,{44,49,0}}, +/* 64012 */ {(13<<2)|2,{44,49,0}}, +/* 64013 */ {(13<<2)|2,{44,49,0}}, +/* 64014 */ {(13<<2)|2,{44,49,0}}, +/* 64015 */ {(13<<2)|2,{44,49,0}}, +/* 64016 */ {(13<<2)|2,{44,50,0}}, +/* 64017 */ {(13<<2)|2,{44,50,0}}, +/* 64018 */ {(13<<2)|2,{44,50,0}}, +/* 64019 */ {(13<<2)|2,{44,50,0}}, +/* 64020 */ {(13<<2)|2,{44,50,0}}, +/* 64021 */ {(13<<2)|2,{44,50,0}}, +/* 64022 */ {(13<<2)|2,{44,50,0}}, +/* 64023 */ {(13<<2)|2,{44,50,0}}, +/* 64024 */ {(13<<2)|2,{44,97,0}}, +/* 64025 */ {(13<<2)|2,{44,97,0}}, +/* 64026 */ {(13<<2)|2,{44,97,0}}, +/* 64027 */ {(13<<2)|2,{44,97,0}}, +/* 64028 */ {(13<<2)|2,{44,97,0}}, +/* 64029 */ {(13<<2)|2,{44,97,0}}, +/* 64030 */ {(13<<2)|2,{44,97,0}}, +/* 64031 */ {(13<<2)|2,{44,97,0}}, +/* 64032 */ {(13<<2)|2,{44,99,0}}, +/* 64033 */ {(13<<2)|2,{44,99,0}}, +/* 64034 */ {(13<<2)|2,{44,99,0}}, +/* 64035 */ {(13<<2)|2,{44,99,0}}, +/* 64036 */ {(13<<2)|2,{44,99,0}}, +/* 64037 */ {(13<<2)|2,{44,99,0}}, +/* 64038 */ {(13<<2)|2,{44,99,0}}, +/* 64039 */ {(13<<2)|2,{44,99,0}}, +/* 64040 */ {(13<<2)|2,{44,101,0}}, +/* 64041 */ {(13<<2)|2,{44,101,0}}, +/* 64042 */ {(13<<2)|2,{44,101,0}}, +/* 64043 */ {(13<<2)|2,{44,101,0}}, +/* 64044 */ {(13<<2)|2,{44,101,0}}, +/* 64045 */ {(13<<2)|2,{44,101,0}}, +/* 64046 */ {(13<<2)|2,{44,101,0}}, +/* 64047 */ {(13<<2)|2,{44,101,0}}, +/* 64048 */ {(13<<2)|2,{44,105,0}}, +/* 64049 */ {(13<<2)|2,{44,105,0}}, +/* 64050 */ {(13<<2)|2,{44,105,0}}, +/* 64051 */ {(13<<2)|2,{44,105,0}}, +/* 64052 */ {(13<<2)|2,{44,105,0}}, +/* 64053 */ {(13<<2)|2,{44,105,0}}, +/* 64054 */ {(13<<2)|2,{44,105,0}}, +/* 64055 */ {(13<<2)|2,{44,105,0}}, +/* 64056 */ {(13<<2)|2,{44,111,0}}, +/* 64057 */ {(13<<2)|2,{44,111,0}}, +/* 64058 */ {(13<<2)|2,{44,111,0}}, +/* 64059 */ {(13<<2)|2,{44,111,0}}, +/* 64060 */ {(13<<2)|2,{44,111,0}}, +/* 64061 */ {(13<<2)|2,{44,111,0}}, +/* 64062 */ {(13<<2)|2,{44,111,0}}, +/* 64063 */ {(13<<2)|2,{44,111,0}}, +/* 64064 */ {(13<<2)|2,{44,115,0}}, +/* 64065 */ {(13<<2)|2,{44,115,0}}, +/* 64066 */ {(13<<2)|2,{44,115,0}}, +/* 64067 */ {(13<<2)|2,{44,115,0}}, +/* 64068 */ {(13<<2)|2,{44,115,0}}, +/* 64069 */ {(13<<2)|2,{44,115,0}}, +/* 64070 */ {(13<<2)|2,{44,115,0}}, +/* 64071 */ {(13<<2)|2,{44,115,0}}, +/* 64072 */ {(13<<2)|2,{44,116,0}}, +/* 64073 */ {(13<<2)|2,{44,116,0}}, +/* 64074 */ {(13<<2)|2,{44,116,0}}, +/* 64075 */ {(13<<2)|2,{44,116,0}}, +/* 64076 */ {(13<<2)|2,{44,116,0}}, +/* 64077 */ {(13<<2)|2,{44,116,0}}, +/* 64078 */ {(13<<2)|2,{44,116,0}}, +/* 64079 */ {(13<<2)|2,{44,116,0}}, +/* 64080 */ {(14<<2)|2,{44,32,0}}, +/* 64081 */ {(14<<2)|2,{44,32,0}}, +/* 64082 */ {(14<<2)|2,{44,32,0}}, +/* 64083 */ {(14<<2)|2,{44,32,0}}, +/* 64084 */ {(14<<2)|2,{44,37,0}}, +/* 64085 */ {(14<<2)|2,{44,37,0}}, +/* 64086 */ {(14<<2)|2,{44,37,0}}, +/* 64087 */ {(14<<2)|2,{44,37,0}}, +/* 64088 */ {(14<<2)|2,{44,45,0}}, +/* 64089 */ {(14<<2)|2,{44,45,0}}, +/* 64090 */ {(14<<2)|2,{44,45,0}}, +/* 64091 */ {(14<<2)|2,{44,45,0}}, +/* 64092 */ {(14<<2)|2,{44,46,0}}, +/* 64093 */ {(14<<2)|2,{44,46,0}}, +/* 64094 */ {(14<<2)|2,{44,46,0}}, +/* 64095 */ {(14<<2)|2,{44,46,0}}, +/* 64096 */ {(14<<2)|2,{44,47,0}}, +/* 64097 */ {(14<<2)|2,{44,47,0}}, +/* 64098 */ {(14<<2)|2,{44,47,0}}, +/* 64099 */ {(14<<2)|2,{44,47,0}}, +/* 64100 */ {(14<<2)|2,{44,51,0}}, +/* 64101 */ {(14<<2)|2,{44,51,0}}, +/* 64102 */ {(14<<2)|2,{44,51,0}}, +/* 64103 */ {(14<<2)|2,{44,51,0}}, +/* 64104 */ {(14<<2)|2,{44,52,0}}, +/* 64105 */ {(14<<2)|2,{44,52,0}}, +/* 64106 */ {(14<<2)|2,{44,52,0}}, +/* 64107 */ {(14<<2)|2,{44,52,0}}, +/* 64108 */ {(14<<2)|2,{44,53,0}}, +/* 64109 */ {(14<<2)|2,{44,53,0}}, +/* 64110 */ {(14<<2)|2,{44,53,0}}, +/* 64111 */ {(14<<2)|2,{44,53,0}}, +/* 64112 */ {(14<<2)|2,{44,54,0}}, +/* 64113 */ {(14<<2)|2,{44,54,0}}, +/* 64114 */ {(14<<2)|2,{44,54,0}}, +/* 64115 */ {(14<<2)|2,{44,54,0}}, +/* 64116 */ {(14<<2)|2,{44,55,0}}, +/* 64117 */ {(14<<2)|2,{44,55,0}}, +/* 64118 */ {(14<<2)|2,{44,55,0}}, +/* 64119 */ {(14<<2)|2,{44,55,0}}, +/* 64120 */ {(14<<2)|2,{44,56,0}}, +/* 64121 */ {(14<<2)|2,{44,56,0}}, +/* 64122 */ {(14<<2)|2,{44,56,0}}, +/* 64123 */ {(14<<2)|2,{44,56,0}}, +/* 64124 */ {(14<<2)|2,{44,57,0}}, +/* 64125 */ {(14<<2)|2,{44,57,0}}, +/* 64126 */ {(14<<2)|2,{44,57,0}}, +/* 64127 */ {(14<<2)|2,{44,57,0}}, +/* 64128 */ {(14<<2)|2,{44,61,0}}, +/* 64129 */ {(14<<2)|2,{44,61,0}}, +/* 64130 */ {(14<<2)|2,{44,61,0}}, +/* 64131 */ {(14<<2)|2,{44,61,0}}, +/* 64132 */ {(14<<2)|2,{44,65,0}}, +/* 64133 */ {(14<<2)|2,{44,65,0}}, +/* 64134 */ {(14<<2)|2,{44,65,0}}, +/* 64135 */ {(14<<2)|2,{44,65,0}}, +/* 64136 */ {(14<<2)|2,{44,95,0}}, +/* 64137 */ {(14<<2)|2,{44,95,0}}, +/* 64138 */ {(14<<2)|2,{44,95,0}}, +/* 64139 */ {(14<<2)|2,{44,95,0}}, +/* 64140 */ {(14<<2)|2,{44,98,0}}, +/* 64141 */ {(14<<2)|2,{44,98,0}}, +/* 64142 */ {(14<<2)|2,{44,98,0}}, +/* 64143 */ {(14<<2)|2,{44,98,0}}, +/* 64144 */ {(14<<2)|2,{44,100,0}}, +/* 64145 */ {(14<<2)|2,{44,100,0}}, +/* 64146 */ {(14<<2)|2,{44,100,0}}, +/* 64147 */ {(14<<2)|2,{44,100,0}}, +/* 64148 */ {(14<<2)|2,{44,102,0}}, +/* 64149 */ {(14<<2)|2,{44,102,0}}, +/* 64150 */ {(14<<2)|2,{44,102,0}}, +/* 64151 */ {(14<<2)|2,{44,102,0}}, +/* 64152 */ {(14<<2)|2,{44,103,0}}, +/* 64153 */ {(14<<2)|2,{44,103,0}}, +/* 64154 */ {(14<<2)|2,{44,103,0}}, +/* 64155 */ {(14<<2)|2,{44,103,0}}, +/* 64156 */ {(14<<2)|2,{44,104,0}}, +/* 64157 */ {(14<<2)|2,{44,104,0}}, +/* 64158 */ {(14<<2)|2,{44,104,0}}, +/* 64159 */ {(14<<2)|2,{44,104,0}}, +/* 64160 */ {(14<<2)|2,{44,108,0}}, +/* 64161 */ {(14<<2)|2,{44,108,0}}, +/* 64162 */ {(14<<2)|2,{44,108,0}}, +/* 64163 */ {(14<<2)|2,{44,108,0}}, +/* 64164 */ {(14<<2)|2,{44,109,0}}, +/* 64165 */ {(14<<2)|2,{44,109,0}}, +/* 64166 */ {(14<<2)|2,{44,109,0}}, +/* 64167 */ {(14<<2)|2,{44,109,0}}, +/* 64168 */ {(14<<2)|2,{44,110,0}}, +/* 64169 */ {(14<<2)|2,{44,110,0}}, +/* 64170 */ {(14<<2)|2,{44,110,0}}, +/* 64171 */ {(14<<2)|2,{44,110,0}}, +/* 64172 */ {(14<<2)|2,{44,112,0}}, +/* 64173 */ {(14<<2)|2,{44,112,0}}, +/* 64174 */ {(14<<2)|2,{44,112,0}}, +/* 64175 */ {(14<<2)|2,{44,112,0}}, +/* 64176 */ {(14<<2)|2,{44,114,0}}, +/* 64177 */ {(14<<2)|2,{44,114,0}}, +/* 64178 */ {(14<<2)|2,{44,114,0}}, +/* 64179 */ {(14<<2)|2,{44,114,0}}, +/* 64180 */ {(14<<2)|2,{44,117,0}}, +/* 64181 */ {(14<<2)|2,{44,117,0}}, +/* 64182 */ {(14<<2)|2,{44,117,0}}, +/* 64183 */ {(14<<2)|2,{44,117,0}}, +/* 64184 */ {(15<<2)|2,{44,58,0}}, +/* 64185 */ {(15<<2)|2,{44,58,0}}, +/* 64186 */ {(15<<2)|2,{44,66,0}}, +/* 64187 */ {(15<<2)|2,{44,66,0}}, +/* 64188 */ {(15<<2)|2,{44,67,0}}, +/* 64189 */ {(15<<2)|2,{44,67,0}}, +/* 64190 */ {(15<<2)|2,{44,68,0}}, +/* 64191 */ {(15<<2)|2,{44,68,0}}, +/* 64192 */ {(15<<2)|2,{44,69,0}}, +/* 64193 */ {(15<<2)|2,{44,69,0}}, +/* 64194 */ {(15<<2)|2,{44,70,0}}, +/* 64195 */ {(15<<2)|2,{44,70,0}}, +/* 64196 */ {(15<<2)|2,{44,71,0}}, +/* 64197 */ {(15<<2)|2,{44,71,0}}, +/* 64198 */ {(15<<2)|2,{44,72,0}}, +/* 64199 */ {(15<<2)|2,{44,72,0}}, +/* 64200 */ {(15<<2)|2,{44,73,0}}, +/* 64201 */ {(15<<2)|2,{44,73,0}}, +/* 64202 */ {(15<<2)|2,{44,74,0}}, +/* 64203 */ {(15<<2)|2,{44,74,0}}, +/* 64204 */ {(15<<2)|2,{44,75,0}}, +/* 64205 */ {(15<<2)|2,{44,75,0}}, +/* 64206 */ {(15<<2)|2,{44,76,0}}, +/* 64207 */ {(15<<2)|2,{44,76,0}}, +/* 64208 */ {(15<<2)|2,{44,77,0}}, +/* 64209 */ {(15<<2)|2,{44,77,0}}, +/* 64210 */ {(15<<2)|2,{44,78,0}}, +/* 64211 */ {(15<<2)|2,{44,78,0}}, +/* 64212 */ {(15<<2)|2,{44,79,0}}, +/* 64213 */ {(15<<2)|2,{44,79,0}}, +/* 64214 */ {(15<<2)|2,{44,80,0}}, +/* 64215 */ {(15<<2)|2,{44,80,0}}, +/* 64216 */ {(15<<2)|2,{44,81,0}}, +/* 64217 */ {(15<<2)|2,{44,81,0}}, +/* 64218 */ {(15<<2)|2,{44,82,0}}, +/* 64219 */ {(15<<2)|2,{44,82,0}}, +/* 64220 */ {(15<<2)|2,{44,83,0}}, +/* 64221 */ {(15<<2)|2,{44,83,0}}, +/* 64222 */ {(15<<2)|2,{44,84,0}}, +/* 64223 */ {(15<<2)|2,{44,84,0}}, +/* 64224 */ {(15<<2)|2,{44,85,0}}, +/* 64225 */ {(15<<2)|2,{44,85,0}}, +/* 64226 */ {(15<<2)|2,{44,86,0}}, +/* 64227 */ {(15<<2)|2,{44,86,0}}, +/* 64228 */ {(15<<2)|2,{44,87,0}}, +/* 64229 */ {(15<<2)|2,{44,87,0}}, +/* 64230 */ {(15<<2)|2,{44,89,0}}, +/* 64231 */ {(15<<2)|2,{44,89,0}}, +/* 64232 */ {(15<<2)|2,{44,106,0}}, +/* 64233 */ {(15<<2)|2,{44,106,0}}, +/* 64234 */ {(15<<2)|2,{44,107,0}}, +/* 64235 */ {(15<<2)|2,{44,107,0}}, +/* 64236 */ {(15<<2)|2,{44,113,0}}, +/* 64237 */ {(15<<2)|2,{44,113,0}}, +/* 64238 */ {(15<<2)|2,{44,118,0}}, +/* 64239 */ {(15<<2)|2,{44,118,0}}, +/* 64240 */ {(15<<2)|2,{44,119,0}}, +/* 64241 */ {(15<<2)|2,{44,119,0}}, +/* 64242 */ {(15<<2)|2,{44,120,0}}, +/* 64243 */ {(15<<2)|2,{44,120,0}}, +/* 64244 */ {(15<<2)|2,{44,121,0}}, +/* 64245 */ {(15<<2)|2,{44,121,0}}, +/* 64246 */ {(15<<2)|2,{44,122,0}}, +/* 64247 */ {(15<<2)|2,{44,122,0}}, +/* 64248 */ {(16<<2)|2,{44,38,0}}, +/* 64249 */ {(16<<2)|2,{44,42,0}}, +/* 64250 */ {(16<<2)|2,{44,44,0}}, +/* 64251 */ {(16<<2)|2,{44,59,0}}, +/* 64252 */ {(16<<2)|2,{44,88,0}}, +/* 64253 */ {(16<<2)|2,{44,90,0}}, +/* 64254 */ {(8<<2)|1,{44,0,0}}, +/* 64255 */ {(8<<2)|1,{44,0,0}}, +/* 64256 */ {(13<<2)|2,{59,48,0}}, +/* 64257 */ {(13<<2)|2,{59,48,0}}, +/* 64258 */ {(13<<2)|2,{59,48,0}}, +/* 64259 */ {(13<<2)|2,{59,48,0}}, +/* 64260 */ {(13<<2)|2,{59,48,0}}, +/* 64261 */ {(13<<2)|2,{59,48,0}}, +/* 64262 */ {(13<<2)|2,{59,48,0}}, +/* 64263 */ {(13<<2)|2,{59,48,0}}, +/* 64264 */ {(13<<2)|2,{59,49,0}}, +/* 64265 */ {(13<<2)|2,{59,49,0}}, +/* 64266 */ {(13<<2)|2,{59,49,0}}, +/* 64267 */ {(13<<2)|2,{59,49,0}}, +/* 64268 */ {(13<<2)|2,{59,49,0}}, +/* 64269 */ {(13<<2)|2,{59,49,0}}, +/* 64270 */ {(13<<2)|2,{59,49,0}}, +/* 64271 */ {(13<<2)|2,{59,49,0}}, +/* 64272 */ {(13<<2)|2,{59,50,0}}, +/* 64273 */ {(13<<2)|2,{59,50,0}}, +/* 64274 */ {(13<<2)|2,{59,50,0}}, +/* 64275 */ {(13<<2)|2,{59,50,0}}, +/* 64276 */ {(13<<2)|2,{59,50,0}}, +/* 64277 */ {(13<<2)|2,{59,50,0}}, +/* 64278 */ {(13<<2)|2,{59,50,0}}, +/* 64279 */ {(13<<2)|2,{59,50,0}}, +/* 64280 */ {(13<<2)|2,{59,97,0}}, +/* 64281 */ {(13<<2)|2,{59,97,0}}, +/* 64282 */ {(13<<2)|2,{59,97,0}}, +/* 64283 */ {(13<<2)|2,{59,97,0}}, +/* 64284 */ {(13<<2)|2,{59,97,0}}, +/* 64285 */ {(13<<2)|2,{59,97,0}}, +/* 64286 */ {(13<<2)|2,{59,97,0}}, +/* 64287 */ {(13<<2)|2,{59,97,0}}, +/* 64288 */ {(13<<2)|2,{59,99,0}}, +/* 64289 */ {(13<<2)|2,{59,99,0}}, +/* 64290 */ {(13<<2)|2,{59,99,0}}, +/* 64291 */ {(13<<2)|2,{59,99,0}}, +/* 64292 */ {(13<<2)|2,{59,99,0}}, +/* 64293 */ {(13<<2)|2,{59,99,0}}, +/* 64294 */ {(13<<2)|2,{59,99,0}}, +/* 64295 */ {(13<<2)|2,{59,99,0}}, +/* 64296 */ {(13<<2)|2,{59,101,0}}, +/* 64297 */ {(13<<2)|2,{59,101,0}}, +/* 64298 */ {(13<<2)|2,{59,101,0}}, +/* 64299 */ {(13<<2)|2,{59,101,0}}, +/* 64300 */ {(13<<2)|2,{59,101,0}}, +/* 64301 */ {(13<<2)|2,{59,101,0}}, +/* 64302 */ {(13<<2)|2,{59,101,0}}, +/* 64303 */ {(13<<2)|2,{59,101,0}}, +/* 64304 */ {(13<<2)|2,{59,105,0}}, +/* 64305 */ {(13<<2)|2,{59,105,0}}, +/* 64306 */ {(13<<2)|2,{59,105,0}}, +/* 64307 */ {(13<<2)|2,{59,105,0}}, +/* 64308 */ {(13<<2)|2,{59,105,0}}, +/* 64309 */ {(13<<2)|2,{59,105,0}}, +/* 64310 */ {(13<<2)|2,{59,105,0}}, +/* 64311 */ {(13<<2)|2,{59,105,0}}, +/* 64312 */ {(13<<2)|2,{59,111,0}}, +/* 64313 */ {(13<<2)|2,{59,111,0}}, +/* 64314 */ {(13<<2)|2,{59,111,0}}, +/* 64315 */ {(13<<2)|2,{59,111,0}}, +/* 64316 */ {(13<<2)|2,{59,111,0}}, +/* 64317 */ {(13<<2)|2,{59,111,0}}, +/* 64318 */ {(13<<2)|2,{59,111,0}}, +/* 64319 */ {(13<<2)|2,{59,111,0}}, +/* 64320 */ {(13<<2)|2,{59,115,0}}, +/* 64321 */ {(13<<2)|2,{59,115,0}}, +/* 64322 */ {(13<<2)|2,{59,115,0}}, +/* 64323 */ {(13<<2)|2,{59,115,0}}, +/* 64324 */ {(13<<2)|2,{59,115,0}}, +/* 64325 */ {(13<<2)|2,{59,115,0}}, +/* 64326 */ {(13<<2)|2,{59,115,0}}, +/* 64327 */ {(13<<2)|2,{59,115,0}}, +/* 64328 */ {(13<<2)|2,{59,116,0}}, +/* 64329 */ {(13<<2)|2,{59,116,0}}, +/* 64330 */ {(13<<2)|2,{59,116,0}}, +/* 64331 */ {(13<<2)|2,{59,116,0}}, +/* 64332 */ {(13<<2)|2,{59,116,0}}, +/* 64333 */ {(13<<2)|2,{59,116,0}}, +/* 64334 */ {(13<<2)|2,{59,116,0}}, +/* 64335 */ {(13<<2)|2,{59,116,0}}, +/* 64336 */ {(14<<2)|2,{59,32,0}}, +/* 64337 */ {(14<<2)|2,{59,32,0}}, +/* 64338 */ {(14<<2)|2,{59,32,0}}, +/* 64339 */ {(14<<2)|2,{59,32,0}}, +/* 64340 */ {(14<<2)|2,{59,37,0}}, +/* 64341 */ {(14<<2)|2,{59,37,0}}, +/* 64342 */ {(14<<2)|2,{59,37,0}}, +/* 64343 */ {(14<<2)|2,{59,37,0}}, +/* 64344 */ {(14<<2)|2,{59,45,0}}, +/* 64345 */ {(14<<2)|2,{59,45,0}}, +/* 64346 */ {(14<<2)|2,{59,45,0}}, +/* 64347 */ {(14<<2)|2,{59,45,0}}, +/* 64348 */ {(14<<2)|2,{59,46,0}}, +/* 64349 */ {(14<<2)|2,{59,46,0}}, +/* 64350 */ {(14<<2)|2,{59,46,0}}, +/* 64351 */ {(14<<2)|2,{59,46,0}}, +/* 64352 */ {(14<<2)|2,{59,47,0}}, +/* 64353 */ {(14<<2)|2,{59,47,0}}, +/* 64354 */ {(14<<2)|2,{59,47,0}}, +/* 64355 */ {(14<<2)|2,{59,47,0}}, +/* 64356 */ {(14<<2)|2,{59,51,0}}, +/* 64357 */ {(14<<2)|2,{59,51,0}}, +/* 64358 */ {(14<<2)|2,{59,51,0}}, +/* 64359 */ {(14<<2)|2,{59,51,0}}, +/* 64360 */ {(14<<2)|2,{59,52,0}}, +/* 64361 */ {(14<<2)|2,{59,52,0}}, +/* 64362 */ {(14<<2)|2,{59,52,0}}, +/* 64363 */ {(14<<2)|2,{59,52,0}}, +/* 64364 */ {(14<<2)|2,{59,53,0}}, +/* 64365 */ {(14<<2)|2,{59,53,0}}, +/* 64366 */ {(14<<2)|2,{59,53,0}}, +/* 64367 */ {(14<<2)|2,{59,53,0}}, +/* 64368 */ {(14<<2)|2,{59,54,0}}, +/* 64369 */ {(14<<2)|2,{59,54,0}}, +/* 64370 */ {(14<<2)|2,{59,54,0}}, +/* 64371 */ {(14<<2)|2,{59,54,0}}, +/* 64372 */ {(14<<2)|2,{59,55,0}}, +/* 64373 */ {(14<<2)|2,{59,55,0}}, +/* 64374 */ {(14<<2)|2,{59,55,0}}, +/* 64375 */ {(14<<2)|2,{59,55,0}}, +/* 64376 */ {(14<<2)|2,{59,56,0}}, +/* 64377 */ {(14<<2)|2,{59,56,0}}, +/* 64378 */ {(14<<2)|2,{59,56,0}}, +/* 64379 */ {(14<<2)|2,{59,56,0}}, +/* 64380 */ {(14<<2)|2,{59,57,0}}, +/* 64381 */ {(14<<2)|2,{59,57,0}}, +/* 64382 */ {(14<<2)|2,{59,57,0}}, +/* 64383 */ {(14<<2)|2,{59,57,0}}, +/* 64384 */ {(14<<2)|2,{59,61,0}}, +/* 64385 */ {(14<<2)|2,{59,61,0}}, +/* 64386 */ {(14<<2)|2,{59,61,0}}, +/* 64387 */ {(14<<2)|2,{59,61,0}}, +/* 64388 */ {(14<<2)|2,{59,65,0}}, +/* 64389 */ {(14<<2)|2,{59,65,0}}, +/* 64390 */ {(14<<2)|2,{59,65,0}}, +/* 64391 */ {(14<<2)|2,{59,65,0}}, +/* 64392 */ {(14<<2)|2,{59,95,0}}, +/* 64393 */ {(14<<2)|2,{59,95,0}}, +/* 64394 */ {(14<<2)|2,{59,95,0}}, +/* 64395 */ {(14<<2)|2,{59,95,0}}, +/* 64396 */ {(14<<2)|2,{59,98,0}}, +/* 64397 */ {(14<<2)|2,{59,98,0}}, +/* 64398 */ {(14<<2)|2,{59,98,0}}, +/* 64399 */ {(14<<2)|2,{59,98,0}}, +/* 64400 */ {(14<<2)|2,{59,100,0}}, +/* 64401 */ {(14<<2)|2,{59,100,0}}, +/* 64402 */ {(14<<2)|2,{59,100,0}}, +/* 64403 */ {(14<<2)|2,{59,100,0}}, +/* 64404 */ {(14<<2)|2,{59,102,0}}, +/* 64405 */ {(14<<2)|2,{59,102,0}}, +/* 64406 */ {(14<<2)|2,{59,102,0}}, +/* 64407 */ {(14<<2)|2,{59,102,0}}, +/* 64408 */ {(14<<2)|2,{59,103,0}}, +/* 64409 */ {(14<<2)|2,{59,103,0}}, +/* 64410 */ {(14<<2)|2,{59,103,0}}, +/* 64411 */ {(14<<2)|2,{59,103,0}}, +/* 64412 */ {(14<<2)|2,{59,104,0}}, +/* 64413 */ {(14<<2)|2,{59,104,0}}, +/* 64414 */ {(14<<2)|2,{59,104,0}}, +/* 64415 */ {(14<<2)|2,{59,104,0}}, +/* 64416 */ {(14<<2)|2,{59,108,0}}, +/* 64417 */ {(14<<2)|2,{59,108,0}}, +/* 64418 */ {(14<<2)|2,{59,108,0}}, +/* 64419 */ {(14<<2)|2,{59,108,0}}, +/* 64420 */ {(14<<2)|2,{59,109,0}}, +/* 64421 */ {(14<<2)|2,{59,109,0}}, +/* 64422 */ {(14<<2)|2,{59,109,0}}, +/* 64423 */ {(14<<2)|2,{59,109,0}}, +/* 64424 */ {(14<<2)|2,{59,110,0}}, +/* 64425 */ {(14<<2)|2,{59,110,0}}, +/* 64426 */ {(14<<2)|2,{59,110,0}}, +/* 64427 */ {(14<<2)|2,{59,110,0}}, +/* 64428 */ {(14<<2)|2,{59,112,0}}, +/* 64429 */ {(14<<2)|2,{59,112,0}}, +/* 64430 */ {(14<<2)|2,{59,112,0}}, +/* 64431 */ {(14<<2)|2,{59,112,0}}, +/* 64432 */ {(14<<2)|2,{59,114,0}}, +/* 64433 */ {(14<<2)|2,{59,114,0}}, +/* 64434 */ {(14<<2)|2,{59,114,0}}, +/* 64435 */ {(14<<2)|2,{59,114,0}}, +/* 64436 */ {(14<<2)|2,{59,117,0}}, +/* 64437 */ {(14<<2)|2,{59,117,0}}, +/* 64438 */ {(14<<2)|2,{59,117,0}}, +/* 64439 */ {(14<<2)|2,{59,117,0}}, +/* 64440 */ {(15<<2)|2,{59,58,0}}, +/* 64441 */ {(15<<2)|2,{59,58,0}}, +/* 64442 */ {(15<<2)|2,{59,66,0}}, +/* 64443 */ {(15<<2)|2,{59,66,0}}, +/* 64444 */ {(15<<2)|2,{59,67,0}}, +/* 64445 */ {(15<<2)|2,{59,67,0}}, +/* 64446 */ {(15<<2)|2,{59,68,0}}, +/* 64447 */ {(15<<2)|2,{59,68,0}}, +/* 64448 */ {(15<<2)|2,{59,69,0}}, +/* 64449 */ {(15<<2)|2,{59,69,0}}, +/* 64450 */ {(15<<2)|2,{59,70,0}}, +/* 64451 */ {(15<<2)|2,{59,70,0}}, +/* 64452 */ {(15<<2)|2,{59,71,0}}, +/* 64453 */ {(15<<2)|2,{59,71,0}}, +/* 64454 */ {(15<<2)|2,{59,72,0}}, +/* 64455 */ {(15<<2)|2,{59,72,0}}, +/* 64456 */ {(15<<2)|2,{59,73,0}}, +/* 64457 */ {(15<<2)|2,{59,73,0}}, +/* 64458 */ {(15<<2)|2,{59,74,0}}, +/* 64459 */ {(15<<2)|2,{59,74,0}}, +/* 64460 */ {(15<<2)|2,{59,75,0}}, +/* 64461 */ {(15<<2)|2,{59,75,0}}, +/* 64462 */ {(15<<2)|2,{59,76,0}}, +/* 64463 */ {(15<<2)|2,{59,76,0}}, +/* 64464 */ {(15<<2)|2,{59,77,0}}, +/* 64465 */ {(15<<2)|2,{59,77,0}}, +/* 64466 */ {(15<<2)|2,{59,78,0}}, +/* 64467 */ {(15<<2)|2,{59,78,0}}, +/* 64468 */ {(15<<2)|2,{59,79,0}}, +/* 64469 */ {(15<<2)|2,{59,79,0}}, +/* 64470 */ {(15<<2)|2,{59,80,0}}, +/* 64471 */ {(15<<2)|2,{59,80,0}}, +/* 64472 */ {(15<<2)|2,{59,81,0}}, +/* 64473 */ {(15<<2)|2,{59,81,0}}, +/* 64474 */ {(15<<2)|2,{59,82,0}}, +/* 64475 */ {(15<<2)|2,{59,82,0}}, +/* 64476 */ {(15<<2)|2,{59,83,0}}, +/* 64477 */ {(15<<2)|2,{59,83,0}}, +/* 64478 */ {(15<<2)|2,{59,84,0}}, +/* 64479 */ {(15<<2)|2,{59,84,0}}, +/* 64480 */ {(15<<2)|2,{59,85,0}}, +/* 64481 */ {(15<<2)|2,{59,85,0}}, +/* 64482 */ {(15<<2)|2,{59,86,0}}, +/* 64483 */ {(15<<2)|2,{59,86,0}}, +/* 64484 */ {(15<<2)|2,{59,87,0}}, +/* 64485 */ {(15<<2)|2,{59,87,0}}, +/* 64486 */ {(15<<2)|2,{59,89,0}}, +/* 64487 */ {(15<<2)|2,{59,89,0}}, +/* 64488 */ {(15<<2)|2,{59,106,0}}, +/* 64489 */ {(15<<2)|2,{59,106,0}}, +/* 64490 */ {(15<<2)|2,{59,107,0}}, +/* 64491 */ {(15<<2)|2,{59,107,0}}, +/* 64492 */ {(15<<2)|2,{59,113,0}}, +/* 64493 */ {(15<<2)|2,{59,113,0}}, +/* 64494 */ {(15<<2)|2,{59,118,0}}, +/* 64495 */ {(15<<2)|2,{59,118,0}}, +/* 64496 */ {(15<<2)|2,{59,119,0}}, +/* 64497 */ {(15<<2)|2,{59,119,0}}, +/* 64498 */ {(15<<2)|2,{59,120,0}}, +/* 64499 */ {(15<<2)|2,{59,120,0}}, +/* 64500 */ {(15<<2)|2,{59,121,0}}, +/* 64501 */ {(15<<2)|2,{59,121,0}}, +/* 64502 */ {(15<<2)|2,{59,122,0}}, +/* 64503 */ {(15<<2)|2,{59,122,0}}, +/* 64504 */ {(16<<2)|2,{59,38,0}}, +/* 64505 */ {(16<<2)|2,{59,42,0}}, +/* 64506 */ {(16<<2)|2,{59,44,0}}, +/* 64507 */ {(16<<2)|2,{59,59,0}}, +/* 64508 */ {(16<<2)|2,{59,88,0}}, +/* 64509 */ {(16<<2)|2,{59,90,0}}, +/* 64510 */ {(8<<2)|1,{59,0,0}}, +/* 64511 */ {(8<<2)|1,{59,0,0}}, +/* 64512 */ {(13<<2)|2,{88,48,0}}, +/* 64513 */ {(13<<2)|2,{88,48,0}}, +/* 64514 */ {(13<<2)|2,{88,48,0}}, +/* 64515 */ {(13<<2)|2,{88,48,0}}, +/* 64516 */ {(13<<2)|2,{88,48,0}}, +/* 64517 */ {(13<<2)|2,{88,48,0}}, +/* 64518 */ {(13<<2)|2,{88,48,0}}, +/* 64519 */ {(13<<2)|2,{88,48,0}}, +/* 64520 */ {(13<<2)|2,{88,49,0}}, +/* 64521 */ {(13<<2)|2,{88,49,0}}, +/* 64522 */ {(13<<2)|2,{88,49,0}}, +/* 64523 */ {(13<<2)|2,{88,49,0}}, +/* 64524 */ {(13<<2)|2,{88,49,0}}, +/* 64525 */ {(13<<2)|2,{88,49,0}}, +/* 64526 */ {(13<<2)|2,{88,49,0}}, +/* 64527 */ {(13<<2)|2,{88,49,0}}, +/* 64528 */ {(13<<2)|2,{88,50,0}}, +/* 64529 */ {(13<<2)|2,{88,50,0}}, +/* 64530 */ {(13<<2)|2,{88,50,0}}, +/* 64531 */ {(13<<2)|2,{88,50,0}}, +/* 64532 */ {(13<<2)|2,{88,50,0}}, +/* 64533 */ {(13<<2)|2,{88,50,0}}, +/* 64534 */ {(13<<2)|2,{88,50,0}}, +/* 64535 */ {(13<<2)|2,{88,50,0}}, +/* 64536 */ {(13<<2)|2,{88,97,0}}, +/* 64537 */ {(13<<2)|2,{88,97,0}}, +/* 64538 */ {(13<<2)|2,{88,97,0}}, +/* 64539 */ {(13<<2)|2,{88,97,0}}, +/* 64540 */ {(13<<2)|2,{88,97,0}}, +/* 64541 */ {(13<<2)|2,{88,97,0}}, +/* 64542 */ {(13<<2)|2,{88,97,0}}, +/* 64543 */ {(13<<2)|2,{88,97,0}}, +/* 64544 */ {(13<<2)|2,{88,99,0}}, +/* 64545 */ {(13<<2)|2,{88,99,0}}, +/* 64546 */ {(13<<2)|2,{88,99,0}}, +/* 64547 */ {(13<<2)|2,{88,99,0}}, +/* 64548 */ {(13<<2)|2,{88,99,0}}, +/* 64549 */ {(13<<2)|2,{88,99,0}}, +/* 64550 */ {(13<<2)|2,{88,99,0}}, +/* 64551 */ {(13<<2)|2,{88,99,0}}, +/* 64552 */ {(13<<2)|2,{88,101,0}}, +/* 64553 */ {(13<<2)|2,{88,101,0}}, +/* 64554 */ {(13<<2)|2,{88,101,0}}, +/* 64555 */ {(13<<2)|2,{88,101,0}}, +/* 64556 */ {(13<<2)|2,{88,101,0}}, +/* 64557 */ {(13<<2)|2,{88,101,0}}, +/* 64558 */ {(13<<2)|2,{88,101,0}}, +/* 64559 */ {(13<<2)|2,{88,101,0}}, +/* 64560 */ {(13<<2)|2,{88,105,0}}, +/* 64561 */ {(13<<2)|2,{88,105,0}}, +/* 64562 */ {(13<<2)|2,{88,105,0}}, +/* 64563 */ {(13<<2)|2,{88,105,0}}, +/* 64564 */ {(13<<2)|2,{88,105,0}}, +/* 64565 */ {(13<<2)|2,{88,105,0}}, +/* 64566 */ {(13<<2)|2,{88,105,0}}, +/* 64567 */ {(13<<2)|2,{88,105,0}}, +/* 64568 */ {(13<<2)|2,{88,111,0}}, +/* 64569 */ {(13<<2)|2,{88,111,0}}, +/* 64570 */ {(13<<2)|2,{88,111,0}}, +/* 64571 */ {(13<<2)|2,{88,111,0}}, +/* 64572 */ {(13<<2)|2,{88,111,0}}, +/* 64573 */ {(13<<2)|2,{88,111,0}}, +/* 64574 */ {(13<<2)|2,{88,111,0}}, +/* 64575 */ {(13<<2)|2,{88,111,0}}, +/* 64576 */ {(13<<2)|2,{88,115,0}}, +/* 64577 */ {(13<<2)|2,{88,115,0}}, +/* 64578 */ {(13<<2)|2,{88,115,0}}, +/* 64579 */ {(13<<2)|2,{88,115,0}}, +/* 64580 */ {(13<<2)|2,{88,115,0}}, +/* 64581 */ {(13<<2)|2,{88,115,0}}, +/* 64582 */ {(13<<2)|2,{88,115,0}}, +/* 64583 */ {(13<<2)|2,{88,115,0}}, +/* 64584 */ {(13<<2)|2,{88,116,0}}, +/* 64585 */ {(13<<2)|2,{88,116,0}}, +/* 64586 */ {(13<<2)|2,{88,116,0}}, +/* 64587 */ {(13<<2)|2,{88,116,0}}, +/* 64588 */ {(13<<2)|2,{88,116,0}}, +/* 64589 */ {(13<<2)|2,{88,116,0}}, +/* 64590 */ {(13<<2)|2,{88,116,0}}, +/* 64591 */ {(13<<2)|2,{88,116,0}}, +/* 64592 */ {(14<<2)|2,{88,32,0}}, +/* 64593 */ {(14<<2)|2,{88,32,0}}, +/* 64594 */ {(14<<2)|2,{88,32,0}}, +/* 64595 */ {(14<<2)|2,{88,32,0}}, +/* 64596 */ {(14<<2)|2,{88,37,0}}, +/* 64597 */ {(14<<2)|2,{88,37,0}}, +/* 64598 */ {(14<<2)|2,{88,37,0}}, +/* 64599 */ {(14<<2)|2,{88,37,0}}, +/* 64600 */ {(14<<2)|2,{88,45,0}}, +/* 64601 */ {(14<<2)|2,{88,45,0}}, +/* 64602 */ {(14<<2)|2,{88,45,0}}, +/* 64603 */ {(14<<2)|2,{88,45,0}}, +/* 64604 */ {(14<<2)|2,{88,46,0}}, +/* 64605 */ {(14<<2)|2,{88,46,0}}, +/* 64606 */ {(14<<2)|2,{88,46,0}}, +/* 64607 */ {(14<<2)|2,{88,46,0}}, +/* 64608 */ {(14<<2)|2,{88,47,0}}, +/* 64609 */ {(14<<2)|2,{88,47,0}}, +/* 64610 */ {(14<<2)|2,{88,47,0}}, +/* 64611 */ {(14<<2)|2,{88,47,0}}, +/* 64612 */ {(14<<2)|2,{88,51,0}}, +/* 64613 */ {(14<<2)|2,{88,51,0}}, +/* 64614 */ {(14<<2)|2,{88,51,0}}, +/* 64615 */ {(14<<2)|2,{88,51,0}}, +/* 64616 */ {(14<<2)|2,{88,52,0}}, +/* 64617 */ {(14<<2)|2,{88,52,0}}, +/* 64618 */ {(14<<2)|2,{88,52,0}}, +/* 64619 */ {(14<<2)|2,{88,52,0}}, +/* 64620 */ {(14<<2)|2,{88,53,0}}, +/* 64621 */ {(14<<2)|2,{88,53,0}}, +/* 64622 */ {(14<<2)|2,{88,53,0}}, +/* 64623 */ {(14<<2)|2,{88,53,0}}, +/* 64624 */ {(14<<2)|2,{88,54,0}}, +/* 64625 */ {(14<<2)|2,{88,54,0}}, +/* 64626 */ {(14<<2)|2,{88,54,0}}, +/* 64627 */ {(14<<2)|2,{88,54,0}}, +/* 64628 */ {(14<<2)|2,{88,55,0}}, +/* 64629 */ {(14<<2)|2,{88,55,0}}, +/* 64630 */ {(14<<2)|2,{88,55,0}}, +/* 64631 */ {(14<<2)|2,{88,55,0}}, +/* 64632 */ {(14<<2)|2,{88,56,0}}, +/* 64633 */ {(14<<2)|2,{88,56,0}}, +/* 64634 */ {(14<<2)|2,{88,56,0}}, +/* 64635 */ {(14<<2)|2,{88,56,0}}, +/* 64636 */ {(14<<2)|2,{88,57,0}}, +/* 64637 */ {(14<<2)|2,{88,57,0}}, +/* 64638 */ {(14<<2)|2,{88,57,0}}, +/* 64639 */ {(14<<2)|2,{88,57,0}}, +/* 64640 */ {(14<<2)|2,{88,61,0}}, +/* 64641 */ {(14<<2)|2,{88,61,0}}, +/* 64642 */ {(14<<2)|2,{88,61,0}}, +/* 64643 */ {(14<<2)|2,{88,61,0}}, +/* 64644 */ {(14<<2)|2,{88,65,0}}, +/* 64645 */ {(14<<2)|2,{88,65,0}}, +/* 64646 */ {(14<<2)|2,{88,65,0}}, +/* 64647 */ {(14<<2)|2,{88,65,0}}, +/* 64648 */ {(14<<2)|2,{88,95,0}}, +/* 64649 */ {(14<<2)|2,{88,95,0}}, +/* 64650 */ {(14<<2)|2,{88,95,0}}, +/* 64651 */ {(14<<2)|2,{88,95,0}}, +/* 64652 */ {(14<<2)|2,{88,98,0}}, +/* 64653 */ {(14<<2)|2,{88,98,0}}, +/* 64654 */ {(14<<2)|2,{88,98,0}}, +/* 64655 */ {(14<<2)|2,{88,98,0}}, +/* 64656 */ {(14<<2)|2,{88,100,0}}, +/* 64657 */ {(14<<2)|2,{88,100,0}}, +/* 64658 */ {(14<<2)|2,{88,100,0}}, +/* 64659 */ {(14<<2)|2,{88,100,0}}, +/* 64660 */ {(14<<2)|2,{88,102,0}}, +/* 64661 */ {(14<<2)|2,{88,102,0}}, +/* 64662 */ {(14<<2)|2,{88,102,0}}, +/* 64663 */ {(14<<2)|2,{88,102,0}}, +/* 64664 */ {(14<<2)|2,{88,103,0}}, +/* 64665 */ {(14<<2)|2,{88,103,0}}, +/* 64666 */ {(14<<2)|2,{88,103,0}}, +/* 64667 */ {(14<<2)|2,{88,103,0}}, +/* 64668 */ {(14<<2)|2,{88,104,0}}, +/* 64669 */ {(14<<2)|2,{88,104,0}}, +/* 64670 */ {(14<<2)|2,{88,104,0}}, +/* 64671 */ {(14<<2)|2,{88,104,0}}, +/* 64672 */ {(14<<2)|2,{88,108,0}}, +/* 64673 */ {(14<<2)|2,{88,108,0}}, +/* 64674 */ {(14<<2)|2,{88,108,0}}, +/* 64675 */ {(14<<2)|2,{88,108,0}}, +/* 64676 */ {(14<<2)|2,{88,109,0}}, +/* 64677 */ {(14<<2)|2,{88,109,0}}, +/* 64678 */ {(14<<2)|2,{88,109,0}}, +/* 64679 */ {(14<<2)|2,{88,109,0}}, +/* 64680 */ {(14<<2)|2,{88,110,0}}, +/* 64681 */ {(14<<2)|2,{88,110,0}}, +/* 64682 */ {(14<<2)|2,{88,110,0}}, +/* 64683 */ {(14<<2)|2,{88,110,0}}, +/* 64684 */ {(14<<2)|2,{88,112,0}}, +/* 64685 */ {(14<<2)|2,{88,112,0}}, +/* 64686 */ {(14<<2)|2,{88,112,0}}, +/* 64687 */ {(14<<2)|2,{88,112,0}}, +/* 64688 */ {(14<<2)|2,{88,114,0}}, +/* 64689 */ {(14<<2)|2,{88,114,0}}, +/* 64690 */ {(14<<2)|2,{88,114,0}}, +/* 64691 */ {(14<<2)|2,{88,114,0}}, +/* 64692 */ {(14<<2)|2,{88,117,0}}, +/* 64693 */ {(14<<2)|2,{88,117,0}}, +/* 64694 */ {(14<<2)|2,{88,117,0}}, +/* 64695 */ {(14<<2)|2,{88,117,0}}, +/* 64696 */ {(15<<2)|2,{88,58,0}}, +/* 64697 */ {(15<<2)|2,{88,58,0}}, +/* 64698 */ {(15<<2)|2,{88,66,0}}, +/* 64699 */ {(15<<2)|2,{88,66,0}}, +/* 64700 */ {(15<<2)|2,{88,67,0}}, +/* 64701 */ {(15<<2)|2,{88,67,0}}, +/* 64702 */ {(15<<2)|2,{88,68,0}}, +/* 64703 */ {(15<<2)|2,{88,68,0}}, +/* 64704 */ {(15<<2)|2,{88,69,0}}, +/* 64705 */ {(15<<2)|2,{88,69,0}}, +/* 64706 */ {(15<<2)|2,{88,70,0}}, +/* 64707 */ {(15<<2)|2,{88,70,0}}, +/* 64708 */ {(15<<2)|2,{88,71,0}}, +/* 64709 */ {(15<<2)|2,{88,71,0}}, +/* 64710 */ {(15<<2)|2,{88,72,0}}, +/* 64711 */ {(15<<2)|2,{88,72,0}}, +/* 64712 */ {(15<<2)|2,{88,73,0}}, +/* 64713 */ {(15<<2)|2,{88,73,0}}, +/* 64714 */ {(15<<2)|2,{88,74,0}}, +/* 64715 */ {(15<<2)|2,{88,74,0}}, +/* 64716 */ {(15<<2)|2,{88,75,0}}, +/* 64717 */ {(15<<2)|2,{88,75,0}}, +/* 64718 */ {(15<<2)|2,{88,76,0}}, +/* 64719 */ {(15<<2)|2,{88,76,0}}, +/* 64720 */ {(15<<2)|2,{88,77,0}}, +/* 64721 */ {(15<<2)|2,{88,77,0}}, +/* 64722 */ {(15<<2)|2,{88,78,0}}, +/* 64723 */ {(15<<2)|2,{88,78,0}}, +/* 64724 */ {(15<<2)|2,{88,79,0}}, +/* 64725 */ {(15<<2)|2,{88,79,0}}, +/* 64726 */ {(15<<2)|2,{88,80,0}}, +/* 64727 */ {(15<<2)|2,{88,80,0}}, +/* 64728 */ {(15<<2)|2,{88,81,0}}, +/* 64729 */ {(15<<2)|2,{88,81,0}}, +/* 64730 */ {(15<<2)|2,{88,82,0}}, +/* 64731 */ {(15<<2)|2,{88,82,0}}, +/* 64732 */ {(15<<2)|2,{88,83,0}}, +/* 64733 */ {(15<<2)|2,{88,83,0}}, +/* 64734 */ {(15<<2)|2,{88,84,0}}, +/* 64735 */ {(15<<2)|2,{88,84,0}}, +/* 64736 */ {(15<<2)|2,{88,85,0}}, +/* 64737 */ {(15<<2)|2,{88,85,0}}, +/* 64738 */ {(15<<2)|2,{88,86,0}}, +/* 64739 */ {(15<<2)|2,{88,86,0}}, +/* 64740 */ {(15<<2)|2,{88,87,0}}, +/* 64741 */ {(15<<2)|2,{88,87,0}}, +/* 64742 */ {(15<<2)|2,{88,89,0}}, +/* 64743 */ {(15<<2)|2,{88,89,0}}, +/* 64744 */ {(15<<2)|2,{88,106,0}}, +/* 64745 */ {(15<<2)|2,{88,106,0}}, +/* 64746 */ {(15<<2)|2,{88,107,0}}, +/* 64747 */ {(15<<2)|2,{88,107,0}}, +/* 64748 */ {(15<<2)|2,{88,113,0}}, +/* 64749 */ {(15<<2)|2,{88,113,0}}, +/* 64750 */ {(15<<2)|2,{88,118,0}}, +/* 64751 */ {(15<<2)|2,{88,118,0}}, +/* 64752 */ {(15<<2)|2,{88,119,0}}, +/* 64753 */ {(15<<2)|2,{88,119,0}}, +/* 64754 */ {(15<<2)|2,{88,120,0}}, +/* 64755 */ {(15<<2)|2,{88,120,0}}, +/* 64756 */ {(15<<2)|2,{88,121,0}}, +/* 64757 */ {(15<<2)|2,{88,121,0}}, +/* 64758 */ {(15<<2)|2,{88,122,0}}, +/* 64759 */ {(15<<2)|2,{88,122,0}}, +/* 64760 */ {(16<<2)|2,{88,38,0}}, +/* 64761 */ {(16<<2)|2,{88,42,0}}, +/* 64762 */ {(16<<2)|2,{88,44,0}}, +/* 64763 */ {(16<<2)|2,{88,59,0}}, +/* 64764 */ {(16<<2)|2,{88,88,0}}, +/* 64765 */ {(16<<2)|2,{88,90,0}}, +/* 64766 */ {(8<<2)|1,{88,0,0}}, +/* 64767 */ {(8<<2)|1,{88,0,0}}, +/* 64768 */ {(13<<2)|2,{90,48,0}}, +/* 64769 */ {(13<<2)|2,{90,48,0}}, +/* 64770 */ {(13<<2)|2,{90,48,0}}, +/* 64771 */ {(13<<2)|2,{90,48,0}}, +/* 64772 */ {(13<<2)|2,{90,48,0}}, +/* 64773 */ {(13<<2)|2,{90,48,0}}, +/* 64774 */ {(13<<2)|2,{90,48,0}}, +/* 64775 */ {(13<<2)|2,{90,48,0}}, +/* 64776 */ {(13<<2)|2,{90,49,0}}, +/* 64777 */ {(13<<2)|2,{90,49,0}}, +/* 64778 */ {(13<<2)|2,{90,49,0}}, +/* 64779 */ {(13<<2)|2,{90,49,0}}, +/* 64780 */ {(13<<2)|2,{90,49,0}}, +/* 64781 */ {(13<<2)|2,{90,49,0}}, +/* 64782 */ {(13<<2)|2,{90,49,0}}, +/* 64783 */ {(13<<2)|2,{90,49,0}}, +/* 64784 */ {(13<<2)|2,{90,50,0}}, +/* 64785 */ {(13<<2)|2,{90,50,0}}, +/* 64786 */ {(13<<2)|2,{90,50,0}}, +/* 64787 */ {(13<<2)|2,{90,50,0}}, +/* 64788 */ {(13<<2)|2,{90,50,0}}, +/* 64789 */ {(13<<2)|2,{90,50,0}}, +/* 64790 */ {(13<<2)|2,{90,50,0}}, +/* 64791 */ {(13<<2)|2,{90,50,0}}, +/* 64792 */ {(13<<2)|2,{90,97,0}}, +/* 64793 */ {(13<<2)|2,{90,97,0}}, +/* 64794 */ {(13<<2)|2,{90,97,0}}, +/* 64795 */ {(13<<2)|2,{90,97,0}}, +/* 64796 */ {(13<<2)|2,{90,97,0}}, +/* 64797 */ {(13<<2)|2,{90,97,0}}, +/* 64798 */ {(13<<2)|2,{90,97,0}}, +/* 64799 */ {(13<<2)|2,{90,97,0}}, +/* 64800 */ {(13<<2)|2,{90,99,0}}, +/* 64801 */ {(13<<2)|2,{90,99,0}}, +/* 64802 */ {(13<<2)|2,{90,99,0}}, +/* 64803 */ {(13<<2)|2,{90,99,0}}, +/* 64804 */ {(13<<2)|2,{90,99,0}}, +/* 64805 */ {(13<<2)|2,{90,99,0}}, +/* 64806 */ {(13<<2)|2,{90,99,0}}, +/* 64807 */ {(13<<2)|2,{90,99,0}}, +/* 64808 */ {(13<<2)|2,{90,101,0}}, +/* 64809 */ {(13<<2)|2,{90,101,0}}, +/* 64810 */ {(13<<2)|2,{90,101,0}}, +/* 64811 */ {(13<<2)|2,{90,101,0}}, +/* 64812 */ {(13<<2)|2,{90,101,0}}, +/* 64813 */ {(13<<2)|2,{90,101,0}}, +/* 64814 */ {(13<<2)|2,{90,101,0}}, +/* 64815 */ {(13<<2)|2,{90,101,0}}, +/* 64816 */ {(13<<2)|2,{90,105,0}}, +/* 64817 */ {(13<<2)|2,{90,105,0}}, +/* 64818 */ {(13<<2)|2,{90,105,0}}, +/* 64819 */ {(13<<2)|2,{90,105,0}}, +/* 64820 */ {(13<<2)|2,{90,105,0}}, +/* 64821 */ {(13<<2)|2,{90,105,0}}, +/* 64822 */ {(13<<2)|2,{90,105,0}}, +/* 64823 */ {(13<<2)|2,{90,105,0}}, +/* 64824 */ {(13<<2)|2,{90,111,0}}, +/* 64825 */ {(13<<2)|2,{90,111,0}}, +/* 64826 */ {(13<<2)|2,{90,111,0}}, +/* 64827 */ {(13<<2)|2,{90,111,0}}, +/* 64828 */ {(13<<2)|2,{90,111,0}}, +/* 64829 */ {(13<<2)|2,{90,111,0}}, +/* 64830 */ {(13<<2)|2,{90,111,0}}, +/* 64831 */ {(13<<2)|2,{90,111,0}}, +/* 64832 */ {(13<<2)|2,{90,115,0}}, +/* 64833 */ {(13<<2)|2,{90,115,0}}, +/* 64834 */ {(13<<2)|2,{90,115,0}}, +/* 64835 */ {(13<<2)|2,{90,115,0}}, +/* 64836 */ {(13<<2)|2,{90,115,0}}, +/* 64837 */ {(13<<2)|2,{90,115,0}}, +/* 64838 */ {(13<<2)|2,{90,115,0}}, +/* 64839 */ {(13<<2)|2,{90,115,0}}, +/* 64840 */ {(13<<2)|2,{90,116,0}}, +/* 64841 */ {(13<<2)|2,{90,116,0}}, +/* 64842 */ {(13<<2)|2,{90,116,0}}, +/* 64843 */ {(13<<2)|2,{90,116,0}}, +/* 64844 */ {(13<<2)|2,{90,116,0}}, +/* 64845 */ {(13<<2)|2,{90,116,0}}, +/* 64846 */ {(13<<2)|2,{90,116,0}}, +/* 64847 */ {(13<<2)|2,{90,116,0}}, +/* 64848 */ {(14<<2)|2,{90,32,0}}, +/* 64849 */ {(14<<2)|2,{90,32,0}}, +/* 64850 */ {(14<<2)|2,{90,32,0}}, +/* 64851 */ {(14<<2)|2,{90,32,0}}, +/* 64852 */ {(14<<2)|2,{90,37,0}}, +/* 64853 */ {(14<<2)|2,{90,37,0}}, +/* 64854 */ {(14<<2)|2,{90,37,0}}, +/* 64855 */ {(14<<2)|2,{90,37,0}}, +/* 64856 */ {(14<<2)|2,{90,45,0}}, +/* 64857 */ {(14<<2)|2,{90,45,0}}, +/* 64858 */ {(14<<2)|2,{90,45,0}}, +/* 64859 */ {(14<<2)|2,{90,45,0}}, +/* 64860 */ {(14<<2)|2,{90,46,0}}, +/* 64861 */ {(14<<2)|2,{90,46,0}}, +/* 64862 */ {(14<<2)|2,{90,46,0}}, +/* 64863 */ {(14<<2)|2,{90,46,0}}, +/* 64864 */ {(14<<2)|2,{90,47,0}}, +/* 64865 */ {(14<<2)|2,{90,47,0}}, +/* 64866 */ {(14<<2)|2,{90,47,0}}, +/* 64867 */ {(14<<2)|2,{90,47,0}}, +/* 64868 */ {(14<<2)|2,{90,51,0}}, +/* 64869 */ {(14<<2)|2,{90,51,0}}, +/* 64870 */ {(14<<2)|2,{90,51,0}}, +/* 64871 */ {(14<<2)|2,{90,51,0}}, +/* 64872 */ {(14<<2)|2,{90,52,0}}, +/* 64873 */ {(14<<2)|2,{90,52,0}}, +/* 64874 */ {(14<<2)|2,{90,52,0}}, +/* 64875 */ {(14<<2)|2,{90,52,0}}, +/* 64876 */ {(14<<2)|2,{90,53,0}}, +/* 64877 */ {(14<<2)|2,{90,53,0}}, +/* 64878 */ {(14<<2)|2,{90,53,0}}, +/* 64879 */ {(14<<2)|2,{90,53,0}}, +/* 64880 */ {(14<<2)|2,{90,54,0}}, +/* 64881 */ {(14<<2)|2,{90,54,0}}, +/* 64882 */ {(14<<2)|2,{90,54,0}}, +/* 64883 */ {(14<<2)|2,{90,54,0}}, +/* 64884 */ {(14<<2)|2,{90,55,0}}, +/* 64885 */ {(14<<2)|2,{90,55,0}}, +/* 64886 */ {(14<<2)|2,{90,55,0}}, +/* 64887 */ {(14<<2)|2,{90,55,0}}, +/* 64888 */ {(14<<2)|2,{90,56,0}}, +/* 64889 */ {(14<<2)|2,{90,56,0}}, +/* 64890 */ {(14<<2)|2,{90,56,0}}, +/* 64891 */ {(14<<2)|2,{90,56,0}}, +/* 64892 */ {(14<<2)|2,{90,57,0}}, +/* 64893 */ {(14<<2)|2,{90,57,0}}, +/* 64894 */ {(14<<2)|2,{90,57,0}}, +/* 64895 */ {(14<<2)|2,{90,57,0}}, +/* 64896 */ {(14<<2)|2,{90,61,0}}, +/* 64897 */ {(14<<2)|2,{90,61,0}}, +/* 64898 */ {(14<<2)|2,{90,61,0}}, +/* 64899 */ {(14<<2)|2,{90,61,0}}, +/* 64900 */ {(14<<2)|2,{90,65,0}}, +/* 64901 */ {(14<<2)|2,{90,65,0}}, +/* 64902 */ {(14<<2)|2,{90,65,0}}, +/* 64903 */ {(14<<2)|2,{90,65,0}}, +/* 64904 */ {(14<<2)|2,{90,95,0}}, +/* 64905 */ {(14<<2)|2,{90,95,0}}, +/* 64906 */ {(14<<2)|2,{90,95,0}}, +/* 64907 */ {(14<<2)|2,{90,95,0}}, +/* 64908 */ {(14<<2)|2,{90,98,0}}, +/* 64909 */ {(14<<2)|2,{90,98,0}}, +/* 64910 */ {(14<<2)|2,{90,98,0}}, +/* 64911 */ {(14<<2)|2,{90,98,0}}, +/* 64912 */ {(14<<2)|2,{90,100,0}}, +/* 64913 */ {(14<<2)|2,{90,100,0}}, +/* 64914 */ {(14<<2)|2,{90,100,0}}, +/* 64915 */ {(14<<2)|2,{90,100,0}}, +/* 64916 */ {(14<<2)|2,{90,102,0}}, +/* 64917 */ {(14<<2)|2,{90,102,0}}, +/* 64918 */ {(14<<2)|2,{90,102,0}}, +/* 64919 */ {(14<<2)|2,{90,102,0}}, +/* 64920 */ {(14<<2)|2,{90,103,0}}, +/* 64921 */ {(14<<2)|2,{90,103,0}}, +/* 64922 */ {(14<<2)|2,{90,103,0}}, +/* 64923 */ {(14<<2)|2,{90,103,0}}, +/* 64924 */ {(14<<2)|2,{90,104,0}}, +/* 64925 */ {(14<<2)|2,{90,104,0}}, +/* 64926 */ {(14<<2)|2,{90,104,0}}, +/* 64927 */ {(14<<2)|2,{90,104,0}}, +/* 64928 */ {(14<<2)|2,{90,108,0}}, +/* 64929 */ {(14<<2)|2,{90,108,0}}, +/* 64930 */ {(14<<2)|2,{90,108,0}}, +/* 64931 */ {(14<<2)|2,{90,108,0}}, +/* 64932 */ {(14<<2)|2,{90,109,0}}, +/* 64933 */ {(14<<2)|2,{90,109,0}}, +/* 64934 */ {(14<<2)|2,{90,109,0}}, +/* 64935 */ {(14<<2)|2,{90,109,0}}, +/* 64936 */ {(14<<2)|2,{90,110,0}}, +/* 64937 */ {(14<<2)|2,{90,110,0}}, +/* 64938 */ {(14<<2)|2,{90,110,0}}, +/* 64939 */ {(14<<2)|2,{90,110,0}}, +/* 64940 */ {(14<<2)|2,{90,112,0}}, +/* 64941 */ {(14<<2)|2,{90,112,0}}, +/* 64942 */ {(14<<2)|2,{90,112,0}}, +/* 64943 */ {(14<<2)|2,{90,112,0}}, +/* 64944 */ {(14<<2)|2,{90,114,0}}, +/* 64945 */ {(14<<2)|2,{90,114,0}}, +/* 64946 */ {(14<<2)|2,{90,114,0}}, +/* 64947 */ {(14<<2)|2,{90,114,0}}, +/* 64948 */ {(14<<2)|2,{90,117,0}}, +/* 64949 */ {(14<<2)|2,{90,117,0}}, +/* 64950 */ {(14<<2)|2,{90,117,0}}, +/* 64951 */ {(14<<2)|2,{90,117,0}}, +/* 64952 */ {(15<<2)|2,{90,58,0}}, +/* 64953 */ {(15<<2)|2,{90,58,0}}, +/* 64954 */ {(15<<2)|2,{90,66,0}}, +/* 64955 */ {(15<<2)|2,{90,66,0}}, +/* 64956 */ {(15<<2)|2,{90,67,0}}, +/* 64957 */ {(15<<2)|2,{90,67,0}}, +/* 64958 */ {(15<<2)|2,{90,68,0}}, +/* 64959 */ {(15<<2)|2,{90,68,0}}, +/* 64960 */ {(15<<2)|2,{90,69,0}}, +/* 64961 */ {(15<<2)|2,{90,69,0}}, +/* 64962 */ {(15<<2)|2,{90,70,0}}, +/* 64963 */ {(15<<2)|2,{90,70,0}}, +/* 64964 */ {(15<<2)|2,{90,71,0}}, +/* 64965 */ {(15<<2)|2,{90,71,0}}, +/* 64966 */ {(15<<2)|2,{90,72,0}}, +/* 64967 */ {(15<<2)|2,{90,72,0}}, +/* 64968 */ {(15<<2)|2,{90,73,0}}, +/* 64969 */ {(15<<2)|2,{90,73,0}}, +/* 64970 */ {(15<<2)|2,{90,74,0}}, +/* 64971 */ {(15<<2)|2,{90,74,0}}, +/* 64972 */ {(15<<2)|2,{90,75,0}}, +/* 64973 */ {(15<<2)|2,{90,75,0}}, +/* 64974 */ {(15<<2)|2,{90,76,0}}, +/* 64975 */ {(15<<2)|2,{90,76,0}}, +/* 64976 */ {(15<<2)|2,{90,77,0}}, +/* 64977 */ {(15<<2)|2,{90,77,0}}, +/* 64978 */ {(15<<2)|2,{90,78,0}}, +/* 64979 */ {(15<<2)|2,{90,78,0}}, +/* 64980 */ {(15<<2)|2,{90,79,0}}, +/* 64981 */ {(15<<2)|2,{90,79,0}}, +/* 64982 */ {(15<<2)|2,{90,80,0}}, +/* 64983 */ {(15<<2)|2,{90,80,0}}, +/* 64984 */ {(15<<2)|2,{90,81,0}}, +/* 64985 */ {(15<<2)|2,{90,81,0}}, +/* 64986 */ {(15<<2)|2,{90,82,0}}, +/* 64987 */ {(15<<2)|2,{90,82,0}}, +/* 64988 */ {(15<<2)|2,{90,83,0}}, +/* 64989 */ {(15<<2)|2,{90,83,0}}, +/* 64990 */ {(15<<2)|2,{90,84,0}}, +/* 64991 */ {(15<<2)|2,{90,84,0}}, +/* 64992 */ {(15<<2)|2,{90,85,0}}, +/* 64993 */ {(15<<2)|2,{90,85,0}}, +/* 64994 */ {(15<<2)|2,{90,86,0}}, +/* 64995 */ {(15<<2)|2,{90,86,0}}, +/* 64996 */ {(15<<2)|2,{90,87,0}}, +/* 64997 */ {(15<<2)|2,{90,87,0}}, +/* 64998 */ {(15<<2)|2,{90,89,0}}, +/* 64999 */ {(15<<2)|2,{90,89,0}}, +/* 65000 */ {(15<<2)|2,{90,106,0}}, +/* 65001 */ {(15<<2)|2,{90,106,0}}, +/* 65002 */ {(15<<2)|2,{90,107,0}}, +/* 65003 */ {(15<<2)|2,{90,107,0}}, +/* 65004 */ {(15<<2)|2,{90,113,0}}, +/* 65005 */ {(15<<2)|2,{90,113,0}}, +/* 65006 */ {(15<<2)|2,{90,118,0}}, +/* 65007 */ {(15<<2)|2,{90,118,0}}, +/* 65008 */ {(15<<2)|2,{90,119,0}}, +/* 65009 */ {(15<<2)|2,{90,119,0}}, +/* 65010 */ {(15<<2)|2,{90,120,0}}, +/* 65011 */ {(15<<2)|2,{90,120,0}}, +/* 65012 */ {(15<<2)|2,{90,121,0}}, +/* 65013 */ {(15<<2)|2,{90,121,0}}, +/* 65014 */ {(15<<2)|2,{90,122,0}}, +/* 65015 */ {(15<<2)|2,{90,122,0}}, +/* 65016 */ {(16<<2)|2,{90,38,0}}, +/* 65017 */ {(16<<2)|2,{90,42,0}}, +/* 65018 */ {(16<<2)|2,{90,44,0}}, +/* 65019 */ {(16<<2)|2,{90,59,0}}, +/* 65020 */ {(16<<2)|2,{90,88,0}}, +/* 65021 */ {(16<<2)|2,{90,90,0}}, +/* 65022 */ {(8<<2)|1,{90,0,0}}, +/* 65023 */ {(8<<2)|1,{90,0,0}}, +/* 65024 */ {(15<<2)|2,{33,48,0}}, +/* 65025 */ {(15<<2)|2,{33,48,0}}, +/* 65026 */ {(15<<2)|2,{33,49,0}}, +/* 65027 */ {(15<<2)|2,{33,49,0}}, +/* 65028 */ {(15<<2)|2,{33,50,0}}, +/* 65029 */ {(15<<2)|2,{33,50,0}}, +/* 65030 */ {(15<<2)|2,{33,97,0}}, +/* 65031 */ {(15<<2)|2,{33,97,0}}, +/* 65032 */ {(15<<2)|2,{33,99,0}}, +/* 65033 */ {(15<<2)|2,{33,99,0}}, +/* 65034 */ {(15<<2)|2,{33,101,0}}, +/* 65035 */ {(15<<2)|2,{33,101,0}}, +/* 65036 */ {(15<<2)|2,{33,105,0}}, +/* 65037 */ {(15<<2)|2,{33,105,0}}, +/* 65038 */ {(15<<2)|2,{33,111,0}}, +/* 65039 */ {(15<<2)|2,{33,111,0}}, +/* 65040 */ {(15<<2)|2,{33,115,0}}, +/* 65041 */ {(15<<2)|2,{33,115,0}}, +/* 65042 */ {(15<<2)|2,{33,116,0}}, +/* 65043 */ {(15<<2)|2,{33,116,0}}, +/* 65044 */ {(16<<2)|2,{33,32,0}}, +/* 65045 */ {(16<<2)|2,{33,37,0}}, +/* 65046 */ {(16<<2)|2,{33,45,0}}, +/* 65047 */ {(16<<2)|2,{33,46,0}}, +/* 65048 */ {(16<<2)|2,{33,47,0}}, +/* 65049 */ {(16<<2)|2,{33,51,0}}, +/* 65050 */ {(16<<2)|2,{33,52,0}}, +/* 65051 */ {(16<<2)|2,{33,53,0}}, +/* 65052 */ {(16<<2)|2,{33,54,0}}, +/* 65053 */ {(16<<2)|2,{33,55,0}}, +/* 65054 */ {(16<<2)|2,{33,56,0}}, +/* 65055 */ {(16<<2)|2,{33,57,0}}, +/* 65056 */ {(16<<2)|2,{33,61,0}}, +/* 65057 */ {(16<<2)|2,{33,65,0}}, +/* 65058 */ {(16<<2)|2,{33,95,0}}, +/* 65059 */ {(16<<2)|2,{33,98,0}}, +/* 65060 */ {(16<<2)|2,{33,100,0}}, +/* 65061 */ {(16<<2)|2,{33,102,0}}, +/* 65062 */ {(16<<2)|2,{33,103,0}}, +/* 65063 */ {(16<<2)|2,{33,104,0}}, +/* 65064 */ {(16<<2)|2,{33,108,0}}, +/* 65065 */ {(16<<2)|2,{33,109,0}}, +/* 65066 */ {(16<<2)|2,{33,110,0}}, +/* 65067 */ {(16<<2)|2,{33,112,0}}, +/* 65068 */ {(16<<2)|2,{33,114,0}}, +/* 65069 */ {(16<<2)|2,{33,117,0}}, +/* 65070 */ {(10<<2)|1,{33,0,0}}, +/* 65071 */ {(10<<2)|1,{33,0,0}}, +/* 65072 */ {(10<<2)|1,{33,0,0}}, +/* 65073 */ {(10<<2)|1,{33,0,0}}, +/* 65074 */ {(10<<2)|1,{33,0,0}}, +/* 65075 */ {(10<<2)|1,{33,0,0}}, +/* 65076 */ {(10<<2)|1,{33,0,0}}, +/* 65077 */ {(10<<2)|1,{33,0,0}}, +/* 65078 */ {(10<<2)|1,{33,0,0}}, +/* 65079 */ {(10<<2)|1,{33,0,0}}, +/* 65080 */ {(10<<2)|1,{33,0,0}}, +/* 65081 */ {(10<<2)|1,{33,0,0}}, +/* 65082 */ {(10<<2)|1,{33,0,0}}, +/* 65083 */ {(10<<2)|1,{33,0,0}}, +/* 65084 */ {(10<<2)|1,{33,0,0}}, +/* 65085 */ {(10<<2)|1,{33,0,0}}, +/* 65086 */ {(10<<2)|1,{33,0,0}}, +/* 65087 */ {(10<<2)|1,{33,0,0}}, +/* 65088 */ {(15<<2)|2,{34,48,0}}, +/* 65089 */ {(15<<2)|2,{34,48,0}}, +/* 65090 */ {(15<<2)|2,{34,49,0}}, +/* 65091 */ {(15<<2)|2,{34,49,0}}, +/* 65092 */ {(15<<2)|2,{34,50,0}}, +/* 65093 */ {(15<<2)|2,{34,50,0}}, +/* 65094 */ {(15<<2)|2,{34,97,0}}, +/* 65095 */ {(15<<2)|2,{34,97,0}}, +/* 65096 */ {(15<<2)|2,{34,99,0}}, +/* 65097 */ {(15<<2)|2,{34,99,0}}, +/* 65098 */ {(15<<2)|2,{34,101,0}}, +/* 65099 */ {(15<<2)|2,{34,101,0}}, +/* 65100 */ {(15<<2)|2,{34,105,0}}, +/* 65101 */ {(15<<2)|2,{34,105,0}}, +/* 65102 */ {(15<<2)|2,{34,111,0}}, +/* 65103 */ {(15<<2)|2,{34,111,0}}, +/* 65104 */ {(15<<2)|2,{34,115,0}}, +/* 65105 */ {(15<<2)|2,{34,115,0}}, +/* 65106 */ {(15<<2)|2,{34,116,0}}, +/* 65107 */ {(15<<2)|2,{34,116,0}}, +/* 65108 */ {(16<<2)|2,{34,32,0}}, +/* 65109 */ {(16<<2)|2,{34,37,0}}, +/* 65110 */ {(16<<2)|2,{34,45,0}}, +/* 65111 */ {(16<<2)|2,{34,46,0}}, +/* 65112 */ {(16<<2)|2,{34,47,0}}, +/* 65113 */ {(16<<2)|2,{34,51,0}}, +/* 65114 */ {(16<<2)|2,{34,52,0}}, +/* 65115 */ {(16<<2)|2,{34,53,0}}, +/* 65116 */ {(16<<2)|2,{34,54,0}}, +/* 65117 */ {(16<<2)|2,{34,55,0}}, +/* 65118 */ {(16<<2)|2,{34,56,0}}, +/* 65119 */ {(16<<2)|2,{34,57,0}}, +/* 65120 */ {(16<<2)|2,{34,61,0}}, +/* 65121 */ {(16<<2)|2,{34,65,0}}, +/* 65122 */ {(16<<2)|2,{34,95,0}}, +/* 65123 */ {(16<<2)|2,{34,98,0}}, +/* 65124 */ {(16<<2)|2,{34,100,0}}, +/* 65125 */ {(16<<2)|2,{34,102,0}}, +/* 65126 */ {(16<<2)|2,{34,103,0}}, +/* 65127 */ {(16<<2)|2,{34,104,0}}, +/* 65128 */ {(16<<2)|2,{34,108,0}}, +/* 65129 */ {(16<<2)|2,{34,109,0}}, +/* 65130 */ {(16<<2)|2,{34,110,0}}, +/* 65131 */ {(16<<2)|2,{34,112,0}}, +/* 65132 */ {(16<<2)|2,{34,114,0}}, +/* 65133 */ {(16<<2)|2,{34,117,0}}, +/* 65134 */ {(10<<2)|1,{34,0,0}}, +/* 65135 */ {(10<<2)|1,{34,0,0}}, +/* 65136 */ {(10<<2)|1,{34,0,0}}, +/* 65137 */ {(10<<2)|1,{34,0,0}}, +/* 65138 */ {(10<<2)|1,{34,0,0}}, +/* 65139 */ {(10<<2)|1,{34,0,0}}, +/* 65140 */ {(10<<2)|1,{34,0,0}}, +/* 65141 */ {(10<<2)|1,{34,0,0}}, +/* 65142 */ {(10<<2)|1,{34,0,0}}, +/* 65143 */ {(10<<2)|1,{34,0,0}}, +/* 65144 */ {(10<<2)|1,{34,0,0}}, +/* 65145 */ {(10<<2)|1,{34,0,0}}, +/* 65146 */ {(10<<2)|1,{34,0,0}}, +/* 65147 */ {(10<<2)|1,{34,0,0}}, +/* 65148 */ {(10<<2)|1,{34,0,0}}, +/* 65149 */ {(10<<2)|1,{34,0,0}}, +/* 65150 */ {(10<<2)|1,{34,0,0}}, +/* 65151 */ {(10<<2)|1,{34,0,0}}, +/* 65152 */ {(15<<2)|2,{40,48,0}}, +/* 65153 */ {(15<<2)|2,{40,48,0}}, +/* 65154 */ {(15<<2)|2,{40,49,0}}, +/* 65155 */ {(15<<2)|2,{40,49,0}}, +/* 65156 */ {(15<<2)|2,{40,50,0}}, +/* 65157 */ {(15<<2)|2,{40,50,0}}, +/* 65158 */ {(15<<2)|2,{40,97,0}}, +/* 65159 */ {(15<<2)|2,{40,97,0}}, +/* 65160 */ {(15<<2)|2,{40,99,0}}, +/* 65161 */ {(15<<2)|2,{40,99,0}}, +/* 65162 */ {(15<<2)|2,{40,101,0}}, +/* 65163 */ {(15<<2)|2,{40,101,0}}, +/* 65164 */ {(15<<2)|2,{40,105,0}}, +/* 65165 */ {(15<<2)|2,{40,105,0}}, +/* 65166 */ {(15<<2)|2,{40,111,0}}, +/* 65167 */ {(15<<2)|2,{40,111,0}}, +/* 65168 */ {(15<<2)|2,{40,115,0}}, +/* 65169 */ {(15<<2)|2,{40,115,0}}, +/* 65170 */ {(15<<2)|2,{40,116,0}}, +/* 65171 */ {(15<<2)|2,{40,116,0}}, +/* 65172 */ {(16<<2)|2,{40,32,0}}, +/* 65173 */ {(16<<2)|2,{40,37,0}}, +/* 65174 */ {(16<<2)|2,{40,45,0}}, +/* 65175 */ {(16<<2)|2,{40,46,0}}, +/* 65176 */ {(16<<2)|2,{40,47,0}}, +/* 65177 */ {(16<<2)|2,{40,51,0}}, +/* 65178 */ {(16<<2)|2,{40,52,0}}, +/* 65179 */ {(16<<2)|2,{40,53,0}}, +/* 65180 */ {(16<<2)|2,{40,54,0}}, +/* 65181 */ {(16<<2)|2,{40,55,0}}, +/* 65182 */ {(16<<2)|2,{40,56,0}}, +/* 65183 */ {(16<<2)|2,{40,57,0}}, +/* 65184 */ {(16<<2)|2,{40,61,0}}, +/* 65185 */ {(16<<2)|2,{40,65,0}}, +/* 65186 */ {(16<<2)|2,{40,95,0}}, +/* 65187 */ {(16<<2)|2,{40,98,0}}, +/* 65188 */ {(16<<2)|2,{40,100,0}}, +/* 65189 */ {(16<<2)|2,{40,102,0}}, +/* 65190 */ {(16<<2)|2,{40,103,0}}, +/* 65191 */ {(16<<2)|2,{40,104,0}}, +/* 65192 */ {(16<<2)|2,{40,108,0}}, +/* 65193 */ {(16<<2)|2,{40,109,0}}, +/* 65194 */ {(16<<2)|2,{40,110,0}}, +/* 65195 */ {(16<<2)|2,{40,112,0}}, +/* 65196 */ {(16<<2)|2,{40,114,0}}, +/* 65197 */ {(16<<2)|2,{40,117,0}}, +/* 65198 */ {(10<<2)|1,{40,0,0}}, +/* 65199 */ {(10<<2)|1,{40,0,0}}, +/* 65200 */ {(10<<2)|1,{40,0,0}}, +/* 65201 */ {(10<<2)|1,{40,0,0}}, +/* 65202 */ {(10<<2)|1,{40,0,0}}, +/* 65203 */ {(10<<2)|1,{40,0,0}}, +/* 65204 */ {(10<<2)|1,{40,0,0}}, +/* 65205 */ {(10<<2)|1,{40,0,0}}, +/* 65206 */ {(10<<2)|1,{40,0,0}}, +/* 65207 */ {(10<<2)|1,{40,0,0}}, +/* 65208 */ {(10<<2)|1,{40,0,0}}, +/* 65209 */ {(10<<2)|1,{40,0,0}}, +/* 65210 */ {(10<<2)|1,{40,0,0}}, +/* 65211 */ {(10<<2)|1,{40,0,0}}, +/* 65212 */ {(10<<2)|1,{40,0,0}}, +/* 65213 */ {(10<<2)|1,{40,0,0}}, +/* 65214 */ {(10<<2)|1,{40,0,0}}, +/* 65215 */ {(10<<2)|1,{40,0,0}}, +/* 65216 */ {(15<<2)|2,{41,48,0}}, +/* 65217 */ {(15<<2)|2,{41,48,0}}, +/* 65218 */ {(15<<2)|2,{41,49,0}}, +/* 65219 */ {(15<<2)|2,{41,49,0}}, +/* 65220 */ {(15<<2)|2,{41,50,0}}, +/* 65221 */ {(15<<2)|2,{41,50,0}}, +/* 65222 */ {(15<<2)|2,{41,97,0}}, +/* 65223 */ {(15<<2)|2,{41,97,0}}, +/* 65224 */ {(15<<2)|2,{41,99,0}}, +/* 65225 */ {(15<<2)|2,{41,99,0}}, +/* 65226 */ {(15<<2)|2,{41,101,0}}, +/* 65227 */ {(15<<2)|2,{41,101,0}}, +/* 65228 */ {(15<<2)|2,{41,105,0}}, +/* 65229 */ {(15<<2)|2,{41,105,0}}, +/* 65230 */ {(15<<2)|2,{41,111,0}}, +/* 65231 */ {(15<<2)|2,{41,111,0}}, +/* 65232 */ {(15<<2)|2,{41,115,0}}, +/* 65233 */ {(15<<2)|2,{41,115,0}}, +/* 65234 */ {(15<<2)|2,{41,116,0}}, +/* 65235 */ {(15<<2)|2,{41,116,0}}, +/* 65236 */ {(16<<2)|2,{41,32,0}}, +/* 65237 */ {(16<<2)|2,{41,37,0}}, +/* 65238 */ {(16<<2)|2,{41,45,0}}, +/* 65239 */ {(16<<2)|2,{41,46,0}}, +/* 65240 */ {(16<<2)|2,{41,47,0}}, +/* 65241 */ {(16<<2)|2,{41,51,0}}, +/* 65242 */ {(16<<2)|2,{41,52,0}}, +/* 65243 */ {(16<<2)|2,{41,53,0}}, +/* 65244 */ {(16<<2)|2,{41,54,0}}, +/* 65245 */ {(16<<2)|2,{41,55,0}}, +/* 65246 */ {(16<<2)|2,{41,56,0}}, +/* 65247 */ {(16<<2)|2,{41,57,0}}, +/* 65248 */ {(16<<2)|2,{41,61,0}}, +/* 65249 */ {(16<<2)|2,{41,65,0}}, +/* 65250 */ {(16<<2)|2,{41,95,0}}, +/* 65251 */ {(16<<2)|2,{41,98,0}}, +/* 65252 */ {(16<<2)|2,{41,100,0}}, +/* 65253 */ {(16<<2)|2,{41,102,0}}, +/* 65254 */ {(16<<2)|2,{41,103,0}}, +/* 65255 */ {(16<<2)|2,{41,104,0}}, +/* 65256 */ {(16<<2)|2,{41,108,0}}, +/* 65257 */ {(16<<2)|2,{41,109,0}}, +/* 65258 */ {(16<<2)|2,{41,110,0}}, +/* 65259 */ {(16<<2)|2,{41,112,0}}, +/* 65260 */ {(16<<2)|2,{41,114,0}}, +/* 65261 */ {(16<<2)|2,{41,117,0}}, +/* 65262 */ {(10<<2)|1,{41,0,0}}, +/* 65263 */ {(10<<2)|1,{41,0,0}}, +/* 65264 */ {(10<<2)|1,{41,0,0}}, +/* 65265 */ {(10<<2)|1,{41,0,0}}, +/* 65266 */ {(10<<2)|1,{41,0,0}}, +/* 65267 */ {(10<<2)|1,{41,0,0}}, +/* 65268 */ {(10<<2)|1,{41,0,0}}, +/* 65269 */ {(10<<2)|1,{41,0,0}}, +/* 65270 */ {(10<<2)|1,{41,0,0}}, +/* 65271 */ {(10<<2)|1,{41,0,0}}, +/* 65272 */ {(10<<2)|1,{41,0,0}}, +/* 65273 */ {(10<<2)|1,{41,0,0}}, +/* 65274 */ {(10<<2)|1,{41,0,0}}, +/* 65275 */ {(10<<2)|1,{41,0,0}}, +/* 65276 */ {(10<<2)|1,{41,0,0}}, +/* 65277 */ {(10<<2)|1,{41,0,0}}, +/* 65278 */ {(10<<2)|1,{41,0,0}}, +/* 65279 */ {(10<<2)|1,{41,0,0}}, +/* 65280 */ {(15<<2)|2,{63,48,0}}, +/* 65281 */ {(15<<2)|2,{63,48,0}}, +/* 65282 */ {(15<<2)|2,{63,49,0}}, +/* 65283 */ {(15<<2)|2,{63,49,0}}, +/* 65284 */ {(15<<2)|2,{63,50,0}}, +/* 65285 */ {(15<<2)|2,{63,50,0}}, +/* 65286 */ {(15<<2)|2,{63,97,0}}, +/* 65287 */ {(15<<2)|2,{63,97,0}}, +/* 65288 */ {(15<<2)|2,{63,99,0}}, +/* 65289 */ {(15<<2)|2,{63,99,0}}, +/* 65290 */ {(15<<2)|2,{63,101,0}}, +/* 65291 */ {(15<<2)|2,{63,101,0}}, +/* 65292 */ {(15<<2)|2,{63,105,0}}, +/* 65293 */ {(15<<2)|2,{63,105,0}}, +/* 65294 */ {(15<<2)|2,{63,111,0}}, +/* 65295 */ {(15<<2)|2,{63,111,0}}, +/* 65296 */ {(15<<2)|2,{63,115,0}}, +/* 65297 */ {(15<<2)|2,{63,115,0}}, +/* 65298 */ {(15<<2)|2,{63,116,0}}, +/* 65299 */ {(15<<2)|2,{63,116,0}}, +/* 65300 */ {(16<<2)|2,{63,32,0}}, +/* 65301 */ {(16<<2)|2,{63,37,0}}, +/* 65302 */ {(16<<2)|2,{63,45,0}}, +/* 65303 */ {(16<<2)|2,{63,46,0}}, +/* 65304 */ {(16<<2)|2,{63,47,0}}, +/* 65305 */ {(16<<2)|2,{63,51,0}}, +/* 65306 */ {(16<<2)|2,{63,52,0}}, +/* 65307 */ {(16<<2)|2,{63,53,0}}, +/* 65308 */ {(16<<2)|2,{63,54,0}}, +/* 65309 */ {(16<<2)|2,{63,55,0}}, +/* 65310 */ {(16<<2)|2,{63,56,0}}, +/* 65311 */ {(16<<2)|2,{63,57,0}}, +/* 65312 */ {(16<<2)|2,{63,61,0}}, +/* 65313 */ {(16<<2)|2,{63,65,0}}, +/* 65314 */ {(16<<2)|2,{63,95,0}}, +/* 65315 */ {(16<<2)|2,{63,98,0}}, +/* 65316 */ {(16<<2)|2,{63,100,0}}, +/* 65317 */ {(16<<2)|2,{63,102,0}}, +/* 65318 */ {(16<<2)|2,{63,103,0}}, +/* 65319 */ {(16<<2)|2,{63,104,0}}, +/* 65320 */ {(16<<2)|2,{63,108,0}}, +/* 65321 */ {(16<<2)|2,{63,109,0}}, +/* 65322 */ {(16<<2)|2,{63,110,0}}, +/* 65323 */ {(16<<2)|2,{63,112,0}}, +/* 65324 */ {(16<<2)|2,{63,114,0}}, +/* 65325 */ {(16<<2)|2,{63,117,0}}, +/* 65326 */ {(10<<2)|1,{63,0,0}}, +/* 65327 */ {(10<<2)|1,{63,0,0}}, +/* 65328 */ {(10<<2)|1,{63,0,0}}, +/* 65329 */ {(10<<2)|1,{63,0,0}}, +/* 65330 */ {(10<<2)|1,{63,0,0}}, +/* 65331 */ {(10<<2)|1,{63,0,0}}, +/* 65332 */ {(10<<2)|1,{63,0,0}}, +/* 65333 */ {(10<<2)|1,{63,0,0}}, +/* 65334 */ {(10<<2)|1,{63,0,0}}, +/* 65335 */ {(10<<2)|1,{63,0,0}}, +/* 65336 */ {(10<<2)|1,{63,0,0}}, +/* 65337 */ {(10<<2)|1,{63,0,0}}, +/* 65338 */ {(10<<2)|1,{63,0,0}}, +/* 65339 */ {(10<<2)|1,{63,0,0}}, +/* 65340 */ {(10<<2)|1,{63,0,0}}, +/* 65341 */ {(10<<2)|1,{63,0,0}}, +/* 65342 */ {(10<<2)|1,{63,0,0}}, +/* 65343 */ {(10<<2)|1,{63,0,0}}, +/* 65344 */ {(16<<2)|2,{39,48,0}}, +/* 65345 */ {(16<<2)|2,{39,49,0}}, +/* 65346 */ {(16<<2)|2,{39,50,0}}, +/* 65347 */ {(16<<2)|2,{39,97,0}}, +/* 65348 */ {(16<<2)|2,{39,99,0}}, +/* 65349 */ {(16<<2)|2,{39,101,0}}, +/* 65350 */ {(16<<2)|2,{39,105,0}}, +/* 65351 */ {(16<<2)|2,{39,111,0}}, +/* 65352 */ {(16<<2)|2,{39,115,0}}, +/* 65353 */ {(16<<2)|2,{39,116,0}}, +/* 65354 */ {(11<<2)|1,{39,0,0}}, +/* 65355 */ {(11<<2)|1,{39,0,0}}, +/* 65356 */ {(11<<2)|1,{39,0,0}}, +/* 65357 */ {(11<<2)|1,{39,0,0}}, +/* 65358 */ {(11<<2)|1,{39,0,0}}, +/* 65359 */ {(11<<2)|1,{39,0,0}}, +/* 65360 */ {(11<<2)|1,{39,0,0}}, +/* 65361 */ {(11<<2)|1,{39,0,0}}, +/* 65362 */ {(11<<2)|1,{39,0,0}}, +/* 65363 */ {(11<<2)|1,{39,0,0}}, +/* 65364 */ {(11<<2)|1,{39,0,0}}, +/* 65365 */ {(11<<2)|1,{39,0,0}}, +/* 65366 */ {(11<<2)|1,{39,0,0}}, +/* 65367 */ {(11<<2)|1,{39,0,0}}, +/* 65368 */ {(11<<2)|1,{39,0,0}}, +/* 65369 */ {(11<<2)|1,{39,0,0}}, +/* 65370 */ {(11<<2)|1,{39,0,0}}, +/* 65371 */ {(11<<2)|1,{39,0,0}}, +/* 65372 */ {(11<<2)|1,{39,0,0}}, +/* 65373 */ {(11<<2)|1,{39,0,0}}, +/* 65374 */ {(11<<2)|1,{39,0,0}}, +/* 65375 */ {(11<<2)|1,{39,0,0}}, +/* 65376 */ {(16<<2)|2,{43,48,0}}, +/* 65377 */ {(16<<2)|2,{43,49,0}}, +/* 65378 */ {(16<<2)|2,{43,50,0}}, +/* 65379 */ {(16<<2)|2,{43,97,0}}, +/* 65380 */ {(16<<2)|2,{43,99,0}}, +/* 65381 */ {(16<<2)|2,{43,101,0}}, +/* 65382 */ {(16<<2)|2,{43,105,0}}, +/* 65383 */ {(16<<2)|2,{43,111,0}}, +/* 65384 */ {(16<<2)|2,{43,115,0}}, +/* 65385 */ {(16<<2)|2,{43,116,0}}, +/* 65386 */ {(11<<2)|1,{43,0,0}}, +/* 65387 */ {(11<<2)|1,{43,0,0}}, +/* 65388 */ {(11<<2)|1,{43,0,0}}, +/* 65389 */ {(11<<2)|1,{43,0,0}}, +/* 65390 */ {(11<<2)|1,{43,0,0}}, +/* 65391 */ {(11<<2)|1,{43,0,0}}, +/* 65392 */ {(11<<2)|1,{43,0,0}}, +/* 65393 */ {(11<<2)|1,{43,0,0}}, +/* 65394 */ {(11<<2)|1,{43,0,0}}, +/* 65395 */ {(11<<2)|1,{43,0,0}}, +/* 65396 */ {(11<<2)|1,{43,0,0}}, +/* 65397 */ {(11<<2)|1,{43,0,0}}, +/* 65398 */ {(11<<2)|1,{43,0,0}}, +/* 65399 */ {(11<<2)|1,{43,0,0}}, +/* 65400 */ {(11<<2)|1,{43,0,0}}, +/* 65401 */ {(11<<2)|1,{43,0,0}}, +/* 65402 */ {(11<<2)|1,{43,0,0}}, +/* 65403 */ {(11<<2)|1,{43,0,0}}, +/* 65404 */ {(11<<2)|1,{43,0,0}}, +/* 65405 */ {(11<<2)|1,{43,0,0}}, +/* 65406 */ {(11<<2)|1,{43,0,0}}, +/* 65407 */ {(11<<2)|1,{43,0,0}}, +/* 65408 */ {(16<<2)|2,{124,48,0}}, +/* 65409 */ {(16<<2)|2,{124,49,0}}, +/* 65410 */ {(16<<2)|2,{124,50,0}}, +/* 65411 */ {(16<<2)|2,{124,97,0}}, +/* 65412 */ {(16<<2)|2,{124,99,0}}, +/* 65413 */ {(16<<2)|2,{124,101,0}}, +/* 65414 */ {(16<<2)|2,{124,105,0}}, +/* 65415 */ {(16<<2)|2,{124,111,0}}, +/* 65416 */ {(16<<2)|2,{124,115,0}}, +/* 65417 */ {(16<<2)|2,{124,116,0}}, +/* 65418 */ {(11<<2)|1,{124,0,0}}, +/* 65419 */ {(11<<2)|1,{124,0,0}}, +/* 65420 */ {(11<<2)|1,{124,0,0}}, +/* 65421 */ {(11<<2)|1,{124,0,0}}, +/* 65422 */ {(11<<2)|1,{124,0,0}}, +/* 65423 */ {(11<<2)|1,{124,0,0}}, +/* 65424 */ {(11<<2)|1,{124,0,0}}, +/* 65425 */ {(11<<2)|1,{124,0,0}}, +/* 65426 */ {(11<<2)|1,{124,0,0}}, +/* 65427 */ {(11<<2)|1,{124,0,0}}, +/* 65428 */ {(11<<2)|1,{124,0,0}}, +/* 65429 */ {(11<<2)|1,{124,0,0}}, +/* 65430 */ {(11<<2)|1,{124,0,0}}, +/* 65431 */ {(11<<2)|1,{124,0,0}}, +/* 65432 */ {(11<<2)|1,{124,0,0}}, +/* 65433 */ {(11<<2)|1,{124,0,0}}, +/* 65434 */ {(11<<2)|1,{124,0,0}}, +/* 65435 */ {(11<<2)|1,{124,0,0}}, +/* 65436 */ {(11<<2)|1,{124,0,0}}, +/* 65437 */ {(11<<2)|1,{124,0,0}}, +/* 65438 */ {(11<<2)|1,{124,0,0}}, +/* 65439 */ {(11<<2)|1,{124,0,0}}, +/* 65440 */ {(12<<2)|1,{35,0,0}}, +/* 65441 */ {(12<<2)|1,{35,0,0}}, +/* 65442 */ {(12<<2)|1,{35,0,0}}, +/* 65443 */ {(12<<2)|1,{35,0,0}}, +/* 65444 */ {(12<<2)|1,{35,0,0}}, +/* 65445 */ {(12<<2)|1,{35,0,0}}, +/* 65446 */ {(12<<2)|1,{35,0,0}}, +/* 65447 */ {(12<<2)|1,{35,0,0}}, +/* 65448 */ {(12<<2)|1,{35,0,0}}, +/* 65449 */ {(12<<2)|1,{35,0,0}}, +/* 65450 */ {(12<<2)|1,{35,0,0}}, +/* 65451 */ {(12<<2)|1,{35,0,0}}, +/* 65452 */ {(12<<2)|1,{35,0,0}}, +/* 65453 */ {(12<<2)|1,{35,0,0}}, +/* 65454 */ {(12<<2)|1,{35,0,0}}, +/* 65455 */ {(12<<2)|1,{35,0,0}}, +/* 65456 */ {(12<<2)|1,{62,0,0}}, +/* 65457 */ {(12<<2)|1,{62,0,0}}, +/* 65458 */ {(12<<2)|1,{62,0,0}}, +/* 65459 */ {(12<<2)|1,{62,0,0}}, +/* 65460 */ {(12<<2)|1,{62,0,0}}, +/* 65461 */ {(12<<2)|1,{62,0,0}}, +/* 65462 */ {(12<<2)|1,{62,0,0}}, +/* 65463 */ {(12<<2)|1,{62,0,0}}, +/* 65464 */ {(12<<2)|1,{62,0,0}}, +/* 65465 */ {(12<<2)|1,{62,0,0}}, +/* 65466 */ {(12<<2)|1,{62,0,0}}, +/* 65467 */ {(12<<2)|1,{62,0,0}}, +/* 65468 */ {(12<<2)|1,{62,0,0}}, +/* 65469 */ {(12<<2)|1,{62,0,0}}, +/* 65470 */ {(12<<2)|1,{62,0,0}}, +/* 65471 */ {(12<<2)|1,{62,0,0}}, +/* 65472 */ {(13<<2)|1,{0,0,0}}, +/* 65473 */ {(13<<2)|1,{0,0,0}}, +/* 65474 */ {(13<<2)|1,{0,0,0}}, +/* 65475 */ {(13<<2)|1,{0,0,0}}, +/* 65476 */ {(13<<2)|1,{0,0,0}}, +/* 65477 */ {(13<<2)|1,{0,0,0}}, +/* 65478 */ {(13<<2)|1,{0,0,0}}, +/* 65479 */ {(13<<2)|1,{0,0,0}}, +/* 65480 */ {(13<<2)|1,{36,0,0}}, +/* 65481 */ {(13<<2)|1,{36,0,0}}, +/* 65482 */ {(13<<2)|1,{36,0,0}}, +/* 65483 */ {(13<<2)|1,{36,0,0}}, +/* 65484 */ {(13<<2)|1,{36,0,0}}, +/* 65485 */ {(13<<2)|1,{36,0,0}}, +/* 65486 */ {(13<<2)|1,{36,0,0}}, +/* 65487 */ {(13<<2)|1,{36,0,0}}, +/* 65488 */ {(13<<2)|1,{64,0,0}}, +/* 65489 */ {(13<<2)|1,{64,0,0}}, +/* 65490 */ {(13<<2)|1,{64,0,0}}, +/* 65491 */ {(13<<2)|1,{64,0,0}}, +/* 65492 */ {(13<<2)|1,{64,0,0}}, +/* 65493 */ {(13<<2)|1,{64,0,0}}, +/* 65494 */ {(13<<2)|1,{64,0,0}}, +/* 65495 */ {(13<<2)|1,{64,0,0}}, +/* 65496 */ {(13<<2)|1,{91,0,0}}, +/* 65497 */ {(13<<2)|1,{91,0,0}}, +/* 65498 */ {(13<<2)|1,{91,0,0}}, +/* 65499 */ {(13<<2)|1,{91,0,0}}, +/* 65500 */ {(13<<2)|1,{91,0,0}}, +/* 65501 */ {(13<<2)|1,{91,0,0}}, +/* 65502 */ {(13<<2)|1,{91,0,0}}, +/* 65503 */ {(13<<2)|1,{91,0,0}}, +/* 65504 */ {(13<<2)|1,{93,0,0}}, +/* 65505 */ {(13<<2)|1,{93,0,0}}, +/* 65506 */ {(13<<2)|1,{93,0,0}}, +/* 65507 */ {(13<<2)|1,{93,0,0}}, +/* 65508 */ {(13<<2)|1,{93,0,0}}, +/* 65509 */ {(13<<2)|1,{93,0,0}}, +/* 65510 */ {(13<<2)|1,{93,0,0}}, +/* 65511 */ {(13<<2)|1,{93,0,0}}, +/* 65512 */ {(13<<2)|1,{126,0,0}}, +/* 65513 */ {(13<<2)|1,{126,0,0}}, +/* 65514 */ {(13<<2)|1,{126,0,0}}, +/* 65515 */ {(13<<2)|1,{126,0,0}}, +/* 65516 */ {(13<<2)|1,{126,0,0}}, +/* 65517 */ {(13<<2)|1,{126,0,0}}, +/* 65518 */ {(13<<2)|1,{126,0,0}}, +/* 65519 */ {(13<<2)|1,{126,0,0}}, +/* 65520 */ {(14<<2)|1,{94,0,0}}, +/* 65521 */ {(14<<2)|1,{94,0,0}}, +/* 65522 */ {(14<<2)|1,{94,0,0}}, +/* 65523 */ {(14<<2)|1,{94,0,0}}, +/* 65524 */ {(14<<2)|1,{125,0,0}}, +/* 65525 */ {(14<<2)|1,{125,0,0}}, +/* 65526 */ {(14<<2)|1,{125,0,0}}, +/* 65527 */ {(14<<2)|1,{125,0,0}}, +/* 65528 */ {(15<<2)|1,{60,0,0}}, +/* 65529 */ {(15<<2)|1,{60,0,0}}, +/* 65530 */ {(15<<2)|1,{96,0,0}}, +/* 65531 */ {(15<<2)|1,{96,0,0}}, +/* 65532 */ {(15<<2)|1,{123,0,0}}, +/* 65533 */ {(15<<2)|1,{123,0,0}}, +/* 65534 */ {0,{0,0,0,}}, +/* 65535 */ {0,{0,0,0,}}, +}; +#endif diff --git a/external/lsquic/src/liblsquic/ls-qpack/ls-qpack-config.cmake.in b/external/lsquic/src/liblsquic/ls-qpack/ls-qpack-config.cmake.in new file mode 100644 index 0000000..8a2fd3e --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/ls-qpack-config.cmake.in @@ -0,0 +1,10 @@ +if(NOT "@BUILD_SHARED_LIBS@" AND NOT "@LSQPACK_XXH@") + include(CMakeFindDependencyMacro) + if("@xxHash_FOUND@") + find_dependency(xxHash CONFIG) + else() + find_dependency(PkgConfig) + pkg_check_modules(XXH REQUIRED IMPORTED_TARGET libxxhash) + endif() +endif() +include("${CMAKE_CURRENT_LIST_DIR}/ls-qpack-targets.cmake") diff --git a/external/lsquic/src/liblsquic/ls-qpack/lsqpack.c b/external/lsquic/src/liblsquic/ls-qpack/lsqpack.c new file mode 100644 index 0000000..799eca0 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/lsqpack.c @@ -0,0 +1,5429 @@ +/* + * lsqpack.c -- LiteSpeed QPACK Compression Library: encoder and decoder. + */ +/* +MIT License + +Copyright (c) 2018 - 2023 LiteSpeed Technologies Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#ifndef LS_QPACK_USE_LARGE_TABLES +#define LS_QPACK_USE_LARGE_TABLES 1 +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lsqpack.h" +#include "lsxpack_header.h" + +#ifdef XXH_HEADER_NAME +#include XXH_HEADER_NAME +#else +#include +#endif + +#include "huff-tables.h" + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define MAX(a, b) ((a) > (b) ? (a) : (b)) + +#ifdef _MSC_VER +# define FALL_THROUGH +#endif + +#ifndef FALL_THROUGH +# if defined __has_attribute && __has_attribute (fallthrough) +# define FALL_THROUGH __attribute__ ((fallthrough)) +# else +# define FALL_THROUGH +# endif +#endif + +static unsigned char * +qenc_huffman_enc (const unsigned char *, const unsigned char *const, unsigned char *); + +static unsigned +qenc_enc_str_size (const unsigned char *, unsigned); + +struct static_table_entry +{ + const char *name; + const char *val; + unsigned name_len; + unsigned val_len; +}; + +/* [draft-ietf-quic-qpack-03] Appendix A */ +static const struct static_table_entry static_table[] = +{ + {":authority", "", 10, 0,}, + {":path", "/", 5, 1,}, + {"age", "0", 3, 1,}, + {"content-disposition", "", 19, 0,}, + {"content-length", "0", 14, 1,}, + {"cookie", "", 6, 0,}, + {"date", "", 4, 0,}, + {"etag", "", 4, 0,}, + {"if-modified-since", "", 17, 0,}, + {"if-none-match", "", 13, 0,}, + {"last-modified", "", 13, 0,}, + {"link", "", 4, 0,}, + {"location", "", 8, 0,}, + {"referer", "", 7, 0,}, + {"set-cookie", "", 10, 0,}, + {":method", "CONNECT", 7, 7,}, + {":method", "DELETE", 7, 6,}, + {":method", "GET", 7, 3,}, + {":method", "HEAD", 7, 4,}, + {":method", "OPTIONS", 7, 7,}, + {":method", "POST", 7, 4,}, + {":method", "PUT", 7, 3,}, + {":scheme", "http", 7, 4,}, + {":scheme", "https", 7, 5,}, + {":status", "103", 7, 3,}, + {":status", "200", 7, 3,}, + {":status", "304", 7, 3,}, + {":status", "404", 7, 3,}, + {":status", "503", 7, 3,}, + {"accept", "*/*", 6, 3,}, + {"accept", "application/dns-message", 6, 23,}, + {"accept-encoding", "gzip, deflate, br", 15, 17,}, + {"accept-ranges", "bytes", 13, 5,}, + {"access-control-allow-headers", "cache-control", 28, 13,}, + {"access-control-allow-headers", "content-type", 28, 12,}, + {"access-control-allow-origin", "*", 27, 1,}, + {"cache-control", "max-age=0", 13, 9,}, + {"cache-control", "max-age=2592000", 13, 15,}, + {"cache-control", "max-age=604800", 13, 14,}, + {"cache-control", "no-cache", 13, 8,}, + {"cache-control", "no-store", 13, 8,}, + {"cache-control", "public, max-age=31536000", 13, 24,}, + {"content-encoding", "br", 16, 2,}, + {"content-encoding", "gzip", 16, 4,}, + {"content-type", "application/dns-message", 12, 23,}, + {"content-type", "application/javascript", 12, 22,}, + {"content-type", "application/json", 12, 16,}, + {"content-type", "application/x-www-form-urlencoded", 12, 33,}, + {"content-type", "image/gif", 12, 9,}, + {"content-type", "image/jpeg", 12, 10,}, + {"content-type", "image/png", 12, 9,}, + {"content-type", "text/css", 12, 8,}, + {"content-type", "text/html; charset=utf-8", 12, 24,}, + {"content-type", "text/plain", 12, 10,}, + {"content-type", "text/plain;charset=utf-8", 12, 24,}, + {"range", "bytes=0-", 5, 8,}, + {"strict-transport-security", "max-age=31536000", 25, 16,}, + {"strict-transport-security", "max-age=31536000; includesubdomains", + 25, 35,}, + {"strict-transport-security", + "max-age=31536000; includesubdomains; preload", 25, 44,}, + {"vary", "accept-encoding", 4, 15,}, + {"vary", "origin", 4, 6,}, + {"x-content-type-options", "nosniff", 22, 7,}, + {"x-xss-protection", "1; mode=block", 16, 13,}, + {":status", "100", 7, 3,}, + {":status", "204", 7, 3,}, + {":status", "206", 7, 3,}, + {":status", "302", 7, 3,}, + {":status", "400", 7, 3,}, + {":status", "403", 7, 3,}, + {":status", "421", 7, 3,}, + {":status", "425", 7, 3,}, + {":status", "500", 7, 3,}, + {"accept-language", "", 15, 0,}, + {"access-control-allow-credentials", "FALSE", 32, 5,}, + {"access-control-allow-credentials", "TRUE", 32, 4,}, + {"access-control-allow-headers", "*", 28, 1,}, + {"access-control-allow-methods", "get", 28, 3,}, + {"access-control-allow-methods", "get, post, options", 28, 18,}, + {"access-control-allow-methods", "options", 28, 7,}, + {"access-control-expose-headers", "content-length", 29, 14,}, + {"access-control-request-headers", "content-type", 30, 12,}, + {"access-control-request-method", "get", 29, 3,}, + {"access-control-request-method", "post", 29, 4,}, + {"alt-svc", "clear", 7, 5,}, + {"authorization", "", 13, 0,}, + {"content-security-policy", + "script-src 'none'; object-src 'none'; base-uri 'none'", 23, 53,}, + {"early-data", "1", 10, 1,}, + {"expect-ct", "", 9, 0,}, + {"forwarded", "", 9, 0,}, + {"if-range", "", 8, 0,}, + {"origin", "", 6, 0,}, + {"purpose", "prefetch", 7, 8,}, + {"server", "", 6, 0,}, + {"timing-allow-origin", "*", 19, 1,}, + {"upgrade-insecure-requests", "1", 25, 1,}, + {"user-agent", "", 10, 0,}, + {"x-forwarded-for", "", 15, 0,}, + {"x-frame-options", "deny", 15, 4,}, + {"x-frame-options", "sameorigin", 15, 10,}, +}; + +#define QPACK_STATIC_TABLE_SIZE (sizeof(static_table) / sizeof(static_table[0])) + +/* RFC 7541, Section 4.1: + * + * " The size of the dynamic table is the sum of the size of its entries. + * " + * " The size of an entry is the sum of its name's length in octets (as + * " defined in Section 5.2), its value's length in octets, and 32. + */ +#define DYNAMIC_ENTRY_OVERHEAD 32u + +/* Initial guess at number of header fields per list: */ +#define GUESS_N_HEADER_FIELDS 12 + +#define MAX_QUIC_STREAM_ID ((1ull << 62) - 1) + +#ifdef LSQPACK_ENC_LOGGER_HEADER +#include LSQPACK_ENC_LOGGER_HEADER +#else +#define E_LOG(prefix, ...) do { \ + if (enc->qpe_logger_ctx) { \ + fprintf(enc->qpe_logger_ctx, prefix); \ + fprintf(enc->qpe_logger_ctx, __VA_ARGS__); \ + fprintf(enc->qpe_logger_ctx, "\n"); \ + } \ +} while (0) +#define E_DEBUG(...) E_LOG("qenc: debug: ", __VA_ARGS__) +#define E_INFO(...) E_LOG("qenc: info: ", __VA_ARGS__) +#define E_WARN(...) E_LOG("qenc: warn: ", __VA_ARGS__) +#define E_ERROR(...) E_LOG("qenc: error: ", __VA_ARGS__) +#endif + +/* Entries in the encoder's dynamic table are hashed 1) by name and 2) by + * name and value. Instead of having two arrays of buckets, the encoder + * keeps just one, but each bucket has two heads. + */ +struct lsqpack_double_enc_head +{ + struct lsqpack_enc_head by_name; + struct lsqpack_enc_head by_nameval; +}; + +struct lsqpack_enc_table_entry +{ + /* An entry always lives on all three lists */ + STAILQ_ENTRY(lsqpack_enc_table_entry) + ete_next_nameval, + ete_next_name, + ete_next_all; + lsqpack_abs_id_t ete_id; + unsigned ete_when_added_used; + unsigned ete_when_added_dropped; + unsigned ete_n_reffd; + unsigned ete_nameval_hash; + unsigned ete_name_hash; + unsigned ete_name_len; + unsigned ete_val_len; + char ete_buf[0]; +}; + +#define ETE_NAME(ete) ((ete)->ete_buf) +#define ETE_VALUE(ete) (&(ete)->ete_buf[(ete)->ete_name_len]) +#define ENTRY_COST(name_len, value_len) (DYNAMIC_ENTRY_OVERHEAD + \ + name_len + value_len) +#define ETE_SIZE(ete) ENTRY_COST((ete)->ete_name_len, (ete)->ete_val_len) + + +#define N_BUCKETS(n_bits) (1U << (n_bits)) +#define BUCKNO(n_bits, hash) ((hash) & (N_BUCKETS(n_bits) - 1)) + +struct lsqpack_header_info +{ + TAILQ_ENTRY(lsqpack_header_info) qhi_next_all; + TAILQ_ENTRY(lsqpack_header_info) qhi_next_risked; + struct lsqpack_header_info *qhi_same_stream_id; /* Circular list */ + uint64_t qhi_stream_id; + unsigned qhi_seqno; + unsigned qhi_bytes_inserted; + lsqpack_abs_id_t qhi_min_id; + lsqpack_abs_id_t qhi_max_id; +}; + +/* Absolute index starts with 1. 0 indicates that the value is not set */ +#define HINFO_IDS_SET(hinfo) ((hinfo)->qhi_max_id != 0) + +/* Header info structures are kept in a list of arrays, which is faster than + * searching through a linked list whose elements may be all over the place + * in memory. This is important because we need to look up header infos by + * stream ID and also calculate the minimum absolute ID. If not sequential + * search, we would need to implement a hybrid of min-heap and a hash (or + * search tree) and that seems to be an overkill for something that is not + * likely to have more than a few hundred elements at the most. + */ +struct lsqpack_header_info_arr +{ + STAILQ_ENTRY(lsqpack_header_info_arr) hia_next; + uint64_t hia_slots; + struct lsqpack_header_info hia_hinfos[64]; +}; + +static unsigned +find_free_slot (uint64_t slots) +{ +#if __GNUC__ + return __builtin_ffsll(~slots) - 1; +#else + unsigned n; + + slots =~ slots; + n = 0; + + if (0 == (slots & ((1ULL << 32) - 1))) { n += 32; slots >>= 32; } + if (0 == (slots & ((1ULL << 16) - 1))) { n += 16; slots >>= 16; } + if (0 == (slots & ((1ULL << 8) - 1))) { n += 8; slots >>= 8; } + if (0 == (slots & ((1ULL << 4) - 1))) { n += 4; slots >>= 4; } + if (0 == (slots & ((1ULL << 2) - 1))) { n += 2; slots >>= 2; } + if (0 == (slots & ((1ULL << 1) - 1))) { n += 1; slots >>= 1; } + return n; +#endif +} + +static struct lsqpack_header_info * +enc_alloc_hinfo (struct lsqpack_enc *enc) +{ + struct lsqpack_header_info_arr *hiarr; + struct lsqpack_header_info *hinfo; + unsigned slot; + + STAILQ_FOREACH(hiarr, &enc->qpe_hinfo_arrs, hia_next) + if (hiarr->hia_slots != ~0ULL) + break; + + if (!hiarr) + { + if (0 == (enc->qpe_flags & LSQPACK_ENC_NO_MEM_GUARD) + && enc->qpe_hinfo_arrs_count * sizeof(*hiarr) + >= enc->qpe_cur_max_capacity) + return NULL; + hiarr = malloc(sizeof(*hiarr)); + if (!hiarr) + return NULL; + hiarr->hia_slots = 0; + STAILQ_INSERT_TAIL(&enc->qpe_hinfo_arrs, hiarr, hia_next); + ++enc->qpe_hinfo_arrs_count; + } + + slot = find_free_slot(hiarr->hia_slots); + hiarr->hia_slots |= 1ULL << slot; + hinfo = &hiarr->hia_hinfos[ slot ]; + memset(hinfo, 0, sizeof(*hinfo)); + hinfo->qhi_same_stream_id = hinfo; + TAILQ_INSERT_TAIL(&enc->qpe_all_hinfos, hinfo, qhi_next_all); + return hinfo; +} + +static void +enc_free_hinfo (struct lsqpack_enc *enc, struct lsqpack_header_info *hinfo) +{ + struct lsqpack_header_info_arr *hiarr; + unsigned slot; + + STAILQ_FOREACH(hiarr, &enc->qpe_hinfo_arrs, hia_next) + if (hinfo >= hiarr->hia_hinfos && hinfo < &hiarr->hia_hinfos[64]) + { + slot = (unsigned)(hinfo - hiarr->hia_hinfos); + hiarr->hia_slots &= ~(1ULL << slot); + TAILQ_REMOVE(&enc->qpe_all_hinfos, &hiarr->hia_hinfos[slot], qhi_next_all); + return; + } + + assert(0); +} + +static int +enc_use_dynamic_table (const struct lsqpack_enc *enc) +{ + return enc->qpe_max_entries > 0 + && enc->qpe_cur_header.hinfo != NULL + && enc->qpe_cur_header.hinfo->qhi_bytes_inserted + < enc->qpe_cur_max_capacity / 2; +} + + +enum he { HE_NAME, HE_NAMEVAL, N_HES }; + + +struct lsqpack_hist_el { + unsigned he_hashes[N_HES]; +}; + + +static void +qenc_hist_update_size (struct lsqpack_enc *enc, unsigned new_size) +{ + struct lsqpack_hist_el *els; + unsigned first, count, i, j; + + if (new_size == enc->qpe_hist_nels) + return; + + if (new_size == 0) + { + enc->qpe_hist_nels = 0; + enc->qpe_hist_idx = 0; + enc->qpe_hist_wrapped = 0; + return; + } + + els = malloc(sizeof(els[0]) * (new_size + 1)); + if (!els) + return; + + E_DEBUG("history size change from %u to %u", enc->qpe_hist_nels, new_size); + + if (enc->qpe_hist_wrapped) + { + first = (enc->qpe_hist_idx + 1) % enc->qpe_hist_nels; + count = enc->qpe_hist_nels; + } + else + { + first = 0; + count = enc->qpe_hist_idx; + } + for (i = 0, j = 0; count > 0 && j < new_size; ++i, ++j, --count) + els[j] = enc->qpe_hist_els[ (first + i) % enc->qpe_hist_nels ]; + enc->qpe_hist_nels = new_size; + enc->qpe_hist_idx = j % new_size; + enc->qpe_hist_wrapped = enc->qpe_hist_idx == 0; + free(enc->qpe_hist_els); + enc->qpe_hist_els = els; +} + + +static void +qenc_hist_add (struct lsqpack_enc *enc, unsigned name_hash, + unsigned nameval_hash) +{ + if (enc->qpe_hist_nels) + { + enc->qpe_hist_els[ enc->qpe_hist_idx ].he_hashes[HE_NAME] = name_hash; + enc->qpe_hist_els[ enc->qpe_hist_idx ].he_hashes[HE_NAMEVAL] + = nameval_hash; + enc->qpe_hist_idx = (enc->qpe_hist_idx + 1) % enc->qpe_hist_nels; + enc->qpe_hist_wrapped |= enc->qpe_hist_idx == 0; + } +} + + +static int +qenc_hist_seen (struct lsqpack_enc *enc, enum he he, unsigned hash) +{ + const struct lsqpack_hist_el *el; + unsigned last_idx; + + if (enc->qpe_hist_els) + { + if (enc->qpe_hist_wrapped) + last_idx = enc->qpe_hist_nels; + else + last_idx = enc->qpe_hist_idx; + enc->qpe_hist_els[ last_idx ].he_hashes[he] = hash; + for (el = enc->qpe_hist_els; el->he_hashes[he] != hash; ++el) + ; + return el < &enc->qpe_hist_els[ last_idx ]; + } + else + return 1; +} + + +unsigned char * +lsqpack_enc_int (unsigned char *, unsigned char *const, uint64_t, unsigned); + + +void +lsqpack_enc_preinit (struct lsqpack_enc *enc, void *logger_ctx) +{ + memset(enc, 0, sizeof(*enc)); + STAILQ_INIT(&enc->qpe_all_entries); + STAILQ_INIT(&enc->qpe_hinfo_arrs); + TAILQ_INIT(&enc->qpe_all_hinfos); + TAILQ_INIT(&enc->qpe_risked_hinfos); + enc->qpe_logger_ctx = logger_ctx; + E_DEBUG("preinitialized"); +}; + + +int +lsqpack_enc_init (struct lsqpack_enc *enc, void *logger_ctx, + unsigned max_table_size, unsigned dyn_table_size, + unsigned max_risked_streams, enum lsqpack_enc_opts enc_opts, + unsigned char *tsu_buf, size_t *tsu_buf_sz) +{ + struct lsqpack_double_enc_head *buckets; + unsigned char *p; + unsigned nbits = 2; + unsigned i; + + if (dyn_table_size > max_table_size) + { + errno = EINVAL; + return -1; + } + + if (!(enc_opts & LSQPACK_ENC_OPT_STAGE_2)) + lsqpack_enc_preinit(enc, logger_ctx); + + if (dyn_table_size != LSQPACK_DEF_DYN_TABLE_SIZE) + { + if (!(tsu_buf && tsu_buf_sz && *tsu_buf_sz)) + { + errno = EINVAL; + return -1; + } + p = tsu_buf; + *p = 0x20; + p = lsqpack_enc_int(p, tsu_buf + *tsu_buf_sz, dyn_table_size, 5); + if (p <= tsu_buf) + { + errno = ENOBUFS; + return -1; + } + E_DEBUG("generated TSU=%u instruction %zd byte%.*s in size", + dyn_table_size, p - tsu_buf, p - tsu_buf != 1, "s"); + *tsu_buf_sz = p - tsu_buf; + } + else if (tsu_buf_sz) + *tsu_buf_sz = 0; + + if (!(enc_opts & LSQPACK_ENC_OPT_IX_AGGR)) + { + enc->qpe_hist_nels = MAX( + /* Initial guess at number of entries in dynamic table: */ + dyn_table_size / DYNAMIC_ENTRY_OVERHEAD / 3, + GUESS_N_HEADER_FIELDS + ); + enc->qpe_hist_els = malloc(sizeof(enc->qpe_hist_els[0]) * (enc->qpe_hist_nels + 1)); + if (!enc->qpe_hist_els) + return -1; + } + else + { + enc->qpe_hist_nels = 0; + enc->qpe_hist_els = NULL; + } + + if (max_table_size / DYNAMIC_ENTRY_OVERHEAD) + { + nbits = 2; + buckets = malloc(sizeof(buckets[0]) * N_BUCKETS(nbits)); + if (!buckets) + { + free(enc->qpe_hist_els); + return -1; + } + + for (i = 0; i < N_BUCKETS(nbits); ++i) + { + STAILQ_INIT(&buckets[i].by_name); + STAILQ_INIT(&buckets[i].by_nameval); + } + } + else + { + nbits = 0; + buckets = NULL; + } + + enc->qpe_max_entries = max_table_size / DYNAMIC_ENTRY_OVERHEAD; + enc->qpe_real_max_capacity = max_table_size; + enc->qpe_cur_max_capacity = dyn_table_size; + enc->qpe_max_risked_streams = max_risked_streams; + enc->qpe_buckets = buckets; + enc->qpe_nbits = nbits; + enc->qpe_logger_ctx = logger_ctx; + if (!(enc_opts & LSQPACK_ENC_OPT_NO_DUP)) + enc->qpe_flags |= LSQPACK_ENC_USE_DUP; + if (enc_opts & LSQPACK_ENC_OPT_NO_MEM_GUARD) + enc->qpe_flags |= LSQPACK_ENC_NO_MEM_GUARD; + E_DEBUG("initialized. opts: 0x%X; max capacity: %u; max risked " + "streams: %u.", enc_opts, enc->qpe_cur_max_capacity, + enc->qpe_max_risked_streams); + + return 0; +} + + +void +lsqpack_enc_cleanup (struct lsqpack_enc *enc) +{ + struct lsqpack_enc_table_entry *entry, *next; + struct lsqpack_header_info_arr *hiarr, *next_hiarr; + + for (entry = STAILQ_FIRST(&enc->qpe_all_entries); entry; entry = next) + { + next = STAILQ_NEXT(entry, ete_next_all); + free(entry); + } + + for (hiarr = STAILQ_FIRST(&enc->qpe_hinfo_arrs); hiarr; hiarr = next_hiarr) + { + next_hiarr = STAILQ_NEXT(hiarr, hia_next); + free(hiarr); + } + + free(enc->qpe_buckets); + free(enc->qpe_hist_els); + E_DEBUG("cleaned up"); +} + + +#define LSQPACK_XXH_SEED 39378473 +#define XXH_NAME_WIDTH 9 +#define XXH_NAME_SHIFT 0 +#define XXH_NAMEVAL_WIDTH 9 +#define XXH_NAMEVAL_SHIFT 0 + +static const unsigned char name2id_plus_one[ 1 << XXH_NAME_WIDTH ] = +{ + [347] = 1, [397] = 2, [64] = 3, [144] = 4, [25] = 5, + [216] = 6, [361] = 7, [442] = 8, [190] = 9, [404] = 10, + [181] = 11, [210] = 12, [38] = 13, [51] = 14, [318] = 15, + [484] = 16, [81] = 23, [83] = 25, [248] = 30, [169] = 32, + [456] = 33, [479] = 34, [59] = 36, [498] = 37, [401] = 43, + [453] = 45, [266] = 56, [88] = 57, [317] = 60, [74] = 62, + [189] = 63, [211] = 73, [334] = 74, [365] = 77, [382] = 80, + [377] = 81, [257] = 82, [56] = 84, [321] = 85, [79] = 86, + [384] = 87, [357] = 88, [438] = 89, [84] = 90, [264] = 91, + [146] = 92, [225] = 93, [490] = 94, [305] = 95, [362] = 96, + [486] = 97, [497] = 98, +}; + +static const unsigned char nameval2id_plus_one[ 1 << XXH_NAMEVAL_WIDTH ] = +{ + [150] = 1, [502] = 2, [353] = 3, [262] = 4, [443] = 5, + [164] = 6, [463] = 7, [84] = 8, [205] = 9, [228] = 10, + [451] = 11, [444] = 12, [176] = 13, [75] = 14, [399] = 15, + [56] = 16, [384] = 17, [21] = 18, [484] = 19, [382] = 20, + [439] = 21, [329] = 22, [360] = 23, [67] = 24, [105] = 25, + [342] = 26, [457] = 27, [161] = 28, [337] = 29, [135] = 30, + [314] = 31, [370] = 32, [404] = 33, [184] = 34, [156] = 35, + [139] = 36, [339] = 37, [508] = 38, [267] = 39, [375] = 40, + [122] = 41, [297] = 42, [144] = 43, [85] = 44, [466] = 45, + [38] = 46, [320] = 47, [273] = 48, [277] = 49, [136] = 50, + [454] = 51, [477] = 52, [91] = 53, [227] = 54, [301] = 55, + [272] = 56, [319] = 57, [142] = 58, [268] = 59, [65] = 60, + [410] = 61, [4] = 62, [373] = 63, [1] = 64, [210] = 65, + [224] = 66, [423] = 67, [222] = 68, [386] = 69, [12] = 70, + [7] = 71, [391] = 72, [73] = 73, [307] = 74, [27] = 75, + [256] = 76, [154] = 77, [204] = 78, [310] = 79, [198] = 80, + [162] = 81, [334] = 82, [438] = 83, [69] = 84, [188] = 85, + [244] = 86, [190] = 87, [465] = 88, [468] = 89, [417] = 90, + [110] = 91, [107] = 92, [368] = 93, [460] = 94, [54] = 95, + [492] = 96, [402] = 97, [196] = 98, [383] = 99, +}; + + +static const uint32_t name_hashes[] = +{ + 0x653A915Bu, 0x3513518Du, 0xBEC8E440u, 0x16020A90u, 0x48F5CC19u, + 0x0B486ED8u, 0x1A7AA369u, 0x6DE855BAu, 0xF2BADABEu, 0xD8CA2594u, + 0x6B86C0B5u, 0xC62FECD2u, 0x8DA64A26u, 0x01F10233u, 0x8F7E493Eu, + 0xC7742BE4u, 0xC7742BE4u, 0xC7742BE4u, 0xC7742BE4u, 0xC7742BE4u, + 0xC7742BE4u, 0xC7742BE4u, 0xF49F1451u, 0xF49F1451u, 0x672BDA53u, + 0x672BDA53u, 0x672BDA53u, 0x672BDA53u, 0x672BDA53u, 0x1AB214F8u, + 0x1AB214F8u, 0xF93AD8A9u, 0x1DC691C8u, 0x7C21CFDFu, 0x7C21CFDFu, + 0x7D3B7A3Bu, 0xC25511F2u, 0xC25511F2u, 0xC25511F2u, 0xC25511F2u, + 0xC25511F2u, 0xC25511F2u, 0x48011191u, 0x48011191u, 0x085EF7C5u, + 0x085EF7C5u, 0x085EF7C5u, 0x085EF7C5u, 0x085EF7C5u, 0x085EF7C5u, + 0x085EF7C5u, 0x085EF7C5u, 0x085EF7C5u, 0x085EF7C5u, 0x085EF7C5u, + 0xB396750Au, 0x85E74C58u, 0x85E74C58u, 0x85E74C58u, 0x1A04DF3Du, + 0x1A04DF3Du, 0x28686A4Au, 0x9F8BCEBDu, 0x672BDA53u, 0x672BDA53u, + 0x672BDA53u, 0x672BDA53u, 0x672BDA53u, 0x672BDA53u, 0x672BDA53u, + 0x672BDA53u, 0x672BDA53u, 0x98BD32D3u, 0x0A829D4Eu, 0x0A829D4Eu, + 0x7C21CFDFu, 0x363F796Du, 0x363F796Du, 0x363F796Du, 0xD8A0B17Eu, + 0xAAF9FD79u, 0x617E4501u, 0x617E4501u, 0x1E6DBE38u, 0x19D88141u, + 0x3392084Fu, 0x5579EF80u, 0x8F3D7765u, 0x7EDC71B6u, 0xFBA64C54u, + 0x3ECDA708u, 0xEBA96E92u, 0x82E1B4E1u, 0x5AD275EAu, 0xDD09E931u, + 0x34C0456Au, 0x5EF889E6u, 0x4B1BB7F1u, 0x4B1BB7F1u, +}; + + +static const uint32_t nameval_hashes[] = +{ + 0xF8614896u, 0xC8C267F6u, 0xF4617F61u, 0x8410A906u, 0xC8D109BBu, + 0x51D448A4u, 0x52C167CFu, 0xFB22AA54u, 0x4F5272CDu, 0x9D4170E4u, + 0x4E8C1DC3u, 0x684BDDBCu, 0xE113A2B0u, 0x5010D24Bu, 0xBCA5998Fu, + 0xC8490E38u, 0x19094780u, 0x25D95A15u, 0x342283E4u, 0x15893F7Eu, + 0x33968BB7u, 0x4C856F49u, 0x98573F68u, 0x16DDE443u, 0x813C3469u, + 0x352A6556u, 0xD7988BC9u, 0x65E6ECA1u, 0x7EEE2551u, 0x77EBAE87u, + 0xBDF5A53Au, 0x7F49F172u, 0xC06A7994u, 0xDB2FBCB8u, 0x343EA49Cu, + 0xD143768Bu, 0x3E2D8753u, 0xA2EA09FCu, 0x467B5D0Bu, 0xCEB7F977u, + 0x7119DC7Au, 0xDEFDA129u, 0x3F6EBC90u, 0x14E09A55u, 0x43C8B9D2u, + 0xA707C426u, 0xFE372940u, 0x77591711u, 0xA6410F15u, 0xEACDE488u, + 0x8B2C4DC6u, 0x8C2B11DDu, 0x9703CE5Bu, 0x0FAA28E3u, 0x13CCE32Du, + 0xDCD68310u, 0x416F0B3Fu, 0x3BB4D68Eu, 0xF81F070Cu, 0xBDD89641u, + 0x3915039Au, 0xF609E604u, 0x1C9DBB75u, 0x7ACD6A01u, 0xD4F462D2u, + 0x125E66E0u, 0x0AD44FA7u, 0x4C3C90DEu, 0x27AD6982u, 0x0673640Cu, + 0x65C03607u, 0xB05B7B87u, 0x97E01849u, 0xBA18BD33u, 0xDEF6041Bu, + 0xE227F500u, 0x8A871E9Au, 0xCB120ACCu, 0x4B1B6336u, 0xEBDA42C6u, + 0xFF166CA2u, 0x3A5E054Eu, 0x027207B6u, 0x04E3E645u, 0xAA95A0BCu, + 0x77BFA4F4u, 0x3C95E0BEu, 0xD506A9D1u, 0x443EDFD4u, 0xD4E28BA1u, + 0xA60BF66Eu, 0x46201E6Bu, 0xB2DE5570u, 0xF19F5DCCu, 0x73B6C636u, + 0xDC83E7ECu, 0xAA333392u, 0x4EDB46C4u, 0xF64F937Fu, +}; + + +/* -1 means not found */ +static int +find_in_static_full (uint32_t nameval_hash, const char *name, + unsigned name_len, const char *val, unsigned val_len) +{ + unsigned id; + + id = nameval2id_plus_one[ (nameval_hash >> XXH_NAMEVAL_SHIFT) + & ((1 << XXH_NAMEVAL_WIDTH) - 1) ]; + + if (id == 0) + return -1; + + --id; + if (static_table[id].name_len == name_len + && static_table[id].val_len == val_len + && memcmp(static_table[id].name, name, name_len) == 0 + && memcmp(static_table[id].val, val, val_len) == 0) + return id; + else + return -1; +} + + +#ifdef NDEBUG +static +#endif +int +lsqpack_find_in_static_headers (uint32_t name_hash, const char *name, + unsigned name_len) +{ + unsigned id; + + id = name2id_plus_one[ (name_hash >> XXH_NAME_SHIFT) + & ((1 << XXH_NAME_WIDTH) - 1) ]; + + if (id == 0) + return -1; + + --id; + if (static_table[id].name_len == name_len + && memcmp(static_table[id].name, name, name_len) == 0) + return id; + else + return -1; +} + + +static unsigned +lsqpack_val2len (uint64_t value, unsigned prefix_bits) +{ + uint64_t mask = (1ULL << prefix_bits) - 1; + return 1 + + (value >= mask ) + + (value >= ((1ULL << 7) + mask)) + + (value >= ((1ULL << 14) + mask)) + + (value >= ((1ULL << 21) + mask)) + + (value >= ((1ULL << 28) + mask)) + + (value >= ((1ULL << 35) + mask)) + + (value >= ((1ULL << 42) + mask)) + + (value >= ((1ULL << 49) + mask)) + + (value >= ((1ULL << 56) + mask)) + + (value >= ((1ULL << 63) + mask)) + ; +} + + +unsigned char * +lsqpack_enc_int (unsigned char *dst, unsigned char *const end, uint64_t value, + unsigned prefix_bits) +{ + unsigned char *const dst_orig = dst; + + /* This function assumes that at least one byte is available */ + assert(dst < end); + if (value < ((uint64_t)1 << prefix_bits) - 1) + *dst++ |= value; + else + { + *dst++ |= (1 << prefix_bits) - 1; + value -= (1 << prefix_bits) - 1; + while (value >= 128) + { + if (dst < end) + { + *dst++ = 0x80 | (unsigned char) value; + value >>= 7; + } + else + return dst_orig; + } + if (dst < end) + *dst++ = (unsigned char) value; + else + return dst_orig; + } + return dst; +} + + +static void +lsqpack_enc_int_nocheck (unsigned char *dst, uint64_t value, + unsigned prefix_bits) +{ + if (value < ((uint64_t)1 << prefix_bits) - 1) + *dst++ |= value; + else + { + *dst++ |= (1 << prefix_bits) - 1; + value -= (1 << prefix_bits) - 1; + while (value >= 128) + { + *dst++ = 0x80 | (unsigned char) value; + value >>= 7; + } + *dst++ = (unsigned char) value; + } +} + + +int +lsqpack_enc_enc_str (unsigned prefix_bits, unsigned char *const dst, + size_t dst_len, const unsigned char *str, unsigned str_len) +{ + unsigned char *p; + unsigned enc_size_bytes, len_size; + + enc_size_bytes = qenc_enc_str_size(str, str_len); + + if (enc_size_bytes < str_len) + { + len_size = lsqpack_val2len(enc_size_bytes, prefix_bits); + if (len_size + enc_size_bytes <= dst_len) + { + *dst &= ~((1 << (prefix_bits + 1)) - 1); + *dst |= 1 << prefix_bits; + lsqpack_enc_int_nocheck(dst, enc_size_bytes, prefix_bits); + p = qenc_huffman_enc(str, str + str_len, dst + len_size); + assert((unsigned) (p - dst) == len_size + enc_size_bytes); + return (int)(p - dst); + } + else + return -1; + } + else + { + len_size = lsqpack_val2len(str_len, prefix_bits); + if (len_size + str_len <= dst_len) + { + *dst &= ~((1 << (prefix_bits + 1)) - 1); + lsqpack_enc_int_nocheck(dst, str_len, prefix_bits); + memcpy(dst + len_size, str, str_len); + return len_size + str_len; + } + else + return -1; + } +} + + +static void +qenc_drop_oldest_entry (struct lsqpack_enc *enc) +{ + struct lsqpack_enc_table_entry *entry; + unsigned buckno; + + entry = STAILQ_FIRST(&enc->qpe_all_entries); + assert(entry); + E_DEBUG("drop entry %u (`%.*s': `%.*s'), nelem: %u; capacity: %u", + entry->ete_id, (int) entry->ete_name_len, ETE_NAME(entry), + (int) entry->ete_val_len, ETE_VALUE(entry), enc->qpe_nelem - 1, + enc->qpe_cur_bytes_used - ETE_SIZE(entry)); + STAILQ_REMOVE_HEAD(&enc->qpe_all_entries, ete_next_all); + buckno = BUCKNO(enc->qpe_nbits, entry->ete_nameval_hash); + assert(entry == STAILQ_FIRST(&enc->qpe_buckets[buckno].by_nameval)); + STAILQ_REMOVE_HEAD(&enc->qpe_buckets[buckno].by_nameval, ete_next_nameval); + buckno = BUCKNO(enc->qpe_nbits, entry->ete_name_hash); + assert(entry == STAILQ_FIRST(&enc->qpe_buckets[buckno].by_name)); + STAILQ_REMOVE_HEAD(&enc->qpe_buckets[buckno].by_name, ete_next_name); + + enc->qpe_dropped += ETE_SIZE(entry); + enc->qpe_cur_bytes_used -= ETE_SIZE(entry); + --enc->qpe_nelem; + free(entry); +} + + +static float +qenc_effective_fill (const struct lsqpack_enc *enc) +{ + struct lsqpack_enc_table_entry *entry, *dup; + unsigned dups_size = 0; + + assert(enc->qpe_cur_max_capacity); + + STAILQ_FOREACH(entry, &enc->qpe_all_entries, ete_next_all) + for (dup = STAILQ_NEXT(entry, ete_next_all); dup; + dup = STAILQ_NEXT(dup, ete_next_all)) + if (dup->ete_name_len == entry->ete_name_len && + dup->ete_val_len == entry->ete_val_len && + 0 == memcmp(ETE_NAME(dup), ETE_NAME(entry), + dup->ete_name_len + dup->ete_val_len)) + { + dups_size += ETE_SIZE(dup); + break; + } + + return (float) (enc->qpe_cur_bytes_used - dups_size) + / (float) enc->qpe_cur_max_capacity; +} + + +static void +update_ema (float *val, unsigned new) +{ + if (*val) + *val = (float)((new - *val) * 0.4 + *val); + else + *val = (float)new; +} + + +static void +qenc_sample_table_size (struct lsqpack_enc *enc) +{ + update_ema(&enc->qpe_table_nelem_ema, enc->qpe_nelem); + E_DEBUG("table size actual: %u; exponential moving average: %.3f", + enc->qpe_nelem, enc->qpe_table_nelem_ema); +} + + +static void +qenc_sample_header_count (struct lsqpack_enc *enc) +{ + update_ema(&enc->qpe_header_count_ema, + enc->qpe_cur_header.n_hdr_added_to_hist); + E_DEBUG("header count actual: %u; exponential moving average: %.3f", + enc->qpe_cur_header.n_hdr_added_to_hist, enc->qpe_header_count_ema); +} + + +static void +qenc_remove_overflow_entries (struct lsqpack_enc *enc) +{ + int dropped; + + dropped = 0; + while (enc->qpe_cur_bytes_used > enc->qpe_cur_max_capacity) + { + qenc_drop_oldest_entry(enc); + ++dropped; + } + + if (enc->qpe_logger_ctx && enc->qpe_cur_max_capacity) + { + if (enc->qpe_flags & LSQPACK_ENC_USE_DUP) + E_DEBUG("fill: %.2f; effective fill: %.2f", + (float) enc->qpe_cur_bytes_used / (float) enc->qpe_cur_max_capacity, + qenc_effective_fill(enc)); + else + E_DEBUG("fill: %.2f", + (float) enc->qpe_cur_bytes_used / (float) enc->qpe_cur_max_capacity); + } + + /* It's important to sample only when entries have been dropped: that + * indicates that the table is being cycled through. + */ + if (dropped && enc->qpe_hist_els) + qenc_sample_table_size(enc); +} + + +static int +qenc_grow_tables (struct lsqpack_enc *enc) +{ + struct lsqpack_double_enc_head *new_buckets, *new[2]; + struct lsqpack_enc_table_entry *entry; + unsigned n, old_nbits; + int idx; + + old_nbits = enc->qpe_nbits; + new_buckets = malloc(sizeof(enc->qpe_buckets[0]) + * N_BUCKETS(old_nbits + 1)); + if (!new_buckets) + return -1; + + for (n = 0; n < N_BUCKETS(old_nbits); ++n) + { + new[0] = &new_buckets[n]; + new[1] = &new_buckets[n + N_BUCKETS(old_nbits)]; + STAILQ_INIT(&new[0]->by_name); + STAILQ_INIT(&new[1]->by_name); + STAILQ_INIT(&new[0]->by_nameval); + STAILQ_INIT(&new[1]->by_nameval); + while (entry = STAILQ_FIRST(&enc->qpe_buckets[n].by_name), entry != NULL) + { + STAILQ_REMOVE_HEAD(&enc->qpe_buckets[n].by_name, ete_next_name); + idx = (BUCKNO(old_nbits + 1, entry->ete_name_hash) + >> old_nbits) & 1; + STAILQ_INSERT_TAIL(&new[idx]->by_name, entry, ete_next_name); + } + while (entry = STAILQ_FIRST(&enc->qpe_buckets[n].by_nameval), entry != NULL) + { + STAILQ_REMOVE_HEAD(&enc->qpe_buckets[n].by_nameval, + ete_next_nameval); + idx = (BUCKNO(old_nbits + 1, entry->ete_nameval_hash) + >> old_nbits) & 1; + STAILQ_INSERT_TAIL(&new[idx]->by_nameval, entry, + ete_next_nameval); + } + } + + free(enc->qpe_buckets); + enc->qpe_nbits = old_nbits + 1; + enc->qpe_buckets = new_buckets; + return 0; +} + + +static struct lsqpack_enc_table_entry * +lsqpack_enc_push_entry (struct lsqpack_enc *enc, uint32_t name_hash, + uint32_t nameval_hash, const char *name, unsigned name_len, + const char *value, unsigned value_len) +{ + struct lsqpack_enc_table_entry *entry; + unsigned buckno; + size_t size; + + if (enc->qpe_nelem >= N_BUCKETS(enc->qpe_nbits) / 2 && + 0 != qenc_grow_tables(enc)) + return NULL; + + size = sizeof(*entry) + name_len + value_len; + entry = malloc(size); + if (!entry) + return NULL; + + entry->ete_name_hash = name_hash; + entry->ete_nameval_hash = nameval_hash; + entry->ete_name_len = name_len; + entry->ete_val_len = value_len; + entry->ete_when_added_used = enc->qpe_cur_bytes_used; + entry->ete_when_added_dropped = enc->qpe_dropped; + entry->ete_id = 1 + enc->qpe_ins_count++; + memcpy(ETE_NAME(entry), name, name_len); + memcpy(ETE_VALUE(entry), value, value_len); + + STAILQ_INSERT_TAIL(&enc->qpe_all_entries, entry, ete_next_all); + buckno = BUCKNO(enc->qpe_nbits, nameval_hash); + STAILQ_INSERT_TAIL(&enc->qpe_buckets[buckno].by_nameval, entry, + ete_next_nameval); + buckno = BUCKNO(enc->qpe_nbits, name_hash); + STAILQ_INSERT_TAIL(&enc->qpe_buckets[buckno].by_name, entry, + ete_next_name); + + enc->qpe_cur_bytes_used += ENTRY_COST(name_len, value_len); + ++enc->qpe_nelem; + E_DEBUG("pushed entry %u (`%.*s': `%.*s'), nelem: %u; capacity: %u", + entry->ete_id, (int) entry->ete_name_len, ETE_NAME(entry), + (int) entry->ete_val_len, ETE_VALUE(entry), enc->qpe_nelem, + enc->qpe_cur_bytes_used); + return entry; +} + + +int +lsqpack_enc_start_header (struct lsqpack_enc *enc, uint64_t stream_id, + unsigned seqno) +{ + struct lsqpack_header_info *hinfo; + + if (enc->qpe_flags & LSQPACK_ENC_HEADER) + return -1; + + E_DEBUG("Start header for stream %"PRIu64, stream_id); + + enc->qpe_cur_header.hinfo = enc_alloc_hinfo(enc); + if (enc->qpe_cur_header.hinfo) + { + enc->qpe_cur_header.hinfo->qhi_stream_id = stream_id; + enc->qpe_cur_header.hinfo->qhi_seqno = seqno; + } + else + E_INFO("could not allocate hinfo for stream %"PRIu64, stream_id); + enc->qpe_cur_header.flags = 0; + enc->qpe_cur_header.other_at_risk = NULL; + enc->qpe_cur_header.n_hdr_added_to_hist = 0; + enc->qpe_cur_header.base_idx = enc->qpe_ins_count; + + /* Check if there are other header blocks with the same stream ID that + * are at risk. + */ + if (seqno && enc->qpe_cur_header.hinfo) + TAILQ_FOREACH(hinfo, &enc->qpe_risked_hinfos, qhi_next_risked) + if (hinfo->qhi_stream_id == stream_id) + { + enc->qpe_cur_header.other_at_risk = hinfo; + break; + } + + enc->qpe_flags |= LSQPACK_ENC_HEADER; + + return 0; +} + + +/* + * Each header block is prefixed with two integers. The Required Insert + * Count is encoded as an integer with an 8-bit prefix. The Base is encoded + * as sign- and-modulus integer, using a single sign bit and a value with a + * 7-bit prefix. + * + * 0 1 2 3 4 5 6 7 + * +---+---+---+---+---+---+---+---+ + * | Required Insert Count (8+) | + * +---+---------------------------+ + * | S | Delta Base (7+) | + * +---+---------------------------+ + * | Compressed Headers ... + * +-------------------------------+ + */ +size_t +lsqpack_enc_header_block_prefix_size (const struct lsqpack_enc *enc) +{ + unsigned req_ins_count_len, delta_base_len; + + req_ins_count_len = lsqpack_val2len(2 * enc->qpe_max_entries, 8); + delta_base_len = lsqpack_val2len(2 * enc->qpe_max_entries, 7); + return req_ins_count_len + delta_base_len; +} + + +int +lsqpack_enc_cancel_header (struct lsqpack_enc *enc) +{ + /* No header has been started. */ + if (!(enc->qpe_flags & LSQPACK_ENC_HEADER)) + return -1; + + /* Cancellation is not (yet) allowed if the dynamic table is used since + * ls-qpack's state is changed when the dynamic table is used. + */ + if (enc->qpe_cur_header.hinfo && HINFO_IDS_SET(enc->qpe_cur_header.hinfo)) + return -1; + + if (enc->qpe_cur_header.hinfo) { + enc_free_hinfo(enc, enc->qpe_cur_header.hinfo); + enc->qpe_cur_header.hinfo = NULL; + } + + enc->qpe_flags &= ~LSQPACK_ENC_HEADER; + + return 0; +} + + +static void +qenc_add_to_risked_list (struct lsqpack_enc *enc, + struct lsqpack_header_info *hinfo) +{ + TAILQ_INSERT_TAIL(&enc->qpe_risked_hinfos, hinfo, qhi_next_risked); + if (enc->qpe_cur_header.other_at_risk) + { + hinfo->qhi_same_stream_id + = enc->qpe_cur_header.other_at_risk->qhi_same_stream_id; + enc->qpe_cur_header.other_at_risk->qhi_same_stream_id = hinfo; + } + else + { + ++enc->qpe_cur_streams_at_risk; + E_DEBUG("streams at risk: %u", enc->qpe_cur_streams_at_risk); + assert(enc->qpe_cur_streams_at_risk <= enc->qpe_max_risked_streams); + } +} + + +static void +qenc_remove_from_risked_list (struct lsqpack_enc *enc, + struct lsqpack_header_info *hinfo) +{ + struct lsqpack_header_info *prev; + if (TAILQ_EMPTY(&enc->qpe_risked_hinfos)) + { + assert(enc->qpe_cur_streams_at_risk == 0); + return; + } + TAILQ_REMOVE(&enc->qpe_risked_hinfos, hinfo, qhi_next_risked); + if (hinfo->qhi_same_stream_id == hinfo) + { + assert(enc->qpe_cur_streams_at_risk > 0); + --enc->qpe_cur_streams_at_risk; + E_DEBUG("streams at risk: %u", enc->qpe_cur_streams_at_risk); + } + else + { + for (prev = hinfo->qhi_same_stream_id; + prev->qhi_same_stream_id != hinfo; prev = prev->qhi_same_stream_id) + ; + prev->qhi_same_stream_id = hinfo->qhi_same_stream_id; + hinfo->qhi_same_stream_id = hinfo; + } +} + + +static int +qenc_hinfo_at_risk (const struct lsqpack_enc *enc, + const struct lsqpack_header_info *hinfo) +{ + return hinfo->qhi_max_id > enc->qpe_max_acked_id; +} + + +ssize_t +lsqpack_enc_end_header (struct lsqpack_enc *enc, unsigned char *buf, size_t sz, + enum lsqpack_enc_header_flags *header_flags) +{ + struct lsqpack_header_info *hinfo; + unsigned char *dst, *end; + lsqpack_abs_id_t diff, encoded_largest_ref; + unsigned sign, nelem; + float count_diff; + + if (sz == 0) + return -1; + + if (!(enc->qpe_flags & LSQPACK_ENC_HEADER)) + return -1; + + if (enc->qpe_hist_els) + { + qenc_sample_header_count(enc); + if (enc->qpe_table_nelem_ema + /* History size should not be smaller than the average number of + * header fields in a header list. + */ + && enc->qpe_table_nelem_ema > enc->qpe_header_count_ema) + { + count_diff = fabsf(enc->qpe_hist_nels - enc->qpe_table_nelem_ema); + /* If difference is 2 or 10%: */ + if (count_diff >= 1.5 + || count_diff / enc->qpe_table_nelem_ema >= 0.1) + { + nelem = (unsigned) round(enc->qpe_table_nelem_ema); + qenc_hist_update_size(enc, nelem); + } + } + } + + if (enc->qpe_cur_header.hinfo && HINFO_IDS_SET(enc->qpe_cur_header.hinfo)) + { + hinfo = enc->qpe_cur_header.hinfo; /* shorthand */ + end = buf + sz; + + *buf = 0; + encoded_largest_ref = hinfo->qhi_max_id + % (2 * enc->qpe_max_entries) + 1; + E_DEBUG("LargestRef for stream %"PRIu64" is encoded as %u", + hinfo->qhi_stream_id, encoded_largest_ref); + dst = lsqpack_enc_int(buf, end, encoded_largest_ref, 8); + if (dst <= buf) + return 0; + + if (dst >= end) + return 0; + + buf = dst; + if (enc->qpe_cur_header.base_idx >= hinfo->qhi_max_id) + { + sign = 0; + diff = enc->qpe_cur_header.base_idx - hinfo->qhi_max_id; + } + else + { + sign = 1; + diff = hinfo->qhi_max_id - enc->qpe_cur_header.base_idx - 1; + } + *buf = (unsigned char) (sign << 7); + dst = lsqpack_enc_int(buf, end, diff, 7); + if (dst <= buf) + return 0; + + if (qenc_hinfo_at_risk(enc, hinfo)) + qenc_add_to_risked_list(enc, hinfo); + + E_DEBUG("ended header for stream %"PRIu64"; max ref: %u encoded as %u; " + "risked: %d", hinfo->qhi_stream_id, hinfo->qhi_max_id, + encoded_largest_ref, qenc_hinfo_at_risk(enc, hinfo)); + + enc->qpe_cur_header.hinfo = NULL; + enc->qpe_flags &= ~LSQPACK_ENC_HEADER; + if (header_flags) + { + *header_flags = enc->qpe_cur_header.flags; + if (qenc_hinfo_at_risk(enc, hinfo)) + *header_flags |= LSQECH_REF_AT_RISK; + } + enc->qpe_bytes_out += (unsigned)(dst - end + sz); + return dst - end + sz; + } + + if (sz >= 2) + { + memset(buf, 0, 2); + if (enc->qpe_cur_header.hinfo) + { + E_DEBUG("ended header for stream %"PRIu64"; dynamic table not " + "referenced", enc->qpe_cur_header.hinfo->qhi_stream_id); + enc_free_hinfo(enc, enc->qpe_cur_header.hinfo); + enc->qpe_cur_header.hinfo = NULL; + } + else + E_DEBUG("ended header; hinfo absent"); + enc->qpe_flags &= ~LSQPACK_ENC_HEADER; + if (header_flags) + *header_flags = enc->qpe_cur_header.flags; + enc->qpe_bytes_out += 2; + return 2; + } + else + return 0; +} + + +struct encode_program +{ + enum enc_stream_action { /* What to do on encoder stream */ + EEA_NONE, + EEA_DUP, + EEA_INS_NAMEREF_STATIC, + EEA_INS_NAMEREF_DYNAMIC, + EEA_INS_LIT, + EEA_INS_LIT_NAME, + } ep_enc_action; + enum hea_block_action { /* What to output to header block */ + EHA_INDEXED_NEW, + EHA_INDEXED_STAT, + EHA_INDEXED_DYN, + EHA_LIT_WITH_NAME_STAT, + EHA_LIT_WITH_NAME_DYN, + EHA_LIT_WITH_NAME_NEW, + EHA_LIT, + } ep_hea_action; + enum dyn_table_action { /* Any changes to the dynamic table */ + ETA_NOOP, + ETA_NEW, + ETA_NEW_NAME, + } ep_tab_action; + enum ref_flags { /* Which entries to take references to */ + EPF_REF_FOUND = 1 << 1, + EPF_REF_NEW = 1 << 2, + } ep_flags; +}; + + +static const char *const eea2str[] = +{ + [EEA_NONE] = "EEA_NONE", + [EEA_DUP] = "EEA_DUP", + [EEA_INS_NAMEREF_STATIC] = "EEA_INS_NAMEREF_STATIC", + [EEA_INS_NAMEREF_DYNAMIC] = "EEA_INS_NAMEREF_DYNAMIC", + [EEA_INS_LIT] = "EEA_INS_LIT", + [EEA_INS_LIT_NAME] = "EEA_INS_LIT_NAME", +}; + + +static const char *const eha2str[] = +{ + [EHA_INDEXED_NEW] = "EHA_INDEXED_NEW", + [EHA_INDEXED_STAT] = "EHA_INDEXED_STAT", + [EHA_INDEXED_DYN] = "EHA_INDEXED_DYN", + [EHA_LIT_WITH_NAME_STAT] = "EHA_LIT_WITH_NAME_STAT", + [EHA_LIT_WITH_NAME_DYN] = "EHA_LIT_WITH_NAME_DYN", + [EHA_LIT_WITH_NAME_NEW] = "EHA_LIT_WITH_NAME_NEW", + [EHA_LIT] = "EHA_LIT", +}; + + +static const char *const eta2str[] = +{ + [ETA_NOOP] = "ETA_NOOP", + [ETA_NEW] = "ETA_NEW", + [ETA_NEW_NAME] = "ETA_NEW_NAME", +}; + + +static lsqpack_abs_id_t +qenc_min_reffed_id (struct lsqpack_enc *enc) +{ + const struct lsqpack_header_info *hinfo; + lsqpack_abs_id_t min_id; + + if (enc->qpe_cur_header.flags & LSQECH_MINREF_CACHED) + min_id = enc->qpe_cur_header.min_reffed; + else + { + min_id = 0; + TAILQ_FOREACH(hinfo, &enc->qpe_all_hinfos, qhi_next_all) + if (min_id == 0 || + (hinfo->qhi_min_id != 0 && hinfo->qhi_min_id < min_id)) + { + min_id = hinfo->qhi_min_id; + } + enc->qpe_cur_header.min_reffed = min_id; + enc->qpe_cur_header.flags |= LSQECH_MINREF_CACHED; + } + + if (enc->qpe_cur_header.hinfo + && (min_id == 0 || (enc->qpe_cur_header.hinfo->qhi_min_id != 0 + && enc->qpe_cur_header.hinfo->qhi_min_id < min_id))) + min_id = enc->qpe_cur_header.hinfo->qhi_min_id; + + return min_id; +} + + +static int +qenc_safe_to_dup (const struct lsqpack_enc *enc, + const struct lsqpack_enc_table_entry *const pinned_entry) +{ + const struct lsqpack_enc_table_entry *entry; + unsigned bytes_used; + + bytes_used = enc->qpe_cur_bytes_used + ETE_SIZE(pinned_entry); + if (bytes_used <= enc->qpe_cur_max_capacity) + return 1; + + for (entry = STAILQ_FIRST(&enc->qpe_all_entries); entry != pinned_entry; + entry = STAILQ_NEXT(entry, ete_next_all)) + { + bytes_used -= ETE_SIZE(entry); + if (bytes_used <= enc->qpe_cur_max_capacity) + return 1; + } + + return 0; +} + + +static int +qenc_has_or_can_evict_at_least (struct lsqpack_enc *enc, size_t new_entry_size) +{ + const struct lsqpack_enc_table_entry *entry; + lsqpack_abs_id_t min_id; + size_t avail; + + avail = enc->qpe_cur_max_capacity - enc->qpe_cur_bytes_used; + if (avail >= new_entry_size) + return 1; + + min_id = qenc_min_reffed_id(enc); + + STAILQ_FOREACH(entry, &enc->qpe_all_entries, ete_next_all) + if ((min_id == 0 || entry->ete_id < min_id) + && entry->ete_id <= enc->qpe_max_acked_id) + { + avail += ETE_SIZE(entry); + if (avail >= new_entry_size) + return 1; + } + else + break; + + return avail >= new_entry_size; +} + + +static int +qenc_duplicable_entry (struct lsqpack_enc *enc, + const struct lsqpack_enc_table_entry *const entry) +{ + float fill, fraction; + unsigned off; + + if (!(enc->qpe_flags & LSQPACK_ENC_USE_DUP)) + return 0; + + fill = (float) (enc->qpe_cur_bytes_used + ETE_SIZE(entry)) + / (float) enc->qpe_cur_max_capacity; + if (fill < 0.8) + return 0; + + off = entry->ete_when_added_used + - (enc->qpe_dropped - entry->ete_when_added_dropped); + fraction = (float) off / (float) enc->qpe_cur_max_capacity; + return fraction < 0.2f + && qenc_has_or_can_evict_at_least(enc, ETE_SIZE(entry)); +} + + +static void +qenc_maybe_update_hinfo_min_max (struct lsqpack_header_info *hinfo, + lsqpack_abs_id_t dyn_id) +{ + if (HINFO_IDS_SET(hinfo)) + { + if (dyn_id > hinfo->qhi_max_id) + hinfo->qhi_max_id = dyn_id; + else if (dyn_id < hinfo->qhi_min_id) + hinfo->qhi_min_id = dyn_id; + } + else + { + hinfo->qhi_max_id = dyn_id; + hinfo->qhi_min_id = dyn_id; + } +} + + +static int +qenc_entry_is_draining (const struct lsqpack_enc *enc, + const struct lsqpack_enc_table_entry *entry) +{ + unsigned dist; + + dist = entry->ete_when_added_used + - (enc->qpe_dropped - entry->ete_when_added_dropped); + dist += enc->qpe_cur_max_capacity - enc->qpe_cur_bytes_used; + return dist < enc->qpe_cur_max_capacity / 4; +} + + +static int +qenc_can_risk (const struct lsqpack_enc *enc) +{ + return enc->qpe_cur_header.other_at_risk + || enc->qpe_cur_streams_at_risk < enc->qpe_max_risked_streams + || (enc->qpe_cur_header.hinfo + && qenc_hinfo_at_risk(enc, enc->qpe_cur_header.hinfo)) + ; +} + + +/* Returns number of bytes written to enc_buf if an entry was duplicated, 0 if + * it wasn't. + */ +static unsigned +qenc_dup_draining (struct lsqpack_enc *enc, unsigned char *enc_buf, + size_t enc_buf_sz) +{ + struct lsqpack_enc_table_entry *entry, *candidate, *next; + unsigned char *dst; + + if (enc_buf_sz == 0 + || !(enc->qpe_flags & LSQPACK_ENC_USE_DUP) + || enc->qpe_ins_count == LSQPACK_MAX_ABS_ID) + return 0; + if ((enc->qpe_table_nelem_ema || qenc_can_risk(enc)) + && enc->qpe_table_nelem_ema < enc->qpe_header_count_ema) + return 0; + + candidate = NULL; + STAILQ_FOREACH(entry, &enc->qpe_all_entries, ete_next_all) + { + if (!qenc_entry_is_draining(enc, entry)) + break; + /* + if (ETE_SIZE(entry) > enc->qpe_cur_max_capacity / 4) + continue; + if (ETE_SIZE(entry) < DYNAMIC_ENTRY_OVERHEAD + 20) + continue; + */ + if (candidate && ETE_SIZE(entry) < ETE_SIZE(candidate)) + continue; + for (next = STAILQ_NEXT(entry, ete_next_nameval); next; + next = STAILQ_NEXT(next, ete_next_nameval)) + if (next->ete_nameval_hash == entry->ete_nameval_hash + && next->ete_name_len == entry->ete_name_len + && next->ete_val_len == entry->ete_val_len + && 0 == memcmp(ETE_NAME(next), ETE_NAME(entry), + next->ete_name_len) + && 0 == memcmp(ETE_VALUE(next), ETE_VALUE(entry), + next->ete_val_len)) + break; + if (!next + && qenc_hist_seen(enc, HE_NAMEVAL, entry->ete_nameval_hash) + && qenc_has_or_can_evict_at_least(enc, ETE_SIZE(entry))) + candidate = entry; + } + + if (!candidate) + return 0; + + E_DEBUG("dup draining"); + + *enc_buf = 0; + dst = lsqpack_enc_int(enc_buf, enc_buf + enc_buf_sz, + enc->qpe_ins_count - candidate->ete_id, 5); + if (dst <= enc_buf) + return 0; + + entry = lsqpack_enc_push_entry(enc, candidate->ete_name_hash, + candidate->ete_nameval_hash, ETE_NAME(candidate), + candidate->ete_name_len, ETE_VALUE(candidate), + candidate->ete_val_len); + if (!entry) + return 0; + + return (unsigned) (dst - enc_buf); +} + + +/* Clang does not produce incorrect "may be used uninitialized" warnings + * in the function below, but gcc 5.4.0 does. + */ +#ifdef __clang__ +#define USE_USELESS_INITIALIZATION 0 +#else +#define USE_USELESS_INITIALIZATION 1 +#endif + + +enum lsqpack_enc_status +lsqpack_enc_encode (struct lsqpack_enc *enc, + unsigned char *enc_buf, size_t *enc_sz_p, + unsigned char *hea_buf, size_t *hea_sz_p, + const struct lsxpack_header *xhdr, + enum lsqpack_enc_flags flags) +{ + unsigned char *const enc_buf_end = enc_buf + *enc_sz_p; + unsigned char *const hea_buf_end = hea_buf + *hea_sz_p; + struct lsqpack_enc_table_entry *entry, *new_entry; + struct lsqpack_enc_table_entry *candidates[2]; + struct encode_program prog; + int index, risk, use_dyn_table, static_id, enough_room, seen_nameval; + int update_hist; + unsigned name_hash, nameval_hash, buckno; + + size_t enc_sz, hea_sz, sz; + unsigned char *dst; + lsqpack_abs_id_t id; + unsigned n_cand; + int r; + + const char *const name = lsxpack_header_get_name(xhdr); + const char *const value = lsxpack_header_get_value(xhdr); + const unsigned name_len = xhdr->name_len; + const unsigned value_len = xhdr->val_len; + + E_DEBUG("encode `%.*s': `%.*s'", (int) name_len, name, + (int) value_len, value); + + /* Encoding always outputs at least a byte to the header block. If + * no bytes are available, encoding cannot proceed. + */ + if (hea_buf == hea_buf_end) + return LQES_NOBUF_HEAD; + + seen_nameval = -1; + + if (xhdr->flags & LSXPACK_NEVER_INDEX) + flags |= LQEF_NEVER_INDEX; + + /* Look for a full match in the static table */ + if ((xhdr->flags & (LSXPACK_QPACK_IDX|LSXPACK_VAL_MATCHED)) + != (LSXPACK_QPACK_IDX|LSXPACK_VAL_MATCHED)) + { + /* Hash calculation is delayed until we really have to do it */ + if (xhdr->flags & LSXPACK_NAME_HASH) + name_hash = xhdr->name_hash; + else if (xhdr->flags & LSXPACK_QPACK_IDX) + name_hash = name_hashes[ xhdr->qpack_index ]; + else + name_hash = XXH32(name, name_len, LSQPACK_XXH_SEED); + if (xhdr->flags & LSXPACK_NAMEVAL_HASH) + nameval_hash = xhdr->nameval_hash; + else + nameval_hash = XXH32(value, value_len, name_hash); + E_DEBUG("name hash: 0x%X; nameval hash: 0x%X", name_hash, nameval_hash); + static_id = find_in_static_full(nameval_hash, name, name_len, value, + value_len); + } + else + { + static_id = xhdr->qpack_index; + goto static_nameval_match; + } + if (static_id >= 0) + { + static_nameval_match: + id = static_id; + prog = (struct encode_program) { + .ep_enc_action = EEA_NONE, + .ep_hea_action = EHA_INDEXED_STAT, + .ep_tab_action = ETA_NOOP, + .ep_flags = 0, + }; + update_hist = 0; +#if USE_USELESS_INITIALIZATION + nameval_hash = 0; + name_hash = 0; + use_dyn_table = 0; + risk = 0; + entry = NULL; + index = 0; +#endif + goto execute_program; + } +#if USE_USELESS_INITIALIZATION + else + id = 0; +#endif + + use_dyn_table = !(flags & LQEF_NO_DYN) + && enc_use_dynamic_table(enc) + ; + + index = !(flags & (LQEF_NO_INDEX|LQEF_NEVER_INDEX|LQEF_NO_DYN)) + && use_dyn_table + && enc->qpe_ins_count < LSQPACK_MAX_ABS_ID + ; + + risk = qenc_can_risk(enc); + + /* Add header to history if it exists. Defer updating history until we + * know the function will return success. + */ + update_hist = enc->qpe_hist_els != NULL && !(flags & LQEF_NO_HIST_UPD); + + restart: + /* Look for a full match in the dynamic table */ + if (use_dyn_table) + { + buckno = BUCKNO(enc->qpe_nbits, nameval_hash); + n_cand = 0; + STAILQ_FOREACH(entry, &enc->qpe_buckets[buckno].by_nameval, + ete_next_nameval) + if (nameval_hash == entry->ete_nameval_hash && + name_len == entry->ete_name_len && + value_len == entry->ete_val_len && + 0 == memcmp(name, ETE_NAME(entry), name_len) && + 0 == memcmp(value, ETE_VALUE(entry), value_len)) + { + candidates[ n_cand++ ] = entry; + if (n_cand >= sizeof(candidates) / sizeof(candidates[0])) + break; + } + + switch (n_cand) + { + case 1: + entry = candidates[0]; + id = entry->ete_id; + if ((risk || entry->ete_id <= enc->qpe_max_acked_id) && index && qenc_duplicable_entry(enc, entry)) + { + if (risk) + prog = (struct encode_program) { + .ep_enc_action = EEA_DUP, + .ep_hea_action = EHA_INDEXED_NEW, + .ep_tab_action = ETA_NEW, + .ep_flags = EPF_REF_FOUND | EPF_REF_NEW, + }; + else if (!qenc_entry_is_draining(enc, entry)) + { + if (qenc_safe_to_dup(enc, entry)) + prog = (struct encode_program) { + .ep_enc_action = EEA_DUP, + .ep_hea_action = EHA_INDEXED_DYN, + .ep_tab_action = ETA_NEW, + .ep_flags = EPF_REF_FOUND, + }; + else + prog = (struct encode_program) { + .ep_enc_action = EEA_NONE, + .ep_hea_action = EHA_INDEXED_DYN, + .ep_tab_action = ETA_NOOP, + .ep_flags = EPF_REF_FOUND, + }; + } + else + break; + } + else if ((risk || entry->ete_id <= enc->qpe_max_acked_id) + && !qenc_entry_is_draining(enc, entry)) + prog = (struct encode_program) { + .ep_enc_action = EEA_NONE, + .ep_hea_action = EHA_INDEXED_DYN, + .ep_tab_action = ETA_NOOP, + .ep_flags = EPF_REF_FOUND, + }; + else + break; + goto execute_program; + case 2: + /* The order holds due to the way hash table is structured: */ + assert(candidates[1]->ete_id > candidates[0]->ete_id); + if (risk) + /* TODO: make this smarter? Perhaps it may be preferable + * to use an acknowledged entry if it is not in the "about + * to be evicted" range? + */ + entry = candidates[1]; + else if (candidates[1]->ete_id <= enc->qpe_max_acked_id) + entry = candidates[1]; + else if (candidates[0]->ete_id <= enc->qpe_max_acked_id + && !qenc_entry_is_draining(enc, candidates[0])) + entry = candidates[0]; + else + break; + id = entry->ete_id; + prog = (struct encode_program) { + .ep_enc_action = EEA_NONE, + .ep_hea_action = EHA_INDEXED_DYN, + .ep_tab_action = ETA_NOOP, + .ep_flags = EPF_REF_FOUND, + }; + goto execute_program; + } + } +#if USE_USELESS_INITIALIZATION + else + { + entry = NULL; + n_cand = 0; + } +#endif + + /* Look for name-only match in the static table */ + if (xhdr->flags & LSXPACK_QPACK_IDX) + { + static_id = xhdr->qpack_index; + goto static_name_match; + } + else + static_id = lsqpack_find_in_static_headers(name_hash, name, name_len); + if (static_id >= 0) + { + static_name_match: + id = static_id; + if (index && (enough_room = qenc_has_or_can_evict_at_least(enc, + ENTRY_COST(name_len, value_len)), enough_room != 0)) + { + static const struct encode_program programs[2][2][2] = { + [0][0][0] = { EEA_NONE, EHA_LIT_WITH_NAME_STAT, ETA_NOOP, 0, }, + [0][0][1] = { EEA_NONE, EHA_LIT_WITH_NAME_STAT, ETA_NOOP, 0, }, + [0][1][0] = { EEA_NONE, EHA_LIT_WITH_NAME_STAT, ETA_NOOP, 0, }, + [0][1][1] = { EEA_NONE, EHA_LIT_WITH_NAME_STAT, ETA_NOOP, 0, }, + [1][0][0] = { EEA_INS_NAMEREF_STATIC, EHA_LIT_WITH_NAME_STAT, ETA_NEW, 0, }, + [1][0][1] = { EEA_NONE, EHA_LIT_WITH_NAME_STAT, ETA_NOOP, 0, }, + [1][1][0] = { EEA_INS_NAMEREF_STATIC, EHA_INDEXED_NEW, ETA_NEW, EPF_REF_NEW, }, + [1][1][1] = { EEA_NONE, EHA_LIT_WITH_NAME_STAT, ETA_NOOP, 0, }, /* Invalid state */ + }; + seen_nameval = qenc_hist_seen(enc, HE_NAMEVAL, nameval_hash); + prog = programs[seen_nameval][risk][use_dyn_table && n_cand > 0]; + } + else + prog = (struct encode_program) { EEA_NONE, EHA_LIT_WITH_NAME_STAT, ETA_NOOP, 0, }; + goto execute_program; + } + + /* Look for name-only match in the dynamic table */ + /* TODO We may want to duplicate a dynamic entry whose name matches. + * In that case, we'd follow similar logic as above: select candidates + * and pick among them based on some factors. + */ + enough_room = -1; + if (use_dyn_table) + { + buckno = BUCKNO(enc->qpe_nbits, name_hash); + STAILQ_FOREACH(entry, &enc->qpe_buckets[buckno].by_name, ete_next_name) + if (name_hash == entry->ete_name_hash && + !qenc_entry_is_draining(enc, entry) && + name_len == entry->ete_name_len && + (risk || entry->ete_id <= enc->qpe_max_acked_id) && + (!index || + (enough_room < 0 ? + (enough_room = qenc_has_or_can_evict_at_least(enc, + ENTRY_COST(name_len, value_len))) + : enough_room)) + && + 0 == memcmp(name, ETE_NAME(entry), name_len)) + { + id = entry->ete_id; + if (index && enough_room && risk + && (seen_nameval < 0 ? (seen_nameval + = qenc_hist_seen(enc, HE_NAMEVAL, nameval_hash)) : seen_nameval)) + prog = (struct encode_program) { EEA_INS_NAMEREF_DYNAMIC, + EHA_INDEXED_NEW, ETA_NEW, + EPF_REF_NEW|EPF_REF_FOUND, }; + else + prog = (struct encode_program) { EEA_NONE, + EHA_LIT_WITH_NAME_DYN, ETA_NOOP, EPF_REF_FOUND, }; + goto execute_program; + } + } + + /* No matches found */ + if (index + && (seen_nameval < 0 ? (seen_nameval + = qenc_hist_seen(enc, HE_NAMEVAL, nameval_hash)) : seen_nameval) + && (enough_room < 0 ? + (enough_room = qenc_has_or_can_evict_at_least(enc, + ENTRY_COST(name_len, value_len))) : enough_room)) + { + static const struct encode_program programs[2][2] = { + [0][0] = { EEA_INS_LIT, EHA_LIT, ETA_NEW, 0, }, + [0][1] = { EEA_NONE, EHA_LIT, ETA_NOOP, 0, }, + [1][0] = { EEA_INS_LIT, EHA_INDEXED_NEW, ETA_NEW, EPF_REF_NEW, }, + [1][1] = { EEA_NONE, EHA_LIT, ETA_NOOP, 0, }, /* Invalid state */ + }; + prog = programs[risk][use_dyn_table && n_cand > 0]; + } + else if (index && qenc_hist_seen(enc, HE_NAME, name_hash) + && qenc_has_or_can_evict_at_least(enc, ENTRY_COST(name_len, 0))) + { + static const struct encode_program programs[2] = { + [0] = { EEA_INS_LIT_NAME, EHA_LIT, ETA_NEW_NAME, 0, }, + [1] = { EEA_INS_LIT_NAME, EHA_LIT_WITH_NAME_NEW, ETA_NEW_NAME, EPF_REF_NEW, }, + }; + prog = programs[ risk ]; + } + else + prog = (struct encode_program) { EEA_NONE, EHA_LIT, ETA_NOOP, 0, }; + + execute_program: + if (((1 << prog.ep_enc_action) & + ((1 << EEA_INS_NAMEREF_STATIC) | + (1 << EEA_INS_NAMEREF_DYNAMIC) | + (1 << EEA_INS_LIT) | + (1 << EEA_INS_LIT_NAME))) + && + ((1 << prog.ep_hea_action) & + ((1 << EHA_LIT) | + (1 << EHA_LIT_WITH_NAME_STAT) | + (1 << EHA_LIT_WITH_NAME_DYN) | + (1 << EHA_LIT_WITH_NAME_NEW)))) + { + unsigned bytes_out, bytes_in; + bytes_out = enc->qpe_bytes_out + + qenc_enc_str_size((unsigned char *) name, name_len) + + qenc_enc_str_size((unsigned char *) value, value_len) + ; + bytes_in = enc->qpe_bytes_in + name_len + value_len; + if ((float) bytes_out / (float) bytes_in > 0.95) + { + assert(index); + index = 0; + E_DEBUG("double lit would result in ratio > 0.95, reset"); + goto restart; + } + } + + E_DEBUG("program: %s; %s; %s; flags: 0x%X", + eea2str[ prog.ep_enc_action ], eha2str[ prog.ep_hea_action ], + eta2str[ prog.ep_tab_action ], prog.ep_flags); + switch (prog.ep_enc_action) + { + case EEA_DUP: + if (enc_buf >= enc_buf_end) + return LQES_NOBUF_ENC; + dst = enc_buf; + *dst = 0; + dst = lsqpack_enc_int(dst, enc_buf_end, enc->qpe_ins_count - id, 5); + if (dst <= enc_buf) + return LQES_NOBUF_ENC; + enc_sz = dst - enc_buf; + break; + case EEA_INS_NAMEREF_STATIC: + if (enc_buf >= enc_buf_end) + return LQES_NOBUF_ENC; + dst = enc_buf; + *dst = 0x80 | 0x40; + dst = lsqpack_enc_int(dst, enc_buf_end, id, 6); + if (dst <= enc_buf) + return LQES_NOBUF_ENC; + r = lsqpack_enc_enc_str(7, dst, enc_buf_end - dst, + (const unsigned char *) value, value_len); + if (r < 0) + return LQES_NOBUF_ENC; + dst += (unsigned) r; + enc_sz = dst - enc_buf; + break; + case EEA_INS_NAMEREF_DYNAMIC: + if (enc_buf >= enc_buf_end) + return LQES_NOBUF_ENC; + dst = enc_buf; + *dst = 0x80; + dst = lsqpack_enc_int(dst, enc_buf_end, enc->qpe_ins_count - id, 6); + if (dst <= enc_buf) + return LQES_NOBUF_ENC; + r = lsqpack_enc_enc_str(7, dst, enc_buf_end - dst, + (const unsigned char *) value, value_len); + if (r < 0) + return LQES_NOBUF_ENC; + dst += (unsigned) r; + enc_sz = dst - enc_buf; + break; + case EEA_INS_LIT: + case EEA_INS_LIT_NAME: + if (enc_buf >= enc_buf_end) + return LQES_NOBUF_ENC; + dst = enc_buf; + *dst = 0x40; + r = lsqpack_enc_enc_str(5, dst, enc_buf_end - dst, + (const unsigned char *) name, name_len); + if (r < 0) + return LQES_NOBUF_ENC; + dst += r; + r = lsqpack_enc_enc_str(7, dst, enc_buf_end - dst, + (const unsigned char *) value, + prog.ep_enc_action == EEA_INS_LIT ? value_len : 0); + if (r < 0) + return LQES_NOBUF_ENC; + dst += r; + enc_sz = dst - enc_buf; + break; + case EEA_NONE: default: + assert(EEA_NONE == prog.ep_enc_action); + enc_sz = 0; + break; + } + + dst = hea_buf; + switch (prog.ep_hea_action) + { + case EHA_INDEXED_STAT: + *dst = 0x80 | 0x40; + dst = lsqpack_enc_int(dst, hea_buf_end, id, 6); + if (dst <= hea_buf) + return LQES_NOBUF_HEAD; + hea_sz = dst - hea_buf; + break; + case EHA_INDEXED_NEW: + id = enc->qpe_ins_count + 1; + post_base_idx: + *dst = 0x10; + assert(id > enc->qpe_cur_header.base_idx); + dst = lsqpack_enc_int(dst, hea_buf_end, + id - enc->qpe_cur_header.base_idx - 1, 4); + if (dst <= hea_buf) + return LQES_NOBUF_HEAD; + hea_sz = dst - hea_buf; + break; + case EHA_INDEXED_DYN: + if (id > enc->qpe_cur_header.base_idx) + goto post_base_idx; + *dst = 0x80; + dst = lsqpack_enc_int(dst, hea_buf_end, + enc->qpe_cur_header.base_idx - id, 6); + if (dst <= hea_buf) + return LQES_NOBUF_HEAD; + hea_sz = dst - hea_buf; + break; + case EHA_LIT: + *dst = 0x20 + | (((flags & LQEF_NEVER_INDEX) > 0) << 4) + ; + r = lsqpack_enc_enc_str(3, dst, hea_buf_end - dst, + (const unsigned char *) name, name_len); + if (r < 0) + return LQES_NOBUF_HEAD; + dst += r; + r = lsqpack_enc_enc_str(7, dst, hea_buf_end - dst, + (const unsigned char *) value, value_len); + if (r < 0) + return LQES_NOBUF_HEAD; + dst += r; + hea_sz = dst - hea_buf; + break; + case EHA_LIT_WITH_NAME_NEW: + id = enc->qpe_ins_count + 1; + post_base_name_ref: + *dst = (((flags & LQEF_NEVER_INDEX) > 0) << 3); + assert(id > enc->qpe_cur_header.base_idx); + dst = lsqpack_enc_int(dst, hea_buf_end, + id - enc->qpe_cur_header.base_idx - 1, 3); + if (dst <= hea_buf) + return LQES_NOBUF_HEAD; + r = lsqpack_enc_enc_str(7, dst, hea_buf_end - dst, + (const unsigned char *) value, value_len); + if (r < 0) + return LQES_NOBUF_HEAD; + dst += (unsigned) r; + hea_sz = dst - hea_buf; + break; + case EHA_LIT_WITH_NAME_DYN: + if (id > enc->qpe_cur_header.base_idx) + goto post_base_name_ref; + *dst = 0x40 + | (((flags & LQEF_NEVER_INDEX) > 0) << 5) + ; + dst = lsqpack_enc_int(dst, hea_buf_end, + enc->qpe_cur_header.base_idx - id, 4); + if (dst <= hea_buf) + return LQES_NOBUF_HEAD; + r = lsqpack_enc_enc_str(7, dst, hea_buf_end - dst, + (const unsigned char *) value, value_len); + if (r < 0) + return LQES_NOBUF_HEAD; + dst += (unsigned) r; + hea_sz = dst - hea_buf; + break; + case EHA_LIT_WITH_NAME_STAT: default: + assert(prog.ep_hea_action == EHA_LIT_WITH_NAME_STAT); + *dst = 0x40 + | (((flags & LQEF_NEVER_INDEX) > 0) << 5) + | 0x10 + ; + dst = lsqpack_enc_int(dst, hea_buf_end, id, 4); + if (dst <= hea_buf) + return LQES_NOBUF_HEAD; + r = lsqpack_enc_enc_str(7, dst, hea_buf_end - dst, + (const unsigned char *) value, value_len); + if (r < 0) + return LQES_NOBUF_HEAD; + dst += (unsigned) r; + hea_sz = dst - hea_buf; + break; + } + + switch (prog.ep_tab_action) + { + case ETA_NEW: + case ETA_NEW_NAME: + new_entry = lsqpack_enc_push_entry(enc, name_hash, nameval_hash, name, + name_len, value, prog.ep_tab_action == ETA_NEW ? value_len : 0); + if (!new_entry) + { /* Push can only fail due to inability to allocate memory. + * In this case, fall back on encoding without indexing. + */ + index = 0; + goto restart; + } + enc->qpe_cur_header.hinfo->qhi_bytes_inserted += ETE_SIZE(new_entry); + if (prog.ep_flags & EPF_REF_NEW) + { + ++new_entry->ete_n_reffd; + enc->qpe_cur_header.flags |= LSQECH_REF_NEW_ENTRIES; + if (HINFO_IDS_SET(enc->qpe_cur_header.hinfo)) + assert(new_entry->ete_id > enc->qpe_cur_header.hinfo->qhi_max_id); + qenc_maybe_update_hinfo_min_max(enc->qpe_cur_header.hinfo, + new_entry->ete_id); + } + break; + case ETA_NOOP: default: + assert(prog.ep_tab_action == ETA_NOOP); + break; + } + + if (prog.ep_flags & EPF_REF_FOUND) + { + ++entry->ete_n_reffd; + qenc_maybe_update_hinfo_min_max(enc->qpe_cur_header.hinfo, + entry->ete_id); + } + + qenc_remove_overflow_entries(enc); + + if (update_hist) + { + assert(enc->qpe_hist_els); + if (enc->qpe_cur_header.n_hdr_added_to_hist >= enc->qpe_hist_nels) + qenc_hist_update_size(enc, enc->qpe_hist_nels + 4); + qenc_hist_add(enc, name_hash, nameval_hash); + ++enc->qpe_cur_header.n_hdr_added_to_hist; + } + + while (sz = qenc_dup_draining(enc, enc_buf + enc_sz, + enc_buf_end - enc_buf - enc_sz), sz > 0) + { + enc_sz += sz; + qenc_remove_overflow_entries(enc); + } + + enc->qpe_bytes_in += name_len + value_len; + enc->qpe_bytes_out += (unsigned)(enc_sz + hea_sz); + if (enc->qpe_bytes_out > (1u << (sizeof(enc->qpe_bytes_out) * 8 - 1))) + { + enc->qpe_bytes_in = (int)((float) enc->qpe_bytes_in + / (float) enc->qpe_bytes_out * 1000); + enc->qpe_bytes_out = 1000; + E_DEBUG("reset bytes in/out counters, ratio: %.3f", + lsqpack_enc_ratio(enc)); + } + + *enc_sz_p = enc_sz; + *hea_sz_p = hea_sz; + return LQES_OK; +} + + +int +lsqpack_enc_set_max_capacity (struct lsqpack_enc *enc, unsigned capacity, + unsigned char *tsu_buf, size_t *tsu_buf_sz) +{ + unsigned char *p; + + if (capacity > enc->qpe_real_max_capacity) + { + errno = EINVAL; + return -1; + } + + if (capacity == enc->qpe_cur_max_capacity) + { + E_DEBUG("set_capacity: capacity stays unchanged at %u", capacity); + *tsu_buf_sz = 0; + return 0; + } + + if (!(tsu_buf && tsu_buf_sz)) + { + errno = EINVAL; + return -1; + } + p = tsu_buf; + *p = 0x20; + p = lsqpack_enc_int(p, tsu_buf + *tsu_buf_sz, capacity, 5); + if (p <= tsu_buf) + { + errno = ENOBUFS; + return -1; + } + *tsu_buf_sz = p - tsu_buf; + + E_DEBUG("maximum capacity goes from %u to %u", enc->qpe_cur_max_capacity, + capacity); + enc->qpe_cur_max_capacity = capacity; + qenc_remove_overflow_entries(enc); + return 0; +} + + +static void +qenc_update_risked_list (struct lsqpack_enc *enc) +{ + struct lsqpack_header_info *hinfo, *next; + + for (hinfo = TAILQ_FIRST(&enc->qpe_risked_hinfos); hinfo; hinfo = next) + { + next = TAILQ_NEXT(hinfo, qhi_next_risked); + if (!qenc_hinfo_at_risk(enc, hinfo)) + qenc_remove_from_risked_list(enc, hinfo); + } +} + + +static int +enc_proc_header_ack (struct lsqpack_enc *enc, uint64_t stream_id) +{ + struct lsqpack_header_info *hinfo; + + E_DEBUG("got Header Ack instruction, stream=%"PRIu64, stream_id); + if (stream_id > MAX_QUIC_STREAM_ID) + return -1; + + TAILQ_FOREACH(hinfo, &enc->qpe_all_hinfos, qhi_next_all) + if (stream_id == hinfo->qhi_stream_id) + break; + + /* + * XXX if an ACK comes in while a header is being encoded, it will not + * have any effect because the the `qhi_max_id` is 0 until the header + * encoding is finished (see enc_end_header()). + */ + + if (!hinfo) + return -1; + + if (hinfo->qhi_max_id > enc->qpe_max_acked_id) + { + qenc_remove_from_risked_list(enc, hinfo); + enc->qpe_max_acked_id = hinfo->qhi_max_id; + qenc_update_risked_list(enc); + E_DEBUG("max acked ID is now %u", enc->qpe_max_acked_id); + } + + enc_free_hinfo(enc, hinfo); + return 0; +} + + +static int +enc_proc_ici (struct lsqpack_enc *enc, uint64_t ins_count) +{ + lsqpack_abs_id_t max_acked; + + E_DEBUG("got ICI instruction, count=%"PRIu64, ins_count); + if (ins_count == 0) + { + E_INFO("ICI=0 is an error"); + return -1; + } + + if (ins_count > LSQPACK_MAX_ABS_ID) + { + /* We never insert this many */ + E_INFO("insertion count too high: %"PRIu64, ins_count); + return -1; + } + + max_acked = (lsqpack_abs_id_t) ins_count + enc->qpe_last_ici; + if (max_acked > enc->qpe_ins_count) + { + E_DEBUG("ICI: max_acked %u is larger than number of inserts %u", + max_acked, enc->qpe_ins_count); + return -1; + } + + if (max_acked > enc->qpe_max_acked_id) + { + enc->qpe_last_ici = max_acked; + enc->qpe_max_acked_id = max_acked; + E_DEBUG("max acked ID is now %u", enc->qpe_max_acked_id); + qenc_update_risked_list(enc); + } + else + { + E_DEBUG("duplicate ICI: %u", max_acked); + } + return 0; +} + + +static int +enc_proc_stream_cancel (struct lsqpack_enc *enc, uint64_t stream_id) +{ + struct lsqpack_header_info *hinfo, *next; + unsigned count; + + E_DEBUG("got Cancel Stream instruction; stream=%"PRIu64, stream_id); + + if (stream_id > MAX_QUIC_STREAM_ID) + { + E_INFO("Invalid stream ID %"PRIu64" in Cancel Stream", stream_id); + return -1; + } + + count = 0; + for (hinfo = TAILQ_FIRST(&enc->qpe_all_hinfos); hinfo; hinfo = next) + { + next = TAILQ_NEXT(hinfo, qhi_next_all); + if (hinfo->qhi_stream_id == stream_id) + { + E_DEBUG("cancel header block for stream %"PRIu64", seqno %u", + stream_id, hinfo->qhi_seqno); + if (qenc_hinfo_at_risk(enc, hinfo)) + qenc_remove_from_risked_list(enc, hinfo); + enc_free_hinfo(enc, hinfo); + ++count; + } + } + + E_DEBUG("cancelled %u header block%.*s of stream %"PRIu64, + count, count != 1, "s", stream_id); + return 0; +} + + +/* Assumption: we have at least one byte to work with */ +/* Return value: + * 0 OK + * -1 Out of input + * -2 Value cannot be represented as 64-bit integer (overflow) + */ +int +lsqpack_dec_int (const unsigned char **src_p, const unsigned char *src_end, + unsigned prefix_bits, uint64_t *value_p, + struct lsqpack_dec_int_state *state) +{ + const unsigned char *const orig_src = *src_p; + const unsigned char *src; + unsigned char prefix_max; + unsigned M, nread; + uint64_t val, B; + + src = *src_p; + + if (state->resume) + { + val = state->val; + M = state->M; + goto resume; + } + + prefix_max = (1 << prefix_bits) - 1; + val = *src++; + val &= prefix_max; + + if (val < prefix_max) + { + *src_p = src; + *value_p = val; + return 0; + } + + M = 0; + do + { + if (src < src_end) + { + resume: B = *src++; + val = val + ((B & 0x7f) << M); + M += 7; + } + else + { + nread = (state->resume ? state->nread : 0) + (unsigned)(src - orig_src); + if (nread < LSQPACK_UINT64_ENC_SZ) + { + state->val = val; + state->M = M; + state->nread = nread; + state->resume = 1; + return -1; + } + else + return -2; + } + } + while (B & 0x80); + + if (M <= 63 || (M == 70 && src[-1] <= 1 && (val & (1ull << 63)))) + { + *src_p = src; + *value_p = val; + return 0; + } + else + return -2; +} + + +typedef char unsigned_is_32bits[(sizeof(unsigned) == 4) ? 1 : -1]; + +/* TODO: rewrite as a standalone function */ +int +lsqpack_dec_int24 (const unsigned char **src_p, const unsigned char *src_end, + unsigned prefix_bits, unsigned *value_p, + struct lsqpack_dec_int_state *state) +{ + uint64_t val; + int r; + + r = lsqpack_dec_int(src_p, src_end, prefix_bits, &val, state); + if (r == 0 && val < (1u << 24)) + { + *value_p = (unsigned int) val; + return 0; + } + else if (r != 0) + return r; + else + return -2; +} + + +int +lsqpack_enc_decoder_in (struct lsqpack_enc *enc, + const unsigned char *buf, size_t buf_sz) +{ + const unsigned char *const end = buf + buf_sz; + uint64_t val; + int r; + unsigned prefix_bits = ~0u; /* This can be any value in a resumed call + * to the integer decoder -- it is only + * used in the first call. + */ + E_DEBUG("got %zu bytes of decoder stream", buf_sz); + + while (buf < end) + { + switch (enc->qpe_dec_stream_state.dec_int_state.resume) + { + case 0: + if (buf[0] & 0x80) /* Header ACK */ + { + prefix_bits = 7; + enc->qpe_dec_stream_state.handler = enc_proc_header_ack; + } + else if ((buf[0] & 0xC0) == 0) /* Insert Count Increment */ + { + prefix_bits = 6; + enc->qpe_dec_stream_state.handler = enc_proc_ici; + } + else /* Stream Cancellation */ + { + assert((buf[0] & 0xC0) == 0x40); + prefix_bits = 6; + enc->qpe_dec_stream_state.handler = enc_proc_stream_cancel; + } + FALL_THROUGH; + case 1: + r = lsqpack_dec_int(&buf, end, prefix_bits, &val, + &enc->qpe_dec_stream_state.dec_int_state); + if (r == 0) + { + r = enc->qpe_dec_stream_state.handler(enc, val); + if (r != 0) + return -1; + enc->qpe_dec_stream_state.dec_int_state.resume = 0; + } + else if (r == -1) + { + enc->qpe_dec_stream_state.dec_int_state.resume = 1; + return 0; + } + else + return -1; + break; + } + } + enc->qpe_bytes_out += (unsigned)buf_sz; + + return 0; +} + + +float +lsqpack_enc_ratio (const struct lsqpack_enc *enc) +{ + float ratio; + + if (enc->qpe_bytes_in) + { + ratio = (float) enc->qpe_bytes_out / (float) enc->qpe_bytes_in; + E_DEBUG("bytes out: %u; bytes in: %u, ratio: %.3f", + enc->qpe_bytes_out, enc->qpe_bytes_in, ratio); + return ratio; + } + else + return 0; +} + + +#ifdef LSQPACK_DEC_LOGGER_HEADER +#include LSQPACK_DEC_LOGGER_HEADER +#else +#define D_LOG(prefix, ...) do { \ + if (dec->qpd_logger_ctx) { \ + fprintf(dec->qpd_logger_ctx, prefix); \ + fprintf(dec->qpd_logger_ctx, __VA_ARGS__); \ + fprintf(dec->qpd_logger_ctx, "\n"); \ + } \ +} while (0) +#define D_DEBUG(...) D_LOG("qdec: debug: ", __VA_ARGS__) +#define D_INFO(...) D_LOG("qdec: info: ", __VA_ARGS__) +#define D_WARN(...) D_LOG("qdec: warn: ", __VA_ARGS__) +#define D_ERROR(...) D_LOG("qdec: error: ", __VA_ARGS__) +#endif + + +/* Dynamic table entry: */ +struct lsqpack_dec_table_entry +{ + unsigned dte_name_len; + unsigned dte_val_len; + unsigned dte_refcnt; + unsigned dte_name_hash; + unsigned dte_nameval_hash; + unsigned dte_name_idx; + enum { + DTEF_NAME_HASH = 1 << 0, + DTEF_NAMEVAL_HASH = 1 << 1, + DTEF_NAME_IDX = 1 << 2, + } dte_flags; + char dte_buf[0]; /* Contains both name and value */ +}; + +#define DTE_NAME(dte) ((dte)->dte_buf) +#define DTE_VALUE(dte) (&(dte)->dte_buf[(dte)->dte_name_len]) +#define DTE_SIZE(dte) ENTRY_COST((dte)->dte_name_len, (dte)->dte_val_len) + +enum +{ + HPACK_HUFFMAN_FLAG_ACCEPTED = 0x01, + HPACK_HUFFMAN_FLAG_SYM = 0x02, + HPACK_HUFFMAN_FLAG_FAIL = 0x04, +}; + + +#if LSQPACK_DEVEL_MODE +# define STATIC +#else +# define STATIC static +#endif + +STATIC unsigned +ringbuf_count (const struct lsqpack_ringbuf *rbuf) +{ + if (rbuf->rb_nalloc) + { + if (rbuf->rb_head >= rbuf->rb_tail) + return rbuf->rb_head - rbuf->rb_tail; + else + return rbuf->rb_nalloc - (rbuf->rb_tail - rbuf->rb_head); + } + else + return 0; +} + + +STATIC int +ringbuf_full (const struct lsqpack_ringbuf *rbuf) +{ + return rbuf->rb_nalloc == 0 + || (rbuf->rb_head + 1) % rbuf->rb_nalloc == rbuf->rb_tail; +} + + +STATIC int +ringbuf_empty (const struct lsqpack_ringbuf *rbuf) +{ + return rbuf->rb_head == rbuf->rb_tail; +} + + +struct ringbuf_iter +{ + const struct lsqpack_ringbuf *rbuf; + unsigned next, end; +}; + + +STATIC void * +ringbuf_iter_next (struct ringbuf_iter *iter) +{ + void *el; + + if (iter->next != iter->rbuf->rb_head) + { + el = iter->rbuf->rb_els[ iter->next ]; + iter->next = (iter->next + 1) % iter->rbuf->rb_nalloc; + return el; + } + else + return NULL; +} + + +STATIC void * +ringbuf_iter_first (struct ringbuf_iter *iter, + const struct lsqpack_ringbuf *rbuf) +{ + if (!ringbuf_empty(rbuf)) + { + iter->rbuf = rbuf; + iter->next = rbuf->rb_tail; + return ringbuf_iter_next(iter); + } + else + return NULL; +} + + +static void +ringbuf_cleanup (struct lsqpack_ringbuf *rbuf) +{ + free(rbuf->rb_els); + memset(rbuf, 0, sizeof(*rbuf)); +} + + +static void * +ringbuf_get_head (const struct lsqpack_ringbuf *rbuf, unsigned off) +{ + unsigned i; + + i = (rbuf->rb_nalloc + rbuf->rb_head - off) % rbuf->rb_nalloc; + return rbuf->rb_els[i]; +} + + +static void * +ringbuf_advance_tail (struct lsqpack_ringbuf *rbuf) +{ + void *el; + + el = rbuf->rb_els[rbuf->rb_tail]; + rbuf->rb_tail = (rbuf->rb_tail + 1) % rbuf->rb_nalloc; + return el; +} + + +static int +ringbuf_add (struct lsqpack_ringbuf *rbuf, void *el) +{ + void **els; + unsigned count; + + if (!ringbuf_full(rbuf)) + { + insert: + rbuf->rb_els[ rbuf->rb_head ] = el; + rbuf->rb_head = (rbuf->rb_head + 1) % rbuf->rb_nalloc; + return 0; + } + + if (rbuf->rb_nalloc) + { + els = malloc(rbuf->rb_nalloc * 2 * sizeof(rbuf->rb_els[0])); + if (els) + { + if (rbuf->rb_head >= rbuf->rb_tail) + { + count = rbuf->rb_head - rbuf->rb_tail + 1; + memcpy(els, rbuf->rb_els + rbuf->rb_tail, + count * sizeof(rbuf->rb_els[0])); + rbuf->rb_tail = 0; + rbuf->rb_head = count - 1; + } + else + { + memcpy(els, rbuf->rb_els, + (rbuf->rb_head + 1) * sizeof(rbuf->rb_els[0])); + memcpy(els + rbuf->rb_nalloc + rbuf->rb_tail, + rbuf->rb_els + rbuf->rb_tail, + (rbuf->rb_nalloc - rbuf->rb_tail) + * sizeof(rbuf->rb_els[0])); + rbuf->rb_tail += rbuf->rb_nalloc; + + } + free(rbuf->rb_els); + rbuf->rb_els = els; + rbuf->rb_nalloc *= 2; + goto insert; + } + return -1; + } + else + { + /* First time */ + rbuf->rb_els = malloc(4 * sizeof(rbuf->rb_els[0])); + if (rbuf->rb_els) + { + rbuf->rb_nalloc = 4; + goto insert; + } + return -1; + } +} + + +#define ID_MINUS(a, b) ( (dec)->qpd_max_entries ? \ + ((a) + (dec)->qpd_max_entries * 2 - (b)) % ((dec)->qpd_max_entries * 2) : 0) + +#define ID_PLUS(a, b) ( (dec)->qpd_max_entries ? \ + ((a) + (b)) % ((dec)->qpd_max_entries * 2) : 0 ) + +static struct lsqpack_dec_table_entry * +qdec_get_table_entry_rel (const struct lsqpack_dec *dec, + lsqpack_abs_id_t relative_idx) +{ + ++relative_idx; + if (ringbuf_count(&dec->qpd_dyn_table) >= relative_idx) + return ringbuf_get_head(&dec->qpd_dyn_table, relative_idx); + else + return NULL; +} + + +static struct lsqpack_dec_table_entry * +qdec_get_table_entry_abs (const struct lsqpack_dec *dec, + lsqpack_abs_id_t abs_idx) +{ + unsigned off; + + off = ID_MINUS(dec->qpd_last_id, abs_idx); + return qdec_get_table_entry_rel(dec, off); +} + + +void +lsqpack_dec_init (struct lsqpack_dec *dec, void *logger_ctx, + unsigned dyn_table_size, unsigned max_risked_streams, + const struct lsqpack_dec_hset_if *dh_if, enum lsqpack_dec_opts opts) +{ + unsigned i; + memset(dec, 0, sizeof(*dec)); + dec->qpd_opts = opts; + dec->qpd_logger_ctx = logger_ctx; + dec->qpd_max_capacity = dyn_table_size; + dec->qpd_cur_max_capacity = dyn_table_size; + dec->qpd_max_entries = dec->qpd_max_capacity / DYNAMIC_ENTRY_OVERHEAD; + dec->qpd_last_id = dec->qpd_max_entries * 2 - 1; + dec->qpd_largest_known_id = dec->qpd_max_entries * 2 - 1; + dec->qpd_max_risked_streams = max_risked_streams; + dec->qpd_dh_if = dh_if; + TAILQ_INIT(&dec->qpd_hbrcs); + for (i = 0; i < (1 << LSQPACK_DEC_BLOCKED_BITS); ++i) + TAILQ_INIT(&dec->qpd_blocked_headers[i]); + D_DEBUG("initialized. max capacity=%u; max risked streams=%u", + dec->qpd_max_capacity, dec->qpd_max_risked_streams); +} + + +static void +qdec_decref_entry (struct lsqpack_dec_table_entry *entry) +{ + --entry->dte_refcnt; + if (0 == entry->dte_refcnt) + free(entry); +} + + +enum { + DEI_NEXT_INST, + DEI_WINR_READ_NAME_IDX, + DEI_WINR_BEGIN_READ_VAL_LEN, + DEI_WINR_READ_VAL_LEN, + DEI_WINR_READ_VALUE_PLAIN, + DEI_WINR_READ_VALUE_HUFFMAN, + DEI_DUP_READ_IDX, + DEI_SIZE_UPD_READ_IDX, + DEI_WONR_READ_NAME_LEN, + DEI_WONR_READ_NAME_HUFFMAN, + DEI_WONR_READ_NAME_PLAIN, + DEI_WONR_BEGIN_READ_VAL_LEN, + DEI_WONR_READ_VAL_LEN, + DEI_WONR_READ_VALUE_HUFFMAN, + DEI_WONR_READ_VALUE_PLAIN, +}; + +struct header_block_read_ctx +{ + TAILQ_ENTRY(header_block_read_ctx) hbrc_next_all, + hbrc_next_blocked; + void *hbrc_hblock; + uint64_t hbrc_stream_id; + size_t hbrc_orig_size; /* To report error offset */ + size_t hbrc_size; + lsqpack_abs_id_t hbrc_largest_ref; /* Parsed from prefix */ + lsqpack_abs_id_t hbrc_base_index; /* Parsed from prefix */ + unsigned hbrc_header_count; + + struct { + struct lsxpack_header *xhdr; /* Current header */ + enum { + XOUT_NAME, /* Writing name */ + XOUT_VALUE, /* Writing value */ + } state; + unsigned off; /* How much has been written */ + } hbrc_out; + + /* There are two parsing phases: reading the prefix and reading the + * instruction stream. + */ + enum lsqpack_read_header_status (*hbrc_parse) (struct lsqpack_dec *, + struct header_block_read_ctx *, const unsigned char *, size_t); + + enum { + HBRC_LARGEST_REF_READ = 1 << 0, + HBRC_LARGEST_REF_SET = 1 << 1, /* hbrc_largest_ref is an actual ID */ + HBRC_BLOCKED = 1 << 2, + HBRC_DINST = 1 << 3, + HBRC_ON_LIST = 1 << 4, +#define LARGEST_USED_SHIFT 5 + HBRC_LARGEST_REF_USED = 1 << LARGEST_USED_SHIFT, + HBRC_DYN_USED_IN_ERR = 1 << 6, + } hbrc_flags; + + struct hbrc_buf { + const unsigned char *buf; + size_t sz; + size_t off; + } hbrc_buf; + + union { + struct { + enum { + PREFIX_STATE_BEGIN_READING_LARGEST_REF, + PREFIX_STATE_READ_LARGEST_REF, + PREFIX_STATE_BEGIN_READING_BASE_IDX, + PREFIX_STATE_READ_DELTA_BASE_IDX, + } state; + union { + /* Required Insert Count */ + struct { + struct lsqpack_dec_int_state dec_int_state; + uint64_t value; + } ric; + /* Delta Base */ + struct { + struct lsqpack_dec_int_state dec_int_state; + uint64_t value; + int sign; + } delb; + } u; + } prefix; + struct { + enum { + DATA_STATE_NEXT_INSTRUCTION, + DATA_STATE_READ_IHF_IDX, + DATA_STATE_READ_IPBI_IDX, + DATA_STATE_READ_LFINR_IDX, + DATA_STATE_BEGIN_READ_VAL_LEN, + DATA_STATE_READ_VAL_LEN, + DATA_STATE_READ_VAL_HUFFMAN, + DATA_STATE_READ_VAL_PLAIN, + DATA_STATE_READ_LFONR_NAME_LEN, + DATA_STATE_READ_NAME_HUFFMAN, + DATA_STATE_READ_NAME_PLAIN, + DATA_STATE_READ_LFPBNR_IDX, + DATA_STATE_BEGIN_READ_LFPBNR_VAL_LEN, + DATA_STATE_READ_LFPBNR_VAL_LEN, + } state; + + /* We decode one string at a time, header name or header value. */ + unsigned left; /* Left to read */ + int is_static; + int is_never; + int is_huffman; + struct lsqpack_dec_int_state dec_int_state; + struct lsqpack_huff_decode_state dec_huff_state; + } data; + } hbrc_parse_ctx_u; +}; + + +static enum lsqpack_read_header_status +parse_header_data (struct lsqpack_dec *, + struct header_block_read_ctx *, const unsigned char *, size_t); + + +float +lsqpack_dec_ratio (const struct lsqpack_dec *dec) +{ + float ratio; + + if (dec->qpd_bytes_out) + { + ratio = (float) dec->qpd_bytes_in / (float) dec->qpd_bytes_out; + D_DEBUG("bytes in: %u; bytes out: %u, ratio: %.3f", + dec->qpd_bytes_out, dec->qpd_bytes_in, ratio); + return ratio; + } + else + return 0; +} + + +void +lsqpack_dec_cleanup (struct lsqpack_dec *dec) +{ + struct lsqpack_dec_table_entry *entry; + struct header_block_read_ctx *read_ctx, *next_read_ctx; + + for (read_ctx = TAILQ_FIRST(&dec->qpd_hbrcs); read_ctx; + read_ctx = next_read_ctx) + { + next_read_ctx = TAILQ_NEXT(read_ctx, hbrc_next_all); + free(read_ctx); + } + + if (dec->qpd_enc_state.resume >= DEI_WINR_READ_NAME_IDX + && dec->qpd_enc_state.resume <= DEI_WINR_READ_VALUE_HUFFMAN) + { + if (dec->qpd_enc_state.ctx_u.with_namref.entry) + free(dec->qpd_enc_state.ctx_u.with_namref.entry); + } + else if (dec->qpd_enc_state.resume >= DEI_WONR_READ_NAME_LEN + && dec->qpd_enc_state.resume <= DEI_WONR_READ_VALUE_PLAIN) + { + if (dec->qpd_enc_state.ctx_u.wo_namref.entry) + free(dec->qpd_enc_state.ctx_u.wo_namref.entry); + } + + while (!ringbuf_empty(&dec->qpd_dyn_table)) + { + entry = ringbuf_advance_tail(&dec->qpd_dyn_table); + qdec_decref_entry(entry); + } + ringbuf_cleanup(&dec->qpd_dyn_table); + D_DEBUG("cleaned up"); +} + + +static void +qdec_maybe_update_entry_hashes (const struct lsqpack_dec *dec, + struct lsqpack_dec_table_entry *entry) +{ + if ((dec->qpd_opts & (LSQPACK_DEC_OPT_HASH_NAME + |LSQPACK_DEC_OPT_HASH_NAMEVAL)) + && !(entry->dte_flags & DTEF_NAME_HASH)) + { + entry->dte_flags |= DTEF_NAME_HASH; + entry->dte_name_hash = XXH32(DTE_NAME(entry), entry->dte_name_len, + LSQPACK_XXH_SEED); + } + if ((dec->qpd_opts & LSQPACK_DEC_OPT_HASH_NAMEVAL) + && !(entry->dte_flags & DTEF_NAMEVAL_HASH)) + { + assert(entry->dte_flags & DTEF_NAME_HASH); + entry->dte_flags |= DTEF_NAMEVAL_HASH; + entry->dte_nameval_hash = XXH32(DTE_VALUE(entry), entry->dte_val_len, + entry->dte_name_hash); + } +} + + +static int +header_out_static_entry (struct lsqpack_dec *dec, + struct header_block_read_ctx *read_ctx, uint64_t idx) +{ + struct lsxpack_header *xhdr; + size_t need, http1x; + char *dst; + int r; + + if (idx >= QPACK_STATIC_TABLE_SIZE) + return -1; + + http1x = !!(dec->qpd_opts & LSQPACK_DEC_OPT_HTTP1X) << 2; /* 0 or 4 */ + need = static_table[ idx ].name_len + static_table[ idx ].val_len + http1x; + xhdr = dec->qpd_dh_if->dhi_prepare_decode(read_ctx->hbrc_hblock, NULL, + need); + if (!xhdr) + return -1; + + xhdr->dec_overhead = (uint8_t)http1x; + xhdr->qpack_index = (uint8_t)idx; + xhdr->flags |= LSXPACK_VAL_MATCHED | LSXPACK_QPACK_IDX + | LSXPACK_NAME_HASH | LSXPACK_NAMEVAL_HASH; + xhdr->name_len = (lsxpack_strlen_t)static_table[ idx ].name_len; + xhdr->val_len = (lsxpack_strlen_t)(static_table[ idx ].val_len); + xhdr->name_hash = name_hashes[ idx ]; + xhdr->nameval_hash = nameval_hashes[ idx ]; + dst = xhdr->buf + xhdr->name_offset; + memcpy(dst, static_table[ idx ].name, static_table[ idx ].name_len); + dst += static_table[ idx ].name_len; + if (http1x) + { + memcpy(dst, ": ", 2); + dst += 2; + } + xhdr->val_offset = (lsxpack_offset_t)(dst - xhdr->buf); + memcpy(dst, static_table[ idx ].val, static_table[ idx ].val_len); + dst += static_table[ idx ].val_len; + if (http1x) + memcpy(dst, "\r\n", 2); + r = dec->qpd_dh_if->dhi_process_header(read_ctx->hbrc_hblock, xhdr); + if (r == 0) + dec->qpd_bytes_out += static_table[ idx ].name_len + + static_table[ idx ].val_len; + return r; +} + + +static int +header_out_dynamic_entry (struct lsqpack_dec *dec, + struct header_block_read_ctx *read_ctx, lsqpack_abs_id_t idx) +{ + struct lsqpack_dec_table_entry *entry; + struct lsxpack_header *xhdr; + size_t need, http1x; + char *dst; + int r; + + entry = qdec_get_table_entry_abs(dec, idx); + if (!entry) + return -1; + + http1x = !!(dec->qpd_opts & LSQPACK_DEC_OPT_HTTP1X) << 2; /* 0 or 4 */ + need = entry->dte_name_len + entry->dte_val_len + http1x; + xhdr = dec->qpd_dh_if->dhi_prepare_decode(read_ctx->hbrc_hblock, NULL, + need); + if (!xhdr) + return -1; + + qdec_maybe_update_entry_hashes(dec, entry); + if (entry->dte_flags & DTEF_NAME_HASH) + { + xhdr->flags |= LSXPACK_NAME_HASH; + xhdr->name_hash = entry->dte_name_hash; + } + if (entry->dte_flags & DTEF_NAMEVAL_HASH) + { + xhdr->flags |= LSXPACK_NAMEVAL_HASH; + xhdr->nameval_hash = entry->dte_nameval_hash; + } + if (entry->dte_flags & DTEF_NAME_IDX) + { + xhdr->flags |= LSXPACK_QPACK_IDX; + xhdr->qpack_index = (uint8_t)entry->dte_name_idx; + } + xhdr->dec_overhead = (uint8_t)http1x; + xhdr->name_len = (lsxpack_strlen_t)entry->dte_name_len; + xhdr->val_len = (lsxpack_strlen_t)entry->dte_val_len; + dst = xhdr->buf + xhdr->name_offset; + memcpy(dst, DTE_NAME(entry), entry->dte_name_len); + dst += entry->dte_name_len; + if (http1x) + { + memcpy(dst, ": ", 2); + dst += 2; + } + xhdr->val_offset = (lsxpack_offset_t)(dst - xhdr->buf); + memcpy(dst, DTE_VALUE(entry), entry->dte_val_len); + dst += entry->dte_val_len; + if (http1x) + memcpy(dst, "\r\n", 2); + r = dec->qpd_dh_if->dhi_process_header(read_ctx->hbrc_hblock, xhdr); + if (r == 0) + dec->qpd_bytes_out += entry->dte_name_len + entry->dte_val_len; + return r; +} + + +static int +header_out_begin_static_nameref (struct lsqpack_dec *dec, + struct header_block_read_ctx *read_ctx, unsigned idx, int is_never) +{ + struct lsxpack_header *xhdr; /* Shorthand */ + size_t need, http1x; + char *dst; + + assert(!read_ctx->hbrc_out.xhdr); + + if (idx >= QPACK_STATIC_TABLE_SIZE) + return -1; + + http1x = !!(dec->qpd_opts & LSQPACK_DEC_OPT_HTTP1X) << 2; /* 0 or 4 */ + need = static_table[ idx ].name_len + http1x; + read_ctx->hbrc_out.xhdr = xhdr = dec->qpd_dh_if->dhi_prepare_decode( + read_ctx->hbrc_hblock, NULL, need); + if (!xhdr) + return -1; + + xhdr->dec_overhead = (uint8_t)http1x; + xhdr->qpack_index = (uint8_t)idx; + xhdr->flags |= LSXPACK_QPACK_IDX | LSXPACK_NAME_HASH; + xhdr->name_hash = name_hashes[ idx ]; + if (is_never) + xhdr->flags |= LSXPACK_NEVER_INDEX; + xhdr->name_len = (lsxpack_strlen_t)(static_table[ idx ].name_len); + dst = xhdr->buf + xhdr->name_offset; + memcpy(dst, static_table[ idx ].name, static_table[ idx ].name_len); + dst += static_table[ idx ].name_len; + if (http1x) + { + memcpy(dst, ": ", 2); + dst += 2; + } + xhdr->val_offset = (lsxpack_offset_t)(dst - xhdr->buf); + read_ctx->hbrc_out.state = XOUT_VALUE; + read_ctx->hbrc_out.off = 0; + return 0; +} + + +static int +header_out_begin_dynamic_nameref (struct lsqpack_dec *dec, + struct header_block_read_ctx *read_ctx, + struct lsqpack_dec_table_entry *entry, int is_never) +{ + struct lsxpack_header *xhdr; /* Shorthand */ + size_t need, http1x; + char *dst; + + assert(!read_ctx->hbrc_out.xhdr); + + http1x = !!(dec->qpd_opts & LSQPACK_DEC_OPT_HTTP1X) << 2; /* 0 or 4 */ + need = entry->dte_name_len + http1x; + read_ctx->hbrc_out.xhdr = xhdr = dec->qpd_dh_if->dhi_prepare_decode( + read_ctx->hbrc_hblock, NULL, need); + if (!xhdr) + return -1; + + xhdr->dec_overhead = (uint8_t)http1x; + if (is_never) + xhdr->flags |= LSXPACK_NEVER_INDEX; + qdec_maybe_update_entry_hashes(dec, entry); + if (entry->dte_flags & DTEF_NAME_HASH) + { + xhdr->flags |= LSXPACK_NAME_HASH; + xhdr->name_hash = entry->dte_name_hash; + } + if (entry->dte_flags & DTEF_NAME_IDX) + { + xhdr->flags |= LSXPACK_QPACK_IDX; + xhdr->qpack_index = (uint8_t)entry->dte_name_idx; + } + xhdr->name_len = (lsxpack_strlen_t)entry->dte_name_len; + dst = xhdr->buf + xhdr->name_offset; + memcpy(dst, DTE_NAME(entry), entry->dte_name_len); + dst += entry->dte_name_len; + if (http1x) + { + memcpy(dst, ": ", 2); + dst += 2; + } + xhdr->val_offset = (lsxpack_offset_t)(dst - xhdr->buf); + read_ctx->hbrc_out.state = XOUT_VALUE; + read_ctx->hbrc_out.off = 0; + return 0; +} + + +static int +header_out_begin_literal (struct lsqpack_dec *dec, + struct header_block_read_ctx *read_ctx, size_t need, int is_never) +{ + struct lsxpack_header *xhdr; /* Shorthand */ + size_t http1x; + + assert(!read_ctx->hbrc_out.xhdr); + + http1x = !!(dec->qpd_opts & LSQPACK_DEC_OPT_HTTP1X) << 2; /* 0 or 4 */ + need += http1x; + read_ctx->hbrc_out.xhdr = xhdr = dec->qpd_dh_if->dhi_prepare_decode( + read_ctx->hbrc_hblock, NULL, need); + if (!xhdr) + return -1; + + xhdr->dec_overhead = (uint8_t)http1x; + if (is_never) + xhdr->flags |= LSXPACK_NEVER_INDEX; + read_ctx->hbrc_out.state = XOUT_NAME; + read_ctx->hbrc_out.off = 0; + return 0; +} + + +static int +header_out_write_name (struct lsqpack_dec *dec, + struct header_block_read_ctx *read_ctx, size_t nwritten, int done) +{ + struct lsxpack_header *xhdr; /* Shorthand */ + + read_ctx->hbrc_out.off += (unsigned)nwritten; + + if (done) + { + xhdr = read_ctx->hbrc_out.xhdr; + if (dec->qpd_opts & LSQPACK_DEC_OPT_HTTP1X) + { + if (read_ctx->hbrc_out.off + 2 > xhdr->val_len) + { + read_ctx->hbrc_out.xhdr = xhdr = dec->qpd_dh_if + ->dhi_prepare_decode(read_ctx->hbrc_hblock, xhdr, + read_ctx->hbrc_out.off + 2); + if (!xhdr) + return -1; + } + memcpy(xhdr->buf + xhdr->name_offset + read_ctx->hbrc_out.off, + ": ", 2); + xhdr->val_offset = (lsxpack_offset_t)(xhdr->name_offset + read_ctx->hbrc_out.off + 2); + } + else + xhdr->val_offset = (lsxpack_offset_t)(xhdr->name_offset + read_ctx->hbrc_out.off); + xhdr->name_len = (lsxpack_strlen_t)read_ctx->hbrc_out.off; + read_ctx->hbrc_out.state = XOUT_VALUE; + read_ctx->hbrc_out.off = 0; + if (dec->qpd_opts & (LSQPACK_DEC_OPT_HASH_NAME + |LSQPACK_DEC_OPT_HASH_NAMEVAL)) + { + xhdr->name_hash = XXH32(xhdr->buf + xhdr->name_offset, + xhdr->name_len, LSQPACK_XXH_SEED); + xhdr->flags |= LSXPACK_NAME_HASH; + } + } + + return 0; +} + + +static int +header_out_write_value (struct lsqpack_dec *dec, + struct header_block_read_ctx *read_ctx, size_t nwritten, int done) +{ + struct lsxpack_header *xhdr; /* Shorthand */ + int r; + + read_ctx->hbrc_out.off += (unsigned)nwritten; + + if (done) + { + xhdr = read_ctx->hbrc_out.xhdr; + if (dec->qpd_opts & LSQPACK_DEC_OPT_HTTP1X) + { + if (xhdr->val_offset + read_ctx->hbrc_out.off + 2 > xhdr->val_len) + { + read_ctx->hbrc_out.xhdr = xhdr = dec->qpd_dh_if + ->dhi_prepare_decode(read_ctx->hbrc_hblock, xhdr, + xhdr->val_offset + read_ctx->hbrc_out.off + 2); + if (!xhdr) + return -1; + } + memcpy(xhdr->buf + xhdr->val_offset + read_ctx->hbrc_out.off, + "\r\n", 2); + } + xhdr->val_len = (lsxpack_strlen_t)read_ctx->hbrc_out.off; + if (dec->qpd_opts & LSQPACK_DEC_OPT_HASH_NAME) + { + assert(xhdr->flags & LSXPACK_NAME_HASH); + xhdr->nameval_hash = XXH32(xhdr->buf + xhdr->val_offset, + xhdr->val_len, xhdr->name_hash); + xhdr->flags |= LSXPACK_NAMEVAL_HASH; + } + r = dec->qpd_dh_if->dhi_process_header(read_ctx->hbrc_hblock, xhdr); + if (r == 0) + dec->qpd_bytes_out += xhdr->name_len + xhdr->val_len; + ++read_ctx->hbrc_header_count; + memset(&read_ctx->hbrc_out, 0, sizeof(read_ctx->hbrc_out)); + if (r != 0) + return -1; + } + + return 0; +} + + +static int +header_out_grow_buf (struct lsqpack_dec *dec, + struct header_block_read_ctx *read_ctx) +{ + size_t size, need; + unsigned off; + + assert(read_ctx->hbrc_out.xhdr); + if (read_ctx->hbrc_out.state == XOUT_NAME) + off = read_ctx->hbrc_out.off; + else + off = read_ctx->hbrc_out.xhdr->val_offset + - read_ctx->hbrc_out.xhdr->name_offset + read_ctx->hbrc_out.off; + + /* name_off and val_off are not set until the whole string has been + * written. Thus, `size' represents the number of bytes that was + * not enough to write either the name or the value. We multiply this + * number by 1.5. + */ + assert(read_ctx->hbrc_out.xhdr->val_len >= off); + size = read_ctx->hbrc_out.xhdr->val_len - off; + if (size < 2) + size = 2; + need = read_ctx->hbrc_out.xhdr->val_len + size / 2; + if (need > LSXPACK_MAX_STRLEN) + return -1; + read_ctx->hbrc_out.xhdr = dec->qpd_dh_if->dhi_prepare_decode( + read_ctx->hbrc_hblock, read_ctx->hbrc_out.xhdr, need); + if (!read_ctx->hbrc_out.xhdr) + return -1; + if (read_ctx->hbrc_out.xhdr->val_len < need) + { + D_INFO("allocated xhdr size (%zd) is smaller than requested (%zd)", + (size_t) read_ctx->hbrc_out.xhdr->val_len, need); + memset(&read_ctx->hbrc_out, 0, sizeof(read_ctx->hbrc_out)); + return -1; + } + return 0; +} + + +static int +guarantee_out_bytes (struct lsqpack_dec *dec, + struct header_block_read_ctx *read_ctx, size_t extra) +{ + size_t avail, need; + unsigned off; + + assert(read_ctx->hbrc_out.xhdr); + assert(read_ctx->hbrc_out.state == XOUT_VALUE); + assert(read_ctx->hbrc_out.xhdr->val_offset + >= read_ctx->hbrc_out.xhdr->name_offset); + off = read_ctx->hbrc_out.xhdr->val_offset + - read_ctx->hbrc_out.xhdr->name_offset + read_ctx->hbrc_out.off; + + assert(read_ctx->hbrc_out.xhdr->val_len >= off); + avail = read_ctx->hbrc_out.xhdr->val_len - off; + if (avail < extra) + { + need = read_ctx->hbrc_out.xhdr->val_len + extra - avail; + read_ctx->hbrc_out.xhdr = dec->qpd_dh_if->dhi_prepare_decode( + read_ctx->hbrc_hblock, read_ctx->hbrc_out.xhdr, need); + if (!read_ctx->hbrc_out.xhdr) + return -1; + } + return 0; +} + + +static unsigned char * +get_dst (struct lsqpack_dec *dec, + struct header_block_read_ctx *read_ctx, size_t *dst_size) +{ + unsigned off; + + assert(read_ctx->hbrc_out.xhdr); + if (read_ctx->hbrc_out.state == XOUT_NAME) + off = read_ctx->hbrc_out.off; + else + off = read_ctx->hbrc_out.xhdr->val_offset + - read_ctx->hbrc_out.xhdr->name_offset + read_ctx->hbrc_out.off; + + assert(read_ctx->hbrc_out.xhdr->val_len >= off); + *dst_size = read_ctx->hbrc_out.xhdr->val_len - off; + return (unsigned char *) read_ctx->hbrc_out.xhdr->buf + + read_ctx->hbrc_out.xhdr->name_offset + off; +} + + +static unsigned char * +qdec_huff_dec4bits (uint8_t, unsigned char *, struct lsqpack_decode_status *); + + +struct huff_decode_retval +{ + enum + { + HUFF_DEC_OK, + HUFF_DEC_END_SRC, + HUFF_DEC_END_DST, + HUFF_DEC_ERROR, + } status; + unsigned n_dst; + unsigned n_src; +}; + + +#if LS_QPACK_USE_LARGE_TABLES +static struct huff_decode_retval +huff_decode_fast (const unsigned char *src, int src_len, + unsigned char *dst, int dst_len, + struct lsqpack_huff_decode_state *state, int final); +#else +#define lsqpack_huff_decode_full lsqpack_huff_decode +#endif + +struct huff_decode_retval +lsqpack_huff_decode_full (const unsigned char *src, int src_len, + unsigned char *dst, int dst_len, + struct lsqpack_huff_decode_state *state, int final) +{ + const unsigned char *p_src = src; + const unsigned char *const src_end = src + src_len; + unsigned char *p_dst = dst; + unsigned char *dst_end = dst + dst_len; + + if (dst_len == 0) + return (struct huff_decode_retval) { + .status = HUFF_DEC_END_DST, + .n_dst = 0, + .n_src = 0, + }; + + switch (state->resume) + { + case 0: + state->status.state = 0; + state->status.eos = 1; + FALL_THROUGH; + case 1: + while (p_src != src_end) + { + if (p_dst == dst_end) + { + state->resume = 2; + return (const struct huff_decode_retval) { + .status = HUFF_DEC_END_DST, + .n_dst = (unsigned)dst_len, + .n_src = (unsigned)(p_src - src), + }; + } + FALL_THROUGH; + case 2: + if ((p_dst = qdec_huff_dec4bits(*p_src >> 4, p_dst, &state->status)) + == NULL) + return (struct huff_decode_retval) { + .status = HUFF_DEC_ERROR, }; + if (p_dst == dst_end) + { + state->resume = 3; + return (struct huff_decode_retval) { + .status = HUFF_DEC_END_DST, + .n_dst = (unsigned)dst_len, + .n_src = (unsigned)(p_src - src), + }; + } + FALL_THROUGH; + case 3: + if ((p_dst = qdec_huff_dec4bits(*p_src & 0xf, p_dst, &state->status)) + == NULL) + return (struct huff_decode_retval) { .status = HUFF_DEC_ERROR, }; + ++p_src; + } + } + + if (final) + return (struct huff_decode_retval) { + .status = state->status.eos ? HUFF_DEC_OK : HUFF_DEC_ERROR, + .n_dst = (unsigned)(p_dst - dst), + .n_src = (unsigned)(p_src - src), + }; + else + { + state->resume = 1; + return (struct huff_decode_retval) { + .status = HUFF_DEC_END_SRC, + .n_dst = (unsigned)(p_dst - dst), + .n_src = (unsigned)(p_src - src), + }; + } +} + + +#if LS_QPACK_USE_LARGE_TABLES +static struct huff_decode_retval +lsqpack_huff_decode (const unsigned char *src, int src_len, + unsigned char *dst, int dst_len, + struct lsqpack_huff_decode_state *state, int final) +{ + if (state->resume == 0 && final) + return huff_decode_fast(src, src_len, dst, dst_len, state, final); + else + return lsqpack_huff_decode_full(src, src_len, dst, dst_len, state, + final); +} +#endif + + +static void +check_dyn_table_errors (struct header_block_read_ctx *read_ctx, + lsqpack_abs_id_t id) +{ + if (read_ctx->hbrc_flags & HBRC_LARGEST_REF_SET) + read_ctx->hbrc_flags |= + (id == read_ctx->hbrc_largest_ref) << LARGEST_USED_SHIFT; + else + read_ctx->hbrc_flags |= HBRC_DYN_USED_IN_ERR; +} + + +static enum lsqpack_read_header_status +parse_header_data (struct lsqpack_dec *dec, + struct header_block_read_ctx *read_ctx, const unsigned char *buf, + size_t bufsz) +{ +#define DATA read_ctx->hbrc_parse_ctx_u.data + const unsigned char *const end = buf + bufsz; + struct lsqpack_dec_table_entry *entry; + struct huff_decode_retval hdr; + unsigned value; + size_t size, dst_size; + unsigned char *dst; + unsigned prefix_bits = ~0u; + int r; + +#define RETURN_ERROR() do { dec->qpd_err.line = __LINE__; goto err; } while (0) + + while (buf < end) + { + switch (DATA.state) + { + case DATA_STATE_NEXT_INSTRUCTION: + if (buf[0] & 0x80) + { + prefix_bits = 6; + DATA.is_static = buf[0] & 0x40; + DATA.dec_int_state.resume = 0; + DATA.state = DATA_STATE_READ_IHF_IDX; + goto data_state_read_ihf_idx; + } + /* Literal Header Field With Name Reference */ + else if (buf[0] & 0x40) + { + prefix_bits = 4; + DATA.is_never = buf[0] & 0x20; + DATA.is_static = buf[0] & 0x10; + DATA.dec_int_state.resume = 0; + DATA.state = DATA_STATE_READ_LFINR_IDX; + goto data_state_read_lfinr_idx; + } + /* Literal Header Field Without Name Reference */ + else if (buf[0] & 0x20) + { + prefix_bits = 3; + DATA.is_never = buf[0] & 0x10; + DATA.is_huffman = buf[0] & 0x08; + DATA.dec_int_state.resume = 0; + DATA.state = DATA_STATE_READ_LFONR_NAME_LEN; + goto data_state_read_lfonr_name_len; + } + /* Indexed Header Field With Post-Base Index */ + else if (buf[0] & 0x10) + { + prefix_bits = 4; + DATA.dec_int_state.resume = 0; + DATA.state = DATA_STATE_READ_IPBI_IDX; + goto data_state_read_ipbi_idx; + } + /* Literal Header Field With Post-Base Name Reference */ + else + { + prefix_bits = 3; + DATA.is_never = buf[0] & 0x08; + DATA.dec_int_state.resume = 0; + DATA.state = DATA_STATE_READ_LFPBNR_IDX; + goto data_state_read_lfpbnr_idx; + } + case DATA_STATE_READ_IHF_IDX: + data_state_read_ihf_idx: + r = lsqpack_dec_int24(&buf, end, prefix_bits, &value, + &DATA.dec_int_state); + if (r == 0) + { + if (DATA.is_static) + r = header_out_static_entry(dec, read_ctx, value); + else + { + value = ID_MINUS(read_ctx->hbrc_base_index, value); + r = header_out_dynamic_entry(dec, read_ctx, value); + check_dyn_table_errors(read_ctx, value); + } + if (r == 0) + DATA.state = DATA_STATE_NEXT_INSTRUCTION; + else + RETURN_ERROR(); + } + else if (r == -1) + return LQRHS_NEED; + else + RETURN_ERROR(); + break; + case DATA_STATE_READ_LFINR_IDX: + data_state_read_lfinr_idx: + r = lsqpack_dec_int24(&buf, end, prefix_bits, &value, + &DATA.dec_int_state); + if (r == 0) + { + if (DATA.is_static) + { + if (0 != header_out_begin_static_nameref(dec, + read_ctx, value, DATA.is_never)) + RETURN_ERROR(); + } + else + { + value = ID_MINUS(read_ctx->hbrc_base_index, value); + entry = qdec_get_table_entry_abs(dec, value); + if (!entry) + RETURN_ERROR(); + check_dyn_table_errors(read_ctx, value); + if (0 != header_out_begin_dynamic_nameref(dec, + read_ctx, entry, DATA.is_never)) + RETURN_ERROR(); + } + DATA.state = DATA_STATE_BEGIN_READ_VAL_LEN; + break; + } + else if (r == -1) + return LQRHS_NEED; + else + RETURN_ERROR(); + case DATA_STATE_BEGIN_READ_VAL_LEN: + DATA.is_huffman = buf[0] & 0x80; + prefix_bits = 7; + DATA.dec_int_state.resume = 0; + DATA.state = DATA_STATE_READ_VAL_LEN; + FALL_THROUGH; + case DATA_STATE_READ_VAL_LEN: + r = lsqpack_dec_int24(&buf, end, prefix_bits, &DATA.left, + &DATA.dec_int_state); + if (r == 0) + { + if (DATA.left) + { + if (DATA.is_huffman) + { + if (0 != guarantee_out_bytes(dec, read_ctx, + DATA.left + DATA.left / 2)) + RETURN_ERROR(); + DATA.dec_huff_state.resume = 0; + DATA.state = DATA_STATE_READ_VAL_HUFFMAN; + } + else + { + if (0 != guarantee_out_bytes(dec, read_ctx, DATA.left)) + RETURN_ERROR(); + DATA.state = DATA_STATE_READ_VAL_PLAIN; + } + } + else if (0 == header_out_write_value(dec, read_ctx, 0, 1)) + DATA.state = DATA_STATE_NEXT_INSTRUCTION; + else + RETURN_ERROR(); + } + else if (r == -1) + return LQRHS_NEED; + else + RETURN_ERROR(); + break; + case DATA_STATE_READ_VAL_HUFFMAN: + size = MIN((unsigned) (end - buf), DATA.left); + if (size == 0) + RETURN_ERROR(); + dst = get_dst(dec, read_ctx, &dst_size); + hdr = lsqpack_huff_decode(buf, (int)size, dst, (int)dst_size, + &DATA.dec_huff_state, DATA.left == size); + buf += hdr.n_src; + DATA.left -= hdr.n_src; + switch (hdr.status) + { + case HUFF_DEC_OK: + if (0 != header_out_write_value(dec, read_ctx, hdr.n_dst, + DATA.left == 0)) + RETURN_ERROR(); + if (DATA.left == 0) + DATA.state = DATA_STATE_NEXT_INSTRUCTION; + break; + case HUFF_DEC_END_SRC: + if (hdr.n_dst && 0 != header_out_write_value(dec, read_ctx, + hdr.n_dst, 0)) + RETURN_ERROR(); + break; + case HUFF_DEC_END_DST: + if (hdr.n_dst && 0 != header_out_write_value(dec, read_ctx, + hdr.n_dst, 0)) + RETURN_ERROR(); + if (0 != header_out_grow_buf(dec, read_ctx)) + RETURN_ERROR(); + break; + case HUFF_DEC_ERROR: default: + RETURN_ERROR(); + } + break; + case DATA_STATE_READ_VAL_PLAIN: + size = MIN((unsigned) (end - buf), DATA.left); + if (size == 0) + RETURN_ERROR(); + dst = get_dst(dec, read_ctx, &dst_size); + if (size > dst_size) + RETURN_ERROR(); + memcpy(dst, buf, size); + if (0 != header_out_write_value(dec, read_ctx, + size, DATA.left == size)) + RETURN_ERROR(); + DATA.left -= (unsigned)size; + buf += size; + if (DATA.left == 0) + DATA.state = DATA_STATE_NEXT_INSTRUCTION; + break; + case DATA_STATE_READ_LFONR_NAME_LEN: + data_state_read_lfonr_name_len: + r = lsqpack_dec_int24(&buf, end, prefix_bits, &DATA.left, + &DATA.dec_int_state); + if (r == 0) + { + size = DATA.is_huffman ? DATA.left + DATA.left / 2 : DATA.left; + if (0 != header_out_begin_literal(dec, read_ctx, size, + DATA.is_never)) + RETURN_ERROR(); + if (DATA.is_huffman) + { + DATA.dec_huff_state.resume = 0; + DATA.state = DATA_STATE_READ_NAME_HUFFMAN; + } + else + DATA.state = DATA_STATE_READ_NAME_PLAIN; + } + else if (r == -1) + return LQRHS_NEED; + else + RETURN_ERROR(); + break; + case DATA_STATE_READ_NAME_HUFFMAN: + size = MIN((unsigned) (end - buf), DATA.left); + if (size == 0) + RETURN_ERROR(); + dst = get_dst(dec, read_ctx, &dst_size); + hdr = lsqpack_huff_decode(buf, (int)size, dst, (int)dst_size, + &DATA.dec_huff_state, DATA.left == size); + buf += hdr.n_src; + DATA.left -= hdr.n_src; + switch (hdr.status) + { + case HUFF_DEC_OK: + if (0 != header_out_write_name(dec, read_ctx, hdr.n_dst, + DATA.left == 0)) + RETURN_ERROR(); + if (DATA.left == 0) + DATA.state = DATA_STATE_BEGIN_READ_VAL_LEN; + break; + case HUFF_DEC_END_SRC: + if (hdr.n_dst && 0 != header_out_write_name(dec, read_ctx, + hdr.n_dst, 0)) + RETURN_ERROR(); + break; + case HUFF_DEC_END_DST: + if (hdr.n_dst && 0 != header_out_write_name(dec, read_ctx, + hdr.n_dst, 0)) + RETURN_ERROR(); + if (0 != header_out_grow_buf(dec, read_ctx)) + RETURN_ERROR(); + break; + case HUFF_DEC_ERROR: default: + RETURN_ERROR(); + } + break; + case DATA_STATE_READ_NAME_PLAIN: + size = MIN((unsigned) (end - buf), DATA.left); + if (size == 0) + RETURN_ERROR(); + dst = get_dst(dec, read_ctx, &dst_size); + if (size > dst_size) + RETURN_ERROR(); + memcpy(dst, buf, size); + if (0 != header_out_write_name(dec, read_ctx, + size, DATA.left == size)) + RETURN_ERROR(); + DATA.left -= (unsigned)size; + buf += size; + if (DATA.left == 0) + DATA.state = DATA_STATE_BEGIN_READ_VAL_LEN; + break; + case DATA_STATE_READ_LFPBNR_IDX: + data_state_read_lfpbnr_idx: + r = lsqpack_dec_int24(&buf, end, prefix_bits, &value, + &DATA.dec_int_state); + if (r == 0) + { + value = ID_PLUS(value, read_ctx->hbrc_base_index + 1); + entry = qdec_get_table_entry_abs(dec, value); + if (!entry) + RETURN_ERROR(); + check_dyn_table_errors(read_ctx, value); + if (0 != header_out_begin_dynamic_nameref(dec, + read_ctx, entry, DATA.is_never)) + RETURN_ERROR(); + DATA.state = DATA_STATE_BEGIN_READ_VAL_LEN; + } + else if (r == -1) + return LQRHS_NEED; + else + RETURN_ERROR(); + break; + case DATA_STATE_READ_IPBI_IDX: + data_state_read_ipbi_idx: + r = lsqpack_dec_int24(&buf, end, prefix_bits, &value, + &DATA.dec_int_state); + if (r == 0) + { + value = ID_PLUS(read_ctx->hbrc_base_index, value + 1); + r = header_out_dynamic_entry(dec, read_ctx, value); + check_dyn_table_errors(read_ctx, value); + if (r == 0) + DATA.state = DATA_STATE_NEXT_INSTRUCTION; + else + RETURN_ERROR(); + } + else if (r == -1) + return LQRHS_NEED; + else + RETURN_ERROR(); + break; + case DATA_STATE_BEGIN_READ_LFPBNR_VAL_LEN: FALL_THROUGH; + case DATA_STATE_READ_LFPBNR_VAL_LEN: FALL_THROUGH; + default: + assert(0); + RETURN_ERROR(); + } + } + + if (read_ctx->hbrc_size > 0) + return LQRHS_NEED; + else if (DATA.state == DATA_STATE_NEXT_INSTRUCTION) { + if ((read_ctx->hbrc_flags + & (HBRC_LARGEST_REF_SET|HBRC_LARGEST_REF_USED)) + == HBRC_LARGEST_REF_SET) + RETURN_ERROR(); + if (read_ctx->hbrc_flags & HBRC_DYN_USED_IN_ERR) + RETURN_ERROR(); + return LQRHS_DONE; + } + else + RETURN_ERROR(); + + err: + dec->qpd_err.type = LSQPACK_DEC_ERR_LOC_HEADER_BLOCK; + dec->qpd_err.off = read_ctx->hbrc_orig_size - read_ctx->hbrc_size + + (buf - (end - bufsz)); + dec->qpd_err.stream_id = read_ctx->hbrc_stream_id; + D_DEBUG("header block error on line %d, offset %"PRIu64", stream id " + "%"PRIu64, dec->qpd_err.line, dec->qpd_err.off, dec->qpd_err.stream_id); + return LQRHS_ERROR; +#undef DATA +} + + +static int +qdec_in_future (const struct lsqpack_dec *dec, lsqpack_abs_id_t id) +{ + if (dec->qpd_last_id < dec->qpd_max_entries) + return id > dec->qpd_last_id + && id <= dec->qpd_last_id + dec->qpd_max_entries; + else + return !(id <= dec->qpd_last_id + && id >= dec->qpd_last_id - dec->qpd_max_entries + 1); +} + + +/* + * [draft-ietf-quic-qpack-09], Section 4.5.1.1: + * + * The encoder transforms the Required Insert Count as follows before + * encoding: + * + * if ReqInsertCount == 0: + * EncInsertCount = 0 + * else: + * EncInsertCount = (ReqInsertCount mod (2 * MaxEntries)) + 1 + */ +static lsqpack_abs_id_t +dec_max_encoded_RIC (const struct lsqpack_dec *dec) +{ + return dec->qpd_max_entries * 2; +} + + +static enum lsqpack_read_header_status +parse_header_prefix (struct lsqpack_dec *dec, + struct header_block_read_ctx *read_ctx, const unsigned char *buf, + size_t bufsz) +{ + const unsigned char *const end = buf + bufsz; + unsigned prefix_bits = ~0u; + int r; + +#define RIC read_ctx->hbrc_parse_ctx_u.prefix.u.ric +#define DELB read_ctx->hbrc_parse_ctx_u.prefix.u.delb + + while (buf < end) + { + switch (read_ctx->hbrc_parse_ctx_u.prefix.state) + { + case PREFIX_STATE_BEGIN_READING_LARGEST_REF: + prefix_bits = 8; + DELB.dec_int_state.resume = 0; + read_ctx->hbrc_parse_ctx_u.prefix.state = + PREFIX_STATE_READ_LARGEST_REF; + FALL_THROUGH; + case PREFIX_STATE_READ_LARGEST_REF: + r = lsqpack_dec_int(&buf, end, prefix_bits, &RIC.value, + &RIC.dec_int_state); + if (r == 0) + { + if (RIC.value) + { + if (RIC.value > dec_max_encoded_RIC(dec)) + return LQRHS_ERROR; + read_ctx->hbrc_largest_ref = ID_MINUS(RIC.value, 2); + read_ctx->hbrc_flags |= + HBRC_LARGEST_REF_READ|HBRC_LARGEST_REF_SET; + read_ctx->hbrc_parse_ctx_u.prefix.state + = PREFIX_STATE_BEGIN_READING_BASE_IDX; + if (qdec_in_future(dec, read_ctx->hbrc_largest_ref)) + return LQRHS_BLOCKED; + else + break; + } + else + { + read_ctx->hbrc_flags |= HBRC_LARGEST_REF_READ; + read_ctx->hbrc_parse_ctx_u.prefix.state + = PREFIX_STATE_BEGIN_READING_BASE_IDX; + break; + } + } + else if (r == -1) + { + if (read_ctx->hbrc_orig_size - read_ctx->hbrc_size + <= lsqpack_val2len(dec_max_encoded_RIC(dec), 8)) + return LQRHS_NEED; + else + return LQRHS_ERROR; + } + else + return LQRHS_ERROR; + case PREFIX_STATE_BEGIN_READING_BASE_IDX: + DELB.sign = (buf[0] & 0x80) > 0; + DELB.dec_int_state.resume = 0; + prefix_bits = 7; + read_ctx->hbrc_parse_ctx_u.prefix.state = + PREFIX_STATE_READ_DELTA_BASE_IDX; + FALL_THROUGH; + case PREFIX_STATE_READ_DELTA_BASE_IDX: + r = lsqpack_dec_int(&buf, end, prefix_bits, &DELB.value, + &DELB.dec_int_state); + if (r == 0) + { + if (read_ctx->hbrc_flags & HBRC_LARGEST_REF_SET) + { + if (DELB.sign) + read_ctx->hbrc_base_index = + ID_MINUS(read_ctx->hbrc_largest_ref, DELB.value + 1); + else + read_ctx->hbrc_base_index = + ID_PLUS(read_ctx->hbrc_largest_ref, DELB.value); + } + else /* From qpack-03: "A header block that does not + * reference the dynamic table can use any value + * for Base Index" + */ + read_ctx->hbrc_base_index = 0; + read_ctx->hbrc_parse = parse_header_data; + read_ctx->hbrc_parse_ctx_u.data.state + = DATA_STATE_NEXT_INSTRUCTION; + if (end - buf) + return parse_header_data(dec, read_ctx, buf, end - buf); + else + return LQRHS_NEED; + } + else if (r == -1) + { + return LQRHS_NEED; + } + else + return LQRHS_ERROR; + default: + assert(0); + return LQRHS_ERROR; + } + } + +#undef RIC +#undef DELB + + if (read_ctx->hbrc_size > 0) + return LQRHS_NEED; + else + return LQRHS_ERROR; +} + + +static size_t +max_to_read (const struct header_block_read_ctx *read_ctx) +{ + if (read_ctx->hbrc_flags & HBRC_LARGEST_REF_READ) + return read_ctx->hbrc_size; + else + return 1; +} + + +static size_t +qdec_read_header_block (struct hbrc_buf *hbrc_buf, + const unsigned char **buf, size_t sz) +{ + if (sz > hbrc_buf->sz - hbrc_buf->off) + sz = hbrc_buf->sz - hbrc_buf->off; + *buf = hbrc_buf->buf + hbrc_buf->off; + hbrc_buf->off += sz; + return sz; +} + + +static enum lsqpack_read_header_status +qdec_read_header (struct lsqpack_dec *dec, + struct header_block_read_ctx *read_ctx) +{ + const unsigned char *buf; + enum lsqpack_read_header_status st; + size_t n_to_read; + size_t buf_sz; + + while (read_ctx->hbrc_size > 0) + { + n_to_read = max_to_read(read_ctx); + buf_sz = qdec_read_header_block(&read_ctx->hbrc_buf, &buf, n_to_read); + if (buf_sz > 0) + { + read_ctx->hbrc_size -= buf_sz; + st = read_ctx->hbrc_parse(dec, read_ctx, buf, buf_sz); + if (st == LQRHS_NEED) + { + if (read_ctx->hbrc_size == 0) + return LQRHS_ERROR; + } + else + return st; + } + else + return LQRHS_NEED; + } + + return LQRHS_DONE; +} + + +static void +destroy_header_block_read_ctx (struct lsqpack_dec *dec, + struct header_block_read_ctx *read_ctx) +{ + lsqpack_abs_id_t id; + + TAILQ_REMOVE(&dec->qpd_hbrcs, read_ctx, hbrc_next_all); + if (read_ctx->hbrc_flags & HBRC_BLOCKED) + { + id = read_ctx->hbrc_largest_ref & ((1 << LSQPACK_DEC_BLOCKED_BITS) - 1); + TAILQ_REMOVE(&dec->qpd_blocked_headers[id], read_ctx, hbrc_next_blocked); + --dec->qpd_n_blocked; + } + free(read_ctx); +} + + +static void +qdec_insert_header_block (struct lsqpack_dec *dec, + struct header_block_read_ctx *read_ctx) +{ + TAILQ_INSERT_TAIL(&dec->qpd_hbrcs, read_ctx, hbrc_next_all); + read_ctx->hbrc_flags |= HBRC_ON_LIST; +} + + +static int +stash_blocked_header (struct lsqpack_dec *dec, + struct header_block_read_ctx *read_ctx) +{ + lsqpack_abs_id_t id; + + if (dec->qpd_n_blocked < dec->qpd_max_risked_streams) + { + id = read_ctx->hbrc_largest_ref & ((1 << LSQPACK_DEC_BLOCKED_BITS) - 1); + TAILQ_INSERT_TAIL(&dec->qpd_blocked_headers[id], read_ctx, hbrc_next_blocked); + ++dec->qpd_n_blocked; + read_ctx->hbrc_flags |= HBRC_BLOCKED; + return 0; + } + else + { + D_INFO("cannot block another header: reached maximum of %u", + dec->qpd_max_risked_streams); + return -1; + } +} + + +static struct header_block_read_ctx * +find_header_block_read_ctx (struct lsqpack_dec *dec, void *hblock) +{ + struct header_block_read_ctx *read_ctx; + + TAILQ_FOREACH(read_ctx, &dec->qpd_hbrcs, hbrc_next_all) + if (read_ctx->hbrc_hblock == hblock) + return read_ctx; + + return NULL; +} + + +static int +qdec_try_writing_header_ack (struct lsqpack_dec *dec, uint64_t stream_id, + unsigned char *dec_buf, size_t *dec_buf_sz) +{ + unsigned char *p = dec_buf; + + if (*dec_buf_sz > 0) + { + *dec_buf = 0x80; + p = lsqpack_enc_int(p, p + *dec_buf_sz, stream_id, 7); + if (p > dec_buf) + { + *dec_buf_sz = p - dec_buf; + dec->qpd_bytes_in += (unsigned)(p - dec_buf); + return 0; + } + } + + return -1; +} + + +static void +qdec_maybe_update_largest_known (struct lsqpack_dec *dec, lsqpack_abs_id_t id) +{ + lsqpack_abs_id_t diff; + + diff = ID_MINUS(id, dec->qpd_largest_known_id); + if (diff > 0 && diff <= dec->qpd_max_entries) + dec->qpd_largest_known_id = id; +} + + +static enum lsqpack_read_header_status +qdec_header_process (struct lsqpack_dec *dec, + struct header_block_read_ctx *read_ctx, + const unsigned char **buf, size_t bufsz, + unsigned char *dec_buf, size_t *dec_buf_sz) +{ + struct header_block_read_ctx *read_ctx_copy; + enum lsqpack_read_header_status st; + + read_ctx->hbrc_buf = (struct hbrc_buf) { *buf, bufsz, 0, }; + st = qdec_read_header(dec, read_ctx); + switch (st) + { + case LQRHS_DONE: + update_ema(&dec->qpd_hlist_size_ema, read_ctx->hbrc_header_count); + if ((read_ctx->hbrc_flags & HBRC_LARGEST_REF_SET) + && dec_buf && dec_buf_sz) + { + if (0 == qdec_try_writing_header_ack(dec, read_ctx->hbrc_stream_id, + dec_buf, dec_buf_sz)) + qdec_maybe_update_largest_known(dec, + read_ctx->hbrc_largest_ref); + else + { + st = LQRHS_ERROR; + break; + } + } + else if (dec_buf_sz) + *dec_buf_sz = 0; + *buf = *buf + read_ctx->hbrc_buf.off; + dec->qpd_bytes_in += (unsigned)read_ctx->hbrc_orig_size; + if (dec->qpd_bytes_out > (1u << (sizeof(dec->qpd_bytes_out) * 8 - 1))) + { + dec->qpd_bytes_in = (unsigned)((float) dec->qpd_bytes_in + / (float) dec->qpd_bytes_out * 1000); + dec->qpd_bytes_out = 1000; + D_DEBUG("reset bytes in/out counters, ratio: %.3f", + lsqpack_dec_ratio(dec)); + } + D_DEBUG("header block for stream %"PRIu64" is done", + read_ctx->hbrc_stream_id); + break; + case LQRHS_NEED: + case LQRHS_BLOCKED: + if (!(read_ctx->hbrc_flags & HBRC_ON_LIST)) + { + read_ctx_copy = malloc(sizeof(*read_ctx_copy)); + if (!read_ctx_copy) + { + st = LQRHS_ERROR; + break; + } + memcpy(read_ctx_copy, read_ctx, sizeof(*read_ctx)); + read_ctx = read_ctx_copy; + qdec_insert_header_block(dec, read_ctx); + } + if (st == LQRHS_BLOCKED && 0 != stash_blocked_header(dec, read_ctx)) + { + st = LQRHS_ERROR; + break; + } + *buf = *buf + read_ctx->hbrc_buf.off; + if (st == LQRHS_NEED) + D_DEBUG("header block for stream %"PRIu64" needs more bytes", + read_ctx->hbrc_stream_id); + else + D_DEBUG("header block for stream %"PRIu64" is blocked", + read_ctx->hbrc_stream_id); + return st; + case LQRHS_ERROR: default: + assert(st == LQRHS_ERROR); + D_DEBUG("header block for stream %"PRIu64" has had an error", + read_ctx->hbrc_stream_id); + break; + } + + if (read_ctx->hbrc_flags & HBRC_ON_LIST) + { + destroy_header_block_read_ctx(dec, read_ctx); + } + + return st; +} + + +enum lsqpack_read_header_status +lsqpack_dec_header_read (struct lsqpack_dec *dec, void *hblock, + const unsigned char **buf, size_t bufsz, + unsigned char *dec_buf, size_t *dec_buf_sz) +{ + struct header_block_read_ctx *read_ctx; + + read_ctx = find_header_block_read_ctx(dec, hblock); + if (read_ctx) + { + D_DEBUG("continue reading header block for stream %"PRIu64, + read_ctx->hbrc_stream_id); + return qdec_header_process(dec, read_ctx, buf, bufsz, + dec_buf, dec_buf_sz); + } + else + { + D_INFO("could not find header block to continue reading"); + return LQRHS_ERROR; + } +} + + +enum lsqpack_read_header_status +lsqpack_dec_header_in (struct lsqpack_dec *dec, void *hblock, + uint64_t stream_id, size_t header_size, const unsigned char **buf, + size_t bufsz, unsigned char *dec_buf, size_t *dec_buf_sz) +{ + if (header_size < 2) + { + D_DEBUG("header block for stream %"PRIu64" is too short " + "(%zd byte%.*s)", stream_id, header_size, header_size != 1, "s"); + dec->qpd_err = (struct lsqpack_dec_err) { + .line = __LINE__, + .type = LSQPACK_DEC_ERR_LOC_HEADER_BLOCK, + .off = 0, + .stream_id = stream_id, + }; + return LQRHS_ERROR; + } + + struct header_block_read_ctx read_ctx = { + .hbrc_stream_id = stream_id, + .hbrc_hblock = hblock, + .hbrc_size = header_size, + .hbrc_orig_size = header_size, + .hbrc_parse = parse_header_prefix, + }; + + D_DEBUG("begin reading header block for stream %"PRIu64, stream_id); + return qdec_header_process(dec, &read_ctx, buf, bufsz, + dec_buf, dec_buf_sz); +} + + +static void +qdec_drop_oldest_entry (struct lsqpack_dec *dec) +{ + struct lsqpack_dec_table_entry *entry; + + entry = ringbuf_advance_tail(&dec->qpd_dyn_table); + dec->qpd_cur_capacity -= DTE_SIZE(entry); + qdec_decref_entry(entry); +} + + +static void +qdec_remove_overflow_entries (struct lsqpack_dec *dec) +{ + while (dec->qpd_cur_capacity > dec->qpd_cur_max_capacity) + { + D_DEBUG("capacity %u, drop entry", dec->qpd_cur_capacity); + qdec_drop_oldest_entry(dec); + } +} + + +static void +qdec_update_max_capacity (struct lsqpack_dec *dec, unsigned new_capacity) +{ + unsigned old_max_entries; + dec->qpd_cur_max_capacity = new_capacity; + old_max_entries = dec->qpd_max_entries; + dec->qpd_max_entries = dec->qpd_cur_max_capacity / DYNAMIC_ENTRY_OVERHEAD; + if (old_max_entries != dec->qpd_max_entries) + { + if (dec->qpd_last_id == dec->qpd_largest_known_id + && dec->qpd_last_id == old_max_entries * 2 - 1) + { + dec->qpd_last_id = dec->qpd_max_entries * 2 - 1; + dec->qpd_largest_known_id = dec->qpd_max_entries * 2 - 1; + } + } + qdec_remove_overflow_entries(dec); +} + + +static void +qdec_process_blocked_headers (struct lsqpack_dec *dec) +{ + struct header_block_read_ctx *read_ctx, *next; + lsqpack_abs_id_t id; + + id = dec->qpd_last_id & ((1 << LSQPACK_DEC_BLOCKED_BITS) - 1); + for (read_ctx = TAILQ_FIRST(&dec->qpd_blocked_headers[id]); read_ctx; + read_ctx = next) + { + next = TAILQ_NEXT(read_ctx, hbrc_next_blocked); + if (read_ctx->hbrc_largest_ref == dec->qpd_last_id) + { + read_ctx->hbrc_flags &= ~HBRC_BLOCKED; + TAILQ_REMOVE(&dec->qpd_blocked_headers[id], read_ctx, + hbrc_next_blocked); + --dec->qpd_n_blocked; + D_DEBUG("header block for stream %"PRIu64" has become unblocked", + read_ctx->hbrc_stream_id); + dec->qpd_dh_if->dhi_unblocked(read_ctx->hbrc_hblock); + } + } +} + + +int +lsqpack_dec_ici_pending (const struct lsqpack_dec *dec) +{ + return dec->qpd_last_id != dec->qpd_largest_known_id; +} + + +ssize_t +lsqpack_dec_write_ici (struct lsqpack_dec *dec, unsigned char *buf, size_t sz) +{ + unsigned char *p; + unsigned count; + + if (dec->qpd_last_id != dec->qpd_largest_known_id) + { + if (sz == 0) + return -1; + count = ID_MINUS(dec->qpd_last_id, dec->qpd_largest_known_id); + *buf = 0; + p = lsqpack_enc_int(buf, buf + sz, count, 6); + if (p > buf) + { + D_DEBUG("wrote ICI: count=%u", count); + dec->qpd_largest_known_id = dec->qpd_last_id; + dec->qpd_bytes_in += (unsigned)(p - buf); + return p - buf; + } + else + return -1; + } + else + { + D_DEBUG("no ICI instruction necessary: emitting zero bytes"); + return 0; + } +} + + +int +lsqpack_dec_unref_stream (struct lsqpack_dec *dec, void *hblock) +{ + struct header_block_read_ctx *read_ctx; + + read_ctx = find_header_block_read_ctx(dec, hblock); + if (read_ctx) + { + D_DEBUG("unreffed header block for stream %"PRIu64, + read_ctx->hbrc_stream_id); + destroy_header_block_read_ctx(dec, read_ctx); + return 0; + } + else + { + D_INFO("could not find header block to unref"); + return -1; + } +} + + +ssize_t +lsqpack_dec_cancel_stream (struct lsqpack_dec *dec, void *hblock, + unsigned char *buf, size_t buf_sz) +{ + struct header_block_read_ctx *read_ctx; + unsigned char *p; + + read_ctx = find_header_block_read_ctx(dec, hblock); + if (!read_ctx) + { + D_INFO("could not find stream to cancel"); + return 0; + } + + if (buf_sz == 0) + return -1; + + *buf = 0x40; + p = lsqpack_enc_int(buf, buf + buf_sz, read_ctx->hbrc_stream_id, 6); + if (p > buf) + { + D_DEBUG("cancelled stream %"PRIu64"; generate instruction of %u bytes", + read_ctx->hbrc_stream_id, (unsigned) (p - buf)); + destroy_header_block_read_ctx(dec, read_ctx); + dec->qpd_bytes_in += (unsigned)(p - buf); + return p - buf; + } + else + { + D_WARN("cannot generate Cancel Stream instruction for stream %"PRIu64 + "; buf size=%zu", read_ctx->hbrc_stream_id, buf_sz); + return -1; + } +} + + +ssize_t +lsqpack_dec_cancel_stream_id (struct lsqpack_dec *dec, uint64_t stream_id, + unsigned char *buf, size_t buf_sz) +{ + unsigned char *p; + + /* From qpack-14: "A decoder with a maximum dynamic table capacity + * equal to zero MAY omit sending Stream Cancellations..." + */ + if (dec->qpd_max_capacity == 0) + return 0; + + if (buf_sz == 0) + return -1; + + *buf = 0x40; + p = lsqpack_enc_int(buf, buf + buf_sz, stream_id, 6); + if (p > buf) + { + D_DEBUG("generate Cancel Stream %"PRIu64" instruction of %u bytes", + stream_id, (unsigned) (p - buf)); + dec->qpd_bytes_in += (unsigned)(p - buf); + return p - buf; + } + else + { + D_DEBUG("cannot generate Cancel Stream instruction for stream %"PRIu64 + "; buf size=%zu", stream_id, buf_sz); + return -1; + } +} + + +static int +lsqpack_dec_push_entry (struct lsqpack_dec *dec, + struct lsqpack_dec_table_entry *entry) +{ + if (0 == ringbuf_add(&dec->qpd_dyn_table, entry)) + { + dec->qpd_cur_capacity += DTE_SIZE(entry); + D_DEBUG("push entry:(`%.*s': `%.*s'), capacity %u", + (int) entry->dte_name_len, DTE_NAME(entry), + (int) entry->dte_val_len, DTE_VALUE(entry), + dec->qpd_cur_capacity); + dec->qpd_last_id = ID_PLUS(dec->qpd_last_id, 1); + qdec_remove_overflow_entries(dec); + qdec_process_blocked_headers(dec); + if (dec->qpd_cur_capacity <= dec->qpd_cur_max_capacity) + return 0; + } + + return -1; +} + + +int +lsqpack_dec_enc_in (struct lsqpack_dec *dec, const unsigned char *buf, + size_t buf_sz) +{ + const unsigned char *const end = buf + buf_sz; + struct lsqpack_dec_table_entry *entry, *new_entry; + struct huff_decode_retval hdr; + unsigned prefix_bits = ~0u; + size_t size; + int r; + + D_DEBUG("got %zu bytes of encoder stream", buf_sz); + dec->qpd_bytes_in += (unsigned)buf_sz; + +#define WINR dec->qpd_enc_state.ctx_u.with_namref +#define WONR dec->qpd_enc_state.ctx_u.wo_namref +#define DUPL dec->qpd_enc_state.ctx_u.duplicate +#define SDTC dec->qpd_enc_state.ctx_u.sdtc + + while (buf < end) + { + switch (dec->qpd_enc_state.resume) + { + case DEI_NEXT_INST: + if (buf[0] & 0x80) + { + WINR.is_static = (buf[0] & 0x40) > 0; + WINR.dec_int_state.resume = 0; + WINR.reffed_entry = NULL; + WINR.entry = NULL; + dec->qpd_enc_state.resume = DEI_WINR_READ_NAME_IDX; + prefix_bits = 6; + goto dei_winr_read_name_idx; + } + else if (buf[0] & 0x40) + { + WONR.is_huffman = (buf[0] & 0x20) > 0; + WONR.dec_int_state.resume = 0; + WONR.entry = NULL; + dec->qpd_enc_state.resume = DEI_WONR_READ_NAME_LEN; + prefix_bits = 5; + goto dei_wonr_read_name_idx; + } + else if (buf[0] & 0x20) + { + SDTC.dec_int_state.resume = 0; + dec->qpd_enc_state.resume = DEI_SIZE_UPD_READ_IDX; + prefix_bits = 5; + goto dei_size_upd_read_idx; + } + else + { + DUPL.dec_int_state.resume = 0; + dec->qpd_enc_state.resume = DEI_DUP_READ_IDX; + prefix_bits = 5; + goto dei_dup_read_idx; + } + case DEI_WINR_READ_NAME_IDX: + dei_winr_read_name_idx: + r = lsqpack_dec_int24(&buf, end, prefix_bits, + &WINR.name_idx, &WINR.dec_int_state); + if (r == 0) + { + if (WINR.is_static) + { + if (WINR.name_idx < QPACK_STATIC_TABLE_SIZE) + WINR.reffed_entry = NULL; + else + return -1; + } + else + { + WINR.reffed_entry = qdec_get_table_entry_rel(dec, + WINR.name_idx); + if (!WINR.reffed_entry) + return -1; + ++WINR.reffed_entry->dte_refcnt; + } + dec->qpd_enc_state.resume = DEI_WINR_BEGIN_READ_VAL_LEN; + break; + } + else if (r == -1) + return 0; + else + return -1; + case DEI_WINR_BEGIN_READ_VAL_LEN: + WINR.is_huffman = (buf[0] & 0x80) > 0; + WINR.dec_int_state.resume = 0; + dec->qpd_enc_state.resume = DEI_WINR_READ_VAL_LEN; + prefix_bits = 7; + FALL_THROUGH; + case DEI_WINR_READ_VAL_LEN: + r = lsqpack_dec_int24(&buf, end, prefix_bits, &WINR.val_len, + &WINR.dec_int_state); + if (r == 0) + { + if (WINR.is_static) + { + WINR.name_len = static_table[WINR.name_idx].name_len; + WINR.name = static_table[WINR.name_idx].name; + } + else + { + WINR.name_len = WINR.reffed_entry->dte_name_len; + WINR.name = DTE_NAME(WINR.reffed_entry); + } + /* This check accounts for the fact that Huffman-encoded string + * can shrink. + */ + if (WINR.val_len > ((dec->qpd_cur_max_capacity + - WINR.name_len) << (WINR.is_huffman << 1))) + return -1; + if (WINR.is_huffman) + WINR.alloced_val_len = WINR.val_len + WINR.val_len / 2; + else + WINR.alloced_val_len = WINR.val_len; + WINR.entry = malloc(sizeof(*WINR.entry) + WINR.name_len + + WINR.alloced_val_len); + if (!WINR.entry) + return -1; + if (WINR.is_static) + { + WINR.entry->dte_flags = DTEF_NAME_HASH | DTEF_NAME_IDX; + WINR.entry->dte_name_hash = name_hashes[WINR.name_idx]; + WINR.entry->dte_name_idx = WINR.name_idx; + } + else + { + WINR.entry->dte_flags = WINR.reffed_entry->dte_flags + & (DTEF_NAME_HASH|DTEF_NAME_IDX); + WINR.entry->dte_name_hash + = WINR.reffed_entry->dte_name_hash; + WINR.entry->dte_name_idx = WINR.reffed_entry->dte_name_idx; + } + WINR.entry->dte_name_len = WINR.name_len; + WINR.nread = 0; + WINR.val_off = 0; + if (WINR.val_len) + { + if (WINR.is_huffman) + { + dec->qpd_enc_state.resume = DEI_WINR_READ_VALUE_HUFFMAN; + WINR.dec_huff_state.resume = 0; + } + else + dec->qpd_enc_state.resume = DEI_WINR_READ_VALUE_PLAIN; + } + else + goto winr_insert_entry; + } + else if (r == -1) + return 0; + else + return -1; + break; + case DEI_WINR_READ_VALUE_HUFFMAN: + size = MIN((unsigned) (end - buf), WINR.val_len - WINR.nread); + hdr = lsqpack_huff_decode(buf, (int)size, + (unsigned char *) DTE_VALUE(WINR.entry) + WINR.val_off, + WINR.alloced_val_len - WINR.val_off, + &WINR.dec_huff_state, WINR.nread + size == WINR.val_len); + switch (hdr.status) + { + case HUFF_DEC_OK: + buf += hdr.n_src; + WINR.entry->dte_val_len = WINR.val_off + hdr.n_dst; + WINR.entry->dte_refcnt = 1; + memcpy(DTE_NAME(WINR.entry), WINR.name, WINR.name_len); + if (WINR.reffed_entry) + { + qdec_decref_entry(WINR.reffed_entry); + WINR.reffed_entry = NULL; + } + r = lsqpack_dec_push_entry(dec, WINR.entry); + if (0 == r) + { + dec->qpd_enc_state.resume = 0; + WINR.entry = NULL; + break; + } + qdec_decref_entry(WINR.entry); + WINR.entry = NULL; + return -1; + case HUFF_DEC_END_SRC: + buf += hdr.n_src; + WINR.nread += hdr.n_src; + WINR.val_off += hdr.n_dst; + break; + case HUFF_DEC_END_DST: + WINR.alloced_val_len *= 2; + entry = realloc(WINR.entry, sizeof(*WINR.entry) + + WINR.name_len + WINR.alloced_val_len); + if (!entry) + return -1; + WINR.entry = entry; + buf += hdr.n_src; + WINR.nread += hdr.n_src; + WINR.val_off += hdr.n_dst; + break; + case HUFF_DEC_ERROR: default: + return -1; + } + break; + case DEI_WINR_READ_VALUE_PLAIN: + assert(WINR.alloced_val_len >= WINR.val_len); + size = MIN((unsigned) (end - buf), WINR.val_len - WINR.val_off); + memcpy(DTE_VALUE(WINR.entry) + WINR.val_off, buf, size); + WINR.val_off += (unsigned)size; + buf += size; + if (WINR.val_off == WINR.val_len) + { + winr_insert_entry: + WINR.entry->dte_val_len = WINR.val_off; + WINR.entry->dte_refcnt = 1; + memcpy(DTE_NAME(WINR.entry), WINR.name, WINR.name_len); + if (WINR.reffed_entry) + { + qdec_decref_entry(WINR.reffed_entry); + WINR.reffed_entry = NULL; + } + r = lsqpack_dec_push_entry(dec, WINR.entry); + if (0 == r) + { + dec->qpd_enc_state.resume = 0; + WINR.entry = NULL; + break; + } + qdec_decref_entry(WINR.entry); + WINR.entry = NULL; + return -1; + } + break; + case DEI_WONR_READ_NAME_LEN: + dei_wonr_read_name_idx: + r = lsqpack_dec_int24(&buf, end, prefix_bits, &WONR.str_len, + &DUPL.dec_int_state); + if (r == 0) + { + /* This check accounts for the fact that Huffman-encoded string + * can shrink. + */ + if (WONR.str_len > (dec->qpd_cur_max_capacity + << (WONR.is_huffman << 1))) + return -1; + WONR.alloced_len = WONR.str_len ? WONR.str_len + WONR.str_len / 2 : 16; + size = sizeof(*new_entry) + WONR.alloced_len; + WONR.entry = malloc(size); + if (!WONR.entry) + return -1; + WONR.entry->dte_flags = 0; + WONR.nread = 0; + WONR.str_off = 0; + if (WONR.is_huffman) + { + dec->qpd_enc_state.resume = DEI_WONR_READ_NAME_HUFFMAN; + WONR.dec_huff_state.resume = 0; + } + else + dec->qpd_enc_state.resume = DEI_WONR_READ_NAME_PLAIN; + break; + } + else if (r == -1) + return 0; + else + return -1; + case DEI_WONR_READ_NAME_HUFFMAN: + size = MIN((unsigned) (end - buf), WONR.str_len - WONR.nread); + hdr = lsqpack_huff_decode(buf, (int)size, + (unsigned char *) DTE_NAME(WONR.entry) + WONR.str_off, + (int)(WONR.alloced_len - WONR.str_off), + &WONR.dec_huff_state, WONR.nread + size == WONR.str_len); + switch (hdr.status) + { + case HUFF_DEC_OK: + buf += hdr.n_src; + WONR.entry->dte_name_len = WONR.str_off + hdr.n_dst; + dec->qpd_enc_state.resume = DEI_WONR_BEGIN_READ_VAL_LEN; + break; + case HUFF_DEC_END_SRC: + buf += hdr.n_src; + WONR.nread += hdr.n_src; + WONR.str_off += hdr.n_dst; + break; + case HUFF_DEC_END_DST: + WONR.alloced_len *= 2; + entry = realloc(WONR.entry, sizeof(*WONR.entry) + + WONR.alloced_len); + if (!entry) + return -1; + WONR.entry = entry; + buf += hdr.n_src; + WONR.nread += hdr.n_src; + WONR.str_off += hdr.n_dst; + break; + case HUFF_DEC_ERROR: default: + return -1; + } + break; + case DEI_WONR_READ_NAME_PLAIN: + assert(WONR.alloced_len >= WONR.str_len); + size = MIN((unsigned) (end - buf), WONR.str_len - WONR.str_off); + memcpy(DTE_NAME(WONR.entry) + WONR.str_off, buf, size); + WONR.str_off += (unsigned)size; + buf += size; + if (WONR.str_off == WONR.str_len) + { + WONR.entry->dte_name_len = WONR.str_off; + dec->qpd_enc_state.resume = DEI_WONR_BEGIN_READ_VAL_LEN; + } + break; + case DEI_WONR_BEGIN_READ_VAL_LEN: + WONR.is_huffman = (buf[0] & 0x80) > 0; + WONR.dec_int_state.resume = 0; + dec->qpd_enc_state.resume = DEI_WONR_READ_VAL_LEN; + prefix_bits = 7; + FALL_THROUGH; + case DEI_WONR_READ_VAL_LEN: + r = lsqpack_dec_int24(&buf, end, prefix_bits, &WONR.str_len, + &WONR.dec_int_state); + if (r == 0) + { + /* This check accounts for the fact that Huffman-encoded string + * can shrink. + */ + if (WONR.str_len > ((dec->qpd_cur_max_capacity + - WONR.entry->dte_name_len) << (WONR.is_huffman << 1))) + return -1; + WONR.nread = 0; + WONR.str_off = 0; + if (WONR.str_len) + { + if (WONR.is_huffman) + { + dec->qpd_enc_state.resume = DEI_WONR_READ_VALUE_HUFFMAN; + WONR.dec_huff_state.resume = 0; + } + else + dec->qpd_enc_state.resume = DEI_WONR_READ_VALUE_PLAIN; + } + else + goto wonr_insert_entry; + } + else if (r == -1) + return 0; + else + return -1; + break; + case DEI_WONR_READ_VALUE_HUFFMAN: + size = MIN((unsigned) (end - buf), WONR.str_len - WONR.nread); + hdr = lsqpack_huff_decode(buf, (int)size, + (unsigned char *) DTE_VALUE(WONR.entry) + WONR.str_off, + WONR.alloced_len - WONR.entry->dte_name_len - WONR.str_off, + &WONR.dec_huff_state, WONR.nread + size == WONR.str_len); + switch (hdr.status) + { + case HUFF_DEC_OK: + buf += hdr.n_src; + WONR.entry->dte_val_len = WONR.str_off + hdr.n_dst; + WONR.entry->dte_refcnt = 1; + r = lsqpack_dec_push_entry(dec, WONR.entry); + if (0 == r) + { + dec->qpd_enc_state.resume = 0; + WONR.entry = NULL; + break; + } + qdec_decref_entry(WONR.entry); + WONR.entry = NULL; + return -1; + case HUFF_DEC_END_SRC: + buf += hdr.n_src; + WONR.nread += hdr.n_src; + WONR.str_off += hdr.n_dst; + break; + case HUFF_DEC_END_DST: + assert(WONR.alloced_len); + WONR.alloced_len *= 2; + entry = realloc(WONR.entry, sizeof(*WONR.entry) + + WONR.alloced_len); + if (!entry) + return -1; + WONR.entry = entry; + buf += hdr.n_src; + WONR.nread += hdr.n_src; + WONR.str_off += hdr.n_dst; + break; + case HUFF_DEC_ERROR: default: + return -1; + } + break; + case DEI_WONR_READ_VALUE_PLAIN: + if (WONR.alloced_len < WONR.entry->dte_name_len + WONR.str_len) + { + WONR.alloced_len = WONR.entry->dte_name_len + WONR.str_len; + entry = realloc(WONR.entry, sizeof(*WONR.entry) + + WONR.alloced_len); + if (entry) + WONR.entry = entry; + else + return -1; + } + size = MIN((unsigned) (end - buf), WONR.str_len - WONR.str_off); + memcpy(DTE_VALUE(WONR.entry) + WONR.str_off, buf, size); + WONR.str_off += (unsigned)size; + buf += size; + if (WONR.str_off == WONR.str_len) + { + wonr_insert_entry: + WONR.entry->dte_val_len = WONR.str_off; + WONR.entry->dte_refcnt = 1; + r = lsqpack_dec_push_entry(dec, WONR.entry); + if (0 == r) + { + dec->qpd_enc_state.resume = 0; + WONR.entry = NULL; + break; + } + qdec_decref_entry(WONR.entry); + WONR.entry = NULL; + return -1; + } + break; + case DEI_DUP_READ_IDX: + dei_dup_read_idx: + r = lsqpack_dec_int24(&buf, end, prefix_bits, &DUPL.index, + &DUPL.dec_int_state); + if (r == 0) + { + entry = qdec_get_table_entry_rel(dec, DUPL.index); + if (!entry) + return -1; + size = sizeof(*new_entry) + entry->dte_name_len + + entry->dte_val_len; + new_entry = malloc(size); + if (!new_entry) + return -1; + memcpy(new_entry, entry, size); + new_entry->dte_refcnt = 1; + if (0 == lsqpack_dec_push_entry(dec, new_entry)) + { + dec->qpd_enc_state.resume = 0; + break; + } + qdec_decref_entry(new_entry); + return -1; + } + else if (r == -1) + return 0; + else + return -1; + case DEI_SIZE_UPD_READ_IDX: + dei_size_upd_read_idx: + r = lsqpack_dec_int(&buf, end, prefix_bits, &SDTC.new_size, + &SDTC.dec_int_state); + if (r == 0) + { + if (SDTC.new_size <= dec->qpd_max_capacity) + { + dec->qpd_enc_state.resume = 0; + D_DEBUG("got TSU=%"PRIu64, SDTC.new_size); + qdec_update_max_capacity(dec, (unsigned int) SDTC.new_size); + break; + } + else + return -1; + } + else if (r == -1) + return 0; + else + return -1; + default: + assert(0); + } + } + +#undef WINR +#undef WONR +#undef DUPL +#undef SDTC + + return 0; +} + + +void +lsqpack_dec_print_table (const struct lsqpack_dec *dec, FILE *out) +{ + const struct lsqpack_dec_table_entry *entry; + struct ringbuf_iter riter; + lsqpack_abs_id_t id; + + fprintf(out, "Printing decoder table state.\n"); + fprintf(out, "Max capacity: %u; current capacity: %u\n", + dec->qpd_cur_max_capacity, dec->qpd_cur_capacity); + id = ID_MINUS(dec->qpd_last_id + 1, ringbuf_count(&dec->qpd_dyn_table)); + for (entry = ringbuf_iter_first(&riter, &dec->qpd_dyn_table); + entry; entry= ringbuf_iter_next(&riter)) + { + fprintf(out, "%u) %.*s: %.*s\n", id, + entry->dte_name_len, DTE_NAME(entry), + entry->dte_val_len, DTE_VALUE(entry)); + id = ID_PLUS(id, 1); + } + fprintf(out, "\n"); +} + + +const struct lsqpack_dec_err * +lsqpack_dec_get_err_info (const struct lsqpack_dec *dec) +{ + return &dec->qpd_err; +} + +#define SHORTEST_CODE 5 + +/* This whole pragma business has to do with turning off uninitialized warnings. + * We do it for gcc and clang. Other compilers get slightly slower code, where + * unnecessary initialization is performed. + */ +#if __GNUC__ +#pragma GCC diagnostic ignored "-Wunknown-pragmas" +#if __clang__ +#pragma GCC diagnostic ignored "-Wunknown-warning-option" +#endif +#endif + +static unsigned char * +qenc_huffman_enc (const unsigned char *src, const unsigned char *const src_end, + unsigned char *dst) +{ + uintptr_t bits; /* OK not to initialize this variable */ + unsigned bits_used = 0, adj; + struct encode_el cur_enc_code; +#if __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#pragma GCC diagnostic ignored "-Wuninitialized" +#else + bits = 0; +#endif +#if LS_QPACK_USE_LARGE_TABLES + const struct henc *henc; + uint16_t idx; + + while (src + sizeof(bits) * 8 / SHORTEST_CODE + sizeof(idx) < src_end) + { + memcpy(&idx, src, 2); + henc = &hencs[idx]; + src += 2; + while (bits_used + henc->lens < sizeof(bits) * 8) + { + bits <<= henc->lens; + bits |= henc->code; + bits_used += henc->lens; + memcpy(&idx, src, 2); + henc = &hencs[idx]; + src += 2; + } + if (henc->lens < 64) + { + bits <<= sizeof(bits) * 8 - bits_used; + bits_used = henc->lens - (sizeof(bits) * 8 - bits_used); + bits |= henc->code >> bits_used; +#if UINTPTR_MAX == 18446744073709551615ull + *dst++ = (unsigned char)(bits >> 56); + *dst++ = (unsigned char)(bits >> 48); + *dst++ = (unsigned char)(bits >> 40); + *dst++ = (unsigned char)(bits >> 32); +#endif + *dst++ = (unsigned char)(bits >> 24); + *dst++ = (unsigned char)(bits >> 16); + *dst++ = (unsigned char)(bits >> 8); + *dst++ = (unsigned char)bits; + bits = henc->code; /* OK not to clear high bits */ + } + else + { + src -= 2; + break; + } + } +#endif + + while (src != src_end) + { + cur_enc_code = encode_table[*src++]; + if (bits_used + cur_enc_code.bits < sizeof(bits) * 8) + { + bits <<= cur_enc_code.bits; + bits |= cur_enc_code.code; + bits_used += cur_enc_code.bits; + continue; + } + else + { + bits <<= sizeof(bits) * 8 - bits_used; + bits_used = cur_enc_code.bits - (sizeof(bits) * 8 - bits_used); + bits |= cur_enc_code.code >> bits_used; +#if UINTPTR_MAX == 18446744073709551615ull + *dst++ = (unsigned char)(bits >> 56); + *dst++ = (unsigned char)(bits >> 48); + *dst++ = (unsigned char)(bits >> 40); + *dst++ = (unsigned char)(bits >> 32); +#endif + *dst++ = (unsigned char)(bits >> 24); + *dst++ = (unsigned char)(bits >> 16); + *dst++ = (unsigned char)(bits >> 8); + *dst++ = (unsigned char)bits; + bits = cur_enc_code.code; /* OK not to clear high bits */ + } + } + + if (bits_used) + { + adj = (bits_used + 7) & -8; /* Round up to 8 */ + bits <<= adj - bits_used; /* Align to byte boundary */ + bits |= ((1 << (adj - bits_used)) - 1); /* EOF */ + switch (adj >> 3) + { /* Write out */ +#if UINTPTR_MAX == 18446744073709551615ull + case 8: *dst++ = (unsigned char)(bits >> 56); + case 7: *dst++ = (unsigned char)(bits >> 48); + case 6: *dst++ = (unsigned char)(bits >> 40); + case 5: *dst++ = (unsigned char)(bits >> 32); +#endif + case 4: *dst++ = (unsigned char)(bits >> 24); + case 3: *dst++ = (unsigned char)(bits >> 16); + case 2: *dst++ = (unsigned char)(bits >> 8); + default: *dst++ = (unsigned char)bits; + } + } +#if __GNUC__ +#pragma GCC diagnostic pop +#endif + + return dst; +} + + +static unsigned +qenc_enc_str_size (const unsigned char *str, unsigned str_len) +{ + unsigned const char *const end = str + str_len; + unsigned enc_size_bits, enc_size_bytes; + + enc_size_bits = 0; + while (str < end) + enc_size_bits += encode_table[*str++].bits; + enc_size_bytes = enc_size_bits / 8 + ((enc_size_bits & 7) != 0); + + return enc_size_bytes; +} + + +static unsigned char * +qdec_huff_dec4bits (uint8_t src_4bits, unsigned char *dst, + struct lsqpack_decode_status *status) +{ + const struct decode_el cur_dec_code = + decode_tables[status->state][src_4bits]; + if (cur_dec_code.flags & HPACK_HUFFMAN_FLAG_FAIL) { + return NULL; //failed + } + if (cur_dec_code.flags & HPACK_HUFFMAN_FLAG_SYM) + { + *dst = cur_dec_code.sym; + dst++; + } + + status->state = cur_dec_code.state; + status->eos = ((cur_dec_code.flags & HPACK_HUFFMAN_FLAG_ACCEPTED) != 0); + return dst; +} + + +#if LS_QPACK_USE_LARGE_TABLES +/* The decoder is optimized for the common case. Most of the time, we decode + * data whose encoding is 16 bits or shorter. This lets us use a 64 KB table + * indexed by two bytes of input and outputs 1, 2, or 3 bytes at a time. + * + * In the case a longer code is encoutered, we fall back to the original + * Huffman decoder that supports all code lengths. + */ +static struct huff_decode_retval +huff_decode_fast (const unsigned char *src, int src_len, + unsigned char *dst, int dst_len, + struct lsqpack_huff_decode_state *state, int final) +{ + unsigned char *const orig_dst = dst; + const unsigned char *const src_end = src + src_len; + unsigned char *const dst_end = dst + dst_len; + uintptr_t buf; /* OK not to initialize the buffer */ + unsigned avail_bits, len; + struct huff_decode_retval rv; + struct hdec hdec; + uint16_t idx; + +#if __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#pragma GCC diagnostic ignored "-Wuninitialized" +#else + buf = 0; +#endif + + avail_bits = 0; + while (1) + { + if (src + sizeof(buf) <= src_end) + { + len = (sizeof(buf) * 8 - avail_bits) >> 3; + avail_bits += len << 3; + switch (len) + { +#if UINTPTR_MAX == 18446744073709551615ull + case 8: + buf <<= 8; + buf |= (uintptr_t) *src++; + case 7: + buf <<= 8; + buf |= (uintptr_t) *src++; + default: + buf <<= 48; + buf |= (uintptr_t) *src++ << 40; + buf |= (uintptr_t) *src++ << 32; + buf |= (uintptr_t) *src++ << 24; + buf |= (uintptr_t) *src++ << 16; +#else + case 4: + buf <<= 8; + buf |= (uintptr_t) *src++; + case 3: + buf <<= 8; + buf |= (uintptr_t) *src++; + default: + buf <<= 16; +#endif + buf |= (uintptr_t) *src++ << 8; + buf |= (uintptr_t) *src++ << 0; + } + } + else if (src < src_end) + do + { + buf <<= 8; + buf |= (uintptr_t) *src++; + avail_bits += 8; + } + while (src < src_end && avail_bits <= sizeof(buf) * 8 - 8); + else + break; /* Normal case terminating condition: out of input */ + + if (dst_end - dst >= (ptrdiff_t) (8 * sizeof(buf) / SHORTEST_CODE) + && avail_bits >= 16) + { + /* Fast path: don't check destination bounds */ + do + { + idx = (uint16_t)(buf >> (avail_bits - 16)); + hdec = hdecs[idx]; + dst[0] = hdec.out[0]; + dst[1] = hdec.out[1]; + dst[2] = hdec.out[2]; + dst += hdec.lens & 3; + avail_bits -= hdec.lens >> 2; + } + while (avail_bits >= 16 && hdec.lens); + if (avail_bits < 16) + continue; + goto slow_path; + } + else + while (avail_bits >= 16) + { + idx = (uint16_t)(buf >> (avail_bits - 16)); + hdec = hdecs[idx]; + len = hdec.lens & 3; + if (len && dst + len <= dst_end) + { + switch (len) + { + case 3: + *dst++ = hdec.out[0]; + *dst++ = hdec.out[1]; + *dst++ = hdec.out[2]; + break; + case 2: + *dst++ = hdec.out[0]; + *dst++ = hdec.out[1]; + break; + default: + *dst++ = hdec.out[0]; + break; + } + avail_bits -= hdec.lens >> 2; + } + else if (dst + len > dst_end) + goto dst_ended; + else + goto slow_path; + } + } + + if (avail_bits >= SHORTEST_CODE) + { + idx = (uint16_t)(buf << (16 - avail_bits)); + idx |= (1 << (16 - avail_bits)) - 1; /* EOF */ + if (idx == 0xFFFF && avail_bits < 8) + goto end; + /* If a byte or more of input is left, this mean there is a valid + * encoding, not just EOF. + */ + hdec = hdecs[idx]; + len = hdec.lens & 3; + if ((unsigned)(hdec.lens >> 2) > avail_bits) + return (struct huff_decode_retval) { + .status = HUFF_DEC_ERROR, + .n_dst = 0, + .n_src = 0, + }; + if (len && dst + len <= dst_end) + { + switch (len) + { + case 3: + *dst++ = hdec.out[0]; + *dst++ = hdec.out[1]; + *dst++ = hdec.out[2]; + break; + case 2: + *dst++ = hdec.out[0]; + *dst++ = hdec.out[1]; + break; + default: + *dst++ = hdec.out[0]; + break; + } + avail_bits -= hdec.lens >> 2; + } + else if (dst + len > dst_end) + goto dst_ended; + else + /* This must be an invalid code, otherwise it would have fit */ + return (struct huff_decode_retval) { + .status = HUFF_DEC_ERROR, + .n_dst = 0, + .n_src = 0, + }; + } + + if (avail_bits > 0) + { + if (((1u << avail_bits) - 1) != (buf & ((1u << avail_bits) - 1))) + return (struct huff_decode_retval) { /* Not EOF as expected */ + .status = HUFF_DEC_ERROR, + .n_dst = 0, + .n_src = 0, + }; + } +#if __GNUC__ +#pragma GCC diagnostic pop +#endif + + end: + return (struct huff_decode_retval) { + .status = HUFF_DEC_OK, + .n_dst = (unsigned)(dst - orig_dst), + .n_src = src_len - (int)(src_end - src), + }; + + dst_ended: + /* Find previous byte boundary. It is OK not to consume all input, as we + * always grow the destination buffer and try again. + */ + while ((avail_bits & 7) && dst > orig_dst) + avail_bits += encode_table[ *--dst ].bits; + assert((avail_bits & 7) == 0); + src -= avail_bits >> 3; + return (struct huff_decode_retval) { + .status = HUFF_DEC_END_DST, + .n_dst = dst_len - (int)(dst_end - dst), + .n_src = src_len - (int)(src_end - src), + }; + + slow_path: + /* Find previous byte boundary and finish decoding thence. */ + while ((avail_bits & 7) && dst > orig_dst) + avail_bits += encode_table[ *--dst ].bits; + assert((avail_bits & 7) == 0); + src -= avail_bits >> 3; + rv = lsqpack_huff_decode_full(src, (int)(src_end - src), dst, + (int)(dst_end - dst), state, final); + if (rv.status == HUFF_DEC_OK || rv.status == HUFF_DEC_END_DST) + { + rv.n_dst += dst_len - (int)(dst_end - dst); + rv.n_src += src_len - (int)(src_end - src); + } + return rv; +} +#endif +#if __GNUC__ +#pragma GCC diagnostic pop /* -Wunknown-pragmas */ +#endif diff --git a/external/lsquic/src/liblsquic/ls-qpack/lsqpack.h b/external/lsquic/src/liblsquic/ls-qpack/lsqpack.h new file mode 100644 index 0000000..d8d08a5 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/lsqpack.h @@ -0,0 +1,859 @@ +/* + * lsqpack.h - QPACK library + */ + +/* +MIT License + +Copyright (c) 2018 - 2023 LiteSpeed Technologies Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#ifndef LSQPACK_H +#define LSQPACK_H 1 + +#include +#include +#include + +#if defined(_MSC_VER) +#include +typedef SSIZE_T ssize_t; +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define LSQPACK_MAJOR_VERSION 2 +#define LSQPACK_MINOR_VERSION 6 +#define LSQPACK_PATCH_VERSION 1 + +/** Let's start with four billion for now */ +typedef unsigned lsqpack_abs_id_t; + +#define LSQPACK_MAX_ABS_ID (~((lsqpack_abs_id_t) 0)) + +#define LSQPACK_DEF_DYN_TABLE_SIZE 0 +#define LSQPACK_DEF_MAX_RISKED_STREAMS 0 + +struct lsqpack_enc; +struct lsqpack_dec; +struct lsxpack_header; + +enum lsqpack_enc_opts +{ + /** + * Client and server follow different heuristics. The encoder is either + * in one or the other mode. + * + * At the moment this option is a no-op. This is a potential future + * work item where some heuristics may be added to the library. + */ + LSQPACK_ENC_OPT_SERVER = 1 << 0, + + /** + * The encoder was pre-initialized using @ref lsqpack_enc_preinit() and + * so some initialization steps can be skipped. + */ + LSQPACK_ENC_OPT_STAGE_2 = 1 << 1, + + /* The options below are advanced. The author only uses them for debugging + * or testing. + */ + + /** + * Disable emitting dup instructions. + * + * Disabling dup instructions usually makes compression performance + * significanly worse. Do not use unless you know what you are doing. + */ + LSQPACK_ENC_OPT_NO_DUP = 1 << 2, + + /** + * Index aggressively: ignore history + * + * Ignoring history usually makes compression performance significanly + * worse. Do not use unless you know what you are doing. + */ + LSQPACK_ENC_OPT_IX_AGGR = 1 << 3, + + /** + * Turn off memory guard: keep on allocating state tracking oustanding + * headers even if they never get acknowledged. + * + * This is useful for some forms of testing. + */ + LSQPACK_ENC_OPT_NO_MEM_GUARD = 1 << 4, +}; + + +/** + * Initialize the encoder so that it can be used without using the + * dynamic table. Once peer's settings are known, call + * @ref lsqpack_enc_init(). + * + * `logger_ctx' can be set to NULL if no special logging is set up. + */ +void +lsqpack_enc_preinit (struct lsqpack_enc *, void *logger_ctx); + +/** + * Number of bytes required to encode the longest possible Set Dynamic Table + * Capacity instruction. This is a theoretical limit based on the integral + * type (unsigned int) used by this library to store the capacity value. If + * the encoder is initialized with a smaller maximum table capacity, it is + * safe to use fewer bytes. + * + * SDTC instructtion can be produced by @ref lsqpack_enc_init() and + * @ref lsqpack_enc_set_max_capacity(). + */ +#if UINT_MAX == 65535 +#define LSQPACK_LONGEST_SDTC 4 +#elif UINT_MAX == 4294967295 +#define LSQPACK_LONGEST_SDTC 6 +#elif UINT_MAX == 18446744073709551615ULL +#define LSQPACK_LONGEST_SDTC 11 +#else +#error unexpected sizeof(unsigned) +#endif + +int +lsqpack_enc_init (struct lsqpack_enc *, + /** `logger_ctx' can be set to NULL if no special logging is set up. */ + void *logger_ctx, + /** + * As specified by the decoder. This value is used to calculate + * MaxEntries. + */ + unsigned max_table_size, + /** + * Actual dynamic table size to use. + */ + unsigned dyn_table_size, + unsigned max_risked_streams, enum lsqpack_enc_opts, + /** + * If `dyn_table_size' is not zero, Set Dynamic Table Capacity (SDTC) + * instruction is generated and placed into `sdtc_buf'. `sdtc_buf_sz' + * parameter is used both for input and output. + * + * If `dyn_table_size' is zero, `sdtc_buf' and `sdtc_buf_sz' are optional + * and can be set to NULL. + */ + unsigned char *sdtc_buf, size_t *sdtc_buf_sz); + +/** + * Set table size to `capacity'. If necessary, Set Dynamic Table Capacity + * (SDTC) instruction is generated and placed into `tsu_buf'. If `capacity' + * is larger than the maximum table size specified during initialization, an + * error is returned. + */ +int +lsqpack_enc_set_max_capacity (struct lsqpack_enc *enc, unsigned capacity, + unsigned char *sdtc_buf, size_t *sdtc_buf_sz); + +/** Start a new header block. Return 0 on success or -1 on error. */ +int +lsqpack_enc_start_header (struct lsqpack_enc *, uint64_t stream_id, + unsigned seqno); + +/** Status returned by @ref lsqpack_enc_encode() */ +enum lsqpack_enc_status +{ + /** Header field encoded successfully */ + LQES_OK, + /** There was not enough room in the encoder stream buffer */ + LQES_NOBUF_ENC, + /** There was not enough room in the header block buffer */ + LQES_NOBUF_HEAD, +}; + +enum lsqpack_enc_flags +{ + /** + * Do not index this header field. No output to the encoder stream + * will be produced. + */ + LQEF_NO_INDEX = 1 << 0, + /** + * Never index this field. This will set the 'N' bit on Literal Header + * Field With Name Reference, Literal Header Field With Post-Base Name + * Reference, and Literal Header Field Without Name Reference instructions + * in the header block. Implies LQEF_NO_INDEX. + */ + LQEF_NEVER_INDEX = 1 << 1, + /** + * Do not update history. + */ + LQEF_NO_HIST_UPD = 1 << 2, + /** + * Do not use the dynamic table. This is stricter than LQEF_NO_INDEX: + * this means that the dynamic table will be neither referenced nor + * modified. + */ + LQEF_NO_DYN = 1 << 3, +}; + +/** + * Encode header field into current header block. + * + * See @ref lsqpack_enc_status for explanation of the return values. + * + * enc_sz and header_sz parameters are used for both input and output. If + * the return value is LQES_OK, they contain number of bytes written to + * enc_buf and header_buf, respectively. enc_buf contains the bytes that + * must be written to the encoder stream; header_buf contains bytes that + * must be written to the header block. + * + * Note that even though this function may allocate memory, it falls back to + * not using the dynamic table should memory allocation fail. Thus, failures + * to encode due to not enough memory do not exist. + */ +enum lsqpack_enc_status +lsqpack_enc_encode (struct lsqpack_enc *, + unsigned char *enc_buf, size_t *enc_sz, + unsigned char *header_buf, size_t *header_sz, + const struct lsxpack_header *, + enum lsqpack_enc_flags flags); + +/** + * Cancel current header block. Cancellation is only allowed if the dynamic + * table is not used. Returns 0 on success, -1 on failure. + */ +int +lsqpack_enc_cancel_header (struct lsqpack_enc *); + + +/** + * Properties of the current header block + */ +enum lsqpack_enc_header_flags +{ + /** Set if there are at-risk references in this header block */ + LSQECH_REF_AT_RISK = 1 << 0, + /** Set if the header block references newly inserted entries */ + LSQECH_REF_NEW_ENTRIES = 1 << 1, + /** Set if min-reffed value is cached */ + LSQECH_MINREF_CACHED = 1 << 2, +}; + + +/** + * End current header block. The Header Block Prefix is written to `buf'. + * + * `buf' must be at least two bytes. 11 bytes are necessary to encode + * UINT64_MAX using 7- or 8-bit prefix. Therefore, 22 bytes is the + * theoretical maximum for this library. + * + * Use @ref lsqpack_enc_header_block_prefix_size() if you require better + * precision. + * + * Returns: + * - A positive value indicates success and is the number of bytes + * written to `buf'. + * - Zero means that there is not enough room in `buf' to write out the + * full prefix. + * - A negative value means an error. This is returned if there is no + * started header to end. + * + * If header was ended successfully and @ref flags is not NULL, it is + * assigned properties of the header block. + */ +ssize_t +lsqpack_enc_end_header (struct lsqpack_enc *, unsigned char *buf, size_t, + enum lsqpack_enc_header_flags *flags /* Optional */); + +/** + * Process next chunk of bytes from the decoder stream. Returns 0 on success, + * -1 on failure. The failure should be treated as fatal. + */ +int +lsqpack_enc_decoder_in (struct lsqpack_enc *, const unsigned char *, size_t); + +/** + * Return estimated compression ratio until this point. Compression ratio + * is defined as size of the output divided by the size of the input, where + * output includes both header blocks and instructions sent on the encoder + * stream. + */ +float +lsqpack_enc_ratio (const struct lsqpack_enc *); + +/** + * Return maximum size needed to encode Header Block Prefix + */ +size_t +lsqpack_enc_header_block_prefix_size (const struct lsqpack_enc *); + +void +lsqpack_enc_cleanup (struct lsqpack_enc *); + +/** Decoder header set interface */ +struct lsqpack_dec_hset_if +{ + void (*dhi_unblocked)(void *hblock_ctx); + struct lsxpack_header * + (*dhi_prepare_decode)(void *hblock_ctx, + struct lsxpack_header *, size_t space); + int (*dhi_process_header)(void *hblock_ctx, struct lsxpack_header *); +}; + +enum lsqpack_dec_opts +{ + /** + * In this mode, returned lsxpack_header will contain ": " between + * name and value strings and have "\r\n" after the value. + */ + LSQPACK_DEC_OPT_HTTP1X = 1 << 0, + /** Include name hash into lsxpack_header */ + LSQPACK_DEC_OPT_HASH_NAME = 1 << 1, + /** Include nameval hash into lsxpack_header */ + LSQPACK_DEC_OPT_HASH_NAMEVAL = 1 << 2, +}; + +void +lsqpack_dec_init (struct lsqpack_dec *, void *logger_ctx, + unsigned dyn_table_size, unsigned max_risked_streams, + const struct lsqpack_dec_hset_if *, enum lsqpack_dec_opts); + +/** + * Values returned by @ref lsqpack_dec_header_in() and + * @ref lsqpack_dec_header_read() + */ +enum lsqpack_read_header_status +{ + /** + * The decoder decodes the header and placed it in `buf'. + * It is caller's responsibility to manage provided `buf'. + */ + LQRHS_DONE, + /** + * The decoder cannot decode the header block until more dynamic table + * entries become available. `buf' is advanced. When the header block + * becomes unblocked, the decoder will call hblock_unblocked() callback + * specified in the constructor. See @ref lsqpack_dec_init(). + * + * Once a header block is unblocked, it cannot get blocked again. In + * other words, this status can only be returned once per header block. + */ + LQRHS_BLOCKED, + /** + * The decoder needs more bytes from the header block to proceed. When + * they become available, call @ref lsqpack_dec_header_read(). `buf' is + * advanced. + */ + LQRHS_NEED, + /** + * An error has occurred. This can be any error: decoding error, memory + * allocation failure, or some internal error. + */ + LQRHS_ERROR, +}; + +/** + * Number of bytes needed to encode the longest Header Acknowledgement + * instruction. + */ +#define LSQPACK_LONGEST_HEADER_ACK 10 + + +/** + * Call this function when the header blocks is first read. The decoder + * will try to decode the header block. The decoder can process header + * blocks in a streaming fashion, which means that there is no need to + * buffer the header block. As soon as header block bytes become available, + * they can be fed to this function or @ref lsqpack_dec_header_read(). + * + * See @ref lsqpack_read_header_status for explanation of the return codes. + * + * If the decoder returns LQRHS_NEED or LQRHS_BLOCKED, it keeps a reference to + * the user-provided header block context `hblock_ctx'. It uses this value for + * two purposes: + * 1. to use as argument to hblock_unblocked(); and + * 2. to locate header block state when @ref lsqpack_dec_header_read() is + * called. + * + * If the decoder returns LQRHS_DONE or LQRHS_ERROR, it means that it no + * longer has a reference to the header block. + */ +enum lsqpack_read_header_status +lsqpack_dec_header_in (struct lsqpack_dec *, void *hblock_ctx, + uint64_t stream_id, size_t header_block_size, + const unsigned char **buf, size_t bufsz, + unsigned char *dec_buf, size_t *dec_buf_sz); + +/** + * Call this function when more header block bytes are become available + * after this function or @ref lsqpack_dec_header_in() returned LQRHS_NEED + * or hblock_unblocked() callback has been called. This function behaves + * similarly to @ref lsqpack_dec_header_in(): see its comments for more + * information. + */ +enum lsqpack_read_header_status +lsqpack_dec_header_read (struct lsqpack_dec *dec, void *hblock_ctx, + const unsigned char **buf, size_t bufsz, + unsigned char *dec_buf, size_t *dec_buf_sz); + +/** + * Feed encoder stream data to the decoder. Zero is returned on success, + * negative value on error. + */ +int +lsqpack_dec_enc_in (struct lsqpack_dec *, const unsigned char *, size_t); + +/** + * Returns true if Insert Count Increment (ICI) instruction is pending. + */ +int +lsqpack_dec_ici_pending (const struct lsqpack_dec *dec); + +/** + * Number of bytes required to encode the longest Insert Count Increment (ICI) + * instruction. + */ +#define LSQPACK_LONGEST_ICI 6 + +ssize_t +lsqpack_dec_write_ici (struct lsqpack_dec *, unsigned char *, size_t); + +/** Number of bytes required to encode the longest cancel instruction */ +#define LSQPACK_LONGEST_CANCEL 6 + +/** + * Cancel stream associated with the header block context `hblock_ctx' and + * write cancellation instruction to `buf'. `buf' must be at least + * @ref LSQPACK_LONGEST_CANCEL bytes long. + * + * Number of bytes written to `buf' is returned. If stream `stream_id' + * could not be found, zero is returned. If `buf' is too short, -1 is + * returned. + */ +ssize_t +lsqpack_dec_cancel_stream (struct lsqpack_dec *, void *hblock_ctx, + unsigned char *buf, size_t buf_sz); + +/** + * Generate Cancel Stream instruction for stream `stream_id'. Call when + * abandoning stream (see [draft-ietf-quic-qpack-14] Section 2.2.2.2). + * + * Return values: + * -1 error (`buf' is too short) + * 0 Emitting Cancel Stream instruction is unnecessary + * >0 Size of Cancel Stream instruction written to `buf'. + */ +ssize_t +lsqpack_dec_cancel_stream_id (struct lsqpack_dec *dec, uint64_t stream_id, + unsigned char *buf, size_t buf_sz); + +/** + * Delete reference to the header block context `hblock_ctx'. Use this + * instead of @ref lsqpack_dec_cancel_stream() when producing a Cancel Stream + * instruction is not necessary. + */ +int +lsqpack_dec_unref_stream (struct lsqpack_dec *, void *hblock_ctx); + +/** + * Return estimated compression ratio until this point. Compression ratio + * is defined as size of the input divided by the size of the output, where + * input includes both header blocks and instructions received on the encoder + * stream. + */ +float +lsqpack_dec_ratio (const struct lsqpack_dec *); + +/** + * Clean up the decoder. If any there are any blocked header blocks, + * references to them will be discarded. + */ +void +lsqpack_dec_cleanup (struct lsqpack_dec *); + +/** + * Print human-readable decoder table. + */ +void +lsqpack_dec_print_table (const struct lsqpack_dec *, FILE *out); + + +struct lsqpack_dec_err +{ + enum { + LSQPACK_DEC_ERR_LOC_HEADER_BLOCK, + LSQPACK_DEC_ERR_LOC_ENC_STREAM, + } type; + int line; /* In the source file */ + uint64_t off; /* Offset in header block or on encoder stream */ + uint64_t stream_id; /* Only applicable to header block */ +}; + + +const struct lsqpack_dec_err * +lsqpack_dec_get_err_info (const struct lsqpack_dec *); + +/** + * Enum for name/value entries in the static table. Use it to speed up + * encoding by setting xhdr->qpack_index and LSXPACK_QPACK_IDX flag. If + * it's a full match, set LSXPACK_VAL_MATCHED flag as well. + */ +enum lsqpack_tnv +{ + LSQPACK_TNV_AUTHORITY = 0, /* ":authority" "" */ + LSQPACK_TNV_PATH = 1, /* ":path" "/" */ + LSQPACK_TNV_AGE_0 = 2, /* "age" "0" */ + LSQPACK_TNV_CONTENT_DISPOSITION = 3, /* "content-disposition" "" */ + LSQPACK_TNV_CONTENT_LENGTH_0 = 4, /* "content-length" "0" */ + LSQPACK_TNV_COOKIE = 5, /* "cookie" "" */ + LSQPACK_TNV_DATE = 6, /* "date" "" */ + LSQPACK_TNV_ETAG = 7, /* "etag" "" */ + LSQPACK_TNV_IF_MODIFIED_SINCE = 8, /* "if-modified-since" "" */ + LSQPACK_TNV_IF_NONE_MATCH = 9, /* "if-none-match" "" */ + LSQPACK_TNV_LAST_MODIFIED = 10, /* "last-modified" "" */ + LSQPACK_TNV_LINK = 11, /* "link" "" */ + LSQPACK_TNV_LOCATION = 12, /* "location" "" */ + LSQPACK_TNV_REFERER = 13, /* "referer" "" */ + LSQPACK_TNV_SET_COOKIE = 14, /* "set-cookie" "" */ + LSQPACK_TNV_METHOD_CONNECT = 15, /* ":method" "CONNECT" */ + LSQPACK_TNV_METHOD_DELETE = 16, /* ":method" "DELETE" */ + LSQPACK_TNV_METHOD_GET = 17, /* ":method" "GET" */ + LSQPACK_TNV_METHOD_HEAD = 18, /* ":method" "HEAD" */ + LSQPACK_TNV_METHOD_OPTIONS = 19, /* ":method" "OPTIONS" */ + LSQPACK_TNV_METHOD_POST = 20, /* ":method" "POST" */ + LSQPACK_TNV_METHOD_PUT = 21, /* ":method" "PUT" */ + LSQPACK_TNV_SCHEME_HTTP = 22, /* ":scheme" "http" */ + LSQPACK_TNV_SCHEME_HTTPS = 23, /* ":scheme" "https" */ + LSQPACK_TNV_STATUS_103 = 24, /* ":status" "103" */ + LSQPACK_TNV_STATUS_200 = 25, /* ":status" "200" */ + LSQPACK_TNV_STATUS_304 = 26, /* ":status" "304" */ + LSQPACK_TNV_STATUS_404 = 27, /* ":status" "404" */ + LSQPACK_TNV_STATUS_503 = 28, /* ":status" "503" */ + LSQPACK_TNV_ACCEPT = 29, /* "accept" star slash star */ + LSQPACK_TNV_ACCEPT_APPLICATION_DNS_MESSAGE = 30, /* "accept" "application/dns-message" */ + LSQPACK_TNV_ACCEPT_ENCODING_GZIP_DEFLATE_BR = 31, /* "accept-encoding" "gzip, deflate, br" */ + LSQPACK_TNV_ACCEPT_RANGES_BYTES = 32, /* "accept-ranges" "bytes" */ + LSQPACK_TNV_ACCESS_CONTROL_ALLOW_HEADERS_CACHE_CONTROL = 33, /* "access-control-allow-headers" "cache-control" */ + LSQPACK_TNV_ACCESS_CONTROL_ALLOW_HEADERS_CONTENT_TYPE = 34, /* "access-control-allow-headers" "content-type" */ + LSQPACK_TNV_ACCESS_CONTROL_ALLOW_ORIGIN = 35, /* "access-control-allow-origin" "*" */ + LSQPACK_TNV_CACHE_CONTROL_MAX_AGE_0 = 36, /* "cache-control" "max-age=0" */ + LSQPACK_TNV_CACHE_CONTROL_MAX_AGE_2592000 = 37, /* "cache-control" "max-age=2592000" */ + LSQPACK_TNV_CACHE_CONTROL_MAX_AGE_604800 = 38, /* "cache-control" "max-age=604800" */ + LSQPACK_TNV_CACHE_CONTROL_NO_CACHE = 39, /* "cache-control" "no-cache" */ + LSQPACK_TNV_CACHE_CONTROL_NO_STORE = 40, /* "cache-control" "no-store" */ + LSQPACK_TNV_CACHE_CONTROL_PUBLIC_MAX_AGE_31536000 = 41, /* "cache-control" "public, max-age=31536000" */ + LSQPACK_TNV_CONTENT_ENCODING_BR = 42, /* "content-encoding" "br" */ + LSQPACK_TNV_CONTENT_ENCODING_GZIP = 43, /* "content-encoding" "gzip" */ + LSQPACK_TNV_CONTENT_TYPE_APPLICATION_DNS_MESSAGE = 44, /* "content-type" "application/dns-message" */ + LSQPACK_TNV_CONTENT_TYPE_APPLICATION_JAVASCRIPT = 45, /* "content-type" "application/javascript" */ + LSQPACK_TNV_CONTENT_TYPE_APPLICATION_JSON = 46, /* "content-type" "application/json" */ + LSQPACK_TNV_CONTENT_TYPE_APPLICATION_X_WWW_FORM_URLENCODED = 47, /* "content-type" "application/x-www-form-urlencoded" */ + LSQPACK_TNV_CONTENT_TYPE_IMAGE_GIF = 48, /* "content-type" "image/gif" */ + LSQPACK_TNV_CONTENT_TYPE_IMAGE_JPEG = 49, /* "content-type" "image/jpeg" */ + LSQPACK_TNV_CONTENT_TYPE_IMAGE_PNG = 50, /* "content-type" "image/png" */ + LSQPACK_TNV_CONTENT_TYPE_TEXT_CSS = 51, /* "content-type" "text/css" */ + LSQPACK_TNV_CONTENT_TYPE_TEXT_HTML_CHARSET_UTF_8 = 52, /* "content-type" "text/html; charset=utf-8" */ + LSQPACK_TNV_CONTENT_TYPE_TEXT_PLAIN = 53, /* "content-type" "text/plain" */ + LSQPACK_TNV_CONTENT_TYPE_TEXT_PLAIN_CHARSET_UTF_8 = 54, /* "content-type" "text/plain;charset=utf-8" */ + LSQPACK_TNV_RANGE_BYTES_0 = 55, /* "range" "bytes=0-" */ + LSQPACK_TNV_STRICT_TRANSPORT_SECURITY_MAX_AGE_31536000 = 56, /* "strict-transport-security" "max-age=31536000" */ + LSQPACK_TNV_STRICT_TRANSPORT_SECURITY_MAX_AGE_31536000_INCLUDESUBDOMAINS = 57, /* "strict-transport-security" "max-age=31536000; includesubdomains" */ + LSQPACK_TNV_STRICT_TRANSPORT_SECURITY_MAX_AGE_31536000_INCLUDESUBDOMAINS_PRELOAD = 58, /* "strict-transport-security" "max-age=31536000; includesubdomains; preload" */ + LSQPACK_TNV_VARY_ACCEPT_ENCODING = 59, /* "vary" "accept-encoding" */ + LSQPACK_TNV_VARY_ORIGIN = 60, /* "vary" "origin" */ + LSQPACK_TNV_X_CONTENT_TYPE_OPTIONS_NOSNIFF = 61, /* "x-content-type-options" "nosniff" */ + LSQPACK_TNV_X_XSS_PROTECTION_1_MODE_BLOCK = 62, /* "x-xss-protection" "1; mode=block" */ + LSQPACK_TNV_STATUS_100 = 63, /* ":status" "100" */ + LSQPACK_TNV_STATUS_204 = 64, /* ":status" "204" */ + LSQPACK_TNV_STATUS_206 = 65, /* ":status" "206" */ + LSQPACK_TNV_STATUS_302 = 66, /* ":status" "302" */ + LSQPACK_TNV_STATUS_400 = 67, /* ":status" "400" */ + LSQPACK_TNV_STATUS_403 = 68, /* ":status" "403" */ + LSQPACK_TNV_STATUS_421 = 69, /* ":status" "421" */ + LSQPACK_TNV_STATUS_425 = 70, /* ":status" "425" */ + LSQPACK_TNV_STATUS_500 = 71, /* ":status" "500" */ + LSQPACK_TNV_ACCEPT_LANGUAGE = 72, /* "accept-language" "" */ + LSQPACK_TNV_ACCESS_CONTROL_ALLOW_CREDENTIALS_FALSE = 73, /* "access-control-allow-credentials" "FALSE" */ + LSQPACK_TNV_ACCESS_CONTROL_ALLOW_CREDENTIALS_TRUE = 74, /* "access-control-allow-credentials" "TRUE" */ + LSQPACK_TNV_ACCESS_CONTROL_ALLOW_HEADERS = 75, /* "access-control-allow-headers" "*" */ + LSQPACK_TNV_ACCESS_CONTROL_ALLOW_METHODS_GET = 76, /* "access-control-allow-methods" "get" */ + LSQPACK_TNV_ACCESS_CONTROL_ALLOW_METHODS_GET_POST_OPTIONS = 77, /* "access-control-allow-methods" "get, post, options" */ + LSQPACK_TNV_ACCESS_CONTROL_ALLOW_METHODS_OPTIONS = 78, /* "access-control-allow-methods" "options" */ + LSQPACK_TNV_ACCESS_CONTROL_EXPOSE_HEADERS_CONTENT_LENGTH = 79, /* "access-control-expose-headers" "content-length" */ + LSQPACK_TNV_ACCESS_CONTROL_REQUEST_HEADERS_CONTENT_TYPE = 80, /* "access-control-request-headers" "content-type" */ + LSQPACK_TNV_ACCESS_CONTROL_REQUEST_METHOD_GET = 81, /* "access-control-request-method" "get" */ + LSQPACK_TNV_ACCESS_CONTROL_REQUEST_METHOD_POST = 82, /* "access-control-request-method" "post" */ + LSQPACK_TNV_ALT_SVC_CLEAR = 83, /* "alt-svc" "clear" */ + LSQPACK_TNV_AUTHORIZATION = 84, /* "authorization" "" */ + LSQPACK_TNV_CONTENT_SECURITY_POLICY_SCRIPT_SRC_NONE_OBJECT_SRC_NONE_BASE_URI_NONE = 85, /* "content-security-policy" "script-src 'none'; object-src 'none'; base-uri 'none'" */ + LSQPACK_TNV_EARLY_DATA_1 = 86, /* "early-data" "1" */ + LSQPACK_TNV_EXPECT_CT = 87, /* "expect-ct" "" */ + LSQPACK_TNV_FORWARDED = 88, /* "forwarded" "" */ + LSQPACK_TNV_IF_RANGE = 89, /* "if-range" "" */ + LSQPACK_TNV_ORIGIN = 90, /* "origin" "" */ + LSQPACK_TNV_PURPOSE_PREFETCH = 91, /* "purpose" "prefetch" */ + LSQPACK_TNV_SERVER = 92, /* "server" "" */ + LSQPACK_TNV_TIMING_ALLOW_ORIGIN = 93, /* "timing-allow-origin" "*" */ + LSQPACK_TNV_UPGRADE_INSECURE_REQUESTS_1 = 94, /* "upgrade-insecure-requests" "1" */ + LSQPACK_TNV_USER_AGENT = 95, /* "user-agent" "" */ + LSQPACK_TNV_X_FORWARDED_FOR = 96, /* "x-forwarded-for" "" */ + LSQPACK_TNV_X_FRAME_OPTIONS_DENY = 97, /* "x-frame-options" "deny" */ + LSQPACK_TNV_X_FRAME_OPTIONS_SAMEORIGIN = 98, /* "x-frame-options" "sameorigin" */ +}; + +#ifdef __cplusplus +} +#endif + + +/* + * Internals follow. The internals are subject to change without notice. + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* It takes 11 bytes to encode UINT64_MAX as HPACK integer */ +#define LSQPACK_UINT64_ENC_SZ 11u + +struct lsqpack_enc_table_entry; + +STAILQ_HEAD(lsqpack_enc_head, lsqpack_enc_table_entry); +struct lsqpack_double_enc_head; + +struct lsqpack_header_info_arr; + +struct lsqpack_dec_int_state +{ + int resume; + unsigned M, nread; + uint64_t val; +}; + +struct lsqpack_enc +{ + /* The number of all the entries in the dynamic table that have been + * created so far. This is used to calculate the Absolute Index. + */ + lsqpack_abs_id_t qpe_ins_count; + lsqpack_abs_id_t qpe_max_acked_id; + lsqpack_abs_id_t qpe_last_ici; + + enum { + LSQPACK_ENC_HEADER = 1 << 0, + LSQPACK_ENC_USE_DUP = 1 << 1, + LSQPACK_ENC_NO_MEM_GUARD = 1 << 2, + } qpe_flags; + + unsigned qpe_cur_bytes_used; + unsigned qpe_cur_max_capacity; + unsigned qpe_real_max_capacity; + unsigned qpe_max_entries; + /* Sum of all dropped entries. OK if it overflows. */ + unsigned qpe_dropped; + + /* The maximum risked streams is the SETTINGS_QPACK_BLOCKED_STREAMS + * setting. Note that streams must be differentiated from headers. + */ + unsigned qpe_max_risked_streams; + unsigned qpe_cur_streams_at_risk; + + /* Number of used entries in qpe_hinfo_arrs */ + unsigned qpe_hinfo_arrs_count; + + /* Dynamic table entries (struct enc_table_entry) live in two hash + * tables: name/value hash table and name hash table. These tables + * are the same size. + */ + unsigned qpe_nelem; + unsigned qpe_nbits; + struct lsqpack_enc_head qpe_all_entries; + struct lsqpack_double_enc_head + *qpe_buckets; + + STAILQ_HEAD(, lsqpack_header_info_arr) + qpe_hinfo_arrs; + TAILQ_HEAD(, lsqpack_header_info) + qpe_all_hinfos; + TAILQ_HEAD(, lsqpack_header_info) + qpe_risked_hinfos; + + /* Current header state */ + struct { + struct lsqpack_header_info *hinfo, *other_at_risk; + + /* Number of headers in this header list added to the history */ + unsigned n_hdr_added_to_hist; + lsqpack_abs_id_t min_reffed; + enum lsqpack_enc_header_flags + flags; + lsqpack_abs_id_t base_idx; + } qpe_cur_header; + + struct { + struct lsqpack_dec_int_state dec_int_state; + int (*handler)(struct lsqpack_enc *, uint64_t); + } qpe_dec_stream_state; + + /* Used to calculate estimated compression ratio. Note that the `out' + * part contains bytes sent on the decoder stream, as it also counts + * toward the overhead. + */ + unsigned qpe_bytes_in; + unsigned qpe_bytes_out; + void *qpe_logger_ctx; + + /* Exponential moving averages (EMAs) of the number of elements in the + * dynamic table and the number of header fields in a single header list. + * These values are used to adjust history size. + */ + float qpe_table_nelem_ema; + float qpe_header_count_ema; + + struct lsqpack_hist_el *qpe_hist_els; + unsigned qpe_hist_idx; + unsigned qpe_hist_nels; + int qpe_hist_wrapped; +}; + +struct lsqpack_ringbuf +{ + unsigned rb_nalloc, rb_head, rb_tail; + void **rb_els; +}; + +TAILQ_HEAD(lsqpack_header_sets, lsqpack_header_set_elem); + +struct lsqpack_header_block; + +struct lsqpack_decode_status +{ + uint8_t state; + uint8_t eos; +}; + +struct lsqpack_huff_decode_state +{ + int resume; + struct lsqpack_decode_status status; +}; + +struct lsqpack_dec_inst; + +struct lsqpack_dec +{ + enum lsqpack_dec_opts qpd_opts; + /** This is the hard limit set at initialization */ + unsigned qpd_max_capacity; + /** The current maximum capacity can be adjusted at run-time */ + unsigned qpd_cur_max_capacity; + unsigned qpd_cur_capacity; + unsigned qpd_max_risked_streams; + unsigned qpd_max_entries; + /* Used to calculate estimated compression ratio. Note that the `in' + * part contains bytes sent on the decoder stream, as it also counts + * toward the overhead. + */ + unsigned qpd_bytes_in; + unsigned qpd_bytes_out; + /** ID of the last dynamic table entry. Has the range + * [0, qpd_max_entries * 2 - 1 ] + */ + lsqpack_abs_id_t qpd_last_id; + /** TODO: describe the mechanism */ + lsqpack_abs_id_t qpd_largest_known_id; + const struct lsqpack_dec_hset_if + *qpd_dh_if; + + void *qpd_logger_ctx; + + /** This is the dynamic table */ + struct lsqpack_ringbuf qpd_dyn_table; + + TAILQ_HEAD(, header_block_read_ctx) + qpd_hbrcs; + + /** Blocked headers are kept in a small hash */ +#define LSQPACK_DEC_BLOCKED_BITS 3 + TAILQ_HEAD(, header_block_read_ctx) + qpd_blocked_headers[1 << LSQPACK_DEC_BLOCKED_BITS]; + /** Number of blocked streams (in qpd_blocked_headers) */ + unsigned qpd_n_blocked; + + /** Average number of header fields in header list */ + float qpd_hlist_size_ema; + + /** Reading the encoder stream */ + struct { + int resume; + union { + /* State for reading in the Insert With Named Reference + * instruction. + */ + struct { + struct lsqpack_dec_int_state dec_int_state; + struct lsqpack_huff_decode_state dec_huff_state; + unsigned name_idx; + unsigned val_len; + struct lsqpack_dec_table_entry *reffed_entry; + struct lsqpack_dec_table_entry *entry; + const char *name; + unsigned alloced_val_len; + unsigned val_off; + unsigned nread; + unsigned name_len; + signed char is_huffman; + signed char is_static; + } with_namref; + + /* State for reading in the Insert Without Named Reference + * instruction. + */ + struct { + struct lsqpack_dec_int_state dec_int_state; + struct lsqpack_huff_decode_state dec_huff_state; + unsigned str_len; + struct lsqpack_dec_table_entry *entry; + unsigned alloced_len; + unsigned str_off; + unsigned nread; + signed char is_huffman; + } wo_namref; + + struct { + struct lsqpack_dec_int_state dec_int_state; + unsigned index; + } duplicate; + + struct { + struct lsqpack_dec_int_state dec_int_state; + uint64_t new_size; + } sdtc; + } ctx_u; + } qpd_enc_state; + struct lsqpack_dec_err qpd_err; +}; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/external/lsquic/src/liblsquic/ls-qpack/lsqpack.pc.in b/external/lsquic/src/liblsquic/ls-qpack/lsqpack.pc.in new file mode 100644 index 0000000..f25a375 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/lsqpack.pc.in @@ -0,0 +1,12 @@ +prefix="@CMAKE_INSTALL_PREFIX@" +exec_prefix="${prefix}" +libdir="${prefix}/@CMAKE_INSTALL_LIBDIR@" +includedir="${prefix}/@CMAKE_INSTALL_INCLUDEDIR@" + +Name: @PROJECT_NAME@ +Description: @CMAKE_PROJECT_DESCRIPTION@ +URL: @CMAKE_PROJECT_HOMEPAGE_URL@ +Version: @PROJECT_VERSION@ +Requires.private: @LSQPACK_DEPENDS@ +Cflags: -I"${includedir}" +Libs: -L"${libdir}" -lls-qpack diff --git a/external/lsquic/src/liblsquic/ls-qpack/lsxpack_header.h b/external/lsquic/src/liblsquic/ls-qpack/lsxpack_header.h new file mode 100644 index 0000000..c33472e --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/lsxpack_header.h @@ -0,0 +1,169 @@ +#ifndef LSXPACK_HEADER_H_v208 +#define LSXPACK_HEADER_H_v208 + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef LSXPACK_MAX_STRLEN +#define LSXPACK_MAX_STRLEN UINT16_MAX +#endif + +typedef int32_t lsxpack_offset_t; +#if LSXPACK_MAX_STRLEN == UINT16_MAX +typedef uint16_t lsxpack_strlen_t; +#elif LSXPACK_MAX_STRLEN == UINT32_MAX +typedef uint32_t lsxpack_strlen_t; +#else +#error unexpected LSXPACK_MAX_STRLEN +#endif + +#define LSXPACK_DEL ((char *)NULL) + +enum lsxpack_flag +{ + LSXPACK_HPACK_VAL_MATCHED = 1, + LSXPACK_QPACK_IDX = 2, + LSXPACK_APP_IDX = 4, + LSXPACK_NAME_HASH = 8, + LSXPACK_NAMEVAL_HASH = 16, + LSXPACK_VAL_MATCHED = 32, + LSXPACK_NEVER_INDEX = 64, +}; + +/** + * When header are decoded, it should be stored to @buf starting from @name_offset, + * : \r\n + * So, it can be used directly as HTTP/1.1 header. there are 4 extra characters + * added. + * + * limitation: we currently does not support total header size > 64KB. + */ + +struct lsxpack_header +{ + char *buf; /* the buffer for headers */ + uint32_t name_hash; /* hash value for name */ + uint32_t nameval_hash; /* hash value for name + value */ + lsxpack_offset_t name_offset; /* the offset for name in the buffer */ + lsxpack_offset_t val_offset; /* the offset for value in the buffer */ + lsxpack_strlen_t name_len; /* the length of name */ + lsxpack_strlen_t val_len; /* the length of value */ + uint16_t chain_next_idx; /* mainly for cookie value chain */ + uint8_t hpack_index; /* HPACK static table index */ + uint8_t qpack_index; /* QPACK static table index */ + uint8_t app_index; /* APP header index */ + enum lsxpack_flag flags:8; /* combination of lsxpack_flag */ + uint8_t indexed_type; /* control to disable index or not */ + uint8_t dec_overhead; /* num of extra bytes written to decoded buffer */ +}; + +typedef struct lsxpack_header lsxpack_header_t; + + +static inline void +lsxpack_header_set_idx(lsxpack_header_t *hdr, int hpack_idx, + const char *val, size_t val_len) +{ + memset(hdr, 0, sizeof(*hdr)); + hdr->buf = (char *)val; + hdr->hpack_index = (uint8_t)hpack_idx; + assert(hpack_idx != 0); + assert(val_len <= LSXPACK_MAX_STRLEN); + hdr->val_len = (lsxpack_strlen_t)val_len; +} + + +static inline void +lsxpack_header_set_qpack_idx(lsxpack_header_t *hdr, int qpack_idx, + const char *val, size_t val_len) +{ + memset(hdr, 0, sizeof(*hdr)); + hdr->buf = (char *)val; + hdr->qpack_index = (uint8_t)qpack_idx; + assert(qpack_idx != -1); + hdr->flags = LSXPACK_QPACK_IDX; + assert(val_len <= LSXPACK_MAX_STRLEN); + hdr->val_len = (lsxpack_strlen_t)val_len; +} + + +static inline void +lsxpack_header_set_offset(lsxpack_header_t *hdr, const char *buf, + size_t name_offset, size_t name_len, + size_t val_len) +{ + memset(hdr, 0, sizeof(*hdr)); + hdr->buf = (char *)buf; + hdr->name_offset = (lsxpack_offset_t)name_offset; + assert(name_len <= LSXPACK_MAX_STRLEN); + hdr->name_len = (lsxpack_strlen_t)name_len; + assert(name_offset + name_len + 2 <= LSXPACK_MAX_STRLEN); + hdr->val_offset = (lsxpack_offset_t)(name_offset + name_len + 2); + assert(val_len <= LSXPACK_MAX_STRLEN); + hdr->val_len = (lsxpack_strlen_t)val_len; +} + + +static inline void +lsxpack_header_set_offset2(lsxpack_header_t *hdr, const char *buf, + size_t name_offset, size_t name_len, + size_t val_offset, size_t val_len) +{ + memset(hdr, 0, sizeof(*hdr)); + hdr->buf = (char *)buf; + hdr->name_offset = (lsxpack_offset_t)name_offset; + assert(name_len <= LSXPACK_MAX_STRLEN); + hdr->name_len = (lsxpack_strlen_t)name_len; + assert(val_offset <= LSXPACK_MAX_STRLEN); + hdr->val_offset = (lsxpack_offset_t)val_offset; + assert(val_len <= LSXPACK_MAX_STRLEN); + hdr->val_len = (lsxpack_strlen_t)val_len; +} + + +static inline void +lsxpack_header_prepare_decode(lsxpack_header_t *hdr, + char *out, size_t offset, size_t len) +{ + memset(hdr, 0, sizeof(*hdr)); + hdr->buf = out; + assert(offset <= LSXPACK_MAX_STRLEN); + hdr->name_offset = (lsxpack_offset_t)offset; + if (len > LSXPACK_MAX_STRLEN) + hdr->val_len = LSXPACK_MAX_STRLEN; + else + hdr->val_len = (lsxpack_strlen_t)len; +} + + +static inline const char * +lsxpack_header_get_name(const lsxpack_header_t *hdr) +{ + return (hdr->name_len)? hdr->buf + hdr->name_offset : NULL; +} + + +static inline const char * +lsxpack_header_get_value(const lsxpack_header_t *hdr) +{ return hdr->buf + hdr->val_offset; } + +static inline size_t +lsxpack_header_get_dec_size(const lsxpack_header_t *hdr) +{ return hdr->name_len + hdr->val_len + hdr->dec_overhead; } + +static inline void +lsxpack_header_mark_val_changed(lsxpack_header_t *hdr) +{ + hdr->flags = (enum lsxpack_flag)(hdr->flags & + ~(LSXPACK_HPACK_VAL_MATCHED|LSXPACK_VAL_MATCHED|LSXPACK_NAMEVAL_HASH)); +} +#ifdef __cplusplus +} +#endif + +#endif //LSXPACK_HEADER_H_v208 diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/CMakeLists.txt b/external/lsquic/src/liblsquic/ls-qpack/test/CMakeLists.txt new file mode 100644 index 0000000..8c0346a --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/CMakeLists.txt @@ -0,0 +1,75 @@ +function(lsqpack_add_test TARGET) + add_executable(test_${TARGET} "") + target_sources(test_${TARGET} PRIVATE test_${TARGET}.c) + target_link_libraries(test_${TARGET} ls-qpack) + + if(WIN32) + target_include_directories(test_${TARGET} PRIVATE ../wincompat) + target_link_libraries(test_${TARGET} ${GETOPT_LIB}) + else() + target_link_libraries(test_${TARGET} m) + endif() + + add_test(${TARGET} test_${TARGET}) +endfunction() + +lsqpack_add_test(int) +lsqpack_add_test(enc_str) +lsqpack_add_test(huff_dec) +lsqpack_add_test(read_enc_stream) +lsqpack_add_test(qpack) +lsqpack_add_test(circ_list) +lsqpack_add_test(dec_crash_case) +lsqpack_add_test(dyn_table_cap_mismatch) + +if(WIN32) + message(WARNING "Scenario tests are disabled on Windows (TODO)") +else() + file(GLOB SCENARIOS scenarios/*.sce) + foreach(SCENARIO ${SCENARIOS}) + get_filename_component(TEST_NAME ${SCENARIO} NAME) + add_test( + NAME scenario-${TEST_NAME} + COMMAND bash run-scenario.sh ${SCENARIO} + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/test + ) + set_tests_properties(scenario-${TEST_NAME} PROPERTIES + ENVIRONMENT "PATH=$ENV{PATH}:${PROJECT_BINARY_DIR}/bin:${PROJECT_SOURCE_DIR}/tools" + ) + endforeach() +endif() + +find_package(Perl) + +if(PERL_FOUND) + message(STATUS "Found Perl interpreter: ${PERL_EXECUTABLE}") + file(GLOB QIFS qifs/*.qif) + + foreach(QIF ${QIFS}) + get_filename_component(FILE_NAME ${QIF} NAME) + + foreach(TABLE_SIZE 0 256 512 1024 4096) + foreach(RISKED_STREAMS 0 100) + foreach(IMMEDIATE_ACK 0 1) + foreach(AGGRESSIVE 0 1) + set(TEST_NAME qif-${FILE_NAME}-t${TABLE_SIZE}-s${RISKED_STREAMS}-a${IMMEDIATE_ACK}-A${AGGRESSIVE}) + + add_test( + NAME ${TEST_NAME} + COMMAND ${PERL_EXECUTABLE} run-qif.pl --table-size ${TABLE_SIZE} --risked-streams ${RISKED_STREAMS} --immed-ack ${IMMEDIATE_ACK} --aggressive ${AGGRESSIVE} ${QIF} + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/test + ) + + if(NOT WIN32) + set_tests_properties(${TEST_NAME} PROPERTIES + ENVIRONMENT "PATH=$ENV{PATH}:${PROJECT_BINARY_DIR}/bin:${PROJECT_SOURCE_DIR}/tools" + ) + endif() + endforeach() + endforeach() + endforeach() + endforeach() + endforeach() +else() + message(WARNING "Perl not found: QIF tests won't be run") +endif() diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/lsqpack-test.h b/external/lsquic/src/liblsquic/ls-qpack/test/lsqpack-test.h new file mode 100644 index 0000000..59e6090 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/lsqpack-test.h @@ -0,0 +1,47 @@ +#ifndef LITESPEED_QPACK_TEST_H +#define LITESPEED_QPACK_TEST_H 1 + +#ifndef LS_QPACK_USE_LARGE_TABLES +#define LS_QPACK_USE_LARGE_TABLES 1 +#endif + +#if !LS_QPACK_USE_LARGE_TABLES +#define lsqpack_huff_decode_full lsqpack_huff_decode +#endif + +int +lsqpack_enc_enc_str (unsigned prefix_bits, unsigned char *const dst, + size_t dst_len, const unsigned char *str, unsigned str_len); + +unsigned char * +lsqpack_enc_int (unsigned char *dst, unsigned char *const end, uint64_t value, + unsigned prefix_bits); + +int +lsqpack_dec_int (const unsigned char **src_p, const unsigned char *src_end, + unsigned prefix_bits, uint64_t *value_p, + struct lsqpack_dec_int_state *state); + +struct huff_decode_retval +{ + enum + { + HUFF_DEC_OK, + HUFF_DEC_END_SRC, + HUFF_DEC_END_DST, + HUFF_DEC_ERROR, + } status; + unsigned n_dst; + unsigned n_src; +}; + +struct huff_decode_retval +lsqpack_huff_decode_full (const unsigned char *src, int src_len, + unsigned char *dst, int dst_len, + struct lsqpack_huff_decode_state *state, int final); + +int +lsqpack_find_in_static_headers (uint32_t name_hash, const char *name, + unsigned name_len); + +#endif diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/qifs/fb-req.qif b/external/lsquic/src/liblsquic/ls-qpack/test/qifs/fb-req.qif new file mode 100644 index 0000000..50843f0 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/qifs/fb-req.qif @@ -0,0 +1,4917 @@ +:path /rsrc.php/v3/yn/r/rIPZ9Qkrdd9.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://static.xx.fbcdn.net/rsrc.php/v3/yT/l/0,cross/dzXGESIlGQQ.css +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yu/r/r9dbyHa_8D2.png +referer https://static.xx.fbcdn.net/rsrc.php/v3/yT/l/0,cross/dzXGESIlGQQ.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 + +:path /ajax/haste-response/?modules=RelationshipDelightUtils&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6Xolg9obHGbGey8gFLFwxx-6EeAq2i5U4e1Fx-K9wPG2OUG4XzE4u14DBwJx62i2O7EO0Bp8S2m4o9Ef8oC-Ueovwb6u7oeo4S6pHxx0MxK1IzUcovy8nyE6WdzEmx28wr8yJ1zyFEC2bwEBo&__req=f&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/?sk=welcome +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie Za=aWaEgdyK +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +:scheme https +:method GET + +:path /ajax/haste-response/?modules=AsyncDOM&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEKEW8zKC-C267Uqzob4q2i5U4e1Fx-K9wPG2OUG4XzE4u3ucDBwJx62i2PxOcxu1ZAzo9ohwCwYxyrXwVx-E2KDxS3C1dxCqUogoxu6U6OfwNx-8xuawpoydzEmx28wqqyaQu4eaCyo8K2ylxdw&__req=g&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/?sk=welcome +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=gRaLgft +:scheme https +:method GET + +:path /rsrc.php/v3/yV/r/DT2WTTIIxjC.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /ajax/browse/null_state.php?dpr=1&grammar_version=bee09f93fa732cfa59a1cb6d9f450d3892424e49&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEKEW8zKC-C267Uqzob4q2i5U4e1Fx-K9wPG2OUG4XzE4u3ucDBwJx62i2PxOcxu1ZAzo9ohwCwYxyrXwVx-E2KDxS3C1dxCqUogoxu6U6OfwNx-8xuawpoydzEmx28wqqyaQu4eaCyo8K2ylxdw&__req=h&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/?sk=welcome +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=gRaLgft +:scheme https +:method GET + +:path /ajax/typeahead/search/facebar/bootstrap/?filter[0]=app&filter[1]=page&filter[2]=group&filter[3]=friendlist&context=facebar&viewer=100023237774992&token=v7&lazy=1&__user=100023237774992&__a=1 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/?sk=welcome +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=gRaLgft +:scheme https +:method GET + +:path /ajax/typeahead/search/facebar/bootstrap/?filter[0]=user&context=facebar&viewer=100023237774992&token=v7&lazy=1&__user=100023237774992&__a=1 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/?sk=welcome +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=gRaLgft +:scheme https +:method GET + +:path /ajax/typeahead/search/facebar/bootstrap/?filter[0]=keyword&context=facebar&viewer=100023237774992&token=v7&lazy=1&__user=100023237774992&__a=1 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/?sk=welcome +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=gRaLgft +:scheme https +:method GET + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yk/r/LOOn0JtHNzb.gif +referer https://www.facebook.com/ +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 + +:path /ajax/haste-response/?modules=ContextualLayerInlineTabOrder&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEKEW8zKC-C267Uqzob4q2i5U4e1Fx-K9wPG2OUG4XzE4u3ucDBwJx62i2PxOcxu1ZAzo9ohwCwYxyrXwVx-E2KDxS3C1dxCqUogoxu6U6OfwNx-8xuawpoydzEmx28wqqyaQu4eaCyo8K2ylxdw&__req=i&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/?sk=welcome +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=gRaLgft +:scheme https +:method GET + +:path /rsrc.php/v3/yv/r/7_pYemBB-zb.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/y-/r/hoo-FbAtjWB.png +referer https://static.xx.fbcdn.net/rsrc.php/v3/yg/l/0,cross/YbW8fl-NvjH.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 + +:path /notifications/client/push/xout/?dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/?sk=welcome +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=gRaLgft +:scheme https +content-length 414 +:method POST + +:path /ajax/bz +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/?sk=welcome +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=gRaLgft +:scheme https +content-length 1548 +:method POST + +:path /ajax/bz +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/upcoming?action_history=null +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=gRaLgft +cookie /kiaC=tbsdLtVawA2lNUJ4QxILVKtWv5Y4q7cOdpGAQfw1A +cookie D9j=RfFb6yMJ3eAL5RLeX +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCvev8oQJ0V3sCirda1S/X9tdg18NOhb*jCYozhP8wZHxVA199nL8Dyy+wdOIuIBPqDQe5 +:scheme https +content-length 1447 +:method POST + +:path /events/upcoming?ref=46&action_history=null&dpr=1&ajaxpipe=1&ajaxpipe_token=AXhgQic5nZEiPkJl&no_script_path=1&quickling[version]=3490195%3B0%3B&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEKEW8zKC-C267Uqzob4q2i5U4e1Fx-K9wPG2OUG4XzE4u3ucDBwJx62i2PxOcxu1ZAzo9ohwCwYxyrXwVx-E2KDxS3C1dxCqUogoxu6U6OfwNx-8xuawpoydzEmx28wqqyaQu4eaCyo8K2ylxdw&__req=jsonp_2&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473&__adt=2 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +upgrade-insecure-requests 1 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 +referer https://www.facebook.com/?sk=welcome +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=gRaLgft +cookie /kiaC=tbsdLtVawA2lNUJ4QxILVKtWv5Y4q7cOdpGAQfw1A +cookie D9j=RfFb6yMJ3eAL5RLeX +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCvev8oQJ0V3sCirda1S/X9tdg18NOhb*jCYozhP8wZHxVA199nL8Dyy+wdOIuIBPqDQe5 +:scheme https +:method GET + +:path /events/?acontext=%7B%22ref%22%3A46%2C%22action_history%22%3A%22null%22%7D&dpr=1&ajaxpipe=1&ajaxpipe_token=AXhgQic5nZEiPkJl&quickling[version]=3490195%3B0%3B&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEKEW8zKC-C267Uqzob4q2i5U4e1Fx-K9wPG2OUG4XzE4u3ucDBwJx62i2PxOcxu1ZAzo9ohwCwYxyrXwVx-E2KDxS3C1dxCqUogoxu6U6OfwNx-8xuawpoydzEmx28wqqyaQu4eaCyo8K2ylxdw&__req=jsonp_3&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473&__adt=3 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +upgrade-insecure-requests 1 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 +referer https://www.facebook.com/events/upcoming?action_history=null +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=gRaLgft +cookie D9j=RfFb6yMJ3eAL5RLeX +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCvev8oQJ0V3sCirda1S/X9tdg18NOhb*jCYozhP8wZHxVA6Z57FAsgTZmGqrFmUtE +:scheme https +:method GET + +:path /rsrc.php/v3/yi/l/0,cross/_uhSHi9KOQ7.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yc/l/0,cross/dmkj-sQ6P5a.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yh/l/0,cross/iydtwz40Qb-.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yM/l/0,cross/MLNfP69EIl8.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3iMNe4/yl/l/en_US/hmNgJUSZglL.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3iZuA4/y5/l/en_US/kZ4Bb7SHad8.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yL/r/3PEMXDGr71J.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yb/r/2fU7CG5VIac.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yO/l/0,cross/z3VOxP2h9AS.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3i_Fa4/yT/l/en_US/gOfYHmtTve-.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3i65D4/yi/l/en_US/R-NYdLckvX6.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3iuOT4/y0/l/en_US/5b9pzBWrOTW.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/y2/l/0,cross/kJRH5O9nuWN.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3iZ034/yQ/l/en_US/xvUyTVeK1AH.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3ifa-4/yQ/l/en_US/LCoD89fJZjs.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3i_bh4/yA/l/en_US/MYZh4Q7nLBF.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /api/graphql/ +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=gRaLgft +cookie D9j=RfFb6yMJ3eAL5RLeX +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCvev8oQJ0V3sCirda1S/X9tdg18NOhb*jCYozhP8wZHxVA6Z57FAsgTZmGqrFmUtE +:scheme https +content-length 515 +:method POST + +:path /api/graphql/ +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=gRaLgft +cookie D9j=RfFb6yMJ3eAL5RLeX +:scheme https +content-length 605 +:method POST + +:path /api/graphql/ +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=gRaLgft +cookie D9j=RfFb6yMJ3eAL5RLeX +:scheme https +content-length 556 +:method POST + +:path /rsrc.php/v3/yz/r/rrHnvxbchFb.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://static.xx.fbcdn.net/rsrc.php/v3/ye/l/0,cross/ya-hd-SVG3N.css +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /images/events/cake.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/events/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=gRaLgft +cookie D9j=RfFb6yMJ3eAL5RLeX +:scheme https +:method GET + +:path /rsrc.php/v3/yt/r/-5sIZS6lfho.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/y0/r/9Jm0JLAi9mx.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yi/r/COUYNvaZbXr.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yk/r/z8ih6LHuqGP.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/ym/r/hbfFWl_NNAR.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yh/r/WkT-RuFbXx7.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yb/r/Gs2PkVUsImY.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yr/r/IcDhxlbX8wA.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://static.xx.fbcdn.net/rsrc.php/v3/yc/l/0,cross/dmkj-sQ6P5a.css +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p296x100/22308879_1411798872208920_5876700806437739971_n.jpg?oh=cda1bc0abd0fdb2141fcb05b9ecb6a5f&oe=5A9A6409 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/s403x403/22519103_1163170473783106_7250901061438777066_n.jpg?oh=c80391171aa943272399478c8fb4ccfc&oe=5AA0178F +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p296x100/23794992_1692047667507240_4078474635176186303_n.jpg?oh=b887a0fa1217d73f98019a56eef6fc40&oe=5ACCBAB2 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p235x165/21743135_10156449671468475_2803456225134310009_n.jpg?oh=c9f713aa937a102f733afcb458bba8f3&oe=5AD32677 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/q81/p235x165/23622205_1563296600422609_3507363186110296752_n.jpg?oh=4111ce30a15bb61afc3fc201acf66497&oe=5A8A9CD6 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p296x100/22406131_904554576366867_6162233972946541710_n.jpg?oh=33eb2bc2f39b38dd58274d82d40902de&oe=5A9539C2 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/s370x247/23561617_1761370480571183_3122440575531372893_n.jpg?oh=f92f43f1e2b1fadb985852d70cd9a5b6&oe=5A991885 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p296x100/22894328_10156032914788606_3572024669336895726_n.jpg?oh=9605b64a17a4f4a588aa6e208aa52e83&oe=5A9078D2 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/s417x417/22893970_10155038313625267_259957278770944350_n.jpg?oh=1b9d652e6c0ee7d6542e8f4664e892b5&oe=5A99FA92 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/q85/p296x100/22886142_516952595336416_421089354618398736_n.jpg?oh=174c9e4b5c299429dc71738ddf3f50f8&oe=5ACA040D +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t34.0-0/p296x100/22657120_1454103711376475_190201580_n.jpg?oh=440362b1c280be0a92d704f97af83a4e&oe=5A22C525 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p296x100/23518942_171404133444845_8979822921817872578_n.jpg?oh=569337bfd8937d763dfa4f46442a74fc&oe=5AD52388 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p235x165/20770177_731108907080106_1095417205620896965_n.jpg?oh=38c91d199cc617b1ee20beda1e701cc9&oe=5A8E46B9 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p296x100/24131096_1708683599207129_1071849655026568306_n.jpg?oh=503c4f2dab6d35ca187011e905475a05&oe=5AD7C0F7 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p235x165/22853184_1569618363106586_6834503513218702536_n.jpg?oh=132a77ed752a9d6f8595d2f49b3849ce&oe=5A8DFA5E +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/s403x403/23380390_1922521571121214_2529692598990745872_n.jpg?oh=340d42cb18e95640937d315afcc38f13&oe=5A94EBB3 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p235x165/23316481_10154888378776356_4415156987236226005_n.jpg?oh=d1eec323e307de199e4db4c3090b781f&oe=5AD33546 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p235x165/23755022_1591115944290161_1582952831147749371_n.jpg?oh=db535f38279e783b54543fb14a190cd4&oe=5A9F170B +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p235x165/24068207_10155305604729217_1826758059181700103_n.jpg?oh=fba8a306771a19cf41d98b203a0ed7d4&oe=5A9E9197 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/q86/p235x165/24232418_1600544116680677_1180505039722384115_n.jpg?oh=dff561b053aa737482d88e3197fe5bb8&oe=5A938D33 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p235x165/22539694_1555677141167375_5802479455001750344_n.jpg?oh=7f25aa39560b19df18603728f767d8a5&oe=5A9D4A22 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yI/r/Fu0zZblKVo_.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://static.xx.fbcdn.net/rsrc.php/v3/yt/l/0,cross/hbQYnUNOKQY.css +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yK/r/QI0sE4FG54s.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://static.xx.fbcdn.net/rsrc.php/v3/yi/l/0,cross/_uhSHi9KOQ7.css +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yb/r/TtvTAbvOLMA.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://static.xx.fbcdn.net/rsrc.php/v3/yc/l/0,cross/dmkj-sQ6P5a.css +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yf/l/0,cross/izMNbQ9lrF5.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /ajax/bz +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=gRaLgft +cookie D9j=RfFb6yMJ3eAL5RLeX +:scheme https +content-length 1275 +:method POST + +:path /rsrc.php/v3/yv/r/vH75k5zBVQt.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yA/r/xBj7g-EvVnb.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yW/r/dq0bIKxjcSp.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /ajax/bz +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1973120626293196/?acontext=%7B%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22dashboard%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22suggestion_feed_unit%5C%22%2C%5C%22extra_data%5C%22%3A%7B%5C%22tracking%5C%22%3A[%5C%22%7B%5C%5C%5C%22qid%5C%5C%5C%22%3A%5C%5C%5C%22%7B%5C%5C%5C%5C%5C%5C%5C%22suggestion_source%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22browse%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22suggestion_type%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%220%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22browse_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22c1d48974d8c891e888dce0bd2db52851%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22unique_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22start_cursor%5C%5C%5C%5C%5C%5C%5C%22%3A0%7D%5C%5C%5C%22%7D%5C%22]%7D%7D]%22%7D +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMJ4fvS9RLeZ +cookie /kiaC=tbsdLtVawA2lK119VHL+5Jc3Oggfr6QGADCPU9H5l0V+/uzgXmS2b0tWoA*Z4X0z +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVJ6nIB+aa*XZ9SLj0JO3GhArW*8wpy4JAC5ENTZ9oFlCA/uBdS6uxXPpGqTUUTWo0QzX3M3ec5RKfH9nrCL88VE*DbNwMw3S4He4 +:scheme https +content-length 1481 +:method POST + +:path /events/1973120626293196/?acontext=%7B%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22dashboard%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22suggestion_feed_unit%5C%22%2C%5C%22extra_data%5C%22%3A%7B%5C%22tracking%5C%22%3A[%5C%22%7B%5C%5C%5C%22qid%5C%5C%5C%22%3A%5C%5C%5C%22%7B%5C%5C%5C%5C%5C%5C%5C%22suggestion_source%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22browse%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22suggestion_type%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%220%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22browse_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22c1d48974d8c891e888dce0bd2db52851%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22unique_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22start_cursor%5C%5C%5C%5C%5C%5C%5C%22%3A0%7D%5C%5C%5C%22%7D%5C%22]%7D%7D]%22%7D&dpr=1&ajaxpipe=1&ajaxpipe_token=AXhgQic5nZEiPkJl&quickling[version]=3490195%3B0%3B&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEKEW8zKC-C267Uqzob4q2i5U4e1Fx-K9wPG2OUG4XzE4u3ucDBwJx62i2PxOcxu1Pyp8S2m4o9Ef8oC-UjwBx-E7K3au7oeoa898pCK6468nxK8woU-367Uy5UG1tKUydzEmx28wqqyaQu4eaCyo8K2ylxdw&__req=jsonp_4&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473&__adt=4 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +upgrade-insecure-requests 1 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 +referer https://www.facebook.com/events/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMJ4fvS9RLeZ +cookie /kiaC=tbsdLtVawA2lK119VHL+5Jc3Oggfr6QGADCPU9H5l0V+/uzgXmS2b0tWoA*Z4X0z +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVJ6nIB+aa*XZ9SLj0JO3GhArW*8wpy4JAC5ENTZ9oFlCA/uBdS6uxXPpGqTUUTWo0QzX3M3ec5RKfH9nrCL88VE*DbNwMw3S4He4 +:scheme https +:method GET + +:path /rsrc.php/v3/yy/l/0,cross/eQVk65Pz4u5.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yM/l/0,cross/MLNfP69EIl8.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yh/l/0,cross/iydtwz40Qb-.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:path /rsrc.php/v3/yN/l/0,cross/ZPMqK38G-4h.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yt/l/0,cross/UNGqFczWO_e.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yc/l/0,cross/5kmfhwxHgui.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yZ/l/0,cross/T2vkV3tYtHO.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yF/l/0,cross/mvAtuJCE1vS.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yl/l/0,cross/iYeZGLkjeBf.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yO/l/0,cross/z3VOxP2h9AS.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:path /rsrc.php/v3/yW/l/0,cross/se9Vsw3bxIQ.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3iWeD4/ye/l/en_US/t-5ciJs6ghe.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3iqMw4/yu/l/en_US/d4aCxA1cCvV.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3iPZS4/yy/l/en_US/CYLb8vdfk69.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yz/r/0Mbun6Ga0m3.png +referer https://static.xx.fbcdn.net/rsrc.php/v3/yg/l/0,cross/4AOTCcAHW9N.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 + +:path /rsrc.php/v3/y7/r/YmJVIBP8IMt.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://static.xx.fbcdn.net/rsrc.php/v3/yy/l/0,cross/eQVk65Pz4u5.css +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yA/r/D65GjQgjhh7.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://static.xx.fbcdn.net/rsrc.php/v3/yG/l/0,cross/FFxQ1nfdvDo.css +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p526x296/22308879_1411798872208920_5876700806437739971_n.jpg?oh=19baf05bc3e386a0df895f12ecb55e65&oe=5A895F80 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /api/graphql/ +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1973120626293196/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMJ4fvS9RLeZ +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVJ6nIB+aa*XZ9SLj0JO3GhArW*8wpy4JAC5ENTZ9oFlCA/uBdS6uxXPpGqTUUTWo0QzX3M3ec5RKfH9nrCL88VE*DbNwMw3S4He4 +:scheme https +content-length 556 +:method POST + +:path /rsrc.php/v3/yu/r/wjTohGoIEYr.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://static.xx.fbcdn.net/rsrc.php/v3/yt/l/0,cross/UNGqFczWO_e.css +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/c2.0.40.40/p40x40/199935_202880686405345_2333506_n.jpg?oh=fbdd058135b9014aa7c9db08b06ba259&oe=5AD35D33 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /static_map.php?v=29&osm_provider=2&size=240x132¢er=40.6141099%2C-75.36751&zoom=15&markers=40.61410990%2C-75.36751000&language=en_US +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority external-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yu/l/0,cross/5Wr55_OaqyB.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yD/l/0,cross/C1XzobiRO68.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yF/l/0,cross/ySVFHWyZdBc.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yT/r/GPk4x6oLlPy.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://static.xx.fbcdn.net/rsrc.php/v3/yG/l/0,cross/FFxQ1nfdvDo.css +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yk/r/MiXXTBbOQzg.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://static.xx.fbcdn.net/rsrc.php/v3/yD/l/0,cross/C1XzobiRO68.css +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p40x40/21433220_10155112318317462_819881081717302833_n.jpg?oh=60c0e3655a03a06d208e43b3d0ee520b&oe=5AD4CC49 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p40x40/24174227_10203191389621079_8431407467207077561_n.jpg?oh=1c83d8b6ffa2b5adf557001d03e31a19&oe=5ACB160B +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p40x40/21752442_346684255766671_4475825201585686811_n.jpg?oh=54c4ecabcd94c9703f8b3a73d78aaba1&oe=5A8AEC71 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/c34.0.100.100/p100x100/551881_390358547686296_1337547316_n.jpg?oh=de7dd82b1f07da953051f50dd9f637ea&oe=5AD0E226 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/s480x480/20430157_1832319653461432_144634970797686187_n.jpg?oh=9b2c1f7093307b48fbb2ac86947ded4c&oe=5ACD866B +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/c4.0.100.100/p100x100/199935_202880686405345_2333506_n.jpg?oh=170d64123b2da56fdd8076b03912cc60&oe=5ACB6B7C +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p240x240/20430157_1832319653461432_144634970797686187_n.jpg?oh=53491e7c666b56f783cf7f85fdbe94a7&oe=5A8B4298 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-9/s851x315/24129785_10212718030500006_4344740758820241108_n.jpg?oh=c3df13d1f5117178c39f650d3d97c83f&oe=5A9890F2 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/s240x240/24296411_1630467630307272_3990561874337618322_n.jpg?oh=deccb6d5fa793b598f481d3ddc08ca28&oe=5A8CBBCD +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/q82/s240x240/24131603_10212798510470324_1635486878755673205_n.jpg?oh=a9d7a7b695d1b1f4deeb8a9e638f758f&oe=5ACCFE10 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/s240x240/20915152_10203724694594356_7586465478410040631_n.jpg?oh=853a44e422970bda5bdc95a0585a8640&oe=5AC98F34 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/21433220_10155112318317462_819881081717302833_n.jpg?oh=62681ffd35b5843e9b6c94656401bade&oe=5ACEF55B +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/24174227_10203191389621079_8431407467207077561_n.jpg?oh=4fac1ddfb50bb41d21fd1be22caaff89&oe=5ACAB767 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/21752442_346684255766671_4475825201585686811_n.jpg?oh=7e66ed0f8d6d8d7e30f3345afdd64601&oe=5A9C23E8 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/22549961_10214243638827626_6082608412287421169_n.jpg?oh=5f85149331d535fdb7eaa71fafd08562&oe=5A904050 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/23472762_10215332481572389_3932192919870560156_n.jpg?oh=86fef791c1a88470740fbfa5aafb5f52&oe=5ACD1028 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/24176963_1713484802048172_1296505962786038189_n.jpg?oh=99a013a1d617ad9eb27e7d9ce779595a&oe=5ACF8E23 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/c0.0.32.32/p32x32/10429467_1381070958854215_7766823409719163443_n.jpg?oh=894e34ca611fae67d286013d913d75cb&oe=5A8DABF0 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/c0.0.32.32/p32x32/189742_139772619424310_1137586_n.jpg?oh=7cbdab709a81244bfbd2c9cccf42f3b1&oe=5AC994EF +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/23472490_10212815541656182_202861534108775907_n.jpg?oh=1cdabbfcbc8592190b67fb492a4e27f8&oe=5A93D681 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/943891_10153388755097075_8820229584935880100_n.jpg?oh=fcb43589f1d31716f18c6d1992eb7e72&oe=5AD6E4FD +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yx/r/ogYrclupeJV.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://static.xx.fbcdn.net/rsrc.php/v3/yG/l/0,cross/FFxQ1nfdvDo.css +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /events/updatesettings/?attributes[interested_nux_views]=1&id=100023237774992&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1973120626293196/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMJ4fvS9RLeZ +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVJ6nIB+aa*XZ9SLj0JO3GhArW*8wpy4JAC5ENTZ9oFlCA/uBdS6uxXPpGqTUUTWo0QzX3M3ec5RKfH9nrCL88VE*DbNwMw3S4He4 +:scheme https +content-length 438 +:method POST + +:path /rsrc.php/v3isDj4/ym/l/en_US/QOgA6JICAWb.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3iT2E4/y6/l/en_US/ZazZ0DwrfSu.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yM/r/NODUWTXPD_e.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3i6Zg4/ye/l/en_US/XU6qcEKrGJD.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3iR3A4/yL/l/en_US/AX5hCi76eCP.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yS/r/fPmoZFDHfot.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3i_lZ4/y5/l/en_US/jRPoU0fkI_R.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3iCYl4/yg/l/en_US/KU8v9plGLY_.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/y-/r/vwONsN5Nf9I.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yZ/r/be6thttnRgC.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/c11.0.64.64/p64x64/23244261_1615189865168048_1519610711032420088_n.jpg?oh=5ed187cb38f4b966db80c9b25dfc5553&oe=5AD794C1 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/c33.0.64.64/p64x64/22281632_1451041288313512_907991076376584768_n.jpg?oh=a90c31096a0fe6ed10f9d8acba922c80&oe=5A9FA902 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p64x64/22554758_1706285579381477_1345535597699777482_n.jpg?oh=eb16af95e15925039064e944ed3dda2a&oe=5A9B5068 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/c16.0.64.64/p64x64/22552499_1917232504970146_6553860606931917898_n.jpg?oh=4e7eaed1f85caab70551214853e4ac37&oe=5A91FE74 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/c17.0.64.64/p64x64/21616530_1605822352814903_1798790091350952_n.jpg?oh=23a7bcad73871a541fd3cdb865c5b24b&oe=5A8B1BD7 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/c17.0.64.64/p64x64/21686321_1605002119563593_2513519775839793064_n.jpg?oh=c8f798954ce767e431bf55b8d8ae5b2b&oe=5A8B54F3 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /events/ajax/1447907895258606/impression/?acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22dashboard%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22suggestion_feed_unit%5C%22%2C%5C%22extra_data%5C%22%3A%7B%5C%22tracking%5C%22%3A[%5C%22%7B%5C%5C%5C%22qid%5C%5C%5C%22%3A%5C%5C%5C%22%7B%5C%5C%5C%5C%5C%5C%5C%22suggestion_source%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22browse%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22suggestion_type%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%220%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22browse_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22c1d48974d8c891e888dce0bd2db52851%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22unique_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22start_cursor%5C%5C%5C%5C%5C%5C%5C%22%3A0%7D%5C%5C%5C%22%7D%5C%22]%7D%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1973120626293196/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMJ4fvS9RLeZ +:scheme https +content-length 438 +:method POST + +:path /events/ajax/121794298541978/impression/?acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22dashboard%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22suggestion_feed_unit%5C%22%2C%5C%22extra_data%5C%22%3A%7B%5C%22tracking%5C%22%3A[%5C%22%7B%5C%5C%5C%22qid%5C%5C%5C%22%3A%5C%5C%5C%22%7B%5C%5C%5C%5C%5C%5C%5C%22suggestion_source%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22browse%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22suggestion_type%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%220%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22browse_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22c1d48974d8c891e888dce0bd2db52851%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22unique_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22start_cursor%5C%5C%5C%5C%5C%5C%5C%22%3A0%7D%5C%5C%5C%22%7D%5C%22]%7D%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1973120626293196/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMJ4fvS9RLeZ +:scheme https +content-length 438 +:method POST + +:path /events/ajax/1852209518426798/impression/?acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22dashboard%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22suggestion_feed_unit%5C%22%2C%5C%22extra_data%5C%22%3A%7B%5C%22tracking%5C%22%3A[%5C%22%7B%5C%5C%5C%22qid%5C%5C%5C%22%3A%5C%5C%5C%22%7B%5C%5C%5C%5C%5C%5C%5C%22suggestion_source%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22browse%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22suggestion_type%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%220%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22browse_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22c1d48974d8c891e888dce0bd2db52851%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22unique_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22start_cursor%5C%5C%5C%5C%5C%5C%5C%22%3A0%7D%5C%5C%5C%22%7D%5C%22]%7D%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1973120626293196/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMJ4fvS9RLeZ +:scheme https +content-length 438 +:method POST + +:path /events/ajax/125107554845706/impression/?acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22dashboard%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22suggestion_feed_unit%5C%22%2C%5C%22extra_data%5C%22%3A%7B%5C%22tracking%5C%22%3A[%5C%22%7B%5C%5C%5C%22qid%5C%5C%5C%22%3A%5C%5C%5C%22%7B%5C%5C%5C%5C%5C%5C%5C%22suggestion_source%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22browse%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22suggestion_type%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%220%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22browse_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22c1d48974d8c891e888dce0bd2db52851%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22unique_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22start_cursor%5C%5C%5C%5C%5C%5C%5C%22%3A0%7D%5C%5C%5C%22%7D%5C%22]%7D%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1973120626293196/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMJ4fvS9RLeZ +:scheme https +content-length 438 +:method POST + +:path /events/ajax/388498998233936/impression/?acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22dashboard%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22suggestion_feed_unit%5C%22%2C%5C%22extra_data%5C%22%3A%7B%5C%22tracking%5C%22%3A[%5C%22%7B%5C%5C%5C%22qid%5C%5C%5C%22%3A%5C%5C%5C%22%7B%5C%5C%5C%5C%5C%5C%5C%22suggestion_source%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22browse%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22suggestion_type%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%220%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22browse_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22c1d48974d8c891e888dce0bd2db52851%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22unique_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22start_cursor%5C%5C%5C%5C%5C%5C%5C%22%3A0%7D%5C%5C%5C%22%7D%5C%22]%7D%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1973120626293196/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMJ4fvS9RLeZ +:scheme https +content-length 439 +:method POST + +:path /events/ajax/1304638332980088/impression/?acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22dashboard%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22suggestion_feed_unit%5C%22%2C%5C%22extra_data%5C%22%3A%7B%5C%22tracking%5C%22%3A[%5C%22%7B%5C%5C%5C%22qid%5C%5C%5C%22%3A%5C%5C%5C%22%7B%5C%5C%5C%5C%5C%5C%5C%22suggestion_source%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22browse%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22suggestion_type%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%220%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22browse_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%22c1d48974d8c891e888dce0bd2db52851%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22unique_session_id%5C%5C%5C%5C%5C%5C%5C%22%3A%5C%5C%5C%5C%5C%5C%5C%222322527929970354408%5C%5C%5C%5C%5C%5C%5C%22%2C%5C%5C%5C%5C%5C%5C%5C%22start_cursor%5C%5C%5C%5C%5C%5C%5C%22%3A0%7D%5C%5C%5C%22%7D%5C%22]%7D%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1973120626293196/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMJ4fvS9RLeZ +:scheme https +content-length 439 +:method POST + +:path /api/graphql/ +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1973120626293196/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMJ4fvS9RLeZ +:scheme https +content-length 569 +:method POST + +:path /rsrc.php/v3/yt/r/Yhv-ka5xV9_.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://static.xx.fbcdn.net/rsrc.php/v3/y2/l/0,cross/kJRH5O9nuWN.css +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /events/updatesettings/?attributes[interested_nux_views]=1&id=100023237774992&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1973120626293196/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMJ4fvS9RLeZ +:scheme https +content-length 439 +:method POST + +:path /events/updatesettings/?attributes[interested_nux_views]=1&id=100023237774992&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1973120626293196/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMJ4fvS9RLeZ +:scheme https +content-length 439 +:method POST + +:path /events/updatesettings/?attributes[interested_nux_views]=1&id=100023237774992&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1973120626293196/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMJ4fvS9RLeZ +:scheme https +content-length 439 +:method POST + +:path /ajax/bz +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1973120626293196/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMJ4fvS9RLeZ +:scheme https +content-length 1327 +:method POST + +:path /ajax/bz +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1447907895258606/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKY9CP9RLe+ +cookie /kiaC=tbsdLtVawA2lKZ+d0FS0cIc*Tl7fr6QGADCPU9HOE13J9xoeKEYfs* +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztVf2Q8Y3MtcdMZJh59lqXqW5EpSDcGpKBHBx/ +:scheme https +content-length 1374 +:method POST + +:path /events/1447907895258606/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D&dpr=1&ajaxpipe=1&ajaxpipe_token=AXhgQic5nZEiPkJl&quickling[version]=3490195%3B0%3B&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEyGzEyeWrWo8ovxGEG2N6zUkxu13wqojyRUC3eEbbyEjKewhUdUOum2SaCwAwIUsz8nwsUCidwBx62q3O69LK4UG6EvG1Axq3au7oeoa898pCK6468nCxi8y8Z0io-2mbx-8xuawnrK8zoym5Egy86CEyJ7x3yFEC2bwEBojouw&__req=jsonp_5&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473&__adt=5 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +upgrade-insecure-requests 1 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 +referer https://www.facebook.com/events/1973120626293196/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKY9CP9RLe+ +cookie /kiaC=tbsdLtVawA2lKZ+d0FS0cIc*Tl7fr6QGADCPU9HOE13J9xoeKEYfs* +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztVf2Q8Y3MtcdMZJh59lqXqW5EpSDcGpKBHBx/ +:scheme https +:method GET + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yM/l/0,cross/MLNfP69EIl8.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yh/l/0,cross/iydtwz40Qb-.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yN/l/0,cross/ZPMqK38G-4h.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yt/l/0,cross/UNGqFczWO_e.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yl/l/0,cross/iYeZGLkjeBf.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yO/l/0,cross/z3VOxP2h9AS.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:path /v/t1.0-0/p526x296/21686321_1605002119563593_2513519775839793064_n.jpg?oh=15d81e2c23b4a5dd9d4b05892b349caa&oe=5ACF538A +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /api/graphql/ +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1447907895258606/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKY9CP9RLe+ +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztVf2Q8Y3MtcdMZJh59lqXqW5EpSDcGpKBHBx/ +:scheme https +content-length 569 +:method POST + +:path /v/t1.0-1/p40x40/22007495_1611206598943145_2152306483017499597_n.jpg?oh=e2bffc4570db5b1eabdb02dde44876a4&oe=5AD0369F +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yD/l/0,cross/C1XzobiRO68.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yF/l/0,cross/ySVFHWyZdBc.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:path /api/graphql/ +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1447907895258606/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKY9CP9RLe+ +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztVf2Q8Y3MtcdMZJh59lqXqW5EpSDcGpKBHBx/ +:scheme https +content-length 569 +:method POST + +:path /rsrc.php/v3/yT/r/tLN3LXSmwnV.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://static.xx.fbcdn.net/rsrc.php/v3/yh/l/0,cross/iydtwz40Qb-.css +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p40x40/16507849_10212179422265831_6104825428384290663_n.jpg?oh=42418a1c300ba02b1fc9314b5009c7ad&oe=5A8E4C6E +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/c25.0.100.100/p100x100/20430157_1832319653461432_144634970797686187_n.jpg?oh=f9b9401f3292f2ae642c2e288dd9bf2f&oe=5A96F807 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/q82/c25.0.100.100/p100x100/23517646_10155180104347914_975567954750306920_n.jpg?oh=b2579866daacac8931be304b383dc1bd&oe=5ACF7F16 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/s480x480/13934646_1170551129675363_4988970371810992101_n.jpg?oh=8271023f0a3cba8d8530f922617d81dc&oe=5A945561 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p100x100/22007495_1611206598943145_2152306483017499597_n.jpg?oh=56773f6476947236ae619b837dc28880&oe=5ACC191B +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p240x240/10641264_686711278087207_5636445445479832699_n.jpg?oh=e9b912e7d82bf9f8d774b464ebd7359a&oe=5A9A492C +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p240x240/16508430_1355737407823400_8861192681154280987_n.jpg?oh=0c9601cf8fff4566495821e01a5991f3&oe=5A890869 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p160x160/22448507_1627528010644337_7425627241276681838_n.jpg?oh=93e05e7318701a87879ff1d3ef1d99a8&oe=5A916AA1 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/q83/p240x240/21743176_1599591296771342_3940528494012418670_n.jpg?oh=4715e59e66802ec676bdf26d49c52740&oe=5A8B456E +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/p160x160/21463343_1614095295320942_3415814669605303015_n.jpg?oh=2cfc00a6bb1b9b62383796818a08a533&oe=5ACCAB29 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/22007495_1611206598943145_2152306483017499597_n.jpg?oh=70f62aca4c3f0fb6c06c4aea4a7c56ea&oe=5AD3CE8D +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/16507849_10212179422265831_6104825428384290663_n.jpg?oh=9f1c27c56c259fcf256f94c2c8457139&oe=5A96D902 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/24131174_10100140179052244_3448886053937871882_n.jpg?oh=6aa7571dbef1d6a95670073db569650b&oe=5A9CBF6D +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/23843246_10210959762897574_4628662270655170535_n.jpg?oh=dbc96548f3e1e6f2b55753d3b6b681b0&oe=5ACAD742 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/r90/c0.3.32.32/p32x32/24131485_2157837947575814_8677764744906557849_n.jpg?oh=0ff978ee020cf5fd8e63bb1ee5b0f25e&oe=5AD25AC7 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/18700351_10154577137876570_4526906903143473570_n.jpg?oh=0c9e13a4efcfdc256b48fee5235fd35a&oe=5A9142AC +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/24177184_10157380155928644_1449375182569260563_n.jpg?oh=11b9ea44cddb22d4321f22131cc5c595&oe=5A8A02AF +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/20479443_10154909543732615_4366010947884980165_n.jpg?oh=bf3eb73aa771969b7743ebc05aa97687&oe=5A8B360F +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/11012734_10208529519822446_5388612684387214640_n.jpg?oh=940eb16e5e471f3ad387a46c447da986&oe=5AD097F9 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/23755108_10155844518204210_4569362422329145344_n.jpg?oh=50696db1a8beb7697ee00623fcaf4b71&oe=5AA0ED31 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/c17.0.64.64/p64x64/21766488_1611228475607624_8874848206202749685_n.jpg?oh=3531efdab51624d662e54c5ce7342990&oe=5AD22506 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/c17.0.64.64/p64x64/21766441_1611246572272481_2554154972748677040_n.jpg?oh=bd053306b5bba87d0ea2dbb32569f175&oe=5A897D6E +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/c17.0.64.64/p64x64/21616465_1605831249480680_1208363931993874862_n.jpg?oh=b7b9d41bf356733e9c448c6536b5d084&oe=5AD791F5 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/c17.0.64.64/p64x64/22046029_1611235688940236_6270057556382781739_n.jpg?oh=e1e10a5a289aa9c286ec937bf13784c4&oe=5ACC2FB8 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/c17.0.64.64/p64x64/23795396_1668704973193307_442162647813589977_n.jpg?oh=53f2410828e1df53658ce94d3729c856&oe=5A924A87 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /events/ajax/1991086554439899/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1447907895258606/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKY9CP9RLe+ +:scheme https +content-length 439 +:method POST + +:path /events/ajax/1709687889338572/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1447907895258606/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKY9CP9RLe+ +:scheme https +content-length 439 +:method POST + +:path /events/ajax/1911851189079234/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1447907895258606/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKY9CP9RLe+ +:scheme https +content-length 439 +:method POST + +:path /events/ajax/733393743524215/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1447907895258606/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKY9CP9RLe+ +:scheme https +content-length 439 +:method POST + +:path /events/ajax/121794298541978/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1447907895258606/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKY9CP9RLe+ +:scheme https +content-length 439 +:method POST + +:path /events/ajax/313616719041832/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1447907895258606/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKY9CP9RLe+ +:scheme https +content-length 439 +:method POST + +:path /ajax/bz +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1447907895258606/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKY9CP9RLe+ +:scheme https +content-length 1245 +:method POST + +:path /ajax/bz +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1709687889338572/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYdyL1RLe0 +cookie /kiaC=tbsdLtVawA2lK*Xf/NS0bMd/Tkebr6QGADCPU9HOE13J9xoeKEYfs* +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ +:scheme https +content-length 1374 +:method POST + +:path /events/1709687889338572/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D&dpr=1&ajaxpipe=1&ajaxpipe_token=AXhgQic5nZEiPkJl&quickling[version]=3490195%3B0%3B&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEyGzEyeWrWo8ovxGEG2N6zUkxu13wqojyRUC3eEbbyEjKewhUdUOum2SaCwAwIUsz8nwsUCidwBx62q3O69LK4UG6EvG1Axq3au7oeoa898pCK6468nCxi8y8Z0io-2mbx-8xuawnrK8zoym5Egy86CEyJ7x3yFEC2bwEBojouw&__req=jsonp_6&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473&__adt=6 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +upgrade-insecure-requests 1 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 +referer https://www.facebook.com/events/1447907895258606/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYdyL1RLe0 +cookie /kiaC=tbsdLtVawA2lK*Xf/NS0bMd/Tkebr6QGADCPU9HOE13J9xoeKEYfs* +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ +:scheme https +:method GET + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yy/l/0,cross/eQVk65Pz4u5.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yM/l/0,cross/MLNfP69EIl8.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yh/l/0,cross/iydtwz40Qb-.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yN/l/0,cross/ZPMqK38G-4h.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yt/l/0,cross/UNGqFczWO_e.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yl/l/0,cross/iYeZGLkjeBf.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yZ/l/0,cross/T2vkV3tYtHO.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yO/l/0,cross/z3VOxP2h9AS.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/y7/r/YmJVIBP8IMt.png +referer https://static.xx.fbcdn.net/rsrc.php/v3/yy/l/0,cross/eQVk65Pz4u5.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 + +:path /v/t1.0-0/p526x296/22046029_1611235688940236_6270057556382781739_n.jpg?oh=b6cab8dddcc20e8bf3c5d6102c63f298&oe=5AC9A2C1 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /api/graphql/ +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1709687889338572/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYdyL1RLe0 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ +:scheme https +content-length 569 +:method POST + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yu/l/0,cross/5Wr55_OaqyB.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yD/l/0,cross/C1XzobiRO68.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yF/l/0,cross/ySVFHWyZdBc.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:path /api/graphql/ +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1709687889338572/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYdyL1RLe0 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ +:scheme https +content-length 569 +:method POST + +:path /v/t1.0-1/p40x40/22405450_1474525099303608_7382850054991762247_n.jpg?oh=2d0f8815a16149f988803daaade5d1cc&oe=5A997673 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/c24.0.100.100/p100x100/15439912_1251006534937837_8742195435936088695_n.jpg?oh=c5f73929ed33b8e0807624fd80b50d86&oe=5A95546D +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/22405450_1474525099303608_7382850054991762247_n.jpg?oh=9486ebd4220c196dfd9a3f50da38f905&oe=5AC95A61 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/c17.0.64.64/p64x64/21559086_1605828752814263_2926060938812406268_n.jpg?oh=1a7659aab9bbadfb2343118393758f89&oe=5ACD9B0C +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/c53.0.64.64/p64x64/23031225_10155102304774677_1465748209322455093_n.jpg?oh=505da30a5bed9b6ee85d69e7847fb722&oe=5AA1313F +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /events/ajax/363814037411265/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1709687889338572/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYdyL1RLe0 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ +:scheme https +content-length 439 +:method POST + +:path /events/ajax/1746931315609833/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1709687889338572/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYdyL1RLe0 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ +:scheme https +content-length 439 +:method POST + +:path /events/ajax/121794298541978/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1709687889338572/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYdyL1RLe0 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ +:scheme https +content-length 439 +:method POST + +:path /events/ajax/1991086554439899/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1709687889338572/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYdyL1RLe0 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ +:scheme https +content-length 439 +:method POST + +:path /events/ajax/733393743524215/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1709687889338572/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYdyL1RLe0 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ +:scheme https +content-length 439 +:method POST + +:path /events/ajax/1911851189079234/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1709687889338572/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYdyL1RLe0 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ +:scheme https +content-length 439 +:method POST + +:path /ajax/bz +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/1709687889338572/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYdyL1RLe0 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztal3eTW3MtbeM0Rh55ipXqW5EpSDcGpKBHBx/ +:scheme https +content-length 1247 +:method POST + +:path /ajax/bz +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/121794298541978/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYgAT9RLe2 +cookie /kiaC=tbsdLtVawA2lKXYd0JN1bIeYUmf+EqjYM8Ty0fm4r8V*Xwjk+n4lr +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf +:scheme https +content-length 1373 +:method POST + +:path /events/121794298541978/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D&dpr=1&ajaxpipe=1&ajaxpipe_token=AXhgQic5nZEiPkJl&quickling[version]=3490195%3B0%3B&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEyGzEyeWrWo8ovxGEG2N6zUkxu13wqojyRUC3eEbbyEjKewhUdUOum2SaCwAwIUsz8nwsUCidwBx62q3O69LK4UG6EvG1Axq3au7oeoa898pCK6468nCxi8y8Z0io-2mbx-8xuawnrK8zoym5Egy86CEyJ7x3yFEC2bwEBojouw&__req=jsonp_7&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473&__adt=7 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +upgrade-insecure-requests 1 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 +referer https://www.facebook.com/events/1709687889338572/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYgAT9RLe2 +cookie /kiaC=tbsdLtVawA2lKXYd0JN1bIeYUmf+EqjYM8Ty0fm4r8V*Xwjk+n4lr +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf +:scheme https +:method GET + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yy/l/0,cross/eQVk65Pz4u5.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yM/l/0,cross/MLNfP69EIl8.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yh/l/0,cross/iydtwz40Qb-.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yN/l/0,cross/ZPMqK38G-4h.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yt/l/0,cross/UNGqFczWO_e.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yl/l/0,cross/iYeZGLkjeBf.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yO/l/0,cross/z3VOxP2h9AS.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yZ/l/0,cross/T2vkV3tYtHO.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:path /v/t1.0-0/p526x296/21616530_1605822352814903_1798790091350952_n.jpg?oh=5731464e5cf5efecb8c8c8d767fc502f&oe=5ACBA2F0 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /api/graphql/ +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/121794298541978/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYgAT9RLe2 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf +:scheme https +content-length 568 +:method POST + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yu/l/0,cross/5Wr55_OaqyB.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yD/l/0,cross/C1XzobiRO68.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yF/l/0,cross/ySVFHWyZdBc.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:path /api/graphql/ +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/121794298541978/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYgAT9RLe2 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf +:scheme https +content-length 568 +:method POST + +:path /v/t1.0-1/p40x40/24232121_1531597353561011_3121094620124891272_n.jpg?oh=bac81874c0af4c34cff0deb63276809f&oe=5ACA83B1 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p40x40/12928337_182175672167795_8082301682234772028_n.jpg?oh=e703c94de0c0c7de7372658bfec8e8bc&oe=5A9ED69C +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p40x40/13226897_1190272007672233_391504603337286643_n.jpg?oh=bcbdde3f56518c36412170d1c7ed3997&oe=5AD603F6 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/24232121_1531597353561011_3121094620124891272_n.jpg?oh=89e7d525ee67b599afaa5eb9a46d0516&oe=5A9576A3 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/12928337_182175672167795_8082301682234772028_n.jpg?oh=71916fe8ef5bb2f8194c8cb72e51a8a6&oe=5A8F1F05 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/13226897_1190272007672233_391504603337286643_n.jpg?oh=df2ff8f8ec916bea727a34d241054347&oe=5ACB516F +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/18697989_10203479437103357_786844211730674814_n.jpg?oh=dadd6796ea9b5e3eb3253f0a6f83ba3f&oe=5AA145F2 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/22196236_10212100499366199_2256862503609744121_n.jpg?oh=c1fbc9404b3f4f8c9bb8061e84e8d6f7&oe=5A98F452 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/16388430_123334868182006_7904865424458126619_n.jpg?oh=6d38ff44a808e5f40b921b6d57b055b0&oe=5AD415B7 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/14639879_699270873574358_1379733909601947956_n.jpg?oh=ac5d1ef3c0cdfec30adad3d5d253d4c3&oe=5A9E167A +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/23722208_940207266129332_3105091050549347593_n.jpg?oh=b0b0c9e1c34a1f19748ba956b6e674a6&oe=5A8FC07E +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/19060008_10209829588558627_4792308750847464570_n.jpg?oh=69cff08a5a55f5e66b391ef7e85b233d&oe=5A98C41B +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/c4.0.32.32/p32x32/580320_4555543723098_1383629766_n.jpg?oh=cae783722049b6a068f9c372c9781db9&oe=5ACDA87E +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/c11.0.64.64/p64x64/22405523_10155333936377415_1438051142295122957_n.jpg?oh=879ecc0b58955512495d76aed6919e2e&oe=5A9A42E1 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /events/ajax/1441469165967314/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/121794298541978/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYgAT9RLe2 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf +:scheme https +content-length 439 +:method POST + +:path /events/ajax/733393743524215/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/121794298541978/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYgAT9RLe2 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf +:scheme https +content-length 439 +:method POST + +:path /events/ajax/1709687889338572/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/121794298541978/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYgAT9RLe2 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf +:scheme https +content-length 439 +:method POST + +:path /events/ajax/313616719041832/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/121794298541978/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYgAT9RLe2 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf +:scheme https +content-length 439 +:method POST + +:path /events/ajax/1447907895258606/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/121794298541978/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYgAT9RLe2 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf +:scheme https +content-length 439 +:method POST + +:path /events/ajax/1911851189079234/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/121794298541978/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYgAT9RLe2 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1ztNm2Q8S2wxbdM4PhljjoaH32hAPJeKrYuwPOvgf +:scheme https +content-length 439 +:method POST + +:path /ajax/bz +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/121794298541978/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKYgAT9RLe2 +:scheme https +content-length 1243 +:method POST + +:path /ajax/bz +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/313616719041832/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZ9xR1RLeY6 +cookie /kiaC=tbsdLtVawA2lMW/cVLSWcDeYTi9+EqjYM8Ty0fm4r8V*Xwjk+n4lr +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf +:scheme https +content-length 1373 +:method POST + +:path /events/313616719041832/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D&dpr=1&ajaxpipe=1&ajaxpipe_token=AXhgQic5nZEiPkJl&quickling[version]=3490195%3B0%3B&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEyGzEyeWrWo8ovxGEG2N6zUkxu13wqojyRUC3eEbbyEjKewhUdUOum2SaCwAwIUsz8nwsUCidwBx62q3O69LK4UG6EvG1Axq3au7oeoa898pCK6468nCxi8y8Z0io-2mbx-8xuawnrK8zoym5Egy86CEyJ7x3yFEC2bwEBojouw&__req=jsonp_8&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473&__adt=8 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +upgrade-insecure-requests 1 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 +referer https://www.facebook.com/events/121794298541978/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZ9xR1RLeY6 +cookie /kiaC=tbsdLtVawA2lMW/cVLSWcDeYTi9+EqjYM8Ty0fm4r8V*Xwjk+n4lr +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf +:scheme https +:method GET + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yM/l/0,cross/MLNfP69EIl8.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yh/l/0,cross/iydtwz40Qb-.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yN/l/0,cross/ZPMqK38G-4h.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yt/l/0,cross/UNGqFczWO_e.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yl/l/0,cross/iYeZGLkjeBf.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yO/l/0,cross/z3VOxP2h9AS.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:path /v/t1.0-0/p526x296/21766488_1611228475607624_8874848206202749685_n.jpg?oh=6ce39257a4ef730d2d0eeeb168dc1f0d&oe=5ACE0A7F +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /api/graphql/ +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/313616719041832/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZ9xR1RLeY6 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf +:scheme https +content-length 568 +:method POST + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yD/l/0,cross/C1XzobiRO68.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yF/l/0,cross/ySVFHWyZdBc.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:path /api/graphql/ +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/313616719041832/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZ9xR1RLeY6 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf +:scheme https +content-length 568 +:method POST + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yT/r/tLN3LXSmwnV.png +referer https://static.xx.fbcdn.net/rsrc.php/v3/yh/l/0,cross/iydtwz40Qb-.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 + +:path /v/t1.0-1/p40x40/531591_269299136538659_782478448_n.jpg?oh=bb514c0d27a597ef3b9d5d76e1d9199c&oe=5A8DFCB6 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /images/emoji.php/v9/f4f/1/16/1f447.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p32x32/531591_269299136538659_782478448_n.jpg?oh=e8ecbe66f9733f1234b9121acfbd8eb4&oe=5A908605 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/c0.0.64.64/p64x64/23472342_10155097611883059_8103458094928848063_n.jpg?oh=8d03fcefc394baf5e1d9615a8d866af5&oe=5A97AB98 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /events/ajax/140000083281755/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/313616719041832/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZ9xR1RLeY6 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf +:scheme https +content-length 439 +:method POST + +:path /events/ajax/1709687889338572/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/313616719041832/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZ9xR1RLeY6 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf +:scheme https +content-length 439 +:method POST + +:path /events/ajax/1911851189079234/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/313616719041832/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZ9xR1RLeY6 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf +:scheme https +content-length 439 +:method POST + +:path /events/ajax/733393743524215/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/313616719041832/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZ9xR1RLeY6 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf +:scheme https +content-length 439 +:method POST + +:path /events/ajax/121794298541978/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/313616719041832/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZ9xR1RLeY6 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf +:scheme https +content-length 439 +:method POST + +:path /events/ajax/1447907895258606/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/313616719041832/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZ9xR1RLeY6 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf +:scheme https +content-length 439 +:method POST + +:path /ajax/bz +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/313616719041832/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZ9xR1RLeY6 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1z2Jo2AzU3MYccw4Ph5/noaH32hAPJeKrYuwPOvgf +:scheme https +content-length 1223 +:method POST + +:path /ajax/bz +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/733393743524215/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZcBU1RLeY8 +cookie /kiaC=tbsdLtVawA2lQY/90ISZ6Ic+Ngc+EqjYM8Ty0fm4r8V*Xwjk+n4lr +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf +:scheme https +content-length 1373 +:method POST + +:path /events/733393743524215/?acontext=%7B%22ref%22%3A%2244%22%2C%22unit_ref%22%3A%22related_events%22%2C%22action_history%22%3A%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22%7D&dpr=1&ajaxpipe=1&ajaxpipe_token=AXhgQic5nZEiPkJl&quickling[version]=3490195%3B0%3B&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEyGzEyeWrWo8ovxGEG2N6zUkxu13wqojyRUC3eEbbyEjKewhUdUOum2SaCwAwIUsz8nwsUCidwBx62q3O69LK4UG6EvG1Axq3au7oeoa898pCK6468nCxi8y8Z0io-2mbx-8xuawnrK8zoym5Egy86CEyJ7x3yFEC2bwEBojouw&__req=jsonp_9&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473&__adt=9 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +upgrade-insecure-requests 1 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 +referer https://www.facebook.com/events/313616719041832/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZcBU1RLeY8 +cookie /kiaC=tbsdLtVawA2lQY/90ISZ6Ic+Ngc+EqjYM8Ty0fm4r8V*Xwjk+n4lr +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf +:scheme https +:method GET + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yy/l/0,cross/eQVk65Pz4u5.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yM/l/0,cross/MLNfP69EIl8.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yh/l/0,cross/iydtwz40Qb-.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yN/l/0,cross/ZPMqK38G-4h.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yt/l/0,cross/UNGqFczWO_e.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yl/l/0,cross/iYeZGLkjeBf.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yZ/l/0,cross/T2vkV3tYtHO.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yO/l/0,cross/z3VOxP2h9AS.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/y7/r/YmJVIBP8IMt.png +referer https://static.xx.fbcdn.net/rsrc.php/v3/yy/l/0,cross/eQVk65Pz4u5.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 + +:path /v/t1.0-0/p526x296/21766441_1611246572272481_2554154972748677040_n.jpg?oh=9bc3309e4930db9870d335e9724632b6&oe=5A9EBB17 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yu/l/0,cross/5Wr55_OaqyB.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yD/l/0,cross/C1XzobiRO68.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:path /api/graphql/ +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/733393743524215/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZcBU1RLeY8 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf +:scheme https +content-length 568 +:method POST + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yF/l/0,cross/ySVFHWyZdBc.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +referer https://www.facebook.com/ +origin https://www.facebook.com + +:path /api/graphql/ +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/733393743524215/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZcBU1RLeY8 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf +:scheme https +content-length 568 +:method POST + +:path /v/t1.0-0/c17.0.64.64/p64x64/23319034_1654531557943982_6407898304503772728_n.jpg?oh=3bb54623c4841feb1552521ddf3383cd&oe=5ACB1BED +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-0/c17.0.64.64/p64x64/23658495_1668707769859694_6242239439867805870_n.jpg?oh=293821a99ebd2c90f6ef022d3173491c&oe=5AC9CBFF +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /events/ajax/313616719041832/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/733393743524215/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZcBU1RLeY8 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf +:scheme https +content-length 439 +:method POST + +:path /events/ajax/933722390110301/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/733393743524215/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZcBU1RLeY8 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf +:scheme https +content-length 439 +:method POST + +:path /events/ajax/121794298541978/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/733393743524215/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZcBU1RLeY8 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf +:scheme https +content-length 439 +:method POST + +:path /events/ajax/255990421592930/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/733393743524215/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZcBU1RLeY8 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf +:scheme https +content-length 439 +:method POST + +:path /events/ajax/1991086554439899/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/733393743524215/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZcBU1RLeY8 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf +:scheme https +content-length 439 +:method POST + +:path /events/ajax/1709687889338572/impression/?acontext[ref]=44&acontext[source]=44&acontext[action_history]=%22[%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D%2C%7B%5C%22surface%5C%22%3A%5C%22permalink%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22RHC%5C%22%2C%5C%22extra_data%5C%22%3A[]%7D]%22&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/733393743524215/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZcBU1RLeY8 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOLxS+*oQaG1A2Ro1Q8+3M7gdMZIfHSgoaH32hAPJeKrYuwPOvgf +:scheme https +content-length 439 +:method POST + +:path /ajax/bz +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/events/733393743524215/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZcBU1RLeY8 +:scheme https +content-length 1249 +:method POST + +:path /ajax/haste-response/?modules=Hovercard&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEyGzEyeWrWo8ovxGEG2N6zUkxu13wqojyRUC3eEbbyEjKewhUdUOum2SaCwAwIUsz8nwsUCidwBx62q3O69LK4UG6EvG1Axq3au7oeoa898pCK6468nCxi8y8Z0io-2mbx-8xuawnrK8zoym5Egy86CEyJ7x3yFEC2bwEBojouw&__req=2q&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/events/733393743524215/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMKZcBU1RLeY8 +:scheme https +:method GET + +:path /rsrc.php/v3/yS/l/0,cross/crBpd5oCqXt.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3i8ma4/yj/l/en_US/WHDOHrV-tta.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /ajax/bz +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMK/7vP5RLeYa +cookie /kiaC=tbseNYXUkzYQMDI1YtwF4 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOKuulQfpIcKKxo4E+ +:scheme https +content-length 1065 +:method POST + +:path /?ref=tn_tnmn&dpr=1&ajaxpipe=1&ajaxpipe_token=AXhgQic5nZEiPkJl&quickling[version]=3490195%3B0%3B&__user=100023237774992&__a=1&__dyn=7AgNe-4am2d2u6aZGeFxqewKKEyGzEyeWrWo8ovxGEG2N6zUkxu13wqojyRUC3eEbbyEjKewhUdUOum2SaCwAwIUsz8nwsUCidwBx62q3O69LK4UG6EvG1Axq3au7oeoa898pCK6468nCxi8y8Z0io-2mbx-8xuawnrK8zoym5Egy86CEyJ7x3yFEC2bwEBojouw&__req=jsonp_10&__be=1&__pc=PHASED%3ADEFAULT&__rev=3490195&__spin_r=3490195&__spin_b=trunk&__spin_t=1512096473&__adt=10 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +upgrade-insecure-requests 1 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 +referer https://www.facebook.com/events/733393743524215/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMK/7vP5RLeYa +cookie /kiaC=tbseNYXUkzYQMDI1YtwF4 +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOKuulQfpIcKKxo4E+ +:scheme https +:method GET + +:path /security/hsts-pixel.gif?c=3.2.5 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMK/7vP5RLeYa +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOKuulQfpIcKKxo4E+ +:scheme https +:method GET + +:path /v/t1.0-1/c12.0.40.40/p40x40/10354686_10150004552801856_220367501106153455_n.jpg?oh=069c328c92d62cf2e0fb83dacee97793&oe=5AD268F8 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yp/r/2iAVm2uUcKs.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://static.xx.fbcdn.net/rsrc.php/v3/yG/l/0,cross/FFxQ1nfdvDo.css +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yH/r/yNvz5xtKREW.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://static.xx.fbcdn.net/rsrc.php/v3/yg/l/0,cross/YbW8fl-NvjH.css +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:method GET +:scheme https +:authority scontent-lga3-1.xx.fbcdn.net +:path /v/t1.0-1/c7.0.24.24/p24x24/10354686_10150004552801856_220367501106153455_n.jpg?oh=11dc236df7f15b2a8fa8e661eb564a3b&oe=5AD4C3DE +referer https://www.facebook.com/ +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 + +:path /v/t1.0-1/p240x240/21314782_10159200963225705_3770109417540733549_n.jpg?oh=844e26db3b2922946c6a091a68fabe50&oe=5AD21213 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/c57.17.207.207/p240x240/384257_10150422357102608_685874301_n.jpg?oh=f73d75ea1540089d4f3b901515edbe1b&oe=5AD20BF2 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p240x240/23622157_10154982307517109_7020846265266810616_n.jpg?oh=7525e9288157b1a12edab419d051e2a5&oe=5ACA40BD +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p240x240/10917418_10152508827966783_6460127938302821830_n.jpg?oh=e4b01f9b00ee0a8ffb669d7835b9308a&oe=5A8D8986 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p240x240/12308614_10154628563364068_8875599992824207714_n.jpg?oh=a03c6994e3435deee2f4fbea058ca6d2&oe=5A89A0B1 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p240x240/12294662_10100410348016388_513443314251208893_n.jpg?oh=1ad39710e20db647ea5c84386f056e31&oe=5A945706 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p240x240/23316654_10155867279909706_6995451216203233898_n.jpg?oh=b8657d968c2ae00ad0a577aeae39a92c&oe=5A91A3AC +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/c0.0.240.240/p240x240/14370286_10210498302074996_8991438214434252196_n.jpg?oh=eaef8f22170f296e5ba8fb0fc39719ea&oe=5A98211D +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/c25.0.150.150/1800231_10152231321132863_1628260586_n.jpg?oh=f9f86bc542c811e31a541008dd3bbdfb&oe=5AD7B7CD +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/c61.0.240.240/p240x240/21463409_10155683084304518_3841025447444460378_n.jpg?oh=269cdf1a295d1046aa52f43ff412c3cd&oe=5A8AE873 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/c12.0.240.240/p240x240/10409688_10152783847736779_6268986375408484346_n.jpg?oh=ee881d2b3406bf50d97114bfb4e14cc3&oe=5A8B44F3 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p240x240/18447416_10207602672823510_1911267733018824475_n.jpg?oh=1e5b0c1555b4c2321e0cc0418398d25d&oe=5A9EAF53 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p240x240/12742261_10154082158422446_7574676053979317307_n.jpg?oh=b7c3832555786791f56f8c1f0a3073ae&oe=5A98FB2E +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p240x240/22222073_509333842746953_1966313970212218380_n.jpg?oh=2bc63776ed8cd00386bcb96488889904&oe=5ACEBCA6 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/c0.0.240.240/p240x240/22222015_706363442903720_8773664824394405283_n.jpg?oh=de4e4011db36c058643e6ca21f4d3cc3&oe=5A9410F5 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/c25.0.150.150/1779756_10152203522202708_181885041_n.jpg?oh=56a25255e5643d7130895a4caa38ecd0&oe=5A97D546 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p240x240/21106729_10155772970802376_2191527012650361108_n.jpg?oh=5fddf5855adfcffca60520dbaf587775&oe=5A97E2E1 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p240x240/15037258_330583707313103_2099110538176613591_n.jpg?oh=eab1eda25bcd5fec3bcdf4e0bd4e263f&oe=5ACA4410 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /v/t1.0-1/p240x240/19399403_1179174878854637_5920687472359406282_n.jpg?oh=43b6931332f058c8e5f4a7d44b7169dc&oe=5A8D362E +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yb/r/GsNJNwuI-UM.gif +referer https://www.facebook.com/ +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/y4/r/-PAXP-deijE.gif +referer https://www.facebook.com/ +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 + +:method GET +:scheme https +:authority scontent-lga3-1.xx.fbcdn.net +:path /v/t1.0-1/c170.50.621.621/s50x50/384257_10150422357102608_685874301_n.jpg?oh=28aabe0172a1e888f353e0079b0bb7ec&oe=5A8C9EAD +referer https://www.facebook.com/ +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 + +:method GET +:scheme https +:authority scontent-lga3-1.xx.fbcdn.net +:path /v/t1.0-1/p50x50/23622157_10154982307517109_7020846265266810616_n.jpg?oh=1f6f0d07ac8c542a51e0857d05c1d7c9&oe=5A8F88A5 +referer https://www.facebook.com/ +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 + +:method GET +:scheme https +:authority scontent-lga3-1.xx.fbcdn.net +:path /v/t1.0-1/p50x50/21314782_10159200963225705_3770109417540733549_n.jpg?oh=2c5c202c6c079bb25f05d5fd618ec007&oe=5AD5A70B +referer https://www.facebook.com/ +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 + +:path /v/t1.0-1/c13.0.50.50/p50x50/21463409_10155683084304518_3841025447444460378_n.jpg?oh=af1bc75737851eef6723c2f460dc0b6b&oe=5A90178B +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:method GET +:scheme https +:authority scontent-lga3-1.xx.fbcdn.net +:path /v/t1.0-1/p50x50/10917418_10152508827966783_6460127938302821830_n.jpg?oh=ec2613409f72dd0e5ffeff430b3f2e96&oe=5AD1399E +referer https://www.facebook.com/ +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 + +:method GET +:scheme https +:authority scontent-lga3-1.xx.fbcdn.net +:path /v/t1.0-1/p50x50/12308614_10154628563364068_8875599992824207714_n.jpg?oh=cd44e652f95ebde8f70a187c3d886033&oe=5AD5BAA9 +referer https://www.facebook.com/ +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 + +:path /rsrc.php/v3/y3/r/e_5DLKXq3R7.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://static.xx.fbcdn.net/rsrc.php/v3/yG/l/0,cross/FFxQ1nfdvDo.css +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:method GET +:scheme https +:authority static.xx.fbcdn.net +:path /rsrc.php/v3/yR/r/ZWvcrvmVGoU.png +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 + +:path /rsrc.php/v3/y7/r/6UFmXXnPEE7.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /security/hsts-pixel.gif?c=2.5 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority fbcdn.net +:scheme https +:method GET + +:path /security/hsts-pixel.gif?c=5 +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority fbsbx.com +:scheme https +:method GET + +:path /v/t1.0-1/c15.0.50.50/p50x50/10354686_10150004552801856_220367501106153455_n.jpg?oh=24b240ba2dc60ad31b4319fbab9bb9e2&oe=5A9CD62F +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent-lga3-1.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/y-/l/0,cross/pcrxJyVZ216.css +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept text/css,*/*;q=0.1 +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /security/hsts-pixel.gif +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority connect.facebook.net +:scheme https +:method GET + +:path /rsrc.php/v3/yS/r/AxHb977uNzV.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yd/r/EKiUOMkHrSd.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /sketch_results/?dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMK/7vP5RLeYa +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOKuulQfpIcKKxo4E+ +:scheme https +content-length 982 +:method POST + +:path /ego/feed/logging/impression/?ego_id=701635704&qid=6494405107505770635&mf_story_key=5879921190707205369&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMK/7vP5RLeYa +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOKuulQfpIcKKxo4E+ +:scheme https +content-length 441 +:method POST + +:path /ego/feed/logging/impression/?ego_id=504037607&qid=6494405107505770635&mf_story_key=5879921190707205369&dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMK/7vP5RLeYa +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOKuulQfpIcKKxo4E+ +:scheme https +content-length 441 +:method POST + +:path /rsrc.php/v3i80M4/yS/l/en_US/F5e4a3f9Rw-.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yG/r/ou6JZKTYK7C.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3ixvC4/yS/l/en_US/9vXQc1VGj6K.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yB/r/PMBnY-MweDn.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yt/r/D2QZcdoavWS.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /rsrc.php/v3/yW/r/HAHWNXx6C5M.js +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority static.xx.fbcdn.net +:scheme https +:method GET + +:path /ajax/bz +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMK/7vP5RLeYa +cookie SkbUDXHW8=uNl+TE+UuX*/xCgQSzh*nSE11nUKSdMCGxd5gQdZVKTrIv89akwVgxlj03KUGhCtNHom3uVtAD+INBHcof5sreiFdOKuulQfpIcKKxo4E+ +:scheme https +content-length 1067 +:method POST + +:path /hads-ak-prn2/1487645_6012475414660_1439393861_n.png +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept image/webp,image/apng,image/*,*/*;q=0.8 +referer https://www.facebook.com/ +:authority scontent.xx.fbcdn.net +:scheme https +:method GET + +:path /ajax/bz +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMK/7vP5RLeYa +:scheme https +content-length 1742 +:method POST + +:method GET +:scheme https +:authority 2-edge-chat.facebook.com +:path /pull?channel=p_100023237774992&seq=1&partition=-2&clientid=6b07434c&cb=jyk0&idle=4&qp=y&cap=8&tur=994&qpmade=1512096477150&pws=fresh&isq=1&msgs_recv=1&uid=100023237774992&viewer_uid=100023237774992&sticky_token=125&sticky_pool=atn1c08_chat-proxy&state=active +referer https://www.facebook.com/ +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 + +:path /pull?channel=p_100023237774992&seq=1&partition=-2&clientid=6b07434c&cb=jyk0&idle=4&qp=y&cap=8&tur=994&qpmade=1512096477150&pws=fresh&isq=1&msgs_recv=1&uid=100023237774992&viewer_uid=100023237774992&sticky_token=125&sticky_pool=atn1c08_chat-proxy&state=active +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +accept */* +referer https://www.facebook.com/ +:authority 2-edge-chat.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Hh*3j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+jCwg83NZ/mXvJKR/*S5OL2HV2/I/YYDll +cookie Za=iViLgft +cookie D9j=RfFb6yMK/7vP5RLeYa +:scheme https +:method GET + +:method GET +:scheme https +:authority 2-edge-chat.facebook.com +:path /pull?channel=p_100023237774992&seq=2&partition=-2&clientid=6b07434c&cb=fhdu&idle=4&qp=y&cap=8&pws=fresh&isq=1&msgs_recv=2&uid=100023237774992&viewer_uid=100023237774992&sticky_token=125&sticky_pool=atn1c08_chat-proxy&state=active +referer https://www.facebook.com/ +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 + +:path /ascend_mr_no/?dpr=1 +origin https://www.facebook.com +accept-encoding gzip, deflate, br +accept-language en-US,en;q=0.9 +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.70 Safari/537.36 +content-type application/x-www-form-urlencoded +accept */* +referer https://www.facebook.com/ +:authority www.facebook.com +cookie V8=hYzuM+kdNsHgGxukQ/3*1B/n +cookie G7ja=iMyZ*Gw332hrwBLqajFHVkbf +cookie F5kbEb=a6pGH+9xS76N138 +cookie /p=hFdVrFiDzceAzrBCobYXWNK6Ub*Mh7iI8BUin2H41HkAe +cookie Io=9Y+FPb0BLAf6k11adVnufBG4s/svPIupFzprlPK9lJC9l6eT2SCsxzXneS5uxSedoZ8lH8poGBfc4Tn +cookie Si=6 +cookie Za=iViLgft +cookie D9j=RfFb6yMK/7vP5RLeYa +cookie So4bE7q/=K/KhaPOVYxeYbVHL19Ic03j9/DqLTuCQN5fLaKhh58/DRYCUldjVVzTVjg8cV+kxx763NZ/mXvJKR/*S5OL2HV2/I/YYEll +:scheme https +content-length 19401 +:method POST + diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/qifs/fb-resp.qif b/external/lsquic/src/liblsquic/ls-qpack/test/qifs/fb-resp.qif new file mode 100644 index 0000000..20311ad --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/qifs/fb-resp.qif @@ -0,0 +1,5982 @@ +x-fb-debug SASLTVtJVp+AQ2p1v8FGiCfzyMTFyXtCl4jQU8bx3HFHBGi+S6Zr8HVwyMV1Bd7ZtMUXkBC1tOmBil21liPXLg== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 P0d0dMxGy+82XtBefaBmPA== +date Fri, 01 Dec 2017 02:47:59 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +content-length 2269 +x-xss-protection 0 +expires Fri, 23 Nov 2018 12:17:18 GMT + +x-fb-debug Lggs5E1dq7LzpVIK3dKMBgaeBeCUcnct+a406urJCVcirUe0tLtj0jpXolG+AbHu3VtgwKjsQv3JB1JTPdv7qw== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 e1GPajcAA5W3bvrDUnemRA== +date Fri, 01 Dec 2017 02:47:57 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +content-length 4969 +x-xss-protection 0 +expires Fri, 23 Nov 2018 12:17:18 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug KosdQZTywEhijxkaJaeIGZUNoNzdqdPJok08j01MTQjTIDmCOpXuOAW1nSTiwp1o2levX702JvMmy47oPPHS8A== +x-frame-options DENY +date Fri, 01 Dec 2017 02:47:59 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug ptNrsKHbfbtIWth08olYf7aA1cPYzkz/7GMFkKO1wn6KS0jyDwhOtMdOLmEAZnhxA/VxToSA1nNDhaAc7FJz6A== +x-frame-options DENY +date Fri, 01 Dec 2017 02:47:59 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 xdldqlFln8zS76EEVDcuqQ== +status 200 +content-length 447 +x-xss-protection 0 +x-fb-debug mEO7bfwFStBMwJWfW4pmg2XL25AswjrVlfcfYbxkcS2ssduZmiKoipMH9XwoTGkb+Qnq9bcjwWbwDQzsea/vMQ== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:47:59 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 20:40:03 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug TvOROrieggVKWF52s5yHEA3mQ1zDEJWh8Sj0B+f7xt3PL8qVSeX47LM2CSqeJ2/M53wikG49+DD2aAJG0s0RPg== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:00 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +x-fb-debug a8ET6mB4qBEvQo9//btSC5QKabMxb8MtHXb9aU75HeJCFQVaZ7yfdC9BZT7JXs/fr8uHnYcnnvQEE5AzH4qfSg== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:00 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control public,max-age=86400 +access-control-allow-credentials true +expires Sat, 02 Dec 2017 02:48:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +x-fb-debug QSl55Hc1TFfrfgICO0WEXX1p2DjkXC5w7eAbe7nWYEuuAByf/eplw1TCa5i5haOUJFb/V6tT283E+moKlFxXvw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:00 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control public,max-age=86400 +access-control-allow-credentials true +expires Sat, 02 Dec 2017 02:48:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +x-fb-debug 4J9GGju98yXnIbDBCHsnWWyhyJ7lbZo/orq4ea6BlUBHfu1UvVhg7bQ9dq2tThGzGJXF3Uc3il6C4Fd3rPxSlg== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:00 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control public,max-age=86400 +access-control-allow-credentials true +expires Sat, 02 Dec 2017 02:48:00 GMT + +x-fb-debug iVSC5UoRzQPMHwjjfteCUuZL23G6caJNd3CJVJ1VBSXN0A0voAnUYd/BxqXX2d/q51/cyCNZibCFJvmkfZ7c2A== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 Sa3P5qK+Nv7nge73PlbVnw== +date Fri, 01 Dec 2017 02:47:54 GMT +status 200 +content-type image/gif +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +timing-allow-origin * +content-length 1414 +x-xss-protection 0 +expires Sun, 18 Nov 2018 20:51:24 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug IJJryxSHYHK02N5zoW/V4t6vGZUfS5wp1zyCZ2c7AvVlRZ25ZZtmYWAUqjKvlL519kc2r9QeYf6x7ILS61yjAQ== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:00 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +content-encoding br +x-content-type-options nosniff +content-md5 pQpUbVkwSR6byHFL/7b8mg== +status 200 +content-length 2203 +x-xss-protection 0 +x-fb-debug m76LhRYx7f58ob4bktemQtlvg8+M1ZyhAx7Qz8eN1CKYVE1MUC/yHSby13Bm34Xj9pNsES6xHQEv/YmXEftDXw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:00 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 23:02:23 GMT + +x-fb-debug 40OavfgvR11mfIGZzV/fvZTP90MhAEH0zHvea72NjcWQvD/1AnMvEUYzzxcDxZbToU6hYqcsKrIzbDGUPlkI+A== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 409MdgQ0fyFgmOuNysvTVg== +date Fri, 01 Dec 2017 02:47:42 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +content-length 5189 +x-xss-protection 0 +expires Fri, 23 Nov 2018 12:17:06 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug chrBBz4SEsGv1ZrufHBAed2St1EsZdm+cib6eyFRehfDFnzH1c1S5f7LQv/285c/4iYx/8I7qKhOEddZu0mw1Q== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:00 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 3/GPqjBaqhuenuhKPMcWB/lN3HyphJxaSt62dSaE6J9MTbsQcCiOn74quVCB3sklBW64w2w1CxMmmrXS/8OJ0A== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:04 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug wU4xeFXoTvB3fz0bx2X0xWazFtL/F3YoeVYJYDQKNsbGxw2ZWte7ucnB8hyQPofyRdGFEjFzwN7J5s3YN3+b5g== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:09 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +x-fb-debug xnMJ/dh5lpylLnD1J8ahro3au8Krhu0Qvwr7plcpt9I7Mpg+q8T+dcWvuYDrl1QT1OShxUTgnVkAL5Pgtiso6w== +content-encoding gzip +vary Origin +vary Accept-Encoding +status 200 +date Fri, 01 Dec 2017 02:48:09 GMT +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/html; charset=UTF-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +access-control-allow-credentials true +set-cookie oNcnS=gpojSOS; 5X9e44v=0mTWPDQ8REZIxx5UsR6m77F2nLLDx; KAhjk6h=qwU+4DYhv*7; gAdd=f; 4O66Yd=zifBOQBN5pG/H +content-length 341 + +content-security-policy frame-ancestors 'self'; +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug lVC6OYTyhZd8fitFRTviZIIyNQHSdjdA1iAbCPBw6VdJ0DZvTpDDbEaMryxyoVDgwS9G6HDo5uPatqo2FNrcsw== +date Fri, 01 Dec 2017 02:48:09 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/html; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 8YsseCeaO76dz82KH/3OQw== +status 200 +content-length 4559 +x-xss-protection 0 +x-fb-debug DIZNq+5PMTDoSqZobDpWGk/qY97FvNkRjxK3ezlYd8CVpOOG9IVeabusQW5I4cjro2y9nvZtdw8tYVq65QuDjw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:54:46 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 GLLPFim1kqAn/ld55Vtg8g== +status 200 +content-length 3727 +x-xss-protection 0 +x-fb-debug WDGyD3lG2B1RDnrEtu1VfNsQu5d5SDBuJuNqGWNpHDXf4JUGLsv5PFOuIOct7+I/e+Bst/l+eqhGzkm6tlvjvA== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 23:01:25 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 3N5sn/pluRe+kZxjcR6Ibw== +status 200 +content-length 9375 +x-xss-protection 0 +x-fb-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:54:38 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 b5vUN/sgd315IdDwXDUejw== +status 200 +content-length 7295 +x-xss-protection 0 +x-fb-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Sat, 01 Dec 2018 00:00:37 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 ch5t0W/qVcr8tgf9lHrm6g== +status 200 +content-length 4294 +x-xss-protection 0 +x-fb-debug gINc0A5Ml/TSiyh3e5F/jai6YIYOktCYw+ejxBPpLS7V0YC0PnDXPs7bmPqg+zZj8+e1r3bNOSfa2XiKvDkP+g== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:44:43 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 Lr3llzp8MBSCZviFiNjCFA== +status 200 +content-length 13834 +x-xss-protection 0 +x-fb-debug LdlmyGrbdzwX3QUNWK7h9sr6vcH7X0DjSu1+PrhcjJLoNQikEEv2Jh6X0Zo/i0tw+mwZv9Ir4cq1pJEnVEcVnw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 20:56:43 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 6H33LVIrHNhmJguTYOcJEg== +status 200 +content-length 11360 +x-xss-protection 0 +x-fb-debug ToJIaRvJ9nrellzwPpqq82nJcFBoJAPTr5622w7O6R7JgbvLbL9WuAqgfRh/csaYPznd+1o0vAaBtdrW9ZD30Q== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Sat, 01 Dec 2018 00:14:30 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 miqufolG7gyYWC1Nm0fXSw== +status 200 +content-length 3115 +x-xss-protection 0 +x-fb-debug zdwR2jYpEz9TtubgPOlmOSJO1ZER89b7nm7SbiHHc7q7SdovWtQRWKSeX+swwajutCA0LfLunpSP0es/ewL6nw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:37:52 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +content-encoding br +x-content-type-options nosniff +content-md5 FWVLk47e/1NAPOLzKy9mZQ== +status 200 +content-length 9648 +x-xss-protection 0 +x-fb-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:40:41 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +content-encoding br +x-content-type-options nosniff +content-md5 V2Rmpzgc121NGDtYMM8xZw== +status 200 +content-length 27484 +x-xss-protection 0 +x-fb-debug X0KfGOd7zGSXTEAE0avvVqm56bFnBHduvLoCVTzyC2ax5Z85/wjJDHim2vUuBRqBjjhdv2pnL8JjpfKtiR1jSA== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 20:40:16 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 ZCpLR18eFVGl+wlMmr5W8Q== +status 200 +content-length 33792 +x-xss-protection 0 +x-fb-debug RGZm+n2MS9JePF1w9W2ICVBiEwcjY9OX+A9aWzeUo2omCnnWp7dj4nGTiwPtSF61Rq4gRV7fCwq2vhbK/vahhQ== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 23:01:10 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 XdnKwn0shujNUYDDAyjffw== +status 200 +content-length 11980 +x-xss-protection 0 +x-fb-debug OuaGOMU1KwUx/Ex//TRoNPL06S9nVTeTSDyuSNY3sefgNbJaXbf8up2zNF1HI6sVgh/oHjNdpNLy6rj7bm3cNA== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:28:13 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 GVRGBE6tqdWWzWbk78Fxvg== +status 200 +content-length 10062 +x-xss-protection 0 +x-fb-debug MR+rHN55opINt4Y19y5GgTjlPjNVRpdKqMXehDtOqh6hcNE1zNHi+7J2Oe9qkma00plaiQOxdn4vvlgPM+nZrQ== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:54:38 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 CwKxN/dW03qpAvjXFgY+wg== +status 200 +content-length 2928 +x-xss-protection 0 +x-fb-debug TQ2kO1lJKcLy2YWu6fKnPhoSHHuWZumqqF5u9Ltx4npSchUPPfx1BDcetQ+pAIgvpfCKAQpobtwOp3dZjRgNtw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:16:30 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 j5TyY0UnjhfUzjVX2mSjmg== +status 200 +content-length 10320 +x-xss-protection 0 +x-fb-debug ZM/0J6kaZjm4G0z7WoGvn90JGCnSgh5rjamgOuV1hzSEHy7j5hxlgp/pTaSmL3YaDZBBD1hQaYRiNIGHO5Hnsg== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:58:41 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +content-encoding br +x-content-type-options nosniff +content-md5 hpNuuubgPaKdlqsCKTL5Jg== +status 200 +content-length 19798 +x-xss-protection 0 +x-fb-debug BImBNjsL7v4p4LqYNDHRVSrQGgu5C/xDjtk9ZYafHIsbt/6klWR/Si/9j6CCvoZP2NuJ60+Q3M3zSldRO/RQaQ== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:16:47 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug mkuTkeR6tImD79ZzK5oJpf1AsHI4i54PdVIEe/kcG0tORygDBaC2k3igFhgw5rmn4YXROaHK8PEmRBqJKuTMSQ== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:10 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug kRCyQegaq/Gqcyvb6pcbXivLoehRbv3lRgEewk/VTSJ7FP/efVNzdzFLYikTgjz+GLeayqPDRK9EAzAVNYaOjw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:10 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug SUGs1jQXVY8psVrTPnd9PcQy5gDB+MU+CL/gXaLGmpy/Goy580zMG2WVuvFUrAeJYO7KkbiCcG6dtSgLd8JvAA== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:10 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +x-fb-debug wkdZu+E1GYNYZCdr/DMkGZt3sb0tvJ9ZfgiBweAyl9UhuW5YB0ebUhsQj2xeGlEUvWjf15AhzOsATVd+BnHXIQ== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 i9OGnguZlXf7E7rhFiUbqA== +date Fri, 01 Dec 2017 02:48:10 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +timing-allow-origin * +content-length 10695 +x-xss-protection 0 +expires Mon, 26 Nov 2018 22:57:53 GMT + +strict-transport-security max-age=15552000; preload +x-content-type-options nosniff +content-md5 1VRwrJ2k5fXykH7nm0Guhw== +status 200 +edge-control cache-maxage=86400s +content-length 1173 +x-xss-protection 0 +x-fb-debug e2XB4MQd6UbCpZGC79bENZbmWBE+t+NfI1xvndjJ/TDxZHJ/vc1v7lEmPHFcRUnllmY9nv1QFrwSr5fYGQCPAA== +date Thu, 30 Nov 2017 07:44:03 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +content-type image/png +access-control-allow-origin * +cache-control public,max-age=86400 +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 01 Dec 2017 07:44:03 GMT + +x-fb-debug 1odBdxCcB2hCiTjxdoz/DUfQdbtWewW/PXS9Fb/TMyF2Vno6sSz+VkM0qjnDF60t+YECJWi/CIXiBOnnIunFFg== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 aAGL4zVC4U+rUzi+GrKcZQ== +date Fri, 01 Dec 2017 02:48:10 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +timing-allow-origin * +content-length 365 +x-xss-protection 0 +expires Sat, 01 Dec 2018 00:03:41 GMT + +x-fb-debug jpmcQoRI03y7AryAZCkc2teYNSUwJzeP9lL4LCFJcPGpdUUIFW+s/mWOBp62zeHQz2lqicwHopjJnsvjAHjGgQ== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 OEuaMb5I+K5EppmLlMUgyw== +date Fri, 01 Dec 2017 02:48:10 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +content-length 343 +x-xss-protection 0 +expires Sat, 10 Nov 2018 21:27:37 GMT + +x-fb-debug 2S9oefU+qABP4IYODnwzZYp+tUwluhVXrY8FIT6Im567U3y77CaFYK4RF+MKWtQOW4kgKGk/jPtdNQbUlMR2aw== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 yDsFax6LZEwnoTGKzzBlpw== +date Fri, 01 Dec 2017 02:48:10 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +timing-allow-origin * +content-length 178 +x-xss-protection 0 +expires Sun, 18 Nov 2018 16:12:57 GMT + +x-fb-debug D4jNiB0khDl+GsAZHc6/awXkwzBK8wAcEBc7zAUm8PhSy2OB3914CwEGmWv82Vc6xM/2gCN6U814EM4Mrn0NJw== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 /otskAYDIWUxahDb2l3iMw== +date Fri, 01 Dec 2017 02:48:10 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +timing-allow-origin * +content-length 306 +x-xss-protection 0 +expires Thu, 22 Nov 2018 07:16:30 GMT + +x-fb-debug Gzj3nTalJTpUrAKk99whIFyhC+ZeNJEHqM1innIgc+k9BTeAYWeW3YWN91XUw6jsdvWQ//PVxRFoAbgH0xhfiw== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 rAdlQ1LbnW1QjQqWUwF39A== +date Fri, 01 Dec 2017 02:48:10 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +content-length 292 +x-xss-protection 0 +expires Thu, 22 Nov 2018 07:15:55 GMT + +x-fb-debug Z6uygUU8dCe3t7kuXUZQ17hu+1qttHRZd2ZJCMWa882YOUsiqdV20ukSGIoOsCVM0D7o+7SW3eg4zYGDm18IUg== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 2kBldm4nnJvd/9LvBMD/Lg== +date Fri, 01 Dec 2017 02:48:10 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +timing-allow-origin * +content-length 205 +x-xss-protection 0 +expires Tue, 27 Nov 2018 05:25:05 GMT + +x-fb-debug OTfIFeJ6Vp6Q9tkVjxqdy5Qe1w3GFDEBpiL2EB9TXkJmRiYJ3PXYX4Ksm4Phq7EBSGaQfHeK0xCPSnCirMSvAQ== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 /KS74gUMZ8HPciHDq8I4Iw== +date Fri, 01 Dec 2017 02:48:10 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +content-length 237 +x-xss-protection 0 +expires Thu, 22 Nov 2018 07:15:55 GMT + +x-fb-debug IuU4lC4Bf1/J727PkKcW0TupujkIMcjKxTdUqtl+ZifCT6heilSF4VNJlUPJAyqFTbjLHlIdvrkuT6mdoOjJsQ== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 rYzdy/CRrpzpKKyDMTB5Sw== +date Fri, 01 Dec 2017 02:48:10 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +timing-allow-origin * +content-length 2668 +x-xss-protection 0 +expires Sat, 24 Nov 2018 04:15:05 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Tue, 10 Oct 2017 04:05:57 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 21105 +expires Mon, 27 Nov 2017 07:50:35 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Tue, 17 Oct 2017 22:14:24 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 22687 +expires Fri, 24 Nov 2017 21:27:57 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Mon, 20 Nov 2017 13:34:16 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 30382 +expires Fri, 15 Dec 2017 02:14:52 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Thu, 14 Sep 2017 20:21:56 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 14176 +expires Wed, 06 Dec 2017 08:54:27 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Thu, 16 Nov 2017 17:13:14 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 15152 +expires Sun, 03 Dec 2017 01:36:02 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Sat, 14 Oct 2017 13:41:02 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 19757 +expires Wed, 22 Nov 2017 19:14:01 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Fri, 17 Nov 2017 21:37:58 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 18041 +expires Fri, 01 Dec 2017 21:55:27 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Thu, 02 Nov 2017 22:03:18 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 17665 +expires Thu, 14 Dec 2017 20:15:25 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Wed, 01 Nov 2017 16:34:01 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 16062 +expires Mon, 04 Dec 2017 05:06:50 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Sun, 29 Oct 2017 22:18:29 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 23087 +expires Mon, 27 Nov 2017 07:12:38 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Tue, 17 Oct 2017 20:44:41 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 31705 +expires Wed, 06 Dec 2017 07:21:01 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Wed, 15 Nov 2017 01:33:33 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 18120 +expires Wed, 29 Nov 2017 01:45:11 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Mon, 14 Aug 2017 22:49:55 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 14094 +expires Tue, 21 Nov 2017 09:44:39 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Tue, 28 Nov 2017 21:59:23 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 31910 +expires Tue, 12 Dec 2017 21:59:32 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Mon, 30 Oct 2017 19:18:15 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 7407 +expires Wed, 06 Dec 2017 12:33:00 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Sat, 11 Nov 2017 00:11:21 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 10103 +expires Wed, 06 Dec 2017 16:56:34 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Thu, 09 Nov 2017 10:11:33 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 9731 +expires Thu, 23 Nov 2017 18:30:34 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Wed, 22 Nov 2017 00:08:24 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 6982 +expires Wed, 06 Dec 2017 08:03:28 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Thu, 30 Nov 2017 18:13:26 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 18906 +expires Thu, 14 Dec 2017 18:14:26 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Fri, 01 Dec 2017 01:17:05 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 14295 +expires Fri, 15 Dec 2017 01:17:30 GMT + +date Fri, 01 Dec 2017 02:48:11 GMT +last-modified Mon, 16 Oct 2017 12:48:31 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 9144 +expires Wed, 13 Dec 2017 00:30:04 GMT + +x-fb-debug UclWhesg0zkbSvbdWdzbSgwvuxwHhdYdv1KxJXSGpdTe+b+MkLG/P3r7cc5cQW1GDH2P0Q0PE2NjcKNRtACwMw== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 Suq9hPdRy1h3AUHG8A+u6g== +date Fri, 01 Dec 2017 02:48:11 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +content-length 6898 +x-xss-protection 0 +expires Fri, 23 Nov 2018 12:17:12 GMT + +x-fb-debug abP3zeasO2mLS8i9zOhtYhotcrbh1TGId94OFJlc8p04m4ySyehIHPFAt2npARTREGt1qY6t9JUIhREEid9qWQ== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 qbS3J+l81+aYkTde3J73Hw== +date Fri, 01 Dec 2017 02:48:11 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +timing-allow-origin * +content-length 2108 +x-xss-protection 0 +expires Mon, 26 Nov 2018 22:57:56 GMT + +x-fb-debug lgquSVMBTVSGrB+a6JPVy0foXmN38vYoIF3631Kl53msBWBXp74UHLdYdGhvRLweaxBXEPWUqhmcb10d+GM3XA== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 aHgJp6IEm6tq2dAoAm23tw== +date Fri, 01 Dec 2017 02:48:11 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +timing-allow-origin * +content-length 851 +x-xss-protection 0 +expires Thu, 22 Nov 2018 07:17:44 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 I4g49yWUVm92l2Ht21aO6Q== +status 200 +content-length 741 +x-xss-protection 0 +x-fb-debug i01I8lFh4FinQMpRDovii+lwSptMoKN4Xt3aP41os020+jBkBcOECNAtFfjv2P85TTlMTnlM3BZDlQua1wa39g== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:11 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:31:38 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug dbB2IkIrVRUAfS1PVGsbZF4w3zGCiIvWefwaVnzd3c6v4HzmnqkqOwCJdpNBhRH131pDszBP07t5zePbfprY1Q== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:11 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 m0y3PkO3SpJQhvvw6CdJ1w== +status 200 +content-length 4065 +x-xss-protection 0 +x-fb-debug wimV44qs1JLjex37mZjNXwEiFP2C6tTEz/Bzm/9N/uk4jLhGBsvpRN4kIhEXPKEhhT1jqST3fu7CCDHnaruarQ== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:11 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 21:18:12 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 AVo/NKwEE+aE6kd14kT4LA== +status 200 +content-length 2084 +x-xss-protection 0 +x-fb-debug pikQ5ppTqIictrwIvdl2Qk6xbFcE9bPc4Z5ohK/rfc4qKnwbgweERUZlqfSb5S3wb4P6zUymCloWDaFoSveX8g== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:11 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Thu, 29 Nov 2018 04:05:16 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 fkU/RbZeOahtbH6TD3swSg== +status 200 +content-length 726 +x-xss-protection 0 +x-fb-debug vlySAYwP80vWQwCf3dAcUg1d8vckh+ib+/bnK8Kn79SGDBsoWWEtedSpacOaHyww0V7/Le8GBCmruXAqaTtIXA== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:11 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 20:03:56 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 9SMxJJWUS/mH7v8aS5amn3RGUmMcHXgxT7/GhUohYTS26mbSGoNnIaV22B91jjWh4XqlbW5dSpQVGxUqHF50lw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:19 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy frame-ancestors 'self'; +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 0gVna42ILP7RDgk+shTzSEkzfbJTXu8h6tHuGl2h2gjzEuNtfTdI3ldafd/mVhV0Ysj7BcVNyMbPXOIi83oqCA== +date Fri, 01 Dec 2017 02:48:19 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/html; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +set-cookie oNcnS=gpojSOS; 5X9e44v=0mTWPDQ8REZIxx5UsR6m77F2nLLDx; KAhjk6h=qwU+4DYhv07; gAdd=f; 4O66Yd=zifBOQBN5pG/H +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 j8T0XBmPlo08jOXtTJ3MEw== +status 200 +content-length 198 +x-xss-protection 0 +x-fb-debug f4/9IxVq4HZYZ8dV9P6xeLypQNS2qEx/kNF3NoX9D8Z0nshFfF6M7lqeabFqQD5b50R/Iekbf9xeyr56aEUi7g== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Sat, 24 Nov 2018 12:25:27 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 b5vUN/sgd315IdDwXDUejw== +status 200 +content-length 7295 +x-xss-protection 0 +x-fb-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Sat, 01 Dec 2018 00:00:37 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 3N5sn/pluRe+kZxjcR6Ibw== +status 200 +content-length 9375 +x-xss-protection 0 +x-fb-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:54:38 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 i4f5LnfeTwjEpPYLvEw9sg== +status 200 +content-length 3785 +x-xss-protection 0 +x-fb-debug HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 20:34:54 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 fd9ZgENjjqTO/InJ/yzr9A== +status 200 +content-length 18878 +x-xss-protection 0 +x-fb-debug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:54:47 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 fqrTaPewZrp5VEjPn8eGRg== +status 200 +content-length 1284 +x-xss-protection 0 +x-fb-debug ffAA1BPrLNMci6PPgAnjdBQxr23MFKOlcYD7Hd8+QaYdQzt3RDz7rwZWLtl/ff4vvIJcOQ0KkgerVJHkxxcE+A== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 20:06:32 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 SqewXybmJVo1v4gA0JLGBQ== +status 200 +content-length 738 +x-xss-protection 0 +x-fb-debug KC/Mv8BSpLzgKNnb1cJgXL8dPdim8GGQRbNyFfUpswJaoxnMQeHpRWlZwFceTKDlmlF+3I1PWGIgOE9iug58Qw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:44:41 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 sZNRmnBid8LCsjRTjIEFyg== +status 200 +content-length 6745 +x-xss-protection 0 +x-fb-debug a155LmrZwBw3r/aMF42emoWHIgc/3y8J6ALVXYdQ7H8vUuz1/i1dvM0G4i1MutN2PnGhQoHaxJ36iCIkr5peiQ== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Thu, 29 Nov 2018 21:37:18 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 mgTL4W9gmblv6l6wXzZodA== +status 200 +content-length 6081 +x-xss-protection 0 +x-fb-debug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Thu, 29 Nov 2018 13:44:43 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +content-encoding br +x-content-type-options nosniff +content-md5 FWVLk47e/1NAPOLzKy9mZQ== +status 200 +content-length 9648 +x-xss-protection 0 +x-fb-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:40:41 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm;report-uri https://www.facebook.com/csp.php +content-encoding br +x-content-type-options nosniff +content-md5 CdqtZjHkFWKj84Z+4+xIEg== +status 200 +content-length 2577 +x-xss-protection 0 +x-fb-debug 4qp1PxAGHtbHXLi9rxxdHyNY/8PMkrRxemDwVRlBtTf5veUQdm+NT/ANeAtBnkrqVeEa/YAFwjR2rnGTYHLnHw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 20:28:17 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 9+8et0zXoZnznee+5dOpLg== +status 200 +content-length 3091 +x-xss-protection 0 +x-fb-debug 1W0e0JxqlhBqUfhhsZScKW+48ERX/MbDzRx1CrLGyoB3PQR87HvCU1tXurEDpq9MxYtpZtH8nZHhZUliTWX9/Q== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:30:49 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 U89oUM0w4qxDV5VnRrMHfQ== +status 200 +content-length 17087 +x-xss-protection 0 +x-fb-debug 3hIM02yGLUEVYmBtXw7ckOZdTFjZlDVy71lqb79ycltwQUOiGU27m0HJTjseI5O9aQgJhz0cyZFD440wNkJ1hg== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:23:57 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 63uZSWh0PAGVT5ELQlmxDA== +status 200 +content-length 1308 +x-xss-protection 0 +x-fb-debug RqCyrQLJGw/D0xpLqWnbzLkRPUbfwsbwfo84PPL8UED96IA/gBJzDEf6yj2+HHIdQp4xPXpSRuNZDI2H/CvkxQ== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 20:01:34 GMT + +x-fb-debug ARChj0NUebWygPU0nCoGIW//E1naOtcmUw17w+RMEyLdGcIfa62y4DtKGsmphLZFvp0ao5tg1e1UH82enSyOww== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 QfBfkVWIvbQAgYByciJpJw== +date Fri, 01 Dec 2017 02:47:55 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +timing-allow-origin * +content-length 1176 +x-xss-protection 0 +expires Mon, 26 Nov 2018 12:37:33 GMT + +x-fb-debug ivI86tTrFwX9U5sLjaxj7fvac7JDJwsEi9Eja2Z4Oy4C7nmZIF2IkB8o8XqfevLcTTOzzEMMwFDwypn5k6bIXw== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 IHh5jFrVTE8LJvIHfLuDPA== +date Fri, 01 Dec 2017 02:48:20 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +timing-allow-origin * +content-length 556 +x-xss-protection 0 +expires Thu, 22 Nov 2018 12:26:14 GMT + +x-fb-debug ZwUiJgvchdZhpDH+73u0Fw+G6hyUoqJHmUotkSBkDnzNjGiL0mAn7qTX5J46rH70Lo1AsDbhfk3JwbWmWTwV5w== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 GKqP6Z59i1aSEGcB576sOw== +date Fri, 01 Dec 2017 02:48:20 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +content-length 5488 +x-xss-protection 0 +expires Fri, 23 Nov 2018 12:17:06 GMT + +date Fri, 01 Dec 2017 02:48:20 GMT +last-modified Tue, 10 Oct 2017 04:05:57 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 59308 +expires Wed, 06 Dec 2017 11:00:57 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug bMcE+8Z/jUikxlpX0iz9TFqnf5QVShzAXQoprrbxgHYC5ZGhZDIINLMlIeZEY6QwKjH1oEqfOzC36WG4mjuX7Q== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:20 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +x-fb-debug WVz6Y2MrSiV1cDtEzzSX+eY8rw7ZosNRZER/iJKgrqXplP4gjrRV9RmMxu/RCpkyHjYn9jGkggKJ6AKwOG63Iw== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 8IPH6Tlp2EPXzjh2WtkM0w== +date Fri, 01 Dec 2017 02:48:20 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +timing-allow-origin * +content-length 4844 +x-xss-protection 0 +expires Thu, 22 Nov 2018 07:15:56 GMT + +date Fri, 01 Dec 2017 02:48:20 GMT +last-modified Tue, 01 Jan 2008 00:00:00 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1348 +expires Wed, 06 Dec 2017 10:43:21 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm;report-uri https://www.facebook.com/csp.php +x-content-type-options nosniff +status 200 +x-fb-config-version-olb-prod 202 +vary Origin +content-length 4904 +x-xss-protection 0 +pragma public +x-fb-debug HunPYuqy69WzGGSQH0RYo+XndQiTMqACderbXYV/Hd6VXq0oSQhZBlV1fY0tbHmnCKZPaQ5ffj9xfVEyPXA9aw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:20 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=31536000; preload; includeSubDomains +content-type image/png +access-control-allow-origin * +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control public, max-age=86400 +access-control-allow-credentials true +timing-allow-origin * +access-control-allow-method OPTIONS +expires Tue, 14 Nov 2017 17:33:13 +0000 + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 YZP/0rJ9pw2vE+OCDm8w5Q== +status 200 +content-length 2031 +x-xss-protection 0 +x-fb-debug NNF+j6+XOFrfdhzYpIcXN8eoCwGFoh5LQhEtfDyAVBLtSL4n56dyb+kUyPAOLL4HokctaJ9bHKv6JsDRAvFzpQ== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:54:56 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 2nocW+0AmN98W+9vj2rtAA== +status 200 +content-length 1755 +x-xss-protection 0 +x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:27:38 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 V/4SheZbR98CwCYd4h3cAg== +status 200 +content-length 2174 +x-xss-protection 0 +x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:21 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 21:03:33 GMT + +x-fb-debug /ENpputLKNa/2mZiu6JTE+h6mzrx8TmybF+DsyGWGtA7Pr1/Nz9w87TOZ/bXeGIN/nSpsf8Vp73Vj/UbdMJwow== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 5JlE2ZDOPpF6hew83L0Xyw== +date Fri, 01 Dec 2017 02:48:20 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +content-length 6645 +x-xss-protection 0 +expires Fri, 23 Nov 2018 12:17:12 GMT + +x-fb-debug Os2JJOoXBZqJj78nRJJPGsd36A2+yIhTGyueb3jZakVmvYckOoqMBatPDrEtiquf+QLqhyFhY9tAUaiEU+rMAw== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 C05mvm8+C03B8R2M8wXU6g== +date Fri, 01 Dec 2017 02:48:20 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +timing-allow-origin * +content-length 102 +x-xss-protection 0 +expires Sat, 10 Nov 2018 21:27:14 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Wed, 06 Sep 2017 21:55:05 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1196 +expires Wed, 06 Dec 2017 13:32:44 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Thu, 30 Nov 2017 21:59:43 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1329 +expires Thu, 14 Dec 2017 22:01:20 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Thu, 21 Sep 2017 22:04:42 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1446 +expires Sun, 26 Nov 2017 16:35:57 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Mon, 13 Aug 2012 00:00:00 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 5176 +expires Wed, 06 Dec 2017 10:35:29 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Thu, 27 Jul 2017 15:41:54 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 49345 +expires Wed, 06 Dec 2017 14:02:03 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Tue, 01 Jan 2008 00:00:00 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 3742 +expires Wed, 06 Dec 2017 07:23:17 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Thu, 27 Jul 2017 15:41:54 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 29919 +expires Wed, 06 Dec 2017 16:56:20 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Sun, 26 Nov 2017 20:59:49 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +x-fb-edge-debug qV2cgVRRpGEnTN92wP3bEefpIlNqOBDmaYDo0o9w9T9AtQphKbXLleYJZI_vyWjKt4bko2I1lo8TCezyPLIohA +timing-allow-origin * +content-length 21135 +expires Fri, 15 Dec 2017 02:48:21 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Thu, 30 Nov 2017 15:33:29 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 8892 +expires Thu, 14 Dec 2017 21:49:28 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Thu, 30 Nov 2017 19:06:48 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 12724 +expires Thu, 14 Dec 2017 19:10:30 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Mon, 21 Aug 2017 00:14:21 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 13189 +expires Thu, 14 Dec 2017 19:10:30 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Wed, 06 Sep 2017 21:55:05 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1048 +expires Wed, 06 Dec 2017 12:06:56 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Thu, 30 Nov 2017 21:59:43 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1118 +expires Thu, 14 Dec 2017 22:01:20 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Thu, 21 Sep 2017 22:04:42 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1178 +expires Sat, 09 Dec 2017 03:11:47 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Fri, 20 Oct 2017 12:36:36 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1134 +expires Wed, 06 Dec 2017 08:10:57 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Sun, 12 Nov 2017 02:14:13 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1248 +expires Wed, 06 Dec 2017 16:04:04 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Thu, 30 Nov 2017 02:19:51 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1273 +expires Thu, 14 Dec 2017 02:20:59 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Thu, 04 Dec 2014 22:01:42 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1152 +expires Tue, 21 Nov 2017 16:33:08 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Tue, 01 Jan 2008 00:00:00 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1066 +expires Thu, 16 Nov 2017 01:54:04 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Tue, 14 Nov 2017 11:42:42 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1110 +expires Wed, 06 Dec 2017 09:30:22 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Fri, 01 Jan 2016 19:53:47 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1150 +expires Wed, 06 Dec 2017 11:14:35 GMT + +x-fb-debug fVIW99YerkUzwlc7SROvz5XsM1XbNmRMGijJJ13tYsvnMaY84LnQ1ZA7+apDieuNVB46ZnUnVHMhZ76uwLgrhg== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 RVFApVCDqLOU4DKrH5xHcg== +date Fri, 01 Dec 2017 02:48:21 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +timing-allow-origin * +content-length 281 +x-xss-protection 0 +expires Sat, 10 Nov 2018 18:13:58 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug +R3NCXIBasGiGQdX/uKvTgwIShwCbAlh0vnBu05LFeHCTJhBA1YqB3QzG3LxYcUEHJJqVaY58p02qO1yVeVxsw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:21 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 bV/DKwx1FIfSczGr8wmjTA== +status 200 +content-length 19285 +x-xss-protection 0 +x-fb-debug fbuGUlmmttu8N2glWUmqgrF9qAJghz+TR9dvFY1UxQUeWfBVTg5g0EKXcY7zJhKiVlgAm+yxP2X5A/Dqe3G+EA== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:21 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 21:14:20 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +content-encoding br +x-content-type-options nosniff +content-md5 OBHD6lmfEEisuhcWKyESIw== +status 200 +content-length 19037 +x-xss-protection 0 +x-fb-debug drj2Ft2eAD7NQ6lmjscA+rt9I3/b1iHnGgaxytUir51DI4ILBqGwUA2paJjEA2pvOVn4gRvl1zY6CgGTl4fLXg== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:21 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 13:56:42 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 6O43UwtSHtYxrHYf4JWpTw== +status 200 +content-length 272 +x-xss-protection 0 +x-fb-debug FGR0zi+JxHm7My4h2/7+wcFU4LP1hHO3PFzJKhZjk6dDiTLxykDa6JPsIDNvXtlWfTE9qPu1r1ogOTgfVaLitA== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:21 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 21:29:05 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 LPtJbeThMXUens/Nm5VZeQ== +status 200 +content-length 39529 +x-xss-protection 0 +x-fb-debug bAWClI/0uVFeLXq6GIy1TXonNhgjjE+WwKoSZsSxQkEIlL665l8U/wmyKTGtTkrbwVUzymlgRhgHP6l/sZ89TA== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:21 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:16:42 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +content-encoding br +x-content-type-options nosniff +content-md5 UTnFKQ/1xPYzMBTzlDFnQg== +status 200 +content-length 36628 +x-xss-protection 0 +x-fb-debug XwHAYpS/JLC309mN4e1ZrMvAYSnhufav6nr5ltJ6ScnYGAS1huRaIMhFGS+2BwCQ5lyNrVZt8RfNfy5Y2CANQQ== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:21 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:40:53 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 wvmmFr+hyE8nerTr2rsQvw== +status 200 +content-length 1966 +x-xss-protection 0 +x-fb-debug gJE2qAHfDDEx/K+nICc73NSl6EqnW0SxxQrHBCFxwsbg2kuQYyFj3MQv8EfLjq88ZmmyYHY93J9ur/WLZWopEQ== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:21 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 21:47:10 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +content-encoding br +x-content-type-options nosniff +content-md5 JZM7FEcMrVikARx2gpFWUw== +status 200 +content-length 52237 +x-xss-protection 0 +x-fb-debug fc9A8OFybDetesoi0CY7xjJ/276Si33Xehez93z8H63FVgo7DqHWHSvfQMrcMgsM3swgR9cRo89ZLhE+FBbNJA== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:21 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 20:50:54 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 D6t0N9WzwW0eLRo10Yq6ng== +status 200 +content-length 33446 +x-xss-protection 0 +x-fb-debug h6xjG80emSAtsK+erM7liY8pREgTA0vGwYMIZCjP9n6GVcN7vX0eh4t4xndGqYXPP5ih8NyaQcmTn8+dQtlhyw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:21 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 20:50:57 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 1AoLUq6toOaueD0vKkvMAA== +status 200 +content-length 3012 +x-xss-protection 0 +x-fb-debug Ow7Yvuq4jUPfhFbMusIFf7YeUZpBcdrSzO/FVUTZhqEWPOHYOJeYbHRAiBFmmPM1POVX8/Ixm2fpQtDVx2rUQA== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:21 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 20:15:36 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 G6Y6kaO1Adi/IBwW11Elug== +status 200 +content-length 3226 +x-xss-protection 0 +x-fb-debug m2oB/65sg2vFQOIebkxGuLC4OOPg2oUNvCSp7WZN3OGVbF19LVyoTBPcBkvZXOoewtdThbXo+FkeBaKeAPgHSQ== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:21 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:32:07 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Tue, 07 Nov 2017 19:25:49 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 2192 +expires Wed, 06 Dec 2017 11:00:58 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Wed, 04 Oct 2017 18:27:15 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 2200 +expires Wed, 06 Dec 2017 12:50:41 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Mon, 23 Oct 2017 14:19:14 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1468 +expires Wed, 06 Dec 2017 10:03:40 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Wed, 18 Oct 2017 17:19:21 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1997 +expires Mon, 20 Nov 2017 10:27:33 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Wed, 20 Sep 2017 12:43:30 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 2317 +expires Wed, 06 Dec 2017 11:07:13 GMT + +date Fri, 01 Dec 2017 02:48:21 GMT +last-modified Tue, 19 Sep 2017 18:11:55 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 2397 +expires Wed, 06 Dec 2017 11:07:13 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug Cnh9p8D5Li6w23D82Jd7RsrvreYSXZEQFE29Y9Nocj7iJPiMp31vPv/WZZdRfE6AhgaCQQNb4vWYjLchZzPCug== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:21 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 9VKUrgNslD/nY0eEgp7tZZdRCfrJEY1FkHDje4EmpYkrC2pvW1uvmwGOoPskTvUh3bW+HDmwZYMLZM7hY0gMhw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:21 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug aauRok2xnDPv3VQSul9bMO0nErR48gOCdAk3xyg8vKkSz2RBIEQlMGcnB85NP8GVA0+i76LCjKBu6aWEFxFt9A== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:21 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug X/tm4dxchrSM76dISf4rVU6n4RLg6R/bt79D245UBcPTSAHkuaLb0EqyaK5CGnVWVk42+bIKLymZ1XiauXdXxA== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:21 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug RKPmsAWm1LtFpbD4Qj2ucPdH6i8nI7lLgcorK6l44F9hPN8qd4THZEgj8Tu9/JFoPrMJ2hqPlcFfLb6FgRnmFQ== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:21 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug fTUQ/Z5rF8Mye/5u0N8qOfqBaZqt9Ldfc/0uCcHi9NPvscv1XYi3DKCfdi4Imcw1RqYGlciZe3vAeg2ko3hGYQ== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:21 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug yqWCZpVJmrj1JJlW4rgUKR/fNz/y7Cr3i44mszTHCHWPdt+io4AcLv6pCieI9/O8xkQVVohG9fkYQ9bpkVC59Q== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:21 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +x-fb-debug C5M3rAUlWTo+Nh2NEbNsOrcs3a7fQJAIZeaHzaZdKXUHzTmldfJBIjGjCwFkJ+V8wQrbwKiECC1XoG5whuC7Bw== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 bvfxjp/FBtYcD+rWTyphIQ== +date Fri, 01 Dec 2017 02:48:21 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +timing-allow-origin * +content-length 7560 +x-xss-protection 0 +expires Mon, 26 Nov 2018 22:58:44 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 3OvLOqpHlGzVdjqkOPLSQIPwJgAz9t3Aya9pJmdr3lklW5dSIp7GYNvtTO2MEjvbdLuBi0Uh7PDjkQlh5//UtQ== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:22 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug Nuhm0tM4MJBbZq1HgFjDge2VPFh7VrJgIHRzB0KNCs7RlBQQP9+DpBTJ8pmO2jbolFlG8hGTR/TgYeDYwBxNgw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:22 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug g2tZWi2xLSq9OlUfaXi3bbQf0RQz2MhBLGX9Wo+JK+LiZI4fQpReMcPKjtBzzEcRhj3OSzxdy8+GDxC3QADAFA== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:22 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug QivysyDdWiY3SVK7Tw7M8lIZkPvuaiDpxR+vOd42Xk2O7AqqjNP751kafm3a5xn+UHN3xOSGYtl5aKvzK7wuqQ== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:22 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug hpypdhhlU0HhLkfxRLQVQ4bfjMWTleA2Zt1W7KGwGbml43hGQeijYw1s/bZdpx2hUdkK2YQZSr+DBoMZFWLeOw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:24 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy frame-ancestors 'self'; +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug ltkjHYfAgLloDoLMZNYHBi8RY5+q8Ym7wNGcqhzBVzEdqbWwEa1hhMFFDvL+5p1vIgsWhtVayXlPoxb6AT6MaQ== +date Fri, 01 Dec 2017 02:48:24 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/html; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +set-cookie oNcnS=gpojSOS; 5X9e44v=0mTWPDQ8REZIxx5UsR6m77F2nLLDx; KAhjk6h=qwU+4DYhwU2; gAdd=f; 4O66Yd=zifBOQBN5pG/H +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 b5vUN/sgd315IdDwXDUejw== +status 200 +content-length 7295 +x-xss-protection 0 +x-fb-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Sat, 01 Dec 2018 00:00:37 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 3N5sn/pluRe+kZxjcR6Ibw== +status 200 +content-length 9375 +x-xss-protection 0 +x-fb-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:54:38 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 i4f5LnfeTwjEpPYLvEw9sg== +status 200 +content-length 3785 +x-xss-protection 0 +x-fb-debug HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 20:34:54 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 fd9ZgENjjqTO/InJ/yzr9A== +status 200 +content-length 18878 +x-xss-protection 0 +x-fb-debug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:54:47 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 mgTL4W9gmblv6l6wXzZodA== +status 200 +content-length 6081 +x-xss-protection 0 +x-fb-debug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Thu, 29 Nov 2018 13:44:43 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +content-encoding br +x-content-type-options nosniff +content-md5 FWVLk47e/1NAPOLzKy9mZQ== +status 200 +content-length 9648 +x-xss-protection 0 +x-fb-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:40:41 GMT + +date Fri, 01 Dec 2017 02:48:24 GMT +last-modified Tue, 19 Sep 2017 18:11:55 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 42942 +expires Mon, 27 Nov 2017 13:59:22 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug Cz64N9bQ0dvmaJ50abk2u7SSKJqHL9DM7QKR54mUh8+ILRME5kPyNoW4nG1k/px1ECvAPU1ahdC3RZ4sOrWm1A== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:25 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Mon, 25 Sep 2017 18:52:11 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1373 +expires Fri, 15 Dec 2017 02:38:11 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 2nocW+0AmN98W+9vj2rtAA== +status 200 +content-length 1755 +x-xss-protection 0 +x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:27:38 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 V/4SheZbR98CwCYd4h3cAg== +status 200 +content-length 2174 +x-xss-protection 0 +x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:21 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 21:03:33 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug Ike4iQwO65fGXWaMw0t4UbHoC9PEkEE1XAsaJt5EfgWfAJ5fvCUjZUEjFgydEjKHyU1FsHqjEeJZxGRemCQWOg== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:25 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +x-fb-debug ORWOg2jR1rbO1ILKezoBrqCYFwqccLo76Z0yTAXhy9kK94PkFLtETQ8IkakHHwtfpp/aE1Wu7v6o+RRvhVTCTg== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 aceXgUioFutSxdIu20vnQQ== +date Fri, 01 Dec 2017 02:48:25 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +timing-allow-origin * +content-length 157 +x-xss-protection 0 +expires Thu, 22 Nov 2018 07:15:53 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Mon, 06 Feb 2017 22:10:30 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1012 +expires Mon, 27 Nov 2017 16:06:54 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Thu, 27 Jul 2017 15:41:54 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 5041 +expires Fri, 08 Dec 2017 00:16:48 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Wed, 15 Nov 2017 19:06:49 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 4201 +expires Wed, 06 Dec 2017 14:48:13 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Thu, 18 Aug 2016 15:34:20 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 41643 +expires Fri, 10 Nov 2017 13:42:18 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Mon, 25 Sep 2017 18:52:11 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 4069 +expires Wed, 06 Dec 2017 11:36:55 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Sat, 06 Sep 2014 02:51:49 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +x-fb-edge-debug EwpFEjBY0hb_kwY2v8FLmVmymqWy5KGGTaPrVX5Ttv20vsZIEjUwDkVNbjYKcDY0_J9_d31bELPU561OltRd7w +timing-allow-origin * +content-length 11115 +expires Fri, 15 Dec 2017 02:48:25 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Thu, 09 Feb 2017 22:19:39 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 13981 +expires Mon, 11 Dec 2017 06:02:35 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Wed, 11 Oct 2017 18:36:08 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +x-fb-edge-debug BGdL2CHidm-Nlh_FAILf2lY1so5a6Q3rLP0A1pHzwniYyU89EhOQJpIFQ3_jI6QK3b9kfNHNWi-FMucQ3ZAKzA +timing-allow-origin * +content-length 10559 +expires Fri, 15 Dec 2017 02:48:25 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Thu, 14 Sep 2017 15:43:13 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 16520 +expires Fri, 24 Nov 2017 23:58:36 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Thu, 28 Sep 2017 14:22:13 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 13762 +expires Mon, 27 Nov 2017 16:56:47 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Mon, 25 Sep 2017 18:52:11 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1123 +expires Mon, 27 Nov 2017 13:59:23 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Mon, 06 Feb 2017 22:10:30 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 934 +expires Fri, 10 Nov 2017 10:56:02 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Sun, 26 Nov 2017 21:58:17 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1091 +expires Sun, 10 Dec 2017 21:58:36 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Thu, 23 Nov 2017 15:19:01 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1259 +expires Thu, 07 Dec 2017 16:49:23 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Mon, 27 Nov 2017 21:52:16 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 997 +expires Wed, 13 Dec 2017 13:04:41 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Tue, 30 May 2017 19:09:51 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1042 +expires Sat, 25 Nov 2017 00:19:18 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Fri, 01 Dec 2017 01:47:57 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1198 +expires Fri, 15 Dec 2017 01:48:10 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Sun, 30 Jul 2017 16:46:18 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1024 +expires Mon, 20 Nov 2017 09:54:46 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Mon, 07 Dec 2015 00:43:01 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1142 +expires Wed, 06 Dec 2017 10:29:30 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Thu, 23 Nov 2017 14:22:23 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1229 +expires Thu, 07 Dec 2017 14:23:39 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Mon, 25 Sep 2017 19:20:09 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 2115 +expires Wed, 06 Dec 2017 13:38:40 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Mon, 25 Sep 2017 19:44:15 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 2142 +expires Wed, 22 Nov 2017 19:52:55 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Wed, 20 Sep 2017 12:54:59 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 2050 +expires Wed, 06 Dec 2017 23:59:18 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Mon, 25 Sep 2017 19:30:38 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 2151 +expires Fri, 24 Nov 2017 23:35:52 GMT + +date Fri, 01 Dec 2017 02:48:25 GMT +last-modified Mon, 20 Nov 2017 15:41:19 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1535 +expires Wed, 06 Dec 2017 16:02:29 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug uf9WOnMihZGLrDWfdIk9TrGKmQdtGnccdlEOgrUgRfR67yT4gvj2C/49TAesR/+odr8hrXU4Vg0DFyUPGkOeTw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:25 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug tIRZNsTYzfKz2QPP0hEw0uwLco/KnyV40BfCRHvyZo3O2w3IE/7j6rOlozmmjypKoXRvlgKVMuIGL3ZuEdjAAQ== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:25 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug OQYWiTlxlsPzC92Mp1YXK8ApFdCAQIOUkhAPB1+xkHJQqfjDZygDfN99ACweeDUbG7x6QNWU0mxdBR8J2FPA6g== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:25 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug p0HFP+Jnpspb11zeyEYgxlr105OmdSqx4tkl8eaAR1N0lXl6XQbTO8UKDKDqEjxLThcca3J6qxoRUWgG0odnVQ== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:25 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug XRw0F7BRogkNZr1CMVwhEDJOLbqv9n1OtLwJw0zkKgcYejKC2R09TmAWffUhhcjnDKU4HH7FLnPS6NAJpBbE9A== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:25 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 6zfb4OjE4hNPBJHQlT5E/kHSCZJRtXHvWfBGAo8YtCn7L8CbZWgGBF7L4upWO3dP+QSgARyqFvmBNPegcE15jw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:25 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug fjB1x1MwVhv6sJanSzu8Ldr8d8qlnz+F6BRtgygmyfyiVs2rtvg5D/Kmp7sLpAMIaFSdxEQjTiNKUNoUw3r06w== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:25 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug mNPFkDjNtW61hg2fQZ8FvxVi0b0gjAVneqQ+7T609e0f6ciStxGg5PLLAaCQunaPEc2v57mC+UH2ta2EwA0G8A== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:27 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy frame-ancestors 'self'; +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug rSVyfIy0pUEIG4N41LAFP91i7oMPswW6ZRUF1Z7E1hamyGD3fVkpkkg2+3GR96pariwqrCpVr9nVYTqxkbATNA== +date Fri, 01 Dec 2017 02:48:27 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/html; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +set-cookie oNcnS=gpojSOS; 5X9e44v=0mTWPDQ8REZIxx5UsR6m77F2nLLDx; KAhjk6h=qwU+4DYhwU5; gAdd=f; 4O66Yd=zifBOQBN5pG/H +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 j8T0XBmPlo08jOXtTJ3MEw== +status 200 +content-length 198 +x-xss-protection 0 +x-fb-debug f4/9IxVq4HZYZ8dV9P6xeLypQNS2qEx/kNF3NoX9D8Z0nshFfF6M7lqeabFqQD5b50R/Iekbf9xeyr56aEUi7g== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Sat, 24 Nov 2018 12:25:27 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 b5vUN/sgd315IdDwXDUejw== +status 200 +content-length 7295 +x-xss-protection 0 +x-fb-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Sat, 01 Dec 2018 00:00:37 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 3N5sn/pluRe+kZxjcR6Ibw== +status 200 +content-length 9375 +x-xss-protection 0 +x-fb-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:54:38 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 i4f5LnfeTwjEpPYLvEw9sg== +status 200 +content-length 3785 +x-xss-protection 0 +x-fb-debug HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 20:34:54 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 fd9ZgENjjqTO/InJ/yzr9A== +status 200 +content-length 18878 +x-xss-protection 0 +x-fb-debug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:54:47 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 mgTL4W9gmblv6l6wXzZodA== +status 200 +content-length 6081 +x-xss-protection 0 +x-fb-debug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Thu, 29 Nov 2018 13:44:43 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 SqewXybmJVo1v4gA0JLGBQ== +status 200 +content-length 738 +x-xss-protection 0 +x-fb-debug KC/Mv8BSpLzgKNnb1cJgXL8dPdim8GGQRbNyFfUpswJaoxnMQeHpRWlZwFceTKDlmlF+3I1PWGIgOE9iug58Qw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:44:41 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +content-encoding br +x-content-type-options nosniff +content-md5 FWVLk47e/1NAPOLzKy9mZQ== +status 200 +content-length 9648 +x-xss-protection 0 +x-fb-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:40:41 GMT + +x-fb-debug ivI86tTrFwX9U5sLjaxj7fvac7JDJwsEi9Eja2Z4Oy4C7nmZIF2IkB8o8XqfevLcTTOzzEMMwFDwypn5k6bIXw== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 IHh5jFrVTE8LJvIHfLuDPA== +date Fri, 01 Dec 2017 02:48:20 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +timing-allow-origin * +content-length 556 +x-xss-protection 0 +expires Thu, 22 Nov 2018 12:26:14 GMT + +date Fri, 01 Dec 2017 02:48:28 GMT +last-modified Mon, 25 Sep 2017 19:30:38 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 34712 +expires Thu, 14 Dec 2017 20:19:27 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 81n69Z2aIc9QZjTP3RqALLOhQMWgAFje+H3x7d+XQhHdAQs8mLv+6FDvDhBgiGdjfLJADt8Lr8zzmSPholcHCg== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:28 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 YZP/0rJ9pw2vE+OCDm8w5Q== +status 200 +content-length 2031 +x-xss-protection 0 +x-fb-debug NNF+j6+XOFrfdhzYpIcXN8eoCwGFoh5LQhEtfDyAVBLtSL4n56dyb+kUyPAOLL4HokctaJ9bHKv6JsDRAvFzpQ== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:54:56 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 2nocW+0AmN98W+9vj2rtAA== +status 200 +content-length 1755 +x-xss-protection 0 +x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:27:38 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 V/4SheZbR98CwCYd4h3cAg== +status 200 +content-length 2174 +x-xss-protection 0 +x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:21 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 21:03:33 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 80lq+gj7IZbnwQOAsGA0x/F6Fyx0fmRFIjbi5VF+mwwF8GmHiNvnuajfF1nPUiDbR4xm4QfRZzO2dmW5phYHdw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:28 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +date Fri, 01 Dec 2017 02:48:28 GMT +last-modified Sat, 14 Oct 2017 08:52:18 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1346 +expires Mon, 27 Nov 2017 20:07:46 GMT + +date Fri, 01 Dec 2017 02:48:28 GMT +last-modified Fri, 16 Dec 2016 14:22:45 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 5378 +expires Mon, 20 Nov 2017 13:25:34 GMT + +date Fri, 01 Dec 2017 02:48:28 GMT +last-modified Sat, 14 Oct 2017 08:52:18 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1099 +expires Wed, 06 Dec 2017 08:24:14 GMT + +date Fri, 01 Dec 2017 02:48:28 GMT +last-modified Wed, 20 Sep 2017 12:52:11 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1813 +expires Sat, 09 Dec 2017 03:54:42 GMT + +date Fri, 01 Dec 2017 02:48:28 GMT +last-modified Thu, 02 Nov 2017 15:14:40 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 2231 +expires Mon, 11 Dec 2017 14:36:10 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 0p+00EWDce62x0+DsI9H4aEJhyeSi3JPlTdaS5BHMXBW7IgnSx2/iIb/I6SJfBtMfsdXxAUQmZIk60dobz61cw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:28 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 1LWgD23lNKFTlwMtU9MYIrDqQodqZNpYVpJEdY85kjF19Zriwcv3LL1TKf1a2M1e8KZbFzbeZt/tDNluh5KMfg== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:28 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug QT70qYi7OceDc1J6xNZPxbWA6J74A7vI4w5yDKqMT0zydKcu4gufbgfyUV5pp8KYHNnOjprXdLmV8sxjhVZmrg== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:28 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 7fkJBsAPVJFq2FTZol9AA+/QkBHqy/UnLVOh6jnwcLsgOCgwov2UoJDyuCQsyL7daXfPhVbq9gXbFdcBEnK9eA== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:28 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug amapPP5iPcmJFn0h4ov4yHD4j6Y4lq0t+cOKNHf48NaI2q8h3fx5pUQfXiPMFfyl2VO049uOPkR9LryO0fT9kw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:28 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug t32y8Hm6r7S1o8WqMv2HtbAPZfK3hSQRgIu9njyHN86UXFWWcJLwQi/+hCFvNFTTecEMdi999zchr89VUjejSg== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:29 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug qZ9fNZULFiTcas1J8eLDJiyuDBAlrghkM3olJD9oi7TW7eJusL3bRMUZuBsYIwdsF0mjAIVE02udnrfdN/++Tg== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:29 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug YgKVIynAZNUPEjV90atEpD0KJwQ2ChoxXcj4Oh3iH4ZLkrFVlNq6JTCjEUmj68QSuJH2JDqgk2lWW4pjbuEIUw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:31 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy frame-ancestors 'self'; +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 7rhC62iO+Rts/b+n+IFvEXeifr57brMaYkWLW76OXJzkEpiVAq78Tsy/RQCQ8N5hDrDXI87nuaRetJUM5huJuQ== +date Fri, 01 Dec 2017 02:48:31 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/html; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +set-cookie oNcnS=gpojSOS; 5X9e44v=0mTWPDQ8REZIxx5UsR6m77F2nLLDx; KAhjk6h=qwU+4DYhwV*; gAdd=f; 4O66Yd=zifBOQBN5pG/H +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 j8T0XBmPlo08jOXtTJ3MEw== +status 200 +content-length 198 +x-xss-protection 0 +x-fb-debug f4/9IxVq4HZYZ8dV9P6xeLypQNS2qEx/kNF3NoX9D8Z0nshFfF6M7lqeabFqQD5b50R/Iekbf9xeyr56aEUi7g== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Sat, 24 Nov 2018 12:25:27 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 b5vUN/sgd315IdDwXDUejw== +status 200 +content-length 7295 +x-xss-protection 0 +x-fb-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Sat, 01 Dec 2018 00:00:37 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 3N5sn/pluRe+kZxjcR6Ibw== +status 200 +content-length 9375 +x-xss-protection 0 +x-fb-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:54:38 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 i4f5LnfeTwjEpPYLvEw9sg== +status 200 +content-length 3785 +x-xss-protection 0 +x-fb-debug HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 20:34:54 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 fd9ZgENjjqTO/InJ/yzr9A== +status 200 +content-length 18878 +x-xss-protection 0 +x-fb-debug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:54:47 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 mgTL4W9gmblv6l6wXzZodA== +status 200 +content-length 6081 +x-xss-protection 0 +x-fb-debug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Thu, 29 Nov 2018 13:44:43 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +content-encoding br +x-content-type-options nosniff +content-md5 FWVLk47e/1NAPOLzKy9mZQ== +status 200 +content-length 9648 +x-xss-protection 0 +x-fb-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:40:41 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 SqewXybmJVo1v4gA0JLGBQ== +status 200 +content-length 738 +x-xss-protection 0 +x-fb-debug KC/Mv8BSpLzgKNnb1cJgXL8dPdim8GGQRbNyFfUpswJaoxnMQeHpRWlZwFceTKDlmlF+3I1PWGIgOE9iug58Qw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:44:41 GMT + +date Fri, 01 Dec 2017 02:48:31 GMT +last-modified Wed, 20 Sep 2017 12:43:30 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 40454 +expires Sat, 09 Dec 2017 14:44:15 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 7UJtDxiFPBYY1sVqvgsQp/byh+wO4VmQtzoGR1YpqwdzSX5TZPcZawYCUsAlp1SXS9x7ed5apoBsdWrWAqD2zA== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:31 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 YZP/0rJ9pw2vE+OCDm8w5Q== +status 200 +content-length 2031 +x-xss-protection 0 +x-fb-debug NNF+j6+XOFrfdhzYpIcXN8eoCwGFoh5LQhEtfDyAVBLtSL4n56dyb+kUyPAOLL4HokctaJ9bHKv6JsDRAvFzpQ== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:54:56 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 2nocW+0AmN98W+9vj2rtAA== +status 200 +content-length 1755 +x-xss-protection 0 +x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:27:38 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 V/4SheZbR98CwCYd4h3cAg== +status 200 +content-length 2174 +x-xss-protection 0 +x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:21 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 21:03:33 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug hdieTRvwlm1ekAKUz+PCErUI8L1SH+WbBkLwZ0ikBiUAMOZiHdLsiZRRjlQJUj4F5byiz3iFAA4uT16arnRd7A== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:32 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +date Fri, 01 Dec 2017 02:48:32 GMT +last-modified Wed, 29 Nov 2017 18:14:21 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1263 +expires Wed, 13 Dec 2017 18:14:25 GMT + +date Fri, 01 Dec 2017 02:48:32 GMT +last-modified Sun, 27 Mar 2016 20:43:37 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1435 +expires Wed, 13 Dec 2017 23:44:52 GMT + +date Fri, 01 Dec 2017 02:48:32 GMT +last-modified Mon, 16 May 2016 00:17:40 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1384 +expires Sat, 09 Dec 2017 21:01:34 GMT + +date Fri, 01 Dec 2017 02:48:32 GMT +last-modified Wed, 29 Nov 2017 18:14:21 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1096 +expires Wed, 13 Dec 2017 18:14:25 GMT + +date Fri, 01 Dec 2017 02:48:32 GMT +last-modified Sun, 27 Mar 2016 20:43:37 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1201 +expires Mon, 11 Dec 2017 05:20:17 GMT + +date Fri, 01 Dec 2017 02:48:32 GMT +last-modified Mon, 16 May 2016 00:17:40 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1180 +expires Mon, 20 Nov 2017 11:42:06 GMT + +date Fri, 01 Dec 2017 02:48:32 GMT +last-modified Thu, 25 May 2017 00:58:58 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1131 +expires Wed, 06 Dec 2017 07:19:13 GMT + +date Fri, 01 Dec 2017 02:48:32 GMT +last-modified Fri, 06 Oct 2017 04:13:23 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1076 +expires Tue, 14 Nov 2017 04:25:30 GMT + +date Fri, 01 Dec 2017 02:48:32 GMT +last-modified Sat, 04 Feb 2017 21:06:34 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1196 +expires Wed, 06 Dec 2017 08:11:30 GMT + +date Fri, 01 Dec 2017 02:48:32 GMT +last-modified Mon, 31 Oct 2016 17:48:54 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1214 +expires Thu, 14 Dec 2017 01:18:17 GMT + +date Fri, 01 Dec 2017 02:48:32 GMT +last-modified Sat, 18 Nov 2017 22:32:51 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1186 +expires Sat, 02 Dec 2017 22:47:49 GMT + +date Fri, 01 Dec 2017 02:48:32 GMT +last-modified Wed, 14 Jun 2017 21:09:19 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1116 +expires Wed, 06 Dec 2017 14:17:44 GMT + +date Fri, 01 Dec 2017 02:48:32 GMT +last-modified Thu, 28 Mar 2013 11:15:38 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1194 +expires Wed, 06 Dec 2017 13:19:14 GMT + +date Fri, 01 Dec 2017 02:48:32 GMT +last-modified Wed, 11 Oct 2017 14:19:22 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 2561 +expires Wed, 06 Dec 2017 13:00:04 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug ntagBSAy0N7B+W6cCPjMym9uojb63DTPZNd4qbWeU9JEJ6GsZJR28NdGWJF+2pYGdhqvJfCRNFKO6Wsu1DKrmg== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:32 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug TCx1S56tLRACSgQRetHn9/G9virSjj5p6TxjI/yO0SEMxskavAh/jzrW0NZ+RNisDLmq+h5pEXwheYm1KHgGYg== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:32 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug cGQeVJ0yynZitbvpqOoVWwcFWA4pbNMPbxm6kLd93D/Rp06syo3Bkb/25dSHIqthI8YpFt8lKO44Fiv9coRFbA== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:32 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug a2F7U2gfSNAOvmMj4SX8IrUAXTpRFoWi2AcWDEjjqhG9GTfSb5SwxWntbCrDLW/li49tn5FlrOqSyiHVsfLPBw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:32 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug lhhyzZ7f6JtEJ7VfB6YZb9/Th4Qw82KjrOLwWrOTfWj6pR9sEHf1/5EFp4m9+DyKlrZmgVPJW+FCXiPu+QylAg== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:32 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug fCePEei9uCqVXIV1xs2fa3gT/rg6BP9CrjdWzCNIC/B++asjzJ1FFbKdnp5xmO83iisvuRwos6qCfE9dhXKoAg== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:32 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug iRBn/XnVBDIWIxUBLMtLtAj5omaH7A7p11UT1D1afbZD+Ry0sthN9v9zHvAN00k4d067alZKMaUr47kiDHm4gQ== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:32 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug FQ8b5JXye5XlhBtjejvj/jR27KuuDITP3T6WgnIs5B7RbHbAdw0inziQZI5IrMN31Aa8W5FCh8PoudsQRbMSwQ== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:33 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy frame-ancestors 'self'; +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug hqV/b79Rwe4YgV9N2BognvCfbV2jZ/JfYpAS855sX5nmytN/L7TSs02ZXnccyQqjrtrmzz2zYfNXoheYKc50Tw== +date Fri, 01 Dec 2017 02:48:33 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/html; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +set-cookie oNcnS=gpojSOS; 5X9e44v=0mTWPDQ8REZIxx5UsR6m77F2nLLDx; KAhjk6h=qwU+4DYhwV1; gAdd=f; 4O66Yd=zifBOQBN5pG/H +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 b5vUN/sgd315IdDwXDUejw== +status 200 +content-length 7295 +x-xss-protection 0 +x-fb-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Sat, 01 Dec 2018 00:00:37 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 3N5sn/pluRe+kZxjcR6Ibw== +status 200 +content-length 9375 +x-xss-protection 0 +x-fb-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:54:38 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 i4f5LnfeTwjEpPYLvEw9sg== +status 200 +content-length 3785 +x-xss-protection 0 +x-fb-debug HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 20:34:54 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 fd9ZgENjjqTO/InJ/yzr9A== +status 200 +content-length 18878 +x-xss-protection 0 +x-fb-debug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:54:47 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 mgTL4W9gmblv6l6wXzZodA== +status 200 +content-length 6081 +x-xss-protection 0 +x-fb-debug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Thu, 29 Nov 2018 13:44:43 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +content-encoding br +x-content-type-options nosniff +content-md5 FWVLk47e/1NAPOLzKy9mZQ== +status 200 +content-length 9648 +x-xss-protection 0 +x-fb-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:40:41 GMT + +date Fri, 01 Dec 2017 02:48:34 GMT +last-modified Mon, 25 Sep 2017 19:20:09 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 37398 +expires Tue, 12 Dec 2017 03:27:30 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug T2Fb6tov4j/VU2CcWE1iGbdCVWGl3zikBGu30FonV6DpxMLxgWwyWIo0r27g0TL65MZ7X4i2ohsyr74hTG3jKQ== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:34 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 2nocW+0AmN98W+9vj2rtAA== +status 200 +content-length 1755 +x-xss-protection 0 +x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:27:38 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 V/4SheZbR98CwCYd4h3cAg== +status 200 +content-length 2174 +x-xss-protection 0 +x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:21 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 21:03:33 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug CmCWPlmqCm/uFgOIozX0baTftxZ3VhE4LyBiaS1Ba8d/f9IdOfG/DxhxqHc3JdaUlawX18BM8DURXwNblLHteA== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:34 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +x-fb-debug ORWOg2jR1rbO1ILKezoBrqCYFwqccLo76Z0yTAXhy9kK94PkFLtETQ8IkakHHwtfpp/aE1Wu7v6o+RRvhVTCTg== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 aceXgUioFutSxdIu20vnQQ== +date Fri, 01 Dec 2017 02:48:25 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +timing-allow-origin * +content-length 157 +x-xss-protection 0 +expires Thu, 22 Nov 2018 07:15:53 GMT + +date Fri, 01 Dec 2017 02:48:34 GMT +last-modified Wed, 20 Mar 2013 18:57:05 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1066 +expires Wed, 13 Dec 2017 17:53:06 GMT + +x-fb-debug hmeONhxlOikUn5JWEr5LODXNSDoQrK4Al9oZByowJnsG768Yr9lqfAocuoDG3ET6GHtZCGyboYlfXgcsNxzXsg== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 W6cjFtLyG3NmnM599q2XQw== +status 200 +date Fri, 01 Dec 2017 02:48:34 GMT +strict-transport-security max-age=31536000; preload; includeSubDomains +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +content-length 407 +x-xss-protection 0 +expires Sat, 17 Nov 2018 10:25:51 GMT + +date Fri, 01 Dec 2017 02:48:34 GMT +last-modified Wed, 20 Mar 2013 18:57:05 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 948 +expires Wed, 13 Dec 2017 01:05:18 GMT + +date Fri, 01 Dec 2017 02:48:34 GMT +last-modified Mon, 13 Nov 2017 17:28:09 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 2152 +expires Mon, 27 Nov 2017 17:43:16 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug UVv0oe/+es+7dgoQWv9n0RgnGfm+xsnA/Iq5fD3aHwBMr11k5BvSh+BzI6zihX5/h/8orIE/QfjkWLvg8Be9Og== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:34 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug JbOY87U1He0j0KzsfkkstH/yjYU1mBIa9guTiQhk/yd0UeMIEA6Nrxy8BZZzquA0hE2FkL4XzPXf0zZa4TUDSQ== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:34 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug i6EVcXfsFOTqpkGOYUS2B1wz2AQjlNYFkAtor8A5wVeRimZnRcztk9OElPuLHrD4MkKr9qlhAx6UM6Me6xVkNg== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:34 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 3saA1PCrN28LM0iyAb4VugAJLlHFaIR1k8aghHr7PrEqKeJRk3tHffLkr9mi+Wc0QCEUGnrswKLaGF2/wbNqPw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:34 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug nWHIgMSJK2w22Lxm4mwfyGWKtZteyQUVxZ4I/tLBFIv3MOEk3LNRFfzXe0ZjEYzrAWFdqdetH7nzOVqGJn2ojA== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:34 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug LX9x0T+zbHhQlpqjecnJ8AnoHt9JkvRR8x4Txp5TKgBpzroSrNl/WZWaFwaYCbTheV8/ffnTZDPExwCCCAttUQ== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:34 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug BJo0rSTzS5YBo+ZS+O0KsUb5qSihZkY0n4ER+ShvqBvLv6Lcym3PqqRD1uXBJu0fB2XxA87MBhGyxQszl8BtLQ== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:35 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug WiJG+zsrWf46xpzJ42rgkAuaSJ3ZsbG257drL8mGDBzGlHg3r+P7YelbWUqw+R7V9m5K3s8UdpvC7mr9QsYUhg== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:37 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy frame-ancestors 'self'; +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 11y9sN7qtzOoijlRDs+7xfzoE+Sj910j9prMSJfaLU4LFTjH9AcRVglyp0yFirQRX9DQgZ3Ab1YD4XhJsB0u5Q== +date Fri, 01 Dec 2017 02:48:37 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/html; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +set-cookie oNcnS=gpojSOS; 5X9e44v=0mTWPDQ8REZIxx5UsR6m77F2nLLDx; KAhjk6h=qwU+4DYhwV5; gAdd=f; 4O66Yd=zifBOQBN5pG/H +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 j8T0XBmPlo08jOXtTJ3MEw== +status 200 +content-length 198 +x-xss-protection 0 +x-fb-debug f4/9IxVq4HZYZ8dV9P6xeLypQNS2qEx/kNF3NoX9D8Z0nshFfF6M7lqeabFqQD5b50R/Iekbf9xeyr56aEUi7g== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Sat, 24 Nov 2018 12:25:27 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 b5vUN/sgd315IdDwXDUejw== +status 200 +content-length 7295 +x-xss-protection 0 +x-fb-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Sat, 01 Dec 2018 00:00:37 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 3N5sn/pluRe+kZxjcR6Ibw== +status 200 +content-length 9375 +x-xss-protection 0 +x-fb-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:54:38 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 i4f5LnfeTwjEpPYLvEw9sg== +status 200 +content-length 3785 +x-xss-protection 0 +x-fb-debug HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 20:34:54 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 fd9ZgENjjqTO/InJ/yzr9A== +status 200 +content-length 18878 +x-xss-protection 0 +x-fb-debug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:54:47 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 mgTL4W9gmblv6l6wXzZodA== +status 200 +content-length 6081 +x-xss-protection 0 +x-fb-debug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Thu, 29 Nov 2018 13:44:43 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 SqewXybmJVo1v4gA0JLGBQ== +status 200 +content-length 738 +x-xss-protection 0 +x-fb-debug KC/Mv8BSpLzgKNnb1cJgXL8dPdim8GGQRbNyFfUpswJaoxnMQeHpRWlZwFceTKDlmlF+3I1PWGIgOE9iug58Qw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:44:41 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +content-encoding br +x-content-type-options nosniff +content-md5 FWVLk47e/1NAPOLzKy9mZQ== +status 200 +content-length 9648 +x-xss-protection 0 +x-fb-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:09 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:40:41 GMT + +x-fb-debug ivI86tTrFwX9U5sLjaxj7fvac7JDJwsEi9Eja2Z4Oy4C7nmZIF2IkB8o8XqfevLcTTOzzEMMwFDwypn5k6bIXw== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 IHh5jFrVTE8LJvIHfLuDPA== +date Fri, 01 Dec 2017 02:48:20 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +timing-allow-origin * +content-length 556 +x-xss-protection 0 +expires Thu, 22 Nov 2018 12:26:14 GMT + +date Fri, 01 Dec 2017 02:48:37 GMT +last-modified Mon, 25 Sep 2017 19:44:15 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 36920 +expires Fri, 01 Dec 2017 16:06:40 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 YZP/0rJ9pw2vE+OCDm8w5Q== +status 200 +content-length 2031 +x-xss-protection 0 +x-fb-debug NNF+j6+XOFrfdhzYpIcXN8eoCwGFoh5LQhEtfDyAVBLtSL4n56dyb+kUyPAOLL4HokctaJ9bHKv6JsDRAvFzpQ== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:54:56 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 2nocW+0AmN98W+9vj2rtAA== +status 200 +content-length 1755 +x-xss-protection 0 +x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:20 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:27:38 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug VJPPpdIunoa0PsAOJTkd+NZrSo/smOqSCe00kT70yq1W+3WFV69RoCGxXDwfGHAHkOIzx3H6IQBmGV+mRQbwNw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:37 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 V/4SheZbR98CwCYd4h3cAg== +status 200 +content-length 2174 +x-xss-protection 0 +x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:21 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 21:03:33 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug hCRcDm8RuOwYbYu/YuM824iQWjlZblcAbg7abvZgYrLW6oe/CKJVOFVJx6FJ/h7LJRDOvvNoBYzvo1Pv0pH2AA== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:38 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +date Fri, 01 Dec 2017 02:48:38 GMT +last-modified Mon, 06 Nov 2017 19:16:05 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +x-fb-edge-debug ETqCNIawZjlBn_-DsYnz8Eke5UQ5XSMbncc1bgHpZPgcb9aHXXEgTr2zbPLCcUAYd63x6e7HEZvELIF5ZU-YwQ +timing-allow-origin * +content-length 2354 +expires Fri, 15 Dec 2017 02:48:38 GMT + +date Fri, 01 Dec 2017 02:48:38 GMT +last-modified Mon, 20 Nov 2017 15:44:29 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 2083 +expires Wed, 06 Dec 2017 15:30:15 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 0LaxLj167sUn/Smj88vRmssRRg01q+EcQbQOHpjOzYjB2fYy7BDvq2qHg4YXAAPpKAlfBymVLBwrd/9GCs/GwA== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:38 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm;report-uri https://www.facebook.com/csp.php +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug sv6s4cVWgre7iG2N4AjtMoA/v9Hp+fLNOn5AUHBBip02YKfnHaZG2RNsYjT/cqmrRHRg1gt2EAVSqdfO2bJHsw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:38 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug +qvKJUxHytS9y2J3fUAg4/Oe6iQG4N4f5I7mhclUiM6QFJWTvkxEY0hvcHqpio5YDc1+2TNGs0uks5n8EDpJZQ== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:38 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug Ialaex2lAp8FVggaIlNE5V7+ntPp38j2nvicXP83MHQYhvD8m5MkH1zdjj/g0Rfh5Q1WuX366h6aKxfsp0Mhhg== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:38 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug lKraYNnYGgMz6gqiG0m9WXRreHg9Z5n/9tEbyJCs0FFsF0LmdR73aEDUXTqdAG7VhKrQnFfHXjxEZ0N7yAbR+Q== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:38 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 24u4W9n6RfnFkdHetRHiq9arEYTTBhydET+2+9970OPxlY7VyTnD/VI4cQo9cCSqv1ame8zmVUAAP2e3WPhOBw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:38 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug cQfzBLtGIzv/gkJzRKFpBvCukbwBy9Ah3X5IL7msjOIgPkYdJ/gEoZadKNsvWNd+P+p81Xr4hiTsWnYvbq4ogw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:38 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 3XiBcZLt5O/nvcBdB9Jd5ZGyMv62DXvOyccJN3hr1h5otKloXez8tKF3KxDMfS+cTEa2SDzAiGGl/301LcAzaw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:40 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type text/javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 jfOCzN9x/2cFBFpAlRbWwg== +status 200 +content-length 1705 +x-xss-protection 0 +x-fb-debug BQ8sB5VGbkE9woIwdpfAlv07SQw0nettHRumTeoilCBIwoxdYeSIBMm/4h9s7+C0D6XkdIKHy/6fGQuTh85Wuw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:39 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 22:30:41 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 b6p/+eUCIEnbvgKixESeog== +status 200 +content-length 6467 +x-xss-protection 0 +x-fb-debug INVr1RX5JQw1VVmAPTvFz1qBToUvwVtUnqIvtA5sR/dBPk40sgDomfGCk0MDEv0N4BSAMMXBCgpKfxeyPmplMw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:39 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 21:46:38 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug CF8moTgH2QAU0n0gAY0VDcCm9pVaY1l2x4Edbu82ixEfNAZC/tg99GFN/c1HBwhkVVAEMhtBw5DovuzHpvrHBA== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:41 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +pragma no-cache +x-fb-debug ej9iz3s/lmrV13M3tvaaFzBfi+OmflI2x7D5HU5K40Xv7pKgzVDs7ivV6BgaxxQhxC13o8FVsjAMAEtwd0kSmw== +content-encoding br +x-content-type-options nosniff +date Fri, 01 Dec 2017 02:48:41 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +content-type text/html; charset=utf-8 +status 200 +cache-control private, no-cache, no-store, must-revalidate +content-security-policy frame-ancestors 'self'; +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +set-cookie oNcnS=gpojSOS; 5X9e44v=0mTWPDQ8REZIxx5UsR6m77F2nLLDx; KAhjk6h=qwU+4DYhwW*; gAdd=f; 4O66Yd=zifBOQBN5pG/H +vary Accept-Encoding +x-xss-protection 0 +expires Sat, 01 Jan 2000 00:00:00 GMT + +x-fb-debug OxKw8TR8lbzIJU+2fUvDIwKqRu/aMmeaOMRtwmLh4Usz2Qm21k8r5zxc8oTr2aXdC9pMjy3vHyhEGZkmA4A2MQ== +vary Origin +status 302 +location https://fbcdn.net/security/hsts-pixel.gif?c=2.5 +date Fri, 01 Dec 2017 02:48:42 GMT +strict-transport-security max-age=15552000; includeSubDomains +access-control-allow-methods OPTIONS +content-type text/html; charset=UTF-8 +access-control-allow-origin * +access-control-expose-headers X-FB-Debug, X-Loader-Length +access-control-allow-credentials true +content-length 0 + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Tue, 04 Nov 2014 18:31:29 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 934 +expires Wed, 06 Dec 2017 11:00:08 GMT + +x-fb-debug o+N7DXgGFIjeSrKe/AohasMYqi2mPJg+GXV9UxT8GGN7MMYLeCmO40rnnsGT54Y1TB/8g/NR024/bZ4IRdnm3Q== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 WFuqLsaU44qDUAslAtUA0A== +date Fri, 01 Dec 2017 02:48:42 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +timing-allow-origin * +content-length 5305 +x-xss-protection 0 +expires Mon, 26 Nov 2018 22:57:54 GMT + +x-fb-debug o32lUy/wzCjBV96zWB7ERnzoHuO6hu+jP+qq0+qnUvrj7P+U/PUk+WdH6fu/zpCUA0hVmdttY0PuhlmnLvQVyw== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 /cHO8B3YAO/ChHs9p9JPDw== +date Fri, 01 Dec 2017 02:48:42 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +timing-allow-origin * +content-length 548 +x-xss-protection 0 +expires Thu, 22 Nov 2018 20:02:53 GMT + +date Fri, 01 Dec 2017 02:47:54 GMT +last-modified Tue, 04 Nov 2014 18:31:29 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 836 +expires Fri, 24 Nov 2017 14:06:38 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Wed, 06 Sep 2017 14:56:02 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 13307 +expires Fri, 24 Nov 2017 14:49:36 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Tue, 01 Jan 2008 00:00:00 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +x-fb-edge-debug RvuYQEJ3w9ho3lEjUWNiGa6vY4riNY5COqj9W1GIY8dvqMsqbJwLNzgg4Q3wN7_LgSuzb3WoVJu6ZS_9unt0jw +timing-allow-origin * +content-length 12342 +expires Fri, 15 Dec 2017 02:48:42 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Sun, 19 Nov 2017 22:20:21 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 16229 +expires Mon, 04 Dec 2017 00:43:50 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Thu, 22 Jan 2015 22:37:58 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +x-fb-edge-debug cXG-MBMAdvKTcjt8OJCXjW48y-yxYO1g1CVtvfNzkBXgpPTuh7Kt8VxpPK8-jYiCYHxzLag3SkUTBT31s68wsw +timing-allow-origin * +content-length 11954 +expires Fri, 15 Dec 2017 02:48:42 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Sat, 26 Mar 2016 20:29:36 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +x-fb-edge-debug KSsp6SxoFvwd9tK658jJkNtmglqlI7glK9X2WngFYEoWOhqBo6BHZsXmbCZIyYK-5tLNFV4fHJ8qx71J9WwwHw +timing-allow-origin * +content-length 12295 +expires Fri, 15 Dec 2017 02:48:42 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Mon, 23 Nov 2015 02:24:38 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +x-fb-edge-debug _pXCFVcHx2fhuNlZSvAWPJsJVj16r5LMNG_mKNFSEtAL2qIEp4aevBFIdeHONrP6EbUo-YdkPyl2ibPHEtO06g +timing-allow-origin * +content-length 16518 +expires Fri, 15 Dec 2017 02:48:42 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Wed, 08 Nov 2017 13:08:22 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 16676 +expires Sat, 25 Nov 2017 12:32:13 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Thu, 15 Sep 2016 00:29:42 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +x-fb-edge-debug 4QKv42fPsuZz_RHbzHsxSZw28FjNk43GtJKIyZ3KQR_2dPR4-n8GP6PxVcoWVWXuO6zkNYudqf92qu6wmbYZag +timing-allow-origin * +content-length 9346 +expires Fri, 15 Dec 2017 02:48:42 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Thu, 20 Feb 2014 19:51:36 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 6669 +expires Fri, 10 Nov 2017 09:21:32 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Mon, 11 Sep 2017 19:21:07 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +x-fb-edge-debug OcdlCYVtclhoanH3vEUkcgp5xdsSJSXMxlEhJ4bO7qyasGUPhnVWXtNyeZvMeI_pD-VInWssMGo8yegAx2KtJA +timing-allow-origin * +content-length 10193 +expires Fri, 15 Dec 2017 02:48:42 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Sun, 05 Oct 2014 04:06:58 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +x-fb-edge-debug SQiVqS4015WAz4E9qhwJNtBwWENBziYq0Q3GD4sOYsLuZyU_yZchRLWo4Tok6AHP1SVJKWf-ELFcOxWYmF7Q3A +timing-allow-origin * +content-length 10226 +expires Fri, 15 Dec 2017 02:48:42 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Mon, 15 May 2017 03:07:22 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +x-fb-edge-debug lQRqvNCns5jAwUvHJx-aRiKhxS87KyomZNM8op0uc6T4Q-Kzir7UvfG0Cfqbm9jrsxx-whuTMw56_4y6nfIyPg +timing-allow-origin * +content-length 13412 +expires Fri, 15 Dec 2017 02:48:42 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Tue, 23 Feb 2016 15:12:45 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +x-fb-edge-debug iSX08DnUOAjuXq5615qrlzXjQHn56Eobci-Mkig918wUVNb2Bkc8fFuOkhjoBymu98kH0dk4PURTTWQzo2xqeA +timing-allow-origin * +content-length 13991 +expires Fri, 15 Dec 2017 02:48:42 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Sat, 07 Oct 2017 02:36:41 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +x-fb-edge-debug mFDVT8NJPWXtJAmYZED_iPs8jxXpC-j42LvTd-1oOAWjynfv6Un-JSL7wbb5wR6rJ3PbMj4-z-ha1JenE6t53A +timing-allow-origin * +content-length 14750 +expires Fri, 15 Dec 2017 02:48:42 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Fri, 06 Oct 2017 12:59:13 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +x-fb-edge-debug PKKgGhRqXZAPB-HTyUnisy5_eWZwRugxTDE0o1atSNZSu_vR_JNdyMjEkgnjm4BA07CkM-sPtAdewpiDmaULZw +timing-allow-origin * +content-length 12667 +expires Fri, 15 Dec 2017 02:48:42 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Tue, 25 Feb 2014 19:54:14 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 9461 +expires Fri, 24 Nov 2017 19:31:38 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Sat, 26 Aug 2017 19:54:52 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +x-fb-edge-debug SVE5wbBMq6nBPMdvWHwzhufMGUFZZwXUxfOdpvBQ2vvv15fP6Kdqc2voex9W0q728GbaAlIVivUbEHR5ZjO8Xg +timing-allow-origin * +content-length 14253 +expires Fri, 15 Dec 2017 02:48:42 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Wed, 09 Nov 2016 10:43:36 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +x-fb-edge-debug zGqgelCYFB0BiS6uYzD96dNa4BhiBfcQVtVD687YRc3V0Fq25BG83jav2srswSCAzcZj3v-vcBN5nEGpiQLayg +timing-allow-origin * +content-length 9867 +expires Fri, 15 Dec 2017 02:48:42 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Tue, 20 Jun 2017 05:10:00 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +x-fb-edge-debug szdnBjD8T5IeEDrB7fAzeFse03nIrEhE30CecCV1x9mdMZrm5_w-dSBLJIqwF1nL3vyADJy5fJ1pqT4w0vNfQA +timing-allow-origin * +content-length 9161 +expires Fri, 15 Dec 2017 02:48:42 GMT + +x-fb-debug SphHt6X8aaC4O7OrE5YStS9cLlGtO84gPXoWYeEUx8YETGBAUpAb6kZ1M9K2kqvkOImJHKdLcDwtsWAkzbU3Fw== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 cH2zTAVPHVXw/aQfDhS/Bg== +date Fri, 01 Dec 2017 02:47:42 GMT +status 200 +content-type image/gif +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +timing-allow-origin * +content-length 522 +x-xss-protection 0 +expires Sun, 18 Nov 2018 20:51:23 GMT + +x-fb-debug 8Y7xmhHv+dUABQ5G/C/MNsrpA0Kqadd59S8IxcuvsypxKRmzuNfxuKGmHTjx2N7B/96SvyBm4CHcdpmHrM5G6A== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 YRyRbJo4R7CNEE1X8k7Jfg== +date Fri, 01 Dec 2017 02:47:43 GMT +status 200 +content-type image/gif +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +timing-allow-origin * +content-length 43 +x-xss-protection 0 +expires Thu, 22 Nov 2018 20:02:46 GMT + +date Fri, 01 Dec 2017 02:47:55 GMT +last-modified Tue, 01 Jan 2008 00:00:00 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1769 +expires Fri, 24 Nov 2017 19:52:06 GMT + +date Fri, 01 Dec 2017 02:47:55 GMT +last-modified Sun, 19 Nov 2017 22:20:21 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1986 +expires Wed, 06 Dec 2017 07:57:09 GMT + +date Fri, 01 Dec 2017 02:47:55 GMT +last-modified Wed, 06 Sep 2017 14:56:02 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1897 +expires Mon, 20 Nov 2017 14:10:12 GMT + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Mon, 11 Sep 2017 19:21:07 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1649 +expires Thu, 14 Dec 2017 20:31:27 GMT + +date Fri, 01 Dec 2017 02:47:55 GMT +last-modified Thu, 22 Jan 2015 22:37:58 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1704 +expires Sat, 18 Nov 2017 14:39:23 GMT + +date Fri, 01 Dec 2017 02:47:55 GMT +last-modified Sat, 26 Mar 2016 20:29:36 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1764 +expires Fri, 15 Dec 2017 02:46:11 GMT + +x-fb-debug jLVtRmmf8FlBFmmvs77zLZ5kxGJFK0IqAKFtWQ76Z2EgBlPqA+zVbftdXn/CG4btJFwbOvIwfVg1THxtuM9XrQ== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 P3oj2EL6pHt7tkWGA5Yf5A== +date Fri, 01 Dec 2017 02:48:42 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +timing-allow-origin * +content-length 1425 +x-xss-protection 0 +expires Mon, 26 Nov 2018 22:57:53 GMT + +x-fb-debug zgiRiFCyGejMO+S8ItrjPiYsRyk+QRGBIPYFs1MUy8X3dP0Sv34P8iBvmFNGm64hI5o1LgAyFWCvpGoEWSI6Dw== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 3T8z1xV6w0Ytr6bG8xDapg== +date Fri, 01 Dec 2017 02:47:55 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +timing-allow-origin * +content-length 1446 +x-xss-protection 0 +expires Sun, 25 Nov 2018 12:39:28 GMT + +x-fb-debug YwWjkdpYzNYMlNNJD9CuSWSTbH0EI2+Dpe3Jq9nSVy1M3G/WtFrs8I+Gd/IIh5BxeJRXv40dMxgjDqM8rJkLJg== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 hel74bGLstl9qZYs0X9wiw== +date Fri, 01 Dec 2017 02:48:42 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +timing-allow-origin * +content-length 3146 +x-xss-protection 0 +expires Mon, 12 Nov 2018 12:35:17 GMT + +x-fb-debug fYuO1K2+pP/a0ojdgA4UMJftmsZbp94jLX+EinKxh1uYpvdASqcNKLddBYWslALDzhbQsQ4IT6GNBwRpfYZdGQ== +vary Origin +status 302 +location https://fbsbx.com/security/hsts-pixel.gif?c=5 +date Fri, 01 Dec 2017 02:48:42 GMT +strict-transport-security max-age=31536000; preload; includeSubDomains +access-control-allow-methods OPTIONS +content-type text/html; charset=UTF-8 +access-control-allow-origin * +access-control-expose-headers X-FB-Debug, X-Loader-Length +access-control-allow-credentials true +content-length 0 + +x-fb-debug D2C3KCUrNX0IcbEFFd98z4RNxDDCwBUCDHl90jXulGwOxmJxWO1aM7CrVtWJAoUuzAfDJNeCy5WqDd/b5kxZww== +vary Origin +status 302 +location https://connect.facebook.net/security/hsts-pixel.gif +date Fri, 01 Dec 2017 02:48:42 GMT +strict-transport-security max-age=31536000; preload; includeSubDomains +access-control-allow-methods OPTIONS +content-type text/html; charset=UTF-8 +access-control-allow-origin * +access-control-expose-headers X-FB-Debug, X-Loader-Length +access-control-allow-credentials true +content-length 0 + +date Fri, 01 Dec 2017 02:48:42 GMT +last-modified Tue, 04 Nov 2014 18:31:29 GMT +status 200 +content-type image/jpeg +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 1030 +expires Sat, 02 Dec 2017 20:51:22 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 GbW1CEUmglUhzaSOEdSaoA== +status 200 +content-length 2729 +x-xss-protection 0 +x-fb-debug K7i4csmZ3STmUbcVQPDrwljTtYrLDVly/7Xbfm5Klrzml3q/Tot0QxJAoYongnFR0iIsXn59NC1FBJt9Jud/Wg== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:42 GMT +vary Accept-Encoding +content-type text/css; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 21:47:27 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding gzip +x-content-type-options nosniff +status 200 +vary Accept-Encoding +content-length 57 +x-xss-protection 0 +pragma no-cache +x-fb-debug 4vq/LxHnPcsIYiYckiARhkkv5jakxS8hEvHOxdsFoP9tdYOiJItfiYSGFGkhBZLR3PE26p1LHDXOTAv2r4uTXg== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:42 GMT +strict-transport-security max-age=31536000; preload; includeSubDomains +content-type image/gif +access-control-allow-origin * +cache-control private, no-cache, no-store, must-revalidate +expires Sat, 01 Jan 2000 00:00:00 GMT + +x-fb-debug hseUHLM6SPODsqeO2RZmsm0tztto+XotuXfT5d0K0ABVXdi4WuGjySB5L54B7YXWqIF0lBl/pHFen7sspCEvrA== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 2GHW2vCOWZxptNKZnZBIaQ== +date Fri, 01 Dec 2017 02:48:42 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +timing-allow-origin * +content-length 1006 +x-xss-protection 0 +expires Sat, 01 Dec 2018 01:21:33 GMT + +x-fb-debug rLt2njfX8GUcpbqIDsCtJztJjtmYj0D1MfZ7NFDdCyhdUo3jSU+8ILYuDM2R0zWLaXmX87PyahwrVHk0EWq0GQ== +x-content-type-options nosniff +last-modified Mon, 01 Jan 2001 08:00:00 GMT +content-md5 hf9mDzhK3T9XugswoJ7w6g== +date Fri, 01 Dec 2017 02:48:42 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +timing-allow-origin * +content-length 10609 +x-xss-protection 0 +expires Sun, 18 Nov 2018 20:54:57 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug zKuFhCxJ+fk1ALL5zYIYhbxP0onfKxozWFYWWzA4S965WZXJEBlCwvmDdBwseLVL+w9o9IjGO2MhJJsvdneEvQ== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:43 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug GNPnsjeqGsfo5CTG1T61oyUgkV6GWuWaQysaElCYUg2hFkTiOjNloXJiJB8BG8XrPdCusfZBlIp4LqcSUwAQ7A== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:43 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug XKxMuee79bPaR3DNnKe3uX4QWg11cwbhMwLAoo5pZgXertc/e/kXEtJkZl675cIcUCyXRAdC6imCEPyl4yRqRA== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:43 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +content-encoding br +x-content-type-options nosniff +content-md5 80EI7SblF/5CDFIwFGm3KA== +status 200 +content-length 17851 +x-xss-protection 0 +x-fb-debug +u+u+RXJTpu9orEwUh1kk9h5tRF+tk5oTd/K1j1eYB/htnFLJ8MpdFebaNpiQPCFSoZdONgVqmSmTz4r8OWFWQ== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:43 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:27:42 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 BBkMcEf61Nkmx/eSXCIoQw== +status 200 +content-length 1120 +x-xss-protection 0 +x-fb-debug 9FBANDg7RcA1p6bI6sH/gfd5OaSCNeQTKvqA3G1KQ+7RA5lSdB7bEs5xmwt3wvlt27wTIpE0r1+7vb/zv3ybcg== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:43 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 21:47:28 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 9Nfy3C53u/Ywu2r8e8i4tg== +status 200 +content-length 6219 +x-xss-protection 0 +x-fb-debug 5c+nR6FAecnDHjYqXy+XnNY028sY1v72DFfEoTwA9DC/kIUrN+d9LwDoQzt1p8sMOC3NsPdlHv9PL7HLG9sWOg== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:43 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Thu, 22 Nov 2018 22:41:19 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 PiHXNxZCUbdf5Zq2elJI6Q== +status 200 +content-length 9348 +x-xss-protection 0 +x-fb-debug PisRElE9u27wtLXOsg/IKP8YR21ncVXpXMA8kGh1l7DV+O/wH8fys5g8bih8guJRmrrjvyifwQXceEDQOF4NNg== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:43 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 20:39:40 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +content-md5 IzoUHBEUROEs3o00XENnsA== +status 200 +content-length 619 +x-xss-protection 0 +x-fb-debug n98TkqZ18WcK3LOHs1r/T80Sis/9rSTxbCfm6hmlBsJP7TTEF+whogcduEx6x3THC9ciYCYQkK9o/wWaMWuI4A== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:43 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:38:28 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self'; +content-encoding br +x-content-type-options nosniff +content-md5 YLFSkpjxno+EhBDQEmkYww== +status 200 +content-length 676 +x-xss-protection 0 +x-fb-debug Tf92zsNf/9wZXQW+9xFI0Q8Fb05esZI+GIn6VZAkhn6NnbyWsp4KgPyZAtuk1W3EvnH1qZBmwLLxFRbY9QWKqw== +last-modified Mon, 01 Jan 2001 08:00:00 GMT +date Fri, 01 Dec 2017 02:48:43 GMT +vary Accept-Encoding +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin * +cache-control public,max-age=31536000,immutable +access-control-allow-credentials true +timing-allow-origin * +expires Fri, 30 Nov 2018 19:31:44 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug wRSkTC590t8WwiytNtAv5HmeZGwL8dJpQF5IMx39X69oxWin5RyKT+Fo0+3Kb17Ms3DLtNOrdlseuJlje5SO/A== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:43 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +date Fri, 01 Dec 2017 02:48:43 GMT +last-modified Fri, 06 Dec 2013 20:28:14 GMT +status 200 +content-type image/png +access-control-allow-origin * +cache-control max-age=1209600, no-transform +timing-allow-origin * +content-length 79 +expires Fri, 24 Nov 2017 14:05:33 GMT + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug tctLBJnET09BflPSiJ+KphBga2Uz4Zm+EL7ocriOaf4Ut2LTQpXfh4aWW8lFxIsmcFJAtIkSxqJEiLDCvoL7Jw== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:43 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + +:status 400 + +pragma no-cache +date Fri, 1 Dec 2017 02:48:47 GMT +content-encoding gzip +server EdgeChat +status 200 +x-frame-options DENY +content-type application/json +access-control-allow-origin https://www.facebook.com +cache-control private, no-store, no-cache, must-revalidate +access-control-allow-credentials true +content-length 153 + +:status 400 + +content-security-policy default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self';style-src data: blob: 'unsafe-inline' *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com 'self' chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm; +content-encoding br +x-content-type-options nosniff +status 200 +vary Origin +vary Accept-Encoding +x-xss-protection 0 +pragma no-cache +x-fb-debug 5TYop5RZdv3V93nsRwDPC9he+DAq/wN1NMbuuPYERVSXNj9hh9aTDd/JRo3oZuniry2F4WbXuxZjMwum6xBP7g== +x-frame-options DENY +date Fri, 01 Dec 2017 02:48:53 GMT +expect-ct max-age=10, report-uri="http://reports.fb.com/expectct/" +strict-transport-security max-age=15552000; preload +access-control-allow-methods OPTIONS +content-type application/x-javascript; charset=utf-8 +access-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug, X-Loader-Length +cache-control private, no-cache, no-store, must-revalidate +access-control-allow-credentials true +expires Sat, 01 Jan 2000 00:00:00 GMT + diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/qifs/long-codes.qif b/external/lsquic/src/liblsquic/ls-qpack/test/qifs/long-codes.qif new file mode 100644 index 0000000..d6875c3 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/qifs/long-codes.qif @@ -0,0 +1,5984 @@ +# Based on fb-resp.qif, but with inserted characters that generate long codes: +# perl -pi -ne '@codes=(1,2,6,92,141); if (/(\S+)\t(\S+)/) { ($h, $v) = ($1, $2); $s = \($.&1?$h:$v); substr $$s,int(rand(length$$s)),1,chr($codes[int(rand(scalar(@codes)))]); $_="$h\t$v\n" }' +x-fb-dbug SASLTVtJVp+AQ2p1v8FGiCfzyMTFyXtCl4jQU8bx3HFHBGi+S6Zr8HVwyMV1Bd7ZtMUXkBC1tOmBil21liPXLg== +x-content-type-options n\sniff +lastmodified Mon, +content-md5 0d0dMxGy+82XtBefaBmPA== +dat\ Fri, +status 00 +conten\-type image/png +access-control-allow-origin  +cache-contrl public,max-age=31536000,immutable +access-control-allow-credentials rue +timin\-allow-origin * +content-length 269 +x-xss-protect\on 0 +expires Fri\ + +x-fb-debug Lggs5E1dq7LzpVIK3dKMBgaeBeCUcnct+a406urJCVcirUe0tLtj0jpXoG+AbHu3VtgwKjsQv3JB1JTPdv7qw== +x-ontent-type-options nosniff +last-modified Mn, +ontent-md5 e1GPajcAA5W3bvrDUnemRA== +date ri, +sttus 200 +content-type iage/png +access-control-allow-ori\in * +cache-control public,\ax-age=31536000,immutable +access-controlallow-credentials true +timing-allow-origin  +cotent-length 4969 +x-xss-protection  +expir\s Fri, + +content-securty-policy default-src +content-encoding b +x-content-typeoptions nosniff +status 00 +v\ry Origin +vary Accept-E\coding +x-xss-p\otection 0 +pragma o-cache +x-fb-deug KosdQZTywEhijxkaJaeIGZUNoNzdqdPJok08j01MTQjTIDmCOpXuOAW1nSTiwp1o2levX702JvMmy47oPPHS8A== +x-frame-options ENY +dae Fri, +expect-ct max-age=10 +strict-tansport-security max-age=15552000; +access-control-allow-methods PTIONS +content-tye text/javascript; +access-control-allow-origin htps://www.facebook.com +access-control-expse-headers X-FB-Debug, +cache-control prvate, +access-control-allow-credenials true +expires Sa, + +content-security-policy defau\t-src +content-encodng br +x-content-type-options nosnif +stat\s 200 +vary Oriin +ary Accept-Encoding +x-xss-protection  +prama no-cache +x-fb-debug ptNrsKHbfbtIWth08olYf7aA1cPYzkz/7GMFkKO1wn6KS0jyDwhOtMdOLmEAZnhxA/VToSA1nNDhaAc7FJz6A== +x-frame\options DENY +date ri, +expct-ct max-age=10, +strict-transport-security ma-age=15552000; +access-control-allow-mehods OPTIONS +content-type text/jvascript; +access-contrl-allow-origin https://www.facebook.com +access-control-expose-headers -FB-Debug, +cache-conrol private, +access-control-allow-credentials tru +expirs Sat, + +content-secrity-policy default-src +content-encoding r +x-content-ype-options nosniff +content-md5 xdldqlFln8zS6EEVDcuqQ== +statu 200 +content-length 44\ +x-xss-proection 0 +x-fb-debug mEO7bfwFStBMwJWfW4pmg2XL25AswjrVlfcfYbxkcS2ssduZmiKoipMH9XwoTGkbQnq9bcjwWbwDQzsea/vMQ== +last-\odified Mon, +date Fr, +var Accept-Encoding +content-type application/xjavascript; +access-control-allow-orgin * +cache-control public,mx-age=31536000,immutable +access-control-allow-redentials true +timing-allow-origin  +expirs Fri, + +conten-security-policy default-src +content-encoding b +x-content-type-optins nosniff +status 00 +vry Origin +vary Accept-E\coding +x-xss-prtection 0 +pragma no-cach\ +x-fb-dbug TvOROrieggVKWF52s5yHEA3mQ1zDEJWh8Sj0B+f7xt3PL8qVSeX47LM2CSqeJ2/M53wikG49+DD2aAJG0s0RPg== +x-frame-options DE\Y +dae Fri, +expect-ct ma\-age=10, +strict-transport-securiy max-age=15552000; +access-control-allow-methods OPTIOS +contenttype application/x-javascript; +access-control-allow-origin https://www.facebook.\om +access-contol-expose-headers X-FB-Debug, +cache-control private +access-control-llow-credentials true +expires St, + +content-security-policy defalt-src +content-ncoding br +x-content-type-options osniff +stat\s 200 +vary rigin +ary Accept-Encoding +x-xss-protection +x-fb-deug a8ET6mB4qBEvQo9//btSC5QKabMxb8MtHXb9aU75HeJCFQVaZ7yfdC9BZT7JXs/fr8uHnYcnnvQEE5AzH4qfSg== +x-frame-options DEN +dae Fri, +expect-ct ax-age=10, +strict-tra\sport-security max-age=15552000; +access-control-allow-methods OTIONS +conten\-type application/x-javascript; +access-control-allow-origin htps://www.facebook.com +ccess-control-expose-headers X-FB-Debug, +cache-control public,max-\ge=86400 +\ccess-control-allow-credentials true +expires at, + +content-security-policy defaul-src +ontent-encoding br +x-content-type-options nosnff +statu\ 200 +vary Or\gin +vry Accept-Encoding +x-xss-protection  +x-b-debug QSl55Hc1TFfrfgICO0WEXX1p2DjkXC5w7eAbe7nWYEuuAByf/eplw1TCa5i5haOUJFb/V6tT283E+moKlFxXvw== +x-frame-options DNY +dae Fri, +expect-ct max\age=10, +strict-trnsport-security max-age=15552000; +access-control-allow-methods OP\IONS +contenttype application/x-javascript; +access-control-allow-origin http://www.facebook.com +access-control-expse-headers X-FB-Debug, +cache-control public,ma-age=86400 +access-control-allow-credentals true +expires Sat + +content-security-policy defaul-src +cont\nt-encoding br +x-content-type-options nosnif +stats 200 +vary rigin +vay Accept-Encoding +x-xss-protection  +x-fb-debu 4J9GGju98yXnIbDBCHsnWWyhyJ7lbZo/orq4ea6BlUBHfu1UvVhg7bQ9dq2tThGzGJXF3Uc3il6C4Fd3rPxSlg== +x-frame-options DEN\ +dte Fri, +expect-ct max-age=1, +strict-transport-\ecurity max-age=15552000; +access-control-allow-methods PTIONS +content-tpe application/x-javascript; +access-control-allow-origin htps://www.facebook.com +access-control-expse-headers X-FB-Debug, +cache-control pubic,max-age=86400 +acces-control-allow-credentials true +expires Sa, + +x-fb-debug iVSC5UoRzQPMHwjjfteCUuZL23G6caJNd3CJVJ1VBSXN0A0voAnUYd/BxqXX2d/q51/cyCNZibCJvmkfZ7c2A== +x-contnt-type-options nosniff +last-modified Mon\ +conten-md5 Sa3P5qK+Nv7nge73PlbVnw== +date F\i, +sttus 200 +content-type iage/gif +access-control-all\w-origin * +cache-control public,max-age=3156000,immutable +access-controlallow-credentials true +content-security-policy dfault-src +timig-allow-origin * +content-length 414 +x-xss-protectio 0 +expires \un, + +content-security-policy dfault-src +content-ncoding br +x-content-type-options nos\iff +tatus 200 +vary Oriin +vay Accept-Encoding +x-xss-protection +pagma no-cache +x-fb-debug IJJryxSHYHK02N5zoW/V4t6vGZUfSwp1zyCZ2c7AvVlRZ25ZZtmYWAUqjKvlL519kc2r9QeYf6x7ILS61yjAQ== +xframe-options DENY +date Fi, +expect-t max-age=10, +strict-transport-security mx-age=15552000; +access-control-allow-method OPTIONS +content-type text/avascript; +access-control-allow-origi https://www.facebook.com +access-control-expose-headers X-B-Debug, +\ache-control private, +access-control-allow-credentials rue +expirs Sat, + +content-secrity-policy default-src +content-encoding b\ +x-cont\nt-type-options nosniff +content-md5 pQpUbVkwS\6byHFL/7b8mg== +s\atus 200 +content-length 220 +x-xss-protectin 0 +x-fb-debug m76LhRYx7f58ob4bktemQtlvg8+M1ZyhAx7Q8eN1CKYVE1MUC/yHSby13Bm34Xj9pNsES6xHQEv/YmXEftDXw== +last-modiied Mon, +date Fi, +vay Accept-Encoding +content-type applicaion/x-javascript; +access-control-allw-origin * +cache-control public,max-age=3136000,immutable +access-ontrol-allow-credentials true +timing-allow-origin +epires Fri, + +x-f-debug 40OavfgvR11mfIGZzV/fvZTP90MhAEH0zHvea72NjcWQvD/1AnMvEUYzzxcDxZbToU6hYqcsKrIzbDGUPlkI+A== +x-content-type-options nosnif +last-mdified Mon, +content-md5 40MdgQ0fyFgmOuNysvTVg== +ate Fri, +status 20 +c\ntent-type image/png +access-control-allow-origin \ +ache-control public,max-age=31536000,immutable +access-control-allow-credentials rue +timing-allo\-origin * +content-length 519 +x-xss-rotection 0 +expires \ri, + +content-security-policy defaul-src +content-encodin br +x-content-type-options nosnff +statu 200 +vary Oigin +ary Accept-Encoding +x-xss-protection \ +praga no-cache +x-fb-debug chrBBz4SEsGv1ZrufHBAed2St1Esdm+cib6eyFRehfDFnzH1c1S5f7LQv/285c/4iYx/8I7qKhOEddZu0mw1Q== +xframe-options DENY +date Fr\, +exect-ct max-age=10, +strict-transport-security maxage=15552000; +access-control-allowmethods OPTIONS +content-type appication/x-javascript; +access-control-allw-origin https://www.facebook.com +access-control-expose-headers X-B-Debug, +cahe-control private, +access-control-allow-credentials tru +expir\s Sat, + +conent-security-policy default-src +content-encoding b\ +xcontent-type-options nosniff +status \00 +vay Origin +vary Accept-Encodi\g +x-xss-protectio\ 0 +pragma no-cac\e +xfb-debug 3/GPqjBaqhuenuhKPMcWB/lN3HyphJxaSt62dSaE6J9MTbsQcCiOn74quVCB3sklBW64w2w1CxMmmrXS/8OJ0A== +x-frame-options ENY +dae Fri, +expect-ct ax-age=10, +strict-tranport-security max-age=15552000; +access-control-allow-methods OPTION +ontent-type application/x-javascript; +access-control-allow-origin https://www.faceboo.com +ac\ess-control-expose-headers X-FB-Debug, +cache-control privat\, +access-control\allow-credentials true +expires Sat + +content-security-policy defaultsrc +conent-encoding br +x-content-type-options osniff +satus 200 +vary Or\gin +var Accept-Encoding +x-xss-protection  +praga no-cache +x-fb-debug wU4xeFXoTvB3fz0bx2X0xWaztL/F3YoeVYJYDQKNsbGxw2ZWte7ucnB8hyQPofyRdGFEjFzwN7J5s3YN3+b5g== +x-frame-opions DENY +date Fri +expct-ct max-age=10, +strict-transport-security max-age=1555000; +access-control-allo-methods OPTIONS +content-type application/x-jvascript; +access-contol-allow-origin https://www.facebook.com +access-control-expose-headers XFB-Debug, +cache-contrl private, +access-control-allow-credentials tre +expirs Sat, + +xfb-debug xnMJ/dh5lpylLnD1J8ahro3au8Krhu0Qvwr7plcpt9I7Mpg+q8T+dcWvuYDrl1QT1OShxUTgnVkAL5Pgtiso6w== +content-encoding gzi\ +var Origin +vary Accept-Enc\ding +staus 200 +date Fri +strict-transprt-security max-age=15552000; +access-control-allow-methods OPTINS +contnt-type text/html; +access-control-allow-origin htps://www.facebook.com +access-control-expoe-headers X-FB-Debug, +access-control-allow-credentials tru +set-ookie oNcnS=gpojSOS; +content-length 31 + +content-security-policy frame-ancestor +content-security-olicy default-src +content-encoding r +x-content-tye-options nosniff +status \00 +vay Origin +vary Accept-Encodig +x-xss-potection 0 +pragma no-cche +xfb-debug lVC6OYTyhZd8fitFRTviZIIyNQHSdjdA1iAbCPBw6VdJ0DZvTpDDbEaMryxyoVDgwS9G6HDo5uPatqo2FNrcsw== +date Fi, +expect-c\ max-age=10, +strict-transport-security max-age=1552000; +ccess-control-allow-methods OPTIONS +content-type tet/html; +access-control-llow-origin https://www.facebook.com +access-control-expose-headers X-FB-Deug, +cache-contro private, +access-control-allow-credentials tre +exires Sat, + +cont\nt-security-policy default-src +content-encoding r +x-content-type-option nosniff +content-md5 8YsseCeaO76d\82KH/3OQw== +tatus 200 +content-length 459 +x-xssprotection 0 +x-fb-debug DIZNq+5PMTDoSqZobDpWGk/qY97FvNkRjxK3ezYd8CVpOOG9IVeabusQW5I4cjro2y9nvZtdw8tYVq65QuDjw== +last-modifi\d Mon, +date Fri +ary Accept-Encoding +content-type tet/css; +access-control-a\low-origin * +cache-control public,max-age=31536000immutable +access-control-allow-credentias true +timing-allow-origin  +exires Fri, + +content-secrity-policy default-src +content-encoding r +x-ontent-type-options nosniff +content-md5 GLLPFim1kqAn/ld55Vtg8g= +sttus 200 +content-length 372 +x-xss-proection 0 +x-fb-debug WDGyD3lG2B1RDnrEtu1VfNsQu5d5SDBuJuNqGWNpHDXf4JUGLsv5PFOuI\ct7+I/e+Bst/l+eqhGzkm6tlvjvA== +l\st-modified Mon, +date Fr, +vay Accept-Encoding +content-type tet/css; +access-control-allow-orign * +cache-control public,max-age=31536000immutable +access-control-allow-credentias true +timing-allow-origin  +expres Fri, + +content-securiy-policy default-src +content-encoding b\ +x-content-type-optins nosniff +content-md5 3N5sn/luRe+kZxjcR6Ibw== +satus 200 +content-length 93\5 +x-xss-protectio\ 0 +x-fb-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQ\OwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== +last-mdified Mon, +date Fr, +vay Accept-Encoding +content-type text/css +accesscontrol-allow-origin * +cache-control public,max\age=31536000,immutable +access-control-allow\credentials true +timing-allow-origin  +xpires Fri, + +content-securiy-policy default-src +content-encoding b +x-content-typeoptions nosniff +content-md5 b5vUN/sgd35IdDwXDUejw== +stats 200 +content-length 795 +x-xss-protect\on 0 +x-fb-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2C\9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== +lat-modified Mon, +date Fi, +vay Accept-Encoding +content-type text/ss; +access-conrol-allow-origin * +cache-control public,max-age=1536000,immutable +accss-control-allow-credentials true +timing-allow-origin +expirs Sat, + +contet-security-policy default-src +content-encoding r +x-content-type-otions nosniff +content-md5 ch5t0W/Vcr8tgf9lHrm6g== +tatus 200 +content-length 4\94 +x-xs\-protection 0 +x-fb-debug gINc0A5Ml/TSiyh3e5F/jai6YIYOktCYw+ejxBPpLS7V0YC0PnDXPsbmPqg+zZj8+e1r3bNOSfa2XiKvDkP+g== +la\t-modified Mon, +date Fr, +vay Accept-Encoding +content-type application/x-javascipt; +access-control-allow-rigin * +cache-control public,max-age=31536000,immuta\le +acess-control-allow-credentials true +timing-allow-origin  +expres Fri, + +content-secuity-policy default-src +content-encoding r +x-contnt-type-options nosniff +content-md5 Lr3lzp8MBSCZviFiNjCFA== +satus 200 +content-length 1834 +x-xss-protction 0 +x-fb-debug LdlmyGrbdzwX3QUNWK7h9sr6vcH7X0DjSu1+PrhcjJLoNQikEEv2Jh6X0Zo/i0tw+mwZv9Ir4c1pJEnVEcVnw== +last-modifed Mon, +date \ri, +v\ry Accept-Encoding +content-type application/-javascript; +access-control-allow-origi * +cache-control public,max-age=3153600,immutable +access-contro-allow-credentials true +timing-allow-origin  +e\pires Fri, + +content-security-poliy default-src +content-encoding b\ +x-content-type-optio\s nosniff +content-md5 6H33LVIrHNhmJguTOcJEg== +stat\s 200 +content-length 1360 +x-xss-protction 0 +x-fb-debug ToJIaRvJ9nrellzwPpqq82nJcFBoJAPTr5622w7O6R7JgbvLbL9WuAqgfRh/csaYPznd+1o0vAaBtdrW9ZD3Q== +last-modifid Mon, +date Fi, +var Accept-Encoding +content-type application/x-java\cript; +access-control-alow-origin * +cache-control public,max-age=3153600,immutable +access-control-llow-credentials true +timing-allow-origin \ +exires Sat, + +content-securty-policy default-src +content-encoding r +xcontent-type-options nosniff +content-md5 miqufolG7gyYWCNm0fXSw== +satus 200 +content-length 315 +x-xss-protectin 0 +x-fb-debug zdwR2jYpEz9TtubgPOlmOSJO1ZER89b7nm7SbiHHc7q7SdovWtQRWKSeX+swwajuCA0LfLunpSP0es/ewL6nw== +last-modifie Mon, +date Fr, +var Accept-Encoding +content-type applcation/x-javascript; +access\control-allow-origin * +cache-control public,max-age=31536000,immutale +access-control-allow-credentils true +timing-allow-origin +expirs Fri, + +content-security-poicy default-src +content-encoding b +x-content-type-optins nosniff +content-md5 F\VLk47e/1NAPOLzKy9mZQ== +sttus 200 +content-length 968 +x-xss-proection 0 +x-fb-debug abRR4r4oBUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== +last-moified Mon, +date Fri\ +vay Accept-Encoding +content-type text/\ss; +access-control-llow-origin * +cache-control public,max-a\e=31536000,immutable +acc\ss-control-allow-credentials true +timing-allow-origin  +expirs Fri, + +content-secrity-policy default-src +content-encoding b +x-contnt-type-options nosniff +content-md5 V2Rmpzg121NGDtYMM8xZw== +satus 200 +content-length 2784 +x-xss-proection 0 +x-fb-debug X0KfGOd7zGSXTEAE0avvVqm56bFnBHduvLoCVTzyC2ax5Z85/wjJDHim2vUuBRqBjjhdv2pL8JjpfKtiR1jSA== +last-mdified Mon, +date ri, +ary Accept-Encoding +content-type applicat\on/x-javascript; +access-control-allow-oigin * +cache-control public,max-age=\1536000,immutable +access-control-allow-credential true +timing-allow-origin  +e\pires Fri, + +content-security-poliy default-src +content-encoding r +x-content-tpe-options nosniff +content-md5 ZCLR18eFVGl+wlMmr5W8Q== +satus 200 +content-length 3379 +x-xss-prote\tion 0 +x-fb-debug RGZm+n2MS9JePF1w9W2ICVBiEwcjY9OX+A9aWzeUo2omCnnWp7dj4nGTiPtSF61Rq4gRV7fCwq2vhbK/vahhQ== +last-modfied Mon, +date Fi, +vry Accept-Encoding +content-type app\ication/x-javascript; +access-control-alloworigin * +cache-control public,max-age=3156000,immutable +access-\ontrol-allow-credentials true +timing-allow-origin \ +xpires Fri, + +content-security-olicy default-src +content-encoding \r +x-content-type-ptions nosniff +content-md5 XdnKn0shujNUYDDAyjffw== +sttus 200 +content-length 119\0 +x-xss-protction 0 +x-fb-debug OuaGOMU1KwUx/Ex//TRoNPL06S9nVTeTSDyuSNY3sefgNbJaXf8up2zNF1HI6sVgh/oHjNdpNLy6rj7bm3cNA== +last-modifid Mon, +date Fi, +vay Accept-Encoding +content-type applcation/x-javascript; +access-ontrol-allow-origin * +cache-control public,max-age=31536000,imutable +access-control-allowcredentials true +timing-allow-origin  +expies Fri, + +content-security-plicy default-src +content-encoding b +x-content-type-optios nosniff +content-md5 GVRGBE6tqdWWzW\k78Fxvg== +satus 200 +content-length 1062 +x-xss-protetion 0 +x-fb-debug MR+rHN55opINt4Y1y5GgTjlPjNVRpdKqMXehDtOqh6hcNE1zNHi+7J2Oe9qkma00plaiQOxdn4vvlgPM+nZrQ== +lat-modified Mon, +date Fi, +vry Accept-Encoding +content-type ext/css; +access-contro-allow-origin * +cache-control public,max-ge=31536000,immutable +access-control-allw-credentials true +timing-allow-origin +epires Fri, + +content-security-poicy default-src +content-encoding b +x-content-ype-options nosniff +content-md5 CwKxN/dW03qpAvjFgY+wg== +statu 200 +content-length 292 +x-xss-protetion 0 +x-fb-debug TQ2kO1lJKcLy2YWu6fKnPhoSHHuWZumqqF5u9Ltx4npSchUPPfx1BDetQ+pAIgvpfCKAQpobtwOp3dZjRgNtw== +last-modif\ed Mon, +date Fi, +v\ry Accept-Encoding +content-type appication/x-javascript; +access-control-alow-origin * +cache-control publc,max-age=31536000,immutable +access-cotrol-allow-credentials true +timing-allow-origin  +expirs Fri, + +content-security-poicy default-src +content-encoding b\ +x-content-type-optins nosniff +content-md5 j5TyY0UnjhfUjVX2mSjmg== +stats 200 +content-length 1030 +x-xss-protecton 0 +x-fb-debug ZM/0J6kaZjm4G0z7Wovn90JGCnSgh5rjamgOuV1hzSEHy7j5hxlgp/pTaSmL3YaDZBBD1hQaYRiNIGHO5Hnsg== +ast-modified Mon, +date Fri\ +vry Accept-Encoding +content-type appliation/x-javascript; +access-contro-allow-origin * +cache-control pblic,max-age=31536000,immutable +access-control-allow-credenti\ls true +timing-allow-origin \ +expies Fri, + +content-scurity-policy default-src +content-encoding b +x-conent-type-options nosniff +content-md5 hpNuuubgPaKdlqsCKTLJg== +statu 200 +content-length 1998 +x-xss-protction 0 +x-fb-debug BImBNjsL7v4p4LqYNDHRVSrQGgu5C/xDjtk9ZYafHI\bt/6klWR/Si/9j6CCvoZP2NuJ60+Q3M3zSldRO/RQaQ== +l\st-modified Mon, +date F\i, +vry Accept-Encoding +content-type application/-javascript; +access-control-allow-oriin * +cache-control public,max-age=31536000,immtable +acces-control-allow-credentials true +timing-allow-origin \ +exp\res Fri, + +content-security-poicy default-src +content-encoding b +x-content-type-optios nosniff +status 00 +var Origin +vary Accept-Encodig +-xss-protection 0 +pragma nocache +x-fb-ebug mkuTkeR6tImD79ZzK5oJpf1AsHI4i54PdVIEe/kcG0tORygDBaC2k3igFhgw5rmn4YXROaHK8PEmRBqJKuTMSQ== +x-frame-options DNY +dte Fri, +expect-ct max-ae=10, +\trict-transport-security max-age=15552000; +access-control-allow-methods OTIONS +contet-type text/javascript; +access-control-allow-origin https://www.facbook.com +a\cess-control-expose-headers X-FB-Debug, +cache-control privte, +access-control-alow-credentials true +expires Sa\, + +content-security-policy defalt-src +content\encoding br +x-content-type-options nsniff +\tatus 200 +vary Orgin +vry Accept-Encoding +x-xss-protection  +ragma no-cache +x-fb-debug kRCyQegaq/Gqcyvb6pcbXiLoehRbv3lRgEewk/VTSJ7FP/efVNzdzFLYikTgjz+GLeayqPDRK9EAzAVNYaOjw== +x-frame-optio\s DENY +date F\i, +expet-ct max-age=10, +strict-transport-security max-ge=15552000; +access-control-allow-methos OPTIONS +content-type tex/javascript; +access-control-allo-origin https://www.facebook.com +access-control-expose-headers -FB-Debug, +cache-cont\ol private, +access-control-allow-credentials tru +exires Sat, + +content-security-polcy default-src +content-encoding b\ +x-content-ype-options nosniff +status 20 +v\ry Origin +vary Accet-Encoding +x-xss-protectin 0 +pragma no-ca\he +x-fb-\ebug SUGs1jQXVY8psVrTPnd9PcQy5gDB+MU+CL/gXaLGmpy/Goy580zMG2WVuvFUrAeJYO7KkbiCcG6dtSgLd8JvAA== +x-frame-options DNY +dte Fri, +expect-ct max-age=1, +strict-trans\ort-security max-age=15552000; +access-control-allow-methods OPIONS +contet-type text/javascript; +access-control-allow-origin https://www.facebook.\om +access-cntrol-expose-headers X-FB-Debug, +cache-control privae, +access-control-allow-creentials true +expires Sat + +x-fb-debug wkdZu+E1GYNYZCdr/DMkGZt3sb0tvJ9ZfgiBweAyl9UhuW5YB0eb\hsQj2xeGlEUvWjf15AhzOsATVd+BnHXIQ== +x-content-type-ptions nosniff +last-modified Mn, +cotent-md5 i9OGnguZlXf7E7rhFiUbqA== +date F\i, +satus 200 +content-type imag/png +access-control-alow-origin * +cache-control public,max-age=3153600,immutable +access-control-allow-credential true +content-security-policy default-\rc +timng-allow-origin * +content-length 1695 +x-xss-protectio\ 0 +expires on, + +strict-transport-security max-age=15552000 +x-content-type-otions nosniff +content-md5 1VwrJ2k5fXykH7nm0Guhw== +satus 200 +edge-control cache-maxage=\6400s +cotent-length 1173 +x-xss-protection  +xfb-debug e2XB4MQd6UbCpZGC79bENZbmWBE+t+NfI1xvndjJ/TDxZHJ/vc1v7lEmPHFcRUnllmY9nv1QFrwSr5fYGQCPAA== +date Thu +expet-ct max-age=10, +content-type image/p\g +access-cotrol-allow-origin * +cache-control public\max-age=86400 +access-cntrol-allow-credentials true +timing-allow-origin  +expirs Fri, + +-fb-debug 1odBdxCcB2hCiTjxdoz/DUfQdbtWewW/PXS9Fb/TMyF2Vno6sSz+VkM0qjnDF60t+YECJWi/CIXiBOnnIunFFg== +x-content-type-options nosnff +last-modiied Mon, +content-md5 aAGL4zVC4U+rUzi+GrKcZ== +dat Fri, +status 20 +con\ent-type image/png +access-control-allow-origin  +cace-control public,max-age=31536000,immutable +access-control-allow-credentials tue +content-securit-policy default-src +timing-allow-origin +content-leng\h 365 +x-xss-protection  +xpires Sat, + +x-b-debug jpmcQoRI03y7AryAZCkc2teYNSUwJzeP9lL4LCFJcPGpdUUIFW+s/mWOBp62zeHQz2lqicwHopjJnsvjAHjGgQ== +x-content-type-options nsniff +last-modifie Mon, +content-md5 OEaMb5I+K5EppmLlMUgyw== +\ate Fri, +status 2\0 +cntent-type image/png +access-control-allow-origin  +cache-cntrol public,max-age=31536000,immutable +access-control-allow-credentials tue +timing-allow-oigin * +content-length 34 +x-xs-protection 0 +expires St, + +x-fb-debug 2S9oefU+qABP4IYODnwzZYp+tUwluVXrY8FIT6Im567U3y77CaFYK4RF+MKWtQOW4kgKGk/jPtdNQbUlMR2aw== +x-contet-type-options nosniff +last-modified Mon +\ontent-md5 yDsFax6LZEwnoTGKzzBlpw== +date ri, +\tatus 200 +content-type imae/png +access-control-allw-origin * +cache-control public,max-age=31536000,im\utable +access-ontrol-allow-credentials true +content-security-policy defaut-src +timing-llow-origin * +content-length 78 +x-xss-protecti\n 0 +expires Sn, + +x-fb-debug D4jNiB0khDl+GsAZHc6/awXkwzBK8AcEBc7zAUm8PhSy2OB3914CwEGmWv82Vc6xM/2gCN6U814EM4Mrn0NJw== +x-content-typeoptions nosniff +last-modified on, +content-d5 /otskAYDIWUxahDb2l3iMw== +date Fri +s\atus 200 +content-type imae/png +acess-control-allow-origin * +cache-control public,max-age=31536000,immutabe +access-control-allow-redentials true +content-security-policy defaul-src +timing-alloworigin * +content-length 06 +x-xs-protection 0 +expires Th\, + +x-fb-debug Gzj3nTalJTpUrAKk99whIFyhC+ZeNJE\qM1innIgc+k9BTeAYWeW3YWN91XUw6jsdvWQ//PVxRFoAbgH0xhfiw== +x-ontent-type-options nosniff +last-modified Mo\, +content\md5 rAdlQ1LbnW1QjQqWUwF39A== +date ri, +staus 200 +content-type image/pg +access-contol-allow-origin * +cache-control public,max-age=3136000,immutable +access-control-allow-crede\tials true +timing-allow-origin  +ontent-length 292 +x-xss-protection  +exires Thu, + +x-b-debug Z6uygUU8dCe3t7kuXUZQ17hu+1qttHRZd2ZJCMWa882YOUsiqdV20ukSGIoOsCVM0D7o+7SW3eg4zYGDm18IUg== +x-content-type-options nsniff +ast-modified Mon, +content-md5 2\Bldm4nnJvd/9LvBMD/Lg== +dte Fri, +status 20\ +ontent-type image/png +access-control-allow-origin  +cahe-control public,max-age=31536000,immutable +access-control-allow-credentials tru\ +cntent-security-policy default-src +timing-allow-origin  +contentlength 205 +x-xss-protection \ +epires Tue, + +x-fb-debg OTfIFeJ6Vp6Q9tkVjxqdy5Qe1w3GFDEBpiL2EB9TXkJmRiYJ3PXYX4Ksm4Phq7EBSGaQfHeK0xCPSnCirMSvAQ== +x-content-type-options nsniff +ast-modified Mon, +content-md5 /K74gUMZ8HPciHDq8I4Iw== +dae Fri, +status 00 +content-ype image/png +access-control-allow-origin +cach-control public,max-age=31536000,immutable +access-control-allow-credentials tru +timing-allow-rigin * +content-length 27 +x-xs\-protection 0 +expires hu, + +x-fb-debug IuU4lC4Bf1/J727PkKcW0TupujkIMcjKxTdU\tl+ZifCT6heilSF4VNJlUPJAyqFTbjLHlIdvrkuT6mdoOjJsQ== +x-c\ntent-type-options nosniff +last-modified on, +contentmd5 rYzdy/CRrpzpKKyDMTB5Sw== +date Fi, +tatus 200 +content-type image/pg +access-control-allow-orign * +cache-control public,max-age=31536000,immutble +access-control-allow-credenials true +content-security-policy efault-src +timng-allow-origin * +content-length 268 +x-xss-protction 0 +expires at, + +date Fi, +lst-modified Tue, +status 20 +content-tye image/jpeg +access-control-allow-origin  +cache-conrol max-age=1209600, +timing-allow-origin  +contet-length 21105 +expires Mn, + +date Fr, +last-modif\ed Tue, +status 20 +ontent-type image/jpeg +access-control-allow-origin  +cache\control max-age=1209600, +timing-allow-origin +ontent-length 22687 +expires Fri + +date \ri, +last-modifid Mon, +status 20 +ontent-type image/jpeg +access-control-allow-origin +cachecontrol max-age=1209600, +timing-allow-origin  +content-ength 30382 +expires Fr\, + +date Fri +ast-modified Thu, +status 20 +contnt-type image/jpeg +access-control-allow-origin  +cache-cntrol max-age=1209600, +timing-allow-origin  +content-lngth 14176 +expires Wd, + +date Fr, +lastmodified Thu, +status 20 +conten-type image/jpeg +access-control-allow-origin  +cache-cntrol max-age=1209600, +timing-allow-origin  +cotent-length 15152 +expires Sun + +date Fr, +las-modified Sat, +status 00 +conten-type image/jpeg +access-control-allow-origin  +cachecontrol max-age=1209600, +timing-allow-origin +contet-length 19757 +expires ed, + +date Fri +last-\odified Fri, +status 20 +c\ntent-type image/jpeg +access-control-allow-origin  +ache-control max-age=1209600, +timing-allow-origin  +conent-length 18041 +expires ri, + +date Fri +last-modifie Thu, +status 20 +contnt-type image/jpeg +access-control-allow-origin  +cache-cotrol max-age=1209600, +timing-allow-origin  +contnt-length 17665 +expires Tu, + +date Fr, +lat-modified Wed, +status 00 +ontent-type image/jpeg +access-control-allow-origin \ +cachecontrol max-age=1209600, +timing-allow-origin  +conent-length 16062 +expires Mo, + +date Fr, +lat-modified Sun, +status 20 +contenttype image/jpeg +access-control-allow-origin  +cace-control max-age=1209600, +timing-allow-origin \ +content-len\th 23087 +expires \on, + +date Fi, +lat-modified Tue, +status 20 +cntent-type image/jpeg +access-control-allow-origin  +cache-cotrol max-age=1209600, +timing-allow-origin  +content-lengt\ 31705 +expires Wd, + +date ri, +last-modifid Wed, +status 00 +content-tye image/jpeg +access-control-allow-origin +cache-contro max-age=1209600, +timing-allow-origin \ +cotent-length 18120 +expires Wd, + +date Fr, +last-mdified Mon, +status 00 +content-tye image/jpeg +access-control-allow-origin  +cache\control max-age=1209600, +timing-allow-origin +content-len\th 14094 +expires \ue, + +date Fr, +last-modifed Tue, +status 20 +ontent-type image/jpeg +access-control-allow-origin  +cache-contol max-age=1209600, +timing-allow-origin  +conten-length 31910 +expires Te, + +date Fri +last-modifie Mon, +status 20 +content-tye image/jpeg +access-control-allow-origin  +cach\-control max-age=1209600, +timing-allow-origin +ontent-length 7407 +expires We, + +date Fri +last-modfied Sat, +status 2\0 +cntent-type image/jpeg +access-control-allow-origin  +cache-ontrol max-age=1209600, +timing-allow-origin  +cntent-length 10103 +expires Wd, + +date \ri, +las-modified Thu, +status 00 +c\ntent-type image/jpeg +access-control-allow-origin  +cache-contro max-age=1209600, +timing-allow-origin +\ontent-length 9731 +expires Tu, + +date ri, +la\t-modified Wed, +status 20 +content-typ\ image/jpeg +access-control-allow-origin  +c\che-control max-age=1209600, +timing-allow-origin \ +contentlength 6982 +expires Wd, + +date Fr, +last-odified Thu, +status 00 +conten\-type image/jpeg +access-control-allow-origin  +cche-control max-age=1209600, +timing-allow-origin  +conte\t-length 18906 +expires hu, + +date ri, +lst-modified Fri, +status 00 +content\type image/jpeg +access-control-allow-origin  +cche-control max-age=1209600, +timing-allow-origin  +conten-length 14295 +expires ri, + +date \ri, +lat-modified Mon, +status 20 +cntent-type image/jpeg +access-control-allow-origin  +cache-cntrol max-age=1209600, +timing-allow-origin  +contet-length 9144 +expires Wd, + +x-fb-debug UclWhesg0zkbSvbdWdzbSgwvuxwHhdYdv1KxJXSGpdTe+b+kLG/P3r7cc5cQW1GDH2P0Q0PE2NjcKNRtACwMw== +x-content-tpe-options nosniff +last-modified Mon +content-md\ Suq9hPdRy1h3AUHG8A+u6g== +date ri, +sttus 200 +content-type imag/png +acces-control-allow-origin * +cache-control public,ax-age=31536000,immutable +access-contol-allow-credentials true +timing-allow-origin  +content-lengt\ 6898 +x-xss-protection  +ex\ires Fri, + +xfb-debug abP3zeasO2mLS8i9zOhtYhotcrbh1TGId94OFJlc8p04m4ySyehIHPFAt2npARTREGt1qY6t9JUIhREEid9qWQ== +x-content-type-options nosnif +last-moified Mon, +content-md5 qbS3J+l81+akTde3J73Hw== +ate Fri, +status 2\0 +content-tpe image/png +access-control-allow-origin  +cache-ontrol public,max-age=31536000,immutable +access-control-allow-credentials rue +content-security-poicy default-src +timing-allow-origin \ +contet-length 2108 +x-xss-protection  +exires Mon, + +x-b-debug lgquSVMBTVSGrB+a6JPVy0foXmN38vYoIF3631Kl53msBWBXp74UHLdYdGhvRLweaxBXEPWUqhmcb10d+GM3XA== +x-content-type-options n\sniff +last-moified Mon, +content-md5 aHgJp6IEm6tq2AoAm23tw== +ate Fri, +status 2\0 +content-tye image/png +access-control-allow-origin  +cache-cotrol public,max-age=31536000,immutable +access-control-allow-credentials rue +content-securiy-policy default-src +timing-allow-origin +content-legth 851 +x-xss-protection \ +expire Thu, + +content-scurity-policy default-src +content-encoding r +x-content-type-optios nosniff +content-md5 Ig49yWUVm92l2Ht21aO6Q== +statu 200 +content-length 7\1 +x-xss-potection 0 +x-fb-debug i01I8lFh4FinQMpRDovii+lwSptMoKN4Xt3aP41os020+jBkBcOECNAtFfjv2P85TTlMTnM3BZDlQua1wa39g== +last-modifed Mon, +date Fri +vry Accept-Encoding +content-type text/cs; +access-control-allow-oigin * +cache-control pub\ic,max-age=31536000,immutable +access-control-llow-credentials true +timing-allow-origin  +expres Fri, + +contentsecurity-policy default-src +content-encoding r +-content-type-options nosniff +status 00 +ary Origin +vary Accep-Encoding +x-xss-protect\on 0 +pragma o-cache +x-f-debug dbB2IkIrVRUAfS1PVGsbZF4w3zGCiIvWefwaVnzd3c6v4HzmnqkqOwCJdpNBhRH131pDszBP07t5zePbfprY1Q== +x-frame-options DEN +dae Fri, +expect-ct mx-age=10, +strict-transport-\ecurity max-age=15552000; +access-control-allow-methods PTIONS +contet-type application/x-javascript; +access-control-allow-origin https://www.facebook.co +access-control-expose-haders X-FB-Debug, +cache-control privte, +access-control-allowcredentials true +expires Sat + +content-security-policy default-sr +content-encodin br +x-content-type-options osniff +con\ent-md5 m0y3PkO3SpJQhvvw6CdJ1w== +status 20 +ontent-length 4065 +x-xss-protection  +x-fb-deug wimV44qs1JLjex37mZjNXwEiFP2C6tTEz/Bzm/9N/uk4jLhGBsvpRN4kIhEXPKEhhT1jqST3fu7CCDHnaruarQ== +last-modified on, +dte Fri, +vary AcceptEncoding +content-typ application/x-javascript; +access-control-allow-origin  +ache-control public,max-age=31536000,immutable +access-control-allow-credentials tue +timin-allow-origin * +expires Fri\ + +content-security-policy d\fault-src +content-encodig br +x-content-type-options noniff +contet-md5 AVo/NKwEE+aE6kd14kT4LA== +status 00 +ontent-length 2084 +x-xss-protection  +x-fbdebug pikQ5ppTqIictrwIvdl2Qk6xbFcE9bPc4Z5ohK/rfc4qKnwbgweERUZlqfSb5S3wb4P6zUymCloWDaFoSveX8g== +last-modified Mo, +dae Fri, +vary AcceptEncoding +ontent-type application/x-javascript; +access-control-allow-origin  +cache-contrl public,max-age=31536000,immutable +access-control-allow-credentials tue +timing-alow-origin * +expires Thu + +content-security-policy default-sr +contentencoding br +x-content-type-options nosnff +content-md fkU/RbZeOahtbH6TD3swSg== +status 20 +content-ength 726 +x-xss-protection \ +x-fb-\ebug vlySAYwP80vWQwCf3dAcUg1d8vckh+ib+/bnK8Kn79SGDBsoWWEtedSpacOaHyww0V7/Le8GBCmruXAqaTtIXA== +last-modified Mon +dae Fri, +vary Accept-Encodig +contenttype application/x-javascript; +access-control-allow-origin  +cahe-control public,max-age=31536000,immutable +access-control-allow-credentials tre +iming-allow-origin * +expires Fr, + +content-security-policy defaut-src +cntent-encoding br +x-content-type-options nosnff +satus 200 +vary Origi +vay Accept-Encoding +x-xss-protection +prag\a no-cache +x-fb-debug 9SMxJJWUS/mH7v8aS5amn3RGUmMcHgxT7/GhUohYTS26mbSGoNnIaV22B91jjWh4XqlbW5dSpQVGxUqHF50lw== +x-fra\e-options DENY +date Fi, +expect-c max-age=10, +strict-transport-security max-ae=15552000; +access-controlallow-methods OPTIONS +content-type applicationx-javascript; +access-control-allw-origin https://www.facebook.com +access-control-expose-headers -FB-Debug, +cachecontrol private, +access-control-allow-credentials tue +exires Sat, + +content-security-p\licy frame-ancestors +content-security-policy defalt-src +content-ncoding br +x-content-type-options n\sniff +tatus 200 +vary rigin +vry Accept-Encoding +x-xss-protection  +pragm no-cache +x-fb-debug 0gVna42ILP7RDgk+shTzSEkzfbJTXu8h6tHuGl2h2gjzEuNtfTdI3ldafd/mVhV0Ysj7BcVNyMbPXOIi83oq\A== +dat Fri, +expect-ct max-ag=10, +strict-trasport-security max-age=15552000; +access-control-allow-methods OPTINS +cotent-type text/html; +access-control-allow-origin https://www.facebok.com +access-control-expose-eaders X-FB-Debug, +cache-control pivate, +ccess-control-allow-credentials true +set-cookie oNcn=gpojSOS; +expirs Sat, + +content-security-poicy default-src +content-encoding b +x-content-typ\-options nosniff +content-md5 j8T0XBmPlo08jOXtT3MEw== +staus 200 +content-length 98 +x-xss-prtection 0 +x-fb-debug f4/9IxVq4HZYZ8dV9P6xeLypQNS2Ex/kNF3NoX9D8Z0nshFfF6M7lqeabFqQD5b50R/Iekbf9xeyr56aEUi7g== +last-modif\ed Mon, +date Fr, +var Accept-Encoding +content-type txt/css; +access-contrl-allow-origin * +cache-control public,max-age=3153600,immutable +\ccess-control-allow-credentials true +timing-allow-origin  +epires Sat, + +ontent-security-policy default-src +content-encoding b +x-content-typ-options nosniff +content-md5 b5UN/sgd315IdDwXDUejw== +stats 200 +content-length 795 +x-xssprotection 0 +x-fb-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== +last-modifid Mon, +date Fi, +vay Accept-Encoding +content-type ext/css; +accesscontrol-allow-origin * +cache-control public,m\x-age=31536000,immutable +access-control-alow-credentials true +timing-allow-origin  +expies Sat, + +cotent-security-policy default-src +content-encoding r +x-contenttype-options nosniff +content-md5 35sn/pluRe+kZxjcR6Ibw== +stat\s 200 +content-length \375 +x-xss-proection 0 +x-fb-debug zEkvlyy\DCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== +ast-modified Mon, +date Fi, +vry Accept-Encoding +content-type \ext/css; +access-control-allow-origi * +cache-control ublic,max-age=31536000,immutable +access-controlallow-credentials true +timing-allow-origin  +expres Fri, + +content-se\urity-policy default-src +content-encoding b\ +x-content-type-ptions nosniff +content-md5 i4f5LnfewjEpPYLvEw9sg== +stats 200 +content-length 375 +x-xss-protec\ion 0 +x-fb-debug HFxhYohULlb8E3s/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== +last-moified Mon, +date ri, +vay Accept-Encoding +content-type text\css; +access-control-allow-or\gin * +cache-control public,mx-age=31536000,immutable +access-control-allow-credentias true +timing-allow-origin  +expire Fri, + +contnt-security-policy default-src +content-encoding r +x-content-tpe-options nosniff +content-md5 fd9ZgENjjqTO/InJ/zr9A== +stats 200 +content-length 8878 +xxss-protection 0 +x-fb-debug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdDz2OGqubSmtwQo7C65Qw== +last-odified Mon, +date Fri +var Accept-Encoding +content-type text/cs\; +accss-control-allow-origin * +cache-control public,ax-age=31536000,immutable +access-c\ntrol-allow-credentials true +timing-allow-origin \ +epires Fri, + +content-security-polic default-src +content-encoding b +x-co\tent-type-options nosniff +content-md5 fqrTaPewZp5VEjPn8eGRg== +s\atus 200 +content-length 124 +x-xs-protection 0 +x-fb-debug ffAA1BPrLNMci6PPgAnjdBQxr23MFKOlcYD7Hd8+QaYdQzt3RDz7rwZWLtl/ff4vvIJcOQKkgerVJHkxxcE+A== +last-modifid Mon, +date Fi, +var Accept-Encoding +content-type text/ss; +access-control-alloworigin * +cache-control public,max-age=31536000,immutble +access-control-allow-creentials true +timing-allow-origin +expire Fri, + +content-securitypolicy default-src +content-encoding \r +x-contet-type-options nosniff +content-md5 SqewXybJVo1v4gA0JLGBQ== +statu\ 200 +content-length \38 +x-xss-protecion 0 +x-fb-debug KC/Mv8BSpLzgKNnb1cJgXL8dPdim8GGQRbNyFfUpswJaoxnMQeHpRlZwFceTKDlmlF+3I1PWGIgOE9iug58Qw== +lst-modified Mon, +date Fri +var Accept-Encoding +content-type text/cs; +access-control-allw-origin * +cache-control public,max-ge=31536000,immutable +access-control-allow-credentals true +timing-allow-origin  +expir\s Fri, + +content-secur\ty-policy default-src +content-encoding b +x-content-typ-options nosniff +content-md5 sZNRmnBid8CsjRTjIEFyg== +stats 200 +content-length 674 +x-xss-protec\ion 0 +x-fb-debug a155LmrZwBw3/aMF42emoWHIgc/3y8J6ALVXYdQ7H8vUuz1/i1dvM0G4i1MutN2PnGhQoHaxJ36iCIkr5peiQ== +lastmodified Mon, +date Fri +vay Accept-Encoding +content-type text/c\s; +\ccess-control-allow-origin * +cache-control public,max-ae=31536000,immutable +access-control-allow-credenials true +timing-allow-origin  +expire\ Thu, + +content-security-poli\y default-src +content-encoding r +x-contenttype-options nosniff +content-md5 mgTL4W9gmblvl6wXzZodA== +tatus 200 +content-length 601 +x-xss-protectin 0 +x-fb-debug FkXkGb3\nCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== +last-moified Mon, +date Fri\ +va\y Accept-Encoding +content-type tex\/css; +access-control-llow-origin * +cache-control public,max-age31536000,immutable +access-control-allow-crdentials true +timing-allow-origin  +expies Thu, + +conent-security-policy default-src +content-encoding r +x-content-tpe-options nosniff +content-md5 FWVLk47e/1NAOLzKy9mZQ== +stats 200 +content-length 96\8 +x-xss-prtection 0 +x-fb-debug abRR44oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== +last-modifed Mon, +date Fr, +ary Accept-Encoding +content-type txt/css; +accesscontrol-allow-origin * +cache-control public,max-age=3153600,immutable +a\cess-control-allow-credentials true +timing-allow-origin  +e\pires Fri, + +content-securty-policy default-src +content-encoding \r +x-content-tpe-options nosniff +content-md5 CdqtZjHkFWKj84Z+4+xI\g== +tatus 200 +content-length 277 +x-xss-protectio 0 +x-fb-debug 4qp1PxAGHtbHXi9rxxdHyNY/8PMkrRxemDwVRlBtTf5veUQdm+NT/ANeAtBnkrqVeEa/YAFwjR2rnGTYHLnHw== +\ast-modified Mon, +date Fi, +var Accept-Encoding +content-type text/cs; +access-control-allow-orign * +cache-control public,max-\ge=31536000,immutable +access-control-allw-credentials true +timing-allow-origin  +expies Fri, + +cntent-security-policy default-src +content-encoding r +x-content-type-optios nosniff +content-md5 9+8et0zXoZnznee+5dOLg== +tatus 200 +content-length 30\1 +x-xss-\rotection 0 +x-fb-debug 1W0e0\xqlhBqUfhhsZScKW+48ERX/MbDzRx1CrLGyoB3PQR87HvCU1tXurEDpq9MxYtpZtH8nZHhZUliTWX9/Q== +last-modifid Mon, +date ri, +vay Accept-Encoding +content-type application/x-jaascript; +access-control-alow-origin * +cache-control public,max-age=31536000,immutabl +accss-control-allow-credentials true +timing-allow-origin +expies Fri, + +content-securit-policy default-src +content-encoding r +x-content-type-opions nosniff +content-md5 U89oUM0w4qxD5VnRrMHfQ== +satus 200 +content-length 170\7 +x-xss-protecton 0 +x-fb-debug 3hIM02GLUEVYmBtXw7ckOZdTFjZlDVy71lqb79ycltwQUOiGU27m0HJTjseI5O9aQgJhz0cyZFD440wNkJ1hg== +last-modfied Mon, +date Fr, +var Accept-Encoding +content-type applicatin/x-javascript; +\ccess-control-allow-origin * +cache-control public,max-age=31536000,immutale +access-contr\l-allow-credentials true +timing-allow-origin +xpires Fri, + +content-secrity-policy default-src +content-encoding \r +xcontent-type-options nosniff +content-md5 63uZSWh0PAGVT5ELQlmDA== +stat\s 200 +content-length \308 +x-xss-protectio 0 +x-fb-debug RqCyrQLJGw/D0xpqWnbzLkRPUbfwsbwfo84PPL8UED96IA/gBJzDEf6yj2+HHIdQp4xPXpSRuNZDI2H/CvkxQ== +ast-modified Mon, +date Fri +vay Accept-Encoding +content-type application/x-jaascript; +acces-control-allow-origin * +cache-control publi,max-age=31536000,immutable +access-contro-allow-credentials true +timing-allow-origin  +epires Fri, + +x-\b-debug ARChj0NUebWygPU0nCoGIW//E1naOtcmUw17w+RMEyLdGcIfa62y4DtKGsmphLZFvp0ao5tg1e1UH82enSyOww== +x-content-type-options nosnif\ +last-odified Mon, +content-md5 QfBfkVWIvQAgYByciJpJw== +ate Fri, +status 20 +content-ype image/png +access-control-allow-origin  +cache-ontrol public,max-age=31536000,immutable +access-control-allow-credentials tru +contentsecurity-policy default-src +timing-allow-origin \ +content-lengt\ 1176 +x-xss-protection  +expres Mon, + +x-fbdebug ivI86tTrFwX9U5sLjaxj7fvac7JDJwsEi9Eja2Z4Oy4C7nmZIF2IkB8o8XqfevLcTTOzzEMMwFDwypn5k6bIXw== +x-content-type-options nosiff +last-modfied Mon, +content-md5 IHh5jFrVTE8LJv\HfLuDPA== +ate Fri, +status 20 +content-\ype image/png +access-control-allow-origin +cac\e-control public,max-age=31536000,immutable +access-control-allow-credentials tr\e +content-security-plicy default-src +timing-allow-origin  +content-lenth 556 +x-xss-protection  +exp\res Thu, + +-fb-debug ZwUiJgvchdZhpDH+73u0Fw+G6hyUoqJHmUotkSBkDnzNjGiL0mAn7qTX5J46rH70Lo1AsDbhfk3JwbWmWTwV5w== +x-content-type-options osniff +las\-modified Mon, +content-md5 GKqP6Z59i1aSEGcB57sOw== +dat Fri, +status 20 +contet-type image/png +access-control-allow-origin  +cach\-control public,max-age=31536000,immutable +access-control-allow-credentials tue +timing-allow\origin * +content-length 548 +x-xss-protecion 0 +expires Fr\, + +date Fi, +last-mo\ified Tue, +status 20 +content-ype image/jpeg +access-control-allow-origin  +cachecontrol max-age=1209600, +timing-allow-origin \ +content-ength 59308 +expires Wed\ + +content-security-policy efault-src +contentencoding br +x-content-type-options nosnff +staus 200 +vary Oigin +var Accept-Encoding +x-xss-protection  +prama no-cache +x-fb-debug bMcE+8Z/jUikxlpX0iz9TFqnf5QVShzAQoprrbxgHYC5ZGhZDIINLMlIeZEY6QwKjH1oEqfOzC36WG4mjuX7Q== +x-frame-optons DENY +date Fr, +expectct max-age=10, +strict-transport-security ma-age=15552000; +acces-control-allow-methods OPTIONS +content-type text/javascrip; +access-control-allw-origin https://www.facebook.com +access-control-expose-headers X-FB-ebug, +cach-control private, +access-control-allow-credentials tue +exires Sat, + +-fb-debug WVz6Y2MrSiV1cDtEzzSX+eY8rw7ZosNRZER/iJKgrqXplP4gjrRV9RmMxu/RCpkyHjYn9jGkggKJ6AKwOG63Iw== +x-content-type-options nosnif +last-modif\ed Mon, +content-md5 8IPH6Tlp2EPXzjh2Wtk0w== +dae Fri, +status 00 +contenttype image/png +access-control-allow-origin  +ache-control public,max-age=31536000,immutable +access-control-allow-credentials tre +content-security-poicy default-src +timing-allow-origin +conten-length 4844 +x-xss-protection  +xpires Thu, + +dte Fri, +last-modified ue, +satus 200 +content-type image/peg +ccess-control-allow-origin * +cache-control max-age=109600, +iming-allow-origin * +content-length 148 +epires Wed, + +content-secur\ty-policy default-src +x-content-type-options nsniff +satus 200 +x-fb-config-version-olb-prod 22 +var Origin +content-length 904 +x-xss-p\otection 0 +pragma p\blic +x-fb-debg HunPYuqy69WzGGSQH0RYo+XndQiTMqACderbXYV/Hd6VXq0oSQhZBlV1fY0tbHmnCKZPaQ5ffj9xfVEyPXA9aw== +x-frame-options ENY +dat\ Fri, +expect-ct max-age=0, +strict-transport-secuity max-age=31536000; +content-type image/pg +accss-control-allow-origin * +access-control-expose-headers XFB-Debug, +cache-con\rol public, +access-control-allow-credentials rue +timing-all\w-origin * +access-control-allow-method OTIONS +expirs Tue, + +conten-security-policy default-src +content-encoding r +x-content-ype-options nosniff +content-md5 YZP/0rJpw2vE+OCDm8w5Q== +sttus 200 +content-length 203 +x-xss\protection 0 +x-fb-debug NNF+j6+XOFrfdhzYpIcXN8eoCwGFoh5LQhEtfDyAVBLtSL4n56yb+kUyPAOLL4HokctaJ9bHKv6JsDRAvFzpQ== +last-mdified Mon, +date Fri +ary Accept-Encoding +content-type textcss; +access-control\allow-origin * +cache-control public,max-age=31536000,immutabe +access-control-all\w-credentials true +timing-allow-origin \ +expies Fri, + +content-ecurity-policy default-src +content-encoding r +x-content-type-option nosniff +content-md5 2nocW+0AmN98W\9vj2rtAA== +staus 200 +content-length 1\55 +x-xs-protection 0 +x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDeOTcN21RDx5hRnvNFGykEOE4GYKgA== +last-moified Mon, +date ri, +ary Accept-Encoding +content-type tet/css; +accss-control-allow-origin * +cache-control public,max-age=31536000,immuable +access-control-allow-credetials true +timing-allow-origin  +expire Fri, + +cntent-security-policy default-src +content-encoding r +x-content\type-options nosniff +content-md5 /4SheZbR98CwCYd4h3cAg== +\tatus 200 +content-length 217 +x-xss-prtection 0 +x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhX\Xs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== +las-modified Mon, +date Fi, +vay Accept-Encoding +content-type txt/css; +access-contol-allow-origin * +cache-control public,max-age=31536000,immutabl +access-control-allow-credentils true +timing-allow-origin \ +exires Fri, + +x-b-debug /ENpputLKNa/2mZiu6JTE+h6mzrx8TmybF+DsyGWGtA7Pr1/Nz9w87TOZ/bXeGIN/nSpsf8Vp73Vj/UbdMJwow== +x-content-type-options nosni\f +ast-modified Mon, +content-md5 5JlE2ZDOPpF6hew83LXyw== +ate Fri, +status 20 +cotent-type image/png +access-control-allow-origin +cache-contro public,max-age=31536000,immutable +access-control-allow-credentials tr\e +timing-allow-origi\ * +content-length 66\5 +x-xss-protectio 0 +expires Fr\, + +x-fb-debug Os2JJOoXBZqJj78nRJJPGsd36A2+yIhTGyue3jZakVmvYckOoqMBatPDrEtiquf+QLqhyFhY9tAUaiEU+rMAw== +-content-type-options nosniff +last-modified on, +cotent-md5 C05mvm8+C03B8R2M8wXU6g== +date ri, +sttus 200 +content-type image/ng +access-control-allow-rigin * +cache-control publi\,max-age=31536000,immutable +access-contro\-allow-credentials true +content-security-policy \efault-src +timing-allw-origin * +content-length 02 +x-xss-pro\ection 0 +expires Sa, + +date Fr, +last-modifed Wed, +status 20 +content-tye image/jpeg +access-control-allow-origin +cache-contol max-age=1209600, +timing-allow-origin \ +cntent-length 1196 +expires Wd, + +date ri, +last-modifed Thu, +status 20 +conent-type image/jpeg +access-control-allow-origin \ +cache-cntrol max-age=1209600, +timing-allow-origin  +content-lngth 1329 +expires T\u, + +date Fi, +last-odified Thu, +status 20 +contet-type image/jpeg +access-control-allow-origin  +cac\e-control max-age=1209600, +timing-allow-origin +content-legth 1446 +expires un, + +date \ri, +last-modifid Mon, +status 20 +contenttype image/jpeg +access-control-allow-origin  +cache-contrl max-age=1209600, +timing-allow-origin  +cotent-length 5176 +expires We, + +date Fri +last-odified Thu, +status 20 +c\ntent-type image/jpeg +access-control-allow-origin  +cache-cotrol max-age=1209600, +timing-allow-origin  +content-legth 49345 +expires Wd, + +date Fri +lastmodified Tue, +status 20 +contenttype image/jpeg +access-control-allow-origin +cache-cotrol max-age=1209600, +timing-allow-origin \ +ontent-length 3742 +expires ed, + +date Fi, +l\st-modified Thu, +status 00 +content-tye image/jpeg +access-control-allow-origin  +c\che-control max-age=1209600, +timing-allow-origin  +ontent-length 29919 +expires We\, + +date Fri +last-mdified Sun, +status 20 +contnt-type image/jpeg +access-control-allow-origin \ +cache-\ontrol max-age=1209600, +x-fb-edge-debug qV2gVRRpGEnTN92wP3bEefpIlNqOBDmaYDo0o9w9T9AtQphKbXLleYJZI_vyWjKt4bko2I1lo8TCezyPLIohA +tiing-allow-origin * +content-length 211\5 +expirs Fri, + +dae Fri, +last-modified Th, +tatus 200 +content-type image/peg +access-ontrol-allow-origin * +cache-control max-age=129600, +timing-alow-origin * +content-length 892 +epires Thu, + +dae Fri, +last-modified Thu +tatus 200 +content-type image/jpe +access-control-allow-orign * +cache-control max-age=1209600\ +timing-allw-origin * +content-length 1272 +expirs Thu, + +dte Fri, +last-modified on, +stats 200 +content-type image/jpg +access-conrol-allow-origin * +cache-control max-age1209600, +tiing-allow-origin * +content-length 1189 +exires Thu, + +dat Fri, +last-modified We, +staus 200 +content-type imge/jpeg +access-contro-allow-origin * +cache-control maxage=1209600, +tiing-allow-origin * +content-length 104 +expres Wed, + +dat Fri, +last-modified Thu +sta\us 200 +content-type image/j\eg +acess-control-allow-origin * +cache-control max-age=120600, +timing-allo-origin * +content-length 111 +expirs Thu, + +dae Fri, +last-modified Tu, +sttus 200 +content-type imagejpeg +access-control-allw-origin * +cache-control max-age=12\9600, +timing-allow-origi * +content-length 117 +expres Sat, + +dat Fri, +last-modified ri, +staus 200 +content-type imag/jpeg +access-control-allow-orgin * +cache-control ax-age=1209600, +timing-allow-origi * +content-length 134 +expir\s Wed, + +ate Fri, +last-modified Su, +satus 200 +content-type imae/jpeg +access\control-allow-origin * +cache-control max-age=\209600, +timing-allo-origin * +content-length 248 +expir\s Wed, + +dat Fri, +last-modified Th, +stats 200 +content-type image/peg +access-control-allo-origin * +cache-control max-age=120600, +timing-alow-origin * +content-length 173 +xpires Thu, + +dte Fri, +last-modified \hu, +statu 200 +content-type image/jpg +access-control-allow-ori\in * +cache-control max-age=120600, +timingallow-origin * +content-length \152 +expi\es Tue, + +dat Fri, +last-modified Tu\, +s\atus 200 +content-type image/jpe +acess-control-allow-origin * +cache-control max-age1209600, +iming-allow-origin * +content-length 106 +xpires Thu, + +dat Fri, +last-modified ue, +tatus 200 +content-type iage/jpeg +accesscontrol-allow-origin * +cache-control maxage=1209600, +timing-al\ow-origin * +content-length 111 +expire Wed, + +da\e Fri, +last-modified Fi, +staus 200 +content-type imge/jpeg +access-control-allow-orgin * +cache-control max-age=120960, +timing-allw-origin * +content-length 150 +expres Wed, + +x-fb-deug fVIW99YerkUzwlc7SROvz5XsM1XbNmRMGijJJ13tYsvnMaY84LnQ1ZA7+apDieuNVB46ZnUnVHMhZ76uwLgrhg== +x-content-type-options no\niff +last-modiied Mon, +content-md5 RVFApVCDqLOU4DKrHxHcg== +da\e Fri, +status 00 +conent-type image/png +access-control-allow-origin  +ache-control public,max-age=31536000,immutable +access-control-allow-credentials tru +content-security-poicy default-src +timing-allow-origin \ +c\ntent-length 281 +x-xss-protection  +epires Sat, + +content-scurity-policy default-src +content-encoding b +x-content-typeoptions nosniff +status 20 +vry Origin +vary Accept-Enoding +x-xss-proection 0 +pragma nocache +x-fb-debu\ +R3NCXIBasGiGQdX/uKvTgwIShwCbAlh0vnBu05LFeHCTJhBA1YqB3QzG3LxYcUEHJJqVaY58p02qO1yVeVxsw== +x-frame-options DEN +d\te Fri, +expect-ct \ax-age=10, +strict-trnsport-security max-age=15552000; +access-control-allow-methods OPTION\ +content-t\pe application/x-javascript; +access-control-allow-origin https://www.faebook.com +access-control-exose-headers X-FB-Debug, +cache-control privte, +access-control-allow-credenials true +expires at, + +content-security-policy default-sr +cont\nt-encoding br +x-content-type-options nosni\f +ontent-md5 bV/DKwx1FIfSczGr8wmjTA== +status 20 +content-lengt\ 19285 +x-xss-protection  +-fb-debug fbuGUlmmttu8N2glWUmqgrF9qAJghz+TR9dvFY1UxQUeWfBVTg5g0EKXcY7zJhKiVlgAm+yxP2X5A/Dqe3G+EA== +last-modified Mon\ +dte Fri, +vary Accpt-Encoding +content-tye application/x-javascript; +access-control-allow-origin  +cahe-control public,max-age=31536000,immutable +access-control-allow-credentials tue +timing-allow-oriin * +expires \ri, + +content-security-policy efault-src +content-encodin br +x-content-type-options osniff +ontent-md5 OBHD6lmfEEisuhcWKyESIw== +status \00 +content-ength 19037 +x-xss-protection  +x-fb-d\bug drj2Ft2eAD7NQ6lmjscA+rt9I3/b1iHnGgaxytUir51DI4ILBqGwUA2paJjEA2pvOVn4gRvl1zY6CgGTl4fLXg== +last-modified Mo\, +dte Fri, +vary Accept-Encodin +cotent-type application/x-javascript; +access-control-allow-origin \ +cache-contro public,max-age=31536000,immutable +access-control-allow-credentials rue +timing-allow-origi * +expires Fi, + +content-security-policy dfault-src +conten\-encoding br +x-content-type-options nosn\ff +conent-md5 6O43UwtSHtYxrHYf4JWpTw== +status 20 +content-legth 272 +x-xss-protection  +x-f-debug FGR0zi+JxHm7My4h2/7+wcFU4LP1hHO3PFzJKhZjk6dDiTLxykDa6JPsIDNvXtlWfTE9qPu1r1ogOTgfVaLitA== +last-modified M\n, +d\te Fri, +vary ccept-Encoding +cntent-type application/x-javascript; +access-control-allow-origin +cache-cntrol public,max-age=31536000,immutable +access-control-allow-credentials tue +tming-allow-origin * +expires Fi, + +content-security-policy efault-src +contnt-encoding br +x-content-type-options noniff +content-md\ LPtJbeThMXUens/Nm5VZeQ== +status 2\0 +cntent-length 39529 +x-xss-protection  +x-fb-\ebug bAWClI/0uVFeLXq6GIy1TXonNhgjjE+WwKoSZsSxQkEIlL665l8U/wmyKTGtTkrbwVUzymlgRhgHP6l/sZ89TA== +last-modified Mo, +da\e Fri, +vary Accept-ncoding +conent-type application/x-javascript; +access-control-allow-origin  +cahe-control public,max-age=31536000,immutable +access-control-allow-credentials t\ue +timing-allow\origin * +expires Fr, + +content-security-policy defult-src +contet-encoding br +x-content-type-options nosiff +contnt-md5 UTnFKQ/1xPYzMBTzlDFnQg== +status 20\ +content-ength 36628 +x-xss-protection +x-fb-d\bug XwHAYpS/JLC309mN4e1ZrMvAYSnhufav6nr5ltJ6ScnYGAS1huRaIMhFGS+2BwCQ5lyNrVZt8RfNfy5Y2CANQQ== +last-modified on, +dat Fri, +vary Accpt-Encoding +content-tpe application/x-javascript; +access-control-allow-origin  +cahe-control public,max-age=31536000,immutable +access-control-allow-credentials tru +timing-allow-origi * +expires Fri + +content-security-policy default-rc +conten-encoding br +x-content-type-options nosn\ff +contentmd5 wvmmFr+hyE8nerTr2rsQvw== +status 00 +content-lengh 1966 +x-xss-protection  +x-fb\debug gJE2qAHfDDEx/K+nICc73NSl6EqnW0SxxQrHBCFxwsbg2kuQYyFj3MQv8EfLjq88ZmmyYHY93J9ur/WLZWopEQ== +last-modified Mo\, +ate Fri, +vary ccept-Encoding +content-tpe application/x-javascript; +access-control-allow-origin \ +cache-cotrol public,max-age=31536000,immutable +access-control-allow-credentials tru +timin-allow-origin * +expires Fi, + +content-security-policy defaultsrc +content-encod\ng br +x-content-type-options osniff +conten-md5 JZM7FEcMrVikARx2gpFWUw== +status 2\0 +conent-length 52237 +x-xss-protection  +x-fb-debg fc9A8OFybDetesoi0CY7xjJ/276Si33Xehez93z8H63FVgo7DqHWHSvfQMrcMgsM3swgR9cRo89ZLhE+FBbNJA== +last-modified Mo, +ate Fri, +vary Accept-Encding +c\ntent-type application/x-javascript; +access-control-allow-origin  +cache-cntrol public,max-age=31536000,immutable +access-control-allow-credentials tre +timing-alow-origin * +expires Fr, + +content-security-policy default-sr +content-encodin br +x-content-type-options nosnff +content-\d5 D6t0N9WzwW0eLRo10Yq6ng== +status 20 +ontent-length 33446 +x-xss-protection  +x-f-debug h6xjG80emSAtsK+erM7liY8pREgTA0vGwYMIZCjP9n6GVcN7vX0eh4t4xndGqYXPP5ih8NyaQcmTn8+dQtlhyw== +last-modified on, +dae Fri, +vary Accep\-Encoding +contnt-type application/x-javascript; +access-control-allow-origin  +ache-control public,max-age=31536000,immutable +access-control-allow-credentials tue +timing-llow-origin * +expires Fri + +content-security-policy defaultsrc +co\tent-encoding br +x-content-type-options osniff +con\ent-md5 1AoLUq6toOaueD0vKkvMAA== +status 00 +content-l\ngth 3012 +x-xss-protection  +x-fb-dbug Ow7Yvuq4jUPfhFbMusIFf7YeUZpBcdrSzO/FVUTZhqEWPOHYOJeYbHRAiBFmmPM1POVX8/Ixm2fpQtDVx2rUQA== +last-modified \on, +d\te Fri, +vary Acept-Encoding +contnt-type application/x-javascript; +access-control-allow-origin  +cache-cntrol public,max-age=31536000,immutable +access-control-allow-credentials tre +timingallow-origin * +expires Fr, + +content-security-policy defult-src +co\tent-encoding br +x-content-type-options nosnff +conten-md5 G6Y6kaO1Adi/IBwW11Elug== +status 2\0 +ontent-length 3226 +x-xss-protection  +x-\b-debug m2oB/65sg2vFQOIebkxGuLC4OOPg2oUNvCSp7WZN3OGVbF19LVyoTBPcBkvZXOoewtdThbXo+FkeBaKeAPgHSQ== +last-modified Mo, +dat Fri, +vary Accept-ncoding +contet-type application/x-javascript; +access-control-allow-origin \ +cahe-control public,max-age=31536000,immutable +access-control-allow-credentials tue +timing-allo-origin * +expires ri, + +date ri, +last\modified Tue, +status 00 +contet-type image/jpeg +access-control-allow-origin  +cachecontrol max-age=1209600, +timing-allow-origin +content-lngth 2192 +expires W\d, + +date Fr, +last-modiied Wed, +status 2\0 +cntent-type image/jpeg +access-control-allow-origin  +ache-control max-age=1209600, +timing-allow-origin +contentlength 2200 +expires \ed, + +date Fri +lat-modified Mon, +status \00 +contet-type image/jpeg +access-control-allow-origin  +cahe-control max-age=1209600, +timing-allow-origin \ +content-ength 1468 +expires Wed + +date Fr, +last-moified Wed, +status 20 +conent-type image/jpeg +access-control-allow-origin \ +cach-control max-age=1209600, +timing-allow-origin  +content-lngth 1997 +expires on, + +date ri, +\ast-modified Wed, +status \00 +contenttype image/jpeg +access-control-allow-origin \ +cach\-control max-age=1209600, +timing-allow-origin +content-lngth 2317 +expires We\, + +date Fr, +last-modifid Tue, +status 20 +conten-type image/jpeg +access-control-allow-origin +cace-control max-age=1209600, +timing-allow-origin +content\length 2397 +expires We, + +content-security-policy default-sc +content-ecoding br +x-content-type-options osniff +stat\s 200 +vary rigin +ary Accept-Encoding +x-xss-protection  +pr\gma no-cache +x-fb-debug Cnh9p8D5Li6w23D82Jd7RsrvreYSXZEQFE29Y9Nocj7iJPiMp31vPv/WZZdRE6AhgaCQQNb4vWYjLchZzPCug== +x-frame-otions DENY +date Fr\, +expectct max-age=10, +strict-transport-security max-age=15552000 +access-control-allow-mehods OPTIONS +content-type application/x-jaascript; +access-control-allow-origi https://www.facebook.com +access-control-expose-headers X-FB-De\ug, +cache-cotrol private, +access-control-allow-credentials tru +expire\ Sat, + +content-securitypolicy default-src +content-encoding b +x-content-\ype-options nosniff +status 20 +var Origin +vary ccept-Encoding +x-xss-potection 0 +pragma nocache +x-fb-deug 9VKUrgNslD/nY0eEgp7tZZdRCfrJEY1FkHDje4EmpYkrC2pvW1uvmwGOoPskTvUh3bW+HDmwZYMLZM7hY0gMhw== +x-frame-options DEY +dte Fri, +expect-ct max-ag\=10, +stict-transport-security max-age=15552000; +access-control-allow-methods OPTION +conten-type application/x-javascript; +access-control-allow-origin https//www.facebook.com +access-contrl-expose-headers X-FB-Debug, +cache-control \rivate, +access-control-allow-credenials true +expires \at, + +content-security-policy default-sr +content-enco\ing br +x-content-type-options nos\iff +staus 200 +vary Orign +ary Accept-Encoding +x-xss-protection +pragm no-cache +x-fb-debug aauRok2xnDPv3VQSul9bMO0nErR48gOCdAk3xg8vKkSz2RBIEQlMGcnB85NP8GVA0+i76LCjKBu6aWEFxFt9A== +x-f\ame-options DENY +date ri, +expec-ct max-age=10, +strict-transport-security max-\ge=15552000; +access-conrol-allow-methods OPTIONS +content-type application/x-javacript; +acc\ss-control-allow-origin https://www.facebook.com +access-control-expose-headers X-F\-Debug, +cac\e-control private, +access-control-allow-credentials tru +expirs Sat, + +content-se\urity-policy default-src +content-encoding r +x-content-typeoptions nosniff +status 20 +ary Origin +vary Accept-Ecoding +x-xssprotection 0 +pragma no\cache +x-fb-ebug X/tm4dxchrSM76dISf4rVU6n4RLg6R/bt79D245UBcPTSAHkuaLb0EqyaK5CGnVWVk42+bIKLymZ1XiauXdXxA== +x-frame-options DEY +dte Fri, +expect-ct max-ae=10, +strict-transport-secu\ity max-age=15552000; +access-control-allow-methods OPTONS +content-typ application/x-javascript; +access-control-allow-origin https://www.faceook.com +access-control-expose\headers X-FB-Debug, +cache-control private\ +access-control-allow-credential true +expires at, + +content-security-policy defaut-src +contnt-encoding br +x-content-type-options osniff +sttus 200 +vary \rigin +vry Accept-Encoding +x-xss-protection  +prag\a no-cache +x-fb-debug RKPmsAWm1tFpbD4Qj2ucPdH6i8nI7lLgcorK6l44F9hPN8qd4THZEgj8Tu9/JFoPrMJ2hqPlcFfLb6FgRnmFQ== +x-frame-optins DENY +date ri, +xpect-ct max-age=10, +strict-transport-security ma-age=15552000; +access-control-allow-mehods OPTIONS +content-type aplication/x-javascript; +acces-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debg, +cachecontrol private, +access-control-allow-credentials tue +exires Sat, + +contet-security-policy default-src +content-encoding b +x-content-type-option nosniff +status \00 +vay Origin +vary Accept-Encoing +xxss-protection 0 +pragma no-cach +x-fb-ebug fTUQ/Z5rF8Mye/5u0N8qOfqBaZqt9Ldfc/0uCcHi9NPvscv1XYi3DKCfdi4Imcw1RqYGlciZe3vAeg2ko3hGYQ== +x-frame-options DEY +dte Fri, +expect-ct max-ge=10, +strict-transport-securi\y max-age=15552000; +access-control-allow-methods PTIONS +co\tent-type application/x-javascript; +access-control-allow-origin https:/\www.facebook.com +access-control-expose-heders X-FB-Debug, +cache-control \rivate, +access-control-allow-crdentials true +expires at, + +content-security-policy defult-src +content-enoding br +x-content-type-options osniff +s\atus 200 +vary Oriin +va\y Accept-Encoding +x-xss-protection  +prama no-cache +x-fb-debug yqWCZpVJmrj1JJlW4rgUKR/fNz/y7Cr3i44mszTHCHWPdt+io4AcLv6pCieI\/O8xkQVVohG9fkYQ9bpkVC59Q== +x-frame-optins DENY +date ri, +expect-c max-age=10, +strict-transport-security ma-age=15552000; +accesscontrol-allow-methods OPTIONS +content-type text/javascrip; +accss-control-allow-origin https://www.facebook.com +access-control-expose-headers -FB-Debug, +cache\control private, +access-control-allow-credentials tre +epires Sat, + +x-fb-d\bug C5M3rAUlWTo+Nh2NEbNsOrcs3a7fQJAIZeaHzaZdKXUHzTmldfJBIjGjCwFkJ+V8wQrbwKiECC1XoG5whuC7Bw== +x-content-type-options nosnif +last-modifid Mon, +content-md5 bvfxjp/FtYcD+rWTyphIQ== +dte Fri, +status 20 +content-tye image/png +access-control-allow-origin \ +cche-control public,max-age=31536000,immutable +access-control-allow-credentials tru +contentsecurity-policy default-src +timing-allow-origin  +\ontent-length 7560 +x-xss-protection  +e\pires Mon, + +content-security-polcy default-src +content-encoding b\ +x-content-type-option nosniff +status 00 +ary Origin +vary Accept-Encodig +x-xss-protectin 0 +pragma no-cace +x-f-debug 3OvLOqpHlGzVdjqkOPLSQIPwJgAz9t3Aya9pJmdr3lklW5dSIp7GYNvtTO2MEjvbdLuBi0Uh7PDjkQlh5//UtQ== +x-frame-options DNY +dte Fri, +expect-ct maxage=10, +strct-transport-security max-age=15552000; +access-control-allow-methods PTIONS +content-tpe application/x-javascript; +access-control-allow-origin ht\ps://www.facebook.com +access-cotrol-expose-headers X-FB-Debug, +cache-control pri\ate, +access-controlallow-credentials true +expires Sat\ + +content-security-policy deault-src +cotent-encoding br +x-content-type-options nosnif +statu 200 +vary rigin +vry Accept-Encoding +x-xss-protection \ +prama no-cache +x-fb-debug Nuhm0tM4MJBbZq1HgFjDge2VPFh7VrJgIHzB0KNCs7RlBQQP9+DpBTJ8pmO2jbolFlG8hGTR/TgYeDYwBxNgw== +x-f\ame-options DENY +date ri, +exect-ct max-age=10, +strict-transport-security max-age15552000; +access-control-all\w-methods OPTIONS +content-type application/x-\avascript; +access-control-llow-origin https://www.facebook.com +access-control-expose-headers XFB-Debug, +cache-contro private, +access-control-allow-credentials tre +expire Sat, + +content-securty-policy default-src +content-encoding b +x-conent-type-options nosniff +status 2\0 +v\ry Origin +vary Accept-Ecoding +x-xs\-protection 0 +pragma no-cche +x-fb-ebug g2tZWi2xLSq9OlUfaXi3bbQf0RQz2MhBLGX9Wo+JK+LiZI4fQpReMcPKjtBzzEcRhj3OSzxdy8+GDxC3QADAFA== +x-frame-options DNY +d\te Fri, +expect-ct ma-age=10, +srict-transport-security max-age=15552000; +access-control-allow-methods OPIONS +content-typ\ application/x-javascript; +access-control-allow-origin https:/www.facebook.com +access-control-e\pose-headers X-FB-Debug, +cache-control pri\ate, +access-control-allow-credenials true +expires St, + +content-security-policy defalt-src +cotent-encoding br +x-content-type-options nsniff +st\tus 200 +vary Origi +vay Accept-Encoding +x-xss-protection  +ragma no-cache +x-fb-debug ivysyDdWiY3SVK7Tw7M8lIZkPvuaiDpxR+vOd42Xk2O7AqqjNP751kafm3a5xn+UHN3xOSGYtl5aKvzK7wuqQ== +x-fame-options DENY +date Fi, +ex\ect-ct max-age=10, +strict-transport-security max-age=15552000 +access-conrol-allow-methods OPTIONS +content-type applcation/x-javascript; +access-control-allow-rigin https://www.facebook.com +access-control-expose-headers X-FB\Debug, +cache-ontrol private, +access-control-allow-credentials t\ue +expres Sat, + +content-security-plicy default-src +content-encoding b\ +x-content-type-optios nosniff +status 20 +vry Origin +vary Accept-Encoing +-xss-protection 0 +pragma o-cache +x-fb-dbug hpypdhhlU0HhLkfxRLQVQ4bfjMWTleA2Zt1W7KGwGbml43hGQeijYw1s/bZdpx2hUdkK2YQZSr+DBoMZFWLeOw== +x-frame-options \ENY +dae Fri, +expect-ct max-age=1\, +strict-tra\sport-security max-age=15552000; +access-control-allow-methods OPTINS +co\tent-type application/x-javascript; +access-control-allow-origin https:/www.facebook.com +access-control-expose-heders X-FB-Debug, +cache-control privat, +access-control-allow-cedentials true +expires Sat + +content-security-policy frame-ancestos +ontent-security-policy default-src +content-encoding b +xcontent-type-options nosniff +status 00 +vay Origin +vary Accept-Encodig +x-xss-protction 0 +pragma n\-cache +x-fb-deug ltkjHYfAgLloDoLMZNYHBi8RY5+q8Ym7wNGcqhzBVzEdqbWwEa1hhMFFDvL+5p1vIgsWhtVayXlPoxb6AT6MaQ== +date ri, +expect-t max-age=10, +strict-transport-security max\age=15552000; +access-control-allow-mthods OPTIONS +content-type texthtml; +access-control-llow-origin https://www.facebook.com +access-control-expose-headers X-FBDebug, +cche-control private, +access-control-allow-credentials rue +set-cooki oNcnS=gpojSOS; +expires at, + +content-security-policy default-sc +contet-encoding br +x-content-type-options nsniff +c\ntent-md5 b5vUN/sgd315IdDwXDUejw== +status 00 +content-legth 7295 +x-xss-protection  +x-fb-ebug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== +last-modified Mon +ate Fri, +vary Accept-Encding +c\ntent-type text/css; +access-control-allow-origin  +ca\he-control public,max-age=31536000,immutable +access-control-allow-credentials rue +timing\allow-origin * +expires St, + +content-security-policy default-sc +cntent-encoding br +x-content-type-options no\niff +cntent-md5 3N5sn/pluRe+kZxjcR6Ibw== +status 20 +conent-length 9375 +x-xss-protection  +x-fb-dbug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== +last-modified Mon +dat Fri, +vary A\cept-Encoding +content-ype text/css; +access-control-allow-origin \ +cachecontrol public,max-age=31536000,immutable +access-control-allow-credentials tru +timing-allow-origi * +expires Fi, + +content-security-policy defaultsrc +content-enco\ing br +x-content-type-options nos\iff +contentmd5 i4f5LnfeTwjEpPYLvEw9sg== +status 20 +content-lngth 3785 +x-xss-protection  +x-fb-debu HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== +last-modified M\n, +ate Fri, +vary Ac\ept-Encoding +co\tent-type text/css; +access-control-allow-origin  +ache-control public,max-age=31536000,immutable +access-control-allow-credentials rue +timing-allow-origi\ * +expires Fri\ + +content-security-policy default-sc +contet-encoding br +x-content-type-options noniff +content-d5 fd9ZgENjjqTO/InJ/yzr9A== +status 20 +cont\nt-length 18878 +x-xss-protection \ +x-fbdebug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== +last-modified Mn, +dat Fri, +vary Acept-Encoding +content-ype text/css; +access-control-allow-origin  +cahe-control public,max-age=31536000,immutable +access-control-allow-credentials \rue +timing-allow-origi * +expires Fri\ + +content-security-policy deault-src +content-ncoding br +x-content-type-options nosiff +contentmd5 mgTL4W9gmblv6l6wXzZodA== +status \00 +contentlength 6081 +x-xss-protection  +x-fbdebug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== +last-modified on, +ate Fri, +vary Accept-ncoding +cntent-type text/css; +access-control-allow-origin  +ache-control public,max-age=31536000,immutable +access-control-allow-credentials tr\e +\iming-allow-origin * +expires Th, + +content-security-policy defaul-src +contentencoding br +x-content-type-options n\sniff +co\tent-md5 FWVLk47e/1NAPOLzKy9mZQ== +status 20 +conent-length 9648 +x-xss-protection  +x-fb-deug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== +last-modified Mo, +dat Fri, +vary Acept-Encoding +conte\t-type text/css; +access-control-allow-origin \ +ache-control public,max-age=31536000,immutable +access-control-allow-credentials tre +\iming-allow-origin * +expires Fi, + +date Fi, +\ast-modified Tue, +status \00 +contnt-type image/jpeg +access-control-allow-origin  +cachecontrol max-age=1209600, +timing-allow-origin +content-lengh 42942 +expires Mo, + +content-security-policy defult-src +content\encoding br +x-content-type-options osniff +statu 200 +vary rigin +va\y Accept-Encoding +x-xss-protection \ +ragma no-cache +x-fb-debug Cz64N9bQ0dvmaJ50abk2u7SSKJqHL9DM7QKR54mUh8+ILRME5kPyNoW4nG1k/p1ECvAPU1ahdC3RZ4sOrWm1A== +x-frame-op\ions DENY +date F\i, +e\pect-ct max-age=10, +strict-transport-security max-a\e=15552000; +access-ontrol-allow-methods OPTIONS +content-type text/javascript +access-control-allow-oriin https://www.facebook.com +access-control-expose-headers X-FBDebug, +cahe-control private, +access-control-allow-credentials tru +expres Sat, + +dae Fri, +last-modified Mon +\tatus 200 +content-type imae/jpeg +access-contol-allow-origin * +cache-control max-age=120900, +timingallow-origin * +content-length 173 +expire Fri, + +content-ecurity-policy default-src +content-encoding \r +x-content-type-ptions nosniff +content-md5 2noW+0AmN98W+9vj2rtAA== +satus 200 +content-length 755 +x-xs-protection 0 +x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaugK4alKpRqBm4+CZcI8lem0tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== +lastmodified Mon, +date Fr, +vay Accept-Encoding +content-type txt/css; +access-control-allw-origin * +cache-control \ublic,max-age=31536000,immutable +access-control-allow-credentils true +timing-allow-origin  +epires Fri, + +content-se\urity-policy default-src +content-encoding \r +x-cotent-type-options nosniff +content-md5 V/4SheZbR98CwCYd4h3Ag== +staus 200 +content-length 217 +x-\ss-protection 0 +x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNXeXs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== +las\-modified Mon, +date ri, +var Accept-Encoding +content-type ext/css; +access-conrol-allow-origin * +cache-control public,max-age=3153000,immutable +access-control-allow-credential\ true +timing-allow-origin +expi\es Fri, + +contentsecurity-policy default-src +content-encoding r +x-content-typeoptions nosniff +status 00 +var\ Origin +vary Acept-Encoding +x-xss-prtection 0 +pragma no-cach\ +x-fbdebug Ike4iQwO65fGXWaMw0t4UbHoC9PEkEE1XAsaJt5EfgWfAJ5fvCUjZUEjFgydEjKHyU1FsHqjEeJZxGRemCQWOg== +x-frame-options DEN +dat Fri, +expect-ct maxage=10, +strict-transpor-security max-age=15552000; +access-control-allow-methods OPTONS +content-tye text/javascript; +access-control-allow-origin https://www.facebook.co +accesscontrol-expose-headers X-FB-Debug, +cache-control privte, +access-contol-allow-credentials true +expires Sa, + +x-fb-debug ORWOg2jR1rbO1ILKezoBrqCYFwqccLo76Z0yTAXhy9kK94PkFLtEQ8IkakHHwtfpp/aE1Wu7v6o+RRvhVTCTg== +x-content-type-opions nosniff +last-modified Mo, +conten\-md5 aceXgUioFutSxdIu20vnQQ== +date Fr, +statu 200 +content-type imagepng +access-control-alloworigin * +cache-control public,ma-age=31536000,immutable +access-control-llow-credentials true +content-security-policy d\fault-src +timing-alow-origin * +content-length \57 +x-xssprotection 0 +expires hu, + +date F\i, +last-modiied Mon, +status 20 +conent-type image/jpeg +access-control-allow-origin  +cache-c\ntrol max-age=1209600, +timing-allow-origin  +c\ntent-length 1012 +expires Mn, + +date Fi, +lastmodified Thu, +status 20 +content-ype image/jpeg +access-control-allow-origin  +ache-control max-age=1209600, +timing-allow-origin +conent-length 5041 +expires F\i, + +date Fr\, +lst-modified Wed, +status 20 +content-tye image/jpeg +access-control-allow-origin +\ache-control max-age=1209600, +timing-allow-origin \ +content-l\ngth 4201 +expires Wd, + +date Fi, +last-mdified Thu, +status 20 +conent-type image/jpeg +access-control-allow-origin +cache-co\trol max-age=1209600, +timing-allow-origin  +conent-length 41643 +expires Fr, + +date Fi, +last-modifid Mon, +status 2\0 +cont\nt-type image/jpeg +access-control-allow-origin  +cache-contrl max-age=1209600, +timing-allow-origin +conent-length 4069 +expires Wd, + +date Fr, +last-modifed Sat, +status 20 +content-typ image/jpeg +access-control-allow-origin +cache-cotrol max-age=1209600, +x-fb-edge-debug EwpFEjBY0hb_kwY2v8FLmVmymqWy5KGGTaPrVXTtv20vsZIEjUwDkVNbjYKcDY0_J9_d31bELPU561OltRd7w +timingallow-origin * +content-length 1\115 +expirs Fri, + +dte Fri, +last-modified Th, +stats 200 +content-type \mage/jpeg +access-cotrol-allow-origin * +cache-control max-age=209600, +timing\allow-origin * +content-length 1398 +expirs Mon, + +dte Fri, +last-modified ed, +staus 200 +content-type image/peg +acces-control-allow-origin * +cache-control max-age=120960, +x-fb-dge-debug BGdL2CHidm-Nlh_FAILf2lY1so5a6Q3rLP0A1pHzwniYyU89EhOQJpIFQ3_jI6QK3b9kfNHNWi-FMucQ3ZAKzA +timing-allow-origin  +contnt-length 10559 +expires ri, + +date ri, +last-modiied Thu, +status 20 +content-tpe image/jpeg +access-control-allow-origin  +cache-cotrol max-age=1209600, +timing-allow-origin \ +content-lenth 16520 +expires Fi, + +date ri, +last-\odified Thu, +status 20 +content-typ\ image/jpeg +access-control-allow-origin  +cachecontrol max-age=1209600, +timing-allow-origin  +content-lenth 13762 +expires Mo, + +date Fri +lst-modified Mon, +status 20 +contenttype image/jpeg +access-control-allow-origin  +cache-cntrol max-age=1209600, +timing-allow-origin  +content-lengt 1123 +expires Mon + +date Fri +last-modifie Mon, +status 20 +content-tpe image/jpeg +access-control-allow-origin  +cache-contro\ max-age=1209600, +timing-allow-origin +contet-length 934 +expires ri, + +date Fr, +last-modifid Sun, +status 20 +c\ntent-type image/jpeg +access-control-allow-origin  +cache-contrl max-age=1209600, +timing-allow-origin  +contentlength 1091 +expires un, + +date F\i, +lst-modified Thu, +status 00 +cotent-type image/jpeg +access-control-allow-origin  +cachecontrol max-age=1209600, +timing-allow-origin \ +content-lngth 1259 +expires Th\, + +date \ri, +last-mdified Mon, +status 20 +cntent-type image/jpeg +access-control-allow-origin  +ache-control max-age=1209600, +timing-allow-origin +content-lenth 997 +expires Wed + +date Fri +last-modfied Tue, +status 20 +content-ty\e image/jpeg +access-control-allow-origin +cache-contol max-age=1209600, +timing-allow-origin  +c\ntent-length 1042 +expires \at, + +date Fri +las-modified Fri, +status 20 +cntent-type image/jpeg +access-control-allow-origin  +cache-ontrol max-age=1209600, +timing-allow-origin  +content-lengh 1198 +expires Fr, + +date F\i, +ast-modified Sun, +status 20 +conent-type image/jpeg +access-control-allow-origin +cache-cotrol max-age=1209600, +timing-allow-origin \ +content-lengh 1024 +expires on, + +date Fi, +last-modiied Mon, +status 00 +content-ype image/jpeg +access-control-allow-origin \ +cace-control max-age=1209600, +timing-allow-origin  +cntent-length 1142 +expires Wed + +date \ri, +last-modifid Thu, +status 20 +contet-type image/jpeg +access-control-allow-origin  +cache-conrol max-age=1209600, +timing-allow-origin  +conent-length 1229 +expires hu, + +date Fi, +las-modified Mon, +status 00 +con\ent-type image/jpeg +access-control-allow-origin +cahe-control max-age=1209600, +timing-allow-origin  +content-lngth 2115 +expires Wed + +date Fri +last-modiied Mon, +status \00 +content-ype image/jpeg +access-control-allow-origin  +cach-control max-age=1209600, +timing-allow-origin  +content-lengt 2142 +expires Wed + +date Fr, +last-odified Wed, +status 2\0 +content-tye image/jpeg +access-control-allow-origin \ +cche-control max-age=1209600, +timing-allow-origin +content-lengh 2050 +expires ed, + +date Fr, +ast-modified Mon, +status 20 +contenttype image/jpeg +access-control-allow-origin +cache-conrol max-age=1209600, +timing-allow-origin  +c\ntent-length 2151 +expires Fri + +date ri, +last-modif\ed Mon, +status 20 +conent-type image/jpeg +access-control-allow-origin  +cache-contol max-age=1209600, +timing-allow-origin  +content-legth 1535 +expires Wd, + +content-security-policy defa\lt-src +ontent-encoding br +x-content-type-options osniff +sttus 200 +vary Orign +ary Accept-Encoding +x-xss-protection \ +prama no-cache +x-fb-debug uf9WOnMihZGLrDWfdIk9TrGKmQdtGnccdlEOgrUgRfR67yT4gvj2C/49TAesR/+odr8hrXU4Vg0DFyUPG\OeTw== +x-rame-options DENY +date Fri +expect-c max-age=10, +strict-transport-security m\x-age=15552000; +access-control-allow-mthods OPTIONS +content-type aplication/x-javascript; +acces-control-allow-origin https://www.facebook.com +access-control-expose-headers \-FB-Debug, +cache-cntrol private, +access-control-allow-credentials tre +expi\es Sat, + +co\tent-security-policy default-src +content-encoding b +x-content-type-optons nosniff +status 00 +ary Origin +vary Accet-Encoding +x-xss-prtection 0 +pragma no-cach +x-fb-debg tIRZNsTYzfKz2QPP0hEw0uwLco/KnyV40BfCRHvyZo3O2w3IE/7j6rOlozmmjypKoXRvlgKVMuIGL3ZuEdjAAQ== +x-frame-options DEN +\ate Fri, +expect-ct ax-age=10, +strict-tansport-security max-age=15552000; +access-control-allow-methods OPTINS +content-tpe application/x-javascript; +access-control-allow-origin https://www.facebook.co +access-contol-expose-headers X-FB-Debug, +cache-control privae, +access-control-allow-cedentials true +expires Sa, + +content-security-policy efault-src +content-encoing br +x-content-type-options osniff +satus 200 +vary Origi +var Accept-Encoding +x-xss-protection  +praga no-cache +x-fb-debug OQYWiTlxlszC92Mp1YXK8ApFdCAQIOUkhAPB1+xkHJQqfjDZygDfN99ACweeDUbG7x6QNWU0mxdBR8J2FPA6g== +x-frame-optins DENY +date Fi, +expect-\t max-age=10, +strict-transport-security max-ge=15552000; +access-contrl-allow-methods OPTIONS +content-type application/x-javasript; +acess-control-allow-origin https://www.facebook.com +access-control-expose-headers X-B-Debug, +cche-control private, +access-control-allow-credentials \rue +exires Sat, + +contet-security-policy default-src +content-encoding b +x-content-type-otions nosniff +status 00 +v\ry Origin +vary Accept-Encoing +x-xss-protetion 0 +pragma no-cahe +x-fb-ebug p0HFP+Jnpspb11zeyEYgxlr105OmdSqx4tkl8eaAR1N0lXl6XQbTO8UKDKDqEjxLThcca3J6qxoRUWgG0odnVQ== +x-frame-options \ENY +dat\ Fri, +expect-ct maxage=10, +strict-trnsport-security max-age=15552000; +access-control-allow-methods OPTIO\S +content-typ application/x-javascript; +access-control-allow-origin https://www.fcebook.com +access-control-exose-headers X-FB-Debug, +cache-control private +access-conrol-allow-credentials true +expires St, + +content-security-policy default-sr +cotent-encoding br +x-content-type-options \osniff +sttus 200 +vary Oigin +var Accept-Encoding +x-xss-protection  +prgma no-cache +x-fb-debug XRw0F7BRogkNZr1CMVwhEDJOLbqv9n1OtLwJw0zkKgcYejKC2R09TmAWffUhhcjnDKU4HH7F\nPS6NAJpBbE9A== +x-frame-option DENY +date Fi, +expct-ct max-age=10, +strict-transport-security max-age=1552000; +access-control-allow-ethods OPTIONS +content-type aplication/x-javascript; +acces-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debg, +cachecontrol private, +access-control-allow-credentials t\ue +expres Sat, + +contet-security-policy default-src +content-encoding r +x-content-tye-options nosniff +status 2\0 +ary Origin +vary Accept-Encodng +x-xssprotection 0 +pragma no-cace +x-\b-debug 6zfb4OjE4hNPBJHQlT5E/kHSCZJRtXHvWfBGAo8YtCn7L8CbZWgGBF7L4upWO3dP+QSgARyqFvmBNPegcE15jw== +x-frame-options DNY +ate Fri, +expect-ct mx-age=10, +strict-tranport-security max-age=15552000; +access-control-allow-methods PTIONS +content-tpe application/x-javascript; +access-control-allow-origin https//www.facebook.com +access-control-expose-heade\s X-FB-Debug, +cache-control prvate, +access-contro-allow-credentials true +expires \at, + +content-security-policy deault-src +cotent-encoding br +x-content-type-options noniff +stats 200 +vary Orign +va\y Accept-Encoding +x-xss-protection  +prgma no-cache +x-fb-debug fjB1x1MwVhv6JanSzu8Ldr8d8qlnz+F6BRtgygmyfyiVs2rtvg5D/Kmp7sLpAMIaFSdxEQjTiNKUNoUw3r06w== +x-rame-options DENY +date Fri +expct-ct max-age=10, +strict-transport-security max-age=155\2000; +access-ontrol-allow-methods OPTIONS +content-type appliction/x-javascript; +access-control-allow-oigin https://www.facebook.com +access-control-expose-headers X-B-Debug, +cach\-control private, +access-control-allow-credentials \rue +exires Sat, + +contnt-security-policy default-src +content-encoding b\ +\-content-type-options nosniff +status 20 +va\y Origin +vary Accep-Encoding +x-ss-protection 0 +pragma nocache +x-fb-ebug mNPFkDjNtW61hg2fQZ8FvxVi0b0gjAVneqQ+7T609e0f6ciStxGg5PLLAaCQunaPEc2v57mC+UH2ta2EwA0G8A== +x-frame-options DEY +dte Fri, +expect-ct max-ag=10, +strict-tranport-security max-age=15552000; +access-control-allow-methods OPTONS +cotent-type application/x-javascript; +access-control-allow-origin https://ww.facebook.com +access-control-expose-eaders X-FB-Debug, +cache-control pivate, +accesscontrol-allow-credentials true +expires St, + +content-security-policy frae-ancestors +content-securi\y-policy default-src +content-encoding r +x-ontent-type-options nosniff +status 20 +var\ Origin +vary Acept-Encoding +x-xss-protectin 0 +pragma no-cach +x-b-debug rSVyfIy0pUEIG4N41LAFP91i7oMPswW6ZRUF1Z7E1hamyGD3fVkpkkg2+3GR96pariwqrCpVr9nVYTqxkbATNA== +date Fr, +ex\ect-ct max-age=10, +strict-transport-security max-age=1555200; +access-control-allo-methods OPTIONS +content-type tex\/html; +access-control-alow-origin https://www.facebook.com +access-control-expose-headers XFB-Debug, +ache-control private, +access-control-allow-credentials t\ue +se-cookie oNcnS=gpojSOS; +expires at, + +content-security-policy efault-src +content-encodig br +x-content-type-options nosnif +cont\nt-md5 j8T0XBmPlo08jOXtTJ3MEw== +status 00 +content-lngth 198 +x-xss-protection  +xfb-debug f4/9IxVq4HZYZ8dV9P6xeLypQNS2qEx/kNF3NoX9D8Z0nshFfF6M7lqeabFqQD5b50R/Iekbf9xeyr56aEUi7g== +last-modified Mn, +dae Fri, +vary Accept-Enoding +content-\ype text/css; +access-control-allow-origin  +cahe-control public,max-age=31536000,immutable +access-control-allow-credentials rue +timin-allow-origin * +expires \at, + +content-security-policy default-sr +contet-encoding br +x-content-type-options osniff +\ontent-md5 b5vUN/sgd315IdDwXDUejw== +status 20\ +contentlength 7295 +x-xss-protection  +x-fb-ebug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== +last-modified Mo, +dte Fri, +vary Accept-E\coding +content-tye text/css; +access-control-allow-origin +cace-control public,max-age=31536000,immutable +access-control-allow-credentials \rue +ti\ing-allow-origin * +expires Sa, + +content-security-policy dfault-src +conten-encoding br +x-content-type-options nosnif +contnt-md5 3N5sn/pluRe+kZxjcR6Ibw== +status \00 +contnt-length 9375 +x-xss-protection  +x-f-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== +last-modified on, +dae Fri, +vary Accept-Enoding +content-tpe text/css; +access-control-allow-origin  +cach-control public,max-age=31536000,immutable +access-control-allow-credentials t\ue +timingallow-origin * +expires F\i, + +content-security-policy defaul-src +content-ecoding br +x-content-type-options nosnif +cntent-md5 i4f5LnfeTwjEpPYLvEw9sg== +status 20 +contentlength 3785 +x-xss-protection  +x-f\-debug HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== +last-modified Mon\ +dat\ Fri, +vary Accpt-Encoding +con\ent-type text/css; +access-control-allow-origin  +cache-c\ntrol public,max-age=31536000,immutable +access-control-allow-credentials tre +timingallow-origin * +expires ri, + +content-security-policy default-rc +conten-encoding br +x-content-type-options osniff +ontent-md5 fd9ZgENjjqTO/InJ/yzr9A== +status \00 +contentlength 18878 +x-xss-protection  +xfb-debug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== +last-modified Mon +dae Fri, +vary Accept-Enco\ing +content\type text/css; +access-control-allow-origin  +ache-control public,max-age=31536000,immutable +access-control-allow-credentials tru +timing-allow-rigin * +expires ri, + +content-security-policy deault-src +conent-encoding br +x-content-type-options nosnif\ +content-\d5 mgTL4W9gmblv6l6wXzZodA== +status 00 +contet-length 6081 +x-xss-protection  +x-fb-ebug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== +last-modified on, +dte Fri, +vary Accept-Encodng +ontent-type text/css; +access-control-allow-origin  +cache-conrol public,max-age=31536000,immutable +access-control-allow-credentials rue +timin-allow-origin * +expires Thu + +content-security-policy dfault-src +content-encoing br +x-content-type-options nsniff +contentmd5 SqewXybmJVo1v4gA0JLGBQ== +status \00 +ontent-length 738 +x-xss-protection +x-fb-ebug KC/Mv8BSpLzgKNnb1cJgXL8dPdim8GGQRbNyFfUpswJaoxnMQeHpRWlZwFceTKDlmlF+3I1PWGIgOE9iug58Qw== +last-modified Mon +dae Fri, +vary Acept-Encoding +contenttype text/css; +access-control-allow-origin  +cache-contro public,max-age=31536000,immutable +access-control-allow-credentials tre +timing-allow-o\igin * +expires \ri, + +content-security-policy defult-src +conten\-encoding br +x-content-type-options nosni\f +con\ent-md5 FWVLk47e/1NAPOLzKy9mZQ== +status 2\0 +content-lengt 9648 +x-xss-protection  +x-b-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== +last-modified on, +dat Fri, +vary Accpt-Encoding +content-tpe text/css; +access-control-allow-origin +ca\he-control public,max-age=31536000,immutable +access-control-allow-credentials tre +timi\g-allow-origin * +expires Fri + +x-fb-debug ivI86tTrFwX9U5sLjaxj7fvac7JDJwsEi9Eja2Z4Oy4C7nmZIF2IkB8o8XqfevLcTTOzzEMMwFDwypn5k6IXw== +x-cont\nt-type-options nosniff +last-modified M\n, +cntent-md5 IHh5jFrVTE8LJvIHfLuDPA== +date ri, +s\atus 200 +content-type \mage/png +access-control-llow-origin * +cache-control publi,max-age=31536000,immutable +accesscontrol-allow-credentials true +content-security-policy dfault-src +timing-allow-oriin * +content-length 56 +-xss-protection 0 +expires Thu + +date Fi, +lst-modified Mon, +status 2\0 +conten-type image/jpeg +access-control-allow-origin  +cache-cotrol max-age=1209600, +timing-allow-origin  +contentlength 34712 +expires hu, + +content-security-policy defult-src +contentencoding br +x-content-type-options n\sniff +\tatus 200 +vary Oigin +ary Accept-Encoding +x-xss-protection +pragm no-cache +x-fb-debug 81n69Z2aI9QZjTP3RqALLOhQMWgAFje+H3x7d+XQhHdAQs8mLv+6FDvDhBgiGdjfLJADt8Lr8zzmSPholcHCg== +-frame-options DENY +date Fr, +expect-t max-age=10, +strict-transport-security max-ag=15552000; +access-control-alow-methods OPTIONS +content-type text/jaascript; +acess-control-allow-origin https://www.facebook.com +access-control-expose-headers -FB-Debug, +cache-con\rol private, +access-control-allow-credentials tue +ex\ires Sat, + +content-security-olicy default-src +content-encoding b +x-content-type-option nosniff +content-md5 YP/0rJ9pw2vE+OCDm8w5Q== +statu\ 200 +content-length \031 +x-xss-rotection 0 +x-fb-debug NNF+j6+XOFrfdhzYpIcXN8eoCwGFh5LQhEtfDyAVBLtSL4n56dyb+kUyPAOLL4HokctaJ9bHKv6JsDRAvFzpQ== +last-odified Mon, +date Fri +ary Accept-Encoding +content-type ext/css; +access-control-allow-oigin * +cache-control public,max-age=315360\0,immutable +access-control-allow-credentias true +timing-allow-origin  +expire Fri, + +cntent-security-policy default-src +content-encoding b +x-conten-type-options nosniff +content-md5 2nocW+0AN98W+9vj2rtAA== +st\tus 200 +content-length 755 +x-xs-protection 0 +x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDe\TcN241RDx5hRnvNFGykEOE4GYKgA== +last-modiied Mon, +date \ri, +vry Accept-Encoding +content-type text/\ss; +acces-control-allow-origin * +cache-control public,max-age=1536000,immutable +access-control-allow-credentals true +timing-allow-origin \ +expies Fri, + +content-security-polcy default-src +content-encoding b +x-content-typeoptions nosniff +content-md5 V/4SheZbR98CwCYd4h3cA\== +stats 200 +content-length 21\4 +x-x\s-protection 0 +x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9g/utEBUOY7EejJPR3dY3IKLRtdSZOhWsixw== +last-moified Mon, +date Fri +vry Accept-Encoding +content-type ext/css; +access-control-\llow-origin * +cache-control public,max-age=3156000,immutable +access-control-alow-credentials true +timing-allow-origin  +expir\s Fri, + +content-security\policy default-src +content-encoding b\ +-content-type-options nosniff +status 00 +var\ Origin +vary Accet-Encoding +x-xss-p\otection 0 +pragma n-cache +x\fb-debug 80lq+gj7IZbnwQOAsGA0x/F6Fyx0fmRFIjbi5VF+mwwF8GmHiNvnuajfF1nPUiDbR4xm4QfRZzO2dmW5phYHdw== +x-frame-options DNY +dte Fri, +expect-ct max-ag=10, +strict-transprt-security max-age=15552000; +access-control-allow-methods OPTINS +c\ntent-type text/javascript; +access-control-allow-origin https://w\w.facebook.com +acess-control-expose-headers X-FB-Debug, +cache-control private +access-control-allow-credetials true +expires Sat + +date ri, +last-mdified Sat, +status 20 +content-ype image/jpeg +access-control-allow-origin +cache-contrl max-age=1209600, +timing-allow-origin  +content-lenth 1346 +expires Mon\ + +date Fr, +last-modfied Fri, +status 20 +conten-type image/jpeg +access-control-allow-origin +cache-cntrol max-age=1209600, +timing-allow-origin  +contentlength 5378 +expires Mon + +date Fr\, +last-modifid Sat, +status 2\0 +cotent-type image/jpeg +access-control-allow-origin  +cache-cotrol max-age=1209600, +timing-allow-origin  +content-ength 1099 +expires Wed + +date Fi, +last-mdified Wed, +status 20 +co\tent-type image/jpeg +access-control-allow-origin +cache-con\rol max-age=1209600, +timing-allow-origin \ +content-lenth 1813 +expires St, + +date Fi, +last-moified Thu, +status 20 +content-\ype image/jpeg +access-control-allow-origin +cac\e-control max-age=1209600, +timing-allow-origin  +content-lenth 2231 +expires Mn, + +content-security-policy defalt-src +contnt-encoding br +x-content-type-options nsniff +statu 200 +vary Oigin +vry Accept-Encoding +x-xss-protection +pagma no-cache +x-fb-debug 0p+00EWDce62x0+DsI9H4aEJhyeSi3JPlTdaS5BHMXBW7IgnSx2/ib/I6SJfBtMfsdXxAUQmZIk60dobz61cw== +x-fame-options DENY +date ri, +expect-c max-age=10, +strict-transport-security maxage=15552000; +access-control-allow-ethods OPTIONS +content-type application/x-javascrit; +ccess-control-allow-origin https://www.facebook.com +access-control-expose-headers X-\B-Debug, +cache-ontrol private, +access-control-allow-credentials \rue +exires Sat, + +content-secrity-policy default-src +content-encoding r +x-content-type-option nosniff +status 00 +ary Origin +vary Accept\Encoding +x-xs-protection 0 +pragma no-\ache +x-b-debug 1LWgD23lNKFTlwMtU9MYIrDqQodqZNpYVpJEdY85kjF19Zriwcv3LL1TKf1a2M1e8KZbFzbeZt/tDNluh5KMfg== +x-frame-options DNY +dae Fri, +expect-ct max-ag=10, +strict-transport-secuity max-age=15552000; +access-control-allow-methods OPTION\ +conte\t-type application/x-javascript; +access-control-allow-origin https://www.fa\ebook.com +access-control-expose-heaers X-FB-Debug, +cache-control rivate, +access-control-allow-credenials true +expires at, + +content-security-policy defaut-src +cotent-encoding br +x-content-type-options nosnif +sta\us 200 +vary Orign +ary Accept-Encoding +x-xss-protection  +pra\ma no-cache +x-fb-debug QT70qYi7OceDc1J6xNZPxbWA6J74A7vI4w5yDKqMT0zydKcu4gufbgfyUV5pp8KYHNnOjprXdLV8sxjhVZmrg== +-frame-options DENY +date ri, +exect-ct max-age=10, +strict-transport-security ma-age=15552000; +ccess-control-allow-methods OPTIONS +content-type applicat\on/x-javascript; +access-control-alloworigin https://www.facebook.com +access-control-expose-headers X-FB-Debu, +cache-conrol private, +access-control-allow-credentials tue +epires Sat, + +conent-security-policy default-src +content-encoding b\ +x-content-type-opions nosniff +status 20 +va\y Origin +vary Accep\-Encoding +-xss-protection 0 +pragma no-cach +x-f-debug 7fkJBsAPVJFq2FTZol9AA+/QkBHqy/UnLVOh6jnwcLsgOCgwov2UoJDyuCQsyL7daXfPhVbq9gXbFdcBEnK9eA== +x-frame-options DNY +ate Fri, +expect-ct max-age=0, +strict-ransport-security max-age=15552000; +access-control-allow-methods OPTION +content-ype application/x-javascript; +access-control-allow-origin https://www.facebok.com +access-controlexpose-headers X-FB-Debug, +cache-control privae, +access-control-allow-credentals true +expires S\t, + +content-security-policy defaultsrc +cntent-encoding br +x-content-type-options nosiff +staus 200 +vary Origi +var Accept-Encoding +x-xss-protection  +pagma no-cache +x-fb-debug amapPP5iPcmJFn0h4ov4yHD4j6Y4lq0t+cOKNHf48NaI2q8h3fx5pUQfXiPMFfyl2VO049uOPkR9LryO0T9kw== +x-frame-optios DENY +date ri, +expec-ct max-age=10, +strict-transport-security maxage=15552000; +access-cotrol-allow-methods OPTIONS +content-type appliation/x-javascript; +access-control-allw-origin https://www.facebook.com +access-control-expose-headers X-FBDebug, +cache-contrl private, +access-control-allow-credentials rue +expire\ Sat, + +content-seurity-policy default-src +content-encoding b +x-content-ty\e-options nosniff +status 00 +vry Origin +vary Accept-Enc\ding +x-xss-protecton 0 +pragma no-cach\ +x-f-debug t32y8Hm6r7S1o8WqMv2HtbAPZfK3hSQRgIu9njyHN86UXFWWcJLwQi/+hCFvNFTTecEMdi999zchr89VUjejSg== +x-frame-options DEY +ate Fri, +expect-ct max-age=1, +strct-transport-security max-age=15552000; +access-control-allow-methods OPTINS +content-ty\e application/x-javascript; +access-control-allow-origin https://www.facebook.om +access-conrol-expose-headers X-FB-Debug, +cache-control prvate, +access-conrol-allow-credentials true +expires at, + +content-security-policy default-sc +contentencoding br +x-content-type-options nosiff +tatus 200 +vary Orgin +vry Accept-Encoding +x-xss-protection  +prag\a no-cache +x-fb-debug qZ9fNZULFiTcas1J8eLDJiyuDBAlrghkM3olJD9oi7T7eJusL3bRMUZuBsYIwdsF0mjAIVE02udnrfdN/++Tg== +x-\rame-options DENY +date \ri, +xpect-ct max-age=10, +strict-transport-security max-age=1555200; +access-control-allow-mehods OPTIONS +content-type application/x-jaascript; +access-cntrol-allow-origin https://www.facebook.com +access-control-expose-headers X-F\-Debug, +cache-ontrol private, +access-control-allow-credentials tru +expire\ Sat, + +content-securitypolicy default-src +content-encoding \r +x-contnt-type-options nosniff +status 20 +var Origin +vary Accept-Enoding +x-xss-protecion 0 +pragma no-cac\e +x-b-debug YgKVIynAZNUPEjV90atEpD0KJwQ2ChoxXcj4Oh3iH4ZLkrFVlNq6JTCjEUmj68QSuJH2JDqgk2lWW4pjbuEIUw== +x-frame-options DNY +ate Fri, +expect-ct max-\ge=10, +strict-trans\ort-security max-age=15552000; +access-control-allow-methods OPTION\ +content-\ype application/x-javascript; +access-control-allow-origin https:\/www.facebook.com +ccess-control-expose-headers X-FB-Debug, +cache-control priate, +access-control-allow-creentials true +expires St, + +content-security-policy frame-anestors +contentsecurity-policy default-src +content-encoding \r +x-content-\ype-options nosniff +status 20 +vay Origin +vary Accept-Encodin +x-xss-protectin 0 +pragma no-cach +xfb-debug 7rhC62iO+Rts/b+n+IFvEXeifr57brMaYkWLW76OXJzkEpiVAq78Tsy/RQCQ8N5hDrDXI87nuaRetJUM5huJuQ== +date \ri, +epect-ct max-age=10, +strict-transport-security max-age=155520\0; +access-control-allowmethods OPTIONS +content-type texthtml; +accss-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug +cache-cotrol private, +access-control-allow-credentials tre +setcookie oNcnS=gpojSOS; +expires St, + +content-security-policy defalt-src +cont\nt-encoding br +x-content-type-options noniff +cntent-md5 j8T0XBmPlo08jOXtTJ3MEw== +status 00 +content-lengt 198 +x-xss-protection  +x-fb-deug f4/9IxVq4HZYZ8dV9P6xeLypQNS2qEx/kNF3NoX9D8Z0nshFfF6M7lqeabFqQD5b50R/Iekbf9xeyr56aEUi7g== +last-modified Mn, +dat Fri, +vary AcceptEncoding +content-tpe text/css; +access-control-allow-origin +cache-conrol public,max-age=31536000,immutable +access-control-allow-credentials \rue +timing-allw-origin * +expires Sa\, + +content-security-policy defult-src +content-\ncoding br +x-content-type-options osniff +contnt-md5 b5vUN/sgd315IdDwXDUejw== +status 20 +content-legth 7295 +x-xss-protection  +x-b-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== +last-modified Mo\, +ate Fri, +vary Accet-Encoding +contet-type text/css; +access-control-allow-origin  +cahe-control public,max-age=31536000,immutable +access-control-allow-credentials tre +ti\ing-allow-origin * +expires Sa, + +content-security-policy defult-src +conent-encoding br +x-content-type-options noniff +co\tent-md5 3N5sn/pluRe+kZxjcR6Ibw== +status 20 +ontent-length 9375 +x-xss-protection  +-fb-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== +last-modified Mn, +ate Fri, +vary Acc\pt-Encoding +contet-type text/css; +access-control-allow-origin  +cache-cotrol public,max-age=31536000,immutable +access-control-allow-credentials tre +timing-allow-oigin * +expires Fri + +content-security-policy defaut-src +conent-encoding br +x-content-type-options nosnif\ +content-\d5 i4f5LnfeTwjEpPYLvEw9sg== +status 20 +contet-length 3785 +x-xss-protection  +x-fb-deug HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== +last-modified on, +ate Fri, +vary Accpt-Encoding +cotent-type text/css; +access-control-allow-origin  +cache-cntrol public,max-age=31536000,immutable +access-control-allow-credentials tru\ +timing-allow-ori\in * +expires Fi, + +content-security-policy default-rc +content-encodin br +x-content-type-options nosiff +content-d5 fd9ZgENjjqTO/InJ/yzr9A== +status 00 +content-lengh 18878 +x-xss-protection +x-fbdebug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== +last-modified Mon +dae Fri, +vary Acept-Encoding +content-typ text/css; +access-control-allow-origin  +ache-control public,max-age=31536000,immutable +access-control-allow-credentials rue +timing-alow-origin * +expires Fi, + +content-security-policy defaul\-src +content\encoding br +x-content-type-options nosnif +content-m5 mgTL4W9gmblv6l6wXzZodA== +status 00 +content-lngth 6081 +x-xss-protection \ +x-fbdebug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== +last-modified Mo, +ate Fri, +vary Accept-ncoding +cntent-type text/css; +access-control-allow-origin \ +cachecontrol public,max-age=31536000,immutable +access-control-allow-credentials tue +timing-allow-orign * +expires T\u, + +content-security-policy default-sr\ +content-encodig br +x-content-type-options nsniff +cntent-md5 FWVLk47e/1NAPOLzKy9mZQ== +status 00 +conten-length 9648 +x-xss-protection  +-fb-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== +last-modified Mo, +dte Fri, +vary ccept-Encoding +ontent-type text/css; +access-control-allow-origin  +cach\-control public,max-age=31536000,immutable +access-control-allow-credentials tre +timing-allow-orign * +expires Fr, + +content-security-policy defaul-src +conten-encoding br +x-content-type-options osniff +content-md SqewXybmJVo1v4gA0JLGBQ== +status 20 +contnt-length 738 +x-xss-protection +x-fb-ebug KC/Mv8BSpLzgKNnb1cJgXL8dPdim8GGQRbNyFfUpswJaoxnMQeHpRWlZwFceTKDlmlF+3I1PWGIgOE9iug58Qw== +last-modified Mon +dat Fri, +vary Accept-Enoding +conte\t-type text/css; +access-control-allow-origin +cachecontrol public,max-age=31536000,immutable +access-control-allow-credentials tru +timing-alow-origin * +expires Fr\, + +date \ri, +ast-modified Wed, +status 00 +conten\-type image/jpeg +access-control-allow-origin \ +cache-cntrol max-age=1209600, +timing-allow-origin  +content\length 40454 +expires Sa, + +content-security-policy defaultsrc +content-encodin br +x-content-type-options nosiff +tatus 200 +vary Oigin +var Accept-Encoding +x-xss-protection  +praga no-cache +x-fb-debug 7UJtDxiFPBYY1sVqvsQp/byh+wO4VmQtzoGR1YpqwdzSX5TZPcZawYCUsAlp1SXS9x7ed5apoBsdWrWAqD2zA== +xframe-options DENY +date Fri +expect-c max-age=10, +strict-transport-security max-age=15552\00; +access-conrol-allow-methods OPTIONS +content-type text/javscript; +access-ontrol-allow-origin https://www.facebook.com +access-control-expose-headers X-FBDebug, +cache-contro private, +access-control-allow-credentials rue +exires Sat, + +content-seurity-policy default-src +content-encoding r +x-content-type-optios nosniff +content-md5 YZP/0J9pw2vE+OCDm8w5Q== +statu 200 +content-length 231 +x-xss-protecion 0 +x-fb-debug NNF+j6+XOFrfdhzYpIcXN8eoCwGFoh5LQhEtfDyAVBLtSLn56dyb+kUyPAOLL4HokctaJ9bHKv6JsDRAvFzpQ== +last-mo\ified Mon, +date ri, +vry Accept-Encoding +content-type txt/css; +acess-control-allow-origin * +cache-control public,max-age=31536000,immutabl +accss-control-allow-credentials true +timing-allow-origin  +\xpires Fri, + +content-security-olicy default-src +content-encoding b +x-content-type-optio\s nosniff +content-md5 2nocW+0Am98W+9vj2rtAA== +statu 200 +content-length 755 +x-ss-protection 0 +x-fb-debug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem\tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== +last-moified Mon, +date Fri +vay Accept-Encoding +content-type tex/css; +acces\-control-allow-origin * +cache-control public,max-age=3153600,immutable +access-control-\llow-credentials true +timing-allow-origin \ +xpires Fri, + +content-secuity-policy default-src +content-encoding b\ +x-content-type-op\ions nosniff +content-md5 V/4Sh\ZbR98CwCYd4h3cAg== +sttus 200 +content-length 274 +x-xss-rotection 0 +x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== +last-mod\fied Mon, +date Fi, +var Accept-Encoding +content-type txt/css; +access-conrol-allow-origin * +cache-control public,max-ae=31536000,immutable +access-control-allow-credenials true +timing-allow-origin  +expirs Fri, + +content-securiy-policy default-src +content-encoding \r +x-contnt-type-options nosniff +status 20 +vry Origin +vary Accept-Encding +x-xss-protction 0 +pragma n-cache +x-fbdebug hdieTRvwlm1ekAKUz+PCErUI8L1SH+WbBkLwZ0ikBiUAMOZiHdLsiZRRjlQJUj4F5byiz3iFAA4uT16arnRd7A== +x-frame-options DNY +dte Fri, +expect-ct max-ag\=10, +strict-tansport-security max-age=15552000; +access-control-allow-methods OPTIO\S +content-tpe text/javascript; +access-control-allow-origin https://\ww.facebook.com +accss-control-expose-headers X-FB-Debug, +cache-control privae, +access-control\allow-credentials true +expires St, + +date Fr, +last-modfied Wed, +status 00 +conten\-type image/jpeg +access-control-allow-origin +cache-cotrol max-age=1209600, +timing-allow-origin  +content-lenth 1263 +expires We\, + +date \ri, +las-modified Sun, +status 20 +conent-type image/jpeg +access-control-allow-origin +cache-contro\ max-age=1209600, +timing-allow-origin  +content-le\gth 1435 +expires Wed + +date \ri, +last-mdified Mon, +status 00 +conten-type image/jpeg +access-control-allow-origin \ +cace-control max-age=1209600, +timing-allow-origin  +contnt-length 1384 +expires St, + +date F\i, +last-moified Wed, +status 00 +conent-type image/jpeg +access-control-allow-origin  +cache-contro\ max-age=1209600, +timing-allow-origin +content-lngth 1096 +expires We, + +date Fr, +last-modifie Sun, +status 20 +contenttype image/jpeg +access-control-allow-origin  +cache-c\ntrol max-age=1209600, +timing-allow-origin  +content-lenth 1201 +expires Mon\ + +date Fri +last-modifed Mon, +status 2\0 +content-tpe image/jpeg +access-control-allow-origin  +cache-cotrol max-age=1209600, +timing-allow-origin  +ontent-length 1180 +expires Mo, + +date Fi, +last-modifid Thu, +status 00 +contnt-type image/jpeg +access-control-allow-origin  +cache-contrl max-age=1209600, +timing-allow-origin +cont\nt-length 1131 +expires We\, + +date Fr\, +lastmodified Fri, +status 20 +ontent-type image/jpeg +access-control-allow-origin  +ache-control max-age=1209600, +timing-allow-origin  +contnt-length 1076 +expires Tu\, + +date Fi, +last-modifed Sat, +status 20 +contenttype image/jpeg +access-control-allow-origin  +cache-contrl max-age=1209600, +timing-allow-origin  +content-lengt 1196 +expires We, + +date Fri +last-moified Mon, +status 20 +contnt-type image/jpeg +access-control-allow-origin  +cache-cotrol max-age=1209600, +timing-allow-origin  +content-leng\h 1214 +expires Tu, + +date Fr\, +la\t-modified Sat, +status 20 +contet-type image/jpeg +access-control-allow-origin +cche-control max-age=1209600, +timing-allow-origin \ +content-legth 1186 +expires Sat + +date Fri +last-mdified Wed, +status 00 +content-tpe image/jpeg +access-control-allow-origin +cache-contrl max-age=1209600, +timing-allow-origin  +contentlength 1116 +expires We, + +date Fr, +last-modiied Thu, +status \00 +cntent-type image/jpeg +access-control-allow-origin  +ache-control max-age=1209600, +timing-allow-origin  +content-le\gth 1194 +expires ed, + +date Fr, +last-modifed Wed, +status 00 +content-t\pe image/jpeg +access-control-allow-origin  +cach-control max-age=1209600, +timing-allow-origin  +cotent-length 2561 +expires We, + +content-security-policy defau\t-src +conent-encoding br +x-content-type-options nosni\f +\tatus 200 +vary Orig\n +vay Accept-Encoding +x-xss-protection  +prag\a no-cache +x-fb-debug ntagBSAy0N7B+W6cCPMym9uojb63DTPZNd4qbWeU9JEJ6GsZJR28NdGWJF+2pYGdhqvJfCRNFKO6Wsu1DKrmg== +x-frameoptions DENY +date ri, +expect-c\ max-age=10, +strict-transport-security ax-age=15552000; +access-contro-allow-methods OPTIONS +content-type appliation/x-javascript; +access-conrol-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debu, +cache-cotrol private, +access-control-allow-credentials tue +expies Sat, + +content\security-policy default-src +content-encoding \r +x-content-type-otions nosniff +status 20 +var Origin +vary Accept-Ecoding +x-xss-protectio 0 +pragma no-cche +x-fb-debu TCx1S56tLRACSgQRetHn9/G9virSjj5p6TxjI/yO0SEMxskavAh/jzrW0NZ+RNisDLmq+h5pEXwheYm1KHgGYg== +x-frame-options DEN +dae Fri, +expect-ct ma-age=10, +stict-transport-security max-age=15552000; +access-control-allow-methods OPIONS +contenttype application/x-javascript; +access-control-allow-origin https:/www.facebook.com +access-control-expose-heders X-FB-Debug, +cache-control pivate, +access-control-allowcredentials true +expires Sat + +content-security-policy defalt-src +conten-encoding br +x-content-type-options nsniff +satus 200 +vary Origi +var Accept-Encoding +x-xss-protection \ +pragm no-cache +x-fb-debug cGQeVJ0yynZitbvpqOoVWwcFWA4pbNMbxm6kLd93D/Rp06syo3Bkb/25dSHIqthI8YpFt8lKO44Fiv9coRFbA== +x-frame\options DENY +date ri, +expectct max-age=10, +strict-transport-security max-age=5552000; +access-control-allo-methods OPTIONS +content-type applicationx-javascript; +access-control-allo-origin https://www.facebook.com +access-control-expose-headers X-FB-Dbug, +cach-control private, +access-control-allow-credentials tru +epires Sat, + +content-secrity-policy default-src +content-encoding r +x-content-type-opti\ns nosniff +status 20 +vry Origin +vary Accept-Encodin +x\xss-protection 0 +pragma no-cahe +x-b-debug a2F7U2gfSNAOvmMj4SX8IrUAXTpRFoWi2AcWDEjjqhG9GTfSb5SwxWntbCrDLW/li49tn5FlrOqSyiHVsfLPBw== +x-frame-options ENY +dae Fri, +expect-ct ax-age=10, +strict-ransport-security max-age=15552000; +access-control-allow-methods OPT\ONS +content-tpe application/x-javascript; +access-control-allow-origin https://wwwfacebook.com +access-control-exose-headers X-FB-Debug, +cache-control privat, +access-ontrol-allow-credentials true +expires St, + +content-security-policy default\src +content-encodng br +x-content-type-options nosnif +stats 200 +vary Orign +vay Accept-Encoding +x-xss-protection  +prama no-cache +x-fb-debug lhhyzZ7f6JtEJ7VfB6YZb9/Th4Qw82KjrOLwWrOTfW6pR9sEHf1/5EFp4m9+DyKlrZmgVPJW+FCXiPu+QylAg== +x-frae-options DENY +date Fri\ +exect-ct max-age=10, +strict-transport-security max-age=1555200; +access-control-all\w-methods OPTIONS +content-type application/x-javascript +access-contrl-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debu, +cche-control private, +access-control-allow-credentials rue +exp\res Sat, + +content-se\urity-policy default-src +content-encoding b\ +x-content-type-optios nosniff +status 00 +vry Origin +vary Accpt-Encoding +x-xss-protecton 0 +pragma no-cac\e +x-b-debug fCePEei9uCqVXIV1xs2fa3gT/rg6BP9CrjdWzCNIC/B++asjzJ1FFbKdnp5xmO83iisvuRwos6qCfE9dhXKoAg== +x-frame-options ENY +ate Fri, +expect-ct max-ae=10, +strict-transport-scurity max-age=15552000; +access-control-allow-methods OPTION +contnt-type application/x-javascript; +access-control-allow-origin https:/www.facebook.com +access-control-expose-hea\ers X-FB-Debug, +cache-control priate, +access-control-allow-cedentials true +expires \at, + +content-security-policy dfault-src +content-encoing br +x-content-type-options nosnif +staus 200 +vary Oriin +var Accept-Encoding +x-xss-protection  +pragm no-cache +x-fb-debug iRBn/XnVBDIWIxUBLMtLtj5omaH7A7p11UT1D1afbZD+Ry0sthN9v9zHvAN00k4d067alZKMaUr47kiDHm4gQ== +x-frame-o\tions DENY +date Fr, +e\pect-ct max-age=10, +strict-transport-security max-age=1555200; +access-control-allow-mthods OPTIONS +content-type application/x-jvascript; +access-cotrol-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug +cache-conrol private, +access-control-allow-credentials tru +expres Sat, + +content-seurity-policy default-src +content-encoding b +x-content-tye-options nosniff +status 20 +var Origin +vary Accept-Encodng +x-xss-proection 0 +pragma n-cache +-fb-debug FQ8b5JXye5XlhBtjejvj/jR27KuuDITP3T6WgnIs5B7RbHbAdw0inziQZI5IrMN31Aa8W5FCh8PoudsQRbMSwQ== +x-frame-options ENY +dte Fri, +expect-ct max-ae=10, +strict-transport-scurity max-age=15552000; +access-control-allow-methods OPIONS +con\ent-type application/x-javascript; +access-control-allow-origin http://www.facebook.com +access-cntrol-expose-headers X-FB-Debug, +cache-control private +acess-control-allow-credentials true +expires Sat\ + +content-security-policy frame-ancestor +conent-security-policy default-src +content-encoding r +x-content-type-option\ nosniff +status 2\0 +vry Origin +vary AcceptEncoding +xxss-protection 0 +pragma no-cche +\-fb-debug hqV/b79Rwe4YgV9N2BognvCfbV2jZ/JfYpAS855sX5nmytN/L7TSs02ZXnccyQqjrtrmzz2zYfNXoheYKc50Tw== +date Fr, +xpect-ct max-age=10, +strict-transport-security max-age=1555200; +access-control-allw-methods OPTIONS +content-type text\html; +accesscontrol-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-De\ug, +cache-cntrol private, +access-control-allow-credentials tru +set-cooki oNcnS=gpojSOS; +expires Sa, + +content-security-policy default-rc +content-encoing br +x-content-type-options n\sniff +conten-md5 b5vUN/sgd315IdDwXDUejw== +status 00 +content-lengh 7295 +x-xss-protection \ +x-f-debug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== +last-modified Mn, +dte Fri, +vary Accept-Encoing +cotent-type text/css; +access-control-allow-origin \ +cache-conrol public,max-age=31536000,immutable +access-control-allow-credentials tue +timing-allow-o\igin * +expires S\t, + +content-security-policy default-sr +cotent-encoding br +x-content-type-options nsniff +contet-md5 3N5sn/pluRe+kZxjcR6Ibw== +status 20 +content-lenth 9375 +x-xss-protection  +x-f-debug zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== +last-modified on, +dat\ Fri, +vary Accpt-Encoding +content-tye text/css; +access-control-allow-origin  +cache-contrl public,max-age=31536000,immutable +access-control-allow-credentials rue +timing-llow-origin * +expires ri, + +content-security-policy dfault-src +contnt-encoding br +x-content-type-options osniff +c\ntent-md5 i4f5LnfeTwjEpPYLvEw9sg== +status 2\0 +ontent-length 3785 +x-xss-protection  +x-fb-debg HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== +last-modified Mo, +ate Fri, +vary Accept\Encoding +cont\nt-type text/css; +access-control-allow-origin  +cache-conrol public,max-age=31536000,immutable +access-control-allow-credentials rue +iming-allow-origin * +expires Fr, + +content-security-policy defalt-src +cntent-encoding br +x-content-type-options noniff +content-m5 fd9ZgENjjqTO/InJ/yzr9A== +status 20 +ontent-length 18878 +x-xss-protection  +x-fb-de\ug elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== +last-modified Mon\ +dae Fri, +vary Accet-Encoding +contnt-type text/css; +access-control-allow-origin \ +cahe-control public,max-age=31536000,immutable +access-control-allow-credentials tre +timng-allow-origin * +expires Fi, + +content-security-policy default-rc +conten-encoding br +x-content-type-options noniff +content-md mgTL4W9gmblv6l6wXzZodA== +status 20 +conten-length 6081 +x-xss-protection  +x-fb-d\bug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== +last-modified Mo, +dae Fri, +vary Accpt-Encoding +content-typ text/css; +access-control-allow-origin  +cache-contr\l public,max-age=31536000,immutable +access-control-allow-credentials tru +tiing-allow-origin * +expires Tu, + +content-security-policy dfault-src +ontent-encoding br +x-content-type-options osniff +contet-md5 FWVLk47e/1NAPOLzKy9mZQ== +status 2\0 +content\length 9648 +x-xss-protection +x-fb-d\bug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== +last-modified Mn, +da\e Fri, +vary Accet-Encoding +conent-type text/css; +access-control-allow-origin  +cache-contro public,max-age=31536000,immutable +access-control-allow-credentials tue +tming-allow-origin * +expires Fr, + +date Fri +last-odified Mon, +status 20 +c\ntent-type image/jpeg +access-control-allow-origin +cache-ontrol max-age=1209600, +timing-allow-origin +ontent-length 37398 +expires Tu, + +content-security-policy defaul-src +content-encoing br +x-content-type-options osniff +tatus 200 +vary Orign +vry Accept-Encoding +x-xss-protection  +pagma no-cache +x-fb-debug T2Fb6tov4/VU2CcWE1iGbdCVWGl3zikBGu30FonV6DpxMLxgWwyWIo0r27g0TL65MZ7X4i2ohsyr74hTG3jKQ== +x-frame-opions DENY +date F\i, +exect-ct max-age=10, +strict-transport-security max-age=15552\00; +acces-control-allow-methods OPTIONS +content-type te\t/javascript; +access-contro-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-ebug, +cache\control private, +access-control-allow-credentials tre +exp\res Sat, + +content-security-plicy default-src +content-encoding b +x-content-ype-options nosniff +content-md5 2nocW0AmN98W+9vj2rtAA== +sttus 200 +content-length 1\55 +x-xss-protectin 0 +x-fb-debug J95hDW9snSIZlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== +las-modified Mon, +date Fi, +\ary Accept-Encoding +content-type tex/css; +access-control-alloworigin * +cache-control public,max-age=3153000,immutable +access-control\allow-credentials true +timing-allow-origin  +ex\ires Fri, + +contentsecurity-policy default-src +content-encoding r +x-contenttype-options nosniff +content-md5 V/4SheZbR98CCYd4h3cAg== +statu 200 +content-length 174 +x-xssprotection 0 +x-fb-debug xQLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3ILRtdSZOhWsixw== +last-moified Mon, +date Fri +ary Accept-Encoding +content-type txt/css; +access-control-allow-oigin * +cache-control public,max-age=31536000,immutabl +acces-control-allow-credentials true +timing-allow-origin +epires Fri, + +content-security-poicy default-src +content-encoding b +x-conten-type-options nosniff +status 00 +ary Origin +vary Accept-Encoing +x-xss-protectin 0 +pragma n-cache +x-fb-ebug CmCWPlmqCm/uFgOIozX0baTftxZ3VhE4LyBiaS1Ba8d/f9IdOfG/DxhxqHc3JdaUlawX18BM8DURXwNblLHteA== +x-frame-options DEN +dat Fri, +expect-ct max-age10, +strit-transport-security max-age=15552000; +access-control-allow-methods OPTI\NS +content-tpe text/javascript; +access-control-allow-origin https://ww.facebook.com +access-control-expose-heders X-FB-Debug, +cache-control pr\vate, +access-control-allowcredentials true +expires St, + +x-fb-debug ORWOg2jR1rbO1ILKezoBrqCYFwqccLo76Z0yTAXhy9kK94PkFLtETQ8IkakHHwtfpp/aE1Wu7v6o+RRvhVTCT== +x-content-typ\-options nosniff +last-modified Mo, +content-m5 aceXgUioFutSxdIu20vnQQ== +date ri, +staus 200 +content-type imge/png +access-control-allow-\rigin * +cache-control public,max-age=3153600,immutable +acess-control-allow-credentials true +content-security-policy \efault-src +timing-allo-origin * +content-length 1\7 +x-xss-protectin 0 +expires hu, + +date Fri +last-mdified Wed, +status 00 +contenttype image/jpeg +access-control-allow-origin +cche-control max-age=1209600, +timing-allow-origin  +contet-length 1066 +expires \ed, + +x-fb-debug hmeONhxlOikUn5JWEr5LODXNSDoQr4Al9oZByowJnsG768Yr9lqfAocuoDG3ET6GHtZCGyboYlfXgcsNxzXsg== +x-content-type-ptions nosniff +last-modified \on, +contnt-md5 W6cjFtLyG3NmnM599q2XQw== +status 20 +ate Fri, +strict-transport-security max-age=315\6000; +content-\ype image/png +access-control-allow-origin +cache-cotrol public,max-age=31536000,immutable +access-control-allow-credentials t\ue +timin\-allow-origin * +content-length 07 +x-xss-p\otection 0 +expires St, + +date Fi, +last-odified Wed, +status 20 +contenttype image/jpeg +access-control-allow-origin  +ache-control max-age=1209600, +timing-allow-origin  +content-lengh 948 +expires Wed + +date Fi, +las\-modified Mon, +status 20 +c\ntent-type image/jpeg +access-control-allow-origin \ +cache-conrol max-age=1209600, +timing-allow-origin +cntent-length 2152 +expires Mo, + +content-security-policy default-sc +content-e\coding br +x-content-type-options nosnif +sta\us 200 +vary Oigin +v\ry Accept-Encoding +x-xss-protection  +pagma no-cache +x-fb-debug UVv0oe/+es+7dgoQWv9n0RgnGfm+xsnA/Iq5fD3aHwBMr11k5BvSh+BzI6zihX5/h/8orIE/QfjkWLv8Be9Og== +x-fram-options DENY +date \ri, +xpect-ct max-age=10, +strict-transport-security max-age=1555200; +ccess-control-allow-methods OPTIONS +content-type application/x-javacript; +access-control-llow-origin https://www.facebook.com +access-control-expose-headers X-FB-Dbug, +cache\control private, +access-control-allow-credentials tre +exires Sat, + +contet-security-policy default-src +content-encoding \r +x\content-type-options nosniff +status 20 +var Origin +vary Accept-Encoing +x-xss-protction 0 +pragma no-cahe +x-fb-debg JbOY87U1He0j0KzsfkkstH/yjYU1mBIa9guTiQhk/yd0UeMIEA6Nrxy8BZZzquA0hE2FkL4XzPXf0zZa4TUDSQ== +x-frame-options DEY +dte Fri, +expect-ct mx-age=10, +strct-transport-security max-age=15552000; +access-control-allow-methods OPTINS +contenttype application/x-javascript; +access-control-allow-origin htps://www.facebook.com +acces-control-expose-headers X-FB-Debug, +cache-control pivate, +access-control-allow-credentals true +expires Sa, + +content-security-policy default-rc +content-encding br +x-content-type-options osniff +sttus 200 +vary Orign +vay Accept-Encoding +x-xss-protection  +pragm no-cache +x-fb-debug i6EVcXfsFOTqpkGOYUS2B1wz2AQjlNYF\Ator8A5wVeRimZnRcztk9OElPuLHrD4MkKr9qlhAx6UM6Me6xVkNg== +x-frame-optins DENY +date Fr\, +expect-c max-age=10, +strict-transport-security max-age=1552000; +acess-control-allow-methods OPTIONS +content-type applicaion/x-javascript; +access-control-allw-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug\ +cace-control private, +access-control-allow-credentials tru\ +expirs Sat, + +content-security-polic\ default-src +content-encoding r +x-content-\ype-options nosniff +status 00 +vry Origin +vary \ccept-Encoding +x-xss-protectin 0 +pragma o-cache +x-f-debug 3saA1PCrN28LM0iyAb4VugAJLlHFaIR1k8aghHr7PrEqKeJRk3tHffLkr9mi+Wc0QCEUGnrswKLaGF2/wbNqPw== +x-frame-options DEN +dat Fri, +expect-ct max-ae=10, +strict-transport-scurity max-age=15552000; +access-control-allow-methods OPTIOS +\ontent-type application/x-javascript; +access-control-allow-origin htts://www.facebook.com +access-control-expose-header X-FB-Debug, +cache-control privat, +access-control-allow-credntials true +expires Sat + +content-security-policy de\ault-src +content-encodin br +x-content-type-options no\niff +staus 200 +vary Oigin +vry Accept-Encoding +x-xss-protection  +prama no-cache +x-fb-debug nWHIgMSJK2w22Lxm4mwfyGWKtZteyQUVxZ4I/tLBFIv3MOEk3LNRFfzXe0ZjEYzrAWFdq\etH7nzOVqGJn2ojA== +xframe-options DENY +date Fri\ +expect-c max-age=10, +strict-transport-security max-age=1555200; +access-control-allow-mehods OPTIONS +content-type application/x-javascrip; +access-con\rol-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-De\ug, +cache-conrol private, +access-control-allow-credentials \rue +xpires Sat, + +content-security-pol\cy default-src +content-encoding b +x-content-tye-options nosniff +status 00 +var\ Origin +vary Accept-Ecoding +x-\ss-protection 0 +pragma nocache +x-fb-ebug LX9x0T+zbHhQlpqjecnJ8AnoHt9JkvRR8x4Txp5TKgBpzroSrNl/WZWaFwaYCbTheV8/ffnTZDPExwCCCAttUQ== +x-frame-options \ENY +dae Fri, +expect-ct max-\ge=10, +strit-transport-security max-age=15552000; +access-control-allow-methods PTIONS +content-ty\e application/x-javascript; +access-control-allow-origin https://www.faebook.com +access-control-expose-header X-FB-Debug, +cache-control rivate, +access-controlallow-credentials true +expires Sa\, + +content-security-policy defult-src +content-encodng br +x-content-type-options noniff +staus 200 +vary Origi +var Accept-Encoding +x-xss-protection \ +pr\gma no-cache +x-fb-debug BJo0rSTzS5YBo+ZS+O0KsUb5qSihZkY0n4ER+ShvqBv\v6Lcym3PqqRD1uXBJu0fB2XxA87MBhGyxQszl8BtLQ== +x-\rame-options DENY +date Fr, +expect-\t max-age=10, +strict-transport-security max-ag=15552000; +access-control-allow-ethods OPTIONS +content-type application/xjavascript; +access-control-allow-oigin https://www.facebook.com +access-control-expose-headers X-FB-Debug +cachecontrol private, +access-control-allow-credentials tru +exires Sat, + +contentsecurity-policy default-src +content-encoding b\ +x-content-type-optons nosniff +status 20 +ary Origin +vary Accept-Enoding +x-xs-protection 0 +pragma no-cahe +x-fb-ebug WiJG+zsrWf46xpzJ42rgkAuaSJ3ZsbG257drL8mGDBzGlHg3r+P7YelbWUqw+R7V9m5K3s8UdpvC7mr9QsYUhg== +x-frame-options DEY +dat Fri, +expect-ct ma\-age=10, +strict-transp\rt-security max-age=15552000; +access-control-allow-methods OPTINS +cotent-type application/x-javascript; +access-control-allow-origin https://www.faceook.com +ccess-control-expose-headers X-FB-Debug, +cache-control rivate, +access-control-allow-credentils true +expires Sat + +content-security-policy frame-ancstors +content-security-plicy default-src +content-encoding b +-content-type-options nosniff +status 00 +vay Origin +vary Accept-ncoding +x-xss-potection 0 +pragma no-\ache +x-fbdebug 11y9sN7qtzOoijlRDs+7xfzoE+Sj910j9prMSJfaLU4LFTjH9AcRVglyp0yFirQRX9DQgZ3Ab1YD4XhJsB0u5Q== +date ri, +\xpect-ct max-age=10, +strict-transport-security max-age\15552000; +access-control-allow-method OPTIONS +content-type text/html +access-control-allow-origi https://www.facebook.com +access-control-expose-headers X-FB-Debg, +cche-control private, +access-control-allow-credentials rue +et-cookie oNcnS=gpojSOS; +expires at, + +content-security-policy defaul\-src +content-encodin br +x-content-type-options nosnff +cont\nt-md5 j8T0XBmPlo08jOXtTJ3MEw== +status 20 +ontent-length 198 +x-xss-protection \ +xfb-debug f4/9IxVq4HZYZ8dV9P6xeLypQNS2qEx/kNF3NoX9D8Z0nshFfF6M7lqeabFqQD5b50R/Iekbf9xeyr56aEUi7g== +last-modified Mo, +\ate Fri, +vary Accpt-Encoding +contet-type text/css; +access-control-allow-origin  +ache-control public,max-age=31536000,immutable +access-control-allow-credentials \rue +timin-allow-origin * +expires Sat + +content-security-policy default-rc +conten-encoding br +x-content-type-options nosnff +conent-md5 b5vUN/sgd315IdDwXDUejw== +status 00 +content-lngth 7295 +x-xss-protection  +x-fb-ebug z1Uuj6gF8E4sDIH29heu0v9+IW8Qwj6SF6YguAbWUCIZ7J4tru2CO9ThwgXalfaoPYw3awSXFimU1ch6EjdRRw== +last-modified Mn, +dae Fri, +vary Accept-Encodin +cotent-type text/css; +access-control-allow-origin +c\che-control public,max-age=31536000,immutable +access-control-allow-credentials tru +timing-allow-oriin * +expires St, + +content-security-policy defalt-src +ontent-encoding br +x-content-type-options \osniff +contentmd5 3N5sn/pluRe+kZxjcR6Ibw== +status 00 +conten-length 9375 +x-xss-protection +x-fb-debu zEkvlyyBDCxhqzxWZSnIw8rrxVfQCOwLWf4j1EGm6yPSUxebfgJ50WqBTYRK0qHORbF3ZV7l6EGN9mV5+Ox51w== +last-modified Mon +dae Fri, +vary Acept-Encoding +cotent-type text/css; +access-control-allow-origin  +cachecontrol public,max-age=31536000,immutable +access-control-allow-credentials \rue +timing-llow-origin * +expires Fr, + +content-security-policy defult-src +content-encod\ng br +x-content-type-options nosnff +content-md\ i4f5LnfeTwjEpPYLvEw9sg== +status 00 +contet-length 3785 +x-xss-protection  +x-fbdebug HFxhYohULlb8E3sD/Eg19GcVRvofh7z+3WFVWDOOseCq45fsJaOx7VzQrmTkNm4s+r8A3NMo/6jvtZgXGd0fDg== +last-modified M\n, +dte Fri, +vary Accep-Encoding +content-ype text/css; +access-control-allow-origin +cache-conrol public,max-age=31536000,immutable +access-control-allow-credentials tre +tming-allow-origin * +expires Fr, + +content-security-policy deault-src +content-enoding br +x-content-type-options nosiff +contentmd5 fd9ZgENjjqTO/InJ/yzr9A== +status 2\0 +content-\ength 18878 +x-xss-protection  +x-fb-debg elyhddPXASAD8h98EDjatWSTdvoJpPBU72YT3aTTgwOGtZr3TyziG+ehBXKAos0TdmDz2OGqubSmtwQo7C65Qw== +last-modified Mn, +dae Fri, +vary Accept-Encodin\ +conten\-type text/css; +access-control-allow-origin  +cace-control public,max-age=31536000,immutable +access-control-allow-credentials tue +timing-allow-rigin * +expires Fi, + +content-security-policy defult-src +content-enoding br +x-content-type-options nosnif\ +content-md\ mgTL4W9gmblv6l6wXzZodA== +status 20 +content-lengt 6081 +x-xss-protection  +x-fb-deug FkXkGb3pnCM87rbudOQy7HGRXyjmlyeR4Sl8mlgajWJm/sxbWLY2ForWTCG5RIfZUXQMooC1KkGGSARml7Hx7g== +last-modified \on, +dte Fri, +vary Accept-Enco\ing +cotent-type text/css; +access-control-allow-origin \ +cache-cntrol public,max-age=31536000,immutable +access-control-allow-credentials rue +iming-allow-origin * +expires Tu, + +content-security-policy de\ault-src +content-encodin br +x-content-type-options nosnff +cotent-md5 SqewXybmJVo1v4gA0JLGBQ== +status 20 +cntent-length 738 +x-xss-protection  +x-fb-debg KC/Mv8BSpLzgKNnb1cJgXL8dPdim8GGQRbNyFfUpswJaoxnMQeHpRWlZwFceTKDlmlF+3I1PWGIgOE9iug58Qw== +last-modified \on, +ate Fri, +vary Accept-Enoding +contet-type text/css; +access-control-allow-origin  +cace-control public,max-age=31536000,immutable +access-control-allow-credentials tre +tim\ng-allow-origin * +expires ri, + +content-security-policy defaul-src +ontent-encoding br +x-content-type-options nosnif +content-md FWVLk47e/1NAPOLzKy9mZQ== +status 20 +content-lngth 9648 +x-xss-protection  +x-f-debug abRR4r4oBVUqZWvIP6QKouhIxOaOLXY2lbTddVXnaj+SGtjA55oyoRLEeuzi8ktKPfHjCOi5hkdkZLU7KrFAMw== +last-modified Mo, +dte Fri, +vary Accept-ncoding +contnt-type text/css; +access-control-allow-origin  +cace-control public,max-age=31536000,immutable +access-control-allow-credentials tre +timing-allow-rigin * +expires Fri + +x-fb-debug ivI86tTrFwX9U5sLjaxj7fvac7JDJwsEi9Eja2Z4Oy4C7nmZIF2IkB8o8XqfevLcTTOzzMMwFDwypn5k6bIXw== +x-contet-type-options nosniff +last-modified Mo, +content-m5 IHh5jFrVTE8LJvIHfLuDPA== +date Fri +sttus 200 +content-type imae/png +accss-control-allow-origin * +cache-control public,max-age=31536000,immutble +access-cotrol-allow-credentials true +content-security-policy defaut-src +timing-llow-origin * +content-length \56 +x-xss-rotection 0 +expires hu, + +date ri, +last-modfied Mon, +status 20\ +conte\t-type image/jpeg +access-control-allow-origin  +cache-cntrol max-age=1209600, +timing-allow-origin \ +cotent-length 36920 +expires Fr, + +content-security-policy default\src +content-ecoding br +x-content-type-options nosnff +contentmd5 YZP/0rJ9pw2vE+OCDm8w5Q== +status 20 +content-leng\h 2031 +x-xss-protection  +x-b-debug NNF+j6+XOFrfdhzYpIcXN8eoCwGFoh5LQhEtfDyAVBLtSL4n56dyb+kUyPAOLL4HokctaJ9bHKv6JsDRAvFzpQ== +last-modified Mon\ +dte Fri, +vary Accept-Encoing +contenttype text/css; +access-control-allow-origin  +cache-ontrol public,max-age=31536000,immutable +access-control-allow-credentials tru +tming-allow-origin * +expires \ri, + +content-security-policy default-rc +cotent-encoding br +x-content-type-options nosnff +content-d5 2nocW+0AmN98W+9vj2rtAA== +status 00 +content-ength 1755 +x-xss-protection +x-fbdebug J95hDW9snSIZTlYoBBWWgc4IKT9xaug+K4alKpRqBm4+CZcI8lem0tZDeOTcN241RDx5hRnvNFGykEOE4GYKgA== +last-modified Mon +dat Fri, +vary ccept-Encoding +cntent-type text/css; +access-control-allow-origin  +cache-con\rol public,max-age=31536000,immutable +access-control-allow-credentials tru +timingallow-origin * +expires ri, + +content-security-policy deault-src +content-enoding br +x-content-type-options nosnif +statu 200 +vary Orign +ary Accept-Encoding +x-xss-protection  +pra\ma no-cache +x-fb-debug VJPPpdIuna0PsAOJTkd+NZrSo/smOqSCe00kT70yq1W+3WFV69RoCGxXDwfGHAHkOIzx3H6IQBmGV+mRQbwNw== +xframe-options DENY +date Fi, +expct-ct max-age=10, +strict-transport-security max-age=15552000 +access-control-allw-methods OPTIONS +content-type textjavascript; +acces-control-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-ebug, +cache-cotrol private, +access-control-allow-credentials tru\ +expirs Sat, + +content-security-poli\y default-src +content-encoding r +xcontent-type-options nosniff +content-md5 V/4SheZbR98CwCYd4h3cAg= +s\atus 200 +content-length 214 +x-xss-potection 0 +x-fb-debug QLFkzhVH1L75zoJ7fIXgK9KIbeZtNhXeXs38x/2yUL4Rrygt9g/utEBUzOY7EejJPR3dY3IKLRtdSZOhWsixw== +lst-modified Mon, +date Fri +v\ry Accept-Encoding +content-type tex/css; +access-control-allow-ori\in * +cache-control public,max-age=3153600,immutable +access-control-allow-credentias true +timing-allow-origin  +expire Fri, + +conte\t-security-policy default-src +content-encoding r +x-conte\t-type-options nosniff +status 00 +vay Origin +vary Accept-Enc\ding +x-xss-protecion 0 +pragma no-c\che +x-fb-\ebug hCRcDm8RuOwYbYu/YuM824iQWjlZblcAbg7abvZgYrLW6oe/CKJVOFVJx6FJ/h7LJRDOvvNoBYzvo1Pv0pH2AA== +x-frame-options DEN +dte Fri, +expect-ct \ax-age=10, +strict-tranport-security max-age=15552000; +access-control-allow-methods PTIONS +ontent-type text/javascript; +access-control-allow-origin htps://www.facebook.com +access-contol-expose-headers X-FB-Debug, +cache-control private +access-control-allow-credentia\s true +expires \at, + +date Fi, +last-\odified Mon, +status 20 +content-ty\e image/jpeg +access-control-allow-origin  +cace-control max-age=1209600, +x-fb-edge-debug ETqCNIawZjlBn_-DsYnz8Eke5UQ5XSMbncc1bgHpZPgcb9aHXXEgTr2zbPLCc\AYd63x6e7HEZvELIF5ZU-YwQ +timing-allow-oriin * +content-length 2\54 +expirs Fri, + +dte Fri, +last-modified Mn, +sta\us 200 +content-type i\age/jpeg +access-ontrol-allow-origin * +cache-control maxage=1209600, +timing-llow-origin * +content-length 283 +expir\s Wed, + +conten\-security-policy default-src +content-encoding r +x-content-typ-options nosniff +status 20 +ary Origin +vary Accet-Encoding +x-xs-protection 0 +pragma no-cche +xfb-debug 0LaxLj167sUn/Smj88vRmssRRg01q+EcQbQOHpjOzYjB2fYy7BDvq2qHg4YXAAPpKAlfBymVLBwrd/9GCs/GwA== +x-frame-options ENY +dte Fri, +expect-ct max-ag=10, +strict-trnsport-security max-age=15552000; +access-control-allow-methods OPTI\NS +content-tpe application/x-javascript; +access-control-allow-origin https//www.facebook.com +access-control-expose-header X-FB-Debug, +cache-control privat, +acess-control-allow-credentials true +expires Sa, + +content-security-policy default-sc +content-encoing br +x-content-type-options nsniff +tatus 200 +vary Oriin +vay Accept-Encoding +x-xss-protection  +ragma no-cache +x-fb-debug sv6s4cVWgre7iG2N4AjtMoA/v9Hp+fLNOn5AUHBBip02YKfnHaZG2RNsYjT/cqmrRHRg1g\2EAVSqdfO2bJHsw== +x-fame-options DENY +date Fi, +ex\ect-ct max-age=10, +strict-transport-security max-age=1555000; +acess-control-allow-methods OPTIONS +content-type application/x-javas\ript; +access-cont\ol-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-ebug, +cache-ontrol private, +access-control-allow-credentials tr\e +expres Sat, + +content-securi\y-policy default-src +content-encoding r +x-content-type-option\ nosniff +status 00 +var Origin +vary Accpt-Encoding +x-xss-protectin 0 +pragma no-cach\ +x-f-debug +qvKJUxHytS9y2J3fUAg4/Oe6iQG4N4f5I7mhclUiM6QFJWTvkxEY0hvcHqpio5YDc1+2TNGs0uks5n8EDpJZQ== +x-frame-options ENY +ate Fri, +expect-ct max-age=0, +strict-transport-securi\y max-age=15552000; +access-control-allow-methods OTIONS +content-ype application/x-javascript; +access-control-allow-origin https://www.fcebook.com +access-control-expse-headers X-FB-Debug, +cache-control privte, +access-control-allow-creentials true +expires S\t, + +content-security-policy defult-src +content-encodig br +x-content-type-options osniff +\tatus 200 +vary Orgin +vay Accept-Encoding +x-xss-protection  +pr\gma no-cache +x-fb-debug Ialaex2lAp8FVggaIlNE5V7+ntPp38j2nvicX\83MHQYhvD8m5MkH1zdjj/g0Rfh5Q1WuX366h6aKxfsp0Mhhg== +x-frame-opions DENY +date ri, +epect-ct max-age=10, +strict-transport-security ma\-age=15552000; +access-contol-allow-methods OPTIONS +content-type applicatin/x-javascript; +access-control-allow-o\igin https://www.facebook.com +access-control-expose-headers X-FB-Debg, +cache-contrl private, +access-control-allow-credentials tre +ex\ires Sat, + +content-securty-policy default-src +content-encoding b +x-cotent-type-options nosniff +status \00 +vay Origin +vary Accet-Encoding +x-xss-protecion 0 +pragma no-ache +xfb-debug lKraYNnYGgMz6gqiG0m9WXRreHg9Z5n/9tEbyJCs0FFsF0LmdR73aEDUXTqdAG7VhKrQnFfHXjxEZ0N7yAbR+Q== +x-frame-options DEY +dae Fri, +expect-ct ax-age=10, +strict-transport-securiy max-age=15552000; +access-control-allow-methods PTIONS +cotent-type application/x-javascript; +access-control-allow-origin http://www.facebook.com +acces\-control-expose-headers X-FB-Debug, +cache-control privte, +access-cotrol-allow-credentials true +expires Sa, + +content-security-policy defult-src +ontent-encoding br +x-content-type-options nosnif +st\tus 200 +vary Orgin +vry Accept-Encoding +x-xss-protection  +pagma no-cache +x-fb-debug 24u4W9n6RfnFkdHetRHiq9arEYTTBhydET+2+9970OPxlY7VyTnD/VI4cQo9cCSqv1ame8zmVAAP2e3WPhOBw== +x-rame-options DENY +date Fri +expect-c max-age=10, +strict-transport-security max\age=15552000; +access-controlallow-methods OPTIONS +content-type application/x-javascrpt; +access-control-allw-origin https://www.facebook.com +access-control-expose-headers X-FB-Debug +cache-contrl private, +access-control-allow-credentials tue +expire Sat, + +content-securit\-policy default-src +content-encoding b +x-content-type-optios nosniff +status 20\ +ary Origin +vary Accept-Encodng +x-xss-potection 0 +pragma no-ca\he +x-fb-debg cQfzBLtGIzv/gkJzRKFpBvCukbwBy9Ah3X5IL7msjOIgPkYdJ/gEoZadKNsvWNd+P+p81Xr4hiTsWnYvbq4ogw== +x-frame-options DEN +dae Fri, +expect-ct ma\-age=10, +strict-transport-scurity max-age=15552000; +access-control-allow-methods OPTION\ +content-tpe application/x-javascript; +access-control-allow-origin https://www\facebook.com +access-ontrol-expose-headers X-FB-Debug, +cache-control privte, +access-contr\l-allow-credentials true +expires St, + +content-security-policy deault-src +content-encodng br +x-content-type-options nsniff +statu 200 +vary Oriin +var Accept-Encoding +x-xss-protection  +pra\ma no-cache +x-fb-debug 3XiBcZLt5O/nvcB\B9Jd5ZGyMv62DXvOyccJN3hr1h5otKloXez8tKF3KxDMfS+cTEa2SDzAiGGl/301LcAzaw== +x-frame-opions DENY +date Fi, +expect-c max-age=10, +strict-transport-security max-age=155520\0; +access-ontrol-allow-methods OPTIONS +content-type text/javascript +access-c\ntrol-allow-origin https://www.facebook.com +access-control-expose-headers X-FB-Debu, +cache-contol private, +access-control-allow-credentials \rue +expirs Sat, + +content-security-polcy default-src +content-encoding r +x-conte\t-type-options nosniff +content-md5 jfOCzNx/2cFBFpAlRbWwg== +tatus 200 +content-length 705 +x-xssprotection 0 +x-fb-debug BQ8sB5VGbkE9woIwdpfAlv07SQw0nettHRumToilCBIwoxdYeSIBMm/4h9s7+C0D6XkdIKHy/6fGQuTh85Wuw== +last-odified Mon, +date Fi, +var Accept-Encoding +content-type textcss; +ccess-control-allow-origin * +cache-control public,max-age=1536000,immutable +access-cotrol-allow-credentials true +timing-allow-origin  +exires Fri, + +content-s\curity-policy default-src +content-encoding b +x-conten-type-options nosniff +content-md5 b6p/+eUIEnbvgKixESeog== +\tatus 200 +content-length 467 +x-xss-protectio 0 +x-fb-debug \NVr1RX5JQw1VVmAPTvFz1qBToUvwVtUnqIvtA5sR/dBPk40sgDomfGCk0MDEv0N4BSAMMXBCgpKfxeyPmplMw== +lst-modified Mon, +date Fi, +v\ry Accept-Encoding +content-type applcation/x-javascript; +access-contol-allow-origin * +cache-control public,\ax-age=31536000,immutable +access-control-allow-credetials true +timing-allow-origin  +xpires Fri, + +content-security-olicy default-src +content-encoding b +x-conten-type-options nosniff +status 20 +var Origin +vary Accpt-Encoding +x-x\s-protection 0 +pragma no-cahe +x-fb-dbug CF8moTgH2QAU0n0gAY0VDcCm9pVaY1l2x4Edbu82ixEfNAZC/tg99GFN/c1HBwhkVVAEMhtBw5DovuzHpvrHBA== +x-frame-options ENY +dte Fri, +expect-ct maxage=10, +strict-transort-security max-age=15552000; +access-control-allow-methods OPIONS +content\type application/x-javascript; +access-control-allow-origin https://www.facebook.co\ +acess-control-expose-headers X-FB-Debug, +cache-control rivate, +acces-control-allow-credentials true +expires Sat + +pragma no-cche +x\fb-debug ej9iz3s/lmrV13M3tvaaFzBfi+OmflI2x7D5HU5K40Xv7pKgzVDs7ivV6BgaxxQhxC13o8FVsjAMAEtwd0kSmw== +content-encoding r +x-co\tent-type-options nosniff +date Fi, +epect-ct max-age=10, +strict-transport-security max-age=5552000; +ontent-type text/html; +status 20 +cache-co\trol private, +content-security-policy frame-ncestors +content-securiy-policy default-src +set-cookie oNcnSgpojSOS; +var Accept-Encoding +x-xss-protection  +exires Sat, + +x-fb-deug OxKw8TR8lbzIJU+2fUvDIwKqRu/aMmeaOMRtwmLh4Usz2Qm21k8r5zxc8oTr2aXdC9pMjy3vHyhEGZkmA4A2MQ== +vary Oigin +staus 302 +location https://fbcdn.n\t/security/hsts-pixel.gif?c=2.5 +dat Fri, +strict-transport-security max-age=1555200; +access-control-allw-methods OPTIONS +content-type text/html +access-control-allow-oigin * +access-control-expose-headers X-FB-Debu, +access-control-allowcredentials true +content-length  + +date ri, +last-modifed Tue, +status 2\0 +content-tye image/jpeg +access-control-allow-origin  +cache-contol max-age=1209600, +timing-allow-origin  +cotent-length 934 +expires Wed + +x-fb-debug o+N7DXgGFIjeSrKe/AohasMYqi2mPJg+GXV9UxT8GGN7MMYLeCm40rnnsGT54Y1TB/8g/NR024/bZ4IRdnm3Q== +x-content-type\options nosniff +last-modified Mon +contentmd5 WFuqLsaU44qDUAslAtUA0A== +date Fri +sttus 200 +content-type iage/png +access-control-alow-origin * +cache-control public,max-age=31536000,immuable +access-control-allow-creentials true +content-security-policy dfault-src +timing-allow-oigin * +content-length 535 +x\xss-protection 0 +expires Mo\, + +x-fb-debug o32lUy/wzCjBV96zWB7ERnzoHuO6hu+jP+qq0+qnUvrj7P+U/PUk+WdH6fu/zpCUA0VmdttY0PuhlmnLvQVyw== +x-conte\t-type-options nosniff +last-modified Mo\, +cntent-md5 /cHO8B3YAO/ChHs9p9JPDw== +date Fri +stats 200 +content-type image/pg +access-control-a\low-origin * +cache-control public,max-age=31536000,immutale +access-control-allow-creentials true +content-security-policy defalt-src +timingallow-origin * +content-length 5\8 +x-xss-protectin 0 +expires Thu + +date ri, +last-modif\ed Tue, +status 20 +cotent-type image/jpeg +access-control-allow-origin  +cache-contol max-age=1209600, +timing-allow-origin +content-lenth 836 +expires F\i, + +date Fr, +last-mdified Wed, +status 20 +contet-type image/jpeg +access-control-allow-origin \ +cache-cotrol max-age=1209600, +timing-allow-origin  +content-lenth 13307 +expires Fi, + +date Fri +last-\odified Tue, +status \00 +content-tpe image/jpeg +access-control-allow-origin  +cache-contol max-age=1209600, +x-fb-edge-debug RvuYQEJ3w9ho3lEjUWNiGa6vY4riNY5COqj9W1GIY8dvqMsqbJwLNzgg4Q3wN7_LgSuzb3WoJu6ZS_9unt0jw +tiing-allow-origin * +content-length 1342 +expire Fri, + +ate Fri, +last-modified Su\, +tatus 200 +content-type mage/jpeg +access-control-llow-origin * +cache-control max-ag=1209600, +timing-alloworigin * +content-length 1629 +e\pires Mon, + +dat Fri, +last-modified Tu, +sttus 200 +content-type imagejpeg +access-\ontrol-allow-origin * +cache-control max-ae=1209600, +x-fb-edge-dbug cXG-MBMAdvKTcjt8OJCXjW48y-yxYO1g1CVtvfNzkBXgpPTuh7Kt8VxpPK8-jYiCYHxzLag3SkUTBT31s68wsw +timing-allow-origin  +content-lengt 11954 +expires Fr, + +date Fi, +last-modfied Sat, +status 00 +contet-type image/jpeg +access-control-allow-origin  +cace-control max-age=1209600, +x-fb-edge-debug KSsp6S\oFvwd9tK658jJkNtmglqlI7glK9X2WngFYEoWOhqBo6BHZsXmbCZIyYK-5tLNFV4fHJ8qx71J9WwwHw +timing-allow-orign * +content-length 1225 +expres Fri, + +dat\ Fri, +last-modified Mo\, +satus 200 +content-type imag\/jpeg +access-controlallow-origin * +cache-control max-age=120600, +x-fb-edge-debu _pXCFVcHx2fhuNlZSvAWPJsJVj16r5LMNG_mKNFSEtAL2qIEp4aevBFIdeHONrP6EbUo-YdkPyl2ibPHEtO06g +timing-allow-origin  +cotent-length 16518 +expires ri, + +date Fi, +last-moified Wed, +status 20 +contet-type image/jpeg +access-control-allow-origin \ +cace-control max-age=1209600, +timing-allow-origin +content-ength 16676 +expires Sat + +date F\i, +las-modified Thu, +status 2\0 +content-tpe image/jpeg +access-control-allow-origin \ +cache-cotrol max-age=1209600, +x-fb-edge-debug 4QKv42fPsuZz_RHbzHsxSZw28FjNk43GtJKIyZ3KQR_2dPR4-n8GP6PxVcoWVWXuO6zkNYudqf92qu6wbYZag +timng-allow-origin * +content-length 9\46 +expi\es Fri, + +dae Fri, +last-modified hu, +statu 200 +content-type imge/jpeg +access-control-allow-rigin * +cache-control max-age=120600, +timig-allow-origin * +content-length 669 +expres Fri, + +dat Fri, +last-modified on, +tatus 200 +content-type imagejpeg +ac\ess-control-allow-origin * +cache-control max-ge=1209600, +x-b-edge-debug OcdlCYVtclhoanH3vEUkcgp5xdsSJSXMxlEhJ4bO7qyasGUPhnVWXtNyeZvMeI_pD-VInWssMGo8yegAx2KtJA +timing-allow-origin \ +cotent-length 10193 +expires Fr, + +date Fr, +last-modiied Sun, +status 20 +content-typ image/jpeg +access-control-allow-origin  +cache-ontrol max-age=1209600, +x-fb-edge-debug SQiVqS4015WAz4E9qhwJNtBwWENBziYq0Q3GD4sOYsLuZyU_yZchRLWo4Tok6HP1SVJKWf-ELFcOxWYmF7Q3A +timing-alloworigin * +content-length 0226 +expies Fri, + +ate Fri, +last-modified Mo, +st\tus 200 +content-type image/jpg +access-control-allow-rigin * +cache-control max-age1209600, +x-fb-edge-de\ug lQRqvNCns5jAwUvHJx-aRiKhxS87KyomZNM8op0uc6T4Q-Kzir7UvfG0Cfqbm9jrsxx-whuTMw56_4y6nfIyPg +timing-allow-origin \ +content-\ength 13412 +expires Fri + +date Fri\ +last-modifed Tue, +status 2\0 +ontent-type image/jpeg +access-control-allow-origin +cache-cntrol max-age=1209600, +x-fb-edge-debug iSX08DnUOAjuXq5615qrlzXjQHn56Eobci-Mkig918wUVNb2Bkc8fFuOhjoBymu98kH0dk4PURTTWQzo2xqeA +timng-allow-origin * +content-length 1399 +expire Fri, + +dae Fri, +last-modified Sat\ +tatus 200 +content-type imae/jpeg +access-contro\-allow-origin * +cache-control max-age=129600, +x-fb-edge-debu\ mFDVT8NJPWXtJAmYZED_iPs8jxXpC-j42LvTd-1oOAWjynfv6Un-JSL7wbb5wR6rJ3PbMj4-z-ha1JenE6t53A +timing-allow-origin  +content-legth 14750 +expires Fr\, + +date Fri +lastmodified Fri, +status 20 +content-ype image/jpeg +access-control-allow-origin  +cache-conrol max-age=1209600, +x-fb-edge-debug PKKgGhRqXZAPB-HTyUnisy5_eWZwRugxTDE0o1atSNZSu_vR_JNdyMjEkgnjm4BA07Ck-sPtAdewpiDmaULZw +timig-allow-origin * +content-length 1266\ +expi\es Fri, + +dte Fri, +last-modified Tue +tatus 200 +content-type image/jeg +access-controlallow-origin * +cache-control max-age=120960, +timing-allow-orgin * +content-length 946 +expi\es Fri, + +dte Fri, +last-modified St, +stats 200 +content-type i\age/jpeg +access-cntrol-allow-origin * +cache-control max-age1209600, +x-fbedge-debug SVE5wbBMq6nBPMdvWHwzhufMGUFZZwXUxfOdpvBQ2vvv15fP6Kdqc2voex9W0q728GbaAlIVivUbEHR5ZjO8Xg +timing-allow-origin  +content-le\gth 14253 +expires Fri + +date Fri +lst-modified Wed, +status 20 +content-tye image/jpeg +access-control-allow-origin  +cace-control max-age=1209600, +x-fb-edge-debug \GqgelCYFB0BiS6uYzD96dNa4BhiBfcQVtVD687YRc3V0Fq25BG83jav2srswSCAzcZj3v-vcBN5nEGpiQLayg +timing-allow-origi * +content-length 967 +epires Fri, + +ate Fri, +last-modified Tu, +statu 200 +content-type imagejpeg +access-control-llow-origin * +cache-control max-age=120960, +x-fb-ege-debug szdnBjD8T5IeEDrB7fAzeFse03nIrEhE30CecCV1x9mdMZrm5_w-dSBLJIqwF1nL3vyADJy5fJ1pqT4w0vNfQA +timing-allow-origin \ +cntent-length 9161 +expires Fri + +x-fb-debug SphHt6X8aaC4O7OrE5YStS9cLlGtO84gPXoWYeEUx8YETGBAUpAb6kZ1M9K2qvkOImJHKdLcDwtsWAkzbU3Fw== +x-content-tye-options nosniff +last-modified Mo, +c\ntent-md5 cH2zTAVPHVXw/aQfDhS/Bg== +date Fr\, +satus 200 +content-type mage/gif +access-control-allow-orign * +cache-control public,max-ag=31536000,immutable +access-control-allow-credentils true +content-security-policy defaut-src +timing-allow-orgin * +content-length 52 +x-xss-protectio 0 +expires S\n, + +x-fb-debug 8Y7xmhHv+dUABQ5G/C/MNsrpA0Kqadd59S8IxcuvsypxKRmzuNfxuGmHTjx2N7B/96SvyBm4CHcdpmHrM5G6A== +x-content-type-otions nosniff +last-modified Mo, +cotent-md5 YRyRbJo4R7CNEE1X8k7Jfg== +date F\i, +tatus 200 +content-type iage/gif +access-control-allow-oigin * +cache-control public,ax-age=31536000,immutable +access-control-allow-cr\dentials true +content-security-policy deault-src +timing-allow-ori\in * +content-length 4\ +x-x\s-protection 0 +expires T\u, + +date \ri, +last-modifie\ Tue, +status 20 +ontent-type image/jpeg +access-control-allow-origin  +cace-control max-age=1209600, +timing-allow-origin  +co\tent-length 1769 +expires Fr, + +date Fi, +last-modifid Sun, +status 20 +contenttype image/jpeg +access-control-allow-origin  +cach-control max-age=1209600, +timing-allow-origin \ +c\ntent-length 1986 +expires Wed + +date \ri, +last-modiied Wed, +status 20\ +conten-type image/jpeg +access-control-allow-origin \ +ca\he-control max-age=1209600, +timing-allow-origin  +content-lenth 1897 +expires Mo, + +date Fri +ast-modified Mon, +status \00 +ontent-type image/jpeg +access-control-allow-origin \ +cache-contrl max-age=1209600, +timing-allow-origin  +content-lengh 1649 +expires hu, + +date ri, +last-modi\ied Thu, +status 20 +co\tent-type image/jpeg +access-control-allow-origin \ +cache-ontrol max-age=1209600, +timing-allow-origin  +contentlength 1704 +expires St, + +date ri, +last-modifed Sat, +status 00 +\ontent-type image/jpeg +access-control-allow-origin +cache-contol max-age=1209600, +timing-allow-origin  +ontent-length 1764 +expires ri, + +x-fb-debug jLVtRmmf8FlBFmmvs77zLZ5kxGJFK0IqAKFtWQ76Z2EgBlPqA+zVbftdXn/CG4btJFwOvIwfVg1THxtuM9XrQ== +x-content-typeoptions nosniff +last-modified Mo, +cotent-md5 P3oj2EL6pHt7tkWGA5Yf5A== +date Fr, +tatus 200 +content-type image/pg +access-control-allow-orign * +cache-control public,ma-age=31536000,immutable +access-control-allowcredentials true +content-security-policy default-sr +timing-allow-oriin * +content-length 425 +x-xss-pr\tection 0 +expires Mn, + +x-fb-debug zgiRiFCyGejMO+S8ItrjPiYsRyk+QRGBIPYFs1MUy8X3d0Sv34P8iBvmFNGm64hI5o1LgAyFWCvpGoEWSI6Dw== +x-content-type-ptions nosniff +last-modified Mon +content-\d5 3T8z1xV6w0Ytr6bG8xDapg== +date Fri +s\atus 200 +content-type imge/png +acce\s-control-allow-origin * +cache-control public,max-age=31\36000,immutable +acces-control-allow-credentials true +content-security-policy defaut-src +timing-all\w-origin * +content-length \446 +x-xss-potection 0 +expires un, + +x-fb-debug YwWjkdpYzNYMlNNJD9CuSWSTbH0EI2+Dpe3Jq9nSVy1M3G/WtFrs8I+Gd/IIh5BxeJRXv40dMxgDqM8rJkLJg== +x-content-type-optios nosniff +last-modified \on, +contet-md5 hel74bGLstl9qZYs0X9wiw== +date Fi, +tatus 200 +content-type imag/png +access-control-a\low-origin * +cache-control public,max-ag\=31536000,immutable +acess-control-allow-credentials true +content-security-policy default-\rc +timing-allow-ori\in * +content-length 146 +x-xs-protection 0 +expires on, + +x-fb-debug fYuO1K2+pP/a0ojdgA4UMJftmsZbp94jLX+EinKxh1YpvdASqcNKLddBYWslALDzhbQsQ4IT6GNBwRpfYZdGQ== +ary Origin +status 02 +locatin https://fbsbx.com/security/hsts-pixel.gif?c=5 +date F\i, +strict-transport-secrity max-age=31536000; +access-control-allow-methods OPTION +c\ntent-type text/html; +access-control-allow-origin +access-control-expos\-headers X-FB-Debug, +access-control-allow-credentials tru +ontent-length 0 + +x-f\-debug D2C3KCUrNX0IcbEFFd98z4RNxDDCwBUCDHl90jXulGwOxmJxWO1aM7CrVtWJAoUuzAfDJNeCy5WqDd/b5kxZww== +vary Or\gin +satus 302 +location https://conect.facebook.net/security/hsts-pixel.gif +dat Fri, +strict-transport-security max-ge=31536000; +acess-control-allow-methods OPTIONS +content-type ext/html; +acess-control-allow-origin * +access-control-expose-headers X-F\-Debug, +access-co\trol-allow-credentials true +content-length + +date ri, +ast-modified Tue, +status 00 +content-typ image/jpeg +access-control-allow-origin \ +cachecontrol max-age=1209600, +timing-allow-origin  +content-l\ngth 1030 +expires at, + +content-security-policy defaul-src +contentencoding br +x-content-type-options nosnif +cont\nt-md5 GbW1CEUmglUhzaSOEdSaoA== +status 20 +content-ength 2729 +x-xss-protection  +x-fb-debg K7i4csmZ3STmUbcVQPDrwljTtYrLDVly/7Xbfm5Klrzml3q/Tot0QxJAoYongnFR0iIsXn59NC1FBJt9Jud/Wg== +last-modified on, +dae Fri, +vary Accet-Encoding +content-tpe text/css; +access-control-allow-origin  +cache-contro public,max-age=31536000,immutable +access-control-allow-credentials \rue +timing-llow-origin * +expires Fi, + +content-security-policy defult-src +content\encoding gzip +x-content-type-options nosnif +statu\ 200 +vary ccept-Encoding +content-lengh 57 +x-xss-protection +pra\ma no-cache +x-fb-debug 4vq/LxHnPcsIYiYckiARhkkv5jakxS8hEvHOxdsFoP9tdYOiJItfiYSGFGkhBZ\R3PE26p1LHDXOTAv2r4uTXg== +x-f\ame-options DENY +date Fri +strct-transport-security max-age=31536000; +content-type imag/gif +ac\ess-control-allow-origin * +cache-control priate, +exires Sat, + +x-fb-deug hseUHLM6SPODsqeO2RZmsm0tztto+XotuXfT5d0K0ABVXdi4WuGjySB5L54B7YXWqIF0lBl/pHFen7sspCEvrA== +x-content-type-options nsniff +last-odified Mon, +content-md5 2\HW2vCOWZxptNKZnZBIaQ== +dte Fri, +status 00 +ontent-type image/png +access-control-allow-origin  +\ache-control public,max-age=31536000,immutable +access-control-allow-credentials tru\ +contet-security-policy default-src +timing-allow-origin  +content-lenth 1006 +x-xss-protection \ +expres Sat, + +x-b-debug rLt2njfX8GUcpbqIDsCtJztJjtmYj0D1MfZ7NFDdCyhdUo3jSU+8ILYuDM2R0zWLaXmX87PyahwrVHk0EWq0GQ== +x-content-type-options nosnff +last-\odified Mon, +content-md5 hf9mDzhK3T9XugswoJ7w6== +dat Fri, +status 20 +conent-type image/png +access-control-allow-origin  +ache-control public,max-age=31536000,immutable +access-control-allow-credentials tue +content-security-poliy default-src +timing-allow-origin  +content-lenth 10609 +x-xss-protection  +expres Sun, + +content-security-\olicy default-src +content-encoding r +x-content-type-optins nosniff +status 20 +ary Origin +vary Accept-Encodin +x-xss-prtection 0 +pragma no-c\che +x-fb-dbug zKuFhCxJ+fk1ALL5zYIYhbxP0onfKxozWFYWWzA4S965WZXJEBlCwvmDdBwseLVL+w9o9IjGO2MhJJsvdneEvQ== +x-frame-options DEY +dat Fri, +expect-ct max-age=\0, +strit-transport-security max-age=15552000; +access-control-allow-methods OPIONS +cotent-type application/x-javascript; +access-control-allow-origin https://www.faebook.com +acess-control-expose-headers X-FB-Debug, +cache-control prvate, +access-control-allow-credentals true +expires Sa, + +content-security-policy dfault-src +contnt-encoding br +x-content-type-options nosnif +sttus 200 +vary Ori\in +ary Accept-Encoding +x-xss-protection  +pagma no-cache +x-fb-debug GNPnsjeqGsfo5CTG1T61oyUgkV6GWuWaQysaElCUg2hFkTiOjNloXJiJB8BG8XrPdCusfZBlIp4LqcSUwAQ7A== +x-frame-optons DENY +date Fi, +exp\ct-ct max-age=10, +strict-transport-security ma-age=15552000; +acces\-control-allow-methods OPTIONS +content-type pplication/x-javascript; +access-control-allow-orign https://www.facebook.com +access-control-expose-headers X-F-Debug, +cachecontrol private, +access-control-allow-credentials tre +expres Sat, + +conent-security-policy default-src +content-encoding b +x-contnt-type-options nosniff +status 20 +vry Origin +vary Accept-Encding +x-xss-protetion 0 +pragma no-ca\he +xfb-debug XKxMuee79bPaR3DNnKe3uX4QWg11cwbhMwLAoo5pZgXertc/e/kXEtJkZl675cIcUCyXRAdC6imCEPyl4yRqRA== +x-frame-options ENY +dae Fri, +expect-ct max-age=\0, +strict-transport-securiy max-age=15552000; +access-control-allow-methods OPTION\ +content-typ application/x-javascript; +access-control-allow-origin h\tps://www.facebook.com +access-contrl-expose-headers X-FB-Debug, +cache-control pivate, +access-control-allow-credential true +expires at, + +content-security-policy default-sc +content-encodng br +x-content-type-options n\sniff +cntent-md5 80EI7SblF/5CDFIwFGm3KA== +status 00 +content-l\ngth 17851 +x-xss-protection  +x-fb-debu +u+u+RXJTpu9orEwUh1kk9h5tRF+tk5oTd/K1j1eYB/htnFLJ8MpdFebaNpiQPCFSoZdONgVqmSmTz4r8OWFWQ== +last-modified Mn, +da\e Fri, +vary Accept-Encod\ng +contnt-type application/x-javascript; +access-control-allow-origin +cache-contol public,max-age=31536000,immutable +access-control-allow-credentials tue +timingallow-origin * +expires Fi, + +content-security-policy default\src +content-encoing br +x-content-type-options nsniff +content-d5 BBkMcEf61Nkmx/eSXCIoQw== +status 20 +content-ength 1120 +x-xss-protection  +xfb-debug 9FBANDg7RcA1p6bI6sH/gfd5OaSCNeQTKvqA3G1KQ+7RA5lSdB7bEs5xmwt3wvlt27wTIpE0r1+7vb/zv3ybcg== +last-modified Mo, +dat Fri, +vary Acept-Encoding +cotent-type application/x-javascript; +access-control-allow-origin  +cace-control public,max-age=31536000,immutable +access-control-allow-credentials tre +timing-allow-orgin * +expires \ri, + +content-security-policy defaul\-src +contnt-encoding br +x-content-type-options nsniff +contet-md5 9Nfy3C53u/Ywu2r8e8i4tg== +status 20 +cotent-length 6219 +x-xss-protection  +x-fbdebug 5c+nR6FAecnDHjYqXy+XnNY028sY1v72DFfEoTwA9DC/kIUrN+d9LwDoQzt1p8sMOC3NsPdlHv9PL7HLG9sWOg== +last-modified M\n, +dat Fri, +vary Accept-Encodin\ +contet-type application/x-javascript; +access-control-allow-origin  +cache-cotrol public,max-age=31536000,immutable +access-control-allow-credentials tue +timing-allw-origin * +expires Thu + +content-security-policy efault-src +cntent-encoding br +x-content-type-options \osniff +cntent-md5 PiHXNxZCUbdf5Zq2elJI6Q== +status 00 +co\tent-length 9348 +x-xss-protection \ +x-fb-ebug PisRElE9u27wtLXOsg/IKP8YR21ncVXpXMA8kGh1l7DV+O/wH8fys5g8bih8guJRmrrjvyifwQXceEDQOF4NNg== +last-modified on, +ate Fri, +vary Accept-Encding +conent-type application/x-javascript; +access-control-allow-origin +ache-control public,max-age=31536000,immutable +access-control-allow-credentials tr\e +timing-allow-oigin * +expires Fr, + +content-security-policy defaul-src +contet-encoding br +x-content-type-options osniff +contet-md5 IzoUHBEUROEs3o00XENnsA== +status 20 +content-lenth 619 +x-xss-protection +x-fb-debg n98TkqZ18WcK3LOHs1r/T80Sis/9rSTxbCfm6hmlBsJP7TTEF+whogcduEx6x3THC9ciYCYQkK9o/wWaMWuI4A== +last-modified Mon\ +dte Fri, +vary Accept-Encoing +content-tpe application/x-javascript; +access-control-allow-origin  +cche-control public,max-age=31536000,immutable +access-control-allow-credentials tue +timing-a\low-origin * +expires Fri + +content-security-policy default-rc +content-encodin\ br +x-content-type-options nosni\f +c\ntent-md5 YLFSkpjxno+EhBDQEmkYww== +status 20 +conte\t-length 676 +x-xss-protection  +xfb-debug Tf92zsNf/9wZXQW+9xFI0Q8Fb05esZI+GIn6VZAkhn6NnbyWsp4KgPyZAtuk1W3EvnH1qZBmwLLxFRbY9QWKqw== +last-modified Mn, +dae Fri, +vary Accept-Encodin\ +content-ype application/x-javascript; +access-control-allow-origin  +cachecontrol public,max-age=31536000,immutable +access-control-allow-credentials rue +timing-\llow-origin * +expires Fri + +content-security-policy defult-src +contnt-encoding br +x-content-type-options nsniff +stat\s 200 +vary Orign +var Accept-Encoding +x-xss-protection \ +pragm no-cache +x-fb-debug wRSkTC590t8WwiytNtAv5HmeZGwL8dJpQF5IMx39X69oxWin5RyKT+Fo0+3Kb17Ms3DLtNrdlseuJlje5SO/A== +x-frame-optios DENY +date \ri, +expect-c\ max-age=10, +strict-transport-security ax-age=15552000; +acces-control-allow-methods OPTIONS +content-type appication/x-javascript; +access-control-allow-rigin https://www.facebook.com +access-control-expose-headers X\FB-Debug, +cace-control private, +access-control-allow-credentials t\ue +e\pires Sat, + +da\e Fri, +last-modified ri, +statu 200 +content-type imagepng +access-control-all\w-origin * +cache-control max-age=129600, +timng-allow-origin * +content-length \9 +expirs Fri, + +content-security-olicy default-src +content-encoding \r +x-content-ype-options nosniff +status 20 +vry Origin +vary Accept-Ecoding +x-xss-prtection 0 +pragma \o-cache +x-fb-ebug tctLBJnET09BflPSiJ+KphBga2Uz4Zm+EL7ocriOaf4Ut2LTQpXfh4aWW8lFxIsmcFJAtIkSxqJEiLDCvoL7Jw== +x-frame-options ENY +d\te Fri, +expect-ct max-ae=10, +strict-ransport-security max-age=15552000; +access-control-allow-methods OPIONS +content-tpe application/x-javascript; +access-control-allow-origin ttps://www.facebook.com +access-contol-expose-headers X-FB-Debug, +cache-control pivate, +access-control-allow-credentals true +expires at, + +:status 00 + +pragma no-cach +\ate Fri, +content-encoding zip +srver EdgeChat +status 20 +x-frame-otions DENY +content-type appication/json +acc\ss-control-allow-origin https://www.facebook.com +cache-control privte, +acces-control-allow-credentials true +content-length 15 + +:status 40 + +content-security-policy defaultsrc +contnt-encoding br +x-content-type-options nsniff +stat\s 200 +vary Oriin +ary Accept-Encoding +x-xss-protection  +prgma no-cache +x-fb-debug 5TYop5RZdv3V93nsRwDPC9he+DAq/wN1NMbuuPYERVSXNj9hh9aTDd/JRo3oZuniry2F4WbXxZjMwum6xBP7g== +x-frame-optons DENY +date ri, +exect-ct max-age=10, +strict-transport-security max-ge=15552000; +access-control-al\ow-methods OPTIONS +content-type appliction/x-javascript; +access-control-allow-orig\n https://www.facebook.com +access-control-expose-headers X-FB-Debug +cache-contro\ private, +access-control-allow-credentials tru +xpires Sat, + diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/qifs/netbsd.qif b/external/lsquic/src/liblsquic/ls-qpack/test/qifs/netbsd.qif new file mode 100644 index 0000000..b2bb8bc --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/qifs/netbsd.qif @@ -0,0 +1,235 @@ +:method GET +:scheme http +:authority www.netbsd.org +:path / +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 +accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 +accept-language en-US,en;q=0.5 +accept-encoding gzip, deflate +connection keep-alive +upgrade-insecure-requests 1 +pragma no-cache +cache-control no-cache + +:method GET +:scheme http +:authority www.netbsd.org +:path /global.css +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 +accept text/css,*/*;q=0.1 +accept-language en-US,en;q=0.5 +accept-encoding gzip, deflate +referer http://www.netbsd.org/ +connection keep-alive +pragma no-cache +cache-control no-cache + +:method GET +:scheme http +:authority www.netbsd.org +:path /global.js +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 +accept */* +accept-language en-US,en;q=0.5 +accept-encoding gzip, deflate +referer http://www.netbsd.org/ +connection keep-alive +pragma no-cache +cache-control no-cache + +:method GET +:scheme http +:authority www.netbsd.org +:path /donations/donors.js +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 +accept */* +accept-language en-US,en;q=0.5 +accept-encoding gzip, deflate +referer http://www.netbsd.org/ +connection keep-alive +pragma no-cache +cache-control no-cache + +:method GET +:scheme http +:authority www.netbsd.org +:path /images/NetBSD-smaller.png +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 +accept */* +accept-language en-US,en;q=0.5 +accept-encoding gzip, deflate +referer http://www.netbsd.org/ +connection keep-alive +pragma no-cache +cache-control no-cache + +:method GET +:scheme http +:authority www.netbsd.org +:path /images/download-icon-orange.png +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 +accept */* +accept-language en-US,en;q=0.5 +accept-encoding gzip, deflate +referer http://www.netbsd.org/ +connection keep-alive +pragma no-cache +cache-control no-cache + +:method GET +:scheme http +:authority www.netbsd.org +:path /images/support-icon-orange.png +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 +accept */* +accept-language en-US,en;q=0.5 +accept-encoding gzip, deflate +referer http://www.netbsd.org/ +connection keep-alive +pragma no-cache +cache-control no-cache + +:method GET +:scheme http +:authority www.netbsd.org +:path /images/community-icon-orange.png +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 +accept */* +accept-language en-US,en;q=0.5 +accept-encoding gzip, deflate +referer http://www.netbsd.org/ +connection keep-alive +pragma no-cache +cache-control no-cache + +:method GET +:scheme http +:authority www.netbsd.org +:path /images/develop-icon-orange.png +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 +accept */* +accept-language en-US,en;q=0.5 +accept-encoding gzip, deflate +referer http://www.netbsd.org/ +connection keep-alive +pragma no-cache +cache-control no-cache + +:method GET +:scheme http +:authority www.netbsd.org +:path /images/donate-icon-orange.png +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 +accept */* +accept-language en-US,en;q=0.5 +accept-encoding gzip, deflate +referer http://www.netbsd.org/ +connection keep-alive +pragma no-cache +cache-control no-cache + +:method GET +:scheme http +:authority www.netbsd.org +:path /images/links/paypal.gif +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 +accept */* +accept-language en-US,en;q=0.5 +accept-encoding gzip, deflate +referer http://www.netbsd.org/ +connection keep-alive +pragma no-cache +cache-control no-cache + +:method GET +:scheme http +:authority www.netbsd.org +:path /images/links/stripe-black-donate-small.png +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 +accept */* +accept-language en-US,en;q=0.5 +accept-encoding gzip, deflate +referer http://www.netbsd.org/ +connection keep-alive +pragma no-cache +cache-control no-cache + +:method GET +:scheme http +:authority www.netbsd.org +:path /images/links/cafepress.png +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 +accept */* +accept-language en-US,en;q=0.5 +accept-encoding gzip, deflate +referer http://www.netbsd.org/ +connection keep-alive +pragma no-cache +cache-control no-cache + +:method GET +:scheme http +:authority www.netbsd.org +:path /images/westernlogo_sm.png +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 +accept */* +accept-language en-US,en;q=0.5 +accept-encoding gzip, deflate +referer http://www.netbsd.org/ +connection keep-alive +pragma no-cache +cache-control no-cache + +:method GET +:scheme http +:authority www.netbsd.org +:path /images/columbia.jpg +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 +accept */* +accept-language en-US,en;q=0.5 +accept-encoding gzip, deflate +referer http://www.netbsd.org/ +connection keep-alive +pragma no-cache +cache-control no-cache + +:method GET +:scheme http +:authority www.netbsd.org +:path /images/fastly.png +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 +accept */* +accept-language en-US,en;q=0.5 +accept-encoding gzip, deflate +referer http://www.netbsd.org/ +connection keep-alive +pragma no-cache +cache-control no-cache + +:method GET +:scheme http +:authority www.netbsd.org +:path /images/navBar-gradient.png +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 +accept */* +accept-language en-US,en;q=0.5 +accept-encoding gzip, deflate +referer http://www.netbsd.org/global.css +connection keep-alive +pragma no-cache +cache-control no-cache + +:method GET +:scheme https +:authority www.paypalobjects.com +:path /en_US/i/btn/btn_subscribe_SM.gif +user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0 +accept */* +accept-language en-US,en;q=0.5 +accept-encoding gzip, deflate, br +referer http://www.netbsd.org/ +cookie PYPF=CT-2 +connection keep-alive +pragma no-cache +cache-control no-cache + diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/run-qif.pl b/external/lsquic/src/liblsquic/ls-qpack/test/run-qif.pl new file mode 100755 index 0000000..d829c00 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/run-qif.pl @@ -0,0 +1,101 @@ +#!/usr/bin/perl +# +# Script to run a QIF file. + +use strict; +use warnings; + +use File::Compare qw(compare); +use File::Copy qw(copy); +use File::Path qw(remove_tree); +use File::Spec::Functions qw(catfile); +use Getopt::Long qw(GetOptions); + +my $cleanup = 1; + +GetOptions( + "aggressive=i" => \my $aggressive, + "table-size=i" => \my $table_size, + "immed-ack=i" => \my $immed_ack, + "risked-streams=i" => \my $risked_streams, + "no-cleanup" => sub { $cleanup = 0 }, +); + +# To reduce the number of tests from doubling, check HTTP/1.x mode in some +# input, but not others. The value of this setting is easy to determine. +my $http1x = ($aggressive + $table_size + $immed_ack + $risked_streams) & 1; + +my $dir = catfile(($ENV{TMP} || $ENV{TEMP} || "/tmp"), + "run-qif-out-" . rand . $$); +mkdir $dir or die "cannot create temp directory $dir"; +if (!$cleanup) +{ + print "created temp directory: $dir\n"; +} + +END { + if (defined($dir) && $cleanup) { + remove_tree($dir); + } +} + +my $encode_log = catfile($dir, "encode.log"); +my $qif_file = catfile($dir, "qif"); +my $bin_file = catfile($dir, "out"); +my $resulting_qif_file = catfile($dir, "qif-result"); + +my ($encode_args, $decode_args) = ('', ''); +if ($aggressive) { + $encode_args="$encode_args -A"; +} + +if ($immed_ack) { + $encode_args="$encode_args -a 1"; +} + +if (defined $risked_streams) { + $encode_args = "$encode_args -s $risked_streams"; + $decode_args = "$decode_args -s $risked_streams"; +} + +if (defined $table_size) { + $encode_args = "$encode_args -t $table_size"; + $decode_args = "$decode_args -t $table_size"; +} + +copy($ARGV[0], $qif_file) or die "cannot copy original $ARGV[0] to $qif_file"; + +if ($^O eq 'MSWin32') { + system('interop-encode', $encode_args, '-i', $qif_file, '-o', $bin_file) + and die "interop-encode failed"; + system('interop-decode', $decode_args, '-m', '1', '-i', $bin_file, '-o', $resulting_qif_file, '-H', $http1x) + and die "interop-decode failed"; +} else { + system("interop-encode $encode_args -i $qif_file -o $bin_file") + and die "interop-encode failed"; + system("interop-decode $decode_args -m 1 -i $bin_file -o $resulting_qif_file -H $http1x") + and die "interop-decode failed"; +} + +sub sort_qif { + no warnings 'uninitialized'; + my ($in, $out) = @_; + local $/ = "\n\n"; + open F, $in or die "cannot open $in for reading: $!"; + my @chunks = map $$_[1], + sort { $$a[0] <=> $$b[0] } + map { /^#\s*stream\s+(\d+)/; [ $1, $_ ] } + ; + close F; + for (@chunks) { + s/^#.*\n//mg; + } + open F, ">", $out or die "cannot open $out for writing: $!"; + print F @chunks; + close F; +} + +sort_qif($qif_file, "$qif_file.canonical"); +sort_qif($resulting_qif_file, "$resulting_qif_file.canonical"); + +exit compare "$qif_file.canonical", "$resulting_qif_file.canonical"; diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/run-scenario.sh b/external/lsquic/src/liblsquic/ls-qpack/test/run-scenario.sh new file mode 100755 index 0000000..2f3ee7a --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/run-scenario.sh @@ -0,0 +1,68 @@ +#!/bin/bash +# +# Script to run a scenario file. A scenario file contains encoder parameters +# as well as a list of headers in QIF format. The headers are encoded and +# the output is then decoded and compared to the original. + +set -x +set -e + +for NEED in interop-encode interop-decode sort-qif.pl; do + type $NEED + if [ $? -ne 0 ]; then + echo $NEED is not in $PATH 1>&2 + exit 1 + fi +done + +function cleanup { + rm -vf $QIF_FILE + rm -vf $BIN_FILE + rm -vf $RESULTING_QIF_FILE + rm -vf $ENCODE_LOG + rmdir $DIR +} + +if [ -z "$DO_CLEANUP" -o "$DO_CLEANUP" != 0 ]; then + trap cleanup EXIT +fi + +RECIPE=$1 + +source $RECIPE + +DIR=/tmp/recipe-out-$$$RANDOM +ENCODE_LOG=$DIR/encode.log +QIF_FILE=$DIR/qif +BIN_FILE=$DIR/out +RESULTING_QIF_FILE=$DIR/qif-result +mkdir -p $DIR + +if [ "$AGGRESSIVE" = 1 ]; then + ENCODE_ARGS="$ENCODE_ARGS -A" +fi + +if [ "$IMMEDIATE_ACK" = 1 ]; then + ENCODE_ARGS="$ENCODE_ARGS -a 1" +fi + +if [ "$ANNOTATIONS" = 1 ]; then + ENCODE_ARGS="$ENCODE_ARGS -n" +fi + +if [ -n "$RISKED_STREAMS" ]; then + ENCODE_ARGS="$ENCODE_ARGS -s $RISKED_STREAMS" + DECODE_ARGS="$DECODE_ARGS -s $RISKED_STREAMS" +fi + +if [ -n "$TABLE_SIZE" ]; then + ENCODE_ARGS="$ENCODE_ARGS -t $TABLE_SIZE" + DECODE_ARGS="$DECODE_ARGS -t $TABLE_SIZE" +fi + +echo -e "$QIF"\\n > $QIF_FILE + +interop-encode $ENCODE_ARGS -i $QIF_FILE -o $BIN_FILE 2>$ENCODE_LOG +interop-decode $DECODE_ARGS -i $BIN_FILE -o $RESULTING_QIF_FILE +diff <(sort-qif.pl --strip $QIF_FILE) \ + <(sort-qif.pl --strip $RESULTING_QIF_FILE) diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/0.95-reset.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/0.95-reset.sce new file mode 100644 index 0000000..76796ee --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/0.95-reset.sce @@ -0,0 +1,10 @@ +TABLE_SIZE=256 +AGGRESSIVE=1 +RISKED_STREAMS=0 +QIF=$(cat<<'EOQ' +dude nude +dude nude +dude where is my car? + +EOQ +) diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/cancel-stream.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/cancel-stream.sce new file mode 100644 index 0000000..f8d3efa --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/cancel-stream.sce @@ -0,0 +1,22 @@ +TABLE_SIZE=256 +ANNOTATIONS=1 +QIF=$(cat<<'EOQ' +dude nude +dude nude +## c 1 +dude where is my car? + +one fish +two fish +## c 2 +red fish +blue fish + +black fish +blue fish +## c 3 +old fish +new fish + +EOQ +) \ No newline at end of file diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/drain-2.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/drain-2.sce new file mode 100644 index 0000000..4e1c4ab --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/drain-2.sce @@ -0,0 +1,37 @@ +TABLE_SIZE=512 +ANNOTATIONS=1 +AGGRESSIVE=0 +RISKED_STREAMS=0 +IMMEDIATE_ACK=0 +QIF=$(cat<<'EOQ' +notre dame translates to our lady of paris +iconography poor peoples book +spire must be repaired +sainte-chapelle is known as the kingdom of light +notre dame translates our to lady of paris +iconography poor peoples book +## s 2 + +notre dame translates to our lady of paris +iconography poor peoples book + +victor hugo wrote the hunchback +archdiocese of paris +twelve million people visit annually +coronation of emperor napoleon +most famous gothic cathedral + +victor hugo wrote the hunchback +archdiocese of paris +twelve million people visit annually +coronation of emperor napoleon +most famous gothic cathedral + +notre dame translates to our lady of paris +iconography poor peoples book + +notre dame translates to our lady of paris +iconography poor peoples book + +EOQ +) \ No newline at end of file diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/drain.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/drain.sce new file mode 100644 index 0000000..20bea05 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/drain.sce @@ -0,0 +1,37 @@ +TABLE_SIZE=512 +ANNOTATIONS=1 +AGGRESSIVE=0 +RISKED_STREAMS=0 +IMMEDIATE_ACK=0 +QIF=$(cat<<'EOQ' +notre dame translates to our lady of paris +iconography poor peoples book +spire must be repaired +sainte-chapelle is known as the kingdom of light +notre dame translates to our lady of paris +iconography poor peoples book +## s 2 + +notre dame translates to our lady of paris +iconography poor peoples book + +victor hugo wrote the hunchback +archdiocese of paris +twelve million people visit annually +coronation of emperor napoleon +most famous gothic cathedral + +victor hugo wrote the hunchback +archdiocese of paris +twelve million people visit annually +coronation of emperor napoleon +most famous gothic cathedral + +notre dame translates to our lady of paris +iconography poor peoples book + +notre dame translates to our lady of paris +iconography poor peoples book + +EOQ +) \ No newline at end of file diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/end-dst-2.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/end-dst-2.sce new file mode 100644 index 0000000..c48f464 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/end-dst-2.sce @@ -0,0 +1,14 @@ +# This scenario is designed to reach the 'case HUFF_DEC_END_DST' +# in lsqpack_dec_enc_in(). +TABLE_SIZE=256 +AGGRESSIVE=0 +RISKED_STREAMS=0 +QIF=$(cat<<'EOQ' +aaaaaaaaaaaaaaaaaaaaaaaaa aaaa +bbbbbbbbbbbbbbbbbbbbbbbbb bbbb + +aaaaaaaaaaaaaaaaaaaaaaaaa aaaa +bbbbbbbbbbbbbbbbbbbbbbbbb bbbb + +EOQ +) \ No newline at end of file diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/end-dst.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/end-dst.sce new file mode 100644 index 0000000..bf14404 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/end-dst.sce @@ -0,0 +1,14 @@ +# This scenario is designed to reach the 'case HUFF_DEC_END_DST' +# in parse_header_data() when Huffman encoding is turned on. +TABLE_SIZE=256 +AGGRESSIVE=1 +RISKED_STREAMS=1 +QIF=$(cat<<'EOQ' +aaaa aaa +aaaa aaaaa +aaaa aaaaaaaa +aaaa aaaaaaaaaaaaa +aaaa aaaaaaaaaaaaaaaaaaaaa + +EOQ +) diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/incl-name.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/incl-name.sce new file mode 100644 index 0000000..b91c164 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/incl-name.sce @@ -0,0 +1,13 @@ +# This scenario is designed to reach 'case DATA_STATE_READ_LFONR_NAME_PLAIN' +# in parse_header_data(). It contains header names that are be too small +# for Huffman coding. +TABLE_SIZE=256 +AGGRESSIVE=1 +RISKED_STREAMS=0 +QIF=$(cat<<'EOQ' +yo I +no do not +se know + +EOQ +) diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-1.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-1.sce new file mode 100644 index 0000000..34759a1 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-1.sce @@ -0,0 +1,110 @@ +# This scenario is designed to reach the `case EEA_INS_NAMEREF_DYNAMIC` +# in the `lsqpack_enc_encode` function. It is intended to fail the integer +# encoding due to buffer length. To trigger this case, many names must be +# inserted into the dynamic table so that the integer encoding requires +# more than one byte. +TABLE_SIZE=16384 +AGGRESSIVE=1 +IMMEDIATE_ACK=0 +RISKED_STREAMS=1000 +QIF=$(cat<<'EOQ' +aaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa +bbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbb +ccccccccccccc cccccccccccccccccccccccccc +ddddddddddddd dddddddddddddddddddddddddd +eeeeeeeeeeeee eeeeeeeeeeeeeeeeeeeeeeeeee +fffffffffffff ffffffffffffffffffffffffff +ggggggggggggg gggggggggggggggggggggggggg +aaaa oneeeeeeeee +bbbb oneeeeeeeee +cccc oneeeeeeeee +dddd oneeeeeeeee +eeee oneeeeeeeee +ffff oneeeeeeeee +gggg oneeeeeeeee +hhhh oneeeeeeeee +iiii oneeeeeeeee +jjjj oneeeeeeeee +kkkk oneeeeeeeee +llll oneeeeeeeee +mmmm oneeeeeeeee +nnnn oneeeeeeeee +oooo oneeeeeeeee +pppp oneeeeeeeee +qqqq oneeeeeeeee +rrrr oneeeeeeeee +ssss oneeeeeeeee +tttt oneeeeeeeee +uuuu oneeeeeeeee +vvvv oneeeeeeeee +wwww oneeeeeeeee +xxxx oneeeeeeeee +yyyy oneeeeeeeee +zzzz oneeeeeeeee +aabb oneeeeeeeee +bbcc oneeeeeeeee +ccdd oneeeeeeeee +ddee oneeeeeeeee +eeff oneeeeeeeee +ffgg oneeeeeeeee +gghh oneeeeeeeee +hhii oneeeeeeeee +iijj oneeeeeeeee +jjkk oneeeeeeeee +kkll oneeeeeeeee +llmm oneeeeeeeee +mmnn oneeeeeeeee +nnoo oneeeeeeeee +oopp oneeeeeeeee +ppqq oneeeeeeeee +qqrr oneeeeeeeee +rrss oneeeeeeeee +sstt oneeeeeeeee +ttuu oneeeeeeeee +uuvv oneeeeeeeee +vvww oneeeeeeeee +wwxx oneeeeeeeee +xxyy oneeeeeeeee +yyzz oneeeeeeeee + +bbbb two +cccc two +dddd two +eeee two +ffff two +gggg two +hhhh two +yyyy two +zzzz two +aabb two +bbcc two +ccdd two +ddee two +eeff two +ffgg two +gghh two +hhii two +iijj two +jjkk two +kkll two +llmm two +mmnn two +nnoo two +oopp two +ppqq two +qqrr two +rrss two +sstt two +ttuu two +uuvv two +vvww two +wwxx two +xxyy two +yyzz two +aaaa two + +aaaa three +bbbb three + +EOQ +) diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-2.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-2.sce new file mode 100644 index 0000000..f70266b --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/multi-byte-int-dyn-ref-2.sce @@ -0,0 +1,161 @@ +# This scenario is designed to reach the `case EHA_INDEXED_DYN` +# in the `lsqpack_enc_encode` function. It is intended to fail the integer +# encoding due to buffer length. To trigger this case, many names and values +# must be inserted into the dynamic table so that the integer encoding requires +# more than one byte. +TABLE_SIZE=16384 +AGGRESSIVE=1 +IMMEDIATE_ACK=0 +RISKED_STREAMS=1000 +QIF=$(cat<<'EOQ' +aaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa +bbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbb +ccccccccccccc cccccccccccccccccccccccccc +ddddddddddddd dddddddddddddddddddddddddd +eeeeeeeeeeeee eeeeeeeeeeeeeeeeeeeeeeeeee +fffffffffffff ffffffffffffffffffffffffff +ggggggggggggg gggggggggggggggggggggggggg +aaaa oneeeeeeeee +bbbb oneeeeeeeee +cccc oneeeeeeeee +dddd oneeeeeeeee +eeee oneeeeeeeee +ffff oneeeeeeeee +gggg oneeeeeeeee +hhhh oneeeeeeeee +iiii oneeeeeeeee +jjjj oneeeeeeeee +kkkk oneeeeeeeee +llll oneeeeeeeee +mmmm oneeeeeeeee +nnnn oneeeeeeeee +oooo oneeeeeeeee +pppp oneeeeeeeee +qqqq oneeeeeeeee +rrrr oneeeeeeeee +ssss oneeeeeeeee +tttt oneeeeeeeee +uuuu oneeeeeeeee +vvvv oneeeeeeeee +wwww oneeeeeeeee +xxxx oneeeeeeeee +yyyy oneeeeeeeee +zzzz oneeeeeeeee +aabb oneeeeeeeee +bbcc oneeeeeeeee +ccdd oneeeeeeeee +ddee oneeeeeeeee +eeff oneeeeeeeee +ffgg oneeeeeeeee +gghh oneeeeeeeee +hhii oneeeeeeeee +iijj oneeeeeeeee +jjkk oneeeeeeeee +kkll oneeeeeeeee +llmm oneeeeeeeee +mmnn oneeeeeeeee +nnoo oneeeeeeeee +oopp oneeeeeeeee +ppqq oneeeeeeeee +qqrr oneeeeeeeee +rrss oneeeeeeeee +sstt oneeeeeeeee +ttuu oneeeeeeeee +uuvv oneeeeeeeee +vvww oneeeeeeeee +wwxx oneeeeeeeee +xxyy oneeeeeeeee +yyzz oneeeeeeeee +abcd oneeeeeeeee +bcde oneeeeeeeee +cdef oneeeeeeeee +defg oneeeeeeeee +efgh oneeeeeeeee +fghi oneeeeeeeee +ghij oneeeeeeeee +hijk oneeeeeeeee +ijkl oneeeeeeeee +jklm oneeeeeeeee +klmn oneeeeeeeee +lmno oneeeeeeeee +mnop oneeeeeeeee +nopq oneeeeeeeee +opqr oneeeeeeeee +pqrs oneeeeeeeee +qrst oneeeeeeeee +rstu oneeeeeeeee + +aaaa oneeeeeeeee +bbbb oneeeeeeeee +cccc oneeeeeeeee +dddd oneeeeeeeee +eeee oneeeeeeeee +ffff oneeeeeeeee +gggg oneeeeeeeee +hhhh oneeeeeeeee +iiii oneeeeeeeee +jjjj oneeeeeeeee +kkkk oneeeeeeeee +llll oneeeeeeeee +mmmm oneeeeeeeee +nnnn oneeeeeeeee +oooo oneeeeeeeee +pppp oneeeeeeeee +qqqq oneeeeeeeee +rrrr oneeeeeeeee +ssss oneeeeeeeee +tttt oneeeeeeeee +uuuu oneeeeeeeee +vvvv oneeeeeeeee +wwww oneeeeeeeee +xxxx oneeeeeeeee +yyyy oneeeeeeeee +zzzz oneeeeeeeee +aabb oneeeeeeeee +bbcc oneeeeeeeee +ccdd oneeeeeeeee +ddee oneeeeeeeee +eeff oneeeeeeeee +ffgg oneeeeeeeee +gghh oneeeeeeeee +hhii oneeeeeeeee +iijj oneeeeeeeee +jjkk oneeeeeeeee +kkll oneeeeeeeee +llmm oneeeeeeeee +mmnn oneeeeeeeee +nnoo oneeeeeeeee +oopp oneeeeeeeee +ppqq oneeeeeeeee +qqrr oneeeeeeeee +rrss oneeeeeeeee +sstt oneeeeeeeee +ttuu oneeeeeeeee +uuvv oneeeeeeeee +vvww oneeeeeeeee +wwxx oneeeeeeeee +xxyy oneeeeeeeee +yyzz oneeeeeeeee +aaaa oneeeeeeeee +abcd oneeeeeeeee +bcde oneeeeeeeee +cdef oneeeeeeeee +defg oneeeeeeeee +efgh oneeeeeeeee +fghi oneeeeeeeee +ghij oneeeeeeeee +hijk oneeeeeeeee +ijkl oneeeeeeeee +jklm oneeeeeeeee +klmn oneeeeeeeee +lmno oneeeeeeeee +mnop oneeeeeeeee +nopq oneeeeeeeee +opqr oneeeeeeeee +pqrs oneeeeeeeee +qrst oneeeeeeeee +rstu oneeeeeeeee +aaaa oneeeeeeeee + +EOQ +) diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-1.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-1.sce new file mode 100644 index 0000000..a8e1e45 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-1.sce @@ -0,0 +1,10 @@ +TABLE_SIZE=256 +AGGRESSIVE=1 +RISKED_STREAMS=1 +QIF=$(cat<<'EOQ' +dude nude +dude nude +dude where is my car? + +EOQ +) diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-2.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-2.sce new file mode 100644 index 0000000..b04b535 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-2.sce @@ -0,0 +1,13 @@ +# This scenario is designed to reach 'case DATA_STATE_LFPBNR_READ_VAL_PLAIN' +# in parse_header_data(). It has a number of repeated names with values that +# would be too small for Huffman coding. +TABLE_SIZE=256 +AGGRESSIVE=1 +RISKED_STREAMS=1 +QIF=$(cat<<'EOQ' +dude n +dude nu +dude where is my car? + +EOQ +) diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-nr.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-nr.sce new file mode 100644 index 0000000..5f188db --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/post-base-nr.sce @@ -0,0 +1,10 @@ +TABLE_SIZE=256 +AGGRESSIVE=0 +RISKED_STREAMS=1 +QIF=$(cat<<'EOQ' +dude nude +dude nude +dude where is my car? + +EOQ +) diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/set-max-cap.sce b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/set-max-cap.sce new file mode 100644 index 0000000..431cb5f --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/scenarios/set-max-cap.sce @@ -0,0 +1,15 @@ +TABLE_SIZE=256 +ANNOTATIONS=1 +QIF=$(cat<<'EOQ' +dude nude +dude nude +dude where is my car? + +## t 0 +one fish +two fish +red fish +blue fish + +EOQ +) \ No newline at end of file diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/test_circ_list.c b/external/lsquic/src/liblsquic/ls-qpack/test/test_circ_list.c new file mode 100644 index 0000000..0e3e9cf --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/test_circ_list.c @@ -0,0 +1,104 @@ +/* Bug report and test case contributed by Guoye Zhang -- thanks! */ + +#include "lsxpack_header.h" +#include "lsqpack.h" + +static void _decoderUnblocked(void *context) { + +} + +static struct lsxpack_header *_decoderPrepareDecode(void *context, struct lsxpack_header *header, size_t space) { + + return NULL; + +} + +static int _decoderProcessHeader(void *context, struct lsxpack_header *header) { + + return 0; + +} + +int main(int argc, const char * argv[]) { + + struct lsqpack_enc qpackEncoder; + + struct lsqpack_dec qpackDecoder; + + static struct lsqpack_dec_hset_if callbacks = { + + .dhi_unblocked = _decoderUnblocked, + + .dhi_prepare_decode = _decoderPrepareDecode, + + .dhi_process_header = _decoderProcessHeader, + + }; + + uint8_t stdc[LSQPACK_LONGEST_SDTC]; + + size_t stdcSize = sizeof(stdc); + + lsqpack_enc_init(&qpackEncoder, NULL, 4096, 4096, 100, LSQPACK_ENC_OPT_SERVER, stdc, &stdcSize); + + lsqpack_dec_init(&qpackDecoder, stdout, 4096, 100, &callbacks, (enum lsqpack_dec_opts)0); + + lsqpack_dec_enc_in(&qpackDecoder, stdc, stdcSize); + + uint8_t iciBuffer[LSQPACK_LONGEST_ICI]; + + ssize_t iciSize = 0; + + for (unsigned i = 0; i < 6; i++) { + + uint8_t encoderBuffer[1024]; + + size_t usedEncoderSize = 0, encoderSize = sizeof(encoderBuffer); + + uint8_t headerBuffer[1024]; + + size_t usedHeaderSize = 0, headerSize = sizeof(headerBuffer); + + struct lsxpack_header header; + memset(&header, 0, sizeof(header)); + + const char *name, *value; + + lsqpack_enc_start_header(&qpackEncoder, 0, i); + + name = ":authority" "localhost"; + + lsxpack_header_set_offset2(&header, name, 0, strlen(":authority"), strlen(":authority"), strlen("localhost")); + + enum lsqpack_enc_status status = lsqpack_enc_encode(&qpackEncoder, &encoderBuffer[usedEncoderSize], &encoderSize, &headerBuffer[usedHeaderSize], &headerSize, &header, (enum lsqpack_enc_flags)0); + + assert(status == LQES_OK); + + usedEncoderSize += encoderSize; usedHeaderSize += headerSize; + + encoderSize = sizeof(encoderBuffer) - usedEncoderSize; headerSize = sizeof(headerBuffer) - usedHeaderSize; + + uint8_t prefixBuffer[22]; + + lsqpack_enc_end_header(&qpackEncoder, prefixBuffer, sizeof(prefixBuffer), NULL); + + if (usedEncoderSize > 0) { + + lsqpack_dec_enc_in(&qpackDecoder, encoderBuffer, usedEncoderSize); + + if (lsqpack_dec_ici_pending(&qpackDecoder)) { + + iciSize = lsqpack_dec_write_ici(&qpackDecoder, iciBuffer, sizeof(iciBuffer)); + + } + + } + + } + + lsqpack_enc_decoder_in(&qpackEncoder, iciBuffer, iciSize); + + return 0; + +} + diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/test_dec_crash_case.c b/external/lsquic/src/liblsquic/ls-qpack/test/test_dec_crash_case.c new file mode 100644 index 0000000..e27b758 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/test_dec_crash_case.c @@ -0,0 +1,50 @@ +#include +#include +#include "lsqpack.h" +#include "lsxpack_header.h" + +static void _decoderUnblocked(void *context) { +} + +static struct lsxpack_header *_decoderPrepareDecode(void *context, struct lsxpack_header *header, size_t space) +{ + static struct lsxpack_header xpackHeader; + char *xpackHeaderBuffer = (char *)malloc(space); + lsxpack_header_prepare_decode(&xpackHeader, xpackHeaderBuffer, 0, space); + return &xpackHeader; +} + +static int _decoderProcessHeader(void *context, struct lsxpack_header *header) +{ + printf("Decode header %.*s: %.*s\n", header->name_len, &header->buf[header->name_offset], header->val_len, &header->buf[header->val_offset]); + return 0; +} + +int main(int argc, const char * argv[]) { + struct lsqpack_dec qpackDecoder; + + struct lsqpack_dec_hset_if callbacks = { + .dhi_unblocked = _decoderUnblocked, + .dhi_prepare_decode = _decoderPrepareDecode, + .dhi_process_header = _decoderProcessHeader, + }; + lsqpack_dec_init(&qpackDecoder, stderr, 16384, 100, &callbacks, (enum lsqpack_dec_opts)0); + + size_t size = 50; + uint8_t buffer[16384] = { + 0x01, 0x32, 0x00, 0x00, 0x50, 0x91, 0x19, 0x08, + 0x54, 0x21, 0x7a, 0x0e, 0x41, 0xd0, 0x92, 0xa1, + 0x2b, 0xd2, 0x5b, 0x8f, 0xbe, 0xd3, 0x3f, 0xd1, + 0x51, 0x85, 0x62, 0x53, 0x9d, 0x25, 0xb3, 0xd7, + 0x5f, 0x10, 0x83, 0x9b, 0xd9, 0xab, 0x5f, 0x50, + 0x8b, 0xed, 0x69, 0x88, 0xb4, 0xc7, 0x53, 0x1e, + 0xfd, 0xfa, + }; + uint8_t decoderBuffer[LSQPACK_LONGEST_HEADER_ACK]; + size_t decoderBufferSize = sizeof(decoderBuffer); + const uint8_t *bufferRef = buffer; + enum lsqpack_read_header_status status = lsqpack_dec_header_in(&qpackDecoder, NULL, 0, size, &bufferRef, size, decoderBuffer, &decoderBufferSize); + printf("Decode status %d\n", status); + + return 0; +} diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/test_dyn_table_cap_mismatch.c b/external/lsquic/src/liblsquic/ls-qpack/test/test_dyn_table_cap_mismatch.c new file mode 100644 index 0000000..71975d8 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/test_dyn_table_cap_mismatch.c @@ -0,0 +1,56 @@ +#include +#include +#include "lsqpack.h" +#include "lsxpack_header.h" + +static void _decoderUnblocked(void *context) { +} + +static struct lsxpack_header *_decoderPrepareDecode(void *context, struct lsxpack_header *header, size_t space) +{ + static struct lsxpack_header xpackHeader; + char *xpackHeaderBuffer = (char *)malloc(space); + lsxpack_header_prepare_decode(&xpackHeader, xpackHeaderBuffer, 0, space); + return &xpackHeader; +} + +static int _decoderProcessHeader(void *context, struct lsxpack_header *header) +{ + printf("Decode header %.*s: %.*s\n", header->name_len, &header->buf[header->name_offset], header->val_len, &header->buf[header->val_offset]); + return 0; +} + +int main(int argc, const char * argv[]) { + struct lsqpack_dec qpackDecoder; + + struct lsqpack_dec_hset_if callbacks = { + .dhi_unblocked = _decoderUnblocked, + .dhi_prepare_decode = _decoderPrepareDecode, + .dhi_process_header = _decoderProcessHeader, + }; + lsqpack_dec_init(&qpackDecoder, stderr, 16384, 100, &callbacks, (enum lsqpack_dec_opts)0); + + FILE *encoder_stream = fopen("testdata/encoder_stream", "r"); + FILE *response = fopen("testdata/response", "r"); + uint8_t buffer[16384]; + size_t size = 0; + if (!encoder_stream) + { + encoder_stream = fopen("../../test/testdata/encoder_stream", "r"); + response = fopen("../../test/testdata/response", "r"); + } + while ((size = fread(buffer, 1, sizeof(buffer), encoder_stream)) > 0) { + lsqpack_dec_enc_in(&qpackDecoder, buffer, size); + } + fclose(encoder_stream); + + size = fread(buffer, 1, sizeof(buffer), response); + uint8_t decoderBuffer[LSQPACK_LONGEST_HEADER_ACK]; + size_t decoderBufferSize = sizeof(decoderBuffer); + const uint8_t *bufferRef = buffer; + enum lsqpack_read_header_status status = lsqpack_dec_header_in(&qpackDecoder, NULL, 2092, size, &bufferRef, size, decoderBuffer, &decoderBufferSize); + printf("Decode status %d\n", status); + fclose(response); + + return 0; +} diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/test_enc_str.c b/external/lsquic/src/liblsquic/ls-qpack/test/test_enc_str.c new file mode 100644 index 0000000..38c5a99 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/test_enc_str.c @@ -0,0 +1,139 @@ +#include +#include +#include +#include + +#include "lsqpack.h" +#include "lsqpack-test.h" + + +struct str_test +{ + int strt_lineno; + unsigned strt_prefix_bits; + const unsigned char *strt_in_str; + unsigned strt_in_len; + const unsigned char *strt_out_buf; + int strt_retval; +}; + + +static const struct str_test tests[] = +{ + + { + __LINE__, + 3, + (unsigned char *) "", + 0, + (unsigned char *) "\x00", + 1, + }, + + { + __LINE__, + 3, + (unsigned char *) "a", + 1, + (unsigned char *) "\x01" "a", + 2, + }, + + { + __LINE__, + 3, + (unsigned char *) "aa", + 2, + (unsigned char *) "\x02" "aa", + 3, + }, + + { + __LINE__, + 3, + (unsigned char *) "aaa", + 3, + (unsigned char *) "\x0A\x18\xc7", + 3, + }, + + { + __LINE__, + 3, + (unsigned char *) "aaaaaaaaa", + 9, + (unsigned char *) "\x0E\x18\xc6\x31\x8c\x63\x1f", + 7, + }, + + { + __LINE__, + 3, + (unsigned char *) "aaaaaaaaaa", + 10, + (unsigned char *) "\x0F\x00\x18\xc6\x31\x8c\x63\x18\xff", + 9, + }, + + { + __LINE__, + 3, + (unsigned char *) "aaaaaaaaaabbb", + 13, + (unsigned char *) "\x0F\x02\x18\xc6\x31\x8c\x63\x18\xe3\x8e\x3f", + 11, + }, + + { + __LINE__, + 3, + (unsigned char *) "\x80\x90\xA0\xBA", + 4, + (unsigned char *) "\x04\x80\x90\xA0\xBA", + 5, + }, + + { + __LINE__, + 3, + (unsigned char *) "\x80\x90\xA0\xBA\x80\x90\xA0", + 7, + (unsigned char *) "\x07\x00\x80\x90\xA0\xBA\x80\x90\xA0", + 9, + }, + + { + __LINE__, + 3, + (unsigned char *) "\x80\x90\xA0\xBA\x80\x90\xA0" "foo", + 10, + (unsigned char *) "\x07\x03\x80\x90\xA0\xBA\x80\x90\xA0" "foo", + 12, + }, + +}; + + +int +main (void) +{ + const struct str_test *test; + int r; + unsigned char *out= malloc(0x1000); + + if (!out) + return 1; + + for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) + { + out[0] = 0; + r = lsqpack_enc_enc_str(test->strt_prefix_bits, out, 0x1000, + test->strt_in_str, test->strt_in_len); + assert(r == test->strt_retval); + if (r > 0) + assert(0 == memcmp(test->strt_out_buf, out, r)); + } + + free(out); + return 0; +} diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/test_huff_dec.c b/external/lsquic/src/liblsquic/ls-qpack/test/test_huff_dec.c new file mode 100644 index 0000000..91d6b6a --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/test_huff_dec.c @@ -0,0 +1,399 @@ +/* + * Usage: test_huff_dec [-v] [-e] + * + * -v Verbose + * -e Run expensive tests + */ + +#include +#include +#include +#include +#ifdef WIN32 +#include +#else +#include +#endif + +#include "lsqpack.h" +#include "lsqpack-test.h" + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + +static int verbose; + +struct test_huff_dec +{ + int lineno; + + /* Input */ + unsigned char *src; + size_t src_sz; + + /* Output */ + char *dst; + size_t dst_sz; +}; + +const struct test_huff_dec tests[] = +{ + { __LINE__, + (unsigned char *) + "\xbf\x6c\x85\xfa\x53\xc4\xe5\xb0\xaa\x19\x0a\x53\xe9\x42\x0e\xcf\xf3", + 17, + "Dude, where is my car?", + 22, + }, + { __LINE__, + (unsigned char *) + "\xd6\x32\x1a\xa9\x94\x8c\x64\xea\xa0\xea\x91\x49" + "\x4f\x62\x67\x51\x33\x95\x4a\x0b\x54\xc9\x9d\x43\xca\xa2\x67\x2a" + "\x93\x8d\x24\x9f\xc0\xfd\x21\x41\xd5\x22\x88\x1f\x71\xcc\x5a\x3d" + "\x28\x49\xcb\xe0\xd5\x4d\xff\xff\xff\xe2\x67\x2a\x85\xaa\x45\x0f" + "\x2a\x83\x50\x86\x98\x76\x7d\x29\xe0\x68\x51\x33\x95\x4a\x47\x52" + "\x9e\x27\x3a\x0a\xa1\x06\x8b\x47\x42\x93\x50\x3a\x88\x55\x27\x1c" + "\x8a\x58\x54\x12\xd2\xc8\xa5\x25\x52\x5b\x0f\x4f\xff\xff\xff\x89" + "\x9c\xaa\x20\xa3\x5d\x45\x31\x99\x0a\x4e\x53\x4d\x3a\x54\xf0\x34" + "\x29\x5d\x87\x8c\x71\xd1\xe9\x49\x4d\xdc\xaa\x4a\x52\xa5\x44\x96" + "\xa5\x0d\x51\x27\x2a\x3e\x94\x3d\x8a\x24\xb5\x28\x3a\xa4\x50\x7f" + "\xff\xff\xfe\x4e\x3a\x25\xfb\x52\x3b\x52\xa5\x3e\x94\x94\xd6\x21" + "\x2a\x1a\x9a\xec\x2a\x10\x63\xd5\xf4\xa1\xec\x52\x52\x96\x85\x0f" + "\x2a\x89\x9c\xaa\x52\x3a\xbe\x94\xf0\x34\x29\x51\xd2\xa1\xe5\x51" + "\x33\x99\x1f\x4a\x47\x6a\x7f\xff\xff\xfc\x3c\xaa\x4e\x64\x28\x84" + "\xd8\x5a\xa6\x4c\xeb\xa8\xa4\x35\x48\xa7\xa2\xa7\xe9\x4f\x13\x9a" + "\x82\xa9\x39\x54\xf0\x34\x28\x79\x54\xa4\x68\x41\xbb\x95\x48\xed" + "\x35\x12\x7d\x29\xe0\xc9\x9d\x48\xec\x38\xe4\xff\xff\xff\xf1\x13" + "\x9e\xda\x24\x2d\x88\x50\x75\x48\xa4\x85\x2d\x6a\x12\x72\xa1\x3f" + "\x4a\x64\x50\x87\xb6\x89\x14\xa8\xe9\x50\x93\x8e\xc1\x91\x25\xb0" + "\xde\xca\xa4\xe6\x42\x88\x4d\x85\xaa\x64\xce\xa0\xd1\xff\xff\xff" + "\xe5\x23\x42\x0d\xdc\xab\xa8\xa6\x44\xa9\xe0\x68\x53\xc4\xe3\x4a" + "\x94\x9a\x69\xd2\xa4\x65\x51\x25\xb2\x92\xc8\xa0\xd4\x41\xaa\x2f" + "\x8f\x5f\x4a\x75\xa8\xe9\x4f\xa5\x10\x9b\x0b\x54\xc9\x9f\xe9\x43" + "\xca\xa2\x67\x2f\xff\xff\xff\x9d\x4d\x54\x8a\x78\x2a\x83\x41\x2c" + "\x34\x65\x51\x27\x52\x82\x8e\xa5\x07\x54\x8a\x78\x35\x9e\x94\xa4" + "\xb5\x7d\x29\x1d\xa9\x53\xc4\xe6\x24\xff\x4a\x1a\xa5\x27\x35\x3f" + "\x4a\x46\x52\x0e\xd4\x15\x43\xca\xa4\xe6\x47\xff\xff\xff\x93\x94" + "\x7d\xfd\x29\x1d\xa6\xa2\x4f\xa5\x2b\x1d\x89\x39\xfa\xa9\x49\xec" + "\x2a\x87\x95\x44\xce\x55\x0b\x55\x03\xb2\x62\xc8\xa4\xc7\xb0\xd4" + "\x50\x35\x0f\x64\x85\xb1\x75\x14\xd2\x74\xa8\x99\xc6\x95\x0d\x57" + "\xff\xff\xff\x83\xae\xb2\x8e\xc1\xd4\x42\xa9\x39\x54\x41\x4b\x49" + "\x64\x50\xd5\x28\x99\xca\xa5\x05\x1a\x12\xa4\xc7\xb0\xd4\x50\x35" + "\xa8\x37\x52\xae\xa2\x9c\xa7\x1a\x54\xc8\xa0\xe9\x51\x09\xb0\xdd" + "\xcd\x54\xca\x24\xff\xff\xff\xfe\x17\xcd\x76\x15\x08\x50\xc8\x51" + "\x33\x99\x0a\x21\x36\x16\xa9\x93\x3a\x86\x4a\x0b\x44\xbf\x4a\x52" + "\x7b\x0a\xa0\xd0\xa0\xd4\x4c\xe6\xaa\x65\x07\x58\xec\x4a\x92\xd8" + "\x7a\x54\x9c\xc8\x52\xb9\xfd\x20\xc4\x1d\x1f\xff\xff\xfe\x20\xb4" + "\xc7\x40\xea\x21\x57\x51\x4c\x89\x53\xc0\xd0\xa0\xd4\x42\x6c\x2d" + "\x53\x26\x75\x3c\x15\x41\xd8\x55\x3c\x1e\xa4\xa8\x93\xa8\x34\x20" + "\xe4\x30\xd2\x55\x3c\x19\x33\xa8\x99\xcd\x54\xc8\xff\xff\xff\xf2" + "\xbb\x0d\x49\x92\x6e\xe5\xfa\x53\xc1\x93\x3a\x9e\x0d\x44\x8a\x0e" + "\xa3\x52\x3a\x11\xf4\xa0\xea\x91\x44\xce\x55\x09\x61\x46\x9b\x6c" + "\x2a\x14\xf0\x55\x0d\x48\xe6\x35\x45\x50\xf6\xd9\xff\xff\xff\xe2" + "\x6c\x29\x56\x93\xc1\x68\xa0\xd5\x4c\xa5\x76\x1d\x27\x4f\xaa\xca" + "\x85\x12\x75\x27\x1f\x72\xa9\x19\x4b\x57\xff\xf6\xff\xff\x37\xff" + "\xff\x70\xd4\x42\x6c\x2d\x53\x26\x75\x10\x3e\xe3\x98\xbf\x4a\x4a" + "\x5b\x0e\x43\x1e\xd4\x7d\x28\x3a\x0d\xdc\xbf\xff\xff\xfe\x1a\xa5" + "\x0c\x94\x16\x89\x7e\x94\x4c\xe5\x50\xa8\x41\x6a\x21\x54\x3c\xaa" + "\x50\x69\x4a\xa1\xaa\x51\x33\x8d\x2a\x19\x2a\x19\x0a\x26\x72\xa9" + "\x59\xd2\x5a\x89\xe9\x43\xca\xa5\x27\x49\x8f\x57\xd2\x89\x9c\xbf" + "\xff\xff\xfe\x16\x82\xd2\x5a\x92\x3a\x14\x42\x6d\x96\x55\x0c\x94" + "\x16\x89\x54\x3d\xa9\x50\xf2\xa9\xe2\x73\x12\x75\x13\x39\x54\xa4" + "\x75\x7a\x52\x53\xd9\x4a\x14\x3c\xaa\x50\x69\x4a\xa4\xe3\xee\x55" + "\x23\x29\x6a\xff\xff\xff\xf2\x93\xdb\x44\x85\x93\xed\x43\x54\xa2" + "\x27\x3d\x89\xfa\x51\x33\x8d\x2a\x78\x9c\xc4\x9d\x4f\x16\x19\x33" + "\x95\x0a\x1a\xa5\x13\x39\x54\x8c\xf2\x7a\x50\xf2\xa8\x35\x11\x50" + "\xfa\x95\x4f\x13\x96\xa5\x13\x39\x7f\xff\xff\xfc\x9c\xa3\x91\x43" + "\x21\x42\x5a\x95\x0f\x2c\xbf\x4a\x0e\xa9\x14\x4c\xe5\x51\x15\x0f" + "\xa9\x7e\x94\x1a\x14\x1a\x88\xa8\x7d\x4b\xf4\xa1\x90\xa4\x85\x1c" + "\x9f\x4a\x1e\xc5\x3c\x4e\x62\x4e\xa5\x06\xaa\x62\xd8\x85\x0d\x57" + "\xff\xff\xff\x89\x9c\xaa\x22\x71\xd6\x5a\x0a\x84\x29\x45\xb4\xd6" + "\xa1\xe5\x51\x36\xd8\x9a\x0a\xb5\x25\x1a\x54\x1d\x52\x29\x61\x48" + "\x73\x50\x85\x07\x54\x8a\x76\xb4\xdd\xcb\x62\x14\x96\xc3\xd2\xa2" + "\x67\x2a\x95\xd8\x79\x3f\xff\xff\xfc\x3c\xaa\x0d\x49\x4d\x54\xc5" + "\xb1\x7f\xff\xff\xff\x3f\xff\xff\xfc\xdd\x69\x27\x53\xc0\xd0\xa2" + "\x67\x2a\x86\xa6\xbb\x0a\x84\x18\xf5\x28\x79\x54\x42\x6c\x2d\x53" + "\x26\x75\x32\x29\x30\xd3\x39\x6c\x2c\x8a\x4b\x61\xe9\x51\x33\x99" + "\x0a\x52\x3a\x94\xf1\x39\xd4\xac\x64\x2c\x8a\x5b\x5f\xff\xff\xff" + "\x83\xaa\x45\x24\x3f\x8a\x97\x51\x4c\x65\x53\xc0\xd0\xa4\xa6\xb2" + "\x9a\x3d\x29\x5d\x03\xa9\x25\x91\x43\xd4\xa4\xe6\x42\x94\x16\x64" + "\x7d\xa9\x39\x90\xa4\xa5\x2a\x54\x42\x6c\xb4\x9d\x54\x4c\xe5\x52" + "\x42\x93\xaf\xff\xff\xff\x88\xed\x68\xec\x2d\x1e\x94\x1d\x52\x29" + "\xe0\xc9\x9d\x44\x5b\x61\x53\xeb\xed\x42\xf7\x2d\x9e\x94\xa4\xfd" + "\xcb\x49\x6a\x4a\x87\x95\x41\xa9\x4d\xa8\x25\x05\xfa\x52\x5b\x0f" + "\x4a\x89\x9c\xaa\x4e\x51\xf7\x2a\x87\x97\xff\xff\xff\xc4\xce\x55" + "\x11\x39\xed\xa2\x42\xd8\x85\x12\x75\x13\x39\x54\x49\xa6\x9d\x25" + "\xa8\xd5\x4c\xa1\xe5\x51\x33\x95\x4a\x0d\x5a\x14\x1c\x67\xb5\x2a" + "\x26\x72\xa8\x43\x4c\x3b\x3e\x94\xf0\x34\x7f\xff\xff\xf9\x21\x48" + "\x64\x1b\xb9\x7e\x94\x1d\x52\x28\x82\x96\x92\xc8\xa2\x4e\xa1\x0f" + "\x49\x54\x3d\xa9\x50\xf2\xa8\x35\x10\x9b\x0b\x54\xc9\x9d\x44\xce" + "\x34\xa9\xe0\x68\x50\xbe\x48\x54\x20\xdd\xca\xa0\xea\x93\xff\xff" + "\xff\xc3\xf7\x2d\x9e\x27\x2d\x14\x9a\xa9\x97\x51\x4c\x95\x29\x28" + "\xc8\x9f\xa5\x13\x39\xed\x9a\x75\x13\x39\x90\xa2\x13\x61\x6a\x99" + "\x33\xa9\x59\x6c\xee\x39\x0b\x22\x85\xee\x5b\x3d\x28\x32\x24\xc7" + "\xa9\x43\xcb\xff\xff\xff\xe4\xe6\x47\xd2\x86\x4a\x88\x29\x69\x2c" + "\x8a\x47\x6a\x54\x4c\xe5\x50\x72\x77\x2d\x89\x32\x0b\x49\x6a\x4a" + "\x87\x95\x41\xa9\x35\x85\x1a\x4b\x62\x88\x4d\x85\xaa\x64\xce\xa2" + "\x67\x1a\x54\xa2\xdb\x3a\x96\x4f\xff\xff\xff\x3c\x19\x33\x9a\xaf" + "\xa5\x13\x38\xd2\xa5\x03\xf4\xa4\x87\xb2\x91\xd4\x95\x07\x54\x8a" + "\x54\x75\x29\x3d\x85\x51\x33\x8e\xa5\x10\x93\x59\x61\x64\x52\x5b" + "\x0f\x4a\x89\x35\x25\x51\x27\x51\x26\xa4\xbf\x4a\x47\x6a\x7f\xff" + "\xff\xfc\xf1\x39\x89\x3a\x94\x9a\x69\xd2\xa0\xec\x3d\xa8\x2f\xd2" + "\x83\x4a\x83\xab\xd2\x94\x9e\x92\xd4\x9f\xa5\x12\x5b\x2c\x34\x74" + "\x15\x41\xd5\x22\x84\x3d\x35\x96\x8a\x0d\x54\xdf\x4a\x50\x6e\xa5" + "\x51\x33\x95\x4b\x07\x31\x7f\xff\xff\xfc\x3c\xaa\x0d\x4a\x0c\x7a" + "\x94\x3d\x8a\x26\x72\xa9\xe2\xc1\xa6\x75\x0f\x2a\x83\x51\x09\x3d" + "\x94\xaf\xff\xff\xff\xe7\xff\xff\xff\x9b\xe7\x2a\x84\x39\xfa\xa8" + "\x84\xda\x4e\xaa\x4e\x64\x29\x39\x47\x22\x87\xb5\x2a\x1e\x55\x13" + "\x39\x54\x98\x74\x50\x5f\x4a\x48\x73\xd8\xa0\xea\x91\x49\xac\x35" + "\x55\x16\x45\x0b\x51\x0f\x6d\x83\x98\xd5\x4d\x47\xaf\xff\xff\xff" + "\x06\x95\x29\x2f\xd2\x83\x4a\x89\x9c\xaa\x20\x74\x95\x44\x9a\x92" + "\xa9\xd0\xb6\x75\x35\x53\x29\x39\x90\xa2\x67\xb6\x98\xd4\x35\x4a" + "\x26\x72\xa9\x21\xac\x29\x12\x63\xd4\xa1\xe5\x51\x33\x95\x4a\x47" + "\x52\x9e\x27\x3f\xff\xff\xff\x95\x8c\x85\x91\x4b\x6b\x50\x75\x48" + "\xa4\x87\xf1\x52\x91\xfa\x51\x33\x95\x49\xc6\x92\x4f\xe0\x7e\x97" + "\x51\x4d\xf3\xda\x85\x32\x29\xe0\x68\x52\x63\x77\x2d\x4a\x24\xea" + "\x5b\x54\x85\xb1\x09\x1d\x52\x28\x99\xc6\x9f\xff\xff\xff\x27\x2a" + "\x9e\x06\x85\x13\x39\x54\x20\xeb\x48\xcd\x57\xd2\x89\x9c\xaa\x7f" + "\xff\x6f\xff\xf3\x7f\xff\xb3\xaa\x89\x14\xd0\x3a\xbe\xbf\xff\xb7" + "\xff\xf9\xbf\xff\xf3\x28\x6a\x94\x4c\xe5\x50\x87\x3f\x5f\xff\xed" + "\xff\xfe\x6f\xff\xee\x21\x4e\xe5\xb2\xa1\x92\xda\x07\x67\xd2\x89" + "\x9c\xbf\xff\xff\xfe\x1a\xa9\x0d\xdc\xd2\x5a\x3a\x14\xf1\x39\xe9" + "\x53\x22\x94\xda\x84\xa8\x6a\x92\x5b\x3b\x98\xbe\x14\x1d\x52\x29" + "\x5d\xa9\x51\x27\x51\x33\x95\x44\xd8\x7b\x63\xa0\xaa\x1e\x55\x10" + "\x7a\x4b\x39\xfc\x7f\xff\xff\xf9\x31\x52\x93\x55\x32\x94\x95\x41" + "\xa2\x73\xd8\x55\xd4\x53\x22\x93\x8e\x45\x27\x1d\x12\xa8\x84\x8e" + "\xc4\x96\x45\x25\x3d\x9e\x07\x64\x9f\x4a\x24\xea\x4c\x54\xa8\x7e" + "\xe5\xb1\x4f\x06\x4c\xea\x78\x9c\x69\x53\x27\xff\xff\xff\x9e\x06" + "\x85\x08\x5b\x12\x33\x54\xa7\x83\xdb\x44\x8a\x46\x55\x06\xa2\x12" + "\x7b\x29\xf4\xa4\xa6\xee\x55\x29\x35\x56\xa4\xa8\xfa\x53\xc4\xe5" + "\xa9\x41\xa9\x49\xec\x2a\x9d\xcc\x7a\x0b\x52\x7f\xff\xff\xfc\x45" + "\xb2\xca\x72\x0d\x26\xaa\x65\x2b\x1d\x87\xf3\xe9\x14\xa8\x82\x9b" + "\xd9\x64\x51\x33\x95\x4b\x6a\x94\xf6\x26\xda\x86\x92\xa9\x59\x6c" + "\x41\xea\x53\xc4\xe7\x53\xc0\xd0\xa5\x1e\x8d\x54\xca\x1e\xa5\x27" + "\x32\x3f\xff\xff\xfc\x8c\x64\xea\xba\x8a\x63\x2a\x9e\x2c\x2d\x44" + "\x9c\xb2\x28\x3a\xa4\x53\xc5\x86\x4c\xe5\x91\x41\xc6\x7b\x52\xa1" + "\x0f\x57\x7b\x68\x41\xbb\x96\x8f\x4b\xa8\xa6\xf9\xca\xa1\x27\x35" + "\x5f\x4a\x78\x32\x67\x51\x33\x97\xff\xff\xff\xc9\x07\x4d\x6a\x47" + "\x40\xc9\xd5\x48\xca\x3b\x24\xfa\x52\xb3\x9a\xa4\x96\x45\x27\x34" + "\xd3\x96\xc5\x0d\x52\x89\x9c\xaa\x0c\xd6\x28\x34\x28\x99\xca\xa4" + "\x63\x27\x55\x29\xb5\x04\xa0\xa8\x51\x09\x34\xb2\x96\xa2\xc9\xff" + "\xff\xff\xe0\xea\x91\x44\xce\x55\x09\x39\x50\x95\x11\xe0\xb4\x50" + "\x59\x14\x35\x4a\x0e\xa5\x2d\xa8\x87\xa9\x04\x31\xed\x42\x83\xaa" + "\x45\x0d\x52\x12\x6a\x88\x93\x77\x2a\x85\x96\x53\xd8\x95\x12\x75" + "\x26\x2a\x7f\xff\xff\xfc\xa4\xf6\x15\x41\x9a\xc5\xd4\x53\x85\x52" + "\x16\xc5\x13\x39\x54\xf1\x39\x91\xd4\xb6\x23\xe9\x41\xd5\x22\x83" + "\xa2\x85\x2d\xa9\x05\x2d\x5f\x4a\x64\x53\xad\x45\xf0\xa2\x67\x1a" + "\x54\x4c\xe5\x51\x1d\x4d\x52\x9e\x06\x8f\xff\xff\xff\x12\x3e\xa6" + "\xaa\x65\x0f\x52\x83\x52\xbb\x6c\xae\x83\x22\x75\x27\xb4\xab\xff" + "\xff\xff\xf9\xff\xff\xff\xe6\xf9\xca\xa1\x07\x5a\x46\x6a\xbe\x94" + "\x3d\x8a\x72\x3d\x12\xa9\x9c\x76\x20\xb5\x7d\x28\x34\x29\x49\x6a" + "\x50\x83\xa2\x82\xc8\xa4\xe6\xa7\xe9\x42\x14\x68\x2c\x8a\x56\x32" + "\x1a\xa9\x94\x1d\x52\x29\x30\xfd\x96\x4f\xff\xff\xff\x24\x3f\x8a" + "\x94\x1a\x54\x4c\xe5\x52\x4f\x46\xaa\x65\x29\x1d\x4b\xa8\xa6\xe3" + "\xa9\x29\x8b\x61\x0a\xa4\xe3\x91\x44\xce\x64\x29\x29\xaa\x1d\x0a" + "\x21\x36\x5b\x34\xd4\x15\x48\xca\x43\xd2\x55\x13\x38\xd2\xa2\x67" + "\x2f\xff\xff\xff\x88\x19\xa8\x3d\x8a\x56\x3b\x50\x59\x14\x35\x4a" + "\x26\x72\xa8\x32\x25\x43\xca\xa4\xb4\x1a\xa9\x8d\x54\xca\x52\x7b" + "\x0a\xa7\x81\xa4\xb6\x28\x7e\xe5\xb1\x49\xcd\x4a\x83\xaa\x45\x10" + "\x91\xd8\x59\x3f\xff\xff\xfc\x25\xb6\x18\xf6\xa2\x8f\x5f\x4a\x26" + "\x72\xa8\x41\xd5\xdc\x68\x52\x3b\x49\xd4\xa9\x52\xb1\xd8\x9a\x3d" + "\x28\x93\x50\x92\xc8\xa0\xea\x91\x49\x2c\x35\x75\x9a\xa9\x94\x32" + "\x50\xa1\x0f\x52\x4b\x52\x50\xa2\x4f\xff\xff\xff\xe2\x67\x2a\x92" + "\x14\x9d\x57\x51\x4d\xf3\x95\x49\x3d\x1a\xa9\x94\xa4\x75\x29\x19" + "\x46\x95\x06\xa2\x46\x94\x9c\xea\x1e\xa5\x13\x39\x54\x9c\x69\x24" + "\xea\x78\x32\x67\x52\x73\x21\x49\xca\x5a\x11\xf5\xff\xff\xff\xe2" + "\x13\x60\xcd\x34\xe9\x2d\x45\x91\x43\xda\x95\x27\x32\x14\xa0\xb3" + "\x23\xe9\x41\xd5\x22\x88\x49\xa5\x94\xb5\x16\x45\x0d\x52\x87\xa8" + "\xaa\x4d\x61\x46\x95\x12\x5a\x90\x55\x0b\x2c\xa7\xb1\x3f\x4a\x0e" + "\xa9\x3f\xff\xff\xfc\xb0\xf4\x50\x59\x14\x9c\xc8\x52\x72\x8e\x45" + "\x25\xb0\xf4\xa8\x83\x48\x55\x12\x75\x10\x69\x0a\xba\x8a\x6f\x9c" + "\xb5\x28\x99\xca\xa5\x36\xa0\x94\x15\x0a\x58\x5a\x07\xe4\xb2\x7d" + "\x28\x99\xca\xa4\xe5\x1c\x9f\xff\xff\xfe\x21\x27\xae\xb2\xc8\xa5" + "\x87\xa2\x83\x55\x37\xd2\x83\xaa\x45\x06\xa2\x0d\x34\xff\x4a\x0d" + "\x0a\x1e\x55\x2b\xb0\xf2\x9e\xda\xa4\x52\xc2\xd0\x62\xcb\xf4\xa4" + "\xb4\x1c\x69\x2c\x8a\x5b\x5f\x81\xd9\x22\x92\xd8\x7a\x7f\xff\xff" + "\xfc\x9c\xc8\x52\x83\x56\x85\xd4\x53\x7c\xe5\x53\xa0\xfc\x29\x25" + "\x87\xae\xb2\xc9\xf4\xa2\x67\x2a\x96\xd7\x59\x6c\x52\x83\x56\xa5" + "\x06\x95\x25\x93\xe9\x41\xd5\x22\x89\xf0\x75\x2c\x3f\x84\x28\x79" + "\x7f\xff\xff\xfc\x49\xe3\x19\x08\x75\xa4\x32\x08\x7a\x0f\x6d\x85" + "\x91\x44\x94\xa9\x9d\x41\xd7\x59\x47\x61\x64\x5d\x45\x32\x25\x44" + "\x14\xb4\x96\x45\x06\x85\x13\x39\xed\x9a\x75\x27\x32\x14\x94\xa3" + "\x4d\xb6\x15\x0a\x4e\x39\x3f\xff\xff\xfc\x96\xc3\xfb\x2d\x4a\x1a" + "\xa4\x9d\x41\xa9\x21\x87\x19\xe8\x31\x07\x42\x93\x58\x6a\x94\x1a" + "\x54\x4c\xe5\x53\xc1\xec\xa2\x45\x27\x2a\x93\x8e\x45\x28\x2c\xa9" + "\x50\x75\x48\xa1\xed\x4f\x83\x25\x25\x91\x7f", + 12 + 16 * 174 + 11, + "Pacing back and forth the length of the hatchways and savagely chewing\n" + "the end of a cigar, was the man whose casual glance had rescued me from\n" + "the sea. His height was probably five feet ten inches, or ten and a\n" + "half; but my first impression, or feel of the man, was not of this, but\n" + "of his strength. And yet, while he was of massive build, with broad\n" + "shoulders and deep chest, I could not characterize his strength as\n" + "massive. It was what might be termed a sinewy, knotty strength, of the\n" + "kind we ascribe to lean and wiry men, but which, in him, because of his\n" + "heavy build, partook more of the enlarged gorilla order. Not that in\n" + "appearance he seemed in the least gorilla-like. What I am striving to\n" + "express is this strength itself, more as a thing apart from his physical\n" + "semblance. It was a strength we are wont to associate with things\n" + "primitive, with wild animals, and the creatures we imagine our\n" + "tree-dwelling prototypes to have been—a strength savage, ferocious, alive\n" + "in itself, the essence of life in that it is the potency of motion, the\n" + "elemental stuff itself out of which the many forms of life have been\n" + "moulded; in short, that which writhes in the body of a snake when the\n" + "head is cut off, and the snake, as a snake, is dead, or which lingers in\n" + "the shapeless lump of turtle-meat and recoils and quivers from the prod\n" + "of a finger.\n" + "\n" + "Such was the impression of strength I gathered from this man who paced up\n" + "and down. He was firmly planted on his legs; his feet struck the deck\n" + "squarely and with surety; every movement of a muscle, from the heave of\n" + "the shoulders to the tightening of the lips about the cigar, was\n" + "decisive, and seemed to come out of a strength that was excessive and\n" + "overwhelming. In fact, though this strength pervaded every action of\n" + "his, it seemed but the advertisement of a greater strength that lurked\n" + "within, that lay dormant and no more than stirred from time to time, but\n" + "which might arouse, at any moment, terrible and compelling, like the rage\n" + "of a lion or the wrath of a storm.\n" + "\n" + "The cook stuck his head out of the galley door and grinned encouragingly\n" + "at me, at the same time jerking his thumb in the direction of the man who\n" + "paced up and down by the hatchway. Thus I was given to understand that\n" + "he was the captain, the “Old Man,†in the cook’s vernacular, the\n" + "individual whom I must interview and put to the trouble of somehow\n" + "getting me ashore. I had half started forward, to get over with what I\n" + "was certain would be a stormy five minutes, when a more violent\n" + "suffocating paroxysm seized the unfortunate person who was lying on his\n" + "back. He wrenched and writhed about convulsively. The chin, with the\n" + "damp black beard, pointed higher in the air as the back muscles stiffened\n" + "and the chest swelled in an unconscious and instinctive effort to get\n" + "more air. Under the whiskers, and all unseen, I knew that the skin was\n" + "taking on a purplish hue.\n" + "\n" + "The captain, or Wolf Larsen, as men called him, ceased pacing and gazed\n" + "down at the dying man. So fierce had this final struggle become that the\n" + "sailor paused in the act of flinging more water over him and stared\n" + "curiously, the canvas bucket partly tilted and dripping its contents to\n" + "the deck. The dying man beat a tattoo on the hatch with his heels,\n" + "straightened out his legs, and stiffened in one great tense effort, and\n" + "rolled his head from side to side. Then the muscles relaxed, the head\n" + "stopped rolling, and a sigh, as of profound relief, floated upward from\n" + "his lips. The jaw dropped, the upper lip lifted, and two rows of\n" + "tobacco-discoloured teeth appeared. It seemed as though his features had\n" + "frozen into a diabolical grin at the world he had left and outwitted.", + 3687, + }, + { __LINE__, + (unsigned char *) + "\xe5\x39\x6a\x50\xd5\x28\x99\xca\xa5\xe3\xdb\x62" + "\x0a\xa1\xe5\x52\x7b\x69\x1d\x4a\x17\xb9\x6a\x4a\x14\x32\x54\x8c" + "\xa4\x3d\x25\x42\x95\x14\x85\x42\x07\x67\xa5\x25\x3d\x8a\x1e\xa2" + "\xa9\x59\x4f\x5d\x05\x51\x27\x52\x43\x21\x07\xa3\xb9\x54\x4c\xe5" + "\x52\xb3\xd0\x64\x98\x83\xa1\x48\xc7\x54\x88\x53\xc4\xe6\x24\xea" + "\x4e\x3e\xe5\x50\x87\xaa\xa2\x91\x25\x91\x44\xce\x5a\x54\xf0\x64" + "\xce\xa0\xea\x3a\x67\x2d\x8a\x0e\xa9\x14\x49\xd4\x1a\x11\x6d\x25" + "\x50\x74\x9e\xa9\x94\x4c\xe5\x52\xb3\xf8\x2d\x88\x50\xf2\xa8\x99" + "\xca\xa1\x47\x62\x67\xfa\x51\x33\x95\x44\x16\xb1\xd8\x34\x95\x41" + "\xd5\x22\x85\xed\x68\xe8\x51\x09\x1a\x4c\x7a\x94\x49\xd4\xf1\x39" + "\x89\x3a\x89\x9c\xaa\x67\x1f\x84\x28\x79\x54\xd2\x34\xdb\x61\x54" + "\x1d\x52\x28\x79\x54\xd2\x34\xdb\x61\x7f\xd2\x14\xc4\x79\x14\x2d" + "\x49\x32\x68\x2a\x89\x9c\xb4\xfd\x28\x35\x24\x29\x0b\x52\x54\xb0" + "\xa8\xac\xa4\x4a\x89\x3a\x89\x9c\xaa\x1e\xb3\x54\x63\xd4\x85\x0f" + "\x2a\x94\x8e\xae\xa6\xaa\x45\x2c\x2f\x6b\x4d\x61\x50\xa2\x67\x1a" + "\x54\x4c\xe5\xf4\xa2\x27\x3d\xb4\x48\xa4\x85\x25\x03\xb0\xaa\x26" + "\x72\xa8\x41\xda\x82\xa1\x4f\x13\x98\x93\xa8\x6a\x6b\x2d\x0a\x26" + "\x72\xd2\xa2\x4e\xa2\x67\x2a\x88\x2d\x63\xb0\x69\x31\xea\x5f", + 12 + 16 * 16 + 15, + "When in the Course of human events it becomes necessary for one " + "people to dissolve the political bands which have connected them " + "with another and to assume among the powers of the earth, the " + "separate and equal station to which the Laws of Nature and of " + "Nature's God entitle them, a decent respect to the opinions of " + "mankind requires that they should declare the causes which impel " + "them to the separation.", + 404, + }, +}; + +void +run_test (const struct test_huff_dec *test) +{ + struct huff_decode_retval retval; + struct lsqpack_huff_decode_state state; + unsigned in_chunk_sz, out_chunk_sz, in_off, out_off, n_to_read, n_to_write; + char output[0x1000]; + + if (verbose) + fprintf(stderr, "Run test on line %u\n", test->lineno); + + for (in_chunk_sz = 1; in_chunk_sz <= test->src_sz; ++in_chunk_sz) + { + if (verbose) + fprintf(stderr, "chunk %u out of %zu\n", in_chunk_sz, test->src_sz); + for (out_chunk_sz = 1; out_chunk_sz <= test->dst_sz; ++out_chunk_sz) + { + in_off = 0; + out_off = 0; + state.resume = 0; + n_to_read = MIN(test->src_sz, in_chunk_sz); + n_to_write = MIN(test->dst_sz, out_chunk_sz); + + do + { + assert(in_off + n_to_read <= test->src_sz); /* self-test */ + retval = lsqpack_huff_decode_full(test->src + in_off, n_to_read, + (unsigned char *) output + out_off, n_to_write, &state, + test->src_sz == in_off + n_to_read); + switch (retval.status) + { + case HUFF_DEC_OK: + in_off += retval.n_src; + out_off += retval.n_dst; + assert(test->dst_sz == out_off); + assert(test->src_sz == in_off); + assert(0 == memcmp(test->dst, output, out_off)); + break; + case HUFF_DEC_END_SRC: + case HUFF_DEC_END_DST: + in_off += retval.n_src; + out_off += retval.n_dst; + n_to_write = MIN(sizeof(output) - out_off, out_chunk_sz); + n_to_read = MIN(test->src_sz - in_off, in_chunk_sz); + break; + default: + assert(retval.status == HUFF_DEC_ERROR); + assert(0); + } + } + while (in_off < test->src_sz); + assert(retval.status == HUFF_DEC_OK); + } + } +} + +int +main (int argc, char **argv) +{ + const struct test_huff_dec *test; + int opt, run_expensive = 0; + + while (-1 != (opt = getopt(argc, argv, "ve"))) + { + switch (opt) + { + case 'v': + verbose = 1; + break; + case 'e': + run_expensive = 1; + break; + default: + exit(EXIT_FAILURE); + } + } + + for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) + if (run_expensive || test->src_sz * test->dst_sz < 150000) + run_test(test); + + return 0; +} diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/test_int.c b/external/lsquic/src/liblsquic/ls-qpack/test/test_int.c new file mode 100644 index 0000000..94e3800 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/test_int.c @@ -0,0 +1,220 @@ +#include +#include +#include +#include + +#include "lsqpack.h" +#include "lsqpack-test.h" + +struct int_test +{ + int it_lineno; + unsigned it_prefix_bits; + unsigned char it_encoded[20]; + size_t it_enc_sz; + uint64_t it_decoded; + int it_dec_retval; +}; + +static const struct int_test tests[] = +{ + + { .it_lineno = __LINE__, + .it_prefix_bits = 7, + .it_encoded = { 0x7F, 0x02, }, + .it_enc_sz = 2, + .it_decoded = 0x81, + .it_dec_retval = 0, + }, + + /* RFC 7541, Appendinx C.1.1 */ + { .it_lineno = __LINE__, + .it_prefix_bits = 5, + .it_encoded = { 0b1010, 0x02, }, + .it_enc_sz = 1, + .it_decoded = 10, + .it_dec_retval = 0, + }, + + /* RFC 7541, Appendinx C.1.2 */ + { .it_lineno = __LINE__, + .it_prefix_bits = 5, + .it_encoded = { 0b11111, 0b10011010, 0b00001010, }, + .it_enc_sz = 3, + .it_decoded = 1337, + .it_dec_retval = 0, + }, + + /* RFC 7541, Appendinx C.1.3 */ + { .it_lineno = __LINE__, + .it_prefix_bits = 8, + .it_encoded = { 0b101010, }, + .it_enc_sz = 1, + .it_decoded = 42, + .it_dec_retval = 0, + }, + + { .it_lineno = __LINE__, + .it_prefix_bits = 7, + .it_encoded = { 0b01111111, 0b10000001, 0b10000010, 0b00000011, }, + .it_enc_sz = 4, + /* 01234560123456 */ + .it_decoded = 0b1100000100000001 + 0b1111111, + .it_dec_retval = 0, + }, + + { .it_lineno = __LINE__, + .it_prefix_bits = 7, + .it_encoded = { 0b01111111, 0b10000001, 0b10000010, 0b10000011, + 0b00000011, }, + .it_enc_sz = 5, + /* 012345601234560123456 */ + .it_decoded = 0b11000001100000100000001 + 0b1111111, + .it_dec_retval = 0, + }, + + { .it_lineno = __LINE__, + .it_prefix_bits = 7, + .it_encoded = { 0b01111111, 0b10000001, 0b10000010, 0b10000011, + 0b10000100, 0b10000101, 0b10000110, 0b10000111, + 0b10001000, + 0b00000011, }, + .it_enc_sz = 10, + /* 01234560123456012345601234560123456012345601234560123456 */ + .it_decoded = 0b1100010000000111000011000001010000100000001100000100000001 + + 0b1111111, + .it_dec_retval = 0, + }, + + { .it_lineno = __LINE__, + .it_prefix_bits = 7, + .it_encoded = { 0b01111111, 0b10000001, 0b10000010, 0b10000011, + 0b10000100, 0b10000101, 0b10000110, 0b10000111, + 0b10001000, 0b10001001, + 0b00000001, }, + .it_enc_sz = 11, + /* 012345601234560123456012345601234560123456012345601234560123456 */ + .it_decoded = 0b1000100100010000000111000011000001010000100000001100000100000001 + + 0b1111111, + .it_dec_retval = 0, + }, + + { .it_lineno = __LINE__, + .it_prefix_bits = 7, + .it_encoded = { 0b01111111, 0b10000000, 0b11111111, 0b11111111, + 0b11111111, 0b11111111, 0b11111111, 0b11111111, + 0b11111111, 0b11111111, + 0b00000001, }, + .it_enc_sz = 11, + .it_decoded = UINT64_MAX, + .it_dec_retval = 0, + }, + + { .it_lineno = __LINE__, + .it_prefix_bits = 7, + /* Same as above, but with extra bit that overflows it */ + /* ----v---- */ + .it_encoded = { 0b01111111, 0b10010000, 0b11111111, 0b11111111, + 0b11111111, 0b11111111, 0b11111111, 0b11111111, + 0b11111111, 0b11111111, + 0b00000001, }, + .it_enc_sz = 11, + .it_dec_retval = -2, + }, + + { .it_lineno = __LINE__, + .it_prefix_bits = 8, + .it_encoded = { 0b11111111, 0b10000001, 0b10000010, 0b10000011, + 0b10000100, 0b10000101, 0b10000110, 0b10000111, + 0b10001000, 0b10001001, 0b00000001, }, + .it_enc_sz = 11, + /* 012345601234560123456012345601234560123456012345601234560123456 */ + .it_decoded = 0b1000100100010000000111000011000001010000100000001100000100000001 + + 0b11111111, + .it_dec_retval = 0, + }, + + { .it_lineno = __LINE__, + .it_prefix_bits = 7, + .it_encoded = { 0b01111111, 0b11101111, 0b11111111, 0b11111111, + 0b11111111, 0b11111111, 0b11111111, 0b11111111, + 0b11111111, 0b11111111, + 0b00000001, }, + .it_enc_sz = 11, + .it_dec_retval = -2, + }, + + { .it_lineno = __LINE__, + .it_prefix_bits = 7, + .it_encoded = { 0b01111111, 0b10000001, 0b10000010, 0b10000011, + 0b10000100, 0b10000101, 0b10000110, 0b10000111, + 0b10001000, 0b10001001, + 0b00000011, }, + .it_enc_sz = 11, + .it_dec_retval = -2, + }, + + { .it_lineno = __LINE__, + .it_prefix_bits = 7, + .it_encoded = { 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, }, + .it_enc_sz = 11, + .it_dec_retval = -2, + }, + +}; + +int +main (void) +{ + const struct int_test *test; + const unsigned char *src; + unsigned char *dst; + unsigned char buf[ sizeof(((struct int_test *) NULL)->it_encoded) ]; + uint64_t val; + size_t sz; + int rv; + + /* Test the decoder */ + for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) + { + struct lsqpack_dec_int_state state; + state.resume = 0; + for (sz = 0; sz < test->it_enc_sz - 1; ++sz) + { + src = test->it_encoded + sz; + rv = lsqpack_dec_int(&src, src + 1, test->it_prefix_bits, + &val, &state); + assert(-1 == rv); + } + src = test->it_encoded + sz; + rv = lsqpack_dec_int(&src, src + 1, test->it_prefix_bits, + &val, &state); + assert(rv == test->it_dec_retval); + if (0 == rv) + assert(val == test->it_decoded); + } + + /* Test the encoder */ + for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) + { + if (test->it_dec_retval != 0) + continue; + for (sz = 1; sz < test->it_enc_sz; ++sz) + { + dst = lsqpack_enc_int(buf, buf + sz, test->it_decoded, + test->it_prefix_bits); + assert(dst == buf); /* Not enough room */ + } + for (; sz <= sizeof(buf); ++sz) + { + buf[0] = '\0'; + dst = lsqpack_enc_int(buf, buf + sz, test->it_decoded, + test->it_prefix_bits); + assert(dst - buf == (intptr_t) test->it_enc_sz); + assert(0 == memcmp(buf, test->it_encoded, test->it_enc_sz)); + } + } + + return 0; +} diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/test_qpack.c b/external/lsquic/src/liblsquic/ls-qpack/test/test_qpack.c new file mode 100644 index 0000000..0d882ed --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/test_qpack.c @@ -0,0 +1,1125 @@ +/* + * Test QPACK. + */ + +#include +#include +#include +#include +#include +#include + +#include "lsqpack.h" +#include "lsqpack-test.h" +#include "lsxpack_header.h" + +#define ENC_BUF_SZ 200 +#define HEADER_BUF_SZ 200 +#define PREFIX_BUF_SZ 10 + +static const struct qpack_header_block_test +{ + /* Identification: */ + int qhbt_lineno; + + /* Input: */ + unsigned qhbt_table_size; + unsigned qhbt_max_risked_streams; + unsigned qhbt_n_headers; + struct { + const char *name, *value; + enum lsqpack_enc_flags flags; + } qhbt_headers[10]; + + /* Output: */ + size_t qhbt_enc_sz; + unsigned char qhbt_enc_buf[ENC_BUF_SZ]; + + size_t qhbt_prefix_sz; + unsigned char qhbt_prefix_buf[PREFIX_BUF_SZ]; + + size_t qhbt_header_sz; + unsigned char qhbt_header_buf[HEADER_BUF_SZ]; +} header_block_tests[] = +{ + + { + .qhbt_lineno = __LINE__, + .qhbt_table_size = 0x1000, + .qhbt_max_risked_streams = 100, + .qhbt_n_headers = 1, + .qhbt_headers = { + { ":method", "GET", 0, }, + }, + .qhbt_enc_sz = 0, + .qhbt_prefix_sz = 2, + .qhbt_prefix_buf = "\x00\x00", + .qhbt_header_sz = 1, + .qhbt_header_buf = { + 0x80 | 0x40 | 17, + }, + }, + + { + .qhbt_lineno = __LINE__, + .qhbt_table_size = 0x1000, + .qhbt_max_risked_streams = 100, + .qhbt_n_headers = 1, + .qhbt_headers = { + { ":method", "method", LQEF_NEVER_INDEX, }, + }, + .qhbt_enc_sz = 0, + .qhbt_prefix_sz = 2, + .qhbt_prefix_buf = "\x00\x00", + .qhbt_header_sz = 8, + .qhbt_header_buf = { + 0x40 | 0x20 | 0x10 | 0x0F, 0x00, + 0x80 /* Huffman */ | 5 /* length */, + 0xa4, 0xa9, 0x9c, 0xf2, 0x7f, + }, + }, + + { + .qhbt_lineno = __LINE__, + .qhbt_table_size = 0x1000, + .qhbt_max_risked_streams = 0, + .qhbt_n_headers = 1, + .qhbt_headers = { + { ":method", "method", 0, }, + }, + .qhbt_enc_sz = 7, + .qhbt_enc_buf = { + 0x80 | 0x40 /* static */ | 15 /* name index */, + 0x80 /* Huffman */ | 5 /* length */, + 0xa4, 0xa9, 0x9c, 0xf2, 0x7f, + }, + .qhbt_prefix_sz = 2, + .qhbt_prefix_buf = "\x00\x00", + .qhbt_header_sz = 8, + .qhbt_header_buf = { + 0x40 | 0x10 /* Static */ | 15, 0x00, + 0x80 /* Huffman */ | 5 /* length */, + 0xa4, 0xa9, 0x9c, 0xf2, 0x7f, + }, + }, + + { + .qhbt_lineno = __LINE__, + .qhbt_table_size = 0x1000, + .qhbt_max_risked_streams = 0x1000, + .qhbt_n_headers = 1, + .qhbt_headers = { + { ":method", "method", 0, }, + }, + .qhbt_enc_sz = 7, + .qhbt_enc_buf = { + 0x80 | 0x40 /* static */ | 15 /* name index */, + 0x80 /* Huffman */ | 5 /* length */, + 0xa4, 0xa9, 0x9c, 0xf2, 0x7f, + }, + .qhbt_prefix_sz = 2, + .qhbt_prefix_buf = { 0x02, 0x80, }, + .qhbt_header_sz = 1, + .qhbt_header_buf = { + 0x10 | 0 /* Relative dynamic ID */, + }, + }, + + { + .qhbt_lineno = __LINE__, + .qhbt_table_size = 0x1000, + .qhbt_max_risked_streams = 0x1000, + .qhbt_n_headers = 1, + .qhbt_headers = { + { "dude", "where is my car?", LQEF_NEVER_INDEX, }, + }, + .qhbt_enc_sz = 0, + .qhbt_prefix_sz = 2, + .qhbt_prefix_buf = "\x00\x00", + .qhbt_header_sz = 17, + .qhbt_header_buf = { + 0x20 | 0x10 /* No index */ | 0x08 | 3, + 0x92, 0xd9, 0x0b, + 0x80 | 0xC, + 0xf1, 0x39, 0x6c, 0x2a, 0x86, 0x42, 0x94, 0xfa, + 0x50, 0x83, 0xb3, 0xfc, + }, + }, + + { + .qhbt_lineno = __LINE__, + .qhbt_table_size = 0x1000, + .qhbt_max_risked_streams = 0, + .qhbt_n_headers = 3, + .qhbt_headers = { + { "dude", "where is my car?", 0, }, + { ":method", "GET", 0, }, + /* The "aaa..." string triggers header_out_grow_buf() */ + { "aaaaaaaaaaaaaaaaaaaaaaaaaa", + "aaaaaaaaaaaaaaaaaaaaaaaaaa", 0, }, + }, + .qhbt_enc_sz = 53, + .qhbt_enc_buf = { + 0x40 | 0x20 | 3, + 0x92, 0xd9, 0x0b, + 0x80 | 0xC, + 0xf1, 0x39, 0x6c, 0x2a, 0x86, 0x42, 0x94, 0xfa, + 0x50, 0x83, 0xb3, 0xfc, + 0x40 /* Without name reference */ | 0x20 /* Huffman */ | 17 /* Length */, + 0x18, 0xc6, 0x31, 0x8c, 0x63, 0x18, 0xc6, 0x31, 0x8c, + 0x63, 0x18, 0xc6, 0x31, 0x8c, 0x63, 0x18, 0xff, + 0x80 /* Huffman */ | 17 /* length */, + 0x18, 0xc6, 0x31, 0x8c, 0x63, 0x18, 0xc6, 0x31, 0x8c, + 0x63, 0x18, 0xc6, 0x31, 0x8c, 0x63, 0x18, 0xff, + }, + .qhbt_prefix_sz = 2, + .qhbt_prefix_buf = "\x00\x00", + .qhbt_header_sz = 55, + .qhbt_header_buf = { + 0x20 | 0x08 | 3, + 0x92, 0xd9, 0x0b, + 0x80 | 0xC, + 0xf1, 0x39, 0x6c, 0x2a, 0x86, 0x42, 0x94, 0xfa, + 0x50, 0x83, 0xb3, 0xfc, + 0x80 | 0x40 | 17, + 0x20 /* Without name reference */ | 0x08 /* Huffman */ | 7 , 0x0A /* Length */, + 0x18, 0xc6, 0x31, 0x8c, 0x63, 0x18, 0xc6, 0x31, 0x8c, + 0x63, 0x18, 0xc6, 0x31, 0x8c, 0x63, 0x18, 0xff, + 0x80 /* Huffman */ | 17 /* length */, + 0x18, 0xc6, 0x31, 0x8c, 0x63, 0x18, 0xc6, 0x31, 0x8c, + 0x63, 0x18, 0xc6, 0x31, 0x8c, 0x63, 0x18, 0xff, + }, + }, + + { + .qhbt_lineno = __LINE__, + .qhbt_table_size = 0x1000, + .qhbt_max_risked_streams = 1, + .qhbt_n_headers = 1, + .qhbt_headers = { + { "dude", "where is my car?", 0, }, + }, + .qhbt_enc_sz = 17, + .qhbt_enc_buf = { + 0x40 | 0x20 | 3, + 0x92, 0xd9, 0x0b, + 0x80 | 0xC, + 0xf1, 0x39, 0x6c, 0x2a, 0x86, 0x42, 0x94, 0xfa, + 0x50, 0x83, 0xb3, 0xfc, + }, + .qhbt_prefix_sz = 2, + .qhbt_prefix_buf = { 0x02, 0x80, }, + .qhbt_header_sz = 1, + .qhbt_header_buf = { + 0x10 | 0 /* Relative dynamic ID */, + }, + }, + +}; + + +struct header_buf +{ + unsigned off; + char buf[UINT16_MAX]; +}; + + +int +header_set_ptr (struct lsxpack_header *hdr, struct header_buf *header_buf, + const char *name, size_t name_len, + const char *val, size_t val_len) +{ + if (header_buf->off + name_len + val_len <= sizeof(header_buf->buf)) + { + memcpy(header_buf->buf + header_buf->off, name, name_len); + memcpy(header_buf->buf + header_buf->off + name_len, val, val_len); + lsxpack_header_set_offset2(hdr, header_buf->buf + header_buf->off, + 0, name_len, name_len, val_len); + header_buf->off += name_len + val_len; + return 0; + } + else + return -1; +} + +static void +run_header_test (const struct qpack_header_block_test *test) +{ + unsigned char header_buf[HEADER_BUF_SZ], enc_buf[ENC_BUF_SZ], + prefix_buf[PREFIX_BUF_SZ]; + unsigned header_off, enc_off; + size_t header_sz, enc_sz, dec_sz; + struct lsqpack_enc enc; + unsigned i; + size_t nw; + int s; + enum lsqpack_enc_status enc_st; + float ratio; + unsigned char dec_buf[LSQPACK_LONGEST_SDTC]; + struct lsxpack_header xhdr; + struct header_buf hbuf; + + dec_sz = sizeof(dec_buf); + s = lsqpack_enc_init(&enc, stderr, test->qhbt_table_size, + test->qhbt_table_size, test->qhbt_max_risked_streams, + LSQPACK_ENC_OPT_IX_AGGR, dec_buf, &dec_sz); + assert(s == 0); + + s = lsqpack_enc_start_header(&enc, 0, 0); + assert(s == 0); + + header_off = 0, enc_off = 0; + for (i = 0; i < test->qhbt_n_headers; ++i) + { + /* Increase buffers one by one to exercise error conditions */ + enc_sz = 0; + header_sz = 0; + while (1) + { + hbuf.off = 0; + s = header_set_ptr(&xhdr, &hbuf, + test->qhbt_headers[i].name, + strlen(test->qhbt_headers[i].name), + test->qhbt_headers[i].value, + strlen(test->qhbt_headers[i].value)); + assert(s == 0); + enc_st = lsqpack_enc_encode(&enc, + enc_buf + enc_off, &enc_sz, + header_buf + header_off, &header_sz, + &xhdr, + test->qhbt_headers[i].flags); + switch (enc_st) + { + case LQES_NOBUF_ENC: + if (enc_sz < sizeof(enc_buf) - enc_off) + ++enc_sz; + else + assert(0); + break; + case LQES_NOBUF_HEAD: + if (header_sz < sizeof(header_buf) - header_off) + ++header_sz; + else + assert(0); + break; + default: + assert(enc_st == LQES_OK); + goto end_encode_one_header; + } + } + end_encode_one_header: + enc_off += enc_sz; + header_off += header_sz; + } + + nw = lsqpack_enc_end_header(&enc, prefix_buf, sizeof(prefix_buf), NULL); + assert(nw == test->qhbt_prefix_sz); + assert(0 == memcmp(test->qhbt_prefix_buf, prefix_buf, nw)); + assert(enc_off == test->qhbt_enc_sz); + assert(0 == memcmp(test->qhbt_enc_buf, enc_buf, enc_off)); + assert(header_off == test->qhbt_header_sz); + assert(0 == memcmp(test->qhbt_header_buf, header_buf, header_off)); + assert(lsqpack_enc_ratio(&enc) > 0.0); + + lsqpack_enc_cleanup(&enc); +} + + +struct dhte /* decoded header test ext */ +{ + struct lsxpack_header xhdr; + size_t buf_off; + char buf[0x1000]; +}; + + +static void +dht_unblocked (void *hblock_ctx_p) +{ + assert(0); /* Not expecting this to be called */ +} + + +static struct lsxpack_header * +dht_prepare_decode (void *hblock_ctx_p, struct lsxpack_header *xhdr, size_t space) +{ + struct dhte *const dhte = hblock_ctx_p; + size_t avail; + + if (space > LSXPACK_MAX_STRLEN) + return NULL; + + if (xhdr) + { + assert(xhdr == &dhte->xhdr); + assert(xhdr->val_len < space); + avail = sizeof(dhte->buf) - xhdr->name_offset - 1 /* NUL */; + if (avail < space) + return NULL; + xhdr->val_len = space; + } + else + { + avail = sizeof(dhte->buf) - dhte->buf_off - 1 /* NUL */; + if (avail < space) + return NULL; + lsxpack_header_prepare_decode(&dhte->xhdr, dhte->buf, dhte->buf_off, + space); + } + + return &dhte->xhdr; +} + + +static int +dht_process_header (void *hblock_ctx_p, struct lsxpack_header *xhdr) +{ + struct dhte *const dhte = hblock_ctx_p; + + assert(xhdr == &dhte->xhdr); + dhte->buf_off += lsxpack_header_get_dec_size(xhdr); + + return 0; +} + + +static void +run_decoded_headers_test_ext (const struct qpack_header_block_test *test, + const enum lsqpack_dec_opts opts, const size_t name_offset) +{ + struct lsqpack_dec dec; + char exp_hbuf[0x1000]; /* Large enough to hold all headers */ + struct dhte dhte; + size_t sz; + unsigned i; + int s; + enum lsqpack_read_header_status rhs; + const unsigned char *buf; + unsigned char dec_buf[LSQPACK_LONGEST_HEADER_ACK]; + size_t dec_sz; + const struct lsqpack_dec_hset_if dht_if = { + .dhi_unblocked = dht_unblocked, + .dhi_prepare_decode = dht_prepare_decode, + .dhi_process_header = dht_process_header, + }; + + /* Construct expected headers buffer: */ + sz = 0; + exp_hbuf[0] = '\0'; + for (i = 0; i < test->qhbt_n_headers; ++i) + { + strcpy(exp_hbuf + sz, test->qhbt_headers[i].name); + sz += strlen(test->qhbt_headers[i].name); + if (opts & LSQPACK_DEC_OPT_HTTP1X) + { + strcpy(exp_hbuf + sz, ": "); + sz += 2; + } + strcpy(exp_hbuf + sz, test->qhbt_headers[i].value); + sz += strlen(test->qhbt_headers[i].value); + if (opts & LSQPACK_DEC_OPT_HTTP1X) + { + strcpy(exp_hbuf + sz, "\r\n"); + sz += 2; + } + } + assert(sz < sizeof(exp_hbuf)); /* Self-check */ + + /* Decode headers into dhte buffer */ + dhte.buf_off = name_offset; + lsqpack_dec_init(&dec, NULL, test->qhbt_table_size, + test->qhbt_max_risked_streams, &dht_if, opts); + if (test->qhbt_enc_sz) + { + s = lsqpack_dec_enc_in(&dec, test->qhbt_enc_buf, test->qhbt_enc_sz); + assert(s == 0); + } + assert(test->qhbt_header_sz); /* Self-check */ + buf = test->qhbt_prefix_buf; + dec_sz = sizeof(dec_buf); + rhs = lsqpack_dec_header_in(&dec, &dhte, 0, + test->qhbt_prefix_sz + test->qhbt_header_sz, + &buf, test->qhbt_prefix_sz, + dec_buf, &dec_sz); + assert(rhs == LQRHS_NEED); + assert(buf == test->qhbt_prefix_buf + test->qhbt_prefix_sz); + buf = test->qhbt_header_buf; + dec_sz = sizeof(dec_buf); + rhs = lsqpack_dec_header_read(&dec, &dhte, + &buf, test->qhbt_header_sz, + dec_buf, &dec_sz); + assert(rhs == LQRHS_DONE); + assert(buf == test->qhbt_header_buf + test->qhbt_header_sz); + lsqpack_dec_cleanup(&dec); + + /* Now compare the buffers */ + dhte.buf[dhte.buf_off] = '\0'; + s = strcmp(dhte.buf + name_offset, exp_hbuf); + assert(s == 0); +} + + +static void +run_decoded_headers_test (const struct qpack_header_block_test *test) +{ + const enum lsqpack_dec_opts opts[] = { 0, LSQPACK_DEC_OPT_HTTP1X, }; + const size_t offs[] = { 0, 1, 20, }; + unsigned i, j; + + for (i = 0; i < sizeof(opts) / sizeof(opts[0]); ++i) + for (j = 0; j < sizeof(offs) / sizeof(offs[0]); ++j) + run_decoded_headers_test_ext(test, opts[i], offs[j]); +} + + +static void +run_header_cancellation_test(const struct qpack_header_block_test *test) { + unsigned char header_buf[HEADER_BUF_SZ]; + size_t header_sz, enc_sz; + struct lsqpack_enc enc; + int s; + enum lsqpack_enc_status enc_st; + struct lsxpack_header xhdr; + struct header_buf hbuf; + + s = lsqpack_enc_init(&enc, stderr, 0, 0, test->qhbt_max_risked_streams, + LSQPACK_ENC_OPT_IX_AGGR, NULL, NULL); + assert(s == 0); + + s = lsqpack_enc_start_header(&enc, 0, 0); + assert(s == 0); + + header_sz = HEADER_BUF_SZ; + enc_sz = 0; + + hbuf.off = 0; + header_set_ptr(&xhdr, &hbuf, + test->qhbt_headers[0].name, + strlen(test->qhbt_headers[0].name), + test->qhbt_headers[0].value, + strlen(test->qhbt_headers[0].value)); + enc_st = lsqpack_enc_encode(&enc, + NULL, &enc_sz, + header_buf, &header_sz, + &xhdr, + 0); + assert(enc_st == LQES_OK); + + s = lsqpack_enc_cancel_header(&enc); + assert(s == 0); + + /* Check that we can start again after cancelling. */ + s = lsqpack_enc_start_header(&enc, 0, 0); + assert(s == 0); + + lsqpack_enc_cleanup(&enc); +} + + +static void +test_enc_init (void) +{ + struct lsqpack_enc enc; + size_t dec_sz; + int s; + unsigned i; + const unsigned char *p; + uint64_t val; + struct lsqpack_dec_int_state state; + unsigned char dec_buf[LSQPACK_LONGEST_SDTC]; + + const struct { + unsigned peer_max_size; /* Value provided by peer */ + unsigned our_max_size; /* Value to use */ + int expected_tsu; /* Expecting TSU instruction? */ + } tests[] = { + { 0x1000, 0x1000, 1, }, + { 0x1000, 1, 1, }, + { 0x100, 0x100, 1, }, + { 0x1000, 0, 0, }, + }; + + for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) + { + dec_sz = sizeof(dec_buf); + s = lsqpack_enc_init(&enc, stderr, tests[i].peer_max_size, + tests[i].our_max_size, 0, 0, dec_buf, &dec_sz); + assert(s == 0); + if (tests[i].expected_tsu) + { + assert(dec_sz > 0); + assert((dec_buf[0] & 0xE0) == 0x20); + p = dec_buf; + state.resume = 0; + s = lsqpack_dec_int(&p, p + dec_sz, 5, &val, &state); + assert(s == 0); + assert(val == tests[i].our_max_size); + } + else + assert(dec_sz == 0); + lsqpack_enc_cleanup(&enc); + } +} + + +/* Test that push promise header does not use the dynamic table, nor does + * it update history. + */ +static void +test_push_promise (void) +{ + struct lsqpack_enc enc; + ssize_t nw; + enum lsqpack_enc_status enc_st; + int s; + unsigned i; + const unsigned char *p; + uint64_t val; + struct lsqpack_dec_int_state state; + unsigned char dec_buf[LSQPACK_LONGEST_SDTC]; + unsigned char header_buf[HEADER_BUF_SZ], enc_buf[ENC_BUF_SZ], + prefix_buf[PREFIX_BUF_SZ]; + size_t header_sz, enc_sz, dec_sz; + enum lsqpack_enc_header_flags hflags; + struct lsxpack_header xhdr; + struct header_buf hbuf; + + dec_sz = sizeof(dec_buf); + s = lsqpack_enc_init(&enc, stderr, 0x1000, 0x1000, 100, 0, dec_buf, &dec_sz); + assert(0 == s); + + (void) dec_sz; /* We don't care for this test */ + + s = lsqpack_enc_start_header(&enc, 0, 0); + assert(0 == s); + enc_sz = sizeof(enc_buf); + header_sz = sizeof(header_buf); + hbuf.off = 0; + header_set_ptr(&xhdr, &hbuf, ":method", 7, "dude!", 5); + enc_st = lsqpack_enc_encode(&enc, + enc_buf, &enc_sz, header_buf, &header_sz, + &xhdr, 0); + assert(LQES_OK == enc_st); + enc_sz = sizeof(enc_buf); + header_sz = sizeof(header_buf); + header_set_ptr(&xhdr, &hbuf, ":method", 7, "dude!", 5); + enc_st = lsqpack_enc_encode(&enc, + enc_buf, &enc_sz, header_buf, &header_sz, + &xhdr, 0); + assert(LQES_OK == enc_st); + nw = lsqpack_enc_end_header(&enc, prefix_buf, sizeof(prefix_buf), &hflags); + assert(2 == nw); + assert(!(prefix_buf[0] == 0 && prefix_buf[1] == 0)); /* Dynamic table used */ + assert(hflags & LSQECH_REF_NEW_ENTRIES); + assert(hflags & LSQECH_REF_AT_RISK); + + s = lsqpack_enc_start_header(&enc, 0, 0); + assert(0 == s); + enc_sz = sizeof(enc_buf); + header_sz = sizeof(header_buf); + header_set_ptr(&xhdr, &hbuf, ":method", 7, "dude!", 5); + enc_st = lsqpack_enc_encode(&enc, + enc_buf, &enc_sz, header_buf, &header_sz, + &xhdr, LQEF_NO_HIST_UPD|LQEF_NO_DYN); + assert(LQES_OK == enc_st); + enc_sz = sizeof(enc_buf); + header_sz = sizeof(header_buf); + header_set_ptr(&xhdr, &hbuf, ":method", 7, "where is my car?", 16); + enc_st = lsqpack_enc_encode(&enc, + enc_buf, &enc_sz, header_buf, &header_sz, + &xhdr, LQEF_NO_HIST_UPD|LQEF_NO_DYN); + nw = lsqpack_enc_end_header(&enc, prefix_buf, sizeof(prefix_buf), &hflags); + assert(2 == nw); + assert(prefix_buf[0] == 0 && prefix_buf[1] == 0); /* Dynamic table not used */ + assert(!(hflags & LSQECH_REF_NEW_ENTRIES)); + + /* Last check that history was not updated: */ + s = lsqpack_enc_start_header(&enc, 4, 0); + assert(0 == s); + enc_sz = sizeof(enc_buf); + header_sz = sizeof(header_buf); + header_set_ptr(&xhdr, &hbuf, ":method", 7, "where is my car?", 16); + enc_st = lsqpack_enc_encode(&enc, + enc_buf, &enc_sz, header_buf, &header_sz, + &xhdr, 0); + assert(enc_sz == 0); + assert(LQES_OK == enc_st); + nw = lsqpack_enc_end_header(&enc, prefix_buf, sizeof(prefix_buf), &hflags); + assert(2 == nw); + assert(prefix_buf[0] == 0 && prefix_buf[1] == 0); /* Dynamic table not used */ + assert(!(hflags & LSQECH_REF_AT_RISK)); + + lsqpack_enc_cleanup(&enc); +} + + +struct hblock_ctx +{ + unsigned n_headers; + int finished; + struct lsxpack_header xhdr; + char buf[0x10000]; +}; + + +static void +unblocked (void *hblock_ctx_p) +{ + assert(0); /* Not expecting this to be called */ +} + + +static struct lsxpack_header * +prepare_decode (void *hblock_ctx_p, struct lsxpack_header *xhdr, size_t space) +{ + struct hblock_ctx *const hctx = hblock_ctx_p; + + if (space > LSXPACK_MAX_STRLEN) + return NULL; + + if (xhdr) + return NULL; + + lsxpack_header_prepare_decode(&hctx->xhdr, hctx->buf, 0, sizeof(hctx->buf)); + return &hctx->xhdr; +} + + +static int +process_header (void *hblock_ctx_p, struct lsxpack_header *xhdr) +{ + struct hblock_ctx *const hctx = hblock_ctx_p; + + if (xhdr) + ++hctx->n_headers; + else + hctx->finished = 1; + return 0; +} + + +static const struct lsqpack_dec_hset_if hset_if = { + .dhi_unblocked = unblocked, + .dhi_prepare_decode = prepare_decode, + .dhi_process_header = process_header, +}; + + +static void +test_discard_header (int err) +{ + struct lsqpack_dec dec; + enum lsqpack_read_header_status rhs; + const unsigned char *buf; + unsigned char header_block[] = "\x00\x00\xC0\x80"; + struct hblock_ctx hctx = { .n_headers = 0, }; + + lsqpack_dec_init(&dec, NULL, 0, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); + + buf = header_block; + rhs = lsqpack_dec_header_in(&dec, &hctx, 0, 10, + &buf, 3 + !!err, NULL, NULL); + if (err) + { + assert(hctx.n_headers == 1); + assert(hctx.finished == 0); + assert(LQRHS_ERROR == rhs); + } + else + { + assert(hctx.n_headers == 1); + assert(hctx.finished == 0); + assert(3 == buf - header_block); + assert(LQRHS_NEED == rhs); + lsqpack_dec_cleanup(&dec); + } +} + + +static void +test_static_bounds_header_block (void) +{ + struct lsqpack_dec dec; + enum lsqpack_read_header_status rhs; + const unsigned char *buf; + /* Static table index 1000 */ + unsigned char header_block[] = "\x00\x00\xFF\xA9\x07"; + struct hblock_ctx hctx = { .n_headers = 0, }; + + lsqpack_dec_init(&dec, stderr, 0, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); + buf = header_block; + rhs = lsqpack_dec_header_in(&dec, &hctx, 0, 10, + &buf, 5, NULL, NULL); + assert(hctx.n_headers == 0); + assert(LQRHS_ERROR == rhs); + lsqpack_dec_cleanup(&dec); +} + + +static void +test_static_bounds_enc_stream (void) +{ + struct lsqpack_dec dec; + int r; + /* Static table index 1000 */ + unsigned char enc_stream[] = "\xFF\xA9\x07\x04" "dude"; + + lsqpack_dec_init(&dec, NULL, 0, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); + r = lsqpack_dec_enc_in(&dec, enc_stream, 8); + assert(r == -1); + lsqpack_dec_cleanup(&dec); +} + + +static void +test_wonr_name_too_large_huffman (void) +{ + struct lsqpack_dec dec; + int r; + /* Partial Insert Without Name Reference with Huffman-encoded name + * string that is larger than 4 x capacity (0x4001) + */ + unsigned char enc_stream[] = "\x7F\xE2\x7F"; + + lsqpack_dec_init(&dec, stderr, 0x1000, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); + r = lsqpack_dec_enc_in(&dec, enc_stream, 3); + assert(r == -1); + lsqpack_dec_cleanup(&dec); +} + + +static void +test_wonr_name_too_large_plain (void) +{ + struct lsqpack_dec dec; + int r; + /* Partial Insert Without Name Reference with plain-encoded name + * string that is larger than capacity (0x1001) + */ + unsigned char enc_stream[] = "\x5F\xE2\x1F"; + + lsqpack_dec_init(&dec, stderr, 0, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); + r = lsqpack_dec_enc_in(&dec, enc_stream, 3); + assert(r == -1); + lsqpack_dec_cleanup(&dec); +} + + +static void +test_wonr_value_too_large_huffman (void) +{ + struct lsqpack_dec dec; + int r; + /* Partial Insert Without Name Reference with Huffman-encoded value + * string that, together with name, is larger than 4 x capacity (0x3FFF) + */ + unsigned char enc_stream[] = "\x42OK\xFF\x80\x7F"; + + lsqpack_dec_init(&dec, stderr, 0, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); + r = lsqpack_dec_enc_in(&dec, enc_stream, 6); + assert(r == -1); + lsqpack_dec_cleanup(&dec); +} + + +static void +test_wonr_value_too_large_plain (void) +{ + struct lsqpack_dec dec; + int r; + /* Partial Insert Without Name Reference with plain-encoded value + * string that, together with name, is larger than capacity (0xFFF) + */ + unsigned char enc_stream[] = "\x42OK\x7F\x80\x1F"; + + lsqpack_dec_init(&dec, stderr, 0x1000, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); + r = lsqpack_dec_enc_in(&dec, enc_stream, 6); + assert(r == -1); + lsqpack_dec_cleanup(&dec); +} + + +static void +test_winr_value_too_large_huffman (void) +{ + struct lsqpack_dec dec; + int r; + /* Partial Insert With Name Reference with Huffman-encoded value + * string that, together with name, is larger than 4 x capacity (0x3FE4) + */ + /* Refer to static entry 79: access-control-refer-headers (length 28) */ + unsigned char enc_stream[] = "\xFF\x10\xFF\xE5\x7E"; + + lsqpack_dec_init(&dec, stderr, 0x1000, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); + r = lsqpack_dec_enc_in(&dec, enc_stream, 5); + assert(r == -1); + lsqpack_dec_cleanup(&dec); +} + + +static void +test_winr_value_too_large_plain (void) +{ + struct lsqpack_dec dec; + int r; + /* Partial Insert With Name Reference with plain-encoded value + * string that, together with name, is larger than capacity (0xFE4) + */ + /* Refer to static entry 79: access-control-refer-headers (length 28) */ + unsigned char enc_stream[] = "\xFF\x10\x7F\xE5\x1E"; + + lsqpack_dec_init(&dec, stderr, 0x1000, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); + r = lsqpack_dec_enc_in(&dec, enc_stream, 5); + assert(r == -1); + lsqpack_dec_cleanup(&dec); +} + + +/* This is an odd case, but if the first call should provide no input at all, + * the decoder should return LQRHS_NEED + */ +static void +test_dec_header_zero_in (void) +{ + struct lsqpack_dec dec; + enum lsqpack_read_header_status rhs; + const unsigned char *buf = (unsigned char *) ""; + struct hblock_ctx hctx = { .n_headers = 0, }; + + lsqpack_dec_init(&dec, stderr, 0x1000, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); + + rhs = lsqpack_dec_header_in(&dec, + &hctx /* hblock */, + 2 /* Stream ID */, + 100 /* How long the thing is */, + &buf, + 0 /* How many bytes are available */, + NULL, 0); + assert(LQRHS_NEED == rhs); + + lsqpack_dec_cleanup(&dec); +} + + +/* Header that's too should should return LQRHS_ERROR */ +static void +test_dec_header_too_short (size_t header_size) +{ + struct lsqpack_dec dec; + enum lsqpack_read_header_status rhs; + const unsigned char *buf = (unsigned char *) ""; + struct hblock_ctx hctx = { .n_headers = 0, }; + + lsqpack_dec_init(&dec, stderr, 0x1000, 0, &hset_if, LSQPACK_DEC_OPT_HTTP1X); + + rhs = lsqpack_dec_header_in(&dec, + &hctx /* hblock */, + 2 /* Stream ID */, + header_size, + &buf, + 0 /* How many bytes are available */, + NULL, 0); + assert(LQRHS_ERROR == rhs); + + lsqpack_dec_cleanup(&dec); +} + + +static void +test_enc_risked_streams_test (const char *test) +{ + struct lsqpack_enc enc; + int s; + size_t sz; + ssize_t ssz; + long arg; + enum lsqpack_enc_status es; + unsigned n_seqnos = 0; + struct { + uint64_t stream_id; + unsigned seqno; + } seqnos[10], *seq_el; + unsigned char buf[0x100]; + unsigned char *end_cmd; + int expect_failure; + struct lsxpack_header xhdr; + struct header_buf hbuf; + + const struct { + const char *name; + unsigned name_len; + const char *value; + unsigned value_len; + } headers[] = { + { "some", 4, "header", 6, }, + { "another", 7, "header", 6, }, + { "and yet another", 15, "header, duh", 11, }, + }; + + fprintf(stderr, "BEGIN TEST %s\n", test); + lsqpack_enc_preinit(&enc, stderr); + hbuf.off = 0; + + while (1) + { + expect_failure = isupper(*test); + switch (*test++) + { + case 'i': + arg = strtol(test, (char**)&test, 10); + sz = sizeof(buf); + s = lsqpack_enc_init(&enc, stderr, 0x1000, 0x1000, + (unsigned) arg, 0, buf, &sz); + assert(s == 0); + break; + case 'r': + arg = strtol(test, (char**)&test, 10); + assert((unsigned) arg == enc.qpe_cur_streams_at_risk); + break; + case 's': /* Start header */ + arg = strtol(test, (char**)&test, 10); + for (seq_el = seqnos; seq_el < seqnos + n_seqnos; ++seq_el) + if (seq_el->stream_id == arg) + break; + assert(seq_el < seqnos + sizeof(seqnos) / sizeof(seqnos[0])); + if (seq_el == seqnos + n_seqnos) + { + ++n_seqnos; + seq_el->stream_id = arg; + seq_el->seqno = 0; + } + s = lsqpack_enc_start_header(&enc, arg, seq_el->seqno++); + assert(s == 0); + break; + case 'c': /* En*C*ode */ + arg = strtol(test, (char**)&test, 10); + sz = sizeof(buf); + /* We ignore the output */ + header_set_ptr(&xhdr, &hbuf, + headers[arg].name, headers[arg].name_len, + headers[arg].value, headers[arg].value_len); + es = lsqpack_enc_encode(&enc, buf, &sz, buf, &sz, &xhdr, 0); + assert(LQES_OK == es); + break; + case 'e': /* End header */ + ssz = lsqpack_enc_end_header(&enc, buf, sizeof(buf), NULL); + assert(ssz > 0); + break; + case 'a': /* ACK header */ + case 'A': + arg = strtol(test, (char**)&test, 10); + buf[0] = 0x80; + end_cmd = lsqpack_enc_int(buf, buf + sizeof(buf), arg, 7); + s = lsqpack_enc_decoder_in(&enc, buf, end_cmd - buf); + if (expect_failure) + assert(s < 0); + else + assert(s == 0); + break; + case 'L': /* Cancel header */ + case 'l': + arg = strtol(test, (char**)&test, 10); + buf[0] = 0x40; + end_cmd = lsqpack_enc_int(buf, buf + sizeof(buf), arg, 6); + s = lsqpack_enc_decoder_in(&enc, buf, end_cmd - buf); + if (expect_failure) + assert(s < 0); + else + assert(s == 0); + break; + case 'N': /* Insert Count Increment */ + case 'n': + arg = strtol(test, (char**)&test, 10); + buf[0] = 0x00; + end_cmd = lsqpack_enc_int(buf, buf + sizeof(buf), arg, 6); + s = lsqpack_enc_decoder_in(&enc, buf, end_cmd - buf); + if (expect_failure) + assert(s < 0); + else + assert(s == 0); + break; + break; + case '\0': + goto end; + default: + assert("unknown action"); + goto end; + } + } + + end: + lsqpack_enc_cleanup(&enc); +} + + +static void +test_enc_risked_streams (void) +{ + const char **test; + const char *tests[] = + { + "i0r0s1c0er0", + "i1r0s1c0er0s2c0er1A1r1a2r0", + "i1r0s1c0er0s2c0er1s2c0c1er1a2r0a2r0", + + "i1r0s1c0c1er0" + "s2c0er1" + "s2c0c1er1" + "a2r1" /* Ack first seqno, # of risked streams still 1 */ + "a2r0", + + "i1r0s1c0c1er0" + "s2c0er1" + "s2c0c1er1" + "l2r0" /* Cancel */ + , + + "i1r0s1c0c1er0" + "s2c0er1" + "s2c0c1er1" + "N3" + "n1r1" + "n1r0" + , + + NULL, + }; + + for (test = tests; *test; ++test) + test_enc_risked_streams_test(*test); +} + + +int +main (void) +{ + unsigned i; + + for (i = 0; i < sizeof(header_block_tests) + / sizeof(header_block_tests[0]); ++i) + { + run_header_test(&header_block_tests[i]); + run_decoded_headers_test(&header_block_tests[i]); + } + + run_header_cancellation_test(&header_block_tests[0]); + test_enc_init(); + test_push_promise(); + test_discard_header(0); + test_discard_header(1); + test_static_bounds_header_block(); + test_static_bounds_enc_stream(); + test_wonr_name_too_large_huffman(); + test_wonr_name_too_large_plain(); + test_wonr_value_too_large_huffman(); + test_wonr_value_too_large_plain(); + test_winr_value_too_large_huffman(); + test_winr_value_too_large_plain(); + test_dec_header_zero_in(); + test_dec_header_too_short(0); + test_dec_header_too_short(1); + test_enc_risked_streams(); + + return 0; +} diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/test_read_enc_stream.c b/external/lsquic/src/liblsquic/ls-qpack/test/test_read_enc_stream.c new file mode 100644 index 0000000..9d2d303 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/test_read_enc_stream.c @@ -0,0 +1,258 @@ +/* + * Read encoder stream + */ + +#include +#include +#include + +#include "lsqpack.h" + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + +/* Dynamic table entry: */ +struct lsqpack_dec_table_entry +{ + unsigned dte_name_len; + unsigned dte_val_len; + unsigned dte_refcnt; + unsigned dte_pad[4]; /* name hash, nameval hash, name idx, flags */ + char dte_buf[0]; /* Contains both name and value */ +}; + +#define DTE_NAME(dte) ((dte)->dte_buf) +#define DTE_VALUE(dte) (&(dte)->dte_buf[(dte)->dte_name_len]) + + +struct test_read_encoder_stream +{ + int lineno; + + /* Input */ + unsigned char input[0x100]; + size_t input_sz; + + /* Output */ + unsigned n_entries; + struct { + const char *name, *value; + } dyn_table[10]; +}; + + +static const struct test_read_encoder_stream tests[] = +{ + + { __LINE__, + "\xc0\x8b\xf1\xe3\xc2\xf5\x15\x31\xa2\x45\xcf\x64\xdf", + 13, + 1, + { + { ":authority", "www.netbsd.org", }, + }, + }, + + { __LINE__, + "\xc0\x00", + 2, + 1, + { + { ":authority", "", }, + }, + }, + + { __LINE__, + "\xc0\x8b\xf1\xe3\xc2\xf5\x15\x31\xa2\x45\xcf\x64\xdf\x00", + 14, + 2, + { + { ":authority", "www.netbsd.org", }, + { ":authority", "www.netbsd.org", }, + }, + }, + + { __LINE__, + "\xc0\x8b\xf1\xe3\xc2\xf5\x15\x31\xa2\x45\xcf\x64\xdf\x00\x20", + 15, + 0, + { + { NULL, NULL, }, + }, + }, + + { __LINE__, + "\xc0\x15" "Respect my authorata!", + 2 + sizeof("Respect my authorata!") - 1, + 1, + { + { ":authority", "Respect my authorata!", }, + }, + }, + + { __LINE__, + "\x63\x92\xd9\x0b\x8c\xe5\x39\x6c\x2a\x86\x42\x94\xfa\x50\x83\xb3" + "\xfc", + 17, + 1, + { + { "dude", "Where is my car?", }, + }, + }, + + { __LINE__, + "\x63\x92\xd9\x0b\x03\x61\x61\x7a", + 8, + 1, + { + { "dude", "aaz", }, + }, + }, + + { __LINE__, + "\x43\x7a\x7a\x7a\x88\xcc\x6a\x0d\x48\xea\xe8\x3b\x0f", + 13, + 1, + { + { "zzz", "Kilimanjaro", }, + }, + }, + + { __LINE__, + "\x43\x7a\x7a\x7a\x03\x61\x61\x7a", + 8, + 1, + { + { "zzz", "aaz", }, + }, + }, + + { __LINE__, + "\x43\x7a\x7a\x7a\x03\x61\x61\x61\x80\x03\x61\x61\x7a", + 13, + 2, + { + { "zzz", "aaa", }, + { "zzz", "aaz", }, + }, + }, + + { __LINE__, + "\x40\x88\xcc\x6a\x0d\x48\xea\xe8\x3b\x0f", + 10, + 1, + { + { "", "Kilimanjaro", }, + }, + }, + + { __LINE__, + "\x43\x7a\x7a\x7a\x00", + 5, + 1, + { + { "zzz", "", }, + }, + }, + + { __LINE__, + "\x40\x00", + 2, + 1, + { + { "", "", }, + }, + }, + +}; + + +struct ringbuf_iter +{ + const struct lsqpack_ringbuf *rbuf; + unsigned next, end; +}; + + +#if LSQPACK_DEVEL_MODE +unsigned +ringbuf_count (const struct lsqpack_ringbuf *rbuf); + +void * +ringbuf_iter_next (struct ringbuf_iter *iter); + +void * +ringbuf_iter_first (struct ringbuf_iter *iter, + const struct lsqpack_ringbuf *rbuf); + +static void +verify_dyn_table (const struct lsqpack_dec *dec, + const struct test_read_encoder_stream *test) +{ + const struct lsqpack_dec_table_entry *entry; + unsigned n; + struct ringbuf_iter riter; + + assert(ringbuf_count(&dec->qpd_dyn_table) == test->n_entries); + + for (n = 0; n < test->n_entries; ++n) + { + if (n == 0) + entry = ringbuf_iter_first(&riter, &dec->qpd_dyn_table); + else + entry = ringbuf_iter_next(&riter); + assert(entry); + assert(entry->dte_name_len == strlen(test->dyn_table[n].name)); + assert(entry->dte_val_len == strlen(test->dyn_table[n].value)); + assert(0 == memcmp(DTE_NAME(entry), test->dyn_table[n].name, entry->dte_name_len)); + assert(0 == memcmp(DTE_VALUE(entry), test->dyn_table[n].value, entry->dte_val_len)); + } +} +#else +static void +verify_dyn_table (const struct lsqpack_dec *dec, + const struct test_read_encoder_stream *test) +{ + fprintf(stderr, "LSQPACK_DEVEL_MODE is not compiled: cannot verify dynamic table\n"); +} +#endif + + +static void +run_test (const struct test_read_encoder_stream *test) +{ + struct lsqpack_dec dec; + size_t chunk_sz, off; + int r; + + for (chunk_sz = 1; chunk_sz <= test->input_sz; ++chunk_sz) + { + lsqpack_dec_init(&dec, NULL, 0x1000, 100, (void *) 1 /* hset */, + LSQPACK_DEC_OPT_HTTP1X); + + off = 0; + do + { + r = lsqpack_dec_enc_in(&dec, test->input + off, + MIN(chunk_sz, test->input_sz - off)); + assert(r == 0); + off += MIN(chunk_sz, test->input_sz - off); + } + while (off < test->input_sz); + + verify_dyn_table(&dec, test); + + lsqpack_dec_cleanup(&dec); + } +} + + +int +main (void) +{ + const struct test_read_encoder_stream *test; + + for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) + run_test(test); + + return 0; +} diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/testdata/encoder_stream b/external/lsquic/src/liblsquic/ls-qpack/test/testdata/encoder_stream new file mode 100644 index 0000000000000000000000000000000000000000..5f305353a9f483dfd51413a624477b0106620842 GIT binary patch literal 20594 zcmZvkZ%k9$yXSW)e>P_;^vwPRqNx0N0r@4ACRh<`Ew#hUiyLWQ%z49qHFSo~bVGNB z=F$uu+g`{|^0T{`+(7sb-UKp?esDg`FSZx1#5ak(W+FN0g@h-lO|x&7tXSK z_som^#CQ7jS?gJA?e%=tv!2za_&vRD>XCe&u^hz2E2@Hv1l5p|75vB5zg_xUO>~&e z|L@Mt@%pVx5bxy;`w&*9{Ts_Tk~nm8nxxWv5x;cn~Px9BHF^kH{v_g z;k$t*^cPP?4ra+OilYnUlfp6dKYCm0)9ZQ`*}O;vTY;|WGA=j?9eY%!KNdwh#C`t^ z$v6)PHFf&dy!@7U;7)w4KLmug|3iuMhpRcs9ba0bAMZkgIPu-akhgIx+-(WYSlD;O zy&pYQM5JuUVLhBRo-KT3WAJ&)u`;AKRT;wW8sxh<*c@9R)PrZ(c!&Nw(9)euOHQIi z^jtJ?(XzYWt0}g*=-=zpUww&wPwI;*x$~nTiru?J^eH2{k!7p`4GH;`Jyw^timQ5B z>O=czkQeH!KhVoFy~Tlu?k_gRax5>2;hpBOKta1@-sZwDTD`NDV_)c{J#K%944Bl0 z-Sw?$da1bpJ8A-Yb~n>AwB+{1FYk+bs)z;h3FLv1Ulutv=ZHF0O2?LLgtqSi2C2*> zxroPs(v5`OdeBDfG=@N7#-elJmOHdaELxt9E?fk1Yi`+|St?YEdMr@a9P0$nw7RiJ;w| z;@Fb341HI4dk-eAG(W8`&>TRHYYeR@B30xHBsy_?#jgVf%Q=JiaN?^wtyOK!kSm^isAV-j&Q(@#w>50T%xIjO0E3#0&PDCE_7<(h zUb#b3Pa0UzKgF9lgM&q?3ZKLu>Kh&N01M`)cq``#eb`DZH%pYEFKe++{{?8cjnhdw z42Sb#?eH0UbXp9JOgld^()+b&^r(}4Tyxw7*z4d%hFDd_G-M0f2n+`w#Pfi#lNahd zp(lmQ7s(BJA~*jYAneKro%HMa_>3h!a_|CE6$7$v&K^EHbjJT}YOsafE3=$H_H5h; z(g$xPmxxtm#9>}kLLNK#sbdLrcIPe8-Nyl!#ej6LXxtgJ;|HGBnhlbH@O z=BVvxigXZ^KjyMS12e_x2x;L-TaQ}L4u^Ic%K>}SyuF3oVr4?+ORdzWDGHZC5Rn0hi(NTkZ_JOXwn5L^41$tuF+_Rc^>HCJg4ie zQFecb(R2AeaF`NF{FmZ;5as!qZ+vS6P$Z&>$800#LfA?5aH%W11&QI-DEn50I> z?*Yw9Gv-|Qxn7wsA4O|NdZi)N4G8NvgT@?*I%(IBDUQ$4%ikeg#vnsQ-%(?}&?{Bx ztT`G3bTZDKd2^<>s<&8?*jB}CrI3#AU~b4}_I@xgy$Ds1Es!T_en$H9mb*-9^X^7T zt9~5n;Z1I&jaqrq6^Kt84%B-WfpC-1a5_VL4b5&$R(Se`TKX5DhqpM7d#ZYMs+uYN zI#$<^Yyxx{%tT>sZm?nyg~Uq2=|7%?biBu!qpsc-f6b(Mcba4%M>rmJO6JH_?95te zv#7Cj4zQ=?>=AXo)GOt2Iq}tpxs%<1kb^@PA#JF^64H@}^3rz8$umgEd5k-1I>jq% zsk%Ty+i(i#I67o3(N=o-qOmw{X`0%d1#}$Sx$xn%cJ$a6=^veFg&XEj%S9~cH#gEu zLt3qWI$U%Qu*k6%L-x5-NZZ|0q)fhqJjtR~Z6JT1K7Ffyu1tI+ps}I&Ny*t7PHOEZ z?+2xgNd{_}gDs~~WZkuu?u#G$F{}#cAjeux>(U47k~+oM&SGaFYdmW8=Fsd13p+)w ztc7I%0GQ)Y%Zbm5U6@WDq3j>)_XV=cCXD|^q}Z9!a6@QCo__2L%>zOaxAupA067YE zo3Vj2zH&g9!|4duDBETY=EhvUh*Y?1T{fNJSIj)|oQl4&csJtRgE@e`vwzMUod_*{ z6DzkIP8!DFn54pixokSi864CYMds(KRKL5V!_*BJEXo*UP;7|Y#pkR`F?#o{5GgL3 zia2}v=#=F!C$Zjh(=a|+0N5+$>`BTjPuURTFP$;(c0>Iu=IkM72X3M+Znk0b4MVSfd5 zTo_?2?0d1(BT;U3_uldejQJ_P990pflxbdHUr@@Vumr zdIspYFyg}7iQ9(gdun;s5_|z{Mwd->*#V4E<88zz@%liEUj`WD;|QTP)~P}=n^c+K z2EgiNlZ>;6caWdu)#~H!9-T5@xSL-#abbiZ9_g3n2hTQ&l-0HZNXJJJee|9FWaFDA zvaS!lffg1YMaYlDjy!gkUT}x{N1=tlMG+TaH#}XdUeBL3AHE~Dp_Rpj5f>r5e-lCA z)`x|0k0yQ}jJO>y-dhE|! z+NFw=vNbdKCGn1}_AkPA>9LGGlxkp)JFF9Ltz({=<`gi3^h4fY1xXD{8zPS+wpblx zaQv5l`KNn!#(MD9SnK&_OYV%Yt-v=zkN@Kjor`cbB2uvqxYs24N()|$;6*BI{cjZG&g=h?6OsgWnM_fcknQ$v>PqNp|d079l%J_6PXS& z`lYs>o3!^udSx_-l|%M2{c{dt;%#~Cv9J0)x!w=R7P#@lXQ`$2wA~P#mds&okS;SJ z4E1Y6b(f@zyh}~Anjm)ss%YQ;s;y|A#6?|h^ zYBjdhr&jB~Lc&ZZ8G5lk-rZYa)CQ8iU&4i06do zDRx#&1uEEd-*=#gEax&&N!&5V1Ch_82XhiTq|3O>;9b-@UgVF&4X2I@Xj!wI$HXIQ z`GR>_9d54f9#RALyno7kCi>Inbe%8uL=i(2_YTr={j&u3hcp94@{qJqVt)qdGW~N( zI*3K_HdcFIM7$y(8Q(pMtq?8eh#E`YTX%(to+~_TF@qZ7OGDz5IeNi*0-(Yb6USOE zJU97~`c)CCq+T~hR)rIH#l*u_?-_SZnb<}+DE5t6=*JZvwp{c{w;|d|2WN;|f!L04 z;;xuD+G2=R_FHq!zOgn?SvWBw@EGYbE5=1USPSjk$Mgr2J;kG^kU@^N&=%|t>FUvp z9JLNeRpo$14!2xHT^`%1U*0Dk4XLRp4emC#l+E;i>S05yfFkX^wfDuTaDd-xh!rSPD;wHCv()&zV$$OR=Z;2aLYyX zy9;82b!&<3#NnP9XmRnph4P1y z$L{J@^Md@iL%1tkG4Z@bxDZsNboCN{YSn)D9q^dvEj>GlBoVB+?2x-eJ6~uS4=!^ z87B4zitX&avC4ANCWM76CJwh;L?4@IVJq_{-ja8XI>_HFZ`B4ui$g8!(QtB|K7eM9 z<1NOdTT6eHht}!%+R>CSDqhLr*3d0aT4s-S8P!x=Aq)^#OgwH`yqD;)`p_#o+h*8= zJ~|$^2GvFsMe5V&ilbtv9GDOuw@f)CQ~0ascSY)zyZRoa<33`1o?7mp9ySz|8G^Z~ zeW8%&Ef=wZM#gYDtq-puo|%V)d?0D@q>XINdHq;pyc3ucp106PBHElC&^0Dx4JF;s zS4VTeSxW|1deO_Nla{G<gv_Hl$+G#8Y406E5&=cMI!>J(+b(&jk zJA`yx=)}v#+apgKQm+bsReTeY;}tqXTXx2B_|^~~op2=k?aR6QfW76+gfMixKJM4QPGgcKvRQUW%E&Lk77H8lE;Lw*z~cpOx`R$umHgg{>#{MbX3u z^WlvCH3lT2uFzT7l6m%WDp-jkp{Be-M!7=sutjK<$yNW)qUaRys&T6cXqkg8bUBFj z1EZErZr6W1-&+m|Gd?ptMV?fjePOM@mgtv*x{S*%!Wc-{^~-bE?4Z;ihJ5C63vb08 zdlzt9P3M3%Pz*He{e?Tdlv})5g+C+{McyeB==J?E(IXXuj*dniT&v?>O;a+q#%Ub4xH|AqsO3Efz*HX72gFI{D znu6x=q@LY3kLA4Bi5YZ~h1LOwS|}}^t5Xz|8P6)eIU`%-C zLO!{LcMMA1>D!jWbGW+n5}@O0i+C_{*o_S*w-u4QJ;E&Z)jw#fHgM$FDyJVRYnmgU z?*Rrm+G1$$deUx1+N~49TfeJ3YdJ}~___6To{*~cx`d}2B;&egIG7u%__2S? zS;Br{e7%~@Y+0VyCyi^dok02~y2%#0%YzoGxF9|kp3GY&x+T-%+mMdiq6t~vLf|;J zpc^kIq`*Su6I%!wMdQOEmoMe?r}}|x?Nyp5Eq(MuZ%boRtBBpDj)D20InrW`7Gvv+T8utiAA9Lf-Wu_uymQA~ zOQCO_Pivv{PHM+iVc30Zs-m7j*~Y7M2DKcFmDQyBN5k&OIyKH!R%pOi{5!s(lqxM;CHxhib-?}(Mgk{KX>bIruTmW#NH zwrRsjOk8O_v0?XsmbuIp(<`FK&>5l-rBmAV!c}<9#N!r$s^ZG=X%P=&@|Jzf4U{@vGjX_u^3H)u)mDc-tVE@l`B1}rYRgotN~_JmHgh;{qP-vJ zAfMX8+XgXf@S^xDt_>7i0CYTV;kHx-D%nK03=;pAaBsbqy-CF9_3IwYUGkp#SPzs9 zUNiBuW&TwZ?J}Rt=?~8n70_ChWoG07!Hll6N0$a z8z|&qYp@sRcYXlk<>}`$q6G@mFQI!!Z7V z)HQ~HvCiU_#8x5tSh%?!V)EF(3GHQZ3vU|`Sspf|f3rt7j+y`+f02j}e=9?$(&{O^ zOusn?=(xNVLu{*#yQq`7!Q#e{^DmH&+osXoQQCoPwkGM*Nua3VTJ|1sP$m!QRFM@o zCfa==q}6L#+QQEfHw{sB>NijF)-W*8S=ut}P8lop!FFrV5poE_2(riZujkBKQnwcG zFicEhUBK2sPh`RfL!V;DorYfv!|ZV<@g4A&hpj=GKURx&t+mLa!MhLXGV{xznw!J| zc?WMJRy;{)dilH-UN%%oYVD}>E%-rF2H4|hiy>Apsjmi0*?V=3HPHNWu;r9oAZ}wb zQ-QO-zz@DE?Yne}{O=mrkg#m;rZ9?3?mSruPeMh2~ z0nK|F30?$^AJ1Bb!;Ry)A#9+QjbH4A{NPy&pCbC}kLP-Cp}RK=aMyT^ze8m7-Vc^v zc z2^BvkT@A5U{v;^;Lj;;jN#u4hq;KCq=*{E1tmY&(501?WUvg^*!+&Jbq9=d2Hv$qiw< z*R!{XsKlz0RO^@CqLGOUKlba{k}bn>OfpH24@Xwn8jTESmqRVa8vS57{a_BZ_MY({ z3B&dEY{i!Ou+z$Z7|@LzqLbP^z#d0hjAh~iA+^aw+G^$` zSW2ge0{!DTi;CuybV}x}-cEelR1WC4D@4Y8+GRScOy04u`vbcF4e0o^7Ikcsu{HCS z;01&Cyztw+o=s~RPNsTqd46sv7!GaML;d41OV757pVPbD#7D!)zHl?Y&fg$1C|fl# zT=Irm51^v*CZK=Wtd?=)V`Iu8US-pDdC%_wLY}kmNxTbPmW5XQd$zr2kdB{_Nz$%A zS>Kx1KW$6_C&cU7J49mJU9CSH*w^{2meZ)A z4>rQKSX_TN2Mr9zSx)lKP>wa2lh#<5yP)~tC<|4sj7DE18C8CpQDgwBR<36;3-2(s z_)<1=6je2h2BDGWG0U?27Q1M9-k8+cpROGO1IXVX>W@bk*ifao|Grd-eFtpnutdt-&h%0==k8tjcSqB+rEH{()JO zq|}#U>PsDaj?zg$m#x?O(pV`^z8v|OTjUEv_IS+FPfSu17sdS}XlR}n1NQj)LpqvU zU`shiP(jbrQDEoDViw`_L~aEVD{M)Za=;S~w9unBMcSn*X&+RZA2w`3Epw!W zuEqT|^K{rA>>8*W34aGHa(OM3MG@`3!{^Xmp1L{Iat{#ltYsdbvqn4g4^>I@Mz9jl z@vNmkou@YE$hwi;7wNCUe9(2iW{bgF4PLBzed_|Ta$f^{b=kyLkB*If^_4iVhENMQ zdHfY3UPg^ii$4x%P<2c44$wb7uSFep8gtm_$~_=_W%F9r19U%Dh`y)Q#@J&o zWG_P=3}N*Ati%)r&8e3oyIp{eOKUk%4Slyce7{cgu<-C7AQ_Lo6_(T7NdJhp)56+h zfR4LAWGu_?hh&&`WOtU>DclEiJZTZPO?8U=b#(FeMOh*|0$r!Gq(%8+cTgrH(eF;# zEMFmm8GjKM4YlApPr*6!#FTXjT7vxbq27Ceu$zBXZgrAce>q@~&uLLhNZ?7VdgARv zmHm(|^NpZdBTu?7Z+zac+kAAv3c1XImecZDRnkFC*b;ZGQDMEsjVxzLH0hVVy(#e* zMd%Aqzi}g*(jvC;Dr52eVkM?ZN`;5q8$4&BqA5@MHoA+7qFR|q|962SH?m1BRM;vT ziJqfQ%g7B1$nf0AULfK*=)Eh()_frE4r+xLWk|=Z8FMtZWR}{TqMo{sa!;W|;|(sY z#63+)j#!5-YfL0m#{8zx2;y-is`;;=(=dO8?`0Pox z059KeWN8a+NY(F+QeVW$CO-nRcO!d^NH~4T&*%b}K$Q|U;Ba-r#Pe29ksB2?#@l;j zqUB2kKo@!5qSjeSW4bR;Fhfn`76Uq-w+4#?)o+J1MBJnuJ-i3#xU`lNCA@8=9i|*{ zi?2fXA>S}@xP>-WMGD1}#onUA-&K1}fIU8~)te)6M81d~)~Bhp5PBd@RMNpR{YOly z$p2s#euy{zNOP4DE2G|7iA|ChSG)r3bNGeQLk+1f^`+}a9b`-1Cgd2G=VFYv{AnAZ zHjK}hY6C*dxRJ##^3~ejaKgEkuL(KV%7KP?{OW1(gsQ|}{3)p-`4#$b_&k^K?8s>w zz1X;Qjy`n=0rrN8&vT)q%Yr|KYKry=^aOPtXqeA)Sx(*zR!ExDYNBQ2A>?pNW|2EB z?Dd&@6{vXlF$A$B91Cg8bXG{`fl}{p={UYY zH|3GK!st6I`vSW!gohh{5SR|rHb_*l$HO85xXQngO>~hffr42Qy*X?f$N`8G>3-qP z=BF=Gzu78HXYQjD7vu+jtw^AI7gSYuu%6ygrdRF(j${GsNcT2JCPf8whgJ>g9|p@w<> zB42tc8d4A3CGDiscM2HfFBYx4T_mL}eQQ`4jdlvt2RE|(Mc$OO8-jBK7^+Nwwy|uk zi`x7^I2&UNq)Uq5UEanwbl;zg+{$+%P9KnM9`mvvK}cL~Hzc3^c1EoMsJcA)u>LXuJ z7#}(9BEJH41WkWH7^>}w8C%v$y2+P7Y--9TyQqcwkQxD&!>|eE8k({UMo0rGn^@~k z>;z(!Kq|F~XE1b-k|#coKJ_R2(3=Rka1fC&6HHK;mFKHN=$QA!m)~X;#_cBlW|6_0 zLyxc-^b-X6^XAie!C)gDXAtkUuph*a?cNs=m+I&lAmkW~F|)J8N0fa^tI3zZCfvj$ z7^4q%SfkCcuYuAFbeI6_@fV9kr5OEKi+$okkIu6ttU_wa0vMiqe2I8OFQNN-(eL*F zdpv;Qx#`B7b<&aM)&mMw%xu%Yp~hIjUpY`ecQ8A23+Q8@yxws7&4LDQeuyNv=X3 zbI8S5#^F<}_6Ya|mL@*q#o%R@*M+}}jy;KwJwR1S6OUX@b8wE(3`u>VFLL0) zO;fgti;!Y6bVr){G^oLW)GX5R1Bia!!S0*uwDr{}7xNvkr_1z@!5t+?u$FX?kLZWO z16Na)xAaT5b|HEr9cK?cQ3>s=rO*#Y^tnshh3#g`xU7f6TiDi&shGul z-+*D^%eY+DXt)04Exp@C1v|w3pfIyhqX%*R5_OEKPkp2}JE83@3tae=;iDoQN2SX8 zgZIK9+mr<^i}x+LfF6IJsu6z_1D^1}h0o&WjUqJIy;5aN4e2r+bRq=K2|XEoo;Q{& zeFn)gfrKHR6N^K&z5-jw<*or1Lbi$vUEF;V8v`K$&o?czFlj2PBM$NuUVo)g->Ukv%1r7dS5{X~H^ zCT^i3K^9suT){jlB~(?vDA?C;zW8x9+yr!y$1S}Vi>(CGPIp@BKQ04wT*eEneUZ0| zKA5$R1tQxl^mS%aUUjJ8B(lS%(AB!pvkzJ1SD_5OH78$$OP|uP5*)6;bLvL~vCF-9s;Be}Qb3eOw`c literal 0 HcmV?d00001 diff --git a/external/lsquic/src/liblsquic/ls-qpack/test/testdata/response b/external/lsquic/src/liblsquic/ls-qpack/test/testdata/response new file mode 100644 index 0000000..8a2b589 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/test/testdata/response @@ -0,0 +1,2 @@ + +Ù¿µ \ No newline at end of file diff --git a/external/lsquic/src/liblsquic/ls-qpack/tools/gen-enums.pl b/external/lsquic/src/liblsquic/ls-qpack/tools/gen-enums.pl new file mode 100755 index 0000000..37b2f9f --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/tools/gen-enums.pl @@ -0,0 +1,123 @@ +#!/usr/bin/perl +# Generate static table enums + +use strict; +use warnings; + +my @table = ( + ":authority", "", + ":path", "/", + "age", "0", + "content-disposition", "", + "content-length", "0", + "cookie", "", + "date", "", + "etag", "", + "if-modified-since", "", + "if-none-match", "", + "last-modified", "", + "link", "", + "location", "", + "referer", "", + "set-cookie", "", + ":method", "CONNECT", + ":method", "DELETE", + ":method", "GET", + ":method", "HEAD", + ":method", "OPTIONS", + ":method", "POST", + ":method", "PUT", + ":scheme", "http", + ":scheme", "https", + ":status", "103", + ":status", "200", + ":status", "304", + ":status", "404", + ":status", "503", + "accept", "*/*", + "accept", "application/dns-message", + "accept-encoding", "gzip, deflate, br", + "accept-ranges", "bytes", + "access-control-allow-headers", "cache-control", + "access-control-allow-headers", "content-type", + "access-control-allow-origin", "*", + "cache-control", "max-age=0", + "cache-control", "max-age=2592000", + "cache-control", "max-age=604800", + "cache-control", "no-cache", + "cache-control", "no-store", + "cache-control", "public, max-age=31536000", + "content-encoding", "br", + "content-encoding", "gzip", + "content-type", "application/dns-message", + "content-type", "application/javascript", + "content-type", "application/json", + "content-type", "application/x-www-form-urlencoded", + "content-type", "image/gif", + "content-type", "image/jpeg", + "content-type", "image/png", + "content-type", "text/css", + "content-type", "text/html; charset=utf-8", + "content-type", "text/plain", + "content-type", "text/plain;charset=utf-8", + "range", "bytes=0-", + "strict-transport-security", "max-age=31536000", + "strict-transport-security", "max-age=31536000; includesubdomains", + "strict-transport-security", "max-age=31536000; includesubdomains; preload", + "vary", "accept-encoding", + "vary", "origin", + "x-content-type-options", "nosniff", + "x-xss-protection", "1; mode=block", + ":status", "100", + ":status", "204", + ":status", "206", + ":status", "302", + ":status", "400", + ":status", "403", + ":status", "421", + ":status", "425", + ":status", "500", + "accept-language", "", + "access-control-allow-credentials", "FALSE", + "access-control-allow-credentials", "TRUE", + "access-control-allow-headers", "*", + "access-control-allow-methods", "get", + "access-control-allow-methods", "get, post, options", + "access-control-allow-methods", "options", + "access-control-expose-headers", "content-length", + "access-control-request-headers", "content-type", + "access-control-request-method", "get", + "access-control-request-method", "post", + "alt-svc", "clear", + "authorization", "", + "content-security-policy", "script-src 'none'; object-src 'none'; base-uri 'none'", + "early-data", "1", + "expect-ct", "", + "forwarded", "", + "if-range", "", + "origin", "", + "purpose", "prefetch", + "server", "", + "timing-allow-origin", "*", + "upgrade-insecure-requests", "1", + "user-agent", "", + "x-forwarded-for", "", + "x-frame-options", "deny", + "x-frame-options", "sameorigin", +); + + +my $idx = 0; +print "enum lsqpack_tnam {\n"; +while (my ($name, $value) = splice(@table, 0, 2)) { + my $enum = "$name-$value"; + $enum =~ tr/a-z/A-Z/; + $enum =~ tr/-/_/; + $enum =~ s~[^A-Z0-9_]~_~g; + $enum =~ s/_+/_/g; + $enum =~ s/_+$//; + $enum =~ s/^_+//; + print " LSQPACK_TNV_$enum = $idx, /* \"$name\" \"$value\" */\n"; + ++$idx; +} +print "};\n\n"; diff --git a/external/lsquic/src/liblsquic/ls-qpack/tools/har2qif.pl b/external/lsquic/src/liblsquic/ls-qpack/tools/har2qif.pl new file mode 100755 index 0000000..233b571 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/tools/har2qif.pl @@ -0,0 +1,139 @@ +#!/usr/bin/env perl +# +# har2qif.pl - Convert HAR file to a QIF file. +# +# QIF stands for "QPACK Interop Format." It is meant to be easy to parse, +# write, and compare. The idea is that the QIF input to an encoder can +# be compared to QIF output produced by the decoder using `diff(1)': +# +# sh$ har2qif -requests my.har > in.qif +# sh$ ./qpack-encoder-A in.qif > binary-format # See wiki +# sh$ ./qpack-decoder-B binary-format > out.qif +# sh$ diff in.qif out.qif && echo "Success!" +# +# The QIF format is plain text. Each header field in on a separate line, +# with name and value separated by the TAB character. An empty line +# signifies the end of a header set. Lines beginning with '#' are ignored. +# +# HTTP/2 header sets are left untouched, while non-HTTP/2 header sets are +# transformed to resemble HTTP/2: +# - Header names are lowercased +# - `Host' header name is removed from requests +# - Requests get :method, :scheme, :authority, and :path pseudo-headers +# - Responses get :status pseudo-headers + +use strict; +use warnings; + +use Getopt::Long; +use JSON qw(decode_json); +use URI; + +my $key = 'request'; +my ($limit, $split_cookie); + +GetOptions( "help" => sub { + print < file.qif + +Options: + -requests Print headers from requests. This is the default. + -responses Print headers from responses. + -split-cookie Split the Cookie: header. + -limit N Limit number of header sets to N. The default + is no limit. + +If file.har is not specified, the HAR is read from stdin +USAGE + + exit; +}, + "requests" => sub { $key = "request", }, + "responses" => sub { $key = "response", }, + "split-cookie" => \$split_cookie, + "limit=i" => \$limit, +); + +my $json = decode_json( do { undef $/; <> }); +my @messages = map $$_{$key}, @{ $json->{log}{entries} }; +if (defined($limit)) +{ + splice @messages, $limit; +} + +my @header_sets = do { + if ($key eq 'request') { + map req_header_set($_), @messages + } else { + map resp_header_set($_), @messages + } +}; + +for (@header_sets) { + no warnings 'uninitialized'; + print map "$$_[0]\t$$_[1]\n", @$_; + print "\n"; +} + +exit; + +# Looking at capitalization of the first header is a more reliable means +# of determining HTTP version than relying on httpVersion field. +# +sub is_http2 { + my $message = shift; + if (defined($$message{headers}[0]) + && defined($$message{headers}[0]{name})) { + return $$message{headers}[0]{name} =~ /^[a-z:]/; + } elsif (defined($$message{httpVersion})) { + return $$message{httpVersion} =~ m~HTTP/2~i; + } else { + return; + } +} + +sub req_header_set { + my $message = shift; + my @set; + if (!is_http2($message)) { + my @headers = map [ lc($$_{name}), $$_{value}, ], + grep $$_{name} ne 'Host', @{ $$message{headers} }; + my $uri = URI->new($$message{url}); + @set = ( + [ ':method', $$message{method}, ], + [ ':scheme', $uri->scheme, ], + [ ':authority', $uri->authority, ], + [ ':path', $uri->path_query, ], + @headers, + ); + } else { + @set = map [ $$_{name}, $$_{value}, ], @{ $$message{headers} }; + } + if ($split_cookie) { + return [ map { + if ('cookie' eq $$_[0]) { + map [ 'cookie', $_, ], split /;\s+/, $$_[1] + } else { + $_ + } + } @set ]; + } else { + return \@set; + } +} + +sub resp_header_set { + my $message = shift; + no warnings 'uninitialized'; + if (!is_http2($message)) { + my @headers = map [ lc($$_{name}), $$_{value}, ], + @{ $$message{headers} }; + my $uri = URI->new($$message{url}); + return [ + [ ':status', $$message{status}, ], + @headers, + ]; + } else { + return [ map [ $$_{name}, $$_{value}, ], @{ $$message{headers} } ] + } +} diff --git a/external/lsquic/src/liblsquic/ls-qpack/tools/randomize-cookies.pl b/external/lsquic/src/liblsquic/ls-qpack/tools/randomize-cookies.pl new file mode 100755 index 0000000..ff86113 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/tools/randomize-cookies.pl @@ -0,0 +1,41 @@ +#!/usr/bin/env perl +# +# Given a QIF file, randomize cookie headers +# +# Usage: randomize-cookies.pl input.qif > output.qif + +@chars = ('0' .. '9', 'a' .. 'z', 'A' .. 'Z', split '', '/+*'); + +sub randomify { + $val = shift; + + if (exists($cached_vals{$val})) { + return $cached_vals{$val}; + } + + @val = split '', $val; + $seen_eq = 0; + for ($i = 0; $i < @val; ++$i) + { + if ($val[$i] ne '=' or $seen_eq++) + { + $rand = $rand[$i] //= int(rand(@chars)); + # Output is a function of both position and value: + $val[$i] = $chars[ ($rand + ord($val[$i])) % @chars ]; + } + } + + return $cached_vals{$val} = join '', @val; +} + +while (<>) { + chomp; + if (m/^cookie\t(.*)/) { + print "cookie\t", randomify($1), "\n"; + } elsif (m/^set-cookie\t(.*)/) { + print "set-cookie\t", join('; ', map randomify($_), + split /;\s+/, $1), "\n"; + } else { + print $_, "\n"; + } +} diff --git a/external/lsquic/src/liblsquic/ls-qpack/tools/sort-qif.pl b/external/lsquic/src/liblsquic/ls-qpack/tools/sort-qif.pl new file mode 100755 index 0000000..53a297e --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/tools/sort-qif.pl @@ -0,0 +1,31 @@ +#!/usr/bin/env perl +# +# sort-qif.pl -- sort QIF file +# +# Sort QIF file. This assumes that the header lists in the QIF file have a +# leading comment that looks like '# stream $number'. +# +# Usage: sort-qif.pl [--strip-comments] [files] [--output FILE] + +use Getopt::Long; + +GetOptions("strip-comments" => \$strip_comments, output => \$output); + +if (defined($output)) { + open STDOUT, ">", $output or die "cannot open $output for writing: $!"; +} + +$/ = "\n\n"; + +@chunks = map $$_[1], + sort { $$a[0] <=> $$b[0] } + map { /^*#\s*stream\s+(\d+)/; [ $1, $_ ] } + <>; + +if ($strip_comments) { + for (@chunks) { + s/^#.*\n//mg; + } +} + +print @chunks; diff --git a/external/lsquic/src/liblsquic/ls-qpack/wincompat/sys/queue.h b/external/lsquic/src/liblsquic/ls-qpack/wincompat/sys/queue.h new file mode 100644 index 0000000..7cdff45 --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-qpack/wincompat/sys/queue.h @@ -0,0 +1,859 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright (c) 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)queue.h 8.5 (Berkeley) 8/20/94 + * $FreeBSD$ + */ + +#ifndef _SYS_QUEUE_H_ +#define _SYS_QUEUE_H_ + + +/* + * This file defines four types of data structures: singly-linked lists, + * singly-linked tail queues, lists and tail queues. + * + * A singly-linked list is headed by a single forward pointer. The elements + * are singly linked for minimum space and pointer manipulation overhead at + * the expense of O(n) removal for arbitrary elements. New elements can be + * added to the list after an existing element or at the head of the list. + * Elements being removed from the head of the list should use the explicit + * macro for this purpose for optimum efficiency. A singly-linked list may + * only be traversed in the forward direction. Singly-linked lists are ideal + * for applications with large datasets and few or no removals or for + * implementing a LIFO queue. + * + * A singly-linked tail queue is headed by a pair of pointers, one to the + * head of the list and the other to the tail of the list. The elements are + * singly linked for minimum space and pointer manipulation overhead at the + * expense of O(n) removal for arbitrary elements. New elements can be added + * to the list after an existing element, at the head of the list, or at the + * end of the list. Elements being removed from the head of the tail queue + * should use the explicit macro for this purpose for optimum efficiency. + * A singly-linked tail queue may only be traversed in the forward direction. + * Singly-linked tail queues are ideal for applications with large datasets + * and few or no removals or for implementing a FIFO queue. + * + * A list is headed by a single forward pointer (or an array of forward + * pointers for a hash table header). The elements are doubly linked + * so that an arbitrary element can be removed without a need to + * traverse the list. New elements can be added to the list before + * or after an existing element or at the head of the list. A list + * may be traversed in either direction. + * + * A tail queue is headed by a pair of pointers, one to the head of the + * list and the other to the tail of the list. The elements are doubly + * linked so that an arbitrary element can be removed without a need to + * traverse the list. New elements can be added to the list before or + * after an existing element, at the head of the list, or at the end of + * the list. A tail queue may be traversed in either direction. + * + * For details on the use of these macros, see the queue(3) manual page. + * + * Below is a summary of implemented functions where: + * + means the macro is available + * - means the macro is not available + * s means the macro is available but is slow (runs in O(n) time) + * + * SLIST LIST STAILQ TAILQ + * _HEAD + + + + + * _CLASS_HEAD + + + + + * _HEAD_INITIALIZER + + + + + * _ENTRY + + + + + * _CLASS_ENTRY + + + + + * _INIT + + + + + * _EMPTY + + + + + * _FIRST + + + + + * _NEXT + + + + + * _PREV - + - + + * _LAST - - + + + * _FOREACH + + + + + * _FOREACH_FROM + + + + + * _FOREACH_SAFE + + + + + * _FOREACH_FROM_SAFE + + + + + * _FOREACH_REVERSE - - - + + * _FOREACH_REVERSE_FROM - - - + + * _FOREACH_REVERSE_SAFE - - - + + * _FOREACH_REVERSE_FROM_SAFE - - - + + * _INSERT_HEAD + + + + + * _INSERT_BEFORE - + - + + * _INSERT_AFTER + + + + + * _INSERT_TAIL - - + + + * _CONCAT s s + + + * _REMOVE_AFTER + - + - + * _REMOVE_HEAD + - + - + * _REMOVE s + s + + * _SWAP + + + + + * + */ +#ifdef QUEUE_MACRO_DEBUG +#warn Use QUEUE_MACRO_DEBUG_TRACE and/or QUEUE_MACRO_DEBUG_TRASH +#define QUEUE_MACRO_DEBUG_TRACE +#define QUEUE_MACRO_DEBUG_TRASH +#endif + +#ifdef QUEUE_MACRO_DEBUG_TRACE +/* Store the last 2 places the queue element or head was altered */ +struct qm_trace { + unsigned long lastline; + unsigned long prevline; + const char *lastfile; + const char *prevfile; +}; + +#define TRACEBUF struct qm_trace trace; +#define TRACEBUF_INITIALIZER { __LINE__, 0, __FILE__, NULL } , + +#define QMD_TRACE_HEAD(head) do { \ + (head)->trace.prevline = (head)->trace.lastline; \ + (head)->trace.prevfile = (head)->trace.lastfile; \ + (head)->trace.lastline = __LINE__; \ + (head)->trace.lastfile = __FILE__; \ +} while (0) + +#define QMD_TRACE_ELEM(elem) do { \ + (elem)->trace.prevline = (elem)->trace.lastline; \ + (elem)->trace.prevfile = (elem)->trace.lastfile; \ + (elem)->trace.lastline = __LINE__; \ + (elem)->trace.lastfile = __FILE__; \ +} while (0) + +#else /* !QUEUE_MACRO_DEBUG_TRACE */ +#define QMD_TRACE_ELEM(elem) +#define QMD_TRACE_HEAD(head) +#define TRACEBUF +#define TRACEBUF_INITIALIZER +#endif /* QUEUE_MACRO_DEBUG_TRACE */ + +#ifdef QUEUE_MACRO_DEBUG_TRASH +#define TRASHIT(x) do {(x) = (void *)-1;} while (0) +#define QMD_IS_TRASHED(x) ((x) == (void *)(intptr_t)-1) +#else /* !QUEUE_MACRO_DEBUG_TRASH */ +#define TRASHIT(x) +#define QMD_IS_TRASHED(x) 0 +#endif /* QUEUE_MACRO_DEBUG_TRASH */ + +#if defined(QUEUE_MACRO_DEBUG_TRACE) || defined(QUEUE_MACRO_DEBUG_TRASH) +#define QMD_SAVELINK(name, link) void **name = (void *)&(link) +#else /* !QUEUE_MACRO_DEBUG_TRACE && !QUEUE_MACRO_DEBUG_TRASH */ +#define QMD_SAVELINK(name, link) +#endif /* QUEUE_MACRO_DEBUG_TRACE || QUEUE_MACRO_DEBUG_TRASH */ + +#ifdef __cplusplus +/* + * In C++ there can be structure lists and class lists: + */ +#define QUEUE_TYPEOF(type) type +#else +#define QUEUE_TYPEOF(type) struct type +#endif + +/* + * Singly-linked List declarations. + */ +#define SLIST_HEAD(name, type) \ +struct name { \ + struct type *slh_first; /* first element */ \ +} + +#define SLIST_CLASS_HEAD(name, type) \ +struct name { \ + class type *slh_first; /* first element */ \ +} + +#define SLIST_HEAD_INITIALIZER(head) \ + { NULL } + +#define SLIST_ENTRY(type) \ +struct { \ + struct type *sle_next; /* next element */ \ +} + +#define SLIST_CLASS_ENTRY(type) \ +struct { \ + class type *sle_next; /* next element */ \ +} + +/* + * Singly-linked List functions. + */ +#if (defined(_KERNEL) && defined(INVARIANTS)) +#define QMD_SLIST_CHECK_PREVPTR(prevp, elm) do { \ + if (*(prevp) != (elm)) \ + panic("Bad prevptr *(%p) == %p != %p", \ + (prevp), *(prevp), (elm)); \ +} while (0) +#else +#define QMD_SLIST_CHECK_PREVPTR(prevp, elm) +#endif + +#define SLIST_CONCAT(head1, head2, type, field) do { \ + QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head1); \ + if (curelm == NULL) { \ + if ((SLIST_FIRST(head1) = SLIST_FIRST(head2)) != NULL) \ + SLIST_INIT(head2); \ + } else if (SLIST_FIRST(head2) != NULL) { \ + while (SLIST_NEXT(curelm, field) != NULL) \ + curelm = SLIST_NEXT(curelm, field); \ + SLIST_NEXT(curelm, field) = SLIST_FIRST(head2); \ + SLIST_INIT(head2); \ + } \ +} while (0) + +#define SLIST_EMPTY(head) ((head)->slh_first == NULL) + +#define SLIST_FIRST(head) ((head)->slh_first) + +#define SLIST_FOREACH(var, head, field) \ + for ((var) = SLIST_FIRST((head)); \ + (var); \ + (var) = SLIST_NEXT((var), field)) + +#define SLIST_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ + (var); \ + (var) = SLIST_NEXT((var), field)) + +#define SLIST_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = SLIST_FIRST((head)); \ + (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define SLIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ + (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \ + for ((varp) = &SLIST_FIRST((head)); \ + ((var) = *(varp)) != NULL; \ + (varp) = &SLIST_NEXT((var), field)) + +#define SLIST_INIT(head) do { \ + SLIST_FIRST((head)) = NULL; \ +} while (0) + +#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ + SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \ + SLIST_NEXT((slistelm), field) = (elm); \ +} while (0) + +#define SLIST_INSERT_HEAD(head, elm, field) do { \ + SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \ + SLIST_FIRST((head)) = (elm); \ +} while (0) + +#define SLIST_NEXT(elm, field) ((elm)->field.sle_next) + +#define SLIST_REMOVE(head, elm, type, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.sle_next); \ + if (SLIST_FIRST((head)) == (elm)) { \ + SLIST_REMOVE_HEAD((head), field); \ + } \ + else { \ + QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head); \ + while (SLIST_NEXT(curelm, field) != (elm)) \ + curelm = SLIST_NEXT(curelm, field); \ + SLIST_REMOVE_AFTER(curelm, field); \ + } \ + TRASHIT(*oldnext); \ +} while (0) + +#define SLIST_REMOVE_AFTER(elm, field) do { \ + SLIST_NEXT(elm, field) = \ + SLIST_NEXT(SLIST_NEXT(elm, field), field); \ +} while (0) + +#define SLIST_REMOVE_HEAD(head, field) do { \ + SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \ +} while (0) + +#define SLIST_REMOVE_PREVPTR(prevp, elm, field) do { \ + QMD_SLIST_CHECK_PREVPTR(prevp, elm); \ + *(prevp) = SLIST_NEXT(elm, field); \ + TRASHIT((elm)->field.sle_next); \ +} while (0) + +#define SLIST_SWAP(head1, head2, type) do { \ + QUEUE_TYPEOF(type) *swap_first = SLIST_FIRST(head1); \ + SLIST_FIRST(head1) = SLIST_FIRST(head2); \ + SLIST_FIRST(head2) = swap_first; \ +} while (0) + +/* + * Singly-linked Tail queue declarations. + */ +#define STAILQ_HEAD(name, type) \ +struct name { \ + struct type *stqh_first;/* first element */ \ + struct type **stqh_last;/* addr of last next element */ \ +} + +#define STAILQ_CLASS_HEAD(name, type) \ +struct name { \ + class type *stqh_first; /* first element */ \ + class type **stqh_last; /* addr of last next element */ \ +} + +#define STAILQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).stqh_first } + +#define STAILQ_ENTRY(type) \ +struct { \ + struct type *stqe_next; /* next element */ \ +} + +#define STAILQ_CLASS_ENTRY(type) \ +struct { \ + class type *stqe_next; /* next element */ \ +} + +/* + * Singly-linked Tail queue functions. + */ +#define STAILQ_CONCAT(head1, head2) do { \ + if (!STAILQ_EMPTY((head2))) { \ + *(head1)->stqh_last = (head2)->stqh_first; \ + (head1)->stqh_last = (head2)->stqh_last; \ + STAILQ_INIT((head2)); \ + } \ +} while (0) + +#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL) + +#define STAILQ_FIRST(head) ((head)->stqh_first) + +#define STAILQ_FOREACH(var, head, field) \ + for((var) = STAILQ_FIRST((head)); \ + (var); \ + (var) = STAILQ_NEXT((var), field)) + +#define STAILQ_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ + (var); \ + (var) = STAILQ_NEXT((var), field)) + +#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = STAILQ_FIRST((head)); \ + (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define STAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ + (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define STAILQ_INIT(head) do { \ + STAILQ_FIRST((head)) = NULL; \ + (head)->stqh_last = &STAILQ_FIRST((head)); \ +} while (0) + +#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \ + if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ + STAILQ_NEXT((tqelm), field) = (elm); \ +} while (0) + +#define STAILQ_INSERT_HEAD(head, elm, field) do { \ + if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ + STAILQ_FIRST((head)) = (elm); \ +} while (0) + +#define STAILQ_INSERT_TAIL(head, elm, field) do { \ + STAILQ_NEXT((elm), field) = NULL; \ + *(head)->stqh_last = (elm); \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ +} while (0) + +#define STAILQ_LAST(head, type, field) \ + (STAILQ_EMPTY((head)) ? NULL : \ + __containerof((head)->stqh_last, \ + QUEUE_TYPEOF(type), field.stqe_next)) + +#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next) + +#define STAILQ_REMOVE(head, elm, type, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.stqe_next); \ + if (STAILQ_FIRST((head)) == (elm)) { \ + STAILQ_REMOVE_HEAD((head), field); \ + } \ + else { \ + QUEUE_TYPEOF(type) *curelm = STAILQ_FIRST(head); \ + while (STAILQ_NEXT(curelm, field) != (elm)) \ + curelm = STAILQ_NEXT(curelm, field); \ + STAILQ_REMOVE_AFTER(head, curelm, field); \ + } \ + TRASHIT(*oldnext); \ +} while (0) + +#define STAILQ_REMOVE_AFTER(head, elm, field) do { \ + if ((STAILQ_NEXT(elm, field) = \ + STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ +} while (0) + +#define STAILQ_REMOVE_HEAD(head, field) do { \ + if ((STAILQ_FIRST((head)) = \ + STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \ + (head)->stqh_last = &STAILQ_FIRST((head)); \ +} while (0) + +#define STAILQ_SWAP(head1, head2, type) do { \ + QUEUE_TYPEOF(type) *swap_first = STAILQ_FIRST(head1); \ + QUEUE_TYPEOF(type) **swap_last = (head1)->stqh_last; \ + STAILQ_FIRST(head1) = STAILQ_FIRST(head2); \ + (head1)->stqh_last = (head2)->stqh_last; \ + STAILQ_FIRST(head2) = swap_first; \ + (head2)->stqh_last = swap_last; \ + if (STAILQ_EMPTY(head1)) \ + (head1)->stqh_last = &STAILQ_FIRST(head1); \ + if (STAILQ_EMPTY(head2)) \ + (head2)->stqh_last = &STAILQ_FIRST(head2); \ +} while (0) + + +/* + * List declarations. + */ +#define LIST_HEAD(name, type) \ +struct name { \ + struct type *lh_first; /* first element */ \ +} + +#define LIST_CLASS_HEAD(name, type) \ +struct name { \ + class type *lh_first; /* first element */ \ +} + +#define LIST_HEAD_INITIALIZER(head) \ + { NULL } + +#define LIST_ENTRY(type) \ +struct { \ + struct type *le_next; /* next element */ \ + struct type **le_prev; /* address of previous next element */ \ +} + +#define LIST_CLASS_ENTRY(type) \ +struct { \ + class type *le_next; /* next element */ \ + class type **le_prev; /* address of previous next element */ \ +} + +/* + * List functions. + */ + +#if (defined(_KERNEL) && defined(INVARIANTS)) +/* + * QMD_LIST_CHECK_HEAD(LIST_HEAD *head, LIST_ENTRY NAME) + * + * If the list is non-empty, validates that the first element of the list + * points back at 'head.' + */ +#define QMD_LIST_CHECK_HEAD(head, field) do { \ + if (LIST_FIRST((head)) != NULL && \ + LIST_FIRST((head))->field.le_prev != \ + &LIST_FIRST((head))) \ + panic("Bad list head %p first->prev != head", (head)); \ +} while (0) + +/* + * QMD_LIST_CHECK_NEXT(TYPE *elm, LIST_ENTRY NAME) + * + * If an element follows 'elm' in the list, validates that the next element + * points back at 'elm.' + */ +#define QMD_LIST_CHECK_NEXT(elm, field) do { \ + if (LIST_NEXT((elm), field) != NULL && \ + LIST_NEXT((elm), field)->field.le_prev != \ + &((elm)->field.le_next)) \ + panic("Bad link elm %p next->prev != elm", (elm)); \ +} while (0) + +/* + * QMD_LIST_CHECK_PREV(TYPE *elm, LIST_ENTRY NAME) + * + * Validates that the previous element (or head of the list) points to 'elm.' + */ +#define QMD_LIST_CHECK_PREV(elm, field) do { \ + if (*(elm)->field.le_prev != (elm)) \ + panic("Bad link elm %p prev->next != elm", (elm)); \ +} while (0) +#else +#define QMD_LIST_CHECK_HEAD(head, field) +#define QMD_LIST_CHECK_NEXT(elm, field) +#define QMD_LIST_CHECK_PREV(elm, field) +#endif /* (_KERNEL && INVARIANTS) */ + +#define LIST_CONCAT(head1, head2, type, field) do { \ + QUEUE_TYPEOF(type) *curelm = LIST_FIRST(head1); \ + if (curelm == NULL) { \ + if ((LIST_FIRST(head1) = LIST_FIRST(head2)) != NULL) { \ + LIST_FIRST(head2)->field.le_prev = \ + &LIST_FIRST((head1)); \ + LIST_INIT(head2); \ + } \ + } else if (LIST_FIRST(head2) != NULL) { \ + while (LIST_NEXT(curelm, field) != NULL) \ + curelm = LIST_NEXT(curelm, field); \ + LIST_NEXT(curelm, field) = LIST_FIRST(head2); \ + LIST_FIRST(head2)->field.le_prev = &LIST_NEXT(curelm, field); \ + LIST_INIT(head2); \ + } \ +} while (0) + +#define LIST_EMPTY(head) ((head)->lh_first == NULL) + +#define LIST_FIRST(head) ((head)->lh_first) + +#define LIST_FOREACH(var, head, field) \ + for ((var) = LIST_FIRST((head)); \ + (var); \ + (var) = LIST_NEXT((var), field)) + +#define LIST_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ + (var); \ + (var) = LIST_NEXT((var), field)) + +#define LIST_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = LIST_FIRST((head)); \ + (var) && ((tvar) = LIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define LIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ + (var) && ((tvar) = LIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define LIST_INIT(head) do { \ + LIST_FIRST((head)) = NULL; \ +} while (0) + +#define LIST_INSERT_AFTER(listelm, elm, field) do { \ + QMD_LIST_CHECK_NEXT(listelm, field); \ + if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\ + LIST_NEXT((listelm), field)->field.le_prev = \ + &LIST_NEXT((elm), field); \ + LIST_NEXT((listelm), field) = (elm); \ + (elm)->field.le_prev = &LIST_NEXT((listelm), field); \ +} while (0) + +#define LIST_INSERT_BEFORE(listelm, elm, field) do { \ + QMD_LIST_CHECK_PREV(listelm, field); \ + (elm)->field.le_prev = (listelm)->field.le_prev; \ + LIST_NEXT((elm), field) = (listelm); \ + *(listelm)->field.le_prev = (elm); \ + (listelm)->field.le_prev = &LIST_NEXT((elm), field); \ +} while (0) + +#define LIST_INSERT_HEAD(head, elm, field) do { \ + QMD_LIST_CHECK_HEAD((head), field); \ + if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \ + LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\ + LIST_FIRST((head)) = (elm); \ + (elm)->field.le_prev = &LIST_FIRST((head)); \ +} while (0) + +#define LIST_NEXT(elm, field) ((elm)->field.le_next) + +#define LIST_PREV(elm, head, type, field) \ + ((elm)->field.le_prev == &LIST_FIRST((head)) ? NULL : \ + __containerof((elm)->field.le_prev, \ + QUEUE_TYPEOF(type), field.le_next)) + +#define LIST_REMOVE(elm, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.le_next); \ + QMD_SAVELINK(oldprev, (elm)->field.le_prev); \ + QMD_LIST_CHECK_NEXT(elm, field); \ + QMD_LIST_CHECK_PREV(elm, field); \ + if (LIST_NEXT((elm), field) != NULL) \ + LIST_NEXT((elm), field)->field.le_prev = \ + (elm)->field.le_prev; \ + *(elm)->field.le_prev = LIST_NEXT((elm), field); \ + TRASHIT(*oldnext); \ + TRASHIT(*oldprev); \ +} while (0) + +#define LIST_SWAP(head1, head2, type, field) do { \ + QUEUE_TYPEOF(type) *swap_tmp = LIST_FIRST(head1); \ + LIST_FIRST((head1)) = LIST_FIRST((head2)); \ + LIST_FIRST((head2)) = swap_tmp; \ + if ((swap_tmp = LIST_FIRST((head1))) != NULL) \ + swap_tmp->field.le_prev = &LIST_FIRST((head1)); \ + if ((swap_tmp = LIST_FIRST((head2))) != NULL) \ + swap_tmp->field.le_prev = &LIST_FIRST((head2)); \ +} while (0) + +/* + * Tail queue declarations. + */ +#define TAILQ_HEAD(name, type) \ +struct name { \ + struct type *tqh_first; /* first element */ \ + struct type **tqh_last; /* addr of last next element */ \ + TRACEBUF \ +} + +#define TAILQ_CLASS_HEAD(name, type) \ +struct name { \ + class type *tqh_first; /* first element */ \ + class type **tqh_last; /* addr of last next element */ \ + TRACEBUF \ +} + +#define TAILQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).tqh_first, TRACEBUF_INITIALIZER } + +#define TAILQ_ENTRY(type) \ +struct { \ + struct type *tqe_next; /* next element */ \ + struct type **tqe_prev; /* address of previous next element */ \ + TRACEBUF \ +} + +#define TAILQ_CLASS_ENTRY(type) \ +struct { \ + class type *tqe_next; /* next element */ \ + class type **tqe_prev; /* address of previous next element */ \ + TRACEBUF \ +} + +/* + * Tail queue functions. + */ +#if (defined(_KERNEL) && defined(INVARIANTS)) +/* + * QMD_TAILQ_CHECK_HEAD(TAILQ_HEAD *head, TAILQ_ENTRY NAME) + * + * If the tailq is non-empty, validates that the first element of the tailq + * points back at 'head.' + */ +#define QMD_TAILQ_CHECK_HEAD(head, field) do { \ + if (!TAILQ_EMPTY(head) && \ + TAILQ_FIRST((head))->field.tqe_prev != \ + &TAILQ_FIRST((head))) \ + panic("Bad tailq head %p first->prev != head", (head)); \ +} while (0) + +/* + * QMD_TAILQ_CHECK_TAIL(TAILQ_HEAD *head, TAILQ_ENTRY NAME) + * + * Validates that the tail of the tailq is a pointer to pointer to NULL. + */ +#define QMD_TAILQ_CHECK_TAIL(head, field) do { \ + if (*(head)->tqh_last != NULL) \ + panic("Bad tailq NEXT(%p->tqh_last) != NULL", (head)); \ +} while (0) + +/* + * QMD_TAILQ_CHECK_NEXT(TYPE *elm, TAILQ_ENTRY NAME) + * + * If an element follows 'elm' in the tailq, validates that the next element + * points back at 'elm.' + */ +#define QMD_TAILQ_CHECK_NEXT(elm, field) do { \ + if (TAILQ_NEXT((elm), field) != NULL && \ + TAILQ_NEXT((elm), field)->field.tqe_prev != \ + &((elm)->field.tqe_next)) \ + panic("Bad link elm %p next->prev != elm", (elm)); \ +} while (0) + +/* + * QMD_TAILQ_CHECK_PREV(TYPE *elm, TAILQ_ENTRY NAME) + * + * Validates that the previous element (or head of the tailq) points to 'elm.' + */ +#define QMD_TAILQ_CHECK_PREV(elm, field) do { \ + if (*(elm)->field.tqe_prev != (elm)) \ + panic("Bad link elm %p prev->next != elm", (elm)); \ +} while (0) +#else +#define QMD_TAILQ_CHECK_HEAD(head, field) +#define QMD_TAILQ_CHECK_TAIL(head, headname) +#define QMD_TAILQ_CHECK_NEXT(elm, field) +#define QMD_TAILQ_CHECK_PREV(elm, field) +#endif /* (_KERNEL && INVARIANTS) */ + +#define TAILQ_CONCAT(head1, head2, field) do { \ + if (!TAILQ_EMPTY(head2)) { \ + *(head1)->tqh_last = (head2)->tqh_first; \ + (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \ + (head1)->tqh_last = (head2)->tqh_last; \ + TAILQ_INIT((head2)); \ + QMD_TRACE_HEAD(head1); \ + QMD_TRACE_HEAD(head2); \ + } \ +} while (0) + +#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL) + +#define TAILQ_FIRST(head) ((head)->tqh_first) + +#define TAILQ_FOREACH(var, head, field) \ + for ((var) = TAILQ_FIRST((head)); \ + (var); \ + (var) = TAILQ_NEXT((var), field)) + +#define TAILQ_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ + (var); \ + (var) = TAILQ_NEXT((var), field)) + +#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = TAILQ_FIRST((head)); \ + (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define TAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ + (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ + for ((var) = TAILQ_LAST((head), headname); \ + (var); \ + (var) = TAILQ_PREV((var), headname, field)) + +#define TAILQ_FOREACH_REVERSE_FROM(var, head, headname, field) \ + for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ + (var); \ + (var) = TAILQ_PREV((var), headname, field)) + +#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \ + for ((var) = TAILQ_LAST((head), headname); \ + (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ + (var) = (tvar)) + +#define TAILQ_FOREACH_REVERSE_FROM_SAFE(var, head, headname, field, tvar) \ + for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ + (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ + (var) = (tvar)) + +#define TAILQ_INIT(head) do { \ + TAILQ_FIRST((head)) = NULL; \ + (head)->tqh_last = &TAILQ_FIRST((head)); \ + QMD_TRACE_HEAD(head); \ +} while (0) + +#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ + QMD_TAILQ_CHECK_NEXT(listelm, field); \ + if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\ + TAILQ_NEXT((elm), field)->field.tqe_prev = \ + &TAILQ_NEXT((elm), field); \ + else { \ + (head)->tqh_last = &TAILQ_NEXT((elm), field); \ + QMD_TRACE_HEAD(head); \ + } \ + TAILQ_NEXT((listelm), field) = (elm); \ + (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \ + QMD_TRACE_ELEM(&(elm)->field); \ + QMD_TRACE_ELEM(&(listelm)->field); \ +} while (0) + +#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ + QMD_TAILQ_CHECK_PREV(listelm, field); \ + (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ + TAILQ_NEXT((elm), field) = (listelm); \ + *(listelm)->field.tqe_prev = (elm); \ + (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \ + QMD_TRACE_ELEM(&(elm)->field); \ + QMD_TRACE_ELEM(&(listelm)->field); \ +} while (0) + +#define TAILQ_INSERT_HEAD(head, elm, field) do { \ + QMD_TAILQ_CHECK_HEAD(head, field); \ + if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \ + TAILQ_FIRST((head))->field.tqe_prev = \ + &TAILQ_NEXT((elm), field); \ + else \ + (head)->tqh_last = &TAILQ_NEXT((elm), field); \ + TAILQ_FIRST((head)) = (elm); \ + (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \ + QMD_TRACE_HEAD(head); \ + QMD_TRACE_ELEM(&(elm)->field); \ +} while (0) + +#define TAILQ_INSERT_TAIL(head, elm, field) do { \ + QMD_TAILQ_CHECK_TAIL(head, field); \ + TAILQ_NEXT((elm), field) = NULL; \ + (elm)->field.tqe_prev = (head)->tqh_last; \ + *(head)->tqh_last = (elm); \ + (head)->tqh_last = &TAILQ_NEXT((elm), field); \ + QMD_TRACE_HEAD(head); \ + QMD_TRACE_ELEM(&(elm)->field); \ +} while (0) + +#define TAILQ_LAST(head, headname) \ + (*(((struct headname *)((head)->tqh_last))->tqh_last)) + +#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) + +#define TAILQ_PREV(elm, headname, field) \ + (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) + +#define TAILQ_REMOVE(head, elm, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.tqe_next); \ + QMD_SAVELINK(oldprev, (elm)->field.tqe_prev); \ + QMD_TAILQ_CHECK_NEXT(elm, field); \ + QMD_TAILQ_CHECK_PREV(elm, field); \ + if ((TAILQ_NEXT((elm), field)) != NULL) \ + TAILQ_NEXT((elm), field)->field.tqe_prev = \ + (elm)->field.tqe_prev; \ + else { \ + (head)->tqh_last = (elm)->field.tqe_prev; \ + QMD_TRACE_HEAD(head); \ + } \ + *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \ + TRASHIT(*oldnext); \ + TRASHIT(*oldprev); \ + QMD_TRACE_ELEM(&(elm)->field); \ +} while (0) + +#define TAILQ_SWAP(head1, head2, type, field) do { \ + QUEUE_TYPEOF(type) *swap_first = (head1)->tqh_first; \ + QUEUE_TYPEOF(type) **swap_last = (head1)->tqh_last; \ + (head1)->tqh_first = (head2)->tqh_first; \ + (head1)->tqh_last = (head2)->tqh_last; \ + (head2)->tqh_first = swap_first; \ + (head2)->tqh_last = swap_last; \ + if ((swap_first = (head1)->tqh_first) != NULL) \ + swap_first->field.tqe_prev = &(head1)->tqh_first; \ + else \ + (head1)->tqh_last = &(head1)->tqh_first; \ + if ((swap_first = (head2)->tqh_first) != NULL) \ + swap_first->field.tqe_prev = &(head2)->tqh_first; \ + else \ + (head2)->tqh_last = &(head2)->tqh_first; \ +} while (0) + +#endif /* !_SYS_QUEUE_H_ */ diff --git a/external/lsquic/src/liblsquic/ls-sfparser.c b/external/lsquic/src/liblsquic/ls-sfparser.c new file mode 100644 index 0000000..281670f --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-sfparser.c @@ -0,0 +1,3173 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#line 2 "ls-sfparser.c" +#line 2 "ls-sfparser.l" +/* +MIT License + +Copyright (c) 2020 LiteSpeed Technologies Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + + + +#line 30 "ls-sfparser.c" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! C99 */ + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* An opaque pointer. */ +#ifndef YY_TYPEDEF_YY_SCANNER_T +#define YY_TYPEDEF_YY_SCANNER_T +typedef void* yyscan_t; +#endif + +/* For convenience, these vars (plus the bison vars far below) + are macros in the reentrant scanner. */ +#define yyin yyg->yyin_r +#define yyout yyg->yyout_r +#define yyextra yyg->yyextra_r +#define yyleng yyg->yyleng_r +#define yytext yyg->yytext_r +#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) +#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) +#define yy_flex_debug yyg->yy_flex_debug_r + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN yyg->yy_start = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START ((yyg->yy_start - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE ls_sfp_restart(yyin ,yyscanner ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else +#define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = yyg->yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ + yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via ls_sfp_restart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ + ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] + +void ls_sfp_restart (FILE *input_file ,yyscan_t yyscanner ); +void ls_sfp__switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); +YY_BUFFER_STATE ls_sfp__create_buffer (FILE *file,int size ,yyscan_t yyscanner ); +void ls_sfp__delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); +void ls_sfp__flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); +void ls_sfp_push_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); +void ls_sfp_pop_buffer_state (yyscan_t yyscanner ); + +static int ls_sfp_ensure_buffer_stack (yyscan_t yyscanner ); +static void ls_sfp__load_buffer_state (yyscan_t yyscanner ); +static void ls_sfp__init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); + +#define YY_FLUSH_BUFFER ls_sfp__flush_buffer(YY_CURRENT_BUFFER ,yyscanner) + +YY_BUFFER_STATE ls_sfp__scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); +YY_BUFFER_STATE ls_sfp__scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); +YY_BUFFER_STATE ls_sfp__scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); + +void *ls_sfp_alloc (yy_size_t ,yyscan_t yyscanner ); +void *ls_sfp_realloc (void *,yy_size_t ,yyscan_t yyscanner ); +void ls_sfp_free (void * ,yyscan_t yyscanner ); + +#define yy_new_buffer ls_sfp__create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + ls_sfp_ensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + ls_sfp__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + ls_sfp_ensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + ls_sfp__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define ls_sfp_wrap(n) 1 +#define YY_SKIP_YYWRAP + +typedef unsigned char YY_CHAR; + +typedef int yy_state_type; + +#define yytext_ptr yytext_r + +static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); +static int yy_get_next_buffer (yyscan_t yyscanner ); +static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + yyg->yytext_ptr = yy_bp; \ + yyleng = (size_t) (yy_cp - yy_bp); \ + yyg->yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + yyg->yy_c_buf_p = yy_cp; + +#define YY_NUM_RULES 93 +#define YY_END_OF_BUFFER 94 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[365] = + { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 94, 93, 1, 2, 93, 93, 8, 7, + 6, 93, 33, 93, 30, 93, 93, 3, 4, 37, + 39, 38, 45, 43, 44, 42, 40, 41, 93, 49, + 93, 46, 93, 93, 64, 66, 65, 54, 52, 53, + 55, 93, 56, 60, 93, 57, 93, 93, 67, 93, + + 75, 93, 72, 93, 93, 69, 71, 70, 68, 78, + 93, 82, 93, 79, 93, 93, 85, 86, 90, 91, + 89, 87, 88, 93, 9, 13, 93, 10, 93, 93, + 18, 17, 16, 19, 21, 23, 22, 20, 93, 27, + 93, 24, 93, 93, 92, 1, 2, 0, 8, 0, + 7, 8, 5, 0, 32, 0, 33, 30, 0, 30, + 0, 34, 35, 3, 4, 37, 36, 38, 45, 40, + 41, 0, 48, 0, 49, 46, 0, 46, 0, 50, + 51, 64, 63, 65, 52, 55, 0, 59, 0, 56, + 60, 57, 0, 57, 0, 61, 62, 67, 0, 74, + + 0, 75, 72, 0, 72, 0, 76, 77, 69, 78, + 0, 81, 0, 82, 79, 0, 79, 0, 83, 84, + 85, 86, 90, 87, 88, 0, 12, 0, 13, 10, + 0, 10, 0, 14, 15, 18, 16, 16, 19, 21, + 0, 26, 0, 27, 24, 0, 24, 0, 28, 29, + 5, 31, 30, 47, 46, 58, 57, 73, 72, 80, + 79, 11, 10, 25, 24, 31, 30, 47, 46, 58, + 57, 73, 72, 80, 79, 11, 10, 25, 24, 31, + 30, 47, 46, 58, 57, 73, 72, 80, 79, 11, + 10, 25, 24, 30, 46, 57, 72, 79, 10, 24, + + 30, 46, 57, 72, 79, 10, 24, 30, 46, 57, + 72, 79, 10, 24, 30, 46, 57, 72, 79, 10, + 24, 30, 46, 57, 72, 79, 10, 24, 30, 46, + 57, 72, 79, 10, 24, 30, 46, 57, 72, 79, + 10, 24, 30, 46, 57, 72, 79, 10, 24, 30, + 46, 57, 72, 79, 10, 24, 30, 46, 57, 72, + 79, 10, 24, 0 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 4, 5, 6, 7, 7, 7, 7, 7, 8, + 9, 10, 11, 12, 13, 14, 11, 15, 15, 16, + 16, 16, 16, 16, 16, 16, 16, 17, 18, 19, + 20, 19, 21, 19, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 19, 23, 24, 25, 26, 25, 27, 27, 27, 27, + + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 24, 25, 24, 25, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yyconst flex_int32_t yy_meta[28] = + { 0, + 1, 1, 1, 2, 3, 2, 3, 2, 2, 4, + 5, 2, 4, 4, 6, 6, 5, 2, 2, 7, + 2, 5, 2, 2, 3, 4, 6 + } ; + +static yyconst flex_int16_t yy_base[395] = + { 0, + 0, 0, 0, 1, 27, 46, 61, 0, 5, 10, + 4, 22, 26, 31, 9, 52, 83, 0, 51, 68, + 99, 104, 115, 0, 15, 58, 137, 0, 137, 156, + 173, 0, 55, 57, 77, 109, 108, 129, 0, 0, + 195, 0, 157, 163, 82, 124, 178, 205, 220, 0, + 803, 802, 804, 807, 799, 0, 136, 195, 19, 807, + 794, 139, 0, 2, 155, 784, 785, 50, 0, 216, + 807, 795, 794, 807, 807, 807, 793, 0, 140, 0, + 75, 177, 779, 780, 225, 807, 790, 807, 118, 807, + 122, 179, 789, 0, 99, 224, 775, 776, 0, 209, + + 0, 229, 234, 773, 774, 784, 807, 807, 807, 783, + 240, 0, 236, 239, 769, 770, 780, 779, 778, 807, + 807, 777, 0, 250, 807, 0, 242, 245, 763, 764, + 258, 807, 760, 0, 744, 807, 807, 807, 258, 0, + 250, 253, 702, 675, 807, 683, 0, 268, 176, 273, + 807, 217, 667, 265, 807, 272, 0, 268, 271, 278, + 365, 807, 807, 294, 0, 295, 807, 374, 307, 275, + 0, 283, 807, 284, 0, 286, 288, 294, 257, 807, + 807, 310, 807, 227, 313, 314, 299, 807, 313, 224, + 0, 309, 305, 315, 207, 807, 807, 0, 320, 807, + + 321, 0, 318, 322, 325, 189, 807, 807, 199, 180, + 329, 807, 336, 0, 331, 333, 339, 156, 807, 807, + 161, 140, 90, 83, 0, 344, 807, 345, 0, 342, + 345, 348, 67, 807, 807, 361, 61, 56, 0, 53, + 360, 807, 363, 0, 356, 358, 361, 24, 807, 807, + 29, 365, 373, 369, 376, 378, 381, 383, 386, 388, + 391, 393, 396, 398, 401, 403, 406, 408, 411, 413, + 416, 418, 421, 423, 426, 428, 431, 433, 436, 807, + 439, 807, 442, 807, 445, 807, 448, 807, 451, 807, + 454, 807, 457, 460, 463, 466, 469, 472, 475, 478, + + 481, 484, 487, 490, 493, 496, 499, 502, 505, 508, + 511, 514, 517, 520, 523, 526, 529, 532, 535, 538, + 541, 544, 547, 550, 553, 556, 559, 562, 565, 568, + 571, 574, 577, 580, 583, 586, 589, 592, 595, 598, + 601, 604, 606, 608, 610, 612, 614, 616, 618, 620, + 622, 624, 626, 628, 630, 632, 807, 807, 807, 807, + 807, 807, 807, 807, 648, 655, 662, 666, 671, 676, + 678, 682, 685, 690, 695, 697, 703, 708, 710, 714, + 719, 724, 726, 732, 737, 739, 743, 748, 753, 755, + 759, 764, 769, 771 + + } ; + +static yyconst flex_int16_t yy_def[395] = + { 0, + 365, 365, 365, 365, 365, 365, 365, 7, 365, 365, + 365, 365, 365, 365, 365, 365, 365, 17, 365, 365, + 366, 366, 365, 23, 365, 365, 365, 27, 365, 365, + 365, 31, 365, 365, 365, 365, 365, 365, 365, 365, + 365, 41, 365, 365, 365, 365, 365, 365, 365, 49, + 367, 367, 364, 364, 364, 368, 364, 364, 364, 364, + 364, 369, 370, 364, 364, 371, 364, 364, 372, 364, + 364, 364, 364, 364, 364, 364, 364, 373, 374, 375, + 364, 364, 376, 364, 364, 364, 364, 364, 364, 364, + 364, 377, 364, 378, 364, 364, 379, 364, 380, 381, + + 382, 364, 364, 383, 364, 364, 364, 364, 364, 364, + 384, 385, 364, 364, 386, 364, 364, 364, 364, 364, + 364, 364, 387, 388, 364, 389, 364, 364, 390, 364, + 364, 364, 364, 391, 364, 364, 364, 364, 392, 393, + 364, 364, 394, 364, 364, 364, 368, 364, 364, 364, + 364, 364, 364, 369, 364, 364, 370, 364, 364, 364, + 371, 364, 364, 364, 372, 364, 364, 364, 364, 364, + 373, 374, 364, 364, 375, 364, 364, 364, 376, 364, + 364, 364, 364, 364, 364, 364, 377, 364, 364, 364, + 378, 364, 364, 364, 379, 364, 364, 380, 381, 364, + + 364, 382, 364, 364, 364, 383, 364, 364, 364, 364, + 384, 364, 364, 385, 364, 364, 364, 386, 364, 364, + 364, 364, 364, 364, 387, 388, 364, 364, 389, 364, + 364, 364, 390, 364, 364, 364, 364, 364, 391, 364, + 392, 364, 364, 393, 364, 364, 364, 394, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 0, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364 + + } ; + +static yyconst flex_int16_t yy_nxt[835] = + { 0, + 364, 364, 364, 55, 55, 70, 68, 70, 68, 56, + 56, 68, 77, 68, 69, 71, 158, 158, 78, 69, + 152, 72, 152, 70, 99, 70, 56, 56, 57, 73, + 58, 69, 251, 71, 73, 78, 69, 74, 59, 72, + 249, 99, 74, 75, 60, 76, 61, 57, 75, 58, + 76, 164, 85, 164, 85, 77, 240, 59, 117, 238, + 117, 78, 86, 60, 238, 61, 62, 99, 87, 85, + 63, 85, 118, 64, 118, 65, 65, 66, 78, 86, + 119, 67, 63, 234, 99, 87, 224, 63, 79, 176, + 176, 134, 80, 223, 120, 81, 121, 82, 82, 83, + + 89, 54, 89, 84, 80, 89, 54, 89, 134, 80, + 90, 122, 119, 192, 192, 90, 91, 123, 91, 185, + 92, 185, 93, 186, 94, 186, 120, 95, 121, 96, + 96, 97, 122, 134, 123, 98, 94, 148, 123, 148, + 106, 94, 100, 222, 155, 173, 101, 149, 107, 102, + 134, 103, 103, 104, 108, 123, 109, 105, 101, 106, + 131, 156, 174, 101, 221, 132, 131, 107, 159, 160, + 160, 132, 219, 108, 133, 109, 110, 152, 111, 152, + 133, 135, 112, 210, 188, 113, 136, 114, 114, 115, + 177, 178, 178, 116, 112, 137, 148, 138, 150, 112, + + 124, 189, 209, 125, 126, 207, 149, 127, 135, 128, + 128, 129, 151, 136, 200, 130, 126, 166, 152, 166, + 152, 126, 137, 196, 138, 139, 182, 190, 182, 140, + 184, 201, 141, 167, 142, 142, 143, 193, 194, 194, + 144, 140, 183, 203, 203, 212, 140, 204, 205, 205, + 215, 215, 216, 217, 217, 227, 230, 230, 231, 232, + 232, 236, 213, 242, 245, 245, 246, 247, 247, 148, + 155, 148, 228, 180, 148, 237, 150, 154, 170, 149, + 243, 159, 160, 160, 149, 252, 252, 156, 173, 172, + 151, 159, 253, 253, 154, 164, 166, 164, 166, 177, + + 178, 178, 254, 254, 188, 174, 172, 177, 255, 255, + 169, 182, 167, 182, 185, 186, 185, 186, 187, 256, + 256, 189, 193, 194, 194, 200, 199, 183, 193, 257, + 257, 204, 205, 205, 212, 187, 258, 258, 204, 259, + 259, 211, 201, 199, 216, 217, 217, 260, 260, 227, + 226, 213, 216, 261, 261, 231, 232, 232, 211, 262, + 262, 231, 263, 263, 236, 242, 228, 226, 241, 246, + 247, 247, 264, 264, 246, 265, 265, 168, 237, 266, + 266, 162, 243, 268, 268, 241, 159, 267, 267, 177, + 269, 269, 270, 270, 193, 271, 271, 272, 272, 204, + + 273, 273, 274, 274, 216, 275, 275, 276, 276, 231, + 277, 277, 278, 278, 246, 279, 279, 280, 280, 159, + 281, 281, 282, 282, 177, 283, 283, 284, 284, 193, + 285, 285, 286, 286, 204, 287, 287, 288, 288, 216, + 289, 289, 290, 290, 231, 291, 291, 292, 292, 246, + 293, 293, 159, 294, 294, 177, 295, 295, 193, 296, + 296, 204, 297, 297, 216, 298, 298, 231, 299, 299, + 246, 300, 300, 159, 301, 301, 177, 302, 302, 193, + 303, 303, 204, 304, 304, 216, 305, 305, 231, 306, + 306, 246, 307, 307, 159, 308, 308, 177, 309, 309, + + 193, 310, 310, 204, 311, 311, 216, 312, 312, 231, + 313, 313, 246, 314, 314, 159, 315, 315, 177, 316, + 316, 193, 317, 317, 204, 318, 318, 216, 319, 319, + 231, 320, 320, 246, 321, 321, 159, 322, 322, 177, + 323, 323, 193, 324, 324, 204, 325, 325, 216, 326, + 326, 231, 327, 327, 246, 328, 328, 159, 329, 329, + 177, 330, 330, 193, 331, 331, 204, 332, 332, 216, + 333, 333, 231, 334, 334, 246, 335, 335, 159, 336, + 336, 177, 337, 337, 193, 338, 338, 204, 339, 339, + 216, 340, 340, 231, 341, 341, 246, 342, 342, 159, + + 343, 343, 177, 344, 344, 193, 345, 345, 204, 346, + 346, 216, 347, 347, 231, 348, 348, 246, 349, 349, + 350, 350, 351, 351, 352, 352, 353, 353, 354, 354, + 355, 355, 356, 356, 357, 357, 358, 358, 359, 359, + 360, 360, 361, 361, 362, 362, 363, 363, 54, 54, + 54, 54, 54, 54, 54, 88, 88, 88, 88, 88, + 88, 88, 145, 145, 145, 145, 145, 145, 145, 147, + 251, 147, 154, 154, 154, 154, 154, 154, 157, 157, + 157, 157, 161, 161, 161, 165, 146, 165, 171, 250, + 171, 172, 172, 172, 172, 172, 172, 175, 175, 175, + + 175, 179, 179, 179, 187, 187, 187, 187, 187, 187, + 191, 191, 191, 191, 195, 195, 195, 198, 249, 198, + 199, 199, 199, 199, 199, 199, 202, 202, 202, 202, + 206, 206, 206, 211, 211, 211, 211, 211, 211, 214, + 214, 214, 214, 218, 218, 218, 225, 240, 225, 226, + 226, 226, 226, 226, 226, 229, 229, 229, 229, 233, + 233, 233, 239, 238, 239, 241, 241, 241, 241, 241, + 241, 244, 244, 244, 244, 248, 248, 248, 235, 234, + 224, 223, 222, 221, 220, 219, 210, 209, 208, 207, + 197, 196, 190, 184, 181, 180, 170, 169, 168, 163, + + 162, 153, 146, 364, 54, 54, 53, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364 + } ; + +static yyconst flex_int16_t yy_chk[835] = + { 0, + 0, 0, 0, 3, 4, 11, 9, 11, 9, 3, + 4, 10, 15, 10, 9, 11, 64, 64, 15, 10, + 59, 11, 59, 12, 25, 12, 3, 4, 5, 13, + 5, 9, 251, 12, 14, 15, 10, 13, 5, 12, + 248, 25, 14, 13, 5, 13, 5, 6, 14, 6, + 14, 68, 19, 68, 19, 16, 240, 6, 33, 238, + 34, 16, 19, 6, 237, 6, 7, 26, 19, 20, + 7, 20, 33, 7, 34, 7, 7, 7, 16, 20, + 35, 7, 7, 233, 26, 20, 224, 7, 17, 81, + 81, 45, 17, 223, 35, 17, 35, 17, 17, 17, + + 21, 21, 21, 17, 17, 22, 22, 22, 45, 17, + 21, 37, 36, 95, 95, 22, 23, 37, 23, 89, + 23, 89, 23, 91, 23, 91, 36, 23, 36, 23, + 23, 23, 38, 46, 37, 23, 23, 57, 38, 57, + 29, 23, 27, 222, 62, 79, 27, 57, 29, 27, + 46, 27, 27, 27, 29, 38, 29, 27, 27, 30, + 43, 62, 79, 27, 221, 43, 44, 30, 65, 65, + 65, 44, 218, 30, 43, 30, 31, 149, 31, 149, + 44, 47, 31, 210, 92, 31, 47, 31, 31, 31, + 82, 82, 82, 31, 31, 47, 58, 47, 58, 31, + + 41, 92, 209, 41, 41, 206, 58, 41, 48, 41, + 41, 41, 58, 48, 100, 41, 41, 70, 152, 70, + 152, 41, 48, 195, 48, 49, 85, 190, 85, 49, + 184, 100, 49, 70, 49, 49, 49, 96, 96, 96, + 49, 49, 85, 102, 102, 111, 49, 103, 103, 103, + 113, 113, 114, 114, 114, 124, 127, 127, 128, 128, + 128, 131, 111, 139, 141, 141, 142, 142, 142, 148, + 154, 148, 124, 179, 150, 131, 150, 156, 170, 148, + 139, 158, 158, 158, 150, 159, 159, 154, 172, 174, + 150, 160, 160, 160, 156, 164, 166, 164, 166, 176, + + 176, 176, 177, 177, 187, 172, 174, 178, 178, 178, + 169, 182, 166, 182, 185, 186, 185, 186, 189, 193, + 193, 187, 192, 192, 192, 199, 201, 182, 194, 194, + 194, 203, 203, 203, 211, 189, 204, 204, 205, 205, + 205, 213, 199, 201, 215, 215, 215, 216, 216, 226, + 228, 211, 217, 217, 217, 230, 230, 230, 213, 231, + 231, 232, 232, 232, 236, 241, 226, 228, 243, 245, + 245, 245, 246, 246, 247, 247, 247, 168, 236, 252, + 252, 161, 241, 254, 254, 243, 253, 253, 253, 255, + 255, 255, 256, 256, 257, 257, 257, 258, 258, 259, + + 259, 259, 260, 260, 261, 261, 261, 262, 262, 263, + 263, 263, 264, 264, 265, 265, 265, 266, 266, 267, + 267, 267, 268, 268, 269, 269, 269, 270, 270, 271, + 271, 271, 272, 272, 273, 273, 273, 274, 274, 275, + 275, 275, 276, 276, 277, 277, 277, 278, 278, 279, + 279, 279, 281, 281, 281, 283, 283, 283, 285, 285, + 285, 287, 287, 287, 289, 289, 289, 291, 291, 291, + 293, 293, 293, 294, 294, 294, 295, 295, 295, 296, + 296, 296, 297, 297, 297, 298, 298, 298, 299, 299, + 299, 300, 300, 300, 301, 301, 301, 302, 302, 302, + + 303, 303, 303, 304, 304, 304, 305, 305, 305, 306, + 306, 306, 307, 307, 307, 308, 308, 308, 309, 309, + 309, 310, 310, 310, 311, 311, 311, 312, 312, 312, + 313, 313, 313, 314, 314, 314, 315, 315, 315, 316, + 316, 316, 317, 317, 317, 318, 318, 318, 319, 319, + 319, 320, 320, 320, 321, 321, 321, 322, 322, 322, + 323, 323, 323, 324, 324, 324, 325, 325, 325, 326, + 326, 326, 327, 327, 327, 328, 328, 328, 329, 329, + 329, 330, 330, 330, 331, 331, 331, 332, 332, 332, + 333, 333, 333, 334, 334, 334, 335, 335, 335, 336, + + 336, 336, 337, 337, 337, 338, 338, 338, 339, 339, + 339, 340, 340, 340, 341, 341, 341, 342, 342, 342, + 343, 343, 344, 344, 345, 345, 346, 346, 347, 347, + 348, 348, 349, 349, 350, 350, 351, 351, 352, 352, + 353, 353, 354, 354, 355, 355, 356, 356, 365, 365, + 365, 365, 365, 365, 365, 366, 366, 366, 366, 366, + 366, 366, 367, 367, 367, 367, 367, 367, 367, 368, + 153, 368, 369, 369, 369, 369, 369, 369, 370, 370, + 370, 370, 371, 371, 371, 372, 146, 372, 373, 144, + 373, 374, 374, 374, 374, 374, 374, 375, 375, 375, + + 375, 376, 376, 376, 377, 377, 377, 377, 377, 377, + 378, 378, 378, 378, 379, 379, 379, 380, 143, 380, + 381, 381, 381, 381, 381, 381, 382, 382, 382, 382, + 383, 383, 383, 384, 384, 384, 384, 384, 384, 385, + 385, 385, 385, 386, 386, 386, 387, 135, 387, 388, + 388, 388, 388, 388, 388, 389, 389, 389, 389, 390, + 390, 390, 391, 133, 391, 392, 392, 392, 392, 392, + 392, 393, 393, 393, 393, 394, 394, 394, 130, 129, + 122, 119, 118, 117, 116, 115, 110, 106, 105, 104, + 98, 97, 93, 87, 84, 83, 77, 73, 72, 67, + + 66, 61, 55, 53, 52, 51, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364 + } ; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +#line 1 "ls-sfparser.l" + +#line 27 "ls-sfparser.l" +#include +#include "ls-sfparser.h" +struct ls_sf_parser +{ + /* Return 0 on success, -1 on error to stop parsing. */ + int (*callback)(void *user_data, enum ls_sf_dt, + char *str, size_t len, int off); + void *user_data; + const char *errmsg; + enum ls_sf_tlt top_level_type; + int mem_failed; + char *mem; + size_t mem_sz; + size_t mem_off; + /* XXX "last malloced" allows for a couple of rudimentary optimizations, + * but they never occurred in the input I tried. + */ + char *last_malloced; +}; +#define SFP ((struct ls_sf_parser *) yyextra) +#define CALLBACK(dt_, str_, len_, addl_) do { \ + if (SFP->callback(SFP->user_data, (dt_), (str_), (len_), \ + (addl_) >= 0 ? \ + yyg->yy_c_buf_p - yyleng - YY_CURRENT_BUFFER->yy_ch_buf + (addl_) : \ + (addl_))) \ + return -1; \ +} while (0) +#define YY_FATAL_ERROR(msg_) do { \ + (void) yy_fatal_error /* silence compiler warning */; \ + ((struct ls_sf_parser *) \ + (ls_sfp_get_extra(yyscanner)))->errmsg = (msg_); \ + ((struct yyguts_t*)yyscanner)->yy_start = 1 + 2 * ERROR_STATE; \ +} while (0) +#define YY_NO_INPUT 1 +#define YY_NO_UNISTD_H 1 +/* TCHAR: RFC 7230, Section 3.2.6 */ + + + + + + + +#line 821 "ls-sfparser.c" + +#define INITIAL 0 +#define DICTIONARY 1 +#define DIC_MEMBER_EQ 2 +#define DIC_MEMBER_ITEM 3 +#define DIC_NEXT_ITEM 4 +#define DIC_OPTIONAL_PARAM 5 +#define DIC_PARAM_EQ 6 +#define DIC_PARAM_KEY 7 +#define DIC_PARAM_ITEM 8 +#define LIST_OPTIONAL_PARAM 9 +#define LIST 10 +#define LIST_NEXT_ITEM 11 +#define LIST_PARAM_KEY 12 +#define LIST_PARAM_ITEM 13 +#define LIST_PARAM_EQ 14 +#define ITEM 15 +#define ITEM_OPTIONAL_PARAM 16 +#define ITEM_PARAM_EQ 17 +#define ITEM_PARAM_KEY 18 +#define ITEM_BARE_ITEM 19 +#define INNER_LIST 20 +#define IL_OPTIONAL_PARAM 21 +#define IL_PARAM_KEY 22 +#define IL_PARAM_EQ 23 +#define IL_PARAM_ITEM 24 +#define ERROR_STATE 25 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +/* Holds the entire state of the reentrant scanner. */ +struct yyguts_t + { + + /* User-defined. Not touched by flex. */ + YY_EXTRA_TYPE yyextra_r; + + /* The rest are the same as the globals declared in the non-reentrant scanner. */ + FILE *yyin_r, *yyout_r; + size_t yy_buffer_stack_top; /**< index of top of stack. */ + size_t yy_buffer_stack_max; /**< capacity of stack. */ + YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ + char yy_hold_char; + int yy_n_chars; + int yyleng_r; + char *yy_c_buf_p; + int yy_init; + int yy_start; + int yy_did_buffer_switch_on_eof; + int yy_start_stack_ptr; + int yy_start_stack_depth; + int *yy_start_stack; + yy_state_type yy_last_accepting_state; + char* yy_last_accepting_cpos; + + int yylineno_r; + int yy_flex_debug_r; + + char *yytext_r; + int yy_more_flag; + int yy_more_len; + + }; /* end struct yyguts_t */ + +static int yy_init_globals (yyscan_t yyscanner ); + +int ls_sfp_lex_init (yyscan_t* scanner); + +int ls_sfp_lex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int ls_sfp_lex_destroy (yyscan_t yyscanner ); + +int ls_sfp_get_debug (yyscan_t yyscanner ); + +void ls_sfp_set_debug (int debug_flag ,yyscan_t yyscanner ); + +YY_EXTRA_TYPE ls_sfp_get_extra (yyscan_t yyscanner ); + +void ls_sfp_set_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); + +FILE *ls_sfp_get_in (yyscan_t yyscanner ); + +void ls_sfp_set_in (FILE * in_str ,yyscan_t yyscanner ); + +FILE *ls_sfp_get_out (yyscan_t yyscanner ); + +void ls_sfp_set_out (FILE * out_str ,yyscan_t yyscanner ); + +int ls_sfp_get_leng (yyscan_t yyscanner ); + +char *ls_sfp_get_text (yyscan_t yyscanner ); + +int ls_sfp_get_lineno (yyscan_t yyscanner ); + +void ls_sfp_set_lineno (int line_number ,yyscan_t yyscanner ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int ls_sfp_wrap (yyscan_t yyscanner ); +#else +extern int ls_sfp_wrap (yyscan_t yyscanner ); +#endif +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (yyscan_t yyscanner ); +#else +static int input (yyscan_t yyscanner ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else +#define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int ls_sfp_lex (yyscan_t yyscanner); + +#define YY_DECL int ls_sfp_lex (yyscan_t yyscanner) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + +#line 101 "ls-sfparser.l" + + + char TRUE[] = "1"; + + switch (SFP->top_level_type) + { + case LS_SF_TLT_DICTIONARY: + BEGIN(DICTIONARY); + break; + case LS_SF_TLT_LIST: + BEGIN(LIST); + break; + case LS_SF_TLT_ITEM: + BEGIN(ITEM); + break; + default: + SFP->errmsg = "invalid top-level type specified"; + return -1; + } + +#line 1091 "ls-sfparser.c" + + if ( !yyg->yy_init ) + { + yyg->yy_init = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! yyg->yy_start ) + yyg->yy_start = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + if (ls_sfp_ensure_buffer_stack (yyscanner)) + return -1; + YY_CURRENT_BUFFER_LVALUE = + ls_sfp__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); + } + + ls_sfp__load_buffer_state(yyscanner ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = yyg->yy_c_buf_p; + + /* Support of yytext. */ + *yy_cp = yyg->yy_hold_char; + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = yyg->yy_start; +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 365 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while ( yy_current_state != 364 ); + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = yyg->yy_hold_char; + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 122 "ls-sfparser.l" +/* Eat up whitespace */ + YY_BREAK +case 2: +YY_RULE_SETUP +#line 123 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_NAME, yytext, yyleng, 0); + BEGIN(DIC_MEMBER_EQ); } + YY_BREAK + + +case YY_STATE_EOF(DIC_NEXT_ITEM): +#line 128 "ls-sfparser.l" +{ return -1; } + YY_BREAK +case 3: +YY_RULE_SETUP +#line 129 "ls-sfparser.l" +/* Eat up whitespace */ + YY_BREAK +case 4: +YY_RULE_SETUP +#line 130 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_NAME, yytext, yyleng, 0); + BEGIN(DIC_MEMBER_EQ); } + YY_BREAK + +case 5: +YY_RULE_SETUP +#line 134 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_INNER_LIST_BEGIN, yytext + 1, yyleng - 1, 1); + BEGIN(INNER_LIST); } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 137 "ls-sfparser.l" +{ BEGIN(DIC_MEMBER_ITEM); } + YY_BREAK +case 7: +YY_RULE_SETUP +#line 139 "ls-sfparser.l" +{ TRUE[0] = '1'; + CALLBACK(LS_SF_DT_BOOLEAN, TRUE, 1, -1); + BEGIN(DIC_PARAM_KEY); } + YY_BREAK +case 8: +YY_RULE_SETUP +#line 143 "ls-sfparser.l" +{ TRUE[0] = '1'; + CALLBACK(LS_SF_DT_BOOLEAN, TRUE, 1, -1); + BEGIN(DIC_NEXT_ITEM); } + YY_BREAK +case YY_STATE_EOF(DIC_MEMBER_EQ): +#line 147 "ls-sfparser.l" +{ TRUE[0] = '1'; + CALLBACK(LS_SF_DT_BOOLEAN, TRUE, 1, -1); + return 0; } + YY_BREAK + +case 9: +YY_RULE_SETUP +#line 152 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_INNER_LIST_END, yytext, yyleng, 0); + if (SFP->top_level_type == LS_SF_TLT_DICTIONARY) + BEGIN(DIC_OPTIONAL_PARAM); + else + BEGIN(LIST_OPTIONAL_PARAM); } + YY_BREAK +case 10: +YY_RULE_SETUP +#line 157 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_INTEGER, yytext, yyleng, 0); + BEGIN(IL_OPTIONAL_PARAM); + } + YY_BREAK +case 11: +YY_RULE_SETUP +#line 160 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_DECIMAL, yytext, yyleng, 0); + BEGIN(IL_OPTIONAL_PARAM); + } + YY_BREAK +case 12: +YY_RULE_SETUP +#line 163 "ls-sfparser.l" +{ + yytext[yyleng - 1] = '\0'; + CALLBACK(LS_SF_DT_STRING, yytext + 1, yyleng - 2, 1); + BEGIN(IL_OPTIONAL_PARAM); + } + YY_BREAK +case 13: +YY_RULE_SETUP +#line 168 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_TOKEN, yytext, yyleng, 0); + BEGIN(IL_OPTIONAL_PARAM); + } + YY_BREAK +case 14: +YY_RULE_SETUP +#line 171 "ls-sfparser.l" +{ + yytext[yyleng - 1] = '\0'; + CALLBACK(LS_SF_DT_BYTESEQ, yytext + 1, yyleng - 2, 1); + BEGIN(IL_OPTIONAL_PARAM); + } + YY_BREAK +case 15: +YY_RULE_SETUP +#line 176 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_BOOLEAN, yytext + 1, yyleng - 1, 1); + BEGIN(IL_OPTIONAL_PARAM); + } + YY_BREAK +case YY_STATE_EOF(INNER_LIST): +#line 179 "ls-sfparser.l" +{ return -1; } + YY_BREAK + + +case 16: +YY_RULE_SETUP +#line 183 "ls-sfparser.l" +{ BEGIN(IL_PARAM_KEY); } + YY_BREAK +case 17: +YY_RULE_SETUP +#line 184 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_INNER_LIST_END, yytext, yyleng, 0); + if (SFP->top_level_type == LS_SF_TLT_DICTIONARY) + BEGIN(DIC_OPTIONAL_PARAM); + else + BEGIN(LIST_OPTIONAL_PARAM); } + YY_BREAK +case 18: +YY_RULE_SETUP +#line 189 "ls-sfparser.l" +{ BEGIN(INNER_LIST); } + YY_BREAK +case YY_STATE_EOF(IL_OPTIONAL_PARAM): +#line 190 "ls-sfparser.l" +{ return -1; } + YY_BREAK + +case 19: +YY_RULE_SETUP +#line 193 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_PARAM_NAME, yytext, yyleng, 0); + BEGIN(IL_PARAM_EQ); } + YY_BREAK + +case 20: +YY_RULE_SETUP +#line 197 "ls-sfparser.l" +{ BEGIN(IL_PARAM_ITEM); } + YY_BREAK +case 21: +YY_RULE_SETUP +#line 198 "ls-sfparser.l" +{ TRUE[0] = '1'; + CALLBACK(LS_SF_DT_BOOLEAN, TRUE, 1, -1); + BEGIN(IL_OPTIONAL_PARAM); } + YY_BREAK +case 22: +YY_RULE_SETUP +#line 201 "ls-sfparser.l" +{ TRUE[0] = '1'; + CALLBACK(LS_SF_DT_BOOLEAN, TRUE, 1, -1); + BEGIN(IL_PARAM_KEY); } + YY_BREAK +case 23: +YY_RULE_SETUP +#line 204 "ls-sfparser.l" +{ TRUE[0] = '1'; + CALLBACK(LS_SF_DT_BOOLEAN, TRUE, 1, -1); + CALLBACK(LS_SF_DT_INNER_LIST_END, yytext, yyleng, 0); + if (SFP->top_level_type == LS_SF_TLT_DICTIONARY) + BEGIN(DIC_OPTIONAL_PARAM); + else + BEGIN(LIST_OPTIONAL_PARAM); } + YY_BREAK + + +case 24: +YY_RULE_SETUP +#line 214 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_INTEGER, yytext, yyleng, 0); + BEGIN(IL_OPTIONAL_PARAM); + } + YY_BREAK +case 25: +YY_RULE_SETUP +#line 217 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_DECIMAL, yytext, yyleng, 0); + BEGIN(IL_OPTIONAL_PARAM); + } + YY_BREAK +case 26: +YY_RULE_SETUP +#line 220 "ls-sfparser.l" +{ + yytext[yyleng - 1] = '\0'; + CALLBACK(LS_SF_DT_STRING, yytext + 1, yyleng - 2, 1); + BEGIN(IL_OPTIONAL_PARAM); + } + YY_BREAK +case 27: +YY_RULE_SETUP +#line 225 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_TOKEN, yytext, yyleng, 0); + BEGIN(IL_OPTIONAL_PARAM); + } + YY_BREAK +case 28: +YY_RULE_SETUP +#line 228 "ls-sfparser.l" +{ + yytext[yyleng - 1] = '\0'; + CALLBACK(LS_SF_DT_BYTESEQ, yytext + 1, yyleng - 2, 1); + BEGIN(IL_OPTIONAL_PARAM); + } + YY_BREAK +case 29: +YY_RULE_SETUP +#line 233 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_BOOLEAN, yytext + 1, yyleng - 1, 1); + BEGIN(IL_OPTIONAL_PARAM); + } + YY_BREAK +case YY_STATE_EOF(IL_PARAM_ITEM): +#line 236 "ls-sfparser.l" +{ return -1; } + YY_BREAK + + +case 30: +YY_RULE_SETUP +#line 240 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_INTEGER, yytext, yyleng, 0); + BEGIN(DIC_OPTIONAL_PARAM); + } + YY_BREAK +case 31: +YY_RULE_SETUP +#line 243 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_DECIMAL, yytext, yyleng, 0); + BEGIN(DIC_OPTIONAL_PARAM); + } + YY_BREAK +case 32: +YY_RULE_SETUP +#line 246 "ls-sfparser.l" +{ + yytext[yyleng - 1] = '\0'; + CALLBACK(LS_SF_DT_STRING, yytext + 1, yyleng - 2, 1); + BEGIN(DIC_OPTIONAL_PARAM); + } + YY_BREAK +case 33: +YY_RULE_SETUP +#line 251 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_TOKEN, yytext, yyleng, 0); + BEGIN(DIC_OPTIONAL_PARAM); + } + YY_BREAK +case 34: +YY_RULE_SETUP +#line 254 "ls-sfparser.l" +{ + yytext[yyleng - 1] = '\0'; + CALLBACK(LS_SF_DT_BYTESEQ, yytext + 1, yyleng - 2, 1); + BEGIN(DIC_OPTIONAL_PARAM); + } + YY_BREAK +case 35: +YY_RULE_SETUP +#line 259 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_BOOLEAN, yytext + 1, yyleng - 1, 1); + BEGIN(DIC_OPTIONAL_PARAM); + } + YY_BREAK +case YY_STATE_EOF(DIC_MEMBER_ITEM): +#line 262 "ls-sfparser.l" +{ return -1; } + YY_BREAK + + +case 36: +YY_RULE_SETUP +#line 266 "ls-sfparser.l" +{ return -1; } + YY_BREAK +case 37: +YY_RULE_SETUP +#line 267 "ls-sfparser.l" +/* Eat up whitespace */ + YY_BREAK +case 38: +YY_RULE_SETUP +#line 268 "ls-sfparser.l" +{ BEGIN(DIC_PARAM_KEY); } + YY_BREAK +case 39: +YY_RULE_SETUP +#line 269 "ls-sfparser.l" +{ BEGIN(DIC_NEXT_ITEM); } + YY_BREAK +case YY_STATE_EOF(DIC_OPTIONAL_PARAM): +#line 270 "ls-sfparser.l" +{ return 0; } + YY_BREAK + + +case 40: +YY_RULE_SETUP +#line 274 "ls-sfparser.l" +/* Eat up whitespace */ + YY_BREAK +case 41: +YY_RULE_SETUP +#line 275 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_PARAM_NAME, yytext, yyleng, 0); + BEGIN(DIC_PARAM_EQ); } + YY_BREAK + + +case 42: +YY_RULE_SETUP +#line 280 "ls-sfparser.l" +{ BEGIN(DIC_PARAM_ITEM); } + YY_BREAK +case 43: +YY_RULE_SETUP +#line 281 "ls-sfparser.l" +{ TRUE[0] = '1'; + CALLBACK(LS_SF_DT_BOOLEAN, TRUE, 1, -1); + BEGIN(DIC_NEXT_ITEM); + } + YY_BREAK +case 44: +YY_RULE_SETUP +#line 285 "ls-sfparser.l" +{ TRUE[0] = '1'; + CALLBACK(LS_SF_DT_BOOLEAN, TRUE, 1, -1); + BEGIN(DIC_PARAM_KEY); + } + YY_BREAK +case 45: +YY_RULE_SETUP +#line 289 "ls-sfparser.l" +{ TRUE[0] = '1'; + CALLBACK(LS_SF_DT_BOOLEAN, TRUE, 1, -1); + BEGIN(DIC_OPTIONAL_PARAM); + } + YY_BREAK +case YY_STATE_EOF(DIC_PARAM_EQ): +#line 293 "ls-sfparser.l" +{ TRUE[0] = '1'; + CALLBACK(LS_SF_DT_BOOLEAN, TRUE, 1, -1); + return 0; + } + YY_BREAK + + +case 46: +YY_RULE_SETUP +#line 300 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_INTEGER, yytext, yyleng, 0); + BEGIN(DIC_OPTIONAL_PARAM); + } + YY_BREAK +case 47: +YY_RULE_SETUP +#line 303 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_DECIMAL, yytext, yyleng, 0); + BEGIN(DIC_OPTIONAL_PARAM); + } + YY_BREAK +case 48: +YY_RULE_SETUP +#line 306 "ls-sfparser.l" +{ + yytext[yyleng - 1] = '\0'; + CALLBACK(LS_SF_DT_STRING, yytext + 1, yyleng - 2, 1); + BEGIN(DIC_OPTIONAL_PARAM); + } + YY_BREAK +case 49: +YY_RULE_SETUP +#line 311 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_TOKEN, yytext, yyleng, 0); + BEGIN(DIC_OPTIONAL_PARAM); + } + YY_BREAK +case 50: +YY_RULE_SETUP +#line 314 "ls-sfparser.l" +{ + yytext[yyleng - 1] = '\0'; + CALLBACK(LS_SF_DT_BYTESEQ, yytext + 1, yyleng - 2, 1); + BEGIN(DIC_OPTIONAL_PARAM); + } + YY_BREAK +case 51: +YY_RULE_SETUP +#line 319 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_BOOLEAN, yytext + 1, yyleng - 1, 1); + BEGIN(DIC_OPTIONAL_PARAM); + } + YY_BREAK +case YY_STATE_EOF(DIC_PARAM_ITEM): +#line 322 "ls-sfparser.l" +{ return -1; } + YY_BREAK + + +case 52: +YY_RULE_SETUP +#line 326 "ls-sfparser.l" +/* Eat up whitespace */ + YY_BREAK +case 53: +YY_RULE_SETUP +#line 327 "ls-sfparser.l" +{ return -1; } + YY_BREAK +case 54: +YY_RULE_SETUP +#line 328 "ls-sfparser.l" +{ yyless(0); BEGIN(LIST_NEXT_ITEM); } + YY_BREAK + + +case YY_STATE_EOF(LIST_NEXT_ITEM): +#line 332 "ls-sfparser.l" +{ return -1; } + YY_BREAK +case 55: +YY_RULE_SETUP +#line 333 "ls-sfparser.l" +/* Eat up whitespace */ + YY_BREAK +case 56: +YY_RULE_SETUP +#line 334 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_INNER_LIST_BEGIN, yytext, yyleng, 0); + BEGIN(INNER_LIST); } + YY_BREAK +case 57: +YY_RULE_SETUP +#line 336 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_INTEGER, yytext, yyleng, 0); + BEGIN(LIST_OPTIONAL_PARAM); + } + YY_BREAK +case 58: +YY_RULE_SETUP +#line 339 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_DECIMAL, yytext, yyleng, 0); + BEGIN(LIST_OPTIONAL_PARAM); + } + YY_BREAK +case 59: +YY_RULE_SETUP +#line 342 "ls-sfparser.l" +{ + yytext[yyleng - 1] = '\0'; + CALLBACK(LS_SF_DT_STRING, yytext + 1, yyleng - 2, 1); + BEGIN(LIST_OPTIONAL_PARAM); + } + YY_BREAK +case 60: +YY_RULE_SETUP +#line 347 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_TOKEN, yytext, yyleng, 0); + BEGIN(LIST_OPTIONAL_PARAM); + } + YY_BREAK +case 61: +YY_RULE_SETUP +#line 350 "ls-sfparser.l" +{ + yytext[yyleng - 1] = '\0'; + CALLBACK(LS_SF_DT_BYTESEQ, yytext + 1, yyleng - 2, 1); + BEGIN(LIST_OPTIONAL_PARAM); + } + YY_BREAK +case 62: +YY_RULE_SETUP +#line 355 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_BOOLEAN, yytext + 1, yyleng - 1, 1); + BEGIN(LIST_OPTIONAL_PARAM); + } + YY_BREAK + + +case 63: +YY_RULE_SETUP +#line 361 "ls-sfparser.l" +{ return -1; } + YY_BREAK +case 64: +YY_RULE_SETUP +#line 362 "ls-sfparser.l" +/* Eat up whitespace */ + YY_BREAK +case 65: +YY_RULE_SETUP +#line 363 "ls-sfparser.l" +{ BEGIN(LIST_PARAM_KEY); } + YY_BREAK +case 66: +YY_RULE_SETUP +#line 364 "ls-sfparser.l" +{ BEGIN(LIST_NEXT_ITEM); } + YY_BREAK + +case 67: +YY_RULE_SETUP +#line 367 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_PARAM_NAME, yytext, yyleng, 0); + BEGIN(LIST_PARAM_EQ); } + YY_BREAK + +case 68: +YY_RULE_SETUP +#line 371 "ls-sfparser.l" +{ BEGIN(LIST_PARAM_ITEM); } + YY_BREAK +case 69: +YY_RULE_SETUP +#line 372 "ls-sfparser.l" +{ TRUE[0] = '1'; + CALLBACK(LS_SF_DT_BOOLEAN, TRUE, 1, -1); + BEGIN(LIST_OPTIONAL_PARAM); } + YY_BREAK +case 70: +YY_RULE_SETUP +#line 375 "ls-sfparser.l" +{ TRUE[0] = '1'; + CALLBACK(LS_SF_DT_BOOLEAN, TRUE, 1, -1); + BEGIN(LIST_PARAM_KEY); } + YY_BREAK +case 71: +YY_RULE_SETUP +#line 378 "ls-sfparser.l" +{ TRUE[0] = '1'; + CALLBACK(LS_SF_DT_BOOLEAN, TRUE, 1, -1); + BEGIN(LIST_NEXT_ITEM); } + YY_BREAK + + +case 72: +YY_RULE_SETUP +#line 384 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_INTEGER, yytext, yyleng, 0); + BEGIN(LIST_OPTIONAL_PARAM); + } + YY_BREAK +case 73: +YY_RULE_SETUP +#line 387 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_DECIMAL, yytext, yyleng, 0); + BEGIN(LIST_OPTIONAL_PARAM); + } + YY_BREAK +case 74: +YY_RULE_SETUP +#line 390 "ls-sfparser.l" +{ + yytext[yyleng - 1] = '\0'; + CALLBACK(LS_SF_DT_STRING, yytext + 1, yyleng - 2, 1); + BEGIN(LIST_OPTIONAL_PARAM); + } + YY_BREAK +case 75: +YY_RULE_SETUP +#line 395 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_TOKEN, yytext, yyleng, 0); + BEGIN(LIST_OPTIONAL_PARAM); + } + YY_BREAK +case 76: +YY_RULE_SETUP +#line 398 "ls-sfparser.l" +{ + yytext[yyleng - 1] = '\0'; + CALLBACK(LS_SF_DT_BYTESEQ, yytext + 1, yyleng - 2, 1); + BEGIN(LIST_OPTIONAL_PARAM); + } + YY_BREAK +case 77: +YY_RULE_SETUP +#line 403 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_BOOLEAN, yytext + 1, yyleng - 1, 1); + BEGIN(LIST_OPTIONAL_PARAM); + } + YY_BREAK + + +case 78: +YY_RULE_SETUP +#line 409 "ls-sfparser.l" +/* Eat up whitespace */ + YY_BREAK +case 79: +YY_RULE_SETUP +#line 410 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_INTEGER, yytext, yyleng, 0); + BEGIN(ITEM_OPTIONAL_PARAM); + } + YY_BREAK +case 80: +YY_RULE_SETUP +#line 413 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_DECIMAL, yytext, yyleng, 0); + BEGIN(ITEM_OPTIONAL_PARAM); + } + YY_BREAK +case 81: +YY_RULE_SETUP +#line 416 "ls-sfparser.l" +{ + yytext[yyleng - 1] = '\0'; + CALLBACK(LS_SF_DT_STRING, yytext + 1, yyleng - 2, 1); + BEGIN(ITEM_OPTIONAL_PARAM); + } + YY_BREAK +case 82: +YY_RULE_SETUP +#line 421 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_TOKEN, yytext, yyleng, 0); + BEGIN(ITEM_OPTIONAL_PARAM); + } + YY_BREAK +case 83: +YY_RULE_SETUP +#line 424 "ls-sfparser.l" +{ + yytext[yyleng - 1] = '\0'; + CALLBACK(LS_SF_DT_BYTESEQ, yytext + 1, yyleng - 2, 1); + BEGIN(ITEM_OPTIONAL_PARAM); + } + YY_BREAK +case 84: +YY_RULE_SETUP +#line 429 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_BOOLEAN, yytext + 1, yyleng - 1, 1); + BEGIN(ITEM_OPTIONAL_PARAM); + } + YY_BREAK +case YY_STATE_EOF(ITEM): +#line 432 "ls-sfparser.l" +{ return -1; } + YY_BREAK + + +case 85: +YY_RULE_SETUP +#line 436 "ls-sfparser.l" +/* Eat up whitespace */ + YY_BREAK +case 86: +YY_RULE_SETUP +#line 437 "ls-sfparser.l" +{ BEGIN(ITEM_PARAM_KEY); } + YY_BREAK + + +case 87: +YY_RULE_SETUP +#line 441 "ls-sfparser.l" +/* Eat up whitespace */ + YY_BREAK +case 88: +YY_RULE_SETUP +#line 442 "ls-sfparser.l" +{ CALLBACK(LS_SF_DT_PARAM_NAME, yytext, yyleng, 0); + BEGIN(ITEM_PARAM_EQ); } + YY_BREAK + + +case 89: +YY_RULE_SETUP +#line 447 "ls-sfparser.l" +{ BEGIN(ITEM); } + YY_BREAK +case 90: +YY_RULE_SETUP +#line 448 "ls-sfparser.l" +{ TRUE[0] = '1'; + CALLBACK(LS_SF_DT_BOOLEAN, TRUE, 1, -1); + BEGIN(ITEM_OPTIONAL_PARAM); + } + YY_BREAK +case 91: +YY_RULE_SETUP +#line 452 "ls-sfparser.l" +{ TRUE[0] = '1'; + CALLBACK(LS_SF_DT_BOOLEAN, TRUE, 1, -1); + BEGIN(ITEM_PARAM_KEY); + } + YY_BREAK +case YY_STATE_EOF(ITEM_PARAM_EQ): +#line 456 "ls-sfparser.l" +{ TRUE[0] = '1'; + CALLBACK(LS_SF_DT_BOOLEAN, TRUE, 1, -1); + return 0; + } + YY_BREAK + +case 92: +YY_RULE_SETUP +#line 462 "ls-sfparser.l" +{ return -1; } + YY_BREAK +case 93: +YY_RULE_SETUP +#line 464 "ls-sfparser.l" +YY_FATAL_ERROR( "flex scanner jammed" ); + YY_BREAK +#line 1893 "ls-sfparser.c" +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(DICTIONARY): +case YY_STATE_EOF(DIC_PARAM_KEY): +case YY_STATE_EOF(LIST_OPTIONAL_PARAM): +case YY_STATE_EOF(LIST): +case YY_STATE_EOF(LIST_PARAM_KEY): +case YY_STATE_EOF(LIST_PARAM_ITEM): +case YY_STATE_EOF(LIST_PARAM_EQ): +case YY_STATE_EOF(ITEM_OPTIONAL_PARAM): +case YY_STATE_EOF(ITEM_PARAM_KEY): +case YY_STATE_EOF(ITEM_BARE_ITEM): +case YY_STATE_EOF(IL_PARAM_KEY): +case YY_STATE_EOF(IL_PARAM_EQ): +case YY_STATE_EOF(ERROR_STATE): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yyg->yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * ls_sfp_lex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( yyscanner ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); + + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++yyg->yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( yyscanner ) ) + { + case EOB_ACT_END_OF_FILE: + { + yyg->yy_did_buffer_switch_on_eof = 0; + + if ( ls_sfp_wrap(yyscanner ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! yyg->yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = + yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( yyscanner ); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + yyg->yy_c_buf_p = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; + + yy_current_state = yy_get_previous_state( yyscanner ); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of ls_sfp_lex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = yyg->yytext_ptr; + register int number_to_move, i; + int ret_val; + + if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) (yyg->yy_c_buf_p - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + ls_sfp_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + { + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + return EOB_ACT_END_OF_FILE; + } + + yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + yyg->yy_n_chars, (size_t) num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + if ( yyg->yy_n_chars == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + ls_sfp_restart(yyin ,yyscanner); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) ls_sfp_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + { + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + return EOB_ACT_END_OF_FILE; + } + } + + yyg->yy_n_chars += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; + + yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (yyscan_t yyscanner) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + yy_current_state = yyg->yy_start; + + for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 365 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) +{ + register int yy_is_jam; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ + register char *yy_cp = yyg->yy_c_buf_p; + + register YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 365 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 364); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (yyscan_t yyscanner) +#else + static int input (yyscan_t yyscanner) +#endif + +{ + int c; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + *yyg->yy_c_buf_p = yyg->yy_hold_char; + + if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) + /* This was really a NUL. */ + *yyg->yy_c_buf_p = '\0'; + + else + { /* need more input */ + int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; + ++yyg->yy_c_buf_p; + + switch ( yy_get_next_buffer( yyscanner ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + ls_sfp_restart(yyin ,yyscanner); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( ls_sfp_wrap(yyscanner ) ) + return EOF; + + if ( ! yyg->yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(yyscanner); +#else + return input(yyscanner); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = yyg->yytext_ptr + offset; + break; + } + } + } + + c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ + *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ + yyg->yy_hold_char = *++yyg->yy_c_buf_p; + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * @param yyscanner The scanner object. + * @note This function does not reset the start condition to @c INITIAL . + */ + void ls_sfp_restart (FILE * input_file , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if ( ! YY_CURRENT_BUFFER ){ + if (ls_sfp_ensure_buffer_stack (yyscanner)) + return; + YY_CURRENT_BUFFER_LVALUE = + ls_sfp__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); + } + + ls_sfp__init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); + ls_sfp__load_buffer_state(yyscanner ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * @param yyscanner The scanner object. + */ + void ls_sfp__switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* TODO. We should be able to replace this entire function body + * with + * ls_sfp_pop_buffer_state(); + * ls_sfp_push_buffer_state(new_buffer); + */ + if (ls_sfp_ensure_buffer_stack (yyscanner)) + return; + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + ls_sfp__load_buffer_state(yyscanner ); + + /* We don't actually know whether we did this switch during + * EOF (ls_sfp_wrap()) processing, but the only time this flag + * is looked at is after ls_sfp_wrap() is called, so it's safe + * to go ahead and always set it. + */ + yyg->yy_did_buffer_switch_on_eof = 1; +} + +static void ls_sfp__load_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + yyg->yy_hold_char = *yyg->yy_c_buf_p; +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * @param yyscanner The scanner object. + * @return the allocated buffer state. + */ + YY_BUFFER_STATE ls_sfp__create_buffer (FILE * file, int size , yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) ls_sfp_alloc(sizeof( struct yy_buffer_state ) ,yyscanner ); + if ( ! b ) + { + YY_FATAL_ERROR( "out of dynamic memory in ls_sfp__create_buffer()" ); + return NULL; + } + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) ls_sfp_alloc(b->yy_buf_size + 2 ,yyscanner ); + if ( ! b->yy_ch_buf ) + { + YY_FATAL_ERROR( "out of dynamic memory in ls_sfp__create_buffer()" ); + return NULL; + } + + b->yy_is_our_buffer = 1; + + ls_sfp__init_buffer(b,file ,yyscanner); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with ls_sfp__create_buffer() + * @param yyscanner The scanner object. + */ + void ls_sfp__delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + ls_sfp_free((void *) b->yy_ch_buf ,yyscanner ); + + ls_sfp_free((void *) b ,yyscanner ); +} + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a ls_sfp_restart() or at EOF. + */ + static void ls_sfp__init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) + +{ + int oerrno = errno; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + ls_sfp__flush_buffer(b ,yyscanner); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then ls_sfp__init_buffer was _probably_ + * called from ls_sfp_restart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * @param yyscanner The scanner object. + */ + void ls_sfp__flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + ls_sfp__load_buffer_state(yyscanner ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * @param yyscanner The scanner object. + */ +void ls_sfp_push_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + if (new_buffer == NULL) + return; + + if (ls_sfp_ensure_buffer_stack(yyscanner)) + return; + + /* This block is copied from ls_sfp__switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + yyg->yy_buffer_stack_top++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from ls_sfp__switch_to_buffer. */ + ls_sfp__load_buffer_state(yyscanner ); + yyg->yy_did_buffer_switch_on_eof = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * @param yyscanner The scanner object. + */ +void ls_sfp_pop_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + if (!YY_CURRENT_BUFFER) + return; + + ls_sfp__delete_buffer(YY_CURRENT_BUFFER ,yyscanner); + YY_CURRENT_BUFFER_LVALUE = NULL; + if (yyg->yy_buffer_stack_top > 0) + --yyg->yy_buffer_stack_top; + + if (YY_CURRENT_BUFFER) { + ls_sfp__load_buffer_state(yyscanner ); + yyg->yy_did_buffer_switch_on_eof = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static int ls_sfp_ensure_buffer_stack (yyscan_t yyscanner) +{ + int num_to_alloc; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if (!yyg->yy_buffer_stack) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + yyg->yy_buffer_stack = (struct yy_buffer_state**)ls_sfp_alloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + , yyscanner); + if ( ! yyg->yy_buffer_stack ) + { + YY_FATAL_ERROR( "out of dynamic memory in ls_sfp_ensure_buffer_stack()" ); + return -1; + } + + memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + yyg->yy_buffer_stack_max = num_to_alloc; + yyg->yy_buffer_stack_top = 0; + return 0; + } + + if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = yyg->yy_buffer_stack_max + grow_size; + yyg->yy_buffer_stack = (struct yy_buffer_state**)ls_sfp_realloc + (yyg->yy_buffer_stack, + num_to_alloc * sizeof(struct yy_buffer_state*) + , yyscanner); + if ( ! yyg->yy_buffer_stack ) + { + YY_FATAL_ERROR( "out of dynamic memory in ls_sfp_ensure_buffer_stack()" ); + return -1; + } + + /* zero only the new slots.*/ + memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); + yyg->yy_buffer_stack_max = num_to_alloc; + } + + return 0; +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE ls_sfp__scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) ls_sfp_alloc(sizeof( struct yy_buffer_state ) ,yyscanner ); + if ( ! b ) + { + YY_FATAL_ERROR( "out of dynamic memory in ls_sfp__scan_buffer()" ); + return 0; + } + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + ls_sfp__switch_to_buffer(b ,yyscanner ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to ls_sfp_lex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * ls_sfp__scan_bytes() instead. + */ +YY_BUFFER_STATE ls_sfp__scan_string (yyconst char * yystr , yyscan_t yyscanner) +{ + + return ls_sfp__scan_bytes(yystr,strlen(yystr) ,yyscanner); +} + +/** Setup the input buffer state to scan the given bytes. The next call to ls_sfp_lex() will + * scan from a @e copy of @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE ls_sfp__scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) ls_sfp_alloc(n ,yyscanner ); + if ( ! buf ) + { + YY_FATAL_ERROR( "out of dynamic memory in ls_sfp__scan_bytes()" ); + return NULL; + } + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = ls_sfp__scan_buffer(buf,n ,yyscanner); + if ( ! b ) + { + YY_FATAL_ERROR( "bad buffer in ls_sfp__scan_bytes()" ); + return NULL; + } + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = yyg->yy_hold_char; \ + yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ + yyg->yy_hold_char = *yyg->yy_c_buf_p; \ + *yyg->yy_c_buf_p = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the user-defined data for this scanner. + * @param yyscanner The scanner object. + */ +YY_EXTRA_TYPE ls_sfp_get_extra (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyextra; +} + +/** Get the current line number. + * @param yyscanner The scanner object. + */ +int ls_sfp_get_lineno (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if (! YY_CURRENT_BUFFER) + return 0; + + return yylineno; +} + +/** Get the current column number. + * @param yyscanner The scanner object. + */ +int ls_sfp_get_column (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if (! YY_CURRENT_BUFFER) + return 0; + + return yycolumn; +} + +/** Get the input stream. + * @param yyscanner The scanner object. + */ +FILE *ls_sfp_get_in (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyin; +} + +/** Get the output stream. + * @param yyscanner The scanner object. + */ +FILE *ls_sfp_get_out (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyout; +} + +/** Get the length of the current token. + * @param yyscanner The scanner object. + */ +int ls_sfp_get_leng (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyleng; +} + +/** Get the current token. + * @param yyscanner The scanner object. + */ + +char *ls_sfp_get_text (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yytext; +} + +/** Set the user-defined data. This data is never touched by the scanner. + * @param user_defined The data to be associated with this scanner. + * @param yyscanner The scanner object. + */ +void ls_sfp_set_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyextra = user_defined ; +} + +/** Set the current line number. + * @param line_number + * @param yyscanner The scanner object. + */ +void ls_sfp_set_lineno (int line_number , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* lineno is only valid if an input buffer exists. */ + if (! YY_CURRENT_BUFFER ) + yy_fatal_error( "ls_sfp_set_lineno called with no buffer" , yyscanner); + + yylineno = line_number; +} + +/** Set the current column. + * @param line_number + * @param yyscanner The scanner object. + */ +void ls_sfp_set_column (int column_no , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* column is only valid if an input buffer exists. */ + if (! YY_CURRENT_BUFFER ) + yy_fatal_error( "ls_sfp_set_column called with no buffer" , yyscanner); + + yycolumn = column_no; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * @param yyscanner The scanner object. + * @see ls_sfp__switch_to_buffer + */ +void ls_sfp_set_in (FILE * in_str , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyin = in_str ; +} + +void ls_sfp_set_out (FILE * out_str , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyout = out_str ; +} + +int ls_sfp_get_debug (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yy_flex_debug; +} + +void ls_sfp_set_debug (int bdebug , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yy_flex_debug = bdebug ; +} + +/* Accessor methods for yylval and yylloc */ + +/* User-visible API */ + +/* ls_sfp_lex_init is special because it creates the scanner itself, so it is + * the ONLY reentrant function that doesn't take the scanner as the last argument. + * That's why we explicitly handle the declaration, instead of using our macros. + */ + +int ls_sfp_lex_init(yyscan_t* ptr_yy_globals) + +{ + if (ptr_yy_globals == NULL){ + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = (yyscan_t) ls_sfp_alloc ( sizeof( struct yyguts_t ), NULL ); + + if (*ptr_yy_globals == NULL){ + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ + memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); + + return yy_init_globals ( *ptr_yy_globals ); +} + +/* ls_sfp_lex_init_extra has the same functionality as ls_sfp_lex_init, but follows the + * convention of taking the scanner as the last argument. Note however, that + * this is a *pointer* to a scanner, as it will be allocated by this call (and + * is the reason, too, why this function also must handle its own declaration). + * The user defined value in the first argument will be available to ls_sfp_alloc in + * the yyextra field. + */ + +int ls_sfp_lex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) + +{ + struct yyguts_t dummy_yyguts; + + ls_sfp_set_extra (yy_user_defined, &dummy_yyguts); + + if (ptr_yy_globals == NULL){ + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = (yyscan_t) ls_sfp_alloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); + + if (*ptr_yy_globals == NULL){ + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in + yy_init_globals. Leave at 0x00 for releases. */ + memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); + + ls_sfp_set_extra (yy_user_defined, *ptr_yy_globals); + + return yy_init_globals ( *ptr_yy_globals ); +} + +static int yy_init_globals (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from ls_sfp_lex_destroy(), so don't allocate here. + */ + + yyg->yy_buffer_stack = 0; + yyg->yy_buffer_stack_top = 0; + yyg->yy_buffer_stack_max = 0; + yyg->yy_c_buf_p = (char *) 0; + yyg->yy_init = 0; + yyg->yy_start = 0; + + yyg->yy_start_stack_ptr = 0; + yyg->yy_start_stack_depth = 0; + yyg->yy_start_stack = NULL; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * ls_sfp_lex_init() + */ + return 0; +} + +/* ls_sfp_lex_destroy is for both reentrant and non-reentrant scanners. */ +int ls_sfp_lex_destroy (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + ls_sfp__delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); + YY_CURRENT_BUFFER_LVALUE = NULL; + ls_sfp_pop_buffer_state(yyscanner); + } + + /* Destroy the stack itself. */ + ls_sfp_free(yyg->yy_buffer_stack ,yyscanner); + yyg->yy_buffer_stack = NULL; + + /* Destroy the start condition stack. */ + ls_sfp_free(yyg->yy_start_stack ,yyscanner ); + yyg->yy_start_stack = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * ls_sfp_lex() is called, initialization will occur. */ + yy_init_globals( yyscanner); + + /* Destroy the main struct (reentrant only). */ + ls_sfp_free ( yyscanner , yyscanner ); + yyscanner = NULL; + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +#define YYTABLES_NAME "yytables" + +#line 464 "ls-sfparser.l" + + + +const char *const ls_sf_dt2str[] = +{ + [LS_SF_DT_INTEGER] = "INTEGER", + [LS_SF_DT_DECIMAL] = "DECIMAL", + [LS_SF_DT_NAME] = "NAME", + [LS_SF_DT_PARAM_NAME] = "PARAM_NAME", + [LS_SF_DT_STRING] = "STRING", + [LS_SF_DT_TOKEN] = "TOKEN", + [LS_SF_DT_BYTESEQ] = "BYTESEQ", + [LS_SF_DT_BOOLEAN] = "BOOLEAN", + [LS_SF_DT_INNER_LIST_BEGIN] = "INNER_LIST_BEGIN", + [LS_SF_DT_INNER_LIST_END] = "INNER_LIST_END", +}; + + +int +ls_sf_parse (enum ls_sf_tlt top_level_type, const char *input, size_t input_sz, + int (*callback)(void *user_data, enum ls_sf_dt, char *str, size_t, int), + void *user_data, char *mem_buf, size_t mem_buf_sz) +{ + struct ls_sf_parser parser; + yyscan_t scanner; + YY_BUFFER_STATE buf; + int ret; + + parser.top_level_type = top_level_type; + parser.callback = callback; + parser.user_data = user_data; + parser.errmsg = NULL; + parser.mem_failed = 0; + + if (mem_buf && mem_buf_sz) + { + parser.mem = mem_buf; + parser.mem_off = 0; + parser.mem_sz = mem_buf_sz; + parser.last_malloced = NULL; + } + else + parser.mem = NULL; + + if (0 != ls_sfp_lex_init_extra(&parser, &scanner)) + return -1; + + buf = ls_sfp__scan_bytes(input, input_sz, scanner); + if (buf) + { + ret = ls_sfp_lex(scanner); + if (parser.mem_failed) + ret = -2; + else if (parser.errmsg) + ret = -1; + ls_sfp__delete_buffer(buf, scanner); + } + else + ret = -2; + + ls_sfp_lex_destroy(scanner); + return ret; +} + + +void * +ls_sfp_alloc (size_t bytes, void *yyscanner) +{ + struct ls_sf_parser *const parser = ls_sfp_get_extra(yyscanner); + + if (parser->mem) + { + if (bytes + parser->mem_off < parser->mem_sz) + { + parser->last_malloced = parser->mem + parser->mem_off; + parser->mem_off += bytes; + return parser->last_malloced; + } + else + { + parser->mem_failed = 1; + return NULL; + } + } + else + return malloc(bytes); +} + + +#define MAX(a, b) ((a) > (b) ? (a) : (b)) + +void * +ls_sfp_realloc (void *ptr, size_t bytes, void *yyscanner) +{ + struct ls_sf_parser *const parser = ls_sfp_get_extra(yyscanner); + void *ret; + + if (parser->mem) + { + if ((char *) ptr == parser->last_malloced) + { + if (parser->last_malloced + bytes <= parser->mem + parser->mem_sz) + return ptr; + else + { + parser->mem_failed = 1; + return NULL; + } + } + else if (ret = ls_sfp_alloc(bytes, yyscanner), ret != NULL) + { + memcpy(ret, ptr, + /* We don't know how large it was, so just copy the max */ + MAX(bytes, (size_t) ( + parser->mem + parser->mem_sz - (char *) ptr))); + return ret; + } + else + { + parser->mem_failed = 1; + return NULL; + } + } + else + return realloc(ptr, bytes); +} + + +void +ls_sfp_free (void *ptr, void *yyscanner) +{ + struct ls_sf_parser *const parser = ls_sfp_get_extra(yyscanner); + + if (parser->mem) + { + if ((char *) ptr == parser->last_malloced) + parser->mem_off = parser->last_malloced - parser->mem; + } + else + free(ptr); +} + diff --git a/external/lsquic/src/liblsquic/ls-sfparser.h b/external/lsquic/src/liblsquic/ls-sfparser.h new file mode 100644 index 0000000..571f73b --- /dev/null +++ b/external/lsquic/src/liblsquic/ls-sfparser.h @@ -0,0 +1,129 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* +MIT License + +Copyright (c) 2020 LiteSpeed Technologies Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +/* The LiteSpeed Structured Fields Parser parses structured fields decribed in + * https://tools.ietf.org/html/draft-ietf-httpbis-header-structure-19 + * + * It provides a simple streaming interface which allows the user to process + * structured fields in any manner. + */ + +#ifndef LS_SFPARSER_H +#define LS_SFPARSER_H 1 + +enum ls_sf_dt +{ /* LS SF DT: LiteSpeed Structured Field Data Type */ + LS_SF_DT_INTEGER, + LS_SF_DT_DECIMAL, + + /* Name only applies to dictionary names. They may repeat: the + * parser does not drop duplicates. + */ + LS_SF_DT_NAME, + + /* Parameter name may apply to any applicable preceding Item or + * Inner List. + */ + LS_SF_DT_PARAM_NAME, + + /* The returned string does not include enclosing double quotes. */ + LS_SF_DT_STRING, + + LS_SF_DT_TOKEN, + + /* The byte sequence is not base64-decoded; it is up to the caller + * to do so. The returned string does not include the enclosing + * colons. + */ + LS_SF_DT_BYTESEQ, + + /* Note that true boolean values are serialized *without* the values. + * The parser makes one up and passes a pointer to its internal buffer. + */ + LS_SF_DT_BOOLEAN, + + /* The Inner List has a beginning and an end. The returned strings + * are opening and closing parentheses. + */ + LS_SF_DT_INNER_LIST_BEGIN, + LS_SF_DT_INNER_LIST_END, +}; + + +enum ls_sf_tlt +{ /* LS SF TLT: LiteSpeed Structured Field Top-Level Type */ + LS_SF_TLT_DICTIONARY, + LS_SF_TLT_LIST, + LS_SF_TLT_ITEM, +}; + + +/* Return 0 if parsed correctly, -1 on error, -2 if ran out of memory. */ +int +ls_sf_parse ( + /* Expected type of top-level input. This tells the parser how to + * parse the input. + */ + enum ls_sf_tlt, + + /* Input; does not have to be NUL-terminated: */ + const char *input, size_t input_sz, + + /* Callback function to call each time a token is parsed. A non-zero + * return value indicates that parsing should stop. + */ + int (*callback)( + /* The first argument to the callback is user-specified additional + * data. + */ + void *user_data, + /* The second argument is the data type. */ + enum ls_sf_dt, + /* The third and fourth arguments are NUL-terminated string and + * its length, respectively. The string can be modified, because + * the parser makes a copy. + */ + char *str, size_t len, + /* Offset to the token in the input buffer. In the special case + * of an implicit boolean value, this value is negative: this is + * because this value is not present in the input buffer. + */ + int off), + + /* Additional data to pass to the callback: */ + void *user_data, + + /* Allocate memory from this memory buffer. If set to NULL, regular + * system memory allocator will be used. + */ + char *mem_buf, size_t mem_buf_sz); + + + +/* Convenience array with type names. */ +extern const char *const ls_sf_dt2str[]; + + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic-config.cmake b/external/lsquic/src/liblsquic/lsquic-config.cmake new file mode 100644 index 0000000..d45b5bb --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic-config.cmake @@ -0,0 +1,4 @@ +@PACKAGE_INIT@ + +set_and_check(lsquic_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") +include("${CMAKE_CURRENT_LIST_DIR}/lsquic-targets.cmake") diff --git a/external/lsquic/src/liblsquic/lsquic_adaptive_cc.c b/external/lsquic/src/liblsquic/lsquic_adaptive_cc.c new file mode 100644 index 0000000..cc1aefa --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_adaptive_cc.c @@ -0,0 +1,212 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* lsquic_adaptive_cc.c -- adaptive congestion controller */ + +#include +#include +#include +#include +#include +#include +#ifdef WIN32 +#include +#endif + +#include "lsquic_int_types.h" +#include "lsquic_types.h" +#include "lsquic_hash.h" +#include "lsquic_util.h" +#include "lsquic_cong_ctl.h" +#include "lsquic_sfcw.h" +#include "lsquic_conn_flow.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_stream.h" +#include "lsquic_rtt.h" +#include "lsquic_conn_public.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_out.h" +#include "lsquic_bw_sampler.h" +#include "lsquic_minmax.h" +#include "lsquic_bbr.h" +#include "lsquic_cubic.h" +#include "lsquic_adaptive_cc.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_ADAPTIVE_CC +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(acc->acc_cubic.cu_conn) +#include "lsquic_logger.h" + + +#define CALL_BOTH(method, ...) do { \ + lsquic_cong_bbr_if.method(&acc->acc_bbr, __VA_ARGS__); \ + lsquic_cong_cubic_if.method(&acc->acc_cubic, __VA_ARGS__); \ +} while (0) + + +#define CALL_BOTH_MAYBE(method, ...) do { \ + if (lsquic_cong_bbr_if.method) \ + lsquic_cong_bbr_if.method(&acc->acc_bbr, __VA_ARGS__); \ + if (lsquic_cong_cubic_if.method) \ + lsquic_cong_cubic_if.method(&acc->acc_cubic, __VA_ARGS__); \ +} while (0) + + +#define CALL_BOTH0(method) do { \ + lsquic_cong_bbr_if.method(&acc->acc_bbr); \ + lsquic_cong_cubic_if.method(&acc->acc_cubic); \ +} while (0) + + +static void +adaptive_cc_init (void *cong_ctl, const struct lsquic_conn_public *conn_pub, + enum quic_ft_bit retx_frames) +{ + struct adaptive_cc *const acc = cong_ctl; + + CALL_BOTH(cci_init, conn_pub, retx_frames); + LSQ_DEBUG("initialized"); +} + + +static void +adaptive_cc_reinit (void *cong_ctl) +{ + struct adaptive_cc *const acc = cong_ctl; + + CALL_BOTH0(cci_reinit); +} + + +static void +adaptive_cc_ack (void *cong_ctl, struct lsquic_packet_out *packet_out, + unsigned packet_sz, lsquic_time_t now, int app_limited) +{ + struct adaptive_cc *const acc = cong_ctl; + + CALL_BOTH(cci_ack, packet_out, packet_sz, now, app_limited); +} + + +static void +adaptive_cc_loss (void *cong_ctl) +{ + struct adaptive_cc *const acc = cong_ctl; + + CALL_BOTH0(cci_loss); +} + + +static void +adaptive_cc_begin_ack (void *cong_ctl, lsquic_time_t ack_time, + uint64_t in_flight) +{ + struct adaptive_cc *const acc = cong_ctl; + + CALL_BOTH_MAYBE(cci_begin_ack, ack_time, in_flight); +} + + +static void +adaptive_cc_end_ack (void *cong_ctl, uint64_t in_flight) +{ + struct adaptive_cc *const acc = cong_ctl; + + CALL_BOTH_MAYBE(cci_end_ack, in_flight); +} + + +static void +adaptive_cc_sent (void *cong_ctl, struct lsquic_packet_out *packet_out, + uint64_t in_flight, int app_limited) +{ + struct adaptive_cc *const acc = cong_ctl; + + CALL_BOTH_MAYBE(cci_sent, packet_out, in_flight, app_limited); +} + + +static void +adaptive_cc_lost (void *cong_ctl, struct lsquic_packet_out *packet_out, + unsigned packet_sz) +{ + struct adaptive_cc *const acc = cong_ctl; + + CALL_BOTH_MAYBE(cci_lost, packet_out, packet_sz); +} + + +static void +adaptive_cc_timeout (void *cong_ctl) +{ + struct adaptive_cc *const acc = cong_ctl; + + CALL_BOTH0(cci_timeout); +} + + +static void +adaptive_cc_was_quiet (void *cong_ctl, lsquic_time_t now, uint64_t in_flight) +{ + struct adaptive_cc *const acc = cong_ctl; + + CALL_BOTH(cci_was_quiet, now, in_flight); +} + + +static uint64_t +adaptive_cc_get_cwnd (void *cong_ctl) +{ + struct adaptive_cc *const acc = cong_ctl; + uint64_t rv[2]; + + rv[0] = lsquic_cong_cubic_if.cci_get_cwnd(&acc->acc_cubic); + rv[1] = lsquic_cong_bbr_if.cci_get_cwnd(&acc->acc_bbr); + + if (acc->acc_flags & ACC_CUBIC) + return rv[0]; + else + return rv[1]; +} + + +static uint64_t +adaptive_cc_pacing_rate (void *cong_ctl, int in_recovery) +{ + struct adaptive_cc *const acc = cong_ctl; + uint64_t rv[2]; + + rv[0] = lsquic_cong_cubic_if.cci_pacing_rate(&acc->acc_cubic, in_recovery); + rv[1] = lsquic_cong_bbr_if.cci_pacing_rate(&acc->acc_bbr, in_recovery); + + if (acc->acc_flags & ACC_CUBIC) + return rv[0]; + else + return rv[1]; +} + + +static void +adaptive_cc_cleanup (void *cong_ctl) +{ + struct adaptive_cc *const acc = cong_ctl; + + CALL_BOTH0(cci_cleanup); + LSQ_DEBUG("cleanup"); +} + + +const struct cong_ctl_if lsquic_cong_adaptive_if = +{ + .cci_ack = adaptive_cc_ack, + .cci_begin_ack = adaptive_cc_begin_ack, + .cci_end_ack = adaptive_cc_end_ack, + .cci_cleanup = adaptive_cc_cleanup, + .cci_get_cwnd = adaptive_cc_get_cwnd, + .cci_init = adaptive_cc_init, + .cci_pacing_rate = adaptive_cc_pacing_rate, + .cci_loss = adaptive_cc_loss, + .cci_lost = adaptive_cc_lost, + .cci_reinit = adaptive_cc_reinit, + .cci_timeout = adaptive_cc_timeout, + .cci_sent = adaptive_cc_sent, + .cci_was_quiet = adaptive_cc_was_quiet, +}; diff --git a/external/lsquic/src/liblsquic/lsquic_adaptive_cc.h b/external/lsquic/src/liblsquic/lsquic_adaptive_cc.h new file mode 100644 index 0000000..36ea760 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_adaptive_cc.h @@ -0,0 +1,24 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_adaptive_cc.h -- Adaptive congestion controller + * + * The controller begins using BBRv1, but keeps Cubic state as well. + * When RTT is known, we pick either Cubic (small RTT) or BBRv1 (large + * RTT). + */ + +#ifndef LSQUIC_ADAPTIVE_CC_H +#define LSQUIC_ADAPTIVE_CC_H 1 + +struct adaptive_cc +{ + struct lsquic_cubic acc_cubic; + struct lsquic_bbr acc_bbr; + enum { + ACC_CUBIC = 1, /* If set, use Cubic; otherwise, use BBR */ + } acc_flags; +}; + +extern const struct cong_ctl_if lsquic_cong_adaptive_if; + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_alarmset.c b/external/lsquic/src/liblsquic/lsquic_alarmset.c new file mode 100644 index 0000000..3f777d0 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_alarmset.c @@ -0,0 +1,116 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_alarmset.c -- A set of alarms + */ + +#include +#include +#include + +#include "lsquic_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_alarmset.h" +#include "lsquic_util.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_ALARMSET +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(alset->as_conn) +#include "lsquic_logger.h" + + +void +lsquic_alarmset_init (lsquic_alarmset_t *alset, const struct lsquic_conn *conn) +{ + alset->as_conn = conn; + alset->as_armed_set = 0; +} + + +void +lsquic_alarmset_init_alarm (lsquic_alarmset_t *alset, enum alarm_id al_id, + lsquic_alarm_cb_f callback, void *cb_ctx) +{ + alset->as_alarms[ al_id ].callback = callback; + alset->as_alarms[ al_id ].cb_ctx = cb_ctx; +} + + +const char *const lsquic_alid2str[] = +{ + [AL_HANDSHAKE] = "HANDSHAKE", + [AL_RETX_INIT] = "RETX_INIT", + [AL_RETX_HSK] = "RETX_HSK", + [AL_RETX_APP] = "RETX_APP", + [AL_PING] = "PING", + [AL_IDLE] = "IDLE", + [AL_ACK_APP] = "ACK_APP", + [AL_RET_CIDS] = "RET_CIDS", + [AL_CID_THROT] = "CID_THROT", + [AL_PATH_CHAL_0] = "PATH_CHAL_0", + [AL_PATH_CHAL_1] = "PATH_CHAL_1", + [AL_PATH_CHAL_2] = "PATH_CHAL_2", + [AL_PATH_CHAL_3] = "PATH_CHAL_3", + [AL_SESS_TICKET] = "SESS_TICKET", + [AL_BLOCKED_KA] = "BLOCKED_KA", + [AL_MTU_PROBE] = "MTU_PROBE", + [AL_PACK_TOL] = "PACK_TOL", +}; + + +void +lsquic_alarmset_ring_expired (lsquic_alarmset_t *alset, lsquic_time_t now) +{ + enum alarm_id_bit armed_set; + enum alarm_id al_id; + + for (al_id = 0, armed_set = alset->as_armed_set; + al_id < MAX_LSQUIC_ALARMS && armed_set; + armed_set &= ~(1 << al_id), ++al_id) + if (armed_set & (1 << al_id)) + { + if (alset->as_expiry[al_id] < now) + { + alset->as_armed_set &= ~(1 << al_id); + LSQ_INFO("ring expired %s alarm", lsquic_alid2str[al_id]); + alset->as_alarms[al_id].callback(al_id, + alset->as_alarms[al_id].cb_ctx, + alset->as_expiry[al_id], now); + } + } +} + + +lsquic_time_t +lsquic_alarmset_mintime (const lsquic_alarmset_t *alset, enum alarm_id *idp) +{ + lsquic_time_t expiry; + enum alarm_id al_id, ret_id; + + if (alset->as_armed_set) + { + expiry = UINT64_MAX; + for (al_id = 0, ret_id = 0; al_id < MAX_LSQUIC_ALARMS; ++al_id) + if ((alset->as_armed_set & (1 << al_id)) + && alset->as_expiry[al_id] < expiry) + { + expiry = alset->as_expiry[al_id]; + ret_id = al_id; + } + *idp = ret_id; + return expiry; + } + else + return 0; +} + + +void +lsquic_alarmset_log (const lsquic_alarmset_t *alset, enum alarm_id id) +{ + if (LSQ_LOG_ENABLED(LSQ_LOG_DEBUG)) + { + lsquic_time_t now = lsquic_time_now(); + LSQ_DEBUG("set %s new %"PRIu64"; exp %"PRIu64" diff %"PRIu64, + lsquic_alid2str[id], now, alset->as_expiry[id], + alset->as_expiry[id] - now); + } +} diff --git a/external/lsquic/src/liblsquic/lsquic_alarmset.h b/external/lsquic/src/liblsquic/lsquic_alarmset.h new file mode 100644 index 0000000..3bbab1a --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_alarmset.h @@ -0,0 +1,116 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_alarmset.h -- A set of alarms + */ + +#ifndef LSQUIC_ALARM_H +#define LSQUIC_ALARM_H 1 + +#include "lsquic_int_types.h" + +enum alarm_id; +struct lsquic_conn; + +typedef void (*lsquic_alarm_cb_f)(enum alarm_id, void *cb_ctx, + lsquic_time_t expiry, lsquic_time_t now); + +typedef struct lsquic_alarm { + lsquic_alarm_cb_f callback; + void *cb_ctx; +} lsquic_alarm_t; + + +enum alarm_id { + AL_HANDSHAKE, + AL_RETX_INIT, + AL_RETX_HSK = AL_RETX_INIT + PNS_HSK, + AL_RETX_APP = AL_RETX_INIT + PNS_APP, + AL_PING, + AL_MTU_PROBE, + AL_IDLE, + AL_ACK_APP, + AL_RET_CIDS, + AL_CID_THROT, + AL_PATH_CHAL, + AL_PATH_CHAL_0 = AL_PATH_CHAL, + AL_PATH_CHAL_1, + AL_PATH_CHAL_2, + AL_PATH_CHAL_3, + AL_SESS_TICKET, + AL_BLOCKED_KA, /* Blocked Keep-Alive */ + AL_PACK_TOL, /* Calculate packet tolerance */ + MAX_LSQUIC_ALARMS +}; + + +enum alarm_id_bit { + ALBIT_HANDSHAKE = 1 << AL_HANDSHAKE, + ALBIT_RETX_INIT = 1 << AL_RETX_INIT, + ALBIT_RETX_HSK = 1 << AL_RETX_HSK, + ALBIT_RETX_APP = 1 << AL_RETX_APP, + ALBIT_ACK_APP = 1 << AL_ACK_APP, + ALBIT_PING = 1 << AL_PING, + ALBIT_IDLE = 1 << AL_IDLE, + ALBIT_RET_CIDS = 1 << AL_RET_CIDS, + ALBIT_CID_THROT = 1 << AL_CID_THROT, + ALBIT_PATH_CHAL_0 = 1 << AL_PATH_CHAL_0, + ALBIT_PATH_CHAL_1 = 1 << AL_PATH_CHAL_1, + ALBIT_PATH_CHAL_2 = 1 << AL_PATH_CHAL_2, + ALBIT_PATH_CHAL_3 = 1 << AL_PATH_CHAL_3, + ALBIT_SESS_TICKET = 1 << AL_SESS_TICKET, + ALBIT_BLOCKED_KA = 1 << AL_BLOCKED_KA, + ALBIT_MTU_PROBE = 1 << AL_MTU_PROBE, + ALBIT_PACK_TOL = 1 << AL_PACK_TOL, +}; + + +typedef struct lsquic_alarmset { + enum alarm_id_bit as_armed_set; + lsquic_time_t as_expiry[MAX_LSQUIC_ALARMS]; + const struct lsquic_conn *as_conn; /* Used for logging */ + struct lsquic_alarm as_alarms[MAX_LSQUIC_ALARMS]; +} lsquic_alarmset_t; + + +void +lsquic_alarmset_init (lsquic_alarmset_t *, const struct lsquic_conn *); + +void +lsquic_alarmset_init_alarm (lsquic_alarmset_t *, enum alarm_id, + lsquic_alarm_cb_f, void *cb_ctx); + +void +lsquic_alarmset_log (const lsquic_alarmset_t *alset, enum alarm_id id); + +static inline void +lsquic_alarmset_set (lsquic_alarmset_t *alarmset, enum alarm_id al_id, + lsquic_time_t exp) +{ + alarmset->as_armed_set |= 1 << al_id; + alarmset->as_expiry[al_id] = exp; + //lsquic_alarmset_log(alarmset, al_id); +} + +static inline void +lsquic_alarmset_unset (lsquic_alarmset_t *alarmset, enum alarm_id al_id) +{ alarmset->as_armed_set &= ~(1 << al_id); } + +static inline unsigned +lsquic_alarmset_is_set (const lsquic_alarmset_t *alarmset, enum alarm_id al_id) +{ return alarmset->as_armed_set & (1 << al_id); } + +static inline unsigned +lsquic_alarmset_is_inited (const lsquic_alarmset_t *alarmset, + enum alarm_id al_id) +{ return alarmset->as_alarms[al_id].callback != NULL; } + +/* Timers "fire," alarms "ring." */ +void +lsquic_alarmset_ring_expired (lsquic_alarmset_t *, lsquic_time_t now); + +lsquic_time_t +lsquic_alarmset_mintime (const lsquic_alarmset_t *, enum alarm_id *); + +extern const char *const lsquic_alid2str[]; + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_arr.c b/external/lsquic/src/liblsquic/lsquic_arr.c new file mode 100644 index 0000000..e3828c5 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_arr.c @@ -0,0 +1,53 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_arr.c + */ + +#include "lsquic_arr.h" + +int +lsquic_arr_push (struct lsquic_arr *arr, uintptr_t val) +{ + uintptr_t *new_els; + unsigned n; + + if (arr->off + arr->nelem < arr->nalloc) + { + arr->els[arr->off + arr->nelem] = val; + ++arr->nelem; + return 0; + } + + if (arr->off > arr->nalloc / 2) + { + memmove(arr->els, arr->els + arr->off, + sizeof(arr->els[0]) * arr->nelem); + arr->off = 0; + arr->els[arr->nelem] = val; + ++arr->nelem; + return 0; + } + + if (arr->nalloc) + n = arr->nalloc * 2; + else + n = 64; + new_els = malloc(n * sizeof(arr->els[0])); + if (!new_els) + return -1; + memcpy(new_els, arr->els + arr->off, sizeof(arr->els[0]) * arr->nelem); + free(arr->els); + arr->off = 0; + arr->els = new_els; + arr->nalloc = n; + arr->els[arr->off + arr->nelem] = val; + ++arr->nelem; + return 0; +} + + +size_t +lsquic_arr_mem_used (const struct lsquic_arr *arr) +{ + return sizeof(*arr) + arr->nalloc * sizeof(arr->els[0]); +} diff --git a/external/lsquic/src/liblsquic/lsquic_arr.h b/external/lsquic/src/liblsquic/lsquic_arr.h new file mode 100644 index 0000000..600e522 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_arr.h @@ -0,0 +1,94 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_arr.h -- Array + */ + +#ifndef LSQUIC_ARR_H +#define LSQUIC_ARR_H 1 + +#include +#include +#include +#include + +struct lsquic_arr +{ + unsigned nalloc, + nelem, + off; + uintptr_t *els; +}; + + +static inline void +lsquic_arr_init (struct lsquic_arr *a) +{ + memset(a, 0, sizeof(*a)); +} + + +static inline void +lsquic_arr_cleanup (struct lsquic_arr *a) +{ + free(a->els); + memset(a, 0, sizeof(*a)); +} + + +static inline void +lsquic_arr_clear (struct lsquic_arr *a) +{ + a->off = 0; + a->nelem = 0; +} + + +static inline uintptr_t +lsquic_arr_get (struct lsquic_arr *a, unsigned i) +{ + assert(i < a->nelem); + return a->els[a->off + i]; +} + + +static inline uintptr_t +lsquic_arr_shift (struct lsquic_arr *a) +{ + assert(a->nelem > 0); + a->nelem -= 1; + return a->els[a->off++]; +} + + +static inline uintptr_t +lsquic_arr_peek (struct lsquic_arr *a) +{ + assert(a->nelem > 0); + return a->els[a->off]; +} + + +static inline uintptr_t +lsquic_arr_pop (struct lsquic_arr *a) +{ + assert(a->nelem > 0); + a->nelem -= 1; + return a->els[a->off + a->nelem]; +} + + +static inline unsigned +lsquic_arr_count (struct lsquic_arr *a) +{ + return +a->nelem; +} + + +int +lsquic_arr_push (struct lsquic_arr *, uintptr_t); + + +size_t +lsquic_arr_mem_used (const struct lsquic_arr *); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_attq.c b/external/lsquic/src/liblsquic/lsquic_attq.c new file mode 100644 index 0000000..4a3eb59 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_attq.c @@ -0,0 +1,287 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_attq.c -- Advisory Tick Time Queue + * + * This is a collection of connections kept in a binary heap, the top + * element having the minimum advsory time. To speed up removal, each + * element has an index it has in the heap array. The index is updated + * as elements are moved around in the array when heap is updated. + */ + +#include +#include +#ifdef WIN32 +#include +#endif +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_attq.h" +#include "lsquic_packet_common.h" +#include "lsquic_alarmset.h" +#include "lsquic_malo.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" + + +struct attq +{ + struct malo *aq_elem_malo; + struct attq_elem **aq_heap; + unsigned aq_nelem; + unsigned aq_nalloc; +}; + + +struct attq * +lsquic_attq_create (void) +{ + struct attq *q; + struct malo *malo; + + malo = lsquic_malo_create(sizeof(struct attq_elem)); + if (!malo) + return NULL; + + q = calloc(1, sizeof(*q)); + if (!q) + { + lsquic_malo_destroy(malo); + return NULL; + } + + q->aq_elem_malo = malo; + return q; +} + + +void +lsquic_attq_destroy (struct attq *q) +{ + lsquic_malo_destroy(q->aq_elem_malo); + free(q->aq_heap); + free(q); +} + + + +#define AE_PARENT(i) ((i - 1) / 2) +#define AE_LCHILD(i) (2 * i + 1) +#define AE_RCHILD(i) (2 * i + 2) + + +#if LSQUIC_EXTRA_CHECKS && !defined(NDEBUG) +static void +attq_verify (struct attq *q) +{ + unsigned i; + + for (i = 0; i < q->aq_nelem; ++i) + { + assert(q->aq_heap[i]->ae_heap_idx == i); + if (AE_LCHILD(i) < q->aq_nelem) + assert(q->aq_heap[i]->ae_adv_time <= + q->aq_heap[AE_LCHILD(i)]->ae_adv_time); + if (AE_RCHILD(i) < q->aq_nelem) + assert(q->aq_heap[i]->ae_adv_time <= + q->aq_heap[AE_RCHILD(i)]->ae_adv_time); + } +} +#else +#define attq_verify(q) +#endif + + +static void +attq_swap (struct attq *q, unsigned a, unsigned b) +{ + struct attq_elem *el; + + el = q->aq_heap[ a ]; + q->aq_heap[ a ] = q->aq_heap[ b ]; + q->aq_heap[ b ] = el; + q->aq_heap[ a ]->ae_heap_idx = a; + q->aq_heap[ b ]->ae_heap_idx = b; +} + + +int +lsquic_attq_add (struct attq *q, struct lsquic_conn *conn, + lsquic_time_t advisory_time, enum ae_why why) +{ + struct attq_elem *el, **heap; + unsigned n, i; + + if (q->aq_nelem >= q->aq_nalloc) + { + if (q->aq_nalloc > 0) + n = q->aq_nalloc * 2; + else + n = 8; + heap = realloc(q->aq_heap, n * sizeof(q->aq_heap[0])); + if (!heap) + return -1; + q->aq_heap = heap; + q->aq_nalloc = n; + } + + el = lsquic_malo_get(q->aq_elem_malo); + if (!el) + return -1; + el->ae_adv_time = advisory_time; + el->ae_why = why; + + /* The only place linkage between conn and attq_elem occurs: */ + el->ae_conn = conn; + conn->cn_attq_elem = el; + + el->ae_heap_idx = q->aq_nelem; + q->aq_heap[ q->aq_nelem++ ] = el; + + i = q->aq_nelem - 1; + while (i > 0 && q->aq_heap[ AE_PARENT(i) ]->ae_adv_time >= + q->aq_heap[ i ]->ae_adv_time) + { + attq_swap(q, i, AE_PARENT(i)); + i = AE_PARENT(i); + } + + attq_verify(q); + + return 0; +} + + +struct lsquic_conn * +lsquic_attq_pop (struct attq *q, lsquic_time_t cutoff) +{ + struct lsquic_conn *conn; + struct attq_elem *el; + + if (q->aq_nelem == 0) + return NULL; + + el = q->aq_heap[0]; + if (el->ae_adv_time >= cutoff) + return NULL; + + conn = el->ae_conn; + lsquic_attq_remove(q, conn); + return conn; +} + + +static void +attq_heapify (struct attq *q, unsigned i) +{ + unsigned smallest; + + assert(i < q->aq_nelem); + + if (AE_LCHILD(i) < q->aq_nelem) + { + if (q->aq_heap[ AE_LCHILD(i) ]->ae_adv_time < + q->aq_heap[ i ]->ae_adv_time) + smallest = AE_LCHILD(i); + else + smallest = i; + if (AE_RCHILD(i) < q->aq_nelem && + q->aq_heap[ AE_RCHILD(i) ]->ae_adv_time < + q->aq_heap[ smallest ]->ae_adv_time) + smallest = AE_RCHILD(i); + } + else + smallest = i; + + if (smallest != i) + { + attq_swap(q, smallest, i); + attq_heapify(q, smallest); + } +} + + +void +lsquic_attq_remove (struct attq *q, struct lsquic_conn *conn) +{ + struct attq_elem *el; + unsigned idx; + + el = conn->cn_attq_elem; + idx = el->ae_heap_idx; + + assert(q->aq_nelem > 0); + assert(q->aq_heap[idx] == el); + assert(conn->cn_attq_elem == el); + + conn->cn_attq_elem = NULL; + + q->aq_heap[ idx ] = q->aq_heap[ --q->aq_nelem ]; + q->aq_heap[ idx ]->ae_heap_idx = idx; + if (idx > 0 && q->aq_heap[ idx ]->ae_adv_time < + q->aq_heap[ AE_PARENT(idx) ]->ae_adv_time) + { + do + { + attq_swap(q, idx, AE_PARENT(idx)); + idx = AE_PARENT(idx); + } + while (idx > 0 && q->aq_heap[ idx ]->ae_adv_time < + q->aq_heap[ AE_PARENT(idx) ]->ae_adv_time); + } + else if (q->aq_nelem > 1 && idx < q->aq_nelem) + attq_heapify(q, idx); + lsquic_malo_put(el); + attq_verify(q); +} + + +unsigned +lsquic_attq_count_before (struct attq *q, lsquic_time_t cutoff) +{ + unsigned level, total_count, level_count, i, level_max; + + total_count = 0; + for (i = 0, level = 0;; ++level) + { + level_count = 0; + level_max = i + (1U << level); + for ( ; i < level_max && i < q->aq_nelem; ++i) + level_count += q->aq_heap[i]->ae_adv_time < cutoff; + total_count += level_count; + if (level_count < (1U << level)) + return total_count; + } + assert(0); + return total_count; +} + + +const struct attq_elem * +lsquic_attq_next (struct attq *q) +{ + if (q->aq_nelem > 0) + return q->aq_heap[0]; + else + return NULL; +} + + +const char * +lsquic_attq_why2str (enum ae_why why) +{ + switch (why) + { + case AEW_PACER: + return "PACER"; + case AEW_MINI_EXPIRE: + return "MINI-EXPIRE"; + default: + why -= N_AEWS; + if ((unsigned) why < (unsigned) MAX_LSQUIC_ALARMS) + return lsquic_alid2str[why]; + return "UNKNOWN"; + } +} diff --git a/external/lsquic/src/liblsquic/lsquic_attq.h b/external/lsquic/src/liblsquic/lsquic_attq.h new file mode 100644 index 0000000..c13c80d --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_attq.h @@ -0,0 +1,59 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_attq.h -- Advisory Tick Time Queue + */ + +#ifndef LSQUIC_ATTQ_H +#define LSQUIC_ATTQ_H + +struct attq; +struct lsquic_conn; + + +/* The extra level of indirection is done for speed: swapping heap elements + * does not need memory associated with lsquic_conn. + */ +struct attq_elem +{ + struct lsquic_conn *ae_conn; + lsquic_time_t ae_adv_time; + unsigned ae_heap_idx; + /* The "why" describes why the connection is in the Advisory Tick Time + * Queue. Values past the range describe different alarm types (see + * enum alarm_id). + */ + enum ae_why { + AEW_PACER, + AEW_MINI_EXPIRE, + N_AEWS + } ae_why; +}; + + +struct attq * +lsquic_attq_create (void); + +void +lsquic_attq_destroy (struct attq *); + +/* Return 0 on success, -1 on failure (malloc) */ +int +lsquic_attq_add (struct attq *, struct lsquic_conn *, lsquic_time_t advisory_time, + enum ae_why); + +void +lsquic_attq_remove (struct attq *, struct lsquic_conn *); + +struct lsquic_conn * +lsquic_attq_pop (struct attq *, lsquic_time_t cutoff); + +unsigned +lsquic_attq_count_before (struct attq *, lsquic_time_t cutoff); + +const struct attq_elem * +lsquic_attq_next (struct attq *); + +const char * +lsquic_attq_why2str (enum ae_why); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_bbr.c b/external/lsquic/src/liblsquic/lsquic_bbr.c new file mode 100644 index 0000000..5bd83a7 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_bbr.c @@ -0,0 +1,1086 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE.chrome file. + +#include +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_cong_ctl.h" +#include "lsquic_minmax.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_out.h" +#include "lsquic_bw_sampler.h" +#include "lsquic_bbr.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_sfcw.h" +#include "lsquic_conn_flow.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_stream.h" +#include "lsquic_rtt.h" +#include "lsquic_conn_public.h" +#include "lsquic_util.h" +#include "lsquic_malo.h" +#include "lsquic_crand.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_BBR +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(bbr->bbr_conn_pub->lconn) +#include "lsquic_logger.h" + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define MAX(a, b) ((a) > (b) ? (a) : (b)) + +#define ms(val_) ((val_) * 1000) +#define sec(val_) ((val_) * 1000 * 1000) + +// Default maximum packet size used in the Linux TCP implementation. +// Used in QUIC for congestion window computations in bytes. +#define kDefaultTCPMSS 1460 +#define kMaxSegmentSize kDefaultTCPMSS + +// Constants based on TCP defaults. +// The minimum CWND to ensure delayed acks don't reduce bandwidth measurements. +// Does not inflate the pacing rate. +#define kDefaultMinimumCongestionWindow (4 * kDefaultTCPMSS) + +// The gain used for the STARTUP, equal to 2/ln(2). +#define kDefaultHighGain 2.885f + +// The newly derived gain for STARTUP, equal to 4 * ln(2) +#define kDerivedHighGain 2.773f + +// The newly derived CWND gain for STARTUP, 2. +#define kDerivedHighCWNDGain 2.0f + +// The gain used in STARTUP after loss has been detected. +// 1.5 is enough to allow for 25% exogenous loss and still observe a 25% growth +// in measured bandwidth. +#define kStartupAfterLossGain 1.5f + +// We match SPDY's use of 32 (since we'd compete with SPDY). +#define kInitialCongestionWindow 32 + +/* Taken from send_algorithm_interface.h */ +#define kDefaultMaxCongestionWindowPackets 2000 + +// The time after which the current min_rtt value expires. +#define kMinRttExpiry sec(10) + +// Coefficient to determine if a new RTT is sufficiently similar to min_rtt that +// we don't need to enter PROBE_RTT. +#define kSimilarMinRttThreshold 1.125f + +// If the bandwidth does not increase by the factor of |kStartupGrowthTarget| +// within |kRoundTripsWithoutGrowthBeforeExitingStartup| rounds, the connection +// will exit the STARTUP mode. +#define kStartupGrowthTarget 1.25 + +#define kRoundTripsWithoutGrowthBeforeExitingStartup 3 + +#define startup_rate_reduction_multiplier_ 0 + +// The cycle of gains used during the PROBE_BW stage. +static const float kPacingGain[] = {1.25, 0.75, 1, 1, 1, 1, 1, 1}; + +// The length of the gain cycle. +static const size_t kGainCycleLength = sizeof(kPacingGain) + / sizeof(kPacingGain[0]); + +// Coefficient of target congestion window to use when basing PROBE_RTT on BDP. +#define kModerateProbeRttMultiplier 0.75 + +// The maximum packet size of any QUIC packet over IPv6, based on ethernet's max +// size, minus the IP and UDP headers. IPv6 has a 40 byte header, UDP adds an +// additional 8 bytes. This is a total overhead of 48 bytes. Ethernet's +// max packet size is 1500 bytes, 1500 - 48 = 1452. +#define kMaxV6PacketSize 1452 +// The maximum packet size of any QUIC packet over IPv4. +// 1500(Ethernet) - 20(IPv4 header) - 8(UDP header) = 1472. +#define kMaxV4PacketSize 1472 +// The maximum incoming packet size allowed. +#define kMaxIncomingPacketSize kMaxV4PacketSize +// The maximum outgoing packet size allowed. +#define kMaxOutgoingPacketSize kMaxV6PacketSize + +// The minimum time the connection can spend in PROBE_RTT mode. +#define kProbeRttTime ms(200) + +/* FLAG* are from net/quic/quic_flags_list.h */ + +// When in STARTUP and recovery, do not add bytes_acked to QUIC BBR's CWND in +// CalculateCongestionWindow() +#define FLAGS_quic_bbr_no_bytes_acked_in_startup_recovery 0 + +// When true, ensure BBR allows at least one MSS to be sent in response to an +// ACK in packet conservation. +#define FLAG_quic_bbr_one_mss_conservation 0 + +/* From net/quic/quic_flags_list.h */ +#define kCwndGain 2.0 + + +static uint64_t lsquic_bbr_get_cwnd (void *); + + +static const char *const mode2str[] = +{ + [BBR_MODE_STARTUP] = "STARTUP", + [BBR_MODE_DRAIN] = "DRAIN", + [BBR_MODE_PROBE_BW] = "PROBE_BW", + [BBR_MODE_PROBE_RTT] = "PROBE_RTT", +}; + + +static void +set_mode (struct lsquic_bbr *bbr, enum bbr_mode mode) +{ + if (bbr->bbr_mode != mode) + { + LSQ_DEBUG("mode change %s -> %s", mode2str[bbr->bbr_mode], + mode2str[mode]); + bbr->bbr_mode = mode; + } + else + LSQ_DEBUG("mode remains %s", mode2str[mode]); +} + + +static void +set_startup_values (struct lsquic_bbr *bbr) +{ + bbr->bbr_pacing_gain = bbr->bbr_high_gain; + bbr->bbr_cwnd_gain = bbr->bbr_high_cwnd_gain; +} + + +static void +init_bbr (struct lsquic_bbr *bbr) +{ + bbr->bbr_mode = BBR_MODE_STARTUP; + bbr->bbr_round_count = 0; + minmax_init(&bbr->bbr_max_bandwidth, 10); + minmax_init(&bbr->bbr_max_ack_height, 10); + bbr->bbr_aggregation_epoch_bytes = 0; + bbr->bbr_aggregation_epoch_start_time = 0; + bbr->bbr_min_rtt = 0; + bbr->bbr_min_rtt_timestamp = 0; + bbr->bbr_init_cwnd = kInitialCongestionWindow * kDefaultTCPMSS; + bbr->bbr_cwnd = kInitialCongestionWindow * kDefaultTCPMSS; + bbr->bbr_max_cwnd = kDefaultMaxCongestionWindowPackets * kDefaultTCPMSS; + bbr->bbr_min_cwnd = kDefaultMinimumCongestionWindow; + bbr->bbr_high_gain = kDefaultHighGain; + bbr->bbr_high_cwnd_gain = kDefaultHighGain; + bbr->bbr_drain_gain = 1.0f / kDefaultHighGain; + bbr->bbr_pacing_rate = BW_ZERO(); + bbr->bbr_pacing_gain = 1.0; + bbr->bbr_cwnd_gain = 1.0; + bbr->bbr_num_startup_rtts = kRoundTripsWithoutGrowthBeforeExitingStartup; + bbr->bbr_flags &= ~BBR_FLAG_EXIT_STARTUP_ON_LOSS; + bbr->bbr_cycle_current_offset = 0; + bbr->bbr_last_cycle_start = 0; + bbr->bbr_flags &= ~BBR_FLAG_IS_AT_FULL_BANDWIDTH; + bbr->bbr_round_wo_bw_gain = 0; + bbr->bbr_bw_at_last_round = BW_ZERO(); + bbr->bbr_flags &= ~BBR_FLAG_EXITING_QUIESCENCE; + bbr->bbr_exit_probe_rtt_at = 0; + bbr->bbr_flags &= ~BBR_FLAG_PROBE_RTT_ROUND_PASSED; + bbr->bbr_flags &= ~BBR_FLAG_LAST_SAMPLE_APP_LIMITED; + bbr->bbr_flags &= ~BBR_FLAG_HAS_NON_APP_LIMITED; + bbr->bbr_flags &= ~BBR_FLAG_FLEXIBLE_APP_LIMITED; + set_startup_values(bbr); +} + + +static void +lsquic_bbr_init (void *cong_ctl, const struct lsquic_conn_public *conn_pub, + enum quic_ft_bit retx_frames) +{ + struct lsquic_bbr *const bbr = cong_ctl; + bbr->bbr_conn_pub = conn_pub; + lsquic_bw_sampler_init(&bbr->bbr_bw_sampler, conn_pub->lconn, retx_frames); + bbr->bbr_rtt_stats = &conn_pub->rtt_stats; + + init_bbr(bbr); + + LSQ_DEBUG("initialized"); +} + + +static void +lsquic_bbr_reinit (void *cong_ctl) +{ + struct lsquic_bbr *const bbr = cong_ctl; + + init_bbr(bbr); + + LSQ_DEBUG("re-initialized"); +} + + +static lsquic_time_t +get_min_rtt (const struct lsquic_bbr *bbr) +{ + lsquic_time_t min_rtt; + + if (bbr->bbr_min_rtt) + return bbr->bbr_min_rtt; + else + { + min_rtt = lsquic_rtt_stats_get_min_rtt(bbr->bbr_rtt_stats); + if (min_rtt == 0) + min_rtt = 25000; + return min_rtt; + } +} + + +static uint64_t +lsquic_bbr_pacing_rate (void *cong_ctl, int in_recovery) +{ + struct lsquic_bbr *const bbr = cong_ctl; + lsquic_time_t min_rtt; + struct bandwidth bw; + + if (!BW_IS_ZERO(&bbr->bbr_pacing_rate)) + bw = bbr->bbr_pacing_rate; + else + { + min_rtt = get_min_rtt(bbr); + bw = BW_FROM_BYTES_AND_DELTA(bbr->bbr_init_cwnd, min_rtt); + bw = BW_TIMES(&bw, bbr->bbr_high_cwnd_gain); + } + + return BW_TO_BYTES_PER_SEC(&bw); +} + + +/* BbrSender::GetTargetCongestionWindow */ +static uint64_t +get_target_cwnd (const struct lsquic_bbr *bbr, float gain) +{ + struct bandwidth bw; + uint64_t bdp, cwnd; + + bw = BW(minmax_get(&bbr->bbr_max_bandwidth)); + bdp = get_min_rtt(bbr) * BW_TO_BYTES_PER_SEC(&bw) / 1000000; + cwnd = gain * bdp; + + // BDP estimate will be zero if no bandwidth samples are available yet. + if (cwnd == 0) + cwnd = gain * bbr->bbr_init_cwnd; + + return MAX(cwnd, bbr->bbr_min_cwnd); +} + + +/* See BbrSender::IsPipeSufficientlyFull */ +static int +is_pipe_sufficiently_full (struct lsquic_bbr *bbr, uint64_t bytes_in_flight) +{ + // See if we need more bytes in flight to see more bandwidth. + if (bbr->bbr_mode == BBR_MODE_STARTUP) + // STARTUP exits if it doesn't observe a 25% bandwidth increase, so + // the CWND must be more than 25% above the target. + return bytes_in_flight >= get_target_cwnd(bbr, 1.5); + else if (bbr->bbr_pacing_gain > 1) + // Super-unity PROBE_BW doesn't exit until 1.25 * BDP is achieved. + return bytes_in_flight >= get_target_cwnd(bbr, bbr->bbr_pacing_gain); + else + // If bytes_in_flight are above the target congestion window, it should + // be possible to observe the same or more bandwidth if it's available. + return bytes_in_flight >= get_target_cwnd(bbr, 1.1f); +} + + +static void +lsquic_bbr_was_quiet (void *cong_ctl, lsquic_time_t now, uint64_t in_flight) +{ + struct lsquic_bbr *const bbr = cong_ctl; + LSQ_DEBUG("was quiet"); /* Do nothing */ +} + + +/* See BbrSender::OnApplicationLimited */ +static void +bbr_app_limited (struct lsquic_bbr *bbr, uint64_t bytes_in_flight) +{ + uint64_t cwnd; + + cwnd = lsquic_bbr_get_cwnd(bbr); + if (bytes_in_flight >= cwnd) + return; + if ((bbr->bbr_flags & BBR_FLAG_FLEXIBLE_APP_LIMITED) + && is_pipe_sufficiently_full(bbr, bytes_in_flight)) + return; + + bbr->bbr_flags |= BBR_FLAG_APP_LIMITED_SINCE_LAST_PROBE_RTT; + lsquic_bw_sampler_app_limited(&bbr->bbr_bw_sampler); + LSQ_DEBUG("becoming application-limited. Last sent packet: %"PRIu64"; " + "CWND: %"PRIu64, bbr->bbr_last_sent_packno, cwnd); +} + + +static void +lsquic_bbr_ack (void *cong_ctl, struct lsquic_packet_out *packet_out, + unsigned packet_sz, lsquic_time_t now_time, int app_limited) +{ + struct lsquic_bbr *const bbr = cong_ctl; + struct bw_sample *sample; + + assert(bbr->bbr_flags & BBR_FLAG_IN_ACK); + + sample = lsquic_bw_sampler_packet_acked(&bbr->bbr_bw_sampler, packet_out, + bbr->bbr_ack_state.ack_time); + if (sample) + TAILQ_INSERT_TAIL(&bbr->bbr_ack_state.samples, sample, next); + + if (!is_valid_packno(bbr->bbr_ack_state.max_packno) + /* Packet ordering is checked for, and warned about, in + * lsquic_senhist_add(). + */ + || packet_out->po_packno > bbr->bbr_ack_state.max_packno) + bbr->bbr_ack_state.max_packno = packet_out->po_packno; + bbr->bbr_ack_state.acked_bytes += packet_sz; +} + + +static void +lsquic_bbr_sent (void *cong_ctl, struct lsquic_packet_out *packet_out, + uint64_t in_flight, int app_limited) +{ + struct lsquic_bbr *const bbr = cong_ctl; + + if (!(packet_out->po_flags & PO_MINI)) + lsquic_bw_sampler_packet_sent(&bbr->bbr_bw_sampler, packet_out, + in_flight); + + /* Obviously we make an assumption that sent packet number are always + * increasing. + */ + bbr->bbr_last_sent_packno = packet_out->po_packno; + + if (app_limited) + bbr_app_limited(bbr, in_flight); +} + + +static void +lsquic_bbr_lost (void *cong_ctl, struct lsquic_packet_out *packet_out, + unsigned packet_sz) +{ + struct lsquic_bbr *const bbr = cong_ctl; + + lsquic_bw_sampler_packet_lost(&bbr->bbr_bw_sampler, packet_out); + bbr->bbr_ack_state.has_losses = 1; + bbr->bbr_ack_state.lost_bytes += packet_sz; +} + + +static void +lsquic_bbr_begin_ack (void *cong_ctl, lsquic_time_t ack_time, uint64_t in_flight) +{ + struct lsquic_bbr *const bbr = cong_ctl; + + assert(!(bbr->bbr_flags & BBR_FLAG_IN_ACK)); + bbr->bbr_flags |= BBR_FLAG_IN_ACK; + memset(&bbr->bbr_ack_state, 0, sizeof(bbr->bbr_ack_state)); + TAILQ_INIT(&bbr->bbr_ack_state.samples); + bbr->bbr_ack_state.ack_time = ack_time; + bbr->bbr_ack_state.max_packno = UINT64_MAX; + bbr->bbr_ack_state.in_flight = in_flight; + bbr->bbr_ack_state.total_bytes_acked_before + = lsquic_bw_sampler_total_acked(&bbr->bbr_bw_sampler); +} + + +/* Based on BbrSender::ShouldExtendMinRttExpiry() */ +static int +should_extend_min_rtt_expiry (const struct lsquic_bbr *bbr) +{ + int increased_since_last_probe; + + if ((bbr->bbr_flags & (BBR_FLAG_APP_LIMITED_SINCE_LAST_PROBE_RTT + |BBR_FLAG_PROBE_RTT_DISABLED_IF_APP_LIMITED)) + == (BBR_FLAG_APP_LIMITED_SINCE_LAST_PROBE_RTT + |BBR_FLAG_PROBE_RTT_DISABLED_IF_APP_LIMITED)) + // Extend the current min_rtt if we've been app limited recently. + return 1; + + increased_since_last_probe = bbr->bbr_min_rtt_since_last_probe + > bbr->bbr_min_rtt * kSimilarMinRttThreshold; + if ((bbr->bbr_flags & (BBR_FLAG_APP_LIMITED_SINCE_LAST_PROBE_RTT + |BBR_FLAG_PROBE_RTT_SKIPPED_IF_SIMILAR_RTT)) + == (BBR_FLAG_APP_LIMITED_SINCE_LAST_PROBE_RTT + |BBR_FLAG_PROBE_RTT_SKIPPED_IF_SIMILAR_RTT) + && !increased_since_last_probe) + // Extend the current min_rtt if we've been app limited recently and an + // rtt has been measured in that time that's less than 12.5% more than + // the current min_rtt. + return 1; + + return 0; +} + + +/* Based on BbrSender::UpdateBandwidthAndMinRtt */ +/* Returns true if min RTT expired, false otherwise */ +static int +update_bandwidth_and_min_rtt (struct lsquic_bbr *bbr) +{ + struct bw_sample *sample, *next_sample; + uint64_t sample_min_rtt; + int min_rtt_expired; + + sample_min_rtt = UINT64_MAX; + for (sample = TAILQ_FIRST(&bbr->bbr_ack_state.samples); sample; + sample = next_sample) + { + next_sample = TAILQ_NEXT(sample, next); + + if (sample->is_app_limited) + bbr->bbr_flags |= BBR_FLAG_LAST_SAMPLE_APP_LIMITED; + else + { + bbr->bbr_flags &= ~BBR_FLAG_LAST_SAMPLE_APP_LIMITED; + bbr->bbr_flags |= BBR_FLAG_HAS_NON_APP_LIMITED; + } + + if (sample_min_rtt == UINT64_MAX || sample->rtt < sample_min_rtt) + sample_min_rtt = sample->rtt; + + if (!sample->is_app_limited + || BW_VALUE(&sample->bandwidth) + > minmax_get(&bbr->bbr_max_bandwidth)) + minmax_upmax(&bbr->bbr_max_bandwidth, bbr->bbr_round_count, + BW_VALUE(&sample->bandwidth)); + + lsquic_malo_put(sample); + } + + if (sample_min_rtt == UINT64_MAX) + return 0; + + bbr->bbr_min_rtt_since_last_probe + = MIN(bbr->bbr_min_rtt_since_last_probe, sample_min_rtt); + + min_rtt_expired = bbr->bbr_min_rtt != 0 && (bbr->bbr_ack_state.ack_time + > bbr->bbr_min_rtt_timestamp + kMinRttExpiry); + if (min_rtt_expired || sample_min_rtt < bbr->bbr_min_rtt + || 0 == bbr->bbr_min_rtt) + { + if (min_rtt_expired && should_extend_min_rtt_expiry(bbr)) + { + LSQ_DEBUG("min rtt expiration extended, stay at: %"PRIu64, + bbr->bbr_min_rtt); + min_rtt_expired = 0; + } + else + { + LSQ_DEBUG("min rtt updated: %"PRIu64" -> %"PRIu64, + bbr->bbr_min_rtt, sample_min_rtt); + bbr->bbr_min_rtt = sample_min_rtt; + } + bbr->bbr_min_rtt_timestamp = bbr->bbr_ack_state.ack_time; + bbr->bbr_min_rtt_since_last_probe = UINT64_MAX; + bbr->bbr_flags &= ~BBR_FLAG_APP_LIMITED_SINCE_LAST_PROBE_RTT; + } + + return min_rtt_expired; +} + + +/* Based on BbrSender::UpdateRecoveryState() */ +static void +update_recovery_state (struct lsquic_bbr *bbr, int is_round_start) +{ + // Exit recovery when there are no losses for a round. + if (bbr->bbr_ack_state.has_losses) + bbr->bbr_end_recovery_at = bbr->bbr_last_sent_packno; + + switch (bbr->bbr_recovery_state) + { + case BBR_RS_NOT_IN_RECOVERY: + // Enter conservation on the first loss. + if (bbr->bbr_ack_state.has_losses) + { + bbr->bbr_recovery_state = BBR_RS_CONSERVATION; + // This will cause the |bbr_recovery_window| to be set to the + // correct value in CalculateRecoveryWindow(). + bbr->bbr_recovery_window = 0; + // Since the conservation phase is meant to be lasting for a whole + // round, extend the current round as if it were started right now. + bbr->bbr_current_round_trip_end = bbr->bbr_last_sent_packno; + } + break; + case BBR_RS_CONSERVATION: + if (is_round_start) + bbr->bbr_recovery_state = BBR_RS_GROWTH; + /* Fall-through */ + case BBR_RS_GROWTH: + // Exit recovery if appropriate. + if (!bbr->bbr_ack_state.has_losses + && bbr->bbr_ack_state.max_packno > bbr->bbr_end_recovery_at) + bbr->bbr_recovery_state = BBR_RS_NOT_IN_RECOVERY; + break; + } +} + + +static uint64_t +update_ack_aggregation_bytes (struct lsquic_bbr *bbr, + uint64_t newly_acked_bytes) +{ + const lsquic_time_t ack_time = bbr->bbr_ack_state.ack_time; + uint64_t expected_bytes_acked, diff; + + // Compute how many bytes are expected to be delivered, assuming max + // bandwidth is correct. + expected_bytes_acked = minmax_get(&bbr->bbr_max_bandwidth) + * (ack_time - bbr->bbr_aggregation_epoch_start_time); + + // Reset the current aggregation epoch as soon as the ack arrival rate is + // less than or equal to the max bandwidth. + if (bbr->bbr_aggregation_epoch_bytes <= expected_bytes_acked) + { + // Reset to start measuring a new aggregation epoch. + bbr->bbr_aggregation_epoch_bytes = newly_acked_bytes; + bbr->bbr_aggregation_epoch_start_time = ack_time; + return 0; + } + + // Compute how many extra bytes were delivered vs max bandwidth. + // Include the bytes most recently acknowledged to account for stretch acks. + bbr->bbr_aggregation_epoch_bytes += newly_acked_bytes; + diff = bbr->bbr_aggregation_epoch_bytes - expected_bytes_acked; + minmax_upmax(&bbr->bbr_max_ack_height, bbr->bbr_round_count, diff); + return diff; +} + + +/* See BbrSender::UpdateGainCyclePhase() */ +static void +update_gain_cycle_phase (struct lsquic_bbr *bbr, uint64_t bytes_in_flight) +{ + const uint64_t prior_in_flight = bbr->bbr_ack_state.in_flight; + const lsquic_time_t now = bbr->bbr_ack_state.ack_time; + // In most cases, the cycle is advanced after an RTT passes. + int should_advance_gain_cycling + = now - bbr->bbr_last_cycle_start > get_min_rtt(bbr); + + // If the pacing gain is above 1.0, the connection is trying to probe the + // bandwidth by increasing the number of bytes in flight to at least + // pacing_gain * BDP. Make sure that it actually reaches the target, as + // long as there are no losses suggesting that the buffers are not able to + // hold that much. + if (bbr->bbr_pacing_gain > 1.0 + && !bbr->bbr_ack_state.has_losses + && prior_in_flight < get_target_cwnd(bbr, bbr->bbr_pacing_gain)) + should_advance_gain_cycling = 0; + + /* Several optimizations are possible here: "else if" instead of "if", as + * well as not calling get_target_cwnd() if `should_advance_gain_cycling' + * is already set to the target value. + */ + + // If pacing gain is below 1.0, the connection is trying to drain the extra + // queue which could have been incurred by probing prior to it. If the + // number of bytes in flight falls down to the estimated BDP value earlier, + // conclude that the queue has been successfully drained and exit this cycle + // early. + if (bbr->bbr_pacing_gain < 1.0 + && bytes_in_flight <= get_target_cwnd(bbr, 1)) + should_advance_gain_cycling = 1; + + if (should_advance_gain_cycling) + { + bbr->bbr_cycle_current_offset = + (bbr->bbr_cycle_current_offset + 1) % kGainCycleLength; + bbr->bbr_last_cycle_start = now; + // Stay in low gain mode until the target BDP is hit. Low gain mode + // will be exited immediately when the target BDP is achieved. + if ((bbr->bbr_flags & BBR_FLAG_DRAIN_TO_TARGET) + && bbr->bbr_pacing_gain < 1 + && kPacingGain[bbr->bbr_cycle_current_offset] == 1 + && bytes_in_flight > get_target_cwnd(bbr, 1)) + return; + bbr->bbr_pacing_gain = kPacingGain[bbr->bbr_cycle_current_offset]; + LSQ_DEBUG("advanced gain cycle, pacing gain set to %.2f", + bbr->bbr_pacing_gain); + } +} + + +/* BbrSender::InRecovery() */ +static int +in_recovery (const struct lsquic_bbr *bbr) +{ + return bbr->bbr_recovery_state != BBR_RS_NOT_IN_RECOVERY; +} + + +/* See BbrSender::CheckIfFullBandwidthReached() */ +static void +check_if_full_bw_reached (struct lsquic_bbr *bbr) +{ + struct bandwidth target, bw; + + if (bbr->bbr_flags & BBR_FLAG_LAST_SAMPLE_APP_LIMITED) + { + LSQ_DEBUG("last sample app limited: full BW not reached"); + return; + } + + target = BW_TIMES(&bbr->bbr_bw_at_last_round, kStartupGrowthTarget); + bw = BW(minmax_get(&bbr->bbr_max_bandwidth)); + if (BW_VALUE(&bw) >= BW_VALUE(&target)) + { + bbr->bbr_bw_at_last_round = bw; + bbr->bbr_round_wo_bw_gain = 0; + if (bbr->bbr_flags & BBR_FLAG_EXPIRE_ACK_AGG_IN_STARTUP) + // Expire old excess delivery measurements now that bandwidth + // increased. + minmax_reset(&bbr->bbr_max_ack_height, + ((struct minmax_sample) { bbr->bbr_round_count, 0, })); + LSQ_DEBUG("BW estimate %"PRIu64"bps greater than or equal to target " + "%"PRIu64"bps: full BW not reached", + BW_VALUE(&bw), BW_VALUE(&target)); + return; + } + + ++bbr->bbr_round_wo_bw_gain; + if ((bbr->bbr_round_wo_bw_gain >= bbr->bbr_num_startup_rtts) + || ((bbr->bbr_flags & BBR_FLAG_EXIT_STARTUP_ON_LOSS) + && in_recovery(bbr))) + { + assert(bbr->bbr_flags & BBR_FLAG_HAS_NON_APP_LIMITED); /* DCHECK */ + bbr->bbr_flags |= BBR_FLAG_IS_AT_FULL_BANDWIDTH; + LSQ_DEBUG("reached full BW"); + } + else + LSQ_DEBUG("rounds w/o gain: %u, full BW not reached", + bbr->bbr_round_wo_bw_gain); +} + + +/* See BbrSender::OnExitStartup */ +static void +on_exit_startup (struct lsquic_bbr *bbr, lsquic_time_t now) +{ + assert(bbr->bbr_mode == BBR_MODE_STARTUP); + /* Apparently this method is just to update stats, something that we + * don't do yet. + */ +} + + +/* See BbrSender::EnterProbeBandwidthMode */ +static void +enter_probe_bw_mode (struct lsquic_bbr *bbr, lsquic_time_t now) +{ + uint8_t rand; + + set_mode(bbr, BBR_MODE_PROBE_BW); + bbr->bbr_cwnd_gain = kCwndGain; + + // Pick a random offset for the gain cycle out of {0, 2..7} range. 1 is + // excluded because in that case increased gain and decreased gain would not + // follow each other. + rand = lsquic_crand_get_byte(bbr->bbr_conn_pub->enpub->enp_crand); + bbr->bbr_cycle_current_offset = rand % (kGainCycleLength - 1); + if (bbr->bbr_cycle_current_offset >= 1) + ++bbr->bbr_cycle_current_offset; + + bbr->bbr_last_cycle_start = now; + bbr->bbr_pacing_gain = kPacingGain[bbr->bbr_cycle_current_offset]; +} + + +/* See BbrSender::EnterStartupMode */ +static void +enter_startup_mode (struct lsquic_bbr *bbr, lsquic_time_t now) +{ + set_mode(bbr, BBR_MODE_STARTUP); + set_startup_values(bbr); +} + + +/* See BbrSender::MaybeExitStartupOrDrain() */ +static void +maybe_exit_startup_or_drain (struct lsquic_bbr *bbr, lsquic_time_t now, + uint64_t bytes_in_flight) +{ + uint64_t target_cwnd; + + if (bbr->bbr_mode == BBR_MODE_STARTUP + && (bbr->bbr_flags & BBR_FLAG_IS_AT_FULL_BANDWIDTH)) + { + on_exit_startup(bbr, now); + set_mode(bbr, BBR_MODE_DRAIN); + bbr->bbr_pacing_gain = bbr->bbr_drain_gain; + bbr->bbr_cwnd_gain = bbr->bbr_high_cwnd_gain; + } + + if (bbr->bbr_mode == BBR_MODE_DRAIN) + { + target_cwnd = get_target_cwnd(bbr, 1); + LSQ_DEBUG("%s: bytes in flight: %"PRIu64"; target cwnd: %"PRIu64, + __func__, bytes_in_flight, target_cwnd); + if (bytes_in_flight <= target_cwnd) + enter_probe_bw_mode(bbr, now); + } +} + + +static int +in_slow_start (const struct lsquic_bbr *bbr) +{ + return bbr->bbr_mode == BBR_MODE_STARTUP; +} + + +/* See QuicByteCount BbrSender::ProbeRttCongestionWindow() */ +static uint64_t +get_probe_rtt_cwnd (const struct lsquic_bbr *bbr) +{ + if (bbr->bbr_flags & BBR_FLAG_PROBE_RTT_BASED_ON_BDP) + return get_target_cwnd(bbr, kModerateProbeRttMultiplier); + else + return bbr->bbr_min_cwnd; +} + + +static uint64_t +lsquic_bbr_get_cwnd (void *cong_ctl) +{ + struct lsquic_bbr *const bbr = cong_ctl; + uint64_t cwnd; + + if (bbr->bbr_mode == BBR_MODE_PROBE_RTT) + cwnd = get_probe_rtt_cwnd(bbr); + else if (in_recovery(bbr) && + !((bbr->bbr_flags & BBR_FLAG_RATE_BASED_STARTUP) + && bbr->bbr_mode == BBR_MODE_STARTUP)) + cwnd = MIN(bbr->bbr_cwnd, bbr->bbr_recovery_window); + else + cwnd = bbr->bbr_cwnd; + + return cwnd; +} + + +/* See BbrSender::MaybeEnterOrExitProbeRtt */ +static void +maybe_enter_or_exit_probe_rtt (struct lsquic_bbr *bbr, lsquic_time_t now, + int is_round_start, int min_rtt_expired, uint64_t bytes_in_flight) +{ + if (min_rtt_expired + && !(bbr->bbr_flags & BBR_FLAG_EXITING_QUIESCENCE) + && bbr->bbr_mode != BBR_MODE_PROBE_RTT) + { + if (in_slow_start(bbr)) + on_exit_startup(bbr, now); + set_mode(bbr, BBR_MODE_PROBE_RTT); + bbr->bbr_pacing_gain = 1; + // Do not decide on the time to exit PROBE_RTT until the + // |bytes_in_flight| is at the target small value. + bbr->bbr_exit_probe_rtt_at = 0; + } + + if (bbr->bbr_mode == BBR_MODE_PROBE_RTT) + { + lsquic_bw_sampler_app_limited(&bbr->bbr_bw_sampler); + LSQ_DEBUG("%s: exit probe at: %"PRIu64"; now: %"PRIu64 + "; round start: %d; round passed: %d; rtt: %"PRIu64" usec", + __func__, bbr->bbr_exit_probe_rtt_at, now, is_round_start, + !!(bbr->bbr_flags & BBR_FLAG_PROBE_RTT_ROUND_PASSED), + lsquic_rtt_stats_get_min_rtt(bbr->bbr_rtt_stats)); + if (bbr->bbr_exit_probe_rtt_at == 0) + { + // If the window has reached the appropriate size, schedule exiting + // PROBE_RTT. The CWND during PROBE_RTT is + // kMinimumCongestionWindow, but we allow an extra packet since QUIC + // checks CWND before sending a packet. + if (bytes_in_flight + < get_probe_rtt_cwnd(bbr) + kMaxOutgoingPacketSize) + { + bbr->bbr_exit_probe_rtt_at = now + kProbeRttTime; + bbr->bbr_flags &= ~BBR_FLAG_PROBE_RTT_ROUND_PASSED; + } + } + else + { + if (is_round_start) + bbr->bbr_flags |= BBR_FLAG_PROBE_RTT_ROUND_PASSED; + if (now >= bbr->bbr_exit_probe_rtt_at + && (bbr->bbr_flags & BBR_FLAG_PROBE_RTT_ROUND_PASSED)) + { + bbr->bbr_min_rtt_timestamp = now; + if (!(bbr->bbr_flags & BBR_FLAG_IS_AT_FULL_BANDWIDTH)) + enter_startup_mode(bbr, now); + else + enter_probe_bw_mode(bbr, now); + } + } + } + + bbr->bbr_flags &= ~BBR_FLAG_EXITING_QUIESCENCE; +} + + +/* See BbrSender::CalculatePacingRate */ +static void +calculate_pacing_rate (struct lsquic_bbr *bbr) +{ + struct bandwidth bw, target_rate; + + bw = BW(minmax_get(&bbr->bbr_max_bandwidth)); + if (BW_IS_ZERO(&bw)) + return; + + LSQ_DEBUG("BW estimate: %"PRIu64, BW_VALUE(&bw)); + + target_rate = BW_TIMES(&bw, bbr->bbr_pacing_gain); + if (bbr->bbr_flags & BBR_FLAG_IS_AT_FULL_BANDWIDTH) + { + bbr->bbr_pacing_rate = target_rate; + return; + } + + // Pace at the rate of initial_window / RTT as soon as RTT measurements are + // available. + if (BW_IS_ZERO(&bbr->bbr_pacing_rate) + && 0 != lsquic_rtt_stats_get_min_rtt(bbr->bbr_rtt_stats)) + { + bbr->bbr_pacing_rate = BW_FROM_BYTES_AND_DELTA( + bbr->bbr_init_cwnd, + lsquic_rtt_stats_get_min_rtt(bbr->bbr_rtt_stats)); + return; + } + + // Slow the pacing rate in STARTUP once loss has ever been detected. + const int has_ever_detected_loss = bbr->bbr_end_recovery_at != 0; + if (has_ever_detected_loss + && (bbr->bbr_flags & (BBR_FLAG_SLOWER_STARTUP + |BBR_FLAG_HAS_NON_APP_LIMITED)) + == (BBR_FLAG_SLOWER_STARTUP|BBR_FLAG_HAS_NON_APP_LIMITED)) + { + bbr->bbr_pacing_rate = BW_TIMES(&bw, kStartupAfterLossGain); + return; + } + + // Slow the pacing rate in STARTUP by the bytes_lost / CWND. + if (startup_rate_reduction_multiplier_ != 0 + && has_ever_detected_loss + && (bbr->bbr_flags & BBR_FLAG_HAS_NON_APP_LIMITED)) + { + bbr->bbr_pacing_rate = BW_TIMES(&target_rate, + (1 - (bbr->bbr_startup_bytes_lost + * startup_rate_reduction_multiplier_ * 1.0f + / bbr->bbr_cwnd_gain))); + // Ensure the pacing rate doesn't drop below the startup growth target + // times the bandwidth estimate. + if (BW_VALUE(&bbr->bbr_pacing_rate) + < BW_VALUE(&bw) * kStartupGrowthTarget) + bbr->bbr_pacing_rate = BW_TIMES(&bw, kStartupGrowthTarget); + return; + } + + // Do not decrease the pacing rate during startup. + if (BW_VALUE(&bbr->bbr_pacing_rate) < BW_VALUE(&target_rate)) + bbr->bbr_pacing_rate = target_rate; +} + + +/* See BbrSender::CalculateCongestionWindow */ +static void +calculate_cwnd (struct lsquic_bbr *bbr, uint64_t bytes_acked, + uint64_t excess_acked) +{ + if (bbr->bbr_mode == BBR_MODE_PROBE_RTT) + return; + + uint64_t target_window = get_target_cwnd(bbr, bbr->bbr_cwnd_gain); + if (bbr->bbr_flags & BBR_FLAG_IS_AT_FULL_BANDWIDTH) + // Add the max recently measured ack aggregation to CWND. + target_window += minmax_get(&bbr->bbr_max_ack_height); + else if (bbr->bbr_flags & BBR_FLAG_ENABLE_ACK_AGG_IN_STARTUP) + // Add the most recent excess acked. Because CWND never decreases in + // STARTUP, this will automatically create a very localized max filter. + target_window += excess_acked; + + // Instead of immediately setting the target CWND as the new one, BBR grows + // the CWND towards |target_window| by only increasing it |bytes_acked| at a + // time. + const int add_bytes_acked = + !FLAGS_quic_bbr_no_bytes_acked_in_startup_recovery || !in_recovery(bbr); + if (bbr->bbr_flags & BBR_FLAG_IS_AT_FULL_BANDWIDTH) + bbr->bbr_cwnd = MIN(target_window, bbr->bbr_cwnd + bytes_acked); + else if (add_bytes_acked && + (bbr->bbr_cwnd < target_window || + lsquic_bw_sampler_total_acked(&bbr->bbr_bw_sampler) + < bbr->bbr_init_cwnd)) + // If the connection is not yet out of startup phase, do not decrease + // the window. + bbr->bbr_cwnd += bytes_acked; + + // Enforce the limits on the congestion window. + if (bbr->bbr_cwnd < bbr->bbr_min_cwnd) + bbr->bbr_cwnd = bbr->bbr_min_cwnd; + else if (bbr->bbr_cwnd > bbr->bbr_max_cwnd) + { + LSQ_DEBUG("exceed max cwnd"); + bbr->bbr_cwnd = bbr->bbr_max_cwnd; + } +} + + +/* See BbrSender::CalculateRecoveryWindow */ +static void +calculate_recovery_window (struct lsquic_bbr *bbr, uint64_t bytes_acked, + uint64_t bytes_lost, uint64_t bytes_in_flight) +{ + if ((bbr->bbr_flags & BBR_FLAG_RATE_BASED_STARTUP) + && bbr->bbr_mode == BBR_MODE_STARTUP) + return; + + if (bbr->bbr_recovery_state == BBR_RS_NOT_IN_RECOVERY) + return; + + // Set up the initial recovery window. + if (bbr->bbr_recovery_window == 0) + { + bbr->bbr_recovery_window = bytes_in_flight + bytes_acked; + bbr->bbr_recovery_window = MAX(bbr->bbr_min_cwnd, + bbr->bbr_recovery_window); + return; + } + + // Remove losses from the recovery window, while accounting for a potential + // integer underflow. + if (bbr->bbr_recovery_window >= bytes_lost) + bbr->bbr_recovery_window -= bytes_lost; + else + bbr->bbr_recovery_window = kMaxSegmentSize; + + // In CONSERVATION mode, just subtracting losses is sufficient. In GROWTH, + // release additional |bytes_acked| to achieve a slow-start-like behavior. + if (bbr->bbr_recovery_state == BBR_RS_GROWTH) + bbr->bbr_recovery_window += bytes_acked; + + // Sanity checks. Ensure that we always allow to send at least an MSS or + // |bytes_acked| in response, whichever is larger. + bbr->bbr_recovery_window = MAX(bbr->bbr_recovery_window, + bytes_in_flight + bytes_acked); + if (FLAG_quic_bbr_one_mss_conservation) + bbr->bbr_recovery_window = MAX(bbr->bbr_recovery_window, + bytes_in_flight + kMaxSegmentSize); + bbr->bbr_recovery_window = MAX(bbr->bbr_recovery_window, bbr->bbr_min_cwnd); +} + + +static void +lsquic_bbr_end_ack (void *cong_ctl, uint64_t in_flight) +{ + struct lsquic_bbr *const bbr = cong_ctl; + int is_round_start, min_rtt_expired; + uint64_t bytes_acked, excess_acked, bytes_lost; + + assert(bbr->bbr_flags & BBR_FLAG_IN_ACK); + bbr->bbr_flags &= ~BBR_FLAG_IN_ACK; + + LSQ_DEBUG("end_ack; mode: %s; in_flight: %"PRIu64, mode2str[bbr->bbr_mode], + in_flight); + + bytes_acked = lsquic_bw_sampler_total_acked(&bbr->bbr_bw_sampler) + - bbr->bbr_ack_state.total_bytes_acked_before; + if (bbr->bbr_ack_state.acked_bytes) + { + is_round_start = bbr->bbr_ack_state.max_packno + > bbr->bbr_current_round_trip_end + || !is_valid_packno(bbr->bbr_current_round_trip_end); + if (is_round_start) + { + ++bbr->bbr_round_count; + bbr->bbr_current_round_trip_end = bbr->bbr_last_sent_packno; + LSQ_DEBUG("up round count to %"PRIu64"; new rt end: %"PRIu64, + bbr->bbr_round_count, bbr->bbr_current_round_trip_end); + } + min_rtt_expired = update_bandwidth_and_min_rtt(bbr); + update_recovery_state(bbr, is_round_start); + excess_acked = update_ack_aggregation_bytes(bbr, bytes_acked); + } + else + { + is_round_start = 0; + min_rtt_expired = 0; + excess_acked = 0; + } + + if (bbr->bbr_mode == BBR_MODE_PROBE_BW) + update_gain_cycle_phase(bbr, in_flight); + + if (is_round_start && !(bbr->bbr_flags & BBR_FLAG_IS_AT_FULL_BANDWIDTH)) + check_if_full_bw_reached(bbr); + + maybe_exit_startup_or_drain(bbr, bbr->bbr_ack_state.ack_time, in_flight); + + maybe_enter_or_exit_probe_rtt(bbr, bbr->bbr_ack_state.ack_time, + is_round_start, min_rtt_expired, in_flight); + + // Calculate number of packets acked and lost. + bytes_lost = bbr->bbr_ack_state.lost_bytes; + + // After the model is updated, recalculate the pacing rate and congestion + // window. + calculate_pacing_rate(bbr); + calculate_cwnd(bbr, bytes_acked, excess_acked); + calculate_recovery_window(bbr, bytes_acked, bytes_lost, in_flight); + + /* We don't need to clean up BW sampler */ +} + + +static void +lsquic_bbr_cleanup (void *cong_ctl) +{ + struct lsquic_bbr *const bbr = cong_ctl; + + lsquic_bw_sampler_cleanup(&bbr->bbr_bw_sampler); + LSQ_DEBUG("cleanup"); +} + + +static void +lsquic_bbr_loss (void *cong_ctl) { /* Noop */ } + + +static void +lsquic_bbr_timeout (void *cong_ctl) { /* Noop */ } + + +const struct cong_ctl_if lsquic_cong_bbr_if = +{ + .cci_ack = lsquic_bbr_ack, + .cci_begin_ack = lsquic_bbr_begin_ack, + .cci_end_ack = lsquic_bbr_end_ack, + .cci_cleanup = lsquic_bbr_cleanup, + .cci_get_cwnd = lsquic_bbr_get_cwnd, + .cci_init = lsquic_bbr_init, + .cci_pacing_rate = lsquic_bbr_pacing_rate, + .cci_loss = lsquic_bbr_loss, + .cci_lost = lsquic_bbr_lost, + .cci_reinit = lsquic_bbr_reinit, + .cci_timeout = lsquic_bbr_timeout, + .cci_sent = lsquic_bbr_sent, + .cci_was_quiet = lsquic_bbr_was_quiet, +}; diff --git a/external/lsquic/src/liblsquic/lsquic_bbr.h b/external/lsquic/src/liblsquic/lsquic_bbr.h new file mode 100644 index 0000000..89634c6 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_bbr.h @@ -0,0 +1,210 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_BBR_H +#define LSQUIC_BBR_H + +/* Our BBR implementation is copied from Chromium with some modifications. + * Besides the obvious translation from C++ to C, differences are: + * + * 1. Instead of OnCongestionEvent(), the ACK information is processed at the + * same time as the ACK itself using cci_begin_ack(), cci_ack(), and + * cci_end_ack() methods. This is done to fit with the flow in + * lsquic_send_ctl_got_ack(). + * + * 2. The bandwidth sampler does not use a hash. Instead, the sample + * information is attached directly to the packet via po_bwp_state. + * + * In this file and in lsquic_bbr.c, C++-style comments are those copied + * verbatim from Chromium. C-style comments are ours. + * + * Code is based on bbr_sender.cc 1a578a76c16abc942205a1a80584a288c262d03a in + * the "quiche" repository. (Not to be confused with Cloudflare's "quiche".) + * + * The BBR I-D is here: + * https://tools.ietf.org/html/draft-cardwell-iccrg-bbr-congestion-control-00 + * + * As for quiche, see + * http://www.bernstein-plus-sons.com/RPDEQ.html + * + * Chromium copyright notice follows. + */ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE.chrome file. + +struct lsquic_bbr +{ + const struct lsquic_conn_public *bbr_conn_pub; + + enum bbr_mode + { + BBR_MODE_STARTUP, + BBR_MODE_DRAIN, + BBR_MODE_PROBE_BW, + BBR_MODE_PROBE_RTT, + } bbr_mode; + + enum + { + BBR_RS_NOT_IN_RECOVERY, + BBR_RS_CONSERVATION, + BBR_RS_GROWTH, + } bbr_recovery_state; + + enum + { + BBR_FLAG_IN_ACK = 1 << 0, /* cci_begin_ack() has been called */ + BBR_FLAG_LAST_SAMPLE_APP_LIMITED = 1 << 1, + BBR_FLAG_HAS_NON_APP_LIMITED = 1 << 2, + BBR_FLAG_APP_LIMITED_SINCE_LAST_PROBE_RTT + = 1 << 3, + BBR_FLAG_PROBE_RTT_DISABLED_IF_APP_LIMITED + = 1 << 4, + BBR_FLAG_PROBE_RTT_SKIPPED_IF_SIMILAR_RTT + = 1 << 5, + BBR_FLAG_EXIT_STARTUP_ON_LOSS = 1 << 6, + BBR_FLAG_IS_AT_FULL_BANDWIDTH = 1 << 7, + BBR_FLAG_EXITING_QUIESCENCE = 1 << 8, + BBR_FLAG_PROBE_RTT_ROUND_PASSED = 1 << 9, + BBR_FLAG_FLEXIBLE_APP_LIMITED = 1 << 10, + // If true, will not exit low gain mode until bytes_in_flight drops + // below BDP or it's time for high gain mode. + BBR_FLAG_DRAIN_TO_TARGET = 1 << 11, + // When true, expire the windowed ack aggregation values in STARTUP + // when bandwidth increases more than 25%. + BBR_FLAG_EXPIRE_ACK_AGG_IN_STARTUP + = 1 << 12, + // If true, use a CWND of 0.75*BDP during probe_rtt instead of 4 + // packets. + BBR_FLAG_PROBE_RTT_BASED_ON_BDP = 1 << 13, + // When true, pace at 1.5x and disable packet conservation in STARTUP. + BBR_FLAG_SLOWER_STARTUP = 1 << 14, + // When true, add the most recent ack aggregation measurement during STARTUP. + BBR_FLAG_ENABLE_ACK_AGG_IN_STARTUP + = 1 << 15, + // When true, disables packet conservation in STARTUP. + BBR_FLAG_RATE_BASED_STARTUP = 1 << 16, + } bbr_flags; + + // Number of round-trips in PROBE_BW mode, used for determining the current + // pacing gain cycle. + unsigned bbr_cycle_current_offset; + + const struct lsquic_rtt_stats + *bbr_rtt_stats; + + struct bw_sampler bbr_bw_sampler; + + /* + " BBR.BtlBwFilter: The max filter used to estimate BBR.BtlBw. + */ + struct minmax bbr_max_bandwidth; + + // Tracks the maximum number of bytes acked faster than the sending rate. + struct minmax bbr_max_ack_height; + + // The initial value of the bbr_cwnd. + uint64_t bbr_init_cwnd; + // The smallest value the bbr_cwnd can achieve. + uint64_t bbr_min_cwnd; + // The largest value the bbr_cwnd can achieve. + uint64_t bbr_max_cwnd; + // The maximum allowed number of bytes in flight. + uint64_t bbr_cwnd; + + // The time this aggregation started and the number of bytes acked during it. + lsquic_time_t bbr_aggregation_epoch_start_time; + uint64_t bbr_aggregation_epoch_bytes; + + lsquic_packno_t bbr_last_sent_packno; + lsquic_packno_t bbr_current_round_trip_end; + + // Receiving acknowledgement of a packet after |bbr_end_recovery_at| will + // cause BBR to exit the recovery mode. A value above zero indicates at + // least one loss has been detected, so it must not be set back to zero. + lsquic_packno_t bbr_end_recovery_at; + + /* + " BBR.round_count: Count of packet-timed round trips. + */ + uint64_t bbr_round_count; + + /* Not documented in the draft: */ + uint64_t bbr_full_bw; + + /* Not documented in the draft: */ + uint64_t bbr_full_bw_count; + + /* + " BBR.pacing_rate: The current pacing rate for a BBR flow, which + " controls inter-packet spacing. + */ + struct bandwidth bbr_pacing_rate; + + // Sum of bytes lost in STARTUP. + uint64_t bbr_startup_bytes_lost; + + /* + " BBR.pacing_gain: The dynamic gain factor used to scale BBR.BtlBw to + " produce BBR.pacing_rate. + */ + float bbr_pacing_gain; + + // The pacing gain applied during the STARTUP phase. + float bbr_high_gain; + + // The CWND gain applied during the STARTUP phase. + float bbr_high_cwnd_gain; + + // The pacing gain applied during the DRAIN phase. + float bbr_drain_gain; + + // The number of RTTs to stay in STARTUP mode. Defaults to 3. + unsigned bbr_num_startup_rtts; + + // Number of rounds during which there was no significant bandwidth + // increase. + unsigned bbr_round_wo_bw_gain; + + /* + " BBR.cwnd_gain: The dynamic gain factor used to scale the estimated + " BDP to produce a congestion window (cwnd). + */ + float bbr_cwnd_gain; + + // The bandwidth compared to which the increase is measured. + struct bandwidth bbr_bw_at_last_round; + + // The time at which the last pacing gain cycle was started. + lsquic_time_t bbr_last_cycle_start; + + // Time at which PROBE_RTT has to be exited. Setting it to zero indicates + // that the time is yet unknown as the number of packets in flight has not + // reached the required value. + lsquic_time_t bbr_exit_probe_rtt_at; + + lsquic_time_t bbr_min_rtt_since_last_probe; + lsquic_time_t bbr_min_rtt; + lsquic_time_t bbr_min_rtt_timestamp; + + // A window used to limit the number of bytes in flight during loss recovery + uint64_t bbr_recovery_window; + + /* Accumulate information from a single ACK. Gets processed when + * cci_end_ack() is called. + */ + struct + { + TAILQ_HEAD(, bw_sample) samples; + lsquic_time_t ack_time; + lsquic_packno_t max_packno; + uint64_t acked_bytes; + uint64_t lost_bytes; + uint64_t total_bytes_acked_before; + uint64_t in_flight; + int has_losses; + } bbr_ack_state; +}; + +extern const struct cong_ctl_if lsquic_cong_bbr_if; + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_bw_sampler.c b/external/lsquic/src/liblsquic/lsquic_bw_sampler.c new file mode 100644 index 0000000..2d65416 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_bw_sampler.c @@ -0,0 +1,277 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include + +#include "lsquic_int_types.h" +#include "lsquic_types.h" +#include "lsquic_hash.h" +#include "lsquic.h" +#include "lsquic_conn.h" +#include "lsquic_malo.h" +#include "lsquic_util.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_out.h" +#include "lsquic_parse.h" +#include "lsquic_bw_sampler.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_BW_SAMPLER +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(sampler->bws_conn) +#include "lsquic_logger.h" + + +int +lsquic_bw_sampler_init (struct bw_sampler *sampler, struct lsquic_conn *conn, + enum quic_ft_bit retx_frames) +{ + struct malo *malo; + + assert(lsquic_is_zero(sampler, sizeof(*sampler))); + + malo = lsquic_malo_create(sizeof(struct bwp_state)); + if (!malo) + return -1; + + sampler->bws_malo = malo; + sampler->bws_conn = conn; + sampler->bws_retx_frames = retx_frames; + sampler->bws_flags |= BWS_APP_LIMITED; + LSQ_DEBUG("init"); + return 0; +} + + +void +lsquic_bw_sampler_app_limited (struct bw_sampler *sampler) +{ + sampler->bws_flags |= BWS_APP_LIMITED; + sampler->bws_end_of_app_limited_phase = sampler->bws_last_sent_packno; + LSQ_DEBUG("app limited, end of limited phase is %"PRIu64, + sampler->bws_end_of_app_limited_phase); +} + + +void +lsquic_bw_sampler_cleanup (struct bw_sampler *sampler) +{ + if (sampler->bws_conn) + LSQ_DEBUG("cleanup"); + if (sampler->bws_malo) + { + lsquic_malo_destroy(sampler->bws_malo); + sampler->bws_malo = NULL; + } +} + + +/* This module only fails when it is unable to allocate memory. This rarely + * happens, so we avoid having to check return values and abort the connection + * instead. + */ +static void +bw_sampler_abort_conn (struct bw_sampler *sampler) +{ + if (!(sampler->bws_flags & BWS_CONN_ABORTED)) + { + sampler->bws_flags |= BWS_CONN_ABORTED; + LSQ_WARN("aborting connection"); + sampler->bws_conn->cn_if->ci_internal_error(sampler->bws_conn, + "resources exhausted"); + } +} + + +#define BW_WARN_ONCE(...) do { \ + if (!(sampler->bws_flags & BWS_WARNED)) \ + { \ + sampler->bws_flags |= BWS_WARNED; \ + LSQ_WARN(__VA_ARGS__); \ + } \ +} while (0) + +void +lsquic_bw_sampler_packet_sent (struct bw_sampler *sampler, + struct lsquic_packet_out *packet_out, uint64_t in_flight) +{ + struct bwp_state *state; + unsigned short sent_sz; + + if (packet_out->po_bwp_state) + { + BW_WARN_ONCE("sent: packet %"PRIu64" already has state", + packet_out->po_packno); + return; + } + + sampler->bws_last_sent_packno = packet_out->po_packno; + + if (!(packet_out->po_frame_types & sampler->bws_retx_frames)) + return; + + sent_sz = lsquic_packet_out_sent_sz(sampler->bws_conn, packet_out); + sampler->bws_total_sent += sent_sz; + + // If there are no packets in flight, the time at which the new transmission + // opens can be treated as the A_0 point for the purpose of bandwidth + // sampling. This underestimates bandwidth to some extent, and produces some + // artificially low samples for most packets in flight, but it provides with + // samples at important points where we would not have them otherwise, most + // importantly at the beginning of the connection. + if (in_flight == 0) + { + sampler->bws_last_acked_packet_time = packet_out->po_sent; + sampler->bws_last_acked_total_sent = sampler->bws_total_sent; + // In this situation ack compression is not a concern, set send rate to + // effectively infinite. + sampler->bws_last_acked_sent_time = packet_out->po_sent; + } + + state = lsquic_malo_get(sampler->bws_malo); + if (!state) + { + bw_sampler_abort_conn(sampler); + return; + } + + state->bwps_send_state = (struct bwps_send_state) { + .total_bytes_sent = sampler->bws_total_sent, + .total_bytes_acked = sampler->bws_total_acked, + .total_bytes_lost = sampler->bws_total_lost, + .is_app_limited = !!(sampler->bws_flags & BWS_APP_LIMITED), + }; + state->bwps_sent_at_last_ack = sampler->bws_last_acked_total_sent; + state->bwps_last_ack_sent_time = sampler->bws_last_acked_sent_time; + state->bwps_last_ack_ack_time = sampler->bws_last_acked_packet_time; + state->bwps_packet_size = sent_sz; + + packet_out->po_bwp_state = state; + + LSQ_DEBUG("add info for packet %"PRIu64, packet_out->po_packno); +} + + +void +lsquic_bw_sampler_packet_lost (struct bw_sampler *sampler, + struct lsquic_packet_out *packet_out) +{ + if (!packet_out->po_bwp_state) + return; + + sampler->bws_total_lost += packet_out->po_bwp_state->bwps_packet_size; + lsquic_malo_put(packet_out->po_bwp_state); + packet_out->po_bwp_state = NULL; + LSQ_DEBUG("packet %"PRIu64" lost, total_lost goes to %"PRIu64, + packet_out->po_packno, sampler->bws_total_lost); +} + + +struct bw_sample * +lsquic_bw_sampler_packet_acked (struct bw_sampler *sampler, + struct lsquic_packet_out *packet_out, lsquic_time_t ack_time) +{ + const struct bwp_state *state; + struct bw_sample *sample; + struct bandwidth send_rate, ack_rate; + lsquic_time_t rtt; + unsigned short sent_sz; + int is_app_limited; + + if (!packet_out->po_bwp_state) + return 0; + + state = packet_out->po_bwp_state; + sent_sz = lsquic_packet_out_sent_sz(sampler->bws_conn, packet_out); + + sampler->bws_total_acked += sent_sz; + sampler->bws_last_acked_total_sent = state->bwps_send_state.total_bytes_sent; + sampler->bws_last_acked_sent_time = packet_out->po_sent; + sampler->bws_last_acked_packet_time = ack_time; + + // Exit app-limited phase once a packet that was sent while the connection + // is not app-limited is acknowledged. + if ((sampler->bws_flags & BWS_APP_LIMITED) + && packet_out->po_packno > sampler->bws_end_of_app_limited_phase) + { + sampler->bws_flags &= ~BWS_APP_LIMITED; + LSQ_DEBUG("exit app-limited phase due to packet %"PRIu64" being acked", + packet_out->po_packno); + } + + // There might have been no packets acknowledged at the moment when the + // current packet was sent. In that case, there is no bandwidth sample to + // make. + if (state->bwps_last_ack_sent_time == 0) + goto no_sample; + + // Infinite rate indicates that the sampler is supposed to discard the + // current send rate sample and use only the ack rate. + if (packet_out->po_sent > state->bwps_last_ack_sent_time) + send_rate = BW_FROM_BYTES_AND_DELTA( + state->bwps_send_state.total_bytes_sent + - state->bwps_sent_at_last_ack, + packet_out->po_sent - state->bwps_last_ack_sent_time); + else + send_rate = BW_INFINITE(); + + // During the slope calculation, ensure that ack time of the current packet is + // always larger than the time of the previous packet, otherwise division by + // zero or integer underflow can occur. + if (ack_time <= state->bwps_last_ack_ack_time) + { + BW_WARN_ONCE("Time of the previously acked packet (%"PRIu64") is " + "is larger than the ack time of the current packet (%"PRIu64")", + state->bwps_last_ack_ack_time, ack_time); + goto no_sample; + } + + ack_rate = BW_FROM_BYTES_AND_DELTA( + sampler->bws_total_acked - state->bwps_send_state.total_bytes_acked, + ack_time - state->bwps_last_ack_ack_time); + LSQ_DEBUG("send rate: %"PRIu64"; ack rate: %"PRIu64, send_rate.value, + ack_rate.value); + + // Note: this sample does not account for delayed acknowledgement time. + // This means that the RTT measurements here can be artificially high, + // especially on low bandwidth connections. + rtt = ack_time - packet_out->po_sent; + is_app_limited = state->bwps_send_state.is_app_limited; + + /* After this point, we switch `sample' to point to `state' and don't + * reference `state' anymore. + */ + sample = (void *) packet_out->po_bwp_state; + packet_out->po_bwp_state = NULL; + if (BW_VALUE(&send_rate) < BW_VALUE(&ack_rate)) + sample->bandwidth = send_rate; + else + sample->bandwidth = ack_rate; + sample->rtt = rtt; + sample->is_app_limited = is_app_limited; + + LSQ_DEBUG("packet %"PRIu64" acked, bandwidth: %"PRIu64" bps", + packet_out->po_packno, BW_VALUE(&sample->bandwidth)); + + return sample; + + no_sample: + lsquic_malo_put(packet_out->po_bwp_state); + packet_out->po_bwp_state = NULL; + return NULL;; +} + + +unsigned +lsquic_bw_sampler_entry_count (const struct bw_sampler *sampler) +{ + void *el; + unsigned count; + + count = 0; + for (el = lsquic_malo_first(sampler->bws_malo); el; + el = lsquic_malo_next(sampler->bws_malo)) + ++count; + + return count; +} diff --git a/external/lsquic/src/liblsquic/lsquic_bw_sampler.h b/external/lsquic/src/liblsquic/lsquic_bw_sampler.h new file mode 100644 index 0000000..ec2d8e8 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_bw_sampler.h @@ -0,0 +1,111 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_BW_SAMPLER_H +#define LSQUIC_BW_SAMPLER_H 1 + +/* Translated from Chromium. */ +// Copyright 2016 The Chromium Authors. All rights reserved. + +struct lsquic_packet_out; + +/* This struct provides a type for bits per second units. It's made into + * a struct so that it is a little harder to make a mistake. The Chromium + * equivalent of this is QuicBandwidth. Use macros to operate. + */ +struct bandwidth +{ + uint64_t value; /* Bits per second */ +}; + +#define BW_INFINITE() ((struct bandwidth) { .value = UINT64_MAX, }) +#define BW_ZERO() ((struct bandwidth) { .value = 0, }) +#define BW_FROM_BYTES_AND_DELTA(bytes_, usecs_) \ + ((struct bandwidth) { .value = (bytes_) * 8 * 1000000 / (usecs_), }) +#define BW_IS_ZERO(bw_) ((bw_)->value == 0) +#define BW_TO_BYTES_PER_SEC(bw_) ((bw_)->value / 8) +#define BW_VALUE(bw_) (+(bw_)->value) +#define BW_TIMES(bw_, factor_) \ + ((struct bandwidth) { .value = BW_VALUE(bw_) * (factor_), }) +#define BW(initial_value_) ((struct bandwidth) { .value = (initial_value_) }) + +struct bw_sampler +{ + struct lsquic_conn *bws_conn; + uint64_t bws_total_sent, + bws_total_acked, + bws_total_lost; + /* Value of bws_total_sent at the time last ACKed packet was sent. Only + * valid if bws_last_acked_sent_time is valid. + */ + uint64_t bws_last_acked_total_sent; + /* Time when last acked packet was sent. Zero if no valid timestamp is + * available. + */ + lsquic_time_t bws_last_acked_sent_time; + lsquic_time_t bws_last_acked_packet_time; + lsquic_packno_t bws_last_sent_packno; + lsquic_packno_t bws_end_of_app_limited_phase; + struct malo *bws_malo; /* For struct osp_state objects */ + enum quic_ft_bit bws_retx_frames; + enum { + BWS_CONN_ABORTED = 1 << 0, + BWS_WARNED = 1 << 1, + BWS_APP_LIMITED = 1 << 2, + } bws_flags; +}; + +struct bw_sample +{ + TAILQ_ENTRY(bw_sample) next; + struct bandwidth bandwidth; + lsquic_time_t rtt; + int is_app_limited; +}; + +int +lsquic_bw_sampler_init (struct bw_sampler *, struct lsquic_conn *, + enum quic_ft_bit); + +void +lsquic_bw_sampler_packet_sent (struct bw_sampler *, struct lsquic_packet_out *, + uint64_t in_flight); + +/* Free returned sample via lsquic_malo_put() after you're done */ +struct bw_sample * +lsquic_bw_sampler_packet_acked (struct bw_sampler *, struct lsquic_packet_out *, + lsquic_time_t ack_time); + +void +lsquic_bw_sampler_packet_lost (struct bw_sampler *, struct lsquic_packet_out *); + +void +lsquic_bw_sampler_app_limited (struct bw_sampler *); + +void +lsquic_bw_sampler_cleanup (struct bw_sampler *); + +unsigned +lsquic_bw_sampler_entry_count (const struct bw_sampler *); + +#define lsquic_bw_sampler_total_acked(sampler_) (+(sampler_)->bws_total_acked) + +/* The following types are exposed in the header file because of unit tests. + * Do not use outside of lsquic_bw_sampler.c. + */ +struct bwps_send_state +{ + uint64_t total_bytes_sent, + total_bytes_acked, + total_bytes_lost; + int is_app_limited; +}; + +struct bwp_state /* BWP State stands for Bandwidth Packet State */ +{ + struct bwps_send_state bwps_send_state; + uint64_t bwps_sent_at_last_ack; + lsquic_time_t bwps_last_ack_sent_time; + lsquic_time_t bwps_last_ack_ack_time; + unsigned short bwps_packet_size; +}; + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_byteswap.h b/external/lsquic/src/liblsquic/lsquic_byteswap.h new file mode 100644 index 0000000..fdb9ab3 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_byteswap.h @@ -0,0 +1,39 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_BYTESWAP_H +#define LSQUIC_BYTESWAP_H 1 + +#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) +#include +#define bswap_16 bswap16 +#define bswap_32 bswap32 +#define bswap_64 bswap64 +#elif defined(__APPLE__) +#include +#define bswap_16 OSSwapInt16 +#define bswap_32 OSSwapInt32 +#define bswap_64 OSSwapInt64 +#elif defined(WIN32) +#include +#define bswap_16 _byteswap_ushort +#define bswap_32 _byteswap_ulong +#define bswap_64 _byteswap_uint64 +#else +#include +#endif + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define READ_UINT(varname, varwidth, src, nbytes) do { \ + varname = 0; \ + memcpy((unsigned char *) &(varname) + varwidth / 8 - (nbytes), (src), \ + (nbytes)); \ + varname = bswap_##varwidth(varname); \ +} while (0) +#else +#define READ_UINT(varname, varwidth, src, nbytes) do { \ + varname = 0; \ + memcpy((unsigned char *) &(varname) + varwidth / 8 - (nbytes), (src), \ + (nbytes)); \ +} while (0) +#endif + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_cfcw.c b/external/lsquic/src/liblsquic/lsquic_cfcw.c new file mode 100644 index 0000000..d845aaa --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_cfcw.c @@ -0,0 +1,116 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_rtt.h" +#include "lsquic_conn_flow.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_conn_public.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_util.h" +#include "lsquic_conn.h" +#include "lsquic_ev_log.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_CFCW +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(fc->cf_conn_pub->lconn) +#include "lsquic_logger.h" + + +void +lsquic_cfcw_init (struct lsquic_cfcw *fc, struct lsquic_conn_public *cpub, + unsigned max_recv_window) +{ + memset(fc, 0, sizeof(*fc)); + fc->cf_max_recv_win = max_recv_window; + fc->cf_conn_pub = cpub; + (void) lsquic_cfcw_fc_offsets_changed(fc); +} + + +static void +cfcw_maybe_increase_max_window (struct lsquic_cfcw *fc) +{ + unsigned new_max_window; + + new_max_window = fc->cf_max_recv_win * 2; + + /* Do not increase past explicitly specified maximum */ + if (new_max_window > fc->cf_conn_pub->enpub->enp_settings.es_max_cfcw) + new_max_window = fc->cf_conn_pub->enpub->enp_settings.es_max_cfcw; + + if (new_max_window > fc->cf_max_recv_win) + { + LSQ_DEBUG("max window increase %u -> %u", fc->cf_max_recv_win, + new_max_window); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, + "max CFCW increase %u -> %u", fc->cf_max_recv_win, + new_max_window); + fc->cf_max_recv_win = new_max_window; + } + else + LSQ_DEBUG("max window could use an increase, but we're stuck " + "at %u", fc->cf_max_recv_win); +} + + +int +lsquic_cfcw_fc_offsets_changed (struct lsquic_cfcw *fc) +{ + lsquic_time_t now, since_last_update, srtt; + + if (fc->cf_recv_off - fc->cf_read_off >= fc->cf_max_recv_win / 2) + return 0; + + now = lsquic_time_now(); + since_last_update = now - fc->cf_last_updated; + fc->cf_last_updated = now; + + srtt = lsquic_rtt_stats_get_srtt(&fc->cf_conn_pub->rtt_stats); + if (since_last_update < srtt * 2) + cfcw_maybe_increase_max_window(fc); + + fc->cf_recv_off = fc->cf_read_off + fc->cf_max_recv_win; + LSQ_DEBUG("recv_off changed: read_off: %"PRIu64"; recv_off: %" + PRIu64"", fc->cf_read_off, fc->cf_recv_off); + return 1; +} + + +int +lsquic_cfcw_incr_max_recv_off (struct lsquic_cfcw *fc, uint64_t incr) +{ + if (fc->cf_max_recv_off + incr <= fc->cf_recv_off) + { + fc->cf_max_recv_off += incr; + LSQ_DEBUG("max_recv_off goes from %"PRIu64" to %"PRIu64"", + fc->cf_max_recv_off - incr, fc->cf_max_recv_off); + return 1; + } + else + { + LSQ_INFO("flow control violation: received at offset %"PRIu64", while " + "flow control receive offset is %"PRIu64, + fc->cf_max_recv_off + incr, fc->cf_recv_off); + return 0; + } +} + + +void +lsquic_cfcw_incr_read_off (struct lsquic_cfcw *fc, uint64_t incr) +{ + fc->cf_read_off += incr; + LSQ_DEBUG("read_off goes from %"PRIu64" to %"PRIu64, + fc->cf_read_off - incr, fc->cf_read_off); +} diff --git a/external/lsquic/src/liblsquic/lsquic_chsk_stream.c b/external/lsquic/src/liblsquic/lsquic_chsk_stream.c new file mode 100644 index 0000000..6cc86b5 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_chsk_stream.c @@ -0,0 +1,210 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * Stream/crypto handshake adapter for the client side. + * + * The client composes CHLO, writes it to the stream, and wait for the + * server response, which it processes. + */ + +#include +#include +#include +#include +#include +#include + +#include "lsquic_int_types.h" +#include "lsquic.h" + +#include "lsquic_str.h" +#include "lsquic_enc_sess.h" +#include "lsquic_chsk_stream.h" +#include "lsquic_ver_neg.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_mm.h" +#include "lsquic_sizes.h" +#include "lsquic_full_conn.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_HSK_ADAPTER +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(c_hsk->lconn) +#include "lsquic_logger.h" + + +static lsquic_stream_ctx_t * +hsk_client_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) +{ + struct client_hsk_ctx *const c_hsk = stream_if_ctx; + + LSQ_DEBUG("stream created"); + + lsquic_stream_wantwrite(stream, 1); + + return (void *) c_hsk; +} + + +static void +hsk_client_on_read (lsquic_stream_t *stream, struct lsquic_stream_ctx *sh) +{ + struct client_hsk_ctx *const c_hsk = (struct client_hsk_ctx *) sh; + ssize_t nread; + int s; + enum lsquic_hsk_status status; + + if (!c_hsk->buf_in) + { + c_hsk->buf_in = lsquic_mm_get_16k(c_hsk->mm); + if (!c_hsk->buf_in) + { + LSQ_WARN("could not get buffer: %s", strerror(errno)); + lsquic_stream_wantread(stream, 0); + lsquic_conn_close(c_hsk->lconn); + return; + } + c_hsk->buf_sz = 16 * 1024; + c_hsk->buf_off = 0; + } + + nread = lsquic_stream_read(stream, c_hsk->buf_in + c_hsk->buf_off, + c_hsk->buf_sz - c_hsk->buf_off); + if (nread <= 0) + { + if (nread < 0) + LSQ_INFO("Could not read from handshake stream: %s", + strerror(errno)); + else + LSQ_INFO("Handshake stream closed (odd)"); + lsquic_mm_put_16k(c_hsk->mm, c_hsk->buf_in); + c_hsk->buf_in = NULL; + lsquic_stream_wantread(stream, 0); + lsquic_conn_close(c_hsk->lconn); + return; + } + c_hsk->buf_off += nread; + + s = c_hsk->lconn->cn_esf.g->esf_handle_chlo_reply(c_hsk->lconn->cn_enc_session, + c_hsk->buf_in, c_hsk->buf_off); + LSQ_DEBUG("lsquic_enc_session_handle_chlo_reply returned %d", s); + switch (s) + { + case DATA_NOT_ENOUGH: + if (c_hsk->buf_off < c_hsk->buf_sz) + LSQ_INFO("not enough server response has arrived, continue " + "buffering"); + else + { + LSQ_INFO("read in %u bytes of server response, and it is still " + "not enough: giving up", c_hsk->buf_off); + lsquic_mm_put_16k(c_hsk->mm, c_hsk->buf_in); + c_hsk->buf_in = NULL; + lsquic_stream_wantread(stream, 0); + c_hsk->lconn->cn_if->ci_hsk_done(c_hsk->lconn, LSQ_HSK_FAIL); + lsquic_conn_close(c_hsk->lconn); + } + break; + case DATA_NO_ERROR: + lsquic_mm_put_16k(c_hsk->mm, c_hsk->buf_in); + c_hsk->buf_in = NULL; + lsquic_stream_wantread(stream, 0); + if (c_hsk->lconn->cn_esf.g->esf_is_hsk_done(c_hsk->lconn->cn_enc_session)) + { + LSQ_DEBUG("handshake is successful, inform connection"); + status = (c_hsk->lconn->cn_esf_c->esf_did_sess_resume_succeed( + c_hsk->lconn->cn_enc_session)) ? LSQ_HSK_RESUMED_OK : LSQ_HSK_OK; + c_hsk->lconn->cn_if->ci_hsk_done(c_hsk->lconn, status); + } + else + { + LSQ_DEBUG("handshake not yet complete, will generate another " + "message"); + lsquic_stream_wantwrite(stream, 1); + } + break; + case HS_SREJ: + LSQ_DEBUG("got HS_SREJ"); + c_hsk->buf_off = 0; + lsquic_stream_wantread(stream, 0); + if (0 == lsquic_gquic_full_conn_srej(c_hsk->lconn)) + lsquic_stream_wantwrite(stream, 1); + break; + default: + LSQ_WARN("lsquic_enc_session_handle_chlo_reply returned unknown value %d", s); + /* fallthru */ + case DATA_FORMAT_ERROR: + LSQ_INFO("lsquic_enc_session_handle_chlo_reply returned an error"); + lsquic_mm_put_16k(c_hsk->mm, c_hsk->buf_in); + c_hsk->buf_in = NULL; + lsquic_stream_wantread(stream, 0); + c_hsk->lconn->cn_if->ci_hsk_done(c_hsk->lconn, LSQ_HSK_FAIL); + lsquic_conn_close(c_hsk->lconn); + break; + } +} + + +/* In this function, we assume that we can write the whole message in one + * shot. Otherwise, this is an error. + */ +static void +hsk_client_on_write (lsquic_stream_t *stream, struct lsquic_stream_ctx *sh) +{ + struct client_hsk_ctx *const c_hsk = (struct client_hsk_ctx *) sh; + unsigned char *buf; + size_t len; + ssize_t nw; + + lsquic_stream_wantwrite(stream, 0); + + buf = lsquic_mm_get_4k(c_hsk->mm); + if (!buf) + { + LSQ_WARN("cannot allocate buffer: %s", strerror(errno)); + lsquic_conn_close(c_hsk->lconn); + return; + } + len = 4 * 1024; + + if (0 != c_hsk->lconn->cn_esf.g->esf_gen_chlo(c_hsk->lconn->cn_enc_session, + c_hsk->ver_neg->vn_ver, buf, &len)) + { + LSQ_WARN("cannot create CHLO message"); + lsquic_mm_put_4k(c_hsk->mm, buf); + lsquic_conn_close(c_hsk->lconn); + return; + } + + nw = lsquic_stream_write(stream, buf, len); + lsquic_mm_put_4k(c_hsk->mm, buf); + + if (nw < 0) + LSQ_INFO("error writing to stream: %s", strerror(errno)); + else if ((size_t) nw == len) + { + LSQ_INFO("wrote %zd bytes of CHLO to stream", nw); + lsquic_stream_flush(stream); + lsquic_stream_wantread(stream, 1); + } + else + LSQ_INFO("could only write %zd bytes to stream instead of %zd", + nw, len); +} + + +static void +hsk_client_on_close (lsquic_stream_t *stream, struct lsquic_stream_ctx *sh) +{ + struct client_hsk_ctx *const c_hsk = (struct client_hsk_ctx *) sh; + if (c_hsk->buf_in) + lsquic_mm_put_16k(c_hsk->mm, c_hsk->buf_in); + LSQ_DEBUG("stream closed"); +} + + +const struct lsquic_stream_if lsquic_client_hsk_stream_if = +{ + .on_new_stream = hsk_client_on_new_stream, + .on_read = hsk_client_on_read, + .on_write = hsk_client_on_write, + .on_close = hsk_client_on_close, +}; diff --git a/external/lsquic/src/liblsquic/lsquic_chsk_stream.h b/external/lsquic/src/liblsquic/lsquic_chsk_stream.h new file mode 100644 index 0000000..fe9db8d --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_chsk_stream.h @@ -0,0 +1,24 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * Stream/crypto handshake adapter for the client side. + */ + +#ifndef LSQUIC_CHSK_STREAM_H +#define LSQUIC_CHSK_STREAM_H 1 + +struct lsquic_conn; +struct lsquic_mm; +struct ver_neg; + +struct client_hsk_ctx { + struct lsquic_conn *lconn; + struct lsquic_mm *mm; + const struct ver_neg *ver_neg; + unsigned char *buf_in; /* Server response may have to be buffered */ + unsigned buf_sz, /* Total number of bytes in `buf_in' */ + buf_off; /* Number of bytes read into `buf_in' */ +}; + +extern const struct lsquic_stream_if lsquic_client_hsk_stream_if; + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_cong_ctl.h b/external/lsquic/src/liblsquic/lsquic_cong_ctl.h new file mode 100644 index 0000000..31957d7 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_cong_ctl.h @@ -0,0 +1,71 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_cong_ctl.h -- congestion control interface + */ + +#ifndef LSQUIC_CONG_CTL_H +#define LSQUIC_CONG_CTL_H + + +struct lsquic_conn_public; +struct lsquic_packet_out; +enum quic_ft_bit; + + +/* All the methods don't quite match up between Cubic and BBR. Thus, some of + * the methods are optional; they are marked as such in the comments below. + * Reconciling Cubic and BBR to have similar interface is left as an exercise + * for the future. + */ +struct cong_ctl_if +{ + void + (*cci_init) (void *cong_ctl, const struct lsquic_conn_public *, + enum quic_ft_bit); + + void + (*cci_reinit) (void *cong_ctl); + + void + (*cci_ack) (void *cong_ctl, struct lsquic_packet_out *, unsigned packet_sz, + lsquic_time_t now, int app_limited); + + void + (*cci_loss) (void *cong_ctl); + + /* Optional method */ + void + (*cci_begin_ack) (void *cong_ctl, lsquic_time_t ack_time, + uint64_t in_flight); + + /* Optional method */ + void + (*cci_end_ack) (void *cong_ctl, uint64_t in_flight); + + /* Optional method */ + void + (*cci_sent) (void *cong_ctl, struct lsquic_packet_out *, + uint64_t in_flight, int app_limited); + + /* Optional method */ + void + (*cci_lost) (void *cong_ctl, struct lsquic_packet_out *, + unsigned packet_sz); + + void + (*cci_timeout) (void *cong_ctl); + + void + (*cci_was_quiet) (void *cong_ctl, lsquic_time_t now, uint64_t in_flight); + + uint64_t + (*cci_get_cwnd) (void *cong_ctl); + + uint64_t + (*cci_pacing_rate) (void *cong_ctl, int in_recovery); + + void + (*cci_cleanup) (void *cong_ctl); +}; + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_conn.c b/external/lsquic/src/liblsquic/lsquic_conn.c new file mode 100644 index 0000000..ebbb19b --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_conn.c @@ -0,0 +1,348 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include + +#include + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_gquic.h" +#include "lsquic_packet_in.h" +#include "lsquic_str.h" +#include "lsquic_enc_sess.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_ev_log.h" + +#include "lsquic_logger.h" + +const lsquic_cid_t * +lsquic_conn_id (const lsquic_conn_t *lconn) +{ + /* TODO */ + return lsquic_conn_log_cid(lconn); +} + + +void * +lsquic_conn_get_peer_ctx (struct lsquic_conn *lconn, + const struct sockaddr *local_sa) +{ + const struct network_path *path; + + path = lconn->cn_if->ci_get_path(lconn, local_sa); + return path->np_peer_ctx; +} + + +unsigned char +lsquic_conn_record_sockaddr (lsquic_conn_t *lconn, void *peer_ctx, + const struct sockaddr *local_sa, const struct sockaddr *peer_sa) +{ + return lconn->cn_if->ci_record_addrs(lconn, peer_ctx, local_sa, peer_sa); +} + + +int +lsquic_conn_get_sockaddr (struct lsquic_conn *lconn, + const struct sockaddr **local, const struct sockaddr **peer) +{ + const struct network_path *path; + + path = lconn->cn_if->ci_get_path(lconn, NULL); + *local = NP_LOCAL_SA(path); + *peer = NP_PEER_SA(path); + return 0; +} + + +int +lsquic_conn_copy_and_release_pi_data (const lsquic_conn_t *conn, + struct lsquic_engine_public *enpub, lsquic_packet_in_t *packet_in) +{ + unsigned char *copy; + + assert(!(packet_in->pi_flags & PI_OWN_DATA)); + copy = lsquic_mm_get_packet_in_buf(&enpub->enp_mm, packet_in->pi_data_sz); + if (!copy) + { + LSQ_WARN("cannot allocate memory to copy incoming packet data"); + return -1; + } + memcpy(copy, packet_in->pi_data, packet_in->pi_data_sz); + packet_in->pi_data = copy; + packet_in->pi_flags |= PI_OWN_DATA; + return 0; +} + + +enum lsquic_version +lsquic_conn_quic_version (const lsquic_conn_t *lconn) +{ + if (lconn->cn_flags & LSCONN_VER_SET) + return lconn->cn_version; + else + return -1; +} + + +enum lsquic_crypto_ver +lsquic_conn_crypto_ver (const lsquic_conn_t *lconn) +{ + return LSQ_CRY_QUIC; +} + + +const char * +lsquic_conn_crypto_cipher (const lsquic_conn_t *lconn) +{ + if (lconn->cn_enc_session) + return lconn->cn_esf_c->esf_cipher(lconn->cn_enc_session); + else + return NULL; +} + + +int +lsquic_conn_crypto_keysize (const lsquic_conn_t *lconn) +{ + if (lconn->cn_enc_session) + return lconn->cn_esf_c->esf_keysize(lconn->cn_enc_session); + else + return -1; +} + + +int +lsquic_conn_crypto_alg_keysize (const lsquic_conn_t *lconn) +{ + if (lconn->cn_enc_session) + return lconn->cn_esf_c->esf_alg_keysize(lconn->cn_enc_session); + else + return -1; +} + + +struct stack_st_X509 * +lsquic_conn_get_server_cert_chain (struct lsquic_conn *lconn) +{ + if (lconn->cn_enc_session) + return lconn->cn_esf_c->esf_get_server_cert_chain(lconn->cn_enc_session); + else + return NULL; +} + + +void +lsquic_conn_make_stream (struct lsquic_conn *lconn) +{ + lconn->cn_if->ci_make_stream(lconn); +} + + +unsigned +lsquic_conn_n_pending_streams (const struct lsquic_conn *lconn) +{ + return lconn->cn_if->ci_n_pending_streams(lconn); +} + + +unsigned +lsquic_conn_n_avail_streams (const struct lsquic_conn *lconn) +{ + return lconn->cn_if->ci_n_avail_streams(lconn); +} + + +unsigned +lsquic_conn_cancel_pending_streams (struct lsquic_conn *lconn, unsigned count) +{ + return lconn->cn_if->ci_cancel_pending_streams(lconn, count); +} + + +void +lsquic_conn_going_away (struct lsquic_conn *lconn) +{ + lconn->cn_if->ci_going_away(lconn); +} + + +void +lsquic_conn_close (struct lsquic_conn *lconn) +{ + lconn->cn_if->ci_close(lconn); +} + + +int +lsquic_conn_is_push_enabled (lsquic_conn_t *lconn) +{ + return lconn->cn_if->ci_is_push_enabled(lconn); +} + + +struct lsquic_engine * +lsquic_conn_get_engine (struct lsquic_conn *lconn) +{ + return lconn->cn_if->ci_get_engine(lconn); +} + + +int +lsquic_conn_push_stream (struct lsquic_conn *lconn, void *hset, + struct lsquic_stream *stream, const struct lsquic_http_headers *headers) +{ + return lconn->cn_if->ci_push_stream(lconn, hset, stream, headers); +} + + +lsquic_conn_ctx_t * +lsquic_conn_get_ctx (const struct lsquic_conn *lconn) +{ + return lconn->cn_conn_ctx; +} + + +void +lsquic_conn_set_ctx (struct lsquic_conn *lconn, lsquic_conn_ctx_t *ctx) +{ + lconn->cn_conn_ctx = ctx; +} + + +void +lsquic_conn_abort (struct lsquic_conn *lconn) +{ + lconn->cn_if->ci_abort(lconn); +} + + +void +lsquic_generate_cid (lsquic_cid_t *cid, size_t len) +{ + if (!len) + { + /* If not set, generate ID between 8 and MAX_CID_LEN bytes in length */ + RAND_bytes((uint8_t *) &len, sizeof(len)); + len %= MAX_CID_LEN - 7; + len += 8; + } + RAND_bytes(cid->idbuf, len); + cid->len = len; +} + + +void +lsquic_generate_scid (void *ctx, struct lsquic_conn *lconn, uint8_t *cid, + unsigned len) +{ + if (len) + RAND_bytes(cid, len); +} + + +void +lsquic_generate_cid_gquic (lsquic_cid_t *cid) +{ + RAND_bytes(cid->idbuf, GQUIC_CID_LEN); + cid->len = GQUIC_CID_LEN; +} + + +void +lsquic_conn_retire_cid (struct lsquic_conn *lconn) +{ + if (lconn->cn_if->ci_retire_cid) + lconn->cn_if->ci_retire_cid(lconn); +} + + +enum LSQUIC_CONN_STATUS +lsquic_conn_status (struct lsquic_conn *lconn, char *errbuf, size_t bufsz) +{ + return lconn->cn_if->ci_status(lconn, errbuf, bufsz); +} + + +const lsquic_cid_t * +lsquic_conn_log_cid (const struct lsquic_conn *lconn) +{ + return &lconn->cn_logid; +} + + +int +lsquic_conn_want_datagram_write (struct lsquic_conn *lconn, int is_want) +{ + if (lconn->cn_if && lconn->cn_if->ci_want_datagram_write) + return lconn->cn_if->ci_want_datagram_write(lconn, is_want); + else + return -1; +} + + +int +lsquic_conn_set_min_datagram_size (struct lsquic_conn *lconn, size_t sz) +{ + if (lconn->cn_if && lconn->cn_if->ci_set_min_datagram_size) + return lconn->cn_if->ci_set_min_datagram_size(lconn, sz); + else + return -1; +} + + +size_t +lsquic_conn_get_min_datagram_size (struct lsquic_conn *lconn) +{ + if (lconn->cn_if && lconn->cn_if->ci_get_min_datagram_size) + return lconn->cn_if->ci_get_min_datagram_size(lconn); + else + return 0; +} + + +#if LSQUIC_CONN_STATS +void +lsquic_conn_stats_diff (const struct conn_stats *cumulative_stats, + const struct conn_stats *previous_stats, + struct conn_stats *new_stats) +{ + const unsigned long *const cum = (void *) cumulative_stats, + *const prev = (void *) previous_stats; + unsigned long *const new = (void *) new_stats; + unsigned i; + + for (i = 0; i < sizeof(*new_stats) / sizeof(new[0]); ++i) + new[i] = cum[i] - prev[i]; +} + + +#endif + + +const char * +lsquic_conn_get_sni (struct lsquic_conn *lconn) +{ + if (lconn->cn_esf_c && lconn->cn_esf_c->esf_get_sni) + return lconn->cn_esf_c->esf_get_sni(lconn->cn_enc_session); + else + return NULL; +} + + +int +lsquic_conn_get_info (lsquic_conn_t *lconn, struct lsquic_conn_info *info) +{ + if (!lconn || !info) + return -1; + if (lconn->cn_if && lconn->cn_if->ci_get_info) + return lconn->cn_if->ci_get_info(lconn, info); + return -1; +} + diff --git a/external/lsquic/src/liblsquic/lsquic_conn.h b/external/lsquic/src/liblsquic/lsquic_conn.h new file mode 100644 index 0000000..e88e2b8 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_conn.h @@ -0,0 +1,449 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_conn.h -- Connection interface + * + * There are two types of connections: full (lsquic_full_conn.h) and mini + * (lsquic_mini_conn.h). The function pointers and struct in this header + * file provide a unified interface engine.c can use to interact with + * either of the connection types. For this to work, struct lsquic_conn + * must be the first element of struct full_conn and struct mini_conn. + */ +#ifndef LSQUIC_CONN_H +#define LSQUIC_CONN_H + +#include +#ifndef WIN32 +#include +#include +#else +#include +#endif + +#ifndef LSQUIC_TEST +#define LSQUIC_TEST 0 +#endif + +struct lsquic_conn; +struct lsquic_engine_public; +struct lsquic_packet_out; +struct lsquic_packet_in; +struct sockaddr; +struct parse_funcs; +struct attq_elem; +#if LSQUIC_CONN_STATS +struct conn_stats; +#endif + +enum lsquic_conn_flags { + LSCONN_TICKED = (1 << 0), + LSCONN_HAS_OUTGOING = (1 << 1), + LSCONN_HASHED = (1 << 2), + LSCONN_MINI = (1 << 3), /* This is a mini connection */ + LSCONN_IMMED_CLOSE = (1 << 4), + LSCONN_PROMOTE_FAIL = (1 << 5), + LSCONN_HANDSHAKE_DONE = (1 << 6), + LSCONN_CLOSING = (1 << 7), + LSCONN_PEER_GOING_AWAY= (1 << 8), + LSCONN_TCID0 = (1 << 9), + LSCONN_VER_SET = (1 <<10), /* cn_version is set */ + LSCONN_EVANESCENT = (1 <<11), /* evanescent connection */ + LSCONN_TICKABLE = (1 <<12), /* Connection is in the Tickable Queue */ + LSCONN_COI_ACTIVE = (1 <<13), + LSCONN_COI_INACTIVE = (1 <<14), + LSCONN_SEND_BLOCKED = (1 <<15), /* Send connection blocked frame */ + LSCONN_PROMOTED = (1 <<16), /* Promoted. Only set if LSCONN_MINI is set */ + LSCONN_NEVER_TICKABLE = (1 <<17), /* Do not put onto the Tickable Queue */ + LSCONN_UNUSED_18 = (1 <<18), + LSCONN_ATTQ = (1 <<19), + LSCONN_SKIP_ON_PROC = (1 <<20), + LSCONN_UNUSED_21 = (1 <<21), + LSCONN_SERVER = (1 <<22), + LSCONN_IETF = (1 <<23), + LSCONN_RETRY_CONN = (1 <<24), /* This is a retry connection */ + LSCONN_VER_UPDATED = (1 <<25), + LSCONN_NO_BL = (1 <<26), +}; + +/* A connection may have things to send and be closed at the same time. + */ +enum tick_st { + TICK_SEND = (1 << 0), + TICK_CLOSE = (1 << 1), + TICK_PROMOTE = (1 << 2), /* Promote mini connection to full connection */ + TICK_RETRY = (1 << 3), /* Send retry packet -- used by mini conns */ +}; + +#define TICK_QUIET 0 + +struct network_path +{ + union { + unsigned char buf[sizeof(struct sockaddr_in6)]; + struct sockaddr sockaddr; + } np_local_addr_u; +#define np_local_addr np_local_addr_u.buf + unsigned char np_peer_addr[sizeof(struct sockaddr_in6)]; + void *np_peer_ctx; + lsquic_cid_t np_dcid; + unsigned short np_pack_size; + unsigned char np_path_id; +}; + +#define NP_LOCAL_SA(path_) (&(path_)->np_local_addr_u.sockaddr) +#define NP_PEER_SA(path_) ((struct sockaddr *) (path_)->np_peer_addr) +#define NP_IS_IPv6(path_) (AF_INET6 == NP_LOCAL_SA(path_)->sa_family) + +struct ack_state +{ + uint32_t arr[6]; +}; + +struct to_coal +{ + const struct lsquic_packet_out *prev_packet; + size_t prev_sz_sum; +}; + +struct conn_iface +{ + enum tick_st + (*ci_tick) (struct lsquic_conn *, lsquic_time_t now); + + void + (*ci_packet_in) (struct lsquic_conn *, struct lsquic_packet_in *); + + /* Note: all packets "checked out" by calling this method should be + * returned back to the connection via ci_packet_sent() or + * ci_packet_not_sent() calls before the connection is ticked next. + * The connection, in turn, should not perform any extra processing + * (especially schedule more packets) during any of these method + * calls. This is because the checked out packets are not accounted + * for by the congestion controller. + */ + struct lsquic_packet_out * + (*ci_next_packet_to_send) (struct lsquic_conn *, const struct to_coal *); + + void + (*ci_packet_sent) (struct lsquic_conn *, struct lsquic_packet_out *); + + void + (*ci_packet_not_sent) (struct lsquic_conn *, struct lsquic_packet_out *); + + void + (*ci_packet_too_large) (struct lsquic_conn *, struct lsquic_packet_out *); + + void + (*ci_hsk_done) (struct lsquic_conn *, enum lsquic_hsk_status); + + void + (*ci_destroy) (struct lsquic_conn *); + + int + (*ci_is_tickable) (struct lsquic_conn *); + + lsquic_time_t + (*ci_next_tick_time) (struct lsquic_conn *, unsigned *why); + + int + (*ci_can_write_ack) (struct lsquic_conn *); + + /* No return status: best effort */ + void + (*ci_write_ack) (struct lsquic_conn *, struct lsquic_packet_out *); + +#if LSQUIC_CONN_STATS + const struct conn_stats * + (*ci_get_stats) (struct lsquic_conn *); + + void + (*ci_log_stats) (struct lsquic_conn *); +#endif + + void + (*ci_client_call_on_new) (struct lsquic_conn *); + + enum LSQUIC_CONN_STATUS + (*ci_status) (struct lsquic_conn *, char *errbuf, size_t bufsz); + + unsigned + (*ci_n_avail_streams) (const struct lsquic_conn *); + + unsigned + (*ci_n_pending_streams) (const struct lsquic_conn *); + + unsigned + (*ci_cancel_pending_streams) (struct lsquic_conn *, unsigned n); + + void + (*ci_going_away) (struct lsquic_conn *); + + int + (*ci_is_push_enabled) (struct lsquic_conn *); + + /* Optional: only used by gQUIC frames reader */ + /* If stream is already closed, NULL is returned */ + struct lsquic_stream * + (*ci_get_stream_by_id) (struct lsquic_conn *, lsquic_stream_id_t stream_id); + + struct lsquic_engine * + (*ci_get_engine) (struct lsquic_conn *); + + void + (*ci_make_stream) (struct lsquic_conn *); + + void + (*ci_abort) (struct lsquic_conn *); + + void + (*ci_retire_cid) (struct lsquic_conn *); + + void + (*ci_close) (struct lsquic_conn *); + + void + (*ci_stateless_reset) (struct lsquic_conn *); + + int + (*ci_crypto_keysize) (const struct lsquic_conn *); + + int + (*ci_crypto_alg_keysize) (const struct lsquic_conn *); + + enum lsquic_crypto_ver + (*ci_crypto_ver) (const struct lsquic_conn *); + + const char * + (*ci_crypto_cipher) (const struct lsquic_conn *); + + int + (*ci_push_stream) (struct lsquic_conn *, void *hset, struct lsquic_stream *, + const struct lsquic_http_headers *headers); + + /* Use this to abort the connection when unlikely errors occur */ + void + (*ci_internal_error) (struct lsquic_conn *, const char *format, ...) +#if __GNUC__ + __attribute__((format(printf, 2, 3))) +#endif + ; + + /* Abort connection with error */ + void + (*ci_abort_error) (struct lsquic_conn *, int is_app, unsigned error_code, + const char *format, ...) +#if __GNUC__ + __attribute__((format(printf, 4, 5))) +#endif + ; + + void + (*ci_tls_alert) (struct lsquic_conn *, uint8_t); + + /* Returns 0 if connection is to be deleted immediately */ + lsquic_time_t + (*ci_drain_time) (const struct lsquic_conn *); + + /* Returns true if it's time to report the connection's CIDs' liveness */ + int + (*ci_report_live) (struct lsquic_conn *, lsquic_time_t now); + + /* If `local_sa' is NULL, return default path */ + struct network_path * + (*ci_get_path) (struct lsquic_conn *, const struct sockaddr *local_sa); + + unsigned char + (*ci_record_addrs) (struct lsquic_conn *, void *peer_ctx, + const struct sockaddr *local_sa, const struct sockaddr *peer_sa); + + /* Optional method. Only used by the IETF client code. */ + void + (*ci_drop_crypto_streams) (struct lsquic_conn *); + + /* Optional method. Only used by IETF connections */ + void + (*ci_count_garbage) (struct lsquic_conn *, size_t); + + /* Optional method. Must be implemented if connection sends MTU probes */ + void + (*ci_mtu_probe_acked) (struct lsquic_conn *, + const struct lsquic_packet_out *); + + /* Optional method. It is called when RTO occurs. */ + void + (*ci_retx_timeout) (struct lsquic_conn *); + + void + (*ci_ack_snapshot) (struct lsquic_conn *, struct ack_state *); + + void + (*ci_ack_rollback) (struct lsquic_conn *, struct ack_state *); + + /* Optional method. */ + int + (*ci_want_datagram_write) (struct lsquic_conn *, int); + + /* Optional method */ + int + (*ci_set_min_datagram_size) (struct lsquic_conn *, size_t); + + /* Optional method */ + size_t + (*ci_get_min_datagram_size) (struct lsquic_conn *); + + /* Optional method */ + void + (*ci_early_data_failed) (struct lsquic_conn *); + + int + (*ci_get_info) (lsquic_conn_t *conn, struct lsquic_conn_info *info); + +}; + +#define LSCONN_CCE_BITS 3 +#define LSCONN_MAX_CCES (1 << LSCONN_CCE_BITS) + +struct conn_cid_elem +{ + struct lsquic_hash_elem cce_hash_el; /* Must be first element */ + lsquic_cid_t cce_cid; + union { + unsigned seqno; + unsigned short port; + } cce_u; +#define cce_seqno cce_u.seqno +#define cce_port cce_u.port + enum conn_cce_flags { + CCE_USED = 1 << 0, /* Connection ID has been used */ + CCE_SEQNO = 1 << 1, /* cce_seqno is set (CIDs in Initial + * packets have no sequence number). + */ + CCE_REG = 1 << 2, /* CID has been registered */ + CCE_PORT = 1 << 3, /* It's not a CID element at all: + * cce_port is the hash value. + */ + } cce_flags; +}; + +struct lsquic_conn +{ + void *cn_enc_session; + const struct enc_session_funcs_common + *cn_esf_c; + union { + const struct enc_session_funcs_gquic *g; + const struct enc_session_funcs_iquic *i; + } cn_esf; +#define cn_cid cn_cces[0].cce_cid + STAILQ_ENTRY(lsquic_conn) cn_next_closed_conn; + /* This and cn_next_closed_conn could be made into a union, as new full + * connections are never closed. + */ + STAILQ_ENTRY(lsquic_conn) cn_next_new_full; + TAILQ_ENTRY(lsquic_conn) cn_next_ticked; + TAILQ_ENTRY(lsquic_conn) cn_next_out; + TAILQ_ENTRY(lsquic_conn) cn_next_pr; + const struct conn_iface *cn_if; + const struct parse_funcs *cn_pf; + struct attq_elem *cn_attq_elem; + lsquic_cid_t cn_logid; + lsquic_time_t cn_last_sent; + lsquic_time_t cn_last_ticked; + struct conn_cid_elem *cn_cces; /* At least one is available */ + lsquic_conn_ctx_t *cn_conn_ctx; + enum lsquic_conn_flags cn_flags; + enum lsquic_version cn_version:8; + unsigned char cn_cces_mask; /* Those that are set */ + unsigned char cn_n_cces; /* Number of CCEs in cn_cces */ + unsigned char cn_cur_cce_idx; +#if LSQUIC_TEST + struct conn_cid_elem cn_cces_buf[8]; +#define LSCONN_INITIALIZER_CID(lsconn_, cid_) { \ + .cn_cces = (lsconn_).cn_cces_buf, \ + .cn_cces_buf[0].cce_seqno = 0, \ + .cn_cces_buf[0].cce_flags = CCE_SEQNO, \ + .cn_cces_buf[0].cce_cid = (cid_), \ + .cn_n_cces = 8, .cn_cces_mask = 1, } +#define LSCONN_INITIALIZER_CIDLEN(lsconn_, len_) { \ + .cn_cces = (lsconn_).cn_cces_buf, \ + .cn_cces_buf[0].cce_seqno = 0, \ + .cn_cces_buf[0].cce_flags = CCE_SEQNO, \ + .cn_cces_buf[0].cce_cid = { .len = len_ }, \ + .cn_n_cces = 8, .cn_cces_mask = 1, } +#define LSCONN_INITIALIZE(lsconn_) do { \ + (lsconn_)->cn_cces = (lsconn_)->cn_cces_buf; \ + (lsconn_)->cn_n_cces = 8; (lsconn_)->cn_cces_mask = 1; } while (0) +#endif +}; + +#define END_OF_CCES(conn) ((conn)->cn_cces + (conn)->cn_n_cces) + +#define CN_SCID(conn) (&(conn)->cn_cces[(conn)->cn_cur_cce_idx].cce_cid) + +unsigned char +lsquic_conn_record_sockaddr (lsquic_conn_t *lconn, void *peer_ctx, + const struct sockaddr *local_sa, const struct sockaddr *peer_sa); + +int +lsquic_conn_decrypt_packet (lsquic_conn_t *lconn, + struct lsquic_engine_public *, struct lsquic_packet_in *); + +int +lsquic_conn_copy_and_release_pi_data (const lsquic_conn_t *conn, + struct lsquic_engine_public *, struct lsquic_packet_in *); + +void +lsquic_generate_cid (lsquic_cid_t *cid, size_t len); + +void +lsquic_generate_cid_gquic (lsquic_cid_t *cid); + +void +lsquic_generate_scid (void *, struct lsquic_conn *lconn, uint8_t *scid, + unsigned len); + +void +lsquic_conn_retire_cid (lsquic_conn_t *lconn); + +#define lsquic_conn_adv_time(c) ((c)->cn_attq_elem->ae_adv_time) + +#if LSQUIC_CONN_STATS +struct conn_stats { + /* All counters are of the same type, unsigned long, because we cast the + * struct to an array to update the aggregate. + */ + unsigned long n_ticks; /* How many time connection was ticked */ + struct { + unsigned long stream_data_sz; /* Sum of all STREAM frames payload */ + unsigned long stream_frames; /* Number of STREAM frames */ + unsigned long packets, /* Incoming packets */ + undec_packets, /* Undecryptable packets */ + dup_packets, /* Duplicate packets */ + err_packets; /* Error packets(?) */ + unsigned long n_acks, + n_acks_proc, + n_acks_merged; + unsigned long bytes; /* Overall bytes in */ + unsigned long headers_uncomp; /* Sum of uncompressed header bytes */ + unsigned long headers_comp; /* Sum of compressed header bytes */ + } in; + struct { + unsigned long stream_data_sz; + unsigned long stream_frames; + unsigned long acks; + unsigned long packets; /* Number of sent packets */ + unsigned long acked_via_loss; /* Number of packets acked via loss record */ + unsigned long lost_packets; + unsigned long retx_packets; /* Number of retransmitted packets */ + unsigned long bytes; /* Overall bytes out */ + unsigned long headers_uncomp; /* Sum of uncompressed header bytes */ + unsigned long headers_comp; /* Sum of compressed header bytes */ + } out; +}; + +void +lsquic_conn_stats_diff (const struct conn_stats *cumulative, + const struct conn_stats *previous, + struct conn_stats *new); +#endif + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_conn_flow.h b/external/lsquic/src/liblsquic/lsquic_conn_flow.h new file mode 100644 index 0000000..37ce840 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_conn_flow.h @@ -0,0 +1,84 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_conn_flow.h -- Connection flow control-related functions + */ + +#ifndef LSQUIC_CONN_FLOW_H +#define LSQUIC_CONN_FLOW_H 1 +#include + +struct lsquic_conn_public; + +typedef struct lsquic_cfcw { + struct lsquic_conn_public + *cf_conn_pub; + uint64_t cf_max_recv_off; /* Largest offset observed (cumulative) */ + uint64_t cf_recv_off; /* Flow control receive offset */ + uint64_t cf_read_off; /* Number of bytes consumed (cumulative) */ + lsquic_time_t cf_last_updated; + unsigned cf_max_recv_win; /* Maximum receive window */ +} lsquic_cfcw_t; + +struct lsquic_conn_cap { + uint64_t cc_sent; /* Number of bytes sent on connection */ + uint64_t cc_max; /* Maximum cumulative number of bytes allowed + * to be sent on this connection. + */ + uint64_t cc_blocked; /* Last blocked offset used */ +}; + + +static inline void +lsquic_conn_cap_init (struct lsquic_conn_cap *cc, uint64_t max) +{ + cc->cc_sent = 0; + cc->cc_max = max; +} + + +static inline uint64_t +lsquic_conn_cap_avail (const struct lsquic_conn_cap *cap) +{ + assert(cap->cc_max >= cap->cc_sent); + return cap->cc_max - cap->cc_sent; +} + + +void +lsquic_cfcw_init (lsquic_cfcw_t *, struct lsquic_conn_public *, + unsigned initial_max_recv_window); + +/* If update is to be sent, updates max_recv_off and returns true. Note + * that if you call this function twice, the second call will return false. + */ +int +lsquic_cfcw_fc_offsets_changed (lsquic_cfcw_t *); + +static inline uint64_t +lsquic_cfcw_get_fc_recv_off (struct lsquic_cfcw *fc) +{ + return +fc->cf_recv_off; +} + +static inline uint64_t +lsquic_cfcw_get_max_recv_off (struct lsquic_cfcw *fc) +{ + return +fc->cf_max_recv_off; +} + +static inline uint64_t +lsquic_cfcw_get_max_recv_window (struct lsquic_cfcw *fc) +{ + return +fc->cf_max_recv_win; +} + +/* Returns false if flow control violation is encountered */ +int +lsquic_cfcw_incr_max_recv_off (lsquic_cfcw_t *, uint64_t); + +/* Void because we do not expect the caller to make a mistake. + */ +void +lsquic_cfcw_incr_read_off (lsquic_cfcw_t *, uint64_t); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_conn_public.h b/external/lsquic/src/liblsquic/lsquic_conn_public.h new file mode 100644 index 0000000..c6bbb3a --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_conn_public.h @@ -0,0 +1,73 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_conn_public.h -- Connection's "public interface" + * + * This structure is used to bundle things in connection that stream + * needs access to into a single object. This way, the space per + * stream object is one pointer instead of four or five. + */ + +#ifndef LSQUIC_CONN_PUBLIC_H +#define LSQUIC_CONN_PUBLIC_H 1 + +struct lsquic_conn; +struct lsquic_engine_public; +struct lsquic_mm; +struct lsquic_hash; +struct headers_stream; +struct lsquic_send_ctl; +#if LSQUIC_CONN_STATS +struct conn_stats; +#endif +struct qpack_enc_hdl; +struct qpack_dec_hdl; +struct network_path; + +struct lsquic_conn_public { + struct lsquic_streams_tailq sending_streams, /* Send RST_STREAM, BLOCKED, and WUF frames */ + read_streams, + write_streams, /* Send STREAM frames */ + service_streams; + struct lsquic_hash *all_streams; + struct lsquic_cfcw cfcw; + struct lsquic_conn_cap conn_cap; + struct lsquic_rtt_stats rtt_stats; + struct lsquic_engine_public *enpub; + struct malo *packet_out_malo; + struct lsquic_conn *lconn; + struct lsquic_mm *mm; + union { + struct { + struct headers_stream *hs; + } gquic; + struct { + struct qpack_enc_hdl *qeh; + struct qpack_dec_hdl *qdh; + struct hcso_writer *hcso; + struct lsquic_hash *promises; + } ietf; + } u; + enum { + CP_STREAM_UNBLOCKED = 1 << 0, /* Set when a stream becomes unblocked */ + } cp_flags; + struct lsquic_send_ctl *send_ctl; +#if LSQUIC_CONN_STATS + struct conn_stats *conn_stats; +#endif + const struct network_path *path; +#if LSQUIC_EXTRA_CHECKS + unsigned long stream_frame_bytes; + unsigned wtp_level; /* wtp: Write To Packets */ +#endif + /* "unsigned" is wide enough: these values are only used for amplification + * limit before initial path is validated. + */ + unsigned bytes_in; /* successfully processed */ + unsigned bytes_out; + /* Used for no-progress timeout */ + lsquic_time_t last_tick, last_prog; + unsigned max_peer_ack_usec; + uint8_t n_special_streams; +}; + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_crand.c b/external/lsquic/src/liblsquic/lsquic_crand.c new file mode 100644 index 0000000..61b77a8 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_crand.c @@ -0,0 +1,47 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include + +#include "lsquic_crand.h" + + +#define OFF_MASK(crand_) ((sizeof((crand_)->rand_buf) * 2) - 1) + + +uint8_t +lsquic_crand_get_nybble (struct crand *crand) +{ + uint8_t byte; + + if (crand->nybble_off == 0) + RAND_bytes(crand->rand_buf, sizeof(crand->rand_buf)); + + byte = crand->rand_buf[crand->nybble_off / 2]; + if (crand->nybble_off & 1) + byte >>= 4; + else + byte &= 0xF; + crand->nybble_off += 1; + crand->nybble_off &= OFF_MASK(crand); + return byte; +} + + +uint8_t +lsquic_crand_get_byte (struct crand *crand) +{ + uint8_t byte; + + if (crand->nybble_off & 1) + return (lsquic_crand_get_nybble(crand) << 4) + | lsquic_crand_get_nybble(crand); + else + { + if (crand->nybble_off == 0) + RAND_bytes(crand->rand_buf, sizeof(crand->rand_buf)); + byte = crand->rand_buf[crand->nybble_off / 2]; + crand->nybble_off += 2; + crand->nybble_off &= OFF_MASK(crand); + return byte; + } +} diff --git a/external/lsquic/src/liblsquic/lsquic_crand.h b/external/lsquic/src/liblsquic/lsquic_crand.h new file mode 100644 index 0000000..9e9d904 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_crand.h @@ -0,0 +1,23 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_crand.h -- cached random bytes + * + * The idea is to reduce number of calls to RAND_bytes() + */ + +#ifndef LSQUIC_CRAND_H +#define LSQUIC_CRAND_H 1 + +struct crand +{ + unsigned nybble_off; /* Increments 2 per byte */ + uint8_t rand_buf[256]; /* Must be power of two */ +}; + +uint8_t +lsquic_crand_get_nybble (struct crand *); + +uint8_t +lsquic_crand_get_byte (struct crand *); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_crt_compress.c b/external/lsquic/src/liblsquic/lsquic_crt_compress.c new file mode 100644 index 0000000..c6da73b --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_crt_compress.c @@ -0,0 +1,824 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include + +#include +#ifndef WIN32 +#else +#include +#include +#endif + +#include "lsquic_int_types.h" +#include "lsquic_crypto.h" +#include "lsquic_crt_compress.h" +#include "lsquic_util.h" + +#include "lsquic_str.h" + +#include "common_cert_set_2.c" +#include "common_cert_set_3.c" + +/* + * common_cert_sub_strings contains ~1500 bytes of common certificate substrings + * as a dictionary of zlib from the Alexa Top 5000 set. + */ +static const unsigned char common_cert_sub_strings[] = { + 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, + 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, + 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, + 0x5f, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x04, 0x01, + 0x06, 0x06, 0x0b, 0x60, 0x86, 0x48, 0x01, 0x86, 0xfd, 0x6d, 0x01, 0x07, + 0x17, 0x01, 0x30, 0x33, 0x20, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, + 0x64, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x53, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x34, + 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, + 0x32, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x2d, 0x61, 0x69, 0x61, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x45, 0x2d, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, + 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x2e, 0x63, 0x65, + 0x72, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x4a, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2f, 0x63, 0x70, 0x73, 0x20, 0x28, 0x63, 0x29, 0x30, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x1d, 0x13, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x7b, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xd2, + 0x6f, 0x64, 0x6f, 0x63, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x2e, + 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, + 0x04, 0x14, 0xb4, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, + 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x30, 0x0b, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x01, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, + 0x81, 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, + 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, + 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, + 0x55, 0x04, 0x0a, 0x13, 0x11, 0x47, 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, + 0x2e, 0x63, 0x6f, 0x6d, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x33, + 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2a, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x31, 0x30, 0x30, 0x2e, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x27, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, + 0x04, 0x05, 0x13, 0x08, 0x30, 0x37, 0x39, 0x36, 0x39, 0x32, 0x38, 0x37, + 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x31, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x05, 0xa0, 0x30, 0x0c, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, + 0x30, 0x1d, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, + 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x03, 0x02, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, + 0x04, 0x04, 0x03, 0x02, 0x05, 0xa0, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, + 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, + 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, + 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x67, 0x64, 0x73, 0x31, 0x2d, 0x32, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, + 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, + 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, + 0x70, 0x73, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, + 0x0d, 0x31, 0x33, 0x30, 0x35, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x73, 0x30, 0x39, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x30, 0x44, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, + 0x3d, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x0b, 0x60, 0x86, 0x48, 0x01, 0x86, + 0xf8, 0x45, 0x01, 0x07, 0x17, 0x06, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, + 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1b, 0x53, 0x31, 0x17, + 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, 0x72, + 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, + 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3b, 0x30, 0x39, + 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x32, 0x54, 0x65, 0x72, 0x6d, 0x73, + 0x20, 0x6f, 0x66, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x74, 0x20, 0x68, + 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, + 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x72, 0x70, 0x61, 0x20, 0x28, 0x63, 0x29, 0x30, 0x31, 0x10, 0x30, 0x0e, + 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, 0x31, 0x13, 0x30, 0x11, + 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x47, 0x31, 0x13, 0x30, 0x11, + 0x06, 0x0b, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x3c, 0x02, 0x01, + 0x03, 0x13, 0x02, 0x55, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x14, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0f, 0x13, 0x14, 0x50, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x12, 0x31, 0x21, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x18, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x20, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x31, 0x14, 0x31, 0x31, + 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x28, 0x53, 0x65, 0x65, + 0x20, 0x77, 0x77, 0x77, 0x2e, 0x72, 0x3a, 0x2f, 0x2f, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x65, 0x2e, 0x67, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, + 0x69, 0x67, 0x6e, 0x31, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x41, + 0x2e, 0x63, 0x72, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, + 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x45, 0x63, 0x72, + 0x6c, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x73, 0x64, 0x31, 0x1a, + 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x45, 0x56, 0x49, 0x6e, 0x74, 0x6c, 0x2d, 0x63, 0x63, 0x72, + 0x74, 0x2e, 0x67, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x31, 0x6f, 0x63, 0x73, 0x70, 0x2e, + 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, + 0x30, 0x39, 0x72, 0x61, 0x70, 0x69, 0x64, 0x73, 0x73, 0x6c, 0x2e, 0x63, + 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x2f, 0x30, 0x81, 0x80, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x74, 0x30, 0x72, 0x30, 0x24, 0x06, 0x08, 0x2b, + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6f, 0x64, + 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x4a, 0x06, + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x3e, 0x68, + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, + 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x67, 0x64, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x72, + 0x74, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0xfd, 0xac, 0x61, 0x32, 0x93, 0x6c, 0x45, 0xd6, 0xe2, 0xee, + 0x85, 0x5f, 0x9a, 0xba, 0xe7, 0x76, 0x99, 0x68, 0xcc, 0xe7, 0x30, 0x27, + 0x86, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x86, 0x30, + 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, +}; + +#define common_certs_num 2 +const common_cert_t common_cert_set[common_certs_num] = { + {common_certs2_num, common_certs2, common_certs2_lens, common_certs2_hash}, + {common_certs3_num, common_certs3, common_certs3_lens, common_certs3_hash}, +}; + + +static lsquic_str_t *s_ccsbuf; + +static int +match_common_cert (lsquic_str_t * cert, lsquic_str_t * common_set_hashes, + uint64_t* out_hash, uint32_t* out_index); + +int +lsquic_crt_init (void) +{ + unsigned i; + + s_ccsbuf = lsquic_str_new(NULL, 0); + if (!s_ccsbuf) + return -1; + for (i=0 ;i b_len) - (b_len > a_len); +} + + +/* 0, matched -1, error */ +static int +match_common_cert (lsquic_str_t * cert, lsquic_str_t * common_set_hashes, + uint64_t* out_hash, uint32_t* out_index) +{ + size_t i, j; + int n; + uint64_t hash; + size_t min, max, mid; + + if (lsquic_str_len(common_set_hashes) % sizeof(uint64_t) != 0) + return -1; + + for (i = 0; i < lsquic_str_len(common_set_hashes) / sizeof(uint64_t); i++) + { + memcpy(&hash, lsquic_str_buf(common_set_hashes) + i * sizeof(uint64_t), + sizeof(uint64_t)); + + for (j = 0; j < common_certs_num; j++) + { + if (common_cert_set[j].hash != hash) + continue; + + if (common_cert_set[j].num_certs == 0) + continue; + + min = 0; + max = common_cert_set[j].num_certs - 1; + while (max >= min) + { + mid = min + ((max - min) / 2); + n = comp_ls_str(cert, common_cert_set[j].certs[mid], + common_cert_set[j].lens[mid]); + if (n < 0) + { + if (mid == 0) + break; + max = mid - 1; + } + else if (n > 0) + min = mid + 1; + else + { + *out_hash = hash; + *out_index = mid; + return 0; + } + } + } + } + + return -1; +} + + +/* result is written to dict */ +static void +make_zlib_dict_for_entries(cert_entry_t *entries, + lsquic_str_t **certs, size_t certs_count, + lsquic_str_t *dict) +{ + int i; + size_t zlib_dict_size = 0; + for (i = certs_count - 1; i >= 0; --i) + { + if (entries[i].type != ENTRY_COMPRESSED) + { + zlib_dict_size += lsquic_str_len(certs[i]); + } + } + + // At the end of the dictionary is a block of common certificate substrings. + zlib_dict_size += sizeof(common_cert_sub_strings); + + for (i = certs_count - 1; i >= 0; --i) + { + if (entries[i].type != ENTRY_COMPRESSED) + { + lsquic_str_append(dict, lsquic_str_buf(certs[i]), lsquic_str_len(certs[i])); + } + } + + lsquic_str_append(dict, (const char *)common_cert_sub_strings, sizeof(common_cert_sub_strings)); + assert((size_t)lsquic_str_len(dict) == zlib_dict_size); +} + + +static +void get_certs_hash(lsquic_str_t *certs, size_t certs_count, uint64_t *hashs) +{ + size_t i; + for(i = 0; i < certs_count; ++i) + { + hashs[i] = lsquic_fnv1a_64((const uint8_t *)lsquic_str_buf(&certs[i]), lsquic_str_len(&certs[i])); + } +} + + +static void get_certs_entries(lsquic_str_t **certs, size_t certs_count, + lsquic_str_t *client_common_set_hashes, + lsquic_str_t *client_cached_cert_hashes, + cert_entry_t *entries) +{ + size_t i; + int j; + cert_entry_t *entry; + uint64_t hash, cached_hash; + bool cached; + + const bool cached_valid = (lsquic_str_len(client_cached_cert_hashes) % sizeof(uint64_t) == 0) + && (lsquic_str_len(client_cached_cert_hashes) > 0); + + assert(&entries[certs_count - 1]); + + for (i = 0; itype = ENTRY_CACHED; + entry->hash = hash; + cached = true; + break; + } + + if (cached) + continue; + } + + if (0 == match_common_cert(certs[i], client_common_set_hashes, + &entry->set_hash, &entry->index)) + { + entry->type = ENTRY_COMMON; + continue; + } + + entry->type = ENTRY_COMPRESSED; + } +} + +static size_t +get_entries_size(cert_entry_t *entries, size_t entries_count) +{ + size_t i; + size_t entries_size = 0; + for(i=0; ibuf; + const unsigned char *in_end = in + ccert->len; + size_t idx = 0; + uint8_t type_byte; + + for (;;) + { + if (in >= in_end) + return -1; + + type_byte = in[0]; + ++in; + if (type_byte == 0) + break; + + ++idx; + switch(type_byte) + { + case ENTRY_COMPRESSED: + break; + case ENTRY_CACHED: + { + if (in_end - in < (int)sizeof(uint64_t)) + return -1; + in += sizeof(uint64_t); + break; + } + case ENTRY_COMMON: + { + if (in_end - in < (int)(sizeof(uint64_t) + sizeof(uint32_t))) + return -1; + in += sizeof(uint64_t) + sizeof(uint32_t); + break; + } + default: + return -1; + } + } + return idx; +} + + +/* return 0: OK, -1, error */ +static int parse_entries(const unsigned char **in_out, const unsigned char *const in_end, + lsquic_str_t *cached_certs, size_t cached_certs_count, + cert_entry_t *out_entries, + lsquic_str_t **out_certs, size_t *out_certs_count) +{ + const unsigned char *in = *in_out; + size_t idx = 0; + uint64_t* cached_hashes; + cert_entry_t *entry; + lsquic_str_t *cert; + uint8_t type_byte; + int rv; + size_t i; + + cached_hashes = NULL; + + for (;;) + { + /* XXX potential invalid read */ + type_byte = in[0]; + ++in; + + if (type_byte == 0) + break; + + entry = &out_entries[idx]; + cert = out_certs[idx]; + /* XXX This seems dangerous -- there is no guard that `idx' does not + * exceed `out_certs_count'. + */ + lsquic_str_d(cert); + + ++idx; + entry->type = type_byte; + switch (entry->type) + { + case ENTRY_COMPRESSED: + break; + case ENTRY_CACHED: + { + memcpy(&entry->hash, in, sizeof(uint64_t)); + in += sizeof(uint64_t); + + if (!cached_hashes) + { + cached_hashes = malloc(cached_certs_count * sizeof(uint64_t));; + if (!cached_hashes) + goto err; + get_certs_hash(cached_certs, cached_certs_count, cached_hashes); + } + + for (i=0; ihash) + { + lsquic_str_append(cert, lsquic_str_buf(&cached_certs[i]), + lsquic_str_len(&cached_certs[i])); + break; + } + } + /* XXX: return -1 if not found? Logic removed in + 4fd7e76bc031ac637e76c7f0930aff53f5b71705 */ + break; + } + case ENTRY_COMMON: + { + memcpy(&entry->set_hash, in, sizeof(uint64_t)); + in += sizeof(uint64_t); + memcpy(&entry->index, in, sizeof(uint32_t)); + in += sizeof(uint32_t); + + if (0 == lsquic_get_common_cert(entry->set_hash, entry->index, cert)) + break; + else + goto err; + } + default: + goto err; + } + } + + rv = 0; + *in_out = in; + *out_certs_count = idx; + + cleanup: + free(cached_hashes); + return rv; + + err: + rv = -1; + goto cleanup; +} + + +struct compressed_cert * +lsquic_compress_certs (lsquic_str_t **certs, size_t certs_count, + lsquic_str_t *client_common_set_hashes, + lsquic_str_t *client_cached_cert_hashes) +{ + size_t i; + size_t uncompressed_size = 0, compressed_size = 0 ; + z_stream z; + lsquic_str_t *dict; + size_t entries_size, result_length; + int out_len; + uint8_t* out; + uint32_t tmp_size_32; + cert_entry_t *entries; + struct compressed_cert *ccert; + + ccert = NULL; + entries = malloc(sizeof(cert_entry_t) * certs_count); + if (!entries) + return NULL; + + dict = lsquic_str_new(NULL, 0); + if (!dict) + goto err; + + get_certs_entries(certs, certs_count, client_common_set_hashes, + client_cached_cert_hashes, entries); + + for (i = 0; i < certs_count; i++) + { + if (entries[i].type == ENTRY_COMPRESSED) + { + /*uint32_t length + cert content*/ + uncompressed_size += 4 + lsquic_str_len(certs[i]); + } + } + + if (uncompressed_size > 0) + { + memset(&z, 0, sizeof(z)); + if (Z_OK != deflateInit(&z, Z_DEFAULT_COMPRESSION)) + goto err; + + make_zlib_dict_for_entries(entries, certs, certs_count, dict); + if(Z_OK != deflateSetDictionary(&z, (const unsigned char *)lsquic_str_buf(dict), lsquic_str_len(dict))) + goto err; + compressed_size = deflateBound(&z, uncompressed_size); + } + + entries_size = get_entries_size(entries, certs_count); + result_length = entries_size + (uncompressed_size > 0 ? 4 : 0) + + compressed_size; + ccert = malloc(sizeof(*ccert) + result_length); + if (!ccert) + goto err; + ccert->refcnt = 0; + + out = ccert->buf; + serialize_cert_entries(out, &out_len, entries, certs_count); + out += entries_size; + + if (uncompressed_size == 0) + { + ccert->len = entries_size; + goto cleanup; + } + + tmp_size_32 = uncompressed_size; + memcpy(out, &tmp_size_32, sizeof(uint32_t)); + out += sizeof(uint32_t); + + z.next_out = out; + z.avail_out = compressed_size; + + for (i = 0; i < certs_count; ++i) + { + if (entries[i].type != ENTRY_COMPRESSED) + continue; + + tmp_size_32 = lsquic_str_len(certs[i]); + z.next_in = (uint8_t*)(&tmp_size_32); + z.avail_in = sizeof(tmp_size_32); + if (Z_OK != deflate(&z, Z_NO_FLUSH) || z.avail_in) + goto err; + z.next_in = (unsigned char *)lsquic_str_buf(certs[i]); + z.avail_in = lsquic_str_len(certs[i]); + if (Z_OK != deflate(&z, Z_NO_FLUSH) || z.avail_in) + goto err; + } + + z.avail_in = 0; + if (Z_STREAM_END != deflate(&z, Z_FINISH)) + goto err; + + ccert->len = result_length - z.avail_out; + + cleanup: + free(entries); + if (dict) + lsquic_str_delete(dict); + if (uncompressed_size) + deflateEnd(&z); + return ccert; + + err: + if (ccert) + free(ccert); + ccert = NULL; + goto cleanup; +} + + +/* 0: ok */ +int +lsquic_decompress_certs (const unsigned char *in, const unsigned char *in_end, + lsquic_str_t *cached_certs, size_t cached_certs_count, + lsquic_str_t **out_certs, size_t *out_certs_count) +{ + int ret; + size_t i; + uint8_t* uncompressed_data, *uncompressed_data_buf; + lsquic_str_t *dict; + uint32_t uncompressed_size; + size_t count = *out_certs_count; + cert_entry_t *entries; + z_stream z; + + assert(*out_certs_count > 0 && *out_certs_count < 10000 + && "Call lsquic_get_certs_count() to get right certificates count first and make enough room for out_certs_count"); + + if (count == 0 || count > 10000) + return -1; + + dict = lsquic_str_new(NULL, 0); + if (!dict) + return -1; + + uncompressed_data_buf = NULL; +#ifdef WIN32 + uncompressed_data = NULL; +#endif + entries = malloc(count * sizeof(cert_entry_t)); + if (!entries) + goto err; + + ret = parse_entries(&in, in_end, cached_certs, cached_certs_count, + entries, out_certs, out_certs_count); + if (ret) + goto err; + + /* re-assign count with real valus */ + count = *out_certs_count; + + if (in < in_end) + { + if (in_end - in < (int)sizeof(uint32_t)) + goto err; + + memcpy(&uncompressed_size, in, sizeof(uncompressed_size)); + in += sizeof(uint32_t); + /* XXX Is 128 KB an arbitrary limit or is there a reason behind it? */ + if (uncompressed_size > 128 * 1024) + goto err; + + uncompressed_data_buf = uncompressed_data = malloc(uncompressed_size); + if (!uncompressed_data) + goto err; + + memset(&z, 0, sizeof(z)); + z.next_out = uncompressed_data; + z.avail_out = uncompressed_size; + z.next_in = (unsigned char *) in; + z.avail_in = in_end - in; + + if (Z_OK != inflateInit(&z)) + goto err; + + ret = inflate(&z, Z_FINISH); + if (ret == Z_NEED_DICT) + { + lsquic_str_d(dict); + make_zlib_dict_for_entries(entries, out_certs, count, dict); + if (Z_OK != inflateSetDictionary(&z, (const unsigned char *)lsquic_str_buf(dict), lsquic_str_len(dict))) + goto err; + ret = inflate(&z, Z_FINISH); + } + + if (Z_STREAM_END != ret || z.avail_out > 0 || z.avail_in > 0) + goto err; + } + else + uncompressed_size = 0; + + for (i = 0; i < count; i++) + { + switch (entries[i].type) + { + case ENTRY_COMPRESSED: + if (uncompressed_size < sizeof(uint32_t)) + goto err; + lsquic_str_d(out_certs[i]); + uint32_t cert_len; + memcpy(&cert_len, uncompressed_data, sizeof(cert_len)); + uncompressed_data += sizeof(uint32_t); + uncompressed_size -= sizeof(uint32_t); + if (uncompressed_size < cert_len) + goto err; + lsquic_str_append(out_certs[i], (const char *)uncompressed_data, cert_len); + uncompressed_data += cert_len; + uncompressed_size -= cert_len; + break; + case ENTRY_CACHED: + case ENTRY_COMMON: + default: + break; + } + } + + cleanup: + lsquic_str_delete(dict); + free(entries); + if (uncompressed_data_buf) + inflateEnd(&z); + free(uncompressed_data_buf); + if (0 == uncompressed_size) + return 0; + else + return -1; + + err: + uncompressed_size = 1; /* This triggers return -1 above */ + goto cleanup; +} + + +void +lsquic_crt_cleanup (void) +{ + if (s_ccsbuf) + { + lsquic_str_delete(s_ccsbuf); + s_ccsbuf = NULL; + } +} diff --git a/external/lsquic/src/liblsquic/lsquic_crt_compress.h b/external/lsquic/src/liblsquic/lsquic_crt_compress.h new file mode 100644 index 0000000..07a819d --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_crt_compress.h @@ -0,0 +1,75 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef __LSQUIC_CRT_COMPRESS_H__ +#define __LSQUIC_CRT_COMPRESS_H__ + +#include + +struct lsquic_str; + +#ifdef __cplusplus +extern "C" { +#endif + + +enum entry_type { + END_OF_LIST = 0, + ENTRY_COMPRESSED = 1, + ENTRY_CACHED = 2, + ENTRY_COMMON = 3, +}; + +typedef struct cert_entry_st { + enum entry_type type; + uint32_t index; + uint64_t hash; + uint64_t set_hash; +} cert_entry_t; + + +typedef struct common_cert_st +{ + size_t num_certs; + const unsigned char* const* certs; + const size_t* lens; + uint64_t hash; +} common_cert_t; + +int +lsquic_crt_init (void); + +struct lsquic_str * lsquic_get_common_certs_hash(); + + +int lsquic_get_common_cert(uint64_t hash, uint32_t index, struct lsquic_str *buf); + +struct compressed_cert +{ + size_t len; + unsigned refcnt; + unsigned char buf[0]; /* len bytes */ +}; + +/* Returns newly allocated structure or NULL on error */ +struct compressed_cert * +lsquic_compress_certs(struct lsquic_str **certs, size_t certs_count, + struct lsquic_str *client_common_set_hashes, + struct lsquic_str *client_cached_cert_hashes); + +int +lsquic_get_certs_count (const struct compressed_cert *); + +int lsquic_decompress_certs(const unsigned char *in, const unsigned char *in_end, + struct lsquic_str *cached_certs, size_t cached_certs_count, + struct lsquic_str **out_certs, + size_t *out_certs_count); + +void +lsquic_crt_cleanup (void); + + +#ifdef __cplusplus +} +#endif + + +#endif //__LSQUIC_CRT_COMPRESS_H__ diff --git a/external/lsquic/src/liblsquic/lsquic_crypto.c b/external/lsquic/src/liblsquic/lsquic_crypto.c new file mode 100644 index 0000000..2dbf692 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_crypto.c @@ -0,0 +1,539 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#ifdef WIN32 +#include +#endif + +#include "lsquic_types.h" +#include "lsquic_crypto.h" +#include "lsquic_parse.h" +#include "lsquic_util.h" +#include "lsquic_str.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_CRYPTO +#include "lsquic_logger.h" + + +static const char s_hs_signature[] = "QUIC CHLO and server config signature"; +static int crypto_inited = 0; + + +uint64_t lsquic_fnv1a_64(const uint8_t * data, int len) +{ + uint64_t hash = UINT64_C(14695981039346656037); + const uint8_t *end = data + len; + while(data < end) + { + hash ^= *data; + hash *= UINT64_C(1099511628211); + ++data; + } + return hash; +} + + +void lsquic_fnv1a_64_s(const uint8_t * data, int len, char *md) +{ + uint64_t hash = lsquic_fnv1a_64(data, len); + memcpy(md, (void *)&hash, 8); +} + + +#if defined( __x86_64 )||defined( __x86_64__ ) + +static uint128 s_prime; +static uint128 s_init_hash; + + +static inline void make_uint128(uint128 *v, uint64_t hi, uint64_t lo) +{ + *v = hi; + *v <<= 64; + *v += lo; +} + + +void lsquic_fnv1a_inc(uint128 *hash, const uint8_t *data, int len) +{ + const uint8_t* end = data + len; + while(data < end) + { + *hash = (*hash ^ (*data)) * s_prime; + ++data; + } +} + +uint128 lsquic_fnv1a_128_3(const uint8_t *data1, int len1, + const uint8_t *data2, int len2, + const uint8_t *data3, int len3) +{ + uint128 hash; + memcpy(&hash, &s_init_hash, 16); + + lsquic_fnv1a_inc(&hash, data1, len1); + lsquic_fnv1a_inc(&hash, data2, len2); + lsquic_fnv1a_inc(&hash, data3, len3); + return hash; +} + +/* HS_PKT_HASH_LENGTH bytes of md */ +void lsquic_serialize_fnv128_short(uint128 v, uint8_t *md) +{ + memcpy(md, (void *)&v, 12); +} + +#else +uint128 *uint128_times(uint128 *v, const uint128 *factor) +{ + uint64_t a96 = v->hi_ >> 32; + uint64_t a64 = v->hi_ & 0xffffffffu; + uint64_t a32 = v->lo_ >> 32; + uint64_t a00 = v->lo_ & 0xffffffffu; + uint64_t b96 = factor->hi_ >> 32; + uint64_t b64 = factor->hi_ & 0xffffffffu; + uint64_t b32 = factor->lo_ >> 32; + uint64_t b00 = factor->lo_ & 0xffffffffu; + uint64_t tmp, lolo; + // multiply [a96 .. a00] x [b96 .. b00] + // terms higher than c96 disappear off the high side + // terms c96 and c64 are safe to ignore carry bit + uint64_t c96 = a96 * b00 + a64 * b32 + a32 * b64 + a00 * b96; + uint64_t c64 = a64 * b00 + a32 * b32 + a00 * b64; + v->hi_ = (c96 << 32) + c64; + v->lo_ = 0; + + tmp = a32 * b00; + v->hi_ += tmp >> 32; + v->lo_ += tmp << 32; + + tmp = a00 * b32; + v->hi_ += tmp >> 32; + v->lo_ += tmp << 32; + + tmp = a00 * b00; + lolo = v->lo_ + tmp; + if (lolo < v->lo_) + ++v->hi_; + v->lo_ = lolo; + + return v; +} + +void lsquic_fnv1a_inc(uint128 *hash, const uint8_t * data, int len) +{ + static const uint128 kPrime = {16777216, 315}; + const uint8_t* end = data + len; + while(data < end) + { + hash->lo_ = (hash->lo_ ^ (uint64_t)*data); + uint128_times(hash, &kPrime); + ++data; + } +} + + +uint128 lsquic_fnv1a_128_3(const uint8_t * data1, int len1, + const uint8_t * data2, int len2, + const uint8_t * data3, int len3) +{ + uint128 hash = {UINT64_C(7809847782465536322), UINT64_C(7113472399480571277)}; + lsquic_fnv1a_inc(&hash, data1, len1); + lsquic_fnv1a_inc(&hash, data2, len2); + lsquic_fnv1a_inc(&hash, data3, len3); + return hash; +} + + +/* HS_PKT_HASH_LENGTH bytes of md */ +void lsquic_serialize_fnv128_short(uint128 v, uint8_t *md) +{ + assert(HS_PKT_HASH_LENGTH == 8 + 4); + memcpy(md, (void *)&v.lo_, 8); + memcpy(md + 8, (void *)&v.hi_, 4); +} + +#endif + + +static void sha256(const uint8_t *buf, int len, uint8_t *h) +{ + SHA256_CTX ctx; + SHA256_Init(&ctx); + SHA256_Update(&ctx, buf, len); + SHA256_Final(h, &ctx); +} + + +/* base on rfc 5869 with sha256, prk is 32 bytes*/ +void lshkdf_extract(const unsigned char *ikm, int ikm_len, const unsigned char *salt, + int salt_len, unsigned char *prk) +{ +#ifndef NDEBUG + unsigned char *out; + unsigned int out_len; + out = +#endif + HMAC(EVP_sha256(), salt, salt_len, ikm, ikm_len, prk, +#ifndef NDEBUG + &out_len +#else + NULL +#endif + ); + assert(out); + assert(out_len == 32); +} + + +#define SHA256LEN 32 +int lshkdf_expand(const unsigned char *prk, const unsigned char *info, int info_len, + uint16_t c_key_len, uint8_t *c_key, + uint16_t s_key_len, uint8_t *s_key, + uint16_t c_key_iv_len, uint8_t *c_key_iv, + uint16_t s_key_iv_len, uint8_t *s_key_iv, + uint16_t sub_key_len, uint8_t *sub_key, + uint8_t *c_hp, uint8_t *s_hp) +{ + const unsigned L = c_key_len + s_key_len + c_key_iv_len + s_key_iv_len + + sub_key_len + + (c_hp ? c_key_len : 0) + + (s_hp ? s_key_len : 0) + ; + unsigned char *p; + unsigned char output[ + EVP_MAX_KEY_LENGTH * 2 /* Keys */ + + EVP_MAX_IV_LENGTH * 2 /* IVs */ + + 32 /* Subkey */ + + EVP_MAX_KEY_LENGTH * 2 /* Header protection */ + ]; + + assert((size_t) L <= sizeof(output)); + +#ifndef NDEBUG + const int s = +#endif + HKDF_expand(output, L, EVP_sha256(), prk, 32, info, info_len); + assert(s); + p = output; + if (c_key_len) + { + memcpy(c_key, p, c_key_len); + p += c_key_len; + } + if (s_key_len) + { + memcpy(s_key, p, s_key_len); + p += s_key_len; + } + if (c_key_iv_len) + { + memcpy(c_key_iv, p, c_key_iv_len); + p += c_key_iv_len; + } + if (s_key_iv_len) + { + memcpy(s_key_iv, p, s_key_iv_len); + p += s_key_iv_len; + } + if (sub_key_len && sub_key) + { + memcpy(sub_key, p, sub_key_len); + p += sub_key_len; + } + if (c_key_len && c_hp) + { + memcpy(c_hp, p, c_key_len); + p += c_key_len; + } + if (s_key_len && s_hp) + { + memcpy(s_hp, p, s_key_len); + p += s_key_len; + } + return 0; +} + + +#ifndef NDEBUG +int lsquic_export_key_material_simple(unsigned char *ikm, uint32_t ikm_len, + unsigned char *salt, int salt_len, + char *label, uint32_t label_len, + const uint8_t *context, uint32_t context_len, + uint8_t *key, uint16_t key_len) +{ + unsigned char prk[32]; + int info_len; + uint8_t *info = NULL; + info = (uint8_t *)malloc(label_len + 1 + sizeof(uint32_t) + context_len); + if (!info) + return -1; + + lshkdf_extract(ikm, ikm_len, salt, salt_len, prk); + memcpy(info, label, label_len); + info[label_len] = 0x00; + info_len = label_len + 1; + memcpy(info + info_len, &context_len, sizeof(uint32_t)); + info_len += sizeof(uint32_t); + memcpy(info + info_len, context, context_len); + info_len += context_len; + lshkdf_expand(prk, info, info_len, key_len, key, + 0, NULL, 0, NULL,0, NULL, 0, NULL, NULL, NULL); + free(info); + return 0; +} +#endif + + +int +lsquic_export_key_material(const unsigned char *ikm, uint32_t ikm_len, + const unsigned char *salt, int salt_len, + const unsigned char *context, uint32_t context_len, + uint16_t c_key_len, uint8_t *c_key, + uint16_t s_key_len, uint8_t *s_key, + uint16_t c_key_iv_len, uint8_t *c_key_iv, + uint16_t s_key_iv_len, uint8_t *s_key_iv, + uint8_t *sub_key, uint8_t *c_hp, uint8_t *s_hp) +{ + unsigned char prk[32]; + uint16_t sub_key_len = ikm_len; + + lshkdf_extract(ikm, ikm_len, salt, salt_len, prk); + lshkdf_expand(prk, context, context_len, c_key_len, c_key, + s_key_len, s_key, c_key_iv_len, c_key_iv, s_key_iv_len, + s_key_iv, sub_key_len, sub_key, c_hp, s_hp); + return 0; +} + +void lsquic_c255_get_pub_key(unsigned char *priv_key, unsigned char pub_key[32]) +{ + X25519_public_from_private(pub_key, priv_key); +} + + +int lsquic_c255_gen_share_key(unsigned char *priv_key, unsigned char *peer_pub_key, unsigned char *shared_key) +{ + return X25519(shared_key, priv_key, peer_pub_key); +} + + + +/* AEAD nonce is always zero */ +/* return 0 for OK */ +int lsquic_aes_aead_enc(EVP_AEAD_CTX *key, + const uint8_t *ad, size_t ad_len, + const uint8_t *nonce, size_t nonce_len, + const uint8_t *plain, size_t plain_len, + uint8_t *cypher, size_t *cypher_len) +{ + int ret = 0; + size_t max_out_len; + max_out_len = *cypher_len;//plain_len + EVP_AEAD_max_overhead(aead_); + assert(*cypher_len >= max_out_len); + + LSQ_DEBUG("***lsquic_aes_aead_enc data %s", lsquic_get_bin_str(plain, plain_len, 40)); + ret = EVP_AEAD_CTX_seal(key, cypher, cypher_len, max_out_len, + nonce, nonce_len, plain, plain_len, ad, ad_len); +// LSQ_DEBUG("***lsquic_aes_aead_enc nonce: %s", lsquic_get_bin_str(nonce, nonce_len)); +// LSQ_DEBUG("***lsquic_aes_aead_enc AD: %s", lsquic_get_bin_str(ad, ad_len)); +// LSQ_DEBUG("***lsquic_aes_aead_enc return %d", (ret ? 0 : -1)); + if (ret) + { + LSQ_DEBUG("***lsquic_aes_aead_enc succeed, cypher content %s", + lsquic_get_bin_str(cypher, *cypher_len, 40)); + return 0; + } + else + { + LSQ_DEBUG("***lsquic_aes_aead_enc failed."); + return -1; + } +} + + +/* return 0 for OK */ +int lsquic_aes_aead_dec(EVP_AEAD_CTX *key, + const uint8_t *ad, size_t ad_len, + const uint8_t *nonce, size_t nonce_len, + const uint8_t *cypher, size_t cypher_len, + uint8_t *plain, size_t *plain_len) +{ + int ret = 0; + size_t max_out_len = *plain_len; + assert(max_out_len >= cypher_len); + + LSQ_DEBUG("***lsquic_aes_aead_dec data %s", lsquic_get_bin_str(cypher, cypher_len, 40)); + + + ret = EVP_AEAD_CTX_open(key, plain, plain_len, max_out_len, + nonce, nonce_len, cypher, cypher_len, ad, ad_len); + +// LSQ_DEBUG("***lsquic_aes_aead_dec nonce: %s", lsquic_get_bin_str(nonce, nonce_len)); +// LSQ_DEBUG("***lsquic_aes_aead_dec AD: %s", lsquic_get_bin_str(ad, ad_len)); +// LSQ_DEBUG("***lsquic_aes_aead_dec return %d", (ret ? 0 : -1)); + if (ret) + { + LSQ_DEBUG("***lsquic_aes_aead_dec succeed, plain content %s", + lsquic_get_bin_str(plain, *plain_len, 20)); + return 0; + } + else + { + LSQ_DEBUG("***lsquic_aes_aead_dec failed."); + return -1; + } +} + +/* 32 bytes client nonce with 4 bytes tm, 8 bytes orbit */ +void lsquic_gen_nonce_c(unsigned char *buf, uint64_t orbit) +{ + time_t tm = time(NULL); + unsigned char *p = buf; + memcpy(p, &tm, 4); + p += 4; + memcpy(p, &orbit, 8); + p += 8; + RAND_bytes(p, 20); + p += 20; +} + + +/* type 0 DER, 1: PEM */ +X509 * +lsquic_bio_to_crt (const void *buf, int len, int type) +{ + X509 *crt = NULL; + BIO *bio = BIO_new_mem_buf(buf, len); + if (bio == NULL) + return NULL; + + if (type == 0) + crt = d2i_X509_bio(bio, NULL); + else + crt = PEM_read_bio_X509(bio, &crt, 0 , NULL); + BIO_free(bio); + return crt; +} + + +int +lsquic_gen_prof (const uint8_t *chlo_data, size_t chlo_data_len, + const uint8_t *scfg_data, uint32_t scfg_data_len, + const EVP_PKEY *priv_key, uint8_t *buf, size_t *buf_len) +{ + uint8_t chlo_hash[32] = {0}; + size_t chlo_hash_len = 32; /* SHA256 */ + EVP_MD_CTX sign_context; + EVP_PKEY_CTX* pkey_ctx = NULL; + + sha256(chlo_data, chlo_data_len, chlo_hash); + EVP_MD_CTX_init(&sign_context); + if (!EVP_DigestSignInit(&sign_context, &pkey_ctx, EVP_sha256(), NULL, (EVP_PKEY *)priv_key)) + return -1; + + EVP_PKEY_CTX_set_rsa_padding(pkey_ctx, RSA_PKCS1_PSS_PADDING); + EVP_PKEY_CTX_set_rsa_pss_saltlen(pkey_ctx, -1); + + if (!EVP_DigestSignUpdate(&sign_context, s_hs_signature, sizeof(s_hs_signature)) || + !EVP_DigestSignUpdate(&sign_context, (const uint8_t*)(&chlo_hash_len), 4) || + !EVP_DigestSignUpdate(&sign_context, chlo_hash, chlo_hash_len) || + !EVP_DigestSignUpdate(&sign_context, scfg_data, scfg_data_len)) + { + return -1; + } + + size_t len = 0; + if (!EVP_DigestSignFinal(&sign_context, NULL, &len)) { + return -1; + } + + if (len > *buf_len) + return -2; + if (buf) + EVP_DigestSignFinal(&sign_context, buf, buf_len); + + EVP_MD_CTX_cleanup(&sign_context); + return 0; +} + + +/* -3 internal error, -1: verify failed, 0: Success */ +static int +verify_prof0 (const uint8_t *chlo_data, size_t chlo_data_len, + const uint8_t *scfg_data, uint32_t scfg_data_len, + const EVP_PKEY *pub_key, const uint8_t *buf, size_t len) +{ + uint8_t chlo_hash[32] = {0}; + size_t chlo_hash_len = 32; /* SHA256 */ + EVP_MD_CTX sign_context; + EVP_PKEY_CTX* pkey_ctx = NULL; + int ret = 0; + EVP_MD_CTX_init(&sign_context); + sha256(chlo_data, chlo_data_len, chlo_hash); + + // discarding const below to quiet compiler warning on call to ssl library code + if (!EVP_DigestVerifyInit(&sign_context, &pkey_ctx, EVP_sha256(), NULL, (EVP_PKEY *)pub_key)) + return -4; + + EVP_PKEY_CTX_set_rsa_padding(pkey_ctx, RSA_PKCS1_PSS_PADDING); + EVP_PKEY_CTX_set_rsa_pss_saltlen(pkey_ctx, -1); + + + if (!EVP_DigestVerifyUpdate(&sign_context, s_hs_signature, sizeof(s_hs_signature)) || + !EVP_DigestVerifyUpdate(&sign_context, (const uint8_t*)(&chlo_hash_len), 4) || + !EVP_DigestVerifyUpdate(&sign_context, chlo_hash, chlo_hash_len) || + !EVP_DigestVerifyUpdate(&sign_context, scfg_data, scfg_data_len)) + { + return -3; /* set to -3, to avoid same as "not enough data" -2 */ + } + + ret = EVP_DigestVerifyFinal(&sign_context, buf, len); + EVP_MD_CTX_cleanup(&sign_context); + + if (ret == 1) + return 0; //OK + else + return -1; //failed +} + + +int +lsquic_verify_prof (const uint8_t *chlo_data, size_t chlo_data_len, + lsquic_str_t *scfg, const EVP_PKEY *pub_key, const uint8_t *buf, size_t len) +{ + return verify_prof0(chlo_data, chlo_data_len, + (const uint8_t *)lsquic_str_buf(scfg), + lsquic_str_len(scfg), pub_key, buf, len); +} + + +void +lsquic_crypto_init (void) +{ + if (crypto_inited) + return ; + + //SSL_library_init(); + CRYPTO_library_init(); + /* XXX Should we seed? If yes, wherewith? */ // RAND_seed(seed, seed_len); + +#if defined( __x86_64 )||defined( __x86_64__ ) + make_uint128(&s_prime, 16777216, 315); + make_uint128(&s_init_hash, 7809847782465536322, 7113472399480571277); +#endif + + /* MORE .... */ + crypto_inited = 1; +} + diff --git a/external/lsquic/src/liblsquic/lsquic_crypto.h b/external/lsquic/src/liblsquic/lsquic_crypto.h new file mode 100644 index 0000000..5a9d194 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_crypto.h @@ -0,0 +1,106 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ + +#ifndef __LSQUIC_CRYPTO_H__ +#define __LSQUIC_CRYPTO_H__ + +#include + +#define HS_PKT_HASH_LENGTH 12 + + +#ifdef __cplusplus +extern "C" { +#endif + +struct lsquic_str; +struct evp_aead_ctx_st; +struct evp_pkey_st; +struct x509_st; + +#if defined( __x86_64 )||defined( __x86_64__ ) + typedef __uint128_t uint128; +#else + typedef struct uint128_st + { + uint64_t hi_; + uint64_t lo_; + } uint128; +#endif + + +void lsquic_crypto_init(void); + + +#ifndef NDEBUG +int lsquic_export_key_material_simple(unsigned char *ikm, uint32_t ikm_len, + unsigned char *salt, int salt_len, + char *label, uint32_t label_len, + const uint8_t *context, uint32_t context_len, + uint8_t *key, uint16_t key_len); +#endif + +int lsquic_export_key_material(const unsigned char *ikm, uint32_t ikm_len, + const unsigned char *salt, int salt_len, + const unsigned char *context, uint32_t context_len, + uint16_t c_key_len, uint8_t *c_key, + uint16_t s_key_len, uint8_t *s_key, + uint16_t c_key_iv_len, uint8_t *c_key_iv, + uint16_t s_key_iv_len, uint8_t *s_key_iv, + uint8_t *sub_key, + uint8_t *c_hp, uint8_t *s_hp); + +void lsquic_c255_get_pub_key(unsigned char *priv_key, unsigned char pub_key[32]); +int lsquic_c255_gen_share_key(unsigned char *priv_key, unsigned char *peer_pub_key, unsigned char *shared_key); + + + +uint64_t lsquic_fnv1a_64(const uint8_t * data, int len); +void lsquic_fnv1a_64_s(const uint8_t * data, int len, char *md); +void lsquic_fnv1a_128_s(const uint8_t * data , int len, uint8_t *md); +uint128 lsquic_fnv1a_128_3(const uint8_t * data1, int len1, + const uint8_t * data2, int len2, + const uint8_t * data3, int len3); +void lsquic_serialize_fnv128_short(uint128 v, uint8_t *md); + + +/* Encrypt plaint text to cipher test */ +int lsquic_aes_aead_enc(struct evp_aead_ctx_st *key, + const uint8_t *ad, size_t ad_len, + const uint8_t *nonce, size_t nonce_len, + const uint8_t *plain, size_t plain_len, + uint8_t *cypher, size_t *cypher_len); + +int lsquic_aes_aead_dec(struct evp_aead_ctx_st *key, + const uint8_t *ad, size_t ad_len, + const uint8_t *nonce, size_t nonce_len, + const uint8_t *cypher, size_t cypher_len, + uint8_t *plain, size_t *plain_len); + +/* 32 bytes client nonce with 4 bytes tm, 8 bytes orbit */ +void lsquic_gen_nonce_c(unsigned char *buf, uint64_t orbit); + +struct x509_st *lsquic_bio_to_crt(const void *buf, int len, int type); + +int lshkdf_expand(const unsigned char *prk, const unsigned char *info, int info_len, + uint16_t c_key_len, uint8_t *c_key, + uint16_t s_key_len, uint8_t *s_key, + uint16_t c_key_iv_len, uint8_t *c_key_iv, + uint16_t s_key_iv_len, uint8_t *s_key_iv, + uint16_t sub_key_len, uint8_t *sub_key, + uint8_t *c_hp, uint8_t *s_hp); +void lshkdf_extract(const unsigned char *ikm, int ikm_len, const unsigned char *salt, + int salt_len, unsigned char *prk); + +int lsquic_gen_prof(const uint8_t *chlo_data, size_t chlo_data_len, + const uint8_t *scfg_data, uint32_t scfg_data_len, + const struct evp_pkey_st *priv_key, uint8_t *buf, size_t *len); + +int lsquic_verify_prof(const uint8_t *chlo_data, size_t chlo_data_len, struct lsquic_str * scfg, + const struct evp_pkey_st *pub_key, const uint8_t *buf, size_t len); + + +#ifdef __cplusplus +} +#endif + +#endif //__LSQUIC_CRYPTO_H__ diff --git a/external/lsquic/src/liblsquic/lsquic_cubic.c b/external/lsquic/src/liblsquic/lsquic_cubic.c new file mode 100644 index 0000000..a4efeac --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_cubic.c @@ -0,0 +1,294 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_cubic.c -- LSQUIC CUBIC implementation. + */ + +#include +#include +#include +#include +#include +#include +#ifdef WIN32 +#include +#endif + +#include "lsquic_int_types.h" +#include "lsquic_types.h" +#include "lsquic_hash.h" +#include "lsquic_util.h" +#include "lsquic_cong_ctl.h" +#include "lsquic_sfcw.h" +#include "lsquic_conn_flow.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_stream.h" +#include "lsquic_rtt.h" +#include "lsquic_conn_public.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_out.h" +#include "lsquic_cubic.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_CUBIC +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(cubic->cu_conn) +#include "lsquic_logger.h" + +#define FAST_CONVERGENCE 1 +#define BETA 205 /* 205/1024 */ +#define C 410 /* 410/1024 */ +#define TWO_MINUS_BETA_OVER_TWO 922 /* 922/1024 */ +#define ONE_MINUS_BETA 819 /* 819/1024 */ +#define ONE_OVER_C 2560 /* 2560/1024 */ + +static void +cubic_reset (struct lsquic_cubic *cubic) +{ + memset(cubic, 0, offsetof(struct lsquic_cubic, cu_conn)); + cubic->cu_cwnd = 32 * TCP_MSS; + cubic->cu_last_max_cwnd = 32 * TCP_MSS; + cubic->cu_tcp_cwnd = 32 * TCP_MSS; +} + + +static void +cubic_update (struct lsquic_cubic *cubic, lsquic_time_t now, unsigned n_bytes) +{ + double delta_t, t; + lsquic_time_t target; + + if (0 == cubic->cu_epoch_start) + { + cubic->cu_epoch_start = now; + if (cubic->cu_cwnd < cubic->cu_last_max_cwnd) + { + cubic->cu_K = cbrt(cubic->cu_last_max_cwnd / TCP_MSS / 2); + cubic->cu_origin_point = cubic->cu_last_max_cwnd; + } + else + { + cubic->cu_K = 0; + cubic->cu_origin_point = cubic->cu_cwnd; + } + LSQ_DEBUG("cwnd: %lu; last_max_cwnd: %lu; K: %lf; origin_point: %lu", + cubic->cu_cwnd, cubic->cu_last_max_cwnd, cubic->cu_K, cubic->cu_origin_point); + } + + delta_t = (double) (now + cubic->cu_min_delay - cubic->cu_epoch_start) / 1000000; + if (delta_t < cubic->cu_K) + { + t = cubic->cu_K - delta_t; + target = cubic->cu_origin_point - t * t * t * 0.4 * TCP_MSS; + LSQ_DEBUG("delta_t: %lf; t: %lf; target 1: %"PRIu64, delta_t, t, target); + } + else + { + t = delta_t - cubic->cu_K; + target = cubic->cu_origin_point + t * t * t * 0.4 * TCP_MSS; + LSQ_DEBUG("target 2: %"PRIu64, target); + } + + if (cubic->cu_flags & CU_TCP_FRIENDLY) + { + cubic->cu_tcp_cwnd += n_bytes * TCP_MSS * ONE_MINUS_BETA / 1024 + / cubic->cu_tcp_cwnd; + LSQ_DEBUG("delta_t: %lf; last_max: %lu; cu_tcp_cwnd: %lu; target: " + "%"PRIu64"; over: %d; left: %d", delta_t, cubic->cu_last_max_cwnd, + cubic->cu_tcp_cwnd, target, cubic->cu_tcp_cwnd > target, + delta_t < cubic->cu_K); + if (cubic->cu_tcp_cwnd > target) + target = cubic->cu_tcp_cwnd; + } + + if (target == 0) + target = TCP_MSS; + + cubic->cu_cwnd = target; +} + + +void +lsquic_cubic_set_flags (struct lsquic_cubic *cubic, enum cubic_flags flags) +{ + LSQ_DEBUG("%s(cubic, 0x%X)", __func__, flags); + cubic->cu_flags = flags; +} + + +static void +lsquic_cubic_init (void *cong_ctl, const struct lsquic_conn_public *conn_pub, + enum quic_ft_bit UNUSED_retx_frames) +{ + struct lsquic_cubic *const cubic = cong_ctl; + cubic_reset(cubic); + cubic->cu_ssthresh = 10000 * TCP_MSS; /* Emulate "unbounded" slow start */ + cubic->cu_conn = conn_pub->lconn; + cubic->cu_rtt_stats = &conn_pub->rtt_stats; + cubic->cu_flags = DEFAULT_CUBIC_FLAGS; +#ifndef NDEBUG + const char *s; + s = getenv("LSQUIC_CUBIC_SAMPLING_RATE"); + if (s) + cubic->cu_sampling_rate = atoi(s); + else +#endif + cubic->cu_sampling_rate = 100000; + LSQ_DEBUG("%s(cubic, $conn)", __func__); + LSQ_INFO("initialized"); +} + + +static void +lsquic_cubic_reinit (void *cong_ctl) +{ + struct lsquic_cubic *const cubic = cong_ctl; + cubic_reset(cubic); + cubic->cu_ssthresh = 10000 * TCP_MSS; /* Emulate "unbounded" slow start */ + LSQ_DEBUG("re-initialized"); +} + + +#define LOG_CWND(c) do { \ + if (LSQ_LOG_ENABLED(LSQ_LOG_INFO)) { \ + lsquic_time_t now = lsquic_time_now(); \ + now -= now % (c)->cu_sampling_rate; \ + if (now > (c)->cu_last_logged) { \ + LSQ_INFO("CWND: %lu", (c)->cu_cwnd); \ + (c)->cu_last_logged = now; \ + } \ + } \ +} while (0) + + +static void +lsquic_cubic_was_quiet (void *cong_ctl, lsquic_time_t now, uint64_t in_flight) +{ + struct lsquic_cubic *const cubic = cong_ctl; + LSQ_DEBUG("%s(cubic, %"PRIu64")", __func__, now); + cubic->cu_epoch_start = 0; +} + + +static void +lsquic_cubic_ack (void *cong_ctl, struct lsquic_packet_out *packet_out, + unsigned n_bytes, lsquic_time_t now_time, int app_limited) +{ + struct lsquic_cubic *const cubic = cong_ctl; + lsquic_time_t rtt; + + rtt = now_time - packet_out->po_sent; + LSQ_DEBUG("%s(cubic, %"PRIu64", %"PRIu64", %d, %u)", __func__, now_time, rtt, + app_limited, n_bytes); + if (0 == cubic->cu_min_delay || rtt < cubic->cu_min_delay) + { + cubic->cu_min_delay = rtt; + LSQ_INFO("min_delay: %"PRIu64, rtt); + } + + if (cubic->cu_cwnd <= cubic->cu_ssthresh) + { + cubic->cu_cwnd += TCP_MSS; + LSQ_DEBUG("ACK: slow threshold, cwnd: %lu", cubic->cu_cwnd); + } + else if (!app_limited) + { + cubic_update(cubic, now_time, n_bytes); + LSQ_DEBUG("ACK: cwnd: %lu", cubic->cu_cwnd); + } + + LOG_CWND(cubic); +} + + +static void +lsquic_cubic_loss (void *cong_ctl) +{ + struct lsquic_cubic *const cubic = cong_ctl; + LSQ_DEBUG("%s(cubic)", __func__); + cubic->cu_epoch_start = 0; + if (FAST_CONVERGENCE && cubic->cu_cwnd < cubic->cu_last_max_cwnd) + cubic->cu_last_max_cwnd = cubic->cu_cwnd * TWO_MINUS_BETA_OVER_TWO / 1024; + else + cubic->cu_last_max_cwnd = cubic->cu_cwnd; + cubic->cu_cwnd = cubic->cu_cwnd * ONE_MINUS_BETA / 1024; + cubic->cu_tcp_cwnd = cubic->cu_cwnd; + cubic->cu_ssthresh = cubic->cu_cwnd; + LSQ_INFO("loss detected, last_max_cwnd: %lu, cwnd: %lu", + cubic->cu_last_max_cwnd, cubic->cu_cwnd); + LOG_CWND(cubic); +} + + +static void +lsquic_cubic_timeout (void *cong_ctl) +{ + struct lsquic_cubic *const cubic = cong_ctl; + unsigned long cwnd; + + cwnd = cubic->cu_cwnd; + LSQ_DEBUG("%s(cubic)", __func__); + cubic_reset(cubic); + cubic->cu_ssthresh = cwnd / 2; + cubic->cu_tcp_cwnd = 2 * TCP_MSS; + cubic->cu_cwnd = 2 * TCP_MSS; + LSQ_INFO("timeout, cwnd: %lu", cubic->cu_cwnd); + LOG_CWND(cubic); +} + + +static void +lsquic_cubic_cleanup (void *cong_ctl) +{ +} + + +static uint64_t +lsquic_cubic_get_cwnd (void *cong_ctl) +{ + struct lsquic_cubic *const cubic = cong_ctl; + return cubic->cu_cwnd; +} + + +static int +in_slow_start (void *cong_ctl) +{ + struct lsquic_cubic *const cubic = cong_ctl; + return cubic->cu_cwnd < cubic->cu_ssthresh; +} + + +static uint64_t +lsquic_cubic_pacing_rate (void *cong_ctl, int in_recovery) +{ + struct lsquic_cubic *const cubic = cong_ctl; + uint64_t bandwidth, pacing_rate; + lsquic_time_t srtt; + + srtt = lsquic_rtt_stats_get_srtt(cubic->cu_rtt_stats); + if (srtt == 0) + srtt = 50000; + bandwidth = cubic->cu_cwnd * 1000000 / srtt; + if (in_slow_start(cubic)) + pacing_rate = bandwidth * 2; + else if (in_recovery) + pacing_rate = bandwidth; + else + pacing_rate = bandwidth + bandwidth / 4; + + return pacing_rate; +} + + + +const struct cong_ctl_if lsquic_cong_cubic_if = +{ + .cci_ack = lsquic_cubic_ack, + .cci_cleanup = lsquic_cubic_cleanup, + .cci_get_cwnd = lsquic_cubic_get_cwnd, + .cci_init = lsquic_cubic_init, + .cci_pacing_rate = lsquic_cubic_pacing_rate, + .cci_loss = lsquic_cubic_loss, + .cci_reinit = lsquic_cubic_reinit, + .cci_timeout = lsquic_cubic_timeout, + .cci_was_quiet = lsquic_cubic_was_quiet, +}; diff --git a/external/lsquic/src/liblsquic/lsquic_cubic.h b/external/lsquic/src/liblsquic/lsquic_cubic.h new file mode 100644 index 0000000..8eef096 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_cubic.h @@ -0,0 +1,42 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_cubic.h -- CUBIC congestion control protocol. + */ + +#ifndef LSQUIC_CUBIC_H +#define LSQUIC_CUBIC_H 1 + +#include "lsquic_shared_support.h" + +struct lsquic_conn; + +struct lsquic_cubic { + lsquic_time_t cu_min_delay; + lsquic_time_t cu_epoch_start; + double cu_K; + unsigned long cu_origin_point; + unsigned long cu_last_max_cwnd; + unsigned long cu_cwnd; + unsigned long cu_tcp_cwnd; + unsigned long cu_ssthresh; + const struct lsquic_conn + *cu_conn; /* Used for logging */ + const struct lsquic_rtt_stats + *cu_rtt_stats; + enum cubic_flags { + CU_TCP_FRIENDLY = (1 << 0), + } cu_flags; + unsigned cu_sampling_rate; + lsquic_time_t cu_last_logged; +}; + +#define DEFAULT_CUBIC_FLAGS (CU_TCP_FRIENDLY) + +#define TCP_MSS 1460 + +LSQUIC_EXTERN const struct cong_ctl_if lsquic_cong_cubic_if; + +void +lsquic_cubic_set_flags (struct lsquic_cubic *cubic, enum cubic_flags flags); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_data_in_if.h b/external/lsquic/src/liblsquic/lsquic_data_in_if.h new file mode 100644 index 0000000..c2a99dc --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_data_in_if.h @@ -0,0 +1,111 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_data_in_if.h -- DATA in interface + */ + +#ifndef LSQUIC_DATA_IN_IF_H +#define LSQUIC_DATA_IN_IF_H 1 + + +struct data_frame; +struct data_in; +struct lsquic_conn_public; +struct stream_frame; + + +enum ins_frame +{ + INS_FRAME_OK, + INS_FRAME_ERR, + INS_FRAME_DUP, + INS_FRAME_OVERLAP, +}; + + +struct data_in_iface +{ + void + (*di_destroy) (struct data_in *); + + int + (*di_empty) (struct data_in *); + + /* When INS_FRAME_OK, INS_FRAME_ERR, or INS_FRAME_DUP is returned, the + * caller releases control of stream frame. Do not reference it after + * the call. + * + * When INS_FRAME_OVERLAP is returned the caller has a choice to switch + * to implementation that supports overlaps and try to insert the frame + * again or to treat this as an error. Either way, the caller retains + * control of the frame. + */ + enum ins_frame + (*di_insert_frame) (struct data_in *, struct stream_frame *, + uint64_t read_offset); + + struct data_frame * + (*di_get_frame) (struct data_in *, uint64_t read_offset); + + void + (*di_frame_done) (struct data_in *, struct data_frame *); + + /* Creates a new data_in object, feeds its stream frames to it, deletes + * itself and returns the new object. + */ + struct data_in * + (*di_switch_impl) (struct data_in *, uint64_t read_offset); + + size_t + (*di_mem_used) (struct data_in *); + + void + (*di_dump_state) (struct data_in *); + + /* Return number of bytes readable starting at offset `read_offset' */ + uint64_t + (*di_readable_bytes) (struct data_in *, uint64_t read_offset); + + /* If set, this means that when di_insert_frame() returns INS_FRAME_OK, + * the data_in handler has taken ownership of the frame. Otherwise, it + * is up to the caller to free it. + */ + const int + di_own_on_ok; +}; + + +struct data_in +{ + const struct data_in_iface *di_if; + enum { + /* If DI_SWITCH_IMPL is set, switching data_in implementation is + * recommended in order to get better performance for current + * incoming stream frame scenario. Check the value of this flag + * after calls to di_insert_frame() and di_frame_done(). + */ + DI_SWITCH_IMPL = (1 << 0), + } di_flags; +}; + + +/* This implementation does not support overlapping frame and may return + * INS_FRAME_OVERLAP. + */ +struct data_in * +lsquic_data_in_nocopy_new (struct lsquic_conn_public *, lsquic_stream_id_t); + +/* This implementation supports overlapping frames and will never return + * INS_FRAME_OVERLAP. + */ +struct data_in * +lsquic_data_in_hash_new (struct lsquic_conn_public *, lsquic_stream_id_t, + uint64_t byteage); + +enum ins_frame +lsquic_data_in_hash_insert_data_frame (struct data_in *data_in, + const struct data_frame *data_frame, uint64_t read_offset); + +struct data_in * +lsquic_data_in_error_new (void); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_di_error.c b/external/lsquic/src/liblsquic/lsquic_di_error.c new file mode 100644 index 0000000..7dde038 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_di_error.c @@ -0,0 +1,112 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_di_error.c -- A placeholder when things go wrong + * + * This object is used in order to avoid dereferencing NULLs in stream.c + */ + + +#include +#include +#include +#ifdef WIN32 +#include +#endif + +#include "lsquic_types.h" +#include "lsquic_data_in_if.h" + + +static const struct data_in *error_data_in_ptr; + + +struct data_in * +lsquic_data_in_error_new (void) +{ + return (struct data_in *) error_data_in_ptr; +} + + +static void +error_di_destroy (struct data_in *data_in) +{ +} + + +static enum ins_frame +error_di_insert_frame (struct data_in *data_in, + struct stream_frame *new_frame, uint64_t read_offset) +{ + return INS_FRAME_ERR; +} + + +static struct data_frame * +error_di_get_frame (struct data_in *data_in, uint64_t read_offset) +{ + return NULL; +} + + +static void +error_di_frame_done (struct data_in *data_in, struct data_frame *data_frame) +{ +} + + +static int +error_di_empty (struct data_in *data_in) +{ + return 1; +} + + +static struct data_in * +error_di_switch_impl (struct data_in *data_in, uint64_t read_offset) +{ + assert(0); + return data_in; +} + + +static size_t +error_di_mem_used (struct data_in *data_in) +{ + return 0; +} + + +static void +error_di_dump_state (struct data_in *data_in) +{ +} + +static uint64_t +error_di_readable_bytes (struct data_in *data_in, uint64_t read_offset) +{ + return 0; +} + + +static const struct data_in_iface di_if_error = { + .di_destroy = error_di_destroy, + .di_dump_state = error_di_dump_state, + .di_empty = error_di_empty, + .di_frame_done = error_di_frame_done, + .di_get_frame = error_di_get_frame, + .di_insert_frame = error_di_insert_frame, + .di_mem_used = error_di_mem_used, + .di_own_on_ok = 0, /* Never returns INS_FRAME_OK, but anyway */ + .di_readable_bytes + = error_di_readable_bytes, + .di_switch_impl = error_di_switch_impl, +}; + + +static const struct data_in error_data_in = { + .di_if = &di_if_error, + .di_flags = 0, +}; + + +static const struct data_in *error_data_in_ptr = &error_data_in; diff --git a/external/lsquic/src/liblsquic/lsquic_di_hash.c b/external/lsquic/src/liblsquic/lsquic_di_hash.c new file mode 100644 index 0000000..ca861b7 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_di_hash.c @@ -0,0 +1,691 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_di_hash.c -- Copy incoming data into a hash + * + * While this implementation copies the data, its memory use is limited, + * which makes it a good choice when we have a lot of stream frames + * coming in. + * + * Another difference is that incoming STREAM frames are allowed to overlap. + */ + + +#include +#include +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_types.h" +#include "lsquic_conn_flow.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" +#include "lsquic_rtt.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_mm.h" +#include "lsquic_malo.h" +#include "lsquic_conn.h" +#include "lsquic_conn_public.h" +#include "lsquic_data_in_if.h" + + +#define LSQUIC_LOGGER_MODULE LSQLM_DI +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(hdi->hdi_conn_pub->lconn) +#define LSQUIC_LOG_STREAM_ID hdi->hdi_stream_id +#include "lsquic_logger.h" + + +#define N_DB_SETS 57 + +#define DB_DATA_SIZE (0x1000 - sizeof(TAILQ_ENTRY(data_block)) - \ + sizeof(uint64_t) - N_DB_SETS * sizeof(uint64_t)) + +struct data_block +{ + TAILQ_ENTRY(data_block) db_next; + uint64_t db_off; + uint64_t db_set[N_DB_SETS]; /* bit for each valid byte */ + unsigned char db_data[DB_DATA_SIZE]; +}; + +typedef char db_set_covers_all_db_data[(N_DB_SETS * 64 >= DB_DATA_SIZE) ?1: - 1]; +typedef char db_set_no_waste[(N_DB_SETS * 64 - 64 <= DB_DATA_SIZE)?1: - 1]; +typedef char db_block_is_4K[(sizeof(struct data_block) == 0x1000) ?1:- 1]; + + +TAILQ_HEAD(dblock_head, data_block); + + +static const struct data_in_iface *di_if_hash_ptr; + + +struct hash_data_in +{ + struct data_in hdi_data_in; + struct lsquic_conn_public *hdi_conn_pub; + uint64_t hdi_fin_off; + struct dblock_head *hdi_buckets; + struct data_block *hdi_last_block; + struct data_frame hdi_data_frame; + lsquic_stream_id_t hdi_stream_id; + unsigned hdi_count; + unsigned hdi_nbits; + enum { + HDI_FIN = (1 << 0), + } hdi_flags; +}; + + +#define HDI_PTR(data_in) (struct hash_data_in *) \ + ((unsigned char *) (data_in) - offsetof(struct hash_data_in, hdi_data_in)) + + +#define N_BUCKETS(n_bits) (1U << (n_bits)) +#define BUCKNO(n_bits, off) ((off / DB_DATA_SIZE) & (N_BUCKETS(n_bits) - 1)) + + +static unsigned +my_log2 /* silly name to suppress compiler warning */ (unsigned sz) +{ +#if __GNUC__ + unsigned clz = __builtin_clz(sz); + return 32 - clz; +#else + unsigned clz; + size_t y; + clz = 32; + y = sz >> 16; if (y) { clz -= 16; sz = y; } + y = sz >> 8; if (y) { clz -= 8; sz = y; } + y = sz >> 4; if (y) { clz -= 4; sz = y; } + y = sz >> 2; if (y) { clz -= 2; sz = y; } + y = sz >> 1; if (y) return 32 - clz + 1; + return 32 - clz + sz; +#endif +} + + +struct data_in * +lsquic_data_in_hash_new (struct lsquic_conn_public *conn_pub, + lsquic_stream_id_t stream_id, uint64_t byteage) +{ + struct hash_data_in *hdi; + unsigned n; + + hdi = malloc(sizeof(*hdi)); + if (!hdi) + return NULL; + + hdi->hdi_data_in.di_if = di_if_hash_ptr; + hdi->hdi_data_in.di_flags = 0; + hdi->hdi_conn_pub = conn_pub; + hdi->hdi_stream_id = stream_id; + hdi->hdi_fin_off = 0; + hdi->hdi_flags = 0; + hdi->hdi_last_block = NULL; + if (byteage >= DB_DATA_SIZE /* __builtin_clz is undefined if + argument is 0 */) + hdi->hdi_nbits = my_log2(byteage / DB_DATA_SIZE) + 2; + else + hdi->hdi_nbits = 3; + hdi->hdi_count = 0; + hdi->hdi_buckets = malloc(sizeof(hdi->hdi_buckets[0]) * + N_BUCKETS(hdi->hdi_nbits)); + if (!hdi->hdi_buckets) + { + free(hdi); + return NULL; + } + + for (n = 0; n < N_BUCKETS(hdi->hdi_nbits); ++n) + TAILQ_INIT(&hdi->hdi_buckets[n]); + + return &hdi->hdi_data_in; +} + + +static void +hash_di_destroy (struct data_in *data_in) +{ + struct hash_data_in *const hdi = HDI_PTR(data_in); + struct data_block *block; + unsigned n; + + for (n = 0; n < N_BUCKETS(hdi->hdi_nbits); ++n) + { + while ((block = TAILQ_FIRST(&hdi->hdi_buckets[n]))) + { + TAILQ_REMOVE(&hdi->hdi_buckets[n], block, db_next); + free(block); + } + } + free(hdi->hdi_buckets); + free(hdi); +} + + +static int +hash_grow (struct hash_data_in *hdi) +{ + struct dblock_head *new_buckets, *new[2]; + struct data_block *block; + unsigned n, old_nbits; + int idx; + + old_nbits = hdi->hdi_nbits; + LSQ_DEBUG("doubling number of buckets to %u", N_BUCKETS(old_nbits + 1)); + new_buckets = malloc(sizeof(hdi->hdi_buckets[0]) + * N_BUCKETS(old_nbits + 1)); + if (!new_buckets) + { + LSQ_WARN("malloc failed: potential trouble ahead"); + return -1; + } + + for (n = 0; n < N_BUCKETS(old_nbits); ++n) + { + new[0] = &new_buckets[n]; + new[1] = &new_buckets[n + N_BUCKETS(old_nbits)]; + TAILQ_INIT(new[0]); + TAILQ_INIT(new[1]); + while ((block = TAILQ_FIRST(&hdi->hdi_buckets[n]))) + { + TAILQ_REMOVE(&hdi->hdi_buckets[n], block, db_next); + idx = (BUCKNO(old_nbits + 1, block->db_off) >> old_nbits) & 1; + TAILQ_INSERT_TAIL(new[idx], block, db_next); + } + } + free(hdi->hdi_buckets); + hdi->hdi_nbits = old_nbits + 1; + hdi->hdi_buckets = new_buckets; + return 0; +} + + +static int +hash_insert (struct hash_data_in *hdi, struct data_block *block) +{ + unsigned buckno; + + if (hdi->hdi_count >= N_BUCKETS(hdi->hdi_nbits) / 2 && 0 != hash_grow(hdi)) + return -1; + + buckno = BUCKNO(hdi->hdi_nbits, block->db_off); + TAILQ_INSERT_TAIL(&hdi->hdi_buckets[buckno], block, db_next); + ++hdi->hdi_count; + return 0; +} + + +static struct data_block * +hash_find (const struct hash_data_in *hdi, uint64_t off) +{ + struct data_block *block; + unsigned buckno; + + buckno = BUCKNO(hdi->hdi_nbits, off); + TAILQ_FOREACH(block, &hdi->hdi_buckets[buckno], db_next) + if (off == block->db_off) + return block; + return NULL; +} + + +static void +hash_remove (struct hash_data_in *hdi, struct data_block *block) +{ + unsigned buckno; + + buckno = BUCKNO(hdi->hdi_nbits, block->db_off); + TAILQ_REMOVE(&hdi->hdi_buckets[buckno], block, db_next); + --hdi->hdi_count; +} + + +static struct data_block * +new_block (struct hash_data_in *hdi, uint64_t off) +{ + struct data_block *block; + + assert(0 == off % DB_DATA_SIZE); + + block = malloc(sizeof(*block)); + if (!block) + return NULL; + + block->db_off = off; + if (0 != hash_insert(hdi, block)) + { + free(block); + return NULL; + } + + memset(block->db_set, 0, sizeof(block->db_set)); + return block; +} + + +static unsigned +block_write (struct data_block *block, unsigned block_off, + const unsigned char *data, unsigned data_sz) +{ + const unsigned char *begin, *end; + unsigned set, bit, n_full_sets, n; + uint64_t mask; + + assert(block_off < DB_DATA_SIZE); + if (data_sz > DB_DATA_SIZE - block_off) + data_sz = DB_DATA_SIZE - block_off; + + begin = data; + end = begin + data_sz; + set = block_off >> 6; + bit = block_off & 0x3F; + + assert(set < N_DB_SETS); + + if (bit) + { + n = 64 - bit; + if (n > data_sz) + n = data_sz; + mask = ~((1ULL << bit ) - 1) + & ((1ULL << (bit + n - 1)) | ((1ULL << (bit + n - 1)) - 1)); + block->db_set[ set ] |= mask; + memcpy(block->db_data + block_off, data, n); + data += n; + block_off += n; + ++set; + } + + n_full_sets = (end - data) >> 6; + if (n_full_sets) + { + memcpy(block->db_data + block_off, data, n_full_sets * 64); + data += n_full_sets * 64; + block_off += n_full_sets * 64; + memset(&block->db_set[ set ], 0xFF, n_full_sets * 8); + set += n_full_sets; + } + + if (data < end) + { + assert(end - data < 64); + block->db_set[ set ] |= ((1ULL << (end - data)) - 1); + memcpy(block->db_data + block_off, data, end - data); + data = end; + } + + assert(set <= N_DB_SETS); + + return data - begin; +} + + +static int +has_bytes_after (const struct data_block *block, unsigned off) +{ + unsigned bit, set; + int has; + + set = off >> 6; + bit = off & 0x3F; + + has = 0 != (block->db_set[ set ] >> bit); + ++set; + + for ( ; set < N_DB_SETS; ++set) + has += 0 != block->db_set[ set ]; + + return has > 0; +} + + +enum ins_frame +lsquic_data_in_hash_insert_data_frame (struct data_in *data_in, + const struct data_frame *data_frame, uint64_t read_offset) +{ + struct hash_data_in *const hdi = HDI_PTR(data_in); + struct data_block *block; + uint64_t key, off, diff, fin_off; + const unsigned char *data; + unsigned size, nw; + + if (data_frame->df_offset + data_frame->df_size < read_offset) + { + if (data_frame->df_fin) + return INS_FRAME_ERR; + else + return INS_FRAME_DUP; + } + + if ((hdi->hdi_flags & HDI_FIN) && + ( + (data_frame->df_fin && + data_frame->df_offset + data_frame->df_size != hdi->hdi_fin_off) + || + data_frame->df_offset + data_frame->df_size > hdi->hdi_fin_off + ) + ) + { + return INS_FRAME_ERR; + } + + if (data_frame->df_offset < read_offset) + { + diff = read_offset - data_frame->df_offset; + assert(diff <= data_frame->df_size); + size = data_frame->df_size - diff; + off = data_frame->df_offset + diff; + data = data_frame->df_data + diff; + } + else + { + size = data_frame->df_size; + off = data_frame->df_offset; + data = data_frame->df_data; + } + + key = off - (off % DB_DATA_SIZE); + do + { + block = hash_find(hdi, key); + if (!block) + { + block = new_block(hdi, key); + if (!block) + return INS_FRAME_ERR; + } + nw = block_write(block, off % DB_DATA_SIZE, data, size); + size -= nw; + off += nw; + data += nw; + key += DB_DATA_SIZE; + } + while (size > 0); + + if (data_frame->df_fin) + { + fin_off = data_frame->df_offset + data_frame->df_size; + if (has_bytes_after(block, fin_off - block->db_off) || + hash_find(hdi, key)) + { + return INS_FRAME_ERR; + } + hdi->hdi_flags |= HDI_FIN; + hdi->hdi_fin_off = fin_off; + } + + return INS_FRAME_OK; +} + + +static enum ins_frame +hash_di_insert_frame (struct data_in *data_in, + struct stream_frame *new_frame, uint64_t read_offset) +{ + struct hash_data_in *const hdi = HDI_PTR(data_in); + const struct data_frame *const data_frame = &new_frame->data_frame; + enum ins_frame ins; + + ins = lsquic_data_in_hash_insert_data_frame(data_in, data_frame, + read_offset); + assert(ins != INS_FRAME_OVERLAP); + /* NOTE: Only release packet and frame for INS_FRAME_OK, + * other cases are handled by caller */ + if (ins == INS_FRAME_OK) + { + lsquic_packet_in_put(hdi->hdi_conn_pub->mm, new_frame->packet_in); + } + return ins; +} + + +#if __GNUC__ +# define ctz __builtin_ctzll +#else +static unsigned +ctz (unsigned long long x) +{ + unsigned n = 0; + if (0 == (x & ((1ULL << 32) - 1))) { n += 32; x >>= 32; } + if (0 == (x & ((1ULL << 16) - 1))) { n += 16; x >>= 16; } + if (0 == (x & ((1ULL << 8) - 1))) { n += 8; x >>= 8; } + if (0 == (x & ((1ULL << 4) - 1))) { n += 4; x >>= 4; } + if (0 == (x & ((1ULL << 2) - 1))) { n += 2; x >>= 2; } + if (0 == (x & ((1ULL << 1) - 1))) { n += 1; x >>= 1; } + return n; +} +#endif + + +static unsigned +n_avail_bytes (const struct data_block *block, unsigned set, unsigned bit) +{ + unsigned count; + uint64_t part; + + part = ~(block->db_set[ set ] >> bit); + if (part) + { + count = ctz(part); + if (count < 64 - bit) + return count; + } + else + count = 64; + ++set; + + for ( ; set < N_DB_SETS && ~0ULL == block->db_set[ set ]; ++set) + count += 64; + + if (set < N_DB_SETS) + { + part = ~block->db_set[ set ]; + if (part) + count += ctz(part); + else + count += 64; + } + + return count; +} + + +/* Data block is readable if there is at least one readable byte at + * `read_offset' or there is FIN at that offset. + */ +static int +setup_data_frame (struct hash_data_in *hdi, const uint64_t read_offset, + struct data_block *block) +{ + unsigned set, bit; + uint64_t offset; + + offset = read_offset % DB_DATA_SIZE; + set = offset >> 6; + bit = offset & 0x3F; + + if (block->db_set[ set ] & (1ULL << bit)) + { + hdi->hdi_last_block = block; + hdi->hdi_data_frame.df_data = block->db_data; + hdi->hdi_data_frame.df_offset = block->db_off; + hdi->hdi_data_frame.df_read_off = offset; + hdi->hdi_data_frame.df_size = offset + + n_avail_bytes(block, set, bit); + hdi->hdi_data_frame.df_fin = + (hdi->hdi_flags & HDI_FIN) && + hdi->hdi_data_frame.df_read_off + + hdi->hdi_data_frame.df_size == hdi->hdi_fin_off; + return 1; + } + else if ((hdi->hdi_flags & HDI_FIN) && read_offset == hdi->hdi_fin_off) + { + hdi->hdi_last_block = block; + hdi->hdi_data_frame.df_data = NULL; + hdi->hdi_data_frame.df_offset = block->db_off; + hdi->hdi_data_frame.df_read_off = offset; + hdi->hdi_data_frame.df_size = offset; + hdi->hdi_data_frame.df_fin = 1; + return 1; + } + else + return 0; +} + + +static struct data_frame * +hash_di_get_frame (struct data_in *data_in, uint64_t read_offset) +{ + struct hash_data_in *const hdi = HDI_PTR(data_in); + struct data_block *block; + uint64_t key; + + key = read_offset - (read_offset % DB_DATA_SIZE); + block = hash_find(hdi, key); + if (!block) + { + if ((hdi->hdi_flags & HDI_FIN) && read_offset == hdi->hdi_fin_off) + { + hdi->hdi_last_block = NULL; + hdi->hdi_data_frame.df_data = NULL; + hdi->hdi_data_frame.df_offset = read_offset - + read_offset % DB_DATA_SIZE; + hdi->hdi_data_frame.df_read_off = 0; + hdi->hdi_data_frame.df_size = 0; + hdi->hdi_data_frame.df_fin = 1; + return &hdi->hdi_data_frame; + } + else + return NULL; + } + + if (setup_data_frame(hdi, read_offset, block)) + return &hdi->hdi_data_frame; + else + return NULL; +} + + +static void +hash_di_frame_done (struct data_in *data_in, struct data_frame *data_frame) +{ + struct hash_data_in *const hdi = HDI_PTR(data_in); + struct data_block *const block = hdi->hdi_last_block; + + if (block) + { + if (data_frame->df_read_off == DB_DATA_SIZE || + !has_bytes_after(block, data_frame->df_read_off)) + { + hash_remove(hdi, block); + free(block); + if (0 == hdi->hdi_count && 0 == (hdi->hdi_flags & HDI_FIN)) + { + LSQ_DEBUG("hash empty, want to switch"); + hdi->hdi_data_in.di_flags |= DI_SWITCH_IMPL; + } + } + } + else + assert(data_frame->df_fin && data_frame->df_size == 0); +} + + +static int +hash_di_empty (struct data_in *data_in) +{ + struct hash_data_in *const hdi = HDI_PTR(data_in); + return hdi->hdi_count == 0; +} + + +static struct data_in * +hash_di_switch_impl (struct data_in *data_in, uint64_t read_offset) +{ + struct hash_data_in *const hdi = HDI_PTR(data_in); + struct data_in *new_data_in; + + assert(hdi->hdi_count == 0); + + new_data_in = lsquic_data_in_nocopy_new(hdi->hdi_conn_pub, + hdi->hdi_stream_id); + data_in->di_if->di_destroy(data_in); + + return new_data_in; +} + + +static size_t +hash_di_mem_used (struct data_in *data_in) +{ + struct hash_data_in *const hdi = HDI_PTR(data_in); + const struct data_block *block; + size_t size; + unsigned n; + + size = sizeof(*data_in); + + for (n = 0; n < N_BUCKETS(hdi->hdi_nbits); ++n) + TAILQ_FOREACH(block, &hdi->hdi_buckets[n], db_next) + size += sizeof(*block); + + size += N_BUCKETS(hdi->hdi_nbits) * sizeof(hdi->hdi_buckets[0]); + + return size; +} + + +static void +hash_di_dump_state (struct data_in *data_in) +{ + const struct hash_data_in *const hdi = HDI_PTR(data_in); + const struct data_block *block; + unsigned n; + + LSQ_DEBUG("hash state: flags: %X; fin off: %"PRIu64"; count: %u", + hdi->hdi_flags, hdi->hdi_fin_off, hdi->hdi_count); + for (n = 0; n < N_BUCKETS(hdi->hdi_nbits); ++n) + TAILQ_FOREACH(block, &hdi->hdi_buckets[n], db_next) + LSQ_DEBUG("block: off: %"PRIu64, block->db_off); +} + + +static uint64_t +hash_di_readable_bytes (struct data_in *data_in, uint64_t read_offset) +{ + const struct data_frame *data_frame; + uint64_t starting_offset; + + starting_offset = read_offset; + while (data_frame = hash_di_get_frame(data_in, read_offset), + data_frame && data_frame->df_size - data_frame->df_read_off) + read_offset += data_frame->df_size - data_frame->df_read_off; + + return read_offset - starting_offset; +} + + +static const struct data_in_iface di_if_hash = { + .di_destroy = hash_di_destroy, + .di_dump_state = hash_di_dump_state, + .di_empty = hash_di_empty, + .di_frame_done = hash_di_frame_done, + .di_get_frame = hash_di_get_frame, + .di_insert_frame = hash_di_insert_frame, + .di_mem_used = hash_di_mem_used, + .di_own_on_ok = 0, + .di_readable_bytes + = hash_di_readable_bytes, + .di_switch_impl = hash_di_switch_impl, +}; + +static const struct data_in_iface *di_if_hash_ptr = &di_if_hash; diff --git a/external/lsquic/src/liblsquic/lsquic_di_nocopy.c b/external/lsquic/src/liblsquic/lsquic_di_nocopy.c new file mode 100644 index 0000000..dd4794c --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_di_nocopy.c @@ -0,0 +1,560 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_di_nocopy.c -- The "no-copy" data in stream. + * + * Data from packets is not copied: the packets are referenced by stream + * frames. When all data from stream frame is read, the frame is released + * and packet reference count is decremented, which possibly results in + * packet being released as well. + * + * This approach works well in regular circumstances; there are two scenarios + * when it does not: + * + * A. If we have many out-of-order frames, insertion into the list becomes + * expensive. In the degenerate case, we'd have to traverse the whole + * list to find appropriate position. + * + * B. Having many frames ties up resources, as each frame keeps a reference + * to the packet that contains it. This is a possible attack vector: + * send many one-byte packets; a single hole at the beginning will stop + * the server from being able to read the stream, thus tying up resources. + * + * If we detect that either (A) or (B) is true, we request that the stream + * switch to a more robust incoming stream frame handler by setting + * DI_SWITCH_IMPL flag. + * + * For a small number of elements, (A) and (B) do not matter and the checks + * are not performed. This number is defined by EFF_CHECK_THRESH_LOW. On + * the other side of the spectrum, if the number of frames grows very high, + * we want to switch to a more memory-efficient implementation even if (A) + * and (B) are not true. EFF_CHECK_THRESH_HIGH defines this threshold. + * + * Between the low and high thresholds, we detect efficiency problems as + * follows. + * + * To detect (A), we count how many elements we have to traverse during + * insertion. If we have to traverse at least half the list + * EFF_FAR_TRAVERSE_COUNT in a row, DI_SWITCH_IMPL is issued. + * + * If average stream frame size is smaller than EFF_TINY_FRAME_SZ bytes, + * (B) condition is true. In addition, if there are more than EFF_MAX_HOLES + * in the stream, this is also indicative of (B). + */ + + +#include +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_conn_flow.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" +#include "lsquic_rtt.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_mm.h" +#include "lsquic_malo.h" +#include "lsquic_conn.h" +#include "lsquic_conn_public.h" +#include "lsquic_data_in_if.h" + + +#define LSQUIC_LOGGER_MODULE LSQLM_DI +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(ncdi->ncdi_conn_pub->lconn) +#define LSQUIC_LOG_STREAM_ID ncdi->ncdi_stream_id +#include "lsquic_logger.h" + + +/* If number of elements is at or below this number, we do not bother to check + * efficiency conditions. + */ +#define EFF_CHECK_THRESH_LOW 10 + +/* If number of elements is higher than this number, efficiency alert + * is issued unconditionally. + */ +#define EFF_CHECK_THRESH_HIGH 1000 + +/* Maximum number of consecutive far traversals */ +#define EFF_FAR_TRAVERSE_COUNT 4 + +/* Maximum number of holes that is not deemed suspicious */ +#define EFF_MAX_HOLES 5 + +/* What is deemed a tiny frame, in bytes. If it is a power of two, calculation + * is cheaper. + */ +#define EFF_TINY_FRAME_SZ 64 + + +TAILQ_HEAD(stream_frames_tailq, stream_frame); + + +struct nocopy_data_in +{ + struct stream_frames_tailq ncdi_frames_in; + struct data_in ncdi_data_in; + struct lsquic_conn_public *ncdi_conn_pub; + uint64_t ncdi_byteage; + uint64_t ncdi_fin_off; + lsquic_stream_id_t ncdi_stream_id; + unsigned ncdi_n_frames; + unsigned ncdi_n_holes; + unsigned ncdi_cons_far; + enum { + NCDI_FIN_SET = 1 << 0, + NCDI_FIN_REACHED = 1 << 1, + } ncdi_flags; +}; + + +#define NCDI_PTR(data_in) (struct nocopy_data_in *) \ + ((unsigned char *) (data_in) - offsetof(struct nocopy_data_in, ncdi_data_in)) + +#define STREAM_FRAME_PTR(data_frame) (struct stream_frame *) \ + ((unsigned char *) (data_frame) - offsetof(struct stream_frame, data_frame)) + + +static const struct data_in_iface *di_if_nocopy_ptr; + + +struct data_in * +lsquic_data_in_nocopy_new (struct lsquic_conn_public *conn_pub, + lsquic_stream_id_t stream_id) +{ + struct nocopy_data_in *ncdi; + + ncdi = malloc(sizeof(*ncdi)); + if (!ncdi) + return NULL; + + TAILQ_INIT(&ncdi->ncdi_frames_in); + ncdi->ncdi_data_in.di_if = di_if_nocopy_ptr; + ncdi->ncdi_data_in.di_flags = 0; + ncdi->ncdi_conn_pub = conn_pub; + ncdi->ncdi_stream_id = stream_id; + ncdi->ncdi_byteage = 0; + ncdi->ncdi_n_frames = 0; + ncdi->ncdi_n_holes = 0; + ncdi->ncdi_cons_far = 0; + ncdi->ncdi_fin_off = 0; + ncdi->ncdi_flags = 0; + LSQ_DEBUG("initialized"); + return &ncdi->ncdi_data_in; +} + + +static void +nocopy_di_destroy (struct data_in *data_in) +{ + struct nocopy_data_in *const ncdi = NCDI_PTR(data_in); + stream_frame_t *frame; + while ((frame = TAILQ_FIRST(&ncdi->ncdi_frames_in))) + { + TAILQ_REMOVE(&ncdi->ncdi_frames_in, frame, next_frame); + lsquic_packet_in_put(ncdi->ncdi_conn_pub->mm, frame->packet_in); + lsquic_malo_put(frame); + } + free(ncdi); +} + + +#if LSQUIC_EXTRA_CHECKS +static int +frame_list_is_sane (const struct nocopy_data_in *ncdi) +{ + const stream_frame_t *frame; + uint64_t prev_off = 0, prev_end = 0; + int ordered = 1, overlaps = 0; + TAILQ_FOREACH(frame, &ncdi->ncdi_frames_in, next_frame) + { + ordered &= prev_off <= DF_OFF(frame); + overlaps |= prev_end > DF_OFF(frame); + prev_off = DF_OFF(frame); + prev_end = DF_END(frame); + } + return ordered && !overlaps; +} +#define CHECK_ORDER(ncdi) assert(frame_list_is_sane(ncdi)) +#else +#define CHECK_ORDER(ncdi) +#endif + + +#define CASE(letter) ((int) (letter) << 8) + +/* Not all errors are picked up by this function, as it is expensive (and + * potentially error-prone) to check for all possible error conditions. + * It an error be misclassified as an overlap or dup, in the worst case + * we end up with an application error instead of protocol violation. + */ +static int +insert_frame (struct nocopy_data_in *ncdi, struct stream_frame *new_frame, + uint64_t read_offset, unsigned *p_n_frames) +{ + stream_frame_t *prev_frame, *next_frame; + unsigned count; + + if (read_offset > DF_END(new_frame)) + { + if (DF_FIN(new_frame)) + return INS_FRAME_ERR | CASE('A'); + else + return INS_FRAME_DUP | CASE('B'); + } + + if (ncdi->ncdi_flags & NCDI_FIN_SET) + { + if (DF_FIN(new_frame) && DF_END(new_frame) != ncdi->ncdi_fin_off) + return INS_FRAME_ERR | CASE('C'); + if (DF_END(new_frame) > ncdi->ncdi_fin_off) + return INS_FRAME_ERR | CASE('D'); + if (read_offset == DF_END(new_frame)) + return INS_FRAME_DUP | CASE('M'); + } + else + { + if (read_offset == DF_END(new_frame) && !DF_FIN(new_frame)) + return INS_FRAME_DUP | CASE('L'); + } + + /* Find position in the list, going backwards. We go backwards because + * that is the most likely scenario. + */ + next_frame = TAILQ_LAST(&ncdi->ncdi_frames_in, stream_frames_tailq); + if (next_frame && DF_OFF(new_frame) < DF_OFF(next_frame)) + { + count = 1; + prev_frame = TAILQ_PREV(next_frame, stream_frames_tailq, next_frame); + for ( ; prev_frame && DF_OFF(new_frame) < DF_OFF(next_frame); + next_frame = prev_frame, + prev_frame = TAILQ_PREV(prev_frame, stream_frames_tailq, next_frame)) + { + if (DF_OFF(new_frame) >= DF_OFF(prev_frame)) + break; + ++count; + } + } + else + { + count = 0; + prev_frame = NULL; + } + + if (!prev_frame && next_frame && DF_OFF(new_frame) >= DF_OFF(next_frame)) + { + prev_frame = next_frame; + next_frame = TAILQ_NEXT(next_frame, next_frame); + } + + const int select = !!prev_frame << 1 | !!next_frame; + switch (select) + { + default: /* No neighbors */ + if (read_offset == DF_END(new_frame)) + { + if (DF_SIZE(new_frame)) + { + if (DF_FIN(new_frame) + && !((ncdi->ncdi_flags & NCDI_FIN_REACHED) + && read_offset == ncdi->ncdi_fin_off)) + return INS_FRAME_OVERLAP | CASE('E'); + else + return INS_FRAME_DUP | CASE('F'); + } + else if (!DF_FIN(new_frame) + || ((ncdi->ncdi_flags & NCDI_FIN_REACHED) + && read_offset == ncdi->ncdi_fin_off)) + return INS_FRAME_DUP | CASE('G'); + } + else if (read_offset > DF_OFF(new_frame)) + return INS_FRAME_OVERLAP | CASE('N'); + goto list_was_empty; + case 3: /* Both left and right neighbors */ + case 2: /* Only left neighbor (prev_frame) */ + if (DF_OFF(prev_frame) == DF_OFF(new_frame) + && DF_SIZE(prev_frame) == DF_SIZE(new_frame)) + { + if (!DF_FIN(prev_frame) && DF_FIN(new_frame)) + return INS_FRAME_OVERLAP | CASE('H'); + else + return INS_FRAME_DUP | CASE('I'); + } + if (DF_END(prev_frame) > DF_OFF(new_frame)) + return INS_FRAME_OVERLAP | CASE('J'); + if (select == 2) + goto have_prev; + /* Fall-through */ + case 1: /* Only right neighbor (next_frame) */ + if (DF_END(new_frame) > DF_OFF(next_frame)) + return INS_FRAME_OVERLAP | CASE('K'); + else if (read_offset > DF_OFF(new_frame)) + return INS_FRAME_OVERLAP | CASE('O'); + break; + } + + if (prev_frame) + { + have_prev: + TAILQ_INSERT_AFTER(&ncdi->ncdi_frames_in, prev_frame, new_frame, next_frame); + ncdi->ncdi_n_holes += DF_END(prev_frame) != DF_OFF(new_frame); + if (next_frame) + { + ncdi->ncdi_n_holes += DF_END(new_frame) != DF_OFF(next_frame); + --ncdi->ncdi_n_holes; + } + } + else + { + ncdi->ncdi_n_holes += next_frame + && DF_END(new_frame) != DF_OFF(next_frame); + list_was_empty: + TAILQ_INSERT_HEAD(&ncdi->ncdi_frames_in, new_frame, next_frame); + } + CHECK_ORDER(ncdi); + + if (DF_FIN(new_frame)) + { + ncdi->ncdi_flags |= NCDI_FIN_SET; + ncdi->ncdi_fin_off = DF_END(new_frame); + LSQ_DEBUG("FIN set at %"PRIu64, DF_END(new_frame)); + } + + ++ncdi->ncdi_n_frames; + ncdi->ncdi_byteage += DF_SIZE(new_frame); + *p_n_frames = count; + + return INS_FRAME_OK | CASE('Z'); +} + + +static int +check_efficiency (struct nocopy_data_in *ncdi, unsigned count) +{ + if (ncdi->ncdi_n_frames <= EFF_CHECK_THRESH_LOW) + { + ncdi->ncdi_cons_far = 0; + return 0; + } + if (ncdi->ncdi_n_frames > EFF_CHECK_THRESH_HIGH) + return 1; + if (count >= ncdi->ncdi_n_frames / 2) + { + ++ncdi->ncdi_cons_far; + if (ncdi->ncdi_cons_far > EFF_FAR_TRAVERSE_COUNT) + return 1; + } + else + ncdi->ncdi_cons_far = 0; + if (ncdi->ncdi_n_holes > EFF_MAX_HOLES) + return 1; + if (ncdi->ncdi_byteage / EFF_TINY_FRAME_SZ < ncdi->ncdi_n_frames) + return 1; + return 0; +} + + +static void +set_eff_alert (struct nocopy_data_in *ncdi) +{ + LSQ_DEBUG("low efficiency: n_frames: %u; n_holes: %u; cons_far: %u; " + "byteage: %"PRIu64, ncdi->ncdi_n_frames, ncdi->ncdi_n_holes, + ncdi->ncdi_cons_far, ncdi->ncdi_byteage); + ncdi->ncdi_data_in.di_flags |= DI_SWITCH_IMPL; +} + + +static enum ins_frame +nocopy_di_insert_frame (struct data_in *data_in, + struct stream_frame *new_frame, uint64_t read_offset) +{ + struct nocopy_data_in *const ncdi = NCDI_PTR(data_in); + unsigned count; + enum ins_frame ins; + int ins_case; + + assert(0 == (new_frame->data_frame.df_fin & ~1)); + ins_case = insert_frame(ncdi, new_frame, read_offset, &count); + ins = ins_case & 0xFF; + ins_case >>= 8; + LSQ_DEBUG("%s: ins: %d (case '%c')", __func__, ins, (char) ins_case); + switch (ins) + { + case INS_FRAME_OK: + if (check_efficiency(ncdi, count)) + set_eff_alert(ncdi); + break; + case INS_FRAME_DUP: + case INS_FRAME_ERR: + break; + default: + break; + } + + return ins; +} + + +static struct data_frame * +nocopy_di_get_frame (struct data_in *data_in, uint64_t read_offset) +{ + struct nocopy_data_in *const ncdi = NCDI_PTR(data_in); + struct stream_frame *frame = TAILQ_FIRST(&ncdi->ncdi_frames_in); + if (frame && frame->data_frame.df_offset + + frame->data_frame.df_read_off == read_offset) + { + LSQ_DEBUG("get_frame: frame (off: %"PRIu64", size: %u, fin: %d), at " + "read offset %"PRIu64, DF_OFF(frame), DF_SIZE(frame), DF_FIN(frame), + read_offset); + return &frame->data_frame; + } + else + { + LSQ_DEBUG("get_frame: no frame at read offset %"PRIu64, read_offset); + return NULL; + } +} + + +static void +nocopy_di_frame_done (struct data_in *data_in, struct data_frame *data_frame) +{ + struct nocopy_data_in *const ncdi = NCDI_PTR(data_in); + struct stream_frame *const frame = STREAM_FRAME_PTR(data_frame), *first; + assert(data_frame->df_read_off == data_frame->df_size); + TAILQ_REMOVE(&ncdi->ncdi_frames_in, frame, next_frame); + first = TAILQ_FIRST(&ncdi->ncdi_frames_in); + ncdi->ncdi_n_holes -= first && frame->data_frame.df_offset + + frame->data_frame.df_size != first->data_frame.df_offset; + --ncdi->ncdi_n_frames; + ncdi->ncdi_byteage -= frame->data_frame.df_size; + if (DF_FIN(frame)) + { + ncdi->ncdi_flags |= NCDI_FIN_REACHED; + LSQ_DEBUG("FIN has been reached at offset %"PRIu64, DF_END(frame)); + } + LSQ_DEBUG("frame (off: %"PRIu64", size: %u, fin: %d) done", + DF_OFF(frame), DF_SIZE(frame), DF_FIN(frame)); + lsquic_packet_in_put(ncdi->ncdi_conn_pub->mm, frame->packet_in); + lsquic_malo_put(frame); +} + + +static int +nocopy_di_empty (struct data_in *data_in) +{ + struct nocopy_data_in *const ncdi = NCDI_PTR(data_in); + return TAILQ_EMPTY(&ncdi->ncdi_frames_in); +} + + +static struct data_in * +nocopy_di_switch_impl (struct data_in *data_in, uint64_t read_offset) +{ + struct nocopy_data_in *const ncdi = NCDI_PTR(data_in); + struct data_in *new_data_in; + stream_frame_t *frame; + enum ins_frame ins; + + new_data_in = lsquic_data_in_hash_new(ncdi->ncdi_conn_pub, + ncdi->ncdi_stream_id, ncdi->ncdi_byteage); + if (!new_data_in) + goto end; + + while ((frame = TAILQ_FIRST(&ncdi->ncdi_frames_in))) + { + TAILQ_REMOVE(&ncdi->ncdi_frames_in, frame, next_frame); + ins = lsquic_data_in_hash_insert_data_frame(new_data_in, + &frame->data_frame, read_offset); + lsquic_packet_in_put(ncdi->ncdi_conn_pub->mm, frame->packet_in); + lsquic_malo_put(frame); + if (INS_FRAME_ERR == ins) + { + new_data_in->di_if->di_destroy(new_data_in); + new_data_in = NULL; + goto end; + } + } + + end: + data_in->di_if->di_destroy(data_in); + return new_data_in; +} + + +/* This function overestimates amount of memory because some packets are + * referenced by more than one stream. In the usual case, however, I + * expect the error not to be large. + */ +static size_t +nocopy_di_mem_used (struct data_in *data_in) +{ + struct nocopy_data_in *const ncdi = NCDI_PTR(data_in); + const stream_frame_t *frame; + size_t size; + + size = sizeof(*data_in); + TAILQ_FOREACH(frame, &ncdi->ncdi_frames_in, next_frame) + size += lsquic_packet_in_mem_used(frame->packet_in); + + return size; +} + + +static void +nocopy_di_dump_state (struct data_in *data_in) +{ + struct nocopy_data_in *const ncdi = NCDI_PTR(data_in); + const struct stream_frame *frame; + + LSQ_DEBUG("nocopy state: frames: %u; holes: %u; cons_far: %u", + ncdi->ncdi_n_frames, ncdi->ncdi_n_holes, ncdi->ncdi_cons_far); + TAILQ_FOREACH(frame, &ncdi->ncdi_frames_in, next_frame) + LSQ_DEBUG("frame: off: %"PRIu64"; read_off: %"PRIu16"; size: %"PRIu16 + "; fin: %d", DF_OFF(frame), frame->data_frame.df_read_off, + DF_SIZE(frame), DF_FIN(frame)); +} + + +static uint64_t +nocopy_di_readable_bytes (struct data_in *data_in, uint64_t read_offset) +{ + const struct nocopy_data_in *const ncdi = NCDI_PTR(data_in); + const struct stream_frame *frame; + uint64_t starting_offset; + + starting_offset = read_offset; + TAILQ_FOREACH(frame, &ncdi->ncdi_frames_in, next_frame) + if (DF_ROFF(frame) == read_offset) + read_offset += DF_END(frame) - DF_ROFF(frame); + else if (read_offset > starting_offset) + break; + + return read_offset - starting_offset; +} + + +static const struct data_in_iface di_if_nocopy = { + .di_destroy = nocopy_di_destroy, + .di_dump_state = nocopy_di_dump_state, + .di_empty = nocopy_di_empty, + .di_frame_done = nocopy_di_frame_done, + .di_get_frame = nocopy_di_get_frame, + .di_insert_frame = nocopy_di_insert_frame, + .di_mem_used = nocopy_di_mem_used, + .di_own_on_ok = 1, + .di_readable_bytes + = nocopy_di_readable_bytes, + .di_switch_impl = nocopy_di_switch_impl, +}; + +static const struct data_in_iface *di_if_nocopy_ptr = &di_if_nocopy; diff --git a/external/lsquic/src/liblsquic/lsquic_enc_sess.h b/external/lsquic/src/liblsquic/lsquic_enc_sess.h new file mode 100644 index 0000000..6baec61 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_enc_sess.h @@ -0,0 +1,384 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_ENC_SESS_H +#define LSQUIC_ENC_SESS_H 1 + +#include "lsquic_shared_support.h" + +struct lsquic_alarmset; +struct lsquic_engine_public; +struct lsquic_packet_out; +struct lsquic_packet_in; +struct stream_wrapper; +struct ver_neg; +struct lsquic_conn; +struct transport_params; +struct lsquic_cid; +struct ssl_stream_method_st; +struct ssl_st; +struct sockaddr; +struct conn_cid_elem; +struct lsquic_engine_settings; +enum lsquic_version; + +#define DNONC_LENGTH 32 +#define SRST_LENGTH 16 + +/* From [draft-ietf-quic-tls-14]: + * + * Data is protected using a number of encryption levels: + * + * o Plaintext + * + * o Early Data (0-RTT) Keys + * + * o Handshake Keys + * + * o Application Data (1-RTT) Keys + */ + +/* This enum maps to the list above */ +enum enc_level +{ + ENC_LEV_INIT, + ENC_LEV_0RTT, + ENC_LEV_HSK, + ENC_LEV_APP, + N_ENC_LEVS +}; + +enum handshake_error /* TODO: rename this enum */ +{ + DATA_NOT_ENOUGH = -2, + DATA_FORMAT_ERROR = -1, + HS_ERROR = -1, + DATA_NO_ERROR = 0, + HS_SHLO = 0, + HS_1RTT = 1, + HS_SREJ = 2, +}; + +#ifndef LSQUIC_KEEP_ENC_SESS_HISTORY +# ifndef NDEBUG +# define LSQUIC_KEEP_ENC_SESS_HISTORY 1 +# else +# define LSQUIC_KEEP_ENC_SESS_HISTORY 0 +# endif +#endif + +#if LSQUIC_KEEP_ENC_SESS_HISTORY +#define ESHIST_BITS 7 +#define ESHIST_MASK ((1 << ESHIST_BITS) - 1) +#define ESHIST_STR_SIZE ((1 << ESHIST_BITS) + 1) +#endif + +enum enc_packout { ENCPA_OK, ENCPA_NOMEM, ENCPA_BADCRYPT, }; + +enum dec_packin { + DECPI_OK, + DECPI_NOMEM, + DECPI_TOO_SHORT, + DECPI_NOT_YET, + DECPI_BADCRYPT, + DECPI_VIOLATION, +}; + +typedef void enc_session_t; + +struct enc_session_funcs_common +{ + /* Global initialization: call once per implementation */ + int (*esf_global_init)(int flags); + + /* Global cleanup: call once per implementation */ + void (*esf_global_cleanup) (void); + + const char * + (*esf_cipher) (enc_session_t *); + + int + (*esf_keysize) (enc_session_t *); + + int + (*esf_alg_keysize) (enc_session_t *); + + const char * + (*esf_get_sni) (enc_session_t *); + + /* Need to pass lconn in encrypt and decrypt methods because enc_session + * is allowed to be NULL for gQUIC. + */ + enum enc_packout + (*esf_encrypt_packet) (enc_session_t *, const struct lsquic_engine_public *, + struct lsquic_conn *, struct lsquic_packet_out *); + + enum dec_packin + (*esf_decrypt_packet)(enc_session_t *, struct lsquic_engine_public *, + const struct lsquic_conn *, struct lsquic_packet_in *); + + struct stack_st_X509 * + (*esf_get_server_cert_chain) (enc_session_t *); + + int + (*esf_verify_reset_token) (enc_session_t *, const unsigned char *, size_t); + + int + (*esf_did_sess_resume_succeed) (enc_session_t *); + + int + (*esf_is_sess_resume_enabled) (enc_session_t *); + + void + (*esf_set_conn) (enc_session_t *, struct lsquic_conn *); + + /* Optional. This function gets called after packets are encrypted, + * batched, and are about to be sent. + */ + void + (*esf_flush_encryption) (enc_session_t *); + + unsigned + esf_tag_len; +}; + +struct enc_session_funcs_gquic +{ +#if LSQUIC_KEEP_ENC_SESS_HISTORY + /* Grab encryption session history */ + void (*esf_get_hist) (enc_session_t *, + char buf[ESHIST_STR_SIZE]); +#endif + + /* Destroy enc session */ + void (*esf_destroy)(enc_session_t *enc_session); + + /* Return true if handshake has been completed */ + int (*esf_is_hsk_done)(enc_session_t *enc_session); + + /* Get value of setting specified by `tag' */ + int (*esf_get_peer_setting) (enc_session_t *, uint32_t tag, + uint32_t *val); + + /* Get value of peer option (that from COPT array) */ + int (*esf_get_peer_option) (enc_session_t *enc_session, + uint32_t tag); + + /* Create server session */ + enc_session_t * + (*esf_create_server) (struct lsquic_conn *, + lsquic_cid_t cid, struct lsquic_engine_public *); + + /* out_len should have init value as the max length of out */ + enum handshake_error + (*esf_handle_chlo) (enc_session_t *enc_session, enum lsquic_version, + const uint8_t *in, int in_len, time_t t, + const struct sockaddr *ip_addr, const struct sockaddr *local, + uint8_t *out, size_t *out_len, + uint8_t nonce[DNONC_LENGTH], int *nonce_set); + + void (*esf_hsk_destroy)(void *hsk_ctx); + +#ifndef NDEBUG + /* Need to expose this function for testing */ + int (*esf_determine_diversification_key) (enc_session_t *, + uint8_t *diversification_nonce); +#endif + + const char * + (*esf_get_ua) (enc_session_t *); + + int + (*esf_have_key_gt_one) (enc_session_t *enc_session); + +#ifndef NDEBUG + /* Functions that are only relevant in maintest. We may want to get rid + * of them somehow and only use the public API to test. + */ + + uint8_t + (*esf_have_key) (enc_session_t *); + + void + (*esf_set_have_key) (enc_session_t *, uint8_t); + + const unsigned char * + (*esf_get_enc_key_i) (enc_session_t *); + + const unsigned char * + (*esf_get_dec_key_i) (enc_session_t *); + + const unsigned char * + (*esf_get_enc_key_nonce_i) (enc_session_t *); + + const unsigned char * + (*esf_get_dec_key_nonce_i) (enc_session_t *); + + const unsigned char * + (*esf_get_enc_key_nonce_f) (enc_session_t *); + + const unsigned char * + (*esf_get_dec_key_nonce_f) (enc_session_t *); +#endif /* !defined(NDEBUG) */ + + /* Create client session */ + enc_session_t * + (*esf_create_client) (struct lsquic_conn *, const char *domain, + lsquic_cid_t cid, + struct lsquic_engine_public *, + const unsigned char *, size_t); + + /* -1 error, 0, OK, response in `buf' */ + int + (*esf_gen_chlo) (enc_session_t *, enum lsquic_version, + uint8_t *buf, size_t *len); + + int + (*esf_handle_chlo_reply) (enc_session_t *, + const uint8_t *data, int len); + + size_t + (*esf_mem_used)(enc_session_t *); + + /* Session resumption serialization needs the knowledge of the QUIC + * version, that's why there is a separate method for thus. Plus, we + * want to be able to call it after the "handshake is done" callback + * is called. + */ + void (*esf_maybe_dispatch_sess_resume) (enc_session_t *, + void (*cb)(struct lsquic_conn *, const unsigned char *, size_t)); + + void (*esf_reset_cid) (enc_session_t *, const lsquic_cid_t *); +}; + +struct crypto_stream_if +{ + ssize_t (*csi_write) (void *stream, const void *buf, size_t len); + int (*csi_flush) (void *stream); + ssize_t (*csi_readf) (void *stream, + size_t (*readf)(void *, const unsigned char *, size_t, int), void *ctx); + int (*csi_wantwrite) (void *stream, int is_want); + int (*csi_wantread) (void *stream, int is_want); + enum enc_level + (*csi_enc_level) (void *stream); +}; + +struct enc_session_funcs_iquic +{ + enc_session_t * + (*esfi_create_client) (const char *domain, struct lsquic_engine_public *, + struct lsquic_conn *, const struct lsquic_cid *, + const struct ver_neg *, void *(crypto_streams)[4], + const struct crypto_stream_if *, + const unsigned char *, size_t, + struct lsquic_alarmset *, unsigned, void*); + + void + (*esfi_destroy) (enc_session_t *); + + struct ssl_st * + (*esfi_get_ssl) (enc_session_t *); + + struct transport_params * + (*esfi_get_peer_transport_params) (enc_session_t *); + + int + (*esfi_reset_dcid) (enc_session_t *, const struct lsquic_cid *, + const struct lsquic_cid *); + + void + (*esfi_set_iscid) (enc_session_t *, const struct lsquic_packet_in *); + + int + (*esfi_init_server) (enc_session_t *); + + void + (*esfi_set_streams) (enc_session_t *, void *(crypto_streams)[4], + const struct crypto_stream_if *); + + enc_session_t * + (*esfi_create_server) (struct lsquic_engine_public *, struct lsquic_conn *, + const struct lsquic_cid *, + void *(crypto_streams)[4], + const struct crypto_stream_if *, + const struct lsquic_cid *odcid, + const struct lsquic_cid *iscid, + const struct lsquic_cid *rscid + ); + + void + (*esfi_shake_stream)(enc_session_t *, struct lsquic_stream *, + const char *); + + void + (*esfi_handshake_confirmed)(enc_session_t *); + + int + (*esfi_in_init)(enc_session_t *); + + int + (*esfi_data_in)(enc_session_t *, enum enc_level, + const unsigned char *, size_t); +}; + +LSQUIC_EXTERN +#ifdef NDEBUG +const +#endif +struct enc_session_funcs_common lsquic_enc_session_common_gquic_1; + +LSQUIC_EXTERN +#ifdef NDEBUG +const +#endif +struct enc_session_funcs_common lsquic_enc_session_common_gquic_2; + +LSQUIC_EXTERN const struct enc_session_funcs_common lsquic_enc_session_common_ietf_v1; + +LSQUIC_EXTERN +#ifdef NDEBUG +const +#endif +struct enc_session_funcs_gquic lsquic_enc_session_gquic_gquic_1; + +LSQUIC_EXTERN const struct enc_session_funcs_iquic lsquic_enc_session_iquic_ietf_v1; + +#define select_esf_common_by_ver(ver) ( \ + ver > LSQVER_050 ? &lsquic_enc_session_common_ietf_v1 : \ + ver == LSQVER_050 ? &lsquic_enc_session_common_gquic_2 : \ + &lsquic_enc_session_common_gquic_1 ) + +extern const char *const lsquic_enclev2str[]; + +LSQUIC_EXTERN const struct lsquic_stream_if lsquic_cry_sm_if; + +LSQUIC_EXTERN const struct lsquic_stream_if lsquic_mini_cry_sm_if; + +/* RFC 7301, Section 3.2 */ +#define ALERT_NO_APPLICATION_PROTOCOL 120 + +enum lsquic_version +lsquic_sess_resume_version (const unsigned char *, size_t); + +/* This is seems to be true for all of the ciphers used by IETF QUIC. + * XXX: Perhaps add a check? + */ +#define IQUIC_TAG_LEN 16 + +/* Return number of bytes written to `buf' or -1 on error */ +int +lsquic_enc_sess_ietf_gen_quic_ctx ( + const struct lsquic_engine_settings *settings, + enum lsquic_version version, unsigned char *buf, size_t bufsz); + +struct enc_sess_iquic; +int +iquic_esfi_init_server_tp (struct enc_sess_iquic *const enc_sess); + +int +iquic_esfi_switch_version (enc_session_t *enc_session_p, lsquic_cid_t *dcid, + int backup_keys); + +int +iquic_esf_is_enc_level_ready (enc_session_t *enc_session_p, + enum enc_level level); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_enc_sess_common.c b/external/lsquic/src/liblsquic/lsquic_enc_sess_common.c new file mode 100644 index 0000000..0afc882 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_enc_sess_common.c @@ -0,0 +1,34 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_enc_sess.h" +#include "lsquic_version.h" + + +const char *const lsquic_enclev2str[] = +{ + [ENC_LEV_0RTT] = "0RTT", + [ENC_LEV_INIT] = "INIT", + [ENC_LEV_HSK] = "HSK", + [ENC_LEV_APP] = "APP", +}; + + +enum lsquic_version +lsquic_sess_resume_version (const unsigned char *buf, size_t bufsz) +{ + lsquic_ver_tag_t tag; + + if (bufsz >= sizeof(tag)) + { + memcpy(&tag, buf, sizeof(tag)); + return lsquic_tag2ver(tag); + } + else + return N_LSQVER; +} diff --git a/external/lsquic/src/liblsquic/lsquic_enc_sess_ietf.c b/external/lsquic/src/liblsquic/lsquic_enc_sess_ietf.c new file mode 100644 index 0000000..ae52223 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_enc_sess_ietf.c @@ -0,0 +1,3619 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_enc_sess_ietf.c -- Crypto session for IETF QUIC + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "fiu-local.h" + +#include "lsquic_types.h" +#include "lsquic_hkdf.h" +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_sizes.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_enc_sess.h" +#include "lsquic_parse.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_out.h" +#include "lsquic_packet_ietf.h" +#include "lsquic_packet_in.h" +#include "lsquic_util.h" +#include "lsquic_byteswap.h" +#include "lsquic_ev_log.h" +#include "lsquic_trans_params.h" +#include "lsquic_version.h" +#include "lsquic_ver_neg.h" +#include "lsquic_frab_list.h" +#include "lsquic_tokgen.h" +#include "lsquic_ietf.h" +#include "lsquic_alarmset.h" + +#if __GNUC__ +# define UNLIKELY(cond) __builtin_expect(cond, 0) +#else +# define UNLIKELY(cond) cond +#endif + +#define MAX(a, b) ((a) > (b) ? (a) : (b)) + +#define LSQUIC_LOGGER_MODULE LSQLM_HANDSHAKE +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(enc_sess->esi_conn) +#include "lsquic_logger.h" + +#define N_HSK_PAIRS (N_ENC_LEVS - 1) + +static const struct alpn_map { + enum lsquic_version version; + const unsigned char *alpn; +} s_h3_alpns[] = { + { LSQVER_ID27, (unsigned char *) "\x05h3-27", }, + { LSQVER_ID29, (unsigned char *) "\x05h3-29", }, + { LSQVER_I001, (unsigned char *) "\x02h3", }, + { LSQVER_I002, (unsigned char *) "\x02h3", }, + { LSQVER_RESVED, (unsigned char *) "\x02h3", }, +}; + +struct enc_sess_iquic; +struct crypto_ctx; +struct crypto_ctx_pair; +struct header_prot; + +static const int s_log_seal_and_open; +static char s_str[0x1000]; + +static const SSL_QUIC_METHOD cry_quic_method; + +static int s_idx = -1; + +static int +setup_handshake_keys (struct enc_sess_iquic *, const lsquic_cid_t *); + +static void +free_handshake_keys (struct enc_sess_iquic *); + +static struct stack_st_X509 * +iquic_esf_get_server_cert_chain (enc_session_t *); + +static void +maybe_drop_SSL (struct enc_sess_iquic *); + +static void +no_sess_ticket (enum alarm_id alarm_id, void *ctx, + lsquic_time_t expiry, lsquic_time_t now); + +static int +iquic_new_session_cb (SSL *, SSL_SESSION *); + +static enum ssl_verify_result_t +verify_server_cert_callback (SSL *, uint8_t *out_alert); + +static void +iquic_esfi_destroy (enc_session_t *); + +#define SAMPLE_SZ 16 + +typedef void (*gen_hp_mask_f)(struct enc_sess_iquic *, + struct header_prot *, unsigned rw, + const unsigned char *sample, unsigned char *mask, size_t sz); + +#define CHACHA20_KEY_LENGTH 32 + +struct header_prot +{ + gen_hp_mask_f hp_gen_mask; + enum enc_level hp_enc_level; + enum { + HP_CAN_READ = 1 << 0, + HP_CAN_WRITE = 1 << 1, + } hp_flags; + union { + EVP_CIPHER_CTX cipher_ctx[2]; /* AES */ + unsigned char buf[2][CHACHA20_KEY_LENGTH]; /* ChaCha */ + } hp_u; +}; + +static inline unsigned +header_prot_inited(const struct header_prot *hp, int rw_flag) +{ return hp->hp_flags & rw_flag; } + + +struct crypto_ctx +{ + enum { + YK_INITED = 1 << 0, + } yk_flags; + EVP_AEAD_CTX yk_aead_ctx; + unsigned yk_key_sz; + unsigned yk_iv_sz; + unsigned char yk_key_buf[EVP_MAX_KEY_LENGTH]; + unsigned char yk_iv_buf[EVP_MAX_IV_LENGTH]; +}; + + +struct crypto_ctx_pair +{ + lsquic_packno_t ykp_thresh; + struct crypto_ctx ykp_ctx[2]; /* client, server */ +}; + + +struct hsk_crypto +{ + struct crypto_ctx_pair pair; + struct header_prot hp; +}; + + +struct label_set +{ + const char *key; + const char *iv; + const char *hp; + int key_len; + int iv_len; + int hp_len; +}; + +static struct label_set hkdf_labels[2] = +{ + { "quic key", "quic iv", "quic hp", 8, 7, 7 }, + { "quicv2 key", "quicv2 iv", "quicv2 hp", 10, 9, 9 } +}; + + +/* [draft-ietf-quic-tls-12] Section 5.3.6 */ +static int +init_crypto_ctx (struct crypto_ctx *crypto_ctx, const EVP_MD *md, + const EVP_AEAD *aead, const unsigned char *secret, + size_t secret_sz, enum evp_aead_direction_t dir, + struct label_set *key_iv) +{ + crypto_ctx->yk_key_sz = EVP_AEAD_key_length(aead); + crypto_ctx->yk_iv_sz = EVP_AEAD_nonce_length(aead); + + if (crypto_ctx->yk_key_sz > sizeof(crypto_ctx->yk_key_buf) + || crypto_ctx->yk_iv_sz > sizeof(crypto_ctx->yk_iv_buf)) + { + return -1; + } + + lsquic_qhkdf_expand(md, secret, secret_sz, key_iv->key, key_iv->key_len, + crypto_ctx->yk_key_buf, crypto_ctx->yk_key_sz); + lsquic_qhkdf_expand(md, secret, secret_sz, key_iv->iv, key_iv->iv_len, + crypto_ctx->yk_iv_buf, crypto_ctx->yk_iv_sz); + if (!EVP_AEAD_CTX_init_with_direction(&crypto_ctx->yk_aead_ctx, aead, + crypto_ctx->yk_key_buf, crypto_ctx->yk_key_sz, IQUIC_TAG_LEN, dir)) + return -1; + + crypto_ctx->yk_flags |= YK_INITED; + + return 0; +} + + +static void +cleanup_crypto_ctx (struct crypto_ctx *crypto_ctx) +{ + if (crypto_ctx->yk_flags & YK_INITED) + { + EVP_AEAD_CTX_cleanup(&crypto_ctx->yk_aead_ctx); + crypto_ctx->yk_flags &= ~YK_INITED; + } +} + + +#define HP_BATCH_SIZE 8 + +struct enc_sess_iquic +{ + struct lsquic_engine_public + *esi_enpub; + struct lsquic_conn *esi_conn; + void **esi_streams; + const struct crypto_stream_if *esi_cryst_if; + const struct ver_neg + *esi_ver_neg; + SSL *esi_ssl; + + /* These are used for forward encryption key phase 0 and 1 */ + struct header_prot esi_hp; + struct crypto_ctx_pair + esi_pairs[2]; + /* These are used during handshake. There are three of them. */ + struct hsk_crypto *esi_hsk_crypto; + struct hsk_crypto *esi_vn_save; + lsquic_packno_t esi_max_packno[N_PNS]; + lsquic_cid_t esi_odcid; + lsquic_cid_t esi_rscid; /* Retry SCID */ + lsquic_cid_t esi_iscid; /* Initial SCID */ + unsigned esi_key_phase; + enum { + ESI_UNUSED0 = 1 << 0, + ESI_LOG_SECRETS = 1 << 1, + ESI_HANDSHAKE_OK = 1 << 2, + ESI_ODCID = 1 << 3, + ESI_ON_WRITE = 1 << 4, + ESI_SERVER = 1 << 5, + ESI_USE_SSL_TICKET = 1 << 6, + ESI_HAVE_PEER_TP = 1 << 7, + ESI_ALPN_CHECKED = 1 << 8, + ESI_CACHED_INFO = 1 << 9, + ESI_HSK_CONFIRMED= 1 << 10, + ESI_WANT_TICKET = 1 << 11, + ESI_RECV_QL_BITS = 1 << 12, + ESI_SEND_QL_BITS = 1 << 13, + ESI_RSCID = 1 << 14, + ESI_ISCID = 1 << 15, + ESI_RETRY = 1 << 16, /* Connection was retried */ + ESI_MAX_PACKNO_INIT = 1 << 17, + ESI_MAX_PACKNO_HSK = ESI_MAX_PACKNO_INIT << PNS_HSK, + ESI_MAX_PACKNO_APP = ESI_MAX_PACKNO_INIT << PNS_APP, + ESI_HAVE_0RTT_TP = 1 << 20, + ESI_SWITCH_VER = 1 << 21, + } esi_flags; + enum enc_level esi_last_w; + unsigned esi_trasec_sz; +#ifndef NDEBUG + char *esi_sni_bypass; +#endif + const unsigned char *esi_alpn; + /* Need MD and AEAD for key rotation */ + const EVP_MD *esi_md; + const EVP_AEAD *esi_aead; + struct { + const char *cipher_name; + int alg_bits; + } esi_cached_info; + /* Secrets are kept for key rotation */ + unsigned char esi_traffic_secrets[2][EVP_MAX_KEY_LENGTH]; + /* We never use the first two levels, so it seems we could reduce the + * memory requirement here at the cost of adding some code. + */ + struct frab_list esi_frals[N_ENC_LEVS]; + struct transport_params + esi_peer_tp; + struct lsquic_alarmset + *esi_alset; + unsigned esi_max_streams_uni; + unsigned esi_hp_batch_idx; + unsigned esi_hp_batch_packno_len[HP_BATCH_SIZE]; + unsigned esi_hp_batch_packno_off[HP_BATCH_SIZE]; + struct lsquic_packet_out * + esi_hp_batch_packets[HP_BATCH_SIZE]; + unsigned char esi_hp_batch_samples[HP_BATCH_SIZE][SAMPLE_SZ]; + unsigned char esi_grease; + signed char esi_have_forw; +}; + + +static void +gen_hp_mask_aes (struct enc_sess_iquic *enc_sess, + struct header_prot *hp, unsigned rw, + const unsigned char *sample, unsigned char *mask, size_t sz) +{ + int out_len; + + if (EVP_EncryptUpdate(&hp->hp_u.cipher_ctx[rw], mask, &out_len, sample, sz)) + assert(out_len >= (int) sz); + else + { + LSQ_WARN("cannot generate hp mask, error code: %"PRIu32, + ERR_get_error()); + enc_sess->esi_conn->cn_if->ci_internal_error(enc_sess->esi_conn, + "cannot generate hp mask, error code: %"PRIu32, ERR_get_error()); + } +} + + +static void +gen_hp_mask_chacha20 (struct enc_sess_iquic *enc_sess, + struct header_prot *hp, unsigned rw, + const unsigned char *sample, unsigned char *mask, size_t sz) +{ + const uint8_t *nonce; + uint32_t counter; + +#if __BYTE_ORDER == __LITTLE_ENDIAN + memcpy(&counter, sample, sizeof(counter)); +#else +#error TODO: support non-little-endian machines +#endif + nonce = sample + sizeof(counter); + CRYPTO_chacha_20(mask, (unsigned char [5]) { 0, 0, 0, 0, 0, }, 5, + hp->hp_u.buf[rw], nonce, counter); +} + + +static void +apply_hp (struct enc_sess_iquic *enc_sess, struct header_prot *hp, + unsigned char *dst, const unsigned char *mask, + unsigned packno_off, unsigned packno_len) +{ + char mask_str[5 * 2 + 1]; + + LSQ_DEBUG("apply header protection using mask %s", + HEXSTR(mask, 5, mask_str)); + if (enc_sess->esi_flags & ESI_SEND_QL_BITS) + dst[0] ^= (0x7 | ((dst[0] >> 7) << 3)) & mask[0]; + else + dst[0] ^= (0xF | (((dst[0] & 0x80) == 0) << 4)) & mask[0]; + switch (packno_len) + { + case 4: + dst[packno_off + 3] ^= mask[4]; + /* fall-through */ + case 3: + dst[packno_off + 2] ^= mask[3]; + /* fall-through */ + case 2: + dst[packno_off + 1] ^= mask[2]; + /* fall-through */ + default: + dst[packno_off + 0] ^= mask[1]; + } +} + + +static void +apply_hp_immediately (struct enc_sess_iquic *enc_sess, + struct header_prot *hp, struct lsquic_packet_out *packet_out, + unsigned packno_off, unsigned packno_len) +{ + unsigned char mask[SAMPLE_SZ]; + + hp->hp_gen_mask(enc_sess, hp, 1, + packet_out->po_enc_data + packno_off + 4, mask, SAMPLE_SZ); + apply_hp(enc_sess, hp, packet_out->po_enc_data, mask, packno_off, + packno_len); +#ifndef NDEBUG + packet_out->po_lflags |= POL_HEADER_PROT; +#endif +} + + +static void +flush_hp_batch (struct enc_sess_iquic *enc_sess) +{ + unsigned i; + unsigned char mask[HP_BATCH_SIZE][SAMPLE_SZ]; + + enc_sess->esi_hp.hp_gen_mask(enc_sess, &enc_sess->esi_hp, 1, + (unsigned char *) enc_sess->esi_hp_batch_samples, + (unsigned char *) mask, + enc_sess->esi_hp_batch_idx * SAMPLE_SZ); + for (i = 0; i < enc_sess->esi_hp_batch_idx; ++i) + { + apply_hp(enc_sess, &enc_sess->esi_hp, + enc_sess->esi_hp_batch_packets[i]->po_enc_data, + mask[i], + enc_sess->esi_hp_batch_packno_off[i], + enc_sess->esi_hp_batch_packno_len[i]); +#ifndef NDEBUG + enc_sess->esi_hp_batch_packets[i]->po_lflags |= POL_HEADER_PROT; +#endif + } + enc_sess->esi_hp_batch_idx = 0; +} + + +static void +apply_hp_batch (struct enc_sess_iquic *enc_sess, + struct header_prot *hp, struct lsquic_packet_out *packet_out, + unsigned packno_off, unsigned packno_len) +{ + memcpy(enc_sess->esi_hp_batch_samples[enc_sess->esi_hp_batch_idx], + packet_out->po_enc_data + packno_off + 4, SAMPLE_SZ); + enc_sess->esi_hp_batch_packno_off[enc_sess->esi_hp_batch_idx] = packno_off; + enc_sess->esi_hp_batch_packno_len[enc_sess->esi_hp_batch_idx] = packno_len; + enc_sess->esi_hp_batch_packets[enc_sess->esi_hp_batch_idx] = packet_out; + ++enc_sess->esi_hp_batch_idx; + if (enc_sess->esi_hp_batch_idx == HP_BATCH_SIZE) + flush_hp_batch(enc_sess); +} + + +static lsquic_packno_t +decode_packno (lsquic_packno_t max_packno, lsquic_packno_t packno, + unsigned shift) +{ + lsquic_packno_t candidates[3], epoch_delta; + int64_t diffs[3]; + unsigned min;; + + epoch_delta = 1ULL << shift; + candidates[1] = (max_packno & ~(epoch_delta - 1)) + packno; + candidates[0] = candidates[1] - epoch_delta; + candidates[2] = candidates[1] + epoch_delta; + + diffs[0] = llabs((int64_t) candidates[0] - (int64_t) max_packno); + diffs[1] = llabs((int64_t) candidates[1] - (int64_t) max_packno); + diffs[2] = llabs((int64_t) candidates[2] - (int64_t) max_packno); + + min = diffs[1] < diffs[0]; + if (diffs[2] < diffs[min]) + min = 2; + + return candidates[min]; +} + + +static lsquic_packno_t +strip_hp (struct enc_sess_iquic *enc_sess, + struct header_prot *hp, + const unsigned char *iv, unsigned char *dst, unsigned packno_off, + unsigned *packno_len) +{ + enum packnum_space pns; + lsquic_packno_t packno; + unsigned shift; + unsigned char mask[SAMPLE_SZ]; + char mask_str[5 * 2 + 1]; + + hp->hp_gen_mask(enc_sess, hp, 0, iv, mask, SAMPLE_SZ); + LSQ_DEBUG("strip header protection using mask %s", + HEXSTR(mask, 5, mask_str)); + if (enc_sess->esi_flags & ESI_RECV_QL_BITS) + dst[0] ^= (0x7 | ((dst[0] >> 7) << 3)) & mask[0]; + else + dst[0] ^= (0xF | (((dst[0] & 0x80) == 0) << 4)) & mask[0]; + packno = 0; + shift = 0; + *packno_len = 1 + (dst[0] & 3); + switch (*packno_len) + { + case 4: + dst[packno_off + 3] ^= mask[4]; + packno |= dst[packno_off + 3]; + shift += 8; + /* fall-through */ + case 3: + dst[packno_off + 2] ^= mask[3]; + packno |= (unsigned) dst[packno_off + 2] << shift; + shift += 8; + /* fall-through */ + case 2: + dst[packno_off + 1] ^= mask[2]; + packno |= (unsigned) dst[packno_off + 1] << shift; + shift += 8; + /* fall-through */ + default: + dst[packno_off + 0] ^= mask[1]; + packno |= (unsigned) dst[packno_off + 0] << shift; + shift += 8; + } + pns = lsquic_enclev2pns[hp->hp_enc_level]; + if (enc_sess->esi_flags & (ESI_MAX_PACKNO_INIT << pns)) + { + LSQ_DEBUG("pre-decode packno: %"PRIu64, packno); + return decode_packno(enc_sess->esi_max_packno[pns], packno, shift); + } + else + { + LSQ_DEBUG("first packet in %s, packno: %"PRIu64, lsquic_pns2str[pns], + packno); + return packno; + } +} + + +static void +set_tp_version_info (struct transport_params *params, + unsigned versions, enum lsquic_version ver) +{ + assert(params->tp_version_cnt == 0); + params->tp_version_info[params->tp_version_cnt++] = ver; + if (versions & (1 << LSQVER_I002)) + params->tp_version_info[params->tp_version_cnt++] = LSQVER_I002; + if (versions & (1 << LSQVER_I001)) + params->tp_version_info[params->tp_version_cnt++] = LSQVER_I001; + params->tp_set |= 1 << TPI_VERSION_INFORMATION; +} + + +static int +gen_trans_params (struct enc_sess_iquic *enc_sess, unsigned char *buf, + size_t bufsz) +{ + const struct lsquic_engine_settings *const settings = + &enc_sess->esi_enpub->enp_settings; + struct transport_params params; + const enum lsquic_version version = enc_sess->esi_conn->cn_version; + int len; + + memset(¶ms, 0, sizeof(params)); + if (version > LSQVER_ID27) + { + params.tp_initial_source_cid = *CN_SCID(enc_sess->esi_conn); + params.tp_set |= 1 << TPI_INITIAL_SOURCE_CID; + } + if (enc_sess->esi_flags & ESI_SERVER) + { + const struct lsquic_conn *const lconn = enc_sess->esi_conn; + + params.tp_set |= 1 << TPI_STATELESS_RESET_TOKEN; + lsquic_tg_generate_sreset(enc_sess->esi_enpub->enp_tokgen, + CN_SCID(lconn), params.tp_stateless_reset_token); + + if (enc_sess->esi_flags & ESI_ODCID) + { + params.tp_original_dest_cid = enc_sess->esi_odcid; + params.tp_set |= 1 << TPI_ORIGINAL_DEST_CID; + } + if (enc_sess->esi_flags & ESI_RSCID) + { + params.tp_retry_source_cid = enc_sess->esi_rscid; + params.tp_set |= 1 << TPI_RETRY_SOURCE_CID; + } + if (memcmp(settings->es_preferred_address, + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 24) != 0) + { + memcpy(¶ms.tp_preferred_address.ipv4_addr, + settings->es_preferred_address, 24); + + struct lsquic_conn *conn; + struct conn_cid_elem *cce; + unsigned seqno; + conn = enc_sess->esi_conn; + if ((1 << conn->cn_n_cces) - 1 != conn->cn_cces_mask) + { + seqno = 0; + for (cce = lconn->cn_cces; cce < END_OF_CCES(lconn); ++cce) + { + if (lconn->cn_cces_mask & (1 << (cce - lconn->cn_cces))) + { + if ((cce->cce_flags & CCE_SEQNO) && cce->cce_seqno > seqno) + seqno = cce->cce_seqno; + } + else + break; + } + if (cce != END_OF_CCES(lconn)) + { + cce->cce_seqno = seqno + 1; + cce->cce_flags = CCE_SEQNO; + + cce->cce_cid.len = enc_sess->esi_enpub->enp_settings.es_scid_len; + enc_sess->esi_enpub->enp_generate_scid( + enc_sess->esi_enpub->enp_gen_scid_ctx, enc_sess->esi_conn, + cce->cce_cid.buf, cce->cce_cid.len); + + /* Don't add to hash: migration must not start until *after* + * handshake is complete. + */ + conn->cn_cces_mask |= 1 << (cce - conn->cn_cces); + params.tp_preferred_address.cid = cce->cce_cid; + lsquic_tg_generate_sreset(enc_sess->esi_enpub->enp_tokgen, + ¶ms.tp_preferred_address.cid, + params.tp_preferred_address.srst); + params.tp_set |= 1 << TPI_PREFERRED_ADDRESS; + } + } + } + } +#if LSQUIC_TEST_QUANTUM_READINESS + { + const char *s = getenv("LSQUIC_TEST_QUANTUM_READINESS"); + if (s && atoi(s)) + params.tp_set |= 1 << TPI_QUANTUM_READINESS; + } +#endif + params.tp_init_max_data = settings->es_init_max_data; + params.tp_init_max_stream_data_bidi_local + = settings->es_init_max_stream_data_bidi_local; + params.tp_init_max_stream_data_bidi_remote + = settings->es_init_max_stream_data_bidi_remote; + params.tp_init_max_stream_data_uni + = settings->es_init_max_stream_data_uni; + params.tp_init_max_streams_uni + = enc_sess->esi_max_streams_uni; + params.tp_init_max_streams_bidi + = settings->es_init_max_streams_bidi; + params.tp_ack_delay_exponent + = TP_DEF_ACK_DELAY_EXP; + params.tp_max_idle_timeout = settings->es_idle_timeout * 1000; + params.tp_max_ack_delay = TP_DEF_MAX_ACK_DELAY; + params.tp_active_connection_id_limit = MAX_IETF_CONN_DCIDS; + params.tp_set |= (1 << TPI_INIT_MAX_DATA) + | (1 << TPI_INIT_MAX_STREAM_DATA_BIDI_LOCAL) + | (1 << TPI_INIT_MAX_STREAM_DATA_BIDI_REMOTE) + | (1 << TPI_INIT_MAX_STREAM_DATA_UNI) + | (1 << TPI_INIT_MAX_STREAMS_UNI) + | (1 << TPI_INIT_MAX_STREAMS_BIDI) + | (1 << TPI_ACK_DELAY_EXPONENT) + | (1 << TPI_MAX_IDLE_TIMEOUT) + | (1 << TPI_MAX_ACK_DELAY) + | (1 << TPI_ACTIVE_CONNECTION_ID_LIMIT) + ; + if (settings->es_max_udp_payload_size_rx) + { + params.tp_max_udp_payload_size = settings->es_max_udp_payload_size_rx; + params.tp_set |= 1 << TPI_MAX_UDP_PAYLOAD_SIZE; + } + if (!settings->es_allow_migration) + params.tp_set |= 1 << TPI_DISABLE_ACTIVE_MIGRATION; + if (settings->es_ql_bits) + { + params.tp_loss_bits = settings->es_ql_bits - 1; + params.tp_set |= 1 << TPI_LOSS_BITS; + } + if (settings->es_delayed_acks) + { + params.tp_numerics[TPI_MIN_ACK_DELAY] = TP_MIN_ACK_DELAY; + params.tp_set |= 1 << TPI_MIN_ACK_DELAY; + params.tp_numerics[TPI_MIN_ACK_DELAY_02] = TP_MIN_ACK_DELAY; + params.tp_set |= 1 << TPI_MIN_ACK_DELAY_02; + } + if (settings->es_timestamps) + { + params.tp_numerics[TPI_TIMESTAMPS] = TS_GENERATE_THEM; + params.tp_set |= 1 << TPI_TIMESTAMPS; + } + if (settings->es_datagrams) + { + if (params.tp_set & (1 << TPI_MAX_UDP_PAYLOAD_SIZE)) + params.tp_numerics[TPI_MAX_DATAGRAM_FRAME_SIZE] + = params.tp_max_udp_payload_size; + else + params.tp_numerics[TPI_MAX_DATAGRAM_FRAME_SIZE] + = TP_DEF_MAX_UDP_PAYLOAD_SIZE; + params.tp_set |= 1 << TPI_MAX_DATAGRAM_FRAME_SIZE; + } + + if (enc_sess->esi_ver_neg && enc_sess->esi_ver_neg->vn_supp + != (1u << enc_sess->esi_ver_neg->vn_ver)) + set_tp_version_info(¶ms, enc_sess->esi_ver_neg->vn_supp, + enc_sess->esi_ver_neg->vn_ver); + else if (enc_sess->esi_conn->cn_flags & LSCONN_VER_UPDATED) + set_tp_version_info(¶ms, settings->es_versions, + enc_sess->esi_conn->cn_version); + + len = (version == LSQVER_ID27 ? lsquic_tp_encode_27 : lsquic_tp_encode)( + ¶ms, enc_sess->esi_flags & ESI_SERVER, buf, bufsz); + if (len >= 0) + { + char str[MAX_TP_STR_SZ]; + LSQ_DEBUG("generated transport parameters buffer of %d bytes", len); + LSQ_DEBUG("%s", ((version == LSQVER_ID27 ? lsquic_tp_to_str_27 + : lsquic_tp_to_str)(¶ms, str, sizeof(str)), str)); + } + else + LSQ_WARN("cannot generate transport parameters: %d", errno); + return len; +} + + +/* + * Format: + * uint32_t lsquic_ver_tag_t + * uint32_t encoder version + * uint32_t ticket_size + * uint8_t ticket_buf[ ticket_size ] + * uint32_t trapa_size + * uint8_t trapa_buf[ trapa_size ] + */ + +#define SESS_RESUME_VERSION 1 + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define READ_NUM(var_, ptr_) do { \ + memcpy(&var_, ptr_, sizeof(var_)); \ + var_ = bswap_32(var_); \ + ptr_ += sizeof(var_); \ +} while (0) +#else +#define READ_NUM(var_, ptr_) do { \ + memcpy(&var_, ptr_, sizeof(var_)); \ + ptr_ += sizeof(var_); \ +} while (0) +#endif + +static SSL_SESSION * +maybe_create_SSL_SESSION (struct enc_sess_iquic *enc_sess, + const SSL_CTX *ssl_ctx, const unsigned char *sess_resume, + size_t sess_resume_sz) +{ + SSL_SESSION *ssl_session; + lsquic_ver_tag_t ver_tag; + enum lsquic_version quic_ver; + uint32_t rtt_ver, ticket_sz, trapa_sz; + const unsigned char *ticket_buf, *trapa_buf, *p; + const unsigned char *const end = sess_resume + sess_resume_sz; + + if (sess_resume_sz < sizeof(ver_tag) + sizeof(rtt_ver) + sizeof(ticket_sz)) + { + LSQ_DEBUG("rtt buf too short"); + return NULL; + } + + p = sess_resume; + memcpy(&ver_tag, p, sizeof(ver_tag)); + p += sizeof(ver_tag); + quic_ver = lsquic_tag2ver(ver_tag); + if (quic_ver != enc_sess->esi_ver_neg->vn_ver) + { + LSQ_DEBUG("negotiated version %s does not match that in the session " + "resumption nfo buffer", + lsquic_ver2str[enc_sess->esi_ver_neg->vn_ver]); + return NULL; + } + + READ_NUM(rtt_ver, p); + if (rtt_ver != SESS_RESUME_VERSION) + { + LSQ_DEBUG("cannot use session resumption buffer: encoded using " + "%"PRIu32", while current version is %u", + rtt_ver, SESS_RESUME_VERSION); + return NULL; + } + + READ_NUM(ticket_sz, p); + if (p + ticket_sz > end) + { + LSQ_WARN("truncated ticket buffer"); + return NULL; + } + + ticket_buf = p; + p += ticket_sz; + + if (p + sizeof(trapa_sz) > end) + { + LSQ_WARN("too short to read trapa size"); + return NULL; + } + + READ_NUM(trapa_sz, p); + if (p + trapa_sz > end) + { + LSQ_WARN("truncated trapa buffer"); + return NULL; + } + trapa_buf = p; + p += trapa_sz; + assert(p == end); + + ssl_session = SSL_SESSION_from_bytes(ticket_buf, ticket_sz, ssl_ctx); + if (!ssl_session) + { + LSQ_WARN("SSL_SESSION could not be parsed out"); + return NULL; + } + + if (SSL_SESSION_early_data_capable(ssl_session)) + { + if (0 > (quic_ver == LSQVER_ID27 ? lsquic_tp_decode_27 + : lsquic_tp_decode)(trapa_buf, trapa_sz, 1, + &enc_sess->esi_peer_tp)) + { + SSL_SESSION_free(ssl_session); + LSQ_WARN("cannot parse stored transport parameters"); + return NULL; + } + LSQ_DEBUG("early data capable, will try 0-RTT"); + enc_sess->esi_flags |= ESI_HAVE_0RTT_TP; + } + else + LSQ_DEBUG("early data not capable -- not trying 0-RTT"); + + LSQ_INFO("instantiated SSL_SESSION from serialized buffer"); + return ssl_session; +} + + +static void +init_frals (struct enc_sess_iquic *enc_sess) +{ + struct frab_list *fral; + + for (fral = enc_sess->esi_frals; fral < enc_sess->esi_frals + + sizeof(enc_sess->esi_frals) / sizeof(enc_sess->esi_frals[0]); + ++fral) + lsquic_frab_list_init(fral, 0x100, NULL, NULL, NULL); +} + + +static enc_session_t * +iquic_esfi_create_client (const char *hostname, + struct lsquic_engine_public *enpub, struct lsquic_conn *lconn, + const lsquic_cid_t *dcid, const struct ver_neg *ver_neg, + void *crypto_streams[4], const struct crypto_stream_if *cryst_if, + const unsigned char *sess_resume, size_t sess_resume_sz, + struct lsquic_alarmset *alset, unsigned max_streams_uni, + void* peer_ctx) +{ + struct enc_sess_iquic *enc_sess; + SSL_CTX *ssl_ctx = NULL; + int set_app_ctx = 0; + SSL_SESSION *ssl_session; + const struct alpn_map *am; + int transpa_len; + char errbuf[ERR_ERROR_STRING_BUF_LEN]; + unsigned char trans_params[0x80 +#if LSQUIC_TEST_QUANTUM_READINESS + + 4 + lsquic_tp_get_quantum_sz() +#endif + ]; + + fiu_return_on("enc_sess_ietf/create_client", NULL); + + enc_sess = calloc(1, sizeof(*enc_sess)); + if (!enc_sess) + return NULL; + + enc_sess->esi_enpub = enpub; + enc_sess->esi_streams = crypto_streams; + enc_sess->esi_cryst_if = cryst_if; + enc_sess->esi_conn = lconn; + enc_sess->esi_ver_neg = ver_neg; + + enc_sess->esi_odcid = *dcid; + enc_sess->esi_flags |= ESI_ODCID; + enc_sess->esi_grease = 0xFF; + + LSQ_DEBUGC("created client, DCID: %"CID_FMT, CID_BITS(dcid)); + { + const char *log; + log = getenv("LSQUIC_LOG_SECRETS"); + if (log) + { + if (atoi(log)) + enc_sess->esi_flags |= ESI_LOG_SECRETS; + LSQ_DEBUG("will %slog secrets", atoi(log) ? "" : "not "); + } + } + + init_frals(enc_sess); + + if (0 != setup_handshake_keys(enc_sess, dcid)) + { + free(enc_sess); + return NULL; + } + + enc_sess->esi_max_streams_uni = max_streams_uni; + + if (enc_sess->esi_enpub->enp_alpn) + enc_sess->esi_alpn = enc_sess->esi_enpub->enp_alpn; + else if (enc_sess->esi_enpub->enp_flags & ENPUB_HTTP) + { + for (am = s_h3_alpns; am < s_h3_alpns + sizeof(s_h3_alpns) + / sizeof(s_h3_alpns[0]); ++am) + if (am->version == enc_sess->esi_ver_neg->vn_ver) + goto alpn_selected; + LSQ_ERROR("version %s has no matching ALPN", + lsquic_ver2str[enc_sess->esi_ver_neg->vn_ver]); + goto err; + alpn_selected: + enc_sess->esi_alpn = am->alpn; + LSQ_DEBUG("for QUIC version %s, ALPN is %s", + lsquic_ver2str[am->version], (char *) am->alpn + 1); + } + + if (enc_sess->esi_enpub->enp_get_ssl_ctx) + { + struct network_path *const path = + enc_sess->esi_conn->cn_if->ci_get_path(enc_sess->esi_conn, NULL); + ssl_ctx = enc_sess->esi_enpub->enp_get_ssl_ctx(peer_ctx, + NP_LOCAL_SA(path)); + if (ssl_ctx) + set_app_ctx = 1; + else + goto create_new_ssl_ctx; + } + else + { + create_new_ssl_ctx: + LSQ_DEBUG("Create new SSL_CTX"); + ssl_ctx = SSL_CTX_new(TLS_method()); + if (!ssl_ctx) + { + LSQ_ERROR("cannot create SSL context: %s", + ERR_error_string(ERR_get_error(), errbuf)); + goto err; + } + SSL_CTX_set_min_proto_version(ssl_ctx, TLS1_3_VERSION); + SSL_CTX_set_max_proto_version(ssl_ctx, TLS1_3_VERSION); + SSL_CTX_set_default_verify_paths(ssl_ctx); + SSL_CTX_set_session_cache_mode(ssl_ctx, SSL_SESS_CACHE_CLIENT); + if (enc_sess->esi_enpub->enp_stream_if->on_sess_resume_info) + SSL_CTX_sess_set_new_cb(ssl_ctx, iquic_new_session_cb); + if (enc_sess->esi_enpub->enp_verify_cert + || LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT) + || LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_QLOG)) + SSL_CTX_set_custom_verify(ssl_ctx, SSL_VERIFY_PEER, + verify_server_cert_callback); + SSL_CTX_set_early_data_enabled(ssl_ctx, 1); + } + + enc_sess->esi_ssl = SSL_new(ssl_ctx); + if (!enc_sess->esi_ssl) + { + LSQ_ERROR("cannot create SSL object: %s", + ERR_error_string(ERR_get_error(), errbuf)); + goto err; + } +#if BORINGSSL_API_VERSION >= 13 + SSL_set_quic_use_legacy_codepoint(enc_sess->esi_ssl, + enc_sess->esi_ver_neg->vn_ver < LSQVER_I001); +#endif + + transpa_len = gen_trans_params(enc_sess, trans_params, + sizeof(trans_params)); + if (transpa_len < 0) + { + goto err; + } + if (1 != SSL_set_quic_transport_params(enc_sess->esi_ssl, trans_params, + transpa_len)) + { + LSQ_ERROR("cannot set QUIC transport params: %s", + ERR_error_string(ERR_get_error(), errbuf)); + goto err; + } + + if (!(SSL_set_quic_method(enc_sess->esi_ssl, &cry_quic_method))) + { + LSQ_INFO("could not set stream method"); + goto err; + } + + if (enc_sess->esi_alpn && + 0 != SSL_set_alpn_protos(enc_sess->esi_ssl, enc_sess->esi_alpn, + enc_sess->esi_alpn[0] + 1)) + { + LSQ_ERROR("cannot set ALPN: %s", + ERR_error_string(ERR_get_error(), errbuf)); + goto err; + } + if (1 != SSL_set_tlsext_host_name(enc_sess->esi_ssl, hostname)) + { + LSQ_ERROR("cannot set hostname: %s", + ERR_error_string(ERR_get_error(), errbuf)); + goto err; + } + + if (sess_resume && sess_resume_sz) + { + ssl_session = maybe_create_SSL_SESSION(enc_sess, ssl_ctx, + sess_resume, sess_resume_sz); + if (ssl_session) + { + (void) /* This only ever returns 1: */ + SSL_set_session(enc_sess->esi_ssl, ssl_session); + SSL_SESSION_free(ssl_session); + ssl_session = NULL; + enc_sess->esi_flags |= ESI_USE_SSL_TICKET; + } + } + + SSL_set_ex_data(enc_sess->esi_ssl, s_idx, enc_sess); + SSL_set_connect_state(enc_sess->esi_ssl); + + if (SSL_CTX_sess_get_new_cb(ssl_ctx)) + enc_sess->esi_flags |= ESI_WANT_TICKET; + enc_sess->esi_alset = alset; + lsquic_alarmset_init_alarm(enc_sess->esi_alset, AL_SESS_TICKET, + no_sess_ticket, enc_sess); + + if( !set_app_ctx ) + SSL_CTX_free(ssl_ctx); + return enc_sess; + + err: + if (enc_sess) + iquic_esfi_destroy(enc_sess); + if (!set_app_ctx && ssl_ctx) + SSL_CTX_free(ssl_ctx); + return NULL; +} + + +static void +iquic_esfi_set_streams (enc_session_t *enc_session_p, + void *(crypto_streams)[4], const struct crypto_stream_if *cryst_if) +{ + struct enc_sess_iquic *const enc_sess = enc_session_p; + enc_sess->esi_streams = crypto_streams; + enc_sess->esi_cryst_if = cryst_if; +} + + +static enc_session_t * +iquic_esfi_create_server (struct lsquic_engine_public *enpub, + struct lsquic_conn *lconn, const lsquic_cid_t *first_dcid, + void *(crypto_streams)[4], + const struct crypto_stream_if *cryst_if, + const struct lsquic_cid *odcid, + const struct lsquic_cid *iscid, + const struct lsquic_cid *rscid) +{ + struct enc_sess_iquic *enc_sess; + + enc_sess = calloc(1, sizeof(*enc_sess)); + if (!enc_sess) + return NULL; + +#ifndef NDEBUG + enc_sess->esi_sni_bypass = getenv("LSQUIC_SNI_BYPASS"); +#endif + + enc_sess->esi_flags = ESI_SERVER; + enc_sess->esi_streams = crypto_streams; + enc_sess->esi_cryst_if = cryst_if; + enc_sess->esi_enpub = enpub; + enc_sess->esi_conn = lconn; + enc_sess->esi_grease = 0xFF; + + if (odcid) + { + enc_sess->esi_odcid = *odcid; + enc_sess->esi_flags |= ESI_ODCID; + } + if (rscid) + { + enc_sess->esi_rscid = *rscid; + enc_sess->esi_flags |= ESI_RSCID; + } + enc_sess->esi_iscid = *iscid; + enc_sess->esi_flags |= ESI_ISCID; + + init_frals(enc_sess); + + { + const char *log; + log = getenv("LSQUIC_LOG_SECRETS"); + if (log) + { + if (atoi(log)) + enc_sess->esi_flags |= ESI_LOG_SECRETS; + LSQ_DEBUG("will %slog secrets", atoi(log) ? "" : "not "); + } + } + + if (0 != setup_handshake_keys(enc_sess, first_dcid)) + { + free(enc_sess); + return NULL; + } + + enc_sess->esi_max_streams_uni + = enpub->enp_settings.es_init_max_streams_uni; + + return enc_sess; +} + + +static const char *const rw2str[] = { "read", "write", }; + +typedef char evp_aead_enum_has_expected_values[ + (int) evp_aead_open == 0 && (int) evp_aead_seal == 1 ? 1 : -1]; +#define rw2dir(rw_) ((enum evp_aead_direction_t) (rw_)) + + +static void +log_crypto_ctx (const struct enc_sess_iquic *enc_sess, + const struct crypto_ctx *ctx, const char *name, int rw) +{ + char hexbuf[EVP_MAX_MD_SIZE * 2 + 1]; + LSQ_DEBUG("%s %s key: %s", name, rw2str[rw], + HEXSTR(ctx->yk_key_buf, ctx->yk_key_sz, hexbuf)); + LSQ_DEBUG("%s %s iv: %s", name, rw2str[rw], + HEXSTR(ctx->yk_iv_buf, ctx->yk_iv_sz, hexbuf)); +} + + +static void +log_crypto_pair (const struct enc_sess_iquic *enc_sess, + const struct crypto_ctx_pair *pair, const char *name) +{ + log_crypto_ctx(enc_sess, &pair->ykp_ctx[0], name, 0); + log_crypto_ctx(enc_sess, &pair->ykp_ctx[1], name, 1); +} + + +static const unsigned char *const lsquic_ver2salt[N_LSQVER] = { + [LSQVER_043] = HSK_SALT_PRE29, + [LSQVER_046] = HSK_SALT_PRE29, + [LSQVER_050] = HSK_SALT_PRE29, + [LSQVER_ID27] = HSK_SALT_PRE29, + [LSQVER_ID29] = HSK_SALT_PRE33, + [LSQVER_I001] = HSK_SALT, + [LSQVER_I002] = HSK_SALT_V2, + [LSQVER_RESVED] = HSK_SALT, +}; + + +/* [draft-ietf-quic-tls-12] Section 5.3.2 */ +static int +setup_handshake_keys (struct enc_sess_iquic *enc_sess, const lsquic_cid_t *cid) +{ + const EVP_MD *const md = EVP_sha256(); + const EVP_AEAD *const aead = EVP_aead_aes_128_gcm(); + /* [draft-ietf-quic-tls-12] Section 5.6.1: AEAD_AES_128_GCM implies + * 128-bit AES-CTR. + */ + const EVP_CIPHER *const cipher = EVP_aes_128_ecb(); + struct crypto_ctx_pair *pair; + struct header_prot *hp; + size_t hsk_secret_sz, key_len; + unsigned cliser, i; + const unsigned char *salt; + unsigned char hsk_secret[EVP_MAX_MD_SIZE]; + unsigned char secret[2][SHA256_DIGEST_LENGTH]; /* client, server */ + unsigned char key[2][EVP_MAX_KEY_LENGTH]; + char hexbuf[EVP_MAX_MD_SIZE * 2 + 1]; + struct label_set *labels; + + LSQ_INFOC("setup_handshake_keys for DCID %"CID_FMT, CID_BITS(cid)); + + if (!enc_sess->esi_hsk_crypto) + { + enc_sess->esi_hsk_crypto = calloc(N_HSK_PAIRS, + sizeof(enc_sess->esi_hsk_crypto[0])); + if (!enc_sess->esi_hsk_crypto) + return -1; + } + pair = &enc_sess->esi_hsk_crypto[ENC_LEV_INIT].pair; + pair->ykp_thresh = IQUIC_INVALID_PACKNO; + hp = &enc_sess->esi_hsk_crypto[ENC_LEV_INIT].hp; + + salt = lsquic_ver2salt[enc_sess->esi_conn->cn_version]; + HKDF_extract(hsk_secret, &hsk_secret_sz, md, cid->idbuf, cid->len, + salt, HSK_SALT_SZ); + if (enc_sess->esi_flags & ESI_LOG_SECRETS) + { + LSQ_DEBUG("handshake salt: %s", HEXSTR(salt, HSK_SALT_SZ, hexbuf)); + LSQ_DEBUG("handshake secret: %s", HEXSTR(hsk_secret, hsk_secret_sz, + hexbuf)); + } + + lsquic_qhkdf_expand(md, hsk_secret, hsk_secret_sz, CLIENT_LABEL, + CLIENT_LABEL_SZ, secret[0], sizeof(secret[0])); + lsquic_qhkdf_expand(md, hsk_secret, hsk_secret_sz, SERVER_LABEL, + SERVER_LABEL_SZ, secret[1], sizeof(secret[1])); + if (enc_sess->esi_flags & ESI_LOG_SECRETS) + { + LSQ_DEBUG("client handshake secret: %s", + HEXSTR(secret[0], sizeof(secret[0]), hexbuf)); + LSQ_DEBUG("server handshake secret: %s", + HEXSTR(secret[1], sizeof(secret[1]), hexbuf)); + } + + labels = &hkdf_labels[enc_sess->esi_conn->cn_version == LSQVER_I002]; + cliser = !!(enc_sess->esi_flags & ESI_SERVER); + if (0 != init_crypto_ctx(&pair->ykp_ctx[!cliser], md, aead, secret[0], + sizeof(secret[0]), rw2dir(!cliser), labels)) + goto err; + if (0 != init_crypto_ctx(&pair->ykp_ctx[cliser], md, aead, secret[1], + sizeof(secret[1]), rw2dir(cliser), labels)) + goto err; + + hp->hp_gen_mask = gen_hp_mask_aes; + hp->hp_enc_level = ENC_LEV_INIT; + key_len = EVP_AEAD_key_length(aead); + lsquic_qhkdf_expand(md, secret[!cliser], sizeof(secret[0]), labels->hp, + labels->hp_len, key[0], key_len); + lsquic_qhkdf_expand(md, secret[cliser], sizeof(secret[0]), labels->hp, + labels->hp_len, key[1], key_len); + if (enc_sess->esi_flags & ESI_LOG_SECRETS) + { + log_crypto_pair(enc_sess, pair, "handshake"); + LSQ_DEBUG("read handshake hp: %s", HEXSTR(key[0], key_len, hexbuf)); + LSQ_DEBUG("write handshake hp: %s", HEXSTR(key[1], key_len, hexbuf)); + } + for (i = 0; i < 2; ++i) + { + EVP_CIPHER_CTX_init(&hp->hp_u.cipher_ctx[i]); + if (EVP_EncryptInit_ex(&hp->hp_u.cipher_ctx[i], cipher, NULL, key[i], 0)) + hp->hp_flags |= 1 << i; + else + { + LSQ_ERROR("%s: cannot initialize cipher %u", __func__, i); + goto err; + } + } + + return 0; + + err: + cleanup_crypto_ctx(&pair->ykp_ctx[0]); + cleanup_crypto_ctx(&pair->ykp_ctx[1]); + return -1; +} + + +static void +cleanup_hp (struct header_prot *hp) +{ + unsigned rw; + + if (hp->hp_gen_mask == gen_hp_mask_aes) + for (rw = 0; rw < 2; ++rw) + if (hp->hp_flags & (1 << rw)) + (void) EVP_CIPHER_CTX_cleanup(&hp->hp_u.cipher_ctx[rw]); +} + + +static void +cleanup_hsk_crypto (struct hsk_crypto *c) +{ + cleanup_crypto_ctx(&c->pair.ykp_ctx[0]); + cleanup_crypto_ctx(&c->pair.ykp_ctx[1]); + cleanup_hp(&c->hp); +} + + +static void +free_vn_save (struct enc_sess_iquic *enc_sess) +{ + if (enc_sess->esi_vn_save) + { + cleanup_hsk_crypto(enc_sess->esi_vn_save); + free(enc_sess->esi_vn_save); + enc_sess->esi_vn_save = NULL; + } +} + + +static void +free_handshake_keys (struct enc_sess_iquic *enc_sess) +{ + struct hsk_crypto *c; + + if (enc_sess->esi_hsk_crypto) + { + for (c = enc_sess->esi_hsk_crypto; c < + enc_sess->esi_hsk_crypto + N_HSK_PAIRS; ++c) + { + cleanup_hsk_crypto(c); + } + free(enc_sess->esi_hsk_crypto); + enc_sess->esi_hsk_crypto = NULL; + } + free_vn_save(enc_sess); +} + + +static enum ssl_verify_result_t +verify_server_cert_callback (SSL *ssl, uint8_t *out_alert) +{ + struct enc_sess_iquic *enc_sess; + struct stack_st_X509 *chain; + int s; + + enc_sess = SSL_get_ex_data(ssl, s_idx); + chain = SSL_get_peer_cert_chain(ssl); + if (!chain) + { + LSQ_ERROR("cannot get peer chain"); + return ssl_verify_invalid; + } + + EV_LOG_CERT_CHAIN(LSQUIC_LOG_CONN_ID, chain); + if (enc_sess->esi_enpub->enp_verify_cert) + { + s = enc_sess->esi_enpub->enp_verify_cert( + enc_sess->esi_enpub->enp_verify_ctx, chain); + return s == 0 ? ssl_verify_ok : ssl_verify_invalid; + } + else + return ssl_verify_ok; +} + + +static int +iquic_lookup_cert (SSL *ssl, void *arg) +{ + struct enc_sess_iquic *const enc_sess = arg; + const struct network_path *path; + const char *server_name; + SSL_CTX *ssl_ctx; + + server_name = SSL_get_servername(ssl, TLSEXT_NAMETYPE_host_name); +#ifndef NDEBUG + if (!server_name) + server_name = enc_sess->esi_sni_bypass; +#endif + if (!server_name) + { + if (enc_sess->esi_enpub->enp_flags & ENPUB_HTTP) + { + LSQ_DEBUG("SNI is not set, but is required in HTTP/3: " + "fail certificate lookup"); + return 0; + } + else + LSQ_DEBUG("cert lookup: server name is not set"); + } + + path = enc_sess->esi_conn->cn_if->ci_get_path(enc_sess->esi_conn, NULL); + ssl_ctx = enc_sess->esi_enpub->enp_lookup_cert( + enc_sess->esi_enpub->enp_cert_lu_ctx, NP_LOCAL_SA(path), + server_name); + + + if (ssl_ctx) + { + if (SSL_set_SSL_CTX(enc_sess->esi_ssl, ssl_ctx)) + { + LSQ_DEBUG("looked up cert for %s", server_name + ? server_name : ""); + SSL_set_verify(enc_sess->esi_ssl, + SSL_CTX_get_verify_mode(ssl_ctx), NULL); + SSL_set_verify_depth(enc_sess->esi_ssl, + SSL_CTX_get_verify_depth(ssl_ctx)); + SSL_clear_options(enc_sess->esi_ssl, + SSL_get_options(enc_sess->esi_ssl)); + SSL_set_options(enc_sess->esi_ssl, + SSL_CTX_get_options(ssl_ctx) & ~SSL_OP_NO_TLSv1_3); + return 1; + } + else + { + LSQ_WARN("cannot set SSL_CTX"); + return 0; + } + } + else + { + LSQ_DEBUG("could not look up cert for %s", server_name + ? server_name : ""); + return 0; + } +} + + +static void +iquic_esf_set_conn (enc_session_t *enc_session_p, struct lsquic_conn *lconn) +{ + struct enc_sess_iquic *const enc_sess = enc_session_p; + enc_sess->esi_conn = lconn; + LSQ_DEBUG("updated conn reference"); +} + + +int +iquic_esfi_init_server_tp (struct enc_sess_iquic *const enc_sess) +{ + unsigned char trans_params[sizeof(struct transport_params) +#if LSQUIC_TEST_QUANTUM_READINESS + + 4 + lsquic_tp_get_quantum_sz() +#endif + ]; + int transpa_len; + char errbuf[ERR_ERROR_STRING_BUF_LEN]; + transpa_len = gen_trans_params(enc_sess, trans_params, + sizeof(trans_params)); + if (transpa_len < 0) + return -1; + + if (1 != SSL_set_quic_transport_params(enc_sess->esi_ssl, trans_params, + transpa_len)) + { + LSQ_ERROR("cannot set QUIC transport params: %s", + ERR_error_string(ERR_get_error(), errbuf)); + return -1; + } + + return 0; +} + + +static int +iquic_esfi_init_server (enc_session_t *enc_session_p) +{ + struct enc_sess_iquic *const enc_sess = enc_session_p; + struct network_path *path; + const struct alpn_map *am; + unsigned quic_ctx_idx; + SSL_CTX *ssl_ctx = NULL; + + if (enc_sess->esi_enpub->enp_alpn) + enc_sess->esi_alpn = enc_sess->esi_enpub->enp_alpn; + else if (enc_sess->esi_enpub->enp_flags & ENPUB_HTTP) + { + for (am = s_h3_alpns; am < s_h3_alpns + sizeof(s_h3_alpns) + / sizeof(s_h3_alpns[0]); ++am) + if (am->version == enc_sess->esi_conn->cn_version) + goto ok; + LSQ_ERROR("version %s has no matching ALPN", + lsquic_ver2str[enc_sess->esi_conn->cn_version]); + return -1; + ok: enc_sess->esi_alpn = am->alpn; + LSQ_DEBUG("for QUIC version %s, ALPN is %s", + lsquic_ver2str[am->version], (char *) am->alpn + 1); + } + + path = enc_sess->esi_conn->cn_if->ci_get_path(enc_sess->esi_conn, NULL); + ssl_ctx = enc_sess->esi_enpub->enp_get_ssl_ctx(path->np_peer_ctx, + NP_LOCAL_SA(path)); + if (!ssl_ctx) + { + LSQ_ERROR("fetching SSL context associated with peer context failed"); + return -1; + } + + enc_sess->esi_ssl = SSL_new(ssl_ctx); + if (!enc_sess->esi_ssl) + { + char errbuf[ERR_ERROR_STRING_BUF_LEN]; + LSQ_ERROR("cannot create SSL object: %s", + ERR_error_string(ERR_get_error(), errbuf)); + return -1; + } +#if BORINGSSL_API_VERSION >= 13 + SSL_set_quic_use_legacy_codepoint(enc_sess->esi_ssl, + enc_sess->esi_conn->cn_version < LSQVER_I001); +#endif + if (!(SSL_set_quic_method(enc_sess->esi_ssl, &cry_quic_method))) + { + LSQ_INFO("could not set stream method"); + return -1; + } + quic_ctx_idx = enc_sess->esi_conn->cn_version == LSQVER_ID27 ? 0 : 1; + if (!SSL_set_quic_early_data_context(enc_sess->esi_ssl, + enc_sess->esi_enpub->enp_quic_ctx_buf[quic_ctx_idx], + enc_sess->esi_enpub->enp_quic_ctx_sz[quic_ctx_idx])) + { + LSQ_INFO("could not set early data context"); + return -1; + } + +// if (iquic_esfi_init_server_tp(enc_sess) == -1) +// return -1; + + SSL_clear_options(enc_sess->esi_ssl, SSL_OP_NO_TLSv1_3); + if (enc_sess->esi_enpub->enp_lookup_cert) + SSL_set_cert_cb(enc_sess->esi_ssl, iquic_lookup_cert, enc_sess); + SSL_set_ex_data(enc_sess->esi_ssl, s_idx, enc_sess); + SSL_set_accept_state(enc_sess->esi_ssl); + LSQ_DEBUG("initialized server enc session"); + return 0; +} + + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define WRITE_NUM(var_, val_, ptr_) do { \ + var_ = (val_); \ + var_ = bswap_32(var_); \ + memcpy((ptr_), &var_, sizeof(var_)); \ + ptr_ += sizeof(var_); \ +} while (0) +#else +#define WRITE_NUM(var_, val_, ptr_) do { \ + var_ = (val_); \ + memcpy((ptr_), &var_, sizeof(var_)); \ + ptr_ += sizeof(var_); \ +} while (0) +#endif + + +/* Return 0 on success, in which case *buf is newly allocated memory and should + * be freed by the caller. + */ +static int +iquic_ssl_sess_to_resume_info (struct enc_sess_iquic *enc_sess, SSL *ssl, + SSL_SESSION *session, unsigned char **bufp, size_t *buf_szp) +{ + uint32_t num; + unsigned char *p, *buf; + uint8_t *ticket_buf; + size_t ticket_sz; + lsquic_ver_tag_t tag; + const uint8_t *trapa_buf; + size_t trapa_sz, buf_sz; + + SSL_get_peer_quic_transport_params(ssl, &trapa_buf, &trapa_sz); + if (!(trapa_buf + trapa_sz)) + { + LSQ_WARN("no transport parameters: cannot generate session " + "resumption info"); + return -1; + } + if (trapa_sz > UINT32_MAX) + { + LSQ_WARN("trapa size too large: %zu", trapa_sz); + return -1; + } + + if (!SSL_SESSION_to_bytes(session, &ticket_buf, &ticket_sz)) + { + LSQ_INFO("could not serialize new session"); + return -1; + } + if (ticket_sz > UINT32_MAX) + { + LSQ_WARN("ticket size too large: %zu", ticket_sz); + OPENSSL_free(ticket_buf); + return -1; + } + + buf_sz = sizeof(tag) + sizeof(uint32_t) + sizeof(uint32_t) + + ticket_sz + sizeof(uint32_t) + trapa_sz; + buf = malloc(buf_sz); + if (!buf) + { + OPENSSL_free(ticket_buf); + LSQ_INFO("%s: malloc failed", __func__); + return -1; + } + + p = buf; + tag = lsquic_ver2tag(enc_sess->esi_conn->cn_version); + memcpy(p, &tag, sizeof(tag)); + p += sizeof(tag); + + WRITE_NUM(num, SESS_RESUME_VERSION, p); + WRITE_NUM(num, ticket_sz, p); + memcpy(p, ticket_buf, ticket_sz); + p += ticket_sz; + WRITE_NUM(num, trapa_sz, p); + memcpy(p, trapa_buf, trapa_sz); + p += trapa_sz; + + assert(buf + buf_sz == p); + OPENSSL_free(ticket_buf); + + LSQ_DEBUG("generated %zu bytes of session resumption buffer", buf_sz); + + *bufp = buf; + *buf_szp = buf_sz; + return 0; +} + + +static int +iquic_new_session_cb (SSL *ssl, SSL_SESSION *session) +{ + struct enc_sess_iquic *enc_sess; + unsigned char *buf; + size_t buf_sz; + + enc_sess = SSL_get_ex_data(ssl, s_idx); + assert(enc_sess->esi_enpub->enp_stream_if->on_sess_resume_info); + + if (0 == iquic_ssl_sess_to_resume_info(enc_sess, ssl, session, &buf, + &buf_sz)) + enc_sess->esi_enpub->enp_stream_if->on_sess_resume_info( + enc_sess->esi_conn, buf, buf_sz); + free(buf); + enc_sess->esi_flags &= ~ESI_WANT_TICKET; + lsquic_alarmset_unset(enc_sess->esi_alset, AL_SESS_TICKET); + return 0; +} + + +struct crypto_params +{ + const EVP_AEAD *aead; + const EVP_MD *md; + const EVP_CIPHER *hp; + gen_hp_mask_f gen_hp_mask; +}; + + +static int +get_crypto_params (const struct enc_sess_iquic *enc_sess, + const SSL_CIPHER *cipher, struct crypto_params *params) +{ + unsigned key_sz, iv_sz; + uint32_t id; + + id = SSL_CIPHER_get_id(cipher); + + LSQ_DEBUG("Negotiated cipher ID is 0x%"PRIX32, id); + + /* RFC 8446, Appendix B.4 */ + switch (id) + { + case 0x03000000 | 0x1301: /* TLS_AES_128_GCM_SHA256 */ + params->md = EVP_sha256(); + params->aead = EVP_aead_aes_128_gcm(); + params->hp = EVP_aes_128_ecb(); + params->gen_hp_mask = gen_hp_mask_aes; + break; + case 0x03000000 | 0x1302: /* TLS_AES_256_GCM_SHA384 */ + params->md = EVP_sha384(); + params->aead = EVP_aead_aes_256_gcm(); + params->hp = EVP_aes_256_ecb(); + params->gen_hp_mask = gen_hp_mask_aes; + break; + case 0x03000000 | 0x1303: /* TLS_CHACHA20_POLY1305_SHA256 */ + params->md = EVP_sha256(); + params->aead = EVP_aead_chacha20_poly1305(); + params->hp = NULL; + params->gen_hp_mask = gen_hp_mask_chacha20; + break; + default: + /* TLS_AES_128_CCM_SHA256 and TLS_AES_128_CCM_8_SHA256 are not + * supported by BoringSSL (grep for \b0x130[45]\b). + */ + LSQ_DEBUG("unsupported cipher 0x%"PRIX32, id); + return -1; + } + + key_sz = EVP_AEAD_key_length(params->aead); + if (key_sz > EVP_MAX_KEY_LENGTH) + { + LSQ_DEBUG("key size %u is too large", key_sz); + return -1; + } + + iv_sz = EVP_AEAD_nonce_length(params->aead); + if (iv_sz < 8) + iv_sz = 8; /* [draft-ietf-quic-tls-11], Section 5.3 */ + if (iv_sz > EVP_MAX_IV_LENGTH) + { + LSQ_DEBUG("iv size %u is too large", iv_sz); + return -1; + } + + return 0; +} + + +/* [draft-ietf-quic-transport-31] Section 7.4.1: + " If 0-RTT data is accepted by the server, the server MUST NOT reduce + " any limits or alter any values that might be violated by the client + " with its 0-RTT data. In particular, a server that accepts 0-RTT data + " MUST NOT set values for the following parameters (Section 18.2) that + " are smaller than the remembered value of the parameters. + " + " * active_connection_id_limit + " + " * initial_max_data + " + " * initial_max_stream_data_bidi_local + " + " * initial_max_stream_data_bidi_remote + " + " * initial_max_stream_data_uni + " + " * initial_max_streams_bidi + " + " * initial_max_streams_uni + */ +#define REDUCTION_PROHIBITED_TPS (0 \ + | (1 << TPI_ACTIVE_CONNECTION_ID_LIMIT) \ + | (1 << TPI_INIT_MAX_DATA) \ + | (1 << TPI_INIT_MAX_STREAMS_UNI) \ + | (1 << TPI_INIT_MAX_STREAMS_BIDI) \ + | (1 << TPI_INIT_MAX_STREAM_DATA_BIDI_LOCAL) \ + | (1 << TPI_INIT_MAX_STREAM_DATA_BIDI_REMOTE) \ + | (1 << TPI_INIT_MAX_STREAM_DATA_UNI) \ +) + + +static int +check_server_tps_for_violations (const struct enc_sess_iquic *enc_sess, + const struct transport_params *params_0rtt, + const struct transport_params *new_params) +{ + enum transport_param_id tpi; + + for (tpi = 0; tpi <= MAX_NUMERIC_TPI; ++tpi) + if ((1 << tpi) & REDUCTION_PROHIBITED_TPS) + if (new_params->tp_numerics[tpi] < params_0rtt->tp_numerics[tpi]) + { + LSQ_INFO("server's new TP %s decreased in value from %"PRIu64 + " to %"PRIu64, lsquic_tpi2str[tpi], + params_0rtt->tp_numerics[tpi], + new_params->tp_numerics[tpi]); + return -1; + } + + LSQ_DEBUG("server's new transport parameters do not violate save 0-RTT " + "parameters"); + return 0; +} + + +static int +get_peer_transport_params (struct enc_sess_iquic *enc_sess) +{ + struct transport_params *const trans_params = &enc_sess->esi_peer_tp; + struct transport_params params_0rtt; + const uint8_t *params_buf; + size_t bufsz; + char *params_str; + const enum lsquic_version version = enc_sess->esi_conn->cn_version; + int have_0rtt_tp; + + SSL_get_peer_quic_transport_params(enc_sess->esi_ssl, ¶ms_buf, &bufsz); + if (!params_buf) + { + LSQ_DEBUG("no peer transport parameters"); + return -1; + } + + have_0rtt_tp = !!(enc_sess->esi_flags & ESI_HAVE_0RTT_TP); + if (have_0rtt_tp) + { + params_0rtt = enc_sess->esi_peer_tp; + enc_sess->esi_flags &= ~ESI_HAVE_0RTT_TP; + } + + LSQ_DEBUG("have peer transport parameters (%zu bytes)", bufsz); + if (LSQ_LOG_ENABLED(LSQ_LOG_DEBUG)) + { + params_str = lsquic_mm_get_4k(&enc_sess->esi_enpub->enp_mm); + if (params_str) + { + lsquic_hexdump(params_buf, bufsz, params_str, 0x1000); + LSQ_DEBUG("transport parameters (%zd bytes):\n%s", bufsz, + params_str); + lsquic_mm_put_4k(&enc_sess->esi_enpub->enp_mm, params_str); + } + } + if (0 > (version == LSQVER_ID27 ? lsquic_tp_decode_27 + : lsquic_tp_decode)(params_buf, bufsz, + !(enc_sess->esi_flags & ESI_SERVER), + trans_params)) + { + if (LSQ_LOG_ENABLED(LSQ_LOG_DEBUG)) + { + params_str = lsquic_mm_get_4k(&enc_sess->esi_enpub->enp_mm); + if (params_str) + { + lsquic_hexdump(params_buf, bufsz, params_str, 0x1000); + LSQ_DEBUG("could not parse peer transport parameters " + "(%zd bytes):\n%s", bufsz, params_str); + lsquic_mm_put_4k(&enc_sess->esi_enpub->enp_mm, params_str); + } + else + LSQ_DEBUG("could not parse peer transport parameters " + "(%zd bytes)", bufsz); + } + return -1; + } + + if (have_0rtt_tp && 0 != check_server_tps_for_violations(enc_sess, + ¶ms_0rtt, trans_params)) + return -1; + + const lsquic_cid_t *const cids[LAST_TPI + 1] = { + [TP_CID_IDX(TPI_ORIGINAL_DEST_CID)] = enc_sess->esi_flags & ESI_ODCID ? &enc_sess->esi_odcid : NULL, + [TP_CID_IDX(TPI_RETRY_SOURCE_CID)] = enc_sess->esi_flags & ESI_RSCID ? &enc_sess->esi_rscid : NULL, + [TP_CID_IDX(TPI_INITIAL_SOURCE_CID)] = enc_sess->esi_flags & ESI_ISCID ? &enc_sess->esi_iscid : NULL, + }; + + unsigned must_have, must_not_have = 0; + if (version > LSQVER_ID27) + { + must_have = 1 << TPI_INITIAL_SOURCE_CID; + if (enc_sess->esi_flags & ESI_SERVER) + must_not_have |= 1 << TPI_ORIGINAL_DEST_CID; + else + must_have |= 1 << TPI_ORIGINAL_DEST_CID; + if ((enc_sess->esi_flags & (ESI_RETRY|ESI_SERVER)) == ESI_RETRY) + must_have |= 1 << TPI_RETRY_SOURCE_CID; + else + must_not_have |= 1 << TPI_RETRY_SOURCE_CID; + } + else if ((enc_sess->esi_flags & (ESI_RETRY|ESI_SERVER)) == ESI_RETRY) + must_have = 1 << TPI_ORIGINAL_DEST_CID; + else + must_have = 0; + + enum transport_param_id tpi; + for (tpi = FIRST_TP_CID; tpi <= LAST_TP_CID; ++tpi) + { + if (!(must_have & (1 << tpi))) + continue; + if (!(trans_params->tp_set & (1 << tpi))) + { + LSQ_DEBUG("server did not produce %s", lsquic_tpi2str[tpi]); + return -1; + } + if (!cids[TP_CID_IDX(tpi)]) + { + LSQ_WARN("do not have CID %s for checking", + lsquic_tpi2str[tpi]); + return -1; + } + if (LSQUIC_CIDS_EQ(cids[TP_CID_IDX(tpi)], + &trans_params->tp_cids[TP_CID_IDX(tpi)])) + LSQ_DEBUG("%s values match", lsquic_tpi2str[tpi]); + else + { + if (LSQ_LOG_ENABLED(LSQ_LOG_DEBUG)) + { + char cidbuf[2][MAX_CID_LEN * 2 + 1]; + LSQ_DEBUG("server provided %s %"CID_FMT" that does not " + "match ours %"CID_FMT, lsquic_tpi2str[tpi], + CID_BITS_B(&trans_params->tp_cids[TP_CID_IDX(tpi)], + cidbuf[0]), + CID_BITS_B(cids[TP_CID_IDX(tpi)], cidbuf[1])); + } + enc_sess->esi_conn->cn_flags |= LSCONN_NO_BL; + return -1; + } + } + + for (tpi = FIRST_TP_CID; tpi <= LAST_TP_CID; ++tpi) + if (must_not_have & (1 << tpi) & trans_params->tp_set) + { + LSQ_DEBUG("server transport parameters unexpectedly contain %s", + lsquic_tpi2str[tpi]); + return -1; + } + + if ((trans_params->tp_set & (1 << TPI_LOSS_BITS)) + && enc_sess->esi_enpub->enp_settings.es_ql_bits) + { + const unsigned our_loss_bits + = enc_sess->esi_enpub->enp_settings.es_ql_bits - 1; + switch ((our_loss_bits << 1) | trans_params->tp_loss_bits) + { + case (0 << 1) | 0: + LSQ_DEBUG("both sides only tolerate QL bits: don't enable them"); + break; + case (0 << 1) | 1: + LSQ_DEBUG("peer sends QL bits, we receive them"); + enc_sess->esi_flags |= ESI_RECV_QL_BITS; + break; + case (1 << 1) | 0: + LSQ_DEBUG("we send QL bits, peer receives them"); + enc_sess->esi_flags |= ESI_SEND_QL_BITS; + break; + default/*1 << 1) | 1*/: + LSQ_DEBUG("enable sending and receiving QL bits"); + enc_sess->esi_flags |= ESI_RECV_QL_BITS; + enc_sess->esi_flags |= ESI_SEND_QL_BITS; + break; + } + } + else + LSQ_DEBUG("no QL bits"); + + if (trans_params->tp_set & (1 << TPI_GREASE_QUIC_BIT)) + { + if (enc_sess->esi_enpub->enp_settings.es_grease_quic_bit) + { + LSQ_DEBUG("will grease the QUIC bit"); + enc_sess->esi_grease = ~QUIC_BIT; + } + else + LSQ_DEBUG("greasing turned off: won't grease the QUIC bit"); + } + + if (enc_sess->esi_enpub->enp_settings.es_check_tp_sanity + /* We only care (and know) about HTTP/3. Other protocols may have + * their own limitations. The most generic way to do this would be + * to factor out transport parameter sanity check into a callback. + */ + && enc_sess->esi_alpn && enc_sess->esi_alpn[0] >= 2 + && enc_sess->esi_alpn[1] == 'h' + && enc_sess->esi_alpn[2] == '3') + { + const enum transport_param_id stream_data = enc_sess->esi_flags + & ESI_SERVER ? TPI_INIT_MAX_STREAM_DATA_BIDI_LOCAL + : TPI_INIT_MAX_STREAM_DATA_BIDI_REMOTE; + if (!((trans_params->tp_set & (1 << stream_data)) + && trans_params->tp_numerics[stream_data] >= 0x1000)) + { + LSQ_INFO("peer transport parameters: %s=%"PRIu64" does not pass " + "sanity check", lsquic_tpi2str[stream_data], + trans_params->tp_numerics[stream_data]); + return -1; + } + if (!((trans_params->tp_set & (1 << TPI_INIT_MAX_DATA)) + && trans_params->tp_numerics[TPI_INIT_MAX_DATA] >= 0x1000)) + { + LSQ_INFO("peer transport parameters: %s=%"PRIu64" does not pass " + "sanity check", lsquic_tpi2str[TPI_INIT_MAX_DATA], + trans_params->tp_numerics[TPI_INIT_MAX_DATA]); + return -1; + } + } + + return 0; +} + + +static int +maybe_get_peer_transport_params (struct enc_sess_iquic *enc_sess) +{ + int s; + + if (enc_sess->esi_flags & ESI_HAVE_PEER_TP) + return 0; + + s = get_peer_transport_params(enc_sess); + if (s == 0) + enc_sess->esi_flags |= ESI_HAVE_PEER_TP; + + return s; +} + + +enum iquic_handshake_status { + IHS_WANT_READ, + IHS_WANT_WRITE, + IHS_WANT_RW, + IHS_STOP, +}; + + +static enum iquic_handshake_status +iquic_esfi_handshake (struct enc_sess_iquic *enc_sess) +{ + int s, err; + enum lsquic_hsk_status hsk_status; + char errbuf[ERR_ERROR_STRING_BUF_LEN]; + + s = SSL_do_handshake(enc_sess->esi_ssl); + if (s <= 0) + { + err = SSL_get_error(enc_sess->esi_ssl, s); + switch (err) + { + case SSL_ERROR_WANT_READ: + LSQ_DEBUG("retry read"); + return IHS_WANT_READ; + case SSL_ERROR_WANT_WRITE: + LSQ_DEBUG("retry write"); + return IHS_WANT_WRITE; + case SSL_ERROR_EARLY_DATA_REJECTED: + LSQ_DEBUG("early data rejected: reset"); + SSL_reset_early_data_reject(enc_sess->esi_ssl); + if (enc_sess->esi_conn->cn_if->ci_early_data_failed) + enc_sess->esi_conn->cn_if->ci_early_data_failed( + enc_sess->esi_conn); + return IHS_WANT_RW; + /* fall through */ + default: + LSQ_DEBUG("handshake: %s", ERR_error_string(err, errbuf)); + hsk_status = LSQ_HSK_FAIL; + goto err; + } + } + + + if (SSL_in_early_data(enc_sess->esi_ssl)) + { + LSQ_DEBUG("in early data"); + if (enc_sess->esi_flags & ESI_SERVER) + LSQ_DEBUG("TODO"); + else + return IHS_WANT_READ; + } + + hsk_status = LSQ_HSK_OK; + LSQ_DEBUG("handshake reported complete"); + EV_LOG_HSK_COMPLETED(LSQUIC_LOG_CONN_ID); + /* The ESI_USE_SSL_TICKET flag indicates if the client attempted session + * resumption. If the handshake is complete, and the client attempted + * session resumption, it must have succeeded. + */ + if (enc_sess->esi_flags & ESI_USE_SSL_TICKET) + { + hsk_status = LSQ_HSK_RESUMED_OK; + EV_LOG_SESSION_RESUMPTION(LSQUIC_LOG_CONN_ID); + } + + if (0 != maybe_get_peer_transport_params(enc_sess)) + { + hsk_status = LSQ_HSK_FAIL; + goto err; + } + + enc_sess->esi_flags |= ESI_HANDSHAKE_OK; + enc_sess->esi_conn->cn_if->ci_hsk_done(enc_sess->esi_conn, hsk_status); + + return IHS_STOP; /* XXX: what else can come on the crypto stream? */ + + err: + LSQ_DEBUG("handshake failed"); + enc_sess->esi_conn->cn_if->ci_hsk_done(enc_sess->esi_conn, hsk_status); + return IHS_STOP; +} + + +static enum iquic_handshake_status +iquic_esfi_post_handshake (struct enc_sess_iquic *enc_sess) +{ + int s; + + s = SSL_process_quic_post_handshake(enc_sess->esi_ssl); + LSQ_DEBUG("SSL_process_quic_post_handshake() returned %d", s); + if (s == 1) + return IHS_WANT_READ; + else + { + enc_sess->esi_conn->cn_if->ci_internal_error(enc_sess->esi_conn, + "post-handshake error, code %d", s); + return IHS_STOP; + } +} + + +static struct transport_params * +iquic_esfi_get_peer_transport_params (enc_session_t *enc_session_p) +{ + struct enc_sess_iquic *const enc_sess = enc_session_p; + + if (enc_sess->esi_flags & ESI_HAVE_0RTT_TP) + return &enc_sess->esi_peer_tp; + else if (0 == maybe_get_peer_transport_params(enc_sess)) + return &enc_sess->esi_peer_tp; + else + return NULL; +} + + +static void +iquic_esfi_destroy (enc_session_t *enc_session_p) +{ + struct enc_sess_iquic *const enc_sess = enc_session_p; + struct frab_list *fral; + LSQ_DEBUG("iquic_esfi_destroy"); + + for (fral = enc_sess->esi_frals; fral < enc_sess->esi_frals + + sizeof(enc_sess->esi_frals) / sizeof(enc_sess->esi_frals[0]); + ++fral) + lsquic_frab_list_cleanup(fral); + if (enc_sess->esi_ssl) + SSL_free(enc_sess->esi_ssl); + + free_handshake_keys(enc_sess); + cleanup_hp(&enc_sess->esi_hp); + + free(enc_sess); +} + + +/* See [draft-ietf-quic-tls-14], Section 4 */ +static const enum enc_level hety2el[] = +{ + [HETY_SHORT] = ENC_LEV_APP, + [HETY_VERNEG] = 0, + [HETY_INITIAL] = ENC_LEV_INIT, + [HETY_RETRY] = 0, + [HETY_HANDSHAKE] = ENC_LEV_HSK, + [HETY_0RTT] = ENC_LEV_0RTT, +}; + + +static const enum enc_level pns2enc_level[2][N_PNS] = +{ + [0] = { + [PNS_INIT] = ENC_LEV_INIT, + [PNS_HSK] = ENC_LEV_HSK, + [PNS_APP] = ENC_LEV_0RTT, + }, + [1] = { + [PNS_INIT] = ENC_LEV_INIT, + [PNS_HSK] = ENC_LEV_HSK, + [PNS_APP] = ENC_LEV_APP, + }, +}; + + +int +iquic_esf_is_enc_level_ready (enc_session_t *enc_session_p, + enum enc_level level) +{ + const struct enc_sess_iquic *enc_sess = enc_session_p; + const struct header_prot *hp; + if (level == ENC_LEV_APP) + hp = &enc_sess->esi_hp; + else if (enc_sess->esi_hsk_crypto) + hp = &enc_sess->esi_hsk_crypto[level].hp; + else + return 0; + return header_prot_inited(hp, HP_CAN_READ); +} + + +static enum enc_packout +iquic_esf_encrypt_packet (enc_session_t *enc_session_p, + const struct lsquic_engine_public *enpub, struct lsquic_conn *lconn_UNUSED, + struct lsquic_packet_out *packet_out) +{ + struct enc_sess_iquic *const enc_sess = enc_session_p; + struct lsquic_conn *const lconn = enc_sess->esi_conn; + unsigned char *dst; + const struct crypto_ctx_pair *pair; + const struct crypto_ctx *crypto_ctx; + struct header_prot *hp; + enum enc_level enc_level; + unsigned char nonce_buf[ sizeof(crypto_ctx->yk_iv_buf) + 8 ]; + unsigned char *nonce, *begin_xor; + lsquic_packno_t packno; + size_t out_sz, dst_sz; + int header_sz; + int ipv6; + unsigned packno_off, packno_len; + enum packnum_space pns; + char errbuf[ERR_ERROR_STRING_BUF_LEN]; + + pns = lsquic_packet_out_pns(packet_out); + enc_level = pns2enc_level[ enc_sess->esi_have_forw ][ pns ]; + + if (enc_level == ENC_LEV_APP) + { + pair = &enc_sess->esi_pairs[ enc_sess->esi_key_phase ]; + crypto_ctx = &pair->ykp_ctx[ 1 ]; + hp = &enc_sess->esi_hp; + } + else if (enc_sess->esi_hsk_crypto) + { + pair = &enc_sess->esi_hsk_crypto[ enc_level ].pair; + crypto_ctx = &pair->ykp_ctx[ 1 ]; + hp = &enc_sess->esi_hsk_crypto[ enc_level ].hp; + } + else + { + LSQ_WARN("no keys for encryption level %s", + lsquic_enclev2str[enc_level]); + return ENCPA_BADCRYPT; + } + + if (UNLIKELY(0 == (crypto_ctx->yk_flags & YK_INITED))) + { + LSQ_WARN("encrypt crypto context at level %s not initialized", + lsquic_enclev2str[enc_level]); + return ENCPA_BADCRYPT; + } + + if (packet_out->po_data_sz < 3) + { + /* [draft-ietf-quic-tls-20] Section 5.4.2 */ + enum packno_bits bits = lsquic_packet_out_packno_bits(packet_out); + unsigned len = iquic_packno_bits2len(bits); + if (packet_out->po_data_sz + len < 4) + { + len = 4 - packet_out->po_data_sz - len; + memset(packet_out->po_data + packet_out->po_data_sz, 0, len); + packet_out->po_data_sz += len; + packet_out->po_frame_types |= QUIC_FTBIT_PADDING; + LSQ_DEBUG("padded packet %"PRIu64" with %u bytes of PADDING", + packet_out->po_packno, len); + } + } + + dst_sz = lconn->cn_pf->pf_packout_size(lconn, packet_out); + ipv6 = NP_IS_IPv6(packet_out->po_path); + dst = enpub->enp_pmi->pmi_allocate(enpub->enp_pmi_ctx, + packet_out->po_path->np_peer_ctx, lconn->cn_conn_ctx, dst_sz, ipv6); + if (!dst) + { + LSQ_DEBUG("could not allocate memory for outgoing packet of size %zd", + dst_sz); + return ENCPA_NOMEM; + } + + /* Align nonce so we can perform XOR safely in one shot: */ + begin_xor = nonce_buf + sizeof(nonce_buf) - 8; + begin_xor = (unsigned char *) ((uintptr_t) begin_xor & ~0x7); + nonce = begin_xor - crypto_ctx->yk_iv_sz + 8; + memcpy(nonce, crypto_ctx->yk_iv_buf, crypto_ctx->yk_iv_sz); + packno = packet_out->po_packno; + if (s_log_seal_and_open) + LSQ_DEBUG("seal: iv: %s; packno: 0x%"PRIX64, + HEXSTR(crypto_ctx->yk_iv_buf, crypto_ctx->yk_iv_sz, s_str), packno); +#if __BYTE_ORDER == __LITTLE_ENDIAN + packno = bswap_64(packno); +#endif + *((uint64_t *) begin_xor) ^= packno; + + header_sz = lconn->cn_pf->pf_gen_reg_pkt_header(lconn, packet_out, dst, + dst_sz, &packno_off, &packno_len); + if (header_sz < 0) + goto err; + if (enc_level == ENC_LEV_APP) + dst[0] |= enc_sess->esi_key_phase << 2; + dst[0] &= enc_sess->esi_grease | packet_out->po_path->np_dcid.idbuf[0]; + + if (s_log_seal_and_open) + { + LSQ_DEBUG("seal: nonce (%u bytes): %s", crypto_ctx->yk_iv_sz, + HEXSTR(nonce, crypto_ctx->yk_iv_sz, s_str)); + LSQ_DEBUG("seal: ad (%u bytes): %s", header_sz, + HEXSTR(dst, header_sz, s_str)); + LSQ_DEBUG("seal: in (%u bytes): %s", packet_out->po_data_sz, + HEXSTR(packet_out->po_data, packet_out->po_data_sz, s_str)); + } + if (!EVP_AEAD_CTX_seal(&crypto_ctx->yk_aead_ctx, dst + header_sz, &out_sz, + dst_sz - header_sz, nonce, crypto_ctx->yk_iv_sz, packet_out->po_data, + packet_out->po_data_sz, dst, header_sz)) + { + LSQ_WARN("cannot seal packet #%"PRIu64": %s", packet_out->po_packno, + ERR_error_string(ERR_get_error(), errbuf)); + goto err; + } + assert(out_sz == dst_sz - header_sz); + +#ifndef NDEBUG + const unsigned sample_off = packno_off + 4; + assert(sample_off + IQUIC_TAG_LEN <= dst_sz); +#endif + + packet_out->po_enc_data = dst; + packet_out->po_enc_data_sz = dst_sz; + packet_out->po_sent_sz = dst_sz; + packet_out->po_flags &= ~PO_IPv6; + packet_out->po_flags |= PO_ENCRYPTED|PO_SENT_SZ|(ipv6 << POIPv6_SHIFT); + packet_out->po_dcid_len = packet_out->po_path->np_dcid.len; + lsquic_packet_out_set_enc_level(packet_out, enc_level); + lsquic_packet_out_set_kp(packet_out, enc_sess->esi_key_phase); + + if (enc_level == ENC_LEV_APP && hp->hp_gen_mask != gen_hp_mask_chacha20) + apply_hp_batch(enc_sess, hp, packet_out, packno_off, packno_len); + else + apply_hp_immediately(enc_sess, hp, packet_out, packno_off, packno_len); + + return ENCPA_OK; + + err: + enpub->enp_pmi->pmi_return(enpub->enp_pmi_ctx, + packet_out->po_path->np_peer_ctx, dst, ipv6); + return ENCPA_BADCRYPT; +} + + +static void +iquic_esf_flush_encryption (enc_session_t *enc_session_p) +{ + struct enc_sess_iquic *const enc_sess = enc_session_p; + + if (enc_sess->esi_hp_batch_idx) + { + LSQ_DEBUG("flush header protection application, count: %u", + enc_sess->esi_hp_batch_idx); + flush_hp_batch(enc_sess); + } +} + + +static struct ku_label +{ + const char *str; + uint8_t len; +} + + +select_ku_label (enum lsquic_version version) +{ + static struct ku_label labels[2] = + { + { "quic ku", 7, }, + { "quicv2 ku", 9, } + }; + return labels[version == LSQVER_I002]; +} + + +static enum dec_packin +iquic_esf_decrypt_packet (enc_session_t *enc_session_p, + struct lsquic_engine_public *enpub, const struct lsquic_conn *lconn, + struct lsquic_packet_in *packet_in) +{ + struct enc_sess_iquic *const enc_sess = enc_session_p; + unsigned char *dst; + struct crypto_ctx_pair *pair; + struct header_prot *hp; + struct crypto_ctx *crypto_ctx = NULL; + unsigned char nonce_buf[ sizeof(crypto_ctx->yk_iv_buf) + 8 ]; + unsigned char *nonce, *begin_xor; + unsigned sample_off, packno_len, key_phase; + enum enc_level enc_level; + enum packnum_space pns; + lsquic_packno_t packno; + size_t out_sz; + enum dec_packin dec_packin; + int s; + /* 16Bytes: AEAD authentication tag + * + * [RFC5116 AEAD] Section 5.1 + * An authentication tag with a length of 16 octets (128bits) is used. + * + * [RFC9001 QUIC-TLS] Section 5.3 + * These cipher suites have a 16-byte authentication tag and + * produce an output 16 bytes larger than their input. + */ + const size_t dst_sz = packet_in->pi_data_sz - IQUIC_TAG_LEN; + unsigned char new_secret[EVP_MAX_KEY_LENGTH]; + struct crypto_ctx crypto_ctx_buf; + char secret_str[EVP_MAX_KEY_LENGTH * 2 + 1]; + char errbuf[ERR_ERROR_STRING_BUF_LEN]; + + dst = lsquic_mm_get_packet_in_buf(&enpub->enp_mm, dst_sz); + if (!dst) + { + LSQ_WARN("cannot allocate memory to copy incoming packet data"); + dec_packin = DECPI_NOMEM; + goto err; + } + + enc_level = hety2el[packet_in->pi_header_type]; + if (enc_level == ENC_LEV_APP) + hp = &enc_sess->esi_hp; + else if (enc_sess->esi_hsk_crypto) + hp = &enc_sess->esi_hsk_crypto[ enc_level ].hp; + else + hp = NULL; + + if (UNLIKELY(!(hp && header_prot_inited(hp, HP_CAN_READ)))) + { + LSQ_DEBUG("header protection for level %u not initialized yet", + enc_level); + dec_packin = DECPI_NOT_YET; + goto err; + } + + /* Decrypt packet number. After this operation, packet_in is adjusted: + * the packet number becomes part of the header. + */ + sample_off = packet_in->pi_header_sz + 4; + if (sample_off + IQUIC_TAG_LEN > packet_in->pi_data_sz) + { + LSQ_INFO("packet data is too short: %hu bytes", + packet_in->pi_data_sz); + dec_packin = DECPI_TOO_SHORT; + goto err; + } + memcpy(dst, packet_in->pi_data, sample_off); + packet_in->pi_packno = + packno = strip_hp(enc_sess, hp, + packet_in->pi_data + sample_off, + dst, packet_in->pi_header_sz, &packno_len); + + if (enc_level == ENC_LEV_APP) + { + key_phase = (dst[0] & 0x04) > 0; + pair = &enc_sess->esi_pairs[ key_phase ]; + if (key_phase == enc_sess->esi_key_phase) + { + crypto_ctx = &pair->ykp_ctx[ 0 ]; + /* Checked by header_prot_inited() above */ + assert(crypto_ctx->yk_flags & YK_INITED); + } + else if (!is_valid_packno( + enc_sess->esi_pairs[enc_sess->esi_key_phase].ykp_thresh) + || packet_in->pi_packno + > enc_sess->esi_pairs[enc_sess->esi_key_phase].ykp_thresh) + { + const struct ku_label kl = select_ku_label(enc_sess->esi_conn->cn_version); + lsquic_qhkdf_expand(enc_sess->esi_md, + enc_sess->esi_traffic_secrets[0], enc_sess->esi_trasec_sz, + kl.str, kl.len, new_secret, enc_sess->esi_trasec_sz); + if (enc_sess->esi_flags & ESI_LOG_SECRETS) + LSQ_DEBUG("key phase changed to %u, will try decrypting using " + "new secret %s", key_phase, HEXSTR(new_secret, + enc_sess->esi_trasec_sz, secret_str)); + else + LSQ_DEBUG("key phase changed to %u, will try decrypting using " + "new secret", key_phase); + crypto_ctx = &crypto_ctx_buf; + crypto_ctx->yk_flags = 0; + s = init_crypto_ctx(crypto_ctx, enc_sess->esi_md, + enc_sess->esi_aead, new_secret, enc_sess->esi_trasec_sz, + evp_aead_open, + &hkdf_labels[enc_sess->esi_conn->cn_version == LSQVER_I002] + ); + if (s != 0) + { + LSQ_ERROR("could not init open crypto ctx (key phase)"); + dec_packin = DECPI_BADCRYPT; + goto err; + } + } + else + { + crypto_ctx = &pair->ykp_ctx[ 0 ]; + if (UNLIKELY(0 == (crypto_ctx->yk_flags & YK_INITED))) + { + LSQ_DEBUG("supposedly older context is not initialized (key " + "phase: %u)", key_phase); + dec_packin = DECPI_BADCRYPT; + goto err; + } + } + } + else + { + key_phase = 0; + assert(enc_sess->esi_hsk_crypto); + pair = &enc_sess->esi_hsk_crypto[ enc_level ].pair; + crypto_ctx = &pair->ykp_ctx[ 0 ]; + if (UNLIKELY(0 == (crypto_ctx->yk_flags & YK_INITED))) + { + LSQ_WARN("decrypt crypto context at level %s not initialized", + lsquic_enclev2str[enc_level]); + dec_packin = DECPI_BADCRYPT; + goto err; + } + } + + if (s_log_seal_and_open) + LSQ_DEBUG("open: iv: %s; packno: 0x%"PRIX64, + HEXSTR(crypto_ctx->yk_iv_buf, crypto_ctx->yk_iv_sz, s_str), packno); + /* Align nonce so we can perform XOR safely in one shot: */ + begin_xor = nonce_buf + sizeof(nonce_buf) - 8; + begin_xor = (unsigned char *) ((uintptr_t) begin_xor & ~0x7); + nonce = begin_xor - crypto_ctx->yk_iv_sz + 8; + memcpy(nonce, crypto_ctx->yk_iv_buf, crypto_ctx->yk_iv_sz); +#if __BYTE_ORDER == __LITTLE_ENDIAN + packno = bswap_64(packno); +#endif + *((uint64_t *) begin_xor) ^= packno; + + packet_in->pi_header_sz += packno_len; + + if (s_log_seal_and_open) + { + LSQ_DEBUG("open: nonce (%u bytes): %s", crypto_ctx->yk_iv_sz, + HEXSTR(nonce, crypto_ctx->yk_iv_sz, s_str)); + LSQ_DEBUG("open: ad (%u bytes): %s", packet_in->pi_header_sz, + HEXSTR(dst, packet_in->pi_header_sz, s_str)); + LSQ_DEBUG("open: in (%u bytes): %s", packet_in->pi_data_sz + - packet_in->pi_header_sz, HEXSTR(packet_in->pi_data + + packet_in->pi_header_sz, packet_in->pi_data_sz + - packet_in->pi_header_sz, s_str)); + } + if (!EVP_AEAD_CTX_open(&crypto_ctx->yk_aead_ctx, + dst + packet_in->pi_header_sz, &out_sz, + dst_sz - packet_in->pi_header_sz, nonce, crypto_ctx->yk_iv_sz, + packet_in->pi_data + packet_in->pi_header_sz, + packet_in->pi_data_sz - packet_in->pi_header_sz, + dst, packet_in->pi_header_sz)) + { + LSQ_INFO("cannot open packet #%"PRIu64": %s", packet_in->pi_packno, + ERR_error_string(ERR_get_error(), errbuf)); + dec_packin = DECPI_BADCRYPT; + goto err; + } + + if (enc_sess->esi_flags & ESI_SEND_QL_BITS) + { + packet_in->pi_flags |= PI_LOG_QL_BITS; + if (dst[0] & 0x10) + packet_in->pi_flags |= PI_SQUARE_BIT; + if (dst[0] & 0x08) + packet_in->pi_flags |= PI_LOSS_BIT; + } + else if (dst[0] & (0x0C << (packet_in->pi_header_type == HETY_SHORT))) + { + LSQ_DEBUG("reserved bits are not set to zero"); + dec_packin = DECPI_VIOLATION; + goto err; + } + + if (crypto_ctx == &crypto_ctx_buf) + { + LSQ_DEBUG("decryption in the new key phase %u successful, rotate " + "keys", key_phase); + const struct ku_label kl = select_ku_label(enc_sess->esi_conn->cn_version); + pair->ykp_thresh = packet_in->pi_packno; + pair->ykp_ctx[ 0 ] = crypto_ctx_buf; + memcpy(enc_sess->esi_traffic_secrets[ 0 ], new_secret, + enc_sess->esi_trasec_sz); + lsquic_qhkdf_expand(enc_sess->esi_md, + enc_sess->esi_traffic_secrets[1], enc_sess->esi_trasec_sz, + kl.str, kl.len, new_secret, enc_sess->esi_trasec_sz); + memcpy(enc_sess->esi_traffic_secrets[1], new_secret, + enc_sess->esi_trasec_sz); + s = init_crypto_ctx(&pair->ykp_ctx[1], enc_sess->esi_md, + enc_sess->esi_aead, new_secret, enc_sess->esi_trasec_sz, + evp_aead_seal, + &hkdf_labels[enc_sess->esi_conn->cn_version == LSQVER_I002]); + if (s != 0) + { + LSQ_ERROR("could not init seal crypto ctx (key phase)"); + cleanup_crypto_ctx(&pair->ykp_ctx[1]); + /* This is a severe error, abort connection */ + enc_sess->esi_conn->cn_if->ci_internal_error(enc_sess->esi_conn, + "crypto ctx failure during key phase shift"); + dec_packin = DECPI_BADCRYPT; + goto err; + } + if (enc_sess->esi_flags & ESI_LOG_SECRETS) + log_crypto_pair(enc_sess, pair, "updated"); + enc_sess->esi_key_phase = key_phase; + } + + if (packet_in->pi_flags & PI_OWN_DATA) + lsquic_mm_put_packet_in_buf(&enpub->enp_mm, packet_in->pi_data, + packet_in->pi_data_sz); + packet_in->pi_data_sz = packet_in->pi_header_sz + out_sz; + packet_in->pi_data = dst; + packet_in->pi_flags |= PI_OWN_DATA | PI_DECRYPTED + | (enc_level << PIBIT_ENC_LEV_SHIFT); + pns = lsquic_enclev2pns[enc_level]; + if (packet_in->pi_packno > enc_sess->esi_max_packno[pns] + || !(enc_sess->esi_flags & (ESI_MAX_PACKNO_INIT << pns))) + enc_sess->esi_max_packno[pns] = packet_in->pi_packno; + enc_sess->esi_flags |= ESI_MAX_PACKNO_INIT << pns; + if (is_valid_packno(pair->ykp_thresh) + && packet_in->pi_packno > pair->ykp_thresh) + pair->ykp_thresh = packet_in->pi_packno; + return DECPI_OK; + + err: + if (crypto_ctx == &crypto_ctx_buf) + cleanup_crypto_ctx(crypto_ctx); + if (dst) + lsquic_mm_put_packet_in_buf(&enpub->enp_mm, dst, dst_sz); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "could not decrypt packet (type %s, " + "number %"PRIu64")", lsquic_hety2str[packet_in->pi_header_type], + packet_in->pi_packno); + return dec_packin; +} + + +static const char * +iquic_esf_get_sni (enc_session_t *enc_session_p) +{ + struct enc_sess_iquic *const enc_sess = enc_session_p; + const char *server_name; + + server_name = SSL_get_servername(enc_sess->esi_ssl, TLSEXT_NAMETYPE_host_name); +#ifndef NDEBUG + if (!server_name) + server_name = enc_sess->esi_sni_bypass; +#endif + return server_name; +} + + +static int +iquic_esf_global_init (int flags) +{ + s_idx = SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL); + if (s_idx >= 0) + { + LSQ_LOG1(LSQ_LOG_DEBUG, "SSL extra data index: %d", s_idx); + return 0; + } + else + { + LSQ_LOG1(LSQ_LOG_ERROR, "%s: could not select index", __func__); + return -1; + } +} + + +static void +iquic_esf_global_cleanup (void) +{ +} + + +static struct stack_st_X509 * +iquic_esf_get_server_cert_chain (enc_session_t *enc_session_p) +{ + struct enc_sess_iquic *const enc_sess = enc_session_p; + STACK_OF(X509) *chain; + + if (enc_sess->esi_ssl) + { + chain = SSL_get_peer_cert_chain(enc_sess->esi_ssl); + return X509_chain_up_ref(chain); + } + else + return NULL; +} + + +static const char * +iquic_esf_cipher (enc_session_t *enc_session_p) +{ + struct enc_sess_iquic *const enc_sess = enc_session_p; + const SSL_CIPHER *cipher; + + if (enc_sess->esi_flags & ESI_CACHED_INFO) + return enc_sess->esi_cached_info.cipher_name; + else if (enc_sess->esi_ssl) + { + cipher = SSL_get_current_cipher(enc_sess->esi_ssl); + return SSL_CIPHER_get_name(cipher); + } + else + { + LSQ_WARN("SSL session is not set"); + return "null"; + } +} + + +static int +iquic_esf_keysize (enc_session_t *enc_session_p) +{ + struct enc_sess_iquic *const enc_sess = enc_session_p; + const SSL_CIPHER *cipher; + uint32_t id; + + if (enc_sess->esi_flags & ESI_CACHED_INFO) + return enc_sess->esi_cached_info.alg_bits / 8; + else if (enc_sess->esi_ssl) + { + cipher = SSL_get_current_cipher(enc_sess->esi_ssl); + id = cipher ? SSL_CIPHER_get_id(cipher) : 0; + + /* RFC 8446, Appendix B.4 */ + switch (id) + { + case 0x03000000 | 0x1301: /* TLS_AES_128_GCM_SHA256 */ + return 128 / 8; + case 0x03000000 | 0x1302: /* TLS_AES_256_GCM_SHA384 */ + return 256 / 8; + case 0x03000000 | 0x1303: /* TLS_CHACHA20_POLY1305_SHA256 */ + return 256 / 8; + default: + return -1; + } + } + else + { + LSQ_WARN("SSL session is not set"); + return -1; + } +} + + +static int +iquic_esf_alg_keysize (enc_session_t *enc_session_p) +{ + /* Modeled on SslConnection::getEnv() */ + return iquic_esf_keysize(enc_session_p); +} + + +static int +iquic_esf_sess_resume_enabled (enc_session_t *enc_session_p) +{ + struct enc_sess_iquic *const enc_sess = enc_session_p; + return !!(enc_sess->esi_flags & ESI_USE_SSL_TICKET); +} + + +static void +iquic_esfi_set_iscid (enc_session_t *enc_session_p, + const struct lsquic_packet_in *packet_in) +{ + struct enc_sess_iquic *const enc_sess = enc_session_p; + + if (!(enc_sess->esi_flags & ESI_ISCID)) + { + lsquic_scid_from_packet_in(packet_in, &enc_sess->esi_iscid); + enc_sess->esi_flags |= ESI_ISCID; + LSQ_DEBUGC("set ISCID to %"CID_FMT, CID_BITS(&enc_sess->esi_iscid)); + } +} + + +int +iquic_esfi_switch_version (enc_session_t *enc_session_p, lsquic_cid_t *dcid, + int backup_keys) +{ + struct enc_sess_iquic *const enc_sess = enc_session_p; + + enc_sess->esi_flags |= ESI_SWITCH_VER; + + /* Free previous handshake keys */ + assert(enc_sess->esi_hsk_crypto); + if (backup_keys) + { + if (!enc_sess->esi_vn_save) + { + enc_sess->esi_vn_save = calloc(1, sizeof(*enc_sess->esi_vn_save)); + //skip error, non fatal + } + else + cleanup_hsk_crypto(enc_sess->esi_vn_save); + if (enc_sess->esi_vn_save) + *enc_sess->esi_vn_save = enc_sess->esi_hsk_crypto[ENC_LEV_INIT]; + } + if (!enc_sess->esi_vn_save) + cleanup_hsk_crypto(&enc_sess->esi_hsk_crypto[ENC_LEV_INIT]); + else + memset(&enc_sess->esi_hsk_crypto[ENC_LEV_INIT], 0, + sizeof(enc_sess->esi_hsk_crypto[ENC_LEV_INIT])); + if (!dcid) + { + if (enc_sess->esi_flags & ESI_RETRY) + dcid = &enc_sess->esi_rscid; + else + dcid = &enc_sess->esi_odcid; + } + if (0 == setup_handshake_keys(enc_sess, dcid)) + { + LSQ_INFO("update handshake keys to version %s", + lsquic_ver2str[enc_sess->esi_conn->cn_version]); + return 0; + } + else + return -1; +} + + +static int +iquic_esfi_reset_dcid (enc_session_t *enc_session_p, + const lsquic_cid_t *old_dcid, const lsquic_cid_t *new_dcid) +{ + struct enc_sess_iquic *const enc_sess = enc_session_p; + + enc_sess->esi_odcid = *old_dcid; + enc_sess->esi_rscid = *new_dcid; + enc_sess->esi_flags |= ESI_ODCID|ESI_RSCID|ESI_RETRY; + + /* Free previous handshake keys */ + assert(enc_sess->esi_hsk_crypto); + cleanup_hsk_crypto(&enc_sess->esi_hsk_crypto[ENC_LEV_INIT]); + + if (0 == setup_handshake_keys(enc_sess, new_dcid)) + { + LSQ_INFOC("reset DCID to %"CID_FMT, CID_BITS(new_dcid)); + return 0; + } + else + return -1; +} + + +static void +iquic_esfi_handshake_confirmed (enc_session_t *sess) +{ + struct enc_sess_iquic *enc_sess = (struct enc_sess_iquic *) sess; + + if (!(enc_sess->esi_flags & ESI_HSK_CONFIRMED)) + { + LSQ_DEBUG("handshake has been confirmed"); + enc_sess->esi_flags |= ESI_HSK_CONFIRMED; + maybe_drop_SSL(enc_sess); + } +} + + +static int +iquic_esfi_in_init (enc_session_t *sess) +{ + struct enc_sess_iquic *enc_sess = (struct enc_sess_iquic *) sess; + int in_init; + + if (enc_sess->esi_ssl) + { + in_init = SSL_in_init(enc_sess->esi_ssl); + LSQ_DEBUG("in_init: %d", in_init); + return in_init; + } + else + { + LSQ_DEBUG("no SSL object, in_init: 0"); + return 0; + } +} + + +static int +iquic_esfi_data_in (enc_session_t *sess, enum enc_level enc_level, + const unsigned char *buf, size_t len) +{ + struct enc_sess_iquic *enc_sess = (struct enc_sess_iquic *) sess; + int s; + size_t str_sz; + char str[MAX(1500 * 5, ERR_ERROR_STRING_BUF_LEN)]; + + if (!enc_sess->esi_ssl) + return -1; + + s = SSL_provide_quic_data(enc_sess->esi_ssl, + (enum ssl_encryption_level_t) enc_level, buf, len); + if (!s) + { + LSQ_WARN("SSL_provide_quic_data returned false: %s", + ERR_error_string(ERR_get_error(), str)); + return -1; + } + LSQ_DEBUG("provided %zu bytes of %u-level data to SSL", len, enc_level); + str_sz = lsquic_hexdump(buf, len, str, sizeof(str)); + LSQ_DEBUG("\n%.*s", (int) str_sz, str); + s = SSL_do_handshake(enc_sess->esi_ssl); + LSQ_DEBUG("do_handshake returns %d", s); + return 0; +} + + +static void iquic_esfi_shake_stream (enc_session_t *sess, + struct lsquic_stream *stream, const char *what); + + +const struct enc_session_funcs_iquic lsquic_enc_session_iquic_ietf_v1 = +{ + .esfi_create_client = iquic_esfi_create_client, + .esfi_destroy = iquic_esfi_destroy, + .esfi_get_peer_transport_params + = iquic_esfi_get_peer_transport_params, + .esfi_reset_dcid = iquic_esfi_reset_dcid, + .esfi_init_server = iquic_esfi_init_server, + .esfi_set_iscid = iquic_esfi_set_iscid, + .esfi_set_streams = iquic_esfi_set_streams, + .esfi_create_server = iquic_esfi_create_server, + .esfi_shake_stream = iquic_esfi_shake_stream, + .esfi_handshake_confirmed + = iquic_esfi_handshake_confirmed, + .esfi_in_init = iquic_esfi_in_init, + .esfi_data_in = iquic_esfi_data_in, +}; + + +const struct enc_session_funcs_common lsquic_enc_session_common_ietf_v1 = +{ + .esf_encrypt_packet = iquic_esf_encrypt_packet, + .esf_decrypt_packet = iquic_esf_decrypt_packet, + .esf_flush_encryption= iquic_esf_flush_encryption, + .esf_global_cleanup = iquic_esf_global_cleanup, + .esf_global_init = iquic_esf_global_init, + .esf_tag_len = IQUIC_TAG_LEN, + .esf_get_server_cert_chain + = iquic_esf_get_server_cert_chain, + .esf_get_sni = iquic_esf_get_sni, + .esf_cipher = iquic_esf_cipher, + .esf_keysize = iquic_esf_keysize, + .esf_alg_keysize = iquic_esf_alg_keysize, + .esf_is_sess_resume_enabled = iquic_esf_sess_resume_enabled, + .esf_set_conn = iquic_esf_set_conn, +}; + + +static +const struct enc_session_funcs_common lsquic_enc_session_common_ietf_v1_no_flush = +{ + .esf_encrypt_packet = iquic_esf_encrypt_packet, + .esf_decrypt_packet = iquic_esf_decrypt_packet, + .esf_global_cleanup = iquic_esf_global_cleanup, + .esf_global_init = iquic_esf_global_init, + .esf_tag_len = IQUIC_TAG_LEN, + .esf_get_server_cert_chain + = iquic_esf_get_server_cert_chain, + .esf_get_sni = iquic_esf_get_sni, + .esf_cipher = iquic_esf_cipher, + .esf_keysize = iquic_esf_keysize, + .esf_alg_keysize = iquic_esf_alg_keysize, + .esf_is_sess_resume_enabled = iquic_esf_sess_resume_enabled, + .esf_set_conn = iquic_esf_set_conn, +}; + + +static void +cache_info (struct enc_sess_iquic *enc_sess) +{ + const SSL_CIPHER *cipher; + + cipher = SSL_get_current_cipher(enc_sess->esi_ssl); + enc_sess->esi_cached_info.cipher_name = SSL_CIPHER_get_name(cipher); + SSL_CIPHER_get_bits(cipher, &enc_sess->esi_cached_info.alg_bits); + enc_sess->esi_flags |= ESI_CACHED_INFO; +} + + +static void +drop_SSL (struct enc_sess_iquic *enc_sess) +{ + LSQ_DEBUG("drop SSL object"); + if (enc_sess->esi_conn->cn_if->ci_drop_crypto_streams) + enc_sess->esi_conn->cn_if->ci_drop_crypto_streams( + enc_sess->esi_conn); + cache_info(enc_sess); + SSL_free(enc_sess->esi_ssl); + enc_sess->esi_ssl = NULL; + free_handshake_keys(enc_sess); +} + + +static void +maybe_drop_SSL (struct enc_sess_iquic *enc_sess) +{ + /* We rely on the following BoringSSL property: it writes new session + * tickets before marking handshake as complete. In this case, the new + * session tickets have either been successfully written to crypto stream, + * in which case we can close it, or (unlikely) they are buffered in the + * frab list. + */ + if ((enc_sess->esi_flags & (ESI_HSK_CONFIRMED|ESI_HANDSHAKE_OK)) + == (ESI_HSK_CONFIRMED|ESI_HANDSHAKE_OK) + && enc_sess->esi_ssl + && lsquic_frab_list_empty(&enc_sess->esi_frals[ENC_LEV_APP])) + { + if ((enc_sess->esi_flags & (ESI_SERVER|ESI_WANT_TICKET)) + != ESI_WANT_TICKET) + drop_SSL(enc_sess); + else if (enc_sess->esi_alset + && !lsquic_alarmset_is_set(enc_sess->esi_alset, AL_SESS_TICKET)) + { + LSQ_DEBUG("no session ticket: delay dropping SSL object"); + lsquic_alarmset_set(enc_sess->esi_alset, AL_SESS_TICKET, + /* Wait up to two seconds for session tickets */ + lsquic_time_now() + 2000000); + } + } +} + + +static void +no_sess_ticket (enum alarm_id alarm_id, void *ctx, + lsquic_time_t expiry, lsquic_time_t now) +{ + struct enc_sess_iquic *enc_sess = ctx; + + LSQ_DEBUG("no session tickets forthcoming -- drop SSL"); + drop_SSL(enc_sess); +} + + +typedef char enums_have_the_same_value[ + (int) ssl_encryption_initial == (int) ENC_LEV_INIT && + (int) ssl_encryption_early_data == (int) ENC_LEV_0RTT && + (int) ssl_encryption_handshake == (int) ENC_LEV_HSK && + (int) ssl_encryption_application == (int) ENC_LEV_APP ? 1 : -1]; + +static int +set_secret (SSL *ssl, enum ssl_encryption_level_t level, + const SSL_CIPHER *cipher, const uint8_t *secret, size_t secret_len, int rw) +{ + struct enc_sess_iquic *enc_sess; + struct crypto_ctx_pair *pair; + struct header_prot *hp; + struct crypto_params crypa; + int have_alpn; + const unsigned char *alpn; + unsigned alpn_len; + size_t key_len; + const enum enc_level enc_level = (enum enc_level) level; + unsigned char key[EVP_MAX_KEY_LENGTH]; + char errbuf[ERR_ERROR_STRING_BUF_LEN]; +#define hexbuf errbuf + struct label_set *labels; + + enc_sess = SSL_get_ex_data(ssl, s_idx); + if (!enc_sess) + return 0; + + if ((enc_sess->esi_flags & (ESI_ALPN_CHECKED|ESI_SERVER)) == ESI_SERVER + && enc_sess->esi_alpn) + { + enc_sess->esi_flags |= ESI_ALPN_CHECKED; + SSL_get0_alpn_selected(enc_sess->esi_ssl, &alpn, &alpn_len); + have_alpn = alpn && alpn_len == enc_sess->esi_alpn[0] + && 0 == memcmp(alpn, enc_sess->esi_alpn + 1, alpn_len); + if (have_alpn) + LSQ_DEBUG("Selected ALPN %.*s", (int) alpn_len, (char *) alpn); + else + { + LSQ_INFO("No ALPN is selected: send fatal alert"); + SSL_send_fatal_alert(ssl, ALERT_NO_APPLICATION_PROTOCOL); + return 0; + } + } + + if (0 != get_crypto_params(enc_sess, cipher, &crypa)) + return 0; + +/* + if (enc_sess->esi_flags & ESI_SERVER) + secrets[0] = read_secret, secrets[1] = write_secret; + else + secrets[0] = write_secret, secrets[1] = read_secret; + */ + + if (enc_level < ENC_LEV_APP) + { + assert(enc_sess->esi_hsk_crypto); + pair = &enc_sess->esi_hsk_crypto[enc_level].pair; + hp = &enc_sess->esi_hsk_crypto[enc_level].hp; + } + else + { + pair = &enc_sess->esi_pairs[0]; + hp = &enc_sess->esi_hp; + enc_sess->esi_trasec_sz = secret_len; + memcpy(enc_sess->esi_traffic_secrets[rw], secret, secret_len); + enc_sess->esi_md = crypa.md; + enc_sess->esi_aead = crypa.aead; + if (!(hp->hp_flags & (HP_CAN_READ|HP_CAN_WRITE)) + && crypa.aead == EVP_aead_chacha20_poly1305()) + { + LSQ_DEBUG("turn off header protection batching (chacha not " + "supported)"); + enc_sess->esi_conn->cn_esf_c = &lsquic_enc_session_common_ietf_v1_no_flush; + } + } + pair->ykp_thresh = IQUIC_INVALID_PACKNO; + + if (enc_sess->esi_flags & ESI_LOG_SECRETS) + LSQ_DEBUG("set %s secret for level %u: %s", rw2str[rw], enc_level, + HEXSTR(secret, secret_len, hexbuf)); + else + LSQ_DEBUG("set %s for level %u", rw2str[rw], enc_level); + + labels = &hkdf_labels[enc_sess->esi_conn->cn_version == LSQVER_I002]; + if (0 != init_crypto_ctx(&pair->ykp_ctx[rw], crypa.md, + crypa.aead, secret, secret_len, rw2dir(rw), labels)) + goto err; + + if (pair->ykp_ctx[!rw].yk_flags & YK_INITED) + { + /* Sanity check that the two sides end up with the same header + * protection logic, as they should. + */ + assert(hp->hp_gen_mask == crypa.gen_hp_mask); + } + else + { + hp->hp_enc_level = enc_level; + hp->hp_gen_mask = crypa.gen_hp_mask; + } + key_len = EVP_AEAD_key_length(crypa.aead); + if (hp->hp_gen_mask == gen_hp_mask_aes) + { + lsquic_qhkdf_expand(crypa.md, secret, secret_len, labels->hp, + labels->hp_len, key, key_len); + EVP_CIPHER_CTX_init(&hp->hp_u.cipher_ctx[rw]); + if (!EVP_EncryptInit_ex(&hp->hp_u.cipher_ctx[rw], crypa.hp, NULL, key, 0)) + { + LSQ_ERROR("cannot initialize cipher on level %u", enc_level); + goto err; + } + } + else + lsquic_qhkdf_expand(crypa.md, secret, secret_len, labels->hp, + labels->hp_len, hp->hp_u.buf[rw], key_len); + hp->hp_flags |= 1 << rw; + + if (enc_sess->esi_flags & ESI_LOG_SECRETS) + { + log_crypto_ctx(enc_sess, &pair->ykp_ctx[rw], "new", rw); + LSQ_DEBUG("%s hp: %s", rw2str[rw], + HEXSTR(hp->hp_gen_mask == gen_hp_mask_aes ? key : hp->hp_u.buf[rw], + key_len, hexbuf)); + } + + if (rw && enc_level == ENC_LEV_APP) + enc_sess->esi_have_forw = 1; + + return 1; + + err: + cleanup_crypto_ctx(&pair->ykp_ctx[0]); + cleanup_crypto_ctx(&pair->ykp_ctx[1]); + return 0; +#undef hexbuf +} + + +static int +cry_sm_set_read_secret (SSL *ssl, enum ssl_encryption_level_t level, + const SSL_CIPHER *cipher, const uint8_t *secret, size_t secret_len) +{ + return set_secret(ssl, level, cipher, secret, secret_len, 0); +} + + +static int +cry_sm_set_write_secret (SSL *ssl, enum ssl_encryption_level_t level, + const SSL_CIPHER *cipher, const uint8_t *secret, size_t secret_len) +{ + return set_secret(ssl, level, cipher, secret, secret_len, 1); +} + + +static int +cry_sm_write_message (SSL *ssl, enum ssl_encryption_level_t level, + const uint8_t *data, size_t len) +{ + struct enc_sess_iquic *enc_sess; + void *stream; + ssize_t nw; + + enc_sess = SSL_get_ex_data(ssl, s_idx); + if (!enc_sess) + return 0; + + stream = enc_sess->esi_streams[level]; + if (!stream) + return 0; + + /* The frab list logic is only applicable on the client. XXX This is + * likely to change when support for key updates is added. + */ + if (enc_sess->esi_flags & (ESI_ON_WRITE|ESI_SERVER)) + nw = enc_sess->esi_cryst_if->csi_write(stream, data, len); + else + { + LSQ_DEBUG("not in on_write event: buffer in a frab list"); + if (0 == lsquic_frab_list_write(&enc_sess->esi_frals[level], data, len)) + { + if (!lsquic_frab_list_empty(&enc_sess->esi_frals[level])) + enc_sess->esi_cryst_if->csi_wantwrite(stream, 1); + nw = len; + } + else + nw = -1; + } + + if (nw >= 0 && (size_t) nw == len) + { + enc_sess->esi_last_w = (enum enc_level) level; + LSQ_DEBUG("wrote %zu bytes to stream at encryption level %u", + len, level); + maybe_drop_SSL(enc_sess); + return 1; + } + else + { + LSQ_INFO("could not write %zu bytes: returned %zd", len, nw); + return 0; + } +} + + +static int +cry_sm_flush_flight (SSL *ssl) +{ + struct enc_sess_iquic *enc_sess; + void *stream; + unsigned level; + int s; + + enc_sess = SSL_get_ex_data(ssl, s_idx); + if (!enc_sess) + return 0; + + level = enc_sess->esi_last_w; + stream = enc_sess->esi_streams[level]; + if (!stream) + return 0; + + if (lsquic_frab_list_empty(&enc_sess->esi_frals[level])) + { + s = enc_sess->esi_cryst_if->csi_flush(stream); + return s == 0; + } + else + /* Frab list will get flushed */ /* TODO: add support for + recording flush points in frab list. */ + return 1; +} + + +static int +cry_sm_send_alert (SSL *ssl, enum ssl_encryption_level_t level, uint8_t alert) +{ + struct enc_sess_iquic *enc_sess; + + enc_sess = SSL_get_ex_data(ssl, s_idx); + if (!enc_sess) + return 0; + + LSQ_INFO("got alert %"PRIu8, alert); + enc_sess->esi_conn->cn_if->ci_tls_alert(enc_sess->esi_conn, alert); + + return 1; +} + + +static const SSL_QUIC_METHOD cry_quic_method = +{ + .set_read_secret = cry_sm_set_read_secret, + .set_write_secret = cry_sm_set_write_secret, + .add_handshake_data = cry_sm_write_message, + .flush_flight = cry_sm_flush_flight, + .send_alert = cry_sm_send_alert, +}; + + +static lsquic_stream_ctx_t * +chsk_ietf_on_new_stream (void *stream_if_ctx, struct lsquic_stream *stream) +{ + struct enc_sess_iquic *const enc_sess = stream_if_ctx; + enum enc_level enc_level; + + enc_level = enc_sess->esi_cryst_if->csi_enc_level(stream); + if (enc_level == ENC_LEV_INIT) + enc_sess->esi_cryst_if->csi_wantwrite(stream, 1); + + LSQ_DEBUG("handshake stream created successfully"); + + return stream_if_ctx; +} + + +static lsquic_stream_ctx_t * +shsk_ietf_on_new_stream (void *stream_if_ctx, struct lsquic_stream *stream) +{ + struct enc_sess_iquic *const enc_sess = stream_if_ctx; + enum enc_level enc_level; + + enc_level = enc_sess->esi_cryst_if->csi_enc_level(stream); + LSQ_DEBUG("on_new_stream called on level %u", enc_level); + + enc_sess->esi_cryst_if->csi_wantread(stream, 1); + + return stream_if_ctx; +} + + +static void +chsk_ietf_on_close (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + struct enc_sess_iquic *const enc_sess = (struct enc_sess_iquic *) ctx; + if (enc_sess && enc_sess->esi_cryst_if) + LSQ_DEBUG("crypto stream level %u is closed", + (unsigned) enc_sess->esi_cryst_if->csi_enc_level(stream)); +} + + +static const char *const ihs2str[] = { + [IHS_WANT_READ] = "want read", + [IHS_WANT_WRITE] = "want write", + [IHS_WANT_RW] = "want rw", + [IHS_STOP] = "stop", +}; + + +static void +iquic_esfi_shake_stream (enc_session_t *sess, + struct lsquic_stream *stream, const char *what) +{ + struct enc_sess_iquic *enc_sess = (struct enc_sess_iquic *)sess; + enum iquic_handshake_status st; + enum enc_level enc_level; + int write; + if (0 == (enc_sess->esi_flags & ESI_HANDSHAKE_OK)) + st = iquic_esfi_handshake(enc_sess); + else + st = iquic_esfi_post_handshake(enc_sess); + enc_level = enc_sess->esi_cryst_if->csi_enc_level(stream); + LSQ_DEBUG("enc level %s after %s: %s", lsquic_enclev2str[enc_level], what, + ihs2str[st]); + switch (st) + { + case IHS_WANT_READ: + write = !lsquic_frab_list_empty(&enc_sess->esi_frals[enc_level]); + enc_sess->esi_cryst_if->csi_wantwrite(stream, write); + enc_sess->esi_cryst_if->csi_wantread(stream, 1); + break; + case IHS_WANT_WRITE: + enc_sess->esi_cryst_if->csi_wantwrite(stream, 1); + enc_sess->esi_cryst_if->csi_wantread(stream, 0); + break; + case IHS_WANT_RW: + enc_sess->esi_cryst_if->csi_wantwrite(stream, 1); + enc_sess->esi_cryst_if->csi_wantread(stream, 1); + break; + default: + assert(st == IHS_STOP); + write = !lsquic_frab_list_empty(&enc_sess->esi_frals[enc_level]); + enc_sess->esi_cryst_if->csi_wantwrite(stream, write); + enc_sess->esi_cryst_if->csi_wantread(stream, 0); + break; + } + LSQ_DEBUG("Exit shake_stream"); + maybe_drop_SSL(enc_sess); +} + + +struct readf_ctx +{ + struct enc_sess_iquic *enc_sess; + enum enc_level enc_level; + int err; +}; + + +static size_t +readf_cb (void *ctx, const unsigned char *buf, size_t len, int fin) +{ + struct readf_ctx *const readf_ctx = (void *) ctx; + struct enc_sess_iquic *const enc_sess = readf_ctx->enc_sess; + int s; + size_t str_sz; + char str[MAX(1500 * 5, ERR_ERROR_STRING_BUF_LEN)]; + + s = SSL_provide_quic_data(enc_sess->esi_ssl, + (enum ssl_encryption_level_t) readf_ctx->enc_level, buf, len); + if (s) + { + LSQ_DEBUG("provided %zu bytes of %u-level data to SSL", len, + readf_ctx->enc_level); + str_sz = lsquic_hexdump(buf, len, str, sizeof(str)); + LSQ_DEBUG("\n%.*s", (int) str_sz, str); + return len; + } + else + { + LSQ_WARN("SSL_provide_quic_data returned false: %s", + ERR_error_string(ERR_get_error(), str)); + readf_ctx->err++; + return 0; + } +} + + +static size_t +discard_cb (void *ctx, const unsigned char *buf, size_t len, int fin) +{ + return len; +} + + +static void +chsk_ietf_on_read (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + struct enc_sess_iquic *const enc_sess = (void *) ctx; + enum enc_level enc_level = enc_sess->esi_cryst_if->csi_enc_level(stream); + struct readf_ctx readf_ctx = { enc_sess, enc_level, 0, }; + ssize_t nread; + + + if (enc_sess->esi_ssl) + { + nread = enc_sess->esi_cryst_if->csi_readf(stream, readf_cb, &readf_ctx); + if (!(nread < 0 || readf_ctx.err)) + iquic_esfi_shake_stream((enc_session_t *)enc_sess, stream, + "on_read"); + else + enc_sess->esi_conn->cn_if->ci_internal_error(enc_sess->esi_conn, + "shaking stream failed: nread: %zd, err: %d, SSL err: %"PRIu32, + nread, readf_ctx.err, ERR_get_error()); + } + else + { + /* This branch is reached when we don't want TLS ticket and drop + * the SSL object before we process TLS tickets that have been + * already received and waiting in the incoming stream buffer. + */ + nread = enc_sess->esi_cryst_if->csi_readf(stream, discard_cb, NULL); + lsquic_stream_wantread(stream, 0); + LSQ_DEBUG("no SSL object: discard %zd bytes of SSL data", nread); + } +} + + +static void +maybe_write_from_fral (struct enc_sess_iquic *enc_sess, + struct lsquic_stream *stream) +{ + enum enc_level enc_level = enc_sess->esi_cryst_if->csi_enc_level(stream); + struct frab_list *const fral = &enc_sess->esi_frals[enc_level]; + struct lsquic_reader reader = { + .lsqr_read = lsquic_frab_list_read, + .lsqr_size = lsquic_frab_list_size, + .lsqr_ctx = fral, + }; + ssize_t nw; + + if (lsquic_frab_list_empty(fral)) + return; + + nw = lsquic_stream_writef(stream, &reader); + if (nw >= 0) + { + LSQ_DEBUG("wrote %zd bytes to stream from frab list", nw); + (void) lsquic_stream_flush(stream); + if (lsquic_frab_list_empty(fral)) + lsquic_stream_wantwrite(stream, 0); + } + else + { + enc_sess->esi_conn->cn_if->ci_internal_error(enc_sess->esi_conn, + "cannot write to stream: %s", strerror(errno)); + lsquic_stream_wantwrite(stream, 0); + } +} + + +static void +chsk_ietf_on_write (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + struct enc_sess_iquic *const enc_sess = (void *) ctx; + + maybe_write_from_fral(enc_sess, stream); + + enc_sess->esi_flags |= ESI_ON_WRITE; + iquic_esfi_shake_stream(enc_sess, stream, "on_write"); + enc_sess->esi_flags &= ~ESI_ON_WRITE; +} + + +const struct lsquic_stream_if lsquic_cry_sm_if = +{ + .on_new_stream = chsk_ietf_on_new_stream, + .on_read = chsk_ietf_on_read, + .on_write = chsk_ietf_on_write, + .on_close = chsk_ietf_on_close, +}; + + +const struct lsquic_stream_if lsquic_mini_cry_sm_if = +{ + .on_new_stream = shsk_ietf_on_new_stream, + .on_read = chsk_ietf_on_read, + .on_write = chsk_ietf_on_write, + .on_close = chsk_ietf_on_close, +}; + + + + +const unsigned char *const lsquic_retry_key_buf[N_IETF_RETRY_VERSIONS] = +{ + /* [draft-ietf-quic-tls-25] Section 5.8 */ + (unsigned char *) + "\x4d\x32\xec\xdb\x2a\x21\x33\xc8\x41\xe4\x04\x3d\xf2\x7d\x44\x30", + /* [draft-ietf-quic-tls-29] Section 5.8 */ + (unsigned char *) + "\xcc\xce\x18\x7e\xd0\x9a\x09\xd0\x57\x28\x15\x5a\x6c\xb9\x6b\xe1", + /* [draft-ietf-quic-tls-33] Section 5.8 */ + (unsigned char *) + "\xbe\x0c\x69\x0b\x9f\x66\x57\x5a\x1d\x76\x6b\x54\xe3\x68\xc8\x4e", + /* [draft-draft-ietf-quic-v2] Section 3.3.3 */ + (unsigned char *) + "\x8f\xb4\xb0\x1b\x56\xac\x48\xe2\x60\xfb\xcb\xce\xad\x7c\xcc\x92", +}; + + +const unsigned char *const lsquic_retry_nonce_buf[N_IETF_RETRY_VERSIONS] = +{ + /* [draft-ietf-quic-tls-25] Section 5.8 */ + (unsigned char *) "\x4d\x16\x11\xd0\x55\x13\xa5\x52\xc5\x87\xd5\x75", + /* [draft-ietf-quic-tls-29] Section 5.8 */ + (unsigned char *) "\xe5\x49\x30\xf9\x7f\x21\x36\xf0\x53\x0a\x8c\x1c", + /* [draft-ietf-quic-tls-33] Section 5.8 */ + (unsigned char *) "\x46\x15\x99\xd3\x5d\x63\x2b\xf2\x23\x98\x25\xbb", + /* [draft-draft-ietf-quic-v2] Section 3.3.3 */ + (unsigned char *) "\xd8\x69\x69\xbc\x2d\x7c\x6d\x99\x90\xef\xb0\x4a", +}; + + +int +lsquic_enc_sess_ietf_gen_quic_ctx ( + const struct lsquic_engine_settings *settings, + enum lsquic_version version, unsigned char *buf, size_t bufsz) +{ + struct transport_params params; + int len; + + /* This code is pretty much copied from gen_trans_params(), with + * small (but important) exceptions. + */ + + memset(¶ms, 0, sizeof(params)); + params.tp_init_max_data = settings->es_init_max_data; + params.tp_init_max_stream_data_bidi_local + = settings->es_init_max_stream_data_bidi_local; + params.tp_init_max_stream_data_bidi_remote + = settings->es_init_max_stream_data_bidi_remote; + params.tp_init_max_stream_data_uni + = settings->es_init_max_stream_data_uni; + params.tp_init_max_streams_uni + = settings->es_init_max_streams_uni; + params.tp_init_max_streams_bidi + = settings->es_init_max_streams_bidi; + params.tp_ack_delay_exponent + = TP_DEF_ACK_DELAY_EXP; + params.tp_max_idle_timeout = settings->es_idle_timeout * 1000; + params.tp_max_ack_delay = TP_DEF_MAX_ACK_DELAY; + params.tp_active_connection_id_limit = MAX_IETF_CONN_DCIDS; + params.tp_set |= (1 << TPI_INIT_MAX_DATA) + | (1 << TPI_INIT_MAX_STREAM_DATA_BIDI_LOCAL) + | (1 << TPI_INIT_MAX_STREAM_DATA_BIDI_REMOTE) + | (1 << TPI_INIT_MAX_STREAM_DATA_UNI) + | (1 << TPI_INIT_MAX_STREAMS_UNI) + | (1 << TPI_INIT_MAX_STREAMS_BIDI) + | (1 << TPI_ACK_DELAY_EXPONENT) + | (1 << TPI_MAX_IDLE_TIMEOUT) + | (1 << TPI_MAX_ACK_DELAY) + | (1 << TPI_ACTIVE_CONNECTION_ID_LIMIT) + ; + if (settings->es_max_udp_payload_size_rx) + { + params.tp_max_udp_payload_size = settings->es_max_udp_payload_size_rx; + params.tp_set |= 1 << TPI_MAX_UDP_PAYLOAD_SIZE; + } + if (!settings->es_allow_migration) + params.tp_set |= 1 << TPI_DISABLE_ACTIVE_MIGRATION; + if (settings->es_ql_bits) + { + params.tp_loss_bits = settings->es_ql_bits - 1; + params.tp_set |= 1 << TPI_LOSS_BITS; + } + if (settings->es_delayed_acks) + { + params.tp_numerics[TPI_MIN_ACK_DELAY] = TP_MIN_ACK_DELAY; + params.tp_set |= 1 << TPI_MIN_ACK_DELAY; + params.tp_numerics[TPI_MIN_ACK_DELAY_02] = TP_MIN_ACK_DELAY; + params.tp_set |= 1 << TPI_MIN_ACK_DELAY_02; + } + if (settings->es_timestamps) + { + params.tp_numerics[TPI_TIMESTAMPS] = TS_GENERATE_THEM; + params.tp_set |= 1 << TPI_TIMESTAMPS; + } + if (settings->es_datagrams) + { + if (params.tp_set & (1 << TPI_MAX_UDP_PAYLOAD_SIZE)) + params.tp_numerics[TPI_MAX_DATAGRAM_FRAME_SIZE] + = params.tp_max_udp_payload_size; + else + params.tp_numerics[TPI_MAX_DATAGRAM_FRAME_SIZE] + = TP_DEF_MAX_UDP_PAYLOAD_SIZE; + params.tp_set |= 1 << TPI_MAX_DATAGRAM_FRAME_SIZE; + } + + params.tp_set &= SERVER_0RTT_TPS; + + len = (version == LSQVER_ID27 ? lsquic_tp_encode_27 : lsquic_tp_encode)( + ¶ms, 1, buf, bufsz); + if (len >= 0) + { + char str[MAX_TP_STR_SZ]; + LSQ_LOG1(LSQ_LOG_DEBUG, "generated QUIC server context of %d bytes " + "for version %s", len, lsquic_ver2str[version]); + LSQ_LOG1(LSQ_LOG_DEBUG, "%s", ((version == LSQVER_ID27 + ? lsquic_tp_to_str_27 : lsquic_tp_to_str)(¶ms, str, + sizeof(str)), str)); + } + else + LSQ_LOG1(LSQ_LOG_WARN, "cannot generate QUIC server context: %d", + errno); + return len; +} + + +struct lsquic_conn * +lsquic_ssl_to_conn (const struct ssl_st *ssl) +{ + struct enc_sess_iquic *enc_sess; + + if (s_idx < 0) + return NULL; + + enc_sess = SSL_get_ex_data(ssl, s_idx); + if (!enc_sess) + return NULL; + + return enc_sess->esi_conn; +} + + +int +lsquic_ssl_sess_to_resume_info (SSL *ssl, SSL_SESSION *session, + unsigned char **buf, size_t *buf_sz) +{ + struct enc_sess_iquic *enc_sess; + int status; + + if (s_idx < 0) + return -1; + + enc_sess = SSL_get_ex_data(ssl, s_idx); + if (!enc_sess) + return -1; + + status = iquic_ssl_sess_to_resume_info(enc_sess, ssl, session, buf, buf_sz); + if (status == 0) + { + LSQ_DEBUG("%s called successfully, unset WANT_TICKET flag", __func__); + enc_sess->esi_flags &= ~ESI_WANT_TICKET; + lsquic_alarmset_unset(enc_sess->esi_alset, AL_SESS_TICKET); + } + return status; +} diff --git a/external/lsquic/src/liblsquic/lsquic_eng_hist.c b/external/lsquic/src/liblsquic/lsquic_eng_hist.c new file mode 100644 index 0000000..d8abf7f --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_eng_hist.c @@ -0,0 +1,58 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#ifdef WIN32 +#include +#define localtime_r(a,b) localtime_s(b,a) +#endif + +#include "lsquic_eng_hist.h" + +#if ENG_HIST_ENABLED + +#define LSQUIC_LOGGER_MODULE LSQLM_ENG_HIST +#include "lsquic_types.h" +#include "lsquic_logger.h" + + +static void +log_hist_slice (const struct hist_slice *slice, time_t t) +{ + size_t strftime(char *s, size_t max, const char *format, + const struct tm *tm); + if (slice->sl_packets_in == 0 && + slice->sl_packets_out == 0 && + slice->sl_del_mini_conns == 0 && + slice->sl_del_full_conns == 0) + return; + + struct tm tm; + char timestr[sizeof("12:00:00")]; + + localtime_r(&t, &tm); + strftime(timestr, sizeof(timestr), "%T", &tm); + + LSQ_DEBUG("%s: pi: %u; po: %u; +mc: %u; -mc: %u; +fc: %u; -fc: %u", + timestr, + slice->sl_packets_in, + slice->sl_packets_out, + slice->sl_new_mini_conns, + slice->sl_del_mini_conns, + slice->sl_new_full_conns, + slice->sl_del_full_conns); +} + + +void +lsquic_eng_hist_log (const struct eng_hist *hist) +{ + unsigned i, idx; + time_t t0 = time(NULL) - ENG_HIST_NELEMS + 1; + for (i = 0; i < ENG_HIST_NELEMS; ++i) + { + idx = (hist->eh_prev_idx + i + 1) & (ENG_HIST_NELEMS - 1); + if (i >= ENG_HIST_NELEMS - ENG_HIST_N_TO_PRINT) + log_hist_slice(&hist->eh_slices[idx], t0 + i); + } +} + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_eng_hist.h b/external/lsquic/src/liblsquic/lsquic_eng_hist.h new file mode 100644 index 0000000..0e9ccf1 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_eng_hist.h @@ -0,0 +1,105 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_eng_hist.h - Engine history. + * + * Keep track of new and destroyed connections, packets in and packets out. + */ + +#ifndef LSQUIC_ENG_HIST +#define LSQUIC_ENG_HIST + +#include "lsquic_int_types.h" + +#define ENG_HIST_ENABLED 1 + +#define ENG_HIST_BITS 2 +#define ENG_HIST_NELEMS (1 << ENG_HIST_BITS) + +#ifndef ENG_HIST_N_TO_PRINT + /* By default, we do not print the whole history every second just + * the latest entry. + */ +# define ENG_HIST_N_TO_PRINT 1 +#endif + + +/* Keeps history per slice of time -- one second */ +struct hist_slice +{ + unsigned sl_packets_in, + sl_packets_out, + sl_new_full_conns, + sl_new_mini_conns, + sl_del_full_conns, + sl_del_mini_conns; +}; + + +struct eng_hist +{ + struct hist_slice eh_slices[ENG_HIST_NELEMS]; + unsigned eh_cur_idx, + eh_prev_idx; +}; + + +#if ENG_HIST_ENABLED +#include + +/* Initialize engine history */ +static inline void +eng_hist_init (struct eng_hist *eh) +{ + memset(eh, 0, sizeof(*eh)); + eh->eh_cur_idx = eh->eh_prev_idx = + time(NULL) & (ENG_HIST_NELEMS - 1); +} + + +/* Clear slice at current index */ +static inline void +eng_hist_clear_cur (struct eng_hist *eh) +{ + memset(&eh->eh_slices[eh->eh_cur_idx], 0, + sizeof(struct hist_slice)); +} + + +void +lsquic_eng_hist_log (const struct eng_hist *); + + +/* Switch to next slice if necessary */ +static inline void +eng_hist_tick (struct eng_hist *eh, lsquic_time_t now) +{ + if (0 == (now)) + eh->eh_cur_idx = time(NULL) & (ENG_HIST_NELEMS - 1); + else + eh->eh_cur_idx = ((now) / 1000000) & (ENG_HIST_NELEMS - 1); + if (eh->eh_cur_idx != eh->eh_prev_idx) + { + lsquic_eng_hist_log(eh); + eng_hist_clear_cur(eh); + eh->eh_prev_idx = eh->eh_cur_idx; + } +} + + +/* Increment element `what'. Slice increment is handled in this macro, too. */ +#define eng_hist_inc(eh, now, what) do { \ + eng_hist_tick(eh, now); \ + ++(eh)->eh_slices[(eh)->eh_cur_idx].what; \ +} while (0) + +#else /* !ENG_HIST_ENABLED */ + +#define eng_hist_init(eh) +#define eng_hist_clear_cur(eh) +#define eng_hist_tick(eh, now) +#define eng_hist_inc(eh, now, what) +#define lsquic_eng_hist_log(eh) + +#endif /* ENG_HIST_ENABLED */ + +#endif /* LSQUIC_ENG_HIST */ diff --git a/external/lsquic/src/liblsquic/lsquic_engine.c b/external/lsquic/src/liblsquic/lsquic_engine.c new file mode 100644 index 0000000..8477810 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_engine.c @@ -0,0 +1,3626 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* Copyright (c) 2017 - 2023 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_engine.c - QUIC engine + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#include +#include +#include +#include +#include +#include +#endif + +#ifndef NDEBUG +#include +#endif + +#if defined(WIN32) || defined(NDEBUG) +#define CAN_LOSE_PACKETS 0 +#else +#define CAN_LOSE_PACKETS 1 +#endif + +#if CAN_LOSE_PACKETS +#include /* For code that loses packets */ +#endif + +#if LOG_PACKET_CHECKSUM +#include +#endif + +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_sizes.h" +#include "lsquic_parse_common.h" +#include "lsquic_parse.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_senhist.h" +#include "lsquic_rtt.h" +#include "lsquic_cubic.h" +#include "lsquic_pacer.h" +#include "lsquic_bw_sampler.h" +#include "lsquic_minmax.h" +#include "lsquic_bbr.h" +#include "lsquic_adaptive_cc.h" +#include "lsquic_set.h" +#include "lsquic_conn_flow.h" +#include "lsquic_sfcw.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_full_conn.h" +#include "lsquic_util.h" +#include "lsquic_qtags.h" +#include "lsquic_enc_sess.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_eng_hist.h" +#include "lsquic_ev_log.h" +#include "lsquic_version.h" +#include "lsquic_pr_queue.h" +#include "lsquic_mini_conn.h" +#include "lsquic_trechist.h" +#include "lsquic_mini_conn_ietf.h" +#include "lsquic_stock_shi.h" +#include "lsquic_purga.h" +#include "lsquic_tokgen.h" +#include "lsquic_attq.h" +#include "lsquic_min_heap.h" +#include "lsquic_http1x_if.h" +#include "lsquic_handshake.h" +#include "lsquic_crand.h" +#include "lsquic_ietf.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_ENGINE +#include "lsquic_logger.h" + +#ifndef LSQUIC_DEBUG_NEXT_ADV_TICK +#define LSQUIC_DEBUG_NEXT_ADV_TICK 1 +#endif + +#if LSQUIC_DEBUG_NEXT_ADV_TICK || LSQUIC_CONN_STATS +#include "lsquic_alarmset.h" +#endif + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define MAX(a, b) ((a) > (b) ? (a) : (b)) + +/* The batch of outgoing packets grows and shrinks dynamically */ +/* Batch sizes do not have to be powers of two */ +#define MAX_OUT_BATCH_SIZE 1024 +#define MIN_OUT_BATCH_SIZE 4 +#define INITIAL_OUT_BATCH_SIZE 32 + +struct out_batch +{ + lsquic_conn_t *conns [MAX_OUT_BATCH_SIZE]; + struct lsquic_out_spec outs [MAX_OUT_BATCH_SIZE]; + unsigned pack_off[MAX_OUT_BATCH_SIZE]; + lsquic_packet_out_t *packets[MAX_OUT_BATCH_SIZE * 2]; + struct iovec iov [MAX_OUT_BATCH_SIZE * 2]; +}; + +typedef struct lsquic_conn * (*conn_iter_f)(struct lsquic_engine *); + +static void +process_connections (struct lsquic_engine *engine, conn_iter_f iter, + lsquic_time_t now); + +static void +engine_incref_conn (lsquic_conn_t *conn, enum lsquic_conn_flags flag); + +static lsquic_conn_t * +engine_decref_conn (lsquic_engine_t *engine, lsquic_conn_t *conn, + enum lsquic_conn_flags flag); + +static void +force_close_conn (lsquic_engine_t *engine, lsquic_conn_t *conn); + +#if LSQUIC_CONN_STATS +static void +update_busy_detector (struct lsquic_engine *, struct lsquic_conn *, int); +#endif + +#if LSQUIC_COUNT_ENGINE_CALLS +#define ENGINE_CALLS_INCR(e) do { ++(e)->n_engine_calls; } while (0) +#else +#define ENGINE_CALLS_INCR(e) +#endif + +/* Nested calls to some LSQUIC functions are not supported. Functions that + * iterate over connections cannot be nested. + */ +#define ENGINE_IN(e) do { \ + assert(!((e)->pub.enp_flags & ENPUB_PROC)); \ + (e)->pub.enp_flags |= ENPUB_PROC; \ + ENGINE_CALLS_INCR(e); \ +} while (0) + +#define ENGINE_OUT(e) do { \ + assert((e)->pub.enp_flags & ENPUB_PROC); \ + (e)->pub.enp_flags &= ~ENPUB_PROC; \ +} while (0) + +/* A connection can be referenced from one of six places: + * + * 1. A hash is used to find connections in order to dispatch an incoming + * packet. Connections can be hashed by CIDs or by address. In the + * former case, each connection has one or more mappings in the hash + * table. IETF QUIC connections have up to eight (in our implementation) + * source CIDs and each of those would have a mapping. In client mode, + * depending on QUIC versions and options selected, it is may be + * necessary to hash connections by address, in which case incoming + * packets are delivered to connections based on the address. + * + * 2. Outgoing queue. + * + * 3. Tickable queue + * + * 4. Advisory Tick Time queue. + * + * 5. Closing connections queue. This is a transient queue -- it only + * exists for the duration of process_connections() function call. + * + * 6. Ticked connections queue. Another transient queue, similar to (5). + * + * The idea is to destroy the connection when it is no longer referenced. + * For example, a connection tick may return TICK_SEND|TICK_CLOSE. In + * that case, the connection is referenced from two places: (2) and (5). + * After its packets are sent, it is only referenced in (5), and at the + * end of the function call, when it is removed from (5), reference count + * goes to zero and the connection is destroyed. If not all packets can + * be sent, at the end of the function call, the connection is referenced + * by (2) and will only be removed once all outgoing packets have been + * sent. + */ +#define CONN_REF_FLAGS (LSCONN_HASHED \ + |LSCONN_HAS_OUTGOING \ + |LSCONN_TICKABLE \ + |LSCONN_TICKED \ + |LSCONN_CLOSING \ + |LSCONN_ATTQ) + + + + +struct cid_update_batch +{ + lsquic_cids_update_f cub_update_cids; + void *cub_update_ctx; + unsigned cub_count; + lsquic_cid_t cub_cids[20]; + void *cub_peer_ctxs[20]; +}; + +static void +cub_init (struct cid_update_batch *, lsquic_cids_update_f, void *); + + +struct lsquic_engine +{ + struct lsquic_engine_public pub; + enum { + ENG_SERVER = LSENG_SERVER, + ENG_HTTP = LSENG_HTTP, + ENG_COOLDOWN = (1 << 7), /* Cooldown: no new connections */ + ENG_PAST_DEADLINE + = (1 << 8), /* Previous call to a processing + * function went past time threshold. + */ + ENG_CONNS_BY_ADDR + = (1 << 9), /* Connections are hashed by address */ + ENG_FORCE_RETRY = (1 << 10), /* Will force retry packets to be sent */ +#ifndef NDEBUG + ENG_COALESCE = (1 << 24), /* Packet coalescing is enabled */ +#endif +#if CAN_LOSE_PACKETS + ENG_LOSE_PACKETS= (1 << 25), /* Lose *some* outgoing packets */ +#endif +#ifndef NDEBUG + ENG_DTOR = (1 << 26), /* Engine destructor */ +#endif + } flags; + lsquic_packets_out_f packets_out; + void *packets_out_ctx; + lsquic_cids_update_f report_new_scids; + lsquic_cids_update_f report_live_scids; + lsquic_cids_update_f report_old_scids; + void *scids_ctx; + struct lsquic_hash *conns_hash; + struct min_heap conns_tickable; + struct min_heap conns_out; + struct eng_hist history; + unsigned batch_size; + unsigned min_batch_size, max_batch_size; + struct lsquic_conn *curr_conn; + struct pr_queue *pr_queue; + struct attq *attq; + /* Track time last time a packet was sent to give new connections + * priority lower than that of existing connections. + */ + lsquic_time_t last_sent; +#if CAN_LOSE_PACKETS + regex_t lose_packets_re; + const char *lose_packets_str; +#endif + unsigned n_conns; + lsquic_time_t deadline; + lsquic_time_t resume_sending_at; + lsquic_time_t mem_logged_last; + unsigned mini_conns_count; + struct lsquic_purga *purga; +#if LSQUIC_CONN_STATS + struct { + unsigned conns; + } stats; + struct conn_stats conn_stats_sum; + FILE *stats_fh; +#endif + struct cid_update_batch new_scids; + struct out_batch out_batch; +#if LSQUIC_COUNT_ENGINE_CALLS + unsigned long n_engine_calls; +#endif +#if LSQUIC_DEBUG_NEXT_ADV_TICK + uintptr_t last_logged_conn; + unsigned last_logged_ae_why; + int last_tick_diff; +#endif + struct crand crand; + EVP_AEAD_CTX retry_aead_ctx[N_IETF_RETRY_VERSIONS]; +#if LSQUIC_CONN_STATS + struct { + uint16_t immed_ticks; /* bitmask */ +#define MAX_IMMED_TICKS UINT16_MAX + struct lsquic_conn *last_conn, /* from last call */ + *pin_conn, /* last connection with packet in */ + *current; /* currently busy connection */ + lsquic_time_t last_log; + } busy; +#endif +}; + + +void +lsquic_engine_init_settings (struct lsquic_engine_settings *settings, + unsigned flags) +{ + memset(settings, 0, sizeof(*settings)); + settings->es_versions = LSQUIC_DF_VERSIONS; + if (flags & ENG_SERVER) + { + settings->es_cfcw = LSQUIC_DF_CFCW_SERVER; + settings->es_sfcw = LSQUIC_DF_SFCW_SERVER; + settings->es_support_srej= LSQUIC_DF_SUPPORT_SREJ_SERVER; + settings->es_init_max_data + = LSQUIC_DF_INIT_MAX_DATA_SERVER; + settings->es_init_max_stream_data_bidi_remote + = LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_REMOTE_SERVER; + settings->es_init_max_stream_data_bidi_local + = LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_LOCAL_SERVER; + settings->es_init_max_stream_data_uni + = LSQUIC_DF_INIT_MAX_STREAM_DATA_UNI_SERVER; + settings->es_init_max_streams_uni + = LSQUIC_DF_INIT_MAX_STREAMS_UNI_SERVER; + settings->es_ping_period = 0; + settings->es_noprogress_timeout + = LSQUIC_DF_NOPROGRESS_TIMEOUT_SERVER; +#if LSQUIC_WEBTRANSPORT_SERVER_SUPPORT + settings->es_webtransport_server = LSQUIC_DF_WEBTRANSPORT_SERVER; + settings->es_max_webtransport_server_streams = LSQUIC_DF_MAX_WEBTRANSPORT_SERVER_STREAMS; +#endif + } + else + { + settings->es_cfcw = LSQUIC_DF_CFCW_CLIENT; + settings->es_sfcw = LSQUIC_DF_SFCW_CLIENT; + settings->es_support_srej= LSQUIC_DF_SUPPORT_SREJ_CLIENT; + settings->es_init_max_data + = LSQUIC_DF_INIT_MAX_DATA_CLIENT; + settings->es_init_max_stream_data_bidi_remote + = LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_REMOTE_CLIENT; + settings->es_init_max_stream_data_bidi_local + = LSQUIC_DF_INIT_MAX_STREAM_DATA_BIDI_LOCAL_CLIENT; + settings->es_init_max_stream_data_uni + = LSQUIC_DF_INIT_MAX_STREAM_DATA_UNI_CLIENT; + settings->es_init_max_streams_uni + = LSQUIC_DF_INIT_MAX_STREAMS_UNI_CLIENT; + settings->es_ping_period = LSQUIC_DF_PING_PERIOD; + settings->es_noprogress_timeout + = LSQUIC_DF_NOPROGRESS_TIMEOUT_CLIENT; + } + settings->es_max_streams_in = LSQUIC_DF_MAX_STREAMS_IN; + settings->es_idle_conn_to = LSQUIC_DF_IDLE_CONN_TO; + settings->es_idle_timeout = LSQUIC_DF_IDLE_TIMEOUT; + settings->es_handshake_to = LSQUIC_DF_HANDSHAKE_TO; + settings->es_silent_close = LSQUIC_DF_SILENT_CLOSE; + settings->es_max_header_list_size + = LSQUIC_DF_MAX_HEADER_LIST_SIZE; + settings->es_ua = LSQUIC_DF_UA; + settings->es_ecn = LSQUIC_DF_ECN; + + settings->es_pdmd = QTAG_X509; + settings->es_aead = QTAG_AESG; + settings->es_kexs = QTAG_C255; + settings->es_support_push = LSQUIC_DF_SUPPORT_PUSH; + settings->es_support_tcid0 = LSQUIC_DF_SUPPORT_TCID0; + settings->es_support_nstp = LSQUIC_DF_SUPPORT_NSTP; + settings->es_honor_prst = LSQUIC_DF_HONOR_PRST; + settings->es_progress_check = LSQUIC_DF_PROGRESS_CHECK; + settings->es_rw_once = LSQUIC_DF_RW_ONCE; + settings->es_proc_time_thresh= LSQUIC_DF_PROC_TIME_THRESH; + settings->es_pace_packets = LSQUIC_DF_PACE_PACKETS; + settings->es_clock_granularity = LSQUIC_DF_CLOCK_GRANULARITY; + settings->es_max_inchoate = LSQUIC_DF_MAX_INCHOATE; + settings->es_send_prst = LSQUIC_DF_SEND_PRST; + settings->es_sttl = LSQUIC_DF_STTL; + settings->es_init_max_streams_bidi + = LSQUIC_DF_INIT_MAX_STREAMS_BIDI; + settings->es_scid_len = LSQUIC_DF_SCID_LEN; + settings->es_scid_iss_rate = LSQUIC_DF_SCID_ISS_RATE; + settings->es_qpack_dec_max_size = LSQUIC_DF_QPACK_DEC_MAX_SIZE; + settings->es_qpack_dec_max_blocked = LSQUIC_DF_QPACK_DEC_MAX_BLOCKED; + settings->es_qpack_enc_max_size = LSQUIC_DF_QPACK_ENC_MAX_SIZE; + settings->es_qpack_enc_max_blocked = LSQUIC_DF_QPACK_ENC_MAX_BLOCKED; + settings->es_allow_migration = LSQUIC_DF_ALLOW_MIGRATION; + settings->es_retry_token_duration = LSQUIC_DF_RETRY_TOKEN_DURATION; + settings->es_ql_bits = LSQUIC_DF_QL_BITS; + settings->es_spin = LSQUIC_DF_SPIN; + settings->es_delayed_acks = LSQUIC_DF_DELAYED_ACKS; + settings->es_timestamps = LSQUIC_DF_TIMESTAMPS; + settings->es_grease_quic_bit = LSQUIC_DF_GREASE_QUIC_BIT; + settings->es_mtu_probe_timer = LSQUIC_DF_MTU_PROBE_TIMER; + settings->es_dplpmtud = LSQUIC_DF_DPLPMTUD; + settings->es_cc_algo = LSQUIC_DF_CC_ALGO; + settings->es_cc_rtt_thresh = LSQUIC_DF_CC_RTT_THRESH; + settings->es_optimistic_nat = LSQUIC_DF_OPTIMISTIC_NAT; + settings->es_ext_http_prio = LSQUIC_DF_EXT_HTTP_PRIO; + settings->es_ptpc_periodicity= LSQUIC_DF_PTPC_PERIODICITY; + settings->es_ptpc_max_packtol= LSQUIC_DF_PTPC_MAX_PACKTOL; + settings->es_ptpc_dyn_target = LSQUIC_DF_PTPC_DYN_TARGET; + settings->es_ptpc_target = LSQUIC_DF_PTPC_TARGET; + settings->es_ptpc_prop_gain = LSQUIC_DF_PTPC_PROP_GAIN; + settings->es_ptpc_int_gain = LSQUIC_DF_PTPC_INT_GAIN; + settings->es_ptpc_err_thresh = LSQUIC_DF_PTPC_ERR_THRESH; + settings->es_ptpc_err_divisor= LSQUIC_DF_PTPC_ERR_DIVISOR; + settings->es_delay_onclose = LSQUIC_DF_DELAY_ONCLOSE; + settings->es_check_tp_sanity = LSQUIC_DF_CHECK_TP_SANITY; + settings->es_amp_factor = LSQUIC_DF_AMP_FACTOR; + settings->es_send_verneg = LSQUIC_DF_SEND_VERNEG; +} + + +/* Note: if returning an error, err_buf must be valid if non-NULL */ +int +lsquic_engine_check_settings (const struct lsquic_engine_settings *settings, + unsigned flags, + char *err_buf, size_t err_buf_sz) +{ + if (settings->es_cfcw < LSQUIC_MIN_FCW || + settings->es_sfcw < LSQUIC_MIN_FCW) + { + if (err_buf) + snprintf(err_buf, err_buf_sz, "%s", + "flow control window set too low"); + return -1; + } + if (0 == (settings->es_versions & LSQUIC_SUPPORTED_VERSIONS)) + { + if (err_buf) + snprintf(err_buf, err_buf_sz, "%s", + "No supported QUIC versions specified"); + return -1; + } + if (settings->es_versions & ~LSQUIC_SUPPORTED_VERSIONS) + { + if (err_buf) + snprintf(err_buf, err_buf_sz, "%s", + "one or more unsupported QUIC version is specified"); + return -1; + } + if (flags & ENG_SERVER) + { + if (settings->es_handshake_to > + MAX_MINI_CONN_LIFESPAN_IN_USEC) + { + if (err_buf) + snprintf(err_buf, err_buf_sz, "handshake timeout %lu" + " usec is too large. The maximum for server is %u usec", + settings->es_handshake_to, MAX_MINI_CONN_LIFESPAN_IN_USEC); + return -1; + } + } + if (settings->es_idle_timeout > 600) + { + if (err_buf) + snprintf(err_buf, err_buf_sz, "%s", + "The maximum value of idle timeout is 600 seconds"); + return -1; + } + if (settings->es_scid_len > MAX_CID_LEN) + { + if (err_buf) + snprintf(err_buf, err_buf_sz, "Source connection ID cannot be %u " + "bytes long; it must be between 0 and %u.", + settings->es_scid_len, MAX_CID_LEN); + return -1; + } + + if (settings->es_cc_algo > 3) + { + if (err_buf) + snprintf(err_buf, err_buf_sz, "Invalid congestion control " + "algorithm value %u", settings->es_cc_algo); + return -1; + } + + if (!(settings->es_ql_bits >= 0 && settings->es_ql_bits <= 2)) + { + if (err_buf) + snprintf(err_buf, err_buf_sz, "Invalid QL bits value %d ", + settings->es_ql_bits); + return -1; + } + + if (!(settings->es_spin == 0 || settings->es_spin == 1)) + { + if (err_buf) + snprintf(err_buf, err_buf_sz, "Invalid spin value %d", + settings->es_spin); + return -1; + } + + if (settings->es_mtu_probe_timer && settings->es_mtu_probe_timer < 1000) + { + if (err_buf) + snprintf(err_buf, err_buf_sz, "mtu probe timer is too small: " + "%u ms", settings->es_mtu_probe_timer); + return -1; + } + + if (settings->es_max_batch_size > MAX_OUT_BATCH_SIZE) + { + if (err_buf) + snprintf(err_buf, err_buf_sz, "max batch size is greater than " + "the allowed maximum of %u", (unsigned) MAX_OUT_BATCH_SIZE); + return -1; + } +#if LSQUIC_WEBTRANSPORT_SERVER_SUPPORT + if(settings->es_webtransport_server) + { + if(!(flags & ENG_SERVER)) + { + if (err_buf) + snprintf(err_buf, err_buf_sz, "server webtransport support enabled, but " + "ENG_SERVER flag is not set"); + return -1; + } + + if(settings->es_max_webtransport_server_streams == 0) + { + if (err_buf) + snprintf(err_buf, err_buf_sz, "server webtransport support enabled, but " + "webtransport sessions count is 0"); + return -1; + } + } +#endif + return 0; +} + + +static void +free_packet (void *ctx, void *conn_ctx, void *packet_data, char is_ipv6) +{ + free(packet_data); +} + + +static void * +malloc_buf (void *ctx, void *peer_ctx, lsquic_conn_ctx_t *conn_ctx, unsigned short size, char is_ipv6) +{ + return malloc(size); +} + + +static const struct lsquic_packout_mem_if stock_pmi = +{ + malloc_buf, free_packet, free_packet, +}; + + +static int +hash_conns_by_addr (const struct lsquic_engine *engine) +{ + if (engine->flags & ENG_SERVER) + return 0; + if (engine->pub.enp_settings.es_versions & LSQUIC_FORCED_TCID0_VERSIONS) + return 1; + if ((engine->pub.enp_settings.es_versions & LSQUIC_GQUIC_HEADER_VERSIONS) + && engine->pub.enp_settings.es_support_tcid0) + return 1; + if (engine->pub.enp_settings.es_scid_len == 0) + return 1; + return 0; +} + + +lsquic_engine_t * +lsquic_engine_new (unsigned flags, + const struct lsquic_engine_api *api) +{ + lsquic_engine_t *engine; + size_t alpn_len; + unsigned i; + char err_buf[100]; + uint64_t seed; + + if (!api->ea_packets_out) + { + LSQ_ERROR("packets_out callback is not specified"); + return NULL; + } + + if (!api->ea_stream_if) + { + LSQ_ERROR("stream interface is not specified"); + return NULL; + } + + if (!(flags & LSENG_HTTP) && api->ea_alpn) + { + alpn_len = strlen(api->ea_alpn); + if (alpn_len < 1 || alpn_len > 255) + { + LSQ_ERROR("ALPN string length invalid: %zd bytes", alpn_len); + return NULL; + } + } + else + alpn_len = 0; + + if (api->ea_settings && + 0 != lsquic_engine_check_settings(api->ea_settings, flags, + err_buf, sizeof(err_buf))) + { + LSQ_ERROR("cannot create engine: %s", err_buf); + return NULL; + } + + engine = calloc(1, sizeof(*engine)); + if (!engine) + return NULL; + if (0 != lsquic_mm_init(&engine->pub.enp_mm)) + { + free(engine); + return NULL; + } + if (api->ea_settings) + engine->pub.enp_settings = *api->ea_settings; + else + lsquic_engine_init_settings(&engine->pub.enp_settings, flags); + int tag_buf_len; + tag_buf_len = lsquic_gen_ver_tags(engine->pub.enp_ver_tags_buf, + sizeof(engine->pub.enp_ver_tags_buf), + engine->pub.enp_settings.es_versions); + if (tag_buf_len <= 0) + { + LSQ_ERROR("cannot generate version tags buffer"); + free(engine); + return NULL; + } + engine->pub.enp_ver_tags_len = tag_buf_len; + engine->pub.enp_flags = ENPUB_CAN_SEND; + engine->pub.enp_stream_if = api->ea_stream_if; + engine->pub.enp_stream_if_ctx = api->ea_stream_if_ctx; + + engine->flags = flags; +#ifndef NDEBUG + engine->flags |= ENG_COALESCE; +#endif + engine->packets_out = api->ea_packets_out; + engine->packets_out_ctx = api->ea_packets_out_ctx; + engine->report_new_scids = api->ea_new_scids; + engine->report_live_scids = api->ea_live_scids; + engine->report_old_scids = api->ea_old_scids; + engine->scids_ctx = api->ea_cids_update_ctx; + cub_init(&engine->new_scids, engine->report_new_scids, engine->scids_ctx); + engine->pub.enp_lookup_cert = api->ea_lookup_cert; + engine->pub.enp_cert_lu_ctx = api->ea_cert_lu_ctx; + engine->pub.enp_get_ssl_ctx = api->ea_get_ssl_ctx; + + if (api->ea_generate_scid) + { + engine->pub.enp_generate_scid = api->ea_generate_scid; + engine->pub.enp_gen_scid_ctx = api->ea_gen_scid_ctx; + } + else + engine->pub.enp_generate_scid = lsquic_generate_scid; + + if (api->ea_shi) + { + engine->pub.enp_shi = api->ea_shi; + engine->pub.enp_shi_ctx = api->ea_shi_ctx; + } + else + { + engine->pub.enp_shi = &stock_shi; + engine->pub.enp_shi_ctx = lsquic_stock_shared_hash_new(); + if (!engine->pub.enp_shi_ctx) + { + free(engine); + return NULL; + } + } + if (api->ea_hsi_if) + { + engine->pub.enp_hsi_if = api->ea_hsi_if; + engine->pub.enp_hsi_ctx = api->ea_hsi_ctx; + } + else + { + engine->pub.enp_hsi_if = lsquic_http1x_if; + engine->pub.enp_hsi_ctx = NULL; + } + if (api->ea_pmi) + { + engine->pub.enp_pmi = api->ea_pmi; + engine->pub.enp_pmi_ctx = api->ea_pmi_ctx; + } + else + { + engine->pub.enp_pmi = &stock_pmi; + engine->pub.enp_pmi_ctx = NULL; + } + engine->pub.enp_verify_cert = api->ea_verify_cert; + engine->pub.enp_verify_ctx = api->ea_verify_ctx; + engine->pub.enp_engine = engine; + if (hash_conns_by_addr(engine)) + engine->flags |= ENG_CONNS_BY_ADDR; + engine->conns_hash = lsquic_hash_create(); + RAND_bytes((uint8_t *)&seed, 8); + lsquic_hash_set_seed(engine->conns_hash, seed); + engine->pub.enp_tokgen = lsquic_tg_new(&engine->pub); + if (!engine->pub.enp_tokgen) + return NULL; + if (engine->flags & ENG_SERVER) + for (i = 0; i < sizeof(engine->pub.enp_quic_ctx_sz) + / sizeof(engine->pub.enp_quic_ctx_sz[0]); ++i) + { + int sz = lsquic_enc_sess_ietf_gen_quic_ctx( + &engine->pub.enp_settings, + i == 0 ? LSQVER_ID27 : LSQVER_ID29, + engine->pub.enp_quic_ctx_buf[i], + sizeof(engine->pub.enp_quic_ctx_buf)); + if (sz < 0) + { + free(engine); + return NULL; + } + engine->pub.enp_quic_ctx_sz[i] = (unsigned) sz; + } + engine->pub.enp_crand = &engine->crand; + if (engine->pub.enp_settings.es_noprogress_timeout) + engine->pub.enp_noprog_timeout + = engine->pub.enp_settings.es_noprogress_timeout * 1000000; + engine->pub.enp_mtu_probe_timer = 1000 + * (engine->pub.enp_settings.es_mtu_probe_timer + ? engine->pub.enp_settings.es_mtu_probe_timer + : LSQUIC_DF_MTU_PROBE_TIMER); + if (flags & ENG_SERVER) + { + engine->pr_queue = lsquic_prq_create( + 10000 /* TODO: make configurable */, MAX_OUT_BATCH_SIZE, + &engine->pub); + if (!engine->pr_queue) + { + lsquic_tg_destroy(engine->pub.enp_tokgen); + return NULL; + } + engine->purga = lsquic_purga_new(30 * 1000 * 1000, + engine->report_old_scids, engine->scids_ctx); + if (!engine->purga) + { + lsquic_tg_destroy(engine->pub.enp_tokgen); + lsquic_prq_destroy(engine->pr_queue); + return NULL; + } + } + engine->attq = lsquic_attq_create(); + eng_hist_init(&engine->history); + if (engine->pub.enp_settings.es_max_batch_size) + { + engine->max_batch_size = engine->pub.enp_settings.es_max_batch_size; + engine->min_batch_size = MIN(4, engine->max_batch_size); + engine->batch_size = MAX(engine->max_batch_size / 4, + engine->min_batch_size); + } + else + { + engine->min_batch_size = MIN_OUT_BATCH_SIZE; + engine->max_batch_size = MAX_OUT_BATCH_SIZE; + engine->batch_size = INITIAL_OUT_BATCH_SIZE; + } + if (engine->pub.enp_settings.es_honor_prst) + { + engine->pub.enp_srst_hash = lsquic_hash_create(); + if (!engine->pub.enp_srst_hash) + { + lsquic_engine_destroy(engine); + return NULL; + } + } + if ((flags & LSENG_SERVER) && 0 != lsquic_init_gquic_crypto(&engine->pub)) + { + lsquic_engine_destroy(engine); + return NULL; + } + + if (alpn_len) + { + engine->pub.enp_alpn = malloc(alpn_len + 1); + if (!engine->pub.enp_alpn) + { + lsquic_engine_destroy(engine); + return NULL; + } + engine->pub.enp_alpn[0] = alpn_len; + memcpy(engine->pub.enp_alpn + 1, api->ea_alpn, alpn_len); + } + + if (flags & LSENG_HTTP) + engine->pub.enp_flags |= ENPUB_HTTP; + +#if !defined(NDEBUG) || LSQUIC_QIR + { + const char *env; + env = getenv("LSQUIC_LOSE_PACKETS_RE"); +#if CAN_LOSE_PACKETS + if (env) + { + if (0 != regcomp(&engine->lose_packets_re, env, + REG_EXTENDED|REG_NOSUB)) + { + LSQ_ERROR("could not compile lost packet regex `%s'", env); + return NULL; + } + engine->flags |= ENG_LOSE_PACKETS; + engine->lose_packets_str = env; + LSQ_WARN("will lose packets that match the following regex: %s", + env); + } +#endif + env = getenv("LSQUIC_FORCE_RETRY"); + if (env) + { + if (atoi(env)) + { + engine->flags |= ENG_FORCE_RETRY; + LSQ_WARN("will force retry"); + } + } + env = getenv("LSQUIC_COALESCE"); + if (env) + { + engine->flags &= ~ENG_COALESCE; + if (atoi(env)) + { + engine->flags |= ENG_COALESCE; + LSQ_NOTICE("will coalesce packets"); + } + else + LSQ_NOTICE("will not coalesce packets"); + } + } +#endif +#if LSQUIC_CONN_STATS + engine->stats_fh = api->ea_stats_fh; +#endif + for (i = 0; i < sizeof(engine->retry_aead_ctx) + / sizeof(engine->retry_aead_ctx[0]); ++i) + if (1 != EVP_AEAD_CTX_init(&engine->retry_aead_ctx[i], + EVP_aead_aes_128_gcm(), lsquic_retry_key_buf[i], + IETF_RETRY_KEY_SZ, 16, NULL)) + { + LSQ_ERROR("could not initialize retry AEAD ctx #%u", i); + lsquic_engine_destroy(engine); + return NULL; + } + engine->pub.enp_retry_aead_ctx = engine->retry_aead_ctx; + + LSQ_INFO("instantiated engine"); + return engine; +} + + +#if LOG_PACKET_CHECKSUM +static void +log_packet_checksum (const lsquic_cid_t *cid, const char *direction, + const unsigned char *buf, size_t bufsz) +{ + EV_LOG_CONN_EVENT(cid, "packet %s checksum: %08X", direction, + (uint32_t) crc32(0, buf, bufsz)); +} + + +#endif + + +static void +grow_batch_size (struct lsquic_engine *engine) +{ + engine->batch_size = MIN(engine->batch_size * 2, engine->max_batch_size); +} + + +static void +shrink_batch_size (struct lsquic_engine *engine) +{ + engine->batch_size = MAX(engine->batch_size / 2, engine->min_batch_size); +} + + +struct cce_cid_iter +{ + const struct lsquic_conn *conn; + unsigned todo, n; +}; + + +static struct conn_cid_elem * +cce_iter_next (struct cce_cid_iter *citer) +{ + struct conn_cid_elem *cce; + + while (citer->todo) + if (citer->todo & (1 << citer->n)) + { + citer->todo &= ~(1 << citer->n); + cce = &citer->conn->cn_cces[ citer->n++ ]; + if (!(cce->cce_flags & CCE_PORT)) + return cce; + } + else + ++citer->n; + + return NULL; +} + + +static struct conn_cid_elem * +cce_iter_first (struct cce_cid_iter *citer, const struct lsquic_conn *conn) +{ + citer->conn = conn; + citer->todo = conn->cn_cces_mask; + citer->n = 0; + return cce_iter_next(citer); +} + + +#if LSQUIC_CONN_STATS +void +update_stats_sum (struct lsquic_engine *engine, struct lsquic_conn *conn) +{ + unsigned long *const dst = (unsigned long *) &engine->conn_stats_sum; + const unsigned long *src; + const struct conn_stats *stats; + unsigned i; + + if (conn->cn_if->ci_get_stats && (stats = conn->cn_if->ci_get_stats(conn))) + { + ++engine->stats.conns; + src = (unsigned long *) stats; + for (i = 0; i < sizeof(*stats) / sizeof(unsigned long); ++i) + dst[i] += src[i]; + } +} + + +#endif + + +/* Wrapper to make sure important things occur before the connection is + * really destroyed. + */ +static void +destroy_conn (struct lsquic_engine *engine, struct lsquic_conn *conn, + lsquic_time_t now) +{ + struct cce_cid_iter citer; + const struct conn_cid_elem *cce; + lsquic_time_t drain_time; + struct purga_el *puel; + + engine->mini_conns_count -= !!(conn->cn_flags & LSCONN_MINI); + if (engine->purga && !(conn->cn_flags & LSCONN_NO_BL) + /* Blacklist all CIDs except for promoted mini connections */ + && (conn->cn_flags & (LSCONN_MINI|LSCONN_PROMOTED)) + != (LSCONN_MINI|LSCONN_PROMOTED)) + { + if (!(conn->cn_flags & LSCONN_IMMED_CLOSE) + && conn->cn_if->ci_drain_time && + (drain_time = conn->cn_if->ci_drain_time(conn), drain_time)) + { + for (cce = cce_iter_first(&citer, conn); cce; + cce = cce_iter_next(&citer)) + { + puel = lsquic_purga_add(engine->purga, &cce->cce_cid, + lsquic_conn_get_peer_ctx(conn, NULL), + PUTY_CONN_DRAIN, now); + if (puel) + puel->puel_time = now + drain_time; + } + } + else + { + for (cce = cce_iter_first(&citer, conn); cce; + cce = cce_iter_next(&citer)) + { + puel = lsquic_purga_add(engine->purga, &cce->cce_cid, + lsquic_conn_get_peer_ctx(conn, NULL), + PUTY_CONN_DELETED, now); + if (puel) + { + puel->puel_time = now; + puel->puel_count = 0; + } + } + } + } +#if LSQUIC_CONN_STATS + update_stats_sum(engine, conn); + if (engine->busy.last_conn == conn) + engine->busy.last_conn = NULL; + if (engine->busy.current == conn) + { + char cidstr[MAX_CID_LEN * 2 + 1]; + lsquic_logger_log1(LSQ_LOG_NOTICE, LSQLM_CONN_STATS, + "busy connection %s is destroyed", + (lsquic_cid2str(lsquic_conn_log_cid(conn), cidstr), cidstr)); + engine->busy.current = NULL; + engine->busy.last_log = 0; + } + if (engine->busy.pin_conn == conn) + engine->busy.pin_conn = NULL; +#endif + --engine->n_conns; + conn->cn_flags |= LSCONN_NEVER_TICKABLE; + conn->cn_if->ci_destroy(conn); + + if (LSQ_LOG_ENABLED(LSQ_LOG_DEBUG) /* log period: 10s */ + && ((engine->mem_logged_last + 10000000 <= now) || (engine->n_conns == 0))) + { +#define MAX_MM_STAT_LOG 4096 + unsigned cur = 0; + unsigned ret = 0; + unsigned idx = 0; + char mm_log[MAX_MM_STAT_LOG] = {0}; + struct pool_stats *poolst = NULL; + + engine->mem_logged_last = now; + + ret = snprintf(mm_log + cur, MAX_MM_STAT_LOG - cur, + "%p, conns: %u, mini_conns: %u. mm_stat, used: %zu" + ", pool(calls-objs_all-objs_out-max-avg-var), pib", + engine, engine->n_conns, engine->mini_conns_count, + lsquic_mm_mem_used(&engine->pub.enp_mm)); + cur += ret; + + for (idx = 0; idx < MM_N_IN_BUCKETS && cur < MAX_MM_STAT_LOG; idx++) + { + poolst = &engine->pub.enp_mm.packet_in_bstats[idx]; + ret = snprintf(mm_log + cur, MAX_MM_STAT_LOG - cur, + ": [%u]%u-%u-%u-%u-%u-%u", idx, + poolst->ps_calls, poolst->ps_objs_all, poolst->ps_objs_out, + poolst->ps_max, poolst->ps_max_avg, poolst->ps_max_var); + cur += ret; + } + + ret = snprintf(mm_log + cur, MAX_MM_STAT_LOG - cur, ", pob"); + cur += ret; + + for (idx = 0; idx < MM_N_OUT_BUCKETS && cur < MAX_MM_STAT_LOG; idx++) + { + poolst = &engine->pub.enp_mm.packet_out_bstats[idx]; + ret = snprintf(mm_log + cur, MAX_MM_STAT_LOG - cur, + ": [%u]%u-%u-%u-%u-%u-%u", idx, + poolst->ps_calls, poolst->ps_objs_all, poolst->ps_objs_out, + poolst->ps_max, poolst->ps_max_avg, poolst->ps_max_var); + cur += ret; + } + + LSQ_DEBUG("%s", mm_log); + } +} + + +static int +maybe_grow_conn_heaps (struct lsquic_engine *engine) +{ + struct min_heap_elem *els; + unsigned count; + + if (engine->n_conns < lsquic_mh_nalloc(&engine->conns_tickable)) + return 0; /* Nothing to do */ + + if (lsquic_mh_nalloc(&engine->conns_tickable)) + count = lsquic_mh_nalloc(&engine->conns_tickable) * 2 * 2; + else + count = 8; + + els = malloc(sizeof(els[0]) * count); + if (!els) + { + LSQ_ERROR("%s: malloc failed", __func__); + return -1; + } + + LSQ_DEBUG("grew heaps to %u elements", count / 2); + + if (lsquic_mh_count(&engine->conns_tickable) > 0) + { + memcpy(&els[0], engine->conns_tickable.mh_elems, + sizeof(els[0]) * lsquic_mh_count(&engine->conns_tickable)); + } + if (lsquic_mh_count(&engine->conns_out) > 0) + { + memcpy(&els[count / 2], engine->conns_out.mh_elems, + sizeof(els[0]) * lsquic_mh_count(&engine->conns_out)); + } + + free(engine->conns_tickable.mh_elems); + engine->conns_tickable.mh_elems = els; + engine->conns_out.mh_elems = &els[count / 2]; + engine->conns_tickable.mh_nalloc = count / 2; + engine->conns_out.mh_nalloc = count / 2; + return 0; +} + + +static void +remove_cces_from_hash (struct lsquic_hash *hash, struct lsquic_conn *conn, + unsigned todo) +{ + unsigned n; + + for (n = 0; todo; todo &= ~(1 << n++)) + if ((todo & (1 << n)) && + (conn->cn_cces[n].cce_hash_el.qhe_flags & QHE_HASHED)) + lsquic_hash_erase(hash, &conn->cn_cces[n].cce_hash_el); +} + + +static void +remove_all_cces_from_hash (struct lsquic_hash *hash, struct lsquic_conn *conn) +{ + remove_cces_from_hash(hash, conn, conn->cn_cces_mask); +} + + +static void +cub_add (struct cid_update_batch *cub, const lsquic_cid_t *cid, void *peer_ctx); + + +static int +insert_conn_into_hash (struct lsquic_engine *engine, struct lsquic_conn *conn, + void *peer_ctx) +{ + struct conn_cid_elem *cce; + unsigned todo, done, n; + + for (todo = conn->cn_cces_mask, done = 0, n = 0; todo; todo &= ~(1 << n++)) + if (todo & (1 << n)) + { + cce = &conn->cn_cces[n]; + assert(!(cce->cce_hash_el.qhe_flags & QHE_HASHED)); + LSQ_DEBUGC("Insert into connection hash-table by CID %"CID_FMT, + CID_BITS(&cce->cce_cid)); + if (lsquic_hash_insert(engine->conns_hash, cce->cce_cid.idbuf, + cce->cce_cid.len, conn, &cce->cce_hash_el)) + done |= 1 << n; + else + goto err; + if ((engine->flags & ENG_SERVER) && 0 == (cce->cce_flags & CCE_REG)) + { + cce->cce_flags |= CCE_REG; + cub_add(&engine->new_scids, &cce->cce_cid, peer_ctx); + } + } + + return 0; + + err: + remove_cces_from_hash(engine->conns_hash, conn, done); + return -1; +} + + +static lsquic_conn_t * +new_full_conn_server (lsquic_engine_t *engine, lsquic_conn_t *mini_conn, + lsquic_time_t now) +{ + const lsquic_cid_t *cid; + server_conn_ctor_f ctor; + lsquic_conn_t *conn; + unsigned flags; + if (0 != maybe_grow_conn_heaps(engine)) + return NULL; + flags = engine->flags & (ENG_SERVER|ENG_HTTP); + + if (mini_conn->cn_flags & LSCONN_IETF) + ctor = lsquic_ietf_full_conn_server_new; + else + ctor = lsquic_gquic_full_conn_server_new; + + conn = ctor(&engine->pub, flags, mini_conn); + if (!conn) + { + /* Otherwise, full_conn_server_new prints its own warnings */ + if (ENOMEM == errno) + { + cid = lsquic_conn_log_cid(mini_conn); + LSQ_WARNC("could not allocate full connection for %"CID_FMT": %s", + CID_BITS(cid), strerror(errno)); + } + return NULL; + } + ++engine->n_conns; + if (0 != insert_conn_into_hash(engine, conn, lsquic_conn_get_peer_ctx(conn, NULL))) + { + cid = lsquic_conn_log_cid(conn); + LSQ_WARNC("cannot add connection %"CID_FMT" to hash - destroy", + CID_BITS(cid)); + destroy_conn(engine, conn, now); + return NULL; + } + assert(!(conn->cn_flags & (CONN_REF_FLAGS & ~LSCONN_TICKABLE))); + conn->cn_flags |= LSCONN_HASHED; + return conn; +} + + +static void +remove_conn_from_hash (lsquic_engine_t *engine, lsquic_conn_t *conn); + + +static int +promote_mini_conn (lsquic_engine_t *engine, lsquic_conn_t *mini_conn, + lsquic_time_t now) +{ + lsquic_conn_t *new_conn; + EV_LOG_CONN_EVENT(lsquic_conn_log_cid( mini_conn ), + "promote to full conn"); + assert( mini_conn->cn_flags & LSCONN_MINI); + + lsquic_mini_conn_ietf_pre_promote((struct ietf_mini_conn *)mini_conn, now); + + new_conn = new_full_conn_server(engine, mini_conn, now); + if (new_conn) + { + new_conn->cn_last_sent = engine->last_sent; + eng_hist_inc(&engine->history, now, sl_new_full_conns); + mini_conn->cn_flags |= LSCONN_PROMOTED; + assert(engine->curr_conn == mini_conn); + engine->curr_conn = new_conn; + + if (mini_conn->cn_flags & LSCONN_ATTQ) + { + lsquic_attq_remove(engine->attq, mini_conn); + (void) engine_decref_conn(engine, mini_conn, LSCONN_ATTQ); + } + if (mini_conn->cn_flags & LSCONN_HASHED) + remove_conn_from_hash(engine, mini_conn); + + if (!(new_conn->cn_flags & LSCONN_TICKABLE)) + { + lsquic_mh_insert(&engine->conns_tickable, new_conn, + new_conn->cn_last_ticked); + engine_incref_conn(new_conn, LSCONN_TICKABLE); + } + return 0; + } + return -1; +} + + +static enum +{ + VER_NOT_SPECIFIED, + VER_SUPPORTED, + VER_UNSUPPORTED, +} + + +version_matches (lsquic_engine_t *engine, const lsquic_packet_in_t *packet_in, + enum lsquic_version *pversion) +{ + lsquic_ver_tag_t ver_tag; + enum lsquic_version version; + + if (!packet_in->pi_quic_ver) + { + LSQ_DEBUG("packet does not specify version"); + return VER_NOT_SPECIFIED; + } + + memcpy(&ver_tag, packet_in->pi_data + packet_in->pi_quic_ver, sizeof(ver_tag)); + version = lsquic_tag2ver(ver_tag); + if (version < N_LSQVER) + { + if (engine->pub.enp_settings.es_versions & (1 << version)) + { + LSQ_DEBUG("client-supplied version %s is supported", + lsquic_ver2str[version]); + *pversion = version; + return VER_SUPPORTED; + } + else + LSQ_DEBUG("client-supplied version %s is not supported", + lsquic_ver2str[version]); + } + else + LSQ_DEBUG("client-supplied version tag 0x%08X is not recognized", + ver_tag); + + return VER_UNSUPPORTED; +} + + +static void +schedule_req_packet (struct lsquic_engine *engine, enum packet_req_type type, + const struct lsquic_packet_in *packet_in, const struct sockaddr *sa_local, + const struct sockaddr *sa_peer, void *peer_ctx) +{ + assert(engine->pr_queue); + if (0 == lsquic_prq_new_req(engine->pr_queue, type, packet_in, peer_ctx, + sa_local, sa_peer)) + LSQ_DEBUGC("scheduled %s packet for cid %"CID_FMT, + lsquic_preqt2str[type], CID_BITS(&packet_in->pi_conn_id)); + else + LSQ_DEBUG("cannot schedule %s packet", lsquic_preqt2str[type]); +} + + +static void +schedule_mini_retry (struct lsquic_engine *engine, struct lsquic_conn *conn, + lsquic_time_t now) +{ + const struct network_path *path; + + assert(engine->pr_queue); + path = conn->cn_if->ci_get_path(conn, NULL); + if (!path) + { + LSQ_WARN("cannot fetch default path"); + return; + } + + assert(conn->cn_flags & LSCONN_IETF); + if (0 == lsquic_prq_new_req_ext(engine->pr_queue, PACKET_REQ_RETRY, + 0 /* Only supporting retry on IETF mini conns for now */, + conn->cn_version, path->np_pack_size, &conn->cn_cid, + &path->np_dcid, path->np_peer_ctx, NP_LOCAL_SA(path), + NP_PEER_SA(path) + )) + LSQ_DEBUGC("scheduled %s packet for mini conn %"CID_FMT, + lsquic_preqt2str[PACKET_REQ_RETRY], + CID_BITS(lsquic_conn_log_cid(conn))); + else + LSQ_DEBUGC("could not schedule %s packet for mini conn %"CID_FMT, + lsquic_preqt2str[PACKET_REQ_RETRY], + CID_BITS(lsquic_conn_log_cid(conn))); + +} + + +static unsigned short +sa2port (const struct sockaddr *sa) +{ + if (sa->sa_family == AF_INET) + { + struct sockaddr_in *const sa4 = (void *) sa; + return sa4->sin_port; + } + else + { + struct sockaddr_in6 *const sa6 = (void *) sa; + return sa6->sin6_port; + } +} + + +static struct lsquic_hash_elem * +find_conn_by_addr (struct lsquic_hash *hash, const struct sockaddr *sa) +{ + unsigned short port; + + port = sa2port(sa); + return lsquic_hash_find(hash, &port, sizeof(port)); +} + + +/* When connections are identified by the local address, we need to drop + * packets that use DCIDs that do not correspond to any of SCIDs. This + * can happen when peer retires a SCID. This mimics the normal behavior, + * when connections are looked up in engine->conns_hash by ID: when there + * is no match, the packet is dropped. + */ +static int +dcid_checks_out (const struct lsquic_conn *conn, const lsquic_cid_t *dcid) +{ + const struct conn_cid_elem *cce; + + if (LSQUIC_CIDS_EQ(CN_SCID(conn), dcid)) + return 1; + + /* Slow check for those rare cases */ + for (cce = conn->cn_cces; cce < END_OF_CCES(conn); ++cce) + if ((conn->cn_cces_mask & (1 << (cce - conn->cn_cces))) + && !(cce->cce_flags & CCE_PORT) + && LSQUIC_CIDS_EQ(&cce->cce_cid, dcid)) + { + LSQ_DEBUG("connection checks out"); + return 1; + } + + return 0; +} + + +static lsquic_conn_t * +find_conn (lsquic_engine_t *engine, lsquic_packet_in_t *packet_in, + struct packin_parse_state *ppstate, const struct sockaddr *sa_local) +{ + struct lsquic_hash_elem *el; + lsquic_conn_t *conn; + + if (engine->flags & ENG_CONNS_BY_ADDR) + { + el = find_conn_by_addr(engine->conns_hash, sa_local); + if ((packet_in->pi_flags & PI_CONN_ID) + && !dcid_checks_out(lsquic_hashelem_getdata(el), + &packet_in->pi_conn_id)) + { + LSQ_DEBUGC("DCID matches no SCID in connection %"CID_FMT": drop it", + CID_BITS(&packet_in->pi_conn_id)); + return NULL; + } + } + else if (packet_in->pi_flags & PI_CONN_ID) + el = lsquic_hash_find(engine->conns_hash, + packet_in->pi_conn_id.idbuf, packet_in->pi_conn_id.len); + else + { + LSQ_DEBUG("packet header does not have connection ID: discarding"); + return NULL; + } + + if (!el) + return NULL; + + conn = lsquic_hashelem_getdata(el); + conn->cn_pf->pf_parse_packet_in_finish(packet_in, ppstate); + if ((engine->flags & ENG_CONNS_BY_ADDR) + && !(conn->cn_flags & LSCONN_IETF) + && (packet_in->pi_flags & PI_CONN_ID) + && !LSQUIC_CIDS_EQ(CN_SCID(conn), &packet_in->pi_conn_id)) + { + LSQ_DEBUG("connection IDs do not match"); + return NULL; + } + + return conn; +} + + +static const char *const puty2str[] = { + [PUTY_CONN_DELETED] = "deleted", + [PUTY_CONN_DRAIN] = "being drained", + [PUTY_CID_RETIRED] = "retired", +}; + + +static lsquic_conn_t * +find_or_create_conn (lsquic_engine_t *engine, lsquic_packet_in_t *packet_in, + struct packin_parse_state *ppstate, const struct sockaddr *sa_local, + const struct sockaddr *sa_peer, void *peer_ctx, size_t packet_in_size) +{ + struct lsquic_hash_elem *el; + struct purga_el *puel; + lsquic_conn_t *conn; + + if (!(packet_in->pi_flags & PI_CONN_ID)) + { + LSQ_DEBUG("packet header does not have connection ID: discarding"); + return NULL; + } + LSQ_DEBUGC("To find connection by CID %"CID_FMT, + CID_BITS(&packet_in->pi_conn_id)); + el = lsquic_hash_find(engine->conns_hash, + packet_in->pi_conn_id.idbuf, packet_in->pi_conn_id.len); + + if (el) + { + conn = lsquic_hashelem_getdata(el); + conn->cn_pf->pf_parse_packet_in_finish(packet_in, ppstate); + return conn; + } + + if (engine->flags & ENG_COOLDOWN) + { /* Do not create incoming connections during cooldown */ + LSQ_DEBUG("dropping inbound packet for unknown connection (cooldown)"); + return NULL; + } + + if (engine->mini_conns_count >= engine->pub.enp_settings.es_max_inchoate) + { + LSQ_DEBUG("reached limit of %u inchoate connections", + engine->pub.enp_settings.es_max_inchoate); + return NULL; + } + + + if (engine->purga + && (puel = lsquic_purga_contains(engine->purga, + &packet_in->pi_conn_id), puel)) + { + switch (puel->puel_type) + { + case PUTY_CID_RETIRED: + case PUTY_CONN_DRAIN: + if (puel->puel_time > packet_in->pi_received) + { + LSQ_DEBUGC("CID %"CID_FMT" is %s for another %"PRIu64 + "usec, ignore packet", CID_BITS(&packet_in->pi_conn_id), + puty2str[puel->puel_type], + puel->puel_time - packet_in->pi_received); + return NULL; + } + LSQ_DEBUGC("CID %"CID_FMT" is no longer %s", + CID_BITS(&packet_in->pi_conn_id), puty2str[puel->puel_type]); + break; + case PUTY_CONN_DELETED: + LSQ_DEBUGC("Connection with CID %"CID_FMT" was deleted", + CID_BITS(&packet_in->pi_conn_id)); + if (puel->puel_time < packet_in->pi_received) + { + if (puel->puel_count < 4) + { + puel->puel_time = packet_in->pi_received + /* Exponential back-off */ + + 1000000ull * (1 << MIN(puel->puel_count, 4)); + ++puel->puel_count; + goto maybe_send_prst; + } + else + break; + } + return NULL; + default: + assert(0); + return NULL; + } + } + + if (engine->pub.enp_settings.es_send_prst + && !(packet_in->pi_flags & PI_GQUIC) + && HETY_NOT_SET == packet_in->pi_header_type) + goto maybe_send_prst; + + if (0 != maybe_grow_conn_heaps(engine)) + return NULL; + + const struct parse_funcs *pf; + enum lsquic_version version; + switch (version_matches(engine, packet_in, &version)) + { + case VER_UNSUPPORTED: + if ((engine->flags & ENG_SERVER) && + engine->pub.enp_settings.es_send_verneg) + schedule_req_packet(engine, PACKET_REQ_VERNEG, packet_in, + sa_local, sa_peer, peer_ctx); + return NULL; + case VER_NOT_SPECIFIED: + maybe_send_prst: + if ((engine->flags & ENG_SERVER) && + engine->pub.enp_settings.es_send_prst) + schedule_req_packet(engine, PACKET_REQ_PUBRES, packet_in, + sa_local, sa_peer, peer_ctx); + return NULL; + case VER_SUPPORTED: + pf = select_pf_by_ver(version); + pf->pf_parse_packet_in_finish(packet_in, ppstate); + break; + } + + + if ((1 << version) & LSQUIC_IETF_VERSIONS) + { + lsquic_cid_t odcid; + if (engine->pub.enp_settings.es_support_srej + && HETY_INITIAL == packet_in->pi_header_type) + { + /* XXX Need to handle condition when packets are reordered? */ + const int has_token + = packet_in->pi_token && packet_in->pi_token_size; + const int need_retry = + !!(engine->flags & ENG_FORCE_RETRY); + switch ((need_retry << 1) | has_token) + { + case (0 << 1) | 0: + odcid.len = 0; + goto create_ietf_mini_conn; + case (1 << 1) | 1: + case (0 << 1) | 1: + odcid.len = 0; + if (0 == lsquic_tg_validate_token(engine->pub.enp_tokgen, + packet_in, sa_peer, &odcid)) + goto create_ietf_mini_conn; + /* From [draft-ietf-quic-transport-30] Section 8.1.2: + " In response to processing an Initial containing a token that was + " provided in a Retry packet, a server cannot send another Retry + " packet; it can only refuse the connection or permit it to proceed. + */ + if (TOKEN_RETRY == packet_in->pi_data[packet_in->pi_token]) + { + LSQ_DEBUGC("CID %"CID_FMT" has invalid Retry token", + CID_BITS(&packet_in->pi_conn_id)); + return NULL; + } + /* According to the spec, we SHOULD send CONNECTION_CLOSE + * when receiving an invalid Retry token. We don't do it + * because it's a lot of code change for an event that is + * not likely to happen: a major browser copying the token + * incorrectly. + */ + break; + default: + assert(0); + /* fall-through */ + case (1 << 1) | 0: + break; + } + schedule_req_packet(engine, PACKET_REQ_RETRY, packet_in, sa_local, + sa_peer, peer_ctx); + return NULL; + } + else + odcid.len = 0; + create_ietf_mini_conn: + conn = lsquic_mini_conn_ietf_new(&engine->pub, packet_in, version, + sa_peer->sa_family == AF_INET, odcid.len ? &odcid : NULL, + packet_in_size); + } + else + { + conn = lsquic_mini_conn_new(&engine->pub, packet_in, version); + } + if (!conn) + return NULL; + ++engine->mini_conns_count; + ++engine->n_conns; + if (0 != insert_conn_into_hash(engine, conn, peer_ctx)) + { + const lsquic_cid_t *cid = lsquic_conn_log_cid(conn); + LSQ_WARNC("cannot add connection %"CID_FMT" to hash - destroy", + CID_BITS(cid)); + destroy_conn(engine, conn, packet_in->pi_received); + return NULL; + } + assert(!(conn->cn_flags & CONN_REF_FLAGS)); + conn->cn_flags |= LSCONN_HASHED; + eng_hist_inc(&engine->history, packet_in->pi_received, sl_new_mini_conns); + conn->cn_last_sent = engine->last_sent; + return conn; +} + + +lsquic_conn_t * +lsquic_engine_find_conn (const struct lsquic_engine_public *engine, + const lsquic_cid_t *cid) +{ + struct lsquic_hash_elem *el; + lsquic_conn_t *conn = NULL; + el = lsquic_hash_find(engine->enp_engine->conns_hash, cid->idbuf, cid->len); + + if (el) + conn = lsquic_hashelem_getdata(el); + return conn; +} + + +#if !defined(NDEBUG) && __GNUC__ +__attribute__((weak)) +#endif +void +lsquic_engine_add_conn_to_tickable (struct lsquic_engine_public *enpub, + lsquic_conn_t *conn) +{ + if (0 == (enpub->enp_flags & ENPUB_PROC) && + 0 == (conn->cn_flags & (LSCONN_TICKABLE|LSCONN_NEVER_TICKABLE))) + { + lsquic_engine_t *engine = (lsquic_engine_t *) enpub; + lsquic_mh_insert(&engine->conns_tickable, conn, conn->cn_last_ticked); + engine_incref_conn(conn, LSCONN_TICKABLE); + } +} + + +void +lsquic_engine_add_conn_to_attq (struct lsquic_engine_public *enpub, + lsquic_conn_t *conn, lsquic_time_t tick_time, unsigned why) +{ + lsquic_engine_t *const engine = (lsquic_engine_t *) enpub; + if (conn->cn_flags & LSCONN_TICKABLE) + { + /* Optimization: no need to add the connection to the Advisory Tick + * Time Queue: it is about to be ticked, after which it its next tick + * time may be queried again. + */; + } + else if (conn->cn_flags & LSCONN_ATTQ) + { + if (lsquic_conn_adv_time(conn) != tick_time) + { + lsquic_attq_remove(engine->attq, conn); + if (0 != lsquic_attq_add(engine->attq, conn, tick_time, why)) + engine_decref_conn(engine, conn, LSCONN_ATTQ); + } + } + else if (0 == lsquic_attq_add(engine->attq, conn, tick_time, why)) + engine_incref_conn(conn, LSCONN_ATTQ); +} + + +static struct lsquic_conn * +find_conn_by_srst (struct lsquic_engine *engine, + const struct lsquic_packet_in *packet_in) +{ + struct lsquic_hash_elem *el; + struct lsquic_conn *conn; + + if (packet_in->pi_data_sz < IQUIC_MIN_SRST_SIZE + || (packet_in->pi_data[0] & 0xC0) != 0x40) + return NULL; + + el = lsquic_hash_find(engine->pub.enp_srst_hash, + packet_in->pi_data + packet_in->pi_data_sz - IQUIC_SRESET_TOKEN_SZ, + IQUIC_SRESET_TOKEN_SZ); + if (!el) + return NULL; + + conn = lsquic_hashelem_getdata(el); + return conn; +} + + +/* Return 0 if packet is being processed by a real connection (mini or full), + * otherwise return 1. + */ +static int +process_packet_in (lsquic_engine_t *engine, lsquic_packet_in_t *packet_in, + struct packin_parse_state *ppstate, const struct sockaddr *sa_local, + const struct sockaddr *sa_peer, void *peer_ctx, size_t packet_in_size) +{ + lsquic_conn_t *conn; + const unsigned char *packet_in_data; + + if (lsquic_packet_in_is_gquic_prst(packet_in) + && !engine->pub.enp_settings.es_honor_prst) + { + lsquic_mm_put_packet_in(&engine->pub.enp_mm, packet_in); + LSQ_DEBUG("public reset packet: discarding"); + return 1; + } + + if (engine->flags & ENG_SERVER) + { + conn = find_or_create_conn(engine, packet_in, ppstate, sa_local, + sa_peer, peer_ctx, packet_in_size); + if (!engine->curr_conn) + engine->curr_conn = conn; + } + else + conn = find_conn(engine, packet_in, ppstate, sa_local); + + if (!conn) + { + if (engine->pub.enp_settings.es_honor_prst + && packet_in_size == packet_in->pi_data_sz /* Full UDP packet */ + && !(packet_in->pi_flags & PI_GQUIC) + && engine->pub.enp_srst_hash + && (conn = find_conn_by_srst(engine, packet_in))) + { + LSQ_DEBUGC("got stateless reset for connection %"CID_FMT, + CID_BITS(lsquic_conn_log_cid(conn))); + conn->cn_if->ci_stateless_reset(conn); + if (!(conn->cn_flags & LSCONN_TICKABLE) + && conn->cn_if->ci_is_tickable(conn)) + { + lsquic_mh_insert(&engine->conns_tickable, conn, + conn->cn_last_ticked); + engine_incref_conn(conn, LSCONN_TICKABLE); + } + /* Even though the connection processes this packet, we return + * 1 so that the caller does not add reset packet's random + * bytes to the list of valid CIDs. + */ + } + lsquic_mm_put_packet_in(&engine->pub.enp_mm, packet_in); + return 1; + } + + if (0 == (conn->cn_flags & LSCONN_TICKABLE)) + { + lsquic_mh_insert(&engine->conns_tickable, conn, conn->cn_last_ticked); + engine_incref_conn(conn, LSCONN_TICKABLE); + } + packet_in->pi_path_id = lsquic_conn_record_sockaddr(conn, peer_ctx, + sa_local, sa_peer); + lsquic_packet_in_upref(packet_in); +#if LOG_PACKET_CHECKSUM + log_packet_checksum(lsquic_conn_log_cid(conn), "in", packet_in->pi_data, + packet_in->pi_data_sz); +#endif + /* Note on QLog: + * For the PACKET_RX QLog event, we are interested in logging these things: + * - raw packet (however it comes in, encrypted or not) + * - frames (list of frame names) + * - packet type and number + * - packet rx timestamp + * + * Since only some of these items are available at this code + * juncture, we will wait until after the packet has been + * decrypted (if necessary) and parsed to call the log functions. + * + * Once the PACKET_RX event is finally logged, the timestamp + * will come from packet_in->pi_received. For correct sequential + * ordering of QLog events, be sure to process the QLogs downstream. + * (Hint: Use the qlog_parser.py tool in tools/ for full QLog processing.) + */ + packet_in_data = packet_in->pi_data; + packet_in_size = packet_in->pi_data_sz; + conn->cn_if->ci_packet_in(conn, packet_in); +#if LSQUIC_CONN_STATS + engine->busy.pin_conn = conn; +#endif + QLOG_PACKET_RX(lsquic_conn_log_cid(conn), packet_in, packet_in_data, packet_in_size); + lsquic_packet_in_put(&engine->pub.enp_mm, packet_in); + if ((conn->cn_flags & (LSCONN_MINI | LSCONN_HANDSHAKE_DONE | LSCONN_IETF)) + == (LSCONN_MINI | LSCONN_HANDSHAKE_DONE | LSCONN_IETF)) + { + if (promote_mini_conn(engine, conn, lsquic_time_now()) == -1) + conn->cn_flags |= LSCONN_PROMOTE_FAIL; + } + return 0; +} + + +void +lsquic_engine_destroy (lsquic_engine_t *engine) +{ + struct lsquic_hash_elem *el; + lsquic_conn_t *conn; + unsigned i; + + LSQ_DEBUG("destroying engine"); +#ifndef NDEBUG + engine->flags |= ENG_DTOR; +#endif + + while ((conn = lsquic_mh_pop(&engine->conns_out))) + { + assert(conn->cn_flags & LSCONN_HAS_OUTGOING); + (void) engine_decref_conn(engine, conn, LSCONN_HAS_OUTGOING); + } + + while ((conn = lsquic_mh_pop(&engine->conns_tickable))) + { + assert(conn->cn_flags & LSCONN_TICKABLE); + (void) engine_decref_conn(engine, conn, LSCONN_TICKABLE); + } + + for (el = lsquic_hash_first(engine->conns_hash); el; + el = lsquic_hash_next(engine->conns_hash)) + { + conn = lsquic_hashelem_getdata(el); + force_close_conn(engine, conn); + } + lsquic_hash_destroy(engine->conns_hash); + + while ((conn = lsquic_attq_pop(engine->attq, UINT64_MAX))) + (void) engine_decref_conn(engine, conn, LSCONN_ATTQ); + + assert(0 == engine->n_conns); + assert(0 == engine->mini_conns_count); + if (engine->pr_queue) + lsquic_prq_destroy(engine->pr_queue); + if (engine->purga) + lsquic_purga_destroy(engine->purga); + lsquic_attq_destroy(engine->attq); + + assert(0 == lsquic_mh_count(&engine->conns_out)); + assert(0 == lsquic_mh_count(&engine->conns_tickable)); + if (engine->pub.enp_shi == &stock_shi) + lsquic_stock_shared_hash_destroy(engine->pub.enp_shi_ctx); + lsquic_mm_cleanup(&engine->pub.enp_mm); + free(engine->conns_tickable.mh_elems); +#if CAN_LOSE_PACKETS + if (engine->flags & ENG_LOSE_PACKETS) + regfree(&engine->lose_packets_re); +#endif + if (engine->pub.enp_tokgen) + lsquic_tg_destroy(engine->pub.enp_tokgen); + if (engine->flags & LSENG_SERVER) + lsquic_cleanup_gquic_crypto(&engine->pub); +#if LSQUIC_CONN_STATS + if (engine->stats_fh) + { + const struct conn_stats *const stats = &engine->conn_stats_sum; + fprintf(engine->stats_fh, "Aggregate connection stats collected by engine:\n"); + fprintf(engine->stats_fh, "Connections: %u\n", engine->stats.conns); + fprintf(engine->stats_fh, "Ticks: %lu\n", stats->n_ticks); + fprintf(engine->stats_fh, "In:\n"); + fprintf(engine->stats_fh, " Total bytes: %lu\n", stats->in.bytes); + fprintf(engine->stats_fh, " packets: %lu\n", stats->in.packets); + fprintf(engine->stats_fh, " undecryptable packets: %lu\n", stats->in.undec_packets); + fprintf(engine->stats_fh, " duplicate packets: %lu\n", stats->in.dup_packets); + fprintf(engine->stats_fh, " error packets: %lu\n", stats->in.err_packets); + fprintf(engine->stats_fh, " STREAM frame count: %lu\n", stats->in.stream_frames); + fprintf(engine->stats_fh, " STREAM payload size: %lu\n", stats->in.stream_data_sz); + fprintf(engine->stats_fh, " Header bytes: %lu; uncompressed: %lu; ratio %.3lf\n", + stats->in.headers_comp, stats->in.headers_uncomp, + stats->in.headers_uncomp ? + (double) stats->in.headers_comp / (double) stats->in.headers_uncomp + : 0); + fprintf(engine->stats_fh, " ACK frames: %lu\n", stats->in.n_acks); + fprintf(engine->stats_fh, " ACK frames processed: %lu\n", stats->in.n_acks_proc); + fprintf(engine->stats_fh, " ACK frames merged: %lu\n", stats->in.n_acks_merged); + fprintf(engine->stats_fh, "Out:\n"); + fprintf(engine->stats_fh, " Total bytes: %lu\n", stats->out.bytes); + fprintf(engine->stats_fh, " packets: %lu\n", stats->out.packets); + fprintf(engine->stats_fh, " acked via loss record: %lu\n", stats->out.acked_via_loss); + fprintf(engine->stats_fh, " acks: %lu\n", stats->out.acks); + fprintf(engine->stats_fh, " retx packets: %lu\n", stats->out.retx_packets); + fprintf(engine->stats_fh, " STREAM frame count: %lu\n", stats->out.stream_frames); + fprintf(engine->stats_fh, " STREAM payload size: %lu\n", stats->out.stream_data_sz); + fprintf(engine->stats_fh, " Header bytes: %lu; uncompressed: %lu; ratio %.3lf\n", + stats->out.headers_comp, stats->out.headers_uncomp, + stats->out.headers_uncomp ? + (double) stats->out.headers_comp / (double) stats->out.headers_uncomp + : 0); + fprintf(engine->stats_fh, " ACKs: %lu\n", stats->out.acks); + } +#endif + if (engine->pub.enp_srst_hash) + lsquic_hash_destroy(engine->pub.enp_srst_hash); +#if LSQUIC_COUNT_ENGINE_CALLS + LSQ_NOTICE("number of calls into the engine: %lu", engine->n_engine_calls); +#endif + for (i = 0; i < sizeof(engine->retry_aead_ctx) + / sizeof(engine->retry_aead_ctx[0]); ++i) + EVP_AEAD_CTX_cleanup(&engine->pub.enp_retry_aead_ctx[i]); + free(engine->pub.enp_alpn); + free(engine); +} + + +static struct conn_cid_elem * +find_free_cce (struct lsquic_conn *conn) +{ + struct conn_cid_elem *cce; + + for (cce = conn->cn_cces; cce < END_OF_CCES(conn); ++cce) + if (!(conn->cn_cces_mask & (1 << (cce - conn->cn_cces)))) + return cce; + + return NULL; +} + + +static int +add_conn_to_hash (struct lsquic_engine *engine, struct lsquic_conn *conn, + const struct sockaddr *local_sa, void *peer_ctx) +{ + struct conn_cid_elem *cce; + + if (engine->flags & ENG_CONNS_BY_ADDR) + { + cce = find_free_cce(conn); + if (!cce) + { + LSQ_ERROR("cannot find free CCE"); + return -1; + } + cce->cce_port = sa2port(local_sa); + cce->cce_flags = CCE_PORT; + if (lsquic_hash_insert(engine->conns_hash, &cce->cce_port, + sizeof(cce->cce_port), conn, &cce->cce_hash_el)) + { + conn->cn_cces_mask |= 1 << (cce - conn->cn_cces); + return 0; + } + else + return -1; + + } + else + return insert_conn_into_hash(engine, conn, peer_ctx); +} + + +lsquic_conn_t * +lsquic_engine_connect (lsquic_engine_t *engine, enum lsquic_version version, + const struct sockaddr *local_sa, + const struct sockaddr *peer_sa, + void *peer_ctx, lsquic_conn_ctx_t *conn_ctx, + const char *hostname, unsigned short base_plpmtu, + const unsigned char *sess_resume, size_t sess_resume_len, + const unsigned char *token, size_t token_sz) +{ + lsquic_conn_t *conn; + unsigned flags, versions; + int is_ipv4; + + ENGINE_CALLS_INCR(engine); + + if (engine->flags & ENG_SERVER) + { + LSQ_ERROR("`%s' must only be called in client mode", __func__); + goto err; + } + + if (engine->flags & ENG_CONNS_BY_ADDR + && find_conn_by_addr(engine->conns_hash, local_sa)) + { + LSQ_ERROR("cannot have more than one connection on the same port"); + goto err; + } + + if (0 != maybe_grow_conn_heaps(engine)) + return NULL; + flags = engine->flags & (ENG_SERVER|ENG_HTTP); + is_ipv4 = peer_sa->sa_family == AF_INET; + if (sess_resume && sess_resume_len) + { + version = lsquic_sess_resume_version(sess_resume, sess_resume_len); + if (version >= N_LSQVER) + { + LSQ_INFO("session resumption version is bad, won't use"); + sess_resume = NULL; + sess_resume_len = 0; + } + } + if (version >= N_LSQVER) + { + if (version > N_LSQVER) + LSQ_WARN("invalid version specified, engine will pick"); + versions = engine->pub.enp_settings.es_versions; + } + else + versions = 1u << version; + if (versions & LSQUIC_IETF_VERSIONS) + conn = lsquic_ietf_full_conn_client_new(&engine->pub, versions, + flags, hostname, base_plpmtu, + is_ipv4, sess_resume, sess_resume_len, token, token_sz, peer_ctx); + else + conn = lsquic_gquic_full_conn_client_new(&engine->pub, versions, + flags, hostname, base_plpmtu, is_ipv4, + sess_resume, sess_resume_len); + if (!conn) + goto err; + EV_LOG_CREATE_CONN(lsquic_conn_log_cid(conn), local_sa, peer_sa); + EV_LOG_VER_NEG(lsquic_conn_log_cid(conn), "proposed", + lsquic_ver2str[conn->cn_version]); + ++engine->n_conns; + lsquic_conn_record_sockaddr(conn, peer_ctx, local_sa, peer_sa); + if (0 != add_conn_to_hash(engine, conn, local_sa, peer_ctx)) + { + const lsquic_cid_t *cid = lsquic_conn_log_cid(conn); + LSQ_WARNC("cannot add connection %"CID_FMT" to hash - destroy", + CID_BITS(cid)); + destroy_conn(engine, conn, lsquic_time_now()); + goto err; + } + assert(!(conn->cn_flags & + (CONN_REF_FLAGS + & ~LSCONN_TICKABLE /* This flag may be set as effect of user + callbacks */ + ))); + conn->cn_flags |= LSCONN_HASHED; + if (!(conn->cn_flags & LSCONN_TICKABLE)) + { + lsquic_mh_insert(&engine->conns_tickable, conn, conn->cn_last_ticked); + engine_incref_conn(conn, LSCONN_TICKABLE); + } + lsquic_conn_set_ctx(conn, conn_ctx); + conn->cn_if->ci_client_call_on_new(conn); + end: + return conn; + err: + conn = NULL; + goto end; +} + + +static void +remove_conn_from_hash (lsquic_engine_t *engine, lsquic_conn_t *conn) +{ + remove_all_cces_from_hash(engine->conns_hash, conn); + (void) engine_decref_conn(engine, conn, LSCONN_HASHED); +} + + +static void +refflags2str (enum lsquic_conn_flags flags, char s[7]) +{ + *s = 'C'; s += !!(flags & LSCONN_CLOSING); + *s = 'H'; s += !!(flags & LSCONN_HASHED); + *s = 'O'; s += !!(flags & LSCONN_HAS_OUTGOING); + *s = 'T'; s += !!(flags & LSCONN_TICKABLE); + *s = 'A'; s += !!(flags & LSCONN_ATTQ); + *s = 'K'; s += !!(flags & LSCONN_TICKED); + *s = '\0'; +} + + +static void +engine_incref_conn (lsquic_conn_t *conn, enum lsquic_conn_flags flag) +{ + char str[2][7]; + assert(flag & CONN_REF_FLAGS); + assert(!(conn->cn_flags & flag)); + conn->cn_flags |= flag; + LSQ_DEBUGC("incref %sconn %"CID_FMT", '%s' -> '%s'", + (conn->cn_flags &LSCONN_MINI) ? "mini-" : "", + CID_BITS(lsquic_conn_log_cid(conn)), + (refflags2str(conn->cn_flags & ~flag, str[0]), str[0]), + (refflags2str(conn->cn_flags, str[1]), str[1])); +} + + +static lsquic_conn_t * +engine_decref_conn (lsquic_engine_t *engine, lsquic_conn_t *conn, + enum lsquic_conn_flags flags) +{ + char str[2][7]; + lsquic_time_t now; + assert(flags & CONN_REF_FLAGS); + assert(conn->cn_flags & flags); +#ifndef NDEBUG + if (flags & LSCONN_CLOSING) + assert(0 == (conn->cn_flags & LSCONN_HASHED)); +#endif + conn->cn_flags &= ~flags; + LSQ_DEBUGC("decref %sconn %"CID_FMT", '%s' -> '%s'", + (conn->cn_flags &LSCONN_MINI) ? "mini-" : "", + CID_BITS(lsquic_conn_log_cid(conn)), + (refflags2str(conn->cn_flags | flags, str[0]), str[0]), + (refflags2str(conn->cn_flags, str[1]), str[1])); + if (0 == (conn->cn_flags & CONN_REF_FLAGS)) + { + now = lsquic_time_now(); + if (conn->cn_flags & LSCONN_MINI) + eng_hist_inc(&engine->history, now, sl_del_mini_conns); + else + eng_hist_inc(&engine->history, now, sl_del_full_conns); + destroy_conn(engine, conn, now); + return NULL; + } + else + return conn; +} + + +/* This is not a general-purpose function. Only call from engine dtor. */ +static void +force_close_conn (lsquic_engine_t *engine, lsquic_conn_t *conn) +{ + assert(engine->flags & ENG_DTOR); + const enum lsquic_conn_flags flags = conn->cn_flags; + assert(conn->cn_flags & CONN_REF_FLAGS); + assert(!(flags & LSCONN_HAS_OUTGOING)); /* Should be removed already */ + assert(!(flags & LSCONN_TICKABLE)); /* Should be removed already */ + assert(!(flags & LSCONN_CLOSING)); /* It is in transient queue? */ + if (flags & LSCONN_ATTQ) + { + lsquic_attq_remove(engine->attq, conn); + (void) engine_decref_conn(engine, conn, LSCONN_ATTQ); + } + if (flags & LSCONN_HASHED) + remove_conn_from_hash(engine, conn); +} + + +/* Iterator for tickable connections (those on the Tickable Queue). Before + * a connection is returned, it is removed from the Advisory Tick Time queue + * if necessary. + */ +static lsquic_conn_t * +conn_iter_next_tickable (struct lsquic_engine *engine) +{ + lsquic_conn_t *conn; + + if (engine->flags & ENG_SERVER) + while (1) + { + conn = lsquic_mh_pop(&engine->conns_tickable); + if (conn && (conn->cn_flags & LSCONN_SKIP_ON_PROC)) + (void) engine_decref_conn(engine, conn, LSCONN_TICKABLE); + else + break; + } + else + conn = lsquic_mh_pop(&engine->conns_tickable); + + if (conn) + conn = engine_decref_conn(engine, conn, LSCONN_TICKABLE); + if (conn && (conn->cn_flags & LSCONN_ATTQ)) + { + lsquic_attq_remove(engine->attq, conn); + conn = engine_decref_conn(engine, conn, LSCONN_ATTQ); + } + + return conn; +} + + +static void +cub_init (struct cid_update_batch *cub, lsquic_cids_update_f update, + void *update_ctx) +{ + cub->cub_update_cids = update; + cub->cub_update_ctx = update_ctx; + cub->cub_count = 0; +} + + +static void +cub_flush (struct cid_update_batch *cub) +{ + if (cub->cub_count > 0 && cub->cub_update_cids) + cub->cub_update_cids(cub->cub_update_ctx, cub->cub_peer_ctxs, + cub->cub_cids, cub->cub_count); + cub->cub_count = 0; +} + + +static void +cub_add (struct cid_update_batch *cub, const lsquic_cid_t *cid, void *peer_ctx) +{ + cub->cub_cids [ cub->cub_count ] = *cid; + cub->cub_peer_ctxs[ cub->cub_count ] = peer_ctx; + ++cub->cub_count; + if (cub->cub_count == sizeof(cub->cub_cids) / sizeof(cub->cub_cids[0])) + cub_flush(cub); +} + + +/* Process registered CIDs */ +static void +cub_add_cids_from_cces (struct cid_update_batch *cub, struct lsquic_conn *conn) +{ + struct cce_cid_iter citer; + struct conn_cid_elem *cce; + void *peer_ctx; + + peer_ctx = lsquic_conn_get_peer_ctx(conn, NULL); + for (cce = cce_iter_first(&citer, conn); cce; cce = cce_iter_next(&citer)) + if (cce->cce_flags & CCE_REG) + cub_add(cub, &cce->cce_cid, peer_ctx); +} + + +static void +drop_all_mini_conns (lsquic_engine_t *engine) +{ + struct lsquic_hash_elem *el; + lsquic_conn_t *conn; + struct cid_update_batch cub; + + cub_init(&cub, engine->report_old_scids, engine->scids_ctx); + + for (el = lsquic_hash_first(engine->conns_hash); el; + el = lsquic_hash_next(engine->conns_hash)) + { + conn = lsquic_hashelem_getdata(el); + if (conn->cn_flags & LSCONN_MINI) + { + /* If promoted, why is it still in this hash? */ + assert(!(conn->cn_flags & LSCONN_PROMOTED)); + if (!(conn->cn_flags & LSCONN_PROMOTED)) + cub_add_cids_from_cces(&cub, conn); + remove_conn_from_hash(engine, conn); + } + } + + cub_flush(&cub); +} + + +unsigned +lsquic_engine_get_conns_count (lsquic_engine_t *engine) +{ + return engine->n_conns; +} + + +void +lsquic_engine_process_conns (lsquic_engine_t *engine) +{ + lsquic_conn_t *conn; + lsquic_time_t now; + +#if LSQUIC_CONN_STATS + if (engine->busy.pin_conn) + { + update_busy_detector(engine, engine->busy.pin_conn, 1); + engine->busy.pin_conn = NULL; + } +#endif + + ENGINE_IN(engine); + + now = lsquic_time_now(); + while ((conn = lsquic_attq_pop(engine->attq, now))) + { + conn = engine_decref_conn(engine, conn, LSCONN_ATTQ); + if (conn && !(conn->cn_flags & LSCONN_TICKABLE)) + { + lsquic_mh_insert(&engine->conns_tickable, conn, conn->cn_last_ticked); + engine_incref_conn(conn, LSCONN_TICKABLE); + } + } + + process_connections(engine, conn_iter_next_tickable, now); + ENGINE_OUT(engine); +} + + +static void +release_or_return_enc_data (struct lsquic_engine *engine, + void (*pmi_rel_or_ret) (void *, void *, void *, char), + struct lsquic_conn *conn, struct lsquic_packet_out *packet_out) +{ + pmi_rel_or_ret(engine->pub.enp_pmi_ctx, packet_out->po_path->np_peer_ctx, + packet_out->po_enc_data, lsquic_packet_out_ipv6(packet_out)); + packet_out->po_flags &= ~PO_ENCRYPTED; + packet_out->po_enc_data = NULL; +} + + +static void +release_enc_data (struct lsquic_engine *engine, struct lsquic_conn *conn, + struct lsquic_packet_out *packet_out) +{ + release_or_return_enc_data(engine, engine->pub.enp_pmi->pmi_release, + conn, packet_out); +} + + +static void +return_enc_data (struct lsquic_engine *engine, struct lsquic_conn *conn, + struct lsquic_packet_out *packet_out) +{ + release_or_return_enc_data(engine, engine->pub.enp_pmi->pmi_return, + conn, packet_out); +} + + +static int +copy_packet (struct lsquic_engine *engine, struct lsquic_conn *conn, + struct lsquic_packet_out *packet_out) +{ + int ipv6; + + ipv6 = NP_IS_IPv6(packet_out->po_path); + if (packet_out->po_flags & PO_ENCRYPTED) + { + if (ipv6 == lsquic_packet_out_ipv6(packet_out) + && packet_out->po_data_sz == packet_out->po_enc_data_sz + && 0 == memcmp(packet_out->po_data, packet_out->po_enc_data, + packet_out->po_data_sz)) + return 0; + if (ipv6 == lsquic_packet_out_ipv6(packet_out) + && packet_out->po_data_sz <= packet_out->po_enc_data_sz) + goto copy; + return_enc_data(engine, conn, packet_out); + } + + packet_out->po_enc_data = engine->pub.enp_pmi->pmi_allocate( + engine->pub.enp_pmi_ctx, packet_out->po_path->np_peer_ctx, + conn->cn_conn_ctx, packet_out->po_data_sz, ipv6); + if (!packet_out->po_enc_data) + { + LSQ_DEBUG("could not allocate memory for outgoing unencrypted packet " + "of size %hu", packet_out->po_data_sz); + return -1; + } + + copy: + memcpy(packet_out->po_enc_data, packet_out->po_data, + packet_out->po_data_sz); + packet_out->po_enc_data_sz = packet_out->po_data_sz; + packet_out->po_sent_sz = packet_out->po_data_sz; + packet_out->po_flags &= ~PO_IPv6; + packet_out->po_flags |= PO_ENCRYPTED|PO_SENT_SZ|(ipv6 << POIPv6_SHIFT); + + return 0; +} + + +STAILQ_HEAD(conns_stailq, lsquic_conn); +TAILQ_HEAD(conns_tailq, lsquic_conn); + + +struct conns_out_iter +{ + struct min_heap *coi_heap; + struct pr_queue *coi_prq; + TAILQ_HEAD(, lsquic_conn) coi_active_list, + coi_inactive_list; + lsquic_conn_t *coi_next; +#ifndef NDEBUG + lsquic_time_t coi_last_sent; +#endif +}; + + +static void +coi_init (struct conns_out_iter *iter, struct lsquic_engine *engine) +{ + iter->coi_heap = &engine->conns_out; + iter->coi_prq = engine->pr_queue; + iter->coi_next = NULL; + TAILQ_INIT(&iter->coi_active_list); + TAILQ_INIT(&iter->coi_inactive_list); +#ifndef NDEBUG + iter->coi_last_sent = 0; +#endif +} + + +static lsquic_conn_t * +coi_next (struct conns_out_iter *iter) +{ + lsquic_conn_t *conn; + + if (lsquic_mh_count(iter->coi_heap) > 0) + { + conn = lsquic_mh_pop(iter->coi_heap); + TAILQ_INSERT_TAIL(&iter->coi_active_list, conn, cn_next_out); + conn->cn_flags |= LSCONN_COI_ACTIVE; +#ifndef NDEBUG + if (iter->coi_last_sent) + assert(iter->coi_last_sent <= conn->cn_last_sent); + iter->coi_last_sent = conn->cn_last_sent; +#endif + return conn; + } + else if (iter->coi_prq && (conn = lsquic_prq_next_conn(iter->coi_prq))) + { + return conn; + } + else if (!TAILQ_EMPTY(&iter->coi_active_list)) + { + iter->coi_prq = NULL; /* Save function call in previous conditional */ + conn = iter->coi_next; + if (!conn) + conn = TAILQ_FIRST(&iter->coi_active_list); + if (conn) + iter->coi_next = TAILQ_NEXT(conn, cn_next_out); + return conn; + } + else + return NULL; +} + + +static void +coi_deactivate (struct conns_out_iter *iter, lsquic_conn_t *conn) +{ + if (!(conn->cn_flags & LSCONN_EVANESCENT)) + { + assert(!TAILQ_EMPTY(&iter->coi_active_list)); + TAILQ_REMOVE(&iter->coi_active_list, conn, cn_next_out); + conn->cn_flags &= ~LSCONN_COI_ACTIVE; + TAILQ_INSERT_TAIL(&iter->coi_inactive_list, conn, cn_next_out); + conn->cn_flags |= LSCONN_COI_INACTIVE; + } +} + + +static void +coi_reactivate (struct conns_out_iter *iter, lsquic_conn_t *conn) +{ + assert(conn->cn_flags & LSCONN_COI_INACTIVE); + TAILQ_REMOVE(&iter->coi_inactive_list, conn, cn_next_out); + conn->cn_flags &= ~LSCONN_COI_INACTIVE; + TAILQ_INSERT_TAIL(&iter->coi_active_list, conn, cn_next_out); + conn->cn_flags |= LSCONN_COI_ACTIVE; +} + + +static void +coi_reheap (struct conns_out_iter *iter, lsquic_engine_t *engine) +{ + lsquic_conn_t *conn; + while ((conn = TAILQ_FIRST(&iter->coi_active_list))) + { + TAILQ_REMOVE(&iter->coi_active_list, conn, cn_next_out); + conn->cn_flags &= ~LSCONN_COI_ACTIVE; + if ((conn->cn_flags & CONN_REF_FLAGS) != LSCONN_HAS_OUTGOING + && !(conn->cn_flags & LSCONN_IMMED_CLOSE)) + lsquic_mh_insert(iter->coi_heap, conn, conn->cn_last_sent); + else /* Closed connection gets one shot at sending packets */ + (void) engine_decref_conn(engine, conn, LSCONN_HAS_OUTGOING); + } + while ((conn = TAILQ_FIRST(&iter->coi_inactive_list))) + { + TAILQ_REMOVE(&iter->coi_inactive_list, conn, cn_next_out); + conn->cn_flags &= ~LSCONN_COI_INACTIVE; + (void) engine_decref_conn(engine, conn, LSCONN_HAS_OUTGOING); + } +} + + +#if CAN_LOSE_PACKETS +static void +lose_matching_packets (const lsquic_engine_t *engine, struct out_batch *batch, + unsigned n) +{ + const lsquic_cid_t *cid; + struct iovec *iov; + unsigned i; + char packno_str[22]; + + for (i = 0; i < n; ++i) + { + snprintf(packno_str, sizeof(packno_str), "#%"PRIu64, + batch->packets[i]->po_packno); + if (0 == regexec(&engine->lose_packets_re, packno_str, 0, NULL, 0)) + { + for (iov = batch->outs[i].iov; iov < + batch->outs[i].iov + batch->outs[i].iovlen; ++iov) + batch->outs[i].iov->iov_len -= 1; + cid = lsquic_conn_log_cid(batch->conns[i]); + LSQ_WARNC("losing packet %s for connection %"CID_FMT, packno_str, + CID_BITS(cid)); + } + } +} + + +#endif + + +#ifdef NDEBUG +#define CONST_BATCH const +#else +#define CONST_BATCH +#endif + + +struct send_batch_ctx { + struct conns_stailq *closed_conns; + struct conns_tailq *ticked_conns; + struct conns_out_iter *conns_iter; + CONST_BATCH struct out_batch *batch; +}; + + +static void +close_conn_immediately (struct lsquic_engine *engine, + const struct send_batch_ctx *sb_ctx, struct lsquic_conn *conn) +{ + conn->cn_flags |= LSCONN_IMMED_CLOSE; + if (!(conn->cn_flags & LSCONN_CLOSING)) + { + STAILQ_INSERT_TAIL(sb_ctx->closed_conns, conn, cn_next_closed_conn); + engine_incref_conn(conn, LSCONN_CLOSING); + if (conn->cn_flags & LSCONN_HASHED) + remove_conn_from_hash(engine, conn); + } + if (conn->cn_flags & LSCONN_TICKED) + { + TAILQ_REMOVE(sb_ctx->ticked_conns, conn, cn_next_ticked); + engine_decref_conn(engine, conn, LSCONN_TICKED); + } +} + + +static void +close_conn_on_send_error (struct lsquic_engine *engine, + const struct send_batch_ctx *sb_ctx, int n, int e_val) +{ + const struct out_batch *batch = sb_ctx->batch; + struct lsquic_conn *const conn = batch->conns[n]; + char buf[2][INET6_ADDRSTRLEN + sizeof(":65535")]; + + LSQ_WARNC("error sending packet for %s connection %"CID_FMT" - close it; " + "src: %s; dst: %s; errno: %d", + conn->cn_flags & LSCONN_EVANESCENT ? "evanecsent" : + conn->cn_flags & LSCONN_MINI ? "mini" : "regular", + CID_BITS(lsquic_conn_log_cid(conn)), + SA2STR(batch->outs[n].local_sa, buf[0]), + SA2STR(batch->outs[n].dest_sa, buf[1]), + e_val); + if (conn->cn_flags & LSCONN_EVANESCENT) + lsquic_prq_drop(conn); + else + close_conn_immediately(engine, sb_ctx, conn); +} + + +static void +apply_hp (struct conns_out_iter *iter) +{ + struct lsquic_conn *conn; + + TAILQ_FOREACH(conn, &iter->coi_active_list, cn_next_out) + if (conn->cn_esf_c->esf_flush_encryption && conn->cn_enc_session) + conn->cn_esf_c->esf_flush_encryption(conn->cn_enc_session); + TAILQ_FOREACH(conn, &iter->coi_inactive_list, cn_next_out) + if (conn->cn_esf_c->esf_flush_encryption && conn->cn_enc_session) + conn->cn_esf_c->esf_flush_encryption(conn->cn_enc_session); +} + + +#if LSQUIC_CONN_STATS +static void +update_batch_size_stats (struct lsquic_engine *engine, unsigned batch_size) +{ + struct batch_size_stats *const stats = &engine->pub.enp_batch_size_stats; + + ++stats->count; + if (batch_size > stats->max) + stats->max = batch_size; + if (batch_size < stats->min || 0 == stats->min) + stats->min = batch_size; + if (stats->avg) + stats->avg = ((float) batch_size - stats->avg) * 0.4 + stats->avg; + else + stats->avg = (float) batch_size; +} + + +#endif + + +static unsigned +send_batch (lsquic_engine_t *engine, const struct send_batch_ctx *sb_ctx, + unsigned n_to_send) +{ + int n_sent, i, e_val; + lsquic_time_t now; + unsigned off, skip; + size_t count; + CONST_BATCH struct out_batch *const batch = sb_ctx->batch; + struct lsquic_packet_out *CONST_BATCH *packet_out, *CONST_BATCH *end; + +#if LSQUIC_CONN_STATS + update_batch_size_stats(engine, n_to_send); +#endif + + apply_hp(sb_ctx->conns_iter); +#if CAN_LOSE_PACKETS + if (engine->flags & ENG_LOSE_PACKETS) + lose_matching_packets(engine, batch, n_to_send); +#endif + skip = 0; + restart_batch: + /* Set sent time before the write to avoid underestimating RTT */ + now = lsquic_time_now(); + for (i = skip; i < (int) (n_to_send - skip); ++i) + { + off = batch->pack_off[i]; + count = batch->outs[i].iovlen; + assert(count > 0); + packet_out = &batch->packets[off]; + end = packet_out + count; + do + (*packet_out)->po_sent = now; + while (++packet_out < end); + } + n_sent = engine->packets_out(engine->packets_out_ctx, batch->outs + skip, + n_to_send - skip); + e_val = errno; + if (n_sent < (int) (n_to_send - skip) && e_val != EMSGSIZE) + { + engine->pub.enp_flags &= ~ENPUB_CAN_SEND; + engine->resume_sending_at = now + 1000000; + LSQ_DEBUG("cannot send packets"); + EV_LOG_GENERIC_EVENT("cannot send packets"); + if (!(EAGAIN == e_val || EWOULDBLOCK == e_val)) + close_conn_on_send_error(engine, sb_ctx, + n_sent < 0 ? 0 : n_sent, e_val); + } + if (n_sent >= 0) + LSQ_DEBUG("packets out returned %d (out of %u)", n_sent, + n_to_send - skip); + else + { + LSQ_DEBUG("packets out returned an error: %s", strerror(e_val)); + n_sent = 0; + } + if (n_sent > 0) + engine->last_sent = now + n_sent; + for (i = skip; i < (int) (skip + n_sent); ++i) + { + eng_hist_inc(&engine->history, now, sl_packets_out); + /* `i' is added to maintain relative order */ + batch->conns[i]->cn_last_sent = now + i; + + off = batch->pack_off[i]; + count = batch->outs[i].iovlen; + assert(count > 0); + packet_out = &batch->packets[off]; + end = packet_out + count; + do + { +#if LOG_PACKET_CHECKSUM + log_packet_checksum(lsquic_conn_log_cid(batch->conns[i]), "out", + batch->outs[i].iov[packet_out - &batch->packets[off]].iov_base, + batch->outs[i].iov[packet_out - &batch->packets[off]].iov_len); +#endif + EV_LOG_PACKET_SENT(lsquic_conn_log_cid(batch->conns[i]), + *packet_out); + /* Release packet out buffer as soon as the packet is sent + * successfully. If not successfully sent, we hold on to + * this buffer until the packet sending is attempted again + * or until it times out and regenerated. + */ + if ((*packet_out)->po_flags & PO_ENCRYPTED) + release_enc_data(engine, batch->conns[i], *packet_out); + batch->conns[i]->cn_if->ci_packet_sent(batch->conns[i], + *packet_out); + } + while (++packet_out < end); + } + if (i < (int) n_to_send && e_val == EMSGSIZE) + { + LSQ_DEBUG("packet #%d could not be sent out for being too large", i); + if (batch->conns[i]->cn_if->ci_packet_too_large + && batch->outs[i].iovlen == 1) + { + off = batch->pack_off[i]; + packet_out = &batch->packets[off]; + batch->conns[i]->cn_if->ci_packet_too_large(batch->conns[i], + *packet_out); + ++i; + if (i < (int) n_to_send) + { + skip = i; + LSQ_DEBUG("restart batch starting at packet #%u", skip); + goto restart_batch; + } + n_sent = n_to_send; + } + else + close_conn_on_send_error(engine, sb_ctx, i, e_val); + } + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) + for ( ; i < (int) n_to_send; ++i) + { + off = batch->pack_off[i]; + count = batch->outs[i].iovlen; + assert(count > 0); + packet_out = &batch->packets[off]; + end = packet_out + count; + do + EV_LOG_PACKET_NOT_SENT(lsquic_conn_log_cid(batch->conns[i]), + *packet_out); + while (++packet_out < end); + } + /* Return packets to the connection in reverse order so that the packet + * ordering is maintained. + */ + for (i = (int) n_to_send - 1; i >= (int) (skip + n_sent); --i) + { + off = batch->pack_off[i]; + count = batch->outs[i].iovlen; + assert(count > 0); + packet_out = &batch->packets[off + count - 1]; + end = &batch->packets[off - 1]; + do + batch->conns[i]->cn_if->ci_packet_not_sent(batch->conns[i], + *packet_out); + while (--packet_out > end); + if (!(batch->conns[i]->cn_flags & (LSCONN_COI_ACTIVE|LSCONN_EVANESCENT))) + coi_reactivate(sb_ctx->conns_iter, batch->conns[i]); + } + return skip + n_sent; +} + + +/* Return 1 if went past deadline, 0 otherwise */ +static int +check_deadline (lsquic_engine_t *engine) +{ + if (engine->pub.enp_settings.es_proc_time_thresh && + lsquic_time_now() > engine->deadline) + { + LSQ_INFO("went past threshold of %u usec, stop sending", + engine->pub.enp_settings.es_proc_time_thresh); + engine->flags |= ENG_PAST_DEADLINE; + return 1; + } + else + return 0; +} + + +static size_t +iov_size (const struct iovec *iov, const struct iovec *const end) +{ + size_t size; + + assert(iov < end); + + size = 0; + do + size += iov->iov_len; + while (++iov < end); + + return size; +} + + +static void +send_packets_out (struct lsquic_engine *engine, + struct conns_tailq *ticked_conns, + struct conns_stailq *closed_conns) +{ + unsigned n, w, n_sent, n_batches_sent; + lsquic_packet_out_t *packet_out; + struct lsquic_packet_out **packet; + lsquic_conn_t *conn; + struct out_batch *const batch = &engine->out_batch; + struct iovec *iov, *packet_iov; + struct conns_out_iter conns_iter; + int shrink, deadline_exceeded; + const struct send_batch_ctx sb_ctx = { + closed_conns, + ticked_conns, + &conns_iter, + &engine->out_batch, + }; + + coi_init(&conns_iter, engine); + n_batches_sent = 0; + n_sent = 0, n = 0; + shrink = 0; + deadline_exceeded = 0; + iov = batch->iov; + packet = batch->packets; + + while ((conn = coi_next(&conns_iter))) + { + packet_out = conn->cn_if->ci_next_packet_to_send(conn, 0); + if (!packet_out) { + /* Evanescent connection always has a packet to send: */ + assert(!(conn->cn_flags & LSCONN_EVANESCENT)); + LSQ_DEBUGC("batched all outgoing packets for %s conn %"CID_FMT, + (conn->cn_flags & LSCONN_MINI ? "mini" : "full"), + CID_BITS(lsquic_conn_log_cid(conn))); + coi_deactivate(&conns_iter, conn); + continue; + } + batch->outs[n].iov = packet_iov = iov; + next_coa: + if (!(packet_out->po_flags & (PO_ENCRYPTED|PO_NOENCRYPT))) + { + switch (conn->cn_esf_c->esf_encrypt_packet(conn->cn_enc_session, + &engine->pub, conn, packet_out)) + { + case ENCPA_NOMEM: + /* Send what we have and wait for a more opportune moment */ + conn->cn_if->ci_packet_not_sent(conn, packet_out); + goto end_for; + case ENCPA_BADCRYPT: + /* This is pretty bad: close connection immediately */ + conn->cn_if->ci_packet_not_sent(conn, packet_out); + LSQ_INFOC("conn %"CID_FMT" has unsendable packets", + CID_BITS(lsquic_conn_log_cid(conn))); + if (!(conn->cn_flags & LSCONN_EVANESCENT)) + { + close_conn_immediately(engine, &sb_ctx, conn); + coi_deactivate(&conns_iter, conn); + } + continue; + case ENCPA_OK: + break; + } + } + else if ((packet_out->po_flags & PO_NOENCRYPT) + && engine->pub.enp_pmi != &stock_pmi) + { + if (0 != copy_packet(engine, conn, packet_out)) + { + /* Copy can only fail if packet could not be allocated */ + conn->cn_if->ci_packet_not_sent(conn, packet_out); + goto end_for; + } + } + LSQ_DEBUGC("batched packet #%"PRIu64" for connection %"CID_FMT, + packet_out->po_packno, CID_BITS(lsquic_conn_log_cid(conn))); + if (packet_out->po_flags & PO_ENCRYPTED) + { + iov->iov_base = packet_out->po_enc_data; + iov->iov_len = packet_out->po_enc_data_sz; + } + else + { + iov->iov_base = packet_out->po_data; + iov->iov_len = packet_out->po_data_sz; + } + if (packet_iov == iov) + { + batch->pack_off[n] = packet - batch->packets; + batch->outs [n].ecn = lsquic_packet_out_ecn(packet_out); + batch->outs [n].peer_ctx = packet_out->po_path->np_peer_ctx; + batch->outs [n].local_sa = NP_LOCAL_SA(packet_out->po_path); + batch->outs [n].dest_sa = NP_PEER_SA(packet_out->po_path); + batch->outs [n].conn_ctx = conn->cn_conn_ctx; + batch->conns [n] = conn; + } + *packet = packet_out; + ++packet; + ++iov; + if ((conn->cn_flags & LSCONN_IETF) + && ((1 << packet_out->po_header_type) + & ((1 << HETY_INITIAL)|(1 << HETY_HANDSHAKE)|(1 << HETY_0RTT))) +#ifndef NDEBUG + && (engine->flags & ENG_COALESCE) +#endif + && iov < batch->iov + sizeof(batch->iov) / sizeof(batch->iov[0])) + { + const struct to_coal to_coal = { + .prev_packet = packet_out, + .prev_sz_sum = iov_size(packet_iov, iov), + }; + packet_out = conn->cn_if->ci_next_packet_to_send(conn, &to_coal); + if (packet_out) + goto next_coa; + } + batch->outs [n].iovlen = iov - packet_iov; + ++n; + if (n == engine->batch_size + || iov >= batch->iov + sizeof(batch->iov) / sizeof(batch->iov[0])) + { + w = send_batch(engine, &sb_ctx, n); + n = 0; + iov = batch->iov; + packet = batch->packets; + ++n_batches_sent; + n_sent += w; + if (w < engine->batch_size) + { + shrink = 1; + break; + } + deadline_exceeded = check_deadline(engine); + if (deadline_exceeded) + break; + grow_batch_size(engine); + } + } + end_for: + + if (n > 0) { + w = send_batch(engine, &sb_ctx, n); + n_sent += w; + shrink = w < n; + ++n_batches_sent; + } + + if (shrink) + shrink_batch_size(engine); + else if (n_batches_sent > 1) + { + deadline_exceeded = check_deadline(engine); + if (!deadline_exceeded) + grow_batch_size(engine); + } + + coi_reheap(&conns_iter, engine); + + LSQ_DEBUG("%s: sent %u packet%.*s", __func__, n_sent, n_sent != 1, "s"); +} + + +int +lsquic_engine_has_unsent_packets (lsquic_engine_t *engine) +{ + return lsquic_mh_count(&engine->conns_out) > 0 + || (engine->pr_queue && lsquic_prq_have_pending(engine->pr_queue)) + ; +} + + +static void +reset_deadline (lsquic_engine_t *engine, lsquic_time_t now) +{ + engine->deadline = now + engine->pub.enp_settings.es_proc_time_thresh; + engine->flags &= ~ENG_PAST_DEADLINE; +} + + +static void +check_tickable_conns_again (struct lsquic_engine *engine) +{ + struct lsquic_hash_elem *el; + struct lsquic_conn *conn; + unsigned count; + + count = 0; + for (el = lsquic_hash_first(engine->conns_hash); el; + el = lsquic_hash_next(engine->conns_hash)) + { + conn = lsquic_hashelem_getdata(el); + if (!(conn->cn_flags & LSCONN_TICKABLE) + && conn->cn_if->ci_is_tickable(conn)) + { + lsquic_mh_insert(&engine->conns_tickable, conn, + conn->cn_last_ticked); + engine_incref_conn(conn, LSCONN_TICKABLE); + ++count; + } + } + LSQ_DEBUG("%u connection%s tickable again after sending has been " + "re-enabled", count, count == 1 ? " is" : "s are"); +} + + +void +lsquic_engine_send_unsent_packets (lsquic_engine_t *engine) +{ + lsquic_conn_t *conn; + struct conns_stailq closed_conns; + struct conns_tailq ticked_conns = TAILQ_HEAD_INITIALIZER(ticked_conns); + struct cid_update_batch cub; + + ENGINE_IN(engine); + cub_init(&cub, engine->report_old_scids, engine->scids_ctx); + STAILQ_INIT(&closed_conns); + reset_deadline(engine, lsquic_time_now()); + if (!(engine->pub.enp_flags & ENPUB_CAN_SEND)) + { + LSQ_DEBUG("can send again"); + EV_LOG_GENERIC_EVENT("can send again"); + engine->pub.enp_flags |= ENPUB_CAN_SEND; + check_tickable_conns_again(engine); + } + + send_packets_out(engine, &ticked_conns, &closed_conns); + + while ((conn = STAILQ_FIRST(&closed_conns))) { + STAILQ_REMOVE_HEAD(&closed_conns, cn_next_closed_conn); + if ((conn->cn_flags & (LSCONN_MINI|LSCONN_PROMOTED)) == LSCONN_MINI) + cub_add_cids_from_cces(&cub, conn); + (void) engine_decref_conn(engine, conn, LSCONN_CLOSING); + } + + cub_flush(&cub); + ENGINE_OUT(engine); +} + + +static lsquic_conn_t * +next_new_full_conn (struct conns_stailq *new_full_conns) +{ + lsquic_conn_t *conn; + + conn = STAILQ_FIRST(new_full_conns); + if (conn) + STAILQ_REMOVE_HEAD(new_full_conns, cn_next_new_full); + return conn; +} + + +#if LSQUIC_CONN_STATS +static void +maybe_log_conn_stats (struct lsquic_engine *engine, struct lsquic_conn *conn, + lsquic_time_t now) +{ + char cidstr[MAX_CID_LEN * 2 + 1]; + + if (!LSQ_LOG_ENABLED_EXT(LSQ_LOG_NOTICE, LSQLM_CONN_STATS)) + return; + + if (conn->cn_last_ticked + 1000000 >= now) + { + if (0 == engine->busy.last_log + || engine->busy.last_log + 1000000 - 1000 < now) + { + engine->busy.last_log = now; + conn->cn_if->ci_log_stats(conn); + } + } + else + { + lsquic_logger_log1(LSQ_LOG_NOTICE, LSQLM_CONN_STATS, + "stop logging status for connection %s: no longer busy", + (lsquic_cid2str(lsquic_conn_log_cid(conn), cidstr), cidstr)); + engine->busy.current = NULL; + engine->busy.last_log = 0; + } +} + + +#endif + + +static void +process_connections (lsquic_engine_t *engine, conn_iter_f next_conn, + lsquic_time_t now) +{ + lsquic_conn_t *conn; + enum tick_st tick_st; + unsigned i, why; + lsquic_time_t next_tick_time; + struct conns_stailq closed_conns; + struct conns_tailq ticked_conns; + struct conns_stailq new_full_conns; + struct cid_update_batch cub_old, cub_live; + cub_init(&cub_old, engine->report_old_scids, engine->scids_ctx); + cub_init(&cub_live, engine->report_live_scids, engine->scids_ctx); + + eng_hist_tick(&engine->history, now); + + STAILQ_INIT(&closed_conns); + TAILQ_INIT(&ticked_conns); + reset_deadline(engine, now); + STAILQ_INIT(&new_full_conns); + + if (!(engine->pub.enp_flags & ENPUB_CAN_SEND) + && now > engine->resume_sending_at) + { + LSQ_NOTICE("failsafe activated: resume sending packets again after " + "timeout"); + EV_LOG_GENERIC_EVENT("resume sending packets again after timeout"); + engine->pub.enp_flags |= ENPUB_CAN_SEND; + } + + i = 0; + while ((conn = next_conn(engine)) + || (conn = next_new_full_conn(&new_full_conns))) + { + tick_st = conn->cn_if->ci_tick(conn, now); +#if LSQUIC_CONN_STATS + if (conn == engine->busy.current) + maybe_log_conn_stats(engine, conn, now); +#endif + conn->cn_last_ticked = now + i /* Maintain relative order */ ++; + if (tick_st & TICK_PROMOTE) + { + lsquic_conn_t *new_conn; + EV_LOG_CONN_EVENT(lsquic_conn_log_cid(conn), + "scheduled for promotion"); + assert(conn->cn_flags & LSCONN_MINI); + new_conn = new_full_conn_server(engine, conn, now); + if (new_conn) + { + STAILQ_INSERT_TAIL(&new_full_conns, new_conn, cn_next_new_full); + new_conn->cn_last_sent = engine->last_sent; + eng_hist_inc(&engine->history, now, sl_new_full_conns); + conn->cn_flags |= LSCONN_PROMOTED; + } + tick_st |= TICK_CLOSE; /* Destroy mini connection */ + } + if (tick_st & TICK_RETRY) + { + assert(conn->cn_flags & LSCONN_MINI); + schedule_mini_retry(engine, conn, now); + } + if (tick_st & TICK_SEND) + { + if (!(conn->cn_flags & LSCONN_HAS_OUTGOING)) + { + lsquic_mh_insert(&engine->conns_out, conn, conn->cn_last_sent); + engine_incref_conn(conn, LSCONN_HAS_OUTGOING); + } + } + if (tick_st & TICK_CLOSE) + { + STAILQ_INSERT_TAIL(&closed_conns, conn, cn_next_closed_conn); + engine_incref_conn(conn, LSCONN_CLOSING); + if (conn->cn_flags & LSCONN_HASHED) + remove_conn_from_hash(engine, conn); + } + else + { + TAILQ_INSERT_TAIL(&ticked_conns, conn, cn_next_ticked); + engine_incref_conn(conn, LSCONN_TICKED); + if ((engine->flags & ENG_SERVER) && conn->cn_if->ci_report_live + && conn->cn_if->ci_report_live(conn, now)) + cub_add_cids_from_cces(&cub_live, conn); + } + } + + cub_flush(&engine->new_scids); + + if ((engine->pub.enp_flags & ENPUB_CAN_SEND) + && lsquic_engine_has_unsent_packets(engine)) + send_packets_out(engine, &ticked_conns, &closed_conns); + + while ((conn = STAILQ_FIRST(&closed_conns))) { + STAILQ_REMOVE_HEAD(&closed_conns, cn_next_closed_conn); + if ((conn->cn_flags & (LSCONN_MINI|LSCONN_PROMOTED)) == LSCONN_MINI) + cub_add_cids_from_cces(&cub_old, conn); + (void) engine_decref_conn(engine, conn, LSCONN_CLOSING); + } + + while ((conn = TAILQ_FIRST(&ticked_conns))) + { + TAILQ_REMOVE(&ticked_conns, conn, cn_next_ticked); + engine_decref_conn(engine, conn, LSCONN_TICKED); + if (!(conn->cn_flags & LSCONN_TICKABLE) + && conn->cn_if->ci_is_tickable(conn)) + { + /* Floyd heapification is not faster, don't bother. */ + lsquic_mh_insert(&engine->conns_tickable, conn, conn->cn_last_ticked); + engine_incref_conn(conn, LSCONN_TICKABLE); + } + else if (!(conn->cn_flags & LSCONN_ATTQ)) + { + next_tick_time = conn->cn_if->ci_next_tick_time(conn, &why); + if (next_tick_time) + { + if (0 == lsquic_attq_add(engine->attq, conn, next_tick_time, + why)) + engine_incref_conn(conn, LSCONN_ATTQ); + } + else + /* In all other cases, the idle timeout would make the next + * tick time non-zero: + */ + assert((conn->cn_flags & LSCONN_IETF) + && engine->pub.enp_settings.es_idle_timeout == 0); + } + } + + cub_flush(&cub_live); + cub_flush(&cub_old); +} + + +static void +maybe_count_garbage (struct lsquic_engine *engine, size_t garbage_sz) +{ + /* This is not very pretty (action at a distance via engine->curr_conn), + * but it's the cheapest I can come up with to handle the "count garbage + * toward amplification limit" requirement in + * [draft-ietf-quic-transport-28] Section 8.1. + */ + if (engine->curr_conn && engine->curr_conn->cn_if->ci_count_garbage) + engine->curr_conn->cn_if->ci_count_garbage(engine->curr_conn, + garbage_sz); +} + + +/* Return 0 if packet is being processed by a real connection, 1 if the + * packet was processed, but not by a connection, and -1 on error. + */ +int +lsquic_engine_packet_in (lsquic_engine_t *engine, + const unsigned char *packet_in_data, size_t packet_in_size, + const struct sockaddr *sa_local, const struct sockaddr *sa_peer, + void *peer_ctx, int ecn) +{ + const unsigned char *const packet_begin = packet_in_data; + const unsigned char *const packet_end = packet_in_data + packet_in_size; + struct packin_parse_state ppstate; + lsquic_packet_in_t *packet_in; + int (*parse_packet_in_begin) (struct lsquic_packet_in *, size_t length, + int is_server, unsigned cid_len, struct packin_parse_state *); + unsigned n_zeroes; + int s, is_ietf; + lsquic_cid_t cid; + + ENGINE_CALLS_INCR(engine); + + if (engine->flags & ENG_SERVER) + parse_packet_in_begin = lsquic_parse_packet_in_server_begin; + else if (engine->flags & ENG_CONNS_BY_ADDR) + { + struct lsquic_hash_elem *el; + const struct lsquic_conn *conn; + el = find_conn_by_addr(engine->conns_hash, sa_local); + if (!el) + return -1; + conn = lsquic_hashelem_getdata(el); + if ((1 << conn->cn_version) & LSQUIC_GQUIC_HEADER_VERSIONS) + parse_packet_in_begin = lsquic_gquic_parse_packet_in_begin; + else if ((1 << conn->cn_version) & LSQUIC_IETF_VERSIONS) + parse_packet_in_begin = lsquic_ietf_v1_parse_packet_in_begin; + else if (conn->cn_version == LSQVER_050) + parse_packet_in_begin = lsquic_Q050_parse_packet_in_begin; + else + { + assert(conn->cn_version == LSQVER_046); + parse_packet_in_begin = lsquic_Q046_parse_packet_in_begin; + } + } + else + parse_packet_in_begin = lsquic_parse_packet_in_begin; + + engine->curr_conn = NULL; + n_zeroes = 0; + is_ietf = 0; +#ifdef _MSC_VER + s = 0; + cid.len = 0; + cid.idbuf[0] = 0; +#endif + do + { + packet_in = lsquic_mm_get_packet_in(&engine->pub.enp_mm); + if (!packet_in) + return -1; + /* Library does not modify packet_in_data, it is not referenced after + * this function returns and subsequent release of pi_data is guarded + * by PI_OWN_DATA flag. + */ + packet_in->pi_data = (unsigned char *) packet_in_data; + packet_in->pi_pkt_size = packet_in_size; + if (0 != parse_packet_in_begin(packet_in, packet_end - packet_in_data, + engine->flags & ENG_SERVER, + engine->pub.enp_settings.es_scid_len, &ppstate)) + { + LSQ_DEBUG("Cannot parse incoming packet's header"); + maybe_count_garbage(engine, packet_end - packet_in_data); + lsquic_mm_put_packet_in(&engine->pub.enp_mm, packet_in); + s = 1; + break; + } + + /* [draft-ietf-quic-transport-30] Section 12.2: + * " Receivers SHOULD ignore any subsequent packets with a different + * " Destination Connection ID than the first packet in the datagram. + */ + if (is_ietf && packet_in_data > packet_begin) + { + if (!((packet_in->pi_flags & (PI_GQUIC|PI_CONN_ID)) == PI_CONN_ID + && LSQUIC_CIDS_EQ(&packet_in->pi_dcid, &cid))) + { + packet_in_data += packet_in->pi_data_sz; + maybe_count_garbage(engine, packet_in->pi_data_sz); + lsquic_mm_put_packet_in(&engine->pub.enp_mm, packet_in); + continue; + } + } + + is_ietf = 0 == (packet_in->pi_flags & PI_GQUIC); + packet_in_data += packet_in->pi_data_sz; + if (is_ietf && packet_in_data < packet_end) + { + cid = packet_in->pi_dcid; + if (packet_begin == packet_in->pi_data) /* Only log once: */ + LSQ_DEBUGC("received coalesced datagram of %zd bytes for " + "connection %"CID_FMT, packet_in_size, CID_BITS(&cid)); + } + packet_in->pi_received = lsquic_time_now(); + packet_in->pi_flags |= (3 & ecn) << PIBIT_ECN_SHIFT; + eng_hist_inc(&engine->history, packet_in->pi_received, sl_packets_in); + s = process_packet_in(engine, packet_in, &ppstate, sa_local, sa_peer, + peer_ctx, packet_in_size); + n_zeroes += s == 0; + } + while (0 == s && packet_in_data < packet_end); + + return n_zeroes > 0 ? 0 : s; +} + + +#if __GNUC__ && !defined(NDEBUG) +__attribute__((weak)) +#endif +unsigned +lsquic_engine_quic_versions (const lsquic_engine_t *engine) +{ + return engine->pub.enp_settings.es_versions; +} + + +void +lsquic_engine_cooldown (lsquic_engine_t *engine) +{ + struct lsquic_hash_elem *el; + lsquic_conn_t *conn; + + if (engine->flags & ENG_COOLDOWN) + /* AFAICT, there is no harm in calling this function more than once, + * but log it just in case, as it may indicate an error in the caller. + */ + LSQ_INFO("cooldown called again"); + engine->flags |= ENG_COOLDOWN; + LSQ_INFO("entering cooldown mode"); + if (engine->flags & ENG_SERVER) + drop_all_mini_conns(engine); + for (el = lsquic_hash_first(engine->conns_hash); el; + el = lsquic_hash_next(engine->conns_hash)) + { + conn = lsquic_hashelem_getdata(el); + lsquic_conn_going_away(conn); + } +} + + +#if LSQUIC_CONN_STATS +static void +update_busy_detector (struct lsquic_engine *engine, struct lsquic_conn *conn, + int immed) +{ + char cidstr[MAX_CID_LEN * 2 + 1]; + + if (!(LSQ_LOG_ENABLED_EXT(LSQ_LOG_NOTICE, LSQLM_CONN_STATS) + && conn->cn_if->ci_log_stats)) + return; + + if (conn == engine->busy.last_conn) + { + engine->busy.immed_ticks <<= 1u; + engine->busy.immed_ticks |= immed; + if (MAX_IMMED_TICKS == engine->busy.immed_ticks) + { + if (engine->busy.current != conn) + lsquic_logger_log1(LSQ_LOG_NOTICE, LSQLM_CONN_STATS, + "connection %s marked busy: it's had %u immediate ticks " + "in a row", + (lsquic_cid2str(lsquic_conn_log_cid(conn), cidstr), cidstr), + (unsigned) (sizeof(engine->busy.immed_ticks) * 8)); + engine->busy.current = conn; + } + } + else + engine->busy.immed_ticks <<= 1; + + engine->busy.last_conn = conn; +} + + +#endif + + +int +lsquic_engine_earliest_adv_tick (lsquic_engine_t *engine, int *diff) +{ + const struct attq_elem *next_attq; + lsquic_time_t now, next_time; +#if LSQUIC_DEBUG_NEXT_ADV_TICK || LSQUIC_CONN_STATS + struct lsquic_conn *conn; +#endif +#if LSQUIC_DEBUG_NEXT_ADV_TICK + const enum lsq_log_level L = LSQ_LOG_DEBUG; /* Easy toggle */ +#endif + + ENGINE_CALLS_INCR(engine); + + if ((engine->flags & ENG_PAST_DEADLINE) + && lsquic_mh_count(&engine->conns_out)) + { +#if LSQUIC_DEBUG_NEXT_ADV_TICK + if (LSQ_LOG_ENABLED(L)) + { + conn = lsquic_mh_peek(&engine->conns_out); + engine->last_logged_conn = 0; + LSQ_LOGC(L, "next advisory tick is now: went past deadline last time " + "and have %u outgoing connection%.*s (%"CID_FMT" first)", + lsquic_mh_count(&engine->conns_out), + lsquic_mh_count(&engine->conns_out) != 1, "s", + CID_BITS(lsquic_conn_log_cid(conn))); + } +#endif +#if LSQUIC_CONN_STATS + conn = lsquic_mh_peek(&engine->conns_out); + update_busy_detector(engine, conn, 1); +#endif + *diff = 0; + return 1; + } + + if ((engine->pub.enp_flags & ENPUB_CAN_SEND) + && engine->pr_queue && lsquic_prq_have_pending(engine->pr_queue)) + { +#if LSQUIC_DEBUG_NEXT_ADV_TICK + if (LSQ_LOG_ENABLED(L)) + { + engine->last_logged_conn = 0; + LSQ_LOG(L, "next advisory tick is now: have pending PRQ elements"); + } +#endif + *diff = 0; + return 1; + } + + if (lsquic_mh_count(&engine->conns_tickable)) + { +#if LSQUIC_DEBUG_NEXT_ADV_TICK + if (LSQ_LOG_ENABLED(L)) + { + conn = lsquic_mh_peek(&engine->conns_tickable); + engine->last_logged_conn = 0; + LSQ_LOGC(L, "next advisory tick is now: have %u tickable " + "connection%.*s (%"CID_FMT" first)", + lsquic_mh_count(&engine->conns_tickable), + lsquic_mh_count(&engine->conns_tickable) != 1, "s", + CID_BITS(lsquic_conn_log_cid(conn))); + } +#endif +#if LSQUIC_CONN_STATS + conn = lsquic_mh_peek(&engine->conns_tickable); + update_busy_detector(engine, conn, 1); +#endif + *diff = 0; + return 1; + } + + next_attq = lsquic_attq_next(engine->attq); + if (engine->pub.enp_flags & ENPUB_CAN_SEND) + { + if (next_attq) + next_time = next_attq->ae_adv_time; + else + return 0; + } + else + { + if (next_attq) + { + next_time = next_attq->ae_adv_time; + if (engine->resume_sending_at < next_time) + { + next_time = engine->resume_sending_at; + next_attq = NULL; + } + } + else + next_time = engine->resume_sending_at; + } + + now = lsquic_time_now(); + *diff = (int) ((int64_t) next_time - (int64_t) now); +#if LSQUIC_DEBUG_NEXT_ADV_TICK + if (LSQ_LOG_ENABLED(L)) + { + if (next_attq) + { + /* Deduplicate consecutive log messages about the same reason for the + * same connection. + * If diff is always zero or diff reset to a higher value, event is + * still logged. + */ + if (!((unsigned) next_attq->ae_why == engine->last_logged_ae_why + && (uintptr_t) next_attq->ae_conn + == engine->last_logged_conn + && *diff < engine->last_tick_diff)) + { + engine->last_logged_conn = (uintptr_t) next_attq->ae_conn; + engine->last_logged_ae_why = (unsigned) next_attq->ae_why; + engine->last_tick_diff = *diff; + LSQ_LOGC(L, "next advisory tick is %d usec away: conn %"CID_FMT + ": %s", *diff, CID_BITS(lsquic_conn_log_cid(next_attq->ae_conn)), + lsquic_attq_why2str(next_attq->ae_why)); + } + } + else + LSQ_LOG(L, "next advisory tick is %d usec away: resume sending", *diff); + } +#endif + +#if LSQUIC_CONN_STATS + if (next_attq) + update_busy_detector(engine, next_attq->ae_conn, + /* Immediate if: a) time is now or in the past */ + *diff <= 0 + /* b) next event is pacer, which means that the + * connection wants to send, but is prevented + * by the pacer from doing so. + */ + || next_attq->ae_why == AEW_PACER + /* c) next event is to retransmit data (meaning + * that there is data in flight) and the + * time is small, which implies a small RTT. + */ + || (next_attq->ae_why == N_AEWS + AL_RETX_APP + && *diff < 5000)); +#endif + + return 1; +} + + +unsigned +lsquic_engine_count_attq (lsquic_engine_t *engine, int from_now) +{ + lsquic_time_t now; + ENGINE_CALLS_INCR(engine); + now = lsquic_time_now(); + if (from_now < 0) + now -= from_now; + else + now += from_now; + return lsquic_attq_count_before(engine->attq, now); +} + + +int +lsquic_engine_add_cid (struct lsquic_engine_public *enpub, + struct lsquic_conn *conn, unsigned cce_idx) +{ + struct lsquic_engine *const engine = (struct lsquic_engine *) enpub; + struct conn_cid_elem *const cce = &conn->cn_cces[cce_idx]; + void *peer_ctx; + + assert(cce_idx < conn->cn_n_cces); + assert(conn->cn_cces_mask & (1 << cce_idx)); + assert(!(cce->cce_hash_el.qhe_flags & QHE_HASHED)); + + if (lsquic_hash_insert(engine->conns_hash, cce->cce_cid.idbuf, + cce->cce_cid.len, conn, &cce->cce_hash_el)) + { + LSQ_DEBUGC("add %"CID_FMT" to the list of SCIDs", + CID_BITS(&cce->cce_cid)); + peer_ctx = lsquic_conn_get_peer_ctx(conn, NULL); + cce->cce_flags |= CCE_REG; + cub_add(&engine->new_scids, &cce->cce_cid, peer_ctx); + return 0; + } + else + { + LSQ_WARNC("could not add new cid %"CID_FMT" to the SCID hash", + CID_BITS(&cce->cce_cid)); + return -1; + } +} + + +void +lsquic_engine_retire_cid (struct lsquic_engine_public *enpub, + struct lsquic_conn *conn, unsigned cce_idx, lsquic_time_t now, + lsquic_time_t drain_time) +{ + struct lsquic_engine *const engine = (struct lsquic_engine *) enpub; + struct conn_cid_elem *const cce = &conn->cn_cces[cce_idx]; + struct purga_el *puel; + void *peer_ctx; + + assert(cce_idx < conn->cn_n_cces); + + if (cce->cce_hash_el.qhe_flags & QHE_HASHED) + { + LSQ_DEBUGC("drop from conn hash-table CID %"CID_FMT, CID_BITS(&cce->cce_cid)); + lsquic_hash_erase(engine->conns_hash, &cce->cce_hash_el); + } + if (engine->purga) + { + peer_ctx = lsquic_conn_get_peer_ctx(conn, NULL); + puel = lsquic_purga_add(engine->purga, &cce->cce_cid, peer_ctx, + PUTY_CID_RETIRED, now); + if (puel) + puel->puel_time = now + drain_time; + } + conn->cn_cces_mask &= ~(1u << cce_idx); + LSQ_DEBUGC("retire CID %"CID_FMT, CID_BITS(&cce->cce_cid)); +} + + diff --git a/external/lsquic/src/liblsquic/lsquic_engine_public.h b/external/lsquic/src/liblsquic/lsquic_engine_public.h new file mode 100644 index 0000000..1b388a1 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_engine_public.h @@ -0,0 +1,122 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_engine_public.h -- Engine's "public interface" + * + * This structure is used to bundle things in engine that connections + * need. This way, the space per mini connection is one pointer instead + * of several. + */ + +#ifndef LSQUIC_ENGINE_PUBLIC_H +#define LSQUIC_ENGINE_PUBLIC_H 1 + +struct lsquic_cid; +struct lsquic_conn; +struct lsquic_engine; +struct stack_st_X509; +struct lsquic_hash; +struct lsquic_stream_if; +struct ssl_ctx_st; +struct crand; +struct evp_aead_ctx_st; +struct lsquic_server_config; +struct sockaddr; + +enum warning_type +{ + WT_ACKPARSE_MINI, + WT_ACKPARSE_FULL, + WT_NO_POISON, + N_WARNING_TYPES, +}; + +#define WARNING_INTERVAL (24ULL * 3600ULL * 1000000ULL) + +struct lsquic_engine_public { + struct lsquic_mm enp_mm; + struct lsquic_engine_settings enp_settings; + struct token_generator *enp_tokgen; + lsquic_lookup_cert_f enp_lookup_cert; + void *enp_cert_lu_ctx; + struct ssl_ctx_st * (*enp_get_ssl_ctx)(void *peer_ctx, + const struct sockaddr *); + const struct lsquic_shared_hash_if + *enp_shi; + void *enp_shi_ctx; + lsquic_time_t enp_last_warning[N_WARNING_TYPES]; + const struct lsquic_stream_if *enp_stream_if; + void *enp_stream_if_ctx; + const struct lsquic_hset_if *enp_hsi_if; + void *enp_hsi_ctx; + void (*enp_generate_scid)(void *, + struct lsquic_conn *, uint8_t *, unsigned); + void *enp_gen_scid_ctx; + int (*enp_verify_cert)(void *verify_ctx, + struct stack_st_X509 *chain); + void *enp_verify_ctx; + const struct lsquic_packout_mem_if + *enp_pmi; + void *enp_pmi_ctx; + struct lsquic_engine *enp_engine; + struct lsquic_hash *enp_srst_hash; + enum { + ENPUB_PROC = (1 << 0), /* Being processed by one of the user-facing + * functions. + */ + ENPUB_CAN_SEND = (1 << 1), + ENPUB_HTTP = (1 << 2), /* Engine in HTTP mode */ + } enp_flags; + unsigned char enp_ver_tags_buf[ sizeof(lsquic_ver_tag_t) * N_LSQVER ]; + unsigned enp_ver_tags_len; + struct crand *enp_crand; + struct evp_aead_ctx_st *enp_retry_aead_ctx; + unsigned char *enp_alpn; /* May be set if not HTTP */ + /* es_noprogress_timeout converted to microseconds for speed */ + lsquic_time_t enp_noprog_timeout; + lsquic_time_t enp_mtu_probe_timer; + /* Certs used by gQUIC server: */ + struct lsquic_hash *enp_compressed_server_certs; + struct lsquic_hash *enp_server_certs; + /* gQUIC server configuration: */ + struct lsquic_server_config *enp_server_config; + /* Serialized subset of server engine transport parameters that is used + * as SSL QUIC context. 0 is for version <= LSQVER_ID27, 1 is for others. + */ + unsigned char enp_quic_ctx_buf[2][200]; + unsigned enp_quic_ctx_sz[2]; +#if LSQUIC_CONN_STATS + struct batch_size_stats { + unsigned min, max, /* Minimum and maximum batch sizes */ + count; /* Number of batches sent */ + float avg; /* Average batch size */ + } enp_batch_size_stats; +#endif +}; + +/* Put connection onto the Tickable Queue if it is not already on it. If + * connection is being destroyed, this is a no-op. + */ +void +lsquic_engine_add_conn_to_tickable (struct lsquic_engine_public *, + lsquic_conn_t *); + +/* Put connection onto Advisory Tick Time Queue if it is not already on it. + */ +void +lsquic_engine_add_conn_to_attq (struct lsquic_engine_public *enpub, + lsquic_conn_t *, lsquic_time_t, unsigned why); + +void +lsquic_engine_retire_cid (struct lsquic_engine_public *, + struct lsquic_conn *, unsigned cce_idx, lsquic_time_t now, + lsquic_time_t drain_time); + +int +lsquic_engine_add_cid (struct lsquic_engine_public *, + struct lsquic_conn *, unsigned cce_idx); + +struct lsquic_conn * +lsquic_engine_find_conn (const struct lsquic_engine_public *pub, + const lsquic_cid_t *cid); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_ev_log.c b/external/lsquic/src/liblsquic/lsquic_ev_log.c new file mode 100644 index 0000000..10fd6ca --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_ev_log.c @@ -0,0 +1,598 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef WIN32 +#include +#else +#include +#endif +#include +#include +#include +#include +#include + +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_gquic.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_parse.h" +#include "lsquic_frame_common.h" +#include "lsquic_headers.h" +#include "lsquic_str.h" +#include "lsquic_frame_reader.h" +#include "lsquic_enc_sess.h" +#include "lsquic_ev_log.h" +#include "lsquic_sizes.h" +#include "lsquic_trans_params.h" +#include "lsquic_util.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsxpack_header.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_EVENT +#include "lsquic_logger.h" + + +/* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */ +/* |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| */ +/* Messages that do not include connection ID go above this point */ + +#define LSQUIC_LOG_CONN_ID cid +#define LCID(...) LSQ_LOG2(LSQ_LOG_DEBUG, __VA_ARGS__) /* LCID: log with CID */ + +/* Messages that are to include connection ID go below this point */ +/* |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| */ +/* VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV */ + +void +lsquic_ev_log_packet_in (const lsquic_cid_t *cid, + const lsquic_packet_in_t *packet_in) +{ + unsigned packet_sz; + + switch (packet_in->pi_flags & (PI_FROM_MINI|PI_GQUIC)) + { + case PI_FROM_MINI|PI_GQUIC: + LCID("RX packet #%"PRIu64" (mini)", packet_in->pi_packno); + break; + case PI_FROM_MINI: + LCID("RX packet #%"PRIu64" %s (mini), ecn: %u", + packet_in->pi_packno, lsquic_hety2str[packet_in->pi_header_type], + lsquic_packet_in_ecn(packet_in)); + break; + case PI_GQUIC: + packet_sz = packet_in->pi_data_sz + + (packet_in->pi_flags & PI_DECRYPTED ? GQUIC_PACKET_HASH_SZ : 0); + LCID("RX packet #%"PRIu64", size: %u", packet_in->pi_packno, packet_sz); + break; + default: + packet_sz = packet_in->pi_data_sz + + (packet_in->pi_flags & PI_DECRYPTED ? IQUIC_TAG_LEN : 0); + if (packet_in->pi_flags & PI_LOG_QL_BITS) + LCID("RX packet #%"PRIu64" %s, size: %u; ecn: %u, spin: %d; " + "path: %hhu; Q: %d; L: %d", + packet_in->pi_packno, lsquic_hety2str[packet_in->pi_header_type], + packet_sz, + lsquic_packet_in_ecn(packet_in), + /* spin bit value is only valid for short packet headers */ + lsquic_packet_in_spin_bit(packet_in), packet_in->pi_path_id, + ((packet_in->pi_flags & PI_SQUARE_BIT) > 0), + ((packet_in->pi_flags & PI_LOSS_BIT) > 0)); + else + LCID("RX packet #%"PRIu64" %s, size: %u; ecn: %u, spin: %d; " + "path: %hhu", + packet_in->pi_packno, lsquic_hety2str[packet_in->pi_header_type], + packet_sz, + lsquic_packet_in_ecn(packet_in), + /* spin bit value is only valid for short packet headers */ + lsquic_packet_in_spin_bit(packet_in), packet_in->pi_path_id); + break; + } +} + + +void +lsquic_ev_log_ack_frame_in (const lsquic_cid_t *cid, + const struct ack_info *acki) +{ + char buf[MAX_ACKI_STR_SZ]; + + lsquic_acki2str(acki, buf, sizeof(buf)); + LCID("RX ACK frame: %s", buf); +} + + +void +lsquic_ev_log_stream_frame_in (const lsquic_cid_t *cid, + const struct stream_frame *frame) +{ + LCID("RX STREAM frame: stream %"PRIu64"; offset %"PRIu64"; size %"PRIu16 + "; fin: %d", frame->stream_id, frame->data_frame.df_offset, + frame->data_frame.df_size, (int) frame->data_frame.df_fin); +} + + +void +lsquic_ev_log_crypto_frame_in (const lsquic_cid_t *cid, + const struct stream_frame *frame, unsigned enc_level) +{ + LCID("RX CRYPTO frame: level %u; offset %"PRIu64"; size %"PRIu16, + enc_level, frame->data_frame.df_offset, frame->data_frame.df_size); +} + + +void +lsquic_ev_log_stop_waiting_frame_in (const lsquic_cid_t *cid, + lsquic_packno_t least) +{ + LCID("RX STOP_WAITING frame: least unacked packno %"PRIu64, least); +} + + +void +lsquic_ev_log_window_update_frame_in (const lsquic_cid_t *cid, + lsquic_stream_id_t stream_id, uint64_t offset) +{ + LCID("RX WINDOW_UPDATE frame: stream %"PRIu64"; offset %"PRIu64, + stream_id, offset); +} + + +void +lsquic_ev_log_blocked_frame_in (const lsquic_cid_t *cid, + lsquic_stream_id_t stream_id) +{ + LCID("RX BLOCKED frame: stream %"PRIu64, stream_id); +} + + +void +lsquic_ev_log_connection_close_frame_in (const lsquic_cid_t *cid, + uint64_t error_code, int reason_len, const char *reason) +{ + LCID("RX CONNECTION_CLOSE frame: error code %"PRIu64", reason: %.*s", + error_code, reason_len, reason); +} + + +void +lsquic_ev_log_goaway_frame_in (const lsquic_cid_t *cid, uint32_t error_code, + lsquic_stream_id_t stream_id, int reason_len, const char *reason) +{ + LCID("RX GOAWAY frame: error code %"PRIu32", stream %"PRIu64 + ", reason: %.*s", error_code, stream_id, reason_len, reason); +} + + +void +lsquic_ev_log_rst_stream_frame_in (const lsquic_cid_t *cid, + lsquic_stream_id_t stream_id, uint64_t offset, uint64_t error_code) +{ + LCID("RX RST_STREAM frame: error code %"PRIu64", stream %"PRIu64 + ", offset: %"PRIu64, error_code, stream_id, offset); +} + + +void +lsquic_ev_log_stop_sending_frame_in (const lsquic_cid_t *cid, + lsquic_stream_id_t stream_id, uint64_t error_code) +{ + LCID("RX STOP_SENDING frame: error code %"PRIu64", stream %"PRIu64, + error_code, stream_id); +} + + +void +lsquic_ev_log_padding_frame_in (const lsquic_cid_t *cid, size_t len) +{ + LCID("RX PADDING frame of %zd bytes", len); +} + + +void +lsquic_ev_log_ping_frame_in (const lsquic_cid_t *cid) +{ + LCID("RX PING frame"); +} + + +void +lsquic_ev_log_packet_created (const lsquic_cid_t *cid, + const struct lsquic_packet_out *packet_out) +{ + LCID("created packet #%"PRIu64" %s; flags: version=%d, nonce=%d, conn_id=%d", + packet_out->po_packno, + lsquic_hety2str[packet_out->po_header_type], + !!(packet_out->po_flags & PO_VERSION), + !!(packet_out->po_flags & PO_NONCE), + !!(packet_out->po_flags & PO_CONN_ID)); +} + + +void +lsquic_ev_log_packet_sent (const lsquic_cid_t *cid, + const struct lsquic_packet_out *packet_out) +{ + char frames[lsquic_frame_types_str_sz]; + if (lsquic_packet_out_verneg(packet_out)) + LCID("TX version negotiation packet, size %hu", + packet_out->po_data_sz); + else if (lsquic_packet_out_retry(packet_out)) + LCID("TX stateless retry packet, size %hu", packet_out->po_data_sz); + else if (lsquic_packet_out_pubres(packet_out)) + LCID("TX public reset packet, size %hu", packet_out->po_data_sz); + else if (packet_out->po_lflags & POL_GQUIC) + LCID("TX packet #%"PRIu64" (%s), size %hu", + packet_out->po_packno, + /* Frame types is a list of different frames types contained + * in the packet, no more. Count and order of frames is not + * printed. + */ + lsquic_frame_types_to_str(frames, sizeof(frames), + packet_out->po_frame_types), + packet_out->po_enc_data_sz); + else if (packet_out->po_lflags & POL_LOG_QL_BITS) + LCID("TX packet #%"PRIu64" %s (%s), size %hu, " + "ecn: %u, spin: %d; kp: %u, path: %hhu, flags: %u; " + "Q: %u; L: %u", + packet_out->po_packno, lsquic_hety2str[packet_out->po_header_type], + /* Frame types is a list of different frames types contained + * in the packet, no more. Count and order of frames is not + * printed. + */ + lsquic_frame_types_to_str(frames, sizeof(frames), + packet_out->po_frame_types), + packet_out->po_enc_data_sz, + lsquic_packet_out_ecn(packet_out), + /* spin bit value is only valid for short packet headers */ + lsquic_packet_out_spin_bit(packet_out), + lsquic_packet_out_kp(packet_out), + packet_out->po_path->np_path_id, + (unsigned) packet_out->po_flags, + lsquic_packet_out_square_bit(packet_out), + lsquic_packet_out_loss_bit(packet_out)); + else + LCID("TX packet #%"PRIu64" %s (%s), size %hu, " + "ecn: %u, spin: %d; kp: %u, path: %hhu, flags: %u", + packet_out->po_packno, lsquic_hety2str[packet_out->po_header_type], + /* Frame types is a list of different frames types contained + * in the packet, no more. Count and order of frames is not + * printed. + */ + lsquic_frame_types_to_str(frames, sizeof(frames), + packet_out->po_frame_types), + packet_out->po_enc_data_sz, + lsquic_packet_out_ecn(packet_out), + /* spin bit value is only valid for short packet headers */ + lsquic_packet_out_spin_bit(packet_out), + lsquic_packet_out_kp(packet_out), + packet_out->po_path->np_path_id, + (unsigned) packet_out->po_flags); +} + + +void +lsquic_ev_log_packet_not_sent (const lsquic_cid_t *cid, + const struct lsquic_packet_out *packet_out) +{ + char frames[lsquic_frame_types_str_sz]; + LCID("unsent packet #%"PRIu64" %s, size %hu", + packet_out->po_packno, + /* Frame types is a list of different frames types contained in + * the packet, no more. Count and order of frames is not printed. + */ + lsquic_frame_types_to_str(frames, sizeof(frames), + packet_out->po_frame_types), + packet_out->po_enc_data_sz); +} + + +void +lsquic_ev_log_http_headers_in (const lsquic_cid_t *cid, int is_server, + const struct uncompressed_headers *uh) +{ + const struct http1x_headers *h1h; + const char *cr, *p; + + if (uh->uh_flags & UH_PP) + LCID("read push promise; stream %"PRIu64", promised stream %"PRIu64, + uh->uh_stream_id, uh->uh_oth_stream_id); + else + LCID("read %s headers; stream: %"PRIu64", depends on stream: %"PRIu64 + ", weight: %hu, exclusive: %d, fin: %d", + is_server ? "request" : "response", + uh->uh_stream_id, uh->uh_oth_stream_id, uh->uh_weight, + (int) uh->uh_exclusive, !!(uh->uh_flags & UH_FIN)); + + if (uh->uh_flags & UH_H1H) + { + h1h = uh->uh_hset; + for (p = h1h->h1h_buf; p < h1h->h1h_buf + h1h->h1h_size; p = cr + 2) + { + cr = strchr(p, '\r'); + if (cr && cr > p) + LCID(" %.*s", (int) (cr - p), p); + else + break; + } + } +} + + +void +lsquic_ev_log_action_stream_frame (const lsquic_cid_t *cid, + const struct parse_funcs *pf, const unsigned char *buf, size_t bufsz, + const char *what) +{ + struct stream_frame frame; + int len; + + len = pf->pf_parse_stream_frame(buf, bufsz, &frame); + if (len > 0) + LCID("%s STREAM frame: stream %"PRIu64", offset: %"PRIu64 + ", size: %"PRIu16", fin: %d", what, frame.stream_id, + frame.data_frame.df_offset, frame.data_frame.df_size, + frame.data_frame.df_fin); + else + LSQ_LOG2(LSQ_LOG_WARN, "cannot parse STREAM frame"); +} + + +void +lsquic_ev_log_generated_crypto_frame (const lsquic_cid_t *cid, + const struct parse_funcs *pf, const unsigned char *buf, size_t bufsz) +{ + struct stream_frame frame; + int len; + + len = pf->pf_parse_crypto_frame(buf, bufsz, &frame); + if (len > 0) + LCID("generated CRYPTO frame: offset: %"PRIu64", size: %"PRIu16, + frame.data_frame.df_offset, frame.data_frame.df_size); + else + LSQ_LOG2(LSQ_LOG_WARN, "cannot parse CRYPTO frame"); +} + + +void +lsquic_ev_log_generated_ack_frame (const lsquic_cid_t *cid, + const struct parse_funcs *pf, const unsigned char *ack_buf, + size_t ack_buf_sz) +{ + struct ack_info acki; + int len; + char buf[MAX_ACKI_STR_SZ]; + + len = pf->pf_parse_ack_frame(ack_buf, ack_buf_sz, &acki, + TP_DEF_ACK_DELAY_EXP); + if (len < 0) + { + LSQ_LOG2(LSQ_LOG_WARN, "cannot parse ACK frame"); + return; + } + + lsquic_acki2str(&acki, buf, sizeof(buf)); + LCID("generated ACK frame: %s", buf); +} + + +void +lsquic_ev_log_generated_new_token_frame (const lsquic_cid_t *cid, + const struct parse_funcs *pf, const unsigned char *frame_buf, + size_t frame_buf_sz) +{ + const unsigned char *token; + size_t sz; + char *buf; + int len; + + len = pf->pf_parse_new_token_frame(frame_buf, frame_buf_sz, &token, &sz); + if (len < 0) + { + LSQ_LOG2(LSQ_LOG_WARN, "cannot parse NEW_TOKEN frame"); + return; + } + + buf = malloc(sz * 2 + 1); + if (buf) + { + lsquic_hexstr(token, sz, buf, sz * 2 + 1); + LCID("generated NEW_TOKEN frame: %s", buf); + free(buf); + } +} + + +void +lsquic_ev_log_generated_path_chal_frame (const lsquic_cid_t *cid, + const struct parse_funcs *pf, const unsigned char *frame_buf, + size_t frame_buf_sz) +{ + uint64_t chal; + int len; + char hexbuf[sizeof(chal) * 2 + 1]; + + len = pf->pf_parse_path_chal_frame(frame_buf, frame_buf_sz, &chal); + if (len > 0) + LCID("generated PATH_CHALLENGE(%s) frame", + HEXSTR((unsigned char *) &chal, sizeof(chal), hexbuf)); + else + LSQ_LOG2(LSQ_LOG_WARN, "cannot parse PATH_CHALLENGE frame"); +} + + +void +lsquic_ev_log_generated_path_resp_frame (const lsquic_cid_t *cid, + const struct parse_funcs *pf, const unsigned char *frame_buf, + size_t frame_buf_sz) +{ + uint64_t resp; + int len; + char hexbuf[sizeof(resp) * 2 + 1]; + + len = pf->pf_parse_path_resp_frame(frame_buf, frame_buf_sz, &resp); + if (len > 0) + LCID("generated PATH_RESPONSE(%s) frame", + HEXSTR((unsigned char *) &resp, sizeof(resp), hexbuf)); + else + LSQ_LOG2(LSQ_LOG_WARN, "cannot parse PATH_RESPONSE frame"); +} + + +void +lsquic_ev_log_generated_new_connection_id_frame (const lsquic_cid_t *cid, + const struct parse_funcs *pf, const unsigned char *frame_buf, + size_t frame_buf_sz) +{ + const unsigned char *token; + lsquic_cid_t new_cid; + uint64_t seqno, retire_prior_to; + int len; + char token_buf[IQUIC_SRESET_TOKEN_SZ * 2 + 1]; + char cid_buf[MAX_CID_LEN * 2 + 1]; + + len = pf->pf_parse_new_conn_id(frame_buf, frame_buf_sz, &seqno, + &retire_prior_to, &new_cid, &token); + if (len < 0) + { + LSQ_LOG2(LSQ_LOG_WARN, "cannot parse NEW_CONNECTION_ID frame"); + return; + } + + lsquic_hexstr(new_cid.idbuf, new_cid.len, cid_buf, sizeof(cid_buf)); + lsquic_hexstr(token, IQUIC_SRESET_TOKEN_SZ, token_buf, sizeof(token_buf)); + LCID("generated NEW_CONNECTION_ID frame: seqno: %"PRIu64"; retire prior " + "to: %"PRIu64"; cid: %s; token: %s", seqno, retire_prior_to, + cid_buf, token_buf); +} + + +void +lsquic_ev_log_generated_stop_waiting_frame (const lsquic_cid_t *cid, + lsquic_packno_t lunack) +{ + LCID("generated STOP_WAITING frame; least unacked: %"PRIu64, lunack); +} + + +void +lsquic_ev_log_generated_stop_sending_frame (const lsquic_cid_t *cid, + lsquic_stream_id_t stream_id, uint16_t error_code) +{ + LCID("generated STOP_SENDING frame; stream ID: %"PRIu64"; error code: " + "%"PRIu16, stream_id, error_code); +} + + +void +lsquic_ev_log_generated_http_headers (const lsquic_cid_t *cid, + lsquic_stream_id_t stream_id, + int is_server, const struct http_prio_frame *prio_frame, + const struct lsquic_http_headers *headers) +{ + lsquic_stream_id_t dep_stream_id; + int exclusive, i; + unsigned short weight; + + if (is_server) + LCID("generated HTTP response HEADERS for stream %"PRIu64, stream_id); + else + { + memcpy(&dep_stream_id, prio_frame->hpf_stream_id, 4); + dep_stream_id = htonl(dep_stream_id); + exclusive = dep_stream_id >> 31; + dep_stream_id &= ~(1 << 31); + weight = prio_frame->hpf_weight + 1; + LCID("generated HTTP request HEADERS for stream %"PRIu64 + ", dep stream: %"PRIu64", weight: %hu, exclusive: %d", stream_id, + dep_stream_id, weight, exclusive); + } + + for (i = 0; i < headers->count; ++i) + if (headers->headers[i].buf) + LCID(" %.*s: %.*s", + (int) headers->headers[i].name_len, + lsxpack_header_get_name(&headers->headers[i]), + (int) headers->headers[i].val_len, + lsxpack_header_get_value(&headers->headers[i])); +} + + +void +lsquic_ev_log_generated_http_push_promise (const lsquic_cid_t *cid, + lsquic_stream_id_t stream_id, lsquic_stream_id_t promised_stream_id, + const struct lsquic_http_headers *headers) +{ + int i; + + LCID("generated HTTP PUSH_PROMISE for stream %"PRIu64"; promised stream %" + PRIu64, stream_id, promised_stream_id); + + for (i = 0; i < headers->count; ++i) + if (headers->headers[i].buf) + LCID(" %.*s: %.*s", + (int) headers->headers[i].name_len, + lsxpack_header_get_name(&headers->headers[i]), + (int) headers->headers[i].val_len, + lsxpack_header_get_value(&headers->headers[i])); +} + +void +lsquic_ev_log_create_connection (const lsquic_cid_t *cid, + const struct sockaddr *local_sa, + const struct sockaddr *peer_sa) +{ + LCID("connection created"); +} + + +void +lsquic_ev_log_hsk_completed (const lsquic_cid_t *cid) +{ + LCID("handshake completed"); +} + + +void +lsquic_ev_log_sess_resume (const lsquic_cid_t *cid) +{ + LCID("sess_resume successful"); +} + + +void +lsquic_ev_log_check_certs (const lsquic_cid_t *cid, const lsquic_str_t **certs, + size_t count) +{ + LCID("check certs"); +} + + +void +lsquic_ev_log_cert_chain (const lsquic_cid_t *cid, struct stack_st_X509 *chain) +{ + X509_NAME *name; + X509 *cert; + unsigned i; + char buf[0x100]; + + for (i = 0; i < sk_X509_num(chain); ++i) + { + cert = sk_X509_value(chain, i); + name = X509_get_subject_name(cert); + LCID("cert #%u: name: %s", i, + X509_NAME_oneline(name, buf, sizeof(buf))); + } +} + + +void +lsquic_ev_log_version_negotiation (const lsquic_cid_t *cid, + const char *action, const char *ver) +{ + LCID("version negotiation: %s version %s", action, ver); +} diff --git a/external/lsquic/src/liblsquic/lsquic_ev_log.h b/external/lsquic/src/liblsquic/lsquic_ev_log.h new file mode 100644 index 0000000..5e4a9f4 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_ev_log.h @@ -0,0 +1,353 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_ev_log.h -- Event logger + */ + +#ifndef LSQUIC_EV_LOG_H +#define LSQUIC_EV_LOG_H 1 + +#include "lsquic_int_types.h" +#include "lsquic_qlog.h" + +struct ack_info; +struct http_prio_frame; +struct lsquic_http_headers; +struct lsquic_packet_in; +struct lsquic_packet_out; +struct parse_funcs; +struct stream_frame; +struct uncompressed_headers; +struct stack_st_X509; + + +/* Log a generic event not tied to any particular connection */ +#define EV_LOG_GENERIC_EVENT(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_logger_log1(LSQ_LOG_DEBUG, LSQLM_EVENT, __VA_ARGS__); \ +} while (0) + +/* Log a generic event associated with connection `cid' */ +#define EV_LOG_CONN_EVENT(cid, ...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_logger_log2(LSQ_LOG_DEBUG, LSQLM_EVENT, cid, __VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_packet_in (const lsquic_cid_t *, const struct lsquic_packet_in *); + +#define EV_LOG_PACKET_IN(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_packet_in(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_ack_frame_in (const lsquic_cid_t *, const struct ack_info *); + +#define EV_LOG_ACK_FRAME_IN(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_ack_frame_in(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_stream_frame_in (const lsquic_cid_t *, + const struct stream_frame *); + +#define EV_LOG_STREAM_FRAME_IN(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_stream_frame_in(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_crypto_frame_in (const lsquic_cid_t *, + const struct stream_frame *, unsigned enc_level); + +#define EV_LOG_CRYPTO_FRAME_IN(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_crypto_frame_in(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_window_update_frame_in (const lsquic_cid_t *, lsquic_stream_id_t, + uint64_t offset); + +#define EV_LOG_WINDOW_UPDATE_FRAME_IN(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_window_update_frame_in(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_blocked_frame_in (const lsquic_cid_t *, lsquic_stream_id_t); + +#define EV_LOG_BLOCKED_FRAME_IN(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_blocked_frame_in(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_stop_waiting_frame_in (const lsquic_cid_t *, lsquic_packno_t); + +#define EV_LOG_STOP_WAITING_FRAME_IN(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_stop_waiting_frame_in(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_connection_close_frame_in (const lsquic_cid_t *, + uint64_t error_code, int reason_len, const char *reason); + +#define EV_LOG_CONNECTION_CLOSE_FRAME_IN(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_connection_close_frame_in(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_goaway_frame_in (const lsquic_cid_t *, uint32_t error_code, + lsquic_stream_id_t, int reason_len, const char *reason); + +#define EV_LOG_GOAWAY_FRAME_IN(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_goaway_frame_in(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_rst_stream_frame_in (const lsquic_cid_t *, lsquic_stream_id_t, + uint64_t offset, uint64_t error_code); + +#define EV_LOG_RST_STREAM_FRAME_IN(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_rst_stream_frame_in(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_stop_sending_frame_in (const lsquic_cid_t *,lsquic_stream_id_t, + uint64_t error_code); + +#define EV_LOG_STOP_SENDING_FRAME_IN(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_stop_sending_frame_in(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_padding_frame_in (const lsquic_cid_t *, size_t len); + +#define EV_LOG_PADDING_FRAME_IN(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_padding_frame_in(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_ping_frame_in (const lsquic_cid_t *); + +#define EV_LOG_PING_FRAME_IN(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_ping_frame_in(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_packet_created (const lsquic_cid_t *, + const struct lsquic_packet_out *); + +#define EV_LOG_PACKET_CREATED(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_packet_created(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_packet_sent (const lsquic_cid_t *, + const struct lsquic_packet_out *); + +#define EV_LOG_PACKET_SENT(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_packet_sent(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_packet_not_sent (const lsquic_cid_t *, + const struct lsquic_packet_out *); + +#define EV_LOG_PACKET_NOT_SENT(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_packet_not_sent(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_http_headers_in (const lsquic_cid_t *, int is_server, + const struct uncompressed_headers *); + +#define EV_LOG_HTTP_HEADERS_IN(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_http_headers_in(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_action_stream_frame (const lsquic_cid_t *, + const struct parse_funcs *pf, + const unsigned char *, size_t len, const char *action); + +#define EV_LOG_GENERATED_STREAM_FRAME(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_action_stream_frame(__VA_ARGS__, "generated"); \ +} while (0) + +#define EV_LOG_UPDATED_STREAM_FRAME(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_action_stream_frame(__VA_ARGS__, "updated"); \ +} while (0) + +void +lsquic_ev_log_generated_crypto_frame (const lsquic_cid_t *, + const struct parse_funcs *pf, + const unsigned char *, size_t len); + +#define EV_LOG_GENERATED_CRYPTO_FRAME(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_generated_crypto_frame(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_generated_ack_frame (const lsquic_cid_t *, + const struct parse_funcs *, const unsigned char *, size_t len); + +#define EV_LOG_GENERATED_ACK_FRAME(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_generated_ack_frame(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_generated_new_token_frame (const lsquic_cid_t *, + const struct parse_funcs *, const unsigned char *, size_t len); + +#define EV_LOG_GENERATED_NEW_TOKEN_FRAME(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_generated_new_token_frame(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_generated_path_chal_frame (const lsquic_cid_t *, + const struct parse_funcs *, const unsigned char *, size_t len); + +#define EV_LOG_GENERATED_PATH_CHAL_FRAME(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_generated_path_chal_frame(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_generated_path_resp_frame (const lsquic_cid_t *, + const struct parse_funcs *, const unsigned char *, size_t len); + +#define EV_LOG_GENERATED_PATH_RESP_FRAME(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_generated_path_resp_frame(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_generated_new_connection_id_frame (const lsquic_cid_t *, + const struct parse_funcs *, const unsigned char *, size_t len); + +#define EV_LOG_GENERATED_NEW_CONNECTION_ID_FRAME(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_generated_new_connection_id_frame(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_generated_stop_waiting_frame (const lsquic_cid_t *, + lsquic_packno_t); + +#define EV_LOG_GENERATED_STOP_WAITING_FRAME(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_generated_stop_waiting_frame(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_generated_stop_sending_frame (const lsquic_cid_t *, + lsquic_stream_id_t, uint16_t); + +#define EV_LOG_GENERATED_STOP_SENDING_FRAME(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_generated_stop_sending_frame(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_generated_http_headers (const lsquic_cid_t *, lsquic_stream_id_t, + int is_server, const struct http_prio_frame *, + const struct lsquic_http_headers *); + + +#define EV_LOG_GENERATED_HTTP_HEADERS(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_generated_http_headers(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_generated_http_push_promise (const lsquic_cid_t *, + lsquic_stream_id_t stream_id, lsquic_stream_id_t promised_stream_id, + const struct lsquic_http_headers *headers); + +#define EV_LOG_GENERATED_HTTP_PUSH_PROMISE(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_generated_http_push_promise(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_create_connection (const lsquic_cid_t *, const struct sockaddr *, + const struct sockaddr *); + +#define EV_LOG_CREATE_CONN(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_create_connection(__VA_ARGS__); \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_QLOG)) \ + lsquic_qlog_create_connection(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_hsk_completed (const lsquic_cid_t *); + +#define EV_LOG_HSK_COMPLETED(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_hsk_completed(__VA_ARGS__); \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_QLOG)) \ + lsquic_qlog_hsk_completed(__VA_ARGS__); \ +} while (0) + + +void +lsquic_ev_log_sess_resume (const lsquic_cid_t *); + +#define EV_LOG_SESSION_RESUMPTION(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_sess_resume(__VA_ARGS__); \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_QLOG)) \ + lsquic_qlog_sess_resume(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_check_certs (const lsquic_cid_t *, const lsquic_str_t **, size_t); + +#define EV_LOG_CHECK_CERTS(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_check_certs(__VA_ARGS__); \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_QLOG)) \ + lsquic_qlog_check_certs(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_cert_chain (const lsquic_cid_t *, struct stack_st_X509 *); + +#define EV_LOG_CERT_CHAIN(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_cert_chain(__VA_ARGS__); \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_QLOG)) \ + lsquic_qlog_cert_chain(__VA_ARGS__); \ +} while (0) + +void +lsquic_ev_log_version_negotiation (const lsquic_cid_t *, const char *, const char *); + +#define EV_LOG_VER_NEG(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ + lsquic_ev_log_version_negotiation(__VA_ARGS__); \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_QLOG)) \ + lsquic_qlog_version_negotiation(__VA_ARGS__); \ +} while (0) + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_frab_list.c b/external/lsquic/src/liblsquic/lsquic_frab_list.c new file mode 100644 index 0000000..8083c32 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_frab_list.c @@ -0,0 +1,148 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_frab_list.c -- List of buffer for simple reading and writing + */ + +#include +#include +#include +#include + +#include "lsquic_frab_list.h" + + +static void * +fral_alloc (void *ctx, size_t size) +{ + return malloc(size); +} + + +static void +fral_free (void *ctx, void *obj) +{ + free(obj); +} + + +void +lsquic_frab_list_init (struct frab_list *fral, unsigned short buf_size, + void * (*alloc)(void *alloc_ctx, size_t size), + void (*free)(void *alloc_ctx, void *obj), void *alloc_ctx) +{ + TAILQ_INIT(&fral->fl_frabs); + fral->fl_alloc_ctx = alloc_ctx; + fral->fl_alloc = alloc ? alloc : fral_alloc; + fral->fl_free = free ? free : fral_free; + fral->fl_buf_size = buf_size; + fral->fl_size = 0; +} + + +void +lsquic_frab_list_cleanup (struct frab_list *fral) +{ + struct frame_buf *frab, *next; + + for (frab = TAILQ_FIRST(&fral->fl_frabs); frab; frab = next) + { + next = TAILQ_NEXT(frab, frab_next); + fral->fl_free(fral->fl_alloc_ctx, frab); + } +} + + +static struct frame_buf * +fral_get_frab (struct frab_list *fral) +{ + struct frame_buf *frab; + frab = fral->fl_alloc(fral->fl_alloc_ctx, fral->fl_buf_size); + if (frab) + { + memset(frab, 0, sizeof(*frab)); + frab->frab_buf_size = fral->fl_buf_size; + } + return frab; +} + + +int +lsquic_frab_list_write (struct frab_list *fral, const void *buf, size_t bufsz) +{ + const unsigned char *p = buf; + const unsigned char *const end = p + bufsz; + struct frame_buf *frab; + unsigned ntowrite; + + while (p < end) + { + frab = TAILQ_LAST(&fral->fl_frabs, frame_buf_head); + if (!(frab && (ntowrite = frab_left_to_write(frab)) > 0)) + { + frab = fral_get_frab(fral); + if (!frab) + return -1; + TAILQ_INSERT_TAIL(&fral->fl_frabs, frab, frab_next); + ntowrite = frab_left_to_write(frab); + } + if ((ptrdiff_t) ntowrite > end - p) + ntowrite = end - p; + memcpy(frab_write_to(frab), p, ntowrite); + p += ntowrite; + frab->frab_size += ntowrite; + } + + fral->fl_size += bufsz; + return 0; +} + + +size_t +lsquic_frab_list_size (void *ctx) +{ + struct frab_list *fral = ctx; + return fral->fl_size; +} + + +size_t +lsquic_frab_list_read (void *ctx, void *buf, size_t bufsz) +{ + struct frab_list *const fral = ctx; + unsigned char *p = buf; + unsigned char *const end = p + bufsz; + struct frame_buf *frab; + size_t ntocopy; + + while (p < end && (frab = TAILQ_FIRST(&fral->fl_frabs))) + { + ntocopy = end - p; + if (ntocopy > (size_t) frab_left_to_read(frab)) + ntocopy = frab_left_to_read(frab); + memcpy(p, frab->frab_buf + frab->frab_off, ntocopy); + fral->fl_size -= ntocopy; + frab->frab_off += ntocopy; + p += ntocopy; + if (frab->frab_off == frab->frab_size) + { + TAILQ_REMOVE(&fral->fl_frabs, frab, frab_next); + fral->fl_free(fral->fl_alloc_ctx, frab); + } + } + + return p - (unsigned char *) buf; +} + + +size_t +lsquic_frab_list_mem_used (const struct frab_list *fral) +{ + struct frame_buf *frab; + size_t size; + + size = sizeof(*fral); + TAILQ_FOREACH(frab, &fral->fl_frabs, frab_next) + size += fral->fl_buf_size; + + return size; +} diff --git a/external/lsquic/src/liblsquic/lsquic_frab_list.h b/external/lsquic/src/liblsquic/lsquic_frab_list.h new file mode 100644 index 0000000..d129778 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_frab_list.h @@ -0,0 +1,77 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_frab_list.h -- List of buffer for simple reading and writing + * + * Useful for buffering data that cannot be packetized immediately. + */ + +#ifndef LSQUIC_FRAB_LIST_H +#define LSQUIC_FRAB_LIST_H 1 + +struct frame_buf +{ + TAILQ_ENTRY(frame_buf) frab_next; + unsigned short frab_size, + frab_off, + frab_buf_size; /* Total bytes in frab_buf */ + unsigned char frab_buf[0]; +}; + +static inline unsigned short +frab_left_to_read (struct frame_buf *f) +{ + return f->frab_size - f->frab_off; +} + +static inline unsigned short +frab_left_to_write (struct frame_buf *f) +{ + return f->frab_buf_size - + (unsigned short) sizeof(*f) - f->frab_size; +} + +static inline unsigned char * +frab_write_to (struct frame_buf *f) +{ + return f->frab_buf + f->frab_size; +} + +TAILQ_HEAD(frame_buf_head, frame_buf); + +struct frab_list +{ + struct frame_buf_head fl_frabs; + void * (*fl_alloc)(void *alloc_ctx, size_t size); + void (*fl_free)(void *alloc_ctx, void *obj); + void *fl_alloc_ctx; + size_t fl_size; /* Size of payload in frab_list */ + unsigned short fl_buf_size; /* Size of frame_buf */ +}; + +void +lsquic_frab_list_init (struct frab_list *, unsigned short buf_size, + void * (*fl_alloc)(void *alloc_ctx, size_t size), + void (*fl_free)(void *alloc_ctx, void *obj), void *fl_alloc_ctx); + +void +lsquic_frab_list_cleanup (struct frab_list *); + +int +lsquic_frab_list_write (struct frab_list *, const void *, size_t); + +size_t +lsquic_frab_list_size (void *); + +size_t +lsquic_frab_list_read (void *, void *, size_t); + +static inline int +lsquic_frab_list_empty (const struct frab_list *fral) +{ + return TAILQ_EMPTY(&(fral)->fl_frabs); +} + +size_t +lsquic_frab_list_mem_used (const struct frab_list *); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_frame_common.c b/external/lsquic/src/liblsquic/lsquic_frame_common.c new file mode 100644 index 0000000..26907b7 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_frame_common.c @@ -0,0 +1,26 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include + +#include "lsquic_frame_common.h" + + +const char * +lsquic_http_setting_id2str (enum settings_param id) +{ + switch (id) + { + case SETTINGS_HEADER_TABLE_SIZE: + return "SETTINGS_HEADER_TABLE_SIZE"; + case SETTINGS_ENABLE_PUSH: + return "SETTINGS_ENABLE_PUSH"; + case SETTINGS_MAX_CONCURRENT_STREAMS: + return "SETTINGS_MAX_CONCURRENT_STREAMS"; + case SETTINGS_INITIAL_WINDOW_SIZE: + return "SETTINGS_INITIAL_WINDOW_SIZE"; + case SETTINGS_MAX_FRAME_SIZE: + return "SETTINGS_MAX_FRAME_SIZE"; + case SETTINGS_MAX_HEADER_LIST_SIZE: + return "SETTINGS_MAX_HEADER_LIST_SIZE"; + } + return ""; +} diff --git a/external/lsquic/src/liblsquic/lsquic_frame_common.h b/external/lsquic/src/liblsquic/lsquic_frame_common.h new file mode 100644 index 0000000..8b2e0d2 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_frame_common.h @@ -0,0 +1,85 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_frame_common.h + */ + +#ifndef LSQUIC_FRAME_COMMON_H +#define LSQUIC_FRAME_COMMON_H 1 + +enum http_frame_type +{ + HTTP_FRAME_DATA = 0x00, + HTTP_FRAME_HEADERS = 0x01, + HTTP_FRAME_PRIORITY = 0x02, + HTTP_FRAME_RST_STREAM = 0x03, + HTTP_FRAME_SETTINGS = 0x04, + HTTP_FRAME_PUSH_PROMISE = 0x05, + HTTP_FRAME_PING = 0x06, + HTTP_FRAME_GOAWAY = 0x07, + HTTP_FRAME_WINDOW_UPDATE = 0x08, + HTTP_FRAME_CONTINUATION = 0x09, + N_HTTP_FRAME_TYPES +}; + + +enum http_frame_header_flags /* RFC 7540, Section 6.2 */ +{ + HFHF_END_STREAM = 0x01, + HFHF_END_HEADERS = 0x04, + HFHF_PADDED = 0x08, + HFHF_PRIORITY = 0x20, +}; + + +struct http_frame_header /* RFC 7540, Section 4.1 */ +{ + unsigned char hfh_length[3]; + unsigned char hfh_type; /* enum http_frame_type */ + unsigned char hfh_flags; + unsigned char hfh_stream_id[4]; +}; + +static inline unsigned int +hfh_get_length (struct http_frame_header *hfh) +{ + return hfh->hfh_length[0] << 16 | + hfh->hfh_length[1] << 8 | + hfh->hfh_length[2]; +} + +enum settings_param /* RFC 7540, Section 6.5.2 */ +{ + SETTINGS_HEADER_TABLE_SIZE = 0x0001, + SETTINGS_ENABLE_PUSH = 0x0002, + SETTINGS_MAX_CONCURRENT_STREAMS = 0x0003, + SETTINGS_INITIAL_WINDOW_SIZE = 0x0004, + SETTINGS_MAX_FRAME_SIZE = 0x0005, + SETTINGS_MAX_HEADER_LIST_SIZE = 0x0006, +}; + + +/* This also doubles as HEADERS frame payload prefix: */ +struct http_prio_frame /* RFC 7540, Section 6.3 */ +{ + unsigned char hpf_stream_id[4]; /* High bit is the exclusive flag */ + unsigned char hpf_weight; +}; + + +struct http_push_promise_frame /* RFC 7540, Section 6.6 */ +{ + unsigned char hppf_promised_id[4]; /* High bit is reserved */ +}; + + +struct lsquic_http2_setting +{ + uint16_t id; + uint32_t value; +}; + + +const char * +lsquic_http_setting_id2str (enum settings_param id); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_frame_reader.c b/external/lsquic/src/liblsquic/lsquic_frame_reader.c new file mode 100644 index 0000000..771f922 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_frame_reader.c @@ -0,0 +1,990 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_frame_reader.c -- Read HTTP frames from stream + */ + +#ifndef WIN32 +#include +#endif +#include +#include +#include +#include +#include +#include +#include + +#include "lshpack.h" +#include "lsquic.h" +#include "lsquic_mm.h" +#include "lsquic_frame_common.h" +#include "lsquic_frame_reader.h" +#include "lsquic_http1x_if.h" +#include "lsquic_headers.h" +#include "lsquic_ev_log.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_FRAME_READER +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(lsquic_stream_conn(\ + fr->fr_stream)) +#include "lsquic_logger.h" + + +/* headers_state is used by HEADERS, PUSH_PROMISE, and CONTINUATION frames */ +struct headers_state +{ + enum http_frame_type + frame_type; + unsigned nread; /* Not counting pesw, only payload and padding */ + + /* Values parsed out from pesw buffer: */ + uint32_t oth_stream_id; /* For HEADERS: ID of stream we depend on; + * for PUSH_PROMISE: promised stream ID. + */ + unsigned short weight; /* HEADERS only */ + signed char exclusive; /* HEADERS only */ + unsigned char pad_length; + + unsigned char pseh; + + /* PESW: Pad length, Exclusive, Stream Dependency, Weight. This is at + * most six bytes for HEADERS frame (RFC 7540, page 33) and five bytes + * for PUSH_PROMISE frame (Ibid, p. 40). + */ + unsigned char pesw_size; + unsigned char pesw_nread; + unsigned char pesw[6]; +}; + + +struct settings_state +{ /* RFC 7540, Section 6.5.1 */ + unsigned char nread; + unsigned char set_buf[2 + 4]; /* We'll read one setting at a time */ +}; + + +struct priority_state +{ /* RFC 7540, Section 6.3 */ + unsigned char nread; + union { + unsigned char prio_buf[sizeof(struct http_prio_frame)]; + struct http_prio_frame prio_frame; + } u; +}; + + +struct skip_state +{ + uint32_t n_skipped; +}; + + +struct reader_state +{ + unsigned nh_read; /* Number of bytes of header read */ + struct http_frame_header header; + enum { + READER_SKIP, + READER_HEADERS, + READER_PUSH_PROMISE, + READER_CONTIN, + READER_SETTINGS, + READER_PRIORITY, + } reader_type; + unsigned payload_length; + union { + struct headers_state headers_state; + struct skip_state skip_state; + struct settings_state settings_state; + struct priority_state priority_state; + } by_type; +}; + + +struct lsquic_frame_reader +{ + struct lsquic_mm *fr_mm; + struct lshpack_dec *fr_hdec; + struct lsquic_stream *fr_stream; + fr_stream_read_f fr_read; + const struct frame_reader_callbacks + *fr_callbacks; + void *fr_cb_ctx; + const struct lsquic_hset_if *fr_hsi_if; + void *fr_hsi_ctx; + struct http1x_ctor_ctx fr_h1x_ctor_ctx; + /* The the header block is shared between HEADERS, PUSH_PROMISE, and + * CONTINUATION frames. It gets added to as block fragments come in. + */ + unsigned char *fr_header_block; +#if LSQUIC_CONN_STATS + struct conn_stats *fr_conn_stats; +#endif + unsigned fr_header_block_sz; + unsigned fr_max_headers_sz; /* 0 means no limit */ + enum frame_reader_flags fr_flags; + /* Keep some information about previous frame to catch framing errors. + */ + uint32_t fr_prev_stream_id; + enum http_frame_header_flags fr_prev_hfh_flags:8; + enum http_frame_type fr_prev_frame_type:8; + struct reader_state fr_state; +}; + + +#define reset_state(fr) do { \ + LSQ_DEBUG("reset state"); \ + (fr)->fr_state.nh_read = 0; \ +} while (0) + + +static uint32_t +fr_get_stream_id (const struct lsquic_frame_reader *fr) +{ + uint32_t stream_id; + assert(fr->fr_state.nh_read >= sizeof(fr->fr_state.header)); + memcpy(&stream_id, fr->fr_state.header.hfh_stream_id, sizeof(stream_id)); + stream_id = ntohl(stream_id); + return stream_id; +} + + +static const char * +hft_to_string (enum http_frame_type hft) +{ + static const char *const map[] = { + [HTTP_FRAME_DATA] = "HTTP_FRAME_DATA", + [HTTP_FRAME_HEADERS] = "HTTP_FRAME_HEADERS", + [HTTP_FRAME_PRIORITY] = "HTTP_FRAME_PRIORITY", + [HTTP_FRAME_RST_STREAM] = "HTTP_FRAME_RST_STREAM", + [HTTP_FRAME_SETTINGS] = "HTTP_FRAME_SETTINGS", + [HTTP_FRAME_PUSH_PROMISE] = "HTTP_FRAME_PUSH_PROMISE", + [HTTP_FRAME_PING] = "HTTP_FRAME_PING", + [HTTP_FRAME_GOAWAY] = "HTTP_FRAME_GOAWAY", + [HTTP_FRAME_WINDOW_UPDATE] = "HTTP_FRAME_WINDOW_UPDATE", + [HTTP_FRAME_CONTINUATION] = "HTTP_FRAME_CONTINUATION", + }; + if (hft < N_HTTP_FRAME_TYPES) + return map[hft]; + else + return ""; +} + + +struct lsquic_frame_reader * +lsquic_frame_reader_new (enum frame_reader_flags flags, + unsigned max_headers_sz, + struct lsquic_mm *mm, + struct lsquic_stream *stream, fr_stream_read_f read, + struct lshpack_dec *hdec, + const struct frame_reader_callbacks *cb, + void *frame_reader_cb_ctx, +#if LSQUIC_CONN_STATS + struct conn_stats *conn_stats, +#endif + const struct lsquic_hset_if *hsi_if, void *hsi_ctx) +{ + struct lsquic_frame_reader *fr = calloc(1, sizeof(*fr)); + if (!fr) + return NULL; + fr->fr_mm = mm; + fr->fr_hdec = hdec; + fr->fr_flags = flags; + fr->fr_stream = stream; + fr->fr_read = read; + fr->fr_callbacks = cb; + fr->fr_cb_ctx = frame_reader_cb_ctx; + fr->fr_header_block = NULL; + fr->fr_max_headers_sz = max_headers_sz; + fr->fr_hsi_if = hsi_if; + if (hsi_if == lsquic_http1x_if) + { + fr->fr_h1x_ctor_ctx = (struct http1x_ctor_ctx) { + .conn = lsquic_stream_conn(stream), + .max_headers_sz = fr->fr_max_headers_sz, + .is_server = fr->fr_flags & FRF_SERVER, + }; + fr->fr_hsi_ctx = &fr->fr_h1x_ctor_ctx; + } + else + fr->fr_hsi_ctx = hsi_ctx; + reset_state(fr); +#if LSQUIC_CONN_STATS + fr->fr_conn_stats = conn_stats; +#endif + return fr; +} + + +void +lsquic_frame_reader_destroy (struct lsquic_frame_reader *fr) +{ + free(fr->fr_header_block); + free(fr); +} + + +#define RETURN_ERROR(nread) do { \ + assert(nread <= 0); \ + if (0 == nread) \ + { \ + LSQ_INFO("%s: unexpected EOF", __func__); \ + return -1; \ + } \ + else \ + { \ + LSQ_WARN("%s: error reading from stream: %s", __func__, \ + strerror(errno)); \ + return -1; \ + } \ +} while (0) + + +static int +prepare_for_payload (struct lsquic_frame_reader *fr) +{ + uint32_t stream_id; + unsigned char *header_block; + + /* RFC 7540, Section 4.1: Ignore R bit: */ + fr->fr_state.header.hfh_stream_id[0] &= ~0x80; + + fr->fr_state.payload_length = hfh_get_length(&fr->fr_state.header); + + stream_id = fr_get_stream_id(fr); + + if (fr->fr_state.header.hfh_type != HTTP_FRAME_CONTINUATION && + (fr->fr_flags & FRF_HAVE_PREV) && + (fr->fr_prev_frame_type == HTTP_FRAME_HEADERS || + fr->fr_prev_frame_type == HTTP_FRAME_PUSH_PROMISE || + fr->fr_prev_frame_type == HTTP_FRAME_CONTINUATION ) && + 0 == (fr->fr_prev_hfh_flags & HFHF_END_HEADERS)) + { + LSQ_INFO("Framing error: expected CONTINUATION frame, got %u", + fr->fr_state.header.hfh_type); + fr->fr_callbacks->frc_on_error(fr->fr_cb_ctx, stream_id, + FR_ERR_EXPECTED_CONTIN); + return -1; + } + + switch (fr->fr_state.header.hfh_type) + { + case HTTP_FRAME_HEADERS: + if (fr->fr_max_headers_sz && + fr->fr_state.payload_length > fr->fr_max_headers_sz) + goto headers_too_large; + fr->fr_state.by_type.headers_state.frame_type = HTTP_FRAME_HEADERS; + fr->fr_state.by_type.headers_state.nread = 0; + fr->fr_state.by_type.headers_state.pesw_nread = 0; + fr->fr_state.by_type.headers_state.pseh = 0; + if (fr->fr_state.header.hfh_flags & HFHF_PADDED) + fr->fr_state.by_type.headers_state.pesw_size = 1; + else + { + fr->fr_state.by_type.headers_state.pad_length = 0; + fr->fr_state.by_type.headers_state.pesw_size = 0; + } + if (fr->fr_state.header.hfh_flags & HFHF_PRIORITY) + fr->fr_state.by_type.headers_state.pesw_size += 5; + else + { + fr->fr_state.by_type.headers_state.exclusive = -1; + fr->fr_state.by_type.headers_state.oth_stream_id = 0; + fr->fr_state.by_type.headers_state.weight = 0; + } + LSQ_DEBUG("pesw size: %u; payload length: %u; flags: 0x%X", + fr->fr_state.by_type.headers_state.pesw_size, + fr->fr_state.payload_length, fr->fr_state.header.hfh_flags); + if (fr->fr_state.by_type.headers_state.pesw_size > + fr->fr_state.payload_length) + { + LSQ_INFO("Invalid headers frame: payload length too small"); + errno = EBADMSG; + return -1; + } + fr->fr_state.reader_type = READER_HEADERS; + break; + case HTTP_FRAME_PUSH_PROMISE: + if (fr->fr_flags & FRF_SERVER) + { + LSQ_INFO("clients should not push promised"); + fr->fr_callbacks->frc_on_error(fr->fr_cb_ctx, stream_id, + FR_ERR_UNEXPECTED_PUSH); + return -1; + } + if (fr->fr_max_headers_sz && + fr->fr_state.payload_length > fr->fr_max_headers_sz) + goto headers_too_large; + fr->fr_state.by_type.headers_state.frame_type = HTTP_FRAME_PUSH_PROMISE; + fr->fr_state.by_type.headers_state.nread = 0; + fr->fr_state.by_type.headers_state.pesw_nread = 0; + fr->fr_state.by_type.headers_state.pseh = 0; + if (fr->fr_state.header.hfh_flags & HFHF_PADDED) + fr->fr_state.by_type.headers_state.pesw_size = 5; + else + { + fr->fr_state.by_type.headers_state.pad_length = 0; + fr->fr_state.by_type.headers_state.pesw_size = 4; + } + LSQ_DEBUG("pesw size: %u; payload length: %u; flags: 0x%X", + fr->fr_state.by_type.headers_state.pesw_size, + fr->fr_state.payload_length, fr->fr_state.header.hfh_flags); + if (fr->fr_state.by_type.headers_state.pesw_size > + fr->fr_state.payload_length) + { + LSQ_INFO("Invalid headers frame: payload length too small"); + errno = EBADMSG; + return -1; + } + fr->fr_state.reader_type = READER_PUSH_PROMISE; + break; + case HTTP_FRAME_CONTINUATION: + if (0 == (fr->fr_flags & FRF_HAVE_PREV)) + { + LSQ_INFO("Framing error: unexpected CONTINUATION"); + return -1; + } + if (!(fr->fr_prev_frame_type == HTTP_FRAME_HEADERS || + fr->fr_prev_frame_type == HTTP_FRAME_PUSH_PROMISE || + fr->fr_prev_frame_type == HTTP_FRAME_CONTINUATION)) + { + LSQ_INFO("Framing error: unexpected CONTINUATION"); + return -1; + } + if (fr->fr_prev_hfh_flags & HFHF_END_HEADERS) + { + LSQ_INFO("Framing error: unexpected CONTINUATION"); + return -1; + } + if (stream_id != fr->fr_prev_stream_id) + { + LSQ_INFO("Framing error: CONTINUATION does not have matching " + "stream ID"); + return -1; + } + if (fr->fr_state.reader_type == READER_SKIP) + goto continue_skipping; + fr->fr_header_block_sz += fr->fr_state.payload_length; + if (fr->fr_max_headers_sz && + fr->fr_header_block_sz > fr->fr_max_headers_sz) + { + free(fr->fr_header_block); + fr->fr_header_block = NULL; + goto headers_too_large; + } + header_block = realloc(fr->fr_header_block, fr->fr_header_block_sz); + if (!header_block) + { + LSQ_WARN("cannot allocate %u bytes for header block", + fr->fr_header_block_sz); + fr->fr_callbacks->frc_on_error(fr->fr_cb_ctx, stream_id, + FR_ERR_OTHER_ERROR); + return -1; + } + fr->fr_header_block = header_block; + fr->fr_state.by_type.headers_state.nread = 0; + fr->fr_state.reader_type = READER_CONTIN; + break; + case HTTP_FRAME_SETTINGS: + if (0 == fr->fr_state.payload_length || + 0 != fr->fr_state.payload_length % 6) + { + LSQ_INFO("Framing error: %u is not a valid SETTINGS length", + fr->fr_state.payload_length); + fr->fr_callbacks->frc_on_error(fr->fr_cb_ctx, stream_id, + FR_ERR_INVALID_FRAME_SIZE); + return -1; + } + if (stream_id) + { /* RFC 7540, Section 6.5 */ + LSQ_INFO("Error: SETTINGS frame should not have stream ID set"); + fr->fr_callbacks->frc_on_error(fr->fr_cb_ctx, stream_id, + FR_ERR_NONZERO_STREAM_ID); + return -1; + } + fr->fr_state.by_type.settings_state.nread = 0; + fr->fr_state.reader_type = READER_SETTINGS; + break; + case HTTP_FRAME_PRIORITY: + if (fr->fr_state.payload_length != sizeof(struct http_prio_frame)) + { + LSQ_INFO("Framing error: %u is not a valid PRIORITY length", + fr->fr_state.payload_length); + fr->fr_callbacks->frc_on_error(fr->fr_cb_ctx, stream_id, + FR_ERR_INVALID_FRAME_SIZE); + return -1; + } + if (!stream_id) + { /* RFC 7540, Section 6.3 */ + LSQ_INFO("Error: PRIORITY frame must have stream ID set"); + fr->fr_callbacks->frc_on_error(fr->fr_cb_ctx, stream_id, + FR_ERR_ZERO_STREAM_ID); + return -1; + } + fr->fr_state.by_type.settings_state.nread = 0; + fr->fr_state.reader_type = READER_PRIORITY; + break; + headers_too_large: + LSQ_INFO("headers are too large (%u bytes), skipping", + fr->fr_state.payload_length); + fr->fr_callbacks->frc_on_error(fr->fr_cb_ctx, stream_id, + FR_ERR_BAD_HEADER); + /* fallthru */ + continue_skipping: + default: + fr->fr_state.by_type.skip_state.n_skipped = 0; + fr->fr_state.reader_type = READER_SKIP; + break; + } + + fr->fr_flags |= FRF_HAVE_PREV; + fr->fr_prev_frame_type = fr->fr_state.header.hfh_type; + fr->fr_prev_hfh_flags = fr->fr_state.header.hfh_flags; + fr->fr_prev_stream_id = stream_id; + + return 0; +} + + +static int +read_http_frame_header (struct lsquic_frame_reader *fr) +{ + ssize_t nr; + size_t ntoread; + unsigned char *dst; + + ntoread = sizeof(fr->fr_state.header) - fr->fr_state.nh_read; + dst = (unsigned char *) &fr->fr_state.header + fr->fr_state.nh_read; + nr = fr->fr_read(fr->fr_stream, dst, ntoread); + if (nr <= 0) + RETURN_ERROR(nr); + fr->fr_state.nh_read += nr; + if (fr->fr_state.nh_read == sizeof(fr->fr_state.header)) + { + LSQ_DEBUG("read in frame %s", hft_to_string(fr->fr_state.header.hfh_type)); + return prepare_for_payload(fr); + } + else + return 0; +} + + +static int +skip_payload (struct lsquic_frame_reader *fr) +{ + struct skip_state *ss = &fr->fr_state.by_type.skip_state; + size_t ntoread = fr->fr_state.payload_length - ss->n_skipped; + unsigned char buf[0x100]; + if (ntoread > sizeof(buf)) + ntoread = sizeof(buf); + ssize_t nr = fr->fr_read(fr->fr_stream, buf, ntoread); + if (nr <= 0) + RETURN_ERROR(nr); + ss->n_skipped += nr; + if (ss->n_skipped == fr->fr_state.payload_length) + reset_state(fr); + return 0; +} + + +static int +skip_headers_padding (struct lsquic_frame_reader *fr) +{ + unsigned char buf[0x100]; + struct headers_state *hs = &fr->fr_state.by_type.headers_state; + unsigned pay_and_pad_length = fr->fr_state.payload_length - hs->pesw_size; + unsigned ntoread = pay_and_pad_length - hs->nread; + assert(ntoread <= sizeof(buf)); + if (ntoread > sizeof(buf)) + ntoread = sizeof(buf); + ssize_t nr = fr->fr_read(fr->fr_stream, buf, ntoread); + if (nr <= 0) + RETURN_ERROR(nr); + hs->nread += nr; + if (hs->nread == pay_and_pad_length) + reset_state(fr); + return 0; +} + + +static struct lsquic_stream * +find_target_stream (const struct lsquic_frame_reader *fr) +{ + lsquic_stream_id_t stream_id; + struct lsquic_conn *lconn; + + stream_id = fr_get_stream_id(fr); + lconn = lsquic_stream_conn(fr->fr_stream); + if (lconn->cn_if->ci_get_stream_by_id) + return lconn->cn_if->ci_get_stream_by_id(lconn, stream_id); + + return NULL; +} + + +static void +skip_headers (struct lsquic_frame_reader *fr) +{ + const unsigned char *comp, *end; + void *buf; + int s; + struct lsxpack_header xhdr; + const size_t buf_len = 64 * 1024; + + buf = malloc(buf_len); + if (!buf) + { + fr->fr_callbacks->frc_on_error(fr->fr_cb_ctx, fr_get_stream_id(fr), + FR_ERR_OTHER_ERROR); + goto end; + } + + comp = fr->fr_header_block; + end = comp + fr->fr_header_block_sz; + while (comp < end) + { + lsxpack_header_prepare_decode(&xhdr, buf, 0, buf_len); + s = lshpack_dec_decode(fr->fr_hdec, &comp, end, &xhdr); + if (s != 0) + { + fr->fr_callbacks->frc_on_error(fr->fr_cb_ctx, fr_get_stream_id(fr), + FR_ERR_OTHER_ERROR); + break; + } + } + + end: + if (buf) + free(buf); +} + + +static void +decode_and_pass_payload (struct lsquic_frame_reader *fr) +{ + struct headers_state *hs = &fr->fr_state.by_type.headers_state; + const unsigned char *comp, *end; + enum frame_reader_error err; + int s; + uint32_t stream_id32; + struct uncompressed_headers *uh = NULL; + void *hset = NULL; + struct lsxpack_header *hdr = NULL; + size_t req_space = 0; + lsquic_stream_t *target_stream = NULL; + + if (!(fr->fr_flags & FRF_SERVER)) + { + target_stream = find_target_stream(fr); + /* If the response is for a stream that cannot be found, one of two + * things is true: a) the stream has been closed or b) this is an + * error. If (a), we discard this header block. We choose to do the + * same for (b) instead of erroring out for the sake of simplicity. + * There is no way to exploit this behavior. + */ + if (!target_stream) + { + skip_headers(fr); + return; + } + } + hset = fr->fr_hsi_if->hsi_create_header_set(fr->fr_hsi_ctx, target_stream, + READER_PUSH_PROMISE == fr->fr_state.reader_type); + if (!hset) + { + err = FR_ERR_OTHER_ERROR; + goto stream_error; + } + + comp = fr->fr_header_block; + end = comp + fr->fr_header_block_sz; + + while (comp < end) + { + prepare: + hdr = fr->fr_hsi_if->hsi_prepare_decode(hset, hdr, req_space); + if (!hdr) + { + err = FR_ERR_OTHER_ERROR; + goto stream_error; + } + s = lshpack_dec_decode(fr->fr_hdec, &comp, end, hdr); + if (s == 0) + { + s = fr->fr_hsi_if->hsi_process_header(hset, hdr); + if (s == 0) + { +#if LSQUIC_CONN_STATS + fr->fr_conn_stats->in.headers_uncomp += hdr->name_len + + hdr->val_len; +#endif + req_space = 0; + hdr = NULL; + continue; + } + else if (s > 0) + err = FR_ERR_BAD_HEADER; + else + err = FR_ERR_OTHER_ERROR; + } + else if (s == LSHPACK_ERR_MORE_BUF) + { + req_space = hdr->val_len; + goto prepare; + } + else + err = FR_ERR_DECOMPRESS; + goto stream_error; + } + assert(comp == end); + + s = fr->fr_hsi_if->hsi_process_header(hset, NULL); + if (s != 0) + { + err = s < 0 ? FR_ERR_OTHER_ERROR : FR_ERR_BAD_HEADER; + goto stream_error; + } + + uh = calloc(1, sizeof(*uh)); + if (!uh) + { + err = FR_ERR_OTHER_ERROR; + goto stream_error; + } + + memcpy(&stream_id32, fr->fr_state.header.hfh_stream_id, + sizeof(stream_id32)); + uh->uh_stream_id = ntohl(stream_id32); + uh->uh_oth_stream_id = hs->oth_stream_id; + if (HTTP_FRAME_HEADERS == fr->fr_state.by_type.headers_state.frame_type) + { + uh->uh_weight = hs->weight; + uh->uh_exclusive = hs->exclusive; + uh->uh_flags = 0; + } + else + { + assert(HTTP_FRAME_PUSH_PROMISE == + fr->fr_state.by_type.headers_state.frame_type); + uh->uh_weight = 0; /* Zero unused value */ + uh->uh_exclusive = 0; /* Zero unused value */ + uh->uh_flags = UH_PP; + } + if (fr->fr_state.header.hfh_flags & HFHF_END_STREAM) + uh->uh_flags |= UH_FIN; + if (fr->fr_hsi_if == lsquic_http1x_if) + uh->uh_flags |= UH_H1H; + uh->uh_hset = hset; + + EV_LOG_HTTP_HEADERS_IN(LSQUIC_LOG_CONN_ID, fr->fr_flags & FRF_SERVER, uh); + if (HTTP_FRAME_HEADERS == fr->fr_state.by_type.headers_state.frame_type) + fr->fr_callbacks->frc_on_headers(fr->fr_cb_ctx, uh); + else + fr->fr_callbacks->frc_on_push_promise(fr->fr_cb_ctx, uh); +#if LSQUIC_CONN_STATS + fr->fr_conn_stats->in.headers_comp += fr->fr_header_block_sz; +#endif + + return; + + stream_error: + LSQ_INFO("%s: stream error %u", __func__, err); + if (hset) + fr->fr_hsi_if->hsi_discard_header_set(hset); + fr->fr_callbacks->frc_on_error(fr->fr_cb_ctx, fr_get_stream_id(fr), err); +} + + +static int +read_headers_block_fragment (struct lsquic_frame_reader *fr) +{ + struct headers_state *hs = &fr->fr_state.by_type.headers_state; + ssize_t nr; + unsigned payload_length = fr->fr_state.payload_length - hs->pesw_size - + hs->pad_length; + if (!fr->fr_header_block) + { + fr->fr_header_block_sz = payload_length; + fr->fr_header_block = malloc(payload_length); + if (!fr->fr_header_block) + return -1; + } + nr = fr->fr_read(fr->fr_stream, fr->fr_header_block + hs->nread, + fr->fr_header_block_sz - hs->nread); + if (nr <= 0) + { + free(fr->fr_header_block); + fr->fr_header_block = NULL; + RETURN_ERROR(nr); + } + hs->nread += nr; + if (hs->nread == payload_length && + (fr->fr_state.header.hfh_flags & HFHF_END_HEADERS)) + { + decode_and_pass_payload(fr); + free(fr->fr_header_block); + fr->fr_header_block = NULL; + } + + return 0; +} + + +static int +read_headers_block_fragment_and_padding (struct lsquic_frame_reader *fr) +{ + struct headers_state *hs = &fr->fr_state.by_type.headers_state; + unsigned payload_length = fr->fr_state.payload_length - hs->pesw_size; + int rv; + if (hs->nread < payload_length - hs->pad_length) + rv = read_headers_block_fragment(fr); + else if (payload_length) + rv = skip_headers_padding(fr); + else + { /* Edge case where PESW takes up the whole frame */ + fr->fr_header_block_sz = 0; + fr->fr_header_block = NULL; + rv = 0; + } + if (0 == rv && hs->nread == payload_length) + reset_state(fr); + return rv; +} + + +static int +read_headers_pesw (struct lsquic_frame_reader *fr) +{ + struct headers_state *hs = &fr->fr_state.by_type.headers_state; + ssize_t nr = fr->fr_read(fr->fr_stream, hs->pesw + hs->pesw_nread, + hs->pesw_size - hs->pesw_nread); + if (nr <= 0) + RETURN_ERROR(nr); + hs->pesw_nread += nr; + if (hs->pesw_nread == hs->pesw_size) + { + unsigned char *p = hs->pesw; + if (fr->fr_state.header.hfh_flags & HFHF_PADDED) + hs->pad_length = *p++; + if (fr->fr_state.header.hfh_flags & HFHF_PRIORITY) + { + hs->exclusive = p[0] >> 7; + p[0] &= ~0x80; /* Note that we are modifying pesw buffer. */ + memcpy(&hs->oth_stream_id, p, sizeof(hs->oth_stream_id)); + hs->oth_stream_id = ntohl(hs->oth_stream_id); + p += 4; + hs->weight = 1 + *p++; + } + assert(p - hs->pesw == hs->pesw_size); + + if (hs->pesw_size + hs->pad_length > fr->fr_state.payload_length) + { + LSQ_INFO("Invalid headers frame: pesw length and padding length " + "are larger than the payload length"); + errno = EBADMSG; + return -1; + } + } + return 0; +} + + +static int +read_headers (struct lsquic_frame_reader *fr) +{ + struct headers_state *hs = &fr->fr_state.by_type.headers_state; + if (hs->pesw_nread < hs->pesw_size) + return read_headers_pesw(fr); + else + return read_headers_block_fragment_and_padding(fr); +} + + +static int +read_push_promise_pesw (struct lsquic_frame_reader *fr) +{ + struct headers_state *hs = &fr->fr_state.by_type.headers_state; + ssize_t nr = fr->fr_read(fr->fr_stream, hs->pesw + hs->pesw_nread, + hs->pesw_size - hs->pesw_nread); + if (nr <= 0) + RETURN_ERROR(nr); + hs->pesw_nread += nr; + if (hs->pesw_nread == hs->pesw_size) + { + unsigned char *p = hs->pesw; + if (fr->fr_state.header.hfh_flags & HFHF_PADDED) + hs->pad_length = *p++; + p[0] &= ~0x80; /* Clear reserved bit. Note: modifying pesw buffer. */ + memcpy(&hs->oth_stream_id, p, sizeof(hs->oth_stream_id)); + hs->oth_stream_id = ntohl(hs->oth_stream_id); + p += 4; + assert(p - hs->pesw == hs->pesw_size); + if (hs->pesw_size + hs->pad_length > fr->fr_state.payload_length) + { + LSQ_INFO("Invalid PUSH_PROMISE frame: pesw length and padding length " + "are larger than the payload length"); + errno = EBADMSG; + return -1; + } + } + return 0; +} + + +static int +read_push_promise (struct lsquic_frame_reader *fr) +{ + struct headers_state *hs = &fr->fr_state.by_type.headers_state; + if (hs->pesw_nread < hs->pesw_size) + return read_push_promise_pesw(fr); + else + return read_headers_block_fragment_and_padding(fr); +} + + +static int +read_contin (struct lsquic_frame_reader *fr) +{ + struct headers_state *hs = &fr->fr_state.by_type.headers_state; + unsigned ntoread; + ssize_t nr; + + ntoread = fr->fr_state.payload_length - hs->nread; + nr = fr->fr_read(fr->fr_stream, + fr->fr_header_block + fr->fr_header_block_sz - ntoread, + ntoread); + if (nr <= 0) + RETURN_ERROR(nr); + hs->nread += nr; + if (hs->nread == fr->fr_state.payload_length) + { + if (fr->fr_state.header.hfh_flags & HFHF_END_HEADERS) + { + decode_and_pass_payload(fr); + free(fr->fr_header_block); + fr->fr_header_block = NULL; + } + reset_state(fr); + } + + return 0; +} + + +static int +read_settings (struct lsquic_frame_reader *fr) +{ + struct settings_state *ss = &fr->fr_state.by_type.settings_state; + unsigned ntoread; + ssize_t nr; + uint32_t setting_value; + uint16_t setting_id; + + ntoread = sizeof(ss->set_buf) - ss->nread; + nr = fr->fr_read(fr->fr_stream, ss->set_buf + ss->nread, ntoread); + if (nr <= 0) + RETURN_ERROR(nr); + ss->nread += nr; + if (ss->nread == sizeof(ss->set_buf)) + { + memcpy(&setting_id, ss->set_buf, 2); + memcpy(&setting_value, ss->set_buf + 2, 4); + setting_id = ntohs(setting_id); + setting_value = ntohl(setting_value); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "read HTTP SETTING %s=%"PRIu32, + lsquic_http_setting_id2str(setting_id), setting_value); + fr->fr_callbacks->frc_on_settings(fr->fr_cb_ctx, setting_id, + setting_value); + + fr->fr_state.payload_length -= sizeof(ss->set_buf); + if (0 == fr->fr_state.payload_length) + reset_state(fr); + else + ss->nread = 0; + } + return 0; +} + + +static int +read_priority (struct lsquic_frame_reader *fr) +{ + struct priority_state *ps = &fr->fr_state.by_type.priority_state; + unsigned ntoread; + ssize_t nr; + uint32_t stream_id, dep_stream_id; + int exclusive; + + ntoread = sizeof(ps->u.prio_buf) - ps->nread; + nr = fr->fr_read(fr->fr_stream, ps->u.prio_buf + ps->nread, ntoread); + if (nr <= 0) + RETURN_ERROR(nr); + ps->nread += nr; + if (ps->nread == sizeof(ps->u.prio_buf)) + { + memcpy(&dep_stream_id, ps->u.prio_frame.hpf_stream_id, 4); + dep_stream_id = ntohl(dep_stream_id); + exclusive = dep_stream_id >> 31; + dep_stream_id &= ~(1UL << 31); + stream_id = fr_get_stream_id(fr); + if (stream_id == dep_stream_id) + fr->fr_callbacks->frc_on_error(fr->fr_cb_ctx, stream_id, + FR_ERR_SELF_DEP_STREAM); + else + { + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "read PRIORITY frame; " + "stream: %"PRIu32", dep stream %"PRIu32", exclusive: %d, " + "weight: %u", stream_id, dep_stream_id, exclusive, + ps->u.prio_frame.hpf_weight + 1); + fr->fr_callbacks->frc_on_priority(fr->fr_cb_ctx, stream_id, + exclusive, dep_stream_id, ps->u.prio_frame.hpf_weight + 1); + } + reset_state(fr); + } + return 0; +} + + +static int +read_payload (struct lsquic_frame_reader *fr) +{ + switch (fr->fr_state.reader_type) + { + case READER_HEADERS: + return read_headers(fr); + case READER_PUSH_PROMISE: + return read_push_promise(fr); + case READER_CONTIN: + return read_contin(fr); + case READER_SETTINGS: + return read_settings(fr); + case READER_PRIORITY: + return read_priority(fr); + default: + assert(READER_SKIP == fr->fr_state.reader_type); + return skip_payload(fr); + } +} + + +int +lsquic_frame_reader_read (struct lsquic_frame_reader *fr) +{ + if (fr->fr_state.nh_read < sizeof(fr->fr_state.header)) + return read_http_frame_header(fr); + else + return read_payload(fr); +} + + +size_t +lsquic_frame_reader_mem_used (const struct lsquic_frame_reader *fr) +{ + size_t size; + size = sizeof(*fr); + if (fr->fr_header_block) + size += fr->fr_header_block_sz; + return size; +} diff --git a/external/lsquic/src/liblsquic/lsquic_frame_reader.h b/external/lsquic/src/liblsquic/lsquic_frame_reader.h new file mode 100644 index 0000000..1a55d04 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_frame_reader.h @@ -0,0 +1,90 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_frame_reader.h -- Read HTTP frames from stream + */ + +#ifndef LSQUIC_FRAME_READER_H +#define LSQUIC_FRAME_READER_H 1 + +#include +#include +#ifdef WIN32 +#include +#endif + +struct lshpack_dec; +struct lsquic_mm; +struct lsquic_stream; +struct lsquic_frame_reader; +struct lsquic_hset_if; +struct uncompressed_headers; +#if LSQUIC_CONN_STATS +struct conn_stats; +#endif + + +enum frame_reader_flags +{ + FRF_SERVER = (1 << 0), + FRF_HAVE_PREV = (1 << 1), +}; + + +/* Frame reader may hit some error conditions which are reported using + * callback fc_on_error. These codes are later mapped stream- or + * connection-level errors. + */ +enum frame_reader_error +{ + FR_ERR_BAD_HEADER, + FR_ERR_OTHER_ERROR, + + FR_ERR_DECOMPRESS, + FR_ERR_INVALID_FRAME_SIZE, /* E.g. a SETTINGS frame length is not a multiple + * of 6 (RFC 7540, Section 6.5.1). + */ + FR_ERR_NONZERO_STREAM_ID, + FR_ERR_ZERO_STREAM_ID, + FR_ERR_SELF_DEP_STREAM, /* A stream in priority frame cannot depend on + * itself (RFC 7540, Section 5.3.1). + */ + FR_ERR_UNEXPECTED_PUSH, + FR_ERR_EXPECTED_CONTIN, /* Expected continuation frame. */ +}; + + +struct frame_reader_callbacks +{ + void (*frc_on_headers) (void *frame_cb_ctx, struct uncompressed_headers *); + void (*frc_on_push_promise) (void *frame_cb_ctx, struct uncompressed_headers *); + void (*frc_on_settings) (void *frame_cb_ctx, uint16_t setting_id, + uint32_t setting_value); + void (*frc_on_priority) (void *frame_cb_ctx, lsquic_stream_id_t stream_id, + int exclusive, lsquic_stream_id_t dep_stream_id, + unsigned weight); + void (*frc_on_error) (void *frame_cb_ctx, lsquic_stream_id_t stream_id, + enum frame_reader_error); +}; + +typedef ssize_t (*fr_stream_read_f)(struct lsquic_stream *, void *, size_t); + +struct lsquic_frame_reader * +lsquic_frame_reader_new (enum frame_reader_flags, unsigned max_headers_sz, + struct lsquic_mm *, struct lsquic_stream *, + fr_stream_read_f, struct lshpack_dec *, + const struct frame_reader_callbacks *, void *fr_cb_ctx, +#if LSQUIC_CONN_STATS + struct conn_stats *conn_stats, +#endif + const struct lsquic_hset_if *, void *hsi_ctx); + +int +lsquic_frame_reader_read (struct lsquic_frame_reader *); + +void +lsquic_frame_reader_destroy (struct lsquic_frame_reader *); + +size_t +lsquic_frame_reader_mem_used (const struct lsquic_frame_reader *); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_frame_writer.c b/external/lsquic/src/liblsquic/lsquic_frame_writer.c new file mode 100644 index 0000000..ae1919d --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_frame_writer.c @@ -0,0 +1,674 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_frame_writer.c -- write frames to HEADERS stream. + * + * The frame is first written to list of frame_buf's (frabs) and then + * out to the stream. This is done because frame's size is written out + * to the stream and we may not have enough room in the stream to fit + * the whole frame. + */ + +#ifndef WIN32 +#include +#endif +#include +#include +#include +#include +#include +#include + +#include "lshpack.h" +#include "lsquic_mm.h" +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" + +#include "lsquic_frame_writer.h" +#include "lsquic_frame_common.h" +#include "lsquic_frab_list.h" +#include "lsquic_ev_log.h" + +#include "fiu-local.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_FRAME_WRITER +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(\ + lsquic_stream_conn(fw->fw_stream)) +#include "lsquic_logger.h" + +/* Size of the buffer passed to lshpack_enc_encode() -- this limits the size + * of a single compressed header field. + */ +#define MAX_COMP_HEADER_FIELD_SIZE (64 * 1024) + + +struct lsquic_frame_writer +{ + struct lsquic_stream *fw_stream; + fw_writef_f fw_writef; + struct lsquic_mm *fw_mm; + struct lshpack_enc *fw_henc; +#if LSQUIC_CONN_STATS + struct conn_stats *fw_conn_stats; +#endif + struct frab_list fw_fral; + unsigned fw_max_frame_sz; + uint32_t fw_max_header_list_sz; /* 0 means unlimited */ + enum { + FW_SERVER = (1 << 0), + } fw_flags; +}; + + +/* RFC 7540, Section 4.2 */ +#define MIN_MAX_FRAME_SIZE (1 << 14) +#define MAX_MAX_FRAME_SIZE ((1 << 24) - 1) + +#define MAX(a, b) ((a) > (b) ? (a) : (b)) +#define SETTINGS_FRAME_SZ 6 +#define ABS_MIN_FRAME_SIZE MAX(SETTINGS_FRAME_SZ, \ + sizeof(struct http_prio_frame)) + +static void * +fw_alloc (void *ctx, size_t size) +{ + return lsquic_mm_get_4k(ctx); +} + + +struct lsquic_frame_writer * +lsquic_frame_writer_new (struct lsquic_mm *mm, struct lsquic_stream *stream, + unsigned max_frame_sz, struct lshpack_enc *henc, fw_writef_f writef, +#if LSQUIC_CONN_STATS + struct conn_stats *conn_stats, +#endif + int is_server) +{ + struct lsquic_frame_writer *fw; + + /* When frame writer is instantiated, limit the maximum size to + * MIN_MAX_FRAME_SIZE. The reference implementation has this value + * hardcoded and QUIC does not provide a mechanism to advertise a + * different value. + */ + if (0 == max_frame_sz) + max_frame_sz = MIN_MAX_FRAME_SIZE; + else + LSQ_LOG1(LSQ_LOG_WARN, "max frame size specified to be %u bytes " + "-- this better be test code!", max_frame_sz); + + if (!is_server && max_frame_sz < ABS_MIN_FRAME_SIZE) + { + LSQ_LOG1(LSQ_LOG_ERROR, "max frame size must be at least %zd bytes, " + "which is the size of priority information that client always " + "writes", ABS_MIN_FRAME_SIZE); + return NULL; + } + + fw = calloc(1, sizeof(*fw)); + if (!fw) + return NULL; + + fw->fw_mm = mm; + fw->fw_henc = henc; + fw->fw_stream = stream; + fw->fw_writef = writef; + fw->fw_max_frame_sz = max_frame_sz; + fw->fw_max_header_list_sz = 0; + if (is_server) + fw->fw_flags = FW_SERVER; + else + fw->fw_flags = 0; +#if LSQUIC_CONN_STATS + fw->fw_conn_stats = conn_stats; +#endif + lsquic_frab_list_init(&fw->fw_fral, 0x1000, fw_alloc, + (void (*)(void *, void *)) lsquic_mm_put_4k, mm); + return fw; +} + + +void +lsquic_frame_writer_destroy (struct lsquic_frame_writer *fw) +{ + lsquic_frab_list_cleanup(&fw->fw_fral); + free(fw); +} + + +int +lsquic_frame_writer_have_leftovers (const struct lsquic_frame_writer *fw) +{ + return !lsquic_frab_list_empty(&fw->fw_fral); +} + + +int +lsquic_frame_writer_flush (struct lsquic_frame_writer *fw) +{ + struct lsquic_reader reader = { + .lsqr_read = lsquic_frab_list_read, + .lsqr_size = lsquic_frab_list_size, + .lsqr_ctx = &fw->fw_fral, + }; + ssize_t nw; + + nw = fw->fw_writef(fw->fw_stream, &reader); + + if (nw >= 0) + return 0; + else + return -1; +} + + +struct header_framer_ctx +{ + struct lsquic_frame_writer + *hfc_fw; + struct { + struct frame_buf *frab; + unsigned short off; + } hfc_header_ptr; /* Points to byte *after* current frame header */ + unsigned hfc_max_frame_sz; /* Maximum frame size. We always fill it. */ + unsigned hfc_cur_sz; /* Number of bytes in the current frame. */ + unsigned hfc_n_frames; /* Number of frames written. */ + lsquic_stream_id_t + hfc_stream_id; /* Stream ID */ + enum http_frame_header_flags + hfc_first_flags; + enum http_frame_type + hfc_frame_type; +}; + + +static void +hfc_init (struct header_framer_ctx *hfc, struct lsquic_frame_writer *fw, + unsigned max_frame_sz, enum http_frame_type frame_type, + lsquic_stream_id_t stream_id, enum http_frame_header_flags first_flags) +{ + memset(hfc, 0, sizeof(*hfc)); + hfc->hfc_fw = fw; + hfc->hfc_frame_type = frame_type; + hfc->hfc_stream_id = stream_id; + hfc->hfc_first_flags = first_flags; + hfc->hfc_max_frame_sz = max_frame_sz; + hfc->hfc_cur_sz = max_frame_sz; +} + + +static void +hfc_save_ptr (struct header_framer_ctx *hfc) +{ + hfc->hfc_header_ptr.frab = TAILQ_LAST(&hfc->hfc_fw->fw_fral.fl_frabs, frame_buf_head); + hfc->hfc_header_ptr.off = hfc->hfc_header_ptr.frab->frab_size; +} + + +static void +hfc_terminate_frame (struct header_framer_ctx *hfc, + enum http_frame_header_flags flags) +{ + union { + struct http_frame_header fh; + unsigned char buf[ sizeof(struct http_frame_header) ]; + } u; + uint32_t stream_id; + struct frame_buf *frab; + + /* Construct the frame */ + u.fh.hfh_length[0] = hfc->hfc_cur_sz >> 16; + u.fh.hfh_length[1] = hfc->hfc_cur_sz >> 8; + u.fh.hfh_length[2] = hfc->hfc_cur_sz; + u.fh.hfh_flags = flags; + if (1 == hfc->hfc_n_frames) + { + u.fh.hfh_type = hfc->hfc_frame_type; + u.fh.hfh_flags |= hfc->hfc_first_flags; + } + else + u.fh.hfh_type = HTTP_FRAME_CONTINUATION; + stream_id = htonl(hfc->hfc_stream_id); + memcpy(u.fh.hfh_stream_id, &stream_id, sizeof(stream_id)); + + if (hfc->hfc_header_ptr.off >= sizeof(u.fh)) + { /* Write in a single chunk */ + assert(0 == memcmp("123456789", hfc->hfc_header_ptr.frab->frab_buf + + hfc->hfc_header_ptr.off - sizeof(u.buf), sizeof(u.buf))); + memcpy(hfc->hfc_header_ptr.frab->frab_buf + hfc->hfc_header_ptr.off - + sizeof(u.buf), u.buf, sizeof(u.buf)); + } + else + { /* Write across frab boundary */ + memcpy(hfc->hfc_header_ptr.frab->frab_buf, + u.buf + sizeof(u.buf) - hfc->hfc_header_ptr.off, + hfc->hfc_header_ptr.off); + frab = TAILQ_PREV(hfc->hfc_header_ptr.frab, frame_buf_head, frab_next); + memcpy(frab->frab_buf + frab->frab_size - sizeof(u.buf) + + hfc->hfc_header_ptr.off, u.buf, + sizeof(u.buf) - hfc->hfc_header_ptr.off); + } +} + + +static int +hfc_write (struct header_framer_ctx *hfc, const void *buf, size_t sz) +{ + const unsigned char *p = buf; + unsigned avail; + int s; + + while (sz > 0) + { + if (hfc->hfc_max_frame_sz == hfc->hfc_cur_sz) + { + if (hfc->hfc_n_frames > 0) + hfc_terminate_frame(hfc, 0); + s = lsquic_frab_list_write(&hfc->hfc_fw->fw_fral, "123456789", + sizeof(struct http_frame_header)); + if (s < 0) + return s; + ++hfc->hfc_n_frames; + hfc_save_ptr(hfc); + hfc->hfc_cur_sz = 0; + } + + avail = hfc->hfc_max_frame_sz - hfc->hfc_cur_sz; + if (sz < avail) + avail = sz; + if (avail) + { + s = lsquic_frab_list_write(&hfc->hfc_fw->fw_fral, p, avail); + if (s < 0) + return s; + hfc->hfc_cur_sz += avail; + sz -= avail; + p += avail; + } + } + + return 0; +} + + +static unsigned +count_uppercase (const unsigned char *buf, size_t sz) +{ + static const unsigned char uppercase[0x100] = { + ['A'] = 1, ['B'] = 1, ['C'] = 1, ['D'] = 1, ['E'] = 1, ['F'] = 1, + ['G'] = 1, ['H'] = 1, ['I'] = 1, ['J'] = 1, ['K'] = 1, ['L'] = 1, + ['M'] = 1, ['N'] = 1, ['O'] = 1, ['P'] = 1, ['Q'] = 1, ['R'] = 1, + ['S'] = 1, ['T'] = 1, ['U'] = 1, ['V'] = 1, ['W'] = 1, ['X'] = 1, + ['Y'] = 1, ['Z'] = 1, + }; + unsigned n_uppercase, i; + n_uppercase = 0; + for (i = 0; i < sz; ++i) + n_uppercase += uppercase[ buf[i] ]; + return n_uppercase; +} + + +static uint32_t +calc_headers_size (const struct lsquic_http_headers *headers) +{ + int i; + uint32_t size = 0; + for (i = 0; i < headers->count; ++i) + if (headers->headers[i].buf) + size += 32 + headers->headers[i].name_len + + headers->headers[i].val_len; + return size; +} + + +static int +have_oversize_strings (const struct lsquic_http_headers *headers) +{ +#if LSXPACK_MAX_STRLEN > LSHPACK_MAX_STRLEN + int i, have; + for (i = 0, have = 0; i < headers->count; ++i) + { + if (headers->headers[i].buf) + { + have |= headers->headers[i].name_len > LSHPACK_MAX_STRLEN; + have |= headers->headers[i].val_len > LSHPACK_MAX_STRLEN; + } + } + return have; +#else + return 0; +#endif +} + + +static int +check_headers_size (const struct lsquic_frame_writer *fw, + const struct lsquic_http_headers *headers) +{ + uint32_t headers_sz; + headers_sz = calc_headers_size(headers); + + if (headers_sz <= fw->fw_max_header_list_sz) + return 0; + else if (fw->fw_flags & FW_SERVER) + { + LSQ_INFO("Sending headers larger (%u bytes) than max allowed (%u)", + headers_sz, fw->fw_max_header_list_sz); + return 0; + } + else + { + LSQ_INFO("Headers size %u is larger than max allowed (%u)", + headers_sz, fw->fw_max_header_list_sz); + errno = EMSGSIZE; + return -1; + } +} + + +static int +check_headers_case (const struct lsquic_frame_writer *fw, + const struct lsquic_http_headers *headers) +{ + unsigned n_uppercase; + int i; + n_uppercase = 0; + for (i = 0; i < headers->count; ++i) + if (headers->headers[i].buf) + n_uppercase += count_uppercase((unsigned char *) + lsxpack_header_get_name(&headers->headers[i]), + headers->headers[i].name_len); + if (n_uppercase) + { + LSQ_INFO("Uppercase letters in header names"); + errno = EINVAL; + return -1; + } + return 0; +} + + +static int +write_headers (struct lsquic_frame_writer *fw, + const struct lsquic_http_headers *headers, + struct header_framer_ctx *hfc, unsigned char *buf, + const unsigned buf_sz) +{ + unsigned char *end; + int i, s; + for (i = 0; i < headers->count; ++i) + { + if (headers->headers[i].buf == NULL) + continue; + end = lshpack_enc_encode(fw->fw_henc, buf, buf + buf_sz, + &headers->headers[i]); + if (end > buf) + { + s = hfc_write(hfc, buf, end - buf); + if (s < 0) + return s; +#if LSQUIC_CONN_STATS + fw->fw_conn_stats->out.headers_uncomp += + headers->headers[i].name_len + + headers->headers[i].val_len; + fw->fw_conn_stats->out.headers_comp += end - buf; +#endif + } + else + { + /* Ignore errors, matching HTTP2 behavior in our server code */ + } + } + + return 0; +} + + +int +lsquic_frame_writer_write_headers (struct lsquic_frame_writer *fw, + lsquic_stream_id_t stream_id, + const struct lsquic_http_headers *headers, + int eos, unsigned weight) +{ + struct header_framer_ctx hfc; + int s; + struct http_prio_frame prio_frame; + enum http_frame_header_flags flags; + unsigned char *buf; + + /* Internal function: weight must be valid here */ + assert(weight >= 1 && weight <= 256); + + if (fw->fw_max_header_list_sz && 0 != check_headers_size(fw, headers)) + return -1; + + if (0 != check_headers_case(fw, headers)) + return -1; + + if (have_oversize_strings(headers)) + return -1; + + if (eos) + flags = HFHF_END_STREAM; + else + flags = 0; + + if (!(fw->fw_flags & FW_SERVER)) + flags |= HFHF_PRIORITY; + + hfc_init(&hfc, fw, fw->fw_max_frame_sz, HTTP_FRAME_HEADERS, stream_id, + flags); + + if (!(fw->fw_flags & FW_SERVER)) + { + memset(&prio_frame.hpf_stream_id, 0, sizeof(prio_frame.hpf_stream_id)); + prio_frame.hpf_weight = weight - 1; + s = hfc_write(&hfc, &prio_frame, sizeof(struct http_prio_frame)); + if (s < 0) + return s; + } + + buf = malloc(MAX_COMP_HEADER_FIELD_SIZE); + if (!buf) + return -1; + s = write_headers(fw, headers, &hfc, buf, MAX_COMP_HEADER_FIELD_SIZE); + free(buf); + if (0 == s) + { + EV_LOG_GENERATED_HTTP_HEADERS(LSQUIC_LOG_CONN_ID, stream_id, + fw->fw_flags & FW_SERVER, &prio_frame, headers); + hfc_terminate_frame(&hfc, HFHF_END_HEADERS); + return lsquic_frame_writer_flush(fw); + } + else + return s; +} + + +int +lsquic_frame_writer_write_promise (struct lsquic_frame_writer *fw, + lsquic_stream_id_t stream_id64, lsquic_stream_id_t promised_stream_id64, + const struct lsquic_http_headers *headers) +{ + uint32_t stream_id = stream_id64; + uint32_t promised_stream_id = promised_stream_id64; + struct header_framer_ctx hfc; + struct http_push_promise_frame push_frame; + unsigned char *buf; + int s; + + fiu_return_on("frame_writer/writer_promise", -1); + + if (fw->fw_max_header_list_sz && 0 != check_headers_size(fw, headers)) + return -1; + + if (0 != check_headers_case(fw, headers)) + return -1; + + if (have_oversize_strings(headers)) + return -1; + + hfc_init(&hfc, fw, fw->fw_max_frame_sz, HTTP_FRAME_PUSH_PROMISE, + stream_id, 0); + + promised_stream_id = htonl(promised_stream_id); + memcpy(push_frame.hppf_promised_id, &promised_stream_id, 4); + s = hfc_write(&hfc, &push_frame, sizeof(struct http_push_promise_frame)); + if (s < 0) + return s; + + buf = malloc(MAX_COMP_HEADER_FIELD_SIZE); + if (!buf) + return -1; + + s = write_headers(fw, headers, &hfc, buf, MAX_COMP_HEADER_FIELD_SIZE); + if (s != 0) + { + free(buf); + return -1; + } + + free(buf); + + EV_LOG_GENERATED_HTTP_PUSH_PROMISE(LSQUIC_LOG_CONN_ID, stream_id, + htonl(promised_stream_id), headers); + hfc_terminate_frame(&hfc, HFHF_END_HEADERS); + return lsquic_frame_writer_flush(fw); +} + + +void +lsquic_frame_writer_max_header_list_size (struct lsquic_frame_writer *fw, + uint32_t max_size) +{ + LSQ_DEBUG("set max_header_list_sz to %u", max_size); + fw->fw_max_header_list_sz = max_size; +} + + +static int +write_settings (struct lsquic_frame_writer *fw, + const struct lsquic_http2_setting *settings, unsigned n_settings) +{ + struct http_frame_header fh; + unsigned payload_length; + uint32_t val; + uint16_t id; + int s; + + payload_length = n_settings * 6; + + memset(&fh, 0, sizeof(fh)); + fh.hfh_type = HTTP_FRAME_SETTINGS; + fh.hfh_length[0] = payload_length >> 16; + fh.hfh_length[1] = payload_length >> 8; + fh.hfh_length[2] = payload_length; + + s = lsquic_frab_list_write(&fw->fw_fral, &fh, sizeof(fh)); + if (s != 0) + return s; + + do + { + id = htons(settings->id); + val = htonl(settings->value); + if (0 != (s = lsquic_frab_list_write(&fw->fw_fral, &id, sizeof(id))) || + 0 != (s = lsquic_frab_list_write(&fw->fw_fral, &val, sizeof(val)))) + return s; + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "wrote HTTP SETTINGS frame: " + "%s=%"PRIu32, lsquic_http_setting_id2str(settings->id), + settings->value); + ++settings; + } + while (--n_settings); + + return 0; +} + +int +lsquic_frame_writer_write_settings (struct lsquic_frame_writer *fw, + const struct lsquic_http2_setting *settings, unsigned n_settings) +{ + unsigned settings_per_frame; + unsigned n; + + if (0 == n_settings) + { + errno = EINVAL; + return -1; + } + + settings_per_frame = fw->fw_max_frame_sz / SETTINGS_FRAME_SZ; + n = 0; + + do { + if (settings_per_frame > n_settings - n) + settings_per_frame = n_settings - n; + if (0 != write_settings(fw, &settings[n], settings_per_frame)) + return -1; + n += settings_per_frame; + } while (n < n_settings); + + return lsquic_frame_writer_flush(fw); +} + + +int +lsquic_frame_writer_write_priority (struct lsquic_frame_writer *fw, + lsquic_stream_id_t stream_id64, int exclusive, + lsquic_stream_id_t stream_dep_id64, unsigned weight) +{ + uint32_t stream_id = stream_id64; + uint32_t stream_dep_id = stream_dep_id64; + unsigned char buf[ sizeof(struct http_frame_header) + + sizeof(struct http_prio_frame) ]; + struct http_frame_header *fh = (void *) &buf[0]; + struct http_prio_frame *prio_frame = (void *) &buf[sizeof(*fh)]; + int s; + + if (stream_dep_id & (1UL << 31)) + { + LSQ_WARN("stream ID too high (%u): cannot write PRIORITY frame", + stream_dep_id); + return -1; + } + + if (weight < 1 || weight > 256) + return -1; + + memset(fh, 0, sizeof(*fh)); + fh->hfh_type = HTTP_FRAME_PRIORITY; + fh->hfh_length[2] = sizeof(struct http_prio_frame); + stream_id = htonl(stream_id); + memcpy(fh->hfh_stream_id, &stream_id, 4); + + stream_dep_id |= !!exclusive << 31; + stream_id = htonl(stream_dep_id); + memcpy(prio_frame->hpf_stream_id, &stream_id, 4); + prio_frame->hpf_weight = weight - 1; + + s = lsquic_frab_list_write(&fw->fw_fral, buf, sizeof(buf)); + if (s != 0) + return s; + + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "wrote HTTP PRIORITY frame: " + "stream %"PRIu32"; weight: %u; exclusive: %d", + htonl(stream_id), weight, !!exclusive); + + return lsquic_frame_writer_flush(fw); +} + + +size_t +lsquic_frame_writer_mem_used (const struct lsquic_frame_writer *fw) +{ + size_t size; + + size = sizeof(*fw) + + lsquic_frab_list_mem_used(&fw->fw_fral) + - sizeof(fw->fw_fral); + + return size; +} diff --git a/external/lsquic/src/liblsquic/lsquic_frame_writer.h b/external/lsquic/src/liblsquic/lsquic_frame_writer.h new file mode 100644 index 0000000..ae7a3c2 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_frame_writer.h @@ -0,0 +1,71 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_frame_writer.h -- write frames to HEADERS stream. + */ + +#ifndef LSQUIC_FRAME_WRITER_H +#define LSQUIC_FRAME_WRITER_H 1 + +#include +#include + +struct iovec; +struct lshpack_enc; +struct lsquic_mm; +struct lsquic_frame_writer; +struct lsquic_stream; +struct lsquic_reader; +struct lsquic_http_headers; +struct lsquic_http2_setting; +#if LSQUIC_CONN_STATS +struct conn_stats; +#endif + +typedef ssize_t (*fw_writef_f)(struct lsquic_stream *, struct lsquic_reader *); + +struct lsquic_frame_writer * +lsquic_frame_writer_new (struct lsquic_mm *, struct lsquic_stream *, + unsigned max_frame_sz, struct lshpack_enc *, + fw_writef_f, +#if LSQUIC_CONN_STATS + struct conn_stats *, +#endif + int is_server); + +void +lsquic_frame_writer_destroy (struct lsquic_frame_writer *); + +int +lsquic_frame_writer_have_leftovers (const struct lsquic_frame_writer *); + +int +lsquic_frame_writer_flush (struct lsquic_frame_writer *); + +int +lsquic_frame_writer_write_headers (struct lsquic_frame_writer *, + lsquic_stream_id_t stream_id, + const struct lsquic_http_headers *, + int eos, unsigned weight); + +int +lsquic_frame_writer_write_settings (struct lsquic_frame_writer *, + const struct lsquic_http2_setting *, unsigned n_settings); + +int +lsquic_frame_writer_write_priority (struct lsquic_frame_writer *, + lsquic_stream_id_t stream_id, int exclusive, + lsquic_stream_id_t stream_dep_id, unsigned priority); + +int +lsquic_frame_writer_write_promise (struct lsquic_frame_writer *, + lsquic_stream_id_t stream_id, lsquic_stream_id_t promised_stream_id, + const struct lsquic_http_headers *headers); + +void +lsquic_frame_writer_max_header_list_size (struct lsquic_frame_writer *, + uint32_t max_size); + +size_t +lsquic_frame_writer_mem_used (const struct lsquic_frame_writer *); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_full_conn.c b/external/lsquic/src/liblsquic/lsquic_full_conn.c new file mode 100644 index 0000000..5c9b120 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_full_conn.c @@ -0,0 +1,4579 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_full_conn.c -- A "full" connection object has full functionality + */ + +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#include +#include +#endif +#include + +#include + +#include "lsquic_types.h" +#include "lsquic_sizes.h" +#include "lsquic.h" +#include "lsquic_packet_common.h" +#include "lsquic_alarmset.h" +#include "lsquic_packet_gquic.h" +#include "lsquic_parse.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_rechist.h" +#include "lsquic_util.h" +#include "lsquic_conn_flow.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_senhist.h" +#include "lsquic_rtt.h" +#include "lsquic_cubic.h" +#include "lsquic_pacer.h" +#include "lsquic_bw_sampler.h" +#include "lsquic_minmax.h" +#include "lsquic_bbr.h" +#include "lsquic_adaptive_cc.h" +#include "lsquic_set.h" +#include "lsquic_malo.h" +#include "lsquic_chsk_stream.h" +#include "lsquic_shsk_stream.h" +#include "lshpack.h" +#include "lsquic_str.h" +#include "lsquic_qtags.h" +#include "lsquic_enc_sess.h" +#include "lsquic_headers_stream.h" +#include "lsquic_frame_common.h" +#include "lsquic_frame_reader.h" +#include "lsquic_frame_writer.h" +#include "lsquic_http1x_if.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_spi.h" +#include "lsquic_ev_log.h" +#include "lsquic_version.h" +#include "lsquic_headers.h" +#include "lsquic_handshake.h" +#include "lsquic_attq.h" + +#include "lsquic_conn.h" +#include "lsquic_send_ctl.h" +#include "lsquic_conn_public.h" +#include "lsquic_ver_neg.h" +#include "lsquic_mini_conn.h" +#include "lsquic_full_conn.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_CONN +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(&conn->fc_conn) +#include "lsquic_logger.h" + +enum stream_if { STREAM_IF_STD, STREAM_IF_HSK, STREAM_IF_HDR, N_STREAM_IFS }; + +#define MAX_RETR_PACKETS_SINCE_LAST_ACK 2 +#define ACK_TIMEOUT 25000 + +/* Maximum number of ACK ranges that can fit into gQUIC ACK frame */ +#define MAX_ACK_RANGES 256 + +/* HANDSHAKE and HEADERS streams are always open in gQUIC connection */ +#define N_SPECIAL_STREAMS 2 + +/* IMPORTANT: Keep values of FC_SERVER and FC_HTTP same as LSENG_SERVER + * and LSENG_HTTP. + */ +enum full_conn_flags { + FC_SERVER = LSENG_SERVER, /* Server mode */ + FC_HTTP = LSENG_HTTP, /* HTTP mode */ + FC_TIMED_OUT = (1 << 2), +#define FC_BIT_ERROR 3 + FC_ERROR = (1 << FC_BIT_ERROR), + FC_ABORTED = (1 << 4), + FC_CLOSING = (1 << 5), /* Closing */ + FC_SEND_PING = (1 << 6), /* PING frame scheduled */ + FC_NSTP = (1 << 7), /* NSTP mode */ + FC_SEND_GOAWAY = (1 << 8), + FC_SEND_WUF = (1 << 9), + FC_SEND_STOP_WAITING + = (1 <<10), + FC_ACK_QUEUED = (1 <<11), + FC_ACK_HAD_MISS = (1 <<12), /* Last ACK frame had missing packets. */ + FC_CREATED_OK = (1 <<13), + FC_RECV_CLOSE = (1 <<14), /* Received CONNECTION_CLOSE frame */ + FC_GOING_AWAY = (1 <<15), /* Do not accept or create new streams */ + FC_GOAWAY_SENT = (1 <<16), /* Only send GOAWAY once */ + FC_SUPPORT_PUSH = (1 <<17), + FC_GOT_PRST = (1 <<18), /* Received public reset packet */ + FC_FIRST_TICK = (1 <<19), + FC_TICK_CLOSE = (1 <<20), /* We returned TICK_CLOSE */ + FC_HSK_FAILED = (1 <<21), + FC_HAVE_SAVED_ACK = (1 <<22), + FC_ABORT_COMPLAINED + = (1 <<23), + FC_GOT_SREJ = (1 <<24), /* Don't schedule ACK alarm */ + FC_NOPROG_TIMEOUT = (1 <<25), +}; + +#define FC_IMMEDIATE_CLOSE_FLAGS \ + (FC_TIMED_OUT|FC_ERROR|FC_ABORTED|FC_HSK_FAILED) + +#if LSQUIC_KEEP_STREAM_HISTORY +#define KEEP_CLOSED_STREAM_HISTORY 0 +#endif + +#if KEEP_CLOSED_STREAM_HISTORY +struct stream_history +{ + lsquic_stream_id_t shist_stream_id; + enum stream_flags shist_stream_flags; + unsigned char shist_hist_buf[1 << SM_HIST_BITS]; +}; +#define SHIST_BITS 5 +#define SHIST_MASK ((1 << SHIST_BITS) - 1) +#endif + +#ifndef KEEP_PACKET_HISTORY +#ifdef NDEBUG +#define KEEP_PACKET_HISTORY 0 +#else +#define KEEP_PACKET_HISTORY 16 +#endif +#endif + +#if KEEP_PACKET_HISTORY +struct packet_el +{ + lsquic_time_t time; + enum quic_ft_bit frame_types; +}; + +struct recent_packets +{ + struct packet_el els[KEEP_PACKET_HISTORY]; + unsigned idx; +}; +#endif + +struct stream_id_to_reset +{ + STAILQ_ENTRY(stream_id_to_reset) sitr_next; + lsquic_stream_id_t sitr_stream_id; +}; + + +struct full_conn +{ + struct lsquic_conn fc_conn; + struct conn_cid_elem fc_cces[2]; + struct lsquic_rechist fc_rechist; + struct { + const struct lsquic_stream_if *stream_if; + void *stream_if_ctx; + } fc_stream_ifs[N_STREAM_IFS]; + struct lsquic_send_ctl fc_send_ctl; + struct lsquic_conn_public fc_pub; + lsquic_alarmset_t fc_alset; + lsquic_set64_t fc_closed_stream_ids[2]; + const struct lsquic_engine_settings + *fc_settings; + struct lsquic_engine_public *fc_enpub; + lsquic_packno_t fc_max_ack_packno; + lsquic_packno_t fc_max_swf_packno; + lsquic_time_t fc_mem_logged_last; + struct { + unsigned max_streams_in; + unsigned max_streams_out; + unsigned max_conn_send; + unsigned max_stream_send; + } fc_cfg; + enum full_conn_flags fc_flags; + /* Number ackable packets received since last ACK was sent: */ + unsigned fc_n_slack_akbl; + unsigned fc_n_delayed_streams; + unsigned fc_n_cons_unretx; + lsquic_stream_id_t fc_last_stream_id; + lsquic_stream_id_t fc_max_peer_stream_id; + lsquic_stream_id_t fc_goaway_stream_id; + struct ver_neg fc_ver_neg; + union { + struct client_hsk_ctx client; + struct server_hsk_ctx server; + } fc_hsk_ctx; +#if LSQUIC_CONN_STATS + struct conn_stats fc_stats; + struct conn_stats *fc_last_stats; +#endif +#if KEEP_CLOSED_STREAM_HISTORY + /* Rolling log of histories of closed streams. Older entries are + * overwritten. + */ + struct stream_history fc_stream_histories[1 << SHIST_BITS]; + unsigned fc_stream_hist_idx; +#endif + char *fc_errmsg; +#if KEEP_PACKET_HISTORY + struct recent_packets fc_recent_packets[2]; /* 0: in; 1: out */ +#endif + STAILQ_HEAD(, stream_id_to_reset) + fc_stream_ids_to_reset; + lsquic_time_t fc_saved_ack_received; + struct network_path fc_path; + unsigned fc_orig_versions; /* Client only */ + enum enc_level fc_crypto_enc_level; + struct ack_info fc_ack; +}; + +static const struct ver_neg server_ver_neg; + + +#define MAX_ERRMSG 256 + +#define SET_ERRMSG(conn, ...) do { \ + if (!(conn)->fc_errmsg) \ + (conn)->fc_errmsg = malloc(MAX_ERRMSG); \ + if ((conn)->fc_errmsg) \ + snprintf((conn)->fc_errmsg, MAX_ERRMSG, __VA_ARGS__); \ +} while (0) + +#define ABORT_WITH_FLAG(conn, log_level, flag, ...) do { \ + SET_ERRMSG(conn, __VA_ARGS__); \ + if (!((conn)->fc_flags & FC_ABORT_COMPLAINED)) \ + LSQ_LOG(log_level, "Abort connection: " __VA_ARGS__); \ + (conn)->fc_flags |= flag|FC_ABORT_COMPLAINED; \ +} while (0) + +#define ABORT_ERROR(...) \ + ABORT_WITH_FLAG(conn, LSQ_LOG_ERROR, FC_ERROR, __VA_ARGS__) +#define ABORT_WARN(...) \ + ABORT_WITH_FLAG(conn, LSQ_LOG_WARN, FC_ERROR, __VA_ARGS__) + +static void +idle_alarm_expired (enum alarm_id, void *ctx, lsquic_time_t expiry, lsquic_time_t now); + +static void +ping_alarm_expired (enum alarm_id, void *ctx, lsquic_time_t expiry, lsquic_time_t now); + +static void +handshake_alarm_expired (enum alarm_id, void *ctx, lsquic_time_t expiry, lsquic_time_t now); + +static void +ack_alarm_expired (enum alarm_id, void *ctx, lsquic_time_t expiry, lsquic_time_t now); + +static lsquic_stream_t * +new_stream (struct full_conn *conn, lsquic_stream_id_t stream_id, + enum stream_ctor_flags); + +static struct lsquic_stream * +new_stream_ext (struct full_conn *, lsquic_stream_id_t, enum stream_if, + enum stream_ctor_flags); + +static void +reset_ack_state (struct full_conn *conn); + +static int +write_is_possible (struct full_conn *); + +static const struct headers_stream_callbacks *headers_callbacks_ptr; + +#if KEEP_CLOSED_STREAM_HISTORY + +static void +save_stream_history (struct full_conn *conn, const lsquic_stream_t *stream) +{ + sm_hist_idx_t idx; + struct stream_history *const shist = + &conn->fc_stream_histories[ conn->fc_stream_hist_idx++ & SHIST_MASK ]; + + shist->shist_stream_id = stream->id; + shist->shist_stream_flags = stream->stream_flags; + + idx = stream->sm_hist_idx & SM_HIST_IDX_MASK; + if ('\0' == stream->sm_hist_buf[ idx ]) + memcpy(shist->shist_hist_buf, stream->sm_hist_buf, idx + 1); + else + { + memcpy(shist->shist_hist_buf, + stream->sm_hist_buf + idx, sizeof(stream->sm_hist_buf) - idx); + memcpy(shist->shist_hist_buf + sizeof(shist->shist_hist_buf) - idx, + stream->sm_hist_buf, idx); + } +} + + +static const struct stream_history * +find_stream_history (const struct full_conn *conn, lsquic_stream_id_t stream_id) +{ + const struct stream_history *shist; + const struct stream_history *const shist_end = + conn->fc_stream_histories + (1 << SHIST_BITS); + for (shist = conn->fc_stream_histories; shist < shist_end; ++shist) + if (shist->shist_stream_id == stream_id) + return shist; + return NULL; +} + + +# define SAVE_STREAM_HISTORY(conn, stream) save_stream_history(conn, stream) +#else +# define SAVE_STREAM_HISTORY(conn, stream) +#endif + +#if KEEP_PACKET_HISTORY +static void +recent_packet_hist_new (struct full_conn *conn, unsigned out, + lsquic_time_t time) +{ + unsigned idx; + idx = conn->fc_recent_packets[out].idx++ % KEEP_PACKET_HISTORY; + conn->fc_recent_packets[out].els[idx].time = time; +} + + +static void +recent_packet_hist_frames (struct full_conn *conn, unsigned out, + enum quic_ft_bit frame_types) +{ + unsigned idx; + idx = (conn->fc_recent_packets[out].idx - 1) % KEEP_PACKET_HISTORY; + conn->fc_recent_packets[out].els[idx].frame_types |= frame_types; +} + + +#else +#define recent_packet_hist_new(conn, out, time) +#define recent_packet_hist_frames(conn, out, frames) +#endif + +static unsigned +highest_bit_set (unsigned sz) +{ +#if __GNUC__ + unsigned clz = __builtin_clz(sz); + return 31 - clz; +#else + unsigned n, y; + n = 32; + y = sz >> 16; if (y) { n -= 16; sz = y; } + y = sz >> 8; if (y) { n -= 8; sz = y; } + y = sz >> 4; if (y) { n -= 4; sz = y; } + y = sz >> 2; if (y) { n -= 2; sz = y; } + y = sz >> 1; if (y) return 31 - n + 2; + return 31 - n + sz; +#endif +} + + +static size_t +calc_mem_used (const struct full_conn *conn) +{ + const lsquic_stream_t *stream; + const struct lsquic_hash_elem *el; + size_t size; + + size = sizeof(*conn); + size -= sizeof(conn->fc_send_ctl); + size += lsquic_send_ctl_mem_used(&conn->fc_send_ctl); + size += lsquic_hash_mem_used(conn->fc_pub.all_streams); + size += lsquic_malo_mem_used(conn->fc_pub.packet_out_malo); + if (conn->fc_pub.u.gquic.hs) + size += lsquic_headers_stream_mem_used(conn->fc_pub.u.gquic.hs); + + for (el = lsquic_hash_first(conn->fc_pub.all_streams); el; + el = lsquic_hash_next(conn->fc_pub.all_streams)) + { + stream = lsquic_hashelem_getdata(el); + size += lsquic_stream_mem_used(stream); + } + size += conn->fc_conn.cn_esf.g->esf_mem_used(conn->fc_conn.cn_enc_session); + + return size; +} + + +static void +set_versions (struct full_conn *conn, unsigned versions, + enum lsquic_version *ver) +{ + conn->fc_ver_neg.vn_supp = versions; + conn->fc_ver_neg.vn_ver = (ver) ? *ver : highest_bit_set(versions); + conn->fc_ver_neg.vn_buf = lsquic_ver2tag(conn->fc_ver_neg.vn_ver); + conn->fc_conn.cn_version = conn->fc_ver_neg.vn_ver; + conn->fc_conn.cn_pf = select_pf_by_ver(conn->fc_ver_neg.vn_ver); + LSQ_DEBUG("negotiating version %s", + lsquic_ver2str[conn->fc_ver_neg.vn_ver]); +} + + +static void +init_ver_neg (struct full_conn *conn, unsigned versions, + enum lsquic_version *ver) +{ + set_versions(conn, versions, ver); + conn->fc_ver_neg.vn_tag = &conn->fc_ver_neg.vn_buf; + conn->fc_ver_neg.vn_state = VN_START; +} + + +/* If peer supplies odd values, we abort the connection immediately rather + * that wait for it to finish "naturally" due to inability to send things. + */ +#ifdef NDEBUG +static +#endif +void +lsquic_full_conn_on_peer_config (struct full_conn *conn, unsigned peer_cfcw, + unsigned peer_sfcw, unsigned max_streams_out) +{ + lsquic_stream_t *stream; + struct lsquic_hash_elem *el; + + LSQ_INFO("Applying peer config: cfcw: %u; sfcw: %u; # streams: %u", + peer_cfcw, peer_sfcw, max_streams_out); + + if (peer_cfcw < conn->fc_pub.conn_cap.cc_sent) + { + ABORT_ERROR("peer specified CFCW=%u bytes, which is smaller than " + "the amount of data already sent on this connection (%"PRIu64 + " bytes)", peer_cfcw, conn->fc_pub.conn_cap.cc_sent); + return; + } + + conn->fc_cfg.max_streams_out = max_streams_out; + conn->fc_pub.conn_cap.cc_max = peer_cfcw; + + for (el = lsquic_hash_first(conn->fc_pub.all_streams); el; + el = lsquic_hash_next(conn->fc_pub.all_streams)) + { + stream = lsquic_hashelem_getdata(el); + if (0 != lsquic_stream_set_max_send_off(stream, peer_sfcw)) + { + ABORT_ERROR("cannot set peer-supplied SFCW=%u on stream %"PRIu64, + peer_sfcw, stream->id); + return; + } + } + + conn->fc_cfg.max_stream_send = peer_sfcw; +} + + +static int +send_smhl (const struct full_conn *conn) +{ + uint32_t smhl; + return conn->fc_conn.cn_enc_session + && 0 == conn->fc_conn.cn_esf.g->esf_get_peer_setting( + conn->fc_conn.cn_enc_session, QTAG_SMHL, &smhl) + && 1 == smhl; +} + + +/* Once handshake has been completed, send settings to peer if appropriate. + */ +static void +maybe_send_settings (struct full_conn *conn) +{ + struct lsquic_http2_setting settings[2]; + unsigned n_settings = 0; + + if (conn->fc_settings->es_max_header_list_size && send_smhl(conn)) + { + settings[n_settings].id = SETTINGS_MAX_HEADER_LIST_SIZE; + settings[n_settings].value = conn->fc_settings->es_max_header_list_size; + LSQ_DEBUG("sending settings SETTINGS_MAX_HEADER_LIST_SIZE=%u", + settings[n_settings].value); + ++n_settings; + } + if (!(conn->fc_flags & FC_SERVER) && !conn->fc_settings->es_support_push) + { + settings[n_settings].id = SETTINGS_ENABLE_PUSH; + settings[n_settings].value = 0; + LSQ_DEBUG("sending settings SETTINGS_ENABLE_PUSH=%u", + settings[n_settings].value); + ++n_settings; + } + + if (n_settings) + { + if (0 != lsquic_headers_stream_send_settings(conn->fc_pub.u.gquic.hs, + settings, n_settings)) + ABORT_ERROR("could not send settings"); + } + else + LSQ_DEBUG("not sending any settings"); +} + + +static int +apply_peer_settings (struct full_conn *conn) +{ + uint32_t cfcw, sfcw, mids; + unsigned n; + const struct { + uint32_t tag; + uint32_t *val; + const char *tag_str; + } tags[] = { + { QTAG_CFCW, &cfcw, "CFCW", }, + { QTAG_SFCW, &sfcw, "SFCW", }, + { QTAG_MIDS, &mids, "MIDS", }, + }; + +#ifndef NDEBUG + if (getenv("LSQUIC_TEST_ENGINE_DTOR")) + return 0; +#endif + + for (n = 0; n < sizeof(tags) / sizeof(tags[0]); ++n) + if (0 != conn->fc_conn.cn_esf.g->esf_get_peer_setting( + conn->fc_conn.cn_enc_session, tags[n].tag, tags[n].val)) + { + LSQ_INFO("peer did not supply value for %s", tags[n].tag_str); + return -1; + } + + LSQ_DEBUG("peer settings: CFCW: %u; SFCW: %u; MIDS: %u", + cfcw, sfcw, mids); + lsquic_full_conn_on_peer_config(conn, cfcw, sfcw, mids); + return 0; +} + + +static const struct conn_iface *full_conn_iface_ptr; + + +/* gQUIC up to version Q046 has handshake stream 1 and headers stream 3. + * Q050 and later have "crypto streams" -- meaning CRYPTO frames, not + * STREAM frames and no stream IDs -- and headers stream 1. + */ +static lsquic_stream_id_t +headers_stream_id_by_ver (enum lsquic_version version) +{ + if (version < LSQVER_050) + return 3; + else + return 1; +} + + +static lsquic_stream_id_t +headers_stream_id_by_conn (const struct full_conn *conn) +{ + return headers_stream_id_by_ver(conn->fc_conn.cn_version); +} + + +static lsquic_stream_id_t +hsk_stream_id (const struct full_conn *conn) +{ + if (conn->fc_conn.cn_version < LSQVER_050) + return 1; + else + /* Use this otherwise invalid stream ID as ID for the gQUIC crypto + * stream. + */ + return (uint64_t) -1; +} + + +static int +has_handshake_stream (const struct full_conn *conn) +{ + return conn->fc_conn.cn_version < LSQVER_050; +} + + +static int +is_handshake_stream_id (const struct full_conn *conn, + lsquic_stream_id_t stream_id) +{ + return conn->fc_conn.cn_version < LSQVER_050 && stream_id == 1; +} + + +static struct full_conn * +new_conn_common (lsquic_cid_t cid, struct lsquic_engine_public *enpub, + unsigned flags, enum lsquic_version version) +{ + struct full_conn *conn; + lsquic_stream_t *headers_stream; + int saved_errno; + + assert(0 == (flags & ~(FC_SERVER|FC_HTTP))); + + conn = calloc(1, sizeof(*conn)); + if (!conn) + return NULL; + headers_stream = NULL; + conn->fc_conn.cn_if = full_conn_iface_ptr; + conn->fc_conn.cn_cces = conn->fc_cces; + conn->fc_conn.cn_cces_mask = 1; + conn->fc_conn.cn_cid = cid; + conn->fc_conn.cn_logid = cid; + conn->fc_flags = flags; + conn->fc_enpub = enpub; + conn->fc_pub.enpub = enpub; + conn->fc_pub.mm = &enpub->enp_mm; + conn->fc_pub.lconn = &conn->fc_conn; + conn->fc_pub.send_ctl = &conn->fc_send_ctl; +#if LSQUIC_CONN_STATS + conn->fc_pub.conn_stats = &conn->fc_stats; +#endif + conn->fc_pub.packet_out_malo = + lsquic_malo_create(sizeof(struct lsquic_packet_out)); + conn->fc_pub.path = &conn->fc_path; + conn->fc_pub.max_peer_ack_usec = ACK_TIMEOUT; + conn->fc_stream_ifs[STREAM_IF_STD].stream_if = enpub->enp_stream_if; + conn->fc_stream_ifs[STREAM_IF_STD].stream_if_ctx = enpub->enp_stream_if_ctx; + conn->fc_settings = &enpub->enp_settings; + /* Calculate maximum number of incoming streams using the same mechanism + * and parameters as found in Chrome: + */ + conn->fc_cfg.max_streams_in = + (unsigned) ((float) enpub->enp_settings.es_max_streams_in * 1.1f); + if (conn->fc_cfg.max_streams_in < + enpub->enp_settings.es_max_streams_in + 10) + conn->fc_cfg.max_streams_in = + enpub->enp_settings.es_max_streams_in + 10; + /* `max_streams_out' gets reset when handshake is complete and we + * learn of peer settings. 100 seems like a sane default value + * because it is what other implementations use. In server mode, + * we do not open any streams until the handshake is complete; in + * client mode, we are limited to 98 outgoing requests alongside + * handshake and headers streams. + */ + conn->fc_cfg.max_streams_out = 100; + TAILQ_INIT(&conn->fc_pub.sending_streams); + TAILQ_INIT(&conn->fc_pub.read_streams); + TAILQ_INIT(&conn->fc_pub.write_streams); + TAILQ_INIT(&conn->fc_pub.service_streams); + STAILQ_INIT(&conn->fc_stream_ids_to_reset); + lsquic_conn_cap_init(&conn->fc_pub.conn_cap, LSQUIC_MIN_FCW); + lsquic_alarmset_init(&conn->fc_alset, &conn->fc_conn); + lsquic_alarmset_init_alarm(&conn->fc_alset, AL_IDLE, idle_alarm_expired, conn); + lsquic_alarmset_init_alarm(&conn->fc_alset, AL_ACK_APP, ack_alarm_expired, conn); + lsquic_alarmset_init_alarm(&conn->fc_alset, AL_PING, ping_alarm_expired, conn); + lsquic_alarmset_init_alarm(&conn->fc_alset, AL_HANDSHAKE, handshake_alarm_expired, conn); + lsquic_set64_init(&conn->fc_closed_stream_ids[0]); + lsquic_set64_init(&conn->fc_closed_stream_ids[1]); + lsquic_cfcw_init(&conn->fc_pub.cfcw, &conn->fc_pub, conn->fc_settings->es_cfcw); + lsquic_send_ctl_init(&conn->fc_send_ctl, &conn->fc_alset, conn->fc_enpub, + flags & FC_SERVER ? &server_ver_neg : &conn->fc_ver_neg, + &conn->fc_pub, 0); + + conn->fc_pub.all_streams = lsquic_hash_create(); + if (!conn->fc_pub.all_streams) + goto cleanup_on_error; + lsquic_rechist_init(&conn->fc_rechist, 0, MAX_ACK_RANGES); + if (conn->fc_flags & FC_HTTP) + { + conn->fc_pub.u.gquic.hs = lsquic_headers_stream_new( + !!(conn->fc_flags & FC_SERVER), conn->fc_enpub, + headers_callbacks_ptr, +#if LSQUIC_CONN_STATS + &conn->fc_stats, +#endif + conn); + if (!conn->fc_pub.u.gquic.hs) + goto cleanup_on_error; + conn->fc_stream_ifs[STREAM_IF_HDR].stream_if = lsquic_headers_stream_if; + conn->fc_stream_ifs[STREAM_IF_HDR].stream_if_ctx = conn->fc_pub.u.gquic.hs; + headers_stream = new_stream_ext(conn, headers_stream_id_by_ver(version), + STREAM_IF_HDR, + SCF_CALL_ON_NEW|SCF_DI_AUTOSWITCH|SCF_CRITICAL|SCF_HEADERS); + if (!headers_stream) + goto cleanup_on_error; + } + else + { + conn->fc_stream_ifs[STREAM_IF_HDR].stream_if = enpub->enp_stream_if; + conn->fc_stream_ifs[STREAM_IF_HDR].stream_if_ctx = enpub->enp_stream_if_ctx; + } + if (conn->fc_settings->es_support_push) + conn->fc_flags |= FC_SUPPORT_PUSH; + conn->fc_conn.cn_n_cces = sizeof(conn->fc_cces) / sizeof(conn->fc_cces[0]); + if (conn->fc_settings->es_noprogress_timeout) + conn->fc_flags |= FC_NOPROG_TIMEOUT; + return conn; + + cleanup_on_error: + saved_errno = errno; + + if (conn->fc_pub.all_streams) + lsquic_hash_destroy(conn->fc_pub.all_streams); + lsquic_rechist_cleanup(&conn->fc_rechist); + if (conn->fc_flags & FC_HTTP) + { + if (conn->fc_pub.u.gquic.hs) + lsquic_headers_stream_destroy(conn->fc_pub.u.gquic.hs); + if (headers_stream) + lsquic_stream_destroy(headers_stream); + } + memset(conn, 0, sizeof(*conn)); + free(conn); + + errno = saved_errno; + return NULL; +} + + +struct lsquic_conn * +lsquic_gquic_full_conn_client_new (struct lsquic_engine_public *enpub, + unsigned versions, unsigned flags, + const char *hostname, unsigned short max_packet_size, + int is_ipv4, + const unsigned char *sess_resume, size_t sess_resume_len) +{ + struct full_conn *conn; + enum lsquic_version version, sess_resume_version; + lsquic_cid_t cid; + const struct enc_session_funcs_gquic *esf_g; + + versions &= (~LSQUIC_IETF_VERSIONS & LSQUIC_SUPPORTED_VERSIONS); + assert(versions); + version = highest_bit_set(versions); + if (sess_resume) + { + sess_resume_version = lsquic_sess_resume_version(sess_resume, sess_resume_len); + if (sess_resume_version < N_LSQVER && ((1 << sess_resume_version) & versions)) + version = sess_resume_version; + } + esf_g = &lsquic_enc_session_gquic_gquic_1; + lsquic_generate_cid_gquic(&cid); + if (!max_packet_size) + { + if (enpub->enp_settings.es_base_plpmtu) + max_packet_size = enpub->enp_settings.es_base_plpmtu; + else if (is_ipv4) + max_packet_size = GQUIC_MAX_IPv4_PACKET_SZ; + else + max_packet_size = GQUIC_MAX_IPv6_PACKET_SZ; + } + conn = new_conn_common(cid, enpub, flags, version); + if (!conn) + return NULL; + init_ver_neg(conn, versions, &version); + conn->fc_path.np_pack_size = max_packet_size; + conn->fc_conn.cn_esf_c = select_esf_common_by_ver(version); + conn->fc_conn.cn_esf.g = esf_g; + conn->fc_conn.cn_enc_session = + conn->fc_conn.cn_esf.g->esf_create_client(&conn->fc_conn, hostname, + cid, conn->fc_enpub, sess_resume, sess_resume_len); + if (!conn->fc_conn.cn_enc_session) + { + LSQ_WARN("could not create enc session: %s", strerror(errno)); + conn->fc_conn.cn_if->ci_destroy(&conn->fc_conn); + return NULL; + } + + if (conn->fc_flags & FC_HTTP) + conn->fc_last_stream_id = headers_stream_id_by_conn(conn); /* Client goes (3?), 5, 7, 9.... */ + else if (has_handshake_stream(conn)) + conn->fc_last_stream_id = 1; + else + conn->fc_last_stream_id = (uint64_t) -1; /* +2 will get us to 1 */ + conn->fc_hsk_ctx.client.lconn = &conn->fc_conn; + conn->fc_hsk_ctx.client.mm = &enpub->enp_mm; + conn->fc_hsk_ctx.client.ver_neg = &conn->fc_ver_neg; + conn->fc_stream_ifs[STREAM_IF_HSK] + .stream_if = &lsquic_client_hsk_stream_if; + conn->fc_stream_ifs[STREAM_IF_HSK].stream_if_ctx = &conn->fc_hsk_ctx.client; + conn->fc_orig_versions = versions; + if (conn->fc_settings->es_handshake_to) + lsquic_alarmset_set(&conn->fc_alset, AL_HANDSHAKE, + lsquic_time_now() + conn->fc_settings->es_handshake_to); + if (!new_stream_ext(conn, hsk_stream_id(conn), STREAM_IF_HSK, + SCF_CALL_ON_NEW|SCF_DI_AUTOSWITCH|SCF_CRITICAL|SCF_CRYPTO + |(conn->fc_conn.cn_version >= LSQVER_050 ? SCF_CRYPTO_FRAMES : 0))) + { + LSQ_WARN("could not create handshake stream: %s", strerror(errno)); + conn->fc_conn.cn_if->ci_destroy(&conn->fc_conn); + return NULL; + } + conn->fc_flags |= FC_CREATED_OK; + LSQ_INFO("Created new client connection"); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "created full connection"); + return &conn->fc_conn; +} + + +static void +full_conn_ci_client_call_on_new (struct lsquic_conn *lconn) +{ + struct full_conn *const conn = (struct full_conn *) lconn; + assert(conn->fc_flags & FC_CREATED_OK); + lconn->cn_conn_ctx = conn->fc_stream_ifs[STREAM_IF_STD].stream_if + ->on_new_conn(conn->fc_stream_ifs[STREAM_IF_STD].stream_if_ctx, lconn); +} + + +/* This function is special in that it peeks into fc_send_ctl. Other functions + * should not do that. + */ +struct lsquic_conn * +lsquic_gquic_full_conn_server_new (struct lsquic_engine_public *enpub, + unsigned flags, lsquic_conn_t *lconn_mini) +{ + struct full_conn *conn; + struct mini_conn *mc; + lsquic_conn_t *lconn_full; + lsquic_packet_in_t *packet_in; + lsquic_packet_out_t *packet_out; + lsquic_stream_t *hsk_stream; + lsquic_packno_t next_packno; + mconn_packno_set_t received; + unsigned n; + uint32_t tcid0_val; + int have_errors = 0, tcid0; + int have_outgoing_ack = 0; + + mc = (struct mini_conn *) lconn_mini; + conn = new_conn_common(lconn_mini->cn_cid, enpub, flags, + lconn_mini->cn_version); + if (!conn) + return NULL; + lconn_full = &conn->fc_conn; + conn->fc_last_stream_id = 0; /* Server goes 2, 4, 6.... */ + if (conn->fc_flags & FC_HTTP) + conn->fc_max_peer_stream_id = headers_stream_id_by_conn(conn); + else if (has_handshake_stream(conn)) + conn->fc_max_peer_stream_id = 1; + else + conn->fc_max_peer_stream_id = (uint64_t) -1; + conn->fc_stream_ifs[STREAM_IF_HSK] + .stream_if = &lsquic_server_hsk_stream_if; + conn->fc_stream_ifs[STREAM_IF_HSK].stream_if_ctx = &conn->fc_hsk_ctx.server; + conn->fc_ver_neg.vn_ver = lconn_mini->cn_version; + conn->fc_conn.cn_version = lconn_mini->cn_version; + conn->fc_conn.cn_pf = lconn_mini->cn_pf; + conn->fc_conn.cn_esf_c = lconn_mini->cn_esf_c; + conn->fc_conn.cn_esf.g = lconn_mini->cn_esf.g; + conn->fc_conn.cn_flags |= LSCONN_VER_SET | LSCONN_SERVER; + conn->fc_pub.rtt_stats = mc->mc_rtt_stats; + + conn->fc_hsk_ctx.server.lconn = lconn_full; + conn->fc_hsk_ctx.server.enpub = enpub; + + /* TODO Optimize: we don't need an actual crypto stream and handler + * on the server side, as we don't do anything with it. We can + * throw out appropriate frames earlier. + */ + + /* Adjust offsets in the HANDSHAKE stream: */ + hsk_stream = new_stream_ext(conn, hsk_stream_id(conn), STREAM_IF_HSK, + SCF_CALL_ON_NEW|SCF_DI_AUTOSWITCH|SCF_CRITICAL|SCF_CRYPTO + |(conn->fc_conn.cn_version >= LSQVER_050 ? SCF_CRYPTO_FRAMES : 0)); + if (!hsk_stream) + { + LSQ_DEBUG("could not create handshake stream: %s", strerror(errno)); + conn->fc_conn.cn_if->ci_destroy(&conn->fc_conn); + return NULL; + } + hsk_stream->tosend_off = mc->mc_write_off; + hsk_stream->read_offset = mc->mc_read_off; + if (0 != lsquic_stream_update_sfcw(hsk_stream, mc->mc_write_off)) + { + LSQ_WARN("Invalid write offset %u", mc->mc_write_off); + ++have_errors; + } + + assert(lconn_full->cn_enc_session == NULL); + lconn_full->cn_enc_session = lconn_mini->cn_enc_session; + lconn_mini->cn_enc_session = NULL; + lconn_full->cn_esf_c->esf_set_conn(lconn_full->cn_enc_session, + &conn->fc_conn); + + lsquic_send_ctl_verneg_done(&conn->fc_send_ctl); + conn->fc_send_ctl.sc_cur_packno = mc->mc_cur_packno; + lsquic_send_ctl_begin_optack_detection(&conn->fc_send_ctl); + + /* Remove those that still exist from the set: they will be marked as + * received during regular processing in ci_packet_in() later on. + */ + received = mc->mc_received_packnos; + TAILQ_FOREACH(packet_in, &mc->mc_packets_in, pi_next) + received &= ~MCONN_PACKET_MASK(packet_in->pi_packno); + + for (n = 0; received; ++n) + { + if (received & (1ULL << n)) + /* Setting `now' to zero is OK here, as we should have had at + * least one other packet above. + */ + lsquic_rechist_received(&conn->fc_rechist, n + 1, 0); + received &= ~(1ULL << n); + } + + /* Mini connection sends out packets 1, 2, 3... and so on. It deletes + * packets that have been successfully sent and acked or those that have + * been lost. We take ownership of all packets in mc_packets_out; those + * that are not on the list are recorded in fc_send_ctl.sc_senhist. + */ + next_packno = 0; + while ((packet_out = TAILQ_FIRST(&mc->mc_packets_out))) + { + TAILQ_REMOVE(&mc->mc_packets_out, packet_out, po_next); + + /* Holes in the sequence signify ACKed or lost packets */ + ++next_packno; + for ( ; next_packno < packet_out->po_packno; ++next_packno) + lsquic_senhist_add(&conn->fc_send_ctl.sc_senhist, next_packno); + + packet_out->po_path = &conn->fc_path; + if (mc->mc_sent_packnos & MCONN_PACKET_MASK(packet_out->po_packno)) + { + LSQ_DEBUG("got sent packet_out %"PRIu64" from mini", + packet_out->po_packno); + if (0 != lsquic_send_ctl_sent_packet(&conn->fc_send_ctl, + packet_out) + && !have_errors /* Warn once */) + { + ++have_errors; + LSQ_WARN("could not add packet %"PRIu64" to sent set: %s", + packet_out->po_packno, strerror(errno)); + } + } + else + { + LSQ_DEBUG("got unsent packet_out %"PRIu64" from mini (will send)", + packet_out->po_packno); + lsquic_send_ctl_scheduled_one(&conn->fc_send_ctl, packet_out); + have_outgoing_ack |= packet_out->po_frame_types & + (1 << QUIC_FRAME_ACK); + } + } + + assert(lconn_mini->cn_flags & LSCONN_HANDSHAKE_DONE); + lconn_full->cn_flags |= LSCONN_HANDSHAKE_DONE; + + lconn_full->cn_flags |= lconn_mini->cn_flags & + LSCONN_PEER_GOING_AWAY /* We are OK with fc_goaway_stream_id = 0 */; + conn->fc_path = mc->mc_path; + + if (0 == apply_peer_settings(conn)) + { + if (conn->fc_flags & FC_HTTP) + maybe_send_settings(conn); + } + else + ++have_errors; + + if (0 == have_errors) + { + tcid0 = conn->fc_settings->es_support_tcid0 + && 0 == conn->fc_conn.cn_esf.g->esf_get_peer_setting( + conn->fc_conn.cn_enc_session, QTAG_TCID, &tcid0_val) + && 0 == tcid0_val; + lsquic_send_ctl_set_tcid0(&conn->fc_send_ctl, tcid0); + if (tcid0) + conn->fc_conn.cn_flags |= LSCONN_TCID0; + conn->fc_flags |= FC_CREATED_OK|FC_FIRST_TICK; + if (conn->fc_conn.cn_version >= LSQVER_046 + || conn->fc_conn.cn_esf.g->esf_get_peer_option( + conn->fc_conn.cn_enc_session, QTAG_NSTP)) + { + conn->fc_flags |= FC_NSTP; + lsquic_send_ctl_turn_nstp_on(&conn->fc_send_ctl); + } + LSQ_DEBUG("Calling on_new_conn callback"); + lconn_full->cn_conn_ctx = enpub->enp_stream_if->on_new_conn( + enpub->enp_stream_if_ctx, &conn->fc_conn); + /* Now that user code knows about this connection, process incoming + * packets, if any. + */ + while ((packet_in = TAILQ_FIRST(&mc->mc_packets_in))) + { + TAILQ_REMOVE(&mc->mc_packets_in, packet_in, pi_next); + packet_in->pi_flags |= PI_FROM_MINI; + conn->fc_conn.cn_if->ci_packet_in(&conn->fc_conn, packet_in); + lsquic_packet_in_put(conn->fc_pub.mm, packet_in); + } + /* At this point we may have errors, but we promote it anyway: this is + * so that CONNECTION_CLOSE frame can be generated and sent out. + */ + if (have_outgoing_ack) + reset_ack_state(conn); + lsquic_alarmset_set(&conn->fc_alset, AL_IDLE, + lsquic_time_now() + conn->fc_settings->es_idle_conn_to); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "created full connection"); + LSQ_INFO("Created new server connection"); + return &conn->fc_conn; + } + else + { + LSQ_DEBUG("hit errors creating connection, return NULL"); + conn->fc_conn.cn_if->ci_destroy(&conn->fc_conn); + return NULL; + } +} + + +static int +is_our_stream (const struct full_conn *conn, const lsquic_stream_t *stream) +{ + int is_server = !!(conn->fc_flags & FC_SERVER); + return (1 & stream->id) ^ is_server; +} + + +static unsigned +count_streams (const struct full_conn *conn, int peer) +{ + const lsquic_stream_t *stream; + unsigned count; + int ours; + int is_server; + struct lsquic_hash_elem *el; + + peer = !!peer; + is_server = !!(conn->fc_flags & FC_SERVER); + count = 0; + + for (el = lsquic_hash_first(conn->fc_pub.all_streams); el; + el = lsquic_hash_next(conn->fc_pub.all_streams)) + { + stream = lsquic_hashelem_getdata(el); + ours = (1 & stream->id) ^ is_server; + if (ours ^ peer) + count += !(lsquic_stream_is_closed(stream) + /* When counting peer-initiated streams, do not + * include those that have been reset: + */ + || (peer && lsquic_stream_is_reset(stream))); + } + + return count; +} + + +enum stream_count { SCNT_ALL, SCNT_PEER, SCNT_CLOSED, SCNT_RESET, + SCNT_RES_UNCLO /* reset and not closed */, N_SCNTS }; + +static void +collect_stream_counts (const struct full_conn *conn, int peer, + unsigned counts[N_SCNTS]) +{ + const lsquic_stream_t *stream; + int ours; + int is_server; + struct lsquic_hash_elem *el; + + peer = !!peer; + is_server = !!(conn->fc_flags & FC_SERVER); + memset(counts, 0, N_SCNTS * sizeof(counts[0])); + + for (el = lsquic_hash_first(conn->fc_pub.all_streams); el; + el = lsquic_hash_next(conn->fc_pub.all_streams)) + { + ++counts[SCNT_ALL]; + stream = lsquic_hashelem_getdata(el); + ours = (1 & stream->id) ^ is_server; + if (ours ^ peer) + { + ++counts[SCNT_PEER]; + counts[SCNT_CLOSED] += lsquic_stream_is_closed(stream); + counts[SCNT_RESET] += !!lsquic_stream_is_reset(stream); + counts[SCNT_RES_UNCLO] += lsquic_stream_is_reset(stream) + && !lsquic_stream_is_closed(stream); + } + } +} + + +static void +full_conn_ci_destroy (lsquic_conn_t *lconn) +{ + struct full_conn *conn = (struct full_conn *) lconn; + struct lsquic_hash_elem *el; + struct lsquic_stream *stream; + struct stream_id_to_reset *sitr; + + LSQ_DEBUG("destroy connection"); + conn->fc_flags |= FC_CLOSING; + lsquic_set64_cleanup(&conn->fc_closed_stream_ids[0]); + lsquic_set64_cleanup(&conn->fc_closed_stream_ids[1]); + while ((el = lsquic_hash_first(conn->fc_pub.all_streams))) + { + stream = lsquic_hashelem_getdata(el); + lsquic_hash_erase(conn->fc_pub.all_streams, el); + lsquic_stream_destroy(stream); + } + lsquic_hash_destroy(conn->fc_pub.all_streams); + if (conn->fc_flags & FC_CREATED_OK) + conn->fc_stream_ifs[STREAM_IF_STD].stream_if + ->on_conn_closed(&conn->fc_conn); + if (conn->fc_pub.u.gquic.hs) + lsquic_headers_stream_destroy(conn->fc_pub.u.gquic.hs); + + lsquic_send_ctl_cleanup(&conn->fc_send_ctl); + lsquic_rechist_cleanup(&conn->fc_rechist); + if (conn->fc_conn.cn_enc_session) + conn->fc_conn.cn_esf.g->esf_destroy(conn->fc_conn.cn_enc_session); + lsquic_malo_destroy(conn->fc_pub.packet_out_malo); +#if LSQUIC_CONN_STATS + LSQ_NOTICE("# ticks: %lu", conn->fc_stats.n_ticks); + LSQ_NOTICE("received %lu packets, of which %lu were not decryptable, %lu were " + "dups and %lu were errors; sent %lu packets, avg stream data per outgoing" + " packet is %lu bytes", + conn->fc_stats.in.packets, conn->fc_stats.in.undec_packets, + conn->fc_stats.in.dup_packets, conn->fc_stats.in.err_packets, + conn->fc_stats.out.packets, + conn->fc_stats.out.stream_data_sz / + (conn->fc_stats.out.packets ? conn->fc_stats.out.packets : 1)); + LSQ_NOTICE("ACKs: in: %lu; processed: %lu; merged: %lu", + conn->fc_stats.in.n_acks, conn->fc_stats.in.n_acks_proc, + conn->fc_stats.in.n_acks_merged); + free(conn->fc_last_stats); +#endif + while ((sitr = STAILQ_FIRST(&conn->fc_stream_ids_to_reset))) + { + STAILQ_REMOVE_HEAD(&conn->fc_stream_ids_to_reset, sitr_next); + free(sitr); + } + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "full connection destroyed"); + free(conn->fc_errmsg); + free(conn); +} + + +static void +conn_mark_stream_closed (struct full_conn *conn, lsquic_stream_id_t stream_id) +{ /* Because stream IDs are distributed unevenly -- there is a set of odd + * stream IDs and a set of even stream IDs -- it is more efficient to + * maintain two sets of closed stream IDs. + */ + int idx = stream_id & 1; + stream_id >>= 1; + if (0 != lsquic_set64_add(&conn->fc_closed_stream_ids[idx], stream_id)) + ABORT_ERROR("could not add element to set: %s", strerror(errno)); +} + + +static int +conn_is_stream_closed (struct full_conn *conn, lsquic_stream_id_t stream_id) +{ + int idx = stream_id & 1; + stream_id >>= 1; + return lsquic_set64_has(&conn->fc_closed_stream_ids[idx], stream_id); +} + + +static void +set_ack_timer (struct full_conn *conn, lsquic_time_t now) +{ + lsquic_alarmset_set(&conn->fc_alset, AL_ACK_APP, now + ACK_TIMEOUT); + LSQ_DEBUG("ACK alarm set to %"PRIu64, now + ACK_TIMEOUT); +} + + +static void +ack_alarm_expired (enum alarm_id al_id, void *ctx, lsquic_time_t expiry, + lsquic_time_t now) +{ + struct full_conn *conn = ctx; + LSQ_DEBUG("ACK timer expired (%"PRIu64" < %"PRIu64"): ACK queued", + expiry, now); + conn->fc_flags |= FC_ACK_QUEUED; +} + + +static void +try_queueing_ack (struct full_conn *conn, int was_missing, lsquic_time_t now) +{ + if (conn->fc_n_slack_akbl >= MAX_RETR_PACKETS_SINCE_LAST_ACK || + ((conn->fc_flags & FC_ACK_HAD_MISS) && was_missing) || + lsquic_send_ctl_n_stop_waiting(&conn->fc_send_ctl) > 1) + { + lsquic_alarmset_unset(&conn->fc_alset, AL_ACK_APP); + lsquic_send_ctl_sanity_check(&conn->fc_send_ctl); + conn->fc_flags |= FC_ACK_QUEUED; + LSQ_DEBUG("ACK queued: ackable: %u; had_miss: %d; " + "was_missing: %d; n_stop_waiting: %u", + conn->fc_n_slack_akbl, + !!(conn->fc_flags & FC_ACK_HAD_MISS), was_missing, + lsquic_send_ctl_n_stop_waiting(&conn->fc_send_ctl)); + } + else if (conn->fc_n_slack_akbl > 0) + set_ack_timer(conn, now); +} + + +static void +reset_ack_state (struct full_conn *conn) +{ + conn->fc_n_slack_akbl = 0; + lsquic_send_ctl_n_stop_waiting_reset(&conn->fc_send_ctl); + conn->fc_flags &= ~FC_ACK_QUEUED; + lsquic_alarmset_unset(&conn->fc_alset, AL_ACK_APP); + lsquic_send_ctl_sanity_check(&conn->fc_send_ctl); + LSQ_DEBUG("ACK state reset"); +} + + +#if 1 +# define verify_ack_frame(a, b, c) +#else +static void +verify_ack_frame (struct full_conn *conn, const unsigned char *buf, int bufsz) +{ + unsigned i; + int parsed_len; + struct ack_info *ack_info; + const struct lsquic_packno_range *range; + char ack_buf[512]; + unsigned buf_off = 0; + int nw; + + ack_info = conn->fc_pub.mm->acki; + parsed_len = parse_ack_frame(buf, bufsz, ack_info); + assert(parsed_len == bufsz); + + for (range = lsquic_rechist_first(&conn->fc_rechist), i = 0; range; + range = lsquic_rechist_next(&conn->fc_rechist), ++i) + { + assert(i < ack_info->n_ranges); + assert(range->high == ack_info->ranges[i].high); + assert(range->low == ack_info->ranges[i].low); + if (LSQ_LOG_ENABLED(LSQ_LOG_DEBUG)) + { + nw = snprintf(ack_buf + buf_off, sizeof(ack_buf) - buf_off, + "[%"PRIu64"-%"PRIu64"]", range->high, range->low); + assert(nw >= 0); + buf_off += nw; + } + } + assert(i == ack_info->n_ranges); + LSQ_DEBUG("Sent ACK frame %s", ack_buf); +} + + +#endif + + +static void +full_conn_ci_write_ack (struct lsquic_conn *lconn, + struct lsquic_packet_out *packet_out) +{ + struct full_conn *conn = (struct full_conn *) lconn; + lsquic_time_t now; + int has_missing, w; + + now = lsquic_time_now(); + w = conn->fc_conn.cn_pf->pf_gen_ack_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &conn->fc_rechist, now, &has_missing, &packet_out->po_ack2ed, + NULL); + if (w < 0) { + ABORT_ERROR("generating ACK frame failed: %d", errno); + return; + } +#if LSQUIC_CONN_STATS + ++conn->fc_stats.out.acks; +#endif + EV_LOG_GENERATED_ACK_FRAME(LSQUIC_LOG_CONN_ID, conn->fc_conn.cn_pf, + packet_out->po_data + packet_out->po_data_sz, w); + verify_ack_frame(conn, packet_out->po_data + packet_out->po_data_sz, w); + lsquic_send_ctl_scheduled_ack(&conn->fc_send_ctl, PNS_APP, + packet_out->po_ack2ed); + packet_out->po_frame_types |= 1 << QUIC_FRAME_ACK; + if (0 != lsquic_packet_out_add_frame(packet_out, conn->fc_pub.mm, 0, + QUIC_FRAME_ACK, packet_out->po_data_sz, w)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return; + } + lsquic_send_ctl_incr_pack_sz(&conn->fc_send_ctl, packet_out, w); + packet_out->po_regen_sz += w; + if (has_missing) + conn->fc_flags |= FC_ACK_HAD_MISS; + else + conn->fc_flags &= ~FC_ACK_HAD_MISS; + LSQ_DEBUG("Put %d bytes of ACK frame into packet on outgoing queue", w); + if (conn->fc_n_cons_unretx >= 20 && + !lsquic_send_ctl_have_outgoing_retx_frames(&conn->fc_send_ctl)) + { + LSQ_DEBUG("schedule WINDOW_UPDATE frame after %u non-retx " + "packets sent", conn->fc_n_cons_unretx); + conn->fc_flags |= FC_SEND_WUF; + } + reset_ack_state(conn); +} + + +static lsquic_stream_t * +new_stream_ext (struct full_conn *conn, lsquic_stream_id_t stream_id, + enum stream_if if_idx, enum stream_ctor_flags stream_ctor_flags) +{ + struct lsquic_stream *stream; + + stream = lsquic_stream_new(stream_id, &conn->fc_pub, + conn->fc_stream_ifs[if_idx].stream_if, + conn->fc_stream_ifs[if_idx].stream_if_ctx, conn->fc_settings->es_sfcw, + stream_ctor_flags & SCF_CRYPTO + ? 16 * 1024 : conn->fc_cfg.max_stream_send, + stream_ctor_flags); + if (stream) + lsquic_hash_insert(conn->fc_pub.all_streams, &stream->id, + sizeof(stream->id), stream, &stream->sm_hash_el); + return stream; +} + + +static lsquic_stream_t * +new_stream (struct full_conn *conn, lsquic_stream_id_t stream_id, + enum stream_ctor_flags flags) +{ + flags |= SCF_DI_AUTOSWITCH; + if (conn->fc_pub.u.gquic.hs) + flags |= SCF_HTTP; + if (conn->fc_enpub->enp_settings.es_rw_once) + flags |= SCF_DISP_RW_ONCE; + if (conn->fc_enpub->enp_settings.es_delay_onclose) + flags |= SCF_DELAY_ONCLOSE; + + return new_stream_ext(conn, stream_id, STREAM_IF_STD, flags); +} + + +static lsquic_stream_id_t +generate_stream_id (struct full_conn *conn) +{ + conn->fc_last_stream_id += 2; + return conn->fc_last_stream_id; +} + + +static unsigned +full_conn_ci_n_pending_streams (const struct lsquic_conn *lconn) +{ + const struct full_conn *conn = (const struct full_conn *) lconn; + return conn->fc_n_delayed_streams; +} + + +static unsigned +full_conn_ci_cancel_pending_streams (struct lsquic_conn *lconn, unsigned n) +{ + struct full_conn *conn = (struct full_conn *) lconn; + if (n > conn->fc_n_delayed_streams) + conn->fc_n_delayed_streams = 0; + else + conn->fc_n_delayed_streams -= n; + return conn->fc_n_delayed_streams; +} + + +static int +either_side_going_away (const struct full_conn *conn) +{ + return (conn->fc_flags & FC_GOING_AWAY) + || (conn->fc_conn.cn_flags & LSCONN_PEER_GOING_AWAY); +} + + +static unsigned +full_conn_ci_n_avail_streams (const lsquic_conn_t *lconn) +{ + struct full_conn *conn = (struct full_conn *) lconn; + unsigned stream_count = count_streams(conn, 0); + if (conn->fc_cfg.max_streams_out < stream_count) + return 0; + return conn->fc_cfg.max_streams_out - stream_count; +} + + +static int +handshake_done_or_doing_sess_resume (const struct full_conn *conn) +{ + return (conn->fc_conn.cn_flags & LSCONN_HANDSHAKE_DONE) + || conn->fc_conn.cn_esf_c->esf_is_sess_resume_enabled( + conn->fc_conn.cn_enc_session); +} + + +static void +full_conn_ci_make_stream (struct lsquic_conn *lconn) +{ + struct full_conn *conn = (struct full_conn *) lconn; + if (handshake_done_or_doing_sess_resume(conn) + && full_conn_ci_n_avail_streams(lconn) > 0) + { + if (!new_stream(conn, generate_stream_id(conn), SCF_CALL_ON_NEW)) + ABORT_ERROR("could not create new stream: %s", strerror(errno)); + } + else if (either_side_going_away(conn)) + (void) conn->fc_stream_ifs[STREAM_IF_STD].stream_if->on_new_stream( + conn->fc_stream_ifs[STREAM_IF_STD].stream_if_ctx, NULL); + else + { + ++conn->fc_n_delayed_streams; + LSQ_DEBUG("delayed stream creation. Backlog size: %u", + conn->fc_n_delayed_streams); + } +} + + +static lsquic_stream_t * +find_stream_by_id (struct full_conn *conn, lsquic_stream_id_t stream_id) +{ + struct lsquic_hash_elem *el; + el = lsquic_hash_find(conn->fc_pub.all_streams, &stream_id, sizeof(stream_id)); + if (el) + return lsquic_hashelem_getdata(el); + else + return NULL; +} + + +static struct lsquic_stream * +full_conn_ci_get_stream_by_id (struct lsquic_conn *lconn, + lsquic_stream_id_t stream_id) +{ + struct full_conn *conn = (struct full_conn *) lconn; + struct lsquic_stream *stream; + + stream = find_stream_by_id(conn, stream_id); + if (stream && !lsquic_stream_is_closed(stream)) + return stream; + else + return NULL; +} + + +static struct lsquic_engine * +full_conn_ci_get_engine (struct lsquic_conn *lconn) +{ + struct full_conn *conn = (struct full_conn *) lconn; + return conn->fc_enpub->enp_engine; +} + + +static struct network_path * +full_conn_ci_get_path (struct lsquic_conn *lconn, const struct sockaddr *sa) +{ + struct full_conn *conn = (struct full_conn *) lconn; + + return &conn->fc_path; +} + + +static unsigned char +full_conn_ci_record_addrs (struct lsquic_conn *lconn, void *peer_ctx, + const struct sockaddr *local_sa, const struct sockaddr *peer_sa) +{ + struct full_conn *conn = (struct full_conn *) lconn; + + if (NP_IS_IPv6(&conn->fc_path) != (AF_INET6 == peer_sa->sa_family)) + lsquic_send_ctl_return_enc_data(&conn->fc_send_ctl); + + size_t len = peer_sa->sa_family == AF_INET ? sizeof(struct sockaddr_in) + : sizeof(struct sockaddr_in6); + + memcpy(conn->fc_path.np_peer_addr, peer_sa, len); + + len = local_sa->sa_family == AF_INET ? sizeof(struct sockaddr_in) + : sizeof(struct sockaddr_in6); + memcpy(conn->fc_path.np_local_addr, local_sa, len); + conn->fc_path.np_peer_ctx = peer_ctx; + return 0; +} + + +static ptrdiff_t +count_zero_bytes (const unsigned char *p, size_t len) +{ + const unsigned char *const end = p + len; + while (p < end && 0 == *p) + ++p; + return len - (end - p); +} + + +static unsigned +process_padding_frame (struct full_conn *conn, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + len = (size_t) count_zero_bytes(p, len); + EV_LOG_PADDING_FRAME_IN(LSQUIC_LOG_CONN_ID, len); + return len; +} + + +static void +log_conn_flow_control (struct full_conn *conn) +{ + LSQ_DEBUG("connection flow cap: wrote: %"PRIu64 + "; max: %"PRIu64, conn->fc_pub.conn_cap.cc_sent, + conn->fc_pub.conn_cap.cc_max); + LSQ_DEBUG("connection flow control window: read: %"PRIu64 + "; max: %"PRIu64, conn->fc_pub.cfcw.cf_max_recv_off, + conn->fc_pub.cfcw.cf_recv_off); +} + + +static unsigned +process_ping_frame (struct full_conn *conn, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ /* This frame causes ACK frame to be queued, but nothing to do here; + * return the length of this frame. + */ + EV_LOG_PING_FRAME_IN(LSQUIC_LOG_CONN_ID); + LSQ_DEBUG("received PING"); + if (conn->fc_flags & FC_SERVER) + log_conn_flow_control(conn); + return 1; +} + + +static int +is_peer_initiated (const struct full_conn *conn, lsquic_stream_id_t stream_id) +{ + unsigned is_server = !!(conn->fc_flags & FC_SERVER); + int peer_initiated = (stream_id & 1) == is_server; + return peer_initiated; +} + + +static void +maybe_schedule_reset_for_stream (struct full_conn *conn, lsquic_stream_id_t stream_id) +{ + struct stream_id_to_reset *sitr; + + if (conn_is_stream_closed(conn, stream_id)) + return; + + sitr = malloc(sizeof(*sitr)); + if (!sitr) + return; + + sitr->sitr_stream_id = stream_id; + STAILQ_INSERT_TAIL(&conn->fc_stream_ids_to_reset, sitr, sitr_next); + conn_mark_stream_closed(conn, stream_id); +} + + +static unsigned +process_stream_frame (struct full_conn *conn, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + stream_frame_t *stream_frame; + lsquic_stream_t *stream; + enum enc_level enc_level; + int parsed_len; + +#ifndef LSQUIC_REDO_FAILED_INSERTION +#define LSQUIC_REDO_FAILED_INSERTION 0 +#endif +#if LSQUIC_REDO_FAILED_INSERTION + enum lsq_log_level saved_levels[3]; +#if defined(__GNUC__) && !defined(__clang__) + /* gcc complains about this -- incorrectly -- in optimized mode */ + saved_levels[0] = 0; + saved_levels[1] = 0; + saved_levels[2] = 0; +#endif + int again = 0; + redo: +#endif + stream_frame = lsquic_malo_get(conn->fc_pub.mm->malo.stream_frame); + if (!stream_frame) + { + LSQ_WARN("could not allocate stream frame: %s", strerror(errno)); + return 0; + } + + parsed_len = conn->fc_conn.cn_pf->pf_parse_stream_frame(p, len, + stream_frame); + if (parsed_len < 0) { + lsquic_malo_put(stream_frame); + return 0; + } + EV_LOG_STREAM_FRAME_IN(LSQUIC_LOG_CONN_ID, stream_frame); + LSQ_DEBUG("Got stream frame for stream #%"PRIu64, stream_frame->stream_id); +#if LSQUIC_CONN_STATS + ++conn->fc_stats.in.stream_frames; + conn->fc_stats.in.stream_data_sz += stream_frame->data_frame.df_size; +#endif + + enc_level = lsquic_packet_in_enc_level(packet_in); + if (!is_handshake_stream_id(conn, stream_frame->stream_id) + && enc_level == ENC_LEV_INIT) + { + lsquic_malo_put(stream_frame); + ABORT_ERROR("received unencrypted data for stream %"PRIu64, + stream_frame->stream_id); + return 0; + } + + if (conn->fc_flags & FC_CLOSING) + { + LSQ_DEBUG("Connection closing: ignore frame"); + lsquic_malo_put(stream_frame); + return parsed_len; + } + + stream = find_stream_by_id(conn, stream_frame->stream_id); + if (stream) + { + if (lsquic_stream_is_reset(stream)) + { + LSQ_DEBUG("stream %"PRIu64" is reset, ignore frame", stream->id); + lsquic_malo_put(stream_frame); + return parsed_len; + } + } + else + { + if (conn_is_stream_closed(conn, stream_frame->stream_id)) + { + LSQ_DEBUG("drop frame for closed stream %"PRIu64, + stream_frame->stream_id); + lsquic_malo_put(stream_frame); + return parsed_len; + } + if (is_peer_initiated(conn, stream_frame->stream_id)) + { + unsigned in_count = count_streams(conn, 1); + LSQ_DEBUG("number of peer-initiated streams: %u", in_count); + if (in_count >= conn->fc_cfg.max_streams_in) + { + if (!(conn->fc_flags & FC_ABORT_COMPLAINED)) + { + unsigned counts[N_SCNTS]; + collect_stream_counts(conn, 1, counts); + ABORT_WARN("incoming stream would exceed limit: %u. " + "all: %u; peer: %u; closed: %u; reset: %u; reset " + "and not closed: %u", conn->fc_cfg.max_streams_in, + counts[SCNT_ALL], counts[SCNT_PEER], + counts[SCNT_CLOSED], counts[SCNT_RESET], + counts[SCNT_RES_UNCLO]); + } + lsquic_malo_put(stream_frame); + return 0; + } + if ((conn->fc_flags & FC_GOING_AWAY) && + stream_frame->stream_id > conn->fc_max_peer_stream_id) + { + LSQ_DEBUG("going away: reset new incoming stream %"PRIu64, + stream_frame->stream_id); + maybe_schedule_reset_for_stream(conn, stream_frame->stream_id); + lsquic_malo_put(stream_frame); + return parsed_len; + } + } + else + { + ABORT_ERROR("frame for never-initiated stream"); + lsquic_malo_put(stream_frame); + return 0; + } + stream = new_stream(conn, stream_frame->stream_id, SCF_CALL_ON_NEW); + if (!stream) + { + ABORT_ERROR("cannot create new stream: %s", strerror(errno)); + lsquic_malo_put(stream_frame); + return 0; + } + if (stream_frame->stream_id > conn->fc_max_peer_stream_id) + conn->fc_max_peer_stream_id = stream_frame->stream_id; + } + + stream_frame->packet_in = lsquic_packet_in_get(packet_in); + if (0 != lsquic_stream_frame_in(stream, stream_frame)) + { + ABORT_ERROR("cannot insert stream frame"); +#if LSQUIC_REDO_FAILED_INSERTION + if (again++) + { + lsq_log_levels[LSQLM_STREAM] = saved_levels[0]; + lsq_log_levels[LSQLM_DI] = saved_levels[1]; + lsq_log_levels[LSQLM_CONN] = saved_levels[2]; + } + else if (!(LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_STREAM) + && LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_DI) + && LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_CONN))) + { + saved_levels[0] = lsq_log_levels[LSQLM_STREAM]; + saved_levels[1] = lsq_log_levels[LSQLM_DI]; + saved_levels[2] = lsq_log_levels[LSQLM_CONN]; + lsq_log_levels[LSQLM_STREAM] = LSQ_LOG_DEBUG; + lsq_log_levels[LSQLM_DI] = LSQ_LOG_DEBUG; + lsq_log_levels[LSQLM_CONN] = LSQ_LOG_DEBUG; + lsquic_stream_dump_state(stream); + LSQ_DEBUG("inserting frame again, this time with debug logging"); + goto redo; + } +#endif + return 0; + } + + if (lsquic_stream_is_crypto(stream) + && (stream->sm_qflags & SMQF_WANT_READ) + && !(conn->fc_flags & FC_SERVER) + && !(conn->fc_conn.cn_flags & LSCONN_HANDSHAKE_DONE)) + { /* To enable decryption, process handshake stream as soon as its + * data frames are received. + * + * TODO: this does not work when packets are reordered. A more + * flexible solution would defer packet decryption if handshake + * has not been completed yet. Nevertheless, this is good enough + * for now. + */ + lsquic_stream_dispatch_read_events(stream); + } + + return parsed_len; +} + + +static unsigned +process_crypto_frame (struct full_conn *conn, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + struct lsquic_stream *stream; + stream_frame_t *stream_frame; + enum enc_level enc_level; + int parsed_len; + + stream_frame = lsquic_malo_get(conn->fc_pub.mm->malo.stream_frame); + if (!stream_frame) + { + LSQ_WARN("could not allocate stream frame: %s", strerror(errno)); + return 0; + } + + parsed_len = conn->fc_conn.cn_pf->pf_parse_crypto_frame(p, len, + stream_frame); + if (parsed_len < 0) + { + lsquic_malo_put(stream_frame); + return 0; + } + enc_level = lsquic_packet_in_enc_level(packet_in); + EV_LOG_CRYPTO_FRAME_IN(LSQUIC_LOG_CONN_ID, stream_frame, enc_level); + LSQ_DEBUG("Got CRYPTO frame on enc level %s", lsquic_enclev2str[enc_level]); + + if (enc_level < conn->fc_crypto_enc_level) + { + LSQ_DEBUG("Old enc level: ignore frame"); + lsquic_malo_put(stream_frame); + return parsed_len; + } + + if (conn->fc_flags & FC_CLOSING) + { + LSQ_DEBUG("Connection closing: ignore frame"); + lsquic_malo_put(stream_frame); + return parsed_len; + } + + stream = find_stream_by_id(conn, hsk_stream_id(conn)); + if (!stream) + { + LSQ_WARN("cannot find handshake stream for CRYPTO frame"); + lsquic_malo_put(stream_frame); + return 0; + } + + if (enc_level > conn->fc_crypto_enc_level) + { + stream->read_offset = 0; + stream->tosend_off = 0; + conn->fc_crypto_enc_level = enc_level; + LSQ_DEBUG("reset handshake stream offsets, new enc level %u", + (unsigned) enc_level); + } + + stream_frame->packet_in = lsquic_packet_in_get(packet_in); + if (0 != lsquic_stream_frame_in(stream, stream_frame)) + { + ABORT_ERROR("cannot insert stream frame"); + return 0; + } + + if ((stream->sm_qflags & SMQF_WANT_READ) + && !(conn->fc_flags & FC_SERVER) + && !(conn->fc_conn.cn_flags & LSCONN_HANDSHAKE_DONE)) + { + /* XXX what happens for server? */ + lsquic_stream_dispatch_read_events(stream); + } + + return parsed_len; +} + + +static unsigned +process_invalid_frame (struct full_conn *conn, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + ABORT_ERROR("invalid frame"); + return 0; +} + + +/* Reset locally-initiated streams whose IDs is larger than the stream ID + * specified in received GOAWAY frame. + */ +static void +reset_local_streams_over_goaway (struct full_conn *conn) +{ + const unsigned is_server = !!(conn->fc_flags & FC_SERVER); + lsquic_stream_t *stream; + struct lsquic_hash_elem *el; + + for (el = lsquic_hash_first(conn->fc_pub.all_streams); el; + el = lsquic_hash_next(conn->fc_pub.all_streams)) + { + stream = lsquic_hashelem_getdata(el); + if ((int64_t) stream->id > (int64_t) conn->fc_goaway_stream_id && + ((stream->id & 1) ^ is_server /* Locally initiated? */)) + { + lsquic_stream_received_goaway(stream); + } + } +} + + +static unsigned +process_goaway_frame (struct full_conn *conn, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + lsquic_stream_id_t stream_id; + uint32_t error_code; + uint16_t reason_length; + const char *reason; + const int parsed_len = conn->fc_conn.cn_pf->pf_parse_goaway_frame(p, len, + &error_code, &stream_id, &reason_length, &reason); + if (parsed_len < 0) + return 0; + EV_LOG_GOAWAY_FRAME_IN(LSQUIC_LOG_CONN_ID, error_code, stream_id, + reason_length, reason); + LSQ_DEBUG("received GOAWAY frame, last good stream ID: %"PRIu64 + ", error code: 0x%X, reason: `%.*s'", stream_id, error_code, + reason_length, reason); + if (0 == (conn->fc_conn.cn_flags & LSCONN_PEER_GOING_AWAY)) + { + conn->fc_conn.cn_flags |= LSCONN_PEER_GOING_AWAY; + conn->fc_goaway_stream_id = stream_id; + if (conn->fc_stream_ifs[STREAM_IF_STD].stream_if->on_goaway_received) + { + LSQ_DEBUG("calling on_goaway_received"); + conn->fc_stream_ifs[STREAM_IF_STD].stream_if->on_goaway_received( + &conn->fc_conn); + } + else + LSQ_DEBUG("on_goaway_received not registered"); + reset_local_streams_over_goaway(conn); + } + else + LSQ_DEBUG("ignore duplicate GOAWAY frame"); + return parsed_len; +} + + +static void +log_invalid_ack_frame (struct full_conn *conn, const unsigned char *p, + int parsed_len, const struct ack_info *acki) +{ + char *buf; + + buf = malloc(0x1000); + if (!buf) + { + LSQ_WARN("malloc failed"); + return; + } + + lsquic_senhist_tostr(&conn->fc_send_ctl.sc_senhist, buf, 0x1000); + LSQ_WARN("send history: %s", buf); + lsquic_hexdump(p, parsed_len, buf, 0x1000); + LSQ_WARN("raw ACK frame:\n%s", buf); + lsquic_acki2str(acki, buf, 0x1000); + LSQ_WARN("parsed ACK frame: %s", buf); + free(buf); +} + + +static int +process_ack (struct full_conn *conn, struct ack_info *acki, + lsquic_time_t received, lsquic_time_t now) +{ +#if LSQUIC_CONN_STATS + ++conn->fc_stats.in.n_acks_proc; +#endif + LSQ_DEBUG("Processing ACK"); + if (0 == lsquic_send_ctl_got_ack(&conn->fc_send_ctl, acki, received, now)) + { + if (lsquic_send_ctl_largest_ack2ed(&conn->fc_send_ctl, PNS_APP)) + lsquic_rechist_stop_wait(&conn->fc_rechist, + lsquic_send_ctl_largest_ack2ed(&conn->fc_send_ctl, PNS_APP) + + 1); + return 0; + } + else + { + ABORT_ERROR("Received invalid ACK"); + return -1; + } +} + + +static unsigned +process_ack_frame (struct full_conn *conn, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + struct ack_info *new_acki; + int parsed_len; + lsquic_time_t warn_time; + +#if LSQUIC_CONN_STATS + ++conn->fc_stats.in.n_acks; +#endif + + if (conn->fc_flags & FC_HAVE_SAVED_ACK) + new_acki = conn->fc_pub.mm->acki; + else + new_acki = &conn->fc_ack; + + parsed_len = conn->fc_conn.cn_pf->pf_parse_ack_frame(p, len, new_acki, 0); + if (parsed_len < 0) + goto err; + + if (empty_ack_frame(new_acki)) + { + LSQ_DEBUG("Ignore empty ACK frame"); + return parsed_len; + } + if (packet_in->pi_packno <= conn->fc_max_ack_packno) + { + LSQ_DEBUG("Ignore old ack (max %"PRIu64")", conn->fc_max_ack_packno); + return parsed_len; + } + + new_acki->pns = PNS_APP; + EV_LOG_ACK_FRAME_IN(LSQUIC_LOG_CONN_ID, new_acki); + conn->fc_max_ack_packno = packet_in->pi_packno; + + if (new_acki == &conn->fc_ack) + { + LSQ_DEBUG("Saved ACK"); + conn->fc_flags |= FC_HAVE_SAVED_ACK; + conn->fc_saved_ack_received = packet_in->pi_received; + } + else + { + if (0 == lsquic_merge_acks(&conn->fc_ack, new_acki)) + { +#if LSQUIC_CONN_STATS + ++conn->fc_stats.in.n_acks_merged; +#endif + LSQ_DEBUG("merged into saved ACK, getting %s", + (lsquic_acki2str(&conn->fc_ack, conn->fc_pub.mm->ack_str, + MAX_ACKI_STR_SZ), conn->fc_pub.mm->ack_str)); + } + else + { + LSQ_DEBUG("could not merge new ACK into saved ACK"); + if (0 != process_ack(conn, &conn->fc_ack, packet_in->pi_received, + packet_in->pi_received)) + goto err; + conn->fc_ack = *new_acki; + } + conn->fc_saved_ack_received = packet_in->pi_received; + } + + return parsed_len; + + err: + warn_time = lsquic_time_now(); + if (0 == conn->fc_enpub->enp_last_warning[WT_ACKPARSE_FULL] + || conn->fc_enpub->enp_last_warning[WT_ACKPARSE_FULL] + + WARNING_INTERVAL < warn_time) + { + conn->fc_enpub->enp_last_warning[WT_ACKPARSE_FULL] = warn_time; + log_invalid_ack_frame(conn, p, parsed_len, new_acki); + } + return 0; +} + + +static unsigned +process_stop_waiting_frame (struct full_conn *conn, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + lsquic_packno_t least, cutoff; + enum packno_bits bits; + int parsed_len; + + bits = lsquic_packet_in_packno_bits(packet_in); + + if (conn->fc_flags & FC_NSTP) + { + LSQ_DEBUG("NSTP on: ignore STOP_WAITING frame"); + parsed_len = conn->fc_conn.cn_pf->pf_skip_stop_waiting_frame(len, bits); + if (parsed_len > 0) + return (unsigned) parsed_len; + else + return 0; + } + + parsed_len = conn->fc_conn.cn_pf->pf_parse_stop_waiting_frame(p, len, + packet_in->pi_packno, bits, &least); + if (parsed_len < 0) + return 0; + + if (packet_in->pi_packno <= conn->fc_max_swf_packno) + { + LSQ_DEBUG("ignore old STOP_WAITING frame"); + return parsed_len; + } + + LSQ_DEBUG("Got STOP_WAITING frame, least unacked: %"PRIu64, least); + EV_LOG_STOP_WAITING_FRAME_IN(LSQUIC_LOG_CONN_ID, least); + + if (least > packet_in->pi_packno) + { + ABORT_ERROR("received invalid STOP_WAITING: %"PRIu64" is larger " + "than the packet number%"PRIu64, least, packet_in->pi_packno); + return 0; + } + + cutoff = lsquic_rechist_cutoff(&conn->fc_rechist); + if (cutoff && least < cutoff) + { + ABORT_ERROR("received invalid STOP_WAITING: %"PRIu64" is smaller " + "than the cutoff %"PRIu64, least, cutoff); + return 0; + } + + conn->fc_max_swf_packno = packet_in->pi_packno; + lsquic_rechist_stop_wait(&conn->fc_rechist, least); + return parsed_len; +} + + +static unsigned +process_blocked_frame (struct full_conn *conn, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + lsquic_stream_id_t stream_id; + struct lsquic_stream *stream; + const int parsed_len = conn->fc_conn.cn_pf->pf_parse_blocked_frame(p, len, + &stream_id); + if (parsed_len < 0) + return 0; + EV_LOG_BLOCKED_FRAME_IN(LSQUIC_LOG_CONN_ID, stream_id); + LSQ_DEBUG("Peer reports stream %"PRIu64" as blocked", stream_id); + if (stream_id) + { + stream = find_stream_by_id(conn, stream_id); + if (stream) + lsquic_stream_peer_blocked_gquic(stream); + } + else + conn->fc_flags |= FC_SEND_WUF; + return parsed_len; +} + + +static unsigned +process_connection_close_frame (struct full_conn *conn, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + uint64_t error_code; + uint16_t reason_len; + uint8_t reason_off; + int parsed_len; + + parsed_len = conn->fc_conn.cn_pf->pf_parse_connect_close_frame(p, len, + NULL, &error_code, &reason_len, &reason_off); + if (parsed_len < 0) + return 0; + EV_LOG_CONNECTION_CLOSE_FRAME_IN(LSQUIC_LOG_CONN_ID, error_code, + (int) reason_len, (const char *) p + reason_off); + LSQ_INFO("Received CONNECTION_CLOSE frame (code: %"PRIu64"; reason: %.*s)", + error_code, (int) reason_len, (const char *) p + reason_off); + if (conn->fc_stream_ifs[STREAM_IF_STD].stream_if->on_conncloseframe_received) + conn->fc_stream_ifs[STREAM_IF_STD].stream_if->on_conncloseframe_received( + &conn->fc_conn, -1, error_code, (const char *) p + reason_off, reason_len); + conn->fc_flags |= FC_RECV_CLOSE|FC_CLOSING; + return parsed_len; +} + + +static unsigned +process_rst_stream_frame (struct full_conn *conn, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + lsquic_stream_id_t stream_id; + uint64_t offset, error_code; + lsquic_stream_t *stream; + const int parsed_len = conn->fc_conn.cn_pf->pf_parse_rst_frame(p, len, + &stream_id, &offset, &error_code); + if (parsed_len < 0) + return 0; + + EV_LOG_RST_STREAM_FRAME_IN(LSQUIC_LOG_CONN_ID, stream_id, offset, + error_code); + LSQ_DEBUG("Got RST_STREAM; stream: %"PRIu64"; offset: 0x%"PRIX64, stream_id, + offset); + if (0 == stream_id) + { /* Follow reference implementation and ignore this apparently + * invalid frame. + */ + return parsed_len; + } + + stream = find_stream_by_id(conn, stream_id); + if (stream && lsquic_stream_is_critical(stream)) + { + ABORT_ERROR("received reset on static stream %"PRIu64, stream_id); + return 0; + } + if (!stream) + { + if (conn_is_stream_closed(conn, stream_id)) + { + LSQ_DEBUG("got reset frame for closed stream %"PRIu64, stream_id); + return parsed_len; + } + if (!is_peer_initiated(conn, stream_id)) + { + ABORT_ERROR("received reset for never-initiated stream %"PRIu64, + stream_id); + return 0; + } + stream = new_stream(conn, stream_id, SCF_CALL_ON_NEW); + if (!stream) + { + ABORT_ERROR("cannot create new stream: %s", strerror(errno)); + return 0; + } + if (stream_id > conn->fc_max_peer_stream_id) + conn->fc_max_peer_stream_id = stream_id; + } + + if (0 != lsquic_stream_rst_in(stream, offset, error_code)) + { + ABORT_ERROR("received invalid RST_STREAM"); + return 0; + } + return parsed_len; +} + + +static unsigned +process_window_update_frame (struct full_conn *conn, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + lsquic_stream_id_t stream_id; + uint64_t offset; + const int parsed_len = + conn->fc_conn.cn_pf->pf_parse_window_update_frame(p, len, + &stream_id, &offset); + if (parsed_len < 0) + return 0; + EV_LOG_WINDOW_UPDATE_FRAME_IN(LSQUIC_LOG_CONN_ID, stream_id, offset); + if (stream_id) + { + lsquic_stream_t *stream = find_stream_by_id(conn, stream_id); + if (stream) + { + LSQ_DEBUG("Got window update frame, stream: %"PRIu64 + "; offset: 0x%"PRIX64, stream_id, offset); + lsquic_stream_window_update(stream, offset); + } + else /* Perhaps a result of lost packets? */ + LSQ_DEBUG("Got window update frame for non-existing stream %"PRIu64 + " (offset: 0x%"PRIX64")", stream_id, offset); + } + else if (offset > conn->fc_pub.conn_cap.cc_max) + { + conn->fc_pub.conn_cap.cc_max = offset; + assert(conn->fc_pub.conn_cap.cc_max >= conn->fc_pub.conn_cap.cc_sent); + LSQ_DEBUG("Connection WUF, new offset 0x%"PRIX64, offset); + } + else + LSQ_DEBUG("Throw ouw duplicate connection WUF"); + return parsed_len; +} + + +typedef unsigned (*process_frame_f)( + struct full_conn *, lsquic_packet_in_t *, const unsigned char *p, size_t); + +static process_frame_f const process_frames[N_QUIC_FRAMES] = +{ + [QUIC_FRAME_ACK] = process_ack_frame, + [QUIC_FRAME_BLOCKED] = process_blocked_frame, + [QUIC_FRAME_CONNECTION_CLOSE] = process_connection_close_frame, + [QUIC_FRAME_CRYPTO] = process_crypto_frame, + [QUIC_FRAME_GOAWAY] = process_goaway_frame, + [QUIC_FRAME_INVALID] = process_invalid_frame, + [QUIC_FRAME_PADDING] = process_padding_frame, + [QUIC_FRAME_PING] = process_ping_frame, + [QUIC_FRAME_RST_STREAM] = process_rst_stream_frame, + [QUIC_FRAME_STOP_WAITING] = process_stop_waiting_frame, + [QUIC_FRAME_STREAM] = process_stream_frame, + [QUIC_FRAME_WINDOW_UPDATE] = process_window_update_frame, +}; + +static unsigned +process_packet_frame (struct full_conn *conn, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + enum quic_frame_type type; + + type = conn->fc_conn.cn_pf->pf_parse_frame_type(p, len); + packet_in->pi_frame_types |= 1 << type; + recent_packet_hist_frames(conn, 0, 1 << type); + return process_frames[type](conn, packet_in, p, len); +} + + +static void +process_ver_neg_packet (struct full_conn *conn, lsquic_packet_in_t *packet_in) +{ + int s; + struct ver_iter vi; + lsquic_ver_tag_t ver_tag; + enum lsquic_version version; + unsigned versions = 0; + + LSQ_DEBUG("Processing version-negotiation packet"); + + if (conn->fc_ver_neg.vn_state != VN_START) + { + LSQ_DEBUG("ignore a likely duplicate version negotiation packet"); + return; + } + + for (s = lsquic_packet_in_ver_first(packet_in, &vi, &ver_tag); s; + s = lsquic_packet_in_ver_next(&vi, &ver_tag)) + { + version = lsquic_tag2ver(ver_tag); + if (version < N_LSQVER) + { + versions |= 1 << version; + LSQ_DEBUG("server supports version %s", lsquic_ver2str[version]); + EV_LOG_VER_NEG(LSQUIC_LOG_CONN_ID, + "supports", lsquic_ver2str[version]); + } + } + + if (versions & (1 << conn->fc_ver_neg.vn_ver)) + { + ABORT_ERROR("server replied with version we support: %s", + lsquic_ver2str[conn->fc_ver_neg.vn_ver]); + return; + } + + versions &= conn->fc_ver_neg.vn_supp; + if (0 == versions) + { + conn->fc_flags |= FC_HSK_FAILED; + ABORT_ERROR("client does not support any of the server-specified " + "versions"); + return; + } + + set_versions(conn, versions, NULL); + conn->fc_ver_neg.vn_state = VN_IN_PROGRESS; + lsquic_send_ctl_expire_all(&conn->fc_send_ctl); +} + + +static void +reconstruct_packet_number (struct full_conn *conn, lsquic_packet_in_t *packet_in) +{ + lsquic_packno_t cur_packno, max_packno; + enum packno_bits bits; + unsigned packet_len; + + cur_packno = packet_in->pi_packno; + max_packno = lsquic_rechist_largest_packno(&conn->fc_rechist); + bits = lsquic_packet_in_packno_bits(packet_in); + packet_len = conn->fc_conn.cn_pf->pf_packno_bits2len(bits); + packet_in->pi_packno = lsquic_restore_packno(cur_packno, packet_len, + max_packno); + LSQ_DEBUG("reconstructed (bits: %u, packno: %"PRIu64", max: %"PRIu64") " + "to %"PRIu64"", bits, cur_packno, max_packno, packet_in->pi_packno); +} + + +static enum dec_packin +conn_decrypt_packet (struct full_conn *conn, lsquic_packet_in_t *packet_in) +{ + return conn->fc_conn.cn_esf_c->esf_decrypt_packet( + conn->fc_conn.cn_enc_session, conn->fc_enpub, + &conn->fc_conn, packet_in); +} + + +static void +parse_regular_packet (struct full_conn *conn, lsquic_packet_in_t *packet_in) +{ + const unsigned char *p, *pend; + unsigned len; + + p = packet_in->pi_data + packet_in->pi_header_sz; + pend = packet_in->pi_data + packet_in->pi_data_sz; + + while (p < pend) + { + len = process_packet_frame(conn, packet_in, p, pend - p); + if (len > 0) + p += len; + else + { + ABORT_ERROR("Error parsing frame"); + break; + } + } +} + + +static int +conn_is_stateless_reset (const struct full_conn *conn, + const struct lsquic_packet_in *packet_in) +{ + return packet_in->pi_data_sz > SRST_LENGTH + && 0 == conn->fc_conn.cn_esf_c->esf_verify_reset_token( + conn->fc_conn.cn_enc_session, + packet_in->pi_data + packet_in->pi_data_sz - SRST_LENGTH, + SRST_LENGTH); +} + + +static int +process_regular_packet (struct full_conn *conn, lsquic_packet_in_t *packet_in) +{ + enum received_st st; + enum quic_ft_bit frame_types; + int was_missing; + + if (conn->fc_conn.cn_version < LSQVER_050) + { + reconstruct_packet_number(conn, packet_in); + EV_LOG_PACKET_IN(LSQUIC_LOG_CONN_ID, packet_in); + } + +#if LSQUIC_CONN_STATS + ++conn->fc_stats.in.packets; +#endif + + /* The packet is decrypted before receive history is updated. This is + * done to make sure that a bad packet won't occupy a slot in receive + * history and subsequent good packet won't be marked as a duplicate. + */ + if (0 == (packet_in->pi_flags & PI_DECRYPTED) && + DECPI_OK != conn_decrypt_packet(conn, packet_in)) + { + if (conn_is_stateless_reset(conn, packet_in)) + { + LSQ_INFO("received public reset packet: aborting connection"); + conn->fc_flags |= FC_GOT_PRST; + return -1; + } + else + { + LSQ_INFO("could not decrypt packet"); +#if LSQUIC_CONN_STATS + ++conn->fc_stats.in.undec_packets; +#endif + return 0; + } + } + + if (conn->fc_conn.cn_version >= LSQVER_050) + EV_LOG_PACKET_IN(LSQUIC_LOG_CONN_ID, packet_in); + + st = lsquic_rechist_received(&conn->fc_rechist, packet_in->pi_packno, + packet_in->pi_received); + switch (st) { + case REC_ST_OK: + parse_regular_packet(conn, packet_in); + if (0 == (conn->fc_flags & (FC_ACK_QUEUED|FC_GOT_SREJ))) + { + frame_types = packet_in->pi_frame_types; + if ((conn->fc_flags & FC_GOING_AWAY) + && lsquic_hash_count(conn->fc_pub.all_streams) <= N_SPECIAL_STREAMS) + { + /* Ignore PING frames if we are going away and there are no + * active streams. (HANDSHAKE and HEADERS streams are the + * two streams that are always in the all_streams hash). + */ + frame_types &= ~(1 << QUIC_FRAME_PING); + } + was_missing = packet_in->pi_packno != + lsquic_rechist_largest_packno(&conn->fc_rechist); + conn->fc_n_slack_akbl += !!(frame_types & GQUIC_FRAME_ACKABLE_MASK); + try_queueing_ack(conn, was_missing, packet_in->pi_received); + } + else if (conn->fc_flags & FC_GOT_SREJ) + conn->fc_flags &= ~FC_GOT_SREJ; + return 0; + case REC_ST_DUP: +#if LSQUIC_CONN_STATS + ++conn->fc_stats.in.dup_packets; +#endif + LSQ_INFO("packet %"PRIu64" is a duplicate", packet_in->pi_packno); + return 0; + default: + assert(0); + /* Fall through */ + case REC_ST_ERR: +#if LSQUIC_CONN_STATS + ++conn->fc_stats.in.err_packets; +#endif + LSQ_INFO("error processing packet %"PRIu64, packet_in->pi_packno); + return -1; + } +} + + +/* TODO: Possible optimization: in server mode, we do not perform version + * negotiation. We can use different functions in client mode (this + * function) and server mode (a different, faster function that ignores + * version flags). + */ +static int +process_incoming_packet (struct full_conn *conn, lsquic_packet_in_t *packet_in) +{ + int is_prst, is_verneg; + + recent_packet_hist_new(conn, 0, packet_in->pi_received); + LSQ_DEBUG("Processing packet %"PRIu64, packet_in->pi_packno); + + is_prst = lsquic_packet_in_is_gquic_prst(packet_in); + is_verneg = lsquic_packet_in_is_verneg(packet_in); + + /* See flowchart in Section 4.1 of [draft-ietf-quic-transport-00]. We test + * for the common case first. + */ + if (0 == is_prst && 0 == is_verneg) + { + if (conn->fc_ver_neg.vn_tag) + { + assert(conn->fc_ver_neg.vn_state != VN_END); + conn->fc_ver_neg.vn_state = VN_END; + conn->fc_ver_neg.vn_tag = NULL; + conn->fc_conn.cn_version = conn->fc_ver_neg.vn_ver; + conn->fc_conn.cn_flags |= LSCONN_VER_SET; + assert(!(conn->fc_flags & FC_NSTP)); /* This bit off at start */ + if (conn->fc_conn.cn_version >= LSQVER_046 + || conn->fc_settings->es_support_nstp) + { + conn->fc_flags |= FC_NSTP; + lsquic_send_ctl_turn_nstp_on(&conn->fc_send_ctl); + } + LSQ_DEBUG("end of version negotiation: agreed upon %s", + lsquic_ver2str[conn->fc_ver_neg.vn_ver]); + lsquic_send_ctl_verneg_done(&conn->fc_send_ctl); + EV_LOG_VER_NEG(LSQUIC_LOG_CONN_ID, + "agreed", lsquic_ver2str[conn->fc_ver_neg.vn_ver]); + } + return process_regular_packet(conn, packet_in); + } + else if (is_prst) + { + LSQ_INFO("received public reset packet: aborting connection"); + conn->fc_flags |= FC_GOT_PRST; + return -1; + } + else + { + if (conn->fc_flags & FC_SERVER) + return process_regular_packet(conn, packet_in); + else if (conn->fc_ver_neg.vn_tag) + { + process_ver_neg_packet(conn, packet_in); + return 0; + } + else + { + LSQ_DEBUG("unexpected version negotiation packet: ignore it"); + return 0; + } + } +} + + +static void +idle_alarm_expired (enum alarm_id al_id, void *ctx, lsquic_time_t expiry, + lsquic_time_t now) +{ + struct full_conn *conn = ctx; + + if ((conn->fc_flags & FC_NOPROG_TIMEOUT) + && conn->fc_pub.last_prog + conn->fc_enpub->enp_noprog_timeout < now) + { + LSQ_DEBUG("connection timed out due to lack of progress"); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "connection timed out due to " + "lack of progress"); + /* Different flag so that CONNECTION_CLOSE frame is sent */ + conn->fc_flags |= FC_ABORTED; + } + else + { + LSQ_DEBUG("connection timed out"); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "connection timed out"); + conn->fc_flags |= FC_TIMED_OUT; + } +} + + +static void +handshake_alarm_expired (enum alarm_id al_id, void *ctx, + lsquic_time_t expiry, lsquic_time_t now) +{ + struct full_conn *conn = ctx; + LSQ_DEBUG("connection timed out: handshake timed out"); + conn->fc_flags |= FC_TIMED_OUT; +} + + +static void +ping_alarm_expired (enum alarm_id al_id, void *ctx, lsquic_time_t expiry, + lsquic_time_t now) +{ + struct full_conn *conn = ctx; + LSQ_DEBUG("Ping alarm rang: schedule PING frame to be generated"); + conn->fc_flags |= FC_SEND_PING; +} + + +static lsquic_packet_out_t * +get_writeable_packet (struct full_conn *conn, unsigned need_at_least) +{ + lsquic_packet_out_t *packet_out; + int is_err; + + packet_out = lsquic_send_ctl_get_writeable_packet(&conn->fc_send_ctl, + PNS_APP, need_at_least, &conn->fc_path, 0, &is_err); + if (!packet_out && is_err) + ABORT_ERROR("cannot allocate packet: %s", strerror(errno)); + return packet_out; +} + + +static int +generate_wuf_stream (struct full_conn *conn, lsquic_stream_t *stream) +{ + lsquic_packet_out_t *packet_out = get_writeable_packet(conn, GQUIC_WUF_SZ); + if (!packet_out) + return 0; + const uint64_t recv_off = lsquic_stream_fc_recv_off(stream); + int sz = conn->fc_conn.cn_pf->pf_gen_window_update_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), stream->id, recv_off); + if (sz < 0) { + ABORT_ERROR("gen_window_update_frame failed"); + return 0; + } + lsquic_send_ctl_incr_pack_sz(&conn->fc_send_ctl, packet_out, sz); + packet_out->po_frame_types |= 1 << QUIC_FRAME_WINDOW_UPDATE; + LSQ_DEBUG("wrote WUF: stream %"PRIu64"; offset 0x%"PRIX64, stream->id, + recv_off); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, + "wrote WUF: stream %"PRIu64"; offset 0x%"PRIX64, stream->id, recv_off); + return 1; +} + + +static void +generate_wuf_conn (struct full_conn *conn) +{ + assert(conn->fc_flags & FC_SEND_WUF); + lsquic_packet_out_t *packet_out = get_writeable_packet(conn, GQUIC_WUF_SZ); + if (!packet_out) + return; + const uint64_t recv_off = lsquic_cfcw_get_fc_recv_off(&conn->fc_pub.cfcw); + int sz = conn->fc_conn.cn_pf->pf_gen_window_update_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), 0, recv_off); + if (sz < 0) { + ABORT_ERROR("gen_window_update_frame failed"); + return; + } + lsquic_send_ctl_incr_pack_sz(&conn->fc_send_ctl, packet_out, sz); + packet_out->po_frame_types |= 1 << QUIC_FRAME_WINDOW_UPDATE; + conn->fc_flags &= ~FC_SEND_WUF; + LSQ_DEBUG("wrote connection WUF: offset 0x%"PRIX64, recv_off); +} + + +static void +maybe_close_conn (struct full_conn *conn) +{ +#ifndef NDEBUG + struct lsquic_stream *stream; + struct lsquic_hash_elem *el; +#endif + const unsigned n_special_streams = N_SPECIAL_STREAMS + - !(conn->fc_flags & FC_HTTP); + + if ((conn->fc_flags & (FC_CLOSING|FC_GOAWAY_SENT|FC_SERVER)) + == (FC_GOAWAY_SENT|FC_SERVER) + && lsquic_hash_count(conn->fc_pub.all_streams) == n_special_streams) + { +#ifndef NDEBUG + for (el = lsquic_hash_first(conn->fc_pub.all_streams); el; + el = lsquic_hash_next(conn->fc_pub.all_streams)) + { + stream = lsquic_hashelem_getdata(el); + assert(stream->sm_bflags & (SMBF_CRYPTO|SMBF_HEADERS)); + } +#endif + conn->fc_flags |= FC_RECV_CLOSE; /* Fake -- trigger "ok to close" */ + conn->fc_flags |= FC_CLOSING; + LSQ_DEBUG("closing connection: GOAWAY sent and no responses remain"); + } +} + + +static void +generate_goaway_frame (struct full_conn *conn) +{ + int reason_len = 0; + lsquic_packet_out_t *packet_out = + get_writeable_packet(conn, GQUIC_GOAWAY_FRAME_SZ + reason_len); + if (!packet_out) + return; + int sz = conn->fc_conn.cn_pf->pf_gen_goaway_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), 0, conn->fc_max_peer_stream_id, + NULL, reason_len); + if (sz < 0) { + ABORT_ERROR("gen_goaway_frame failed"); + return; + } + lsquic_send_ctl_incr_pack_sz(&conn->fc_send_ctl, packet_out, sz); + packet_out->po_frame_types |= 1 << QUIC_FRAME_GOAWAY; + conn->fc_flags &= ~FC_SEND_GOAWAY; + conn->fc_flags |= FC_GOAWAY_SENT; + LSQ_DEBUG("wrote GOAWAY frame: stream id: %"PRIu64, + conn->fc_max_peer_stream_id); + maybe_close_conn(conn); +} + + +static void +generate_connection_close_packet (struct full_conn *conn) +{ + lsquic_packet_out_t *packet_out; + + packet_out = lsquic_send_ctl_new_packet_out(&conn->fc_send_ctl, 0, PNS_APP, + &conn->fc_path); + if (!packet_out) + { + ABORT_ERROR("cannot allocate packet: %s", strerror(errno)); + return; + } + + lsquic_send_ctl_scheduled_one(&conn->fc_send_ctl, packet_out); + int sz = conn->fc_conn.cn_pf->pf_gen_connect_close_frame(packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), 0, 16 /* PEER_GOING_AWAY */, + NULL, 0); + if (sz < 0) { + ABORT_ERROR("generate_connection_close_packet failed"); + return; + } + lsquic_send_ctl_incr_pack_sz(&conn->fc_send_ctl, packet_out, sz); + packet_out->po_frame_types |= 1 << QUIC_FRAME_CONNECTION_CLOSE; + LSQ_DEBUG("generated CONNECTION_CLOSE frame in its own packet"); +} + + +static int +generate_blocked_frame (struct full_conn *conn, lsquic_stream_id_t stream_id) +{ + lsquic_packet_out_t *packet_out = + get_writeable_packet(conn, GQUIC_BLOCKED_FRAME_SZ); + if (!packet_out) + return 0; + int sz = conn->fc_conn.cn_pf->pf_gen_blocked_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), stream_id); + if (sz < 0) { + ABORT_ERROR("gen_blocked_frame failed"); + return 0; + } + lsquic_send_ctl_incr_pack_sz(&conn->fc_send_ctl, packet_out, sz); + packet_out->po_frame_types |= 1 << QUIC_FRAME_BLOCKED; + LSQ_DEBUG("wrote blocked frame: stream %"PRIu64, stream_id); + return 1; +} + + +static int +generate_stream_blocked_frame (struct full_conn *conn, lsquic_stream_t *stream) +{ + if (generate_blocked_frame(conn, stream->id)) + { + lsquic_stream_blocked_frame_sent(stream); + return 1; + } + else + return 0; +} + + +static int +generate_rst_stream_frame (struct full_conn *conn, lsquic_stream_t *stream) +{ + lsquic_packet_out_t *packet_out; + int sz, s; + + packet_out = get_writeable_packet(conn, GQUIC_RST_STREAM_SZ); + if (!packet_out) + return 0; + /* TODO Possible optimization: instead of using stream->tosend_off as the + * offset, keep track of the offset that was actually sent: include it + * into frame_rec and update a new per-stream "maximum offset actually + * sent" field. Then, if a stream is reset, the connection cap can be + * increased. + */ + sz = conn->fc_conn.cn_pf->pf_gen_rst_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), stream->id, + stream->tosend_off, stream->error_code); + if (sz < 0) { + ABORT_ERROR("gen_rst_frame failed"); + return 0; + } + lsquic_send_ctl_incr_pack_sz(&conn->fc_send_ctl, packet_out, sz); + packet_out->po_frame_types |= 1 << QUIC_FRAME_RST_STREAM; + s = lsquic_packet_out_add_stream(packet_out, conn->fc_pub.mm, stream, + QUIC_FRAME_RST_STREAM, packet_out->po_data_sz, sz); + if (s != 0) + { + ABORT_ERROR("adding stream to packet failed: %s", strerror(errno)); + return 0; + } + lsquic_stream_rst_frame_sent(stream); + LSQ_DEBUG("wrote RST: stream %"PRIu64"; offset 0x%"PRIX64"; error code " + "%"PRIu64, stream->id, stream->tosend_off, stream->error_code); + return 1; +} + + +static void +generate_ping_frame (struct full_conn *conn) +{ + lsquic_packet_out_t *packet_out = get_writeable_packet(conn, 1); + if (!packet_out) + { + LSQ_DEBUG("cannot get writeable packet for PING frame"); + return; + } + int sz = conn->fc_conn.cn_pf->pf_gen_ping_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out)); + if (sz < 0) { + ABORT_ERROR("gen_ping_frame failed"); + return; + } + lsquic_send_ctl_incr_pack_sz(&conn->fc_send_ctl, packet_out, sz); + packet_out->po_frame_types |= 1 << QUIC_FRAME_PING; + LSQ_DEBUG("wrote PING frame"); + if (!(conn->fc_flags & FC_SERVER)) + log_conn_flow_control(conn); +} + + +static void +generate_stop_waiting_frame (struct full_conn *conn) +{ + assert(conn->fc_flags & FC_SEND_STOP_WAITING); + + int sz; + unsigned packnum_len; + lsquic_packno_t least_unacked; + lsquic_packet_out_t *packet_out; + + /* Get packet that has room for the minimum size STOP_WAITING frame: */ + packnum_len = conn->fc_conn.cn_pf->pf_packno_bits2len(GQUIC_PACKNO_LEN_1); + packet_out = get_writeable_packet(conn, 1 + packnum_len); + if (!packet_out) + return; + + /* Now calculate number of bytes we really need. If there is not enough + * room in the current packet, get a new one. + */ + packnum_len = conn->fc_conn.cn_pf->pf_packno_bits2len( + lsquic_packet_out_packno_bits(packet_out)); + if ((unsigned) lsquic_packet_out_avail(packet_out) < 1 + packnum_len) + { + packet_out = get_writeable_packet(conn, 1 + packnum_len); + if (!packet_out) + return; + /* Here, a new packet has been allocated, The number of bytes needed + * to represent packet number in the STOP_WAITING frame may have + * increased. However, this does not matter, because the newly + * allocated packet must have room for a STOP_WAITING frame of any + * size. + */ + } + + least_unacked = lsquic_send_ctl_smallest_unacked(&conn->fc_send_ctl); + sz = conn->fc_conn.cn_pf->pf_gen_stop_waiting_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), packet_out->po_packno, + lsquic_packet_out_packno_bits(packet_out), least_unacked); + if (sz < 0) { + ABORT_ERROR("gen_stop_waiting_frame failed"); + return; + } + if (0 != lsquic_packet_out_add_frame(packet_out, conn->fc_pub.mm, 0, + QUIC_FRAME_STOP_WAITING, packet_out->po_data_sz, sz)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return; + } + lsquic_send_ctl_incr_pack_sz(&conn->fc_send_ctl, packet_out, sz); + packet_out->po_regen_sz += sz; + packet_out->po_frame_types |= 1 << QUIC_FRAME_STOP_WAITING; + conn->fc_flags &= ~FC_SEND_STOP_WAITING; + LSQ_DEBUG("wrote STOP_WAITING frame: least unacked: %"PRIu64, + least_unacked); + EV_LOG_GENERATED_STOP_WAITING_FRAME(LSQUIC_LOG_CONN_ID, least_unacked); +} + + +static int +process_stream_ready_to_send (struct full_conn *conn, lsquic_stream_t *stream) +{ + int r = 1; + if (stream->sm_qflags & SMQF_SEND_WUF) + r &= generate_wuf_stream(conn, stream); + if (stream->sm_qflags & SMQF_SEND_BLOCKED) + r &= generate_stream_blocked_frame(conn, stream); + if (stream->sm_qflags & SMQF_SEND_RST) + r &= generate_rst_stream_frame(conn, stream); + return r; +} + + +static void +process_streams_ready_to_send (struct full_conn *conn) +{ + lsquic_stream_t *stream; + struct stream_prio_iter spi; + + assert(!TAILQ_EMPTY(&conn->fc_pub.sending_streams)); + + lsquic_spi_init(&spi, TAILQ_FIRST(&conn->fc_pub.sending_streams), + TAILQ_LAST(&conn->fc_pub.sending_streams, lsquic_streams_tailq), + (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_send_stream), + &conn->fc_pub, "send", NULL, NULL); + + for (stream = lsquic_spi_first(&spi); stream; + stream = lsquic_spi_next(&spi)) + if (!process_stream_ready_to_send(conn, stream)) + break; +} + + +/* Return true if packetized, false otherwise */ +static int +packetize_standalone_stream_reset (struct full_conn *conn, lsquic_stream_id_t stream_id) +{ + lsquic_packet_out_t *packet_out; + int sz; + + packet_out = get_writeable_packet(conn, GQUIC_RST_STREAM_SZ); + if (!packet_out) + return 0; + + sz = conn->fc_conn.cn_pf->pf_gen_rst_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), stream_id, + 0, 0x10 /* QUIC_PEER_GOING_AWAY */); + if (sz < 0) { + ABORT_ERROR("gen_rst_frame failed"); + return 0; + } + lsquic_send_ctl_incr_pack_sz(&conn->fc_send_ctl, packet_out, sz); + packet_out->po_frame_types |= 1 << QUIC_FRAME_RST_STREAM; + LSQ_DEBUG("generated standalone RST_STREAM frame for stream %"PRIu64, + stream_id); + return 1; +} + + +static void +packetize_standalone_stream_resets (struct full_conn *conn) +{ + struct stream_id_to_reset *sitr; + + while ((sitr = STAILQ_FIRST(&conn->fc_stream_ids_to_reset))) + if (packetize_standalone_stream_reset(conn, sitr->sitr_stream_id)) + { + STAILQ_REMOVE_HEAD(&conn->fc_stream_ids_to_reset, sitr_next); + free(sitr); + } + else + break; +} + + +static void +create_delayed_streams (struct full_conn *conn) +{ + unsigned stream_count, avail, i; + struct lsquic_stream **new_streams; + + stream_count = count_streams(conn, 0); + + if (stream_count >= conn->fc_cfg.max_streams_out) + return; + + avail = conn->fc_cfg.max_streams_out - stream_count; + if (conn->fc_n_delayed_streams < avail) + avail = conn->fc_n_delayed_streams; + if (avail == 0) + return; + + new_streams = malloc(sizeof(new_streams[0]) * avail); + if (!new_streams) + { + ABORT_WARN("%s: malloc failed", __func__); + return; + } + + LSQ_DEBUG("creating delayed streams"); + for (i = 0; i < avail; ++i) + { + /* Delay calling on_new in order not to let the user screw up + * the counts by making more streams. + */ + new_streams[i] = new_stream(conn, generate_stream_id(conn), 0); + if (!new_streams[i]) + { + ABORT_ERROR("%s: cannot create new stream: %s", __func__, + strerror(errno)); + goto cleanup; + } + } + LSQ_DEBUG("created %u delayed stream%.*s", avail, avail != 1, "s"); + + assert(count_streams(conn, 0) <= conn->fc_cfg.max_streams_out); + conn->fc_n_delayed_streams -= avail; + + for (i = 0; i < avail; ++i) + lsquic_stream_call_on_new(new_streams[i]); + cleanup: + free(new_streams); +} + + +static void +service_streams (struct full_conn *conn) +{ + struct lsquic_hash_elem *el; + lsquic_stream_t *stream, *next; + int closed_some = 0; + + for (stream = TAILQ_FIRST(&conn->fc_pub.service_streams); stream; stream = next) + { + next = TAILQ_NEXT(stream, next_service_stream); + if (stream->sm_qflags & SMQF_ABORT_CONN) + /* No need to unset this flag or remove this stream: the connection + * is about to be aborted. + */ + ABORT_ERROR("aborted due to error in stream %"PRIu64, stream->id); + if (stream->sm_qflags & SMQF_CALL_ONCLOSE) + { + lsquic_stream_call_on_close(stream); + closed_some |= is_our_stream(conn, stream); + conn_mark_stream_closed(conn, stream->id); + } + if (stream->sm_qflags & SMQF_FREE_STREAM) + { + TAILQ_REMOVE(&conn->fc_pub.service_streams, stream, next_service_stream); + el = lsquic_hash_find(conn->fc_pub.all_streams, &stream->id, sizeof(stream->id)); + if (el) + lsquic_hash_erase(conn->fc_pub.all_streams, el); + SAVE_STREAM_HISTORY(conn, stream); + lsquic_stream_destroy(stream); + } + } + + if (either_side_going_away(conn)) + { + while (conn->fc_n_delayed_streams) + { + --conn->fc_n_delayed_streams; + LSQ_DEBUG("goaway mode: delayed stream results in null ctor"); + (void) conn->fc_stream_ifs[STREAM_IF_STD].stream_if->on_new_stream( + conn->fc_stream_ifs[STREAM_IF_STD].stream_if_ctx, NULL); + } + maybe_close_conn(conn); + } + else + if (closed_some && conn->fc_n_delayed_streams) + create_delayed_streams(conn); +} + + +struct filter_stream_ctx +{ + struct full_conn *conn; + uint32_t last_stream_id, + max_peer_stream_id; +}; + + +static int +filter_out_old_streams (void *ctx, lsquic_stream_t *stream) +{ + struct filter_stream_ctx *const fctx = ctx; + return ((!((stream->id ^ fctx->last_stream_id) & 1) && + stream->id > fctx->last_stream_id) + || + (!((stream->id ^ fctx->max_peer_stream_id) & 1) && + stream->id > fctx->max_peer_stream_id)); +} + + +static void +process_streams_read_events (struct full_conn *conn) +{ + lsquic_stream_t *stream; + struct filter_stream_ctx fctx; + enum stream_q_flags q_flags; + int needs_service; + struct stream_prio_iter spi; + + if (TAILQ_EMPTY(&conn->fc_pub.read_streams)) + return; + + fctx.last_stream_id = conn->fc_last_stream_id; + fctx.max_peer_stream_id = conn->fc_max_peer_stream_id; + lsquic_spi_init(&spi, TAILQ_FIRST(&conn->fc_pub.read_streams), + TAILQ_LAST(&conn->fc_pub.read_streams, lsquic_streams_tailq), + (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_read_stream), + &conn->fc_pub, "read", NULL, NULL); + + needs_service = 0; + for (stream = lsquic_spi_first(&spi); stream; + stream = lsquic_spi_next(&spi)) + { + q_flags = stream->sm_qflags & SMQF_SERVICE_FLAGS; + lsquic_stream_dispatch_read_events(stream); + needs_service |= q_flags ^ (stream->sm_qflags & SMQF_SERVICE_FLAGS); + } + + if (needs_service) + service_streams(conn); + + /* If new streams were created as result of the read dispatching above, + * process these new streams. This logic is only applicable to in the + * server mode, as a client that creates a stream from an on_read() event + * is not likely to want to *read* from it immediately. + */ + if ((conn->fc_flags & FC_SERVER) && + (fctx.last_stream_id < conn->fc_last_stream_id || + fctx.max_peer_stream_id < conn->fc_max_peer_stream_id)) + { + fctx.conn = conn; + lsquic_spi_init(&spi, TAILQ_FIRST(&conn->fc_pub.read_streams), + TAILQ_LAST(&conn->fc_pub.read_streams, lsquic_streams_tailq), + (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_read_stream), + &conn->fc_pub, "read-new", + filter_out_old_streams, &fctx); + for (stream = lsquic_spi_first(&spi); stream; + stream = lsquic_spi_next(&spi)) + lsquic_stream_dispatch_read_events(stream); + } +} + + +static void +maybe_conn_flush_headers_stream (struct full_conn *conn) +{ + lsquic_stream_t *stream; + + if (conn->fc_flags & FC_HTTP) + { + stream = lsquic_headers_stream_get_stream(conn->fc_pub.u.gquic.hs); + if (lsquic_stream_has_data_to_flush(stream)) + (void) lsquic_stream_flush(stream); + } +} + + +static void +process_streams_write_events (struct full_conn *conn, int high_prio) +{ + lsquic_stream_t *stream; + struct stream_prio_iter spi; + + lsquic_spi_init(&spi, TAILQ_FIRST(&conn->fc_pub.write_streams), + TAILQ_LAST(&conn->fc_pub.write_streams, lsquic_streams_tailq), + (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_write_stream), + &conn->fc_pub, + high_prio ? "write-high" : "write-low", NULL, NULL); + + if (high_prio) + lsquic_spi_drop_non_high(&spi); + else + lsquic_spi_drop_high(&spi); + + for (stream = lsquic_spi_first(&spi); stream && write_is_possible(conn); + stream = lsquic_spi_next(&spi)) + if (stream->sm_qflags & SMQF_WRITE_Q_FLAGS) + lsquic_stream_dispatch_write_events(stream); + + maybe_conn_flush_headers_stream(conn); +} + + +static void +process_hsk_stream_read_events (struct full_conn *conn) +{ + lsquic_stream_t *stream; + TAILQ_FOREACH(stream, &conn->fc_pub.read_streams, next_read_stream) + if (lsquic_stream_is_crypto(stream)) + { + lsquic_stream_dispatch_read_events(stream); + break; + } +} + + +static void +process_hsk_stream_write_events (struct full_conn *conn) +{ + lsquic_stream_t *stream; + TAILQ_FOREACH(stream, &conn->fc_pub.write_streams, next_write_stream) + if (lsquic_stream_is_crypto(stream)) + { + lsquic_stream_dispatch_write_events(stream); + break; + } +} + + +static void +generate_ack_frame (struct full_conn *conn) +{ + lsquic_packet_out_t *packet_out; + + packet_out = lsquic_send_ctl_new_packet_out(&conn->fc_send_ctl, 0, PNS_APP, + &conn->fc_path); + if (packet_out) + { + lsquic_send_ctl_scheduled_one(&conn->fc_send_ctl, packet_out); + full_conn_ci_write_ack(&conn->fc_conn, packet_out); + } + else + ABORT_ERROR("cannot allocate packet: %s", strerror(errno)); +} + + +static int +conn_ok_to_close (const struct full_conn *conn) +{ + assert(conn->fc_flags & FC_CLOSING); + return !(conn->fc_flags & FC_SERVER) + || (conn->fc_flags & FC_RECV_CLOSE) + || ( + !lsquic_send_ctl_have_outgoing_stream_frames(&conn->fc_send_ctl) + && lsquic_hash_count(conn->fc_pub.all_streams) <= N_SPECIAL_STREAMS + && lsquic_send_ctl_have_unacked_stream_frames(&conn->fc_send_ctl) == 0); +} + + +static enum tick_st +immediate_close (struct full_conn *conn) +{ + lsquic_packet_out_t *packet_out; + const char *error_reason; + unsigned error_code; + int sz; + + if (conn->fc_flags & (FC_TICK_CLOSE|FC_GOT_PRST)) + return TICK_CLOSE; + + conn->fc_flags |= FC_TICK_CLOSE; + + /* No reason to send anything that's been scheduled if connection is + * being closed immedately. This also ensures that packet numbers + * sequence is always increasing. + */ + lsquic_send_ctl_drop_scheduled(&conn->fc_send_ctl); + + if ((conn->fc_flags & FC_TIMED_OUT) && conn->fc_settings->es_silent_close) + return TICK_CLOSE; + + packet_out = lsquic_send_ctl_new_packet_out(&conn->fc_send_ctl, 0, PNS_APP, + &conn->fc_path); + if (!packet_out) + { + LSQ_WARN("cannot allocate packet: %s", strerror(errno)); + return TICK_CLOSE; + } + + assert(conn->fc_flags & (FC_ERROR|FC_ABORTED|FC_TIMED_OUT|FC_HSK_FAILED)); + if (conn->fc_flags & FC_ERROR) + { + error_code = 0x01; /* QUIC_INTERNAL_ERROR */ + error_reason = "connection error"; + } + else if (conn->fc_flags & FC_ABORTED) + { + error_code = 0x10; /* QUIC_PEER_GOING_AWAY */ + error_reason = "user aborted connection"; + } + else if (conn->fc_flags & FC_TIMED_OUT) + { + error_code = 0x19; /* QUIC_NETWORK_IDLE_TIMEOUT */ + error_reason = "connection timed out"; + } + else if (conn->fc_flags & FC_HSK_FAILED) + { + error_code = 0x2A; /* QUIC_PROOF_INVALID */ + error_reason = "handshake failed"; + } + else + { + error_code = 0x10; /* QUIC_PEER_GOING_AWAY */ + error_reason = NULL; + } + + lsquic_send_ctl_scheduled_one(&conn->fc_send_ctl, packet_out); + sz = conn->fc_conn.cn_pf->pf_gen_connect_close_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), 0, error_code, + error_reason, error_reason ? strlen(error_reason) : 0); + if (sz < 0) { + LSQ_WARN("%s failed", __func__); + return TICK_CLOSE; + } + lsquic_send_ctl_incr_pack_sz(&conn->fc_send_ctl, packet_out, sz); + packet_out->po_frame_types |= 1 << QUIC_FRAME_CONNECTION_CLOSE; + LSQ_DEBUG("generated CONNECTION_CLOSE frame in its own packet"); + return TICK_SEND|TICK_CLOSE; +} + + +static int +write_is_possible (struct full_conn *conn) +{ + const lsquic_packet_out_t *packet_out; + + packet_out = lsquic_send_ctl_last_scheduled(&conn->fc_send_ctl, PNS_APP, + &conn->fc_path, 0); + return (packet_out && lsquic_packet_out_avail(packet_out) > 10) + || lsquic_send_ctl_can_send(&conn->fc_send_ctl); +} + + +static int +should_generate_ack (const struct full_conn *conn) +{ + return (conn->fc_flags & FC_ACK_QUEUED) + || lsquic_send_ctl_lost_ack(&conn->fc_send_ctl); +} + + +static int +full_conn_ci_can_write_ack (struct lsquic_conn *lconn) +{ + struct full_conn *conn = (struct full_conn *) lconn; + return should_generate_ack(conn); +} + + +struct full_ack_state +{ + enum full_conn_flags conn_flags; + enum alarm_id_bit armed_set; + unsigned n_slack_akbl; + unsigned n_stop_waiting; +}; + + +typedef char ack_state_size[sizeof(struct full_ack_state) + <= sizeof(struct ack_state) ? 1 : - 1]; + +static void +full_conn_ci_ack_snapshot (struct lsquic_conn *lconn, struct ack_state *opaque) +{ + struct full_conn *conn = (struct full_conn *) lconn; + struct full_ack_state *const ack_state = (struct full_ack_state *) opaque; + + ack_state->conn_flags = conn->fc_flags; + ack_state->armed_set = conn->fc_alset.as_armed_set; + ack_state->n_slack_akbl = conn->fc_n_slack_akbl; + ack_state->n_stop_waiting + = lsquic_send_ctl_n_stop_waiting(&conn->fc_send_ctl); + LSQ_DEBUG("take ACK snapshot"); +} + + +static void +full_conn_ci_ack_rollback (struct lsquic_conn *lconn, struct ack_state *opaque) +{ + struct full_ack_state *const ack_state = (struct full_ack_state *) opaque; + struct full_conn *conn = (struct full_conn *) lconn; + + conn->fc_flags &= ~(FC_ACK_HAD_MISS|FC_ACK_QUEUED); + conn->fc_flags |= (FC_ACK_HAD_MISS|FC_ACK_QUEUED) + & ack_state->conn_flags; + + conn->fc_alset.as_armed_set &= ~ALBIT_ACK_APP; + conn->fc_alset.as_armed_set |= ALBIT_ACK_APP & ack_state->armed_set; + + conn->fc_n_slack_akbl = ack_state->n_slack_akbl; + conn->fc_send_ctl.sc_n_stop_waiting = ack_state->n_stop_waiting; + + LSQ_DEBUG("roll back ACK state"); +} + + +/* This should be called before lsquic_alarmset_ring_expired() */ +static void +maybe_set_noprogress_alarm (struct full_conn *conn, lsquic_time_t now) +{ + lsquic_time_t exp; + + if (conn->fc_flags & FC_NOPROG_TIMEOUT) + { + if (conn->fc_pub.last_tick) + { + exp = conn->fc_pub.last_prog + conn->fc_enpub->enp_noprog_timeout; + if (!lsquic_alarmset_is_set(&conn->fc_alset, AL_IDLE) + || exp < conn->fc_alset.as_expiry[AL_IDLE]) + lsquic_alarmset_set(&conn->fc_alset, AL_IDLE, exp); + conn->fc_pub.last_tick = now; + } + else + { + conn->fc_pub.last_tick = now; + conn->fc_pub.last_prog = now; + } + } +} + + +static enum tick_st +full_conn_ci_tick (lsquic_conn_t *lconn, lsquic_time_t now) +{ + struct full_conn *conn = (struct full_conn *) lconn; + int have_delayed_packets; + unsigned n; + int s; + enum tick_st tick = 0; + +#define CLOSE_IF_NECESSARY() do { \ + if (conn->fc_flags & FC_IMMEDIATE_CLOSE_FLAGS) \ + { \ + tick |= immediate_close(conn); \ + goto close_end; \ + } \ +} while (0) + +#define RETURN_IF_OUT_OF_PACKETS() do { \ + if (!lsquic_send_ctl_can_send(&conn->fc_send_ctl)) \ + { \ + if (0 == lsquic_send_ctl_n_scheduled(&conn->fc_send_ctl)) \ + { \ + LSQ_DEBUG("used up packet allowance, quiet now (line %d)", \ + __LINE__); \ + tick |= TICK_QUIET; \ + } \ + else \ + { \ + LSQ_DEBUG("used up packet allowance, sending now (line %d)",\ + __LINE__); \ + tick |= TICK_SEND; \ + } \ + goto end; \ + } \ +} while (0) + +#if LSQUIC_CONN_STATS + ++conn->fc_stats.n_ticks; +#endif + + CLOSE_IF_NECESSARY(); + + if (LSQ_LOG_ENABLED(LSQ_LOG_DEBUG) + && conn->fc_mem_logged_last + 1000000 <= now) + { + conn->fc_mem_logged_last = now; + LSQ_DEBUG("memory used: %zd bytes", calc_mem_used(conn)); + } + + if (conn->fc_flags & FC_HAVE_SAVED_ACK) + { + (void) /* If there is an error, we'll fail shortly */ + process_ack(conn, &conn->fc_ack, conn->fc_saved_ack_received, now); + conn->fc_flags &= ~FC_HAVE_SAVED_ACK; + } + + maybe_set_noprogress_alarm(conn, now); + + lsquic_send_ctl_tick_in(&conn->fc_send_ctl, now); + lsquic_send_ctl_set_buffer_stream_packets(&conn->fc_send_ctl, 1); + CLOSE_IF_NECESSARY(); + + lsquic_alarmset_ring_expired(&conn->fc_alset, now); + CLOSE_IF_NECESSARY(); + + /* To make things simple, only stream 1 is active until the handshake + * has been completed. This will be adjusted in the future: the client + * does not want to wait if it has the server information. + */ + if (conn->fc_conn.cn_flags & LSCONN_HANDSHAKE_DONE) + process_streams_read_events(conn); + else + process_hsk_stream_read_events(conn); + CLOSE_IF_NECESSARY(); + + if (lsquic_send_ctl_pacer_blocked(&conn->fc_send_ctl)) + goto skip_write; + + if (conn->fc_flags & FC_FIRST_TICK) + { + conn->fc_flags &= ~FC_FIRST_TICK; + have_delayed_packets = 0; + } + else + /* If there are any scheduled packets at this point, it means that + * they were not sent during previous tick; in other words, they + * are delayed. When there are delayed packets, the only packet + * we sometimes add is a packet with an ACK frame, and we add it + * to the *front* of the queue. + */ + have_delayed_packets = lsquic_send_ctl_maybe_squeeze_sched( + &conn->fc_send_ctl); + + if (should_generate_ack(conn)) + { + if (have_delayed_packets) + lsquic_send_ctl_reset_packnos(&conn->fc_send_ctl); + + generate_ack_frame(conn); + CLOSE_IF_NECESSARY(); + + /* Try to send STOP_WAITING frame at the same time we send an ACK + * This follows reference implementation. + */ + if (!(conn->fc_flags & FC_NSTP)) + conn->fc_flags |= FC_SEND_STOP_WAITING; + + if (have_delayed_packets) + { + if (conn->fc_flags & FC_SEND_STOP_WAITING) + { + /* TODO: ensure that STOP_WAITING frame is in the same packet + * as the ACK frame in delayed packet mode. + */ + generate_stop_waiting_frame(conn); + CLOSE_IF_NECESSARY(); + } + lsquic_send_ctl_ack_to_front(&conn->fc_send_ctl, 1); + } + } + + if (have_delayed_packets) + { + /* The reason for not adding STOP_WAITING and other frames below + * to the packet carrying ACK frame generated when there are delayed + * packets is so that if the ACK packet itself is delayed, it can be + * dropped and replaced by new ACK packet. This way, we are never + * more than 1 packet over CWND. + */ + tick |= TICK_SEND; + if (conn->fc_flags & FC_CLOSING) + goto end_write; + else + goto end; + } + + /* Try to fit any of the following three frames -- STOP_WAITING, + * WINDOW_UPDATE, and GOAWAY -- before checking if we have run + * out of packets. If either of them does not fit, it will be + * tried next time around. + */ + if (conn->fc_flags & FC_SEND_STOP_WAITING) + { + generate_stop_waiting_frame(conn); + CLOSE_IF_NECESSARY(); + } + + if (lsquic_cfcw_fc_offsets_changed(&conn->fc_pub.cfcw) || + (conn->fc_flags & FC_SEND_WUF)) + { + conn->fc_flags |= FC_SEND_WUF; + generate_wuf_conn(conn); + CLOSE_IF_NECESSARY(); + } + + if (conn->fc_flags & FC_SEND_GOAWAY) + { + generate_goaway_frame(conn); + CLOSE_IF_NECESSARY(); + } + + n = lsquic_send_ctl_reschedule_packets(&conn->fc_send_ctl); + if (n > 0) + CLOSE_IF_NECESSARY(); + + if (conn->fc_conn.cn_flags & LSCONN_SEND_BLOCKED) + { + RETURN_IF_OUT_OF_PACKETS(); + if (generate_blocked_frame(conn, 0)) + conn->fc_conn.cn_flags &= ~LSCONN_SEND_BLOCKED; + } + + if (!STAILQ_EMPTY(&conn->fc_stream_ids_to_reset)) + { + packetize_standalone_stream_resets(conn); + CLOSE_IF_NECESSARY(); + } + + if (!TAILQ_EMPTY(&conn->fc_pub.sending_streams)) + { + process_streams_ready_to_send(conn); + CLOSE_IF_NECESSARY(); + } + + lsquic_send_ctl_set_buffer_stream_packets(&conn->fc_send_ctl, 0); + if (!handshake_done_or_doing_sess_resume(conn)) + { + process_hsk_stream_write_events(conn); + lsquic_send_ctl_maybe_app_limited(&conn->fc_send_ctl, &conn->fc_path); + goto end_write; + } + + maybe_conn_flush_headers_stream(conn); + + s = lsquic_send_ctl_schedule_buffered(&conn->fc_send_ctl, BPT_HIGHEST_PRIO); + conn->fc_flags |= (s < 0) << FC_BIT_ERROR; + if (!write_is_possible(conn)) + goto end_write; + + if (!TAILQ_EMPTY(&conn->fc_pub.write_streams)) + { + process_streams_write_events(conn, 1); + if (!write_is_possible(conn)) + goto end_write; + } + + s = lsquic_send_ctl_schedule_buffered(&conn->fc_send_ctl, BPT_OTHER_PRIO); + conn->fc_flags |= (s < 0) << FC_BIT_ERROR; + if (!write_is_possible(conn)) + goto end_write; + + if (!TAILQ_EMPTY(&conn->fc_pub.write_streams)) + process_streams_write_events(conn, 0); + + lsquic_send_ctl_maybe_app_limited(&conn->fc_send_ctl, &conn->fc_path); + + end_write: + + skip_write: + if ((conn->fc_flags & FC_CLOSING) && conn_ok_to_close(conn)) + { + LSQ_DEBUG("connection is OK to close"); + /* This is normal termination sequence. + * + * Generate CONNECTION_CLOSE frame if we are responding to one, have + * packets scheduled to send, or silent close flag is not set. + */ + conn->fc_flags |= FC_TICK_CLOSE; + if (conn->fc_flags & FC_RECV_CLOSE) + tick |= TICK_CLOSE; + if ((conn->fc_flags & FC_RECV_CLOSE) || + 0 != lsquic_send_ctl_n_scheduled(&conn->fc_send_ctl) || + !conn->fc_settings->es_silent_close) + { + RETURN_IF_OUT_OF_PACKETS(); + generate_connection_close_packet(conn); + tick |= TICK_SEND|TICK_CLOSE; + } + else + tick |= TICK_CLOSE; + + goto end; + } + + if (0 == lsquic_send_ctl_n_scheduled(&conn->fc_send_ctl)) + { + if (conn->fc_flags & FC_SEND_PING) + { + RETURN_IF_OUT_OF_PACKETS(); + conn->fc_flags &= ~FC_SEND_PING; + generate_ping_frame(conn); + CLOSE_IF_NECESSARY(); + assert(lsquic_send_ctl_n_scheduled(&conn->fc_send_ctl) != 0); + } + else + { + tick |= TICK_QUIET; + goto end; + } + } + else if (conn->fc_settings->es_ping_period) + { + lsquic_alarmset_unset(&conn->fc_alset, AL_PING); + lsquic_send_ctl_sanity_check(&conn->fc_send_ctl); + conn->fc_flags &= ~FC_SEND_PING; /* It may have rung */ + } + + /* From the spec: + * " The PING frame should be used to keep a connection alive when + * " a stream is open. + */ + if (conn->fc_settings->es_ping_period + && lsquic_hash_count(conn->fc_pub.all_streams) > 0) + lsquic_alarmset_set(&conn->fc_alset, AL_PING, + now + conn->fc_settings->es_ping_period * 1000 * 1000); + + tick |= TICK_SEND; + + end: + service_streams(conn); + CLOSE_IF_NECESSARY(); + + close_end: + lsquic_send_ctl_set_buffer_stream_packets(&conn->fc_send_ctl, 1); + lsquic_send_ctl_tick_out(&conn->fc_send_ctl); + return tick; +} + + +static void +set_earliest_idle_alarm (struct full_conn *conn, lsquic_time_t idle_conn_to) +{ + lsquic_time_t exp; + + if (conn->fc_pub.last_prog + && (assert(conn->fc_flags & FC_NOPROG_TIMEOUT), + exp = conn->fc_pub.last_prog + conn->fc_enpub->enp_noprog_timeout, + exp < idle_conn_to)) + idle_conn_to = exp; + lsquic_alarmset_set(&conn->fc_alset, AL_IDLE, idle_conn_to); +} + + +static void +full_conn_ci_packet_in (lsquic_conn_t *lconn, lsquic_packet_in_t *packet_in) +{ + struct full_conn *conn = (struct full_conn *) lconn; + +#if LSQUIC_CONN_STATS + conn->fc_stats.in.bytes += packet_in->pi_data_sz; +#endif + set_earliest_idle_alarm(conn, + packet_in->pi_received + conn->fc_settings->es_idle_conn_to); + if (0 == (conn->fc_flags & FC_ERROR)) + if (0 != process_incoming_packet(conn, packet_in)) + conn->fc_flags |= FC_ERROR; +} + + +static lsquic_packet_out_t * +full_conn_ci_next_packet_to_send (struct lsquic_conn *lconn, + const struct to_coal *unused) +{ + struct full_conn *conn = (struct full_conn *) lconn; + return lsquic_send_ctl_next_packet_to_send(&conn->fc_send_ctl, NULL); +} + + +static void +full_conn_ci_packet_sent (lsquic_conn_t *lconn, lsquic_packet_out_t *packet_out) +{ + struct full_conn *conn = (struct full_conn *) lconn; + int s; + + recent_packet_hist_new(conn, 1, packet_out->po_sent); + recent_packet_hist_frames(conn, 1, packet_out->po_frame_types); + + if (packet_out->po_frame_types & GQUIC_FRAME_RETRANSMITTABLE_MASK) + conn->fc_n_cons_unretx = 0; + else + ++conn->fc_n_cons_unretx; + s = lsquic_send_ctl_sent_packet(&conn->fc_send_ctl, packet_out); + if (s != 0) + ABORT_ERROR("sent packet failed: %s", strerror(errno)); +#if LSQUIC_CONN_STATS + ++conn->fc_stats.out.packets; + conn->fc_stats.out.bytes += lsquic_packet_out_sent_sz(lconn, packet_out); +#endif +} + + +static void +full_conn_ci_packet_not_sent (lsquic_conn_t *lconn, lsquic_packet_out_t *packet_out) +{ + struct full_conn *conn = (struct full_conn *) lconn; + lsquic_send_ctl_delayed_one(&conn->fc_send_ctl, packet_out); +} + + +static void +full_conn_ci_hsk_done (lsquic_conn_t *lconn, enum lsquic_hsk_status status) +{ + struct full_conn *conn = (struct full_conn *) lconn; + lsquic_alarmset_unset(&conn->fc_alset, AL_HANDSHAKE); + switch (status) + { + case LSQ_HSK_RESUMED_FAIL: + case LSQ_HSK_FAIL: + conn->fc_flags |= FC_HSK_FAILED; + break; + case LSQ_HSK_OK: + case LSQ_HSK_RESUMED_OK: + if (0 == apply_peer_settings(conn)) + { + if (conn->fc_flags & FC_HTTP) + maybe_send_settings(conn); + lconn->cn_flags |= LSCONN_HANDSHAKE_DONE; + } + else + conn->fc_flags |= FC_ERROR; + break; + } + if (conn->fc_stream_ifs[STREAM_IF_STD].stream_if->on_hsk_done) + conn->fc_stream_ifs[STREAM_IF_STD].stream_if->on_hsk_done(lconn, + status); + if (status == LSQ_HSK_OK || status == LSQ_HSK_RESUMED_OK) + { + if (conn->fc_stream_ifs[STREAM_IF_STD].stream_if->on_sess_resume_info) + conn->fc_conn.cn_esf.g->esf_maybe_dispatch_sess_resume( + conn->fc_conn.cn_enc_session, + conn->fc_stream_ifs[STREAM_IF_STD].stream_if->on_sess_resume_info); + if (conn->fc_n_delayed_streams) + create_delayed_streams(conn); + if (!(conn->fc_flags & FC_SERVER)) + lsquic_send_ctl_begin_optack_detection(&conn->fc_send_ctl); + } +} + + +static void +full_conn_ci_abort (struct lsquic_conn *lconn) +{ + struct full_conn *conn = (struct full_conn *) lconn; + LSQ_INFO("User aborted connection"); + conn->fc_flags |= FC_ABORTED; + lsquic_engine_add_conn_to_tickable(conn->fc_enpub, lconn); +} + + +static void +full_conn_ci_internal_error (struct lsquic_conn *lconn, + const char *format, ...) +{ + struct full_conn *const conn = (struct full_conn *) lconn; + LSQ_INFO("Internal error reported"); + conn->fc_flags |= FC_ERROR; +} + + +/* This function should not be called, as this is specific to IETF QUIC */ +static void +full_conn_ci_abort_error (struct lsquic_conn *lconn, int is_app, + unsigned error_code, const char *fmt, ...) +{ + struct full_conn *const conn = (struct full_conn *) lconn; + assert(0); + LSQ_WARN("(GQUIC) abort error is called unexpectedly"); + conn->fc_flags |= FC_ERROR; +} + + +static void +full_conn_ci_close (struct lsquic_conn *lconn) +{ + struct full_conn *conn = (struct full_conn *) lconn; + lsquic_stream_t *stream; + struct lsquic_hash_elem *el; + + if (!(conn->fc_flags & FC_CLOSING)) + { + for (el = lsquic_hash_first(conn->fc_pub.all_streams); el; + el = lsquic_hash_next(conn->fc_pub.all_streams)) + { + stream = lsquic_hashelem_getdata(el); + if (!lsquic_stream_is_critical(stream)) + lsquic_stream_maybe_reset(stream, 0, 1); + } + conn->fc_flags |= FC_CLOSING; + if (!(conn->fc_flags & FC_GOAWAY_SENT)) + conn->fc_flags |= FC_SEND_GOAWAY; + lsquic_engine_add_conn_to_tickable(conn->fc_enpub, lconn); + } +} + + +static void +full_conn_ci_going_away (struct lsquic_conn *lconn) +{ + struct full_conn *conn = (struct full_conn *) lconn; + if (!(conn->fc_flags & (FC_CLOSING|FC_GOING_AWAY))) + { + LSQ_INFO("connection marked as going away"); + assert(!(conn->fc_flags & FC_SEND_GOAWAY)); + conn->fc_flags |= FC_GOING_AWAY; + if (!(conn->fc_flags & FC_GOAWAY_SENT)) + { + conn->fc_flags |= FC_SEND_GOAWAY; + lsquic_engine_add_conn_to_tickable(conn->fc_enpub, lconn); + } + } +} + + +/* Find stream when stream ID is read from something other than a STREAM + * frame. If the stream cannot be found or created, the connection is + * aborted. + */ +#if __GNUC__ +__attribute__((nonnull(4))) +#endif +static lsquic_stream_t * +find_stream_on_non_stream_frame (struct full_conn *conn, + lsquic_stream_id_t stream_id, enum stream_ctor_flags stream_ctor_flags, + const char *what) +{ + lsquic_stream_t *stream; + unsigned in_count; + + stream = find_stream_by_id(conn, stream_id); + if (stream) + return stream; + + if (conn_is_stream_closed(conn, stream_id)) + { + LSQ_DEBUG("drop incoming %s for closed stream %"PRIu64, what, stream_id); + return NULL; + } + + /* XXX It seems that if we receive a priority frame for a stream, the + * stream should exist or have existed at some point. Thus, if + * it does not exist, we should return an error here. + */ + + if (!is_peer_initiated(conn, stream_id)) + { + ABORT_ERROR("frame for never-initiated stream (push promise?)"); + return NULL; + } + + in_count = count_streams(conn, 1); + LSQ_DEBUG("number of peer-initiated streams: %u", in_count); + if (in_count >= conn->fc_cfg.max_streams_in) + { + if (!(conn->fc_flags & FC_ABORT_COMPLAINED)) + { + unsigned counts[N_SCNTS]; + collect_stream_counts(conn, 1, counts); + ABORT_WARN("incoming %s for stream %"PRIu64" would exceed " + "limit: %u. all: %u; peer: %u; closed: %u; reset: %u; reset " + "and not closed: %u", + what, stream_id, conn->fc_cfg.max_streams_in, counts[SCNT_ALL], + counts[SCNT_PEER], counts[SCNT_CLOSED], counts[SCNT_RESET], + counts[SCNT_RES_UNCLO]); + } + return NULL; + } + if ((conn->fc_flags & FC_GOING_AWAY) && + stream_id > conn->fc_max_peer_stream_id) + { + maybe_schedule_reset_for_stream(conn, stream_id); + LSQ_DEBUG("going away: reset new incoming stream %"PRIu64, stream_id); + return NULL; + } + + stream = new_stream(conn, stream_id, stream_ctor_flags); + if (!stream) + { + ABORT_ERROR("cannot create new stream: %s", strerror(errno)); + return NULL; + } + if (stream_id > conn->fc_max_peer_stream_id) + conn->fc_max_peer_stream_id = stream_id; + + return stream; +} + + +static void +headers_stream_on_conn_error (void *ctx) +{ + struct full_conn *conn = ctx; + ABORT_ERROR("connection error reported by HEADERS stream"); +} + + +static void +headers_stream_on_stream_error (void *ctx, lsquic_stream_id_t stream_id) +{ + struct full_conn *conn = ctx; + lsquic_stream_t *stream; + + stream = find_stream_on_non_stream_frame(conn, stream_id, SCF_CALL_ON_NEW, + "error"); + if (stream) + { + LSQ_DEBUG("resetting stream %"PRIu64" due to error", stream_id); + /* We use code 1, which is QUIC_INTERNAL_ERROR (see + * [draft-hamilton-quic-transport-protocol-01], Section 10), for all + * errors. There does not seem to be a good reason to figure out + * and send more specific error codes. + */ + lsquic_stream_maybe_reset(stream, 1, 0); + } +} + + +static void +headers_stream_on_enable_push (void *ctx, int enable_push) +{ + struct full_conn *conn = ctx; + if (0 == enable_push) + { + LSQ_DEBUG("server push %d -> 0", !!(conn->fc_flags & FC_SUPPORT_PUSH)); + conn->fc_flags &= ~FC_SUPPORT_PUSH; + } + else if (conn->fc_settings->es_support_push) + { + LSQ_DEBUG("server push %d -> 1", !!(conn->fc_flags & FC_SUPPORT_PUSH)); + conn->fc_flags |= FC_SUPPORT_PUSH; + } + else + LSQ_INFO("not enabling server push that's disabled in engine settings"); +} + + +static void +headers_stream_on_incoming_headers (void *ctx, struct uncompressed_headers *uh) +{ + struct full_conn *conn = ctx; + lsquic_stream_t *stream; + + LSQ_DEBUG("incoming headers for stream %"PRIu64, uh->uh_stream_id); + + stream = find_stream_on_non_stream_frame(conn, uh->uh_stream_id, 0, + "headers"); + if (!stream) + goto free_uh; + + if (lsquic_stream_is_reset(stream)) + { + LSQ_DEBUG("stream is reset: ignore headers"); + goto free_uh; + } + + if (0 != lsquic_stream_uh_in(stream, uh)) + { + ABORT_ERROR("stream %"PRIu64" refused incoming headers", + uh->uh_stream_id); + goto free_uh; + } + + if (!(stream->stream_flags & STREAM_ONNEW_DONE)) + lsquic_stream_call_on_new(stream); + + return; + + free_uh: + if (uh->uh_hset) + conn->fc_enpub->enp_hsi_if->hsi_discard_header_set(uh->uh_hset); + free(uh); +} + + +static void +headers_stream_on_push_promise (void *ctx, struct uncompressed_headers *uh) +{ + struct full_conn *conn = ctx; + lsquic_stream_t *stream; + + assert(!(conn->fc_flags & FC_SERVER)); + + LSQ_DEBUG("push promise for stream %"PRIu64" in response to %"PRIu64, + uh->uh_oth_stream_id, uh->uh_stream_id); + + if (0 == (uh->uh_stream_id & 1) || + 0 != (uh->uh_oth_stream_id & 1)) + { + ABORT_ERROR("invalid push promise stream IDs: %"PRIu64", %"PRIu64, + uh->uh_oth_stream_id, uh->uh_stream_id); + goto free_uh; + } + + if (!(conn_is_stream_closed(conn, uh->uh_stream_id) || + find_stream_by_id(conn, uh->uh_stream_id))) + { + ABORT_ERROR("invalid push promise original stream ID %"PRIu64" never " + "initiated", uh->uh_stream_id); + goto free_uh; + } + + if (conn_is_stream_closed(conn, uh->uh_oth_stream_id) || + find_stream_by_id(conn, uh->uh_oth_stream_id)) + { + ABORT_ERROR("invalid promised stream ID %"PRIu64" already used", + uh->uh_oth_stream_id); + goto free_uh; + } + + stream = new_stream_ext(conn, uh->uh_oth_stream_id, STREAM_IF_STD, + (conn->fc_enpub->enp_settings.es_delay_onclose?SCF_DELAY_ONCLOSE:0)| + SCF_DI_AUTOSWITCH|(conn->fc_enpub->enp_settings.es_rw_once ? + SCF_DISP_RW_ONCE : 0)); + if (!stream) + { + ABORT_ERROR("cannot create stream: %s", strerror(errno)); + goto free_uh; + } + lsquic_stream_push_req(stream, uh); + lsquic_stream_call_on_new(stream); + return; + + free_uh: + if (uh->uh_hset) + conn->fc_enpub->enp_hsi_if->hsi_discard_header_set(uh->uh_hset); + free(uh); +} + + +static void +headers_stream_on_priority (void *ctx, lsquic_stream_id_t stream_id, + int exclusive, lsquic_stream_id_t dep_stream_id, unsigned weight) +{ + struct full_conn *conn = ctx; + lsquic_stream_t *stream; + LSQ_DEBUG("got priority frame for stream %"PRIu64": (ex: %d; dep stream: " + "%"PRIu64"; weight: %u)", stream_id, exclusive, dep_stream_id, weight); + stream = find_stream_on_non_stream_frame(conn, stream_id, SCF_CALL_ON_NEW, + "priority"); + if (stream) + lsquic_stream_set_priority_internal(stream, weight); +} + + +#define STRLEN(s) (sizeof(s) - 1) + +static struct uncompressed_headers * +synthesize_push_request (struct full_conn *conn, void *hset, + lsquic_stream_id_t pushed_stream_id, const lsquic_stream_t *dep_stream) +{ + struct uncompressed_headers *uh; + + assert(hset); + + uh = malloc(sizeof(*uh)); + if (!uh) + return NULL; + + uh->uh_stream_id = pushed_stream_id; + uh->uh_oth_stream_id = 0; /* We don't do dependencies */ + uh->uh_weight = lsquic_stream_priority(dep_stream) / 2 + 1; + uh->uh_exclusive = 0; + uh->uh_flags = UH_FIN; + if (lsquic_http1x_if == conn->fc_enpub->enp_hsi_if) + uh->uh_flags |= UH_H1H; + uh->uh_hset = hset; + uh->uh_next = NULL; + + return uh; +} + + +static int +full_conn_ci_is_push_enabled (struct lsquic_conn *lconn) +{ + struct full_conn *const conn = (struct full_conn *) lconn; + return conn->fc_flags & FC_SUPPORT_PUSH; +} + + +static int +full_conn_ci_push_stream (struct lsquic_conn *lconn, void *hset, + struct lsquic_stream *dep_stream, const struct lsquic_http_headers *headers) +{ + struct full_conn *const conn = (struct full_conn *) lconn; + lsquic_stream_t *pushed_stream; + struct uncompressed_headers *uh; /* We synthesize the request */ + lsquic_stream_id_t stream_id; + int hit_limit; + + if ((conn->fc_flags & (FC_SERVER|FC_HTTP)) != (FC_SERVER|FC_HTTP)) + { + LSQ_ERROR("must be server in HTTP mode to push streams"); + return -1; + } + + if (lsquic_stream_is_pushed(dep_stream)) + { + LSQ_WARN("cannot push stream dependent on another pushed stream " + "(%"PRIu64")", dep_stream->id); + return -1; + } + + if (!(conn->fc_flags & FC_SUPPORT_PUSH)) + { + LSQ_INFO("server push support is disabled"); + return 1; + } + + if (!hset) + { + LSQ_ERROR("header set must be specified when pushing"); + return -1; + } + + hit_limit = 0; + if (either_side_going_away(conn) || + (hit_limit = 1, count_streams(conn, 0) >= conn->fc_cfg.max_streams_out)) + { + LSQ_DEBUG("cannot create pushed stream: %s", hit_limit ? + "hit connection limit" : "connection is going away"); + return 1; + } + + stream_id = generate_stream_id(conn); + uh = synthesize_push_request(conn, hset, stream_id, dep_stream); + if (!uh) + { + ABORT_ERROR("memory allocation failure"); + return -1; + } + + pushed_stream = new_stream(conn, stream_id, 0); + if (!pushed_stream) + { + LSQ_WARN("cannot create stream: %s", strerror(errno)); + free(uh); + return -1; + } + + if (0 != lsquic_stream_uh_in(pushed_stream, uh)) + { + LSQ_WARN("stream barfed when fed synthetic request"); + free(uh); + return -1; + } + + if (0 != lsquic_headers_stream_push_promise(conn->fc_pub.u.gquic.hs, dep_stream->id, + pushed_stream->id, headers)) + { + /* If forget we ever had the hset pointer: */ + lsquic_stream_drop_hset_ref(pushed_stream); + /* Now roll back stream creation and return stream ID: */ + if (pushed_stream->sm_hash_el.qhe_flags & QHE_HASHED) + lsquic_hash_erase(conn->fc_pub.all_streams, + &pushed_stream->sm_hash_el); + lsquic_stream_destroy(pushed_stream); + conn->fc_last_stream_id -= 2; + LSQ_INFO("could not send push promise"); + return -1; + } + + lsquic_stream_call_on_new(pushed_stream); + return 0; +} + + +static void +full_conn_ci_tls_alert (struct lsquic_conn *lconn, uint8_t alert) +{ + assert(0); +} + + +static enum LSQUIC_CONN_STATUS +full_conn_ci_status (struct lsquic_conn *lconn, char *errbuf, size_t bufsz) +{ + struct full_conn *const conn = (struct full_conn *) lconn; + size_t n; + + /* Test the common case first: */ + if (!(conn->fc_flags & (FC_ERROR + |FC_TIMED_OUT + |FC_ABORTED + |FC_GOT_PRST + |FC_HSK_FAILED + |FC_CLOSING + |FC_GOING_AWAY))) + { + if (lconn->cn_flags & LSCONN_PEER_GOING_AWAY) + return LSCONN_ST_PEER_GOING_AWAY; + else if (lconn->cn_flags & LSCONN_HANDSHAKE_DONE) + return LSCONN_ST_CONNECTED; + else + return LSCONN_ST_HSK_IN_PROGRESS; + } + + if (errbuf && bufsz) + { + if (conn->fc_errmsg) + { + n = bufsz < MAX_ERRMSG ? bufsz : MAX_ERRMSG; + strncpy(errbuf, conn->fc_errmsg, n); + errbuf[n - 1] = '\0'; + } + else + errbuf[0] = '\0'; + } + + if (conn->fc_flags & FC_ERROR) + { + if (conn->fc_flags & FC_HSK_FAILED) + return LSCONN_ST_VERNEG_FAILURE; + else + return LSCONN_ST_ERROR; + } + if (conn->fc_flags & FC_TIMED_OUT) + return LSCONN_ST_TIMED_OUT; + if (conn->fc_flags & FC_ABORTED) + return LSCONN_ST_USER_ABORTED; + if (conn->fc_flags & FC_GOT_PRST) + return LSCONN_ST_RESET; + if (conn->fc_flags & FC_HSK_FAILED) + return LSCONN_ST_HSK_FAILURE; + if (conn->fc_flags & FC_CLOSING) + return LSCONN_ST_CLOSED; + assert(conn->fc_flags & FC_GOING_AWAY); + return LSCONN_ST_GOING_AWAY; +} + + +static int +full_conn_ci_is_tickable (lsquic_conn_t *lconn) +{ + struct full_conn *conn = (struct full_conn *) lconn; + struct lsquic_stream *stream; + + if (!TAILQ_EMPTY(&conn->fc_pub.service_streams)) + { + LSQ_DEBUG("tickable: there are streams to be serviced"); + return 1; + } + + if ((conn->fc_enpub->enp_flags & ENPUB_CAN_SEND) + && (should_generate_ack(conn) || + !lsquic_send_ctl_sched_is_blocked(&conn->fc_send_ctl))) + { + const enum full_conn_flags send_flags = FC_SEND_GOAWAY + |FC_SEND_STOP_WAITING|FC_SEND_PING|FC_SEND_WUF; + if (conn->fc_flags & send_flags) + { + LSQ_DEBUG("tickable: flags: 0x%X", conn->fc_flags & send_flags); + goto check_can_send; + } + if (lsquic_send_ctl_has_sendable(&conn->fc_send_ctl)) + { + LSQ_DEBUG("tickable: has sendable packets"); + return 1; /* Don't check can_send: already on scheduled queue */ + } + if ((conn->fc_conn.cn_flags & LSCONN_HANDSHAKE_DONE) + && lsquic_send_ctl_has_buffered(&conn->fc_send_ctl)) + { + LSQ_DEBUG("tickable: has buffered packets"); + goto check_can_send; + } + if (!TAILQ_EMPTY(&conn->fc_pub.sending_streams)) + { + LSQ_DEBUG("tickable: there are sending streams"); + goto check_can_send; + } + if (handshake_done_or_doing_sess_resume(conn)) + { + TAILQ_FOREACH(stream, &conn->fc_pub.write_streams, + next_write_stream) + if (lsquic_stream_write_avail(stream)) + { + LSQ_DEBUG("tickable: stream %"PRIu64" can be written to", + stream->id); + goto check_can_send; + } + } + else + { + TAILQ_FOREACH(stream, &conn->fc_pub.write_streams, + next_write_stream) + if (lsquic_stream_is_crypto(stream) + && lsquic_stream_write_avail(stream)) + { + LSQ_DEBUG("tickable: stream %"PRIu64" can be written to", + stream->id); + goto check_can_send; + } + } + goto check_readable_streams; + check_can_send: + if (lsquic_send_ctl_can_send(&conn->fc_send_ctl)) + return 1; + } + + check_readable_streams: + TAILQ_FOREACH(stream, &conn->fc_pub.read_streams, next_read_stream) + if (lsquic_stream_readable(stream)) + { + LSQ_DEBUG("tickable: stream %"PRIu64" can be read from", + stream->id); + return 1; + } + + if (conn->fc_flags & FC_IMMEDIATE_CLOSE_FLAGS) + { + LSQ_DEBUG("tickable: immediate close flags: 0x%X", + (unsigned) (conn->fc_flags & FC_IMMEDIATE_CLOSE_FLAGS)); + return 1; + } + + LSQ_DEBUG("not tickable"); + return 0; +} + + +static lsquic_time_t +full_conn_ci_next_tick_time (lsquic_conn_t *lconn, unsigned *why) +{ + struct full_conn *conn = (struct full_conn *) lconn; + lsquic_time_t alarm_time, pacer_time, now; + enum alarm_id al_id; + + alarm_time = lsquic_alarmset_mintime(&conn->fc_alset, &al_id); + pacer_time = lsquic_send_ctl_next_pacer_time(&conn->fc_send_ctl); + + if (pacer_time && LSQ_LOG_ENABLED(LSQ_LOG_DEBUG)) + { + now = lsquic_time_now(); + if (pacer_time < now) + LSQ_DEBUG("%s: pacer is %"PRIu64" usec in the past", __func__, + now - pacer_time); + } + + if (alarm_time && pacer_time) + { + if (alarm_time < pacer_time) + { + *why = N_AEWS + al_id; + return alarm_time; + } + else + { + *why = AEW_PACER; + return pacer_time; + } + } + else if (alarm_time) + { + *why = N_AEWS + al_id; + return alarm_time; + } + else if (pacer_time) + { + *why = AEW_PACER; + return pacer_time; + } + else + return 0; +} + + +int +lsquic_gquic_full_conn_srej (struct lsquic_conn *lconn) +{ + struct full_conn *const conn = (struct full_conn *) lconn; + const unsigned cce_idx = lconn->cn_cur_cce_idx; + struct conn_cid_elem *const cce = &lconn->cn_cces[ cce_idx ]; + struct lsquic_stream *stream; + enum lsquic_version version; + + if (lconn->cn_esf_c->esf_is_sess_resume_enabled(conn->fc_conn.cn_enc_session)) + { + /* We need to do this because we do not clean up any data that may + * have been already sent. This is left an optimization for the + * future. + */ + LSQ_DEBUG("received SREJ when 0RTT was on: fail handshake and let " + "caller retry"); + full_conn_ci_hsk_done(lconn, LSQ_HSK_RESUMED_FAIL); + return -1; + } + + LSQ_DEBUG("reinitialize CID and other state due to SREJ"); + + /* Generate new CID and update connections hash */ + if (cce->cce_hash_el.qhe_flags & QHE_HASHED) + { + lsquic_engine_retire_cid(conn->fc_enpub, lconn, cce_idx, + 0 /* OK to omit the `now' value */, 0); + lconn->cn_cces_mask |= 1 << cce_idx; + lsquic_generate_cid_gquic(&cce->cce_cid); + if (0 != lsquic_engine_add_cid(conn->fc_enpub, lconn, cce_idx)) + return -1; + } + else + { + LSQ_DEBUG("not hashed by CID, no need to reinsert"); + lsquic_generate_cid_gquic(&cce->cce_cid); + } + lconn->cn_esf.g->esf_reset_cid(lconn->cn_enc_session, &cce->cce_cid); + + /* Reset version negotiation */ + version = highest_bit_set(conn->fc_orig_versions); + init_ver_neg(conn, conn->fc_orig_versions, &version); + + /* Reset receive history */ + lsquic_rechist_cleanup(&conn->fc_rechist); + lsquic_rechist_init(&conn->fc_rechist, 0, MAX_ACK_RANGES); + + /* Reset send controller state */ + lsquic_send_ctl_cleanup(&conn->fc_send_ctl); + lsquic_send_ctl_init(&conn->fc_send_ctl, &conn->fc_alset, conn->fc_enpub, + &conn->fc_ver_neg, &conn->fc_pub, 0); + + /* Reset handshake stream state */ + stream = find_stream_by_id(conn, hsk_stream_id(conn)); + if (!stream) + return -1; + stream->n_unacked = 0; + stream->tosend_off = 0; + stream->read_offset = 0; + stream->fc.sf_read_off = 0; + stream->fc.sf_max_recv_off = 0; + + lsquic_alarmset_unset(&conn->fc_alset, AL_RETX_APP); + lsquic_alarmset_unset(&conn->fc_alset, AL_ACK_APP); + conn->fc_flags &= ~(FC_ACK_QUEUED|FC_ACK_HAD_MISS|FC_NSTP); + conn->fc_flags |= FC_GOT_SREJ; + + return 0; +} + + +#if LSQUIC_CONN_STATS +static const struct conn_stats * +full_conn_ci_get_stats (struct lsquic_conn *lconn) +{ + struct full_conn *conn = (struct full_conn *) lconn; + return &conn->fc_stats; +} + + +#include "lsquic_cong_ctl.h" + +static void +full_conn_ci_log_stats (struct lsquic_conn *lconn) +{ + struct full_conn *conn = (struct full_conn *) lconn; + struct batch_size_stats *const bs = &conn->fc_enpub->enp_batch_size_stats; + struct conn_stats diff_stats; + uint64_t cwnd; + char cidstr[MAX_CID_LEN * 2 + 1]; + + if (!conn->fc_last_stats) + { + conn->fc_last_stats = calloc(1, sizeof(*conn->fc_last_stats)); + if (!conn->fc_last_stats) + return; + LSQ_DEBUG("allocated last stats"); + } + + cwnd = conn->fc_send_ctl.sc_ci->cci_get_cwnd( + conn->fc_send_ctl.sc_cong_ctl); + lsquic_conn_stats_diff(&conn->fc_stats, conn->fc_last_stats, &diff_stats); + lsquic_logger_log1(LSQ_LOG_NOTICE, LSQLM_CONN_STATS, + "%s: ticks: %lu; cwnd: %"PRIu64"; conn flow: max: %"PRIu64 + ", avail: %"PRIu64"; packets: sent: %lu, lost: %lu, retx: %lu, rcvd: %lu" + "; batch: count: %u; min: %u; max: %u; avg: %.2f", + (lsquic_cid2str(LSQUIC_LOG_CONN_ID, cidstr), cidstr), + diff_stats.n_ticks, cwnd, + conn->fc_pub.conn_cap.cc_max, + lsquic_conn_cap_avail(&conn->fc_pub.conn_cap), + diff_stats.out.packets, diff_stats.out.lost_packets, + diff_stats.out.retx_packets, diff_stats.in.packets, + bs->count, bs->min, bs->max, bs->avg); + + *conn->fc_last_stats = conn->fc_stats; + memset(bs, 0, sizeof(*bs)); +} + + +#endif + + +static const struct headers_stream_callbacks headers_callbacks = +{ + .hsc_on_headers = headers_stream_on_incoming_headers, + .hsc_on_push_promise = headers_stream_on_push_promise, + .hsc_on_priority = headers_stream_on_priority, + .hsc_on_stream_error = headers_stream_on_stream_error, + .hsc_on_conn_error = headers_stream_on_conn_error, + .hsc_on_enable_push = headers_stream_on_enable_push, +}; + +static const struct headers_stream_callbacks *headers_callbacks_ptr = &headers_callbacks; + +static const struct conn_iface full_conn_iface = { + .ci_abort = full_conn_ci_abort, + .ci_abort_error = full_conn_ci_abort_error, + .ci_ack_rollback = full_conn_ci_ack_rollback, + .ci_ack_snapshot = full_conn_ci_ack_snapshot, + .ci_can_write_ack = full_conn_ci_can_write_ack, + .ci_cancel_pending_streams + = full_conn_ci_cancel_pending_streams, + .ci_client_call_on_new = full_conn_ci_client_call_on_new, + .ci_close = full_conn_ci_close, + .ci_destroy = full_conn_ci_destroy, + .ci_get_stream_by_id = full_conn_ci_get_stream_by_id, + .ci_get_engine = full_conn_ci_get_engine, + .ci_get_path = full_conn_ci_get_path, +#if LSQUIC_CONN_STATS + .ci_get_stats = full_conn_ci_get_stats, + .ci_log_stats = full_conn_ci_log_stats, +#endif + .ci_going_away = full_conn_ci_going_away, + .ci_hsk_done = full_conn_ci_hsk_done, + .ci_internal_error = full_conn_ci_internal_error, + .ci_is_push_enabled = full_conn_ci_is_push_enabled, + .ci_is_tickable = full_conn_ci_is_tickable, + .ci_make_stream = full_conn_ci_make_stream, + .ci_n_avail_streams = full_conn_ci_n_avail_streams, + .ci_n_pending_streams = full_conn_ci_n_pending_streams, + .ci_next_packet_to_send = full_conn_ci_next_packet_to_send, + .ci_next_tick_time = full_conn_ci_next_tick_time, + .ci_packet_in = full_conn_ci_packet_in, + .ci_packet_not_sent = full_conn_ci_packet_not_sent, + .ci_packet_sent = full_conn_ci_packet_sent, + .ci_record_addrs = full_conn_ci_record_addrs, + /* gQUIC connection does not need this functionality because it only + * uses one CID and it's liveness is updated automatically by the + * caller when packets come in. + */ + .ci_report_live = NULL, + .ci_status = full_conn_ci_status, + .ci_tick = full_conn_ci_tick, + .ci_write_ack = full_conn_ci_write_ack, + .ci_push_stream = full_conn_ci_push_stream, + .ci_tls_alert = full_conn_ci_tls_alert, +}; + +static const struct conn_iface *full_conn_iface_ptr = &full_conn_iface; diff --git a/external/lsquic/src/liblsquic/lsquic_full_conn.h b/external/lsquic/src/liblsquic/lsquic_full_conn.h new file mode 100644 index 0000000..f2e514e --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_full_conn.h @@ -0,0 +1,60 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_FULL_CONN_H +#define LSQUIC_FULL_CONN_H + +struct lsquic_conn; +struct lsquic_engine_public; + +struct lsquic_conn * +lsquic_gquic_full_conn_client_new (struct lsquic_engine_public *, + unsigned versions, + unsigned flags /* Only FC_SERVER and FC_HTTP */, + const char *hostname, unsigned short max_packet_size, + int is_ipv4, + const unsigned char *sess_resume, size_t sess_resume_len); + +struct lsquic_conn * +lsquic_ietf_full_conn_client_new (struct lsquic_engine_public *, + unsigned versions, + unsigned flags /* Only FC_SERVER and FC_HTTP */, + const char *hostname, unsigned short base_plpmtu, int is_ipv4, + const unsigned char *sess_resume, size_t, + const unsigned char *token, size_t, void* peer_ctx); + +typedef struct lsquic_conn * +(*server_conn_ctor_f) (struct lsquic_engine_public *, + unsigned flags /* Only FC_SERVER and FC_HTTP */, + struct lsquic_conn *mini_conn); + +struct lsquic_conn * +lsquic_gquic_full_conn_server_new (struct lsquic_engine_public *, + unsigned flags /* Only FC_SERVER and FC_HTTP */, + struct lsquic_conn *mini_conn); + +struct lsquic_conn * +lsquic_ietf_full_conn_server_new (struct lsquic_engine_public *, + unsigned flags /* Only FC_SERVER and FC_HTTP */, + struct lsquic_conn *mini_conn); + +struct dcid_elem +{ + /* This is never both in the hash and on the retirement list */ + union { + struct lsquic_hash_elem hash_el; + TAILQ_ENTRY(dcid_elem) next_to_ret; + } de_u; +#define de_hash_el de_u.hash_el +#define de_next_to_ret de_u.next_to_ret + lsquic_cid_t de_cid; + unsigned de_seqno; + enum { + DE_SRST = 1 << 0, /* de_srst is set */ + DE_ASSIGNED = 1 << 1, /* de_cid has been assigned to a path */ + } de_flags; + unsigned char de_srst[IQUIC_SRESET_TOKEN_SZ]; +}; + +int +lsquic_gquic_full_conn_srej (struct lsquic_conn *); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_full_conn_ietf.c b/external/lsquic/src/liblsquic/lsquic_full_conn_ietf.c new file mode 100644 index 0000000..de32fe8 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_full_conn_ietf.c @@ -0,0 +1,10012 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_full_conn_ietf.c -- IETF QUIC connection. + */ + +#include +#include +#include +#define _USE_MATH_DEFINES /* Need this for M_E on Windows */ +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "fiu-local.h" + +#include "lsquic.h" +#include "lsxpack_header.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_attq.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_ietf.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_hash.h" +#include "lsquic_cong_ctl.h" +#include "lsquic_conn.h" +#include "lsquic_rechist.h" +#include "lsquic_senhist.h" +#include "lsquic_cubic.h" +#include "lsquic_pacer.h" +#include "lsquic_sfcw.h" +#include "lsquic_conn_flow.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_stream.h" +#include "lsquic_rtt.h" +#include "lsquic_conn_public.h" +#include "lsquic_bw_sampler.h" +#include "lsquic_minmax.h" +#include "lsquic_bbr.h" +#include "lsquic_adaptive_cc.h" +#include "lsquic_send_ctl.h" +#include "lsquic_alarmset.h" +#include "lsquic_ver_neg.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_set.h" +#include "lsquic_sizes.h" +#include "lsquic_trans_params.h" +#include "lsquic_version.h" +#include "lsquic_parse.h" +#include "lsquic_util.h" +#include "lsquic_enc_sess.h" +#include "lsquic_ev_log.h" +#include "lsquic_malo.h" +#include "lsquic_frab_list.h" +#include "lsquic_hcso_writer.h" +#include "lsquic_hcsi_reader.h" +#include "lsqpack.h" +#include "lsquic_http1x_if.h" +#include "lsquic_qenc_hdl.h" +#include "lsquic_qdec_hdl.h" +#include "lsquic_trechist.h" +#include "lsquic_mini_conn_ietf.h" +#include "lsquic_tokgen.h" +#include "lsquic_full_conn.h" +#include "lsquic_spi.h" +#include "lsquic_min_heap.h" +#include "lsquic_hpi.h" +#include "lsquic_ietf.h" +#include "lsquic_push_promise.h" +#include "lsquic_headers.h" +#include "lsquic_crand.h" +#include "ls-sfparser.h" +#include "lsquic_qpack_exp.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_CONN +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(&conn->ifc_conn) +#include "lsquic_logger.h" + +#define MAX_RETR_PACKETS_SINCE_LAST_ACK 2 +#define MAX_ANY_PACKETS_SINCE_LAST_ACK 20 +#define ACK_TIMEOUT (TP_DEF_MAX_ACK_DELAY * 1000) +#define INITIAL_CHAL_TIMEOUT 250000 +#define HSK_PING_TIMEOUT 200000 + +/* Retire original CID after this much time has elapsed: */ +#define RET_CID_TIMEOUT 2000000 + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define MAX(a, b) ((a) > (b) ? (a) : (b)) + +/* IETF QUIC push promise does not contain stream ID. This means that, unlike + * in GQUIC, one cannot create a stream immediately and pass it to the client. + * We may have to add a special API for IETF push promises. That's in the + * future: right now, we punt it. + */ +#define CLIENT_PUSH_SUPPORT 0 + + + +/* IMPORTANT: Keep values of IFC_SERVER and IFC_HTTP same as LSENG_SERVER + * and LSENG_HTTP. + */ +enum ifull_conn_flags +{ + IFC_SERVER = LSENG_SERVER, /* Server mode */ + IFC_HTTP = LSENG_HTTP, /* HTTP mode */ + IFC_ACK_HAD_MISS = 1 << 2, +#define IFC_BIT_ERROR 3 + IFC_ERROR = 1 << IFC_BIT_ERROR, + IFC_TIMED_OUT = 1 << 4, + IFC_ABORTED = 1 << 5, + IFC_HSK_FAILED = 1 << 6, + IFC_GOING_AWAY = 1 << 7, + IFC_CLOSING = 1 << 8, /* Closing */ + IFC_RECV_CLOSE = 1 << 9, /* Received CONNECTION_CLOSE frame */ + IFC_TICK_CLOSE = 1 << 10, /* We returned TICK_CLOSE */ + IFC_CREATED_OK = 1 << 11, + IFC_HAVE_SAVED_ACK= 1 << 12, + IFC_ABORT_COMPLAINED + = 1 << 13, + IFC_DCID_SET = 1 << 14, +#define IFCBIT_ACK_QUED_SHIFT 15 + IFC_ACK_QUED_INIT = 1 << 15, + IFC_ACK_QUED_HSK = IFC_ACK_QUED_INIT << PNS_HSK, + IFC_ACK_QUED_APP = IFC_ACK_QUED_INIT << PNS_APP, +#define IFC_ACK_QUEUED (IFC_ACK_QUED_INIT|IFC_ACK_QUED_HSK|IFC_ACK_QUED_APP) + IFC_HAVE_PEER_SET = 1 << 18, + IFC_GOT_PRST = 1 << 19, + IFC_IGNORE_INIT = 1 << 20, + IFC_RETRIED = 1 << 21, + IFC_SWITCH_DCID = 1 << 22, /* Perform DCID switch when a new CID becomes available */ + IFC_GOAWAY_CLOSE = 1 << 23, + IFC_FIRST_TICK = 1 << 24, + IFC_IGNORE_HSK = 1 << 25, + IFC_PROC_CRYPTO = 1 << 26, + IFC_MIGRA = 1 << 27, + IFC_HTTP_INITED = 1 << 28, /* HTTP initialized */ + IFC_DELAYED_ACKS = 1 << 29, /* Delayed ACKs are enabled */ + IFC_TIMESTAMPS = 1 << 30, /* Timestamps are enabled */ + IFC_DATAGRAMS = 1u<< 31, /* Datagrams are enabled */ +}; + + +enum more_flags +{ + MF_VALIDATE_PATH = 1 << 0, + MF_NOPROG_TIMEOUT = 1 << 1, + MF_CHECK_MTU_PROBE = 1 << 2, + MF_IGNORE_MISSING = 1 << 3, + MF_CONN_CLOSE_PACK = 1 << 4, /* CONNECTION_CLOSE has been packetized */ + MF_SEND_WRONG_COUNTS= 1 << 5, /* Send wrong ECN counts to peer */ + MF_WANT_DATAGRAM_WRITE = 1 << 6, + MF_DOING_0RTT = 1 << 7, + MF_HAVE_HCSI = 1 << 8, /* Have HTTP Control Stream Incoming */ +}; + + +#define N_PATHS 4 + +enum send +{ + /* PATH_CHALLENGE and PATH_RESPONSE frames are not retransmittable. They + * are positioned first in the enum to optimize packetization. + */ + SEND_PATH_CHAL, + SEND_PATH_CHAL_PATH_0 = SEND_PATH_CHAL + 0, + SEND_PATH_CHAL_PATH_1 = SEND_PATH_CHAL + 1, + SEND_PATH_CHAL_PATH_2 = SEND_PATH_CHAL + 2, + SEND_PATH_CHAL_PATH_3 = SEND_PATH_CHAL + 3, + SEND_PATH_RESP, + SEND_PATH_RESP_PATH_0 = SEND_PATH_RESP + 0, + SEND_PATH_RESP_PATH_1 = SEND_PATH_RESP + 1, + SEND_PATH_RESP_PATH_2 = SEND_PATH_RESP + 2, + SEND_PATH_RESP_PATH_3 = SEND_PATH_RESP + 3, + SEND_MAX_DATA, + SEND_PING, + SEND_NEW_CID, + SEND_RETIRE_CID, + SEND_CONN_CLOSE, + SEND_STREAMS_BLOCKED, + SEND_STREAMS_BLOCKED_BIDI = SEND_STREAMS_BLOCKED + SD_BIDI, + SEND_STREAMS_BLOCKED_UNI = SEND_STREAMS_BLOCKED + SD_UNI, + SEND_MAX_STREAMS, + SEND_MAX_STREAMS_BIDI = SEND_MAX_STREAMS + SD_BIDI, + SEND_MAX_STREAMS_UNI = SEND_MAX_STREAMS + SD_UNI, + SEND_STOP_SENDING, + SEND_NEW_TOKEN, + SEND_HANDSHAKE_DONE, + SEND_ACK_FREQUENCY, + N_SEND +}; + +enum send_flags +{ + SF_SEND_MAX_DATA = 1 << SEND_MAX_DATA, + SF_SEND_PING = 1 << SEND_PING, + SF_SEND_PATH_CHAL = 1 << SEND_PATH_CHAL, + SF_SEND_PATH_CHAL_PATH_0 = 1 << SEND_PATH_CHAL_PATH_0, + SF_SEND_PATH_CHAL_PATH_1 = 1 << SEND_PATH_CHAL_PATH_1, + SF_SEND_PATH_CHAL_PATH_2 = 1 << SEND_PATH_CHAL_PATH_2, + SF_SEND_PATH_CHAL_PATH_3 = 1 << SEND_PATH_CHAL_PATH_3, + SF_SEND_PATH_RESP = 1 << SEND_PATH_RESP, + SF_SEND_PATH_RESP_PATH_0 = 1 << SEND_PATH_RESP_PATH_0, + SF_SEND_PATH_RESP_PATH_1 = 1 << SEND_PATH_RESP_PATH_1, + SF_SEND_PATH_RESP_PATH_2 = 1 << SEND_PATH_RESP_PATH_2, + SF_SEND_PATH_RESP_PATH_3 = 1 << SEND_PATH_RESP_PATH_3, + SF_SEND_NEW_CID = 1 << SEND_NEW_CID, + SF_SEND_RETIRE_CID = 1 << SEND_RETIRE_CID, + SF_SEND_CONN_CLOSE = 1 << SEND_CONN_CLOSE, + SF_SEND_STREAMS_BLOCKED = 1 << SEND_STREAMS_BLOCKED, + SF_SEND_STREAMS_BLOCKED_BIDI = 1 << SEND_STREAMS_BLOCKED_BIDI, + SF_SEND_STREAMS_BLOCKED_UNI = 1 << SEND_STREAMS_BLOCKED_UNI, + SF_SEND_MAX_STREAMS = 1 << SEND_MAX_STREAMS, + SF_SEND_MAX_STREAMS_BIDI = 1 << SEND_MAX_STREAMS_BIDI, + SF_SEND_MAX_STREAMS_UNI = 1 << SEND_MAX_STREAMS_UNI, + SF_SEND_STOP_SENDING = 1 << SEND_STOP_SENDING, + SF_SEND_NEW_TOKEN = 1 << SEND_NEW_TOKEN, + SF_SEND_HANDSHAKE_DONE = 1 << SEND_HANDSHAKE_DONE, + SF_SEND_ACK_FREQUENCY = 1 << SEND_ACK_FREQUENCY, +}; + +#define SF_SEND_PATH_CHAL_ALL \ + (((SF_SEND_PATH_CHAL << N_PATHS) - 1) & ~(SF_SEND_PATH_CHAL - 1)) + +#define IFC_IMMEDIATE_CLOSE_FLAGS \ + (IFC_TIMED_OUT|IFC_ERROR|IFC_ABORTED|IFC_HSK_FAILED|IFC_GOT_PRST) + +#define MAX_ERRMSG 256 + +#define MAX_SCID 8 + +#define SET_ERRMSG(conn, ...) do { \ + if (!(conn)->ifc_errmsg) \ + { \ + (conn)->ifc_errmsg = malloc(MAX_ERRMSG); \ + if ((conn)->ifc_errmsg) \ + snprintf((conn)->ifc_errmsg, MAX_ERRMSG, __VA_ARGS__); \ + } \ +} while (0) + +#define ABORT_WITH_FLAG(conn, log_level, flag, ...) do { \ + SET_ERRMSG(conn, __VA_ARGS__); \ + if (!((conn)->ifc_flags & IFC_ABORT_COMPLAINED)) \ + LSQ_LOG(log_level, "Abort connection: " __VA_ARGS__); \ + (conn)->ifc_flags |= flag|IFC_ABORT_COMPLAINED; \ +} while (0) + +#define ABORT_ERROR(...) \ + ABORT_WITH_FLAG(conn, LSQ_LOG_ERROR, IFC_ERROR, __VA_ARGS__) +#define ABORT_WARN(...) \ + ABORT_WITH_FLAG(conn, LSQ_LOG_WARN, IFC_ERROR, __VA_ARGS__) + +#define CONN_ERR(app_error_, code_) (struct conn_err) { \ + .app_error = (app_error_), .u.err = (code_), } + +/* Use this for protocol errors; they do not need to be as loud as our own + * internal errors. + */ +#define ABORT_QUIETLY(app_error, code, ...) do { \ + conn->ifc_error = CONN_ERR(app_error, code); \ + ABORT_WITH_FLAG(conn, LSQ_LOG_INFO, IFC_ERROR, __VA_ARGS__); \ +} while (0) + + +static enum stream_id_type +gen_sit (unsigned server, enum stream_dir sd) +{ + return (server > 0) | ((sd > 0) << SD_SHIFT); +} + + +struct stream_id_to_ss +{ + STAILQ_ENTRY(stream_id_to_ss) sits_next; + lsquic_stream_id_t sits_stream_id; + enum http_error_code sits_error_code; +}; + +struct http_ctl_stream_in +{ + struct hcsi_reader reader; +}; + +struct conn_err +{ + int app_error; + union + { + enum trans_error_code tec; + enum http_error_code hec; + unsigned err; + } u; +}; + + +struct dplpmtud_state +{ + lsquic_packno_t ds_probe_packno; +#ifndef NDEBUG + lsquic_time_t ds_probe_sent; +#endif + enum { + DS_PROBE_SENT = 1 << 0, + } ds_flags; + unsigned short ds_probed_size, + ds_failed_size; /* If non-zero, defines ceiling */ + unsigned char ds_probe_count; +}; + + +struct conn_path +{ + struct network_path cop_path; + uint64_t cop_path_chals[8]; /* Arbitrary number */ + uint64_t cop_inc_chal; /* Incoming challenge */ + lsquic_packno_t cop_max_packno; + enum { + /* Initialized covers cop_path.np_pack_size and cop_path.np_dcid */ + COP_INITIALIZED = 1 << 0, + /* This flag is set when we received a response to one of path + * challenges we sent on this path. + */ + COP_VALIDATED = 1 << 1, + /* Received non-probing frames. This flag is not set for the + * original path. + */ + COP_GOT_NONPROB = 1 << 2, + /* Spin bit is enabled on this path. */ + COP_SPIN_BIT = 1 << 3, + /* Allow padding packet to 1200 bytes */ + COP_ALLOW_MTU_PADDING = 1 << 4, + /* Verified that the path MTU is at least 1200 bytes */ + COP_VALIDATED_MTU = 1 << 5, + /* This path is retired */ + COP_RETIRED = 1 << 6, + } cop_flags; + unsigned char cop_n_chals; + unsigned char cop_cce_idx; + unsigned char cop_spin_bit; + struct dplpmtud_state cop_dplpmtud; +}; + + +struct packet_tolerance_stats +{ + unsigned n_acks; /* Number of ACKs between probes */ + float integral_error; + lsquic_time_t last_sample; +}; + + +union prio_iter +{ + struct stream_prio_iter spi; + struct http_prio_iter hpi; +}; + + +struct prio_iter_if +{ + void (*pii_init) (void *, struct lsquic_stream *first, + struct lsquic_stream *last, uintptr_t next_ptr_offset, + struct lsquic_conn_public *, const char *name, + int (*filter)(void *filter_ctx, struct lsquic_stream *), + void *filter_ctx); + + struct lsquic_stream * (*pii_first) (void *); + + struct lsquic_stream * (*pii_next) (void *); + + void (*pii_drop_non_high) (void *); + + void (*pii_drop_high) (void *); + + void (*pii_cleanup) (void *); +}; + + +static const struct prio_iter_if orig_prio_iter_if = { + lsquic_spi_init, + lsquic_spi_first, + lsquic_spi_next, + lsquic_spi_drop_non_high, + lsquic_spi_drop_high, + lsquic_spi_cleanup, +}; + + +static const struct prio_iter_if ext_prio_iter_if = { + lsquic_hpi_init, + lsquic_hpi_first, + lsquic_hpi_next, + lsquic_hpi_drop_non_high, + lsquic_hpi_drop_high, + lsquic_hpi_cleanup, +}; + + +struct ietf_full_conn +{ + struct lsquic_conn ifc_conn; + struct conn_cid_elem ifc_cces[MAX_SCID]; + struct lsquic_rechist ifc_rechist[N_PNS]; + /* App PNS only, used to calculate was_missing: */ + lsquic_packno_t ifc_max_ackable_packno_in; + struct lsquic_send_ctl ifc_send_ctl; + struct lsquic_conn_public ifc_pub; + lsquic_alarmset_t ifc_alset; + struct lsquic_set64 ifc_closed_stream_ids[N_SITS]; + lsquic_stream_id_t ifc_n_created_streams[N_SDS]; + /* Not including the value stored in ifc_max_allowed_stream_id: */ + lsquic_stream_id_t ifc_max_allowed_stream_id[N_SITS]; + uint64_t ifc_closed_peer_streams[N_SDS]; + /* Maximum number of open stream initiated by peer: */ + unsigned ifc_max_streams_in[N_SDS]; + uint64_t ifc_max_stream_data_uni; + enum ifull_conn_flags ifc_flags; + enum more_flags ifc_mflags; + enum send_flags ifc_send_flags; + enum send_flags ifc_delayed_send; + struct { + uint64_t streams_blocked[N_SDS]; + } ifc_send; + struct conn_err ifc_error; + unsigned ifc_n_delayed_streams; + unsigned ifc_n_cons_unretx; + const struct prio_iter_if *ifc_pii; + char *ifc_errmsg; + struct lsquic_engine_public + *ifc_enpub; + const struct lsquic_engine_settings + *ifc_settings; + STAILQ_HEAD(, stream_id_to_ss) + ifc_stream_ids_to_ss; + lsquic_time_t ifc_created; + lsquic_time_t ifc_saved_ack_received; + lsquic_packno_t ifc_max_ack_packno[N_PNS]; + lsquic_packno_t ifc_max_non_probing; + struct { + uint64_t max_stream_send; + uint8_t ack_exp; + } ifc_cfg; + int (*ifc_process_incoming_packet)( + struct ietf_full_conn *, + struct lsquic_packet_in *); + /* Number ackable packets received since last ACK was sent: */ + unsigned ifc_n_slack_akbl[N_PNS]; + unsigned ifc_n_slack_all; /* App PNS only */ + unsigned ifc_max_retx_since_last_ack; + unsigned short ifc_max_udp_payload; /* Cached TP */ + lsquic_time_t ifc_max_ack_delay; + uint64_t ifc_ecn_counts_in[N_PNS][4]; + lsquic_stream_id_t ifc_max_req_id; + struct hcso_writer ifc_hcso; + struct http_ctl_stream_in ifc_hcsi; + struct qpack_enc_hdl ifc_qeh; + struct qpack_dec_hdl ifc_qdh; + struct { + uint64_t header_table_size, + qpack_blocked_streams; + } ifc_peer_hq_settings; + struct dcid_elem *ifc_dces[MAX_IETF_CONN_DCIDS]; + TAILQ_HEAD(, dcid_elem) ifc_to_retire; + unsigned ifc_n_to_retire; + unsigned ifc_scid_seqno; + lsquic_time_t ifc_scid_timestamp[MAX_SCID]; + /* Last 8 packets had ECN markings? */ + uint8_t ifc_incoming_ecn; + unsigned char ifc_cur_path_id; /* Indexes ifc_paths */ + unsigned char ifc_used_paths; /* Bitmask */ + unsigned char ifc_mig_path_id; + /* ifc_active_cids_limit is the maximum number of CIDs at any one time this + * endpoint is allowed to issue to peer. If the TP value exceeds cn_n_cces, + * it is reduced to it. ifc_active_cids_count tracks how many CIDs have + * been issued. It is decremented each time a CID is retired. + */ + unsigned char ifc_active_cids_limit; + unsigned char ifc_active_cids_count; + unsigned char ifc_first_active_cid_seqno; + unsigned char ifc_ping_unretx_thresh; + unsigned ifc_last_retire_prior_to; + unsigned ifc_ack_freq_seqno; + unsigned ifc_last_pack_tol; + unsigned ifc_last_calc_pack_tol; +#if LSQUIC_CONN_STATS + unsigned ifc_min_pack_tol_sent; + unsigned ifc_max_pack_tol_sent; +#endif + unsigned ifc_max_ack_freq_seqno; /* Incoming */ + unsigned short ifc_min_dg_sz, + ifc_max_dg_sz; + lsquic_time_t ifc_last_live_update; + struct conn_path ifc_paths[N_PATHS]; + union { + struct { + struct lsquic_stream *crypto_streams[N_ENC_LEVS]; + struct ver_neg + ifcli_ver_neg; + uint64_t ifcli_max_push_id; + uint64_t ifcli_min_goaway_stream_id; + enum { + IFCLI_PUSH_ENABLED = 1 << 0, + IFCLI_HSK_SENT_OR_DEL = 1 << 1, + } ifcli_flags; + unsigned ifcli_packets_out; + } cli; + struct { + uint64_t ifser_max_push_id; + uint64_t ifser_next_push_id; + enum { + IFSER_PUSH_ENABLED = 1 << 0, + IFSER_MAX_PUSH_ID = 1 << 1, /* ifser_max_push_id is set */ + } ifser_flags; + } ser; + } ifc_u; + lsquic_time_t ifc_idle_to; + lsquic_time_t ifc_ping_period; + struct lsquic_hash *ifc_bpus; + uint64_t ifc_last_max_data_off_sent; + struct packet_tolerance_stats + ifc_pts; +#if LSQUIC_CONN_STATS + struct conn_stats ifc_stats, + *ifc_last_stats; +#endif + struct ack_info ifc_ack; +}; + +#define CUR_CPATH(conn_) (&(conn_)->ifc_paths[(conn_)->ifc_cur_path_id]) +#define CUR_NPATH(conn_) (&(CUR_CPATH(conn_)->cop_path)) +#define CUR_DCID(conn_) (&(CUR_NPATH(conn_)->np_dcid)) + +#define DCES_END(conn_) ((conn_)->ifc_dces + (sizeof((conn_)->ifc_dces) \ + / sizeof((conn_)->ifc_dces[0]))) + +#define NPATH2CPATH(npath_) ((struct conn_path *) \ + ((char *) (npath_) - offsetof(struct conn_path, cop_path))) + +#if LSQUIC_CONN_STATS +#define CONN_STATS(what_, count_) do { \ + conn->ifc_stats.what_ += (count_); \ +} while (0) +#else +#define CONN_STATS(what_, count_) +#endif + +static const struct ver_neg server_ver_neg; + +static const struct conn_iface *ietf_full_conn_iface_ptr; +static const struct conn_iface *ietf_full_conn_prehsk_iface_ptr; + +static int +process_incoming_packet_verneg (struct ietf_full_conn *, + struct lsquic_packet_in *); + +static int +process_incoming_packet_fast (struct ietf_full_conn *, + struct lsquic_packet_in *); + +static void +ietf_full_conn_ci_packet_in (struct lsquic_conn *, struct lsquic_packet_in *); + +static int +handshake_ok (struct lsquic_conn *); + +static void +ignore_init (struct ietf_full_conn *); + +static void +ignore_hsk (struct ietf_full_conn *); + +static unsigned +ietf_full_conn_ci_n_avail_streams (const struct lsquic_conn *); + +static void +ietf_full_conn_ci_destroy (struct lsquic_conn *); + +static int +insert_new_dcid (struct ietf_full_conn *, uint64_t seqno, + const lsquic_cid_t *, const unsigned char *token, int update_cur_dcid); + +static struct conn_cid_elem * +find_cce_by_cid (struct ietf_full_conn *, const lsquic_cid_t *); + +static void +mtu_probe_too_large (struct ietf_full_conn *, const struct lsquic_packet_out *); + +static int +apply_trans_params (struct ietf_full_conn *, const struct transport_params *); + +static void +packet_tolerance_alarm_expired (enum alarm_id al_id, void *ctx, + lsquic_time_t expiry, lsquic_time_t now); + +static int +init_http (struct ietf_full_conn *); + +static unsigned +highest_bit_set (unsigned sz) +{ +#if __GNUC__ + unsigned clz = __builtin_clz(sz); + return 31 - clz; +#else + unsigned n, y; + n = 32; + y = sz >> 16; if (y) { n -= 16; sz = y; } + y = sz >> 8; if (y) { n -= 8; sz = y; } + y = sz >> 4; if (y) { n -= 4; sz = y; } + y = sz >> 2; if (y) { n -= 2; sz = y; } + y = sz >> 1; if (y) return 31 - n + 2; + return 31 - n + sz; +#endif +} + + +static void +set_versions (struct ietf_full_conn *conn, unsigned versions, + enum lsquic_version *ver) +{ + conn->ifc_u.cli.ifcli_ver_neg.vn_supp = versions; + conn->ifc_u.cli.ifcli_ver_neg.vn_ver = (ver) ? *ver : highest_bit_set(versions); + conn->ifc_u.cli.ifcli_ver_neg.vn_buf = lsquic_ver2tag(conn->ifc_u.cli.ifcli_ver_neg.vn_ver); + conn->ifc_conn.cn_version = conn->ifc_u.cli.ifcli_ver_neg.vn_ver; +} + + +static void +init_ver_neg (struct ietf_full_conn *conn, unsigned versions, + enum lsquic_version *ver) +{ + set_versions(conn, versions, ver); + conn->ifc_u.cli.ifcli_ver_neg.vn_tag = &conn->ifc_u.cli.ifcli_ver_neg.vn_buf; + conn->ifc_u.cli.ifcli_ver_neg.vn_state = VN_START; +} + + +static void +ack_alarm_expired (enum alarm_id al_id, void *ctx, lsquic_time_t expiry, + lsquic_time_t now) +{ + struct ietf_full_conn *conn = ctx; + assert(al_id == AL_ACK_APP); + LSQ_DEBUG("%s ACK timer expired (%"PRIu64" < %"PRIu64"): ACK queued", + lsquic_pns2str[PNS_APP], expiry, now); + conn->ifc_flags |= IFC_ACK_QUED_APP; +} + + +static void +idle_alarm_expired (enum alarm_id al_id, void *ctx, lsquic_time_t expiry, + lsquic_time_t now) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) ctx; + + if ((conn->ifc_mflags & MF_NOPROG_TIMEOUT) + && conn->ifc_pub.last_prog + conn->ifc_enpub->enp_noprog_timeout < now) + { + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "connection timed out due to " + "lack of progress"); + /* Different flag so that CONNECTION_CLOSE frame is sent */ + ABORT_QUIETLY(0, TEC_APPLICATION_ERROR, + "connection timed out due to lack of progress"); + } + else + { + LSQ_DEBUG("connection timed out"); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "connection timed out"); + conn->ifc_flags |= IFC_TIMED_OUT; + } +} + + +static void +handshake_alarm_expired (enum alarm_id al_id, void *ctx, + lsquic_time_t expiry, lsquic_time_t now) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) ctx; + LSQ_DEBUG("connection timed out: handshake timed out"); + conn->ifc_flags |= IFC_TIMED_OUT; +} + + +/* + * When this alarm expires, at least one SCID slot shoud be available + * for generation. + */ +static void +cid_throt_alarm_expired (enum alarm_id al_id, void *ctx, + lsquic_time_t expiry, lsquic_time_t now) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) ctx; + LSQ_DEBUG("%s", __func__); + conn->ifc_send_flags |= SF_SEND_NEW_CID; + return; +} + + +static void +wipe_path (struct ietf_full_conn *conn, unsigned path_id) +{ + void *peer_ctx = conn->ifc_paths[path_id].cop_path.np_peer_ctx; + memset(&conn->ifc_paths[path_id], 0, sizeof(conn->ifc_paths[0])); + conn->ifc_paths[path_id].cop_path.np_path_id = path_id; + conn->ifc_paths[path_id].cop_path.np_peer_ctx = peer_ctx; + conn->ifc_used_paths &= ~(1 << path_id); +} + + +static void +path_chal_alarm_expired (enum alarm_id al_id, void *ctx, + lsquic_time_t expiry, lsquic_time_t now) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) ctx; + const unsigned path_id = al_id - AL_PATH_CHAL; + struct conn_path *const copath = &conn->ifc_paths[path_id]; + + if (copath->cop_n_chals < sizeof(copath->cop_path_chals) + / sizeof(copath->cop_path_chals[0])) + { + LSQ_DEBUG("path #%u challenge expired, schedule another one", path_id); + conn->ifc_send_flags |= SF_SEND_PATH_CHAL << path_id; + } + else if (conn->ifc_cur_path_id != path_id) + { + LSQ_INFO("migration to path #%u failed after none of %u path " + "challenges received responses", path_id, copath->cop_n_chals); + /* There may be a lingering challenge if its generation is delayed */ + lsquic_send_ctl_cancel_path_verification(&conn->ifc_send_ctl, + &copath->cop_path); + wipe_path(conn, path_id); + } + else + LSQ_INFO("no path challenge responses on current path %u, stop " + "sending path challenges", path_id); +} + + +/* Sending DATA_BLOCKED and STREAM_DATA_BLOCKED frames is a way to elicit + * incoming packets from peer when it is too slow to read data. This is + * recommended by [draft-ietf-quic-transport-25] Section 4.1. + * + * If we are still in the blocked state, we schedule a blocked frame to + * be sent. + */ +static void +blocked_ka_alarm_expired (enum alarm_id al_id, void *ctx, + lsquic_time_t expiry, lsquic_time_t now) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) ctx; + struct lsquic_stream *stream; + struct lsquic_hash_elem *el; + int has_send_flag; + + if (lsquic_conn_cap_avail(&conn->ifc_pub.conn_cap) == 0) + { + LSQ_DEBUG("set SEND_BLOCKED flag on connection"); + conn->ifc_conn.cn_flags |= LSCONN_SEND_BLOCKED; + return; + } + + for (el = lsquic_hash_first(conn->ifc_pub.all_streams); el; + el = lsquic_hash_next(conn->ifc_pub.all_streams)) + { + stream = lsquic_hashelem_getdata(el); + if (lsquic_stream_is_blocked(stream) + && !lsquic_stream_is_write_reset(stream)) + { + has_send_flag = (stream->sm_qflags & SMQF_SENDING_FLAGS); + stream->sm_qflags |= SMQF_SEND_BLOCKED; + LSQ_DEBUG("set SEND_BLOCKED flag on stream %"PRIu64, stream->id); + if (!lsquic_sendctl_gen_stream_blocked_frame( + stream->conn_pub->send_ctl, stream)) + { + LSQ_DEBUG("failed to send STREAM_BLOCKED frame for" + " stream %"PRIu64 " immedately, postpone.", stream->id); + if (!has_send_flag) + TAILQ_INSERT_TAIL(&conn->ifc_pub.sending_streams, stream, + next_send_stream); + } + return; + } + } +} + + +static void +mtu_probe_alarm_expired (enum alarm_id al_id, void *ctx, + lsquic_time_t expiry, lsquic_time_t now) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) ctx; + + LSQ_DEBUG("MTU probe alarm expired: set `check MTU probe' flag"); + assert(!(conn->ifc_mflags & MF_CHECK_MTU_PROBE)); + conn->ifc_mflags |= MF_CHECK_MTU_PROBE; +} + + +static int +migra_is_on (const struct ietf_full_conn *conn, unsigned path_id) +{ + return (conn->ifc_send_flags & (SF_SEND_PATH_CHAL << path_id)) + || lsquic_alarmset_is_set(&conn->ifc_alset, AL_PATH_CHAL + path_id); +} + + +#define TRANSPORT_OVERHEAD(is_ipv6) (((is_ipv6) ? 40 : 20) + 8 /* UDP */) + +static unsigned short +calc_base_packet_size (const struct ietf_full_conn *conn, int is_ipv6) +{ + unsigned short size; + + if (conn->ifc_settings->es_base_plpmtu) + size = conn->ifc_settings->es_base_plpmtu; + else if (is_ipv6) + size = IQUIC_MAX_IPv6_PACKET_SZ; + else + size = IQUIC_MAX_IPv4_PACKET_SZ; + + return size; +} + + +static void +migra_begin (struct ietf_full_conn *conn, struct conn_path *copath, + struct dcid_elem *dce, const struct sockaddr *dest_sa, + const struct transport_params *params) +{ + assert(!(migra_is_on(conn, copath - conn->ifc_paths))); + + dce->de_flags |= DE_ASSIGNED; + copath->cop_flags |= COP_INITIALIZED; + copath->cop_path.np_dcid = dce->de_cid; + copath->cop_path.np_peer_ctx = CUR_NPATH(conn)->np_peer_ctx; + copath->cop_path.np_pack_size + = calc_base_packet_size(conn, NP_IS_IPv6(CUR_NPATH(conn))); + if (conn->ifc_max_udp_payload < copath->cop_path.np_pack_size) + copath->cop_path.np_pack_size = conn->ifc_max_udp_payload; + memcpy(&copath->cop_path.np_local_addr, NP_LOCAL_SA(CUR_NPATH(conn)), + sizeof(copath->cop_path.np_local_addr)); + memcpy(&copath->cop_path.np_peer_addr, dest_sa, + sizeof(copath->cop_path.np_peer_addr)); + + conn->ifc_mig_path_id = copath - conn->ifc_paths; + conn->ifc_used_paths |= 1 << conn->ifc_mig_path_id; + conn->ifc_send_flags |= SF_SEND_PATH_CHAL << conn->ifc_mig_path_id; + LSQ_DEBUG("Schedule migration to path %hhu: will send PATH_CHALLENGE", + conn->ifc_mig_path_id); +} + + +static void +ping_alarm_expired (enum alarm_id al_id, void *ctx, lsquic_time_t expiry, + lsquic_time_t now) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) ctx; + LSQ_DEBUG("Ping alarm rang: schedule PING frame to be generated"); + conn->ifc_send_flags |= SF_SEND_PING; +} + + +static void +retire_cid (struct ietf_full_conn *, struct conn_cid_elem *, lsquic_time_t); + + +static void +log_scids (const struct ietf_full_conn *conn) +{ + const struct lsquic_conn *const lconn = &conn->ifc_conn; + const struct conn_cid_elem *cce; + char flags[5]; + unsigned idx; + int fi; + + LSQ_DEBUG("Log SCID array: (n_cces %hhu; mask: 0x%hhX; " + "active: %hhu; limit: %hhu)", + conn->ifc_conn.cn_n_cces, conn->ifc_conn.cn_cces_mask, + conn->ifc_active_cids_count, conn->ifc_active_cids_limit); + for (cce = lconn->cn_cces; cce < END_OF_CCES(lconn); ++cce) + { + idx = cce - lconn->cn_cces; + fi = 0; + if (cce->cce_flags & CCE_PORT) flags[fi++] = 'p'; + if (cce->cce_flags & CCE_REG) flags[fi++] = 'r'; + if (cce->cce_flags & CCE_SEQNO) flags[fi++] = 's'; + if (cce->cce_flags & CCE_USED) flags[fi++] = 'u'; + flags[fi] = '\0'; + if (lconn->cn_cces_mask & (1 << idx)) + { + if (cce->cce_flags & CCE_PORT) + LSQ_DEBUG( " %u: flags %-4s; port %hu", idx, flags, + cce->cce_port); + else if (cce->cce_flags & CCE_SEQNO) + LSQ_DEBUGC(" %u: flags %-4s; seqno: %u; %"CID_FMT, idx, + flags, cce->cce_seqno, CID_BITS(&cce->cce_cid)); + else + LSQ_DEBUGC(" %u: flags %-4s; %"CID_FMT, idx, flags, + CID_BITS(&cce->cce_cid)); + } + else + LSQ_DEBUG( " %u: flags %-4s; ", idx, flags); + } +} + + +#define LOG_SCIDS(conn_) do { \ + if (LSQ_LOG_ENABLED(LSQ_LOG_DEBUG)) \ + log_scids(conn_); \ +} while (0) + + +static void +ret_cids_alarm_expired (enum alarm_id al_id, void *ctx, lsquic_time_t expiry, + lsquic_time_t now) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) ctx; + struct lsquic_conn *const lconn = &conn->ifc_conn; + struct conn_cid_elem *cce; + unsigned idx; + + LSQ_DEBUG("The 'retire original CIDs' alarm rang"); + + for (cce = lconn->cn_cces; cce < END_OF_CCES(lconn); ++cce) + { + idx = cce - lconn->cn_cces; + if ((lconn->cn_cces_mask & (1 << idx)) + && (cce->cce_flags & (CCE_SEQNO|CCE_PORT)) == 0) + { + LSQ_DEBUG("retiring original CID at index %u", idx); + retire_cid(conn, cce, now); + } + } + LOG_SCIDS(conn); +} + + +static ssize_t +crypto_stream_write (void *stream, const void *buf, size_t len) +{ + return lsquic_stream_write(stream, buf, len); +} + + +static int +crypto_stream_flush (void *stream) +{ + return lsquic_stream_flush(stream); +} + + +static ssize_t +crypto_stream_readf (void *stream, + size_t (*readf)(void *, const unsigned char *, size_t, int), void *ctx) +{ + return lsquic_stream_readf(stream, readf, ctx); +} + + +static int +crypto_stream_wantwrite (void *stream, int is_want) +{ + return lsquic_stream_wantwrite(stream, is_want); +} + + +static int +crypto_stream_wantread (void *stream, int is_want) +{ + return lsquic_stream_wantread(stream, is_want); +} + + +static enum enc_level +crypto_stream_enc_level (void *streamp) +{ + const struct lsquic_stream *stream = streamp; + return crypto_level(stream); +} + + +static const struct crypto_stream_if crypto_stream_if = +{ + .csi_write = crypto_stream_write, + .csi_flush = crypto_stream_flush, + .csi_readf = crypto_stream_readf, + .csi_wantwrite = crypto_stream_wantwrite, + .csi_wantread = crypto_stream_wantread, + .csi_enc_level = crypto_stream_enc_level, +}; + + +static const struct lsquic_stream_if *unicla_if_ptr; + + +static lsquic_stream_id_t +generate_stream_id (struct ietf_full_conn *conn, enum stream_dir sd) +{ + lsquic_stream_id_t id; + + id = conn->ifc_n_created_streams[sd]++; + return id << SIT_SHIFT + | sd << SD_SHIFT + | !!(conn->ifc_flags & IFC_SERVER) + ; +} + + +static lsquic_stream_id_t +avail_streams_count (const struct ietf_full_conn *conn, int server, + enum stream_dir sd) +{ + enum stream_id_type sit; + lsquic_stream_id_t max_count; + + sit = gen_sit(server, sd); + max_count = conn->ifc_max_allowed_stream_id[sit] >> SIT_SHIFT; + LSQ_DEBUG("sit-%u streams: max count: %"PRIu64"; created streams: %"PRIu64, + sit, max_count, conn->ifc_n_created_streams[sd]); + if (max_count >= conn->ifc_n_created_streams[sd]) + return max_count - conn->ifc_n_created_streams[sd]; + else + { + assert(0); + return 0; + } +} + + +/* If `priority' is negative, this means that the stream is critical */ +static int +create_uni_stream_out (struct ietf_full_conn *conn, int priority, + const struct lsquic_stream_if *stream_if, void *stream_if_ctx) +{ + struct lsquic_stream *stream; + lsquic_stream_id_t stream_id; + + stream_id = generate_stream_id(conn, SD_UNI); + stream = lsquic_stream_new(stream_id, &conn->ifc_pub, stream_if, + stream_if_ctx, 0, conn->ifc_max_stream_data_uni, + SCF_IETF | (priority < 0 ? SCF_CRITICAL : 0)); + if (!stream) + return -1; + if (!lsquic_hash_insert(conn->ifc_pub.all_streams, &stream->id, + sizeof(stream->id), stream, &stream->sm_hash_el)) + { + lsquic_stream_destroy(stream); + return -1; + } + if (priority >= 0) + lsquic_stream_set_priority_internal(stream, priority); + else + ++conn->ifc_pub.n_special_streams; + lsquic_stream_call_on_new(stream); + return 0; +} + + +static int +create_ctl_stream_out (struct ietf_full_conn *conn) +{ + return create_uni_stream_out(conn, -1, + lsquic_hcso_writer_if, &conn->ifc_hcso); +} + + +static int +create_qenc_stream_out (struct ietf_full_conn *conn) +{ + return create_uni_stream_out(conn, -1, + lsquic_qeh_enc_sm_out_if, &conn->ifc_qeh); +} + + +static int +create_qdec_stream_out (struct ietf_full_conn *conn) +{ + return create_uni_stream_out(conn, -1, + lsquic_qdh_dec_sm_out_if, &conn->ifc_qdh); +} + + +static int +create_bidi_stream_out (struct ietf_full_conn *conn) +{ + struct lsquic_stream *stream; + lsquic_stream_id_t stream_id; + enum stream_ctor_flags flags; + + flags = SCF_IETF|SCF_DI_AUTOSWITCH; + if (conn->ifc_enpub->enp_settings.es_rw_once) + flags |= SCF_DISP_RW_ONCE; + if (conn->ifc_enpub->enp_settings.es_delay_onclose) + flags |= SCF_DELAY_ONCLOSE; + if (conn->ifc_flags & IFC_HTTP) + { + flags |= SCF_HTTP; + if (conn->ifc_pii == &ext_prio_iter_if) + flags |= SCF_HTTP_PRIO; + } + + stream_id = generate_stream_id(conn, SD_BIDI); + stream = lsquic_stream_new(stream_id, &conn->ifc_pub, + conn->ifc_enpub->enp_stream_if, + conn->ifc_enpub->enp_stream_if_ctx, + conn->ifc_settings->es_init_max_stream_data_bidi_local, + conn->ifc_cfg.max_stream_send, flags); + if (!stream) + return -1; + if (!lsquic_hash_insert(conn->ifc_pub.all_streams, &stream->id, + sizeof(stream->id), stream, &stream->sm_hash_el)) + { + lsquic_stream_destroy(stream); + return -1; + } + lsquic_stream_call_on_new(stream); + return 0; +} + + +static struct lsquic_stream * +create_push_stream (struct ietf_full_conn *conn) +{ + struct lsquic_stream *stream; + lsquic_stream_id_t stream_id; + enum stream_ctor_flags flags; + + assert((conn->ifc_flags & (IFC_SERVER|IFC_HTTP)) == (IFC_SERVER|IFC_HTTP)); + + flags = SCF_IETF|SCF_HTTP; + if (conn->ifc_enpub->enp_settings.es_rw_once) + flags |= SCF_DISP_RW_ONCE; + if (conn->ifc_enpub->enp_settings.es_delay_onclose) + flags |= SCF_DELAY_ONCLOSE; + + stream_id = generate_stream_id(conn, SD_UNI); + stream = lsquic_stream_new(stream_id, &conn->ifc_pub, + conn->ifc_enpub->enp_stream_if, + conn->ifc_enpub->enp_stream_if_ctx, + conn->ifc_settings->es_init_max_stream_data_bidi_local, + conn->ifc_cfg.max_stream_send, flags); + if (!stream) + return NULL; + if (!lsquic_hash_insert(conn->ifc_pub.all_streams, &stream->id, + sizeof(stream->id), stream, &stream->sm_hash_el)) + { + lsquic_stream_destroy(stream); + return NULL; + } + return stream; +} + + +/* This function looks through the SCID array searching for an available + * slot. If it finds an available slot it will + * 1. generate an SCID, + * 2. mark with latest seqno, + * 3. increment seqno, + * 4. turn on CCE_SEQNO flag, + * 5. turn on flag given through flag paramter, + * 6. add cce to mask, and + * 7. add timestamp for when slot is new available for CID generation. + */ +static struct conn_cid_elem * +ietf_full_conn_add_scid (struct ietf_full_conn *conn, + struct lsquic_engine_public *enpub, + enum conn_cce_flags flags, + lsquic_time_t now) +{ + struct conn_cid_elem *cce; + struct lsquic_conn *lconn = &conn->ifc_conn; + lsquic_time_t *min_timestamp; + int i; + + if (enpub->enp_settings.es_scid_len) + { + for (cce = lconn->cn_cces; cce < END_OF_CCES(lconn); ++cce) + if (!(lconn->cn_cces_mask & (1 << (cce - lconn->cn_cces)))) + break; + } + else if (0 == lconn->cn_cces_mask) + cce = lconn->cn_cces; + else + cce = END_OF_CCES(lconn); + + if (cce >= END_OF_CCES(lconn)) + { + LSQ_LOG1(LSQ_LOG_DEBUG, "cannot find slot for new SCID"); + return NULL; + } + + if (enpub->enp_settings.es_scid_len) + { + cce->cce_cid.len = enpub->enp_settings.es_scid_len; + enpub->enp_generate_scid(enpub->enp_gen_scid_ctx, lconn, + cce->cce_cid.buf, cce->cce_cid.len); + } + + cce->cce_seqno = conn->ifc_scid_seqno++; + cce->cce_flags |= CCE_SEQNO | flags; + lconn->cn_cces_mask |= 1 << (cce - lconn->cn_cces); + ++conn->ifc_active_cids_count; + if (enpub->enp_settings.es_scid_iss_rate) + { + min_timestamp = &conn->ifc_scid_timestamp[0]; + for (i = 1; i < lconn->cn_n_cces; i++) + if (conn->ifc_scid_timestamp[i] < *min_timestamp) + min_timestamp = &conn->ifc_scid_timestamp[i]; + *min_timestamp = now; + } + LSQ_LOG1C(LSQ_LOG_DEBUG, "generated and assigned SCID %"CID_FMT, + CID_BITS(&cce->cce_cid)); + return cce; +} + + +/* From [draft-ietf-quic-transport-25] Section 17.3.1: + * " endpoints MUST disable their use of the spin bit for a random selection + * " of at least one in every 16 network paths, or for one in every 16 + * " connection IDs. + */ +static void +maybe_enable_spin (struct ietf_full_conn *conn, struct conn_path *cpath) +{ + uint8_t nyb; + + if (conn->ifc_settings->es_spin + && lsquic_crand_get_nybble(conn->ifc_enpub->enp_crand)) + { + cpath->cop_flags |= COP_SPIN_BIT; + cpath->cop_spin_bit = 0; + LSQ_DEBUG("spin bit enabled on path %hhu", cpath->cop_path.np_path_id); + } + else + { + /* " It is RECOMMENDED that endpoints set the spin bit to a random + * " value either chosen independently for each packet or chosen + * " independently for each connection ID. + * (ibid.) + */ + cpath->cop_flags &= ~COP_SPIN_BIT; + nyb = lsquic_crand_get_nybble(conn->ifc_enpub->enp_crand); + cpath->cop_spin_bit = nyb & 1; + LSQ_DEBUG("spin bit disabled %s on path %hhu; random spin bit " + "value is %hhu", + !conn->ifc_settings->es_spin ? "via settings" : "randomly", + cpath->cop_path.np_path_id, cpath->cop_spin_bit); + } +} + + +static int +ietf_full_conn_init (struct ietf_full_conn *conn, + struct lsquic_engine_public *enpub, unsigned flags, int ecn) +{ + if (flags & IFC_SERVER) + conn->ifc_conn.cn_if = ietf_full_conn_iface_ptr; + else + conn->ifc_conn.cn_if = ietf_full_conn_prehsk_iface_ptr; + if (enpub->enp_settings.es_scid_len) + assert(CN_SCID(&conn->ifc_conn)->len); + conn->ifc_enpub = enpub; + conn->ifc_settings = &enpub->enp_settings; + conn->ifc_pub.lconn = &conn->ifc_conn; + conn->ifc_pub.send_ctl = &conn->ifc_send_ctl; + conn->ifc_pub.enpub = enpub; + conn->ifc_pub.mm = &enpub->enp_mm; +#if LSQUIC_CONN_STATS + conn->ifc_pub.conn_stats = &conn->ifc_stats; +#endif + conn->ifc_pub.path = CUR_NPATH(conn); + TAILQ_INIT(&conn->ifc_pub.sending_streams); + TAILQ_INIT(&conn->ifc_pub.read_streams); + TAILQ_INIT(&conn->ifc_pub.write_streams); + TAILQ_INIT(&conn->ifc_pub.service_streams); + STAILQ_INIT(&conn->ifc_stream_ids_to_ss); + TAILQ_INIT(&conn->ifc_to_retire); + conn->ifc_n_to_retire = 0; + + lsquic_alarmset_init(&conn->ifc_alset, &conn->ifc_conn); + lsquic_alarmset_init_alarm(&conn->ifc_alset, AL_IDLE, idle_alarm_expired, conn); + lsquic_alarmset_init_alarm(&conn->ifc_alset, AL_ACK_APP, ack_alarm_expired, conn); + lsquic_alarmset_init_alarm(&conn->ifc_alset, AL_PING, ping_alarm_expired, conn); + lsquic_alarmset_init_alarm(&conn->ifc_alset, AL_HANDSHAKE, handshake_alarm_expired, conn); + lsquic_alarmset_init_alarm(&conn->ifc_alset, AL_CID_THROT, cid_throt_alarm_expired, conn); + lsquic_alarmset_init_alarm(&conn->ifc_alset, AL_PATH_CHAL_0, path_chal_alarm_expired, conn); + lsquic_alarmset_init_alarm(&conn->ifc_alset, AL_PATH_CHAL_1, path_chal_alarm_expired, conn); + lsquic_alarmset_init_alarm(&conn->ifc_alset, AL_PATH_CHAL_2, path_chal_alarm_expired, conn); + lsquic_alarmset_init_alarm(&conn->ifc_alset, AL_PATH_CHAL_3, path_chal_alarm_expired, conn); + lsquic_alarmset_init_alarm(&conn->ifc_alset, AL_BLOCKED_KA, blocked_ka_alarm_expired, conn); + lsquic_alarmset_init_alarm(&conn->ifc_alset, AL_MTU_PROBE, mtu_probe_alarm_expired, conn); + /* For Init and Handshake, we don't expect many ranges at all. For + * the regular receive history, set limit to a value that would never + * be reached under normal circumstances, yet small enough that would + * use little memory when under attack and be robust (fast). The + * value 1000 limits receive history to about 16KB. + */ + lsquic_rechist_init(&conn->ifc_rechist[PNS_INIT], 1, 10); + lsquic_rechist_init(&conn->ifc_rechist[PNS_HSK], 1, 10); + lsquic_rechist_init(&conn->ifc_rechist[PNS_APP], 1, 1000); + lsquic_send_ctl_init(&conn->ifc_send_ctl, &conn->ifc_alset, enpub, + flags & IFC_SERVER ? &server_ver_neg : &conn->ifc_u.cli.ifcli_ver_neg, + &conn->ifc_pub, SC_IETF|SC_NSTP|(ecn ? SC_ECN : 0)); + lsquic_cfcw_init(&conn->ifc_pub.cfcw, &conn->ifc_pub, + conn->ifc_settings->es_init_max_data); + conn->ifc_pub.all_streams = lsquic_hash_create(); + if (!conn->ifc_pub.all_streams) + return -1; + conn->ifc_pub.u.ietf.qeh = &conn->ifc_qeh; + conn->ifc_pub.u.ietf.qdh = &conn->ifc_qdh; + conn->ifc_pub.u.ietf.hcso = &conn->ifc_hcso; + + conn->ifc_peer_hq_settings.header_table_size = HQ_DF_QPACK_MAX_TABLE_CAPACITY; + conn->ifc_peer_hq_settings.qpack_blocked_streams = HQ_DF_QPACK_BLOCKED_STREAMS; + + conn->ifc_flags = flags | IFC_FIRST_TICK; + conn->ifc_max_ack_packno[PNS_INIT] = IQUIC_INVALID_PACKNO; + conn->ifc_max_ack_packno[PNS_HSK] = IQUIC_INVALID_PACKNO; + conn->ifc_max_ack_packno[PNS_APP] = IQUIC_INVALID_PACKNO; + conn->ifc_max_ackable_packno_in = 0; + conn->ifc_paths[0].cop_path.np_path_id = 0; + conn->ifc_paths[1].cop_path.np_path_id = 1; + conn->ifc_paths[2].cop_path.np_path_id = 2; + conn->ifc_paths[3].cop_path.np_path_id = 3; +#define valid_stream_id(v) ((v) <= VINT_MAX_VALUE) + conn->ifc_max_req_id = VINT_MAX_VALUE + 1; + conn->ifc_ping_unretx_thresh = 20; + conn->ifc_max_retx_since_last_ack = MAX_RETR_PACKETS_SINCE_LAST_ACK; + conn->ifc_max_ack_delay = ACK_TIMEOUT; + if (conn->ifc_settings->es_noprogress_timeout) + conn->ifc_mflags |= MF_NOPROG_TIMEOUT; + if (conn->ifc_settings->es_ext_http_prio) + conn->ifc_pii = &ext_prio_iter_if; + else + conn->ifc_pii = &orig_prio_iter_if; + return 0; +} + + +struct lsquic_conn * +lsquic_ietf_full_conn_client_new (struct lsquic_engine_public *enpub, + unsigned versions, unsigned flags, + const char *hostname, unsigned short base_plpmtu, int is_ipv4, + const unsigned char *sess_resume, size_t sess_resume_sz, + const unsigned char *token, size_t token_sz, void* peer_ctx) +{ + const struct transport_params *params; + const struct enc_session_funcs_iquic *esfi; + struct ietf_full_conn *conn; + enum lsquic_version ver, sess_resume_version; + lsquic_time_t now; + + conn = calloc(1, sizeof(*conn)); + if (!conn) + goto err0; + now = lsquic_time_now(); + /* Set the flags early so that correct CID is used for logging */ + conn->ifc_conn.cn_flags |= LSCONN_IETF; + conn->ifc_conn.cn_cces = conn->ifc_cces; + conn->ifc_conn.cn_n_cces = sizeof(conn->ifc_cces) + / sizeof(conn->ifc_cces[0]); + if (!ietf_full_conn_add_scid(conn, enpub, CCE_USED, now)) + goto err1; + conn->ifc_conn.cn_logid = *CN_SCID(&conn->ifc_conn); + assert(versions); + versions &= LSQUIC_IETF_VERSIONS; + if (versions & (1 << LSQVER_I001)) + ver = LSQVER_I001; + else + ver = highest_bit_set(versions); + if (sess_resume) + { + sess_resume_version = lsquic_sess_resume_version(sess_resume, sess_resume_sz); + if (sess_resume_version < N_LSQVER && ((1 << sess_resume_version) & versions)) + ver = sess_resume_version; + } + esfi = &lsquic_enc_session_iquic_ietf_v1; + + if (0 != ietf_full_conn_init(conn, enpub, flags, + enpub->enp_settings.es_ecn)) + goto err2; + + if (base_plpmtu) + conn->ifc_paths[0].cop_path.np_pack_size + = base_plpmtu - TRANSPORT_OVERHEAD(!is_ipv4); + else + conn->ifc_paths[0].cop_path.np_pack_size + = calc_base_packet_size(conn, !is_ipv4); + + if (token) + { + if (0 != lsquic_send_ctl_set_token(&conn->ifc_send_ctl, token, + token_sz)) + goto err2; + } + + /* Do not infer anything about server limits before processing its + * transport parameters. + */ + conn->ifc_max_streams_in[SD_BIDI] = enpub->enp_settings.es_max_streams_in; + conn->ifc_max_allowed_stream_id[SIT_BIDI_SERVER] = + enpub->enp_settings.es_max_streams_in << SIT_SHIFT; + + if (flags & IFC_HTTP) + { + if (enpub->enp_settings.es_support_push && CLIENT_PUSH_SUPPORT) + conn->ifc_max_streams_in[SD_UNI] + = MAX(3, enpub->enp_settings.es_max_streams_in); + else + conn->ifc_max_streams_in[SD_UNI] = 3; + } + else + conn->ifc_max_streams_in[SD_UNI] = enpub->enp_settings.es_max_streams_in; + conn->ifc_max_allowed_stream_id[SIT_UNI_SERVER] + = conn->ifc_max_streams_in[SD_UNI] << SIT_SHIFT; + + init_ver_neg(conn, versions, &ver); + assert(ver == conn->ifc_u.cli.ifcli_ver_neg.vn_ver); + if (conn->ifc_settings->es_handshake_to) + lsquic_alarmset_set(&conn->ifc_alset, AL_HANDSHAKE, + lsquic_time_now() + conn->ifc_settings->es_handshake_to); + conn->ifc_idle_to = conn->ifc_settings->es_idle_timeout * 1000000; + if (conn->ifc_idle_to) + lsquic_alarmset_set(&conn->ifc_alset, AL_IDLE, now + conn->ifc_idle_to); + if (enpub->enp_settings.es_support_push && CLIENT_PUSH_SUPPORT) + { + conn->ifc_u.cli.ifcli_flags |= IFCLI_PUSH_ENABLED; + conn->ifc_u.cli.ifcli_max_push_id = 100; + LSQ_DEBUG("push enabled: set MAX_PUSH_ID to %"PRIu64, + conn->ifc_u.cli.ifcli_max_push_id); + } + conn->ifc_conn.cn_pf = select_pf_by_ver(ver); + conn->ifc_conn.cn_esf_c = &lsquic_enc_session_common_ietf_v1; + conn->ifc_conn.cn_esf.i = esfi; + lsquic_generate_cid(CUR_DCID(conn), 0); + conn->ifc_conn.cn_enc_session = + conn->ifc_conn.cn_esf.i->esfi_create_client(hostname, + conn->ifc_enpub, &conn->ifc_conn, CUR_DCID(conn), + &conn->ifc_u.cli.ifcli_ver_neg, + (void **) conn->ifc_u.cli.crypto_streams, &crypto_stream_if, + sess_resume, sess_resume_sz, &conn->ifc_alset, + conn->ifc_max_streams_in[SD_UNI], peer_ctx); + if (!conn->ifc_conn.cn_enc_session) + goto err2; + + conn->ifc_u.cli.crypto_streams[ENC_LEV_INIT] = lsquic_stream_new_crypto( + ENC_LEV_INIT, &conn->ifc_pub, &lsquic_cry_sm_if, + conn->ifc_conn.cn_enc_session, + SCF_IETF|SCF_DI_AUTOSWITCH|SCF_CALL_ON_NEW|SCF_CRITICAL); + if (!conn->ifc_u.cli.crypto_streams[ENC_LEV_INIT]) + goto err3; + if (!lsquic_stream_get_ctx(conn->ifc_u.cli.crypto_streams[ENC_LEV_INIT])) + goto err4; + conn->ifc_pub.packet_out_malo = + lsquic_malo_create(sizeof(struct lsquic_packet_out)); + if (!conn->ifc_pub.packet_out_malo) + goto err4; + conn->ifc_flags |= IFC_PROC_CRYPTO; + + LSQ_DEBUG("negotiating version %s", + lsquic_ver2str[conn->ifc_u.cli.ifcli_ver_neg.vn_ver]); + conn->ifc_process_incoming_packet = process_incoming_packet_verneg; + conn->ifc_created = now; + LSQ_DEBUG("logging using client SCID"); + if (sess_resume && (params + = conn->ifc_conn.cn_esf.i->esfi_get_peer_transport_params( + conn->ifc_conn.cn_enc_session), params != NULL)) + { + LSQ_DEBUG("initializing transport parameters for 0RTT"); + if (0 != apply_trans_params(conn, params)) + goto full_err; + if ((conn->ifc_flags & IFC_HTTP) && 0 != init_http(conn)) + goto full_err; + conn->ifc_mflags |= MF_DOING_0RTT; + } + conn->ifc_flags |= IFC_CREATED_OK; + return &conn->ifc_conn; + + err4: + lsquic_stream_destroy(conn->ifc_u.cli.crypto_streams[ENC_LEV_INIT]); + err3: + conn->ifc_conn.cn_esf.i->esfi_destroy(conn->ifc_conn.cn_enc_session); + err2: + lsquic_send_ctl_cleanup(&conn->ifc_send_ctl); + if (conn->ifc_pub.all_streams) + lsquic_hash_destroy(conn->ifc_pub.all_streams); + err1: + free(conn); + err0: + return NULL; + + full_err: + ietf_full_conn_ci_destroy(&conn->ifc_conn); + return NULL; +} + + +typedef char mini_conn_does_not_have_more_cces[ + sizeof(((struct ietf_mini_conn *)0)->imc_cces) + <= sizeof(((struct ietf_full_conn *)0)->ifc_cces) ? 1 : -1]; + +struct lsquic_conn * +lsquic_ietf_full_conn_server_new (struct lsquic_engine_public *enpub, + unsigned flags, struct lsquic_conn *mini_conn) +{ + struct ietf_mini_conn *const imc = (void *) mini_conn; + struct ietf_full_conn *conn; + struct lsquic_packet_out *packet_out; + struct lsquic_packet_in *packet_in; + struct conn_cid_elem *cce; + lsquic_packno_t next_packno; + lsquic_time_t now; + enum packnum_space pns; + unsigned i; + struct ietf_mini_rechist mini_rechist; + + conn = calloc(1, sizeof(*conn)); + if (!conn) + goto err0; + now = lsquic_time_now(); + conn->ifc_conn.cn_cces = conn->ifc_cces; + conn->ifc_conn.cn_n_cces = sizeof(conn->ifc_cces) + / sizeof(conn->ifc_cces[0]); + assert(conn->ifc_conn.cn_n_cces >= mini_conn->cn_n_cces); + conn->ifc_conn.cn_cur_cce_idx = mini_conn->cn_cur_cce_idx; + conn->ifc_conn.cn_cces_mask = mini_conn->cn_cces_mask; + for (cce = mini_conn->cn_cces, i = 0; cce < END_OF_CCES(mini_conn); + ++cce, ++i) + if ((1 << (cce - mini_conn->cn_cces)) & mini_conn->cn_cces_mask) + { + conn->ifc_conn.cn_cces[i].cce_cid = cce->cce_cid; + conn->ifc_conn.cn_cces[i].cce_flags = cce->cce_flags; + if (cce->cce_flags & CCE_SEQNO) + { + if (cce->cce_seqno > conn->ifc_scid_seqno) + conn->ifc_scid_seqno = cce->cce_seqno; + conn->ifc_conn.cn_cces[i].cce_seqno = cce->cce_seqno; + ++conn->ifc_active_cids_count; + } + conn->ifc_scid_timestamp[i] = now; + } + ++conn->ifc_scid_seqno; + conn->ifc_conn.cn_logid = mini_conn->cn_logid; + /* Set the flags early so that correct CID is used for logging */ + conn->ifc_conn.cn_flags |= LSCONN_IETF | LSCONN_SERVER; + + if (0 != ietf_full_conn_init(conn, enpub, flags, + lsquic_mini_conn_ietf_ecn_ok(imc))) + goto err1; + conn->ifc_pub.packet_out_malo = + lsquic_malo_create(sizeof(struct lsquic_packet_out)); + if (!conn->ifc_pub.packet_out_malo) + goto err1; + if (imc->imc_flags & IMC_IGNORE_INIT) + conn->ifc_flags |= IFC_IGNORE_INIT; + if (enpub->enp_settings.es_support_srej) + conn->ifc_send_flags |= SF_SEND_NEW_TOKEN; + + conn->ifc_paths[0].cop_path = imc->imc_path; + conn->ifc_paths[0].cop_flags = COP_VALIDATED|COP_INITIALIZED|COP_ALLOW_MTU_PADDING; + conn->ifc_used_paths = 1 << 0; + maybe_enable_spin(conn, &conn->ifc_paths[0]); + if (imc->imc_flags & IMC_ADDR_VALIDATED) + lsquic_send_ctl_path_validated(&conn->ifc_send_ctl); + else + conn->ifc_mflags |= MF_VALIDATE_PATH; + conn->ifc_pub.bytes_out = imc->imc_bytes_out; + conn->ifc_pub.bytes_in = imc->imc_bytes_in; + if (imc->imc_flags & IMC_PATH_CHANGED) + { + LSQ_DEBUG("path changed during mini conn: schedule PATH_CHALLENGE"); + conn->ifc_send_flags |= SF_SEND_PATH_CHAL_PATH_0; + } + + conn->ifc_max_streams_in[SD_BIDI] + = enpub->enp_settings.es_init_max_streams_bidi; + conn->ifc_max_allowed_stream_id[SIT_BIDI_CLIENT] + = conn->ifc_max_streams_in[SD_BIDI] << SIT_SHIFT; + conn->ifc_max_streams_in[SD_UNI] + = enpub->enp_settings.es_init_max_streams_uni; + conn->ifc_max_allowed_stream_id[SIT_UNI_CLIENT] + = conn->ifc_max_streams_in[SD_UNI] << SIT_SHIFT; + conn->ifc_conn.cn_version = mini_conn->cn_version; + conn->ifc_conn.cn_flags |= LSCONN_VER_SET; + conn->ifc_conn.cn_pf = mini_conn->cn_pf; + conn->ifc_conn.cn_esf_c = mini_conn->cn_esf_c; + conn->ifc_conn.cn_esf = mini_conn->cn_esf; + + if (enpub->enp_settings.es_support_push) + conn->ifc_u.ser.ifser_flags |= IFSER_PUSH_ENABLED; + if (flags & IFC_HTTP) + { + fiu_do_on("full_conn_ietf/promise_hash", goto promise_alloc_failed); + conn->ifc_pub.u.ietf.promises = lsquic_hash_create(); +#if FIU_ENABLE + promise_alloc_failed: +#endif + if (!conn->ifc_pub.u.ietf.promises) + goto err2; + } + + assert(mini_conn->cn_flags & LSCONN_HANDSHAKE_DONE); + conn->ifc_conn.cn_flags |= LSCONN_HANDSHAKE_DONE; + if (!(imc->imc_flags & IMC_HSK_DONE_SENT)) + { + LSQ_DEBUG("HANDSHAKE_DONE not yet sent, will process CRYPTO frames"); + conn->ifc_flags |= IFC_PROC_CRYPTO; + } + + conn->ifc_conn.cn_enc_session = mini_conn->cn_enc_session; + mini_conn->cn_enc_session = NULL; + conn->ifc_conn.cn_esf_c->esf_set_conn(conn->ifc_conn.cn_enc_session, + &conn->ifc_conn); + conn->ifc_process_incoming_packet = process_incoming_packet_fast; + + conn->ifc_send_ctl.sc_cur_packno = imc->imc_next_packno - 1; + conn->ifc_incoming_ecn = imc->imc_incoming_ecn; + conn->ifc_pub.rtt_stats = imc->imc_rtt_stats; + + conn->ifc_last_live_update = now; + + lsquic_send_ctl_begin_optack_detection(&conn->ifc_send_ctl); + + for (pns = 0; pns < IMICO_N_PNS; ++pns) + { + lsquic_imico_rechist_init(&mini_rechist, imc, pns); + if (pns < IMICO_N_PNS) + { + if (0 != lsquic_rechist_copy_ranges(&conn->ifc_rechist[pns], + &mini_rechist, lsquic_imico_rechist_first, + lsquic_imico_rechist_next)) + goto err2; + conn->ifc_rechist[pns].rh_largest_acked_received + = imc->imc_largest_recvd[pns]; + } + } + + /* Mini connection sends out packets 0, 1, 2... and so on. It deletes + * packets that have been successfully sent and acked or those that have + * been lost. We take ownership of all packets in mc_packets_out; those + * that are not on the list are recorded in fc_send_ctl.sc_senhist. + */ + next_packno = ~0ULL; + /* mini conn may drop Init packets, making gaps; don't warn about them: */ + conn->ifc_send_ctl.sc_senhist.sh_flags |= SH_GAP_OK; + while ((packet_out = TAILQ_FIRST(&imc->imc_packets_out))) + { + TAILQ_REMOVE(&imc->imc_packets_out, packet_out, po_next); + + /* Holes in the sequence signify no-longer-relevant Initial packets or + * ACKed or lost packets. + */ + ++next_packno; + for ( ; next_packno < packet_out->po_packno; ++next_packno) + { + lsquic_senhist_add(&conn->ifc_send_ctl.sc_senhist, next_packno); + conn->ifc_send_ctl.sc_senhist.sh_warn_thresh = next_packno; + } + + packet_out->po_path = CUR_NPATH(conn); + if (imc->imc_sent_packnos & (1ULL << packet_out->po_packno)) + { + LSQ_DEBUG("got sent packet_out %"PRIu64" from mini", + packet_out->po_packno); + if (0 != lsquic_send_ctl_sent_packet(&conn->ifc_send_ctl, + packet_out)) + { + LSQ_WARN("could not add packet %"PRIu64" to sent set: %s", + packet_out->po_packno, strerror(errno)); + goto err2; + } + } + else + { + LSQ_DEBUG("got unsent packet_out %"PRIu64" from mini (will send)", + packet_out->po_packno); + lsquic_send_ctl_scheduled_one(&conn->ifc_send_ctl, packet_out); + } + } + conn->ifc_send_ctl.sc_senhist.sh_flags &= ~SH_GAP_OK; + /* ...Yes, that's a bunch of little annoying steps to suppress the gap + * warnings, but it would have been even more annoying (and expensive) + * to add packet renumbering logic to the mini conn. + */ + + for (pns = 0; pns < IMICO_N_PNS; ++pns) + for (i = 0; i < 4; ++i) + { + conn->ifc_ecn_counts_in[pns][i] = imc->imc_ecn_counts_in[pns][i]; + } + + if (0 != handshake_ok(&conn->ifc_conn)) + goto err3; + + LSQ_DEBUG("Calling on_new_conn callback"); + conn->ifc_conn.cn_conn_ctx = conn->ifc_enpub->enp_stream_if->on_new_conn( + conn->ifc_enpub->enp_stream_if_ctx, &conn->ifc_conn); + conn->ifc_idle_to = conn->ifc_settings->es_idle_timeout * 1000000; + + conn->ifc_created = now; + if (conn->ifc_idle_to) + lsquic_alarmset_set(&conn->ifc_alset, AL_IDLE, + now + conn->ifc_idle_to); + while ((packet_in = TAILQ_FIRST(&imc->imc_app_packets))) + { + TAILQ_REMOVE(&imc->imc_app_packets, packet_in, pi_next); + LSQ_DEBUG("inherit packet %"PRIu64" from mini conn", + packet_in->pi_packno); + ietf_full_conn_ci_packet_in(&conn->ifc_conn, packet_in); + lsquic_packet_in_put(conn->ifc_pub.mm, packet_in); + } + + LSQ_DEBUG("logging using %s SCID", + LSQUIC_LOG_CONN_ID == CN_SCID(&conn->ifc_conn) ? "server" : "client"); + conn->ifc_flags |= IFC_CREATED_OK; + return &conn->ifc_conn; + + err3: + ietf_full_conn_ci_destroy(&conn->ifc_conn); + return NULL; + + err2: + lsquic_malo_destroy(conn->ifc_pub.packet_out_malo); + err1: + lsquic_send_ctl_cleanup(&conn->ifc_send_ctl); + if (conn->ifc_pub.all_streams) + lsquic_hash_destroy(conn->ifc_pub.all_streams); + free(conn); + err0: + return NULL; +} + + +static int +should_generate_ack (struct ietf_full_conn *conn, + enum ifull_conn_flags ack_queued) +{ + unsigned lost_acks; + + /* Need to set which ACKs are queued because generate_ack_frame() does not + * generate ACKs unconditionally. + */ + lost_acks = lsquic_send_ctl_lost_ack(&conn->ifc_send_ctl); + if (lost_acks) + conn->ifc_flags |= lost_acks << IFCBIT_ACK_QUED_SHIFT; + + return (conn->ifc_flags & ack_queued) != 0; +} + + +static int +ietf_full_conn_ci_can_write_ack (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + + /* Follow opportunistic ACK logic. Because this method is only used by + * buffered packets code path, no need to check whether anything is + * writing: we know it is. + */ + return conn->ifc_n_slack_akbl[PNS_APP] > 0 + && lsquic_send_ctl_can_send(&conn->ifc_send_ctl); +} + + +static unsigned +ietf_full_conn_ci_cancel_pending_streams (struct lsquic_conn *lconn, unsigned n) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + if (n > conn->ifc_n_delayed_streams) + conn->ifc_n_delayed_streams = 0; + else + conn->ifc_n_delayed_streams -= n; + return conn->ifc_n_delayed_streams; +} + + +/* Best effort. If timestamp frame does not fit, oh well */ +static void +generate_timestamp_frame (struct ietf_full_conn *conn, + struct lsquic_packet_out *packet_out, lsquic_time_t now) +{ + uint64_t timestamp; + int w; + + timestamp = (now - conn->ifc_created) >> TP_DEF_ACK_DELAY_EXP; + w = conn->ifc_conn.cn_pf->pf_gen_timestamp_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), timestamp); + if (w < 0) + { + LSQ_DEBUG("could not generate TIMESTAMP frame"); + return; + } + LSQ_DEBUG("generated TIMESTAMP(%"PRIu64" us) frame", + timestamp << TP_DEF_ACK_DELAY_EXP); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "generated TIMESTAMP(%" + PRIu64" us) frame", timestamp << TP_DEF_ACK_DELAY_EXP); + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_TIMESTAMP, packet_out->po_data_sz, w)) + { + LSQ_DEBUG("%s: adding frame to packet failed: %d", __func__, errno); + return; + } + packet_out->po_frame_types |= 1 << QUIC_FRAME_TIMESTAMP; + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, w); + packet_out->po_regen_sz += w; +} + + +struct ietf_ack_state +{ + enum ifull_conn_flags conn_flags; + enum send_flags send_flags; + enum alarm_id_bit armed_set; + unsigned n_slack_akbl; + unsigned n_slack_all; + unsigned char unretx_thresh; +}; + + +typedef char ack_state_size[sizeof(struct ietf_ack_state) + <= sizeof(struct ack_state) ? 1 : - 1]; + +static void +ietf_full_conn_ci_ack_snapshot (struct lsquic_conn *lconn, + struct ack_state *opaque) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + struct ietf_ack_state *const ack_state = (struct ietf_ack_state *) opaque; + + ack_state->conn_flags = conn->ifc_flags; + ack_state->send_flags = conn->ifc_send_flags; + ack_state->armed_set = conn->ifc_alset.as_armed_set; + ack_state->n_slack_akbl = conn->ifc_n_slack_akbl[PNS_APP]; + ack_state->n_slack_all = conn->ifc_n_slack_all; + ack_state->unretx_thresh= conn->ifc_ping_unretx_thresh; + LSQ_DEBUG("take ACK snapshot"); +} + + +static void +ietf_full_conn_ci_ack_rollback (struct lsquic_conn *lconn, + struct ack_state *opaque) +{ + struct ietf_ack_state *const ack_state = (struct ietf_ack_state *) opaque; + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + + conn->ifc_flags &= ~(IFC_ACK_HAD_MISS|IFC_ACK_QUED_APP); + conn->ifc_flags |= (IFC_ACK_HAD_MISS|IFC_ACK_QUED_APP) + & ack_state->conn_flags; + + conn->ifc_send_flags &= ~SF_SEND_PING; + conn->ifc_send_flags |= SF_SEND_PING & ack_state->send_flags; + + conn->ifc_alset.as_armed_set &= ~ALBIT_ACK_APP; + conn->ifc_alset.as_armed_set |= ALBIT_ACK_APP & ack_state->armed_set; + + conn->ifc_n_slack_akbl[PNS_APP] = ack_state->n_slack_akbl; + conn->ifc_n_slack_all = ack_state->n_slack_all; + conn->ifc_ping_unretx_thresh = ack_state->unretx_thresh; + + LSQ_DEBUG("roll back ACK state"); +} + + +static int +generate_ack_frame_for_pns (struct ietf_full_conn *conn, + struct lsquic_packet_out *packet_out, enum packnum_space pns, + lsquic_time_t now) +{ + const uint64_t *ecn_counts; + int has_missing, w; + + if (conn->ifc_incoming_ecn + && lsquic_send_ctl_ecn_turned_on(&conn->ifc_send_ctl)) + ecn_counts = conn->ifc_ecn_counts_in[pns]; + else if ((conn->ifc_mflags & MF_SEND_WRONG_COUNTS) && pns == PNS_APP) + { + /* We try once. A more advanced version would wait until we get a + * packet from peer and only then stop. + */ + conn->ifc_mflags &= ~MF_SEND_WRONG_COUNTS; + ecn_counts = conn->ifc_ecn_counts_in[pns]; + } + else + ecn_counts = NULL; + + w = conn->ifc_conn.cn_pf->pf_gen_ack_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &conn->ifc_rechist[pns], now, &has_missing, &packet_out->po_ack2ed, + ecn_counts); + if (w < 0) { + ABORT_ERROR("%s generating ACK frame failed: %d", lsquic_pns2str[pns], errno); + return -1; + } + CONN_STATS(out.acks, 1); + char buf[0x100]; + lsquic_hexstr(packet_out->po_data + packet_out->po_data_sz, w, buf, sizeof(buf)); + LSQ_DEBUG("ACK bytes: %s", buf); + EV_LOG_GENERATED_ACK_FRAME(LSQUIC_LOG_CONN_ID, conn->ifc_conn.cn_pf, + packet_out->po_data + packet_out->po_data_sz, w); + lsquic_send_ctl_scheduled_ack(&conn->ifc_send_ctl, pns, + packet_out->po_ack2ed); + + // NOTE: Add a PING frame after ACK frame before HANDSHAKE_DONE, in a hacky way + if (!(conn->ifc_conn.cn_flags & LSCONN_HANDSHAKE_DONE) + && packet_out->po_data_sz + w < packet_out->po_n_alloc) + { + LSQ_DEBUG("add a PING frame before HANDSHAKE_DONE"); + *(packet_out->po_data + packet_out->po_data_sz + w) = '\x01'; + ++w; + } + + packet_out->po_frame_types |= 1 << QUIC_FRAME_ACK; + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_ACK, packet_out->po_data_sz, w)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return -1; + } + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, w); + packet_out->po_regen_sz += w; + if (has_missing && !(conn->ifc_mflags & MF_IGNORE_MISSING)) + conn->ifc_flags |= IFC_ACK_HAD_MISS; + else + conn->ifc_flags &= ~IFC_ACK_HAD_MISS; + LSQ_DEBUG("Put %d bytes of ACK frame into packet #%" PRIu64 + " on outgoing queue", w, packet_out->po_packno); + if (conn->ifc_n_cons_unretx >= conn->ifc_ping_unretx_thresh && + !lsquic_send_ctl_have_outgoing_retx_frames(&conn->ifc_send_ctl)) + { + LSQ_DEBUG("schedule PING frame after %u non-retx " + "packets sent", conn->ifc_n_cons_unretx); + conn->ifc_send_flags |= SF_SEND_PING; + /* This gives a range [12, 27]: */ + conn->ifc_ping_unretx_thresh = 12 + + lsquic_crand_get_nybble(conn->ifc_enpub->enp_crand); + conn->ifc_n_cons_unretx = 0; + } + + conn->ifc_n_slack_akbl[pns] = 0; + conn->ifc_flags &= ~(IFC_ACK_QUED_INIT << pns); + if (pns == PNS_APP) + { + conn->ifc_n_slack_all = 0; + lsquic_alarmset_unset(&conn->ifc_alset, AL_ACK_APP); + } + lsquic_send_ctl_sanity_check(&conn->ifc_send_ctl); + LSQ_DEBUG("%s ACK state reset", lsquic_pns2str[pns]); + + if (pns == PNS_APP && (conn->ifc_flags & IFC_TIMESTAMPS)) + generate_timestamp_frame(conn, packet_out, now); + + return 0; +} + + +/* Return number of packets scheduled or 0 on error */ +static unsigned +generate_ack_frame (struct ietf_full_conn *conn, lsquic_time_t now) +{ + struct lsquic_packet_out *packet_out; + enum packnum_space pns; + unsigned count; + int s; + + count = 0; + for (pns = 0; pns < N_PNS; ++pns) + if (conn->ifc_flags & (IFC_ACK_QUED_INIT << pns)) + { + packet_out = lsquic_send_ctl_new_packet_out(&conn->ifc_send_ctl, + 0, pns, CUR_NPATH(conn)); + if (!packet_out) + { + ABORT_ERROR("cannot allocate packet: %s", strerror(errno)); + return 0; + } + s = generate_ack_frame_for_pns(conn, packet_out, pns, now); + lsquic_send_ctl_scheduled_one(&conn->ifc_send_ctl, packet_out); + if (s != 0) + return 0; + ++count; + } + + return count; +} + + +static struct lsquic_packet_out * +get_writeable_packet_on_path (struct ietf_full_conn *conn, + unsigned need_at_least, const struct network_path *path, + int regen_match) +{ + struct lsquic_packet_out *packet_out; + int is_err; + + packet_out = lsquic_send_ctl_get_writeable_packet(&conn->ifc_send_ctl, + PNS_APP, need_at_least, path, regen_match, &is_err); + if (!packet_out && is_err) + ABORT_ERROR("cannot allocate packet: %s", strerror(errno)); + return packet_out; +} + + +static struct lsquic_packet_out * +get_writeable_packet (struct ietf_full_conn *conn, unsigned need_at_least) +{ + return get_writeable_packet_on_path(conn, need_at_least, + CUR_NPATH(conn), 0); +} + + +static void +generate_max_data_frame (struct ietf_full_conn *conn) +{ + const uint64_t offset = lsquic_cfcw_get_fc_recv_off(&conn->ifc_pub.cfcw); + struct lsquic_packet_out *packet_out; + unsigned need; + int w; + + need = conn->ifc_conn.cn_pf->pf_max_data_frame_size(offset); + packet_out = get_writeable_packet(conn, need); + if (!packet_out) + return; + w = conn->ifc_conn.cn_pf->pf_gen_max_data_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), offset); + if (w < 0) + { + ABORT_ERROR("Generating MAX_DATA frame failed"); + return; + } + LSQ_DEBUG("generated %d-byte MAX_DATA frame (offset: %"PRIu64")", w, offset); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "generated MAX_DATA frame, offset=%" + PRIu64, offset); + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_MAX_DATA, packet_out->po_data_sz, w)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return; + } + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, w); + packet_out->po_frame_types |= QUIC_FTBIT_MAX_DATA; + conn->ifc_send_flags &= ~SF_SEND_MAX_DATA; + conn->ifc_last_max_data_off_sent = offset; +} + + +static void +generate_new_token_frame (struct ietf_full_conn *conn, lsquic_time_t now) +{ + struct lsquic_packet_out *packet_out; + const struct network_path *path; + ssize_t token_sz; + size_t need; + int w; + unsigned char token_buf[MAX_RETRY_TOKEN_LEN]; + + path = &conn->ifc_paths[conn->ifc_cur_path_id].cop_path; + token_sz = lsquic_tg_token_size(conn->ifc_enpub->enp_tokgen, TOKEN_RESUME, + NP_PEER_SA(path)); + need = conn->ifc_conn.cn_pf->pf_new_token_frame_size(token_sz); + packet_out = get_writeable_packet(conn, need); + if (!packet_out) + return; + + token_sz = lsquic_tg_generate_resume(conn->ifc_enpub->enp_tokgen, token_buf, + sizeof(token_buf), NP_PEER_SA(path)); + if (token_sz < 0) + { + LSQ_WARN("could not generate resume token"); + conn->ifc_send_flags &= ~SF_SEND_NEW_TOKEN; /* Let's not try again */ + return; + } + + w = conn->ifc_conn.cn_pf->pf_gen_new_token_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), token_buf, token_sz); + if (w < 0) + { + ABORT_ERROR("generating NEW_TOKEN frame failed: %d", errno); + return; + } + LSQ_DEBUG("generated %d-byte NEW_TOKEN frame", w); + EV_LOG_GENERATED_NEW_TOKEN_FRAME(LSQUIC_LOG_CONN_ID, conn->ifc_conn.cn_pf, + packet_out->po_data + packet_out->po_data_sz, w); + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_NEW_TOKEN, packet_out->po_data_sz, w)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return; + } + packet_out->po_frame_types |= QUIC_FTBIT_NEW_TOKEN; + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, w); + + conn->ifc_send_flags &= ~SF_SEND_NEW_TOKEN; + (void) token_sz; +} + + +static int +can_issue_cids (const struct ietf_full_conn *conn) +{ + int can; + + can = ((1 << conn->ifc_conn.cn_n_cces) - 1 + != conn->ifc_conn.cn_cces_mask) + && conn->ifc_enpub->enp_settings.es_scid_len + && conn->ifc_active_cids_count < conn->ifc_active_cids_limit; + LSQ_DEBUG("can issue CIDs: %d (n_cces %hhu; mask: 0x%hhX; " + "active: %hhu; limit: %hhu)", + can, conn->ifc_conn.cn_n_cces, conn->ifc_conn.cn_cces_mask, + conn->ifc_active_cids_count, conn->ifc_active_cids_limit); + return can; +} + + +static int +generate_new_cid_frame (struct ietf_full_conn *conn, lsquic_time_t now) +{ + struct lsquic_packet_out *packet_out; + struct conn_cid_elem *cce; + size_t need; + int w; + unsigned char token_buf[IQUIC_SRESET_TOKEN_SZ]; + + assert(conn->ifc_enpub->enp_settings.es_scid_len); + + need = conn->ifc_conn.cn_pf->pf_new_connection_id_frame_size( + conn->ifc_scid_seqno, conn->ifc_enpub->enp_settings.es_scid_len); + packet_out = get_writeable_packet(conn, need); + if (!packet_out) + return -1; + + if (!(cce = ietf_full_conn_add_scid(conn, conn->ifc_enpub, 0, now))) + { + ABORT_WARN("cannot add a new SCID"); + return -1; + } + + lsquic_tg_generate_sreset(conn->ifc_enpub->enp_tokgen, &cce->cce_cid, + token_buf); + + if (0 != lsquic_engine_add_cid(conn->ifc_enpub, &conn->ifc_conn, + cce - conn->ifc_cces)) + { + ABORT_WARN("cannot track new SCID"); + return -1; + } + + w = conn->ifc_conn.cn_pf->pf_gen_new_connection_id_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), cce->cce_seqno, + &cce->cce_cid, token_buf, sizeof(token_buf)); + if (w < 0) + { + ABORT_ERROR("generating NEW_CONNECTION_ID frame failed: %d", errno); + return -1; + } + LSQ_DEBUGC("generated %d-byte NEW_CONNECTION_ID frame (CID: %"CID_FMT")", + w, CID_BITS(&cce->cce_cid)); + EV_LOG_GENERATED_NEW_CONNECTION_ID_FRAME(LSQUIC_LOG_CONN_ID, + conn->ifc_conn.cn_pf, packet_out->po_data + packet_out->po_data_sz, w); + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_NEW_CONNECTION_ID, packet_out->po_data_sz, w)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return -1; + } + packet_out->po_frame_types |= QUIC_FTBIT_NEW_CONNECTION_ID; + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, w); + + if (!can_issue_cids(conn)) + { + conn->ifc_send_flags &= ~SF_SEND_NEW_CID; + LSQ_DEBUG("All %u SCID slots have been assigned", + conn->ifc_conn.cn_n_cces); + } + + return 0; +} + + +static void +maybe_get_rate_available_scid_slot (struct ietf_full_conn *conn, + lsquic_time_t now) +{ + const struct lsquic_conn *const lconn = &conn->ifc_conn; + const struct conn_cid_elem *cce; + unsigned active_cid; + lsquic_time_t total_elapsed, elapsed_thresh, period, wait_time; + + if (!conn->ifc_enpub->enp_settings.es_scid_iss_rate) + { + conn->ifc_send_flags |= SF_SEND_NEW_CID; + return; + } + + /* period: usec per cid */ + period = (60 * 1000000) / conn->ifc_enpub->enp_settings.es_scid_iss_rate; + active_cid = 0; + total_elapsed = 0; + for (cce = lconn->cn_cces; cce < END_OF_CCES(lconn); ++cce) + { + if ((cce->cce_flags & (CCE_SEQNO|CCE_PORT)) == CCE_SEQNO) + { + active_cid += 1; + /* When server is promoted, the timestamp may be larger than the + * first tick time. + */ + if (now > conn->ifc_scid_timestamp[cce - lconn->cn_cces]) + total_elapsed += + now - conn->ifc_scid_timestamp[cce - lconn->cn_cces]; + } + } + elapsed_thresh = ((active_cid * (active_cid + 1)) / 2) * period; + /* compare total elapsed usec to elapsed usec threshold */ + if (total_elapsed < elapsed_thresh) + { + wait_time = (elapsed_thresh - total_elapsed) / active_cid; + LSQ_DEBUG("cid_throt no SCID slots available (rate-limited), " + "must wait %"PRIu64" usec", wait_time); + lsquic_alarmset_set(&conn->ifc_alset, AL_CID_THROT, now + wait_time); + conn->ifc_send_flags &= ~SF_SEND_NEW_CID; + } + else + conn->ifc_send_flags |= SF_SEND_NEW_CID; +} + + +static void +generate_new_cid_frames (struct ietf_full_conn *conn, lsquic_time_t now) +{ + int s; + + do + { + s = generate_new_cid_frame(conn, now); + if (s < 0) + break; + if (conn->ifc_send_flags & SF_SEND_NEW_CID) + maybe_get_rate_available_scid_slot(conn, now); + } + while (conn->ifc_send_flags & SF_SEND_NEW_CID); + LOG_SCIDS(conn); +} + + +static int +generate_retire_cid_frame (struct ietf_full_conn *conn) +{ + struct lsquic_packet_out *packet_out; + struct dcid_elem *dce; + size_t need; + int w; + + dce = TAILQ_FIRST(&conn->ifc_to_retire); + assert(dce); + + need = conn->ifc_conn.cn_pf->pf_retire_cid_frame_size(dce->de_seqno); + packet_out = get_writeable_packet(conn, need); + if (!packet_out) + return -1; + + w = conn->ifc_conn.cn_pf->pf_gen_retire_cid_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), dce->de_seqno); + if (w < 0) + { + ABORT_ERROR("generating RETIRE_CONNECTION_ID frame failed: %d", errno); + return -1; + } + LSQ_DEBUG("generated %d-byte RETIRE_CONNECTION_ID frame (seqno: %u)", + w, dce->de_seqno); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "generated RETIRE_CONNECTION_ID " + "frame, seqno=%u", dce->de_seqno); + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_RETIRE_CONNECTION_ID, packet_out->po_data_sz, w)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return -1; + } + packet_out->po_frame_types |= QUIC_FTBIT_RETIRE_CONNECTION_ID; + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, w); + + TAILQ_REMOVE(&conn->ifc_to_retire, dce, de_next_to_ret); + --conn->ifc_n_to_retire; + lsquic_malo_put(dce); + + if (TAILQ_EMPTY(&conn->ifc_to_retire)) + conn->ifc_send_flags &= ~SF_SEND_RETIRE_CID; + + return 0; +} + + +static void +generate_retire_cid_frames (struct ietf_full_conn *conn, lsquic_time_t now) +{ + int s; + + if (conn->ifc_n_to_retire >= MAX_IETF_CONN_DCIDS * 3) + { + ABORT_QUIETLY(0, TEC_CONNECTION_ID_LIMIT_ERROR, + "too many (%d) CIDs to retire", conn->ifc_n_to_retire); + return; + } + + do + s = generate_retire_cid_frame(conn); + while (0 == s && (conn->ifc_send_flags & SF_SEND_RETIRE_CID)); +} + + +static void +generate_streams_blocked_frame (struct ietf_full_conn *conn, enum stream_dir sd) +{ + struct lsquic_packet_out *packet_out; + uint64_t limit; + size_t need; + int w; + + limit = conn->ifc_send.streams_blocked[sd]; + need = conn->ifc_conn.cn_pf->pf_streams_blocked_frame_size(limit); + packet_out = get_writeable_packet(conn, need); + if (!packet_out) + return; + + w = conn->ifc_conn.cn_pf->pf_gen_streams_blocked_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), sd == SD_UNI, limit); + if (w < 0) + { + ABORT_ERROR("generating STREAMS_BLOCKED frame failed: %d", errno); + return; + } + LSQ_DEBUG("generated %d-byte STREAMS_BLOCKED frame (uni: %d, " + "limit: %"PRIu64")", w, sd == SD_UNI, limit); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "generated %d-byte STREAMS_BLOCKED " + "frame (uni: %d, limit: %"PRIu64")", w, sd == SD_UNI, limit); + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_STREAMS_BLOCKED, packet_out->po_data_sz, w)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return; + } + packet_out->po_frame_types |= QUIC_FTBIT_STREAM_BLOCKED; + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, w); + conn->ifc_send_flags &= ~(SF_SEND_STREAMS_BLOCKED << sd); +} + + +static void +generate_streams_blocked_uni_frame (struct ietf_full_conn *conn, + lsquic_time_t now) +{ + generate_streams_blocked_frame(conn, SD_UNI); +} + + +static void +generate_streams_blocked_bidi_frame (struct ietf_full_conn *conn, + lsquic_time_t now) +{ + generate_streams_blocked_frame(conn, SD_BIDI); +} + + +static void +generate_max_streams_frame (struct ietf_full_conn *conn, enum stream_dir sd) +{ + struct lsquic_packet_out *packet_out; + enum stream_id_type sit; + uint64_t limit; + size_t need; + int w; + + limit = conn->ifc_closed_peer_streams[sd] + conn->ifc_max_streams_in[sd]; + need = conn->ifc_conn.cn_pf->pf_max_streams_frame_size(limit); + packet_out = get_writeable_packet(conn, need); + if (!packet_out) + return; + + w = conn->ifc_conn.cn_pf->pf_gen_max_streams_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), sd, limit); + if (w < 0) + { + ABORT_ERROR("generating MAX_STREAMS frame failed: %d", errno); + return; + } + LSQ_DEBUG("generated %d-byte MAX_STREAMS frame (uni: %d, " + "limit: %"PRIu64")", w, sd == SD_UNI, limit); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "generated %d-byte MAX_STREAMS " + "frame (uni: %d, limit: %"PRIu64")", w, sd == SD_UNI, limit); + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_MAX_STREAMS, packet_out->po_data_sz, w)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return; + } + packet_out->po_frame_types |= QUIC_FTBIT_MAX_STREAMS; + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, w); + conn->ifc_send_flags &= ~(SF_SEND_MAX_STREAMS << sd); + + sit = gen_sit(!(conn->ifc_flags & IFC_SERVER), sd); + LSQ_DEBUG("max_allowed_stream_id[ %u ] goes from %"PRIu64" to %"PRIu64, + sit, conn->ifc_max_allowed_stream_id[ sit ], limit << SIT_SHIFT); + conn->ifc_max_allowed_stream_id[ sit ] = limit << SIT_SHIFT; +} + + +static void +generate_max_streams_uni_frame (struct ietf_full_conn *conn, lsquic_time_t now) +{ + generate_max_streams_frame(conn, SD_UNI); +} + + +static void +generate_max_streams_bidi_frame (struct ietf_full_conn *conn, lsquic_time_t now) +{ + generate_max_streams_frame(conn, SD_BIDI); +} + + +/* Return true if generated, false otherwise */ +static int +generate_blocked_frame (struct ietf_full_conn *conn) +{ + const uint64_t offset = conn->ifc_pub.conn_cap.cc_blocked; + struct lsquic_packet_out *packet_out; + size_t need; + int w; + + need = conn->ifc_conn.cn_pf->pf_blocked_frame_size(offset); + packet_out = get_writeable_packet(conn, need); + if (!packet_out) + return 0; + + w = conn->ifc_conn.cn_pf->pf_gen_blocked_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), offset); + if (w < 0) + { + ABORT_ERROR("generating BLOCKED frame failed: %d", errno); + return 0; + } + LSQ_DEBUG("generated %d-byte BLOCKED frame (offset: %"PRIu64")", w, offset); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "generated BLOCKED frame, offset=%" + PRIu64, offset); + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_BLOCKED, packet_out->po_data_sz, w)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return 0; + } + packet_out->po_frame_types |= QUIC_FTBIT_BLOCKED; + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, w); + + return 1; +} + + +/* Return true if generated, false otherwise */ +static int +generate_max_stream_data_frame (struct ietf_full_conn *conn, + struct lsquic_stream *stream) +{ + struct lsquic_packet_out *packet_out; + unsigned need; + uint64_t off; + int sz; + + off = lsquic_stream_fc_recv_off_const(stream); + need = conn->ifc_conn.cn_pf->pf_max_stream_data_frame_size(stream->id, off); + packet_out = get_writeable_packet(conn, need); + if (!packet_out) + return 0; + sz = conn->ifc_conn.cn_pf->pf_gen_max_stream_data_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), stream->id, off); + if (sz < 0) + { + ABORT_ERROR("Generating MAX_STREAM_DATA frame failed"); + return 0; + } + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "generated %d-byte MAX_STREAM_DATA " + "frame; stream_id: %"PRIu64"; offset: %"PRIu64, sz, stream->id, off); + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_MAX_STREAM_DATA, packet_out->po_data_sz, sz)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return 0; + } + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, sz); + packet_out->po_frame_types |= 1 << QUIC_FRAME_MAX_STREAM_DATA; + lsquic_stream_max_stream_data_sent(stream); + return 1; +} + + +static int +generate_stop_sending_frame_by_id (struct ietf_full_conn *conn, + lsquic_stream_id_t stream_id, enum http_error_code error_code) +{ + struct lsquic_packet_out *packet_out; + size_t need; + int w; + + need = conn->ifc_conn.cn_pf->pf_stop_sending_frame_size(stream_id, + error_code); + packet_out = get_writeable_packet(conn, need); + if (!packet_out) + return -1; + + w = conn->ifc_conn.cn_pf->pf_gen_stop_sending_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), + stream_id, error_code); + if (w < 0) + { + ABORT_ERROR("generating STOP_SENDING frame failed: %d", errno); + return -1; + } + LSQ_DEBUG("generated %d-byte STOP_SENDING frame (stream id: %"PRIu64", " + "error code: %u)", w, stream_id, error_code); + EV_LOG_GENERATED_STOP_SENDING_FRAME(LSQUIC_LOG_CONN_ID, stream_id, + error_code); + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_STOP_SENDING, packet_out->po_data_sz, w)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return -1; + } + packet_out->po_frame_types |= QUIC_FTBIT_STOP_SENDING; + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, w); + + return 0; +} + + +/* Return true if generated, false otherwise */ +static int +generate_stop_sending_frame (struct ietf_full_conn *conn, + struct lsquic_stream *stream) +{ + if (0 == generate_stop_sending_frame_by_id(conn, stream->id, HEC_NO_ERROR)) + { + lsquic_stream_ss_frame_sent(stream); + return 1; + } + else + return 0; +} + + +static void +generate_stop_sending_frames (struct ietf_full_conn *conn, lsquic_time_t now) +{ + struct stream_id_to_ss *sits; + + assert(conn->ifc_send_flags & SF_SEND_STOP_SENDING); + + while (!STAILQ_EMPTY(&conn->ifc_stream_ids_to_ss)) + { + sits = STAILQ_FIRST(&conn->ifc_stream_ids_to_ss); + if (0 == generate_stop_sending_frame_by_id(conn, sits->sits_stream_id, + sits->sits_error_code)) + { + STAILQ_REMOVE_HEAD(&conn->ifc_stream_ids_to_ss, sits_next); + free(sits); + } + else + break; + } + + if (STAILQ_EMPTY(&conn->ifc_stream_ids_to_ss)) + conn->ifc_send_flags &= ~SF_SEND_STOP_SENDING; +} + + +/* Return true if generated, false otherwise */ +static int +generate_rst_stream_frame (struct ietf_full_conn *conn, + struct lsquic_stream *stream) +{ + lsquic_packet_out_t *packet_out; + unsigned need; + int sz; + + need = conn->ifc_conn.cn_pf->pf_rst_frame_size(stream->id, + stream->tosend_off, stream->error_code); + packet_out = get_writeable_packet(conn, need); + if (!packet_out) + { + LSQ_DEBUG("cannot get writeable packet for RESET_STREAM frame"); + return 0; + } + sz = conn->ifc_conn.cn_pf->pf_gen_rst_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), stream->id, + stream->tosend_off, stream->error_code); + if (sz < 0) + { + ABORT_ERROR("gen_rst_frame failed"); + return 0; + } + if (0 != lsquic_packet_out_add_stream(packet_out, conn->ifc_pub.mm, stream, + QUIC_FRAME_RST_STREAM, packet_out->po_data_sz, sz)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return 0; + } + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, sz); + packet_out->po_frame_types |= 1 << QUIC_FRAME_RST_STREAM; + lsquic_stream_rst_frame_sent(stream); + LSQ_DEBUG("wrote RST: stream %"PRIu64"; offset %"PRIu64"; error code " + "%"PRIu64, stream->id, stream->tosend_off, stream->error_code); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "generated RESET_STREAM: stream " + "%"PRIu64"; offset %"PRIu64"; error code %"PRIu64, stream->id, + stream->tosend_off, stream->error_code); + + return 1; +} + + +static int +is_our_stream (const struct ietf_full_conn *conn, + const struct lsquic_stream *stream) +{ + const unsigned is_server = !!(conn->ifc_flags & IFC_SERVER); + return (1 & stream->id) == is_server; +} + + +static int +is_peer_initiated (const struct ietf_full_conn *conn, + lsquic_stream_id_t stream_id) +{ + const unsigned is_server = !!(conn->ifc_flags & IFC_SERVER); + return (1 & stream_id) != is_server; +} + + +static void +sched_max_bidi_streams (void *conn_p) +{ + struct ietf_full_conn *conn = conn_p; + + conn->ifc_send_flags |= SF_SEND_MAX_STREAMS_BIDI; + conn->ifc_delayed_send &= ~SF_SEND_MAX_STREAMS_BIDI; + LSQ_DEBUG("schedule MAX_STREAMS frame for bidirectional streams (was " + "delayed)"); +} + + +/* Do not allow peer to open more streams while QPACK decoder stream has + * unsent data. + */ +static int +can_give_peer_streams_credit (struct ietf_full_conn *conn, enum stream_dir sd) +{ + /* This logic only applies to HTTP servers. */ + if ((conn->ifc_flags & (IFC_SERVER|IFC_HTTP)) != (IFC_SERVER|IFC_HTTP)) + return 1; + /* HTTP client does not open unidirectional streams (other than the + * standard three), not applicable. + */ + if (SD_UNI == sd) + return 1; + if (conn->ifc_delayed_send & (SF_SEND_MAX_STREAMS << sd)) + return 0; + if (lsquic_qdh_arm_if_unsent(&conn->ifc_qdh, sched_max_bidi_streams, conn)) + { + LSQ_DEBUG("delay sending more streams credit to peer until QPACK " + "decoder sends unsent data"); + conn->ifc_delayed_send |= SF_SEND_MAX_STREAMS << sd; + return 0; + } + else + return 1; +} + + +/* Because stream IDs are distributed unevenly, it is more efficient to + * maintain four sets of closed stream IDs. + */ +static void +conn_mark_stream_closed (struct ietf_full_conn *conn, + lsquic_stream_id_t stream_id) +{ + lsquic_stream_id_t shifted_id; + uint64_t max_allowed, thresh; + enum stream_id_type idx; + enum stream_dir sd; + + idx = stream_id & SIT_MASK; + shifted_id = stream_id >> SIT_SHIFT; + + if (is_peer_initiated(conn, stream_id) + && !lsquic_set64_has(&conn->ifc_closed_stream_ids[idx], shifted_id)) + { + sd = (stream_id >> SD_SHIFT) & 1; + ++conn->ifc_closed_peer_streams[sd]; + if (0 == (conn->ifc_send_flags & (SF_SEND_MAX_STREAMS << sd))) + { + max_allowed = conn->ifc_max_allowed_stream_id[idx] >> SIT_SHIFT; + thresh = conn->ifc_closed_peer_streams[sd] + + conn->ifc_max_streams_in[sd] / 2; + if (thresh >= max_allowed && can_give_peer_streams_credit(conn, sd)) + { + LSQ_DEBUG("closed incoming %sdirectional streams reached " + "%"PRIu64", scheduled MAX_STREAMS frame", + sd == SD_UNI ? "uni" : "bi", + conn->ifc_closed_peer_streams[sd]); + conn->ifc_send_flags |= SF_SEND_MAX_STREAMS << sd; + } + } + } + + if (0 == lsquic_set64_add(&conn->ifc_closed_stream_ids[idx], shifted_id)) + LSQ_DEBUG("marked stream %"PRIu64" as closed", stream_id); + else + ABORT_ERROR("could not add element to set: %s", strerror(errno)); +} + + +static int +conn_is_stream_closed (struct ietf_full_conn *conn, + lsquic_stream_id_t stream_id) +{ + enum stream_id_type idx = stream_id & SIT_MASK; + stream_id >>= SIT_SHIFT; + return lsquic_set64_has(&conn->ifc_closed_stream_ids[idx], stream_id); +} + + +static int +either_side_going_away (const struct ietf_full_conn *conn) +{ + return (conn->ifc_flags & IFC_GOING_AWAY) + || (conn->ifc_conn.cn_flags & LSCONN_PEER_GOING_AWAY); +} + + +static void +maybe_create_delayed_streams (struct ietf_full_conn *conn) +{ + unsigned avail, delayed; + + delayed = conn->ifc_n_delayed_streams; + if (0 == delayed) + return; + + avail = ietf_full_conn_ci_n_avail_streams(&conn->ifc_conn); + while (avail > 0) + { + if (0 == create_bidi_stream_out(conn)) + { + --avail; + --conn->ifc_n_delayed_streams; + if (0 == conn->ifc_n_delayed_streams) + break; + } + else + { + LSQ_INFO("cannot create BIDI stream"); + break; + } + } + + LSQ_DEBUG("created %u delayed stream%.*s", + delayed - conn->ifc_n_delayed_streams, + delayed - conn->ifc_n_delayed_streams != 1, "s"); +} + + +static int +have_bidi_streams (const struct ietf_full_conn *conn) +{ + const struct lsquic_stream *stream; + struct lsquic_hash_elem *el; + + for (el = lsquic_hash_first(conn->ifc_pub.all_streams); el; + el = lsquic_hash_next(conn->ifc_pub.all_streams)) + { + stream = lsquic_hashelem_getdata(el); + if (SIT_BIDI_CLIENT == (stream->id & SIT_MASK)) + return 1; + } + + return 0; +} + + +static int +conn_ok_to_close (const struct ietf_full_conn *conn) +{ + assert(conn->ifc_flags & IFC_CLOSING); + return !(conn->ifc_flags & IFC_SERVER) + || (conn->ifc_flags & IFC_RECV_CLOSE) + || ( + !lsquic_send_ctl_have_outgoing_stream_frames(&conn->ifc_send_ctl) + && !have_bidi_streams(conn) + && !lsquic_send_ctl_have_unacked_stream_frames( + &conn->ifc_send_ctl)); +} + + +static void +maybe_close_conn (struct ietf_full_conn *conn) +{ + if ((conn->ifc_flags & (IFC_CLOSING|IFC_GOING_AWAY|IFC_SERVER)) + == (IFC_GOING_AWAY|IFC_SERVER) + && !have_bidi_streams(conn)) + { + conn->ifc_flags |= IFC_CLOSING|IFC_GOAWAY_CLOSE; + LSQ_DEBUG("maybe_close_conn: GOAWAY sent and no responses remain"); + if (conn_ok_to_close(conn)) + { + conn->ifc_send_flags |= SF_SEND_CONN_CLOSE; + LSQ_DEBUG("maybe_close_conn: ok to close: " + "schedule to send CONNECTION_CLOSE"); + } + } +} + + +static void +service_streams (struct ietf_full_conn *conn) +{ + struct lsquic_hash_elem *el; + lsquic_stream_t *stream, *next; + + for (stream = TAILQ_FIRST(&conn->ifc_pub.service_streams); stream; + stream = next) + { + next = TAILQ_NEXT(stream, next_service_stream); + if (stream->sm_qflags & SMQF_ABORT_CONN) + /* No need to unset this flag or remove this stream: the connection + * is about to be aborted. + */ + ABORT_ERROR("aborted due to error in stream %"PRIu64, stream->id); + if (stream->sm_qflags & SMQF_CALL_ONCLOSE) + lsquic_stream_call_on_close(stream); + if (stream->sm_qflags & SMQF_FREE_STREAM) + { + TAILQ_REMOVE(&conn->ifc_pub.service_streams, stream, + next_service_stream); + if (!(stream->sm_bflags & SMBF_CRYPTO)) + { + el = lsquic_hash_find(conn->ifc_pub.all_streams, + &stream->id, sizeof(stream->id)); + if (el) + lsquic_hash_erase(conn->ifc_pub.all_streams, el); + conn_mark_stream_closed(conn, stream->id); + } + else + assert(!(stream->sm_hash_el.qhe_flags & QHE_HASHED)); + lsquic_stream_destroy(stream); + } + } + + /* TODO: this chunk of code, too, should probably live elsewhere */ + if (either_side_going_away(conn)) + { + while (conn->ifc_n_delayed_streams) + { + --conn->ifc_n_delayed_streams; + LSQ_DEBUG("goaway mode: delayed stream results in null ctor"); + (void) conn->ifc_enpub->enp_stream_if->on_new_stream( + conn->ifc_enpub->enp_stream_if_ctx, NULL); + } + maybe_close_conn(conn); + } + else + maybe_create_delayed_streams(conn); +} + + +static int +process_stream_ready_to_send (struct ietf_full_conn *conn, + struct lsquic_stream *stream) +{ + int r = 1; + + LSQ_DEBUG("process_stream_ready_to_send: stream: %"PRIu64", " + "sm_qflags: %d. stream_flags: %d, sm_bflags: %d, ", stream->id, + stream->sm_qflags, stream->stream_flags, stream->sm_bflags); + + if (stream->sm_qflags & SMQF_SEND_MAX_STREAM_DATA) + r &= generate_max_stream_data_frame(conn, stream); + if (stream->sm_qflags & SMQF_SEND_BLOCKED) + { + if (lsquic_stream_is_write_reset(stream)) + { + stream->sm_qflags &= ~SMQF_SEND_BLOCKED; + if (!(stream->sm_qflags & SMQF_SENDING_FLAGS)) + TAILQ_REMOVE(&stream->conn_pub->sending_streams, stream, + next_send_stream); + } + else + r &= lsquic_sendctl_gen_stream_blocked_frame(&conn->ifc_send_ctl, + stream); + } + if (stream->sm_qflags & SMQF_SEND_RST) + r &= generate_rst_stream_frame(conn, stream); + if (stream->sm_qflags & SMQF_SEND_STOP_SENDING) + r &= generate_stop_sending_frame(conn, stream); + return r; +} + + +static void +process_streams_ready_to_send (struct ietf_full_conn *conn) +{ + struct lsquic_stream *stream; + union prio_iter pi; + + assert(!TAILQ_EMPTY(&conn->ifc_pub.sending_streams)); + + conn->ifc_pii->pii_init(&pi, TAILQ_FIRST(&conn->ifc_pub.sending_streams), + TAILQ_LAST(&conn->ifc_pub.sending_streams, lsquic_streams_tailq), + (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_send_stream), + &conn->ifc_pub, "send", NULL, NULL); + + for (stream = conn->ifc_pii->pii_first(&pi); stream; + stream = conn->ifc_pii->pii_next(&pi)) + if (!process_stream_ready_to_send(conn, stream)) + break; + + conn->ifc_pii->pii_cleanup(&pi); +} + + +static void +ietf_full_conn_ci_write_ack (struct lsquic_conn *lconn, + struct lsquic_packet_out *packet_out) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + generate_ack_frame_for_pns(conn, packet_out, PNS_APP, lsquic_time_now()); +} + + +static int +ietf_full_conn_ci_want_datagram_write (struct lsquic_conn *lconn, int is_want) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + int old; + + if (conn->ifc_flags & IFC_DATAGRAMS) + { + old = !!(conn->ifc_mflags & MF_WANT_DATAGRAM_WRITE); + if (is_want) + { + conn->ifc_mflags |= MF_WANT_DATAGRAM_WRITE; + if (lsquic_send_ctl_can_send (&conn->ifc_send_ctl)) + lsquic_engine_add_conn_to_tickable(conn->ifc_enpub, + &conn->ifc_conn); + } + else + conn->ifc_mflags &= ~MF_WANT_DATAGRAM_WRITE; + LSQ_DEBUG("turn %s \"want datagram write\" flag", + is_want ? "on" : "off"); + return old; + } + else + return -1; +} + + +static void +ietf_full_conn_ci_client_call_on_new (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + assert(conn->ifc_flags & IFC_CREATED_OK); + lconn->cn_conn_ctx = conn->ifc_enpub->enp_stream_if->on_new_conn( + conn->ifc_enpub->enp_stream_if_ctx, lconn); +} + + +static void +ietf_full_conn_ci_close (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + struct lsquic_stream *stream; + struct lsquic_hash_elem *el; + enum stream_dir sd; + + if (!(conn->ifc_flags & IFC_CLOSING)) + { + for (el = lsquic_hash_first(conn->ifc_pub.all_streams); el; + el = lsquic_hash_next(conn->ifc_pub.all_streams)) + { + stream = lsquic_hashelem_getdata(el); + sd = (stream->id >> SD_SHIFT) & 1; + if (SD_BIDI == sd) + lsquic_stream_maybe_reset(stream, 0, 1); + } + conn->ifc_flags |= IFC_CLOSING; + if (conn_ok_to_close(conn)) + { + conn->ifc_send_flags |= SF_SEND_CONN_CLOSE; + LSQ_DEBUG("ietf_full_conn_ci_close: ok to close: " + "schedule to send CONNECTION_CLOSE"); + } + lsquic_engine_add_conn_to_tickable(conn->ifc_enpub, lconn); + } +} + + +static void +ietf_full_conn_ci_abort (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + LSQ_INFO("User aborted connection"); + conn->ifc_flags |= IFC_ABORTED; + lsquic_engine_add_conn_to_tickable(conn->ifc_enpub, lconn); +} + + +static void +retire_dcid (struct ietf_full_conn *conn, struct dcid_elem **dce) +{ + if ((*dce)->de_hash_el.qhe_flags & QHE_HASHED) + lsquic_hash_erase(conn->ifc_enpub->enp_srst_hash, &(*dce)->de_hash_el); + TAILQ_INSERT_TAIL(&conn->ifc_to_retire, *dce, de_next_to_ret); + ++conn->ifc_n_to_retire; + LSQ_DEBUG("prepare to retire DCID seqno %"PRIu32"", (*dce)->de_seqno); + *dce = NULL; + conn->ifc_send_flags |= SF_SEND_RETIRE_CID; +} + + +static void +retire_seqno (struct ietf_full_conn *conn, unsigned seqno) +{ + struct dcid_elem *dce; + + dce = lsquic_malo_get(conn->ifc_pub.mm->malo.dcid_elem); + if (dce) + { + memset(dce, 0, sizeof(*dce)); + dce->de_seqno = seqno; + TAILQ_INSERT_TAIL(&conn->ifc_to_retire, dce, de_next_to_ret); + ++conn->ifc_n_to_retire; + LSQ_DEBUG("prepare to retire DCID seqno %"PRIu32, seqno); + conn->ifc_send_flags |= SF_SEND_RETIRE_CID; + } + else + LSQ_INFO("%s: cannot allocate dce", __func__); +} + + +/* This function exists for testing purposes. + * + * The user can switch DCIDs and request that the old DCID is retired. + * + * If the user calls this function frequently in a short amount of time, + * this should trigger the CID issuance throttling. + */ +static void +ietf_full_conn_ci_retire_cid (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + struct dcid_elem **el, **dces[2]; + int eq; + /* + * Find two DCIDs: + * 1. the current DCID that will be retire_cid + * 2. an available DCID that will be switched + * Continue searching until there are no more DCIDs + * or when both DCIDs are found. + */ + dces[0] = NULL; // future DCID (does not match current DCID) + dces[1] = NULL; // current DCID (does match current DCID) + for (el = conn->ifc_dces; el < DCES_END(conn) && !(dces[0] && dces[1]); ++el) + if (*el) + { + eq = LSQUIC_CIDS_EQ(&(*el)->de_cid, CUR_DCID(conn)); + if (!dces[eq]) + dces[eq] = el; + } + if (!dces[1]) + { + ABORT_WARN("%s: cannot find own DCID", __func__); + return; + } + if (!dces[0]) + { + LSQ_INFO("No DCID available: cannot switch"); + /* TODO: implemened delayed switch */ + // conn->ifc_flags |= IFC_SWITCH_DCID; + return; + } + /* + * Switch DCID. + */ + *CUR_DCID(conn) = (*dces[0])->de_cid; + if (CUR_CPATH(conn)->cop_flags & COP_SPIN_BIT) + CUR_CPATH(conn)->cop_spin_bit = 0; + LSQ_INFOC("switched DCID to %"CID_FMT, CID_BITS(CUR_DCID(conn))); + /* + * Mark old DCID for retirement. + */ + retire_dcid(conn, dces[1]); +} + + +static void +drop_crypto_streams (struct ietf_full_conn *conn) +{ + struct lsquic_stream **streamp; + unsigned count; + + if ((conn->ifc_flags & (IFC_SERVER|IFC_PROC_CRYPTO)) != IFC_PROC_CRYPTO) + return; + + conn->ifc_flags &= ~IFC_PROC_CRYPTO; + + count = 0; + for (streamp = conn->ifc_u.cli.crypto_streams; streamp < + conn->ifc_u.cli.crypto_streams + sizeof(conn->ifc_u.cli.crypto_streams) + / sizeof(conn->ifc_u.cli.crypto_streams[0]); ++streamp) + if (*streamp) + { + lsquic_stream_force_finish(*streamp); + *streamp = NULL; + ++count; + } + + LSQ_DEBUG("dropped %u crypto stream%.*s", count, count != 1, "s"); +} + + +static void +ietf_full_conn_ci_destroy (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + struct lsquic_stream **streamp, *stream; + struct stream_id_to_ss *sits; + struct dcid_elem **dcep, *dce; + struct lsquic_hash_elem *el; + unsigned i; + + if (!(conn->ifc_flags & IFC_SERVER)) + { + for (streamp = conn->ifc_u.cli.crypto_streams; streamp < + conn->ifc_u.cli.crypto_streams + + sizeof(conn->ifc_u.cli.crypto_streams) + / sizeof(conn->ifc_u.cli.crypto_streams[0]); ++streamp) + if (*streamp) + lsquic_stream_destroy(*streamp); + } + while ((el = lsquic_hash_first(conn->ifc_pub.all_streams))) + { + stream = lsquic_hashelem_getdata(el); + lsquic_hash_erase(conn->ifc_pub.all_streams, el); + lsquic_stream_destroy(stream); + } + if (conn->ifc_flags & IFC_HTTP) + { + lsquic_qdh_cleanup(&conn->ifc_qdh); + lsquic_qeh_cleanup(&conn->ifc_qeh); + } + for (dcep = conn->ifc_dces; dcep < conn->ifc_dces + sizeof(conn->ifc_dces) + / sizeof(conn->ifc_dces[0]); ++dcep) + if (*dcep) + { + if ((*dcep)->de_hash_el.qhe_flags & QHE_HASHED) + lsquic_hash_erase(conn->ifc_enpub->enp_srst_hash, + &(*dcep)->de_hash_el); + lsquic_malo_put(*dcep); + } + while ((dce = TAILQ_FIRST(&conn->ifc_to_retire))) + { + TAILQ_REMOVE(&conn->ifc_to_retire, dce, de_next_to_ret); + --conn->ifc_n_to_retire; + lsquic_malo_put(dce); + } + lsquic_send_ctl_cleanup(&conn->ifc_send_ctl); + for (i = 0; i < N_PNS; ++i) + lsquic_rechist_cleanup(&conn->ifc_rechist[i]); + lsquic_malo_destroy(conn->ifc_pub.packet_out_malo); + if (conn->ifc_flags & IFC_CREATED_OK) + conn->ifc_enpub->enp_stream_if->on_conn_closed(&conn->ifc_conn); + assert(conn->ifc_conn.cn_conn_ctx == NULL); + if (conn->ifc_conn.cn_enc_session) + conn->ifc_conn.cn_esf.i->esfi_destroy(conn->ifc_conn.cn_enc_session); + while (!STAILQ_EMPTY(&conn->ifc_stream_ids_to_ss)) + { + sits = STAILQ_FIRST(&conn->ifc_stream_ids_to_ss); + STAILQ_REMOVE_HEAD(&conn->ifc_stream_ids_to_ss, sits_next); + free(sits); + } + if (conn->ifc_flags & IFC_SERVER) + { + if (conn->ifc_pub.u.ietf.promises) + lsquic_hash_destroy(conn->ifc_pub.u.ietf.promises); + } + for (i = 0; i < N_SITS; ++i) + lsquic_set64_cleanup(&conn->ifc_closed_stream_ids[i]); + if (conn->ifc_bpus) + { + for (el = lsquic_hash_first(conn->ifc_bpus); el; + el = lsquic_hash_next(conn->ifc_bpus)) + free(lsquic_hashelem_getdata(el)); + lsquic_hash_destroy(conn->ifc_bpus); + } + lsquic_hash_destroy(conn->ifc_pub.all_streams); +#if LSQUIC_CONN_STATS + if (conn->ifc_flags & IFC_CREATED_OK) + { + LSQ_NOTICE("# ticks: %lu", conn->ifc_stats.n_ticks); + LSQ_NOTICE("sent %lu packets", conn->ifc_stats.out.packets); + LSQ_NOTICE("received %lu packets, of which %lu were not decryptable, %lu were " + "dups and %lu were errors; sent %lu packets, avg stream data per outgoing" + " packet is %lu bytes", + conn->ifc_stats.in.packets, conn->ifc_stats.in.undec_packets, + conn->ifc_stats.in.dup_packets, conn->ifc_stats.in.err_packets, + conn->ifc_stats.out.packets, + conn->ifc_stats.out.stream_data_sz / + (conn->ifc_stats.out.packets ? conn->ifc_stats.out.packets : 1)); + if (conn->ifc_flags & IFC_DELAYED_ACKS) + LSQ_NOTICE("delayed ACKs settings: (%u/%.3f/%.3f/%.3f/%.3f/%.3f); " + "packet tolerances sent: count: %u, min: %u, max: %u", + conn->ifc_settings->es_ptpc_periodicity, + conn->ifc_settings->es_ptpc_target, + conn->ifc_settings->es_ptpc_prop_gain, + conn->ifc_settings->es_ptpc_int_gain, + conn->ifc_settings->es_ptpc_err_thresh, + conn->ifc_settings->es_ptpc_err_divisor, + conn->ifc_ack_freq_seqno, + conn->ifc_min_pack_tol_sent, conn->ifc_max_pack_tol_sent); + LSQ_NOTICE("ACKs: delayed acks on: %s; in: %lu; processed: %lu; merged: %lu", + conn->ifc_flags & IFC_DELAYED_ACKS ? "yes" : "no", + conn->ifc_stats.in.n_acks, conn->ifc_stats.in.n_acks_proc, + conn->ifc_stats.in.n_acks_merged); + } + if (conn->ifc_last_stats) + free(conn->ifc_last_stats); +#endif + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "full connection destroyed"); + free(conn->ifc_errmsg); + free(conn); +} + + +static uint64_t +calc_drain_time (const struct ietf_full_conn *conn) +{ + lsquic_time_t drain_time, pto, srtt, var; + + /* PTO Calculation: [draft-ietf-quic-recovery-18], Section 6.2.2.1; + * Drain time: [draft-ietf-quic-transport-19], Section 10.1. + */ + srtt = lsquic_rtt_stats_get_srtt(&conn->ifc_pub.rtt_stats); + var = lsquic_rtt_stats_get_rttvar(&conn->ifc_pub.rtt_stats); + pto = srtt + 4 * var + TP_DEF_MAX_ACK_DELAY * 1000; + drain_time = 3 * pto; + + return drain_time; +} + + +static lsquic_time_t +ietf_full_conn_ci_drain_time (const struct lsquic_conn *lconn) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + lsquic_time_t drain_time; + + /* Only applicable to a server whose connection was not timed out */ + if ((conn->ifc_flags & (IFC_SERVER|IFC_TIMED_OUT)) != IFC_SERVER) + { + LSQ_DEBUG("drain time is zero (don't drain)"); + return 0; + } + + drain_time = calc_drain_time(conn); + LSQ_DEBUG("drain time is %"PRIu64" usec", drain_time); + return drain_time; +} + + +static void +ietf_full_conn_ci_going_away (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + + if (conn->ifc_flags & IFC_HTTP) + { + if (!(conn->ifc_flags & (IFC_CLOSING|IFC_GOING_AWAY))) + { + LSQ_INFO("connection marked as going away, last stream: %" PRIu64, + conn->ifc_max_req_id); + conn->ifc_flags |= IFC_GOING_AWAY; + const lsquic_stream_id_t stream_id = conn->ifc_max_req_id + N_SITS; + if (valid_stream_id(stream_id)) + { + if (0 == lsquic_hcso_write_goaway(&conn->ifc_hcso, + conn->ifc_max_req_id)) + lsquic_engine_add_conn_to_tickable(conn->ifc_enpub, lconn); + else + /* We're already going away, don't abort because of this */ + LSQ_WARN("could not write GOAWAY frame"); + } + maybe_close_conn(conn); + } + } + else + LSQ_NOTICE("going away has no effect in non-HTTP mode"); +} + + +static void +handshake_failed (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + LSQ_DEBUG("handshake failed"); + lsquic_alarmset_unset(&conn->ifc_alset, AL_HANDSHAKE); + conn->ifc_flags |= IFC_HSK_FAILED; +} + + +static struct dcid_elem * +get_new_dce (struct ietf_full_conn *conn) +{ + struct dcid_elem **el; + + for (el = conn->ifc_dces; el < conn->ifc_dces + sizeof(conn->ifc_dces) + / sizeof(conn->ifc_dces[0]); ++el) + if (!*el) + return *el = lsquic_malo_get(conn->ifc_pub.mm->malo.dcid_elem); + + return NULL; +} + + +static void +queue_streams_blocked_frame (struct ietf_full_conn *conn, enum stream_dir sd) +{ + enum stream_id_type sit; + uint64_t limit; + + if (0 == (conn->ifc_send_flags & (SF_SEND_STREAMS_BLOCKED << sd))) + { + conn->ifc_send_flags |= SF_SEND_STREAMS_BLOCKED << sd; + sit = gen_sit(conn->ifc_flags & IFC_SERVER, sd); + limit = conn->ifc_max_allowed_stream_id[sit] >> SIT_SHIFT; + conn->ifc_send.streams_blocked[sd] = limit; + LSQ_DEBUG("scheduled %sdirectional STREAMS_BLOCKED (limit=%"PRIu64 + ") frame", sd == SD_BIDI ? "bi" : "uni", limit); + } + else + LSQ_DEBUG("%sdirectional STREAMS_BLOCKED frame already queued", + sd == SD_BIDI ? "bi" : "uni"); +} + + +static void +retire_cid_from_tp (struct ietf_full_conn *conn, + const struct transport_params *params) +{ + struct dcid_elem *dce; + + dce = get_new_dce(conn); + if (!dce) + { + ABORT_ERROR("cannot allocate DCE"); + return; + } + + memset(dce, 0, sizeof(*dce)); + dce->de_cid = params->tp_preferred_address.cid; + dce->de_seqno = 1; + memcpy(dce->de_srst, params->tp_preferred_address.srst, + sizeof(dce->de_srst)); + dce->de_flags = DE_SRST; + TAILQ_INSERT_TAIL(&conn->ifc_to_retire, dce, de_next_to_ret); + ++conn->ifc_n_to_retire; + LSQ_DEBUG("prepare to retire DCID seqno %"PRIu32, dce->de_seqno); + conn->ifc_send_flags |= SF_SEND_RETIRE_CID; +} + + +static enum { BM_MIGRATING, BM_NOT_MIGRATING, BM_ERROR, } +try_to_begin_migration (struct ietf_full_conn *conn, + const struct transport_params *params) +{ + struct conn_path *copath; + struct dcid_elem *dce; + int is_ipv6; + union { + struct sockaddr_in v4; + struct sockaddr_in6 v6; + } sockaddr; + + if (!conn->ifc_settings->es_allow_migration) + { + LSQ_DEBUG("Migration not allowed: retire PreferredAddress CID"); + return BM_NOT_MIGRATING; + } + + if (conn->ifc_conn.cn_version <= LSQVER_ID27 /* Starting with ID-29, + disable_active_migration TP applies only to the time period during + the handshake. Our client does not migrate during the handshake: + this code runs only after handshake has succeeded. */ + && (params->tp_set & (1 << TPI_DISABLE_ACTIVE_MIGRATION))) + { + LSQ_DEBUG("TP disables migration: retire PreferredAddress CID"); + return BM_NOT_MIGRATING; + } + + is_ipv6 = NP_IS_IPv6(CUR_NPATH(conn)); + if ((is_ipv6 && !lsquic_tp_has_pref_ipv6(params)) + || (!is_ipv6 && !lsquic_tp_has_pref_ipv4(params))) + { + /* XXX This is a limitation in the client code outside of the library. + * To support cross-IP-version migration, we need to add some callbacks + * to open a different socket. + */ + LSQ_DEBUG("Cannot migrate from IPv%u to IPv%u", is_ipv6 ? 6 : 4, + is_ipv6 ? 4 : 6); + return BM_NOT_MIGRATING; + } + + if (0 == params->tp_preferred_address.cid.len) + { + /* TODO: mark with a new flag and begin migration when a non-zero length + * DCID becomes available. + */ + LSQ_DEBUG("Cannot migrate using zero-length DCID"); + return BM_NOT_MIGRATING; + } + + dce = get_new_dce(conn); + if (!dce) + { + ABORT_WARN("cannot allocate DCE"); + return BM_ERROR; + } + + memset(dce, 0, sizeof(*dce)); + dce->de_cid = params->tp_preferred_address.cid; + dce->de_seqno = 1; + dce->de_flags = DE_SRST; + memcpy(dce->de_srst, params->tp_preferred_address.srst, + sizeof(dce->de_srst)); + if (conn->ifc_enpub->enp_srst_hash) + { + if (!lsquic_hash_insert(conn->ifc_enpub->enp_srst_hash, + dce->de_srst, sizeof(dce->de_srst), &conn->ifc_conn, + &dce->de_hash_el)) + { + lsquic_malo_put(dce); + ABORT_WARN("cannot insert DCE"); + return BM_ERROR; + } + } + + if (is_ipv6) + { + sockaddr.v6.sin6_family = AF_INET6; + sockaddr.v6.sin6_port = htons(params->tp_preferred_address.ipv6_port); + memcpy(&sockaddr.v6.sin6_addr, params->tp_preferred_address.ipv6_addr, + sizeof(sockaddr.v6.sin6_addr)); + } + else + { + sockaddr.v4.sin_family = AF_INET; + sockaddr.v4.sin_port = htons(params->tp_preferred_address.ipv4_port); + memcpy(&sockaddr.v4.sin_addr, params->tp_preferred_address.ipv4_addr, + sizeof(sockaddr.v4.sin_addr)); + } + + copath = &conn->ifc_paths[1]; + assert(!(conn->ifc_used_paths & (1 << (copath - conn->ifc_paths)))); + + migra_begin(conn, copath, dce, (struct sockaddr *) &sockaddr, params); + return BM_MIGRATING; +} + + +static void +maybe_start_migration (struct ietf_full_conn *conn) +{ + struct lsquic_conn *const lconn = &conn->ifc_conn; + const struct transport_params *params; + + params = lconn->cn_esf.i->esfi_get_peer_transport_params( + lconn->cn_enc_session); + if (params->tp_set & (1 << TPI_PREFERRED_ADDRESS)) + switch (try_to_begin_migration(conn, params)) + { + case BM_MIGRATING: + break; + case BM_NOT_MIGRATING: + if (lconn->cn_version == LSQVER_ID27) + retire_cid_from_tp(conn, params); + else + { +/* + * [draft-ietf-quic-transport-28] Section 5.1.1: + " Connection IDs that are issued and not + " retired are considered active; any active connection ID is valid for + " use with the current connection at any time, in any packet type. + " This includes the connection ID issued by the server via the + " preferred_address transport parameter. + */ + LSQ_DEBUG("not migrating: save DCID from transport params"); + (void) insert_new_dcid(conn, 1, + ¶ms->tp_preferred_address.cid, + params->tp_preferred_address.srst, 0); + } + break; + case BM_ERROR: + ABORT_QUIETLY(0, TEC_INTERNAL_ERROR, "error initiating migration"); + break; + } +} + + +static int +apply_trans_params (struct ietf_full_conn *conn, + const struct transport_params *params) +{ + struct lsquic_stream *stream; + struct lsquic_hash_elem *el; + enum stream_id_type sit; + uint64_t limit; + + if ((params->tp_set & (1 << TPI_LOSS_BITS)) + && conn->ifc_settings->es_ql_bits == 2) + { + LSQ_DEBUG("turn on QL loss bits"); + lsquic_send_ctl_do_ql_bits(&conn->ifc_send_ctl); + } + + if (params->tp_init_max_streams_bidi > (1ull << 60) + || params->tp_init_max_streams_uni > (1ull << 60)) + { + if (params->tp_init_max_streams_bidi > (1ull << 60)) + ABORT_QUIETLY(0, TEC_STREAM_LIMIT_ERROR, "init_max_streams_bidi is " + "too large: %"PRIu64, params->tp_init_max_streams_bidi); + else + ABORT_QUIETLY(0, TEC_STREAM_LIMIT_ERROR, "init_max_streams_uni is " + "too large: %"PRIu64, params->tp_init_max_streams_uni); + return -1; + } + + sit = gen_sit(conn->ifc_flags & IFC_SERVER, SD_BIDI); + conn->ifc_max_allowed_stream_id[sit] = + params->tp_init_max_streams_bidi << SIT_SHIFT; + sit = gen_sit(conn->ifc_flags & IFC_SERVER, SD_UNI); + conn->ifc_max_allowed_stream_id[sit] = + params->tp_init_max_streams_uni << SIT_SHIFT; + + conn->ifc_max_stream_data_uni = params->tp_init_max_stream_data_uni; + + if (params->tp_init_max_data < conn->ifc_pub.conn_cap.cc_sent) + { + ABORT_WARN("peer specified init_max_data=%"PRIu64" bytes, which is " + "smaller than the amount of data already sent on this connection " + "(%"PRIu64" bytes)", params->tp_init_max_data, + conn->ifc_pub.conn_cap.cc_sent); + return -1; + } + + conn->ifc_pub.conn_cap.cc_max = params->tp_init_max_data; + + for (el = lsquic_hash_first(conn->ifc_pub.all_streams); el; + el = lsquic_hash_next(conn->ifc_pub.all_streams)) + { + stream = lsquic_hashelem_getdata(el); + if (is_our_stream(conn, stream)) + limit = params->tp_init_max_stream_data_bidi_remote; + else + limit = params->tp_init_max_stream_data_bidi_local; + if (0 != lsquic_stream_set_max_send_off(stream, limit)) + { + ABORT_WARN("cannot set peer-supplied max_stream_data=%"PRIu64 + "on stream %"PRIu64, limit, stream->id); + return -1; + } + } + + if (conn->ifc_flags & IFC_SERVER) + conn->ifc_cfg.max_stream_send + = params->tp_init_max_stream_data_bidi_local; + else + conn->ifc_cfg.max_stream_send + = params->tp_init_max_stream_data_bidi_remote; + conn->ifc_cfg.ack_exp = params->tp_ack_delay_exponent; + + switch ((!!conn->ifc_settings->es_idle_timeout << 1) + | !!params->tp_max_idle_timeout) + { + case (0 << 1) | 0: + LSQ_DEBUG("neither side specified max idle time out, turn it off"); + break; + case (0 << 1) | 1: + LSQ_DEBUG("peer specified max idle timeout of %"PRIu64" ms (vs ours " + "of zero): use it", params->tp_max_idle_timeout); + conn->ifc_idle_to = params->tp_max_idle_timeout * 1000; + break; + case (1 << 1) | 0: + LSQ_DEBUG("peer did not specify max idle timeout, while ours is " + "%u ms: use it", conn->ifc_settings->es_idle_timeout * 1000); + conn->ifc_idle_to = conn->ifc_settings->es_idle_timeout * 1000000; + break; + default:/* (1 << 1) | 1 */ + LSQ_DEBUG("our max idle timeout is %u ms, peer's is %"PRIu64" ms; " + "use minimum value of %"PRIu64" ms", + conn->ifc_settings->es_idle_timeout * 1000, + params->tp_max_idle_timeout, + MIN(conn->ifc_settings->es_idle_timeout * 1000, + params->tp_max_idle_timeout)); + conn->ifc_idle_to = 1000 * MIN(conn->ifc_settings->es_idle_timeout + * 1000, params->tp_max_idle_timeout); + break; + } + + if (conn->ifc_idle_to >= 2000000 + && conn->ifc_enpub->enp_settings.es_ping_period) + conn->ifc_ping_period = conn->ifc_idle_to / 2; + else + conn->ifc_ping_period = 0; + LSQ_DEBUG("PING period is set to %"PRIu64" usec", conn->ifc_ping_period); + + if (conn->ifc_settings->es_delayed_acks + && (params->tp_set + & ((1 << TPI_MIN_ACK_DELAY)|(1 << TPI_MIN_ACK_DELAY_02)))) + { + /* We do not use the min_ack_delay value for anything at the moment, + * as ACK_FREQUENCY frames we generate do not change the peer's max + * ACK delay. When or if we do decide to do it, don't forget to use + * the correct value here -- based on which TP is set! + */ + LSQ_DEBUG("delayed ACKs enabled"); + conn->ifc_flags |= IFC_DELAYED_ACKS; + lsquic_alarmset_init_alarm(&conn->ifc_alset, AL_PACK_TOL, + packet_tolerance_alarm_expired, conn); + } + if (conn->ifc_settings->es_timestamps + && (params->tp_set & (1 << TPI_TIMESTAMPS)) + && (params->tp_numerics[TPI_TIMESTAMPS] & TS_WANT_THEM)) + { + LSQ_DEBUG("timestamps enabled: will send TIMESTAMP frames"); + conn->ifc_flags |= IFC_TIMESTAMPS; + } + if (conn->ifc_settings->es_datagrams + && (params->tp_set & (1 << TPI_MAX_DATAGRAM_FRAME_SIZE))) + { + LSQ_DEBUG("datagrams enabled"); + conn->ifc_flags |= IFC_DATAGRAMS; + conn->ifc_max_dg_sz = + params->tp_numerics[TPI_MAX_DATAGRAM_FRAME_SIZE] > USHRT_MAX + ? USHRT_MAX : params->tp_numerics[TPI_MAX_DATAGRAM_FRAME_SIZE]; + } + + conn->ifc_pub.max_peer_ack_usec = params->tp_max_ack_delay * 1000; + + if ((params->tp_set & (1 << TPI_MAX_UDP_PAYLOAD_SIZE)) + /* Second check is so that we don't truncate a large value when + * storing it in unsigned short. + */ + && params->tp_numerics[TPI_MAX_UDP_PAYLOAD_SIZE] + < TP_DEF_MAX_UDP_PAYLOAD_SIZE) + conn->ifc_max_udp_payload = params->tp_numerics[TPI_MAX_UDP_PAYLOAD_SIZE]; + else + conn->ifc_max_udp_payload = TP_DEF_MAX_UDP_PAYLOAD_SIZE; + + if (conn->ifc_max_udp_payload < CUR_NPATH(conn)->np_pack_size) + { + CUR_NPATH(conn)->np_pack_size = conn->ifc_max_udp_payload; + LSQ_DEBUG("decrease packet size to %hu bytes", + CUR_NPATH(conn)->np_pack_size); + } + + if (params->tp_active_connection_id_limit > conn->ifc_conn.cn_n_cces) + conn->ifc_active_cids_limit = conn->ifc_conn.cn_n_cces; + else + conn->ifc_active_cids_limit = params->tp_active_connection_id_limit; + conn->ifc_first_active_cid_seqno = conn->ifc_scid_seqno; + + return 0; +} + + +static void +randomize_qpack_settings (struct ietf_full_conn *conn, const char *side, + unsigned *dyn_table_size, unsigned *max_risked_streams) +{ + const unsigned char nybble = lsquic_crand_get_nybble( + conn->ifc_enpub->enp_crand); + /* For each setting, select one of four levels: + * Table size: 0, 1/4, 1/2, and 1/1 of dyn_table_size + * Risked streams: 0, 1, 5, and max_risked_streams + */ + switch (nybble & 3) + { case 0: *dyn_table_size = 0; break; + case 1: *dyn_table_size /= 4; break; + case 2: *dyn_table_size /= 2; break; + default: break; + } + if (*dyn_table_size) + switch ((nybble >> 2) & 3) + { case 0: *max_risked_streams = 0; break; + case 1: *max_risked_streams = MIN(1, *max_risked_streams); break; + case 2: *max_risked_streams = MIN(5, *max_risked_streams); break; + default: break; + } + else + *max_risked_streams = 0; + LSQ_INFO("randomized QPACK %s settings: table size: %u; risked " + "streams: %u", side, *dyn_table_size, *max_risked_streams); +} + + +static int +init_http (struct ietf_full_conn *conn) +{ + unsigned max_risked_streams, dyn_table_size; + + fiu_return_on("full_conn_ietf/init_http", -1); + lsquic_qeh_init(&conn->ifc_qeh, &conn->ifc_conn); + if (conn->ifc_settings->es_qpack_experiment) + { + conn->ifc_qeh.qeh_exp_rec = lsquic_qpack_exp_new(); + if (conn->ifc_qeh.qeh_exp_rec) + { + conn->ifc_qeh.qeh_exp_rec->qer_flags |= QER_SERVER & conn->ifc_flags; + conn->ifc_qeh.qeh_exp_rec->qer_flags |= QER_ENCODER; + } + } + if (0 == avail_streams_count(conn, conn->ifc_flags & IFC_SERVER, + SD_UNI)) + { + ABORT_QUIETLY(1, HEC_GENERAL_PROTOCOL_ERROR, "cannot create " + "control stream due to peer-imposed limit"); + conn->ifc_error = CONN_ERR(1, HEC_GENERAL_PROTOCOL_ERROR); + return -1; + } + if (0 != create_ctl_stream_out(conn)) + { + ABORT_WARN("cannot create outgoing control stream"); + return -1; + } + dyn_table_size = conn->ifc_settings->es_qpack_dec_max_size; + max_risked_streams = conn->ifc_settings->es_qpack_dec_max_blocked; + if (conn->ifc_settings->es_qpack_experiment == 2) + randomize_qpack_settings(conn, "decoder", &dyn_table_size, + &max_risked_streams); + if (0 != lsquic_hcso_write_settings(&conn->ifc_hcso, + conn->ifc_settings->es_max_header_list_size, dyn_table_size, + max_risked_streams, conn->ifc_flags & IFC_SERVER +#if LSQUIC_WEBTRANSPORT_SERVER_SUPPORT + , + conn->ifc_settings->es_webtransport_server, + conn->ifc_settings->es_max_webtransport_server_streams +#endif + )) + { + ABORT_WARN("cannot write SETTINGS"); + return -1; + } + if (!(conn->ifc_flags & IFC_SERVER) + && (conn->ifc_u.cli.ifcli_flags & IFCLI_PUSH_ENABLED) + && 0 != lsquic_hcso_write_max_push_id(&conn->ifc_hcso, + conn->ifc_u.cli.ifcli_max_push_id)) + { + ABORT_WARN("cannot write MAX_PUSH_ID"); + return -1; + } + if (0 != lsquic_qdh_init(&conn->ifc_qdh, &conn->ifc_conn, + conn->ifc_flags & IFC_SERVER, conn->ifc_enpub, + dyn_table_size, max_risked_streams)) + { + ABORT_WARN("cannot initialize QPACK decoder"); + return -1; + } + if (avail_streams_count(conn, conn->ifc_flags & IFC_SERVER, SD_UNI) > 0) + { + if (0 != create_qdec_stream_out(conn)) + { + ABORT_WARN("cannot create outgoing QPACK decoder stream"); + return -1; + } + } + else + { + queue_streams_blocked_frame(conn, SD_UNI); + LSQ_DEBUG("cannot create outgoing QPACK decoder stream due to " + "unidir limits"); + } + conn->ifc_flags |= IFC_HTTP_INITED; + return 0; +} + + +static int +handshake_ok (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) lconn; + struct dcid_elem *dce; + const struct transport_params *params; + char buf[MAX_TP_STR_SZ]; + + fiu_return_on("full_conn_ietf/handshake_ok", -1); + + /* Need to set this flag even we hit an error in the rest of this funciton. + * This is because this flag is used to calculate packet out header size + */ + lconn->cn_flags |= LSCONN_HANDSHAKE_DONE; + + params = lconn->cn_esf.i->esfi_get_peer_transport_params( + lconn->cn_enc_session); + if (!params) + { + ABORT_WARN("could not get transport parameters"); + return -1; + } + + LSQ_DEBUG("peer transport parameters: %s", + ((lconn->cn_version == LSQVER_ID27 ? lsquic_tp_to_str_27 + : lsquic_tp_to_str)(params, buf, sizeof(buf)), buf)); + if (0 != apply_trans_params(conn, params)) + return -1; + + dce = get_new_dce(conn); + if (!dce) + { + ABORT_WARN("cannot allocate DCE"); + return -1; + } + + memset(dce, 0, sizeof(*dce)); + dce->de_cid = *CUR_DCID(conn); + dce->de_seqno = 0; + if (params->tp_set & (1 << TPI_STATELESS_RESET_TOKEN)) + { + memcpy(dce->de_srst, params->tp_stateless_reset_token, + sizeof(dce->de_srst)); + dce->de_flags = DE_SRST | DE_ASSIGNED; + if (conn->ifc_enpub->enp_srst_hash) + { + if (!lsquic_hash_insert(conn->ifc_enpub->enp_srst_hash, + dce->de_srst, sizeof(dce->de_srst), &conn->ifc_conn, + &dce->de_hash_el)) + { + ABORT_WARN("cannot insert DCE"); + return -1; + } + } + } + else + dce->de_flags = DE_ASSIGNED; + + if (!(conn->ifc_flags & IFC_SERVER) + && (params->tp_set & (1 << TPI_VERSION_INFORMATION))) + { + LSQ_DEBUG("server chosen version %s", + lsquic_ver2str[params->tp_chosen_version]); + if (((1 << params->tp_chosen_version) + & conn->ifc_settings->es_versions) == 0) + { + ABORT_QUIETLY(0, TEC_VERSION_NEGOTIATION_ERROR, + "server chosen version %s is not supported", + lsquic_ver2str[params->tp_chosen_version] + ); + return -1; + } +// if (conn->ifc_conn.cn_version != params->tp_chosen_version) +// { +// LSQ_DEBUG("version negociation: switch version from %s to %s", +// lsquic_ver2str[conn->ifc_conn.cn_version], +// lsquic_ver2str[params->tp_chosen_version]); +// conn->ifc_conn.cn_version = params->tp_chosen_version; +// } + } + + LSQ_INFO("applied peer transport parameters"); + + if ((conn->ifc_flags & (IFC_HTTP|IFC_HTTP_INITED)) == IFC_HTTP) + if (0 != init_http(conn)) + return -1; + + if (conn->ifc_settings->es_dplpmtud) + conn->ifc_mflags |= MF_CHECK_MTU_PROBE; + + if (can_issue_cids(conn)) + conn->ifc_send_flags |= SF_SEND_NEW_CID; + maybe_create_delayed_streams(conn); + + if (!(conn->ifc_flags & IFC_SERVER)) + lsquic_send_ctl_0rtt_to_1rtt(&conn->ifc_send_ctl); + return 0; +} + + +static void +ietf_full_conn_ci_hsk_done (struct lsquic_conn *lconn, + enum lsquic_hsk_status status) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) lconn; + + lsquic_alarmset_unset(&conn->ifc_alset, AL_HANDSHAKE); + + switch (status) + { + case LSQ_HSK_OK: + case LSQ_HSK_RESUMED_OK: + if (0 == handshake_ok(lconn)) + { + if (!(conn->ifc_flags & IFC_SERVER)) + lsquic_send_ctl_begin_optack_detection(&conn->ifc_send_ctl); + } + else + { + LSQ_INFO("handshake was reported successful, but later processing " + "produced an error"); + status = LSQ_HSK_FAIL; + handshake_failed(lconn); + } + break; + default: + case LSQ_HSK_RESUMED_FAIL: /* IETF crypto never returns this */ + assert(0); + /* fall-through */ + case LSQ_HSK_FAIL: + handshake_failed(lconn); + break; + } + if (conn->ifc_enpub->enp_stream_if->on_hsk_done) + conn->ifc_enpub->enp_stream_if->on_hsk_done(lconn, status); +} + + +static void +ietf_full_conn_ci_tls_alert (struct lsquic_conn *lconn, uint8_t alert) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) lconn; + ABORT_QUIETLY(0, 0x100 + alert, "TLS alert %"PRIu8, alert); +} + + +static int +ietf_full_conn_ci_report_live (struct lsquic_conn *lconn, lsquic_time_t now) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + + if (conn->ifc_last_live_update + 30000000 < now) + { + conn->ifc_last_live_update = now; + return 1; + } + else + return 0; +} + + +static int +ietf_full_conn_ci_is_push_enabled (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) lconn; + + return (conn->ifc_flags & IFC_SERVER) + && (conn->ifc_u.ser.ifser_flags + & (IFSER_PUSH_ENABLED|IFSER_MAX_PUSH_ID)) + == (IFSER_PUSH_ENABLED|IFSER_MAX_PUSH_ID) + && conn->ifc_u.ser.ifser_next_push_id + <= conn->ifc_u.ser.ifser_max_push_id + && !either_side_going_away(conn) + && avail_streams_count(conn, 1, SD_UNI) > 0 + ; +} + + +static void +undo_stream_creation (struct ietf_full_conn *conn, + struct lsquic_stream *stream) +{ + enum stream_dir sd; + + assert(stream->sm_hash_el.qhe_flags & QHE_HASHED); + assert(!(stream->stream_flags & STREAM_ONCLOSE_DONE)); + + LSQ_DEBUG("undo creation of stream %"PRIu64, stream->id); + lsquic_hash_erase(conn->ifc_pub.all_streams, &stream->sm_hash_el); + sd = (stream->id >> SD_SHIFT) & 1; + --conn->ifc_n_created_streams[sd]; + lsquic_stream_destroy(stream); +} + + +/* This function is long because there are a lot of steps to perform, several + * things can go wrong, which we want to roll back, yet at the same time we + * want to do everything efficiently. + */ +static int +ietf_full_conn_ci_push_stream (struct lsquic_conn *lconn, void *hset, + struct lsquic_stream *dep_stream, const struct lsquic_http_headers *headers) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) lconn; + unsigned char *header_block_buf, *end, *p; + size_t hea_sz, enc_sz; + ssize_t prefix_sz; + struct lsquic_hash_elem *el; + struct push_promise *promise; + struct lsquic_stream *pushed_stream; + struct uncompressed_headers *uh; + enum lsqpack_enc_status enc_st; + int i; + unsigned char discard[2]; + struct lsxpack_header *xhdr; + + if (!ietf_full_conn_ci_is_push_enabled(lconn) + || !lsquic_stream_can_push(dep_stream)) + { + LSQ_DEBUG("cannot push using stream %"PRIu64, dep_stream->id); + return -1; + } + + if (!hset) + { + LSQ_ERROR("header set must be specified when pushing"); + return -1; + } + + if (0 != lsqpack_enc_start_header(&conn->ifc_qeh.qeh_encoder, 0, 0)) + { + LSQ_WARN("cannot start header for push stream"); + return -1; + } + + header_block_buf = lsquic_mm_get_4k(conn->ifc_pub.mm); + if (!header_block_buf) + { + LSQ_WARN("cannot allocate 4k"); + (void) lsqpack_enc_cancel_header(&conn->ifc_qeh.qeh_encoder); + return -1; + } + + /* Generate header block in cheap 4K memory. It it will be copied to + * a new push_promise object. + */ + p = header_block_buf; + end = header_block_buf + 0x1000; + enc_sz = 0; /* Should not change */ + for (i = 0; i < headers->count; ++i) + { + xhdr = &headers->headers[i]; + if (!xhdr->buf) + continue; + hea_sz = end - p; + enc_st = lsqpack_enc_encode(&conn->ifc_qeh.qeh_encoder, NULL, + &enc_sz, p, &hea_sz, xhdr, LQEF_NO_HIST_UPD|LQEF_NO_DYN); + if (enc_st == LQES_OK) + p += hea_sz; + else + { + (void) lsqpack_enc_cancel_header(&conn->ifc_qeh.qeh_encoder); + lsquic_mm_put_4k(conn->ifc_pub.mm, header_block_buf); + LSQ_DEBUG("cannot encode header field for push %u", enc_st); + return -1; + } + } + prefix_sz = lsqpack_enc_end_header(&conn->ifc_qeh.qeh_encoder, + discard, sizeof(discard), NULL); + if (!(prefix_sz == 2 && discard[0] == 0 && discard[1] == 0)) + { + LSQ_WARN("stream push: unexpected prefix values %zd, %hhu, %hhu", + prefix_sz, discard[0], discard[1]); + lsquic_mm_put_4k(conn->ifc_pub.mm, header_block_buf); + return -1; + } + LSQ_DEBUG("generated push promise header block of %ld bytes", + (long) (p - header_block_buf)); + + pushed_stream = create_push_stream(conn); + if (!pushed_stream) + { + LSQ_WARN("could not create push stream"); + lsquic_mm_put_4k(conn->ifc_pub.mm, header_block_buf); + return -1; + } + + promise = malloc(sizeof(*promise) + (p - header_block_buf)); + if (!promise) + { + LSQ_WARN("stream push: cannot allocate promise"); + lsquic_mm_put_4k(conn->ifc_pub.mm, header_block_buf); + undo_stream_creation(conn, pushed_stream); + return -1; + } + + uh = malloc(sizeof(*uh)); + if (!uh) + { + LSQ_WARN("stream push: cannot allocate uh"); + free(promise); + lsquic_mm_put_4k(conn->ifc_pub.mm, header_block_buf); + undo_stream_creation(conn, pushed_stream); + return -1; + } + uh->uh_stream_id = pushed_stream->id; + uh->uh_oth_stream_id = 0; + uh->uh_weight = lsquic_stream_priority(dep_stream) / 2 + 1; + uh->uh_exclusive = 0; + uh->uh_flags = UH_FIN; + uh->uh_hset = hset; + uh->uh_next = NULL; + + memset(promise, 0, sizeof(*promise)); + promise->pp_refcnt = 1; /* This function itself keeps a reference */ + memcpy(promise->pp_content_buf, header_block_buf, p - header_block_buf); + promise->pp_content_len = p - header_block_buf; + promise->pp_id = conn->ifc_u.ser.ifser_next_push_id++; + lsquic_mm_put_4k(conn->ifc_pub.mm, header_block_buf); + + el = lsquic_hash_insert(conn->ifc_pub.u.ietf.promises, + &promise->pp_id, sizeof(promise->pp_id), promise, + &promise->pp_hash_id); + if (!el) + { + LSQ_WARN("cannot insert push promise (ID)"); + undo_stream_creation(conn, pushed_stream); + lsquic_pp_put(promise, conn->ifc_pub.u.ietf.promises); + free(uh); + return -1; + } + + if (0 != lsquic_stream_push_promise(dep_stream, promise)) + { + LSQ_DEBUG("push promise failed"); + undo_stream_creation(conn, pushed_stream); + lsquic_pp_put(promise, conn->ifc_pub.u.ietf.promises); + free(uh); + return -1; + } + + if (0 != lsquic_stream_uh_in(pushed_stream, uh)) + { + LSQ_WARN("stream barfed when fed synthetic request"); + undo_stream_creation(conn, pushed_stream); + free(uh); + if (0 != lsquic_hcso_write_cancel_push(&conn->ifc_hcso, + promise->pp_id)) + ABORT_WARN("cannot write CANCEL_PUSH"); + lsquic_pp_put(promise, conn->ifc_pub.u.ietf.promises); + return -1; + } + + /* Linking push promise with pushed stream is necessary for cancellation */ + ++promise->pp_refcnt; + promise->pp_pushed_stream = pushed_stream; + pushed_stream->sm_promise = promise; + + lsquic_stream_call_on_new(pushed_stream); + + lsquic_pp_put(promise, conn->ifc_pub.u.ietf.promises); + return 0; +} + + +static int +ietf_full_conn_ci_is_tickable (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) lconn; + struct lsquic_stream *stream; + + if (!TAILQ_EMPTY(&conn->ifc_pub.service_streams)) + { + LSQ_DEBUG("tickable: there are streams to be serviced"); + return 1; + } + + if ((conn->ifc_enpub->enp_flags & ENPUB_CAN_SEND) + && (should_generate_ack(conn, IFC_ACK_QUEUED) || + !lsquic_send_ctl_sched_is_blocked(&conn->ifc_send_ctl))) + { + /* XXX What about queued ACKs: why check but not make tickable? */ + if (conn->ifc_send_flags) + { + LSQ_DEBUG("tickable: send flags: 0x%X", conn->ifc_send_flags); + goto check_can_send; + } + if (lsquic_send_ctl_has_sendable(&conn->ifc_send_ctl)) + { + LSQ_DEBUG("tickable: has sendable packets"); + return 1; /* Don't check can_send: already on scheduled queue */ + } + if (conn->ifc_conn.cn_flags & LSCONN_SEND_BLOCKED) + { + LSQ_DEBUG("tickable: send DATA_BLOCKED frame"); + goto check_can_send; + } + if (conn->ifc_mflags & MF_WANT_DATAGRAM_WRITE) + { + LSQ_DEBUG("tickable: want to write DATAGRAM frame"); + goto check_can_send; + } + if (conn->ifc_conn.cn_flags & LSCONN_HANDSHAKE_DONE ? + lsquic_send_ctl_has_buffered(&conn->ifc_send_ctl) : + lsquic_send_ctl_has_buffered_high(&conn->ifc_send_ctl)) + { + LSQ_DEBUG("tickable: has buffered packets"); + goto check_can_send; + } + if (!TAILQ_EMPTY(&conn->ifc_pub.sending_streams)) + { + LSQ_DEBUG("tickable: there are sending streams"); + goto check_can_send; + } + TAILQ_FOREACH(stream, &conn->ifc_pub.write_streams, next_write_stream) + if (lsquic_stream_write_avail(stream)) + { + LSQ_DEBUG("tickable: stream %"PRIu64" can be written to", + stream->id); + goto check_can_send; + } + goto check_readable_streams; + check_can_send: + if (lsquic_send_ctl_can_send(&conn->ifc_send_ctl)) + return 1; + } + + check_readable_streams: + TAILQ_FOREACH(stream, &conn->ifc_pub.read_streams, next_read_stream) + if (lsquic_stream_readable(stream)) + { + LSQ_DEBUG("tickable: stream %"PRIu64" can be read from", + stream->id); + return 1; + } + + if (conn->ifc_flags & IFC_IMMEDIATE_CLOSE_FLAGS) + { + LSQ_DEBUG("tickable: immediate close flags: 0x%X", + (unsigned) (conn->ifc_flags & IFC_IMMEDIATE_CLOSE_FLAGS)); + return 1; + } + + LSQ_DEBUG("not tickable"); + return 0; +} + + +static enum tick_st +immediate_close (struct ietf_full_conn *conn) +{ + struct lsquic_packet_out *packet_out; + const char *error_reason; + struct conn_err conn_err; + int sz; + + if (conn->ifc_flags & (IFC_TICK_CLOSE|IFC_GOT_PRST)) + return TICK_CLOSE; + + if (!(conn->ifc_flags & IFC_SERVER) + && conn->ifc_u.cli.ifcli_ver_neg.vn_state != VN_END) + return TICK_CLOSE; + + conn->ifc_flags |= IFC_TICK_CLOSE; + + /* No reason to send anything that's been scheduled if connection is + * being closed immedately. This also ensures that packet numbers + * sequence is always increasing. + */ + lsquic_send_ctl_drop_scheduled(&conn->ifc_send_ctl); + + if ((conn->ifc_flags & (IFC_TIMED_OUT|IFC_HSK_FAILED)) + && conn->ifc_settings->es_silent_close) + return TICK_CLOSE; + + packet_out = lsquic_send_ctl_new_packet_out(&conn->ifc_send_ctl, 0, + PNS_APP, CUR_NPATH(conn)); + if (!packet_out) + { + LSQ_WARN("cannot allocate packet: %s", strerror(errno)); + return TICK_CLOSE; + } + + assert(conn->ifc_flags & (IFC_ERROR|IFC_ABORTED|IFC_HSK_FAILED)); + if (conn->ifc_error.u.err != 0) + { + conn_err = conn->ifc_error; + error_reason = conn->ifc_errmsg; + } + else if (conn->ifc_flags & IFC_ERROR) + { + conn_err = CONN_ERR(0, TEC_INTERNAL_ERROR); + error_reason = "connection error"; + } + else if (conn->ifc_flags & IFC_ABORTED) + { + conn_err = CONN_ERR(0, TEC_NO_ERROR); + error_reason = "user aborted connection"; + } + else if (conn->ifc_flags & IFC_HSK_FAILED) + { + conn_err = CONN_ERR(0, TEC_NO_ERROR); + error_reason = "handshake failed"; + } + else + { + conn_err = CONN_ERR(0, TEC_NO_ERROR); + error_reason = NULL; + } + + lsquic_send_ctl_scheduled_one(&conn->ifc_send_ctl, packet_out); + sz = conn->ifc_conn.cn_pf->pf_gen_connect_close_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), conn_err.app_error, + conn_err.u.err, error_reason, + error_reason ? strlen(error_reason) : 0); + if (sz < 0) { + LSQ_WARN("%s failed", __func__); + return TICK_CLOSE; + } + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_CONNECTION_CLOSE, packet_out->po_data_sz, sz)) + { + LSQ_WARN("%s: adding frame to packet failed: %d", __func__, errno); + return TICK_CLOSE; + } + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, sz); + packet_out->po_frame_types |= 1 << QUIC_FRAME_CONNECTION_CLOSE; + conn->ifc_mflags |= MF_CONN_CLOSE_PACK; + LSQ_DEBUG("generated CONNECTION_CLOSE frame in its own packet"); + return TICK_SEND|TICK_CLOSE; +} + + +static void +process_streams_read_events (struct ietf_full_conn *conn) +{ + struct lsquic_stream *stream; + int iters; + enum stream_q_flags q_flags, needs_service; + union prio_iter pi; + static const char *const labels[2] = { "read-0", "read-1", }; + + if (TAILQ_EMPTY(&conn->ifc_pub.read_streams)) + return; + + conn->ifc_pub.cp_flags &= ~CP_STREAM_UNBLOCKED; + iters = 0; + do + { + conn->ifc_pii->pii_init(&pi, TAILQ_FIRST(&conn->ifc_pub.read_streams), + TAILQ_LAST(&conn->ifc_pub.read_streams, lsquic_streams_tailq), + (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_read_stream), + &conn->ifc_pub, labels[iters], NULL, NULL); + + needs_service = 0; + for (stream = conn->ifc_pii->pii_first(&pi); stream; + stream = conn->ifc_pii->pii_next(&pi)) + { + q_flags = stream->sm_qflags & SMQF_SERVICE_FLAGS; + lsquic_stream_dispatch_read_events(stream); + needs_service |= q_flags ^ (stream->sm_qflags & SMQF_SERVICE_FLAGS); + } + conn->ifc_pii->pii_cleanup(&pi); + + if (needs_service) + service_streams(conn); + } + while (iters++ == 0 && (conn->ifc_pub.cp_flags & CP_STREAM_UNBLOCKED)); +} + + +static void +process_crypto_stream_read_events (struct ietf_full_conn *conn) +{ + struct lsquic_stream **stream; + + assert(!(conn->ifc_flags & IFC_SERVER)); + for (stream = conn->ifc_u.cli.crypto_streams; stream < + conn->ifc_u.cli.crypto_streams + sizeof(conn->ifc_u.cli.crypto_streams) + / sizeof(conn->ifc_u.cli.crypto_streams[0]); ++stream) + if (*stream && (*stream)->sm_qflags & SMQF_WANT_READ) + lsquic_stream_dispatch_read_events(*stream); +} + + +static void +process_crypto_stream_write_events (struct ietf_full_conn *conn) +{ + struct lsquic_stream **stream; + + assert(!(conn->ifc_flags & IFC_SERVER)); + for (stream = conn->ifc_u.cli.crypto_streams; stream < + conn->ifc_u.cli.crypto_streams + sizeof(conn->ifc_u.cli.crypto_streams) + / sizeof(conn->ifc_u.cli.crypto_streams[0]); ++stream) + if (*stream && (*stream)->sm_qflags & SMQF_WRITE_Q_FLAGS) + lsquic_stream_dispatch_write_events(*stream); +} + + +static void +maybe_conn_flush_special_streams (struct ietf_full_conn *conn) +{ + if (!(conn->ifc_flags & IFC_HTTP)) + return; + + struct lsquic_stream *const streams[] = { + conn->ifc_hcso.how_stream, + conn->ifc_qeh.qeh_enc_sm_out, + conn->ifc_qdh.qdh_dec_sm_out, + }; + struct lsquic_stream *const *stream; + + for (stream = streams; stream < streams + sizeof(streams) + / sizeof(streams[0]); ++stream) + if (*stream && lsquic_stream_has_data_to_flush(*stream)) + (void) lsquic_stream_flush(*stream); +} + + +static int +write_is_possible (struct ietf_full_conn *conn) +{ + const lsquic_packet_out_t *packet_out; + + packet_out = lsquic_send_ctl_last_scheduled(&conn->ifc_send_ctl, PNS_APP, + CUR_NPATH(conn), 0); + return (packet_out && lsquic_packet_out_avail(packet_out) > 10) + || lsquic_send_ctl_can_send(&conn->ifc_send_ctl); +} + + +static void +process_streams_write_events (struct ietf_full_conn *conn, int high_prio) +{ + struct lsquic_stream *stream; + union prio_iter pi; + + conn->ifc_pii->pii_init(&pi, TAILQ_FIRST(&conn->ifc_pub.write_streams), + TAILQ_LAST(&conn->ifc_pub.write_streams, lsquic_streams_tailq), + (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_write_stream), + &conn->ifc_pub, + high_prio ? "write-high" : "write-low", NULL, NULL); + + if (high_prio) + conn->ifc_pii->pii_drop_non_high(&pi); + else + conn->ifc_pii->pii_drop_high(&pi); + + for (stream = conn->ifc_pii->pii_first(&pi); + stream && write_is_possible(conn); + stream = conn->ifc_pii->pii_next(&pi)) + if (stream->sm_qflags & SMQF_WRITE_Q_FLAGS) + lsquic_stream_dispatch_write_events(stream); + conn->ifc_pii->pii_cleanup(&pi); + + maybe_conn_flush_special_streams(conn); +} + + +static void +generate_connection_close_packet (struct ietf_full_conn *conn) +{ + struct lsquic_packet_out *packet_out; + int sz; + + /* FIXME Select PNS based on handshake status (possible on the client): if + * appropriate keys are not available, encryption will fail. + */ + packet_out = lsquic_send_ctl_new_packet_out(&conn->ifc_send_ctl, 0, PNS_APP, + CUR_NPATH(conn)); + if (!packet_out) + { + ABORT_ERROR("cannot allocate packet: %s", strerror(errno)); + return; + } + + lsquic_send_ctl_scheduled_one(&conn->ifc_send_ctl, packet_out); + sz = conn->ifc_conn.cn_pf->pf_gen_connect_close_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), 0, TEC_NO_ERROR, NULL, 0); + if (sz < 0) { + ABORT_ERROR("generate_connection_close_packet failed"); + return; + } + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_CONNECTION_CLOSE, packet_out->po_data_sz, sz)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return; + } + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, sz); + packet_out->po_frame_types |= 1 << QUIC_FRAME_CONNECTION_CLOSE; + conn->ifc_mflags |= MF_CONN_CLOSE_PACK; + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, + "generated CONNECTION_CLOSE frame in its own packet"); + conn->ifc_send_flags &= ~SF_SEND_CONN_CLOSE; +} + + +static void +log_conn_flow_control (struct ietf_full_conn *conn) +{ + LSQ_DEBUG("connection flow cap: wrote: %"PRIu64 + "; max: %"PRIu64, conn->ifc_pub.conn_cap.cc_sent, + conn->ifc_pub.conn_cap.cc_max); + LSQ_DEBUG("connection flow control window: read: %"PRIu64 + "; max: %"PRIu64, conn->ifc_pub.cfcw.cf_max_recv_off, + conn->ifc_pub.cfcw.cf_recv_off); +} + + +static void +generate_ping_frame (struct ietf_full_conn *conn, lsquic_time_t now) +{ + struct lsquic_packet_out *packet_out; + int pns; + int sz; + + if (conn->ifc_conn.cn_flags & LSCONN_HANDSHAKE_DONE) + packet_out = get_writeable_packet(conn, 1); + else + { + conn->ifc_ping_period += HSK_PING_TIMEOUT; + lsquic_alarmset_set(&conn->ifc_alset, AL_PING, + now + conn->ifc_ping_period); + if (iquic_esf_is_enc_level_ready(conn->ifc_conn.cn_enc_session, + ENC_LEV_HSK)) + pns = PNS_HSK; + else + pns = PNS_INIT; + packet_out = lsquic_send_ctl_new_packet_out(&conn->ifc_send_ctl, 0, pns, + CUR_NPATH(conn)); + if (packet_out) + lsquic_send_ctl_scheduled_one(&conn->ifc_send_ctl, packet_out); + + } + if (!packet_out) + { + LSQ_DEBUG("cannot get writeable packet for PING frame"); + return; + } + sz = conn->ifc_conn.cn_pf->pf_gen_ping_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out)); + if (sz < 0) { + ABORT_ERROR("gen_ping_frame failed"); + return; + } + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_PING, packet_out->po_data_sz, sz)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return; + } + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, sz); + packet_out->po_regen_sz += sz; + packet_out->po_frame_types |= 1 << QUIC_FRAME_PING; + LSQ_DEBUG("wrote PING frame"); + conn->ifc_send_flags &= ~SF_SEND_PING; + if (!(conn->ifc_flags & IFC_SERVER)) + log_conn_flow_control(conn); +} + + +static void +generate_handshake_done_frame (struct ietf_full_conn *conn, + lsquic_time_t unused) +{ + struct lsquic_packet_out *packet_out; + unsigned need; + int sz; + + need = conn->ifc_conn.cn_pf->pf_handshake_done_frame_size(); + packet_out = get_writeable_packet(conn, need); + if (!packet_out) + return; + sz = conn->ifc_conn.cn_pf->pf_gen_handshake_done_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out)); + if (sz < 0) + { + ABORT_ERROR("generate_handshake_done_frame failed"); + return; + } + + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_HANDSHAKE_DONE, packet_out->po_data_sz, sz)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return; + } + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, sz); + packet_out->po_frame_types |= QUIC_FTBIT_HANDSHAKE_DONE; + LSQ_DEBUG("generated HANDSHAKE_DONE frame"); + conn->ifc_send_flags &= ~SF_SEND_HANDSHAKE_DONE; +} + + +static void +generate_ack_frequency_frame (struct ietf_full_conn *conn, lsquic_time_t unused) +{ + struct lsquic_packet_out *packet_out; + unsigned need; + int sz; + /* We tell the peer to ignore reordering because we skip packet numbers to + * detect optimistic ACK attacks. + */ + const int ignore = 1; + + need = conn->ifc_conn.cn_pf->pf_ack_frequency_frame_size( + conn->ifc_ack_freq_seqno, conn->ifc_last_calc_pack_tol, + conn->ifc_pub.max_peer_ack_usec); + packet_out = get_writeable_packet(conn, need); + if (!packet_out) + { + LSQ_DEBUG("cannot get writeable packet for ACK_FREQUENCY frame"); + return; + } + + sz = conn->ifc_conn.cn_pf->pf_gen_ack_frequency_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), + conn->ifc_ack_freq_seqno, conn->ifc_last_calc_pack_tol, + conn->ifc_pub.max_peer_ack_usec, ignore); + if (sz < 0) + { + ABORT_ERROR("gen_ack_frequency_frame failed"); + return; + } + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_ACK_FREQUENCY, packet_out->po_data_sz, sz)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return; + } + conn->ifc_last_pack_tol = conn->ifc_last_calc_pack_tol; + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, sz); + packet_out->po_frame_types |= QUIC_FTBIT_ACK_FREQUENCY; + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, + "Generated ACK_FREQUENCY(seqno: %u; pack_tol: %u; " + "upd: %u; ignore: %d)", conn->ifc_ack_freq_seqno, + conn->ifc_last_pack_tol, conn->ifc_pub.max_peer_ack_usec, ignore); + LSQ_DEBUG("Generated ACK_FREQUENCY(seqno: %u; pack_tol: %u; " + "upd: %u; ignore: %d)", conn->ifc_ack_freq_seqno, + conn->ifc_last_pack_tol, conn->ifc_pub.max_peer_ack_usec, ignore); + ++conn->ifc_ack_freq_seqno; + conn->ifc_send_flags &= ~SF_SEND_ACK_FREQUENCY; +#if LSQUIC_CONN_STATS + if (conn->ifc_last_pack_tol > conn->ifc_max_pack_tol_sent) + conn->ifc_max_pack_tol_sent = conn->ifc_last_pack_tol; + if (conn->ifc_last_pack_tol < conn->ifc_min_pack_tol_sent + || 0 == conn->ifc_min_pack_tol_sent) + conn->ifc_min_pack_tol_sent = conn->ifc_last_pack_tol; +#endif +} + + +static void +maybe_pad_packet (struct ietf_full_conn *conn, + struct lsquic_packet_out *packet_out) +{ + unsigned short avail; + + avail = lsquic_packet_out_avail(packet_out); + if (avail) + { + memset(packet_out->po_data + packet_out->po_data_sz, 0, avail); + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, avail); + packet_out->po_frame_types |= QUIC_FTBIT_PADDING; + LSQ_DEBUG("added %hu-byte PADDING frame to packet %"PRIu64, avail, + packet_out->po_packno); + } +} + + +static void +generate_path_chal_frame (struct ietf_full_conn *conn, lsquic_time_t now, + unsigned path_id) +{ + struct lsquic_packet_out *packet_out; + struct conn_path *copath; + unsigned need; + int w; + char hexbuf[ sizeof(copath->cop_path_chals[0]) * 2 + 1 ]; + + /* For now, we only support sending path challenges on a single path. + * This restriction may need to be lifted if the client is probing + * several paths at the same time. + */ + if (!(conn->ifc_flags & IFC_SERVER)) + assert(path_id == conn->ifc_mig_path_id); + + copath = &conn->ifc_paths[path_id]; + if (copath->cop_n_chals >= sizeof(copath->cop_path_chals) + / sizeof(copath->cop_path_chals[0])) + { + /* path failure? it is non-fatal, keep trying */ + memmove(&copath->cop_path_chals[0], &copath->cop_path_chals[1], + sizeof(copath->cop_path_chals) - sizeof(copath->cop_path_chals[0])); + copath->cop_n_chals = sizeof(copath->cop_path_chals) + / sizeof(copath->cop_path_chals[0]) - 1; + } + + need = conn->ifc_conn.cn_pf->pf_path_chal_frame_size(); + packet_out = get_writeable_packet_on_path(conn, need, &copath->cop_path, 1); + if (!packet_out) + return; + + RAND_bytes((void *) &copath->cop_path_chals[copath->cop_n_chals], + sizeof(copath->cop_path_chals[0])); + w = conn->ifc_conn.cn_pf->pf_gen_path_chal_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), + copath->cop_path_chals[copath->cop_n_chals]); + if (w < 0) + { + ABORT_ERROR("generating PATH_CHALLENGE frame failed: %d", errno); + return; + } + LSQ_DEBUG("generated %d-byte PATH_CHALLENGE frame for path %d; challenge: %s" + ", seq: %u", w, path_id, + HEXSTR((unsigned char *) &copath->cop_path_chals[copath->cop_n_chals], + sizeof(copath->cop_path_chals[copath->cop_n_chals]), hexbuf), + copath->cop_n_chals); + ++copath->cop_n_chals; + EV_LOG_GENERATED_PATH_CHAL_FRAME(LSQUIC_LOG_CONN_ID, conn->ifc_conn.cn_pf, + packet_out->po_data + packet_out->po_data_sz, w); + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_PATH_CHALLENGE, packet_out->po_data_sz, w)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return; + } + packet_out->po_frame_types |= QUIC_FTBIT_PATH_CHALLENGE; + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, w); + packet_out->po_regen_sz += w; + conn->ifc_send_flags &= ~(SF_SEND_PATH_CHAL << path_id); + /* Anti-amplification, only pad packet if allowed + * (confirmed path or incoming packet >= 400 bytes). */ + if (copath->cop_flags & COP_ALLOW_MTU_PADDING) + maybe_pad_packet(conn, packet_out); + /* Only retry for confirmed path */ + if (copath->cop_flags & COP_VALIDATED) + lsquic_alarmset_set(&conn->ifc_alset, AL_PATH_CHAL + path_id, + now + (INITIAL_CHAL_TIMEOUT << (copath->cop_n_chals - 1))); +} + + +static void +generate_path_chal_0 (struct ietf_full_conn *conn, lsquic_time_t now) +{ + generate_path_chal_frame(conn, now, 0); +} + + +static void +generate_path_chal_1 (struct ietf_full_conn *conn, lsquic_time_t now) +{ + generate_path_chal_frame(conn, now, 1); +} + + +static void +generate_path_chal_2 (struct ietf_full_conn *conn, lsquic_time_t now) +{ + generate_path_chal_frame(conn, now, 2); +} + + +static void +generate_path_chal_3 (struct ietf_full_conn *conn, lsquic_time_t now) +{ + generate_path_chal_frame(conn, now, 3); +} + + +static void +generate_path_resp_frame (struct ietf_full_conn *conn, lsquic_time_t now, + unsigned path_id) +{ + struct lsquic_packet_out *packet_out; + struct conn_path *copath; + unsigned need; + int w; + + copath = &conn->ifc_paths[path_id]; + need = conn->ifc_conn.cn_pf->pf_path_resp_frame_size(); + packet_out = get_writeable_packet_on_path(conn, need, &copath->cop_path, 1); + if (!packet_out) + return; + + w = conn->ifc_conn.cn_pf->pf_gen_path_resp_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), + copath->cop_inc_chal); + if (w < 0) + { + ABORT_ERROR("generating PATH_RESPONSE frame failed: %d", errno); + return; + } + LSQ_DEBUG("generated %d-byte PATH_RESPONSE frame; response: %016"PRIX64, + w, copath->cop_inc_chal); + EV_LOG_GENERATED_PATH_RESP_FRAME(LSQUIC_LOG_CONN_ID, conn->ifc_conn.cn_pf, + packet_out->po_data + packet_out->po_data_sz, w); + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_PATH_RESPONSE, packet_out->po_data_sz, w)) + { + ABORT_ERROR("adding frame to packet failed: %d", errno); + return; + } + packet_out->po_frame_types |= QUIC_FTBIT_PATH_RESPONSE; + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, w); + maybe_pad_packet(conn, packet_out); + packet_out->po_regen_sz += w; + conn->ifc_send_flags &= ~(SF_SEND_PATH_RESP << path_id); +} + + +static void +generate_path_resp_0 (struct ietf_full_conn *conn, lsquic_time_t now) +{ + generate_path_resp_frame(conn, now, 0); +} + + +static void +generate_path_resp_1 (struct ietf_full_conn *conn, lsquic_time_t now) +{ + generate_path_resp_frame(conn, now, 1); +} + + +static void +generate_path_resp_2 (struct ietf_full_conn *conn, lsquic_time_t now) +{ + generate_path_resp_frame(conn, now, 2); +} + + +static void +generate_path_resp_3 (struct ietf_full_conn *conn, lsquic_time_t now) +{ + generate_path_resp_frame(conn, now, 3); +} + + +static struct lsquic_packet_out * +ietf_full_conn_ci_next_packet_to_send (struct lsquic_conn *lconn, + const struct to_coal *to_coal) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + struct lsquic_packet_out *packet_out; + const struct conn_path *cpath; + + packet_out = lsquic_send_ctl_next_packet_to_send(&conn->ifc_send_ctl, + to_coal); + if (packet_out) + { + cpath = NPATH2CPATH(packet_out->po_path); + lsquic_packet_out_set_spin_bit(packet_out, cpath->cop_spin_bit); + } + return packet_out; +} + + +static struct lsquic_packet_out * +ietf_full_conn_ci_next_packet_to_send_pre_hsk (struct lsquic_conn *lconn, + const struct to_coal *to_coal) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + struct lsquic_packet_out *packet_out; + + packet_out = ietf_full_conn_ci_next_packet_to_send(lconn, to_coal); + if (packet_out) + ++conn->ifc_u.cli.ifcli_packets_out; + return packet_out; +} + + +static lsquic_time_t +ietf_full_conn_ci_next_tick_time (struct lsquic_conn *lconn, unsigned *why) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + lsquic_time_t alarm_time, pacer_time, now; + enum alarm_id al_id; + + alarm_time = lsquic_alarmset_mintime(&conn->ifc_alset, &al_id); + pacer_time = lsquic_send_ctl_next_pacer_time(&conn->ifc_send_ctl); + + if (pacer_time && LSQ_LOG_ENABLED(LSQ_LOG_DEBUG)) + { + now = lsquic_time_now(); + if (pacer_time < now) + LSQ_DEBUG("%s: pacer is %"PRIu64" usec in the past", __func__, + now - pacer_time); + } + + if (alarm_time && pacer_time) + { + if (alarm_time < pacer_time) + { + *why = N_AEWS + al_id; + return alarm_time; + } + else + { + *why = AEW_PACER; + return pacer_time; + } + } + else if (alarm_time) + { + *why = N_AEWS + al_id; + return alarm_time; + } + else if (pacer_time) + { + *why = AEW_PACER; + return pacer_time; + } + else + return 0; +} + + +static ptrdiff_t +count_zero_bytes (const unsigned char *p, size_t len) +{ + const unsigned char *const end = p + len; + while (p < end && 0 == *p) + ++p; + return len - (end - p); +} + + +static unsigned +process_padding_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + unsigned sz = (unsigned) count_zero_bytes(p, len); + EV_LOG_PADDING_FRAME_IN(LSQUIC_LOG_CONN_ID, sz); + return sz; +} + + +static void +handshake_confirmed (struct ietf_full_conn *conn) +{ + ignore_hsk(conn); + /* Even in ID-25, we wait for 1-RTT ACK on the server before dropping keys. + */ + conn->ifc_conn.cn_esf.i->esfi_handshake_confirmed( + conn->ifc_conn.cn_enc_session); + if (!(conn->ifc_flags & (IFC_SERVER|IFC_MIGRA))) + { + conn->ifc_flags |= IFC_MIGRA; /* Perform migration just once */ + maybe_start_migration(conn); + } +} + + +static float +calc_target (lsquic_time_t srtt_ms) +{ + if (srtt_ms <= 5 * 1000) + return 2.5; + if (srtt_ms <= 10 * 1000) + return 2.0; + if (srtt_ms <= 15 * 1000) + return 1.6; + if (srtt_ms <= 20 * 1000) + return 1.4; + if (srtt_ms <= 30 * 1000) + return 1.3; + if (srtt_ms <= 40 * 1000) + return 1.2; + if (srtt_ms <= 50 * 1000) + return 1.1; + if (srtt_ms <= 60 * 1000) + return 1.0; + if (srtt_ms <= 70 * 1000) + return 0.9; + if (srtt_ms <= 80 * 1000) + return 0.8; + if (srtt_ms <= 100 * 1000) + return 0.7; + return 0.5; +} + + +static void +packet_tolerance_alarm_expired (enum alarm_id al_id, void *ctx, + lsquic_time_t expiry, lsquic_time_t now) +{ + struct ietf_full_conn *const conn = ctx; + const float Kp = conn->ifc_settings->es_ptpc_prop_gain, + Ki = conn->ifc_settings->es_ptpc_int_gain, + err_thresh = conn->ifc_settings->es_ptpc_err_thresh, + err_divisor = conn->ifc_settings->es_ptpc_err_divisor; + const unsigned periodicity = conn->ifc_settings->es_ptpc_periodicity; + const unsigned max_packtol = conn->ifc_settings->es_ptpc_max_packtol; + float avg_acks_per_rtt, error, combined_error, normalized, + combined_error_abs, target, rtts; + double dt; + lsquic_time_t srtt, begin_t; + + srtt = lsquic_rtt_stats_get_srtt(&conn->ifc_pub.rtt_stats); + + if (srtt == 0) + goto end; + if (0 == conn->ifc_pts.n_acks) + /* Don't reset last_sample and calculate average for both this and next + * period the next time around. + */ + goto end; + + if (conn->ifc_settings->es_ptpc_dyn_target) + target = calc_target(srtt); + else + target = conn->ifc_settings->es_ptpc_target; + + dt = periodicity * (double) srtt / 1000000; + + begin_t = conn->ifc_pts.last_sample ? conn->ifc_pts.last_sample + : conn->ifc_created; + /* + LSQ_DEBUG("begin: %"PRIu64"; now: %"PRIu64"; SRTT: %"PRIu64"; acks: %u", + begin_t, now, srtt, conn->ifc_pts.n_acks); + */ + rtts = (float) (now - begin_t) / (float) srtt; + avg_acks_per_rtt = (float) conn->ifc_pts.n_acks / (float) rtts; + normalized = avg_acks_per_rtt * M_E / target; + error = logf(normalized) - 1; + conn->ifc_pts.integral_error += error * (float) dt; + combined_error = Kp * error + Ki * conn->ifc_pts.integral_error; + combined_error_abs = fabsf(combined_error); + conn->ifc_pts.last_sample = now; + if (combined_error_abs > err_thresh) + { + unsigned adj = combined_error_abs / err_divisor; + unsigned last_pack_tol = conn->ifc_last_pack_tol; + if (0 == last_pack_tol) + { + last_pack_tol = (unsigned) + lsquic_senhist_largest(&conn->ifc_send_ctl.sc_senhist) + / conn->ifc_pts.n_acks; + LSQ_DEBUG("packets sent: %"PRIu64"; ACKs received: %u; implied " + "tolerance: %u", + lsquic_senhist_largest(&conn->ifc_send_ctl.sc_senhist), + conn->ifc_pts.n_acks, last_pack_tol); + if (last_pack_tol < 2) + last_pack_tol = 2; + else if (last_pack_tol >= max_packtol) + last_pack_tol = max_packtol / 2; + } + if (combined_error > 0) + { + conn->ifc_last_calc_pack_tol = last_pack_tol + adj; + if (conn->ifc_last_calc_pack_tol >= max_packtol) + { + /* Clamp integral error when we can go no higher */ + conn->ifc_pts.integral_error -= error * (float) dt; + conn->ifc_last_calc_pack_tol = max_packtol; + } + } + else + { + if (adj + 2 < last_pack_tol) + conn->ifc_last_calc_pack_tol = last_pack_tol - adj; + else + conn->ifc_last_calc_pack_tol = 2; + if (conn->ifc_last_calc_pack_tol == 2) + { + /* Clamp integral error when we can go no lower */ + conn->ifc_pts.integral_error -= error * (float) dt; + } + } + if (conn->ifc_last_calc_pack_tol != conn->ifc_last_pack_tol) + { + LSQ_DEBUG("old packet tolerance target: %u, schedule ACK_FREQUENCY " + "%s to %u", conn->ifc_last_pack_tol, + combined_error > 0 ? "increase" : "decrease", + conn->ifc_last_calc_pack_tol); + conn->ifc_send_flags |= SF_SEND_ACK_FREQUENCY; + } + else + { + LSQ_DEBUG("packet tolerance unchanged at %u", conn->ifc_last_pack_tol); + conn->ifc_send_flags &= ~SF_SEND_ACK_FREQUENCY; + } + } + else + conn->ifc_send_flags &= ~SF_SEND_ACK_FREQUENCY; + LSQ_DEBUG("avg ACKs per RTT: %.3f; normalized: %.3f; target: %.3f; error: %.3f; " + "p-error: %.3f, i-error: %.3f; Overall: %.3f; " + "packet tolerance: current: %u, last: %u", + avg_acks_per_rtt, normalized, target, error, Kp * error, + conn->ifc_pts.integral_error, combined_error, + conn->ifc_last_calc_pack_tol, conn->ifc_last_pack_tol); + /* Until we have the first value, don't reset the counters */ + if (conn->ifc_last_calc_pack_tol != 0) + conn->ifc_pts.n_acks = 0; + + end: + if (lsquic_send_ctl_have_unacked_retx_data(&conn->ifc_send_ctl)) + { + LSQ_DEBUG("set PACK_TOL alarm %"PRIu64" microseconds into the future", + srtt * periodicity); + lsquic_alarmset_set(&conn->ifc_alset, al_id, now + srtt * periodicity); + } + else + LSQ_DEBUG("no unacked retx data: do not rearm the packet tolerance " + "alarm"); +} + + +static int +process_ack (struct ietf_full_conn *conn, struct ack_info *acki, + lsquic_time_t received, lsquic_time_t now) +{ + enum packnum_space pns; + lsquic_packno_t packno; + int one_rtt_acked; + + CONN_STATS(in.n_acks_proc, 1); + LSQ_DEBUG("Processing ACK"); + one_rtt_acked = lsquic_send_ctl_1rtt_acked(&conn->ifc_send_ctl); + if (0 == lsquic_send_ctl_got_ack(&conn->ifc_send_ctl, acki, received, now)) + { + pns = acki->pns; + packno = lsquic_send_ctl_largest_ack2ed(&conn->ifc_send_ctl, pns); + /* It's OK to skip valid packno 0: the alternative is too expensive */ + if (packno) + lsquic_rechist_stop_wait(&conn->ifc_rechist[ pns ], packno + 1); + /* ACK of 1-RTT packet indicates that handshake has been confirmed: */ + if (!one_rtt_acked && lsquic_send_ctl_1rtt_acked(&conn->ifc_send_ctl)) + { + if (!(conn->ifc_flags & IFC_IGNORE_INIT)) + ignore_init(conn); + handshake_confirmed(conn); + } + return 0; + } + else + { + ABORT_ERROR("Received invalid ACK"); + return -1; + } +} + + +static unsigned +process_path_challenge_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + struct conn_path *const path = &conn->ifc_paths[packet_in->pi_path_id]; + int parsed_len; + char hexbuf[sizeof(path->cop_inc_chal) * 2 + 1]; + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_path_chal_frame(p, len, + /* It's OK to overwrite incoming challenge, only reply to latest */ + &path->cop_inc_chal); + if (parsed_len > 0) + { + LSQ_DEBUG("received path challenge %s for path #%hhu", + HEXSTR((unsigned char *) &path->cop_inc_chal, + sizeof(path->cop_inc_chal), hexbuf), packet_in->pi_path_id); + conn->ifc_send_flags |= SF_SEND_PATH_RESP << packet_in->pi_path_id; + return parsed_len; + } + else + return 0; +} + + +/* Why "maybe?" Because it is possible that the peer did not provide us + * enough CIDs and we had to reuse one. See init_new_path(). + */ +static void +maybe_retire_dcid (struct ietf_full_conn *conn, const lsquic_cid_t *dcid) +{ + struct conn_path *copath; + struct dcid_elem **dce; + unsigned eqs; + + eqs = 0; + for (copath = conn->ifc_paths; copath < conn->ifc_paths + + sizeof(conn->ifc_paths) / sizeof(conn->ifc_paths[0]); ++copath) + eqs += LSQUIC_CIDS_EQ(&copath->cop_path.np_dcid, dcid); + + if (eqs > 1) + { + LSQ_INFOC("cannot retire %"CID_FMT", as it is used on more than one" + "path ", CID_BITS(dcid)); + return; + } + + for (dce = conn->ifc_dces; dce < DCES_END(conn); ++dce) + if (*dce && ((*dce)->de_flags & DE_ASSIGNED) + && LSQUIC_CIDS_EQ(&(*dce)->de_cid, dcid)) + break; + + assert(dce < DCES_END(conn)); + if (dce < DCES_END(conn)) + retire_dcid(conn, dce); +} + + +/* Return true if the two paths differ only in peer port */ +static int +only_peer_port_changed (const struct network_path *old, + struct network_path *new) +{ + const struct sockaddr *old_sa, *new_sa; + + if (!lsquic_sockaddr_eq(NP_LOCAL_SA(old), NP_LOCAL_SA(new))) + return 0; + + old_sa = NP_PEER_SA(old); + new_sa = NP_PEER_SA(new); + if (old_sa->sa_family == AF_INET) + return old_sa->sa_family == new_sa->sa_family + && ((struct sockaddr_in *) old_sa)->sin_addr.s_addr + == ((struct sockaddr_in *) new_sa)->sin_addr.s_addr + && ((struct sockaddr_in *) old_sa)->sin_port + != /* NE! */((struct sockaddr_in *) new_sa)->sin_port; + else + return old_sa->sa_family == new_sa->sa_family + && ((struct sockaddr_in6 *) old_sa)->sin6_port != /* NE! */ + ((struct sockaddr_in6 *) new_sa)->sin6_port + && 0 == memcmp(&((struct sockaddr_in6 *) old_sa)->sin6_addr, + &((struct sockaddr_in6 *) new_sa)->sin6_addr, + sizeof(((struct sockaddr_in6 *) new_sa)->sin6_addr)); +} + + +static void +switch_path_to (struct ietf_full_conn *conn, unsigned char path_id) +{ + const unsigned char old_path_id = conn->ifc_cur_path_id; + const int keep_path_properties = conn->ifc_settings->es_optimistic_nat + && only_peer_port_changed(CUR_NPATH(conn), + &conn->ifc_paths[path_id].cop_path); + + assert(conn->ifc_cur_path_id != path_id); + CUR_CPATH(conn)->cop_flags |= COP_RETIRED; + + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "switched paths"); + if (keep_path_properties) + { + conn->ifc_paths[path_id].cop_path.np_pack_size + = CUR_NPATH(conn)->np_pack_size; + LSQ_DEBUG("keep path properties: set MTU to %hu", + conn->ifc_paths[path_id].cop_path.np_pack_size); + } + lsquic_send_ctl_repath(&conn->ifc_send_ctl, + CUR_NPATH(conn), &conn->ifc_paths[path_id].cop_path, + keep_path_properties); + maybe_retire_dcid(conn, &CUR_NPATH(conn)->np_dcid); + conn->ifc_cur_path_id = path_id; + conn->ifc_pub.path = CUR_NPATH(conn); + conn->ifc_conn.cn_cur_cce_idx = CUR_CPATH(conn)->cop_cce_idx; + conn->ifc_send_flags &= ~(SF_SEND_PATH_CHAL << old_path_id); + conn->ifc_send_flags &= ~(SF_SEND_PATH_RESP << old_path_id); + lsquic_alarmset_unset(&conn->ifc_alset, AL_PATH_CHAL + old_path_id); + if (conn->ifc_flags & IFC_SERVER) + wipe_path(conn, old_path_id); +} + + +static unsigned +process_path_response_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + struct conn_path *path; + int parsed_len; + unsigned i; + unsigned char path_id; + uint64_t path_resp; + char hexbuf[ sizeof(path_resp) * 2 + 1 ]; + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_path_resp_frame(p, len, + &path_resp); + if (parsed_len <= 0) + return 0; + + LSQ_DEBUG("received path response: %s", + HEXSTR((unsigned char *) &path_resp, sizeof(path_resp), hexbuf)); + + for (path = conn->ifc_paths; path < conn->ifc_paths + + sizeof(conn->ifc_paths) / sizeof(conn->ifc_paths[0]); ++path) + { + path_id = path - conn->ifc_paths; + if ((1 << path_id) & conn->ifc_used_paths) + for (i = 0; i < path->cop_n_chals; ++i) + if (path_resp == path->cop_path_chals[i]) + goto found; + } + + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, + "received path response %s that does not correspond to any " + "challenge sent on this path", + HEXSTR((unsigned char *) &path_resp, sizeof(path_resp), hexbuf)); + return 0; + + found: + if (path->cop_flags & COP_ALLOW_MTU_PADDING) + { + path->cop_flags |= (COP_VALIDATED | COP_VALIDATED_MTU); + conn->ifc_send_flags &= ~(SF_SEND_PATH_CHAL << path_id); + lsquic_alarmset_unset(&conn->ifc_alset, AL_PATH_CHAL + path_id); + } + else + { + path->cop_flags |= (COP_VALIDATED | COP_ALLOW_MTU_PADDING); + conn->ifc_send_flags |= (SF_SEND_PATH_CHAL << path_id); + } + switch ((path_id != conn->ifc_cur_path_id) | + (!!(path->cop_flags & COP_GOT_NONPROB) << 1)) + { + case 3: + LSQ_INFO("path validated: switching from path #%hhu to path #%hhu", + conn->ifc_cur_path_id, path_id); + switch_path_to(conn, path_id); + break; + case 1: + if (conn->ifc_flags & IFC_SERVER) + /* If you see this message in the log file, remember that + * COP_GOT_NONPROB is set after all frames in a packet have + * been processed. + */ + LSQ_DEBUG("path #%hhu validated, but since no non-probing frames " + "have been received, delay switching to it", + path_id); + else + { + LSQ_INFO("path validated: switching from path #%hhu to path #%hhu", + conn->ifc_cur_path_id, path_id); + switch_path_to(conn, path_id); + } + break; + default: + LSQ_DEBUG("current path validated"); + break; + } + + return parsed_len; +} + + +static lsquic_stream_t * +find_stream_by_id (struct ietf_full_conn *conn, lsquic_stream_id_t stream_id) +{ + struct lsquic_hash_elem *el; + el = lsquic_hash_find(conn->ifc_pub.all_streams, &stream_id, + sizeof(stream_id)); + if (el) + return lsquic_hashelem_getdata(el); + else + return NULL; +} + + +static void +maybe_schedule_ss_for_stream (struct ietf_full_conn *conn, + lsquic_stream_id_t stream_id, enum http_error_code error_code) +{ + struct stream_id_to_ss *sits; + + if (conn_is_stream_closed(conn, stream_id)) + return; + + sits = malloc(sizeof(*sits)); + if (!sits) + return; + + sits->sits_stream_id = stream_id; + sits->sits_error_code = error_code; + STAILQ_INSERT_TAIL(&conn->ifc_stream_ids_to_ss, sits, sits_next); + conn->ifc_send_flags |= SF_SEND_STOP_SENDING; + conn_mark_stream_closed(conn, stream_id); +} + + +struct buffered_priority_update +{ + struct lsquic_hash_elem hash_el; + lsquic_stream_id_t stream_id; + struct lsquic_ext_http_prio ehp; +}; + + +#define MAX_CRITICAL_STREAM_ID 12 +/* This function is called to create incoming streams */ +static struct lsquic_stream * +new_stream (struct ietf_full_conn *conn, lsquic_stream_id_t stream_id, + enum stream_ctor_flags flags) +{ + const struct lsquic_stream_if *iface; + struct buffered_priority_update *bpu; + struct lsquic_hash_elem *el; + void *stream_ctx; + struct lsquic_stream *stream; + unsigned initial_window; + const int call_on_new = flags & SCF_CALL_ON_NEW; + + flags &= ~SCF_CALL_ON_NEW; + flags |= SCF_DI_AUTOSWITCH|SCF_IETF; + + if ((conn->ifc_flags & IFC_HTTP) && ((stream_id >> SD_SHIFT) & 1) == SD_UNI) + { + iface = unicla_if_ptr; + stream_ctx = conn; +#if CLIENT_PUSH_SUPPORT + /* FIXME: This logic does not work for push streams. Perhaps one way + * to address this is to reclassify them later? + */ +#endif + if (stream_id < MAX_CRITICAL_STREAM_ID) + { + flags |= SCF_CRITICAL; + ++conn->ifc_pub.n_special_streams; + } + } + else + { + iface = conn->ifc_enpub->enp_stream_if; + stream_ctx = conn->ifc_enpub->enp_stream_if_ctx; + if (conn->ifc_enpub->enp_settings.es_rw_once) + flags |= SCF_DISP_RW_ONCE; + if (conn->ifc_enpub->enp_settings.es_delay_onclose) + flags |= SCF_DELAY_ONCLOSE; + if (conn->ifc_flags & IFC_HTTP) + { + flags |= SCF_HTTP; + if (conn->ifc_pii == &ext_prio_iter_if) + flags |= SCF_HTTP_PRIO; + } + } + + if (((stream_id >> SD_SHIFT) & 1) == SD_UNI) + initial_window = conn->ifc_enpub->enp_settings + .es_init_max_stream_data_uni; + else + initial_window = conn->ifc_enpub->enp_settings + .es_init_max_stream_data_bidi_remote; + + stream = lsquic_stream_new(stream_id, &conn->ifc_pub, + iface, stream_ctx, initial_window, + conn->ifc_cfg.max_stream_send, flags); + if (stream) + { + if (conn->ifc_bpus) + { + el = lsquic_hash_find(conn->ifc_bpus, &stream->id, + sizeof(stream->id)); + if (el) + { + LSQ_DEBUG("apply buffered PRIORITY_UPDATE to stream %"PRIu64, + stream->id); + lsquic_hash_erase(conn->ifc_bpus, el); + bpu = lsquic_hashelem_getdata(el); + (void) lsquic_stream_set_http_prio(stream, &bpu->ehp); + free(bpu); + } + } + if (lsquic_hash_insert(conn->ifc_pub.all_streams, &stream->id, + sizeof(stream->id), stream, &stream->sm_hash_el)) + { + if (call_on_new) + lsquic_stream_call_on_new(stream); + } + else + { + lsquic_stream_destroy(stream); + stream = NULL; + } + } + return stream; +} + + +static int +conn_is_send_only_stream (const struct ietf_full_conn *conn, + lsquic_stream_id_t stream_id) +{ + enum stream_id_type sit; + + sit = stream_id & SIT_MASK; + if (conn->ifc_flags & IFC_SERVER) + return sit == SIT_UNI_SERVER; + else + return sit == SIT_UNI_CLIENT; +} + + +static int +conn_is_receive_only_stream (const struct ietf_full_conn *conn, + lsquic_stream_id_t stream_id) +{ + enum stream_id_type sit; + + sit = stream_id & SIT_MASK; + if (conn->ifc_flags & IFC_SERVER) + return sit == SIT_UNI_CLIENT; + else + return sit == SIT_UNI_SERVER; +} + + +static unsigned +process_rst_stream_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + lsquic_stream_id_t stream_id; + uint64_t offset, error_code; + lsquic_stream_t *stream; + int call_on_new; + const int parsed_len = conn->ifc_conn.cn_pf->pf_parse_rst_frame(p, len, + &stream_id, &offset, &error_code); + if (parsed_len < 0) + return 0; + + EV_LOG_RST_STREAM_FRAME_IN(LSQUIC_LOG_CONN_ID, stream_id, offset, + error_code); + LSQ_DEBUG("Got RST_STREAM; stream: %"PRIu64"; offset: 0x%"PRIX64, stream_id, + offset); + + if (conn_is_send_only_stream(conn, stream_id)) + { + ABORT_QUIETLY(0, TEC_STREAM_STATE_ERROR, + "received RESET_STREAM on send-only stream %"PRIu64, stream_id); + return 0; + } + + call_on_new = 0; + stream = find_stream_by_id(conn, stream_id); + if (!stream) + { + if (conn_is_stream_closed(conn, stream_id)) + { + LSQ_DEBUG("got reset frame for closed stream %"PRIu64, stream_id); + return parsed_len; + } + if (!is_peer_initiated(conn, stream_id)) + { + ABORT_ERROR("received reset for never-initiated stream %"PRIu64, + stream_id); + return 0; + } + + stream = new_stream(conn, stream_id, 0); + if (!stream) + { + ABORT_ERROR("cannot create new stream: %s", strerror(errno)); + return 0; + } + ++call_on_new; + } + + if (0 != lsquic_stream_rst_in(stream, offset, error_code)) + { + ABORT_ERROR("received invalid RST_STREAM"); + return 0; + } + if (call_on_new) + lsquic_stream_call_on_new(stream); + return parsed_len; +} + + +static unsigned +process_stop_sending_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + struct lsquic_stream *stream; + lsquic_stream_id_t stream_id, max_allowed; + uint64_t error_code; + int parsed_len, our_stream; + enum stream_state_sending sss; + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_stop_sending_frame(p, len, + &stream_id, &error_code); + if (parsed_len < 0) + return 0; + + EV_LOG_STOP_SENDING_FRAME_IN(LSQUIC_LOG_CONN_ID, stream_id, error_code); + LSQ_DEBUG("Got STOP_SENDING; stream: %"PRIu64"; error code: %"PRIu64, + stream_id, error_code); + + if (conn_is_receive_only_stream(conn, stream_id)) + { + ABORT_QUIETLY(0, TEC_STREAM_STATE_ERROR, + "received STOP_SENDING on receive-only stream %"PRIu64, stream_id); + return 0; + } + + our_stream = !is_peer_initiated(conn, stream_id); + stream = find_stream_by_id(conn, stream_id); + if (stream) + { + if (our_stream && + SSS_READY == (sss = lsquic_stream_sending_state(stream))) + { + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, "stream %"PRIu64" is in " + "%s state: receipt of STOP_SENDING frame is a violation", + stream_id, lsquic_sss2str[sss]); + return 0; + } + lsquic_stream_stop_sending_in(stream, error_code); + } + else if (conn_is_stream_closed(conn, stream_id)) + LSQ_DEBUG("stream %"PRIu64" is closed: ignore STOP_SENDING frame", + stream_id); + else if (our_stream) + { + ABORT_QUIETLY(0, TEC_STREAM_STATE_ERROR, "received STOP_SENDING frame " + "on locally initiated stream that has not yet been opened"); + return 0; + } + else + { + max_allowed = conn->ifc_max_allowed_stream_id[stream_id & SIT_MASK]; + if (stream_id >= max_allowed) + { + ABORT_QUIETLY(0, TEC_STREAM_LIMIT_ERROR, "incoming STOP_SENDING " + "for stream %"PRIu64" would exceed allowed max of %"PRIu64, + stream_id, max_allowed); + return 0; + } + if (conn->ifc_flags & IFC_GOING_AWAY) + { + LSQ_DEBUG("going away: reject new incoming stream %"PRIu64, + stream_id); + maybe_schedule_ss_for_stream(conn, stream_id, HEC_REQUEST_REJECTED); + return parsed_len; + } + stream = new_stream(conn, stream_id, 0); + if (!stream) + { + ABORT_ERROR("cannot create new stream: %s", strerror(errno)); + return 0; + } + lsquic_stream_stop_sending_in(stream, error_code); + if (!(conn->ifc_flags & IFC_HTTP)) + lsquic_stream_call_on_new(stream); + } + + return parsed_len; +} + + +static unsigned +discard_crypto_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + struct stream_frame stream_frame; + int parsed_len; + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_crypto_frame(p, len, + &stream_frame); + if (parsed_len > 0) + { + LSQ_DEBUG("discard %d-byte CRYPTO frame", parsed_len); + return (unsigned) parsed_len; + } + else + return 0; +} + + +/* In the server, we only wait for Finished frame */ +static unsigned +process_crypto_frame_server (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + struct stream_frame stream_frame; + enum enc_level enc_level; + int parsed_len; + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_crypto_frame(p, len, + &stream_frame); + if (parsed_len < 0) + return 0; + + enc_level = lsquic_packet_in_enc_level(packet_in); + EV_LOG_CRYPTO_FRAME_IN(LSQUIC_LOG_CONN_ID, &stream_frame, enc_level); + LSQ_DEBUG("Got CRYPTO frame for enc level #%u", enc_level); + if (!(conn->ifc_flags & IFC_PROC_CRYPTO)) + { + LSQ_DEBUG("discard %d-byte CRYPTO frame: handshake has been confirmed", + parsed_len); + return (unsigned) parsed_len; + } + if (enc_level < ENC_LEV_HSK) + { /* Must be dup */ + LSQ_DEBUG("discard %d-byte CRYPTO frame on level %s", parsed_len, + lsquic_enclev2str[enc_level]); + return (unsigned) parsed_len; + } + + if (0 != conn->ifc_conn.cn_esf.i->esfi_data_in( + conn->ifc_conn.cn_enc_session, + lsquic_packet_in_enc_level(packet_in), + stream_frame.data_frame.df_data, + stream_frame.data_frame.df_size)) + { + LSQ_DEBUG("feeding CRYPTO frame to enc session failed"); + return 0; + } + + if (!conn->ifc_conn.cn_esf.i->esfi_in_init(conn->ifc_conn.cn_enc_session)) + { + LSQ_DEBUG("handshake confirmed: send HANDSHAKE_DONE"); + conn->ifc_flags &= ~IFC_PROC_CRYPTO; + conn->ifc_send_flags |= SF_SEND_HANDSHAKE_DONE; + + lsquic_alarmset_init_alarm(&conn->ifc_alset, AL_RET_CIDS, + ret_cids_alarm_expired, conn); + lsquic_alarmset_set(&conn->ifc_alset, AL_RET_CIDS, + lsquic_time_now() + RET_CID_TIMEOUT); + } + + return (unsigned) parsed_len; +} + + +static unsigned +process_crypto_frame_client (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + struct stream_frame *stream_frame; + struct lsquic_stream *stream; + enum enc_level enc_level; + int parsed_len; + + /* Ignore CRYPTO frames in server mode and in client mode after SSL object + * is gone. + */ + if (!(conn->ifc_flags & IFC_PROC_CRYPTO)) + return discard_crypto_frame(conn, packet_in, p, len); + + stream_frame = lsquic_malo_get(conn->ifc_pub.mm->malo.stream_frame); + if (!stream_frame) + { + LSQ_WARN("could not allocate stream frame: %s", strerror(errno)); + return 0; + } + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_crypto_frame(p, len, + stream_frame); + if (parsed_len < 0) { + lsquic_malo_put(stream_frame); + ABORT_QUIETLY(0, TEC_FRAME_ENCODING_ERROR, + "cannot decode CRYPTO frame"); + return 0; + } + enc_level = lsquic_packet_in_enc_level(packet_in); + EV_LOG_CRYPTO_FRAME_IN(LSQUIC_LOG_CONN_ID, stream_frame, enc_level); + LSQ_DEBUG("Got CRYPTO frame for enc level #%u", enc_level); + if ((conn->ifc_conn.cn_flags & LSCONN_HANDSHAKE_DONE) + && enc_level != ENC_LEV_APP) + { + LSQ_DEBUG("handshake complete: ignore CRYPTO frames in " + "non-forward-secure packets"); + return parsed_len; + } + + if (conn->ifc_flags & IFC_CLOSING) + { + LSQ_DEBUG("Connection closing: ignore frame"); + lsquic_malo_put(stream_frame); + return parsed_len; + } + + assert(!(conn->ifc_flags & IFC_SERVER)); + if (conn->ifc_u.cli.crypto_streams[enc_level]) + stream = conn->ifc_u.cli.crypto_streams[enc_level]; + else + { + stream = lsquic_stream_new_crypto(enc_level, &conn->ifc_pub, + &lsquic_cry_sm_if, conn->ifc_conn.cn_enc_session, + SCF_IETF|SCF_DI_AUTOSWITCH|SCF_CALL_ON_NEW|SCF_CRITICAL); + if (!stream) + { + lsquic_malo_put(stream_frame); + ABORT_WARN("cannot create crypto stream for level %u", enc_level); + return 0; + } + conn->ifc_u.cli.crypto_streams[enc_level] = stream; + (void) lsquic_stream_wantread(stream, 1); + } + + stream_frame->packet_in = lsquic_packet_in_get(packet_in); + if (0 != lsquic_stream_frame_in(stream, stream_frame)) + { + ABORT_ERROR("cannot insert stream frame"); + return 0; + } + + if (!(conn->ifc_conn.cn_flags & LSCONN_HANDSHAKE_DONE)) + { /* To enable decryption, process handshake stream as soon as its + * data frames are received. + * + * TODO: this does not work when packets are reordered. A more + * flexible solution would defer packet decryption if handshake + * has not been completed yet. Nevertheless, this is good enough + * for now. + */ + lsquic_stream_dispatch_read_events(stream); + } + + return parsed_len; +} + + +static unsigned +process_crypto_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + if (conn->ifc_flags & IFC_SERVER) + return process_crypto_frame_server(conn, packet_in, p, len); + else + return process_crypto_frame_client(conn, packet_in, p, len); +} + + +static unsigned +process_stream_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + struct stream_frame *stream_frame; + struct lsquic_stream *stream; + int parsed_len; + + stream_frame = lsquic_malo_get(conn->ifc_pub.mm->malo.stream_frame); + if (!stream_frame) + { + LSQ_WARN("could not allocate stream frame: %s", strerror(errno)); + return 0; + } + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_stream_frame(p, len, + stream_frame); + if (parsed_len < 0) { + lsquic_malo_put(stream_frame); + ABORT_QUIETLY(0, TEC_FRAME_ENCODING_ERROR, + "cannot decode STREAM frame"); + return 0; + } + EV_LOG_STREAM_FRAME_IN(LSQUIC_LOG_CONN_ID, stream_frame); + CONN_STATS(in.stream_frames, 1); + CONN_STATS(in.stream_data_sz, stream_frame->data_frame.df_size); + + if (conn_is_send_only_stream(conn, stream_frame->stream_id)) + { + ABORT_QUIETLY(0, TEC_STREAM_STATE_ERROR, "received STREAM frame " + "on send-only stream %"PRIu64, stream_frame->stream_id); + return 0; + } + + if ((conn->ifc_flags & (IFC_SERVER|IFC_HTTP)) == IFC_HTTP + && SIT_BIDI_SERVER == (stream_frame->stream_id & SIT_MASK)) + { + ABORT_QUIETLY(1, HEC_STREAM_CREATION_ERROR, "HTTP/3 server " + "is not allowed to initiate bidirectional streams (got " + "STREAM frame for stream %"PRIu64, stream_frame->stream_id); + return 0; + } + + if (conn->ifc_flags & IFC_CLOSING) + { + LSQ_DEBUG("Connection closing: ignore frame"); + lsquic_malo_put(stream_frame); + return parsed_len; + } + + stream = find_stream_by_id(conn, stream_frame->stream_id); + if (!stream) + { + if (conn_is_stream_closed(conn, stream_frame->stream_id)) + { + LSQ_DEBUG("drop frame for closed stream %"PRIu64, + stream_frame->stream_id); + lsquic_malo_put(stream_frame); + return parsed_len; + } + if (is_peer_initiated(conn, stream_frame->stream_id)) + { + const lsquic_stream_id_t max_allowed = + conn->ifc_max_allowed_stream_id[stream_frame->stream_id & SIT_MASK]; + if (stream_frame->stream_id >= max_allowed) + { + ABORT_QUIETLY(0, TEC_STREAM_LIMIT_ERROR, "incoming stream " + "%"PRIu64" exceeds allowed max of %"PRIu64, + stream_frame->stream_id, max_allowed); + lsquic_malo_put(stream_frame); + return 0; + } + if (conn->ifc_flags & IFC_GOING_AWAY) + { + LSQ_DEBUG("going away: reject new incoming stream %"PRIu64, + stream_frame->stream_id); + maybe_schedule_ss_for_stream(conn, stream_frame->stream_id, + HEC_REQUEST_REJECTED); + lsquic_malo_put(stream_frame); + return parsed_len; + } + } + else + { + ABORT_QUIETLY(0, TEC_STREAM_STATE_ERROR, "received STREAM frame " + "for never-initiated stream"); + lsquic_malo_put(stream_frame); + return 0; + } + stream = new_stream(conn, stream_frame->stream_id, SCF_CALL_ON_NEW); + if (!stream) + { + ABORT_ERROR("cannot create new stream: %s", strerror(errno)); + lsquic_malo_put(stream_frame); + return 0; + } + if (SD_BIDI == ((stream_frame->stream_id >> SD_SHIFT) & 1) + && (!valid_stream_id(conn->ifc_max_req_id) + || conn->ifc_max_req_id < stream_frame->stream_id)) + conn->ifc_max_req_id = stream_frame->stream_id; + } + + stream_frame->packet_in = lsquic_packet_in_get(packet_in); + if (0 != lsquic_stream_frame_in(stream, stream_frame)) + { + ABORT_ERROR("cannot insert stream frame"); + return 0; + } + + /* Don't wait for the regular on_read dispatch in order to save an + * unnecessary blocked/unblocked sequence. + */ + if ((conn->ifc_flags & IFC_HTTP) && conn->ifc_qdh.qdh_enc_sm_in == stream) + lsquic_stream_dispatch_read_events(conn->ifc_qdh.qdh_enc_sm_in); + + return parsed_len; +} + + +static unsigned +process_ack_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + struct ack_info *new_acki; + enum packnum_space pns; + int parsed_len; + lsquic_time_t warn_time; + + CONN_STATS(in.n_acks, 1); + + if (conn->ifc_flags & IFC_HAVE_SAVED_ACK) + new_acki = conn->ifc_pub.mm->acki; + else + new_acki = &conn->ifc_ack; + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_ack_frame(p, len, new_acki, + conn->ifc_cfg.ack_exp); + if (parsed_len < 0) + goto err; + + /* This code to throw out old ACKs is what keeps us compliant with this + * requirement: + * + * [draft-ietf-quic-transport-18] Section 13.3.2. + * + > Processing counts out of order can result in verification failure. + > An endpoint SHOULD NOT perform this verification if the ACK frame is + > received in a packet with packet number lower than a previously + > received ACK frame. Verifying based on ACK frames that arrive out of + > order can result in disabling ECN unnecessarily. + */ + pns = lsquic_hety2pns[ packet_in->pi_header_type ]; + if (is_valid_packno(conn->ifc_max_ack_packno[pns]) && + packet_in->pi_packno <= conn->ifc_max_ack_packno[pns]) + { + LSQ_DEBUG("Ignore old ack (max %"PRIu64")", + conn->ifc_max_ack_packno[pns]); + return parsed_len; + } + + EV_LOG_ACK_FRAME_IN(LSQUIC_LOG_CONN_ID, new_acki); + conn->ifc_max_ack_packno[pns] = packet_in->pi_packno; + new_acki->pns = pns; + + ++conn->ifc_pts.n_acks; + + /* Only cache ACKs for PNS_APP */ + if (pns == PNS_APP && new_acki == &conn->ifc_ack) + { + LSQ_DEBUG("Saved ACK"); + conn->ifc_flags |= IFC_HAVE_SAVED_ACK; + conn->ifc_saved_ack_received = packet_in->pi_received; + } + else if (pns == PNS_APP) + { + if (0 == lsquic_merge_acks(&conn->ifc_ack, new_acki)) + { + CONN_STATS(in.n_acks_merged, 1); + LSQ_DEBUG("merged into saved ACK, getting %s", + (lsquic_acki2str(&conn->ifc_ack, conn->ifc_pub.mm->ack_str, + MAX_ACKI_STR_SZ), conn->ifc_pub.mm->ack_str)); + } + else + { + LSQ_DEBUG("could not merge new ACK into saved ACK"); + if (0 != process_ack(conn, &conn->ifc_ack, packet_in->pi_received, + packet_in->pi_received)) + goto err; + conn->ifc_ack = *new_acki; + } + conn->ifc_saved_ack_received = packet_in->pi_received; + } + else + { + if (0 != process_ack(conn, new_acki, packet_in->pi_received, + packet_in->pi_received)) + goto err; + } + + return parsed_len; + + err: + warn_time = lsquic_time_now(); + if (0 == conn->ifc_enpub->enp_last_warning[WT_ACKPARSE_FULL] + || conn->ifc_enpub->enp_last_warning[WT_ACKPARSE_FULL] + + WARNING_INTERVAL < warn_time) + { + conn->ifc_enpub->enp_last_warning[WT_ACKPARSE_FULL] = warn_time; + LSQ_WARN("Invalid ACK frame"); + } + return 0; +} + + +static unsigned +process_ping_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ /* This frame causes ACK frame to be queued, but nothing to do here; + * return the length of this frame. + */ + EV_LOG_PING_FRAME_IN(LSQUIC_LOG_CONN_ID); + if (conn->ifc_flags & IFC_SERVER) + log_conn_flow_control(conn); + + LSQ_DEBUG("received PING frame, update last progress to %"PRIu64, + conn->ifc_pub.last_tick); + conn->ifc_pub.last_prog = conn->ifc_pub.last_tick; + + return 1; +} + + +static int +is_benign_transport_error_code (uint64_t error_code) +{ + switch (error_code) + { + case TEC_NO_ERROR: + case TEC_INTERNAL_ERROR: + return 1; + default: + return 0; + } +} + + +static int +is_benign_application_error_code (uint64_t error_code) +{ + switch (error_code) + { + case HEC_NO_ERROR: + case HEC_INTERNAL_ERROR: + return 1; + default: + return 0; + } +} + + +static unsigned +process_connection_close_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + uint64_t error_code; + uint16_t reason_len; + uint8_t reason_off; + int parsed_len, app_error; + const char *ua; + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_connect_close_frame(p, len, + &app_error, &error_code, &reason_len, &reason_off); + if (parsed_len < 0) + return 0; + EV_LOG_CONNECTION_CLOSE_FRAME_IN(LSQUIC_LOG_CONN_ID, error_code, + (int) reason_len, (const char *) p + reason_off); + if (LSQ_LOG_ENABLED(LSQ_LOG_NOTICE) + && !( (!app_error && is_benign_transport_error_code(error_code)) + ||( app_error && is_benign_application_error_code(error_code)))) + { + if (conn->ifc_flags & IFC_HTTP) + { + ua = lsquic_qdh_get_ua(&conn->ifc_qdh); + if (!ua) + ua = "unknown peer"; + } + else + ua = "non-HTTP/3 peer"; + LSQ_NOTICE("Received CONNECTION_CLOSE from <%s> with %s-level error " + "code %"PRIu64", reason: `%.*s'", ua, + app_error ? "application" : "transport", error_code, + (int) reason_len, (const char *) p + reason_off); + } + else + LSQ_INFO("Received CONNECTION_CLOSE frame (%s-level code: %"PRIu64"; " + "reason: %.*s)", app_error ? "application" : "transport", + error_code, (int) reason_len, (const char *) p + reason_off); + if (conn->ifc_enpub->enp_stream_if->on_conncloseframe_received) + conn->ifc_enpub->enp_stream_if->on_conncloseframe_received( + &conn->ifc_conn, app_error, error_code, (const char *) p + reason_off, reason_len); + conn->ifc_flags |= IFC_RECV_CLOSE|IFC_CLOSING; + return parsed_len; +} + + +static unsigned +process_max_data_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + uint64_t max_data; + int parsed_len; + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_max_data(p, len, &max_data); + if (parsed_len < 0) + return 0; + + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "RX MAX_DATA frame; offset: %"PRIu64, + max_data); + if (max_data > conn->ifc_pub.conn_cap.cc_max) + { + LSQ_DEBUG("max data goes from %"PRIu64" to %"PRIu64, + conn->ifc_pub.conn_cap.cc_max, max_data); + conn->ifc_pub.conn_cap.cc_max = max_data; + } + else + LSQ_DEBUG("newly supplied max data=%"PRIu64" is not larger than the " + "current value=%"PRIu64", ignoring", max_data, + conn->ifc_pub.conn_cap.cc_max); + return parsed_len; +} + + +static unsigned +process_max_stream_data_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + struct lsquic_stream *stream; + lsquic_stream_id_t stream_id; + uint64_t max_data; + int parsed_len; + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_max_stream_data_frame(p, len, + &stream_id, &max_data); + if (parsed_len < 0) + return 0; + + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "RX MAX_STREAM_DATA frame; " + "stream_id: %"PRIu64"; offset: %"PRIu64, stream_id, max_data); + if (conn_is_receive_only_stream(conn, stream_id)) + { + ABORT_QUIETLY(0, TEC_STREAM_STATE_ERROR, + "received MAX_STREAM_DATA on receive-only stream %"PRIu64, stream_id); + return 0; + } + + stream = find_stream_by_id(conn, stream_id); + if (stream) + lsquic_stream_window_update(stream, max_data); + else if (conn_is_stream_closed(conn, stream_id)) + LSQ_DEBUG("stream %"PRIu64" is closed: ignore MAX_STREAM_DATA frame", + stream_id); + else + { + if (is_peer_initiated(conn, stream_id)) + { + if ((conn->ifc_flags & (IFC_SERVER|IFC_HTTP)) == IFC_HTTP + && SIT_BIDI_SERVER == (stream_id & SIT_MASK)) + { + ABORT_QUIETLY(1, HEC_STREAM_CREATION_ERROR, "HTTP/3 server " + "is not allowed to initiate bidirectional streams (got " + "STREAM frame for stream %"PRIu64, stream_id); + return 0; + } + + if (conn->ifc_flags & IFC_CLOSING) + { + LSQ_DEBUG("Connection closing: ignore frame"); + return parsed_len; + } + const lsquic_stream_id_t max_allowed = + conn->ifc_max_allowed_stream_id[stream_id & SIT_MASK]; + if (stream_id >= max_allowed) + { + ABORT_QUIETLY(0, TEC_STREAM_LIMIT_ERROR, "incoming stream " + "%"PRIu64" exceeds allowed max of %"PRIu64, + stream_id, max_allowed); + return 0; + } + if (conn->ifc_flags & IFC_GOING_AWAY) + { + LSQ_DEBUG("going away: reject new incoming stream %"PRIu64, + stream_id); + maybe_schedule_ss_for_stream(conn, stream_id, + HEC_REQUEST_REJECTED); + return parsed_len; + } + stream = new_stream(conn, stream_id, SCF_CALL_ON_NEW); + if (!stream) + { + ABORT_ERROR("cannot create new stream: %s", strerror(errno)); + return 0; + } + if (SD_BIDI == ((stream_id >> SD_SHIFT) & 1) + && (!valid_stream_id(conn->ifc_max_req_id) + || conn->ifc_max_req_id < stream_id)) + conn->ifc_max_req_id = stream_id; + + lsquic_stream_window_update(stream, max_data); + } + else + { + ABORT_QUIETLY(0, TEC_STREAM_STATE_ERROR, "received MAX_STREAM_DATA " + "frame on never-opened stream %"PRIu64, stream_id); + return 0; + } + } + + return parsed_len; +} + + +static unsigned +process_max_streams_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + lsquic_stream_id_t max_stream_id; + enum stream_id_type sit; + enum stream_dir sd; + uint64_t max_streams; + int parsed_len; + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_max_streams_frame(p, len, + &sd, &max_streams); + if (parsed_len < 0) + return 0; + + sit = gen_sit(conn->ifc_flags & IFC_SERVER, sd); + max_stream_id = max_streams << SIT_SHIFT; + + if (max_stream_id > VINT_MAX_VALUE) + { + ABORT_QUIETLY(0, TEC_FRAME_ENCODING_ERROR, + "MAX_STREAMS: max %s stream ID of %"PRIu64" exceeds maximum " + "stream ID", sd == SD_BIDI ? "bidi" : "uni", max_stream_id); + return 0; + } + + if (max_stream_id > conn->ifc_max_allowed_stream_id[sit]) + { + LSQ_DEBUG("max %s stream ID updated from %"PRIu64" to %"PRIu64, + sd == SD_BIDI ? "bidi" : "uni", + conn->ifc_max_allowed_stream_id[sit], max_stream_id); + conn->ifc_max_allowed_stream_id[sit] = max_stream_id; + } + else + LSQ_DEBUG("ignore old max %s streams value of %"PRIu64, + sd == SD_BIDI ? "bidi" : "uni", max_streams); + + return parsed_len; +} + + +/* Returns true if current DCID was retired. In this case, it must be + * replaced. + */ +static int +retire_dcids_prior_to (struct ietf_full_conn *conn, unsigned retire_prior_to) +{ + struct dcid_elem **el; + int update_cur_dcid = 0; +#if LSQUIC_LOWEST_LOG_LEVEL >= LSQ_LOG_DEBUG + unsigned count = 0; +#endif + + for (el = conn->ifc_dces; el < conn->ifc_dces + sizeof(conn->ifc_dces) + / sizeof(conn->ifc_dces[0]); ++el) + if (*el && (*el)->de_seqno < retire_prior_to) + { + update_cur_dcid |= LSQUIC_CIDS_EQ(&(*el)->de_cid, CUR_DCID(conn)); + retire_dcid(conn, el); +#if LSQUIC_LOWEST_LOG_LEVEL >= LSQ_LOG_DEBUG + ++count; +#endif + } + + LSQ_DEBUG("retired %u DCID%s due to Retire Prior To=%u", count, + count != 1 ? "s" : "", retire_prior_to); + return update_cur_dcid; +} + + +static int +insert_new_dcid (struct ietf_full_conn *conn, uint64_t seqno, + const lsquic_cid_t *cid, const unsigned char *token, int update_cur_dcid) +{ + struct dcid_elem **dce, **el; + char tokstr[IQUIC_SRESET_TOKEN_SZ * 2 + 1]; + + dce = NULL; + for (el = conn->ifc_dces; el < conn->ifc_dces + sizeof(conn->ifc_dces) + / sizeof(conn->ifc_dces[0]); ++el) + if (*el) + { + if ((*el)->de_seqno == seqno) + { + if (!LSQUIC_CIDS_EQ(&(*el)->de_cid, cid)) + { + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, + "NEW_CONNECTION_ID: already have CID seqno %"PRIu64 + " but with a different CID", seqno); + return -1; + } + else + { + LSQ_DEBUG("Ignore duplicate CID seqno %"PRIu64, seqno); + return 0; + } + } + else if (LSQUIC_CIDS_EQ(&(*el)->de_cid, cid)) + { + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, + "NEW_CONNECTION_ID: received the same CID with sequence " + "numbers %u and %"PRIu64, (*el)->de_seqno, seqno); + return -1; + } + else if (((*el)->de_flags & DE_SRST) + && 0 == memcmp((*el)->de_srst, token, + IQUIC_SRESET_TOKEN_SZ)) + { + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, + "NEW_CONNECTION_ID: received second instance of reset " + "token %s in seqno %"PRIu64", same as in seqno %u", + (lsquic_hexstr(token, IQUIC_SRESET_TOKEN_SZ, tokstr, + sizeof(tokstr)), tokstr), + seqno, (*el)->de_seqno); + return -1; + } + } + else if (!dce) + dce = el; + + if (!dce) + { + ABORT_QUIETLY(0, TEC_CONNECTION_ID_LIMIT_ERROR, + "NEW_CONNECTION_ID: received connection ID that is going over the " + "limit of %u CIDs", MAX_IETF_CONN_DCIDS); + return -1; + } + + *dce = lsquic_malo_get(conn->ifc_pub.mm->malo.dcid_elem); + if (*dce) + { + memset(*dce, 0, sizeof(**dce)); + (*dce)->de_seqno = seqno; + (*dce)->de_cid = *cid; + memcpy((*dce)->de_srst, token, sizeof((*dce)->de_srst)); + (*dce)->de_flags |= DE_SRST; + if (update_cur_dcid) + { + *CUR_DCID(conn) = *cid; + if (CUR_CPATH(conn)->cop_flags & COP_SPIN_BIT) + CUR_CPATH(conn)->cop_spin_bit = 0; + } + } + else + LSQ_WARN("cannot allocate dce to insert DCID seqno %"PRIu64, seqno); + + return 0; +} + + +static unsigned +process_new_connection_id_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + const unsigned char *token; + const char *action_str; + lsquic_cid_t cid; + uint64_t seqno, retire_prior_to; + int parsed_len, update_cur_dcid; + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_new_conn_id(p, len, + &seqno, &retire_prior_to, &cid, &token); + if (parsed_len < 0) + { + if (parsed_len == -2) + ABORT_QUIETLY(0, TEC_FRAME_ENCODING_ERROR, + "NEW_CONNECTION_ID contains invalid CID length"); + return 0; + } + + if (seqno > UINT32_MAX || retire_prior_to > UINT32_MAX) + { /* It is wasteful to use 8-byte integers for these counters, so this + * is the guard here. This will "Never Happen." + */ + LSQ_INFO("ignoring unreasonably high seqno=%"PRIu64" or Retire Prior " + "To=%"PRIu64, seqno, retire_prior_to); + return parsed_len; + } + + if (retire_prior_to > seqno) + { + ABORT_QUIETLY(0, TEC_FRAME_ENCODING_ERROR, + "NEW_CONNECTION_ID: Retire Prior To=%"PRIu64" is larger then the " + "Sequence Number=%"PRIu64, retire_prior_to, seqno); + return 0; + } + + if (CUR_DCID(conn)->len == 0) + { + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, "Received NEW_CONNECTION_ID " + "frame, but current DCID is zero-length"); + return 0; + } + + if (seqno < conn->ifc_last_retire_prior_to) + { + retire_seqno(conn, seqno); + action_str = "Ignored (seqno smaller than last retire_prior_to"; + goto end; + } + + if (retire_prior_to > conn->ifc_last_retire_prior_to) + { + conn->ifc_last_retire_prior_to = retire_prior_to; + update_cur_dcid = retire_dcids_prior_to(conn, retire_prior_to); + } + else + update_cur_dcid = 0; + + if (0 != insert_new_dcid(conn, seqno, &cid, token, update_cur_dcid)) + return 0; + action_str = "Saved"; + + end: + LSQ_DEBUGC("Got new connection ID from peer: seq=%"PRIu64"; " + "cid: %"CID_FMT". %s.", seqno, CID_BITS(&cid), action_str); + return parsed_len; +} + + +static void +retire_cid (struct ietf_full_conn *conn, struct conn_cid_elem *cce, + lsquic_time_t now) +{ + struct lsquic_conn *const lconn = &conn->ifc_conn; + lsquic_time_t drain_time; + + drain_time = calc_drain_time(conn); + LSQ_DEBUGC("retiring CID %"CID_FMT"; seqno: %u; %s; drain time %"PRIu64 + " usec", CID_BITS(&cce->cce_cid), cce->cce_seqno, + (cce->cce_flags & CCE_SEQNO) ? "" : "original", drain_time); + + if (cce->cce_flags & CCE_SEQNO) + --conn->ifc_active_cids_count; + lsquic_engine_retire_cid(conn->ifc_enpub, lconn, cce - lconn->cn_cces, now, + drain_time); + memset(cce, 0, sizeof(*cce)); + + if (can_issue_cids(conn) + && !(lsquic_alarmset_is_set(&conn->ifc_alset, AL_CID_THROT))) + maybe_get_rate_available_scid_slot(conn, now); +} + + +static unsigned +process_retire_connection_id_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + struct lsquic_conn *const lconn = &conn->ifc_conn; + struct conn_cid_elem *cce; + uint64_t seqno; + int parsed_len; + + /* [draft-ietf-quic-transport-25] Section 19.16 + * + * - Peer cannot retire zero-lenth CID. (MUST treat as PROTOCOL_VIOLATION) + * - Peer cannot retire CID with sequence number that has not been + * allocated yet. (MUST treat as PROTOCOL_VIOLATION) + * - Peer cannot retire CID that matches the DCID in packet. + * (MAY treat as PROTOCOL_VIOLATION) + */ + if (conn->ifc_settings->es_scid_len == 0) + { + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, "cannot retire zero-length CID"); + return 0; + } + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_retire_cid_frame(p, len, + &seqno); + if (parsed_len < 0) + return 0; + + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "got RETIRE_CONNECTION_ID frame: " + "seqno=%"PRIu64, seqno); + if (seqno >= conn->ifc_scid_seqno) + { + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, "cannot retire CID seqno=" + "%"PRIu64" as it has not been allocated yet", seqno); + return 0; + } + + for (cce = lconn->cn_cces; cce < END_OF_CCES(lconn); ++cce) + if ((lconn->cn_cces_mask & (1 << (cce - lconn->cn_cces)) + && (cce->cce_flags & CCE_SEQNO) + && cce->cce_seqno == seqno)) + break; + /* NOTE: https://github.com/litespeedtech/lsquic/issues/334 + conn->ifc_active_cids_count -= seqno >= conn->ifc_first_active_cid_seqno; + */ + if (cce < END_OF_CCES(lconn)) + { + if (LSQUIC_CIDS_EQ(&cce->cce_cid, &packet_in->pi_dcid)) + { + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, "cannot retire CID " + "seqno=%"PRIu64", for it is used as DCID in the packet", seqno); + return 0; + } + retire_cid(conn, cce, packet_in->pi_received); + if (lconn->cn_cur_cce_idx == cce - lconn->cn_cces) + { + cce = find_cce_by_cid(conn, &packet_in->pi_dcid); + if (cce) + { + cce->cce_flags |= CCE_USED; + lconn->cn_cur_cce_idx = cce - lconn->cn_cces; + LSQ_DEBUGC("current SCID was retired; set current SCID to " + "%"CID_FMT" based on DCID in incoming packet", + CID_BITS(&packet_in->pi_dcid)); + } + else + LSQ_WARN("current SCID was retired; no new SCID candidate"); + /* This could theoretically happen when zero-length CIDs were + * used. Currently, there should be no way lsquic could get + * into this situation. + */ + } + } + else + LSQ_DEBUG("cannot retire CID seqno=%"PRIu64": not found", seqno); + LOG_SCIDS(conn); + + return parsed_len; +} + + +static unsigned +process_new_token_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + const unsigned char *token; + size_t token_sz; + char *token_str; + int parsed_len; + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_new_token_frame(p, len, &token, + &token_sz); + if (parsed_len < 0) + return 0; + + if (0 == token_sz) + { + ABORT_QUIETLY(0, TEC_FRAME_ENCODING_ERROR, "received an empty " + "NEW_TOKEN frame"); + return 0; + } + + if (conn->ifc_flags & IFC_SERVER) + { /* [draft-ietf-quic-transport-34] Section 19.7 */ + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, + "received unexpected NEW_TOKEN frame"); + return 0; + } + + if (LSQ_LOG_ENABLED(LSQ_LOG_DEBUG) + || LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) + { + token_str = malloc(token_sz * 2 + 1); + if (token_str) + { + lsquic_hexstr(token, token_sz, token_str, token_sz * 2 + 1); + LSQ_DEBUG("Got %zu-byte NEW_TOKEN %s", token_sz, token_str); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "got NEW_TOKEN %s", + token_str); + free(token_str); + } + } + if (conn->ifc_enpub->enp_stream_if->on_new_token) + conn->ifc_enpub->enp_stream_if->on_new_token( + conn->ifc_enpub->enp_stream_if_ctx, token, token_sz); + return parsed_len; +} + + +static unsigned +process_stream_blocked_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + struct lsquic_stream *stream; + lsquic_stream_id_t stream_id; + uint64_t peer_off; + int parsed_len; + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_stream_blocked_frame(p, + len, &stream_id, &peer_off); + if (parsed_len < 0) + return 0; + + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "RX STREAM_BLOCKED frame: stream " + "%"PRIu64"; offset %"PRIu64, stream_id, peer_off); + LSQ_DEBUG("received STREAM_BLOCKED frame: stream %"PRIu64 + "; offset %"PRIu64, stream_id, peer_off); + + if (conn_is_send_only_stream(conn, stream_id)) + { + ABORT_QUIETLY(0, TEC_STREAM_STATE_ERROR, + "received STREAM_BLOCKED frame on send-only stream %"PRIu64, + stream_id); + return 0; + } + + stream = find_stream_by_id(conn, stream_id); + if (stream) + lsquic_stream_peer_blocked(stream, peer_off); + else + LSQ_DEBUG("stream %"PRIu64" not found - ignore STREAM_BLOCKED frame", + stream_id); + return parsed_len; +} + + +static unsigned +process_streams_blocked_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + lsquic_stream_id_t max_stream_id; + uint64_t stream_limit; + enum stream_dir sd; + int parsed_len; + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_streams_blocked_frame(p, + len, &sd, &stream_limit); + if (parsed_len < 0) + return 0; + + max_stream_id = stream_limit << SIT_SHIFT; + if (max_stream_id > VINT_MAX_VALUE) + { + ABORT_QUIETLY(0, TEC_FRAME_ENCODING_ERROR, + "STREAMS_BLOCKED: max %s stream ID of %"PRIu64" exceeds maximum " + "stream ID", sd == SD_BIDI ? "bidi" : "uni", max_stream_id); + return 0; + } + + LSQ_DEBUG("received STREAMS_BLOCKED frame: limited to %"PRIu64 + " %sdirectional stream%.*s", stream_limit, sd == SD_UNI ? "uni" : "bi", + stream_limit != 1, "s"); + /* We don't do anything with this information -- at least for now */ + return parsed_len; +} + + +static unsigned +process_blocked_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + uint64_t peer_off; + int parsed_len; + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_blocked_frame(p, len, + &peer_off); + if (parsed_len < 0) + return 0; + + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "RX BLOCKED frame: offset %"PRIu64, + peer_off); + LSQ_DEBUG("received BLOCKED frame: offset %"PRIu64, peer_off); + + if (peer_off > conn->ifc_last_max_data_off_sent + && !(conn->ifc_send_flags & SF_SEND_MAX_DATA)) + { + conn->ifc_send_flags |= SF_SEND_MAX_DATA; + LSQ_DEBUG("marked to send MAX_DATA frame"); + } + else if (conn->ifc_send_flags & SF_SEND_MAX_DATA) + LSQ_DEBUG("MAX_STREAM_DATA frame is already scheduled"); + else + LSQ_DEBUG("MAX_DATA(%"PRIu64") has already been either " + "packetized or sent to peer", conn->ifc_last_max_data_off_sent); + + return parsed_len; +} + + +static unsigned +process_handshake_done_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + int parsed_len; + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_handshake_done_frame(p, len); + if (parsed_len < 0) + return 0; + + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "RX HANDSHAKE_DONE frame"); + LSQ_DEBUG("received HANDSHAKE_DONE frame"); + + if (conn->ifc_flags & IFC_SERVER) + { + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, + "Client cannot send HANDSHAKE_DONE frame"); + return 0; + } + + handshake_confirmed(conn); + + return parsed_len; +} + + +static unsigned +process_ack_frequency_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + uint64_t seqno, pack_tol, upd_mad; + int parsed_len, ignore; + + if (!conn->ifc_settings->es_delayed_acks + && !(conn->ifc_flags & IFC_DELAYED_ACKS)) + { + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, + "Received unexpected ACK_FREQUENCY frame (not negotiated)"); + return 0; + } + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_ack_frequency_frame(p, len, + &seqno, &pack_tol, &upd_mad, &ignore); + if (parsed_len < 0) + return 0; + + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "RX ACK_FREQUENCY frame: (seqno: %"PRIu64"; " + "pack_tol: %"PRIu64"; upd: %"PRIu64"; ignore: %d)", seqno, + pack_tol, upd_mad, ignore); + LSQ_DEBUG("RX ACK_FREQUENCY frame: (seqno: %"PRIu64"; pack_tol: %"PRIu64"; " + "upd: %"PRIu64"; ignore: %d)", seqno, pack_tol, upd_mad, + ignore); + + if (pack_tol == 0) + { + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, + "Packet Tolerance of zero is invalid"); + return 0; + } + + if (upd_mad < TP_MIN_ACK_DELAY) + { + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, + "Update Max Ack Delay value of %"PRIu64" usec is invalid, as it " + "is smaller than the advertised min_ack_delay of %u usec", + upd_mad, TP_MIN_ACK_DELAY); + return 0; + } + + if (conn->ifc_max_ack_freq_seqno > 0 + && seqno <= conn->ifc_max_ack_freq_seqno) + { + LSQ_DEBUG("ignore old ACK_FREQUENCY frame"); + return parsed_len; + } + conn->ifc_max_ack_freq_seqno = seqno; + + if (pack_tol < UINT_MAX) + { + LSQ_DEBUG("set packet tolerance to %"PRIu64, pack_tol); + conn->ifc_max_retx_since_last_ack = pack_tol; + } + + if (upd_mad != conn->ifc_max_ack_delay) + { + conn->ifc_max_ack_delay = upd_mad; + LSQ_DEBUG("set Max Ack Delay to new value of %"PRIu64" usec", + conn->ifc_max_ack_delay); + } + else + LSQ_DEBUG("keep Max Ack Delay unchanged at %"PRIu64" usec", + conn->ifc_max_ack_delay); + + if (ignore) + { + conn->ifc_mflags |= MF_IGNORE_MISSING; + conn->ifc_flags &= ~IFC_ACK_HAD_MISS; + } + else + conn->ifc_mflags &= ~MF_IGNORE_MISSING; + + return parsed_len; +} + + +static unsigned +process_timestamp_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, + "Received unexpected TIMESTAMP frame (not negotiated)"); + return 0; +} + + +static unsigned +process_datagram_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + const void *data; + size_t data_sz; + int parsed_len; + + if (!(conn->ifc_flags & IFC_DATAGRAMS)) + { + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, + "Received unexpected DATAGRAM frame (not negotiated)"); + return 0; + } + + parsed_len = conn->ifc_conn.cn_pf->pf_parse_datagram_frame(p, len, + &data, &data_sz); + if (parsed_len < 0) + return 0; + + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "%zd-byte DATAGRAM", data_sz); + LSQ_DEBUG("%zd-byte DATAGRAM", data_sz); + + conn->ifc_enpub->enp_stream_if->on_datagram(&conn->ifc_conn, data, data_sz); + + return parsed_len; +} + + +typedef unsigned (*process_frame_f)( + struct ietf_full_conn *, struct lsquic_packet_in *, + const unsigned char *p, size_t); + + +static process_frame_f const process_frames[N_QUIC_FRAMES] = +{ + [QUIC_FRAME_PADDING] = process_padding_frame, + [QUIC_FRAME_RST_STREAM] = process_rst_stream_frame, + [QUIC_FRAME_CONNECTION_CLOSE] = process_connection_close_frame, + [QUIC_FRAME_MAX_DATA] = process_max_data_frame, + [QUIC_FRAME_MAX_STREAM_DATA] = process_max_stream_data_frame, + [QUIC_FRAME_MAX_STREAMS] = process_max_streams_frame, + [QUIC_FRAME_PING] = process_ping_frame, + [QUIC_FRAME_BLOCKED] = process_blocked_frame, + [QUIC_FRAME_STREAM_BLOCKED] = process_stream_blocked_frame, + [QUIC_FRAME_STREAMS_BLOCKED] = process_streams_blocked_frame, + [QUIC_FRAME_NEW_CONNECTION_ID] = process_new_connection_id_frame, + [QUIC_FRAME_NEW_TOKEN] = process_new_token_frame, + [QUIC_FRAME_STOP_SENDING] = process_stop_sending_frame, + [QUIC_FRAME_ACK] = process_ack_frame, + [QUIC_FRAME_PATH_CHALLENGE] = process_path_challenge_frame, + [QUIC_FRAME_PATH_RESPONSE] = process_path_response_frame, + [QUIC_FRAME_RETIRE_CONNECTION_ID] = process_retire_connection_id_frame, + [QUIC_FRAME_STREAM] = process_stream_frame, + [QUIC_FRAME_CRYPTO] = process_crypto_frame, + [QUIC_FRAME_HANDSHAKE_DONE] = process_handshake_done_frame, + [QUIC_FRAME_ACK_FREQUENCY] = process_ack_frequency_frame, + [QUIC_FRAME_TIMESTAMP] = process_timestamp_frame, + [QUIC_FRAME_DATAGRAM] = process_datagram_frame, +}; + + +static unsigned +process_packet_frame (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + enum enc_level enc_level; + enum quic_frame_type type; + char str[8 * 2 + 1]; + + enc_level = lsquic_packet_in_enc_level(packet_in); + type = conn->ifc_conn.cn_pf->pf_parse_frame_type(p, len); + if (lsquic_legal_frames_by_level[conn->ifc_conn.cn_version][enc_level] + & (1 << type)) + { + LSQ_DEBUG("about to process %s frame", frame_type_2_str[type]); + packet_in->pi_frame_types |= 1 << type; + return process_frames[type](conn, packet_in, p, len); + } + else + { + LSQ_DEBUG("invalid frame %u (bytes: %s) at encryption level %s", + type, HEXSTR(p, MIN(len, 8), str), lsquic_enclev2str[enc_level]); + ABORT_QUIETLY(0, TEC_FRAME_ENCODING_ERROR, "invalid frame"); + return 0; + } +} + + +static struct dcid_elem * +find_unassigned_dcid (struct ietf_full_conn *conn) +{ + struct dcid_elem **dce; + + for (dce = conn->ifc_dces; dce < DCES_END(conn); ++dce) + if (*dce && !((*dce)->de_flags & DE_ASSIGNED)) + return *dce; + + return NULL; +} + + +static struct conn_cid_elem * +find_cce_by_cid (struct ietf_full_conn *conn, const lsquic_cid_t *cid) +{ + struct lsquic_conn *const lconn = &conn->ifc_conn; + struct conn_cid_elem *cce; + + for (cce = lconn->cn_cces; cce < END_OF_CCES(lconn); ++cce) + if ((lconn->cn_cces_mask & (1 << (cce - lconn->cn_cces))) + && LSQUIC_CIDS_EQ(&cce->cce_cid, cid)) + return cce; + + return NULL; +} + + +static int +init_new_path (struct ietf_full_conn *conn, struct conn_path *path, + int dcid_changed) +{ + struct dcid_elem *dce; + + dce = find_unassigned_dcid(conn); + if (dce) + { + LSQ_DEBUGC("assigned new DCID %"CID_FMT" to new path %u", + CID_BITS(&dce->de_cid), (unsigned) (path - conn->ifc_paths)); + path->cop_path.np_dcid = dce->de_cid; + dce->de_flags |= DE_ASSIGNED; + } + else if (!dcid_changed || CUR_DCID(conn)->len == 0) + { + /* It is OK to reuse DCID if it is zero-length or ir the peer did not + * use a new DCID when its address changed. See + * [draft-ietf-quic-transport-24] Section 9.5. + */ + path->cop_path.np_dcid = CUR_NPATH(conn)->np_dcid; + LSQ_DEBUGC("assigned already-used DCID %"CID_FMT" to new path %u, " + "as incoming DCID did not change", + CID_BITS(&path->cop_path.np_dcid), + (unsigned) (path - conn->ifc_paths)); + } + else + { + LSQ_DEBUG("Don't have an unassigned DCID: cannot initialize path"); + return -1; + } + + path->cop_path.np_pack_size + = calc_base_packet_size(conn, NP_IS_IPv6(&path->cop_path)); + + if (conn->ifc_max_udp_payload < path->cop_path.np_pack_size) + path->cop_path.np_pack_size = conn->ifc_max_udp_payload; + + LSQ_DEBUG("initialized path %u", (unsigned) (path - conn->ifc_paths)); + + return 0; +} + + +static int +on_new_or_unconfirmed_path (struct ietf_full_conn *conn, + const struct lsquic_packet_in *packet_in) +{ + struct lsquic_conn *const lconn = &conn->ifc_conn; + struct conn_path *const path = &conn->ifc_paths[packet_in->pi_path_id]; + struct conn_cid_elem *cce; + int dcid_changed; + char cidbuf_[MAX_CID_LEN * 2 + 1]; + + /* An endpoint only changes the address that it sends packets to in + * response to the highest-numbered non-probing packet. This ensures + * that an endpoint does not send packets to an old peer address in the + * case that it receives reordered packets. + * + * [draft-ietf-quic-transport-20], Section 9.3. + */ + if (lsquic_packet_in_non_probing(packet_in) + && packet_in->pi_packno > conn->ifc_max_non_probing) + path->cop_flags |= COP_GOT_NONPROB; + + /* If we cannot find a SCID at this point, something is wrong. */ + cce = find_cce_by_cid(conn, &packet_in->pi_dcid); + if (!cce) + { + ABORT_ERROR("DCID %"CID_FMT" not found on new path", + CID_BITS(&packet_in->pi_dcid)); + return -1; + } + + dcid_changed = !(cce->cce_flags & CCE_USED); + if (!(path->cop_flags & COP_INITIALIZED)) + { + LSQ_DEBUGC("current SCID: %"CID_FMT, CID_BITS(CN_SCID(&conn->ifc_conn))); + LSQ_DEBUGC("packet in DCID: %"CID_FMT"; changed: %d", + CID_BITS(&packet_in->pi_dcid), dcid_changed); + if (0 == init_new_path(conn, path, dcid_changed)) + { + path->cop_flags |= COP_INITIALIZED; + if (packet_in->pi_data_sz >= IQUIC_MIN_INIT_PACKET_SZ / 3) + path->cop_flags |= COP_ALLOW_MTU_PADDING; + } + else + return -1; + + conn->ifc_send_flags |= SF_SEND_PATH_CHAL << packet_in->pi_path_id; + LSQ_DEBUG("scheduled return path challenge on path %hhu", + packet_in->pi_path_id); + } + else if ((path->cop_flags & (COP_VALIDATED|COP_GOT_NONPROB)) + == (COP_VALIDATED|COP_GOT_NONPROB)) + { + assert(path->cop_flags & COP_INITIALIZED); + LSQ_DEBUG("received non-probing frame on validated path %hhu, " + "switch to it", packet_in->pi_path_id); + switch_path_to(conn, packet_in->pi_path_id); + } + + path->cop_cce_idx = cce - lconn->cn_cces; + cce->cce_flags |= CCE_USED; + LOG_SCIDS(conn); + return 0; +} + + +static void +parse_regular_packet (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in) +{ + const unsigned char *p, *pend; + unsigned len; + + p = packet_in->pi_data + packet_in->pi_header_sz; + pend = packet_in->pi_data + packet_in->pi_data_sz; + + if (p < pend) + do + { + len = process_packet_frame(conn, packet_in, p, pend - p); + if (len > 0) + p += len; + else + { + ABORT_ERROR("Error parsing frame"); + break; + } + } + while (p < pend); + else + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, + "packet %"PRIu64" has no frames", packet_in->pi_packno); +} + + +/* From [draft-ietf-quic-transport-24] Section 13.2.1: + * " An endpoint MUST NOT send a non-ack-eliciting packet in response + * " to a non-ack-eliciting packet, even if there are packet gaps + * " which precede the received packet. + * + * To ensure that we always send an ack-eliciting packet in this case, we + * check that there are frames that are about to be written. + */ +static int +many_in_and_will_write (struct ietf_full_conn *conn) +{ + return conn->ifc_n_slack_all > MAX_ANY_PACKETS_SINCE_LAST_ACK + && (conn->ifc_send_flags + || !TAILQ_EMPTY(&conn->ifc_pub.sending_streams) + || !TAILQ_EMPTY(&conn->ifc_pub.write_streams)) + ; +} + + +static void +force_queueing_ack_app (struct ietf_full_conn *conn) +{ + lsquic_alarmset_unset(&conn->ifc_alset, AL_ACK_APP); + lsquic_send_ctl_sanity_check(&conn->ifc_send_ctl); + conn->ifc_flags |= IFC_ACK_QUED_APP; + LSQ_DEBUG("force-queued ACK"); +} + + +enum was_missing { + /* Note that particular enum values matter for speed */ + WM_NONE = 0, + WM_MAX_GAP = 1, /* Newly arrived ackable packet introduced a gap in incoming + * packet number sequence. + */ + WM_SMALLER = 2, /* Newly arrived ackable packet is smaller than previously + * seen maximum number. + */ + +}; + + +static void +try_queueing_ack_app (struct ietf_full_conn *conn, + enum was_missing was_missing, int ecn, lsquic_time_t now) +{ + lsquic_time_t srtt, ack_timeout; + + if (conn->ifc_n_slack_akbl[PNS_APP] >= conn->ifc_max_retx_since_last_ack +/* From [draft-ietf-quic-transport-29] Section 13.2.1: + " Similarly, packets marked with the ECN Congestion Experienced (CE) + " codepoint in the IP header SHOULD be acknowledged immediately, to + " reduce the peer's response time to congestion events. + */ + || (ecn == ECN_CE + && lsquic_send_ctl_ecn_turned_on(&conn->ifc_send_ctl)) + || (was_missing == WM_MAX_GAP) + || ((conn->ifc_flags & IFC_ACK_HAD_MISS) + && was_missing == WM_SMALLER + && conn->ifc_n_slack_akbl[PNS_APP] > 0) + || many_in_and_will_write(conn)) + { + lsquic_alarmset_unset(&conn->ifc_alset, AL_ACK_APP); + lsquic_send_ctl_sanity_check(&conn->ifc_send_ctl); + conn->ifc_flags |= IFC_ACK_QUED_APP; + LSQ_DEBUG("%s ACK queued: ackable: %u; all: %u; had_miss: %d; " + "was_missing: %d", + lsquic_pns2str[PNS_APP], conn->ifc_n_slack_akbl[PNS_APP], + conn->ifc_n_slack_all, + !!(conn->ifc_flags & IFC_ACK_HAD_MISS), (int) was_missing); + } + else if (conn->ifc_n_slack_akbl[PNS_APP] > 0) + { + if (!lsquic_alarmset_is_set(&conn->ifc_alset, AL_ACK_APP)) + { + /* See https://github.com/quicwg/base-drafts/issues/3304 for more */ + srtt = lsquic_rtt_stats_get_srtt(&conn->ifc_pub.rtt_stats); + if (srtt) + ack_timeout = MAX(1000, MIN(conn->ifc_max_ack_delay, srtt / 4)); + else + ack_timeout = conn->ifc_max_ack_delay; + lsquic_alarmset_set(&conn->ifc_alset, AL_ACK_APP, + now + ack_timeout); + LSQ_DEBUG("%s ACK alarm set to %"PRIu64, lsquic_pns2str[PNS_APP], + now + ack_timeout); + } + else + LSQ_DEBUG("%s ACK alarm already set to %"PRIu64" usec from now", + lsquic_pns2str[PNS_APP], + conn->ifc_alset.as_expiry[AL_ACK_APP] - now); + } +} + + +static void +try_queueing_ack_init_or_hsk (struct ietf_full_conn *conn, + enum packnum_space pns) +{ + if (conn->ifc_n_slack_akbl[pns] > 0) + { + conn->ifc_flags |= IFC_ACK_QUED_INIT << pns; + LSQ_DEBUG("%s ACK queued: ackable: %u", + lsquic_pns2str[pns], conn->ifc_n_slack_akbl[pns]); + } +} + + +static int +maybe_queue_opp_ack (struct ietf_full_conn *conn) +{ + if (/* If there is at least one ackable packet */ + conn->ifc_n_slack_akbl[PNS_APP] > 0 + /* ...and there are things to write */ + && (!TAILQ_EMPTY(&conn->ifc_pub.write_streams) || conn->ifc_send_flags) + /* ...and writing is possible */ + && write_is_possible(conn)) + { + lsquic_alarmset_unset(&conn->ifc_alset, AL_ACK_APP); + lsquic_send_ctl_sanity_check(&conn->ifc_send_ctl); + conn->ifc_flags |= IFC_ACK_QUED_APP; + LSQ_DEBUG("%s ACK queued opportunistically", lsquic_pns2str[PNS_APP]); + return 1; + } + else + return 0; +} + + +static int +verify_retry_packet (struct ietf_full_conn *conn, + const struct lsquic_packet_in *packet_in) +{ + unsigned char *pseudo_packet; + size_t out_len, ad_len; + unsigned ret_ver; + int verified; + + if (1 + CUR_DCID(conn)->len + packet_in->pi_data_sz > 0x1000) + { + /* Cover the theoretical possibility that we cannot fit the pseudo- + * packet and 16-byte decrypted output into 4 KB: + */ + LSQ_INFO("%s: Retry packet is too long: %hu bytes", __func__, + packet_in->pi_data_sz); + return -1; + } + + pseudo_packet = lsquic_mm_get_4k(conn->ifc_pub.mm); + if (!pseudo_packet) + { + LSQ_INFO("%s: cannot allocate memory", __func__); + return -1; + } + + pseudo_packet[0] = CUR_DCID(conn)->len; + memcpy(pseudo_packet + 1, CUR_DCID(conn)->idbuf, CUR_DCID(conn)->len); + memcpy(pseudo_packet + 1 + CUR_DCID(conn)->len, packet_in->pi_data, + packet_in->pi_data_sz); + + ret_ver = lsquic_version_2_retryver(conn->ifc_conn.cn_version); + out_len = 0; + ad_len = 1 + CUR_DCID(conn)->len + packet_in->pi_data_sz - 16; + verified = 1 == EVP_AEAD_CTX_open( + &conn->ifc_enpub->enp_retry_aead_ctx[ret_ver], + pseudo_packet + ad_len, &out_len, out_len, + lsquic_retry_nonce_buf[ret_ver], IETF_RETRY_NONCE_SZ, + pseudo_packet + ad_len, 16, pseudo_packet, ad_len) + && out_len == 0; + + lsquic_mm_put_4k(conn->ifc_pub.mm, pseudo_packet); + return verified ? 0 : -1; +} + + +static int +process_retry_packet (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in) +{ + lsquic_cid_t scid; + + if (conn->ifc_flags & (IFC_SERVER|IFC_RETRIED)) + { + /* [draft-ietf-quic-transport-24] Section 17.2.5: + " After the client has received and processed an Initial or Retry + " packet from the server, it MUST discard any subsequent Retry + " packets that it receives. + */ + LSQ_DEBUG("ignore Retry packet"); + return 0; + } + + if (CUR_DCID(conn)->len == packet_in->pi_scid_len + && 0 == memcmp(CUR_DCID(conn)->idbuf, + packet_in->pi_data + packet_in->pi_scid_off, + packet_in->pi_scid_len)) + { + /* + * [draft-ietf-quic-transport-24] Section 17.2.5: + " A client MUST discard a Retry packet that contains a Source + " Connection ID field that is identical to the Destination + " Connection ID field of its Initial packet. + */ + LSQ_DEBUG("server provided same SCID as ODCID: discard packet"); + return 0; + } + + if (0 != verify_retry_packet(conn, packet_in)) + { + LSQ_DEBUG("cannot verify retry packet: ignore it"); + return 0; + } + LSQ_INFO("Received a retry packet. Will retry."); + + if (0 != lsquic_send_ctl_retry(&conn->ifc_send_ctl, + packet_in->pi_data + packet_in->pi_token, + packet_in->pi_token_size)) + return -1; + + lsquic_scid_from_packet_in(packet_in, &scid); + if (0 != conn->ifc_conn.cn_esf.i->esfi_reset_dcid( + conn->ifc_conn.cn_enc_session, CUR_DCID(conn), &scid)) + return -1; + + *CUR_DCID(conn) = scid; + if (CUR_CPATH(conn)->cop_flags & COP_SPIN_BIT) + CUR_CPATH(conn)->cop_spin_bit = 0; + lsquic_alarmset_unset(&conn->ifc_alset, AL_RETX_INIT); + lsquic_alarmset_unset(&conn->ifc_alset, AL_RETX_HSK); + lsquic_alarmset_unset(&conn->ifc_alset, AL_RETX_APP); + + conn->ifc_flags |= IFC_RETRIED; + return 0; +} + + +static int +is_stateless_reset (struct ietf_full_conn *conn, + const struct lsquic_packet_in *packet_in) +{ + struct lsquic_hash_elem *el; + + if (packet_in->pi_data_sz < IQUIC_MIN_SRST_SIZE) + return 0; + + el = lsquic_hash_find(conn->ifc_enpub->enp_srst_hash, + packet_in->pi_data + packet_in->pi_data_sz - IQUIC_SRESET_TOKEN_SZ, + IQUIC_SRESET_TOKEN_SZ); + if (!el) + return 0; + +#ifndef NDEBUG + const struct lsquic_conn *reset_lconn; + reset_lconn = lsquic_hashelem_getdata(el); + assert(reset_lconn == &conn->ifc_conn); +#endif + return 1; +} + + +/* + * Sets the new current SCID if the DCID in the incoming packet: + * (1) was issued by this endpoint and + * (2) has not been used before. + */ +static int +on_dcid_change (struct ietf_full_conn *conn, const lsquic_cid_t *dcid_in) +{ + struct lsquic_conn *const lconn = &conn->ifc_conn; /* Shorthand */ + struct conn_cid_elem *cce; + + LSQ_DEBUGC("peer switched its DCID to %"CID_FMT + ", attempt to switch own SCID", CID_BITS(dcid_in)); + + for (cce = lconn->cn_cces; cce < END_OF_CCES(lconn); ++cce) + if (cce - lconn->cn_cces != lconn->cn_cur_cce_idx + && (lconn->cn_cces_mask & (1 << (cce - lconn->cn_cces))) + && LSQUIC_CIDS_EQ(&cce->cce_cid, dcid_in)) + break; + + if (cce >= END_OF_CCES(lconn)) + { + ABORT_WARN("DCID not found"); + return -1; + } + + if (cce->cce_flags & CCE_USED) + { + LSQ_DEBUGC("Current CID: %"CID_FMT, CID_BITS(CN_SCID(lconn))); + LSQ_DEBUGC("DCID %"CID_FMT" has been used, not switching", + CID_BITS(dcid_in)); + return 0; + } + + cce->cce_flags |= CCE_USED; + lconn->cn_cur_cce_idx = cce - lconn->cn_cces; + LSQ_DEBUGC("%s: set SCID to %"CID_FMT, __func__, CID_BITS(CN_SCID(lconn))); + LOG_SCIDS(conn); + + return 0; +} + + +static void +ignore_init (struct ietf_full_conn *conn) +{ + LSQ_DEBUG("henceforth, no Initial packets shall be sent or received"); + conn->ifc_flags |= IFC_IGNORE_INIT; + conn->ifc_flags &= ~(IFC_ACK_QUED_INIT << PNS_INIT); + lsquic_send_ctl_empty_pns(&conn->ifc_send_ctl, PNS_INIT); + lsquic_rechist_cleanup(&conn->ifc_rechist[PNS_INIT]); + if (!(conn->ifc_flags & IFC_SERVER)) + { + if (conn->ifc_u.cli.crypto_streams[ENC_LEV_INIT]) + { + lsquic_stream_destroy(conn->ifc_u.cli.crypto_streams[ENC_LEV_INIT]); + conn->ifc_u.cli.crypto_streams[ENC_LEV_INIT] = NULL; + } + conn->ifc_conn.cn_if = ietf_full_conn_iface_ptr; + } +} + + +static void +ignore_hsk (struct ietf_full_conn *conn) +{ + LSQ_DEBUG("henceforth, no Handshake packets shall be sent or received"); + conn->ifc_flags |= IFC_IGNORE_HSK; + conn->ifc_flags &= ~(IFC_ACK_QUED_INIT << PNS_HSK); + lsquic_send_ctl_empty_pns(&conn->ifc_send_ctl, PNS_HSK); + lsquic_rechist_cleanup(&conn->ifc_rechist[PNS_HSK]); + if (!(conn->ifc_flags & IFC_SERVER)) + if (conn->ifc_u.cli.crypto_streams[ENC_LEV_HSK]) + { + lsquic_stream_destroy(conn->ifc_u.cli.crypto_streams[ENC_LEV_HSK]); + conn->ifc_u.cli.crypto_streams[ENC_LEV_HSK] = NULL; + } +} + + +static void +record_dcid (struct ietf_full_conn *conn, + const struct lsquic_packet_in *packet_in) +{ + unsigned orig_cid_len; + + orig_cid_len = CUR_DCID(conn)->len; + conn->ifc_flags |= IFC_DCID_SET; + lsquic_scid_from_packet_in(packet_in, CUR_DCID(conn)); + LSQ_DEBUGC("set DCID to %"CID_FMT, CID_BITS(CUR_DCID(conn))); + lsquic_send_ctl_cidlen_change(&conn->ifc_send_ctl, orig_cid_len, + CUR_DCID(conn)->len); +} + + +static int +holes_after (struct lsquic_rechist *rechist, lsquic_packno_t packno) +{ + const struct lsquic_packno_range *first_range; + + first_range = lsquic_rechist_peek(rechist); + /* If it's not in the very first range, there is obviously a gap + * between it and the maximum packet number. If the packet number + * in question preceeds the cutoff, we assume that there are no + * holes (as we simply have no information). + */ + return first_range + && packno < first_range->low + && packno > lsquic_rechist_cutoff(rechist); +} + + +static int +process_regular_packet (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in) +{ + struct conn_path *cpath; + enum packnum_space pns; + enum received_st st; + enum dec_packin dec_packin; + enum was_missing was_missing; + int is_rechist_empty; + unsigned char saved_path_id; + int is_dcid_changed; + + if (HETY_RETRY == packet_in->pi_header_type) + return process_retry_packet(conn, packet_in); + + CONN_STATS(in.packets, 1); + + pns = lsquic_hety2pns[ packet_in->pi_header_type ]; + if ((pns == PNS_INIT && (conn->ifc_flags & IFC_IGNORE_INIT)) + || (pns == PNS_HSK && (conn->ifc_flags & IFC_IGNORE_HSK))) + { + /* Don't bother decrypting */ + LSQ_DEBUG("ignore %s packet", + pns == PNS_INIT ? "Initial" : "Handshake"); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "ignore %s packet", + lsquic_pns2str[pns]); + return 0; + } + + /* If a client receives packets from an unknown server address, the client + * MUST discard these packets. + * [draft-ietf-quic-transport-20], Section 9 + */ + if (0 == (conn->ifc_flags & IFC_SERVER) + && packet_in->pi_path_id != conn->ifc_cur_path_id + && !(packet_in->pi_path_id == conn->ifc_mig_path_id + //&& migra_is_on(conn, conn->ifc_mig_path_id) + )) + { + if ((conn->ifc_paths[packet_in->pi_path_id].cop_flags & COP_RETIRED)) + { + packet_in->pi_flags |= PI_RETIRED_PATH; + } + else + { + /* The "known server address" is recorded in the current path. */ + switch ((NP_IS_IPv6(CUR_NPATH(conn)) << 1) | + NP_IS_IPv6(&conn->ifc_paths[packet_in->pi_path_id].cop_path)) + { + case (1 << 1) | 1: /* IPv6 */ + if (lsquic_sockaddr_eq(NP_PEER_SA(CUR_NPATH(conn)), NP_PEER_SA( + &conn->ifc_paths[packet_in->pi_path_id].cop_path))) + goto known_peer_addr; + break; + case (0 << 1) | 0: /* IPv4 */ + if (lsquic_sockaddr_eq(NP_PEER_SA(CUR_NPATH(conn)), NP_PEER_SA( + &conn->ifc_paths[packet_in->pi_path_id].cop_path))) + goto known_peer_addr; + break; + } + LSQ_DEBUG("ignore packet from unknown server address"); + return 0; + } + } + known_peer_addr: + + /* The packet is decrypted before receive history is updated. This is + * done to make sure that a bad packet won't occupy a slot in receive + * history and subsequent good packet won't be marked as a duplicate. + */ + if (0 == (packet_in->pi_flags & PI_DECRYPTED)) + { + dec_packin = conn->ifc_conn.cn_esf_c->esf_decrypt_packet( + conn->ifc_conn.cn_enc_session, conn->ifc_enpub, + &conn->ifc_conn, packet_in); + switch (dec_packin) + { + case DECPI_BADCRYPT: + case DECPI_TOO_SHORT: + if (conn->ifc_enpub->enp_settings.es_honor_prst + /* In server mode, even if we do support stateless reset packets, + * they are handled in lsquic_engine.c. No need to have this + * logic here. + */ + && !(conn->ifc_flags & IFC_SERVER) + && is_stateless_reset(conn, packet_in)) + { + LSQ_INFO("received stateless reset packet: aborting connection"); + conn->ifc_flags |= IFC_GOT_PRST; + return -1; + } + else if (dec_packin == DECPI_BADCRYPT) + { + CONN_STATS(in.undec_packets, 1); + LSQ_INFO("could not decrypt packet (type %s)", + lsquic_hety2str[packet_in->pi_header_type]); + return 0; + } + else + { + CONN_STATS(in.undec_packets, 1); + LSQ_INFO("packet is too short to be decrypted"); + return 0; + } + case DECPI_NOT_YET: + return 0; + case DECPI_NOMEM: + return 0; + case DECPI_VIOLATION: + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, + "decrypter reports protocol violation"); + return -1; + case DECPI_OK: + /* Receiving any other type of packet precludes subsequent retries. + * We only set it if decryption is successful. + */ + conn->ifc_flags |= IFC_RETRIED; + break; + } + } + + is_dcid_changed = !LSQUIC_CIDS_EQ(CN_SCID(&conn->ifc_conn), + &packet_in->pi_dcid); + if (pns == PNS_INIT) + conn->ifc_conn.cn_esf.i->esfi_set_iscid(conn->ifc_conn.cn_enc_session, + packet_in); + else + { + if (is_dcid_changed && HETY_0RTT != packet_in->pi_header_type) + { + if (LSQUIC_CIDS_EQ(&conn->ifc_conn.cn_cces[0].cce_cid, + &packet_in->pi_dcid) + && !(conn->ifc_conn.cn_cces[0].cce_flags & CCE_SEQNO)) + { + ABORT_QUIETLY(0, TEC_PROTOCOL_VIOLATION, + "protocol violation detected bad dcid"); + return -1; + } + } + if (pns == PNS_HSK) + { + if ((conn->ifc_flags & (IFC_SERVER | IFC_IGNORE_INIT)) == IFC_SERVER) + ignore_init(conn); + lsquic_send_ctl_maybe_calc_rough_rtt(&conn->ifc_send_ctl, pns - 1); + } + } + EV_LOG_PACKET_IN(LSQUIC_LOG_CONN_ID, packet_in); + + is_rechist_empty = lsquic_rechist_is_empty(&conn->ifc_rechist[pns]); + st = lsquic_rechist_received(&conn->ifc_rechist[pns], packet_in->pi_packno, + packet_in->pi_received); + switch (st) { + case REC_ST_OK: + if (!(conn->ifc_flags & (IFC_SERVER|IFC_DCID_SET))) + record_dcid(conn, packet_in); + saved_path_id = conn->ifc_cur_path_id; + parse_regular_packet(conn, packet_in); + if (saved_path_id == conn->ifc_cur_path_id + && !(packet_in->pi_flags & PI_RETIRED_PATH)) + { + if (conn->ifc_cur_path_id != packet_in->pi_path_id) + { + if (0 != on_new_or_unconfirmed_path(conn, packet_in)) + { + LSQ_DEBUG("path %hhu invalid, cancel any path response " + "on it", packet_in->pi_path_id); + conn->ifc_send_flags &= ~(SF_SEND_PATH_RESP + << packet_in->pi_path_id); + } + } + else if (is_dcid_changed + && !LSQUIC_CIDS_EQ(CN_SCID(&conn->ifc_conn), + &packet_in->pi_dcid)) + { + if (0 != on_dcid_change(conn, &packet_in->pi_dcid)) + return -1; + } + } + if (lsquic_packet_in_non_probing(packet_in) + && packet_in->pi_packno > conn->ifc_max_non_probing) + conn->ifc_max_non_probing = packet_in->pi_packno; + /* From [draft-ietf-quic-transport-30] Section 13.2.1: + * + " In order to assist loss detection at the sender, an endpoint SHOULD + " generate and send an ACK frame without delay when it receives an ack- + " eliciting packet either: + " + " * when the received packet has a packet number less than another + " ack-eliciting packet that has been received, or + " + " * when the packet has a packet number larger than the highest- + " numbered ack-eliciting packet that has been received and there are + " missing packets between that packet and this packet. + * + */ + if (packet_in->pi_frame_types & IQUIC_FRAME_ACKABLE_MASK) + { + if (PNS_APP == pns /* was_missing is only used in PNS_APP */) + { + if (packet_in->pi_packno > conn->ifc_max_ackable_packno_in) + { + was_missing = (enum was_missing) /* WM_MAX_GAP is 1 */ + !is_rechist_empty /* Don't count very first packno */ + && conn->ifc_max_ackable_packno_in + 1 + < packet_in->pi_packno + && holes_after(&conn->ifc_rechist[PNS_APP], + conn->ifc_max_ackable_packno_in); + conn->ifc_max_ackable_packno_in = packet_in->pi_packno; + } + else + was_missing = (enum was_missing) /* WM_SMALLER is 2 */ + /* The check is necessary (rather setting was_missing to + * WM_SMALLER) because we cannot guarantee that peer does + * not have bugs. + */ + ((packet_in->pi_packno + < conn->ifc_max_ackable_packno_in) << 1); + } + else + was_missing = WM_NONE; + ++conn->ifc_n_slack_akbl[pns]; + } + else + was_missing = WM_NONE; + conn->ifc_n_slack_all += PNS_APP == pns; + if (0 == (conn->ifc_flags & (IFC_ACK_QUED_INIT << pns))) + { + if (PNS_APP == pns) + try_queueing_ack_app(conn, was_missing, + lsquic_packet_in_ecn(packet_in), packet_in->pi_received); + else + try_queueing_ack_init_or_hsk(conn, pns); + } + conn->ifc_incoming_ecn <<= 1; + conn->ifc_incoming_ecn |= + lsquic_packet_in_ecn(packet_in) != ECN_NOT_ECT; + ++conn->ifc_ecn_counts_in[pns][ lsquic_packet_in_ecn(packet_in) ]; + if (PNS_APP == pns + && (cpath = &conn->ifc_paths[packet_in->pi_path_id], + cpath->cop_flags & COP_SPIN_BIT) + /* [draft-ietf-quic-transport-30] Section 17.3.1 talks about + * how spin bit value is set. + */ + && (packet_in->pi_packno > cpath->cop_max_packno + /* Zero means "unset", in which case any incoming packet + * number will do. On receipt of second packet numbered + * zero, the rechist module will dup it and this code path + * won't hit. + */ + || cpath->cop_max_packno == 0)) + { + cpath->cop_max_packno = packet_in->pi_packno; + if (conn->ifc_flags & IFC_SERVER) + cpath->cop_spin_bit = lsquic_packet_in_spin_bit(packet_in); + else + cpath->cop_spin_bit = !lsquic_packet_in_spin_bit(packet_in); + } + conn->ifc_pub.bytes_in += packet_in->pi_data_sz; + if ((conn->ifc_mflags & MF_VALIDATE_PATH) && + (packet_in->pi_header_type == HETY_SHORT + || packet_in->pi_header_type == HETY_HANDSHAKE)) + { + conn->ifc_mflags &= ~MF_VALIDATE_PATH; + lsquic_send_ctl_path_validated(&conn->ifc_send_ctl); + } + return 0; + case REC_ST_DUP: + CONN_STATS(in.dup_packets, 1); + LSQ_INFO("packet %"PRIu64" is a duplicate", packet_in->pi_packno); + return 0; + default: + assert(0); + /* Fall through */ + case REC_ST_ERR: + CONN_STATS(in.err_packets, 1); + LSQ_INFO("error processing packet %"PRIu64, packet_in->pi_packno); + return -1; + } +} + + +static int +verneg_ok (const struct ietf_full_conn *conn) +{ + enum lsquic_version ver; + + ver = highest_bit_set(conn->ifc_u.cli.ifcli_ver_neg.vn_supp); + return (1 << ver) & LSQUIC_IETF_VERSIONS; +} + + +static void +enable_ping_alarm_for_handshake (struct ietf_full_conn *conn) +{ + conn->ifc_ping_period = HSK_PING_TIMEOUT; + lsquic_alarmset_set(&conn->ifc_alset, AL_PING, + lsquic_time_now() + conn->ifc_ping_period); +} + + +static int +switch_version (struct ietf_full_conn *conn, enum lsquic_version version) +{ + conn->ifc_conn.cn_version = version; + return iquic_esfi_switch_version(conn->ifc_conn.cn_enc_session, NULL, 0); +} + + +/* This function is used by the client when version negotiation is not yet + * complete. + */ +static int +process_incoming_packet_verneg (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in) +{ + int s; + struct ver_iter vi; + lsquic_ver_tag_t ver_tag; + enum lsquic_version version; + unsigned versions; + + if (lsquic_packet_in_is_verneg(packet_in)) + { + LSQ_DEBUG("Processing version-negotiation packet"); + + if (conn->ifc_u.cli.ifcli_ver_neg.vn_state != VN_START) + { + LSQ_DEBUG("ignore a likely duplicate version negotiation packet"); + return 0; + } + + if (!(LSQUIC_CIDS_EQ(&conn->ifc_conn.cn_cid, &packet_in->pi_dcid) + && CUR_DCID(conn)->len == packet_in->pi_scid_len + && 0 == memcmp(CUR_DCID(conn)->idbuf, packet_in->pi_data + + packet_in->pi_scid_off, packet_in->pi_scid_len))) + { + LSQ_DEBUG("SCID and DCID in verneg packet don't match what we " + "sent: ignore"); + return 0; + } + + versions = 0; + for (s = lsquic_packet_in_ver_first(packet_in, &vi, &ver_tag); s; + s = lsquic_packet_in_ver_next(&vi, &ver_tag)) + { + version = lsquic_tag2ver(ver_tag); + if (version < N_LSQVER) + { + versions |= 1 << version; + LSQ_DEBUG("server supports version %s", lsquic_ver2str[version]); + EV_LOG_VER_NEG(LSQUIC_LOG_CONN_ID, + "supports", lsquic_ver2str[version]); + } + } + + /* [draft-ietf-quic-transport-28] Section 6.2: + " A client MUST discard a Version Negotiation packet that lists the + " QUIC version selected by the client. + */ + if (versions & (1 << conn->ifc_u.cli.ifcli_ver_neg.vn_ver)) + { + LSQ_DEBUG("server replied with version we sent, %s, ignore", + lsquic_ver2str[conn->ifc_u.cli.ifcli_ver_neg.vn_ver]); + return 0; + } + + /* [draft-ietf-quic-transport-28] Section 6.2: + " A client that supports only this version of QUIC MUST abandon the + " current connection attempt if it receives a Version Negotiation + " packet [...] + */ + if (!verneg_ok(conn)) + { + ABORT_WITH_FLAG(conn, LSQ_LOG_NOTICE, IFC_ERROR|IFC_HSK_FAILED, + "version negotiation not permitted in this version of QUIC"); + return -1; + } + + versions &= conn->ifc_u.cli.ifcli_ver_neg.vn_supp; + if (0 == versions) + { + ABORT_WITH_FLAG(conn, LSQ_LOG_NOTICE, IFC_ERROR|IFC_HSK_FAILED, + "client does not support any of the server-specified versions"); + return -1; + } + + set_versions(conn, versions, NULL); + conn->ifc_u.cli.ifcli_ver_neg.vn_state = VN_IN_PROGRESS; + lsquic_send_ctl_expire_all(&conn->ifc_send_ctl); + return 0; + } + else if (HETY_RETRY == packet_in->pi_header_type) + return process_retry_packet(conn, packet_in); + + if (packet_in->pi_version != conn->ifc_u.cli.ifcli_ver_neg.vn_ver) + { + if (!((1 << packet_in->pi_version) + & conn->ifc_u.cli.ifcli_ver_neg.vn_supp)) + { + LSQ_DEBUG("server version doesn't match versions " + "supported: ignore"); + return 0; + } + LSQ_DEBUG("version negociation: server switched version from %s to %s", + lsquic_ver2str[conn->ifc_u.cli.ifcli_ver_neg.vn_ver], + lsquic_ver2str[packet_in->pi_version]); + switch_version(conn, packet_in->pi_version); + } + else + conn->ifc_conn.cn_version = conn->ifc_u.cli.ifcli_ver_neg.vn_ver; + assert(conn->ifc_u.cli.ifcli_ver_neg.vn_tag); + assert(conn->ifc_u.cli.ifcli_ver_neg.vn_state != VN_END); + conn->ifc_u.cli.ifcli_ver_neg.vn_state = VN_END; + conn->ifc_u.cli.ifcli_ver_neg.vn_tag = NULL; + conn->ifc_conn.cn_flags |= LSCONN_VER_SET; + LSQ_DEBUG("end of version negotiation: agreed upon %s", + lsquic_ver2str[conn->ifc_conn.cn_version]); + EV_LOG_VER_NEG(LSQUIC_LOG_CONN_ID, + "agreed", lsquic_ver2str[conn->ifc_conn.cn_version]); + conn->ifc_process_incoming_packet = process_regular_packet; + + if (process_regular_packet(conn, packet_in) == 0) + { + enable_ping_alarm_for_handshake(conn); + return 0; + } + return -1; +} + + +/* This function is used after version negotiation is completed */ +static int +process_incoming_packet_fast (struct ietf_full_conn *conn, + struct lsquic_packet_in *packet_in) +{ + return process_regular_packet(conn, packet_in); +} + + +static void +set_earliest_idle_alarm (struct ietf_full_conn *conn, lsquic_time_t idle_conn_to) +{ + lsquic_time_t exp; + + if (conn->ifc_pub.last_prog + && (assert(conn->ifc_mflags & MF_NOPROG_TIMEOUT), + exp = conn->ifc_pub.last_prog + conn->ifc_enpub->enp_noprog_timeout, + exp < idle_conn_to)) + idle_conn_to = exp; + if (idle_conn_to) + lsquic_alarmset_set(&conn->ifc_alset, AL_IDLE, idle_conn_to); +} + + +static void +ietf_full_conn_ci_packet_in (struct lsquic_conn *lconn, + struct lsquic_packet_in *packet_in) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + + CONN_STATS(in.bytes, packet_in->pi_data_sz); + set_earliest_idle_alarm(conn, conn->ifc_idle_to + ? packet_in->pi_received + conn->ifc_idle_to : 0); + if (0 == (conn->ifc_flags & IFC_IMMEDIATE_CLOSE_FLAGS)) + if (0 != conn->ifc_process_incoming_packet(conn, packet_in)) + conn->ifc_flags |= IFC_ERROR; +} + + +static void +ietf_full_conn_ci_packet_not_sent (struct lsquic_conn *lconn, + struct lsquic_packet_out *packet_out) +{ +#ifndef NDEBUG + if (packet_out->po_flags & PO_ENCRYPTED) + assert(packet_out->po_lflags & POL_HEADER_PROT); +#endif + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + lsquic_send_ctl_delayed_one(&conn->ifc_send_ctl, packet_out); +} + + +static void +ietf_full_conn_ci_packet_too_large (struct lsquic_conn *lconn, + struct lsquic_packet_out *packet_out) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + +#ifndef NDEBUG + assert(packet_out->po_lflags & POL_HEADER_PROT); +#endif + + if (packet_out->po_flags & PO_MTU_PROBE) + { + LSQ_DEBUG("%zu-byte MTU probe in packet %"PRIu64" is too large", + lsquic_packet_out_sent_sz(&conn->ifc_conn, packet_out), + packet_out->po_packno); + lsquic_send_ctl_mtu_not_sent(&conn->ifc_send_ctl, packet_out); + mtu_probe_too_large(conn, packet_out); + } + else + ABORT_WARN("non-MTU probe %zu-byte packet %"PRIu64" is too large", + lsquic_packet_out_sent_sz(&conn->ifc_conn, packet_out), + packet_out->po_packno); + + lsquic_packet_out_destroy(packet_out, conn->ifc_enpub, + packet_out->po_path->np_peer_ctx); +} + + +/* Calling of ignore_init() must be delayed until all batched packets have + * been returned by the engine. + */ +static void +pre_hsk_packet_sent_or_delayed (struct ietf_full_conn *conn, + const struct lsquic_packet_out *packet_out) +{ +#ifndef NDEBUG + if (packet_out->po_flags & PO_ENCRYPTED) + assert(packet_out->po_lflags & POL_HEADER_PROT); +#endif + /* Once IFC_IGNORE_INIT is set, the pre-hsk wrapper is removed: */ + assert(!(conn->ifc_flags & IFC_IGNORE_INIT)); + --conn->ifc_u.cli.ifcli_packets_out; + if (PNS_HSK == lsquic_packet_out_pns(packet_out)) + conn->ifc_u.cli.ifcli_flags |= IFCLI_HSK_SENT_OR_DEL; + if (0 == conn->ifc_u.cli.ifcli_packets_out + && (conn->ifc_u.cli.ifcli_flags & IFCLI_HSK_SENT_OR_DEL)) + ignore_init(conn); +} + + +static void +ietf_full_conn_ci_packet_not_sent_pre_hsk (struct lsquic_conn *lconn, + struct lsquic_packet_out *packet_out) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + ietf_full_conn_ci_packet_not_sent(lconn, packet_out); + pre_hsk_packet_sent_or_delayed(conn, packet_out); +} + + +static void +ietf_full_conn_ci_packet_sent (struct lsquic_conn *lconn, + struct lsquic_packet_out *packet_out) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) lconn; + int s; + + if (packet_out->po_frame_types & (IQUIC_FRAME_RETX_MASK)) + conn->ifc_n_cons_unretx = 0; + else + ++conn->ifc_n_cons_unretx; + s = lsquic_send_ctl_sent_packet(&conn->ifc_send_ctl, packet_out); + if (s != 0) + ABORT_ERROR("sent packet failed: %s", strerror(errno)); + /* Set blocked keep-alive for a [1,8] seconds */ + if (packet_out->po_frame_types + & (QUIC_FTBIT_BLOCKED|QUIC_FTBIT_STREAM_BLOCKED)) + lsquic_alarmset_set(&conn->ifc_alset, AL_BLOCKED_KA, + packet_out->po_sent + (1 + (7 & lsquic_crand_get_nybble( + conn->ifc_enpub->enp_crand))) * 1000000); + conn->ifc_pub.bytes_out += lsquic_packet_out_sent_sz(&conn->ifc_conn, + packet_out); + CONN_STATS(out.packets, 1); + CONN_STATS(out.bytes, lsquic_packet_out_sent_sz(lconn, packet_out)); +} + + +static void +ietf_full_conn_ci_packet_sent_pre_hsk (struct lsquic_conn *lconn, + struct lsquic_packet_out *packet_out) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) lconn; + ietf_full_conn_ci_packet_sent(lconn, packet_out); + pre_hsk_packet_sent_or_delayed(conn, packet_out); +} + + +static void (*const send_funcs[N_SEND])( + struct ietf_full_conn *, lsquic_time_t) = +{ + [SEND_NEW_CID] = generate_new_cid_frames, + [SEND_RETIRE_CID] = generate_retire_cid_frames, + [SEND_STREAMS_BLOCKED_UNI] = generate_streams_blocked_uni_frame, + [SEND_STREAMS_BLOCKED_BIDI] = generate_streams_blocked_bidi_frame, + [SEND_MAX_STREAMS_UNI] = generate_max_streams_uni_frame, + [SEND_MAX_STREAMS_BIDI] = generate_max_streams_bidi_frame, + [SEND_STOP_SENDING] = generate_stop_sending_frames, + [SEND_NEW_TOKEN] = generate_new_token_frame, + [SEND_PATH_CHAL_PATH_0] = generate_path_chal_0, + [SEND_PATH_CHAL_PATH_1] = generate_path_chal_1, + [SEND_PATH_CHAL_PATH_2] = generate_path_chal_2, + [SEND_PATH_CHAL_PATH_3] = generate_path_chal_3, + [SEND_PATH_RESP_PATH_0] = generate_path_resp_0, + [SEND_PATH_RESP_PATH_1] = generate_path_resp_1, + [SEND_PATH_RESP_PATH_2] = generate_path_resp_2, + [SEND_PATH_RESP_PATH_3] = generate_path_resp_3, + [SEND_PING] = generate_ping_frame, + [SEND_HANDSHAKE_DONE] = generate_handshake_done_frame, + [SEND_ACK_FREQUENCY] = generate_ack_frequency_frame, +}; + + +/* List bits that have corresponding entries in send_funcs */ +#define SEND_WITH_FUNCS (SF_SEND_NEW_CID|SF_SEND_RETIRE_CID\ + |SF_SEND_STREAMS_BLOCKED_UNI|SF_SEND_STREAMS_BLOCKED_BIDI\ + |SF_SEND_MAX_STREAMS_UNI|SF_SEND_MAX_STREAMS_BIDI\ + |SF_SEND_PATH_CHAL_PATH_0|SF_SEND_PATH_CHAL_PATH_1\ + |SF_SEND_PATH_CHAL_PATH_2|SF_SEND_PATH_CHAL_PATH_3\ + |SF_SEND_PATH_RESP_PATH_0|SF_SEND_PATH_RESP_PATH_1\ + |SF_SEND_PATH_RESP_PATH_2|SF_SEND_PATH_RESP_PATH_3\ + |SF_SEND_PING|SF_SEND_HANDSHAKE_DONE\ + |SF_SEND_ACK_FREQUENCY\ + |SF_SEND_STOP_SENDING|SF_SEND_NEW_TOKEN) + + +/* This should be called before lsquic_alarmset_ring_expired() */ +static void +maybe_set_noprogress_alarm (struct ietf_full_conn *conn, lsquic_time_t now) +{ + lsquic_time_t exp; + + if (conn->ifc_mflags & MF_NOPROG_TIMEOUT) + { + if (conn->ifc_pub.last_tick) + { + exp = conn->ifc_pub.last_prog + conn->ifc_enpub->enp_noprog_timeout; + if (!lsquic_alarmset_is_set(&conn->ifc_alset, AL_IDLE) + || exp < conn->ifc_alset.as_expiry[AL_IDLE]) + lsquic_alarmset_set(&conn->ifc_alset, AL_IDLE, exp); + conn->ifc_pub.last_tick = now; + } + else + { + conn->ifc_pub.last_tick = now; + conn->ifc_pub.last_prog = now; + } + } +} + + +static void +check_or_schedule_mtu_probe (struct ietf_full_conn *conn, lsquic_time_t now) +{ + struct conn_path *const cpath = CUR_CPATH(conn); + struct dplpmtud_state *const ds = &cpath->cop_dplpmtud; + struct lsquic_packet_out *packet_out; + unsigned short saved_packet_sz, avail, mtu_ceiling, net_header_sz, probe_sz; + int sz; + + if (ds->ds_flags & DS_PROBE_SENT) + { + assert(ds->ds_probe_sent + conn->ifc_enpub->enp_mtu_probe_timer < now); + LSQ_DEBUG("MTU probe of %hu bytes lost", ds->ds_probed_size); + ds->ds_flags &= ~DS_PROBE_SENT; + conn->ifc_mflags |= MF_CHECK_MTU_PROBE; + if (ds->ds_probe_count >= 3) + { + LSQ_DEBUG("MTU probe of %hu bytes lost after %hhu tries", + ds->ds_probed_size, ds->ds_probe_count); + ds->ds_failed_size = ds->ds_probed_size; + ds->ds_probe_count = 0; + } + } + + assert(0 == ds->ds_probe_sent + || ds->ds_probe_sent + conn->ifc_enpub->enp_mtu_probe_timer < now); + + if (!(conn->ifc_conn.cn_flags & LSCONN_HANDSHAKE_DONE) + || (conn->ifc_flags & IFC_CLOSING) + || ~0ull == lsquic_senhist_largest(&conn->ifc_send_ctl.sc_senhist) + || lsquic_senhist_largest(&conn->ifc_send_ctl.sc_senhist) < 30 + || lsquic_send_ctl_in_recovery(&conn->ifc_send_ctl) + || !lsquic_send_ctl_can_send_probe(&conn->ifc_send_ctl, + &cpath->cop_path)) + { + return; + } + + if (ds->ds_failed_size) + mtu_ceiling = ds->ds_failed_size; + else if (conn->ifc_settings->es_max_plpmtu) + mtu_ceiling = conn->ifc_settings->es_max_plpmtu; + else + { + net_header_sz = TRANSPORT_OVERHEAD(NP_IS_IPv6(&cpath->cop_path)); + mtu_ceiling = 1500 - net_header_sz; + } + + if (conn->ifc_max_udp_payload < mtu_ceiling) + { + LSQ_DEBUG("cap MTU ceiling to peer's max_udp_payload_size TP of %hu " + "bytes", conn->ifc_max_udp_payload); + mtu_ceiling = conn->ifc_max_udp_payload; + } + + if (cpath->cop_path.np_pack_size >= mtu_ceiling + || (float) cpath->cop_path.np_pack_size / (float) mtu_ceiling >= 0.99) + { + LSQ_DEBUG("stop MTU probing on path %hhu having achieved about " + "%.1f%% efficiency (detected MTU: %hu; failed MTU: %hu)", + cpath->cop_path.np_path_id, + 100. * (float) cpath->cop_path.np_pack_size / (float) mtu_ceiling, + cpath->cop_path.np_pack_size, ds->ds_failed_size); + conn->ifc_mflags &= ~MF_CHECK_MTU_PROBE; + return; + } + + LSQ_DEBUG("MTU ratio: %hu / %hu = %.4f", + cpath->cop_path.np_pack_size, mtu_ceiling, + (float) cpath->cop_path.np_pack_size / (float) mtu_ceiling); + + if (!ds->ds_failed_size && mtu_ceiling < 1500) + /* Try the largest ethernet MTU immediately */ + probe_sz = mtu_ceiling; + else if (cpath->cop_path.np_pack_size * 2 >= mtu_ceiling) + /* Pick half-way point */ + probe_sz = (mtu_ceiling + cpath->cop_path.np_pack_size) / 2; + else + probe_sz = cpath->cop_path.np_pack_size * 2; + + /* XXX Changing np_pack_size is action at a distance */ + saved_packet_sz = cpath->cop_path.np_pack_size; + cpath->cop_path.np_pack_size = probe_sz; + packet_out = lsquic_send_ctl_new_packet_out(&conn->ifc_send_ctl, + 0, PNS_APP, CUR_NPATH(conn)); + if (!packet_out) + goto restore_packet_size; + sz = conn->ifc_conn.cn_pf->pf_gen_ping_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out)); + if (sz < 0) { + ABORT_ERROR("gen_ping_frame failed"); + goto restore_packet_size; + } + /* We don't record frame records for MTU probes as they are never + * resized, only discarded. + */ + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, sz); + packet_out->po_regen_sz += sz; + packet_out->po_frame_types |= 1 << QUIC_FRAME_PING; + avail = lsquic_packet_out_avail(packet_out); + if (avail) + { + memset(packet_out->po_data + packet_out->po_data_sz, 0, avail); + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, avail); + packet_out->po_frame_types |= 1 << QUIC_FRAME_PADDING; + } + packet_out->po_flags |= PO_MTU_PROBE; + lsquic_send_ctl_scheduled_one(&conn->ifc_send_ctl, packet_out); + LSQ_DEBUG("generated MTU probe of %hu bytes in packet %"PRIu64, + cpath->cop_path.np_pack_size, packet_out->po_packno); +#ifndef NDEBUG + ds->ds_probe_sent = now; +#endif + ds->ds_probe_packno = packet_out->po_packno; + ds->ds_probed_size = probe_sz; + ds->ds_flags |= DS_PROBE_SENT; + ++ds->ds_probe_count; + conn->ifc_mflags &= ~MF_CHECK_MTU_PROBE; + assert(!lsquic_alarmset_is_set(&conn->ifc_alset, AL_MTU_PROBE)); + lsquic_alarmset_set(&conn->ifc_alset, AL_MTU_PROBE, + now + conn->ifc_enpub->enp_mtu_probe_timer); + restore_packet_size: + cpath->cop_path.np_pack_size = saved_packet_sz; +} + + +static void +ietf_full_conn_ci_mtu_probe_acked (struct lsquic_conn *lconn, + const struct lsquic_packet_out *packet_out) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) lconn; + struct conn_path *cpath; + struct dplpmtud_state *ds; + unsigned char path_id; + + path_id = packet_out->po_path->np_path_id; + cpath = &conn->ifc_paths[path_id]; + ds = &cpath->cop_dplpmtud; + if (ds->ds_probe_packno != packet_out->po_packno) + { + LSQ_DEBUG("Acked MTU probe packet %"PRIu64" on path %hhu, but it is " + "old: discard", packet_out->po_packno, path_id); + return; + } + ds->ds_flags &= ~DS_PROBE_SENT; + ds->ds_probe_count = 0; + + cpath->cop_path.np_pack_size = lsquic_packet_out_sent_sz(&conn->ifc_conn, + packet_out); + LSQ_INFO("update path %hhu MTU to %hu bytes", path_id, + cpath->cop_path.np_pack_size); + conn->ifc_mflags &= ~MF_CHECK_MTU_PROBE; + lsquic_alarmset_set(&conn->ifc_alset, AL_MTU_PROBE, + packet_out->po_sent + conn->ifc_enpub->enp_mtu_probe_timer); + LSQ_DEBUG("set alarm to %"PRIu64" usec ", packet_out->po_sent + conn->ifc_enpub->enp_mtu_probe_timer); +} + + +static void +mtu_probe_too_large (struct ietf_full_conn *conn, + const struct lsquic_packet_out *packet_out) +{ + struct conn_path *cpath; + unsigned char path_id; + + path_id = packet_out->po_path->np_path_id; + cpath = &conn->ifc_paths[path_id]; + cpath->cop_dplpmtud.ds_failed_size + = lsquic_packet_out_sent_sz(&conn->ifc_conn, packet_out); +} + + +static void +ietf_full_conn_ci_retx_timeout (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + unsigned short pack_size; + struct conn_path *cpath; + int resize; + + resize = 0; + for (cpath = conn->ifc_paths; cpath < conn->ifc_paths + N_PATHS; ++cpath) + if (cpath->cop_flags & COP_INITIALIZED) + { + pack_size = calc_base_packet_size(conn, + NP_IS_IPv6(&cpath->cop_path)); + if (cpath->cop_path.np_pack_size > pack_size) + { + LSQ_DEBUG("RTO occurred: change packet size of path %hhu " + "to %hu bytes", cpath->cop_path.np_path_id, pack_size); + cpath->cop_path.np_pack_size = pack_size; + resize |= 1; + } + } + + if (resize) + lsquic_send_ctl_resize(&conn->ifc_send_ctl); + else + LSQ_DEBUG("RTO occurred, but no MTUs to reset"); + + if (lsquic_send_ctl_ecn_turned_on(&conn->ifc_send_ctl)) + { + LSQ_INFO("RTO occurred, disable ECN"); + lsquic_send_ctl_disable_ecn(&conn->ifc_send_ctl); + if (lsquic_rechist_first(&conn->ifc_rechist[PNS_APP])) + { + LSQ_DEBUG("Send wrong ECN counts to peer so that it turns off " + "ECN as well"); + memset(conn->ifc_ecn_counts_in[PNS_APP], 0, + sizeof(conn->ifc_ecn_counts_in[PNS_APP])); + conn->ifc_mflags |= MF_SEND_WRONG_COUNTS; + force_queueing_ack_app(conn); + conn->ifc_send_flags |= SF_SEND_PING; + } + } +} + + +static void +ietf_full_conn_ci_early_data_failed (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + + LSQ_DEBUG("early data failed"); + lsquic_send_ctl_stash_0rtt_packets(&conn->ifc_send_ctl); +} + + +static size_t +ietf_full_conn_ci_get_min_datagram_size (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + return (size_t) conn->ifc_min_dg_sz; +} + + +static int +ietf_full_conn_ci_set_min_datagram_size (struct lsquic_conn *lconn, + size_t new_size) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + const struct transport_params *const params = + lconn->cn_esf.i->esfi_get_peer_transport_params(lconn->cn_enc_session); + + if (!(conn->ifc_flags & IFC_DATAGRAMS)) + { + LSQ_WARN("datagrams are not enabled: cannot set minimum size"); + return -1; + } + + if (new_size > USHRT_MAX) + { + LSQ_DEBUG("min datagram size cannot be larger than %hu", + (unsigned short) USHRT_MAX); + return -1; + } + + if (new_size > params->tp_numerics[TPI_MAX_DATAGRAM_FRAME_SIZE]) + { + LSQ_DEBUG("maximum datagram frame size is %"PRIu64", cannot change it " + "to %zd", params->tp_numerics[TPI_MAX_DATAGRAM_FRAME_SIZE], + new_size); + return -1; + } + + conn->ifc_min_dg_sz = new_size; + LSQ_DEBUG("set minimum datagram size to %zd bytes", new_size); + return 0; +} + + +/* Return true if datagram was written, false otherwise */ +static int +write_datagram (struct ietf_full_conn *conn) +{ + struct lsquic_packet_out *packet_out; + size_t need; + int w; + + need = conn->ifc_conn.cn_pf->pf_datagram_frame_size(conn->ifc_min_dg_sz); + packet_out = get_writeable_packet(conn, need); + if (!packet_out) + return 0; + + w = conn->ifc_conn.cn_pf->pf_gen_datagram_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), conn->ifc_min_dg_sz, + conn->ifc_max_dg_sz, + conn->ifc_enpub->enp_stream_if->on_dg_write, &conn->ifc_conn); + if (w < 0) + { + LSQ_DEBUG("could not generate DATAGRAM frame"); + return 0; + } + if (0 != lsquic_packet_out_add_frame(packet_out, conn->ifc_pub.mm, 0, + QUIC_FRAME_DATAGRAM, packet_out->po_data_sz, w)) + { + ABORT_ERROR("adding DATAGRAME frame to packet failed: %d", errno); + return 0; + } + packet_out->po_regen_sz += w; + packet_out->po_frame_types |= QUIC_FTBIT_DATAGRAM; + lsquic_send_ctl_incr_pack_sz(&conn->ifc_send_ctl, packet_out, w); + /* XXX The DATAGRAM frame should really be a regen. Do it when we + * no longer require these frame types to be at the beginning of the + * packet. + */ + + return 1; +} + + +static enum tick_st +ietf_full_conn_ci_tick (struct lsquic_conn *lconn, lsquic_time_t now) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + int have_delayed_packets, s; + enum tick_st tick = 0; + unsigned n; + +#define CLOSE_IF_NECESSARY() do { \ + if (conn->ifc_flags & IFC_IMMEDIATE_CLOSE_FLAGS) \ + { \ + tick |= immediate_close(conn); \ + goto close_end; \ + } \ +} while (0) + +#define RETURN_IF_OUT_OF_PACKETS() do { \ + if (!lsquic_send_ctl_can_send(&conn->ifc_send_ctl)) \ + { \ + if (0 == lsquic_send_ctl_n_scheduled(&conn->ifc_send_ctl)) \ + { \ + LSQ_DEBUG("used up packet allowance, quiet now (line %d)", \ + __LINE__); \ + tick |= TICK_QUIET; \ + } \ + else \ + { \ + LSQ_DEBUG("used up packet allowance, sending now (line %d)",\ + __LINE__); \ + tick |= TICK_SEND; \ + } \ + goto end; \ + } \ +} while (0) + + CONN_STATS(n_ticks, 1); + + CLOSE_IF_NECESSARY(); + + if (conn->ifc_flags & IFC_HAVE_SAVED_ACK) + { + (void) /* If there is an error, we'll fail shortly */ + process_ack(conn, &conn->ifc_ack, conn->ifc_saved_ack_received, now); + conn->ifc_flags &= ~IFC_HAVE_SAVED_ACK; + } + + maybe_set_noprogress_alarm(conn, now); + + lsquic_send_ctl_tick_in(&conn->ifc_send_ctl, now); + lsquic_send_ctl_set_buffer_stream_packets(&conn->ifc_send_ctl, 1); + CLOSE_IF_NECESSARY(); + + lsquic_alarmset_ring_expired(&conn->ifc_alset, now); + CLOSE_IF_NECESSARY(); + + /* To make things simple, only stream 1 is active until the handshake + * has been completed. This will be adjusted in the future: the client + * does not want to wait if it has the server information. + */ + if (conn->ifc_conn.cn_flags & LSCONN_HANDSHAKE_DONE) + process_streams_read_events(conn); + else + process_crypto_stream_read_events(conn); + CLOSE_IF_NECESSARY(); + + if (lsquic_send_ctl_pacer_blocked(&conn->ifc_send_ctl)) + goto end_write; + + if (conn->ifc_flags & IFC_FIRST_TICK) + { + conn->ifc_flags &= ~IFC_FIRST_TICK; + have_delayed_packets = 0; + } + else + /* If there are any scheduled packets at this point, it means that + * they were not sent during previous tick; in other words, they + * are delayed. When there are delayed packets, the only packet + * we sometimes add is a packet with an ACK frame, and we add it + * to the *front* of the queue. + */ + have_delayed_packets = + lsquic_send_ctl_maybe_squeeze_sched(&conn->ifc_send_ctl); + + if (should_generate_ack(conn, IFC_ACK_QUEUED) || + (!have_delayed_packets && maybe_queue_opp_ack(conn))) + { + if (have_delayed_packets) + lsquic_send_ctl_reset_packnos(&conn->ifc_send_ctl); + + n = generate_ack_frame(conn, now); + CLOSE_IF_NECESSARY(); + + if (have_delayed_packets && n) + lsquic_send_ctl_ack_to_front(&conn->ifc_send_ctl, n); + } + + if (have_delayed_packets) + { + /* The reason for not adding the other frames below to the packet + * carrying ACK frame generated when there are delayed packets is + * so that if the ACK packet itself is delayed, it can be dropped + * and replaced by new ACK packet. This way, we are never more + * than 1 packet over CWND. + */ + tick |= TICK_SEND; + if (conn->ifc_flags & IFC_CLOSING) + goto end_write; + else + goto end; + } + + /* Try to fit MAX_DATA before checking if we have run out of room. + * If it does not fit, it will be tried next time around. + */ + if (lsquic_cfcw_fc_offsets_changed(&conn->ifc_pub.cfcw) || + (conn->ifc_send_flags & SF_SEND_MAX_DATA)) + { + conn->ifc_send_flags |= SF_SEND_MAX_DATA; + generate_max_data_frame(conn); + CLOSE_IF_NECESSARY(); + } + + if (conn->ifc_send_flags & SEND_WITH_FUNCS) + { + enum send send; + for (send = 0; send < N_SEND; ++send) + if (conn->ifc_send_flags & (1 << send) & SEND_WITH_FUNCS) + { + send_funcs[send](conn, now); + CLOSE_IF_NECESSARY(); + } + } + + if (conn->ifc_mflags & MF_CHECK_MTU_PROBE) + check_or_schedule_mtu_probe(conn, now); + + n = lsquic_send_ctl_reschedule_packets(&conn->ifc_send_ctl); + if (n > 0) + CLOSE_IF_NECESSARY(); + + if (conn->ifc_conn.cn_flags & LSCONN_SEND_BLOCKED) + { + RETURN_IF_OUT_OF_PACKETS(); + if (generate_blocked_frame(conn)) + conn->ifc_conn.cn_flags &= ~LSCONN_SEND_BLOCKED; + } + + if (!TAILQ_EMPTY(&conn->ifc_pub.sending_streams)) + { + process_streams_ready_to_send(conn); + CLOSE_IF_NECESSARY(); + } + + lsquic_send_ctl_set_buffer_stream_packets(&conn->ifc_send_ctl, 0); + if (!(conn->ifc_conn.cn_flags & LSCONN_HANDSHAKE_DONE)) + { + s = lsquic_send_ctl_schedule_buffered(&conn->ifc_send_ctl, + BPT_HIGHEST_PRIO); + conn->ifc_flags |= (s < 0) << IFC_BIT_ERROR; + if (0 == s) + process_crypto_stream_write_events(conn); + if (!(conn->ifc_mflags & MF_DOING_0RTT)) + { + lsquic_send_ctl_maybe_app_limited(&conn->ifc_send_ctl, + CUR_NPATH(conn)); + goto end_write; + } + } + + maybe_conn_flush_special_streams(conn); + + s = lsquic_send_ctl_schedule_buffered(&conn->ifc_send_ctl, BPT_HIGHEST_PRIO); + conn->ifc_flags |= (s < 0) << IFC_BIT_ERROR; + if (!write_is_possible(conn)) + goto end_write; + + while ((conn->ifc_mflags & MF_WANT_DATAGRAM_WRITE) && write_datagram(conn)) + if (!write_is_possible(conn)) + goto end_write; + + if (!TAILQ_EMPTY(&conn->ifc_pub.write_streams)) + { + process_streams_write_events(conn, 1); + if (!write_is_possible(conn)) + goto end_write; + } + + s = lsquic_send_ctl_schedule_buffered(&conn->ifc_send_ctl, BPT_OTHER_PRIO); + conn->ifc_flags |= (s < 0) << IFC_BIT_ERROR; + if (!write_is_possible(conn)) + goto end_write; + + if (!TAILQ_EMPTY(&conn->ifc_pub.write_streams)) + process_streams_write_events(conn, 0); + + lsquic_send_ctl_maybe_app_limited(&conn->ifc_send_ctl, CUR_NPATH(conn)); + + end_write: + if ((conn->ifc_flags & IFC_CLOSING) + && ((conn->ifc_send_flags & SF_SEND_CONN_CLOSE) + || conn_ok_to_close(conn))) + { + LSQ_DEBUG("connection is OK to close"); + conn->ifc_flags |= IFC_TICK_CLOSE; + if (conn->ifc_flags & IFC_RECV_CLOSE) + tick |= TICK_CLOSE; + if (!(conn->ifc_mflags & MF_CONN_CLOSE_PACK) + /* Generate CONNECTION_CLOSE frame if: + * ... this is a client and handshake was successful; + */ + && (!(conn->ifc_flags & (IFC_SERVER|IFC_HSK_FAILED)) + /* or: sent a GOAWAY frame; + */ + || (conn->ifc_flags & IFC_GOAWAY_CLOSE) + /* or: we received CONNECTION_CLOSE and we are not a server + * that chooses not to send CONNECTION_CLOSE responses. + * From [draft-ietf-quic-transport-29]: + " An endpoint that receives a CONNECTION_CLOSE frame MAY send + " a single packet containing a CONNECTION_CLOSE frame before + " entering the draining state + */ + || ((conn->ifc_flags & IFC_RECV_CLOSE) + && !((conn->ifc_flags & IFC_SERVER) + && conn->ifc_settings->es_silent_close)) + /* or: we have packets to send. */ + || 0 != lsquic_send_ctl_n_scheduled(&conn->ifc_send_ctl)) + ) + { + /* CONNECTION_CLOSE frame should not be congestion controlled. + RETURN_IF_OUT_OF_PACKETS(); */ + generate_connection_close_packet(conn); + tick |= TICK_SEND|TICK_CLOSE; + } + else + tick |= TICK_CLOSE; + + goto end; + } + + if (0 == lsquic_send_ctl_n_scheduled(&conn->ifc_send_ctl)) + { + if (conn->ifc_send_flags & SF_SEND_PING) + { + RETURN_IF_OUT_OF_PACKETS(); + generate_ping_frame(conn, now); + CLOSE_IF_NECESSARY(); + assert(lsquic_send_ctl_n_scheduled(&conn->ifc_send_ctl) != 0); + } + else + { + tick |= TICK_QUIET; + goto end; + } + } + else if (conn->ifc_ping_period + && (conn->ifc_conn.cn_flags & LSCONN_HANDSHAKE_DONE)) + { + lsquic_alarmset_unset(&conn->ifc_alset, AL_PING); + lsquic_send_ctl_sanity_check(&conn->ifc_send_ctl); + conn->ifc_send_flags &= ~SF_SEND_PING; /* It may have rung */ + } + + /* [draft-ietf-quic-transport-11] Section 7.9: + * + * The PING frame can be used to keep a connection alive when an + * application or application protocol wishes to prevent the connection + * from timing out. An application protocol SHOULD provide guidance + * about the conditions under which generating a PING is recommended. + * This guidance SHOULD indicate whether it is the client or the server + * that is expected to send the PING. Having both endpoints send PING + * frames without coordination can produce an excessive number of + * packets and poor performance. + */ + if (conn->ifc_ping_period + && lsquic_hash_count(conn->ifc_pub.all_streams) > + conn->ifc_pub.n_special_streams) + lsquic_alarmset_set(&conn->ifc_alset, AL_PING, + now + conn->ifc_ping_period); + + tick |= TICK_SEND; + + end: + service_streams(conn); + CLOSE_IF_NECESSARY(); + + close_end: + lsquic_send_ctl_set_buffer_stream_packets(&conn->ifc_send_ctl, 1); + lsquic_send_ctl_tick_out(&conn->ifc_send_ctl); + return tick; +} + + +static enum LSQUIC_CONN_STATUS +ietf_full_conn_ci_status (struct lsquic_conn *lconn, char *errbuf, size_t bufsz) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) lconn; + size_t n; + + /* Test the common case first: */ + if (!(conn->ifc_flags & (IFC_ERROR + |IFC_TIMED_OUT + |IFC_ABORTED + |IFC_GOT_PRST + |IFC_HSK_FAILED + |IFC_CLOSING + |IFC_GOING_AWAY))) + { + if (lconn->cn_flags & LSCONN_PEER_GOING_AWAY) + return LSCONN_ST_PEER_GOING_AWAY; + else if (lconn->cn_flags & LSCONN_HANDSHAKE_DONE) + return LSCONN_ST_CONNECTED; + else + return LSCONN_ST_HSK_IN_PROGRESS; + } + + if (errbuf && bufsz) + { + if (conn->ifc_errmsg) + { + n = bufsz < MAX_ERRMSG ? bufsz : MAX_ERRMSG; + strncpy(errbuf, conn->ifc_errmsg, n); + errbuf[n - 1] = '\0'; + } + else + errbuf[0] = '\0'; + } + + if (conn->ifc_flags & IFC_ERROR) + { + if (conn->ifc_flags & IFC_HSK_FAILED) + return LSCONN_ST_VERNEG_FAILURE; + else + return LSCONN_ST_ERROR; + } + if (conn->ifc_flags & IFC_TIMED_OUT) + return LSCONN_ST_TIMED_OUT; + if (conn->ifc_flags & IFC_ABORTED) + return LSCONN_ST_USER_ABORTED; + if (conn->ifc_flags & IFC_GOT_PRST) + return LSCONN_ST_RESET; + if (conn->ifc_flags & IFC_HSK_FAILED) + return LSCONN_ST_HSK_FAILURE; + if (conn->ifc_flags & IFC_CLOSING) + return LSCONN_ST_CLOSED; + assert(conn->ifc_flags & IFC_GOING_AWAY); + return LSCONN_ST_GOING_AWAY; +} + + +static void +ietf_full_conn_ci_stateless_reset (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) lconn; + conn->ifc_flags |= IFC_GOT_PRST; + LSQ_INFO("stateless reset reported"); +} + + +static struct lsquic_engine * +ietf_full_conn_ci_get_engine (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + return conn->ifc_enpub->enp_engine; +} + + +static unsigned +ietf_full_conn_ci_n_pending_streams (const struct lsquic_conn *lconn) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) lconn; + return conn->ifc_n_delayed_streams; +} + + +static unsigned +ietf_full_conn_ci_n_avail_streams (const struct lsquic_conn *lconn) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) lconn; + return avail_streams_count(conn, conn->ifc_flags & IFC_SERVER, SD_BIDI); +} + + +static int +handshake_done_or_doing_sess_resume (const struct ietf_full_conn *conn) +{ + return (conn->ifc_conn.cn_flags & LSCONN_HANDSHAKE_DONE) + || conn->ifc_conn.cn_esf_c->esf_is_sess_resume_enabled( + conn->ifc_conn.cn_enc_session); +} + + +static void +ietf_full_conn_ci_make_stream (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) lconn; + + if (handshake_done_or_doing_sess_resume(conn) + && ietf_full_conn_ci_n_avail_streams(lconn) > 0) + { + if (0 != create_bidi_stream_out(conn)) + ABORT_ERROR("could not create new stream: %s", strerror(errno)); + } + else if (either_side_going_away(conn)) + { + (void) conn->ifc_enpub->enp_stream_if->on_new_stream( + conn->ifc_enpub->enp_stream_if_ctx, NULL); + LSQ_DEBUG("going away: no streams will be initiated"); + } + else + { + ++conn->ifc_n_delayed_streams; + LSQ_DEBUG("delayed stream creation. Backlog size: %u", + conn->ifc_n_delayed_streams); + } +} + + +static void +ietf_full_conn_ci_internal_error (struct lsquic_conn *lconn, + const char *format, ...) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) lconn; + LSQ_INFO("internal error reported"); + ABORT_QUIETLY(0, TEC_INTERNAL_ERROR, "Internal error"); +} + + +static void +ietf_full_conn_ci_abort_error (struct lsquic_conn *lconn, int is_app, + unsigned error_code, const char *fmt, ...) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) lconn; + va_list ap; + const char *err_str, *percent; + char err_buf[0x100]; + + if (conn->ifc_error.u.err != 0) + return; + percent = strchr(fmt, '%'); + if (percent) + { + va_start(ap, fmt); + vsnprintf(err_buf, sizeof(err_buf), fmt, ap); + va_end(ap); + err_str = err_buf; + } + else + err_str = fmt; + LSQ_INFO("abort error: is_app: %d; error code: %u; error str: %s", + is_app, error_code, err_str); + ABORT_QUIETLY(is_app, error_code, "%s", err_str); +} + + +static int +path_matches_local_sa (const struct network_path *path, + const struct sockaddr *local_sa) +{ + return lsquic_sockaddr_eq(NP_LOCAL_SA(path), local_sa); +} + + +static struct network_path * +ietf_full_conn_ci_get_path (struct lsquic_conn *lconn, + const struct sockaddr *sa) +{ + struct ietf_full_conn *const conn = (struct ietf_full_conn *) lconn; + struct conn_path *copath; + + if (NULL == sa || path_matches_local_sa(CUR_NPATH(conn), sa)) + return CUR_NPATH(conn); + + for (copath = conn->ifc_paths; copath < conn->ifc_paths + + sizeof(conn->ifc_paths) / sizeof(conn->ifc_paths[0]); ++copath) + if ((conn->ifc_used_paths & (1 << (copath - conn->ifc_paths))) + && path_matches_local_sa(&copath->cop_path, sa)) + return &copath->cop_path; + + return CUR_NPATH(conn); +} + + +static int +path_matches (const struct network_path *path, + const struct sockaddr *local_sa, const struct sockaddr *peer_sa) +{ + return local_sa->sa_family == NP_LOCAL_SA(path)->sa_family + && lsquic_sockaddr_eq(local_sa, NP_LOCAL_SA(path)) + && lsquic_sockaddr_eq(peer_sa, NP_PEER_SA(path)); +} + + +static void +record_to_path (struct ietf_full_conn *conn, struct conn_path *copath, void *peer_ctx, + const struct sockaddr *local_sa, const struct sockaddr *peer_sa) +{ + struct network_path *path; + size_t len; + char path_str[2][INET6_ADDRSTRLEN + sizeof(":65535")]; + + LSQ_DEBUG("record path %d: (%s - %s)", (int) (copath - conn->ifc_paths), + SA2STR(local_sa, path_str[0]), SA2STR(peer_sa, path_str[1])); + path = &copath->cop_path; + len = local_sa->sa_family == AF_INET ? sizeof(struct sockaddr_in) + : sizeof(struct sockaddr_in6); + memcpy(NP_LOCAL_SA(path), local_sa, len); + len = peer_sa->sa_family == AF_INET ? sizeof(struct sockaddr_in) + : sizeof(struct sockaddr_in6); + memcpy(NP_PEER_SA(path), peer_sa, len); + path->np_peer_ctx = peer_ctx; +} + + +static unsigned char +ietf_full_conn_ci_record_addrs (struct lsquic_conn *lconn, void *peer_ctx, + const struct sockaddr *local_sa, const struct sockaddr *peer_sa) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + struct network_path *path; + struct conn_path *copath, *first_unused, *first_unvalidated, *first_other, + *victim; + + path = &conn->ifc_paths[conn->ifc_cur_path_id].cop_path; + if (path_matches(path, local_sa, peer_sa)) + { + path->np_peer_ctx = peer_ctx; + return conn->ifc_cur_path_id; + } + + first_unvalidated = NULL; + first_unused = NULL; + first_other = NULL; + for (copath = conn->ifc_paths; copath < conn->ifc_paths + + sizeof(conn->ifc_paths) / sizeof(conn->ifc_paths[0]); ++copath) + { + if (conn->ifc_used_paths & (1 << (copath - conn->ifc_paths))) + { + if (path_matches(&copath->cop_path, local_sa, peer_sa)) + { + copath->cop_path.np_peer_ctx = peer_ctx; + return copath - conn->ifc_paths; + } + if (!first_unvalidated + && (0 == (copath->cop_flags & COP_VALIDATED))) + first_unvalidated = copath; + else if (!first_other) + first_other = copath; + } + else if (!first_unused) + first_unused = copath; + } + + if (first_unused) + { + record_to_path(conn, first_unused, peer_ctx, local_sa, peer_sa); + if (0 == conn->ifc_used_paths && !(conn->ifc_flags & IFC_SERVER)) + { + /* First path is considered valid immediately */ + first_unused->cop_flags |= COP_VALIDATED; + maybe_enable_spin(conn, first_unused); + } + LSQ_DEBUG("record new path ID %d", + (int) (first_unused - conn->ifc_paths)); + conn->ifc_used_paths |= 1 << (first_unused - conn->ifc_paths); + return first_unused - conn->ifc_paths; + } + + if (first_unvalidated || first_other) + { + victim = first_unvalidated ? first_unvalidated : first_other; + record_to_path(conn, victim, peer_ctx, local_sa, peer_sa); + return victim - conn->ifc_paths; + } + + return conn->ifc_cur_path_id; +} + + +static void +ietf_full_conn_ci_drop_crypto_streams (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + drop_crypto_streams(conn); +} + + +void +ietf_full_conn_ci_count_garbage (struct lsquic_conn *lconn, size_t garbage_sz) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + + conn->ifc_pub.bytes_in += garbage_sz; + LSQ_DEBUG("count %zd bytes of garbage, new value: %u bytes", garbage_sz, + conn->ifc_pub.bytes_in); +} + + +int +ietf_full_conn_ci_get_info (lsquic_conn_t *lconn, struct lsquic_conn_info *info) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + memset(info, 0, sizeof(*info)); + info->lci_cwnd = conn->ifc_send_ctl.sc_ci->cci_get_cwnd( + conn->ifc_send_ctl.sc_cong_ctl); + info->lci_rtt = lsquic_rtt_stats_get_srtt(&conn->ifc_pub.rtt_stats); + info->lci_rttvar = lsquic_rtt_stats_get_rttvar(&conn->ifc_pub.rtt_stats); + info->lci_rtt_min = lsquic_rtt_stats_get_min_rtt(&conn->ifc_pub.rtt_stats); + info->lci_pmtu = conn->ifc_paths[conn->ifc_cur_path_id].cop_path.np_pack_size; + info->lci_bw_estimate = conn->ifc_send_ctl.sc_ci->cci_pacing_rate( + conn->ifc_send_ctl.sc_cong_ctl, 1); + +#if LSQUIC_CONN_STATS + info->lci_bytes_rcvd = conn->ifc_stats.in.bytes; + info->lci_bytes_sent = conn->ifc_stats.out.bytes; + info->lci_pkts_rcvd = conn->ifc_stats.in.packets; + info->lci_pkts_sent = conn->ifc_stats.out.packets; + info->lci_pkts_lost = conn->ifc_stats.out.lost_packets; + info->lci_pkts_retx = conn->ifc_stats.out.retx_packets; +#endif + return 0; +} + + +#if LSQUIC_CONN_STATS +static const struct conn_stats * +ietf_full_conn_ci_get_stats (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + return &conn->ifc_stats; +} + + +static void +ietf_full_conn_ci_log_stats (struct lsquic_conn *lconn) +{ + struct ietf_full_conn *conn = (struct ietf_full_conn *) lconn; + struct batch_size_stats *const bs = &conn->ifc_enpub->enp_batch_size_stats; + struct conn_stats diff_stats; + uint64_t cwnd; + char cidstr[MAX_CID_LEN * 2 + 1]; + + if (!conn->ifc_last_stats) + { + conn->ifc_last_stats = calloc(1, sizeof(*conn->ifc_last_stats)); + if (!conn->ifc_last_stats) + return; + LSQ_DEBUG("allocated last stats"); + } + + cwnd = conn->ifc_send_ctl.sc_ci->cci_get_cwnd( + conn->ifc_send_ctl.sc_cong_ctl); + lsquic_conn_stats_diff(&conn->ifc_stats, conn->ifc_last_stats, &diff_stats); + lsquic_logger_log1(LSQ_LOG_NOTICE, LSQLM_CONN_STATS, + "%s: ticks: %lu; cwnd: %"PRIu64"; conn flow: max: %"PRIu64 + ", avail: %"PRIu64"; packets: sent: %lu, lost: %lu, retx: %lu, rcvd: %lu" + "; batch: count: %u; min: %u; max: %u; avg: %.2f", + (lsquic_cid2str(LSQUIC_LOG_CONN_ID, cidstr), cidstr), + diff_stats.n_ticks, cwnd, + conn->ifc_pub.conn_cap.cc_max, + lsquic_conn_cap_avail(&conn->ifc_pub.conn_cap), + diff_stats.out.packets, diff_stats.out.lost_packets, + diff_stats.out.retx_packets, diff_stats.in.packets, + bs->count, bs->min, bs->max, bs->avg); + + *conn->ifc_last_stats = conn->ifc_stats; + memset(bs, 0, sizeof(*bs)); +} + + +#endif + + +#define IETF_FULL_CONN_FUNCS \ + .ci_abort = ietf_full_conn_ci_abort, \ + .ci_abort_error = ietf_full_conn_ci_abort_error, \ + .ci_ack_snapshot = ietf_full_conn_ci_ack_snapshot, \ + .ci_ack_rollback = ietf_full_conn_ci_ack_rollback, \ + .ci_retire_cid = ietf_full_conn_ci_retire_cid, \ + .ci_can_write_ack = ietf_full_conn_ci_can_write_ack, \ + .ci_cancel_pending_streams = ietf_full_conn_ci_cancel_pending_streams, \ + .ci_client_call_on_new = ietf_full_conn_ci_client_call_on_new, \ + .ci_close = ietf_full_conn_ci_close, \ + .ci_count_garbage = ietf_full_conn_ci_count_garbage, \ + .ci_destroy = ietf_full_conn_ci_destroy, \ + .ci_drain_time = ietf_full_conn_ci_drain_time, \ + .ci_drop_crypto_streams = ietf_full_conn_ci_drop_crypto_streams, \ + .ci_early_data_failed = ietf_full_conn_ci_early_data_failed, \ + .ci_get_engine = ietf_full_conn_ci_get_engine, \ + .ci_get_min_datagram_size= ietf_full_conn_ci_get_min_datagram_size, \ + .ci_get_path = ietf_full_conn_ci_get_path, \ + .ci_going_away = ietf_full_conn_ci_going_away, \ + .ci_hsk_done = ietf_full_conn_ci_hsk_done, \ + .ci_internal_error = ietf_full_conn_ci_internal_error, \ + .ci_is_push_enabled = ietf_full_conn_ci_is_push_enabled, \ + .ci_is_tickable = ietf_full_conn_ci_is_tickable, \ + .ci_make_stream = ietf_full_conn_ci_make_stream, \ + .ci_mtu_probe_acked = ietf_full_conn_ci_mtu_probe_acked, \ + .ci_n_avail_streams = ietf_full_conn_ci_n_avail_streams, \ + .ci_n_pending_streams = ietf_full_conn_ci_n_pending_streams, \ + .ci_next_tick_time = ietf_full_conn_ci_next_tick_time, \ + .ci_packet_in = ietf_full_conn_ci_packet_in, \ + .ci_push_stream = ietf_full_conn_ci_push_stream, \ + .ci_record_addrs = ietf_full_conn_ci_record_addrs, \ + .ci_report_live = ietf_full_conn_ci_report_live, \ + .ci_retx_timeout = ietf_full_conn_ci_retx_timeout, \ + .ci_set_min_datagram_size= ietf_full_conn_ci_set_min_datagram_size, \ + .ci_status = ietf_full_conn_ci_status, \ + .ci_stateless_reset = ietf_full_conn_ci_stateless_reset, \ + .ci_tick = ietf_full_conn_ci_tick, \ + .ci_tls_alert = ietf_full_conn_ci_tls_alert, \ + .ci_want_datagram_write = ietf_full_conn_ci_want_datagram_write, \ + .ci_write_ack = ietf_full_conn_ci_write_ack + +static const struct conn_iface ietf_full_conn_iface = { + IETF_FULL_CONN_FUNCS, + .ci_next_packet_to_send = ietf_full_conn_ci_next_packet_to_send, + .ci_packet_not_sent = ietf_full_conn_ci_packet_not_sent, + .ci_packet_sent = ietf_full_conn_ci_packet_sent, + .ci_packet_too_large = ietf_full_conn_ci_packet_too_large, + .ci_get_info = ietf_full_conn_ci_get_info, +#if LSQUIC_CONN_STATS + .ci_get_stats = ietf_full_conn_ci_get_stats, + .ci_log_stats = ietf_full_conn_ci_log_stats, +#endif +}; +static const struct conn_iface *ietf_full_conn_iface_ptr = + &ietf_full_conn_iface; + +static const struct conn_iface ietf_full_conn_prehsk_iface = { + IETF_FULL_CONN_FUNCS, + .ci_next_packet_to_send = ietf_full_conn_ci_next_packet_to_send_pre_hsk, + .ci_packet_not_sent = ietf_full_conn_ci_packet_not_sent_pre_hsk, + .ci_packet_sent = ietf_full_conn_ci_packet_sent_pre_hsk, +#if LSQUIC_CONN_STATS + .ci_get_stats = ietf_full_conn_ci_get_stats, + .ci_log_stats = ietf_full_conn_ci_log_stats, +#endif +}; +static const struct conn_iface *ietf_full_conn_prehsk_iface_ptr = + &ietf_full_conn_prehsk_iface; + + +static void +on_cancel_push_client (void *ctx, uint64_t push_id) +{ + struct ietf_full_conn *const conn = ctx; + + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "Received CANCEL_PUSH(%"PRIu64")", + push_id); + if (conn->ifc_u.cli.ifcli_flags & IFCLI_PUSH_ENABLED) + { + ABORT_QUIETLY(1, HEC_ID_ERROR, "received CANCEL_PUSH but push is " + "not enabled"); + return; + } + + if (push_id > conn->ifc_u.cli.ifcli_max_push_id) + { + ABORT_QUIETLY(1, HEC_ID_ERROR, "received CANCEL_PUSH with ID=%"PRIu64 + ", which is greater than the maximum Push ID=%"PRIu64, push_id, + conn->ifc_u.cli.ifcli_max_push_id); + return; + } + +#if CLIENT_PUSH_SUPPORT + LSQ_WARN("TODO: support for CANCEL_PUSH is not implemented"); +#endif +} + + +/* Careful: this puts promise */ +static void +cancel_push_promise (struct ietf_full_conn *conn, struct push_promise *promise) +{ + LSQ_DEBUG("cancel promise %"PRIu64, promise->pp_id); + /* Remove promise from hash to prevent multiple cancellations */ + lsquic_hash_erase(conn->ifc_pub.u.ietf.promises, &promise->pp_hash_id); + /* But let stream dtor free the promise object as sm_promise may yet + * be used by the stream in some ways. + */ + /* TODO: drop lsquic_stream_shutdown_internal, use something else */ + lsquic_stream_shutdown_internal(promise->pp_pushed_stream); + if (0 != lsquic_hcso_write_cancel_push(&conn->ifc_hcso, promise->pp_id)) + ABORT_WARN("cannot write CANCEL_PUSH"); + lsquic_pp_put(promise, conn->ifc_pub.u.ietf.promises); +} + + +static void +on_cancel_push_server (void *ctx, uint64_t push_id) +{ + struct ietf_full_conn *const conn = ctx; + struct lsquic_hash_elem *el; + struct push_promise *promise; + + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "Received CANCEL_PUSH(%"PRIu64")", + push_id); + if (push_id >= conn->ifc_u.ser.ifser_next_push_id) + { + ABORT_QUIETLY(1, HEC_ID_ERROR, "received CANCEL_PUSH with ID=%"PRIu64 + ", which is greater than the maximum Push ID ever generated by " + "this connection", push_id); + return; + } + + el = lsquic_hash_find(conn->ifc_pub.u.ietf.promises, &push_id, + sizeof(push_id)); + if (!el) + { + LSQ_DEBUG("push promise %"PRIu64" not found", push_id); + return; + } + + promise = lsquic_hashelem_getdata(el); + cancel_push_promise(conn, promise); +} + + +static void +on_max_push_id_client (void *ctx, uint64_t push_id) +{ + struct ietf_full_conn *const conn = ctx; + ABORT_QUIETLY(1, HEC_FRAME_UNEXPECTED, "client does not expect the server " + "to send MAX_PUSH_ID frame"); +} + + +static void +on_max_push_id (void *ctx, uint64_t push_id) +{ + struct ietf_full_conn *const conn = ctx; + + if (!(conn->ifc_u.ser.ifser_flags & IFSER_MAX_PUSH_ID) + || push_id > conn->ifc_u.ser.ifser_max_push_id) + { + conn->ifc_u.ser.ifser_max_push_id = push_id; + conn->ifc_u.ser.ifser_flags |= IFSER_MAX_PUSH_ID; + LSQ_DEBUG("set MAX_PUSH_ID to %"PRIu64, push_id); + } + else if (push_id < conn->ifc_u.ser.ifser_max_push_id) + ABORT_QUIETLY(1, HEC_ID_ERROR, "MAX_PUSH_ID reduced from " + "%"PRIu64" to %"PRIu64, conn->ifc_u.ser.ifser_max_push_id, push_id); + else + LSQ_DEBUG("ignore repeated value of MAX_PUSH_ID=%"PRIu64, push_id); +} + + +static void +on_settings_frame (void *ctx) +{ + struct ietf_full_conn *const conn = ctx; + unsigned dyn_table_size, max_risked_streams; + + LSQ_DEBUG("SETTINGS frame"); + if (conn->ifc_flags & IFC_HAVE_PEER_SET) + { + ABORT_QUIETLY(1, HEC_FRAME_UNEXPECTED, + "second incoming SETTING frame on HTTP control stream"); + return; + } + + conn->ifc_flags |= IFC_HAVE_PEER_SET; + dyn_table_size = MIN(conn->ifc_settings->es_qpack_enc_max_size, + conn->ifc_peer_hq_settings.header_table_size); + max_risked_streams = MIN(conn->ifc_settings->es_qpack_enc_max_blocked, + conn->ifc_peer_hq_settings.qpack_blocked_streams); + if (conn->ifc_settings->es_qpack_experiment == 2) + randomize_qpack_settings(conn, "encoder", &dyn_table_size, + &max_risked_streams); + if (conn->ifc_qeh.qeh_exp_rec) + { + conn->ifc_qeh.qeh_exp_rec->qer_peer_max_size + = conn->ifc_peer_hq_settings.header_table_size; + conn->ifc_qeh.qeh_exp_rec->qer_used_max_size = dyn_table_size; + conn->ifc_qeh.qeh_exp_rec->qer_peer_max_blocked + = conn->ifc_peer_hq_settings.qpack_blocked_streams; + conn->ifc_qeh.qeh_exp_rec->qer_used_max_blocked = max_risked_streams; + } + if (0 != lsquic_qeh_settings(&conn->ifc_qeh, + conn->ifc_peer_hq_settings.header_table_size, + dyn_table_size, max_risked_streams, conn->ifc_flags & IFC_SERVER)) + ABORT_WARN("could not initialize QPACK encoder handler"); + if (avail_streams_count(conn, conn->ifc_flags & IFC_SERVER, SD_UNI) > 0) + { + if (0 != create_qenc_stream_out(conn)) + ABORT_WARN("cannot create outgoing QPACK encoder stream"); + } + else + { + queue_streams_blocked_frame(conn, SD_UNI); + LSQ_DEBUG("cannot create QPACK encoder stream due to unidir limit"); + } + maybe_create_delayed_streams(conn); +} + + +static void +on_setting (void *ctx, uint64_t setting_id, uint64_t value) +{ + struct ietf_full_conn *const conn = ctx; + + switch (setting_id) + { + case HQSID_QPACK_BLOCKED_STREAMS: + LSQ_DEBUG("Peer's SETTINGS_QPACK_BLOCKED_STREAMS=%"PRIu64, value); + conn->ifc_peer_hq_settings.qpack_blocked_streams = value; + break; + case HQSID_QPACK_MAX_TABLE_CAPACITY: + LSQ_DEBUG("Peer's SETTINGS_QPACK_MAX_TABLE_CAPACITY=%"PRIu64, value); + conn->ifc_peer_hq_settings.header_table_size = value; + break; + case HQSID_MAX_HEADER_LIST_SIZE: + LSQ_DEBUG("Peer's SETTINGS_MAX_HEADER_LIST_SIZE=%"PRIu64"; " + "we ignore it", value); + break; + default: + LSQ_DEBUG("received unknown SETTING 0x%"PRIX64"=0x%"PRIX64 + "; ignore it", setting_id, value); + break; + case 2: /* HTTP/2 SETTINGS_ENABLE_PUSH */ + case 3: /* HTTP/2 SETTINGS_MAX_CONCURRENT_STREAMS */ + case 4: /* HTTP/2 SETTINGS_INITIAL_WINDOW_SIZE */ + case 5: /* HTTP/2 SETTINGS_MAX_FRAME_SIZE */ + /* [draft-ietf-quic-http-30] Section 7.2.4.1 */ + ABORT_QUIETLY(1, HEC_SETTINGS_ERROR, "unexpected HTTP/2 setting " + "%"PRIu64, setting_id); + break; + } +} + + +static void +on_goaway_server_27 (void *ctx, uint64_t stream_id) +{ + struct ietf_full_conn *const conn = ctx; + ABORT_QUIETLY(1, HEC_FRAME_UNEXPECTED, + "client should not send GOAWAY frames"); +} + + +static void +on_goaway_client_27 (void *ctx, uint64_t stream_id) +{ + struct ietf_full_conn *const conn = ctx; + struct lsquic_stream *stream; + struct lsquic_hash_elem *el; + enum stream_id_type sit; + + sit = stream_id & SIT_MASK; + if (sit != SIT_BIDI_CLIENT) + { + ABORT_QUIETLY(1, HEC_ID_ERROR, + "stream ID %"PRIu64" in GOAWAY frame", stream_id); + return; + } + + if (conn->ifc_conn.cn_flags & LSCONN_PEER_GOING_AWAY) + { + LSQ_DEBUG("ignore duplicate GOAWAY frame"); + return; + } + + conn->ifc_conn.cn_flags |= LSCONN_PEER_GOING_AWAY; + LSQ_DEBUG("received GOAWAY frame, last good stream ID: %"PRIu64, stream_id); + if (conn->ifc_enpub->enp_stream_if->on_goaway_received) + conn->ifc_enpub->enp_stream_if->on_goaway_received(&conn->ifc_conn); + + for (el = lsquic_hash_first(conn->ifc_pub.all_streams); el; + el = lsquic_hash_next(conn->ifc_pub.all_streams)) + { + stream = lsquic_hashelem_getdata(el); + if (stream->id > stream_id + && (stream->id & SIT_MASK) == SIT_BIDI_CLIENT) + { + lsquic_stream_received_goaway(stream); + } + } +} + + +static void +on_goaway_client (void *ctx, uint64_t stream_id) +{ + struct ietf_full_conn *const conn = ctx; + struct lsquic_stream *stream; + struct lsquic_hash_elem *el; + enum stream_id_type sit; + + sit = stream_id & SIT_MASK; + if (sit != SIT_BIDI_CLIENT) + { + ABORT_QUIETLY(1, HEC_ID_ERROR, + "stream ID %"PRIu64" in GOAWAY frame", stream_id); + return; + } + + LSQ_DEBUG("received GOAWAY frame, last good stream ID: %"PRIu64, stream_id); + + if (conn->ifc_conn.cn_flags & LSCONN_PEER_GOING_AWAY) + { + if (stream_id == conn->ifc_u.cli.ifcli_min_goaway_stream_id) + { + LSQ_DEBUG("ignore duplicate GOAWAY frame"); + return; + } + if (stream_id > conn->ifc_u.cli.ifcli_min_goaway_stream_id) + { + ABORT_QUIETLY(1, HEC_ID_ERROR, + "stream ID %"PRIu64" is larger than one already seen in a " + "previous GOAWAY frame, %"PRIu64, stream_id, + conn->ifc_u.cli.ifcli_min_goaway_stream_id); + return; + } + } + else + { + conn->ifc_u.cli.ifcli_min_goaway_stream_id = stream_id; + conn->ifc_conn.cn_flags |= LSCONN_PEER_GOING_AWAY; + if (conn->ifc_enpub->enp_stream_if->on_goaway_received) + conn->ifc_enpub->enp_stream_if->on_goaway_received(&conn->ifc_conn); + } + + for (el = lsquic_hash_first(conn->ifc_pub.all_streams); el; + el = lsquic_hash_next(conn->ifc_pub.all_streams)) + { + stream = lsquic_hashelem_getdata(el); + if (stream->id > stream_id + && (stream->id & SIT_MASK) == SIT_BIDI_CLIENT) + { + lsquic_stream_received_goaway(stream); + } + } +} + + +static void +on_goaway_server (void *ctx, uint64_t max_push_id) +{ + struct ietf_full_conn *const conn = ctx; + struct push_promise *promise; + struct lsquic_hash_elem *el; + + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "Received GOAWAY(%"PRIu64")", + max_push_id); + for (el = lsquic_hash_first(conn->ifc_pub.u.ietf.promises); el; + el = lsquic_hash_next(conn->ifc_pub.u.ietf.promises)) + { + promise = lsquic_hashelem_getdata(el); + if (promise->pp_id > max_push_id) + cancel_push_promise(conn, promise); + } +} + + +static void +on_priority_update_client (void *ctx, enum hq_frame_type frame_type, + uint64_t id, const char *pfv, size_t pfv_sz) +{ + struct ietf_full_conn *const conn = ctx; + + if (conn->ifc_pii == &ext_prio_iter_if) + ABORT_QUIETLY(1, HEC_FRAME_UNEXPECTED, "Frame type %u is not " + "expected to be sent by the server", (unsigned) frame_type); + /* else ignore */ +} + + +/* This should not happen often, so do not bother to optimize memory. */ +static int +buffer_priority_update (struct ietf_full_conn *conn, + lsquic_stream_id_t stream_id, const struct lsquic_ext_http_prio *ehp) +{ + struct buffered_priority_update *bpu; + struct lsquic_hash_elem *el; + + if (!conn->ifc_bpus) + { + conn->ifc_bpus = lsquic_hash_create(); + if (!conn->ifc_bpus) + { + ABORT_ERROR("cannot allocate BPUs hash"); + return -1; + } + goto insert_new; + } + + el = lsquic_hash_find(conn->ifc_bpus, &stream_id, sizeof(stream_id)); + if (el) + { + bpu = lsquic_hashelem_getdata(el); + bpu->ehp = *ehp; + return 0; + } + + insert_new: + bpu = malloc(sizeof(*bpu)); + if (!bpu) + { + ABORT_ERROR("cannot allocate BPU"); + return -1; + } + + bpu->hash_el.qhe_flags = 0; + bpu->stream_id = stream_id; + bpu->ehp = *ehp; + if (!lsquic_hash_insert(conn->ifc_bpus, &bpu->stream_id, + sizeof(bpu->stream_id), bpu, &bpu->hash_el)) + { + free(bpu); + ABORT_ERROR("cannot insert BPU"); + return -1; + } + + return 0; +} + + +static void +on_priority_update_server (void *ctx, enum hq_frame_type frame_type, + uint64_t id, const char *pfv, size_t pfv_sz) +{ + struct ietf_full_conn *const conn = ctx; + struct lsquic_hash_elem *el; + struct push_promise *promise; + struct lsquic_stream *stream; + enum stream_id_type sit; + struct lsquic_ext_http_prio ehp; + + if (conn->ifc_pii != &ext_prio_iter_if) + { + LSQ_DEBUG("Ignore PRIORITY_UPDATE frame"); + return; + } + + if (frame_type == HQFT_PRIORITY_UPDATE_STREAM) + { + sit = id & SIT_MASK; + if (sit != SIT_BIDI_CLIENT) + { + ABORT_QUIETLY(1, HEC_ID_ERROR, "PRIORITY_UPDATE for non-request " + "stream"); + return; + } + if (id >= conn->ifc_max_allowed_stream_id[sit]) + { + ABORT_QUIETLY(1, HEC_ID_ERROR, "PRIORITY_UPDATE for non-existing " + "stream %"PRIu64" exceeds allowed max of %"PRIu64, + id, conn->ifc_max_allowed_stream_id[sit]); + return; + } + stream = find_stream_by_id(conn, id); + if (!stream && conn_is_stream_closed(conn, id)) + { + LSQ_DEBUG("stream %"PRIu64" closed, ignore PRIORITY_UPDATE", id); + return; + } + } + else + { + if (id >= conn->ifc_u.ser.ifser_next_push_id) + { + ABORT_QUIETLY(1, HEC_ID_ERROR, "received PRIORITY_UPDATE with " + "ID=%"PRIu64", which is greater than the maximum Push ID " + "ever generated by this connection", id); + return; + } + el = lsquic_hash_find(conn->ifc_pub.u.ietf.promises, &id, sizeof(id)); + if (!el) + { + LSQ_DEBUG("push promise %"PRIu64" not found, ignore " + "PRIORITY_UPDATE", id); + return; + } + promise = lsquic_hashelem_getdata(el); + stream = promise->pp_pushed_stream; + assert(stream); + } + + ehp = (struct lsquic_ext_http_prio) { + .urgency = LSQUIC_DEF_HTTP_URGENCY, + .incremental = LSQUIC_DEF_HTTP_INCREMENTAL, + }; + if (pfv_sz) + { + switch (lsquic_http_parse_pfv(pfv, pfv_sz, NULL, &ehp, + (char *) conn->ifc_pub.mm->acki, + sizeof(*conn->ifc_pub.mm->acki))) + { + case 0: + LSQ_DEBUG("Parsed PFV `%.*s' correctly", (int) pfv_sz, pfv); + break; + case -2: /* Out of memory, ignore */ + LSQ_INFO("Ignore PFV `%.*s': out of memory", (int) pfv_sz, pfv); + return; + default: + LSQ_INFO("connection error due to invalid PFV `%.*s'", + (int) pfv_sz, pfv); + /* From the draft (between versions 1 and 2): + " Failure to parse the Priority Field Value MUST be treated + " as a connection error of type FRAME_ENCODING_ERROR. + */ + ABORT_QUIETLY(1, HEC_FRAME_ERROR, "cannot parse Priority Field " + "Value in PRIORITY_UPDATE frame"); + return; + } + } + else + { /* Empty PFV means "use defaults" */ } + + if (stream) + (void) lsquic_stream_set_http_prio(stream, &ehp); + else + { + assert(frame_type == HQFT_PRIORITY_UPDATE_STREAM); + if (0 == buffer_priority_update(conn, id, &ehp)) + LSQ_INFO("buffered priority update for stream %"PRIu64"; " + "urgency: %hhu, incremental: %hhd", id, ehp.urgency, + ehp.incremental); + } +} + + +static void +on_frame_error (void *ctx, unsigned code, uint64_t frame_type) +{ + struct ietf_full_conn *const conn = ctx; + if (code == HEC_MISSING_SETTINGS) + ABORT_QUIETLY(1, code, "The first control frame is not SETTINGS, " + "got frame type %"PRIu64, frame_type); + else + ABORT_QUIETLY(1, HEC_FRAME_UNEXPECTED, "Frame type %"PRIu64" is not " + "allowed on the control stream", frame_type); +} + + +static const struct hcsi_callbacks hcsi_callbacks_server_27 = +{ + .on_cancel_push = on_cancel_push_server, + .on_max_push_id = on_max_push_id, + .on_settings_frame = on_settings_frame, + .on_setting = on_setting, + .on_goaway = on_goaway_server_27, + .on_frame_error = on_frame_error, + .on_priority_update = on_priority_update_server, +}; + +static const struct hcsi_callbacks hcsi_callbacks_client_27 = +{ + .on_cancel_push = on_cancel_push_client, + .on_max_push_id = on_max_push_id_client, + .on_settings_frame = on_settings_frame, + .on_setting = on_setting, + .on_goaway = on_goaway_client_27, + .on_frame_error = on_frame_error, + .on_priority_update = on_priority_update_client, +}; + + +static const struct hcsi_callbacks hcsi_callbacks_server_29 = +{ + .on_cancel_push = on_cancel_push_server, + .on_max_push_id = on_max_push_id, + .on_settings_frame = on_settings_frame, + .on_setting = on_setting, + .on_goaway = on_goaway_server, + .on_frame_error = on_frame_error, + .on_priority_update = on_priority_update_server, +}; + +static const struct hcsi_callbacks hcsi_callbacks_client_29 = +{ + .on_cancel_push = on_cancel_push_client, + .on_max_push_id = on_max_push_id_client, + .on_settings_frame = on_settings_frame, + .on_setting = on_setting, + .on_goaway = on_goaway_client, + .on_frame_error = on_frame_error, + .on_priority_update = on_priority_update_client, +}; + + +static lsquic_stream_ctx_t * +hcsi_on_new (void *stream_if_ctx, struct lsquic_stream *stream) +{ + struct ietf_full_conn *const conn = (void *) stream_if_ctx; + const struct hcsi_callbacks *callbacks; + + conn->ifc_mflags |= MF_HAVE_HCSI; + + switch ((!!(conn->ifc_flags & IFC_SERVER) << 8) | conn->ifc_conn.cn_version) + { + case (0 << 8) | LSQVER_ID27: + callbacks = &hcsi_callbacks_client_27; + break; + case (1 << 8) | LSQVER_ID27: + callbacks = &hcsi_callbacks_server_27; + break; + case (0 << 8) | LSQVER_ID29: + case (0 << 8) | LSQVER_I001: + case (0 << 8) | LSQVER_I002: + callbacks = &hcsi_callbacks_client_29; + break; + default: + assert(0); + /* fallthru */ + case (1 << 8) | LSQVER_ID29: + case (1 << 8) | LSQVER_I001: + case (1 << 8) | LSQVER_I002: + callbacks = &hcsi_callbacks_server_29; + break; + } + lsquic_hcsi_reader_init(&conn->ifc_hcsi.reader, &conn->ifc_conn, + callbacks, conn); + lsquic_stream_wantread(stream, 1); + return stream_if_ctx; +} + + +struct feed_hcsi_ctx +{ + struct ietf_full_conn *conn; + int s; +}; + + +static size_t +feed_hcsi_reader (void *ctx, const unsigned char *buf, size_t bufsz, int fin) +{ + struct feed_hcsi_ctx *feed_ctx = ctx; + struct ietf_full_conn *conn = feed_ctx->conn; + + feed_ctx->s = lsquic_hcsi_reader_feed(&conn->ifc_hcsi.reader, buf, bufsz); + return bufsz; +} + + +static void +hcsi_on_read (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + struct ietf_full_conn *const conn = (void *) ctx; + struct lsquic_conn *const lconn = &conn->ifc_conn; + struct feed_hcsi_ctx feed_ctx = { conn, 0, }; + ssize_t nread; + + nread = lsquic_stream_readf(stream, feed_hcsi_reader, &feed_ctx); + LSQ_DEBUG("fed %zd bytes to HTTP control stream reader, status=%d", + nread, feed_ctx.s); + if (nread < 0) + { + lsquic_stream_wantread(stream, 0); + ABORT_WARN("error reading from HTTP control stream"); + } + else if (nread == 0) + { + lsquic_stream_wantread(stream, 0); + LSQ_INFO("control stream closed by peer: abort connection"); + lconn->cn_if->ci_abort_error(lconn, 1, + HEC_CLOSED_CRITICAL_STREAM, "control stream closed"); + } + else if (feed_ctx.s != 0) + { + lsquic_stream_wantread(stream, 0); + ABORT_WARN("error processing HTTP control stream"); + } +} + + +static void +hcsi_on_write (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + assert(0); +} + + +static void +hcsi_on_close (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ +} + + +static const struct lsquic_stream_if hcsi_if = +{ + .on_new_stream = hcsi_on_new, + .on_read = hcsi_on_read, + .on_write = hcsi_on_write, + .on_close = hcsi_on_close, +}; + + +static void +apply_uni_stream_class (struct ietf_full_conn *conn, + struct lsquic_stream *stream, uint64_t stream_type) +{ + switch (stream_type) + { + case HQUST_CONTROL: + if (!(conn->ifc_mflags & MF_HAVE_HCSI)) + { + LSQ_DEBUG("Incoming HTTP control stream ID: %"PRIu64, + stream->id); + lsquic_stream_set_stream_if(stream, &hcsi_if, conn); + } + else + { + ABORT_QUIETLY(1, HEC_STREAM_CREATION_ERROR, + "Attempt to create second control stream"); + lsquic_stream_close(stream); + } + break; + case HQUST_QPACK_ENC: + if (!lsquic_qdh_has_enc_stream(&conn->ifc_qdh)) + { + LSQ_DEBUG("Incoming QPACK encoder stream ID: %"PRIu64, + stream->id); + lsquic_stream_set_stream_if(stream, lsquic_qdh_enc_sm_in_if, + &conn->ifc_qdh); + } + else + { + ABORT_QUIETLY(1, HEC_STREAM_CREATION_ERROR, + "Incoming QPACK encoder stream %"PRIu64" already exists: " + "cannot create second stream %"PRIu64, + conn->ifc_qdh.qdh_enc_sm_in->id, stream->id); + lsquic_stream_close(stream); + } + break; + case HQUST_QPACK_DEC: + if (!lsquic_qeh_has_dec_stream(&conn->ifc_qeh)) + { + LSQ_DEBUG("Incoming QPACK decoder stream ID: %"PRIu64, + stream->id); + lsquic_stream_set_stream_if(stream, lsquic_qeh_dec_sm_in_if, + &conn->ifc_qeh); + } + else + { + ABORT_QUIETLY(1, HEC_STREAM_CREATION_ERROR, + "Incoming QPACK decoder stream %"PRIu64" already exists: " + "cannot create second stream %"PRIu64, + conn->ifc_qeh.qeh_dec_sm_in->id, stream->id); + lsquic_stream_close(stream); + } + break; + case HQUST_PUSH: + if (conn->ifc_flags & IFC_SERVER) + { + ABORT_QUIETLY(1, HEC_STREAM_CREATION_ERROR, + "clients can't open push streams"); + } + else + { + LSQ_DEBUG("Refuse push stream %"PRIu64, stream->id); + maybe_schedule_ss_for_stream(conn, stream->id, + HEC_REQUEST_CANCELLED); + } + lsquic_stream_close(stream); + break; + default: + LSQ_DEBUG("unknown unidirectional stream %"PRIu64 " of type %"PRIu64 + ", will send STOP_SENDING and close", stream->id, stream_type); + /* XXX This approach may be risky, as it assumes that the peer updates + * its flow control window correctly. The safe way to do it is to + * create a stream and wait for RESET_STREAM frame. This is not an + * issue in the normal case, as the server does not allow the peer to + * create more than 3 unidirectional streams. + */ + maybe_schedule_ss_for_stream(conn, stream->id, + HEC_STREAM_CREATION_ERROR); + lsquic_stream_close(stream); + break; + } +} + + +static lsquic_stream_ctx_t * +unicla_on_new (void *stream_if_ctx, struct lsquic_stream *stream) +{ + lsquic_stream_wantread(stream, 1); + stream->sm_uni_type_state.pos = 0; + return stream_if_ctx; +} + + +struct unicla_ctx +{ + struct varint_read_state *state; + enum { UC_MORE, UC_ERROR, UC_DONE, } status; +}; + + +static const char *const unicla_stat2str[] = { + [UC_ERROR] = "UC_ERROR", [UC_MORE] = "UC_MORE", [UC_DONE] = "UC_DONE", +}; + + +static size_t +unicla_readf (void *ctx, const unsigned char *begin, size_t sz, int fin) +{ + struct unicla_ctx *const unicla_ctx = ctx; + const unsigned char *buf = begin; + int s; + + switch (unicla_ctx->status) + { + case UC_MORE: + s = lsquic_varint_read_nb(&buf, begin + sz, unicla_ctx->state); + if (s == 0) + unicla_ctx->status = UC_DONE; + else if (fin) + unicla_ctx->status = UC_ERROR; + return buf - begin; + case UC_DONE: + return 0; + default: + return sz; + } +} + + +static void +unicla_on_read (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + struct ietf_full_conn *const conn = (void *) ctx; + struct unicla_ctx unicla_ctx = { .state = &stream->sm_uni_type_state, + .status = UC_MORE, }; + ssize_t nr; + + nr = lsquic_stream_readf(stream, unicla_readf, &unicla_ctx); + LSQ_DEBUG("unistream classifier read %zd byte%.*s, status: %s", nr, + nr != 1, "s", unicla_stat2str[unicla_ctx.status]); + if (nr > 0) + { + if (unicla_ctx.status == UC_DONE) + apply_uni_stream_class(conn, stream, unicla_ctx.state->val); + else if (unicla_ctx.status == UC_ERROR) + goto unexpected_fin; + /* else: do nothing */ + } + else if (nr < 0) /* This should never happen */ + { + LSQ_WARN("unicla: cannot read from stream %"PRIu64, stream->id); + lsquic_stream_close(stream); + } + else + { + unexpected_fin: + LSQ_INFO("unicla: unexpected FIN while reading stream type from " + "stream %"PRIu64, stream->id); + lsquic_stream_close(stream); + } +} + + +static void +unicla_on_write (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + assert(0); +} + + +static void +unicla_on_close (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ +} + + +static const struct lsquic_stream_if unicla_if = +{ + .on_new_stream = unicla_on_new, + .on_read = unicla_on_read, + .on_write = unicla_on_write, + .on_close = unicla_on_close, +}; + + +static const struct lsquic_stream_if *unicla_if_ptr = &unicla_if; + +typedef char dcid_elem_fits_in_128_bytes[sizeof(struct dcid_elem) <= 128 ? 1 : - 1]; + diff --git a/external/lsquic/src/liblsquic/lsquic_global.c b/external/lsquic/src/liblsquic/lsquic_global.c new file mode 100644 index 0000000..9556842 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_global.c @@ -0,0 +1,31 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * Global state + */ + +#include "lsquic_int_types.h" +#include "lsquic_types.h" +#include "lsquic.h" +#include "lsquic_str.h" +#include "lsquic_enc_sess.h" +#include "lsquic_util.h" + + +int +lsquic_global_init (int flags) +{ + lsquic_init_timers(); + if (0 != lsquic_enc_session_common_gquic_1.esf_global_init(flags)) + return -1; + if (0 != lsquic_enc_session_common_ietf_v1.esf_global_init(flags)) + return -1; + return 0; +} + + +void +lsquic_global_cleanup (void) +{ + lsquic_enc_session_common_gquic_1.esf_global_cleanup(); + lsquic_enc_session_common_ietf_v1.esf_global_cleanup(); +} diff --git a/external/lsquic/src/liblsquic/lsquic_handshake.c b/external/lsquic/src/liblsquic/lsquic_handshake.c new file mode 100644 index 0000000..da2e0d8 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_handshake.c @@ -0,0 +1,4353 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#define _GNU_SOURCE /* for memmem */ + +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#include +#include +#else +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_crypto.h" +#include "lsquic_str.h" +#include "lsquic_enc_sess.h" +#include "lsquic_parse.h" +#include "lsquic_crt_compress.h" +#include "lsquic_util.h" +#include "lsquic_version.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_hash.h" +#include "lsquic_qtags.h" +#include "lsquic_byteswap.h" +#include "lsquic_sizes.h" +#include "lsquic_tokgen.h" +#include "lsquic_conn.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_out.h" +#include "lsquic_packet_in.h" +#include "lsquic_handshake.h" +#include "lsquic_hkdf.h" +#include "lsquic_packet_ietf.h" + +#if __GNUC__ +# define UNLIKELY(cond) __builtin_expect(cond, 0) +#else +# define UNLIKELY(cond) cond +#endif + +#include "fiu-local.h" + +#include "lsquic_ev_log.h" + +#define MIN_CHLO_SIZE 1024 + +#define MAX_SCFG_LENGTH 512 +#define MAX_SPUBS_LENGTH 32 + +#define LSQUIC_LOGGER_MODULE LSQLM_HANDSHAKE +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid( \ + enc_session && enc_session->es_conn ? enc_session->es_conn : \ + lconn && lconn != &dummy_lsquic_conn ? lconn : \ + &dummy_lsquic_conn) +#include "lsquic_logger.h" + +/* enc_session may be NULL when encrypt and decrypt packet functions are + * called. This is a workaround. + */ +static struct conn_cid_elem dummy_cce; +static const struct lsquic_conn dummy_lsquic_conn = { .cn_cces = &dummy_cce, }; +static const struct lsquic_conn *const lconn = &dummy_lsquic_conn; + +static int s_ccrt_idx; + +static const int s_log_seal_and_open; +static char s_str[0x1000]; + +static const unsigned char salt_Q050[] = { + 0x50, 0x45, 0x74, 0xEF, 0xD0, 0x66, 0xFE, 0x2F, 0x9D, 0x94, + 0x5C, 0xFC, 0xDB, 0xD3, 0xA7, 0xF0, 0xD3, 0xB5, 0x6B, 0x45, +}; + +enum handshake_state +{ + HSK_CHLO_REJ = 0, + HSK_SHLO, + HSK_COMPLETED, + N_HSK_STATES +}; + +#if LSQUIC_KEEP_ENC_SESS_HISTORY +typedef unsigned char eshist_idx_t; + +enum enc_sess_history_event +{ + ESHE_EMPTY = '\0', + ESHE_SET_SNI = 'I', + ESHE_SET_SNO = 'O', + ESHE_SET_STK = 'K', + ESHE_SET_SCID = 'D', + ESHE_SET_PROF = 'P', + ESHE_SET_SRST = 'S', + ESHE_VSTK_OK = 'V', + ESHE_VSTK_FAILED = 'W', + ESHE_SNI_FAIL = 'J', + ESHE_HAS_SSTK = 'H', + ESHE_UNKNOWN_CONFIG = 'a', + ESHE_MISSING_SCID = 'b', + ESHE_EMPTY_CCRT = 'c', + ESHE_MISSING_SNO = 'd', + ESHE_SNO_MISMATCH = 'e', + ESHE_SNO_OK = 'f', + ESHE_MULTI2_2BITS = 'i', + ESHE_SNI_DELAYED = 'Y', + ESHE_XLCT_MISMATCH = 'x', +}; +#endif + + +typedef struct hs_ctx_st +{ + enum { + HSET_TCID = (1 << 0), /* tcid is set */ + HSET_SMHL = (1 << 1), /* smhl is set */ + HSET_SCID = (1 << 2), + HSET_IRTT = (1 << 3), + HSET_SRST = (1 << 4), + HSET_XLCT = (1 << 5), /* xlct is set */ + } set; + enum { + HOPT_NSTP = (1 << 0), /* NSTP option present in COPT */ + HOPT_SREJ = (1 << 1), /* SREJ option present in COPT */ + } opts; + uint32_t pdmd; + uint32_t aead; + uint32_t kexs; + + uint32_t mids; + uint32_t scls; + uint32_t cfcw; + uint32_t sfcw; + uint32_t smids; + uint32_t scfcw; + uint32_t ssfcw; + uint32_t icsl; + + uint32_t irtt; + uint64_t rcid; + uint32_t tcid; + uint32_t smhl; + uint64_t sttl; + uint64_t xlct; + unsigned char scid[SCID_LENGTH]; + //unsigned char chlo_hash[32]; //SHA256 HASH of CHLO + unsigned char nonc[DNONC_LENGTH]; /* 4 tm, 8 orbit ---> REJ, 20 rand */ + unsigned char pubs[32]; + unsigned char srst[SRST_LENGTH]; + + uint32_t rrej; + struct lsquic_str ccs; + struct lsquic_str uaid; + struct lsquic_str sni; /* 0 rtt */ + struct lsquic_str ccrt; + struct lsquic_str stk; + struct lsquic_str sno; + struct lsquic_str prof; + + struct lsquic_str csct; + struct compressed_cert *ccert; + struct lsquic_str scfg_pubs; /* Need to copy PUBS, as KEXS comes after it */ +} hs_ctx_t; + + +/* client side need to store 0rtt info per STK */ +typedef struct lsquic_session_cache_info_st +{ + unsigned char sscid[SCID_LENGTH]; + unsigned char spubs[32]; /* server pub key for next time 0rtt */ + uint32_t ver; /* one VERSION */ + uint32_t aead; + uint32_t kexs; + uint32_t pdmd; + uint64_t orbt; + uint64_t expy; + int scfg_flag; /* 0, no-init, 1, no parse, 2, parsed */ + struct lsquic_str sstk; + struct lsquic_str scfg; + struct lsquic_str sni_key; /* This is only used as key */ + struct lsquic_hash_elem hash_el; + +} lsquic_session_cache_info_t; + + +/* client */ +typedef struct c_cert_item_st +{ + struct lsquic_str* crts; + struct lsquic_str* hashs; + int count; +} c_cert_item_t; + + +struct lsquic_sess_resume_storage +{ + uint32_t quic_version_tag; + uint32_t serializer_version; + uint32_t ver; + uint32_t aead; + uint32_t kexs; + uint32_t pdmd; + uint64_t orbt; + uint64_t expy; + uint64_t sstk_len; + uint64_t scfg_len; + uint64_t scfg_flag; + uint8_t sstk[STK_LENGTH]; + uint8_t scfg[MAX_SCFG_LENGTH]; + uint8_t sscid[SCID_LENGTH]; + uint8_t spubs[MAX_SPUBS_LENGTH]; + uint32_t cert_count; +}; + + + + +/* gQUIC crypto has three crypto levels. */ +enum gel { GEL_CLEAR, GEL_EARLY, GEL_FORW, N_GELS /* Angels! */ }; + +#define MAX(a, b) ((a) > (b) ? (a) : (b)) +#define IQUIC_IV_LEN 12 +#define IQUIC_HP_LEN 16 +#define MAX_IV_LEN MAX(aes128_iv_len, IQUIC_IV_LEN) + +struct lsquic_enc_session +{ + struct lsquic_conn *es_conn; + enum handshake_state hsk_state; + enum { + ES_SERVER = 1 << 0, + ES_RECV_REJ = 1 << 1, + ES_RECV_SREJ = 1 << 2, + ES_FREE_CERT_PTR = 1 << 3, + ES_LOG_SECRETS = 1 << 4, + ES_GQUIC2 = 1 << 5, + } es_flags; + + uint8_t have_key; /* 0, no 1, I, 2, D, 3, F */ + uint8_t peer_have_final_key; + uint8_t server_start_use_final_key; + + lsquic_cid_t cid; + unsigned char priv_key[32]; + + /* Have to save the initial key for diversification need */ + unsigned char enc_key_i[aes128_key_len]; + unsigned char dec_key_i[aes128_key_len]; + +#define enc_ctx_i es_aead_ctxs[GEL_EARLY][0] +#define dec_ctx_i es_aead_ctxs[GEL_EARLY][1] +#define enc_ctx_f es_aead_ctxs[GEL_FORW][0] +#define dec_ctx_f es_aead_ctxs[GEL_FORW][1] + EVP_AEAD_CTX *es_aead_ctxs[N_GELS][2]; + +#define enc_key_nonce_i es_ivs[GEL_EARLY][0] +#define dec_key_nonce_i es_ivs[GEL_EARLY][1] +#define enc_key_nonce_f es_ivs[GEL_FORW][0] +#define dec_key_nonce_f es_ivs[GEL_FORW][1] + unsigned char es_ivs[N_GELS][2][MAX_IV_LEN]; + + unsigned char es_hps[N_GELS][2][IQUIC_HP_LEN]; + + hs_ctx_t hs_ctx; + lsquic_session_cache_info_t *info; + c_cert_item_t *cert_item; + lsquic_server_config_t *server_config; + SSL_CTX * ssl_ctx; + struct lsquic_engine_public *enpub; + struct lsquic_str * cert_ptr; /* pointer to the leaf cert of the server, not real copy */ + uint64_t cert_hash; + struct lsquic_str chlo; /* real copy of CHLO message */ + struct lsquic_str sstk; + struct lsquic_str ssno; + +#if LSQUIC_KEEP_ENC_SESS_HISTORY + eshist_idx_t es_hist_idx; + unsigned char es_hist_buf[1 << ESHIST_BITS]; +#endif + /* The remaining fields in the struct are used for Q050+ crypto */ + lsquic_packno_t es_max_packno; +}; + + + +/* server side */ +typedef struct compress_cert_hash_item_st +{ + struct lsquic_str* domain; /*with port, such as "xyz.com:8088" as the key */ + struct lsquic_str* crts_compress_buf; + struct lsquic_hash_elem hash_el; + +} compress_cert_hash_item_t; + +/* server side, only one cert */ +typedef struct cert_item_st +{ + struct lsquic_str* crt; + uint64_t hash; /* Hash of `crt' */ + struct lsquic_hash_elem hash_el; + unsigned char key[0]; +} cert_item_t; + +/* server */ +static cert_item_t* find_cert(struct lsquic_engine_public *, const unsigned char *, size_t); +static void s_free_cert_hash_item(cert_item_t *item); +static cert_item_t* insert_cert(struct lsquic_engine_public *, + const unsigned char *key, size_t key_sz, const struct lsquic_str *crt); + +#ifdef NDEBUG +static +enum hsk_failure_reason +lsquic_verify_stk (enc_session_t *, + const struct sockaddr *ip_addr, uint64_t tm, lsquic_str_t *stk); + +static +#endif +void lsquic_gen_stk(lsquic_server_config_t *, const struct sockaddr *, uint64_t tm, + unsigned char stk_out[STK_LENGTH]); + +/* client */ +static c_cert_item_t *make_c_cert_item(struct lsquic_str **certs, int count); +static void free_c_cert_item(c_cert_item_t *item); + +static int get_tag_val_u32 (unsigned char *v, int len, uint32_t *val); +static uint32_t get_tag_value_i32(unsigned char *, int); +static uint64_t get_tag_value_i64(unsigned char *, int); + +static void determine_keys(struct lsquic_enc_session *enc_session); + +static void put_compressed_cert (struct compressed_cert *); + + +#if LSQUIC_KEEP_ENC_SESS_HISTORY +static void +eshist_append (struct lsquic_enc_session *enc_session, + enum enc_sess_history_event eh_event) +{ + enc_session->es_hist_buf[ + ESHIST_MASK & enc_session->es_hist_idx++ ] = eh_event; +} + + +# define ESHIST_APPEND(sess, event) eshist_append(sess, event) +#else +# define ESHIST_APPEND(sess, event) do { } while (0) +#endif + + +static void +free_compressed_cert (void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int index, long argl, void *argp) +{ + put_compressed_cert(ptr); +} + + +static int +lsquic_handshake_init(int flags) +{ + lsquic_crypto_init(); + if (flags & LSQUIC_GLOBAL_SERVER) + { + s_ccrt_idx = SSL_CTX_get_ex_new_index(0, NULL, NULL, NULL, + free_compressed_cert); + if (s_ccrt_idx < 0) + return -1; + } + return lsquic_crt_init(); +} + + +void +lsquic_cleanup_gquic_crypto (struct lsquic_engine_public *enpub) +{ + struct lsquic_hash_elem *el; + if (enpub->enp_compressed_server_certs) + { + for (el = lsquic_hash_first(enpub->enp_compressed_server_certs); el; + el = lsquic_hash_next(enpub->enp_compressed_server_certs)) + { + compress_cert_hash_item_t *item = lsquic_hashelem_getdata(el); + lsquic_str_delete(item->domain); + lsquic_str_delete(item->crts_compress_buf); + free(item); + } + lsquic_hash_destroy(enpub->enp_compressed_server_certs); + enpub->enp_compressed_server_certs = NULL; + } + + if (enpub->enp_server_certs) + { + for (el = lsquic_hash_first(enpub->enp_server_certs); el; + el = lsquic_hash_next(enpub->enp_server_certs)) + { + s_free_cert_hash_item( lsquic_hashelem_getdata(el) ); + } + lsquic_hash_destroy(enpub->enp_server_certs); + enpub->enp_server_certs = NULL; + } + + free(enpub->enp_server_config); +} + + +static void +lsquic_handshake_cleanup (void) +{ + lsquic_crt_cleanup(); +} + + +int +lsquic_init_gquic_crypto (struct lsquic_engine_public *enpub) +{ + enpub->enp_server_config = calloc(1, sizeof(*enpub->enp_server_config)); + if (!enpub->enp_server_config) + return -1; + + enpub->enp_compressed_server_certs = lsquic_hash_create(); + if (!enpub->enp_compressed_server_certs) + return -1; + + enpub->enp_server_certs = lsquic_hash_create(); + if (!enpub->enp_server_certs) + { + lsquic_hash_destroy(enpub->enp_compressed_server_certs); + enpub->enp_compressed_server_certs = NULL; + return -1; + } + + return 0; +} + + +/* server */ +static cert_item_t * +find_cert (struct lsquic_engine_public *enpub, const unsigned char *key, + size_t key_sz) +{ + struct lsquic_hash_elem *el; + + if (!enpub->enp_server_certs) + return NULL; + + el = lsquic_hash_find(enpub->enp_server_certs, key, key_sz); + if (el == NULL) + return NULL; + + return lsquic_hashelem_getdata(el); +} + + +/* client */ +static c_cert_item_t * +make_c_cert_item (lsquic_str_t **certs, int count) +{ + int i; + uint64_t hash; + c_cert_item_t *item = calloc(1, sizeof(*item)); + item->crts = (lsquic_str_t *)malloc(count * sizeof(lsquic_str_t)); + item->hashs = lsquic_str_new(NULL, 0); + item->count = count; + for (i = 0; i < count; ++i) + { + lsquic_str_copy(&item->crts[i], certs[i]); + hash = lsquic_fnv1a_64((const uint8_t *)lsquic_str_cstr(certs[i]), + lsquic_str_len(certs[i])); + lsquic_str_append(item->hashs, (char *)&hash, 8); + } + return item; +} + + +/* client */ +static void +free_c_cert_item (c_cert_item_t *item) +{ + int i; + if (item) + { + lsquic_str_delete(item->hashs); + for(i=0; icount; ++i) + lsquic_str_d(&item->crts[i]); + free(item->crts); + free(item); + } +} + + +/* server */ +static void +s_free_cert_hash_item (cert_item_t *item) +{ + if (item) + { + lsquic_str_delete(item->crt); + free(item); + } +} + + +/* server */ +static cert_item_t * +insert_cert (struct lsquic_engine_public *enpub, const unsigned char *key, + size_t key_sz, const lsquic_str_t *crt) +{ + struct lsquic_hash_elem *el; + lsquic_str_t *crt_copy; + cert_item_t *item; + + crt_copy = lsquic_str_new(lsquic_str_cstr(crt), lsquic_str_len(crt)); + if (!crt_copy) + return NULL; + + item = calloc(1, sizeof(*item) + key_sz); + if (!item) + { + lsquic_str_delete(crt_copy); + return NULL; + } + + item->crt = crt_copy; + memcpy(item->key, key, key_sz); + item->hash = lsquic_fnv1a_64((const uint8_t *)lsquic_str_buf(crt), + lsquic_str_len(crt)); + el = lsquic_hash_insert(enpub->enp_server_certs, item->key, key_sz, + item, &item->hash_el); + if (el) + return lsquic_hashelem_getdata(el); + else + { + s_free_cert_hash_item(item); + return NULL; + } +} + + +enum rtt_deserialize_return_type +{ + RTT_DESERIALIZE_OK = 0, + RTT_DESERIALIZE_BAD_QUIC_VER = 1, + RTT_DESERIALIZE_BAD_SERIAL_VER = 2, + RTT_DESERIALIZE_BAD_CERT_SIZE = 3, +}; + +#define RTT_SERIALIZER_VERSION (1 << 0) + +static void +lsquic_enc_session_serialize_sess_resume(struct lsquic_sess_resume_storage *storage, + enum lsquic_version version, + const lsquic_session_cache_info_t *info, + const c_cert_item_t *cert_item) +{ + uint32_t i; + uint32_t *cert_len; + uint8_t *cert_data; + /* + * assign versions + */ + storage->quic_version_tag = lsquic_ver2tag(version); + storage->serializer_version = RTT_SERIALIZER_VERSION; + /* + * server config + */ + storage->ver = info->ver; + storage->aead = info->aead; + storage->kexs = info->kexs; + storage->pdmd = info->pdmd; + storage->orbt = info->orbt; + storage->expy = info->expy; + storage->sstk_len = lsquic_str_len(&info->sstk); + storage->scfg_len = lsquic_str_len(&info->scfg); + storage->scfg_flag = info->scfg_flag; + memcpy(storage->sstk, lsquic_str_buf(&info->sstk), storage->sstk_len); + memcpy(storage->scfg, lsquic_str_buf(&info->scfg), storage->scfg_len); + memcpy(storage->sscid, &info->sscid, SCID_LENGTH); + memcpy(storage->spubs, &info->spubs, MAX_SPUBS_LENGTH); + /* + * certificate chain + */ + storage->cert_count = (uint32_t)cert_item->count; + cert_len = (uint32_t *)(storage + 1); + cert_data = (uint8_t *)(cert_len + 1); + for (i = 0; i < storage->cert_count; i++) + { + *cert_len = lsquic_str_len(&cert_item->crts[i]); + memcpy(cert_data, lsquic_str_buf(&cert_item->crts[i]), *cert_len); + cert_len = (uint32_t *)(cert_data + *cert_len); + cert_data = (uint8_t *)(cert_len + 1); + } +} + + +#define CHECK_SPACE(need, start, end) \ + do { if ((intptr_t) (need) > ((intptr_t) (end) - (intptr_t) (start))) \ + { return RTT_DESERIALIZE_BAD_CERT_SIZE; } \ + } while (0) \ + +static enum rtt_deserialize_return_type +lsquic_enc_session_deserialize_sess_resume( + const struct lsquic_sess_resume_storage *storage, + size_t storage_size, + const struct lsquic_engine_settings *settings, + lsquic_session_cache_info_t *info, + c_cert_item_t *cert_item) +{ + enum lsquic_version ver; + uint32_t i, len; + uint64_t hash; + uint32_t *cert_len; + uint8_t *cert_data; + void *storage_end = (uint8_t *)storage + storage_size; + /* + * check versions + */ + ver = lsquic_tag2ver(storage->quic_version_tag); + if ((int)ver == -1 || !((1 << ver) & settings->es_versions)) + return RTT_DESERIALIZE_BAD_QUIC_VER; + if (storage->serializer_version != RTT_SERIALIZER_VERSION) + return RTT_DESERIALIZE_BAD_SERIAL_VER; + /* + * server config + */ + info->ver = storage->ver; + info->aead = storage->aead; + info->kexs = storage->kexs; + info->pdmd = storage->pdmd; + info->orbt = storage->orbt; + info->expy = storage->expy; + info->scfg_flag = storage->scfg_flag; + lsquic_str_setto(&info->sstk, storage->sstk, storage->sstk_len); + lsquic_str_setto(&info->scfg, storage->scfg, storage->scfg_len); + memcpy(&info->sscid, storage->sscid, SCID_LENGTH); + memcpy(&info->spubs, storage->spubs, MAX_SPUBS_LENGTH); + /* + * certificate chain + */ + cert_item->count = storage->cert_count; + cert_item->crts = malloc(cert_item->count * sizeof(lsquic_str_t)); + cert_item->hashs = lsquic_str_new(NULL, 0); + cert_len = (uint32_t *)(storage + 1); + for (i = 0; i < storage->cert_count; i++) + { + CHECK_SPACE(sizeof(uint32_t), cert_len, storage_end); + cert_data = (uint8_t *)(cert_len + 1); + memcpy(&len, cert_len, sizeof(len)); + CHECK_SPACE(len, cert_data, storage_end); + lsquic_str_prealloc(&cert_item->crts[i], len); + lsquic_str_setlen(&cert_item->crts[i], len); + memcpy(lsquic_str_buf(&cert_item->crts[i]), cert_data, len); + hash = lsquic_fnv1a_64((const uint8_t *)cert_data, len); + lsquic_str_append(cert_item->hashs, (char *)&hash, 8); + cert_len = (uint32_t *)(cert_data + len); + } + return RTT_DESERIALIZE_OK; +} + + +#define KEY_LABEL "quic key" +#define KEY_LABEL_SZ (sizeof(KEY_LABEL) - 1) +#define IV_LABEL "quic iv" +#define IV_LABEL_SZ (sizeof(IV_LABEL) - 1) +#define PN_LABEL "quic hp" +#define PN_LABEL_SZ (sizeof(PN_LABEL) - 1) + + +static int +gquic2_init_crypto_ctx (struct lsquic_enc_session *enc_session, + unsigned idx, const unsigned char *secret, size_t secret_sz) +{ + const EVP_MD *const md = EVP_sha256(); + const EVP_AEAD *const aead = EVP_aead_aes_128_gcm(); + unsigned char key[aes128_key_len]; + char hexbuf[sizeof(key) * 2 + 1]; + + lsquic_qhkdf_expand(md, secret, secret_sz, KEY_LABEL, KEY_LABEL_SZ, + key, sizeof(key)); + if (enc_session->es_flags & ES_LOG_SECRETS) + LSQ_DEBUG("handshake key idx %u: %s", idx, + HEXSTR(key, sizeof(key), hexbuf)); + lsquic_qhkdf_expand(md, secret, secret_sz, IV_LABEL, IV_LABEL_SZ, + enc_session->es_ivs[GEL_CLEAR][idx], IQUIC_IV_LEN); + lsquic_qhkdf_expand(md, secret, secret_sz, PN_LABEL, PN_LABEL_SZ, + enc_session->es_hps[GEL_CLEAR][idx], IQUIC_HP_LEN); + assert(!enc_session->es_aead_ctxs[GEL_CLEAR][idx]); + enc_session->es_aead_ctxs[GEL_CLEAR][idx] + = malloc(sizeof(*enc_session->es_aead_ctxs[GEL_CLEAR][idx])); + if (!enc_session->es_aead_ctxs[GEL_CLEAR][idx]) + return -1; + if (!EVP_AEAD_CTX_init(enc_session->es_aead_ctxs[GEL_CLEAR][idx], aead, + key, sizeof(key), IQUIC_TAG_LEN, NULL)) + { + free(enc_session->es_aead_ctxs[GEL_CLEAR][idx]); + enc_session->es_aead_ctxs[GEL_CLEAR][idx] = NULL; + return -1; + } + return 0; +} + + +static void +log_crypto_ctx (const struct lsquic_enc_session *enc_session, + enum enc_level enc_level, int idx) +{ + char hexbuf[EVP_MAX_MD_SIZE * 2 + 1]; + + LSQ_DEBUG("%s keys for level %s", lsquic_enclev2str[enc_level], + idx == 0 ? "encrypt" : "decrypt"); + LSQ_DEBUG("iv: %s", + HEXSTR(enc_session->es_ivs[enc_level][idx], IQUIC_IV_LEN, hexbuf)); + LSQ_DEBUG("hp: %s", + HEXSTR(enc_session->es_hps[enc_level][idx], IQUIC_HP_LEN, hexbuf)); +} + + +static int +gquic2_setup_handshake_keys (struct lsquic_enc_session *enc_session) +{ + const unsigned char *const cid_buf = enc_session->es_conn->cn_cid.idbuf; + const size_t cid_buf_sz = enc_session->es_conn->cn_cid.len; + size_t hsk_secret_sz; + int i, idx; + const EVP_MD *const md = EVP_sha256(); + const char *const labels[] = { CLIENT_LABEL, SERVER_LABEL, }; + const size_t label_sizes[] = { CLIENT_LABEL_SZ, SERVER_LABEL_SZ, }; + const unsigned dirs[2] = { + (enc_session->es_flags & ES_SERVER), + !(enc_session->es_flags & ES_SERVER), + }; + unsigned char hsk_secret[EVP_MAX_MD_SIZE]; + unsigned char secret[SHA256_DIGEST_LENGTH]; + + if (!HKDF_extract(hsk_secret, &hsk_secret_sz, md, cid_buf, cid_buf_sz, + salt_Q050, sizeof(salt_Q050))) + { + LSQ_WARN("HKDF extract failed"); + return -1; + } + + for (i = 0; i < 2; ++i) + { + idx = dirs[i]; + lsquic_qhkdf_expand(md, hsk_secret, hsk_secret_sz, labels[idx], + label_sizes[idx], secret, sizeof(secret)); + /* + LSQ_DEBUG("`%s' handshake secret: %s", + HEXSTR(secret, sizeof(secret), hexbuf)); + */ + if (0 != gquic2_init_crypto_ctx(enc_session, i, + secret, sizeof(secret))) + goto err; + if (enc_session->es_flags & ES_LOG_SECRETS) + log_crypto_ctx(enc_session, ENC_LEV_INIT, i); + } + + return 0; + + err: + return -1; +} + + +static void +maybe_log_secrets (struct lsquic_enc_session *enc_session) +{ + const char *log; + log = getenv("LSQUIC_LOG_SECRETS"); + if (log) + { + if (atoi(log)) + enc_session->es_flags |= ES_LOG_SECRETS; + LSQ_DEBUG("will %slog secrets", + enc_session->es_flags & ES_LOG_SECRETS ? "" : "not "); + } +} + + +static enc_session_t * +lsquic_enc_session_create_client (struct lsquic_conn *lconn, const char *domain, + lsquic_cid_t cid, struct lsquic_engine_public *enpub, + const unsigned char *sess_resume, size_t sess_resume_len) +{ + lsquic_session_cache_info_t *info; + struct lsquic_enc_session *enc_session; + c_cert_item_t *item; + const struct lsquic_sess_resume_storage *sess_resume_storage; + + if (!domain) + { + errno = EINVAL; + return NULL; + } + + enc_session = calloc(1, sizeof(*enc_session)); + if (!enc_session) + return NULL; + + /* have to allocate every time */ + info = calloc(1, sizeof(*info)); + if (!info) + { + free(enc_session); + return NULL; + } + + if (sess_resume && sess_resume_len > sizeof(struct lsquic_sess_resume_storage)) + { + item = calloc(1, sizeof(*item)); + if (!item) + { + free(enc_session); + free(info); + return NULL; + } + sess_resume_storage = (const struct lsquic_sess_resume_storage *)sess_resume; + switch (lsquic_enc_session_deserialize_sess_resume(sess_resume_storage, + sess_resume_len, + &enpub->enp_settings, + info, item)) + { + case RTT_DESERIALIZE_BAD_QUIC_VER: + LSQ_ERROR("provided sess_resume has unsupported QUIC version"); + free(item); + break; + case RTT_DESERIALIZE_BAD_SERIAL_VER: + LSQ_ERROR("provided sess_resume has bad serializer version"); + free(item); + break; + case RTT_DESERIALIZE_BAD_CERT_SIZE: + LSQ_ERROR("provided sess_resume has bad cert size"); + free_c_cert_item(item); + break; + case RTT_DESERIALIZE_OK: + memcpy(enc_session->hs_ctx.pubs, info->spubs, 32); + enc_session->cert_item = item; + break; + } + } + enc_session->es_conn = lconn; + enc_session->enpub = enpub; + enc_session->cid = cid; + enc_session->info = info; + /* FIXME: allocation may fail */ + lsquic_str_append(&enc_session->hs_ctx.sni, domain, strlen(domain)); + maybe_log_secrets(enc_session); + if (lconn->cn_version >= LSQVER_050) + { + enc_session->es_flags |= ES_GQUIC2; + gquic2_setup_handshake_keys(enc_session); + } + return enc_session; +} + + +/* Server side: Session_cache_entry can be saved for 0rtt */ +static enc_session_t * +lsquic_enc_session_create_server (struct lsquic_conn *lconn, lsquic_cid_t cid, + struct lsquic_engine_public *enpub) +{ + fiu_return_on("handshake/new_enc_session", NULL); + + struct lsquic_enc_session *enc_session; + + enc_session = calloc(1, sizeof(*enc_session)); + if (!enc_session) + return NULL; + + enc_session->es_conn = lconn; + enc_session->enpub = enpub; + enc_session->cid = cid; + enc_session->es_flags |= ES_SERVER; + maybe_log_secrets(enc_session); + if (lconn->cn_version >= LSQVER_050) + { + enc_session->es_flags |= ES_GQUIC2; + gquic2_setup_handshake_keys(enc_session); + } + return enc_session; +} + + +static void +lsquic_enc_session_reset_cid (enc_session_t *enc_session_p, + const lsquic_cid_t *new_cid) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + + LSQ_INFOC("changing CID to %"CID_FMT, CID_BITS(new_cid)); + enc_session->cid = *new_cid; +} + + +static void +put_compressed_cert (struct compressed_cert *ccert) +{ + if (ccert) + { + assert(ccert->refcnt > 0); + --ccert->refcnt; + if (0 == ccert->refcnt) + free(ccert); + } +} + + +static struct compressed_cert * +new_compressed_cert (const unsigned char *buf, size_t len) +{ + struct compressed_cert *ccert; + + ccert = malloc(sizeof(*ccert) + len); + if (ccert) + { + ccert->refcnt = 1; + ccert->len = len; + memcpy(ccert->buf, buf, len); + } + return ccert; +} + + +static void +lsquic_enc_session_destroy (enc_session_t *enc_session_p) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + enum gel gel; + unsigned i; + + if (!enc_session) + return ; + + hs_ctx_t *hs_ctx = &enc_session->hs_ctx; + + lsquic_str_d(&hs_ctx->sni); + lsquic_str_d(&hs_ctx->ccs); + lsquic_str_d(&hs_ctx->ccrt); + lsquic_str_d(&hs_ctx->stk); + lsquic_str_d(&hs_ctx->sno); + lsquic_str_d(&hs_ctx->prof); + lsquic_str_d(&hs_ctx->csct); + put_compressed_cert(hs_ctx->ccert); + hs_ctx->ccert = NULL; + lsquic_str_d(&hs_ctx->uaid); + lsquic_str_d(&hs_ctx->scfg_pubs); + lsquic_str_d(&enc_session->chlo); + lsquic_str_d(&enc_session->sstk); + lsquic_str_d(&enc_session->ssno); + for (gel = 0; gel < N_GELS; ++gel) + for (i = 0; i < 2; ++i) + if (enc_session->es_aead_ctxs[gel][i]) + { + EVP_AEAD_CTX_cleanup(enc_session->es_aead_ctxs[gel][i]); + free(enc_session->es_aead_ctxs[gel][i]); + } + memset(enc_session->es_aead_ctxs, 0, sizeof(enc_session->es_aead_ctxs)); + if (enc_session->info) + { + lsquic_str_d(&enc_session->info->sstk); + lsquic_str_d(&enc_session->info->scfg); + lsquic_str_d(&enc_session->info->sni_key); + free(enc_session->info); + } + if (enc_session->cert_item) + { + free_c_cert_item(enc_session->cert_item); + enc_session->cert_item = NULL; + } + if ((enc_session->es_flags & ES_FREE_CERT_PTR) && enc_session->cert_ptr) + lsquic_str_delete(enc_session->cert_ptr); + free(enc_session); + +} + + +static int get_hs_state(struct lsquic_enc_session *enc_session) +{ + return enc_session->hsk_state; +} + + +/* make sure have more room for encrypt */ +static int +lsquic_enc_session_is_hsk_done (enc_session_t *enc_session_p) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + return (get_hs_state(enc_session) == HSK_COMPLETED); +} + + +static void +process_copt (struct lsquic_enc_session *enc_session, const uint32_t *const opts, + unsigned n_opts) +{ + unsigned i; + for (i = 0; i < n_opts; ++i) + switch (opts[i]) + { + case QTAG_NSTP: + enc_session->hs_ctx.opts |= HOPT_NSTP; + break; + case QTAG_SREJ: + enc_session->hs_ctx.opts |= HOPT_SREJ; + break; + } +} + + +static int parse_hs_data (struct lsquic_enc_session *enc_session, uint32_t tag, + unsigned char *val, int len, uint32_t head_tag) +{ + hs_ctx_t * hs_ctx = &enc_session->hs_ctx; + int is_client = (head_tag != QTAG_CHLO); + + switch(tag) + { + case QTAG_PDMD: + hs_ctx->pdmd = get_tag_value_i32(val, len); + break; + + case QTAG_MIDS: + if (0 != get_tag_val_u32(val, len, + (is_client ? &hs_ctx->mids : &hs_ctx->smids))) + return -1; + break; + + case QTAG_SCLS: + hs_ctx->scls = get_tag_value_i32(val, len); + break; + + case QTAG_CFCW: + if (0 != get_tag_val_u32(val, len, (is_client ? &hs_ctx->cfcw : &hs_ctx->scfcw))) + return -1; + break; + + case QTAG_SFCW: + if (0 != get_tag_val_u32(val, len, (is_client ? &hs_ctx->sfcw : &hs_ctx->ssfcw))) + return -1; + break; + + case QTAG_ICSL: + hs_ctx->icsl = get_tag_value_i32(val, len); + break; + + case QTAG_IRTT: + if (0 != get_tag_val_u32(val, len, &hs_ctx->irtt)) + return -1; + hs_ctx->set |= HSET_IRTT; + break; + + case QTAG_COPT: + if (0 == len % sizeof(uint32_t)) + process_copt(enc_session, (uint32_t *) val, len / sizeof(uint32_t)); + /* else ignore, following the reference implementation */ + break; + + case QTAG_SNI: + lsquic_str_setto(&hs_ctx->sni, val, len); + ESHIST_APPEND(enc_session, ESHE_SET_SNI); + break; + + case QTAG_CCS: + lsquic_str_setto(&hs_ctx->ccs, val, len); + break; + + case QTAG_CCRT: + lsquic_str_setto(&hs_ctx->ccrt, val, len); + break; + + case QTAG_CRT: + put_compressed_cert(hs_ctx->ccert); + hs_ctx->ccert = new_compressed_cert(val, len); + break; + + case QTAG_PUBS: + if (head_tag == QTAG_SCFG) + lsquic_str_setto(&hs_ctx->scfg_pubs, val, len); + else if (len == 32) + memcpy(hs_ctx->pubs, val, len); + break; + + case QTAG_RCID: + hs_ctx->rcid = get_tag_value_i64(val, len); + break; + + case QTAG_UAID: + lsquic_str_setto(&hs_ctx->uaid, val, len); + break; + + case QTAG_SMHL: + if (0 != get_tag_val_u32(val, len, &hs_ctx->smhl)) + return -1; + hs_ctx->set |= HSET_SMHL; + break; + + case QTAG_TCID: + if (0 != get_tag_val_u32(val, len, &hs_ctx->tcid)) + return -1; + hs_ctx->set |= HSET_TCID; + break; + + case QTAG_EXPY: + enc_session->info->expy = get_tag_value_i64(val, len); + break; + + case QTAG_ORBT: + enc_session->info->orbt = get_tag_value_i64(val, len); + break; + + case QTAG_SNO: + if (is_client) + { + lsquic_str_setto(&enc_session->ssno, val, len); + } + else + { + /* Server side save a copy of SNO just for verify */ + lsquic_str_setto(&hs_ctx->sno, val, len); + } + ESHIST_APPEND(enc_session, ESHE_SET_SNO); + break; + + case QTAG_STK: + if (is_client) + { + lsquic_str_setto(&enc_session->info->sstk, val, len); + } + else + { + /* Server need to save a copy to verify */ + lsquic_str_setto(&hs_ctx->stk, val, len); + } + ESHIST_APPEND(enc_session, ESHE_SET_STK); + break; + + case QTAG_SCID: + if (len < SCID_LENGTH) + return -1; + if (is_client) + { + memcpy(enc_session->info->sscid, val, SCID_LENGTH); + } + else + { + memcpy(hs_ctx->scid, val, SCID_LENGTH); + hs_ctx->set |= HSET_SCID; + } + ESHIST_APPEND(enc_session, ESHE_SET_SCID); + break; + + case QTAG_AEAD: + if (is_client) + enc_session->info->aead = get_tag_value_i32(val, len); + else + hs_ctx->aead = get_tag_value_i32(val, len); + break; + + case QTAG_KEXS: + if (is_client) + { + if (head_tag == QTAG_SCFG && 0 == len % 4) + { + const unsigned char *p, *end; + unsigned pub_idx, idx; +#ifdef WIN32 + pub_idx = 0; +#endif + + for (p = val; p < val + len; p += 4) + if (0 == memcmp(p, "C255", 4)) + { + memcpy(&enc_session->info->kexs, p, 4); + pub_idx = (p - val) / 4; + LSQ_DEBUG("Parsing SCFG: supported KEXS C255 at " + "index %u", pub_idx); + break; + } + if (p >= val + len) + { + LSQ_INFO("supported KEXS not found, trouble ahead"); + break; + } + if (lsquic_str_len(&hs_ctx->scfg_pubs) > 0) + { + p = (const unsigned char *) + lsquic_str_cstr(&hs_ctx->scfg_pubs); + end = p + lsquic_str_len(&hs_ctx->scfg_pubs); + + for (idx = 0; p < end; ++idx) + { + uint32_t sz = 0; + if (p + 3 > end) + break; + sz |= *p++; + sz |= *p++ << 8; + sz |= *p++ << 16; + if (p + sz > end) + break; + if (idx == pub_idx) + { + if (sz == 32) + { + memcpy(hs_ctx->pubs, p, 32); + memcpy(enc_session->info->spubs, p, 32); + } + break; + } + p += sz; + } + } + else + LSQ_INFO("No PUBS from SCFG to parse"); + } + } + else + hs_ctx->kexs = get_tag_value_i32(val, len); + break; + + case QTAG_NONC: + if (len != sizeof(hs_ctx->nonc)) + return -1; + memcpy(hs_ctx->nonc, val, len); + break; + + case QTAG_SCFG: + if (is_client) + { + lsquic_str_setto(&enc_session->info->scfg, val, len); + enc_session->info->scfg_flag = 1; + } + else + LSQ_INFO("unexpected SCFG"); + break; + + case QTAG_PROF: + lsquic_str_setto(&hs_ctx->prof, val, len); + ESHIST_APPEND(enc_session, ESHE_SET_PROF); + break; + + case QTAG_STTL: + hs_ctx->sttl = get_tag_value_i64(val, len); + break; + + case QTAG_SRST: + if (enc_session->es_flags & ES_SERVER) + break; + if (len != sizeof(hs_ctx->srst)) + { + LSQ_INFO("Unexpected size of SRST: %u instead of %zu bytes", + len, sizeof(hs_ctx->srst)); + return -1; + } + memcpy(hs_ctx->srst, val, len); + hs_ctx->set |= HSET_SRST; + ESHIST_APPEND(enc_session, ESHE_SET_SRST); + break; + + case QTAG_XLCT: + if (len != sizeof(hs_ctx->xlct)) + { + LSQ_INFO("Unexpected size of XLCT: %u instead of %zu bytes", + len, sizeof(hs_ctx->xlct)); + return -1; + } + hs_ctx->set |= HSET_XLCT; + hs_ctx->xlct = get_tag_value_i64(val, len); + break; + + default: + LSQ_DEBUG("Ignored tag '%.*s'", 4, (char *)&tag); + break; + } + + return 0; +} + + +/* only for the hs stream-frame data, NOT with the packet header or frame header*/ +static enum handshake_error parse_hs (struct lsquic_enc_session *enc_session, + const unsigned char *buf, int buf_len, + uint32_t *head_tag) +{ + uint16_t i; + const unsigned char *p = buf; + const unsigned char *pend = buf + buf_len; + + unsigned char *data; + uint32_t len = 0, offset = 0; + uint16_t num; + uint32_t tag; + if (buf_len < 6) + return DATA_FORMAT_ERROR; + + memcpy(&tag, p, 4); + p += 4; + + if (enc_session->es_flags & ES_SERVER) + { /* Server only expects to receive CHLO messages from the client */ + if (tag != QTAG_CHLO) + return DATA_FORMAT_ERROR; + } + else + { + if (tag != QTAG_SREJ && tag != QTAG_REJ && tag != QTAG_SHLO && + tag != QTAG_SCFG) + return DATA_FORMAT_ERROR; + } + + *head_tag = tag; + + memcpy((char *)&num, p, 2); + p += 2 + 2; /* the 2 bytes padding 0x0000 need to be bypassed */ + + if (num < 1) + return DATA_FORMAT_ERROR; + + data = (uint8_t *)(buf + 4 * 2 * (1 + num)); + if ((const char *)data > (const char *)pend) + { + LSQ_DEBUG("parse_hs tag '%.*s' error: data not enough", 4, (char *)head_tag); + return DATA_NOT_ENOUGH; + } + + /* check last offset */ + memcpy((char *)&len, data - 4, 4); + if ((const char *)data + len > (const char *)pend) + { + LSQ_DEBUG("parse_hs tag '%.*s' error: data not enough!!!", 4, (char *)head_tag); + return DATA_NOT_ENOUGH; + } + + for (i=0; i (const char *)pend) + return DATA_FORMAT_ERROR; + + if (0 != parse_hs_data(enc_session, tag, data + offset, len, + *head_tag)) + return DATA_FORMAT_ERROR; + offset += len; + } + + LSQ_DEBUG("parse_hs tag '%.*s' no error.", 4, (char *)head_tag); + return DATA_NO_ERROR; +} + + +static uint32_t get_tag_value_i32(unsigned char *val, int len) +{ + uint32_t v; + if (len < 4) + return 0; + memcpy(&v, val, 4); + return v; +} + + +static uint64_t get_tag_value_i64(unsigned char *val, int len) +{ + uint64_t v; + if (len < 8) + return 0; + memcpy(&v, val, 8); + return v; +} + + +static int +get_tag_val_u32 (unsigned char *v, int len, uint32_t *val) +{ + if (len != 4) + return -1; + memcpy(val, v, 4); + return 0; +} + + +/* From "QUIC Crypto" for easy reference: + * + * A handshake message consists of: + * - The tag of the message. + * - A uint16 containing the number of tag-value pairs. + * - Two bytes of padding which should be zero when sent but ignored when + * received. + * - A series of uint32 tags and uint32 end offsets, one for each + * tag-value pair. The tags must be strictly monotonically + * increasing, and the end-offsets must be monotonic non-decreasing. + * The end offset gives the offset, from the start of the value + * data, to a byte one beyond the end of the data for that tag. + * (Thus the end offset of the last tag contains the length of the + * value data). + * - The value data, concatenated without padding. + */ + +struct table_entry { uint32_t tag, off; }; + +struct message_writer +{ + unsigned char *mw_p; + struct table_entry mw_first_dummy_entry; + struct table_entry *mw_entry, + *mw_prev_entry, + *mw_end; +}; + +/* MW_ family of macros is used to write entries to handshake message + * (MW stands for "message writer"). + */ +#define MW_BEGIN(mw, msg_tag, n_entries, data_ptr) do { \ + uint32_t t_ = msg_tag; \ + uint16_t n_ = n_entries; \ + memcpy(data_ptr, &t_, 4); \ + memcpy(data_ptr + 4, &n_, 2); \ + memset(data_ptr + 4 + 2, 0, 2); \ + (mw)->mw_entry = (void *) (data_ptr + 8); \ + (mw)->mw_p = data_ptr + 8 + \ + (n_entries) * sizeof((mw)->mw_entry[0]); \ + (mw)->mw_first_dummy_entry.tag = 0; \ + (mw)->mw_first_dummy_entry.off = 0; \ + (mw)->mw_prev_entry = &(mw)->mw_first_dummy_entry; \ + (mw)->mw_end = (void *) (mw)->mw_p; \ +} while (0) + +#ifndef NDEBUG +# define MW_END(mw) do { \ + assert((mw)->mw_entry == (mw)->mw_end); \ + } while (0) +#else +# define MW_END(mw) +#endif + +#define MW_P(mw) ((mw)->mw_p) + +#define MW_ADVANCE_P(mw, n) do { \ + MW_P(mw) += (n); \ +} while (0) + +#define MW_WRITE_TABLE_ENTRY(mw, tag_, sz) do { \ + assert((mw)->mw_prev_entry->tag < (tag_)); \ + assert((mw)->mw_entry < (mw)->mw_end); \ + (mw)->mw_entry->tag = (tag_); \ + (mw)->mw_entry->off = (mw)->mw_prev_entry->off + (sz); \ + (mw)->mw_prev_entry = (mw)->mw_entry; \ + ++(mw)->mw_entry; \ +} while (0) + +#define MW_WRITE_BUFFER(mw, tag, buf, sz) do { \ + MW_WRITE_TABLE_ENTRY(mw, tag, sz); \ + memcpy(MW_P(mw), buf, sz); \ + MW_ADVANCE_P(mw, sz); \ +} while (0) + +#define MW_WRITE_LS_STR(mw, tag, s) \ + MW_WRITE_BUFFER(mw, tag, lsquic_str_buf(s), lsquic_str_len(s)) + +#define MW_WRITE_UINT32(mw, tag, val) do { \ + uint32_t v_ = (val); \ + MW_WRITE_BUFFER(mw, tag, &v_, sizeof(v_)); \ +} while (0) + +#define MW_WRITE_UINT64(mw, tag, val) do { \ + uint64_t v_ = (val); \ + MW_WRITE_BUFFER(mw, tag, &v_, sizeof(v_)); \ +} while (0) + + +/* MSG_LEN_ family of macros calculates buffer size required for a + * handshake message. + */ +#define MSG_LEN_INIT(len) do { \ + len = 4 /* Tag */ + 2 /* # tags */ + 2 /* Two zero bytes */; \ +} while (0) + +#define MSG_LEN_ADD(len, payload_sz) do { \ + len += 4 + 4 + (payload_sz); \ +} while (0) + +#define MSG_LEN_VAL(len) (+(len)) + + +static int +lsquic_enc_session_gen_chlo (enc_session_t *enc_session_p, + enum lsquic_version version, uint8_t *buf, size_t *len) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + int include_pad; + const lsquic_str_t *const ccs = lsquic_get_common_certs_hash(); + const struct lsquic_engine_settings *const settings = + &enc_session->enpub->enp_settings; + c_cert_item_t *const cert_item = enc_session->cert_item; + unsigned char pub_key[32]; + size_t ua_len; + uint32_t opts[1]; /* Only NSTP is supported for now */ + unsigned n_opts, msg_len, n_tags, pad_size; + struct message_writer mw; + + /* Before we do anything else, sanity check: */ + if (*len < MIN_CHLO_SIZE) + return -1; + + n_opts = 0; + /* CHLO is not regenerated during version negotiation. Hence we always + * include this option to cover the case when Q044 or Q046 gets negotiated + * down. + */ + if (settings->es_support_nstp) + opts[ n_opts++ ] = QTAG_NSTP; + + /* Count tags and calculate required buffer size: */ + MSG_LEN_INIT(msg_len); n_tags = 0; + MSG_LEN_ADD(msg_len, 4); ++n_tags; /* PDMD */ + MSG_LEN_ADD(msg_len, 4); ++n_tags; /* AEAD */ + MSG_LEN_ADD(msg_len, 4); ++n_tags; /* VER */ + MSG_LEN_ADD(msg_len, 4); ++n_tags; /* MIDS */ + MSG_LEN_ADD(msg_len, 4); ++n_tags; /* SCLS */ + MSG_LEN_ADD(msg_len, 4); ++n_tags; /* CFCW */ + MSG_LEN_ADD(msg_len, 4); ++n_tags; /* SFCW */ + MSG_LEN_ADD(msg_len, 4); ++n_tags; /* ICSL */ + MSG_LEN_ADD(msg_len, 4); ++n_tags; /* SMHL */ + MSG_LEN_ADD(msg_len, 4); ++n_tags; /* KEXS */ + MSG_LEN_ADD(msg_len, 0); ++n_tags; /* CSCT */ + if (n_opts > 0) + { + MSG_LEN_ADD(msg_len, sizeof(opts[0]) * n_opts); + ++n_tags; /* COPT */ + } + if (settings->es_ua) + { + ua_len = strlen(settings->es_ua); + if (ua_len > 0) + { + MSG_LEN_ADD(msg_len, ua_len); ++n_tags; /* UAID */ + } + } + else + ua_len = 0; + if (settings->es_support_tcid0) + { + MSG_LEN_ADD(msg_len, 4); ++n_tags; /* TCID */ + } + MSG_LEN_ADD(msg_len, lsquic_str_len(&enc_session->hs_ctx.sni)); + ++n_tags; /* SNI */ + MSG_LEN_ADD(msg_len, lsquic_str_len(ccs)); ++n_tags; /* CCS */ + if (cert_item) + { + enc_session->cert_ptr = &cert_item->crts[0]; + MSG_LEN_ADD(msg_len, lsquic_str_len(cert_item->hashs)); + ++n_tags; /* CCRT */ + MSG_LEN_ADD(msg_len, 8); ++n_tags; /* XLCT */ + } + MSG_LEN_ADD(msg_len, lsquic_str_len(&enc_session->ssno)); + ++n_tags; /* SNO */ + MSG_LEN_ADD(msg_len, lsquic_str_len(&enc_session->info->sstk)); + ++n_tags; /* STK */ + if (lsquic_str_len(&enc_session->info->scfg) > 0) + { + MSG_LEN_ADD(msg_len, sizeof(enc_session->info->sscid)); + ++n_tags; /* SCID */ + if (enc_session->cert_ptr) + { + MSG_LEN_ADD(msg_len, sizeof(pub_key)); + ++n_tags; /* PUBS */ + MSG_LEN_ADD(msg_len, sizeof(enc_session->hs_ctx.nonc)); + ++n_tags; /* NONC */ + RAND_bytes(enc_session->priv_key, 32); + lsquic_c255_get_pub_key(enc_session->priv_key, pub_key); + lsquic_gen_nonce_c(enc_session->hs_ctx.nonc, enc_session->info->orbt); + } + } + include_pad = MSG_LEN_VAL(msg_len) < MIN_CHLO_SIZE; + if (include_pad) + { + if (MSG_LEN_VAL(msg_len) + sizeof(struct table_entry) < MIN_CHLO_SIZE) + pad_size = MIN_CHLO_SIZE - MSG_LEN_VAL(msg_len) - + sizeof(struct table_entry); + else + pad_size = 0; + MSG_LEN_ADD(msg_len, pad_size); ++n_tags; /* PAD */ + } +#ifdef WIN32 + else + pad_size = 0; +#endif + + /* Check that we have enough room in the output buffer: */ + if (MSG_LEN_VAL(msg_len) > *len) + return -1; + + /* Write CHLO: */ + MW_BEGIN(&mw, QTAG_CHLO, n_tags, buf); + if (include_pad) + { + memset(MW_P(&mw), '-', pad_size); + MW_WRITE_TABLE_ENTRY(&mw, QTAG_PAD, pad_size); + MW_ADVANCE_P(&mw, pad_size); + } + MW_WRITE_LS_STR(&mw, QTAG_SNI, &enc_session->hs_ctx.sni); + MW_WRITE_LS_STR(&mw, QTAG_STK, &enc_session->info->sstk); + MW_WRITE_LS_STR(&mw, QTAG_SNO, &enc_session->ssno); + MW_WRITE_UINT32(&mw, QTAG_VER, lsquic_ver2tag(version)); + MW_WRITE_LS_STR(&mw, QTAG_CCS, ccs); + if (lsquic_str_len(&enc_session->info->scfg) > 0 && enc_session->cert_ptr) + MW_WRITE_BUFFER(&mw, QTAG_NONC, enc_session->hs_ctx.nonc, + sizeof(enc_session->hs_ctx.nonc)); + MW_WRITE_UINT32(&mw, QTAG_AEAD, settings->es_aead); + if (ua_len) + MW_WRITE_BUFFER(&mw, QTAG_UAID, settings->es_ua, ua_len); + if (lsquic_str_len(&enc_session->info->scfg) > 0) + MW_WRITE_BUFFER(&mw, QTAG_SCID, enc_session->info->sscid, + sizeof(enc_session->info->sscid)); + if (settings->es_support_tcid0) + MW_WRITE_UINT32(&mw, QTAG_TCID, 0); + MW_WRITE_UINT32(&mw, QTAG_PDMD, settings->es_pdmd); + MW_WRITE_UINT32(&mw, QTAG_SMHL, 1); + MW_WRITE_UINT32(&mw, QTAG_ICSL, settings->es_idle_conn_to / 1000000); + if (lsquic_str_len(&enc_session->info->scfg) > 0 && enc_session->cert_ptr) + MW_WRITE_BUFFER(&mw, QTAG_PUBS, pub_key, sizeof(pub_key)); + MW_WRITE_UINT32(&mw, QTAG_MIDS, settings->es_max_streams_in); + MW_WRITE_UINT32(&mw, QTAG_SCLS, settings->es_silent_close); + MW_WRITE_UINT32(&mw, QTAG_KEXS, settings->es_kexs); + if (cert_item) + MW_WRITE_BUFFER(&mw, QTAG_XLCT, lsquic_str_buf(cert_item->hashs), 8); + /* CSCT is empty on purpose (retained from original code) */ + MW_WRITE_TABLE_ENTRY(&mw, QTAG_CSCT, 0); + if (n_opts > 0) + MW_WRITE_BUFFER(&mw, QTAG_COPT, opts, n_opts * sizeof(opts[0])); + if (cert_item) + MW_WRITE_LS_STR(&mw, QTAG_CCRT, cert_item->hashs); + MW_WRITE_UINT32(&mw, QTAG_CFCW, settings->es_cfcw); + MW_WRITE_UINT32(&mw, QTAG_SFCW, settings->es_sfcw); + MW_END(&mw); + assert(buf + *len >= MW_P(&mw)); + + *len = MW_P(&mw) - buf; + + lsquic_str_setto(&enc_session->chlo, buf, *len); + + if (lsquic_str_len(&enc_session->info->scfg) > 0 && enc_session->cert_ptr) + { + enc_session->have_key = 0; + assert(lsquic_str_len(enc_session->cert_ptr) > 0); + determine_keys(enc_session); + enc_session->have_key = 1; + } + + LSQ_DEBUG("lsquic_enc_session_gen_chlo called, return 0, buf_len %zd.", *len); + return 0; +} + + +static enum handshake_error +determine_rtts (struct lsquic_enc_session *enc_session, + const struct sockaddr *ip_addr, time_t t) +{ + hs_ctx_t *const hs_ctx = &enc_session->hs_ctx; + enum hsk_failure_reason hfr; + + if (!(hs_ctx->set & HSET_SCID)) + { + hs_ctx->rrej = HFR_CONFIG_INCHOATE_HELLO; + ESHIST_APPEND(enc_session, ESHE_MISSING_SCID); + goto fail_1rtt; + } + + hfr = lsquic_verify_stk(enc_session, ip_addr, t, &hs_ctx->stk); + if (hfr != HFR_HANDSHAKE_OK) + { + hs_ctx->rrej = hfr; + ESHIST_APPEND(enc_session, ESHE_VSTK_FAILED); + goto fail_1rtt; + } + else + ESHIST_APPEND(enc_session, ESHE_VSTK_OK); + + if (memcmp(enc_session->server_config->lsc_scfg->info.sscid, hs_ctx->scid, 16) != 0) + { + hs_ctx->rrej = HFR_CONFIG_UNKNOWN_CONFIG; + ESHIST_APPEND(enc_session, ESHE_UNKNOWN_CONFIG); + goto fail_1rtt; + } + + if (!(lsquic_str_len(&hs_ctx->ccrt) > 0)) + { + /* We provide incorrect RREJ here because there is not one that fits + * this case. We can tell them apart: one comes in SREJ, the other + * in REJ. + */ + hs_ctx->rrej = HFR_CONFIG_INCHOATE_HELLO; + ESHIST_APPEND(enc_session, ESHE_EMPTY_CCRT); + goto fail_1rtt; + } + + if (hs_ctx->set & HSET_XLCT) + { + if (enc_session->cert_hash != hs_ctx->xlct) + { + /* The expected leaf certificate hash could not be validated. */ + hs_ctx->rrej = HFR_INVALID_EXPECTED_LEAF_CERTIFICATE; + ESHIST_APPEND(enc_session, ESHE_XLCT_MISMATCH); + goto fail_1rtt; + } + } + + if (lsquic_str_len(&enc_session->ssno) > 0) + { + if (lsquic_str_len(&hs_ctx->sno) == 0) + { + hs_ctx->rrej = HFR_SERVER_NONCE_REQUIRED; + ESHIST_APPEND(enc_session, ESHE_MISSING_SNO); + goto fail_1rtt; + } + else if (lsquic_str_bcmp(&enc_session->ssno, &hs_ctx->sno) != 0) + { + hs_ctx->rrej = HFR_SERVER_NONCE_INVALID; + ESHIST_APPEND(enc_session, ESHE_SNO_MISMATCH); + goto fail_1rtt; + } + else + ESHIST_APPEND(enc_session, ESHE_SNO_OK); + } + + enc_session->hsk_state = HSK_SHLO; + memcpy(enc_session->priv_key, enc_session->server_config->lsc_scfg->info.priv_key, 32); + return HS_SHLO; + + fail_1rtt: + enc_session->hsk_state = HSK_CHLO_REJ; + return HS_1RTT; +} + + +static int +config_has_correct_size (const struct lsquic_enc_session *enc_session, + const void *data, unsigned shm_len) +{ + /* EVP_AEAD_CTX from boringssl after-18d9f28f0df9f95570. */ + struct new_evp_aead_ctx_st { + void *ptr1; /* aead */ + void *ptr2; /* aead_state */ + uint8_t tag_len; + }; + + /* This is how SHM would like in 5.2.1 builds 7 and 8: */ + struct old_scfg_info + { + unsigned char sscid[SCID_LENGTH]; + unsigned char priv_key[32]; + unsigned char skt_key[16]; + uint32_t aead; + uint32_t kexs; + uint32_t pdmd; + uint64_t orbt; + uint64_t expy; + struct new_evp_aead_ctx_st ctx; + short scfg_len; + }; + + const SCFG_t *const modern_config = data; + const struct old_scfg_info *const old_info = data; + size_t expected_size; + + expected_size = modern_config->info.scfg_len + sizeof(*modern_config); + if (expected_size == shm_len) + return 1; + + if (old_info->scfg_len + sizeof(*old_info) == shm_len) + { + LSQ_WARN("Generating new server config"); + return 0; + } + + LSQ_ERROR("Server config has size %u -- expected %zd", shm_len, + expected_size); + return 0; +} + + +static lsquic_server_config_t * +get_valid_scfg (const struct lsquic_enc_session *enc_session, + const struct lsquic_engine_public *enpub) +{ +#define SERVER_SCFG_KEY "SERVER_SCFG" +#define SERVER_SCFG_KEY_SIZE (sizeof(SERVER_SCFG_KEY) - 1) + const struct lsquic_engine_settings *const settings = &enpub->enp_settings; + const struct lsquic_shared_hash_if *const shi = enpub->enp_shi; + void *const shi_ctx = enpub->enp_shi_ctx; + uint8_t spubs[35] = {0x20, 0, 0, };/* need to init first 3 bytes */ + time_t t = time(NULL); + unsigned int real_len; + SCFG_info_t *temp_scfg; + void *scfg_ptr; + int ret; + unsigned msg_len, server_config_sz; + struct message_writer mw; + + if (enpub->enp_server_config->lsc_scfg && (enpub->enp_server_config->lsc_scfg->info.expy > (uint64_t)t)) + return enpub->enp_server_config; + + ret = shi->shi_lookup(shi_ctx, SERVER_SCFG_KEY, SERVER_SCFG_KEY_SIZE, + &scfg_ptr, &real_len); + if (ret == 1) + { + if (config_has_correct_size(enc_session, scfg_ptr, real_len) && + (enpub->enp_server_config->lsc_scfg = scfg_ptr, + enpub->enp_server_config->lsc_scfg->info.expy > (uint64_t)t)) + { + /* Why need to init here, because this memory may be read from SHM, + * the struct is ready but AEAD_CTX is not ready. + **/ + EVP_AEAD_CTX_init(&enpub->enp_server_config->lsc_stk_ctx, EVP_aead_aes_128_gcm(), + enpub->enp_server_config->lsc_scfg->info.skt_key, 16, 12, NULL); + return enpub->enp_server_config; + } + else + { + shi->shi_delete(shi_ctx, SERVER_SCFG_KEY, SERVER_SCFG_KEY_SIZE); + } + } + + MSG_LEN_INIT(msg_len); + MSG_LEN_ADD(msg_len, sizeof(temp_scfg->sscid)); + MSG_LEN_ADD(msg_len, sizeof(spubs)); + MSG_LEN_ADD(msg_len, enpub->enp_ver_tags_len); + MSG_LEN_ADD(msg_len, sizeof(temp_scfg->aead)); + MSG_LEN_ADD(msg_len, sizeof(temp_scfg->kexs)); + MSG_LEN_ADD(msg_len, sizeof(temp_scfg->pdmd)); + MSG_LEN_ADD(msg_len, sizeof(temp_scfg->orbt)); + MSG_LEN_ADD(msg_len, sizeof(temp_scfg->expy)); + + server_config_sz = sizeof(*enpub->enp_server_config->lsc_scfg) + MSG_LEN_VAL(msg_len); + enpub->enp_server_config->lsc_scfg = malloc(server_config_sz); + if (!enpub->enp_server_config->lsc_scfg) + return NULL; + + temp_scfg = &enpub->enp_server_config->lsc_scfg->info; + RAND_bytes(temp_scfg->skt_key, sizeof(temp_scfg->skt_key)); + RAND_bytes(temp_scfg->sscid, sizeof(temp_scfg->sscid)); + RAND_bytes(temp_scfg->priv_key, sizeof(temp_scfg->priv_key)); + lsquic_c255_get_pub_key(temp_scfg->priv_key, spubs + 3); + temp_scfg->aead = settings->es_aead; + temp_scfg->kexs = settings->es_kexs; + temp_scfg->pdmd = settings->es_pdmd; + temp_scfg->orbt = 0; + temp_scfg->expy = t + settings->es_sttl; + + MW_BEGIN(&mw, QTAG_SCFG, 8, enpub->enp_server_config->lsc_scfg->scfg); + MW_WRITE_BUFFER(&mw, QTAG_VER, enpub->enp_ver_tags_buf, + enpub->enp_ver_tags_len); + MW_WRITE_UINT32(&mw, QTAG_AEAD, temp_scfg->aead); + MW_WRITE_BUFFER(&mw, QTAG_SCID, temp_scfg->sscid, sizeof(temp_scfg->sscid)); + MW_WRITE_UINT32(&mw, QTAG_PDMD, temp_scfg->pdmd); + MW_WRITE_BUFFER(&mw, QTAG_PUBS, spubs, sizeof(spubs)); + MW_WRITE_UINT32(&mw, QTAG_KEXS, temp_scfg->kexs); + MW_WRITE_UINT64(&mw, QTAG_ORBT, temp_scfg->orbt); + MW_WRITE_UINT64(&mw, QTAG_EXPY, temp_scfg->expy); + MW_END(&mw); + assert(MW_P(&mw) == enpub->enp_server_config->lsc_scfg->scfg + MSG_LEN_VAL(msg_len)); + + temp_scfg->scfg_len = MSG_LEN_VAL(msg_len); + + LSQ_DEBUG("%s called, return len %d.", __func__, temp_scfg->scfg_len); + +// /* TODO: will shi_delete call free to release the buffer? */ +// shi->shi_delete(shi_ctx, SERVER_SCFG_KEY, SERVER_SCFG_KEY_SIZE); + shi->shi_insert(shi_ctx, SERVER_SCFG_KEY, SERVER_SCFG_KEY_SIZE, + enpub->enp_server_config->lsc_scfg, server_config_sz, t + settings->es_sttl); + + ret = shi->shi_lookup(shi_ctx, SERVER_SCFG_KEY, SERVER_SCFG_KEY_SIZE, + &scfg_ptr, &real_len); + if (ret == 1) + { + free(enpub->enp_server_config->lsc_scfg); + enpub->enp_server_config->lsc_scfg = scfg_ptr; + } + else + { + /* Since internal error occured, but I have to use a SCFG, log it*/ + LSQ_DEBUG("get_valid_scfg got an shi internal error.\n"); + } + + ret = EVP_AEAD_CTX_init(&enpub->enp_server_config->lsc_stk_ctx, EVP_aead_aes_128_gcm(), + enpub->enp_server_config->lsc_scfg->info.skt_key, + sizeof(enpub->enp_server_config->lsc_scfg->info.skt_key), 12, NULL); + + LSQ_DEBUG("get_valid_scfg::EVP_AEAD_CTX_init return %d.", ret); + return enpub->enp_server_config; +} + + +static int +generate_crt (struct lsquic_enc_session *enc_session, int common_case) +{ + int i, n, len, crt_num, rv = -1; + lsquic_str_t **crts; + unsigned char *out; + X509* crt; + STACK_OF(X509) *pXchain; + SSL_CTX *const ctx = enc_session->ssl_ctx; + hs_ctx_t *const hs_ctx = &enc_session->hs_ctx; + struct compressed_cert *ccert; + + SSL_CTX_get0_chain_certs(ctx, &pXchain); + n = sk_X509_num(pXchain); + crt_num = n + 1; + + crts = calloc(crt_num, sizeof(crts[0])); + if (!crts) + return -1; + + crts[0] = lsquic_str_new(lsquic_str_cstr(enc_session->cert_ptr), + lsquic_str_len(enc_session->cert_ptr)); + if (!crts[0]) + goto cleanup; + + for (i = 1; i < crt_num; i++) + { + crt = sk_X509_value(pXchain, i - 1); + out = NULL; + len = i2d_X509(crt, &out); + if (len < 0) + goto cleanup; + crts[i] = lsquic_str_new((const char *) out, len); + OPENSSL_free(out); + } + + ccert = lsquic_compress_certs(crts, crt_num, &hs_ctx->ccs, &hs_ctx->ccrt); + if (!ccert) + goto cleanup; + + if (common_case) + { + if (SSL_CTX_set_ex_data(ctx, s_ccrt_idx, ccert)) + ++ccert->refcnt; + else + { + free(ccert); + ccert = NULL; + goto cleanup; + } + } + + ++ccert->refcnt; + hs_ctx->ccert = ccert; + + /* We got here, set rv to 0: success */ + rv = 0; + + cleanup: + for (i = 0; i < crt_num; ++i) + if (crts[i]) + lsquic_str_delete(crts[i]); + free(crts); + return rv; +} + + +/* rtt == 1 case */ +static int +gen_rej1_data (struct lsquic_enc_session *enc_session, uint8_t *data, + size_t max_len, const struct sockaddr *ip, time_t t) +{ +#ifndef WIN32 +# define ERR(e_) do { return (e_); } while (0) +#else +# define ERR(e_) do { len = (e_); goto end; } while (0) +#endif + int len; + EVP_PKEY * rsa_priv_key; + SSL_CTX *ctx = enc_session->ssl_ctx; + hs_ctx_t *const hs_ctx = &enc_session->hs_ctx; + int scfg_len = enc_session->server_config->lsc_scfg->info.scfg_len; + uint8_t *scfg_data = enc_session->server_config->lsc_scfg->scfg; + int common_case; + size_t msg_len; + struct message_writer mw; + uint64_t sttl; + + rsa_priv_key = SSL_CTX_get0_privatekey(ctx); + if (!rsa_priv_key) + return -1; + + size_t prof_len = (size_t) EVP_PKEY_size(rsa_priv_key); +#ifndef WIN32 + char prof_buf[prof_len]; +#else + char *prof_buf = _malloca(prof_len); + if (!prof_buf) + return -1; +#endif + + if (hs_ctx->ccert) + { + put_compressed_cert(hs_ctx->ccert); + hs_ctx->ccert = NULL; + } + + /** + * Only cache hs_ctx->ccs is the hardcoded common certs and hs_ctx->ccrt is empty case + * This is the most common case + */ + common_case = lsquic_str_len(&hs_ctx->ccrt) == 0 + && lsquic_str_bcmp(&hs_ctx->ccs, lsquic_get_common_certs_hash()) == 0; + if (common_case) + hs_ctx->ccert = SSL_CTX_get_ex_data(ctx, s_ccrt_idx); + + if (hs_ctx->ccert) + { + ++hs_ctx->ccert->refcnt; + LSQ_DEBUG("use cached compressed cert"); + } + else if (0 == generate_crt(enc_session, common_case)) + LSQ_DEBUG("generated compressed cert"); + else + { + LSQ_INFO("cannot could not generate compressed cert for"); + ERR(-1); + } + + LSQ_DEBUG("gQUIC rej1 data"); + LSQ_DEBUG("gQUIC NOT enabled"); + const int s = lsquic_gen_prof((const uint8_t *)lsquic_str_cstr(&enc_session->chlo), + (size_t)lsquic_str_len(&enc_session->chlo), + scfg_data, scfg_len, + rsa_priv_key, (uint8_t *)prof_buf, &prof_len); + if (s != 0) + { + LSQ_INFO("could not generate server proof, code %d", s); + ERR(-1); + } + + lsquic_str_setto(&hs_ctx->prof, prof_buf, prof_len); + + if (!hs_ctx->rrej) + { + LSQ_WARN("REJ: RREJ is not set, use default"); + hs_ctx->rrej = HFR_CLIENT_NONCE_UNKNOWN; + } + + MSG_LEN_INIT(msg_len); + MSG_LEN_ADD(msg_len, sizeof(hs_ctx->rrej)); + MSG_LEN_ADD(msg_len, scfg_len); + MSG_LEN_ADD(msg_len, STK_LENGTH); + MSG_LEN_ADD(msg_len, SNO_LENGTH); + MSG_LEN_ADD(msg_len, sizeof(sttl)); + MSG_LEN_ADD(msg_len, lsquic_str_len(&hs_ctx->prof)); + if (hs_ctx->ccert) + MSG_LEN_ADD(msg_len, hs_ctx->ccert->len); + + if (MSG_LEN_VAL(msg_len) > max_len) + ERR(-1); + + memcpy(enc_session->priv_key, enc_session->server_config->lsc_scfg->info.priv_key, 32); + + if (lsquic_str_len(&enc_session->sstk) != STK_LENGTH) + { + lsquic_str_d(&enc_session->sstk); + lsquic_str_prealloc(&enc_session->sstk, STK_LENGTH); + lsquic_str_setlen(&enc_session->sstk, STK_LENGTH); + } + lsquic_gen_stk(enc_session->server_config, ip, t, + (unsigned char *) lsquic_str_buf(&enc_session->sstk)); + + if (lsquic_str_len(&enc_session->ssno) != SNO_LENGTH) + { + lsquic_str_d(&enc_session->ssno); + lsquic_str_prealloc(&enc_session->ssno, SNO_LENGTH); + lsquic_str_setlen(&enc_session->ssno, SNO_LENGTH); + } + RAND_bytes((uint8_t *) lsquic_str_buf(&enc_session->ssno), SNO_LENGTH); + sttl = enc_session->enpub->enp_server_config->lsc_scfg->info.expy + - (uint64_t) time(NULL); + + MW_BEGIN(&mw, QTAG_REJ, 7, data); + MW_WRITE_LS_STR(&mw, QTAG_STK, &enc_session->sstk); + MW_WRITE_LS_STR(&mw, QTAG_SNO, &enc_session->ssno); + MW_WRITE_LS_STR(&mw, QTAG_PROF, &hs_ctx->prof); + MW_WRITE_BUFFER(&mw, QTAG_SCFG, scfg_data, scfg_len); + MW_WRITE_BUFFER(&mw, QTAG_RREJ, &hs_ctx->rrej, sizeof(hs_ctx->rrej)); + MW_WRITE_BUFFER(&mw, QTAG_STTL, &sttl, sizeof(sttl)); + if (hs_ctx->ccert) + MW_WRITE_BUFFER(&mw, QTAG_CRT, hs_ctx->ccert->buf, hs_ctx->ccert->len); + MW_END(&mw); + + assert(data + max_len >= MW_P(&mw)); + len = MW_P(&mw) - data; + LSQ_DEBUG("gen_rej1_data called, return len %d.", len); +#ifdef WIN32 + end: + _freea(prof_buf); +#endif + return len; +#undef ERR +} + + +/* rtt == 0 case */ +static int +gen_shlo_data (uint8_t *buf, size_t buf_len, struct lsquic_enc_session *enc_session, + enum lsquic_version version, const struct sockaddr *ip, + time_t t, uint8_t *nonce) +{ + char pub_key[32]; + const struct lsquic_engine_settings *const settings = + &enc_session->enpub->enp_settings; + struct message_writer mw; + int len; + const int include_reset_token = version >= LSQVER_046; + size_t msg_len; + + MSG_LEN_INIT(msg_len); + MSG_LEN_ADD(msg_len, enc_session->enpub->enp_ver_tags_len); + MSG_LEN_ADD(msg_len, sizeof(pub_key)); + MSG_LEN_ADD(msg_len, 4); /* MIDS */ + MSG_LEN_ADD(msg_len, 4); /* CFCW */ + MSG_LEN_ADD(msg_len, 4); /* SFCW */ + MSG_LEN_ADD(msg_len, 4); /* ICSL */ + MSG_LEN_ADD(msg_len, 4); /* SMHL */ + MSG_LEN_ADD(msg_len, lsquic_str_len(&enc_session->sstk)); + MSG_LEN_ADD(msg_len, lsquic_str_len(&enc_session->ssno)); + if (include_reset_token) + MSG_LEN_ADD(msg_len, SRST_LENGTH); + + if (MSG_LEN_VAL(msg_len) > buf_len) + return -1; + + RAND_bytes(nonce, 32); + RAND_bytes(enc_session->priv_key, 32); + lsquic_c255_get_pub_key(enc_session->priv_key, (unsigned char *)pub_key); + if (lsquic_str_len(&enc_session->sstk) != STK_LENGTH) + { + lsquic_str_d(&enc_session->sstk); + lsquic_str_prealloc(&enc_session->sstk, STK_LENGTH); + lsquic_str_setlen(&enc_session->sstk, STK_LENGTH); + } + lsquic_gen_stk(enc_session->server_config, ip, t, + (unsigned char *) lsquic_str_buf(&enc_session->sstk)); + if (lsquic_str_len(&enc_session->ssno) != SNO_LENGTH) + { + lsquic_str_d(&enc_session->ssno); + lsquic_str_prealloc(&enc_session->ssno, SNO_LENGTH); + lsquic_str_setlen(&enc_session->ssno, SNO_LENGTH); + } + RAND_bytes((uint8_t *) lsquic_str_buf(&enc_session->ssno), SNO_LENGTH); + + MW_BEGIN(&mw, QTAG_SHLO, 9 + include_reset_token, buf); + MW_WRITE_LS_STR(&mw, QTAG_STK, &enc_session->sstk); + MW_WRITE_LS_STR(&mw, QTAG_SNO, &enc_session->ssno); + MW_WRITE_BUFFER(&mw, QTAG_VER, enc_session->enpub->enp_ver_tags_buf, + enc_session->enpub->enp_ver_tags_len); + MW_WRITE_UINT32(&mw, QTAG_SMHL, 1); + MW_WRITE_UINT32(&mw, QTAG_ICSL, settings->es_idle_conn_to / 1000000); + MW_WRITE_BUFFER(&mw, QTAG_PUBS, pub_key, sizeof(pub_key)); + MW_WRITE_UINT32(&mw, QTAG_MIDS, settings->es_max_streams_in); + if (include_reset_token) + { + MW_WRITE_TABLE_ENTRY(&mw, QTAG_SRST, SRST_LENGTH); + lsquic_tg_generate_sreset(enc_session->enpub->enp_tokgen, + &enc_session->cid, MW_P(&mw)); + MW_ADVANCE_P(&mw, SRST_LENGTH); + } + MW_WRITE_UINT32(&mw, QTAG_CFCW, settings->es_cfcw); + MW_WRITE_UINT32(&mw, QTAG_SFCW, settings->es_sfcw); + MW_END(&mw); + + assert(buf + buf_len >= MW_P(&mw)); + len = MW_P(&mw) - buf; + LSQ_DEBUG("gen_shlo_data called, return len %d.", len); + return len; +} + + +/* Generate key based on issuer and serial number. The key has the following + * structure: + * + * size_t length of issuer. This field is required to prevent + * the chance (however remote) that concatenation of + * the next two fields is ambiguous. + * uint8_t[] DER-encoded issuer + * uint8_t[] Serial number represented as sequence of bytes output + * by BN_bn2bin + * + * Return size of the key or zero on error. + */ +static size_t +gen_iasn_key (X509 *cert, unsigned char *const out, size_t const sz) +{ + const unsigned char *name_bytes; + size_t name_sz; + X509_NAME *name; + ASN1_INTEGER *sernum; + BIGNUM *bn; + unsigned bn_sz; + + name = X509_get_issuer_name(cert); + if (!name) + return 0; + if (!X509_NAME_get0_der(name, &name_bytes, &name_sz)) + return 0; + sernum = X509_get_serialNumber(cert); + if (!sernum) + return 0; + bn = ASN1_INTEGER_to_BN(sernum, NULL); + if (!bn) + return 0; + bn_sz = BN_num_bytes(bn); + if (sizeof(size_t) + name_sz + bn_sz > sz) + { + BN_free(bn); + return 0; + } + + memcpy(out, &name_sz, sizeof(name_sz)); + memcpy(out + sizeof(name_sz), name_bytes, name_sz); + BN_bn2bin(bn, out + sizeof(name_sz) + name_sz); + BN_free(bn); + + return sizeof(name_sz) + name_sz + bn_sz; +} + + +static enum { + GET_SNI_OK, + GET_SNI_ERR, +} + + +get_sni_SSL_CTX(struct lsquic_enc_session *enc_session, lsquic_lookup_cert_f cb, + void *cb_ctx, const struct sockaddr *local) +{ + X509 *crt = NULL; + unsigned char *out; + int len; + lsquic_str_t crtstr; + cert_item_t *item; + struct ssl_ctx_st *ssl_ctx; + size_t key_sz; + unsigned char key[0x400]; + + if (!enc_session->ssl_ctx) + { + if (!cb) + return GET_SNI_ERR; + ssl_ctx = cb(cb_ctx, local, lsquic_str_cstr(&enc_session->hs_ctx.sni)); + if (ssl_ctx == NULL) + return GET_SNI_ERR; + enc_session->ssl_ctx = ssl_ctx; + } + + if (enc_session->cert_ptr == NULL) + { + crt = SSL_CTX_get0_certificate(enc_session->ssl_ctx); + if (!crt) + return GET_SNI_ERR; + key_sz = gen_iasn_key(crt, key, sizeof(key)); + if (key_sz) + { + item = find_cert(enc_session->enpub, key, key_sz); + if (item) + LSQ_DEBUG("found cert in cache"); + else + { + out = NULL; + len = i2d_X509(crt, &out); + if (len < 0) + return GET_SNI_ERR; + lsquic_str_set(&crtstr, (char *) out, len); + item = insert_cert(enc_session->enpub, key, key_sz, &crtstr); + if (item) + { + OPENSSL_free(out); + LSQ_DEBUG("inserted cert into cache"); + } + else + { + LSQ_DEBUG("cert insertion failed, keep own copy"); + goto copy; + } + } + enc_session->cert_ptr = item->crt; + enc_session->cert_hash = item->hash; + } + else + { + LSQ_INFO("cannot generate cert cache key, make copy"); + out = NULL; + len = i2d_X509(crt, &out); + if (len < 0) + return GET_SNI_ERR; + copy: enc_session->cert_ptr = lsquic_str_new((char *) out, len); + OPENSSL_free(out); + if (!enc_session->cert_ptr) + return GET_SNI_ERR; + enc_session->es_flags |= ES_FREE_CERT_PTR; + enc_session->cert_hash = lsquic_fnv1a_64( + (const uint8_t *) lsquic_str_buf(enc_session->cert_ptr), + lsquic_str_len(enc_session->cert_ptr)); + } + } + return GET_SNI_OK; +} + + +/*** + * Comments: data and len are the frame(s) parsed data, no packet header. + * return rtt number: + * 1 for rej1 and 0 for shlo + * DATA_NOT_ENOUGH(-2) for not enough data, + * DATA_FORMAT_ERROR(-1) all other errors + * HS_DELAYED handshake delayed + */ +static enum handshake_error +handle_chlo_frames_data(const uint8_t *data, int len, + struct lsquic_enc_session *enc_session, + lsquic_lookup_cert_f cb, void *cb_ctx, + const struct sockaddr *local, + const struct lsquic_shared_hash_if *shi, + void *shi_ctx, const struct sockaddr *ip, time_t t) +{ + /* start to parse it */ +// struct lsquic_enc_session *enc_session = retrive_enc_session(cid); + uint32_t head_tag; + enum handshake_error rtt; + int ret; + + LSQ_DEBUG("handle_chlo_frames_data called."); + + ret = parse_hs(enc_session, data, len, &head_tag); + if (ret) + { + LSQ_DEBUG("handle_chlo_frames_data parse_hs error,s o quit."); + return ret; + } + + if (head_tag != QTAG_CHLO) + { + LSQ_DEBUG("handle_chlo_frames_data got data format error 1."); + return DATA_FORMAT_ERROR; + } + + + switch (get_sni_SSL_CTX(enc_session, cb, cb_ctx, local)) + { + case GET_SNI_ERR: + ESHIST_APPEND(enc_session, ESHE_SNI_FAIL); + LSQ_DEBUG("handle_chlo_frames_data got data format error 2."); + return DATA_FORMAT_ERROR; + default: + break; + } + + rtt = determine_rtts(enc_session, ip, t); + ESHIST_APPEND(enc_session, ESHE_MULTI2_2BITS + rtt); + lsquic_str_setto(&enc_session->chlo, (const char *)data, len); + + LSQ_DEBUG("handle_chlo_frames_data return %d.", rtt); + return rtt; +} + + +static int handle_chlo_reply_verify_prof(struct lsquic_enc_session *enc_session, + lsquic_str_t **out_certs, + size_t *out_certs_count, + lsquic_str_t *cached_certs, + int cached_certs_count) +{ + const unsigned char *dummy = (unsigned char *) ""; + const unsigned char *const in = enc_session->hs_ctx.ccert + ? enc_session->hs_ctx.ccert->buf : dummy; + const unsigned char *const in_end = enc_session->hs_ctx.ccert + ? in + enc_session->hs_ctx.ccert->len : 0; + EVP_PKEY *pub_key; + int ret; + size_t i; + X509 *cert, *server_cert; + STACK_OF(X509) *chain = NULL; + ret = lsquic_decompress_certs(in, in_end,cached_certs, cached_certs_count, + out_certs, out_certs_count); + if (ret) + return ret; + + server_cert = lsquic_bio_to_crt((const char *)lsquic_str_cstr(out_certs[0]), + lsquic_str_len(out_certs[0]), 0); + pub_key = X509_get_pubkey(server_cert); + ret = lsquic_verify_prof((const uint8_t *)lsquic_str_cstr(&enc_session->chlo), + (size_t)lsquic_str_len(&enc_session->chlo), + &enc_session->info->scfg, + pub_key, + (const uint8_t *)lsquic_str_cstr(&enc_session->hs_ctx.prof), + lsquic_str_len(&enc_session->hs_ctx.prof)); + EVP_PKEY_free(pub_key); + if (ret != 0) + { + LSQ_DEBUG("cannot verify server proof"); + goto cleanup; + } + + if (enc_session->enpub->enp_verify_cert) + { + chain = sk_X509_new_null(); + sk_X509_push(chain, server_cert); + for (i = 1; i < *out_certs_count; ++i) + { + cert = lsquic_bio_to_crt((const char *)lsquic_str_cstr(out_certs[i]), + lsquic_str_len(out_certs[i]), 0); + if (cert) + sk_X509_push(chain, cert); + else + { + LSQ_WARN("cannot push certificate to stack"); + ret = -1; + goto cleanup; + } + } + ret = enc_session->enpub->enp_verify_cert( + enc_session->enpub->enp_verify_ctx, chain); + LSQ_INFO("server certificate verification %ssuccessful", + ret == 0 ? "" : "not "); + } + EV_LOG_CHECK_CERTS(&enc_session->cid, (const lsquic_str_t **)out_certs, *out_certs_count); + + cleanup: + if (chain) + sk_X509_free(chain); + X509_free(server_cert); + return ret; +} + + +static void +setup_aead_ctx (const struct lsquic_enc_session *enc_session, + EVP_AEAD_CTX **ctx, unsigned char key[], int key_len, + unsigned char *key_copy) +{ + const EVP_AEAD *aead_ = EVP_aead_aes_128_gcm(); + const int auth_tag_size = enc_session->es_flags & ES_GQUIC2 + ? IQUIC_TAG_LEN : GQUIC_PACKET_HASH_SZ; + if (*ctx) + { + EVP_AEAD_CTX_cleanup(*ctx); + } + else + *ctx = (EVP_AEAD_CTX *)malloc(sizeof(EVP_AEAD_CTX)); + + EVP_AEAD_CTX_init(*ctx, aead_, key, key_len, auth_tag_size, NULL); + if (key_copy) + memcpy(key_copy, key, key_len); +} + + +static int +determine_diversification_key (enc_session_t *enc_session_p, + uint8_t *diversification_nonce) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + const int is_client = !(enc_session->es_flags & ES_SERVER); + EVP_AEAD_CTX **ctx_s_key; + unsigned char *key_i, *iv; + const size_t iv_len = enc_session->es_flags & ES_GQUIC2 + ? IQUIC_IV_LEN : aes128_iv_len; + uint8_t ikm[aes128_key_len + MAX_IV_LEN]; + char str_buf[DNONC_LENGTH * 2 + 1]; + + if (is_client) + { + ctx_s_key = &enc_session->dec_ctx_i; + key_i = enc_session->dec_key_i; + iv = enc_session->dec_key_nonce_i; + } + else + { + ctx_s_key = &enc_session->enc_ctx_i; + key_i = enc_session->enc_key_i; + iv = enc_session->enc_key_nonce_i; + } + memcpy(ikm, key_i, aes128_key_len); + memcpy(ikm + aes128_key_len, iv, iv_len); + lsquic_export_key_material(ikm, aes128_key_len + iv_len, + diversification_nonce, DNONC_LENGTH, + (const unsigned char *) "QUIC key diversification", 24, + 0, NULL, aes128_key_len, key_i, 0, NULL, + iv_len, iv, NULL, NULL, NULL); + + setup_aead_ctx(enc_session, ctx_s_key, key_i, aes128_key_len, NULL); + if (enc_session->es_flags & ES_LOG_SECRETS) + { + LSQ_DEBUG("determine_diversification_keys nonce: %s", + HEXSTR(diversification_nonce, DNONC_LENGTH, str_buf)); + LSQ_DEBUG("determine_diversification_keys diversification key: %s", + HEXSTR(key_i, aes128_key_len, str_buf)); + LSQ_DEBUG("determine_diversification_keys diversification iv: %s", + HEXSTR(iv, iv_len, str_buf)); + } + return 0; +} + + +/* After CHLO msg generatered, call it to determine_keys */ +static void +determine_keys (struct lsquic_enc_session *enc_session) +{ + lsquic_str_t *chlo = &enc_session->chlo; + const int is_client = !(enc_session->es_flags & ES_SERVER); + uint8_t shared_key_c[32]; + const size_t iv_len = enc_session->es_flags & ES_GQUIC2 + ? IQUIC_IV_LEN : aes128_iv_len; + unsigned char *nonce_c; + unsigned char *hkdf_input, *hkdf_input_p; + + unsigned char c_key[aes128_key_len]; + unsigned char s_key[aes128_key_len]; + unsigned char *c_key_bin = NULL; + unsigned char *s_key_bin = NULL; + + unsigned char *c_iv; + unsigned char *s_iv; + uint8_t *c_hp, *s_hp; + size_t nonce_len, hkdf_input_len; + unsigned char sub_key[32]; + EVP_AEAD_CTX **ctx_c_key, **ctx_s_key; + char key_flag; + char str_buf[512]; + + hkdf_input_len = (enc_session->have_key == 0 ? 18 + 1 : 33 + 1) + + enc_session->cid.len + + lsquic_str_len(chlo) + + (is_client + ? lsquic_str_len(&enc_session->info->scfg) + : (size_t) enc_session->server_config->lsc_scfg->info.scfg_len) + + lsquic_str_len(enc_session->cert_ptr); + hkdf_input = malloc(hkdf_input_len); + if (UNLIKELY(!hkdf_input)) + { + LSQ_WARN("cannot allocate memory for hkdf_input"); + return; + } + hkdf_input_p = hkdf_input; + + if (enc_session->have_key == 0) + { + memcpy(hkdf_input_p, "QUIC key expansion\0", 18 + 1); /* Add a 0x00 */ + hkdf_input_p += 18 + 1; + key_flag = 'I'; + } + else + { + memcpy(hkdf_input_p, "QUIC forward secure key expansion\0", 33 + 1); /* Add a 0x00 */ + hkdf_input_p += 33 + 1; + key_flag = 'F'; + } + + lsquic_c255_gen_share_key(enc_session->priv_key, + enc_session->hs_ctx.pubs, + (unsigned char *)shared_key_c); + if (is_client) + { + if (enc_session->have_key == 0) + { + ctx_c_key = &enc_session->enc_ctx_i; + ctx_s_key = &enc_session->dec_ctx_i; + c_iv = (unsigned char *) enc_session->enc_key_nonce_i; + s_iv = (unsigned char *) enc_session->dec_key_nonce_i; + c_key_bin = enc_session->enc_key_i; + s_key_bin = enc_session->dec_key_i; + c_hp = enc_session->es_flags & ES_GQUIC2 + ? enc_session->es_hps[GEL_EARLY][0] : NULL; + s_hp = enc_session->es_flags & ES_GQUIC2 + ? enc_session->es_hps[GEL_EARLY][1] : NULL; + } + else + { + ctx_c_key = &enc_session->enc_ctx_f; + ctx_s_key = &enc_session->dec_ctx_f; + c_iv = (unsigned char *) enc_session->enc_key_nonce_f; + s_iv = (unsigned char *) enc_session->dec_key_nonce_f; + c_hp = enc_session->es_flags & ES_GQUIC2 + ? enc_session->es_hps[GEL_FORW][0] : NULL; + s_hp = enc_session->es_flags & ES_GQUIC2 + ? enc_session->es_hps[GEL_FORW][1] : NULL; + } + } + else + { + if (enc_session->have_key == 0) + { + ctx_c_key = &enc_session->dec_ctx_i; + ctx_s_key = &enc_session->enc_ctx_i; + c_iv = (unsigned char *) enc_session->dec_key_nonce_i; + s_iv = (unsigned char *) enc_session->enc_key_nonce_i; + c_key_bin = enc_session->dec_key_i; + s_key_bin = enc_session->enc_key_i; + c_hp = enc_session->es_flags & ES_GQUIC2 + ? enc_session->es_hps[GEL_EARLY][1] : NULL; + s_hp = enc_session->es_flags & ES_GQUIC2 + ? enc_session->es_hps[GEL_EARLY][0] : NULL; + } + else + { + ctx_c_key = &enc_session->dec_ctx_f; + ctx_s_key = &enc_session->enc_ctx_f; + c_iv = (unsigned char *) enc_session->dec_key_nonce_f; + s_iv = (unsigned char *) enc_session->enc_key_nonce_f; + c_hp = enc_session->es_flags & ES_GQUIC2 + ? enc_session->es_hps[GEL_FORW][1] : NULL; + s_hp = enc_session->es_flags & ES_GQUIC2 + ? enc_session->es_hps[GEL_FORW][0] : NULL; + } + } + + LSQ_DEBUG("export_key_material lsquic_c255_gen_share_key %s", + lsquic_get_bin_str(shared_key_c, 32, 512)); + + memcpy(hkdf_input_p, enc_session->cid.idbuf, enc_session->cid.len); + hkdf_input_p += enc_session->cid.len; + memcpy(hkdf_input_p, lsquic_str_cstr(chlo), lsquic_str_len(chlo)); /* CHLO msg */ + hkdf_input_p += lsquic_str_len(chlo); + if (is_client) + { + memcpy(hkdf_input_p, lsquic_str_cstr(&enc_session->info->scfg), + lsquic_str_len(&enc_session->info->scfg)); /* scfg msg */ + hkdf_input_p += lsquic_str_len(&enc_session->info->scfg); + } + else + { + memcpy(hkdf_input_p, + (const char *) enc_session->server_config->lsc_scfg->scfg, + enc_session->server_config->lsc_scfg->info.scfg_len); + hkdf_input_p += enc_session->server_config->lsc_scfg->info.scfg_len; + } + memcpy(hkdf_input_p, lsquic_str_cstr(enc_session->cert_ptr), + lsquic_str_len(enc_session->cert_ptr)); + assert(hkdf_input + hkdf_input_len + == hkdf_input_p + lsquic_str_len(enc_session->cert_ptr)); + LSQ_DEBUG("export_key_material hkdf_input %s", + HEXSTR(hkdf_input, hkdf_input_len, str_buf)); + + /* then need to use the salts and the shared_key_* to get the real aead key */ + nonce_len = sizeof(enc_session->hs_ctx.nonc) + + lsquic_str_len(&enc_session->ssno); + nonce_c = malloc(nonce_len); + if (UNLIKELY(!nonce_c)) + { + LSQ_WARN("cannot allocate memory for nonce_c"); + free(hkdf_input); + return; + } + memcpy(nonce_c, enc_session->hs_ctx.nonc, sizeof(enc_session->hs_ctx.nonc)); + memcpy(nonce_c + sizeof(enc_session->hs_ctx.nonc), + lsquic_str_cstr(&enc_session->ssno), + lsquic_str_len(&enc_session->ssno)); + + LSQ_DEBUG("export_key_material nonce %s", + HEXSTR(nonce_c, nonce_len, str_buf)); + + lsquic_export_key_material(shared_key_c, 32, + nonce_c, nonce_len, + hkdf_input, hkdf_input_len, + aes128_key_len, c_key, + aes128_key_len, s_key, + iv_len, c_iv, + iv_len, s_iv, + sub_key, + c_hp, s_hp + ); + + setup_aead_ctx(enc_session, ctx_c_key, c_key, aes128_key_len, c_key_bin); + setup_aead_ctx(enc_session, ctx_s_key, s_key, aes128_key_len, s_key_bin); + + free(nonce_c); + free(hkdf_input); + + if (enc_session->es_flags & ES_LOG_SECRETS) + { + LSQ_DEBUG("***export_key_material '%c' c_key: %s", key_flag, + HEXSTR(c_key, aes128_key_len, str_buf)); + LSQ_DEBUG("***export_key_material '%c' s_key: %s", key_flag, + HEXSTR(s_key, aes128_key_len, str_buf)); + LSQ_DEBUG("***export_key_material '%c' c_iv: %s", key_flag, + HEXSTR(c_iv, iv_len, str_buf)); + LSQ_DEBUG("***export_key_material '%c' s_iv: %s", key_flag, + HEXSTR(s_iv, iv_len, str_buf)); + LSQ_DEBUG("***export_key_material '%c' subkey: %s", key_flag, + HEXSTR(sub_key, 32, str_buf)); + if (c_hp) + LSQ_DEBUG("***export_key_material '%c' c_hp: %s", key_flag, + HEXSTR(c_hp, IQUIC_HP_LEN, str_buf)); + if (s_hp) + LSQ_DEBUG("***export_key_material '%c' s_hp: %s", key_flag, + HEXSTR(s_hp, IQUIC_HP_LEN, str_buf)); + } +} + + +/* 0 Match */ +static int cached_certs_match(c_cert_item_t *item, + lsquic_str_t **certs, int count) +{ + int i; + if (!item || item->count != count) + return -1; + + for (i=0; icrts[i]) != 0) + return -1; + } + + return 0; +} + + +static const char * +he2str (enum handshake_error he) +{ + switch (he) + { + case DATA_NOT_ENOUGH: return "DATA_NOT_ENOUGH"; + case HS_ERROR: return "HS_ERROR"; + case HS_SHLO: return "HS_SHLO"; + case HS_1RTT: return "HS_1RTT"; + case HS_SREJ: return "HS_SREJ"; + default: + assert(0); return ""; + } +} + + +/* NOT packet, just the frames-data */ +/* return rtt number: + * 0 OK + * DATA_NOT_ENOUGH(-2) for not enough data, + * DATA_FORMAT_ERROR(-1) all other errors + */ +static int +lsquic_enc_session_handle_chlo_reply (enc_session_t *enc_session_p, + const uint8_t *data, int len) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + uint32_t head_tag; + int ret, got_srej; + lsquic_session_cache_info_t *info = enc_session->info; + c_cert_item_t *cert_item = enc_session->cert_item; + + /* FIXME get the number first */ + lsquic_str_t **out_certs = NULL; + size_t out_certs_count = 0, i; + + ret = parse_hs(enc_session, data, len, &head_tag); + if (ret) + goto end; + + got_srej = head_tag == QTAG_SREJ; + switch (head_tag) + { + case QTAG_SREJ: + if (enc_session->es_flags & ES_RECV_SREJ) + { + LSQ_DEBUG("received second SREJ: handshake failed"); + ret = -1; + goto end; + } + enc_session->es_flags |= ES_RECV_SREJ; + /* fall-through */ + case QTAG_REJ: + enc_session->hsk_state = HSK_CHLO_REJ; + enc_session->es_flags |= ES_RECV_REJ; + break; + case QTAG_SHLO: + enc_session->hsk_state = HSK_COMPLETED; + EV_LOG_HSK_COMPLETED(&enc_session->cid); + if (!(enc_session->es_flags & ES_RECV_REJ)) + EV_LOG_SESSION_RESUMPTION(&enc_session->cid); + break; + default: + ret = 1; /* XXX Why 1? */ + goto end; + } + + if (info->scfg_flag == 1) + { + ret = parse_hs(enc_session, (uint8_t *)lsquic_str_cstr(&info->scfg), + lsquic_str_len(&info->scfg), &head_tag); + + /* After handled, set the length to 0 to avoid do it again*/ + enc_session->info->scfg_flag = 2; + if (ret) + goto end; + + if (got_srej) + { + if (lsquic_str_len(&enc_session->info->sstk)) + ret = HS_SREJ; + else + { + LSQ_DEBUG("expected STK in SREJ message from the server"); + ret = -1; + } + goto end; + } + + if (enc_session->hs_ctx.ccert) + { + out_certs_count = lsquic_get_certs_count(enc_session->hs_ctx.ccert); + if (out_certs_count > 0) + { + out_certs = malloc(out_certs_count * sizeof(lsquic_str_t *)); + if (!out_certs) + { + ret = -1; + goto end; + } + + for (i=0; icrts : NULL), + (cert_item ? cert_item->count : 0)); + if (ret == 0) + { + if (out_certs_count > 0) + { + if (cached_certs_match(cert_item, out_certs, + out_certs_count) != 0) + { + cert_item = make_c_cert_item(out_certs, + out_certs_count); + enc_session->cert_item = cert_item; + enc_session->cert_ptr = &cert_item->crts[0]; + } + } + } + for (i=0; ihsk_state == HSK_COMPLETED) + { + determine_keys(enc_session); + enc_session->have_key = 3; + } + + end: + LSQ_DEBUG("lsquic_enc_session_handle_chlo_reply called, buf in %d, return %d.", len, ret); + EV_LOG_CONN_EVENT(&enc_session->cid, "%s returning %s", __func__, + he2str(ret)); + return ret; +} + + +/** stk = 16 bytes IP ( V4 is 4 bytes, will add 12 byes 0 ) + * + 8 bytes time + * + 36 bytes random bytes (24 bytes can be reserved for other using) + * then stk first 48 byte will be encrypted with AES128-GCM + * when encrypting, the salt is the last 12 bytes + */ +#ifdef NDEBUG +static +#endif +void +lsquic_gen_stk (lsquic_server_config_t *server_config, const struct sockaddr *ip_addr, + uint64_t tm, unsigned char stk_out[STK_LENGTH]) +{ + unsigned char stk[STK_LENGTH + 16]; + size_t out_len = STK_LENGTH + 16; + + memset(stk, 0 , 24); + if (AF_INET == ip_addr->sa_family) + memcpy(stk, &((struct sockaddr_in *)ip_addr)->sin_addr.s_addr, 4); + else + memcpy(stk, &((struct sockaddr_in6 *)ip_addr)->sin6_addr, 16); + memcpy(stk + 16, &tm, 8); + RAND_bytes(stk + 24, STK_LENGTH - 24 - 12); + RAND_bytes(stk_out + STK_LENGTH - 12, 12); + lsquic_aes_aead_enc(&server_config->lsc_stk_ctx, NULL, 0, stk_out + STK_LENGTH - 12, 12, stk, + STK_LENGTH - 12 - 12, stk_out, &out_len); +} + + +/* server using */ +#ifdef NDEBUG +static +#endif +enum hsk_failure_reason +lsquic_verify_stk0 (const struct lsquic_enc_session *enc_session, + lsquic_server_config_t *server_config, + const struct sockaddr *ip_addr, uint64_t tm, lsquic_str_t *stk, + unsigned secs_since_stk_generated) +{ + uint64_t tm0, exp; + unsigned char *const stks = (unsigned char *) lsquic_str_buf(stk); + unsigned char stk_out[STK_LENGTH]; + size_t out_len = STK_LENGTH; + + if (lsquic_str_len(stk) < STK_LENGTH) + return HFR_SRC_ADDR_TOKEN_INVALID; + + int ret = lsquic_aes_aead_dec(&server_config->lsc_stk_ctx, NULL, 0, + stks + STK_LENGTH - 12, 12, stks, + STK_LENGTH - 12, stk_out, &out_len); + if (ret != 0) + { + LSQ_DEBUG("***lsquic_verify_stk decrypted failed."); + return HFR_SRC_ADDR_TOKEN_DECRYPTION; + } + + if (AF_INET == ip_addr->sa_family) + { + if (memcmp(stk_out, &((struct sockaddr_in *)ip_addr)->sin_addr.s_addr, 4) != 0) + { + LSQ_DEBUG("***lsquic_verify_stk for ipv4 failed."); + return HFR_SRC_ADDR_TOKEN_DIFFERENT_IP_ADDRESS; + } + } + else + { + if (memcmp(stk_out, &((struct sockaddr_in6 *)ip_addr)->sin6_addr, 16) != 0) + { + LSQ_DEBUG("***lsquic_verify_stk for ipv6 failed."); + return HFR_SRC_ADDR_TOKEN_DIFFERENT_IP_ADDRESS; + } + } + + memcpy((void *)&tm0, stk_out + 16, 8); + if (tm < tm0) + { + LSQ_DEBUG("***lsquic_verify_stk timestamp is in the future."); + return HFR_SRC_ADDR_TOKEN_CLOCK_SKEW; + } + + if (secs_since_stk_generated) + exp = tm0 + secs_since_stk_generated; + else + exp = server_config->lsc_scfg->info.expy; + + if (tm > server_config->lsc_scfg->info.expy /* XXX this check does not seem needed */ || + tm0 > exp) + { + LSQ_DEBUG("***lsquic_verify_stk stk expired"); + return HFR_SRC_ADDR_TOKEN_EXPIRED; + } + + LSQ_DEBUG("***lsquic_verify_stk pass."); + return HFR_HANDSHAKE_OK; +} + + +/* 0, verified, other fail */ +#ifdef NDEBUG +static +#endif +enum hsk_failure_reason +lsquic_verify_stk (enc_session_t *enc_session_p, + const struct sockaddr *ip_addr, uint64_t tm, lsquic_str_t *stk) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + if (lsquic_str_len(&enc_session->sstk) > 0) + { + ESHIST_APPEND(enc_session, ESHE_HAS_SSTK); + if (0 == lsquic_str_bcmp(&enc_session->sstk, &enc_session->hs_ctx.stk)) + return HFR_HANDSHAKE_OK; + else + return HFR_SRC_ADDR_TOKEN_INVALID; + } + else + return lsquic_verify_stk0(enc_session, enc_session->server_config, + ip_addr, tm, stk, 0); +} + + +static uint64_t combine_path_id_pack_num(uint8_t path_id, uint64_t pack_num) +{ + uint64_t v = ((uint64_t)path_id << 56) | pack_num; + return v; +} + + +# define IS_SERVER(session) ((session)->es_flags & ES_SERVER) + +static int +verify_packet_hash (const struct lsquic_enc_session *enc_session, + enum lsquic_version version, const unsigned char *buf, size_t *header_len, + size_t data_len, unsigned char *buf_out, size_t max_out_len, + size_t *out_len) +{ + uint8_t md[HS_PKT_HASH_LENGTH]; + uint128 hash; + int ret; + + if (data_len < HS_PKT_HASH_LENGTH) + return -1; + + if (!enc_session || (IS_SERVER(enc_session))) + hash = lsquic_fnv1a_128_3(buf, *header_len, + buf + *header_len + HS_PKT_HASH_LENGTH, + data_len - HS_PKT_HASH_LENGTH, + (unsigned char *) "Client", 6); + else + hash = lsquic_fnv1a_128_3(buf, *header_len, + buf + *header_len + HS_PKT_HASH_LENGTH, + data_len - HS_PKT_HASH_LENGTH, + (unsigned char *) "Server", 6); + + lsquic_serialize_fnv128_short(hash, md); + ret = memcmp(md, buf + *header_len, HS_PKT_HASH_LENGTH); + if(ret == 0) + { + *header_len += HS_PKT_HASH_LENGTH; + *out_len = data_len - HS_PKT_HASH_LENGTH; + if (max_out_len < *header_len + *out_len) + return -1; + + memcpy(buf_out, buf, *header_len + *out_len); + return 0; + } + else + return -1; +} + + +static enum enc_level +decrypt_packet (struct lsquic_enc_session *enc_session, uint8_t path_id, + uint64_t pack_num, unsigned char *buf, size_t *header_len, + size_t data_len, unsigned char *buf_out, size_t max_out_len, + size_t *out_len) +{ + int ret; + /* Comment: 12 = sizeof(dec_key_iv] 4 + sizeof(pack_num) 8 */ + uint8_t nonce[12]; + uint64_t path_id_packet_number; + EVP_AEAD_CTX *key = NULL; + int try_times = 0; + enum enc_level enc_level; + + path_id_packet_number = combine_path_id_pack_num(path_id, pack_num); + memcpy(buf_out, buf, *header_len); + do + { + if (enc_session->have_key == 3 && try_times == 0) + { + key = enc_session->dec_ctx_f; + memcpy(nonce, enc_session->dec_key_nonce_f, 4); + LSQ_DEBUG("decrypt_packet using 'F' key..."); + enc_level = ENC_LEV_APP; + } + else + { + key = enc_session->dec_ctx_i; + memcpy(nonce, enc_session->dec_key_nonce_i, 4); + LSQ_DEBUG("decrypt_packet using 'I' key..."); + enc_level = ENC_LEV_HSK; + } + memcpy(nonce + 4, &path_id_packet_number, + sizeof(path_id_packet_number)); + + *out_len = data_len; + if (data_len + *header_len > max_out_len) + { + LSQ_DEBUG("decrypt_packet size is larger than 1370, header: %zd, " + "data: %zu, giveup.", *header_len, data_len); + return (enum enc_level) -1; + } + ret = lsquic_aes_aead_dec(key, + buf, *header_len, + nonce, 12, + buf + *header_len, data_len, + buf_out + *header_len, out_len); + + if (ret != 0) + ++try_times; + else + { + if (enc_session->peer_have_final_key == 0 && + enc_session->have_key == 3 && + try_times == 0) + { + LSQ_DEBUG("!!!decrypt_packet find peer have final key."); + enc_session->peer_have_final_key = 1; + EV_LOG_CONN_EVENT(&enc_session->cid, "settled on private key " + "'%c' after %d tries (packet number %"PRIu64")", + key == enc_session->dec_ctx_f ? 'F' : 'I', + try_times, pack_num); + } + break; + } + } + while (try_times < 2); + + LSQ_DEBUG("***decrypt_packet %s.", (ret == 0 ? "succeed" : "failed")); + return ret == 0 ? enc_level : (enum enc_level) -1; +} + + +static int +lsquic_enc_session_have_key_gt_one (enc_session_t *enc_session_p) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + return enc_session && enc_session->have_key > 1; +} + + +/* The size of `buf' is *header_len plus data_len. The two parts of the + * buffer correspond to the header and the payload of incoming QUIC packet. + */ +static enum enc_level +lsquic_enc_session_decrypt (struct lsquic_enc_session *enc_session, + enum lsquic_version version, + uint8_t path_id, uint64_t pack_num, + unsigned char *buf, size_t *header_len, size_t data_len, + unsigned char *diversification_nonce, + unsigned char *buf_out, size_t max_out_len, size_t *out_len) +{ + /* Client: got SHLO which should have diversification_nonce */ + if (diversification_nonce && enc_session && enc_session->have_key == 1) + { + determine_diversification_key(enc_session, diversification_nonce); + enc_session->have_key = 2; + } + + if (lsquic_enc_session_have_key_gt_one(enc_session)) + return decrypt_packet(enc_session, path_id, pack_num, buf, + header_len, data_len, buf_out, max_out_len, out_len); + else if (0 == verify_packet_hash(enc_session, version, buf, header_len, + data_len, buf_out, max_out_len, out_len)) + return ENC_LEV_INIT; + else + return -1; +} + + +static enum dec_packin +gquic_decrypt_packet (enc_session_t *enc_session_p, + struct lsquic_engine_public *enpub, + const struct lsquic_conn *lconn, + struct lsquic_packet_in *packet_in) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + size_t header_len, data_len; + enum enc_level enc_level; + size_t out_len = 0; + unsigned char *copy = lsquic_mm_get_packet_in_buf(&enpub->enp_mm, 1370); + if (!copy) + { + LSQ_WARN("cannot allocate memory to copy incoming packet data"); + return DECPI_NOMEM; + } + + assert(packet_in->pi_data); + header_len = packet_in->pi_header_sz; + data_len = packet_in->pi_data_sz - packet_in->pi_header_sz; + enc_level = lsquic_enc_session_decrypt(enc_session, + lconn->cn_version, 0, + packet_in->pi_packno, packet_in->pi_data, + &header_len, data_len, + lsquic_packet_in_nonce(packet_in), + copy, 1370, &out_len); + if ((enum enc_level) -1 == enc_level) + { + lsquic_mm_put_packet_in_buf(&enpub->enp_mm, copy, 1370); + EV_LOG_CONN_EVENT(&lconn->cn_cid, "could not decrypt packet %"PRIu64, + packet_in->pi_packno); + return DECPI_BADCRYPT; + } + + assert(header_len + out_len <= 1370); + if (packet_in->pi_flags & PI_OWN_DATA) + lsquic_mm_put_packet_in_buf(&enpub->enp_mm, packet_in->pi_data, 1370); + packet_in->pi_data = copy; + packet_in->pi_flags |= PI_OWN_DATA | PI_DECRYPTED + | (enc_level << PIBIT_ENC_LEV_SHIFT); + packet_in->pi_header_sz = header_len; + packet_in->pi_data_sz = out_len + header_len; + EV_LOG_CONN_EVENT(&lconn->cn_cid, "decrypted packet %"PRIu64, + packet_in->pi_packno); + return DECPI_OK; +} + + +static enum enc_level +gquic_encrypt_buf (struct lsquic_enc_session *enc_session, + enum lsquic_version version, + uint8_t path_id, uint64_t pack_num, + const unsigned char *header, size_t header_len, + const unsigned char *data, size_t data_len, + unsigned char *buf_out, size_t max_out_len, size_t *out_len, + int is_hello) +{ + uint8_t md[HS_PKT_HASH_LENGTH]; + uint128 hash; + int ret; + enum enc_level enc_level; + int is_chlo = (is_hello && ((IS_SERVER(enc_session)) == 0)); + int is_shlo = (is_hello && (IS_SERVER(enc_session))); + + /* Comment: 12 = sizeof(dec_key_iv] 4 + sizeof(pack_num) 8 */ + uint8_t nonce[12]; + uint64_t path_id_packet_number; + EVP_AEAD_CTX *key; + + if (enc_session) + LSQ_DEBUG("%s: hsk_state: %d", __func__, enc_session->hsk_state); + else + LSQ_DEBUG("%s: enc_session is not set", __func__); + + if (!enc_session || enc_session->have_key == 0 || is_chlo) + { + *out_len = header_len + data_len + HS_PKT_HASH_LENGTH; + if (max_out_len < *out_len) + return -1; + + if (!enc_session || (IS_SERVER(enc_session))) + hash = lsquic_fnv1a_128_3(header, header_len, data, data_len, + (unsigned char *) "Server", 6); + else + hash = lsquic_fnv1a_128_3(header, header_len, data, data_len, + (unsigned char *) "Client", 6); + + lsquic_serialize_fnv128_short(hash, md); + memcpy(buf_out, header, header_len); + memcpy(buf_out + header_len, md, HS_PKT_HASH_LENGTH); + memcpy(buf_out + header_len + HS_PKT_HASH_LENGTH, data, data_len); + return ENC_LEV_INIT; + } + else + { + if (enc_session->have_key != 3 || is_shlo || + ((IS_SERVER(enc_session)) && + enc_session->server_start_use_final_key == 0)) + { + LSQ_DEBUG("lsquic_enc_session_encrypt using 'I' key..."); + key = enc_session->enc_ctx_i; + memcpy(nonce, enc_session->enc_key_nonce_i, 4); + if (is_shlo && enc_session->have_key == 3) + { + enc_session->server_start_use_final_key = 1; + } + enc_level = ENC_LEV_HSK; + } + else + { + LSQ_DEBUG("lsquic_enc_session_encrypt using 'F' key..."); + key = enc_session->enc_ctx_f; + memcpy(nonce, enc_session->enc_key_nonce_f, 4); + enc_level = ENC_LEV_APP; + } + path_id_packet_number = combine_path_id_pack_num(path_id, pack_num); + memcpy(nonce + 4, &path_id_packet_number, + sizeof(path_id_packet_number)); + + memcpy(buf_out, header, header_len); + *out_len = max_out_len - header_len; + + ret = lsquic_aes_aead_enc(key, header, header_len, nonce, 12, data, + data_len, buf_out + header_len, out_len); + if (ret == 0) + { + *out_len += header_len; + return enc_level; + } + else + return -1; + } +} + + +/* server */ +/* out_len should have init value as the max length of out */ +/* return -1 error, 0, SHLO, 1, RTT1, 2, RTT2, DELAYED */ +static enum handshake_error +lsquic_enc_session_handle_chlo(enc_session_t *enc_session_p, + enum lsquic_version version, + const uint8_t *in, int in_len, time_t t, + const struct sockaddr *peer, + const struct sockaddr *local, + uint8_t *out, size_t *out_len, + uint8_t nonce[DNONC_LENGTH], int *nonce_set) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + enum handshake_error rtt; + int len; + lsquic_server_config_t *server_config; + const struct lsquic_engine_public *const enpub = enc_session->enpub; + const struct lsquic_shared_hash_if *const shi = enpub->enp_shi; + void *const shi_ctx = enpub->enp_shi_ctx; + + server_config = get_valid_scfg(enc_session, enpub); + if (!server_config) + return HS_ERROR; + assert(server_config->lsc_scfg); + + enc_session->server_config = server_config; + + *nonce_set = 0; + rtt = handle_chlo_frames_data(in, in_len, enc_session, + enpub->enp_lookup_cert, enpub->enp_cert_lu_ctx, + local, shi, shi_ctx, peer, t); + if (rtt == HS_1RTT) + { + + LSQ_DEBUG("lsquic_enc_session_handle_chlo call gen_rej1_data"); + len = gen_rej1_data(enc_session, out, *out_len, peer, t); + if (len < 0) + { + rtt = HS_ERROR; + goto end; + } + *out_len = len; + } + else if (rtt == HS_SHLO) + { + enc_session->have_key = 0; + determine_keys(enc_session); + enc_session->have_key = 1; + + LSQ_DEBUG("lsquic_enc_session_handle_chlo call gen_shlo_data"); + len = gen_shlo_data(out, *out_len, enc_session, version, peer, + t, nonce); + if (len < 0) + { + rtt = HS_ERROR; + goto end; + } + *out_len = len; + *nonce_set = 1; + + determine_diversification_key(enc_session, nonce); + enc_session->have_key = 2; + determine_keys(enc_session); + enc_session->have_key = 3; + + enc_session->hsk_state = HSK_COMPLETED; + LSQ_DEBUG("lsquic_enc_session_handle_chlo have_key 3 hsk_state HSK_COMPLETED."); + } + + end: + EV_LOG_CONN_EVENT(&enc_session->cid, "%s returning %s", __func__, + he2str(rtt)); + return rtt; +} + + +static int +lsquic_enc_session_get_peer_option (enc_session_t *enc_session_p, + uint32_t tag) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + switch (tag) + { + case QTAG_NSTP: + return !!(enc_session->hs_ctx.opts & HOPT_NSTP); + case QTAG_SREJ: + return !!(enc_session->hs_ctx.opts & HOPT_SREJ); + default: + assert(0); + return 0; + } +} + + +/* Query a several parameters sent by the peer that are required by + * connection. + */ +static int +lsquic_enc_session_get_peer_setting (enc_session_t *enc_session_p, + uint32_t tag, uint32_t *val) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + switch (tag) + { + case QTAG_TCID: + if (enc_session->hs_ctx.set & HSET_TCID) + { + *val = enc_session->hs_ctx.tcid; + return 0; + } + else + return -1; + case QTAG_SMHL: + if (enc_session->hs_ctx.set & HSET_SMHL) + { + *val = enc_session->hs_ctx.smhl; + return 0; + } + else + return -1; + case QTAG_IRTT: + if (enc_session->hs_ctx.set & HSET_IRTT) + { + *val = enc_session->hs_ctx.irtt; + return 0; + } + else + return -1; + } + + /* XXX For the following values, there is no record which were present + * in CHLO or SHLO and which were not. Assume that zero means that + * they weren't present. + */ + if (IS_SERVER(enc_session)) + switch (tag) + { + case QTAG_CFCW: + if (enc_session->hs_ctx.scfcw) + { + *val = enc_session->hs_ctx.scfcw; + return 0; + } + else + return -1; + case QTAG_SFCW: + if (enc_session->hs_ctx.ssfcw) + { + *val = enc_session->hs_ctx.ssfcw; + return 0; + } + else + return -1; + case QTAG_MIDS: + if (enc_session->hs_ctx.smids) + { + *val = enc_session->hs_ctx.smids; + return 0; + } + else + return -1; + default: + return -1; + } + else + switch (tag) + { + case QTAG_CFCW: + if (enc_session->hs_ctx.cfcw) + { + *val = enc_session->hs_ctx.cfcw; + return 0; + } + else + return -1; + case QTAG_SFCW: + if (enc_session->hs_ctx.sfcw) + { + *val = enc_session->hs_ctx.sfcw; + return 0; + } + else + return -1; + case QTAG_MIDS: + if (enc_session->hs_ctx.mids) + { + *val = enc_session->hs_ctx.mids; + return 0; + } + else + return -1; + default: + return -1; + } +} + + +static const char * +lsquic_enc_session_cipher (enc_session_t *enc_session_p) +{ + return LN_aes_128_gcm; /* TODO: get this string from enc_session */ +} + + +static int +lsquic_enc_session_keysize (enc_session_t *enc_session_p) +{ + return 128 /* bits */ / 8; /* TODO: get this info from enc_session */ +} + + +static int +lsquic_enc_session_alg_keysize (enc_session_t *enc_session_p) +{ + return 16; /* TODO: get this info from enc_session */ +} + + +#if LSQUIC_KEEP_ENC_SESS_HISTORY +static void +lsquic_get_enc_hist (enc_session_t *enc_session_p, + char buf[(1 << ESHIST_BITS) + 1]) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + const unsigned hist_idx = ESHIST_MASK & enc_session->es_hist_idx; + if (enc_session->es_hist_buf[hist_idx] == ESHE_EMPTY) + memcpy(buf, enc_session->es_hist_buf, hist_idx + 1); + else + { + memcpy(buf, enc_session->es_hist_buf + hist_idx, sizeof(enc_session->es_hist_buf) - hist_idx); + memcpy(buf + hist_idx, enc_session->es_hist_buf, hist_idx); + buf[(1 << ESHIST_BITS)] = '\0'; + } +} + + +#endif + + +static const char * +lsquic_enc_session_get_ua (enc_session_t *enc_session_p) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + if (enc_session && lsquic_str_len(&enc_session->hs_ctx.uaid) > 0) + return lsquic_str_buf(&enc_session->hs_ctx.uaid); + else + return NULL; +} + + +static const char * +lsquic_enc_session_get_sni (enc_session_t *enc_session_p) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + return lsquic_str_cstr(&enc_session->hs_ctx.sni); +} + + +#ifndef NDEBUG +static uint8_t +lsquic_enc_session_have_key (enc_session_t *enc_session_p) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + return enc_session->have_key; +} + + +static void +lsquic_enc_session_set_have_key (enc_session_t *enc_session_p, uint8_t val) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + enc_session->have_key = val; +} + + +static const unsigned char * +lsquic_enc_session_get_enc_key_i (enc_session_t *enc_session_p) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + return enc_session->enc_key_i; +} + + +static const unsigned char * +lsquic_enc_session_get_dec_key_i (enc_session_t *enc_session_p) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + return enc_session->dec_key_i; +} + + +static const unsigned char * +lsquic_enc_session_get_enc_key_nonce_i (enc_session_t *enc_session_p) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + return enc_session->enc_key_nonce_i; +} + + +static const unsigned char * +lsquic_enc_session_get_dec_key_nonce_i (enc_session_t *enc_session_p) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + return enc_session->dec_key_nonce_i; +} + + +static const unsigned char * +lsquic_enc_session_get_enc_key_nonce_f (enc_session_t *enc_session_p) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + return enc_session->enc_key_nonce_f; +} + + +static const unsigned char * +lsquic_enc_session_get_dec_key_nonce_f (enc_session_t *enc_session_p) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + return enc_session->dec_key_nonce_f; +} + + +#endif /* not defined NDEBUG */ + + +static size_t +lsquic_enc_session_mem_used (enc_session_t *enc_session_p) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + size_t size; + + size = sizeof(*enc_session); + + size += lsquic_str_len(&enc_session->chlo); + size += lsquic_str_len(&enc_session->sstk); + size += lsquic_str_len(&enc_session->ssno); + + size += lsquic_str_len(&enc_session->hs_ctx.ccs); + size += lsquic_str_len(&enc_session->hs_ctx.uaid); + size += lsquic_str_len(&enc_session->hs_ctx.sni); + size += lsquic_str_len(&enc_session->hs_ctx.ccrt); + size += lsquic_str_len(&enc_session->hs_ctx.stk); + size += lsquic_str_len(&enc_session->hs_ctx.sno); + size += lsquic_str_len(&enc_session->hs_ctx.prof); + size += lsquic_str_len(&enc_session->hs_ctx.csct); + if (enc_session->hs_ctx.ccert) + size += enc_session->hs_ctx.ccert->len + + sizeof(*enc_session->hs_ctx.ccert); + + if (enc_session->info) + { + size += sizeof(*enc_session->info); + size += lsquic_str_len(&enc_session->info->sstk); + size += lsquic_str_len(&enc_session->info->scfg); + size += lsquic_str_len(&enc_session->info->sni_key); + } + + /* TODO: calculate memory taken up by SSL stuff */ + + return size; +} + + +static int +lsquic_enc_session_verify_reset_token (enc_session_t *enc_session_p, + const unsigned char *buf, size_t bufsz) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + if (bufsz == SRST_LENGTH + && 0 == (enc_session->es_flags & ES_SERVER) + && (enc_session->hs_ctx.set & HSET_SRST) + && 0 == memcmp(buf, enc_session->hs_ctx.srst, SRST_LENGTH)) + return 0; + else + return -1; +} + + +static int +lsquic_enc_session_did_sess_resume_succeed (enc_session_t *enc_session_p) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + return !(enc_session->es_flags & ES_RECV_REJ); +} + + +static int +lsquic_enc_session_is_sess_resume_enabled (enc_session_t *enc_session_p) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + return enc_session->info && enc_session->cert_item; +} + + +static ssize_t +gquic_really_encrypt_packet (struct lsquic_enc_session *enc_session, + const struct lsquic_conn *lconn, struct lsquic_packet_out *packet_out, + unsigned char *buf, size_t bufsz) +{ + int header_sz, is_hello_packet; + enum enc_level enc_level; + size_t packet_sz; + unsigned char header_buf[GQUIC_MAX_PUBHDR_SZ]; + + header_sz = lconn->cn_pf->pf_gen_reg_pkt_header(lconn, packet_out, + header_buf, sizeof(header_buf), NULL, NULL); + if (header_sz < 0) + return -1; + + is_hello_packet = !!(packet_out->po_flags & PO_HELLO); + enc_level = gquic_encrypt_buf(enc_session, lconn->cn_version, 0, + packet_out->po_packno, header_buf, header_sz, + packet_out->po_data, packet_out->po_data_sz, + buf, bufsz, &packet_sz, is_hello_packet); + if ((int) enc_level >= 0) + { + LSQ_DEBUG("encrypted packet %"PRIu64"; plaintext is %zu bytes, " + "ciphertext is %zd bytes", + packet_out->po_packno, + lconn->cn_pf->pf_packout_size(lconn, packet_out) + + packet_out->po_data_sz, + packet_sz); + lsquic_packet_out_set_enc_level(packet_out, enc_level); + return packet_sz; + } + else + return -1; +} + + +static STACK_OF(X509) * +lsquic_enc_session_get_server_cert_chain (enc_session_t *enc_session_p) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + const struct c_cert_item_st *item; + STACK_OF(X509) *chain; + X509 *cert; + int i; + + if (enc_session->es_flags & ES_SERVER) + return NULL; + item = enc_session->cert_item; + if (!item) + { + LSQ_WARN("could not find certificates for `%.*s'", + (int) lsquic_str_len(&enc_session->hs_ctx.sni), + lsquic_str_cstr(&enc_session->hs_ctx.sni)); + return NULL; + } + + chain = sk_X509_new_null(); + for (i = 0; i < item->count; ++i) + { + cert = lsquic_bio_to_crt(lsquic_str_cstr(&item->crts[i]), + lsquic_str_len(&item->crts[i]), 0); + if (cert) + sk_X509_push(chain, cert); + else + { + sk_X509_free(chain); + return NULL; + } + } + + return chain; +} + + +static void +maybe_dispatch_sess_resume (enc_session_t *enc_session_p, + void (*cb)(struct lsquic_conn *, const unsigned char *, size_t)) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + struct lsquic_conn *const lconn = enc_session->es_conn; + void *buf; + size_t sz; + int i; + + if (!(enc_session->info && enc_session->cert_item && cb)) + { + LSQ_DEBUG("no session resumption information or callback is not set"); + return; + } + + for (sz = 0, i = 0; i < enc_session->cert_item->count; ++i) + { + sz += sizeof(uint32_t); + sz += lsquic_str_len(&enc_session->cert_item->crts[i]); + } + sz += sizeof(struct lsquic_sess_resume_storage); + + buf = malloc(sz); + if (!buf) + { + LSQ_WARN("malloc failed: cannot allocate %zu bytes for session " + "resumption", sz); + return; + } + + lsquic_enc_session_serialize_sess_resume( + (struct lsquic_sess_resume_storage *) buf, lconn->cn_version, + enc_session->info, enc_session->cert_item); + + cb(lconn, buf, sz); + free(buf); +} + + +static enum enc_packout +gquic_encrypt_packet (enc_session_t *enc_session_p, + const struct lsquic_engine_public *enpub, + struct lsquic_conn *lconn, struct lsquic_packet_out *packet_out) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + ssize_t enc_sz; + size_t bufsz; + unsigned char *buf; + int ipv6; + + assert(!enc_session || lconn == enc_session->es_conn); + + bufsz = lconn->cn_pf->pf_packout_size(lconn, packet_out); + if (bufsz > USHRT_MAX) + return ENCPA_BADCRYPT; /* To cause connection to close */ + ipv6 = NP_IS_IPv6(packet_out->po_path); + buf = enpub->enp_pmi->pmi_allocate(enpub->enp_pmi_ctx, + packet_out->po_path->np_peer_ctx, lconn->cn_conn_ctx, + bufsz, ipv6); + if (!buf) + { + LSQ_DEBUG("could not allocate memory for outgoing packet of size %zd", + bufsz); + return ENCPA_NOMEM; + } + + enc_sz = gquic_really_encrypt_packet(enc_session, + lconn, packet_out, buf, bufsz); + if (enc_sz < 0) + { + enpub->enp_pmi->pmi_return(enpub->enp_pmi_ctx, + packet_out->po_path->np_peer_ctx, buf, ipv6); + return ENCPA_BADCRYPT; + } + + packet_out->po_enc_data = buf; + packet_out->po_enc_data_sz = enc_sz; + packet_out->po_sent_sz = enc_sz; + packet_out->po_flags &= ~PO_IPv6; + packet_out->po_flags |= PO_ENCRYPTED|PO_SENT_SZ|(ipv6 << POIPv6_SHIFT); + packet_out->po_dcid_len = GQUIC_CID_LEN; + + return ENCPA_OK; +} + + +static void +gquic_esf_set_conn (enc_session_t *enc_session_p, struct lsquic_conn *lconn) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + enc_session->es_conn = lconn; + LSQ_DEBUG("updated conn reference"); +} + + +#ifdef NDEBUG +const +#endif +struct enc_session_funcs_common lsquic_enc_session_common_gquic_1 = +{ + .esf_global_init = lsquic_handshake_init, + .esf_global_cleanup = lsquic_handshake_cleanup, + .esf_cipher = lsquic_enc_session_cipher, + .esf_keysize = lsquic_enc_session_keysize, + .esf_alg_keysize = lsquic_enc_session_alg_keysize, + .esf_get_sni = lsquic_enc_session_get_sni, + .esf_encrypt_packet = gquic_encrypt_packet, + .esf_decrypt_packet = gquic_decrypt_packet, + .esf_tag_len = GQUIC_PACKET_HASH_SZ, + .esf_get_server_cert_chain = lsquic_enc_session_get_server_cert_chain, + .esf_verify_reset_token = lsquic_enc_session_verify_reset_token, + .esf_did_sess_resume_succeed = lsquic_enc_session_did_sess_resume_succeed, + .esf_is_sess_resume_enabled = lsquic_enc_session_is_sess_resume_enabled, + .esf_set_conn = gquic_esf_set_conn, +}; + + +static void +gquic2_gen_hp_mask (struct lsquic_enc_session *enc_session, + const unsigned char hp[IQUIC_HP_LEN], + const unsigned char *sample, unsigned char mask[EVP_MAX_BLOCK_LENGTH]) +{ + const EVP_CIPHER *const cipher = EVP_aes_128_ecb(); + EVP_CIPHER_CTX hp_ctx; + int out_len; + + EVP_CIPHER_CTX_init(&hp_ctx); + if (EVP_EncryptInit_ex(&hp_ctx, cipher, NULL, hp, 0) + && EVP_EncryptUpdate(&hp_ctx, mask, &out_len, sample, 16)) + { + assert(out_len >= 5); + } + else + { + LSQ_WARN("cannot generate hp mask, error code: %"PRIu32, + ERR_get_error()); + enc_session->es_conn->cn_if->ci_internal_error(enc_session->es_conn, + "cannot generate hp mask, error code: %"PRIu32, ERR_get_error()); + } + + (void) EVP_CIPHER_CTX_cleanup(&hp_ctx); + + if (0) + { + char hp_str[IQUIC_HP_LEN * 2 + 1], sample_str[16 * 2 + 1]; + LSQ_DEBUG("generated hp mask using hp %s and sample %s", + HEXSTR(hp, IQUIC_HP_LEN, hp_str), + HEXSTR(sample, 16, sample_str)); + } +} + + +static void +gquic2_apply_hp (struct lsquic_enc_session *enc_session, + enum gel gel, unsigned char *dst, unsigned packno_off, + unsigned sample_off, unsigned packno_len) +{ + unsigned char mask[EVP_MAX_BLOCK_LENGTH]; + char mask_str[5 * 2 + 1]; + + gquic2_gen_hp_mask(enc_session, enc_session->es_hps[gel][0], + dst + sample_off, mask); + LSQ_DEBUG("apply header protection using mask %s", + HEXSTR(mask, 5, mask_str)); + dst[0] ^= (0xF | (((dst[0] & 0x80) == 0) << 4)) & mask[0]; + switch (packno_len) + { + case 4: + dst[packno_off + 3] ^= mask[4]; + /* fall-through */ + case 3: + dst[packno_off + 2] ^= mask[3]; + /* fall-through */ + case 2: + dst[packno_off + 1] ^= mask[2]; + /* fall-through */ + default: + dst[packno_off + 0] ^= mask[1]; + } +} + + +static const enum gel hety2gel[] = +{ + [HETY_NOT_SET] = GEL_FORW, + [HETY_VERNEG] = 0, + [HETY_INITIAL] = GEL_CLEAR, + [HETY_RETRY] = 0, + [HETY_HANDSHAKE] = GEL_CLEAR, + [HETY_0RTT] = GEL_EARLY, +}; + + +static const char *const gel2str[] = +{ + [GEL_CLEAR] = "clear", + [GEL_EARLY] = "early", + [GEL_FORW] = "forw-secure", +}; + + +static const enum enc_level gel2el[] = +{ + [GEL_CLEAR] = ENC_LEV_INIT, + [GEL_EARLY] = ENC_LEV_0RTT, + [GEL_FORW] = ENC_LEV_APP, +}; + + +static enum enc_packout +gquic2_esf_encrypt_packet (enc_session_t *enc_session_p, + const struct lsquic_engine_public *enpub, struct lsquic_conn *lconn_UNUSED, + struct lsquic_packet_out *packet_out) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + struct lsquic_conn *const lconn = enc_session->es_conn; + EVP_AEAD_CTX *aead_ctx; + unsigned char *dst; + enum gel gel; + unsigned char nonce_buf[ IQUIC_IV_LEN + 8 ]; + unsigned char *nonce, *begin_xor; + lsquic_packno_t packno; + size_t out_sz, dst_sz; + int header_sz; + int ipv6; + unsigned packno_off, packno_len, sample_off, divers_nonce_len; + char errbuf[ERR_ERROR_STRING_BUF_LEN]; + + gel = hety2gel[ packet_out->po_header_type ]; + aead_ctx = enc_session->es_aead_ctxs[gel][0]; + if (UNLIKELY(!aead_ctx)) + { + LSQ_WARN("encrypt crypto context at level %s not initialized", + gel2str[gel]); + return ENCPA_BADCRYPT; + } + + if (packet_out->po_data_sz < 3) + { + /* [draft-ietf-quic-tls-20] Section 5.4.2 */ + enum packno_bits bits = lsquic_packet_out_packno_bits(packet_out); + /* XXX same packet rules as in IETF QUIC? */ + unsigned len = iquic_packno_bits2len(bits); + if (packet_out->po_data_sz + len < 4) + { + len = 4 - packet_out->po_data_sz - len; + memset(packet_out->po_data + packet_out->po_data_sz, 0, len); + packet_out->po_data_sz += len; + packet_out->po_frame_types |= QUIC_FTBIT_PADDING; + LSQ_DEBUG("padded packet %"PRIu64" with %u bytes of PADDING", + packet_out->po_packno, len); + } + } + + dst_sz = lconn->cn_pf->pf_packout_size(lconn, packet_out); + ipv6 = NP_IS_IPv6(packet_out->po_path); + dst = enpub->enp_pmi->pmi_allocate(enpub->enp_pmi_ctx, + packet_out->po_path->np_peer_ctx, lconn->cn_conn_ctx, + dst_sz, ipv6); + if (!dst) + { + LSQ_DEBUG("could not allocate memory for outgoing packet of size %zd", + dst_sz); + return ENCPA_NOMEM; + } + + /* Align nonce so we can perform XOR safely in one shot: */ + begin_xor = nonce_buf + sizeof(nonce_buf) - 8; + begin_xor = (unsigned char *) ((uintptr_t) begin_xor & ~0x7); + nonce = begin_xor - IQUIC_IV_LEN + 8; + memcpy(nonce, enc_session->es_ivs[gel][0], IQUIC_IV_LEN); + packno = packet_out->po_packno; +#if __BYTE_ORDER == __LITTLE_ENDIAN + packno = bswap_64(packno); +#endif + *((uint64_t *) begin_xor) ^= packno; + + header_sz = lconn->cn_pf->pf_gen_reg_pkt_header(lconn, packet_out, dst, + dst_sz, &packno_off, &packno_len); + if (header_sz < 0) + goto err; + + if (s_log_seal_and_open) + { + LSQ_DEBUG("seal: iv (%u bytes): %s", IQUIC_IV_LEN, + HEXSTR(nonce, IQUIC_IV_LEN, s_str)); + LSQ_DEBUG("seal: ad (%u bytes): %s", header_sz, + HEXSTR(dst, header_sz, s_str)); + LSQ_DEBUG("seal: in (%hu bytes): %s", packet_out->po_data_sz, + HEXSTR(packet_out->po_data, packet_out->po_data_sz, s_str)); + } + + if (!EVP_AEAD_CTX_seal(aead_ctx, dst + header_sz, &out_sz, + dst_sz - header_sz, nonce, IQUIC_IV_LEN, + packet_out->po_data, packet_out->po_data_sz, dst, header_sz)) + { + LSQ_WARN("cannot seal packet #%"PRIu64": %s", packet_out->po_packno, + ERR_error_string(ERR_get_error(), errbuf)); + goto err; + } + assert(out_sz == dst_sz - header_sz); + + if (!packet_out->po_nonce) + divers_nonce_len = 0; + else + { + assert(enc_session->es_flags & ES_SERVER); + assert(gel == GEL_EARLY); + divers_nonce_len = DNONC_LENGTH; + } + sample_off = packno_off + divers_nonce_len + 4; + assert(sample_off + IQUIC_TAG_LEN <= dst_sz); + gquic2_apply_hp(enc_session, gel, dst, packno_off, sample_off, packno_len); + + packet_out->po_enc_data = dst; + packet_out->po_enc_data_sz = dst_sz; + packet_out->po_sent_sz = dst_sz; + packet_out->po_flags &= ~PO_IPv6; + packet_out->po_flags |= PO_ENCRYPTED|PO_SENT_SZ|(ipv6 << POIPv6_SHIFT); + lsquic_packet_out_set_enc_level(packet_out, gel2el[gel]); + return ENCPA_OK; + + err: + enpub->enp_pmi->pmi_return(enpub->enp_pmi_ctx, + packet_out->po_path->np_peer_ctx, dst, ipv6); + return ENCPA_BADCRYPT; +} + + +/* XXX this is an exact copy, can reuse */ +static lsquic_packno_t +decode_packno (lsquic_packno_t max_packno, lsquic_packno_t packno, + unsigned shift) +{ + lsquic_packno_t candidates[3], epoch_delta; + int64_t diffs[3]; + unsigned min;; + + epoch_delta = 1ULL << shift; + candidates[1] = (max_packno & ~(epoch_delta - 1)) + packno; + candidates[0] = candidates[1] - epoch_delta; + candidates[2] = candidates[1] + epoch_delta; + + diffs[0] = llabs((int64_t) candidates[0] - (int64_t) max_packno); + diffs[1] = llabs((int64_t) candidates[1] - (int64_t) max_packno); + diffs[2] = llabs((int64_t) candidates[2] - (int64_t) max_packno); + + min = diffs[1] < diffs[0]; + if (diffs[2] < diffs[min]) + min = 2; + + return candidates[min]; +} + + +static lsquic_packno_t +gquic2_strip_hp (struct lsquic_enc_session *enc_session, + enum gel gel, const unsigned char *iv, unsigned char *dst, + unsigned packno_off, unsigned *packno_len) +{ + lsquic_packno_t packno; + unsigned shift; + unsigned char mask[EVP_MAX_BLOCK_LENGTH]; + char mask_str[5 * 2 + 1]; + + gquic2_gen_hp_mask(enc_session, enc_session->es_hps[gel][1], iv, mask); + LSQ_DEBUG("strip header protection using mask %s", + HEXSTR(mask, 5, mask_str)); + dst[0] ^= (0xF | (((dst[0] & 0x80) == 0) << 4)) & mask[0]; + packno = 0; + shift = 0; + *packno_len = 1 + (dst[0] & 3); + switch (*packno_len) + { + case 4: + dst[packno_off + 3] ^= mask[4]; + packno |= dst[packno_off + 3]; + shift += 8; + /* fall-through */ + case 3: + dst[packno_off + 2] ^= mask[3]; + packno |= (unsigned) dst[packno_off + 2] << shift; + shift += 8; + /* fall-through */ + case 2: + dst[packno_off + 1] ^= mask[2]; + packno |= (unsigned) dst[packno_off + 1] << shift; + shift += 8; + /* fall-through */ + default: + dst[packno_off + 0] ^= mask[1]; + packno |= (unsigned) dst[packno_off + 0] << shift; + shift += 8; + } + return decode_packno(enc_session->es_max_packno, packno, shift); +} + + +static enum dec_packin +gquic2_esf_decrypt_packet (enc_session_t *enc_session_p, + struct lsquic_engine_public *enpub, const struct lsquic_conn *lconn, + struct lsquic_packet_in *packet_in) +{ + struct lsquic_enc_session *const enc_session = enc_session_p; + unsigned char *dst; + unsigned char nonce_buf[ IQUIC_IV_LEN + 8 ]; + unsigned char *nonce, *begin_xor; + unsigned sample_off, packno_len, divers_nonce_len; + enum gel gel; + lsquic_packno_t packno; + size_t out_sz; + enum dec_packin dec_packin; + const size_t dst_sz = packet_in->pi_data_sz - IQUIC_TAG_LEN; + char errbuf[ERR_ERROR_STRING_BUF_LEN]; + + dst = lsquic_mm_get_packet_in_buf(&enpub->enp_mm, dst_sz); + if (!dst) + { + LSQ_WARN("cannot allocate memory to copy incoming packet data"); + dec_packin = DECPI_NOMEM; + goto err; + } + + if (!(HETY_0RTT == packet_in->pi_header_type + && !(enc_session->es_flags & ES_SERVER))) + divers_nonce_len = 0; + else + divers_nonce_len = DNONC_LENGTH; + + gel = hety2gel[packet_in->pi_header_type]; + if (UNLIKELY(!enc_session->es_aead_ctxs[gel][1])) + { + LSQ_INFO("decrypt crypto context at level %s not initialized", + gel2str[gel]); + dec_packin = DECPI_BADCRYPT; + goto err; + } + + /* Decrypt packet number. After this operation, packet_in is adjusted: + * the packet number becomes part of the header. + */ + sample_off = packet_in->pi_header_sz + divers_nonce_len + 4; + if (sample_off + IQUIC_TAG_LEN > packet_in->pi_data_sz) + { + LSQ_INFO("packet data is too short: %hu bytes", + packet_in->pi_data_sz); + dec_packin = DECPI_TOO_SHORT; + goto err; + } + memcpy(dst, packet_in->pi_data, sample_off); + packet_in->pi_packno = + packno = gquic2_strip_hp(enc_session, gel, + packet_in->pi_data + sample_off, + dst, packet_in->pi_header_sz, &packno_len); + + packet_in->pi_header_sz += packno_len; + if (UNLIKELY(divers_nonce_len)) + { + if (enc_session->have_key == 1) + { + determine_diversification_key(enc_session, + dst + packet_in->pi_header_sz); + enc_session->have_key = 2; + } + packet_in->pi_header_sz += divers_nonce_len; + } + + /* Align nonce so we can perform XOR safely in one shot: */ + begin_xor = nonce_buf + sizeof(nonce_buf) - 8; + begin_xor = (unsigned char *) ((uintptr_t) begin_xor & ~0x7); + nonce = begin_xor - IQUIC_IV_LEN + 8; + memcpy(nonce, enc_session->es_ivs[gel][1], IQUIC_IV_LEN); +#if __BYTE_ORDER == __LITTLE_ENDIAN + packno = bswap_64(packno); +#endif + *((uint64_t *) begin_xor) ^= packno; + + if (s_log_seal_and_open) + { + LSQ_DEBUG("open: iv (%u bytes): %s", IQUIC_IV_LEN, + HEXSTR(nonce, IQUIC_IV_LEN, s_str)); + LSQ_DEBUG("open: ad (%u bytes): %s", packet_in->pi_header_sz, + HEXSTR(dst, packet_in->pi_header_sz, s_str)); + LSQ_DEBUG("open: in (%u bytes): %s", + packet_in->pi_data_sz - packet_in->pi_header_sz, + HEXSTR(packet_in->pi_data + packet_in->pi_header_sz, + packet_in->pi_data_sz - packet_in->pi_header_sz, s_str)); + } + + if (!EVP_AEAD_CTX_open(enc_session->es_aead_ctxs[gel][1], + dst + packet_in->pi_header_sz, &out_sz, + dst_sz - packet_in->pi_header_sz, nonce, IQUIC_IV_LEN, + packet_in->pi_data + packet_in->pi_header_sz, + packet_in->pi_data_sz - packet_in->pi_header_sz, + dst, packet_in->pi_header_sz)) + { + LSQ_INFO("cannot open packet #%"PRIu64": %s", packet_in->pi_packno, + ERR_error_string(ERR_get_error(), errbuf)); + dec_packin = DECPI_BADCRYPT; + goto err; + } + + /* Bits 2 and 3 are not set and don't need to be checked in gQUIC */ + if (packet_in->pi_flags & PI_OWN_DATA) + lsquic_mm_put_packet_in_buf(&enpub->enp_mm, packet_in->pi_data, + packet_in->pi_data_sz); + packet_in->pi_data_sz = packet_in->pi_header_sz + out_sz; + packet_in->pi_data = dst; + packet_in->pi_flags |= PI_OWN_DATA | PI_DECRYPTED + | (gel2el[gel] << PIBIT_ENC_LEV_SHIFT); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "decrypted packet %"PRIu64, + packet_in->pi_packno); + if (packet_in->pi_packno > enc_session->es_max_packno) + enc_session->es_max_packno = packet_in->pi_packno; + return DECPI_OK; + + err: + if (dst) + lsquic_mm_put_packet_in_buf(&enpub->enp_mm, dst, dst_sz); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "could not decrypt packet (type %s, " + "number %"PRIu64")", lsquic_hety2str[packet_in->pi_header_type], + packet_in->pi_packno); + return dec_packin; +} + + +#ifdef NDEBUG +const +#endif +/* Q050 and later */ +struct enc_session_funcs_common lsquic_enc_session_common_gquic_2 = +{ + .esf_get_sni = lsquic_enc_session_get_sni, + .esf_global_init = lsquic_handshake_init, + .esf_global_cleanup = lsquic_handshake_cleanup, + .esf_cipher = lsquic_enc_session_cipher, + .esf_keysize = lsquic_enc_session_keysize, + .esf_alg_keysize = lsquic_enc_session_alg_keysize, + .esf_get_server_cert_chain = lsquic_enc_session_get_server_cert_chain, + .esf_verify_reset_token = lsquic_enc_session_verify_reset_token, + .esf_did_sess_resume_succeed = lsquic_enc_session_did_sess_resume_succeed, + .esf_is_sess_resume_enabled = lsquic_enc_session_is_sess_resume_enabled, + .esf_set_conn = gquic_esf_set_conn, + /* These are different from gquic_1: */ + .esf_encrypt_packet = gquic2_esf_encrypt_packet, + .esf_decrypt_packet = gquic2_esf_decrypt_packet, + .esf_tag_len = IQUIC_TAG_LEN, +}; + + +#ifdef NDEBUG +const +#endif +struct enc_session_funcs_gquic lsquic_enc_session_gquic_gquic_1 = +{ +#if LSQUIC_KEEP_ENC_SESS_HISTORY + .esf_get_hist = lsquic_get_enc_hist, +#endif + .esf_destroy = lsquic_enc_session_destroy, + .esf_is_hsk_done = lsquic_enc_session_is_hsk_done, + .esf_get_peer_setting = lsquic_enc_session_get_peer_setting, + .esf_get_peer_option = lsquic_enc_session_get_peer_option, + .esf_create_server = lsquic_enc_session_create_server, + .esf_handle_chlo = lsquic_enc_session_handle_chlo, + .esf_get_ua = lsquic_enc_session_get_ua, + .esf_have_key_gt_one = lsquic_enc_session_have_key_gt_one, +#ifndef NDEBUG + .esf_determine_diversification_key = determine_diversification_key, + .esf_have_key = lsquic_enc_session_have_key, + .esf_set_have_key = lsquic_enc_session_set_have_key, + .esf_get_enc_key_i = lsquic_enc_session_get_enc_key_i, + .esf_get_dec_key_i = lsquic_enc_session_get_dec_key_i, + .esf_get_enc_key_nonce_i = lsquic_enc_session_get_enc_key_nonce_i, + .esf_get_dec_key_nonce_i = lsquic_enc_session_get_dec_key_nonce_i, + .esf_get_enc_key_nonce_f = lsquic_enc_session_get_enc_key_nonce_f, + .esf_get_dec_key_nonce_f = lsquic_enc_session_get_dec_key_nonce_f, +#endif /* !defined(NDEBUG) */ + .esf_create_client = lsquic_enc_session_create_client, + .esf_gen_chlo = lsquic_enc_session_gen_chlo, + .esf_handle_chlo_reply = lsquic_enc_session_handle_chlo_reply, + .esf_mem_used = lsquic_enc_session_mem_used, + .esf_maybe_dispatch_sess_resume = maybe_dispatch_sess_resume, + .esf_reset_cid = lsquic_enc_session_reset_cid, +}; + + +typedef char reset_token_lengths_match[ + SRST_LENGTH == IQUIC_SRESET_TOKEN_SZ ? 1 : -1]; + + diff --git a/external/lsquic/src/liblsquic/lsquic_handshake.h b/external/lsquic/src/liblsquic/lsquic_handshake.h new file mode 100644 index 0000000..323c939 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_handshake.h @@ -0,0 +1,123 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_HANDSHAKE_H +#define LSQUIC_HANDSHAKE_H 1 + +#define aes128_key_len 16 +#define aes128_iv_len 4 +#define STK_LENGTH 60 +#define SCID_LENGTH 16 + +struct lsquic_server_config; +struct sockaddr; +struct lsquic_str; +struct lsquic_packet_in; +struct lsquic_cid; +struct lsquic_enc_session; +struct lsquic_engine_public; + +/* client side, certs and hashs + */ +typedef struct cert_hash_item_st +{ + struct lsquic_str* domain; /*with port, such as "xyz.com:8088" as the key */ + struct lsquic_str* crts; + struct lsquic_str* hashs; + struct lsquic_hash_elem hash_el; + int count; +} cert_hash_item_t; + +#ifndef NDEBUG +enum hsk_failure_reason +lsquic_verify_stk0(const struct lsquic_enc_session *, + struct lsquic_server_config *, const struct sockaddr *ip_addr, uint64_t tm, + struct lsquic_str *stk, + unsigned secs_since_stk_generated); +enum hsk_failure_reason +lsquic_verify_stk(void *, const struct sockaddr *ip_addr, + uint64_t tm, struct lsquic_str *stk); +struct cert_hash_item_st* c_find_certs(const struct lsquic_str *domain); +#endif + +#define SNO_LENGTH 56 + +/* EVP_AEAD_CTX from boringssl pre-18d9f28f0df9f95570. */ +struct old_evp_aead_ctx_st { + void *ptr1; /* aead */ + void *ptr2; /* aead_state */ +}; + +/* Server need refresh SCFG once a day */ +/* can not use sizeof() to get the size */ +typedef struct SCFG_info_st +{ + unsigned char sscid[SCID_LENGTH]; + unsigned char priv_key[32]; + unsigned char skt_key[16]; + uint32_t aead; /* Fixed, ONLY AESG */ + uint32_t kexs; /* Fixed, ONLY C255 */ + uint32_t pdmd; /* Fixed, ONLY X509 */ + uint64_t orbt; /* Fixed, 0 */ + uint64_t expy; + /* Keep the hole for compatibility with older builds of LSWS: */ + struct old_evp_aead_ctx_st unused +#if __GNUC__ + __attribute__((deprecated)) +#endif + ; + short scfg_len; +} SCFG_info_t; + +struct SCFG_st +{ + SCFG_info_t info; + unsigned char scfg[]; /* whoile buffer */ +}; +typedef struct SCFG_st SCFG_t; +/* server side need to store STK with expired time */ + +typedef struct lsquic_server_config +{ + SCFG_t *lsc_scfg; /* This part is stored in SHM */ + EVP_AEAD_CTX lsc_stk_ctx; +} lsquic_server_config_t; + +/* Based on enum HandshakeFailureReason in Chromium */ +enum hsk_failure_reason +{ + HFR_HANDSHAKE_OK = 0, + + /* Invalid client nonce in CHLO: */ + HFR_CLIENT_NONCE_UNKNOWN = 1, /* Default nonce failure */ + HFR_CLIENT_NONCE_INVALID = 2, /* Incorrect nonce length */ + HFR_CLIENT_NONCE_NOT_UNIQ = 3, + HFR_CLIENT_NONCE_INVALID_ORBIT = 4, + HFR_CLIENT_NONCE_INVALID_TIME = 5, + + /* Invalid server nonce in CHLO: */ + HFR_SERVER_NONCE_DECRYPTION = 8, + HFR_SERVER_NONCE_INVALID = 9, + HFR_SERVER_NONCE_NOT_UNIQUE = 10, + HFR_SERVER_NONCE_INVALID_TIME = 11, + HFR_SERVER_NONCE_REQUIRED = 20, + + HFR_CONFIG_INCHOATE_HELLO = 12, /* Missing SCID tag */ + HFR_CONFIG_UNKNOWN_CONFIG = 13, /* Could not find server config SCID */ + HFR_SRC_ADDR_TOKEN_INVALID = 14, /* Missing STK tag */ + HFR_SRC_ADDR_TOKEN_DECRYPTION = 15, + HFR_SRC_ADDR_TOKEN_PARSE = 16, + HFR_SRC_ADDR_TOKEN_DIFFERENT_IP_ADDRESS = 17, + HFR_SRC_ADDR_TOKEN_CLOCK_SKEW = 18, + HFR_SRC_ADDR_TOKEN_EXPIRED = 19, + HFR_INVALID_EXPECTED_LEAF_CERTIFICATE = 21, +}; + +enum lsquic_version +lsquic_sess_resume_version (const unsigned char *, size_t); + +int +lsquic_init_gquic_crypto (struct lsquic_engine_public *enpub); + +void +lsquic_cleanup_gquic_crypto (struct lsquic_engine_public *enpub); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_hash.c b/external/lsquic/src/liblsquic/lsquic_hash.c new file mode 100644 index 0000000..d6913ce --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_hash.c @@ -0,0 +1,274 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_hash.c + */ + +#include +#include +#include +#include +#include +#include + +#ifdef WIN32 +#include +#else +#include +#include +#endif + +#if !(defined(_POSIX_TIMERS) && _POSIX_TIMERS > 0) && defined(__APPLE__) +#include +#endif + +#include "lsquic_hash.h" +#include "lsquic_rapidhash.h" + +TAILQ_HEAD(hels_head, lsquic_hash_elem); + +#define N_BUCKETS(n_bits) (1U << (n_bits)) +#define BUCKNO(n_bits, hash) ((hash) & (N_BUCKETS(n_bits) - 1)) + +struct lsquic_hash +{ + struct hels_head *qh_buckets, + qh_all; + struct lsquic_hash_elem *qh_iter_next; + int (*qh_cmp)(const void *, const void *, size_t); + uint64_t (*qh_hash)(const void *, size_t, uint64_t seed); + unsigned qh_count; + unsigned qh_nbits; + uint64_t qh_hash_seed; +}; + + +static uint64_t get_seed() +{ + static uint64_t seed = 0; + if (seed == 0) + { +#if defined(WIN32) + LARGE_INTEGER counter; + QueryPerformanceCounter(&counter); + seed = counter.QuadPart; +#elif defined(_POSIX_TIMERS) && _POSIX_TIMERS > 0 + struct timespec ts; + (void) clock_gettime(CLOCK_MONOTONIC, &ts); + seed = ts.tv_sec * 1000000000 + ts.tv_nsec; +#elif defined(__APPLE__) + seed = mach_absolute_time(); +#else + struct timeval tv; + gettimeofday(&tv, NULL); + seed = tv.tv_sec * 1000000000 + tv.tv_usec * 1000; +#endif + srand(seed); + for(unsigned i = 0; i < (seed & 0xf) + 1; ++i) + { + seed = (seed << 8) | (seed >> 56); + seed ^= rand(); + } + } + return seed; +} + + +struct lsquic_hash * +lsquic_hash_create_ext (int (*cmp)(const void *, const void *, size_t), + uint64_t (*hashf)(const void *, size_t, uint64_t seed)) +{ + struct hels_head *buckets; + struct lsquic_hash *hash; + unsigned nbits = 2; + unsigned i; + + buckets = malloc(sizeof(buckets[0]) * N_BUCKETS(nbits)); + if (!buckets) + return NULL; + + hash = malloc(sizeof(*hash)); + if (!hash) + { + free(buckets); + return NULL; + } + + for (i = 0; i < N_BUCKETS(nbits); ++i) + TAILQ_INIT(&buckets[i]); + + TAILQ_INIT(&hash->qh_all); + hash->qh_cmp = cmp; + hash->qh_hash = hashf; + hash->qh_buckets = buckets; + hash->qh_nbits = nbits; + hash->qh_iter_next = NULL; + hash->qh_count = 0; + hash->qh_hash_seed = get_seed() ^ (uint64_t)hash + ^ ((uint64_t)buckets << 32) ^ rand(); + return hash; +} + + +struct lsquic_hash * +lsquic_hash_create (void) +{ + return lsquic_hash_create_ext(memcmp, rapidhash_withSeed); +} + + +int +lsquic_hash_set_seed (struct lsquic_hash * hash, uint64_t seed) +{ + if (hash->qh_count > 0) + return -1; + hash->qh_hash_seed = seed; + return 0; +} + + +void +lsquic_hash_destroy (struct lsquic_hash *hash) +{ + free(hash->qh_buckets); + free(hash); +} + + +static int +lsquic_hash_grow (struct lsquic_hash *hash) +{ + struct hels_head *new_buckets, *new[2]; + struct lsquic_hash_elem *el; + unsigned n, old_nbits; + int idx; + + old_nbits = hash->qh_nbits; + new_buckets = malloc(sizeof(hash->qh_buckets[0]) + * N_BUCKETS(old_nbits + 1)); + if (!new_buckets) + return -1; + + for (n = 0; n < N_BUCKETS(old_nbits); ++n) + { + new[0] = &new_buckets[n]; + new[1] = &new_buckets[n + N_BUCKETS(old_nbits)]; + TAILQ_INIT(new[0]); + TAILQ_INIT(new[1]); + while ((el = TAILQ_FIRST(&hash->qh_buckets[n]))) + { + TAILQ_REMOVE(&hash->qh_buckets[n], el, qhe_next_bucket); + idx = (BUCKNO(old_nbits + 1, el->qhe_hash_val) >> old_nbits) & 1; + TAILQ_INSERT_TAIL(new[idx], el, qhe_next_bucket); + } + } + free(hash->qh_buckets); + hash->qh_nbits = old_nbits + 1; + hash->qh_buckets = new_buckets; + return 0; +} + + +struct lsquic_hash_elem * +lsquic_hash_insert (struct lsquic_hash *hash, const void *key, + unsigned key_sz, void *value, struct lsquic_hash_elem *el) +{ + uint64_t hash_val; + unsigned buckno; + + if (el->qhe_flags & QHE_HASHED) + return NULL; + + if (hash->qh_count >= N_BUCKETS(hash->qh_nbits) / 2 && + 0 != lsquic_hash_grow(hash)) + return NULL; + + hash_val = hash->qh_hash(key, key_sz, hash->qh_hash_seed); + buckno = BUCKNO(hash->qh_nbits, hash_val); + TAILQ_INSERT_TAIL(&hash->qh_all, el, qhe_next_all); + TAILQ_INSERT_TAIL(&hash->qh_buckets[buckno], el, qhe_next_bucket); + el->qhe_key_data = key; + el->qhe_key_len = key_sz; + el->qhe_value = value; + el->qhe_hash_val = hash_val; + el->qhe_flags |= QHE_HASHED; + ++hash->qh_count; + return el; +} + + +struct lsquic_hash_elem * +lsquic_hash_find (struct lsquic_hash *hash, const void *key, unsigned key_sz) +{ + uint64_t hash_val; + unsigned buckno; + struct lsquic_hash_elem *el; + + hash_val = hash->qh_hash(key, key_sz, hash->qh_hash_seed); + buckno = BUCKNO(hash->qh_nbits, hash_val); + TAILQ_FOREACH(el, &hash->qh_buckets[buckno], qhe_next_bucket) + if (hash_val == el->qhe_hash_val && + key_sz == el->qhe_key_len && + 0 == hash->qh_cmp(key, el->qhe_key_data, key_sz)) + { + return el; + } + + return NULL; +} + + +void +lsquic_hash_erase (struct lsquic_hash *hash, struct lsquic_hash_elem *el) +{ + unsigned buckno; + + assert(el->qhe_flags & QHE_HASHED); + buckno = BUCKNO(hash->qh_nbits, el->qhe_hash_val); + if (hash->qh_iter_next == el) + hash->qh_iter_next = TAILQ_NEXT(el, qhe_next_all); + TAILQ_REMOVE(&hash->qh_buckets[buckno], el, qhe_next_bucket); + TAILQ_REMOVE(&hash->qh_all, el, qhe_next_all); + el->qhe_flags &= ~QHE_HASHED; + --hash->qh_count; +} + + +void +lsquic_hash_reset_iter (struct lsquic_hash *hash) +{ + hash->qh_iter_next = TAILQ_FIRST(&hash->qh_all); +} + + +struct lsquic_hash_elem * +lsquic_hash_first (struct lsquic_hash *hash) +{ + lsquic_hash_reset_iter(hash); + return lsquic_hash_next(hash); +} + + +struct lsquic_hash_elem * +lsquic_hash_next (struct lsquic_hash *hash) +{ + struct lsquic_hash_elem *el; + el = hash->qh_iter_next; + if (el) + hash->qh_iter_next = TAILQ_NEXT(el, qhe_next_all); + return el; +} + + +unsigned +lsquic_hash_count (struct lsquic_hash *hash) +{ + return hash->qh_count; +} + + +size_t +lsquic_hash_mem_used (const struct lsquic_hash *hash) +{ + return sizeof(*hash) + + N_BUCKETS(hash->qh_nbits) * sizeof(hash->qh_buckets[0]); +} diff --git a/external/lsquic/src/liblsquic/lsquic_hash.h b/external/lsquic/src/liblsquic/lsquic_hash.h new file mode 100644 index 0000000..86d8bd9 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_hash.h @@ -0,0 +1,79 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_hash.c -- A generic hash + */ + +#ifndef LSQUIC_HASH_H +#define LSQUIC_HASH_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct lsquic_hash; + +struct lsquic_hash_elem +{ + TAILQ_ENTRY(lsquic_hash_elem) + qhe_next_bucket, + qhe_next_all; + const void *qhe_key_data; + void *qhe_value; + unsigned qhe_key_len; + uint64_t qhe_hash_val; + enum { + QHE_HASHED = 1 << 0, + } qhe_flags; +}; + +struct lsquic_hash * +lsquic_hash_create (void); + +struct lsquic_hash * +lsquic_hash_create_ext (int (*cmp)(const void *, const void *, size_t), + uint64_t (*hash)(const void *, size_t, uint64_t seed)); + +int +lsquic_hash_set_seed (struct lsquic_hash *, uint64_t seed); + +void +lsquic_hash_destroy (struct lsquic_hash *); + +struct lsquic_hash_elem * +lsquic_hash_insert (struct lsquic_hash *, const void *key, unsigned key_sz, + void *value, struct lsquic_hash_elem *); + +struct lsquic_hash_elem * +lsquic_hash_find (struct lsquic_hash *, const void *key, unsigned key_sz); + +static inline void * +lsquic_hashelem_getdata (const struct lsquic_hash_elem *el) +{ + return el->qhe_value; +} + +void +lsquic_hash_erase (struct lsquic_hash *, struct lsquic_hash_elem *); + +void +lsquic_hash_reset_iter (struct lsquic_hash *); + +struct lsquic_hash_elem * +lsquic_hash_first (struct lsquic_hash *); + +struct lsquic_hash_elem * +lsquic_hash_next (struct lsquic_hash *); + +unsigned +lsquic_hash_count (struct lsquic_hash *); + +size_t +lsquic_hash_mem_used (const struct lsquic_hash *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_hcsi_reader.c b/external/lsquic/src/liblsquic/lsquic_hcsi_reader.c new file mode 100644 index 0000000..f50ac67 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_hcsi_reader.c @@ -0,0 +1,267 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_hcsi_reader.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_HCSI_READER +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(reader->hr_conn) +#include "lsquic_logger.h" + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + + +void +lsquic_hcsi_reader_init (struct hcsi_reader *reader, + struct lsquic_conn *conn, const struct hcsi_callbacks *callbacks, + void *ctx) +{ + memset(reader, 0, sizeof(*reader)); + reader->hr_state = HR_READ_FRAME_BEGIN; + reader->hr_conn = conn; + reader->hr_cb = callbacks; + reader->hr_ctx = ctx; + LSQ_DEBUG("initialized"); +} + + +int +lsquic_hcsi_reader_feed (struct hcsi_reader *reader, const void *buf, + size_t bufsz) +{ + const unsigned char *p = buf; + const unsigned char *const end = p + bufsz; + + const unsigned char *orig_p; + uint64_t len; + int s; + + continue_reading: + while (p < end) + { + switch (reader->hr_state) + { + case HR_READ_FRAME_BEGIN: + reader->hr_u.vint2_state.vr2s_state = 0; + reader->hr_state = HR_READ_FRAME_CONTINUE; + /* fall-through */ + case HR_READ_FRAME_CONTINUE: + s = lsquic_varint_read_two(&p, end, &reader->hr_u.vint2_state); + if (s < 0) + break; + reader->hr_frame_type = reader->hr_u.vint2_state.vr2s_one; + reader->hr_frame_length = reader->hr_u.vint2_state.vr2s_two; + + if (!(reader->hr_flag & HR_FLAG_RCVD_SETTING) + && reader->hr_frame_type != HQFT_SETTINGS) + { + reader->hr_cb->on_frame_error(reader->hr_ctx, + HEC_MISSING_SETTINGS, reader->hr_frame_type); + return -1; + } + + switch (reader->hr_frame_type) + { + case HQFT_SETTINGS: + reader->hr_flag |= HR_FLAG_RCVD_SETTING; + if (reader->hr_frame_length) + { + reader->hr_state = HR_READ_SETTING_BEGIN; + reader->hr_nread = 0; + } + else + { + reader->hr_cb->on_settings_frame(reader->hr_ctx); + reader->hr_state = HR_READ_FRAME_BEGIN; + } + break; + case HQFT_GOAWAY: + reader->hr_state = HR_READ_VARINT; + break; + case HQFT_CANCEL_PUSH: + reader->hr_state = HR_READ_VARINT; + break; + case HQFT_MAX_PUSH_ID: + reader->hr_state = HR_READ_VARINT; + break; + case HQFT_PRIORITY_UPDATE_PUSH: + case HQFT_PRIORITY_UPDATE_STREAM: + reader->hr_state = HR_READ_VARINT; + break; + case HQFT_DATA: + case HQFT_HEADERS: + case HQFT_PUSH_PROMISE: + reader->hr_cb->on_frame_error(reader->hr_ctx, + HEC_FRAME_UNEXPECTED, reader->hr_frame_type); + return -1; + default: + { + /* From [draft-ietf-quic-http-31] Section 7.2.8: + " Frame types of the format "0x1f * N + 0x21" for non-negative + " integer values of N are reserved to exercise the requirement + " that unknown types be ignored + */ + enum lsq_log_level L; + if (!(reader->hr_frame_type >= 0x21 && + (reader->hr_frame_type - 0x21) % 0x1F == 0)) + /* Non-grease: log with higher level: */ + L = LSQ_LOG_INFO; + else + L = LSQ_LOG_DEBUG; + LSQ_LOG(L, "unknown frame type 0x%"PRIX64": will skip " + "%"PRIu64" bytes", reader->hr_frame_type, + reader->hr_frame_length); + reader->hr_state = HR_SKIPPING; + break; + } + } + break; + case HR_READ_VARINT: + reader->hr_u.vint_state.pos = 0; + reader->hr_state = HR_READ_VARINT_CONTINUE; + reader->hr_nread = 0; + /* fall-through */ + case HR_READ_VARINT_CONTINUE: + orig_p = p; + s = lsquic_varint_read_nb(&p, end, &reader->hr_u.vint_state); + reader->hr_nread += p - orig_p; + if (0 == s) + { + switch (reader->hr_frame_type) + { + case HQFT_GOAWAY: + case HQFT_CANCEL_PUSH: + case HQFT_MAX_PUSH_ID: + if (reader->hr_nread != reader->hr_frame_length) + { + reader->hr_conn->cn_if->ci_abort_error(reader->hr_conn, 1, + HEC_FRAME_ERROR, + "Frame length does not match actual payload length"); + reader->hr_state = HR_ERROR; + return -1; + } + break; + } + switch (reader->hr_frame_type) + { + case HQFT_GOAWAY: + reader->hr_cb->on_goaway(reader->hr_ctx, + reader->hr_u.vint_state.val); + break; + case HQFT_CANCEL_PUSH: + reader->hr_cb->on_cancel_push(reader->hr_ctx, + reader->hr_u.vint_state.val); + break; + case HQFT_MAX_PUSH_ID: + reader->hr_cb->on_max_push_id(reader->hr_ctx, + reader->hr_u.vint_state.val); + break; + case HQFT_PRIORITY_UPDATE_PUSH: + case HQFT_PRIORITY_UPDATE_STREAM: + len = reader->hr_frame_length - reader->hr_nread; + if (len <= (uintptr_t) (end - p)) + { + reader->hr_cb->on_priority_update(reader->hr_ctx, + reader->hr_frame_type, reader->hr_u.vint_state.val, + (char *) p, len); + p += len; + } + else if (len <= sizeof(reader->hr_u.prio_state.buf)) + { + reader->hr_frame_length = len; + reader->hr_nread = 0; + reader->hr_state = HR_READ_PRIORITY_UPDATE; + goto continue_reading; + } + else + { + p += len; + /* 16 bytes is more than enough for a PRIORITY_UPDATE + * frame, anything larger than that is unreasonable. + */ + if (reader->hr_frame_length + > sizeof(reader->hr_u.prio_state.buf)) + LSQ_INFO("skip PRIORITY_UPDATE frame that's too " + "long (%"PRIu64" bytes)", len); + } + break; + default: + assert(0); + } + reader->hr_state = HR_READ_FRAME_BEGIN; + break; + } + else + { + assert(p == end); + return 0; + } + case HR_SKIPPING: + len = MIN((uintptr_t) (end - p), reader->hr_frame_length); + p += len; + reader->hr_frame_length -= len; + if (0 == reader->hr_frame_length) + reader->hr_state = HR_READ_FRAME_BEGIN; + break; + case HR_READ_SETTING_BEGIN: + reader->hr_u.vint2_state.vr2s_state = 0; + reader->hr_state = HR_READ_SETTING_CONTINUE; + /* fall-through */ + case HR_READ_SETTING_CONTINUE: + orig_p = p; + s = lsquic_varint_read_two(&p, end, &reader->hr_u.vint2_state); + reader->hr_nread += p - orig_p; + if (reader->hr_nread > reader->hr_frame_length) + { + reader->hr_conn->cn_if->ci_abort_error(reader->hr_conn, 1, + HEC_FRAME_ERROR, "SETTING frame contents too long"); + reader->hr_state = HR_ERROR; + return -1; + } + if (s < 0) + break; + reader->hr_cb->on_setting(reader->hr_ctx, + reader->hr_u.vint2_state.vr2s_one, + reader->hr_u.vint2_state.vr2s_two); + if (reader->hr_nread >= reader->hr_frame_length) + { + reader->hr_state = HR_READ_FRAME_BEGIN; + reader->hr_cb->on_settings_frame(reader->hr_ctx); + } + else + reader->hr_state = HR_READ_SETTING_BEGIN; + break; + case HR_READ_PRIORITY_UPDATE: + len = MIN((uintptr_t) (end - p), + reader->hr_frame_length - reader->hr_nread); + memcpy(reader->hr_u.prio_state.buf + reader->hr_nread, p, len); + reader->hr_nread += len; + p += len; + if (reader->hr_frame_length == reader->hr_nread) + { + reader->hr_cb->on_priority_update(reader->hr_ctx, + reader->hr_frame_type, reader->hr_u.vint_state.val, + reader->hr_u.prio_state.buf, reader->hr_frame_length); + reader->hr_state = HR_READ_FRAME_BEGIN; + } + break; + default: + assert(0); + /* fall-through */ + case HR_ERROR: + return -1; + } + } + + return 0; +} diff --git a/external/lsquic/src/liblsquic/lsquic_hcsi_reader.h b/external/lsquic/src/liblsquic/lsquic_hcsi_reader.h new file mode 100644 index 0000000..62609fb --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_hcsi_reader.h @@ -0,0 +1,72 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_hcsi_reader.h -- HTTP Control Stream Incoming (HCSI) reader + */ + +#ifndef LSQUIC_HCSI_READER_H +#define LSQUIC_HCSI_READER_H 1 + +struct lsquic_conn; + + +struct hcsi_callbacks +{ + void (*on_cancel_push)(void *ctx, uint64_t push_id); + void (*on_max_push_id)(void *ctx, uint64_t push_id); + /* Gets called at the *end* of the SETTING frame */ + void (*on_settings_frame)(void *ctx); + void (*on_setting)(void *ctx, uint64_t setting_id, uint64_t value); + void (*on_goaway)(void *ctx, uint64_t stream_id); + void (*on_frame_error)(void *ctx, unsigned code, uint64_t frame_type); + void (*on_priority_update)(void *ctx, enum hq_frame_type, uint64_t id, + const char *, size_t); +}; + + +struct hcsi_reader +{ + enum { + HR_READ_FRAME_BEGIN, + HR_READ_FRAME_CONTINUE, + HR_SKIPPING, + HR_READ_SETTING_BEGIN, + HR_READ_SETTING_CONTINUE, + HR_READ_PRIORITY_UPDATE, + HR_READ_VARINT, + HR_READ_VARINT_CONTINUE, + HR_ERROR, + } hr_state:8; + enum { + HR_FLAG_RCVD_SETTING = 1, + } hr_flag:8; + unsigned hr_nread; /* Used for PRIORITY_UPDATE and SETTINGS frames */ + struct lsquic_conn *hr_conn; + uint64_t hr_frame_type; + uint64_t hr_frame_length; + union + { + struct varint_read_state vint_state; + struct varint_read2_state vint2_state; + struct { + /* We just need the offset to rest of prio_state to read Priority + * Field Value. + */ + struct varint_read_state UNUSED; + char buf[ + sizeof(struct varint_read2_state) + - sizeof(struct varint_read_state)]; + } prio_state; + } hr_u; + const struct hcsi_callbacks *hr_cb; + void *hr_ctx; +}; + + +void +lsquic_hcsi_reader_init (struct hcsi_reader *, struct lsquic_conn *, + const struct hcsi_callbacks *, void *cb_ctx); + +int +lsquic_hcsi_reader_feed (struct hcsi_reader *, const void *buf, size_t bufsz); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_hcso_writer.c b/external/lsquic/src/liblsquic/lsquic_hcso_writer.c new file mode 100644 index 0000000..8aeba18 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_hcso_writer.c @@ -0,0 +1,466 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_hcso_writer.c - write to outgoing HTTP Control Stream + */ + +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_frab_list.h" +#include "lsquic_byteswap.h" +#include "lsquic_hcso_writer.h" +#include "lsquic_conn.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_HCSO_WRITER +#define LSQUIC_LOG_CONN_ID \ + lsquic_conn_log_cid(lsquic_stream_conn(writer->how_stream)) +#include "lsquic_logger.h" + + +static int +hcso_write_type (struct hcso_writer *writer) +{ + int s; + +#ifndef NDEBUG + if (writer->how_flags & HOW_RAND_VARINT) + { + s = rand() & 3; + LSQ_DEBUG("writing %d-byte stream type", 1 << s); + } + else +#endif + s = 0; + + switch (s) + { + case 0: + return lsquic_frab_list_write(&writer->how_fral, + (unsigned char []) { HQUST_CONTROL }, 1); + case 1: + return lsquic_frab_list_write(&writer->how_fral, + (unsigned char []) { 0x40, HQUST_CONTROL }, 2); + case 2: + return lsquic_frab_list_write(&writer->how_fral, + (unsigned char []) { 0x80, 0x00, 0x00, HQUST_CONTROL }, 4); + default: + return lsquic_frab_list_write(&writer->how_fral, + (unsigned char []) { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + HQUST_CONTROL }, 8); + } +} + + + +static lsquic_stream_ctx_t * +hcso_on_new (void *stream_if_ctx, struct lsquic_stream *stream) +{ + struct hcso_writer *writer = stream_if_ctx; + struct lsquic_conn *lconn; + + writer->how_stream = stream; + lsquic_frab_list_init(&writer->how_fral, 0x100, NULL, NULL, NULL); +#ifndef NDEBUG + const char *env = getenv("LSQUIC_RND_VARINT_LEN"); + if (env && atoi(env)) + { + writer->how_flags |= HOW_RAND_VARINT; + LSQ_INFO("will randomize varints"); + if (0 == (rand() & 3)) + { + writer->how_flags |= HOW_CHOP_STREAM; + LSQ_INFO("will chop beginning of stream into tiny STREAM frames"); + } + } +#endif + if (0 != hcso_write_type(writer)) + { + LSQ_INFO("cannot write to frab list"); + lconn = lsquic_stream_conn(stream); + lconn->cn_if->ci_internal_error(lconn, "cannot write to frab list"); + } + LSQ_DEBUG("create HTTP Control Stream Writer"); + lsquic_stream_wantwrite(stream, 1); + return stream_if_ctx; +} + + +static unsigned +hcso_setting_type2bits (struct hcso_writer *writer, unsigned setting) +{ + unsigned bits = vint_val2bits(setting); + +#ifndef NDEBUG + unsigned max_bits; + if (writer->how_flags & HOW_RAND_VARINT) + { + max_bits = rand() & 3; + if (max_bits > bits) + bits = max_bits; + LSQ_DEBUG("writing out HTTP/3 setting %u as %d-byte varint", + setting, 1 << bits); + } +#endif + + return bits; +} + + +int +lsquic_hcso_write_settings (struct hcso_writer *writer, + unsigned max_header_list_size, + unsigned dyn_table_size, unsigned max_risked_streams, + int is_server +#if LSQUIC_WEBTRANSPORT_SERVER_SUPPORT + , int webtransport_server, + unsigned max_webtransport_server_streams +#endif + ) +{ + unsigned char *p; + unsigned bits; + int was_empty; +#ifdef NDEBUG +# define frame_size_len 1 +#else + /* Need to use two bytes for frame length, as randomization may require + * more than 63 bytes. + */ +# define frame_size_len 2 +#endif + unsigned char buf[1 /* Frame type */ + /* Frame size */ frame_size_len + /* There are maximum seven settings that need to be written out and + * each value can be encoded in maximum 8 bytes: + */ + + 7 * ( +#ifdef NDEBUG + 1 /* Each setting needs 1-byte varint number, */ +#else + 8 /* but it can be up to 8 bytes when randomized */ +#endif + + 8) ]; + + p = buf; + *p++ = HQFT_SETTINGS; + p += frame_size_len; + + if (max_header_list_size != HQ_DF_MAX_HEADER_LIST_SIZE) + { + /* Write out SETTINGS_MAX_HEADER_LIST_SIZE */ + bits = hcso_setting_type2bits(writer, HQSID_MAX_HEADER_LIST_SIZE); + vint_write(p, HQSID_MAX_HEADER_LIST_SIZE, bits, 1 << bits); + p += 1 << bits; + bits = vint_val2bits(max_header_list_size); + vint_write(p, max_header_list_size, bits, 1 << bits); + p += 1 << bits; + } + + if (dyn_table_size != HQ_DF_QPACK_MAX_TABLE_CAPACITY) + { + /* Write out SETTINGS_QPACK_MAX_TABLE_CAPACITY */ + bits = hcso_setting_type2bits(writer, HQSID_QPACK_MAX_TABLE_CAPACITY); + vint_write(p, HQSID_QPACK_MAX_TABLE_CAPACITY, bits, 1 << bits); + p += 1 << bits; + bits = vint_val2bits(dyn_table_size); + vint_write(p, dyn_table_size, bits, 1 << bits); + p += 1 << bits; + } + + if (max_risked_streams != HQ_DF_QPACK_BLOCKED_STREAMS) + { + /* Write out SETTINGS_QPACK_BLOCKED_STREAMS */ + bits = hcso_setting_type2bits(writer, HQSID_QPACK_BLOCKED_STREAMS); + vint_write(p, HQSID_QPACK_BLOCKED_STREAMS, bits, 1 << bits); + p += 1 << bits; + bits = vint_val2bits(max_risked_streams); + vint_write(p, max_risked_streams, bits, 1 << bits); + p += 1 << bits; + } + +#if LSQUIC_WEBTRANSPORT_SERVER_SUPPORT + if (is_server && webtransport_server && max_webtransport_server_streams) + { + /* Write out SETTINGS_ENABLE_WEBTRANSPORT */ +#define SETTINGS_ENABLE_WEBTRANSPORT (0x2b603742) +#define SETTINGS_ENABLE_WEBTRANSPORT_VALUE (1) + bits = hcso_setting_type2bits(writer, SETTINGS_ENABLE_WEBTRANSPORT); + vint_write(p, SETTINGS_ENABLE_WEBTRANSPORT, bits, 1 << bits); + p += 1 << bits; + bits = vint_val2bits(SETTINGS_ENABLE_WEBTRANSPORT_VALUE); + vint_write(p, SETTINGS_ENABLE_WEBTRANSPORT_VALUE, bits, 1 << bits); + p += 1 << bits; + + /* Write out SETTINGS_ENABLE_WEBTRANSPORT */ +#define WEBTRANSPORT_MAX_SESSIONS (0x2b603743) + bits = hcso_setting_type2bits(writer, WEBTRANSPORT_MAX_SESSIONS); + vint_write(p, WEBTRANSPORT_MAX_SESSIONS, bits, 1 << bits); + p += 1 << bits; + bits = vint_val2bits(max_webtransport_server_streams); + vint_write(p, max_webtransport_server_streams, bits, 1 << bits); + p += 1 << bits; + + /* Write out H3_DATAGRAM_ENABLED */ +#define H3_DATAGRAM_ENABLED (0x33) +#define H3_DATAGRAM_ENABLED_VALUE (1) + bits = hcso_setting_type2bits(writer, H3_DATAGRAM_ENABLED); + vint_write(p, H3_DATAGRAM_ENABLED, bits, 1 << bits); + p += 1 << bits; + bits = vint_val2bits(H3_DATAGRAM_ENABLED_VALUE); + vint_write(p, H3_DATAGRAM_ENABLED_VALUE, bits, 1 << bits); + p += 1 << bits; + + /* Write out SETTINGS_ENABLE_CONNECT_PROTOCOL */ +#define SETTINGS_ENABLE_CONNECT_PROTOCOL (0x8) +#define SETTINGS_ENABLE_CONNECT_PROTOCOL_VALUE (1) + bits = hcso_setting_type2bits(writer, SETTINGS_ENABLE_CONNECT_PROTOCOL); + vint_write(p, SETTINGS_ENABLE_CONNECT_PROTOCOL, bits, 1 << bits); + p += 1 << bits; + bits = vint_val2bits(SETTINGS_ENABLE_CONNECT_PROTOCOL_VALUE); + vint_write(p, SETTINGS_ENABLE_CONNECT_PROTOCOL_VALUE, bits, 1 << bits); + p += 1 << bits; + } +#endif + +#ifdef NDEBUG + buf[1] = p - buf - 2; +#else + vint_write(buf + 1, p - buf - 3, 1, 2); +#endif + + was_empty = lsquic_frab_list_empty(&writer->how_fral); + + if (0 != lsquic_frab_list_write(&writer->how_fral, buf, p - buf)) + { + LSQ_INFO("cannot write SETTINGS frame to frab list"); + return -1; + } + + if (was_empty) + lsquic_stream_wantwrite(writer->how_stream, 1); + + LSQ_DEBUG("generated %u-byte SETTINGS frame", (unsigned) (p - buf)); + return 0; +} + + +static const char * +hqft2str (enum hq_frame_type type) +{ + switch (type) + { + case HQFT_PUSH_PROMISE: return "PUSH_PROMISE"; + case HQFT_MAX_PUSH_ID: return "MAX_PUSH_ID"; + case HQFT_CANCEL_PUSH: return "CANCEL_PUSH"; + case HQFT_GOAWAY: return "GOAWAY"; + case HQFT_PRIORITY_UPDATE_PUSH:return "PRIORITY_UPDATE (push)"; + case HQFT_PRIORITY_UPDATE_STREAM:return "PRIORITY_UPDATE (stream)"; + default: return ""; + } +} + + +static int +hcso_write_number_frame (struct hcso_writer *writer, + enum hq_frame_type type, uint64_t value) +{ + unsigned char *p; + unsigned bits; + int was_empty; + unsigned char buf[1 /* Frame type */ + /* Frame size */ 1 + 8 /* Value */ ]; + + p = buf; + *p++ = type; + + bits = vint_val2bits(value); + *p++ = 1 << bits; + + vint_write(p, value, bits, 1 << bits); + p += 1 << bits; + + was_empty = lsquic_frab_list_empty(&writer->how_fral); + + if (0 != lsquic_frab_list_write(&writer->how_fral, buf, p - buf)) + { + LSQ_INFO("cannot write %s frame to frab list", hqft2str(type)); + return -1; + } + + if (was_empty) + lsquic_stream_wantwrite(writer->how_stream, 1); + + LSQ_DEBUG("generated %u-byte %s frame", (unsigned) (p - buf), + hqft2str(type)); + return 0; +} + + +int +lsquic_hcso_write_goaway (struct hcso_writer *writer, + lsquic_stream_id_t stream_id) +{ + return hcso_write_number_frame(writer, HQFT_GOAWAY, stream_id); +} + + +int +lsquic_hcso_write_max_push_id (struct hcso_writer *writer, uint64_t max_push_id) +{ + return hcso_write_number_frame(writer, HQFT_MAX_PUSH_ID, max_push_id); +} + + +int +lsquic_hcso_write_cancel_push (struct hcso_writer *writer, uint64_t push_id) +{ + return hcso_write_number_frame(writer, HQFT_CANCEL_PUSH, push_id); +} + + +int +lsquic_hcso_write_priority_update (struct hcso_writer *writer, + enum hq_frame_type type, uint64_t stream_or_push_id, + const struct lsquic_ext_http_prio *ehp) +{ + unsigned char *p, *len; + unsigned bits; + int was_empty; + unsigned char buf[8 /* Frame type */ + /* Frame size */ 1 + 8 /* Value */ + + 5 /* PFV: "u=.,i" or "u=." */]; + + p = buf; + bits = vint_val2bits(type); + vint_write(p, type, bits, 1 << bits); + p += 1 << bits; + + bits = vint_val2bits(stream_or_push_id); + len = p; + ++p; + + vint_write(p, stream_or_push_id, bits, 1 << bits); + p += 1 << bits; + if (!(ehp->urgency == LSQUIC_DEF_HTTP_URGENCY + && ehp->incremental == LSQUIC_DEF_HTTP_INCREMENTAL)) + { + *p++ = 'u'; + *p++ = '='; + *p++ = '0' + ehp->urgency; + if (ehp->incremental) + { + *p++ = ','; + *p++ = 'i'; + } + } + + *len = p - len - 1; + + was_empty = lsquic_frab_list_empty(&writer->how_fral); + + if (0 != lsquic_frab_list_write(&writer->how_fral, buf, p - buf)) + { + LSQ_INFO("cannot write %s frame to frab list", hqft2str(type)); + return -1; + } + + if (was_empty) + lsquic_stream_wantwrite(writer->how_stream, 1); + + LSQ_DEBUG("generated %u-byte %s frame", (unsigned) (p - buf), + hqft2str(type)); + return 0; +} + + +#ifndef NDEBUG +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +static size_t +one_byte_limit_read (void *ctx, void *buf, size_t bufsz) +{ + return lsquic_frab_list_read(ctx, buf, MIN(bufsz, 1)); +} + + +static size_t +one_byte_limit_size (void *ctx) +{ + size_t size; + + size = lsquic_frab_list_size(ctx); + return MIN(size, 1); +} +#endif + +static void +hcso_on_write (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + struct hcso_writer *const writer = (void *) ctx; + struct lsquic_reader reader = { + .lsqr_read = lsquic_frab_list_read, + .lsqr_size = lsquic_frab_list_size, + .lsqr_ctx = &writer->how_fral + }; + ssize_t nw; + struct lsquic_conn *lconn; + +#ifndef NDEBUG + if (stream->tosend_off < 8 && (writer->how_flags & HOW_CHOP_STREAM)) + { + reader.lsqr_read = one_byte_limit_read; + reader.lsqr_size = one_byte_limit_size; + } +#endif + + nw = lsquic_stream_writef(stream, &reader); + if (nw >= 0) + { + LSQ_DEBUG("wrote %zd bytes to stream", nw); + (void) lsquic_stream_flush(stream); + if (lsquic_frab_list_empty(&writer->how_fral)) + lsquic_stream_wantwrite(stream, 0); + } + else + { + lconn = lsquic_stream_conn(stream); + lconn->cn_if->ci_internal_error(lconn, "cannot write to stream: %s", + strerror(errno)); + lsquic_stream_wantwrite(stream, 0); + } +} + + +static void +hcso_on_close (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + struct hcso_writer *writer = (void *) ctx; + LSQ_DEBUG("close HTTP Control Stream Writer"); + lsquic_frab_list_cleanup(&writer->how_fral); + writer->how_stream = NULL; +} + + +static void +hcso_on_read (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + assert(0); +} + + +static const struct lsquic_stream_if hcso_if = +{ + .on_new_stream = hcso_on_new, + .on_read = hcso_on_read, + .on_write = hcso_on_write, + .on_close = hcso_on_close, +}; + +const struct lsquic_stream_if *const lsquic_hcso_writer_if = &hcso_if; diff --git a/external/lsquic/src/liblsquic/lsquic_hcso_writer.h b/external/lsquic/src/liblsquic/lsquic_hcso_writer.h new file mode 100644 index 0000000..c252ac7 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_hcso_writer.h @@ -0,0 +1,48 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_hcso_writer.h + */ + +#ifndef LSQUIC_HCSO_WRITER_H +#define LSQUIC_HCSO_WRITER_H 1 + +struct lsquic_ext_http_prio; +struct lsquic_stream; + +struct hcso_writer +{ + struct lsquic_stream *how_stream; + struct frab_list how_fral; +#ifndef NDEBUG + enum { + HOW_RAND_VARINT = 1 << 0, + HOW_CHOP_STREAM = 1 << 1, + } how_flags; +#endif +}; + +int +lsquic_hcso_write_settings (struct hcso_writer *, + unsigned, unsigned, unsigned, int +#if LSQUIC_WEBTRANSPORT_SERVER_SUPPORT + ,int, unsigned +#endif + ); + +int +lsquic_hcso_write_goaway (struct hcso_writer *, lsquic_stream_id_t); + +int +lsquic_hcso_write_max_push_id (struct hcso_writer *, uint64_t max_push_id); + +int +lsquic_hcso_write_cancel_push (struct hcso_writer *, uint64_t push_id); + +int +lsquic_hcso_write_priority_update (struct hcso_writer *, + enum hq_frame_type, uint64_t stream_or_push_id, + const struct lsquic_ext_http_prio *); + +extern const struct lsquic_stream_if *const lsquic_hcso_writer_if; + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_headers.h b/external/lsquic/src/liblsquic/lsquic_headers.h new file mode 100644 index 0000000..8a9d5a9 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_headers.h @@ -0,0 +1,43 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_HEADERS_H +#define LSQUIC_HEADERS_H 1 + +/* When ea_hsi_if is not specified, the headers are converted to a C string + * that contains HTTP/1.x-like header structure. + */ +struct http1x_headers +{ + unsigned h1h_size; /* Number of characters in h1h_buf, not + * counting the NUL byte. + */ + unsigned h1h_off; /* Reading offset */ + char *h1h_buf; +}; + + +/* This struct is used to return decoded HEADERS and PUSH_PROMISE frames. + * Some of the fields are only used for HEADERS frames. They are marked + * with "H" comment below. + */ +struct uncompressed_headers +{ + lsquic_stream_id_t uh_stream_id; + lsquic_stream_id_t uh_oth_stream_id; /* For HEADERS frame, the ID of the + * stream that this stream depends + * on. (Zero means unset.) For + * PUSH_PROMISE, the promised stream + * ID. + */ + unsigned short /* H */ uh_weight; /* 1 - 256; 0 means not set */ + signed char /* H */ uh_exclusive; /* 0 or 1 when set; -1 means not set */ + enum { + /* H */ UH_FIN = (1 << 0), + UH_PP = (1 << 1), /* Push promise */ + UH_H1H = (1 << 2), /* uh_hset points to http1x_headers */ + } uh_flags:8; + void *uh_hset; + struct uncompressed_headers + *uh_next; +}; + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_headers_stream.c b/external/lsquic/src/liblsquic/lsquic_headers_stream.c new file mode 100644 index 0000000..dadd197 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_headers_stream.c @@ -0,0 +1,426 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * HEADERS stream logic + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_frame_common.h" +#include "lsquic_frame_reader.h" +#include "lsquic_frame_writer.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lshpack.h" + +#include "lsquic_headers_stream.h" + +#define MAX_HEADERS_SIZE (64 * 1024) +#define MAX_HEADER_TABLE_SIZE (512 * 1024) + +#define LSQUIC_LOGGER_MODULE LSQLM_HEADERS +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(\ + lsquic_stream_conn(hs->hs_stream)) +#include "lsquic_logger.h" + +static const struct frame_reader_callbacks *frame_callbacks_ptr; + +struct headers_stream +{ + struct lsquic_stream *hs_stream; + struct lsquic_frame_reader *hs_fr; + struct lsquic_frame_writer *hs_fw; + const struct headers_stream_callbacks + *hs_callbacks; + void *hs_cb_ctx; + struct lshpack_enc hs_henc; + struct lshpack_dec hs_hdec; + enum { + HS_IS_SERVER = (1 << 0), + HS_HENC_INITED = (1 << 1), + } hs_flags; + struct lsquic_engine_public *hs_enpub; +#if LSQUIC_CONN_STATS + struct conn_stats *hs_conn_stats; +#endif +}; + + +int +lsquic_headers_stream_send_settings (struct headers_stream *hs, + const struct lsquic_http2_setting *settings, unsigned n_settings) +{ + if (0 == lsquic_frame_writer_write_settings(hs->hs_fw, settings, + n_settings)) + { + lsquic_stream_wantwrite(hs->hs_stream, + lsquic_frame_writer_have_leftovers(hs->hs_fw)); + return 0; + } + else + { + LSQ_WARN("Could not write settings to stream: %s", + strerror(errno)); + return -1; + } +} + + +static lsquic_stream_ctx_t * +headers_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) +{ + struct headers_stream *hs = stream_if_ctx; + + lshpack_dec_init(&hs->hs_hdec); + if (0 != lshpack_enc_init(&hs->hs_henc)) + { + LSQ_WARN("could not initialize HPACK encoder: %s", strerror(errno)); + return NULL; + } + (void) lshpack_enc_use_hist(&hs->hs_henc, 1); + hs->hs_flags |= HS_HENC_INITED; + hs->hs_stream = stream; + LSQ_DEBUG("stream created"); + hs->hs_fr = lsquic_frame_reader_new((hs->hs_flags & HS_IS_SERVER) ? FRF_SERVER : 0, + MAX_HEADERS_SIZE, &hs->hs_enpub->enp_mm, + stream, lsquic_stream_read, &hs->hs_hdec, + frame_callbacks_ptr, hs, +#if LSQUIC_CONN_STATS + hs->hs_conn_stats, +#endif + hs->hs_enpub->enp_hsi_if, hs->hs_enpub->enp_hsi_ctx); + if (!hs->hs_fr) + { + LSQ_WARN("could not create frame reader: %s", strerror(errno)); + hs->hs_callbacks->hsc_on_conn_error(hs->hs_cb_ctx); + return NULL; + } + hs->hs_fw = lsquic_frame_writer_new(&hs->hs_enpub->enp_mm, stream, 0, + &hs->hs_henc, lsquic_stream_writef, +#if LSQUIC_CONN_STATS + hs->hs_conn_stats, +#endif + (hs->hs_flags & HS_IS_SERVER)); + if (!hs->hs_fw) + { + LSQ_WARN("could not create frame writer: %s", strerror(errno)); + hs->hs_callbacks->hsc_on_conn_error(hs->hs_cb_ctx); + return NULL; + } + lsquic_stream_wantread(stream, 1); + return (lsquic_stream_ctx_t *) hs; +} + + +static void +headers_on_read (lsquic_stream_t *stream, struct lsquic_stream_ctx *ctx) +{ + struct headers_stream *hs = (struct headers_stream *) ctx; + if (0 != lsquic_frame_reader_read(hs->hs_fr)) + { + LSQ_ERROR("frame reader failed"); + hs->hs_callbacks->hsc_on_conn_error(hs->hs_cb_ctx); + } +} + + +static void +headers_on_write (lsquic_stream_t *stream, struct lsquic_stream_ctx *ctx) +{ + struct headers_stream *hs = (struct headers_stream *) ctx; + assert(lsquic_frame_writer_have_leftovers(hs->hs_fw)); + int s = lsquic_frame_writer_flush(hs->hs_fw); + if (0 == s) + { + LSQ_DEBUG("flushed"); + lsquic_stream_wantwrite(stream, + lsquic_frame_writer_have_leftovers(hs->hs_fw)); + } + else + { + LSQ_WARN("Error writing to stream: %s", strerror(errno)); + hs->hs_callbacks->hsc_on_conn_error(hs->hs_cb_ctx); + } +} + + +static void +headers_on_close (lsquic_stream_t *stream, struct lsquic_stream_ctx *ctx) +{ + struct headers_stream *hs = (struct headers_stream *) ctx; + LSQ_DEBUG("stream closed"); +} + + +int +lsquic_headers_stream_send_headers (struct headers_stream *hs, + lsquic_stream_id_t stream_id, const struct lsquic_http_headers *headers, + int eos, unsigned weight) +{ + LSQ_DEBUG("received compressed headers to send"); + int s; + s = lsquic_frame_writer_write_headers(hs->hs_fw, stream_id, headers, eos, + weight); + if (0 == s) + { + lsquic_stream_wantwrite(hs->hs_stream, + lsquic_frame_writer_have_leftovers(hs->hs_fw)); + } + else + LSQ_INFO("Error writing headers: %s", strerror(errno)); + return s; +} + + +int +lsquic_headers_stream_send_priority (struct headers_stream *hs, + lsquic_stream_id_t stream_id, int exclusive, + lsquic_stream_id_t dep_stream_id, unsigned weight) +{ + LSQ_DEBUG("received priority to send"); + int s; + if (stream_id == dep_stream_id) + { + LSQ_INFO("stream cannot depend on itself"); /* RFC 7540, Sec. 5.3.1. */ + return -1; + } + s = lsquic_frame_writer_write_priority(hs->hs_fw, stream_id, exclusive, + dep_stream_id, weight); + if (0 == s) + { + lsquic_stream_wantwrite(hs->hs_stream, + lsquic_frame_writer_have_leftovers(hs->hs_fw)); + } + else + LSQ_INFO("Error writing priority frame: %s", strerror(errno)); + return s; +} + + +struct headers_stream * +lsquic_headers_stream_new (int is_server, struct lsquic_engine_public *enpub, + const struct headers_stream_callbacks *callbacks, +#if LSQUIC_CONN_STATS + struct conn_stats *conn_stats, +#endif + void *cb_ctx) +{ + struct headers_stream *hs = calloc(1, sizeof(*hs)); + if (!hs) + return NULL; + hs->hs_callbacks = callbacks; + hs->hs_cb_ctx = cb_ctx; + if (is_server) + hs->hs_flags = HS_IS_SERVER; + else + hs->hs_flags = 0; + hs->hs_enpub = enpub; +#if LSQUIC_CONN_STATS + hs->hs_conn_stats= conn_stats; +#endif + return hs; +} + + +void +lsquic_headers_stream_destroy (struct headers_stream *hs) +{ + if (hs->hs_fr) + lsquic_frame_reader_destroy(hs->hs_fr); + if (hs->hs_fw) + lsquic_frame_writer_destroy(hs->hs_fw); + if (hs->hs_flags & HS_HENC_INITED) + lshpack_enc_cleanup(&hs->hs_henc); + lshpack_dec_cleanup(&hs->hs_hdec); + free(hs); +} + + +static const struct lsquic_stream_if headers_stream_if = +{ + .on_new_stream = headers_on_new_stream, + .on_read = headers_on_read, + .on_write = headers_on_write, + .on_close = headers_on_close, +}; + + +const struct lsquic_stream_if *const lsquic_headers_stream_if = + &headers_stream_if; + + +static void +headers_on_incoming_headers (void *ctx, struct uncompressed_headers *uh) +{ + struct headers_stream *hs = ctx; + hs->hs_callbacks->hsc_on_headers(hs->hs_cb_ctx, uh); +} + + +static void +headers_on_push_promise (void *ctx, struct uncompressed_headers *uh) +{ + struct headers_stream *hs = ctx; + hs->hs_callbacks->hsc_on_push_promise(hs->hs_cb_ctx, uh); +} + + +static void +headers_on_priority (void *ctx, lsquic_stream_id_t stream_id, int exclusive, + lsquic_stream_id_t dep_stream_id, unsigned weight) +{ + struct headers_stream *hs = ctx; + hs->hs_callbacks->hsc_on_priority(hs->hs_cb_ctx, stream_id, exclusive, + dep_stream_id, weight); +} + + +static void +headers_on_error (void *ctx, lsquic_stream_id_t stream_id, + enum frame_reader_error err) +{ + struct headers_stream *hs = ctx; + switch (err) + { + case FR_ERR_BAD_HEADER: + case FR_ERR_DECOMPRESS: + case FR_ERR_SELF_DEP_STREAM: + LSQ_INFO("error %u is a stream error (stream %"PRIu64")", err, + stream_id); + hs->hs_callbacks->hsc_on_stream_error(hs->hs_cb_ctx, stream_id); + break; + case FR_ERR_INVALID_FRAME_SIZE: + case FR_ERR_NONZERO_STREAM_ID: + case FR_ERR_UNEXPECTED_PUSH: + case FR_ERR_ZERO_STREAM_ID: + case FR_ERR_EXPECTED_CONTIN: + case FR_ERR_OTHER_ERROR: + LSQ_INFO("error %u is a connection error (stream %"PRIu64")", err, + stream_id); + hs->hs_callbacks->hsc_on_conn_error(hs->hs_cb_ctx); + break; + } +} + + +static void +headers_on_settings (void *ctx, uint16_t setting_id, uint32_t setting_value) +{ + struct headers_stream *hs = ctx; + switch (setting_id) + { + case SETTINGS_HEADER_TABLE_SIZE: + if (setting_value > MAX_HEADER_TABLE_SIZE) + { + LSQ_INFO("tried to update table size to %u, which is larger than " + "allowed maximum of %u bytes", setting_value, + MAX_HEADER_TABLE_SIZE); + hs->hs_callbacks->hsc_on_conn_error(hs->hs_cb_ctx); + } + else + { + LSQ_INFO("update hpack table size to %u", setting_value); + lshpack_enc_set_max_capacity(&hs->hs_henc, setting_value); + } + break; + case SETTINGS_MAX_HEADER_LIST_SIZE: + LSQ_INFO("set max header list size to %u", setting_value); + lsquic_frame_writer_max_header_list_size(hs->hs_fw, setting_value); + break; + case SETTINGS_ENABLE_PUSH: + LSQ_INFO("got setting enable_push: %u", setting_value); + if (hs->hs_flags & HS_IS_SERVER) + { + if (setting_value <= 1) + hs->hs_callbacks->hsc_on_enable_push(hs->hs_cb_ctx, + setting_value); + else + { + LSQ_INFO("invalid value of enable_push"); + hs->hs_callbacks->hsc_on_conn_error(hs->hs_cb_ctx); + } + } + else + { + LSQ_INFO("it is an error to receive enable_push setting in " + "client mode"); + hs->hs_callbacks->hsc_on_conn_error(hs->hs_cb_ctx); + } + break; + case SETTINGS_MAX_CONCURRENT_STREAMS: + case SETTINGS_INITIAL_WINDOW_SIZE: + case SETTINGS_MAX_FRAME_SIZE: + /* [draft-ietf-quic-http-00], Section 3 */ + LSQ_INFO("Specifying setting 0x%X is a QUIC error", setting_id); + hs->hs_callbacks->hsc_on_conn_error(hs->hs_cb_ctx); + break; + default: + LSQ_INFO("Ignoring unknown setting 0x%X; value 0x%X", setting_id, + setting_value); + break; + } +} + + +int +lsquic_headers_stream_push_promise (struct headers_stream *hs, + lsquic_stream_id_t stream_id64, lsquic_stream_id_t promised_stream_id64, + const struct lsquic_http_headers *headers) +{ + uint32_t stream_id = stream_id64; + uint32_t promised_stream_id = promised_stream_id64; + int s; + LSQ_DEBUG("promising stream %u in response to stream %u", + promised_stream_id, stream_id); + s = lsquic_frame_writer_write_promise(hs->hs_fw, stream_id, + promised_stream_id, headers); + if (0 == s) + { + lsquic_stream_wantwrite(hs->hs_stream, + lsquic_frame_writer_have_leftovers(hs->hs_fw)); + } + else + LSQ_INFO("Error writing push promise: %s", strerror(errno)); + return s; +} + + +size_t +lsquic_headers_stream_mem_used (const struct headers_stream *hs) +{ + size_t size; + + size = sizeof(*hs); + size += lsquic_frame_reader_mem_used(hs->hs_fr); + size += lsquic_frame_writer_mem_used(hs->hs_fw); + /* XXX: does not cover HPACK encoder and HPACK decoder */ + + return size; +} + + +struct lsquic_stream * +lsquic_headers_stream_get_stream (const struct headers_stream *hs) +{ + return hs->hs_stream; +} + + +static const struct frame_reader_callbacks frame_callbacks = { + .frc_on_headers = headers_on_incoming_headers, + .frc_on_push_promise = headers_on_push_promise, + .frc_on_error = headers_on_error, + .frc_on_settings = headers_on_settings, + .frc_on_priority = headers_on_priority, +}; + +static const struct frame_reader_callbacks *frame_callbacks_ptr = &frame_callbacks; + diff --git a/external/lsquic/src/liblsquic/lsquic_headers_stream.h b/external/lsquic/src/liblsquic/lsquic_headers_stream.h new file mode 100644 index 0000000..b0895c5 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_headers_stream.h @@ -0,0 +1,82 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_headers_stream.h -- HEADERS stream interface + */ + +#ifndef LSQUIC_HEADERS_STREAM_H +#define LSQUIC_HEADERS_STREAM_H 1 + +#include + +struct iovec; +struct lsquic_stream_if; +struct lsquic_stream; +struct lsquic_mm; +struct lsquic_http_headers; +struct lsquic_frame_reader; +struct lsquic_frame_writer; +struct uncompressed_headers; +struct lsquic_engine_public; +struct lsquic_http2_setting; +#if LSQUIC_CONN_STATS +struct conn_stats; +#endif + + +/* Incoming frames result in new objects or events. Callbacks in this + * struct are used to dispatch them. + */ +struct headers_stream_callbacks +{ + void (*hsc_on_headers) + (void *frame_cb_ctx, struct uncompressed_headers *); + void (*hsc_on_enable_push) (void *hs_cb_ctx, int enable_push); + void (*hsc_on_push_promise) + (void *frame_cb_ctx, struct uncompressed_headers *); + void (*hsc_on_priority) (void *hs_cb_ctx, lsquic_stream_id_t stream_id, + int exclusive, lsquic_stream_id_t dep_stream_id, unsigned weight); + void (*hsc_on_stream_error) (void *hs_cb_ctx, lsquic_stream_id_t stream_id); + void (*hsc_on_conn_error) (void *hs_cb_ctx); +}; + + +struct headers_stream * +lsquic_headers_stream_new (int is_server, struct lsquic_engine_public *, + const struct headers_stream_callbacks *, +#if LSQUIC_CONN_STATS + struct conn_stats *, +#endif + void *hs_cb_ctx); + +void +lsquic_headers_stream_destroy (struct headers_stream *); + +int +lsquic_headers_stream_send_headers (struct headers_stream *hs, + lsquic_stream_id_t stream_id, + const struct lsquic_http_headers *, int eos, + unsigned weight); + +int +lsquic_headers_stream_push_promise (struct headers_stream *hs, + lsquic_stream_id_t stream_id, lsquic_stream_id_t promised_stream_id, + const struct lsquic_http_headers *); + +int +lsquic_headers_stream_send_priority (struct headers_stream *hs, + lsquic_stream_id_t stream_id, int exclusive, + lsquic_stream_id_t dep_stream_id, unsigned weight); + +int +lsquic_headers_stream_send_settings (struct headers_stream *hs, + const struct lsquic_http2_setting *, unsigned count); + +struct lsquic_stream * +lsquic_headers_stream_get_stream (const struct headers_stream *); + +size_t +lsquic_headers_stream_mem_used (const struct headers_stream *); + +extern const struct lsquic_stream_if *const lsquic_headers_stream_if; + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_hkdf.c b/external/lsquic/src/liblsquic/lsquic_hkdf.c new file mode 100644 index 0000000..0928bf3 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_hkdf.c @@ -0,0 +1,45 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include + +#include + +#include "lsquic_hkdf.h" + + +/* [draft-ietf-quic-tls-17] Section 5 */ +void +lsquic_qhkdf_expand (const EVP_MD *md, const unsigned char *secret, + unsigned secret_len, const char *label, uint8_t label_len, + unsigned char *out, uint16_t out_len) +{ +#ifndef NDEBUG + int s; +#endif + const size_t len = 2 + 1 + 6 + label_len + 1; +#ifndef WIN32 + unsigned char info[ 2 + 1 + 6 + label_len + 1]; +#else + unsigned char info[ 2 + 1 + 6 + UINT8_MAX + 1]; +#endif + + info[0] = out_len >> 8; + info[1] = out_len; + info[2] = label_len + 6; + info[3] = 't'; + info[4] = 'l'; + info[5] = 's'; + info[6] = '1'; + info[7] = '3'; + info[8] = ' '; + memcpy(info + 9, label, label_len); + info[9 + label_len] = 0; +#ifndef NDEBUG + s = +#else + (void) +#endif + HKDF_expand(out, out_len, md, secret, secret_len, info, len); + assert(s); +} diff --git a/external/lsquic/src/liblsquic/lsquic_hkdf.h b/external/lsquic/src/liblsquic/lsquic_hkdf.h new file mode 100644 index 0000000..7d83c9f --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_hkdf.h @@ -0,0 +1,33 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_HKDF_H +#define LSQUIC_HKDF_H 1 + +/* [draft-ietf-quic-tls-23] Section 5.2 */ +#define HSK_SALT_BUF "\xc3\xee\xf7\x12\xc7\x2e\xbb\x5a\x11\xa7" \ + "\xd2\x43\x2b\xb4\x63\x65\xbe\xf9\xf5\x02" +#define HSK_SALT_PRE29 ((unsigned char *) HSK_SALT_BUF) +/* [draft-ietf-quic-tls-29] Section 5.2 */ +#define HSK_SALT_PRE33 ((unsigned char *) \ + "\xaf\xbf\xec\x28\x99\x93\xd2\x4c\x9e\x97" \ + "\x86\xf1\x9c\x61\x11\xe0\x43\x90\xa8\x99") +/* [draft-ietf-quic-tls-33] Section 5.2 */ +#define HSK_SALT ((unsigned char *) \ + "\x38\x76\x2c\xf7\xf5\x59\x34\xb3\x4d\x17" \ + "\x9a\xe6\xa4\xc8\x0c\xad\xcc\xbb\x7f\x0a") +/* [draft-ietf-quic-v2] Section 3.3.1 */ +#define HSK_SALT_V2 ((unsigned char *) \ + "\x0d\xed\xe3\xde\xf7\x00\xa6\xdb\x81\x93" \ + "\x81\xbe\x6e\x26\x9d\xcb\xf9\xbd\x2e\xd9") +#define HSK_SALT_SZ (sizeof(HSK_SALT_BUF) - 1) + +#define CLIENT_LABEL "client in" +#define CLIENT_LABEL_SZ (sizeof(CLIENT_LABEL) - 1) +#define SERVER_LABEL "server in" +#define SERVER_LABEL_SZ (sizeof(SERVER_LABEL) - 1) + +void +lsquic_qhkdf_expand (const struct env_md_st *, const unsigned char *secret, + unsigned secret_len, const char *label, uint8_t label_len, + unsigned char *out, uint16_t out_len); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_hpi.c b/external/lsquic/src/liblsquic/lsquic_hpi.c new file mode 100644 index 0000000..5ddd122 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_hpi.c @@ -0,0 +1,395 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_hpi.c - implementation of (Extensible) HTTP Priority Iterator. + */ + +#include +#include +#include +#include +#include +#include +#include +#ifdef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_conn_flow.h" +#include "lsquic_rtt.h" +#include "lsquic_conn_public.h" +#include "lsquic_min_heap.h" +#include "lsquic_mm.h" +#include "lsquic_hpi.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_HPI +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(iter->hpi_conn_pub->lconn) +#include "lsquic_logger.h" + +#define HPI_DEBUG(fmt, ...) LSQ_DEBUG("%s: " fmt, iter->hpi_name, __VA_ARGS__) + +#define NEXT_STREAM(stream, off) \ + (* (struct lsquic_stream **) ((unsigned char *) (stream) + (off))) + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + +static void +add_stream_to_hpi (struct http_prio_iter *iter, + struct lsquic_stream *new_stream) +{ + unsigned prio, incr; + + if (lsquic_stream_is_critical(new_stream)) + { + prio = 0; + incr = 1; /* Place in incremental bucket: these do not need to be + * ordered by stream ID. + */ + } + else + { + prio = 1 + MIN(new_stream->sm_priority, LSQUIC_MAX_HTTP_URGENCY); + incr = !!(new_stream->sm_bflags & SMBF_INCREMENTAL); + } + + if (!(iter->hpi_set[incr] & (1u << prio))) + { + iter->hpi_set[incr] |= 1u << prio; + if (0 == incr) + iter->hpi_counts[prio] = 0; + TAILQ_INIT(&iter->hpi_streams[incr][prio]); + } + + if (0 == incr) + ++iter->hpi_counts[prio]; + TAILQ_INSERT_TAIL(&iter->hpi_streams[incr][prio], + new_stream, next_prio_stream); +} + + +void +lsquic_hpi_init (void *iter_p, struct lsquic_stream *first, + struct lsquic_stream *last, uintptr_t next_ptr_offset, + struct lsquic_conn_public *conn_pub, const char *name, + int (*filter)(void *filter_ctx, struct lsquic_stream *), + void *filter_ctx) +{ + struct http_prio_iter *const iter = iter_p; + struct lsquic_stream *stream; + unsigned count; + + iter->hpi_conn_pub = conn_pub; + iter->hpi_name = name ? name : "UNSET"; + iter->hpi_flags = 0; + iter->hpi_heaped = 0; + iter->hpi_set[0] = 0; + iter->hpi_set[1] = 0; + memset(&iter->hpi_min_heap, 0, sizeof(iter->hpi_min_heap)); + + stream = first; + count = 0; + + if (filter) + while (1) + { + if (filter(filter_ctx, stream)) + { + add_stream_to_hpi(iter, stream); + ++count; + } + if (stream == last) + break; + stream = NEXT_STREAM(stream, next_ptr_offset); + } + else + while (1) + { + HPI_DEBUG("add stream %"PRIu64, stream->id); + add_stream_to_hpi(iter, stream); + ++count; + if (stream == last) + break; + stream = NEXT_STREAM(stream, next_ptr_offset); + } + + if (count > 2) + HPI_DEBUG("initialized; # elems: %u; sets: [ %08X, %08X ]", + count, iter->hpi_set[0], iter->hpi_set[1]); +} + + +/* Number of trailing zeroes */ +static const unsigned char ntz[] = { + 9, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, + 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, + 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, + 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, + 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, + 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, + 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, + 1, 0, 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, + 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, + 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, + 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, + 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, + 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, + 2, 0, 1, 0, 8, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, + 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, + 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, + 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, + 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, + 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, + 1, 0, 2, 0, 1, 0, 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, + 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, + 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, + 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, + 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, + 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, + 3, 0, 1, 0, 2, 0, 1, 0, +}; + + +/* Sets prio_ and incr_ */ +#define calc_next_prio_and_incr(iter_, prio_, incr_) do { \ + prio_ = ntz[iter_->hpi_set[0]]; \ + if (prio_ <= ntz[iter_->hpi_set[1]]) \ + incr_ = 0; \ + else \ + { \ + prio_ = ntz[iter_->hpi_set[1]]; \ + incr_ = 1; \ + } \ +} while (0) + + +struct lsquic_stream * +lsquic_hpi_first (void *iter_p) +{ + struct http_prio_iter *const iter = iter_p; + + assert(!(iter->hpi_set[0] & ~((1 << N_HPI_PRIORITIES) - 1))); + assert(!(iter->hpi_set[1] & ~((1 << N_HPI_PRIORITIES) - 1))); + + return lsquic_hpi_next(iter); +} + + +static struct lsquic_stream * +next_incr (struct http_prio_iter *iter, unsigned prio) +{ + struct lsquic_stream *stream; + + stream = TAILQ_FIRST(&iter->hpi_streams[1][prio]); + TAILQ_REMOVE(&iter->hpi_streams[1][prio], stream, next_prio_stream); + if (TAILQ_EMPTY(&iter->hpi_streams[1][prio])) + iter->hpi_set[1] &= ~(1u << prio); + + return stream; +} + + +static void +free_heap_elems (struct http_prio_iter *iter) +{ + if (0 == (iter->hpi_flags & (HPI_MH_4K|HPI_MH_MALLOC))) + /* Expected condition: nothing to do */ ; + else if (iter->hpi_flags & HPI_MH_4K) + { + lsquic_mm_put_4k(iter->hpi_conn_pub->mm, iter->hpi_min_heap.mh_elems); + iter->hpi_flags &= ~HPI_MH_4K; + } + else + { + assert(iter->hpi_flags & HPI_MH_MALLOC); + iter->hpi_flags &= ~HPI_MH_MALLOC; + free(iter->hpi_min_heap.mh_elems); + } + iter->hpi_min_heap.mh_elems = NULL; +} + + +#ifndef NDEBUG +static int lsquic_hpi_heap_test = ( + LSQUIC_HPI_HEAP_TEST_STACK_OK | LSQUIC_HPI_HEAP_TEST_4K_OK); +void +lsquic_hpi_set_heap_test (int val) +{ + lsquic_hpi_heap_test = val; +} +#endif + + +static int +heap_nonincr_bucket (struct http_prio_iter *iter, unsigned prio) +{ + struct lsquic_stream *stream; + size_t need; + + if (iter->hpi_counts[prio] <= sizeof(iter->hpi_min_heap_els) + / sizeof(iter->hpi_min_heap_els[0]) +#ifndef NDEBUG + && (lsquic_hpi_heap_test & LSQUIC_HPI_HEAP_TEST_STACK_OK) +#endif + ) + iter->hpi_min_heap.mh_elems = iter->hpi_min_heap_els; + else if (need = iter->hpi_counts[prio] * sizeof(struct min_heap_elem), + need <= 0x1000 +#ifndef NDEBUG + && (lsquic_hpi_heap_test & LSQUIC_HPI_HEAP_TEST_4K_OK) +#endif + ) + { + iter->hpi_min_heap.mh_elems = lsquic_mm_get_4k(iter->hpi_conn_pub->mm); + if (!iter->hpi_min_heap.mh_elems) + return -1; + iter->hpi_flags |= HPI_MH_4K; + } + else + { + iter->hpi_min_heap.mh_elems = malloc(need); + if (!iter->hpi_min_heap.mh_elems) + return -1; + iter->hpi_flags |= HPI_MH_MALLOC; + } + + iter->hpi_min_heap.mh_nalloc = iter->hpi_counts[prio]; + TAILQ_FOREACH(stream, &iter->hpi_streams[0][prio], next_prio_stream) + lsquic_mh_insert(&iter->hpi_min_heap, stream, stream->id); + iter->hpi_heaped |= 1u << prio; + + return 0; +} + + +static struct lsquic_stream * +next_nonincr (struct http_prio_iter *iter, unsigned prio) +{ + struct lsquic_stream *stream; + + if (iter->hpi_heaped & (1u << prio)) + { + pop_stream: + stream = lsquic_mh_pop(&iter->hpi_min_heap); + if (lsquic_mh_count(&iter->hpi_min_heap) == 0) + { + free_heap_elems(iter); + iter->hpi_set[0] &= ~(1u << prio); + } + } + else if (iter->hpi_counts[prio] > 1) + { + if (0 == heap_nonincr_bucket(iter, prio)) + goto pop_stream; + /* Handle memory allocation failure by abandoning attempts to order + * the streams: + */ + iter->hpi_counts[prio] = 1; + goto first_stream; + } + else + { + first_stream: + stream = TAILQ_FIRST(&iter->hpi_streams[0][prio]); + TAILQ_REMOVE(&iter->hpi_streams[0][prio], stream, next_prio_stream); + if (TAILQ_EMPTY(&iter->hpi_streams[0][prio])) + iter->hpi_set[0] &= ~(1u << prio); + } + + return stream; +} + + +struct lsquic_stream * +lsquic_hpi_next (void *iter_p) +{ + struct http_prio_iter *const iter = iter_p; + struct lsquic_stream *stream; + unsigned prio, incr; + + calc_next_prio_and_incr(iter, prio, incr); + + if (prio >= N_HPI_PRIORITIES) + return NULL; + + if (incr) + stream = next_incr(iter, prio); + else + stream = next_nonincr(iter, prio); + + if (LSQ_LOG_ENABLED(LSQ_LOG_DEBUG)) + HPI_DEBUG("%s: return stream %"PRIu64", incr: %u, priority %u", + __func__, stream->id, incr, prio); + return stream; +} + + +#if __GNUC__ +# define popcount __builtin_popcount +#else +static int +popcount (unsigned v) +{ + int count; + unsigned i; + for (i = 0, count = 0; i < sizeof(v) * 8; ++i) + if (v & (1 << i)) + ++count; + return count; +} +#endif + + +static void +hpi_drop_high_or_non_high (void *iter_p, int drop_high) +{ + struct http_prio_iter *const iter = iter_p; + unsigned prio, incr; + + /* Nothing to drop if there is only one bucket */ + if (popcount(iter->hpi_set[0]) + popcount(iter->hpi_set[1]) < 2) + return; + + calc_next_prio_and_incr(iter, prio, incr); + + if (drop_high) + iter->hpi_set[incr] &= ~(1u << prio); + else + { + iter->hpi_set[incr] = 1u << prio; + iter->hpi_set[!incr] = 0; + } +} + + +void +lsquic_hpi_drop_high (void *iter_p) +{ + hpi_drop_high_or_non_high(iter_p, 1); +} + + +void +lsquic_hpi_drop_non_high (void *iter_p) +{ + hpi_drop_high_or_non_high(iter_p, 0); +} + + +void +lsquic_hpi_cleanup (void *iter_p) +{ + struct http_prio_iter *const iter = iter_p; + + if (iter->hpi_min_heap.mh_elems) + free_heap_elems(iter); +} diff --git a/external/lsquic/src/liblsquic/lsquic_hpi.h b/external/lsquic/src/liblsquic/lsquic_hpi.h new file mode 100644 index 0000000..d4a3fff --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_hpi.h @@ -0,0 +1,79 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_hpi.h - HPI: (Extensible) HTTP Priority Iterator + * + * https://tools.ietf.org/html/draft-ietf-httpbis-priority-01 + * + * Changing a stream's priority when the stream is in the iterator + * does not change the stream's position in the iterator. + */ + +#ifndef LSQUIC_HPI +#define LSQUIC_HPI 1 + +#ifndef LSQUIC_TEST +#define LSQUIC_TEST 0 +#endif + +struct lsquic_conn_public; + +/* We add 1 to the urgency when we place them on hpi_streams. Critical + * streams get the highest-priority slot zero. + */ +#define N_HPI_PRIORITIES (2 + LSQUIC_MAX_HTTP_URGENCY) + + +struct http_prio_iter +{ + const char *hpi_name; /* Used for logging */ + struct lsquic_conn_public *hpi_conn_pub; + enum { + HPI_MH_4K = 1 << 0, + HPI_MH_MALLOC = 1 << 1, + } hpi_flags; + unsigned hpi_set[2]; /* Bitmask */ + unsigned hpi_counts[N_HPI_PRIORITIES]; /* For non-incr only */ + unsigned hpi_heaped; /* Bitmask */ + struct lsquic_streams_tailq hpi_streams[2][N_HPI_PRIORITIES]; + struct min_heap hpi_min_heap; + /* We do this because http_prio_iter is used in a union with + * stream_prio_iter, which is over 4KB on the stack. Since we + * are already allocating this memory on the stack, we might as well + * use it. + */ + struct min_heap_elem hpi_min_heap_els[236]; +}; + + +void +lsquic_hpi_init (void *, struct lsquic_stream *first, + struct lsquic_stream *last, uintptr_t next_ptr_offset, + struct lsquic_conn_public *, const char *name, + int (*filter)(void *filter_ctx, struct lsquic_stream *), + void *filter_ctx); + +struct lsquic_stream * +lsquic_hpi_first (void *); + +struct lsquic_stream * +lsquic_hpi_next (void *); + +void +lsquic_hpi_drop_non_high (void *); + +void +lsquic_hpi_drop_high (void *); + +void +lsquic_hpi_cleanup (void *); + +#ifndef NDEBUG +#define LSQUIC_HPI_HEAP_TEST_STACK_OK (1 << 0) +#define LSQUIC_HPI_HEAP_TEST_4K_OK (1 << 1) +#if LSQUIC_TEST +void +lsquic_hpi_set_heap_test (int val); +#endif +#endif + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_hq.h b/external/lsquic/src/liblsquic/lsquic_hq.h new file mode 100644 index 0000000..062dfa7 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_hq.h @@ -0,0 +1,103 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_hq.h -- HTTP/3 (originally "HTTP over QUIC" or HQ) types + */ + +#ifndef LSQUIC_HQ_H +#define LSQUIC_HQ_H 1 + +struct lsquic_ext_http_prio; + +/* [draft-ietf-quic-http-27] Section 11.2.1 */ +enum hq_frame_type +{ + HQFT_DATA = 0, + HQFT_HEADERS = 1, + HQFT_CANCEL_PUSH = 3, + HQFT_SETTINGS = 4, + HQFT_PUSH_PROMISE = 5, + HQFT_GOAWAY = 7, + HQFT_MAX_PUSH_ID = 0xD, + /* These made me expand shf_frame_type to 4 bytes from 1. If at some + * point we have to support a frame that is wider than 4 byte, it will + * be time to bite the bullet and use our own enum for these types + * (just like we do for transport parameters). A simpler alternative + * would be to drop the enum and use #define's, but it would stink... + */ + HQFT_PRIORITY_UPDATE_STREAM= 0xF0700, + HQFT_PRIORITY_UPDATE_PUSH = 0xF0701, + /* This frame is made up and its type is never written to stream. + * Nevertheless, just to be on the safe side, give it a value as + * described in [draft-ietf-quic-http-20] Section 4.2.10. + */ + HQFT_PUSH_PREAMBLE = 0x1F * 3 + 0x21, +}; + + +enum hq_setting_id +{ + HQSID_QPACK_MAX_TABLE_CAPACITY = 1, + HQSID_MAX_HEADER_LIST_SIZE = 6, + HQSID_QPACK_BLOCKED_STREAMS = 7, +}; + +/* As of 12/18/2018: */ +#define HQ_DF_QPACK_MAX_TABLE_CAPACITY 0 +#define HQ_DF_MAX_HEADER_LIST_SIZE 0 +#define HQ_DF_QPACK_BLOCKED_STREAMS 0 + + +/* [draft-ietf-quic-http-19] Section 10.6, + * [draft-ietf-quic-qpack-07] Section 8.2 + */ +enum hq_uni_stream_type +{ + HQUST_CONTROL = 0, + HQUST_PUSH = 1, + HQUST_QPACK_ENC = 2, + HQUST_QPACK_DEC = 3, +}; + + +/* [draft-ietf-quic-http-23] Section 8.1 and + * [draft-ietf-quic-qpack-08], Section 8.3 + */ +enum http_error_code +{ + HEC_NO_ERROR = 0x100, + HEC_GENERAL_PROTOCOL_ERROR = 0x101, + HEC_INTERNAL_ERROR = 0x102, + HEC_STREAM_CREATION_ERROR = 0x103, + HEC_CLOSED_CRITICAL_STREAM = 0x104, + HEC_FRAME_UNEXPECTED = 0x105, + HEC_FRAME_ERROR = 0x106, + HEC_EXCESSIVE_LOAD = 0x107, + HEC_ID_ERROR = 0x108, + HEC_SETTINGS_ERROR = 0x109, + HEC_MISSING_SETTINGS = 0x10A, + HEC_REQUEST_REJECTED = 0x10B, + HEC_REQUEST_CANCELLED = 0x10C, + HEC_REQUEST_INCOMPLETE = 0x10D, + HEC_MESSAGE_ERROR = 0x10E, + HEC_CONNECT_ERROR = 0x10F, + HEC_VERSION_FALLBACK = 0x110, + HEC_QPACK_DECOMPRESSION_FAILED = 0x200, + HEC_QPACK_ENCODER_STREAM_ERROR = 0x201, + HEC_QPACK_DECODER_STREAM_ERROR = 0x202, +}; + + +enum ppc_flags +{ + PPC_URG_NAME = 1 << 0, + PPC_INC_NAME = 1 << 1, + PPC_URG_SET = 1 << 2, /* 'urgency' is set */ + PPC_INC_SET = 1 << 3, /* 'incremental' is set */ +}; + + +int +lsquic_http_parse_pfv (const char *, size_t, enum ppc_flags * /* optional */, + struct lsquic_ext_http_prio *, char *str, size_t); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_hspack_valid.c b/external/lsquic/src/liblsquic/lsquic_hspack_valid.c new file mode 100644 index 0000000..a30b3e6 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_hspack_valid.c @@ -0,0 +1,165 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_hspack_valid.c -- Handshake packet validator. + * + * We want to eliminate invalid packets as soon as we read them in and not + * feed them to lsquic engine if we can avoid it. The handshake packet + * possesses several characteristics which make it possible to detect + * garbage packets. + */ + + +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_gquic.h" +#include "lsquic_packet_ietf.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_version.h" +#include "lsquic_parse_common.h" + + +#define SMALLEST_GQUIC_OVERHEAD \ + 1 /* Type */ \ + + GQUIC_CID_LEN \ + + sizeof(lsquic_ver_tag_t) \ + + 1 /* Packet number */ \ + + 1 /* Stream frame */ \ + + 1 /* Stream ID */ \ + + 2 /* Data length */ \ + + 12 /* IV */ + + + +/* Note that we ignore nonce: even if the flag is set, we know that Chrome + * does not actually include the 32-byte nonce. + */ +static int +is_valid_gquic_hs_packet (const unsigned char *buf, size_t bufsz, + lsquic_ver_tag_t *tag) +{ + if (bufsz > GQUIC_MAX_PACKET_SZ || + /* Data: HPACKed :method GET :path / is 2 bytes */ + bufsz < SMALLEST_GQUIC_OVERHEAD + 2 || + /* Check maximum packet number: */ + buf[1 + GQUIC_CID_LEN + sizeof(lsquic_ver_tag_t)] > 64 || + /* From [draft-hamilton-quic-transport-protocol-01]: + * 0x80 is currently unused, and must be set to 0. + * 0x40 = MULTIPATH. This bit is reserved for multipath use. + * + * 0x30 = Packet number length. We expect these bits to be + * unset. + * + * The reference implementation checks that two high bits are not + * set if version flag is not set or if the version is the same. + * For our purposes, all GQUIC version we support so far have these + * bits set to zero. + * + * Incoming handshake packets must have both connection ID and + * version bits set. + * + * Nonce flag is ignored: Chrome sets it erronesously, but it may + * not be true (a) in the future or (b) in other clients. + */ + ((buf[0] ^ ( + /* These should be unset: */ + (~(0x80|0x40|0x30|PACKET_PUBLIC_FLAGS_RST)) + & + /* While these should be set: */ + (PACKET_PUBLIC_FLAGS_VERSION| + PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID) + )) & /* Ignore this bit: */ ~PACKET_PUBLIC_FLAGS_NONCE) + ) + { + return 0; + } + + memcpy(tag, buf + 1 + 8, sizeof(*tag)); + + return 1; +} + + +int +lsquic_is_valid_hs_packet (struct lsquic_engine *engine, + const unsigned char *buf, size_t bufsz) +{ + lsquic_ver_tag_t tag; + int is_valid; + + if (bufsz < 1) + return 0; + + switch (buf[0] & 0xF8) + { + /* Xs vary, Gs are iGnored: */ + /* 1X11 XGGG: Q046 long header */ + case 0x80|0x40|0x20|0x10|0x08: + case 0x80|0x00|0x20|0x10|0x08: + case 0x80|0x40|0x20|0x10|0x00: + case 0x80|0x00|0x20|0x10|0x00: + is_valid = bufsz >= IQUIC_MIN_INIT_PACKET_SZ + && lsquic_is_valid_iquic_hs_packet(buf, bufsz, &tag); + break; + /* 1X00 XGGG: ID-22 long header */ + case 0x80|0x40|0x00|0x00|0x08: + case 0x80|0x00|0x00|0x00|0x08: + case 0x80|0x40|0x00|0x00|0x00: + case 0x80|0x00|0x00|0x00|0x00: + /* 1X01 XGGG: ID-22 long header */ + case 0x80|0x40|0x00|0x10|0x08: + case 0x80|0x00|0x00|0x10|0x08: + case 0x80|0x40|0x00|0x10|0x00: + case 0x80|0x00|0x00|0x10|0x00: + /* 1X10 XGGG: ID-22 long header */ + case 0x80|0x40|0x20|0x00|0x08: + case 0x80|0x00|0x20|0x00|0x08: + case 0x80|0x40|0x20|0x00|0x00: + case 0x80|0x00|0x20|0x00|0x00: + is_valid = bufsz >= IQUIC_MIN_INIT_PACKET_SZ + && lsquic_is_valid_ietf_v1_or_Q046plus_hs_packet(buf, bufsz, &tag); + break; + /* 01XX XGGG: ID-22 short header */ + case 0x00|0x40|0x00|0x00|0x00: + case 0x00|0x40|0x00|0x00|0x08: + case 0x00|0x40|0x00|0x10|0x00: + case 0x00|0x40|0x00|0x10|0x08: + case 0x00|0x40|0x20|0x00|0x00: + case 0x00|0x40|0x20|0x00|0x08: + case 0x00|0x40|0x20|0x10|0x00: + case 0x00|0x40|0x20|0x10|0x08: + is_valid = 0; + break; + /* 00XX 0GGG: Q046 short header */ + case 0x00|0x00|0x00|0x00|0x00: + case 0x00|0x00|0x00|0x10|0x00: + case 0x00|0x00|0x20|0x00|0x00: + case 0x00|0x00|0x20|0x10|0x00: + is_valid = 0; + break; + /* 00XX 1GGG: GQUIC */ + case 0x00|0x00|0x00|0x00|0x08: + case 0x00|0x00|0x00|0x10|0x08: + case 0x00|0x00|0x20|0x00|0x08: + case 0x00|0x00|0x20|0x10|0x08: + is_valid = is_valid_gquic_hs_packet(buf, bufsz, &tag); + break; + default: /* gcc thinks this is possible?! */ + assert(0); + is_valid = 0; + break; + } + + if (is_valid) + { + return 1; + } + else + return 0; +} diff --git a/external/lsquic/src/liblsquic/lsquic_http.c b/external/lsquic/src/liblsquic/lsquic_http.c new file mode 100644 index 0000000..dd2402a --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_http.c @@ -0,0 +1,77 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* Various HTTP-related functions. */ + +#include +#include +#ifdef WIN32 +#include +#endif + +#include "ls-sfparser.h" +#include "lsquic.h" +#include "lsquic_hq.h" + + +struct parse_pfv_ctx +{ + enum ppc_flags ppc_flags; + struct lsquic_ext_http_prio *ppc_ehp; +}; + + +static int +parse_pfv (void *user_data, enum ls_sf_dt type, char *str, size_t len, int off) +{ + struct parse_pfv_ctx *const pfv_ctx = user_data; + unsigned urgency; + + if (type == LS_SF_DT_NAME) + { + if (1 == len) + switch (str[0]) + { + case 'u': pfv_ctx->ppc_flags |= PPC_URG_NAME; return 0; + case 'i': pfv_ctx->ppc_flags |= PPC_INC_NAME; return 0; + } + } + else if (pfv_ctx->ppc_flags & PPC_URG_NAME) + { + if (type == LS_SF_DT_INTEGER) + { + urgency = atoi(str); + if (urgency <= LSQUIC_MAX_HTTP_URGENCY) + { + pfv_ctx->ppc_ehp->urgency = urgency; + pfv_ctx->ppc_flags |= PPC_URG_SET; + } + } + } + else if (pfv_ctx->ppc_flags & PPC_INC_NAME) + { + if (type == LS_SF_DT_BOOLEAN) + { + pfv_ctx->ppc_ehp->incremental = str[0] - '0'; + pfv_ctx->ppc_flags |= PPC_INC_SET; + } + } + pfv_ctx->ppc_flags &= ~(PPC_INC_NAME|PPC_URG_NAME); + + return 0; +} + + +int +lsquic_http_parse_pfv (const char *pfv, size_t pfv_sz, + enum ppc_flags *flags, struct lsquic_ext_http_prio *ehp, + char *scratch_buf, size_t scratch_sz) +{ + int ret; + struct parse_pfv_ctx pfv_ctx = { .ppc_flags = flags ? *flags : 0, + .ppc_ehp = ehp, }; + + ret = ls_sf_parse(LS_SF_TLT_DICTIONARY, pfv, pfv_sz, parse_pfv, &pfv_ctx, + scratch_buf, scratch_sz); + if (flags) + *flags = pfv_ctx.ppc_flags; + return ret; +} diff --git a/external/lsquic/src/liblsquic/lsquic_http1x_if.c b/external/lsquic/src/liblsquic/lsquic_http1x_if.c new file mode 100644 index 0000000..ce8e2e6 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_http1x_if.c @@ -0,0 +1,631 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_headers.h" +#include "lsquic_http1x_if.h" +#include "lshpack.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_HTTP1X +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(hwc->hwc_conn) +#include "lsquic_logger.h" + +enum pseudo_header +{ + PSEH_METHOD, + PSEH_SCHEME, + PSEH_AUTHORITY, + PSEH_PATH, + PSEH_STATUS, + N_PSEH +}; + +#define BIT(x) (1 << (x)) + +#define ALL_REQUEST_PSEH (BIT(PSEH_METHOD)|BIT(PSEH_SCHEME)|BIT(PSEH_AUTHORITY)|BIT(PSEH_PATH)) +#define REQUIRED_REQUEST_PSEH (BIT(PSEH_METHOD)|BIT(PSEH_SCHEME)|BIT(PSEH_PATH)) + +#define ALL_SERVER_PSEH BIT(PSEH_STATUS) +#define REQUIRED_SERVER_PSEH ALL_SERVER_PSEH + +#define PSEH_LEN(h) (sizeof(#h) - 5) + +struct header_writer_ctx +{ + const struct lsquic_conn *hwc_conn; + char *buf; + char *cookie_val; + unsigned cookie_sz, cookie_nalloc; + unsigned max_headers_sz, + headers_sz, + w_off; + enum { + HWC_SERVER = 1 << 0, + HWC_EXPECT_COLON = 1 << 1, + HWC_SEEN_HOST = 1 << 2, + HWC_PUSH_PROMISE = 1 << 3, + } hwc_flags; + enum pseudo_header pseh_mask; + char *pseh_bufs[N_PSEH]; + struct http1x_headers hwc_h1h; + size_t hwc_header_buf_nalloc; + struct lsxpack_header hwc_xhdr; +}; + + +#define HWC_PSEH_LEN(hwc, ph) ((int) strlen((hwc)->pseh_bufs[ph])) + +#define HWC_PSEH_VAL(hwc, ph) ((hwc)->pseh_bufs[ph]) + +/* flags for frames with request headers */ +#define HWC_REQUEST_HANDLING_FLAGS (HWC_SERVER|HWC_PUSH_PROMISE) + +static void * +h1h_create_header_set (void *ctx, lsquic_stream_t *stream, int is_push_promise) +{ + const struct http1x_ctor_ctx *hcc = ctx; + struct header_writer_ctx *hwc; + + hwc = calloc(1, sizeof(*hwc)); + if (!hwc) + return NULL; + + hwc->hwc_flags = HWC_EXPECT_COLON; + if (hcc->is_server) + hwc->hwc_flags |= HWC_SERVER; + if (is_push_promise) + hwc->hwc_flags |= HWC_PUSH_PROMISE; + hwc->max_headers_sz = hcc->max_headers_sz; + hwc->hwc_conn = hcc->conn; + return &hwc->hwc_h1h; +} + + +static int +hwc_uh_write (struct header_writer_ctx *hwc, const void *buf, size_t sz) +{ + char *h1h_buf; + + if (hwc->w_off + sz > hwc->headers_sz) + { + if (hwc->headers_sz * 2 >= hwc->w_off + sz) + hwc->headers_sz *= 2; + else + hwc->headers_sz = hwc->w_off + sz; + h1h_buf = realloc(hwc->hwc_h1h.h1h_buf, hwc->headers_sz); + if (!h1h_buf) + return -1; + hwc->hwc_h1h.h1h_buf = h1h_buf; + } + memcpy(&hwc->hwc_h1h.h1h_buf[hwc->w_off], buf, sz); + hwc->w_off += sz; + return 0; +} + + +static int +save_pseudo_header (struct header_writer_ctx *hwc, enum pseudo_header ph, + const char *val, unsigned val_len) +{ + if (0 == (hwc->pseh_mask & BIT(ph))) + { + assert(!hwc->pseh_bufs[ph]); + hwc->pseh_bufs[ph] = malloc(val_len + 1); + if (!hwc->pseh_bufs[ph]) + return -1; + hwc->pseh_mask |= BIT(ph); + memcpy(hwc->pseh_bufs[ph], val, val_len); + hwc->pseh_bufs[ph][val_len] = '\0'; + return 0; + } + else + { + LSQ_INFO("header %u is already present", ph); + return 1; + } +} + + +static int +add_pseudo_header (struct header_writer_ctx *hwc, struct lsxpack_header *xhdr) +{ + const char *name, *val; + unsigned name_len, val_len; + + if (!(hwc->hwc_flags & HWC_EXPECT_COLON)) + { + LSQ_INFO("unexpected colon"); + return 1; + } + + name = lsxpack_header_get_name(xhdr); + val = lsxpack_header_get_value(xhdr); + name_len = xhdr->name_len; + val_len = xhdr->val_len; + + switch (name_len) + { + case 5: + if (0 == memcmp(name, ":path", 5)) + return save_pseudo_header(hwc, PSEH_PATH, val, val_len); + break; + case 7: + switch (name[2]) + { + case 'c': + if (0 == memcmp(name, ":scheme", 7)) + return save_pseudo_header(hwc, PSEH_SCHEME, val, val_len); + break; + case 'e': + if (0 == memcmp(name, ":method", 7)) + return save_pseudo_header(hwc, PSEH_METHOD, val, val_len); + break; + case 't': + if (0 == memcmp(name, ":status", 7)) + return save_pseudo_header(hwc, PSEH_STATUS, val, val_len); + break; + } + break; + case 10: + if (0 == memcmp(name, ":authority", 10)) + return save_pseudo_header(hwc, PSEH_AUTHORITY, val, val_len); + break; + } + + LSQ_INFO("unknown pseudo-header `%.*s'", name_len, name); + return 1; +} + + +#define HTTP_CODE_LEN 3 + +static const char * +code_str_to_reason (const char code_str[HTTP_CODE_LEN]) +{ + /* RFC 7231, Section 6: */ + static const char *const http_reason_phrases[] = + { + #define HTTP_REASON_CODE(code, reason) [code - 100] = reason + HTTP_REASON_CODE(100, "Continue"), + HTTP_REASON_CODE(101, "Switching Protocols"), + HTTP_REASON_CODE(200, "OK"), + HTTP_REASON_CODE(201, "Created"), + HTTP_REASON_CODE(202, "Accepted"), + HTTP_REASON_CODE(203, "Non-Authoritative Information"), + HTTP_REASON_CODE(204, "No Content"), + HTTP_REASON_CODE(205, "Reset Content"), + HTTP_REASON_CODE(206, "Partial Content"), + HTTP_REASON_CODE(300, "Multiple Choices"), + HTTP_REASON_CODE(301, "Moved Permanently"), + HTTP_REASON_CODE(302, "Found"), + HTTP_REASON_CODE(303, "See Other"), + HTTP_REASON_CODE(304, "Not Modified"), + HTTP_REASON_CODE(305, "Use Proxy"), + HTTP_REASON_CODE(307, "Temporary Redirect"), + HTTP_REASON_CODE(400, "Bad Request"), + HTTP_REASON_CODE(401, "Unauthorized"), + HTTP_REASON_CODE(402, "Payment Required"), + HTTP_REASON_CODE(403, "Forbidden"), + HTTP_REASON_CODE(404, "Not Found"), + HTTP_REASON_CODE(405, "Method Not Allowed"), + HTTP_REASON_CODE(406, "Not Acceptable"), + HTTP_REASON_CODE(407, "Proxy Authentication Required"), + HTTP_REASON_CODE(408, "Request Timeout"), + HTTP_REASON_CODE(409, "Conflict"), + HTTP_REASON_CODE(410, "Gone"), + HTTP_REASON_CODE(411, "Length Required"), + HTTP_REASON_CODE(412, "Precondition Failed"), + HTTP_REASON_CODE(413, "Payload Too Large"), + HTTP_REASON_CODE(414, "URI Too Long"), + HTTP_REASON_CODE(415, "Unsupported Media Type"), + HTTP_REASON_CODE(416, "Range Not Satisfiable"), + HTTP_REASON_CODE(417, "Expectation Failed"), + HTTP_REASON_CODE(426, "Upgrade Required"), + HTTP_REASON_CODE(500, "Internal Server Error"), + HTTP_REASON_CODE(501, "Not Implemented"), + HTTP_REASON_CODE(502, "Bad Gateway"), + HTTP_REASON_CODE(503, "Service Unavailable"), + HTTP_REASON_CODE(504, "Gateway Timeout"), + HTTP_REASON_CODE(505, "HTTP Version Not Supported"), + #undef HTTP_REASON_CODE + }; + + long code; + char code_buf[HTTP_CODE_LEN + 1]; + + memcpy(code_buf, code_str, HTTP_CODE_LEN); + code_buf[HTTP_CODE_LEN] = '\0'; + code = strtol(code_buf, NULL, 10) - 100; + if (code > 0 && code < (long) (sizeof(http_reason_phrases) / + sizeof(http_reason_phrases[0]))) + return http_reason_phrases[code]; + else + return NULL; +} + + +static int +convert_response_pseudo_headers (struct header_writer_ctx *hwc) +{ + if ((hwc->pseh_mask & REQUIRED_SERVER_PSEH) != REQUIRED_SERVER_PSEH) + { + LSQ_INFO("not all response pseudo-headers are specified"); + return 1; + } + if (hwc->pseh_mask & ALL_REQUEST_PSEH) + { + LSQ_INFO("response pseudo-headers contain request-only headers"); + return 1; + } + + const char *code_str, *reason; + int code_len; + + code_str = HWC_PSEH_VAL(hwc, PSEH_STATUS); + code_len = HWC_PSEH_LEN(hwc, PSEH_STATUS); + +#define HWC_UH_WRITE(h, buf, sz) do { \ + if (0 != hwc_uh_write(h, buf, sz)) \ + return -1; \ +} while (0) + + HWC_UH_WRITE(hwc, "HTTP/1.1 ", 9); + HWC_UH_WRITE(hwc, code_str, code_len); + if (HTTP_CODE_LEN == code_len && (reason = code_str_to_reason(code_str))) + { + HWC_UH_WRITE(hwc, " ", 1); + HWC_UH_WRITE(hwc, reason, strlen(reason)); + HWC_UH_WRITE(hwc, "\r\n", 2); + } + else + HWC_UH_WRITE(hwc, " \r\n", 3); + if (hwc->max_headers_sz && hwc->w_off > hwc->max_headers_sz) + { + LSQ_INFO("headers too large"); + return 1; + } + return 0; + +#undef HWC_UH_WRITE +} + + +static int +convert_request_pseudo_headers (struct header_writer_ctx *hwc) +{ + if ((hwc->pseh_mask & REQUIRED_REQUEST_PSEH) != REQUIRED_REQUEST_PSEH) + { + LSQ_INFO("not all request pseudo-headers are specified"); + return 1; + } + if (hwc->pseh_mask & ALL_SERVER_PSEH) + { + LSQ_INFO("request pseudo-headers contain response-only headers"); + return 1; + } + +#define HWC_UH_WRITE(h, buf, sz) do { \ + if (0 != hwc_uh_write(h, buf, sz)) \ + return -1; \ +} while (0) + + HWC_UH_WRITE(hwc, HWC_PSEH_VAL(hwc, PSEH_METHOD), HWC_PSEH_LEN(hwc, PSEH_METHOD)); + HWC_UH_WRITE(hwc, " ", 1); + HWC_UH_WRITE(hwc, HWC_PSEH_VAL(hwc, PSEH_PATH), HWC_PSEH_LEN(hwc, PSEH_PATH)); + HWC_UH_WRITE(hwc, " HTTP/1.1\r\n", 11); + + if (hwc->max_headers_sz && hwc->w_off > hwc->max_headers_sz) + { + LSQ_INFO("headers too large"); + return 1; + } + + return 0; + +#undef HWC_UH_WRITE +} + + +static int +convert_pseudo_headers (struct header_writer_ctx *hwc) +{ + /* We are *reading* the message. Thus, a server expects a request, and a + * client expects a response. Unless we receive a push promise from the + * server, in which case this should also be a request. + */ + if (hwc->hwc_flags & (HWC_SERVER|HWC_PUSH_PROMISE)) + return convert_request_pseudo_headers(hwc); + else + return convert_response_pseudo_headers(hwc); +} + + +static int +save_cookie (struct header_writer_ctx *hwc, const char *val, unsigned val_len) +{ + char *cookie_val; + + if (0 == hwc->cookie_sz) + { + hwc->cookie_nalloc = hwc->cookie_sz = val_len; + cookie_val = malloc(hwc->cookie_nalloc); + if (!cookie_val) + return -1; + hwc->cookie_val = cookie_val; + memcpy(hwc->cookie_val, val, val_len); + } + else + { + hwc->cookie_sz += val_len + 2 /* "; " */; + if (hwc->cookie_sz > hwc->cookie_nalloc) + { + hwc->cookie_nalloc = hwc->cookie_nalloc * 2 + val_len + 2; + cookie_val = realloc(hwc->cookie_val, hwc->cookie_nalloc); + if (!cookie_val) + return -1; + hwc->cookie_val = cookie_val; + } + memcpy(hwc->cookie_val + hwc->cookie_sz - val_len - 2, "; ", 2); + memcpy(hwc->cookie_val + hwc->cookie_sz - val_len, val, val_len); + } + + return 0; +} + + +static int +add_real_header (struct header_writer_ctx *hwc, struct lsxpack_header *xhdr) +{ + int err; + unsigned i; + int n_upper; + const char *name, *val; + unsigned name_len, val_len; + + if (hwc->hwc_flags & HWC_EXPECT_COLON) + { + if (0 != (err = convert_pseudo_headers(hwc))) + return err; + hwc->hwc_flags &= ~HWC_EXPECT_COLON; + } + + name = lsxpack_header_get_name(xhdr); + val = lsxpack_header_get_value(xhdr); + name_len = xhdr->name_len; + val_len = xhdr->val_len; + + if (4 == name_len && 0 == memcmp(name, "host", 4)) + { + if(hwc->pseh_mask & BIT(PSEH_AUTHORITY)) + { + LSQ_INFO("authority header was sent. ignoring host header with value `%.*s'", val_len, val); + return 0; + } + + hwc->hwc_flags |= HWC_SEEN_HOST; + } + + n_upper = 0; + for (i = 0; i < name_len; ++i) + n_upper += isupper(name[i]); + if (n_upper > 0) + { + LSQ_INFO("Header name `%.*s' contains uppercase letters", + name_len, name); + return 1; + } + + if (6 == name_len && memcmp(name, "cookie", 6) == 0) + { + return save_cookie(hwc, val, val_len); + } + +#define HWC_UH_WRITE(h, buf, sz) do { \ + if (0 != hwc_uh_write(h, buf, sz)) \ + return -1; \ +} while (0) + + HWC_UH_WRITE(hwc, name, name_len); + HWC_UH_WRITE(hwc, ": ", 2); + HWC_UH_WRITE(hwc, val, val_len); + HWC_UH_WRITE(hwc, "\r\n", 2); + + if (hwc->max_headers_sz && hwc->w_off > hwc->max_headers_sz) + { + LSQ_INFO("headers too large"); + return 1; + } + + return 0; + +#undef HWC_UH_WRITE +} + + +static int +add_header_to_uh (struct header_writer_ctx *hwc, struct lsxpack_header *xhdr) +{ + const char *name; + + name = lsxpack_header_get_name(xhdr); + LSQ_DEBUG("Got header '%.*s': '%.*s'", (int) xhdr->name_len, name, + (int) xhdr->val_len, lsxpack_header_get_value(xhdr)); + if (':' == name[0]) + return add_pseudo_header(hwc, xhdr); + else + return add_real_header(hwc, xhdr); +} + + +static int +h1h_finish_hset (struct header_writer_ctx *hwc) +{ + int st; + + if (hwc->hwc_flags & HWC_EXPECT_COLON) + { + st = convert_pseudo_headers(hwc); + if (0 != st) + return st; + hwc->hwc_flags &= ~HWC_EXPECT_COLON; + } + +#define HWC_UH_WRITE(h, buf, sz) do { \ + st = hwc_uh_write(h, buf, sz); \ + if (0 != st) \ + return st; \ +} while (0) + + if(0 == (hwc->hwc_flags & HWC_SEEN_HOST) && 0 != (hwc->hwc_flags & HWC_REQUEST_HANDLING_FLAGS)) + { + if((hwc->pseh_mask & BIT(PSEH_AUTHORITY))) + { + LSQ_DEBUG("Setting 'Host: %.*s'", HWC_PSEH_LEN(hwc, PSEH_AUTHORITY), + HWC_PSEH_VAL(hwc, PSEH_AUTHORITY)); + HWC_UH_WRITE(hwc, "Host: ", 6); + HWC_UH_WRITE(hwc, HWC_PSEH_VAL(hwc, PSEH_AUTHORITY), + HWC_PSEH_LEN(hwc, PSEH_AUTHORITY)); + HWC_UH_WRITE(hwc, "\r\n", 2); + } + else + { + LSQ_INFO("both host header and authority pseudo header were not found"); + return 1; + } + } + + if (hwc->cookie_val) + { + LSQ_DEBUG("Setting 'Cookie: %.*s'", hwc->cookie_sz, hwc->cookie_val); + HWC_UH_WRITE(hwc, "Cookie: ", 8); + HWC_UH_WRITE(hwc, hwc->cookie_val, hwc->cookie_sz); + HWC_UH_WRITE(hwc, "\r\n", 2); + } + + HWC_UH_WRITE(hwc, "\r\n", 2 + 1 /* NUL byte */); + hwc->w_off -= 1; /* Do not count NUL byte */ + hwc->hwc_h1h.h1h_size = hwc->w_off; + + if (hwc->max_headers_sz && hwc->w_off > hwc->max_headers_sz) + { + LSQ_INFO("headers too large"); + return 1; + } + + return 0; +} + +#define HWC_PTR(data_in) (struct header_writer_ctx *) \ + ((unsigned char *) (hset) - offsetof(struct header_writer_ctx, hwc_h1h)) + + +static struct lsxpack_header * +h1h_prepare_decode (void *hset, struct lsxpack_header *xhdr, size_t req_space) +{ + struct header_writer_ctx *const hwc = HWC_PTR(hset); + size_t nalloc; + char *buf; + + if (req_space < 0x100) + req_space = 0x100; + + if (req_space > MAX_HTTP1X_HEADERS_SIZE || req_space > LSXPACK_MAX_STRLEN) + { + LSQ_DEBUG("requested space for header is too large: %zd bytes", + req_space); + return NULL; + } + + if (!xhdr) + { + if (0 == hwc->hwc_header_buf_nalloc + || req_space > hwc->hwc_header_buf_nalloc) + { + if (0 == hwc->hwc_header_buf_nalloc) + { + buf = malloc(req_space); + } + else + { + buf = realloc(hwc->hwc_xhdr.buf, req_space); + } + + if (!buf) + { + LSQ_WARN("cannot %s %zd bytes", + hwc->hwc_header_buf_nalloc ? "reallocate to" : "allocate", req_space); + return NULL; + } + + hwc->hwc_xhdr.buf = buf; + hwc->hwc_header_buf_nalloc = req_space; + } + else + buf = hwc->hwc_xhdr.buf; + lsxpack_header_prepare_decode(&hwc->hwc_xhdr, buf, 0, req_space); + } + else + { + if (req_space > hwc->hwc_header_buf_nalloc) + { + if (req_space < hwc->hwc_header_buf_nalloc * 2) + nalloc = hwc->hwc_header_buf_nalloc * 2; + else + nalloc = req_space; + buf = realloc(hwc->hwc_xhdr.buf, nalloc); + if (!buf) + { + LSQ_DEBUG("cannot reallocate to %zd bytes", nalloc); + return NULL; + } + hwc->hwc_xhdr.buf = buf; + hwc->hwc_header_buf_nalloc = nalloc; + } + hwc->hwc_xhdr.val_len = req_space; + } + + return &hwc->hwc_xhdr; +} + + +static int +h1h_process_header (void *hset, struct lsxpack_header *xhdr) +{ + struct header_writer_ctx *const hwc = HWC_PTR(hset); + if (xhdr) + return add_header_to_uh(hwc, xhdr); + else + return h1h_finish_hset(hwc); +} + + +static void +h1h_discard_header_set (void *hset) +{ + struct header_writer_ctx *const hwc = HWC_PTR(hset); + unsigned i; + + for (i = 0; i < sizeof(hwc->pseh_bufs) / sizeof(hwc->pseh_bufs[0]); ++i) + if (hwc->pseh_bufs[i]) + free(hwc->pseh_bufs[i]); + if (hwc->cookie_val) + free(hwc->cookie_val); + free(hwc->hwc_h1h.h1h_buf); + free(hwc->hwc_xhdr.buf); + free(hwc); +} + + +static const struct lsquic_hset_if http1x_if = +{ + .hsi_create_header_set = h1h_create_header_set, + .hsi_prepare_decode = h1h_prepare_decode, + .hsi_process_header = h1h_process_header, + .hsi_discard_header_set = h1h_discard_header_set, +}; + +const struct lsquic_hset_if *const lsquic_http1x_if = &http1x_if; diff --git a/external/lsquic/src/liblsquic/lsquic_http1x_if.h b/external/lsquic/src/liblsquic/lsquic_http1x_if.h new file mode 100644 index 0000000..1ba771b --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_http1x_if.h @@ -0,0 +1,21 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_HTTP1X_IF_H +#define LSQUIC_HTTP1X_IF_H 1 + +#include "lsquic_shared_support.h" + +struct lsquic_hset_if; +struct lsquic_conn; + +struct http1x_ctor_ctx +{ + const struct lsquic_conn *conn; /* Used for logging */ + unsigned max_headers_sz; + int is_server; +}; + +LSQUIC_EXTERN const struct lsquic_hset_if *const lsquic_http1x_if; + +#define MAX_HTTP1X_HEADERS_SIZE (64 * 1024) + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_ietf.h b/external/lsquic/src/liblsquic/lsquic_ietf.h new file mode 100644 index 0000000..e9349e3 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_ietf.h @@ -0,0 +1,45 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_IETF_H +#define LSQUIC_IETF_H 1 + +/* Things specific to the IETF version of QUIC that do not fit anywhere else */ + +/* [draft-ietf-quic-transport-33] Section 20 */ +enum trans_error_code +{ + TEC_NO_ERROR = 0x0, + TEC_INTERNAL_ERROR = 0x1, + TEC_CONNECTION_REFUSED = 0x2, + TEC_FLOW_CONTROL_ERROR = 0x3, + TEC_STREAM_LIMIT_ERROR = 0x4, + TEC_STREAM_STATE_ERROR = 0x5, + TEC_FINAL_SIZE_ERROR = 0x6, + TEC_FRAME_ENCODING_ERROR = 0x7, + TEC_TRANSPORT_PARAMETER_ERROR = 0x8, + TEC_CONNECTION_ID_LIMIT_ERROR = 0x9, + TEC_PROTOCOL_VIOLATION = 0xA, + TEC_INVALID_TOKEN = 0xB, + TEC_APPLICATION_ERROR = 0xC, + TEC_CRYPTO_BUFFER_EXCEEDED = 0xD, + TEC_KEY_UPDATE_ERROR = 0xE, + TEC_AEAD_LIMIT_REACHED = 0xF, + TEC_NO_VIABLE_PATH = 0x10, + TEC_VERSION_NEGOTIATION_ERROR = 0x11, +}; + +/* Must be at least two */ +#define MAX_IETF_CONN_DCIDS 8 + +/* [draft-ietf-quic-tls-25] Section 5.8 */ +#define IETF_RETRY_KEY_SZ 16 +#define IETF_RETRY_NONCE_SZ 12 + +#define N_IETF_RETRY_VERSIONS 4 +extern const unsigned char *const lsquic_retry_key_buf[N_IETF_RETRY_VERSIONS]; +extern const unsigned char *const lsquic_retry_nonce_buf[N_IETF_RETRY_VERSIONS]; +#define lsquic_version_2_retryver(ver_) ( \ + (ver_) <= LSQVER_ID27 ? 0 : \ + (ver_) < LSQVER_I001 ? 1 : \ + (ver_) == LSQVER_I002 ? 3 : 2) + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_int_types.h b/external/lsquic/src/liblsquic/lsquic_int_types.h new file mode 100644 index 0000000..dd7d67b --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_int_types.h @@ -0,0 +1,31 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_INT_TYPES_H +#define LSQUIC_INT_TYPES_H 1 + +/* Types included in this file are only used internally. Types used in + * include/lsquic.h should be listed in include/lsquic_types.h + */ + +#include + +typedef uint64_t lsquic_time_t; /* Microseconds since some time */ +typedef uint64_t lsquic_packno_t; +typedef uint32_t lsquic_ver_tag_t; /* Opaque 4-byte value */ + +/* The `low' and `high' members are inclusive: if the range only has one + * member, low == high. + */ +struct lsquic_packno_range { + lsquic_packno_t low, high; +}; + +/* RFC 3168 */ +enum ecn +{ + ECN_NOT_ECT = 0, + ECN_ECT1 = 1, + ECN_ECT0 = 2, + ECN_CE = 3, +}; + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_logger.c b/external/lsquic/src/liblsquic/lsquic_logger.c new file mode 100644 index 0000000..df0fc7e --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_logger.c @@ -0,0 +1,544 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * LSQUIC Logger implementation. + */ + +#include +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif +#include + +#define LSQUIC_LOGGER_MODULE LSQLM_LOGGER /* Quis custodiet ipsos custodes? */ +#include "lsquic.h" +#include "lsquic_logger.h" + +#define MAX_LINE_LEN 8192 +/* Expanded TRUNC_FMT should not exceed TRUNC_SZ bytes. At the same time, + * TRUNC_SZ should be significantly smaller than MAX_LINE_LEN. + */ +#define TRUNC_FMT "" +#define TRUNC_SZ 40 +#define FORMAT_PROBLEM(lb, len, max) ((lb < 0) || (lb + len >= max)) + +/* TODO: display GQUIC CIDs in Chrome-compatible format */ + +static enum lsquic_logger_timestamp_style g_llts = LLTS_NONE; + +static int +null_log_buf (void *ctx, const char *buf, size_t len) +{ + return 0; +} + +static int +file_log_buf (void *ctx, const char *buf, size_t len) +{ + return (int)fwrite(buf, sizeof(char), len, (FILE *) ctx); +} + +static const struct lsquic_logger_if file_logger_if = { + .log_buf = file_log_buf, +}; + +static const struct lsquic_logger_if null_logger_if = { + .log_buf = null_log_buf, +}; + +static void *logger_ctx = NULL; +static const struct lsquic_logger_if *logger_if = &null_logger_if; + +enum lsq_log_level lsq_log_levels[N_LSQUIC_LOGGER_MODULES] = { + [LSQLM_NOMODULE] = LSQ_LOG_WARN, + [LSQLM_LOGGER] = LSQ_LOG_WARN, + [LSQLM_EVENT] = LSQ_LOG_WARN, + [LSQLM_ENGINE] = LSQ_LOG_WARN, + [LSQLM_CONN] = LSQ_LOG_WARN, + [LSQLM_STREAM] = LSQ_LOG_WARN, + [LSQLM_PARSE] = LSQ_LOG_WARN, + [LSQLM_CFCW] = LSQ_LOG_WARN, + [LSQLM_SFCW] = LSQ_LOG_WARN, + [LSQLM_SENDCTL] = LSQ_LOG_WARN, + [LSQLM_ALARMSET] = LSQ_LOG_WARN, + [LSQLM_CRYPTO] = LSQ_LOG_WARN, + [LSQLM_HANDSHAKE] = LSQ_LOG_WARN, + [LSQLM_HSK_ADAPTER] = LSQ_LOG_WARN, + [LSQLM_BBR] = LSQ_LOG_WARN, + [LSQLM_CUBIC] = LSQ_LOG_WARN, + [LSQLM_ADAPTIVE_CC] = LSQ_LOG_WARN, + [LSQLM_HEADERS] = LSQ_LOG_WARN, + [LSQLM_FRAME_READER]= LSQ_LOG_WARN, + [LSQLM_FRAME_WRITER]= LSQ_LOG_WARN, + [LSQLM_MINI_CONN] = LSQ_LOG_WARN, + [LSQLM_TOKGEN] = LSQ_LOG_WARN, + [LSQLM_ENG_HIST] = LSQ_LOG_WARN, + [LSQLM_SPI] = LSQ_LOG_WARN, + [LSQLM_HPI] = LSQ_LOG_WARN, + [LSQLM_DI] = LSQ_LOG_WARN, + [LSQLM_PRQ] = LSQ_LOG_WARN, + [LSQLM_PACER] = LSQ_LOG_WARN, + [LSQLM_HTTP1X] = LSQ_LOG_WARN, + [LSQLM_QLOG] = LSQ_LOG_WARN, + [LSQLM_TRAPA] = LSQ_LOG_WARN, + [LSQLM_PURGA] = LSQ_LOG_WARN, + [LSQLM_HCSI_READER] = LSQ_LOG_WARN, + [LSQLM_HCSO_WRITER] = LSQ_LOG_WARN, + [LSQLM_QENC_HDL] = LSQ_LOG_WARN, + [LSQLM_QDEC_HDL] = LSQ_LOG_WARN, + [LSQLM_QPACK_ENC] = LSQ_LOG_WARN, + [LSQLM_QPACK_DEC] = LSQ_LOG_WARN, + [LSQLM_PRIO] = LSQ_LOG_WARN, + [LSQLM_BW_SAMPLER] = LSQ_LOG_WARN, + [LSQLM_PACKET_RESIZE] = LSQ_LOG_WARN, + [LSQLM_CONN_STATS] = LSQ_LOG_WARN, +}; + +const char *const lsqlm_to_str[N_LSQUIC_LOGGER_MODULES] = { + [LSQLM_NOMODULE] = "", + [LSQLM_LOGGER] = "logger", + [LSQLM_EVENT] = "event", + [LSQLM_ENGINE] = "engine", + [LSQLM_CONN] = "conn", + [LSQLM_STREAM] = "stream", + [LSQLM_PARSE] = "parse", + [LSQLM_CFCW] = "cfcw", + [LSQLM_SFCW] = "sfcw", + [LSQLM_SENDCTL] = "sendctl", + [LSQLM_ALARMSET] = "alarmset", + [LSQLM_CRYPTO] = "crypto", + [LSQLM_HANDSHAKE] = "handshake", + [LSQLM_HSK_ADAPTER] = "hsk-adapter", + [LSQLM_BBR] = "bbr", + [LSQLM_CUBIC] = "cubic", + [LSQLM_ADAPTIVE_CC] = "adaptive-cc", + [LSQLM_HEADERS] = "headers", + [LSQLM_FRAME_READER]= "frame-reader", + [LSQLM_FRAME_WRITER]= "frame-writer", + [LSQLM_MINI_CONN] = "mini-conn", + [LSQLM_TOKGEN] = "tokgen", + [LSQLM_ENG_HIST] = "eng-hist", + [LSQLM_SPI] = "spi", + [LSQLM_HPI] = "hpi", + [LSQLM_DI] = "di", + [LSQLM_PRQ] = "prq", + [LSQLM_PACER] = "pacer", + [LSQLM_HTTP1X] = "http1x", + [LSQLM_QLOG] = "qlog", + [LSQLM_TRAPA] = "trapa", + [LSQLM_PURGA] = "purga", + [LSQLM_HCSI_READER] = "hcsi-reader", + [LSQLM_HCSO_WRITER] = "hcso-writer", + [LSQLM_QENC_HDL] = "qenc-hdl", + [LSQLM_QDEC_HDL] = "qdec-hdl", + [LSQLM_QPACK_ENC] = "qpack-enc", + [LSQLM_QPACK_DEC] = "qpack-dec", + [LSQLM_PRIO] = "prio", + [LSQLM_BW_SAMPLER] = "bw-sampler", + [LSQLM_PACKET_RESIZE] = "packet-resize", + [LSQLM_CONN_STATS] = "conn-stats", +}; + +const char *const lsq_loglevel2str[N_LSQUIC_LOG_LEVELS] = { + [LSQ_LOG_ALERT] = "ALERT", + [LSQ_LOG_CRIT] = "CRIT", + [LSQ_LOG_DEBUG] = "DEBUG", + [LSQ_LOG_EMERG] = "EMERG", + [LSQ_LOG_ERROR] = "ERROR", + [LSQ_LOG_INFO] = "INFO", + [LSQ_LOG_NOTICE] = "NOTICE", + [LSQ_LOG_WARN] = "WARN", +}; + + +#ifdef WIN32 +#define DELTA_EPOCH_IN_TICKS 116444736000000000Ui64 +struct timezone +{ + time_t tz_minuteswest; /* minutes W of Greenwich */ + time_t tz_dsttime; /* type of dst correction */ +}; + +static int +gettimeofday (struct timeval *tv, struct timezone *tz) +{ + FILETIME ft; + uint64_t tmpres; + static int tzflag; + + if (NULL != tv) + { + GetSystemTimeAsFileTime(&ft); + + tmpres = ((uint64_t) ft.dwHighDateTime << 32) + | (ft.dwLowDateTime); + + tmpres -= DELTA_EPOCH_IN_TICKS; + tv->tv_sec = tmpres / 10000000; + tv->tv_usec = tmpres % 1000000; + } + + if (NULL != tz) + { + if (!tzflag) + { + _tzset(); + tzflag++; + } + tz->tz_minuteswest = _timezone / 60; + tz->tz_dsttime = _daylight; + } + + return 0; +} +#endif + + +static size_t +print_timestamp (char *buf, size_t max) +{ + struct tm tm; + struct timeval tv; + size_t len = 0; + + gettimeofday(&tv, NULL); +#ifdef WIN32 + { + time_t t = tv.tv_sec; +#ifndef NDEBUG + errno_t e = +#endif + localtime_s(&tm, &t); + assert(!e); + } +#else + localtime_r(&tv.tv_sec, &tm); +#endif + if (g_llts == LLTS_YYYYMMDD_HHMMSSUS) + len = snprintf(buf, max, "%04d-%02d-%02d %02d:%02d:%02d.%06d ", + tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, + tm.tm_hour, tm.tm_min, tm.tm_sec, (int) (tv.tv_usec)); + else if (g_llts == LLTS_YYYYMMDD_HHMMSSMS) + len = snprintf(buf, max, "%04d-%02d-%02d %02d:%02d:%02d.%03d ", + tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, + tm.tm_hour, tm.tm_min, tm.tm_sec, (int) (tv.tv_usec / 1000)); + else if (g_llts == LLTS_HHMMSSMS) + len = snprintf(buf, max, "%02d:%02d:%02d.%03d ", + tm.tm_hour, tm.tm_min, tm.tm_sec, (int) (tv.tv_usec / 1000)); + else if (g_llts == LLTS_HHMMSSUS) + len = snprintf(buf, max, "%02d:%02d:%02d.%06d ", + tm.tm_hour, tm.tm_min, tm.tm_sec, (int) tv.tv_usec); + else if (g_llts == LLTS_CHROMELIKE) + len = snprintf(buf, max, "%02d%02d/%02d%02d%02d.%06d ", + tm.tm_mon + 1, tm.tm_mday,tm.tm_hour, tm.tm_min, + tm.tm_sec, (int) tv.tv_usec); + return len; +} + + +void +lsquic_logger_log3 (enum lsq_log_level log_level, + enum lsquic_logger_module module, + const lsquic_cid_t *conn_id, lsquic_stream_id_t stream_id, + const char *fmt, ...) +{ + const int saved_errno = errno; + char cidbuf_[MAX_CID_LEN * 2 + 1]; + size_t len = 0; + int lb; + size_t max = MAX_LINE_LEN; + char buf[MAX_LINE_LEN]; + + if (g_llts != LLTS_NONE) + { + lb = print_timestamp(buf, max); + if (FORMAT_PROBLEM(lb, len, max)) + goto end; + len += lb; + } + lb = snprintf(buf + len, max - len, "[%s] [QUIC:%"CID_FMT"-%"PRIu64"] %s: ", + lsq_loglevel2str[log_level], CID_BITS(conn_id), + stream_id, lsqlm_to_str[module]); + if (FORMAT_PROBLEM(lb, len, max)) + goto end; + len += lb; + va_list ap; + va_start(ap, fmt); + lb = vsnprintf(buf + len, max - len, fmt, ap); + va_end(ap); + if (lb > 0 && (size_t) lb >= max - len && max - len >= TRUNC_SZ) + { + len = max - TRUNC_SZ; + lb = snprintf(buf + max - TRUNC_SZ, TRUNC_SZ, TRUNC_FMT, lb); + } + if (FORMAT_PROBLEM(lb, len, max)) + goto end; + len += lb; + lb = snprintf(buf + len, max - len, "\n"); + if (FORMAT_PROBLEM(lb, len, max)) + goto end; + len += lb; + logger_if->log_buf(logger_ctx, buf, len); +end: + errno = saved_errno; +} + + +void +lsquic_logger_log2 (enum lsq_log_level log_level, + enum lsquic_logger_module module, + const struct lsquic_cid *conn_id, const char *fmt, ...) +{ + const int saved_errno = errno; + char cidbuf_[MAX_CID_LEN * 2 + 1]; + size_t len = 0; + int lb; + size_t max = MAX_LINE_LEN; + char buf[MAX_LINE_LEN]; + + if (g_llts != LLTS_NONE) + { + lb = print_timestamp(buf, max); + if (FORMAT_PROBLEM(lb, len, max)) + goto end; + len += lb; + } + + lb = snprintf(buf + len, max - len, "[%s] [QUIC:%"CID_FMT"] %s: ", + lsq_loglevel2str[log_level], CID_BITS(conn_id), lsqlm_to_str[module]); + if (FORMAT_PROBLEM(lb, len, max)) + goto end; + len += lb; + va_list ap; + va_start(ap, fmt); + lb = vsnprintf(buf + len, max - len, fmt, ap); + va_end(ap); + if (lb > 0 && (size_t) lb >= max - len && max - len >= TRUNC_SZ) + { + len = max - TRUNC_SZ; + lb = snprintf(buf + max - TRUNC_SZ, TRUNC_SZ, TRUNC_FMT, lb); + } + if (FORMAT_PROBLEM(lb, len, max)) + goto end; + len += lb; + lb = snprintf(buf + len, max - len, "\n"); + if (FORMAT_PROBLEM(lb, len, max)) + goto end; + len += lb; + logger_if->log_buf(logger_ctx, buf, len); +end: + errno = saved_errno; +} + + +void +lsquic_logger_log1 (enum lsq_log_level log_level, + enum lsquic_logger_module module, + const char *fmt, ...) +{ + const int saved_errno = errno; + size_t len = 0; + int lb; + size_t max = MAX_LINE_LEN; + char buf[MAX_LINE_LEN]; + + if (g_llts != LLTS_NONE) + { + lb = print_timestamp(buf, max); + if (FORMAT_PROBLEM(lb, len, max)) + goto end; + len += lb; + } + lb = snprintf(buf + len, max - len, "[%s] %s: ", lsq_loglevel2str[log_level], + lsqlm_to_str[module]); + if (FORMAT_PROBLEM(lb, len, max)) + goto end; + len += lb; + va_list ap; + va_start(ap, fmt); + lb = vsnprintf(buf + len, max - len, fmt, ap); + va_end(ap); + if (lb > 0 && (size_t) lb >= max - len && max - len >= TRUNC_SZ) + { + len = max - TRUNC_SZ; + lb = snprintf(buf + max - TRUNC_SZ, TRUNC_SZ, TRUNC_FMT, lb); + } + if (FORMAT_PROBLEM(lb, len, max)) + goto end; + len += lb; + lb = snprintf(buf + len, max - len, "\n"); + if (FORMAT_PROBLEM(lb, len, max)) + goto end; + len += lb; + logger_if->log_buf(logger_ctx, buf, len); +end: + errno = saved_errno; +} + + +void +lsquic_logger_log0 (enum lsq_log_level log_level, const char *fmt, ...) +{ + const int saved_errno = errno; + size_t len = 0; + int lb; + size_t max = MAX_LINE_LEN; + char buf[MAX_LINE_LEN]; + + if (g_llts != LLTS_NONE) + { + lb = print_timestamp(buf, max); + if (FORMAT_PROBLEM(lb, len, max)) + goto end; + len += lb; + } + + lb = snprintf(buf + len, max - len, "[%s] ", lsq_loglevel2str[log_level]); + if (FORMAT_PROBLEM(lb, len, max)) + goto end; + len += lb; + va_list ap; + va_start(ap, fmt); + lb = vsnprintf(buf + len, max - len, fmt, ap); + va_end(ap); + if (lb > 0 && (size_t) lb >= max - len && max - len >= TRUNC_SZ) + { + len = max - TRUNC_SZ; + lb = snprintf(buf + max - TRUNC_SZ, TRUNC_SZ, TRUNC_FMT, lb); + } + if (FORMAT_PROBLEM(lb, len, max)) + goto end; + len += lb; + lb = snprintf(buf + len, max - len, "\n"); + if (FORMAT_PROBLEM(lb, len, max)) + goto end; + len += lb; + logger_if->log_buf(logger_ctx, buf, len); +end: + errno = saved_errno; +} + + +void +lsquic_logger_init (const struct lsquic_logger_if *lif, void *lctx, + enum lsquic_logger_timestamp_style llts) +{ + logger_if = lif; + logger_ctx = lctx; + if (llts < N_LLTS) + g_llts = llts; + LSQ_DEBUG("%s called", __func__); +} + + +enum lsquic_logger_module +lsquic_str_to_logger_module (const char *str) +{ + enum lsquic_logger_module i; + for (i = 0; i < sizeof(lsqlm_to_str) / sizeof(lsqlm_to_str[0]); ++i) + if (0 == strcasecmp(lsqlm_to_str[i], str)) + return i; + return -1; +} + + +enum lsq_log_level +lsquic_str_to_log_level (const char *str) +{ + if (0 == strcasecmp(str, "emerg")) + return LSQ_LOG_EMERG; + if (0 == strcasecmp(str, "alert")) + return LSQ_LOG_ALERT; + if (0 == strcasecmp(str, "crit")) + return LSQ_LOG_CRIT; + if (0 == strcasecmp(str, "error")) + return LSQ_LOG_ERROR; + if (0 == strcasecmp(str, "warn")) + return LSQ_LOG_WARN; + if (0 == strcasecmp(str, "notice")) + return LSQ_LOG_NOTICE; + if (0 == strcasecmp(str, "info")) + return LSQ_LOG_INFO; + if (0 == strcasecmp(str, "debug")) + return LSQ_LOG_DEBUG; + return -1; +} + + +void +lsquic_log_to_fstream (FILE *file, unsigned llts) +{ + lsquic_logger_init(&file_logger_if, file, + (enum lsquic_logger_timestamp_style)llts); +} + + +int +lsquic_logger_lopt (const char *optarg_orig) +{ + char *const optarg = strdup(optarg_orig); + char *mod_str; + int i; + for (i = 0; (mod_str = strtok(i ? NULL : optarg, ",")); ++i) { + char *level_str = strchr(mod_str, '='); + if (!level_str) { + fprintf(stderr, "Invalid module specification `%s'\n", mod_str); + break; + } + *level_str = '\0'; + ++level_str; + enum lsquic_logger_module mod = lsquic_str_to_logger_module(mod_str); + if (-1 == (int) mod) { + fprintf(stderr, "`%s' is not a valid module name\n", mod_str); + break; + } + enum lsq_log_level level = lsquic_str_to_log_level(level_str); + if (-1 == (int) level) { + fprintf(stderr, "`%s' is not a valid level\n", level_str); + break; + } + lsq_log_levels[mod] = level; + LSQ_INFO("set %s to %s", mod_str, level_str); + } + free(optarg); + return mod_str == NULL ? 0 : -1; +} + + +int +lsquic_set_log_level (const char *level_str) +{ + enum lsq_log_level level; + unsigned i; + + level = lsquic_str_to_log_level(level_str); + if ((int) level >= 0) + { + for (i = 0; i < sizeof(lsq_log_levels) / sizeof(lsq_log_levels[0]); ++i) + lsq_log_levels[i] = level; + return 0; + } + else + return -1; +} + + +/* `out' must be at least MAX_CID_LEN * 2 + 1 characters long */ +void +lsquic_cid2str (const lsquic_cid_t *cid, char *out) +{ + static const char hex[] = "0123456789ABCDEF"; + int i; + + for (i = 0; i < (int) cid->len; ++i) + { + *out++ = hex[ cid->idbuf[i] >> 4 ]; + *out++ = hex[ cid->idbuf[i] & 0xF ]; + } + *out = '\0'; +} diff --git a/external/lsquic/src/liblsquic/lsquic_logger.h b/external/lsquic/src/liblsquic/lsquic_logger.h new file mode 100644 index 0000000..2d84eba --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_logger.h @@ -0,0 +1,272 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_logger.h -- logging functions and macros. + * + * Usage (this assumes MY_MODULE) is a part of enum lsquic_logger_module): + * #define LSQUIC_LOGGER_MODULE MY_MODULE + * #include "lsquic_logger.h" + * LSQ_INFO("info message"); + * + * If you want log messages from your module to contain connection ID, #define + * LSQUIC_LOG_CONN_ID so that it evaluates to connection ID. If, in addition, + * you want stream ID to be logged, #define LSQUIC_LOG_STREAM_ID similarly. + * See existing code for examples. + * + * To add a module: + * 1. Add entry to enum lsquic_logger_module. + * 2. Update lsqlm_to_str. + * 3. Update lsq_log_levels. + */ + +#ifndef LSQUIC_LOGGER_H +#define LSQUIC_LOGGER_H + +#include +#include + +#include "lsquic_shared_support.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef LSQUIC_LOWEST_LOG_LEVEL +# define LSQUIC_LOWEST_LOG_LEVEL LSQ_LOG_DEBUG +#endif + +/* Same levels as in sys/syslog.h: */ +enum lsq_log_level { + LSQ_LOG_EMERG, + LSQ_LOG_ALERT, + LSQ_LOG_CRIT, + LSQ_LOG_ERROR, + LSQ_LOG_WARN, + LSQ_LOG_NOTICE, + LSQ_LOG_INFO, + LSQ_LOG_DEBUG, + N_LSQUIC_LOG_LEVELS +}; + +enum lsquic_logger_module { + LSQLM_NOMODULE, + LSQLM_LOGGER, + LSQLM_EVENT, + LSQLM_ENGINE, + LSQLM_CONN, + LSQLM_STREAM, + LSQLM_PARSE, + LSQLM_CFCW, + LSQLM_SFCW, + LSQLM_SENDCTL, + LSQLM_ALARMSET, + LSQLM_CRYPTO, + LSQLM_HANDSHAKE, + LSQLM_HSK_ADAPTER, + LSQLM_BBR, + LSQLM_CUBIC, + LSQLM_ADAPTIVE_CC, + LSQLM_HEADERS, + LSQLM_FRAME_WRITER, + LSQLM_FRAME_READER, + LSQLM_MINI_CONN, + LSQLM_TOKGEN, + LSQLM_ENG_HIST, + LSQLM_SPI, + LSQLM_HPI, + LSQLM_DI, + LSQLM_PRQ, + LSQLM_PACER, + LSQLM_HTTP1X, + LSQLM_QLOG, + LSQLM_TRAPA, + LSQLM_PURGA, + LSQLM_HCSI_READER, + LSQLM_HCSO_WRITER, + LSQLM_QENC_HDL, + LSQLM_QDEC_HDL, + LSQLM_QPACK_ENC, + LSQLM_QPACK_DEC, + LSQLM_PRIO, + LSQLM_BW_SAMPLER, + LSQLM_PACKET_RESIZE, + LSQLM_CONN_STATS, + N_LSQUIC_LOGGER_MODULES +}; + +/* Each module has its own log level. + */ + +LSQUIC_EXTERN enum lsq_log_level lsq_log_levels[N_LSQUIC_LOGGER_MODULES]; + +extern const char *const lsqlm_to_str[N_LSQUIC_LOGGER_MODULES]; + +extern const char *const lsq_loglevel2str[N_LSQUIC_LOG_LEVELS]; + +#define LSQ_LOG_ENABLED_EXT(level, module) ( \ + level <= LSQUIC_LOWEST_LOG_LEVEL && level <= lsq_log_levels[module]) + +#define LSQ_LOG_ENABLED(level) LSQ_LOG_ENABLED_EXT(level, LSQUIC_LOGGER_MODULE) + +struct lsquic_cid; + +/* The functions that perform actual logging are void. This is an + * optimization. In majority of cases the calls will succeed; even if + * they fail, there is nothing (at least, nothing simple) to be done to + * handle logging failure. + */ + +/* There are four levels of log functions, depending on whether they take + * the following arguments: + * 1. Logger module + * 2. Connection ID + * 3. Stream ID + * + * Each level of logging function supports one additional argument, as seen + * below. LSQ_LOG is set to one of LSQ_LOG0, LSQ_LOG1, LSQ_LOG2, or LSQ_LOG3. + * You can still use LSQ_LOG{0..3} directly. + */ + +void +lsquic_logger_log3 (enum lsq_log_level, enum lsquic_logger_module, + const struct lsquic_cid *conn_id, + lsquic_stream_id_t stream_id, const char *format, ...) +#if __GNUC__ + __attribute__((format(printf, 5, 6))) +#endif +; +# define LSQ_LOG3(level, ...) do { \ + if (LSQ_LOG_ENABLED(level)) \ + lsquic_logger_log3(level, LSQUIC_LOGGER_MODULE, \ + LSQUIC_LOG_CONN_ID, LSQUIC_LOG_STREAM_ID, __VA_ARGS__); \ + } while (0) + + +void +lsquic_logger_log2 (enum lsq_log_level, enum lsquic_logger_module, + const struct lsquic_cid *conn_id, const char *format, ...) +#if __GNUC__ + __attribute__((format(printf, 4, 5))) +#endif +; +# define LSQ_LOG2(level, ...) do { \ + if (LSQ_LOG_ENABLED(level)) \ + lsquic_logger_log2(level, LSQUIC_LOGGER_MODULE, \ + LSQUIC_LOG_CONN_ID, __VA_ARGS__); \ + } while (0) +# define LSQ_LOG2C(level, ...) do { \ + if (LSQ_LOG_ENABLED(level)) \ + { \ + char cidbuf_[MAX_CID_LEN * 2 + 1]; \ + lsquic_logger_log2(level, LSQUIC_LOGGER_MODULE, \ + LSQUIC_LOG_CONN_ID, __VA_ARGS__); \ + } \ + } while (0) + +void +lsquic_logger_log1 (enum lsq_log_level, enum lsquic_logger_module, + const char *format, ...) +#if __GNUC__ + __attribute__((format(printf, 3, 4))) +#endif +; +# define LSQ_LOG1(level, ...) do { \ + if (LSQ_LOG_ENABLED(level)) \ + lsquic_logger_log1(level, LSQUIC_LOGGER_MODULE, __VA_ARGS__); \ + } while (0) +# define LSQ_LOG1C(level, ...) do { \ + if (LSQ_LOG_ENABLED(level)) \ + { \ + char cidbuf_[MAX_CID_LEN * 2 + 1]; \ + lsquic_logger_log1(level, LSQUIC_LOGGER_MODULE, __VA_ARGS__); \ + } \ + } while (0) + +void +lsquic_logger_log0 (enum lsq_log_level, const char *format, ...) +#if __GNUC__ + __attribute__((format(printf, 2, 3))) +#endif +; +# define LSQ_LOG0(level, ...) do { \ + if (LSQ_LOG_ENABLED(level)) \ + lsquic_logger_log0(level, __VA_ARGS__); \ + } while (0) +# define LSQ_LOG0C(level, ...) do { \ + if (LSQ_LOG_ENABLED(level)) \ + { \ + char cidbuf_[MAX_CID_LEN * 2 + 1]; \ + lsquic_logger_log0(level, __VA_ARGS__); \ + } \ + } while (0) + +#if defined(LSQUIC_LOGGER_MODULE) +#if defined(LSQUIC_LOG_CONN_ID) +#if defined(LSQUIC_LOG_STREAM_ID) +# define LSQ_LOG LSQ_LOG3 +#else +# define LSQ_LOG LSQ_LOG2 +# define LSQ_LOGC LSQ_LOG2C +#endif +#else +# define LSQ_LOG LSQ_LOG1 +# define LSQ_LOGC LSQ_LOG1C +#endif +#else +# define LSQ_LOG LSQ_LOG0 +# define LSQ_LOGC LSQ_LOG0C +# define LSQUIC_LOGGER_MODULE LSQLM_NOMODULE +#endif + +#define LSQ_DEBUG(...) LSQ_LOG(LSQ_LOG_DEBUG, __VA_ARGS__) +#define LSQ_WARN(...) LSQ_LOG(LSQ_LOG_WARN, __VA_ARGS__) +#define LSQ_ALERT(...) LSQ_LOG(LSQ_LOG_ALERT, __VA_ARGS__) +#define LSQ_CRIT(...) LSQ_LOG(LSQ_LOG_CRIT, __VA_ARGS__) +#define LSQ_ERROR(...) LSQ_LOG(LSQ_LOG_ERROR, __VA_ARGS__) +#define LSQ_NOTICE(...) LSQ_LOG(LSQ_LOG_NOTICE, __VA_ARGS__) +#define LSQ_INFO(...) LSQ_LOG(LSQ_LOG_INFO, __VA_ARGS__) +#define LSQ_EMERG(...) LSQ_LOG(LSQ_LOG_EMERG, __VA_ARGS__) + +#define LSQ_DEBUGC(...) LSQ_LOGC(LSQ_LOG_DEBUG, __VA_ARGS__) +#define LSQ_WARNC(...) LSQ_LOGC(LSQ_LOG_WARN, __VA_ARGS__) +#define LSQ_ALERTC(...) LSQ_LOGC(LSQ_LOG_ALERT, __VA_ARGS__) +#define LSQ_CRITC(...) LSQ_LOGC(LSQ_LOG_CRIT, __VA_ARGS__) +#define LSQ_ERRORC(...) LSQ_LOGC(LSQ_LOG_ERROR, __VA_ARGS__) +#define LSQ_NOTICEC(...) LSQ_LOGC(LSQ_LOG_NOTICE, __VA_ARGS__) +#define LSQ_INFOC(...) LSQ_LOGC(LSQ_LOG_INFO, __VA_ARGS__) +#define LSQ_EMERGC(...) LSQ_LOGC(LSQ_LOG_EMERG, __VA_ARGS__) + +/* Shorthand for printing to file streams using internal lsquic_logger_if + */ +void +lsquic_log_to_fstream (FILE *, unsigned llts); + +enum lsquic_logger_module +lsquic_str_to_logger_module (const char *); + +enum lsq_log_level +lsquic_str_to_log_level (const char *); + +/* Parse and set log levels passed via -l flag. If an error is encountered, + * an error message is printed to stderr and negative value is returned. + */ +int +lsquic_logger_lopt (const char *optarg); + +#define CID_FMT ".*s" + +#define CID_BITS_B(cid, b) 2 * (int) (cid)->len, \ + (lsquic_cid2str(cid, b), b) + +#define CID_BITS(cid) CID_BITS_B(cid, cidbuf_) + +void +lsquic_cid2str (const struct lsquic_cid *, char *out); + +const struct lsquic_cid * +lsquic_conn_log_cid (const struct lsquic_conn *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_malo.c b/external/lsquic/src/liblsquic/lsquic_malo.c new file mode 100644 index 0000000..f14dbd5 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_malo.c @@ -0,0 +1,456 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_malo.c -- malo allocator implementation. + * + * The malo allocator is a pool of objects of fixed size. It tries to + * allocate and deallocate objects as fast as possible. To do so, it + * does the following: + * + * 1. Allocations occur 4 KB at a time. + * 2. No division or multiplication operations are performed for + * appropriately sized objects. (More on this below.) + * + * (In recent testing, malo was about 2.7 times faster than malloc for + * 64-byte objects.) + * + * Besides speed, two other important characteristics distinguish it + * from other pool allocators: + * + * 1. To free (put) an object, one does not need a pointer to the malo + * object. This makes this allocator easy to use. + * 2. A built-in iterator is provided to iterate over all allocated + * objects (with ability safely to release objects while iterator + * is active). This may be useful in some circumstances. + * + * To gain all these advantages, there are trade-offs: + * + * 1. There are two memory penalties: + * a. Per object overhead. If an object is at least ROUNDUP_THRESH in + * size as the next power of two, the allocator uses that power of + * two value as the object size. This is done to avoid using + * division and multiplication. For example, a 104-byte object + * will have a 24-byte overhead. + * b. Per page overhead. Page links occupy some bytes in the + * page. To keep things fast, at least one slot per page is + * always occupied, independent of object size. Thus, for a + * 1 KB object size, 25% of the page is used for the page + * header. + * 2. 4 KB pages are not freed until the malo allocator is destroyed. + * This is something to keep in mind. + * + * P.S. In Russian, "malo" (мало) means "little" or "few". Thus, the + * malo allocator aims to perform its job in as few CPU cycles as + * possible. + */ + +#include +#include +#include +#include +#include +#ifdef WIN32 +#include +#include +#endif + +#include "fiu-local.h" +#include "lsquic_malo.h" + +#ifndef LSQUIC_USE_POOLS +#define LSQUIC_USE_POOLS 1 +#endif + +/* 64 slots in a 4KB page means that the smallest object is 64 bytes. + * The largest object is 2KB. + */ +#define MALO_MIN_NBITS 6 +#define MALO_MAX_NBITS 11 + +#define ROUNDUP_THRESH 0.75f + +/* A "free page" is a page with free slots available. + */ + +#if LSQUIC_USE_POOLS +static unsigned find_free_slot (uint64_t slots); +static unsigned size_in_bits (size_t sz); +#endif + +struct malo_page { + SLIST_ENTRY(malo_page) next_page; + LIST_ENTRY(malo_page) next_free_page; + struct malo *malo; + uint64_t slots, + full_slot_mask; + unsigned nbits; /* If pow is zero, stores object size */ + unsigned initial_slot; + int pow; /* True if object is power of 2 */ +}; + +typedef char malo_header_fits_in_one_slot + [(sizeof(struct malo_page) > (1 << MALO_MIN_NBITS)) ? -1 : 1]; + +#if !LSQUIC_USE_POOLS +struct nopool_elem +{ + TAILQ_ENTRY(nopool_elem) next; + struct malo *malo; + unsigned char data[0]; +}; +#endif + +struct malo { +#if LSQUIC_USE_POOLS + struct malo_page page_header; + SLIST_HEAD(, malo_page) all_pages; + LIST_HEAD(, malo_page) free_pages; + struct { + struct malo_page *cur_page; + unsigned next_slot; + } iter; +#else + /* List of all elements: used by the iterator */ + TAILQ_HEAD(, nopool_elem) elems; + size_t obj_size; + struct nopool_elem *next_iter_elem; +#endif +}; + +struct malo * +lsquic_malo_create (size_t obj_size) +{ +#if LSQUIC_USE_POOLS + int pow, n_slots; + unsigned nbits; + + obj_size = (obj_size + 7) & -8; + nbits = size_in_bits(obj_size); + if (nbits < MALO_MIN_NBITS) + nbits = MALO_MIN_NBITS; + else if (nbits > MALO_MAX_NBITS) + { + errno = EOVERFLOW; + return NULL; + } + + pow = obj_size <= (1 << MALO_MIN_NBITS) + || (float) obj_size / (1 << nbits) > ROUNDUP_THRESH; + + struct malo *malo; + if (0 != posix_memalign((void **) &malo, 0x1000, 0x1000)) + return NULL; + + SLIST_INIT(&malo->all_pages); + LIST_INIT(&malo->free_pages); + malo->iter.cur_page = &malo->page_header; + malo->iter.next_slot = 0; + + if (pow) + n_slots = sizeof(*malo) / (1 << nbits) + + ((sizeof(*malo) % (1 << nbits)) > 0); + else + n_slots = sizeof(*malo) / obj_size + + ((sizeof(*malo) % obj_size) > 0); + + struct malo_page *const page = &malo->page_header; + SLIST_INSERT_HEAD(&malo->all_pages, page, next_page); + LIST_INSERT_HEAD(&malo->free_pages, page, next_free_page); + page->malo = malo; + if (!pow) + page->full_slot_mask = (1ULL << (0x1000 / obj_size)) - 1; + else if (nbits == MALO_MIN_NBITS) + page->full_slot_mask = ~0ULL; + else + page->full_slot_mask = (1ULL << (1 << (12 - nbits))) - 1; + page->slots = (1ULL << n_slots) - 1; + page->pow = pow; + page->nbits = pow ? nbits : obj_size; + page->initial_slot = n_slots; + + return malo; +#else + struct malo *malo; + + /* Use the same sizing mechanism as in the normal version */ + if (obj_size < (1 << MALO_MIN_NBITS)) + obj_size = 1 << MALO_MIN_NBITS; + else + obj_size = (obj_size + 7) & -8; + + malo = malloc(sizeof(*malo)); + if (malo) + { + TAILQ_INIT(&malo->elems); + malo->obj_size = obj_size; + malo->next_iter_elem = NULL; + return malo; + } + else + return NULL; +#endif +} + + +#if LSQUIC_USE_POOLS +static struct malo_page * +allocate_page (struct malo *malo) +{ + struct malo_page *page; + if (0 != posix_memalign((void **) &page, 0x1000, 0x1000)) + return NULL; + SLIST_INSERT_HEAD(&malo->all_pages, page, next_page); + LIST_INSERT_HEAD(&malo->free_pages, page, next_free_page); + page->slots = 1; + page->full_slot_mask = malo->page_header.full_slot_mask; + page->nbits = malo->page_header.nbits; + page->pow = malo->page_header.pow; + page->malo = malo; + page->initial_slot = 1; + return page; +} +#endif + + +#define FAIL_NOMEM do { errno = ENOMEM; return NULL; } while (0) + +/* Get a new object. */ +void * +lsquic_malo_get (struct malo *malo) +{ +#if LSQUIC_USE_POOLS + fiu_do_on("malo/get", FAIL_NOMEM); + struct malo_page *page = LIST_FIRST(&malo->free_pages); + if (!page) + { + page = allocate_page(malo); + if (!page) + return NULL; + } + unsigned slot = find_free_slot(page->slots); + page->slots |= (1ULL << slot); + if (page->full_slot_mask == page->slots) + LIST_REMOVE(page, next_free_page); + if (page->pow) + return (char *) page + (slot << page->nbits); + else + return (char *) page + (slot * page->nbits); +#else + struct nopool_elem *el; + el = malloc(sizeof(*el) + malo->obj_size); + if (el) + { + TAILQ_INSERT_HEAD(&malo->elems, el, next); + el->malo = malo; + return el->data; + } + else + return NULL; +#endif +} + + +/* Return obj to the pool */ +void +lsquic_malo_put (void *obj) +{ +#if LSQUIC_USE_POOLS + uintptr_t page_addr = (uintptr_t) obj & ~((1 << 12) - 1); + struct malo_page *page = (void *) page_addr; + unsigned slot; + if (page->pow) + slot = ((uintptr_t) obj - page_addr) >> page->nbits; + else + slot = ((uintptr_t) obj - page_addr) / page->nbits; + if (page->full_slot_mask == page->slots) + LIST_INSERT_HEAD(&page->malo->free_pages, page, next_free_page); + page->slots &= ~(1ULL << slot); +#else + struct nopool_elem *el; + el = (struct nopool_elem *) ((char *) obj - sizeof(*el)); + if (el == el->malo->next_iter_elem) + el->malo->next_iter_elem = TAILQ_NEXT(el->malo->next_iter_elem, next); + TAILQ_REMOVE(&el->malo->elems, el, next); + free(el); +#endif +} + + +void +lsquic_malo_destroy (struct malo *malo) +{ +#if LSQUIC_USE_POOLS + struct malo_page *page, *next; + page = SLIST_FIRST(&malo->all_pages); + while (page != &malo->page_header) + { + next = SLIST_NEXT(page, next_page); +#ifndef WIN32 + free(page); +#else + _aligned_free(page); +#endif + page = next; + } +#ifndef WIN32 + free(page); +#else + _aligned_free(page); +#endif +#else + struct nopool_elem *el, *next_el; + for (el = TAILQ_FIRST(&malo->elems); el; el = next_el) + { + next_el = TAILQ_NEXT(el, next); + free(el); + } + free(malo); +#endif +} + + +/* The iterator is built-in. Usage: + * void *obj; + * for (obj = lsquic_malo_first(malo); obj; lsquic_malo_next(malo)) + * do_stuff(obj); + */ +void * +lsquic_malo_first (struct malo *malo) +{ +#if LSQUIC_USE_POOLS + malo->iter.cur_page = SLIST_FIRST(&malo->all_pages); + malo->iter.next_slot = malo->iter.cur_page->initial_slot; +#else + malo->next_iter_elem = TAILQ_FIRST(&malo->elems); +#endif + return lsquic_malo_next(malo); +} + + +void * +lsquic_malo_next (struct malo *malo) +{ +#if LSQUIC_USE_POOLS + struct malo_page *page; + unsigned max_slot, slot; + + page = malo->iter.cur_page; + if (page) + { + if (page->pow) + max_slot = 1 << (12 - page->nbits); /* Same for all pages */ + else + max_slot = 0x1000 / page->nbits; + slot = malo->iter.next_slot; + while (1) + { + for (; slot < max_slot; ++slot) + { + if (page->slots & (1ULL << slot)) + { + malo->iter.cur_page = page; + malo->iter.next_slot = slot + 1; + if (page->pow) + return (char *) page + (slot << page->nbits); + else + { + assert(slot * (page->nbits + 1) < 0x1000); + return (char *) page + (slot * page->nbits); + } + } + } + page = SLIST_NEXT(page, next_page); + if (page) + slot = page->initial_slot; + else + { + malo->iter.cur_page = NULL; /* Stop iterator */ + return NULL; + } + } + } + + return NULL; +#else + struct nopool_elem *retval; + + if (malo->next_iter_elem) + { + retval = malo->next_iter_elem; + malo->next_iter_elem = TAILQ_NEXT(malo->next_iter_elem, next); + return retval->data; + } + else + return NULL; +#endif +} + + +#if LSQUIC_USE_POOLS +static unsigned +size_in_bits (size_t sz) +{ +#if __GNUC__ + unsigned clz = sz > 1 ? __builtin_clz(sz - 1) : 31; + return 32 - clz; +#elif defined(WIN32) + unsigned char s; + unsigned long idx; + s = _BitScanReverse(&idx, sz); + assert(s); + return (unsigned) idx + 1; +#else +#error This function contains a bug! + unsigned clz; + size_t y; + + --sz; + clz = 32; + y = sz >> 16; if (y) { clz -= 16; sz = y; } + y = sz >> 8; if (y) { clz -= 8; sz = y; } + y = sz >> 4; if (y) { clz -= 4; sz = y; } + y = sz >> 2; if (y) { clz -= 2; sz = y; } + y = sz >> 1; if (y) return 32 - clz + 1; + return 32 - clz + sz; +#endif +} + + +static unsigned +find_free_slot (uint64_t slots) +{ +#if __GNUC__ + return __builtin_ffsll(~slots) - 1; +#else + unsigned n; + + slots =~ slots; + n = 0; + + if (0 == (slots & ((1ULL << 32) - 1))) { n += 32; slots >>= 32; } + if (0 == (slots & ((1ULL << 16) - 1))) { n += 16; slots >>= 16; } + if (0 == (slots & ((1ULL << 8) - 1))) { n += 8; slots >>= 8; } + if (0 == (slots & ((1ULL << 4) - 1))) { n += 4; slots >>= 4; } + if (0 == (slots & ((1ULL << 2) - 1))) { n += 2; slots >>= 2; } + if (0 == (slots & ((1ULL << 1) - 1))) { n += 1; slots >>= 1; } + return n; +#endif +} +#endif + + +size_t +lsquic_malo_mem_used (const struct malo *malo) +{ +#if LSQUIC_USE_POOLS + const struct malo_page *page; + size_t size; + + size = 0; + SLIST_FOREACH(page, &malo->all_pages, next_page) + size += sizeof(*page); + + return size; +#else + return 0; +#endif +} diff --git a/external/lsquic/src/liblsquic/lsquic_malo.h b/external/lsquic/src/liblsquic/lsquic_malo.h new file mode 100644 index 0000000..9f701d3 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_malo.h @@ -0,0 +1,49 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_malo.h -- Fast allocator for fixed-sized objects. + */ + +#ifndef LSQUIC_MALO_H +#define LSQUIC_MALO_H 1 + +#ifndef LSQUIC_USE_POOLS +#define LSQUIC_USE_POOLS 1 +#endif + +struct malo; + +/* Create a malo allocator for objects of size `obj_size'. */ +struct malo * +lsquic_malo_create (size_t obj_size); + +/* Get a new object. */ +void * +lsquic_malo_get (struct malo *); + +/* Return obj to the pool */ +void +lsquic_malo_put (void *obj); + +/* This deallocates all remaining objects. */ +void +lsquic_malo_destroy (struct malo *); + +/* This iterator is slow. It is only used in unit tests for verification. + * + * If you to iterate over all elements allocated in a pool, keep track yourself. + */ +/* The iterator is built-in. Usage: + * void *obj; + * for (obj = lsquic_malo_first(obj); obj; lsquic_malo_next(obj)) + * do_stuff(obj); + */ +void * +lsquic_malo_first (struct malo *); + +void * +lsquic_malo_next (struct malo *); + +size_t +lsquic_malo_mem_used (const struct malo *); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_min_heap.c b/external/lsquic/src/liblsquic/lsquic_min_heap.c new file mode 100644 index 0000000..818f1cb --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_min_heap.c @@ -0,0 +1,87 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_min_heap.c + */ + +#include +#include +#include + +#include "lsquic_min_heap.h" + + +static void +heapify_min_heap (struct min_heap *heap, unsigned i) +{ + struct min_heap_elem el; + unsigned smallest; + + assert(i < heap->mh_nelem); + + if (MHE_LCHILD(i) < heap->mh_nelem) + { + if (heap->mh_elems[ MHE_LCHILD(i) ].mhe_val < + heap->mh_elems[ i ].mhe_val) + smallest = MHE_LCHILD(i); + else + smallest = i; + if (MHE_RCHILD(i) < heap->mh_nelem && + heap->mh_elems[ MHE_RCHILD(i) ].mhe_val < + heap->mh_elems[ smallest ].mhe_val) + smallest = MHE_RCHILD(i); + } + else + smallest = i; + + if (smallest != i) + { + el = heap->mh_elems[ smallest ]; + heap->mh_elems[ smallest ] = heap->mh_elems[ i ]; + heap->mh_elems[ i ] = el; + heapify_min_heap(heap, smallest); + } +} + + +void +lsquic_mh_insert (struct min_heap *heap, void *item, uint64_t val) +{ + struct min_heap_elem el; + unsigned i; + + assert(heap->mh_nelem < heap->mh_nalloc); + + heap->mh_elems[ heap->mh_nelem ].mhe_item = item; + heap->mh_elems[ heap->mh_nelem ].mhe_val = val; + ++heap->mh_nelem; + + i = heap->mh_nelem - 1; + while (i > 0 && heap->mh_elems[ MHE_PARENT(i) ].mhe_val > + heap->mh_elems[ i ].mhe_val) + { + el = heap->mh_elems[ MHE_PARENT(i) ]; + heap->mh_elems[ MHE_PARENT(i) ] = heap->mh_elems[ i ]; + heap->mh_elems[ i ] = el; + i = MHE_PARENT(i); + } +} + + +void * +lsquic_mh_pop (struct min_heap *heap) +{ + void *item; + + if (heap->mh_nelem == 0) + return NULL; + + item = heap->mh_elems[0].mhe_item; + --heap->mh_nelem; + if (heap->mh_nelem > 0) + { + heap->mh_elems[0] = heap->mh_elems[ heap->mh_nelem ]; + heapify_min_heap(heap, 0); + } + + return item; +} diff --git a/external/lsquic/src/liblsquic/lsquic_min_heap.h b/external/lsquic/src/liblsquic/lsquic_min_heap.h new file mode 100644 index 0000000..fa277f0 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_min_heap.h @@ -0,0 +1,53 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_min_heap.h -- Min-heap for pointers + */ + +#ifndef LSQUIC_MIN_HEAP_H +#define LSQUIC_MIN_HEAP_H 1 + + +struct min_heap_elem +{ + void *mhe_item; + uint64_t mhe_val; +}; + + +struct min_heap +{ + struct min_heap_elem *mh_elems; + unsigned mh_nalloc, + mh_nelem; +}; + + +void +lsquic_mh_insert (struct min_heap *, void *item, uint64_t val); + +void * +lsquic_mh_pop (struct min_heap *); + +static inline void * +lsquic_mh_peek (struct min_heap *heap) +{ + return heap->mh_elems[0].mhe_item; +} + +static inline unsigned +lsquic_mh_count (struct min_heap *heap) +{ + return +heap->mh_nelem; +} + +static inline unsigned +lsquic_mh_nalloc (const struct min_heap *heap) +{ + return +heap->mh_nalloc; +} + +#define MHE_PARENT(i) ((i - 1) / 2) +#define MHE_LCHILD(i) (2 * i + 1) +#define MHE_RCHILD(i) (2 * i + 2) + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_mini_conn.c b/external/lsquic/src/liblsquic/lsquic_mini_conn.c new file mode 100644 index 0000000..951cb3b --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_mini_conn.c @@ -0,0 +1,2275 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_mini_conn.c -- Mini connection. + * + * Mini connection is only used in server mode -- this assumption is relied + * upon by the code in this file. + * + * The purpose of this connection is to process incoming handshakes using + * minimal amount of resources until we confirm that the client is sending + * valid data. Here, we only process Stream 1 data; other packets are + * spooled, if necessary. When mini connection is promoted to full + * connection, the state, including spooled incoming packets, is transferred + * to the full connection. + */ + + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_rtt.h" +#include "lsquic_mini_conn.h" +#include "lsquic_mm.h" +#include "lsquic_malo.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_gquic.h" +#include "lsquic_packet_ietf.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_util.h" +#include "lsquic_str.h" +#include "lsquic_enc_sess.h" +#include "lsquic_parse.h" +#include "lsquic_engine_public.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_stream.h" +#include "lsquic_rechist.h" +#include "lsquic_ev_log.h" +#include "lsquic_qtags.h" +#include "lsquic_attq.h" +#include "lsquic_alarmset.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_MINI_CONN +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(&mc->mc_conn) +#include "lsquic_logger.h" + + +static const struct conn_iface mini_conn_iface_standard; +static const struct conn_iface mini_conn_iface_standard_Q050; + +#if LSQUIC_KEEP_MINICONN_HISTORY + +static void +mchist_append (struct mini_conn *mc, enum miniconn_history_event mh_event) +{ + enum miniconn_history_event prev_event; + mchist_idx_t idx; + int plus; + + idx = (mc->mc_hist_idx - 1) & MCHIST_MASK; + plus = MCHE_PLUS == mc->mc_hist_buf[ idx ]; + idx = (idx - plus) & MCHIST_MASK; + prev_event = mc->mc_hist_buf[ idx ]; + + if (!(prev_event == mh_event && plus)) + { + if (prev_event == mh_event) + mh_event = MCHE_PLUS; + mc->mc_hist_buf[ MCHIST_MASK & mc->mc_hist_idx++ ] = mh_event; + } +} + + +# define MCHIST_APPEND(mc, event) mchist_append(mc, event) +#else +# define MCHIST_APPEND(mc, event) +#endif + +static void +process_deferred_packets (struct mini_conn *mc); + + +/* If this is not true, highest_bit_set() may be broken */ +typedef char packno_set_is_unsigned_long[ + sizeof(unsigned long long) == sizeof(mconn_packno_set_t) ? 1 : -1 ]; + +static unsigned +highest_bit_set (unsigned long long sz) +{ +#if __GNUC__ + unsigned clz = __builtin_clzll(sz); + return 63 - clz; +#else + unsigned long y; + unsigned n; + n = 64; + y = sz >> 32; if (y) { n -= 32; sz = y; } + y = sz >> 16; if (y) { n -= 16; sz = y; } + y = sz >> 8; if (y) { n -= 8; sz = y; } + y = sz >> 4; if (y) { n -= 4; sz = y; } + y = sz >> 2; if (y) { n -= 2; sz = y; } + y = sz >> 1; if (y) return 63 - n + 2; + return 63 - n + sz; +#endif +} + + +static unsigned +lowest_bit_set (unsigned v) +{ +#if __GNUC__ + return __builtin_ctz(v); +#else + unsigned n; + n = 0; + if (0 == (v & ((1 << 16) - 1))) { n += 16; v >>= 16; } + if (0 == (v & ((1 << 8) - 1))) { n += 8; v >>= 8; } + if (0 == (v & ((1 << 4) - 1))) { n += 4; v >>= 4; } + if (0 == (v & ((1 << 2) - 1))) { n += 2; v >>= 2; } + if (0 == (v & ((1 << 1) - 1))) { n += 1; } + return n; +#endif +} + + +static int +is_handshake_stream_id (const struct mini_conn *conn, + lsquic_stream_id_t stream_id) +{ + return conn->mc_conn.cn_version < LSQVER_050 && stream_id == 1; +} + + +static void +mini_destroy_packet (struct mini_conn *mc, struct lsquic_packet_out *packet_out) +{ + lsquic_packet_out_destroy(packet_out, mc->mc_enpub, + mc->mc_path.np_peer_ctx); +} + + +static int +packet_in_is_ok (enum lsquic_version version, + const struct lsquic_packet_in *packet_in) +{ + size_t min_size; + + if (packet_in->pi_data_sz > GQUIC_MAX_PACKET_SZ) + { + LSQ_LOG1(LSQ_LOG_DEBUG, "incoming packet too large: %hu bytes", + packet_in->pi_data_sz); + return 0; + } + + if ((1 << version) & LSQUIC_GQUIC_HEADER_VERSIONS) + /* This is a very lax number, it allows the server to send + * 64 * 200 = 12KB of output (REJ and SHLO). + */ + min_size = 200; + else + /* Chrome enforces 1200-byte minimum initial packet limit */ + min_size = IQUIC_MIN_INIT_PACKET_SZ; + + if (packet_in->pi_data_sz < min_size) + { + LSQ_LOG1(LSQ_LOG_DEBUG, "incoming packet too small: %hu bytes", + packet_in->pi_data_sz); + return 0; + } + return 1; +} + + +lsquic_conn_t * +lsquic_mini_conn_new (struct lsquic_engine_public *enp, + const struct lsquic_packet_in *packet_in, + enum lsquic_version version) +{ + struct mini_conn *mc; + const struct conn_iface *conn_iface; + + if (!packet_in_is_ok(version, packet_in)) + return NULL; + switch (version) + { + case LSQVER_050: + conn_iface = &mini_conn_iface_standard_Q050; + break; + default: + conn_iface = &mini_conn_iface_standard; + break; + } + + mc = lsquic_malo_get(enp->enp_mm.malo.mini_conn); + if (!mc) + { + LSQ_LOG1(LSQ_LOG_WARN, "cannot allocate mini connection: %s", + strerror(errno)); + return NULL; + } + + memset(mc, 0, sizeof(*mc)); + TAILQ_INIT(&mc->mc_deferred); + TAILQ_INIT(&mc->mc_packets_in); + TAILQ_INIT(&mc->mc_packets_out); + mc->mc_enpub = enp; + mc->mc_created = packet_in->pi_received; + mc->mc_path.np_pack_size = packet_in->pi_data_sz; + mc->mc_conn.cn_cces = mc->mc_cces; + mc->mc_conn.cn_cces_mask = 1; + mc->mc_conn.cn_n_cces = sizeof(mc->mc_cces) / sizeof(mc->mc_cces[0]); + mc->mc_conn.cn_version = version; + mc->mc_conn.cn_pf = select_pf_by_ver(version); + mc->mc_conn.cn_esf_c = select_esf_common_by_ver(version); + mc->mc_conn.cn_esf.g = &lsquic_enc_session_gquic_gquic_1; + mc->mc_conn.cn_cid = packet_in->pi_conn_id; + mc->mc_conn.cn_logid = packet_in->pi_conn_id; + mc->mc_conn.cn_flags = LSCONN_MINI | LSCONN_SERVER; + mc->mc_conn.cn_if = conn_iface; + LSQ_DEBUG("created mini connection object"); + MCHIST_APPEND(mc, MCHE_CREATED); + return &mc->mc_conn; +} + + +static int +in_acked_range (const struct ack_info *acki, lsquic_packno_t n) /* This is a copy */ +{ + int in_range = 0; + unsigned i; + for (i = 0; i < acki->n_ranges; ++i) + in_range += acki->ranges[i].high >= n + && acki->ranges[i].low <= n; + return in_range > 0; +} + + +static void +take_rtt_sample (struct mini_conn *mc, const lsquic_packet_out_t *packet_out, + lsquic_time_t now, lsquic_time_t lack_delta) +{ + assert(packet_out->po_sent); + lsquic_time_t measured_rtt = now - packet_out->po_sent; + if (lack_delta < measured_rtt) + { + lsquic_rtt_stats_update(&mc->mc_rtt_stats, measured_rtt, lack_delta); + LSQ_DEBUG("srtt: %"PRIu64" usec, var: %"PRIu64, + lsquic_rtt_stats_get_srtt(&mc->mc_rtt_stats), + lsquic_rtt_stats_get_rttvar(&mc->mc_rtt_stats)); + } +} + + +static unsigned +process_ack_frame (struct mini_conn *mc, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + int parsed_len; + int n_newly_acked; + unsigned n; + lsquic_packet_out_t *packet_out, *next; + struct ack_info *acki; + lsquic_packno_t packno; + lsquic_time_t warn_time; + char buf[200]; + + acki = mc->mc_enpub->enp_mm.acki; + parsed_len = mc->mc_conn.cn_pf->pf_parse_ack_frame(p, len, acki, 0); + if (parsed_len < 0) + return 0; + if (empty_ack_frame(acki)) + { + LSQ_DEBUG("Ignore empty ACK frame"); + return parsed_len; + } + if (packet_in->pi_packno <= mc->mc_max_ack_packno) + { + LSQ_DEBUG("Ignore old ack (max %u)", mc->mc_max_ack_packno); + return parsed_len; + } + if (packet_in->pi_packno <= UCHAR_MAX) + mc->mc_max_ack_packno = packet_in->pi_packno; + + /* Verify ACK frame and update list of acked packet numbers: */ + for (n = 0; n < acki->n_ranges; ++n) + for (packno = acki->ranges[n].low; packno <= acki->ranges[n].high; + ++packno) + if (packno > MINICONN_MAX_PACKETS || + 0 == (MCONN_PACKET_MASK(packno) & mc->mc_sent_packnos)) + { + warn_time = lsquic_time_now(); + if (0 == mc->mc_enpub->enp_last_warning[WT_ACKPARSE_MINI] + || mc->mc_enpub->enp_last_warning[WT_ACKPARSE_MINI] + + WARNING_INTERVAL < warn_time) + { + mc->mc_enpub->enp_last_warning[WT_ACKPARSE_MINI] + = warn_time; + lsquic_hexdump(p, len, buf, sizeof(buf)); + LSQ_WARN("packet %"PRIu64" was never sent; ACK " + "frame:\n%s", packno, buf); + } + else + LSQ_DEBUG("packet %"PRIu64" was never sent", packno); + MCHIST_APPEND(mc, MCHE_UNSENT_ACKED); + return 0; + } + else + mc->mc_acked_packnos |= MCONN_PACKET_MASK(packno); + + EV_LOG_ACK_FRAME_IN(LSQUIC_LOG_CONN_ID, acki); + n_newly_acked = 0; + for (packet_out = TAILQ_FIRST(&mc->mc_packets_out); packet_out; + packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + if (in_acked_range(acki, packet_out->po_packno)) + { + ++n_newly_acked; + LSQ_DEBUG("Got ACK for packet %"PRIu64, packet_out->po_packno); + if (packet_out->po_packno == largest_acked(acki)) + take_rtt_sample(mc, packet_out, packet_in->pi_received, + acki->lack_delta); + TAILQ_REMOVE(&mc->mc_packets_out, packet_out, po_next); + mini_destroy_packet(mc, packet_out); + } + } + + if (n_newly_acked > 0) + mc->mc_hsk_count = 0; + + return parsed_len; +} + + +static unsigned +process_blocked_frame (struct mini_conn *mc, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + lsquic_stream_id_t stream_id; + int parsed_len; + parsed_len = mc->mc_conn.cn_pf->pf_parse_blocked_frame(p, len, &stream_id); + if (parsed_len < 0) + return 0; + EV_LOG_BLOCKED_FRAME_IN(LSQUIC_LOG_CONN_ID, stream_id); + LSQ_DEBUG("Peer reports stream %"PRIu64" as blocked", stream_id); + return parsed_len; +} + + +static mconn_packno_set_t +drop_packets_out (struct mini_conn *mc) +{ + struct lsquic_packet_out *packet_out; + mconn_packno_set_t in_flight = 0; + + while ((packet_out = TAILQ_FIRST(&mc->mc_packets_out))) + { + TAILQ_REMOVE(&mc->mc_packets_out, packet_out, po_next); + if (packet_out->po_flags & PO_SENT) + in_flight |= MCONN_PACKET_MASK(packet_out->po_packno); + mini_destroy_packet(mc, packet_out); + } + + return in_flight; +} + + +static unsigned +process_connection_close_frame (struct mini_conn *mc, + lsquic_packet_in_t *packet_in, const unsigned char *p, size_t len) +{ + uint64_t error_code; + uint16_t reason_len; + uint8_t reason_off; + int parsed_len; + + (void) drop_packets_out(mc); + parsed_len = mc->mc_conn.cn_pf->pf_parse_connect_close_frame(p, len, + NULL, &error_code, &reason_len, &reason_off); + if (parsed_len < 0) + return 0; + mc->mc_error_code = (uint64_t) error_code; + EV_LOG_CONNECTION_CLOSE_FRAME_IN(LSQUIC_LOG_CONN_ID, error_code, + (int) reason_len, (const char *) p + reason_off); + if (error_code != 25 /* No recent network activity */ + && error_code != 62 /* An active session exists for the given IP */ + && error_code != 27 ) /* Write failed with error: -142 (Unknown error)*/ + { + LSQ_WARN("Received CONNECTION_CLOSE frame (code: %"PRIu64"; reason: %.*s)", + error_code, (int) reason_len, (const char *) p + reason_off); + } + MCHIST_APPEND(mc, MCHE_CONN_CLOSE); + return 0; /* This shuts down the connection */ +} + + +static unsigned +process_goaway_frame (struct mini_conn *mc, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + lsquic_stream_id_t stream_id; + uint32_t error_code; + uint16_t reason_length; + const char *reason; + int parsed_len; + parsed_len = mc->mc_conn.cn_pf->pf_parse_goaway_frame(p, len, &error_code, &stream_id, + &reason_length, &reason); + if (parsed_len < 0) + return 0; + EV_LOG_GOAWAY_FRAME_IN(LSQUIC_LOG_CONN_ID, error_code, stream_id, + reason_length, reason); + LSQ_DEBUG("received GOAWAY frame, last good stream ID: %"PRIu64", " + "error code: 0x%X, reason: `%.*s'", stream_id, error_code, + reason_length, reason); + if (stream_id != 0) /* This is odd. We warn: */ + LSQ_WARN("stream ID is %"PRIu64" in GOAWAY frame", stream_id); + mc->mc_conn.cn_flags |= LSCONN_PEER_GOING_AWAY; + return parsed_len; +} + + +static unsigned +process_invalid_frame (struct mini_conn *mc, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + LSQ_INFO("invalid frame"); + MCHIST_APPEND(mc, MCHE_INVALID_FRAME); + return 0; +} + + +static unsigned +count_zero_bytes (const unsigned char *p, size_t len) +{ + const unsigned char *const end = p + len; + while (p < end && 0 == *p) + ++p; + return len - (end - p); +} + + +static unsigned +process_padding_frame (struct mini_conn *mc, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + len = (size_t) count_zero_bytes(p, len); + EV_LOG_PADDING_FRAME_IN(LSQUIC_LOG_CONN_ID, len); + return len; +} + + +static unsigned +process_ping_frame (struct mini_conn *mc, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + EV_LOG_PING_FRAME_IN(LSQUIC_LOG_CONN_ID); + return 1; +} + + +static unsigned +process_rst_stream_frame (struct mini_conn *mc, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + lsquic_stream_id_t stream_id; + uint64_t offset, error_code; + int parsed_len; + parsed_len = mc->mc_conn.cn_pf->pf_parse_rst_frame(p, len, &stream_id, &offset, &error_code); + if (parsed_len < 0) + return 0; + EV_LOG_RST_STREAM_FRAME_IN(LSQUIC_LOG_CONN_ID, stream_id, offset, + error_code); + LSQ_DEBUG("Got RST_STREAM; stream: %"PRIu64"; offset: 0x%"PRIX64, stream_id, + offset); + if (is_handshake_stream_id(mc, stream_id)) + { + LSQ_INFO("handshake stream reset, closing connection"); + return 0; + } + else + return parsed_len; +} + + +static unsigned +process_stop_waiting_frame (struct mini_conn *mc, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + lsquic_packno_t least; + enum packno_bits bits = lsquic_packet_in_packno_bits(packet_in); + int parsed_len; + parsed_len = mc->mc_conn.cn_pf->pf_parse_stop_waiting_frame(p, len, packet_in->pi_packno, bits, + &least); + if (parsed_len < 0) + return 0; + EV_LOG_STOP_WAITING_FRAME_IN(LSQUIC_LOG_CONN_ID, least); + LSQ_DEBUG("Got STOP_WAITING frame, least unacked: %"PRIu64, least); + if (least > MINICONN_MAX_PACKETS) + return 0; + else + { + mc->mc_cutoff = least; + return parsed_len; + } +} + + +static unsigned +process_stream_frame (struct mini_conn *mc, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + stream_frame_t stream_frame; + int parsed_len; + parsed_len = mc->mc_conn.cn_pf->pf_parse_stream_frame(p, len, &stream_frame); + if (parsed_len < 0) + return 0; + EV_LOG_STREAM_FRAME_IN(LSQUIC_LOG_CONN_ID, &stream_frame); + LSQ_DEBUG("Got stream frame for stream #%"PRIu64, stream_frame.stream_id); + if (is_handshake_stream_id(mc, stream_frame.stream_id)) + { + if (packet_in->pi_flags & PI_HSK_STREAM) + { /* This is not supported for simplicity. The spec recommends + * not putting more than one stream frame from the same stream + * into a single packet. If this changes and clients actually + * do that, we can revisit this code. + */ + LSQ_INFO("two handshake stream frames in single incoming packet"); + MCHIST_APPEND(mc, MCHE_2HSK_1STREAM); + return 0; + } + if (stream_frame.data_frame.df_offset >= mc->mc_read_off) + { + packet_in->pi_flags |= PI_HSK_STREAM; + packet_in->pi_hsk_stream = p - packet_in->pi_data; + mc->mc_flags |= MC_HAVE_NEW_HSK; + MCHIST_APPEND(mc, MCHE_NEW_HSK); + if (0 == stream_frame.data_frame.df_offset) + { + /* First CHLO message: update maximum packet size */ + mc->mc_path.np_pack_size = packet_in->pi_data_sz; + LSQ_DEBUG("update packet size to %hu", + mc->mc_path.np_pack_size); + } + } + else + { + LSQ_DEBUG("drop duplicate frame"); + MCHIST_APPEND(mc, MCHE_DUP_HSK); + } + } + return parsed_len; +} + + +static unsigned +process_crypto_frame (struct mini_conn *mc, struct lsquic_packet_in *packet_in, + const unsigned char *p, size_t len) +{ + stream_frame_t stream_frame; + int parsed_len; + parsed_len = mc->mc_conn.cn_pf->pf_parse_crypto_frame(p, len, + &stream_frame); + if (parsed_len < 0) + return 0; + EV_LOG_CRYPTO_FRAME_IN(LSQUIC_LOG_CONN_ID, &stream_frame, + lsquic_packet_in_enc_level(packet_in)); + LSQ_DEBUG("Got CRYPTO frame at encryption level %s", + lsquic_enclev2str[lsquic_packet_in_enc_level(packet_in)]); + if (packet_in->pi_flags & PI_HSK_STREAM) + { /* This is not supported for simplicity: assume a single CRYPTO frame + * per packet. If this changes, we can revisit this code. + */ + LSQ_INFO("two CRYPTO frames in single incoming packet"); + MCHIST_APPEND(mc, MCHE_2HSK_1STREAM); + return 0; + } + if (stream_frame.data_frame.df_offset >= mc->mc_read_off) + { + packet_in->pi_flags |= PI_HSK_STREAM; + packet_in->pi_hsk_stream = p - packet_in->pi_data; + mc->mc_flags |= MC_HAVE_NEW_HSK; + MCHIST_APPEND(mc, MCHE_NEW_HSK); + if (0 == stream_frame.data_frame.df_offset) + { + /* First CHLO message: update maximum packet size */ + mc->mc_path.np_pack_size = packet_in->pi_data_sz + /* Q050 and later adjust pi_data_sz of Initial packets during + * decryption, here we have to add the tag length back: + */ + + mc->mc_conn.cn_esf_c->esf_tag_len; + LSQ_DEBUG("update packet size to %hu", mc->mc_path.np_pack_size); + } + } + else + { + LSQ_DEBUG("drop duplicate frame"); + MCHIST_APPEND(mc, MCHE_DUP_HSK); + } + return parsed_len; +} + + +static unsigned +process_window_update_frame (struct mini_conn *mc, + lsquic_packet_in_t *packet_in, const unsigned char *p, size_t len) +{ + lsquic_stream_id_t stream_id; + uint64_t offset; + int parsed_len; + parsed_len = mc->mc_conn.cn_pf->pf_parse_window_update_frame(p, len, &stream_id, &offset); + if (parsed_len < 0) + return 0; + EV_LOG_WINDOW_UPDATE_FRAME_IN(LSQUIC_LOG_CONN_ID, stream_id, offset); + if (is_handshake_stream_id(mc, stream_id)) + /* This should not happen: why would the client send us WINDOW_UPDATE + * on stream 1? + */ + LSQ_WARN("client sent WINDOW_UPDATE for handshake stream, " + "offset %"PRIu64, offset); + return parsed_len; +} + + +typedef unsigned (*process_frame_f)( + struct mini_conn *, lsquic_packet_in_t *, const unsigned char *p, size_t); + + +static process_frame_f const process_frames[N_QUIC_FRAMES] = +{ + [QUIC_FRAME_ACK] = process_ack_frame, + [QUIC_FRAME_BLOCKED] = process_blocked_frame, + [QUIC_FRAME_CONNECTION_CLOSE] = process_connection_close_frame, + [QUIC_FRAME_CRYPTO] = process_crypto_frame, + [QUIC_FRAME_GOAWAY] = process_goaway_frame, + [QUIC_FRAME_INVALID] = process_invalid_frame, + [QUIC_FRAME_PADDING] = process_padding_frame, + [QUIC_FRAME_PING] = process_ping_frame, + [QUIC_FRAME_RST_STREAM] = process_rst_stream_frame, + [QUIC_FRAME_STOP_WAITING] = process_stop_waiting_frame, + [QUIC_FRAME_STREAM] = process_stream_frame, + [QUIC_FRAME_WINDOW_UPDATE] = process_window_update_frame, +}; + + +static unsigned +process_packet_frame (struct mini_conn *mc, lsquic_packet_in_t *packet_in, + const unsigned char *p, size_t len) +{ + enum quic_frame_type type = mc->mc_conn.cn_pf->pf_parse_frame_type(p, len); + packet_in->pi_frame_types |= 1 << type; + return process_frames[type](mc, packet_in, p, len); +} + + +static void +record_largest_recv (struct mini_conn *mc, lsquic_time_t t) +{ + if (t < mc->mc_created) + { + LSQ_WARN("largest received predates creation"); + return; + } + t -= mc->mc_created; + mc->mc_largest_recv[0] = t; + mc->mc_largest_recv[1] = t >> 8; + mc->mc_largest_recv[2] = t >> 16; + LSQ_DEBUG("recorded largest received timestamp as %"PRIu64" usec since " + "creation", t); +} + + +static enum dec_packin +conn_decrypt_packet (struct mini_conn *conn, lsquic_packet_in_t *packet_in) +{ + return conn->mc_conn.cn_esf_c->esf_decrypt_packet( + conn->mc_conn.cn_enc_session, conn->mc_enpub, + &conn->mc_conn, packet_in); +} + + +/* PRP: Process Regular Packet */ +enum proc_rp { PRP_KEEP, PRP_DEFER, PRP_DROP, PRP_ERROR, }; + + +static enum proc_rp +conn_decrypt_packet_or (struct mini_conn *mc, + struct lsquic_packet_in *packet_in) +{ + if (DECPI_OK == conn_decrypt_packet(mc, packet_in)) + { + MCHIST_APPEND(mc, MCHE_DECRYPTED); + return PRP_KEEP; + } + else if (mc->mc_conn.cn_esf.g->esf_have_key_gt_one( + mc->mc_conn.cn_enc_session)) + { + LSQ_INFO("could not decrypt packet: drop"); + mc->mc_dropped_packnos |= MCONN_PACKET_MASK(packet_in->pi_packno); + MCHIST_APPEND(mc, MCHE_UNDECR_DROP); + return PRP_DROP; + } + else if ((packet_in->pi_flags & PI_OWN_DATA) || + 0 == lsquic_conn_copy_and_release_pi_data(&mc->mc_conn, + mc->mc_enpub, packet_in)) + { + assert(packet_in->pi_flags & PI_OWN_DATA); + LSQ_INFO("could not decrypt packet: defer"); + mc->mc_deferred_packnos |= MCONN_PACKET_MASK(packet_in->pi_packno); + MCHIST_APPEND(mc, MCHE_UNDECR_DEFER); + return PRP_DEFER; + } + else + { + MCHIST_APPEND(mc, MCHE_ENOMEM); + return PRP_ERROR; /* Memory allocation must have failed */ + } +} + + +static enum proc_rp +process_regular_packet (struct mini_conn *mc, lsquic_packet_in_t *packet_in) +{ + const unsigned char *p, *pend; + enum proc_rp prp; + unsigned len; + + /* Decrypt packet if necessary */ + if (0 == (packet_in->pi_flags & PI_DECRYPTED)) + { + prp = conn_decrypt_packet_or(mc, packet_in); + if (prp != PRP_KEEP) + return prp; + } + + /* Update receive history before processing the packet: if there is an + * error, the connection is terminated and recording this packet number + * is helpful when it is printed along with other diagnostics in dtor. + */ + if (0 == mc->mc_received_packnos || + packet_in->pi_packno > highest_bit_set(mc->mc_received_packnos) + 1) + record_largest_recv(mc, packet_in->pi_received); + mc->mc_received_packnos |= MCONN_PACKET_MASK(packet_in->pi_packno); + + /* Parse and process frames */ + p = packet_in->pi_data + packet_in->pi_header_sz; + pend = packet_in->pi_data + packet_in->pi_data_sz; + while (p < pend) + { + len = process_packet_frame(mc, packet_in, p, pend - p); + if (len > 0) + p += len; + else + { + if (mc->mc_conn.cn_pf->pf_parse_frame_type(p, pend - p) != + QUIC_FRAME_CONNECTION_CLOSE) + LSQ_WARN("error parsing frame: packno %"PRIu64"; sz: %u; type: " + "0x%X", packet_in->pi_packno, packet_in->pi_data_sz, p[0]); + MCHIST_APPEND(mc, MCHE_EFRAME); + return PRP_ERROR; + } + } + + mc->mc_flags |= MC_GEN_ACK; + + return PRP_KEEP; +} + + +struct hsk_chunk +{ + lsquic_packet_in_t *hsk_packet_in; + const unsigned char *hsk_data; + unsigned hsk_off; + unsigned hsk_sz; +}; + + +static int +compare_hsk_chunks (const void *ap, const void *bp) +{ + const struct hsk_chunk *a = ap; + const struct hsk_chunk *b = bp; + return (a->hsk_off > b->hsk_off) - (b->hsk_off > a->hsk_off); +} + + +struct mini_stream_ctx +{ + const unsigned char *buf; + size_t bufsz; + size_t off; +}; + + +static int +mini_stream_has_data (const struct mini_stream_ctx *ms_ctx) +{ + return ms_ctx->off < ms_ctx->bufsz; +} + + +static size_t +mini_stream_read (void *stream, void *buf, size_t len, int *reached_fin) +{ + struct mini_stream_ctx *ms_ctx = stream; + size_t avail = ms_ctx->bufsz - ms_ctx->off; + if (avail < len) + len = avail; + memcpy(buf, ms_ctx->buf + ms_ctx->off, len); + ms_ctx->off += len; + *reached_fin = 0; + return len; +} + + +/* Wrapper to throw out reached_fin */ +static size_t +mini_stream_read_for_crypto (void *stream, void *buf, size_t len, int *fin) +{ + size_t retval; + int reached_fin; + + retval = mini_stream_read(stream, buf, len, &reached_fin); + return retval; +} + + +static size_t +mini_stream_size (void *stream) +{ + struct mini_stream_ctx *ms_ctx = stream; + size_t avail = ms_ctx->bufsz - ms_ctx->off; + return avail; +} + + +static int +mini_stream_fin (void *stream) +{ /* There is never a FIN on the handshake stream */ + return 0; +} + + +static lsquic_packno_t +next_packno (struct mini_conn *mc) +{ + if (mc->mc_cur_packno < MINICONN_MAX_PACKETS) + { + return ++mc->mc_cur_packno; + } + else + { + if (!(mc->mc_flags & MC_OO_PACKNOS)) + { + MCHIST_APPEND(mc, MCHE_OUT_OF_PACKNOS); + mc->mc_flags |= MC_OO_PACKNOS; + LSQ_DEBUG("ran out of outgoing packet numbers"); + } + return MINICONN_MAX_PACKETS + 1; + } +} + + +static lsquic_packet_out_t * +allocate_packet_out (struct mini_conn *mc, const unsigned char *nonce) +{ + lsquic_packet_out_t *packet_out; + lsquic_packno_t packno; + packno = next_packno(mc); + if (packno > MINICONN_MAX_PACKETS) + { + LSQ_DEBUG("ran out of outgoing packet numbers, won't allocate packet"); + return NULL; + } + packet_out = lsquic_packet_out_new(&mc->mc_enpub->enp_mm, NULL, 1, + &mc->mc_conn, GQUIC_PACKNO_LEN_1, NULL, nonce, &mc->mc_path, + HETY_NOT_SET); + if (!packet_out) + { + LSQ_WARN("could not allocate packet: %s", strerror(errno)); + return NULL; + } + packet_out->po_loss_chain = packet_out; + packet_out->po_packno = packno; + packet_out->po_flags |= PO_MINI; + if (mc->mc_flags & MC_HAVE_SHLO) + { + packet_out->po_flags |= PO_HELLO; + packet_out->po_header_type = HETY_0RTT; + } + if (mc->mc_conn.cn_version >= LSQVER_050) + { + if (nonce) + packet_out->po_header_type = HETY_0RTT; + else + packet_out->po_header_type = HETY_INITIAL; + } + lsquic_packet_out_set_pns(packet_out, PNS_APP); + TAILQ_INSERT_TAIL(&mc->mc_packets_out, packet_out, po_next); + LSQ_DEBUG("allocated packet #%"PRIu64", nonce: %d", packno, !!nonce); + MCHIST_APPEND(mc, MCHE_NEW_PACKET_OUT); + EV_LOG_PACKET_CREATED(LSQUIC_LOG_CONN_ID, packet_out); + return packet_out; +} + + +static struct lsquic_packet_out * +to_packet_pre_Q050 (struct mini_conn *mc, struct mini_stream_ctx *ms_ctx, + const unsigned char *nonce) +{ + struct lsquic_packet_out *packet_out; + size_t cur_off; + int len; + + packet_out = allocate_packet_out(mc, nonce); + if (!packet_out) + return NULL; + cur_off = ms_ctx->off; + len = mc->mc_conn.cn_pf->pf_gen_stream_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), + 1, mc->mc_write_off, mini_stream_fin(ms_ctx), + mini_stream_size(ms_ctx), mini_stream_read, ms_ctx); + if (len < 0) + { + LSQ_WARN("cannot generate STREAM frame (avail: %u)", + lsquic_packet_out_avail(packet_out)); + return NULL; + } + mc->mc_write_off += ms_ctx->off - cur_off; + EV_LOG_GENERATED_STREAM_FRAME(LSQUIC_LOG_CONN_ID, mc->mc_conn.cn_pf, + packet_out->po_data + packet_out->po_data_sz, len); + packet_out->po_data_sz += len; + packet_out->po_frame_types |= 1 << QUIC_FRAME_STREAM; + if (0 == lsquic_packet_out_avail(packet_out)) + packet_out->po_flags |= PO_STREAM_END; + + return packet_out; +} + + +static struct lsquic_packet_out * +to_packet_Q050plus (struct mini_conn *mc, struct mini_stream_ctx *ms_ctx, + const unsigned char *nonce) +{ + struct lsquic_packet_out *packet_out; + size_t cur_off; + int len; + + if (nonce && !(mc->mc_flags & MC_WR_OFF_RESET)) + { + mc->mc_write_off = 0; + mc->mc_flags |= MC_WR_OFF_RESET; + } + + packet_out = allocate_packet_out(mc, nonce); + if (!packet_out) + return NULL; + cur_off = ms_ctx->off; + len = mc->mc_conn.cn_pf->pf_gen_crypto_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), 0, mc->mc_write_off, 0, + mini_stream_size(ms_ctx), mini_stream_read_for_crypto, ms_ctx); + if (len < 0) + { + LSQ_WARN("cannot generate CRYPTO frame (avail: %u)", + lsquic_packet_out_avail(packet_out)); + return NULL; + } + mc->mc_write_off += ms_ctx->off - cur_off; + EV_LOG_GENERATED_CRYPTO_FRAME(LSQUIC_LOG_CONN_ID, mc->mc_conn.cn_pf, + packet_out->po_data + packet_out->po_data_sz, len); + packet_out->po_data_sz += len; + packet_out->po_frame_types |= 1 << QUIC_FRAME_CRYPTO; + + return packet_out; +} + + +static int +packetize_response (struct mini_conn *mc, const unsigned char *buf, + size_t bufsz, const unsigned char *nonce) +{ + struct mini_stream_ctx ms_ctx; + lsquic_packet_out_t *packet_out; + struct lsquic_packet_out * (*const to_packet) (struct mini_conn *, + struct mini_stream_ctx *, const unsigned char *) + = mc->mc_conn.cn_version < LSQVER_050 + ? to_packet_pre_Q050 : to_packet_Q050plus; + + LSQ_DEBUG("Packetizing %zd bytes of handshake response", bufsz); + + ms_ctx.buf = buf; + ms_ctx.bufsz = bufsz; + ms_ctx.off = 0; + + do + { + packet_out = to_packet(mc, &ms_ctx, nonce); + if (!packet_out) + return -1; + } + while (mini_stream_has_data(&ms_ctx)); + + /* PAD the last packet with NULs. ACK and STOP_WAITING go into a separate + * packet. + */ + if (lsquic_packet_out_avail(packet_out)) + { + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "generated PADDING frame %u " + "bytes long", lsquic_packet_out_avail(packet_out)); + memset(packet_out->po_data + packet_out->po_data_sz, 0, + lsquic_packet_out_avail(packet_out)); + packet_out->po_data_sz += lsquic_packet_out_avail(packet_out); + packet_out->po_frame_types |= 1 << QUIC_FRAME_PADDING; + } + + return 0; +} + + +static int +continue_handshake (struct mini_conn *mc) +{ + lsquic_packet_in_t *packet_in; + unsigned n_hsk_chunks = 0, n_contig, n, bufsz, off; + int s, rv; + size_t out_len; + enum handshake_error he; + unsigned char *buf_in_16k, *buf_out; + const unsigned char *buf_in; + time_t t; + stream_frame_t frame; + struct hsk_chunk hsk_chunks[MINICONN_MAX_PACKETS], *hsk_chunk; + unsigned char nonce_buf[32]; + int nonce_set = 0; + int (*parse_frame)(const unsigned char *, size_t, struct stream_frame *) + = mc->mc_conn.cn_version < LSQVER_050 + ? mc->mc_conn.cn_pf->pf_parse_stream_frame + : mc->mc_conn.cn_pf->pf_parse_crypto_frame; + + /* Get handshake stream data from each packet that contains a handshake + * stream frame and place them into `hsk_chunks' array. + */ + TAILQ_FOREACH(packet_in, &mc->mc_packets_in, pi_next) + { + if (n_hsk_chunks >= sizeof(hsk_chunks) / sizeof(hsk_chunks[0])) { + LSQ_WARN("too many handshake packets"); + return -1; + } + + if (0 == (packet_in->pi_flags & PI_HSK_STREAM)) + continue; + s = parse_frame(packet_in->pi_data + packet_in->pi_hsk_stream, + packet_in->pi_data_sz - packet_in->pi_hsk_stream, &frame); + if (-1 == s) + { + LSQ_WARN("cannot process hsk stream frame in packet %"PRIu64, + packet_in->pi_packno); + return -1; + } + hsk_chunk = &hsk_chunks[ n_hsk_chunks++ ]; + hsk_chunk->hsk_packet_in = packet_in; + hsk_chunk->hsk_data = frame.data_frame.df_data; + hsk_chunk->hsk_off = frame.data_frame.df_offset; + hsk_chunk->hsk_sz = frame.data_frame.df_size; + } + assert(n_hsk_chunks > 0); + + if (n_hsk_chunks > 1) + { + /* Sort handshake stream data */ + qsort(hsk_chunks, n_hsk_chunks, sizeof(hsk_chunks[0]), + compare_hsk_chunks); + /* Figure out how many packets contain handshake stream data in a + * contiguous buffer and how large this data is. + */ + for (n = 1, n_contig = 1, bufsz = hsk_chunks[0].hsk_sz; + n < n_hsk_chunks; ++n) + if (hsk_chunks[n - 1].hsk_off + hsk_chunks[n - 1].hsk_sz == + hsk_chunks[n].hsk_off) + { + ++n_contig; + bufsz += hsk_chunks[n].hsk_sz; + } + else + break; + } + else + { + n_contig = 1; + bufsz = hsk_chunks[0].hsk_sz; + } + + /* Handshake handler expects to start reading at a particular offset. + */ + if (hsk_chunks[0].hsk_off != mc->mc_read_off) + { + LSQ_DEBUG("smallest hsk offset is %u, need %hu", + hsk_chunks[0].hsk_off, mc->mc_read_off); + MCHIST_APPEND(mc, MCHE_HELLO_HOLE); + return 0; + } + + LSQ_DEBUG("# of contiguous stream frames: %u out of %u; offset: %u; " + "total size: %u", n_contig, n_hsk_chunks, hsk_chunks[0].hsk_off, bufsz); + + if (bufsz > 16 * 1024) + { + LSQ_INFO("too much contiguous handshake data (%u bytes); max: %u", + bufsz, 16 * 1024); + MCHIST_APPEND(mc, MCHE_HELLO_TOO_MUCH); + return -1; + } + + /* From here on, since we need to clean up, we use `rv' and `goto end' + * to handle error conditions and cleanup. + */ + rv = -1; + if (n_contig > 1) + { + buf_in = buf_in_16k = lsquic_mm_get_16k(&mc->mc_enpub->enp_mm); + if (!buf_in) + { + LSQ_WARN("could not allocate in buffer: %s", strerror(errno)); + buf_out = NULL; + goto end; + } + /* Create a single contiguous buffer to pass to lsquic_enc_session_handle_chlo */ + off = 0; + for (n = 0; n < n_contig; ++n) + { + memcpy(buf_in_16k + off, hsk_chunks[n].hsk_data, + hsk_chunks[n].hsk_sz); + off += hsk_chunks[n].hsk_sz; + } + assert(off == bufsz); + } + else + { + buf_in_16k = NULL; + buf_in = hsk_chunks[0].hsk_data; + } + + buf_out = lsquic_mm_get_16k(&mc->mc_enpub->enp_mm); + if (!buf_out) + { + LSQ_WARN("could not allocate out buffer: %s", strerror(errno)); + goto end; + } + out_len = 16 * 1024; + + /* Allocate enc_session for the server if first time around: */ + if (!mc->mc_conn.cn_enc_session) + { + mc->mc_conn.cn_enc_session = + mc->mc_conn.cn_esf.g->esf_create_server(&mc->mc_conn, + mc->mc_conn.cn_cid, mc->mc_enpub); + if (!mc->mc_conn.cn_enc_session) + { + LSQ_WARN("cannot create new enc session"); + goto end; + } + MCHIST_APPEND(mc, MCHE_NEW_ENC_SESS); + } + + t = time(NULL); + he = mc->mc_conn.cn_esf.g->esf_handle_chlo(mc->mc_conn.cn_enc_session, + mc->mc_conn.cn_version, + buf_in, bufsz, t, NP_PEER_SA(&mc->mc_path), + NP_LOCAL_SA(&mc->mc_path), + buf_out, &out_len, nonce_buf, &nonce_set); + + if (HS_SHLO == he) + mc->mc_flags |= MC_HAVE_SHLO; + else + mc->mc_flags &= ~MC_HAVE_SHLO; + + MCHIST_APPEND(mc, he == DATA_NOT_ENOUGH ? MCHE_HANDLE_NOT_ENOUGH : + he == HS_SHLO ? MCHE_HANDLE_SHLO : + he == HS_1RTT ? MCHE_HANDLE_1RTT : + he == HS_SREJ ? MCHE_HANDLE_SREJ : + he == HS_ERROR ? MCHE_HANDLE_ERROR : + MCHE_HAHDLE_UNKNOWN); + + if ((HS_SHLO == he || HS_1RTT == he) && !mc->mc_rtt_stats.srtt) + { + uint32_t irtt; + if (0 == mc->mc_conn.cn_esf.g->esf_get_peer_setting( + mc->mc_conn.cn_enc_session, QTAG_IRTT, &irtt)) + { + /* Do not allow the client to specify unreasonable values: + * smaller than 10ms or larger than 15s. Per reference + * implementation. + */ + if (irtt > 15 * 1000 * 1000) + irtt = 15 * 1000 * 1000; + else if (irtt < 10 * 1000) + irtt = 10 * 1000; + lsquic_rtt_stats_update(&mc->mc_rtt_stats, irtt, 0); + LSQ_DEBUG("Set initial SRTT to %"PRIu32" usec based on client-" + "supplied IRTT value", irtt); + } + } + + switch (he) + { + case DATA_NOT_ENOUGH: + LSQ_DEBUG("lsquic_enc_session_handle_chlo needs more data"); + break; + case HS_SHLO: + mc->mc_conn.cn_flags |= LSCONN_HANDSHAKE_DONE; + mc->mc_flags |= MC_PROMOTE; + LSQ_DEBUG("lsquic_enc_session_handle_chlo returned %d, promote", he); + /* Fall through */ + case HS_1RTT: + assert(out_len > 0); + if (mc->mc_conn.cn_version < LSQVER_046 + && !mc->mc_conn.cn_esf.g->esf_get_peer_option( + mc->mc_conn.cn_enc_session, QTAG_NSTP)) + mc->mc_flags |= MC_STOP_WAIT_ON; + if (0 != packetize_response(mc, buf_out, out_len, + nonce_set ? nonce_buf : NULL)) + goto end; + mc->mc_read_off += bufsz; + for (n = 0; n < n_contig; ++n) + hsk_chunks[n].hsk_packet_in->pi_flags &= ~PI_HSK_STREAM; + LSQ_DEBUG("read offset is now %hu", mc->mc_read_off); + break; + default: + LSQ_WARN("unexpected return value from lsquic_enc_session_handle_chlo: %u", he); + /* fallthru */ + case HS_ERROR: +#if !LSQUIC_KEEP_ENC_SESS_HISTORY + mc->mc_conn.cn_esf.g->esf_destroy(mc->mc_conn.cn_enc_session); + mc->mc_conn.cn_enc_session = NULL; +#endif + mc->mc_flags |= MC_HSK_ERR; + LSQ_INFO("lsquic_enc_session_handle_chlo returned an error (%d)", he); + goto end; + } + + rv = 0; + + end: + mc->mc_flags &= ~MC_HAVE_SHLO; + if (buf_in_16k) + lsquic_mm_put_16k(&mc->mc_enpub->enp_mm, buf_in_16k); + if (buf_out) + lsquic_mm_put_16k(&mc->mc_enpub->enp_mm, buf_out); + return rv; +} + + +struct mini_rechist +{ + const struct mini_conn *mc; + mconn_packno_set_t cur_set; + int cur_idx; + struct lsquic_packno_range range; /* We return a pointer to this */ +}; + + +static void +mini_rechist_init (struct mini_rechist *rechist, const struct mini_conn *mc) +{ + rechist->mc = mc; + rechist->cur_set = 0; + rechist->cur_idx = 0; +} + + +static lsquic_time_t +mini_rechist_largest_recv (void *rechist_ctx) +{ + struct mini_rechist *rechist = rechist_ctx; + const struct mini_conn *mc = rechist->mc; + lsquic_time_t delta = mc->mc_largest_recv[0] + + (mc->mc_largest_recv[1] << 8) + + (mc->mc_largest_recv[2] << 16); + LSQ_DEBUG("%s: largest received: %"PRIu64" usec since creation", + __func__, delta); + return mc->mc_created + delta; +} + + +static const struct lsquic_packno_range * +mini_rechist_next (void *rechist_ctx) +{ + struct mini_rechist *rechist = rechist_ctx; + const struct mini_conn *mc = rechist->mc; + mconn_packno_set_t packnos; + int i; + + packnos = rechist->cur_set; + if (0 == packnos) + return NULL; + + /* There may be a faster way to do this, but for now, we just want + * correctness. + */ + for (i = rechist->cur_idx; i >= 0; --i) + if (packnos & (1ULL << i)) + { + rechist->range.low = i + 1; + rechist->range.high = i + 1; + break; + } + assert(i >= 0); /* We must have hit at least one bit */ + --i; + for ( ; i >= 0 && (packnos & (1ULL << i)); --i) + rechist->range.low = i + 1; + if (i >= 0) + { + rechist->cur_set = packnos & ((1ULL << i) - 1); + rechist->cur_idx = i; + } + else + rechist->cur_set = 0; + LSQ_DEBUG("%s: return [%"PRIu64", %"PRIu64"]", __func__, + rechist->range.low, rechist->range.high); + return &rechist->range; +} + + +static const struct lsquic_packno_range * +mini_rechist_first (void *rechist_ctx) +{ + struct mini_rechist *rechist = rechist_ctx; + rechist->cur_set = rechist->mc->mc_received_packnos; + rechist->cur_idx = highest_bit_set(rechist->cur_set); + return mini_rechist_next(rechist_ctx); +} + + +static lsquic_packno_t +least_unacked (const struct mini_conn *mc) +{ + mconn_packno_set_t unacked; + lsquic_packno_t packno; + unacked = mc->mc_sent_packnos & ~mc->mc_acked_packnos; + if (unacked) + packno = lowest_bit_set(unacked) + 1; + else + packno = highest_bit_set(mc->mc_sent_packnos) + 2; + LSQ_DEBUG("%s: least unacked: %"PRIu64, __func__, packno); + return packno; +} + + +static int +generate_ack_and_stop_waiting (struct mini_conn *mc, lsquic_time_t now) +{ + lsquic_packet_out_t *packet_out; + struct mini_rechist rechist; + int len, not_used_has_missing; + lsquic_packno_t lunack; + + /* Chrome's quic_server places ACK and STOP_WAITING frames into a separate + * packet. + */ + packet_out = allocate_packet_out(mc, NULL); + if (!packet_out) + return -1; + + /* Generate ACK frame */ + mini_rechist_init(&rechist, mc); + len = mc->mc_conn.cn_pf->pf_gen_ack_frame(packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), mini_rechist_first, + mini_rechist_next, mini_rechist_largest_recv, &rechist, + now, ¬_used_has_missing, &packet_out->po_ack2ed, NULL); + if (len < 0) + { + LSQ_WARN("could not generate ACK frame"); + return -1; + } + EV_LOG_GENERATED_ACK_FRAME(LSQUIC_LOG_CONN_ID, mc->mc_conn.cn_pf, + packet_out->po_data + packet_out->po_data_sz, len); + packet_out->po_frame_types |= 1 << QUIC_FRAME_ACK; + packet_out->po_data_sz += len; + packet_out->po_regen_sz += len; + LSQ_DEBUG("wrote ACK frame of size %d", len); + + /* Generate STOP_WAITING frame */ + if ((mc->mc_flags & MC_STOP_WAIT_ON) && mc->mc_sent_packnos) + { + lunack = least_unacked(mc); + len = mc->mc_conn.cn_pf->pf_gen_stop_waiting_frame(packet_out->po_data + + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), packet_out->po_packno, + lsquic_packet_out_packno_bits(packet_out), lunack); + if (len < 0) + { + LSQ_WARN("could not generate STOP_WAITING frame"); + return -1; + } + packet_out->po_data_sz += len; + packet_out->po_regen_sz += len; + packet_out->po_frame_types |= 1 << QUIC_FRAME_STOP_WAITING; + LSQ_DEBUG("wrote STOP_WAITING frame of size %d", len); + EV_LOG_GENERATED_STOP_WAITING_FRAME(LSQUIC_LOG_CONN_ID, lunack); + } + else if (mc->mc_flags & MC_STOP_WAIT_ON) + LSQ_DEBUG("nothing sent: no need to generate STOP_WAITING frame"); + + mc->mc_flags |= MC_UNSENT_ACK; + return 0; +} + + +static int +calc_retx_timeout (const struct mini_conn *mc) +{ + lsquic_time_t to; + to = lsquic_rtt_stats_get_srtt(&mc->mc_rtt_stats); + if (to) + { + to += to / 2; + if (to < 10000) + to = 10000; + } + else + to = 300000; + return to << mc->mc_hsk_count; +} + + +static void +return_enc_data (struct mini_conn *mc, struct lsquic_packet_out *packet_out) +{ + mc->mc_enpub->enp_pmi->pmi_return(mc->mc_enpub->enp_pmi_ctx, + mc->mc_path.np_peer_ctx, packet_out->po_enc_data, + lsquic_packet_out_ipv6(packet_out)); + packet_out->po_flags &= ~PO_ENCRYPTED; + packet_out->po_enc_data = NULL; +} + + +static int +repackage_packet (struct mini_conn *mc, lsquic_packet_out_t *packet_out) +{ + const lsquic_packno_t oldno = packet_out->po_packno; + const lsquic_packno_t packno = next_packno(mc); + if (packno > MINICONN_MAX_PACKETS) + return -1; + + LSQ_DEBUG("Packet %"PRIu64" repackaged for resending as packet %"PRIu64, + oldno, packno); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "packet %"PRIu64" repackaged for " + "resending as packet %"PRIu64, oldno, packno); + packet_out->po_packno = packno; + packet_out->po_flags &= ~PO_SENT; + if (packet_out->po_flags & PO_ENCRYPTED) + return_enc_data(mc, packet_out); + TAILQ_INSERT_TAIL(&mc->mc_packets_out, packet_out, po_next); + return 0; +} + + +static int +handle_losses_and_have_unsent (struct mini_conn *mc, lsquic_time_t now) +{ + TAILQ_HEAD(, lsquic_packet_out) lost_packets = + TAILQ_HEAD_INITIALIZER(lost_packets); + lsquic_packet_out_t *packet_out, *next; + lsquic_time_t retx_to = 0; + unsigned n_to_send = 0; + + for (packet_out = TAILQ_FIRST(&mc->mc_packets_out); packet_out; + packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + if (packet_out->po_flags & PO_SENT) + { + if (0 == retx_to) + retx_to = calc_retx_timeout(mc); + if (packet_out->po_sent + retx_to < now) + { + LSQ_DEBUG("packet %"PRIu64" has been lost (rto: %"PRIu64")", + packet_out->po_packno, retx_to); + TAILQ_REMOVE(&mc->mc_packets_out, packet_out, po_next); + TAILQ_INSERT_TAIL(&lost_packets, packet_out, po_next); + mc->mc_lost_packnos |= MCONN_PACKET_MASK(packet_out->po_packno); + MCHIST_APPEND(mc, MCHE_PACKET_LOST); + } + } + else + ++n_to_send; + } + + mc->mc_hsk_count += !TAILQ_EMPTY(&lost_packets); + + while ((packet_out = TAILQ_FIRST(&lost_packets))) + { + TAILQ_REMOVE(&lost_packets, packet_out, po_next); + if ((packet_out->po_frame_types & GQUIC_FRAME_RETRANSMITTABLE_MASK) + && 0 == repackage_packet(mc, packet_out)) + ++n_to_send; + else + mini_destroy_packet(mc, packet_out); + } + + return n_to_send > 0; +} + + +static int +warning_is_warranted (const struct mini_conn *mc) +{ + return (mc->mc_flags & (MC_HSK_ERR|MC_OO_PACKNOS)) + || 0x1C /* QUIC_HANDSHAKE_FAILED */ == mc->mc_error_code + || 0x1D /* QUIC_CRYPTO_TAGS_OUT_OF_ORDER */ == mc->mc_error_code + || 0x1E /* QUIC_CRYPTO_TOO_MANY_ENTRIES */ == mc->mc_error_code + || 0x1F /* QUIC_CRYPTO_INVALID_VALUE_LENGTH */ == mc->mc_error_code + || 0x21 /* QUIC_INVALID_CRYPTO_MESSAGE_TYPE */ == mc->mc_error_code + || 0x22 /* QUIC_INVALID_CRYPTO_MESSAGE_PARAMETER */ == mc->mc_error_code + || 0x23 /* QUIC_CRYPTO_MESSAGE_PARAMETER_NOT_FOUND */ == mc->mc_error_code + || 0x24 /* QUIC_CRYPTO_MESSAGE_PARAMETER_NO_OVERLAP */ == mc->mc_error_code + || 0x29 /* QUIC_CRYPTO_TOO_MANY_REJECTS */ == mc->mc_error_code + || 0x2A /* QUIC_PROOF_INVALID */ == mc->mc_error_code + || 0x2B /* QUIC_CRYPTO_DUPLICATE_TAG */ == mc->mc_error_code + || 0x2C /* QUIC_CRYPTO_ENCRYPTION_LEVEL_INCORRECT */ == mc->mc_error_code + || 0x2D /* QUIC_CRYPTO_SERVER_CONFIG_EXPIRED */ == mc->mc_error_code + || 0x35 /* QUIC_CRYPTO_SYMMETRIC_KEY_SETUP_FAILED */ == mc->mc_error_code + ; +} + + +#if LSQUIC_KEEP_ENC_SESS_HISTORY +static void +maybe_log_enc_sess_history (const struct mini_conn *mc) +{ + char eshist[ESHIST_STR_SIZE]; + enum lsq_log_level log_level; + const char *ua; + + if (warning_is_warranted(mc)) + log_level = LSQ_LOG_WARN; + else + log_level = LSQ_LOG_DEBUG; + + if (mc->mc_conn.cn_enc_session) + { + mc->mc_conn.cn_esf.g->esf_get_hist(mc->mc_conn.cn_enc_session, eshist); + ua = mc->mc_conn.cn_esf.g->esf_get_ua(mc->mc_conn.cn_enc_session); + LSQ_LOG1(log_level, "enc hist %s; User-Agent: %s", eshist, + ua ? ua : ""); + } + else + LSQ_LOG1(log_level, "enc session gone: no history to log"); +} + + +#endif + + + + +static int +have_packets_to_send (struct mini_conn *mc, lsquic_time_t now) +{ + return handle_losses_and_have_unsent(mc, now); +} + + +static enum tick_st +mini_conn_ci_tick (struct lsquic_conn *lconn, lsquic_time_t now) +{ + struct mini_conn *mc = (struct mini_conn *) lconn; + enum tick_st tick; + + ++mc->mc_n_ticks; + + if (mc->mc_created + mc->mc_enpub->enp_settings.es_handshake_to < now) + { + LSQ_DEBUG("connection expired: closing"); + tick = TICK_CLOSE; + goto end; + } + + if (mc->mc_flags & MC_ERROR) + { + tick = TICK_CLOSE; + goto end; + } + + + if ((mc->mc_flags & (MC_UNSENT_ACK|MC_GEN_ACK)) == MC_GEN_ACK) + { + if (0 != generate_ack_and_stop_waiting(mc, now)) + { + mc->mc_flags |= MC_ERROR; + tick = TICK_CLOSE; + goto end; + } + else + mc->mc_flags &= ~MC_GEN_ACK; + } + + if (have_packets_to_send(mc, now)) + tick = TICK_SEND; + else + tick = TICK_QUIET; + + if (mc->mc_flags & MC_PROMOTE) + tick |= TICK_PROMOTE; + + end: +#if LSQUIC_KEEP_ENC_SESS_HISTORY + if (tick & (TICK_CLOSE|TICK_PROMOTE)) + maybe_log_enc_sess_history(mc); +#endif + + return tick; +} + + +static void +process_packet (struct mini_conn *mc, struct lsquic_packet_in *packet_in) +{ + switch (process_regular_packet(mc, packet_in)) + { + case PRP_KEEP: + assert(packet_in->pi_flags & PI_OWN_DATA); + lsquic_packet_in_upref(packet_in); + TAILQ_INSERT_TAIL(&mc->mc_packets_in, packet_in, pi_next); + if (mc->mc_flags & MC_HAVE_NEW_HSK) + { + if (0 != continue_handshake(mc)) + mc->mc_flags |= MC_ERROR; + mc->mc_flags &= ~MC_HAVE_NEW_HSK; + } + break; + case PRP_DEFER: + assert(packet_in->pi_flags & PI_OWN_DATA); + lsquic_packet_in_upref(packet_in); + if (mc->mc_n_deferred < MINI_CONN_MAX_DEFERRED) + { + TAILQ_INSERT_TAIL(&mc->mc_deferred, packet_in, pi_next); + ++mc->mc_n_deferred; + } + else + LSQ_DEBUG("won't defer more than %u packets: drop", + MINI_CONN_MAX_DEFERRED); + break; + case PRP_ERROR: + mc->mc_flags |= MC_ERROR; + break; + case PRP_DROP: + break; + } +} + + +/* Keep deferred list ordered by packet number, so that we can process all + * of them in a single pass. + */ +static void +insert_into_deferred (struct mini_conn *mc, lsquic_packet_in_t *new_packet) +{ + lsquic_packet_in_t *packet_in; + + lsquic_packet_in_upref(new_packet); + + TAILQ_FOREACH(packet_in, &mc->mc_deferred, pi_next) + if (packet_in->pi_packno > new_packet->pi_packno) + break; + + if (packet_in) + TAILQ_INSERT_BEFORE(packet_in, new_packet, pi_next); + else + TAILQ_INSERT_TAIL(&mc->mc_deferred, new_packet, pi_next); + ++mc->mc_n_deferred; +} + + +static void +process_deferred_packets (struct mini_conn *mc) +{ + lsquic_packet_in_t *last, *packet_in; + int reached_last; + + last = TAILQ_LAST(&mc->mc_deferred, head_packet_in); + do + { + packet_in = TAILQ_FIRST(&mc->mc_deferred); + TAILQ_REMOVE(&mc->mc_deferred, packet_in, pi_next); + --mc->mc_n_deferred; + process_packet(mc, packet_in); + reached_last = packet_in == last; + lsquic_packet_in_put(&mc->mc_enpub->enp_mm, packet_in); + } + while (!reached_last); +} + + +#if LSQUIC_RECORD_INORD_HIST +/* FIXME This does not work for Q050, where 0 is a valid packet number. */ +/* Packet number is encoded as a sequence of 1-bits and stored in mc_inord_hist + * separated by 0 bits. For example, sequence of packet numbers 3, 2, 1 would + * be encoded as (starting with LSB) 1110110100000000... This is not the most + * space-efficient scheme, but it is simple to implement and should suffice for + * our purposes. + */ +static void +record_inord_packno (struct mini_conn *mc, lsquic_packno_t packno) +{ + int n_avail; + lsquic_packno_t mask; + + for ( ; mc->mc_inord_idx < sizeof(mc->mc_inord_hist) / + sizeof(mc->mc_inord_hist[0]); ++mc->mc_inord_idx) + { + if (mc->mc_inord_hist[ mc->mc_inord_idx ]) + n_avail = __builtin_clzll(mc->mc_inord_hist[ mc->mc_inord_idx ]) - 1; + else + n_avail = sizeof(mc->mc_inord_hist[ mc->mc_inord_idx ]) * 8; + if (n_avail >= (int) packno) + { + mask = (1ULL << (int) packno) - 1; + mask <<= sizeof(mc->mc_inord_hist[ mc->mc_inord_idx ]) * 8 - n_avail; + mc->mc_inord_hist[ mc->mc_inord_idx ] |= mask; + return; /* Success */ + } + } +} + + +#if __GNUC__ +# define ctz __builtin_ctzll +#else +static unsigned +ctz (unsigned long long x) +{ + unsigned n = 0; + if (0 == (x & ((1ULL << 32) - 1))) { n += 32; x >>= 32; } + if (0 == (x & ((1ULL << 16) - 1))) { n += 16; x >>= 16; } + if (0 == (x & ((1ULL << 8) - 1))) { n += 8; x >>= 8; } + if (0 == (x & ((1ULL << 4) - 1))) { n += 4; x >>= 4; } + if (0 == (x & ((1ULL << 2) - 1))) { n += 2; x >>= 2; } + if (0 == (x & ((1ULL << 1) - 1))) { n += 1; x >>= 1; } + return n; +} + + +#endif + + +static void +inord_to_str (const struct mini_conn *mc, char *buf, size_t bufsz) +{ + unsigned long long hist; + size_t off; + ssize_t nw; + unsigned n; + int n_trail; + + off = 0; + for (n = 0; n < sizeof(mc->mc_inord_hist) / + sizeof(mc->mc_inord_hist[0]); ++n) + { + hist = mc->mc_inord_hist[n]; + while (hist) + { + n_trail = ctz(~hist); + nw = snprintf(buf + off, bufsz - off, + /* No spaces are included on purpose: this makes it a single + * field and thus easy to process log using standard command- + * line tools, such as sork -k, for example. + */ + (off ? ",%d" : "%d"), n_trail); + if ((size_t) nw > bufsz - off || nw < 0) + break; + off += nw; + hist >>= n_trail + 1; + } + } + buf[ bufsz - 1 ] = '\0'; /* CYA */ +} + + +#endif + + +static void +mini_conn_ci_packet_in (struct lsquic_conn *lconn, + struct lsquic_packet_in *packet_in) +{ + struct mini_conn *mc = (struct mini_conn *) lconn; + +#if LSQUIC_RECORD_INORD_HIST + record_inord_packno(mc, packet_in->pi_packno); +#endif +#if 0 + /* A convenient way to test lsquic_is_valid_hs_packet(): */ + if (!(mc->mc_sent_packnos)) + assert(lsquic_is_valid_hs_packet(NULL, packet_in->pi_data, + packet_in->pi_data_sz)); +#endif + + if (mc->mc_flags & MC_ERROR) + { + LSQ_DEBUG("error state: ignore packet %"PRIu64, packet_in->pi_packno); + return; + } + + if (lsquic_packet_in_is_gquic_prst(packet_in)) + { + LSQ_INFO("received reset packet"); + mc->mc_flags |= MC_ERROR; + MCHIST_APPEND(mc, MCHE_PRST_IN); + return; + } + + LSQ_DEBUG("packet in: %"PRIu64, packet_in->pi_packno); + EV_LOG_PACKET_IN(LSQUIC_LOG_CONN_ID, packet_in); + + + /* Check receive history */ + if (0 == packet_in->pi_packno) + { + LSQ_DEBUG("invalid packet number 0"); + mc->mc_flags |= MC_ERROR; + MCHIST_APPEND(mc, MCHE_PACKET0_IN); + return; + } + if (packet_in->pi_packno > MINICONN_MAX_PACKETS) + { + LSQ_DEBUG("packet number %"PRIu64" is too large (max %zd)", + packet_in->pi_packno, MINICONN_MAX_PACKETS); + mc->mc_flags |= MC_ERROR; + MCHIST_APPEND(mc, MCHE_PACKET2LARGE_IN); + return; + } + if (MCONN_PACKET_MASK(packet_in->pi_packno) & mc->mc_received_packnos) + { + LSQ_DEBUG("duplicate packet %"PRIu64", ignoring", packet_in->pi_packno); + MCHIST_APPEND(mc, MCHE_PACKET_DUP_IN); + return; + } + + if (TAILQ_EMPTY(&mc->mc_deferred)) + process_packet(mc, packet_in); + else if (mc->mc_n_deferred < MINI_CONN_MAX_DEFERRED) + { + insert_into_deferred(mc, packet_in); + process_deferred_packets(mc); + } + else + { + process_packet(mc, packet_in); + process_deferred_packets(mc); + } +} + + +/* Q050 is different is that packet numbers are not known until after the + * packet is decrypted, so we have to follow different logic here. + */ +static void +mini_conn_ci_Q050_packet_in (struct lsquic_conn *lconn, + struct lsquic_packet_in *packet_in) +{ + struct mini_conn *mc = (struct mini_conn *) lconn; + enum proc_rp prp; + + if (mc->mc_flags & MC_ERROR) + { + LSQ_DEBUG("error state: ignore packet"); + return; + } + + + if (!mc->mc_conn.cn_enc_session) + { + mc->mc_conn.cn_enc_session = + mc->mc_conn.cn_esf.g->esf_create_server(&mc->mc_conn, + mc->mc_conn.cn_cid, mc->mc_enpub); + if (!mc->mc_conn.cn_enc_session) + { + LSQ_WARN("cannot create new enc session"); + mc->mc_flags |= MC_ERROR; + return; + } + MCHIST_APPEND(mc, MCHE_NEW_ENC_SESS); + } + + assert(!(packet_in->pi_flags & PI_DECRYPTED)); + prp = conn_decrypt_packet_or(mc, packet_in); + switch (prp) + { + case PRP_KEEP: + break; + case PRP_DROP: + return; + case PRP_ERROR: + mc->mc_flags |= MC_ERROR; + return; + default: + if (mc->mc_n_deferred >= MINI_CONN_MAX_DEFERRED) + { + LSQ_DEBUG("won't defer more than %u packets: drop", + MINI_CONN_MAX_DEFERRED); + return; + } + assert(prp == PRP_DEFER); + assert(packet_in->pi_flags & PI_OWN_DATA); + lsquic_packet_in_upref(packet_in); + TAILQ_INSERT_TAIL(&mc->mc_deferred, packet_in, pi_next); + ++mc->mc_n_deferred; + return; + } + + assert(prp == PRP_KEEP); + process_packet(mc, packet_in); +} + + +static struct lsquic_packet_out * +mini_conn_ci_next_packet_to_send (struct lsquic_conn *lconn, + const struct to_coal *to_coal_UNUSED) +{ + struct mini_conn *mc = (struct mini_conn *) lconn; + lsquic_packet_out_t *packet_out; + + assert(NULL == to_coal_UNUSED); + TAILQ_FOREACH(packet_out, &mc->mc_packets_out, po_next) + { + if (packet_out->po_flags & PO_SENT) + continue; + packet_out->po_flags |= PO_SENT; + LSQ_DEBUG("packet_to_send: %"PRIu64, packet_out->po_packno); + return packet_out; + } + return NULL; +} + + +static void +mini_conn_ci_packet_sent (struct lsquic_conn *lconn, + struct lsquic_packet_out *packet_out) +{ + struct mini_conn *mc = (struct mini_conn *) lconn; + mc->mc_sent_packnos |= MCONN_PACKET_MASK(packet_out->po_packno); + if (packet_out->po_frame_types & (1 << QUIC_FRAME_ACK)) + { + assert(mc->mc_flags & MC_UNSENT_ACK); + mc->mc_flags &= ~MC_UNSENT_ACK; + } + LSQ_DEBUG("%s: packet %"PRIu64" sent", __func__, packet_out->po_packno); + MCHIST_APPEND(mc, MCHE_PACKET_SENT); +} + + +static void +mini_conn_ci_packet_not_sent (struct lsquic_conn *lconn, + struct lsquic_packet_out *packet_out) +{ + struct mini_conn *mc = (struct mini_conn *) lconn; + packet_out->po_flags &= ~PO_SENT; + LSQ_DEBUG("%s: packet %"PRIu64" not sent", __func__, packet_out->po_packno); + MCHIST_APPEND(mc, MCHE_PACKET_DELAYED); +} + + +static void +mini_conn_ci_destroy (struct lsquic_conn *lconn) +{ + assert(!(lconn->cn_flags & LSCONN_HASHED)); + struct mini_conn *mc = (struct mini_conn *) lconn; + lsquic_packet_in_t *packet_in; + mconn_packno_set_t still_deferred = 0, in_flight; + enum lsq_log_level log_level; +#if LSQUIC_RECORD_INORD_HIST + char inord_str[0x100]; +#endif + while ((packet_in = TAILQ_FIRST(&mc->mc_packets_in))) + { + TAILQ_REMOVE(&mc->mc_packets_in, packet_in, pi_next); + lsquic_packet_in_put(&mc->mc_enpub->enp_mm, packet_in); + } + while ((packet_in = TAILQ_FIRST(&mc->mc_deferred))) + { + TAILQ_REMOVE(&mc->mc_deferred, packet_in, pi_next); + --mc->mc_n_deferred; + still_deferred |= MCONN_PACKET_MASK(packet_in->pi_packno); + lsquic_packet_in_put(&mc->mc_enpub->enp_mm, packet_in); + } + if (TAILQ_EMPTY(&mc->mc_packets_out)) + in_flight = ~0ull; /* Indicates that packets were dropped before */ + else + in_flight = drop_packets_out(mc); + if (mc->mc_conn.cn_enc_session) + mc->mc_conn.cn_esf.g->esf_destroy(mc->mc_conn.cn_enc_session); + log_level = warning_is_warranted(mc) ? LSQ_LOG_WARN : LSQ_LOG_DEBUG; +#if LSQUIC_RECORD_INORD_HIST + if (LSQ_LOG_ENABLED(log_level)) + inord_to_str(mc, inord_str, sizeof(inord_str)); +#endif +#if LSQUIC_KEEP_MINICONN_HISTORY + const unsigned hist_idx = MCHIST_MASK & mc->mc_hist_idx; + if (MCHE_EMPTY == mc->mc_hist_buf[ hist_idx ]) + LSQ_LOG(log_level, "destroyed. Diagnostics: conn flags: 0x%X, " + "mc flags: 0x%X, " +#if LSQUIC_RECORD_INORD_HIST + "incoming-history (trunc: %d) %s, " +#endif + "received: %"PRIX64", sent: %"PRIX64", lost: %"PRIX64", " + "deferred: %"PRIX64", still-deferred: %"PRIX64", " + "dropped: %"PRIX64", in-flight: %"PRIX64", acked: %"PRIX64", " + "error_code: 0x%X, ticks: %hu, pack size: %hu, " + "lifetime: %"PRIu64" usec, version: %s, " + "mc hist: %.*s", mc->mc_conn.cn_flags, + mc->mc_flags, +#if LSQUIC_RECORD_INORD_HIST + mc->mc_inord_idx >= sizeof(mc->mc_inord_hist) / + sizeof(mc->mc_inord_hist[0]), inord_str, +#endif + mc->mc_received_packnos, mc->mc_sent_packnos, mc->mc_lost_packnos, + mc->mc_deferred_packnos, still_deferred, + mc->mc_dropped_packnos, in_flight, mc->mc_acked_packnos, + mc->mc_error_code, mc->mc_n_ticks, mc->mc_path.np_pack_size, + lsquic_time_now() - mc->mc_created, + lsquic_ver2str[mc->mc_conn.cn_version], + (int) hist_idx, mc->mc_hist_buf); + else + LSQ_LOG(log_level, "destroyed. Diagnostics: conn flags: 0x%X, " + "mc flags: 0x%X, " +#if LSQUIC_RECORD_INORD_HIST + "incoming-history (trunc: %d) %s, " +#endif + "received: %"PRIX64", sent: %"PRIX64", lost: %"PRIX64", " + "deferred: %"PRIX64", still-deferred: %"PRIX64", " + "dropped: %"PRIX64", in-flight: %"PRIX64", acked: %"PRIX64", " + "error_code: 0x%X, ticks: %hu, pack size: %hu, " + "lifetime: %"PRIu64" usec, version: %s, " + "mc hist: %.*s%.*s", mc->mc_conn.cn_flags, + mc->mc_flags, +#if LSQUIC_RECORD_INORD_HIST + mc->mc_inord_idx >= sizeof(mc->mc_inord_hist) / + sizeof(mc->mc_inord_hist[0]), inord_str, +#endif + mc->mc_received_packnos, mc->mc_sent_packnos, mc->mc_lost_packnos, + mc->mc_deferred_packnos, still_deferred, + mc->mc_dropped_packnos, in_flight, mc->mc_acked_packnos, + mc->mc_error_code, mc->mc_n_ticks, mc->mc_path.np_pack_size, + lsquic_time_now() - mc->mc_created, + lsquic_ver2str[mc->mc_conn.cn_version], + (int) (sizeof(mc->mc_hist_buf) - hist_idx), + mc->mc_hist_buf + hist_idx, (int) hist_idx, mc->mc_hist_buf); +#else + if (LSQ_LOG_ENABLED(log_level)) + lsquic_logger_log2(log_level, LSQUIC_LOGGER_MODULE, + LSQUIC_LOG_CONN_ID, + "destroyed. Diagnostics: conn flags: 0x%X, " + "mc flags: 0x%X, " +#if LSQUIC_RECORD_INORD_HIST + "incoming-history (trunc: %d) %s, " +#endif + "received: %"PRIX64", sent: %"PRIX64", lost: %"PRIX64", " + "deferred: %"PRIX64", still-deferred: %"PRIX64", " + "dropped: %"PRIX64", in-flight: %"PRIX64", acked: %"PRIX64", " + "error_code: 0x%X, ticks: %hu, pack size: %hu, " + "lifetime: %"PRIu64" usec", + mc->mc_conn.cn_flags, + mc->mc_flags, +#if LSQUIC_RECORD_INORD_HIST + mc->mc_inord_idx >= sizeof(mc->mc_inord_hist) / + sizeof(mc->mc_inord_hist[0]), inord_str, +#endif + mc->mc_received_packnos, mc->mc_sent_packnos, mc->mc_lost_packnos, + mc->mc_deferred_packnos, still_deferred, + mc->mc_dropped_packnos, in_flight, mc->mc_acked_packnos, + mc->mc_error_code, mc->mc_n_ticks, mc->mc_path.np_pack_size, + lsquic_time_now() - mc->mc_created); +#endif + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "mini connection destroyed"); + lsquic_malo_put(mc); +} + + +static struct lsquic_engine * +mini_conn_ci_get_engine (struct lsquic_conn *lconn) +{ + struct mini_conn *mc = (struct mini_conn *) lconn; + return mc->mc_enpub->enp_engine; +} + + +static void +mini_conn_ci_hsk_done (struct lsquic_conn *lconn, enum lsquic_hsk_status status) +{ + assert(0); +} + + +/* A mini connection is only tickable if it has unsent packets. This can + * occur when packet sending is delayed. + * + * Otherwise, a mini connection is not tickable: Either there are incoming + * packets, in which case, the connection is going to be ticked, or there is + * an alarm pending, in which case it will be handled via the attq. + */ +static int +mini_conn_ci_is_tickable (struct lsquic_conn *lconn) +{ + struct mini_conn *const mc = (struct mini_conn *) lconn; + const struct lsquic_packet_out *packet_out; + + if (mc->mc_enpub->enp_flags & ENPUB_CAN_SEND) + TAILQ_FOREACH(packet_out, &mc->mc_packets_out, po_next) + if (!(packet_out->po_flags & PO_SENT)) + return 1; + + return 0; +} + + +static lsquic_time_t +mini_conn_ci_next_tick_time (struct lsquic_conn *lconn, unsigned *why) +{ + struct mini_conn *mc = (struct mini_conn *) lconn; + lsquic_packet_out_t *packet_out; + lsquic_time_t exp_time, retx_time; + + exp_time = mc->mc_created + mc->mc_enpub->enp_settings.es_handshake_to; + + TAILQ_FOREACH(packet_out, &mc->mc_packets_out, po_next) + if (packet_out->po_flags & PO_SENT) + { + retx_time = packet_out->po_sent + calc_retx_timeout(mc); + if (retx_time < exp_time) + { + *why = N_AEWS + AL_RETX_HSK; + return retx_time; + } + else + { + *why = AEW_MINI_EXPIRE; + return exp_time; + } + } + + *why = AEW_MINI_EXPIRE; + return exp_time; +} + + +static void +mini_conn_ci_client_call_on_new (struct lsquic_conn *lconn) +{ + assert(0); +} + + +static void +mini_conn_ci_internal_error (struct lsquic_conn *lconn, + const char *format, ...) +{ + struct mini_conn *mc = (struct mini_conn *) lconn; + LSQ_INFO("internal error reported"); + mc->mc_flags |= MC_ERROR; +} + + +/* This function should not be called, as this is specific to IETF QUIC */ +static void +mini_conn_ci_abort_error (struct lsquic_conn *lconn, int is_app, + unsigned error_code, const char *fmt, ...) +{ + struct mini_conn *mc = (struct mini_conn *) lconn; + assert(0); + LSQ_WARN("(GQUIC) abort error is called unexpectedly"); + mc->mc_flags |= MC_ERROR; +} + + +static void +mini_conn_ci_tls_alert (struct lsquic_conn *lconn, uint8_t alert) +{ + assert(0); +} + + +static unsigned char +mini_conn_ci_record_addrs (struct lsquic_conn *lconn, void *peer_ctx, + const struct sockaddr *local_sa, const struct sockaddr *peer_sa) +{ + struct mini_conn *mc = (struct mini_conn *) lconn; + struct lsquic_packet_out *packet_out; + size_t len; + + + if (NP_IS_IPv6(&mc->mc_path) != (AF_INET6 == peer_sa->sa_family)) + TAILQ_FOREACH(packet_out, &mc->mc_packets_out, po_next) + if ((packet_out->po_flags & (PO_SENT|PO_ENCRYPTED)) == PO_ENCRYPTED) + return_enc_data(mc, packet_out); + + len = local_sa->sa_family == AF_INET ? sizeof(struct sockaddr_in) + : sizeof(struct sockaddr_in6); + + memcpy(mc->mc_path.np_peer_addr, peer_sa, len); + memcpy(mc->mc_path.np_local_addr, local_sa, len); + mc->mc_path.np_peer_ctx = peer_ctx; + return 0; +} + + +static struct network_path * +mini_conn_ci_get_path (struct lsquic_conn *lconn, const struct sockaddr *sa) +{ + struct mini_conn *mc = (struct mini_conn *) lconn; + + return &mc->mc_path; +} + + +static const struct conn_iface mini_conn_iface_standard = { + .ci_abort_error = mini_conn_ci_abort_error, + .ci_client_call_on_new = mini_conn_ci_client_call_on_new, + .ci_destroy = mini_conn_ci_destroy, + .ci_get_engine = mini_conn_ci_get_engine, + .ci_get_path = mini_conn_ci_get_path, + .ci_hsk_done = mini_conn_ci_hsk_done, + .ci_internal_error = mini_conn_ci_internal_error, + .ci_is_tickable = mini_conn_ci_is_tickable, + .ci_next_packet_to_send = mini_conn_ci_next_packet_to_send, + .ci_next_tick_time = mini_conn_ci_next_tick_time, + .ci_packet_in = mini_conn_ci_packet_in, + .ci_packet_not_sent = mini_conn_ci_packet_not_sent, + .ci_packet_sent = mini_conn_ci_packet_sent, + .ci_record_addrs = mini_conn_ci_record_addrs, + .ci_tick = mini_conn_ci_tick, + .ci_tls_alert = mini_conn_ci_tls_alert, +}; + + +static const struct conn_iface mini_conn_iface_standard_Q050 = { + .ci_abort_error = mini_conn_ci_abort_error, + .ci_client_call_on_new = mini_conn_ci_client_call_on_new, + .ci_destroy = mini_conn_ci_destroy, + .ci_get_engine = mini_conn_ci_get_engine, + .ci_get_path = mini_conn_ci_get_path, + .ci_hsk_done = mini_conn_ci_hsk_done, + .ci_internal_error = mini_conn_ci_internal_error, + .ci_is_tickable = mini_conn_ci_is_tickable, + .ci_next_packet_to_send = mini_conn_ci_next_packet_to_send, + .ci_next_tick_time = mini_conn_ci_next_tick_time, + .ci_packet_in = mini_conn_ci_Q050_packet_in, + .ci_packet_not_sent = mini_conn_ci_packet_not_sent, + .ci_packet_sent = mini_conn_ci_packet_sent, + .ci_record_addrs = mini_conn_ci_record_addrs, + .ci_tick = mini_conn_ci_tick, + .ci_tls_alert = mini_conn_ci_tls_alert, +}; + + +typedef char largest_recv_holds_at_least_16_seconds[ + ((1 << (sizeof(((struct mini_conn *) 0)->mc_largest_recv) * 8)) / 1000000 + >= 16) ? 1 : -1]; + +typedef char max_lifespan_smaller_than_largest_recv[ + ((1 << (sizeof(((struct mini_conn *) 0)->mc_largest_recv) * 8)) > + MAX_MINI_CONN_LIFESPAN_IN_USEC) ? 1 : -1]; diff --git a/external/lsquic/src/liblsquic/lsquic_mini_conn.h b/external/lsquic/src/liblsquic/lsquic_mini_conn.h new file mode 100644 index 0000000..80334ad --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_mini_conn.h @@ -0,0 +1,159 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_mini_conn.h -- Mini-connection + * + * Before a connection is established, the server keeps a "mini" connection + * object where it keeps track of stream 1 offsets and so on. + */ + +#ifndef LSQUIC_MINI_CONN_H +#define LSQUIC_MINI_CONN_H + +#include +#include + +#define MAX_MINI_CONN_LIFESPAN_IN_USEC \ + ((1 << (sizeof(((struct mini_conn *) 0)->mc_largest_recv) * 8)) - 1) + +struct lsquic_packet_in; +struct lsquic_packet_out; +struct lsquic_engine_public; + +#ifndef LSQUIC_KEEP_MINICONN_HISTORY +# if !defined(NDEBUG) && !defined(_MSC_VER) +# define LSQUIC_KEEP_MINICONN_HISTORY 1 +# else +# define LSQUIC_KEEP_MINICONN_HISTORY 0 +# endif +#endif + +#if LSQUIC_KEEP_MINICONN_HISTORY + +#define MCHIST_BITS 4 +#define MCHIST_MASK ((1 << MCHIST_BITS) - 1) +typedef unsigned char mchist_idx_t; + +enum miniconn_history_event +{ + MCHE_EMPTY = '\0', + MCHE_PLUS = '+', + MCHE_HANDLE_1RTT = '1', + MCHE_HANDLE_SREJ = '2', + MCHE_PACKET2LARGE_IN = 'a', + MCHE_CONN_CLOSE = 'c', + MCHE_CREATED = 'C', + MCHE_2HSK_1STREAM = 'd', + MCHE_DUP_HSK = 'D', + MCHE_HANDLE_ERROR = 'e', + MCHE_EFRAME = 'f', + MCHE_UNDECR_DEFER = 'F', + MCHE_HANDLE_NOT_ENOUGH = 'g', + MCHE_NEW_HSK = 'H', + MCHE_INVALID_FRAME = 'I', + MCHE_DECRYPTED = 'K', + MCHE_PACKET_LOST = 'L', + MCHE_HELLO_TOO_MUCH = 'm', + MCHE_ENOMEM = 'M', + MCHE_NEW_PACKET_OUT = 'N', + MCHE_HELLO_HOLE = 'o', + MCHE_PACKET_DUP_IN = 'p', + MCHE_UNDECR_DROP = 'P', + MCHE_PRST_IN = 'R', + MCHE_HANDLE_SHLO = 's', + MCHE_NEW_ENC_SESS = 'S', + MCHE_PACKET_SENT = 'T', + MCHE_HAHDLE_UNKNOWN = 'u', + MCHE_UNSENT_ACKED = 'U', + MCHE_HANDLE_DELAYED = 'y', + MCHE_PACKET_DELAYED = 'Y', + MCHE_PACKET0_IN = 'z', + MCHE_OUT_OF_PACKNOS = '#', +}; + +#endif + +#ifndef LSQUIC_RECORD_INORD_HIST +# if __GNUC__ +# define LSQUIC_RECORD_INORD_HIST 1 +# else +# define LSQUIC_RECORD_INORD_HIST 0 +# endif +#endif + +typedef uint64_t mconn_packno_set_t; + +#define MINICONN_MAX_PACKETS (sizeof(mconn_packno_set_t) * 8) + +TAILQ_HEAD(head_packet_in, lsquic_packet_in); + +struct mini_conn { + struct lsquic_conn mc_conn; + struct conn_cid_elem mc_cces[1]; + struct head_packet_in mc_deferred, + mc_packets_in; + TAILQ_HEAD(, lsquic_packet_out) + mc_packets_out; + struct lsquic_engine_public + *mc_enpub; + lsquic_time_t mc_created; + struct lsquic_rtt_stats + mc_rtt_stats; + mconn_packno_set_t mc_received_packnos, + mc_sent_packnos, + mc_deferred_packnos, /* Informational */ + mc_dropped_packnos, /* Informational */ + mc_lost_packnos, /* Packets that were deemed lost */ /* Informational */ + mc_acked_packnos; +#if LSQUIC_RECORD_INORD_HIST + unsigned long long mc_inord_hist[2]; /* Informational */ +#endif + uint32_t mc_error_code; /* From CONNECTION_CLOSE frame */ /* Informational */ + unsigned short mc_n_ticks; /* Number of times mini conn ticked. */ /* Informational */ + unsigned short mc_read_off, /* Read offset for stream 1 */ + mc_write_off;/* Write offset for stream 1 */ + unsigned char mc_max_ack_packno, + mc_cutoff, + mc_cur_packno; + unsigned char mc_hsk_count; +#define MINI_CONN_MAX_DEFERRED 10 + unsigned char mc_n_deferred; +#if LSQUIC_RECORD_INORD_HIST + unsigned char mc_inord_idx; +#endif + /* mc_largest_recv is the timestamp of when packet with the largest + * number was received; it is necessary to generate ACK frames. 24 + * bits holds about 16.5 seconds worth of microseconds, which is + * larger than the maximum amount of time a mini connection object + * is allowed to live. To get the timestamp, add this value to + * mc_created. + */ + unsigned char mc_largest_recv[3]; + enum { + MC_HAVE_NEW_HSK = (1 << 0), + MC_PROMOTE = (1 << 1), + MC_HAVE_SHLO = (1 << 2), + MC_WR_OFF_RESET = (1 << 3), + MC_ERROR = (1 << 4), + MC_UNSENT_ACK = (1 << 5), + MC_GEN_ACK = (1 << 6), + MC_HSK_ERR = (1 << 7), + MC_OO_PACKNOS = (1 << 8), + MC_STOP_WAIT_ON = (1 << 9), + } mc_flags:16; + struct network_path mc_path; +#if LSQUIC_KEEP_MINICONN_HISTORY + mchist_idx_t mc_hist_idx; + unsigned char mc_hist_buf[1 << MCHIST_BITS]; +#endif +}; + +lsquic_conn_t * +lsquic_mini_conn_new (struct lsquic_engine_public *, + const struct lsquic_packet_in *, enum lsquic_version version); + +/* Packet numbers start with 1. By subtracting 1, we can utilize the full + * length of the bitmask. + */ +#define MCONN_PACKET_MASK(packno) (1ULL << (packno - 1)) + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_mini_conn_ietf.c b/external/lsquic/src/liblsquic/lsquic_mini_conn_ietf.c new file mode 100644 index 0000000..f052387 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_mini_conn_ietf.c @@ -0,0 +1,2500 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_mini_conn_ietf.c -- Mini connection used by the IETF QUIC + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_sizes.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_mm.h" +#include "lsquic_malo.h" +#include "lsquic_engine_public.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_parse.h" +#include "lsquic_rtt.h" +#include "lsquic_util.h" +#include "lsquic_enc_sess.h" +#include "lsquic_trechist.h" +#include "lsquic_mini_conn_ietf.h" +#include "lsquic_ev_log.h" +#include "lsquic_trans_params.h" +#include "lsquic_ietf.h" +#include "lsquic_packet_ietf.h" +#include "lsquic_attq.h" +#include "lsquic_alarmset.h" +#include "lsquic_crand.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_MINI_CONN +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(&conn->imc_conn) +#include "lsquic_logger.h" + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define MAX(a, b) ((a) > (b) ? (a) : (b)) + +static const struct conn_iface mini_conn_ietf_iface; + +static unsigned highest_bit_set (unsigned long long); + +static void +ietf_mini_conn_ci_abort_error (struct lsquic_conn *lconn, int is_app, + unsigned error_code, const char *fmt, ...); + +static const enum header_type el2hety[] = +{ + [ENC_LEV_HSK] = HETY_HANDSHAKE, + [ENC_LEV_INIT] = HETY_INITIAL, + [ENC_LEV_APP] = HETY_SHORT, + [ENC_LEV_0RTT] = 0, /* Invalid */ +}; + + +static inline void +imico_destroy_packet (struct ietf_mini_conn *conn, + struct lsquic_packet_out *packet_out) +{ + lsquic_packet_out_destroy(packet_out, conn->imc_enpub, + conn->imc_path.np_peer_ctx); +} + + +int +lsquic_mini_conn_ietf_ecn_ok (const struct ietf_mini_conn *conn) +{ + packno_set_t acked; + + /* First flight has only Initial and Handshake packets */ + acked = conn->imc_acked_packnos[PNS_INIT] + | conn->imc_acked_packnos[PNS_HSK] + ; + return 0 != (conn->imc_ecn_packnos & acked); +} + + +static inline enum ecn +imico_get_ecn (struct ietf_mini_conn *conn) +{ + if (!conn->imc_enpub->enp_settings.es_ecn) + return ECN_NOT_ECT; + else + return ECN_ECT0; +} + + +static struct lsquic_packet_out * +imico_get_packet_out (struct ietf_mini_conn *conn, + enum header_type header_type, size_t need) +{ + struct lsquic_packet_out *packet_out; + enum ecn ecn; + + if (need) + TAILQ_FOREACH(packet_out, &conn->imc_packets_out, po_next) + if (!(packet_out->po_flags & PO_SENT) + && packet_out->po_header_type == header_type + && lsquic_packet_out_avail(packet_out) >= need) + return packet_out; + + if (conn->imc_next_packno >= MAX_PACKETS) + { + LSQ_DEBUG("ran out of outgoing packet numbers, won't allocate packet"); + return NULL; + } + + packet_out = lsquic_packet_out_new(&conn->imc_enpub->enp_mm, NULL, 1, + &conn->imc_conn, IQUIC_PACKNO_LEN_1, NULL, NULL, &conn->imc_path, + header_type); + if (!packet_out) + { + LSQ_WARN("could not allocate packet: %s", strerror(errno)); + return NULL; + } + + packet_out->po_header_type = header_type; + packet_out->po_packno = conn->imc_next_packno++; + packet_out->po_flags |= PO_MINI; + lsquic_packet_out_set_pns(packet_out, lsquic_hety2pns[header_type]); + ecn = imico_get_ecn(conn); + packet_out->po_lflags |= ecn << POECN_SHIFT; + TAILQ_INSERT_TAIL(&conn->imc_packets_out, packet_out, po_next); + packet_out->po_loss_chain = packet_out; + return packet_out; +} + + +static inline struct ietf_mini_conn * +cryst_get_conn (const struct mini_crypto_stream *cryst) +{ + return (void *) + ((unsigned char *) (cryst - cryst->mcs_enc_level) + - offsetof(struct ietf_mini_conn, imc_streams)); +} + + +struct msg_ctx +{ + const unsigned char *buf; + const unsigned char *const end; +}; + + +static size_t +read_from_msg_ctx (void *ctx, void *buf, size_t len, int *fin) +{ + struct msg_ctx *msg_ctx = ctx; + if (len > (uintptr_t) (msg_ctx->end - msg_ctx->buf)) + len = msg_ctx->end - msg_ctx->buf; + memcpy(buf, msg_ctx->buf, len); + msg_ctx->buf += len; + return len; +} + + +static inline int +imico_chlo_has_been_consumed (const struct ietf_mini_conn *conn) +{ + return conn->imc_streams[ENC_LEV_INIT].mcs_read_off > 3 + && conn->imc_streams[ENC_LEV_INIT].mcs_read_off >= conn->imc_ch_len; +} + + +static int +imico_process_version_negociation (struct ietf_mini_conn *conn, + const struct transport_params *params) +{ + unsigned common_versions; + unsigned ver; + int i; + if (LSQ_LOG_ENABLED(LSQ_LOG_DEBUG)) + { + LSQ_DEBUG("client chosen version %s", + lsquic_ver2str[params->tp_chosen_version]); + for (i = 1; i < params->tp_version_cnt; ++i) + { + LSQ_DEBUG("client available version %s", + lsquic_ver2str[params->tp_version_info[i]]); + //EV_LOG_VER_NEG(LSQUIC_LOG_CONN_ID, "supports", + // lsquic_ver2str[params->tp_version_info[i]]); + } + } + if (params->tp_chosen_version != conn->imc_conn.cn_version) + { + LSQ_DEBUG("client chosen version does not match the version in use %s", + lsquic_ver2str[conn->imc_conn.cn_version]); + ietf_mini_conn_ci_abort_error(&conn->imc_conn, 0, + TEC_VERSION_NEGOTIATION_ERROR, + "chosen version mismatch"); + return -1; + } + common_versions = conn->imc_enpub->enp_settings.es_versions + & params->tp_versions; + ver = highest_bit_set(common_versions); + if (conn->imc_conn.cn_version != (enum lsquic_version)ver) + { + LSQ_DEBUG("version negociation: switch version from %s to %s", + lsquic_ver2str[conn->imc_conn.cn_version], + lsquic_ver2str[ver]); + conn->imc_conn.cn_version = ver; + conn->imc_conn.cn_flags |= LSCONN_VER_UPDATED; + iquic_esfi_switch_version(conn->imc_conn.cn_enc_session, + &conn->imc_cces[0].cce_cid, 1); + } + + return 0; +} + + +static int +imico_maybe_process_params (struct ietf_mini_conn *conn) +{ + const struct transport_params *params; + + if (imico_chlo_has_been_consumed(conn) + && (conn->imc_flags & (IMC_ENC_SESS_INITED|IMC_HAVE_TP)) + == IMC_ENC_SESS_INITED) + { + params = conn->imc_conn.cn_esf.i->esfi_get_peer_transport_params( + conn->imc_conn.cn_enc_session); + if (params) + { + conn->imc_flags |= IMC_HAVE_TP; + conn->imc_ack_exp = params->tp_ack_delay_exponent; + if (params->tp_set & (1 << TPI_MAX_UDP_PAYLOAD_SIZE)) + { + if (params->tp_numerics[TPI_MAX_UDP_PAYLOAD_SIZE] + < conn->imc_path.np_pack_size) + conn->imc_path.np_pack_size = + params->tp_numerics[TPI_MAX_UDP_PAYLOAD_SIZE]; + } + LSQ_DEBUG("read transport params, packet size is set to %hu bytes", + conn->imc_path.np_pack_size); + if (params->tp_set & (1 << TPI_VERSION_INFORMATION)) + { + if (imico_process_version_negociation(conn, params) == -1) + { + conn->imc_flags |= IMC_VER_NEG_FAILED; + return -1; + } + } + iquic_esfi_init_server_tp(conn->imc_conn.cn_enc_session); + } + else + { + conn->imc_flags |= IMC_BAD_TRANS_PARAMS; + return -1; + } + } + + return 0; +} + + +static inline void +imico_zero_pad (struct lsquic_packet_out *packet_out, size_t pad_size) +{ + memset(packet_out->po_data + packet_out->po_data_sz, 0, pad_size); + packet_out->po_padding_sz = pad_size; + packet_out->po_data_sz += pad_size; + packet_out->po_frame_types |= QUIC_FTBIT_PADDING; +} + + +static int +imico_generate_ack (struct ietf_mini_conn *conn, enum packnum_space pns, + lsquic_time_t now); + +static ssize_t +imico_stream_write (void *stream, const void *bufp, size_t bufsz) +{ + struct mini_crypto_stream *const cryst = stream; + struct ietf_mini_conn *const conn = cryst_get_conn(cryst); + struct lsquic_conn *const lconn = &conn->imc_conn; + const struct parse_funcs *const pf = lconn->cn_pf; + struct msg_ctx msg_ctx = { bufp, (unsigned char *) bufp + bufsz, }; + struct lsquic_packet_out *packet_out; + size_t header_sz, need; + const unsigned char *p; + int len; + + if (0 != imico_maybe_process_params(conn)) + return -1; + + if (PNS_INIT == lsquic_enclev2pns[ cryst->mcs_enc_level ] + && (conn->imc_flags & IMC_IGNORE_INIT)) + { + LSQ_WARN("trying to write at the ignored Initial level"); + return bufsz; + } + + if (cryst->mcs_enc_level == ENC_LEV_INIT + && (conn->imc_flags & IMC_QUEUED_ACK_INIT)) + { + imico_generate_ack(conn, PNS_INIT, lsquic_time_now()); + } + + while (msg_ctx.buf < msg_ctx.end) + { + header_sz = lconn->cn_pf->pf_calc_crypto_frame_header_sz( + cryst->mcs_write_off, msg_ctx.end - msg_ctx.buf); + need = header_sz + 500; + packet_out = imico_get_packet_out(conn, + el2hety[ cryst->mcs_enc_level ], need); + if (!packet_out) + return -1; + // NOTE: reduce the size of first crypto frame to combine packets + unsigned avail = lsquic_packet_out_avail(packet_out); + int coalescing = 0; + if (cryst->mcs_enc_level == ENC_LEV_HSK + && cryst->mcs_write_off == 0 + && avail > (unsigned)conn->imc_hello_pkt_remain - conn->imc_long_header_sz) + { + avail = conn->imc_hello_pkt_remain - conn->imc_long_header_sz; + conn->imc_hello_pkt_remain = 0; + coalescing = 1; + } + p = msg_ctx.buf; + len = pf->pf_gen_crypto_frame(packet_out->po_data + packet_out->po_data_sz, + avail, 0, cryst->mcs_write_off, 0, + msg_ctx.end - msg_ctx.buf, read_from_msg_ctx, &msg_ctx); + if (len < 0) + return len; + EV_LOG_GENERATED_CRYPTO_FRAME(LSQUIC_LOG_CONN_ID, pf, + packet_out->po_data + packet_out->po_data_sz, len); + packet_out->po_data_sz += len; + packet_out->po_frame_types |= 1 << QUIC_FRAME_CRYPTO; + packet_out->po_flags |= PO_HELLO; + if (coalescing && len < (int)avail) + { + LSQ_DEBUG("generated PADDING frame: %d bytes for packet %"PRIu64, + avail - len, packet_out->po_packno); + imico_zero_pad(packet_out, avail - len); + } + cryst->mcs_write_off += msg_ctx.buf - p; + if (cryst->mcs_enc_level == ENC_LEV_INIT) + conn->imc_hello_pkt_remain = lsquic_packet_out_avail(packet_out); + } + + assert(msg_ctx.buf == msg_ctx.end); + return bufsz; +} + + +static int +imico_stream_flush (void *stream) +{ + return 0; +} + + +static struct stream_frame * +imico_find_stream_frame (const struct ietf_mini_conn *conn, + enum enc_level enc_level, unsigned read_off) +{ + struct stream_frame *frame; + + if (conn->imc_last_in.frame && enc_level == conn->imc_last_in.enc_level + && read_off == DF_ROFF(conn->imc_last_in.frame)) + return conn->imc_last_in.frame; + + TAILQ_FOREACH(frame, &conn->imc_crypto_frames, next_frame) + if (enc_level == frame->stream_id && read_off == DF_ROFF(frame)) + return frame; + + return NULL; +} + + +static void +imico_read_chlo_size (struct ietf_mini_conn *conn, const unsigned char *buf, + size_t sz) +{ + const unsigned char *const end = buf + sz; + + assert(conn->imc_streams[ENC_LEV_INIT].mcs_read_off < 4); + switch (conn->imc_streams[ENC_LEV_INIT].mcs_read_off) + { + case 0: + if (buf == end) + return; + if (*buf != 1) + { + LSQ_DEBUG("Does not begin with ClientHello"); + conn->imc_flags |= IMC_ERROR; + return; + } + ++buf; + /* fall-through */ + case 1: + if (buf == end) + return; + if (*buf != 0) + { + LSQ_DEBUG("ClientHello larger than 16K"); + conn->imc_flags |= IMC_ERROR; + return; + } + ++buf; + /* fall-through */ + case 2: + if (buf == end) + return; + conn->imc_ch_len = *buf << 8; + ++buf; + /* fall-through */ + default: + if (buf == end) + return; + conn->imc_ch_len |= *buf; + } +} + + +static ssize_t +imico_stream_readf (void *stream, + size_t (*readf)(void *, const unsigned char *, size_t, int), void *ctx) +{ + struct mini_crypto_stream *const cryst = stream; + struct ietf_mini_conn *const conn = cryst_get_conn(cryst); + struct stream_frame *frame; + const unsigned char *buf; + size_t nread, total_read; + unsigned avail; + + total_read = 0; + while ((frame = imico_find_stream_frame(conn, cryst->mcs_enc_level, + cryst->mcs_read_off))) + { + avail = DF_SIZE(frame) - frame->data_frame.df_read_off; + buf = frame->data_frame.df_data + frame->data_frame.df_read_off; + nread = readf(ctx, buf, avail, DF_FIN(frame)); + if (cryst->mcs_enc_level == ENC_LEV_INIT && cryst->mcs_read_off < 4) + imico_read_chlo_size(conn, buf, nread); + total_read += nread; + cryst->mcs_read_off += nread; + frame->data_frame.df_read_off += nread; + LSQ_DEBUG("read %zu bytes at offset %"PRIu64" on enc level %u", nread, + DF_ROFF(frame), cryst->mcs_enc_level); + if (DF_END(frame) == DF_ROFF(frame)) + { + if (frame == conn->imc_last_in.frame) + conn->imc_last_in.frame = NULL; + else + { + TAILQ_REMOVE(&conn->imc_crypto_frames, frame, next_frame); + --conn->imc_n_crypto_frames; + conn->imc_crypto_frames_sz -= DF_SIZE(frame); + lsquic_packet_in_put(&conn->imc_enpub->enp_mm, + frame->packet_in); + lsquic_malo_put(frame); + } + } + if (nread < avail) + break; + } + + if (total_read > 0) + return total_read; + else + { + /* CRYPTO streams never end, so zero bytes read always means + * EWOULDBLOCK + */ + errno = EWOULDBLOCK; + return -1; + } +} + + +static inline int +imico_stream_wantX (struct mini_crypto_stream *cryst, int bit, int is_want) +{ + int old; + + old = (cryst->mcs_flags & (1 << bit)) > 0; + cryst->mcs_flags &= ~(1 << bit); + cryst->mcs_flags |= !!is_want << bit; + return old; +} + + +static int +imico_stream_wantwrite (void *stream, int is_want) +{ + return imico_stream_wantX(stream, MCSBIT_WANTWRITE, is_want); +} + + +static int +imico_stream_wantread (void *stream, int is_want) +{ + return imico_stream_wantX(stream, MCSBIT_WANTREAD, is_want); +} + + +static enum enc_level +imico_stream_enc_level (void *stream) +{ + struct mini_crypto_stream *const cryst = stream; + return cryst->mcs_enc_level; +} + + +static const struct crypto_stream_if crypto_stream_if = +{ + .csi_write = imico_stream_write, + .csi_flush = imico_stream_flush, + .csi_readf = imico_stream_readf, + .csi_wantwrite = imico_stream_wantwrite, + .csi_wantread = imico_stream_wantread, + .csi_enc_level = imico_stream_enc_level, +}; + + +static inline int +is_first_packet_ok (const struct lsquic_packet_in *packet_in, + size_t udp_payload_size) +{ + if (udp_payload_size < IQUIC_MIN_INIT_PACKET_SZ) + { + /* [draft-ietf-quic-transport-24] Section 14 */ + LSQ_LOG1(LSQ_LOG_DEBUG, "incoming UDP payload too small: %zu bytes", + udp_payload_size); + return 0; + } + /* TODO: Move decryption of the first packet into this function? */ + return 1; /* TODO */ +} + + +static inline void +imico_peer_addr_validated (struct ietf_mini_conn *conn, const char *how) +{ + if (!(conn->imc_flags & IMC_ADDR_VALIDATED)) + { + conn->imc_flags |= IMC_ADDR_VALIDATED; + LSQ_DEBUG("peer address validated (%s)", how); + } +} + + +struct lsquic_conn * +lsquic_mini_conn_ietf_new (struct lsquic_engine_public *enpub, + struct lsquic_packet_in *packet_in, + enum lsquic_version version, int is_ipv4, const lsquic_cid_t *odcid, + size_t udp_payload_size) +{ + struct ietf_mini_conn *conn; + enc_session_t *enc_sess; + enum enc_level i; + const struct enc_session_funcs_iquic *esfi; + unsigned char rand_nybble; + + if (!is_first_packet_ok(packet_in, udp_payload_size)) + return NULL; + packet_in->pi_flags |= PI_FIRST_INIT; + conn = lsquic_malo_get(enpub->enp_mm.malo.mini_conn_ietf); + if (!conn) + { + LSQ_LOG1(LSQ_LOG_WARN, "cannot allocate mini connection: %s", + strerror(errno)); + return NULL; + } + memset(conn, 0, sizeof(*conn)); + conn->imc_conn.cn_if = &mini_conn_ietf_iface; + conn->imc_conn.cn_cces = conn->imc_cces; + conn->imc_conn.cn_n_cces = sizeof(conn->imc_cces) + / sizeof(conn->imc_cces[0]); + conn->imc_cces[0].cce_cid = packet_in->pi_dcid; + conn->imc_cces[0].cce_flags = CCE_USED | CCE_REG; + conn->imc_conn.cn_cces_mask = 1; + lsquic_scid_from_packet_in(packet_in, &conn->imc_path.np_dcid); + /* Generate new SCID. Since is not the original SCID, it is given + * a sequence number (0) and therefore can be retired by the client. + */ + conn->imc_conn.cn_cces[1].cce_cid.len = enpub->enp_settings.es_scid_len; + enpub->enp_generate_scid(enpub->enp_gen_scid_ctx, &conn->imc_conn, + conn->imc_conn.cn_cces[1].cce_cid.buf, enpub->enp_settings.es_scid_len); + + if (conn->imc_path.np_dcid.len) + conn->imc_conn.cn_logid = conn->imc_path.np_dcid; + else + conn->imc_conn.cn_logid = conn->imc_conn.cn_cces[1].cce_cid; + + LSQ_DEBUGC("recv SCID from client %"CID_FMT, CID_BITS(&conn->imc_cces[0].cce_cid)); + LSQ_DEBUGC("recv DCID from client %"CID_FMT, CID_BITS(&conn->imc_path.np_dcid)); + LSQ_DEBUGC("generated SCID %"CID_FMT" at index %u, switching to it", + CID_BITS(&conn->imc_conn.cn_cces[1].cce_cid), 1); + conn->imc_conn.cn_cces[1].cce_flags = CCE_SEQNO | CCE_USED; + conn->imc_conn.cn_cces_mask |= 1u << 1; + conn->imc_conn.cn_cur_cce_idx = 1; + + conn->imc_conn.cn_flags = LSCONN_MINI|LSCONN_IETF|LSCONN_SERVER; + conn->imc_conn.cn_version = version; + + for (i = 0; i < N_ENC_LEVS; ++i) + { + conn->imc_streams[i].mcs_enc_level = i; + conn->imc_stream_ps[i] = &conn->imc_streams[i]; + } + + rand_nybble = lsquic_crand_get_nybble(enpub->enp_crand); + if (rand_nybble == 0) + { + /* Use trechist for about one out of every sixteen connections so + * that the code does not grow stale. + */ + LSQ_DEBUG("using trechist"); + conn->imc_flags |= IMC_TRECHIST; + conn->imc_recvd_packnos.trechist.hist_elems + = malloc(TRECHIST_SIZE * IMICO_N_PNS); + if (!conn->imc_recvd_packnos.trechist.hist_elems) + { + LSQ_WARN("cannot allocate trechist elems"); + return NULL; + } + } + + esfi = &lsquic_enc_session_iquic_ietf_v1; + if (version > LSQVER_ID27) + enc_sess = esfi->esfi_create_server(enpub, &conn->imc_conn, + &packet_in->pi_dcid, conn->imc_stream_ps, &crypto_stream_if, + odcid ? odcid : &conn->imc_cces[0].cce_cid, + &conn->imc_path.np_dcid, + odcid ? &conn->imc_cces[0].cce_cid : NULL); + else + enc_sess = esfi->esfi_create_server(enpub, &conn->imc_conn, + &packet_in->pi_dcid, conn->imc_stream_ps, &crypto_stream_if, + odcid, &conn->imc_path.np_dcid, NULL); + if (!enc_sess) + { + lsquic_malo_put(conn); + return NULL; + } + + conn->imc_enpub = enpub; + conn->imc_expire = packet_in->pi_received + + enpub->enp_settings.es_handshake_to; + if (enpub->enp_settings.es_base_plpmtu) + conn->imc_path.np_pack_size = enpub->enp_settings.es_base_plpmtu; + else if (is_ipv4) + conn->imc_path.np_pack_size = IQUIC_MAX_IPv4_PACKET_SZ; + else + conn->imc_path.np_pack_size = IQUIC_MAX_IPv6_PACKET_SZ; + conn->imc_conn.cn_pf = select_pf_by_ver(version); + conn->imc_conn.cn_esf.i = esfi; + conn->imc_conn.cn_enc_session = enc_sess; + conn->imc_conn.cn_esf_c = &lsquic_enc_session_common_ietf_v1; + TAILQ_INIT(&conn->imc_packets_out); + TAILQ_INIT(&conn->imc_app_packets); + TAILQ_INIT(&conn->imc_crypto_frames); + if (odcid) + imico_peer_addr_validated(conn, "odcid"); +#if LSQUIC_DEVEL + { + const char *const s = getenv("LSQUIC_LOSE_0RTT"); + if (s && atoi(s)) + { + LSQ_DEBUG("will lose 0-RTT packets (via env variable)"); + conn->imc_delayed_packets_count = UCHAR_MAX; + } + } +#endif + + conn->imc_long_header_sz = 1 /* Type */ + + 4 /* Version */ + + 1 /* DCIL */ + + conn->imc_path.np_dcid.len + + 1 /* SCIL */ + + CN_SCID(&conn->imc_conn)->len + + 0 /* HSK packet by server has no token */ + + 2 /* Always use two bytes to encode payload length */ + + 1 /* mini conn packet number < 256 */ + + IQUIC_TAG_LEN + ; + conn->imc_hello_pkt_remain = conn->imc_path.np_pack_size + - conn->imc_long_header_sz - 1 /* token len */; + + LSQ_DEBUG("created mini connection object %p; max packet size=%hu", + conn, conn->imc_path.np_pack_size); + return &conn->imc_conn; +} + + +static void +ietf_mini_conn_ci_client_call_on_new (struct lsquic_conn *lconn) +{ + assert(0); +} + + +static void +ietf_mini_conn_ci_destroy (struct lsquic_conn *lconn) +{ + struct ietf_mini_conn *conn = (struct ietf_mini_conn *) lconn; + struct lsquic_packet_out *packet_out; + struct lsquic_packet_in *packet_in; + struct stream_frame *frame; + + while ((packet_out = TAILQ_FIRST(&conn->imc_packets_out))) + { + TAILQ_REMOVE(&conn->imc_packets_out, packet_out, po_next); + imico_destroy_packet(conn, packet_out); + } + while ((packet_in = TAILQ_FIRST(&conn->imc_app_packets))) + { + TAILQ_REMOVE(&conn->imc_app_packets, packet_in, pi_next); + lsquic_packet_in_put(&conn->imc_enpub->enp_mm, packet_in); + } + while ((frame = TAILQ_FIRST(&conn->imc_crypto_frames))) + { + TAILQ_REMOVE(&conn->imc_crypto_frames, frame, next_frame); + lsquic_packet_in_put(&conn->imc_enpub->enp_mm, frame->packet_in); + lsquic_malo_put(frame); + } + if (lconn->cn_enc_session) + lconn->cn_esf.i->esfi_destroy(lconn->cn_enc_session); + LSQ_DEBUG("ietf_mini_conn_ci_destroyed"); + if (conn->imc_flags & IMC_TRECHIST) + free(conn->imc_recvd_packnos.trechist.hist_elems); + lsquic_malo_put(conn); +} + + +static struct lsquic_engine * +ietf_mini_conn_ci_get_engine (struct lsquic_conn *lconn) +{ + struct ietf_mini_conn *conn = (struct ietf_mini_conn *) lconn; + return conn->imc_enpub->enp_engine; +} + + +static void +ietf_mini_conn_ci_hsk_done (struct lsquic_conn *lconn, + enum lsquic_hsk_status status) +{ + struct ietf_mini_conn *conn = (struct ietf_mini_conn *) lconn; + + switch (status) + { + case LSQ_HSK_OK: + case LSQ_HSK_RESUMED_OK: + conn->imc_flags |= IMC_HSK_OK; + conn->imc_conn.cn_flags |= LSCONN_HANDSHAKE_DONE; + LSQ_DEBUG("handshake OK"); + break; + default: + assert(0); + /* fall-through */ + case LSQ_HSK_FAIL: + conn->imc_flags |= IMC_HSK_FAILED|IMC_ERROR; + LSQ_INFO("handshake failed"); + break; + } +} + + +static void +ietf_mini_conn_ci_tls_alert (struct lsquic_conn *lconn, uint8_t alert) +{ + struct ietf_mini_conn *conn = (struct ietf_mini_conn *) lconn; + LSQ_DEBUG("got TLS alert %"PRIu8, alert); + conn->imc_flags |= IMC_ERROR|IMC_TLS_ALERT; + conn->imc_tls_alert = alert; +} + + +static inline int +imico_can_send (const struct ietf_mini_conn *conn, size_t size) +{ + return (conn->imc_flags & IMC_ADDR_VALIDATED) + || conn->imc_bytes_in * conn->imc_enpub->enp_settings.es_amp_factor + >= conn->imc_bytes_out + size + ; +} + + +/* A mini connection is only tickable if it has unsent packets. This can + * occur when packet sending is delayed. + * + * Otherwise, a mini connection is not tickable: Either there are incoming + * packets, in which case, the connection is going to be ticked, or there is + * an alarm pending, in which case it will be handled via the attq. + */ +static int +ietf_mini_conn_ci_is_tickable (struct lsquic_conn *lconn) +{ + struct ietf_mini_conn *const conn = (struct ietf_mini_conn *) lconn; + const struct lsquic_packet_out *packet_out; + size_t packet_size; + + if ((conn->imc_enpub->enp_flags & ENPUB_CAN_SEND) + && !(conn->imc_flags & IMC_AMP_CAPPED)) + TAILQ_FOREACH(packet_out, &conn->imc_packets_out, po_next) + if (!(packet_out->po_flags & PO_SENT)) + { + packet_size = lsquic_packet_out_total_sz(lconn, packet_out); + return imico_can_send(conn, packet_size); + } + + return 0; +} + + +static lsquic_time_t +imico_rechist_largest_recv (void *rechist_ctx); + + +static int +imico_build_ack_frame (struct ietf_mini_conn *conn, enum packnum_space pns, + lsquic_time_t now, unsigned char *outbuf, + size_t outbuf_sz, lsquic_packno_t *ack2ed) +{ + struct ietf_mini_rechist rechist; + uint64_t ecn_counts_buf[4]; + const uint64_t *ecn_counts; + int not_used_has_missing, len; + if (conn->imc_incoming_ecn) + { + ecn_counts_buf[0] = conn->imc_ecn_counts_in[pns][0]; + ecn_counts_buf[1] = conn->imc_ecn_counts_in[pns][1]; + ecn_counts_buf[2] = conn->imc_ecn_counts_in[pns][2]; + ecn_counts_buf[3] = conn->imc_ecn_counts_in[pns][3]; + ecn_counts = ecn_counts_buf; + } + else + ecn_counts = NULL; + lsquic_imico_rechist_init(&rechist, conn, pns); + len = conn->imc_conn.cn_pf->pf_gen_ack_frame(outbuf, outbuf_sz, + lsquic_imico_rechist_first, + lsquic_imico_rechist_next, imico_rechist_largest_recv, &rechist, + now, ¬_used_has_missing, ack2ed, ecn_counts); + if (len < 0) + { + LSQ_WARN("could not generate ACK frame"); + return -1; + } + EV_LOG_GENERATED_ACK_FRAME(LSQUIC_LOG_CONN_ID, conn->imc_conn.cn_pf, + outbuf, len); + return len; +} + + +static void +remove_ack_frame (struct ietf_mini_conn *conn, + struct lsquic_packet_out *packet_out) +{ + if (packet_out->po_regen_sz == 0) + return; + + int l = packet_out->po_data_sz - packet_out->po_regen_sz + - packet_out->po_padding_sz; + memmove(packet_out->po_data , + packet_out->po_data + packet_out->po_regen_sz, l); + memset(packet_out->po_data + l, 0, packet_out->po_regen_sz); + packet_out->po_padding_sz += packet_out->po_regen_sz; + packet_out->po_regen_sz = 0; +} + + +// static void +// update_packet_ack (struct ietf_mini_conn *conn, enum packnum_space pns, +// struct lsquic_packet_out *packet_out) +// { +// int len, need; +// unsigned char outbuf[1024]; +// size_t outbuf_sz = sizeof(outbuf); +// lsquic_packno_t ack2ed; +// +// len = imico_build_ack_frame(conn, pns, lsquic_time_now(), outbuf, +// outbuf_sz, &ack2ed); +// if (len > packet_out->po_regen_sz + packet_out->po_padding_sz) +// return; +// need = len + !!(packet_out->po_frame_types & (1 << QUIC_FRAME_PING)); +// LSQ_DEBUG("update leading ACK frame for packet %"PRIu64 +// ", regen_sz: %hd, padding_sz: %hd, need: %d, len: %d", +// packet_out->po_packno, packet_out->po_regen_sz, +// packet_out->po_padding_sz, need, len); +// +// if (need != packet_out->po_regen_sz) +// { +// int l = packet_out->po_data_sz - packet_out->po_regen_sz +// - packet_out->po_padding_sz; +// memmove(packet_out->po_data + need, +// packet_out->po_data + packet_out->po_regen_sz, l); +// if (packet_out->po_padding_sz) +// { +// if (need < packet_out->po_regen_sz) +// memset(packet_out->po_data + need + l, 0, +// packet_out->po_regen_sz - need); +// packet_out->po_padding_sz += packet_out->po_regen_sz - need; +// } +// else +// packet_out->po_data_sz -= packet_out->po_regen_sz - need; +// packet_out->po_regen_sz = need; +// } +// memmove(packet_out->po_data, outbuf, len); +// packet_out->po_frame_types |= 1 << QUIC_FRAME_ACK; +// packet_out->po_ack2ed = ack2ed; +// } + + +static struct lsquic_packet_out * +ietf_mini_conn_ci_next_packet_to_send (struct lsquic_conn *lconn, + const struct to_coal *to_coal) +{ + struct ietf_mini_conn *conn = (struct ietf_mini_conn *) lconn; + struct lsquic_packet_out *packet_out; + size_t packet_size; + + TAILQ_FOREACH(packet_out, &conn->imc_packets_out, po_next) + { + if (packet_out->po_flags & PO_SENT) + continue; + /* [draft-ietf-quic-transport-32] Section 14.1: + " a server MUST expand the payload of all UDP datagrams carrying + " ack-eliciting Initial packets to at least the smallest allowed + " maximum datagram size of 1200 bytes. + */ + if (packet_out->po_header_type == HETY_INITIAL) + { + if (packet_out->po_frame_types & (1 << QUIC_FRAME_ACK) + && packet_out->po_retx_cnt > 0) + { + remove_ack_frame(conn, packet_out); + } + + if (packet_out->po_retx_cnt > 0 + && !imico_can_send(conn, IQUIC_MAX_IPv4_PACKET_SZ)) + { + conn->imc_flags |= IMC_AMP_CAPPED; + LSQ_DEBUG("cannot send INIT packet #%"PRIu64" without " + "enough quota", packet_out->po_packno); + return NULL; + } + // NOTE: do not padd INIT packet only, here, instead pad the coalesced + // later, can save one packet, more efficient. + // if (!(packet_out->po_frame_types & (1 << QUIC_FRAME_PADDING)) + // && (packet_out->po_frame_types & IQUIC_FRAME_ACKABLE_MASK) + // && IQUIC_MIN_INIT_PACKET_SZ > packet_out->po_data_sz) + // { + // size_t pad_size; + // + // pad_size = IQUIC_MIN_INIT_PACKET_SZ - packet_out->po_data_sz; + // LSQ_DEBUG("generated PADDING frame: %zd bytes for packet %"PRIu64, + // pad_size, packet_out->po_packno); + // imico_zero_pad(packet_out, pad_size); + // } + } + packet_size = lsquic_packet_out_total_sz(lconn, packet_out); + if (!(to_coal + && (packet_size + to_coal->prev_sz_sum + > conn->imc_path.np_pack_size + || !lsquic_packet_out_equal_dcids(to_coal->prev_packet, packet_out)) + )) + { + if (!imico_can_send(conn, packet_size)) + { + conn->imc_flags |= IMC_AMP_CAPPED; + LSQ_DEBUG("cannot send packet %"PRIu64" of size %zu: client " + "address has not been validated", packet_out->po_packno, + packet_size); + return NULL; + } + packet_out->po_flags |= PO_SENT; + conn->imc_bytes_out += packet_size; + if (!to_coal) + LSQ_DEBUG("packet_to_send: %"PRIu64, packet_out->po_packno); + else + LSQ_DEBUG("packet_to_send: %"PRIu64" (coalesced)", + packet_out->po_packno); + return packet_out; + } + else + return NULL; + } + + return NULL; +} + + +static int +imico_calc_retx_timeout (const struct ietf_mini_conn *conn) +{ + lsquic_time_t to; + to = lsquic_rtt_stats_get_srtt(&conn->imc_rtt_stats); + if (to) + { + to += to / 2; + if (to < 10000) + to = 10000; + } + else + to = 300000; + return to; +} + + +static lsquic_time_t +ietf_mini_conn_ci_next_tick_time (struct lsquic_conn *lconn, unsigned *why) +{ + struct ietf_mini_conn *conn = (struct ietf_mini_conn *) lconn; + const struct lsquic_packet_out *packet_out; + lsquic_time_t exp_time, retx_time; + + exp_time = conn->imc_expire; + + TAILQ_FOREACH(packet_out, &conn->imc_packets_out, po_next) + if (packet_out->po_flags & PO_SENT) + { + retx_time = packet_out->po_sent + (imico_calc_retx_timeout(conn) + << (packet_out->po_retx_cnt >> 1)); + if (retx_time < exp_time) + { + *why = N_AEWS + AL_RETX_HSK; + return retx_time; + } + else + break; + } + + *why = AEW_MINI_EXPIRE; + return exp_time; +} + + +#define IMICO_PROC_FRAME_ARGS \ + struct ietf_mini_conn *conn, struct lsquic_packet_in *packet_in, \ + const unsigned char *p, size_t len + + +static void +imico_dispatch_stream_events (struct ietf_mini_conn *conn) +{ + enum enc_level i; + + for (i = 0; i < N_ENC_LEVS; ++i) + if ((conn->imc_streams[i].mcs_flags & (MCS_CREATED|MCS_WANTREAD)) + == (MCS_CREATED|MCS_WANTREAD)) + { + LSQ_DEBUG("dispatch read events on level #%u", i); + lsquic_mini_cry_sm_if.on_read((void *) &conn->imc_streams[i], + conn->imc_conn.cn_enc_session); + } + + for (i = 0; i < N_ENC_LEVS; ++i) + if ((conn->imc_streams[i].mcs_flags & (MCS_CREATED|MCS_WANTWRITE)) + == (MCS_CREATED|MCS_WANTWRITE)) + { + LSQ_DEBUG("dispatch write events on level #%u", i); + lsquic_mini_cry_sm_if.on_write((void *) &conn->imc_streams[i], + conn->imc_conn.cn_enc_session); + } +} + + +static int +imico_stash_stream_frame (struct ietf_mini_conn *conn, + enum enc_level enc_level, struct lsquic_packet_in *packet_in, + const struct stream_frame *frame) +{ + struct stream_frame *copy; + + if (conn->imc_n_crypto_frames >= IMICO_MAX_STASHED_FRAMES) + { + LSQ_INFO("cannot stash more CRYPTO frames, at %hhu already, while max " + "is %u", conn->imc_n_crypto_frames, IMICO_MAX_STASHED_FRAMES); + return -1; + } + + if (conn->imc_crypto_frames_sz + DF_SIZE(frame) > IMICO_MAX_BUFFERED_CRYPTO) + { + LSQ_INFO("cannot stash more than %u bytes of CRYPTO frames", + IMICO_MAX_BUFFERED_CRYPTO); + return -1; + } + + copy = lsquic_malo_get(conn->imc_enpub->enp_mm.malo.stream_frame); + if (!copy) + { + LSQ_INFO("could not allocate stream frame for stashing"); + return -1; + } + + *copy = *frame; + copy->packet_in = lsquic_packet_in_get(packet_in); + copy->stream_id = enc_level; + TAILQ_INSERT_TAIL(&conn->imc_crypto_frames, copy, next_frame); + ++conn->imc_n_crypto_frames; + conn->imc_crypto_frames_sz += DF_SIZE(frame); + return 0; +} + + +static unsigned +imico_process_crypto_frame (IMICO_PROC_FRAME_ARGS) +{ + int parsed_len; + enum enc_level enc_level, i; + struct stream_frame stream_frame; + + parsed_len = conn->imc_conn.cn_pf->pf_parse_crypto_frame(p, len, + &stream_frame); + if (parsed_len < 0) + { + conn->imc_flags |= IMC_PARSE_FAILED; + return 0; + } + + enc_level = lsquic_packet_in_enc_level(packet_in); + EV_LOG_CRYPTO_FRAME_IN(LSQUIC_LOG_CONN_ID, &stream_frame, enc_level); + + if (conn->imc_streams[enc_level].mcs_read_off >= DF_OFF(&stream_frame) + && conn->imc_streams[enc_level].mcs_read_off < DF_END(&stream_frame)) + LSQ_DEBUG("Got CRYPTO frame for enc level #%u", enc_level); + else if (conn->imc_streams[enc_level].mcs_read_off < DF_OFF(&stream_frame)) + { + LSQ_DEBUG("Can't read CRYPTO frame on enc level #%u at offset %"PRIu64 + " yet -- stash", enc_level, DF_OFF(&stream_frame)); + if (0 == imico_stash_stream_frame(conn, enc_level, packet_in, + &stream_frame)) + return parsed_len; + else + return 0; + } + else + { + LSQ_DEBUG("Got duplicate CRYPTO frame for enc level #%u -- ignore", + enc_level); + return parsed_len; + } + + if (!(conn->imc_flags & IMC_ENC_SESS_INITED)) + { + if (0 != conn->imc_conn.cn_esf.i->esfi_init_server( + conn->imc_conn.cn_enc_session)) + return 0; + conn->imc_flags |= IMC_ENC_SESS_INITED; + } + + if (!(conn->imc_streams[enc_level].mcs_flags & MCS_CREATED)) + { + LSQ_DEBUG("creating stream on level #%u", enc_level); + conn->imc_streams[enc_level].mcs_flags |= MCS_CREATED; + lsquic_mini_cry_sm_if.on_new_stream(conn->imc_conn.cn_enc_session, + (void *) &conn->imc_streams[enc_level]); + } + + /* Assume that receiving a CRYPTO frame at a higher level means that we + * no longer want to read from a lower level. + */ + for (i = 0; i < enc_level; ++i) + conn->imc_streams[i].mcs_flags &= ~MCS_WANTREAD; + + conn->imc_last_in.frame = &stream_frame; + conn->imc_last_in.enc_level = enc_level; + imico_dispatch_stream_events(conn); + conn->imc_last_in.frame = NULL; + + if (DF_ROFF(&stream_frame) < DF_END(&stream_frame)) + { + /* This is an odd condition, but let's handle it just in case */ + LSQ_DEBUG("New CRYPTO frame on enc level #%u not fully read -- stash", + enc_level); + if (0 != imico_stash_stream_frame(conn, enc_level, packet_in, + &stream_frame)) + return 0; + } + + + return parsed_len; +} + + +static ptrdiff_t +imico_count_zero_bytes (const unsigned char *p, size_t len) +{ + const unsigned char *const end = p + len; + while (p < end && 0 == *p) + ++p; + return len - (end - p); +} + + +static unsigned +imico_process_padding_frame (IMICO_PROC_FRAME_ARGS) +{ + len = (size_t) imico_count_zero_bytes(p, len); + EV_LOG_PADDING_FRAME_IN(LSQUIC_LOG_CONN_ID, len); + return len; +} + + +static void +imico_take_rtt_sample (struct ietf_mini_conn *conn, + const struct lsquic_packet_out *packet_out, + lsquic_time_t now, lsquic_time_t lack_delta) +{ + assert(packet_out->po_sent); + lsquic_time_t measured_rtt = now - packet_out->po_sent; + if (lack_delta < measured_rtt) + { + lsquic_rtt_stats_update(&conn->imc_rtt_stats, measured_rtt, lack_delta); + LSQ_DEBUG("srtt: %"PRIu64" usec, var: %"PRIu64, + lsquic_rtt_stats_get_srtt(&conn->imc_rtt_stats), + lsquic_rtt_stats_get_rttvar(&conn->imc_rtt_stats)); + } +} + + +static unsigned +imico_process_ack_frame (IMICO_PROC_FRAME_ARGS) +{ + int parsed_len; + unsigned n; + lsquic_packet_out_t *packet_out, *next; + struct ack_info *acki; + lsquic_packno_t packno; + lsquic_time_t warn_time; + packno_set_t acked; + enum packnum_space pns; + uint8_t ack_exp; + + if (conn->imc_flags & IMC_HAVE_TP) + ack_exp = conn->imc_ack_exp; + else + ack_exp = TP_DEF_ACK_DELAY_EXP; /* Odd: no transport params yet? */ + acki = conn->imc_enpub->enp_mm.acki; + parsed_len = conn->imc_conn.cn_pf->pf_parse_ack_frame(p, len, acki, + ack_exp); + if (parsed_len < 0) + { + conn->imc_flags |= IMC_PARSE_FAILED; + return 0; + } + + pns = lsquic_hety2pns[ packet_in->pi_header_type ]; + acked = 0; + + for (n = 0; n < acki->n_ranges; ++n) + { + if (acki->ranges[n].high <= MAX_PACKETS) + { + acked |= (1ULL << acki->ranges[n].high) + | ((1ULL << acki->ranges[n].high) - 1); + acked &= ~((1ULL << acki->ranges[n].low) - 1); + } + else + { + packno = acki->ranges[n].high; + goto err_never_sent; + } + } + if (acked & ~conn->imc_sent_packnos) + { + packno = highest_bit_set(acked & ~conn->imc_sent_packnos); + goto err_never_sent; + } + + EV_LOG_ACK_FRAME_IN(LSQUIC_LOG_CONN_ID, acki); + for (packet_out = TAILQ_FIRST(&conn->imc_packets_out); packet_out; + packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + if ((1ULL << packet_out->po_packno) & acked) + { + assert(lsquic_packet_out_pns(packet_out) == pns); + LSQ_DEBUG("Got ACK for packet %"PRIu64, packet_out->po_packno); + if (packet_out->po_packno == largest_acked(acki)) + imico_take_rtt_sample(conn, packet_out, + packet_in->pi_received, acki->lack_delta); + TAILQ_REMOVE(&conn->imc_packets_out, packet_out, po_next); + imico_destroy_packet(conn, packet_out); + } + } + + if (conn->imc_sent_packnos & ~conn->imc_acked_packnos[pns] & acked) + { + LSQ_DEBUG("Newly acked packets, reset handshake count"); + conn->imc_hsk_count = 0; + } + + conn->imc_acked_packnos[pns] |= acked; + + return parsed_len; + + err_never_sent: + warn_time = lsquic_time_now(); + if (0 == conn->imc_enpub->enp_last_warning[WT_ACKPARSE_MINI] + || conn->imc_enpub->enp_last_warning[WT_ACKPARSE_MINI] + + WARNING_INTERVAL < warn_time) + { + conn->imc_enpub->enp_last_warning[WT_ACKPARSE_MINI] = warn_time; + LSQ_WARN("packet %"PRIu64" (pns: %u) was never sent", packno, pns); + } + else + LSQ_DEBUG("packet %"PRIu64" (pns: %u) was never sent", packno, pns); + return 0; +} + + +static unsigned +imico_process_ping_frame (IMICO_PROC_FRAME_ARGS) +{ + LSQ_DEBUG("got a PING frame, do nothing"); + EV_LOG_PING_FRAME_IN(LSQUIC_LOG_CONN_ID); + return 1; +} + + +static unsigned +imico_process_connection_close_frame (IMICO_PROC_FRAME_ARGS) +{ + struct lsquic_packet_out *packet_out; + uint64_t error_code; + uint16_t reason_len; + uint8_t reason_off; + int parsed_len, app_error; + + while ((packet_out = TAILQ_FIRST(&conn->imc_packets_out))) + { + TAILQ_REMOVE(&conn->imc_packets_out, packet_out, po_next); + imico_destroy_packet(conn, packet_out); + } + conn->imc_flags |= IMC_CLOSE_RECVD; + parsed_len = conn->imc_conn.cn_pf->pf_parse_connect_close_frame(p, len, + &app_error, &error_code, &reason_len, &reason_off); + if (parsed_len < 0) + { + conn->imc_flags |= IMC_PARSE_FAILED; + return 0; + } + EV_LOG_CONNECTION_CLOSE_FRAME_IN(LSQUIC_LOG_CONN_ID, error_code, + (int) reason_len, (const char *) p + reason_off); + LSQ_INFO("Received CONNECTION_CLOSE frame (%s-level code: %"PRIu64"; " + "reason: %.*s)", app_error ? "application" : "transport", + error_code, (int) reason_len, (const char *) p + reason_off); + return 0; /* This shuts down the connection */ +} + + +static unsigned +imico_process_invalid_frame (IMICO_PROC_FRAME_ARGS) +{ + LSQ_DEBUG("invalid frame %u (%s)", p[0], + frame_type_2_str[ conn->imc_conn.cn_pf->pf_parse_frame_type(p, len) ]); + return 0; +} + + +static unsigned +imico_process_invalid_frame_pv (IMICO_PROC_FRAME_ARGS) +{ + LSQ_DEBUG("invalid frame %u (%s)", p[0], + frame_type_2_str[ conn->imc_conn.cn_pf->pf_parse_frame_type(p, len) ]); + ietf_mini_conn_ci_abort_error(&conn->imc_conn, 0, TEC_PROTOCOL_VIOLATION, + "protocol violation detected while processing frame"); + return 0; +} + + +static unsigned (*const imico_process_frames[N_QUIC_FRAMES]) + (IMICO_PROC_FRAME_ARGS) = +{ + [QUIC_FRAME_PADDING] = imico_process_padding_frame, + [QUIC_FRAME_CRYPTO] = imico_process_crypto_frame, + [QUIC_FRAME_ACK] = imico_process_ack_frame, + [QUIC_FRAME_PING] = imico_process_ping_frame, + [QUIC_FRAME_CONNECTION_CLOSE] = imico_process_connection_close_frame, + /* Some of them are invalid, while others are unexpected. We treat + * them the same: handshake cannot proceed. + */ + [QUIC_FRAME_RST_STREAM] = imico_process_invalid_frame, + [QUIC_FRAME_MAX_DATA] = imico_process_invalid_frame, + [QUIC_FRAME_MAX_STREAM_DATA] = imico_process_invalid_frame, + [QUIC_FRAME_MAX_STREAMS] = imico_process_invalid_frame, + [QUIC_FRAME_BLOCKED] = imico_process_invalid_frame, + [QUIC_FRAME_STREAM_BLOCKED] = imico_process_invalid_frame, + [QUIC_FRAME_STREAMS_BLOCKED] = imico_process_invalid_frame, + [QUIC_FRAME_NEW_CONNECTION_ID] = imico_process_invalid_frame_pv, + [QUIC_FRAME_STOP_SENDING] = imico_process_invalid_frame, + [QUIC_FRAME_PATH_CHALLENGE] = imico_process_invalid_frame, + [QUIC_FRAME_PATH_RESPONSE] = imico_process_invalid_frame, + /* STREAM frame can only come in the App PNS and we delay those packets: */ + [QUIC_FRAME_STREAM] = imico_process_invalid_frame, + [QUIC_FRAME_RETIRE_CONNECTION_ID] = imico_process_invalid_frame_pv, + [QUIC_FRAME_NEW_TOKEN] = imico_process_invalid_frame_pv, + [QUIC_FRAME_HANDSHAKE_DONE] = imico_process_invalid_frame_pv, + [QUIC_FRAME_ACK_FREQUENCY] = imico_process_invalid_frame, + [QUIC_FRAME_TIMESTAMP] = imico_process_invalid_frame, +}; + + +static unsigned +imico_process_packet_frame (struct ietf_mini_conn *conn, + struct lsquic_packet_in *packet_in, const unsigned char *p, size_t len) +{ + enum enc_level enc_level; + enum quic_frame_type type; + + enc_level = lsquic_packet_in_enc_level(packet_in); + type = conn->imc_conn.cn_pf->pf_parse_frame_type(p, len); + if (lsquic_legal_frames_by_level[conn->imc_conn.cn_version][enc_level] + & (1 << type)) + { + packet_in->pi_frame_types |= 1 << type; + return imico_process_frames[type](conn, packet_in, p, len); + } + else + { + LSQ_DEBUG("invalid frame %u at encryption level %s", type, + lsquic_enclev2str[enc_level]); + if (type == QUIC_FRAME_INVALID) + ietf_mini_conn_ci_abort_error(&conn->imc_conn, 0, + TEC_FRAME_ENCODING_ERROR, + "invalid frame %u at encryption level %s", + type, lsquic_enclev2str[enc_level]); + else + ietf_mini_conn_ci_abort_error(&conn->imc_conn, 0, + TEC_PROTOCOL_VIOLATION, + "protcol violation for invalid frame %u at encryption level %s", + type, lsquic_enclev2str[enc_level]); + return 0; + } +} + + +static int +imico_parse_regular_packet (struct ietf_mini_conn *conn, + struct lsquic_packet_in *packet_in) +{ + const unsigned char *p, *pend; + unsigned len; + + p = packet_in->pi_data + packet_in->pi_header_sz; + pend = packet_in->pi_data + packet_in->pi_data_sz; + + if (p >= pend) + { + ietf_mini_conn_ci_abort_error(&conn->imc_conn, 0, + TEC_PROTOCOL_VIOLATION, + "packet %"PRIu64" has no frames", + packet_in->pi_packno); + return -1; + } + while (p < pend) + { + len = imico_process_packet_frame(conn, packet_in, p, pend - p); + if (len > 0) + p += len; + else + return -1; + } + + return 0; +} + + +static unsigned +highest_bit_set (unsigned long long sz) +{ +#if __GNUC__ + unsigned clz = __builtin_clzll(sz); + return 63 - clz; +#else + unsigned long y; + unsigned n; + n = 64; + y = sz >> 32; if (y) { n -= 32; sz = y; } + y = sz >> 16; if (y) { n -= 16; sz = y; } + y = sz >> 8; if (y) { n -= 8; sz = y; } + y = sz >> 4; if (y) { n -= 4; sz = y; } + y = sz >> 2; if (y) { n -= 2; sz = y; } + y = sz >> 1; if (y) return 63 - n + 2; + return 63 - n + sz; +#endif +} + + +static void +ignore_init (struct ietf_mini_conn *conn) +{ + struct lsquic_packet_out *packet_out, *next; + unsigned count; + + conn->imc_flags |= IMC_IGNORE_INIT; + conn->imc_flags &= ~(IMC_QUEUED_ACK_INIT << PNS_INIT); + + count = 0; + for (packet_out = TAILQ_FIRST(&conn->imc_packets_out); packet_out; + packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + if (PNS_INIT == lsquic_packet_out_pns(packet_out)) + { + TAILQ_REMOVE(&conn->imc_packets_out, packet_out, po_next); + imico_destroy_packet(conn, packet_out); + ++count; + } + } + + LSQ_DEBUG("henceforth, no Initial packets shall be sent or received; " + "destroyed %u packet%.*s", count, count != 1, "s"); + + int ext_to = conn->imc_enpub->enp_settings.es_idle_timeout * 1000000 + - conn->imc_enpub->enp_settings.es_handshake_to; + if (ext_to > 0) + { + conn->imc_expire += ext_to; + LSQ_DEBUG("extend mini-conn expire time to %d seconds", + conn->imc_enpub->enp_settings.es_idle_timeout); + } +} + + +static void +imico_maybe_delay_processing (struct ietf_mini_conn *conn, + struct lsquic_packet_in *packet_in) +{ + unsigned max_delayed; + + if (conn->imc_flags & IMC_ADDR_VALIDATED) + max_delayed = IMICO_MAX_DELAYED_PACKETS_VALIDATED; + else + max_delayed = IMICO_MAX_DELAYED_PACKETS_UNVALIDATED; + + if (conn->imc_delayed_packets_count < max_delayed) + { + ++conn->imc_delayed_packets_count; + lsquic_packet_in_upref(packet_in); + TAILQ_INSERT_TAIL(&conn->imc_app_packets, packet_in, pi_next); + LSQ_DEBUG("delay processing of packet (now delayed %hhu)", + conn->imc_delayed_packets_count); + } + else + LSQ_DEBUG("drop packet, already delayed %hhu packets", + conn->imc_delayed_packets_count); +} + + +/* [draft-ietf-quic-transport-30] Section 8.1: + " Additionally, a server MAY consider the client address validated if + " the client uses a connection ID chosen by the server and the + " connection ID contains at least 64 bits of entropy. + * + * We use RAND_bytes() to generate SCIDs, so it's all entropy. + */ +static void +imico_maybe_validate_by_dcid (struct ietf_mini_conn *conn, + const lsquic_cid_t *dcid) +{ + unsigned i; + + if (dcid->len >= 8) + /* Generic code with unnecessary loop as future-proofing */ + for (i = 0; i < conn->imc_conn.cn_n_cces; ++i) + if ((conn->imc_conn.cn_cces_mask & (1 << i)) + && (conn->imc_conn.cn_cces[i].cce_flags & CCE_SEQNO) + && LSQUIC_CIDS_EQ(&conn->imc_conn.cn_cces[i].cce_cid, dcid)) + { + imico_peer_addr_validated(conn, "dcid/scid + entropy"); + return; + } +} + + +static int +imico_received_packet_is_dup (struct ietf_mini_conn *conn, + enum packnum_space pns, lsquic_packno_t packno) +{ + if (conn->imc_flags & IMC_TRECHIST) + return lsquic_trechist_contains( + conn->imc_recvd_packnos.trechist.hist_masks[pns], + conn->imc_recvd_packnos.trechist.hist_elems + + TRECHIST_MAX_RANGES * pns, packno); + else + return !!(conn->imc_recvd_packnos.bitmasks[pns] & (1ULL << packno)); +} + + +static int +imico_packno_is_largest (struct ietf_mini_conn *conn, + enum packnum_space pns, lsquic_packno_t packno) +{ + if (conn->imc_flags & IMC_TRECHIST) + return 0 == conn->imc_recvd_packnos.trechist.hist_masks[pns] + || packno > lsquic_trechist_max( + conn->imc_recvd_packnos.trechist.hist_masks[pns], + conn->imc_recvd_packnos.trechist.hist_elems + + TRECHIST_MAX_RANGES * pns); + else + return 0 == conn->imc_recvd_packnos.bitmasks[pns] + || packno > highest_bit_set(conn->imc_recvd_packnos.bitmasks[pns]); +} + + +static void +imico_record_recvd_packno (struct ietf_mini_conn *conn, + enum packnum_space pns, lsquic_packno_t packno) +{ + if (conn->imc_flags & IMC_TRECHIST) + { + if (0 != lsquic_trechist_insert( + &conn->imc_recvd_packnos.trechist.hist_masks[pns], + conn->imc_recvd_packnos.trechist.hist_elems + + TRECHIST_MAX_RANGES * pns, packno)) + { + LSQ_INFO("too many ranges for trechist to hold or range too wide"); + conn->imc_flags |= IMC_ERROR; + } + } + else + conn->imc_recvd_packnos.bitmasks[pns] |= 1ULL << packno; +} + + +static int +imico_switch_to_trechist (struct ietf_mini_conn *conn) +{ + uint32_t masks[IMICO_N_PNS]; + enum packnum_space pns; + struct trechist_elem *elems; + struct ietf_mini_rechist iter; + + elems = malloc(TRECHIST_SIZE * N_PNS); + if (!elems) + { + LSQ_WARN("cannot allocate trechist elems"); + return -1; + } + + for (pns = 0; pns < IMICO_N_PNS; ++pns) + if (conn->imc_recvd_packnos.bitmasks[pns]) + { + lsquic_imico_rechist_init(&iter, conn, pns); + lsquic_trechist_copy_ranges(&masks[pns], + elems + TRECHIST_MAX_RANGES * pns, &iter, + lsquic_imico_rechist_first, + lsquic_imico_rechist_next); + } + else + masks[pns] = 0; + + memcpy(conn->imc_recvd_packnos.trechist.hist_masks, masks, sizeof(masks)); + conn->imc_recvd_packnos.trechist.hist_elems = elems; + conn->imc_flags |= IMC_TRECHIST; + LSQ_DEBUG("switched to trechist"); + return 0; +} + + +static int +imico_generate_handshake_done (struct ietf_mini_conn *conn); + + +/* Only a single packet is supported */ +static void +ietf_mini_conn_ci_packet_in (struct lsquic_conn *lconn, + struct lsquic_packet_in *packet_in) +{ + struct ietf_mini_conn *conn = (struct ietf_mini_conn *) lconn; + enum dec_packin dec_packin; + enum packnum_space pns; + + /* Update "bytes in" count as early as possible. From + * [draft-ietf-quic-transport-28] Section 8.1: + " For the purposes of + " avoiding amplification prior to address validation, servers MUST + " count all of the payload bytes received in datagrams that are + " uniquely attributed to a single connection. This includes datagrams + " that contain packets that are successfully processed and datagrams + " that contain packets that are all discarded. + */ + conn->imc_bytes_in += packet_in->pi_data_sz; + conn->imc_flags &= ~IMC_AMP_CAPPED; + + if (conn->imc_flags & IMC_ERROR) + { + LSQ_DEBUG("ignore incoming packet: connection is in error state"); + return; + } + + if (!(conn->imc_flags & (IMC_ADDR_VALIDATED | IMC_PATH_CHANGED))) + imico_maybe_validate_by_dcid(conn, &packet_in->pi_dcid); + + pns = lsquic_hety2pns[ packet_in->pi_header_type ]; + if (pns == PNS_INIT) + { + if (conn->imc_flags & IMC_IGNORE_INIT) + { + LSQ_DEBUG("ignore init packet"); /* Don't bother decrypting */ + return; + } + if (packet_in->pi_pkt_size + && packet_in->pi_pkt_size < IQUIC_MIN_INIT_PACKET_SZ) + { + LSQ_DEBUG("ignore init packet smaller than minimum size required"); + /* Don't bother decrypting */ + return; + } + } + + dec_packin = lconn->cn_esf_c->esf_decrypt_packet(lconn->cn_enc_session, + conn->imc_enpub, &conn->imc_conn, packet_in); + switch (dec_packin) + { + case DECPI_OK: + break; + case DECPI_VIOLATION: + ietf_mini_conn_ci_abort_error(lconn, 0, TEC_PROTOCOL_VIOLATION, + "protocol violation detected while decrypting packet"); + return; + case DECPI_NOT_YET: + imico_maybe_delay_processing(conn, packet_in); + return; + case DECPI_BADCRYPT: + if (packet_in->pi_flags & PI_FIRST_INIT) + { + LSQ_DEBUG("possible packet corruption, destroy mini-conn."); + conn->imc_flags |= IMC_ERROR | IMC_CLOSE_RECVD; + /* avoid adding CID to black list */ + conn->imc_conn.cn_flags |= LSCONN_NO_BL; + } + //fall through + default: + LSQ_DEBUG("could not decrypt packet"); + return; + } + + EV_LOG_PACKET_IN(LSQUIC_LOG_CONN_ID, packet_in); + + if (pns == PNS_APP) + { + imico_maybe_delay_processing(conn, packet_in); + return; + } + else if (pns == PNS_HSK) + { + if (!LSQUIC_CIDS_EQ(CN_SCID(&conn->imc_conn), &packet_in->pi_dcid)) + { + ietf_mini_conn_ci_abort_error(lconn, 0, TEC_PROTOCOL_VIOLATION, + "protocol violation detected bad dcid for HSK pns"); + return; + } + if (!(conn->imc_flags & (IMC_ADDR_VALIDATED | IMC_PATH_CHANGED))) + imico_peer_addr_validated(conn, "handshake PNS"); + } + + if (((conn->imc_flags >> IMCBIT_PNS_BIT_SHIFT) & 3) < pns) + { + conn->imc_flags &= ~(3 << IMCBIT_PNS_BIT_SHIFT); + conn->imc_flags |= pns << IMCBIT_PNS_BIT_SHIFT; + } + + if (pns == PNS_HSK && !(conn->imc_flags & IMC_IGNORE_INIT)) + ignore_init(conn); + + if (packet_in->pi_packno > MAX_PACKETS + && !(conn->imc_flags & IMC_TRECHIST)) + { + if (0 != imico_switch_to_trechist(conn)) + return; + } + + if (imico_received_packet_is_dup(conn, pns, packet_in->pi_packno)) + { + LSQ_DEBUG("duplicate packet %"PRIu64, packet_in->pi_packno); + return; + } + + /* Update receive history before processing the packet: if there is an + * error, the connection is terminated and recording this packet number + * is helpful when it is printed along with other diagnostics in dtor. + */ + if (imico_packno_is_largest(conn, pns, packet_in->pi_packno)) + conn->imc_largest_recvd[pns] = packet_in->pi_received; + imico_record_recvd_packno(conn, pns, packet_in->pi_packno); + + if (!(conn->imc_flags & (IMC_QUEUED_ACK_INIT << pns))) + { + LSQ_DEBUG("queued ACK in %s", lsquic_pns2str[pns]); + conn->imc_flags |= IMC_QUEUED_ACK_INIT << pns; + } + ++conn->imc_ecn_counts_in[pns][ lsquic_packet_in_ecn(packet_in) ]; + conn->imc_incoming_ecn <<= 1; + conn->imc_incoming_ecn |= lsquic_packet_in_ecn(packet_in) != ECN_NOT_ECT; + + if (0 != imico_parse_regular_packet(conn, packet_in)) + { + LSQ_DEBUG("connection is now in error state"); + conn->imc_flags |= IMC_ERROR; + return; + } + if (conn->imc_flags & IMC_HSK_OK) + { + if (lconn->cn_esf.i->esfi_in_init(lconn->cn_enc_session)) + LSQ_DEBUG("still in init, defer HANDSHAKE_DONE"); + else if (0 != imico_generate_handshake_done(conn)) + conn->imc_flags |= IMC_ERROR; + } +} + + +static void +ietf_mini_conn_ci_packet_sent (struct lsquic_conn *lconn, + struct lsquic_packet_out *packet_out) +{ + struct ietf_mini_conn *conn = (struct ietf_mini_conn *) lconn; + conn->imc_sent_packnos |= 1ULL << packet_out->po_packno; + conn->imc_ecn_packnos |= !!lsquic_packet_out_ecn(packet_out) + << packet_out->po_packno; +#if 0 + if (packet_out->po_frame_types & (1 << QUIC_FRAME_ACK)) + { + assert(mc->mc_flags & MC_UNSENT_ACK); + mc->mc_flags &= ~MC_UNSENT_ACK; + } +#endif + if (packet_out->po_header_type == HETY_HANDSHAKE) + conn->imc_flags |= IMC_HSK_PACKET_SENT; + LSQ_DEBUG("%s: packet %"PRIu64" sent", __func__, packet_out->po_packno); +} + + +static void +ietf_mini_conn_ci_packet_not_sent (struct lsquic_conn *lconn, + struct lsquic_packet_out *packet_out) +{ + struct ietf_mini_conn *conn = (struct ietf_mini_conn *) lconn; + size_t packet_size; + + packet_out->po_flags &= ~PO_SENT; + packet_size = lsquic_packet_out_total_sz(lconn, packet_out); + conn->imc_bytes_out -= packet_size; + LSQ_DEBUG("%s: packet %"PRIu64" not sent", __func__, packet_out->po_packno); +} + + +static inline void +imico_return_enc_data (struct ietf_mini_conn *conn, + struct lsquic_packet_out *packet_out) +{ + conn->imc_enpub->enp_pmi->pmi_return(conn->imc_enpub->enp_pmi_ctx, + conn->imc_path.np_peer_ctx, packet_out->po_enc_data, + lsquic_packet_out_ipv6(packet_out)); + packet_out->po_flags &= ~PO_ENCRYPTED; + packet_out->po_enc_data = NULL; +} + + +static inline int +imico_repackage_packet (struct ietf_mini_conn *conn, + struct lsquic_packet_out *packet_out) +{ + const lsquic_packno_t oldno = packet_out->po_packno; + const lsquic_packno_t packno = conn->imc_next_packno++; + if (packno > MAX_PACKETS) + return -1; + + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "schedule resend, repackage packet " + "#%"PRIu64" -> #%"PRIu64, oldno, packno); + packet_out->po_packno = packno; + packet_out->po_flags &= ~PO_SENT; + ++packet_out->po_retx_cnt; + lsquic_packet_out_set_ecn(packet_out, imico_get_ecn(conn)); + if (packet_out->po_flags & PO_ENCRYPTED) + imico_return_enc_data(conn, packet_out); + TAILQ_INSERT_TAIL(&conn->imc_packets_out, packet_out, po_next); + return 0; +} + + +static int +imico_handle_losses_and_have_unsent (struct ietf_mini_conn *conn, + lsquic_time_t now) +{ + TAILQ_HEAD(, lsquic_packet_out) lost_packets = + TAILQ_HEAD_INITIALIZER(lost_packets); + const struct lsquic_conn *const lconn = &conn->imc_conn; + lsquic_packet_out_t *packet_out, *next; + lsquic_time_t retx_to = 0; + unsigned n_to_send = 0; + size_t packet_size; + + for (packet_out = TAILQ_FIRST(&conn->imc_packets_out); packet_out; + packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + if (packet_out->po_flags & PO_SENT) + { + if (packet_out->po_frame_types & IQUIC_FRAME_RETX_MASK) + { + if (0 == retx_to) + retx_to = imico_calc_retx_timeout(conn); + if (conn->imc_hsk_count == 0) + packet_out->po_retx_cnt = 0; + if (packet_out->po_sent + + (retx_to << (packet_out->po_retx_cnt >> 1)) < now) + { + LSQ_DEBUG("packet %"PRIu64" has been lost (rto: %"PRIu64")", + packet_out->po_packno, + retx_to << (packet_out->po_retx_cnt >> 1)); + TAILQ_REMOVE(&conn->imc_packets_out, packet_out, po_next); + TAILQ_INSERT_TAIL(&lost_packets, packet_out, po_next); + } + } + else + { + TAILQ_REMOVE(&conn->imc_packets_out, packet_out, po_next); + imico_destroy_packet(conn, packet_out); + } + } + else if (packet_size = lsquic_packet_out_total_sz(lconn, packet_out), + imico_can_send(conn, packet_size)) + ++n_to_send; + else + break; + } + + conn->imc_hsk_count += !TAILQ_EMPTY(&lost_packets); + + while ((packet_out = TAILQ_FIRST(&lost_packets))) + { + TAILQ_REMOVE(&lost_packets, packet_out, po_next); + if (0 == imico_repackage_packet(conn, packet_out)) + { + packet_size = lsquic_packet_out_total_sz(lconn, packet_out); + if (imico_can_send(conn, packet_size)) + ++n_to_send; + } + else + imico_destroy_packet(conn, packet_out); + } + + return n_to_send > 0; +} + + +static inline int +imico_have_packets_to_send (struct ietf_mini_conn *conn, lsquic_time_t now) +{ + return imico_handle_losses_and_have_unsent(conn, now); +} + + +void +lsquic_imico_rechist_init (struct ietf_mini_rechist *rechist, + const struct ietf_mini_conn *conn, enum packnum_space pns) +{ + assert(pns < IMICO_N_PNS); + rechist->conn = conn; + rechist->pns = pns; + if (conn->imc_flags & IMC_TRECHIST) + lsquic_trechist_iter(&rechist->u.trechist_iter, + conn->imc_recvd_packnos.trechist.hist_masks[pns], + conn->imc_recvd_packnos.trechist.hist_elems + TRECHIST_MAX_RANGES * pns); + else + { + rechist->u.bitmask.cur_set = 0; + rechist->u.bitmask.cur_idx = 0; + } +} + + +static inline lsquic_time_t +imico_rechist_largest_recv (void *rechist_ctx) +{ + struct ietf_mini_rechist *rechist = rechist_ctx; + return rechist->conn->imc_largest_recvd[ rechist->pns ]; +} + + +static const struct lsquic_packno_range * +imico_bitmask_rechist_next (struct ietf_mini_rechist *rechist) +{ + const struct ietf_mini_conn *conn = rechist->conn; + packno_set_t packnos; + int i; + + packnos = rechist->u.bitmask.cur_set; + if (0 == packnos) + return NULL; + + /* There may be a faster way to do this, but for now, we just want + * correctness. + */ + for (i = rechist->u.bitmask.cur_idx; i >= 0; --i) + if (packnos & (1ULL << i)) + { + rechist->u.bitmask.range.low = i; + rechist->u.bitmask.range.high = i; + break; + } + assert(i >= 0); /* We must have hit at least one bit */ + --i; + for ( ; i >= 0 && (packnos & (1ULL << i)); --i) + rechist->u.bitmask.range.low = i; + if (i >= 0) + { + rechist->u.bitmask.cur_set = packnos & ((1ULL << i) - 1); + rechist->u.bitmask.cur_idx = i; + } + else + rechist->u.bitmask.cur_set = 0; + LSQ_DEBUG("%s: return [%"PRIu64", %"PRIu64"]", __func__, + rechist->u.bitmask.range.low, rechist->u.bitmask.range.high); + return &rechist->u.bitmask.range; +} + + +const struct lsquic_packno_range * +lsquic_imico_rechist_next (void *rechist_ctx) +{ + struct ietf_mini_rechist *rechist = rechist_ctx; + + if (rechist->conn->imc_flags & IMC_TRECHIST) + return lsquic_trechist_next(&rechist->u.trechist_iter); + else + return imico_bitmask_rechist_next(rechist); +} + + +const struct lsquic_packno_range * +lsquic_imico_rechist_first (void *rechist_ctx) +{ + struct ietf_mini_rechist *rechist = rechist_ctx; + + if (rechist->conn->imc_flags & IMC_TRECHIST) + return lsquic_trechist_first(&rechist->u.trechist_iter); + else + { + rechist->u.bitmask.cur_set + = rechist->conn->imc_recvd_packnos.bitmasks[ rechist->pns ]; + rechist->u.bitmask.cur_idx + = highest_bit_set(rechist->u.bitmask.cur_set); + return lsquic_imico_rechist_next(rechist_ctx); + } +} + + +static const enum header_type pns2hety[] = +{ + [PNS_INIT] = HETY_INITIAL, + [PNS_HSK] = HETY_HANDSHAKE, + [PNS_APP] = HETY_SHORT, +}; + + +static inline int +imico_generate_ping (struct ietf_mini_conn *conn, + struct lsquic_packet_out *packet_out) +{ + int len; + len = conn->imc_conn.cn_pf->pf_gen_ping_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out)); + if (len > 0) + { + packet_out->po_frame_types |= 1 << QUIC_FRAME_PING; + packet_out->po_data_sz += len; + packet_out->po_regen_sz += len; + LSQ_DEBUG("wrote PING frame of size %d to packet %" PRIu64, + len, packet_out->po_packno); + } + return 0; +} + + +static int +imico_generate_ack (struct ietf_mini_conn *conn, enum packnum_space pns, + lsquic_time_t now) +{ + struct lsquic_packet_out *packet_out; + enum header_type header_type; + int len; + + header_type = pns2hety[pns]; + packet_out = imico_get_packet_out(conn, header_type, 0); + if (!packet_out) + return -1; + + len = imico_build_ack_frame(conn, pns, now, + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), + &packet_out->po_ack2ed); + if (len < 0) + return -1; + + packet_out->po_frame_types |= 1 << QUIC_FRAME_ACK; + packet_out->po_data_sz += len; + packet_out->po_regen_sz += len; + conn->imc_flags &= ~(IMC_QUEUED_ACK_INIT << pns); + LSQ_DEBUG("wrote ACK frame of size %d in %s to packet %" PRIu64, + len, lsquic_pns2str[pns], packet_out->po_packno); + if (pns == PNS_INIT && conn->imc_hsk_count > 0) + imico_generate_ping(conn, packet_out); + return 0; +} + + +static int +imico_generate_acks (struct ietf_mini_conn *conn, lsquic_time_t now) +{ + enum packnum_space pns; + + for (pns = PNS_INIT; pns < IMICO_N_PNS; ++pns) + if (conn->imc_flags & (IMC_QUEUED_ACK_INIT << pns) + && !(pns == PNS_INIT && (conn->imc_flags & IMC_IGNORE_INIT))) + { + if (0 != imico_generate_ack(conn, pns, now)) + return -1; + } + return 0; +} + + +int +lsquic_mini_conn_ietf_pre_promote(struct ietf_mini_conn *conn, + lsquic_time_t now) +{ + if (conn->imc_flags & (IMC_QUEUED_ACK_INIT|IMC_QUEUED_ACK_HSK)) + { + if (0 != imico_generate_acks(conn, now)) + { + conn->imc_flags |= IMC_ERROR; + return -1; + } + } + return 0; +} + + +static void +imico_generate_conn_close (struct ietf_mini_conn *conn) +{ + struct lsquic_packet_out *packet_out; + enum header_type header_type; + enum packnum_space pns, pns_max; + unsigned error_code; + const char *reason; + size_t need; + int sz, rlen, is_app; + char reason_buf[0x20]; + + if (conn->imc_flags & IMC_ABORT_ERROR) + { + is_app = !!(conn->imc_flags & IMC_ABORT_ISAPP); + error_code = conn->imc_error_code; + reason = NULL; + rlen = 0; + } + else if (conn->imc_flags & IMC_TLS_ALERT) + { + is_app = 0; + error_code = 0x100 + conn->imc_tls_alert; + if (ALERT_NO_APPLICATION_PROTOCOL == conn->imc_tls_alert) + reason = "no suitable application protocol"; + else + { + snprintf(reason_buf, sizeof(reason_buf), "TLS alert %"PRIu8, + conn->imc_tls_alert); + reason = reason_buf; + } + rlen = strlen(reason); + } + else if (conn->imc_flags & IMC_BAD_TRANS_PARAMS) + { + is_app = 0; + error_code = TEC_TRANSPORT_PARAMETER_ERROR; + reason = "bad transport parameters"; + rlen = 24; + } + else if (conn->imc_flags & IMC_VER_NEG_FAILED) + { + is_app = 0; + error_code = TEC_VERSION_NEGOTIATION_ERROR; + reason = "version negociation failed"; + rlen = 26; + } + else if (conn->imc_flags & IMC_HSK_FAILED) + { + is_app = 0; + error_code = TEC_NO_ERROR; + reason = "handshake failed"; + rlen = 16; + } + else if (conn->imc_flags & IMC_PARSE_FAILED) + { + is_app = 0; + error_code = TEC_FRAME_ENCODING_ERROR; + reason = "cannot decode frame"; + rlen = 19; + } + else + { + is_app = 0; + error_code = TEC_INTERNAL_ERROR; + reason = NULL; + rlen = 0; + } + + +/* [draft-ietf-quic-transport-28] Section 10.3.1: + * + " A client will always know whether the server has Handshake keys (see + " Section 17.2.2.1), but it is possible that a server does not know + " whether the client has Handshake keys. Under these circumstances, a + " server SHOULD send a CONNECTION_CLOSE frame in both Handshake and + " Initial packets to ensure that at least one of them is processable by + " the client. +--- 8< --- + " Sending a CONNECTION_CLOSE of type 0x1d in an Initial or Handshake + " packet could expose application state or be used to alter application + " state. A CONNECTION_CLOSE of type 0x1d MUST be replaced by a + " CONNECTION_CLOSE of type 0x1c when sending the frame in Initial or + " Handshake packets. Otherwise, information about the application + " state might be revealed. Endpoints MUST clear the value of the + " Reason Phrase field and SHOULD use the APPLICATION_ERROR code when + " converting to a CONNECTION_CLOSE of type 0x1c. + */ + LSQ_DEBUG("sending CONNECTION_CLOSE, is_app: %d, error code: %u, " + "reason: %.*s", is_app, error_code, rlen, reason); + if (is_app && conn->imc_conn.cn_version > LSQVER_ID27) + { + LSQ_DEBUG("convert to 0x1C, replace code and reason"); + is_app = 0; + error_code = TEC_APPLICATION_ERROR; + rlen = 0; + } + + pns = (conn->imc_flags >> IMCBIT_PNS_BIT_SHIFT) & 3; + switch ((!!(conn->imc_flags & IMC_HSK_PACKET_SENT) << 1) + | (pns == PNS_HSK) /* Handshake packet received */) + { + case (0 << 1) | 0: + pns = PNS_INIT; + pns_max = PNS_INIT; + break; + case (1 << 1) | 0: + pns = PNS_INIT; + pns_max = PNS_HSK; + break; + default: + pns = PNS_HSK; + pns_max = PNS_HSK; + break; + } + + need = conn->imc_conn.cn_pf->pf_connect_close_frame_size(is_app, + error_code, 0, rlen); + LSQ_DEBUG("will generate %u CONNECTION_CLOSE frame%.*s", + pns_max - pns + 1, pns_max > pns, "s"); + do + { + header_type = pns2hety[pns]; + packet_out = imico_get_packet_out(conn, header_type, need); + if (!packet_out) + return; + sz = conn->imc_conn.cn_pf->pf_gen_connect_close_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), is_app, error_code, reason, + rlen); + if (sz >= 0) + { + packet_out->po_frame_types |= 1 << QUIC_FRAME_CONNECTION_CLOSE; + packet_out->po_data_sz += sz; + LSQ_DEBUG("generated CONNECTION_CLOSE frame"); + } + else + LSQ_WARN("could not generate CONNECTION_CLOSE frame"); + ++pns; + } + while (pns <= pns_max); +} + + +static int +imico_generate_handshake_done (struct ietf_mini_conn *conn) +{ + struct lsquic_packet_out *packet_out; + unsigned need; + int sz; + + need = conn->imc_conn.cn_pf->pf_handshake_done_frame_size(); + packet_out = imico_get_packet_out(conn, HETY_SHORT, need); + if (!packet_out) + return -1; + sz = conn->imc_conn.cn_pf->pf_gen_handshake_done_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out)); + if (sz < 0) + { + LSQ_WARN("could not generate HANDSHAKE_DONE frame"); + return -1; + } + + packet_out->po_frame_types |= 1 << QUIC_FRAME_HANDSHAKE_DONE; + packet_out->po_data_sz += sz; + LSQ_DEBUG("generated HANDSHAKE_DONE frame"); + conn->imc_flags |= IMC_HSK_DONE_SENT; + + return 0; +} + + +static enum tick_st +ietf_mini_conn_ci_tick (struct lsquic_conn *lconn, lsquic_time_t now) +{ + struct ietf_mini_conn *conn = (struct ietf_mini_conn *) lconn; + enum tick_st tick; + + if (conn->imc_expire < now) + { + LSQ_DEBUG("connection expired: closing"); + return TICK_CLOSE; + } + + if (!(conn->imc_flags & + (IMC_HAVE_TP|IMC_ADDR_VALIDATED|IMC_BAD_TRANS_PARAMS)) + && conn->imc_enpub->enp_settings.es_support_srej) + { + if (conn->imc_flags & IMC_ERROR) + goto close_on_error; + LSQ_DEBUG("Peer not validated and do not have transport parameters " + "on the first tick: retry"); + return TICK_RETRY|TICK_CLOSE; + } + + if (conn->imc_flags & (IMC_QUEUED_ACK_INIT|IMC_QUEUED_ACK_HSK)) + { + if (0 != imico_generate_acks(conn, now)) + { + conn->imc_flags |= IMC_ERROR; + return TICK_CLOSE; + } + } + + + if (lconn->cn_flags & (LSCONN_PROMOTED|LSCONN_PROMOTE_FAIL)) + return TICK_CLOSE; + + tick = 0; + + if (conn->imc_flags & IMC_ERROR) + { + close_on_error: + if (!(conn->imc_flags & IMC_CLOSE_RECVD)) + imico_generate_conn_close(conn); + tick = TICK_CLOSE; + } + else if (conn->imc_flags & IMC_HSK_OK) + { + if (lconn->cn_esf.i->esfi_in_init(lconn->cn_enc_session)) + LSQ_DEBUG("still in init, defer HANDSHAKE_DONE"); + else if (0 != imico_generate_handshake_done(conn)) + goto close_on_error; + tick |= TICK_PROMOTE; + } + + if (imico_have_packets_to_send(conn, now)) + tick |= TICK_SEND; + else + tick |= TICK_QUIET; + + LSQ_DEBUG("Return TICK %d", tick); + return tick; +} + + +static void +ietf_mini_conn_ci_internal_error (struct lsquic_conn *lconn, + const char *format, ...) +{ + struct ietf_mini_conn *conn = (struct ietf_mini_conn *) lconn; + LSQ_INFO("internal error reported"); + conn->imc_flags |= IMC_ERROR; +} + + +static void +ietf_mini_conn_ci_abort_error (struct lsquic_conn *lconn, int is_app, + unsigned error_code, const char *fmt, ...) +{ + struct ietf_mini_conn *conn = (struct ietf_mini_conn *) lconn; + va_list ap; + const char *err_str, *percent; + char err_buf[0x100]; + + percent = strchr(fmt, '%'); + if (percent) + { + va_start(ap, fmt); + vsnprintf(err_buf, sizeof(err_buf), fmt, ap); + va_end(ap); + err_str = err_buf; + } + else + err_str = fmt; + LSQ_INFO("abort error: is_app: %d; error code: %u; error str: %s", + is_app, error_code, err_str); + conn->imc_flags |= IMC_ERROR|IMC_ABORT_ERROR; + if (is_app) + conn->imc_flags |= IMC_ABORT_ISAPP; + conn->imc_error_code = error_code; +} + + +static struct network_path * +ietf_mini_conn_ci_get_path (struct lsquic_conn *lconn, + const struct sockaddr *sa) +{ + struct ietf_mini_conn *conn = (struct ietf_mini_conn *) lconn; + + return &conn->imc_path; +} + + +static unsigned char +ietf_mini_conn_ci_record_addrs (struct lsquic_conn *lconn, void *peer_ctx, + const struct sockaddr *local_sa, const struct sockaddr *peer_sa) +{ + struct ietf_mini_conn *conn = (struct ietf_mini_conn *) lconn; + const struct sockaddr *orig_peer_sa; + struct lsquic_packet_out *packet_out; + size_t len; + char path_str[4][INET6_ADDRSTRLEN + sizeof(":65535")]; + + if (NP_IS_IPv6(&conn->imc_path) != (AF_INET6 == peer_sa->sa_family)) + TAILQ_FOREACH(packet_out, &conn->imc_packets_out, po_next) + if ((packet_out->po_flags & (PO_SENT|PO_ENCRYPTED)) == PO_ENCRYPTED) + imico_return_enc_data(conn, packet_out); + + orig_peer_sa = NP_PEER_SA(&conn->imc_path); + if (orig_peer_sa->sa_family == 0) + LSQ_DEBUG("connection to %s from %s", SA2STR(local_sa, path_str[0]), + SA2STR(peer_sa, path_str[1])); + else if (!(lsquic_sockaddr_eq(NP_PEER_SA(&conn->imc_path), peer_sa) + && lsquic_sockaddr_eq(NP_LOCAL_SA(&conn->imc_path), local_sa))) + { + LSQ_DEBUG("path changed from (%s - %s) to (%s - %s)", + SA2STR(NP_LOCAL_SA(&conn->imc_path), path_str[0]), + SA2STR(NP_PEER_SA(&conn->imc_path), path_str[1]), + SA2STR(local_sa, path_str[2]), + SA2STR(peer_sa, path_str[3])); + conn->imc_flags = (conn->imc_flags & ~IMC_ADDR_VALIDATED) + | IMC_PATH_CHANGED; + } + + len = local_sa->sa_family == AF_INET ? sizeof(struct sockaddr_in) + : sizeof(struct sockaddr_in6); + + memcpy(conn->imc_path.np_peer_addr, peer_sa, len); + memcpy(conn->imc_path.np_local_addr, local_sa, len); + conn->imc_path.np_peer_ctx = peer_ctx; + return 0; +} + + +void +ietf_mini_conn_ci_count_garbage (struct lsquic_conn *lconn, size_t garbage_sz) +{ + struct ietf_mini_conn *conn = (struct ietf_mini_conn *) lconn; + + conn->imc_bytes_in += garbage_sz; + conn->imc_flags &= ~IMC_AMP_CAPPED; + LSQ_DEBUG("count %zd bytes of garbage, new value: %u bytes", garbage_sz, + conn->imc_bytes_in); +} + + +static const struct conn_iface mini_conn_ietf_iface = { + .ci_abort_error = ietf_mini_conn_ci_abort_error, + .ci_client_call_on_new = ietf_mini_conn_ci_client_call_on_new, + .ci_count_garbage = ietf_mini_conn_ci_count_garbage, + .ci_destroy = ietf_mini_conn_ci_destroy, + .ci_get_engine = ietf_mini_conn_ci_get_engine, + .ci_get_path = ietf_mini_conn_ci_get_path, + .ci_hsk_done = ietf_mini_conn_ci_hsk_done, + .ci_internal_error = ietf_mini_conn_ci_internal_error, + .ci_is_tickable = ietf_mini_conn_ci_is_tickable, + .ci_next_packet_to_send = ietf_mini_conn_ci_next_packet_to_send, + .ci_next_tick_time = ietf_mini_conn_ci_next_tick_time, + .ci_packet_in = ietf_mini_conn_ci_packet_in, + .ci_packet_not_sent = ietf_mini_conn_ci_packet_not_sent, + .ci_packet_sent = ietf_mini_conn_ci_packet_sent, + .ci_record_addrs = ietf_mini_conn_ci_record_addrs, + .ci_tick = ietf_mini_conn_ci_tick, + .ci_tls_alert = ietf_mini_conn_ci_tls_alert, +}; diff --git a/external/lsquic/src/liblsquic/lsquic_mini_conn_ietf.h b/external/lsquic/src/liblsquic/lsquic_mini_conn_ietf.h new file mode 100644 index 0000000..9308d06 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_mini_conn_ietf.h @@ -0,0 +1,171 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_mini_conn_ietf.h -- Mini connection used by the IETF QUIC + */ + +#ifndef LSQUIC_MINI_CONN_IETF_H +#define LSQUIC_MINI_CONN_IETF_H 1 + +#include "lsquic_ietf.h" + +struct lsquic_conn; +struct lsquic_engine_public; +struct lsquic_packet_in; + +enum { MCSBIT_WANTREAD, MCSBIT_WANTWRITE, }; + +struct mini_crypto_stream +{ + unsigned mcs_read_off; + unsigned mcs_write_off; + enum { + MCS_WANTREAD = 1 << MCSBIT_WANTREAD, + MCS_WANTWRITE = 1 << MCSBIT_WANTWRITE, + MCS_CREATED = 1 << 2, + } mcs_flags:8; + enum enc_level mcs_enc_level:8; +}; + +typedef uint64_t packno_set_t; +#define MAX_PACKETS ((sizeof(packno_set_t) * 8) - 1) + +/* We do not handle packets in the App packet number space in the mini + * connection. They are all buffered to be handled later when the + * connection is promoted. This means we do not have to have data + * structures to track the App PNS. + */ + +struct ietf_mini_conn +{ + struct lsquic_conn imc_conn; + struct conn_cid_elem imc_cces[3]; + struct lsquic_engine_public *imc_enpub; + lsquic_time_t imc_expire; + enum { + IMC_ENC_SESS_INITED = 1 << 0, + IMC_QUEUED_ACK_INIT = 1 << 1, + IMC_QUEUED_ACK_HSK = IMC_QUEUED_ACK_INIT << PNS_HSK, + IMC_UNUSED3 = 1 << 3, + IMC_ERROR = 1 << 4, + IMC_HSK_OK = 1 << 5, + IMC_HSK_FAILED = 1 << 6, + IMC_HAVE_TP = 1 << 7, + IMC_RETRY_MODE = 1 << 8, + IMC_RETRY_DONE = 1 << 9, + IMC_IGNORE_INIT = 1 << 10, +#define IMCBIT_PNS_BIT_SHIFT 11 + IMC_MAX_PNS_BIT_0 = 1 << 11, + IMC_MAX_PNS_BIT_1 = 1 << 12, + IMC_TLS_ALERT = 1 << 13, + IMC_ABORT_ERROR = 1 << 14, + IMC_ABORT_ISAPP = 1 << 15, + IMC_BAD_TRANS_PARAMS = 1 << 16, + IMC_ADDR_VALIDATED = 1 << 17, + IMC_HSK_PACKET_SENT = 1 << 18, + IMC_CLOSE_RECVD = 1 << 19, + IMC_PARSE_FAILED = 1 << 20, + IMC_PATH_CHANGED = 1 << 21, + IMC_HSK_DONE_SENT = 1 << 22, + IMC_TRECHIST = 1 << 23, + IMC_VER_NEG_FAILED = 1 << 24, + IMC_AMP_CAPPED = 1 << 25, + } imc_flags; + struct mini_crypto_stream imc_streams[N_ENC_LEVS]; + void *imc_stream_ps[N_ENC_LEVS]; + struct { + struct stream_frame *frame; /* Latest frame - on stack - be careful. */ + enum enc_level enc_level; + } imc_last_in; + TAILQ_HEAD(, lsquic_packet_in) imc_app_packets; + TAILQ_HEAD(, lsquic_packet_out) imc_packets_out; + TAILQ_HEAD(, stream_frame) imc_crypto_frames; + packno_set_t imc_sent_packnos; + union { + packno_set_t bitmasks[IMICO_N_PNS]; + struct { + struct trechist_elem *hist_elems; + trechist_mask_t hist_masks[IMICO_N_PNS]; + } trechist; + } imc_recvd_packnos; + packno_set_t imc_acked_packnos[IMICO_N_PNS]; + lsquic_time_t imc_largest_recvd[IMICO_N_PNS]; + struct lsquic_rtt_stats imc_rtt_stats; + enum trans_error_code imc_error_code; + unsigned imc_bytes_in; + unsigned imc_bytes_out; + unsigned short imc_crypto_frames_sz; + /* We need to read in the length of ClientHello to check when we have fed + * it to the crypto layer. + */ + unsigned short imc_ch_len; + unsigned char imc_next_packno; + unsigned char imc_hsk_count; + /* We don't send more than eight in the first flight, and so it's OK to + * use uint8_t. This value is also used as a boolean: when ECN black + * hole is detected, it is set to zero to indicate that black hole + * detection is no longer active. + */ + uint8_t imc_ecn_packnos; + uint8_t imc_ack_exp; + uint8_t imc_ecn_counts_in[IMICO_N_PNS][4]; + uint8_t imc_incoming_ecn; + uint8_t imc_tls_alert; +#define IMICO_MAX_DELAYED_PACKETS_UNVALIDATED 1u +#define IMICO_MAX_DELAYED_PACKETS_VALIDATED 2u + unsigned char imc_delayed_packets_count; +#define IMICO_MAX_STASHED_FRAMES 10u + unsigned char imc_n_crypto_frames; + unsigned short imc_hello_pkt_remain; + unsigned char imc_long_header_sz; + struct network_path imc_path; +}; + +/* [draft-ietf-quic-transport-24] Section 7.4 + * + " Implementations MUST support buffering at least 4096 bytes of data + " received in CRYPTO frames out of order. Endpoints MAY choose to + " allow more data to be buffered during the handshake. A larger limit + " during the handshake could allow for larger keys or credentials to be + " exchanged. An endpoint's buffer size does not need to remain + " constant during the life of the connection. + */ +#define IMICO_MAX_BUFFERED_CRYPTO (6u * 1024u) + +struct lsquic_conn * +lsquic_mini_conn_ietf_new (struct lsquic_engine_public *, + struct lsquic_packet_in *, + enum lsquic_version, int is_ipv4, const struct lsquic_cid *, + size_t udp_payload_size); + +int +lsquic_mini_conn_ietf_ecn_ok (const struct ietf_mini_conn *); + +struct ietf_mini_rechist +{ + const struct ietf_mini_conn *conn; + enum packnum_space pns; + union { + struct { + packno_set_t cur_set; + struct lsquic_packno_range range; /* We return a pointer to this */ + int cur_idx; + } bitmask; + struct trechist_iter trechist_iter; + } u; +}; + +void +lsquic_imico_rechist_init (struct ietf_mini_rechist *rechist, + const struct ietf_mini_conn *conn, enum packnum_space pns); + +const struct lsquic_packno_range * +lsquic_imico_rechist_first (void *rechist_ctx); + +const struct lsquic_packno_range * +lsquic_imico_rechist_next (void *rechist_ctx); + +int +lsquic_mini_conn_ietf_pre_promote(struct ietf_mini_conn *conn, + lsquic_time_t now); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_minmax.c b/external/lsquic/src/liblsquic/lsquic_minmax.c new file mode 100644 index 0000000..d6a1849 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_minmax.c @@ -0,0 +1,155 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * Based on Google code released under BSD license here: + * https://groups.google.com/forum/#!topic/bbr-dev/3RTgkzi5ZD8 + */ + +/* + * Copyright 2017, Google Inc. + * + * Use of this source code is governed by the following BSD-style license: + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Kathleen Nichols' algorithm for tracking the minimum (or maximum) + * value of a data stream over some fixed time interval. (E.g., + * the minimum RTT over the past five minutes.) It uses constant + * space and constant time per update yet almost always delivers + * the same minimum as an implementation that has to keep all the + * data in the window. + * + * The algorithm keeps track of the best, 2nd best & 3rd best min + * values, maintaining an invariant that the measurement time of + * the n'th best >= n-1'th best. It also makes sure that the three + * values are widely separated in the time window since that bounds + * the worse case error when that data is monotonically increasing + * over the window. + * + * Upon getting a new min, we can forget everything earlier because + * it has no value - the new min is <= everything else in the window + * by definition and it'samples the most recent. So we restart fresh on + * every new min and overwrites 2nd & 3rd choices. The same property + * holds for 2nd & 3rd best. + */ + +#include +#include + +#include "lsquic_minmax.h" + +/* As time advances, update the 1st, 2nd, and 3rd choices. */ +static void +minmax_subwin_update (struct minmax *minmax, const struct minmax_sample *sample) +{ + uint64_t dt = sample->time - minmax->samples[0].time; + + if (dt > minmax->window) + { + /* + * Passed entire window without a new sample so make 2nd + * choice the new sample & 3rd choice the new 2nd choice. + * we may have to iterate this since our 2nd choice + * may also be outside the window (we checked on entry + * that the third choice was in the window). + */ + minmax->samples[0] = minmax->samples[1]; + minmax->samples[1] = minmax->samples[2]; + minmax->samples[2] = *sample; + if (sample->time - minmax->samples[0].time > minmax->window) { + minmax->samples[0] = minmax->samples[1]; + minmax->samples[1] = minmax->samples[2]; + minmax->samples[2] = *sample; + } + } + else if (minmax->samples[1].time == minmax->samples[0].time + && dt > minmax->window / 4) + { + /* + * We've passed a quarter of the window without a new sample + * so take a 2nd choice from the 2nd quarter of the window. + */ + minmax->samples[2] = minmax->samples[1] = *sample; + } + else if (minmax->samples[2].time == minmax->samples[1].time + && dt > minmax->window / 2) + { + /* + * We've passed half the window without finding a new sample + * so take a 3rd choice from the last half of the window + */ + minmax->samples[2] = *sample; + } +} + + +/* Check if new measurement updates the 1st, 2nd or 3rd choice max. */ +void +lsquic_minmax_update_max (struct minmax *minmax, uint64_t now, uint64_t meas) +{ + struct minmax_sample sample = { .time = now, .value = meas }; + + if (minmax->samples[0].value == 0 /* uninitialized */ + || sample.value >= minmax->samples[0].value /* found new max? */ + || sample.time - minmax->samples[2].time > minmax->window) /* nothing left in window? */ + { + minmax_reset(minmax, sample); /* forget earlier samples */ + return; + } + + if (sample.value >= minmax->samples[1].value) + minmax->samples[2] = minmax->samples[1] = sample; + else if (sample.value >= minmax->samples[2].value) + minmax->samples[2] = sample; + + minmax_subwin_update(minmax, &sample); +} + + +/* Check if new measurement updates the 1st, 2nd or 3rd choice min. */ +void +lsquic_minmax_update_min (struct minmax *minmax, uint64_t now, uint64_t meas) +{ + struct minmax_sample sample = { .time = now, .value = meas }; + + if (minmax->samples[0].value == 0 /* uninitialized */ + || sample.value <= minmax->samples[0].value /* found new min? */ + || sample.time - minmax->samples[2].time > minmax->window) /* nothing left in window? */ + { + minmax_reset(minmax, sample); /* forget earlier samples */ + return; + } + + if (sample.value <= minmax->samples[1].value) + minmax->samples[2] = minmax->samples[1] = sample; + else if (sample.value <= minmax->samples[2].value) + minmax->samples[2] = sample; + + minmax_subwin_update(minmax, &sample); +} diff --git a/external/lsquic/src/liblsquic/lsquic_minmax.h b/external/lsquic/src/liblsquic/lsquic_minmax.h new file mode 100644 index 0000000..3f94f81 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_minmax.h @@ -0,0 +1,52 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_MINMAX_H +#define LSQUIC_MINMAX_H + +/* Windowed min/max tracker by Kathleen Nichols. + * + * Based on Google code released under BSD license here: + * https://groups.google.com/forum/#!topic/bbr-dev/3RTgkzi5ZD8 + */ + + +struct minmax_sample +{ + uint64_t time; + uint64_t value; +}; + +struct minmax +{ + uint64_t window; + struct minmax_sample samples[3]; +}; + +static inline uint64_t +minmax_get_idx (const struct minmax *minmax_, int idx_) +{ + return minmax_->samples[idx_].value; +} + +static inline uint64_t +minmax_get (const struct minmax *minmax_) +{ + return minmax_get_idx(minmax_, 0); +} + +#define minmax_reset(minmax_, sample_) do { \ + (minmax_)->samples[0] = (minmax_)->samples[1] \ + = (minmax_)->samples[2] = (sample_); \ +} while (0) + +#define minmax_init(minmax_, window_) do { \ + (minmax_)->window = (window_); \ + minmax_reset(minmax_, ((struct minmax_sample) { 0, 0, })); \ +} while (0) + +void lsquic_minmax_update_min(struct minmax *, uint64_t now, uint64_t meas); +void lsquic_minmax_update_max(struct minmax *, uint64_t now, uint64_t meas); + +#define minmax_upmin lsquic_minmax_update_min +#define minmax_upmax lsquic_minmax_update_max + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_mm.c b/external/lsquic/src/liblsquic/lsquic_mm.c new file mode 100644 index 0000000..38dbf7e --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_mm.c @@ -0,0 +1,635 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_mm.c -- Memory manager. + */ + +#include +#include +#include +#include +#include +#include + +#include "fiu-local.h" + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_sizes.h" +#include "lsquic_malo.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_rtt.h" +#include "lsquic_packet_common.h" +#include "lsquic_mini_conn.h" +#include "lsquic_enc_sess.h" +#include "lsquic_trechist.h" +#include "lsquic_mini_conn_ietf.h" +#include "lsquic_packet_gquic.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_parse.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_full_conn.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_sfcw.h" +#include "lsquic_stream.h" + +#ifndef LSQUIC_LOG_POOL_STATS +#define LSQUIC_LOG_POOL_STATS 0 +#endif + +#if LSQUIC_LOG_POOL_STATS +#include "lsquic_logger.h" +#endif + +#ifndef LSQUIC_USE_POOLS +#define LSQUIC_USE_POOLS 1 +#endif + +#define FAIL_NOMEM do { errno = ENOMEM; return NULL; } while (0) + + +struct packet_in_buf +{ + SLIST_ENTRY(packet_in_buf) next_pib; +}; + +struct packet_out_buf +{ + SLIST_ENTRY(packet_out_buf) next_pob; +}; + +struct four_k_page +{ + SLIST_ENTRY(four_k_page) next_fkp; +}; + +struct sixteen_k_page +{ + SLIST_ENTRY(sixteen_k_page) next_skp; +}; + + +int +lsquic_mm_init (struct lsquic_mm *mm) +{ +#if LSQUIC_USE_POOLS + int i; +#endif + + mm->acki = malloc(sizeof(*mm->acki)); + mm->malo.stream_frame = lsquic_malo_create(sizeof(struct stream_frame)); + mm->malo.frame_rec_arr = lsquic_malo_create(sizeof(struct frame_rec_arr)); + mm->malo.mini_conn = lsquic_malo_create(sizeof(struct mini_conn)); + mm->malo.mini_conn_ietf = lsquic_malo_create(sizeof(struct ietf_mini_conn)); + mm->malo.packet_in = lsquic_malo_create(sizeof(struct lsquic_packet_in)); + mm->malo.packet_out = lsquic_malo_create(sizeof(struct lsquic_packet_out)); + mm->malo.dcid_elem = lsquic_malo_create(sizeof(struct dcid_elem)); + mm->malo.stream_hq_frame + = lsquic_malo_create(sizeof(struct stream_hq_frame)); + mm->ack_str = malloc(MAX_ACKI_STR_SZ); +#if LSQUIC_USE_POOLS + TAILQ_INIT(&mm->free_packets_in); + for (i = 0; i < MM_N_OUT_BUCKETS; ++i) + SLIST_INIT(&mm->packet_out_bufs[i]); + for (i = 0; i < MM_N_IN_BUCKETS; ++i) + SLIST_INIT(&mm->packet_in_bufs[i]); + SLIST_INIT(&mm->four_k_pages); + SLIST_INIT(&mm->sixteen_k_pages); +#endif + if (mm->acki && mm->malo.stream_frame && mm->malo.frame_rec_arr + && mm->malo.mini_conn && mm->malo.mini_conn_ietf && mm->malo.packet_in + && mm->malo.packet_out && mm->malo.dcid_elem + && mm->malo.stream_hq_frame && mm->ack_str) + { + return 0; + } + else + return -1; +} + + +void +lsquic_mm_cleanup (struct lsquic_mm *mm) +{ +#if LSQUIC_USE_POOLS + int i; + struct packet_out_buf *pob; + struct packet_in_buf *pib; + struct four_k_page *fkp; + struct sixteen_k_page *skp; +#endif + + free(mm->acki); + lsquic_malo_destroy(mm->malo.stream_hq_frame); + lsquic_malo_destroy(mm->malo.dcid_elem); + lsquic_malo_destroy(mm->malo.packet_in); + lsquic_malo_destroy(mm->malo.packet_out); + lsquic_malo_destroy(mm->malo.stream_frame); + lsquic_malo_destroy(mm->malo.frame_rec_arr); + lsquic_malo_destroy(mm->malo.mini_conn); + lsquic_malo_destroy(mm->malo.mini_conn_ietf); + free(mm->ack_str); + +#if LSQUIC_USE_POOLS + for (i = 0; i < MM_N_OUT_BUCKETS; ++i) + while ((pob = SLIST_FIRST(&mm->packet_out_bufs[i]))) + { + SLIST_REMOVE_HEAD(&mm->packet_out_bufs[i], next_pob); + free(pob); + } + + for (i = 0; i < MM_N_IN_BUCKETS; ++i) + while ((pib = SLIST_FIRST(&mm->packet_in_bufs[i]))) + { + SLIST_REMOVE_HEAD(&mm->packet_in_bufs[i], next_pib); + free(pib); + } + + while ((fkp = SLIST_FIRST(&mm->four_k_pages))) + { + SLIST_REMOVE_HEAD(&mm->four_k_pages, next_fkp); + free(fkp); + } + + while ((skp = SLIST_FIRST(&mm->sixteen_k_pages))) + { + SLIST_REMOVE_HEAD(&mm->sixteen_k_pages, next_skp); + free(skp); + } +#endif +} + + +#if LSQUIC_USE_POOLS +enum { + PACKET_IN_PAYLOAD_0 = 1370, /* common QUIC payload size upperbound */ + PACKET_IN_PAYLOAD_1 = 4096, /* payload size middleground guess */ + PACKET_IN_PAYLOAD_2 = 0xffff, /* UDP payload size upperbound */ +}; + + +static const unsigned packet_in_sizes[] = { + PACKET_IN_PAYLOAD_0, + PACKET_IN_PAYLOAD_1, + PACKET_IN_PAYLOAD_2, +}; + + +static unsigned +packet_in_index (unsigned size) +{ + unsigned idx = (size > PACKET_IN_PAYLOAD_0) + + (size > PACKET_IN_PAYLOAD_1); + return idx; +} +#endif + + +void +lsquic_mm_put_packet_in (struct lsquic_mm *mm, + struct lsquic_packet_in *packet_in) +{ + assert(0 == packet_in->pi_refcnt); + if (packet_in->pi_flags & PI_OWN_DATA) + { + lsquic_mm_put_packet_in_buf(mm, packet_in->pi_data, packet_in->pi_data_sz); + } + +#if LSQUIC_USE_POOLS + TAILQ_INSERT_HEAD(&mm->free_packets_in, packet_in, pi_next); +#else + lsquic_malo_put(packet_in); +#endif +} + + +struct lsquic_packet_in * +lsquic_mm_get_packet_in (struct lsquic_mm *mm) +{ + struct lsquic_packet_in *packet_in; + + fiu_do_on("mm/packet_in", FAIL_NOMEM); + +#if LSQUIC_USE_POOLS + packet_in = TAILQ_FIRST(&mm->free_packets_in); + if (packet_in) + { + assert(0 == packet_in->pi_refcnt); + TAILQ_REMOVE(&mm->free_packets_in, packet_in, pi_next); + } + else +#endif + packet_in = lsquic_malo_get(mm->malo.packet_in); + + if (packet_in) + memset(packet_in, 0, sizeof(*packet_in)); + + return packet_in; +} + + +#if LSQUIC_USE_POOLS +/* Based on commonly used MTUs, ordered from small to large: */ +enum { + PACKET_OUT_PAYLOAD_0 = 1280 - GQUIC_MIN_PACKET_OVERHEAD, + PACKET_OUT_PAYLOAD_1 = GQUIC_MAX_IPv6_PACKET_SZ - GQUIC_MIN_PACKET_OVERHEAD, + PACKET_OUT_PAYLOAD_2 = GQUIC_MAX_IPv4_PACKET_SZ - GQUIC_MIN_PACKET_OVERHEAD, + PACKET_OUT_PAYLOAD_3 = 4096, + PACKET_OUT_PAYLOAD_4 = 0xffff, +}; + + +static const unsigned packet_out_sizes[] = { + PACKET_OUT_PAYLOAD_0, + PACKET_OUT_PAYLOAD_1, + PACKET_OUT_PAYLOAD_2, + PACKET_OUT_PAYLOAD_3, + PACKET_OUT_PAYLOAD_4, +}; + + +static unsigned +packet_out_index (unsigned size) +{ + unsigned idx = (size > PACKET_OUT_PAYLOAD_0) + + (size > PACKET_OUT_PAYLOAD_1) + + (size > PACKET_OUT_PAYLOAD_2) + + (size > PACKET_OUT_PAYLOAD_3); + return idx; +} +#endif + +#if LSQUIC_USE_POOLS +#define POOL_SAMPLE_PERIOD 1024 + +static void +poolst_sample_max (struct pool_stats *poolst) +{ +#define ALPHA_SHIFT 3 +#define BETA_SHIFT 2 + unsigned diff; + + if (poolst->ps_max_avg) + { + poolst->ps_max_var -= poolst->ps_max_var >> BETA_SHIFT; + if (poolst->ps_max_avg > poolst->ps_max) + diff = poolst->ps_max_avg - poolst->ps_max; + else + diff = poolst->ps_max - poolst->ps_max_avg; + poolst->ps_max_var += diff >> BETA_SHIFT; + poolst->ps_max_avg -= poolst->ps_max_avg >> ALPHA_SHIFT; + poolst->ps_max_avg += poolst->ps_max >> ALPHA_SHIFT; + } + else + { + /* First measurement */ + poolst->ps_max_avg = poolst->ps_max; + poolst->ps_max_var = poolst->ps_max / 2; + } + + poolst->ps_calls = 0; + poolst->ps_max = poolst->ps_objs_out; +#if LSQUIC_LOG_POOL_STATS + LSQ_DEBUG("new sample: max avg: %u; var: %u", poolst->ps_max_avg, + poolst->ps_max_var); +#endif +} + + +static void +poolst_allocated (struct pool_stats *poolst, unsigned new) +{ + poolst->ps_objs_out += 1; + poolst->ps_objs_all += new; + if (poolst->ps_objs_out > poolst->ps_max) + poolst->ps_max = poolst->ps_objs_out; + ++poolst->ps_calls; + if (0 == poolst->ps_calls % POOL_SAMPLE_PERIOD) + poolst_sample_max(poolst); +} + + +static void +poolst_freed (struct pool_stats *poolst) +{ + --poolst->ps_objs_out; + ++poolst->ps_calls; + if (0 == poolst->ps_calls % POOL_SAMPLE_PERIOD) + poolst_sample_max(poolst); +} + + +static int +poolst_has_new_sample (const struct pool_stats *poolst) +{ + return poolst->ps_calls == 0; +} + + +/* If average maximum falls under 1/4 of all objects allocated, release + * half of the objects allocated. + */ +static void +maybe_shrink_packet_out_bufs (struct lsquic_mm *mm, unsigned idx) +{ + struct pool_stats *poolst; + struct packet_out_buf *pob; + unsigned n_to_leave; + + poolst = &mm->packet_out_bstats[idx]; + if (poolst->ps_max_avg * 4 < poolst->ps_objs_all) + { + n_to_leave = poolst->ps_objs_all / 2; + while (poolst->ps_objs_all > n_to_leave + && (pob = SLIST_FIRST(&mm->packet_out_bufs[idx]))) + { + SLIST_REMOVE_HEAD(&mm->packet_out_bufs[idx], next_pob); + free(pob); + --poolst->ps_objs_all; + } +#if LSQUIC_LOG_POOL_STATS + LSQ_DEBUG("pool #%u; max avg %u; shrank from %u to %u objs", + idx, poolst->ps_max_avg, n_to_leave * 2, poolst->ps_objs_all); +#endif + } +#if LSQUIC_LOG_POOL_STATS + else + LSQ_DEBUG("pool #%u; max avg %u; objs: %u; won't shrink", + idx, poolst->ps_max_avg, poolst->ps_objs_all); +#endif +} +#endif + + +#if LSQUIC_USE_POOLS +/* If average maximum falls under 1/4 of all objects allocated, release + * half of the objects allocated. + */ +static void +maybe_shrink_packet_in_bufs (struct lsquic_mm *mm, unsigned idx) +{ + struct pool_stats *poolst; + struct packet_in_buf *pib; + unsigned n_to_leave; + + poolst = &mm->packet_in_bstats[idx]; + if (poolst->ps_max_avg * 4 < poolst->ps_objs_all) + { + n_to_leave = poolst->ps_objs_all / 2; + while (poolst->ps_objs_all > n_to_leave + && (pib = SLIST_FIRST(&mm->packet_in_bufs[idx]))) + { + SLIST_REMOVE_HEAD(&mm->packet_in_bufs[idx], next_pib); + free(pib); + --poolst->ps_objs_all; + } +#if LSQUIC_LOG_POOL_STATS + LSQ_DEBUG("pib pool #%u; max avg %u; shrank from %u to %u objs", + idx, poolst->ps_max_avg, n_to_leave * 2, poolst->ps_objs_all); +#endif + } +#if LSQUIC_LOG_POOL_STATS + else + { + LSQ_DEBUG("pib pool #%u; max avg %u; objs: %u; won't shrink", + idx, poolst->ps_max_avg, poolst->ps_objs_all); + } +#endif +} +#endif + + +void +lsquic_mm_put_packet_out (struct lsquic_mm *mm, + struct lsquic_packet_out *packet_out) +{ +#if LSQUIC_USE_POOLS + struct packet_out_buf *pob; + unsigned idx; + + assert(packet_out->po_data); + pob = (struct packet_out_buf *) packet_out->po_data; + idx = packet_out_index(packet_out->po_n_alloc); + SLIST_INSERT_HEAD(&mm->packet_out_bufs[idx], pob, next_pob); + poolst_freed(&mm->packet_out_bstats[idx]); + if (poolst_has_new_sample(&mm->packet_out_bstats[idx])) + maybe_shrink_packet_out_bufs(mm, idx); +#else + free(packet_out->po_data); +#endif + lsquic_malo_put(packet_out); +} + + +struct lsquic_packet_out * +lsquic_mm_get_packet_out (struct lsquic_mm *mm, struct malo *malo, + unsigned short size) +{ + struct lsquic_packet_out *packet_out; + struct packet_out_buf *pob; +#if LSQUIC_USE_POOLS + unsigned idx; +#endif + + fiu_do_on("mm/packet_out", FAIL_NOMEM); + + packet_out = lsquic_malo_get(malo ? malo : mm->malo.packet_out); + if (!packet_out) + return NULL; + +#if LSQUIC_USE_POOLS + idx = packet_out_index(size); + pob = SLIST_FIRST(&mm->packet_out_bufs[idx]); + if (pob) + { + SLIST_REMOVE_HEAD(&mm->packet_out_bufs[idx], next_pob); + poolst_allocated(&mm->packet_out_bstats[idx], 0); + } + else + { + pob = malloc(packet_out_sizes[idx]); + if (!pob) + { + lsquic_malo_put(packet_out); + return NULL; + } + poolst_allocated(&mm->packet_out_bstats[idx], 1); + } + if (poolst_has_new_sample(&mm->packet_out_bstats[idx])) + maybe_shrink_packet_out_bufs(mm, idx); +#else + pob = malloc(size); + if (!pob) + { + lsquic_malo_put(packet_out); + return NULL; + } +#endif + + memset(packet_out, 0, sizeof(*packet_out)); + packet_out->po_n_alloc = size; + packet_out->po_data = (unsigned char *) pob; + + return packet_out; +} + + +void * +lsquic_mm_get_packet_in_buf (struct lsquic_mm *mm, size_t size) +{ + struct packet_in_buf *pib; +#if LSQUIC_USE_POOLS + unsigned idx; + + idx = packet_in_index(size); + pib = SLIST_FIRST(&mm->packet_in_bufs[idx]); + fiu_do_on("mm/packet_in_buf", FAIL_NOMEM); + if (pib) + { + SLIST_REMOVE_HEAD(&mm->packet_in_bufs[idx], next_pib); + poolst_allocated(&mm->packet_in_bstats[idx], 0); + } + else + { + pib = malloc(packet_in_sizes[idx]); + if (!pib) + { + return NULL; + } + + poolst_allocated(&mm->packet_in_bstats[idx], 1); + } + + if (poolst_has_new_sample(&mm->packet_in_bstats[idx])) + { + maybe_shrink_packet_in_bufs(mm, idx); + } +#else + pib = malloc(size); +#endif + return pib; +} + + +void +lsquic_mm_put_packet_in_buf (struct lsquic_mm *mm, void *mem, size_t size) +{ +#if LSQUIC_USE_POOLS + unsigned idx; + struct packet_in_buf *pib; + + pib = (struct packet_in_buf *) mem; + idx = packet_in_index(size); + SLIST_INSERT_HEAD(&mm->packet_in_bufs[idx], pib, next_pib); + + poolst_freed(&mm->packet_in_bstats[idx]); + if (poolst_has_new_sample(&mm->packet_in_bstats[idx])) + { + maybe_shrink_packet_in_bufs(mm, idx); + } +#else + free(mem); +#endif +} + + +void * +lsquic_mm_get_4k (struct lsquic_mm *mm) +{ +#if LSQUIC_USE_POOLS + struct four_k_page *fkp = SLIST_FIRST(&mm->four_k_pages); + fiu_do_on("mm/4k", FAIL_NOMEM); + if (fkp) + SLIST_REMOVE_HEAD(&mm->four_k_pages, next_fkp); + else + fkp = malloc(0x1000); + return fkp; +#else + return malloc(0x1000); +#endif +} + + +void +lsquic_mm_put_4k (struct lsquic_mm *mm, void *mem) +{ +#if LSQUIC_USE_POOLS + struct four_k_page *fkp = mem; + SLIST_INSERT_HEAD(&mm->four_k_pages, fkp, next_fkp); +#else + free(mem); +#endif +} + + +void * +lsquic_mm_get_16k (struct lsquic_mm *mm) +{ +#if LSQUIC_USE_POOLS + struct sixteen_k_page *skp = SLIST_FIRST(&mm->sixteen_k_pages); + fiu_do_on("mm/16k", FAIL_NOMEM); + if (skp) + SLIST_REMOVE_HEAD(&mm->sixteen_k_pages, next_skp); + else + skp = malloc(16 * 1024); + return skp; +#else + return malloc(16 * 1024); +#endif +} + + +void +lsquic_mm_put_16k (struct lsquic_mm *mm, void *mem) +{ +#if LSQUIC_USE_POOLS + struct sixteen_k_page *skp = mem; + SLIST_INSERT_HEAD(&mm->sixteen_k_pages, skp, next_skp); +#else + free(mem); +#endif +} + + +size_t +lsquic_mm_mem_used (const struct lsquic_mm *mm) +{ +#if LSQUIC_USE_POOLS + const struct packet_out_buf *pob; + const struct packet_in_buf *pib; + const struct four_k_page *fkp; + const struct sixteen_k_page *skp; + unsigned i; + size_t size; + + size = sizeof(*mm); + size += sizeof(*mm->acki); + size += lsquic_malo_mem_used(mm->malo.stream_frame); + size += lsquic_malo_mem_used(mm->malo.frame_rec_arr); + size += lsquic_malo_mem_used(mm->malo.mini_conn); + size += lsquic_malo_mem_used(mm->malo.mini_conn_ietf); + size += lsquic_malo_mem_used(mm->malo.packet_in); + size += lsquic_malo_mem_used(mm->malo.packet_out); + + for (i = 0; i < MM_N_OUT_BUCKETS; ++i) + SLIST_FOREACH(pob, &mm->packet_out_bufs[i], next_pob) + size += packet_out_sizes[i]; + + for (i = 0; i < MM_N_IN_BUCKETS; ++i) + SLIST_FOREACH(pib, &mm->packet_in_bufs[i], next_pib) + size += packet_in_sizes[i]; + + SLIST_FOREACH(fkp, &mm->four_k_pages, next_fkp) + size += 0x1000; + + SLIST_FOREACH(skp, &mm->sixteen_k_pages, next_skp) + size += 0x4000; + + return size; +#else + return sizeof(*mm); +#endif +} diff --git a/external/lsquic/src/liblsquic/lsquic_mm.h b/external/lsquic/src/liblsquic/lsquic_mm.h new file mode 100644 index 0000000..f949691 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_mm.h @@ -0,0 +1,100 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_mm.h -- Memory manager. + * + * Allocators and in this class are meant to be used for the lifetime of + * QUIC engine. + */ + +#ifndef LSQUIC_MM_H +#define LSQUIC_MM_H 1 + +struct lsquic_engine_public; +struct lsquic_packet_in; +struct lsquic_packet_out; +struct ack_info; +struct malo; +struct mini_conn; + +struct pool_stats +{ + unsigned ps_calls; /* Calls to get/put */ + unsigned ps_max; /* Maximum during this sample period */ + unsigned ps_max_avg, /* Average maximum value */ + ps_max_var; + unsigned ps_objs_all; /* Number of objects owned by the pool */ + unsigned ps_objs_out; /* Number of objects in use */ +}; + +#define MM_N_OUT_BUCKETS 5 +#define MM_N_IN_BUCKETS 3 + +struct lsquic_mm { + struct ack_info *acki; + struct { + struct malo *stream_frame; /* For struct stream_frame */ + struct malo *frame_rec_arr; /* For struct frame_rec_arr */ + struct malo *mini_conn; /* For struct mini_conn */ + struct malo *mini_conn_ietf;/* For struct ietf_mini_conn */ + struct malo *packet_in; /* For struct lsquic_packet_in */ + struct malo *packet_out; /* For struct lsquic_packet_out */ + struct malo *dcid_elem; /* For struct dcid_elem */ + struct malo *stream_hq_frame; /* For struct stream_hq_frame */ + } malo; + TAILQ_HEAD(, lsquic_packet_in) free_packets_in; + SLIST_HEAD(, packet_out_buf) packet_out_bufs[MM_N_OUT_BUCKETS]; + struct pool_stats packet_out_bstats[MM_N_OUT_BUCKETS]; + struct pool_stats packet_in_bstats[MM_N_IN_BUCKETS]; + SLIST_HEAD(, packet_in_buf) packet_in_bufs[MM_N_IN_BUCKETS]; + SLIST_HEAD(, four_k_page) four_k_pages; + SLIST_HEAD(, sixteen_k_page) sixteen_k_pages; + char *ack_str; +}; + +int +lsquic_mm_init (struct lsquic_mm *); + +void +lsquic_mm_cleanup (struct lsquic_mm *); + +struct lsquic_packet_in * +lsquic_mm_get_packet_in (struct lsquic_mm *); + +void +lsquic_mm_put_packet_in (struct lsquic_mm *, struct lsquic_packet_in *); + +#define lsquic_packet_in_put(mm, p) do { \ + assert((p)->pi_refcnt != 0); \ + if (--(p)->pi_refcnt == 0) \ + lsquic_mm_put_packet_in(mm, p); \ +} while (0) + +struct lsquic_packet_out * +lsquic_mm_get_packet_out (struct lsquic_mm *, struct malo *, + unsigned short size); + +void +lsquic_mm_put_packet_out (struct lsquic_mm *, struct lsquic_packet_out *); + +void * +lsquic_mm_get_packet_in_buf (struct lsquic_mm *, size_t); + +void +lsquic_mm_put_packet_in_buf (struct lsquic_mm *, void *, size_t); + +void * +lsquic_mm_get_4k (struct lsquic_mm *); + +void +lsquic_mm_put_4k (struct lsquic_mm *, void *); + +void * +lsquic_mm_get_16k (struct lsquic_mm *); + +void +lsquic_mm_put_16k (struct lsquic_mm *, void *); + +size_t +lsquic_mm_mem_used (const struct lsquic_mm *mm); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_pacer.c b/external/lsquic/src/liblsquic/lsquic_pacer.c new file mode 100644 index 0000000..22842c5 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_pacer.c @@ -0,0 +1,160 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifdef WIN32 +#include +#endif + +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_pacer.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_gquic.h" +#include "lsquic_packet_out.h" +#include "lsquic_util.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_PACER +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(pacer->pa_conn) +#include "lsquic_logger.h" + +#ifndef MAX +# define MAX(a, b) ((a) > (b) ? (a) : (b)) +#endif + + +void +lsquic_pacer_init (struct pacer *pacer, const struct lsquic_conn *conn, + unsigned clock_granularity) +{ + memset(pacer, 0, sizeof(*pacer)); + pacer->pa_burst_tokens = 10; + pacer->pa_conn = conn; + pacer->pa_clock_granularity = clock_granularity; +} + + +void +lsquic_pacer_cleanup (struct pacer *pacer) +{ +#ifndef NDEBUG + LSQ_DEBUG("scheduled calls: %u", pacer->pa_stats.n_scheduled); +#endif +} + + +void +lsquic_pacer_packet_scheduled (struct pacer *pacer, unsigned n_in_flight, + int in_recovery, tx_time_f tx_time, void *tx_ctx) +{ + lsquic_time_t delay, sched_time; + int app_limited, making_up; + +#ifndef NDEBUG + ++pacer->pa_stats.n_scheduled; +#endif + ++pacer->pa_n_scheduled; + + if (n_in_flight == 0 && !in_recovery) + { + pacer->pa_burst_tokens = 10; + LSQ_DEBUG("%s: replenish tokens: %u", __func__, pacer->pa_burst_tokens); + } + + if (pacer->pa_burst_tokens > 0) + { + --pacer->pa_burst_tokens; + pacer->pa_flags &= ~PA_LAST_SCHED_DELAYED; + pacer->pa_next_sched = 0; + pacer->pa_last_delayed = 0; + LSQ_DEBUG("%s: tokens: %u", __func__, pacer->pa_burst_tokens); + return; + } + + sched_time = pacer->pa_now; + delay = tx_time(tx_ctx); + if (pacer->pa_flags & PA_LAST_SCHED_DELAYED) + { + pacer->pa_next_sched += delay; + app_limited = pacer->pa_last_delayed != 0 + && pacer->pa_last_delayed + delay <= sched_time; + making_up = pacer->pa_next_sched <= sched_time; + LSQ_DEBUG("making up: %d; app limited; %d", making_up, app_limited); + if (making_up && !app_limited) + pacer->pa_last_delayed = sched_time; + else + { + pacer->pa_flags &= ~PA_LAST_SCHED_DELAYED; + pacer->pa_last_delayed = 0; + } + } + else + pacer->pa_next_sched = MAX(pacer->pa_next_sched + delay, + sched_time + delay); + LSQ_DEBUG("next_sched is set to %"PRIu64" usec from now", + pacer->pa_next_sched - pacer->pa_now); +} + + +void +lsquic_pacer_loss_event (struct pacer *pacer) +{ + pacer->pa_burst_tokens = 0; + LSQ_DEBUG("%s: tokens: %u", __func__, pacer->pa_burst_tokens); +} + + +int +lsquic_pacer_can_schedule (struct pacer *pacer, unsigned n_in_flight) +{ + int can; + + if (pacer->pa_burst_tokens > 0 || n_in_flight == 0) + can = 1; + else if (pacer->pa_next_sched > pacer->pa_now + pacer->pa_clock_granularity) + { + pacer->pa_flags |= PA_LAST_SCHED_DELAYED; + can = 0; + } + else + can = 1; + + LSQ_DEBUG("%s: %d", __func__, can); + return can; +} + + +int +lsquic_pacer_can_schedule_probe (const struct pacer *pacer, + unsigned n_in_flight, lsquic_time_t tx_time) +{ + return pacer->pa_burst_tokens > 1 /* Double packet size, want two tokens */ + || n_in_flight == 0 + || pacer->pa_next_sched > pacer->pa_now + tx_time / 2; +} + + +void +lsquic_pacer_tick_in (struct pacer *pacer, lsquic_time_t now) +{ + assert(now >= pacer->pa_now); + pacer->pa_now = now; + if (pacer->pa_flags & PA_LAST_SCHED_DELAYED) + pacer->pa_flags |= PA_DELAYED_ON_TICK_IN; + pacer->pa_n_scheduled = 0; +} + + +void +lsquic_pacer_tick_out (struct pacer *pacer) +{ + if ((pacer->pa_flags & PA_DELAYED_ON_TICK_IN) + && pacer->pa_n_scheduled == 0 + && pacer->pa_now > pacer->pa_next_sched) + { + LSQ_DEBUG("tick passed without scheduled packets: reset delayed flag"); + pacer->pa_flags &= ~PA_LAST_SCHED_DELAYED; + } + pacer->pa_flags &= ~PA_DELAYED_ON_TICK_IN; +} diff --git a/external/lsquic/src/liblsquic/lsquic_pacer.h b/external/lsquic/src/liblsquic/lsquic_pacer.h new file mode 100644 index 0000000..430dc19 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_pacer.h @@ -0,0 +1,74 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_PACER_H +#define LSQUIC_PACER_H 1 + +struct lsquic_conn; + +struct pacer +{ + const struct lsquic_conn + *pa_conn; /* Used for logging */ + lsquic_time_t pa_next_sched; + lsquic_time_t pa_last_delayed; + lsquic_time_t pa_now; + + /* All tick times are in microseconds */ + + unsigned pa_clock_granularity; + + unsigned pa_burst_tokens; + unsigned pa_n_scheduled; /* Within single tick */ + enum { + PA_LAST_SCHED_DELAYED = (1 << 0), + PA_DELAYED_ON_TICK_IN = (1 << 1), + } pa_flags; +#ifndef NDEBUG + struct { + unsigned n_scheduled; + } pa_stats; +#endif +}; + + +typedef lsquic_time_t (*tx_time_f)(void *ctx); + +void +lsquic_pacer_init (struct pacer *, const struct lsquic_conn *, + unsigned clock_granularity); + +void +lsquic_pacer_cleanup (struct pacer *); + +void +lsquic_pacer_tick_in (struct pacer *, lsquic_time_t); + +void +lsquic_pacer_tick_out (struct pacer *); + +int +lsquic_pacer_can_schedule (struct pacer *, unsigned n_in_flight); + +void +lsquic_pacer_packet_scheduled (struct pacer *pacer, unsigned n_in_flight, + int in_recovery, tx_time_f tx_time, void *tx_ctx); + +void +lsquic_pacer_loss_event (struct pacer *); + +static inline int +lsquic_pacer_delayed (const struct pacer *pacer) +{ + return pacer->pa_flags & PA_LAST_SCHED_DELAYED; +} + +static inline lsquic_time_t +lsquic_pacer_next_sched (struct pacer *pacer) +{ + return +pacer->pa_next_sched; +} + +int +lsquic_pacer_can_schedule_probe (const struct pacer *, + unsigned n_in_flight, lsquic_time_t tx_time); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_packet_common.c b/external/lsquic/src/liblsquic/lsquic_packet_common.c new file mode 100644 index 0000000..dde7a1a --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_packet_common.c @@ -0,0 +1,119 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_packet_common.c -- some common packet-related routines + */ + +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_logger.h" +#include "lsquic_enc_sess.h" +#include "lsquic_packet_common.h" + + +const char * const frame_type_2_str[N_QUIC_FRAMES] = { + [QUIC_FRAME_INVALID] = "QUIC_FRAME_INVALID", + [QUIC_FRAME_STREAM] = "QUIC_FRAME_STREAM", + [QUIC_FRAME_ACK] = "QUIC_FRAME_ACK", + [QUIC_FRAME_PADDING] = "QUIC_FRAME_PADDING", + [QUIC_FRAME_RST_STREAM] = "QUIC_FRAME_RST_STREAM", + [QUIC_FRAME_CONNECTION_CLOSE] = "QUIC_FRAME_CONNECTION_CLOSE", + [QUIC_FRAME_GOAWAY] = "QUIC_FRAME_GOAWAY", + [QUIC_FRAME_WINDOW_UPDATE] = "QUIC_FRAME_WINDOW_UPDATE", + [QUIC_FRAME_BLOCKED] = "QUIC_FRAME_BLOCKED", + [QUIC_FRAME_STOP_WAITING] = "QUIC_FRAME_STOP_WAITING", + [QUIC_FRAME_PING] = "QUIC_FRAME_PING", + [QUIC_FRAME_MAX_DATA] = "QUIC_FRAME_MAX_DATA", + [QUIC_FRAME_MAX_STREAM_DATA] = "QUIC_FRAME_MAX_STREAM_DATA", + [QUIC_FRAME_MAX_STREAMS] = "QUIC_FRAME_MAX_STREAMS", + [QUIC_FRAME_STREAM_BLOCKED] = "QUIC_FRAME_STREAM_BLOCKED", + [QUIC_FRAME_STREAMS_BLOCKED] = "QUIC_FRAME_STREAMS_BLOCKED", + [QUIC_FRAME_NEW_CONNECTION_ID] = "QUIC_FRAME_NEW_CONNECTION_ID", + [QUIC_FRAME_STOP_SENDING] = "QUIC_FRAME_STOP_SENDING", + [QUIC_FRAME_PATH_CHALLENGE] = "QUIC_FRAME_PATH_CHALLENGE", + [QUIC_FRAME_PATH_RESPONSE] = "QUIC_FRAME_PATH_RESPONSE", + [QUIC_FRAME_CRYPTO] = "QUIC_FRAME_CRYPTO", + [QUIC_FRAME_NEW_TOKEN] = "QUIC_FRAME_NEW_TOKEN", + [QUIC_FRAME_RETIRE_CONNECTION_ID] = "QUIC_FRAME_RETIRE_CONNECTION_ID", + [QUIC_FRAME_HANDSHAKE_DONE] = "QUIC_FRAME_HANDSHAKE_DONE", + [QUIC_FRAME_ACK_FREQUENCY] = "QUIC_FRAME_ACK_FREQUENCY", + [QUIC_FRAME_TIMESTAMP] = "QUIC_FRAME_TIMESTAMP", + [QUIC_FRAME_DATAGRAM] = "QUIC_FRAME_DATAGRAM", +}; + + +const char * +lsquic_frame_types_to_str (char *buf, size_t bufsz, + enum quic_ft_bit frame_types) +{ + char *p; + int i, w; + size_t sz; + + if (bufsz > 0) + buf[0] = '\0'; + + p = buf; + for (i = 0; i < N_QUIC_FRAMES; ++i) + { + if (frame_types & (1 << i)) + { + sz = bufsz - (p - buf); + w = snprintf(p, sz, "%.*s%s", p > buf, " ", + frame_type_2_str[i] + sizeof("QUIC_FRAME_") - 1); + if (w > (int) sz) + { + LSQ_WARN("not enough room for all frame types"); + break; + } + p += w; + } + frame_types &= ~(1 << i); + } + + return buf; +} + + +const char *const lsquic_hety2str[] = +{ + [HETY_SHORT] = "SHORT", + [HETY_VERNEG] = "VERNEG", + [HETY_INITIAL] = "INIT", + [HETY_RETRY] = "RETRY", + [HETY_HANDSHAKE] = "HSK", + [HETY_0RTT] = "0-RTT", +}; + + +/* [draft-ietf-quic-tls-14], Section 4 */ +const enum packnum_space lsquic_hety2pns[] = +{ + [HETY_SHORT] = PNS_APP, + [HETY_VERNEG] = 0, + [HETY_INITIAL] = PNS_INIT, + [HETY_RETRY] = 0, + [HETY_HANDSHAKE] = PNS_HSK, + [HETY_0RTT] = PNS_APP, +}; + + +/* [draft-ietf-quic-tls-14], Section 4 */ +const enum packnum_space lsquic_enclev2pns[] = +{ + [ENC_LEV_INIT] = PNS_INIT, + [ENC_LEV_HSK] = PNS_HSK, + [ENC_LEV_0RTT] = PNS_APP, + [ENC_LEV_APP] = PNS_APP, +}; + + +const char *const lsquic_pns2str[] = +{ + [PNS_INIT] = "INIT pns", + [PNS_HSK] = "HSK pns", + [PNS_APP] = "APP pns", +}; diff --git a/external/lsquic/src/liblsquic/lsquic_packet_common.h b/external/lsquic/src/liblsquic/lsquic_packet_common.h new file mode 100644 index 0000000..c82d058 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_packet_common.h @@ -0,0 +1,233 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_PACKET_COMMON_H +#define LSQUIC_PACKET_COMMON_H 1 + + +enum PACKET_PUBLIC_FLAGS +{ + PACKET_PUBLIC_FLAGS_VERSION = 1, + PACKET_PUBLIC_FLAGS_RST = 2, + PACKET_PUBLIC_FLAGS_NONCE = 4, + PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID = 8, + PACKET_PUBLIC_FLAGS_MULTIPATH = 1 << 6, + PACKET_PUBLIC_FLAGS_TWO_OR_MORE_BYTES = 1 << 7, +}; + + +/* The list of frames contains frames both in GQUIC and in IETF QUIC. + * They are marked as follows: + * G Applicable to GQUIC only + * I Applicable to IETF QUIC only + * B Applicable to both GQUIC and IETF QUIC. + */ +enum quic_frame_type +{ + QUIC_FRAME_INVALID, + QUIC_FRAME_STREAM, /* B */ + QUIC_FRAME_ACK, /* B */ + QUIC_FRAME_PADDING, /* B */ + QUIC_FRAME_RST_STREAM, /* B */ + QUIC_FRAME_CONNECTION_CLOSE, /* B */ + QUIC_FRAME_GOAWAY, /* G */ + QUIC_FRAME_WINDOW_UPDATE, /* G */ + QUIC_FRAME_BLOCKED, /* B */ + QUIC_FRAME_STOP_WAITING, /* G */ + QUIC_FRAME_PING, /* B */ + QUIC_FRAME_MAX_DATA, /* I */ + QUIC_FRAME_MAX_STREAM_DATA, /* I */ + QUIC_FRAME_MAX_STREAMS, /* I */ + QUIC_FRAME_STREAM_BLOCKED, /* I */ + QUIC_FRAME_STREAMS_BLOCKED, /* I */ + QUIC_FRAME_NEW_CONNECTION_ID, /* I */ + QUIC_FRAME_STOP_SENDING, /* I */ + QUIC_FRAME_PATH_CHALLENGE, /* I */ + QUIC_FRAME_PATH_RESPONSE, /* I */ + QUIC_FRAME_CRYPTO, /* B */ + QUIC_FRAME_RETIRE_CONNECTION_ID,/* I */ + QUIC_FRAME_NEW_TOKEN, /* I */ + QUIC_FRAME_HANDSHAKE_DONE, /* I */ + QUIC_FRAME_ACK_FREQUENCY, /* I */ + QUIC_FRAME_TIMESTAMP, /* I */ + QUIC_FRAME_DATAGRAM, /* I */ + N_QUIC_FRAMES +}; + +enum quic_ft_bit { + QUIC_FTBIT_INVALID = 1 << QUIC_FRAME_INVALID, + QUIC_FTBIT_STREAM = 1 << QUIC_FRAME_STREAM, + QUIC_FTBIT_ACK = 1 << QUIC_FRAME_ACK, + QUIC_FTBIT_PADDING = 1 << QUIC_FRAME_PADDING, + QUIC_FTBIT_RST_STREAM = 1 << QUIC_FRAME_RST_STREAM, + QUIC_FTBIT_CONNECTION_CLOSE = 1 << QUIC_FRAME_CONNECTION_CLOSE, + QUIC_FTBIT_GOAWAY = 1 << QUIC_FRAME_GOAWAY, + QUIC_FTBIT_WINDOW_UPDATE = 1 << QUIC_FRAME_WINDOW_UPDATE, + QUIC_FTBIT_BLOCKED = 1 << QUIC_FRAME_BLOCKED, + QUIC_FTBIT_STOP_WAITING = 1 << QUIC_FRAME_STOP_WAITING, + QUIC_FTBIT_PING = 1 << QUIC_FRAME_PING, + QUIC_FTBIT_MAX_DATA = 1 << QUIC_FRAME_MAX_DATA, + QUIC_FTBIT_MAX_STREAM_DATA = 1 << QUIC_FRAME_MAX_STREAM_DATA, + QUIC_FTBIT_MAX_STREAMS = 1 << QUIC_FRAME_MAX_STREAMS, + QUIC_FTBIT_STREAM_BLOCKED = 1 << QUIC_FRAME_STREAM_BLOCKED, + QUIC_FTBIT_STREAMS_BLOCKED = 1 << QUIC_FRAME_STREAMS_BLOCKED, + QUIC_FTBIT_NEW_CONNECTION_ID = 1 << QUIC_FRAME_NEW_CONNECTION_ID, + QUIC_FTBIT_STOP_SENDING = 1 << QUIC_FRAME_STOP_SENDING, + QUIC_FTBIT_PATH_CHALLENGE = 1 << QUIC_FRAME_PATH_CHALLENGE, + QUIC_FTBIT_PATH_RESPONSE = 1 << QUIC_FRAME_PATH_RESPONSE, + QUIC_FTBIT_CRYPTO = 1 << QUIC_FRAME_CRYPTO, + QUIC_FTBIT_NEW_TOKEN = 1 << QUIC_FRAME_NEW_TOKEN, + QUIC_FTBIT_RETIRE_CONNECTION_ID = 1 << QUIC_FRAME_RETIRE_CONNECTION_ID, + QUIC_FTBIT_HANDSHAKE_DONE = 1 << QUIC_FRAME_HANDSHAKE_DONE, + QUIC_FTBIT_ACK_FREQUENCY = 1 << QUIC_FRAME_ACK_FREQUENCY, + QUIC_FTBIT_TIMESTAMP = 1 << QUIC_FRAME_TIMESTAMP, + QUIC_FTBIT_DATAGRAM = 1 << QUIC_FRAME_DATAGRAM, +}; + +extern const char * const frame_type_2_str[N_QUIC_FRAMES]; + +#define QUIC_FRAME_PRELEN (sizeof("QUIC_FRAME_")) +#define QUIC_FRAME_SLEN(x) (sizeof(#x) - QUIC_FRAME_PRELEN) +#define QUIC_FRAME_NAME(i) (frame_type_2_str[i] + QUIC_FRAME_PRELEN - 1) + + + /* We don't need to include INVALID frame in this list because it is + * never a part of any frame list bitmask (e.g. po_frame_types). + */ +#define lsquic_frame_types_str_sz \ + QUIC_FRAME_SLEN(QUIC_FRAME_STREAM) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_ACK) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_PADDING) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_RST_STREAM) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_CONNECTION_CLOSE) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_GOAWAY) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_WINDOW_UPDATE) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_BLOCKED) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_STOP_WAITING) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_PING) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_MAX_DATA) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_MAX_STREAM_DATA) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_MAX_STREAMS) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_STREAM_BLOCKED) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_STREAMS_BLOCKED) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_NEW_CONNECTION_ID) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_STOP_SENDING) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_PATH_CHALLENGE) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_PATH_RESPONSE) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_CRYPTO) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_RETIRE_CONNECTION_ID) \ + + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_NEW_TOKEN) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_HANDSHAKE_DONE) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_ACK_FREQUENCY) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_TIMESTAMP) + 1 + \ + QUIC_FRAME_SLEN(QUIC_FRAME_DATAGRAM) + 1 + \ + 0 + + +const char * +lsquic_frame_types_to_str (char *buf, size_t bufsz, enum quic_ft_bit); + +/* This value represents a different number of bytes used to encode the packet + * length based on whether GQUIC or IQUIC is used. + */ +enum packno_bits +{ + PACKNO_BITS_0 = 0, + GQUIC_PACKNO_LEN_1 = PACKNO_BITS_0, + IQUIC_PACKNO_LEN_1 = PACKNO_BITS_0, + PACKNO_BITS_1 = 1, + GQUIC_PACKNO_LEN_2 = PACKNO_BITS_1, + IQUIC_PACKNO_LEN_2 = PACKNO_BITS_1, + PACKNO_BITS_2 = 2, + GQUIC_PACKNO_LEN_4 = PACKNO_BITS_2, + IQUIC_PACKNO_LEN_3 = PACKNO_BITS_2, + PACKNO_BITS_3 = 3, + GQUIC_PACKNO_LEN_6 = PACKNO_BITS_3, + IQUIC_PACKNO_LEN_4 = PACKNO_BITS_3, +}; + + +enum header_type +{ + HETY_NOT_SET, /* This value must be zero */ + HETY_SHORT = HETY_NOT_SET, /* This value must be zero */ + HETY_VERNEG, + HETY_INITIAL, + HETY_RETRY, + HETY_HANDSHAKE, + HETY_0RTT, +}; + +extern const char *const lsquic_hety2str[]; + +#define IQUIC_MAX_PACKNO ((1ULL << 62) - 1) +#define IQUIC_INVALID_PACKNO (IQUIC_MAX_PACKNO + 1) + +/* IETF QUIC only: */ +static inline int +is_valid_packno (uint64_t packno) +{ + return packno <= IQUIC_MAX_PACKNO; +} + +enum packnum_space +{ + PNS_INIT, + PNS_HSK, + PNS_APP, + IMICO_N_PNS = PNS_APP, + N_PNS +}; + +extern const enum packnum_space lsquic_hety2pns[]; +extern const enum packnum_space lsquic_enclev2pns[]; +extern const char *const lsquic_pns2str[]; + +#define ALL_IQUIC_FRAMES ( \ + QUIC_FTBIT_STREAM \ + | QUIC_FTBIT_ACK \ + | QUIC_FTBIT_PADDING \ + | QUIC_FTBIT_RST_STREAM \ + | QUIC_FTBIT_CONNECTION_CLOSE \ + | QUIC_FTBIT_BLOCKED \ + | QUIC_FTBIT_PING \ + | QUIC_FTBIT_MAX_DATA \ + | QUIC_FTBIT_MAX_STREAM_DATA \ + | QUIC_FTBIT_MAX_STREAMS \ + | QUIC_FTBIT_STREAM_BLOCKED \ + | QUIC_FTBIT_STREAMS_BLOCKED \ + | QUIC_FTBIT_NEW_CONNECTION_ID \ + | QUIC_FTBIT_STOP_SENDING \ + | QUIC_FTBIT_PATH_CHALLENGE \ + | QUIC_FTBIT_PATH_RESPONSE \ + | QUIC_FTBIT_RETIRE_CONNECTION_ID \ + | QUIC_FTBIT_NEW_TOKEN \ + | QUIC_FTBIT_HANDSHAKE_DONE \ + | QUIC_FTBIT_ACK_FREQUENCY \ + | QUIC_FTBIT_TIMESTAMP \ + | QUIC_FTBIT_CRYPTO ) + +/* [draft-ietf-quic-transport-24] Section 1.2 */ +#define IQUIC_FRAME_ACKABLE_MASK ( \ + (ALL_IQUIC_FRAMES | QUIC_FTBIT_DATAGRAM) \ + & ~(QUIC_FTBIT_ACK | QUIC_FTBIT_PADDING \ + | QUIC_FTBIT_CONNECTION_CLOSE | QUIC_FTBIT_TIMESTAMP)) + +/* [draft-ietf-quic-transport-20], Section 13.2 */ +/* We bend some rules and retransmit BLOCKED, MAX_DATA, MAX_STREAM_DATA, + * MAX_STREAMS, STREAM_BLOCKED, and STREAMS_BLOCKED frames instead of + * regenerating them. This keeps the code simple(r). + */ +#define IQUIC_FRAME_RETX_MASK ( \ + ALL_IQUIC_FRAMES & ~(QUIC_FTBIT_PADDING | QUIC_FTBIT_PATH_RESPONSE \ + | QUIC_FTBIT_PATH_CHALLENGE | QUIC_FTBIT_ACK \ + | QUIC_FTBIT_TIMESTAMP | QUIC_FTBIT_PING)) + +extern const enum quic_ft_bit lsquic_legal_frames_by_level[][4]; + +/* Applies both to gQUIC and IETF QUIC, thus "B" for "both" */ +#define BQUIC_FRAME_REGEN_MASK ((1 << QUIC_FRAME_ACK) \ + | (1 << QUIC_FRAME_PATH_CHALLENGE) | (1 << QUIC_FRAME_PATH_RESPONSE) \ + | (1 << QUIC_FRAME_STOP_WAITING) | (1 << QUIC_FRAME_TIMESTAMP) \ + | (1 << QUIC_FRAME_DATAGRAM)) + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_packet_gquic.c b/external/lsquic/src/liblsquic/lsquic_packet_gquic.c new file mode 100644 index 0000000..21a9c4b --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_packet_gquic.c @@ -0,0 +1,33 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include + +#include "lsquic_packet_common.h" +#include "lsquic_packet_gquic.h" + + + +lsquic_packno_t +lsquic_restore_packno (lsquic_packno_t cur_packno, + unsigned len, + lsquic_packno_t max_packno) +{ + lsquic_packno_t candidates[3], epoch_delta; + int64_t diffs[3]; + unsigned min; + + epoch_delta = 1ULL << (len << 3); + candidates[1] = (max_packno & ~(epoch_delta - 1)) + cur_packno; + candidates[0] = candidates[1] - epoch_delta; + candidates[2] = candidates[1] + epoch_delta; + + diffs[0] = llabs((int64_t) candidates[0] - (int64_t) max_packno); + diffs[1] = llabs((int64_t) candidates[1] - (int64_t) max_packno); + diffs[2] = llabs((int64_t) candidates[2] - (int64_t) max_packno); + + min = diffs[1] < diffs[0]; + if (diffs[2] < diffs[min]) + min = 2; + + return candidates[min]; +} diff --git a/external/lsquic/src/liblsquic/lsquic_packet_gquic.h b/external/lsquic/src/liblsquic/lsquic_packet_gquic.h new file mode 100644 index 0000000..faf0ec5 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_packet_gquic.h @@ -0,0 +1,88 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_PACKET_GQUIC_H +#define LSQUIC_PACKET_GQUIC_H 1 + +#include + +#include "lsquic_int_types.h" + + +#define GQUIC_FRAME_ACKABLE_MASK ( \ + (1 << QUIC_FRAME_STREAM) \ + | (1 << QUIC_FRAME_RST_STREAM) \ + | (1 << QUIC_FRAME_GOAWAY) \ + | (1 << QUIC_FRAME_WINDOW_UPDATE) \ + | (1 << QUIC_FRAME_PING) \ + | (1 << QUIC_FRAME_BLOCKED) \ + | (1 << QUIC_FRAME_CRYPTO) \ +) + +#define GQUIC_FRAME_ACKABLE(frame_type) ((1 << (frame_type)) & GQUIC_FRAME_ACKABLE_MASK) + +#define GQUIC_FRAME_RETRANSMITTABLE_MASK ( \ + (1 << QUIC_FRAME_STREAM) \ + | (1 << QUIC_FRAME_RST_STREAM) \ + | (1 << QUIC_FRAME_GOAWAY) \ + | (1 << QUIC_FRAME_WINDOW_UPDATE) \ + | (1 << QUIC_FRAME_BLOCKED) \ + | (1 << QUIC_FRAME_CONNECTION_CLOSE) \ + | (1 << QUIC_FRAME_CRYPTO) \ + | (1 << QUIC_FRAME_PING) \ +) + +#define GQUIC_FRAME_RETRANSMITTABLE(frame_type) \ + ((1 << (frame_type)) & GQUIC_FRAME_RETRANSMITTABLE_MASK) + +#define GQUIC_MAX_PUBHDR_SZ (1 /* Type */ + 8 /* CID */ + 4 /* Version */ \ + + 32 /* Nonce */ + 6 /* Packet Number */ ) + +#define GQUIC_MIN_PUBHDR_SZ (1 /* Type */ + 1 /* Packet number */) + +#define GQUIC_IETF_LONG_HEADER_SIZE (1 /* Type */ + 4 /* Version */ \ + + 1 /* DCIL/SCIL */ + 8 /* CID */ + 4 /* Packet number */) + +/* XXX Nonce? */ +#define IQUIC_MAX_PUBHDR_SZ GQUIC_IETF_LONG_HEADER_SIZE + +#define IQUIC_MIN_PUBHDR_SZ (1 /* Type */ + 8 /* CID */ \ + + 1 /* Packet number */) + +#define QUIC_MAX_PUBHDR_SZ (GQUIC_MAX_PUBHDR_SZ > IQUIC_MAX_PUBHDR_SZ \ + ? GQUIC_MAX_PUBHDR_SZ : IQUIC_MAX_PUBHDR_SZ) + +#define QUIC_MIN_PUBHDR_SZ (GQUIC_MIN_PUBHDR_SZ < IQUIC_MIN_PUBHDR_SZ \ + ? GQUIC_MIN_PUBHDR_SZ : IQUIC_MIN_PUBHDR_SZ) + +/* 12 bytes of FNV hash or encryption IV */ +#define GQUIC_PACKET_HASH_SZ 12 + +/* [draft-hamilton-quic-transport-protocol-01], Section 7 */ +#define GQUIC_MAX_IPv4_PACKET_SZ 1370 +#define GQUIC_MAX_IPv6_PACKET_SZ 1350 + +#define GQUIC_MAX_PACKET_SZ (GQUIC_MAX_IPv4_PACKET_SZ > \ + GQUIC_MAX_IPv6_PACKET_SZ ? GQUIC_MAX_IPv4_PACKET_SZ : GQUIC_MAX_IPv6_PACKET_SZ) + +#define GQUIC_MIN_PACKET_OVERHEAD (GQUIC_PACKET_HASH_SZ + GQUIC_MIN_PUBHDR_SZ) + +#define GQUIC_MAX_PAYLOAD_SZ (GQUIC_MAX_PACKET_SZ - GQUIC_MIN_PACKET_OVERHEAD) + +#define GQUIC_WUF_SZ 13 /* Type (1) + Stream ID (4) + Offset (8) */ +#define GQUIC_BLOCKED_FRAME_SZ 5 /* Type (1) + Stream ID (4) */ +#define GQUIC_RST_STREAM_SZ 17 /* Type (1) + Stream ID (4) + Offset (8) + + Error code (4) */ +#define GQUIC_GOAWAY_FRAME_SZ 11 /* Type (1) + Error code (4) + Stream ID (4) + + Reason phrase length (2) */ + +static inline uint64_t +gquic_packno_bits2len (uint64_t b) +{ + return (b << 1) + !b; +} + +lsquic_packno_t +lsquic_restore_packno (lsquic_packno_t cur_packno, + unsigned packet_len, + lsquic_packno_t max_packno); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_packet_ietf.h b/external/lsquic/src/liblsquic/lsquic_packet_ietf.h new file mode 100644 index 0000000..c744cf9 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_packet_ietf.h @@ -0,0 +1,37 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_PACKET_IETF_H +#define LSQUIC_PACKET_IETF_H 1 + +#define IQUIC_MAX_IPv4_PACKET_SZ 1252 +#define IQUIC_MAX_IPv6_PACKET_SZ 1232 + +static inline unsigned +iquic_packno_bits2len(uint64_t b) +{ + return (b) + 1; +} + +/* [draft-ietf-quic-transport-22] Section 7.2: + " + When an Initial packet is sent by a client that has not previously + received an Initial or Retry packet from the server, it populates the + Destination Connection ID field with an unpredictable value. This + MUST be at least 8 bytes in length. + " + * Because the server always generates 8-byte CIDs, the DCID length cannot be + * smaller than 8 even if the client received an Initial or Retry packet from + * us. + */ +#define MIN_INITIAL_DCID_LEN 8 + +/* [draft-ietf-quic-transport-24] Section 8.1 */ +#define IQUIC_MIN_INIT_PACKET_SZ 1200 + +/* Our stream code makes an assumption that packet size is smaller than the + * maximum HTTP/3 DATA frame size we can generate. + */ +#define IQUIC_MAX_OUT_PACKET_SZ ((1u << 14) - 1) + +#define QUIC_BIT 0x40 + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_packet_in.c b/external/lsquic/src/liblsquic/lsquic_packet_in.c new file mode 100644 index 0000000..3bc73a6 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_packet_in.c @@ -0,0 +1,63 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifdef WIN32 +#include +#endif + +#include "lsquic_int_types.h" +#include "lsquic_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" + + +int +lsquic_packet_in_ver_first (const lsquic_packet_in_t *packet_in, + struct ver_iter *vi, lsquic_ver_tag_t *ver_tag) +{ + vi->packet_in = packet_in; + vi->off = packet_in->pi_quic_ver; + return lsquic_packet_in_ver_next(vi, ver_tag); +} + + +int +lsquic_packet_in_ver_next (struct ver_iter *vi, lsquic_ver_tag_t *ver_tag) +{ + if (vi->off + 4 <= vi->packet_in->pi_header_sz) + { + memcpy(ver_tag, vi->packet_in->pi_data + vi->off, 4); + vi->off += 4; + return 1; + } + else + { + assert(vi->packet_in->pi_header_sz == vi->off); + return 0; + } +} + + +size_t +lsquic_packet_in_mem_used (const struct lsquic_packet_in *packet_in) +{ + size_t size; + + size = sizeof(*packet_in); + + if (packet_in->pi_flags & PI_OWN_DATA) + size += packet_in->pi_data_sz; + + return size; +} + + +void +lsquic_scid_from_packet_in (const struct lsquic_packet_in *packet_in, + lsquic_cid_t *scid) +{ + scid->len = packet_in->pi_scid_len; + memcpy(scid->idbuf, packet_in->pi_data + packet_in->pi_scid_off, scid->len); +} diff --git a/external/lsquic/src/liblsquic/lsquic_packet_in.h b/external/lsquic/src/liblsquic/lsquic_packet_in.h new file mode 100644 index 0000000..5652f4c --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_packet_in.h @@ -0,0 +1,220 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_packet_in.h + */ + +#ifndef LSQUIC_PACKET_IN_H +#define LSQUIC_PACKET_IN_H 1 + +#include "lsquic_packet_common.h" + +struct lsquic_packet_in; +struct lsquic_cid; + + +struct data_frame +{ + const unsigned char *df_data; /* Pointer to data */ + uint64_t df_offset; /* Stream offset */ + uint16_t df_read_off; /* Read offset */ + uint16_t df_size; /* Size of df_data */ + signed char df_fin; /* FIN? */ +}; + + +typedef struct stream_frame +{ + /* Stream frames are stored in a list inside "di nocopy" (if "di nocopy" + * is used). + */ + TAILQ_ENTRY(stream_frame) next_frame; + + /* `data_frame.df_data' points somewhere into the packet payload. The + * packet object is reference-counted. When the frame is freed, the + * packet is released via lsquic_packet_in_put(). + */ + struct lsquic_packet_in *packet_in; + + struct data_frame data_frame; + + lsquic_stream_id_t stream_id; /* Parsed from packet */ +} stream_frame_t; + + +#define DF_OFF(frame) (frame)->data_frame.df_offset +#define DF_ROFF(frame) (DF_OFF(frame) + (frame)->data_frame.df_read_off) +#define DF_FIN(frame) (frame)->data_frame.df_fin +#define DF_SIZE(frame) (frame)->data_frame.df_size +#define DF_END(frame) (DF_OFF(frame) + DF_SIZE(frame)) + + +typedef struct lsquic_packet_in +{ + TAILQ_ENTRY(lsquic_packet_in) pi_next; + lsquic_time_t pi_received; /* Time received */ + lsquic_cid_t pi_dcid; +#define pi_conn_id pi_dcid + lsquic_packno_t pi_packno; + enum quic_ft_bit pi_frame_types; + unsigned short pi_header_sz; /* Points to payload */ + unsigned short pi_data_sz; /* Data plus header */ + /* A packet may be referred to by one or more frames and packets_in + * list. + */ + unsigned short pi_refcnt; + unsigned short pi_hsk_stream; /* Offset to handshake stream + * frame, only valid if + * PI_HSK_STREAM is set. + */ + enum { + PI_DECRYPTED = (1 << 0), + PI_OWN_DATA = (1 << 1), /* We own pi_data */ + PI_CONN_ID = (1 << 2), /* pi_conn_id is set */ + PI_HSK_STREAM = (1 << 3), /* Has handshake data (mini only) */ + PI_FROM_MINI = (1 << 4), /* Handed off by mini connection */ +#define PIBIT_ENC_LEV_SHIFT 5 + PI_ENC_LEV_BIT_0= (1 << 5), /* Encodes encryption level */ + PI_ENC_LEV_BIT_1= (1 << 6), /* (see enum enc_level). */ + PI_GQUIC = (1 << 7), + PI_UNUSED_8 = (1 << 8), /* <-- hole, reuse me! */ +#define PIBIT_ECN_SHIFT 9 + PI_ECN_BIT_0 = (1 << 9), + PI_ECN_BIT_1 = (1 <<10), +#define PIBIT_SPIN_SHIFT 11 + PI_SPIN_BIT = (1 <<11), +#define PIBIT_BITS_SHIFT 12 + PI_BITS_BIT_0 = (1 <<12), + PI_BITS_BIT_1 = (1 <<13), + /* Square bit and loss bit flags are used for logging */ + PI_LOG_QL_BITS = (1 <<14), + PI_SQUARE_BIT = (1 <<15), + PI_LOSS_BIT = (1 <<16), + PI_VER_PARSED = (1 <<17), + PI_FIRST_INIT = (1 <<18), + PI_RETIRED_PATH = (1 <<19), + } pi_flags; + /* pi_token and pi_token_size are set in Initial and Retry packets */ + unsigned short pi_token_size; /* Size of the token */ + unsigned short pi_pkt_size; /* Size of the whole packet */ + unsigned char pi_token; /* Offset to token */ + /* pi_odcid and pi_odcid_len are only set in Retry packets for I-D < 25 */ + unsigned char pi_odcid; /* Offset to Original DCID */ + unsigned char pi_odcid_len; /* Size of ODCID */ + unsigned char pi_scid_off; /* Offset to SCID */ + unsigned char pi_scid_len; /* Size of SCID */ + unsigned char pi_quic_ver; /* Offset to QUIC version */ + unsigned char pi_nonce; /* Offset to nonce */ + enum header_type pi_header_type:8; + unsigned char pi_path_id; + unsigned char pi_version; /* parsed enum lsquic_version */ + /* If PI_OWN_DATA flag is not set, `pi_data' points to user-supplied + * packet data, which is NOT TO BE MODIFIED. + */ + unsigned char *pi_data; +} lsquic_packet_in_t; + + +static inline unsigned char +lsquic_packet_in_public_flags (const lsquic_packet_in_t *p) +{ + return p->pi_data[0]; +} + +static inline unsigned +lsquic_packet_in_is_gquic_prst (const lsquic_packet_in_t *p) +{ + return ((p->pi_flags & PI_GQUIC) + && (p->pi_data[0] & PACKET_PUBLIC_FLAGS_RST)); +} + +static inline unsigned +lsquic_packet_in_is_verneg (const lsquic_packet_in_t *p) +{ + return ((p->pi_flags & PI_GQUIC) ? + p->pi_data[0] & PACKET_PUBLIC_FLAGS_VERSION : + p->pi_header_type == HETY_VERNEG); +} + +static inline unsigned +lsquic_packet_in_packno_bits (const lsquic_packet_in_t *p) +{ + return (p->pi_flags >> PIBIT_BITS_SHIFT) & 3; +} + +static inline unsigned short +lsquic_packet_in_upref (lsquic_packet_in_t *p) +{ + return ++p->pi_refcnt; +} + +static inline lsquic_packet_in_t * +lsquic_packet_in_get (lsquic_packet_in_t *p) +{ + lsquic_packet_in_upref(p); + return p; +} + +static inline unsigned char * +lsquic_packet_in_nonce (const lsquic_packet_in_t *p) +{ + return p->pi_nonce ? p->pi_data + p->pi_nonce : NULL; +} + +static inline unsigned +lsquic_packet_in_enc_level (const lsquic_packet_in_t *p) +{ + return (p->pi_flags >> PIBIT_ENC_LEV_SHIFT) & 0x3; +} + +static inline unsigned +lsquic_packet_in_ecn (const lsquic_packet_in_t *p) +{ + return (p->pi_flags >> PIBIT_ECN_SHIFT) & 0x3; +} + +static inline unsigned +lsquic_packet_in_spin_bit (const lsquic_packet_in_t *p) +{ + return (p->pi_flags & PI_SPIN_BIT) > 0; +} + +/* PATH_CHALLENGE, PATH_RESPONSE, NEW_CONNECTION_ID, and PADDING frames + * are "probing frames", and all other frames are "non-probing frames". + * A packet containing only probing frames is a "probing packet", and a + * packet containing any other frame is a "non-probing packet". + * + * [draft-ietf-quic-transport-20], Section 9.1 + */ +static inline unsigned +lsquic_packet_in_non_probing(const lsquic_packet_in_t *p) +{ + return (!!(p->pi_frame_types & ~(QUIC_FTBIT_PATH_CHALLENGE + |QUIC_FTBIT_PATH_RESPONSE|QUIC_FTBIT_PADDING + |QUIC_FTBIT_NEW_CONNECTION_ID))); +} + +/* The version iterator is used on a version negotiation packet only. + * The iterator functions return 1 when next version is returned and + * 0 when there are no more versions. + */ +struct ver_iter +{ + const struct lsquic_packet_in *packet_in; + unsigned off; +}; + +int +lsquic_packet_in_ver_first (const lsquic_packet_in_t *packet_in, + struct ver_iter *, lsquic_ver_tag_t *ver_tag); + +int +lsquic_packet_in_ver_next (struct ver_iter *, lsquic_ver_tag_t *ver_tag); + +size_t +lsquic_packet_in_mem_used (const struct lsquic_packet_in *); + +void +lsquic_scid_from_packet_in (const struct lsquic_packet_in *, + struct lsquic_cid *); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_packet_out.c b/external/lsquic/src/liblsquic/lsquic_packet_out.c new file mode 100644 index 0000000..0b77b2e --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_packet_out.c @@ -0,0 +1,554 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_packet_out.c + */ + +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_malo.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_gquic.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_parse.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_logger.h" +#include "lsquic_ev_log.h" +#include "lsquic_conn.h" +#include "lsquic_enc_sess.h" + +typedef char _stream_rec_arr_is_at_most_64bytes[ + (sizeof(struct frame_rec_arr) <= 64)? 1: - 1]; + +static struct frame_rec * +frec_one_pofi_first (struct packet_out_frec_iter *pofi, + struct lsquic_packet_out *packet_out) +{ + if (packet_out->po_frecs.one.fe_frame_type) + return &packet_out->po_frecs.one; + else + return NULL; +} + + +static struct frame_rec * +frec_one_pofi_next (struct packet_out_frec_iter *pofi) +{ + return NULL; +} + + +static struct frame_rec * +frec_arr_pofi_next (struct packet_out_frec_iter *pofi) +{ + while (pofi->cur_frec_arr) + { + for (; pofi->frec_idx < sizeof(pofi->cur_frec_arr->frecs) / sizeof(pofi->cur_frec_arr->frecs[0]); + ++pofi->frec_idx) + { + if (pofi->cur_frec_arr->frecs[ pofi->frec_idx ].fe_frame_type) + return &pofi->cur_frec_arr->frecs[ pofi->frec_idx++ ]; + } + pofi->cur_frec_arr = TAILQ_NEXT(pofi->cur_frec_arr, next_stream_rec_arr); + pofi->frec_idx = 0; + } + return NULL; +} + + +static struct frame_rec * +frec_arr_pofi_first (struct packet_out_frec_iter *pofi, + struct lsquic_packet_out *packet_out) +{ + pofi->packet_out = packet_out; + pofi->cur_frec_arr = TAILQ_FIRST(&packet_out->po_frecs.arr); + pofi->frec_idx = 0; + return frec_arr_pofi_next(pofi); +} + + +static struct frame_rec * (* const pofi_firsts[]) + (struct packet_out_frec_iter *, struct lsquic_packet_out *) = +{ + frec_one_pofi_first, + frec_arr_pofi_first, +}; + + +static struct frame_rec * (* const pofi_nexts[]) + (struct packet_out_frec_iter *pofi) = +{ + frec_one_pofi_next, + frec_arr_pofi_next, +}; + + +struct frame_rec * +lsquic_pofi_first (struct packet_out_frec_iter *pofi, + lsquic_packet_out_t *packet_out) +{ + pofi->impl_idx = !!(packet_out->po_flags & PO_FREC_ARR); + return pofi_firsts[pofi->impl_idx](pofi, packet_out); +} + + +struct frame_rec * +lsquic_pofi_next (struct packet_out_frec_iter *pofi) +{ + return pofi_nexts[pofi->impl_idx](pofi); +} + + +/* + * Assumption: frames are added to the packet_out in order of their placement + * in packet_out->po_data. There is no assertion to guard for for this. + */ +int +lsquic_packet_out_add_frame (lsquic_packet_out_t *packet_out, + struct lsquic_mm *mm, + uintptr_t data, + enum quic_frame_type frame_type, + unsigned short off, unsigned short len) +{ + struct frame_rec_arr *frec_arr; + int last_taken; + unsigned i; + + if (!(packet_out->po_flags & PO_FREC_ARR)) + { + if (!frec_taken(&packet_out->po_frecs.one)) + { + packet_out->po_frecs.one.fe_frame_type = frame_type; + packet_out->po_frecs.one.fe_u.data = data; + packet_out->po_frecs.one.fe_off = off; + packet_out->po_frecs.one.fe_len = len; + return 0; /* Insert in first slot */ + } + frec_arr = lsquic_malo_get(mm->malo.frame_rec_arr); + if (!frec_arr) + return -1; + memset(frec_arr, 0, sizeof(*frec_arr)); + frec_arr->frecs[0] = packet_out->po_frecs.one; + TAILQ_INIT(&packet_out->po_frecs.arr); + TAILQ_INSERT_TAIL(&packet_out->po_frecs.arr, frec_arr, + next_stream_rec_arr); + packet_out->po_flags |= PO_FREC_ARR; + i = 1; + goto set_elem; + } + + /* New records go at the very end: */ + frec_arr = TAILQ_LAST(&packet_out->po_frecs.arr, frame_rec_arr_tailq); + last_taken = -1; + for (i = 0; i < sizeof(frec_arr->frecs) / sizeof(frec_arr->frecs[0]); ++i) + if (frec_taken(&frec_arr->frecs[i])) + last_taken = i; + + i = last_taken + 1; + if (i < sizeof(frec_arr->frecs) / sizeof(frec_arr->frecs[0])) + { + set_elem: + frec_arr->frecs[i].fe_frame_type = frame_type; + frec_arr->frecs[i].fe_u.data = data; + frec_arr->frecs[i].fe_off = off; + frec_arr->frecs[i].fe_len = len; + return 0; /* Insert in existing frec */ + } + + frec_arr = lsquic_malo_get(mm->malo.frame_rec_arr); + if (!frec_arr) + return -1; + + memset(frec_arr, 0, sizeof(*frec_arr)); + frec_arr->frecs[0].fe_frame_type = frame_type; + frec_arr->frecs[0].fe_u.data = data; + frec_arr->frecs[0].fe_off = off; + frec_arr->frecs[0].fe_len = len; + TAILQ_INSERT_TAIL(&packet_out->po_frecs.arr, frec_arr, next_stream_rec_arr); + return 0; /* Insert in new frec */ +} + + +int +lsquic_packet_out_add_stream (struct lsquic_packet_out *packet_out, + struct lsquic_mm *mm, struct lsquic_stream *new_stream, + enum quic_frame_type frame_type, unsigned short off, unsigned short len) +{ + assert(!(new_stream->stream_flags & STREAM_FINISHED)); + assert((1 << frame_type) + & (QUIC_FTBIT_STREAM|QUIC_FTBIT_CRYPTO|QUIC_FTBIT_RST_STREAM)); + if (0 == lsquic_packet_out_add_frame(packet_out, mm, + (uintptr_t) new_stream, frame_type, off, len)) + { + ++new_stream->n_unacked; + return 0; + } + else + return -1; +} + + +lsquic_packet_out_t * +lsquic_packet_out_new (struct lsquic_mm *mm, struct malo *malo, int use_cid, + const struct lsquic_conn *lconn, enum packno_bits bits, + const lsquic_ver_tag_t *ver_tag, const unsigned char *nonce, + const struct network_path *path, enum header_type header_type) +{ + lsquic_packet_out_t *packet_out; + enum packet_out_flags flags; + size_t header_size, tag_len, max_size; + + flags = bits << POBIT_SHIFT; + if (ver_tag) + flags |= PO_VERSION; + if (nonce) + flags |= PO_NONCE; + if (use_cid) + flags |= PO_CONN_ID; + if ((lconn->cn_flags & (LSCONN_MINI|LSCONN_HANDSHAKE_DONE)) + != LSCONN_HANDSHAKE_DONE) + flags |= PO_LONGHEAD; + + header_size = lconn->cn_pf->pf_packout_max_header_size(lconn, flags, + path->np_dcid.len, header_type); + tag_len = lconn->cn_esf_c->esf_tag_len; + max_size = path->np_pack_size; + if (header_size + tag_len >= max_size) + { + errno = EINVAL; + return NULL; + } + + packet_out = lsquic_mm_get_packet_out(mm, malo, max_size - header_size + - tag_len); + if (!packet_out) + return NULL; + + packet_out->po_flags = flags; + if ((1 << lconn->cn_version) & LSQUIC_GQUIC_HEADER_VERSIONS) + packet_out->po_lflags = POL_GQUIC; + if (ver_tag) + packet_out->po_ver_tag = *ver_tag; + if (nonce) + { + /* Nonces are allocated for a very small number of packets. This + * memory is too expensive to carry in every packet. + */ + packet_out->po_nonce = malloc(32); + if (!packet_out->po_nonce) + { + lsquic_mm_put_packet_out(mm, packet_out); + return NULL; + } + memcpy(packet_out->po_nonce, nonce, 32); + } + if (flags & PO_LONGHEAD) + { + if (lconn->cn_version == LSQVER_050) + { + if (lconn->cn_flags & (LSCONN_SERVER|LSCONN_HANDSHAKE_DONE)) + packet_out->po_header_type = HETY_0RTT; + else + packet_out->po_header_type = HETY_INITIAL; + } + else + packet_out->po_header_type = HETY_HANDSHAKE; + } + packet_out->po_path = path; + + return packet_out; +} + + +void +lsquic_packet_out_destroy (lsquic_packet_out_t *packet_out, + struct lsquic_engine_public *enpub, void *peer_ctx) +{ + if (packet_out->po_flags & PO_FREC_ARR) + { + struct frame_rec_arr *frec_arr, *next; + for (frec_arr = TAILQ_FIRST(&packet_out->po_frecs.arr); + frec_arr; frec_arr = next) + { + next = TAILQ_NEXT(frec_arr, next_stream_rec_arr); + lsquic_malo_put(frec_arr); + } + } + if (packet_out->po_flags & PO_ENCRYPTED) + enpub->enp_pmi->pmi_release(enpub->enp_pmi_ctx, peer_ctx, + packet_out->po_enc_data, lsquic_packet_out_ipv6(packet_out)); + if (packet_out->po_nonce) + free(packet_out->po_nonce); + if (packet_out->po_bwp_state) + lsquic_malo_put(packet_out->po_bwp_state); + lsquic_mm_put_packet_out(&enpub->enp_mm, packet_out); +} + + +/* If `stream_id' is UINT64_MAX, stream frames from all reset streams are elided. + * Otherwise, elision is limited to the specified stream. + */ +unsigned +lsquic_packet_out_elide_reset_stream_frames (lsquic_packet_out_t *packet_out, + lsquic_stream_id_t stream_id) +{ + struct packet_out_frec_iter pofi; + struct frame_rec *frec; + unsigned short adj = 0; + int n_stream_frames = 0, n_elided = 0; + int victim; + + for (frec = lsquic_pofi_first(&pofi, packet_out); frec; + frec = lsquic_pofi_next(&pofi)) + { + /* Offsets of all frame records should be adjusted */ + frec->fe_off -= adj; + + if (frec->fe_frame_type == QUIC_FRAME_STREAM) + { + ++n_stream_frames; + + if (stream_id != UINT64_MAX) + { + victim = frec->fe_stream->id == stream_id; + if (victim) + { + assert(lsquic_stream_is_write_reset(frec->fe_stream)); + } + } + else + victim = lsquic_stream_is_write_reset(frec->fe_stream); + + if (victim) + { + ++n_elided; + + /* Move the data and adjust sizes */ + adj += frec->fe_len; + memmove(packet_out->po_data + frec->fe_off, + packet_out->po_data + frec->fe_off + frec->fe_len, + packet_out->po_data_sz - frec->fe_off - frec->fe_len); + packet_out->po_data_sz -= frec->fe_len; + + lsquic_stream_acked(frec->fe_stream, frec->fe_frame_type); + frec->fe_frame_type = 0; + } + } + } + + assert(n_stream_frames); + if (n_elided == n_stream_frames) + { + packet_out->po_frame_types &= ~(1 << QUIC_FRAME_STREAM); + packet_out->po_flags &= ~PO_STREAM_END; + } + + return adj; +} + + +void +lsquic_packet_out_chop_regen (lsquic_packet_out_t *packet_out) +{ + struct packet_out_frec_iter pofi; + struct frame_rec *frec; + unsigned short adj; + + adj = 0; + for (frec = lsquic_pofi_first(&pofi, packet_out); frec; + frec = lsquic_pofi_next(&pofi)) + { + frec->fe_off -= adj; + if (BQUIC_FRAME_REGEN_MASK & (1 << frec->fe_frame_type)) + { + adj += frec->fe_len; + memmove(packet_out->po_data + frec->fe_off, + packet_out->po_data + frec->fe_off + frec->fe_len, + packet_out->po_data_sz - frec->fe_off - frec->fe_len); + packet_out->po_data_sz -= frec->fe_len; + frec->fe_frame_type = 0; + } + } + + //assert(adj); /* Otherwise why are we called? */ + packet_out->po_regen_sz = 0; + packet_out->po_frame_types &= ~BQUIC_FRAME_REGEN_MASK; +} + + +void +lsquic_packet_out_ack_streams (lsquic_packet_out_t *packet_out) +{ + struct packet_out_frec_iter pofi; + struct frame_rec *frec; + for (frec = lsquic_pofi_first(&pofi, packet_out); frec; + frec = lsquic_pofi_next(&pofi)) + if ((1 << frec->fe_frame_type) + & (QUIC_FTBIT_STREAM|QUIC_FTBIT_CRYPTO|QUIC_FTBIT_RST_STREAM)) + lsquic_stream_acked(frec->fe_stream, frec->fe_frame_type); +} + + +void +lsquic_packet_out_zero_pad (lsquic_packet_out_t *packet_out) +{ + if (packet_out->po_n_alloc > packet_out->po_data_sz) + { + memset(packet_out->po_data + packet_out->po_data_sz, 0, + packet_out->po_n_alloc - packet_out->po_data_sz); + packet_out->po_data_sz = packet_out->po_n_alloc; + packet_out->po_frame_types |= 1 << QUIC_FRAME_PADDING; + } +} + + +size_t +lsquic_packet_out_mem_used (const struct lsquic_packet_out *packet_out) +{ + const struct frame_rec_arr *frec_arr; + size_t size; + + size = 0; /* The struct is allocated using malo */ + if (packet_out->po_enc_data) + size += packet_out->po_enc_data_sz; + if (packet_out->po_data) + size += packet_out->po_n_alloc; + if (packet_out->po_nonce) + size += 32; + + if (packet_out->po_flags & PO_FREC_ARR) + TAILQ_FOREACH(frec_arr, &packet_out->po_frecs.arr, next_stream_rec_arr) + size += sizeof(*frec_arr); + + return size; +} + + +int +lsquic_packet_out_turn_on_fin (struct lsquic_packet_out *packet_out, + const struct parse_funcs *pf, + const struct lsquic_stream *stream) +{ + struct packet_out_frec_iter pofi; + const struct frame_rec *frec; + struct stream_frame stream_frame; + uint64_t last_offset; + int len; + + for (frec = lsquic_pofi_first(&pofi, packet_out); frec; + frec = lsquic_pofi_next(&pofi)) + if (frec->fe_frame_type == QUIC_FRAME_STREAM + && frec->fe_stream == stream) + { + len = pf->pf_parse_stream_frame(packet_out->po_data + frec->fe_off, + frec->fe_len, &stream_frame); + + // Got a corner case because of short write, df_size == 0 && df_fin == 0 + // It is OK to just turn on the fin bit. + assert(len >= 0 || frec->fe_len == 5); + if (len < 0 && stream_frame.data_frame.df_size != 0) + return -1; + last_offset = stream_frame.data_frame.df_offset + + stream_frame.data_frame.df_size; + if (last_offset == stream->tosend_off) + { + pf->pf_turn_on_fin(packet_out->po_data + frec->fe_off); + EV_LOG_UPDATED_STREAM_FRAME( + lsquic_conn_log_cid(lsquic_stream_conn(stream)), + pf, packet_out->po_data + frec->fe_off, frec->fe_len); + return 0; + } + } + + return -1; +} + + +static unsigned +offset_to_dcid (const struct lsquic_packet_out *packet_out) +{ + if (packet_out->po_header_type == HETY_SHORT) + return 1; + else + { + assert(!(packet_out->po_lflags & POL_GQUIC)); + return 6; + } +} + + +/* Return true if DCIDs of the two packets are equal, false otherwise. */ +int +lsquic_packet_out_equal_dcids (const struct lsquic_packet_out *a, + const struct lsquic_packet_out *b) +{ + const int a_encrypted = !!(a->po_flags & PO_ENCRYPTED); + const int b_encrypted = !!(b->po_flags & PO_ENCRYPTED); + const unsigned char *dcids[2]; + size_t sizes[2]; + + switch ((a_encrypted << 1) | b_encrypted) + { + case (0 << 1) | 0: + return a->po_path == b->po_path; + case (0 << 1) | 1: + dcids[0] = a->po_path->np_dcid.idbuf; + sizes[0] = a->po_path->np_dcid.len; + dcids[1] = b->po_enc_data + offset_to_dcid(b); + sizes[1] = b->po_dcid_len; + break; + case (1 << 1) | 0: + dcids[0] = a->po_enc_data + offset_to_dcid(a); + sizes[0] = a->po_dcid_len; + dcids[1] = b->po_path->np_dcid.idbuf; + sizes[1] = b->po_path->np_dcid.len; + break; + default: + dcids[0] = a->po_enc_data + offset_to_dcid(a); + sizes[0] = a->po_dcid_len; + dcids[1] = b->po_enc_data + offset_to_dcid(b); + sizes[1] = b->po_dcid_len; + break; + } + + return sizes[0] == sizes[1] + && 0 == memcmp(dcids[0], dcids[1], sizes[0]); +} + + +void +lsquic_packet_out_pad_over (struct lsquic_packet_out *packet_out, + enum quic_ft_bit frame_types) +{ + struct packet_out_frec_iter pofi; + struct frame_rec *frec; + + for (frec = lsquic_pofi_first(&pofi, packet_out); frec; + frec = lsquic_pofi_next(&pofi)) + { + if ((1 << frec->fe_frame_type) & frame_types) + { + if ((1 << frec->fe_frame_type) & BQUIC_FRAME_REGEN_MASK) + { + packet_out->po_regen_sz -= frec->fe_len; + } + + memset(packet_out->po_data + frec->fe_off, 0, frec->fe_len); + frec->fe_frame_type = QUIC_FRAME_PADDING; + } + } + + packet_out->po_frame_types &= ~frame_types; +} diff --git a/external/lsquic/src/liblsquic/lsquic_packet_out.h b/external/lsquic/src/liblsquic/lsquic_packet_out.h new file mode 100644 index 0000000..979ec3a --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_packet_out.h @@ -0,0 +1,428 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_packet_out.h -- Structure and routines dealing with packet_out + */ + +#ifndef LSQUIC_PACKET_OUT_H +#define LSQUIC_PACKET_OUT_H 1 + +#include "lsquic_packet_common.h" +#include + +struct malo; +struct lsquic_conn; +struct lsquic_engine_public; +struct lsquic_mm; +struct lsquic_stream; +struct network_path; +struct parse_funcs; +struct bwp_state; + +/* Each frame_rec is associated with one packet_out. packet_out can have + * zero or more frame_rec structures. frame_rec keeps a pointer to a stream + * that has STREAM, CRYPTO, or RST_STREAM frames inside packet_out. + * `fe_frame_type' specifies the type of the frame; if this value is zero + * (this happens when a frame is elided), values of the other struct members + * are not valid. `fe_off' indicates where inside packet_out->po_data the + * frame begins and `fe_len' is its length. + * + * We need this information for four reasons: + * 1. A stream is not destroyed until all of its STREAM and RST_STREAM + * frames are acknowledged. This is to make sure that we do not exceed + * maximum allowed number of streams. + * 2. When a packet is resubmitted, STREAM frames for a stream that has + * been reset are not to be resubmitted. + * 3. A buffered packet may have to be split before it is scheduled (this + * occurs if we guessed incorrectly the number of bytes required to + * encode the packet number and the actual number would make packet + * larger than the max). + * 4. A lost or scheduled packet may need to be resized (down) when path + * changes or MTU is reduced due to an RTO. + * + * In IETF, all frames are recorded. In gQUIC, only STREAM, RST_STREAM, + * ACK, and STOP_WAITING are recorded. The latter two are done so that + * ACK-deleting code in send controller (see po_regen_sz) is the same for + * both QUIC versions. + */ +struct frame_rec { + union { + struct lsquic_stream *stream; + uintptr_t data; + } fe_u; +#define fe_stream fe_u.stream + unsigned short fe_off, + fe_len; + enum quic_frame_type fe_frame_type; +}; + +#define frec_taken(frec) ((frec)->fe_frame_type) + +struct frame_rec_arr { + TAILQ_ENTRY(frame_rec_arr) next_stream_rec_arr; + struct frame_rec frecs[ + ( 64 /* Efficient size for malo allocator */ + - sizeof(TAILQ_ENTRY(frame_rec)) /* next_stream_rec_arr */ + ) / sizeof(struct frame_rec) + ]; +}; + +TAILQ_HEAD(frame_rec_arr_tailq, frame_rec_arr); + + +typedef struct lsquic_packet_out +{ + /* `po_next' is used for packets_out, unacked_packets and expired_packets + * lists. + */ + TAILQ_ENTRY(lsquic_packet_out) + po_next; + lsquic_time_t po_sent; /* Time sent */ + lsquic_packno_t po_packno; + lsquic_packno_t po_ack2ed; /* If packet has ACK frame, value of + * largest acked in it. + */ + struct lsquic_packet_out + *po_loss_chain; /* Circular linked list */ + + enum quic_ft_bit po_frame_types; /* Bitmask of QUIC_FRAME_* */ + enum packet_out_flags { + /* TODO XXX Phase out PO_MINI in favor of a more specialized flag: + * we only need an indicator that a packet contains STREAM frames + * but no associated frecs. This type of packets in only created + * by GQUIC mini conn. + */ + PO_MINI = (1 << 0), /* Allocated by mini connection */ + PO_HELLO = (1 << 1), /* Packet contains SHLO or CHLO data */ + PO_SENT = (1 << 2), /* Packet has been sent (mini only) */ + PO_ENCRYPTED= (1 << 3), /* po_enc_data has encrypted data */ + PO_FREC_ARR = (1 << 4), +#define POBIT_SHIFT 5 + PO_BITS_0 = (1 << 5), /* PO_BITS_0 and PO_BITS_1 encode the */ + PO_BITS_1 = (1 << 6), /* packet number length. See macros below. */ + PO_NONCE = (1 << 7), /* Use value in `po_nonce' to generate header */ + PO_VERSION = (1 << 8), /* Use value in `po_ver_tag' to generate header */ + PO_CONN_ID = (1 << 9), /* Include connection ID in public header */ + PO_REPACKNO = (1 <<10), /* Regenerate packet number */ + PO_NOENCRYPT= (1 <<11), /* Do not encrypt data in po_data */ + PO_VERNEG = (1 <<12), /* Version negotiation packet. */ + PO_STREAM_END + = (1 <<13), /* STREAM frame reaches the end of the packet: no + * further writes are allowed. + */ + PO_SCHED = (1 <<14), /* On scheduled queue */ + PO_SENT_SZ = (1 <<15), + PO_LONGHEAD = (1 <<16), + PO_ACKED_LOSS_CHAIN = (1<<17), + +#define POIPv6_SHIFT 20 + PO_IPv6 = (1 <<20), /* Set if pmi_allocate was passed is_ipv6=1, + * otherwise unset. + */ + PO_MTU_PROBE= (1 <<21), /* Special loss and ACK rules apply */ +#define POPNS_SHIFT 22 + PO_PNS_HSK = (1 <<22), /* PNS bits contain the value of the */ + PO_PNS_APP = (1 <<23), /* packet number space. */ + PO_RETRY = (1 <<24), /* Retry packet */ + PO_RETX = (1 <<25), /* Retransmitted packet: don't append to it */ + PO_POISON = (1 <<26), /* Used to detect opt-ACK attack */ + PO_LOSS_REC = (1 <<27), /* This structure is a loss record */ + /* Only one of PO_SCHED, PO_UNACKED, or PO_LOST can be set. If pressed + * for room in the enum, we can switch to using two bits to represent + * this information. + */ + PO_UNACKED = (1 <<28), /* On unacked queue */ + PO_LOST = (1 <<29), /* On lost queue */ +#define POSPIN_SHIFT 30 + PO_SPIN_BIT = (1 <<30), /* Value of the spin bit */ + } po_flags; + unsigned short po_data_sz; /* Number of usable bytes in data */ + unsigned short po_enc_data_sz; /* Number of usable bytes in data */ + unsigned short po_sent_sz; /* If PO_SENT_SZ is set, real size of sent buffer. */ + /* TODO Revisit po_regen_sz once gQUIC is dropped. Now that all frames + * are recorded, we have more flexibility where to place ACK frames; they + * no longer really have to be at the beginning of the packet, since we + * can locate them. + */ + unsigned short po_regen_sz; /* Number of bytes at the beginning + * of data containing bytes that are + * not to be retransmitted, e.g. ACK + * frames. + */ + unsigned short po_n_alloc; /* Total number of bytes allocated in po_data */ + unsigned short po_token_len; + enum header_type po_header_type:8; + unsigned char po_dcid_len; /* If PO_ENCRYPTED is set */ + enum { + POL_GQUIC = 1 << 0, /* Used for logging */ +#define POLEV_SHIFT 1 + POL_ELBIT_0 = 1 << 1, /* EL bits encode the crypto level. */ + POL_ELBIT_1 = 1 << 2, +#define POKP_SHIFT 3 + POL_KEY_PHASE= 1 << 3, +#define POECN_SHIFT 4 + POL_ECNBIT_0 = 1 << 4, + POL_ECNBIT_1 = 1 << 5, + POL_LOG_QL_BITS = 1 << 6, + POL_SQUARE_BIT = 1 << 7, + POL_LOSS_BIT = 1 << 8, +#ifndef NDEBUG + POL_HEADER_PROT = 1 << 9, /* Header protection applied */ +#endif + POL_LIMITED = 1 << 10, /* Used to credit sc_next_limit if needed. */ + POL_FACKED = 1 << 11, /* Lost due to FACK check */ + } po_lflags:16; + unsigned char *po_data; + + /* A lot of packets contain only one frame. Thus, `one' is used first. + * If this is not enough, any number of frame_rec_arr structures can be + * allocated to handle more frame records. + */ + union { + struct frame_rec one; + struct frame_rec_arr_tailq arr; + } po_frecs; + + /* If PO_ENCRYPTED is set, this points to the buffer that holds encrypted + * data. + */ + unsigned char *po_enc_data; + + lsquic_ver_tag_t po_ver_tag; /* Set if PO_VERSION is set */ + unsigned short po_retx_cnt; + unsigned short po_padding_sz; + unsigned char *po_nonce; /* Use to generate header if PO_NONCE is set */ + const struct network_path + *po_path; +#define po_token po_nonce + struct bwp_state *po_bwp_state; +} lsquic_packet_out_t; + +/* This is to make sure these bit names are not used, they are only for + * convenience in gdb output. + */ +#define PO_PNS_HSK +#define PO_PNS_APP + +/* The size of lsquic_packet_out_t could be further reduced: + * + * po_ver_tag could be encoded as a few bits representing enum lsquic_version + * in po_flags. The cost is a bit of complexity. This will save us four bytes. + */ + +static inline unsigned short +lsquic_packet_out_avail (const lsquic_packet_out_t *p) +{ + return (unsigned short)(p->po_n_alloc - p->po_data_sz); +} + +static inline enum packno_bits +lsquic_packet_out_packno_bits (const lsquic_packet_out_t *p) +{ + return (enum packno_bits)((p->po_flags >> POBIT_SHIFT) & 0x3); +} + +static inline void +lsquic_packet_out_set_packno_bits (lsquic_packet_out_t *p, enum packno_bits b) +{ + p->po_flags &= ~(0x3 << POBIT_SHIFT); + p->po_flags |= ((b) & 0x3) << POBIT_SHIFT; +} + +static inline int +lsquic_packet_out_ipv6 (const lsquic_packet_out_t *p) +{ + return (int)((p->po_flags >> POIPv6_SHIFT) & 1); +} + +static inline void +lsquic_packet_out_set_ipv6 (lsquic_packet_out_t *p, unsigned b) +{ + p->po_flags &= ~(1 << POIPv6_SHIFT); + p->po_flags |= ((b) & 1) << POIPv6_SHIFT; +} + +static inline unsigned +lsquic_packet_out_spin_bit (const lsquic_packet_out_t *p) +{ + return (p->po_flags & PO_SPIN_BIT) > 0; +} + +static inline unsigned +lsquic_packet_out_square_bit (const lsquic_packet_out_t *p) +{ + return (p->po_lflags & POL_SQUARE_BIT) > 0; +} + +static inline unsigned +lsquic_packet_out_loss_bit (const lsquic_packet_out_t *p) +{ + return (p->po_lflags & POL_LOSS_BIT) > 0; +} + +static inline void +lsquic_packet_out_set_spin_bit (lsquic_packet_out_t *p, unsigned b) +{ + p->po_flags &= ~PO_SPIN_BIT; + p->po_flags |= ((b) & 1) << POSPIN_SHIFT; +} + +#define lsquic_po_header_length(lconn, po_flags, dcid_len, header_type) ( \ + lconn->cn_pf->pf_packout_max_header_size(lconn, po_flags, dcid_len, \ + header_type)) \ + +#define lsquic_packet_out_total_sz(lconn, p) (\ + (lconn)->cn_pf->pf_packout_size(lconn, p)) + +#if __GNUC__ +#if LSQUIC_EXTRA_CHECKS +#define lsquic_packet_out_sent_sz(lconn, p) ( \ + __builtin_expect(((p)->po_flags & PO_SENT_SZ), 1) ? \ + (assert(((p)->po_flags & PO_HELLO /* Avoid client DCID change */) \ + || (p)->po_sent_sz == lsquic_packet_out_total_sz(lconn, p)), \ + (p)->po_sent_sz) : lsquic_packet_out_total_sz(lconn, p)) +# else +#define lsquic_packet_out_sent_sz(lconn, p) ( \ + __builtin_expect(((p)->po_flags & PO_SENT_SZ), 1) ? \ + (p)->po_sent_sz : lsquic_packet_out_total_sz(lconn, p)) +#endif +#else +# define lsquic_packet_out_sent_sz(lconn, p) ( \ + (p)->po_flags & PO_SENT_SZ ? \ + (p)->po_sent_sz : lsquic_packet_out_total_sz(lconn, p)) +#endif + +static inline unsigned +lsquic_packet_out_verneg (const lsquic_packet_out_t *p) +{ + return (p->po_flags & (PO_NOENCRYPT|PO_VERNEG|PO_RETRY)) == (PO_NOENCRYPT|PO_VERNEG); +} + +static inline unsigned +lsquic_packet_out_pubres (const lsquic_packet_out_t *p) +{ + return (p->po_flags & (PO_NOENCRYPT|PO_VERNEG|PO_RETRY)) == PO_NOENCRYPT; +} + +static inline unsigned +lsquic_packet_out_retry (const lsquic_packet_out_t *p) +{ + return (p->po_flags & (PO_NOENCRYPT|PO_VERNEG|PO_RETRY)) == (PO_NOENCRYPT|PO_RETRY); +} + +static inline void +lsquic_packet_out_set_enc_level (lsquic_packet_out_t *p, unsigned level) +{ + p->po_lflags &= ~(3 << POLEV_SHIFT); + p->po_lflags |= level << POLEV_SHIFT; +} + +static inline unsigned +lsquic_packet_out_enc_level (const lsquic_packet_out_t *p) +{ + return (p->po_lflags >> POLEV_SHIFT) & 3; +} + +static inline void +lsquic_packet_out_set_kp (lsquic_packet_out_t *p, unsigned kp) +{ + p->po_lflags &= ~(1 << POKP_SHIFT); + p->po_lflags |= kp << POKP_SHIFT; +} + +static inline unsigned +lsquic_packet_out_kp (const lsquic_packet_out_t *p) +{ + return (p->po_lflags >> POKP_SHIFT) & 1; +} + +static inline void +lsquic_packet_out_set_pns (lsquic_packet_out_t *p, enum packnum_space pns) +{ + p->po_flags &= ~(3 << POPNS_SHIFT); + p->po_flags |= pns << POPNS_SHIFT; +} + +static inline enum packnum_space +lsquic_packet_out_pns (const lsquic_packet_out_t *p) +{ + return (enum packnum_space)((p->po_flags >> POPNS_SHIFT) & 3); +} + +static inline void +lsquic_packet_out_set_ecn (lsquic_packet_out_t *p, unsigned ecn) +{ + p->po_lflags &= ~(3 << POECN_SHIFT); + p->po_lflags |= ecn << POECN_SHIFT; +} + +static inline unsigned +lsquic_packet_out_ecn (const lsquic_packet_out_t *p) +{ + return (p->po_lflags >> POECN_SHIFT) & 3; +} + +struct packet_out_frec_iter { + lsquic_packet_out_t *packet_out; + struct frame_rec_arr *cur_frec_arr; + unsigned frec_idx; + int impl_idx; +}; + + +struct frame_rec * +lsquic_pofi_first (struct packet_out_frec_iter *pofi, lsquic_packet_out_t *); + +struct frame_rec * +lsquic_pofi_next (struct packet_out_frec_iter *pofi); + +lsquic_packet_out_t * +lsquic_packet_out_new (struct lsquic_mm *, struct malo *, int use_cid, + const struct lsquic_conn *, enum packno_bits, + const lsquic_ver_tag_t *, const unsigned char *nonce, + const struct network_path *, enum header_type); + +void +lsquic_packet_out_destroy (lsquic_packet_out_t *, + struct lsquic_engine_public *, void *peer_ctx); + +int +lsquic_packet_out_add_frame (struct lsquic_packet_out *, + struct lsquic_mm *, uintptr_t data, enum quic_frame_type, + unsigned short off, unsigned short len); + +int +lsquic_packet_out_add_stream (lsquic_packet_out_t *packet_out, + struct lsquic_mm *mm, + struct lsquic_stream *new_stream, + enum quic_frame_type, + unsigned short off, unsigned short len); + +unsigned +lsquic_packet_out_elide_reset_stream_frames (lsquic_packet_out_t *, + lsquic_stream_id_t); + +void +lsquic_packet_out_chop_regen (lsquic_packet_out_t *); + +void +lsquic_packet_out_ack_streams (struct lsquic_packet_out *); + +void +lsquic_packet_out_zero_pad (struct lsquic_packet_out *); + +size_t +lsquic_packet_out_mem_used (const struct lsquic_packet_out *); + +int +lsquic_packet_out_turn_on_fin (struct lsquic_packet_out *, + const struct parse_funcs *, const struct lsquic_stream *); + +int +lsquic_packet_out_equal_dcids (const struct lsquic_packet_out *, + const struct lsquic_packet_out *); + +void +lsquic_packet_out_pad_over (struct lsquic_packet_out *packet_out, + enum quic_ft_bit frame_types); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_packet_resize.c b/external/lsquic/src/liblsquic/lsquic_packet_resize.c new file mode 100644 index 0000000..598c92d --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_packet_resize.c @@ -0,0 +1,267 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* Functions to resize packets */ + +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_packet_resize.h" +#include "lsquic_parse.h" +#include "lsquic_hash.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_sfcw.h" +#include "lsquic_stream.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_conn.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_PACKET_RESIZE +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(prctx->prc_conn) +#include "lsquic_logger.h" + + +void +lsquic_packet_resize_init (struct packet_resize_ctx *prctx, + struct lsquic_engine_public *enpub, struct lsquic_conn *lconn, void *ctx, + const struct packet_resize_if *pr_if) +{ + memset(prctx, 0, sizeof(*prctx)); + prctx->prc_conn = lconn; + prctx->prc_pri = pr_if; + prctx->prc_enpub = enpub; + prctx->prc_data = ctx; + LSQ_DEBUG("initialized"); +} + + +static const struct frame_rec * +packet_resize_next_frec (struct packet_resize_ctx *prctx) +{ + const struct frame_rec *frec; + + assert(!prctx->prc_cur_frec); + if (prctx->prc_cur_packet) + { + LSQ_DEBUG("get next frec from current packet %"PRIu64, + prctx->prc_cur_packet->po_packno); + frec = lsquic_pofi_next(&prctx->prc_pofi); + if (frec) + return frec; + LSQ_DEBUG("discard packet %"PRIu64, prctx->prc_cur_packet->po_packno); + prctx->prc_pri->pri_discard_packet(prctx->prc_data, + prctx->prc_cur_packet); + prctx->prc_cur_packet = NULL; /* Not necessary; just future-proofing */ + } + + do + { + prctx->prc_cur_packet = prctx->prc_pri->pri_next_packet(prctx->prc_data); + if (!prctx->prc_cur_packet) + { + LSQ_DEBUG("out of input packets"); + return NULL; + } + frec = lsquic_pofi_first(&prctx->prc_pofi, prctx->prc_cur_packet); + if (frec == NULL) + { + LSQ_DEBUG("discard, no good frec from current packet %"PRIu64, + prctx->prc_cur_packet->po_packno); + prctx->prc_pri->pri_discard_packet(prctx->prc_data, + prctx->prc_cur_packet); + } + } while (frec == NULL); + LSQ_DEBUG("return first frec from new current packet %"PRIu64, + prctx->prc_cur_packet->po_packno); + return frec; +} + + +static const struct frame_rec * +packet_resize_get_frec (struct packet_resize_ctx *prctx) +{ + if (!prctx->prc_cur_frec) + { + prctx->prc_cur_frec = packet_resize_next_frec(prctx); + if (prctx->prc_cur_frec) + prctx->prc_flags |= PRC_NEW_FREC; + } + return prctx->prc_cur_frec; +} + + +static size_t +packet_resize_gsf_read (void *ctx, void *buf, size_t len, int *fin) +{ + struct packet_resize_ctx *const prctx = ctx; + size_t left; + + left = (size_t) prctx->prc_data_frame.df_size + - (size_t) prctx->prc_data_frame.df_read_off; + if (len > left) + len = left; + memcpy(buf, + prctx->prc_data_frame.df_data + prctx->prc_data_frame.df_read_off, len); + prctx->prc_data_frame.df_read_off += len; + *fin = prctx->prc_data_frame.df_fin + && prctx->prc_data_frame.df_size == prctx->prc_data_frame.df_read_off; + + return len; +} + + +struct lsquic_packet_out * +lsquic_packet_resize_next (struct packet_resize_ctx *prctx) +{ + const unsigned char *data_in; + struct lsquic_packet_out *new; + struct stream_frame stream_frame; + const struct frame_rec *frec; + int s, w, fin, parsed_len; + size_t nbytes; + + if (frec = packet_resize_get_frec(prctx), frec == NULL) + return NULL; + + new = prctx->prc_pri->pri_new_packet(prctx->prc_data); + if (!new) + { + LSQ_DEBUG("cannot allocate new packet"); + goto err; + } + + proc_frec: + if ((1 << frec->fe_frame_type) & (QUIC_FTBIT_STREAM|QUIC_FTBIT_CRYPTO)) + { + if (prctx->prc_flags & PRC_NEW_FREC) + { + data_in = prctx->prc_cur_packet->po_data + frec->fe_off; + parsed_len = (&prctx->prc_conn->cn_pf->pf_parse_stream_frame) + [frec->fe_frame_type == QUIC_FRAME_CRYPTO] + (data_in, frec->fe_len, &stream_frame); + if (parsed_len < 0) + { + LSQ_WARN("cannot parse %s frame", + frame_type_2_str[frec->fe_frame_type]); + goto err; + } + if ((unsigned) parsed_len != frec->fe_len) + { + LSQ_WARN("parsed %s frame size does not match frame record", + frame_type_2_str[frec->fe_frame_type]); + goto err; + } + prctx->prc_data_frame = stream_frame.data_frame; + prctx->prc_flags &= ~PRC_NEW_FREC; + LSQ_DEBUG("parsed %s frame record for stream %"PRIu64 + "; off: %"PRIu64"; size: %"PRIu16"; fin: %d", + frame_type_2_str[frec->fe_frame_type], + frec->fe_stream->id, + stream_frame.data_frame.df_offset, + stream_frame.data_frame.df_size, + stream_frame.data_frame.df_fin); + } + fin = prctx->prc_data_frame.df_fin + && prctx->prc_data_frame.df_read_off == prctx->prc_data_frame.df_size; + nbytes = prctx->prc_data_frame.df_size - prctx->prc_data_frame.df_read_off; + w = (&prctx->prc_conn->cn_pf->pf_gen_stream_frame) + [frec->fe_frame_type == QUIC_FRAME_CRYPTO]( + new->po_data + new->po_data_sz, lsquic_packet_out_avail(new), + frec->fe_stream->id, + prctx->prc_data_frame.df_offset + prctx->prc_data_frame.df_read_off, + fin, nbytes, packet_resize_gsf_read, prctx); + if (w < 0) + { + /* We rely on stream-generating function returning an error instead + * of pre-calculating required size and checking. + */ + LSQ_DEBUG("cannot fit another %s frame, new packet done", + frame_type_2_str[frec->fe_frame_type]); + goto done; + } + if (0 != lsquic_packet_out_add_stream(new, &prctx->prc_enpub->enp_mm, + frec->fe_stream, frec->fe_frame_type, + new->po_data_sz, w)) + { + LSQ_WARN("cannot add stream frame record to new packet"); + goto err; + } + new->po_data_sz += w; + new->po_frame_types |= 1 << frec->fe_frame_type; + if (0 == lsquic_packet_out_avail(new)) + new->po_flags |= PO_STREAM_END; + if (prctx->prc_data_frame.df_size == prctx->prc_data_frame.df_read_off) + { + LSQ_DEBUG("finished using %s frame record", + frame_type_2_str[frec->fe_frame_type]); + --frec->fe_stream->n_unacked; + frec = prctx->prc_cur_frec = NULL; + if (lsquic_packet_out_avail(new) > 0) + if (frec = packet_resize_get_frec(prctx), frec != NULL) + goto proc_frec; + } + } + else if (prctx->prc_cur_frec->fe_len <= lsquic_packet_out_avail(new)) + { + if ((1 << frec->fe_frame_type) & BQUIC_FRAME_REGEN_MASK) + { + if (new->po_regen_sz == new->po_data_sz) + new->po_regen_sz += frec->fe_len; + else + { + LSQ_DEBUG("got non-contiguous regen frame %s, packet done", + frame_type_2_str[frec->fe_frame_type]); + goto done; + } + } + memcpy(new->po_data + new->po_data_sz, + prctx->prc_cur_packet->po_data + frec->fe_off, frec->fe_len); + if (frec->fe_frame_type == QUIC_FRAME_RST_STREAM) + s = lsquic_packet_out_add_stream(new, &prctx->prc_enpub->enp_mm, + frec->fe_stream, frec->fe_frame_type, + new->po_data_sz, frec->fe_len); + else + s = lsquic_packet_out_add_frame(new, &prctx->prc_enpub->enp_mm, + frec->fe_u.data, frec->fe_frame_type, + new->po_data_sz, frec->fe_len); + if (s != 0) + { + LSQ_WARN("cannot add %s frame record to new packet", + frame_type_2_str[frec->fe_frame_type]); + goto err; + } + new->po_data_sz += frec->fe_len; + new->po_frame_types |= 1 << frec->fe_frame_type; + LSQ_DEBUG("copy %hu-byte %s frame into new packet", frec->fe_len, + frame_type_2_str[frec->fe_frame_type]); + if (frec->fe_frame_type == QUIC_FRAME_RST_STREAM) + --frec->fe_stream->n_unacked; + frec = prctx->prc_cur_frec = NULL; + if (lsquic_packet_out_avail(new) > 0) + if (frec = packet_resize_get_frec(prctx), frec != NULL) + goto proc_frec; + } + + done: + if (0 == new->po_data_sz) + { + LSQ_WARN("frame too large"); + goto err; + } + + return new; + + err: + if (new) + lsquic_packet_out_destroy(new, prctx->prc_enpub, + new->po_path->np_peer_ctx); + prctx->prc_flags |= PRC_ERROR; + return NULL; +} diff --git a/external/lsquic/src/liblsquic/lsquic_packet_resize.h b/external/lsquic/src/liblsquic/lsquic_packet_resize.h new file mode 100644 index 0000000..7df9f03 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_packet_resize.h @@ -0,0 +1,56 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_packet_resize.h -- functions to resize packets + */ + +#ifndef LSQUIC_PACKET_RESIZE_H +#define LSQUIC_PACKET_RESIZE_H 1 + +struct lsquic_packet_out; +struct lsquic_conn; +struct frame_rec; +struct lsquic_engine_public; + +struct packet_resize_if +{ + /* Get next packet to convert */ + struct lsquic_packet_out * + (*pri_next_packet)(void *ctx); + /* Discard packet after it was converted */ + void (*pri_discard_packet)(void *ctx, struct lsquic_packet_out *); + /* Get new packet to write frames to */ + struct lsquic_packet_out * + (*pri_new_packet)(void *ctx); +}; + +struct packet_resize_ctx +{ + const struct lsquic_conn *prc_conn; + void *prc_data; /* First arg to prc_pri */ + const struct packet_resize_if *prc_pri; + struct lsquic_engine_public *prc_enpub; + const struct frame_rec *prc_cur_frec; + struct lsquic_packet_out *prc_cur_packet; + struct data_frame prc_data_frame; + struct packet_out_frec_iter prc_pofi; + enum { + PRC_ERROR = 1 << 0, + PRC_NEW_FREC = 1 << 1, + } prc_flags; +}; + +void +lsquic_packet_resize_init (struct packet_resize_ctx *, + struct lsquic_engine_public *, struct lsquic_conn *, void *ctx, + const struct packet_resize_if *); + +struct lsquic_packet_out * +lsquic_packet_resize_next (struct packet_resize_ctx *); + +static inline unsigned +lsquic_packet_resize_is_error (struct packet_resize_ctx *prctx_) +{ + return !!(prctx_->prc_flags & PRC_ERROR); +} + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_parse.h b/external/lsquic/src/liblsquic/lsquic_parse.h new file mode 100644 index 0000000..12dde40 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_parse.h @@ -0,0 +1,450 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_PARSE_H +#define LSQUIC_PARSE_H 1 + +#include + +#include "lsquic_packet_common.h" +#include "lsquic_packet_gquic.h" +#include "lsquic_shared_support.h" + +struct lsquic_conn; +struct lsquic_packet_in; +struct lsquic_packet_out; +struct packin_parse_state; +struct stream_frame; +struct lsquic_cid; +enum packet_out_flags; +enum lsquic_version; +enum stream_dir; + + +struct ack_info +{ + enum packnum_space pns; + enum { + AI_ECN = 1 << 0, /* ecn_counts[1,2,3] contain ECN counts */ + AI_TRUNCATED = 1 << 1, /* There were more ranges to parse, but we + * ran out of elements in `ranges'. + */ + } flags; + unsigned n_ranges; /* This is at least 1 */ + /* Largest acked is ack_info.ranges[0].high */ + lsquic_time_t lack_delta; + uint64_t ecn_counts[4]; + struct lsquic_packno_range ranges[256]; +}; + +#define largest_acked(acki) (+(acki)->ranges[0].high) + +#define smallest_acked(acki) (+(acki)->ranges[(acki)->n_ranges - 1].low) + +/* Chrome may send an empty ACK frame when it closes a connection. + * We do not know why it occurs -- perhaps a bug in Chrome. + */ +/* This macro cannot be used in IETF QUIC as zero is a valid packet number. + * Hopefully the Chrome bug will have been fixed by then. + */ +static inline unsigned +empty_ack_frame (const struct ack_info *acki) +{ + return largest_acked(acki) == 0; +} + +/* gaf_: generate ACK frame */ +struct lsquic_packno_range; +typedef const struct lsquic_packno_range * + (*gaf_rechist_first_f) (void *rechist); +typedef const struct lsquic_packno_range * + (*gaf_rechist_next_f) (void *rechist); +typedef lsquic_time_t + (*gaf_rechist_largest_recv_f) (void *rechist); + +/* gsf_: generate stream frame */ +typedef size_t (*gsf_read_f) (void *stream, void *buf, size_t len, int *fin); + +/* This structure contains functions that parse and generate packets and + * frames in version-specific manner. To begin with, there is difference + * between GQUIC's little-endian (Q038 and lower) and big-endian formats + * (Q039 and higher). Q046 and higher uses different format for packet headers. + */ +struct parse_funcs +{ + /* Return buf length */ + int + (*pf_gen_reg_pkt_header) (const struct lsquic_conn *, + const struct lsquic_packet_out *, unsigned char *, size_t, + /* In Q050 and IETF QUIC, these are set: */ + unsigned *packno_off, unsigned *packno_len); + void + (*pf_parse_packet_in_finish) (struct lsquic_packet_in *packet_in, + struct packin_parse_state *); + enum quic_frame_type + (*pf_parse_frame_type) (const unsigned char *, size_t); + /* Return used buffer length or a negative value if there was not enough + * room to write the stream frame. In the latter case, the negative of + * the negative return value is the number of bytes required. The + * exception is -1, which is a generic error code, as we always need + * more than 1 byte to write a STREAM frame. + */ + /* pf_gen_stream_frame and pf_gen_crypto_frame must be adjacent so that + * they can be cast to an array. + */ + int + (*pf_gen_stream_frame) (unsigned char *buf, size_t bufsz, + lsquic_stream_id_t stream_id, uint64_t offset, + int fin, size_t size, gsf_read_f, void *stream); + /* The two "UNUSED" parameters are here so that it matches + * pf_gen_stream_frame. + */ + int + (*pf_gen_crypto_frame) (unsigned char *buf, size_t bufsz, + lsquic_stream_id_t UNUSED_1, uint64_t offset, + int UNUSED_2, size_t size, gsf_read_f, void *stream); + /* pf_parse_stream_frame and pf_parse_crypto_frame must be adjacent so that + * they can be cast to an array. + */ + int + (*pf_parse_stream_frame) (const unsigned char *buf, size_t rem_packet_sz, + struct stream_frame *); + int + (*pf_parse_crypto_frame) (const unsigned char *buf, size_t rem_packet_sz, + struct stream_frame *); + /* Return true if STREAM frame extends to the end of the packet and thus + * does not contain a Length field (no update). + */ + int + (*pf_dec_stream_frame_size) (unsigned char *buf, size_t new_size); + int + (*pf_parse_ack_frame) (const unsigned char *buf, size_t buf_len, + struct ack_info *ack_info, uint8_t exp); + int + (*pf_gen_ack_frame) (unsigned char *outbuf, size_t outbuf_sz, + gaf_rechist_first_f, gaf_rechist_next_f, + gaf_rechist_largest_recv_f, void *rechist, lsquic_time_t now, + int *has_missing, lsquic_packno_t *largest_received, + const uint64_t *ecn_counts); + int + (*pf_gen_stop_waiting_frame) (unsigned char *buf, size_t buf_len, + lsquic_packno_t cur_packno, enum packno_bits, + lsquic_packno_t least_unacked_packno); + int + (*pf_parse_stop_waiting_frame) (const unsigned char *buf, size_t buf_len, + lsquic_packno_t cur_packno, enum packno_bits, + lsquic_packno_t *least_unacked); + int + (*pf_skip_stop_waiting_frame) (size_t buf_len, enum packno_bits); + int + (*pf_gen_window_update_frame) (unsigned char *buf, int buf_len, + lsquic_stream_id_t stream_id, uint64_t offset); + int + (*pf_parse_window_update_frame) (const unsigned char *buf, size_t buf_len, + lsquic_stream_id_t *stream_id, uint64_t *offset); + /* The third argument for pf_gen_blocked_frame() and pf_parse_blocked_frame() + * is Stream ID for GQUIC and offset for IETF QUIC. Since both of these are + * uint64_t, we'll use the same function pointer. Just have to be a little + * careful here. + */ + int + (*pf_gen_blocked_frame) (unsigned char *buf, size_t buf_len, + lsquic_stream_id_t stream_id); + int + (*pf_parse_blocked_frame) (const unsigned char *buf, size_t buf_len, + /* TODO: rename third argument when dropping GQUIC */ + lsquic_stream_id_t *stream_id); + unsigned + (*pf_blocked_frame_size) (uint64_t); + unsigned + (*pf_rst_frame_size) (lsquic_stream_id_t stream_id, uint64_t final_size, + uint64_t error_code); + int + (*pf_gen_rst_frame) (unsigned char *buf, size_t buf_len, + lsquic_stream_id_t stream_id, uint64_t offset, uint64_t error_code); + int + (*pf_parse_rst_frame) (const unsigned char *buf, size_t buf_len, + lsquic_stream_id_t *stream_id, uint64_t *offset, uint64_t *error_code); + int + (*pf_parse_stop_sending_frame) (const unsigned char *buf, size_t buf_len, + lsquic_stream_id_t *stream_id, uint64_t *error_code); + unsigned + (*pf_stop_sending_frame_size) (lsquic_stream_id_t, uint64_t); + int + (*pf_gen_stop_sending_frame) (unsigned char *buf, size_t buf_len, + lsquic_stream_id_t, uint64_t error_code); + size_t + (*pf_connect_close_frame_size) (int app_error, unsigned error_code, + unsigned frame_type, size_t reason_len); + int + (*pf_gen_connect_close_frame) (unsigned char *buf, size_t buf_len, + int app_error, unsigned error_code, const char *reason, int reason_len); + int + (*pf_parse_connect_close_frame) (const unsigned char *buf, size_t buf_len, + int *app_error, uint64_t *error_code, uint16_t *reason_length, + uint8_t *reason_offset); + int + (*pf_gen_goaway_frame) (unsigned char *buf, size_t buf_len, + uint32_t error_code, lsquic_stream_id_t last_good_stream_id, + const char *reason, size_t reason_len); + int + (*pf_parse_goaway_frame) (const unsigned char *buf, size_t buf_len, + uint32_t *error_code, lsquic_stream_id_t *last_good_stream_id, + uint16_t *reason_length, const char **reason); + int + (*pf_gen_ping_frame) (unsigned char *buf, int buf_len); + int + (*pf_parse_path_chal_frame) (const unsigned char *buf, size_t, + uint64_t *chal); + int + (*pf_parse_path_resp_frame) (const unsigned char *buf, size_t, + uint64_t *resp); + /* These float reading and writing functions assume `mem' has at least + * 2 bytes. + */ + void + (*pf_write_float_time16) (lsquic_time_t time_us, void *mem); + uint64_t + (*pf_read_float_time16) (const void *mem); + ssize_t + (*pf_generate_simple_prst) (const lsquic_cid_t *cid, + unsigned char *, size_t); + size_t + (*pf_calc_stream_frame_header_sz) (lsquic_stream_id_t stream_id, + uint64_t offset, unsigned data_sz); + size_t + (*pf_calc_crypto_frame_header_sz) (uint64_t offset, unsigned data_sz); + void + (*pf_turn_on_fin) (unsigned char *); + + size_t + (*pf_packout_size) (const struct lsquic_conn *, + const struct lsquic_packet_out *); + + /* This returns the high estimate of the header size. Note that it + * cannot account for the size of the token in the IETF QUIC Initial + * packets as it does not know it. + */ + size_t + (*pf_packout_max_header_size) (const struct lsquic_conn *, + enum packet_out_flags, size_t dcid_len, enum header_type); + + enum packno_bits + (*pf_calc_packno_bits) (lsquic_packno_t packno, + lsquic_packno_t least_unacked, uint64_t n_in_flight); + unsigned + (*pf_packno_bits2len) (enum packno_bits); + + int + (*pf_parse_max_data) (const unsigned char *, size_t, uint64_t *); + int + (*pf_gen_max_data_frame) (unsigned char *, size_t, uint64_t); + unsigned + (*pf_max_data_frame_size) (uint64_t); + /* + * Returns number of bytes parsed on success or negative value on error: + * -1 Out of input buffer + * -2 Invalid CID length value + */ + int + (*pf_parse_new_conn_id) (const unsigned char *, size_t, uint64_t *, + uint64_t *, lsquic_cid_t *, const unsigned char **); + unsigned + (*pf_stream_blocked_frame_size) (lsquic_stream_id_t, uint64_t); + int + (*pf_gen_stream_blocked_frame) (unsigned char *buf, size_t, + lsquic_stream_id_t, uint64_t); + int + (*pf_parse_stream_blocked_frame) (const unsigned char *buf, size_t, + lsquic_stream_id_t *, uint64_t *); + unsigned + (*pf_max_stream_data_frame_size) (lsquic_stream_id_t, uint64_t); + int + (*pf_gen_max_stream_data_frame) (unsigned char *buf, size_t, + lsquic_stream_id_t, uint64_t); + int + (*pf_parse_max_stream_data_frame) (const unsigned char *buf, size_t, + lsquic_stream_id_t *, uint64_t *); + int + (*pf_parse_new_token_frame) (const unsigned char *buf, size_t, + const unsigned char **token, size_t *token_size); + size_t + (*pf_new_connection_id_frame_size) (unsigned seqno, unsigned cid_len); + int + (*pf_gen_new_connection_id_frame) (unsigned char *buf, size_t, + unsigned seqno, const struct lsquic_cid *, + const unsigned char *token, size_t); + size_t + (*pf_retire_cid_frame_size) (uint64_t); + int + (*pf_gen_retire_cid_frame) (unsigned char *buf, size_t, uint64_t); + int + (*pf_parse_retire_cid_frame) (const unsigned char *buf, size_t, uint64_t *); + size_t + (*pf_new_token_frame_size) (size_t); + int + (*pf_gen_new_token_frame) (unsigned char *buf, size_t, + const unsigned char *token, size_t); + int + (*pf_gen_streams_blocked_frame) (unsigned char *buf, size_t buf_len, + enum stream_dir, uint64_t); + int + (*pf_parse_streams_blocked_frame) (const unsigned char *buf, size_t buf_len, + enum stream_dir *, uint64_t *); + unsigned + (*pf_streams_blocked_frame_size) (uint64_t); + int + (*pf_gen_max_streams_frame) (unsigned char *buf, size_t buf_len, + enum stream_dir, uint64_t); + int + (*pf_parse_max_streams_frame) (const unsigned char *buf, size_t buf_len, + enum stream_dir *, uint64_t *); + unsigned + (*pf_max_streams_frame_size) (uint64_t); + unsigned + (*pf_path_chal_frame_size) (void); + int + (*pf_gen_path_chal_frame) (unsigned char *, size_t, uint64_t chal); + unsigned + (*pf_path_resp_frame_size) (void); + int + (*pf_gen_path_resp_frame) (unsigned char *, size_t, uint64_t resp); + int + (*pf_gen_handshake_done_frame) (unsigned char *buf, size_t buf_len); + int + (*pf_parse_handshake_done_frame) (const unsigned char *buf, size_t buf_len); + unsigned + (*pf_handshake_done_frame_size) (void); + int + (*pf_gen_ack_frequency_frame) (unsigned char *buf, size_t buf_len, + uint64_t seqno, uint64_t pack_tol, uint64_t upd_mad, int ignore); + int + (*pf_parse_ack_frequency_frame) (const unsigned char *buf, size_t buf_len, + uint64_t *seqno, uint64_t *pack_tol, uint64_t *upd_mad, int *ignore); + unsigned + (*pf_ack_frequency_frame_size) (uint64_t seqno, uint64_t pack_tol, + uint64_t upd_mad /* Don't need to pass `ignore' */); + int + (*pf_gen_timestamp_frame) (unsigned char *buf, size_t buf_len, uint64_t); + int + (*pf_parse_timestamp_frame) (const unsigned char *buf, size_t, uint64_t *); + int + (*pf_parse_datagram_frame) (const unsigned char *buf, size_t, const void **, + size_t *); + int + (*pf_gen_datagram_frame) (unsigned char *, size_t bufsz, size_t min_sz, + size_t max_sz, ssize_t (*)(struct lsquic_conn *, void *, size_t), + struct lsquic_conn *); + unsigned + (*pf_datagram_frame_size) (size_t); +}; + +LSQUIC_EXTERN const struct parse_funcs lsquic_parse_funcs_gquic_Q043; +LSQUIC_EXTERN const struct parse_funcs lsquic_parse_funcs_gquic_Q046; +LSQUIC_EXTERN const struct parse_funcs lsquic_parse_funcs_gquic_Q050; +LSQUIC_EXTERN const struct parse_funcs lsquic_parse_funcs_ietf_v1; + +#define select_pf_by_ver(ver) ( \ + (1 << (ver)) & (1 << LSQVER_043) ? \ + &lsquic_parse_funcs_gquic_Q043 : \ + (1 << (ver)) & (1 << LSQVER_046) ? \ + &lsquic_parse_funcs_gquic_Q046 : \ + (1 << (ver)) & (1 << LSQVER_050) ? \ + &lsquic_parse_funcs_gquic_Q050 : \ + &lsquic_parse_funcs_ietf_v1) + +/* This function is gQUIC-version independent */ +int +lsquic_gquic_parse_packet_in_begin (struct lsquic_packet_in *, size_t length, + int is_server, unsigned cid_len, struct packin_parse_state *); + +int +lsquic_Q046_parse_packet_in_short_begin (struct lsquic_packet_in *, size_t length, + int is_server, unsigned, struct packin_parse_state *); + +int +lsquic_Q046_parse_packet_in_long_begin (struct lsquic_packet_in *, size_t length, + int is_server, unsigned, struct packin_parse_state *); + +int +lsquic_Q050_parse_packet_in_long_begin (struct lsquic_packet_in *, size_t length, + int is_server, unsigned, struct packin_parse_state *); + +enum quic_frame_type +lsquic_parse_frame_type_gquic_Q035_thru_Q046 (const unsigned char *, size_t); + +extern const enum quic_frame_type lsquic_iquic_byte2type[0x40]; + +size_t +lsquic_calc_stream_frame_header_sz_gquic (lsquic_stream_id_t stream_id, + uint64_t offset, unsigned); + +size_t +lsquic_gquic_packout_size (const struct lsquic_conn *, + const struct lsquic_packet_out *); + +size_t +lsquic_gquic_packout_header_size (const struct lsquic_conn *conn, + enum packet_out_flags flags, size_t unused, enum header_type); + +size_t +lsquic_gquic_po_header_sz (enum packet_out_flags flags); + +size_t +lsquic_gquic_packout_size (const struct lsquic_conn *, + const struct lsquic_packet_out *); + +size_t +lsquic_gquic_po_header_sz (enum packet_out_flags flags); + +/* This maps two bits as follows: + * 00 -> 1 + * 01 -> 2 + * 10 -> 4 + * 11 -> 6 + * + * Assumes that only two low bits are set. + */ +static inline unsigned +twobit_to_1246 (unsigned bits) +{ + return bits * 2 + !bits; +} + +/* This maps two bits as follows: + * 00 -> 1 + * 01 -> 2 + * 10 -> 4 + * 11 -> 8 + * + * Assumes that only two low bits are set. + */ +static inline unsigned +twobit_to_1248 (unsigned bits) +{ + return 1 << bits; +} + +#define ECN_COUNTS_STR " ECT(0): 01234567879012345678790;" \ + " ECT(1): 01234567879012345678790;" \ + " CE: 01234567879012345678790" +#define RANGES_TRUNCATED_STR " ranges truncated! " + +#define MAX_ACKI_STR_SZ (256 * (3 /* [-] */ + 20 /* ~0ULL */ * 2) \ + + sizeof(ECN_COUNTS_STR) + sizeof(RANGES_TRUNCATED_STR)) + +void +lsquic_acki2str (const struct ack_info *acki, char *, size_t); + +void +lsquic_turn_on_fin_Q035_thru_Q046 (unsigned char *); + +enum packno_bits +lsquic_gquic_calc_packno_bits (lsquic_packno_t packno, + lsquic_packno_t least_unacked, uint64_t n_in_flight); + +unsigned +lsquic_gquic_packno_bits2len (enum packno_bits); + +int +lsquic_merge_acks (struct ack_info *dst, const struct ack_info *src); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_parse_Q046.c b/external/lsquic/src/liblsquic/lsquic_parse_Q046.c new file mode 100644 index 0000000..c6fc7b8 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_parse_Q046.c @@ -0,0 +1,356 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_parse_Q046.c -- Parsing functions specific to GQUIC Q046 + */ + +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include +#endif + +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_parse.h" +#include "lsquic_parse_common.h" +#include "lsquic_version.h" +#include "lsquic.h" +#include "lsquic_parse_gquic_be.h" +#include "lsquic_byteswap.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_PARSE +#include "lsquic_logger.h" + + +static unsigned +gquic_Q046_packno_bits2len (enum packno_bits bits) +{ + return bits + 1; +} + +#define iquic_packno_bits2len gquic_Q046_packno_bits2len + + +static enum packno_bits +gquic_Q046_calc_packno_bits (lsquic_packno_t packno, + lsquic_packno_t least_unacked, uint64_t n_in_flight) +{ + uint64_t delta; + unsigned bits; + + delta = packno - least_unacked; + if (n_in_flight > delta) + delta = n_in_flight; + + delta *= 4; + bits = (delta >= (1ULL << 8)) + + (delta >= (1ULL << 16)) + + (delta >= (1ULL << 24)) + ; + + return bits; +} + + +static unsigned +write_packno (unsigned char *p, lsquic_packno_t packno, enum packno_bits bits) +{ + unsigned char *const begin = p; + + switch (bits) + { + case IQUIC_PACKNO_LEN_4: + *p++ = packno >> 24; + /* fall-through */ + case IQUIC_PACKNO_LEN_3: + *p++ = packno >> 16; + /* fall-through */ + case IQUIC_PACKNO_LEN_2: + *p++ = packno >> 8; + /* fall-through */ + default: + *p++ = packno; + } + + return p - begin; +} + + +static int +gen_short_pkt_header (const struct lsquic_conn *lconn, + const struct lsquic_packet_out *packet_out, unsigned char *buf, + size_t bufsz) +{ + unsigned packno_len, need; + enum packno_bits bits; + + bits = lsquic_packet_out_packno_bits(packet_out); + packno_len = iquic_packno_bits2len(bits); + + if (lconn->cn_flags & LSCONN_SERVER) + need = 1 + packno_len; + else + need = 1 + 8 /* CID */ + packno_len; + + if (need > bufsz) + return -1; + + *buf++ = 0x40 | bits; + + if (0 == (lconn->cn_flags & LSCONN_SERVER)) + { + memcpy(buf, lconn->cn_cid.idbuf, 8); + buf += 8; + } + + (void) write_packno(buf, packet_out->po_packno, bits); + + return need; +} + + +static size_t +gquic_Q046_packout_header_size_long (const struct lsquic_conn *lconn, + enum packet_out_flags flags) +{ + if ((lconn->cn_flags & LSCONN_SERVER) && (flags & PO_NONCE)) + return GQUIC_IETF_LONG_HEADER_SIZE + 32; + return GQUIC_IETF_LONG_HEADER_SIZE; +} + + +/* [draft-ietf-quic-transport-17] Section-17.2 */ +static const unsigned char header_type_to_bin[] = { + [HETY_INITIAL] = 0x0, + [HETY_0RTT] = 0x1, + [HETY_HANDSHAKE] = 0x2, + [HETY_RETRY] = 0x3, +}; + + +static int +gen_long_pkt_header (const struct lsquic_conn *lconn, + const struct lsquic_packet_out *packet_out, unsigned char *buf, + size_t bufsz) +{ + enum packno_bits packno_bits; + lsquic_ver_tag_t ver_tag; + unsigned char *p; + size_t need; + + need = gquic_Q046_packout_header_size_long(lconn, packet_out->po_flags); + if (need > bufsz) + { + errno = EINVAL; + return -1; + } + + p = buf; + packno_bits = IQUIC_PACKNO_LEN_4; + *p++ = 0x80 | 0x40 + | (header_type_to_bin[ packet_out->po_header_type ] << 4) + | packno_bits; + ver_tag = lsquic_ver2tag(lconn->cn_version); + memcpy(p, &ver_tag, sizeof(ver_tag)); + p += sizeof(ver_tag); + + if (lconn->cn_flags & LSCONN_SERVER) + *p++ = 0x05; + else + *p++ = 0x50; + + memcpy(p, lconn->cn_cid.idbuf, 8); + p += 8; + + p += write_packno(p, packet_out->po_packno, packno_bits); + + if (packet_out->po_nonce) + { + memcpy(p, packet_out->po_nonce, 32); + p += 32; + } + + assert(need == (unsigned int)(p - buf)); + return p - buf; +} + + +static int +gquic_Q046_gen_reg_pkt_header (const struct lsquic_conn *lconn, + const struct lsquic_packet_out *packet_out, unsigned char *buf, + size_t bufsz, unsigned *packno_off_UNUSED, unsigned *packno_len_UNUSED) +{ + if (0 == (packet_out->po_flags & PO_LONGHEAD)) + return gen_short_pkt_header(lconn, packet_out, buf, bufsz); + else + return gen_long_pkt_header(lconn, packet_out, buf, bufsz); +} + + +static size_t +gquic_Q046_packout_header_size_short (const struct lsquic_conn *lconn, + enum packet_out_flags flags) +{ + enum packno_bits bits; + size_t sz; + + bits = (flags >> POBIT_SHIFT) & 0x3; + sz = 1; /* Type */ + sz += (lconn->cn_flags & LSCONN_SERVER) ? 0 : 8; + sz += iquic_packno_bits2len(bits); + + return sz; +} + + +static size_t +gquic_Q046_packout_header_size (const struct lsquic_conn *lconn, + enum packet_out_flags flags, size_t dcid_len_unused, + enum header_type unused) +{ + if (0 == (flags & PO_LONGHEAD)) + return gquic_Q046_packout_header_size_short(lconn, flags); + else + return gquic_Q046_packout_header_size_long(lconn, flags); +} + + +static size_t +gquic_Q046_packout_size (const struct lsquic_conn *lconn, + const struct lsquic_packet_out *packet_out) +{ + size_t sz; + + if (0 == (packet_out->po_flags & PO_LONGHEAD)) + sz = gquic_Q046_packout_header_size_short(lconn, packet_out->po_flags); + else + sz = gquic_Q046_packout_header_size_long(lconn, packet_out->po_flags); + + sz += packet_out->po_data_sz; + sz += GQUIC_PACKET_HASH_SZ; + + return sz; +} + + +static void +gquic_Q046_parse_packet_in_finish (struct lsquic_packet_in *packet_in, + struct packin_parse_state *state) +{ + lsquic_packno_t packno; + + if (packet_in->pi_header_type == HETY_NOT_SET + /* We can't check in the beginning because we don't know whether + * this is Q046 or ID-18. This is a bit hacky. + */ + && state->pps_p + state->pps_nbytes + <= packet_in->pi_data + packet_in->pi_data_sz) + { + READ_UINT(packno, 64, state->pps_p, state->pps_nbytes); + packet_in->pi_packno = packno; + packet_in->pi_header_sz += state->pps_nbytes; + } +} + + +static int +gquic_Q046_gen_crypto_frame (unsigned char *buf, size_t buf_len, + lsquic_stream_id_t stream_id, uint64_t offset, int fin, size_t size, + gsf_read_f gsf_read, void *stream) +{ + assert(0); + return -1; +} + + +static int +gquic_Q046_parse_crypto_frame (const unsigned char *buf, size_t rem_packet_sz, + struct stream_frame *stream_frame) +{ + assert(0); + return -1; +} + + +/* No simple PRST for Q046 */ +static ssize_t +gquic_Q046_generate_simple_prst (const lsquic_cid_t *cidp, unsigned char *buf, + size_t buf_sz) +{ + return -1; +} + + +static unsigned +gquic_Q046_handshake_done_frame_size (void) +{ + return 0; +} + + +static int +gquic_Q046_gen_handshake_done_frame (unsigned char *buf, size_t buf_len) +{ + return -1; +} + + +static int +gquic_Q046_parse_handshake_done_frame (const unsigned char *buf, size_t buf_len) +{ + return -1; +} + + +const struct parse_funcs lsquic_parse_funcs_gquic_Q046 = +{ + .pf_gen_reg_pkt_header = gquic_Q046_gen_reg_pkt_header, + .pf_parse_packet_in_finish = gquic_Q046_parse_packet_in_finish, + .pf_gen_stream_frame = lsquic_gquic_be_gen_stream_frame, + .pf_calc_stream_frame_header_sz = lsquic_calc_stream_frame_header_sz_gquic, + .pf_parse_stream_frame = lsquic_gquic_be_parse_stream_frame, + .pf_dec_stream_frame_size = lsquic_gquic_be_dec_stream_frame_size, + .pf_parse_ack_frame = lsquic_gquic_be_parse_ack_frame, + .pf_gen_ack_frame = lsquic_gquic_be_gen_ack_frame, + .pf_gen_stop_waiting_frame = lsquic_gquic_be_gen_stop_waiting_frame, + .pf_parse_stop_waiting_frame = lsquic_gquic_be_parse_stop_waiting_frame, + .pf_skip_stop_waiting_frame = lsquic_gquic_be_skip_stop_waiting_frame, + .pf_gen_window_update_frame = lsquic_gquic_be_gen_window_update_frame, + .pf_parse_window_update_frame = lsquic_gquic_be_parse_window_update_frame, + .pf_gen_blocked_frame = lsquic_gquic_be_gen_blocked_frame, + .pf_parse_blocked_frame = lsquic_gquic_be_parse_blocked_frame, + .pf_gen_rst_frame = lsquic_gquic_be_gen_rst_frame, + .pf_parse_rst_frame = lsquic_gquic_be_parse_rst_frame, + .pf_connect_close_frame_size = lsquic_gquic_be_connect_close_frame_size, + .pf_gen_connect_close_frame = lsquic_gquic_be_gen_connect_close_frame, + .pf_parse_connect_close_frame = lsquic_gquic_be_parse_connect_close_frame, + .pf_gen_goaway_frame = lsquic_gquic_be_gen_goaway_frame, + .pf_parse_goaway_frame = lsquic_gquic_be_parse_goaway_frame, + .pf_gen_ping_frame = lsquic_gquic_be_gen_ping_frame, +#ifndef NDEBUG + .pf_write_float_time16 = lsquic_gquic_be_write_float_time16, + .pf_read_float_time16 = lsquic_gquic_be_read_float_time16, +#endif + .pf_generate_simple_prst = gquic_Q046_generate_simple_prst, + .pf_parse_frame_type = lsquic_parse_frame_type_gquic_Q035_thru_Q046, + .pf_turn_on_fin = lsquic_turn_on_fin_Q035_thru_Q046, + .pf_packout_size = gquic_Q046_packout_size, + .pf_packout_max_header_size = gquic_Q046_packout_header_size, + .pf_calc_packno_bits = gquic_Q046_calc_packno_bits, + .pf_packno_bits2len = gquic_Q046_packno_bits2len, + .pf_gen_crypto_frame = gquic_Q046_gen_crypto_frame, + .pf_parse_crypto_frame = gquic_Q046_parse_crypto_frame, + .pf_gen_handshake_done_frame = gquic_Q046_gen_handshake_done_frame, + .pf_parse_handshake_done_frame = gquic_Q046_parse_handshake_done_frame, + .pf_handshake_done_frame_size = gquic_Q046_handshake_done_frame_size, +}; diff --git a/external/lsquic/src/liblsquic/lsquic_parse_Q050.c b/external/lsquic/src/liblsquic/lsquic_parse_Q050.c new file mode 100644 index 0000000..210e5bb --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_parse_Q050.c @@ -0,0 +1,887 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_parse_Q050.c -- Parsing functions specific to GQUIC Q050 + */ + +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include +#endif + +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_parse.h" +#include "lsquic_parse_common.h" +#include "lsquic_version.h" +#include "lsquic.h" +#include "lsquic_parse_gquic_be.h" +#include "lsquic_parse_ietf.h" +#include "lsquic_byteswap.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_varint.h" +#include "lsquic_enc_sess.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_PARSE +#include "lsquic_logger.h" + + +/* [draft-ietf-quic-transport-24] Section-17.2 */ +static const enum header_type bits2ht[4] = +{ + [0] = HETY_INITIAL, + [1] = HETY_0RTT, + [2] = HETY_HANDSHAKE, + [3] = HETY_RETRY, +}; + + +int +lsquic_Q050_parse_packet_in_long_begin (struct lsquic_packet_in *packet_in, + size_t length, int is_server, unsigned cid_len, + struct packin_parse_state *state) +{ + const unsigned char *p = packet_in->pi_data; + const unsigned char *const end = p + length; + lsquic_ver_tag_t tag; + enum header_type header_type; + unsigned dcil, scil, odcil; + int verneg, r; + unsigned char first_byte; + uint64_t payload_len, token_len; + + if (length < 6) + return -1; + first_byte = *p++; + + memcpy(&tag, p, 4); + p += 4; + verneg = 0 == tag; + if (!verneg) + header_type = bits2ht[ (first_byte >> 4) & 3 ]; + else + header_type = HETY_VERNEG; + + packet_in->pi_header_type = header_type; + + dcil = *p++; + if (p + dcil >= end || dcil > MAX_CID_LEN) + return -1; + if (dcil) + { + memcpy(packet_in->pi_dcid.idbuf, p, dcil); + packet_in->pi_flags |= PI_CONN_ID; + p += dcil; + packet_in->pi_dcid.len = dcil; + } + + scil = *p++; + if (p + scil > end || scil > MAX_CID_LEN) + return -1; + if (scil) + { + memcpy(packet_in->pi_dcid.idbuf, p, scil); + packet_in->pi_flags |= PI_CONN_ID; + p += scil; + packet_in->pi_dcid.len = scil; + } + + if (is_server) + { + if (scil) + return -1; + } + else + if (dcil) + return -1; + + switch (header_type) + { + case HETY_INITIAL: + r = vint_read(p, end, &token_len); + if (r < 0) + return -1; + if (token_len && !is_server) + { + /* From [draft-ietf-quic-transport-14]: + * + * Token Length: A variable-length integer specifying the + * length of the Token field, in bytes. This value is zero + * if no token is present. Initial packets sent by the + * server MUST set the Token Length field to zero; clients + * that receive an Initial packet with a non-zero Token + * Length field MUST either discard the packet or generate + * a connection error of type PROTOCOL_VIOLATION. + */ + return -1; + } + p += r; + if (token_len) + { + if (token_len >= + 1ull << (sizeof(packet_in->pi_token_size) * 8)) + return -1; + if (p + token_len > end) + return -1; + packet_in->pi_token = p - packet_in->pi_data; + packet_in->pi_token_size = token_len; + p += token_len; + } + /* fall-through */ + case HETY_HANDSHAKE: + case HETY_0RTT: + if (p >= end) + return -1; + r = vint_read(p, end, &payload_len); + if (r < 0) + return -1; + p += r; + if (p - packet_in->pi_data + payload_len > length) + return -1; + length = p - packet_in->pi_data + payload_len; + if (end - p < 4) + return -1; + state->pps_p = p - r; + state->pps_nbytes = r; + packet_in->pi_quic_ver = 1; + break; + case HETY_RETRY: + if (p >= end) + return -1; + odcil = *p++; + if (p + odcil > end || odcil > MAX_CID_LEN) + return -1; + packet_in->pi_odcid_len = odcil; + packet_in->pi_odcid = p - packet_in->pi_data; + p += odcil; + packet_in->pi_token = p - packet_in->pi_data; + packet_in->pi_token_size = end - p; + p = end; + length = end - packet_in->pi_data; + state->pps_p = NULL; + state->pps_nbytes = 0; + packet_in->pi_quic_ver = 1; + break; + default: + assert(header_type == HETY_VERNEG); + if (p >= end || (3 & (uintptr_t) (end - p))) + return -1; + packet_in->pi_quic_ver = p - packet_in->pi_data; + p = end; + state->pps_p = NULL; + state->pps_nbytes = 0; + break; + } + + packet_in->pi_header_sz = p - packet_in->pi_data; + packet_in->pi_data_sz = length; + packet_in->pi_nonce = 0; + packet_in->pi_refcnt = 0; + packet_in->pi_frame_types = 0; + memset(&packet_in->pi_next, 0, sizeof(packet_in->pi_next)); + packet_in->pi_refcnt = 0; + packet_in->pi_received = 0; + + /* Packet number is set to an invalid value. The packet number must + * be decrypted, which happens later. + */ + packet_in->pi_packno = 1ULL << 62; + + return 0; +} + + + + +static unsigned +gquic_Q050_packno_bits2len (enum packno_bits bits) +{ + return bits + 1; +} + +#define iquic_packno_bits2len gquic_Q050_packno_bits2len + + +static enum packno_bits +gquic_Q050_calc_packno_bits (lsquic_packno_t packno, + lsquic_packno_t least_unacked, uint64_t n_in_flight) +{ + uint64_t delta; + unsigned bits; + + delta = packno - least_unacked; + if (n_in_flight > delta) + delta = n_in_flight; + + delta *= 4; + bits = (delta >= (1ULL << 8)) + + (delta >= (1ULL << 16)) + + (delta >= (1ULL << 24)) + ; + + return bits; +} + + +static unsigned +write_packno (unsigned char *p, lsquic_packno_t packno, enum packno_bits bits) +{ + unsigned char *const begin = p; + + switch (bits) + { + case IQUIC_PACKNO_LEN_4: + *p++ = packno >> 24; + /* fall-through */ + case IQUIC_PACKNO_LEN_3: + *p++ = packno >> 16; + /* fall-through */ + case IQUIC_PACKNO_LEN_2: + *p++ = packno >> 8; + /* fall-through */ + default: + *p++ = packno; + } + + return p - begin; +} + + +static int +gen_short_pkt_header (const struct lsquic_conn *lconn, + const struct lsquic_packet_out *packet_out, unsigned char *buf, + size_t bufsz, unsigned *packno_off_p, unsigned *packno_len_p) +{ + unsigned packno_len, need; + enum packno_bits bits; + unsigned char *p = buf; + + bits = lsquic_packet_out_packno_bits(packet_out); + packno_len = iquic_packno_bits2len(bits); + + if (lconn->cn_flags & LSCONN_SERVER) + need = 1 + packno_len; + else + need = 1 + 8 /* CID */ + packno_len; + + if (need > bufsz) + return -1; + + *p++ = 0x40 | bits; + + if (0 == (lconn->cn_flags & LSCONN_SERVER)) + { + memcpy(p, lconn->cn_cid.idbuf, 8); + p += 8; + } + + *packno_off_p = p - buf; + *packno_len_p = packno_len; + (void) write_packno(p, packet_out->po_packno, bits); + + return need; +} + + +static size_t +gquic_Q050_packout_header_size_long_by_flags (const struct lsquic_conn *lconn, + enum packet_out_flags flags) +{ + size_t sz; + enum packno_bits packno_bits; + + packno_bits = (flags >> POBIT_SHIFT) & 0x3; + + sz = 1 /* Type */ + + 4 /* Version */ + + 1 /* DCIL */ + + 1 /* SCIL */ + + lconn->cn_cid.len + + 1 /* Token length: only use for Initial packets, while token is never + * set in this version. + */ + + (flags & PO_NONCE ? DNONC_LENGTH : 0) + + 2 /* Always use two bytes to encode payload length */ + + iquic_packno_bits2len(packno_bits) + ; + + return sz; +} + + +/* [draft-ietf-quic-transport-17] Section-17.2 */ +static const unsigned char header_type_to_bin[] = { + [HETY_INITIAL] = 0x0, + [HETY_0RTT] = 0x1, + [HETY_HANDSHAKE] = 0x2, + [HETY_RETRY] = 0x3, +}; + + +static size_t +gquic_Q050_packout_header_size_long_by_packet (const struct lsquic_conn *lconn, + const struct lsquic_packet_out *packet_out) +{ + size_t sz; + enum packno_bits packno_bits; + + packno_bits = lsquic_packet_out_packno_bits(packet_out); + + sz = 1 /* Type */ + + 4 /* Version */ + + 1 /* DCIL */ + + 1 /* SCIL */ + + lconn->cn_cid.len + /* Token is never sent, but token length byte is used */ + + (packet_out->po_header_type == HETY_INITIAL) + + 2 /* Always use two bytes to encode payload length */ + + iquic_packno_bits2len(packno_bits) + + (packet_out->po_nonce ? DNONC_LENGTH : 0) + ; + + return sz; +} + + +static int +gquic_Q050_gen_long_pkt_header (const struct lsquic_conn *lconn, + const struct lsquic_packet_out *packet_out, unsigned char *buf, + size_t bufsz, unsigned *packno_off_p, unsigned *packno_len_p) +{ + enum packno_bits packno_bits; + lsquic_ver_tag_t ver_tag; + unsigned token_len, payload_len, bits; + unsigned char *p; + size_t need; + + need = gquic_Q050_packout_header_size_long_by_packet(lconn, packet_out); + if (need > bufsz) + { + errno = EINVAL; + return -1; + } + + packno_bits = lsquic_packet_out_packno_bits(packet_out); + p = buf; + *p++ = 0x80 | 0x40 + | (header_type_to_bin[ packet_out->po_header_type ] << 4) + | packno_bits; + ver_tag = lsquic_ver2tag(lconn->cn_version); + memcpy(p, &ver_tag, sizeof(ver_tag)); + p += sizeof(ver_tag); + + if (lconn->cn_flags & LSCONN_SERVER) + { + *p++ = 0; + *p++ = lconn->cn_cid.len; + memcpy(p, lconn->cn_cid.idbuf, lconn->cn_cid.len); + p += lconn->cn_cid.len; + } + else + { + *p++ = lconn->cn_cid.len; + memcpy(p, lconn->cn_cid.idbuf, lconn->cn_cid.len); + p += lconn->cn_cid.len; + *p++ = 0; + } + + if (HETY_INITIAL == packet_out->po_header_type) + { + token_len = packet_out->po_token_len; + bits = vint_val2bits(token_len); + vint_write(p, token_len, bits, 1 << bits); + p += 1 << bits; + memcpy(p, packet_out->po_token, token_len); + p += token_len; + } + + payload_len = packet_out->po_data_sz + + lconn->cn_esf_c->esf_tag_len + + iquic_packno_bits2len(packno_bits); + if (packet_out->po_nonce) + payload_len += DNONC_LENGTH; + bits = 1; /* Always use two bytes to encode payload length */ + vint_write(p, payload_len, bits, 1 << bits); + p += 1 << bits; + *packno_off_p = p - buf; + *packno_len_p = iquic_packno_bits2len(packno_bits); + p += write_packno(p, packet_out->po_packno, packno_bits); + + if (packet_out->po_nonce) + { + memcpy(p, packet_out->po_nonce, DNONC_LENGTH); + p += DNONC_LENGTH; + } + + assert(need == (size_t) (p - buf)); + return p - buf; +} + + +static int +gquic_Q050_gen_reg_pkt_header (const struct lsquic_conn *lconn, + const struct lsquic_packet_out *packet_out, unsigned char *buf, + size_t bufsz, unsigned *packno_off, unsigned *packno_len) +{ + if (0 == (packet_out->po_flags & PO_LONGHEAD)) + return gen_short_pkt_header(lconn, packet_out, buf, bufsz, + packno_off, packno_len); + else + return gquic_Q050_gen_long_pkt_header(lconn, packet_out, buf, bufsz, + packno_off, packno_len); +} + + +static size_t +gquic_Q050_packout_header_size_short (const struct lsquic_conn *lconn, + enum packet_out_flags flags) +{ + enum packno_bits bits; + size_t sz; + + bits = (flags >> POBIT_SHIFT) & 0x3; + sz = 1; /* Type */ + sz += (lconn->cn_flags & LSCONN_SERVER) ? 0 : 8; + sz += iquic_packno_bits2len(bits); + + return sz; +} + + +static size_t +gquic_Q050_packout_max_header_size (const struct lsquic_conn *lconn, + enum packet_out_flags flags, size_t dcid_len_unused, + enum header_type unused) +{ + if (lconn->cn_flags & LSCONN_SERVER) + { + if (0 == (flags & PO_LONGHEAD)) + return gquic_Q050_packout_header_size_short(lconn, flags); + else + return gquic_Q050_packout_header_size_long_by_flags(lconn, flags); + } + else + { + if (lconn->cn_flags & LSCONN_HANDSHAKE_DONE) + return gquic_Q050_packout_header_size_short(lconn, flags); + else + return gquic_Q050_packout_header_size_long_by_flags(lconn, flags); + } +} + + +static size_t +gquic_Q050_packout_size (const struct lsquic_conn *lconn, + const struct lsquic_packet_out *packet_out) +{ + size_t sz; + + if ((lconn->cn_flags & LSCONN_HANDSHAKE_DONE) + && packet_out->po_header_type == HETY_SHORT) + sz = gquic_Q050_packout_header_size_short(lconn, packet_out->po_flags); + else + sz = gquic_Q050_packout_header_size_long_by_packet(lconn, packet_out); + + sz += packet_out->po_data_sz; + sz += lconn->cn_esf_c->esf_tag_len; + + return sz; +} + + +static void +gquic_Q050_parse_packet_in_finish (struct lsquic_packet_in *packet_in, + struct packin_parse_state *state) +{ +} + + +/* Same as Q046 plus CRYPTO frame at slot 8 */ +static const enum quic_frame_type byte2frame_type_Q050[0x100] = +{ + [0x00] = QUIC_FRAME_PADDING, + [0x01] = QUIC_FRAME_RST_STREAM, + [0x02] = QUIC_FRAME_CONNECTION_CLOSE, + [0x03] = QUIC_FRAME_GOAWAY, + [0x04] = QUIC_FRAME_WINDOW_UPDATE, + [0x05] = QUIC_FRAME_BLOCKED, + [0x06] = QUIC_FRAME_STOP_WAITING, + [0x07] = QUIC_FRAME_PING, + [0x08] = QUIC_FRAME_CRYPTO, + [0x09] = QUIC_FRAME_INVALID, + [0x0A] = QUIC_FRAME_INVALID, + [0x0B] = QUIC_FRAME_INVALID, + [0x0C] = QUIC_FRAME_INVALID, + [0x0D] = QUIC_FRAME_INVALID, + [0x0E] = QUIC_FRAME_INVALID, + [0x0F] = QUIC_FRAME_INVALID, + [0x10] = QUIC_FRAME_INVALID, + [0x11] = QUIC_FRAME_INVALID, + [0x12] = QUIC_FRAME_INVALID, + [0x13] = QUIC_FRAME_INVALID, + [0x14] = QUIC_FRAME_INVALID, + [0x15] = QUIC_FRAME_INVALID, + [0x16] = QUIC_FRAME_INVALID, + [0x17] = QUIC_FRAME_INVALID, + [0x18] = QUIC_FRAME_INVALID, + [0x19] = QUIC_FRAME_INVALID, + [0x1A] = QUIC_FRAME_INVALID, + [0x1B] = QUIC_FRAME_INVALID, + [0x1C] = QUIC_FRAME_INVALID, + [0x1D] = QUIC_FRAME_INVALID, + [0x1E] = QUIC_FRAME_INVALID, + [0x1F] = QUIC_FRAME_INVALID, + [0x20] = QUIC_FRAME_INVALID, + [0x21] = QUIC_FRAME_INVALID, + [0x22] = QUIC_FRAME_INVALID, + [0x23] = QUIC_FRAME_INVALID, + [0x24] = QUIC_FRAME_INVALID, + [0x25] = QUIC_FRAME_INVALID, + [0x26] = QUIC_FRAME_INVALID, + [0x27] = QUIC_FRAME_INVALID, + [0x28] = QUIC_FRAME_INVALID, + [0x29] = QUIC_FRAME_INVALID, + [0x2A] = QUIC_FRAME_INVALID, + [0x2B] = QUIC_FRAME_INVALID, + [0x2C] = QUIC_FRAME_INVALID, + [0x2D] = QUIC_FRAME_INVALID, + [0x2E] = QUIC_FRAME_INVALID, + [0x2F] = QUIC_FRAME_INVALID, + [0x30] = QUIC_FRAME_INVALID, + [0x31] = QUIC_FRAME_INVALID, + [0x32] = QUIC_FRAME_INVALID, + [0x33] = QUIC_FRAME_INVALID, + [0x34] = QUIC_FRAME_INVALID, + [0x35] = QUIC_FRAME_INVALID, + [0x36] = QUIC_FRAME_INVALID, + [0x37] = QUIC_FRAME_INVALID, + [0x38] = QUIC_FRAME_INVALID, + [0x39] = QUIC_FRAME_INVALID, + [0x3A] = QUIC_FRAME_INVALID, + [0x3B] = QUIC_FRAME_INVALID, + [0x3C] = QUIC_FRAME_INVALID, + [0x3D] = QUIC_FRAME_INVALID, + [0x3E] = QUIC_FRAME_INVALID, + [0x3F] = QUIC_FRAME_INVALID, + [0x40] = QUIC_FRAME_ACK, + [0x41] = QUIC_FRAME_ACK, + [0x42] = QUIC_FRAME_ACK, + [0x43] = QUIC_FRAME_ACK, + [0x44] = QUIC_FRAME_ACK, + [0x45] = QUIC_FRAME_ACK, + [0x46] = QUIC_FRAME_ACK, + [0x47] = QUIC_FRAME_ACK, + [0x48] = QUIC_FRAME_ACK, + [0x49] = QUIC_FRAME_ACK, + [0x4A] = QUIC_FRAME_ACK, + [0x4B] = QUIC_FRAME_ACK, + [0x4C] = QUIC_FRAME_ACK, + [0x4D] = QUIC_FRAME_ACK, + [0x4E] = QUIC_FRAME_ACK, + [0x4F] = QUIC_FRAME_ACK, + [0x50] = QUIC_FRAME_ACK, + [0x51] = QUIC_FRAME_ACK, + [0x52] = QUIC_FRAME_ACK, + [0x53] = QUIC_FRAME_ACK, + [0x54] = QUIC_FRAME_ACK, + [0x55] = QUIC_FRAME_ACK, + [0x56] = QUIC_FRAME_ACK, + [0x57] = QUIC_FRAME_ACK, + [0x58] = QUIC_FRAME_ACK, + [0x59] = QUIC_FRAME_ACK, + [0x5A] = QUIC_FRAME_ACK, + [0x5B] = QUIC_FRAME_ACK, + [0x5C] = QUIC_FRAME_ACK, + [0x5D] = QUIC_FRAME_ACK, + [0x5E] = QUIC_FRAME_ACK, + [0x5F] = QUIC_FRAME_ACK, + [0x60] = QUIC_FRAME_ACK, + [0x61] = QUIC_FRAME_ACK, + [0x62] = QUIC_FRAME_ACK, + [0x63] = QUIC_FRAME_ACK, + [0x64] = QUIC_FRAME_ACK, + [0x65] = QUIC_FRAME_ACK, + [0x66] = QUIC_FRAME_ACK, + [0x67] = QUIC_FRAME_ACK, + [0x68] = QUIC_FRAME_ACK, + [0x69] = QUIC_FRAME_ACK, + [0x6A] = QUIC_FRAME_ACK, + [0x6B] = QUIC_FRAME_ACK, + [0x6C] = QUIC_FRAME_ACK, + [0x6D] = QUIC_FRAME_ACK, + [0x6E] = QUIC_FRAME_ACK, + [0x6F] = QUIC_FRAME_ACK, + [0x70] = QUIC_FRAME_ACK, + [0x71] = QUIC_FRAME_ACK, + [0x72] = QUIC_FRAME_ACK, + [0x73] = QUIC_FRAME_ACK, + [0x74] = QUIC_FRAME_ACK, + [0x75] = QUIC_FRAME_ACK, + [0x76] = QUIC_FRAME_ACK, + [0x77] = QUIC_FRAME_ACK, + [0x78] = QUIC_FRAME_ACK, + [0x79] = QUIC_FRAME_ACK, + [0x7A] = QUIC_FRAME_ACK, + [0x7B] = QUIC_FRAME_ACK, + [0x7C] = QUIC_FRAME_ACK, + [0x7D] = QUIC_FRAME_ACK, + [0x7E] = QUIC_FRAME_ACK, + [0x7F] = QUIC_FRAME_ACK, + [0x80] = QUIC_FRAME_STREAM, + [0x81] = QUIC_FRAME_STREAM, + [0x82] = QUIC_FRAME_STREAM, + [0x83] = QUIC_FRAME_STREAM, + [0x84] = QUIC_FRAME_STREAM, + [0x85] = QUIC_FRAME_STREAM, + [0x86] = QUIC_FRAME_STREAM, + [0x87] = QUIC_FRAME_STREAM, + [0x88] = QUIC_FRAME_STREAM, + [0x89] = QUIC_FRAME_STREAM, + [0x8A] = QUIC_FRAME_STREAM, + [0x8B] = QUIC_FRAME_STREAM, + [0x8C] = QUIC_FRAME_STREAM, + [0x8D] = QUIC_FRAME_STREAM, + [0x8E] = QUIC_FRAME_STREAM, + [0x8F] = QUIC_FRAME_STREAM, + [0x90] = QUIC_FRAME_STREAM, + [0x91] = QUIC_FRAME_STREAM, + [0x92] = QUIC_FRAME_STREAM, + [0x93] = QUIC_FRAME_STREAM, + [0x94] = QUIC_FRAME_STREAM, + [0x95] = QUIC_FRAME_STREAM, + [0x96] = QUIC_FRAME_STREAM, + [0x97] = QUIC_FRAME_STREAM, + [0x98] = QUIC_FRAME_STREAM, + [0x99] = QUIC_FRAME_STREAM, + [0x9A] = QUIC_FRAME_STREAM, + [0x9B] = QUIC_FRAME_STREAM, + [0x9C] = QUIC_FRAME_STREAM, + [0x9D] = QUIC_FRAME_STREAM, + [0x9E] = QUIC_FRAME_STREAM, + [0x9F] = QUIC_FRAME_STREAM, + [0xA0] = QUIC_FRAME_STREAM, + [0xA1] = QUIC_FRAME_STREAM, + [0xA2] = QUIC_FRAME_STREAM, + [0xA3] = QUIC_FRAME_STREAM, + [0xA4] = QUIC_FRAME_STREAM, + [0xA5] = QUIC_FRAME_STREAM, + [0xA6] = QUIC_FRAME_STREAM, + [0xA7] = QUIC_FRAME_STREAM, + [0xA8] = QUIC_FRAME_STREAM, + [0xA9] = QUIC_FRAME_STREAM, + [0xAA] = QUIC_FRAME_STREAM, + [0xAB] = QUIC_FRAME_STREAM, + [0xAC] = QUIC_FRAME_STREAM, + [0xAD] = QUIC_FRAME_STREAM, + [0xAE] = QUIC_FRAME_STREAM, + [0xAF] = QUIC_FRAME_STREAM, + [0xB0] = QUIC_FRAME_STREAM, + [0xB1] = QUIC_FRAME_STREAM, + [0xB2] = QUIC_FRAME_STREAM, + [0xB3] = QUIC_FRAME_STREAM, + [0xB4] = QUIC_FRAME_STREAM, + [0xB5] = QUIC_FRAME_STREAM, + [0xB6] = QUIC_FRAME_STREAM, + [0xB7] = QUIC_FRAME_STREAM, + [0xB8] = QUIC_FRAME_STREAM, + [0xB9] = QUIC_FRAME_STREAM, + [0xBA] = QUIC_FRAME_STREAM, + [0xBB] = QUIC_FRAME_STREAM, + [0xBC] = QUIC_FRAME_STREAM, + [0xBD] = QUIC_FRAME_STREAM, + [0xBE] = QUIC_FRAME_STREAM, + [0xBF] = QUIC_FRAME_STREAM, + [0xC0] = QUIC_FRAME_STREAM, + [0xC1] = QUIC_FRAME_STREAM, + [0xC2] = QUIC_FRAME_STREAM, + [0xC3] = QUIC_FRAME_STREAM, + [0xC4] = QUIC_FRAME_STREAM, + [0xC5] = QUIC_FRAME_STREAM, + [0xC6] = QUIC_FRAME_STREAM, + [0xC7] = QUIC_FRAME_STREAM, + [0xC8] = QUIC_FRAME_STREAM, + [0xC9] = QUIC_FRAME_STREAM, + [0xCA] = QUIC_FRAME_STREAM, + [0xCB] = QUIC_FRAME_STREAM, + [0xCC] = QUIC_FRAME_STREAM, + [0xCD] = QUIC_FRAME_STREAM, + [0xCE] = QUIC_FRAME_STREAM, + [0xCF] = QUIC_FRAME_STREAM, + [0xD0] = QUIC_FRAME_STREAM, + [0xD1] = QUIC_FRAME_STREAM, + [0xD2] = QUIC_FRAME_STREAM, + [0xD3] = QUIC_FRAME_STREAM, + [0xD4] = QUIC_FRAME_STREAM, + [0xD5] = QUIC_FRAME_STREAM, + [0xD6] = QUIC_FRAME_STREAM, + [0xD7] = QUIC_FRAME_STREAM, + [0xD8] = QUIC_FRAME_STREAM, + [0xD9] = QUIC_FRAME_STREAM, + [0xDA] = QUIC_FRAME_STREAM, + [0xDB] = QUIC_FRAME_STREAM, + [0xDC] = QUIC_FRAME_STREAM, + [0xDD] = QUIC_FRAME_STREAM, + [0xDE] = QUIC_FRAME_STREAM, + [0xDF] = QUIC_FRAME_STREAM, + [0xE0] = QUIC_FRAME_STREAM, + [0xE1] = QUIC_FRAME_STREAM, + [0xE2] = QUIC_FRAME_STREAM, + [0xE3] = QUIC_FRAME_STREAM, + [0xE4] = QUIC_FRAME_STREAM, + [0xE5] = QUIC_FRAME_STREAM, + [0xE6] = QUIC_FRAME_STREAM, + [0xE7] = QUIC_FRAME_STREAM, + [0xE8] = QUIC_FRAME_STREAM, + [0xE9] = QUIC_FRAME_STREAM, + [0xEA] = QUIC_FRAME_STREAM, + [0xEB] = QUIC_FRAME_STREAM, + [0xEC] = QUIC_FRAME_STREAM, + [0xED] = QUIC_FRAME_STREAM, + [0xEE] = QUIC_FRAME_STREAM, + [0xEF] = QUIC_FRAME_STREAM, + [0xF0] = QUIC_FRAME_STREAM, + [0xF1] = QUIC_FRAME_STREAM, + [0xF2] = QUIC_FRAME_STREAM, + [0xF3] = QUIC_FRAME_STREAM, + [0xF4] = QUIC_FRAME_STREAM, + [0xF5] = QUIC_FRAME_STREAM, + [0xF6] = QUIC_FRAME_STREAM, + [0xF7] = QUIC_FRAME_STREAM, + [0xF8] = QUIC_FRAME_STREAM, + [0xF9] = QUIC_FRAME_STREAM, + [0xFA] = QUIC_FRAME_STREAM, + [0xFB] = QUIC_FRAME_STREAM, + [0xFC] = QUIC_FRAME_STREAM, + [0xFD] = QUIC_FRAME_STREAM, + [0xFE] = QUIC_FRAME_STREAM, + [0xFF] = QUIC_FRAME_STREAM, +}; + + +static enum quic_frame_type +gquic_Q050_parse_frame_type (const unsigned char *buf, size_t len) +{ + if (len > 0) + return byte2frame_type_Q050[buf[0]]; + else + return QUIC_FRAME_INVALID; +} + + +static int +gquic_Q050_gen_crypto_frame (unsigned char *buf, size_t buf_len, + lsquic_stream_id_t stream_id, uint64_t offset, int fin, + size_t size, gsf_read_f gsf_read, void *stream) +{ + return lsquic_ietf_v1_gen_crypto_frame(buf, 0x8, buf_len, stream_id, + offset, fin, size, gsf_read, stream); +} + + +static int +gquic_Q050_parse_crypto_frame (const unsigned char *buf, size_t rem_packet_sz, + struct stream_frame *stream_frame) +{ + if (rem_packet_sz > 0) + { + assert(0x08 == buf[0]); + return lsquic_ietf_v1_parse_crypto_frame(buf, rem_packet_sz, + stream_frame); + } + else + return -1; +} + + +static size_t +gquic_Q050_calc_crypto_frame_header_sz (uint64_t offset, unsigned data_sz) +{ + return 1 /* Frame type */ + + (1 << vint_val2bits(offset)) + + (1 << vint_val2bits(data_sz)) + ; +} + + +/* No simple PRST for Q050 */ +static ssize_t +gquic_Q050_generate_simple_prst (const lsquic_cid_t *cidp, unsigned char *buf, + size_t buf_sz) +{ + return -1; +} + + +static unsigned +gquic_Q050_handshake_done_frame_size (void) +{ + return 0; +} + + +static int +gquic_Q050_gen_handshake_done_frame (unsigned char *buf, size_t buf_len) +{ + return -1; +} + + +static int +gquic_Q050_parse_handshake_done_frame (const unsigned char *buf, size_t buf_len) +{ + return -1; +} + + +const struct parse_funcs lsquic_parse_funcs_gquic_Q050 = +{ + .pf_gen_reg_pkt_header = gquic_Q050_gen_reg_pkt_header, + .pf_parse_packet_in_finish = gquic_Q050_parse_packet_in_finish, + .pf_gen_stream_frame = lsquic_gquic_be_gen_stream_frame, + .pf_calc_stream_frame_header_sz = lsquic_calc_stream_frame_header_sz_gquic, + .pf_parse_stream_frame = lsquic_gquic_be_parse_stream_frame, + .pf_dec_stream_frame_size = lsquic_gquic_be_dec_stream_frame_size, + .pf_parse_ack_frame = lsquic_gquic_be_parse_ack_frame, + .pf_gen_ack_frame = lsquic_gquic_be_gen_ack_frame, + .pf_gen_stop_waiting_frame = lsquic_gquic_be_gen_stop_waiting_frame, + .pf_parse_stop_waiting_frame = lsquic_gquic_be_parse_stop_waiting_frame, + .pf_skip_stop_waiting_frame = lsquic_gquic_be_skip_stop_waiting_frame, + .pf_gen_window_update_frame = lsquic_gquic_be_gen_window_update_frame, + .pf_parse_window_update_frame = lsquic_gquic_be_parse_window_update_frame, + .pf_gen_blocked_frame = lsquic_gquic_be_gen_blocked_frame, + .pf_parse_blocked_frame = lsquic_gquic_be_parse_blocked_frame, + .pf_gen_rst_frame = lsquic_gquic_be_gen_rst_frame, + .pf_parse_rst_frame = lsquic_gquic_be_parse_rst_frame, + .pf_connect_close_frame_size = lsquic_gquic_be_connect_close_frame_size, + .pf_gen_connect_close_frame = lsquic_gquic_be_gen_connect_close_frame, + .pf_parse_connect_close_frame = lsquic_gquic_be_parse_connect_close_frame, + .pf_gen_goaway_frame = lsquic_gquic_be_gen_goaway_frame, + .pf_parse_goaway_frame = lsquic_gquic_be_parse_goaway_frame, + .pf_gen_ping_frame = lsquic_gquic_be_gen_ping_frame, +#ifndef NDEBUG + .pf_write_float_time16 = lsquic_gquic_be_write_float_time16, + .pf_read_float_time16 = lsquic_gquic_be_read_float_time16, +#endif + .pf_generate_simple_prst = gquic_Q050_generate_simple_prst, + .pf_parse_frame_type = gquic_Q050_parse_frame_type, + .pf_turn_on_fin = lsquic_turn_on_fin_Q035_thru_Q046, + .pf_packout_size = gquic_Q050_packout_size, + .pf_packout_max_header_size = gquic_Q050_packout_max_header_size, + .pf_calc_packno_bits = gquic_Q050_calc_packno_bits, + .pf_packno_bits2len = gquic_Q050_packno_bits2len, + .pf_gen_crypto_frame = gquic_Q050_gen_crypto_frame, + .pf_parse_crypto_frame = gquic_Q050_parse_crypto_frame, + .pf_calc_crypto_frame_header_sz = gquic_Q050_calc_crypto_frame_header_sz, + .pf_gen_handshake_done_frame = gquic_Q050_gen_handshake_done_frame, + .pf_parse_handshake_done_frame = gquic_Q050_parse_handshake_done_frame, + .pf_handshake_done_frame_size = gquic_Q050_handshake_done_frame_size, +}; diff --git a/external/lsquic/src/liblsquic/lsquic_parse_common.c b/external/lsquic/src/liblsquic/lsquic_parse_common.c new file mode 100644 index 0000000..d225823 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_parse_common.c @@ -0,0 +1,463 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" +#include "lsquic_parse_common.h" +#include "lsquic_parse.h" +#include "lsquic_enc_sess.h" +#include "lsquic_version.h" +#include "lsquic_qtags.h" + + +static int +parse_ietf_v1_or_Q046plus_long_begin (struct lsquic_packet_in *packet_in, + size_t length, int is_server, unsigned cid_len, + struct packin_parse_state *state) +{ + enum lsquic_version version; + if (length < 6) + return -1; + version = lsquic_tag2ver_fast(packet_in->pi_data + 1); + if (version != N_LSQVER) + { + packet_in->pi_version = version; + packet_in->pi_flags |= PI_VER_PARSED; + } + switch (version) + { + case LSQVER_046: + return lsquic_Q046_parse_packet_in_long_begin(packet_in, length, + is_server, cid_len, state); + case LSQVER_050: + return lsquic_Q050_parse_packet_in_long_begin(packet_in, length, + is_server, cid_len, state); + default: + return lsquic_ietf_v1_parse_packet_in_long_begin(packet_in, length, + is_server, cid_len, state); + } +} + + +static int (* const parse_begin_funcs[32]) (struct lsquic_packet_in *, + size_t length, int is_server, unsigned cid_len, + struct packin_parse_state *) = +{ + /* Xs vary, Gs are iGnored: */ +#define PBEL(mask) [(mask) >> 3] + /* 1X11 XGGG: */ + PBEL(0x80|0x40|0x20|0x10|0x08) = parse_ietf_v1_or_Q046plus_long_begin, + PBEL(0x80|0x00|0x20|0x10|0x08) = parse_ietf_v1_or_Q046plus_long_begin, + PBEL(0x80|0x40|0x20|0x10|0x00) = parse_ietf_v1_or_Q046plus_long_begin, + PBEL(0x80|0x00|0x20|0x10|0x00) = parse_ietf_v1_or_Q046plus_long_begin, + /* 1X00 XGGG: */ + PBEL(0x80|0x40|0x00|0x00|0x08) = parse_ietf_v1_or_Q046plus_long_begin, + PBEL(0x80|0x00|0x00|0x00|0x08) = parse_ietf_v1_or_Q046plus_long_begin, + PBEL(0x80|0x40|0x00|0x00|0x00) = parse_ietf_v1_or_Q046plus_long_begin, + PBEL(0x80|0x00|0x00|0x00|0x00) = parse_ietf_v1_or_Q046plus_long_begin, + /* 1X01 XGGG: */ + PBEL(0x80|0x40|0x00|0x10|0x08) = parse_ietf_v1_or_Q046plus_long_begin, + PBEL(0x80|0x00|0x00|0x10|0x08) = parse_ietf_v1_or_Q046plus_long_begin, + PBEL(0x80|0x40|0x00|0x10|0x00) = parse_ietf_v1_or_Q046plus_long_begin, + PBEL(0x80|0x00|0x00|0x10|0x00) = parse_ietf_v1_or_Q046plus_long_begin, + /* 1X10 XGGG: */ + PBEL(0x80|0x40|0x20|0x00|0x08) = parse_ietf_v1_or_Q046plus_long_begin, + PBEL(0x80|0x00|0x20|0x00|0x08) = parse_ietf_v1_or_Q046plus_long_begin, + PBEL(0x80|0x40|0x20|0x00|0x00) = parse_ietf_v1_or_Q046plus_long_begin, + PBEL(0x80|0x00|0x20|0x00|0x00) = parse_ietf_v1_or_Q046plus_long_begin, + /* 01XX XGGG */ + PBEL(0x00|0x40|0x00|0x00|0x00) = lsquic_ietf_v1_parse_packet_in_short_begin, + PBEL(0x00|0x40|0x00|0x00|0x08) = lsquic_ietf_v1_parse_packet_in_short_begin, + PBEL(0x00|0x40|0x00|0x10|0x00) = lsquic_ietf_v1_parse_packet_in_short_begin, + PBEL(0x00|0x40|0x00|0x10|0x08) = lsquic_ietf_v1_parse_packet_in_short_begin, + PBEL(0x00|0x40|0x20|0x00|0x00) = lsquic_ietf_v1_parse_packet_in_short_begin, + PBEL(0x00|0x40|0x20|0x00|0x08) = lsquic_ietf_v1_parse_packet_in_short_begin, + PBEL(0x00|0x40|0x20|0x10|0x00) = lsquic_ietf_v1_parse_packet_in_short_begin, + PBEL(0x00|0x40|0x20|0x10|0x08) = lsquic_ietf_v1_parse_packet_in_short_begin, + /* 00XX 0GGG */ + PBEL(0x00|0x00|0x00|0x00|0x00) = lsquic_Q046_parse_packet_in_short_begin, + PBEL(0x00|0x00|0x00|0x10|0x00) = lsquic_Q046_parse_packet_in_short_begin, + PBEL(0x00|0x00|0x20|0x00|0x00) = lsquic_Q046_parse_packet_in_short_begin, + PBEL(0x00|0x00|0x20|0x10|0x00) = lsquic_Q046_parse_packet_in_short_begin, + /* 00XX 1GGG */ + PBEL(0x00|0x00|0x00|0x00|0x08) = lsquic_gquic_parse_packet_in_begin, + PBEL(0x00|0x00|0x00|0x10|0x08) = lsquic_gquic_parse_packet_in_begin, + PBEL(0x00|0x00|0x20|0x00|0x08) = lsquic_gquic_parse_packet_in_begin, + PBEL(0x00|0x00|0x20|0x10|0x08) = lsquic_gquic_parse_packet_in_begin, +#undef PBEL +}; + + +int +lsquic_parse_packet_in_server_begin (struct lsquic_packet_in *packet_in, + size_t length, int is_server_UNUSED, unsigned cid_len, + struct packin_parse_state *state) +{ + if (length) + return parse_begin_funcs[ packet_in->pi_data[0] >> 3 ]( + packet_in, length, 1, cid_len, state); + else + return -1; + +} + + +int +lsquic_parse_packet_in_begin (lsquic_packet_in_t *packet_in, size_t length, + int is_server, unsigned cid_len, struct packin_parse_state *state) +{ + if (length > 0) + { + switch (packet_in->pi_data[0] & 0xC0) + { + case 0xC0: + case 0x80: + return parse_ietf_v1_or_Q046plus_long_begin(packet_in, + length, is_server, cid_len, state); + case 0x00: + return lsquic_gquic_parse_packet_in_begin(packet_in, length, + is_server, cid_len, state); + default: + return lsquic_ietf_v1_parse_packet_in_short_begin(packet_in, + length, is_server, cid_len, state); + } + } + else + return -1; +} + + +int +lsquic_ietf_v1_parse_packet_in_begin (struct lsquic_packet_in *packet_in, + size_t length, int is_server, unsigned cid_len, + struct packin_parse_state *state) +{ + if (length > 0) + { + if (0 == (packet_in->pi_data[0] & 0x80)) + return lsquic_ietf_v1_parse_packet_in_short_begin(packet_in, length, + is_server, cid_len, state); + else + return lsquic_ietf_v1_parse_packet_in_long_begin(packet_in, length, + is_server, cid_len, state); + } + else + return -1; +} + + +int +lsquic_Q046_parse_packet_in_begin (struct lsquic_packet_in *packet_in, + size_t length, int is_server, unsigned cid_len, + struct packin_parse_state *state) +{ + assert(!is_server); + assert(cid_len == GQUIC_CID_LEN); + if (length > 0) + { + if (0 == (packet_in->pi_data[0] & 0x80)) + return lsquic_ietf_v1_parse_packet_in_short_begin(packet_in, length, + is_server, is_server ? cid_len : 0, state); + else + return lsquic_Q046_parse_packet_in_long_begin(packet_in, length, + is_server, cid_len, state); + } + else + return -1; +} + + +int +lsquic_Q050_parse_packet_in_begin (struct lsquic_packet_in *packet_in, + size_t length, int is_server, unsigned cid_len, + struct packin_parse_state *state) +{ + assert(!is_server); + assert(cid_len == GQUIC_CID_LEN); + if (length > 0) + { + if (0 == (packet_in->pi_data[0] & 0x80)) + return lsquic_ietf_v1_parse_packet_in_short_begin(packet_in, length, + is_server, is_server ? cid_len : 0, state); + else + return lsquic_Q050_parse_packet_in_long_begin(packet_in, length, + is_server, cid_len, state); + } + else + return -1; +} + + +/* TODO This function uses the full packet parsing functionality to get at + * the CID. This is an overkill and could be optimized -- at the cost of + * some code duplication, of course. + */ +int +lsquic_cid_from_packet (const unsigned char *buf, size_t bufsz, + lsquic_cid_t *cid) +{ + struct lsquic_packet_in packet_in; + struct packin_parse_state pps; + int s; + + packet_in.pi_data = (unsigned char *) buf; + s = lsquic_parse_packet_in_server_begin(&packet_in, bufsz, 1, 8, &pps); + if (0 == s && (packet_in.pi_flags & PI_CONN_ID)) + { + *cid = packet_in.pi_dcid; + return 0; + } + else + return -1; +} + + +int +lsquic_dcid_from_packet (const unsigned char *buf, size_t bufsz, + unsigned server_cid_len, uint8_t *cid_len) +{ + const unsigned char *p; + unsigned dcil, scil; + + if (bufsz < 9) + return -1; + + switch (buf[0] >> 3) + { + /* Xs vary, Gs are iGnored: */ + /* 1X11 XGGG: */ + /* + case (0x80|0x40|0x20|0x10|0x08) >> 3: + case (0x80|0x00|0x20|0x10|0x08) >> 3: + case (0x80|0x40|0x20|0x10|0x00) >> 3: + case (0x80|0x00|0x20|0x10|0x00) >> 3: + */ + Q046_long: + /* lsquic_Q046_parse_packet_in_long_begin */ + if (bufsz < 14) + return -1; + p = buf + 5; + dcil = p[0] >> 4; + if (dcil) + dcil += 3; + scil = p[0] & 0xF; + if (scil) + scil += 3; + ++p; + if (dcil == GQUIC_CID_LEN && scil == 0) + { + *cid_len = GQUIC_CID_LEN; + return (unsigned) (p - buf); + } + else + return -1; + /* 1X00 XGGG: */ + /* + case (0x80|0x40|0x00|0x00|0x08) >> 3: + case (0x80|0x00|0x00|0x00|0x08) >> 3: + case (0x80|0x40|0x00|0x00|0x00) >> 3: + case (0x80|0x00|0x00|0x00|0x00) >> 3: + case (0x80|0x40|0x00|0x10|0x08) >> 3: + case (0x80|0x00|0x00|0x10|0x08) >> 3: + case (0x80|0x40|0x00|0x10|0x00) >> 3: + case (0x80|0x00|0x00|0x10|0x00) >> 3: + case (0x80|0x40|0x20|0x00|0x08) >> 3: + case (0x80|0x00|0x20|0x00|0x08) >> 3: + case (0x80|0x40|0x20|0x00|0x00) >> 3: + case (0x80|0x00|0x20|0x00|0x00) >> 3: + */ + default: + /* parse_ietf_v1_or_Q046plus_long_begin */ + if (buf[4] == (unsigned) '6') + goto Q046_long; + /* lsquic_Q050_parse_packet_in_long_begin or + lsquic_ietf_v1_parse_packet_in_long_begin */ + if (bufsz < 14) + return -1; + dcil = buf[5]; + if (dcil <= MAX_CID_LEN && 6 + dcil < bufsz) + { + *cid_len = dcil; + return 6; + } + else + return -1; + /* 01XX XGGG */ + case (0x00|0x40|0x00|0x00|0x00) >> 3: + case (0x00|0x40|0x00|0x00|0x08) >> 3: + case (0x00|0x40|0x00|0x10|0x00) >> 3: + case (0x00|0x40|0x00|0x10|0x08) >> 3: + case (0x00|0x40|0x20|0x00|0x00) >> 3: + case (0x00|0x40|0x20|0x00|0x08) >> 3: + case (0x00|0x40|0x20|0x10|0x00) >> 3: + case (0x00|0x40|0x20|0x10|0x08) >> 3: + /* lsquic_ietf_v1_parse_packet_in_short_begin */ + if (1 + server_cid_len <= bufsz) + { + *cid_len = server_cid_len; + return 1; + } + else + return -1; + /* 00XX 0GGG */ + case (0x00|0x00|0x00|0x00|0x00) >> 3: + case (0x00|0x00|0x00|0x10|0x00) >> 3: + case (0x00|0x00|0x20|0x00|0x00) >> 3: + case (0x00|0x00|0x20|0x10|0x00) >> 3: + /* lsquic_Q046_parse_packet_in_short_begin */ + if (1 + server_cid_len <= bufsz && (buf[0] & 0x40)) + { + *cid_len = server_cid_len; + return 1; + } + else + return -1; + /* 00XX 1GGG */ + case (0x00|0x00|0x00|0x00|0x08) >> 3: + case (0x00|0x00|0x00|0x10|0x08) >> 3: + case (0x00|0x00|0x20|0x00|0x08) >> 3: + case (0x00|0x00|0x20|0x10|0x08) >> 3: + /* lsquic_gquic_parse_packet_in_begin */ + if (1 + GQUIC_CID_LEN <= bufsz + && (buf[0] & PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID)) + { + *cid_len = server_cid_len; + return 1; + } + else + return -1; + } +} + + +/* See [draft-ietf-quic-transport-28], Section 12.4 (Table 3) */ +const enum quic_ft_bit lsquic_legal_frames_by_level[N_LSQVER][N_ENC_LEVS] = +{ + [LSQVER_I002] = { + [ENC_LEV_INIT] = QUIC_FTBIT_CRYPTO | QUIC_FTBIT_PADDING | QUIC_FTBIT_PING + | QUIC_FTBIT_ACK | QUIC_FTBIT_CONNECTION_CLOSE, + [ENC_LEV_0RTT] = QUIC_FTBIT_PADDING | QUIC_FTBIT_PING + | QUIC_FTBIT_STREAM | QUIC_FTBIT_RST_STREAM + | QUIC_FTBIT_BLOCKED | QUIC_FTBIT_CONNECTION_CLOSE + | QUIC_FTBIT_MAX_DATA | QUIC_FTBIT_MAX_STREAM_DATA + | QUIC_FTBIT_MAX_STREAMS | QUIC_FTBIT_STREAM_BLOCKED + | QUIC_FTBIT_STREAMS_BLOCKED + | QUIC_FTBIT_NEW_CONNECTION_ID | QUIC_FTBIT_STOP_SENDING + | QUIC_FTBIT_PATH_CHALLENGE + | QUIC_FTBIT_DATAGRAM + | QUIC_FTBIT_RETIRE_CONNECTION_ID, + [ENC_LEV_HSK] = QUIC_FTBIT_CRYPTO | QUIC_FTBIT_PADDING | QUIC_FTBIT_PING + | QUIC_FTBIT_ACK| QUIC_FTBIT_CONNECTION_CLOSE, + [ENC_LEV_APP] = QUIC_FTBIT_CRYPTO | QUIC_FTBIT_PADDING | QUIC_FTBIT_PING + | QUIC_FTBIT_ACK | QUIC_FTBIT_CONNECTION_CLOSE + | QUIC_FTBIT_STREAM | QUIC_FTBIT_RST_STREAM + | QUIC_FTBIT_BLOCKED + | QUIC_FTBIT_MAX_DATA | QUIC_FTBIT_MAX_STREAM_DATA + | QUIC_FTBIT_MAX_STREAMS | QUIC_FTBIT_STREAM_BLOCKED + | QUIC_FTBIT_STREAMS_BLOCKED + | QUIC_FTBIT_NEW_CONNECTION_ID | QUIC_FTBIT_STOP_SENDING + | QUIC_FTBIT_PATH_CHALLENGE | QUIC_FTBIT_PATH_RESPONSE + | QUIC_FTBIT_HANDSHAKE_DONE | QUIC_FTBIT_ACK_FREQUENCY + | QUIC_FTBIT_RETIRE_CONNECTION_ID | QUIC_FTBIT_NEW_TOKEN + | QUIC_FTBIT_TIMESTAMP + | QUIC_FTBIT_DATAGRAM + , + }, + [LSQVER_I001] = { + [ENC_LEV_INIT] = QUIC_FTBIT_CRYPTO | QUIC_FTBIT_PADDING | QUIC_FTBIT_PING + | QUIC_FTBIT_ACK | QUIC_FTBIT_CONNECTION_CLOSE, + [ENC_LEV_0RTT] = QUIC_FTBIT_PADDING | QUIC_FTBIT_PING + | QUIC_FTBIT_STREAM | QUIC_FTBIT_RST_STREAM + | QUIC_FTBIT_BLOCKED | QUIC_FTBIT_CONNECTION_CLOSE + | QUIC_FTBIT_MAX_DATA | QUIC_FTBIT_MAX_STREAM_DATA + | QUIC_FTBIT_MAX_STREAMS | QUIC_FTBIT_STREAM_BLOCKED + | QUIC_FTBIT_STREAMS_BLOCKED + | QUIC_FTBIT_NEW_CONNECTION_ID | QUIC_FTBIT_STOP_SENDING + | QUIC_FTBIT_PATH_CHALLENGE + | QUIC_FTBIT_DATAGRAM + | QUIC_FTBIT_RETIRE_CONNECTION_ID, + [ENC_LEV_HSK] = QUIC_FTBIT_CRYPTO | QUIC_FTBIT_PADDING | QUIC_FTBIT_PING + | QUIC_FTBIT_ACK| QUIC_FTBIT_CONNECTION_CLOSE, + [ENC_LEV_APP] = QUIC_FTBIT_CRYPTO | QUIC_FTBIT_PADDING | QUIC_FTBIT_PING + | QUIC_FTBIT_ACK | QUIC_FTBIT_CONNECTION_CLOSE + | QUIC_FTBIT_STREAM | QUIC_FTBIT_RST_STREAM + | QUIC_FTBIT_BLOCKED + | QUIC_FTBIT_MAX_DATA | QUIC_FTBIT_MAX_STREAM_DATA + | QUIC_FTBIT_MAX_STREAMS | QUIC_FTBIT_STREAM_BLOCKED + | QUIC_FTBIT_STREAMS_BLOCKED + | QUIC_FTBIT_NEW_CONNECTION_ID | QUIC_FTBIT_STOP_SENDING + | QUIC_FTBIT_PATH_CHALLENGE | QUIC_FTBIT_PATH_RESPONSE + | QUIC_FTBIT_HANDSHAKE_DONE | QUIC_FTBIT_ACK_FREQUENCY + | QUIC_FTBIT_RETIRE_CONNECTION_ID | QUIC_FTBIT_NEW_TOKEN + | QUIC_FTBIT_TIMESTAMP + | QUIC_FTBIT_DATAGRAM + , + }, + [LSQVER_ID29] = { + [ENC_LEV_INIT] = QUIC_FTBIT_CRYPTO | QUIC_FTBIT_PADDING | QUIC_FTBIT_PING + | QUIC_FTBIT_ACK | QUIC_FTBIT_CONNECTION_CLOSE, + [ENC_LEV_0RTT] = QUIC_FTBIT_PADDING | QUIC_FTBIT_PING + | QUIC_FTBIT_STREAM | QUIC_FTBIT_RST_STREAM + | QUIC_FTBIT_BLOCKED | QUIC_FTBIT_CONNECTION_CLOSE + | QUIC_FTBIT_MAX_DATA | QUIC_FTBIT_MAX_STREAM_DATA + | QUIC_FTBIT_MAX_STREAMS | QUIC_FTBIT_STREAM_BLOCKED + | QUIC_FTBIT_STREAMS_BLOCKED + | QUIC_FTBIT_NEW_CONNECTION_ID | QUIC_FTBIT_STOP_SENDING + | QUIC_FTBIT_PATH_CHALLENGE | QUIC_FTBIT_PATH_RESPONSE + | QUIC_FTBIT_DATAGRAM + | QUIC_FTBIT_RETIRE_CONNECTION_ID, + [ENC_LEV_HSK] = QUIC_FTBIT_CRYPTO | QUIC_FTBIT_PADDING | QUIC_FTBIT_PING + | QUIC_FTBIT_ACK| QUIC_FTBIT_CONNECTION_CLOSE, + [ENC_LEV_APP] = QUIC_FTBIT_CRYPTO | QUIC_FTBIT_PADDING | QUIC_FTBIT_PING + | QUIC_FTBIT_ACK | QUIC_FTBIT_CONNECTION_CLOSE + | QUIC_FTBIT_STREAM | QUIC_FTBIT_RST_STREAM + | QUIC_FTBIT_BLOCKED + | QUIC_FTBIT_MAX_DATA | QUIC_FTBIT_MAX_STREAM_DATA + | QUIC_FTBIT_MAX_STREAMS | QUIC_FTBIT_STREAM_BLOCKED + | QUIC_FTBIT_STREAMS_BLOCKED + | QUIC_FTBIT_NEW_CONNECTION_ID | QUIC_FTBIT_STOP_SENDING + | QUIC_FTBIT_PATH_CHALLENGE | QUIC_FTBIT_PATH_RESPONSE + | QUIC_FTBIT_HANDSHAKE_DONE | QUIC_FTBIT_ACK_FREQUENCY + | QUIC_FTBIT_RETIRE_CONNECTION_ID | QUIC_FTBIT_NEW_TOKEN + | QUIC_FTBIT_TIMESTAMP + | QUIC_FTBIT_DATAGRAM + , + }, + [LSQVER_ID27] = { + [ENC_LEV_INIT] = QUIC_FTBIT_CRYPTO | QUIC_FTBIT_PADDING | QUIC_FTBIT_PING + | QUIC_FTBIT_ACK | QUIC_FTBIT_CONNECTION_CLOSE, + [ENC_LEV_0RTT] = QUIC_FTBIT_PADDING | QUIC_FTBIT_PING + | QUIC_FTBIT_STREAM | QUIC_FTBIT_RST_STREAM + | QUIC_FTBIT_BLOCKED + | QUIC_FTBIT_MAX_DATA | QUIC_FTBIT_MAX_STREAM_DATA + | QUIC_FTBIT_MAX_STREAMS | QUIC_FTBIT_STREAM_BLOCKED + | QUIC_FTBIT_STREAMS_BLOCKED + | QUIC_FTBIT_NEW_CONNECTION_ID | QUIC_FTBIT_STOP_SENDING + | QUIC_FTBIT_PATH_CHALLENGE | QUIC_FTBIT_PATH_RESPONSE + | QUIC_FTBIT_RETIRE_CONNECTION_ID + | QUIC_FTBIT_DATAGRAM + , + [ENC_LEV_HSK] = QUIC_FTBIT_CRYPTO | QUIC_FTBIT_PADDING | QUIC_FTBIT_PING + | QUIC_FTBIT_ACK| QUIC_FTBIT_CONNECTION_CLOSE, + [ENC_LEV_APP] = QUIC_FTBIT_CRYPTO | QUIC_FTBIT_PADDING | QUIC_FTBIT_PING + | QUIC_FTBIT_ACK | QUIC_FTBIT_CONNECTION_CLOSE + | QUIC_FTBIT_STREAM | QUIC_FTBIT_RST_STREAM + | QUIC_FTBIT_BLOCKED + | QUIC_FTBIT_MAX_DATA | QUIC_FTBIT_MAX_STREAM_DATA + | QUIC_FTBIT_MAX_STREAMS | QUIC_FTBIT_STREAM_BLOCKED + | QUIC_FTBIT_STREAMS_BLOCKED + | QUIC_FTBIT_NEW_CONNECTION_ID | QUIC_FTBIT_STOP_SENDING + | QUIC_FTBIT_PATH_CHALLENGE | QUIC_FTBIT_PATH_RESPONSE + | QUIC_FTBIT_HANDSHAKE_DONE | QUIC_FTBIT_ACK_FREQUENCY + | QUIC_FTBIT_RETIRE_CONNECTION_ID | QUIC_FTBIT_NEW_TOKEN + | QUIC_FTBIT_TIMESTAMP + | QUIC_FTBIT_DATAGRAM + , + }, +}; diff --git a/external/lsquic/src/liblsquic/lsquic_parse_common.h b/external/lsquic/src/liblsquic/lsquic_parse_common.h new file mode 100644 index 0000000..17c2768 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_parse_common.h @@ -0,0 +1,99 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_parse_common.h + */ + +#ifndef LSQUIC_PARSE_COMMON_H +#define LSQUIC_PARSE_COMMON_H 1 + +#ifdef WIN32 +#include "vc_compat.h" +#endif + +struct lsquic_packet_in; +struct packin_parse_state; + +struct packin_parse_state { + const unsigned char *pps_p; /* Pointer to packet number */ + unsigned pps_nbytes; /* Number of bytes in packet number */ +}; + +int +lsquic_parse_packet_in_begin (struct lsquic_packet_in *, + size_t length, int is_server, unsigned cid_len, + struct packin_parse_state *); + +int +lsquic_parse_packet_in_server_begin (struct lsquic_packet_in *packet_in, + size_t length, int is_server_UNUSED, unsigned cid_len, + struct packin_parse_state *); + +int +lsquic_ietf_v1_parse_packet_in_begin (struct lsquic_packet_in *, + size_t length, int is_server, unsigned cid_len, + struct packin_parse_state *); + +int +lsquic_Q046_parse_packet_in_begin (struct lsquic_packet_in *, + size_t length, int is_server, unsigned cid_len, + struct packin_parse_state *); + +int +lsquic_Q050_parse_packet_in_begin (struct lsquic_packet_in *, + size_t length, int is_server, unsigned cid_len, + struct packin_parse_state *); + +int +lsquic_ietf_v1_parse_packet_in_long_begin (struct lsquic_packet_in *, + size_t length, int is_server, unsigned cid_len, + struct packin_parse_state *); + +int +lsquic_ietf_v1_parse_packet_in_short_begin (struct lsquic_packet_in *, + size_t length, int is_server, unsigned cid_len, + struct packin_parse_state *); + +struct sockaddr; +enum lsquic_version; +struct lsquic_engine_public; + +int +lsquic_gquic_gen_ver_nego_pkt (unsigned char *buf, size_t bufsz, + const lsquic_cid_t *cid, unsigned versions); +int +lsquic_Q046_gen_ver_nego_pkt (unsigned char *buf, size_t bufsz, + const lsquic_cid_t *scid, const lsquic_cid_t *dcid, unsigned versions, + uint8_t); +int +lsquic_ietf_v1_gen_ver_nego_pkt (unsigned char *buf, size_t bufsz, + const lsquic_cid_t *scid, const lsquic_cid_t *dcid, unsigned versions, + uint8_t); +int +lsquic_iquic_gen_retry_pkt (unsigned char *buf, size_t bufsz, + const struct lsquic_engine_public *, const lsquic_cid_t *scid, + const lsquic_cid_t *dcid, enum lsquic_version, const struct sockaddr *, + uint8_t random_nybble); + +#define GQUIC_RESET_SZ 33 +ssize_t +lsquic_generate_gquic_reset (const lsquic_cid_t *, unsigned char *buf, + size_t buf_sz); + +int +lsquic_is_valid_iquic_hs_packet (const unsigned char *buf, size_t buf_sz, + lsquic_ver_tag_t *tag); + +int +lsquic_is_valid_ietf_v1_or_Q046plus_hs_packet (const unsigned char *buf, + size_t length, lsquic_ver_tag_t *tagp); + +/* Instead of just -1 like CHECK_SPACE(), this macro returns the number + * of bytes needed. + */ +#define CHECK_STREAM_SPACE(need, pstart, pend) do { \ + if ((intptr_t) (need) > ((pend) - (pstart))) { \ + return -((int) (need)); \ + } \ +} while (0) + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_parse_gquic_be.c b/external/lsquic/src/liblsquic/lsquic_parse_gquic_be.c new file mode 100644 index 0000000..dd4d3c1 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_parse_gquic_be.c @@ -0,0 +1,1089 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_parse_gquic_be.c -- Parsing functions specific to big-endian + * (now only Q043) GQUIC. + */ + +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include +#endif + +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_parse.h" +#include "lsquic_parse_common.h" +#include "lsquic_rechist.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_mm.h" +#include "lsquic_malo.h" +#include "lsquic_version.h" +#include "lsquic.h" +#include "lsquic_conn.h" +#include "lsquic_parse_gquic_be.h" /* Include to catch mismatches */ +#include "lsquic_byteswap.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_PARSE +#include "lsquic_logger.h" + + +/* read 16 bits(2 bytes) time, unit: us */ +uint64_t +lsquic_gquic_be_read_float_time16 (const void *mem) +{ + uint16_t val; + READ_UINT(val, 16, mem, 2); + uint64_t temp = val; + uint16_t exp = (temp >> 11) & 0x1F; + if (0 == exp) + return temp; + else + { + --exp; + temp &= 0x7FF; + temp |= 0x800; + return temp << exp; + } +} + + +void +lsquic_gquic_be_write_float_time16 (lsquic_time_t time_us, void *mem) +{ + uint16_t ret = 0; + uint16_t high, i; + + if (time_us < ((uint64_t)1 << 11)) + ret = time_us; + else if(time_us > 0x3FFC0000000) + ret = 0xFFFF; + else + { + high = 0; + for (i = 16; i > 0; i /= 2) + { + if (time_us >= (uint64_t)1 << (11 + i)) + { + high |= i; + time_us >>= i; + } + } + ret = time_us + (high << 11); + } +#if __BYTE_ORDER == __LITTLE_ENDIAN + ret = bswap_16(ret); +#endif + memcpy(mem, (void *)&ret, 2); +} + + +/* Parse out packet number */ +void +lsquic_gquic_be_parse_packet_in_finish (lsquic_packet_in_t *packet_in, + struct packin_parse_state *state) +{ + lsquic_packno_t packno; + if ((packet_in->pi_flags & PI_GQUIC) && state->pps_nbytes) + { + READ_UINT(packno, 64, state->pps_p, state->pps_nbytes); + packet_in->pi_packno = packno; + } +} + + +static int +lsquic_gquic_be_gen_reg_pkt_header (const struct lsquic_conn *lconn, + const struct lsquic_packet_out *packet_out, unsigned char *buf, + size_t bufsz, unsigned *packno_off_UNUSED, unsigned *packno_len_UNUSED) +{ + unsigned packnum_len, header_len; + enum packno_bits bits; + lsquic_packno_t packno; + unsigned char *p; + + bits = lsquic_packet_out_packno_bits(packet_out); + packnum_len = gquic_packno_bits2len(bits); + + if (0 == (packet_out->po_flags & (PO_CONN_ID|PO_VERSION|PO_NONCE))) + { + header_len = 1 + packnum_len; + if (header_len > bufsz) + { + errno = ENOBUFS; + return -1; + } + p = buf; + *p = bits << 4; + ++p; + } + else + { + const int + have_cid = packet_out->po_flags & PO_CONN_ID, + have_ver = packet_out->po_flags & PO_VERSION, + have_nonce = packet_out->po_flags & PO_NONCE; + header_len = 1 + + (!!have_cid << 3) + + (!!have_ver << 2) + + (!!have_nonce << 5) + + packnum_len + ; + if (header_len > bufsz) + { + errno = ENOBUFS; + return -1; + } + + p = buf; + + *p = (!!have_cid << 3) + | (bits << 4) + | ((!!have_nonce) << 2) + | !!have_ver; + ++p; + + if (have_cid) + { + assert(lconn->cn_cid.len == GQUIC_CID_LEN); + memcpy(p, lconn->cn_cid.idbuf, lconn->cn_cid.len); + p += lconn->cn_cid.len; + } + + if (have_ver) + { + memcpy(p, &packet_out->po_ver_tag, 4); + p += 4; + } + + if (have_nonce) + { + memcpy(p, packet_out->po_nonce , 32); + p += 32; + } + } + + packno = packet_out->po_packno; +#if __BYTE_ORDER == __LITTLE_ENDIAN + packno = bswap_64(packno); +#endif + memcpy(p, (unsigned char *) &packno + 8 - packnum_len, packnum_len); + p += packnum_len; + + assert(p - buf == (intptr_t) header_len); + + return header_len; +} + + +int +lsquic_gquic_be_gen_stream_frame (unsigned char *buf, size_t buf_len, + lsquic_stream_id_t stream_id64, uint64_t offset, int fin, size_t size, + gsf_read_f gsf_read, void *stream) +{ + /* 1fdoooss */ + uint32_t stream_id = stream_id64; + unsigned slen, olen, dlen; + unsigned char *p = buf + 1; + + /* ss: Stream ID length: 1, 2, 3, or 4 bytes */ + slen = (stream_id > 0x0000FF) + + (stream_id > 0x00FFFF) + + (stream_id > 0xFFFFFF) + + 1; + + /* ooo: Offset length: 0, 2, 3, 4, 5, 6, 7, or 8 bytes */ + olen = (offset >= (1ULL << 56)) + + (offset >= (1ULL << 48)) + + (offset >= (1ULL << 40)) + + (offset >= (1ULL << 32)) + + (offset >= (1ULL << 24)) + + (offset >= (1ULL << 16)) + + ((offset > 0) << 1); + + if (!fin) + { + unsigned n_avail; + uint16_t nr; + + n_avail = buf_len - (p + slen + olen - buf); + + /* If we cannot fill remaining buffer, we need to include data + * length. + */ + dlen = (size < n_avail) << 1; + n_avail -= dlen; + + CHECK_STREAM_SPACE(1 + olen + slen + dlen + + + 1 /* We need to write at least 1 byte */, buf, buf + buf_len); + +#if __BYTE_ORDER == __LITTLE_ENDIAN + stream_id = bswap_32(stream_id); +#endif + memcpy(p, (unsigned char *) &stream_id + 4 - slen, slen); + p += slen; + +#if __BYTE_ORDER == __LITTLE_ENDIAN + offset = bswap_64(offset); +#endif + memcpy(p, (unsigned char *) &offset + 8 - olen, olen); + p += olen; + + /* Read as much as we can */ + nr = gsf_read(stream, p + dlen, n_avail, &fin); + assert(nr != 0); + + if (dlen) + { + uint16_t nr_copy = nr; +#if __BYTE_ORDER == __LITTLE_ENDIAN + nr_copy = bswap_16(nr_copy); +#endif + memcpy(p, &nr_copy, 2); + } + + p += dlen + nr; + } + else + { + dlen = 2; + CHECK_STREAM_SPACE(1 + slen + olen + 2, buf, buf + buf_len); +#if __BYTE_ORDER == __LITTLE_ENDIAN + stream_id = bswap_32(stream_id); +#endif + memcpy(p, (unsigned char *) &stream_id + 4 - slen, slen); + p += slen; +#if __BYTE_ORDER == __LITTLE_ENDIAN + offset = bswap_64(offset); +#endif + memcpy(p, (unsigned char *) &offset + 8 - olen, olen); + p += olen; + memset(p, 0, 2); + p += 2; + } + + /* Convert slen to bit representation: 0 - 3: */ + slen -= 1; + assert(slen <= 3); + + /* Convert olen to bit representation: 0 - 7: */ + olen += !olen; + olen -= 1; + assert(olen <= 7); + + buf[0] = 0x80 + | (fin << 6) + | (dlen << 4) + | (olen << 2) + | slen + ; + return p - buf; +} + +int +lsquic_gquic_be_dec_stream_frame_size (unsigned char *buf, size_t new_size) +{ + /* 1fdoooss */ + const unsigned char type = buf[0]; + + if (!(type & 0x20)) + return 1; + + const unsigned offset_len = ((type >> 2) & 7) + 1 - !((type >> 2) & 7); + const unsigned stream_id_len = 1 + (type & 3); + + uint16_t len = new_size; +#if __BYTE_ORDER == __LITTLE_ENDIAN + len = bswap_16(len); +#endif + memcpy(buf + 1 + offset_len + stream_id_len, &len, 2); + return 0; +} + + +/* return parsed (used) buffer length */ +int +lsquic_gquic_be_parse_stream_frame (const unsigned char *buf, size_t rem_packet_sz, + stream_frame_t *stream_frame) +{ + /* 1fdoooss */ + uint32_t stream_id; + const unsigned char *p = buf; + const unsigned char *const pend = p + rem_packet_sz; + + CHECK_SPACE(1, p, pend); + const char type = *p++; + + const unsigned data_len = (type >> 4) & 2; + const unsigned offset_len = ((type >> 2) & 7) + 1 - !((type >> 2) & 7); + const unsigned stream_id_len = 1 + (type & 3); + const unsigned need = data_len + offset_len + stream_id_len; + CHECK_SPACE(need, p, pend); + + memset(stream_frame, 0, sizeof(*stream_frame)); + + stream_frame->data_frame.df_fin = (type >> 6) & 1; + + stream_id = 0; + memcpy((unsigned char *) &stream_id + 4 - stream_id_len, p, stream_id_len); + +#if __BYTE_ORDER == __LITTLE_ENDIAN + stream_id = bswap_32(stream_id); +#endif + stream_frame->stream_id = stream_id; + p += stream_id_len; + + memcpy((unsigned char *) &stream_frame->data_frame.df_offset + + 8 - offset_len, p, offset_len); +#if __BYTE_ORDER == __LITTLE_ENDIAN + stream_frame->data_frame.df_offset = + bswap_64(stream_frame->data_frame.df_offset); +#endif + p += offset_len; + + if (data_len) + { + memcpy(&stream_frame->data_frame.df_size, p, data_len); +#if __BYTE_ORDER == __LITTLE_ENDIAN + stream_frame->data_frame.df_size = + bswap_16(stream_frame->data_frame.df_size); +#endif + p += data_len; + CHECK_SPACE(stream_frame->data_frame.df_size, p, pend); + stream_frame->data_frame.df_data = p; + p += stream_frame->data_frame.df_size; + } + else + { + stream_frame->data_frame.df_size = pend - p; + stream_frame->data_frame.df_data = p; + p = pend; + } + + /* From the spec: "A stream frame must always have either non-zero + * data length or the FIN bit set.' + */ + if (!(stream_frame->data_frame.df_size || + stream_frame->data_frame.df_fin)) + return -1; + + assert(p <= pend); + + return p - (unsigned char *) buf; +} + + +static int +parse_ack_frame_without_blocks (const unsigned char *buf, size_t buf_len, + struct ack_info *ack) +{ + /* 01nullmm */ + lsquic_packno_t tmp_packno; + const unsigned char type = buf[0]; + const unsigned char *p = buf + 1; + const unsigned char *const pend = buf + buf_len; + unsigned char n_timestamps; + + const int ack_block_len = twobit_to_1246(type & 3); /* mm */ + const int largest_obs_len = twobit_to_1246((type >> 2) & 3); /* ll */ + + CHECK_SPACE(largest_obs_len + 2 + ack_block_len + 1, p, pend); + + READ_UINT(ack->ranges[0].high, 64, p, largest_obs_len); + p += largest_obs_len; + + ack->lack_delta = lsquic_gquic_be_read_float_time16(p); + p += 2; + + READ_UINT(tmp_packno, 64, p, ack_block_len); + ack->ranges[0].low = ack->ranges[0].high - tmp_packno + 1; + p += ack_block_len; + + ack->n_ranges = 1; + + n_timestamps = *p; + ++p; + + if (n_timestamps) + { + unsigned timestamps_size = 5 + 3 * (n_timestamps - 1); + CHECK_SPACE(timestamps_size, p, pend); + p += timestamps_size; + } + + assert(p <= pend); + + ack->flags = 0; + return p - (unsigned char *) buf; +} + + +static int +parse_ack_frame_with_blocks (const unsigned char *buf, size_t buf_len, + struct ack_info *ack) +{ + /* 01nullmm */ + lsquic_packno_t tmp_packno; + const unsigned char type = buf[0]; + const unsigned char *p = buf + 1; + const unsigned char *const pend = buf + buf_len; + unsigned char n_timestamps; + + assert((type & 0xC0) == 0x40); /* We're passed correct frame type */ + + const int ack_block_len = twobit_to_1246(type & 3); /* mm */ + const int largest_obs_len = twobit_to_1246((type >> 2) & 3); /* ll */ + + CHECK_SPACE(largest_obs_len + 2 + 1 + ack_block_len, p, pend); + + READ_UINT(ack->ranges[0].high, 64, p, largest_obs_len); + p += largest_obs_len; + + ack->lack_delta = lsquic_gquic_be_read_float_time16(p); + p += 2; + + unsigned n_blocks; + CHECK_SPACE(1, p , pend); + n_blocks = *p; + ++p; + + READ_UINT(tmp_packno, 64, p, ack_block_len); + ack->ranges[0].low = ack->ranges[0].high - tmp_packno + 1; + p += ack_block_len; + + CHECK_SPACE((ack_block_len + 1) * n_blocks + /* timestamp count: */ 1, + p , pend); + unsigned i, n, gap; + for (i = 0, n = 1, gap = 0; i < n_blocks; ++i) + { + uint64_t length; + gap += *p; + READ_UINT(length, 64, p + 1, ack_block_len); + p += 1 + ack_block_len; + if (length) + { + ack->ranges[n].high = ack->ranges[n - 1].low - gap - 1; + ack->ranges[n].low = ack->ranges[n].high - length + 1; + ++n; + gap = 0; + } + } + ack->n_ranges = n; + + n_timestamps = *p; + ++p; + + if (n_timestamps) + { + unsigned timestamps_size = 5 + 3 * (n_timestamps - 1); + CHECK_SPACE(timestamps_size, p, pend); + p += timestamps_size; + } + + assert(p <= pend); + + ack->flags = 0; + return p - (unsigned char *) buf; +} + + +/* Return parsed (used) buffer length. + * If parsing failed, negative value is returned. + */ +int +lsquic_gquic_be_parse_ack_frame (const unsigned char *buf, size_t buf_len, + struct ack_info *ack, uint8_t UNUSED_exp) +{ + if (!(buf[0] & 0x20)) + return parse_ack_frame_without_blocks(buf, buf_len, ack); + else + return parse_ack_frame_with_blocks(buf, buf_len, ack); +} + + +int +lsquic_gquic_be_gen_stop_waiting_frame(unsigned char *buf, size_t buf_len, + lsquic_packno_t cur_packno, enum packno_bits bits, + lsquic_packno_t least_unacked_packno) +{ + lsquic_packno_t delta; + unsigned packnum_len = gquic_packno_bits2len(bits); + + if (buf_len >= 1 + packnum_len) + { + *buf = 0x06; + delta = cur_packno - least_unacked_packno; +#if __BYTE_ORDER == __LITTLE_ENDIAN + delta = bswap_64(delta); +#endif + memcpy(buf + 1, (unsigned char *) &delta + 8 - packnum_len, + packnum_len); + return 1 + packnum_len; + } + else + return -1; +} + + +int +lsquic_gquic_be_parse_stop_waiting_frame (const unsigned char *buf, size_t buf_len, + lsquic_packno_t cur_packno, enum packno_bits bits, + lsquic_packno_t *least_unacked) +{ + lsquic_packno_t delta; + unsigned packnum_len = gquic_packno_bits2len(bits); + + if (buf_len >= 1 + packnum_len) + { + READ_UINT(delta, 64, buf + 1, packnum_len); + *least_unacked = cur_packno - delta; + return 1 + packnum_len; + } + else + return -1; +} + + +int +lsquic_gquic_be_skip_stop_waiting_frame (size_t buf_len, enum packno_bits bits) +{ + unsigned packnum_len = gquic_packno_bits2len(bits); + if (buf_len >= 1 + packnum_len) + return 1 + packnum_len; + else + return -1; +} + + +int +lsquic_gquic_be_gen_window_update_frame (unsigned char *buf, int buf_len, + lsquic_stream_id_t stream_id64, uint64_t offset) +{ + uint32_t stream_id = stream_id64; + + if (buf_len < GQUIC_WUF_SZ) + return -1; + + *buf = 0x04; +#if __BYTE_ORDER == __LITTLE_ENDIAN + stream_id = bswap_32(stream_id); +#endif + memcpy(buf + 1, (unsigned char *) &stream_id, 4); +#if __BYTE_ORDER == __LITTLE_ENDIAN + offset = bswap_64(offset); +#endif + memcpy(buf + 1 + 4, (unsigned char *) &offset, 8); + return GQUIC_WUF_SZ; +} + + +int +lsquic_gquic_be_parse_window_update_frame (const unsigned char *buf, size_t buf_len, + lsquic_stream_id_t *stream_id_p, uint64_t *offset) +{ + uint32_t stream_id; + + if (buf_len < GQUIC_WUF_SZ) + return -1; + + READ_UINT(stream_id, 32, buf + 1, 4); + READ_UINT(*offset, 64, buf + 1 + 4, 8); + *stream_id_p = stream_id; + return GQUIC_WUF_SZ; +} + + +int +lsquic_gquic_be_gen_blocked_frame (unsigned char *buf, size_t buf_len, + lsquic_stream_id_t stream_id64) +{ + uint32_t stream_id = stream_id64; + + if (buf_len < GQUIC_BLOCKED_FRAME_SZ) + return -1; + + *buf = 0x05; +#if __BYTE_ORDER == __LITTLE_ENDIAN + stream_id = bswap_32(stream_id); +#endif + memcpy(buf + 1, &stream_id, 4); + return GQUIC_BLOCKED_FRAME_SZ; +} + + +int +lsquic_gquic_be_parse_blocked_frame (const unsigned char *buf, size_t buf_len, + lsquic_stream_id_t *stream_id_p) +{ + uint32_t stream_id; + if (buf_len < GQUIC_BLOCKED_FRAME_SZ) + return -1; + + READ_UINT(stream_id, 32, buf + 1, 4); + *stream_id_p = stream_id; + return GQUIC_BLOCKED_FRAME_SZ; +} + + +static unsigned +lsquic_gquic_be_rst_frame_size (lsquic_stream_id_t stream_id, uint64_t error_code, + uint64_t final_size) +{ + assert(0); /* This function is not called */ + return GQUIC_RST_STREAM_SZ; +} + + +int +lsquic_gquic_be_gen_rst_frame (unsigned char *buf, size_t buf_len, + lsquic_stream_id_t stream_id64, uint64_t offset, uint64_t error_code64) +{ + uint32_t stream_id = stream_id64, error_code = error_code64; + unsigned char *p = buf; + if (buf_len < GQUIC_RST_STREAM_SZ) + return -1; + + *p = 0x01; + ++p; +#if __BYTE_ORDER == __LITTLE_ENDIAN + stream_id = bswap_32(stream_id); +#endif + memcpy(p, &stream_id, 4); + p += 4; +#if __BYTE_ORDER == __LITTLE_ENDIAN + offset = bswap_64(offset); +#endif + memcpy(p, &offset, 8); + p += 8; +#if __BYTE_ORDER == __LITTLE_ENDIAN + error_code = bswap_32(error_code); +#endif + memcpy(p, &error_code, 4); + p += 4; + return p - buf; +} + + +int +lsquic_gquic_be_parse_rst_frame (const unsigned char *buf, size_t buf_len, + lsquic_stream_id_t *stream_id_p, uint64_t *offset, uint64_t *error_code_p) +{ + uint32_t stream_id, error_code; + + if (buf_len < GQUIC_RST_STREAM_SZ) + return -1; + + READ_UINT(stream_id, 32, buf + 1, 4); + READ_UINT(*offset, 64, buf + 1 + 4, 8); + READ_UINT(error_code, 32, buf + 1 + 4 + 8, 4); + *stream_id_p = stream_id; + *error_code_p = error_code; + return GQUIC_RST_STREAM_SZ; +} + + +int +lsquic_gquic_be_gen_ping_frame (unsigned char *buf, int buf_len) +{ + if (buf_len > 0) + { + buf[0] = 0x07; + return 1; + } + else + return -1; +} + + +size_t +lsquic_gquic_be_connect_close_frame_size (int app_error, unsigned error_code, + unsigned frame_type, size_t reason_len) +{ + return 1 + 4 + 2 + reason_len; +} + + +int +lsquic_gquic_be_gen_connect_close_frame (unsigned char *buf, size_t buf_len, + int app_error_UNUSED, unsigned ecode, const char *reason, int reason_len) +{ + uint32_t error_code; + unsigned char *p = buf; + if ((int) buf_len < 7 + reason_len) + return -1; + + *p = 0x02; + ++p; + error_code = ecode; +#if __BYTE_ORDER == __LITTLE_ENDIAN + error_code = bswap_32(error_code); +#endif + memcpy(p, &error_code, 4); + p += 4; +#if __BYTE_ORDER == __LITTLE_ENDIAN + const uint16_t copy = bswap_16(reason_len); + memcpy(p, ©, 2); +#else + memcpy(p, &reason_len, 2); +#endif + p += 2; + memcpy(p, reason, reason_len); + p += reason_len; + + return p - buf; +} + + +int +lsquic_gquic_be_parse_connect_close_frame (const unsigned char *buf, size_t buf_len, + int *app_error, uint64_t *error_code_p, + uint16_t *reason_len, uint8_t *reason_offset) +{ + uint32_t error_code; + + if (buf_len < 7) + return -1; + + READ_UINT(error_code, 32, buf + 1, 4); + READ_UINT(*reason_len, 16, buf + 1 + 4, 2); + *reason_offset = 7; + if (buf_len < 7u + *reason_len) + return -2; + + *error_code_p = error_code; + if (app_error) + *app_error = 0; + + return 7 + *reason_len; +} + + +int +lsquic_gquic_be_gen_goaway_frame (unsigned char *buf, size_t buf_len, + uint32_t error_code, lsquic_stream_id_t last_good_stream_id64, + const char *reason, size_t reason_len) +{ + uint32_t last_good_stream_id = last_good_stream_id64; + unsigned char *p = buf; + if (buf_len < GQUIC_GOAWAY_FRAME_SZ + reason_len) + return -1; + + *p = 0x03; + ++p; +#if __BYTE_ORDER == __LITTLE_ENDIAN + error_code = bswap_32(error_code); +#endif + memcpy(p, &error_code, 4); + p += 4; +#if __BYTE_ORDER == __LITTLE_ENDIAN + last_good_stream_id = bswap_32(last_good_stream_id); +#endif + memcpy(p, &last_good_stream_id, 4); + p += 4; +#if __BYTE_ORDER == __LITTLE_ENDIAN + uint16_t copy = bswap_16(reason_len); + memcpy(p, ©, 2); +#else + memcpy(p, &reason_len, 2); +#endif + p += 2; + if (reason_len) + { + memcpy(p, reason, reason_len); + p += reason_len; + } + + return p - buf; +} + + +/* the reason is buf + *reason_offset, length is *reason_length */ +int +lsquic_gquic_be_parse_goaway_frame (const unsigned char *buf, size_t buf_len, + uint32_t *error_code, lsquic_stream_id_t *last_good_stream_id, + uint16_t *reason_length, const char **reason) +{ + uint32_t stream_id; + if (buf_len < GQUIC_GOAWAY_FRAME_SZ) + return -1; + + READ_UINT(*error_code, 32, buf + 1, 4); + READ_UINT(stream_id, 32, buf + 1 + 4, 4); + READ_UINT(*reason_length, 16, buf + 1 + 4 + 4, 2); + if (*reason_length) + { + if ((int)buf_len < GQUIC_GOAWAY_FRAME_SZ + *reason_length) + return -2; + *reason = (const char *) buf + GQUIC_GOAWAY_FRAME_SZ; + } + else + *reason = NULL; + + *last_good_stream_id = stream_id; + return GQUIC_GOAWAY_FRAME_SZ + *reason_length; +} + + +/* Returns number of bytes written or -1 on failure */ +/* This function makes an assumption that there is at least one range */ +int +lsquic_gquic_be_gen_ack_frame (unsigned char *outbuf, size_t outbuf_sz, + gaf_rechist_first_f rechist_first, gaf_rechist_next_f rechist_next, + gaf_rechist_largest_recv_f rechist_largest_recv, + void *rechist, lsquic_time_t now, int *has_missing, + lsquic_packno_t *largest_received, const uint64_t *unused) +{ + lsquic_time_t time_diff; + lsquic_packno_t tmp_packno; + const struct lsquic_packno_range *const first = rechist_first(rechist); + if (!first) + { + errno = EINVAL; + return -1; + } + + /* Copy values from the first range, because the memory the pointer + * points to may change: + */ + const lsquic_packno_t first_low = first->low, first_high = first->high; + + unsigned char *p = outbuf; + unsigned char *const type = p; + unsigned char *const end = p + outbuf_sz; + +#define AVAIL() (end - p) + +#define CHECKOUT(sz) do { \ + if ((intptr_t) (sz) > AVAIL()) { \ + errno = ENOBUFS; \ + return -1; \ + } \ +} while (0) + + CHECKOUT(1); + ++p; + + /* 01nullmm */ + *type = 0x40; + + unsigned largest_acked_len, ack_block_len, bits; + + /* Calculate largest ACKed len and set `ll' bits: */ + const lsquic_packno_t maxno = first_high; + bits = (maxno >= (1ULL << 8)) + + (maxno >= (1ULL << 16)) + + (maxno >= (1ULL << 32)); + largest_acked_len = (1 << bits) - ((maxno >= (1ULL << 32)) << 1); + *type |= bits << 2; + + /* Calculate largest ACK block length and set `mm' bits: */ + unsigned n_ranges = 0; + lsquic_packno_t maxdiff = 0; + const struct lsquic_packno_range *range; + for (range = rechist_first(rechist); range; range = rechist_next(rechist)) + { + ++n_ranges; + const lsquic_packno_t diff = range->high - range->low + 1; + if (diff > maxdiff) + maxdiff = diff; + } + bits = (maxdiff >= (1ULL << 8)) + + (maxdiff >= (1ULL << 16)) + + (maxdiff >= (1ULL << 32)); + ack_block_len = (1 << bits) - ((maxdiff >= (1ULL << 32)) << 1); + *type |= bits; + + CHECKOUT(largest_acked_len); +#if __BYTE_ORDER == __LITTLE_ENDIAN + tmp_packno = bswap_64(maxno); +#else + tmp_packno = maxno; +#endif + memcpy(p, (unsigned char *) &tmp_packno + 8 - largest_acked_len, + largest_acked_len); + p += largest_acked_len; + + CHECKOUT(2); + time_diff = now - rechist_largest_recv(rechist); + lsquic_gquic_be_write_float_time16(time_diff, p); + LSQ_DEBUG("%s: diff: %"PRIu64"; encoded: 0x%04X", __func__, time_diff, + *(uint16_t*)p); + p += 2; + + if (n_ranges > 1) + { + *has_missing = 1; + *type |= 0x20; + /* We need to write out at least one range */ + CHECKOUT(2 * (1 + ack_block_len)); + unsigned char *const n_ranges_p = p; /* Set this later */ + lsquic_packno_t diff = maxno - first_low + 1; +#if __BYTE_ORDER == __LITTLE_ENDIAN + diff = bswap_64(diff); +#endif + memcpy(p + 1, (unsigned char *) &diff + 8 - ack_block_len, + ack_block_len); + p += ack_block_len + 1; + /* Write out ack blocks until one of the following occurs: + * 1. We run out of intervals. + * 2. We run out of room. + * 3. We run out of highest possible number of ACK blocks (0xFF). + */ + range = rechist_first(rechist); + lsquic_packno_t gap = 0; + n_ranges = 0; + do { + if (0 == gap) + { + const lsquic_packno_t prev_low = range->low; + range = rechist_next(rechist); + if (!range) + break; + gap = prev_low - range->high - 1; + } + if (gap >= 0x100) + { + *p = 0xFF; + gap -= 0xFF; + memset(p + 1, 0, ack_block_len); + } + else + { + *p = gap; + gap = 0; + diff = range->high - range->low + 1; +#if __BYTE_ORDER == __LITTLE_ENDIAN + diff = bswap_64(diff); +#endif + memcpy(p + 1, (unsigned char *) &diff + 8 - ack_block_len, + ack_block_len); + } + p += ack_block_len + 1; + ++n_ranges; + } while (n_ranges < 0xFF && + AVAIL() >= (intptr_t) ack_block_len + 1 + 1 /* timestamp byte */); + *n_ranges_p = n_ranges; + } + else + { + *has_missing = 0; + CHECKOUT(ack_block_len); + lsquic_packno_t diff = maxno - first_low + 1; +#if __BYTE_ORDER == __LITTLE_ENDIAN + diff = bswap_64(diff); +#endif + memcpy(p, (unsigned char *) &diff + 8 - ack_block_len, ack_block_len); + p += ack_block_len; + } + + /* We do not generate timestamp list because the reference implementation + * does not use them. When that changes, we will start sending timestamps + * over. + */ + CHECKOUT(1); + *p = 0; + ++p; + + *largest_received = maxno; + return p - (unsigned char *) outbuf; + +#undef CHECKOUT +} + + +static int +lsquic_gquic_be_gen_crypto_frame (unsigned char *buf, size_t buf_len, + lsquic_stream_id_t stream_if, uint64_t offset, int fin, + size_t size, gsf_read_f gsf_read, void *stream) +{ + assert(0); + return -1; +} + + +static int +lsquic_gquic_be_parse_crypto_frame (const unsigned char *buf, size_t rem_packet_sz, + struct stream_frame *stream_frame) +{ + assert(0); + return -1; +} + + +static unsigned +gquic_Q043_handshake_done_frame_size (void) +{ + return 0; +} + + +static int +gquic_Q043_gen_handshake_done_frame (unsigned char *buf, size_t buf_len) +{ + return -1; +} + + +static int +gquic_Q043_parse_handshake_done_frame (const unsigned char *buf, size_t buf_len) +{ + return -1; +} + + +const struct parse_funcs lsquic_parse_funcs_gquic_Q043 = +{ + .pf_gen_reg_pkt_header = lsquic_gquic_be_gen_reg_pkt_header, + .pf_parse_packet_in_finish = lsquic_gquic_be_parse_packet_in_finish, + .pf_gen_stream_frame = lsquic_gquic_be_gen_stream_frame, + .pf_calc_stream_frame_header_sz = lsquic_calc_stream_frame_header_sz_gquic, + .pf_parse_stream_frame = lsquic_gquic_be_parse_stream_frame, + .pf_parse_ack_frame = lsquic_gquic_be_parse_ack_frame, + .pf_dec_stream_frame_size = lsquic_gquic_be_dec_stream_frame_size, + .pf_gen_ack_frame = lsquic_gquic_be_gen_ack_frame, + .pf_gen_stop_waiting_frame = lsquic_gquic_be_gen_stop_waiting_frame, + .pf_parse_stop_waiting_frame = lsquic_gquic_be_parse_stop_waiting_frame, + .pf_skip_stop_waiting_frame = lsquic_gquic_be_skip_stop_waiting_frame, + .pf_gen_window_update_frame = lsquic_gquic_be_gen_window_update_frame, + .pf_parse_window_update_frame = lsquic_gquic_be_parse_window_update_frame, + .pf_gen_blocked_frame = lsquic_gquic_be_gen_blocked_frame, + .pf_parse_blocked_frame = lsquic_gquic_be_parse_blocked_frame, + .pf_rst_frame_size = lsquic_gquic_be_rst_frame_size, + .pf_gen_rst_frame = lsquic_gquic_be_gen_rst_frame, + .pf_parse_rst_frame = lsquic_gquic_be_parse_rst_frame, + .pf_connect_close_frame_size = lsquic_gquic_be_connect_close_frame_size, + .pf_gen_connect_close_frame = lsquic_gquic_be_gen_connect_close_frame, + .pf_parse_connect_close_frame = lsquic_gquic_be_parse_connect_close_frame, + .pf_gen_goaway_frame = lsquic_gquic_be_gen_goaway_frame, + .pf_parse_goaway_frame = lsquic_gquic_be_parse_goaway_frame, + .pf_gen_ping_frame = lsquic_gquic_be_gen_ping_frame, +#ifndef NDEBUG + .pf_write_float_time16 = lsquic_gquic_be_write_float_time16, + .pf_read_float_time16 = lsquic_gquic_be_read_float_time16, +#endif + .pf_generate_simple_prst = lsquic_generate_gquic_reset, + .pf_parse_frame_type = lsquic_parse_frame_type_gquic_Q035_thru_Q046, + .pf_turn_on_fin = lsquic_turn_on_fin_Q035_thru_Q046, + .pf_packout_size = lsquic_gquic_packout_size, + .pf_packout_max_header_size = lsquic_gquic_packout_header_size, + .pf_calc_packno_bits = lsquic_gquic_calc_packno_bits, + .pf_packno_bits2len = lsquic_gquic_packno_bits2len, + .pf_gen_crypto_frame = lsquic_gquic_be_gen_crypto_frame, + .pf_parse_crypto_frame = lsquic_gquic_be_parse_crypto_frame, + .pf_gen_handshake_done_frame = gquic_Q043_gen_handshake_done_frame, + .pf_parse_handshake_done_frame = gquic_Q043_parse_handshake_done_frame, + .pf_handshake_done_frame_size = gquic_Q043_handshake_done_frame_size, +}; diff --git a/external/lsquic/src/liblsquic/lsquic_parse_gquic_be.h b/external/lsquic/src/liblsquic/lsquic_parse_gquic_be.h new file mode 100644 index 0000000..5d39359 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_parse_gquic_be.h @@ -0,0 +1,117 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_PARSE_GQUIC_BE_H +#define LSQUIC_PARSE_GQUIC_BE_H + +/* Header file to make it easy to reference gQUIC parsing functions. This + * is only meant to be used internally. The alternative would be to place + * all gQUIC-big-endian functions -- from all versions -- in a single file, + * and that would be a mess. + */ + +#define CHECK_SPACE(need, pstart, pend) \ + do { if ((intptr_t) (need) > ((pend) - (pstart))) { return -1; } } while (0) + +uint64_t +lsquic_gquic_be_read_float_time16 (const void *mem); + +void +lsquic_gquic_be_write_float_time16 (lsquic_time_t time_us, void *mem); + +void +lsquic_gquic_be_parse_packet_in_finish (lsquic_packet_in_t *packet_in, + struct packin_parse_state *state); + +int +lsquic_gquic_be_gen_ver_nego_pkt (unsigned char *buf, size_t bufsz, + const lsquic_cid_t *, unsigned version_bitmask); + +int +lsquic_gquic_be_gen_stream_frame (unsigned char *buf, size_t buf_len, + lsquic_stream_id_t stream_id, uint64_t offset, int fin, size_t size, + gsf_read_f gsf_read, void *stream); + +int +lsquic_gquic_be_parse_stream_frame (const unsigned char *buf, size_t rem_packet_sz, + stream_frame_t *stream_frame); + +lsquic_packno_t +lsquic_gquic_be_parse_ack_high (const unsigned char *buf, size_t buf_len); + +int +lsquic_gquic_be_parse_ack_frame (const unsigned char *buf, size_t buf_len, + struct ack_info *, uint8_t); + +int +lsquic_gquic_be_gen_stop_waiting_frame(unsigned char *buf, size_t buf_len, + lsquic_packno_t cur_packno, enum packno_bits bits, + lsquic_packno_t least_unacked_packno); + +int +lsquic_gquic_be_parse_stop_waiting_frame (const unsigned char *buf, size_t buf_len, + lsquic_packno_t cur_packno, enum packno_bits bits, + lsquic_packno_t *least_unacked); + +int +lsquic_gquic_be_skip_stop_waiting_frame (size_t buf_len, enum packno_bits bits); + +int +lsquic_gquic_be_gen_window_update_frame (unsigned char *buf, int buf_len, + lsquic_stream_id_t stream_id, uint64_t offset); + +int +lsquic_gquic_be_parse_window_update_frame (const unsigned char *buf, size_t buf_len, + lsquic_stream_id_t *stream_id, uint64_t *offset); + +int +lsquic_gquic_be_gen_blocked_frame (unsigned char *buf, size_t buf_len, + lsquic_stream_id_t stream_id); + +int +lsquic_gquic_be_parse_blocked_frame (const unsigned char *buf, size_t buf_len, + lsquic_stream_id_t *stream_id); + +int +lsquic_gquic_be_gen_rst_frame (unsigned char *buf, size_t buf_len, + lsquic_stream_id_t stream_id, uint64_t offset, uint64_t error_code); + +int +lsquic_gquic_be_parse_rst_frame (const unsigned char *buf, size_t buf_len, + lsquic_stream_id_t *stream_id, uint64_t *offset, uint64_t *error_code); + +int +lsquic_gquic_be_gen_ping_frame (unsigned char *buf, int buf_len); + +size_t +lsquic_gquic_be_connect_close_frame_size (int app_error, unsigned error_code, + unsigned frame_type, size_t reason_len); + +int +lsquic_gquic_be_gen_connect_close_frame (unsigned char *buf, size_t buf_len, + int app_error, unsigned error_code, const char *reason, int reason_len); + +int +lsquic_gquic_be_parse_connect_close_frame (const unsigned char *buf, size_t buf_len, + int *app_error, uint64_t *error_code, + uint16_t *reason_len, uint8_t *reason_offset); + +int +lsquic_gquic_be_gen_goaway_frame(unsigned char *buf, size_t buf_len, uint32_t error_code, + lsquic_stream_id_t last_good_stream_id, const char *reason, + size_t reason_len); + +int +lsquic_gquic_be_parse_goaway_frame (const unsigned char *buf, size_t buf_len, + uint32_t *error_code, lsquic_stream_id_t *last_good_stream_id, + uint16_t *reason_length, const char **reason); + +int +lsquic_gquic_be_gen_ack_frame (unsigned char *outbuf, size_t outbuf_sz, + gaf_rechist_first_f rechist_first, gaf_rechist_next_f rechist_next, + gaf_rechist_largest_recv_f rechist_largest_recv, + void *rechist, lsquic_time_t now, int *has_missing, lsquic_packno_t *, + const uint64_t *); + +int +lsquic_gquic_be_dec_stream_frame_size (unsigned char *buf, size_t new_size); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_parse_gquic_common.c b/external/lsquic/src/liblsquic/lsquic_parse_gquic_common.c new file mode 100644 index 0000000..18bc46e --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_parse_gquic_common.c @@ -0,0 +1,713 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_parse_gquic_common.c -- Parsing functions common to GQUIC + */ + +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include +#endif + +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_out.h" +#include "lsquic_packet_gquic.h" +#include "lsquic_packet_in.h" +#include "lsquic_parse_common.h" +#include "lsquic_parse.h" +#include "lsquic_version.h" +#include "lsquic.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_PARSE +#include "lsquic_logger.h" + +#define CHECK_SPACE(need, pstart, pend) \ + do { if ((intptr_t) (need) > ((pend) - (pstart))) { return -1; } } while (0) + +/* This partially parses `packet_in' and returns 0 if in case it succeeded and + * -1 on failure. + * + * After this function returns 0, connection ID, nonce, and version fields can + * be examined. To finsh parsing the packet, call version-specific + * pf_parse_packet_in_finish() routine. + */ +int +lsquic_gquic_parse_packet_in_begin (lsquic_packet_in_t *packet_in, + size_t length, int is_server, unsigned cid_len, + struct packin_parse_state *state) +{ + int nbytes; + enum PACKET_PUBLIC_FLAGS public_flags; + const unsigned char *p = packet_in->pi_data; + const unsigned char *const pend = packet_in->pi_data + length; + + if (length > GQUIC_MAX_PACKET_SZ) + { + LSQ_DEBUG("Cannot handle packet_in_size(%zd) > %d packet incoming " + "packet's header", length, GQUIC_MAX_PACKET_SZ); + return -1; + } + + CHECK_SPACE(1, p, pend); + + public_flags = *p++; + + if (public_flags & PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID) + { + CHECK_SPACE(8, p, pend); + memset(&packet_in->pi_conn_id, 0, sizeof(packet_in->pi_conn_id)); + packet_in->pi_conn_id.len = 8; + memcpy(&packet_in->pi_conn_id.idbuf, p, 8); + packet_in->pi_flags |= PI_CONN_ID; + p += 8; + } + + if (public_flags & PACKET_PUBLIC_FLAGS_VERSION) + { + /* It seems that version negotiation packets sent by Google may have + * NONCE bit set. Ignore it: + */ + public_flags &= ~PACKET_PUBLIC_FLAGS_NONCE; + + if (is_server) + { + CHECK_SPACE(4, p, pend); + packet_in->pi_quic_ver = p - packet_in->pi_data; + p += 4; + } + else + { /* OK, we have a version negotiation packet. We need to verify + * that it has correct structure. See Section 4.3 of + * [draft-ietf-quic-transport-00]. + */ + if ((public_flags & ~(PACKET_PUBLIC_FLAGS_VERSION| + PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID)) + || ((pend - p) & 3)) + return -1; + CHECK_SPACE(4, p, pend); + packet_in->pi_quic_ver = p - packet_in->pi_data; + p = pend; + } + } + else + { + /* From [draft-hamilton-quic-transport-protocol-01]: + * 0x40 = MULTIPATH. This bit is reserved for multipath use. + * 0x80 is currently unused, and must be set to 0. + * + * The reference implementation checks that two high bits are not set + * if version flag is not set or if the version is the same. For our + * purposes, all GQUIC version we support so far have these bits set + * to zero. + */ + if (public_flags & (0x80|0x40)) + return -1; + packet_in->pi_quic_ver = 0; + } + + if (!is_server && (public_flags & PACKET_PUBLIC_FLAGS_NONCE) == + PACKET_PUBLIC_FLAGS_NONCE) + { + CHECK_SPACE(32, p, pend); + packet_in->pi_nonce = p - packet_in->pi_data; + p += 32; + } + else + packet_in->pi_nonce = 0; + + state->pps_p = p; + + packet_in->pi_packno = 0; + if (0 == (public_flags & (PACKET_PUBLIC_FLAGS_VERSION|PACKET_PUBLIC_FLAGS_RST)) + || ((public_flags & PACKET_PUBLIC_FLAGS_VERSION) && is_server)) + { + nbytes = twobit_to_1246((public_flags >> 4) & 3); + CHECK_SPACE(nbytes, p, pend); + p += nbytes; + state->pps_nbytes = nbytes; + } + else + state->pps_nbytes = 0; + + packet_in->pi_header_sz = p - packet_in->pi_data; + packet_in->pi_frame_types = 0; + memset(&packet_in->pi_next, 0, sizeof(packet_in->pi_next)); + packet_in->pi_data_sz = length; + packet_in->pi_refcnt = 0; + packet_in->pi_received = 0; + packet_in->pi_flags |= PI_GQUIC; + packet_in->pi_flags |= ((public_flags >> 4) & 3) << PIBIT_BITS_SHIFT; + + return 0; +} + + +static const unsigned char simple_prst_payload[] = { + 'P', 'R', 'S', 'T', + 0x01, 0x00, 0x00, 0x00, + 'R', 'N', 'O', 'N', + 0x08, 0x00, 0x00, 0x00, + 1, 2, 3, 4, 5, 6, 7, 8, +}; + + +typedef char correct_simple_prst_size[(GQUIC_RESET_SZ == + 1 + GQUIC_CID_LEN + sizeof(simple_prst_payload)) ? 1 : -1 ]; + + +ssize_t +lsquic_generate_gquic_reset (const lsquic_cid_t *cidp, + unsigned char *buf, size_t buf_sz) +{ + lsquic_cid_t cid; + + if (buf_sz < 1 + GQUIC_CID_LEN + sizeof(simple_prst_payload)) + { + errno = ENOBUFS; + return -1; + } + + if (cidp) + { + assert(GQUIC_CID_LEN == cidp->len); + cid = *cidp; + } + else + { + memset(&cid, 0, sizeof(cid)); + cid.len = GQUIC_CID_LEN; + } + + *buf++ = PACKET_PUBLIC_FLAGS_RST | PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID; + + memcpy(buf, cid.idbuf, GQUIC_CID_LEN); + buf += GQUIC_CID_LEN; + + memcpy(buf, simple_prst_payload, sizeof(simple_prst_payload)); + return 1 + GQUIC_CID_LEN + sizeof(simple_prst_payload); +} + + +static const enum quic_frame_type byte2frame_type_Q035_thru_Q046[0x100] = +{ + [0x00] = QUIC_FRAME_PADDING, + [0x01] = QUIC_FRAME_RST_STREAM, + [0x02] = QUIC_FRAME_CONNECTION_CLOSE, + [0x03] = QUIC_FRAME_GOAWAY, + [0x04] = QUIC_FRAME_WINDOW_UPDATE, + [0x05] = QUIC_FRAME_BLOCKED, + [0x06] = QUIC_FRAME_STOP_WAITING, + [0x07] = QUIC_FRAME_PING, + [0x08] = QUIC_FRAME_INVALID, + [0x09] = QUIC_FRAME_INVALID, + [0x0A] = QUIC_FRAME_INVALID, + [0x0B] = QUIC_FRAME_INVALID, + [0x0C] = QUIC_FRAME_INVALID, + [0x0D] = QUIC_FRAME_INVALID, + [0x0E] = QUIC_FRAME_INVALID, + [0x0F] = QUIC_FRAME_INVALID, + [0x10] = QUIC_FRAME_INVALID, + [0x11] = QUIC_FRAME_INVALID, + [0x12] = QUIC_FRAME_INVALID, + [0x13] = QUIC_FRAME_INVALID, + [0x14] = QUIC_FRAME_INVALID, + [0x15] = QUIC_FRAME_INVALID, + [0x16] = QUIC_FRAME_INVALID, + [0x17] = QUIC_FRAME_INVALID, + [0x18] = QUIC_FRAME_INVALID, + [0x19] = QUIC_FRAME_INVALID, + [0x1A] = QUIC_FRAME_INVALID, + [0x1B] = QUIC_FRAME_INVALID, + [0x1C] = QUIC_FRAME_INVALID, + [0x1D] = QUIC_FRAME_INVALID, + [0x1E] = QUIC_FRAME_INVALID, + [0x1F] = QUIC_FRAME_INVALID, + [0x20] = QUIC_FRAME_INVALID, + [0x21] = QUIC_FRAME_INVALID, + [0x22] = QUIC_FRAME_INVALID, + [0x23] = QUIC_FRAME_INVALID, + [0x24] = QUIC_FRAME_INVALID, + [0x25] = QUIC_FRAME_INVALID, + [0x26] = QUIC_FRAME_INVALID, + [0x27] = QUIC_FRAME_INVALID, + [0x28] = QUIC_FRAME_INVALID, + [0x29] = QUIC_FRAME_INVALID, + [0x2A] = QUIC_FRAME_INVALID, + [0x2B] = QUIC_FRAME_INVALID, + [0x2C] = QUIC_FRAME_INVALID, + [0x2D] = QUIC_FRAME_INVALID, + [0x2E] = QUIC_FRAME_INVALID, + [0x2F] = QUIC_FRAME_INVALID, + [0x30] = QUIC_FRAME_INVALID, + [0x31] = QUIC_FRAME_INVALID, + [0x32] = QUIC_FRAME_INVALID, + [0x33] = QUIC_FRAME_INVALID, + [0x34] = QUIC_FRAME_INVALID, + [0x35] = QUIC_FRAME_INVALID, + [0x36] = QUIC_FRAME_INVALID, + [0x37] = QUIC_FRAME_INVALID, + [0x38] = QUIC_FRAME_INVALID, + [0x39] = QUIC_FRAME_INVALID, + [0x3A] = QUIC_FRAME_INVALID, + [0x3B] = QUIC_FRAME_INVALID, + [0x3C] = QUIC_FRAME_INVALID, + [0x3D] = QUIC_FRAME_INVALID, + [0x3E] = QUIC_FRAME_INVALID, + [0x3F] = QUIC_FRAME_INVALID, + [0x40] = QUIC_FRAME_ACK, + [0x41] = QUIC_FRAME_ACK, + [0x42] = QUIC_FRAME_ACK, + [0x43] = QUIC_FRAME_ACK, + [0x44] = QUIC_FRAME_ACK, + [0x45] = QUIC_FRAME_ACK, + [0x46] = QUIC_FRAME_ACK, + [0x47] = QUIC_FRAME_ACK, + [0x48] = QUIC_FRAME_ACK, + [0x49] = QUIC_FRAME_ACK, + [0x4A] = QUIC_FRAME_ACK, + [0x4B] = QUIC_FRAME_ACK, + [0x4C] = QUIC_FRAME_ACK, + [0x4D] = QUIC_FRAME_ACK, + [0x4E] = QUIC_FRAME_ACK, + [0x4F] = QUIC_FRAME_ACK, + [0x50] = QUIC_FRAME_ACK, + [0x51] = QUIC_FRAME_ACK, + [0x52] = QUIC_FRAME_ACK, + [0x53] = QUIC_FRAME_ACK, + [0x54] = QUIC_FRAME_ACK, + [0x55] = QUIC_FRAME_ACK, + [0x56] = QUIC_FRAME_ACK, + [0x57] = QUIC_FRAME_ACK, + [0x58] = QUIC_FRAME_ACK, + [0x59] = QUIC_FRAME_ACK, + [0x5A] = QUIC_FRAME_ACK, + [0x5B] = QUIC_FRAME_ACK, + [0x5C] = QUIC_FRAME_ACK, + [0x5D] = QUIC_FRAME_ACK, + [0x5E] = QUIC_FRAME_ACK, + [0x5F] = QUIC_FRAME_ACK, + [0x60] = QUIC_FRAME_ACK, + [0x61] = QUIC_FRAME_ACK, + [0x62] = QUIC_FRAME_ACK, + [0x63] = QUIC_FRAME_ACK, + [0x64] = QUIC_FRAME_ACK, + [0x65] = QUIC_FRAME_ACK, + [0x66] = QUIC_FRAME_ACK, + [0x67] = QUIC_FRAME_ACK, + [0x68] = QUIC_FRAME_ACK, + [0x69] = QUIC_FRAME_ACK, + [0x6A] = QUIC_FRAME_ACK, + [0x6B] = QUIC_FRAME_ACK, + [0x6C] = QUIC_FRAME_ACK, + [0x6D] = QUIC_FRAME_ACK, + [0x6E] = QUIC_FRAME_ACK, + [0x6F] = QUIC_FRAME_ACK, + [0x70] = QUIC_FRAME_ACK, + [0x71] = QUIC_FRAME_ACK, + [0x72] = QUIC_FRAME_ACK, + [0x73] = QUIC_FRAME_ACK, + [0x74] = QUIC_FRAME_ACK, + [0x75] = QUIC_FRAME_ACK, + [0x76] = QUIC_FRAME_ACK, + [0x77] = QUIC_FRAME_ACK, + [0x78] = QUIC_FRAME_ACK, + [0x79] = QUIC_FRAME_ACK, + [0x7A] = QUIC_FRAME_ACK, + [0x7B] = QUIC_FRAME_ACK, + [0x7C] = QUIC_FRAME_ACK, + [0x7D] = QUIC_FRAME_ACK, + [0x7E] = QUIC_FRAME_ACK, + [0x7F] = QUIC_FRAME_ACK, + [0x80] = QUIC_FRAME_STREAM, + [0x81] = QUIC_FRAME_STREAM, + [0x82] = QUIC_FRAME_STREAM, + [0x83] = QUIC_FRAME_STREAM, + [0x84] = QUIC_FRAME_STREAM, + [0x85] = QUIC_FRAME_STREAM, + [0x86] = QUIC_FRAME_STREAM, + [0x87] = QUIC_FRAME_STREAM, + [0x88] = QUIC_FRAME_STREAM, + [0x89] = QUIC_FRAME_STREAM, + [0x8A] = QUIC_FRAME_STREAM, + [0x8B] = QUIC_FRAME_STREAM, + [0x8C] = QUIC_FRAME_STREAM, + [0x8D] = QUIC_FRAME_STREAM, + [0x8E] = QUIC_FRAME_STREAM, + [0x8F] = QUIC_FRAME_STREAM, + [0x90] = QUIC_FRAME_STREAM, + [0x91] = QUIC_FRAME_STREAM, + [0x92] = QUIC_FRAME_STREAM, + [0x93] = QUIC_FRAME_STREAM, + [0x94] = QUIC_FRAME_STREAM, + [0x95] = QUIC_FRAME_STREAM, + [0x96] = QUIC_FRAME_STREAM, + [0x97] = QUIC_FRAME_STREAM, + [0x98] = QUIC_FRAME_STREAM, + [0x99] = QUIC_FRAME_STREAM, + [0x9A] = QUIC_FRAME_STREAM, + [0x9B] = QUIC_FRAME_STREAM, + [0x9C] = QUIC_FRAME_STREAM, + [0x9D] = QUIC_FRAME_STREAM, + [0x9E] = QUIC_FRAME_STREAM, + [0x9F] = QUIC_FRAME_STREAM, + [0xA0] = QUIC_FRAME_STREAM, + [0xA1] = QUIC_FRAME_STREAM, + [0xA2] = QUIC_FRAME_STREAM, + [0xA3] = QUIC_FRAME_STREAM, + [0xA4] = QUIC_FRAME_STREAM, + [0xA5] = QUIC_FRAME_STREAM, + [0xA6] = QUIC_FRAME_STREAM, + [0xA7] = QUIC_FRAME_STREAM, + [0xA8] = QUIC_FRAME_STREAM, + [0xA9] = QUIC_FRAME_STREAM, + [0xAA] = QUIC_FRAME_STREAM, + [0xAB] = QUIC_FRAME_STREAM, + [0xAC] = QUIC_FRAME_STREAM, + [0xAD] = QUIC_FRAME_STREAM, + [0xAE] = QUIC_FRAME_STREAM, + [0xAF] = QUIC_FRAME_STREAM, + [0xB0] = QUIC_FRAME_STREAM, + [0xB1] = QUIC_FRAME_STREAM, + [0xB2] = QUIC_FRAME_STREAM, + [0xB3] = QUIC_FRAME_STREAM, + [0xB4] = QUIC_FRAME_STREAM, + [0xB5] = QUIC_FRAME_STREAM, + [0xB6] = QUIC_FRAME_STREAM, + [0xB7] = QUIC_FRAME_STREAM, + [0xB8] = QUIC_FRAME_STREAM, + [0xB9] = QUIC_FRAME_STREAM, + [0xBA] = QUIC_FRAME_STREAM, + [0xBB] = QUIC_FRAME_STREAM, + [0xBC] = QUIC_FRAME_STREAM, + [0xBD] = QUIC_FRAME_STREAM, + [0xBE] = QUIC_FRAME_STREAM, + [0xBF] = QUIC_FRAME_STREAM, + [0xC0] = QUIC_FRAME_STREAM, + [0xC1] = QUIC_FRAME_STREAM, + [0xC2] = QUIC_FRAME_STREAM, + [0xC3] = QUIC_FRAME_STREAM, + [0xC4] = QUIC_FRAME_STREAM, + [0xC5] = QUIC_FRAME_STREAM, + [0xC6] = QUIC_FRAME_STREAM, + [0xC7] = QUIC_FRAME_STREAM, + [0xC8] = QUIC_FRAME_STREAM, + [0xC9] = QUIC_FRAME_STREAM, + [0xCA] = QUIC_FRAME_STREAM, + [0xCB] = QUIC_FRAME_STREAM, + [0xCC] = QUIC_FRAME_STREAM, + [0xCD] = QUIC_FRAME_STREAM, + [0xCE] = QUIC_FRAME_STREAM, + [0xCF] = QUIC_FRAME_STREAM, + [0xD0] = QUIC_FRAME_STREAM, + [0xD1] = QUIC_FRAME_STREAM, + [0xD2] = QUIC_FRAME_STREAM, + [0xD3] = QUIC_FRAME_STREAM, + [0xD4] = QUIC_FRAME_STREAM, + [0xD5] = QUIC_FRAME_STREAM, + [0xD6] = QUIC_FRAME_STREAM, + [0xD7] = QUIC_FRAME_STREAM, + [0xD8] = QUIC_FRAME_STREAM, + [0xD9] = QUIC_FRAME_STREAM, + [0xDA] = QUIC_FRAME_STREAM, + [0xDB] = QUIC_FRAME_STREAM, + [0xDC] = QUIC_FRAME_STREAM, + [0xDD] = QUIC_FRAME_STREAM, + [0xDE] = QUIC_FRAME_STREAM, + [0xDF] = QUIC_FRAME_STREAM, + [0xE0] = QUIC_FRAME_STREAM, + [0xE1] = QUIC_FRAME_STREAM, + [0xE2] = QUIC_FRAME_STREAM, + [0xE3] = QUIC_FRAME_STREAM, + [0xE4] = QUIC_FRAME_STREAM, + [0xE5] = QUIC_FRAME_STREAM, + [0xE6] = QUIC_FRAME_STREAM, + [0xE7] = QUIC_FRAME_STREAM, + [0xE8] = QUIC_FRAME_STREAM, + [0xE9] = QUIC_FRAME_STREAM, + [0xEA] = QUIC_FRAME_STREAM, + [0xEB] = QUIC_FRAME_STREAM, + [0xEC] = QUIC_FRAME_STREAM, + [0xED] = QUIC_FRAME_STREAM, + [0xEE] = QUIC_FRAME_STREAM, + [0xEF] = QUIC_FRAME_STREAM, + [0xF0] = QUIC_FRAME_STREAM, + [0xF1] = QUIC_FRAME_STREAM, + [0xF2] = QUIC_FRAME_STREAM, + [0xF3] = QUIC_FRAME_STREAM, + [0xF4] = QUIC_FRAME_STREAM, + [0xF5] = QUIC_FRAME_STREAM, + [0xF6] = QUIC_FRAME_STREAM, + [0xF7] = QUIC_FRAME_STREAM, + [0xF8] = QUIC_FRAME_STREAM, + [0xF9] = QUIC_FRAME_STREAM, + [0xFA] = QUIC_FRAME_STREAM, + [0xFB] = QUIC_FRAME_STREAM, + [0xFC] = QUIC_FRAME_STREAM, + [0xFD] = QUIC_FRAME_STREAM, + [0xFE] = QUIC_FRAME_STREAM, + [0xFF] = QUIC_FRAME_STREAM, +}; + + +enum quic_frame_type +lsquic_parse_frame_type_gquic_Q035_thru_Q046 (const unsigned char *buf, + size_t len) +{ + if (len > 0) + return byte2frame_type_Q035_thru_Q046[buf[0]]; + else + return QUIC_FRAME_INVALID; +} + + +void +lsquic_turn_on_fin_Q035_thru_Q046 (unsigned char *stream_header) +{ + /* 1fdoooss */ + *stream_header |= 0x40; +} + + +size_t +lsquic_calc_stream_frame_header_sz_gquic (lsquic_stream_id_t stream_id, + uint64_t offset, unsigned data_sz_IGNORED) +{ + return + /* Type */ + 1 + /* Stream ID length */ + + ((stream_id) > 0x0000FF) + + ((stream_id) > 0x00FFFF) + + ((stream_id) > 0xFFFFFF) + + 1 + /* Offset length */ + + ((offset) >= (1ULL << 56)) + + ((offset) >= (1ULL << 48)) + + ((offset) >= (1ULL << 40)) + + ((offset) >= (1ULL << 32)) + + ((offset) >= (1ULL << 24)) + + ((offset) >= (1ULL << 16)) + + (((offset) > 0) << 1) + /* Add data length (2) yourself, if necessary */ + ; +} + + +static const char *const ecn2str[4] = +{ + [ECN_NOT_ECT] = "", + [ECN_ECT0] = "ECT(0)", + [ECN_ECT1] = "ECT(1)", + [ECN_CE] = "CE", +}; + + +void +lsquic_acki2str (const struct ack_info *acki, char *buf, size_t bufsz) +{ + size_t off, nw; + enum ecn ecn; + unsigned n; + + off = 0; + for (n = 0; n < acki->n_ranges; ++n) + { + nw = snprintf(buf + off, bufsz - off, "[%"PRIu64"-%"PRIu64"]", + acki->ranges[n].high, acki->ranges[n].low); + if (nw > bufsz - off) + return; + off += nw; + } + + if (acki->flags & AI_TRUNCATED) + { + nw = snprintf(buf + off, bufsz - off, RANGES_TRUNCATED_STR); + if (nw > bufsz - off) + return; + off += nw; + } + + if (acki->flags & AI_ECN) + { + for (ecn = 1; ecn <= 3; ++ecn) + { + nw = snprintf(buf + off, bufsz - off, " %s: %"PRIu64"%.*s", + ecn2str[ecn], acki->ecn_counts[ecn], ecn < 3, ";"); + if (nw > bufsz - off) + return; + off += nw; + } + } +} + + +size_t +lsquic_gquic_po_header_sz (enum packet_out_flags flags) +{ + return 1 /* Type */ + + (!!(flags & PO_CONN_ID) << 3) /* Connection ID */ + + (!!(flags & PO_VERSION) << 2) /* Version */ + + (!!(flags & PO_NONCE) << 5) /* Nonce */ + + gquic_packno_bits2len((flags >> POBIT_SHIFT) & 0x3) /* Packet number */ + ; +} + + +size_t +lsquic_gquic_packout_size (const struct lsquic_conn *conn, + const struct lsquic_packet_out *packet_out) +{ + return lsquic_gquic_po_header_sz(packet_out->po_flags) + + packet_out->po_data_sz + + GQUIC_PACKET_HASH_SZ + ; +} + + +size_t +lsquic_gquic_packout_header_size (const struct lsquic_conn *conn, + enum packet_out_flags flags, size_t dcid_len, + enum header_type unused) +{ + return lsquic_gquic_po_header_sz(flags); +} + + +int +lsquic_gquic_gen_ver_nego_pkt (unsigned char *buf, size_t bufsz, + const lsquic_cid_t *cid, unsigned version_bitmask) +{ + int sz; + unsigned char *p = buf; + unsigned char *const pend = p + bufsz; + + CHECK_SPACE(1, p, pend); + *p = PACKET_PUBLIC_FLAGS_VERSION | PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID; + ++p; + + if (GQUIC_CID_LEN != cid->len) + return -1; + + CHECK_SPACE(GQUIC_CID_LEN, p, pend); + memcpy(p, cid->idbuf, GQUIC_CID_LEN); + p += GQUIC_CID_LEN; + + sz = lsquic_gen_ver_tags(p, pend - p, version_bitmask); + if (sz < 0) + return -1; + + return p + sz - buf; +} + + +unsigned +lsquic_gquic_packno_bits2len (enum packno_bits bits) +{ + return gquic_packno_bits2len(bits); +} + + +enum packno_bits +lsquic_gquic_calc_packno_bits (lsquic_packno_t packno, + lsquic_packno_t least_unacked, uint64_t n_in_flight) +{ + uint64_t delta; + unsigned bits; + + delta = packno - least_unacked; + if (n_in_flight > delta) + delta = n_in_flight; + + delta *= 4; + bits = (delta > (1ULL << 8)) + + (delta > (1ULL << 16)) + + (delta > (1ULL << 32)); + + return bits; +} + + +/* `dst' serves both as source and destination. `src' is the new frame */ +int +lsquic_merge_acks (struct ack_info *dst, const struct ack_info *src) +{ + const struct lsquic_packno_range *a, *a_end, *b, *b_end, **p; + struct lsquic_packno_range *out, *out_end; + unsigned i; + int ok; + struct lsquic_packno_range out_ranges[256]; + + if (!(dst->n_ranges && src->n_ranges)) + return -1; + + a = dst->ranges; + a_end = a + dst->n_ranges; + b = src->ranges; + b_end = b + src->n_ranges; + out = out_ranges; + out_end = out + sizeof(out_ranges) / sizeof(out_ranges[0]); + + if (a->high >= b->high) + *out = *a; + else + *out = *b; + + while (1) + { + if (a < a_end && b < b_end) + { + if (a->high >= b->high) + p = &a; + else + p = &b; + } + else if (a < a_end) + p = &a; + else if (b < b_end) + p = &b; + else + { + ++out; + break; + } + + if ((*p)->high + 1 >= out->low) + out->low = (*p)->low; + else if (out + 1 < out_end) + *++out = **p; + else + return -1; + ++*p; + } + + if (src->flags & AI_ECN) + { + /* New ACK frame (src) should not contain ECN counts that are smaller + * than previous ACK frame, otherwise we cannot merge. + */ + ok = 1; + for (i = 0; i < sizeof(src->ecn_counts) + / sizeof(src->ecn_counts[0]); ++i) + ok &= dst->ecn_counts[i] <= src->ecn_counts[i]; + if (ok) + for (i = 0; i < sizeof(src->ecn_counts) + / sizeof(src->ecn_counts[0]); ++i) + dst->ecn_counts[i] = src->ecn_counts[i]; + else + return -1; + } + dst->flags |= src->flags; + dst->lack_delta = src->lack_delta; + dst->n_ranges = out - out_ranges; + memcpy(dst->ranges, out_ranges, sizeof(out_ranges[0]) * dst->n_ranges); + + return 0; +} diff --git a/external/lsquic/src/liblsquic/lsquic_parse_ietf.h b/external/lsquic/src/liblsquic/lsquic_parse_ietf.h new file mode 100644 index 0000000..91f855e --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_parse_ietf.h @@ -0,0 +1,16 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_PARSE_IETF_H +#define LSQUIC_PARSE_IETF_H 1 + +/* IETF QUIC v1 and Q050 use virtually the same CRYPTO frame format -- the only + * difference is the first byte. + */ +int +lsquic_ietf_v1_parse_crypto_frame (const unsigned char *buf, size_t rem_packet_sz, + struct stream_frame *stream_frame); +int +lsquic_ietf_v1_gen_crypto_frame (unsigned char *buf, unsigned char first_byte, + size_t buf_len, lsquic_stream_id_t UNUSED_1, uint64_t offset, + int UNUSED_2, size_t size, gsf_read_f gsf_read, void *stream); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_parse_ietf_v1.c b/external/lsquic/src/liblsquic/lsquic_parse_ietf_v1.c new file mode 100644 index 0000000..a0e6747 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_parse_ietf_v1.c @@ -0,0 +1,2348 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_parse_ietf_v1.c -- Parsing functions specific to IETF QUIC v1 + */ + +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include +#endif + +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_sizes.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_ietf.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_parse.h" +#include "lsquic_parse_common.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_mm.h" +#include "lsquic_malo.h" +#include "lsquic_version.h" +#include "lsquic.h" +#include "lsquic_byteswap.h" +#include "lsquic_conn.h" +#include "lsquic_enc_sess.h" +#include "lsquic_trans_params.h" +#include "lsquic_parse_ietf.h" +#include "lsquic_qtags.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_PARSE +#include "lsquic_logger.h" + +#define CHECK_SPACE(need, pstart, pend) \ + do { if ((intptr_t) (need) > ((pend) - (pstart))) { return -1; } } while (0) + +#define FRAME_TYPE_ACK_FREQUENCY 0xAF +#define FRAME_TYPE_TIMESTAMP 0x2F5 + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + +static int +ietf_v1_gen_one_varint (unsigned char *, size_t, unsigned char, uint64_t); + +static int +ietf_v1_gen_two_varints (unsigned char *, size_t, unsigned char, uint64_t[2]); + +static void +ietf_v1_parse_packet_in_finish (lsquic_packet_in_t *packet_in, + struct packin_parse_state *state) +{ + /* Packet number is set to an invalid value. The packet number must + * be decrypted, which happens later. + */ + packet_in->pi_packno = 1ULL << 62; +} + + +/* Note: token size is not accounted for */ +static size_t +ietf_v1_packout_header_size_long_by_flags (const struct lsquic_conn *lconn, + enum header_type header_type, enum packet_out_flags flags, + size_t dcid_len) +{ + size_t sz; + enum packno_bits packno_bits; + + packno_bits = (flags >> POBIT_SHIFT) & 0x3; + + sz = 1 /* Type */ + + 4 /* Version */ + + 1 /* DCIL */ + + dcid_len + + 1 /* SCIL */ + + CN_SCID(lconn)->len + + (header_type == HETY_INITIAL) /* Token length */ + + 2 /* Always use two bytes to encode payload length */ + + iquic_packno_bits2len(packno_bits) + ; + + return sz; +} + + +static size_t +ietf_v1_packout_header_size_long_by_packet (const struct lsquic_conn *lconn, + const struct lsquic_packet_out *packet_out) +{ + size_t sz; + unsigned token_len; /* Need intermediate value to quiet compiler warning */ + enum packno_bits packno_bits; + + packno_bits = lsquic_packet_out_packno_bits(packet_out); + + sz = 1 /* Type */ + + 4 /* Version */ + + 1 /* DCIL */ + + packet_out->po_path->np_dcid.len + + 1 /* SCIL */ + + CN_SCID(lconn)->len + + (packet_out->po_header_type == HETY_INITIAL ? + (token_len = packet_out->po_token_len, + (1 << vint_val2bits(token_len)) + token_len) : 0) + + 2 /* Always use two bytes to encode payload length */ + + iquic_packno_bits2len(packno_bits) + ; + + return sz; +} + + +static size_t +ietf_v1_packout_header_size_short (enum packet_out_flags flags, size_t dcid_len) +{ + enum packno_bits bits; + size_t sz; + + bits = (flags >> POBIT_SHIFT) & 0x3; + sz = 1 /* Type */ + + (flags & PO_CONN_ID ? dcid_len : 0) + + iquic_packno_bits2len(bits) + ; + + return sz; +} + + +static size_t +ietf_v1_packout_max_header_size (const struct lsquic_conn *lconn, + enum packet_out_flags flags, size_t dcid_len, enum header_type header_type) +{ + if ((lconn->cn_flags & LSCONN_HANDSHAKE_DONE) + && header_type == HETY_SHORT) + return ietf_v1_packout_header_size_short(flags, dcid_len); + else + return ietf_v1_packout_header_size_long_by_flags(lconn, header_type, + flags, dcid_len); +} + + +/* [draft-ietf-quic-transport-17] Section-17.2 */ +static const unsigned char header_type_to_bin[] = { + [HETY_INITIAL] = 0x0, + [HETY_0RTT] = 0x1, + [HETY_HANDSHAKE] = 0x2, + [HETY_RETRY] = 0x3, +}; + + +/* [draft-ietf-quic-v2] Section-3.2 */ +static const unsigned char header_type_to_bin_v2[] = { + [HETY_INITIAL] = 0x1, + [HETY_0RTT] = 0x2, + [HETY_HANDSHAKE] = 0x3, + [HETY_RETRY] = 0x0, +}; + + +static unsigned +write_packno (unsigned char *p, lsquic_packno_t packno, + enum packno_bits bits) +{ + unsigned char *const begin = p; + + switch (bits) + { + case IQUIC_PACKNO_LEN_4: + *p++ = packno >> 24; + /* fall through */ + case IQUIC_PACKNO_LEN_3: + *p++ = packno >> 16; + /* fall through */ + case IQUIC_PACKNO_LEN_2: + *p++ = packno >> 8; + /* fall through */ + default: + *p++ = packno; + } + + return p - begin; +} + + +static int +gen_long_pkt_header (const struct lsquic_conn *lconn, + const struct lsquic_packet_out *packet_out, unsigned char *buf, + size_t bufsz, unsigned *packno_off_p, unsigned *packno_len_p) +{ + unsigned payload_len, bits; + enum packno_bits packno_bits; + lsquic_ver_tag_t ver_tag; + unsigned char *p; + unsigned token_len; + size_t need; + + need = ietf_v1_packout_header_size_long_by_packet(lconn, packet_out); + if (need > bufsz) + { + errno = EINVAL; + return -1; + } + + packno_bits = lsquic_packet_out_packno_bits(packet_out); + p = buf; + if (lconn->cn_version == LSQVER_I002) + *p++ = 0xC0 + | ( header_type_to_bin_v2[ packet_out->po_header_type ] << 4) + | packno_bits + ; + else + *p++ = 0xC0 + | ( header_type_to_bin[ packet_out->po_header_type ] << 4) + | packno_bits + ; + ver_tag = lsquic_ver2tag(lconn->cn_version); + memcpy(p, &ver_tag, sizeof(ver_tag)); + p += sizeof(ver_tag); + + *p++ = packet_out->po_path->np_dcid.len; + memcpy(p, packet_out->po_path->np_dcid.idbuf, packet_out->po_path->np_dcid.len); + p += packet_out->po_path->np_dcid.len; + *p++ = CN_SCID(lconn)->len; + memcpy(p, CN_SCID(lconn)->idbuf, CN_SCID(lconn)->len); + p += CN_SCID(lconn)->len; + + if (HETY_INITIAL == packet_out->po_header_type) + { + token_len = packet_out->po_token_len; + bits = vint_val2bits(token_len); + vint_write(p, token_len, bits, 1 << bits); + p += 1 << bits; + memcpy(p, packet_out->po_token, token_len); + p += token_len; + } + + payload_len = packet_out->po_data_sz + + lconn->cn_esf_c->esf_tag_len + + iquic_packno_bits2len(packno_bits); + bits = 1; /* Always use two bytes to encode payload length */ + vint_write(p, payload_len, bits, 1 << bits); + p += 1 << bits; + + *packno_off_p = p - buf; + *packno_len_p = iquic_packno_bits2len(packno_bits); + p += write_packno(p, packet_out->po_packno, packno_bits); + + return p - buf; +} + + +static int +gen_short_pkt_header (const struct lsquic_conn *lconn, + const struct lsquic_packet_out *packet_out, unsigned char *buf, + size_t bufsz, unsigned *packno_off_p, unsigned *packno_len_p) +{ + unsigned packno_len, cid_len, need; + enum packno_bits packno_bits; + + packno_bits = lsquic_packet_out_packno_bits(packet_out); + packno_len = iquic_packno_bits2len(packno_bits); + cid_len = packet_out->po_flags & PO_CONN_ID ? packet_out->po_path->np_dcid.len : 0; + + need = 1 + cid_len + packno_len; + if (need > bufsz) + return -1; + + buf[0] = QUIC_BIT + | (lsquic_packet_out_spin_bit(packet_out) << 5) + | (lsquic_packet_out_square_bit(packet_out) << 4) + | (lsquic_packet_out_loss_bit(packet_out) << 3) + | (lsquic_packet_out_kp(packet_out) << 2) + | packno_bits + ; + + if (cid_len) + memcpy(buf + 1, packet_out->po_path->np_dcid.idbuf, cid_len); + + (void) write_packno(buf + 1 + cid_len, packet_out->po_packno, packno_bits); + + *packno_off_p = 1 + cid_len; + *packno_len_p = packno_len; + return need; +} + + +static int +ietf_v1_gen_reg_pkt_header (const struct lsquic_conn *lconn, + const struct lsquic_packet_out *packet_out, unsigned char *buf, + size_t bufsz, unsigned *packno_off, unsigned *packno_len) +{ + if (packet_out->po_header_type == HETY_SHORT) + return gen_short_pkt_header(lconn, packet_out, buf, bufsz, packno_off, + packno_len); + else + return gen_long_pkt_header(lconn, packet_out, buf, bufsz, packno_off, + packno_len); +} + + +static size_t +ietf_v1_packout_size (const struct lsquic_conn *lconn, + const struct lsquic_packet_out *packet_out) +{ + size_t sz; + + if ((lconn->cn_flags & LSCONN_HANDSHAKE_DONE) + && packet_out->po_header_type == HETY_SHORT) + sz = ietf_v1_packout_header_size_short(packet_out->po_flags, + packet_out->po_path->np_dcid.len); + else + sz = ietf_v1_packout_header_size_long_by_packet(lconn, packet_out); + + sz += packet_out->po_data_sz; + sz += lconn->cn_esf_c->esf_tag_len; + + return sz; +} + + +static int +ietf_v1_gen_stream_frame (unsigned char *buf, size_t buf_len, + lsquic_stream_id_t stream_id, uint64_t offset, int fin, size_t size, + gsf_read_f gsf_read, void *stream) +{ + /* 0b00001XXX + * 0x4 OFF + * 0x2 LEN + * 0x1 FIN + */ + unsigned sbits, obits, dbits; + unsigned slen, olen, dlen; + unsigned char *p = buf + 1; + +#if _MSC_VER + obits = 0, dbits = 0; +#endif + + assert(!!fin || !!size); + + /* We do not check that stream_id, offset, and size are smaller + * than 2^62: this is not necessary, as this code will never generate + * this many stream IDs, nor will it even transfer this much data. + * The size is limited by our own code. + */ + + sbits = vint_val2bits(stream_id); + slen = 1 << sbits; + if (offset) + { + obits = vint_val2bits(offset); + olen = 1 << obits; + } + else + olen = 0; + + if (!fin) + { + unsigned n_avail; + size_t nr; + + n_avail = buf_len - (p + slen + olen - buf); + + /* If we cannot fill remaining buffer, we need to include data + * length. + */ + if (size < n_avail) + { + dbits = vint_val2bits(size); + dlen = 1 << dbits; + n_avail -= dlen; + if (size > n_avail) + size = n_avail; + } + else + { + dlen = 0; + size = n_avail; + } + + CHECK_STREAM_SPACE(1 + olen + slen + dlen + + + 1 /* We need to write at least 1 byte */, buf, buf + buf_len); + + vint_write(p, stream_id, sbits, slen); + p += slen; + + if (olen) + vint_write(p, offset, obits, olen); + p += olen; + + /* Read as much as we can */ + nr = gsf_read(stream, p + dlen, size, &fin); + if (nr == 0) + return 0; + assert(nr <= size); + + if (dlen) + vint_write(p, nr, dbits, dlen); + + p += dlen + nr; + } + else + { + dlen = 1 + slen + olen < buf_len; + CHECK_STREAM_SPACE(1 + slen + olen + dlen, buf, buf + buf_len); + vint_write(p, stream_id, sbits, slen); + p += slen; + if (olen) + vint_write(p, offset, obits, olen); + p += olen; + if (dlen) + *p++ = 0; + } + + buf[0] = 0x08 + | (!!olen << 2) + | (!!dlen << 1) + | (!!fin << 0) + ; + return p - buf; +} + + +int +lsquic_ietf_v1_gen_crypto_frame (unsigned char *buf, unsigned char first_byte, + size_t buf_len, lsquic_stream_id_t UNUSED_1, uint64_t offset, + int UNUSED_2, size_t size, gsf_read_f gsf_read, void *stream) +{ + unsigned char *const end = buf + buf_len; + unsigned char *p; + unsigned obits, dbits; + unsigned olen, dlen; + size_t nr, n_avail; + int dummy_fin; + + obits = vint_val2bits(offset); + olen = 1 << obits; + dbits = vint_val2bits(size); + dlen = 1 << dbits; + + CHECK_SPACE(1 + olen + dlen + + (dlen > 0) /* We need to write at least 1 byte */, buf, end); + + n_avail = end - buf - 1 - olen - dlen; + if (n_avail < size) + size = n_avail; + + p = buf; + *p++ = first_byte; + + vint_write(p, offset, obits, olen); + p += olen; + + nr = gsf_read(stream, p + dlen, size, &dummy_fin); + assert(nr != 0); /* This indicates error in the caller */ + assert(nr <= size); /* This also indicates an error in the caller */ + + vint_write(p, nr, dbits, dlen); + p += dlen + nr; + + return p - buf; +} + + +static int +ietf_v1_gen_crypto_frame (unsigned char *buf, size_t buf_len, + lsquic_stream_id_t stream_id, uint64_t offset, int fin, + size_t size, gsf_read_f gsf_read, void *stream) +{ + return lsquic_ietf_v1_gen_crypto_frame(buf, 0x6, buf_len, stream_id, + offset, fin, size, gsf_read, stream); +} + + +static int +ietf_v1_dec_stream_frame_size (unsigned char *p, size_t new_size) +{ + /* 0b00001XXX + * 0x4 OFF + * 0x2 LEN + * 0x1 FIN + */ + unsigned bits; + + const char type = *p++; + if (!(type & 0x2)) + return 1; + + /* Stream ID */ + bits = *p >> 6; + p += 1 << bits; + + if (type & 0x4) + { + /* Offset */ + bits = *p >> 6; + p += 1 << bits; + } + + /* Write new size */ + bits = *p >> 6; + vint_write(p, new_size, bits, 1 << bits); + return 0; +} + + +/* return parsed (used) buffer length */ +static int +ietf_v1_parse_stream_frame (const unsigned char *buf, size_t rem_packet_sz, + struct stream_frame *stream_frame) +{ + /* 0b00001XXX + * 0x4 OFF + * 0x2 LEN + * 0x1 FIN + */ + const unsigned char *const pend = buf + rem_packet_sz; + const unsigned char *p = buf; + lsquic_stream_id_t stream_id; + uint64_t offset, data_sz; + int r; + + CHECK_SPACE(1, p, pend); + const char type = *p++; + + r = vint_read(p, pend, &stream_id); + if (r < 0) + return -1; + p += r; + + if (type & 0x4) + { + r = vint_read(p, pend, &offset); + if (r < 0) + return -1; + p += r; + } + else + offset = 0; + + if (type & 0x2) + { + r = vint_read(p, pend, &data_sz); + if (r < 0) + return -1; + p += r; + CHECK_SPACE(data_sz, p, pend); + } + else + data_sz = pend - p; + + /* Largest offset cannot exceed this value and we MUST detect this error */ + if (VINT_MAX_VALUE - offset < data_sz) + return -1; + + stream_frame->stream_id = stream_id; + stream_frame->data_frame.df_fin = type & 0x1; + stream_frame->data_frame.df_offset = offset; + stream_frame->data_frame.df_size = data_sz; + stream_frame->data_frame.df_data = p; + stream_frame->data_frame.df_read_off= 0; + stream_frame->packet_in = NULL; + + assert(p <= pend); + + return p + data_sz - (unsigned char *) buf; +} + + +int +lsquic_ietf_v1_parse_crypto_frame (const unsigned char *buf, + size_t rem_packet_sz, struct stream_frame *stream_frame) +{ + const unsigned char *const pend = buf + rem_packet_sz; + const unsigned char *p = buf; + uint64_t offset, data_sz; + int r; + + CHECK_SPACE(1, p, pend); + + ++p; + + r = vint_read(p, pend, &offset); + if (r < 0) + return -1; + p += r; + + r = vint_read(p, pend, &data_sz); + if (r < 0) + return -1; + p += r; + CHECK_SPACE(data_sz, p, pend); + + /* Largest offset cannot exceed this value and we MUST detect this error */ + if (VINT_MAX_VALUE - offset < data_sz) + return -1; + + stream_frame->stream_id = ~0ULL; /* Unset */ + stream_frame->data_frame.df_fin = 0; + stream_frame->data_frame.df_offset = offset; + stream_frame->data_frame.df_size = data_sz; + stream_frame->data_frame.df_data = p; + stream_frame->data_frame.df_read_off= 0; + stream_frame->packet_in = NULL; + + assert(p <= pend); + + return p + data_sz - (unsigned char *) buf; +} + + +static int +ietf_v1_parse_crypto_frame (const unsigned char *buf, size_t rem_packet_sz, + struct stream_frame *stream_frame) +{ + if (rem_packet_sz > 0) + { + assert(0x06 == buf[0]); + return lsquic_ietf_v1_parse_crypto_frame(buf, rem_packet_sz, + stream_frame); + } + else + return -1; +} + + +#if __GNUC__ +# define UNLIKELY(cond) __builtin_expect(cond, 0) +#else +# define UNLIKELY(cond) cond +#endif + + +/* Bits 10 (2) is ECT(0); * bits 01 (1) is ECT(1). */ +static const int ecnmap[4] = { 0, 2, 1, 3, }; + + +static int +ietf_v1_parse_ack_frame (const unsigned char *const buf, size_t buf_len, + struct ack_info *ack, uint8_t exp) +{ + const unsigned char *p = buf; + const unsigned char *const end = buf + buf_len; + uint64_t block_count, gap, block; + enum ecn ecn; + unsigned i; + int r; + + ++p; + r = vint_read(p, end, &ack->ranges[0].high); + if (UNLIKELY(r < 0)) + return -1; + p += r; + r = vint_read(p, end, &ack->lack_delta); + if (UNLIKELY(r < 0)) + return -1; + p += r; + ack->lack_delta <<= exp; + r = vint_read(p, end, &block_count); + if (UNLIKELY(r < 0)) + return -1; + p += r; + r = vint_read(p, end, &block); + if (UNLIKELY(r < 0)) + return -1; + ack->ranges[0].low = ack->ranges[0].high - block; + if (UNLIKELY(ack->ranges[0].high < ack->ranges[0].low)) + return -1; + p += r; + + for (i = 1; i <= block_count; ++i) + { + r = vint_read(p, end, &gap); + if (UNLIKELY(r < 0)) + return -1; + p += r; + r = vint_read(p, end, &block); + if (UNLIKELY(r < 0)) + return -1; + p += r; + if (i < sizeof(ack->ranges) / sizeof(ack->ranges[0])) + { + ack->ranges[i].high = ack->ranges[i - 1].low - gap - 2; + ack->ranges[i].low = ack->ranges[i].high - block; + if (UNLIKELY(ack->ranges[i].high >= ack->ranges[i - 1].low + || ack->ranges[i].high < ack->ranges[i].low)) + return -1; + } + } + + if (i < sizeof(ack->ranges) / sizeof(ack->ranges[0])) + { + ack->flags = 0; + ack->n_ranges = block_count + 1; + } + else + { + ack->flags = AI_TRUNCATED; + ack->n_ranges = sizeof(ack->ranges) / sizeof(ack->ranges[0]); + } + + + if (0x03 == buf[0]) + { + for (ecn = 1; ecn <= 3; ++ecn) + { + r = vint_read(p, end, &ack->ecn_counts[ecnmap[ecn]]); + if (UNLIKELY(r < 0)) + return -1; + p += r; + } + ack->flags |= AI_ECN; + } + + return p - buf; +} + + +static unsigned +ietf_v1_rst_frame_size (lsquic_stream_id_t stream_id, uint64_t error_code, + uint64_t final_size) +{ + return 1 /* Type */ + + vint_size(stream_id) /* Stream ID (i) */ + + vint_size(error_code) /* Application Error Code (i) */ + + vint_size(final_size); /* Final Size (i) */ +} + + +static int +ietf_v1_gen_rst_frame (unsigned char *buf, size_t buf_len, + lsquic_stream_id_t stream_id, uint64_t final_size, uint64_t error_code) +{ + unsigned vbits; + unsigned char *p; + + if (buf_len < ietf_v1_rst_frame_size(stream_id, error_code, final_size)) + return -1; + p = buf; + + *p++ = 0x04; + /* Stream ID (i) */ + vbits = vint_val2bits(stream_id); + vint_write(p, stream_id, vbits, 1 << vbits); + p += 1 << vbits; + + /* Application Error Code (i) */ + vbits = vint_val2bits(error_code); + vint_write(p, error_code, vbits, 1 << vbits); + p += 1 << vbits; + + /* Final Size (i) */ + vbits = vint_val2bits(final_size); + vint_write(p, final_size, vbits, 1 << vbits); + p += 1 << vbits; + + return p - buf; +} + + +static int +ietf_v1_parse_rst_frame (const unsigned char *buf, size_t buf_len, + lsquic_stream_id_t *stream_id_p, uint64_t *final_size_p, uint64_t *error_code_p) +{ + const unsigned char *p = buf + 1; + const unsigned char *const end = buf + buf_len; + uint64_t stream_id, final_size, error_code; + int r; + + /* Stream ID (i) */ + r = vint_read(p, end, &stream_id); + if (r < 0) + return r; + p += r; + + /* Application Error Code (i) */ + r = vint_read(p, end, &error_code); + if (r < 0) + return r; + p += r; + + /* Final Size (i) */ + r = vint_read(p, end, &final_size); + if (r < 0) + return r; + p += r; + + *stream_id_p = stream_id; + *final_size_p = final_size; + *error_code_p = error_code; + + return p - buf; +} + + +static int +ietf_v1_parse_stop_sending_frame (const unsigned char *buf, size_t buf_len, + lsquic_stream_id_t *stream_id, uint64_t *error_code) +{ + const unsigned char *p = buf + 1; + const unsigned char *const end = buf + buf_len; + int r; + + r = vint_read(p, end, stream_id); + if (r < 0) + return r; + p += r; + + r = vint_read(p, end, error_code); + if (r < 0) + return r; + p += r; + + return p - buf; +} + + +static int +ietf_v1_gen_stop_sending_frame (unsigned char *buf, size_t len, + lsquic_stream_id_t stream_id, uint64_t error_code) +{ + return ietf_v1_gen_two_varints(buf, len, 0x05, (uint64_t[]){ stream_id, + error_code, }); +} + + +static unsigned +ietf_v1_stop_sending_frame_size (lsquic_stream_id_t val, uint64_t error_code) +{ + return 1 + vint_size(val) + vint_size(error_code); +} + + +static int +ietf_v1_parse_new_token_frame (const unsigned char *buf, size_t buf_len, + const unsigned char **token, size_t *token_size_p) +{ + uint64_t token_size; + const unsigned char *p = buf + 1; + const unsigned char *const end = buf + buf_len; + int r; + + r = vint_read(p, end, &token_size); + if (r < 0) + return r; + p += r; + + if (p + token_size > end) + return -1; + *token = p; + p += token_size; + *token_size_p = token_size; + + return p - buf; +} + + +static int +ietf_v1_gen_ping_frame (unsigned char *buf, int buf_len) +{ + if (buf_len > 0) + { + buf[0] = 0x01; + return 1; + } + else + return -1; +} + + +static size_t +ietf_v1_connect_close_frame_size (int app_error, unsigned error_code, + unsigned frame_type, size_t reason_len) +{ + return 1 /* Type */ + + (1 << vint_val2bits(error_code)) /* Error code */ + + (app_error ? 0 : 1 << vint_val2bits(frame_type)) /* Frame type */ + + (1 << vint_val2bits(reason_len)) /* Reason Phrase Length */ + + reason_len + ; +} + + +static int +ietf_v1_gen_connect_close_frame (unsigned char *buf, size_t buf_len, + int app_error, unsigned error_code, const char *reason, int reason_len) +{ + size_t needed; + unsigned bits_error, bits_reason; + unsigned char *p; + + assert(!!reason == !!reason_len); + + bits_reason = vint_val2bits(reason_len); + bits_error = vint_val2bits(error_code); + needed = 1 /* Type */ + (1 << bits_error) + + (app_error ? 0 : 1) /* Frame type */ + /* TODO: frame type instead of just zero */ + + (1 << bits_reason) + reason_len; + + if (buf_len < needed) + return -1; + + p = buf; + *p = 0x1C + !!app_error; + ++p; + vint_write(p, error_code, bits_error, 1 << bits_error); + p += 1 << bits_error; + if (!app_error) + *p++ = 0; /* Frame type */ /* TODO */ + vint_write(p, reason_len, bits_reason, 1 << bits_reason); + p += 1 << bits_reason; + if (reason_len) + { + memcpy(p, reason, reason_len); + p += reason_len; + } + + assert((unsigned) (p - buf) == needed); + return p - buf; +} + + +static int +ietf_v1_parse_connect_close_frame (const unsigned char *buf, size_t buf_len, + int *app_error_p, uint64_t *error_code, uint16_t *reason_len, + uint8_t *reason_offset) +{ + const unsigned char *const pend = buf + buf_len; + const unsigned char *p = buf + 1; + uint64_t len; + ptrdiff_t off; + int app_error, r; + + r = vint_read(p, pend, error_code); + if (r < 0) + return -1; + p += r; + + app_error = buf[0] == 0x1D; + if (!app_error) + { + r = vint_read(p, pend, &len); + if (r < 0) + return -1; + p += r; + } + + r = vint_read(p, pend, &len); + if (r < 0) + return -1; + if (len > UINT16_MAX) + return -1; + p += r; + + off = p - buf; + if (buf_len < off + len) + return -2; + + *app_error_p = app_error; + *reason_len = len; + *reason_offset = off; + return off + len; +} + + +/* Returns number of bytes written or -1 on failure */ +/* This function makes an assumption that there is at least one range */ +static int +ietf_v1_gen_ack_frame (unsigned char *outbuf, size_t outbuf_sz, + gaf_rechist_first_f rechist_first, gaf_rechist_next_f rechist_next, + gaf_rechist_largest_recv_f rechist_largest_recv, + void *rechist, lsquic_time_t now, int *has_missing, + lsquic_packno_t *largest_received, const uint64_t *ecn_counts) +{ + unsigned char *block_count_p, *p = outbuf; + unsigned char *const end = p + outbuf_sz; + lsquic_time_t time_diff; + lsquic_packno_t packno_diff, gap, prev_low, maxno, rsize; + size_t sz; + const struct lsquic_packno_range *range; + unsigned a, b, c, addl_ack_blocks, ecn_needs; + unsigned bits[4]; + enum ecn ecn; + +#define AVAIL() (end - p) + +#define CHECKOUT(sz) do { \ + if ((intptr_t) (sz) > AVAIL()) { \ + errno = ENOBUFS; \ + return -1; \ + } \ +} while (0) + + range = rechist_first(rechist); + if (!range) + { + errno = EINVAL; + return -1; + } + // LSQ_DEBUG("range [%"PRIu64" - %"PRIu64"]", range->high, range->low); + + time_diff = now - rechist_largest_recv(rechist); + time_diff >>= TP_DEF_ACK_DELAY_EXP; + + maxno = range->high; + packno_diff = maxno - range->low; + + a = vint_val2bits(maxno); + b = vint_val2bits(time_diff); + c = vint_val2bits(packno_diff); + sz = 1 /* Type */ + + (1 << a) /* Largest Acknowledged */ + + (1 << b) /* ACK Delay */ + + 1 /* ACK Block Count */ + + (1 << c) /* ACK Blocks */ + ; + + CHECKOUT(sz); + + if (ecn_counts) + { + for (ecn = 1; ecn <= 3; ++ecn) + bits[ecn] = vint_val2bits(ecn_counts[ecn]); + ecn_needs = (1 << bits[1]) + (1 << bits[2]) + (1 << bits[3]); + } + else + ecn_needs = 0; + + *p = 0x02 + !!ecn_counts; + ++p; + + vint_write(p, maxno, a, 1 << a); + p += 1 << a; + vint_write(p, time_diff, b, 1 << b); + p += 1 << b; + block_count_p = p; + p += 1; /* Initial guess that we have fewer than 64 additional ACK Blocks */ + vint_write(p, packno_diff, c, 1 << c); + p += 1 << c; + + prev_low = range->low; + addl_ack_blocks = 0; + while ((range = rechist_next(rechist))) + { + // LSQ_DEBUG("range [%"PRIu64" - %"PRIu64"]", range->high, range->low); + gap = prev_low - range->high - 1; + rsize = range->high - range->low; + a = vint_val2bits(gap - 1); + b = vint_val2bits(rsize); + if (ecn_needs + (1 << a) + (1 << b) > (unsigned)AVAIL()) + break; + if (addl_ack_blocks == VINT_MAX_ONE_BYTE) + { + memmove(block_count_p + 2, block_count_p + 1, + p - block_count_p - 1); + ++p; + } + vint_write(p, gap - 1, a, 1 << a); + p += 1 << a; + vint_write(p, rsize, b, 1 << b); + p += 1 << b; + ++addl_ack_blocks; + prev_low = range->low; + } + + /* Here we assume that addl_ack_blocks < (1 << 14), which is a safe + * assumption to make. + */ + vint_write(block_count_p, addl_ack_blocks, + addl_ack_blocks > VINT_MAX_ONE_BYTE, + 1 + (addl_ack_blocks > VINT_MAX_ONE_BYTE)); + + if (ecn_counts) + { + assert(ecn_needs <= (unsigned)AVAIL()); + for (ecn = 1; ecn <= 3; ++ecn) + { + vint_write(p, ecn_counts[ecnmap[ecn]], bits[ecnmap[ecn]], 1 << bits[ecnmap[ecn]]); + p += 1 << bits[ecnmap[ecn]]; + } + } + + *has_missing = addl_ack_blocks > 0; + *largest_received = maxno; + return p - (unsigned char *) outbuf; + +#undef CHECKOUT +#undef AVAIL +} + + +static size_t +ietf_v1_calc_stream_frame_header_sz (lsquic_stream_id_t stream_id, + uint64_t offset, unsigned data_sz) +{ + if (offset) + return 1 + + (1 << vint_val2bits(stream_id)) + + (1 << vint_val2bits(data_sz)) + + (1 << vint_val2bits(offset)); + else + return 1 + + (1 << vint_val2bits(data_sz)) + + (1 << vint_val2bits(stream_id)); +} + + +/* [draft-ietf-quic-transport-24] Section 19.6 */ +static size_t +ietf_v1_calc_crypto_frame_header_sz (uint64_t offset, unsigned data_sz) +{ + return 1 /* Frame type */ + + (1 << vint_val2bits(offset)) + + (1 << vint_val2bits(data_sz)) + ; +} + + +static enum quic_frame_type +ietf_v1_parse_frame_type (const unsigned char *buf, size_t len) +{ + uint64_t val; + int s; + + if (len > 0 && buf[0] < 0x40) + return lsquic_iquic_byte2type[buf[0]]; + + s = vint_read(buf, buf + len, &val); + if (s > 0 && (unsigned) s == (1u << vint_val2bits(val))) + switch (val) + { + case FRAME_TYPE_ACK_FREQUENCY: return QUIC_FRAME_ACK_FREQUENCY; + case FRAME_TYPE_TIMESTAMP: return QUIC_FRAME_TIMESTAMP; + default: break; + } + + return QUIC_FRAME_INVALID; +} + + +static unsigned +ietf_v1_path_chal_frame_size (void) +{ + return 1 + sizeof(uint64_t); +} + + +static int +ietf_v1_gen_path_chal_frame (unsigned char *buf, size_t len, uint64_t chal) +{ + if (len >= 1 + sizeof(chal)) + { + *buf = 0x1A; + memcpy(buf + 1, &chal, sizeof(chal)); + return 1 + sizeof(chal); + } + else + return -1; +} + + +static int +ietf_v1_parse_path_chal_frame (const unsigned char *buf, size_t len, + uint64_t *chal) +{ + if (len >= 9) + { + memcpy(chal, buf + 1, 8); + return 9; + } + else + return -1; +} + + +static unsigned +ietf_v1_path_resp_frame_size (void) +{ + return 1 + sizeof(uint64_t); +} + + +static int +ietf_v1_gen_path_resp_frame (unsigned char *buf, size_t len, uint64_t resp) +{ + if (len >= 1 + sizeof(resp)) + { + *buf = 0x1B; + memcpy(buf + 1, &resp, sizeof(resp)); + return 1 + sizeof(resp); + } + else + return -1; +} + + +static int +ietf_v1_parse_path_resp_frame (const unsigned char *buf, size_t len, + uint64_t *resp) +{ + return ietf_v1_parse_path_chal_frame(buf, len, resp); +} + + +static void +ietf_v1_turn_on_fin (unsigned char *stream_frame_header) +{ + *stream_frame_header |= 1; +} + + +static unsigned +ietf_v1_packno_bits2len (enum packno_bits bits) +{ + return iquic_packno_bits2len(bits); +} + + +static enum packno_bits +ietf_v1_calc_packno_bits (lsquic_packno_t packno, + lsquic_packno_t least_unacked, uint64_t n_in_flight) +{ + uint64_t delta; + unsigned bits; + + delta = packno - least_unacked; + if (n_in_flight > delta) + delta = n_in_flight; + + delta *= 4; + bits = (delta >= (1ULL << 8)) + + (delta >= (1ULL << 16)) + + (delta >= (1ULL << 24)) + ; + + return bits; +} + + +static int +ietf_v1_parse_one_varint (const unsigned char *buf, size_t len, uint64_t *val) +{ + int s; + + s = vint_read(buf + 1, buf + len, val); + if (s >= 0) + return 1 + s; + else + return s; +} + + +static int +ietf_v1_gen_one_varint (unsigned char *buf, size_t len, + unsigned char type, uint64_t val) +{ + unsigned vbits; + unsigned char *p; + + vbits = vint_val2bits(val); + + if (1u + (1u << vbits) > len) + return -1; + + p = buf; + *p++ = type; + vint_write(p, val, vbits, 1 << vbits); + p += 1 << vbits; + + return p - buf; +} + + +static int +ietf_v1_gen_blocked_frame (unsigned char *buf, size_t buf_len, uint64_t off) +{ + return ietf_v1_gen_one_varint(buf, buf_len, 0x14, off); +} + + +static int +ietf_v1_parse_blocked_frame (const unsigned char *buf, size_t sz, uint64_t *off) +{ + return ietf_v1_parse_one_varint(buf, sz, off); +} + + +static unsigned +ietf_v1_blocked_frame_size (uint64_t off) +{ + return 1 + vint_size(off); +} + + +static int +ietf_v1_parse_max_data (const unsigned char *buf, size_t len, uint64_t *val) +{ + return ietf_v1_parse_one_varint(buf, len, val); +} + + +static int +ietf_v1_gen_max_data_frame (unsigned char *buf, size_t len, uint64_t val) +{ + return ietf_v1_gen_one_varint(buf, len, 0x10, val); +} + + +static unsigned +ietf_v1_max_data_frame_size (uint64_t val) +{ + return 1 + vint_size(val); +} + + +static int +ietf_v1_parse_retire_cid_frame (const unsigned char *buf, size_t len, + uint64_t *val) +{ + return ietf_v1_parse_one_varint(buf, len, val); +} + + +static int +ietf_v1_gen_retire_cid_frame (unsigned char *buf, size_t len, uint64_t val) +{ + return ietf_v1_gen_one_varint(buf, len, 0x19, val); +} + + +static size_t +ietf_v1_retire_cid_frame_size (uint64_t val) +{ + return 1 + vint_size(val); +} + + +static int +ietf_v1_parse_new_conn_id (const unsigned char *buf, size_t len, + uint64_t *seqno, uint64_t *retire_prior_to, + lsquic_cid_t *cid, const unsigned char **reset_token) +{ + const unsigned char *p = buf + 1; + const unsigned char *const end = buf + len; + unsigned char cid_len; + int s; + + s = vint_read(p, end, seqno); + if (s < 0) + return s; + p += s; + + s = vint_read(p, end, retire_prior_to); + if (s < 0) + return s; + p += s; + + if (p >= end) + return -1; + + cid_len = *p++; + if (cid_len == 0 || cid_len > MAX_CID_LEN) + return -2; + + if ((unsigned) (end - p) < cid_len + IQUIC_SRESET_TOKEN_SZ) + return -1; + cid->len = cid_len; + memcpy(cid->idbuf, p, cid_len); + p += cid_len; + if (reset_token) + *reset_token = p; + p += IQUIC_SRESET_TOKEN_SZ; + + return p - buf; +} + + +/* Size of a frame that contains two varints */ +static unsigned +ietf_v1_two_varints_size (uint64_t vals[2]) +{ + unsigned vbits[2]; + + vbits[0] = vint_val2bits(vals[0]); + vbits[1] = vint_val2bits(vals[1]); + return 1u + (1u << vbits[0]) + (1u << vbits[1]); +} + + +static int +ietf_v1_gen_two_varints (unsigned char *buf, size_t len, + unsigned char type, uint64_t vals[2]) +{ + unsigned vbits[2]; + unsigned char *p; + + vbits[0] = vint_val2bits(vals[0]); + vbits[1] = vint_val2bits(vals[1]); + + if (1u + (1u << vbits[0]) + (1u << vbits[1]) > len) + return -1; + + p = buf; + *p++ = type; + vint_write(p, vals[0], vbits[0], 1 << vbits[0]); + p += 1 << vbits[0]; + vint_write(p, vals[1], vbits[1], 1 << vbits[1]); + p += 1 << vbits[1]; + + return p - buf; +} + + +static int +ietf_v1_parse_two_varints (const unsigned char *buf, size_t len, uint64_t *vals[2]) +{ + const unsigned char *p = buf; + const unsigned char *const end = p + len; + int s; + + if (len < 2) + return -1; + + ++p; /* Type */ + + s = vint_read(p, end, vals[0]); + if (s < 0) + return s; + p += s; + + s = vint_read(p, end, vals[1]); + if (s < 0) + return s; + p += s; + + return p - buf; +} + + +/* vals[0] is the frame type */ +static unsigned +ietf_v1_frame_with_varints_size (unsigned n, uint64_t vals[]) +{ + unsigned vbits, size; + + assert(n > 0); + vbits = vint_val2bits(vals[0]); + size = 1 << vbits; + while (--n) + { + vbits = vint_val2bits(vals[n]); + size += 1 << vbits; + } + + return size; +} + + +/* vals[0] is the frame type */ +static int +ietf_v1_gen_frame_with_varints (unsigned char *buf, size_t len, + unsigned count, uint64_t vals[]) +{ + unsigned vbits, n; + unsigned char *p; + + if (ietf_v1_frame_with_varints_size(count, vals) > len) + return -1; + + p = buf; + for (n = 0; n < count; ++n) + { + vbits = vint_val2bits(vals[n]); + vint_write(p, vals[n], vbits, 1 << vbits); + p += 1 << vbits; + } + + return p - buf; +} + + +/* Frame type is checked when frame type is parsed. The only use here is + * to calculate skip length. + */ +static int +ietf_v1_parse_frame_with_varints (const unsigned char *buf, size_t len, + const uint64_t frame_type, unsigned count, uint64_t *vals[]) +{ + const unsigned char *p = buf; + const unsigned char *const end = p + len; + unsigned vbits, n; + int s; + + vbits = vint_val2bits(frame_type); + p += 1 << vbits; + + for (n = 0; n < count; ++n) + { + s = vint_read(p, end, vals[n]); + if (s < 0) + return s; + p += s; + } + + return p - buf; +} + + + +static int +ietf_v1_parse_stream_blocked_frame (const unsigned char *buf, size_t len, + lsquic_stream_id_t *stream_id, uint64_t *offset) +{ + return ietf_v1_parse_two_varints(buf, len, + (uint64_t *[]) { stream_id, offset, }); +} + + +static unsigned +ietf_v1_stream_blocked_frame_size (lsquic_stream_id_t stream_id, uint64_t off) +{ + return ietf_v1_two_varints_size((uint64_t []) { stream_id, off, }); +} + + +static int +ietf_v1_gen_streams_blocked_frame (unsigned char *buf, size_t len, + enum stream_dir sd, uint64_t limit) +{ + return ietf_v1_gen_one_varint(buf, len, 0x16 + (sd == SD_UNI), limit); +} + + +static int +ietf_v1_parse_streams_blocked_frame (const unsigned char *buf, size_t len, + enum stream_dir *sd, uint64_t *limit) +{ + int s; + + s = ietf_v1_parse_one_varint(buf, len, limit); + if (s > 0) + { + if (buf[0] == 0x16) + *sd = SD_BIDI; + else + *sd = SD_UNI; + } + return s; +} + + +static unsigned +ietf_v1_streams_blocked_frame_size (uint64_t limit) +{ + return 1 + vint_size(limit); +} + + +static int +ietf_v1_gen_stream_blocked_frame (unsigned char *buf, size_t len, + lsquic_stream_id_t stream_id, uint64_t off) +{ + return ietf_v1_gen_two_varints(buf, len, 0x15, (uint64_t[]){ stream_id, off, }); +} + + +static int +ietf_v1_gen_max_stream_data_frame (unsigned char *buf, size_t len, + lsquic_stream_id_t stream_id, uint64_t off) +{ + return ietf_v1_gen_two_varints(buf, len, 0x11, (uint64_t[]){ stream_id, off, }); +} + + +static unsigned +ietf_v1_max_stream_data_frame_size (lsquic_stream_id_t stream_id, uint64_t off) +{ + return ietf_v1_two_varints_size((uint64_t []) { stream_id, off, }); +} + + + +static int +ietf_v1_parse_max_stream_data_frame (const unsigned char *buf, size_t len, + lsquic_stream_id_t *stream_id, uint64_t *off) +{ + return ietf_v1_parse_two_varints(buf, len, (uint64_t *[]){ stream_id, off, }); +} + + +static int +ietf_v1_parse_max_streams_frame (const unsigned char *buf, size_t len, + enum stream_dir *sd, uint64_t *max_streams) +{ + int s; + + s = ietf_v1_parse_one_varint(buf, len, max_streams); + if (s > 0) + *sd = buf[0] == 0x12 ? SD_BIDI : SD_UNI; + return s; +} + + +static int +ietf_v1_gen_max_streams_frame (unsigned char *buf, size_t len, + enum stream_dir sd, uint64_t limit) +{ + return ietf_v1_gen_one_varint(buf, len, 0x12 + (sd == SD_UNI), limit); +} + + +static unsigned +ietf_v1_max_streams_frame_size (uint64_t limit) +{ + return 1 + vint_size(limit); +} + + +static size_t +ietf_v1_new_token_frame_size (size_t token_sz) +{ + unsigned bits; + + bits = vint_val2bits(token_sz); + return 1 + (1 << bits) + token_sz; +} + + +static int +ietf_v1_gen_new_token_frame (unsigned char *buf, size_t buf_sz, + const unsigned char *token, size_t token_sz) +{ + unsigned char *p; + unsigned bits; + + bits = vint_val2bits(token_sz); + if (buf_sz < 1 + (1 << bits) + token_sz) + { + errno = ENOBUFS; + return -1; + } + + p = buf; + *p++ = 0x07; + vint_write(p, token_sz, bits, 1 << bits); + p += 1 << bits; + memcpy(p, token, token_sz); + p += token_sz; + + return p - buf; +} + + +static size_t +ietf_v1_new_connection_id_frame_size (unsigned seqno, unsigned scid_len) +{ + unsigned bits; + + bits = vint_val2bits(seqno); + return 1 /* Frame Type */ + + (1 << bits) /* Sequence Number */ + + 1 /* Retire Prior To (we always set it to zero */ + + 1 /* CID length */ + + scid_len + + IQUIC_SRESET_TOKEN_SZ; +} + + +static int +ietf_v1_gen_new_connection_id_frame (unsigned char *buf, size_t buf_sz, + unsigned seqno, const struct lsquic_cid *cid, + const unsigned char *token, size_t token_sz) +{ + unsigned char *p; + unsigned bits; + + if (buf_sz < ietf_v1_new_connection_id_frame_size(seqno, cid->len)) + return -1; + + p = buf; + *p++ = 0x18; + bits = vint_val2bits(seqno); + vint_write(p, seqno, bits, 1 << bits); + p += 1 << bits; + *p++ = 0; /* Retire Prior To */ + *p++ = cid->len; + memcpy(p, cid->idbuf, cid->len); + p += cid->len; + memcpy(p, token, token_sz); + p += token_sz; + + return p - buf; +} + + +/* [draft-ietf-quic-transport-17] Section-17.2 */ +static const enum header_type bits2ht[4] = +{ + [0] = HETY_INITIAL, + [1] = HETY_0RTT, + [2] = HETY_HANDSHAKE, + [3] = HETY_RETRY, +}; + + +static const enum header_type bits2ht_v2[4] = +{ + [0] = HETY_RETRY, + [1] = HETY_INITIAL, + [2] = HETY_0RTT, + [3] = HETY_HANDSHAKE, +}; + +#if LSQUIC_QIR +/* Return true if the parsing function is to enforce the minimum DCID + * length requirement as specified in IETF v1 and the I-Ds. + */ +static int +enforce_initial_dcil (enum lsquic_version version) +{ + return version != (enum lsquic_version) -1 + && ((1 << version) & LSQUIC_IETF_VERSIONS); +} +#endif + + +int +lsquic_ietf_v1_parse_packet_in_long_begin (struct lsquic_packet_in *packet_in, + size_t length, int is_server, unsigned cid_len, + struct packin_parse_state *state) +{ + const unsigned char *p = packet_in->pi_data; + const unsigned char *const end = p + length; + enum header_type header_type; + unsigned dcil, scil; + int r; + unsigned char first_byte; + uint64_t payload_len, token_len; + + if (length < 6) + return -1; + first_byte = *p++; + if ((packet_in->pi_flags & PI_VER_PARSED) == 0) + { + packet_in->pi_version = lsquic_tag2ver_fast(p); + packet_in->pi_flags |= PI_VER_PARSED; + } + p += 4; + if (packet_in->pi_version != LSQVER_VERNEG) + { + if (packet_in->pi_version == LSQVER_I002) + header_type = bits2ht_v2[ (first_byte >> 4) & 3 ]; + else + header_type = bits2ht[ (first_byte >> 4) & 3 ]; + } + else + header_type = HETY_VERNEG; + + packet_in->pi_header_type = header_type; + + dcil = *p++; + if (p + dcil >= end || dcil > MAX_CID_LEN) + return -1; + if (dcil) + { + memcpy(packet_in->pi_dcid.idbuf, p, dcil); + packet_in->pi_flags |= PI_CONN_ID; + p += dcil; + } + packet_in->pi_dcid.len = dcil; + + scil = *p++; + if (p + scil > end || scil > MAX_CID_LEN) + return -1; + if (scil) + { + packet_in->pi_scid_off = p - packet_in->pi_data; + p += scil; + } + packet_in->pi_scid_len = scil; + + switch (header_type) + { + case HETY_INITIAL: +#if LSQUIC_QIR + if (!enforce_initial_dcil(packet_in->pi_version)) + { + /* Count even zero-length DCID as having DCID */ + packet_in->pi_flags |= PI_CONN_ID; + } + else +#endif + if (is_server && dcil < MIN_INITIAL_DCID_LEN) + return -1; + r = vint_read(p, end, &token_len); + if (r < 0) + return -1; + if (token_len && !is_server) + { + /* From [draft-ietf-quic-transport-14]: + * + * Token Length: A variable-length integer specifying the + * length of the Token field, in bytes. This value is zero + * if no token is present. Initial packets sent by the + * server MUST set the Token Length field to zero; clients + * that receive an Initial packet with a non-zero Token + * Length field MUST either discard the packet or generate + * a connection error of type PROTOCOL_VIOLATION. + */ + return -1; + } + p += r; + if (token_len) + { + if (token_len >= + 1ull << (sizeof(packet_in->pi_token_size) * 8)) + return -1; + if (p + token_len > end) + return -1; + packet_in->pi_token = p - packet_in->pi_data; + packet_in->pi_token_size = token_len; + p += token_len; + } + /* fall-through */ + case HETY_HANDSHAKE: + case HETY_0RTT: + if (p >= end) + return -1; + r = vint_read(p, end, &payload_len); + if (r < 0) + return -1; + p += r; + if (p - packet_in->pi_data + payload_len > length) + return -1; + length = p - packet_in->pi_data + payload_len; + if (end - p < 4) + return -1; + state->pps_p = p - r; + state->pps_nbytes = r; + packet_in->pi_quic_ver = 1; + break; + case HETY_RETRY: + if (p >= end) + return -1; + if (p + /* [draft-ietf-quic-transport-25] Section 17.2.5 says that "a + * client MUST discard a Retry packet with a zero-length Retry + * Token field." We might as well do it here. + */ + + 1 + /* Integrity tag length: */ + + 16 > end) + return -1; + packet_in->pi_token = p - packet_in->pi_data; + packet_in->pi_token_size = end - p - 16; + /* Tag validation happens later */ + p = end; + length = end - packet_in->pi_data; + state->pps_p = NULL; + state->pps_nbytes = 0; + packet_in->pi_quic_ver = 1; + break; + default: + assert(header_type == HETY_VERNEG); + if (p >= end || (3 & (uintptr_t) (end - p))) + return -1; + packet_in->pi_quic_ver = p - packet_in->pi_data; + p = end; + state->pps_p = NULL; + state->pps_nbytes = 0; + break; + } + + packet_in->pi_header_sz = p - packet_in->pi_data; + packet_in->pi_data_sz = length; + packet_in->pi_nonce = 0; + packet_in->pi_refcnt = 0; + packet_in->pi_frame_types = 0; + memset(&packet_in->pi_next, 0, sizeof(packet_in->pi_next)); + packet_in->pi_refcnt = 0; + packet_in->pi_received = 0; + + /* Packet number is set to an invalid value. The packet number must + * be decrypted, which happens later. + */ + packet_in->pi_packno = 1ULL << 62; + + return 0; +} + + +/* Is this a valid Initial packet? We take the perspective of the server. */ +int +lsquic_is_valid_ietf_v1_or_Q046plus_hs_packet (const unsigned char *buf, + size_t length, lsquic_ver_tag_t *tagp) +{ + const unsigned char *p = buf; + const unsigned char *const end = p + length; + lsquic_ver_tag_t tag; + enum header_type header_type; + unsigned dcil, scil; + int r; + unsigned char first_byte; + uint64_t payload_len, token_len, packet_len; + + if (length < 6) + return 0; + first_byte = *p++; + + if (*p != 0x6B) + header_type = bits2ht[ (first_byte >> 4) & 3 ]; + else + header_type = bits2ht_v2[ (first_byte >> 4) & 3 ]; + if (header_type != HETY_INITIAL) + return 0; + + memcpy(&tag, p, 4); + p += 4; + switch (tag) + { + case 0: + return 0; /* Client never sends version negotiation packets */ + case TAG('Q', '0', '4', '6'): + dcil = p[0] >> 4; + if (dcil) + dcil += 3; + scil = p[0] & 0xF; + if (scil) + scil += 3; + ++p; + + if (!(dcil == GQUIC_CID_LEN && scil == 0)) + return 0; + + packet_len = first_byte & 3; + + if (end - p < (ptrdiff_t) (dcil + scil + packet_len)) + return 0; + break; + case TAG('Q', '0', '5', '0'): + dcil = *p++; + if (dcil != 8) + return 0; + if (p + dcil + 1 >= end) + return 0; + p += dcil; + scil = *p++; + if (scil != 0) + return 0; + goto read_token; + default: + dcil = *p++; + if (dcil < MIN_INITIAL_DCID_LEN || dcil > MAX_CID_LEN) + return 0; + if (p + dcil >= end) + return 0; + p += dcil; + scil = *p++; + if (p + scil > end || scil > MAX_CID_LEN) + return 0; + p += scil; + read_token: + r = vint_read(p, end, &token_len); + if (r < 0) + return 0; + p += r; + p += token_len; + if (p >= end) + return 0; + r = vint_read(p, end, &payload_len); + if (r < 0) + return 0; + p += r; + if (p - buf + payload_len > length) + return 0; + if (end - p < 4) + return 0; + } + + *tagp = tag; + return 1; +} + + +int +lsquic_ietf_v1_parse_packet_in_short_begin (struct lsquic_packet_in *packet_in, + size_t length, int is_server, unsigned cid_len, + struct packin_parse_state *state) +{ + unsigned char byte; + unsigned header_sz; + + /* By the time this function has been called, we know length is non-zero */ + byte = packet_in->pi_data[0]; + + /* [draft-ietf-quic-transport-17] Section 17.3 */ + /* 01SRRKPP */ + + if (cid_len) + { + header_sz = 1 + cid_len; + if (length < header_sz) + return -1; + memcpy(packet_in->pi_dcid.idbuf, packet_in->pi_data + 1, cid_len); + packet_in->pi_dcid.len = cid_len; + packet_in->pi_flags |= PI_CONN_ID; + } + else + header_sz = 1; + + packet_in->pi_flags |= ((byte & 0x20) > 0) << PIBIT_SPIN_SHIFT; + packet_in->pi_flags |= (byte & 3) << PIBIT_BITS_SHIFT; + + packet_in->pi_header_sz = header_sz; + packet_in->pi_data_sz = length; + packet_in->pi_quic_ver = 0; + packet_in->pi_nonce = 0; + packet_in->pi_refcnt = 0; + packet_in->pi_frame_types = 0; + memset(&packet_in->pi_next, 0, sizeof(packet_in->pi_next)); + packet_in->pi_refcnt = 0; + packet_in->pi_received = 0; + + /* This is so that Q046 works, ID-18 code does not use it */ + state->pps_p = packet_in->pi_data + header_sz; + state->pps_nbytes = 1 + (byte & 3); + + return 0; +} + + +#if __GNUC__ +# define popcount __builtin_popcount +#else +static int +popcount (unsigned v) +{ + int count, i; + for (i = 0, count = 0; i < sizeof(v) * 8; ++i) + if (v & (1 << i)) + ++count; + return count; +} +#endif + + +int +lsquic_ietf_v1_gen_ver_nego_pkt (unsigned char *buf, size_t bufsz, + const lsquic_cid_t *scid, const lsquic_cid_t *dcid, unsigned versions, + uint8_t rand) +{ + size_t need; + int r; + + need = 1 /* Type */ + 4 /* Version */ + 1 /* DCIL */ + + dcid->len + 1 /* SCIL */ + scid->len + popcount(versions) * 4; + + if (need > bufsz) + return -1; + + *buf++ = 0x80 | QUIC_BIT | rand; + memset(buf, 0, 4); + buf += 4; + + /* From [draft-ietf-quic-transport-22], Section 17.2.1: + * + * The server MUST include the value from the Source Connection ID field + * of the packet it receives in the Destination Connection ID field. + * The value for Source Connection ID MUST be copied from the + * Destination Connection ID of the received packet, which is initially + * randomly selected by a client. Echoing both connection IDs gives + * clients some assurance that the server received the packet and that + * the Version Negotiation packet was not generated by an off-path + * attacker. + */ + + *buf++ = dcid->len; + memcpy(buf, dcid->idbuf, dcid->len); + buf += dcid->len; + *buf++ = scid->len; + memcpy(buf, scid->idbuf, scid->len); + buf += scid->len; + + r = lsquic_gen_ver_tags(buf, bufsz - 1 - 4 - 2 - dcid->len - scid->len, + versions); + if (r < 0) + return -1; + assert((unsigned) r == popcount(versions) * 4u); + + return need; +} + + +static int +ietf_v1_gen_handshake_done_frame (unsigned char *buf, size_t buf_len) +{ + if (buf_len > 0) + { + *buf = 0x1E; + return 1; + } + else + return -1; +} + + +static int +ietf_v1_parse_handshake_done_frame (const unsigned char *buf, size_t buf_len) +{ + assert(buf[0] == 0x1E); + assert(buf_len > 0); + return 1; +} + + +static int +ietf_v1_gen_ack_frequency_frame (unsigned char *buf, size_t buf_len, + uint64_t seqno, uint64_t pack_tol, uint64_t upd_mad, int ignore) +{ + int sz; + + sz = ietf_v1_gen_frame_with_varints(buf, buf_len, 4, + (uint64_t[]){ FRAME_TYPE_ACK_FREQUENCY, seqno, pack_tol, upd_mad }); + if (sz > 0 && (size_t) sz < buf_len) + { + buf[sz++] = !!ignore; + return sz; + } + else + return -1; +} + + +static int +ietf_v1_parse_ack_frequency_frame (const unsigned char *buf, size_t buf_len, + uint64_t *seqno, uint64_t *pack_tol, uint64_t *upd_mad, int *ignore) +{ + int sz; + + sz = ietf_v1_parse_frame_with_varints(buf, buf_len, + FRAME_TYPE_ACK_FREQUENCY, + 3, (uint64_t *[]) { seqno, pack_tol, upd_mad }); + if (sz > 0 && (size_t) sz < buf_len && buf[sz] < 2) + { + *ignore = buf[sz++]; + return sz; + } + else + return -1; +} + + +static unsigned +ietf_v1_ack_frequency_frame_size (uint64_t seqno, uint64_t pack_tol, + uint64_t upd_mad) +{ + return 1 + ietf_v1_frame_with_varints_size(4, + (uint64_t[]){ FRAME_TYPE_ACK_FREQUENCY, seqno, pack_tol, upd_mad }); +} + + +static unsigned +ietf_v1_handshake_done_frame_size (void) +{ + return 1; +} + + +static int +ietf_v1_gen_timestamp_frame (unsigned char *buf, size_t buf_len, + uint64_t timestamp) +{ + return ietf_v1_gen_frame_with_varints(buf, buf_len, 2, + (uint64_t[]){ FRAME_TYPE_TIMESTAMP, timestamp }); +} + + +static int +ietf_v1_parse_timestamp_frame (const unsigned char *buf, size_t buf_len, + uint64_t *timestamp) +{ + return ietf_v1_parse_frame_with_varints(buf, buf_len, + FRAME_TYPE_TIMESTAMP, 1, (uint64_t *[]) { timestamp }); +} + + +static int +ietf_v1_parse_datagram_frame (const unsigned char *buf, size_t buf_len, + const void **data, size_t *data_len) +{ + uint64_t len; + int s; + + /* Length and frame type have been checked already */ + assert(buf_len > 0); + assert(buf[0] == 0x30 || buf[0] == 0x31); + + if (buf[0] & 1) + { + s = vint_read(buf + 1, buf + buf_len, &len); + if (s > 0 && 1 + s + len <= buf_len) + { + *data = buf + 1 + s; + *data_len = len; + return 1 + s + len; + } + else + return -1; + } + else + { + *data = buf + 1; + *data_len = buf_len - 1; + return buf_len; + } +} + + +static unsigned +ietf_v1_datagram_frame_size (size_t sz) +{ + return 1u + vint_size(sz) + sz; +} + + +static int +ietf_v1_gen_datagram_frame (unsigned char *buf, size_t bufsz, size_t min_sz, + size_t max_sz, + ssize_t (*user_callback)(struct lsquic_conn *, void *, size_t), + struct lsquic_conn *lconn) +{ + unsigned bits, len_sz; + ssize_t nw; + + /* We always generate length. A more efficient implementation would + * complicate the API. + */ + if (min_sz) + bits = vint_val2bits(min_sz); + else + bits = vint_val2bits(bufsz); + len_sz = 1u << bits; + + if (1 + len_sz + min_sz > bufsz) + { + errno = ENOBUFS; + return -1; + } + + nw = user_callback(lconn, buf + 1 + len_sz, min_sz ? min_sz + : MIN(bufsz - 1 - len_sz, max_sz)); + if (nw >= 0) + { + buf[0] = 0x31; + vint_write(&buf[1], (uint64_t) nw, bits, len_sz); + return 1 + len_sz + nw; + } + else + return -1; +} + + +const struct parse_funcs lsquic_parse_funcs_ietf_v1 = +{ + .pf_gen_reg_pkt_header = ietf_v1_gen_reg_pkt_header, + .pf_parse_packet_in_finish = ietf_v1_parse_packet_in_finish, + .pf_gen_stream_frame = ietf_v1_gen_stream_frame, + .pf_calc_stream_frame_header_sz = ietf_v1_calc_stream_frame_header_sz, + .pf_parse_stream_frame = ietf_v1_parse_stream_frame, + .pf_dec_stream_frame_size = ietf_v1_dec_stream_frame_size, + .pf_parse_ack_frame = ietf_v1_parse_ack_frame, + .pf_gen_ack_frame = ietf_v1_gen_ack_frame, + .pf_gen_blocked_frame = ietf_v1_gen_blocked_frame, + .pf_parse_blocked_frame = ietf_v1_parse_blocked_frame, + .pf_blocked_frame_size = ietf_v1_blocked_frame_size, + .pf_rst_frame_size = ietf_v1_rst_frame_size, + .pf_gen_rst_frame = ietf_v1_gen_rst_frame, + .pf_parse_rst_frame = ietf_v1_parse_rst_frame, + .pf_connect_close_frame_size = ietf_v1_connect_close_frame_size, + .pf_gen_connect_close_frame = ietf_v1_gen_connect_close_frame, + .pf_parse_connect_close_frame = ietf_v1_parse_connect_close_frame, + .pf_gen_ping_frame = ietf_v1_gen_ping_frame, + .pf_parse_frame_type = ietf_v1_parse_frame_type, + .pf_turn_on_fin = ietf_v1_turn_on_fin, + .pf_packout_size = ietf_v1_packout_size, + .pf_packout_max_header_size = ietf_v1_packout_max_header_size, + .pf_path_chal_frame_size = ietf_v1_path_chal_frame_size, + .pf_parse_path_chal_frame = ietf_v1_parse_path_chal_frame, + .pf_gen_path_chal_frame = ietf_v1_gen_path_chal_frame, + .pf_path_resp_frame_size = ietf_v1_path_resp_frame_size, + .pf_gen_path_resp_frame = ietf_v1_gen_path_resp_frame, + .pf_parse_path_resp_frame = ietf_v1_parse_path_resp_frame, + .pf_calc_packno_bits = ietf_v1_calc_packno_bits, + .pf_packno_bits2len = ietf_v1_packno_bits2len, + .pf_gen_crypto_frame = ietf_v1_gen_crypto_frame, + .pf_parse_crypto_frame = ietf_v1_parse_crypto_frame, + .pf_calc_crypto_frame_header_sz = ietf_v1_calc_crypto_frame_header_sz, + .pf_parse_max_data = ietf_v1_parse_max_data, + .pf_gen_max_data_frame = ietf_v1_gen_max_data_frame, + .pf_max_data_frame_size = ietf_v1_max_data_frame_size, + .pf_parse_new_conn_id = ietf_v1_parse_new_conn_id, + .pf_gen_stream_blocked_frame = ietf_v1_gen_stream_blocked_frame, + .pf_parse_stream_blocked_frame = ietf_v1_parse_stream_blocked_frame, + .pf_stream_blocked_frame_size = ietf_v1_stream_blocked_frame_size, + .pf_gen_max_stream_data_frame = ietf_v1_gen_max_stream_data_frame, + .pf_parse_max_stream_data_frame = ietf_v1_parse_max_stream_data_frame, + .pf_max_stream_data_frame_size = ietf_v1_max_stream_data_frame_size, + .pf_parse_stop_sending_frame = ietf_v1_parse_stop_sending_frame, + .pf_gen_stop_sending_frame = ietf_v1_gen_stop_sending_frame, + .pf_stop_sending_frame_size = ietf_v1_stop_sending_frame_size, + .pf_parse_new_token_frame = ietf_v1_parse_new_token_frame, + .pf_new_connection_id_frame_size = ietf_v1_new_connection_id_frame_size, + .pf_gen_new_connection_id_frame = ietf_v1_gen_new_connection_id_frame, + .pf_new_token_frame_size = ietf_v1_new_token_frame_size, + .pf_gen_new_token_frame = ietf_v1_gen_new_token_frame, + .pf_parse_retire_cid_frame = ietf_v1_parse_retire_cid_frame, + .pf_gen_retire_cid_frame = ietf_v1_gen_retire_cid_frame, + .pf_retire_cid_frame_size = ietf_v1_retire_cid_frame_size, + .pf_gen_streams_blocked_frame = ietf_v1_gen_streams_blocked_frame, + .pf_parse_streams_blocked_frame = ietf_v1_parse_streams_blocked_frame, + .pf_streams_blocked_frame_size = ietf_v1_streams_blocked_frame_size, + .pf_gen_max_streams_frame = ietf_v1_gen_max_streams_frame, + .pf_parse_max_streams_frame = ietf_v1_parse_max_streams_frame, + .pf_max_streams_frame_size = ietf_v1_max_streams_frame_size, + .pf_gen_handshake_done_frame = ietf_v1_gen_handshake_done_frame, + .pf_parse_handshake_done_frame = ietf_v1_parse_handshake_done_frame, + .pf_handshake_done_frame_size = ietf_v1_handshake_done_frame_size, + .pf_gen_ack_frequency_frame = ietf_v1_gen_ack_frequency_frame, + .pf_parse_ack_frequency_frame = ietf_v1_parse_ack_frequency_frame, + .pf_ack_frequency_frame_size = ietf_v1_ack_frequency_frame_size, + .pf_gen_timestamp_frame = ietf_v1_gen_timestamp_frame, + .pf_parse_timestamp_frame = ietf_v1_parse_timestamp_frame, + .pf_parse_datagram_frame = ietf_v1_parse_datagram_frame, + .pf_gen_datagram_frame = ietf_v1_gen_datagram_frame, + .pf_datagram_frame_size = ietf_v1_datagram_frame_size, +}; diff --git a/external/lsquic/src/liblsquic/lsquic_parse_iquic_common.c b/external/lsquic/src/liblsquic/lsquic_parse_iquic_common.c new file mode 100644 index 0000000..88a074c --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_parse_iquic_common.c @@ -0,0 +1,453 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * Parsing routines shared by all IETF QUIC versions. + */ + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" +#include "lsquic_parse_common.h" +#include "lsquic_parse.h" +#include "lsquic_version.h" +#include "lsquic.h" +#include "lsquic_logger.h" +#include "lsquic_byteswap.h" +#include "lsquic_varint.h" +#include "lsquic_enc_sess.h" +#include "lsquic_tokgen.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_ietf.h" + + +/* [draft-ietf-quic-transport-17] Section-17.2 */ +static const enum header_type bits2ht[4] = +{ + [0] = HETY_INITIAL, + [1] = HETY_0RTT, + [2] = HETY_HANDSHAKE, + [3] = HETY_RETRY, +}; + + +int +lsquic_Q046_parse_packet_in_long_begin (struct lsquic_packet_in *packet_in, + size_t length, int is_server, unsigned cid_len, + struct packin_parse_state *state) +{ + const unsigned char *p = packet_in->pi_data; + const unsigned char *const end = p + length; + lsquic_ver_tag_t tag; + enum header_type header_type; + unsigned dcil, scil, packet_len; + int verneg; + unsigned char first_byte; + lsquic_packno_t packno; + + if (length < 6) + return -1; + first_byte = *p++; + + memcpy(&tag, p, 4); + p += 4; + verneg = 0 == tag; + if (!verneg) + header_type = bits2ht[ (first_byte >> 4) & 3 ]; + else + header_type = HETY_VERNEG; + + packet_in->pi_header_type = header_type; + + dcil = p[0] >> 4; + if (dcil) + dcil += 3; + scil = p[0] & 0xF; + if (scil) + scil += 3; + ++p; + + /* Chromium comments state that the client sends packets with destination + * CID of 8 bytes and source CID of 0 bytes and the server does it the + * other way around. + */ + if (is_server) + { + if (!(dcil == cid_len && scil == 0)) + return -1; + } + else + if (!(dcil == 0 && scil == cid_len)) + return -1; + + if (!verneg) + { + packet_in->pi_flags |= (first_byte & 3) << PIBIT_BITS_SHIFT; + packet_len = 1 + (first_byte & 3); + if (end - p < (ptrdiff_t) (dcil + scil + packet_len)) + return -1; + } + else + { + /* Need at least one version in the version array: add 4 */ + if (end - p < (ptrdiff_t) (dcil + scil + 4)) + return -1; +#ifdef WIN32 + /* Useless initialization: */ + packet_len = 0; +#endif + } + + memcpy(&packet_in->pi_dcid.idbuf, p, cid_len); + packet_in->pi_dcid.len = cid_len; + p += cid_len; + packet_in->pi_flags |= PI_CONN_ID; + + if (!verneg) + { + READ_UINT(packno, 64, p, packet_len); + packet_in->pi_packno = packno; + p += packet_len; + packet_in->pi_quic_ver = 1; + if (is_server || HETY_0RTT != header_type) + packet_in->pi_nonce = 0; + else + { + packet_in->pi_nonce = p - packet_in->pi_data; + p += 32; + } + } + else + { + if (p >= end || (3 & (uintptr_t) (end - p))) + return -1; + packet_in->pi_quic_ver = p - packet_in->pi_data; + p = end; + } + + packet_in->pi_header_sz = p - packet_in->pi_data; + packet_in->pi_frame_types = 0; + packet_in->pi_data_sz = length; + packet_in->pi_refcnt = 0; + packet_in->pi_received = 0; + + return 0; +} + + +int +lsquic_Q046_parse_packet_in_short_begin (lsquic_packet_in_t *packet_in, + size_t length, int is_server, unsigned cid_len, + struct packin_parse_state *state) +{ + const unsigned char *p = packet_in->pi_data; + const unsigned char *const pend = packet_in->pi_data + length; + unsigned packet_len, header_len; + lsquic_packno_t packno; + + if (*p & 0x40) /* Q046 and higher */ + packet_len = 1 + (*p & 3); + else + return -1; + + if (is_server) + header_len = 1 + cid_len + packet_len; + else + header_len = 1 + packet_len; + + if (pend - p < (ptrdiff_t) header_len) + return -1; + + packet_in->pi_flags |= (*p & 3) << PIBIT_BITS_SHIFT; + ++p; + if (is_server) + { + memcpy(packet_in->pi_dcid.idbuf, packet_in->pi_data + 1, cid_len); + packet_in->pi_dcid.len = cid_len; + packet_in->pi_flags |= PI_CONN_ID; + p += cid_len; + } + + READ_UINT(packno, 64, p, packet_len); + packet_in->pi_packno = packno; + p += packet_len; + + packet_in->pi_header_type = HETY_SHORT; + packet_in->pi_quic_ver = 0; + packet_in->pi_nonce = 0; + packet_in->pi_header_sz = p - packet_in->pi_data; + packet_in->pi_frame_types = 0; + packet_in->pi_data_sz = length; + packet_in->pi_refcnt = 0; + packet_in->pi_received = 0; + + return 0; +} + + +/* This is a bare-bones version of lsquic_Q046_parse_packet_in_long_begin() + */ +int +lsquic_is_valid_iquic_hs_packet (const unsigned char *buf, size_t length, + lsquic_ver_tag_t *tagp) +{ + const unsigned char *p = buf; + const unsigned char *const end = p + length; + lsquic_ver_tag_t tag; + unsigned dcil, scil, packet_len; + unsigned char first_byte; + const unsigned cid_len = 8; + + if (length < 6) + return 0; + first_byte = *p++; + + memcpy(&tag, p, 4); + p += 4; + if (0 == tag) + return 0; /* Client never sends version negotiation */ + + dcil = p[0] >> 4; + if (dcil) + dcil += 3; + scil = p[0] & 0xF; + if (scil) + scil += 3; + ++p; + + if (!(dcil == cid_len && scil == 0)) + return 0; + + packet_len = first_byte & 3; + + if (end - p >= (ptrdiff_t) (dcil + scil + packet_len)) + { + *tagp = tag; + return 1; + } + else + return 0; +} + + +const enum quic_frame_type lsquic_iquic_byte2type[0x40] = +{ + [0x00] = QUIC_FRAME_PADDING, + [0x01] = QUIC_FRAME_PING, + [0x02] = QUIC_FRAME_ACK, + [0x03] = QUIC_FRAME_ACK, + [0x04] = QUIC_FRAME_RST_STREAM, + [0x05] = QUIC_FRAME_STOP_SENDING, + [0x06] = QUIC_FRAME_CRYPTO, + [0x07] = QUIC_FRAME_NEW_TOKEN, + [0x08] = QUIC_FRAME_STREAM, + [0x09] = QUIC_FRAME_STREAM, + [0x0A] = QUIC_FRAME_STREAM, + [0x0B] = QUIC_FRAME_STREAM, + [0x0C] = QUIC_FRAME_STREAM, + [0x0D] = QUIC_FRAME_STREAM, + [0x0E] = QUIC_FRAME_STREAM, + [0x0F] = QUIC_FRAME_STREAM, + [0x10] = QUIC_FRAME_MAX_DATA, + [0x11] = QUIC_FRAME_MAX_STREAM_DATA, + [0x12] = QUIC_FRAME_MAX_STREAMS, + [0x13] = QUIC_FRAME_MAX_STREAMS, + [0x14] = QUIC_FRAME_BLOCKED, + [0x15] = QUIC_FRAME_STREAM_BLOCKED, + [0x16] = QUIC_FRAME_STREAMS_BLOCKED, + [0x17] = QUIC_FRAME_STREAMS_BLOCKED, + [0x18] = QUIC_FRAME_NEW_CONNECTION_ID, + [0x19] = QUIC_FRAME_RETIRE_CONNECTION_ID, + [0x1A] = QUIC_FRAME_PATH_CHALLENGE, + [0x1B] = QUIC_FRAME_PATH_RESPONSE, + [0x1C] = QUIC_FRAME_CONNECTION_CLOSE, + [0x1D] = QUIC_FRAME_CONNECTION_CLOSE, + [0x1E] = QUIC_FRAME_HANDSHAKE_DONE, + [0x1F] = QUIC_FRAME_INVALID, + [0x20] = QUIC_FRAME_INVALID, + [0x21] = QUIC_FRAME_INVALID, + [0x22] = QUIC_FRAME_INVALID, + [0x23] = QUIC_FRAME_INVALID, + [0x24] = QUIC_FRAME_INVALID, + [0x25] = QUIC_FRAME_INVALID, + [0x26] = QUIC_FRAME_INVALID, + [0x27] = QUIC_FRAME_INVALID, + [0x28] = QUIC_FRAME_INVALID, + [0x29] = QUIC_FRAME_INVALID, + [0x2A] = QUIC_FRAME_INVALID, + [0x2B] = QUIC_FRAME_INVALID, + [0x2C] = QUIC_FRAME_INVALID, + [0x2D] = QUIC_FRAME_INVALID, + [0x2E] = QUIC_FRAME_INVALID, + [0x2F] = QUIC_FRAME_INVALID, + [0x30] = QUIC_FRAME_DATAGRAM, + [0x31] = QUIC_FRAME_DATAGRAM, + [0x32] = QUIC_FRAME_INVALID, + [0x33] = QUIC_FRAME_INVALID, + [0x34] = QUIC_FRAME_INVALID, + [0x35] = QUIC_FRAME_INVALID, + [0x36] = QUIC_FRAME_INVALID, + [0x37] = QUIC_FRAME_INVALID, + [0x38] = QUIC_FRAME_INVALID, + [0x39] = QUIC_FRAME_INVALID, + [0x3A] = QUIC_FRAME_INVALID, + [0x3B] = QUIC_FRAME_INVALID, + [0x3C] = QUIC_FRAME_INVALID, + [0x3D] = QUIC_FRAME_INVALID, + [0x3E] = QUIC_FRAME_INVALID, + [0x3F] = QUIC_FRAME_INVALID, +}; + + +#if __GNUC__ +# define popcount __builtin_popcount +#else +static int +popcount (unsigned v) +{ + int count, i; + for (i = 0, count = 0; i < sizeof(v) * 8; ++i) + if (v & (1 << i)) + ++count; + return count; +} +#endif + + +int +lsquic_Q046_gen_ver_nego_pkt (unsigned char *buf, size_t bufsz, + const lsquic_cid_t *scid, const lsquic_cid_t *dcid, unsigned versions, + uint8_t rand) +{ + unsigned slen, dlen; + size_t need; + int r; + + need = 1 /* Type */ + 4 /* Packet number */ + 1 /* SCIL */ + + scid->len + dcid->len + popcount(versions) * 4; + + if (need > bufsz) + return -1; + + *buf++ = 0x80 | 0x40 | rand; + memset(buf, 0, 4); + buf += 4; + + /* From [draft-ietf-quic-transport-11], Section 4.3: + * + * The server MUST include the value from the Source Connection ID field + * of the packet it receives in the Destination Connection ID field. + * The value for Source Connection ID MUST be copied from the + * Destination Connection ID of the received packet, which is initially + * randomly selected by a client. Echoing both connection IDs gives + * clients some assurance that the server received the packet and that + * the Version Negotiation packet was not generated by an off-path + * attacker. + */ + + dlen = dcid->len; + if (dlen) + dlen -= 3; + slen = scid->len; + if (slen) + slen -= 3; + *buf++ = (dlen << 4) | slen; + + memcpy(buf, dcid->idbuf, dcid->len); + buf += dcid->len; + memcpy(buf, scid->idbuf, scid->len); + buf += scid->len; + + r = lsquic_gen_ver_tags(buf, bufsz - 1 - 4 - 1 - dcid->len - scid->len, + versions); + if (r < 0) + return -1; + assert((unsigned) r == popcount(versions) * 4u); + + return need; +} + + +int +lsquic_iquic_gen_retry_pkt (unsigned char *buf, size_t bufsz, + const struct lsquic_engine_public *enpub, + const lsquic_cid_t *scid, const lsquic_cid_t *dcid, + enum lsquic_version version, const struct sockaddr *sockaddr, + uint8_t random_nybble) +{ + struct token_generator *const tokgen = enpub->enp_tokgen; + const unsigned our_scid_len = enpub->enp_settings.es_scid_len; + unsigned char *const end = buf + bufsz; + unsigned char *p = buf; + lsquic_ver_tag_t ver_tag; + size_t ad_len, out_len; + unsigned ret_ver; + ssize_t sz; +#define INTEGRITY_TAG_LEN 16 + + /* [draft-ietf-quic-tls-25] Section 5.8 specifies the layout of the + * Retry Pseudo-Packet: + */ + unsigned char ad_buf[ + 1 + MAX_CID_LEN /* ODCID */ + + 1 + 4 /* Type and version */ + + 1 + MAX_CID_LEN /* DCID */ + + 1 + MAX_CID_LEN /* SCID */ + + MAX_RETRY_TOKEN_LEN /* Retry token */ + ]; + + unsigned char tag[INTEGRITY_TAG_LEN]; + + /* See [draft-ietf-quic-transport-25], Section 17.2.5 */ + + if (bufsz < 1 + sizeof(ver_tag) + 1 + our_scid_len + 1 + dcid->len + + MAX_RETRY_TOKEN_LEN + INTEGRITY_TAG_LEN) + return -1; + + p = ad_buf; + *p++ = dcid->len; + memcpy(p, dcid->idbuf, dcid->len); + p += dcid->len; + *p++ = 0xC0 + | (3 << 4) + | random_nybble + ; + ver_tag = lsquic_ver2tag(version); + memcpy(p, &ver_tag, sizeof(ver_tag)); + p += sizeof(ver_tag); + + *p++ = scid->len; + memcpy(p, scid->idbuf, scid->len); + p += scid->len; + *p++ = our_scid_len; + enpub->enp_generate_scid(enpub->enp_gen_scid_ctx, NULL, p, our_scid_len); + p += our_scid_len; + sz = lsquic_tg_generate_retry(tokgen, p, end - p, + p - our_scid_len, our_scid_len, sockaddr, dcid); + if (sz < 0) + return -1; + p += sz; + ad_len = p - ad_buf; + + ret_ver = lsquic_version_2_retryver(version); + out_len = sizeof(tag); + if (!(1 == EVP_AEAD_CTX_seal(&enpub->enp_retry_aead_ctx[ret_ver], tag, + &out_len, out_len, lsquic_retry_nonce_buf[ret_ver], + IETF_RETRY_NONCE_SZ, + NULL, 0, ad_buf, ad_len) && out_len == sizeof(tag))) + return -1; + + memcpy(buf, ad_buf + 1 + dcid->len, ad_len - 1 - dcid->len); + memcpy(buf + ad_len - 1 - dcid->len, tag, sizeof(tag)); + return ad_len - 1 - dcid->len + sizeof(tag); +} diff --git a/external/lsquic/src/liblsquic/lsquic_pr_queue.c b/external/lsquic/src/liblsquic/lsquic_pr_queue.c new file mode 100644 index 0000000..6e5c3f8 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_pr_queue.c @@ -0,0 +1,693 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_pr_queue.c -- packet request queue. + */ + +#include +#include +#include +#include +#include +#include + +#ifndef WIN32 +#include +#include +#endif + +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_gquic.h" +#include "lsquic_packet_out.h" +#include "lsquic_packet_in.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_parse.h" +#include "lsquic_malo.h" +#include "lsquic_pr_queue.h" +#include "lsquic_parse_common.h" +#include "lsquic_tokgen.h" +#include "lsquic_version.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_sizes.h" +#include "lsquic_handshake.h" +#include "lsquic_rapidhash.h" +#include "lsquic_crand.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_PRQ +#include "lsquic_logger.h" + +#define MAX(a, b) ((a) > (b) ? (a) : (b)) +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + + +static const struct conn_iface evanescent_conn_iface; + + +struct packet_req +{ + struct lsquic_hash_elem pr_hash_el; + lsquic_cid_t pr_scid; + lsquic_cid_t pr_dcid; + enum packet_req_type pr_type; + enum pr_flags { + PR_GQUIC = 1 << 0, + } pr_flags; + enum lsquic_version pr_version; + unsigned pr_rst_sz; + struct network_path pr_path; +}; + + +struct evanescent_conn +{ + struct lsquic_conn evc_conn; + struct packet_req *evc_req; + struct pr_queue *evc_queue; + struct lsquic_packet_out evc_packet_out; + struct conn_cid_elem evc_cces[1]; + enum { + EVC_DROP = 1 << 0, + } evc_flags; + unsigned char evc_buf[0]; +}; + + +/* [draft-ietf-quic-transport-22], Section 17.2.1 */ +#define IQUIC_VERNEG_SIZE (1 /* Type */ + 4 /* Version (zero tag) */ \ + + 1 /* DCIL */ + MAX_CID_LEN + 1 /* SCIL */ + MAX_CID_LEN + \ + 4 * N_LSQVER) + +/* [draft-ietf-quic-transport-22], Section 17.2.5 */ +#define IQUIC_RETRY_SIZE (1 /* Type */ + 4 /* Version */ + \ + + 1 /* DCIL */ + MAX_CID_LEN + 1 /* SCIL */ + MAX_CID_LEN + \ + + 1 /* ODCIL */ + MAX_CID_LEN + MAX_RETRY_TOKEN_LEN) + +/* GQUIC retry is dynamically size, this is a reasonable high bound */ +#define GQUIC_RETRY_SIZE 512 + +struct pr_queue +{ + TAILQ_HEAD(, lsquic_conn) prq_free_conns, + prq_returned_conns; + struct malo *prq_reqs_pool; + const struct lsquic_engine_public + *prq_enpub; + struct lsquic_hash *prq_reqs_hash; + unsigned prq_max_reqs; + unsigned prq_nreqs; + unsigned prq_max_conns; + unsigned prq_nconns; + unsigned prq_verneg_g_sz; /* Size of prq_verneg_g_buf */ + unsigned prq_pubres_g_sz; /* Size of prq_pubres_g_buf */ + + /* GQUIC version negotiation and stateless reset packets are generated + * once, when the Packet Request Queue is created. For each request, + * these buffers are simply copied and the connection ID is replaced. + * + * Since IETF QUIC uses variable-length connections IDs, we have to + * generate packets every time. + */ + unsigned char prq_pubres_g_buf[GQUIC_RESET_SZ]; + unsigned char prq_verneg_g_buf[1 + GQUIC_CID_LEN + + N_LSQVER * 4]; +}; + + +static int +comp_reqs (const void *s1, const void *s2, size_t n) +{ + const struct packet_req *a, *b; + + a = s1; + b = s2; + if (a->pr_type == b->pr_type && LSQUIC_CIDS_EQ(&a->pr_dcid, &b->pr_dcid)) + return 0; + else + return -1; +} + + +static uint64_t +hash_req (const void *p, size_t len, uint64_t seed) +{ + const struct packet_req *req; + + req = p; + return rapidhash_withSeed(req->pr_dcid.idbuf, req->pr_dcid.len, seed); +} + + +struct pr_queue * +lsquic_prq_create (unsigned max_elems, unsigned max_conns, + const struct lsquic_engine_public *enpub) +{ + const struct parse_funcs *pf; + struct pr_queue *prq; + struct malo *malo; + struct lsquic_hash *hash; + unsigned verneg_g_sz; + ssize_t prst_g_sz; + int len; + + malo = lsquic_malo_create(sizeof(struct packet_req)); + if (!malo) + { + LSQ_WARN("malo_create failed: %s", strerror(errno)); + goto err0; + } + + + hash = lsquic_hash_create_ext(comp_reqs, hash_req); + if (!hash) + { + LSQ_WARN("cannot create hash"); + goto err1; + } + + prq = malloc(sizeof(*prq)); + if (!prq) + { + LSQ_WARN("malloc failed: %s", strerror(errno)); + goto err2; + } + + const lsquic_cid_t cid = { .len = 8, }; + pf = select_pf_by_ver(LSQVER_043); + len = lsquic_gquic_gen_ver_nego_pkt(prq->prq_verneg_g_buf, + sizeof(prq->prq_verneg_g_buf), &cid, + enpub->enp_settings.es_versions); + assert(len > 0); + if (len <= 0) + { + LSQ_ERROR("cannot generate version negotiation packet"); + goto err3; + } + verneg_g_sz = (unsigned) len; + + prst_g_sz = pf->pf_generate_simple_prst(0 /* This is just placeholder */, + prq->prq_pubres_g_buf, sizeof(prq->prq_pubres_g_buf)); + if (prst_g_sz < 0) + { + LSQ_ERROR("cannot generate public reset packet"); + goto err3; + } + + TAILQ_INIT(&prq->prq_free_conns); + TAILQ_INIT(&prq->prq_returned_conns); + prq->prq_reqs_hash = hash; + prq->prq_reqs_pool = malo; + prq->prq_max_reqs = max_elems; + prq->prq_nreqs = 0; + prq->prq_max_conns = max_conns; + prq->prq_nconns = 0; + prq->prq_verneg_g_sz = verneg_g_sz; + prq->prq_pubres_g_sz = (unsigned) prst_g_sz; + prq->prq_enpub = enpub; + + LSQ_INFO("initialized queue of size %d", max_elems); + + return prq; + + err3: + free(prq); + err2: + lsquic_hash_destroy(hash); + err1: + lsquic_malo_destroy(malo); + err0: + return NULL; +} + + +void +lsquic_prq_destroy (struct pr_queue *prq) +{ + struct lsquic_conn *conn; + + LSQ_INFO("destroy"); + while ((conn = TAILQ_FIRST(&prq->prq_free_conns))) + { + TAILQ_REMOVE(&prq->prq_free_conns, conn, cn_next_pr); + free(conn); + } + lsquic_hash_destroy(prq->prq_reqs_hash); + lsquic_malo_destroy(prq->prq_reqs_pool); + free(prq); +} + + +static struct packet_req * +get_req (struct pr_queue *prq) +{ + struct packet_req *req; + if (prq->prq_nreqs < prq->prq_max_reqs) + { + req = lsquic_malo_get(prq->prq_reqs_pool); + if (req) + ++prq->prq_nreqs; + else + LSQ_WARN("malo_get failed: %s", strerror(errno)); + return req; + } + else + return NULL; +} + + +static void +put_req (struct pr_queue *prq, struct packet_req *req) +{ + lsquic_malo_put(req); + --prq->prq_nreqs; +} + + +int +lsquic_prq_new_req_ext (struct pr_queue *prq, enum packet_req_type type, + unsigned flags, enum lsquic_version version, unsigned short data_sz, + const lsquic_cid_t *dcid, const lsquic_cid_t *scid, void *peer_ctx, + const struct sockaddr *local_addr, const struct sockaddr *peer_addr) +{ + struct packet_req *req; + unsigned max, size, rand; + + if (type == PACKET_REQ_PUBRES && !(flags & PR_GQUIC)) + { + if (data_sz <= IQUIC_MIN_SRST_SIZE) + { + LSQ_DEBUGC("not scheduling public reset: incoming packet for CID " + "%"CID_FMT" too small: %hu bytes", CID_BITS(dcid), data_sz); + return -1; + } + /* Use a random stateless reset size */ + max = MIN(IQUIC_MAX_SRST_SIZE, data_sz - 1u); + if (max > IQUIC_MIN_SRST_SIZE) + { + rand = lsquic_crand_get_byte(prq->prq_enpub->enp_crand); + size = IQUIC_MIN_SRST_SIZE + rand % (max - IQUIC_MIN_SRST_SIZE); + } + else + size = IQUIC_MIN_SRST_SIZE; + LSQ_DEBUGC("selected %u-byte reset size for CID %"CID_FMT + " (range is [%u, %u])", size, CID_BITS(dcid), + IQUIC_MIN_SRST_SIZE, max); + } + else + size = 0; + + req = get_req(prq); + if (!req) + { + LSQ_DEBUG("out of reqs: cannot allocated another one"); + return -1; + } + + req->pr_type = type; + req->pr_dcid = *dcid; + if (lsquic_hash_find(prq->prq_reqs_hash, req, sizeof(*req))) + { + LSQ_DEBUG("request for this DCID and type already exists"); + put_req(prq, req); + return -1; + } + + req->pr_hash_el.qhe_flags = 0; + if (!lsquic_hash_insert(prq->prq_reqs_hash, req, sizeof(*req), + req, &req->pr_hash_el)) + { + LSQ_DEBUG("could not insert req into hash"); + put_req(prq, req); + return -1; + } + + req->pr_flags = flags; + req->pr_rst_sz = size; + req->pr_version = version; + req->pr_scid = *scid; + req->pr_path.np_peer_ctx = peer_ctx; + memcpy(req->pr_path.np_local_addr, local_addr, + sizeof(req->pr_path.np_local_addr)); + memcpy(NP_PEER_SA(&req->pr_path), peer_addr, + sizeof(req->pr_path.np_peer_addr)); + + LSQ_DEBUGC("scheduled %s packet for connection %"CID_FMT, + lsquic_preqt2str[type], CID_BITS(&req->pr_dcid)); + return 0; +} + + +int +lsquic_prq_new_req (struct pr_queue *prq, enum packet_req_type type, + const struct lsquic_packet_in *packet_in, void *peer_ctx, + const struct sockaddr *local_addr, const struct sockaddr *peer_addr) +{ + lsquic_ver_tag_t ver_tag; + enum lsquic_version version; + enum pr_flags flags; + lsquic_cid_t scid; + + if (packet_in->pi_flags & PI_GQUIC) + flags = PR_GQUIC; + else + flags = 0; + + if (packet_in->pi_quic_ver) + { + memcpy(&ver_tag, packet_in->pi_data + packet_in->pi_quic_ver, + sizeof(ver_tag)); + version = lsquic_tag2ver(ver_tag); + } + else /* Got to set it to something sensible... */ + version = LSQVER_ID27; + + lsquic_scid_from_packet_in(packet_in, &scid); + return lsquic_prq_new_req_ext(prq, type, flags, version, + packet_in->pi_data_sz, &packet_in->pi_dcid, &scid, + peer_ctx, local_addr, peer_addr); +} + + +static size_t +max_bufsz (const struct pr_queue *prq) +{ + return MAX(MAX(MAX(MAX(IQUIC_VERNEG_SIZE, + IQUIC_RETRY_SIZE), + IQUIC_MAX_SRST_SIZE), + sizeof(prq->prq_verneg_g_buf)), + sizeof(prq->prq_pubres_g_buf)); +} + + +static struct evanescent_conn * +get_evconn (struct pr_queue *prq) +{ + struct evanescent_conn *evconn; + struct lsquic_conn *lconn; + struct lsquic_packet_out *packet_out; + size_t bufsz; + + if (prq->prq_nconns >= prq->prq_max_conns) + { /* This deserves a warning */ + LSQ_WARN("tried to get connection past limit of %u", prq->prq_max_conns); + return NULL; + } + + lconn = TAILQ_FIRST(&prq->prq_free_conns); + if (lconn) + { + TAILQ_REMOVE(&prq->prq_free_conns, lconn, cn_next_pr); + evconn = (struct evanescent_conn *) lconn; + evconn->evc_flags = 0; + return evconn; + } + + bufsz = max_bufsz(prq); + evconn = calloc(1, sizeof(*evconn) + bufsz); + if (!evconn) + { + LSQ_WARN("calloc failed: %s", strerror(errno)); + return NULL; + } + + /* These values stay the same between connection usages: */ + evconn->evc_queue = prq; + lconn = &evconn->evc_conn; + lconn->cn_cces = evconn->evc_cces; + lconn->cn_cces_mask = 1; + lconn->cn_n_cces = sizeof(evconn->evc_cces) / sizeof(evconn->evc_cces[0]); + lconn->cn_if = &evanescent_conn_iface; + lconn->cn_flags = LSCONN_EVANESCENT; + packet_out = &evconn->evc_packet_out; + packet_out->po_flags = PO_NOENCRYPT; + packet_out->po_data = evconn->evc_buf; + + return evconn; +} + + +struct lsquic_conn * +lsquic_prq_next_conn (struct pr_queue *prq) +{ + struct evanescent_conn *evconn; + struct lsquic_conn *lconn; + struct lsquic_hash_elem *el; + struct packet_req *req; + struct lsquic_packet_out *packet_out; + int (*gen_verneg) (unsigned char *, size_t, const lsquic_cid_t *, + const lsquic_cid_t *, unsigned, uint8_t); + int len; + + lconn = TAILQ_FIRST(&prq->prq_returned_conns); + if (lconn) + { + TAILQ_REMOVE(&prq->prq_returned_conns, lconn, cn_next_pr); + return lconn; + } + + el = lsquic_hash_first(prq->prq_reqs_hash); + if (!el) /* Nothing is queued */ + return NULL; + + evconn = get_evconn(prq); + if (!evconn) /* Reached limit or malloc failed */ + return NULL; + + req = lsquic_hashelem_getdata(el); + packet_out = &evconn->evc_packet_out; + switch ((req->pr_type << 29) | req->pr_flags) + { + case (PACKET_REQ_VERNEG << 29) | PR_GQUIC: + packet_out->po_data_sz = prq->prq_verneg_g_sz; + packet_out->po_flags |= PO_VERNEG; + memcpy(packet_out->po_data, prq->prq_verneg_g_buf, + prq->prq_verneg_g_sz); + memcpy(packet_out->po_data + 1, req->pr_dcid.idbuf, GQUIC_CID_LEN); + break; + case (PACKET_REQ_PUBRES << 29) | PR_GQUIC: + packet_out->po_flags &= ~PO_VERNEG; + packet_out->po_data_sz = prq->prq_pubres_g_sz; + memcpy(packet_out->po_data, prq->prq_pubres_g_buf, + prq->prq_pubres_g_sz); + memcpy(packet_out->po_data + 1, req->pr_dcid.idbuf, GQUIC_CID_LEN); + break; + case (PACKET_REQ_VERNEG << 29) | 0: + packet_out->po_flags |= PO_VERNEG; + if (req->pr_version == LSQVER_046) + gen_verneg = lsquic_Q046_gen_ver_nego_pkt; + else + gen_verneg = lsquic_ietf_v1_gen_ver_nego_pkt; + len = gen_verneg(packet_out->po_data, max_bufsz(prq), + /* Flip SCID/DCID here: */ &req->pr_dcid, &req->pr_scid, + prq->prq_enpub->enp_settings.es_versions, + lsquic_crand_get_byte(prq->prq_enpub->enp_crand)); + if (len > 0) + packet_out->po_data_sz = len; + else + packet_out->po_data_sz = 0; + break; + case (PACKET_REQ_RETRY << 29) | 0: + packet_out->po_flags |= PO_RETRY; + len = lsquic_iquic_gen_retry_pkt(packet_out->po_data, max_bufsz(prq), + prq->prq_enpub, &req->pr_scid, &req->pr_dcid, + req->pr_version, NP_PEER_SA(&req->pr_path), + lsquic_crand_get_nybble(prq->prq_enpub->enp_crand)); + if (len > 0) + packet_out->po_data_sz = len; + else + packet_out->po_data_sz = 0; + break; + default: + packet_out->po_flags &= ~PO_VERNEG; + packet_out->po_data_sz = req->pr_rst_sz; + RAND_bytes(packet_out->po_data, req->pr_rst_sz - IQUIC_SRESET_TOKEN_SZ); + packet_out->po_data[0] &= ~0x80; + packet_out->po_data[0] |= 0x40; + lsquic_tg_generate_sreset(prq->prq_enpub->enp_tokgen, &req->pr_dcid, + packet_out->po_data + req->pr_rst_sz - IQUIC_SRESET_TOKEN_SZ); + break; + } + + lsquic_hash_erase(prq->prq_reqs_hash, el); + evconn->evc_req = req; + + lconn= &evconn->evc_conn; + evconn->evc_cces[0].cce_cid = req->pr_dcid; + packet_out->po_path = &req->pr_path; + + ++prq->prq_nconns; + return lconn; +} + + +int +lsquic_prq_have_pending (const struct pr_queue *prq) +{ + return lsquic_hash_count(prq->prq_reqs_hash) > 0; +} + + +static struct lsquic_packet_out * +evanescent_conn_ci_next_packet_to_send (struct lsquic_conn *lconn, + const struct to_coal *to_coal_UNUSED) +{ + struct evanescent_conn *const evconn = (struct evanescent_conn *) lconn; + assert(!to_coal_UNUSED); + return &evconn->evc_packet_out; +} + + +static void +prq_free_conn (struct pr_queue *prq, struct lsquic_conn *lconn) +{ + struct evanescent_conn *const evconn = (struct evanescent_conn *) lconn; + + TAILQ_INSERT_HEAD(&prq->prq_free_conns, lconn, cn_next_pr); + put_req(prq, evconn->evc_req); + --prq->prq_nconns; +} + + +static void +evanescent_conn_ci_packet_sent (struct lsquic_conn *lconn, + struct lsquic_packet_out *packet_out) +{ + struct evanescent_conn *const evconn = (struct evanescent_conn *) lconn; + struct pr_queue *const prq = evconn->evc_queue; + + assert(packet_out == &evconn->evc_packet_out); + assert(prq->prq_nconns > 0); + + LSQ_DEBUGC("sent %s packet for connection %"CID_FMT"; free resources", + lsquic_preqt2str[ evconn->evc_req->pr_type ], + CID_BITS(&evconn->evc_req->pr_dcid)); + prq_free_conn(prq, lconn); +} + + +static void +evanescent_conn_ci_packet_not_sent (struct lsquic_conn *lconn, + struct lsquic_packet_out *packet_out) +{ + struct evanescent_conn *const evconn = (struct evanescent_conn *) lconn; + struct pr_queue *const prq = evconn->evc_queue; + + assert(packet_out == &evconn->evc_packet_out); + assert(prq->prq_nconns > 0); + + if (evconn->evc_flags & EVC_DROP) + { + LSQ_DEBUGC("packet not sent; drop connection %"CID_FMT, + CID_BITS(&evconn->evc_req->pr_dcid)); + prq_free_conn(prq, lconn); + } + else + { + LSQ_DEBUG("packet not sent; put connection onto used list"); + TAILQ_INSERT_HEAD(&prq->prq_returned_conns, lconn, cn_next_pr); + } +} + + +static enum tick_st +evanescent_conn_ci_tick (struct lsquic_conn *lconn, lsquic_time_t now) +{ + assert(0); + return TICK_CLOSE; +} + + +static void +evanescent_conn_ci_destroy (struct lsquic_conn *lconn) +{ + assert(0); +} + + +static struct lsquic_engine * +evanescent_conn_ci_get_engine (struct lsquic_conn *lconn) +{ + assert(0); + return NULL; +} + + +static void +evanescent_conn_ci_hsk_done (struct lsquic_conn *lconn, + enum lsquic_hsk_status status) +{ + assert(0); +} + + +static void +evanescent_conn_ci_packet_in (struct lsquic_conn *lconn, + struct lsquic_packet_in *packet_in) +{ + assert(0); +} + + +static void +evanescent_conn_ci_client_call_on_new (struct lsquic_conn *lconn) +{ + assert(0); +} + + +static struct network_path * +evanescent_conn_ci_get_path (struct lsquic_conn *lconn, + const struct sockaddr *sa) +{ + struct evanescent_conn *const evconn = (struct evanescent_conn *) lconn; + + return &evconn->evc_req->pr_path; +} + + +static unsigned char +evanescent_conn_ci_record_addrs (struct lsquic_conn *lconn, void *peer_ctx, + const struct sockaddr *local_sa, const struct sockaddr *peer_sa) +{ + assert(0); + return 0; +} + + +static const struct conn_iface evanescent_conn_iface = { + .ci_client_call_on_new = evanescent_conn_ci_client_call_on_new, + .ci_destroy = evanescent_conn_ci_destroy, + .ci_get_engine = evanescent_conn_ci_get_engine, + .ci_get_path = evanescent_conn_ci_get_path, + .ci_hsk_done = evanescent_conn_ci_hsk_done, + .ci_next_packet_to_send = evanescent_conn_ci_next_packet_to_send, + .ci_packet_in = evanescent_conn_ci_packet_in, + .ci_packet_not_sent = evanescent_conn_ci_packet_not_sent, + .ci_packet_sent = evanescent_conn_ci_packet_sent, + .ci_record_addrs = evanescent_conn_ci_record_addrs, + .ci_tick = evanescent_conn_ci_tick, +}; + + +const char *const lsquic_preqt2str[] = +{ + [PACKET_REQ_VERNEG] = "version negotiation", + [PACKET_REQ_PUBRES] = "stateless reset", +}; + + +void +lsquic_prq_drop (struct lsquic_conn *lconn) +{ + struct evanescent_conn *const evconn = (void *) lconn; + + evconn->evc_flags |= EVC_DROP; + LSQ_DEBUGC("mark for connection %"CID_FMT" for dropping", + CID_BITS(&evconn->evc_req->pr_dcid)); +} diff --git a/external/lsquic/src/liblsquic/lsquic_pr_queue.h b/external/lsquic/src/liblsquic/lsquic_pr_queue.h new file mode 100644 index 0000000..b48e17e --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_pr_queue.h @@ -0,0 +1,88 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_pr_queue.h -- a queue of packet requests + * + * Some packets need to be replied to outside of context of existing + * mini or full connections: + * + * 1. A version negotiation packet needs to be sent when a packet + * arrives that specifies QUIC version that we do not support. + * 2. A public reset packet needs to be sent when we receive a + * packet that does not belong to a known QUIC connection. + * + * The replies cannot be sent immediately. They share outgoing + * socket with existing connections and must be scheduled according + * to prioritization rules. + * + * The information needed to generate reply packet -- connection ID, + * connection context, and the peer address -- is saved in the Packet + * Request Queue. + * + * When it is time to send packets, the connection iterator knows to + * call prq_next_conn() when appropriate. What is returned is an + * evanescent connection object that disappears as soon as the reply + * packet is successfully sent out. + * + * There are two limits associated with Packet Request Queue: + * 1. Maximum number of packet requests that are allowed to be + * pending at any one time. This is simply to prevent memory + * blowout. + * 2. Maximum verneg connection objects to be allocated at any one + * time. This number is the same as the maximum batch size in + * the engine, because the packet (and, therefore, the connection) + * is returned to the Packet Request Queue when it could not be + * sent. + * + * We call this a "request" queue because it describes what we do with + * QUIC packets whose version we do not support or those packets that + * do not belong to an existing connection: we send a reply for each of + * these packets, which effectively makes them "requests." + */ + +#ifndef LSQUIC_PR_QUEUE_H +#define LSQUIC_PR_QUEUE_H 1 + +struct lsquic_conn; +struct lsquic_packet_in; +struct lsquic_engine_settings; +struct pr_queue; +struct sockaddr; + +enum packet_req_type { + PACKET_REQ_VERNEG, + PACKET_REQ_PUBRES, + PACKET_REQ_RETRY, + N_PREQ_TYPES, +}; + +extern const char *const lsquic_preqt2str[N_PREQ_TYPES]; + +struct pr_queue * +lsquic_prq_create (unsigned max_elems, unsigned max_conns, + const struct lsquic_engine_public *); + +void +lsquic_prq_destroy (struct pr_queue *); + +int +lsquic_prq_new_req (struct pr_queue *, enum packet_req_type, + const struct lsquic_packet_in *, void *conn_ctx, + const struct sockaddr *local_addr, + const struct sockaddr *peer_addr); + +struct lsquic_conn * +lsquic_prq_next_conn (struct pr_queue *); + +int +lsquic_prq_have_pending (const struct pr_queue *); + +int +lsquic_prq_new_req_ext (struct pr_queue *prq, enum packet_req_type type, + unsigned flags, enum lsquic_version version, unsigned short data_sz, + const lsquic_cid_t *dcid, const lsquic_cid_t *scid, void *peer_ctx, + const struct sockaddr *local_addr, const struct sockaddr *peer_addr); + +void +lsquic_prq_drop (struct lsquic_conn *); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_purga.c b/external/lsquic/src/liblsquic/lsquic_purga.c new file mode 100644 index 0000000..2c90d92 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_purga.c @@ -0,0 +1,277 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_rapidhash.h" +#include "lsquic_purga.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_PURGA +#include "lsquic_logger.h" + + +/* To avoid scannig the whole list of CIDs, we use a Bloom filter. + * + * The Bloom filter is constructed using a 8192-bit bit field and 6 hash + * functions. With 273 elements per page, this gives us 0.004% possibility + * of a false positive. In other words, when we do have to search a page + * for a particular CID, the chance of finding the CID is 99.99%. + * + * Quick calc: + * perl -E '$k=6;$m=1<<13;$n=273;printf("%f\n", (1-exp(1)**-($k*$n/$m))**$k)' + * + * To extract 6 13-bit values from a 64-bit integer, they are overlapped: + * 0 10 20 30 40 50 60 + * +----------------------------------------------------------------+ + * | | + * +----------------------------------------------------------------+ + * 1111111111111 + * 2222222222222 + * 3333333333333 + * 4444444444444 + * 5555555555555 + * 6666666666666 + * + * This is not 100% kosher, but having 6 functions gives a better guarantee + * and it happens to work in practice. + */ + +#define BLOOM_N_FUNCS 6 +#define BLOOM_SHIFT 10 +#define BLOOM_N_BITS (1 << 13) +typedef uint64_t bloom_mask_el_t; +#define BLOOM_SET_SHIFT 6 /* log2(sizeof(bloom_mask_el_t)) */ +#define BLOOM_BITS_PER_EL (1 << BLOOM_SET_SHIFT) +#define BLOOM_N_MASK_ELS (BLOOM_N_BITS / BLOOM_BITS_PER_EL) +#define BLOOM_ONE 1ull + +#define PURGA_ELS_PER_PAGE 273 + +struct purga_page +{ + TAILQ_ENTRY(purga_page) pupa_next; + lsquic_time_t pupa_last; + unsigned pupa_count; + bloom_mask_el_t pupa_mask[BLOOM_N_MASK_ELS]; + lsquic_cid_t pupa_cids[PURGA_ELS_PER_PAGE]; + void * pupa_peer_ctx[PURGA_ELS_PER_PAGE]; + struct purga_el pupa_els[PURGA_ELS_PER_PAGE]; +}; + +#define PAGE_IS_FULL(page) ((page)->pupa_count >= PURGA_ELS_PER_PAGE) + +TAILQ_HEAD(purga_pages, purga_page); + +struct lsquic_purga +{ + lsquic_time_t pur_min_life; + lsquic_cids_update_f pur_remove_cids; + void *pur_remove_ctx; + struct purga_pages pur_pages; +#ifndef NDEBUG + struct purga_bloom_stats pur_stats; +#endif +}; + + +struct lsquic_purga * +lsquic_purga_new (lsquic_time_t min_life, lsquic_cids_update_f remove_cids, + void *remove_ctx) +{ + struct lsquic_purga *purga; + + purga = calloc(1, sizeof(*purga)); + if (!purga) + { + LSQ_WARN("cannot create purgatory: malloc failed: %s", strerror(errno)); + return NULL; + } + + purga->pur_min_life = min_life; + purga->pur_remove_cids = remove_cids; + purga->pur_remove_ctx = remove_ctx; + TAILQ_INIT(&purga->pur_pages); + LSQ_INFO("create purgatory, min life %"PRIu64" usec", min_life); + + return purga; +} + + +static struct purga_page * +purga_get_page (struct lsquic_purga *purga) +{ + struct purga_page *page; + + page = TAILQ_LAST(&purga->pur_pages, purga_pages); + if (page && !PAGE_IS_FULL(page)) + return page; + + page = malloc(sizeof(*page)); + if (!page) + { + LSQ_INFO("failed to allocate page: %s", strerror(errno)); + return NULL; + } + + page->pupa_count = 0; + page->pupa_last = 0; + memset(page->pupa_mask, 0, sizeof(page->pupa_mask)); + TAILQ_INSERT_TAIL(&purga->pur_pages, page, pupa_next); + LSQ_DEBUG("allocated new page"); + return page; +} + + +static void +purga_remove_cids (struct lsquic_purga *purga, struct purga_page *page) +{ + LSQ_DEBUG("calling remove_cids with %u CID%.*s", page->pupa_count, + page->pupa_count != 1, "s"); + /* XXX It is interesting that pur_remove_ctx is called with peer_ctx + * as an argument, which should could vary (at least theoretically or + * in the future) by path. + */ + purga->pur_remove_cids(purga->pur_remove_ctx, page->pupa_peer_ctx, + page->pupa_cids, page->pupa_count); +} + + +struct purga_el * +lsquic_purga_add (struct lsquic_purga *purga, const lsquic_cid_t *cid, + void *peer_ctx, enum purga_type putype, lsquic_time_t now) +{ + struct purga_page *last_page, *page; + uint64_t hash; + unsigned i, idx, set, bit; + + last_page = purga_get_page(purga); + if (!last_page) + return NULL; /* We do best effort, nothing to do if malloc fails */ + + idx = last_page->pupa_count++; + last_page->pupa_cids [idx] = *cid; + last_page->pupa_peer_ctx[idx] = peer_ctx; + last_page->pupa_els [idx] = (struct purga_el) { + .puel_type = putype, + }; + + hash = rapidhash_withSeed(cid->idbuf, cid->len, 0); + for (i = 0; i < BLOOM_N_FUNCS; ++i) + { + bit = (unsigned) hash & (BLOOM_BITS_PER_EL - 1); + set = ((unsigned) hash >> BLOOM_SET_SHIFT) & (BLOOM_N_MASK_ELS - 1); + last_page->pupa_mask[set] |= BLOOM_ONE << bit; + hash >>= BLOOM_SHIFT; + } + + LSQ_DEBUGC("added %"CID_FMT" to the set", CID_BITS(cid)); + if (PAGE_IS_FULL(last_page)) + { + LSQ_DEBUG("last page is full, set timestamp to %"PRIu64, now); + last_page->pupa_last = now; + } + + while ((page = TAILQ_FIRST(&purga->pur_pages)) + && PAGE_IS_FULL(page) + && page != last_page /* This is theoretical, but still... */ + && page->pupa_last + purga->pur_min_life < now) + { + LSQ_DEBUG("page at timestamp %"PRIu64" expired; now is %"PRIu64, + page->pupa_last, now); + TAILQ_REMOVE(&purga->pur_pages, page, pupa_next); + if (purga->pur_remove_cids && page->pupa_count) + purga_remove_cids(purga, page); + free(page); + } + + return &last_page->pupa_els[idx]; +} + + +struct purga_el * +lsquic_purga_contains (struct lsquic_purga *purga, const lsquic_cid_t *cid) +{ + struct purga_page *page; + unsigned i, bit, set, hits; + uint64_t cid_hash, hash; + + page = TAILQ_FIRST(&purga->pur_pages); + if (!page) + goto end; + + cid_hash = rapidhash_withSeed(cid->idbuf, cid->len, 0); + do + { +#ifndef NDEBUG + ++purga->pur_stats.searches; +#endif + hash = cid_hash; + hits = 0; + for (i = 0; i < BLOOM_N_FUNCS; ++i) + { + bit = (unsigned) hash & (BLOOM_BITS_PER_EL - 1); + set = ((unsigned) hash >> BLOOM_SET_SHIFT) & (BLOOM_N_MASK_ELS - 1); + hits += (page->pupa_mask[set] & (BLOOM_ONE << bit)) != 0; + hash >>= BLOOM_SHIFT; + } + if (hits < BLOOM_N_FUNCS) + goto next_page; + for (i = 0; i < page->pupa_count; ++i) + if (LSQUIC_CIDS_EQ(&page->pupa_cids[i], cid)) + { + LSQ_DEBUGC("found %"CID_FMT, CID_BITS(cid)); + return &page->pupa_els[i]; + } +#ifndef NDEBUG + ++purga->pur_stats.false_hits; +#endif + next_page: + page = TAILQ_NEXT(page, pupa_next); + } + while (page); + + end: + LSQ_DEBUGC("%"CID_FMT" not found", CID_BITS(cid)); + return NULL; +} + + +void +lsquic_purga_destroy (struct lsquic_purga *purga) +{ + struct purga_page *page; + + while ((page = TAILQ_FIRST(&purga->pur_pages))) + { + TAILQ_REMOVE(&purga->pur_pages, page, pupa_next); + if (purga->pur_remove_cids && page->pupa_count) + purga_remove_cids(purga, page); + free(page); + } + free(purga); + LSQ_INFO("destroyed"); +} + + +unsigned +lsquic_purga_cids_per_page (void) +{ + LSQ_DEBUG("CIDs per page: %u", PURGA_ELS_PER_PAGE); + return PURGA_ELS_PER_PAGE; +} + + +#ifndef NDEBUG +struct purga_bloom_stats * +lsquic_purga_get_bloom_stats (struct lsquic_purga *purga) +{ + return &purga->pur_stats; +} +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_purga.h b/external/lsquic/src/liblsquic/lsquic_purga.h new file mode 100644 index 0000000..152465d --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_purga.h @@ -0,0 +1,68 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_purga.h -- Purgatory for CIDs + * + * This module keeps a set of CIDs that should be ignored for a period + * of time. It is used when a connection is closed: this way, late + * packets will not create a new connection. + */ + +#ifndef LSQUIC_PURGA_H +#define LSQUIC_PURGA_H 1 + +struct lsquic_purga; + +/* Purgatory type is used to tell what action to take when a packet whose + * CID is in the purgatory is received. + */ +enum purga_type +{ + PUTY_CONN_DELETED, /* Connection was deleted */ + PUTY_CONN_DRAIN, /* Connection is in the "Drain" state */ + PUTY_CID_RETIRED, /* CID was retired */ +}; + +/* User can set these values freely */ +struct purga_el +{ + enum purga_type puel_type; + /* When puel_type is PUTY_CONN_DRAIN or PUTY_CID_RETIRED, puel_time + * specifies the time until the end of the drain period. + * + * When puel_type is PUTY_CONN_DELETED, puel_time specifies the time + * until the next time stateless reset can be sent. puel_count is the + * number of times puel_time was updated. + */ + unsigned puel_count; + lsquic_time_t puel_time; +}; + +struct lsquic_purga * +lsquic_purga_new (lsquic_time_t min_life, lsquic_cids_update_f remove_cids, + void *remove_ctx); + +struct purga_el * +lsquic_purga_add (struct lsquic_purga *, const lsquic_cid_t *, void *peer_ctx, + enum purga_type, lsquic_time_t); + +struct purga_el * +lsquic_purga_contains (struct lsquic_purga *, const lsquic_cid_t *); + +void +lsquic_purga_destroy (struct lsquic_purga *); + +unsigned +lsquic_purga_cids_per_page (void); + +#ifndef NDEBUG +struct purga_bloom_stats +{ + unsigned long searches; + unsigned long false_hits; +}; + +struct purga_bloom_stats * +lsquic_purga_get_bloom_stats (struct lsquic_purga *); +#endif + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_push_promise.h b/external/lsquic/src/liblsquic/lsquic_push_promise.h new file mode 100644 index 0000000..a6abdfa --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_push_promise.h @@ -0,0 +1,68 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_PUSH_PROMISE_H +#define LSQUIC_PUSH_PROMISE_H 1 + + +struct push_promise +{ + /* A push promise is associated with a single stream, while a stream can + * have several push promises it depends on. These push promises are + * stored on a list. A push promise is destroyed when the dependent + * stream is destroyed. + */ + SLIST_ENTRY(push_promise) pp_next; + /* Push promises are stored a hash and can be searched by ID */ + struct lsquic_hash_elem pp_hash_id; + uint64_t pp_id; + struct lsquic_stream *pp_pushed_stream; + size_t pp_content_len; + /* Number of streams holding a reference to this push promise. When this + * value becomes zero, the push promise is destroyed. See lsquic_pp_put(). + * + * The stream on which PUSH_PROMISE frame is sent has a reference in its + * sm_promises list. The push streams themselves have a reference in + * sm_promise. + */ + unsigned pp_refcnt; + /* State for the promise reader. If the state is not PPWS_NONE, we are + * in the process of writing the first push promise on sm_promises list + * (that's the last promise received). + */ + enum { + PPWS_ID0, /* Write first byte of Push ID */ + PPWS_ID1, /* Write second byte of Push ID */ + PPWS_ID2, /* Write third byte of Push ID */ + PPWS_ID3, /* Write fourth byte of Push ID */ + PPWS_ID4, /* Write fifth byte of Push ID */ + PPWS_ID5, /* Write sixth byte of Push ID */ + PPWS_ID6, /* Write seventh byte of Push ID */ + PPWS_ID7, /* Write eighth byte of Push ID */ + PPWS_PFX0, /* Write first NUL byte of the Header Block Prefix */ + PPWS_PFX1, /* Write second NUL byte of the Header Block Prefix */ + PPWS_HBLOCK, /* Write header block -- use sm_push_hblock_off */ + PPWS_DONE, + } pp_write_state; + unsigned pp_write_off; + unsigned char pp_encoded_push_id[8]; + /* The content buffer is the header block: it does not include Header + * Block Prefix. + */ + unsigned char pp_content_buf[0]; +}; + + +#define lsquic_pp_put(promise_, all_promises_) do { \ + if ((promise_)->pp_refcnt > 0) { \ + --(promise_)->pp_refcnt; \ + if (0 == (promise_)->pp_refcnt) { \ + LSQ_DEBUG("destroy push promise %"PRIu64, (promise_)->pp_id); \ + if ((promise_)->pp_hash_id.qhe_flags & QHE_HASHED) \ + lsquic_hash_erase(all_promises_, &(promise_)->pp_hash_id); \ + free(promise_); \ + } \ + } \ + else \ + assert(0); \ +} while (0) + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_qdec_hdl.c b/external/lsquic/src/liblsquic/lsquic_qdec_hdl.c new file mode 100644 index 0000000..4a6c3ab --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_qdec_hdl.c @@ -0,0 +1,901 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_qdec_hdl.c -- QPACK decoder streams handler + */ + +#include +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsxpack_header.h" +#include "lsquic_int_types.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_frab_list.h" +#include "lsqpack.h" +#include "lsquic_http1x_if.h" +#include "lsquic_qdec_hdl.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_headers.h" +#include "lsquic_conn.h" +#include "lsquic_conn_flow.h" +#include "lsquic_rtt.h" +#include "lsquic_conn_public.h" +#include "lsquic_hq.h" +#include "lsquic_parse.h" +#include "lsquic_qpack_exp.h" +#include "lsquic_util.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_QDEC_HDL +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(qdh->qdh_conn) +#include "lsquic_logger.h" + +static const struct lsqpack_dec_hset_if dhi_if; + + +struct header_ctx +{ + void *hset; + struct qpack_dec_hdl *qdh; + enum ppc_flags ppc_flags; + struct lsquic_ext_http_prio ehp; +}; + + +/* We need to allocate struct uncompressed_headers anyway when header set + * is complete and we give it to the stream using lsquic_stream_uh_in(). + * To save a malloc, we reuse context after we're done with it. + */ +union hblock_ctx +{ + struct header_ctx ctx; + unsigned char space_for_uh[sizeof(struct uncompressed_headers)]; +}; + + +static int +qdh_write_decoder (struct qpack_dec_hdl *qdh, const unsigned char *buf, + size_t sz) +{ + ssize_t nw; + + if (!(qdh->qdh_dec_sm_out && lsquic_frab_list_empty(&qdh->qdh_fral))) + { + write_to_frab: + if (0 == lsquic_frab_list_write(&qdh->qdh_fral, + (unsigned char *) buf, sz)) + { + LSQ_DEBUG("wrote %zu bytes to frab list", sz); + lsquic_stream_wantwrite(qdh->qdh_dec_sm_out, 1); + return 0; + } + else + { + LSQ_INFO("error writing to frab list"); + return -1; + } + } + + nw = lsquic_stream_write(qdh->qdh_dec_sm_out, buf, sz); + if (nw < 0) + { + LSQ_INFO("error writing to outgoing QPACK decoder stream: %s", + strerror(errno)); + return -1; + } + LSQ_DEBUG("wrote %zd bytes to outgoing QPACK decoder stream", nw); + + if ((size_t) nw == sz) + return 0; + + buf = buf + nw; + sz -= (size_t) nw; + goto write_to_frab; +} + + +static int +qdh_write_type (struct qpack_dec_hdl *qdh) +{ + int s; + +#ifndef NDEBUG + const char *env = getenv("LSQUIC_RND_VARINT_LEN"); + if (env && atoi(env)) + { + s = rand() & 3; + LSQ_DEBUG("writing %d-byte stream type", 1 << s); + } + else +#endif + s = 0; + + switch (s) + { + case 0: + return qdh_write_decoder(qdh, + (unsigned char []) { HQUST_QPACK_DEC }, 1); + case 1: + return qdh_write_decoder(qdh, + (unsigned char []) { 0x40, HQUST_QPACK_DEC }, 2); + case 2: + return qdh_write_decoder(qdh, + (unsigned char []) { 0x80, 0x00, 0x00, HQUST_QPACK_DEC }, 4); + default: + return qdh_write_decoder(qdh, + (unsigned char []) { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + HQUST_QPACK_DEC }, 8); + } +} + + +static void +qdh_begin_out (struct qpack_dec_hdl *qdh) +{ + if (0 != qdh_write_type(qdh)) + { + LSQ_WARN("%s: could not write to decoder", __func__); + qdh->qdh_conn->cn_if->ci_internal_error(qdh->qdh_conn, + "cannot write to decoder stream"); + } +} + + +int +lsquic_qdh_init (struct qpack_dec_hdl *qdh, struct lsquic_conn *conn, + int is_server, const struct lsquic_engine_public *enpub, + unsigned dyn_table_size, unsigned max_risked_streams) +{ + enum lsqpack_dec_opts dec_opts; + + dec_opts = 0; + if (enpub->enp_hsi_if->hsi_flags & LSQUIC_HSI_HTTP1X) + dec_opts |= LSQPACK_DEC_OPT_HTTP1X; + if (enpub->enp_hsi_if->hsi_flags & LSQUIC_HSI_HASH_NAME) + dec_opts |= LSQPACK_DEC_OPT_HASH_NAME; + if (enpub->enp_hsi_if->hsi_flags & LSQUIC_HSI_HASH_NAMEVAL) + dec_opts |= LSQPACK_DEC_OPT_HASH_NAMEVAL; + + if (conn->cn_flags & LSCONN_SERVER) + qdh->qdh_flags |= QDH_SERVER; + if (enpub->enp_settings.es_qpack_experiment) + { + qdh->qdh_exp_rec = lsquic_qpack_exp_new(); + if (qdh->qdh_exp_rec) + { + if (conn->cn_flags & LSCONN_SERVER) + qdh->qdh_exp_rec->qer_flags |= QER_SERVER; + qdh->qdh_exp_rec->qer_used_max_size = dyn_table_size; + qdh->qdh_exp_rec->qer_used_max_blocked = max_risked_streams; + } + } + if (!qdh->qdh_exp_rec && LSQ_LOG_ENABLED_EXT(LSQ_LOG_NOTICE, LSQLM_CONN)) + qdh->qdh_flags |= QDH_SAVE_UA; + + qdh->qdh_conn = conn; + lsquic_frab_list_init(&qdh->qdh_fral, 0x400, NULL, NULL, NULL); + lsqpack_dec_init(&qdh->qdh_decoder, (void *) conn, dyn_table_size, + max_risked_streams, &dhi_if, dec_opts); + qdh->qdh_flags |= QDH_INITIALIZED; + qdh->qdh_enpub = enpub; + if (qdh->qdh_enpub->enp_hsi_if == lsquic_http1x_if) + { + qdh->qdh_h1x_ctor_ctx = (struct http1x_ctor_ctx) { + .conn = conn, + .max_headers_sz = MAX_HTTP1X_HEADERS_SIZE, + .is_server = is_server, + }; + qdh->qdh_hsi_ctx = &qdh->qdh_h1x_ctor_ctx; + } + else + qdh->qdh_hsi_ctx = qdh->qdh_enpub->enp_hsi_ctx; + if (qdh->qdh_dec_sm_out) + qdh_begin_out(qdh); + if (qdh->qdh_enc_sm_in) + lsquic_stream_wantread(qdh->qdh_enc_sm_in, 1); + LSQ_DEBUG("initialized"); + return 0; +} + + +static void +qdh_log_and_clean_exp_rec (struct qpack_dec_hdl *qdh) +{ + char buf[0x400]; + + qdh->qdh_exp_rec->qer_comp_ratio = lsqpack_dec_ratio(&qdh->qdh_decoder); + /* Naughty: poking inside the decoder, it's not exposed. (Should it be?) */ + qdh->qdh_exp_rec->qer_peer_max_size = qdh->qdh_decoder.qpd_cur_max_capacity; + (void) lsquic_qpack_exp_to_xml(qdh->qdh_exp_rec, buf, sizeof(buf)); + LSQ_NOTICE("%s", buf); + lsquic_qpack_exp_destroy(qdh->qdh_exp_rec); + qdh->qdh_exp_rec = NULL; +} + + +void +lsquic_qdh_cleanup (struct qpack_dec_hdl *qdh) +{ + if (qdh->qdh_flags & QDH_INITIALIZED) + { + LSQ_DEBUG("cleanup"); + if (qdh->qdh_exp_rec) + qdh_log_and_clean_exp_rec(qdh); + if (qdh->qdh_ua) + { + free(qdh->qdh_ua); + qdh->qdh_ua = NULL; + } + lsqpack_dec_cleanup(&qdh->qdh_decoder); + lsquic_frab_list_cleanup(&qdh->qdh_fral); + qdh->qdh_flags &= ~QDH_INITIALIZED; + } +} + +static lsquic_stream_ctx_t * +qdh_out_on_new (void *stream_if_ctx, struct lsquic_stream *stream) +{ + struct qpack_dec_hdl *const qdh = stream_if_ctx; + qdh->qdh_dec_sm_out = stream; + if (qdh->qdh_flags & QDH_INITIALIZED) + qdh_begin_out(qdh); + LSQ_DEBUG("initialized outgoing decoder stream"); + return (void *) qdh; +} + + +static void +qdh_out_on_write (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + struct qpack_dec_hdl *const qdh = (void *) ctx; + struct lsquic_reader reader; + ssize_t nw; + unsigned char buf[LSQPACK_LONGEST_ICI]; + + if (lsqpack_dec_ici_pending(&qdh->qdh_decoder)) + { + nw = lsqpack_dec_write_ici(&qdh->qdh_decoder, buf, sizeof(buf)); + if (nw > 0) + { + if (0 == qdh_write_decoder(qdh, buf, nw)) + LSQ_DEBUG("wrote %zd-byte TSS instruction", nw); + else + goto err; + } + else if (nw < 0) + { + LSQ_WARN("could not generate TSS instruction"); + goto err; + } + } + + if (lsquic_frab_list_empty(&qdh->qdh_fral)) + { + LSQ_DEBUG("%s: nothing to write", __func__); + lsquic_stream_wantwrite(stream, 0); + return; + } + + reader = (struct lsquic_reader) { + .lsqr_read = lsquic_frab_list_read, + .lsqr_size = lsquic_frab_list_size, + .lsqr_ctx = &qdh->qdh_fral, + }; + + nw = lsquic_stream_writef(stream, &reader); + if (nw >= 0) + { + LSQ_DEBUG("wrote %zd bytes to stream", nw); + (void) lsquic_stream_flush(stream); + if (lsquic_frab_list_empty(&qdh->qdh_fral)) + { + lsquic_stream_wantwrite(stream, 0); + if (qdh->qdh_on_dec_sent_func) + { + LSQ_DEBUG("buffered data written: call callback"); + qdh->qdh_on_dec_sent_func(qdh->qdh_on_dec_sent_ctx); + qdh->qdh_on_dec_sent_func = NULL; + qdh->qdh_on_dec_sent_ctx = NULL; + } + } + } + else + { + LSQ_WARN("cannot write to stream: %s", strerror(errno)); + err: + lsquic_stream_wantwrite(stream, 0); + qdh->qdh_conn->cn_if->ci_internal_error(qdh->qdh_conn, + "cannot write to stream"); + } +} + + +static void +qdh_out_on_close (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + struct qpack_dec_hdl *const qdh = (void *) ctx; + qdh->qdh_dec_sm_out = NULL; + LSQ_DEBUG("closed outgoing decoder stream"); +} + + +static void +qdh_out_on_read (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + assert(0); +} + + +static const struct lsquic_stream_if qdh_dec_sm_out_if = +{ + .on_new_stream = qdh_out_on_new, + .on_read = qdh_out_on_read, + .on_write = qdh_out_on_write, + .on_close = qdh_out_on_close, +}; +const struct lsquic_stream_if *const lsquic_qdh_dec_sm_out_if = + &qdh_dec_sm_out_if; + + +static lsquic_stream_ctx_t * +qdh_in_on_new (void *stream_if_ctx, struct lsquic_stream *stream) +{ + struct qpack_dec_hdl *const qdh = stream_if_ctx; + qdh->qdh_enc_sm_in = stream; + if (qdh->qdh_flags & QDH_INITIALIZED) + lsquic_stream_wantread(qdh->qdh_enc_sm_in, 1); + LSQ_DEBUG("initialized incoming encoder stream"); + return (void *) qdh; +} + + +static size_t +qdh_read_encoder_stream (void *ctx, const unsigned char *buf, size_t sz, + int fin) +{ + struct qpack_dec_hdl *const qdh = (void *) ctx; + const struct lsqpack_dec_err *qerr; + int s; + + if (fin) + { + LSQ_INFO("encoder stream is closed"); + qdh->qdh_conn->cn_if->ci_abort_error(qdh->qdh_conn, 1, + HEC_CLOSED_CRITICAL_STREAM, "Peer closed QPACK encoder stream"); + goto end; + } + + s = lsqpack_dec_enc_in(&qdh->qdh_decoder, buf, sz); + if (s != 0) + { + LSQ_INFO("error reading encoder stream"); + qerr = lsqpack_dec_get_err_info(&qdh->qdh_decoder); + qdh->qdh_conn->cn_if->ci_abort_error(qdh->qdh_conn, 1, + HEC_QPACK_ENCODER_STREAM_ERROR, "Error interpreting QPACK encoder " + "stream; offset %"PRIu64", line %d", qerr->off, qerr->line); + goto end; + } + if (qdh->qdh_dec_sm_out + && lsqpack_dec_ici_pending(&qdh->qdh_decoder)) + lsquic_stream_wantwrite(qdh->qdh_dec_sm_out, 1); + + LSQ_DEBUG("successfully fed %zu bytes to QPACK decoder", sz); + + end: + return sz; +} + + +static void +qdh_in_on_read (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + struct qpack_dec_hdl *const qdh = (void *) ctx; + ssize_t nread; + + nread = lsquic_stream_readf(stream, qdh_read_encoder_stream, qdh); + if (nread <= 0) + { + if (nread < 0) + { + LSQ_WARN("cannot read from encoder stream: %s", strerror(errno)); + qdh->qdh_conn->cn_if->ci_internal_error(qdh->qdh_conn, + "cannot read from encoder stream"); + } + else + { + LSQ_INFO("encoder stream closed by peer: abort connection"); + qdh->qdh_conn->cn_if->ci_abort_error(qdh->qdh_conn, 1, + HEC_CLOSED_CRITICAL_STREAM, "encoder stream closed"); + } + lsquic_stream_wantread(stream, 0); + } +} + + +static void +qdh_in_on_close (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + struct qpack_dec_hdl *const qdh = (void *) ctx; + LSQ_DEBUG("closed incoming encoder stream"); + qdh->qdh_enc_sm_in = NULL; +} + + +static void +qdh_in_on_write (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + assert(0); +} + + +static const struct lsquic_stream_if qdh_enc_sm_in_if = +{ + .on_new_stream = qdh_in_on_new, + .on_read = qdh_in_on_read, + .on_write = qdh_in_on_write, + .on_close = qdh_in_on_close, +}; +const struct lsquic_stream_if *const lsquic_qdh_enc_sm_in_if = + &qdh_enc_sm_in_if; + + +static void +qdh_hblock_unblocked (void *stream_p) +{ + struct lsquic_stream *const stream = stream_p; + lsquic_stream_qdec_unblocked(stream); +} + + +struct cont_len +{ + unsigned long long value; + int has; /* 1: set, 0: not set, -1: invalid */ +}; + + +static void +process_content_length (const struct qpack_dec_hdl *qdh /* for logging */, + struct cont_len *cl, const char *val /* not NUL-terminated */, + unsigned len) +{ + char *endcl, cont_len_buf[30]; + + if (0 == cl->has) + { + if (len >= sizeof(cont_len_buf)) + { + LSQ_DEBUG("content-length has invalid value `%.*s'", + (int) len, val); + cl->has = -1; + return; + } + memcpy(cont_len_buf, val, len); + cont_len_buf[len] = '\0'; + cl->value = strtoull(cont_len_buf, &endcl, 10); + if (*endcl == '\0' && !(ULLONG_MAX == cl->value && ERANGE == errno)) + { + cl->has = 1; + LSQ_DEBUG("content length is %llu", cl->value); + } + else + { + cl->has = -1; + LSQ_DEBUG("content-length has invalid value `%.*s'", + (int) len, val); + } + } + else if (cl->has > 0) + { + LSQ_DEBUG("header set has two content-length: ambiguous, " + "turn off checking"); + cl->has = -1; + } +} + + +static int +is_content_length (const struct lsxpack_header *xhdr) +{ + return ((xhdr->flags & LSXPACK_QPACK_IDX) + && xhdr->qpack_index == LSQPACK_TNV_CONTENT_LENGTH_0) + || (xhdr->name_len == 14 && 0 == memcmp(lsxpack_header_get_name(xhdr), + "content-length", 13)) + ; +} + + +static int +is_priority (const struct lsxpack_header *xhdr) +{ + return xhdr->name_len == 8 + && 0 == memcmp(lsxpack_header_get_name(xhdr), "priority", 8); +} + + +static struct lsxpack_header * +qdh_prepare_decode (void *stream_p, struct lsxpack_header *xhdr, size_t space) +{ + struct lsquic_stream *const stream = stream_p; + union hblock_ctx *const u = stream->sm_hblock_ctx; + struct qpack_dec_hdl *const qdh = u->ctx.qdh; + + return qdh->qdh_enpub->enp_hsi_if->hsi_prepare_decode( + u->ctx.hset, xhdr, space); +} + + +static void +qdh_maybe_set_user_agent (struct qpack_dec_hdl *qdh, + const struct lsxpack_header *xhdr, char **ua) +{ + /* Flipped: we are the *decoder* */ + const char *const name = qdh->qdh_flags & QDH_SERVER ? + "user-agent" : "server"; + const size_t len = qdh->qdh_flags & QDH_SERVER ? 10 : 6; + + if (len == xhdr->name_len + && 0 == memcmp(name, lsxpack_header_get_name(xhdr), len)) + *ua = strndup(lsxpack_header_get_value(xhdr), xhdr->val_len); +} + + +/* Intercept header errors so that upper-layer errors do not get + * misinterpreted as QPACK errors. + */ +static int +qdh_hsi_process_wrapper (struct qpack_dec_hdl *qdh, void *hset, + struct lsxpack_header *xhdr) +{ + int retval; + + retval = qdh->qdh_enpub->enp_hsi_if->hsi_process_header(hset, xhdr); + if (0 != retval) + qdh->qdh_conn->cn_if->ci_abort_error(qdh->qdh_conn, 1, + HEC_MESSAGE_ERROR, + "error processing headers"); + + return retval; +} + + +static int +qdh_process_header (void *stream_p, struct lsxpack_header *xhdr) +{ + struct lsquic_stream *const stream = stream_p; + union hblock_ctx *const u = stream->sm_hblock_ctx; + struct qpack_dec_hdl *const qdh = u->ctx.qdh; + struct cont_len cl; + + if (is_content_length(xhdr)) + { + cl.has = 0; + process_content_length(qdh, &cl, lsxpack_header_get_value(xhdr), + xhdr->val_len); + if (cl.has > 0) + (void) lsquic_stream_verify_len(stream, cl.value); + } + else if ((stream->sm_bflags & (SMBF_HTTP_PRIO|SMBF_HPRIO_SET)) + == SMBF_HTTP_PRIO + && is_priority(xhdr)) + { + u->ctx.ppc_flags &= ~(PPC_INC_NAME|PPC_URG_NAME); + (void) lsquic_http_parse_pfv(lsxpack_header_get_value(xhdr), + xhdr->val_len, &u->ctx.ppc_flags, &u->ctx.ehp, + (char *) stream->conn_pub->mm->acki, + sizeof(*stream->conn_pub->mm->acki)); + } + else if (qdh->qdh_exp_rec && !qdh->qdh_exp_rec->qer_user_agent) + qdh_maybe_set_user_agent(qdh, xhdr, &qdh->qdh_exp_rec->qer_user_agent); + else if ((qdh->qdh_flags & QDH_SAVE_UA) && !qdh->qdh_ua) + qdh_maybe_set_user_agent(qdh, xhdr, &qdh->qdh_ua); + + return qdh_hsi_process_wrapper(qdh, u->ctx.hset, xhdr); +} + + +static const struct lsqpack_dec_hset_if dhi_if = +{ + .dhi_unblocked = qdh_hblock_unblocked, + .dhi_prepare_decode = qdh_prepare_decode, + .dhi_process_header = qdh_process_header, +}; + + +static void +qdh_maybe_destroy_hblock_ctx (struct qpack_dec_hdl *qdh, + struct lsquic_stream *stream) +{ + if (stream->sm_hblock_ctx) + { + LSQ_DEBUG("destroy hblock_ctx of stream %"PRIu64, stream->id); + qdh->qdh_enpub->enp_hsi_if->hsi_discard_header_set( + stream->sm_hblock_ctx->ctx.hset); + free(stream->sm_hblock_ctx); + stream->sm_hblock_ctx = NULL; + } +} + + +static enum lsqpack_read_header_status +qdh_header_read_results (struct qpack_dec_hdl *qdh, + struct lsquic_stream *stream, enum lsqpack_read_header_status rhs, + const unsigned char *dec_buf, size_t dec_buf_sz) +{ + const struct lsqpack_dec_err *qerr; + struct uncompressed_headers *uh; + void *hset; + + if (rhs == LQRHS_DONE) + { + if (1) //!lsquic_stream_header_is_trailer(stream)) + { + if (stream->sm_hblock_ctx->ctx.ppc_flags + & (PPC_INC_SET|PPC_URG_SET)) + { + assert(stream->sm_bflags & SMBF_HTTP_PRIO); + LSQ_DEBUG("Apply Priority from headers to stream %"PRIu64, + stream->id); + (void) lsquic_stream_set_http_prio(stream, + &stream->sm_hblock_ctx->ctx.ehp); + } + hset = stream->sm_hblock_ctx->ctx.hset; + uh = (void *) stream->sm_hblock_ctx; + stream->sm_hblock_ctx = NULL; + memset(uh, 0, sizeof(*uh)); + uh->uh_stream_id = stream->id; + uh->uh_oth_stream_id = 0; + uh->uh_weight = 0; + uh->uh_exclusive = -1; + if (qdh->qdh_enpub->enp_hsi_if == lsquic_http1x_if) + uh->uh_flags |= UH_H1H; + if (0 != qdh_hsi_process_wrapper(qdh, hset, NULL)) + { + LSQ_DEBUG("finishing hset failed"); + free(uh); + qdh->qdh_enpub->enp_hsi_if->hsi_discard_header_set(hset); + return LQRHS_ERROR; + } + uh->uh_hset = hset; + if (0 == lsquic_stream_uh_in(stream, uh)) + LSQ_DEBUG("gave hset to stream %"PRIu64, stream->id); + else + { + LSQ_DEBUG("could not give hset to stream %"PRIu64, stream->id); + free(uh); + qdh->qdh_enpub->enp_hsi_if->hsi_discard_header_set(hset); + return LQRHS_ERROR; + } + } + else + { + LSQ_DEBUG("discard trailer header set"); + qdh_maybe_destroy_hblock_ctx(qdh, stream); + } + if (qdh->qdh_dec_sm_out) + { + if (dec_buf_sz + && 0 != qdh_write_decoder(qdh, dec_buf, dec_buf_sz)) + { + return LQRHS_ERROR; + } + if (dec_buf_sz || lsqpack_dec_ici_pending(&qdh->qdh_decoder)) + lsquic_stream_wantwrite(qdh->qdh_dec_sm_out, 1); + } + } + else if (rhs == LQRHS_ERROR) + { + qdh_maybe_destroy_hblock_ctx(qdh, stream); + qerr = lsqpack_dec_get_err_info(&qdh->qdh_decoder); + qdh->qdh_conn->cn_if->ci_abort_error(qdh->qdh_conn, 1, + HEC_QPACK_DECOMPRESSION_FAILED, "QPACK decompression error; " + "stream %"PRIu64", offset %"PRIu64", line %d", qerr->stream_id, + qerr->off, qerr->line); + } + + return rhs; +} + + +enum lsqpack_read_header_status +lsquic_qdh_header_in_begin (struct qpack_dec_hdl *qdh, + struct lsquic_stream *stream, uint64_t header_size, + const unsigned char **buf, size_t bufsz) +{ + enum lsqpack_read_header_status rhs; + void *hset; + int is_pp; + size_t dec_buf_sz; + union hblock_ctx *u; + unsigned char dec_buf[LSQPACK_LONGEST_HEADER_ACK]; + + assert(!(stream->stream_flags & STREAM_U_READ_DONE)); + + if (!(qdh->qdh_flags & QDH_INITIALIZED)) + { + LSQ_WARN("not initialized: cannot process header block"); + return LQRHS_ERROR; + } + + u = malloc(sizeof(*u)); + if (!u) + { + LSQ_INFO("cannot allocate hblock_ctx"); + return LQRHS_ERROR; + } + + is_pp = lsquic_stream_header_is_pp(stream); + hset = qdh->qdh_enpub->enp_hsi_if->hsi_create_header_set( + qdh->qdh_hsi_ctx, stream, is_pp); + if (!hset) + { + free(u); + LSQ_DEBUG("hsi_create_header_set failure"); + return LQRHS_ERROR; + } + + u->ctx.hset = hset; + u->ctx.qdh = qdh; + u->ctx.ppc_flags = 0; + u->ctx.ehp = (struct lsquic_ext_http_prio) { + .urgency = LSQUIC_DEF_HTTP_URGENCY, + .incremental = LSQUIC_DEF_HTTP_INCREMENTAL, + }; + stream->sm_hblock_ctx = u; + + if (qdh->qdh_exp_rec) + { + const lsquic_time_t now = lsquic_time_now(); + if (0 == qdh->qdh_exp_rec->qer_hblock_count) + qdh->qdh_exp_rec->qer_first_req = now; + qdh->qdh_exp_rec->qer_last_req = now; + ++qdh->qdh_exp_rec->qer_hblock_count; + qdh->qdh_exp_rec->qer_hblock_size += bufsz; + } + + dec_buf_sz = sizeof(dec_buf); + rhs = lsqpack_dec_header_in(&qdh->qdh_decoder, stream, stream->id, + header_size, buf, bufsz, dec_buf, &dec_buf_sz); + if (qdh->qdh_exp_rec) + qdh->qdh_exp_rec->qer_peer_max_blocked += rhs == LQRHS_BLOCKED; + return qdh_header_read_results(qdh, stream, rhs, dec_buf, dec_buf_sz); +} + + +enum lsqpack_read_header_status +lsquic_qdh_header_in_continue (struct qpack_dec_hdl *qdh, + struct lsquic_stream *stream, const unsigned char **buf, size_t bufsz) +{ + enum lsqpack_read_header_status rhs; + size_t dec_buf_sz; + unsigned char dec_buf[LSQPACK_LONGEST_HEADER_ACK]; + + assert(!(stream->stream_flags & STREAM_U_READ_DONE)); + + if (qdh->qdh_flags & QDH_INITIALIZED) + { + if (qdh->qdh_exp_rec) + qdh->qdh_exp_rec->qer_hblock_size += bufsz; + dec_buf_sz = sizeof(dec_buf); + rhs = lsqpack_dec_header_read(&qdh->qdh_decoder, stream, + buf, bufsz, dec_buf, &dec_buf_sz); + if (qdh->qdh_exp_rec) + qdh->qdh_exp_rec->qer_peer_max_blocked += rhs == LQRHS_BLOCKED; + return qdh_header_read_results(qdh, stream, rhs, dec_buf, dec_buf_sz); + } + else + { + LSQ_WARN("not initialized: cannot process header block"); + return LQRHS_ERROR; + } +} + + +static void +lsquic_qdh_unref_stream (struct qpack_dec_hdl *qdh, + struct lsquic_stream *stream) +{ + if (0 == lsqpack_dec_unref_stream(&qdh->qdh_decoder, stream)) + LSQ_DEBUG("unreffed stream %"PRIu64, stream->id); + else + LSQ_WARN("cannot unref stream %"PRIu64, stream->id); +} + + +void +lsquic_qdh_cancel_stream (struct qpack_dec_hdl *qdh, + struct lsquic_stream *stream) +{ + ssize_t nw; + unsigned char buf[LSQPACK_LONGEST_CANCEL]; + + qdh_maybe_destroy_hblock_ctx(qdh, stream); + + if (!qdh->qdh_dec_sm_out) + return; + + nw = lsqpack_dec_cancel_stream(&qdh->qdh_decoder, stream, buf, sizeof(buf)); + if (nw > 0) + { + if (0 == qdh_write_decoder(qdh, buf, nw)) + LSQ_DEBUG("cancelled stream %"PRIu64" and wrote %zd-byte Cancel " + "Stream instruction to the decoder stream", stream->id, nw); + } + else if (nw == 0) + LSQ_WARN("cannot cancel stream %"PRIu64" -- not found", stream->id); + else + { + LSQ_WARN("cannot cancel stream %"PRIu64" -- not enough buffer space " + "to encode Cancel Stream instructin", stream->id); + lsquic_qdh_unref_stream(qdh, stream); + } +} + + +void +lsquic_qdh_cancel_stream_id (struct qpack_dec_hdl *qdh, + lsquic_stream_id_t stream_id) +{ + ssize_t nw; + unsigned char buf[LSQPACK_LONGEST_CANCEL]; + + if (!qdh->qdh_dec_sm_out) + return; + + nw = lsqpack_dec_cancel_stream_id(&qdh->qdh_decoder, stream_id, buf, + sizeof(buf)); + if (nw > 0) + { + if (0 == qdh_write_decoder(qdh, buf, nw)) + LSQ_DEBUG("wrote %zd-byte Cancel Stream instruction for " + "stream %"PRIu64" to the decoder stream", nw, stream_id); + } + else if (nw == 0) + LSQ_DEBUG("not generating Cancel Stream instruction for " + "stream %"PRIu64, stream_id); + else + LSQ_WARN("cannot generate Cancel Stream instruction for " + "stream %"PRIu64" -- not enough buffer space", stream_id); +} + + +int +lsquic_qdh_arm_if_unsent (struct qpack_dec_hdl *qdh, void (*func)(void *), + void *ctx) +{ + size_t bytes; + + /* Use size of a single frab list buffer as an arbitrary threshold */ + bytes = lsquic_frab_list_size(&qdh->qdh_fral); + if (bytes <= qdh->qdh_fral.fl_buf_size) + return 0; + else + { + LSQ_DEBUG("have %zu bytes of unsent QPACK decoder stream data: set " + "up callback", bytes); + qdh->qdh_on_dec_sent_func = func; + qdh->qdh_on_dec_sent_ctx = ctx; + return 1; + } +} + + +const char * +lsquic_qdh_get_ua (const struct qpack_dec_hdl *qdh) +{ + if (qdh->qdh_ua) + return qdh->qdh_ua; + else if (qdh->qdh_exp_rec && qdh->qdh_exp_rec->qer_user_agent) + return qdh->qdh_exp_rec->qer_user_agent; + else + return NULL; +} diff --git a/external/lsquic/src/liblsquic/lsquic_qdec_hdl.h b/external/lsquic/src/liblsquic/lsquic_qdec_hdl.h new file mode 100644 index 0000000..0354598 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_qdec_hdl.h @@ -0,0 +1,90 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_qdec_hdl.h -- QPACK decoder streams handler + * + * The handler owns two unidirectional streams: a) peer-initiated QPACK + * encoder stream, from which it reads; and b) locally-initiated QPACK + * decoder stream, to which it writes. + */ + +#ifndef LSQUIC_QDEC_HDL_H +#define LSQUIC_QDEC_HDL_H 1 + +struct lsquic_conn; +struct lsquic_stream; +struct lsquic_stream_if; +struct lsquic_engine_public; +struct qpack_exp_record; + + +struct qpack_dec_hdl +{ + struct lsquic_conn *qdh_conn; + enum { + QDH_INITIALIZED = 1 << 0, + QDH_PUSH_PROMISE = 1 << 1, + QDH_SAVE_UA = 1 << 2, + QDH_SERVER = 1 << 3, + } qdh_flags; + struct lsqpack_dec qdh_decoder; + struct lsquic_stream *qdh_enc_sm_in; + struct frab_list qdh_fral; + struct lsquic_stream *qdh_dec_sm_out; + const struct lsquic_engine_public + *qdh_enpub; + struct http1x_ctor_ctx qdh_h1x_ctor_ctx; + void *qdh_hsi_ctx; + void (*qdh_on_dec_sent_func)(void *); + void *qdh_on_dec_sent_ctx; + struct qpack_exp_record *qdh_exp_rec; + char *qdh_ua; +}; + +int +lsquic_qdh_init (struct qpack_dec_hdl *, struct lsquic_conn *, + int is_server, const struct lsquic_engine_public *, + unsigned dyn_table_size, unsigned max_risked_streams); + +void +lsquic_qdh_cleanup (struct qpack_dec_hdl *); + +static inline unsigned +lsquic_qdh_has_enc_stream (const struct qpack_dec_hdl *qdh) +{ + return qdh->qdh_enc_sm_in != NULL; +} + +enum header_in_status +{ + HIS_DONE, + HIS_NEED, + HIS_BLOCKED, + HIS_ERROR, +}; + + +enum lsqpack_read_header_status +lsquic_qdh_header_in_begin (struct qpack_dec_hdl *, struct lsquic_stream *, + uint64_t size, const unsigned char **, size_t); + +enum lsqpack_read_header_status +lsquic_qdh_header_in_continue (struct qpack_dec_hdl *, struct lsquic_stream *, + const unsigned char **, size_t); + +void +lsquic_qdh_cancel_stream (struct qpack_dec_hdl *, + struct lsquic_stream *); + +void +lsquic_qdh_cancel_stream_id (struct qpack_dec_hdl *, lsquic_stream_id_t); + +int +lsquic_qdh_arm_if_unsent (struct qpack_dec_hdl *, void (*)(void *), void *); + +const char * +lsquic_qdh_get_ua (const struct qpack_dec_hdl *); + +extern const struct lsquic_stream_if *const lsquic_qdh_enc_sm_in_if; +extern const struct lsquic_stream_if *const lsquic_qdh_dec_sm_out_if; + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_qenc_hdl.c b/external/lsquic/src/liblsquic/lsquic_qenc_hdl.c new file mode 100644 index 0000000..41ca45f --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_qenc_hdl.c @@ -0,0 +1,580 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_qenc_hdl.c -- QPACK encoder streams handler + */ + +#include +#include +#include +#include +#include +#include + +#ifdef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_frab_list.h" +#include "lsqpack.h" +#include "lsxpack_header.h" +#include "lsquic_conn.h" +#include "lsquic_qpack_exp.h" +#include "lsquic_util.h" +#include "lsquic_qenc_hdl.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_QENC_HDL +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(qeh->qeh_conn) +#include "lsquic_logger.h" + +#define QENC_MIN_DYN_TABLE_SIZE 32u + +static int +qeh_write_type (struct qpack_enc_hdl *qeh) +{ + int s; + +#ifndef NDEBUG + const char *env = getenv("LSQUIC_RND_VARINT_LEN"); + if (env && atoi(env)) + { + s = rand() & 3; + LSQ_DEBUG("writing %d-byte stream type", 1 << s); + } + else +#endif + s = 0; + + switch (s) + { + case 0: + return lsquic_frab_list_write(&qeh->qeh_fral, + (unsigned char []) { HQUST_QPACK_ENC }, 1); + case 1: + return lsquic_frab_list_write(&qeh->qeh_fral, + (unsigned char []) { 0x40, HQUST_QPACK_ENC }, 2); + case 2: + return lsquic_frab_list_write(&qeh->qeh_fral, + (unsigned char []) { 0x80, 0x00, 0x00, HQUST_QPACK_ENC }, 4); + default: + return lsquic_frab_list_write(&qeh->qeh_fral, + (unsigned char []) { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + HQUST_QPACK_ENC }, 8); + } +} + + +static void +qeh_begin_out (struct qpack_enc_hdl *qeh) +{ + if (0 == qeh_write_type(qeh) + && (qeh->qeh_tsu_sz == 0 + || 0 == lsquic_frab_list_write(&qeh->qeh_fral, qeh->qeh_tsu_buf, + qeh->qeh_tsu_sz))) + { + LSQ_DEBUG("wrote %zu bytes to frab list", 1 + qeh->qeh_tsu_sz); + lsquic_stream_wantwrite(qeh->qeh_enc_sm_out, 1); + } + else + { + LSQ_WARN("could not write to frab list"); + qeh->qeh_conn->cn_if->ci_internal_error(qeh->qeh_conn, + "cannot write to frab list"); + } +} + + +void +lsquic_qeh_init (struct qpack_enc_hdl *qeh, struct lsquic_conn *conn) +{ + assert(!(qeh->qeh_flags & QEH_INITIALIZED)); + qeh->qeh_conn = conn; + lsquic_frab_list_init(&qeh->qeh_fral, 0x400, NULL, NULL, NULL); + lsqpack_enc_preinit(&qeh->qeh_encoder, (void *) conn); + qeh->qeh_flags |= QEH_INITIALIZED; + qeh->qeh_max_prefix_size = + lsqpack_enc_header_block_prefix_size(&qeh->qeh_encoder); + if (qeh->qeh_dec_sm_in) + lsquic_stream_wantread(qeh->qeh_dec_sm_in, 1); + LSQ_DEBUG("initialized"); +} + + +int +lsquic_qeh_settings (struct qpack_enc_hdl *qeh, unsigned max_table_size, + unsigned dyn_table_size, unsigned max_risked_streams, int server) +{ + enum lsqpack_enc_opts enc_opts; + + assert(qeh->qeh_flags & QEH_INITIALIZED); + + if (qeh->qeh_flags & QEH_HAVE_SETTINGS) + { + LSQ_WARN("settings already set"); + return -1; + } + + enc_opts = LSQPACK_ENC_OPT_STAGE_2 + | (server ? LSQPACK_ENC_OPT_SERVER : 0); + qeh->qeh_tsu_sz = sizeof(qeh->qeh_tsu_buf); + if (QENC_MIN_DYN_TABLE_SIZE > dyn_table_size) + dyn_table_size = 0; + if (0 != lsqpack_enc_init(&qeh->qeh_encoder, (void *) qeh->qeh_conn, + max_table_size, dyn_table_size, max_risked_streams, enc_opts, + qeh->qeh_tsu_buf, &qeh->qeh_tsu_sz)) + { + LSQ_INFO("could not initialize QPACK encoder"); + return -1; + } + LSQ_DEBUG("%zu-byte post-init TSU", qeh->qeh_tsu_sz); + qeh->qeh_flags |= QEH_HAVE_SETTINGS; + qeh->qeh_max_prefix_size = + lsqpack_enc_header_block_prefix_size(&qeh->qeh_encoder); + LSQ_DEBUG("have settings: max table size=%u; dyn table size=%u; max risked " + "streams=%u", max_table_size, dyn_table_size, max_risked_streams); + if (qeh->qeh_enc_sm_out) + qeh_begin_out(qeh); + return 0; +} + + +static void +qeh_log_and_clean_exp_rec (struct qpack_enc_hdl *qeh) +{ + char buf[0x400]; + + qeh->qeh_exp_rec->qer_comp_ratio = lsqpack_enc_ratio(&qeh->qeh_encoder); + (void) lsquic_qpack_exp_to_xml(qeh->qeh_exp_rec, buf, sizeof(buf)); + LSQ_NOTICE("%s", buf); + lsquic_qpack_exp_destroy(qeh->qeh_exp_rec); + qeh->qeh_exp_rec = NULL; +} + + +void +lsquic_qeh_cleanup (struct qpack_enc_hdl *qeh) +{ + if (qeh->qeh_flags & QEH_INITIALIZED) + { + LSQ_DEBUG("cleanup"); + if (qeh->qeh_exp_rec) + qeh_log_and_clean_exp_rec(qeh); + lsqpack_enc_cleanup(&qeh->qeh_encoder); + lsquic_frab_list_cleanup(&qeh->qeh_fral); + memset(qeh, 0, sizeof(*qeh)); + } +} + +static lsquic_stream_ctx_t * +qeh_out_on_new (void *stream_if_ctx, struct lsquic_stream *stream) +{ + struct qpack_enc_hdl *const qeh = stream_if_ctx; + qeh->qeh_enc_sm_out = stream; + if ((qeh->qeh_flags & (QEH_INITIALIZED|QEH_HAVE_SETTINGS)) + == (QEH_INITIALIZED|QEH_HAVE_SETTINGS)) + qeh_begin_out(qeh); + else + qeh->qeh_conn = lsquic_stream_conn(stream); /* Or NULL deref in log */ + LSQ_DEBUG("initialized outgoing encoder stream"); + return (void *) qeh; +} + + +static void +qeh_out_on_write (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + struct qpack_enc_hdl *const qeh = (void *) ctx; + struct lsquic_reader reader = { + .lsqr_read = lsquic_frab_list_read, + .lsqr_size = lsquic_frab_list_size, + .lsqr_ctx = &qeh->qeh_fral, + }; + ssize_t nw; + + nw = lsquic_stream_writef(stream, &reader); + if (nw >= 0) + { + LSQ_DEBUG("wrote %zd bytes to stream", nw); + (void) lsquic_stream_flush(stream); + if (lsquic_frab_list_empty(&qeh->qeh_fral)) + lsquic_stream_wantwrite(stream, 0); + } + else + { + qeh->qeh_conn->cn_if->ci_internal_error(qeh->qeh_conn, + "cannot write to stream"); + LSQ_WARN("cannot write to stream: %s", strerror(errno)); + lsquic_stream_wantwrite(stream, 0); + } +} + + +static void +qeh_out_on_close (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + struct qpack_enc_hdl *const qeh = (void *) ctx; + qeh->qeh_enc_sm_out = NULL; + LSQ_DEBUG("closed outgoing encoder stream"); +} + + +static void +qeh_out_on_read (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + assert(0); +} + + +static const struct lsquic_stream_if qeh_enc_sm_out_if = +{ + .on_new_stream = qeh_out_on_new, + .on_read = qeh_out_on_read, + .on_write = qeh_out_on_write, + .on_close = qeh_out_on_close, +}; +const struct lsquic_stream_if *const lsquic_qeh_enc_sm_out_if = + &qeh_enc_sm_out_if; + + +static lsquic_stream_ctx_t * +qeh_in_on_new (void *stream_if_ctx, struct lsquic_stream *stream) +{ + struct qpack_enc_hdl *const qeh = stream_if_ctx; + qeh->qeh_dec_sm_in = stream; + if (qeh->qeh_flags & QEH_INITIALIZED) + lsquic_stream_wantread(qeh->qeh_dec_sm_in, 1); + else + qeh->qeh_conn = lsquic_stream_conn(stream); /* Or NULL deref in log */ + LSQ_DEBUG("initialized incoming decoder stream"); + return (void *) qeh; +} + + +static size_t +qeh_read_decoder_stream (void *ctx, const unsigned char *buf, size_t sz, + int fin) +{ + struct qpack_enc_hdl *const qeh = (void *) ctx; + uint64_t offset; + int s; + + if (fin) + { + LSQ_INFO("decoder stream is closed"); + qeh->qeh_conn->cn_if->ci_abort_error(qeh->qeh_conn, 1, + HEC_CLOSED_CRITICAL_STREAM, "Peer closed QPACK decoder stream"); + goto end; + } + + offset = lsquic_stream_read_offset(qeh->qeh_dec_sm_in); + s = lsqpack_enc_decoder_in(&qeh->qeh_encoder, buf, sz); + if (s != 0) + { + LSQ_INFO("error reading decoder stream"); + qeh->qeh_conn->cn_if->ci_abort_error(qeh->qeh_conn, 1, + HEC_QPACK_DECODER_STREAM_ERROR, "Error interpreting QPACK decoder " + "stream at offset %"PRIu64, offset); + goto end; + } + LSQ_DEBUG("successfully fed %zu bytes to QPACK decoder", sz); + + end: + return sz; +} + + +static void +qeh_in_on_read (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + struct qpack_enc_hdl *const qeh = (void *) ctx; + ssize_t nread; + + nread = lsquic_stream_readf(stream, qeh_read_decoder_stream, qeh); + if (nread <= 0) + { + if (nread < 0) + { + LSQ_WARN("cannot read from decoder stream: %s", strerror(errno)); + qeh->qeh_conn->cn_if->ci_internal_error(qeh->qeh_conn, + "cannot read from decoder stream"); + } + else + { + LSQ_INFO("decoder stream closed by peer: abort connection"); + qeh->qeh_conn->cn_if->ci_abort_error(qeh->qeh_conn, 1, + HEC_CLOSED_CRITICAL_STREAM, "decoder stream closed"); + } + lsquic_stream_wantread(stream, 0); + } +} + + +static void +qeh_in_on_close (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + struct qpack_enc_hdl *const qeh = (void *) ctx; + LSQ_DEBUG("closed incoming decoder stream"); + qeh->qeh_dec_sm_in = NULL; +} + + +static void +qeh_in_on_write (struct lsquic_stream *stream, lsquic_stream_ctx_t *ctx) +{ + assert(0); +} + + +static const struct lsquic_stream_if qeh_dec_sm_in_if = +{ + .on_new_stream = qeh_in_on_new, + .on_read = qeh_in_on_read, + .on_write = qeh_in_on_write, + .on_close = qeh_in_on_close, +}; +const struct lsquic_stream_if *const lsquic_qeh_dec_sm_in_if = + &qeh_dec_sm_in_if; + + +static void +qeh_maybe_set_user_agent (struct qpack_enc_hdl *qeh, + const struct lsquic_http_headers *headers) +{ + const char *const name = qeh->qeh_exp_rec->qer_flags & QER_SERVER ? + "server" : "user-agent"; + const size_t len = qeh->qeh_exp_rec->qer_flags & QER_SERVER ? 6 : 10; + int i; + + for (i = 0; i < headers->count; ++i) + if (len == headers->headers[i].name_len + && 0 == memcmp(name, + lsxpack_header_get_name(&headers->headers[i]), len)) + { + qeh->qeh_exp_rec->qer_user_agent = strndup( + lsxpack_header_get_value(&headers->headers[i]), + headers->headers[i].val_len); + break; + } +} + + +static enum qwh_status +qeh_write_headers (struct qpack_enc_hdl *qeh, lsquic_stream_id_t stream_id, + unsigned seqno, const struct lsquic_http_headers *headers, + unsigned char *buf, size_t *prefix_sz, size_t *headers_sz, + uint64_t *completion_offset, enum lsqpack_enc_header_flags *hflags) +{ + unsigned char *p = buf; + unsigned char *const end = buf + *headers_sz; + const unsigned char *enc_p; + size_t enc_sz, hea_sz, total_enc_sz; + ssize_t nw; + enum lsqpack_enc_status st; + int i, s, write_to_stream; + enum lsqpack_enc_flags enc_flags; + enum qwh_status retval; +#ifndef WIN32 + unsigned char enc_buf[ qeh->qeh_encoder.qpe_cur_max_capacity * 2 ]; +#else + unsigned char *enc_buf; + enc_buf = _malloca(qeh->qeh_encoder.qpe_cur_max_capacity * 2); + if (!enc_buf) + return QWH_ERR; +#endif + + if (qeh->qeh_exp_rec) + { + const lsquic_time_t now = lsquic_time_now(); + if (qeh->qeh_exp_rec->qer_hblock_count == 0) + qeh->qeh_exp_rec->qer_first_req = now; + qeh->qeh_exp_rec->qer_last_req = now; + ++qeh->qeh_exp_rec->qer_hblock_count; + if (!qeh->qeh_exp_rec->qer_user_agent) + qeh_maybe_set_user_agent(qeh, headers); + } + + s = lsqpack_enc_start_header(&qeh->qeh_encoder, stream_id, 0); + if (s != 0) + { + LSQ_WARN("cannot start header"); + retval = QWH_ERR; + goto end; + } + LSQ_DEBUG("begin encoding headers for stream %"PRIu64, stream_id); + + if (qeh->qeh_enc_sm_out) + enc_flags = 0; + else + { + enc_flags = LQEF_NO_INDEX; + LSQ_DEBUG("encoder stream is unavailable, won't index headers"); + } + write_to_stream = qeh->qeh_enc_sm_out + && lsquic_frab_list_empty(&qeh->qeh_fral); + total_enc_sz = 0; + for (i = 0; i < headers->count; ++i) + { + if (headers->headers[i].buf == NULL) + continue; + enc_sz = qeh->qeh_encoder.qpe_cur_max_capacity * 2; + hea_sz = end - p; + st = lsqpack_enc_encode(&qeh->qeh_encoder, enc_buf, &enc_sz, p, + &hea_sz, &headers->headers[i], enc_flags); + switch (st) + { + case LQES_OK: + LSQ_DEBUG("encoded `%.*s': `%.*s' -- %zd bytes to header block, " + "%zd bytes to encoder stream", + (int) headers->headers[i].name_len, + lsxpack_header_get_name(&headers->headers[i]), + (int) headers->headers[i].val_len, + lsxpack_header_get_value(&headers->headers[i]), + hea_sz, enc_sz); + total_enc_sz += enc_sz; + p += hea_sz; + if (enc_sz) + { + if (write_to_stream) + { + nw = lsquic_stream_write(qeh->qeh_enc_sm_out, enc_buf, enc_sz); + if ((size_t) nw == enc_sz) + break; + if (nw < 0) + { + LSQ_INFO("could not write to encoder stream: %s", + strerror(errno)); + retval = QWH_ERR; + goto end; + } + write_to_stream = 0; + enc_p = enc_buf + (size_t) nw; + enc_sz -= (size_t) nw; + } + else + enc_p = enc_buf; + if (0 != lsquic_frab_list_write(&qeh->qeh_fral, enc_p, enc_sz)) + { + LSQ_INFO("could not write to frab list"); + retval = QWH_ERR; + goto end; + } + } + break; + case LQES_NOBUF_HEAD: + retval = QWH_ENOBUF; + goto end; + default: + assert(0); + retval = QWH_ERR; + goto end; + case LQES_NOBUF_ENC: + LSQ_DEBUG("not enough room to write encoder stream data"); + retval = QWH_ERR; + goto end; + } + } + + nw = lsqpack_enc_end_header(&qeh->qeh_encoder, buf - *prefix_sz, + *prefix_sz, hflags); + if (nw <= 0) + { + LSQ_WARN("could not end header: %zd", nw); + retval = QWH_ERR; + goto end; + } + + if ((size_t) nw < *prefix_sz) + { + memmove(buf - nw, buf - *prefix_sz, (size_t) nw); + *prefix_sz = (size_t) nw; + } + *headers_sz = p - buf; + if (qeh->qeh_exp_rec) + qeh->qeh_exp_rec->qer_hblock_size += p - buf; + if (lsquic_frab_list_empty(&qeh->qeh_fral)) + { + LSQ_DEBUG("all %zd bytes of encoder stream written out; header block " + "is %zd bytes; estimated compression ratio %.3f", total_enc_sz, + *headers_sz, lsqpack_enc_ratio(&qeh->qeh_encoder)); + retval = QWH_FULL; + goto end; + } + else + { + *completion_offset = lsquic_qeh_enc_off(qeh) + + lsquic_frab_list_size(&qeh->qeh_fral); + LSQ_DEBUG("not all %zd bytes of encoder stream written out; %zd bytes " + "buffered; header block is %zd bytes; estimated compression ratio " + "%.3f", total_enc_sz, lsquic_frab_list_size(&qeh->qeh_fral), + *headers_sz, lsqpack_enc_ratio(&qeh->qeh_encoder)); + retval = QWH_PARTIAL; + lsquic_stream_wantwrite(qeh->qeh_enc_sm_out, 1); + goto end; + } + + end: +#ifdef WIN32 + _freea(enc_buf); +#endif + return retval; +} + + +#if !defined(NDEBUG) && __GNUC__ +__attribute__((weak)) +#endif +enum qwh_status +lsquic_qeh_write_headers (struct qpack_enc_hdl *qeh, + lsquic_stream_id_t stream_id, unsigned seqno, + const struct lsquic_http_headers *headers, unsigned char *buf, + size_t *prefix_sz, size_t *headers_sz, uint64_t *completion_offset, + enum lsqpack_enc_header_flags *hflags) +{ + if (qeh->qeh_flags & QEH_INITIALIZED) + return qeh_write_headers(qeh, stream_id, seqno, headers, buf, + prefix_sz, headers_sz, completion_offset, hflags); + else + return QWH_ERR; +} + + +#if !defined(NDEBUG) && __GNUC__ +__attribute__((weak)) +#endif +uint64_t +lsquic_qeh_enc_off (struct qpack_enc_hdl *qeh) +{ + if (qeh->qeh_enc_sm_out) + return qeh->qeh_enc_sm_out->tosend_off; + else + return 0; +} + + +size_t +lsquic_qeh_write_avail (struct qpack_enc_hdl *qeh) +{ + if ((qeh->qeh_flags & QEH_INITIALIZED) && qeh->qeh_enc_sm_out) + return lsquic_stream_write_avail(qeh->qeh_enc_sm_out); + else if (qeh->qeh_flags & QEH_INITIALIZED) + return ~((size_t) 0); /* Unlimited write */ + else + return 0; +} + + +size_t +lsquic_qeh_max_prefix_size (const struct qpack_enc_hdl *qeh) +{ + if (qeh->qeh_flags & QEH_HAVE_SETTINGS) + return qeh->qeh_max_prefix_size; + else + return LSQPACK_UINT64_ENC_SZ * 2; +} diff --git a/external/lsquic/src/liblsquic/lsquic_qenc_hdl.h b/external/lsquic/src/liblsquic/lsquic_qenc_hdl.h new file mode 100644 index 0000000..c9f96b2 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_qenc_hdl.h @@ -0,0 +1,82 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_qenc_hdl.h -- QPACK encoder streams handler + * + * The handler owns two unidirectional streams: a) locally-initiated QPACK + * encoder stream, to which it writes; and b) peer-initiated QPACK decoder + * stream, from which it reads. + */ + +#ifndef LSQUIC_QENC_HDL_H +#define LSQUIC_QENC_HDL_H 1 + +struct lsquic_conn; +struct lsquic_stream; +struct lsquic_stream_if; +struct qpack_exp_record; + +struct qpack_enc_hdl +{ + struct lsquic_conn *qeh_conn; + enum { + QEH_INITIALIZED = 1 << 0, + QEH_HAVE_SETTINGS = 1 << 1, + } qeh_flags; + unsigned qeh_max_prefix_size; + struct lsqpack_enc qeh_encoder; + struct lsquic_stream *qeh_enc_sm_out; + struct frab_list qeh_fral; + struct lsquic_stream *qeh_dec_sm_in; + struct qpack_exp_record *qeh_exp_rec; + size_t qeh_tsu_sz; + unsigned char qeh_tsu_buf[LSQPACK_LONGEST_SDTC]; +}; + +void +lsquic_qeh_init (struct qpack_enc_hdl *, struct lsquic_conn *); + +int +lsquic_qeh_settings (struct qpack_enc_hdl *, unsigned max_table_size, + unsigned dyn_table_size, unsigned max_risked_streams, int server); + +void +lsquic_qeh_cleanup (struct qpack_enc_hdl *); + +static inline unsigned +lsquic_qeh_has_dec_stream (const struct qpack_enc_hdl *qeh) +{ + return qeh->qeh_dec_sm_in != NULL; +} + +enum qwh_status { + QWH_FULL, /* All bytes written to encoder stream. This is also returned + * if there were no bytes to write. + */ + QWH_PARTIAL,/* Not all bytes are written to the encoder stream. In this + * case, `completion_offset' is set to the value of the + * encoder stream offset when the necessary bytes will have + * been written. + */ + QWH_ENOBUF, /* Not enough room in `buf' to write the full header block */ + QWH_ERR, /* Some other error */ +}; + +enum qwh_status +lsquic_qeh_write_headers (struct qpack_enc_hdl *, lsquic_stream_id_t stream_id, + unsigned seqno, const struct lsquic_http_headers *, unsigned char *buf, + size_t *prefix_sz, size_t *headers_sz, uint64_t *completion_offset, + enum lsqpack_enc_header_flags *hflags); + +uint64_t +lsquic_qeh_enc_off (struct qpack_enc_hdl *); + +size_t +lsquic_qeh_write_avail (struct qpack_enc_hdl *); + +size_t +lsquic_qeh_max_prefix_size (const struct qpack_enc_hdl *); + +extern const struct lsquic_stream_if *const lsquic_qeh_enc_sm_out_if; +extern const struct lsquic_stream_if *const lsquic_qeh_dec_sm_in_if; + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_qlog.c b/external/lsquic/src/liblsquic/lsquic_qlog.c new file mode 100644 index 0000000..cde7b53 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_qlog.c @@ -0,0 +1,266 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#include +#ifdef WIN32 +#include +#else +#include +#include +#include +#include +#endif + +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_util.h" +#include "lsquic_qlog.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_QLOG +#include "lsquic_logger.h" + +#define LSQUIC_LOG_CONN_ID cid +#define LCID(...) LSQ_LOG2(LSQ_LOG_DEBUG, __VA_ARGS__) + +#define MAX_IP_LEN INET6_ADDRSTRLEN +#define QLOG_PACKET_RAW_SZ 64 + + +void +lsquic_qlog_create_connection (const lsquic_cid_t* cid, + const struct sockaddr *local_sa, + const struct sockaddr *peer_sa) +{ + uint32_t ip_version, srcport, dstport; + struct sockaddr_in *local4, *peer4; + struct sockaddr_in6 *local6, *peer6; + char srcip[MAX_IP_LEN], dstip[MAX_IP_LEN]; + + if (!local_sa || !peer_sa) + return; + + if (local_sa->sa_family == AF_INET) + { + ip_version = 4; + local4 = (struct sockaddr_in *)local_sa; + peer4 = (struct sockaddr_in *)peer_sa; + srcport = ntohs(local4->sin_port); + dstport = ntohs(peer4->sin_port); + inet_ntop(local4->sin_family, &local4->sin_addr, srcip, MAX_IP_LEN); + inet_ntop(peer4->sin_family, &peer4->sin_addr, dstip, MAX_IP_LEN); + } + else if (local_sa->sa_family == AF_INET6) + { + ip_version = 6; + local6 = (struct sockaddr_in6 *)local_sa; + peer6 = (struct sockaddr_in6 *)peer_sa; + srcport = ntohs(local6->sin6_port); + dstport = ntohs(peer6->sin6_port); + inet_ntop(local6->sin6_family, &local6->sin6_addr, srcip, MAX_IP_LEN); + inet_ntop(peer6->sin6_family, &peer6->sin6_addr, dstip, MAX_IP_LEN); + } + else + return; + + LCID("[%" PRIu64 ",\"CONNECTIVITY\",\"NEW_CONNECTION\",\"LINE\"," + "{" + "\"ip_version\":\"%u\"," + "\"srcip\":\"%s\"," + "\"dstip\":\"%s\"," + "\"srcport\":\"%u\"," + "\"dstport\":\"%u\"" + "}]", + lsquic_time_now(), ip_version, srcip, dstip, srcport, dstport); +} + + +#define QLOG_FRAME_DICT_PREFIX_COMMA ",{\"frame_type\":\"" +#define QLOG_FRAME_DICT_PREFIX "{\"frame_type\":\"" +#define QLOG_FRAME_DICT_SUFFIX "\"}" +#define QLOG_FRAME_LIST_PREFIX ",\"frames\":[" +#define QLOG_FRAME_LIST_SUFFIX "]" +#define QLOG_FRAME_LIST_MAX \ + sizeof(QLOG_FRAME_LIST_PREFIX) + \ + sizeof(QLOG_FRAME_LIST_SUFFIX) + \ + lsquic_frame_types_str_sz + \ + (N_QUIC_FRAMES * \ + (sizeof(QLOG_FRAME_DICT_PREFIX_COMMA) + \ + sizeof(QLOG_FRAME_DICT_SUFFIX))) + +void +lsquic_qlog_packet_rx (const lsquic_cid_t* cid, + const struct lsquic_packet_in *packet_in, + const unsigned char *packet_in_data, + size_t packet_in_size) +{ + int i, first, ret; + unsigned cur; + size_t raw_bytes_written; + char data[QLOG_PACKET_RAW_SZ]; + char frame_list[QLOG_FRAME_LIST_MAX + 1]; + + if (!packet_in || !packet_in_data) + return; + + if (packet_in->pi_frame_types) + { + memcpy(frame_list, QLOG_FRAME_LIST_PREFIX, + sizeof(QLOG_FRAME_LIST_PREFIX)); + cur = sizeof(QLOG_FRAME_LIST_PREFIX) - 1; + for (i = 0, first = 0; i < N_QUIC_FRAMES; i++) + if (packet_in->pi_frame_types & (1 << i)) + { + ret = snprintf(frame_list + cur, + QLOG_FRAME_LIST_MAX - cur, + /* prefix + FRAME_NAME + suffix */ + "%s%s%s", + /* skip comma in prefix if first frame */ + (first++ ? + QLOG_FRAME_DICT_PREFIX_COMMA : + QLOG_FRAME_DICT_PREFIX), + QUIC_FRAME_NAME(i), + QLOG_FRAME_DICT_SUFFIX); + if (ret < 0 || (unsigned)ret > QLOG_FRAME_LIST_MAX - cur) + break; + cur += ret; + } + if (cur + sizeof(QLOG_FRAME_LIST_SUFFIX) <= QLOG_FRAME_LIST_MAX) + memcpy(frame_list + cur, QLOG_FRAME_LIST_SUFFIX, + sizeof(QLOG_FRAME_LIST_SUFFIX)); + } + else + frame_list[0] = '\0'; + + raw_bytes_written = lsquic_hex_encode(packet_in_data, packet_in_size, + data, QLOG_PACKET_RAW_SZ); + + LCID("[%" PRIu64 ",\"TRANSPORT\",\"PACKET_RX\",\"LINE\"," + "{" + "\"raw\":\"%s%s\"," + "\"header\":{" + "\"type\":\"%s\"," + "\"payload_length\":\"%d\"," + "\"packet_number\":\"%" PRIu64 "\"" + "}%s" + "}]", + packet_in->pi_received, + data, (raw_bytes_written < packet_in_size) ? "..." : "", + lsquic_hety2str[packet_in->pi_header_type], + packet_in->pi_data_sz, + packet_in->pi_packno, + frame_list); +} + + +void +lsquic_qlog_hsk_completed (const lsquic_cid_t* cid) +{ + LCID("[%" PRIu64 ",\"CONNECTIVITY\",\"HANDSHAKE\",\"PACKET_RX\"," + "{\"status\":\"complete\"}]", lsquic_time_now()); +} + + +void +lsquic_qlog_sess_resume (const lsquic_cid_t* cid) +{ + LCID("[%" PRIu64 ",\"RECOVERY\",\"RTT_UPDATE\",\"PACKET_RX\"," + "{\"zero_rtt\":\"successful\"}]", lsquic_time_now()); +} + + +void +lsquic_qlog_check_certs (const lsquic_cid_t* cid, const lsquic_str_t **certs, + size_t count) +{ + size_t i; + size_t buf_sz = 0; + char *buf = NULL; + char *new_buf; + + for (i = 0; i < count; i++) + { + if (buf_sz < (lsquic_str_len(certs[i]) * 2) + 1) + { + buf_sz = (lsquic_str_len(certs[i]) * 2) + 1; + new_buf = realloc(buf, buf_sz); + if (!new_buf) + break; + buf = new_buf; + } + lsquic_hex_encode(lsquic_str_cstr(certs[i]), lsquic_str_len(certs[i]), + buf, buf_sz); + LCID("[%" PRIu64 ",\"SECURITY\",\"CHECK_CERT\",\"CERTLOG\"," + "{\"certificate\":\"%s\"}]", lsquic_time_now(), buf); + } + if (buf) + free(buf); +} + + +void +lsquic_qlog_cert_chain (const lsquic_cid_t* cid, struct stack_st_X509 *chain) +{ + X509 *cert; + unsigned i; + unsigned char *buf; + char *hexbuf, *newbuf; + size_t hexbuf_sz; + int len; + lsquic_time_t now; + + now = lsquic_time_now(); + hexbuf = NULL; + hexbuf_sz = 0; + for (i = 0; i < sk_X509_num(chain); ++i) + { + cert = sk_X509_value(chain, i); + buf = NULL; + len = i2d_X509(cert, &buf); + if (len <= 0) + break; + if ((size_t) len * 2 + 1 > hexbuf_sz) + { + hexbuf_sz = len * 2 + 1; + newbuf = realloc(hexbuf, hexbuf_sz); + if (!newbuf) + break; + hexbuf = newbuf; + } + lsquic_hexstr(buf, (size_t) len, hexbuf, hexbuf_sz); + LCID("[%" PRIu64 ",\"SECURITY\",\"CHECK_CERT\",\"CERTLOG\"," + "{\"certificate\":\"%s\"}]", now, hexbuf); + OPENSSL_free(buf); + } + + if (hexbuf) + free(hexbuf); +} + + +void +lsquic_qlog_version_negotiation (const lsquic_cid_t* cid, + const char *action, const char *ver) +{ + char *trig; + + if (!action || !ver) + return; + if (strcmp(action, "proposed") == 0) + trig = "LINE"; + else if (strcmp(action, "supports") == 0 || strcmp(action, "agreed") == 0) + trig = "PACKET_RX"; + else + return; + LCID("[%" PRIu64 ",\"CONNECTIVITY\",\"VERNEG\",\"%s\"," + "{\"%s_version\":\"%s\"}]", lsquic_time_now(), trig, action, ver); +} diff --git a/external/lsquic/src/liblsquic/lsquic_qlog.h b/external/lsquic/src/liblsquic/lsquic_qlog.h new file mode 100644 index 0000000..60aacd4 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_qlog.h @@ -0,0 +1,94 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_qlog.h -- QLOG Event logger + */ + +#ifndef LSQUIC_QLOG_H +#define LSQUIC_QLOG_H 1 + +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_str.h" + +struct stack_st_X509; + +/* +EventCategory + CONNECTIVITY + SECURITY + TRANSPORT + RECOVERY + +EventType + CONNECTIVITY + NEW_CONNECTION ++ VERNEG ++ HANDSHAKE + SECURITY ++ CHECK_CERT + KEY_UPDATE + TRANSPORT ++ PACKET_RX + STREAM_NEW + ACK_NEW + MAXDATA_NEW + MAXSTREAMDATA_NEW + RECOVERY + LOSS_DETECTION_ARMED + LOSS_DETECTION_POSTPONED + LOSS_DETECTION_TRIGGERED + BYTES_IN_FLIGHT_UPDATE + CWND_UPDATE + RTT_UPDATE + +EventTrigger + CONNECTIVITY + LINE ++ PACKET_RX + SECURITY ++ CERTLOG + KEYLOG + TRANSPORT + LINE + PACKET_TX + PACKET_RX + RECOVERY + ACK_RX + PACKET_RX + UNKNOWN + +EventData + EventNewConnection + EventKeyUpdate + EventPacketRX +*/ + +void +lsquic_qlog_create_connection (const lsquic_cid_t *, const struct sockaddr *, + const struct sockaddr *); + +void +lsquic_qlog_packet_rx (const lsquic_cid_t * cid, const struct lsquic_packet_in *, + const unsigned char *, size_t); + +#define QLOG_PACKET_RX(...) do { \ + if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_QLOG)) \ + lsquic_qlog_packet_rx(__VA_ARGS__); \ +} while (0) + +void +lsquic_qlog_hsk_completed (const lsquic_cid_t *); + +void +lsquic_qlog_sess_resume (const lsquic_cid_t *); + +void +lsquic_qlog_check_certs (const lsquic_cid_t *, const lsquic_str_t **, size_t); + +void +lsquic_qlog_cert_chain (const lsquic_cid_t *, struct stack_st_X509 *); + +void +lsquic_qlog_version_negotiation (const lsquic_cid_t *, const char *, const char *); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_qpack_dec_logger.h b/external/lsquic/src/liblsquic/lsquic_qpack_dec_logger.h new file mode 100644 index 0000000..0add551 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_qpack_dec_logger.h @@ -0,0 +1,19 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* This header file is included into lsqpack.c */ + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" + +#undef LSQUIC_LOGGER_MODULE +#undef LSQUIC_LOG_CONN_ID + +#define LSQUIC_LOGGER_MODULE LSQLM_QPACK_DEC +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(dec->qpd_logger_ctx) +#include "lsquic_logger.h" + +#define D_DEBUG LSQ_DEBUG +#define D_INFO LSQ_INFO +#define D_WARN LSQ_WARN +#define D_ERROR LSQ_ERROR diff --git a/external/lsquic/src/liblsquic/lsquic_qpack_enc_logger.h b/external/lsquic/src/liblsquic/lsquic_qpack_enc_logger.h new file mode 100644 index 0000000..ff4d48e --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_qpack_enc_logger.h @@ -0,0 +1,16 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* This header file is included into lsqpack.c */ + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_QPACK_ENC +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(enc->qpe_logger_ctx) +#include "lsquic_logger.h" + +#define E_DEBUG LSQ_DEBUG +#define E_INFO LSQ_INFO +#define E_WARN LSQ_WARN +#define E_ERROR LSQ_ERROR diff --git a/external/lsquic/src/liblsquic/lsquic_qpack_exp.c b/external/lsquic/src/liblsquic/lsquic_qpack_exp.c new file mode 100644 index 0000000..fae37cc --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_qpack_exp.c @@ -0,0 +1,66 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include + +#include "lsquic_int_types.h" +#include "lsquic_qpack_exp.h" + + +struct qpack_exp_record * +lsquic_qpack_exp_new (void) +{ + return calloc(1, sizeof(struct qpack_exp_record)); +} + + +void +lsquic_qpack_exp_destroy (struct qpack_exp_record *exp) +{ + free(exp->qer_user_agent); + free(exp); +} + + +static const char *const flag2tag[] = { + [QER_SERVER|QER_ENCODER] = "server", + [QER_SERVER|0] = "user-agent", + [0 |QER_ENCODER] = "user-agent", + [0 |0] = "server", +}; + + +int +lsquic_qpack_exp_to_xml (const struct qpack_exp_record *exp, char *buf, + size_t buf_sz) +{ + const char *const tag = flag2tag[exp->qer_flags & (QER_SERVER|QER_ENCODER)]; + + return snprintf(buf, buf_sz, + "" + "%s" + "%"PRIu64"" + "%u" + "%u" + "%u" + "%u" + "%u" + "%u" + "%.3f" + /* We just print unescaped string... */ + "<%s>%s" + "" + , exp->qer_flags & QER_ENCODER ? "encoder" : "decoder" + , (exp->qer_last_req - exp->qer_first_req) / 1000 /* Milliseconds */ + , exp->qer_hblock_count + , exp->qer_hblock_size + , exp->qer_peer_max_size + , exp->qer_used_max_size + , exp->qer_peer_max_blocked + , exp->qer_used_max_blocked + , exp->qer_comp_ratio + , tag + , exp->qer_user_agent ? exp->qer_user_agent : "" + , tag + ); +} diff --git a/external/lsquic/src/liblsquic/lsquic_qpack_exp.h b/external/lsquic/src/liblsquic/lsquic_qpack_exp.h new file mode 100644 index 0000000..235b615 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_qpack_exp.h @@ -0,0 +1,71 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* QPACK Experiment record */ + +#ifndef LSQUIC_QPACK_EXP_H +#define LSQUIC_QPACK_EXP_H + +struct qpack_exp_record +{ + enum { + QER_SERVER = 1 << 0, /* Client or server */ + QER_ENCODER = 1 << 1, /* If not set, this is decoder */ + } qer_flags; + + /* Timestamp of the first request */ + lsquic_time_t qer_first_req; + + /* Timestamp of the last request */ + lsquic_time_t qer_last_req; + + /* Number of header blocks passed through the encoder or the decoder */ + unsigned qer_hblock_count; + + /* Cumulative size of all header blocks processed */ + unsigned qer_hblock_size; + + /* For encoder, the "peer max size" is the maximum size advertised by + * the peer and the "used max size" is the maximum size that our + * encoder ends up using (the value selected by experiment). + * + * For decoder, the "used max size" is the maximum size we advertize + * (selecte by experiment), while the "peer max size" is the size the + * encoder uses as given by the value of the last TSU instruction. + */ + unsigned qer_peer_max_size; + unsigned qer_used_max_size; + + /* For encoder, the "peer max blocked" is the maximum number of blocked + * streams advertised by the peer, while the "used max blocked" is the + * self-imposed limit (selected by experiment). + * + * For decoder, the "used max blocked" is the maximum number of blocked + * streams that we advertised (selected by experiment) and the "peer max + * blocked" is the total number of times a header was blocked. Note + * that the latter does not count the duration of blockage and it may be + * insignificant. For example, a single packet may have header block + * packaged before the required encoder stream update, in which case the + * header block will be blocked and then unblocked immediately. + */ + unsigned qer_peer_max_blocked; + unsigned qer_used_max_blocked; + + /* The compression ratio is taken when experiment concludes via + * lsqpack_enc_ratio() or lsqpack_dec_ratio(). + */ + float qer_comp_ratio; + + /* Either 'Server:' or 'User-Agent:' */ + char *qer_user_agent; +}; + +struct qpack_exp_record * +lsquic_qpack_exp_new (void); + +void +lsquic_qpack_exp_destroy (struct qpack_exp_record *); + +/* Returns same as snprintf(3) */ +int +lsquic_qpack_exp_to_xml (const struct qpack_exp_record *, char *, size_t); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_qtags.h b/external/lsquic/src/liblsquic/lsquic_qtags.h new file mode 100644 index 0000000..9d3e02c --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_qtags.h @@ -0,0 +1,62 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_QTAGS_H +#define LSQUIC_QTAGS_H 1 + +#define TAG(a, b, c, d) ((uint32_t)(((unsigned) d << 24) + \ + ((unsigned) c << 16) + ((unsigned) b << 8) + (unsigned) a)) + +#define QTAG_AEAD TAG('A', 'E', 'A', 'D') +#define QTAG_AESG TAG('A', 'E', 'S', 'G') +#define QTAG_C255 TAG('C', '2', '5', '5') +#define QTAG_CCRT TAG('C', 'C', 'R', 'T') +#define QTAG_CCS TAG('C', 'C', 'S', 0 ) +#define QTAG_CFCW TAG('C', 'F', 'C', 'W') +#define QTAG_CHLO TAG('C', 'H', 'L', 'O') +#define QTAG_COPT TAG('C', 'O', 'P', 'T') +#define QTAG_CSCT TAG('C', 'S', 'C', 'T') +#define QTAG_EXPY TAG('E', 'X', 'P', 'Y') +#define QTAG_ICSL TAG('I', 'C', 'S', 'L') +#define QTAG_IRTT TAG('I', 'R', 'T', 'T') +#define QTAG_KEXS TAG('K', 'E', 'X', 'S') +#define QTAG_MIDS TAG('M', 'I', 'D', 'S') +#define QTAG_NONC TAG('N', 'O', 'N', 'C') +#define QTAG_ORBT TAG('O', 'B', 'I', 'T') +#define QTAG_PAD TAG('P', 'A', 'D', 0 ) +#define QTAG_PDMD TAG('P', 'D', 'M', 'D') +#define QTAG_PROF TAG('P', 'R', 'O', 'F') +#define QTAG_PUBS TAG('P', 'U', 'B', 'S') +#define QTAG_RCID TAG('R', 'C', 'I', 'D') +#define QTAG_REJ TAG('R', 'E', 'J', 0 ) +#define QTAG_RREJ TAG('R', 'R', 'E', 'J') +#define QTAG_SCFG TAG('S', 'C', 'F', 'G') +#define QTAG_SCID TAG('S', 'C', 'I', 'D') +#define QTAG_SCLS TAG('S', 'C', 'L', 'S') +#define QTAG_SFCW TAG('S', 'F', 'C', 'W') +#define QTAG_SHLO TAG('S', 'H', 'L', 'O') +#define QTAG_SNI TAG('S', 'N', 'I', 0 ) +#define QTAG_SREJ TAG('S', 'R', 'E', 'J') +#define QTAG_STTL TAG('S', 'T', 'T', 'L') +#define QTAG_TCID TAG('T', 'C', 'I', 'D') +#define QTAG_UAID TAG('U', 'A', 'I', 'D') +#define QTAG_VER TAG('V', 'E', 'R', 0 ) +#define QTAG_X509 TAG('X', '5', '0', '9') +#define QTAG_XLCT TAG('X', 'L', 'C', 'T') +#define QTAG_STK TAG('S', 'T', 'K', '\0') +#define QTAG_SNO TAG('S', 'N', 'O', '\0') +#define QTAG_CRT TAG('C', 'R', 'T', '\xFF') + +/* SMHL: Support SETTINGS_MAX_HEADER_LIST_SIZE. Based on comments in + * Chrome code, this setting frame will be supported by default in + * Q037. + */ +#define QTAG_SMHL TAG('S', 'M', 'H', 'L') + +/* Supported in Q037 and later. If this option is specified in the + * handshake, do not send or process STOP_WINDOW frames. + */ +#define QTAG_NSTP TAG('N', 'S', 'T', 'P') + +/* Stateless reset token. Used in Q044 and later. */ +#define QTAG_SRST TAG('S', 'R', 'S', 'T') + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_rapidhash.h b/external/lsquic/src/liblsquic/lsquic_rapidhash.h new file mode 100755 index 0000000..4a84a5d --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_rapidhash.h @@ -0,0 +1,324 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * rapidhash - Very fast, high quality, platform-independent hashing algorithm. + * Copyright (C) 2024 Nicolas De Carli + * + * Based on 'wyhash', by Wang Yi + * + * BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * You can contact the author at: + * - rapidhash source repository: https://github.com/Nicoshev/rapidhash + */ + +/* + * Includes. + */ +#include +#include +#if defined(_MSC_VER) + #include + #if defined(_M_X64) && !defined(_M_ARM64EC) + #pragma intrinsic(_umul128) + #endif +#endif + +/* + * C++ macros. + * + * RAPIDHASH_INLINE can be overridden to be stronger than a hint, i.e. by adding __attribute__((always_inline)). + */ +#ifdef __cplusplus + #define RAPIDHASH_NOEXCEPT noexcept + #define RAPIDHASH_CONSTEXPR constexpr + #ifndef RAPIDHASH_INLINE + #define RAPIDHASH_INLINE inline + #endif +#else + #define RAPIDHASH_NOEXCEPT + #define RAPIDHASH_CONSTEXPR static const + #ifndef RAPIDHASH_INLINE + #define RAPIDHASH_INLINE static inline + #endif +#endif + +/* + * Protection macro, alters behaviour of rapid_mum multiplication function. + * + * RAPIDHASH_FAST: Normal behavior, max speed. + * RAPIDHASH_PROTECTED: Extra protection against entropy loss. + */ +#ifndef RAPIDHASH_PROTECTED + #define RAPIDHASH_FAST +#elif defined(RAPIDHASH_FAST) + #error "cannot define RAPIDHASH_PROTECTED and RAPIDHASH_FAST simultaneously." +#endif + +/* + * Unrolling macros, changes code definition for main hash function. + * + * RAPIDHASH_COMPACT: Legacy variant, each loop process 48 bytes. + * RAPIDHASH_UNROLLED: Unrolled variant, each loop process 96 bytes. + * + * Most modern CPUs should benefit from having RAPIDHASH_UNROLLED. + * + * These macros do not alter the output hash. + */ +#ifndef RAPIDHASH_COMPACT + #define RAPIDHASH_UNROLLED +#elif defined(RAPIDHASH_UNROLLED) + #error "cannot define RAPIDHASH_COMPACT and RAPIDHASH_UNROLLED simultaneously." +#endif + +/* + * Likely and unlikely macros. + */ +#if defined(__GNUC__) || defined(__INTEL_COMPILER) || defined(__clang__) + #define _likely_(x) __builtin_expect(x,1) + #define _unlikely_(x) __builtin_expect(x,0) +#else + #define _likely_(x) (x) + #define _unlikely_(x) (x) +#endif + +/* + * Endianness macros. + */ +#ifndef RAPIDHASH_LITTLE_ENDIAN + #if defined(_WIN32) || defined(__LITTLE_ENDIAN__) || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) + #define RAPIDHASH_LITTLE_ENDIAN + #elif defined(__BIG_ENDIAN__) || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) + #define RAPIDHASH_BIG_ENDIAN + #else + #warning "could not determine endianness! Falling back to little endian." + #define RAPIDHASH_LITTLE_ENDIAN + #endif +#endif + +/* + * Default seed. + */ +#define RAPID_SEED (0xbdd89aa982704029ull) + +/* + * Default secret parameters. + */ +RAPIDHASH_CONSTEXPR uint64_t rapid_secret[3] = {0x2d358dccaa6c78a5ull, 0x8bb84b93962eacc9ull, 0x4b33a62ed433d4a3ull}; + +/* + * 64*64 -> 128bit multiply function. + * + * @param A Address of 64-bit number. + * @param B Address of 64-bit number. + * + * Calculates 128-bit C = *A * *B. + * + * When RAPIDHASH_FAST is defined: + * Overwrites A contents with C's low 64 bits. + * Overwrites B contents with C's high 64 bits. + * + * When RAPIDHASH_PROTECTED is defined: + * Xors and overwrites A contents with C's low 64 bits. + * Xors and overwrites B contents with C's high 64 bits. + */ +RAPIDHASH_INLINE void rapid_mum(uint64_t *A, uint64_t *B) RAPIDHASH_NOEXCEPT { +#if defined(__SIZEOF_INT128__) + __uint128_t r=*A; r*=*B; + #ifdef RAPIDHASH_PROTECTED + *A^=(uint64_t)r; *B^=(uint64_t)(r>>64); + #else + *A=(uint64_t)r; *B=(uint64_t)(r>>64); + #endif +#elif defined(_MSC_VER) && (defined(_WIN64) || defined(_M_HYBRID_CHPE_ARM64)) + #if defined(_M_X64) + #ifdef RAPIDHASH_PROTECTED + uint64_t a, b; + a=_umul128(*A,*B,&b); + *A^=a; *B^=b; + #else + *A=_umul128(*A,*B,B); + #endif + #else + #ifdef RAPIDHASH_PROTECTED + uint64_t a, b; + b = __umulh(*A, *B); + a = *A * *B; + *A^=a; *B^=b; + #else + uint64_t c = __umulh(*A, *B); + *A = *A * *B; + *B = c; + #endif + #endif +#else + uint64_t ha=*A>>32, hb=*B>>32, la=(uint32_t)*A, lb=(uint32_t)*B, hi, lo; + uint64_t rh=ha*hb, rm0=ha*lb, rm1=hb*la, rl=la*lb, t=rl+(rm0<<32), c=t>32)+(rm1>>32)+c; + #ifdef RAPIDHASH_PROTECTED + *A^=lo; *B^=hi; + #else + *A=lo; *B=hi; + #endif +#endif +} + +/* + * Multiply and xor mix function. + * + * @param A 64-bit number. + * @param B 64-bit number. + * + * Calculates 128-bit C = A * B. + * Returns 64-bit xor between high and low 64 bits of C. + */ +RAPIDHASH_INLINE uint64_t rapid_mix(uint64_t A, uint64_t B) RAPIDHASH_NOEXCEPT { rapid_mum(&A,&B); return A^B; } + +/* + * Read functions. + */ +#ifdef RAPIDHASH_LITTLE_ENDIAN +RAPIDHASH_INLINE uint64_t rapid_read64(const uint8_t *p) RAPIDHASH_NOEXCEPT { uint64_t v; memcpy(&v, p, sizeof(uint64_t)); return v;} +RAPIDHASH_INLINE uint64_t rapid_read32(const uint8_t *p) RAPIDHASH_NOEXCEPT { uint32_t v; memcpy(&v, p, sizeof(uint32_t)); return v;} +#elif defined(__GNUC__) || defined(__INTEL_COMPILER) || defined(__clang__) +RAPIDHASH_INLINE uint64_t rapid_read64(const uint8_t *p) RAPIDHASH_NOEXCEPT { uint64_t v; memcpy(&v, p, sizeof(uint64_t)); return __builtin_bswap64(v);} +RAPIDHASH_INLINE uint64_t rapid_read32(const uint8_t *p) RAPIDHASH_NOEXCEPT { uint32_t v; memcpy(&v, p, sizeof(uint32_t)); return __builtin_bswap32(v);} +#elif defined(_MSC_VER) +RAPIDHASH_INLINE uint64_t rapid_read64(const uint8_t *p) RAPIDHASH_NOEXCEPT { uint64_t v; memcpy(&v, p, sizeof(uint64_t)); return _byteswap_uint64(v);} +RAPIDHASH_INLINE uint64_t rapid_read32(const uint8_t *p) RAPIDHASH_NOEXCEPT { uint32_t v; memcpy(&v, p, sizeof(uint32_t)); return _byteswap_ulong(v);} +#else +RAPIDHASH_INLINE uint64_t rapid_read64(const uint8_t *p) RAPIDHASH_NOEXCEPT { + uint64_t v; memcpy(&v, p, 8); + return (((v >> 56) & 0xff)| ((v >> 40) & 0xff00)| ((v >> 24) & 0xff0000)| ((v >> 8) & 0xff000000)| ((v << 8) & 0xff00000000)| ((v << 24) & 0xff0000000000)| ((v << 40) & 0xff000000000000)| ((v << 56) & 0xff00000000000000)); +} +RAPIDHASH_INLINE uint64_t rapid_read32(const uint8_t *p) RAPIDHASH_NOEXCEPT { + uint32_t v; memcpy(&v, p, 4); + return (((v >> 24) & 0xff)| ((v >> 8) & 0xff00)| ((v << 8) & 0xff0000)| ((v << 24) & 0xff000000)); +} +#endif + +/* + * Reads and combines 3 bytes of input. + * + * @param p Buffer to read from. + * @param k Length of @p, in bytes. + * + * Always reads and combines 3 bytes from memory. + * Guarantees to read each buffer position at least once. + * + * Returns a 64-bit value containing all three bytes read. + */ +RAPIDHASH_INLINE uint64_t rapid_readSmall(const uint8_t *p, size_t k) RAPIDHASH_NOEXCEPT { return (((uint64_t)p[0])<<56)|(((uint64_t)p[k>>1])<<32)|p[k-1];} + +/* + * rapidhash main function. + * + * @param key Buffer to be hashed. + * @param len @key length, in bytes. + * @param seed 64-bit seed used to alter the hash result predictably. + * @param secret Triplet of 64-bit secrets used to alter hash result predictably. + * + * Returns a 64-bit hash. + */ +RAPIDHASH_INLINE uint64_t rapidhash_internal(const void *key, size_t len, uint64_t seed, const uint64_t* secret) RAPIDHASH_NOEXCEPT { + const uint8_t *p=(const uint8_t *)key; seed^=rapid_mix(seed^secret[0],secret[1])^len; uint64_t a, b; + if(_likely_(len<=16)){ + if(_likely_(len>=4)){ + const uint8_t * plast = p + len - 4; + a = (rapid_read32(p) << 32) | rapid_read32(plast); + const uint64_t delta = ((len&24)>>(len>>3)); + b = ((rapid_read32(p + delta) << 32) | rapid_read32(plast - delta)); } + else if(_likely_(len>0)){ a=rapid_readSmall(p,len); b=0;} + else a=b=0; + } + else{ + size_t i=len; + if(_unlikely_(i>48)){ + uint64_t see1=seed, see2=seed; +#ifdef RAPIDHASH_UNROLLED + while(_likely_(i>=96)){ + seed=rapid_mix(rapid_read64(p)^secret[0],rapid_read64(p+8)^seed); + see1=rapid_mix(rapid_read64(p+16)^secret[1],rapid_read64(p+24)^see1); + see2=rapid_mix(rapid_read64(p+32)^secret[2],rapid_read64(p+40)^see2); + seed=rapid_mix(rapid_read64(p+48)^secret[0],rapid_read64(p+56)^seed); + see1=rapid_mix(rapid_read64(p+64)^secret[1],rapid_read64(p+72)^see1); + see2=rapid_mix(rapid_read64(p+80)^secret[2],rapid_read64(p+88)^see2); + p+=96; i-=96; + } + if(_unlikely_(i>=48)){ + seed=rapid_mix(rapid_read64(p)^secret[0],rapid_read64(p+8)^seed); + see1=rapid_mix(rapid_read64(p+16)^secret[1],rapid_read64(p+24)^see1); + see2=rapid_mix(rapid_read64(p+32)^secret[2],rapid_read64(p+40)^see2); + p+=48; i-=48; + } +#else + do { + seed=rapid_mix(rapid_read64(p)^secret[0],rapid_read64(p+8)^seed); + see1=rapid_mix(rapid_read64(p+16)^secret[1],rapid_read64(p+24)^see1); + see2=rapid_mix(rapid_read64(p+32)^secret[2],rapid_read64(p+40)^see2); + p+=48; i-=48; + } while (_likely_(i>=48)); +#endif + seed^=see1^see2; + } + if(i>16){ + seed=rapid_mix(rapid_read64(p)^secret[2],rapid_read64(p+8)^seed^secret[1]); + if(i>32) + seed=rapid_mix(rapid_read64(p+16)^secret[2],rapid_read64(p+24)^seed); + } + a=rapid_read64(p+i-16); b=rapid_read64(p+i-8); + } + a^=secret[1]; b^=seed; rapid_mum(&a,&b); + return rapid_mix(a^secret[0]^len,b^secret[1]); +} + +/* + * rapidhash default seeded hash function. + * + * @param key Buffer to be hashed. + * @param len @key length, in bytes. + * @param seed 64-bit seed used to alter the hash result predictably. + * + * Calls rapidhash_internal using provided parameters and default secrets. + * + * Returns a 64-bit hash. + */ +RAPIDHASH_INLINE uint64_t rapidhash_withSeed(const void *key, size_t len, uint64_t seed) RAPIDHASH_NOEXCEPT { + return rapidhash_internal(key, len, seed, rapid_secret); +} + +/* + * rapidhash default hash function. + * + * @param key Buffer to be hashed. + * @param len @key length, in bytes. + * + * Calls rapidhash_withSeed using provided parameters and the default seed. + * + * Returns a 64-bit hash. + */ +RAPIDHASH_INLINE uint64_t rapidhash(const void *key, size_t len) RAPIDHASH_NOEXCEPT { + return rapidhash_withSeed(key, len, RAPID_SEED); +} diff --git a/external/lsquic/src/liblsquic/lsquic_rechist.c b/external/lsquic/src/liblsquic/lsquic_rechist.c new file mode 100644 index 0000000..fa3e48e --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_rechist.c @@ -0,0 +1,579 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_rechist.c -- History of received packets. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lsquic_int_types.h" +#include "lsquic_rechist.h" + + +#define BITS_PER_MASK (sizeof(uintptr_t) * 8) + +#if UINTPTR_MAX == 18446744073709551615UL +#define LOG2_BITS 6 +#else +#define LOG2_BITS 5 +#endif + + +void +lsquic_rechist_init (struct lsquic_rechist *rechist, int ietf, + unsigned max_ranges) +{ + memset(rechist, 0, sizeof(*rechist)); + rechist->rh_cutoff = ietf ? 0 : 1; + /* '1' is an odd case that would add an extra conditional in + * rechist_reuse_last_elem(), so we prohibit it. + */ + if (max_ranges == 1) + max_ranges = 2; + rechist->rh_max_ranges = max_ranges; +} + + +void +lsquic_rechist_cleanup (lsquic_rechist_t *rechist) +{ + free(rechist->rh_elems); + memset(rechist, 0, sizeof(*rechist)); +} + + +static void +rechist_free_elem (struct lsquic_rechist *rechist, unsigned idx) +{ + rechist->rh_masks[idx >> LOG2_BITS] &= + ~(1ull << (idx & ((1u << LOG2_BITS) - 1))); + --rechist->rh_n_used; +} + + +#define RE_HIGH(el_) ((el_)->re_low + (el_)->re_count - 1) + +#if LSQUIC_TEST +static void +rechist_dump_elem(struct rechist_elem *el) +{ + fprintf(stderr, "[%" PRIu64 "-%" PRIu64 "]", RE_HIGH(el), el->re_low); +} + +#ifdef __GNUC__ +__attribute__((unused)) +#endif +static void +rechist_dump(struct lsquic_rechist *rechist) +{ + fprintf(stderr, + "%p: cutoff %" PRIu64 " l. acked %" PRIu64 + " masks %u alloced %u used %u max ranges %u head %u\n", + rechist, + rechist->rh_cutoff, + rechist->rh_largest_acked_received, + rechist->rh_n_masks, + rechist->rh_n_alloced, + rechist->rh_n_used, + rechist->rh_max_ranges, + rechist->rh_head); + + if (rechist->rh_n_used) + { + int idx = rechist->rh_head; + fprintf(stderr, " "); + unsigned n_elems = 0; + while (n_elems < rechist->rh_n_used) + { + ++n_elems; + struct rechist_elem *el = &rechist->rh_elems[idx]; + fprintf(stderr, " (%u)", idx); + rechist_dump_elem(el); + if (el->re_next == UINT_MAX) + break; + idx = el->re_next; + } + fprintf(stderr, "\n"); + } +} +#endif /* LSQUIC_TEST */ + +static unsigned +find_free_slot (uintptr_t slots) +{ +#if __GNUC__ + if (slots) +#if UINTPTR_MAX == 18446744073709551615UL + return __builtin_ctzll(~slots); +#else + return __builtin_ctzl(~slots); +#endif + else + return 0; +#else + unsigned n; + + slots =~ slots; + n = 0; + +#if UINTPTR_MAX == 18446744073709551615UL + if (0 == (slots & ((1ULL << 32) - 1))) { n += 32; slots >>= 32; } +#endif + if (0 == (slots & ((1ULL << 16) - 1))) { n += 16; slots >>= 16; } + if (0 == (slots & ((1ULL << 8) - 1))) { n += 8; slots >>= 8; } + if (0 == (slots & ((1ULL << 4) - 1))) { n += 4; slots >>= 4; } + if (0 == (slots & ((1ULL << 2) - 1))) { n += 2; slots >>= 2; } + if (0 == (slots & ((1ULL << 1) - 1))) { n += 1; slots >>= 1; } + return n; +#endif +} + + +static int +rechist_grow (struct lsquic_rechist *rechist) +{ + unsigned n_masks, nelems; + size_t size; + ptrdiff_t moff; + char *mem; + + moff = (char *) rechist->rh_masks - (char *) rechist->rh_elems; + if (rechist->rh_n_alloced) + nelems = rechist->rh_n_alloced * 2; + else + nelems = 4; + if (rechist->rh_max_ranges && nelems > rechist->rh_max_ranges) + nelems = rechist->rh_max_ranges; + n_masks = (nelems + (-nelems & (BITS_PER_MASK - 1))) / BITS_PER_MASK; + size = sizeof(struct rechist_elem) * nelems + sizeof(uintptr_t) * n_masks; + mem = realloc(rechist->rh_elems, size); + if (!mem) + return -1; + if (moff) + memcpy(mem + size - n_masks * sizeof(rechist->rh_masks[0]), + (char *) mem + moff, + rechist->rh_n_masks * sizeof(rechist->rh_masks[0])); + if (rechist->rh_n_masks < n_masks) + memset(mem + nelems * sizeof(rechist->rh_elems[0]) + + rechist->rh_n_masks * sizeof(rechist->rh_masks[0]), + 0, (n_masks - rechist->rh_n_masks) * sizeof(rechist->rh_masks[0])); + rechist->rh_n_alloced = nelems; + rechist->rh_n_masks = n_masks; + rechist->rh_elems = (void *) mem; + rechist->rh_masks = (void *) (mem + size + - n_masks * sizeof(rechist->rh_masks[0])); + return 0; +} + + +/* We hit maximum number of elements. To allocate a new element, we drop + * the last element and return its index, reusing the slot. + */ +static int +rechist_reuse_last_elem (struct lsquic_rechist *rechist) +{ + struct rechist_elem *last, *penultimate; + unsigned last_idx; + + /* No need to check bitmask anywhere: the array is full! */ + last = rechist->rh_elems; + while (last->re_next != UINT_MAX) + ++last; + + last_idx = last - rechist->rh_elems; + penultimate = rechist->rh_elems; + while (penultimate->re_next != last_idx) + ++penultimate; + + penultimate->re_next = UINT_MAX; + return last_idx; +} + + +static int +rechist_alloc_elem (struct lsquic_rechist *rechist) +{ + unsigned i, idx; + uintptr_t *mask; + + if (rechist->rh_n_used == rechist->rh_n_alloced) + { + if (rechist->rh_max_ranges + && rechist->rh_n_used >= rechist->rh_max_ranges) + return rechist_reuse_last_elem(rechist); + if (0 != rechist_grow(rechist)) + return -1; + } + + for (mask = rechist->rh_masks; *mask == UINTPTR_MAX; ++mask) + ; + + i = mask - rechist->rh_masks; + assert(i < rechist->rh_n_masks); + + idx = find_free_slot(*mask); + *mask |= 1ull << idx; + ++rechist->rh_n_used; + /* Note that re_next is invalid at this point, caller must set it */ + + return idx + i * BITS_PER_MASK; +} + + +#if LSQUIC_TEST +/* When compiled as unit test, run sanity check every 127 operations + * (127 is better than 128, as the latter aligns too well with the + * regular rechist data structure sizes). + */ +static void +rechist_test_sanity (const struct lsquic_rechist *rechist) +{ + const struct rechist_elem *el; + ptrdiff_t idx; + uint64_t *masks; + unsigned n_elems; + + masks = calloc(rechist->rh_n_masks, sizeof(masks[0])); + + n_elems = 0; + if (rechist->rh_n_used) + { + el = &rechist->rh_elems[rechist->rh_head]; + while (1) + { + ++n_elems; + idx = el - rechist->rh_elems; + if (n_elems > rechist->rh_n_alloced + || idx >= rechist->rh_n_alloced) + break; + masks[idx >> LOG2_BITS] |= 1ull << (idx & ((1u << LOG2_BITS) - 1)); + if (el->re_next != UINT_MAX) + el = &rechist->rh_elems[el->re_next]; + else + break; + } + } + + assert(rechist->rh_n_used == n_elems); + assert(0 == memcmp(masks, rechist->rh_masks, + sizeof(masks[0]) * rechist->rh_n_masks)); + free(masks); +} +#define rechist_sanity_check(rechist_) do { \ + rechist_test_sanity(rechist_); \ +} while (0) +#else +#define rechist_sanity_check(rechist) +#endif + + +enum received_st +lsquic_rechist_received (lsquic_rechist_t *rechist, lsquic_packno_t packno, + lsquic_time_t now) +{ + struct rechist_elem *el, *prev; + ptrdiff_t next_idx, prev_idx; + int idx; + + if (rechist->rh_n_used == 0) + goto first_elem; + + if (packno < rechist->rh_cutoff) + return REC_ST_DUP; + + el = &rechist->rh_elems[rechist->rh_head]; + prev = NULL; + + if (packno > RE_HIGH(el)) + rechist->rh_largest_acked_received = now; + + while (1) + { + if (packno > RE_HIGH(el) + 1) + goto insert_before; + if (packno == el->re_low - 1) + { + --el->re_low; + ++el->re_count; + if (el->re_next != UINT_MAX + && el->re_low == RE_HIGH(&rechist->rh_elems[el->re_next]) + 1) + { + rechist_free_elem(rechist, el->re_next); + el->re_count += rechist->rh_elems[el->re_next].re_count; + el->re_low = rechist->rh_elems[el->re_next].re_low; + el->re_next = rechist->rh_elems[el->re_next].re_next; + } + rechist_sanity_check(rechist); + return REC_ST_OK; + } + if (packno == RE_HIGH(el) + 1) + { + ++el->re_count; + rechist_sanity_check(rechist); + return REC_ST_OK; + } + if (packno >= el->re_low && packno <= RE_HIGH(el)) + return REC_ST_DUP; + if (el->re_next == UINT_MAX) + break; /* insert tail */ + prev = el; + el = &rechist->rh_elems[el->re_next]; + } + + if (rechist->rh_max_ranges && rechist->rh_n_used >= rechist->rh_max_ranges) + goto replace_last_el; + prev_idx = el - rechist->rh_elems; + idx = rechist_alloc_elem(rechist); + if (idx < 0) + return REC_ST_ERR; + + rechist->rh_elems[idx].re_low = packno; + rechist->rh_elems[idx].re_count = 1; + rechist->rh_elems[idx].re_next = UINT_MAX; + rechist->rh_elems[prev_idx].re_next = idx; + rechist_sanity_check(rechist); + return REC_ST_OK; + + first_elem: + if (packno < rechist->rh_cutoff) + return REC_ST_ERR; + idx = rechist_alloc_elem(rechist); + if (idx < 0) + return REC_ST_ERR; + + rechist->rh_elems[idx].re_low = packno; + rechist->rh_elems[idx].re_count = 1; + rechist->rh_elems[idx].re_next = UINT_MAX; + rechist->rh_head = idx; + rechist->rh_largest_acked_received = now; + rechist_sanity_check(rechist); + return REC_ST_OK; + + insert_before: + if (el->re_next == UINT_MAX && rechist->rh_max_ranges + && rechist->rh_n_used >= rechist->rh_max_ranges) + goto replace_last_el; + prev_idx = prev - rechist->rh_elems; + next_idx = el - rechist->rh_elems; + idx = rechist_alloc_elem(rechist); + if (idx < 0) + return REC_ST_ERR; + + rechist->rh_elems[idx].re_low = packno; + rechist->rh_elems[idx].re_count = 1; + rechist->rh_elems[idx].re_next = next_idx; + if (next_idx == (ptrdiff_t)rechist->rh_head) + rechist->rh_head = idx; + else + rechist->rh_elems[prev_idx].re_next = idx; + + rechist_sanity_check(rechist); + return REC_ST_OK; + + replace_last_el: + /* Special case: replace last element if chopping, because we cannot + * realloc the "prev_idx" hook + */ + assert(el->re_next == UINT_MAX); + el->re_low = packno; + el->re_count = 1; + rechist_sanity_check(rechist); + return REC_ST_OK; +} + + +void +lsquic_rechist_stop_wait (lsquic_rechist_t *rechist, lsquic_packno_t cutoff) +{ + struct rechist_elem *el, *prev; + + if (rechist->rh_flags & RH_CUTOFF_SET) + { + assert(cutoff >= rechist->rh_cutoff); /* Check performed in full_conn */ + if (cutoff <= rechist->rh_cutoff) + return; + } + + rechist->rh_cutoff = cutoff; + rechist->rh_flags |= RH_CUTOFF_SET; + + if (rechist->rh_n_used == 0) + return; + + el = &rechist->rh_elems[rechist->rh_head]; + prev = NULL; + while (1) + { + if (cutoff > RE_HIGH(el)) + { + if (prev) + prev->re_next = UINT_MAX; + break; + } + else if (cutoff > el->re_low) + { + el->re_count = RE_HIGH(el) - cutoff + 1; + el->re_low = cutoff; + if (el->re_next != UINT_MAX) + { + prev = el; + el = &rechist->rh_elems[el->re_next]; + prev->re_next = UINT_MAX; + break; + } + else + goto end; + } + else if (el->re_next == UINT_MAX) + goto end; + prev = el; + el = &rechist->rh_elems[el->re_next]; + } + + assert(el); + while (1) + { + rechist_free_elem(rechist, el - rechist->rh_elems); + if (el->re_next != UINT_MAX) + el = &rechist->rh_elems[el->re_next]; + else + break; + } + + end: + rechist_sanity_check(rechist); +} + + +lsquic_packno_t +lsquic_rechist_largest_packno (const lsquic_rechist_t *rechist) +{ + if (rechist->rh_n_used) + return RE_HIGH(&rechist->rh_elems[rechist->rh_head]); + else + return 0; /* Don't call this function if history is empty */ +} + + +lsquic_packno_t +lsquic_rechist_cutoff (const lsquic_rechist_t *rechist) +{ + if (rechist->rh_flags & RH_CUTOFF_SET) + return rechist->rh_cutoff; + else + return 0; +} + + +lsquic_time_t +lsquic_rechist_largest_recv (const lsquic_rechist_t *rechist) +{ + return rechist->rh_largest_acked_received; +} + + +const struct lsquic_packno_range * +lsquic_rechist_first (lsquic_rechist_t *rechist) +{ + unsigned idx; + + if (rechist->rh_n_used) + { + idx = rechist->rh_head; + rechist->rh_iter.range.low = rechist->rh_elems[idx].re_low; + rechist->rh_iter.range.high = RE_HIGH(&rechist->rh_elems[idx]); + rechist->rh_iter.next = rechist->rh_elems[idx].re_next; + return &rechist->rh_iter.range; + } + else + return NULL; +} + + +const struct lsquic_packno_range * +lsquic_rechist_next (lsquic_rechist_t *rechist) +{ + unsigned idx; + + idx = rechist->rh_iter.next; + if (idx != UINT_MAX) + { + rechist->rh_iter.range.low = rechist->rh_elems[idx].re_low; + rechist->rh_iter.range.high = RE_HIGH(&rechist->rh_elems[idx]); + rechist->rh_iter.next = rechist->rh_elems[idx].re_next; + return &rechist->rh_iter.range; + } + else + return NULL; +} + + +size_t +lsquic_rechist_mem_used (const struct lsquic_rechist *rechist) +{ + return sizeof(*rechist) + + rechist->rh_n_alloced * sizeof(rechist->rh_elems[0]) + + rechist->rh_n_masks * sizeof(rechist->rh_masks[0]); +} + + +const struct lsquic_packno_range * +lsquic_rechist_peek (struct lsquic_rechist *rechist) +{ + if (rechist->rh_n_used) + { + rechist->rh_iter.range.low + = rechist->rh_elems[rechist->rh_head].re_low; + rechist->rh_iter.range.high + = RE_HIGH(&rechist->rh_elems[rechist->rh_head]); + return &rechist->rh_iter.range; + } + else + return NULL; +} + + +int +lsquic_rechist_copy_ranges (struct lsquic_rechist *rechist, void *src_rechist, + const struct lsquic_packno_range * (*first) (void *), + const struct lsquic_packno_range * (*next) (void *)) +{ + const struct lsquic_packno_range *range; + struct rechist_elem *el; + unsigned prev_idx; + int idx; + + /* This function only works if rechist contains no elements */ + assert(rechist->rh_n_used == 0); + + prev_idx = UINT_MAX; + for (range = first(src_rechist); range && + /* Do not overwrite higher-numbered ranges. (Also, logic below + * does not work if rechist_reuse_last_elem() is used.) + */ + (rechist->rh_max_ranges == 0 + || rechist->rh_n_used < rechist->rh_max_ranges); + range = next(src_rechist)) + { + idx = rechist_alloc_elem(rechist); + if (idx < 0) + return -1; + el = &rechist->rh_elems[idx]; + el->re_low = range->low; + el->re_count = range->high - range->low + 1; + el->re_next = UINT_MAX; + if (prev_idx == UINT_MAX) + rechist->rh_head = idx; + else + rechist->rh_elems[prev_idx].re_next = idx; + prev_idx = idx; + } + + return 0; +} diff --git a/external/lsquic/src/liblsquic/lsquic_rechist.h b/external/lsquic/src/liblsquic/lsquic_rechist.h new file mode 100644 index 0000000..e25cff2 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_rechist.h @@ -0,0 +1,97 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_rechist.h -- History of received packets. + * + * The purpose of received packet history is to generate ACK frames. + */ + +#ifndef LSQUIC_RECHIST_H +#define LSQUIC_RECHIST_H 1 + +#ifndef LSQUIC_TEST +#define LSQUIC_TEST 0 +#endif + +/* Structure is exposed to facilitate some manipulations in unit tests. */ +struct rechist_elem { + lsquic_packno_t re_low; + unsigned re_count; + unsigned re_next; /* UINT_MAX means no next element */ +}; + + +struct lsquic_rechist { + /* elems and masks are allocated in contiguous memory */ + struct rechist_elem *rh_elems; + uintptr_t *rh_masks; + lsquic_packno_t rh_cutoff; + lsquic_time_t rh_largest_acked_received; + unsigned rh_n_masks; + unsigned rh_n_alloced; + unsigned rh_n_used; + unsigned rh_head; + unsigned rh_max_ranges; + enum { + RH_CUTOFF_SET = (1 << 0), + } rh_flags; + struct + { + struct lsquic_packno_range range; + unsigned next; + } rh_iter; +}; + +typedef struct lsquic_rechist lsquic_rechist_t; + +void +lsquic_rechist_init (struct lsquic_rechist *, int is_ietf, unsigned max_ranges); + +void +lsquic_rechist_cleanup (struct lsquic_rechist *); + +enum received_st { + REC_ST_OK, + REC_ST_DUP, + REC_ST_ERR, +}; + +enum received_st +lsquic_rechist_received (lsquic_rechist_t *, lsquic_packno_t, + lsquic_time_t now); + +void +lsquic_rechist_stop_wait (lsquic_rechist_t *, lsquic_packno_t); + +const struct lsquic_packno_range * +lsquic_rechist_first (lsquic_rechist_t *); + +const struct lsquic_packno_range * +lsquic_rechist_next (lsquic_rechist_t *); + +lsquic_packno_t +lsquic_rechist_largest_packno (const lsquic_rechist_t *); + +lsquic_packno_t +lsquic_rechist_cutoff (const lsquic_rechist_t *); + +lsquic_time_t +lsquic_rechist_largest_recv (const lsquic_rechist_t *); + +size_t +lsquic_rechist_mem_used (const struct lsquic_rechist *); + +const struct lsquic_packno_range * +lsquic_rechist_peek (struct lsquic_rechist *); + +static inline unsigned +lsquic_rechist_is_empty(const struct lsquic_rechist *rechist_) +{ + return (rechist_)->rh_n_used == 0; +} + +int +lsquic_rechist_copy_ranges (struct lsquic_rechist *, void *rechist_ctx, + const struct lsquic_packno_range * (*first) (void *), + const struct lsquic_packno_range * (*next) (void *)); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_rtt.c b/external/lsquic/src/liblsquic/lsquic_rtt.c new file mode 100644 index 0000000..6cbba5b --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_rtt.c @@ -0,0 +1,44 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_rtt.c -- RTT calculation + */ + +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic_int_types.h" +#include "lsquic_rtt.h" + +/* See RFC 2988 */ + +#define ALPHA_SHIFT 3 /* Alpha is 1/8 */ +#define BETA_SHIFT 2 /* Beta is 1/4 */ + + +void +lsquic_rtt_stats_update (struct lsquic_rtt_stats *stats, + lsquic_time_t send_delta, lsquic_time_t lack_delta) +{ + if (send_delta > lack_delta) + send_delta -= lack_delta; + if (stats->srtt) { + stats->rttvar -= stats->rttvar >> BETA_SHIFT; + // FIXED: subtracting unsigned (the (int) cast gets repromoted to uint64_t + // made abs() irrelevant and allowed overflow. instead cast the difference + // to a signed int64 and use labs() to get abs val. + stats->rttvar += (llabs((int64_t) (send_delta - stats->srtt))) + >> BETA_SHIFT; + stats->srtt -= stats->srtt >> ALPHA_SHIFT; + stats->srtt += send_delta >> ALPHA_SHIFT; + if (send_delta < stats->min_rtt) + stats->min_rtt = send_delta; + } else { + /* First measurement */ + stats->srtt = send_delta; + stats->rttvar = send_delta >> 1; + stats->min_rtt = send_delta; + } +} diff --git a/external/lsquic/src/liblsquic/lsquic_rtt.h b/external/lsquic/src/liblsquic/lsquic_rtt.h new file mode 100644 index 0000000..7039cfa --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_rtt.h @@ -0,0 +1,41 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_rtt.h -- RTT calculation + */ + +#ifndef LSQUIC_RTT_H +#define LSQUIC_RTT_H 1 + + +/* This struct is initialized by setting it to zero */ +struct lsquic_rtt_stats { + lsquic_time_t srtt; + lsquic_time_t rttvar; + lsquic_time_t min_rtt; +}; + + +void +lsquic_rtt_stats_update (struct lsquic_rtt_stats *, lsquic_time_t send_delta, + lsquic_time_t lack_delta); + + +static inline lsquic_time_t +lsquic_rtt_stats_get_srtt (const struct lsquic_rtt_stats *stats) +{ + return (stats)->srtt; +} + +static inline lsquic_time_t +lsquic_rtt_stats_get_rttvar (const struct lsquic_rtt_stats *stats) +{ + return (stats)->rttvar; +} + +static inline lsquic_time_t +lsquic_rtt_stats_get_min_rtt (const struct lsquic_rtt_stats *stats) +{ + return +(stats)->min_rtt; +} + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_send_ctl.c b/external/lsquic/src/liblsquic/lsquic_send_ctl.c new file mode 100644 index 0000000..601c0a3 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_send_ctl.c @@ -0,0 +1,4227 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_send_ctl.c -- Logic for sending and sent packets + */ + +#include +#include +#include +#include +#include +#include + +#include + +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_packet_common.h" +#include "lsquic_alarmset.h" +#include "lsquic_parse.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_packet_resize.h" +#include "lsquic_senhist.h" +#include "lsquic_rtt.h" +#include "lsquic_cubic.h" +#include "lsquic_pacer.h" +#include "lsquic_bw_sampler.h" +#include "lsquic_minmax.h" +#include "lsquic_bbr.h" +#include "lsquic_adaptive_cc.h" +#include "lsquic_util.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_ver_neg.h" +#include "lsquic_ev_log.h" +#include "lsquic_conn.h" +#include "lsquic_send_ctl.h" +#include "lsquic_conn_flow.h" +#include "lsquic_conn_public.h" +#include "lsquic_cong_ctl.h" +#include "lsquic_enc_sess.h" +#include "lsquic_malo.h" +#include "lsquic_attq.h" +#include "lsquic_http1x_if.h" +#include "lsqpack.h" +#include "lsquic_frab_list.h" +#include "lsquic_qdec_hdl.h" +#include "lsquic_crand.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_SENDCTL +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(ctl->sc_conn_pub->lconn) +#include "lsquic_logger.h" + +#if __GNUC__ +# define UNLIKELY(cond) __builtin_expect(cond, 0) +#else +# define UNLIKELY(cond) cond +#endif + +#define MAX_RESUBMITTED_ON_RTO 2 +#define MAX_RTO_BACKOFFS 10 +#define DEFAULT_RETX_DELAY 500000 /* Microseconds */ +#define MAX_RTO_DELAY 60000000 /* Microseconds */ +#define MIN_RTO_DELAY 200000 /* Microseconds */ +#define INITIAL_RTT 333333 /* Microseconds */ +#define N_NACKS_BEFORE_RETX 3 + +#define CGP(ctl) ((struct cong_ctl *) (ctl)->sc_cong_ctl) + +#define packet_out_total_sz(p) \ + lsquic_packet_out_total_sz(ctl->sc_conn_pub->lconn, p) +#define packet_out_sent_sz(p) \ + lsquic_packet_out_sent_sz(ctl->sc_conn_pub->lconn, p) + +enum retx_mode { + RETX_MODE_HANDSHAKE, + RETX_MODE_LOSS, + RETX_MODE_TLP, + RETX_MODE_RTO, +}; + + +static const char *const retx2str[] = { + [RETX_MODE_HANDSHAKE] = "RETX_MODE_HANDSHAKE", + [RETX_MODE_LOSS] = "RETX_MODE_LOSS", + [RETX_MODE_TLP] = "RETX_MODE_TLP", + [RETX_MODE_RTO] = "RETX_MODE_RTO", +}; + +#ifdef NDEBUG +#define MAX_BPQ_COUNT 10 +#else +static unsigned MAX_BPQ_COUNT = 10; +void +lsquic_send_ctl_set_max_bpq_count (unsigned count) { MAX_BPQ_COUNT = count; } +#endif + + +static void +update_for_resending (lsquic_send_ctl_t *ctl, lsquic_packet_out_t *packet_out); + + +enum expire_filter { EXFI_ALL, EXFI_HSK, EXFI_LAST, }; + + +static void +send_ctl_expire (struct lsquic_send_ctl *, enum packnum_space, + enum expire_filter); + +static void +set_retx_alarm (struct lsquic_send_ctl *, enum packnum_space, lsquic_time_t); + +static int +send_ctl_detect_losses (struct lsquic_send_ctl *, enum packnum_space, + lsquic_time_t time); + +static unsigned +send_ctl_retx_bytes_out (const struct lsquic_send_ctl *ctl); + +static unsigned +send_ctl_all_bytes_out (const struct lsquic_send_ctl *ctl); + +static void +send_ctl_reschedule_poison (struct lsquic_send_ctl *ctl); + +static int +send_ctl_can_send_pre_hsk (struct lsquic_send_ctl *ctl); + +static int +send_ctl_can_send (struct lsquic_send_ctl *ctl); + +static int +split_lost_packet (struct lsquic_send_ctl *, struct lsquic_packet_out *const); + +#ifdef NDEBUG +static +#elif __GNUC__ +__attribute__((weak)) +#endif +int +lsquic_send_ctl_schedule_stream_packets_immediately (lsquic_send_ctl_t *ctl) +{ + return !(ctl->sc_flags & SC_BUFFER_STREAM); +} + + +#ifdef NDEBUG +static +#elif __GNUC__ +__attribute__((weak)) +#endif +enum packno_bits +lsquic_send_ctl_guess_packno_bits (lsquic_send_ctl_t *ctl) +{ + return PACKNO_BITS_1; /* This is 2 bytes in both GQUIC and IQUIC */ +} + + +int +lsquic_send_ctl_have_unacked_stream_frames (const lsquic_send_ctl_t *ctl) +{ + const lsquic_packet_out_t *packet_out; + + TAILQ_FOREACH(packet_out, &ctl->sc_unacked_packets[PNS_APP], po_next) + if (0 == (packet_out->po_flags & (PO_LOSS_REC|PO_POISON)) + && (packet_out->po_frame_types & + ((1 << QUIC_FRAME_STREAM) | (1 << QUIC_FRAME_RST_STREAM)))) + return 1; + + return 0; +} + + +static lsquic_packet_out_t * +send_ctl_first_unacked_retx_packet (const struct lsquic_send_ctl *ctl, + enum packnum_space pns) +{ + lsquic_packet_out_t *packet_out; + + TAILQ_FOREACH(packet_out, &ctl->sc_unacked_packets[pns], po_next) + if (0 == (packet_out->po_flags & (PO_LOSS_REC|PO_POISON)) + && (packet_out->po_frame_types & ctl->sc_retx_frames)) + return packet_out; + + return NULL; +} + + +int +lsquic_send_ctl_have_unacked_retx_data (const struct lsquic_send_ctl *ctl) +{ + return lsquic_alarmset_is_set(ctl->sc_alset, AL_RETX_APP) + && send_ctl_first_unacked_retx_packet(ctl, PNS_APP); +} + + +static lsquic_packet_out_t * +send_ctl_last_unacked_retx_packet (const struct lsquic_send_ctl *ctl, + enum packnum_space pns) +{ + lsquic_packet_out_t *packet_out; + TAILQ_FOREACH_REVERSE(packet_out, &ctl->sc_unacked_packets[pns], + lsquic_packets_tailq, po_next) + if (0 == (packet_out->po_flags & (PO_LOSS_REC|PO_POISON)) + && (packet_out->po_frame_types & ctl->sc_retx_frames)) + return packet_out; + return NULL; +} + + +static int +have_unacked_handshake_packets (const lsquic_send_ctl_t *ctl) +{ + const lsquic_packet_out_t *packet_out; + enum packnum_space pns; + + for (pns = ctl->sc_flags & SC_IETF ? PNS_INIT : PNS_APP; pns < N_PNS; ++pns) + TAILQ_FOREACH(packet_out, &ctl->sc_unacked_packets[pns], po_next) + if (packet_out->po_flags & PO_HELLO) + return 1; + return 0; +} + + +static enum retx_mode +get_retx_mode (const lsquic_send_ctl_t *ctl) +{ + if (!(ctl->sc_conn_pub->lconn->cn_flags & LSCONN_HANDSHAKE_DONE) + && have_unacked_handshake_packets(ctl)) + return RETX_MODE_HANDSHAKE; + if (ctl->sc_loss_to) + return RETX_MODE_LOSS; + if (ctl->sc_n_tlp < 2) + return RETX_MODE_TLP; + return RETX_MODE_RTO; +} + + +static lsquic_time_t +get_retx_delay (const struct lsquic_rtt_stats *rtt_stats) +{ + lsquic_time_t srtt, delay; + + srtt = lsquic_rtt_stats_get_srtt(rtt_stats); + if (srtt) + { + delay = srtt + 4 * lsquic_rtt_stats_get_rttvar(rtt_stats); + if (delay < MIN_RTO_DELAY) + delay = MIN_RTO_DELAY; + } + else + delay = DEFAULT_RETX_DELAY; + + return delay; +} + + +static lsquic_time_t +calculate_packet_rto (lsquic_send_ctl_t *ctl); + + +static void +retx_alarm_rings (enum alarm_id al_id, void *ctx, lsquic_time_t expiry, lsquic_time_t now) +{ + lsquic_send_ctl_t *ctl = ctx; + struct lsquic_conn *const lconn = ctl->sc_conn_pub->lconn; + lsquic_packet_out_t *packet_out; + enum packnum_space pns; + enum retx_mode rm; + + pns = al_id - AL_RETX_INIT; + + /* This is a callback -- before it is called, the alarm is unset */ + assert(!lsquic_alarmset_is_set(ctl->sc_alset, AL_RETX_INIT + pns)); + + rm = get_retx_mode(ctl); + LSQ_INFO("%s timeout, mode %s", lsquic_alid2str[al_id], retx2str[rm]); + + switch (rm) + { + case RETX_MODE_HANDSHAKE: + send_ctl_expire(ctl, pns, EXFI_HSK); + /* Do not register cubic loss during handshake */ + break; + case RETX_MODE_LOSS: + send_ctl_detect_losses(ctl, pns, now); + break; + case RETX_MODE_TLP: + ctl->sc_last_rto_time = now; + ++ctl->sc_n_tlp; + send_ctl_expire(ctl, pns, EXFI_LAST); + break; + case RETX_MODE_RTO: + if ((ctl->sc_flags & SC_1RTT_ACKED) + || now - ctl->sc_last_rto_time >= calculate_packet_rto(ctl)) + { + ctl->sc_last_rto_time = now; + ++ctl->sc_n_consec_rtos; + ctl->sc_next_limit = 2; + ctl->sc_ci->cci_timeout(CGP(ctl)); + if (lconn->cn_if->ci_retx_timeout) + lconn->cn_if->ci_retx_timeout(lconn); + } + LSQ_DEBUG("packet RTO is %"PRIu64" (+%"PRIu64") usec, consec RTOs: %d", + expiry, now - expiry, ctl->sc_n_consec_rtos); + send_ctl_expire(ctl, pns, EXFI_ALL); + break; + } + + packet_out = send_ctl_first_unacked_retx_packet(ctl, pns); + if (packet_out) + set_retx_alarm(ctl, pns, now); + lsquic_send_ctl_sanity_check(ctl); +} + + +static lsquic_packno_t +first_packno (const struct lsquic_send_ctl *ctl) +{ + if (ctl->sc_flags & SC_IETF) + return 0; + else + return 1; +} + + +static void +send_ctl_pick_initial_packno (struct lsquic_send_ctl *ctl) +{ +#ifndef NDEBUG + lsquic_packno_t packno; + const char *s; + + if (!(ctl->sc_conn_pub->lconn->cn_flags & LSCONN_SERVER) + && (s = getenv("LSQUIC_STARTING_PACKNO"), s != NULL)) + { + packno = (lsquic_packno_t) strtoull(s, NULL, 10); + LSQ_DEBUG("starting sending packet numbers starting with %"PRIu64 + " based on environment variable", packno); + ctl->sc_cur_packno = packno - 1; + } + else +#endif + ctl->sc_cur_packno = first_packno(ctl) - 1; +} + + +void +lsquic_send_ctl_init (lsquic_send_ctl_t *ctl, struct lsquic_alarmset *alset, + struct lsquic_engine_public *enpub, const struct ver_neg *ver_neg, + struct lsquic_conn_public *conn_pub, enum send_ctl_flags flags) +{ + unsigned i; + memset(ctl, 0, sizeof(*ctl)); + TAILQ_INIT(&ctl->sc_scheduled_packets); + TAILQ_INIT(&ctl->sc_unacked_packets[PNS_INIT]); + TAILQ_INIT(&ctl->sc_unacked_packets[PNS_HSK]); + TAILQ_INIT(&ctl->sc_unacked_packets[PNS_APP]); + TAILQ_INIT(&ctl->sc_lost_packets); + TAILQ_INIT(&ctl->sc_0rtt_stash); + ctl->sc_enpub = enpub; + ctl->sc_alset = alset; + ctl->sc_ver_neg = ver_neg; + ctl->sc_conn_pub = conn_pub; + assert(!(flags & ~(SC_IETF|SC_NSTP|SC_ECN))); + ctl->sc_flags = flags; + send_ctl_pick_initial_packno(ctl); + if (enpub->enp_settings.es_pace_packets) + ctl->sc_flags |= SC_PACE; + if (flags & SC_ECN) + ctl->sc_ecn = ECN_ECT0; + else + ctl->sc_ecn = ECN_NOT_ECT; + if (flags & SC_IETF) + ctl->sc_retx_frames = IQUIC_FRAME_RETX_MASK; + else + ctl->sc_retx_frames = GQUIC_FRAME_RETRANSMITTABLE_MASK; + lsquic_alarmset_init_alarm(alset, AL_RETX_INIT, retx_alarm_rings, ctl); + lsquic_alarmset_init_alarm(alset, AL_RETX_HSK, retx_alarm_rings, ctl); + lsquic_alarmset_init_alarm(alset, AL_RETX_APP, retx_alarm_rings, ctl); + lsquic_senhist_init(&ctl->sc_senhist, ctl->sc_flags & SC_IETF); +#ifndef NDEBUG + /* TODO: the logic to select the "previously sent" packno should not be + * duplicated here and in lsquic_senhist_init()... + */ + if (!(ctl->sc_conn_pub->lconn->cn_flags & LSCONN_SERVER)) + ctl->sc_senhist.sh_last_sent = ctl->sc_cur_packno; +#endif + switch (enpub->enp_settings.es_cc_algo) + { + case 1: + ctl->sc_ci = &lsquic_cong_cubic_if; + ctl->sc_cong_ctl = &ctl->sc_adaptive_cc.acc_cubic; + break; + case 2: + ctl->sc_ci = &lsquic_cong_bbr_if; + ctl->sc_cong_ctl = &ctl->sc_adaptive_cc.acc_bbr; + break; + case 3: + default: + ctl->sc_ci = &lsquic_cong_adaptive_if; + ctl->sc_cong_ctl = &ctl->sc_adaptive_cc; + break; + } + ctl->sc_ci->cci_init(CGP(ctl), conn_pub, ctl->sc_retx_frames); + if (ctl->sc_flags & SC_PACE) + lsquic_pacer_init(&ctl->sc_pacer, conn_pub->lconn, + /* TODO: conn_pub has a pointer to enpub: drop third argument */ + enpub->enp_settings.es_clock_granularity); + for (i = 0; i < sizeof(ctl->sc_buffered_packets) / + sizeof(ctl->sc_buffered_packets[0]); ++i) + TAILQ_INIT(&ctl->sc_buffered_packets[i].bpq_packets); + ctl->sc_max_packno_bits = PACKNO_BITS_2; /* Safe value before verneg */ + ctl->sc_cached_bpt.stream_id = UINT64_MAX; +#if LSQUIC_EXTRA_CHECKS + ctl->sc_flags |= SC_SANITY_CHECK; + LSQ_DEBUG("sanity checks enabled"); +#endif + ctl->sc_gap = UINT64_MAX - 1 /* Can't have +1 == 0 */; + if ((ctl->sc_conn_pub->lconn->cn_flags & (LSCONN_IETF|LSCONN_SERVER)) + == (LSCONN_IETF|LSCONN_SERVER)) + ctl->sc_can_send = send_ctl_can_send_pre_hsk; + else + ctl->sc_can_send = send_ctl_can_send; + ctl->sc_reord_thresh = N_NACKS_BEFORE_RETX; +#if LSQUIC_DEVEL + const char *s; + s = getenv("LSQUIC_DYN_PTHRESH"); + if (s == NULL || atoi(s)) + ctl->sc_flags |= SC_DYN_PTHRESH; +#endif +} + + +static lsquic_time_t +calculate_packet_rto (lsquic_send_ctl_t *ctl) +{ + lsquic_time_t delay; + + delay = get_retx_delay(&ctl->sc_conn_pub->rtt_stats); + + unsigned exp = ctl->sc_n_consec_rtos; + if (exp > MAX_RTO_BACKOFFS) + exp = MAX_RTO_BACKOFFS; + + delay = delay * (1 << exp); + + return delay; +} + + +static lsquic_time_t +calculate_tlp_delay (lsquic_send_ctl_t *ctl) +{ + lsquic_time_t srtt, delay; + + srtt = lsquic_rtt_stats_get_srtt(&ctl->sc_conn_pub->rtt_stats); + if (!srtt) + srtt = INITIAL_RTT; + if (ctl->sc_n_in_flight_all > 1) + delay = 10000; /* 10 ms is the minimum tail loss probe delay */ + else + delay = srtt + srtt / 2 + ctl->sc_conn_pub->max_peer_ack_usec; + if (delay < 2 * srtt) + delay = 2 * srtt; + + return delay; +} + + +static void +set_retx_alarm (struct lsquic_send_ctl *ctl, enum packnum_space pns, + lsquic_time_t now) +{ + enum retx_mode rm; + lsquic_time_t delay; + + assert(!TAILQ_EMPTY(&ctl->sc_unacked_packets[pns])); + + rm = get_retx_mode(ctl); + switch (rm) + { + case RETX_MODE_HANDSHAKE: + /* [draft-iyengar-quic-loss-recovery-01]: + * + * if (handshake packets are outstanding): + * alarm_duration = max(1.5 * smoothed_rtt, 10ms) << handshake_count; + * handshake_count++; + */ + delay = lsquic_rtt_stats_get_srtt(&ctl->sc_conn_pub->rtt_stats); + if (delay) + { + delay += delay / 2; + if (10000 > delay) + delay = 10000; + } + else + delay = 150000; + delay <<= ctl->sc_n_hsk; + ++ctl->sc_n_hsk; + break; + case RETX_MODE_LOSS: + delay = ctl->sc_loss_to; + break; + case RETX_MODE_TLP: + delay = calculate_tlp_delay(ctl); + break; + default: + assert(rm == RETX_MODE_RTO); + /* XXX the comment below as well as the name of the function + * that follows seem obsolete. + */ + /* Base RTO on the first unacked packet, following reference + * implementation. + */ + delay = calculate_packet_rto(ctl); + break; + } + + if (delay > MAX_RTO_DELAY) + delay = MAX_RTO_DELAY; + + LSQ_DEBUG("set RETX_%s alarm to %"PRIu64" (%"PRIu64 + "), mode %s", lsquic_pns2str[pns], + now + delay, delay, retx2str[rm]); + lsquic_alarmset_set(ctl->sc_alset, AL_RETX_INIT + pns, now + delay); + + if (PNS_APP == pns + && ctl->sc_ci == &lsquic_cong_bbr_if + && lsquic_alarmset_is_inited(ctl->sc_alset, AL_PACK_TOL) + && !lsquic_alarmset_is_set(ctl->sc_alset, AL_PACK_TOL)) + lsquic_alarmset_set(ctl->sc_alset, AL_PACK_TOL, now + delay); +} + + +#define SC_PACK_SIZE(ctl_) (+(ctl_)->sc_conn_pub->path->np_pack_size) + +/* XXX can we optimize this by caching the value of this function? It should + * not change within one tick. + */ +static lsquic_time_t +send_ctl_transfer_time (void *ctx) +{ + lsquic_send_ctl_t *const ctl = ctx; + lsquic_time_t tx_time; + uint64_t pacing_rate; + int in_recovery; + + in_recovery = send_ctl_in_recovery(ctl); + pacing_rate = ctl->sc_ci->cci_pacing_rate(CGP(ctl), in_recovery); + if (!pacing_rate) + pacing_rate = 1; + tx_time = (uint64_t) SC_PACK_SIZE(ctl) * 1000000 / pacing_rate; + return tx_time; +} + + +static void +send_ctl_unacked_append (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *packet_out) +{ + enum packnum_space pns; + + pns = lsquic_packet_out_pns(packet_out); + assert(0 == (packet_out->po_flags & (PO_LOSS_REC|PO_POISON))); + TAILQ_INSERT_TAIL(&ctl->sc_unacked_packets[pns], packet_out, po_next); + packet_out->po_flags |= PO_UNACKED; + ctl->sc_bytes_unacked_all += packet_out_sent_sz(packet_out); + ctl->sc_n_in_flight_all += 1; + if (packet_out->po_frame_types & ctl->sc_retx_frames) + { + ctl->sc_bytes_unacked_retx += packet_out_total_sz(packet_out); + ++ctl->sc_n_in_flight_retx; + } +} + + +static void +send_ctl_unacked_remove (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *packet_out, unsigned packet_sz) +{ + enum packnum_space pns; + + pns = lsquic_packet_out_pns(packet_out); + TAILQ_REMOVE(&ctl->sc_unacked_packets[pns], packet_out, po_next); + packet_out->po_flags &= ~PO_UNACKED; + assert(ctl->sc_bytes_unacked_all >= packet_sz); + ctl->sc_bytes_unacked_all -= packet_sz; + ctl->sc_n_in_flight_all -= 1; + if (packet_out->po_frame_types & ctl->sc_retx_frames) + { + ctl->sc_bytes_unacked_retx -= packet_sz; + --ctl->sc_n_in_flight_retx; + } +} + + +static void +send_ctl_sched_Xpend_common (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *packet_out) +{ + packet_out->po_flags |= PO_SCHED; + ++ctl->sc_n_scheduled; + ctl->sc_bytes_scheduled += packet_out_total_sz(packet_out); + lsquic_send_ctl_sanity_check(ctl); +} + + +static void +send_ctl_sched_append (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *packet_out) +{ + TAILQ_INSERT_TAIL(&ctl->sc_scheduled_packets, packet_out, po_next); + send_ctl_sched_Xpend_common(ctl, packet_out); +} + + +static void +send_ctl_sched_prepend (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *packet_out) +{ + TAILQ_INSERT_HEAD(&ctl->sc_scheduled_packets, packet_out, po_next); + send_ctl_sched_Xpend_common(ctl, packet_out); +} + + +static void +send_ctl_sched_remove (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *packet_out) +{ + TAILQ_REMOVE(&ctl->sc_scheduled_packets, packet_out, po_next); + packet_out->po_flags &= ~PO_SCHED; + assert(ctl->sc_n_scheduled); + --ctl->sc_n_scheduled; + ctl->sc_bytes_scheduled -= packet_out_total_sz(packet_out); + lsquic_send_ctl_sanity_check(ctl); +} + + +/* Poisoned packets are used to detect optimistic ACK attacks. We only + * use a single poisoned packet at a time. + */ +static int +send_ctl_add_poison (struct lsquic_send_ctl *ctl) +{ + struct lsquic_packet_out *poison; + + /* XXX Allocating the poison packet out of the regular pool can fail. + * This leads to a lot of error checking that could be skipped if we + * did not have to allocate this packet at all. + */ + poison = lsquic_malo_get(ctl->sc_conn_pub->packet_out_malo); + if (!poison) + return -1; + + memset(poison, 0, sizeof(*poison)); + poison->po_flags = PO_UNACKED|PO_POISON; + poison->po_packno = ctl->sc_gap; + poison->po_loss_chain = poison; /* Won't be used, but just in case */ + TAILQ_INSERT_TAIL(&ctl->sc_unacked_packets[PNS_APP], poison, po_next); + LSQ_DEBUG("insert poisoned packet #%"PRIu64, poison->po_packno); + ctl->sc_flags |= SC_POISON; + return 0; +} + + +static void +send_ctl_reschedule_poison (struct lsquic_send_ctl *ctl) +{ + struct lsquic_packet_out *poison; + enum lsq_log_level log_level; + lsquic_time_t approx_now; + + TAILQ_FOREACH(poison, &ctl->sc_unacked_packets[PNS_APP], po_next) + if (poison->po_flags & PO_POISON) + { + LSQ_DEBUG("remove poisoned packet #%"PRIu64, poison->po_packno); + TAILQ_REMOVE(&ctl->sc_unacked_packets[PNS_APP], poison, po_next); + lsquic_malo_put(poison); + lsquic_send_ctl_begin_optack_detection(ctl); + ctl->sc_flags &= ~SC_POISON; + return; + } + + approx_now = ctl->sc_last_sent_time; + if (0 == ctl->sc_enpub->enp_last_warning[WT_NO_POISON] + || ctl->sc_enpub->enp_last_warning[WT_NO_POISON] + + WARNING_INTERVAL < approx_now) + { + ctl->sc_enpub->enp_last_warning[WT_NO_POISON] = approx_now; + log_level = LSQ_LOG_WARN; + } + else + log_level = LSQ_LOG_DEBUG; + LSQ_LOG(log_level, "odd: poisoned packet #%"PRIu64" not found during " + "reschedule, flag: %d", ctl->sc_gap, !!(ctl->sc_flags & SC_POISON)); +} + + +static int +send_ctl_update_poison_hist (struct lsquic_send_ctl *ctl, + lsquic_packno_t packno) +{ + if (packno == ctl->sc_gap + 1) + { + assert(!(ctl->sc_flags & SC_POISON)); + lsquic_senhist_add(&ctl->sc_senhist, ctl->sc_gap); + if (0 != send_ctl_add_poison(ctl)) + return -1; + } + + return 0; +} + + +void +lsquic_send_ctl_mtu_not_sent (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *packet_out) +{ + (void) /* See comment in send_ctl_add_poison(): the plan is to make + this code path always succeed. */ + send_ctl_update_poison_hist(ctl, packet_out->po_packno); + lsquic_senhist_add(&ctl->sc_senhist, packet_out->po_packno); +} + + +int +lsquic_send_ctl_sent_packet (lsquic_send_ctl_t *ctl, + struct lsquic_packet_out *packet_out) +{ + enum packnum_space pns; + char frames[lsquic_frame_types_str_sz]; + + assert(!(packet_out->po_flags & PO_ENCRYPTED)); + ctl->sc_last_sent_time = packet_out->po_sent; + pns = lsquic_packet_out_pns(packet_out); + if (0 != send_ctl_update_poison_hist(ctl, packet_out->po_packno)) + return -1; + LSQ_DEBUG("sent packet #%"PRIu64" (%s)", + packet_out->po_packno, lsquic_frame_types_to_str(frames, + sizeof(frames), packet_out->po_frame_types)); + lsquic_senhist_add(&ctl->sc_senhist, packet_out->po_packno); + if (ctl->sc_ci->cci_sent) + ctl->sc_ci->cci_sent(CGP(ctl), packet_out, ctl->sc_bytes_unacked_all, + ctl->sc_flags & SC_APP_LIMITED); + send_ctl_unacked_append(ctl, packet_out); + if (packet_out->po_frame_types & ctl->sc_retx_frames) + { + if (!lsquic_alarmset_is_set(ctl->sc_alset, AL_RETX_INIT + pns)) + set_retx_alarm(ctl, pns, packet_out->po_sent); + if (ctl->sc_n_in_flight_retx == 1) + ctl->sc_flags |= SC_WAS_QUIET; + } + /* TODO: Do we really want to use those for RTT info? Revisit this. */ + /* Hold on to packets that are not retransmittable because we need them + * to sample RTT information. They are released when ACK is received. + */ +#if LSQUIC_SEND_STATS + ++ctl->sc_stats.n_total_sent; +#endif + lsquic_send_ctl_sanity_check(ctl); + return 0; +} + + +static void +send_ctl_select_cc (struct lsquic_send_ctl *ctl) +{ + lsquic_time_t srtt; + + srtt = lsquic_rtt_stats_get_srtt(&ctl->sc_conn_pub->rtt_stats); + + if (srtt <= ctl->sc_enpub->enp_settings.es_cc_rtt_thresh) + { + LSQ_INFO("srtt is %"PRIu64" usec, which is smaller than or equal to " + "the threshold of %u usec: select Cubic congestion controller", + srtt, ctl->sc_enpub->enp_settings.es_cc_rtt_thresh); + ctl->sc_ci = &lsquic_cong_cubic_if; + ctl->sc_cong_ctl = &ctl->sc_adaptive_cc.acc_cubic; + ctl->sc_flags |= SC_CLEANUP_BBR; + } + else + { + LSQ_INFO("srtt is %"PRIu64" usec, which is greater than the threshold " + "of %u usec: select BBRv1 congestion controller", srtt, + ctl->sc_enpub->enp_settings.es_cc_rtt_thresh); + ctl->sc_ci = &lsquic_cong_bbr_if; + ctl->sc_cong_ctl = &ctl->sc_adaptive_cc.acc_bbr; + } +} + + +static void +take_rtt_sample (lsquic_send_ctl_t *ctl, + lsquic_time_t now, lsquic_time_t lack_delta) +{ + const lsquic_packno_t packno = ctl->sc_largest_acked_packno; + const lsquic_time_t sent = ctl->sc_largest_acked_sent_time; + const lsquic_time_t measured_rtt = now - sent; + if ((!packno || packno > ctl->sc_max_rtt_packno) && lack_delta < measured_rtt) + { + if (UNLIKELY(ctl->sc_flags & SC_ROUGH_RTT)) + { + memset(&ctl->sc_conn_pub->rtt_stats, 0, + sizeof(ctl->sc_conn_pub->rtt_stats)); + ctl->sc_flags &= ~SC_ROUGH_RTT; + } + ctl->sc_max_rtt_packno = packno; + lsquic_rtt_stats_update(&ctl->sc_conn_pub->rtt_stats, measured_rtt, lack_delta); + LSQ_DEBUG("packno %"PRIu64"; rtt: %"PRIu64"; delta: %"PRIu64"; " + "new srtt: %"PRIu64, packno, measured_rtt, lack_delta, + lsquic_rtt_stats_get_srtt(&ctl->sc_conn_pub->rtt_stats)); + if (ctl->sc_ci == &lsquic_cong_adaptive_if) + send_ctl_select_cc(ctl); + } +} + + +static void +send_ctl_return_enc_data (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *packet_out) +{ + ctl->sc_enpub->enp_pmi->pmi_return(ctl->sc_enpub->enp_pmi_ctx, + packet_out->po_path->np_peer_ctx, + packet_out->po_enc_data, lsquic_packet_out_ipv6(packet_out)); + packet_out->po_flags &= ~PO_ENCRYPTED; + packet_out->po_enc_data = NULL; +} + + +static void +send_ctl_destroy_packet (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *packet_out) +{ + if (0 == (packet_out->po_flags & (PO_LOSS_REC|PO_POISON))) + lsquic_packet_out_destroy(packet_out, ctl->sc_enpub, + packet_out->po_path->np_peer_ctx); + else + lsquic_malo_put(packet_out); +} + + +static void +send_ctl_maybe_renumber_sched_to_right (struct lsquic_send_ctl *ctl, + const struct lsquic_packet_out *cur) +{ + struct lsquic_packet_out *packet_out; + + /* If current packet has PO_REPACKNO set, it means that all those to the + * right of it have this flag set as well. + */ + if (0 == (cur->po_flags & PO_REPACKNO)) + { + ctl->sc_cur_packno = cur->po_packno - 1; + for (packet_out = TAILQ_NEXT(cur, po_next); + packet_out && 0 == (packet_out->po_flags & PO_REPACKNO); + packet_out = TAILQ_NEXT(packet_out, po_next)) + { + packet_out->po_flags |= PO_REPACKNO; + } + } +} + + +static void +send_ctl_process_loss_chain_pkt (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *const chain_cur, + struct lsquic_packet_out **next) +{ + unsigned packet_sz; + const char *state; + enum packnum_space pns; + switch (chain_cur->po_flags & (PO_SCHED|PO_UNACKED|PO_LOST)) + { + case PO_SCHED: + send_ctl_maybe_renumber_sched_to_right(ctl, chain_cur); + send_ctl_sched_remove(ctl, chain_cur); + state = "scheduled"; + break; + case PO_UNACKED: + if (chain_cur->po_flags & PO_LOSS_REC) + { + pns = lsquic_packet_out_pns(chain_cur); + TAILQ_REMOVE(&ctl->sc_unacked_packets[pns], chain_cur, po_next); + state = "loss record"; + } + else + { + packet_sz = packet_out_sent_sz(chain_cur); + send_ctl_unacked_remove(ctl, chain_cur, packet_sz); + state = "unacked"; + } + break; + case PO_LOST: + TAILQ_REMOVE(&ctl->sc_lost_packets, chain_cur, po_next); + state = "lost"; + break; + case 0: + /* This is also weird, but let it pass */ + state = "unknown"; + break; + default: + assert(0); + state = "bad"; + break; + } + if (next && *next == chain_cur) + *next = TAILQ_NEXT(*next, po_next); + if (0 == (chain_cur->po_flags & PO_LOSS_REC)) + lsquic_packet_out_ack_streams(chain_cur); + LSQ_DEBUG("loss chain, destroy %s packet #%"PRIu64, state, + chain_cur->po_packno); + send_ctl_destroy_packet(ctl, chain_cur); +} + + +static void +send_ctl_acked_loss_chain (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *const packet_out, + struct lsquic_packet_out **next, + lsquic_packno_t largest_acked, + signed char *do_rtt) +{ + struct lsquic_packet_out *chain_cur, *chain_next; + unsigned count; + count = 0; + for (chain_cur = packet_out->po_loss_chain; chain_cur != packet_out; + chain_cur = chain_next) + { + chain_next = chain_cur->po_loss_chain; + if (chain_cur->po_packno == largest_acked) + *do_rtt = 1; + send_ctl_process_loss_chain_pkt(ctl, chain_cur, next); + ++count; + } + packet_out->po_loss_chain = packet_out; + + if (count) + LSQ_DEBUG("destroyed %u packet%.*s in chain of packet #%"PRIu64, + count, count != 1, "s", packet_out->po_packno); +} + + +/* The third argument to advance `next' pointer when modifying the unacked + * queue. This is because the unacked queue may contain several elements + * of the same chain. This is not true of the lost and scheduled packet + * queue, as the loss records are only present on the unacked queue. + */ +static void +send_ctl_destroy_chain (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *const packet_out, + struct lsquic_packet_out **next) +{ + struct lsquic_packet_out *chain_cur, *chain_next; + unsigned count; + count = 0; + for (chain_cur = packet_out->po_loss_chain; chain_cur != packet_out; + chain_cur = chain_next) + { + chain_next = chain_cur->po_loss_chain; + send_ctl_process_loss_chain_pkt(ctl, chain_cur, next); + ++count; + } + packet_out->po_loss_chain = packet_out; + + if (count) + LSQ_DEBUG("destroyed %u packet%.*s in chain of packet #%"PRIu64, + count, count != 1, "s", packet_out->po_packno); +} + + +static struct lsquic_packet_out * +send_ctl_record_loss (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *packet_out) +{ + struct lsquic_packet_out *loss_record; + + loss_record = lsquic_malo_get(ctl->sc_conn_pub->packet_out_malo); + if (loss_record) + { + memset(loss_record, 0, sizeof(*loss_record)); + loss_record->po_flags = PO_UNACKED|PO_LOSS_REC|PO_SENT_SZ; + loss_record->po_flags |= + ((packet_out->po_flags >> POPNS_SHIFT) & 3) << POPNS_SHIFT; + /* Copy values used in ACK processing: */ + loss_record->po_packno = packet_out->po_packno; + loss_record->po_sent = packet_out->po_sent; + loss_record->po_sent_sz = packet_out_sent_sz(packet_out); + loss_record->po_frame_types = packet_out->po_frame_types; + /* Insert the loss record into the chain: */ + loss_record->po_loss_chain = packet_out->po_loss_chain; + packet_out->po_loss_chain = loss_record; + /* Place the loss record next to the lost packet we are about to + * remove from the list: + */ + TAILQ_INSERT_BEFORE(packet_out, loss_record, po_next); + return loss_record; + } + else + { + LSQ_INFO("cannot allocate memory for loss record"); + return NULL; + } +} + + +static struct lsquic_packet_out * +send_ctl_handle_regular_lost_packet (struct lsquic_send_ctl *ctl, + lsquic_packet_out_t *packet_out, struct lsquic_packet_out **next) +{ + struct lsquic_packet_out *loss_record; + unsigned packet_sz; + + assert(ctl->sc_n_in_flight_all); + packet_sz = packet_out_sent_sz(packet_out); + + ++ctl->sc_loss_count; +#if LSQUIC_CONN_STATS + ++ctl->sc_conn_pub->conn_stats->out.lost_packets; +#endif + + if (packet_out->po_frame_types & (1 << QUIC_FRAME_ACK)) + { + ctl->sc_flags |= SC_LOST_ACK_INIT << lsquic_packet_out_pns(packet_out); + LSQ_DEBUG("lost ACK in packet #%"PRIu64, packet_out->po_packno); + } + + if (ctl->sc_ci->cci_lost) + ctl->sc_ci->cci_lost(CGP(ctl), packet_out, packet_sz); + + /* This is a client-only check, server check happens in mini conn */ + if (lsquic_send_ctl_ecn_turned_on(ctl) + && 0 == ctl->sc_ecn_total_acked[PNS_INIT] + && HETY_INITIAL == packet_out->po_header_type + && 3 == packet_out->po_packno) + { + LSQ_DEBUG("possible ECN black hole during handshake, disable ECN"); + lsquic_send_ctl_disable_ecn(ctl); + } + + if (packet_out->po_frame_types & ctl->sc_retx_frames) + { + LSQ_DEBUG("lost retransmittable packet #%"PRIu64, + packet_out->po_packno); + loss_record = send_ctl_record_loss(ctl, packet_out); + send_ctl_unacked_remove(ctl, packet_out, packet_sz); + TAILQ_INSERT_TAIL(&ctl->sc_lost_packets, packet_out, po_next); + packet_out->po_flags |= PO_LOST; + return loss_record; + } + else + { + LSQ_DEBUG("lost unretransmittable packet #%"PRIu64, + packet_out->po_packno); + send_ctl_unacked_remove(ctl, packet_out, packet_sz); + send_ctl_destroy_chain(ctl, packet_out, next); + send_ctl_destroy_packet(ctl, packet_out); + return NULL; + } +} + + +static int +send_ctl_handle_lost_mtu_probe (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *packet_out) +{ + unsigned packet_sz; + + LSQ_DEBUG("lost MTU probe in packet #%"PRIu64, packet_out->po_packno); + packet_sz = packet_out_sent_sz(packet_out); + send_ctl_unacked_remove(ctl, packet_out, packet_sz); + assert(packet_out->po_loss_chain == packet_out); + send_ctl_destroy_packet(ctl, packet_out); + return 0; +} + + +/* Returns true if packet was rescheduled, false otherwise. In the latter + * case, you should not dereference packet_out after the function returns. + */ +static int +send_ctl_handle_lost_packet (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *packet_out, struct lsquic_packet_out **next) +{ + if (0 == (packet_out->po_flags & PO_MTU_PROBE)) + return send_ctl_handle_regular_lost_packet(ctl, packet_out, next) != NULL; + else + return send_ctl_handle_lost_mtu_probe(ctl, packet_out); +} + + +static lsquic_packno_t +largest_retx_packet_number (const struct lsquic_send_ctl *ctl, + enum packnum_space pns) +{ + const lsquic_packet_out_t *packet_out; + TAILQ_FOREACH_REVERSE(packet_out, &ctl->sc_unacked_packets[pns], + lsquic_packets_tailq, po_next) + { + if (0 == (packet_out->po_flags & (PO_LOSS_REC|PO_POISON)) + && (packet_out->po_frame_types & ctl->sc_retx_frames)) + return packet_out->po_packno; + } + return 0; +} + + +static void +send_ctl_loss_event (struct lsquic_send_ctl *ctl) +{ + ctl->sc_ci->cci_loss(CGP(ctl)); + if (ctl->sc_flags & SC_PACE) + lsquic_pacer_loss_event(&ctl->sc_pacer); + ctl->sc_largest_sent_at_cutback = + lsquic_senhist_largest(&ctl->sc_senhist); +} + + +/* Return true if losses were detected, false otherwise */ +static int +send_ctl_detect_losses (struct lsquic_send_ctl *ctl, enum packnum_space pns, + lsquic_time_t time) +{ + struct lsquic_packet_out *packet_out, *next, *loss_record; + lsquic_packno_t largest_retx_packno, largest_lost_packno; + + largest_retx_packno = largest_retx_packet_number(ctl, pns); + largest_lost_packno = 0; + ctl->sc_loss_to = 0; + + for (packet_out = TAILQ_FIRST(&ctl->sc_unacked_packets[pns]); + packet_out && packet_out->po_packno <= ctl->sc_largest_acked_packno; + packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + + if (packet_out->po_flags & (PO_LOSS_REC|PO_POISON)) + continue; + + if (packet_out->po_packno + ctl->sc_reord_thresh < + ctl->sc_largest_acked_packno) + { + LSQ_DEBUG("loss by FACK detected (dist: %"PRIu64"), packet #%"PRIu64, + ctl->sc_largest_acked_packno - packet_out->po_packno, + packet_out->po_packno); + if (0 == (packet_out->po_flags & PO_MTU_PROBE)) + { + largest_lost_packno = packet_out->po_packno; + loss_record = send_ctl_handle_regular_lost_packet(ctl, + packet_out, &next); + if (loss_record) + loss_record->po_lflags |= POL_FACKED; + } + else + send_ctl_handle_lost_mtu_probe(ctl, packet_out); + continue; + } + + if (largest_retx_packno + && (packet_out->po_frame_types & ctl->sc_retx_frames) + && 0 == (packet_out->po_flags & PO_MTU_PROBE) + && largest_retx_packno <= ctl->sc_largest_acked_packno) + { + LSQ_DEBUG("loss by early retransmit detected, packet #%"PRIu64, + packet_out->po_packno); + largest_lost_packno = packet_out->po_packno; + ctl->sc_loss_to = + lsquic_rtt_stats_get_srtt(&ctl->sc_conn_pub->rtt_stats) / 4; + LSQ_DEBUG("set sc_loss_to to %"PRIu64", packet #%"PRIu64, + ctl->sc_loss_to, packet_out->po_packno); + (void) send_ctl_handle_lost_packet(ctl, packet_out, &next); + continue; + } + + if (ctl->sc_largest_acked_sent_time > packet_out->po_sent + + lsquic_rtt_stats_get_srtt(&ctl->sc_conn_pub->rtt_stats)) + { + LSQ_DEBUG("loss by sent time detected: packet #%"PRIu64, + packet_out->po_packno); + if ((packet_out->po_frame_types & ctl->sc_retx_frames) + && 0 == (packet_out->po_flags & PO_MTU_PROBE)) + largest_lost_packno = packet_out->po_packno; + else { /* don't count it as a loss */; } + (void) send_ctl_handle_lost_packet(ctl, packet_out, &next); + continue; + } + } + + if (largest_lost_packno > ctl->sc_largest_sent_at_cutback) + { + LSQ_DEBUG("detected new loss: packet #%"PRIu64"; new lsac: " + "%"PRIu64, largest_lost_packno, ctl->sc_largest_sent_at_cutback); + send_ctl_loss_event(ctl); + } + else if (largest_lost_packno) + /* Lost packets whose numbers are smaller than the largest packet + * number sent at the time of the last loss event indicate the same + * loss event. This follows NewReno logic, see RFC 6582. + */ + LSQ_DEBUG("ignore loss of packet #%"PRIu64" smaller than lsac " + "%"PRIu64, largest_lost_packno, ctl->sc_largest_sent_at_cutback); + + return largest_lost_packno > ctl->sc_largest_sent_at_cutback; +} + + +static void +send_ctl_mtu_probe_acked (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *packet_out) +{ + struct lsquic_conn *const lconn = ctl->sc_conn_pub->lconn; + + LSQ_DEBUG("MTU probe in packet #%"PRIu64" has been ACKed", + packet_out->po_packno); + assert(lconn->cn_if->ci_mtu_probe_acked); + if (lconn->cn_if->ci_mtu_probe_acked) + lconn->cn_if->ci_mtu_probe_acked(lconn, packet_out); +} + + +static void +send_ctl_maybe_increase_reord_thresh (struct lsquic_send_ctl *ctl, + const struct lsquic_packet_out *loss_record, + lsquic_packno_t prev_largest_acked) +{ +#if LSQUIC_DEVEL + if (ctl->sc_flags & SC_DYN_PTHRESH) +#endif + if ((loss_record->po_lflags & POL_FACKED) + && loss_record->po_packno + ctl->sc_reord_thresh + < prev_largest_acked) + { + ctl->sc_reord_thresh = prev_largest_acked - loss_record->po_packno; + LSQ_DEBUG("packet #%"PRIu64" was a spurious loss by FACK, increase " + "reordering threshold to %u", loss_record->po_packno, + ctl->sc_reord_thresh); + } +} + + +int +lsquic_send_ctl_got_ack (lsquic_send_ctl_t *ctl, + const struct ack_info *acki, + lsquic_time_t ack_recv_time, lsquic_time_t now) +{ + const struct lsquic_packno_range *range = + &acki->ranges[ acki->n_ranges - 1 ]; + lsquic_packet_out_t *packet_out, *next; + lsquic_packno_t smallest_unacked; + lsquic_packno_t prev_largest_acked; + lsquic_packno_t ack2ed[2]; + unsigned packet_sz; + int app_limited, losses_detected; + signed char do_rtt, skip_checks; + enum packnum_space pns; + unsigned ecn_total_acked, ecn_ce_cnt, one_rtt_cnt; + + pns = acki->pns; + ctl->sc_flags |= SC_ACK_RECV_INIT << pns; + packet_out = TAILQ_FIRST(&ctl->sc_unacked_packets[pns]); +#if __GNUC__ + __builtin_prefetch(packet_out); +#endif + +#if __GNUC__ + if (UNLIKELY(LSQ_LOG_ENABLED(LSQ_LOG_DEBUG))) +#endif + LSQ_DEBUG("Got ACK frame, largest acked: %"PRIu64"; delta: %"PRIu64, + largest_acked(acki), acki->lack_delta); + + /* Validate ACK first: */ + if (UNLIKELY(largest_acked(acki) + > lsquic_senhist_largest(&ctl->sc_senhist))) + { + LSQ_INFO("at least one packet in ACK range [%"PRIu64" - %"PRIu64"] " + "was never sent", acki->ranges[0].low, acki->ranges[0].high); + return -1; + } + + if (ctl->sc_ci->cci_begin_ack) + ctl->sc_ci->cci_begin_ack(CGP(ctl), ack_recv_time, + ctl->sc_bytes_unacked_all); + + ecn_total_acked = 0; + ecn_ce_cnt = 0; + one_rtt_cnt = 0; + + if (UNLIKELY(ctl->sc_flags & SC_WAS_QUIET)) + { + ctl->sc_flags &= ~SC_WAS_QUIET; + LSQ_DEBUG("ACK comes after a period of quiescence"); + ctl->sc_ci->cci_was_quiet(CGP(ctl), now, ctl->sc_bytes_unacked_all); + if (packet_out && (packet_out->po_frame_types & QUIC_FTBIT_PING) + && ctl->sc_conn_pub->last_prog) + { + LSQ_DEBUG("ACK to PING frame, update last progress to %"PRIu64, + ctl->sc_conn_pub->last_tick); + ctl->sc_conn_pub->last_prog = ctl->sc_conn_pub->last_tick; + } + } + + if (UNLIKELY(!packet_out)) + goto no_unacked_packets; + + smallest_unacked = packet_out->po_packno; + LSQ_DEBUG("Smallest unacked: %"PRIu64, smallest_unacked); + + ack2ed[1] = 0; + + if (packet_out->po_packno > largest_acked(acki)) + goto detect_losses; + + if (largest_acked(acki) > ctl->sc_cur_rt_end) + { + ++ctl->sc_rt_count; + ctl->sc_cur_rt_end = lsquic_senhist_largest(&ctl->sc_senhist); + } + + prev_largest_acked = ctl->sc_largest_acked_packno; + do_rtt = 0, skip_checks = 0; + app_limited = -1; + do + { + next = TAILQ_NEXT(packet_out, po_next); +#if __GNUC__ + __builtin_prefetch(next); +#endif + if (skip_checks) + goto after_checks; + /* This is faster than binary search in the normal case when the number + * of ranges is not much larger than the number of unacked packets. + */ + while (UNLIKELY(range->high < packet_out->po_packno)) + --range; + if (range->low <= packet_out->po_packno) + { + skip_checks = range == acki->ranges; + if (app_limited < 0) + app_limited = send_ctl_retx_bytes_out(ctl) + 3 * SC_PACK_SIZE(ctl) /* This + is the "maximum burst" parameter */ + < ctl->sc_ci->cci_get_cwnd(CGP(ctl)); + after_checks: + ctl->sc_largest_acked_packno = packet_out->po_packno; + ctl->sc_largest_acked_sent_time = packet_out->po_sent; + ecn_total_acked += lsquic_packet_out_ecn(packet_out) != ECN_NOT_ECT; + ecn_ce_cnt += lsquic_packet_out_ecn(packet_out) == ECN_CE; + one_rtt_cnt += lsquic_packet_out_enc_level(packet_out) == ENC_LEV_APP; + if (0 == (packet_out->po_flags + & (PO_LOSS_REC|PO_POISON|PO_MTU_PROBE))) + { + packet_sz = packet_out_sent_sz(packet_out); + send_ctl_unacked_remove(ctl, packet_out, packet_sz); + lsquic_packet_out_ack_streams(packet_out); + LSQ_DEBUG("acking via regular record #%"PRIu64, + packet_out->po_packno); + } + else if (packet_out->po_flags & PO_LOSS_REC) + { + packet_sz = packet_out->po_sent_sz; + TAILQ_REMOVE(&ctl->sc_unacked_packets[pns], packet_out, + po_next); + LSQ_DEBUG("acking via loss record #%"PRIu64, + packet_out->po_packno); + send_ctl_maybe_increase_reord_thresh(ctl, packet_out, + prev_largest_acked); +#if LSQUIC_CONN_STATS + ++ctl->sc_conn_pub->conn_stats->out.acked_via_loss; +#endif + } + else if (packet_out->po_flags & PO_MTU_PROBE) + { + packet_sz = packet_out_sent_sz(packet_out); + send_ctl_unacked_remove(ctl, packet_out, packet_sz); + send_ctl_mtu_probe_acked(ctl, packet_out); + } + else + { + LSQ_WARN("poisoned packet #%"PRIu64" acked", + packet_out->po_packno); + return -1; + } + ack2ed[!!(packet_out->po_frame_types & (1 << QUIC_FRAME_ACK))] + = packet_out->po_ack2ed; + do_rtt |= packet_out->po_packno == largest_acked(acki); + ctl->sc_ci->cci_ack(CGP(ctl), packet_out, packet_sz, now, + app_limited); + send_ctl_acked_loss_chain(ctl, packet_out, &next, + largest_acked(acki), &do_rtt); + send_ctl_destroy_packet(ctl, packet_out); + } + packet_out = next; + } + while (packet_out && packet_out->po_packno <= largest_acked(acki)); + + if (do_rtt) + { + take_rtt_sample(ctl, ack_recv_time, acki->lack_delta); + LSQ_DEBUG("clear sc_n_consec_rtos, sc_n_hsk, sc_ntlp"); + ctl->sc_n_consec_rtos = 0; + ctl->sc_n_hsk = 0; + ctl->sc_n_tlp = 0; + } + + detect_losses: + losses_detected = send_ctl_detect_losses(ctl, pns, ack_recv_time); + if (send_ctl_first_unacked_retx_packet(ctl, pns)) + { + if ((ctl->sc_flags & SC_1RTT_ACKED) + || (!lsquic_alarmset_is_set(ctl->sc_alset, AL_RETX_INIT + pns) + && losses_detected)) + set_retx_alarm(ctl, pns, now); + } + else + { + LSQ_DEBUG("No retransmittable packets: clear alarm"); + lsquic_alarmset_unset(ctl->sc_alset, AL_RETX_INIT + pns); + } + lsquic_send_ctl_sanity_check(ctl); + + if ((ctl->sc_flags & SC_NSTP) && ack2ed[1] > ctl->sc_largest_ack2ed[pns]) + ctl->sc_largest_ack2ed[pns] = ack2ed[1]; + + if (ctl->sc_n_in_flight_retx == 0) + ctl->sc_flags |= SC_WAS_QUIET; + + if (one_rtt_cnt) + ctl->sc_flags |= SC_1RTT_ACKED; + + if (lsquic_send_ctl_ecn_turned_on(ctl) && (acki->flags & AI_ECN)) + { + const uint64_t sum = acki->ecn_counts[ECN_ECT0] + + acki->ecn_counts[ECN_ECT1] + + acki->ecn_counts[ECN_CE]; + ctl->sc_ecn_total_acked[pns] += ecn_total_acked; + ctl->sc_ecn_ce_cnt[pns] += ecn_ce_cnt; + if (sum >= ctl->sc_ecn_total_acked[pns]) + { + if (sum > ctl->sc_ecn_total_acked[pns]) + ctl->sc_ecn_total_acked[pns] = sum; + if (acki->ecn_counts[ECN_CE] > ctl->sc_ecn_ce_cnt[pns]) + { + ctl->sc_ecn_ce_cnt[pns] = acki->ecn_counts[ECN_CE]; + if (losses_detected) + /* It's either-or. From [draft-ietf-quic-recovery-29], + * Section 7.4: + " When a loss or ECN-CE marking is detected [...] + */ + LSQ_DEBUG("ECN-CE marking detected, but loss event already " + "accounted for"); + else + { + LSQ_DEBUG("ECN-CE marking detected, issue loss event"); + send_ctl_loss_event(ctl); + } + } + } + else + { + LSQ_INFO("ECN total ACKed (%"PRIu64") is greater than the sum " + "of ECN counters (%"PRIu64"): disable ECN", + ctl->sc_ecn_total_acked[pns], sum); + lsquic_send_ctl_disable_ecn(ctl); + } + } + + update_n_stop_waiting: + if (!(ctl->sc_flags & (SC_NSTP|SC_IETF))) + { + if (smallest_unacked > smallest_acked(acki)) + /* Peer is acking packets that have been acked already. Schedule + * ACK and STOP_WAITING frame to chop the range if we get two of + * these in a row. + */ + ++ctl->sc_n_stop_waiting; + else + ctl->sc_n_stop_waiting = 0; + } + lsquic_send_ctl_sanity_check(ctl); + if (ctl->sc_ci->cci_end_ack) + ctl->sc_ci->cci_end_ack(CGP(ctl), ctl->sc_bytes_unacked_all); + if (ctl->sc_gap < smallest_acked(acki)) + send_ctl_reschedule_poison(ctl); + return 0; + + no_unacked_packets: + smallest_unacked = lsquic_senhist_largest(&ctl->sc_senhist) + 1; + ctl->sc_flags |= SC_WAS_QUIET; + goto update_n_stop_waiting; +} + + +lsquic_packno_t +lsquic_send_ctl_smallest_unacked (lsquic_send_ctl_t *ctl) +{ + const lsquic_packet_out_t *packet_out; + enum packnum_space pns; + + /* Packets are always sent out in order (unless we are reordering them + * on purpose). Thus, the first packet on the unacked packets list has + * the smallest packet number of all packets on that list. + */ + for (pns = ctl->sc_flags & SC_IETF ? PNS_INIT : PNS_APP; pns < N_PNS; ++pns) + if ((packet_out = TAILQ_FIRST(&ctl->sc_unacked_packets[pns]))) + /* We're OK with using a loss record */ + return packet_out->po_packno; + + return lsquic_senhist_largest(&ctl->sc_senhist) + first_packno(ctl); +} + + +static struct lsquic_packet_out * +send_ctl_next_lost (lsquic_send_ctl_t *ctl) +{ + struct lsquic_conn *const lconn = ctl->sc_conn_pub->lconn; + struct lsquic_packet_out *lost_packet; + + get_next_lost: + lost_packet = TAILQ_FIRST(&ctl->sc_lost_packets); + if (lost_packet) + { + if (lost_packet->po_frame_types & (1 << QUIC_FRAME_STREAM)) + { + if (0 == (lost_packet->po_flags & PO_MINI)) + { + lsquic_packet_out_elide_reset_stream_frames(lost_packet, + UINT64_MAX); + if (lost_packet->po_regen_sz >= lost_packet->po_data_sz) + { + LSQ_DEBUG("Dropping packet #%"PRIu64" from lost queue", + lost_packet->po_packno); + TAILQ_REMOVE(&ctl->sc_lost_packets, lost_packet, po_next); + lost_packet->po_flags &= ~PO_LOST; + send_ctl_destroy_chain(ctl, lost_packet, NULL); + send_ctl_destroy_packet(ctl, lost_packet); + goto get_next_lost; + } + } + else + { + /* Mini connection only ever sends data on stream 1. There + * is nothing to elide: always resend it. + */ + ; + } + } + + if (!lsquic_send_ctl_can_send(ctl)) + return NULL; + + pop_lost_packet: + if (packet_out_total_sz(lost_packet) <= SC_PACK_SIZE(ctl)) + { + TAILQ_REMOVE(&ctl->sc_lost_packets, lost_packet, po_next); + lost_packet->po_flags &= ~PO_LOST; + lost_packet->po_flags |= PO_RETX; + } + else + { + /* We delay resizing lost packets as long as possible, hoping that + * it may be ACKed. At this point, however, we have to resize. + */ + if (0 == split_lost_packet(ctl, lost_packet)) + { + lost_packet = TAILQ_FIRST(&ctl->sc_lost_packets); + while (lost_packet != NULL && lost_packet->po_regen_sz >= lost_packet->po_data_sz) + { + LSQ_DEBUG("Dropping packet %"PRIu64 + " from lost queue, data size: %d, frames: %x", + lost_packet->po_packno, lost_packet->po_data_sz, + lost_packet->po_frame_types); + TAILQ_REMOVE(&ctl->sc_lost_packets, lost_packet, po_next); + lost_packet->po_flags &= ~PO_LOST; + send_ctl_destroy_chain(ctl, lost_packet, NULL); + send_ctl_destroy_packet(ctl, lost_packet); + lost_packet = TAILQ_FIRST(&ctl->sc_lost_packets); + } + if (!lost_packet) + return NULL; + else + goto pop_lost_packet; + } + lconn->cn_if->ci_internal_error(lconn, + "error resizing lost packet"); + return NULL; + } + } + + return lost_packet; +} + + +static lsquic_packno_t +send_ctl_next_packno (lsquic_send_ctl_t *ctl) +{ + lsquic_packno_t packno; + + packno = ++ctl->sc_cur_packno; + if (packno == ctl->sc_gap) + packno = ++ctl->sc_cur_packno; + + return packno; +} + + +void +lsquic_send_ctl_cleanup (lsquic_send_ctl_t *ctl) +{ + lsquic_packet_out_t *packet_out, *next; + enum packnum_space pns; + unsigned n; + + lsquic_senhist_cleanup(&ctl->sc_senhist); + while ((packet_out = TAILQ_FIRST(&ctl->sc_scheduled_packets))) + { + send_ctl_sched_remove(ctl, packet_out); + send_ctl_destroy_packet(ctl, packet_out); + } + assert(0 == ctl->sc_n_scheduled); + //assert(0 == ctl->sc_bytes_scheduled); + for (pns = PNS_INIT; pns < N_PNS; ++pns) + while ((packet_out = TAILQ_FIRST(&ctl->sc_unacked_packets[pns]))) + { + TAILQ_REMOVE(&ctl->sc_unacked_packets[pns], packet_out, po_next); + packet_out->po_flags &= ~PO_UNACKED; +#ifndef NDEBUG + if (0 == (packet_out->po_flags & (PO_LOSS_REC|PO_POISON))) + { + ctl->sc_bytes_unacked_all -= packet_out_sent_sz(packet_out); + --ctl->sc_n_in_flight_all; + } +#endif + send_ctl_destroy_packet(ctl, packet_out); + } + assert(0 == ctl->sc_n_in_flight_all); + assert(0 == ctl->sc_bytes_unacked_all); + while ((packet_out = TAILQ_FIRST(&ctl->sc_lost_packets))) + { + TAILQ_REMOVE(&ctl->sc_lost_packets, packet_out, po_next); + packet_out->po_flags &= ~PO_LOST; + send_ctl_destroy_packet(ctl, packet_out); + } + while ((packet_out = TAILQ_FIRST(&ctl->sc_0rtt_stash))) + { + TAILQ_REMOVE(&ctl->sc_0rtt_stash, packet_out, po_next); + send_ctl_destroy_packet(ctl, packet_out); + } + for (n = 0; n < sizeof(ctl->sc_buffered_packets) / + sizeof(ctl->sc_buffered_packets[0]); ++n) + { + for (packet_out = TAILQ_FIRST(&ctl->sc_buffered_packets[n].bpq_packets); + packet_out; packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + send_ctl_destroy_packet(ctl, packet_out); + } + } + if (ctl->sc_flags & SC_PACE) + lsquic_pacer_cleanup(&ctl->sc_pacer); + ctl->sc_ci->cci_cleanup(CGP(ctl)); + if (ctl->sc_flags & SC_CLEANUP_BBR) + { + assert(ctl->sc_ci == &lsquic_cong_cubic_if); + lsquic_cong_bbr_if.cci_cleanup(&ctl->sc_adaptive_cc.acc_bbr); + } +#if LSQUIC_SEND_STATS + LSQ_NOTICE("stats: n_total_sent: %u; n_resent: %u; n_delayed: %u", + ctl->sc_stats.n_total_sent, ctl->sc_stats.n_resent, + ctl->sc_stats.n_delayed); +#endif + free(ctl->sc_token); +} + + +static unsigned +send_ctl_retx_bytes_out (const struct lsquic_send_ctl *ctl) +{ + return ctl->sc_bytes_scheduled + + ctl->sc_bytes_unacked_retx + ; +} + + +static unsigned +send_ctl_all_bytes_out (const struct lsquic_send_ctl *ctl) +{ + return ctl->sc_bytes_scheduled + + ctl->sc_bytes_unacked_all + ; +} + + +int +lsquic_send_ctl_pacer_blocked (struct lsquic_send_ctl *ctl) +{ +#ifdef NDEBUG + return (ctl->sc_flags & SC_PACE) + && !lsquic_pacer_can_schedule(&ctl->sc_pacer, + ctl->sc_n_in_flight_all); +#else + if (ctl->sc_flags & SC_PACE) + { + const int blocked = !lsquic_pacer_can_schedule(&ctl->sc_pacer, + ctl->sc_n_in_flight_all); + LSQ_DEBUG("pacer blocked: %d, in_flight_all: %u", blocked, + ctl->sc_n_in_flight_all); + return blocked; + } + else + return 0; +#endif +} + + +static int +send_ctl_can_send (struct lsquic_send_ctl *ctl) +{ + uint64_t cwnd = ctl->sc_ci->cci_get_cwnd(CGP(ctl)); + const unsigned n_out = send_ctl_all_bytes_out(ctl); + LSQ_DEBUG("%s: sc_flags: 0x%X, b_out: %u = (%u + %u); b_retx: %u; cwnd: %"PRIu64 + "; ccfc: %"PRIu64"/%"PRIu64"; n_scheduled: %d, n_in_flight_all: %d" + "; pa_burst: %d; pa_next: %"PRIu64"; pa_now: %"PRIu64 + , __func__, ctl->sc_flags, + n_out, ctl->sc_bytes_unacked_all, ctl->sc_bytes_scheduled, + ctl->sc_bytes_unacked_retx, cwnd, + ctl->sc_conn_pub->conn_cap.cc_sent, + ctl->sc_conn_pub->conn_cap.cc_max, + ctl->sc_n_scheduled, ctl->sc_n_in_flight_all, + ctl->sc_pacer.pa_burst_tokens, + ctl->sc_pacer.pa_next_sched, ctl->sc_pacer.pa_now); + + if (ctl->sc_flags & SC_PACE) + { + if (n_out >= cwnd) + return 0; + if (lsquic_pacer_can_schedule(&ctl->sc_pacer, + ctl->sc_n_scheduled + ctl->sc_n_in_flight_all)) + return 1; + if (ctl->sc_flags & SC_SCHED_TICK) + { + ctl->sc_flags &= ~SC_SCHED_TICK; + lsquic_engine_add_conn_to_attq(ctl->sc_enpub, + ctl->sc_conn_pub->lconn, lsquic_pacer_next_sched(&ctl->sc_pacer), + AEW_PACER); + } + return 0; + } + else + return n_out < cwnd; +} + + +static int +send_ctl_can_send_pre_hsk (struct lsquic_send_ctl *ctl) +{ + unsigned bytes_in, bytes_out; + + bytes_in = ctl->sc_conn_pub->bytes_in; + bytes_out = ctl->sc_conn_pub->bytes_out + ctl->sc_bytes_scheduled; + if (bytes_out >= bytes_in * 2 + bytes_in / 2 /* This should work out + to around 3 on average */) + { + LSQ_DEBUG("%s: amplification block: %u bytes in, %u bytes out", + __func__, bytes_in, bytes_out); + return 0; + } + else + return send_ctl_can_send(ctl); +} + + +#ifndef NDEBUG +#if __GNUC__ +__attribute__((weak)) +#endif +#endif +int +lsquic_send_ctl_can_send (struct lsquic_send_ctl *ctl) +{ + return ctl->sc_can_send(ctl); +} + + +/* Like lsquic_send_ctl_can_send(), but no mods */ +static int +send_ctl_could_send (const struct lsquic_send_ctl *ctl) +{ + uint64_t cwnd; + unsigned n_out; + + if ((ctl->sc_flags & SC_PACE) && lsquic_pacer_delayed(&ctl->sc_pacer)) + return 0; + + cwnd = ctl->sc_ci->cci_get_cwnd(CGP(ctl)); + n_out = send_ctl_all_bytes_out(ctl); + return n_out < cwnd; +} + + +void +lsquic_send_ctl_maybe_app_limited (struct lsquic_send_ctl *ctl, + const struct network_path *path) +{ + const struct lsquic_packet_out *packet_out; + + packet_out = lsquic_send_ctl_last_scheduled(ctl, PNS_APP, path, 0); + if ((packet_out && lsquic_packet_out_avail(packet_out) > 10) + || send_ctl_could_send(ctl)) + { + LSQ_DEBUG("app-limited"); + ctl->sc_flags |= SC_APP_LIMITED; + } +} + + +static void +send_ctl_expire (struct lsquic_send_ctl *ctl, enum packnum_space pns, + enum expire_filter filter) +{ + lsquic_packet_out_t *packet_out, *next; + int n_resubmitted; + static const char *const filter_type2str[] = { + [EXFI_ALL] = "all", + [EXFI_HSK] = "handshake", + [EXFI_LAST] = "last", + }; + + switch (filter) + { + case EXFI_ALL: + n_resubmitted = 0; + for (packet_out = TAILQ_FIRST(&ctl->sc_unacked_packets[pns]); + packet_out; packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + if (0 == (packet_out->po_flags & (PO_LOSS_REC|PO_POISON))) + n_resubmitted += send_ctl_handle_lost_packet(ctl, packet_out, + &next); + } + break; + case EXFI_HSK: + n_resubmitted = 0; + for (packet_out = TAILQ_FIRST(&ctl->sc_unacked_packets[pns]); packet_out; + packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + if (packet_out->po_flags & PO_HELLO) + n_resubmitted += send_ctl_handle_lost_packet(ctl, packet_out, + &next); + } + break; + default: + assert(filter == EXFI_LAST); + packet_out = send_ctl_last_unacked_retx_packet(ctl, pns); + if (packet_out) + n_resubmitted = send_ctl_handle_lost_packet(ctl, packet_out, NULL); + else + n_resubmitted = 0; + break; + } + + LSQ_DEBUG("consider %s packets lost: %d resubmitted", + filter_type2str[filter], n_resubmitted); +} + + +void +lsquic_send_ctl_expire_all (lsquic_send_ctl_t *ctl) +{ + enum packnum_space pns; + + for (pns = ctl->sc_flags & SC_IETF ? PNS_INIT : PNS_APP; pns < N_PNS; ++pns) + { + lsquic_alarmset_unset(ctl->sc_alset, AL_RETX_INIT + pns); + send_ctl_expire(ctl, pns, EXFI_ALL); + } + lsquic_send_ctl_sanity_check(ctl); +} + + +#ifndef NDEBUG +void +lsquic_send_ctl_do_sanity_check (const struct lsquic_send_ctl *ctl) +{ + const struct lsquic_packet_out *packet_out; + lsquic_packno_t prev_packno; + int prev_packno_set; + unsigned count, bytes; + enum packnum_space pns; + +#if _MSC_VER + prev_packno = 0; +#endif + count = 0, bytes = 0; + for (pns = PNS_INIT; pns <= PNS_APP; ++pns) + { + prev_packno_set = 0; + TAILQ_FOREACH(packet_out, &ctl->sc_unacked_packets[pns], po_next) + { + if (prev_packno_set) + assert(packet_out->po_packno > prev_packno); + else + { + prev_packno = packet_out->po_packno; + prev_packno_set = 1; + } + if (0 == (packet_out->po_flags & (PO_LOSS_REC|PO_POISON))) + { + bytes += packet_out_sent_sz(packet_out); + ++count; + } + } + } + assert(count == ctl->sc_n_in_flight_all); + assert(bytes == ctl->sc_bytes_unacked_all); + + count = 0, bytes = 0; + TAILQ_FOREACH(packet_out, &ctl->sc_scheduled_packets, po_next) + { + assert(packet_out->po_flags & PO_SCHED); + bytes += packet_out_total_sz(packet_out); + ++count; + } + assert(count == ctl->sc_n_scheduled); + assert(bytes == ctl->sc_bytes_scheduled); +} + + +#endif + + +void +lsquic_send_ctl_scheduled_one (lsquic_send_ctl_t *ctl, + lsquic_packet_out_t *packet_out) +{ +#ifndef NDEBUG + const lsquic_packet_out_t *last; + last = TAILQ_LAST(&ctl->sc_scheduled_packets, lsquic_packets_tailq); + if (last) + assert((last->po_flags & PO_REPACKNO) || + last->po_packno < packet_out->po_packno); +#endif + if (ctl->sc_flags & SC_PACE) + { + unsigned n_out = ctl->sc_n_in_flight_retx + ctl->sc_n_scheduled; + lsquic_pacer_packet_scheduled(&ctl->sc_pacer, n_out, + send_ctl_in_recovery(ctl), send_ctl_transfer_time, ctl); + } + send_ctl_sched_append(ctl, packet_out); +} + + +/* Wrapper is used to reset the counter when it's been too long */ +static unsigned +send_ctl_get_n_consec_rtos (struct lsquic_send_ctl *ctl) +{ + lsquic_time_t timeout; + + if (ctl->sc_n_consec_rtos) + { + timeout = calculate_packet_rto(ctl); + if (ctl->sc_last_rto_time + timeout < ctl->sc_last_sent_time) + { + ctl->sc_n_consec_rtos = 0; + LSQ_DEBUG("reset RTO counter after %"PRIu64" usec", + ctl->sc_last_sent_time - ctl->sc_last_rto_time); + } + } + + return ctl->sc_n_consec_rtos; +} + + +/* This mimics the logic in lsquic_send_ctl_next_packet_to_send(): we want + * to check whether the first scheduled packet cannot be sent. + */ +int +lsquic_send_ctl_sched_is_blocked (struct lsquic_send_ctl *ctl) +{ + const lsquic_packet_out_t *packet_out + = TAILQ_FIRST(&ctl->sc_scheduled_packets); + return send_ctl_get_n_consec_rtos(ctl) + && 0 == ctl->sc_next_limit + && packet_out + && !(packet_out->po_frame_types & (1 << QUIC_FRAME_ACK)); +} + + +static void +send_ctl_maybe_zero_pad (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *initial_packet, size_t limit) +{ + struct lsquic_packet_out *packet_out; + size_t cum_size, size; + + cum_size = packet_out_total_sz(initial_packet); + if (cum_size >= limit) + { + LSQ_DEBUG("packet size %zu larger than %zu-byte limit: not " + "zero-padding", cum_size, limit); + return; + } + + TAILQ_FOREACH(packet_out, &ctl->sc_scheduled_packets, po_next) + { + size = packet_out_total_sz(packet_out); + if (cum_size + size > limit) + break; + cum_size += size; + if (HETY_SHORT == packet_out->po_header_type) + break; + } + + LSQ_DEBUG("cum_size: %zu; limit: %zu", cum_size, limit); + assert(cum_size <= limit); + size = limit - cum_size; + if (size > lsquic_packet_out_avail(initial_packet)) + size = lsquic_packet_out_avail(initial_packet); + if (size) + { + memset(initial_packet->po_data + initial_packet->po_data_sz, 0, size); + initial_packet->po_data_sz += size; + initial_packet->po_frame_types |= QUIC_FTBIT_PADDING; + } + LSQ_DEBUG("Added %zu bytes of PADDING to packet #%"PRIu64, size, + initial_packet->po_packno); +} + + +/* Predict whether lsquic_send_ctl_next_packet_to_send() will return a + * packet by mimicking its logic. Returns true if packet will be returned, + * false otherwise. + */ +int +lsquic_send_ctl_next_packet_to_send_predict (struct lsquic_send_ctl *ctl) +{ + const struct lsquic_packet_out *packet_out; + unsigned n_rtos; + + n_rtos = ~0u; + TAILQ_FOREACH(packet_out, &ctl->sc_scheduled_packets, po_next) + { + if (!(packet_out->po_frame_types + & ((1 << QUIC_FRAME_ACK) | (1 << QUIC_FRAME_CRYPTO))) + && 0 == ctl->sc_next_limit + && 0 != (n_rtos == ~0u ? /* Initialize once */ + (n_rtos = send_ctl_get_n_consec_rtos(ctl)) : n_rtos)) + { + LSQ_DEBUG("send prediction: no, n_rtos: %u", n_rtos); + return 0; + } + if ((packet_out->po_flags & PO_REPACKNO) + && packet_out->po_regen_sz == packet_out->po_data_sz + && packet_out->po_frame_types != QUIC_FTBIT_PATH_CHALLENGE) + { + LSQ_DEBUG("send prediction: packet #%"PRIu64" would be dropped, " + "continue", packet_out->po_packno); + continue; + } + LSQ_DEBUG("send prediction: yes, packet #%"PRIu64", flags %u, frames 0x%X", + packet_out->po_packno, (unsigned) packet_out->po_flags, + (unsigned) packet_out->po_frame_types); + return 1; + } + + LSQ_DEBUG("send prediction: no, no matching scheduled packets"); + return 0; +} + + +lsquic_packet_out_t * +lsquic_send_ctl_next_packet_to_send (struct lsquic_send_ctl *ctl, + const struct to_coal *to_coal) +{ + lsquic_packet_out_t *packet_out; + size_t size; + int dec_limit; + + get_packet: + packet_out = TAILQ_FIRST(&ctl->sc_scheduled_packets); + if (!packet_out) + { + LSQ_DEBUG("no more scheduled packets"); + return NULL; + } + + /* Note: keep logic in this function and in + * lsquic_send_ctl_next_packet_to_send_predict() in synch. + */ + if (!(packet_out->po_frame_types + & ((1 << QUIC_FRAME_ACK) | (1 << QUIC_FRAME_CRYPTO))) + && send_ctl_get_n_consec_rtos(ctl)) + { + if (ctl->sc_next_limit) + dec_limit = 1; + else + { + LSQ_DEBUG("sc_n_consec_rtos: %d, sc_next_limit is 0", + ctl->sc_n_consec_rtos); + return NULL; + } + } + else + dec_limit = 0; + + if (packet_out->po_flags & PO_REPACKNO) + { + if (packet_out->po_regen_sz < packet_out->po_data_sz + && packet_out->po_frame_types != QUIC_FTBIT_PADDING) + { + update_for_resending(ctl, packet_out); + packet_out->po_flags &= ~PO_REPACKNO; + } + else + { + LSQ_DEBUG("Dropping packet #%"PRIu64" from scheduled queue", + packet_out->po_packno); + send_ctl_sched_remove(ctl, packet_out); + send_ctl_destroy_chain(ctl, packet_out, NULL); + send_ctl_destroy_packet(ctl, packet_out); + goto get_packet; + } + } + + if (UNLIKELY(to_coal != NULL)) + { + /* From [draft-ietf-quic-transport-30], Section-12.2: + " Senders MUST NOT coalesce QUIC packets with different connection + " IDs into a single UDP datagram. + */ + if (packet_out_total_sz(packet_out) + to_coal->prev_sz_sum + > SC_PACK_SIZE(ctl) + || !lsquic_packet_out_equal_dcids(to_coal->prev_packet, packet_out)) + return NULL; + LSQ_DEBUG("packet #%"PRIu64" (%zu bytes) will be tacked on to " + "previous packet(s) (%zu bytes) (coalescing)", + packet_out->po_packno, packet_out_total_sz(packet_out), + to_coal->prev_sz_sum); + size = to_coal->prev_sz_sum; + } + else + size = 0; + send_ctl_sched_remove(ctl, packet_out); + + if (dec_limit) + { + --ctl->sc_next_limit; + packet_out->po_lflags |= POL_LIMITED; + } + else + packet_out->po_lflags &= ~POL_LIMITED; + + if (UNLIKELY(packet_out->po_header_type == HETY_INITIAL) + && (!(ctl->sc_conn_pub->lconn->cn_flags & LSCONN_SERVER) + || (packet_out->po_frame_types + & IQUIC_FRAME_ACKABLE_MASK)) + && size < 1200) + { + send_ctl_maybe_zero_pad(ctl, packet_out, 1200 - size); + } + + if (ctl->sc_flags & SC_QL_BITS) + { + packet_out->po_lflags |= POL_LOG_QL_BITS; + if (ctl->sc_loss_count) + { + --ctl->sc_loss_count; + packet_out->po_lflags |= POL_LOSS_BIT; + } + else + packet_out->po_lflags &= ~POL_LOSS_BIT; + if (packet_out->po_header_type == HETY_SHORT) + { + if (ctl->sc_gap + 1 == packet_out->po_packno) + ++ctl->sc_square_count; + if (ctl->sc_square_count++ & 64) + packet_out->po_lflags |= POL_SQUARE_BIT; + else + packet_out->po_lflags &= ~POL_SQUARE_BIT; + } + } + + return packet_out; +} + + +void +lsquic_send_ctl_delayed_one (lsquic_send_ctl_t *ctl, + lsquic_packet_out_t *packet_out) +{ + send_ctl_sched_prepend(ctl, packet_out); + if (packet_out->po_lflags & POL_LIMITED) + ++ctl->sc_next_limit; + LSQ_DEBUG("packet #%"PRIu64" has been delayed", packet_out->po_packno); +#if LSQUIC_SEND_STATS + ++ctl->sc_stats.n_delayed; +#endif + if (packet_out->po_lflags & POL_LOSS_BIT) + ++ctl->sc_loss_count; + if ((ctl->sc_flags & SC_QL_BITS) + && packet_out->po_header_type == HETY_SHORT) + ctl->sc_square_count -= 1 + (ctl->sc_gap + 1 == packet_out->po_packno); +} + + +int +lsquic_send_ctl_have_outgoing_stream_frames (const lsquic_send_ctl_t *ctl) +{ + const lsquic_packet_out_t *packet_out; + TAILQ_FOREACH(packet_out, &ctl->sc_scheduled_packets, po_next) + if (packet_out->po_frame_types & + ((1 << QUIC_FRAME_STREAM) | (1 << QUIC_FRAME_RST_STREAM))) + return 1; + return 0; +} + + +int +lsquic_send_ctl_have_outgoing_retx_frames (const lsquic_send_ctl_t *ctl) +{ + const lsquic_packet_out_t *packet_out; + TAILQ_FOREACH(packet_out, &ctl->sc_scheduled_packets, po_next) + if (packet_out->po_frame_types & ctl->sc_retx_frames) + return 1; + return 0; +} + + +static int +send_ctl_set_packet_out_token (const struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *packet_out) +{ + unsigned char *token; + + token = malloc(ctl->sc_token_sz); + if (!token) + { + LSQ_WARN("malloc failed: cannot set initial token"); + return -1; + } + + memcpy(token, ctl->sc_token, ctl->sc_token_sz); + packet_out->po_token = token; + packet_out->po_token_len = ctl->sc_token_sz; + packet_out->po_flags |= PO_NONCE; + LSQ_DEBUG("set initial token on packet"); + return 0; +} + + +static lsquic_packet_out_t * +send_ctl_allocate_packet (struct lsquic_send_ctl *ctl, enum packno_bits bits, + unsigned need_at_least, enum packnum_space pns, + const struct network_path *path) +{ + static const enum header_type pns2hety[] = + { + [PNS_INIT] = HETY_INITIAL, + [PNS_HSK] = HETY_HANDSHAKE, + [PNS_APP] = HETY_SHORT, + }; + lsquic_packet_out_t *packet_out; + + packet_out = lsquic_packet_out_new(&ctl->sc_enpub->enp_mm, + ctl->sc_conn_pub->packet_out_malo, + !(ctl->sc_flags & SC_TCID0), ctl->sc_conn_pub->lconn, bits, + ctl->sc_ver_neg->vn_tag, NULL, path, pns2hety[pns]); + if (!packet_out) + return NULL; + + if (need_at_least && lsquic_packet_out_avail(packet_out) < need_at_least) + { /* This should never happen, this is why this check is performed at + * this level and not lower, before the packet is actually allocated. + */ + LSQ_ERROR("wanted to allocate packet with at least %u bytes of " + "payload, but only got %u bytes (mtu: %u bytes)", need_at_least, + lsquic_packet_out_avail(packet_out), SC_PACK_SIZE(ctl)); + send_ctl_destroy_packet(ctl, packet_out); + return NULL; + } + + if (UNLIKELY(pns != PNS_APP)) + { + if (pns == PNS_INIT) + { + packet_out->po_header_type = HETY_INITIAL; + if (ctl->sc_token) + { + (void) send_ctl_set_packet_out_token(ctl, packet_out); + if (packet_out->po_n_alloc > packet_out->po_token_len) + packet_out->po_n_alloc -= packet_out->po_token_len; + else + { + /* XXX fail earlier: when retry token is parsed out */ + LSQ_INFO("token is too long: cannot allocate packet"); + return NULL; + } + } + } + else + packet_out->po_header_type = HETY_HANDSHAKE; + } + + lsquic_packet_out_set_pns(packet_out, pns); + packet_out->po_lflags |= ctl->sc_ecn << POECN_SHIFT; + packet_out->po_loss_chain = packet_out; + return packet_out; +} + + +lsquic_packet_out_t * +lsquic_send_ctl_new_packet_out (lsquic_send_ctl_t *ctl, unsigned need_at_least, + enum packnum_space pns, const struct network_path *path) +{ + lsquic_packet_out_t *packet_out; + enum packno_bits bits; + + bits = lsquic_send_ctl_packno_bits(ctl, pns); + packet_out = send_ctl_allocate_packet(ctl, bits, need_at_least, pns, path); + if (!packet_out) + return NULL; + + packet_out->po_packno = send_ctl_next_packno(ctl); + LSQ_DEBUG("created packet #%"PRIu64, packet_out->po_packno); + EV_LOG_PACKET_CREATED(LSQUIC_LOG_CONN_ID, packet_out); + return packet_out; +} + + +struct lsquic_packet_out * +lsquic_send_ctl_last_scheduled (struct lsquic_send_ctl *ctl, + enum packnum_space pns, const struct network_path *path, + int regen_match) +{ + struct lsquic_packet_out *packet_out; + + if (0 == regen_match) + { + TAILQ_FOREACH_REVERSE(packet_out, &ctl->sc_scheduled_packets, + lsquic_packets_tailq, po_next) + if (pns == lsquic_packet_out_pns(packet_out) + && path == packet_out->po_path) + return packet_out; + } + else + { + TAILQ_FOREACH_REVERSE(packet_out, &ctl->sc_scheduled_packets, + lsquic_packets_tailq, po_next) + if (pns == lsquic_packet_out_pns(packet_out) + && packet_out->po_regen_sz == packet_out->po_data_sz + && path == packet_out->po_path) + return packet_out; + } + + return NULL; +} + + +/* Do not use for STREAM frames + */ +lsquic_packet_out_t * +lsquic_send_ctl_get_writeable_packet (lsquic_send_ctl_t *ctl, + enum packnum_space pns, unsigned need_at_least, + const struct network_path *path, int regen_match, int *is_err) +{ + lsquic_packet_out_t *packet_out; + + assert(need_at_least > 0); + + packet_out = lsquic_send_ctl_last_scheduled(ctl, pns, path, regen_match); + if (packet_out + && !(packet_out->po_flags & (PO_MINI|PO_STREAM_END|PO_RETX)) + && lsquic_packet_out_avail(packet_out) >= need_at_least) + { + return packet_out; + } + + if (!lsquic_send_ctl_can_send(ctl)) + { + if (is_err) + *is_err = 0; + return NULL; + } + + packet_out = lsquic_send_ctl_new_packet_out(ctl, need_at_least, pns, path); + if (packet_out) + { + lsquic_packet_out_set_pns(packet_out, pns); + lsquic_send_ctl_scheduled_one(ctl, packet_out); + } + else if (is_err) + *is_err = 1; + return packet_out; +} + + +struct lsquic_packet_out * +lsquic_send_ctl_get_packet_for_crypto (struct lsquic_send_ctl *ctl, + unsigned need_at_least, enum packnum_space pns, + const struct network_path *path) +{ + struct lsquic_packet_out *packet_out; + + assert(lsquic_send_ctl_schedule_stream_packets_immediately(ctl)); + assert(need_at_least > 0); + + packet_out = lsquic_send_ctl_last_scheduled(ctl, pns, path, 0); + if (packet_out + && !(packet_out->po_flags & (PO_STREAM_END|PO_RETX)) + && lsquic_packet_out_avail(packet_out) >= need_at_least) + { + return packet_out; + } + + if (!lsquic_send_ctl_can_send(ctl)) + return NULL; + + packet_out = lsquic_send_ctl_new_packet_out(ctl, need_at_least, pns, path); + if (!packet_out) + return NULL; + + lsquic_send_ctl_scheduled_one(ctl, packet_out); + return packet_out; +} + + +static void +update_for_resending (lsquic_send_ctl_t *ctl, lsquic_packet_out_t *packet_out) +{ + + lsquic_packno_t oldno, packno; + + /* When the packet is resent, it uses the same number of bytes to encode + * the packet number as the original packet. This follows the reference + * implementation. + */ + oldno = packet_out->po_packno; + packno = send_ctl_next_packno(ctl); + + packet_out->po_flags &= ~PO_SENT_SZ; + assert(packet_out->po_frame_types & ~BQUIC_FRAME_REGEN_MASK); + packet_out->po_frame_types &= ~BQUIC_FRAME_REGEN_MASK; + packet_out->po_packno = packno; + lsquic_packet_out_set_ecn(packet_out, ctl->sc_ecn); + + if (ctl->sc_ver_neg->vn_tag) + { + assert(packet_out->po_flags & PO_VERSION); /* It can only disappear */ + packet_out->po_ver_tag = *ctl->sc_ver_neg->vn_tag; + } + + assert(packet_out->po_regen_sz < packet_out->po_data_sz); + if (packet_out->po_regen_sz) + { + if (packet_out->po_flags & PO_SCHED) + ctl->sc_bytes_scheduled -= packet_out->po_regen_sz; + lsquic_packet_out_chop_regen(packet_out); + } + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "schedule resend, repackage packet " + "#%"PRIu64" -> #%"PRIu64, oldno, packno); +} + + +unsigned +lsquic_send_ctl_reschedule_packets (lsquic_send_ctl_t *ctl) +{ + lsquic_packet_out_t *packet_out; + unsigned n = 0; + + while ((packet_out = send_ctl_next_lost(ctl))) + { + //assert(packet_out->po_regen_sz < packet_out->po_data_sz); + if (packet_out->po_regen_sz >= packet_out->po_data_sz) { + LSQ_ERROR("Packet %"PRIu64" po_regen_sz is equal to po_data_sz", + packet_out->po_packno); + send_ctl_destroy_chain(ctl, packet_out, NULL); + send_ctl_destroy_packet(ctl, packet_out); + continue; + } + ++n; +#if LSQUIC_CONN_STATS + ++ctl->sc_conn_pub->conn_stats->out.retx_packets; +#endif + update_for_resending(ctl, packet_out); + lsquic_send_ctl_scheduled_one(ctl, packet_out); + } + + if (n) + LSQ_DEBUG("rescheduled %u packets", n); + + return n; +} + + +void +lsquic_send_ctl_set_tcid0 (lsquic_send_ctl_t *ctl, int tcid0) +{ + if (tcid0) + { + LSQ_INFO("set TCID flag"); + ctl->sc_flags |= SC_TCID0; + } + else + { + LSQ_INFO("unset TCID flag"); + ctl->sc_flags &= ~SC_TCID0; + } +} + + +/* The controller elides this STREAM frames of stream `stream_id' from + * scheduled and buffered packets. If a packet becomes empty as a result, + * it is dropped. + * + * Packets on other queues do not need to be processed: unacked packets + * have already been sent, and lost packets' reset stream frames will be + * elided in due time. + */ +void +lsquic_send_ctl_elide_stream_frames (lsquic_send_ctl_t *ctl, + lsquic_stream_id_t stream_id) +{ + struct lsquic_packet_out *packet_out, *next; + unsigned n, adj; + int dropped; + + dropped = 0; +#ifdef WIN32 + next = NULL; +#endif + for (packet_out = TAILQ_FIRST(&ctl->sc_scheduled_packets); packet_out; + packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + + if ((packet_out->po_frame_types & (1 << QUIC_FRAME_STREAM)) + && 0 == (packet_out->po_flags & PO_MINI)) + { + adj = lsquic_packet_out_elide_reset_stream_frames(packet_out, + stream_id); + ctl->sc_bytes_scheduled -= adj; + if (0 == packet_out->po_frame_types) + { + LSQ_DEBUG("cancel packet #%"PRIu64" after eliding frames for " + "stream %"PRIu64, packet_out->po_packno, stream_id); + send_ctl_sched_remove(ctl, packet_out); + send_ctl_destroy_chain(ctl, packet_out, NULL); + send_ctl_destroy_packet(ctl, packet_out); + ++dropped; + } + } + } + + if (dropped) + lsquic_send_ctl_reset_packnos(ctl); + + for (n = 0; n < sizeof(ctl->sc_buffered_packets) / + sizeof(ctl->sc_buffered_packets[0]); ++n) + { + for (packet_out = TAILQ_FIRST(&ctl->sc_buffered_packets[n].bpq_packets); + packet_out; packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + if (packet_out->po_frame_types & (1 << QUIC_FRAME_STREAM)) + { + lsquic_packet_out_elide_reset_stream_frames(packet_out, stream_id); + if (0 == packet_out->po_frame_types) + { + LSQ_DEBUG("cancel buffered packet in queue #%u after eliding " + "frames for stream %"PRIu64, n, stream_id); + TAILQ_REMOVE(&ctl->sc_buffered_packets[n].bpq_packets, + packet_out, po_next); + --ctl->sc_buffered_packets[n].bpq_count; + send_ctl_destroy_packet(ctl, packet_out); + LSQ_DEBUG("Elide packet from buffered queue #%u; count: %u", + n, ctl->sc_buffered_packets[n].bpq_count); + } + } + } + } +} + + +/* Count how many packets will remain after the squeezing performed by + * lsquic_send_ctl_squeeze_sched(). This is the number of delayed data + * packets. + */ +#ifndef NDEBUG +#if __GNUC__ +__attribute__((weak)) +#endif +#endif +int +lsquic_send_ctl_have_delayed_packets (const lsquic_send_ctl_t *ctl) +{ + const struct lsquic_packet_out *packet_out; + TAILQ_FOREACH(packet_out, &ctl->sc_scheduled_packets, po_next) + if (packet_out->po_regen_sz < packet_out->po_data_sz) + return 1; + return 0; +} + + +#ifndef NDEBUG +static void +send_ctl_log_packet_q (const lsquic_send_ctl_t *ctl, const char *prefix, + const struct lsquic_packets_tailq *tailq) +{ + const lsquic_packet_out_t *packet_out; + unsigned n_packets; + char *buf; + size_t bufsz; + int off; + + n_packets = 0; + TAILQ_FOREACH(packet_out, tailq, po_next) + ++n_packets; + + if (n_packets == 0) + { + LSQ_DEBUG("%s: []", prefix); + return; + } + + bufsz = n_packets * sizeof("18446744073709551615" /* UINT64_MAX */); + buf = malloc(bufsz); + if (!buf) + { + LSQ_ERROR("%s: malloc: %s", __func__, strerror(errno)); + return; + } + + off = 0; + TAILQ_FOREACH(packet_out, tailq, po_next) + { + if (off) + buf[off++] = ' '; + off += sprintf(buf + off, "%"PRIu64, packet_out->po_packno); + } + + LSQ_DEBUG("%s: [%s]", prefix, buf); + free(buf); +} + + +#define LOG_PACKET_Q(prefix, queue) do { \ + if (LSQ_LOG_ENABLED(LSQ_LOG_DEBUG)) \ + send_ctl_log_packet_q(ctl, queue, prefix); \ +} while (0) +#else +#define LOG_PACKET_Q(p, q) +#endif + + +int +lsquic_send_ctl_squeeze_sched (lsquic_send_ctl_t *ctl) +{ + struct lsquic_packet_out *packet_out, *next; + int dropped; +#ifndef NDEBUG + int pre_squeeze_logged = 0; +#endif + + dropped = 0; + for (packet_out = TAILQ_FIRST(&ctl->sc_scheduled_packets); packet_out; + packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + if (packet_out->po_regen_sz < packet_out->po_data_sz + || packet_out->po_frame_types == QUIC_FTBIT_PATH_CHALLENGE) + { + if (packet_out->po_flags & PO_ENCRYPTED) + send_ctl_return_enc_data(ctl, packet_out); + } + else + { +#ifndef NDEBUG + /* Log the whole list before we squeeze for the first time */ + if (!pre_squeeze_logged++) + LOG_PACKET_Q(&ctl->sc_scheduled_packets, + "scheduled packets before squeezing"); +#endif + send_ctl_sched_remove(ctl, packet_out); + LSQ_DEBUG("Dropping packet #%"PRIu64" from scheduled queue", + packet_out->po_packno); + send_ctl_destroy_chain(ctl, packet_out, NULL); + send_ctl_destroy_packet(ctl, packet_out); + ++dropped; + } + } + + if (dropped) + lsquic_send_ctl_reset_packnos(ctl); + +#ifndef NDEBUG + if (pre_squeeze_logged) + LOG_PACKET_Q(&ctl->sc_scheduled_packets, + "scheduled packets after squeezing"); + else if (ctl->sc_n_scheduled > 0) + LOG_PACKET_Q(&ctl->sc_scheduled_packets, "delayed packets"); +#endif + + return ctl->sc_n_scheduled > 0; +} + + +void +lsquic_send_ctl_reset_packnos (lsquic_send_ctl_t *ctl) +{ + struct lsquic_packet_out *packet_out; + + ctl->sc_cur_packno = lsquic_senhist_largest(&ctl->sc_senhist); + TAILQ_FOREACH(packet_out, &ctl->sc_scheduled_packets, po_next) + packet_out->po_flags |= PO_REPACKNO; +} + + +void +lsquic_send_ctl_ack_to_front (struct lsquic_send_ctl *ctl, unsigned n_acks) +{ + struct lsquic_packet_out *ack_packet; + + assert(n_acks > 0); + assert(ctl->sc_n_scheduled > n_acks); /* Otherwise, why is this called? */ + for ( ; n_acks > 0; --n_acks) + { + ack_packet = TAILQ_LAST(&ctl->sc_scheduled_packets, lsquic_packets_tailq); + assert(ack_packet->po_frame_types & (1 << QUIC_FRAME_ACK)); + TAILQ_REMOVE(&ctl->sc_scheduled_packets, ack_packet, po_next); + TAILQ_INSERT_HEAD(&ctl->sc_scheduled_packets, ack_packet, po_next); + } +} + + +void +lsquic_send_ctl_drop_scheduled (lsquic_send_ctl_t *ctl) +{ + struct lsquic_packet_out *packet_out, *next; + unsigned n; + + n = 0; + for (packet_out = TAILQ_FIRST(&ctl->sc_scheduled_packets); packet_out; + packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + if (0 == (packet_out->po_flags & PO_HELLO)) + { + send_ctl_sched_remove(ctl, packet_out); + send_ctl_destroy_chain(ctl, packet_out, NULL); + send_ctl_destroy_packet(ctl, packet_out); + ++n; + } + } + + ctl->sc_senhist.sh_flags |= SH_GAP_OK; + + LSQ_DEBUG("dropped %u scheduled packet%s (%u left)", n, n != 1 ? "s" : "", + ctl->sc_n_scheduled); +} + + +#ifdef NDEBUG +static +#elif __GNUC__ +__attribute__((weak)) +#endif +enum buf_packet_type +lsquic_send_ctl_determine_bpt (lsquic_send_ctl_t *ctl, + const lsquic_stream_t *stream) +{ + const lsquic_stream_t *other_stream; + struct lsquic_hash_elem *el; + struct lsquic_hash *all_streams; + + all_streams = ctl->sc_conn_pub->all_streams; + for (el = lsquic_hash_first(all_streams); el; + el = lsquic_hash_next(all_streams)) + { + other_stream = lsquic_hashelem_getdata(el); + if (other_stream != stream + && (!(other_stream->stream_flags & STREAM_U_WRITE_DONE)) + && !lsquic_stream_is_critical(other_stream) + && other_stream->sm_priority < stream->sm_priority) + return BPT_OTHER_PRIO; + } + return BPT_HIGHEST_PRIO; +} + + +static enum buf_packet_type +send_ctl_lookup_bpt (lsquic_send_ctl_t *ctl, + const struct lsquic_stream *stream) +{ + if (ctl->sc_cached_bpt.stream_id != stream->id) + { + ctl->sc_cached_bpt.stream_id = stream->id; + ctl->sc_cached_bpt.packet_type = + lsquic_send_ctl_determine_bpt(ctl, stream); + } + return ctl->sc_cached_bpt.packet_type; +} + + +static unsigned +send_ctl_max_bpq_count (const lsquic_send_ctl_t *ctl, + enum buf_packet_type packet_type) +{ + unsigned long cwnd; + unsigned count; + + switch (packet_type) + { + case BPT_OTHER_PRIO: + return MAX_BPQ_COUNT; + case BPT_HIGHEST_PRIO: + default: /* clang does not complain about absence of `default'... */ + count = ctl->sc_n_scheduled + ctl->sc_n_in_flight_retx; + cwnd = ctl->sc_ci->cci_get_cwnd(CGP(ctl)); + if (count < cwnd / SC_PACK_SIZE(ctl)) + { + count = cwnd / SC_PACK_SIZE(ctl) - count; + if (count > MAX_BPQ_COUNT) + return count; + } + return MAX_BPQ_COUNT; + } +} + + +/* If error is returned, `src' is not modified */ +static int +send_ctl_move_ack (struct lsquic_send_ctl *ctl, struct lsquic_packet_out *dst, + struct lsquic_packet_out *src) +{ + struct packet_out_frec_iter pofi; + const struct frame_rec *frec; + assert(dst->po_data_sz == 0); + + /* This checks that we only ever expect to move an ACK frame from one + * buffered packet to another. We don't generate any other regen frame + * types in buffered packets. + */ + assert(!(BQUIC_FRAME_REGEN_MASK & (1 << src->po_frame_types) + & ~QUIC_FTBIT_ACK)); + + if (lsquic_packet_out_avail(dst) >= src->po_regen_sz + && (frec = lsquic_pofi_first(&pofi, src), frec != NULL) + && frec->fe_frame_type == QUIC_FRAME_ACK) + { + memcpy(dst->po_data, src->po_data, src->po_regen_sz); + if (0 != lsquic_packet_out_add_frame(dst, &ctl->sc_enpub->enp_mm, + frec->fe_frame_type, QUIC_FRAME_ACK, dst->po_data_sz, + src->po_regen_sz)) + return -1; + dst->po_data_sz = src->po_regen_sz; + dst->po_regen_sz = src->po_regen_sz; + dst->po_frame_types |= (BQUIC_FRAME_REGEN_MASK & src->po_frame_types); + src->po_frame_types &= ~BQUIC_FRAME_REGEN_MASK; + lsquic_packet_out_chop_regen(src); + } + + return 0; +} + + +static lsquic_packet_out_t * +send_ctl_get_buffered_packet (lsquic_send_ctl_t *ctl, + enum buf_packet_type packet_type, unsigned need_at_least, + const struct network_path *path, const struct lsquic_stream *stream) +{ + struct buf_packet_q *const packet_q = + &ctl->sc_buffered_packets[packet_type]; + struct lsquic_conn *const lconn = ctl->sc_conn_pub->lconn; + lsquic_packet_out_t *packet_out; + enum packno_bits bits; + enum { AA_STEAL, AA_GENERATE, AA_NONE, } ack_action; + + packet_out = TAILQ_LAST(&packet_q->bpq_packets, lsquic_packets_tailq); + if (packet_out + && !(packet_out->po_flags & PO_STREAM_END) + && lsquic_packet_out_avail(packet_out) >= need_at_least) + { + return packet_out; + } + + if (packet_q->bpq_count >= send_ctl_max_bpq_count(ctl, packet_type)) + return NULL; + + if (packet_q->bpq_count == 0) + { + /* If ACK was written to the low-priority queue first, steal it */ + if (packet_q == &ctl->sc_buffered_packets[BPT_HIGHEST_PRIO] + && !TAILQ_EMPTY(&ctl->sc_buffered_packets[BPT_OTHER_PRIO].bpq_packets) + && (TAILQ_FIRST(&ctl->sc_buffered_packets[BPT_OTHER_PRIO].bpq_packets) + ->po_frame_types & QUIC_FTBIT_ACK)) + { + LSQ_DEBUG("steal ACK frame from low-priority buffered queue"); + ack_action = AA_STEAL; + bits = ctl->sc_max_packno_bits; + } + /* If ACK can be generated, write it to the first buffered packet. */ + else if (lconn->cn_if->ci_can_write_ack(lconn)) + { + LSQ_DEBUG("generate ACK frame for first buffered packet in " + "queue #%u", packet_type); + ack_action = AA_GENERATE; + /* Packet length is set to the largest possible size to guarantee + * that buffered packet with the ACK will not need to be split. + */ + bits = ctl->sc_max_packno_bits; + } + else + goto no_ack_action; + } + else + { + no_ack_action: + ack_action = AA_NONE; + bits = lsquic_send_ctl_guess_packno_bits(ctl); + } + + packet_out = send_ctl_allocate_packet(ctl, bits, need_at_least, PNS_APP, + path); + if (!packet_out) + return NULL; + + switch (ack_action) + { + case AA_STEAL: + if (0 != send_ctl_move_ack(ctl, packet_out, + TAILQ_FIRST(&ctl->sc_buffered_packets[BPT_OTHER_PRIO].bpq_packets))) + { + LSQ_INFO("cannot move ack"); + lsquic_packet_out_destroy(packet_out, ctl->sc_enpub, + packet_out->po_path->np_peer_ctx); + return NULL; + } + break; + case AA_GENERATE: + lconn->cn_if->ci_write_ack(lconn, packet_out); + break; + case AA_NONE: + break; + } + + TAILQ_INSERT_TAIL(&packet_q->bpq_packets, packet_out, po_next); + ++packet_q->bpq_count; + LSQ_DEBUG("Add new packet to buffered queue #%u; count: %u", + packet_type, packet_q->bpq_count); + return packet_out; +} + + +static void +send_ctl_maybe_flush_decoder (struct lsquic_send_ctl *ctl, + const struct lsquic_stream *caller) +{ + struct lsquic_stream *decoder; + + if ((ctl->sc_flags & SC_IETF) && ctl->sc_conn_pub->u.ietf.qdh) + { + decoder = ctl->sc_conn_pub->u.ietf.qdh->qdh_dec_sm_out; + if (decoder && decoder != caller + && lsquic_stream_has_data_to_flush(decoder)) + { + LSQ_DEBUG("flushing decoder stream"); + lsquic_stream_flush(decoder); + } + } +} + + +lsquic_packet_out_t * +lsquic_send_ctl_get_packet_for_stream (lsquic_send_ctl_t *ctl, + unsigned need_at_least, const struct network_path *path, + const struct lsquic_stream *stream) +{ + enum buf_packet_type packet_type; + + if (lsquic_send_ctl_schedule_stream_packets_immediately(ctl)) + return lsquic_send_ctl_get_writeable_packet(ctl, PNS_APP, + need_at_least, path, 0, NULL); + else + { + if (!lsquic_send_ctl_has_buffered(ctl)) + send_ctl_maybe_flush_decoder(ctl, stream); + packet_type = send_ctl_lookup_bpt(ctl, stream); + return send_ctl_get_buffered_packet(ctl, packet_type, need_at_least, + path, stream); + } +} + + +/* Return true if generated, false otherwise */ +int +lsquic_sendctl_gen_stream_blocked_frame (struct lsquic_send_ctl *ctl, + struct lsquic_stream *stream) +{ + struct lsquic_packet_out *packet_out; + const struct parse_funcs *const pf = stream->conn_pub->lconn->cn_pf; + unsigned need; + uint64_t off; + int sz; + int is_err; + + off = lsquic_stream_combined_send_off(stream); + need = pf->pf_stream_blocked_frame_size(stream->id, off); + packet_out = lsquic_send_ctl_get_packet_for_stream(ctl, need, + stream->conn_pub->path, stream); + if (!packet_out) + { + LSQ_DEBUG("failed to get packet_out with lsquic_send_ctl_get_packet_for_stream"); + packet_out = lsquic_send_ctl_get_writeable_packet(ctl, + PNS_APP, need, stream->conn_pub->path, 0, &is_err); + if (!packet_out) + { + LSQ_DEBUG("cannot get writeable packet for STREAM_BLOCKED frame"); + return 0; + } + } + sz = pf->pf_gen_stream_blocked_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), stream->id, off); + if (sz < 0) + return 0; + LSQ_DEBUG("generated %d-byte STREAM_BLOCKED " + "frame; stream_id: %"PRIu64"; offset: %"PRIu64, sz, stream->id, off); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, "generated %d-byte STREAM_BLOCKED " + "frame; stream_id: %"PRIu64"; offset: %"PRIu64, sz, stream->id, off); + if (0 != lsquic_packet_out_add_frame(packet_out, &ctl->sc_enpub->enp_mm, 0, + QUIC_FRAME_STREAM_BLOCKED, packet_out->po_data_sz, sz)) + return 0; + lsquic_send_ctl_incr_pack_sz(ctl, packet_out, sz); + packet_out->po_frame_types |= 1 << QUIC_FRAME_STREAM_BLOCKED; + lsquic_stream_blocked_frame_sent(stream); + return 1; +} + + +#ifdef NDEBUG +static +#elif __GNUC__ +__attribute__((weak)) +#endif +enum packno_bits +lsquic_send_ctl_calc_packno_bits (lsquic_send_ctl_t *ctl) +{ + lsquic_packno_t smallest_unacked; + enum packno_bits bits; + unsigned n_in_flight; + unsigned long cwnd; + const struct parse_funcs *pf; + + pf = ctl->sc_conn_pub->lconn->cn_pf; + + smallest_unacked = lsquic_send_ctl_smallest_unacked(ctl); + cwnd = ctl->sc_ci->cci_get_cwnd(CGP(ctl)); + n_in_flight = cwnd / SC_PACK_SIZE(ctl); + bits = pf->pf_calc_packno_bits(ctl->sc_cur_packno + 1, smallest_unacked, + n_in_flight); + if (bits <= ctl->sc_max_packno_bits) + return bits; + else + return ctl->sc_max_packno_bits; +} + + +enum packno_bits +lsquic_send_ctl_packno_bits (struct lsquic_send_ctl *ctl, + enum packnum_space pns) +{ + if ((ctl->sc_flags & (SC_ACK_RECV_INIT << pns)) + && lsquic_send_ctl_schedule_stream_packets_immediately(ctl)) + return lsquic_send_ctl_calc_packno_bits(ctl); + else if (ctl->sc_flags & (SC_ACK_RECV_INIT << pns)) + return lsquic_send_ctl_guess_packno_bits(ctl); + else +/* From [draft-ietf-quic-transport-31] Section 17.1: + * + " Prior to receiving an acknowledgement for a packet number space, the + " full packet number MUST be included; it is not to be truncated as + " described below. + */ + return vint_val2bits(ctl->sc_cur_packno + 1); +} + + +struct resize_one_packet_ctx +{ + struct lsquic_send_ctl *const ctl; + struct lsquic_packet_out *const victim; + const struct network_path *const path; + const enum packnum_space pns; + int discarded, fetched; +}; + + +static struct lsquic_packet_out * +resize_one_next_packet (void *ctx) +{ + struct resize_one_packet_ctx *const one_ctx = ctx; + + if (one_ctx->fetched) + return NULL; + + ++one_ctx->fetched; + return one_ctx->victim; +} + + +static void +resize_one_discard_packet (void *ctx, struct lsquic_packet_out *packet_out) +{ + struct resize_one_packet_ctx *const one_ctx = ctx; + + /* Delay discarding the packet: we need it for TAILQ_INSERT_BEFORE */ + ++one_ctx->discarded; +} + + +static struct lsquic_packet_out * +resize_one_new_packet (void *ctx) +{ + struct resize_one_packet_ctx *const one_ctx = ctx; + struct lsquic_send_ctl *const ctl = one_ctx->ctl; + struct lsquic_packet_out *packet_out; + enum packno_bits bits; + + bits = lsquic_send_ctl_calc_packno_bits(ctl); + packet_out = send_ctl_allocate_packet(ctl, bits, 0, one_ctx->pns, + one_ctx->path); + return packet_out; +} + + +static const struct packet_resize_if resize_one_funcs = +{ + resize_one_next_packet, + resize_one_discard_packet, + resize_one_new_packet, +}; + + +static int +split_buffered_packet (lsquic_send_ctl_t *ctl, + enum buf_packet_type packet_type, struct lsquic_packet_out *packet_out) +{ + struct buf_packet_q *const packet_q = + &ctl->sc_buffered_packets[packet_type]; + struct lsquic_conn *const lconn = ctl->sc_conn_pub->lconn; + struct lsquic_packet_out *new; + struct packet_resize_ctx prctx; + struct resize_one_packet_ctx one_ctx = { + ctl, packet_out, packet_out->po_path, + lsquic_packet_out_pns(packet_out), 0, 0, + }; + unsigned count; + + assert(TAILQ_FIRST(&packet_q->bpq_packets) == packet_out); + + lsquic_packet_resize_init(&prctx, ctl->sc_enpub, lconn, &one_ctx, + &resize_one_funcs); + count = 0; + while (new = lsquic_packet_resize_next(&prctx), new != NULL) + { + ++count; + TAILQ_INSERT_BEFORE(packet_out, new, po_next); + ++packet_q->bpq_count; + LSQ_DEBUG("Add split packet to buffered queue #%u; count: %u", + packet_type, packet_q->bpq_count); + } + if (lsquic_packet_resize_is_error(&prctx)) + { + LSQ_WARN("error resizing buffered packet #%"PRIu64, + packet_out->po_packno); + return -1; + } + if (!(count > 1 && one_ctx.fetched == 1 && one_ctx.discarded == 1)) + { + /* A bit of insurance, this being new code */ + LSQ_WARN("unexpected values resizing buffered packet: count: %u; " + "fetched: %d; discarded: %d", count, one_ctx.fetched, + one_ctx.discarded); + return -1; + } + LSQ_DEBUG("added %u packets to the buffered queue #%u", count, packet_type); + + LSQ_DEBUG("drop oversized buffered packet #%"PRIu64, packet_out->po_packno); + TAILQ_REMOVE(&packet_q->bpq_packets, packet_out, po_next); + --packet_q->bpq_count; + assert(packet_out->po_loss_chain == packet_out); + send_ctl_destroy_packet(ctl, packet_out); + return 0; +} + + +int +lsquic_send_ctl_schedule_buffered (lsquic_send_ctl_t *ctl, + enum buf_packet_type packet_type) +{ + struct buf_packet_q *const packet_q = + &ctl->sc_buffered_packets[packet_type]; + const struct parse_funcs *const pf = ctl->sc_conn_pub->lconn->cn_pf; + lsquic_packet_out_t *packet_out; + unsigned used; + + assert(lsquic_send_ctl_schedule_stream_packets_immediately(ctl)); + const enum packno_bits bits = lsquic_send_ctl_calc_packno_bits(ctl); + const unsigned need = pf->pf_packno_bits2len(bits); + + while ((packet_out = TAILQ_FIRST(&packet_q->bpq_packets)) && + lsquic_send_ctl_can_send(ctl)) + { + if ((packet_out->po_frame_types & QUIC_FTBIT_ACK) + && packet_out->po_ack2ed < ctl->sc_largest_acked) + { + /* Chrome watches for a decrease in the value of the Largest + * Observed field of the ACK frame and marks it as an error: + * this is why we have to send out ACK in the order they were + * generated. + */ + LSQ_DEBUG("Remove out-of-order ACK from buffered packet"); + lsquic_packet_out_chop_regen(packet_out); + if (packet_out->po_data_sz == 0) + { + LSQ_DEBUG("Dropping now-empty buffered packet"); + TAILQ_REMOVE(&packet_q->bpq_packets, packet_out, po_next); + --packet_q->bpq_count; + send_ctl_destroy_packet(ctl, packet_out); + continue; + } + } + if (bits != lsquic_packet_out_packno_bits(packet_out)) + { + used = pf->pf_packno_bits2len( + lsquic_packet_out_packno_bits(packet_out)); + if (need > used + && need - used > lsquic_packet_out_avail(packet_out)) + { + if (0 == split_buffered_packet(ctl, packet_type, packet_out)) + packet_out = TAILQ_FIRST(&packet_q->bpq_packets); + else + return -1; + } + } + TAILQ_REMOVE(&packet_q->bpq_packets, packet_out, po_next); + --packet_q->bpq_count; + packet_out->po_packno = send_ctl_next_packno(ctl); + LSQ_DEBUG("Remove packet from buffered queue #%u; count: %u. " + "It becomes packet #%"PRIu64, packet_type, packet_q->bpq_count, + packet_out->po_packno); + lsquic_send_ctl_scheduled_one(ctl, packet_out); + } + + return 0; +} + + +int +lsquic_send_ctl_turn_on_fin (struct lsquic_send_ctl *ctl, + const struct lsquic_stream *stream) +{ + enum buf_packet_type packet_type; + struct buf_packet_q *packet_q; + lsquic_packet_out_t *packet_out; + const struct parse_funcs *pf; + + pf = ctl->sc_conn_pub->lconn->cn_pf; + packet_type = send_ctl_lookup_bpt(ctl, stream); + packet_q = &ctl->sc_buffered_packets[packet_type]; + + TAILQ_FOREACH_REVERSE(packet_out, &packet_q->bpq_packets, + lsquic_packets_tailq, po_next) + if (0 == lsquic_packet_out_turn_on_fin(packet_out, pf, stream)) + return 0; + + TAILQ_FOREACH(packet_out, &ctl->sc_scheduled_packets, po_next) + if (0 == packet_out->po_sent + && 0 == lsquic_packet_out_turn_on_fin(packet_out, pf, stream)) + { + return 0; + } + + return -1; +} + + +size_t +lsquic_send_ctl_mem_used (const struct lsquic_send_ctl *ctl) +{ + const lsquic_packet_out_t *packet_out; + unsigned n; + size_t size; + const struct lsquic_packets_tailq queues[] = { + ctl->sc_scheduled_packets, + ctl->sc_unacked_packets[PNS_INIT], + ctl->sc_unacked_packets[PNS_HSK], + ctl->sc_unacked_packets[PNS_APP], + ctl->sc_lost_packets, + ctl->sc_buffered_packets[0].bpq_packets, + ctl->sc_buffered_packets[1].bpq_packets, + }; + + size = sizeof(*ctl); + + for (n = 0; n < sizeof(queues) / sizeof(queues[0]); ++n) + TAILQ_FOREACH(packet_out, &queues[n], po_next) + size += lsquic_packet_out_mem_used(packet_out); + + return size; +} + + +void +lsquic_send_ctl_verneg_done (struct lsquic_send_ctl *ctl) +{ + ctl->sc_max_packno_bits = PACKNO_BITS_3; + LSQ_DEBUG("version negotiation done (%s): max packno bits: %u", + lsquic_ver2str[ ctl->sc_conn_pub->lconn->cn_version ], + ctl->sc_max_packno_bits); +} + + +static void +strip_trailing_padding (struct lsquic_packet_out *packet_out) +{ + struct packet_out_frec_iter pofi; + const struct frame_rec *frec; + unsigned off; + + off = 0; + for (frec = lsquic_pofi_first(&pofi, packet_out); frec; + frec = lsquic_pofi_next(&pofi)) + off = frec->fe_off + frec->fe_len; + + assert(off); + + packet_out->po_data_sz = off; + packet_out->po_frame_types &= ~QUIC_FTBIT_PADDING; +} + + +static int +split_lost_packet (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *const packet_out) +{ + struct lsquic_conn *const lconn = ctl->sc_conn_pub->lconn; + struct lsquic_packet_out *new; + struct packet_resize_ctx prctx; + struct resize_one_packet_ctx one_ctx = { + ctl, packet_out, packet_out->po_path, + lsquic_packet_out_pns(packet_out), 0, 0, + }; + unsigned count; + + assert(packet_out->po_flags & PO_LOST); + + lsquic_packet_resize_init(&prctx, ctl->sc_enpub, lconn, &one_ctx, + &resize_one_funcs); + count = 0; + while (new = lsquic_packet_resize_next(&prctx), new != NULL) + { + ++count; + TAILQ_INSERT_BEFORE(packet_out, new, po_next); + new->po_flags |= PO_LOST; + } + if (lsquic_packet_resize_is_error(&prctx)) + { + LSQ_WARN("error resizing lost packet #%"PRIu64, packet_out->po_packno); + return -1; + } + if (!(count > 1 && one_ctx.fetched == 1 && one_ctx.discarded == 1)) + { + /* A bit of insurance, this being new code */ + LSQ_WARN("unexpected values resizing lost packet: count: %u; " + "fetched: %d; discarded: %d", count, one_ctx.fetched, + one_ctx.discarded); + return -1; + } + LSQ_DEBUG("added %u packets to the lost queue", count); + + LSQ_DEBUG("drop oversized lost packet #%"PRIu64, packet_out->po_packno); + TAILQ_REMOVE(&ctl->sc_lost_packets, packet_out, po_next); + packet_out->po_flags &= ~PO_LOST; + send_ctl_destroy_chain(ctl, packet_out, NULL); + send_ctl_destroy_packet(ctl, packet_out); + return 0; +} + + +int +lsquic_send_ctl_retry (struct lsquic_send_ctl *ctl, + const unsigned char *token, size_t token_sz) +{ + struct lsquic_packet_out *packet_out, *next; + struct lsquic_conn *const lconn = ctl->sc_conn_pub->lconn; + size_t sz; + + if (token_sz >= 1ull << (sizeof(packet_out->po_token_len) * 8)) + { + LSQ_WARN("token size %zu is too long", token_sz); + return -1; + } + + ++ctl->sc_retry_count; + if (ctl->sc_retry_count > 3) + { + LSQ_INFO("failing connection after %u retries", ctl->sc_retry_count); + return -1; + } + + send_ctl_expire(ctl, PNS_INIT, EXFI_ALL); + + if (0 != lsquic_send_ctl_set_token(ctl, token, token_sz)) + return -1; + + for (packet_out = TAILQ_FIRST(&ctl->sc_lost_packets); packet_out; packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + if (HETY_INITIAL != packet_out->po_header_type) + continue; + + if (packet_out->po_nonce) + { + free(packet_out->po_nonce); + packet_out->po_nonce = NULL; + packet_out->po_flags &= ~PO_NONCE; + } + + if (0 != send_ctl_set_packet_out_token(ctl, packet_out)) + { + LSQ_INFO("cannot set out token on packet"); + return -1; + } + + if (packet_out->po_frame_types & QUIC_FTBIT_PADDING) + strip_trailing_padding(packet_out); + + sz = lconn->cn_pf->pf_packout_size(lconn, packet_out); + if (sz > packet_out->po_path->np_pack_size + && 0 != split_lost_packet(ctl, packet_out)) + return -1; + } + + return 0; +} + + +int +lsquic_send_ctl_set_token (struct lsquic_send_ctl *ctl, + const unsigned char *token, size_t token_sz) +{ + unsigned char *copy; + + if (token_sz > 1 << + (sizeof(((struct lsquic_packet_out *)0)->po_token_len) * 8)) + { + errno = EINVAL; + return -1; + } + + copy = malloc(token_sz); + if (!copy) + return -1; + memcpy(copy, token, token_sz); + free(ctl->sc_token); + ctl->sc_token = copy; + ctl->sc_token_sz = token_sz; + LSQ_DEBUG("set token"); + return 0; +} + + +void +lsquic_send_ctl_maybe_calc_rough_rtt (struct lsquic_send_ctl *ctl, + enum packnum_space pns) +{ + const struct lsquic_packet_out *packet_out; + lsquic_time_t min_sent, rtt; + struct lsquic_packets_tailq *const *q; + struct lsquic_packets_tailq *const queues[] = { + &ctl->sc_lost_packets, + &ctl->sc_unacked_packets[pns], + }; + + if ((ctl->sc_flags & SC_ROUGH_RTT) + || lsquic_rtt_stats_get_srtt(&ctl->sc_conn_pub->rtt_stats)) + return; + + min_sent = UINT64_MAX; + for (q = queues; q < queues + sizeof(queues) / sizeof(queues[0]); ++q) + TAILQ_FOREACH(packet_out, *q, po_next) + if (min_sent > packet_out->po_sent) + min_sent = packet_out->po_sent; + + /* If we do not have an RTT estimate yet, get a rough estimate of it, + * because now we will ignore packets that carry acknowledgements and + * RTT estimation may be delayed. + */ + if (min_sent < UINT64_MAX) + { + rtt = lsquic_time_now() - min_sent; + if (rtt > 500000) + rtt = 500000; + lsquic_rtt_stats_update(&ctl->sc_conn_pub->rtt_stats, rtt, 0); + ctl->sc_flags |= SC_ROUGH_RTT; + LSQ_DEBUG("set rough RTT to %"PRIu64" usec", rtt); + } +} + + +void +lsquic_send_ctl_empty_pns (struct lsquic_send_ctl *ctl, enum packnum_space pns) +{ + lsquic_packet_out_t *packet_out, *next; + unsigned count, packet_sz; + struct lsquic_packets_tailq *const *q; + struct lsquic_packets_tailq *const queues[] = { + &ctl->sc_lost_packets, + &ctl->sc_buffered_packets[0].bpq_packets, + &ctl->sc_buffered_packets[1].bpq_packets, + }; + + /* Don't bother with chain destruction, as all chains members are always + * within the same packet number space + */ + + count = 0; + for (packet_out = TAILQ_FIRST(&ctl->sc_scheduled_packets); packet_out; + packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + if (pns == lsquic_packet_out_pns(packet_out)) + { + send_ctl_maybe_renumber_sched_to_right(ctl, packet_out); + send_ctl_sched_remove(ctl, packet_out); + send_ctl_destroy_packet(ctl, packet_out); + ++count; + } + } + + for (packet_out = TAILQ_FIRST(&ctl->sc_unacked_packets[pns]); packet_out; + packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + if (packet_out->po_flags & (PO_LOSS_REC|PO_POISON)) + TAILQ_REMOVE(&ctl->sc_unacked_packets[pns], packet_out, po_next); + else + { + packet_sz = packet_out_sent_sz(packet_out); + send_ctl_unacked_remove(ctl, packet_out, packet_sz); + lsquic_packet_out_ack_streams(packet_out); + } + send_ctl_destroy_packet(ctl, packet_out); + ++count; + } + + for (q = queues; q < queues + sizeof(queues) / sizeof(queues[0]); ++q) + for (packet_out = TAILQ_FIRST(*q); packet_out; packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + if (pns == lsquic_packet_out_pns(packet_out)) + { + TAILQ_REMOVE(*q, packet_out, po_next); + send_ctl_destroy_packet(ctl, packet_out); + ++count; + } + } + + lsquic_alarmset_unset(ctl->sc_alset, AL_RETX_INIT + pns); + + ctl->sc_flags &= ~(SC_LOST_ACK_INIT << pns); + + LSQ_DEBUG("emptied %s, destroyed %u packet%.*s", lsquic_pns2str[pns], + count, count != 1, "s"); +} + + +struct resize_many_packet_ctx +{ + struct lsquic_send_ctl *ctl; + struct lsquic_packets_tailq input_q; + const struct network_path *path; +}; + + +static struct lsquic_packet_out * +resize_many_next_packet (void *ctx) +{ + struct resize_many_packet_ctx *const many_ctx = ctx; + struct lsquic_packet_out *packet_out; + + packet_out = TAILQ_FIRST(&many_ctx->input_q); + if (packet_out) + TAILQ_REMOVE(&many_ctx->input_q, packet_out, po_next); + + return packet_out; +} + + +static void +resize_many_discard_packet (void *ctx, struct lsquic_packet_out *packet_out) +{ + struct resize_many_packet_ctx *const many_ctx = ctx; + struct lsquic_send_ctl *const ctl = many_ctx->ctl; + + send_ctl_destroy_chain(ctl, packet_out, NULL); + send_ctl_destroy_packet(ctl, packet_out); +} + + +static struct lsquic_packet_out * +resize_many_new_packet (void *ctx) +{ + struct resize_many_packet_ctx *const many_ctx = ctx; + struct lsquic_send_ctl *const ctl = many_ctx->ctl; + struct lsquic_packet_out *packet_out; + enum packno_bits bits; + + bits = lsquic_send_ctl_calc_packno_bits(ctl); + packet_out = send_ctl_allocate_packet(ctl, bits, 0, PNS_APP, + many_ctx->path); + return packet_out; +} + + +static const struct packet_resize_if resize_many_funcs = +{ + resize_many_next_packet, + resize_many_discard_packet, + resize_many_new_packet, +}; + + +static void +send_ctl_resize_q (struct lsquic_send_ctl *ctl, struct lsquic_packets_tailq *q, + const struct network_path *const path) +{ + struct lsquic_conn *const lconn = ctl->sc_conn_pub->lconn; + struct lsquic_packet_out *next, *packet_out; + struct resize_many_packet_ctx many_ctx; + struct packet_resize_ctx prctx; + const char *q_name; + unsigned count_src = 0, count_dst = 0; + int idx; + +#ifdef _MSC_VER + idx = 0; +#endif + + /* Initialize input, removing packets from source queue, filtering by path. + * Note: this may reorder packets from different paths. + */ + many_ctx.ctl = ctl; + many_ctx.path = path; + TAILQ_INIT(&many_ctx.input_q); + if (q == &ctl->sc_scheduled_packets) + { + ctl->sc_cur_packno = lsquic_senhist_largest(&ctl->sc_senhist); + q_name = "scheduled"; + for (packet_out = TAILQ_FIRST(q); packet_out != NULL; packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + if (packet_out->po_path == path + && !(packet_out->po_flags & PO_MTU_PROBE)) + { + send_ctl_sched_remove(ctl, packet_out); + TAILQ_INSERT_TAIL(&many_ctx.input_q, packet_out, po_next); + ++count_src; + } + } + } + else + { + /* This function only deals with scheduled or buffered queues */ + assert(q == &ctl->sc_buffered_packets[0].bpq_packets + || q == &ctl->sc_buffered_packets[1].bpq_packets); + idx = q == &ctl->sc_buffered_packets[1].bpq_packets; + q_name = "buffered"; + for (packet_out = TAILQ_FIRST(q); packet_out != NULL; packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + if (packet_out->po_path == path) + { + TAILQ_REMOVE(q, packet_out, po_next); + --ctl->sc_buffered_packets[idx].bpq_count; + TAILQ_INSERT_TAIL(&many_ctx.input_q, packet_out, po_next); + ++count_src; + } + } + } + lsquic_packet_resize_init(&prctx, ctl->sc_enpub, lconn, &many_ctx, + &resize_many_funcs); + + /* Get new packets, appending them to appropriate queue */ + if (q == &ctl->sc_scheduled_packets) + while (packet_out = lsquic_packet_resize_next(&prctx), packet_out != NULL) + { + ++count_dst; + packet_out->po_packno = send_ctl_next_packno(ctl); + send_ctl_sched_append(ctl, packet_out); + LSQ_DEBUG("created packet #%"PRIu64, packet_out->po_packno); + EV_LOG_PACKET_CREATED(LSQUIC_LOG_CONN_ID, packet_out); + } + else + while (packet_out = lsquic_packet_resize_next(&prctx), packet_out != NULL) + { + ++count_dst; + TAILQ_INSERT_TAIL(q, packet_out, po_next); + ++ctl->sc_buffered_packets[idx].bpq_count; + } + + /* Verify success */ + if (lsquic_packet_resize_is_error(&prctx)) + { + LSQ_WARN("error resizing packets in %s queue", q_name); + goto err; + } + if (count_dst < 1 || !TAILQ_EMPTY(&many_ctx.input_q)) + { + /* A bit of insurance, this being new code */ + LSQ_WARN("unexpected values resizing packets in %s queue: count: %d; " + "empty: %d", q_name, count_dst, TAILQ_EMPTY(&many_ctx.input_q)); + goto err; + } + LSQ_DEBUG("resized %u packets in %s queue, outputting %u packets", + count_src, q_name, count_dst); + return; + + err: + lconn->cn_if->ci_internal_error(lconn, "error resizing packets"); + return; +} + + +void +lsquic_send_ctl_repath (struct lsquic_send_ctl *ctl, + const struct network_path *old, const struct network_path *new, + int keep_path_properties) +{ + struct lsquic_packet_out *packet_out; + unsigned count; + struct lsquic_packets_tailq *const *q; + struct lsquic_packets_tailq *const queues[] = { + &ctl->sc_scheduled_packets, + &ctl->sc_unacked_packets[PNS_INIT], + &ctl->sc_unacked_packets[PNS_HSK], + &ctl->sc_unacked_packets[PNS_APP], + &ctl->sc_lost_packets, + &ctl->sc_buffered_packets[0].bpq_packets, + &ctl->sc_buffered_packets[1].bpq_packets, + }; + + assert(ctl->sc_flags & SC_IETF); + + count = 0; + for (q = queues; q < queues + sizeof(queues) / sizeof(queues[0]); ++q) + TAILQ_FOREACH(packet_out, *q, po_next) + if (packet_out->po_path == old) + { + ++count; + packet_out->po_path = new; + if (packet_out->po_flags & PO_ENCRYPTED) + send_ctl_return_enc_data(ctl, packet_out); + if (packet_out->po_frame_types + & (QUIC_FTBIT_PATH_CHALLENGE|QUIC_FTBIT_PATH_RESPONSE)) + /* This is a corner case, we just want to avoid protocol + * violation. No optimization is done. If we happen to + * send a packet of padding, oh well. + */ + lsquic_packet_out_pad_over(packet_out, + QUIC_FTBIT_PATH_CHALLENGE|QUIC_FTBIT_PATH_RESPONSE); + } + + LSQ_DEBUG("repathed %u packet%.*s", count, count != 1, "s"); + + if (keep_path_properties) + LSQ_DEBUG("keeping path properties: MTU, RTT, and CC state"); + else + { + lsquic_send_ctl_resize(ctl); + memset(&ctl->sc_conn_pub->rtt_stats, 0, + sizeof(ctl->sc_conn_pub->rtt_stats)); + ctl->sc_ci->cci_reinit(CGP(ctl)); + } +} + + +/* Drop PATH_CHALLENGE and PATH_RESPONSE packets for path `path'. */ +void +lsquic_send_ctl_cancel_path_verification (struct lsquic_send_ctl *ctl, + const struct network_path *path) +{ + struct lsquic_packet_out *packet_out, *next; + + /* We need only to examine the scheduled queue as lost challenges and + * responses are not retransmitted. + */ + for (packet_out = TAILQ_FIRST(&ctl->sc_scheduled_packets); packet_out; + packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + if (packet_out->po_path == path) + { + assert((packet_out->po_frame_types + & (QUIC_FTBIT_PATH_CHALLENGE|QUIC_FTBIT_PATH_RESPONSE)) + || packet_out->po_frame_types == QUIC_FTBIT_PADDING); + assert(!(packet_out->po_frame_types & ctl->sc_retx_frames)); + send_ctl_maybe_renumber_sched_to_right(ctl, packet_out); + send_ctl_sched_remove(ctl, packet_out); + assert(packet_out->po_loss_chain == packet_out); + send_ctl_destroy_packet(ctl, packet_out); + } + } +} + + +/* Examine packets in scheduled and buffered queues and resize packets if + * they exceed path MTU. + */ +void +lsquic_send_ctl_resize (struct lsquic_send_ctl *ctl) +{ + struct lsquic_conn *const lconn = ctl->sc_conn_pub->lconn; + struct lsquic_packet_out *packet_out; + struct lsquic_packets_tailq *const *q; + struct lsquic_packets_tailq *const queues[] = { + &ctl->sc_scheduled_packets, + &ctl->sc_buffered_packets[0].bpq_packets, + &ctl->sc_buffered_packets[1].bpq_packets, + }; + size_t size; + int path_ids /* assuming a reasonable number of paths */, q_idxs; + + assert(ctl->sc_flags & SC_IETF); + + q_idxs = 0; + for (q = queues; q < queues + sizeof(queues) / sizeof(queues[0]); ++q) + { + path_ids = 0; + redo_q: + TAILQ_FOREACH(packet_out, *q, po_next) + if (0 == (path_ids & (1 << packet_out->po_path->np_path_id)) + && !(packet_out->po_flags & PO_MTU_PROBE)) + { + size = lsquic_packet_out_total_sz(lconn, packet_out); + if (size > packet_out->po_path->np_pack_size) + { + path_ids |= 1 << packet_out->po_path->np_path_id; + q_idxs |= 1 << (q - queues); + send_ctl_resize_q(ctl, *q, packet_out->po_path); + goto redo_q; + } + } + } + + LSQ_DEBUG("resized packets in queues: 0x%X", q_idxs); + lsquic_send_ctl_sanity_check(ctl); +} + + +void +lsquic_send_ctl_return_enc_data (struct lsquic_send_ctl *ctl) +{ + struct lsquic_packet_out *packet_out; + + assert(!(ctl->sc_flags & SC_IETF)); + + TAILQ_FOREACH(packet_out, &ctl->sc_scheduled_packets, po_next) + if (packet_out->po_flags & PO_ENCRYPTED) + send_ctl_return_enc_data(ctl, packet_out); +} + + +/* When client updated DCID based on the first packet returned by the server, + * we must update the number of bytes scheduled if the DCID length changed + * because this length is used to calculate packet size. + */ +void +lsquic_send_ctl_cidlen_change (struct lsquic_send_ctl *ctl, + unsigned orig_cid_len, unsigned new_cid_len) +{ + unsigned diff; + + assert(!(ctl->sc_conn_pub->lconn->cn_flags & LSCONN_SERVER)); + if (ctl->sc_n_scheduled) + { + ctl->sc_flags |= SC_CIDLEN; + ctl->sc_cidlen = (signed char) new_cid_len - (signed char) orig_cid_len; + if (new_cid_len > orig_cid_len) + { + diff = new_cid_len - orig_cid_len; + diff *= ctl->sc_n_scheduled; + ctl->sc_bytes_scheduled += diff; + LSQ_DEBUG("increased bytes scheduled by %u bytes to %u", + diff, ctl->sc_bytes_scheduled); + } + else if (new_cid_len < orig_cid_len) + { + diff = orig_cid_len - new_cid_len; + diff *= ctl->sc_n_scheduled; + ctl->sc_bytes_scheduled -= diff; + LSQ_DEBUG("decreased bytes scheduled by %u bytes to %u", + diff, ctl->sc_bytes_scheduled); + } + else + LSQ_DEBUG("DCID length did not change"); + } + else + LSQ_DEBUG("no scheduled packets at the time of DCID change"); +} + + +void +lsquic_send_ctl_begin_optack_detection (struct lsquic_send_ctl *ctl) +{ + uint8_t rand; + + rand = lsquic_crand_get_byte(ctl->sc_enpub->enp_crand); + ctl->sc_gap = ctl->sc_cur_packno + 1 + rand; +} + + +void +lsquic_send_ctl_path_validated (struct lsquic_send_ctl *ctl) +{ + LSQ_DEBUG("path validated: switch to regular can_send"); + ctl->sc_can_send = send_ctl_can_send; +} + + +int +lsquic_send_ctl_can_send_probe (const struct lsquic_send_ctl *ctl, + const struct network_path *path) +{ + uint64_t cwnd, pacing_rate; + lsquic_time_t tx_time; + unsigned n_out; + + assert(!send_ctl_in_recovery(ctl)); + + n_out = send_ctl_all_bytes_out(ctl); + cwnd = ctl->sc_ci->cci_get_cwnd(CGP(ctl)); + if (ctl->sc_flags & SC_PACE) + { + if (n_out + path->np_pack_size >= cwnd) + return 0; + pacing_rate = ctl->sc_ci->cci_pacing_rate(CGP(ctl), 0); + if (!pacing_rate) + pacing_rate = 1; + tx_time = (uint64_t) path->np_pack_size * 1000000 / pacing_rate; + return lsquic_pacer_can_schedule_probe(&ctl->sc_pacer, + ctl->sc_n_scheduled + ctl->sc_n_in_flight_all, tx_time); + } + else + return n_out + path->np_pack_size < cwnd; +} + + +void +lsquic_send_ctl_disable_ecn (struct lsquic_send_ctl *ctl) +{ + struct lsquic_packet_out *packet_out; + + LSQ_INFO("disable ECN"); + ctl->sc_ecn = ECN_NOT_ECT; + TAILQ_FOREACH(packet_out, &ctl->sc_scheduled_packets, po_next) + lsquic_packet_out_set_ecn(packet_out, ECN_NOT_ECT); +} + + +void +lsquic_send_ctl_snapshot (struct lsquic_send_ctl *ctl, + struct send_ctl_state *ctl_state) +{ + struct lsquic_conn *const lconn = ctl->sc_conn_pub->lconn; + int buffered, repace; + + buffered = !lsquic_send_ctl_schedule_stream_packets_immediately(ctl); + repace = !buffered && (ctl->sc_flags & SC_PACE); + + if (repace) + ctl_state->pacer = ctl->sc_pacer; + + if (buffered) + { + lconn->cn_if->ci_ack_snapshot(lconn, &ctl_state->ack_state); + ctl_state->buf_counts[BPT_OTHER_PRIO] + = ctl->sc_buffered_packets[BPT_OTHER_PRIO].bpq_count; + ctl_state->buf_counts[BPT_HIGHEST_PRIO] + = ctl->sc_buffered_packets[BPT_HIGHEST_PRIO].bpq_count; + } +} + + +static void +send_ctl_repace (struct lsquic_send_ctl *ctl, const struct pacer *pacer, + unsigned count) +{ + unsigned n; + int in_rec; + + LSQ_DEBUG("repace, count: %u", count); + ctl->sc_pacer = *pacer; + + in_rec = send_ctl_in_recovery(ctl); + for (n = 0; n < count; ++n) + lsquic_pacer_packet_scheduled(&ctl->sc_pacer, + ctl->sc_n_in_flight_retx + ctl->sc_n_scheduled + n, in_rec, + send_ctl_transfer_time, ctl); +} + + +void +lsquic_send_ctl_rollback (struct lsquic_send_ctl *ctl, + struct send_ctl_state *ctl_state, const struct iovec *last_iov, + size_t shortfall) +{ + struct lsquic_conn *const lconn = ctl->sc_conn_pub->lconn; + struct lsquic_packet_out *packet_out, *next; + struct lsquic_packets_tailq *packets; + struct stream_frame stream_frame; + struct packet_out_frec_iter pofi; + enum buf_packet_type packet_type; + unsigned orig_count, new_count; + enum quic_ft_bit lost_types; + int buffered, repace, len, to_end; + unsigned short prev_frec_len; + struct frame_rec *frec; + + buffered = !lsquic_send_ctl_schedule_stream_packets_immediately(ctl); + repace = !buffered && (ctl->sc_flags & SC_PACE); + + if (!buffered) + { + orig_count = ctl->sc_n_scheduled; + packets = &ctl->sc_scheduled_packets; + packet_type = 0; /* Not necessary, but compiler complains */ + } + else if (ctl_state->buf_counts[BPT_HIGHEST_PRIO] + < ctl->sc_buffered_packets[BPT_HIGHEST_PRIO].bpq_count) + { + packets = &ctl->sc_buffered_packets[BPT_HIGHEST_PRIO].bpq_packets; + orig_count = ctl->sc_buffered_packets[BPT_HIGHEST_PRIO].bpq_count; + packet_type = BPT_HIGHEST_PRIO; + } + else + { + packets = &ctl->sc_buffered_packets[BPT_OTHER_PRIO].bpq_packets; + orig_count = ctl->sc_buffered_packets[BPT_OTHER_PRIO].bpq_count; + packet_type = BPT_OTHER_PRIO; + } + + /* Now find last packet: */ + TAILQ_FOREACH(packet_out, packets, po_next) + if ((unsigned char *) last_iov->iov_base >= packet_out->po_data + && (unsigned char *) last_iov->iov_base + < packet_out->po_data + packet_out->po_data_sz) + break; + + if (!packet_out) + { + lconn->cn_if->ci_internal_error(lconn, + "rollback failed: cannot find packet"); + return; + } + + for (frec = lsquic_pofi_first(&pofi, packet_out); frec; + frec = lsquic_pofi_next(&pofi)) + if (frec->fe_frame_type == QUIC_FRAME_STREAM + /* At the time of this writing, pwritev() generates a single STREAM + * frame per packet. To keep code future-proof, we use an extra + * check. + */ + && (unsigned char *) last_iov->iov_base + > packet_out->po_data + frec->fe_off + && (unsigned char *) last_iov->iov_base + < packet_out->po_data + frec->fe_off + frec->fe_len) + break; + + if (!frec) + { + lconn->cn_if->ci_internal_error(lconn, + "rollback failed: cannot find frame record"); + return; + } + + /* Strictly less because of the STREAM frame header */ + assert(last_iov->iov_len < frec->fe_len); + + len = lconn->cn_pf->pf_parse_stream_frame( + packet_out->po_data + frec->fe_off, frec->fe_len, &stream_frame); + if (len < 0) + { + lconn->cn_if->ci_internal_error(lconn, + "error parsing own STREAM frame"); + return; + } + + if (stream_frame.data_frame.df_size > last_iov->iov_len - shortfall) + { + packet_out->po_data_sz = (unsigned char *) last_iov->iov_base + + last_iov->iov_len - shortfall - packet_out->po_data; + prev_frec_len = frec->fe_len; + frec->fe_len = packet_out->po_data_sz - frec->fe_off; + to_end = lconn->cn_pf->pf_dec_stream_frame_size( + packet_out->po_data + frec->fe_off, + stream_frame.data_frame.df_size - (prev_frec_len - frec->fe_len)); + if (to_end) + { /* A frame that's too short may be generated when pwritev runs out + * of iovecs. In that case, we adjust it here. + */ + if (!(packet_out->po_flags & PO_STREAM_END)) + LSQ_DEBUG("set stream-end flag on truncated packet"); + packet_out->po_flags |= PO_STREAM_END; + } + if (!buffered) + ctl->sc_bytes_scheduled -= prev_frec_len - frec->fe_len; + } + else + assert(stream_frame.data_frame.df_size + == last_iov->iov_len - shortfall); + + /* Drop any frames that follow */ + for (frec = lsquic_pofi_next(&pofi); frec; frec = lsquic_pofi_next(&pofi)) + frec->fe_frame_type = 0; + + /* Return unused packets */ + new_count = orig_count; + lost_types = 0; + for (packet_out = TAILQ_NEXT(packet_out, po_next); packet_out != NULL; + packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + --new_count; + lost_types |= packet_out->po_frame_types; + /* Undo lsquic_send_ctl_get_packet_for_stream() */ + if (!buffered) + send_ctl_sched_remove(ctl, packet_out); + else + { + TAILQ_REMOVE(packets, packet_out, po_next); + --ctl->sc_buffered_packets[packet_type].bpq_count; + } + send_ctl_destroy_packet(ctl, packet_out); + } + + if (new_count < orig_count && repace) + send_ctl_repace(ctl, &ctl_state->pacer, new_count); + if (buffered && (lost_types & QUIC_FTBIT_ACK)) + lconn->cn_if->ci_ack_rollback(lconn, &ctl_state->ack_state); +} + + +/* Find 0-RTT packets and change them to 1-RTT packets */ +void +lsquic_send_ctl_0rtt_to_1rtt (struct lsquic_send_ctl *ctl) +{ + struct lsquic_packet_out *packet_out; + unsigned count; + struct lsquic_packets_tailq *const *q; + struct lsquic_packets_tailq *const queues[] = { + &ctl->sc_scheduled_packets, + &ctl->sc_unacked_packets[PNS_APP], + &ctl->sc_lost_packets, + &ctl->sc_buffered_packets[0].bpq_packets, + &ctl->sc_buffered_packets[1].bpq_packets, + }; + + assert(ctl->sc_flags & SC_IETF); + + while (packet_out = TAILQ_FIRST(&ctl->sc_0rtt_stash), packet_out != NULL) + { + TAILQ_REMOVE(&ctl->sc_0rtt_stash, packet_out, po_next); + TAILQ_INSERT_TAIL(&ctl->sc_lost_packets, packet_out, po_next); + packet_out->po_flags |= PO_LOST; + } + + count = 0; + for (q = queues; q < queues + sizeof(queues) / sizeof(queues[0]); ++q) + TAILQ_FOREACH(packet_out, *q, po_next) + if (packet_out->po_header_type == HETY_0RTT) + { + ++count; + packet_out->po_header_type = HETY_SHORT; + if (packet_out->po_flags & PO_ENCRYPTED) + send_ctl_return_enc_data(ctl, packet_out); + } + + LSQ_DEBUG("handshake ok: changed %u packet%.*s from 0-RTT to 1-RTT", + count, count != 1, "s"); + ctl->sc_n_consec_rtos >>= 1; +} + + +/* Remove 0-RTT packets from the unacked queue and wait to retransmit them + * after handshake succeeds. This is the most common case. There could + * (theoretically) be some corner cases where 0-RTT packets are in the + * scheduled queue, but we let those be lost naturally if that occurs. + */ +void +lsquic_send_ctl_stash_0rtt_packets (struct lsquic_send_ctl *ctl) +{ + struct lsquic_packet_out *packet_out, *next; + unsigned count, packet_sz; + + count = 0; + for (packet_out = TAILQ_FIRST(&ctl->sc_unacked_packets[PNS_APP]); + packet_out; packet_out = next) + { + next = TAILQ_NEXT(packet_out, po_next); + if (packet_out->po_header_type == HETY_0RTT) + { + packet_sz = packet_out_sent_sz(packet_out); + send_ctl_unacked_remove(ctl, packet_out, packet_sz); + TAILQ_INSERT_TAIL(&ctl->sc_0rtt_stash, packet_out, po_next); + ++count; + } + } + + LSQ_DEBUG("stashed %u 0-RTT packet%.*s", count, count != 1, "s"); +} diff --git a/external/lsquic/src/liblsquic/lsquic_send_ctl.h b/external/lsquic/src/liblsquic/lsquic_send_ctl.h new file mode 100644 index 0000000..6e6a302 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_send_ctl.h @@ -0,0 +1,522 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_SEND_CTL_H +#define LSQUIC_SEND_CTL_H 1 + +#include + +#include "lsquic_types.h" +#include "lsquic_packet_out.h" + +#ifndef LSQUIC_SEND_STATS +# define LSQUIC_SEND_STATS 1 +#endif + +TAILQ_HEAD(lsquic_packets_tailq, lsquic_packet_out); + +struct ack_info; +struct lsquic_alarmset; +struct lsquic_engine_public; +struct lsquic_conn_public; +struct network_path; +struct ver_neg; +enum pns; +struct to_coal; + +enum buf_packet_type { BPT_HIGHEST_PRIO, BPT_OTHER_PRIO, }; + +struct buf_packet_q +{ + struct lsquic_packets_tailq bpq_packets; + unsigned bpq_count; +}; + +enum send_ctl_flags { + SC_TCID0 = (1 << 0), + SC_NSTP = (1 << 2), + SC_PACE = (1 << 3), + SC_SCHED_TICK = (1 << 4), + SC_BUFFER_STREAM= (1 << 5), + SC_WAS_QUIET = (1 << 6), + SC_IETF = (1 << 7), +#define SCBIT_LOST_ACK_SHIFT 8 + SC_LOST_ACK_INIT= 1 << 8, + SC_LOST_ACK_HSK = SC_LOST_ACK_INIT << PNS_HSK, + SC_LOST_ACK_APP = SC_LOST_ACK_INIT << PNS_APP, + SC_1RTT_ACKED = 1 << 11, + SC_APP_LIMITED = 1 << 12, + SC_ECN = 1 << 13, + SC_QL_BITS = 1 << 14, + SC_SANITY_CHECK = 1 << 15, + SC_CIDLEN = 1 << 16, /* sc_cidlen is set */ + SC_POISON = 1 << 17, /* poisoned packet exists */ + SC_CLEANUP_BBR = 1 << 18, + SC_ACK_RECV_INIT= 1 << 19, + SC_ACK_RECV_HSK = SC_ACK_RECV_INIT << PNS_HSK, + SC_ACK_RECV_APP = SC_ACK_RECV_INIT << PNS_APP, + SC_ROUGH_RTT = 1 << 22, +#if LSQUIC_DEVEL + SC_DYN_PTHRESH = 1 << 31u, /* dynamic packet threshold enabled */ +#endif +}; + +typedef struct lsquic_send_ctl { + /* The first section consists of struct members which are used in the + * time-critical lsquic_send_ctl_got_ack() in the approximate order + * of usage. + */ + lsquic_senhist_t sc_senhist; + enum send_ctl_flags sc_flags; + enum ecn sc_ecn; + unsigned sc_n_stop_waiting; + struct lsquic_packets_tailq sc_unacked_packets[N_PNS]; + lsquic_packno_t sc_largest_acked_packno; + lsquic_time_t sc_largest_acked_sent_time; + lsquic_time_t sc_last_sent_time; + lsquic_time_t sc_last_rto_time; + int (*sc_can_send)(struct lsquic_send_ctl *); + unsigned sc_bytes_unacked_retx; + unsigned sc_bytes_scheduled; + struct adaptive_cc sc_adaptive_cc; + const struct cong_ctl_if *sc_ci; + void *sc_cong_ctl; + struct lsquic_engine_public *sc_enpub; + unsigned sc_bytes_unacked_all; + unsigned sc_n_in_flight_all; + unsigned sc_n_in_flight_retx; + unsigned sc_n_consec_rtos; + unsigned sc_n_hsk; + unsigned sc_n_tlp; + enum quic_ft_bit sc_retx_frames; + struct lsquic_alarmset *sc_alset; + + /* Second section: everything else. */ + struct lsquic_packets_tailq sc_scheduled_packets, + sc_0rtt_stash, + sc_lost_packets; + struct buf_packet_q sc_buffered_packets[BPT_OTHER_PRIO + 1]; + const struct ver_neg *sc_ver_neg; + struct lsquic_conn_public *sc_conn_pub; + struct pacer sc_pacer; + lsquic_packno_t sc_cur_packno; + lsquic_packno_t sc_largest_sent_at_cutback; + lsquic_packno_t sc_max_rtt_packno; + /* sc_largest_ack2ed is the packet number sent by peer that we acked and + * we know that our ACK was received by peer. This is used to determine + * the receive history cutoff point for the purposes of generating ACK + * frames in the absense of STOP_WAITING frames. Used when NSTP option + * is set. (The "ack2ed" is odd enough to not be confused with anything + * else and it is not insanely long.) + */ + lsquic_packno_t sc_largest_ack2ed[N_PNS]; + /* sc_largest_acked is the largest packet number in PNS_APP packet number + * space sent by peer for which we generated (not necessarily sent) an ACK. + * This information is used to drop stale ACK frames from packets in + * buffered queues. + */ + /* XXX We have both sc_largest_acked_packno and sc_largest_acked. Rename + * the latter to make the code more readable. + */ + lsquic_packno_t sc_largest_acked; + lsquic_time_t sc_loss_to; + uint64_t sc_ecn_total_acked[N_PNS]; + uint64_t sc_ecn_ce_cnt[N_PNS]; + struct + { + lsquic_stream_id_t stream_id; + enum buf_packet_type packet_type; + } sc_cached_bpt; + unsigned sc_next_limit; + unsigned sc_n_scheduled; + enum packno_bits sc_max_packno_bits; +#if LSQUIC_SEND_STATS + struct { + unsigned n_total_sent, + n_resent, + n_delayed; + } sc_stats; +#endif + unsigned char *sc_token; + size_t sc_token_sz; + unsigned sc_retry_count; + unsigned sc_rt_count; /* Count round trips */ + lsquic_packno_t sc_cur_rt_end; + lsquic_packno_t sc_gap; + unsigned sc_loss_count; /* Used to set loss bit */ + unsigned sc_square_count;/* Used to set square bit */ + unsigned sc_reord_thresh; + signed char sc_cidlen; /* For debug purposes */ +} lsquic_send_ctl_t; + +void +lsquic_send_ctl_init (lsquic_send_ctl_t *, struct lsquic_alarmset *, + struct lsquic_engine_public *, const struct ver_neg *, + struct lsquic_conn_public *, enum send_ctl_flags); + +int +lsquic_send_ctl_sent_packet (lsquic_send_ctl_t *, struct lsquic_packet_out *); + +void +lsquic_send_ctl_mtu_not_sent (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *); + +int +lsquic_send_ctl_got_ack (lsquic_send_ctl_t *, const struct ack_info *, + lsquic_time_t, lsquic_time_t); + +lsquic_packno_t +lsquic_send_ctl_smallest_unacked (lsquic_send_ctl_t *ctl); + +int +lsquic_send_ctl_have_unacked_stream_frames (const lsquic_send_ctl_t *); + +int +lsquic_send_ctl_have_unacked_retx_data (const struct lsquic_send_ctl *); + +void +lsquic_send_ctl_cleanup (lsquic_send_ctl_t *); + +int +lsquic_send_ctl_can_send (lsquic_send_ctl_t *ctl); + +void +lsquic_send_ctl_scheduled_one (lsquic_send_ctl_t *, struct lsquic_packet_out *); + +void +lsquic_send_ctl_delayed_one (lsquic_send_ctl_t *, struct lsquic_packet_out *); + +struct lsquic_packet_out * +lsquic_send_ctl_next_packet_to_send (struct lsquic_send_ctl *, + const struct to_coal *); + +int +lsquic_send_ctl_next_packet_to_send_predict (struct lsquic_send_ctl *); + +void +lsquic_send_ctl_expire_all (lsquic_send_ctl_t *ctl); + +static inline unsigned +lsquic_send_ctl_n_scheduled (const lsquic_send_ctl_t *ctl) +{ + return +(ctl)->sc_n_scheduled; +} + +static inline unsigned +lsquic_send_ctl_largest_ack2ed (const lsquic_send_ctl_t *ctl, unsigned pns) +{ + return +(ctl)->sc_largest_ack2ed[pns]; +} + +void +lsquic_send_ctl_do_sanity_check (const struct lsquic_send_ctl *ctl); + +#ifndef NDEBUG +#define lsquic_send_ctl_sanity_check(ctl) do { \ + if ((ctl)->sc_flags & SC_SANITY_CHECK) \ + lsquic_send_ctl_do_sanity_check(ctl); \ +} while (0) +#else +#define lsquic_send_ctl_sanity_check(ctl) +#endif + +int +lsquic_send_ctl_have_outgoing_stream_frames (const lsquic_send_ctl_t *); + +int +lsquic_send_ctl_have_outgoing_retx_frames (const lsquic_send_ctl_t *); + +struct lsquic_packet_out * +lsquic_send_ctl_last_scheduled (struct lsquic_send_ctl *, enum packnum_space, + const struct network_path *, int); + +struct lsquic_packet_out * +lsquic_send_ctl_new_packet_out (lsquic_send_ctl_t *, unsigned, + enum packnum_space, const struct network_path *); + +struct lsquic_packet_out * +lsquic_send_ctl_get_writeable_packet (lsquic_send_ctl_t *, enum packnum_space, + unsigned need_at_least, const struct network_path *, int, int *is_err); + +struct lsquic_packet_out * +lsquic_send_ctl_get_packet_for_stream (lsquic_send_ctl_t *, + unsigned need_at_least, const struct network_path *, + const struct lsquic_stream *); + +int +lsquic_sendctl_gen_stream_blocked_frame (struct lsquic_send_ctl *ctl, + struct lsquic_stream *stream); + +struct lsquic_packet_out * +lsquic_send_ctl_get_packet_for_crypto (struct lsquic_send_ctl *ctl, + unsigned need_at_least, enum packnum_space, const struct network_path *); + +unsigned +lsquic_send_ctl_reschedule_packets (lsquic_send_ctl_t *); + +static inline unsigned +lsquic_send_ctl_lost_ack (const lsquic_send_ctl_t *ctl) +{ + return ((ctl)->sc_flags & (SC_LOST_ACK_INIT|SC_LOST_ACK_HSK|SC_LOST_ACK_APP)) + >> SCBIT_LOST_ACK_SHIFT; +} + +static inline void +lsquic_send_ctl_scheduled_ack (lsquic_send_ctl_t *ctl, int pns, + lsquic_packno_t acked) +{ + ctl->sc_flags &= ~(SC_LOST_ACK_INIT << pns); + if (PNS_APP == pns) + ctl->sc_largest_acked = acked; +} + +void +lsquic_send_ctl_set_tcid0 (lsquic_send_ctl_t *, int); + +static inline unsigned +lsquic_send_ctl_turn_nstp_on (lsquic_send_ctl_t *ctl) +{ + return (ctl)->sc_flags |= SC_NSTP; +} + +void +lsquic_send_ctl_elide_stream_frames (lsquic_send_ctl_t *, lsquic_stream_id_t); + +int +lsquic_send_ctl_squeeze_sched (lsquic_send_ctl_t *); + +static inline unsigned +lsquic_send_ctl_maybe_squeeze_sched (lsquic_send_ctl_t *ctl) +{ + return (ctl)->sc_n_scheduled && lsquic_send_ctl_squeeze_sched(ctl); +} + +/* Same return value as for squeezing, but without actual squeezing. */ +int +lsquic_send_ctl_have_delayed_packets (const lsquic_send_ctl_t *ctl); + +void +lsquic_send_ctl_reset_packnos (lsquic_send_ctl_t *); + +void +lsquic_send_ctl_ack_to_front (struct lsquic_send_ctl *, unsigned n_acks); + +static inline unsigned +lsquic_send_ctl_n_stop_waiting (const lsquic_send_ctl_t *ctl) +{ + return +(ctl)->sc_n_stop_waiting; +} + +static inline void +lsquic_send_ctl_n_stop_waiting_reset (lsquic_send_ctl_t *ctl) +{ + ctl->sc_n_stop_waiting = 0; +} + +void +lsquic_send_ctl_drop_scheduled (lsquic_send_ctl_t *); + +static inline void +lsquic_send_ctl_tick_in (lsquic_send_ctl_t *ctl, lsquic_time_t now) +{ + if ((ctl)->sc_flags & SC_PACE) + { + (ctl)->sc_flags |= SC_SCHED_TICK; + lsquic_pacer_tick_in(&(ctl)->sc_pacer, now); + } + (ctl)->sc_flags &= ~SC_APP_LIMITED; +} + +static inline void +lsquic_send_ctl_tick_out (lsquic_send_ctl_t *ctl) +{ + if ((ctl)->sc_flags & SC_PACE) + lsquic_pacer_tick_out(&(ctl)->sc_pacer); +} + +static inline lsquic_time_t +lsquic_send_ctl_next_pacer_time (lsquic_send_ctl_t *ctl) +{ + return ((ctl)->sc_flags & SC_PACE) + && lsquic_pacer_delayed(&(ctl)->sc_pacer) + ? lsquic_pacer_next_sched(&(ctl)->sc_pacer) + : 0; +} + +enum packno_bits +lsquic_send_ctl_packno_bits (struct lsquic_send_ctl *, enum packnum_space); + +int +lsquic_send_ctl_schedule_buffered (lsquic_send_ctl_t *, enum buf_packet_type); + +static inline unsigned +lsquic_send_ctl_has_buffered (const lsquic_send_ctl_t *ctl) +{ + return TAILQ_FIRST(&(ctl)->sc_buffered_packets[BPT_HIGHEST_PRIO].bpq_packets) + || TAILQ_FIRST(&(ctl)->sc_buffered_packets[BPT_OTHER_PRIO].bpq_packets); +} + +static inline unsigned +lsquic_send_ctl_has_buffered_high (const lsquic_send_ctl_t *ctl) +{ + return !TAILQ_EMPTY(&(ctl)->sc_buffered_packets[BPT_HIGHEST_PRIO].bpq_packets); +} + +static inline void +lsquic_send_ctl_invalidate_bpt_cache (lsquic_send_ctl_t *ctl) +{ + (ctl)->sc_cached_bpt.stream_id = UINT64_MAX; +} + +#ifndef NDEBUG +enum packno_bits +lsquic_send_ctl_guess_packno_bits (struct lsquic_send_ctl *); + +int +lsquic_send_ctl_schedule_stream_packets_immediately (struct lsquic_send_ctl *); + +enum buf_packet_type +lsquic_send_ctl_determine_bpt (struct lsquic_send_ctl *, + const struct lsquic_stream *); + +enum packno_bits +lsquic_send_ctl_calc_packno_bits (struct lsquic_send_ctl *); + +void +lsquic_send_ctl_set_max_bpq_count (unsigned); +#endif + +size_t +lsquic_send_ctl_mem_used (const struct lsquic_send_ctl *); + +static inline void +lsquic_send_ctl_set_buffer_stream_packets ( + struct lsquic_send_ctl *ctl, enum send_ctl_flags b) +{ + (ctl)->sc_flags &= ~SC_BUFFER_STREAM; + (ctl)->sc_flags |= -!!(b) & SC_BUFFER_STREAM; +} + +int +lsquic_send_ctl_turn_on_fin (struct lsquic_send_ctl *, + const struct lsquic_stream *); + +int +lsquic_send_ctl_pacer_blocked (struct lsquic_send_ctl *); + +static inline void +lsquic_send_ctl_incr_pack_sz (struct lsquic_send_ctl *ctl, + struct lsquic_packet_out *packet, int delta) +{ + packet->po_data_sz += delta; + if (packet->po_flags & PO_SCHED) + (ctl)->sc_bytes_scheduled += delta; + lsquic_send_ctl_sanity_check(ctl); +} + +int +lsquic_send_ctl_sched_is_blocked (struct lsquic_send_ctl *); + +void +lsquic_send_ctl_verneg_done (struct lsquic_send_ctl *); + +int +lsquic_send_ctl_retry (struct lsquic_send_ctl *, const unsigned char *, size_t); + +int +lsquic_send_ctl_set_token (struct lsquic_send_ctl *, + const unsigned char *token, size_t token_sz); + +void +lsquic_send_ctl_empty_pns (struct lsquic_send_ctl *, enum packnum_space); + +void +lsquic_send_ctl_maybe_calc_rough_rtt (struct lsquic_send_ctl *, + enum packnum_space); + +void +lsquic_send_ctl_repath (struct lsquic_send_ctl *ctl, + const struct network_path *old, const struct network_path *new, + int keep_path_properties); + +void +lsquic_send_ctl_cancel_path_verification (struct lsquic_send_ctl *, + const struct network_path *); + +void +lsquic_send_ctl_resize (struct lsquic_send_ctl *); + +void +lsquic_send_ctl_return_enc_data (struct lsquic_send_ctl *); + +static inline unsigned +lsquic_send_ctl_1rtt_acked (const struct lsquic_send_ctl *ctl) +{ + return (ctl)->sc_flags & SC_1RTT_ACKED; +} + +void +lsquic_send_ctl_maybe_app_limited (struct lsquic_send_ctl *, + const struct network_path *); + +static inline void +lsquic_send_ctl_do_ql_bits (struct lsquic_send_ctl *ctl) +{ + (ctl)->sc_flags |= SC_QL_BITS; +} + +void +lsquic_send_ctl_cidlen_change (struct lsquic_send_ctl *, + unsigned orig_cid_len, unsigned new_cid_len); + +void +lsquic_send_ctl_begin_optack_detection (struct lsquic_send_ctl *); + +void +lsquic_send_ctl_path_validated (struct lsquic_send_ctl *); + +/* Has immediately sendable packets */ +static inline unsigned +lsquic_send_ctl_has_sendable (struct lsquic_send_ctl *ctl_) +{ + return lsquic_send_ctl_n_scheduled(ctl_) > 0 + && lsquic_send_ctl_next_packet_to_send_predict(ctl_); +} + +static inline unsigned +lsquic_send_ctl_in_recovery (const struct lsquic_send_ctl *ctl_) +{ + return (ctl_)->sc_largest_acked_packno + && (ctl_)->sc_largest_acked_packno <= (ctl_)->sc_largest_sent_at_cutback; +} + +#define send_ctl_in_recovery lsquic_send_ctl_in_recovery + +int +lsquic_send_ctl_can_send_probe (const struct lsquic_send_ctl *, + const struct network_path *); + +#define lsquic_send_ctl_ecn_turned_on(ctl_) ((ctl_)->sc_ecn != ECN_NOT_ECT) + +void +lsquic_send_ctl_disable_ecn (struct lsquic_send_ctl *); + +struct send_ctl_state +{ + struct pacer pacer; + struct ack_state ack_state; + unsigned buf_counts[BPT_OTHER_PRIO + 1]; +}; + +void +lsquic_send_ctl_snapshot (struct lsquic_send_ctl *, struct send_ctl_state *); + +void +lsquic_send_ctl_rollback (struct lsquic_send_ctl *, struct send_ctl_state *, + const struct iovec *, size_t); + +void +lsquic_send_ctl_0rtt_to_1rtt (struct lsquic_send_ctl *); + +void +lsquic_send_ctl_stash_0rtt_packets (struct lsquic_send_ctl *); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_senhist.c b/external/lsquic/src/liblsquic/lsquic_senhist.c new file mode 100644 index 0000000..d63c2a4 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_senhist.c @@ -0,0 +1,20 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_senhist.c -- Sent history implementation + */ + +#include +#include + +#include "lsquic_int_types.h" +#include "lsquic_senhist.h" + + +void +lsquic_senhist_tostr (lsquic_senhist_t *hist, char *buf, size_t bufsz) +{ + if (hist->sh_last_sent) + snprintf(buf, bufsz, "[1-%"PRIu64"]", hist->sh_last_sent); + else + snprintf(buf, bufsz, "[]"); +} diff --git a/external/lsquic/src/liblsquic/lsquic_senhist.h b/external/lsquic/src/liblsquic/lsquic_senhist.h new file mode 100644 index 0000000..7287551 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_senhist.h @@ -0,0 +1,78 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_senhist.h -- History sent packets. + * + * We need to keep track of packet numbers in order to verify ACKs. To + * speed up processing, we make sure that there is never a gap in the + * packet number sequence we generate. + */ + +#ifndef LSQUIC_SENHIST_H +#define LSQUIC_SENHIST_H 1 + +#ifndef LSQUIC_SENHIST_FATAL +# define LSQUIC_SENHIST_FATAL 0 +#endif + +typedef struct lsquic_senhist { + lsquic_packno_t sh_last_sent; + lsquic_packno_t sh_warn_thresh; + enum { +#if !LSQUIC_SENHIST_FATAL + SH_WARNED = 1 << 0, /* Warn once */ +#endif + SH_GAP_OK = 1 << 1, /* Before connection is just about to close or + * during mini/full packet handoff. + */ + } sh_flags; +} lsquic_senhist_t; + +static inline void +lsquic_senhist_init (lsquic_senhist_t *hist, unsigned is_ietf) +{ + if (is_ietf) + (hist)->sh_last_sent = ~0ull; + else + (hist)->sh_last_sent = 0; +} + +#define lsquic_senhist_cleanup(hist) + +#if LSQUIC_SENHIST_FATAL +#define lsquic_senhist_add(hist, packno) do { \ + if (!((hist)->sh_flags & SH_GAP_OK) \ + && (packno) > (hist)->sh_warn_thresh) \ + assert((hist)->sh_last_sent == packno - 1); \ + if ((int64_t) (packno) > (int64_t) (hist)->sh_last_sent) \ + (hist)->sh_last_sent = packno; \ +} while (0) +#else +#define lsquic_senhist_add(hist, packno) do { \ + if ((hist)->sh_last_sent != packno - 1) \ + { \ + if (!((hist)->sh_flags & (SH_WARNED|SH_GAP_OK)) \ + && (packno) > (hist)->sh_warn_thresh) \ + { \ + LSQ_WARN("send history gap %"PRIu64" - %"PRIu64, \ + (hist)->sh_last_sent, packno); \ + (hist)->sh_flags |= SH_WARNED; \ + } \ + } \ + if ((int64_t) (packno) > (int64_t) (hist)->sh_last_sent) \ + (hist)->sh_last_sent = packno; \ +} while (0) +#endif + +/* Returns 0 if no packets have been sent yet */ +#define lsquic_senhist_largest(hist) (+(hist)->sh_last_sent) + +void +lsquic_senhist_tostr (lsquic_senhist_t *hist, char *buf, size_t bufsz); + +static inline size_t +lsquic_senhist_mem_used(const lsquic_senhist_t *hist) +{ + return sizeof(*(hist)); +} + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_set.c b/external/lsquic/src/liblsquic/lsquic_set.c new file mode 100644 index 0000000..1433324 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_set.c @@ -0,0 +1,371 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_set.c -- A set implementation. + * + * Deleting from a set is not supported. Implemented as a sorted array. + * Optimized for reading. Insertion may trigger realloc, memmove, or + * both. + */ + +#include +#include +#include +#include +#include + +#include "lsquic_set.h" + + +struct lsquic_set32_elem +{ + uint32_t low, high; +}; + + +void +lsquic_set32_init (struct lsquic_set32 *set) +{ + memset(set, 0, sizeof(*set)); +} + + +void +lsquic_set32_cleanup (struct lsquic_set32 *set) +{ + free(set->elems); +} + + +static int +lsquic_set32_insert_set_elem (struct lsquic_set32 *set, int i, uint32_t value) +{ + struct lsquic_set32_elem *elems; + + if (set->n_elems == INT_MAX) + { + errno = EOVERFLOW; + return -1; + } + + if (set->n_alloc == set->n_elems) + { + if (set->n_alloc) + set->n_alloc *= 2; + else + set->n_alloc = 4; + elems = realloc(set->elems, sizeof(set->elems[0]) * set->n_alloc); + if (!elems) + return -1; + set->elems = elems; + } + if (i < set->n_elems) + memmove(&set->elems[i + 1], &set->elems[i], + (set->n_elems - i) * sizeof(set->elems[i])); + set->elems[i].low = set->elems[i].high = value; + ++set->n_elems; + return 0; +} + + +static void +lsquic_set32_merge_set_elems (struct lsquic_set32 *set, int i) +{ + assert(i >= 0); + assert(i < set->n_elems - 1); + assert(set->elems[i].high + 1 == set->elems[i + 1].low); + set->elems[i].high = set->elems[i + 1].high; + if (i < set->n_elems - 2) + memmove(&set->elems[i + 1], &set->elems[i + 2], + (set->n_elems - i - 2) * sizeof(set->elems[i])); + --set->n_elems; +} + + +#ifndef NDEBUG +static void +lsquic_set32_check_elems_sorted (const struct lsquic_set32 *set) +{ + int i; + for (i = 0; i < set->n_elems; ++i) + { + assert(set->elems[i].low <= set->elems[i].high); + if (i > 0) + assert(set->elems[i - 1].high + 1 < set->elems[i].low); + } +} +#endif + + +int +lsquic_set32_add (struct lsquic_set32 *set, uint32_t value) +{ + if (value < 64) + { + set->lowset |= 1ULL << value; + return 0; + } + + int low, high, i; + + if (set->n_elems > 0) + { + low = 0, high = set->n_elems - 1; + do + { + i = low + (high - low) / 2; + if (set->elems[i].low <= value && set->elems[i].high >= value) + return 0; + else if (set->elems[i].high < value) + low = i + 1; + else + high = i - 1; + } + while (low <= high); + + if (value < set->elems[i].low) + { + if (set->elems[i].low - 1 == value) + { + set->elems[i].low = value; + if (i > 0 && set->elems[i - 1].high + 1 == value) + lsquic_set32_merge_set_elems(set, i - 1); + } + else if (i > 0 && set->elems[i - 1].high + 1 == value) + set->elems[i - 1].high = value; + else if (0 != lsquic_set32_insert_set_elem(set, i, value)) + return -1; + } + else + { + assert(value > set->elems[i].high); + if (set->elems[i].high + 1 == value) + { + set->elems[i].high = value; + if (i + 1 < set->n_elems && set->elems[i + 1].low - 1== value) + lsquic_set32_merge_set_elems(set, i); + } + else if (i + 1 < set->n_elems && set->elems[i + 1].low - 1 == value) + set->elems[i + 1].low = value; + else if (0 != lsquic_set32_insert_set_elem(set, i + 1, value)) + return 0; + } + } + else + { + assert(NULL == set->elems); + if (0 != lsquic_set32_insert_set_elem(set, 0, value)) + return -1; + } +#ifndef NDEBUG + lsquic_set32_check_elems_sorted(set); +#endif + return 0; +} + + +int +lsquic_set32_has (const struct lsquic_set32 *set, uint32_t value) +{ + if (value < 64) + { + return !!(set->lowset & (1ULL << value)); + } + + int low, high, i; + + low = 0, high = set->n_elems - 1; + while (low <= high) + { + i = low + (high - low) / 2; + if (set->elems[i].low <= value && set->elems[i].high >= value) + return 1; + else if (set->elems[i].high < value) + low = i + 1; + else + high = i - 1; + } + + return 0; +} + + +/* ******* ******* ******** ******* + * + * The following code is a set of two replacements: + * + * :.,$s/lsquic_set32/lsquic_set64/g + * :.,$s/uint32_t/uint64_t/g + */ +struct lsquic_set64_elem +{ + uint64_t low, high; +}; + + +void +lsquic_set64_init (struct lsquic_set64 *set) +{ + memset(set, 0, sizeof(*set)); +} + + +void +lsquic_set64_cleanup (struct lsquic_set64 *set) +{ + free(set->elems); +} + + +static int +lsquic_set64_insert_set_elem (struct lsquic_set64 *set, int i, uint64_t value) +{ + struct lsquic_set64_elem *elems; + + if (set->n_elems == INT_MAX) + { + errno = EOVERFLOW; + return -1; + } + + if (set->n_alloc == set->n_elems) + { + if (set->n_alloc) + set->n_alloc *= 2; + else + set->n_alloc = 4; + elems = realloc(set->elems, sizeof(set->elems[0]) * set->n_alloc); + if (!elems) + return -1; + set->elems = elems; + } + if (i < set->n_elems) + memmove(&set->elems[i + 1], &set->elems[i], + (set->n_elems - i) * sizeof(set->elems[i])); + set->elems[i].low = set->elems[i].high = value; + ++set->n_elems; + return 0; +} + + +static void +lsquic_set64_merge_set_elems (struct lsquic_set64 *set, int i) +{ + assert(i >= 0); + assert(i < set->n_elems - 1); + assert(set->elems[i].high + 1 == set->elems[i + 1].low); + set->elems[i].high = set->elems[i + 1].high; + if (i < set->n_elems - 2) + memmove(&set->elems[i + 1], &set->elems[i + 2], + (set->n_elems - i - 2) * sizeof(set->elems[i])); + --set->n_elems; +} + + +#ifndef NDEBUG +static void +lsquic_set64_check_elems_sorted (const struct lsquic_set64 *set) +{ + int i; + for (i = 0; i < set->n_elems; ++i) + { + assert(set->elems[i].low <= set->elems[i].high); + if (i > 0) + assert(set->elems[i - 1].high + 1 < set->elems[i].low); + } +} +#endif + + +int +lsquic_set64_add (struct lsquic_set64 *set, uint64_t value) +{ + if (value < 64) + { + set->lowset |= 1ULL << value; + return 0; + } + + int low, high, i; + + if (set->n_elems > 0) + { + low = 0, high = set->n_elems - 1; + do + { + i = low + (high - low) / 2; + if (set->elems[i].low <= value && set->elems[i].high >= value) + return 0; + else if (set->elems[i].high < value) + low = i + 1; + else + high = i - 1; + } + while (low <= high); + + if (value < set->elems[i].low) + { + if (set->elems[i].low - 1 == value) + { + set->elems[i].low = value; + if (i > 0 && set->elems[i - 1].high + 1 == value) + lsquic_set64_merge_set_elems(set, i - 1); + } + else if (i > 0 && set->elems[i - 1].high + 1 == value) + set->elems[i - 1].high = value; + else if (0 != lsquic_set64_insert_set_elem(set, i, value)) + return -1; + } + else + { + assert(value > set->elems[i].high); + if (set->elems[i].high + 1 == value) + { + set->elems[i].high = value; + if (i + 1 < set->n_elems && set->elems[i + 1].low - 1== value) + lsquic_set64_merge_set_elems(set, i); + } + else if (i + 1 < set->n_elems && set->elems[i + 1].low - 1 == value) + set->elems[i + 1].low = value; + else if (0 != lsquic_set64_insert_set_elem(set, i + 1, value)) + return 0; + } + } + else + { + assert(NULL == set->elems); + if (0 != lsquic_set64_insert_set_elem(set, 0, value)) + return -1; + } +#ifndef NDEBUG + lsquic_set64_check_elems_sorted(set); +#endif + return 0; +} + + +int +lsquic_set64_has (const struct lsquic_set64 *set, uint64_t value) +{ + if (value < 64) + { + return !!(set->lowset & (1ULL << value)); + } + + int low, high, i; + + low = 0, high = set->n_elems - 1; + while (low <= high) + { + i = low + (high - low) / 2; + if (set->elems[i].low <= value && set->elems[i].high >= value) + return 1; + else if (set->elems[i].high < value) + low = i + 1; + else + high = i - 1; + } + + return 0; +} + + diff --git a/external/lsquic/src/liblsquic/lsquic_set.h b/external/lsquic/src/liblsquic/lsquic_set.h new file mode 100644 index 0000000..f910bba --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_set.h @@ -0,0 +1,56 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_set.h -- A set implementation. + * + * There are two sets of APIs: one for four- and the other for eight-byte + * integers. + */ + +#ifndef LSQUIC_SET_H +#define LSQUIC_SET_H 1 + +#include + +struct lsquic_set32_elem; + +typedef struct lsquic_set32 { + struct lsquic_set32_elem *elems; + uint64_t lowset; /* Bitmask for values 0 - 63 */ + int n_elems, n_alloc; +} lsquic_set32_t; + +void +lsquic_set32_init (struct lsquic_set32 *); + +void +lsquic_set32_cleanup (struct lsquic_set32 *); + +int +lsquic_set32_add (struct lsquic_set32 *, uint32_t value); + +/* Returns true if set contaims `value', false otherwise */ +int +lsquic_set32_has (const struct lsquic_set32 *, uint32_t value); + +struct lsquic_set64_elem; + +typedef struct lsquic_set64 { + struct lsquic_set64_elem *elems; + uint64_t lowset; /* Bitmask for values 0 - 63 */ + int n_elems, n_alloc; +} lsquic_set64_t; + +void +lsquic_set64_init (struct lsquic_set64 *); + +void +lsquic_set64_cleanup (struct lsquic_set64 *); + +int +lsquic_set64_add (struct lsquic_set64 *, uint64_t value); + +/* Returns true if set contaims `value', false otherwise */ +int +lsquic_set64_has (const struct lsquic_set64 *, uint64_t value); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_sfcw.c b/external/lsquic/src/liblsquic/lsquic_sfcw.c new file mode 100644 index 0000000..d8e8816 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_sfcw.c @@ -0,0 +1,156 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_conn_flow.h" +#include "lsquic_types.h" +#include "lsquic_rtt.h" +#include "lsquic_varint.h" +#include "lsquic_sfcw.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_conn_public.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_util.h" +#include "lsquic_conn.h" +#include "lsquic_ev_log.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_SFCW +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(fc->sf_conn_pub->lconn) +#define LSQUIC_LOG_STREAM_ID fc->sf_stream_id +#include "lsquic_logger.h" + +void +lsquic_sfcw_init (struct lsquic_sfcw *fc, unsigned max_recv_window, + struct lsquic_cfcw *cfcw, struct lsquic_conn_public *cpub, + lsquic_stream_id_t stream_id) +{ + memset(fc, 0, sizeof(*fc)); + fc->sf_max_recv_win = max_recv_window; + fc->sf_cfcw = cfcw; + fc->sf_conn_pub = cpub; + fc->sf_stream_id = stream_id; + (void) lsquic_sfcw_fc_offsets_changed(fc); +} + + +static void +sfcw_maybe_increase_max_window (struct lsquic_sfcw *fc) +{ + unsigned new_max_window, max_conn_window; + + new_max_window = fc->sf_max_recv_win * 2; + + /* Do not increase past explicitly specified maximum */ + if (new_max_window > fc->sf_conn_pub->enpub->enp_settings.es_max_sfcw) + new_max_window = fc->sf_conn_pub->enpub->enp_settings.es_max_sfcw; + + if (fc->sf_cfcw) + { + /* Do not increase past the connection's maximum window size. The + * connection's window will be increased separately, if possible. + * + * The reference implementation has the logic backwards: Imagine + * several concurrent streams that are not being read from fast + * enough by the user code. Each of them uses only a fraction + * of bandwidth. Does it mean that the connection window must + * increase? No. + */ + max_conn_window = lsquic_cfcw_get_max_recv_window(fc->sf_cfcw); + if (new_max_window > max_conn_window) + new_max_window = max_conn_window; + } + else + { + /* This means that this stream is not affected by connection flow + * controller. No need to adjust under connection window. + */ + } + + if (new_max_window > fc->sf_max_recv_win) + { + LSQ_DEBUG("max window increase %u -> %u", + fc->sf_max_recv_win, new_max_window); + EV_LOG_CONN_EVENT(LSQUIC_LOG_CONN_ID, + "max SFCW increase %u -> %u", fc->sf_max_recv_win, + new_max_window); + fc->sf_max_recv_win = new_max_window; + } + else + LSQ_DEBUG("max window could use an increase, but we're stuck " + "at %u", fc->sf_max_recv_win); +} + + +int +lsquic_sfcw_fc_offsets_changed (struct lsquic_sfcw *fc) +{ + lsquic_time_t since_last_update, srtt, now; + + if (fc->sf_recv_off - fc->sf_read_off >= fc->sf_max_recv_win / 2) + { + LSQ_DEBUG("recv_off has not changed, still at %"PRIu64, + fc->sf_recv_off); + return 0; + } + + now = lsquic_time_now(); + since_last_update = now - fc->sf_last_updated; + fc->sf_last_updated = now; + + srtt = lsquic_rtt_stats_get_srtt(&fc->sf_conn_pub->rtt_stats); + if (since_last_update < srtt * 2) + sfcw_maybe_increase_max_window(fc); + + fc->sf_recv_off = fc->sf_read_off + fc->sf_max_recv_win; + LSQ_DEBUG("recv_off changed: read_off: %"PRIu64"; " + "recv_off: %"PRIu64, fc->sf_read_off, fc->sf_recv_off); + return 1; +} + + +int +lsquic_sfcw_set_max_recv_off (struct lsquic_sfcw *fc, uint64_t max_recv_off) +{ + if (max_recv_off <= fc->sf_recv_off) + { + if (!fc->sf_cfcw || lsquic_cfcw_incr_max_recv_off(fc->sf_cfcw, + max_recv_off - fc->sf_max_recv_off)) + { + LSQ_DEBUG("max_recv_off goes from %"PRIu64" to %"PRIu64, + fc->sf_max_recv_off, max_recv_off); + fc->sf_max_recv_off = max_recv_off; + return 1; + } + else + { + /* cfcw prints its own warning */ + return 0; + } + } + else + { + LSQ_INFO("flow control violation: received at offset %"PRIu64", " + "while flow control receive offset is %"PRIu64, + max_recv_off, fc->sf_recv_off); + return 0; + } +} + + +void +lsquic_sfcw_set_read_off (struct lsquic_sfcw *fc, uint64_t off) +{ + if (fc->sf_cfcw) + lsquic_cfcw_incr_read_off(fc->sf_cfcw, off - fc->sf_read_off); + LSQ_DEBUG("read_off goes from %"PRIu64" to %"PRIu64, + fc->sf_read_off, off); + fc->sf_read_off = off; +} diff --git a/external/lsquic/src/liblsquic/lsquic_sfcw.h b/external/lsquic/src/liblsquic/lsquic_sfcw.h new file mode 100644 index 0000000..6a96297 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_sfcw.h @@ -0,0 +1,66 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_sfcw.h -- Stream flow control window functions + */ + +#ifndef LSQUIC_SFCW_H +#define LSQUIC_SFCW_H 1 + +struct lsquic_cfcw; +struct lsquic_conn_public; + +typedef struct lsquic_sfcw { + struct lsquic_cfcw *sf_cfcw; /* Connection flow control window, + * NULL for streams 1 and 3. + */ + uint64_t sf_max_recv_off; /* Largest offset observed */ + uint64_t sf_recv_off; /* Flow control receive offset */ + uint64_t sf_read_off; /* Number of bytes consumed */ + lsquic_time_t sf_last_updated; /* Last time window was updated */ + struct lsquic_conn_public + *sf_conn_pub; + unsigned sf_max_recv_win; /* Maximum receive window */ + lsquic_stream_id_t sf_stream_id; /* Used for logging */ +} lsquic_sfcw_t; + + +void +lsquic_sfcw_init (lsquic_sfcw_t *, unsigned initial_max_recv_window, + struct lsquic_cfcw *cfcw, struct lsquic_conn_public *, + lsquic_stream_id_t stream_id); + +/* If update is to be sent, updates max_recv_off and returns true. Note + * that if you call this function twice, the second call will return false. + */ +int +lsquic_sfcw_fc_offsets_changed (lsquic_sfcw_t *); + +static inline uint64_t +lsquic_sfcw_get_fc_recv_off (const lsquic_sfcw_t *fc) +{ + return fc->sf_recv_off; +} + +static inline uint64_t +lsquic_sfcw_get_max_recv_off (const lsquic_sfcw_t *fc) +{ + return fc->sf_max_recv_off; +} + +/* Returns false if flow control violation is encountered */ +int +lsquic_sfcw_set_max_recv_off (lsquic_sfcw_t *, uint64_t); + +/* Void because we do not expect the caller to make a mistake. + */ +void +lsquic_sfcw_set_read_off (lsquic_sfcw_t *, uint64_t); + +static inline void +lsquic_sfcw_consume_rem(lsquic_sfcw_t *sfcw) +{ + lsquic_sfcw_set_read_off(sfcw, + lsquic_sfcw_get_max_recv_off(sfcw)); +} + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_shared_support.h b/external/lsquic/src/liblsquic/lsquic_shared_support.h new file mode 100644 index 0000000..793d7be --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_shared_support.h @@ -0,0 +1,37 @@ +/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_shared_support.h - Support for building a shared library. + */ + +#ifndef LSQUIC_SHARED_SUPPORT +#define LSQUIC_SHARED_SUPPORT 1 + +#ifndef LSQUIC_EXTERN + +# ifdef _MSC_VER /* WIN32 */ + +/* MSVC (and CMake on Windows) doesn't like to export extern const symbols, they need to be forced. */ + +# ifdef LSQUIC_SHARED_LIB + +# ifdef LSQUIC_EXPORTS +# define LSQUIC_EXTERN __declspec(dllexport) extern +# else /* LSQUIC_EXPORTS */ +# define LSQUIC_EXTERN __declspec(dllimport) extern +# endif /* LSQUIC_EXPORTS */ + +# else + +# define LSQUIC_EXTERN extern + +# endif + +# else /* _MSC_VER */ + +# define LSQUIC_EXTERN extern + +# endif /* _MSC_VER */ + +#endif /* LSQUIC_EXTERN */ + +#endif /* LSQUIC_SHARED_SUPPORT */ diff --git a/external/lsquic/src/liblsquic/lsquic_shsk_stream.c b/external/lsquic/src/liblsquic/lsquic_shsk_stream.c new file mode 100644 index 0000000..f87001f --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_shsk_stream.c @@ -0,0 +1,102 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * Stream/crypto handshake adapter for the server side. Since on the server + * side, the handshake logic is handled in mini conn, this adapter does not + * have much to do. If peer sends any data on this stream, the adapter + * throws the data out and warns. + */ + +#include +#include +#include +#include +#include +#include +#include + +#ifndef WIN32 +#include +#include +#endif + +#include "lsquic_int_types.h" +#include "lsquic.h" + +#include "lsquic_str.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_shsk_stream.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_HSK_ADAPTER +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(s_hsk->lconn) +#include "lsquic_logger.h" + + + +static lsquic_stream_ctx_t * +hsk_server_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) +{ + struct server_hsk_ctx *const s_hsk = stream_if_ctx; + LSQ_DEBUG("stream created"); + + lsquic_stream_wantread(stream, 1); + + /* Note that we return the same thing we're passed. This structure lives + * inside struct full_conn. + */ + return (lsquic_stream_ctx_t *) s_hsk; +} + + +static void +hsk_server_on_read (lsquic_stream_t *stream, struct lsquic_stream_ctx *ctx) +{ + struct server_hsk_ctx *const s_hsk = (struct server_hsk_ctx *) ctx; + struct lsquic_mm *const mm = &s_hsk->enpub->enp_mm; + ssize_t nread; + unsigned char *buf; + + buf = lsquic_mm_get_4k(mm); + if (!buf) + { + LSQ_WARN("could not allocate buffer: %s", strerror(errno)); + return; + } + nread = lsquic_stream_read(stream, buf, 4 * 1024); + lsquic_mm_put_4k(mm, buf); + + if (!(s_hsk->flags & SHC_WARNED)) + { + LSQ_WARN("read %zd bytes from stream: what are we to do with them? " + "Further warnings suppressed", nread); + s_hsk->flags |= SHC_WARNED; + } + else + LSQ_DEBUG("read %zd bytes from stream", nread); +} + + +static void +hsk_server_on_write (lsquic_stream_t *stream, struct lsquic_stream_ctx *ctx) +{ + assert(0); /* This function is never called */ +} + + +static void +hsk_server_on_close (lsquic_stream_t *stream, struct lsquic_stream_ctx *ctx) +{ + struct server_hsk_ctx *s_hsk = (struct server_hsk_ctx *) ctx; + LSQ_DEBUG("stream closed"); +} + + +const struct lsquic_stream_if lsquic_server_hsk_stream_if = +{ + .on_new_stream = hsk_server_on_new_stream, + .on_read = hsk_server_on_read, + .on_write = hsk_server_on_write, + .on_close = hsk_server_on_close, +}; diff --git a/external/lsquic/src/liblsquic/lsquic_shsk_stream.h b/external/lsquic/src/liblsquic/lsquic_shsk_stream.h new file mode 100644 index 0000000..86d0a02 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_shsk_stream.h @@ -0,0 +1,23 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * Stream/crypto handshake adapter for the server side. See implementation + * for more comments and explanation. + */ + +#ifndef LSQUIC_SHSK_STREAM_H +#define LSQUIC_SHSK_STREAM_H 1 + +struct lsquic_conn; +struct lsquic_engine_public; + +struct server_hsk_ctx { + struct lsquic_conn *lconn; + struct lsquic_engine_public *enpub; + enum { + SHC_WARNED = (1 << 0), /* Warning has been printed */ + } flags; +}; + +extern const struct lsquic_stream_if lsquic_server_hsk_stream_if; + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_sizes.h b/external/lsquic/src/liblsquic/lsquic_sizes.h new file mode 100644 index 0000000..2e4313e --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_sizes.h @@ -0,0 +1,16 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_SIZES_H +#define LSQUIC_SIZES_H 1 + +#define IQUIC_SRESET_TOKEN_SZ 16u + +#define IQUIC_MIN_SRST_RANDOM_BYTES (1u /* First byte: 01XX XXXX */ \ + + 4u /* Random bytes */) + +#define IQUIC_MIN_SRST_SIZE (IQUIC_MIN_SRST_RANDOM_BYTES \ + + IQUIC_SRESET_TOKEN_SZ /* Token */) + +/* Allow some wiggle room */ +#define IQUIC_MAX_SRST_SIZE (IQUIC_MIN_SRST_SIZE + 40u) + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_spi.c b/external/lsquic/src/liblsquic/lsquic_spi.c new file mode 100644 index 0000000..b8dfde4 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_spi.c @@ -0,0 +1,364 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_spi.c - implementation of Stream Priority Iterator. + */ + +#include +#include +#include +#include +#include +#include +#include +#ifdef WIN32 +#include +#endif + +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_conn_flow.h" +#include "lsquic_rtt.h" +#include "lsquic_conn_public.h" +#include "lsquic_spi.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_SPI +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(iter->spi_conn) +#include "lsquic_logger.h" + +#define SPI_DEBUG(fmt, ...) LSQ_DEBUG("%s: " fmt, iter->spi_name, __VA_ARGS__) + +#define NEXT_STREAM(stream, off) \ + (* (struct lsquic_stream **) ((unsigned char *) (stream) + (off))) + + +static void +add_stream_to_spi (struct stream_prio_iter *iter, lsquic_stream_t *stream) +{ + unsigned set, bit; + set = stream->sm_priority >> 6; + bit = stream->sm_priority & 0x3F; + if (!(iter->spi_set[set] & (1ULL << bit))) + { + iter->spi_set[set] |= 1ULL << bit; + TAILQ_INIT(&iter->spi_streams[ stream->sm_priority ]); + } + TAILQ_INSERT_TAIL(&iter->spi_streams[ stream->sm_priority ], + stream, next_prio_stream); + ++iter->spi_n_added; +} + + +void +lsquic_spi_init (void *iter_p, struct lsquic_stream *first, + struct lsquic_stream *last, uintptr_t next_ptr_offset, + struct lsquic_conn_public *conn_pub, + const char *name, + int (*filter)(void *filter_ctx, struct lsquic_stream *), + void *filter_ctx) +{ + struct stream_prio_iter *const iter = iter_p; + struct lsquic_stream *stream; + unsigned count; + + iter->spi_conn = conn_pub->lconn; + iter->spi_name = name ? name : "UNSET"; + iter->spi_set[0] = 0; + iter->spi_set[1] = 0; + iter->spi_set[2] = 0; + iter->spi_set[3] = 0; + iter->spi_cur_prio = 0; + iter->spi_next_stream = NULL; + iter->spi_n_added = 0; + + stream = first; + count = 0; + + if (filter) + while (1) + { + if (filter(filter_ctx, stream)) + { + add_stream_to_spi(iter, stream); + ++count; + } + if (stream == last) + break; + stream = NEXT_STREAM(stream, next_ptr_offset); + } + else + while (1) + { + add_stream_to_spi(iter, stream); + ++count; + if (stream == last) + break; + stream = NEXT_STREAM(stream, next_ptr_offset); + } + + if (count > 2) + SPI_DEBUG("initialized; # elems: %u; sets: [ %016"PRIX64", %016"PRIX64 + ", %016"PRIX64", %016"PRIX64" ]", count, iter->spi_set[0], + iter->spi_set[1], iter->spi_set[2], iter->spi_set[3]); +} + + +static int +find_and_set_lowest_priority (struct stream_prio_iter *iter) +{ + unsigned set, prio; + uint64_t mask; + + for (set = 0, prio = 0; set < 4; ++set, prio += 64) + if (iter->spi_set[ set ]) + break; + + if (set >= 4) + { + //SPI_DEBUG("%s: cannot find any", __func__); + return -1; + } + + mask = iter->spi_set[set]; + if (!(mask & ((1ULL << 32) - 1))) { prio += 32; mask >>= 32; } + if (!(mask & ((1ULL << 16) - 1))) { prio += 16; mask >>= 16; } + if (!(mask & ((1ULL << 8) - 1))) { prio += 8; mask >>= 8; } + if (!(mask & ((1ULL << 4) - 1))) { prio += 4; mask >>= 4; } + if (!(mask & ((1ULL << 2) - 1))) { prio += 2; mask >>= 2; } + if (!(mask & ((1ULL << 1) - 1))) { prio += 1; } + +#ifndef NDEBUG + unsigned bit; + set = prio >> 6; + bit = prio & 0x3F; + assert(iter->spi_set[ set ] & (1ULL << bit)); +#endif + + SPI_DEBUG("%s: prio %u -> %u", __func__, iter->spi_cur_prio, prio); + iter->spi_cur_prio = (unsigned char) prio; + return 0; +} + + +static int +find_and_set_next_priority (struct stream_prio_iter *iter) +{ + unsigned set, bit, prio; + uint64_t mask; + + /* Examine values in the same set first */ + set = iter->spi_cur_prio >> 6; + bit = iter->spi_cur_prio & 0x3F; + prio = 64 * set; + + if (bit < 63) + { + mask = iter->spi_set[set]; + mask &= ~((1ULL << (bit + 1)) - 1); + if (mask) + goto calc_priority; + } + + ++set; + prio += 64; + for (; set < 4; ++set, prio += 64) + if (iter->spi_set[ set ]) + break; + + if (set >= 4) + { + //SPI_DEBUG("%s: cannot find any", __func__); + return -1; + } + + mask = iter->spi_set[set]; + + calc_priority: + if (!(mask & ((1ULL << 32) - 1))) { prio += 32; mask >>= 32; } + if (!(mask & ((1ULL << 16) - 1))) { prio += 16; mask >>= 16; } + if (!(mask & ((1ULL << 8) - 1))) { prio += 8; mask >>= 8; } + if (!(mask & ((1ULL << 4) - 1))) { prio += 4; mask >>= 4; } + if (!(mask & ((1ULL << 2) - 1))) { prio += 2; mask >>= 2; } + if (!(mask & ((1ULL << 1) - 1))) { prio += 1; } + +#ifndef NDEBUG + set = prio >> 6; + bit = prio & 0x3F; + assert(iter->spi_set[ set ] & (1ULL << bit)); +#endif + + SPI_DEBUG("%s: prio %u -> %u", __func__, iter->spi_cur_prio, prio); + iter->spi_cur_prio = (unsigned char) prio; + return 0; +} + + +lsquic_stream_t * +lsquic_spi_first (void *iter_p) +{ + struct stream_prio_iter *const iter = iter_p; + lsquic_stream_t *stream; + unsigned set, bit; + + iter->spi_cur_prio = 0; + set = iter->spi_cur_prio >> 6; + bit = iter->spi_cur_prio & 0x3F; + + if (!(iter->spi_set[set] & (1ULL << bit))) + { + if (0 != find_and_set_lowest_priority(iter)) + { + SPI_DEBUG("%s: return NULL", __func__); + return NULL; + } + } + + stream = TAILQ_FIRST(&iter->spi_streams[ iter->spi_cur_prio ]); + iter->spi_next_stream = TAILQ_NEXT(stream, next_prio_stream); + if (LSQ_LOG_ENABLED(LSQ_LOG_DEBUG) && !lsquic_stream_is_critical(stream)) + SPI_DEBUG("%s: return stream %"PRIu64", priority %u", __func__, + stream->id, iter->spi_cur_prio); + return stream; +} + + +lsquic_stream_t * +lsquic_spi_next (void *iter_p) +{ + struct stream_prio_iter *const iter = iter_p; + lsquic_stream_t *stream; + + stream = iter->spi_next_stream; + if (stream) + { + iter->spi_next_stream = TAILQ_NEXT(stream, next_prio_stream); + if (LSQ_LOG_ENABLED(LSQ_LOG_DEBUG) && !lsquic_stream_is_critical(stream)) + SPI_DEBUG("%s: return stream %"PRIu64", priority %u", __func__, + stream->id, iter->spi_cur_prio); + return stream; + } + + if (0 != find_and_set_next_priority(iter)) + { + //SPI_DEBUG("%s: return NULL", __func__); + return NULL; + } + + stream = TAILQ_FIRST(&iter->spi_streams[ iter->spi_cur_prio ]); + iter->spi_next_stream = TAILQ_NEXT(stream, next_prio_stream); + + if (LSQ_LOG_ENABLED(LSQ_LOG_DEBUG) && !lsquic_stream_is_critical(stream)) + SPI_DEBUG("%s: return stream %"PRIu64", priority %u", __func__, + stream->id, iter->spi_cur_prio); + return stream; +} + + +static int +have_non_critical_streams (const struct stream_prio_iter *iter) +{ + const struct lsquic_stream *stream; + TAILQ_FOREACH(stream, &iter->spi_streams[ iter->spi_cur_prio ], + next_prio_stream) + if (!lsquic_stream_is_critical(stream)) + return 1; + return 0; +} + + +#if __GNUC__ +# define popcount __builtin_popcountll +#else +static int +popcount (unsigned long long v) +{ + int count, i; + for (i = 0, count = 0; i < sizeof(v) * 8; ++i) + if (v & (1 << i)) + ++count; + return count; +} + + +#endif + + +static int +spi_has_more_than_one_queue (const struct stream_prio_iter *iter) +{ + unsigned i; + int count; + + if (iter->spi_n_added < 2) + return 0; + + count = 0; + for (i = 0; i < sizeof(iter->spi_set) / sizeof(iter->spi_set[0]); ++i) + { + count += popcount(iter->spi_set[i]); + if (count > 1) + return 1; + } + + return 0; +} + + +static void +spi_drop_high_or_non_high (void *iter_p, int drop_high) +{ + struct stream_prio_iter *const iter = iter_p; + uint64_t new_set[ sizeof(iter->spi_set) / sizeof(iter->spi_set[0]) ]; + unsigned bit, set, n; + + if (!spi_has_more_than_one_queue(iter)) + return; + + memset(new_set, 0, sizeof(new_set)); + + find_and_set_lowest_priority(iter); + set = iter->spi_cur_prio >> 6; + bit = iter->spi_cur_prio & 0x3F; + new_set[set] |= 1ULL << bit; + + if (!have_non_critical_streams(iter)) + { + ++iter->spi_cur_prio; + find_and_set_lowest_priority(iter); + set = iter->spi_cur_prio >> 6; + bit = iter->spi_cur_prio & 0x3F; + new_set[set] |= 1ULL << bit; + } + + for (n = 0; n < sizeof(new_set) / sizeof(new_set[0]); ++n) + if (drop_high) + iter->spi_set[n] &= ~new_set[n]; + else + iter->spi_set[n] = new_set[n]; +} + + +void +lsquic_spi_drop_high (void *iter_p) +{ + struct stream_prio_iter *const iter = iter_p; + spi_drop_high_or_non_high(iter, 1); +} + + +void +lsquic_spi_drop_non_high (void *iter_p) +{ + struct stream_prio_iter *const iter = iter_p; + spi_drop_high_or_non_high(iter, 0); +} + + +void +lsquic_spi_cleanup (void *iter_p) +{ +} diff --git a/external/lsquic/src/liblsquic/lsquic_spi.h b/external/lsquic/src/liblsquic/lsquic_spi.h new file mode 100644 index 0000000..450e1a2 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_spi.h @@ -0,0 +1,48 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_spi.h - SPI: Stream Priority Iterator + * + * Changing a stream's priority when the stream is in the iterator + * does not change the stream's position in the iterator. + */ + +#ifndef LSQUIC_SPI +#define LSQUIC_SPI 1 + + +struct stream_prio_iter +{ + const struct lsquic_conn *spi_conn; /* Used for logging */ + const char *spi_name; /* Used for logging */ + uint64_t spi_set[4]; /* 256 bits */ + unsigned spi_n_added; + unsigned char spi_cur_prio; + struct lsquic_stream *spi_next_stream; + struct lsquic_streams_tailq spi_streams[256]; +}; + + +void +lsquic_spi_init (void *, struct lsquic_stream *first, + struct lsquic_stream *last, uintptr_t next_ptr_offset, + struct lsquic_conn_public *, + const char *name, + int (*filter)(void *filter_ctx, struct lsquic_stream *), + void *filter_ctx); + +struct lsquic_stream * +lsquic_spi_first (void *); + +struct lsquic_stream * +lsquic_spi_next (void *); + +void +lsquic_spi_drop_non_high (void *); + +void +lsquic_spi_drop_high (void *); + +void +lsquic_spi_cleanup (void *); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_stock_shi.c b/external/lsquic/src/liblsquic/lsquic_stock_shi.c new file mode 100644 index 0000000..bd34749 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_stock_shi.c @@ -0,0 +1,214 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_stock_shi.c + */ + +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_stock_shi.h" +#include "lsquic_malo.h" +#include "lsquic_hash.h" + +struct stock_shared_hash +{ + TAILQ_HEAD(, hash_elem) lru_elems; + struct lsquic_hash *lhash; + struct malo *malo; +}; + + +struct key +{ + void *buf; + unsigned sz; +}; + + +struct hash_elem +{ + TAILQ_ENTRY(hash_elem) next_lru_he; + struct lsquic_hash_elem lhash_elem; + void *data; + time_t expiry; /* If not 0, the element is on LRU list */ + struct key key; + unsigned data_sz; +}; + + +static void +free_key_data (struct hash_elem *he) +{ + free(he->key.buf); +} + + +static void +delete_expired_elements (struct stock_shared_hash *hash) +{ + struct hash_elem *he; + time_t now = time(NULL); + while ((he = TAILQ_FIRST(&hash->lru_elems))) + { + if (he->expiry < now) + { + lsquic_hash_erase(hash->lhash, &he->lhash_elem); + if (he->expiry) + TAILQ_REMOVE(&hash->lru_elems, he, next_lru_he); + free_key_data(he); + lsquic_malo_put(he); + } + else + break; + } +} + + +static int +stock_shi_insert (void *hash_ctx, void *key, unsigned key_sz, + void *data, unsigned data_sz, time_t expiry) +{ + struct stock_shared_hash *const hash = hash_ctx; + struct hash_elem *he; + + /* Potential optimization: do not exire on every insert. Use case: + * if many insert occur in a row, it is not efficient to perform + * this check every time. Can add a counter in hash. + */ + if (!TAILQ_EMPTY(&hash->lru_elems)) + delete_expired_elements(hash); + + he = lsquic_malo_get(hash->malo); + if (!he) + return -1; + he->key.buf = malloc(key_sz + data_sz + 1); + if (!he->key.buf) + { + lsquic_malo_put(he); + return -1; + } + memmove(he->key.buf, key, key_sz); + ((char *)(he->key.buf))[key_sz] = 0; + he->key.sz = key_sz; + he->data = (char *)he->key.buf + he->key.sz + 1; + memmove(he->data, data, data_sz); + he->data_sz = data_sz; + he->expiry = expiry; + memset(&he->lhash_elem, 0, sizeof(he->lhash_elem)); + if (lsquic_hash_insert(hash->lhash, he->key.buf, + he->key.sz, he, &he->lhash_elem)) + { + if (expiry) + TAILQ_INSERT_TAIL(&hash->lru_elems, he, next_lru_he); + return 0; + } + else + { + lsquic_malo_put(he); + return -1; + } +} + + +static int +stock_shi_lookup (void *hash_ctx, const void *key, unsigned key_sz, + void **data, unsigned *data_sz) +{ + struct stock_shared_hash *const hash = hash_ctx; + struct hash_elem *he; + struct lsquic_hash_elem *el; + + if (!TAILQ_EMPTY(&hash->lru_elems)) + delete_expired_elements(hash); + + el = lsquic_hash_find(hash->lhash, key, key_sz); + if (!el) + return 0; /* 0: not found */ + he = lsquic_hashelem_getdata(el); + *data = he->data; + *data_sz = he->data_sz; + return 1; /* 1: found */ +} + + +static int +stock_shi_delete (void *hash_ctx, const void *key, unsigned key_sz) +{ + struct stock_shared_hash *const hash = hash_ctx; + struct lsquic_hash_elem *el; + struct hash_elem *he; + + if (!TAILQ_EMPTY(&hash->lru_elems)) + delete_expired_elements(hash); + + el = lsquic_hash_find(hash->lhash, key, key_sz); + if (!el) + return -1; + + he = lsquic_hashelem_getdata(el); + lsquic_hash_erase(hash->lhash, el); + if (he->expiry) + TAILQ_REMOVE(&hash->lru_elems, he, next_lru_he); + + free_key_data(he); + lsquic_malo_put(he); + return 0; +} + + +struct stock_shared_hash * +lsquic_stock_shared_hash_new (void) +{ + struct malo *malo; + struct stock_shared_hash *hash; + + malo = lsquic_malo_create(sizeof(struct hash_elem)); + if (!malo) + return NULL; + + hash = lsquic_malo_get(malo); + if (!hash) + { /* This would be really odd, but let's check this for completeness. */ + lsquic_malo_destroy(malo); + return NULL; + } + + hash->malo = malo; + hash->lhash = lsquic_hash_create(); + TAILQ_INIT(&hash->lru_elems); + return hash; +} + + +void +lsquic_stock_shared_hash_destroy (struct stock_shared_hash *hash) +{ + struct hash_elem *he; + struct lsquic_hash_elem *el; + for (el = lsquic_hash_first(hash->lhash); el; + el = lsquic_hash_next(hash->lhash)) + { + he = lsquic_hashelem_getdata(el); + free_key_data(he); + /* No need to lsquic_malo_put(he) here */ + } + lsquic_hash_destroy(hash->lhash); + lsquic_malo_destroy(hash->malo); +} + + +const struct lsquic_shared_hash_if stock_shi = +{ + .shi_insert = stock_shi_insert, + .shi_delete = stock_shi_delete, + .shi_lookup = stock_shi_lookup, +}; + + +/* Need this to save one malloc using malo: */ +typedef char hash_not_larger_than_hash_elem [ + (sizeof(struct stock_shared_hash) <= sizeof(struct hash_elem)) ? 1 : -1]; diff --git a/external/lsquic/src/liblsquic/lsquic_stock_shi.h b/external/lsquic/src/liblsquic/lsquic_stock_shi.h new file mode 100644 index 0000000..49d240b --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_stock_shi.h @@ -0,0 +1,30 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_stock_shi.h - Stock shared hash interface implementation. + */ + +#ifndef LSQUIC_STOCK_SHI +#define LSQUIC_STOCK_SHI 1 + +#include "lsquic_shared_support.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct stock_shared_hash; + +struct stock_shared_hash * +lsquic_stock_shared_hash_new (void); + +void +lsquic_stock_shared_hash_destroy (struct stock_shared_hash *); + + +#ifdef __cplusplus +} +#endif + +LSQUIC_EXTERN const struct lsquic_shared_hash_if stock_shi; + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_str.c b/external/lsquic/src/liblsquic/lsquic_str.c new file mode 100644 index 0000000..371c377 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_str.c @@ -0,0 +1,134 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_str.c + * + */ + +#include +#include + +#include "lsquic_str.h" + + +lsquic_str_t * +lsquic_str_new (const char *str, size_t sz) +{ + lsquic_str_t *lstr; + char *copy; + + if (str && sz) + { + copy = malloc(sz + 1); + if (!copy) + return NULL; + memcpy(copy, str, sz); + copy[sz] = '\0'; + } + else + copy = NULL; + + lstr = malloc(sizeof(*lstr)); + if (!lstr) + { + free(copy); + return NULL; + } + lstr->str = copy; + lstr->len = sz; + + return lstr; +} + + +void +lsquic_str_setto (lsquic_str_t *lstr, const void *str, size_t len) +{ + if (lsquic_str_len(lstr) > 0) + lsquic_str_d(lstr); + lsquic_str_append(lstr, str, len); +} + + +int +lsquic_str_append (lsquic_str_t *lstr, const char *str, size_t len) +{ + size_t newlen; + char *newstr; + + newlen = lstr->len + len; + newstr = realloc(lstr->str, newlen + 1); + if (!newstr) + return -1; + + memcpy(newstr + lstr->len, str, len); + newstr[newlen] = '\0'; + lstr->str = newstr; + lstr->len = newlen; + return 0; +} + + +void +lsquic_str_d (lsquic_str_t *lstr) +{ + if (lstr) { + free(lstr->str); + lstr->str = NULL; + lstr->len = 0; + } +} + + +void +lsquic_str_delete (lsquic_str_t *lstr) +{ + lsquic_str_d(lstr); + free(lstr); +} + + +char * +lsquic_str_prealloc (lsquic_str_t *lstr, size_t len) +{ + char *str; + + str = malloc(len + 1); + if (str) + lstr->str = str; + + return str; +} + + +int +lsquic_str_bcmp (const void *ap, const void *bp) +{ + const lsquic_str_t *a = ap, *b = bp; + size_t min; + int rc; + + min = a->len < b->len ? a->len : b->len; + rc = memcmp(a->str, b->str, min); + if (rc) + return rc; + else + return (a->len > b->len) - (b->len > a->len); +} + + +lsquic_str_t * +lsquic_str_copy (lsquic_str_t *lstr_dst, const lsquic_str_t *lstr_src) +{ + char *copy; + + copy = malloc(lstr_src->len + 1); + if (!copy) + /* Keeping the original behavior: */ + return NULL; + + memcpy(copy, lstr_src->str, lstr_src->len); + copy[lstr_src->len] = '\0'; + lstr_dst->str = copy; + lstr_dst->len = lstr_src->len; + return lstr_dst; +} diff --git a/external/lsquic/src/liblsquic/lsquic_str.h b/external/lsquic/src/liblsquic/lsquic_str.h new file mode 100644 index 0000000..447bc90 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_str.h @@ -0,0 +1,81 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_str.h -- Some string routines. + */ + +#ifndef LSQUIC_STR_H +#define LSQUIC_STR_H 1 + +struct lsquic_str +{ + char *str; + size_t len; +}; + + +typedef struct lsquic_str lsquic_str_t; + + +lsquic_str_t * +lsquic_str_new (const char *, size_t); + +static inline size_t +lsquic_str_len (const lsquic_str_t *lstr) +{ + return +lstr->len; +} + +static inline void +lsquic_str_setlen (lsquic_str_t *lstr, size_t len) +{ + lstr->len = len; +} + +void +lsquic_str_setto (lsquic_str_t *, const void *, size_t); + +int +lsquic_str_append (lsquic_str_t *, const char *, size_t); + +void +lsquic_str_d (lsquic_str_t *); + +void +lsquic_str_delete (lsquic_str_t *); + +char * +lsquic_str_prealloc (lsquic_str_t *, size_t); + +static inline char * +lsquic_str_buf (const lsquic_str_t *lstr) +{ + return (char *) lstr->str; +} + +static inline const char * +lsquic_str_cstr (const lsquic_str_t *lstr) +{ + return (const char *) lstr->str; +} + +static inline void +lsquic_str_blank (lsquic_str_t *lstr) +{ + lstr->str = NULL; + lstr->len = 0; +} + +int +lsquic_str_bcmp (const void *, const void *); + +lsquic_str_t * +lsquic_str_copy (lsquic_str_t *, const lsquic_str_t *); + +static inline void +lsquic_str_set (lsquic_str_t *lstr, char *src, size_t len_) +{ + lstr->str = src; + lstr->len = len_; +} + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_stream.c b/external/lsquic/src/liblsquic/lsquic_stream.c new file mode 100644 index 0000000..eca58b6 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_stream.c @@ -0,0 +1,5618 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_stream.c -- stream processing + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef WIN32 +#include +#endif + +#include "fiu-local.h" + +#include "lsquic.h" + +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" +#include "lsquic_malo.h" +#include "lsquic_conn_flow.h" +#include "lsquic_rtt.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_conn_public.h" +#include "lsquic_util.h" +#include "lsquic_mm.h" +#include "lsquic_headers_stream.h" +#include "lsquic_conn.h" +#include "lsquic_data_in_if.h" +#include "lsquic_parse.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_engine_public.h" +#include "lsquic_senhist.h" +#include "lsquic_pacer.h" +#include "lsquic_cubic.h" +#include "lsquic_bw_sampler.h" +#include "lsquic_minmax.h" +#include "lsquic_bbr.h" +#include "lsquic_adaptive_cc.h" +#include "lsquic_send_ctl.h" +#include "lsquic_headers.h" +#include "lsquic_ev_log.h" +#include "lsquic_enc_sess.h" +#include "lsqpack.h" +#include "lsquic_frab_list.h" +#include "lsquic_http1x_if.h" +#include "lsquic_qdec_hdl.h" +#include "lsquic_qenc_hdl.h" +#include "lsquic_byteswap.h" +#include "lsquic_ietf.h" +#include "lsquic_push_promise.h" +#include "lsquic_hcso_writer.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_STREAM +#define LSQUIC_LOG_CONN_ID lsquic_conn_log_cid(stream->conn_pub->lconn) +#define LSQUIC_LOG_STREAM_ID stream->id +#include "lsquic_logger.h" + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + +static void +drop_frames_in (lsquic_stream_t *stream); + +static void +maybe_schedule_call_on_close (lsquic_stream_t *stream); + +static int +stream_wantread (lsquic_stream_t *stream, int is_want); + +static int +stream_wantwrite (lsquic_stream_t *stream, int is_want); + +enum stream_write_options +{ + SWO_BUFFER = 1 << 0, /* Allow buffering in sm_buf */ +}; + + +static ssize_t +stream_write_to_packets (lsquic_stream_t *, struct lsquic_reader *, size_t, + enum stream_write_options); + +static ssize_t +save_to_buffer (lsquic_stream_t *, struct lsquic_reader *, size_t len); + +static int +stream_flush (lsquic_stream_t *stream); + +static int +stream_flush_nocheck (lsquic_stream_t *stream); + +static void +maybe_remove_from_write_q (lsquic_stream_t *stream, enum stream_q_flags flag); + +enum swtp_status { SWTP_OK, SWTP_STOP, SWTP_ERROR }; + +static enum swtp_status +stream_write_to_packet_std (struct frame_gen_ctx *fg_ctx, const size_t size); + +static enum swtp_status +stream_write_to_packet_hsk (struct frame_gen_ctx *fg_ctx, const size_t size); + +static enum swtp_status +stream_write_to_packet_crypto (struct frame_gen_ctx *fg_ctx, const size_t size); + +static size_t +stream_write_avail_no_frames (struct lsquic_stream *); + +static size_t +stream_write_avail_with_frames (struct lsquic_stream *); + +static size_t +stream_write_avail_with_headers (struct lsquic_stream *); + +static int +hq_filter_readable (struct lsquic_stream *stream); + +static void +hq_decr_left (struct lsquic_stream *stream, size_t); + +static size_t +hq_filter_df (struct lsquic_stream *stream, struct data_frame *data_frame); + +static int +stream_readable_non_http (struct lsquic_stream *stream); + +static int +stream_readable_http_gquic (struct lsquic_stream *stream); + +static int +stream_readable_http_ietf (struct lsquic_stream *stream); + +static ssize_t +stream_write_buf (struct lsquic_stream *stream, const void *buf, size_t sz); + +static void +stream_reset (struct lsquic_stream *, uint64_t error_code, int do_close); + +static size_t +active_hq_frame_sizes (const struct lsquic_stream *); + +static void +on_write_pp_wrapper (struct lsquic_stream *, lsquic_stream_ctx_t *); + +static void +stream_hq_frame_put (struct lsquic_stream *, struct stream_hq_frame *); + +static size_t +stream_hq_frame_size (const struct stream_hq_frame *); + +const struct stream_filter_if hq_stream_filter_if = +{ + .sfi_readable = hq_filter_readable, + .sfi_filter_df = hq_filter_df, + .sfi_decr_left = hq_decr_left, +}; + + +#if LSQUIC_KEEP_STREAM_HISTORY +/* These values are printable ASCII characters for ease of printing the + * whole history in a single line of a log message. + * + * The list of events is not exhaustive: only most interesting events + * are recorded. + */ +enum stream_history_event +{ + SHE_EMPTY = '\0', /* Special entry. No init besides memset required */ + SHE_PLUS = '+', /* Special entry: previous event occured more than once */ + SHE_REACH_FIN = 'a', + SHE_EARLY_READ_STOP = 'A', + SHE_BLOCKED_OUT = 'b', + SHE_CREATED = 'C', + SHE_FRAME_IN = 'd', + SHE_FRAME_OUT = 'D', + SHE_RESET = 'e', + SHE_WINDOW_UPDATE = 'E', + SHE_FIN_IN = 'f', + SHE_FINISHED = 'F', + SHE_GOAWAY_IN = 'g', + SHE_USER_WRITE_HEADER = 'h', + SHE_HEADERS_IN = 'H', + SHE_IF_SWITCH = 'i', + SHE_ONCLOSE_SCHED = 'l', + SHE_ONCLOSE_CALL = 'L', + SHE_ONNEW = 'N', + SHE_SET_PRIO = 'p', + SHE_SHORT_WRITE = 'q', + SHE_USER_READ = 'r', + SHE_SHUTDOWN_READ = 'R', + SHE_RST_IN = 's', + SHE_STOP_SENDIG_IN = 'S', + SHE_RST_OUT = 't', + SHE_RST_ACKED = 'T', + SHE_FLUSH = 'u', + SHE_STOP_SENDIG_OUT = 'U', + SHE_USER_WRITE_DATA = 'w', + SHE_SHUTDOWN_WRITE = 'W', + SHE_CLOSE = 'X', + SHE_DELAY_SW = 'y', + SHE_FORCE_FINISH = 'Z', + SHE_WANTREAD_NO = '0', /* "YES" must be one more than "NO" */ + SHE_WANTREAD_YES = '1', + SHE_WANTWRITE_NO = '2', + SHE_WANTWRITE_YES = '3', +}; + +static void +sm_history_append (lsquic_stream_t *stream, enum stream_history_event sh_event) +{ + enum stream_history_event prev_event; + sm_hist_idx_t idx; + int plus; + + idx = (stream->sm_hist_idx - 1) & SM_HIST_IDX_MASK; + plus = SHE_PLUS == stream->sm_hist_buf[idx]; + idx = (idx - plus) & SM_HIST_IDX_MASK; + prev_event = stream->sm_hist_buf[idx]; + + if (prev_event == sh_event && plus) + return; + + if (prev_event == sh_event) + sh_event = SHE_PLUS; + stream->sm_hist_buf[ stream->sm_hist_idx++ & SM_HIST_IDX_MASK ] = sh_event; + + if (0 == (stream->sm_hist_idx & SM_HIST_IDX_MASK)) + LSQ_DEBUG("history: [%.*s]", (int) sizeof(stream->sm_hist_buf), + stream->sm_hist_buf); +} + + +# define SM_HISTORY_APPEND(stream, event) sm_history_append(stream, event) +# define SM_HISTORY_DUMP_REMAINING(stream) do { \ + if (stream->sm_hist_idx & SM_HIST_IDX_MASK) \ + LSQ_DEBUG("history: [%.*s]", \ + (int) ((stream)->sm_hist_idx & SM_HIST_IDX_MASK), \ + (stream)->sm_hist_buf); \ + } while (0) +#else +# define SM_HISTORY_APPEND(stream, event) +# define SM_HISTORY_DUMP_REMAINING(stream) +#endif + + +static int +stream_inside_callback (const lsquic_stream_t *stream) +{ + return stream->conn_pub->enpub->enp_flags & ENPUB_PROC; +} + + +/* This is an approximation. If data is written or read outside of the + * event loop, last_prog will be somewhat out of date, but it's close + * enough for our purposes. + */ +static void +maybe_update_last_progress (struct lsquic_stream *stream) +{ + if (stream->conn_pub && !lsquic_stream_is_critical(stream)) + { + if (stream->conn_pub->last_prog != stream->conn_pub->last_tick) + LSQ_DEBUG("update last progress to %"PRIu64, + stream->conn_pub->last_tick); + stream->conn_pub->last_prog = stream->conn_pub->last_tick; +#ifndef NDEBUG + stream->sm_last_prog = stream->conn_pub->last_tick; +#endif + } +} + + +static void +maybe_conn_to_tickable (lsquic_stream_t *stream) +{ + if (!stream_inside_callback(stream)) + lsquic_engine_add_conn_to_tickable(stream->conn_pub->enpub, + stream->conn_pub->lconn); +} + + +/* Here, "readable" means that the user is able to read from the stream. */ +static void +maybe_conn_to_tickable_if_readable (lsquic_stream_t *stream) +{ + if (!stream_inside_callback(stream) && lsquic_stream_readable(stream)) + { + lsquic_engine_add_conn_to_tickable(stream->conn_pub->enpub, + stream->conn_pub->lconn); + } +} + + +/* Here, "writeable" means that data can be put into packets to be + * scheduled to be sent out. + * + * If `check_can_send' is false, it means that we do not need to check + * whether packets can be sent. This check was already performed when + * we packetized stream data. + */ +static void +maybe_conn_to_tickable_if_writeable (lsquic_stream_t *stream, + int check_can_send) +{ + if (!stream_inside_callback(stream) && + (!check_can_send + || lsquic_send_ctl_can_send(stream->conn_pub->send_ctl)) && + ! lsquic_send_ctl_have_delayed_packets(stream->conn_pub->send_ctl)) + { + lsquic_engine_add_conn_to_tickable(stream->conn_pub->enpub, + stream->conn_pub->lconn); + } +} + + +static int +stream_stalled (const lsquic_stream_t *stream) +{ + return 0 == (stream->sm_qflags & (SMQF_WANT_WRITE|SMQF_WANT_READ)) && + ((STREAM_U_READ_DONE|STREAM_U_WRITE_DONE) & stream->stream_flags) + != (STREAM_U_READ_DONE|STREAM_U_WRITE_DONE); +} + + +static size_t +stream_stream_frame_header_sz (const struct lsquic_stream *stream, + unsigned data_sz) +{ + return stream->conn_pub->lconn->cn_pf->pf_calc_stream_frame_header_sz( + stream->id, stream->tosend_off, data_sz); +} + + +static size_t +stream_crypto_frame_header_sz (const struct lsquic_stream *stream, + unsigned data_sz) +{ + return stream->conn_pub->lconn->cn_pf + ->pf_calc_crypto_frame_header_sz(stream->tosend_off, data_sz); +} + + +/* GQUIC-only function */ +static int +stream_is_hsk (const struct lsquic_stream *stream) +{ + if (stream->sm_bflags & SMBF_IETF) + return 0; + else + return lsquic_stream_is_crypto(stream); +} + + +/* This function's only job is to change the allocated packet's header + * type to HETY_0RTT when stream frames are written before handshake + * is complete. + */ +static struct lsquic_packet_out * +stream_get_packet_for_stream_0rtt (struct lsquic_send_ctl *ctl, + unsigned need_at_least, const struct network_path *path, + const struct lsquic_stream *stream) +{ + struct lsquic_packet_out *packet_out; + + if (stream->conn_pub->lconn->cn_flags & LSCONN_HANDSHAKE_DONE) + { + LSQ_DEBUG("switch to regular \"get packet for stream\" function"); + /* Here we drop the "const" because this is a static function. + * Otherwise, we would not condone such sorcery. + */ + ((struct lsquic_stream *) stream)->sm_get_packet_for_stream + = lsquic_send_ctl_get_packet_for_stream; + return lsquic_send_ctl_get_packet_for_stream(ctl, need_at_least, + path, stream); + } + else + { + packet_out = lsquic_send_ctl_get_packet_for_stream(ctl, need_at_least, + path, stream); + if (packet_out) + packet_out->po_header_type = HETY_0RTT; + return packet_out; + } +} + + +static struct lsquic_stream * +stream_new_common (lsquic_stream_id_t id, struct lsquic_conn_public *conn_pub, + const struct lsquic_stream_if *stream_if, void *stream_if_ctx, + enum stream_ctor_flags ctor_flags) +{ + struct lsquic_stream *stream; + + stream = calloc(1, sizeof(*stream)); + if (!stream) + return NULL; + + if (ctor_flags & SCF_USE_DI_HASH) + stream->data_in = lsquic_data_in_hash_new(conn_pub, id, 0); + else + stream->data_in = lsquic_data_in_nocopy_new(conn_pub, id); + if (!stream->data_in) + { + free(stream); + return NULL; + } + + stream->id = id; + stream->stream_if = stream_if; + stream->conn_pub = conn_pub; + stream->sm_onnew_arg = stream_if_ctx; + stream->sm_write_avail = stream_write_avail_no_frames; + + STAILQ_INIT(&stream->sm_hq_frames); + + stream->sm_bflags |= ctor_flags & ((1 << N_SMBF_FLAGS) - 1); + if (conn_pub->lconn->cn_flags & LSCONN_SERVER) + stream->sm_bflags |= SMBF_SERVER; + stream->sm_get_packet_for_stream = lsquic_send_ctl_get_packet_for_stream; + + return stream; +} + + +lsquic_stream_t * +lsquic_stream_new (lsquic_stream_id_t id, + struct lsquic_conn_public *conn_pub, + const struct lsquic_stream_if *stream_if, void *stream_if_ctx, + unsigned initial_window, uint64_t initial_send_off, + enum stream_ctor_flags ctor_flags) +{ + lsquic_cfcw_t *cfcw; + lsquic_stream_t *stream; + + stream = stream_new_common(id, conn_pub, stream_if, stream_if_ctx, + ctor_flags); + if (!stream) + return NULL; + + if (!initial_window) + initial_window = 16 * 1024; + + if (ctor_flags & SCF_IETF) + { + cfcw = &conn_pub->cfcw; + stream->sm_bflags |= SMBF_CONN_LIMITED; + if (ctor_flags & SCF_HTTP) + { + stream->sm_write_avail = stream_write_avail_with_headers; + stream->sm_readable = stream_readable_http_ietf; + stream->sm_sfi = &hq_stream_filter_if; + } + else + stream->sm_readable = stream_readable_non_http; + if ((ctor_flags & (SCF_HTTP|SCF_HTTP_PRIO)) + == (SCF_HTTP|SCF_HTTP_PRIO)) + lsquic_stream_set_priority_internal(stream, LSQUIC_DEF_HTTP_URGENCY); + else + lsquic_stream_set_priority_internal(stream, + LSQUIC_STREAM_DEFAULT_PRIO); + stream->sm_write_to_packet = stream_write_to_packet_std; + stream->sm_frame_header_sz = stream_stream_frame_header_sz; + } + else + { + if (ctor_flags & SCF_CRITICAL) + cfcw = NULL; + else + { + cfcw = &conn_pub->cfcw; + stream->sm_bflags |= SMBF_CONN_LIMITED; + lsquic_stream_set_priority_internal(stream, + LSQUIC_STREAM_DEFAULT_PRIO); + } + if (stream->sm_bflags & SMBF_USE_HEADERS) + stream->sm_readable = stream_readable_http_gquic; + else + stream->sm_readable = stream_readable_non_http; + if (ctor_flags & SCF_CRYPTO_FRAMES) + { + stream->sm_frame_header_sz = stream_crypto_frame_header_sz; + stream->sm_write_to_packet = stream_write_to_packet_crypto; + } + else + { + if (stream_is_hsk(stream)) + stream->sm_write_to_packet = stream_write_to_packet_hsk; + else + stream->sm_write_to_packet = stream_write_to_packet_std; + stream->sm_frame_header_sz = stream_stream_frame_header_sz; + } + } + + if ((stream->sm_bflags & (SMBF_SERVER|SMBF_IETF)) == SMBF_IETF + && !(conn_pub->lconn->cn_flags & LSCONN_HANDSHAKE_DONE)) + { + LSQ_DEBUG("use wrapper \"get packet for stream\" function"); + stream->sm_get_packet_for_stream = stream_get_packet_for_stream_0rtt; + } + + lsquic_sfcw_init(&stream->fc, initial_window, cfcw, conn_pub, id); + stream->max_send_off = initial_send_off; + LSQ_DEBUG("created stream"); + SM_HISTORY_APPEND(stream, SHE_CREATED); + if (ctor_flags & SCF_CALL_ON_NEW) + lsquic_stream_call_on_new(stream); + return stream; +} + + +struct lsquic_stream * +lsquic_stream_new_crypto (enum enc_level enc_level, + struct lsquic_conn_public *conn_pub, + const struct lsquic_stream_if *stream_if, void *stream_if_ctx, + enum stream_ctor_flags ctor_flags) +{ + struct lsquic_stream *stream; + lsquic_stream_id_t stream_id; + + assert(ctor_flags & SCF_CRITICAL); + + fiu_return_on("stream/new_crypto", NULL); + + stream_id = ~0ULL - enc_level; + stream = stream_new_common(stream_id, conn_pub, stream_if, + stream_if_ctx, ctor_flags); + if (!stream) + return NULL; + + stream->sm_bflags |= SMBF_CRYPTO|SMBF_IETF; + stream->sm_enc_level = enc_level; + /* We allow buffering of up to 16 KB of CRYPTO data (I guess we could + * make this configurable?). The window is opened (without sending + * MAX_STREAM_DATA) as CRYPTO data is consumed. If too much comes in + * at a time, we abort with TEC_CRYPTO_BUFFER_EXCEEDED. + */ + lsquic_sfcw_init(&stream->fc, 16 * 1024, NULL, conn_pub, stream_id); + /* Don't limit ourselves from sending CRYPTO data. We assume that + * the underlying crypto library behaves in a sane manner. + */ + stream->max_send_off = UINT64_MAX; + LSQ_DEBUG("created crypto stream"); + SM_HISTORY_APPEND(stream, SHE_CREATED); + stream->sm_frame_header_sz = stream_crypto_frame_header_sz; + stream->sm_write_to_packet = stream_write_to_packet_crypto; + stream->sm_readable = stream_readable_non_http; + if (ctor_flags & SCF_CALL_ON_NEW) + lsquic_stream_call_on_new(stream); + return stream; +} + + +void +lsquic_stream_call_on_new (lsquic_stream_t *stream) +{ + assert(!(stream->stream_flags & STREAM_ONNEW_DONE)); + if (!(stream->stream_flags & STREAM_ONNEW_DONE)) + { + LSQ_DEBUG("calling on_new_stream"); + SM_HISTORY_APPEND(stream, SHE_ONNEW); + stream->stream_flags |= STREAM_ONNEW_DONE; + stream->st_ctx = stream->stream_if->on_new_stream(stream->sm_onnew_arg, + stream); + } +} + + +static void +decr_conn_cap (struct lsquic_stream *stream, size_t incr) +{ + if (stream->sm_bflags & SMBF_CONN_LIMITED) + { + assert(stream->conn_pub->conn_cap.cc_sent >= incr); + stream->conn_pub->conn_cap.cc_sent -= incr; + LSQ_DEBUG("decrease cc_sent by %zd to %"PRIu64, incr, + stream->conn_pub->conn_cap.cc_sent); + + } +} + + +static void +maybe_resize_stream_buffer (struct lsquic_stream *stream) +{ + assert(0 == stream->sm_n_buffered); + + if (stream->sm_n_allocated < stream->conn_pub->path->np_pack_size) + { + free(stream->sm_buf); + stream->sm_buf = NULL; + stream->sm_n_allocated = 0; + } + else if (stream->sm_n_allocated > stream->conn_pub->path->np_pack_size) + stream->sm_n_allocated = stream->conn_pub->path->np_pack_size; +} + + +static void +drop_buffered_data (struct lsquic_stream *stream) +{ + decr_conn_cap(stream, stream->sm_n_buffered); + stream->sm_n_buffered = 0; + maybe_resize_stream_buffer(stream); + if (stream->sm_qflags & SMQF_WRITE_Q_FLAGS) + maybe_remove_from_write_q(stream, SMQF_WRITE_Q_FLAGS); +} + + +void +lsquic_stream_drop_hset_ref (struct lsquic_stream *stream) +{ + if (stream->uh) + stream->uh->uh_hset = NULL; +} + + +static void +destroy_uh (struct uncompressed_headers *uh, const struct lsquic_hset_if *hsi_if) +{ + if (uh) + { + if (uh->uh_hset) + hsi_if->hsi_discard_header_set(uh->uh_hset); + free(uh); + } +} + + +void +lsquic_stream_destroy (lsquic_stream_t *stream) +{ + struct push_promise *promise; + struct stream_hq_frame *shf; + struct uncompressed_headers *uh; + + stream->stream_flags |= STREAM_U_WRITE_DONE|STREAM_U_READ_DONE; + if ((stream->stream_flags & (STREAM_ONNEW_DONE|STREAM_ONCLOSE_DONE)) == + STREAM_ONNEW_DONE) + { + stream->stream_flags |= STREAM_ONCLOSE_DONE; + SM_HISTORY_APPEND(stream, SHE_ONCLOSE_CALL); + stream->stream_if->on_close(stream, stream->st_ctx); + } + if (stream->sm_qflags & SMQF_SENDING_FLAGS) + TAILQ_REMOVE(&stream->conn_pub->sending_streams, stream, next_send_stream); + if (stream->sm_qflags & SMQF_WANT_READ) + TAILQ_REMOVE(&stream->conn_pub->read_streams, stream, next_read_stream); + if (stream->sm_qflags & SMQF_WRITE_Q_FLAGS) + TAILQ_REMOVE(&stream->conn_pub->write_streams, stream, next_write_stream); + if (stream->sm_qflags & SMQF_SERVICE_FLAGS) + TAILQ_REMOVE(&stream->conn_pub->service_streams, stream, next_service_stream); + if (stream->sm_qflags & SMQF_QPACK_DEC) + lsquic_qdh_cancel_stream(stream->conn_pub->u.ietf.qdh, stream); + else if ((stream->sm_bflags & (SMBF_IETF|SMBF_USE_HEADERS)) + == (SMBF_IETF|SMBF_USE_HEADERS) + && !(stream->stream_flags & STREAM_FIN_REACHED)) + lsquic_qdh_cancel_stream_id(stream->conn_pub->u.ietf.qdh, stream->id); + drop_buffered_data(stream); + lsquic_sfcw_consume_rem(&stream->fc); + drop_frames_in(stream); + if (stream->push_req) + { + if (stream->push_req->uh_hset) + stream->conn_pub->enpub->enp_hsi_if + ->hsi_discard_header_set(stream->push_req->uh_hset); + free(stream->push_req); + } + while ((promise = SLIST_FIRST(&stream->sm_promises))) + { + SLIST_REMOVE_HEAD(&stream->sm_promises, pp_next); + lsquic_pp_put(promise, stream->conn_pub->u.ietf.promises); + } + if (stream->sm_promise) + { + assert(stream->sm_promise->pp_pushed_stream == stream); + stream->sm_promise->pp_pushed_stream = NULL; + lsquic_pp_put(stream->sm_promise, stream->conn_pub->u.ietf.promises); + } + while ((shf = STAILQ_FIRST(&stream->sm_hq_frames))) + stream_hq_frame_put(stream, shf); + while(stream->uh) + { + uh = stream->uh; + stream->uh = uh->uh_next; + destroy_uh(uh, stream->conn_pub->enpub->enp_hsi_if); + } + free(stream->sm_buf); + free(stream->sm_header_block); + LSQ_DEBUG("destroyed stream"); + SM_HISTORY_DUMP_REMAINING(stream); + free(stream); +} + + +static int +stream_is_finished (struct lsquic_stream *stream) +{ + return lsquic_stream_is_closed(stream) + && (stream->sm_bflags & SMBF_DELAY_ONCLOSE ? + /* Need a stricter check when on_close() is delayed: */ + !lsquic_stream_has_unacked_data(stream) : + /* n_unacked checks that no outgoing packets that reference this + * stream are outstanding: + */ + 0 == stream->n_unacked) + && 0 == (stream->sm_qflags & ( + /* This checks that no packets that reference this stream will + * become outstanding: + */ + SMQF_SEND_RST + /* Can't finish stream until all "self" flags are unset: */ + | SMQF_SELF_FLAGS)) + && ((stream->stream_flags & STREAM_FORCE_FINISH) + || (stream->stream_flags & (STREAM_FIN_SENT |STREAM_RST_SENT))); +} + + +/* This is an internal function */ +void +lsquic_stream_force_finish (struct lsquic_stream *stream) +{ + LSQ_DEBUG("stream is now finished"); + SM_HISTORY_APPEND(stream, SHE_FINISHED); + if (0 == (stream->sm_qflags & SMQF_SERVICE_FLAGS)) + TAILQ_INSERT_TAIL(&stream->conn_pub->service_streams, stream, + next_service_stream); + stream->sm_qflags |= SMQF_FREE_STREAM; + stream->stream_flags |= STREAM_FINISHED; +} + + +static void +maybe_finish_stream (lsquic_stream_t *stream) +{ + if (0 == (stream->stream_flags & STREAM_FINISHED) && + stream_is_finished(stream)) + lsquic_stream_force_finish(stream); +} + + +static void +maybe_schedule_call_on_close (lsquic_stream_t *stream) +{ + if ((stream->stream_flags & (STREAM_U_READ_DONE|STREAM_U_WRITE_DONE| + STREAM_ONNEW_DONE|STREAM_ONCLOSE_DONE)) + == (STREAM_U_READ_DONE|STREAM_U_WRITE_DONE|STREAM_ONNEW_DONE) + && (!(stream->sm_bflags & SMBF_DELAY_ONCLOSE) + || !lsquic_stream_has_unacked_data(stream)) + && !(stream->sm_qflags & SMQF_CALL_ONCLOSE)) + { + if (0 == (stream->sm_qflags & SMQF_SERVICE_FLAGS)) + TAILQ_INSERT_TAIL(&stream->conn_pub->service_streams, stream, + next_service_stream); + stream->sm_qflags |= SMQF_CALL_ONCLOSE; + LSQ_DEBUG("scheduled calling on_close"); + SM_HISTORY_APPEND(stream, SHE_ONCLOSE_SCHED); + } +} + + +void +lsquic_stream_call_on_close (lsquic_stream_t *stream) +{ + assert(stream->stream_flags & STREAM_ONNEW_DONE); + stream->sm_qflags &= ~SMQF_CALL_ONCLOSE; + if (!(stream->sm_qflags & SMQF_SERVICE_FLAGS)) + TAILQ_REMOVE(&stream->conn_pub->service_streams, stream, + next_service_stream); + if (0 == (stream->stream_flags & STREAM_ONCLOSE_DONE)) + { + LSQ_DEBUG("calling on_close"); + stream->stream_flags |= STREAM_ONCLOSE_DONE; + SM_HISTORY_APPEND(stream, SHE_ONCLOSE_CALL); + stream->stream_if->on_close(stream, stream->st_ctx); + if (stream->sm_qflags & SMQF_WANT_WRITE) + maybe_remove_from_write_q(stream, SMQF_WANT_WRITE); + } + else + assert(0); +} + + +static int +stream_has_frame_at_read_offset (struct lsquic_stream *stream) +{ + if (!((stream->stream_flags & STREAM_CACHED_FRAME) + && stream->read_offset == stream->sm_last_frame_off)) + { + stream->sm_has_frame = stream->data_in->di_if->di_get_frame( + stream->data_in, stream->read_offset) != NULL; + stream->sm_last_frame_off = stream->read_offset; + stream->stream_flags |= STREAM_CACHED_FRAME; + } + return stream->sm_has_frame; +} + + +static int +stream_readable_non_http (struct lsquic_stream *stream) +{ + return stream_has_frame_at_read_offset(stream); +} + + +static int +stream_readable_http_gquic (struct lsquic_stream *stream) +{ + return (stream->stream_flags & STREAM_HAVE_UH) + && (stream->uh + || stream_has_frame_at_read_offset(stream)); +} + + +static int +stream_readable_http_ietf (struct lsquic_stream *stream) +{ + return + /* If we have read the header set and the header set has not yet + * been read, the stream is readable. + */ + ((stream->stream_flags & STREAM_HAVE_UH) && stream->uh) + || + /* Alternatively, run the filter and check for payload availability. */ + (stream->sm_sfi->sfi_readable(stream) + && (/* Running the filter may result in hitting FIN: */ + (stream->stream_flags & STREAM_FIN_REACHED) + || stream_has_frame_at_read_offset(stream))); +} + + +static int +maybe_switch_data_in (struct lsquic_stream *stream) +{ + if ((stream->sm_bflags & SMBF_AUTOSWITCH) && + (stream->data_in->di_flags & DI_SWITCH_IMPL)) + { + stream->data_in = stream->data_in->di_if->di_switch_impl( + stream->data_in, stream->read_offset); + if (!stream->data_in) + { + stream->data_in = lsquic_data_in_error_new(); + return -1; + } + } + + return 0; +} + + +/* Drain and discard any incoming data */ +static int +stream_readable_discard (struct lsquic_stream *stream) +{ + struct data_frame *data_frame; + uint64_t toread; + int fin; + + while ((data_frame = stream->data_in->di_if->di_get_frame( + stream->data_in, stream->read_offset))) + { + fin = data_frame->df_fin; + toread = data_frame->df_size - data_frame->df_read_off; + stream->read_offset += toread; + data_frame->df_read_off = data_frame->df_size; + stream->data_in->di_if->di_frame_done(stream->data_in, data_frame); + if (fin) + break; + } + + (void) maybe_switch_data_in(stream); + + return 0; /* Never readable */ +} + + +static int +stream_is_read_reset (const struct lsquic_stream *stream) +{ + if (stream->sm_bflags & SMBF_IETF) + return stream->stream_flags & STREAM_RST_RECVD; + else + return (stream->stream_flags & (STREAM_RST_RECVD|STREAM_RST_SENT)) + || (stream->sm_qflags & SMQF_SEND_RST); +} + + +int +lsquic_stream_readable (struct lsquic_stream *stream) +{ + /* A stream is readable if one of the following is true: */ + return + /* - It is already finished: in that case, lsquic_stream_read() will + * return 0. + */ + (stream->stream_flags & STREAM_FIN_REACHED) + /* - The stream is reset, by either side. In this case, + * lsquic_stream_read() will return -1 (we want the user to be + * able to collect the error). + */ + || stream_is_read_reset(stream) + /* Type-dependent readability check: */ + || stream->sm_readable(stream); + ; +} + + +/* Return true if write end of the stream has been reset. + * Note that the logic for gQUIC is the same for write and read resets. + */ +int +lsquic_stream_is_write_reset (const struct lsquic_stream *stream) +{ + /* The two protocols use different frames to effect write reset: */ + const enum stream_flags cause_flag = stream->sm_bflags & SMBF_IETF + ? STREAM_SS_RECVD : STREAM_RST_RECVD; + return (stream->stream_flags & (cause_flag|STREAM_RST_SENT)) + || (stream->sm_qflags & SMQF_SEND_RST); +} + + +static int +stream_writeable (struct lsquic_stream *stream) +{ + /* A stream is writeable if one of the following is true: */ + return + /* - The stream is reset, by either side. In this case, + * lsquic_stream_write() will return -1 (we want the user to be + * able to collect the error). + */ + lsquic_stream_is_write_reset(stream) + /* - Data can be written to stream: */ + || lsquic_stream_write_avail(stream) + ; +} + + +static size_t +stream_write_avail_no_frames (struct lsquic_stream *stream) +{ + uint64_t stream_avail, conn_avail; + + stream_avail = stream->max_send_off - stream->tosend_off + - stream->sm_n_buffered; + + if (stream->sm_bflags & SMBF_CONN_LIMITED) + { + conn_avail = lsquic_conn_cap_avail(&stream->conn_pub->conn_cap); + if (conn_avail < stream_avail) + stream_avail = conn_avail; + } + + return stream_avail; +} + + +static size_t +stream_write_avail_with_frames (struct lsquic_stream *stream) +{ + uint64_t stream_avail, conn_avail; + const struct stream_hq_frame *shf; + size_t size; + + stream_avail = stream->max_send_off - stream->tosend_off + - stream->sm_n_buffered; + STAILQ_FOREACH(shf, &stream->sm_hq_frames, shf_next) + if (!(shf->shf_flags & SHF_WRITTEN)) + { + size = stream_hq_frame_size(shf); + assert(size <= stream_avail); + stream_avail -= size; + } + + if (stream->sm_bflags & SMBF_CONN_LIMITED) + { + conn_avail = lsquic_conn_cap_avail(&stream->conn_pub->conn_cap); + STAILQ_FOREACH(shf, &stream->sm_hq_frames, shf_next) + if (!(shf->shf_flags & SHF_CC_PAID)) + { + size = stream_hq_frame_size(shf); + if (size < conn_avail) + conn_avail -= size; + else + return 0; + } + if (conn_avail < stream_avail) + stream_avail = conn_avail; + } + + if (stream_avail >= 3 /* Smallest new frame */) + return stream_avail; + else + return 0; +} + + +static int +stream_is_pushing_promise (const struct lsquic_stream *stream) +{ + return (stream->stream_flags & STREAM_PUSHING) + && SLIST_FIRST(&stream->sm_promises) + && (SLIST_FIRST(&stream->sm_promises))->pp_write_state != PPWS_DONE + ; +} + + +/* To prevent deadlocks, ensure that when headers are sent, the bytes + * sent on the encoder stream are written first. + * + * XXX If the encoder is set up in non-risking mode, it is perfectly + * fine to send the header block first. TODO: update the logic to + * reflect this. There should be two sending behaviors: risk and non-risk. + * For now, we assume risk for everything to be on the conservative side. + */ +static size_t +stream_write_avail_with_headers (struct lsquic_stream *stream) +{ + if (stream->stream_flags & STREAM_PUSHING) + return stream_write_avail_with_frames(stream); + + switch (stream->sm_send_headers_state) + { + case SSHS_BEGIN: + return lsquic_qeh_write_avail(stream->conn_pub->u.ietf.qeh); + case SSHS_ENC_SENDING: + if (stream->sm_hb_compl > + lsquic_qeh_enc_off(stream->conn_pub->u.ietf.qeh)) + return 0; + LSQ_DEBUG("encoder stream bytes have all been sent"); + stream->sm_send_headers_state = SSHS_HBLOCK_SENDING; + /* fall-through */ + default: + assert(SSHS_HBLOCK_SENDING == stream->sm_send_headers_state); + return stream_write_avail_with_frames(stream); + } +} + + +size_t +lsquic_stream_write_avail (struct lsquic_stream *stream) +{ + return stream->sm_write_avail(stream); +} + + +int +lsquic_stream_update_sfcw (lsquic_stream_t *stream, uint64_t max_off) +{ + struct lsquic_conn *lconn; + + if (max_off > lsquic_sfcw_get_max_recv_off(&stream->fc) && + !lsquic_sfcw_set_max_recv_off(&stream->fc, max_off)) + { + if (stream->sm_bflags & SMBF_IETF) + { + lconn = stream->conn_pub->lconn; + if (lsquic_stream_is_crypto(stream)) + lconn->cn_if->ci_abort_error(lconn, 0, + TEC_CRYPTO_BUFFER_EXCEEDED, + "crypto buffer exceeded on in crypto level %"PRIu64, + crypto_level(stream)); + else + lconn->cn_if->ci_abort_error(lconn, 0, TEC_FLOW_CONTROL_ERROR, + "flow control violation on stream %"PRIu64, stream->id); + } + return -1; + } + if (lsquic_sfcw_fc_offsets_changed(&stream->fc)) + { + if (!(stream->sm_qflags & SMQF_SENDING_FLAGS)) + TAILQ_INSERT_TAIL(&stream->conn_pub->sending_streams, stream, + next_send_stream); + stream->sm_qflags |= SMQF_SEND_WUF; + } + return 0; +} + + +int +lsquic_stream_frame_in (lsquic_stream_t *stream, stream_frame_t *frame) +{ + uint64_t max_off; + int got_next_offset, rv, free_frame; + enum ins_frame ins_frame; + struct lsquic_conn *lconn; + + assert(frame->packet_in); + + SM_HISTORY_APPEND(stream, SHE_FRAME_IN); + LSQ_DEBUG("received stream frame, offset %"PRIu64", len %u; " + "fin: %d", frame->data_frame.df_offset, frame->data_frame.df_size, !!frame->data_frame.df_fin); + + rv = -1; + if ((stream->sm_bflags & SMBF_USE_HEADERS) + && (stream->stream_flags & STREAM_HEAD_IN_FIN)) + { + goto release_packet_frame; + } + + if (frame->data_frame.df_fin && (stream->sm_bflags & SMBF_IETF) + && (stream->stream_flags & STREAM_FIN_RECVD) + && stream->sm_fin_off != DF_END(frame)) + { + lconn = stream->conn_pub->lconn; + lconn->cn_if->ci_abort_error(lconn, 0, TEC_FINAL_SIZE_ERROR, + "new final size %"PRIu64" from STREAM frame (id: %"PRIu64") does " + "not match previous final size %"PRIu64, DF_END(frame), + stream->id, stream->sm_fin_off); + goto release_packet_frame; + } + + got_next_offset = frame->data_frame.df_offset == stream->read_offset; + insert_frame: + ins_frame = stream->data_in->di_if->di_insert_frame(stream->data_in, frame, stream->read_offset); + if (INS_FRAME_OK == ins_frame) + { + /* Update maximum offset in the flow controller and check for flow + * control violation: + */ + free_frame = !stream->data_in->di_if->di_own_on_ok; + max_off = frame->data_frame.df_offset + frame->data_frame.df_size; + if (0 != lsquic_stream_update_sfcw(stream, max_off)) + goto end_ok; + if (frame->data_frame.df_fin) + { + SM_HISTORY_APPEND(stream, SHE_FIN_IN); + stream->stream_flags |= STREAM_FIN_RECVD; + stream->sm_qflags &= ~SMQF_WAIT_FIN_OFF; + stream->sm_fin_off = DF_END(frame); + maybe_finish_stream(stream); + } + if (0 != maybe_switch_data_in(stream)) + goto end_ok; + if (got_next_offset) + /* Checking the offset saves di_get_frame() call */ + maybe_conn_to_tickable_if_readable(stream); + rv = 0; + end_ok: + if (free_frame) + lsquic_malo_put(frame); + stream->stream_flags &= ~STREAM_CACHED_FRAME; + return rv; + } + else if (INS_FRAME_DUP == ins_frame) + { + rv = 0; + } + else if (INS_FRAME_OVERLAP == ins_frame) + { + LSQ_DEBUG("overlap: switching DATA IN implementation"); + stream->data_in = stream->data_in->di_if->di_switch_impl( + stream->data_in, stream->read_offset); + if (stream->data_in) + goto insert_frame; + stream->data_in = lsquic_data_in_error_new(); + } + else + { + assert(INS_FRAME_ERR == ins_frame); + } +release_packet_frame: + lsquic_packet_in_put(stream->conn_pub->mm, frame->packet_in); + lsquic_malo_put(frame); + return rv; +} + + +static void +drop_frames_in (lsquic_stream_t *stream) +{ + if (stream->data_in) + { + stream->data_in->di_if->di_destroy(stream->data_in); + /* To avoid checking whether `data_in` is set, just set to the error + * data-in stream. It does the right thing after incoming data is + * dropped. + */ + stream->data_in = lsquic_data_in_error_new(); + stream->stream_flags &= ~STREAM_CACHED_FRAME; + } +} + + +static void +maybe_elide_stream_frames (struct lsquic_stream *stream) +{ + if (!(stream->stream_flags & STREAM_FRAMES_ELIDED)) + { + if (stream->n_unacked) + lsquic_send_ctl_elide_stream_frames(stream->conn_pub->send_ctl, + stream->id); + stream->stream_flags |= STREAM_FRAMES_ELIDED; + } +} + + +int +lsquic_stream_rst_in (lsquic_stream_t *stream, uint64_t offset, + uint64_t error_code) +{ + struct lsquic_conn *lconn; + + if ((stream->sm_bflags & SMBF_IETF) + && (stream->stream_flags & STREAM_FIN_RECVD) + && stream->sm_fin_off != offset) + { + lconn = stream->conn_pub->lconn; + lconn->cn_if->ci_abort_error(lconn, 0, TEC_FINAL_SIZE_ERROR, + "final size %"PRIu64" from RESET_STREAM frame (id: %"PRIu64") " + "does not match previous final size %"PRIu64, offset, + stream->id, stream->sm_fin_off); + return -1; + } + + if (stream->stream_flags & STREAM_RST_RECVD) + { + LSQ_DEBUG("ignore duplicate RST_STREAM frame"); + return 0; + } + + SM_HISTORY_APPEND(stream, SHE_RST_IN); + /* This flag must always be set, even if we are "ignoring" it: it is + * used by elision code. + */ + stream->stream_flags |= STREAM_RST_RECVD; + + if (lsquic_sfcw_get_max_recv_off(&stream->fc) > offset) + { + LSQ_INFO("RST_STREAM invalid: its offset %"PRIu64" is " + "smaller than that of byte following the last byte we have seen: " + "%"PRIu64, offset, + lsquic_sfcw_get_max_recv_off(&stream->fc)); + return -1; + } + + if (!lsquic_sfcw_set_max_recv_off(&stream->fc, offset)) + { + LSQ_INFO("RST_STREAM invalid: its offset %"PRIu64 + " violates flow control", offset); + return -1; + } + + if (stream->stream_if->on_reset + && !(stream->stream_flags & STREAM_ONCLOSE_DONE)) + { + if (stream->sm_bflags & SMBF_IETF) + { + if (!(stream->sm_dflags & SMDF_ONRESET0)) + { + stream->stream_if->on_reset(stream, stream->st_ctx, 0); + stream->sm_dflags |= SMDF_ONRESET0; + } + } + else + { + if ((stream->sm_dflags & (SMDF_ONRESET0|SMDF_ONRESET1)) + != (SMDF_ONRESET0|SMDF_ONRESET1)) + { + stream->stream_if->on_reset(stream, stream->st_ctx, 2); + stream->sm_dflags |= SMDF_ONRESET0|SMDF_ONRESET1; + } + } + } + + /* Let user collect error: */ + maybe_conn_to_tickable_if_readable(stream); + + lsquic_sfcw_consume_rem(&stream->fc); + drop_frames_in(stream); + + if (!(stream->sm_bflags & SMBF_IETF)) + { + drop_buffered_data(stream); + maybe_elide_stream_frames(stream); + } + + if (stream->sm_qflags & SMQF_WAIT_FIN_OFF) + { + stream->sm_qflags &= ~SMQF_WAIT_FIN_OFF; + LSQ_DEBUG("final offset is now known: %"PRIu64, offset); + } + + if (!(stream->stream_flags & + (STREAM_RST_SENT|STREAM_SS_SENT|STREAM_FIN_SENT)) + && !(stream->sm_bflags & SMBF_IETF) + && !(stream->sm_qflags & SMQF_SEND_RST)) + stream_reset(stream, 7 /* QUIC_RST_ACKNOWLEDGEMENT */, 0); + + stream->stream_flags |= STREAM_RST_RECVD; + + maybe_finish_stream(stream); + maybe_schedule_call_on_close(stream); + + return 0; +} + + +void +lsquic_stream_stop_sending_in (struct lsquic_stream *stream, + uint64_t error_code) +{ + if (stream->stream_flags & STREAM_SS_RECVD) + { + LSQ_DEBUG("ignore duplicate STOP_SENDING frame"); + return; + } + + SM_HISTORY_APPEND(stream, SHE_STOP_SENDIG_IN); + stream->stream_flags |= STREAM_SS_RECVD; + + if (stream->stream_if->on_reset && !(stream->sm_dflags & SMDF_ONRESET1) + && !(stream->stream_flags & STREAM_ONCLOSE_DONE)) + { + stream->stream_if->on_reset(stream, stream->st_ctx, 1); + stream->sm_dflags |= SMDF_ONRESET1; + } + + /* Let user collect error: */ + maybe_conn_to_tickable_if_writeable(stream, 0); + + lsquic_sfcw_consume_rem(&stream->fc); + drop_buffered_data(stream); + maybe_elide_stream_frames(stream); + + if (!(stream->stream_flags & (STREAM_RST_SENT|STREAM_FIN_SENT)) + && !(stream->sm_qflags & SMQF_SEND_RST)) + stream_reset(stream, 0, 0); + + if (stream->sm_qflags & (SMQF_SEND_WUF | SMQF_SEND_BLOCKED \ + | SMQF_SEND_STOP_SENDING)) + { + stream->sm_qflags &= ~(SMQF_SEND_WUF | SMQF_SEND_BLOCKED \ + | SMQF_SEND_STOP_SENDING); + if (!(stream->sm_qflags & SMQF_SENDING_FLAGS)) + TAILQ_REMOVE(&stream->conn_pub->sending_streams, stream, next_send_stream); + } + + maybe_finish_stream(stream); + maybe_schedule_call_on_close(stream); +} + + +uint64_t +lsquic_stream_fc_recv_off_const (const struct lsquic_stream *stream) +{ + return lsquic_sfcw_get_fc_recv_off(&stream->fc); +} + + +void +lsquic_stream_max_stream_data_sent (struct lsquic_stream *stream) +{ + assert(stream->sm_qflags & SMQF_SEND_MAX_STREAM_DATA); + stream->sm_qflags &= ~SMQF_SEND_MAX_STREAM_DATA; + if (!(stream->sm_qflags & SMQF_SENDING_FLAGS)) + TAILQ_REMOVE(&stream->conn_pub->sending_streams, stream, next_send_stream); + stream->sm_last_recv_off = lsquic_sfcw_get_fc_recv_off(&stream->fc); +} + + +uint64_t +lsquic_stream_fc_recv_off (lsquic_stream_t *stream) +{ + assert(stream->sm_qflags & SMQF_SEND_WUF); + stream->sm_qflags &= ~SMQF_SEND_WUF; + if (!(stream->sm_qflags & SMQF_SENDING_FLAGS)) + TAILQ_REMOVE(&stream->conn_pub->sending_streams, stream, next_send_stream); + return stream->sm_last_recv_off = lsquic_sfcw_get_fc_recv_off(&stream->fc); +} + + +void +lsquic_stream_peer_blocked (struct lsquic_stream *stream, uint64_t peer_off) +{ + uint64_t last_off; + + if (stream->sm_last_recv_off) + last_off = stream->sm_last_recv_off; + else + /* This gets advertized in transport parameters */ + last_off = lsquic_sfcw_get_max_recv_off(&stream->fc); + + LSQ_DEBUG("Peer blocked at %"PRIu64", while the last MAX_STREAM_DATA " + "frame we sent advertized the limit of %"PRIu64, peer_off, last_off); + + if (peer_off > last_off && !(stream->sm_qflags & SMQF_SEND_WUF)) + { + if (!(stream->sm_qflags & SMQF_SENDING_FLAGS)) + TAILQ_INSERT_TAIL(&stream->conn_pub->sending_streams, stream, + next_send_stream); + stream->sm_qflags |= SMQF_SEND_WUF; + LSQ_DEBUG("marked to send MAX_STREAM_DATA frame"); + } + else if (stream->sm_qflags & SMQF_SEND_WUF) + LSQ_DEBUG("MAX_STREAM_DATA frame is already scheduled"); + else if (stream->sm_last_recv_off) + LSQ_DEBUG("MAX_STREAM_DATA(%"PRIu64") has already been either " + "packetized or sent", stream->sm_last_recv_off); + else + LSQ_INFO("Peer should have receive transport param limit " + "of %"PRIu64"; odd.", last_off); +} + + +/* GQUIC's BLOCKED frame does not have an offset */ +void +lsquic_stream_peer_blocked_gquic (struct lsquic_stream *stream) +{ + LSQ_DEBUG("Peer blocked: schedule another WINDOW_UPDATE frame"); + if (!(stream->sm_qflags & SMQF_SEND_WUF)) + { + if (!(stream->sm_qflags & SMQF_SENDING_FLAGS)) + TAILQ_INSERT_TAIL(&stream->conn_pub->sending_streams, stream, + next_send_stream); + stream->sm_qflags |= SMQF_SEND_WUF; + LSQ_DEBUG("marked to send MAX_STREAM_DATA frame"); + } + else + LSQ_DEBUG("WINDOW_UPDATE frame is already scheduled"); +} + + +void +lsquic_stream_blocked_frame_sent (lsquic_stream_t *stream) +{ + assert(stream->sm_qflags & SMQF_SEND_BLOCKED); + SM_HISTORY_APPEND(stream, SHE_BLOCKED_OUT); + stream->sm_qflags &= ~SMQF_SEND_BLOCKED; + stream->stream_flags |= STREAM_BLOCKED_SENT; + if (!(stream->sm_qflags & SMQF_SENDING_FLAGS)) + TAILQ_REMOVE(&stream->conn_pub->sending_streams, stream, next_send_stream); +} + + +void +lsquic_stream_rst_frame_sent (lsquic_stream_t *stream) +{ + assert(stream->sm_qflags & SMQF_SEND_RST); + SM_HISTORY_APPEND(stream, SHE_RST_OUT); + stream->sm_qflags &= ~SMQF_SEND_RST; + if (!(stream->sm_qflags & SMQF_SENDING_FLAGS)) + TAILQ_REMOVE(&stream->conn_pub->sending_streams, stream, next_send_stream); + + /* [RFC9000 QUIC] Section 19.4. RESET_Frames + * An endpoint uses a RESET_STREAM frame (type=0x04) + * to abruptly terminate the sending part of a stream. + */ + stream->stream_flags |= STREAM_RST_SENT|STREAM_U_WRITE_DONE; + maybe_finish_stream(stream); +} + + +static size_t +read_uh (struct lsquic_stream *stream, + size_t (*readf)(void *, const unsigned char *, size_t, int), void *ctx) +{ + struct uncompressed_headers *uh = stream->uh; + struct http1x_headers *const h1h = uh->uh_hset; + size_t nread; + + nread = readf(ctx, (unsigned char *) h1h->h1h_buf + h1h->h1h_off, + h1h->h1h_size - h1h->h1h_off, + (stream->stream_flags & STREAM_HEAD_IN_FIN) > 0); + h1h->h1h_off += nread; + if (h1h->h1h_off == h1h->h1h_size) + { + stream->uh = uh->uh_next; + LSQ_DEBUG("read all uncompressed headers from uh: %p, next uh: %p", + uh, stream->uh); + destroy_uh(uh, stream->conn_pub->enpub->enp_hsi_if); + if (stream->stream_flags & STREAM_HEAD_IN_FIN) + { + stream->stream_flags |= STREAM_FIN_REACHED; + SM_HISTORY_APPEND(stream, SHE_REACH_FIN); + } + } + return nread; +} + + +static void +verify_cl_on_fin (struct lsquic_stream *stream) +{ + struct lsquic_conn *lconn; + + /* The rules in RFC7230, Section 3.3.2 are a bit too intricate. We take + * a simple approach and verify content-length only when there was any + * payload at all. + */ + if (stream->sm_data_in != 0 && stream->sm_cont_len != stream->sm_data_in) + { + lconn = stream->conn_pub->lconn; + lconn->cn_if->ci_abort_error(lconn, 1, HEC_MESSAGE_ERROR, + "number of bytes in DATA frames of stream %"PRIu64" is %llu, " + "while content-length specified of %llu", stream->id, + stream->sm_data_in, stream->sm_cont_len); + } +} + + +static void +stream_consumed_bytes (struct lsquic_stream *stream) +{ + lsquic_sfcw_set_read_off(&stream->fc, stream->read_offset); + if (lsquic_sfcw_fc_offsets_changed(&stream->fc) + /* We advance crypto streams' offsets (to control amount of + * buffering we allow), but do not send MAX_STREAM_DATA frames. + */ + && !((stream->sm_bflags & (SMBF_IETF|SMBF_CRYPTO)) + == (SMBF_IETF|SMBF_CRYPTO))) + { + if (!(stream->sm_qflags & SMQF_SENDING_FLAGS)) + TAILQ_INSERT_TAIL(&stream->conn_pub->sending_streams, stream, + next_send_stream); + stream->sm_qflags |= SMQF_SEND_WUF; + maybe_conn_to_tickable_if_writeable(stream, 1); + } +} + + +static ssize_t +read_data_frames (struct lsquic_stream *stream, int do_filtering, + size_t (*readf)(void *, const unsigned char *, size_t, int), void *ctx) +{ + struct data_frame *data_frame; + size_t nread, toread, total_nread; + int short_read, processed_frames; + + processed_frames = 0; + total_nread = 0; + + while ((data_frame = stream->data_in->di_if->di_get_frame( + stream->data_in, stream->read_offset))) + { + + ++processed_frames; + + do + { + if (do_filtering && stream->sm_sfi) + toread = stream->sm_sfi->sfi_filter_df(stream, data_frame); + else + toread = data_frame->df_size - data_frame->df_read_off; + + if (toread || data_frame->df_fin) + { + nread = readf(ctx, data_frame->df_data + data_frame->df_read_off, + toread, data_frame->df_fin); + if (do_filtering && stream->sm_sfi) + stream->sm_sfi->sfi_decr_left(stream, nread); + data_frame->df_read_off += nread; + stream->read_offset += nread; + total_nread += nread; + short_read = nread < toread; + } + else + short_read = 0; + + if (data_frame->df_read_off == data_frame->df_size) + { + const int fin = data_frame->df_fin; + stream->data_in->di_if->di_frame_done(stream->data_in, data_frame); + data_frame = NULL; + if (0 != maybe_switch_data_in(stream)) + return -1; + if (fin) + { + stream->stream_flags |= STREAM_FIN_REACHED; + if (stream->sm_bflags & SMBF_VERIFY_CL) + verify_cl_on_fin(stream); + goto end_while; + } + } + else if (short_read) + goto end_while; + } + while (data_frame); + } + end_while: + + if (processed_frames) + stream_consumed_bytes(stream); + + return total_nread; +} + + +static ssize_t +stream_readf (struct lsquic_stream *stream, + size_t (*readf)(void *, const unsigned char *, size_t, int), void *ctx) +{ + size_t total_nread; + ssize_t nread; + + total_nread = 0; + + if ((stream->sm_bflags & (SMBF_USE_HEADERS|SMBF_IETF)) + == (SMBF_USE_HEADERS|SMBF_IETF) + && !(stream->stream_flags & STREAM_HAVE_UH) + && !stream->uh) + { + if (stream->sm_readable(stream)) + { + if (stream->sm_hq_filter.hqfi_flags & HQFI_FLAG_ERROR) + { + LSQ_INFO("HQ filter hit an error: cannot read from stream"); + errno = EBADMSG; + return -1; + } + + if (!stream->uh) + { + LSQ_DEBUG("cannot read: headers not available"); + errno = EBADMSG; + return -1; + } + } + else + { + errno = EWOULDBLOCK; + return -1; + } + } + + if (stream->uh) + { + if (stream->uh->uh_flags & UH_H1H) + { + total_nread += read_uh(stream, readf, ctx); + if (stream->uh) + return total_nread; + } + else + { + LSQ_INFO("header set not claimed: cannot read from stream"); + return -1; + } + } + else if ((stream->sm_bflags & SMBF_USE_HEADERS) + && !(stream->stream_flags & STREAM_HAVE_UH)) + { + LSQ_DEBUG("cannot read: headers not available"); + errno = EWOULDBLOCK; + return -1; + } + + nread = read_data_frames(stream, 1, readf, ctx); + if (nread < 0) + return nread; + total_nread += (size_t) nread; + + LSQ_DEBUG("%s: read %zd bytes, read offset %"PRIu64", reached fin: %d", + __func__, total_nread, stream->read_offset, + !!(stream->stream_flags & STREAM_FIN_REACHED)); + + if (total_nread) + return total_nread; + else if (stream->stream_flags & STREAM_FIN_REACHED) + return 0; + else + { + errno = EWOULDBLOCK; + return -1; + } +} + + +/* This function returns 0 when EOF is reached. + */ +ssize_t +lsquic_stream_readf (struct lsquic_stream *stream, + size_t (*readf)(void *, const unsigned char *, size_t, int), void *ctx) +{ + ssize_t nread; + + SM_HISTORY_APPEND(stream, SHE_USER_READ); + + if (stream_is_read_reset(stream)) + { + if (stream->stream_flags & STREAM_RST_RECVD) + stream->stream_flags |= STREAM_RST_READ; + errno = ECONNRESET; + return -1; + } + if (stream->stream_flags & STREAM_U_READ_DONE) + { + errno = EBADF; + return -1; + } + if (stream->stream_flags & STREAM_FIN_REACHED) + { + if (stream->sm_bflags & SMBF_USE_HEADERS) + { + if ((stream->stream_flags & STREAM_HAVE_UH) && !stream->uh) + return 0; + } + else + return 0; + } + + nread = stream_readf(stream, readf, ctx); + if (nread >= 0) + maybe_update_last_progress(stream); + + return nread; +} + + +struct readv_ctx +{ + const struct iovec *iov; + const struct iovec *const end; + unsigned char *p; +}; + + +static size_t +readv_f (void *ctx_p, const unsigned char *buf, size_t len, int fin) +{ + struct readv_ctx *const ctx = ctx_p; + const unsigned char *const end = buf + len; + size_t ntocopy; + + while (ctx->iov < ctx->end && buf < end) + { + ntocopy = (unsigned char *) ctx->iov->iov_base + ctx->iov->iov_len + - ctx->p; + if (ntocopy > (size_t) (end - buf)) + ntocopy = end - buf; + memcpy(ctx->p, buf, ntocopy); + ctx->p += ntocopy; + buf += ntocopy; + if (ctx->p == (unsigned char *) ctx->iov->iov_base + ctx->iov->iov_len) + { + do + ++ctx->iov; + while (ctx->iov < ctx->end && ctx->iov->iov_len == 0); + if (ctx->iov < ctx->end) + ctx->p = ctx->iov->iov_base; + else + break; + } + } + + return len - (end - buf); +} + + +ssize_t +lsquic_stream_readv (struct lsquic_stream *stream, const struct iovec *iov, + int iovcnt) +{ + struct readv_ctx ctx = { iov, iov + iovcnt, iov->iov_base, }; + return lsquic_stream_readf(stream, readv_f, &ctx); +} + + +ssize_t +lsquic_stream_read (lsquic_stream_t *stream, void *buf, size_t len) +{ + struct iovec iov = { .iov_base = buf, .iov_len = len, }; + return lsquic_stream_readv(stream, &iov, 1); +} + + +void +lsquic_stream_ss_frame_sent (struct lsquic_stream *stream) +{ + assert(stream->sm_qflags & SMQF_SEND_STOP_SENDING); + SM_HISTORY_APPEND(stream, SHE_STOP_SENDIG_OUT); + stream->sm_qflags &= ~SMQF_SEND_STOP_SENDING; + stream->stream_flags |= STREAM_SS_SENT; + if (!(stream->sm_qflags & SMQF_SENDING_FLAGS)) + TAILQ_REMOVE(&stream->conn_pub->sending_streams, stream, next_send_stream); +} + + +static void +handle_early_read_shutdown_ietf (struct lsquic_stream *stream) +{ + if (!(stream->sm_qflags & SMQF_SENDING_FLAGS)) + TAILQ_INSERT_TAIL(&stream->conn_pub->sending_streams, stream, + next_send_stream); + stream->sm_qflags |= SMQF_SEND_STOP_SENDING|SMQF_WAIT_FIN_OFF; +} + + +static void +handle_early_read_shutdown_gquic (struct lsquic_stream *stream) +{ + if (!(stream->stream_flags & STREAM_RST_SENT)) + { + stream_reset(stream, 7 /* QUIC_STREAM_CANCELLED */, 0); + stream->sm_qflags |= SMQF_WAIT_FIN_OFF; + } +} + + +static void +handle_early_read_shutdown (struct lsquic_stream *stream) +{ + if (stream->sm_bflags & SMBF_IETF) + handle_early_read_shutdown_ietf(stream); + else + handle_early_read_shutdown_gquic(stream); +} + + +static void +stream_shutdown_read (lsquic_stream_t *stream) +{ + if (!(stream->stream_flags & STREAM_U_READ_DONE)) + { + if (!(stream->stream_flags & STREAM_FIN_REACHED)) + { + LSQ_DEBUG("read shut down before reading FIN. (FIN received: %d)", + !!(stream->stream_flags & STREAM_FIN_RECVD)); + SM_HISTORY_APPEND(stream, SHE_EARLY_READ_STOP); + if (!(stream->stream_flags & (STREAM_FIN_RECVD|STREAM_RST_RECVD))) + handle_early_read_shutdown(stream); + } + SM_HISTORY_APPEND(stream, SHE_SHUTDOWN_READ); + stream->stream_flags |= STREAM_U_READ_DONE; + stream->sm_readable = stream_readable_discard; + stream_wantread(stream, 0); + maybe_finish_stream(stream); + } +} + + +static int +stream_is_incoming_unidir (const struct lsquic_stream *stream) +{ + enum stream_id_type sit; + + if (stream->sm_bflags & SMBF_IETF) + { + sit = stream->id & SIT_MASK; + if (stream->sm_bflags & SMBF_SERVER) + return sit == SIT_UNI_CLIENT; + else + return sit == SIT_UNI_SERVER; + } + else + return 0; +} + + +static void +stream_shutdown_write (lsquic_stream_t *stream) +{ + if (stream->stream_flags & STREAM_U_WRITE_DONE) + return; + + SM_HISTORY_APPEND(stream, SHE_SHUTDOWN_WRITE); + stream->stream_flags |= STREAM_U_WRITE_DONE; + stream_wantwrite(stream, 0); + + /* Don't bother to check whether there is anything else to write if + * the flags indicate that nothing else should be written. + */ + if (!(stream->sm_bflags & SMBF_CRYPTO) + && !((stream->stream_flags & (STREAM_FIN_SENT|STREAM_RST_SENT)) + || (stream->sm_qflags & SMQF_SEND_RST)) + && !stream_is_incoming_unidir(stream) + /* In gQUIC, receiving a RESET means "stop sending" */ + && !(!(stream->sm_bflags & SMBF_IETF) + && (stream->stream_flags & STREAM_RST_RECVD))) + { + if ((stream->sm_bflags & SMBF_USE_HEADERS) + && !(stream->stream_flags & STREAM_HEADERS_SENT)) + { + LSQ_DEBUG("headers not sent, send a reset"); + stream_reset(stream, 0, 1); + } + else if (stream->sm_n_buffered == 0) + { + if (0 == lsquic_send_ctl_turn_on_fin(stream->conn_pub->send_ctl, + stream)) + { + LSQ_DEBUG("turned on FIN flag in the yet-unsent STREAM frame"); + stream->stream_flags |= STREAM_FIN_SENT; + if (stream->sm_qflags & SMQF_WANT_FLUSH) + { + LSQ_DEBUG("turned off SMQF_WANT_FLUSH flag as FIN flag is turned on."); + maybe_remove_from_write_q(stream, SMQF_WANT_FLUSH); + } + } + else + { + LSQ_DEBUG("have to create a separate STREAM frame with FIN " + "flag in it"); + (void) stream_flush_nocheck(stream); + } + } + else + (void) stream_flush_nocheck(stream); + } +} + + +static void +maybe_stream_shutdown_write (struct lsquic_stream *stream) +{ + if (stream->sm_send_headers_state == SSHS_BEGIN) + stream_shutdown_write(stream); + else if (0 == (stream->stream_flags & STREAM_DELAYED_SW)) + { + LSQ_DEBUG("shutdown delayed"); + SM_HISTORY_APPEND(stream, SHE_DELAY_SW); + stream->stream_flags |= STREAM_DELAYED_SW; + } +} + + +int +lsquic_stream_shutdown (lsquic_stream_t *stream, int how) +{ + LSQ_DEBUG("shutdown; how: %d", how); + if (lsquic_stream_is_closed(stream)) + { + LSQ_INFO("Attempt to shut down a closed stream"); + errno = EBADF; + return -1; + } + /* 0: read, 1: write: 2: read and write + */ + if (how < 0 || how > 2) + { + errno = EINVAL; + return -1; + } + + if (how) + maybe_stream_shutdown_write(stream); + if (how != 1) + stream_shutdown_read(stream); + + maybe_finish_stream(stream); + maybe_schedule_call_on_close(stream); + if (how && !(stream->stream_flags & STREAM_DELAYED_SW)) + maybe_conn_to_tickable_if_writeable(stream, 1); + + return 0; +} + + +void +lsquic_stream_shutdown_internal (lsquic_stream_t *stream) +{ + LSQ_DEBUG("internal shutdown"); + stream->stream_flags |= STREAM_U_READ_DONE|STREAM_U_WRITE_DONE; + stream_wantwrite(stream, 0); + stream_wantread(stream, 0); + if (lsquic_stream_is_critical(stream)) + { + LSQ_DEBUG("add flag to force-finish special stream"); + stream->stream_flags |= STREAM_FORCE_FINISH; + SM_HISTORY_APPEND(stream, SHE_FORCE_FINISH); + } + maybe_finish_stream(stream); + maybe_schedule_call_on_close(stream); +} + + +static void +fake_reset_unused_stream (lsquic_stream_t *stream) +{ + stream->stream_flags |= + STREAM_RST_RECVD /* User will pick this up on read or write */ + | STREAM_RST_SENT /* Don't send anything else on this stream */ + ; + + /* Cancel all writes to the network scheduled for this stream: */ + if (stream->sm_qflags & SMQF_SENDING_FLAGS) + TAILQ_REMOVE(&stream->conn_pub->sending_streams, stream, + next_send_stream); + stream->sm_qflags &= ~SMQF_SENDING_FLAGS; + drop_buffered_data(stream); + LSQ_DEBUG("fake-reset stream%s", + stream_stalled(stream) ? " (stalled)" : ""); + maybe_finish_stream(stream); + maybe_schedule_call_on_close(stream); +} + + +/* This function should only be called for locally-initiated streams whose ID + * is larger than that received in GOAWAY frame. This may occur when GOAWAY + * frame sent by peer but we have not yet received it and created a stream. + * In this situation, we mark the stream as reset, so that user's on_read or + * on_write event callback picks up the error. That, in turn, should result + * in stream being closed. + * + * If we have received any data frames on this stream, this probably indicates + * a bug in peer code: it should not have sent GOAWAY frame with stream ID + * lower than this. However, we still try to handle it gracefully and peform + * a shutdown, as if the stream was not reset. + */ +void +lsquic_stream_received_goaway (lsquic_stream_t *stream) +{ + SM_HISTORY_APPEND(stream, SHE_GOAWAY_IN); + + if (stream->stream_flags & STREAM_GOAWAY_IN) + { + LSQ_DEBUG("ignore duplicate GOAWAY"); + return; + } + stream->stream_flags |= STREAM_GOAWAY_IN; + + if (0 == stream->read_offset && + stream->data_in->di_if->di_empty(stream->data_in)) + fake_reset_unused_stream(stream); /* Normal condition */ + else + { /* This is odd, let's handle it the best we can: */ + LSQ_WARN("GOAWAY received but have incoming data: shut down instead"); + lsquic_stream_shutdown_internal(stream); + } +} + + +uint64_t +lsquic_stream_read_offset (const lsquic_stream_t *stream) +{ + return stream->read_offset; +} + + +static int +stream_wantread (lsquic_stream_t *stream, int is_want) +{ + const int old_val = !!(stream->sm_qflags & SMQF_WANT_READ); + const int new_val = !!is_want; + if (old_val != new_val) + { + if (new_val) + { + if (!old_val) + TAILQ_INSERT_TAIL(&stream->conn_pub->read_streams, stream, + next_read_stream); + stream->sm_qflags |= SMQF_WANT_READ; + } + else + { + stream->sm_qflags &= ~SMQF_WANT_READ; + if (old_val) + TAILQ_REMOVE(&stream->conn_pub->read_streams, stream, + next_read_stream); + } + } + return old_val; +} + + +static void +maybe_put_onto_write_q (lsquic_stream_t *stream, enum stream_q_flags flag) +{ + assert(SMQF_WRITE_Q_FLAGS & flag); + assert(!(stream->stream_flags & STREAM_ONCLOSE_DONE)); + if (!(stream->sm_qflags & SMQF_WRITE_Q_FLAGS)) + { + LSQ_DEBUG("put on write queue"); + TAILQ_INSERT_TAIL(&stream->conn_pub->write_streams, stream, + next_write_stream); + } + stream->sm_qflags |= flag; +} + + +static void +maybe_remove_from_write_q (lsquic_stream_t *stream, enum stream_q_flags flag) +{ + assert(SMQF_WRITE_Q_FLAGS & flag); + if (stream->sm_qflags & flag) + { + stream->sm_qflags &= ~flag; + if (!(stream->sm_qflags & SMQF_WRITE_Q_FLAGS)) + TAILQ_REMOVE(&stream->conn_pub->write_streams, stream, + next_write_stream); + } +} + + +static int +stream_wantwrite (struct lsquic_stream *stream, int new_val) +{ + const int old_val = !!(stream->sm_qflags & SMQF_WANT_WRITE); + + assert(0 == (new_val & ~1)); /* new_val is either 0 or 1 */ + + if (old_val != new_val) + { + if (new_val) + maybe_put_onto_write_q(stream, SMQF_WANT_WRITE); + else + maybe_remove_from_write_q(stream, SMQF_WANT_WRITE); + } + return old_val; +} + + +int +lsquic_stream_wantread (lsquic_stream_t *stream, int is_want) +{ + SM_HISTORY_APPEND(stream, SHE_WANTREAD_NO + !!is_want); + if (!(stream->stream_flags & STREAM_U_READ_DONE)) + { + if (is_want) + maybe_conn_to_tickable_if_readable(stream); + return stream_wantread(stream, is_want); + } + else + { + errno = EBADF; + return -1; + } +} + + +int +lsquic_stream_wantwrite (lsquic_stream_t *stream, int is_want) +{ + int old_val; + + is_want = !!is_want; + + SM_HISTORY_APPEND(stream, SHE_WANTWRITE_NO + is_want); + if (0 == (stream->stream_flags & STREAM_U_WRITE_DONE) + && SSHS_BEGIN == stream->sm_send_headers_state) + { + stream->sm_saved_want_write = is_want; + if (is_want) + maybe_conn_to_tickable_if_writeable(stream, 1); + return stream_wantwrite(stream, is_want); + } + else if (SSHS_BEGIN != stream->sm_send_headers_state) + { + old_val = stream->sm_saved_want_write; + stream->sm_saved_want_write = is_want; + return old_val; + } + else + { + errno = EBADF; + return -1; + } +} + + +struct progress +{ + enum stream_flags s_flags; + enum stream_q_flags q_flags; +}; + + +static struct progress +stream_progress (const struct lsquic_stream *stream) +{ + return (struct progress) { + .s_flags = stream->stream_flags + & (STREAM_U_WRITE_DONE|STREAM_U_READ_DONE), + .q_flags = stream->sm_qflags + & (SMQF_WANT_READ|SMQF_WANT_WRITE|SMQF_WANT_FLUSH|SMQF_SEND_RST), + }; +} + + +static int +progress_eq (struct progress a, struct progress b) +{ + return a.s_flags == b.s_flags && a.q_flags == b.q_flags; +} + + +static void +stream_dispatch_read_events_loop (lsquic_stream_t *stream) +{ + unsigned no_progress_count, no_progress_limit; + struct progress progress; + uint64_t size; + + no_progress_limit = stream->conn_pub->enpub->enp_settings.es_progress_check; + + no_progress_count = 0; + while ((stream->sm_qflags & SMQF_WANT_READ) + && lsquic_stream_readable(stream)) + { + progress = stream_progress(stream); + size = stream->read_offset; + + stream->stream_if->on_read(stream, stream->st_ctx); + + if (no_progress_limit && size == stream->read_offset && + progress_eq(progress, stream_progress(stream))) + { + ++no_progress_count; + if (no_progress_count >= no_progress_limit) + { + LSQ_WARN("broke suspected infinite loop (%u callback%s without " + "progress) in user code reading from stream", + no_progress_count, + no_progress_count == 1 ? "" : "s"); + break; + } + } + else + no_progress_count = 0; + } +} + + +static void +stream_hblock_sent (struct lsquic_stream *stream) +{ + int want_write; + + LSQ_DEBUG("header block has been sent: restore default behavior"); + stream->sm_send_headers_state = SSHS_BEGIN; + stream->sm_write_avail = stream_write_avail_with_frames; + + want_write = !!(stream->sm_qflags & SMQF_WANT_WRITE); + if (want_write != stream->sm_saved_want_write) + (void) lsquic_stream_wantwrite(stream, stream->sm_saved_want_write); + + if (stream->stream_flags & STREAM_DELAYED_SW) + { + LSQ_DEBUG("performing delayed shutdown write"); + stream->stream_flags &= ~STREAM_DELAYED_SW; + stream_shutdown_write(stream); + maybe_schedule_call_on_close(stream); + maybe_finish_stream(stream); + maybe_conn_to_tickable_if_writeable(stream, 1); + } +} + + +static void +on_write_header_wrapper (struct lsquic_stream *stream, lsquic_stream_ctx_t *h) +{ + ssize_t nw; + + nw = stream_write_buf(stream, + stream->sm_header_block + stream->sm_hblock_off, + stream->sm_hblock_sz - stream->sm_hblock_off); + if (nw > 0) + { + stream->sm_hblock_off += nw; + if (stream->sm_hblock_off == stream->sm_hblock_sz) + { + stream->stream_flags |= STREAM_HEADERS_SENT; + free(stream->sm_header_block); + stream->sm_header_block = NULL; + stream->sm_hblock_sz = 0; + stream_hblock_sent(stream); + LSQ_DEBUG("header block written out successfully"); + /* TODO: if there was eos, do something else */ + if (stream->sm_qflags & SMQF_WANT_WRITE) + stream->stream_if->on_write(stream, h); + } + else + { + LSQ_DEBUG("wrote %zd bytes more of header block; not done yet", + nw); + } + } + else if (nw < 0) + { + /* XXX What should happen if we hit an error? TODO */ + } +} + + +static void +(*select_on_write (struct lsquic_stream *stream))(struct lsquic_stream *, + lsquic_stream_ctx_t *) +{ + if (0 == (stream->stream_flags & STREAM_PUSHING) + && SSHS_HBLOCK_SENDING != stream->sm_send_headers_state) + /* Common case */ + return stream->stream_if->on_write; + else if (SSHS_HBLOCK_SENDING == stream->sm_send_headers_state) + return on_write_header_wrapper; + else + { + assert(stream->stream_flags & STREAM_PUSHING); + if (stream_is_pushing_promise(stream)) + return on_write_pp_wrapper; + else + return stream->stream_if->on_write; + } +} + + +static void +stream_dispatch_write_events_loop (lsquic_stream_t *stream) +{ + unsigned no_progress_count, no_progress_limit; + void (*on_write) (struct lsquic_stream *, lsquic_stream_ctx_t *); + struct progress progress; + + no_progress_limit = stream->conn_pub->enpub->enp_settings.es_progress_check; + + no_progress_count = 0; + stream->stream_flags |= STREAM_LAST_WRITE_OK; + while ((stream->sm_qflags & SMQF_WANT_WRITE) + && (stream->stream_flags & STREAM_LAST_WRITE_OK) + && !(stream->stream_flags & STREAM_ONCLOSE_DONE) + && stream_writeable(stream)) + { + progress = stream_progress(stream); + + on_write = select_on_write(stream); + on_write(stream, stream->st_ctx); + + if (no_progress_limit && progress_eq(progress, stream_progress(stream))) + { + ++no_progress_count; + if (no_progress_count >= no_progress_limit) + { + LSQ_WARN("broke suspected infinite loop (%u callback%s without " + "progress) in user code writing to stream", + no_progress_count, + no_progress_count == 1 ? "" : "s"); + break; + } + } + else + no_progress_count = 0; + } +} + + +static void +stream_dispatch_read_events_once (lsquic_stream_t *stream) +{ + if ((stream->sm_qflags & SMQF_WANT_READ) && lsquic_stream_readable(stream)) + { + stream->stream_if->on_read(stream, stream->st_ctx); + } +} + + +uint64_t +lsquic_stream_combined_send_off (const struct lsquic_stream *stream) +{ + size_t frames_sizes; + + frames_sizes = active_hq_frame_sizes(stream); + return stream->tosend_off + stream->sm_n_buffered + frames_sizes; +} + + +static void +maybe_mark_as_blocked (lsquic_stream_t *stream) +{ + struct lsquic_conn_cap *cc; + uint64_t used; + + used = lsquic_stream_combined_send_off(stream); + if (stream->max_send_off == used) + { + if (stream->blocked_off < stream->max_send_off) + { + stream->blocked_off = used; + if (!(stream->sm_qflags & SMQF_SENDING_FLAGS)) + TAILQ_INSERT_TAIL(&stream->conn_pub->sending_streams, stream, + next_send_stream); + stream->sm_qflags |= SMQF_SEND_BLOCKED; + LSQ_DEBUG("marked stream-blocked at stream offset " + "%"PRIu64, stream->blocked_off); + } + else + LSQ_DEBUG("stream is blocked, but BLOCKED frame for offset %"PRIu64 + " has been, or is about to be, sent", stream->blocked_off); + } + + if ((stream->sm_bflags & SMBF_CONN_LIMITED) + && (cc = &stream->conn_pub->conn_cap, + stream->sm_n_buffered == lsquic_conn_cap_avail(cc))) + { + if (cc->cc_blocked < cc->cc_max) + { + cc->cc_blocked = cc->cc_max; + stream->conn_pub->lconn->cn_flags |= LSCONN_SEND_BLOCKED; + LSQ_DEBUG("marked connection-blocked at connection offset " + "%"PRIu64, cc->cc_max); + } + else + LSQ_DEBUG("stream has already been marked connection-blocked " + "at offset %"PRIu64, cc->cc_blocked); + } +} + + +void +lsquic_stream_dispatch_read_events (lsquic_stream_t *stream) +{ + if (stream->sm_qflags & SMQF_WANT_READ) + { + if (stream->sm_bflags & SMBF_RW_ONCE) + stream_dispatch_read_events_once(stream); + else + stream_dispatch_read_events_loop(stream); + } +} + + +void +lsquic_stream_dispatch_write_events (lsquic_stream_t *stream) +{ + void (*on_write) (struct lsquic_stream *, lsquic_stream_ctx_t *); + int progress; + uint64_t tosend_off; + unsigned short n_buffered; + enum stream_q_flags q_flags; + + LSQ_DEBUG("dispatch_write_events, sm_qflags: %d. stream_flags: %d, sm_bflags: %d, " + "max_send_off: %" PRIu64 ", tosend_off: %" PRIu64 ", sm_n_buffered: %u", + stream->sm_qflags, stream->stream_flags, stream->sm_bflags, + stream->max_send_off, stream->tosend_off, stream->sm_n_buffered); + + if (!(stream->sm_qflags & SMQF_WRITE_Q_FLAGS) + || (stream->stream_flags & STREAM_FINISHED)) + return; + + q_flags = stream->sm_qflags & SMQF_WRITE_Q_FLAGS; + tosend_off = stream->tosend_off; + n_buffered = stream->sm_n_buffered; + + if (stream->sm_qflags & SMQF_WANT_FLUSH) + (void) stream_flush(stream); + + if (stream->sm_bflags & SMBF_RW_ONCE) + { + if ((stream->sm_qflags & SMQF_WANT_WRITE) + && !(stream->stream_flags & STREAM_ONCLOSE_DONE) + && stream_writeable(stream)) + { + on_write = select_on_write(stream); + on_write(stream, stream->st_ctx); + } + } + else + stream_dispatch_write_events_loop(stream); + + if ((stream->sm_qflags & SMQF_SEND_BLOCKED) && + (stream->sm_bflags & SMBF_IETF)) + { + lsquic_sendctl_gen_stream_blocked_frame(stream->conn_pub->send_ctl, stream); + } + + /* Progress means either flags or offsets changed: */ + progress = !((stream->sm_qflags & SMQF_WRITE_Q_FLAGS) == q_flags && + stream->tosend_off == tosend_off && + stream->sm_n_buffered == n_buffered); + + if (stream->sm_qflags & SMQF_WRITE_Q_FLAGS) + { + if (progress) + { /* Move the stream to the end of the list to ensure fairness. */ + TAILQ_REMOVE(&stream->conn_pub->write_streams, stream, + next_write_stream); + TAILQ_INSERT_TAIL(&stream->conn_pub->write_streams, stream, + next_write_stream); + } + } +} + + +static size_t +inner_reader_empty_size (void *ctx) +{ + return 0; +} + + +static size_t +inner_reader_empty_read (void *ctx, void *buf, size_t count) +{ + return 0; +} + + +static int +stream_flush (lsquic_stream_t *stream) +{ + struct lsquic_reader empty_reader; + ssize_t nw; + + assert(stream->sm_qflags & SMQF_WANT_FLUSH); + assert(stream->sm_n_buffered > 0 || + /* Flushing is also used to packetize standalone FIN: */ + ((stream->stream_flags & (STREAM_U_WRITE_DONE|STREAM_FIN_SENT)) + == STREAM_U_WRITE_DONE)); + + empty_reader.lsqr_size = inner_reader_empty_size; + empty_reader.lsqr_read = inner_reader_empty_read; + empty_reader.lsqr_ctx = NULL; /* pro forma */ + nw = stream_write_to_packets(stream, &empty_reader, 0, SWO_BUFFER); + + if (nw >= 0) + { + assert(nw == 0); /* Empty reader: must have read zero bytes */ + return 0; + } + else + return -1; +} + + +static int +stream_flush_nocheck (lsquic_stream_t *stream) +{ + size_t frames; + + frames = active_hq_frame_sizes(stream); + stream->sm_flush_to = stream->tosend_off + stream->sm_n_buffered + frames; + stream->sm_flush_to_payload = stream->sm_payload + stream->sm_n_buffered; + maybe_put_onto_write_q(stream, SMQF_WANT_FLUSH); + LSQ_DEBUG("will flush up to offset %"PRIu64, stream->sm_flush_to); + + return stream_flush(stream); +} + + +int +lsquic_stream_flush (lsquic_stream_t *stream) +{ + if (stream->stream_flags & STREAM_U_WRITE_DONE) + { + LSQ_DEBUG("cannot flush closed stream"); + errno = EBADF; + return -1; + } + + if (0 == stream->sm_n_buffered) + { + LSQ_DEBUG("flushing 0 bytes: noop"); + return 0; + } + + return stream_flush_nocheck(stream); +} + + +static size_t +stream_get_n_allowed (const struct lsquic_stream *stream) +{ + if (stream->sm_n_allocated) + return stream->sm_n_allocated; + else + return stream->conn_pub->path->np_pack_size; +} + + +/* The flush threshold is the maximum size of stream data that can be sent + * in a full packet. + */ +#ifdef NDEBUG +static +#endif + size_t +lsquic_stream_flush_threshold (const struct lsquic_stream *stream, + unsigned data_sz) +{ + enum packet_out_flags flags; + enum packno_bits bits; + size_t packet_header_sz, stream_header_sz, tag_len; + size_t threshold; + + bits = lsquic_send_ctl_packno_bits(stream->conn_pub->send_ctl, PNS_APP); + flags = bits << POBIT_SHIFT; + if (!(stream->conn_pub->lconn->cn_flags & LSCONN_TCID0)) + flags |= PO_CONN_ID; + if (stream_is_hsk(stream)) + flags |= PO_LONGHEAD; + + packet_header_sz = lsquic_po_header_length(stream->conn_pub->lconn, flags, + stream->conn_pub->path->np_dcid.len, HETY_SHORT); + stream_header_sz = stream->sm_frame_header_sz(stream, data_sz); + tag_len = stream->conn_pub->lconn->cn_esf_c->esf_tag_len; + + threshold = stream_get_n_allowed(stream) - tag_len + - packet_header_sz - stream_header_sz; + return threshold; +} + + +#define COMMON_WRITE_CHECKS() do { \ + if ((stream->sm_bflags & SMBF_USE_HEADERS) \ + && !(stream->stream_flags & STREAM_HEADERS_SENT)) \ + { \ + if (SSHS_BEGIN != stream->sm_send_headers_state) \ + { \ + LSQ_DEBUG("still sending headers: no writing allowed"); \ + return 0; \ + } \ + else \ + { \ + LSQ_INFO("Attempt to write to stream before sending HTTP " \ + "headers"); \ + errno = EILSEQ; \ + return -1; \ + } \ + } \ + if (lsquic_stream_is_write_reset(stream)) \ + { \ + LSQ_INFO("Attempt to write to stream after it had been reset"); \ + errno = ECONNRESET; \ + return -1; \ + } \ + if (stream->stream_flags & (STREAM_U_WRITE_DONE|STREAM_FIN_SENT)) \ + { \ + LSQ_INFO("Attempt to write to stream after it was closed for " \ + "writing"); \ + errno = EBADF; \ + return -1; \ + } \ +} while (0) + + +struct frame_gen_ctx +{ + lsquic_stream_t *fgc_stream; + struct lsquic_reader *fgc_reader; + /* We keep our own count of how many bytes were read from reader because + * some readers are external. The external caller does not have to rely + * on our count, but it can. + */ + size_t fgc_nread_from_reader; + size_t (*fgc_size) (void *ctx); + int (*fgc_fin) (void *ctx); + gsf_read_f fgc_read; + size_t fgc_thresh; +}; + + +static size_t +frame_std_gen_size (void *ctx) +{ + struct frame_gen_ctx *fg_ctx = ctx; + size_t available, remaining; + + /* Make sure we are not writing past available size: */ + remaining = fg_ctx->fgc_reader->lsqr_size(fg_ctx->fgc_reader->lsqr_ctx); + available = lsquic_stream_write_avail(fg_ctx->fgc_stream); + if (available < remaining) + remaining = available; + + return remaining + fg_ctx->fgc_stream->sm_n_buffered; +} + + +static size_t +stream_hq_frame_size (const struct stream_hq_frame *shf) +{ + if (0 == (shf->shf_flags & (SHF_FIXED_SIZE|SHF_PHANTOM))) + return 1 + 1 + ((shf->shf_flags & SHF_TWO_BYTES) > 0); + else if ((shf->shf_flags & (SHF_FIXED_SIZE|SHF_PHANTOM)) == SHF_FIXED_SIZE) + return 1 + (1 << vint_val2bits(shf->shf_frame_size)); + else + { + assert((shf->shf_flags & (SHF_FIXED_SIZE|SHF_PHANTOM)) + == (SHF_FIXED_SIZE|SHF_PHANTOM)); + return 0; + } +} + + +static size_t +active_hq_frame_sizes (const struct lsquic_stream *stream) +{ + const struct stream_hq_frame *shf; + size_t size; + + size = 0; + if ((stream->sm_bflags & (SMBF_IETF|SMBF_USE_HEADERS)) + == (SMBF_IETF|SMBF_USE_HEADERS)) + STAILQ_FOREACH(shf, &stream->sm_hq_frames, shf_next) + if (!(shf->shf_flags & SHF_WRITTEN)) + size += stream_hq_frame_size(shf); + + return size; +} + + +static uint64_t +stream_hq_frame_end (const struct stream_hq_frame *shf) +{ + if (shf->shf_flags & SHF_FIXED_SIZE) + return shf->shf_off + shf->shf_frame_size; + else if (shf->shf_flags & SHF_TWO_BYTES) + return shf->shf_off + ((1 << 14) - 1); + else + return shf->shf_off + ((1 << 6) - 1); +} + + +static int +frame_in_stream (const struct lsquic_stream *stream, + const struct stream_hq_frame *shf) +{ + return shf >= stream->sm_hq_frame_arr + && shf < stream->sm_hq_frame_arr + sizeof(stream->sm_hq_frame_arr) + / sizeof(stream->sm_hq_frame_arr[0]) + ; +} + + +static void +stream_hq_frame_put (struct lsquic_stream *stream, + struct stream_hq_frame *shf) +{ + /* In vast majority of cases, the frame to put is at the head: */ + STAILQ_REMOVE(&stream->sm_hq_frames, shf, stream_hq_frame, shf_next); + if (frame_in_stream(stream, shf)) + memset(shf, 0, sizeof(*shf)); + else + lsquic_malo_put(shf); +} + + +static void +stream_hq_frame_close (struct lsquic_stream *stream, + struct stream_hq_frame *shf) +{ + unsigned bits; + + LSQ_DEBUG("close HQ frame of type 0x%X at payload offset %"PRIu64 + " (actual offset %"PRIu64")", shf->shf_frame_type, + stream->sm_payload, stream->tosend_off); + assert(shf->shf_flags & SHF_ACTIVE); + if (!(shf->shf_flags & SHF_FIXED_SIZE)) + { + shf->shf_frame_ptr[0] = shf->shf_frame_type; + bits = (shf->shf_flags & SHF_TWO_BYTES) > 0; + vint_write(shf->shf_frame_ptr + 1, stream->sm_payload - shf->shf_off, + bits, 1 << bits); + } + stream_hq_frame_put(stream, shf); +} + + +static size_t +frame_hq_gen_size (void *ctx) +{ + struct frame_gen_ctx *fg_ctx = ctx; + struct lsquic_stream *const stream = fg_ctx->fgc_stream; + size_t available, remaining, frames; + const struct stream_hq_frame *shf; + + frames = 0; + STAILQ_FOREACH(shf, &stream->sm_hq_frames, shf_next) + if (shf->shf_off >= stream->sm_payload) + frames += stream_hq_frame_size(shf); + + /* Make sure we are not writing past available size: */ + remaining = fg_ctx->fgc_reader->lsqr_size(fg_ctx->fgc_reader->lsqr_ctx); + available = lsquic_stream_write_avail(stream); + if (available < remaining) + remaining = available; + + return remaining + stream->sm_n_buffered + frames; +} + + +static int +frame_std_gen_fin (void *ctx) +{ + struct frame_gen_ctx *fg_ctx = ctx; + return !(fg_ctx->fgc_stream->sm_bflags & SMBF_CRYPTO) + && (fg_ctx->fgc_stream->stream_flags & STREAM_U_WRITE_DONE) + && 0 == fg_ctx->fgc_stream->sm_n_buffered + /* Do not use frame_std_gen_size() as it may chop the real size: */ + && 0 == fg_ctx->fgc_reader->lsqr_size(fg_ctx->fgc_reader->lsqr_ctx); +} + + +static void +incr_conn_cap (struct lsquic_stream *stream, size_t incr) +{ + if (stream->sm_bflags & SMBF_CONN_LIMITED) + { + stream->conn_pub->conn_cap.cc_sent += incr; + assert(stream->conn_pub->conn_cap.cc_sent + <= stream->conn_pub->conn_cap.cc_max); + LSQ_DEBUG("increase cc_sent by %zd to %"PRIu64, incr, + stream->conn_pub->conn_cap.cc_sent); + } +} + + +static void +incr_sm_payload (struct lsquic_stream *stream, size_t incr) +{ + stream->sm_payload += incr; + stream->tosend_off += incr; + assert(stream->tosend_off <= stream->max_send_off); +} + + +static void +maybe_resize_threshold (struct frame_gen_ctx *fg_ctx) +{ + struct lsquic_stream *stream = fg_ctx->fgc_stream; + size_t old; + + if (fg_ctx->fgc_thresh) + { + old = fg_ctx->fgc_thresh; + fg_ctx->fgc_thresh + = lsquic_stream_flush_threshold(stream, fg_ctx->fgc_size(fg_ctx)); + LSQ_DEBUG("changed threshold from %zd to %zd", old, fg_ctx->fgc_thresh); + } +} + + +static size_t +frame_std_gen_read (void *ctx, void *begin_buf, size_t len, int *fin) +{ + struct frame_gen_ctx *fg_ctx = ctx; + unsigned char *p = begin_buf; + unsigned char *const end = p + len; + lsquic_stream_t *const stream = fg_ctx->fgc_stream; + size_t n_written, available, n_to_write; + + if (stream->sm_n_buffered > 0) + { + if (len <= stream->sm_n_buffered) + { + memcpy(p, stream->sm_buf, len); + memmove(stream->sm_buf, stream->sm_buf + len, + stream->sm_n_buffered - len); + stream->sm_n_buffered -= len; + if (0 == stream->sm_n_buffered) + { + maybe_resize_stream_buffer(stream); + maybe_resize_threshold(fg_ctx); + } + assert(stream->max_send_off >= stream->tosend_off + stream->sm_n_buffered); + incr_sm_payload(stream, len); + *fin = fg_ctx->fgc_fin(fg_ctx); + return len; + } + memcpy(p, stream->sm_buf, stream->sm_n_buffered); + p += stream->sm_n_buffered; + stream->sm_n_buffered = 0; + maybe_resize_stream_buffer(stream); + maybe_resize_threshold(fg_ctx); + } + + available = lsquic_stream_write_avail(fg_ctx->fgc_stream); + n_to_write = end - p; + if (n_to_write > available) + n_to_write = available; + n_written = fg_ctx->fgc_reader->lsqr_read(fg_ctx->fgc_reader->lsqr_ctx, p, + n_to_write); + p += n_written; + fg_ctx->fgc_nread_from_reader += n_written; + *fin = fg_ctx->fgc_fin(fg_ctx); + incr_sm_payload(stream, p - (const unsigned char *) begin_buf); + incr_conn_cap(stream, n_written); + return p - (const unsigned char *) begin_buf; +} + + +static struct stream_hq_frame * +find_hq_frame (const struct lsquic_stream *stream, uint64_t off) +{ + struct stream_hq_frame *shf; + + STAILQ_FOREACH(shf, &stream->sm_hq_frames, shf_next) + if (shf->shf_off <= off && stream_hq_frame_end(shf) > off) + return shf; + + return NULL; +} + + +static struct stream_hq_frame * +find_cur_hq_frame (const struct lsquic_stream *stream) +{ + return find_hq_frame(stream, stream->sm_payload); +} + + +static struct stream_hq_frame * +open_hq_frame (struct lsquic_stream *stream) +{ + struct stream_hq_frame *shf; + + for (shf = stream->sm_hq_frame_arr; shf < stream->sm_hq_frame_arr + + sizeof(stream->sm_hq_frame_arr) + / sizeof(stream->sm_hq_frame_arr[0]); ++shf) + if (!(shf->shf_flags & SHF_ACTIVE)) + goto found; + + shf = lsquic_malo_get(stream->conn_pub->mm->malo.stream_hq_frame); + if (!shf) + { + LSQ_WARN("cannot allocate HQ frame"); + return NULL; + } + memset(shf, 0, sizeof(*shf)); + + found: + STAILQ_INSERT_TAIL(&stream->sm_hq_frames, shf, shf_next); + shf->shf_flags = SHF_ACTIVE; + return shf; +} + + +static struct stream_hq_frame * +stream_activate_hq_frame (struct lsquic_stream *stream, uint64_t off, + enum hq_frame_type frame_type, enum shf_flags flags, size_t size) +{ + struct stream_hq_frame *shf; + + shf = open_hq_frame(stream); + if (!shf) + { + LSQ_WARN("could not open HQ frame"); + return NULL; + } + + shf->shf_off = off; + shf->shf_flags |= flags; + shf->shf_frame_type = frame_type; + if (shf->shf_flags & SHF_FIXED_SIZE) + { + shf->shf_frame_size = size; + LSQ_DEBUG("activated fixed-size HQ frame of type 0x%X at offset " + "%"PRIu64", size %zu", shf->shf_frame_type, shf->shf_off, size); + } + else + { + shf->shf_frame_ptr = NULL; + if (size >= (1 << 6)) + shf->shf_flags |= SHF_TWO_BYTES; + LSQ_DEBUG("activated variable-size HQ frame of type 0x%X at offset " + "%"PRIu64, shf->shf_frame_type, shf->shf_off); + } + + return shf; +} + + +struct hq_arr +{ + unsigned char **p; + unsigned count; + unsigned max; +}; + + +static int +save_hq_ptr (struct hq_arr *hq_arr, void *p) +{ + if (hq_arr->count < hq_arr->max) + { + hq_arr->p[hq_arr->count++] = p; + return 0; + } + else + return -1; +} + + +static size_t +frame_hq_gen_read (void *ctx, void *begin_buf, size_t len, int *fin) +{ + struct frame_gen_ctx *fg_ctx = ctx; + unsigned char *p = begin_buf; + unsigned char *const end = p + len; + struct lsquic_stream *const stream = fg_ctx->fgc_stream; + struct stream_hq_frame *shf; + size_t nw, frame_sz, avail, rem; + unsigned bits; + int new; + + while (p < end) + { + shf = find_cur_hq_frame(stream); + if (shf) + { + new = 0; + LSQ_DEBUG("found current HQ frame of type 0x%X at offset %"PRIu64, + shf->shf_frame_type, shf->shf_off); + } + else + { + rem = frame_std_gen_size(ctx); + if (rem) + { + if (rem > ((1 << 14) - 1)) + rem = (1 << 14) - 1; + shf = stream_activate_hq_frame(stream, + stream->sm_payload, HQFT_DATA, 0, rem); + if (shf) + { + new = 1; + goto insert; + } + else + { + stream->conn_pub->lconn->cn_if->ci_internal_error( + stream->conn_pub->lconn, "cannot activate HQ frame"); + break; + } + } + else + break; + } + if (shf->shf_off == stream->sm_payload + && !(shf->shf_flags & SHF_WRITTEN)) + { + insert: + frame_sz = stream_hq_frame_size(shf); + if (frame_sz > (uintptr_t) (end - p)) + { + if (new) + stream_hq_frame_put(stream, shf); + break; + } + LSQ_DEBUG("insert %zu-byte HQ frame of type 0x%X at payload " + "offset %"PRIu64" (actual offset %"PRIu64")", frame_sz, + shf->shf_frame_type, stream->sm_payload, stream->tosend_off); + if (0 == (shf->shf_flags & (SHF_FIXED_SIZE|SHF_PHANTOM))) + { + shf->shf_frame_ptr = p; + if (stream->sm_hq_arr && 0 != save_hq_ptr(stream->sm_hq_arr, p)) + { + stream_hq_frame_put(stream, shf); + break; + } + memset(p, 0, frame_sz); + p += frame_sz; + } + else if ((shf->shf_flags & (SHF_FIXED_SIZE|SHF_PHANTOM)) + == SHF_FIXED_SIZE) + { + *p++ = shf->shf_frame_type; + bits = vint_val2bits(shf->shf_frame_size); + vint_write(p, shf->shf_frame_size, bits, 1 << bits); + p += 1 << bits; + } + else + assert((shf->shf_flags & (SHF_FIXED_SIZE|SHF_PHANTOM)) + == (SHF_FIXED_SIZE|SHF_PHANTOM)); + if (!(shf->shf_flags & SHF_CC_PAID)) + { + incr_conn_cap(stream, frame_sz); + shf->shf_flags |= SHF_CC_PAID; + } + shf->shf_flags |= SHF_WRITTEN; + stream->tosend_off += frame_sz; + assert(stream->tosend_off <= stream->max_send_off); + } + else + { + avail = stream->sm_n_buffered + stream->sm_write_avail(stream); + len = stream_hq_frame_end(shf) - stream->sm_payload; + assert(len); + if (len > (unsigned) (end - p)) + len = end - p; + if (len > avail) + len = avail; + if (!len) + break; + nw = frame_std_gen_read(ctx, p, len, fin); + p += nw; + if (nw < len) + break; + if (stream_hq_frame_end(shf) == stream->sm_payload) + stream_hq_frame_close(stream, shf); + } + } + + return p - (unsigned char *) begin_buf; +} + + +static void +check_flush_threshold (lsquic_stream_t *stream) +{ + if ((stream->sm_qflags & SMQF_WANT_FLUSH) && + stream->tosend_off >= stream->sm_flush_to) + { + LSQ_DEBUG("flushed to or past required offset %"PRIu64, + stream->sm_flush_to); + maybe_remove_from_write_q(stream, SMQF_WANT_FLUSH); + } +} + + +#if LSQUIC_EXTRA_CHECKS +static void +verify_conn_cap (const struct lsquic_conn_public *conn_pub) +{ + const struct lsquic_stream *stream; + struct lsquic_hash_elem *el; + unsigned n_buffered; + + if (conn_pub->wtp_level > 1) + return; + + if (!conn_pub->all_streams) + /* TODO: enable this check for unit tests as well */ + return; + + n_buffered = 0; + for (el = lsquic_hash_first(conn_pub->all_streams); el; + el = lsquic_hash_next(conn_pub->all_streams)) + { + stream = lsquic_hashelem_getdata(el); + if (stream->sm_bflags & SMBF_CONN_LIMITED) + n_buffered += stream->sm_n_buffered; + } + + assert(n_buffered + conn_pub->stream_frame_bytes + == conn_pub->conn_cap.cc_sent); + LSQ_DEBUG("%s: cc_sent: %"PRIu64, __func__, conn_pub->conn_cap.cc_sent); +} + + +#endif + + +static int +write_stream_frame (struct frame_gen_ctx *fg_ctx, const size_t size, + struct lsquic_packet_out *packet_out) +{ + lsquic_stream_t *const stream = fg_ctx->fgc_stream; + const struct parse_funcs *const pf = stream->conn_pub->lconn->cn_pf; + struct lsquic_send_ctl *const send_ctl = stream->conn_pub->send_ctl; + unsigned off; + int len, s; + +#if LSQUIC_CONN_STATS || LSQUIC_EXTRA_CHECKS + const uint64_t begin_off = stream->tosend_off; +#endif + off = packet_out->po_data_sz; + len = pf->pf_gen_stream_frame( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), stream->id, + stream->tosend_off, + fg_ctx->fgc_fin(fg_ctx), size, fg_ctx->fgc_read, fg_ctx); + if (len <= 0) + return len; + +#if LSQUIC_CONN_STATS + stream->conn_pub->conn_stats->out.stream_frames += 1; + stream->conn_pub->conn_stats->out.stream_data_sz + += stream->tosend_off - begin_off; +#endif + EV_LOG_GENERATED_STREAM_FRAME(LSQUIC_LOG_CONN_ID, pf, + packet_out->po_data + packet_out->po_data_sz, len); + lsquic_send_ctl_incr_pack_sz(send_ctl, packet_out, len); + packet_out->po_frame_types |= 1 << QUIC_FRAME_STREAM; + if (0 == lsquic_packet_out_avail(packet_out)) + packet_out->po_flags |= PO_STREAM_END; + s = lsquic_packet_out_add_stream(packet_out, stream->conn_pub->mm, + stream, QUIC_FRAME_STREAM, off, len); + if (s != 0) + { + LSQ_ERROR("adding stream to packet failed: %s", strerror(errno)); + return -1; + } +#if LSQUIC_EXTRA_CHECKS + if (stream->sm_bflags & SMBF_CONN_LIMITED) + { + stream->conn_pub->stream_frame_bytes += stream->tosend_off - begin_off; + verify_conn_cap(stream->conn_pub); + } +#endif + + check_flush_threshold(stream); + return len; +} + + +static enum swtp_status +stream_write_to_packet_hsk (struct frame_gen_ctx *fg_ctx, const size_t size) +{ + struct lsquic_stream *const stream = fg_ctx->fgc_stream; + struct lsquic_send_ctl *const send_ctl = stream->conn_pub->send_ctl; + struct lsquic_packet_out *packet_out; + int len; + + packet_out = lsquic_send_ctl_new_packet_out(send_ctl, 0, PNS_APP, + stream->conn_pub->path); + if (!packet_out) + return SWTP_STOP; + packet_out->po_header_type = stream->tosend_off == 0 + ? HETY_INITIAL : HETY_HANDSHAKE; + + len = write_stream_frame(fg_ctx, size, packet_out); + + if (len > 0) + { + packet_out->po_flags |= PO_HELLO; + lsquic_packet_out_zero_pad(packet_out); + lsquic_send_ctl_scheduled_one(send_ctl, packet_out); + return SWTP_OK; + } + else + return SWTP_ERROR; +} + + +static enum swtp_status +stream_write_to_packet_std (struct frame_gen_ctx *fg_ctx, const size_t size) +{ + struct lsquic_stream *const stream = fg_ctx->fgc_stream; + struct lsquic_send_ctl *const send_ctl = stream->conn_pub->send_ctl; + unsigned stream_header_sz, need_at_least; + struct lsquic_packet_out *packet_out; + struct lsquic_stream *headers_stream; + int len; + + if ((stream->stream_flags & (STREAM_HEADERS_SENT|STREAM_HDRS_FLUSHED)) + == STREAM_HEADERS_SENT) + { + if (stream->sm_bflags & SMBF_IETF) + { + if (stream->stream_flags & STREAM_ENCODER_DEP) + headers_stream = stream->conn_pub->u.ietf.qeh->qeh_enc_sm_out; + else + headers_stream = NULL; + } + else + headers_stream = + lsquic_headers_stream_get_stream(stream->conn_pub->u.gquic.hs); + if (headers_stream && lsquic_stream_has_data_to_flush(headers_stream)) + { + LSQ_DEBUG("flushing headers stream before packetizing stream data"); + (void) lsquic_stream_flush(headers_stream); + } + /* If there is nothing to flush, some other stream must have flushed it: + * this means our headers are flushed. Either way, only do this once. + */ + stream->stream_flags |= STREAM_HDRS_FLUSHED; + } + + stream_header_sz = stream->sm_frame_header_sz(stream, size); + need_at_least = stream_header_sz; + if ((stream->sm_bflags & (SMBF_IETF|SMBF_USE_HEADERS)) + == (SMBF_IETF|SMBF_USE_HEADERS)) + { + if (size > 0) + need_at_least += 3; /* Enough room for HTTP/3 frame */ + } + else + need_at_least += size > 0; + get_packet: + packet_out = stream->sm_get_packet_for_stream(send_ctl, + need_at_least, stream->conn_pub->path, stream); + if (packet_out) + { + len = write_stream_frame(fg_ctx, size, packet_out); + if (len > 0) + return SWTP_OK; + if (len == 0) + return SWTP_STOP; + if (-len > (int) need_at_least) + { + LSQ_DEBUG("need more room (%d bytes) than initially calculated " + "%u bytes, will try again", -len, need_at_least); + need_at_least = -len; + goto get_packet; + } + return SWTP_ERROR; + } + else + return SWTP_STOP; +} + + +/* Use for IETF crypto streams and gQUIC crypto stream for versions >= Q050. */ +static enum swtp_status +stream_write_to_packet_crypto (struct frame_gen_ctx *fg_ctx, const size_t size) +{ + struct lsquic_stream *const stream = fg_ctx->fgc_stream; + struct lsquic_send_ctl *const send_ctl = stream->conn_pub->send_ctl; + const struct parse_funcs *const pf = stream->conn_pub->lconn->cn_pf; + unsigned crypto_header_sz, need_at_least; + struct lsquic_packet_out *packet_out; + unsigned short off; + enum packnum_space pns; + int len, s; + + if (stream->sm_bflags & SMBF_IETF) + pns = lsquic_enclev2pns[ crypto_level(stream) ]; + else + pns = PNS_APP; + + assert(size > 0); + crypto_header_sz = stream->sm_frame_header_sz(stream, size); + need_at_least = crypto_header_sz + 1; + + packet_out = lsquic_send_ctl_get_packet_for_crypto(send_ctl, + need_at_least, pns, stream->conn_pub->path); + if (!packet_out) + return SWTP_STOP; + + off = packet_out->po_data_sz; + len = pf->pf_gen_crypto_frame(packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), 0, stream->tosend_off, 0, + size, frame_std_gen_read, fg_ctx); + if (len < 0) + return len; + + EV_LOG_GENERATED_CRYPTO_FRAME(LSQUIC_LOG_CONN_ID, pf, + packet_out->po_data + packet_out->po_data_sz, len); + lsquic_send_ctl_incr_pack_sz(send_ctl, packet_out, len); + packet_out->po_frame_types |= 1 << QUIC_FRAME_CRYPTO; + s = lsquic_packet_out_add_stream(packet_out, stream->conn_pub->mm, + stream, QUIC_FRAME_CRYPTO, off, len); + if (s != 0) + { + LSQ_WARN("adding crypto stream to packet failed: %s", strerror(errno)); + return -1; + } + + packet_out->po_flags |= PO_HELLO; + + if (!(stream->sm_bflags & SMBF_IETF)) + { + const unsigned short before = packet_out->po_data_sz; + lsquic_packet_out_zero_pad(packet_out); + /* XXX: too hacky */ + if (before < packet_out->po_data_sz) + send_ctl->sc_bytes_scheduled += packet_out->po_data_sz - before; + } + + check_flush_threshold(stream); + return SWTP_OK; +} + + +static void +abort_connection (struct lsquic_stream *stream) +{ + if (0 == (stream->sm_qflags & SMQF_SERVICE_FLAGS)) + TAILQ_INSERT_TAIL(&stream->conn_pub->service_streams, stream, + next_service_stream); + stream->sm_qflags |= SMQF_ABORT_CONN; + LSQ_INFO("connection will be aborted"); + maybe_conn_to_tickable(stream); +} + + +static void +maybe_close_varsize_hq_frame (struct lsquic_stream *stream) +{ + struct stream_hq_frame *shf; + uint64_t size; + unsigned bits; + + shf = find_cur_hq_frame(stream); + if (!shf) + return; + + if (shf->shf_flags & SHF_FIXED_SIZE) + { + if (shf->shf_off + shf->shf_frame_size <= stream->sm_payload) + stream_hq_frame_put(stream, shf); + return; + } + + bits = (shf->shf_flags & SHF_TWO_BYTES) > 0; + size = stream->sm_payload + stream->sm_n_buffered - shf->shf_off; + if (size <= VINT_MAX_B(bits) && shf->shf_frame_ptr) + { + if (0 == stream->sm_n_buffered) + LSQ_DEBUG("close HQ frame type 0x%X of size %"PRIu64, + shf->shf_frame_type, size); + else + LSQ_DEBUG("convert HQ frame type 0x%X of to fixed %"PRIu64, + shf->shf_frame_type, size); + shf->shf_frame_ptr[0] = shf->shf_frame_type; + vint_write(shf->shf_frame_ptr + 1, size, bits, 1 << bits); + if (0 == stream->sm_n_buffered) + stream_hq_frame_put(stream, shf); + else + { + shf->shf_frame_size = size; + shf->shf_flags |= SHF_FIXED_SIZE; + } + } + else if (!shf->shf_frame_ptr) + LSQ_DEBUG("HQ frame of type 0x%X has not yet been written, not " + "closing", shf->shf_frame_type); + else + { + assert(stream->sm_n_buffered); + LSQ_ERROR("cannot close frame of size %"PRIu64" on stream %"PRIu64 + " -- too large", size, stream->id); + stream->conn_pub->lconn->cn_if->ci_internal_error( + stream->conn_pub->lconn, "HTTP/3 frame too large"); + stream_hq_frame_put(stream, shf); + } +} + + +static ssize_t +stream_write_to_packets (lsquic_stream_t *stream, struct lsquic_reader *reader, + size_t thresh, enum stream_write_options swo) +{ + size_t size; + ssize_t nw; + unsigned seen_ok; + int use_framing; + struct frame_gen_ctx fg_ctx = { + .fgc_stream = stream, + .fgc_reader = reader, + .fgc_nread_from_reader = 0, + .fgc_thresh = thresh, + }; + +#if LSQUIC_EXTRA_CHECKS + if (stream->conn_pub) + ++stream->conn_pub->wtp_level; +#endif + use_framing = (stream->sm_bflags & (SMBF_IETF|SMBF_USE_HEADERS)) + == (SMBF_IETF|SMBF_USE_HEADERS); + if (use_framing) + { + fg_ctx.fgc_size = frame_hq_gen_size; + fg_ctx.fgc_read = frame_hq_gen_read; + fg_ctx.fgc_fin = frame_std_gen_fin; /* This seems to work for either? XXX */ + } + else + { + fg_ctx.fgc_size = frame_std_gen_size; + fg_ctx.fgc_read = frame_std_gen_read; + fg_ctx.fgc_fin = frame_std_gen_fin; + } + + seen_ok = 0; + while ((size = fg_ctx.fgc_size(&fg_ctx), + fg_ctx.fgc_thresh + ? size >= fg_ctx.fgc_thresh : size > 0) + || fg_ctx.fgc_fin(&fg_ctx)) + { + switch (stream->sm_write_to_packet(&fg_ctx, size)) + { + case SWTP_OK: + if (!seen_ok++) + { + maybe_conn_to_tickable_if_writeable(stream, 0); + maybe_update_last_progress(stream); + } + if (fg_ctx.fgc_fin(&fg_ctx)) + { + if (use_framing && seen_ok) + maybe_close_varsize_hq_frame(stream); + stream->stream_flags |= STREAM_FIN_SENT; + if (stream->sm_qflags & SMQF_WANT_FLUSH) + { + LSQ_DEBUG("turned off SMQF_WANT_FLUSH flag as FIN has been sent."); + maybe_remove_from_write_q(stream, SMQF_WANT_FLUSH); + } + goto end; + } + else + break; + case SWTP_STOP: + stream->stream_flags &= ~STREAM_LAST_WRITE_OK; + if (use_framing && seen_ok) + maybe_close_varsize_hq_frame(stream); + goto end; + default: + abort_connection(stream); + stream->stream_flags &= ~STREAM_LAST_WRITE_OK; + goto err; + } + } + + if (use_framing && seen_ok) + maybe_close_varsize_hq_frame(stream); + + if (fg_ctx.fgc_thresh && (swo & SWO_BUFFER)) + { + assert(size < fg_ctx.fgc_thresh); + assert(size >= stream->sm_n_buffered); + size -= stream->sm_n_buffered; + if (size > 0) + { + nw = save_to_buffer(stream, reader, size); + if (nw < 0) + goto err; + fg_ctx.fgc_nread_from_reader += nw; /* Make this cleaner? */ + } + } +#ifndef NDEBUG + else if (swo & SWO_BUFFER) + { + /* We count flushed data towards both stream and connection limits, + * so we should have been able to packetize all of it: + */ + assert(0 == stream->sm_n_buffered); + assert(size == 0); + } +#endif + + maybe_mark_as_blocked(stream); + + end: +#if LSQUIC_EXTRA_CHECKS + if (stream->conn_pub) + --stream->conn_pub->wtp_level; +#endif + return fg_ctx.fgc_nread_from_reader; + + err: +#if LSQUIC_EXTRA_CHECKS + if (stream->conn_pub) + --stream->conn_pub->wtp_level; +#endif + return -1; +} + + +/* Perform an implicit flush when we hit connection or stream flow control + * limit while buffering data. + * + * This is to prevent a (theoretical) stall. Scenario 1: + * + * Imagine a number of streams, all of which buffered some data. The buffered + * data is up to connection cap, which means no further writes are possible. + * None of them flushes, which means that data is not sent and connection + * WINDOW_UPDATE frame never arrives from peer. Stall. + * + * Scenario 2: + * + * Stream flow control window is smaller than the packetizing threshold. In + * this case, without a flush, the peer will never send a WINDOW_UPDATE. Stall. + */ +static int +maybe_flush_stream (struct lsquic_stream *stream) +{ + if (stream->sm_n_buffered > 0 && stream->sm_write_avail(stream) == 0) + { + LSQ_DEBUG("out of flow control credits, flush %zu buffered bytes", + stream->sm_n_buffered + active_hq_frame_sizes(stream)); + return stream_flush_nocheck(stream); + } + else + return 0; +} + + +static int +stream_hq_frame_extendable (const struct stream_hq_frame *shf, uint64_t cur_off, + unsigned len) +{ + return (shf->shf_flags & (SHF_TWO_BYTES|SHF_FIXED_SIZE)) == 0 + && cur_off - shf->shf_off < (1 << 6) + && cur_off - shf->shf_off + len >= (1 << 6) + ; +} + + +/* Update currently buffered HQ frame or create a new one, if possible. + * Return update length to be buffered. If a HQ frame cannot be + * buffered due to size, 0 is returned, thereby preventing both HQ frame + * creation and buffering. + */ +static size_t +update_buffered_hq_frames (struct lsquic_stream *stream, size_t len, + size_t avail) +{ + struct stream_hq_frame *shf; + uint64_t cur_off, end; + size_t frame_sz; + unsigned extendable; +#if _MSC_VER + end = 0; + extendable = 0; +#endif + + cur_off = stream->sm_payload + stream->sm_n_buffered; + STAILQ_FOREACH(shf, &stream->sm_hq_frames, shf_next) + if (shf->shf_off <= cur_off) + { + end = stream_hq_frame_end(shf); + extendable = stream_hq_frame_extendable(shf, cur_off, len); + if (cur_off < end + extendable) + break; + } + + if (shf) + { + if (len > end + extendable - cur_off) + len = end + extendable - cur_off; + frame_sz = stream_hq_frame_size(shf); + } + else + { + assert(avail >= 3); + shf = stream_activate_hq_frame(stream, cur_off, HQFT_DATA, 0, len); + if (!shf) + return 0; + if (len > stream_hq_frame_end(shf) - cur_off) + len = stream_hq_frame_end(shf) - cur_off; + extendable = 0; + frame_sz = stream_hq_frame_size(shf); + if (avail < frame_sz) + return 0; + avail -= frame_sz; + } + + if (!(shf->shf_flags & SHF_CC_PAID)) + { + incr_conn_cap(stream, frame_sz); + shf->shf_flags |= SHF_CC_PAID; + } + if (extendable) + { + shf->shf_flags |= SHF_TWO_BYTES; + incr_conn_cap(stream, 1); + avail -= 1; + if ((stream->sm_qflags & SMQF_WANT_FLUSH) + && shf->shf_off <= stream->sm_payload + && stream_hq_frame_end(shf) >= stream->sm_flush_to_payload) + stream->sm_flush_to += 1; + } + + if (len <= avail) + return len; + else + return avail; +} + + +static ssize_t +save_to_buffer (lsquic_stream_t *stream, struct lsquic_reader *reader, + size_t len) +{ + size_t avail, n_written, n_allowed; + + avail = lsquic_stream_write_avail(stream); + if (avail < len) + len = avail; + if (len == 0) + { + LSQ_DEBUG("zero-byte write (avail: %zu)", avail); + return 0; + } + + n_allowed = stream_get_n_allowed(stream); + assert(stream->sm_n_buffered + len <= n_allowed); + + if (!stream->sm_buf) + { + stream->sm_buf = malloc(n_allowed); + if (!stream->sm_buf) + return -1; + stream->sm_n_allocated = n_allowed; + } + + if ((stream->sm_bflags & (SMBF_IETF|SMBF_USE_HEADERS)) + == (SMBF_IETF|SMBF_USE_HEADERS)) + len = update_buffered_hq_frames(stream, len, avail); + + n_written = reader->lsqr_read(reader->lsqr_ctx, + stream->sm_buf + stream->sm_n_buffered, len); + stream->sm_n_buffered += n_written; + assert(stream->max_send_off >= stream->tosend_off + stream->sm_n_buffered); + incr_conn_cap(stream, n_written); + LSQ_DEBUG("buffered %zd bytes; %hu bytes are now in buffer", + n_written, stream->sm_n_buffered); + if (0 != maybe_flush_stream(stream)) + return -1; + return n_written; +} + + +static ssize_t +stream_write (lsquic_stream_t *stream, struct lsquic_reader *reader, + enum stream_write_options swo) +{ + const struct stream_hq_frame *shf; + size_t thresh, len, frames, total_len, n_allowed, nwritten; + ssize_t nw; + + len = reader->lsqr_size(reader->lsqr_ctx); + if (len == 0) + return 0; + + frames = 0; + if ((stream->sm_bflags & (SMBF_IETF|SMBF_USE_HEADERS)) + == (SMBF_IETF|SMBF_USE_HEADERS)) + STAILQ_FOREACH(shf, &stream->sm_hq_frames, shf_next) + if (shf->shf_off >= stream->sm_payload) + frames += stream_hq_frame_size(shf); + total_len = len + frames + stream->sm_n_buffered; + thresh = lsquic_stream_flush_threshold(stream, total_len); + n_allowed = stream_get_n_allowed(stream); + if (total_len <= n_allowed && total_len < thresh) + { + if (!(swo & SWO_BUFFER)) + return 0; + nwritten = 0; + do + { + nw = save_to_buffer(stream, reader, len - nwritten); + if (nw > 0) + nwritten += (size_t) nw; + else if (nw == 0) + break; + else + return nw; + } + while (nwritten < len + && stream->sm_n_buffered < stream->sm_n_allocated); + } + else + nwritten = stream_write_to_packets(stream, reader, thresh, swo); + if ((stream->sm_qflags & SMQF_SEND_BLOCKED) && + (stream->sm_bflags & SMBF_IETF)) + { + lsquic_sendctl_gen_stream_blocked_frame(stream->conn_pub->send_ctl, stream); + } + return nwritten; +} + + +ssize_t +lsquic_stream_write (lsquic_stream_t *stream, const void *buf, size_t len) +{ + struct iovec iov = { .iov_base = (void *) buf, .iov_len = len, }; + return lsquic_stream_writev(stream, &iov, 1); +} + + +struct inner_reader_iovec { + const struct iovec *iov; + const struct iovec *end; + unsigned cur_iovec_off; +}; + + +static size_t +inner_reader_iovec_read (void *ctx, void *buf, size_t count) +{ + struct inner_reader_iovec *const iro = ctx; + unsigned char *p = buf; + unsigned char *const end = p + count; + unsigned n_tocopy; + + while (iro->iov < iro->end && p < end) + { + n_tocopy = iro->iov->iov_len - iro->cur_iovec_off; + if (n_tocopy > (unsigned) (end - p)) + n_tocopy = end - p; + memcpy(p, (unsigned char *) iro->iov->iov_base + iro->cur_iovec_off, + n_tocopy); + p += n_tocopy; + iro->cur_iovec_off += n_tocopy; + if (iro->iov->iov_len == iro->cur_iovec_off) + { + ++iro->iov; + iro->cur_iovec_off = 0; + } + } + + return p + count - end; +} + + +static size_t +inner_reader_iovec_size (void *ctx) +{ + struct inner_reader_iovec *const iro = ctx; + const struct iovec *iov; + size_t size; + + size = 0; + for (iov = iro->iov; iov < iro->end; ++iov) + size += iov->iov_len; + + return size - iro->cur_iovec_off; +} + + +ssize_t +lsquic_stream_writev (lsquic_stream_t *stream, const struct iovec *iov, + int iovcnt) +{ + COMMON_WRITE_CHECKS(); + SM_HISTORY_APPEND(stream, SHE_USER_WRITE_DATA); + + struct inner_reader_iovec iro = { + .iov = iov, + .end = iov + iovcnt, + .cur_iovec_off = 0, + }; + struct lsquic_reader reader = { + .lsqr_read = inner_reader_iovec_read, + .lsqr_size = inner_reader_iovec_size, + .lsqr_ctx = &iro, + }; + + return stream_write(stream, &reader, SWO_BUFFER); +} + + +ssize_t +lsquic_stream_writef (lsquic_stream_t *stream, struct lsquic_reader *reader) +{ + COMMON_WRITE_CHECKS(); + SM_HISTORY_APPEND(stream, SHE_USER_WRITE_DATA); + return stream_write(stream, reader, SWO_BUFFER); +} + + +/* Configuration for lsquic_stream_pwritev: */ +#ifndef LSQUIC_PWRITEV_DEF_IOVECS +#define LSQUIC_PWRITEV_DEF_IOVECS 16 +#endif +/* This is an overkill, this limit should only be reached during testing: */ +#ifndef LSQUIC_PWRITEV_DEF_FRAMES +#define LSQUIC_PWRITEV_DEF_FRAMES (LSQUIC_PWRITEV_DEF_IOVECS * 2) +#endif + +#ifdef NDEBUG +#define PWRITEV_IOVECS LSQUIC_PWRITEV_DEF_IOVECS +#define PWRITEV_FRAMES LSQUIC_PWRITEV_DEF_FRAMES +#else +#if _MSC_VER +#define MALLOC_PWRITEV 1 +#else +#define MALLOC_PWRITEV 0 +#endif +static unsigned + PWRITEV_IOVECS = LSQUIC_PWRITEV_DEF_IOVECS, + PWRITEV_FRAMES = LSQUIC_PWRITEV_DEF_FRAMES; + +void +lsquic_stream_set_pwritev_params (unsigned iovecs, unsigned frames) +{ + PWRITEV_IOVECS = iovecs; + PWRITEV_FRAMES = frames; +} + + +#endif + +struct pwritev_ctx +{ + struct iovec *iov; + const struct hq_arr *hq_arr; + size_t total_bytes; + size_t n_to_write; + unsigned n_iovecs, max_iovecs; +}; + + +static size_t +pwritev_size (void *lsqr_ctx) +{ + struct pwritev_ctx *const ctx = lsqr_ctx; + + if (ctx->n_iovecs < ctx->max_iovecs + && ctx->hq_arr->count < ctx->hq_arr->max) + return ctx->n_to_write - ctx->total_bytes; + else + return 0; +} + + +static size_t +pwritev_read (void *lsqr_ctx, void *buf, size_t count) +{ + struct pwritev_ctx *const ctx = lsqr_ctx; + + assert(ctx->n_iovecs < ctx->max_iovecs); + ctx->iov[ctx->n_iovecs].iov_base = buf; + ctx->iov[ctx->n_iovecs].iov_len = count; + ++ctx->n_iovecs; + ctx->total_bytes += count; + return count; +} + + +/* pwritev works as follows: allocate packets via lsquic_stream_writef() call + * and record pointers and sizes into an iovec array. Then issue a single call + * to user-supplied preadv() to populate all packets in one shot. + * + * Unwinding state changes due to a short write is by far the most complicated + * part of the machinery that follows. We optimize the normal path: it should + * be cheap to be prepared for the unwinding; unwinding itself can be more + * expensive, as we do not expect it to happen often. + */ +ssize_t +lsquic_stream_pwritev (struct lsquic_stream *stream, + ssize_t (*preadv)(void *user_data, const struct iovec *iov, int iovcnt), + void *user_data, size_t n_to_write) +{ + struct lsquic_send_ctl *const ctl = stream->conn_pub->send_ctl; +#if MALLOC_PWRITEV + struct iovec *iovecs; + unsigned char **hq_frames; +#else + struct iovec iovecs[PWRITEV_IOVECS]; + unsigned char *hq_frames[PWRITEV_FRAMES]; +#endif + struct iovec *last_iov; + struct pwritev_ctx ctx; + struct lsquic_reader reader; + struct send_ctl_state ctl_state; + struct hq_arr hq_arr; + ssize_t nw; + size_t n_allocated, sum; +#ifndef NDEBUG + const unsigned short n_buffered = stream->sm_n_buffered; +#endif + + COMMON_WRITE_CHECKS(); + SM_HISTORY_APPEND(stream, SHE_USER_WRITE_DATA); + +#if MALLOC_PWRITEV + iovecs = malloc(sizeof(iovecs[0]) * PWRITEV_IOVECS); + hq_frames = malloc(sizeof(hq_frames[0]) * PWRITEV_FRAMES); + if (!(iovecs && hq_frames)) + { + free(iovecs); + free(hq_frames); + return -1; + } +#endif + + lsquic_send_ctl_snapshot(ctl, &ctl_state); + + ctx.total_bytes = 0; + ctx.n_to_write = n_to_write; + ctx.n_iovecs = 0; + ctx.max_iovecs = PWRITEV_IOVECS; + ctx.iov = iovecs; + ctx.hq_arr = &hq_arr; + + hq_arr.p = hq_frames; + hq_arr.count = 0; + hq_arr.max = PWRITEV_FRAMES; + stream->sm_hq_arr = &hq_arr; + + reader.lsqr_ctx = &ctx; + reader.lsqr_size = pwritev_size; + reader.lsqr_read = pwritev_read; + + nw = stream_write(stream, &reader, 0); + LSQ_DEBUG("pwritev: stream_write returned %zd, n_iovecs: %d", nw, + ctx.n_iovecs); + if (nw > 0) + { + /* Amount of buffered data shouldn't have increased */ + assert(n_buffered >= stream->sm_n_buffered); + n_allocated = (size_t) nw; + nw = preadv(user_data, ctx.iov, ctx.n_iovecs); + LSQ_DEBUG("pwritev: preadv returned %zd", nw); + if (nw >= 0 && (size_t) nw < n_allocated) + goto unwind_short_write; + } + + cleanup: + stream->sm_hq_arr = NULL; +#if MALLOC_PWRITEV + free(iovecs); + free(hq_frames); +#endif + return nw; + + unwind_short_write: + /* What follows is not the most efficient process. The emphasis here is + * on being simple instead. We expect short writes to be rare, so being + * slower than possible is a good tradeoff for being correct. + */ + LSQ_DEBUG("short write occurred, unwind"); + SM_HISTORY_APPEND(stream, SHE_SHORT_WRITE); + + /* First, adjust connection cap and stream offsets, and HTTP/3 framing, + * if necessary. + */ + if ((stream->sm_bflags & (SMBF_USE_HEADERS|SMBF_IETF)) + == (SMBF_USE_HEADERS|SMBF_IETF)) + { + size_t shortfall, payload_sz, decr; + unsigned char *p; + unsigned bits; + + assert(hq_arr.count > 0); + shortfall = n_allocated - (size_t) nw; + do + { + const unsigned count = hq_arr.count; + (void) count; + p = hq_frames[--hq_arr.count]; + assert(p[0] == HQFT_DATA); + assert(!(p[1] & 0x80)); /* Only one- and two-byte frame sizes */ + if (p[1] & 0x40) + { + payload_sz = (p[1] & 0x3F) << 8; + payload_sz |= p[2]; + } + else + payload_sz = p[1]; + if (payload_sz > shortfall) + { + bits = p[1] >> 6; + vint_write(p + 1, payload_sz - shortfall, bits, 1 << bits); + decr = shortfall; + decr_conn_cap(stream, decr); + stream->sm_payload -= decr; + stream->tosend_off -= decr; + shortfall = 0; + } + else + { + decr = payload_sz + 2 + (p[1] >> 6); + decr_conn_cap(stream, decr); + stream->sm_payload -= payload_sz; + stream->tosend_off -= decr; + shortfall -= payload_sz; + } + } + while (hq_arr.count); + assert(shortfall == 0); + } + else + { + const size_t shortfall = n_allocated - (size_t) nw; + decr_conn_cap(stream, shortfall); + stream->sm_payload -= shortfall; + stream->tosend_off -= shortfall; + } + + /* Find last iovec: */ + sum = 0; + for (last_iov = iovecs; last_iov < iovecs + PWRITEV_IOVECS; ++last_iov) + { + sum += last_iov->iov_len; + if ((last_iov == iovecs || (size_t) nw > sum - last_iov->iov_len) + && (size_t) nw <= sum) + break; + } + assert(last_iov < iovecs + PWRITEV_IOVECS); + lsquic_send_ctl_rollback(ctl, &ctl_state, last_iov, sum - nw); + + goto cleanup; +} + + +/* This bypasses COMMON_WRITE_CHECKS */ +static ssize_t +stream_write_buf (struct lsquic_stream *stream, const void *buf, size_t sz) +{ + const struct iovec iov[1] = {{ (void *) buf, sz, }}; + struct inner_reader_iovec iro = { + .iov = iov, + .end = iov + 1, + .cur_iovec_off = 0, + }; + struct lsquic_reader reader = { + .lsqr_read = inner_reader_iovec_read, + .lsqr_size = inner_reader_iovec_size, + .lsqr_ctx = &iro, + }; + return stream_write(stream, &reader, SWO_BUFFER); +} + + +/* This limits the cumulative size of the compressed header fields */ +#define MAX_HEADERS_SIZE (64 * 1024) + +static int +send_headers_ietf (struct lsquic_stream *stream, + const struct lsquic_http_headers *headers, int eos) +{ + enum qwh_status qwh; + const size_t max_prefix_size = + lsquic_qeh_max_prefix_size(stream->conn_pub->u.ietf.qeh); + const size_t max_push_size = 1 /* Stream type */ + 8 /* Push ID */; + size_t prefix_sz, headers_sz, hblock_sz, push_sz; + unsigned bits; + ssize_t nw; + unsigned char *header_block; + enum lsqpack_enc_header_flags hflags; + int rv; + const size_t buf_sz = max_push_size + max_prefix_size + MAX_HEADERS_SIZE; +#ifndef WIN32 + unsigned char buf[buf_sz]; +#else + unsigned char *buf = _malloca(buf_sz); + if (!buf) + return -1; +#endif + + if (stream->stream_flags & STREAM_PUSHING) + { + LSQ_DEBUG("push promise still being written, cannot send header now"); + errno = EBADMSG; + return -1; + } + stream->stream_flags |= STREAM_NOPUSH; + + /* TODO: Optimize for the common case: write directly to sm_buf and fall + * back to a larger buffer if that fails. + */ + prefix_sz = max_prefix_size; + headers_sz = buf_sz - max_prefix_size - max_push_size; + qwh = lsquic_qeh_write_headers(stream->conn_pub->u.ietf.qeh, stream->id, 0, + headers, buf + max_push_size + max_prefix_size, &prefix_sz, + &headers_sz, &stream->sm_hb_compl, &hflags); + + if (!(qwh == QWH_FULL || qwh == QWH_PARTIAL)) + { + if (qwh == QWH_ENOBUF) + LSQ_INFO("not enough room for header block"); + else + LSQ_WARN("internal error encoding and sending HTTP headers"); + goto err; + } + + if (hflags & LSQECH_REF_NEW_ENTRIES) + stream->stream_flags |= STREAM_ENCODER_DEP; + + if (stream->sm_promise) + { + assert(lsquic_stream_is_pushed(stream)); + bits = vint_val2bits(stream->sm_promise->pp_id); + push_sz = 1 + (1 << bits); + if (!stream_activate_hq_frame(stream, + stream->sm_payload + stream->sm_n_buffered, HQFT_PUSH_PREAMBLE, + SHF_FIXED_SIZE|SHF_PHANTOM, push_sz)) + goto err; + buf[max_push_size + max_prefix_size - prefix_sz - push_sz] = HQUST_PUSH; + vint_write(buf + max_push_size + max_prefix_size - prefix_sz + - push_sz + 1,stream->sm_promise->pp_id, bits, 1 << bits); + } + else + push_sz = 0; + + /* Construct contiguous header block buffer including HQ framing */ + header_block = buf + max_push_size + max_prefix_size - prefix_sz - push_sz; + hblock_sz = push_sz + prefix_sz + headers_sz; + if (!stream_activate_hq_frame(stream, + stream->sm_payload + stream->sm_n_buffered + push_sz, + HQFT_HEADERS, SHF_FIXED_SIZE, hblock_sz - push_sz)) + goto err; + + if (qwh == QWH_FULL) + { + stream->sm_send_headers_state = SSHS_HBLOCK_SENDING; + if (lsquic_stream_write_avail(stream)) + { + nw = stream_write_buf(stream, header_block, hblock_sz); + if (nw < 0) + { + LSQ_WARN("cannot write to stream: %s", strerror(errno)); + goto err; + } + if ((size_t) nw == hblock_sz) + { + stream->stream_flags |= STREAM_HEADERS_SENT; + stream_hblock_sent(stream); + LSQ_DEBUG("wrote all %zu bytes of header block", hblock_sz); + goto end; + } + LSQ_DEBUG("wrote only %zd bytes of header block, stash", nw); + } + else + { + LSQ_DEBUG("cannot write to stream, stash all %zu bytes of " + "header block", hblock_sz); + nw = 0; + } + } + else + { + stream->sm_send_headers_state = SSHS_ENC_SENDING; + nw = 0; + } + + stream->sm_saved_want_write = !!(stream->sm_qflags & SMQF_WANT_WRITE); + stream_wantwrite(stream, 1); + + stream->sm_header_block = malloc(hblock_sz - (size_t) nw); + if (!stream->sm_header_block) + { + LSQ_WARN("cannot allocate %zd bytes to stash %s header block", + hblock_sz - (size_t) nw, qwh == QWH_FULL ? "full" : "partial"); + goto err; + } + memcpy(stream->sm_header_block, header_block + (size_t) nw, + hblock_sz - (size_t) nw); + stream->sm_hblock_sz = hblock_sz - (size_t) nw; + stream->sm_hblock_off = 0; + LSQ_DEBUG("stashed %u bytes of header block", stream->sm_hblock_sz); + + end: + rv = 0; + clean: +#ifdef WIN32 + _freea(buf); +#endif + return rv; + + err: + rv = -1; + goto clean; +} + + +static int +send_headers_gquic (struct lsquic_stream *stream, + const struct lsquic_http_headers *headers, int eos) +{ + int s = lsquic_headers_stream_send_headers(stream->conn_pub->u.gquic.hs, + stream->id, headers, eos, lsquic_stream_priority(stream)); + if (0 == s) + { + SM_HISTORY_APPEND(stream, SHE_USER_WRITE_HEADER); + stream->stream_flags |= STREAM_HEADERS_SENT; + if (eos) + stream->stream_flags |= STREAM_FIN_SENT; + LSQ_INFO("sent headers"); + } + else + LSQ_WARN("could not send headers: %s", strerror(errno)); + return s; +} + + +int +lsquic_stream_send_headers (lsquic_stream_t *stream, + const lsquic_http_headers_t *headers, int eos) +{ + if ((stream->sm_bflags & SMBF_USE_HEADERS) + && !(stream->stream_flags & (STREAM_U_WRITE_DONE))) + { + if (stream->sm_bflags & SMBF_IETF) + return send_headers_ietf(stream, headers, eos); + else + return send_headers_gquic(stream, headers, eos); + } + else + { + LSQ_INFO("cannot send headers in this state"); + errno = EBADMSG; + return -1; + } +} + + +void +lsquic_stream_window_update (lsquic_stream_t *stream, uint64_t offset) +{ + if (offset > stream->max_send_off) + { + SM_HISTORY_APPEND(stream, SHE_WINDOW_UPDATE); + LSQ_DEBUG("update max send offset from %"PRIu64" to " + "%"PRIu64, stream->max_send_off, offset); + stream->max_send_off = offset; + } + else + LSQ_DEBUG("new offset %"PRIu64" is not larger than old " + "max send offset %"PRIu64", ignoring", offset, + stream->max_send_off); +} + + +/* This function is used to update offsets after handshake completes and we + * learn of peer's limits from the handshake values. + */ +int +lsquic_stream_set_max_send_off (lsquic_stream_t *stream, uint64_t offset) +{ + LSQ_DEBUG("setting max_send_off to %"PRIu64, offset); + if (offset > stream->max_send_off) + { + lsquic_stream_window_update(stream, offset); + return 0; + } + else if (offset < stream->tosend_off) + { + LSQ_INFO("new offset (%"PRIu64" bytes) is smaller than the amount of " + "data already sent on this stream (%"PRIu64" bytes)", offset, + stream->tosend_off); + return -1; + } + else + { + stream->max_send_off = offset; + return 0; + } +} + + +void +lsquic_stream_maybe_reset (struct lsquic_stream *stream, uint64_t error_code, + int do_close) +{ + if (!((stream->stream_flags + & (STREAM_RST_SENT|STREAM_FIN_SENT|STREAM_U_WRITE_DONE)) + || (stream->sm_qflags & SMQF_SEND_RST))) + { + stream_reset(stream, error_code, do_close); + } + else if (do_close) + stream_shutdown_read(stream); +} + + +static void +stream_reset (struct lsquic_stream *stream, uint64_t error_code, int do_close) +{ + if ((stream->stream_flags & STREAM_RST_SENT) + || (stream->sm_qflags & SMQF_SEND_RST)) + { + LSQ_INFO("reset already sent"); + return; + } + + SM_HISTORY_APPEND(stream, SHE_RESET); + + LSQ_INFO("reset, error code %"PRIu64, error_code); + stream->error_code = error_code; + + if (!(stream->sm_qflags & SMQF_SENDING_FLAGS)) + TAILQ_INSERT_TAIL(&stream->conn_pub->sending_streams, stream, + next_send_stream); + stream->sm_qflags &= ~SMQF_SENDING_FLAGS; + stream->sm_qflags |= SMQF_SEND_RST; + + if (stream->sm_qflags & SMQF_QPACK_DEC) + { + lsquic_qdh_cancel_stream(stream->conn_pub->u.ietf.qdh, stream); + stream->sm_qflags &= ~SMQF_QPACK_DEC; + } + + drop_buffered_data(stream); + maybe_elide_stream_frames(stream); + maybe_schedule_call_on_close(stream); + + if (do_close) + lsquic_stream_close(stream); + else + maybe_conn_to_tickable_if_writeable(stream, 1); +} + + +lsquic_stream_id_t +lsquic_stream_id (const lsquic_stream_t *stream) +{ + return stream->id; +} + + +#if !defined(NDEBUG) && __GNUC__ +__attribute__((weak)) +#endif +struct lsquic_conn * +lsquic_stream_conn (const lsquic_stream_t *stream) +{ + return stream->conn_pub->lconn; +} + + +#if LSQUIC_WEBTRANSPORT_SERVER_SUPPORT +void +lsquic_stream_set_webtransport_session(lsquic_stream_t *s) { + s->stream_flags |= SMBF_WEBTRANSPORT_SESSION_STREAM; +} + + +int +lsquic_stream_is_webtransport_session(const lsquic_stream_t *s) { + return (s->stream_flags & SMBF_WEBTRANSPORT_SESSION_STREAM); +} + + +int +lsquic_stream_is_webtransport_client_bidi_stream(const lsquic_stream_t *s) { + return (s->stream_flags & SMBF_WEBTRANSPORT_CLIENT_BIDI_STREAM); +} + + +int +lsquic_stream_get_webtransport_session_stream_id(const lsquic_stream_t *s) { + if(s->stream_flags & SMBF_WEBTRANSPORT_CLIENT_BIDI_STREAM) + { + return s->webtransport_session_stream_id; + } + + return -1; +} + + +#endif + +int +lsquic_stream_close (lsquic_stream_t *stream) +{ + LSQ_DEBUG("lsquic_stream_close() called"); + SM_HISTORY_APPEND(stream, SHE_CLOSE); + if (lsquic_stream_is_closed(stream)) + { + LSQ_INFO("Attempt to close an already-closed stream"); + errno = EBADF; + return -1; + } + maybe_stream_shutdown_write(stream); + stream_shutdown_read(stream); + maybe_schedule_call_on_close(stream); + maybe_finish_stream(stream); + if (!(stream->stream_flags & STREAM_DELAYED_SW)) + maybe_conn_to_tickable_if_writeable(stream, 1); + return 0; +} + + +#ifndef NDEBUG +#if __GNUC__ +__attribute__((weak)) +#endif +#endif +void +lsquic_stream_acked (struct lsquic_stream *stream, + enum quic_frame_type frame_type) +{ + if (stream->n_unacked > 0) + { + --stream->n_unacked; + LSQ_DEBUG("ACKed; n_unacked: %u", stream->n_unacked); + if (frame_type == QUIC_FRAME_RST_STREAM) + { + SM_HISTORY_APPEND(stream, SHE_RST_ACKED); + LSQ_DEBUG("RESET that we sent has been acked by peer"); + stream->stream_flags |= STREAM_RST_ACKED; + } + } + if (0 == stream->n_unacked) + { + maybe_schedule_call_on_close(stream); + maybe_finish_stream(stream); + } +} + + +void +lsquic_stream_push_req (lsquic_stream_t *stream, + struct uncompressed_headers *push_req) +{ + assert(!stream->push_req); + stream->push_req = push_req; + stream->stream_flags |= STREAM_U_WRITE_DONE; /* Writing not allowed */ +} + + +int +lsquic_stream_is_pushed (const lsquic_stream_t *stream) +{ + enum stream_id_type sit; + + switch (stream->sm_bflags & (SMBF_IETF|SMBF_USE_HEADERS)) + { + case SMBF_IETF|SMBF_USE_HEADERS: + sit = stream->id & SIT_MASK; + return sit == SIT_UNI_SERVER; + case SMBF_USE_HEADERS: + return 1 & ~stream->id; + default: + return 0; + } +} + + +int +lsquic_stream_push_info (const lsquic_stream_t *stream, + lsquic_stream_id_t *ref_stream_id, void **hset) +{ + if (lsquic_stream_is_pushed(stream)) + { + assert(stream->push_req); + *ref_stream_id = stream->push_req->uh_stream_id; + *hset = stream->push_req->uh_hset; + return 0; + } + else + return -1; +} + + +static int +stream_uh_in_gquic (struct lsquic_stream *stream, + struct uncompressed_headers *uh) +{ + struct uncompressed_headers **next; + if ((stream->sm_bflags & SMBF_USE_HEADERS)) + { + SM_HISTORY_APPEND(stream, SHE_HEADERS_IN); + LSQ_DEBUG("received uncompressed headers"); + stream->stream_flags |= STREAM_HAVE_UH; + if (uh->uh_flags & UH_FIN) + stream->stream_flags |= STREAM_FIN_RECVD|STREAM_HEAD_IN_FIN; + next = &stream->uh; + while(*next) + next = &(*next)->uh_next; + *next = uh; + assert(uh->uh_next == NULL); + if (uh->uh_oth_stream_id == 0) + { + if (uh->uh_weight) + lsquic_stream_set_priority_internal(stream, uh->uh_weight); + } + else + LSQ_NOTICE("don't know how to depend on stream %"PRIu64, + uh->uh_oth_stream_id); + return 0; + } + else + { + LSQ_ERROR("received unexpected uncompressed headers"); + return -1; + } +} + + +static int +stream_uh_in_ietf (struct lsquic_stream *stream, + struct uncompressed_headers *uh) +{ + int push_promise; + struct uncompressed_headers **next; + + push_promise = lsquic_stream_header_is_pp(stream); + if (!push_promise) + { + SM_HISTORY_APPEND(stream, SHE_HEADERS_IN); + LSQ_DEBUG("received uncompressed headers"); + stream->stream_flags |= STREAM_HAVE_UH; + if (uh->uh_flags & UH_FIN) + { + /* IETF QUIC only sets UH_FIN for a pushed stream on the server to + * mark request as done: + */ + if (stream->sm_bflags & SMBF_IETF) + assert((stream->sm_bflags & SMBF_SERVER) + && lsquic_stream_is_pushed(stream)); + stream->stream_flags |= STREAM_FIN_RECVD|STREAM_HEAD_IN_FIN; + } + next = &stream->uh; + while(*next) + next = &(*next)->uh_next; + *next = uh; + assert(uh->uh_next == NULL); + if (uh->uh_oth_stream_id == 0) + { + if (uh->uh_weight) + lsquic_stream_set_priority_internal(stream, uh->uh_weight); + } + else + LSQ_NOTICE("don't know how to depend on stream %"PRIu64, + uh->uh_oth_stream_id); + } + else + { + /* Trailer should never make here, as we discard it in qdh */ + LSQ_DEBUG("discard %s header set", + push_promise ? "push promise" : "trailer"); + if (uh->uh_hset) + stream->conn_pub->enpub->enp_hsi_if + ->hsi_discard_header_set(uh->uh_hset); + free(uh); + } + + return 0; +} + + +int +lsquic_stream_uh_in (lsquic_stream_t *stream, struct uncompressed_headers *uh) +{ + if (stream->sm_bflags & SMBF_USE_HEADERS) + { + if (stream->sm_bflags & SMBF_IETF) + return stream_uh_in_ietf(stream, uh); + else + return stream_uh_in_gquic(stream, uh); + } + else + return -1; +} + + +unsigned +lsquic_stream_priority (const lsquic_stream_t *stream) +{ + if (stream->sm_bflags & SMBF_HTTP_PRIO) + return stream->sm_priority; + else + return 256 - stream->sm_priority; +} + + +int +lsquic_stream_set_priority_internal (lsquic_stream_t *stream, unsigned priority) +{ + /* The user should never get a reference to the special streams, + * but let's check just in case: + */ + if (lsquic_stream_is_critical(stream)) + return -1; + + if (stream->sm_bflags & SMBF_HTTP_PRIO) + { + if (priority > LSQUIC_MAX_HTTP_URGENCY) + return -1; + stream->sm_priority = priority; + } + else + { + if (priority < 1 || priority > 256) + return -1; + stream->sm_priority = 256 - priority; + } + + lsquic_send_ctl_invalidate_bpt_cache(stream->conn_pub->send_ctl); + LSQ_DEBUG("set priority to %u", priority); + SM_HISTORY_APPEND(stream, SHE_SET_PRIO); + return 0; +} + + +static int +maybe_send_priority_gquic (struct lsquic_stream *stream, unsigned priority) +{ + if ((stream->sm_bflags & SMBF_USE_HEADERS) + && (stream->stream_flags & STREAM_HEADERS_SENT)) + { + /* We need to send headers only if we are a) using HEADERS stream + * and b) we already sent initial headers. If initial headers + * have not been sent yet, stream priority will be sent in the + * HEADERS frame. + */ + return lsquic_headers_stream_send_priority(stream->conn_pub->u.gquic.hs, + stream->id, 0, 0, priority); + } + else + return 0; +} + + +static int +send_priority_ietf (struct lsquic_stream *stream) +{ + struct lsquic_ext_http_prio ehp; + + if (0 == lsquic_stream_get_http_prio(stream, &ehp) + && 0 == lsquic_hcso_write_priority_update( + stream->conn_pub->u.ietf.hcso, + HQFT_PRIORITY_UPDATE_STREAM, stream->id, &ehp)) + return 0; + else + return -1; +} + + +int +lsquic_stream_set_priority (lsquic_stream_t *stream, unsigned priority) +{ + if (0 == lsquic_stream_set_priority_internal(stream, priority)) + { + if (stream->sm_bflags & SMBF_IETF) + { + if (stream->sm_bflags & SMBF_HTTP_PRIO) + return send_priority_ietf(stream); + else + return 0; + } + else + return maybe_send_priority_gquic(stream, priority); + } + else + return -1; +} + + +lsquic_stream_ctx_t * +lsquic_stream_get_ctx (const lsquic_stream_t *stream) +{ + fiu_return_on("stream/get_ctx", NULL); + return stream->st_ctx; +} + + +void +lsquic_stream_set_ctx (lsquic_stream_t *stream, lsquic_stream_ctx_t *ctx) +{ + stream->st_ctx = ctx; +} + + +int +lsquic_stream_refuse_push (lsquic_stream_t *stream) +{ + if (lsquic_stream_is_pushed(stream) + && !(stream->sm_qflags & SMQF_SEND_RST) + && !(stream->stream_flags & STREAM_RST_SENT)) + { + LSQ_DEBUG("refusing pushed stream: send reset"); + stream_reset(stream, 8 /* QUIC_REFUSED_STREAM */, 1); + return 0; + } + else + return -1; +} + + +size_t +lsquic_stream_mem_used (const struct lsquic_stream *stream) +{ + size_t size; + + size = sizeof(stream); + if (stream->sm_buf) + size += stream->sm_n_allocated; + if (stream->data_in) + size += stream->data_in->di_if->di_mem_used(stream->data_in); + + return size; +} + + +const lsquic_cid_t * +lsquic_stream_cid (const struct lsquic_stream *stream) +{ + return LSQUIC_LOG_CONN_ID; +} + + +void +lsquic_stream_dump_state (const struct lsquic_stream *stream) +{ + LSQ_DEBUG("flags: %X; read off: %"PRIu64, stream->stream_flags, + stream->read_offset); + stream->data_in->di_if->di_dump_state(stream->data_in); +} + + +void * +lsquic_stream_get_hset (struct lsquic_stream *stream) +{ + void *hset; + struct uncompressed_headers *uh; + + if (stream_is_read_reset(stream)) + { + LSQ_INFO("%s: stream is reset, no headers returned", __func__); + errno = ECONNRESET; + return NULL; + } + + if (!((stream->sm_bflags & SMBF_USE_HEADERS) + && (stream->stream_flags & STREAM_HAVE_UH))) + { + LSQ_INFO("%s: unexpected call, flags: 0x%X", __func__, + stream->stream_flags); + return NULL; + } + + if (!stream->uh) + { + LSQ_INFO("%s: headers unavailable (already fetched?)", __func__); + return NULL; + } + + hset = stream->uh->uh_hset; + stream->uh->uh_hset = NULL; + + uh = stream->uh; + stream->uh = uh->uh_next; + free(uh); + + if (stream->stream_flags & STREAM_HEAD_IN_FIN) + { + + stream->stream_flags |= STREAM_FIN_REACHED; + SM_HISTORY_APPEND(stream, SHE_REACH_FIN); + } + maybe_update_last_progress(stream); + LSQ_DEBUG("return header set"); + return hset; +} + + +void +lsquic_stream_set_stream_if (struct lsquic_stream *stream, + const struct lsquic_stream_if *stream_if, void *stream_if_ctx) +{ + SM_HISTORY_APPEND(stream, SHE_IF_SWITCH); + stream->stream_if = stream_if; + stream->sm_onnew_arg = stream_if_ctx; + LSQ_DEBUG("switched interface"); + assert(stream->stream_flags & STREAM_ONNEW_DONE); + stream->st_ctx = stream->stream_if->on_new_stream(stream->sm_onnew_arg, + stream); +} + + +static int +update_type_hist_and_check (const struct lsquic_stream *stream, + struct hq_filter *filter) +{ + switch (filter->hqfi_type) + { + case HQFT_HEADERS: + if (filter->hqfi_flags & HQFI_FLAG_TRAILER) + return -1; + if (filter->hqfi_flags & HQFI_FLAG_DATA) + filter->hqfi_flags |= HQFI_FLAG_TRAILER; + else + filter->hqfi_flags |= HQFI_FLAG_HEADER; + break; + case HQFT_DATA: + if ((filter->hqfi_flags & (HQFI_FLAG_HEADER + | HQFI_FLAG_TRAILER)) != HQFI_FLAG_HEADER) + return -1; + filter->hqfi_flags |= HQFI_FLAG_DATA; + break; + case HQFT_PUSH_PROMISE: + /* [draft-ietf-quic-http-24], Section 7 */ + if ((stream->id & SIT_MASK) == SIT_BIDI_CLIENT + && !(stream->sm_bflags & SMBF_SERVER)) + return 0; + else + return -1; + case HQFT_CANCEL_PUSH: + case HQFT_SETTINGS: + case HQFT_GOAWAY: + case HQFT_MAX_PUSH_ID: + /* [draft-ietf-quic-http-24], Section 7 */ + return -1; + case 2: /* HTTP/2 PRIORITY */ + case 6: /* HTTP/2 PING */ + case 8: /* HTTP/2 WINDOW_UPDATE */ + case 9: /* HTTP/2 CONTINUATION */ + /* [draft-ietf-quic-http-30], Section 7.2.8 */ + return -1; + case HQFT_PRIORITY_UPDATE_STREAM: + case HQFT_PRIORITY_UPDATE_PUSH: + if (stream->sm_bflags & SMBF_HTTP_PRIO) + /* If we know about Extensible HTTP Priorities, we should check + * that they do not arrive on any but the control stream: + */ + return -1; + else + /* On the other hand, if we do not support Priorities, treat it + * as an unknown frame: + */ + return 0; + default: + /* Ignore unknown frames */ + return 0; + } + + return 0; +} + + +int +lsquic_stream_header_is_pp (const struct lsquic_stream *stream) +{ + return stream->sm_hq_filter.hqfi_type == HQFT_PUSH_PROMISE; +} + + +int +lsquic_stream_header_is_trailer (const struct lsquic_stream *stream) +{ + return (stream->stream_flags & STREAM_HAVE_UH) + && stream->sm_hq_filter.hqfi_type == HQFT_HEADERS; +} + + +static void +verify_cl_on_new_data_frame (struct lsquic_stream *stream, + struct hq_filter *filter) +{ + struct lsquic_conn *lconn; + + stream->sm_data_in += filter->hqfi_left; + if (stream->sm_data_in > stream->sm_cont_len) + { + lconn = stream->conn_pub->lconn; + lconn->cn_if->ci_abort_error(lconn, 1, HEC_MESSAGE_ERROR, + "number of bytes in DATA frames of stream %"PRIu64" exceeds " + "content-length limit of %llu", stream->id, stream->sm_cont_len); + } +} + + +static size_t +hq_read (void *ctx, const unsigned char *buf, size_t sz, int fin) +{ + struct lsquic_stream *const stream = ctx; + struct hq_filter *const filter = &stream->sm_hq_filter; + const unsigned char *p = buf, *prev; + const unsigned char *const end = buf + sz; + struct lsquic_conn *lconn; + enum lsqpack_read_header_status rhs; + int s; + + while (p < end) + { + switch (filter->hqfi_state) + { + case HQFI_STATE_FRAME_HEADER_BEGIN: + filter->hqfi_vint2_state.vr2s_state = 0; + filter->hqfi_state = HQFI_STATE_FRAME_HEADER_CONTINUE; + /* fall-through */ + case HQFI_STATE_FRAME_HEADER_CONTINUE: + s = lsquic_varint_read_two(&p, end, &filter->hqfi_vint2_state); + if (s < 0) + break; + filter->hqfi_flags |= HQFI_FLAG_BEGIN; + filter->hqfi_state = HQFI_STATE_READING_PAYLOAD; +#if LSQUIC_WEBTRANSPORT_SERVER_SUPPORT + if(stream->conn_pub->enpub->enp_settings.es_webtransport_server) { + // 4.2. Bidirectional Streams, https://datatracker.ietf.org/doc/draft-ietf-webtrans-http3/05/ +#define WEBTRANSPORT_BIDI_STREAM_TYPE (0x41) + if(filter->hqfi_type == WEBTRANSPORT_BIDI_STREAM_TYPE) { + // check webtransport_session_stream_id availability as well SMBF_WEBTRANSPORT_SESSION_STREAM + // flag for webtransport_session_stream_id stream in app code + stream->webtransport_session_stream_id = filter->hqfi_webtransport_session_id; + stream->stream_flags |= SMBF_WEBTRANSPORT_CLIENT_BIDI_STREAM; + // disable header processing as we will not have any headers for this stream anymore + stream->sm_bflags &= ~SMBF_USE_HEADERS; + filter->hqfi_type = HQFT_DATA; + filter->hqfi_left = UINT64_MAX; // set data size infinite to keep processing till stream reset + goto end; + } + } +#endif + LSQ_DEBUG("HQ frame type 0x%"PRIX64" at offset %"PRIu64", size %"PRIu64, + filter->hqfi_type, stream->read_offset + (unsigned) (p - buf), + filter->hqfi_left); + if (0 != update_type_hist_and_check(stream, filter)) + { + lconn = stream->conn_pub->lconn; + filter->hqfi_flags |= HQFI_FLAG_ERROR; + LSQ_INFO("unexpected HTTP/3 frame sequence"); + lconn->cn_if->ci_abort_error(lconn, 1, HEC_FRAME_UNEXPECTED, + "unexpected HTTP/3 frame sequence on stream %"PRIu64, + stream->id); + goto end; + } + if (filter->hqfi_left > 0) + { + if (filter->hqfi_type == HQFT_DATA) + { + if (stream->sm_bflags & SMBF_VERIFY_CL) + verify_cl_on_new_data_frame(stream, filter); + goto end; + } + else if (filter->hqfi_type == HQFT_PUSH_PROMISE) + { + if (stream->sm_bflags & SMBF_SERVER) + { + lconn = stream->conn_pub->lconn; + lconn->cn_if->ci_abort_error(lconn, 1, + HEC_FRAME_UNEXPECTED, "Received PUSH_PROMISE frame " + "on stream %"PRIu64" (clients are not supposed to " + "send those)", stream->id); + goto end; + } + else + filter->hqfi_state = HQFI_STATE_PUSH_ID_BEGIN; + } + } + else + { + switch (filter->hqfi_type) + { + case HQFT_CANCEL_PUSH: + case HQFT_GOAWAY: + case HQFT_HEADERS: + case HQFT_MAX_PUSH_ID: + case HQFT_PUSH_PROMISE: + case HQFT_SETTINGS: + filter->hqfi_flags |= HQFI_FLAG_ERROR; + LSQ_INFO("HQ frame of type %"PRIu64" cannot be size 0", + filter->hqfi_type); + abort_connection(stream); /* XXX Overkill? */ + goto end; + default: + filter->hqfi_flags &= ~HQFI_FLAG_BEGIN; + filter->hqfi_state = HQFI_STATE_FRAME_HEADER_BEGIN; + break; + } + } + break; + case HQFI_STATE_PUSH_ID_BEGIN: + filter->hqfi_vint1_state.pos = 0; + filter->hqfi_state = HQFI_STATE_PUSH_ID_CONTINUE; + /* Fall-through */ + case HQFI_STATE_PUSH_ID_CONTINUE: + prev = p; + s = lsquic_varint_read_nb(&p, end, &filter->hqfi_vint1_state); + filter->hqfi_left -= p - prev; + if (s == 0) + filter->hqfi_state = HQFI_STATE_READING_PAYLOAD; + /* A bit of a white lie here */ + break; + case HQFI_STATE_READING_PAYLOAD: + if (filter->hqfi_type == HQFT_DATA) + goto end; + sz = filter->hqfi_left; + if (sz > (uintptr_t) (end - p)) + sz = (uintptr_t) (end - p); + switch (filter->hqfi_type) + { + case HQFT_HEADERS: + case HQFT_PUSH_PROMISE: + prev = p; + if (filter->hqfi_flags & HQFI_FLAG_BEGIN) + { + filter->hqfi_flags &= ~HQFI_FLAG_BEGIN; + rhs = lsquic_qdh_header_in_begin( + stream->conn_pub->u.ietf.qdh, + stream, filter->hqfi_left, &p, sz); + } + else + rhs = lsquic_qdh_header_in_continue( + stream->conn_pub->u.ietf.qdh, stream, &p, sz); + assert(p > prev || LQRHS_ERROR == rhs); + filter->hqfi_left -= p - prev; + if (filter->hqfi_left == 0) + filter->hqfi_state = HQFI_STATE_FRAME_HEADER_BEGIN; + switch (rhs) + { + case LQRHS_DONE: + assert(filter->hqfi_left == 0); + stream->sm_qflags &= ~SMQF_QPACK_DEC; + break; + case LQRHS_NEED: + stream->sm_qflags |= SMQF_QPACK_DEC; + break; + case LQRHS_BLOCKED: + stream->sm_qflags |= SMQF_QPACK_DEC; + filter->hqfi_flags |= HQFI_FLAG_BLOCKED; + goto end; + default: + assert(LQRHS_ERROR == rhs); + stream->sm_qflags &= ~SMQF_QPACK_DEC; + filter->hqfi_flags |= HQFI_FLAG_ERROR; + LSQ_INFO("error processing header block"); + abort_connection(stream); /* XXX Overkill? */ + goto end; + } + break; + default: + /* Simply skip unknown frame type payload for now */ + filter->hqfi_flags &= ~HQFI_FLAG_BEGIN; + p += sz; + filter->hqfi_left -= sz; + if (filter->hqfi_left == 0) + filter->hqfi_state = HQFI_STATE_FRAME_HEADER_BEGIN; + break; + } + break; + default: + assert(0); + goto end; + } + } + + end: + if (fin && p == end && filter->hqfi_state != HQFI_STATE_FRAME_HEADER_BEGIN) + { + LSQ_INFO("FIN at unexpected place in filter; state: %u", + filter->hqfi_state); + filter->hqfi_flags |= HQFI_FLAG_ERROR; +/* From [draft-ietf-quic-http-28] Section 7.1: + " When a stream terminates cleanly, if the last frame on the stream was + " truncated, this MUST be treated as a connection error (Section 8) of + " type H3_FRAME_ERROR. Streams which terminate abruptly may be reset + " at any point in a frame. + */ + lconn = stream->conn_pub->lconn; + lconn->cn_if->ci_abort_error(lconn, 1, HEC_FRAME_ERROR, + "last HTTP/3 frame on stream %"PRIu64" was truncated", stream->id); + } + + return p - buf; +} + + +static int +hq_filter_readable_now (const struct lsquic_stream *stream) +{ + const struct hq_filter *const filter = &stream->sm_hq_filter; + + return (filter->hqfi_type == HQFT_DATA + && filter->hqfi_state == HQFI_STATE_READING_PAYLOAD) + || (filter->hqfi_flags & HQFI_FLAG_ERROR) + || stream->uh + || (stream->stream_flags & STREAM_FIN_REACHED) + ; +} + + +static int +hq_filter_readable (struct lsquic_stream *stream) +{ + struct hq_filter *const filter = &stream->sm_hq_filter; + ssize_t nread; + + if (filter->hqfi_flags & HQFI_FLAG_BLOCKED) + return 0; + + if (!hq_filter_readable_now(stream)) + { + nread = read_data_frames(stream, 0, hq_read, stream); + if (nread <= 0) + { + if (nread < 0) + { + filter->hqfi_flags |= HQFI_FLAG_ERROR; + abort_connection(stream); /* XXX Overkill? */ + return 1; /* Collect error */ + } + return 0; + } + } + + return hq_filter_readable_now(stream); +} + + +static size_t +hq_filter_df (struct lsquic_stream *stream, struct data_frame *data_frame) +{ + struct hq_filter *const filter = &stream->sm_hq_filter; + size_t nr; + + if (!(filter->hqfi_state == HQFI_STATE_READING_PAYLOAD + && filter->hqfi_type == HQFT_DATA)) + { + nr = hq_read(stream, data_frame->df_data + data_frame->df_read_off, + data_frame->df_size - data_frame->df_read_off, + data_frame->df_fin); + if (nr) + { + stream->read_offset += nr; + stream_consumed_bytes(stream); + } + } + else + nr = 0; + + if (0 == (filter->hqfi_flags & HQFI_FLAG_ERROR)) + { + data_frame->df_read_off += nr; + if (filter->hqfi_state == HQFI_STATE_READING_PAYLOAD + && filter->hqfi_type == HQFT_DATA) + return MIN(filter->hqfi_left, + (unsigned) data_frame->df_size - data_frame->df_read_off); + else + { + if (!((filter->hqfi_type == HQFT_HEADERS + || filter->hqfi_type == HQFT_PUSH_PROMISE) + && (filter->hqfi_flags & HQFI_FLAG_BLOCKED))) + assert(data_frame->df_read_off == data_frame->df_size); + return 0; + } + } + else + { + data_frame->df_read_off = data_frame->df_size; + return 0; + } +} + + +static void +hq_decr_left (struct lsquic_stream *stream, size_t read) +{ + struct hq_filter *const filter = &stream->sm_hq_filter; + + if (read) + { + assert(filter->hqfi_state == HQFI_STATE_READING_PAYLOAD + && filter->hqfi_type == HQFT_DATA); + assert(read <= filter->hqfi_left); + } + + filter->hqfi_left -= read; + if (0 == filter->hqfi_left) + filter->hqfi_state = HQFI_STATE_FRAME_HEADER_BEGIN; +} + + +/* These are IETF QUIC states */ +enum stream_state_sending +lsquic_stream_sending_state (const struct lsquic_stream *stream) +{ + if (0 == (stream->stream_flags & STREAM_RST_SENT)) + { + if (stream->stream_flags & STREAM_FIN_SENT) + { + if (stream->n_unacked) + return SSS_DATA_SENT; + else + return SSS_DATA_RECVD; + } + else + { + if (stream->tosend_off + || (stream->stream_flags & STREAM_BLOCKED_SENT)) + return SSS_SEND; + else + return SSS_READY; + } + } + else if (stream->stream_flags & STREAM_RST_ACKED) + return SSS_RESET_RECVD; + else + return SSS_RESET_SENT; +} + + +const char *const lsquic_sss2str[] = +{ + [SSS_READY] = "Ready", + [SSS_SEND] = "Send", + [SSS_DATA_SENT] = "Data Sent", + [SSS_RESET_SENT] = "Reset Sent", + [SSS_DATA_RECVD] = "Data Recvd", + [SSS_RESET_RECVD] = "Reset Recvd", +}; + + +const char *const lsquic_ssr2str[] = +{ + [SSR_RECV] = "Recv", + [SSR_SIZE_KNOWN] = "Size Known", + [SSR_DATA_RECVD] = "Data Recvd", + [SSR_RESET_RECVD] = "Reset Recvd", + [SSR_DATA_READ] = "Data Read", + [SSR_RESET_READ] = "Reset Read", +}; + + +/* These are IETF QUIC states */ +enum stream_state_receiving +lsquic_stream_receiving_state (struct lsquic_stream *stream) +{ + uint64_t n_bytes; + + if (0 == (stream->stream_flags & STREAM_RST_RECVD)) + { + if (0 == (stream->stream_flags & STREAM_FIN_RECVD)) + return SSR_RECV; + if (stream->stream_flags & STREAM_FIN_REACHED) + return SSR_DATA_READ; + if (0 == (stream->stream_flags & STREAM_DATA_RECVD)) + { + n_bytes = stream->data_in->di_if->di_readable_bytes( + stream->data_in, stream->read_offset); + if (stream->read_offset + n_bytes == stream->sm_fin_off) + { + stream->stream_flags |= STREAM_DATA_RECVD; + return SSR_DATA_RECVD; + } + else + return SSR_SIZE_KNOWN; + } + else + return SSR_DATA_RECVD; + } + else if (stream->stream_flags & STREAM_RST_READ) + return SSR_RESET_READ; + else + return SSR_RESET_RECVD; +} + + +void +lsquic_stream_qdec_unblocked (struct lsquic_stream *stream) +{ + struct hq_filter *const filter = &stream->sm_hq_filter; + + assert(stream->sm_qflags & SMQF_QPACK_DEC); + assert(filter->hqfi_flags & HQFI_FLAG_BLOCKED); + + filter->hqfi_flags &= ~HQFI_FLAG_BLOCKED; + stream->conn_pub->cp_flags |= CP_STREAM_UNBLOCKED; + LSQ_DEBUG("QPACK decoder unblocked"); +} + + +int +lsquic_stream_is_rejected (const struct lsquic_stream *stream) +{ + return stream->stream_flags & STREAM_SS_RECVD; +} + + +int +lsquic_stream_can_push (const struct lsquic_stream *stream) +{ + if (lsquic_stream_is_pushed(stream)) + return 0; + else if (stream->sm_bflags & SMBF_IETF) + return (stream->sm_bflags & SMBF_USE_HEADERS) + && !(stream->stream_flags & (STREAM_HEADERS_SENT|STREAM_NOPUSH)) + && stream->sm_send_headers_state == SSHS_BEGIN + ; + else + return 1; +} + + +static size_t +pp_reader_read (void *lsqr_ctx, void *buf, size_t count) +{ + struct push_promise *const promise = lsqr_ctx; + unsigned char *dst = buf; + unsigned char *const end = dst + count; + size_t len; + + while (dst < end) + { + switch (promise->pp_write_state) + { + case PPWS_ID0: + case PPWS_ID1: + case PPWS_ID2: + case PPWS_ID3: + case PPWS_ID4: + case PPWS_ID5: + case PPWS_ID6: + case PPWS_ID7: + *dst++ = promise->pp_encoded_push_id[promise->pp_write_state]; + ++promise->pp_write_state; + break; + case PPWS_PFX0: + *dst++ = 0; + ++promise->pp_write_state; + break; + case PPWS_PFX1: + *dst++ = 0; + ++promise->pp_write_state; + break; + case PPWS_HBLOCK: + len = MIN(promise->pp_content_len - promise->pp_write_off, + (size_t) (end - dst)); + memcpy(dst, promise->pp_content_buf + promise->pp_write_off, + len); + promise->pp_write_off += len; + dst += len; + if (promise->pp_content_len == promise->pp_write_off) + { + LSQ_LOG1(LSQ_LOG_DEBUG, "finish writing push promise %"PRIu64 + ": reset push state", promise->pp_id); + promise->pp_write_state = PPWS_DONE; + } + goto end; + default: + goto end; + } + } + + end: + return dst - (unsigned char *) buf; +} + + +static size_t +pp_reader_size (void *lsqr_ctx) +{ + struct push_promise *const promise = lsqr_ctx; + size_t size; + + size = 0; + switch (promise->pp_write_state) + { + case PPWS_ID0: + case PPWS_ID1: + case PPWS_ID2: + case PPWS_ID3: + case PPWS_ID4: + case PPWS_ID5: + case PPWS_ID6: + case PPWS_ID7: + size += 8 - promise->pp_write_state; + /* fall-through */ + case PPWS_PFX0: + ++size; + /* fall-through */ + case PPWS_PFX1: + ++size; + /* fall-through */ + case PPWS_HBLOCK: + size += promise->pp_content_len - promise->pp_write_off; + break; + default: + break; + } + + return size; +} + + +static void +init_pp_reader (struct push_promise *promise, struct lsquic_reader *reader) +{ + reader->lsqr_read = pp_reader_read; + reader->lsqr_size = pp_reader_size; + reader->lsqr_ctx = promise; +} + + +static void +on_write_pp_wrapper (struct lsquic_stream *stream, lsquic_stream_ctx_t *h) +{ + struct lsquic_reader pp_reader; + struct push_promise *promise; + ssize_t nw; + int want_write; + + assert(stream_is_pushing_promise(stream)); + + promise = SLIST_FIRST(&stream->sm_promises); + init_pp_reader(promise, &pp_reader); + nw = stream_write(stream, &pp_reader, SWO_BUFFER); + if (nw > 0) + { + LSQ_DEBUG("wrote %zd bytes more of push promise (%s)", + nw, promise->pp_write_state == PPWS_DONE ? "done" : "not done"); + if (promise->pp_write_state == PPWS_DONE) + { + stream->stream_flags &= ~STREAM_PUSHING; + /* Restore want_write flag */ + want_write = !!(stream->sm_qflags & SMQF_WANT_WRITE); + if (want_write != stream->sm_saved_want_write) + (void) lsquic_stream_wantwrite(stream, + stream->sm_saved_want_write); + } + } + else if (nw < 0) + { + LSQ_WARN("could not write push promise (wrapper)"); + /* XXX What should happen if we hit an error? TODO */ + } +} + + +/* Success means that the push promise has been placed on sm_promises list and + * the stream now owns it. Failure means that the push promise should be + * destroyed by the caller. + * + * A push promise is written immediately. If it cannot be written to packets + * or buffered whole, the stream is marked as unable to push further promises. + */ +int +lsquic_stream_push_promise (struct lsquic_stream *stream, + struct push_promise *promise) +{ + struct lsquic_reader pp_reader; + struct stream_hq_frame *shf; + unsigned bits, len; + ssize_t nw; + + assert(stream->sm_bflags & SMBF_IETF); + + if (stream->stream_flags & STREAM_NOPUSH) + return -1; + + bits = vint_val2bits(promise->pp_id); + len = 1 << bits; + promise->pp_write_state = 8 - len; + vint_write(promise->pp_encoded_push_id + 8 - len, promise->pp_id, + bits, 1 << bits); + + shf = stream_activate_hq_frame(stream, + stream->sm_payload + stream->sm_n_buffered, HQFT_PUSH_PROMISE, + SHF_FIXED_SIZE, pp_reader_size(promise)); + if (!shf) + return -1; + + stream->stream_flags |= STREAM_PUSHING; + + init_pp_reader(promise, &pp_reader); +#ifdef FIU_ENABLE + if (fiu_fail("stream/fail_initial_pp_write")) + { + LSQ_NOTICE("%s: failed to write push promise (fiu)", __func__); + nw = -1; + } + else +#endif + nw = stream_write(stream, &pp_reader, SWO_BUFFER); + if (nw > 0) + { + SLIST_INSERT_HEAD(&stream->sm_promises, promise, pp_next); + ++promise->pp_refcnt; + if (promise->pp_write_state == PPWS_DONE) + { + LSQ_DEBUG("fully wrote promise %"PRIu64, promise->pp_id); + stream->stream_flags &= ~STREAM_PUSHING; + } + else + { + LSQ_DEBUG("partially wrote promise %"PRIu64" (state: %d, off: %u)" + ", disable further pushing", promise->pp_id, + promise->pp_write_state, promise->pp_write_off); + stream->stream_flags |= STREAM_NOPUSH; + stream->sm_saved_want_write = + !!(stream->sm_qflags & SMQF_WANT_WRITE); + lsquic_stream_flush(stream); + stream_wantwrite(stream, 1); + } + return 0; + } + else + { + if (nw < 0) + LSQ_WARN("failure writing push promise"); + stream_hq_frame_put(stream, shf); + stream->stream_flags |= STREAM_NOPUSH; + stream->stream_flags &= ~STREAM_PUSHING; + return -1; + } +} + + +int +lsquic_stream_verify_len (struct lsquic_stream *stream, + unsigned long long cont_len) +{ + if ((stream->sm_bflags & (SMBF_IETF|SMBF_USE_HEADERS)) + == (SMBF_IETF|SMBF_USE_HEADERS)) + { + stream->sm_cont_len = cont_len; + stream->sm_bflags |= SMBF_VERIFY_CL; + LSQ_DEBUG("will verify that incoming DATA frames have %llu bytes", + cont_len); + return 0; + } + else + return -1; +} + + +int +lsquic_stream_get_http_prio (struct lsquic_stream *stream, + struct lsquic_ext_http_prio *ehp) +{ + if (stream->sm_bflags & SMBF_HTTP_PRIO) + { + ehp->urgency = MIN(stream->sm_priority, LSQUIC_MAX_HTTP_URGENCY); + ehp->incremental = !!(stream->sm_bflags & SMBF_INCREMENTAL); + return 0; + } + else + return -1; +} + + +int +lsquic_stream_set_http_prio (struct lsquic_stream *stream, + const struct lsquic_ext_http_prio *ehp) +{ + if (stream->sm_bflags & SMBF_HTTP_PRIO) + { + if (ehp->urgency > LSQUIC_MAX_HTTP_URGENCY) + { + LSQ_INFO("%s: invalid urgency: %hhu", __func__, ehp->urgency); + return -1; + } + stream->sm_priority = ehp->urgency; + if (ehp->incremental) + stream->sm_bflags |= SMBF_INCREMENTAL; + else + stream->sm_bflags &= ~SMBF_INCREMENTAL; + stream->sm_bflags |= SMBF_HPRIO_SET; + LSQ_DEBUG("set urgency to %hhu, incremental to %hhd", ehp->urgency, + ehp->incremental); + if (!(stream->sm_bflags & SMBF_SERVER)) + return send_priority_ietf(stream); + else + return 0; + } + else + return -1; +} + + +int +lsquic_stream_has_unacked_data (struct lsquic_stream *stream) +{ + return stream->n_unacked > 0 || stream->sm_n_buffered > 0; +} diff --git a/external/lsquic/src/liblsquic/lsquic_stream.h b/external/lsquic/src/liblsquic/lsquic_stream.h new file mode 100644 index 0000000..e1240d9 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_stream.h @@ -0,0 +1,682 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_STREAM_H +#define LSQUIC_STREAM_H + +#define LSQUIC_STREAM_DEFAULT_PRIO 16 /* RFC 7540, Section 5.3.5 */ + + +struct lsquic_stream_if; +struct lsquic_stream_ctx; +struct lsquic_conn_public; +struct stream_frame; +struct uncompressed_headers; +enum enc_level; +enum swtp_status; +struct frame_gen_ctx; +struct data_frame; +enum quic_frame_type; +struct push_promise; +union hblock_ctx; +struct lsquic_packet_out; +struct lsquic_send_ctl; +struct network_path; + +TAILQ_HEAD(lsquic_streams_tailq, lsquic_stream); + + +#ifndef LSQUIC_KEEP_STREAM_HISTORY +# define LSQUIC_KEEP_STREAM_HISTORY 1 +#endif + + +#if LSQUIC_KEEP_STREAM_HISTORY +#define SM_HIST_BITS 6 +#define SM_HIST_IDX_MASK ((1 << SM_HIST_BITS) - 1) +typedef unsigned char sm_hist_idx_t; +#endif + + +/* + * +----------+----------------------------------+ + * | Low Bits | Stream Type | + * +----------+----------------------------------+ + * | 0x0 | Client-Initiated, Bidirectional | + * | | | + * | 0x1 | Server-Initiated, Bidirectional | + * | | | + * | 0x2 | Client-Initiated, Unidirectional | + * | | | + * | 0x3 | Server-Initiated, Unidirectional | + * +----------+----------------------------------+ + */ + +enum stream_id_type +{ + SIT_BIDI_CLIENT, + SIT_BIDI_SERVER, + SIT_UNI_CLIENT, + SIT_UNI_SERVER, + N_SITS +}; + +#define SIT_MASK (N_SITS - 1) + +#define SIT_SHIFT 2 +#define SD_SHIFT 1 + +enum stream_dir { SD_BIDI, SD_UNI, N_SDS }; + + +struct stream_hq_frame +{ + STAILQ_ENTRY(stream_hq_frame) + shf_next; + /* At which point in the stream (sm_payload) to insert the HQ frame. */ + uint64_t shf_off; + union { + /* Points to the frame if SHF_FIXED_SIZE is not set */ + unsigned char *frame_ptr; + /* If SHF_FIXED_SIZE is set, the size of the frame to follow. + * Non-fixed frame size gets calculated using sm_payload when they + * are closed. + */ + size_t frame_size; + } shf_u; +#define shf_frame_ptr shf_u.frame_ptr +#define shf_frame_size shf_u.frame_size + enum hq_frame_type shf_frame_type; + enum shf_flags { + SHF_TWO_BYTES = 1 << 0, /* Use two byte to encode frame length */ + SHF_FIXED_SIZE = 1 << 1, /* Payload size guaranteed */ + SHF_ACTIVE = 1 << 2, /* On sm_hq_frames list */ + SHF_WRITTEN = 1 << 3, /* Framing bytes have been packetized */ + SHF_CC_PAID = 1 << 4, /* Paid connection cap */ + SHF_PHANTOM = 1 << 5, /* Phantom frame headers are not written */ + } shf_flags:8; +}; + + +struct hq_filter +{ + struct varint_read2_state hqfi_vint2_state; + /* No need to copy the values: use it directly */ +#define hqfi_left hqfi_vint2_state.vr2s_two +#if LSQUIC_WEBTRANSPORT_SERVER_SUPPORT +#define hqfi_webtransport_session_id hqfi_vint2_state.vr2s_two +#endif +#define hqfi_type hqfi_vint2_state.vr2s_one + struct varint_read_state hqfi_vint1_state; +#define hqfi_push_id hqfi_vint1_state.value + enum { + HQFI_FLAG_UNUSED_0 = 1 << 0, + HQFI_FLAG_ERROR = 1 << 1, + HQFI_FLAG_BEGIN = 1 << 2, + HQFI_FLAG_BLOCKED = 1 << 3, + HQFI_FLAG_HEADER = 1 << 4, + HQFI_FLAG_DATA = 1 << 5, + HQFI_FLAG_TRAILER = 1 << 6, + } hqfi_flags:8; + enum { + HQFI_STATE_FRAME_HEADER_BEGIN, + HQFI_STATE_FRAME_HEADER_CONTINUE, + HQFI_STATE_READING_PAYLOAD, + HQFI_STATE_PUSH_ID_BEGIN, + HQFI_STATE_PUSH_ID_CONTINUE, + } hqfi_state:8; +}; + + +struct stream_filter_if +{ + int (*sfi_readable)(struct lsquic_stream *); + size_t (*sfi_filter_df)(struct lsquic_stream *, struct data_frame *); + void (*sfi_decr_left)(struct lsquic_stream *, size_t); +}; + + +/* These flags indicate which queues -- or other entities -- currently + * reference the stream. + */ +enum stream_q_flags +{ + /* read_streams: */ + SMQF_WANT_READ = 1 << 0, + + /* write_streams: */ +#define SMQF_WRITE_Q_FLAGS (SMQF_WANT_FLUSH|SMQF_WANT_WRITE) + SMQF_WANT_WRITE = 1 << 1, + SMQF_WANT_FLUSH = 1 << 2, /* Flush until sm_flush_to is hit */ + + /* There are more than one reason that a stream may be put onto + * connections's sending_streams queue. Note that writing STREAM + * frames is done separately. + */ +#define SMQF_SENDING_FLAGS (SMQF_SEND_WUF|SMQF_SEND_RST|SMQF_SEND_BLOCKED\ + |SMQF_SEND_STOP_SENDING) + /* sending_streams: */ + SMQF_SEND_WUF = 1 << 3, /* WUF: Window Update Frame */ + SMQF_SEND_BLOCKED = 1 << 4, + SMQF_SEND_RST = 1 << 5, /* Error: want to send RST_STREAM */ + SMQF_SEND_STOP_SENDING = 1 << 10, + + /* The equivalent of WINDOW_UPDATE frame for streams in IETF QUIC is + * the MAX_STREAM_DATA frame. Define an alias for use in the IETF + * QUIC code: + */ +#define SMQF_SEND_MAX_STREAM_DATA SMQF_SEND_WUF + +#define SMQF_SERVICE_FLAGS (SMQF_CALL_ONCLOSE|SMQF_FREE_STREAM|SMQF_ABORT_CONN) + SMQF_CALL_ONCLOSE = 1 << 6, + SMQF_FREE_STREAM = 1 << 7, + SMQF_ABORT_CONN = 1 << 8, /* Unrecoverable error occurred */ + + SMQF_QPACK_DEC = 1 << 9, /* QPACK decoder handler is holding a reference to this stream */ + + /* The stream can reference itself, preventing its own destruction: */ +#define SMQF_SELF_FLAGS SMQF_WAIT_FIN_OFF + SMQF_WAIT_FIN_OFF = 1 << 11, /* Waiting for final offset: FIN or RST */ +}; + + +/* Stream behavior flags */ +enum stream_b_flags +{ + SMBF_SERVER = 1 << 0, + SMBF_IETF = 1 << 1, + SMBF_USE_HEADERS = 1 << 2, + SMBF_CRYPTO = 1 << 3, /* Crypto stream: applies to both gQUIC and IETF QUIC */ + SMBF_CRITICAL = 1 << 4, /* This is a critical stream */ + SMBF_AUTOSWITCH = 1 << 5, + SMBF_RW_ONCE = 1 << 6, /* When set, read/write events are dispatched once per call */ + SMBF_CONN_LIMITED = 1 << 7, + SMBF_HEADERS = 1 << 8, /* Headers stream */ + SMBF_VERIFY_CL = 1 << 9, /* Verify content-length (stored in sm_cont_len) */ + SMBF_HTTP_PRIO = 1 <<10, /* Extensible HTTP Priorities are used */ + SMBF_INCREMENTAL = 1 <<11, /* Value of the "incremental" HTTP Priority parameter */ + SMBF_HPRIO_SET = 1 <<12, /* Extensible HTTP Priorities have been set once */ + SMBF_DELAY_ONCLOSE= 1 <<13, /* Delay calling on_close() until peer ACKs everything */ +#if LSQUIC_WEBTRANSPORT_SERVER_SUPPORT + SMBF_WEBTRANSPORT_SESSION_STREAM = 1 <<14, /* WEBTRANSPORT session stream */ + SMBF_WEBTRANSPORT_CLIENT_BIDI_STREAM = 1 <<15, /* WEBTRANSPORT client initiated bidi stream */ +#define N_SMBF_FLAGS 16 +#else +#define N_SMBF_FLAGS 14 +#endif +}; + + +/* Stream "callback done" flags */ +/* TODO: move STREAM.*DONE flags from stream_flags here */ +enum stream_d_flags +{ + SMDF_ONRESET0 = 1 << 0, /* Called on_reset(0) */ + SMDF_ONRESET1 = 1 << 1, /* Called on_reset(1) */ +}; + + +enum stream_flags { + STREAM_FIN_RECVD = 1 << 0, /* Received STREAM frame with FIN bit set */ + STREAM_RST_RECVD = 1 << 1, /* Received RST frame */ + STREAM_LAST_WRITE_OK= 1 << 2, /* Used to break out of write event dispatch loop */ + STREAM_U_READ_DONE = 1 << 3, /* User is done reading (shutdown was called) */ + STREAM_U_WRITE_DONE = 1 << 4, /* User is done writing (shutdown was called) */ + STREAM_FIN_SENT = 1 << 5, /* FIN was written to network */ + STREAM_RST_SENT = 1 << 6, /* RST_STREAM was written to network */ + STREAM_FIN_REACHED = 1 << 7, /* User read data up to FIN */ + STREAM_FINISHED = 1 << 8, /* Stream is finished */ + STREAM_ONCLOSE_DONE = 1 << 9, /* on_close has been called */ + STREAM_CACHED_FRAME = 1 << 10, /* If set, sm_has_frame can be used */ + STREAM_HEADERS_SENT = 1 << 11, + STREAM_HAVE_UH = 1 << 12, /* Have uncompressed headers */ + STREAM_ENCODER_DEP = 1 << 13, /* Encoder dependency: flush (IETF only) */ + STREAM_HEAD_IN_FIN = 1 << 14, /* Incoming headers has FIN bit set */ + STREAM_FRAMES_ELIDED= 1 << 15, + STREAM_FORCE_FINISH = 1 << 16, /* Replaces FIN sent and received */ + STREAM_ONNEW_DONE = 1 << 17, /* on_new_stream has been called */ + STREAM_PUSHING = 1 << 18, + STREAM_NOPUSH = 1 << 19, /* Disallow further push promises */ + STREAM_GOAWAY_IN = 1 << 20, /* Incoming GOAWAY has been processed */ + STREAM_SS_SENT = 1 << 21, /* STOP_SENDING sent */ + STREAM_RST_ACKED = 1 << 22, /* Packet containing RST has been acked */ + STREAM_BLOCKED_SENT = 1 << 23, /* Stays set once a STREAM_BLOCKED frame is sent */ + STREAM_RST_READ = 1 << 24, /* User code collected the error */ + STREAM_DATA_RECVD = 1 << 25, /* Cache stream state calculation */ + STREAM_UNUSED26 = 1 << 26, /* Unused */ + STREAM_HDRS_FLUSHED = 1 << 27, /* Only used in buffered packets mode */ + STREAM_SS_RECVD = 1 << 28, /* Received STOP_SENDING frame */ + STREAM_DELAYED_SW = 1 << 29, /* Delayed shutdown_write call */ +}; + + +/* By keeping this number low, we make sure that the code to allocate HQ + * frames dynamically gets exercised whenever push promises are sent. + */ +#define NUM_ALLOCED_HQ_FRAMES 2 + + +struct lsquic_stream +{ + struct lsquic_hash_elem sm_hash_el; + lsquic_stream_id_t id; + enum stream_flags stream_flags; + enum stream_b_flags sm_bflags; + enum stream_q_flags sm_qflags; + unsigned n_unacked; + + const struct lsquic_stream_if *stream_if; + struct lsquic_stream_ctx *st_ctx; + struct lsquic_conn_public *conn_pub; + TAILQ_ENTRY(lsquic_stream) next_send_stream, next_read_stream, + next_write_stream, next_service_stream, + next_prio_stream; + + uint64_t tosend_off; + uint64_t sm_payload; /* Not counting HQ frames */ + uint64_t max_send_off; + uint64_t sm_last_recv_off; + uint64_t error_code; + + /* From the network, we get frames, which we keep on a list ordered + * by offset. + */ + struct data_in *data_in; + uint64_t read_offset; + lsquic_sfcw_t fc; + + /* List of active HQ frames */ + STAILQ_HEAD(, stream_hq_frame) sm_hq_frames; + + /* For efficiency, several frames are allocated as part of the stream + * itself. If more frames are needed, they are allocated. + */ + struct stream_hq_frame sm_hq_frame_arr[NUM_ALLOCED_HQ_FRAMES]; + + struct hq_filter sm_hq_filter; + + /* Optional tap for pwritev undo */ + struct hq_arr *sm_hq_arr; + + /* We can safely use sm_hq_filter */ +#define sm_uni_type_state sm_hq_filter.hqfi_vint2_state.vr2s_varint_state + + /** If @ref SMQF_WANT_FLUSH is set, flush until this offset. */ + uint64_t sm_flush_to; + + /** + * If @ref SMQF_WANT_FLUSH is set, this indicates payload offset + * to flush to. Used to adjust @ref sm_flush_to when H3 frame + * size grows. + */ + uint64_t sm_flush_to_payload; + + /* Last offset sent in BLOCKED frame */ + uint64_t blocked_off; + + struct uncompressed_headers *uh, + *push_req; + union hblock_ctx *sm_hblock_ctx; + + unsigned char *sm_buf; + void *sm_onnew_arg; + + unsigned char *sm_header_block; + uint64_t sm_hb_compl; + + /* Valid if STREAM_FIN_RECVD is set: */ + uint64_t sm_fin_off; + + /* A stream may be generating STREAM or CRYPTO frames */ + size_t (*sm_frame_header_sz)( + const struct lsquic_stream *, unsigned); + enum swtp_status (*sm_write_to_packet)(struct frame_gen_ctx *, + const size_t); + size_t (*sm_write_avail)(struct lsquic_stream *); + int (*sm_readable)(struct lsquic_stream *); + + struct lsquic_packet_out * (*sm_get_packet_for_stream)( + struct lsquic_send_ctl *, + unsigned, const struct network_path *, + const struct lsquic_stream *); + + /* This element is optional */ + const struct stream_filter_if *sm_sfi; + + /* sm_promise and sm_promises are never used at the same time and can + * be combined into a union should space in this struct become tight. + */ + /* Push promise that engendered this push stream */ + struct push_promise *sm_promise; + + /* Push promises sent on this stream */ + SLIST_HEAD(, push_promise) sm_promises; + + uint64_t sm_last_frame_off; + +#ifndef NDEBUG + /* Last time stream made progress */ + lsquic_time_t sm_last_prog; +#endif + + /* Content length specified in incoming `content-length' header field. + * Used to verify size of DATA frames. + */ + unsigned long long sm_cont_len; + /* Sum of bytes in all incoming DATA frames. Used for verification. */ + unsigned long long sm_data_in; + + /* How much data there is in sm_header_block and how much of it has been + * sent: + */ + unsigned sm_hblock_sz, + sm_hblock_off; + + unsigned short sm_n_buffered; /* Amount of data in sm_buf */ + unsigned short sm_n_allocated; /* Size of sm_buf */ + + /* If SMBF_HTTP_PRIO is set, the priority is used to represent the + * Extensible Priority urgency, which is in the range [0, 7]. + */ + unsigned char sm_priority; /* 0: high; 255: low */ + unsigned char sm_enc_level; + enum { + SSHS_BEGIN, /* Nothing has happened yet */ + SSHS_ENC_SENDING, /* Sending encoder stream data */ + SSHS_HBLOCK_SENDING,/* Sending header block data */ + } sm_send_headers_state:8; + enum stream_d_flags sm_dflags:8; + signed char sm_saved_want_write; + signed char sm_has_frame; +#if LSQUIC_WEBTRANSPORT_SERVER_SUPPORT + lsquic_stream_id_t webtransport_session_stream_id; +#endif +#if LSQUIC_KEEP_STREAM_HISTORY + sm_hist_idx_t sm_hist_idx; +#endif + +#if LSQUIC_KEEP_STREAM_HISTORY + /* Stream history: see enum stream_history_event */ + unsigned char sm_hist_buf[ 1 << SM_HIST_BITS ]; +#endif +}; + + +enum stream_ctor_flags +{ + SCF_CALL_ON_NEW = (1 << (N_SMBF_FLAGS + 0)), /* Call on_new_stream() immediately */ + SCF_USE_DI_HASH = (1 << (N_SMBF_FLAGS + 1)), /* Use hash-based data input. If not set, + * the nocopy data input is used. + */ + SCF_CRYPTO_FRAMES = (1 << (N_SMBF_FLAGS + 2)), /* Write CRYPTO frames */ + SCF_DI_AUTOSWITCH = SMBF_AUTOSWITCH, /* Automatically switch between nocopy + * and hash-based to data input for optimal + * performance. + */ + SCF_DISP_RW_ONCE = SMBF_RW_ONCE, + SCF_CRITICAL = SMBF_CRITICAL, /* This is a critical stream */ + SCF_IETF = SMBF_IETF, + SCF_HTTP = SMBF_USE_HEADERS, + SCF_CRYPTO = SMBF_CRYPTO, + SCF_HEADERS = SMBF_HEADERS, + SCF_HTTP_PRIO = SMBF_HTTP_PRIO, + SCF_DELAY_ONCLOSE = SMBF_DELAY_ONCLOSE, +}; + + +lsquic_stream_t * +lsquic_stream_new (lsquic_stream_id_t id, struct lsquic_conn_public *, + const struct lsquic_stream_if *, void *stream_if_ctx, + unsigned initial_sfrw, uint64_t initial_send_off, + enum stream_ctor_flags); + +struct lsquic_stream * +lsquic_stream_new_crypto (enum enc_level, + struct lsquic_conn_public *conn_pub, + const struct lsquic_stream_if *stream_if, void *stream_if_ctx, + enum stream_ctor_flags ctor_flags); + +void +lsquic_stream_call_on_new (lsquic_stream_t *); + +void +lsquic_stream_destroy (lsquic_stream_t *); + +/* True if either read or write side of the stream has been reset */ +static inline unsigned +lsquic_stream_is_reset (const lsquic_stream_t *stream) +{ + return (stream->stream_flags & + (STREAM_RST_RECVD|STREAM_RST_SENT|STREAM_SS_RECVD)) + || (stream->sm_qflags & SMQF_SEND_RST); +} + +int +lsquic_stream_is_write_reset (const struct lsquic_stream *); + +/* Data that from the network gets inserted into the stream using + * lsquic_stream_frame_in() function. Returns 0 on success, -1 on + * failure. The latter may be caused by flow control violation or + * invalid stream frame data, e.g. overlapping segments. + * + * Note that the caller gives up control of `frame' no matter + * what this function returns. + * + * This data is read by the user using lsquic_stream_read() function. + */ +int +lsquic_stream_frame_in (lsquic_stream_t *, struct stream_frame *frame); + +/* Only one (at least for now) uncompressed header structure is allowed to be + * passed in, and only in HTTP mode. + */ +int +lsquic_stream_uh_in (lsquic_stream_t *, struct uncompressed_headers *); + +void +lsquic_stream_push_req (lsquic_stream_t *, + struct uncompressed_headers *push_req); + +int +lsquic_stream_rst_in (lsquic_stream_t *, uint64_t offset, uint64_t error_code); + +void +lsquic_stream_stop_sending_in (struct lsquic_stream *, uint64_t error_code); + +uint64_t +lsquic_stream_read_offset (const lsquic_stream_t *stream); + +/* Return true if we sent all available data to the network and write + * end of the stream was closed. + */ +int +lsquic_stream_tosend_fin (const lsquic_stream_t *stream); + +void +lsquic_stream_window_update (lsquic_stream_t *stream, uint64_t offset); + +int +lsquic_stream_set_max_send_off (lsquic_stream_t *stream, uint64_t offset); + +/* The caller should only call this function if SMQF_SEND_WUF is set and + * it must generate a window update frame using this value. + */ +uint64_t +lsquic_stream_fc_recv_off (lsquic_stream_t *stream); + +void +lsquic_stream_peer_blocked (struct lsquic_stream *, uint64_t); + +void +lsquic_stream_peer_blocked_gquic (struct lsquic_stream *); + +void +lsquic_stream_dispatch_read_events (lsquic_stream_t *); + +void +lsquic_stream_dispatch_write_events (lsquic_stream_t *); + +void +lsquic_stream_blocked_frame_sent (lsquic_stream_t *); + +void +lsquic_stream_rst_frame_sent (lsquic_stream_t *); + +void +lsquic_stream_stream_frame_sent (lsquic_stream_t *); + +void +lsquic_stream_maybe_reset (struct lsquic_stream *, uint64_t error_code, int); + +void +lsquic_stream_call_on_close (lsquic_stream_t *); + +void +lsquic_stream_shutdown_internal (lsquic_stream_t *); + +void +lsquic_stream_received_goaway (lsquic_stream_t *); + +void +lsquic_stream_acked (struct lsquic_stream *, enum quic_frame_type); + +static inline unsigned +lsquic_stream_is_closed (const lsquic_stream_t *s) +{ + return (s->stream_flags & (STREAM_U_READ_DONE|STREAM_U_WRITE_DONE)) + == (STREAM_U_READ_DONE|STREAM_U_WRITE_DONE); +} + +int +lsquic_stream_update_sfcw (lsquic_stream_t *, uint64_t max_off); + +int +lsquic_stream_set_priority_internal (lsquic_stream_t *, unsigned priority); + +static inline unsigned +lsquic_stream_is_critical (const lsquic_stream_t *s) +{ + return s->sm_bflags & SMBF_CRITICAL; +} + +static inline unsigned +lsquic_stream_is_crypto (const lsquic_stream_t *s) +{ + return s->sm_bflags & SMBF_CRYPTO; +} + +size_t +lsquic_stream_mem_used (const struct lsquic_stream *); + +const lsquic_cid_t * +lsquic_stream_cid (const struct lsquic_stream *); + +static inline unsigned +lsquic_stream_has_data_to_flush (const lsquic_stream_t *stream) +{ + return stream->sm_n_buffered > 0; +} + +int +lsquic_stream_readable (struct lsquic_stream *); + +size_t +lsquic_stream_write_avail (struct lsquic_stream *); + +void +lsquic_stream_dump_state (const struct lsquic_stream *); + +#ifndef NDEBUG +size_t +lsquic_stream_flush_threshold (const struct lsquic_stream *, unsigned); +#endif + +static inline uint64_t +crypto_level (const lsquic_stream_t *stream) +{ + return UINT64_MAX - stream->id; +} + +void +lsquic_stream_set_stream_if (struct lsquic_stream *, + const struct lsquic_stream_if *, void *stream_if_ctx); + +uint64_t +lsquic_stream_combined_send_off (const struct lsquic_stream *); + +/* [draft-ietf-quic-transport-16] Section 3.1 */ +enum stream_state_sending +{ + SSS_READY, + SSS_SEND, + SSS_DATA_SENT, + SSS_RESET_SENT, + SSS_DATA_RECVD, + SSS_RESET_RECVD, +}; + +extern const char *const lsquic_sss2str[]; + +enum stream_state_sending +lsquic_stream_sending_state (const struct lsquic_stream *); + +/* [draft-ietf-quic-transport-16] Section 3.2 */ +enum stream_state_receiving +{ + SSR_RECV, + SSR_SIZE_KNOWN, + SSR_DATA_RECVD, + SSR_RESET_RECVD, + SSR_DATA_READ, + SSR_RESET_READ, +}; + +extern const char *const lsquic_ssr2str[]; + +enum stream_state_receiving +lsquic_stream_receiving_state (struct lsquic_stream *); + +uint64_t +lsquic_stream_fc_recv_off_const (const struct lsquic_stream *); + +void +lsquic_stream_max_stream_data_sent (struct lsquic_stream *); + +void +lsquic_stream_qdec_unblocked (struct lsquic_stream *); + +int +lsquic_stream_can_push (const struct lsquic_stream *); + +int +lsquic_stream_push_promise (struct lsquic_stream *, struct push_promise *); + +void +lsquic_stream_force_finish (struct lsquic_stream *); + +int +lsquic_stream_header_is_pp (const struct lsquic_stream *); + +int +lsquic_stream_header_is_trailer (const struct lsquic_stream *); + +int +lsquic_stream_verify_len (struct lsquic_stream *, unsigned long long); + +static inline unsigned +lsquic_stream_is_blocked (const lsquic_stream_t *stream_) +{ + return stream_->blocked_off && + stream_->blocked_off == stream_->max_send_off; +} + +void +lsquic_stream_ss_frame_sent (struct lsquic_stream *); + +#ifndef NDEBUG +void +lsquic_stream_set_pwritev_params (unsigned iovecs, unsigned frames); +#endif + +void +lsquic_stream_drop_hset_ref (struct lsquic_stream *); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_tokgen.c b/external/lsquic/src/liblsquic/lsquic_tokgen.c new file mode 100644 index 0000000..ac402e3 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_tokgen.c @@ -0,0 +1,822 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#include + +#ifndef WIN32 +#include +#include +#include +#else +#include "vc_compat.h" +#include +#endif + +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_sizes.h" +#include "lsquic_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" +#include "lsquic_tokgen.h" +#include "lsquic_trans_params.h" +#include "lsquic_util.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_TOKGEN +#include "lsquic_logger.h" + +#define STRINGIFY(x) #x +#define TOSTRING(x) STRINGIFY(x) + +#define TOKGEN_VERSION 2 + +#define CRYPTER_KEY_SIZE 16 +#define SRST_MAX_PRK_SIZE EVP_MAX_MD_SIZE + +#define TOKGEN_SHM_KEY "TOKGEN" TOSTRING(TOKGEN_VERSION) +#define TOKGEN_SHM_KEY_SIZE (sizeof(TOKGEN_SHM_KEY) - 1) + +#define TOKGEN_SHM_MAGIC_TOP "Feliz" +#define TOKGEN_SHM_MAGIC_BOTTOM "Navidad" + +struct tokgen_shm_state +{ + uint8_t tgss_version; + uint8_t tgss_magic_top[sizeof(TOKGEN_SHM_MAGIC_TOP) - 1]; + uint8_t tgss_crypter_key[N_TOKEN_TYPES][CRYPTER_KEY_SIZE]; + uint8_t tgss_srst_prk_size; + uint8_t tgss_srst_prk[SRST_MAX_PRK_SIZE]; + uint8_t tgss_magic_bottom[sizeof(TOKGEN_SHM_MAGIC_BOTTOM) - 1]; +}; + + +/* The various salt values below were obtained by reading from /dev/random + * when the code was first written. + */ + +static const uint64_t salts[N_TOKEN_TYPES] = +{ + [TOKEN_RETRY] = 0xa49c3ef763a6243f, + [TOKEN_RESUME] = 0x0b3664549086b8ca, +}; + +static const uint8_t srst_salt[8] = "\x28\x6e\x81\x02\x40\x5b\x2c\x2b"; + +struct crypter +{ + EVP_AEAD_CTX ctx; + unsigned long nonce_counter; + size_t nonce_prk_sz; + uint8_t nonce_prk_buf[EVP_MAX_MD_SIZE]; +}; + + +/* Bloom filter of Resume tokens. See below. */ +struct resumed_token_page +{ + TAILQ_ENTRY(resumed_token_page) next; + time_t begin, /* Oldest entry */ + end; /* Newest entry */ + unsigned count; /* Number of entries */ + uintptr_t masks[]; +}; + + +struct token_generator +{ + /* We encrypt different token types using different keys. */ + struct crypter tg_crypters[N_TOKEN_TYPES]; + + /* Stateless reset token is generated using HKDF with CID as the + * `info' parameter to HKDF-Expand. + */ + size_t tg_srst_prk_sz; + uint8_t tg_srst_prk_buf[SRST_MAX_PRK_SIZE]; + unsigned tg_retry_token_duration; + TAILQ_HEAD(resumed_token_pages_head, resumed_token_page) + tg_resume_token_pages; +}; + + +static int +setup_nonce_prk (unsigned char *nonce_prk_buf, size_t *nonce_prk_sz, + unsigned i, time_t now) +{ + struct { + time_t now; + enum token_type tt; + uint8_t buf[16]; + } ikm; + + ikm.now = now; + ikm.tt = i; + RAND_bytes(ikm.buf, sizeof(ikm.buf)); + if (HKDF_extract(nonce_prk_buf, nonce_prk_sz, + EVP_sha256(), (uint8_t *) &ikm, sizeof(ikm), + (void *) &salts[i], sizeof(salts[i]))) + return 0; + else + { + LSQ_ERROR("HKDF_extract failed"); + return -1; + } +} + + +static int +get_or_generate_state (struct lsquic_engine_public *enpub, time_t now, + struct tokgen_shm_state *shm_state) +{ + const struct lsquic_shared_hash_if *const shi = enpub->enp_shi; + void *const ctx = enpub->enp_shi_ctx; + void *data, *copy; + char key_copy[TOKGEN_SHM_KEY_SIZE]; + int s; + unsigned sz; + size_t bufsz; + struct { + time_t now; + unsigned char buf[24]; + } +#if __GNUC__ + /* This is more of a documentation note: this struct should already + * have a multiple-of-eight size. + */ + __attribute__((packed)) +#endif + srst_ikm; + + data = shm_state; + sz = sizeof(*shm_state); + s = shi->shi_lookup(ctx, TOKGEN_SHM_KEY, TOKGEN_SHM_KEY_SIZE, &data, &sz); + + if (s == 1) + { + if (sz != sizeof(*shm_state)) + { + LSQ_WARN("found SHM data has non-matching size %u", sz); + return -1; + } + if (data != (void *) shm_state) + memcpy(shm_state, data, sizeof(*shm_state)); + if (shm_state->tgss_version != TOKGEN_VERSION) + { + LSQ_DEBUG("found SHM data has non-matching version %u", + shm_state->tgss_version); + return -1; + } + LSQ_DEBUG("found SHM data: size %u; version %u", sz, + shm_state->tgss_version); + return 0; + } + + if (s != 0) + { + if (s != -1) + LSQ_WARN("SHM lookup returned unexpected value %d", s); + LSQ_DEBUG("SHM lookup returned an error: generate"); + goto generate; + } + + assert(s == 0); + LSQ_DEBUG("%s does not exist: generate", TOKGEN_SHM_KEY); + generate: + now = time(NULL); + memset(shm_state, 0, sizeof(*shm_state)); + shm_state->tgss_version = TOKGEN_VERSION; + memcpy(shm_state->tgss_magic_top, TOKGEN_SHM_MAGIC_TOP, + sizeof(TOKGEN_SHM_MAGIC_TOP) - 1); + if (getenv("LSQUIC_NULL_TOKGEN")) + { + LSQ_NOTICE("using NULL tokgen"); + memset(shm_state->tgss_crypter_key, 0, + sizeof(shm_state->tgss_crypter_key)); + memset(&srst_ikm, 0, sizeof(srst_ikm)); + } + else + { + RAND_bytes((void *) shm_state->tgss_crypter_key, + sizeof(shm_state->tgss_crypter_key)); + srst_ikm.now = now; + RAND_bytes(srst_ikm.buf, sizeof(srst_ikm.buf)); + } + if (!HKDF_extract(shm_state->tgss_srst_prk, &bufsz, + EVP_sha256(), (uint8_t *) &srst_ikm, sizeof(srst_ikm), + srst_salt, sizeof(srst_salt))) + { + LSQ_ERROR("HKDF_extract failed"); + return -1; + } + shm_state->tgss_srst_prk_size = (uint8_t) bufsz; + memcpy(shm_state->tgss_magic_bottom, TOKGEN_SHM_MAGIC_BOTTOM, + sizeof(TOKGEN_SHM_MAGIC_BOTTOM) - 1); + + data = shm_state; + memcpy(key_copy, TOKGEN_SHM_KEY, TOKGEN_SHM_KEY_SIZE); + s = shi->shi_insert(ctx, key_copy, TOKGEN_SHM_KEY_SIZE, data, + sizeof(*shm_state), 0); + if (s != 0) + { + LSQ_ERROR("cannot insert into SHM"); + return -1; + } + sz = sizeof(*shm_state); + s = shi->shi_lookup(ctx, TOKGEN_SHM_KEY, TOKGEN_SHM_KEY_SIZE, ©, &sz); + if (s != 1 || sz != sizeof(*shm_state)) + { + LSQ_ERROR("cannot lookup after insert: s=%d; sz=%u", s, sz); + return -1; + } + if (copy != data) + memcpy(shm_state, copy, sizeof(*shm_state)); + LSQ_INFO("inserted %s of size %u", TOKGEN_SHM_KEY, sz); + return 0; +} + + +struct token_generator * +lsquic_tg_new (struct lsquic_engine_public *enpub) +{ + struct token_generator *tokgen; + time_t now; + struct tokgen_shm_state shm_state; + + tokgen = calloc(1, sizeof(*tokgen)); + if (!tokgen) + goto err; + + now = time(NULL); + if (0 != get_or_generate_state(enpub, now, &shm_state)) + goto err; + + TAILQ_INIT(&tokgen->tg_resume_token_pages); + unsigned i; + for (i = 0; i < sizeof(tokgen->tg_crypters) + / sizeof(tokgen->tg_crypters[0]); ++i) + { + struct crypter *crypter; + crypter = tokgen->tg_crypters + i; + if (0 != setup_nonce_prk(crypter->nonce_prk_buf, + &crypter->nonce_prk_sz, i, now)) + goto err; + if (1 != EVP_AEAD_CTX_init(&crypter->ctx, EVP_aead_aes_128_gcm(), + shm_state.tgss_crypter_key[i], + sizeof(shm_state.tgss_crypter_key[i]), RETRY_TAG_LEN, 0)) + goto err; + } + + tokgen->tg_retry_token_duration + = enpub->enp_settings.es_retry_token_duration; + if (tokgen->tg_retry_token_duration == 0) + tokgen->tg_retry_token_duration = LSQUIC_DF_RETRY_TOKEN_DURATION; + + tokgen->tg_srst_prk_sz = shm_state.tgss_srst_prk_size; + if (tokgen->tg_srst_prk_sz > sizeof(tokgen->tg_srst_prk_buf)) + { + LSQ_WARN("bad stateless reset key size"); + goto err; + } + memcpy(tokgen->tg_srst_prk_buf, shm_state.tgss_srst_prk, + tokgen->tg_srst_prk_sz); + + LSQ_DEBUG("initialized"); + return tokgen; + + err: + LSQ_ERROR("error initializing"); + free(tokgen); + return NULL; +} + + +void +lsquic_tg_destroy (struct token_generator *tokgen) +{ + struct resumed_token_page *page; + struct crypter *crypter; + unsigned i; + + while ((page = TAILQ_FIRST(&tokgen->tg_resume_token_pages))) + { + TAILQ_REMOVE(&tokgen->tg_resume_token_pages, page, next); + free(page); + } + for (i = 0; i < sizeof(tokgen->tg_crypters) + / sizeof(tokgen->tg_crypters[0]); ++i) + { + crypter = tokgen->tg_crypters + i; + EVP_AEAD_CTX_cleanup(&crypter->ctx); + } + free(tokgen); + LSQ_DEBUG("destroyed"); +} + + +/* To limit reuse of Resume tokens, used Resume tokens are inserted into a + * list of Bloom filters with very low false positive rate. Before a Resume + * token is used, we check in the Bloom filter. If this token has already + * been used, it fails validation. + * + * There are three ways when this check will fail: + * 1. Bloom filter false positive. In this case, Resume token fails + * validation, which may cause the server may issue a Retry. This + * should happen very infrequently (see below). + * 2. Server restart. Because the Bloom filter is stored in process + * memory, this will result in false negative and a Resume token can be + * reused. + * 3. Different working process. Similar to (2). + * + * Bloom filters are on a linked list. Each filter is used up to MAX_PER_PAGE + * values or RESUME_MAX_SECS seconds, after which a new Bloom filter is inserted. + * Bloom filters are removed once the most recent element is older than + * RESUME_MAX_HOURS hours. + */ + +#define RESUME_MAX_SECS (24 * 3600) + +#define N_BLOOM_FUNCS 10 + +/* We need 30 bytes to generate 10 24-bit Bloom filter values */ +typedef char enough_blooms[MIN_RESUME_TOKEN_LEN >= 3 * N_BLOOM_FUNCS ? 1 : -1]; + +typedef uint32_t bloom_vals_t[N_BLOOM_FUNCS]; + +#define RESUME_TOKEN_PAGE_SIZE (1u << 21) + +/* For memory efficiency, we allocate 2MB chunks of memory, + * not 2MB + 28 bytes. Thus, we can't use the whole 24-bit range. + */ +#define MAX_BLOOM_VALUE ((RESUME_TOKEN_PAGE_SIZE - \ + sizeof(struct resumed_token_page)) * 8 - 1) + +#define MAX_PER_PAGE 500000 +/* This works out to 0.00012924% false positive rate: + * perl -E '$k=10;$m=1<<24;$n=500000;printf("%.10lf",(1-exp(1)**-($k*$n/$m))**$k)' + */ + +static int +tokgen_seen_resumed_token (struct token_generator *tokgen, + const unsigned char *token, size_t token_sz, bloom_vals_t bloom_vals) +{ + const struct resumed_token_page *page; + unsigned n, idx; + uintptr_t slot; + + if (1 + N_BLOOM_FUNCS * 3 > token_sz) + return 0; + + ++token; + for (n = 0; n < N_BLOOM_FUNCS; ++n) + { + bloom_vals[n] = *token++; + bloom_vals[n] |= *token++ << 8; + bloom_vals[n] |= *token++ << 16; + if (bloom_vals[n] > MAX_BLOOM_VALUE) + bloom_vals[n] = MAX_BLOOM_VALUE; + } + + page = TAILQ_FIRST(&tokgen->tg_resume_token_pages); + while (page) + { + for (n = 0; n < N_BLOOM_FUNCS; ++n) + { + idx = bloom_vals[n] / (sizeof(page->masks[0]) * 8); + slot = 1; + slot <<= bloom_vals[n] % (sizeof(page->masks[0]) * 8); + if (!(page->masks[idx] & slot)) + goto next_page; + } + return 1; + next_page: + page = TAILQ_NEXT(page, next); + } + + return 0; +} + + +static void /* void: if it fails, there is nothing to do */ +tokgen_record_resumed_token (struct token_generator *tokgen, time_t now, + bloom_vals_t bloom_vals) +{ + struct resumed_token_page *page; + unsigned n, idx; + uintptr_t slot; + + /* Expunge old pages at insertion time only to save on time() syscall */ + while ((page = TAILQ_FIRST(&tokgen->tg_resume_token_pages))) + if (page->end + RESUME_MAX_SECS < now) + { + LSQ_DEBUG("drop resumed cache page"); + TAILQ_REMOVE(&tokgen->tg_resume_token_pages, page, next); + free(page); + } + else + break; + + page = TAILQ_LAST(&tokgen->tg_resume_token_pages, resumed_token_pages_head); + if (!(page && page->count < MAX_PER_PAGE && now + < page->begin + RESUME_MAX_SECS)) + { + page = calloc(1, RESUME_TOKEN_PAGE_SIZE); + if (!page) + { + LSQ_WARN("cannot allocate resumed cache page"); + return; + } + LSQ_DEBUG("allocate resumed cache page"); + TAILQ_INSERT_TAIL(&tokgen->tg_resume_token_pages, page, next); + page->begin = now; + page->end = now; + page->count = 0; + } + + page->end = now; + ++page->count; + + for (n = 0; n < N_BLOOM_FUNCS; ++n) + { + idx = bloom_vals[n] / (sizeof(page->masks[0]) * 8); + slot = 1; + slot <<= bloom_vals[n] % (sizeof(page->masks[0]) * 8); + page->masks[idx] |= slot; + } +} + + +static const char *const tt2str[N_TOKEN_TYPES] = { + [TOKEN_RESUME] = "resume", + [TOKEN_RETRY] = "retry", +}; + + +int +lsquic_tg_validate_token (struct token_generator *tokgen, + const struct lsquic_packet_in *packet_in, const struct sockaddr *sa_peer, + lsquic_cid_t *odcid) +{ + size_t decr_token_len, encr_token_len, ad_len; + const unsigned char *nonce, *encr_token, *p, *end, *ad; + struct crypter *crypter; + enum token_type token_type; + time_t issued_at, ttl, now; + int is_ipv6; + unsigned version; + bloom_vals_t bloom_vals; + unsigned char decr_token[MAX_RETRY_TOKEN_LEN - RETRY_TAG_LEN + - RETRY_NONCE_LEN]; + char token_str[MAX_RETRY_TOKEN_LEN * 2 + 1]; + char addr_str[2][INET6_ADDRSTRLEN]; + + if (!(packet_in->pi_token && packet_in->pi_token_size)) + { + LSQ_DEBUGC("packet for connection %"CID_FMT" has no token: " + "validation failed", CID_BITS(&packet_in->pi_dcid)); + return -1; + } + + if (packet_in->pi_token_size < RETRY_TAG_LEN + RETRY_NONCE_LEN) + { + LSQ_DEBUGC("packet for connection %"CID_FMT" has too-short token " + "(%hu bytes): validation failed", CID_BITS(&packet_in->pi_dcid), + packet_in->pi_token_size); + return -1; + } + + token_type = packet_in->pi_data[packet_in->pi_token]; + switch (token_type) + { + case TOKEN_RETRY: + ttl = tokgen->tg_retry_token_duration; + ad = packet_in->pi_dcid.idbuf; + ad_len = packet_in->pi_dcid.len; + break; + case TOKEN_RESUME: + if (tokgen_seen_resumed_token(tokgen, packet_in->pi_data + + packet_in->pi_token, packet_in->pi_token_size, bloom_vals)) + { + LSQ_DEBUGC("%s token for connection %"CID_FMT" has already " + "been used: validation failed", tt2str[token_type], + CID_BITS(&packet_in->pi_dcid)); + return -1; + } + ttl = RESUME_MAX_SECS; + ad = NULL; + ad_len = 0; + break; + default: + LSQ_DEBUGC("packet for connection %"CID_FMT" has unknown token " + "type (%u): validation failed", CID_BITS(&packet_in->pi_dcid), + token_type); + return -1; + } + crypter = &tokgen->tg_crypters[ token_type ]; + + nonce = packet_in->pi_data + packet_in->pi_token; + encr_token = nonce + RETRY_NONCE_LEN; + encr_token_len = packet_in->pi_token_size - RETRY_NONCE_LEN; + decr_token_len = sizeof(decr_token); + if (!EVP_AEAD_CTX_open(&crypter->ctx, decr_token, &decr_token_len, + decr_token_len, nonce, RETRY_NONCE_LEN, + encr_token, encr_token_len, ad, ad_len)) + { + LSQ_DEBUGC("packet for connection %"CID_FMT" has undecryptable %s " + "token %s: validation failed", CID_BITS(&packet_in->pi_dcid), + tt2str[token_type], + HEXSTR(packet_in->pi_data + packet_in->pi_token, + packet_in->pi_token_size, token_str)); + return -1; + } + + /* From here on, we begin to warn: this is because we were able to + * decrypt it, so this is our token. We should be able to parse it. + */ + + p = decr_token; + end = p + decr_token_len; + + if (p + 1 > end) + goto too_short; + version = *p++; + if (version != TOKGEN_VERSION) + { + LSQ_DEBUGC("packet for connection %"CID_FMT" has %s token with " + "wrong version %u (expected %u): validation failed", + CID_BITS(&packet_in->pi_dcid), tt2str[token_type], + version, TOKGEN_VERSION); + return -1; + } + + if (p + sizeof(issued_at) > end) + goto too_short; + memcpy(&issued_at, p, sizeof(issued_at)); + now = time(NULL); + if (issued_at + ttl < now) + { + LSQ_DEBUGC("%s token for connection %"CID_FMT" expired %lu " + "seconds ago", tt2str[token_type], CID_BITS(&packet_in->pi_dcid), + (unsigned long) (now - issued_at - ttl)); + return -1; + } + p += sizeof(issued_at); + + if (p + 1 > end) + goto too_short; + is_ipv6 = *p++; + if (is_ipv6) + { + if (p + 16 > end) + goto too_short; + if (!(AF_INET6 == sa_peer->sa_family && + 0 == memcmp(p, &((struct sockaddr_in6 *) sa_peer)->sin6_addr, 16))) + goto ip_mismatch; + p += 16; + } + else + { + if (p + 4 > end) + goto too_short; + if (!(AF_INET == sa_peer->sa_family && + 0 == memcmp(p, &((struct sockaddr_in *) + sa_peer)->sin_addr.s_addr, 4))) + goto ip_mismatch; + p += 4; + } + + if (TOKEN_RETRY == token_type) + { + if (p + 2 >= end) + goto too_short; + if (AF_INET == sa_peer->sa_family) + { + if (memcmp(p, &((struct sockaddr_in *) sa_peer)->sin_port, 2)) + goto port_mismatch; + } + else if (memcmp(p, &((struct sockaddr_in6 *) sa_peer)->sin6_port, 2)) + goto port_mismatch; + if (0 && LSQ_LOG_ENABLED(LSQ_LOG_DEBUG)) + { + uint16_t port; + memcpy(&port, p, sizeof(port)); + port = ntohs(port); + LSQ_DEBUG("port %hu in Retry token matches", port); + } + p += 2; + if (end - p > MAX_CID_LEN) + goto too_long; + if (odcid) + { + memcpy(odcid->idbuf, p, end - p); + odcid->len = end - p; + LSQ_DEBUGC("ODCID: %"CID_FMT, CID_BITS(odcid)); + } + } + else + { + if (p != end) + { + assert(p < end); + goto too_long; + } + tokgen_record_resumed_token(tokgen, now, bloom_vals); + } + + LSQ_DEBUGC("validated %lu-second-old %s token %s for connection " + "%"CID_FMT, (unsigned long) (now - issued_at), tt2str[token_type], + HEXSTR(packet_in->pi_data + packet_in->pi_token, + packet_in->pi_token_size, token_str), + CID_BITS(&packet_in->pi_dcid)); + return 0; + + too_short: + LSQ_INFOC("decrypted %s token for connection %"CID_FMT" is too short " + "(%zu bytes): validation failed", tt2str[token_type], + CID_BITS(&packet_in->pi_dcid), decr_token_len); + return -1; + + ip_mismatch: + addr_str[0][0] = '\0'; + addr_str[1][0] = '\0'; + (void) inet_ntop(is_ipv6 ? AF_INET6 : AF_INET, p, addr_str[0], + sizeof(addr_str[0])); + if (AF_INET6 == sa_peer->sa_family) + (void) inet_ntop(AF_INET6, &((struct sockaddr_in6 *) sa_peer + )->sin6_addr, addr_str[1], sizeof(addr_str[1])); + else + (void) inet_ntop(AF_INET, &((struct sockaddr_in *) sa_peer + )->sin_addr.s_addr, addr_str[1], sizeof(addr_str[1])); + LSQ_INFOC("IP address %s in %s token for connection %"CID_FMT" does not " + "match peer IP address %s: validation failed", addr_str[0], + tt2str[token_type], CID_BITS(&packet_in->pi_dcid), addr_str[1]); + return -1; + + too_long: + LSQ_INFOC("decrypted %s token for connection %"CID_FMT" is too long " + "(%zu bytes): validation failed", tt2str[token_type], + CID_BITS(&packet_in->pi_dcid), decr_token_len); + return -1; + + port_mismatch: + { + uint16_t ports[2]; + ports[0] = AF_INET6 == sa_peer->sa_family + ? ((struct sockaddr_in6 *) sa_peer)->sin6_port + : ((struct sockaddr_in *) sa_peer)->sin_port; + ports[0] = ntohs(ports[0]); + memcpy(&ports[1], p, sizeof(ports[1])); + ports[1] = ntohs(ports[1]); + LSQ_INFOC("port %hu in %s token for connection %"CID_FMT" does not " + "match peer port %hu: validation failed", ports[1], tt2str[token_type], + CID_BITS(&packet_in->pi_dcid), ports[0]); + return -1; + } +} + + +#define LABEL_PREFIX_SZ 8 + +static const uint8_t *labels[N_TOKEN_TYPES] = +{ + [TOKEN_RETRY] = (uint8_t *) "retry me", + [TOKEN_RESUME] = (uint8_t *) "resume m", +}; + + +static ssize_t +tokgen_generate_token (struct token_generator *tokgen, + enum token_type token_type, unsigned char *buf, size_t bufsz, + const unsigned char *ad_buf, size_t ad_len, + const struct sockaddr *sa_peer, const lsquic_cid_t *odcid) +{ + struct crypter *crypter; + unsigned char *p, *in; + time_t now; + size_t len, in_len; + unsigned char label[ LABEL_PREFIX_SZ + sizeof(crypter->nonce_counter) ]; + char in_str[(MAX_RETRY_TOKEN_LEN - RETRY_NONCE_LEN + - RETRY_TAG_LEN) * 2 + 1], + ad_str[MAX_CID_LEN * 2 + 1], + token_str[MAX_RETRY_TOKEN_LEN * 2 + 1]; + + if (bufsz < MAX_RETRY_TOKEN_LEN) + return -1; + + crypter = &tokgen->tg_crypters[ token_type ]; + p = buf; + + *p = token_type; + memcpy(label, labels[token_type], LABEL_PREFIX_SZ); + memcpy(label + LABEL_PREFIX_SZ, &crypter->nonce_counter, + sizeof(crypter->nonce_counter)); + (void) HKDF_expand(p + 1, RETRY_NONCE_LEN - 1, EVP_sha256(), + crypter->nonce_prk_buf, crypter->nonce_prk_sz, label, sizeof(label)); + p += RETRY_NONCE_LEN; + *p++ = TOKGEN_VERSION; + now = time(NULL); + memcpy(p, &now, sizeof(now)); + p += sizeof(now); + + if (AF_INET == sa_peer->sa_family) + { + *p++ = 0; + memcpy(p, &((struct sockaddr_in *) sa_peer)->sin_addr.s_addr, 4); + p += 4; + } + else + { + *p++ = 1; + memcpy(p, &((struct sockaddr_in6 *) sa_peer)->sin6_addr, 16); + p += 16; + } + + if (token_type == TOKEN_RETRY) + { + if (AF_INET == sa_peer->sa_family) + memcpy(p, &((struct sockaddr_in *) sa_peer)->sin_port, 2); + else + memcpy(p, &((struct sockaddr_in6 *) sa_peer)->sin6_port, 2); + p += 2; + } + + if (odcid) + { + assert(odcid->len <= MAX_CID_LEN); + memcpy(p, odcid->idbuf, odcid->len); + p += odcid->len; + } + + len = bufsz - RETRY_NONCE_LEN; + in = buf + RETRY_NONCE_LEN; + in_len = p - buf - RETRY_NONCE_LEN; + if (LSQ_LOG_ENABLED(LSQ_LOG_DEBUG)) + lsquic_hexstr(in, in_len, in_str, sizeof(in_str)); + if (EVP_AEAD_CTX_seal(&crypter->ctx, in, &len, len, + buf, RETRY_NONCE_LEN, in, in_len, ad_buf, ad_len)) + { + ++crypter->nonce_counter; + LSQ_DEBUG("in: %s, ad: %s -> %s token: %s (%zu bytes)", + in_str, + HEXSTR(ad_buf, ad_len, ad_str), + tt2str[token_type], + HEXSTR(buf, RETRY_NONCE_LEN + len, token_str), + RETRY_NONCE_LEN + len); + return RETRY_NONCE_LEN + len; + } + else + { + LSQ_WARN("could not seal retry token"); + return -1; + } +} + + +ssize_t +lsquic_tg_generate_retry (struct token_generator *tokgen, + unsigned char *buf, size_t bufsz, const unsigned char *scid_buf, + size_t scid_len, const struct sockaddr *sa_peer, + const lsquic_cid_t *odcid) +{ + return tokgen_generate_token(tokgen, TOKEN_RETRY, buf, bufsz, scid_buf, + scid_len, sa_peer, odcid); +} + + +ssize_t +lsquic_tg_generate_resume (struct token_generator *tokgen, + unsigned char *buf, size_t bufsz, const struct sockaddr *sa_peer) +{ + return tokgen_generate_token(tokgen, TOKEN_RESUME, buf, bufsz, NULL, + 0, sa_peer, NULL); +} + + +size_t +lsquic_tg_token_size (const struct token_generator *tokgen, + enum token_type token_type, const struct sockaddr *sa_peer) +{ + return MAX_RETRY_TOKEN_LEN - 16 + + (AF_INET == sa_peer->sa_family ? 4 : 16); +} + + +void +lsquic_tg_generate_sreset (struct token_generator *tokgen, + const struct lsquic_cid *cid, unsigned char *reset_token) +{ + char str[IQUIC_SRESET_TOKEN_SZ * 2 + 1]; + + (void) HKDF_expand(reset_token, IQUIC_SRESET_TOKEN_SZ, EVP_sha256(), + tokgen->tg_srst_prk_buf, tokgen->tg_srst_prk_sz, cid->idbuf, cid->len); + LSQ_DEBUGC("generated stateless reset token %s for CID %"CID_FMT, + HEXSTR(reset_token, IQUIC_SRESET_TOKEN_SZ, str), CID_BITS(cid)); +} diff --git a/external/lsquic/src/liblsquic/lsquic_tokgen.h b/external/lsquic/src/liblsquic/lsquic_tokgen.h new file mode 100644 index 0000000..21e5bc5 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_tokgen.h @@ -0,0 +1,65 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_TOKEN_H +#define LSQUIC_TOKEN_H 1 + +struct lsquic_engine_public; +struct sockaddr; +struct lsquic_packet_in; +struct lsquic_cid; + +enum token_type { TOKEN_RETRY, TOKEN_RESUME, N_TOKEN_TYPES, }; + +struct token_generator; + +struct token_generator * +lsquic_tg_new (struct lsquic_engine_public *); + +void +lsquic_tg_destroy (struct token_generator *); + +/* `reset_token' must be IQUIC_SRESET_TOKEN_SZ bytes in length */ +void +lsquic_tg_generate_sreset (struct token_generator *, + const struct lsquic_cid *cid, unsigned char *reset_token); + + +/* Retry and Resume tokens have identical sizes. Use *RETRY* macros + * for both. + */ +#define RETRY_TAG_LEN 16 + +/* Type is encoded in the nonce */ +#define RETRY_NONCE_LEN 12 + +#define MAX_RETRY_TOKEN_LEN (RETRY_NONCE_LEN + 1 /* version */ + \ + sizeof(time_t) /* time */ + 1 /* IPv4 or IPv6 */ + \ + 16 /* IPv6 or IPv4 address */ + 2 /* Port number */ + MAX_CID_LEN + \ + RETRY_TAG_LEN) + +/* Need this to make sure we have enough bytes for Bloom filter functions */ +#define MIN_RESUME_TOKEN_LEN (RETRY_NONCE_LEN + 1 /* version */ + \ + sizeof(time_t) /* time */ + 1 /* IPv4 or IPv6 */ + \ + 4 /* IPv4 address */ + 0 /* No port number */ + 0 /* No CID */ + \ + RETRY_TAG_LEN) + +ssize_t +lsquic_tg_generate_retry (struct token_generator *, + unsigned char *buf, size_t bufsz, + const unsigned char *scid_buf, size_t scid_len, + const struct sockaddr *sa_peer, const struct lsquic_cid *odcid); + +ssize_t +lsquic_tg_generate_resume (struct token_generator *, + unsigned char *buf, size_t bufsz, + const struct sockaddr *sa_peer); + +int +lsquic_tg_validate_token (struct token_generator *, + const struct lsquic_packet_in *, const struct sockaddr *, + struct lsquic_cid *); + +size_t +lsquic_tg_token_size (const struct token_generator *tokgen, + enum token_type token_type, const struct sockaddr *sa_peer); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_trans_params.c b/external/lsquic/src/liblsquic/lsquic_trans_params.c new file mode 100644 index 0000000..77cbe62 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_trans_params.c @@ -0,0 +1,1363 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_trans_params.c + */ + +#include +#include +#include +#include +#include +#include +#include + +#ifndef WIN32 +#include +#include +#else +#include "vc_compat.h" +#include "Ws2tcpip.h" +#endif + +#include "lsquic.h" +#include "lsquic_byteswap.h" +#include "lsquic_int_types.h" +#include "lsquic_types.h" +#include "lsquic_version.h" +#include "lsquic_sizes.h" +#include "lsquic_trans_params.h" +#include "lsquic_util.h" +#include "lsquic_varint.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_TRAPA +#include "lsquic_logger.h" + + +static enum transport_param_id +tpi_val_2_enum (uint64_t tpi_val) +{ + switch (tpi_val) + { + case 0: return TPI_ORIGINAL_DEST_CID; + case 1: return TPI_MAX_IDLE_TIMEOUT; + case 2: return TPI_STATELESS_RESET_TOKEN; + case 3: return TPI_MAX_UDP_PAYLOAD_SIZE; + case 4: return TPI_INIT_MAX_DATA; + case 5: return TPI_INIT_MAX_STREAM_DATA_BIDI_LOCAL; + case 6: return TPI_INIT_MAX_STREAM_DATA_BIDI_REMOTE; + case 7: return TPI_INIT_MAX_STREAM_DATA_UNI; + case 8: return TPI_INIT_MAX_STREAMS_BIDI; + case 9: return TPI_INIT_MAX_STREAMS_UNI; + case 10: return TPI_ACK_DELAY_EXPONENT; + case 11: return TPI_MAX_ACK_DELAY; + case 12: return TPI_DISABLE_ACTIVE_MIGRATION; + case 13: return TPI_PREFERRED_ADDRESS; + case 14: return TPI_ACTIVE_CONNECTION_ID_LIMIT; + case 15: return TPI_INITIAL_SOURCE_CID; + case 16: return TPI_RETRY_SOURCE_CID; + case 17: return TPI_VERSION_INFORMATION; + case 0x20: return TPI_MAX_DATAGRAM_FRAME_SIZE; +#if LSQUIC_TEST_QUANTUM_READINESS + case 0xC37: return TPI_QUANTUM_READINESS; +#endif + case 0x1057: return TPI_LOSS_BITS; + case 0x2AB2: return TPI_GREASE_QUIC_BIT; + case 0xDE1A: return TPI_MIN_ACK_DELAY; + case 0xFF02DE1A:return TPI_MIN_ACK_DELAY_02; + case 0x7158: return TPI_TIMESTAMPS; + default: return INT_MAX; + } +} + + +static const unsigned enum_2_tpi_val[LAST_TPI + 1] = +{ + [TPI_ORIGINAL_DEST_CID] = 0x0, + [TPI_MAX_IDLE_TIMEOUT] = 0x1, + [TPI_STATELESS_RESET_TOKEN] = 0x2, + [TPI_MAX_UDP_PAYLOAD_SIZE] = 0x3, + [TPI_INIT_MAX_DATA] = 0x4, + [TPI_INIT_MAX_STREAM_DATA_BIDI_LOCAL] = 0x5, + [TPI_INIT_MAX_STREAM_DATA_BIDI_REMOTE] = 0x6, + [TPI_INIT_MAX_STREAM_DATA_UNI] = 0x7, + [TPI_INIT_MAX_STREAMS_BIDI] = 0x8, + [TPI_INIT_MAX_STREAMS_UNI] = 0x9, + [TPI_ACK_DELAY_EXPONENT] = 0xA, + [TPI_MAX_ACK_DELAY] = 0xB, + [TPI_DISABLE_ACTIVE_MIGRATION] = 0xC, + [TPI_PREFERRED_ADDRESS] = 0xD, + [TPI_ACTIVE_CONNECTION_ID_LIMIT] = 0xE, + [TPI_INITIAL_SOURCE_CID] = 0xF, + [TPI_RETRY_SOURCE_CID] = 0x10, + [TPI_VERSION_INFORMATION] = 0x11, + [TPI_MAX_DATAGRAM_FRAME_SIZE] = 0x20, +#if LSQUIC_TEST_QUANTUM_READINESS + [TPI_QUANTUM_READINESS] = 0xC37, +#endif + [TPI_LOSS_BITS] = 0x1057, + [TPI_MIN_ACK_DELAY] = 0xDE1A, + [TPI_MIN_ACK_DELAY_02] = 0xFF02DE1A, + [TPI_TIMESTAMPS] = 0x7158, + [TPI_GREASE_QUIC_BIT] = 0x2AB2, +}; + + +const char * const lsquic_tpi2str[LAST_TPI + 1] = +{ + [TPI_ORIGINAL_DEST_CID] = "original_destination_connection_id", + [TPI_MAX_IDLE_TIMEOUT] = "max_idle_timeout", + [TPI_STATELESS_RESET_TOKEN] = "stateless_reset_token", + [TPI_MAX_UDP_PAYLOAD_SIZE] = "max_udp_payload_size", + [TPI_INIT_MAX_DATA] = "init_max_data", + [TPI_INIT_MAX_STREAM_DATA_BIDI_LOCAL] = "init_max_stream_data_bidi_local", + [TPI_INIT_MAX_STREAM_DATA_BIDI_REMOTE] = "init_max_stream_data_bidi_remote", + [TPI_INIT_MAX_STREAM_DATA_UNI] = "init_max_stream_data_uni", + [TPI_INIT_MAX_STREAMS_BIDI] = "init_max_streams_bidi", + [TPI_INIT_MAX_STREAMS_UNI] = "init_max_streams_uni", + [TPI_ACK_DELAY_EXPONENT] = "ack_delay_exponent", + [TPI_MAX_ACK_DELAY] = "max_ack_delay", + [TPI_DISABLE_ACTIVE_MIGRATION] = "disable_active_migration", + [TPI_PREFERRED_ADDRESS] = "preferred_address", + [TPI_ACTIVE_CONNECTION_ID_LIMIT] = "active_connection_id_limit", + [TPI_INITIAL_SOURCE_CID] = "initial_source_connection_id", + [TPI_RETRY_SOURCE_CID] = "retry_source_connection_id", + [TPI_MAX_DATAGRAM_FRAME_SIZE] = "max_datagram_frame_size", +#if LSQUIC_TEST_QUANTUM_READINESS + [TPI_QUANTUM_READINESS] = "quantum_readiness", +#endif + [TPI_LOSS_BITS] = "loss_bits", + [TPI_MIN_ACK_DELAY] = "min_ack_delay", + [TPI_MIN_ACK_DELAY_02] = "min_ack_delay_02", + [TPI_TIMESTAMPS] = "timestamps", + [TPI_GREASE_QUIC_BIT] = "grease_quic_bit", +}; +#define tpi2str lsquic_tpi2str + + +static const uint64_t def_vals[MAX_NUM_WITH_DEF_TPI + 1] = +{ + [TPI_MAX_UDP_PAYLOAD_SIZE] = TP_DEF_MAX_UDP_PAYLOAD_SIZE, + [TPI_ACK_DELAY_EXPONENT] = TP_DEF_ACK_DELAY_EXP, + [TPI_INIT_MAX_STREAMS_UNI] = TP_DEF_INIT_MAX_STREAMS_UNI, + [TPI_INIT_MAX_STREAMS_BIDI] = TP_DEF_INIT_MAX_STREAMS_BIDI, + [TPI_INIT_MAX_DATA] = TP_DEF_INIT_MAX_DATA, + [TPI_INIT_MAX_STREAM_DATA_BIDI_LOCAL] = TP_DEF_INIT_MAX_STREAM_DATA_BIDI_LOCAL, + [TPI_INIT_MAX_STREAM_DATA_BIDI_REMOTE] = TP_DEF_INIT_MAX_STREAM_DATA_BIDI_REMOTE, + [TPI_INIT_MAX_STREAM_DATA_UNI] = TP_DEF_INIT_MAX_STREAM_DATA_UNI, + [TPI_MAX_IDLE_TIMEOUT] = TP_DEF_MAX_IDLE_TIMEOUT, + [TPI_MAX_ACK_DELAY] = TP_DEF_MAX_ACK_DELAY, + [TPI_ACTIVE_CONNECTION_ID_LIMIT] = TP_DEF_ACTIVE_CONNECTION_ID_LIMIT, +}; + + +static const uint64_t max_vals[MAX_NUMERIC_TPI + 1] = +{ + /* We don't enforce the maximum practical UDP payload value of 65527, as + * it is not required by the spec and is not necessary. + */ + [TPI_MAX_UDP_PAYLOAD_SIZE] = VINT_MAX_VALUE, + [TPI_ACK_DELAY_EXPONENT] = TP_MAX_ACK_DELAY_EXP, + [TPI_INIT_MAX_STREAMS_UNI] = 1ull << 60, + [TPI_INIT_MAX_STREAMS_BIDI] = 1ull << 60, + [TPI_INIT_MAX_DATA] = VINT_MAX_VALUE, + [TPI_INIT_MAX_STREAM_DATA_BIDI_LOCAL] = VINT_MAX_VALUE, + [TPI_INIT_MAX_STREAM_DATA_BIDI_REMOTE] = VINT_MAX_VALUE, + [TPI_INIT_MAX_STREAM_DATA_UNI] = VINT_MAX_VALUE, + [TPI_MAX_IDLE_TIMEOUT] = VINT_MAX_VALUE, + [TPI_MAX_ACK_DELAY] = TP_MAX_MAX_ACK_DELAY, + [TPI_ACTIVE_CONNECTION_ID_LIMIT] = VINT_MAX_VALUE, + [TPI_LOSS_BITS] = 1, + [TPI_MIN_ACK_DELAY] = (1u << 24) - 1u, + [TPI_MIN_ACK_DELAY_02] = (1u << 24) - 1u, + [TPI_TIMESTAMPS] = TS_WANT_THEM|TS_GENERATE_THEM, + [TPI_MAX_DATAGRAM_FRAME_SIZE] = VINT_MAX_VALUE, +}; + + +static const uint64_t min_vals[MAX_NUMERIC_TPI + 1] = +{ + /* On the other hand, we do enforce the lower bound. */ + [TPI_MAX_UDP_PAYLOAD_SIZE] = 1200, + [TPI_MIN_ACK_DELAY] = 1, + [TPI_MIN_ACK_DELAY_02] = 1, + [TPI_ACTIVE_CONNECTION_ID_LIMIT] = 2, + [TPI_TIMESTAMPS] = TS_WANT_THEM, +}; + + +static size_t +preferred_address_size (const struct transport_params *params) +{ + return sizeof(params->tp_preferred_address.ipv4_addr) + + sizeof(params->tp_preferred_address.ipv4_port) + + sizeof(params->tp_preferred_address.ipv6_addr) + + sizeof(params->tp_preferred_address.ipv6_port) + + 1 + params->tp_preferred_address.cid.len + + sizeof(params->tp_preferred_address.srst) + ; +} + + +int +lsquic_tp_has_pref_ipv4 (const struct transport_params *params) +{ + return (params->tp_set & (1 << TPI_PREFERRED_ADDRESS)) + && params->tp_preferred_address.ipv4_port + && !lsquic_is_zero(params->tp_preferred_address.ipv4_addr, + sizeof(params->tp_preferred_address.ipv4_addr)); +} + + +int +lsquic_tp_has_pref_ipv6 (const struct transport_params *params) +{ + return (params->tp_set & (1 << TPI_PREFERRED_ADDRESS)) + && params->tp_preferred_address.ipv6_port + && !lsquic_is_zero(params->tp_preferred_address.ipv6_addr, + sizeof(params->tp_preferred_address.ipv6_addr)); +} + + +#if LSQUIC_TEST_QUANTUM_READINESS +#include +size_t +lsquic_tp_get_quantum_sz (void) +{ + const char *str; + + str = getenv("LSQUIC_QUANTUM_SZ"); + if (str) + return atoi(str); + else + /* https://github.com/quicwg/base-drafts/wiki/Quantum-Readiness-test */ + return 1200; +} +#endif + + +static size_t +update_cid_bits (unsigned bits[][3], enum transport_param_id tpi, + const lsquic_cid_t *cid) +{ + bits[tpi][0] = vint_val2bits(enum_2_tpi_val[tpi]); +#if __GNUC__ +#pragma GCC diagnostic ignored "-Wunknown-pragmas" +#if __clang__ +#pragma GCC diagnostic ignored "-Wtautological-constant-out-of-range-compare" +#else +#pragma GCC diagnostic ignored "-Wtype-limits" +#endif +#endif + bits[tpi][1] = vint_val2bits(cid->len); +#if __GNUC__ +#pragma GCC diagnostic pop +#pragma GCC diagnostic pop +#endif + return (1u << bits[tpi][0]) + (1u << bits[tpi][1]) + cid->len; +} + + +int +lsquic_tp_encode (const struct transport_params *params, int is_server, + unsigned char *const buf, size_t bufsz) +{ + unsigned char *p; + size_t need; + uint16_t u16; + enum transport_param_id tpi; + unsigned set; + unsigned bits[LAST_TPI + 1][3 /* ID, length, value */]; +#if LSQUIC_TEST_QUANTUM_READINESS + const size_t quantum_sz = lsquic_tp_get_quantum_sz(); +#endif + lsquic_ver_tag_t tag; + int i; + + need = 0; + set = params->tp_set; /* Will turn bits off for default values */ + + if (set & (1 << TPI_INITIAL_SOURCE_CID)) + need += update_cid_bits(bits, TPI_INITIAL_SOURCE_CID, + ¶ms->tp_initial_source_cid); + if (is_server) + { + if (set & (1 << TPI_ORIGINAL_DEST_CID)) + need += update_cid_bits(bits, TPI_ORIGINAL_DEST_CID, + ¶ms->tp_original_dest_cid); + if (set & (1 << TPI_RETRY_SOURCE_CID)) + need += update_cid_bits(bits, TPI_RETRY_SOURCE_CID, + ¶ms->tp_retry_source_cid); + if (set & (1 << TPI_STATELESS_RESET_TOKEN)) + { + bits[TPI_STATELESS_RESET_TOKEN][0] + = vint_val2bits(enum_2_tpi_val[TPI_STATELESS_RESET_TOKEN]); + bits[TPI_STATELESS_RESET_TOKEN][1] + = vint_val2bits(sizeof(params->tp_stateless_reset_token)); + need += (1 << bits[TPI_STATELESS_RESET_TOKEN][0]) + + (1 << bits[TPI_STATELESS_RESET_TOKEN][1]) + + sizeof(params->tp_stateless_reset_token); + } + if (set & (1 << TPI_PREFERRED_ADDRESS)) + { + bits[TPI_PREFERRED_ADDRESS][0] + = vint_val2bits(enum_2_tpi_val[TPI_PREFERRED_ADDRESS]); + bits[TPI_PREFERRED_ADDRESS][1] = vint_val2bits( + preferred_address_size(params)); + need += (1 << bits[TPI_PREFERRED_ADDRESS][0]) + + (1 << bits[TPI_PREFERRED_ADDRESS][1]) + + preferred_address_size(params); + } + } +#if LSQUIC_TEST_QUANTUM_READINESS + if (set & (1 << TPI_QUANTUM_READINESS)) + { + bits[TPI_QUANTUM_READINESS][0] + = vint_val2bits(enum_2_tpi_val[TPI_QUANTUM_READINESS]); + bits[TPI_QUANTUM_READINESS][1] = vint_val2bits(quantum_sz); + need += (1 << bits[TPI_QUANTUM_READINESS][0]) + + (1 << bits[TPI_QUANTUM_READINESS][1]) + + quantum_sz; + } +#endif + + for (tpi = 0; tpi <= MAX_NUMERIC_TPI; ++tpi) + if (set & (1 << tpi)) + { + if (tpi > MAX_NUM_WITH_DEF_TPI + || params->tp_numerics[tpi] != def_vals[tpi]) + { + if (params->tp_numerics[tpi] >= min_vals[tpi] + && params->tp_numerics[tpi] <= max_vals[tpi]) + { + bits[tpi][0] = vint_val2bits(enum_2_tpi_val[tpi]); + bits[tpi][2] = vint_val2bits(params->tp_numerics[tpi]); + bits[tpi][1] = vint_val2bits(bits[tpi][2]); + need += (1 << bits[tpi][0]) + + (1 << bits[tpi][1]) + + (1 << bits[tpi][2]); + } + else if (params->tp_numerics[tpi] > max_vals[tpi]) + { + LSQ_DEBUG("numeric value of %s is too large (%"PRIu64" vs " + "maximum of %"PRIu64")", tpi2str[tpi], + params->tp_numerics[tpi], max_vals[tpi]); + return -1; + } + else + { + LSQ_DEBUG("numeric value of %s is too small (%"PRIu64" vs " + "minimum " "of %"PRIu64")", + tpi2str[tpi], params->tp_numerics[tpi], min_vals[tpi]); + return -1; + } + } + else + set &= ~(1 << tpi); /* Don't write default value */ + } + + for (; tpi <= MAX_EMPTY_TPI; ++tpi) + if (set & (1 << tpi)) + { + bits[tpi][0] = vint_val2bits(enum_2_tpi_val[tpi]); + need += (1 << bits[tpi][0]) + 1 /* Zero length byte */; + } + + if (set & (1 << TPI_VERSION_INFORMATION)) + { + tpi = TPI_VERSION_INFORMATION; + bits[tpi][0] = vint_val2bits(enum_2_tpi_val[tpi]); + bits[tpi][1] = vint_val2bits(params->tp_version_cnt << 2); + need += (1 << bits[tpi][0]) + + (1 << bits[tpi][1]) + + (params->tp_version_cnt << 2); + } + + if (need > bufsz || need > UINT16_MAX) + { + errno = ENOBUFS; + return -1; + } + + p = buf; + +#define WRITE_TO_P(src, len) do { \ + memcpy(p, src, len); \ + p += len; \ +} while (0) + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define WRITE_UINT_TO_P(val, width) do { \ + u##width = bswap_##width(val); \ + WRITE_TO_P(&u##width, sizeof(u##width)); \ +} while (0) +#else +#define WRITE_UINT_TO_P(val, width) do { \ + u##width = val; \ + WRITE_TO_P(&u##width, sizeof(u##width)); \ +} while (0) +#endif + + for (tpi = 0; tpi <= LAST_TPI; ++tpi) + if (set & (1 << tpi)) + { + vint_write(p, enum_2_tpi_val[tpi], bits[tpi][0], + 1 << bits[tpi][0]); + p += 1 << bits[tpi][0]; + switch (tpi) + { + case TPI_MAX_IDLE_TIMEOUT: + case TPI_MAX_UDP_PAYLOAD_SIZE: + case TPI_INIT_MAX_DATA: + case TPI_INIT_MAX_STREAM_DATA_BIDI_LOCAL: + case TPI_INIT_MAX_STREAM_DATA_BIDI_REMOTE: + case TPI_INIT_MAX_STREAM_DATA_UNI: + case TPI_INIT_MAX_STREAMS_BIDI: + case TPI_INIT_MAX_STREAMS_UNI: + case TPI_ACK_DELAY_EXPONENT: + case TPI_MAX_ACK_DELAY: + case TPI_ACTIVE_CONNECTION_ID_LIMIT: + case TPI_LOSS_BITS: + case TPI_MIN_ACK_DELAY: + case TPI_MIN_ACK_DELAY_02: + case TPI_TIMESTAMPS: + case TPI_MAX_DATAGRAM_FRAME_SIZE: + vint_write(p, 1 << bits[tpi][2], bits[tpi][1], + 1 << bits[tpi][1]); + p += 1 << bits[tpi][1]; + vint_write(p, params->tp_numerics[tpi], bits[tpi][2], + 1 << bits[tpi][2]); + p += 1 << bits[tpi][2]; + break; + case TPI_ORIGINAL_DEST_CID: + case TPI_INITIAL_SOURCE_CID: + case TPI_RETRY_SOURCE_CID: + vint_write(p, params->tp_cids[TP_CID_IDX(tpi)].len, bits[tpi][1], + 1 << bits[tpi][1]); + p += 1 << bits[tpi][1]; + WRITE_TO_P(params->tp_cids[TP_CID_IDX(tpi)].idbuf, + params->tp_cids[TP_CID_IDX(tpi)].len); + break; + case TPI_STATELESS_RESET_TOKEN: + vint_write(p, sizeof(params->tp_stateless_reset_token), + bits[tpi][1], 1 << bits[tpi][1]); + p += 1 << bits[tpi][1]; + WRITE_TO_P(params->tp_stateless_reset_token, + sizeof(params->tp_stateless_reset_token)); + break; + case TPI_PREFERRED_ADDRESS: + vint_write(p, preferred_address_size(params), + bits[tpi][1], 1 << bits[tpi][1]); + p += 1 << bits[tpi][1]; + WRITE_TO_P(¶ms->tp_preferred_address.ipv4_addr, + sizeof(params->tp_preferred_address.ipv4_addr)); + WRITE_UINT_TO_P(params->tp_preferred_address.ipv4_port, 16); + WRITE_TO_P(¶ms->tp_preferred_address.ipv6_addr, + sizeof(params->tp_preferred_address.ipv6_addr)); + WRITE_UINT_TO_P(params->tp_preferred_address.ipv6_port, 16); + *p++ = params->tp_preferred_address.cid.len; + WRITE_TO_P(params->tp_preferred_address.cid.idbuf, + params->tp_preferred_address.cid.len); + WRITE_TO_P(params->tp_preferred_address.srst, + sizeof(params->tp_preferred_address.srst)); + break; + case TPI_DISABLE_ACTIVE_MIGRATION: + case TPI_GREASE_QUIC_BIT: + *p++ = 0; + break; +#if LSQUIC_TEST_QUANTUM_READINESS + case TPI_QUANTUM_READINESS: + LSQ_DEBUG("encoded %zd bytes of quantum readiness", quantum_sz); + vint_write(p, quantum_sz, bits[tpi][1], 1 << bits[tpi][1]); + p += 1 << bits[tpi][1]; + memset(p, 'Q', quantum_sz); + p += quantum_sz; + break; +#endif + case TPI_VERSION_INFORMATION: + //FIXME: generate supported version info. + vint_write(p, params->tp_version_cnt << 2, + bits[tpi][1], 1 << bits[tpi][1]); + p += 1 << bits[tpi][1]; + for(i = 0; i < params->tp_version_cnt; ++i) + { + tag = lsquic_ver2tag(params->tp_version_info[i]); + WRITE_TO_P(&tag, 4); + } + break; + } + } + + assert(buf + need == p); + return (int) (p - buf); + +#undef WRITE_TO_P +#undef WRITE_UINT_TO_P +} + + +int +lsquic_tp_decode (const unsigned char *const buf, size_t bufsz, + int is_server, + struct transport_params *params) +{ + const unsigned char *p, *end, *q; + uint64_t len, param_id; + uint16_t tlen; + enum transport_param_id tpi; + unsigned set_of_ids; + int s; + lsquic_ver_tag_t tag; + + p = buf; + end = buf + bufsz; + + *params = TP_INITIALIZER(); + +#define EXPECT_LEN(expected_len) do { \ + if (expected_len != len) \ + return -1; \ +} while (0) + +#define EXPECT_AT_LEAST(expected_len) do { \ + if ((expected_len) > (uintptr_t) (p + len - q)) \ + return -1; \ +} while (0) + + set_of_ids = 0; + while (p < end) + { + s = vint_read(p, end, ¶m_id); + if (s < 0) + return -1; + LSQ_DEBUG("read TP 0x%"PRIX64, param_id); + p += s; + s = vint_read(p, end, &len); + if (s < 0) + return -1; + p += s; + if ((ptrdiff_t) len > end - p) + return -1; + tpi = tpi_val_2_enum(param_id); + if (tpi <= LAST_TPI) + { + if (set_of_ids & (1 << tpi)) + return -1; + set_of_ids |= 1 << tpi; + } + switch (tpi) + { + case TPI_MAX_IDLE_TIMEOUT: + case TPI_MAX_UDP_PAYLOAD_SIZE: + case TPI_INIT_MAX_DATA: + case TPI_INIT_MAX_STREAM_DATA_BIDI_LOCAL: + case TPI_INIT_MAX_STREAM_DATA_BIDI_REMOTE: + case TPI_INIT_MAX_STREAM_DATA_UNI: + case TPI_INIT_MAX_STREAMS_BIDI: + case TPI_INIT_MAX_STREAMS_UNI: + case TPI_ACK_DELAY_EXPONENT: + case TPI_MAX_ACK_DELAY: + case TPI_ACTIVE_CONNECTION_ID_LIMIT: + case TPI_LOSS_BITS: + case TPI_MIN_ACK_DELAY: + case TPI_MIN_ACK_DELAY_02: + case TPI_TIMESTAMPS: + case TPI_MAX_DATAGRAM_FRAME_SIZE: + switch (len) + { + case 1: + case 2: + case 4: + case 8: + s = vint_read(p, p + len, ¶ms->tp_numerics[tpi]); + if (s == (int) len) + { + if (params->tp_numerics[tpi] > max_vals[tpi]) + { + LSQ_DEBUG("numeric value of %s is too large " + "(%"PRIu64" vs maximum of %"PRIu64, tpi2str[tpi], + params->tp_numerics[tpi], max_vals[tpi]); + return -1; + } + else if (params->tp_numerics[tpi] < min_vals[tpi]) + { + LSQ_DEBUG("numeric value of %s is too small " + "(%"PRIu64" vs minimum of %"PRIu64, tpi2str[tpi], + params->tp_numerics[tpi], min_vals[tpi]); + return -1; + } + break; + } + else + { + LSQ_DEBUG("cannot read the value of numeric transport " + "param %s of length %"PRIu64, tpi2str[tpi], len); + return -1; + } + default: + LSQ_DEBUG("invalid length=%"PRIu64" for numeric transport " + "parameter %s", len, tpi2str[tpi]); + return -1; + } + break; + case TPI_DISABLE_ACTIVE_MIGRATION: + case TPI_GREASE_QUIC_BIT: + EXPECT_LEN(0); + break; + case TPI_STATELESS_RESET_TOKEN: + /* Client MUST not include reset token, + * see [draft-ietf-quic-transport-11], Section 6.4.1 + */ + if (!is_server) + return -1; + EXPECT_LEN(sizeof(params->tp_stateless_reset_token)); + memcpy(params->tp_stateless_reset_token, p, + sizeof(params->tp_stateless_reset_token)); + break; + case TPI_ORIGINAL_DEST_CID: + case TPI_RETRY_SOURCE_CID: + /* [draft-ietf-quic-transport-28] Section 18.2: + " A client MUST NOT include any server-only transport parameter: + " original_destination_connection_id, preferred_address, + " retry_source_connection_id, or stateless_reset_token. + */ + if (!is_server) + return -1; + /* fallthru */ + case TPI_INITIAL_SOURCE_CID: + if (len > MAX_CID_LEN) + return -1; + memcpy(params->tp_cids[TP_CID_IDX(tpi)].idbuf, p, len); + params->tp_cids[TP_CID_IDX(tpi)].len = len; + break; + case TPI_PREFERRED_ADDRESS: + /* Client MUST not include preferred address, + * see [draft-ietf-quic-transport-12], Section 6.4.1 + */ + if (!is_server) + return -1; + q = p; + EXPECT_AT_LEAST(sizeof(params->tp_preferred_address.ipv4_addr)); + memcpy(params->tp_preferred_address.ipv4_addr, q, + sizeof(params->tp_preferred_address.ipv4_addr)); + q += sizeof(params->tp_preferred_address.ipv4_addr); + EXPECT_AT_LEAST(sizeof(params->tp_preferred_address.ipv4_port)); + READ_UINT(params->tp_preferred_address.ipv4_port, 16, q, 2); + q += 2; + EXPECT_AT_LEAST(sizeof(params->tp_preferred_address.ipv6_addr)); + memcpy(params->tp_preferred_address.ipv6_addr, q, + sizeof(params->tp_preferred_address.ipv6_addr)); + q += sizeof(params->tp_preferred_address.ipv6_addr); + EXPECT_AT_LEAST(sizeof(params->tp_preferred_address.ipv6_port)); + READ_UINT(params->tp_preferred_address.ipv6_port, 16, q, 2); + q += 2; + EXPECT_AT_LEAST(1); + tlen = *q; + q += 1; + if (tlen > MAX_CID_LEN) + { + LSQ_DEBUG("preferred server address contains invalid " + "CID length of %"PRIu16" bytes", tlen); + return -1; + } + EXPECT_AT_LEAST(tlen); + memcpy(params->tp_preferred_address.cid.idbuf, q, tlen); + params->tp_preferred_address.cid.len = tlen; + q += tlen; + EXPECT_AT_LEAST(sizeof(params->tp_preferred_address.srst)); + memcpy(params->tp_preferred_address.srst, q, + sizeof(params->tp_preferred_address.srst)); + q += sizeof(params->tp_preferred_address.srst); + if (q != p + len) + return -1; + break; + case TPI_VERSION_INFORMATION: + if (len & 0x3) + return -1; + q = p; + while(q < p + len) + { + memmove(&tag, q, 4); + if (tag == 0) + return -1; + int ver = lsquic_tag2ver(tag); + if (ver != -1) + { + if (params->tp_version_cnt > 0) + params->tp_versions |= 1 << ver; + if (params->tp_version_cnt < sizeof(params->tp_version_info)) + params->tp_version_info[params->tp_version_cnt++] = ver; + } + else if (params->tp_version_cnt == 0) + return -1; + q += 4; + } + if (!is_server && (params->tp_versions + & (1 << params->tp_chosen_version)) == 0) + return -1; + break; + default: + /* Do nothing: skip this transport parameter */ + break; + } + p += len; + if (tpi <= LAST_TPI) + { + params->tp_set |= 1 << tpi; + params->tp_decoded |= 1 << tpi; + } + } + + if (p != end) + return -1; + + if ((params->tp_set & (1 << TPI_MIN_ACK_DELAY)) + && params->tp_numerics[TPI_MIN_ACK_DELAY] + > params->tp_numerics[TPI_MAX_ACK_DELAY] * 1000) + { + LSQ_DEBUG("min_ack_delay (%"PRIu64" usec) is larger than " + "max_ack_delay (%"PRIu64" ms)", + params->tp_numerics[TPI_MIN_ACK_DELAY], + params->tp_numerics[TPI_MAX_ACK_DELAY]); + return -1; + } + + if ((params->tp_set & (1 << TPI_MIN_ACK_DELAY_02)) + && params->tp_numerics[TPI_MIN_ACK_DELAY_02] + > params->tp_numerics[TPI_MAX_ACK_DELAY] * 1000) + { + LSQ_DEBUG("min_ack_delay_02 (%"PRIu64" usec) is larger than " + "max_ack_delay (%"PRIu64" ms)", + params->tp_numerics[TPI_MIN_ACK_DELAY_02], + params->tp_numerics[TPI_MAX_ACK_DELAY]); + return -1; + } + + return (int) (end - buf); +#undef EXPECT_LEN +} + + +void +lsquic_tp_to_str (const struct transport_params *params, char *buf, size_t sz) +{ + char *const end = buf + sz; + int nw; + enum transport_param_id tpi; + char tok_str[sizeof(params->tp_stateless_reset_token) * 2 + 1]; + char addr_str[INET6_ADDRSTRLEN]; + int i; + + for (tpi = 0; tpi <= MAX_NUMERIC_TPI; ++tpi) + if (params->tp_set & (1 << tpi)) + { + nw = snprintf(buf, end - buf, "%.*s%s: %"PRIu64, + (buf + sz > end) << 1, "; ", tpi2str[tpi], + params->tp_numerics[tpi]); + buf += nw; + if (buf >= end) + return; + } + for (; tpi <= MAX_EMPTY_TPI; ++tpi) + if (params->tp_set & (1 << tpi)) + { + nw = snprintf(buf, end - buf, "%.*s%s", + (buf + sz > end) << 1, "; ", tpi2str[tpi]); + buf += nw; + if (buf >= end) + return; + } +#if LSQUIC_TEST_QUANTUM_READINESS + if (params->tp_set & (1 << TPI_QUANTUM_READINESS)) + { + nw = snprintf(buf, end - buf, "%.*s%s", + (buf + sz > end) << 1, "; ", tpi2str[TPI_QUANTUM_READINESS]); + buf += nw; + if (buf >= end) + return; + } +#endif + if (params->tp_set & (1 << TPI_STATELESS_RESET_TOKEN)) + { + lsquic_hexstr(params->tp_stateless_reset_token, + sizeof(params->tp_stateless_reset_token), tok_str, sizeof(tok_str)); + nw = snprintf(buf, end - buf, "; stateless_reset_token: %s", tok_str); + buf += nw; + if (buf >= end) + return; + } + for (tpi = FIRST_TP_CID; tpi <= LAST_TP_CID; ++tpi) + if (params->tp_set & (1 << tpi)) + { + char cidbuf_[MAX_CID_LEN * 2 + 1]; + nw = snprintf(buf, end - buf, "; %s: %"CID_FMT, tpi2str[tpi], + CID_BITS(¶ms->tp_cids[TP_CID_IDX(tpi)])); + buf += nw; + if (buf >= end) + return; + } + if (lsquic_tp_has_pref_ipv4(params)) + { + if (inet_ntop(AF_INET, params->tp_preferred_address.ipv4_addr, + addr_str, sizeof(addr_str))) + { + nw = snprintf(buf, end - buf, "; IPv4 preferred address: %s:%u", + addr_str, params->tp_preferred_address.ipv4_port); + buf += nw; + if (buf >= end) + return; + } + } + if (lsquic_tp_has_pref_ipv6(params)) + { + if (inet_ntop(AF_INET6, params->tp_preferred_address.ipv6_addr, + addr_str, sizeof(addr_str))) + { + nw = snprintf(buf, end - buf, "; IPv6 preferred address: %s:%u", + addr_str, params->tp_preferred_address.ipv6_port); + buf += nw; + if (buf >= end) + return; + } + } + if (params->tp_set & (1 << TPI_VERSION_INFORMATION)) + { + nw = snprintf(buf, end - buf, "; version information: chosen: %s, available:", + lsquic_ver2str[params->tp_chosen_version]); + buf += nw; + if (buf >= end) + return; + for(i = 1; i < params->tp_version_cnt; ++i) + { + nw = snprintf(buf, end - buf, " %s", + lsquic_ver2str[params->tp_version_info[i]]); + buf += nw; + if (buf >= end) + return; + } + + } +} + + +int +lsquic_tp_encode_27 (const struct transport_params *params, int is_server, + unsigned char *const buf, size_t bufsz) +{ + unsigned char *p; + size_t need; + uint16_t u16; + enum transport_param_id tpi; + unsigned set; + unsigned bits[LAST_TPI + 1][3 /* ID, length, value */]; +#if LSQUIC_TEST_QUANTUM_READINESS + const size_t quantum_sz = lsquic_tp_get_quantum_sz(); +#endif + + need = 0; + set = params->tp_set; /* Will turn bits off for default values */ + + if (is_server) + { + if (set & (1 << TPI_ORIGINAL_DEST_CID)) + { + bits[TPI_ORIGINAL_DEST_CID][0] + = vint_val2bits(enum_2_tpi_val[TPI_ORIGINAL_DEST_CID]); +#if __GNUC__ +#pragma GCC diagnostic ignored "-Wunknown-pragmas" +#if __clang__ +#pragma GCC diagnostic ignored "-Wtautological-constant-out-of-range-compare" +#else +#pragma GCC diagnostic ignored "-Wtype-limits" +#endif +#endif + bits[TPI_ORIGINAL_DEST_CID][1] + = vint_val2bits(params->tp_original_dest_cid.len); +#if __GNUC__ +#pragma GCC diagnostic pop +#pragma GCC diagnostic pop +#endif + need += (1 << bits[TPI_ORIGINAL_DEST_CID][0]) + + (1 << bits[TPI_ORIGINAL_DEST_CID][1]) + + params->tp_original_dest_cid.len; + } + if (set & (1 << TPI_STATELESS_RESET_TOKEN)) + { + bits[TPI_STATELESS_RESET_TOKEN][0] + = vint_val2bits(enum_2_tpi_val[TPI_STATELESS_RESET_TOKEN]); + bits[TPI_STATELESS_RESET_TOKEN][1] + = vint_val2bits(sizeof(params->tp_stateless_reset_token)); + need += (1 << bits[TPI_STATELESS_RESET_TOKEN][0]) + + (1 << bits[TPI_STATELESS_RESET_TOKEN][1]) + + sizeof(params->tp_stateless_reset_token); + } + if (set & (1 << TPI_PREFERRED_ADDRESS)) + { + bits[TPI_PREFERRED_ADDRESS][0] + = vint_val2bits(enum_2_tpi_val[TPI_PREFERRED_ADDRESS]); + bits[TPI_PREFERRED_ADDRESS][1] = vint_val2bits( + preferred_address_size(params)); + need += (1 << bits[TPI_PREFERRED_ADDRESS][0]) + + (1 << bits[TPI_PREFERRED_ADDRESS][1]) + + preferred_address_size(params); + } + } +#if LSQUIC_TEST_QUANTUM_READINESS + else if (set & (1 << TPI_QUANTUM_READINESS)) + { + bits[TPI_QUANTUM_READINESS][0] + = vint_val2bits(enum_2_tpi_val[TPI_QUANTUM_READINESS]); + bits[TPI_QUANTUM_READINESS][1] = vint_val2bits(quantum_sz); + need += (1 << bits[TPI_QUANTUM_READINESS][0]) + + (1 << bits[TPI_QUANTUM_READINESS][1]) + + quantum_sz; + } +#endif + + for (tpi = 0; tpi <= MAX_NUMERIC_TPI; ++tpi) + if (set & (1 << tpi)) + { + if (tpi > MAX_NUM_WITH_DEF_TPI + || params->tp_numerics[tpi] != def_vals[tpi]) + { + if (params->tp_numerics[tpi] >= min_vals[tpi] + && params->tp_numerics[tpi] <= max_vals[tpi]) + { + bits[tpi][0] = vint_val2bits(enum_2_tpi_val[tpi]); + bits[tpi][2] = vint_val2bits(params->tp_numerics[tpi]); + bits[tpi][1] = vint_val2bits(bits[tpi][2]); + need += (1 << bits[tpi][0]) + + (1 << bits[tpi][1]) + + (1 << bits[tpi][2]); + } + else if (params->tp_numerics[tpi] > max_vals[tpi]) + { + LSQ_DEBUG("numeric value of %s is too large (%"PRIu64" vs " + "maximum of %"PRIu64")", tpi2str[tpi], + params->tp_numerics[tpi], max_vals[tpi]); + return -1; + } + else + { + LSQ_DEBUG("numeric value of %s is too small (%"PRIu64" vs " + "minimum " "of %"PRIu64")", + tpi2str[tpi], params->tp_numerics[tpi], min_vals[tpi]); + return -1; + } + } + else + set &= ~(1 << tpi); /* Don't write default value */ + } + + for (; tpi <= MAX_EMPTY_TPI; ++tpi) + if (set & (1 << tpi)) + { + bits[tpi][0] = vint_val2bits(enum_2_tpi_val[tpi]); + need += (1 << bits[tpi][0]) + 1 /* Zero length byte */; + } + + if (need > bufsz || need > UINT16_MAX) + { + errno = ENOBUFS; + return -1; + } + + p = buf; + +#define WRITE_TO_P(src, len) do { \ + memcpy(p, src, len); \ + p += len; \ +} while (0) + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define WRITE_UINT_TO_P(val, width) do { \ + u##width = bswap_##width(val); \ + WRITE_TO_P(&u##width, sizeof(u##width)); \ +} while (0) +#else +#define WRITE_UINT_TO_P(val, width) do { \ + u##width = val; \ + WRITE_TO_P(&u##width, sizeof(u##width)); \ +} while (0) +#endif + + for (tpi = 0; tpi <= LAST_TPI; ++tpi) + if (set & (1 << tpi)) + { + vint_write(p, enum_2_tpi_val[tpi], bits[tpi][0], + 1 << bits[tpi][0]); + p += 1 << bits[tpi][0]; + switch (tpi) + { + case TPI_MAX_IDLE_TIMEOUT: + case TPI_MAX_UDP_PAYLOAD_SIZE: + case TPI_INIT_MAX_DATA: + case TPI_INIT_MAX_STREAM_DATA_BIDI_LOCAL: + case TPI_INIT_MAX_STREAM_DATA_BIDI_REMOTE: + case TPI_INIT_MAX_STREAM_DATA_UNI: + case TPI_INIT_MAX_STREAMS_BIDI: + case TPI_INIT_MAX_STREAMS_UNI: + case TPI_ACK_DELAY_EXPONENT: + case TPI_MAX_ACK_DELAY: + case TPI_ACTIVE_CONNECTION_ID_LIMIT: + case TPI_LOSS_BITS: + case TPI_MIN_ACK_DELAY: + case TPI_MIN_ACK_DELAY_02: + case TPI_TIMESTAMPS: + case TPI_MAX_DATAGRAM_FRAME_SIZE: + vint_write(p, 1 << bits[tpi][2], bits[tpi][1], + 1 << bits[tpi][1]); + p += 1 << bits[tpi][1]; + vint_write(p, params->tp_numerics[tpi], bits[tpi][2], + 1 << bits[tpi][2]); + p += 1 << bits[tpi][2]; + break; + case TPI_INITIAL_SOURCE_CID: + case TPI_RETRY_SOURCE_CID: + assert(0); + return -1; + case TPI_ORIGINAL_DEST_CID: + vint_write(p, params->tp_original_dest_cid.len, bits[tpi][1], + 1 << bits[tpi][1]); + p += 1 << bits[tpi][1]; + WRITE_TO_P(params->tp_original_dest_cid.idbuf, + params->tp_original_dest_cid.len); + break; + case TPI_STATELESS_RESET_TOKEN: + vint_write(p, sizeof(params->tp_stateless_reset_token), + bits[tpi][1], 1 << bits[tpi][1]); + p += 1 << bits[tpi][1]; + WRITE_TO_P(params->tp_stateless_reset_token, + sizeof(params->tp_stateless_reset_token)); + break; + case TPI_PREFERRED_ADDRESS: + vint_write(p, preferred_address_size(params), + bits[tpi][1], 1 << bits[tpi][1]); + p += 1 << bits[tpi][1]; + WRITE_TO_P(¶ms->tp_preferred_address.ipv4_addr, + sizeof(params->tp_preferred_address.ipv4_addr)); + WRITE_UINT_TO_P(params->tp_preferred_address.ipv4_port, 16); + WRITE_TO_P(¶ms->tp_preferred_address.ipv6_addr, + sizeof(params->tp_preferred_address.ipv6_addr)); + WRITE_UINT_TO_P(params->tp_preferred_address.ipv6_port, 16); + *p++ = params->tp_preferred_address.cid.len; + WRITE_TO_P(params->tp_preferred_address.cid.idbuf, + params->tp_preferred_address.cid.len); + WRITE_TO_P(params->tp_preferred_address.srst, + sizeof(params->tp_preferred_address.srst)); + break; + case TPI_DISABLE_ACTIVE_MIGRATION: + case TPI_GREASE_QUIC_BIT: + *p++ = 0; + break; +#if LSQUIC_TEST_QUANTUM_READINESS + case TPI_QUANTUM_READINESS: + LSQ_DEBUG("encoded %zd bytes of quantum readiness", quantum_sz); + vint_write(p, quantum_sz, bits[tpi][1], 1 << bits[tpi][1]); + p += 1 << bits[tpi][1]; + memset(p, 'Q', quantum_sz); + p += quantum_sz; + break; +#endif + case TPI_VERSION_INFORMATION: + break; + } + } + + assert(buf + need == p); + return (int) (p - buf); + +#undef WRITE_TO_P +#undef WRITE_UINT_TO_P +} + + +int +lsquic_tp_decode_27 (const unsigned char *const buf, size_t bufsz, + int is_server, + struct transport_params *params) +{ + const unsigned char *p, *end, *q; + uint64_t len, param_id; + uint16_t tlen; + enum transport_param_id tpi; + unsigned set_of_ids; + int s; + + p = buf; + end = buf + bufsz; + + *params = TP_INITIALIZER(); + +#define EXPECT_LEN(expected_len) do { \ + if (expected_len != len) \ + return -1; \ +} while (0) + +#define EXPECT_AT_LEAST(expected_len) do { \ + if ((expected_len) > (uintptr_t) (p + len - q)) \ + return -1; \ +} while (0) + + set_of_ids = 0; + while (p < end) + { + s = vint_read(p, end, ¶m_id); + if (s < 0) + return -1; + p += s; + s = vint_read(p, end, &len); + if (s < 0) + return -1; + p += s; + if ((ptrdiff_t) len > end - p) + return -1; + tpi = tpi_val_2_enum(param_id); + if (tpi <= LAST_TPI) + { + if (set_of_ids & (1 << tpi)) + return -1; + set_of_ids |= 1 << tpi; + } + switch (tpi) + { + case TPI_MAX_IDLE_TIMEOUT: + case TPI_MAX_UDP_PAYLOAD_SIZE: + case TPI_INIT_MAX_DATA: + case TPI_INIT_MAX_STREAM_DATA_BIDI_LOCAL: + case TPI_INIT_MAX_STREAM_DATA_BIDI_REMOTE: + case TPI_INIT_MAX_STREAM_DATA_UNI: + case TPI_INIT_MAX_STREAMS_BIDI: + case TPI_INIT_MAX_STREAMS_UNI: + case TPI_ACK_DELAY_EXPONENT: + case TPI_MAX_ACK_DELAY: + case TPI_ACTIVE_CONNECTION_ID_LIMIT: + case TPI_LOSS_BITS: + case TPI_MIN_ACK_DELAY: + case TPI_MIN_ACK_DELAY_02: + case TPI_TIMESTAMPS: + case TPI_MAX_DATAGRAM_FRAME_SIZE: + switch (len) + { + case 1: + case 2: + case 4: + case 8: + s = vint_read(p, p + len, ¶ms->tp_numerics[tpi]); + if (s == (int) len) + { + if (params->tp_numerics[tpi] > max_vals[tpi]) + { + LSQ_DEBUG("numeric value of %s is too large " + "(%"PRIu64" vs maximum of %"PRIu64, tpi2str[tpi], + params->tp_numerics[tpi], max_vals[tpi]); + return -1; + } + else if (params->tp_numerics[tpi] < min_vals[tpi]) + { + LSQ_DEBUG("numeric value of %s is too small " + "(%"PRIu64" vs minimum of %"PRIu64, tpi2str[tpi], + params->tp_numerics[tpi], min_vals[tpi]); + return -1; + } + break; + } + else + { + LSQ_DEBUG("cannot read the value of numeric transport " + "param %s of length %"PRIu64, tpi2str[tpi], len); + return -1; + } + default: + LSQ_DEBUG("invalid length=%"PRIu64" for numeric transport " + "parameter %s", len, tpi2str[tpi]); + return -1; + } + break; + case TPI_DISABLE_ACTIVE_MIGRATION: + EXPECT_LEN(0); + break; + case TPI_STATELESS_RESET_TOKEN: + /* Client MUST not include reset token, + * see [draft-ietf-quic-transport-11], Section 6.4.1 + */ + if (!is_server) + return -1; + EXPECT_LEN(sizeof(params->tp_stateless_reset_token)); + memcpy(params->tp_stateless_reset_token, p, + sizeof(params->tp_stateless_reset_token)); + break; + case TPI_ORIGINAL_DEST_CID: + /* Client MUST not original connecti ID, + * see [draft-ietf-quic-transport-15], Section 6.6.1 + */ + if (!is_server) + return -1; + if (len > MAX_CID_LEN) + return -1; + memcpy(params->tp_original_dest_cid.idbuf, p, len); + params->tp_original_dest_cid.len = len; + break; + case TPI_PREFERRED_ADDRESS: + /* Client MUST not include preferred address, + * see [draft-ietf-quic-transport-12], Section 6.4.1 + */ + if (!is_server) + return -1; + q = p; + EXPECT_AT_LEAST(sizeof(params->tp_preferred_address.ipv4_addr)); + memcpy(params->tp_preferred_address.ipv4_addr, q, + sizeof(params->tp_preferred_address.ipv4_addr)); + q += sizeof(params->tp_preferred_address.ipv4_addr); + EXPECT_AT_LEAST(sizeof(params->tp_preferred_address.ipv4_port)); + READ_UINT(params->tp_preferred_address.ipv4_port, 16, q, 2); + q += 2; + EXPECT_AT_LEAST(sizeof(params->tp_preferred_address.ipv6_addr)); + memcpy(params->tp_preferred_address.ipv6_addr, q, + sizeof(params->tp_preferred_address.ipv6_addr)); + q += sizeof(params->tp_preferred_address.ipv6_addr); + EXPECT_AT_LEAST(sizeof(params->tp_preferred_address.ipv6_port)); + READ_UINT(params->tp_preferred_address.ipv6_port, 16, q, 2); + q += 2; + EXPECT_AT_LEAST(1); + tlen = *q; + q += 1; + if (tlen > MAX_CID_LEN) + { + LSQ_DEBUG("preferred server address contains invalid " + "CID length of %"PRIu16" bytes", tlen); + return -1; + } + EXPECT_AT_LEAST(tlen); + memcpy(params->tp_preferred_address.cid.idbuf, q, tlen); + params->tp_preferred_address.cid.len = tlen; + q += tlen; + EXPECT_AT_LEAST(sizeof(params->tp_preferred_address.srst)); + memcpy(params->tp_preferred_address.srst, q, + sizeof(params->tp_preferred_address.srst)); + q += sizeof(params->tp_preferred_address.srst); + if (q != p + len) + return -1; + break; + default: + /* Do nothing: skip this transport parameter */ + break; + } + p += len; + if (tpi <= LAST_TPI) + { + params->tp_set |= 1 << tpi; + params->tp_decoded |= 1 << tpi; + } + } + + if (p != end) + return -1; + + if ((params->tp_set & (1 << TPI_MIN_ACK_DELAY)) + && params->tp_numerics[TPI_MIN_ACK_DELAY] + > params->tp_numerics[TPI_MAX_ACK_DELAY] * 1000) + { + LSQ_DEBUG("min_ack_delay (%"PRIu64" usec) is larger than " + "max_ack_delay (%"PRIu64" ms)", + params->tp_numerics[TPI_MIN_ACK_DELAY], + params->tp_numerics[TPI_MAX_ACK_DELAY]); + return -1; + } + + if ((params->tp_set & (1 << TPI_MIN_ACK_DELAY_02)) + && params->tp_numerics[TPI_MIN_ACK_DELAY_02] + > params->tp_numerics[TPI_MAX_ACK_DELAY] * 1000) + { + LSQ_DEBUG("min_ack_delay_02 (%"PRIu64" usec) is larger than " + "max_ack_delay (%"PRIu64" ms)", + params->tp_numerics[TPI_MIN_ACK_DELAY_02], + params->tp_numerics[TPI_MAX_ACK_DELAY]); + return -1; + } + + return (int) (end - buf); +#undef EXPECT_LEN +} + + +void +lsquic_tp_to_str_27 (const struct transport_params *params, char *buf, size_t sz) +{ + char *const end = buf + sz; + int nw; + enum transport_param_id tpi; + char tok_str[sizeof(params->tp_stateless_reset_token) * 2 + 1]; + char addr_str[INET6_ADDRSTRLEN]; + + for (tpi = 0; tpi <= MAX_NUMERIC_TPI; ++tpi) + if (params->tp_set & (1 << tpi)) + { + nw = snprintf(buf, end - buf, "%.*s%s: %"PRIu64, + (buf + sz > end) << 1, "; ", tpi2str[tpi], + params->tp_numerics[tpi]); + buf += nw; + if (buf >= end) + return; + } + for (; tpi <= MAX_EMPTY_TPI; ++tpi) + if (params->tp_set & (1 << tpi)) + { + nw = snprintf(buf, end - buf, "%.*s%s", + (buf + sz > end) << 1, "; ", tpi2str[tpi]); + buf += nw; + if (buf >= end) + return; + } +#if LSQUIC_TEST_QUANTUM_READINESS + if (params->tp_set & (1 << TPI_QUANTUM_READINESS)) + { + nw = snprintf(buf, end - buf, "%.*s%s", + (buf + sz > end) << 1, "; ", tpi2str[TPI_QUANTUM_READINESS]); + buf += nw; + if (buf >= end) + return; + } +#endif + if (params->tp_set & (1 << TPI_STATELESS_RESET_TOKEN)) + { + lsquic_hexstr(params->tp_stateless_reset_token, + sizeof(params->tp_stateless_reset_token), tok_str, sizeof(tok_str)); + nw = snprintf(buf, end - buf, "; stateless_reset_token: %s", tok_str); + buf += nw; + if (buf >= end) + return; + } + if (params->tp_set & (1 << TPI_ORIGINAL_DEST_CID)) + { + char cidbuf_[MAX_CID_LEN * 2 + 1]; + nw = snprintf(buf, end - buf, "; original DCID (ODCID): %"CID_FMT, + CID_BITS(¶ms->tp_original_dest_cid)); + buf += nw; + if (buf >= end) + return; + } + if (lsquic_tp_has_pref_ipv4(params)) + { + if (inet_ntop(AF_INET, params->tp_preferred_address.ipv4_addr, + addr_str, sizeof(addr_str))) + { + nw = snprintf(buf, end - buf, "; IPv4 preferred address: %s:%u", + addr_str, params->tp_preferred_address.ipv4_port); + buf += nw; + if (buf >= end) + return; + } + } + if (lsquic_tp_has_pref_ipv6(params)) + { + if (inet_ntop(AF_INET6, params->tp_preferred_address.ipv6_addr, + addr_str, sizeof(addr_str))) + { + nw = snprintf(buf, end - buf, "; IPv6 preferred address: %s:%u", + addr_str, params->tp_preferred_address.ipv6_port); + buf += nw; + if (buf >= end) + return; + } + } +} diff --git a/external/lsquic/src/liblsquic/lsquic_trans_params.h b/external/lsquic/src/liblsquic/lsquic_trans_params.h new file mode 100644 index 0000000..2521815 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_trans_params.h @@ -0,0 +1,235 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_trans_params.h -- Transport parameters types and functions. + */ + +#ifndef LSQUIC_TRANS_PARAMS_H +#define LSQUIC_TRANS_PARAMS_H 1 + +/* Transport parameters are grouped by the type of their values: numeric, + * empty, and custom. + * + * The enum values are arbitrary. The literal transport parameter ID + * *values* (e.g. 0x1057 for loss bits) are not exposed by the API. + */ +enum transport_param_id +{ + /* + * Numeric transport parameters that have default values: + */ + TPI_MAX_IDLE_TIMEOUT, + TPI_MAX_UDP_PAYLOAD_SIZE, + TPI_INIT_MAX_DATA, + TPI_INIT_MAX_STREAM_DATA_BIDI_LOCAL, + TPI_INIT_MAX_STREAM_DATA_BIDI_REMOTE, + TPI_INIT_MAX_STREAM_DATA_UNI, + TPI_INIT_MAX_STREAMS_BIDI, + TPI_INIT_MAX_STREAMS_UNI, + TPI_ACK_DELAY_EXPONENT, + TPI_MAX_ACK_DELAY, + TPI_ACTIVE_CONNECTION_ID_LIMIT, MAX_NUM_WITH_DEF_TPI = TPI_ACTIVE_CONNECTION_ID_LIMIT, + + /* + * Numeric transport parameters without default values: + */ + TPI_MIN_ACK_DELAY, + /* The _02 version of MIN_ACK_DELAY is to support -02 version of the + * draft. Functionally, it's exactly the same as -01, but without the + * extra enum there is no easy way to keep encoding and decoding simple. + * Because we support both, we don't care which one the peer selects. + * If the peer, like us, also sends both, we *assume* that the two + * versions of the transport parameter carry the same values. + */ + TPI_MIN_ACK_DELAY_02, + TPI_TIMESTAMPS, + TPI_MAX_DATAGRAM_FRAME_SIZE, + TPI_LOSS_BITS, MAX_NUMERIC_TPI = TPI_LOSS_BITS, + + /* + * Empty transport parameters: + */ + TPI_GREASE_QUIC_BIT, + TPI_DISABLE_ACTIVE_MIGRATION, MAX_EMPTY_TPI = TPI_DISABLE_ACTIVE_MIGRATION, + + /* + * Custom handlers: + */ + TPI_PREFERRED_ADDRESS, + /* CIDs must be in a contiguous range for tp_cids array to work */ +#define FIRST_TP_CID TPI_ORIGINAL_DEST_CID + TPI_ORIGINAL_DEST_CID, + TPI_INITIAL_SOURCE_CID, +#define LAST_TP_CID TPI_RETRY_SOURCE_CID + TPI_RETRY_SOURCE_CID, +#if LSQUIC_TEST_QUANTUM_READINESS + TPI_QUANTUM_READINESS, +#endif + TPI_VERSION_INFORMATION, + TPI_STATELESS_RESET_TOKEN, LAST_TPI = TPI_STATELESS_RESET_TOKEN +}; + +#define TP_CID_IDX(tpi_) ((tpi_) - FIRST_TP_CID) + + +struct transport_params +{ + /* Which transport parameters values are set: */ + unsigned tp_set; + + /* Which transport parameters were present (set by the decoder): */ + unsigned tp_decoded; + + uint64_t tp_numerics[MAX_NUMERIC_TPI + 1]; + +#define tp_init_max_stream_data_bidi_local tp_numerics[TPI_INIT_MAX_STREAM_DATA_BIDI_LOCAL] +#define tp_init_max_stream_data_bidi_remote tp_numerics[TPI_INIT_MAX_STREAM_DATA_BIDI_REMOTE] +#define tp_init_max_stream_data_uni tp_numerics[TPI_INIT_MAX_STREAM_DATA_UNI] +#define tp_init_max_data tp_numerics[TPI_INIT_MAX_DATA] +#define tp_max_idle_timeout tp_numerics[TPI_MAX_IDLE_TIMEOUT] +#define tp_init_max_streams_bidi tp_numerics[TPI_INIT_MAX_STREAMS_BIDI] +#define tp_init_max_streams_uni tp_numerics[TPI_INIT_MAX_STREAMS_UNI] +#define tp_max_udp_payload_size tp_numerics[TPI_MAX_UDP_PAYLOAD_SIZE] +#define tp_ack_delay_exponent tp_numerics[TPI_ACK_DELAY_EXPONENT] +#define tp_max_ack_delay tp_numerics[TPI_MAX_ACK_DELAY] +#define tp_active_connection_id_limit tp_numerics[TPI_ACTIVE_CONNECTION_ID_LIMIT] +#define tp_loss_bits tp_numerics[TPI_LOSS_BITS] + + uint8_t tp_stateless_reset_token[IQUIC_SRESET_TOKEN_SZ]; + struct { + uint8_t ipv4_addr[4]; + uint16_t ipv4_port; + uint8_t ipv6_addr[16]; + uint16_t ipv6_port; + lsquic_cid_t cid; + uint8_t srst[IQUIC_SRESET_TOKEN_SZ]; + } tp_preferred_address; + lsquic_cid_t tp_cids[3]; +#define tp_original_dest_cid tp_cids[TP_CID_IDX(TPI_ORIGINAL_DEST_CID)] +#define tp_initial_source_cid tp_cids[TP_CID_IDX(TPI_INITIAL_SOURCE_CID)] +#define tp_retry_source_cid tp_cids[TP_CID_IDX(TPI_RETRY_SOURCE_CID)] + unsigned tp_versions; + uint8_t tp_version_cnt; + uint8_t tp_version_info[7]; +#define tp_chosen_version tp_version_info[0] +}; + +#define MAX_TP_STR_SZ ((LAST_TPI + 1) * \ + (34 /* longest entry in tt2str */ + 2 /* semicolon */ + 2 /* colon */) \ + + INET_ADDRSTRLEN + INET6_ADDRSTRLEN + 5 /* Port */ * 2 \ + + MAX_CID_LEN * 2 * 4 /* there are four CIDs */ \ + + 11 * (MAX_NUMERIC_TPI + 1) \ + + IQUIC_SRESET_TOKEN_SZ * 2 * 2 /* there are two reset tokens */) + +#define TP_DEF_MAX_UDP_PAYLOAD_SIZE 65527 +#define TP_DEF_ACK_DELAY_EXP 3 +#define TP_DEF_INIT_MAX_STREAMS_UNI 0 +#define TP_DEF_INIT_MAX_STREAMS_BIDI 0 +#define TP_DEF_INIT_MAX_DATA 0 +#define TP_DEF_DISABLE_ACTIVE_MIGRATION 0 +#define TP_DEF_INIT_MAX_STREAM_DATA_BIDI_LOCAL 0 +#define TP_DEF_INIT_MAX_STREAM_DATA_BIDI_REMOTE 0 +#define TP_DEF_INIT_MAX_STREAM_DATA_UNI 0 +#define TP_DEF_MAX_IDLE_TIMEOUT 0 +#define TP_DEF_MAX_ACK_DELAY 25u +#define TP_DEF_ACTIVE_CONNECTION_ID_LIMIT 2 + +/* [draft-ietf-quic-transport-34], Section 18.2 */ +#define TP_MAX_ACK_DELAY_EXP 20 + +/* [draft-ietf-quic-transport-18], Section 18.1 */ +#define TP_MAX_MAX_ACK_DELAY ((1u << 14) - 1) + +#define TP_DEFAULT_VALUES \ + .tp_set = ((1 << (MAX_NUM_WITH_DEF_TPI + 1)) - 1), \ + .tp_active_connection_id_limit = TP_DEF_ACTIVE_CONNECTION_ID_LIMIT, \ + .tp_max_idle_timeout = TP_DEF_MAX_IDLE_TIMEOUT, \ + .tp_max_ack_delay = TP_DEF_MAX_ACK_DELAY, \ + .tp_max_udp_payload_size = TP_DEF_MAX_UDP_PAYLOAD_SIZE, \ + .tp_ack_delay_exponent = TP_DEF_ACK_DELAY_EXP, \ + .tp_init_max_streams_bidi = TP_DEF_INIT_MAX_STREAMS_BIDI, \ + .tp_init_max_streams_uni = TP_DEF_INIT_MAX_STREAMS_UNI, \ + .tp_init_max_data = TP_DEF_INIT_MAX_DATA, \ + .tp_init_max_stream_data_bidi_local = TP_DEF_INIT_MAX_STREAM_DATA_BIDI_LOCAL, \ + .tp_init_max_stream_data_bidi_remote = TP_DEF_INIT_MAX_STREAM_DATA_BIDI_REMOTE, \ + .tp_init_max_stream_data_uni = TP_DEF_INIT_MAX_STREAM_DATA_UNI + +#define TP_INITIALIZER() (struct transport_params) { TP_DEFAULT_VALUES } + +int +lsquic_tp_encode (const struct transport_params *, int is_server, + unsigned char *const buf, size_t bufsz); + +int +lsquic_tp_decode (const unsigned char *const buf, size_t bufsz, + /* This argument specifies whose transport parameters we are parsing. If + * true, we are parsing parameters sent by the server; if false, we are + * parsing parameteres sent by the client. + */ + int is_server, + struct transport_params *); + +void +lsquic_tp_to_str (const struct transport_params *params, char *buf, size_t sz); + +int +lsquic_tp_encode_27 (const struct transport_params *, int is_server, + unsigned char *const buf, size_t bufsz); + +int +lsquic_tp_decode_27 (const unsigned char *const buf, size_t bufsz, + int is_server, + struct transport_params *); + +void +lsquic_tp_to_str_27 (const struct transport_params *params, char *buf, size_t sz); + +int +lsquic_tp_has_pref_ipv4 (const struct transport_params *); + +int +lsquic_tp_has_pref_ipv6 (const struct transport_params *); + +extern const char * const lsquic_tpi2str[LAST_TPI + 1]; + +/* From [draft-huitema-quic-ts-03] */ +#define TS_WANT_THEM 1 +#define TS_GENERATE_THEM 2 + +#if LSQUIC_TEST_QUANTUM_READINESS +size_t +lsquic_tp_get_quantum_sz (void); +#endif + +#define SERVER_0RTT_TPS (0 \ + /* [draft-ietf-quic-transport-31] Section 7.4.1: */ \ + | (1 << TPI_ACTIVE_CONNECTION_ID_LIMIT) \ + | (1 << TPI_INIT_MAX_DATA) \ + | (1 << TPI_INIT_MAX_STREAMS_UNI) \ + | (1 << TPI_INIT_MAX_STREAMS_BIDI) \ + | (1 << TPI_INIT_MAX_STREAM_DATA_BIDI_LOCAL) \ + | (1 << TPI_INIT_MAX_STREAM_DATA_BIDI_REMOTE) \ + | (1 << TPI_INIT_MAX_STREAM_DATA_UNI) \ + | (1 << TPI_MAX_IDLE_TIMEOUT) \ + | (1 << TPI_MAX_UDP_PAYLOAD_SIZE) \ + | (1 << TPI_DISABLE_ACTIVE_MIGRATION) \ + /* Not including TPI_LOSS_BITS, see */ \ + /* draft-ferrieuxhamchaoui-quic-lossbits-03, Section 5.1 */ \ + /* [draft-ietf-quic-datagram-01] Section 3: */ \ + | (1 << TPI_MAX_DATAGRAM_FRAME_SIZE) \ + /* [draft-iyengar-quic-delayed-ack-01] does not specfiy, store: */ \ + | (1 << TPI_MIN_ACK_DELAY) \ + /* [draft-iyengar-quic-delayed-ack-02] does not specfiy, store: */ \ + | (1 << TPI_MIN_ACK_DELAY_02) \ + /* [draft-huitema-quic-ts-03] does not specfiy, store: */ \ + | (1 << TPI_TIMESTAMPS) \ +) + +/* We always send the minimum ACK delay as 10ms; it is not configurable. + * There is nothing special about this particular value, except that it + * is not "too small" -- that is, it's within an order of magnitude from + * the maximum ACK delay of 25ms. 10ms seems like a safe lower bound for + * the ACK delay without performing more research. + */ +#define TP_MIN_ACK_DELAY 10000u + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_trechist.c b/external/lsquic/src/liblsquic/lsquic_trechist.c new file mode 100644 index 0000000..bb6d4ad --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_trechist.c @@ -0,0 +1,249 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include + +#include "lsquic_int_types.h" +#include "lsquic_trechist.h" + + +static unsigned +find_free_slot (uint32_t slots) +{ +#if __GNUC__ + return __builtin_ctz(~slots); +#else + unsigned n; + + slots =~ slots; + n = 0; + + if (0 == (slots & ((1ULL << 16) - 1))) { n += 16; slots >>= 16; } + if (0 == (slots & ((1ULL << 8) - 1))) { n += 8; slots >>= 8; } + if (0 == (slots & ((1ULL << 4) - 1))) { n += 4; slots >>= 4; } + if (0 == (slots & ((1ULL << 2) - 1))) { n += 2; slots >>= 2; } + if (0 == (slots & ((1ULL << 1) - 1))) { n += 1; slots >>= 1; } + return n; +#endif +} + + +/* When capacity is reached, smallest element is removed. When the number + * of elements in a single range cannot be represented by te_count, an + * error is returned. This is the only error this function returns. + */ +int +lsquic_trechist_insert (trechist_mask_t *mask, struct trechist_elem *elems, + uint32_t packno) +{ + struct trechist_elem *el, *prev, *cur, *next; + unsigned idx; + + if (*mask == 0) + { + elems[0].te_low = packno; + elems[0].te_count = 1; + elems[0].te_next = 0; + *mask |= 1; + return 0; + } + + el = elems; + prev = NULL; + while (1) + { + if (packno > TE_HIGH(el) + 1) + goto insert_before; + if (packno == el->te_low - 1) + { + if (el->te_next && el->te_low == TE_HIGH(&elems[el->te_next]) + 2) + { + if (el->te_count + elems[el->te_next].te_count - 1 > UCHAR_MAX) + return -1; + *mask &= ~(1u << el->te_next); + el->te_count += elems[el->te_next].te_count + 1; + el->te_low = elems[el->te_next].te_low; + el->te_next = elems[el->te_next].te_next; + } + else + { + if (el->te_count == UCHAR_MAX) + return -1; + --el->te_low; + ++el->te_count; + } + return 0; + } + if (packno == TE_HIGH(el) + 1) + { + if (el->te_count == UCHAR_MAX) + return -1; + ++el->te_count; + return 0; + } + if (packno >= el->te_low && packno <= TE_HIGH(el)) + return 0; /* Dup */ + if (!el->te_next) + break; /* insert tail */ + prev = el; + el = &elems[el->te_next]; + } + + if (*mask == TRECHIST_MAX_RANGES_MASK) + /* No need to insert element smaller than the smallest element + * already in our list. The new element "overflows". + */ + return 0; + + idx = find_free_slot(*mask); + elems[idx].te_low = packno; + elems[idx].te_count = 1; + elems[idx].te_next = 0; + *mask |= 1u << idx;; + el->te_next = idx; + return 0; + + insert_before: + + if (*mask != TRECHIST_MAX_RANGES_MASK) + idx = find_free_slot(*mask); + else + { /* Drop last element and reuse its slot */ + for (next = &elems[el->te_next], cur = el; next->te_next; + cur = next, next = &elems[cur->te_next]) + ; + idx = cur->te_next; + cur->te_next = 0; + } + + *mask |= 1u << idx;; + if (el == elems) + { + elems[idx] = *el; + elems[0].te_low = packno; + elems[0].te_count = 1; + elems[0].te_next = idx; + } + else + { + assert(prev); + elems[idx].te_low = packno; + elems[idx].te_count = 1; + elems[idx].te_next = prev->te_next; + prev->te_next = idx; + } + + return 0; +} + + +void +lsquic_trechist_iter (struct trechist_iter *iter, trechist_mask_t mask, + const struct trechist_elem *elems) +{ + iter->mask = mask; + iter->elems = elems; +} + + +const struct lsquic_packno_range * +lsquic_trechist_first (void *iter_p) +{ + struct trechist_iter *const iter = iter_p; + + if (iter->mask == 0) + return NULL; + + iter->next = iter->elems[0].te_next; + iter->range.low = iter->elems[0].te_low; + iter->range.high = TE_HIGH(&iter->elems[0]); + return &iter->range; +} + + +const struct lsquic_packno_range * +lsquic_trechist_next (void *iter_p) +{ + struct trechist_iter *const iter = iter_p; + + if (iter->next == 0) + return NULL; + + iter->range.low = iter->elems[iter->next].te_low; + iter->range.high = TE_HIGH(&iter->elems[iter->next]); + iter->next = iter->elems[iter->next].te_next; + return &iter->range; +} + + +/* First TRECHIST_MAX_RANGES ranges are copied */ +void +lsquic_trechist_copy_ranges (trechist_mask_t *mask, + struct trechist_elem *elems, void *src_rechist, + const struct lsquic_packno_range * (*first) (void *), + const struct lsquic_packno_range * (*next) (void *)) +{ + const struct lsquic_packno_range *range; + struct trechist_elem *el; + unsigned i; + + for (el = NULL, i = 0, range = first(src_rechist); + i < TRECHIST_MAX_RANGES && range; + range = next(src_rechist), ++i) + { + /* This should never happen: */ + assert(range->high - range->low + 1 <= UINT_MAX); + + el = &elems[i]; + el->te_low = range->low; + el->te_count = range->high - range->low + 1; + el->te_next = i + 1; + } + + if (el) + el->te_next = 0; + + if (i < 32) + *mask = (1u << i) - 1; + else + *mask = UINT32_MAX; +} + + +int +lsquic_trechist_contains (trechist_mask_t mask, + const struct trechist_elem *elems, uint32_t packno) +{ + const struct trechist_elem *el; + if (mask == 0) + return 0; + + el = &elems[0]; + while (1) + { + if (packno > TE_HIGH(el)) + return 0; + if (packno >= el->te_low) + return 1; + if (el->te_next) + el = &elems[el->te_next]; + else + break; + } + + return 0; +} + + +uint32_t +lsquic_trechist_max (trechist_mask_t mask, const struct trechist_elem *elems) +{ + if (mask) + { + assert(mask & 1); + return TE_HIGH(&elems[0]); + } + else + return 0; +} diff --git a/external/lsquic/src/liblsquic/lsquic_trechist.h b/external/lsquic/src/liblsquic/lsquic_trechist.h new file mode 100644 index 0000000..6b69e0e --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_trechist.h @@ -0,0 +1,75 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * Tiny receive history. It is used in IETF mini connection, where we want + * to use as little memory as possible. This data structure is an array of + * packet ranges. Each packet range is six bytes. This is possible because + * initial packets must not be wider than four bytes. + * + * Another limitation of this history is that it never shrinks. (Although + * technically is is possible to implement. + */ + +#ifndef LSQUIC_TRECHIST +#define LSQUIC_TRECHIST 1 + +struct lsquic_packno_range; + +/* This value could be as large as 32, which is how many bits wide + * trechist_mask_t is. The other limit on the number of ranges is + * UCHAR_MAX, which is how many different values can fit into te_next. + */ +#define TRECHIST_MAX_RANGES 16 +#define TRECHIST_MAX_RANGES_MASK ((1u << TRECHIST_MAX_RANGES) - 1) + +struct trechist_elem +{ + uint32_t te_low; + unsigned char te_count; + unsigned char te_next; /* 0 means no next element */ +}; + +#define TE_HIGH(te_) ((te_)->te_low + (te_)->te_count - 1) + +#define TRECHIST_SIZE (TRECHIST_MAX_RANGES * sizeof(struct trechist_elem)) + +/* There are two parts to this: the array of trechist_elem's and the bitmask + * that tracks which elements are used. The smallest range must always be at + * offset zero. + */ +typedef uint32_t trechist_mask_t; + +int +lsquic_trechist_insert (trechist_mask_t *, struct trechist_elem *, uint32_t); + +struct trechist_iter { + struct lsquic_packno_range range; + const struct trechist_elem *elems; + trechist_mask_t mask; + unsigned char next; +}; + +void +lsquic_trechist_iter (struct trechist_iter *iter, trechist_mask_t mask, + const struct trechist_elem *); + +/* Don't modify history while iterating */ +const struct lsquic_packno_range * +lsquic_trechist_first (void *iter); + +const struct lsquic_packno_range * +lsquic_trechist_next (void *iter); + +void +lsquic_trechist_copy_ranges (trechist_mask_t *mask /* This gets overwritten */, + struct trechist_elem *elems, void *src_rechist, + const struct lsquic_packno_range * (*first) (void *), + const struct lsquic_packno_range * (*next) (void *)); + +int +lsquic_trechist_contains (trechist_mask_t mask, + const struct trechist_elem *elems, uint32_t packno); + +uint32_t +lsquic_trechist_max (trechist_mask_t mask, const struct trechist_elem *elems); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_util.c b/external/lsquic/src/liblsquic/lsquic_util.c new file mode 100644 index 0000000..0c295aa --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_util.c @@ -0,0 +1,337 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * Utility functions + */ + +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#include +#include +#include +#include +#else +#include +#include +#endif + +#if !(defined(_POSIX_TIMERS) && _POSIX_TIMERS > 0) && defined(__APPLE__) +#include +#endif + +#include "lsquic_int_types.h" +#include "lsquic_util.h" +#if LSQUIC_COUNT_TIME_CALLS +#include +#include "lsquic_types.h" +#include "lsquic_logger.h" +#endif + + +#if defined(__APPLE__) +static mach_timebase_info_data_t timebase; +#endif +#if defined(WIN32) +static LARGE_INTEGER perf_frequency; +#endif + + +#if LSQUIC_COUNT_TIME_CALLS +static volatile unsigned long n_time_now_calls; + + +static void +print_call_stats (void) +{ + LSQ_NOTICE("number of lsquic_time_now() calls: %lu", n_time_now_calls); +} +#endif + + +void +lsquic_init_timers (void) +{ +#if LSQUIC_COUNT_TIME_CALLS + atexit(print_call_stats); +#endif +#if defined(__APPLE__) + mach_timebase_info(&timebase); +#endif +#if defined(WIN32) + QueryPerformanceFrequency(&perf_frequency); +#endif +} + + +lsquic_time_t +lsquic_time_now (void) +{ +#if LSQUIC_COUNT_TIME_CALLS + ++n_time_now_calls; +#endif +#if defined(_POSIX_TIMERS) && _POSIX_TIMERS > 0 + struct timespec ts; + (void) clock_gettime(CLOCK_MONOTONIC, &ts); + return (lsquic_time_t) ts.tv_sec * 1000000 + ts.tv_nsec / 1000; +#elif defined(__APPLE__) + lsquic_time_t t = mach_absolute_time(); + t *= timebase.numer; + t /= timebase.denom; + t /= 1000; + return t; +#elif defined(WIN32) + LARGE_INTEGER counter; + lsquic_time_t t; + QueryPerformanceCounter(&counter); + t = counter.QuadPart; + t *= 1000000; + t /= perf_frequency.QuadPart; + return t; +#else +# warn Monotonically increasing clock is not available on this platform + struct timeval tv; + (void) gettimeofday(&tv, NULL); + return (lsquic_time_t) tv.tv_sec * 1000000 + tv.tv_usec; +#endif +} + + +int +lsquic_is_zero (const void *pbuf, size_t bufsz) +{ + const unsigned char *buf, *end; + const unsigned long *buf_ul; + unsigned n_ul; + unsigned long n_non_zero; + + buf = pbuf; + end = buf + bufsz; + buf_ul = (unsigned long *) buf; + n_ul = bufsz / sizeof(buf_ul[0]); + buf += n_ul * sizeof(buf_ul[0]); + n_non_zero = 0; + + while (n_ul--) + n_non_zero |= buf_ul[n_ul]; + + while (buf < end) + n_non_zero |= *buf++; + + return n_non_zero == 0; +} + + +/* XXX this function uses static buffer. Replace it with lsquic_hexdump() if possible */ +char * +lsquic_get_bin_str (const void *s, size_t len, size_t max_display_len) +{ + const unsigned char *p, *pEnd; + char *pOutput; + size_t lenOrg = len; + static char str[512 * 2 + 40] = {0}; + + /** + * We alloc fixed size buffer, at most max_display_len is 512 + */ + size_t fit_display_len = (max_display_len > 512 ? 512 : max_display_len); + if (len > fit_display_len) + len = fit_display_len; + + pOutput = &str[0] + sprintf(str, "(%zd/%zd)=0x", len, lenOrg); + + for(p = s, pEnd = (unsigned char*)s + len; p < pEnd; ++p) + { + sprintf(pOutput, "%02X", *p); + pOutput += 2; + } + if (lenOrg > len) + { + sprintf(pOutput, "..."); + pOutput += 3; + } + return str; +} + + +static char +hex_digit(uint8_t n) +{ + return (n < 10) ? (n + '0') : ((n - 10) + 'a'); +} + + +size_t +lsquic_hex_encode (const void *src, size_t src_sz, void *dst, size_t dst_sz) +{ + size_t src_cur, dst_cur; + const uint8_t *src_hex; + char *dst_char; + + src_hex = (const uint8_t *)src; + dst_char = (char *)dst; + src_cur = dst_cur = 0; + + while (src_cur < src_sz && dst_cur < (dst_sz - 2)) + { + dst_char[dst_cur++] = hex_digit((src_hex[src_cur] & 0xf0) >> 4); + dst_char[dst_cur++] = hex_digit(src_hex[src_cur++] & 0x0f); + } + dst_char[dst_cur++] = '\0'; + return dst_cur; +} + + +void +lsquic_hexstr (const unsigned char *buf, size_t bufsz, char *out, size_t outsz) +{ + static const char b2c[16] = "0123456789ABCDEF"; + const unsigned char *const end_input = buf + bufsz; + char *const end_output = out + outsz; + + while (buf < end_input && out + 2 < end_output) + { + *out++ = b2c[ *buf >> 4 ]; + *out++ = b2c[ *buf & 0xF ]; + ++buf; + } + + if (buf < end_input) + out[-1] = '!'; + + *out = '\0'; +} + + +size_t +lsquic_hexdump (const void *src_void, size_t src_sz, char *out, size_t out_sz) +{ +/* Ruler: + * + 6 31 57 73 + | | | | +0000 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |................| + * + */ +#define LINE_SIZE (74 + 1 /* newline */) + const unsigned char *src = src_void; + const unsigned char *const src_end = src + src_sz; + char *const out_end = out + out_sz; + unsigned line = 0; + + while (src < src_end && out_end - out >= LINE_SIZE) + { + const unsigned char *limit = src + 16; + if (limit > src_end) + limit = src_end; + unsigned hex_off = 6; + unsigned alpha_off = 57; + sprintf(out, "%03X0", line++); + out[4] = ' '; + out[5] = ' '; + while (src < limit) + { + sprintf(out + hex_off, "%02X ", *src); + sprintf(out + alpha_off, "%c", isprint(*src) ? *src : '.'); + hex_off += 3; + out[hex_off] = ' '; + hex_off += 30 == hex_off; + out[hex_off] = ' '; + ++alpha_off; + out[alpha_off] = ' '; + ++src; + } + memset(out + hex_off, ' ', 56 - hex_off); + memset(out + alpha_off, '.', 73 - alpha_off); + out[56] = '|'; + out[73] = '|'; + out[74] = '\n'; + out += LINE_SIZE; + } + + if (out < out_end) + *out = '\0'; + else + out_end[-1] = '\0'; + + return out + out_sz - out_end; +} + + +/* Returns true if socket addresses are equal, false otherwise. Only + * families, IP addresses, and ports are compared. + */ +int +lsquic_sockaddr_eq (const struct sockaddr *a, const struct sockaddr *b) +{ + if (a->sa_family == AF_INET) + return a->sa_family == b->sa_family + && ((struct sockaddr_in *) a)->sin_addr.s_addr + == ((struct sockaddr_in *) b)->sin_addr.s_addr + && ((struct sockaddr_in *) a)->sin_port + == ((struct sockaddr_in *) b)->sin_port; + else + return a->sa_family == b->sa_family + && ((struct sockaddr_in6 *) a)->sin6_port == + ((struct sockaddr_in6 *) b)->sin6_port + && 0 == memcmp(&((struct sockaddr_in6 *) a)->sin6_addr, + &((struct sockaddr_in6 *) b)->sin6_addr, + sizeof(((struct sockaddr_in6 *) b)->sin6_addr)); +} + + +char * +lsquic_sockaddr2str (const struct sockaddr *addr, char *buf, size_t sz) +{ + unsigned short port; + int len; + + switch (addr->sa_family) + { + case AF_INET: + port = ntohs(((struct sockaddr_in *) addr)->sin_port); + if (!inet_ntop(AF_INET, &((struct sockaddr_in *) addr)->sin_addr, + buf, sz)) + buf[0] = '\0'; + break; + case AF_INET6: + port = ntohs(((struct sockaddr_in6 *) addr)->sin6_port); + if (!inet_ntop(AF_INET6, &((struct sockaddr_in6 *) addr)->sin6_addr, + buf, sz)) + buf[0] = '\0'; + break; + default: + port = 0; + (void) snprintf(buf, sz, "", addr->sa_family); + break; + } + + len = strlen(buf); + if (len < (int) sz) + snprintf(buf + len, sz - (size_t) len, ":%hu", port); + return buf; +} + + +#ifdef _MSC_VER +char * +lsquic_strndup (const char *s, size_t n) +{ + size_t len; + char *copy; + + len = strnlen(s, n); + copy = malloc(n + 1); + if (copy) + { + memcpy(copy, s, len); + copy[len] = '\0'; + } + + return copy; +} +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_util.h b/external/lsquic/src/liblsquic/lsquic_util.h new file mode 100644 index 0000000..495d33d --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_util.h @@ -0,0 +1,63 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_util.h -- Utility functions + */ + +#ifndef LSQUIC_UTIL_H +#define LSQUIC_UTIL_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +struct sockaddr; + +lsquic_time_t +lsquic_time_now (void); + +void +lsquic_init_timers (void); + +/* Returns 1 if `buf' contains only zero bytes, 0 otherwise. + */ +int +lsquic_is_zero (const void *buf, size_t bufsz); + + + +char * +lsquic_get_bin_str (const void *s, size_t len, size_t max_display_len); + +size_t +lsquic_hex_encode (const void *src, size_t src_sz, void *dst, size_t dst_sz); + +/* `out_sz' is assumed to be at least 1. `out' is always NUL-terminated. */ +size_t +lsquic_hexdump (const void *src, size_t src_sz, char *out, size_t out_sz); + +void +lsquic_hexstr (const unsigned char *buf, size_t bufsz, char *out, size_t outsz); + +#define HEXSTR(buf, bufsz, out) \ + (lsquic_hexstr(buf, bufsz, out, sizeof(out)), out) + +int +lsquic_sockaddr_eq (const struct sockaddr *a, const struct sockaddr *b); + +char * +lsquic_sockaddr2str (const struct sockaddr *addr, char *buf, size_t sz); + +#define SA2STR(sa_, buf_) (lsquic_sockaddr2str(sa_, buf_, sizeof(buf_)), buf_) + +#ifdef _MSC_VER +char * +lsquic_strndup(const char *s, size_t n); +#define strndup lsquic_strndup +#endif + +#ifdef __cplusplus +} +#endif + + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_varint.c b/external/lsquic/src/liblsquic/lsquic_varint.c new file mode 100644 index 0000000..fd9c1ca --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_varint.c @@ -0,0 +1,202 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_varint.c -- routines dealing with IETF QUIC varint. + */ + +#include +#include +#include + +#include "lsquic_byteswap.h" +#include "lsquic_varint.h" + +/* Returns number of bytes read from p (1, 2, 4, or 8), or a negative + * value on error. + */ +int +lsquic_varint_read (const unsigned char *p, const unsigned char *end, + uint64_t *valp) +{ + uint64_t val; + + if (p >= end) + return -1; + + switch (*p >> 6) + { + case 0: + *valp = *p; + return 1; + case 1: + if (p + 1 >= end) + return -1; + *valp = (p[0] & VINT_MASK) << 8 + | p[1] + ; + return 2; + case 2: + if (p + 3 >= end) + return -1; + *valp = (p[0] & VINT_MASK) << 24 + | p[1] << 16 + | p[2] << 8 + | p[3] << 0 + ; + return 4; + default: + if (p + 7 >= end) + return -1; + memcpy(&val, p, 8); +#if __BYTE_ORDER == __LITTLE_ENDIAN + val = bswap_64(val); +#endif + val &= (1ULL << 62) - 1; + *valp = val; + return 8; + } +} + + +int +lsquic_varint_read_nb (const unsigned char **pp, const unsigned char *end, + struct varint_read_state *state) +{ + const unsigned char *p = *pp; + + if (p >= end) + return -1; + + switch (state->pos ? state->pos : *p >> 6) + { + case 0: + state->val = *p++; + *pp = p; + return 0; + case 1: + state->val = (*p++ & VINT_MASK) << 8; + if (p >= end) { state->pos = 1000; break; } + /* fall through */ + case 1000: + state->val |= *p++; + *pp = p; + return 0; + case 2: + if (p + 3 < end) + { + state->val = (p[0] & VINT_MASK) << 24 + | p[1] << 16 + | p[2] << 8 + | p[3] << 0 + ; + *pp += 4; + return 0; + } + state->val = (*p++ & VINT_MASK) << 24; + if (p >= end) { state->pos = 1001; break; } + /* fall through */ + case 1001: + state->val |= *p++ << 16; + if (p >= end) { state->pos = 1002; break; } + /* fall through */ + case 1002: + state->val |= *p++ << 8; + if (p >= end) { state->pos = 1003; break; } + /* fall through */ + case 1003: + state->val |= *p++; + *pp = p; + return 0; + case 3: + if (p + 7 < end) + { + memcpy(&state->val, p, 8); +#if __BYTE_ORDER == __LITTLE_ENDIAN + state->val = bswap_64(state->val); +#endif + state->val &= (1ULL << 62) - 1; + *pp += 8; + return 0; + } + state->val = (uint64_t) (*p++ & VINT_MASK) << 56; + if (p >= end) { state->pos = 1004; break; } + /* fall through */ + case 1004: + state->val |= (uint64_t) *p++ << 48; + if (p >= end) { state->pos = 1005; break; } + /* fall through */ + case 1005: + state->val |= (uint64_t) *p++ << 40; + if (p >= end) { state->pos = 1006; break; } + /* fall through */ + case 1006: + state->val |= (uint64_t) *p++ << 32; + if (p >= end) { state->pos = 1007; break; } + /* fall through */ + case 1007: + state->val |= (uint64_t) *p++ << 24; + if (p >= end) { state->pos = 1008; break; } + /* fall through */ + case 1008: + state->val |= (uint64_t) *p++ << 16; + if (p >= end) { state->pos = 1009; break; } + /* fall through */ + case 1009: + state->val |= (uint64_t) *p++ << 8; + if (p >= end) { state->pos = 1010; break; } + /* fall through */ + case 1010: + state->val |= *p++; + *pp = p; + return 0; + default: + assert(0); + } + + *pp = p; + return -1; +} + + +int +lsquic_varint_read_two (const unsigned char **begin, const unsigned char *end, + struct varint_read2_state *state) +{ + const unsigned char *p = *begin; + int s; + + while (p < end) + { + switch (state->vr2s_state) + { + case VR2S_READ_ONE_BEGIN: + state->vr2s_varint_state.pos = 0; + state->vr2s_state = VR2S_READ_ONE_CONTINUE; + goto cont; + case VR2S_READ_TWO_BEGIN: + state->vr2s_varint_state.pos = 0; + state->vr2s_state = VR2S_READ_TWO_CONTINUE; + goto cont; + cont: case VR2S_READ_ONE_CONTINUE: + case VR2S_READ_TWO_CONTINUE: + s = lsquic_varint_read_nb(&p, end, &state->vr2s_varint_state); + if (s == 0) + { + if (state->vr2s_state == VR2S_READ_TWO_CONTINUE) + goto done; + state->vr2s_one = state->vr2s_varint_state.val; + state->vr2s_state = VR2S_READ_TWO_BEGIN; + break; + } + else + goto more; + } + } + + more: + *begin = p; + return -1; + + done: + *begin = p; + return 0; +} diff --git a/external/lsquic/src/liblsquic/lsquic_varint.h b/external/lsquic/src/liblsquic/lsquic_varint.h new file mode 100644 index 0000000..23b6df2 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_varint.h @@ -0,0 +1,102 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_VARINT_H +#define LSQUIC_VARINT_H 1 + +#define VINT_MASK ((1 << 6) - 1) + +#include + +/* See [draft-ietf-quic-transport-11], section-7.1 */ +static inline uint64_t +vint_val2bits (uint64_t val) +{ + return ((val) >= (1 << 6)) + ((val) >= (1 << 14)) + ((val) >= (1 << 30)); +} + +static inline uint64_t +vint_size (uint64_t val) +{ + return 1u << vint_val2bits(val); +} + +#define VINT_MAX_VALUE ((1ull << 62) - 1) + +/* Map + * 0 -> 6 + * 1 -> 14 + * 2 -> 30 + * 3 -> 62 + */ + +static inline uint64_t +vint_bits2shift (uint64_t bits) +{ + return (1 << (3 + (bits))) - 2; +} + +#define VINT_MAX_B(bits_) ((1ull << (vint_bits2shift(bits_))) - 1) + +/* Maximum value that can be encoded as one byte: */ +#define VINT_MAX_ONE_BYTE VINT_MAX_B(0) + +int +lsquic_varint_read (const unsigned char *p, const unsigned char *end, + uint64_t *valp); + +#define vint_read lsquic_varint_read + +struct varint_read_state +{ + uint64_t val; + int pos; +}; + +int +lsquic_varint_read_nb (const unsigned char **p, const unsigned char *end, + struct varint_read_state *); + +struct varint_read2_state +{ + uint64_t vr2s_one; + struct varint_read_state vr2s_varint_state; +#define vr2s_two vr2s_varint_state.val + enum { + VR2S_READ_ONE_BEGIN = 0, + VR2S_READ_ONE_CONTINUE, + VR2S_READ_TWO_BEGIN, + VR2S_READ_TWO_CONTINUE, + } vr2s_state; +}; + +/* When first called, vr2s_state must be set to 0. + * + * Returns 0 when both varint values have been read. They are available + * in vr2s_one and vr2s_two. + * + * Returns -1 when more input is needed. + */ +int +lsquic_varint_read_two (const unsigned char **p, const unsigned char *end, + struct varint_read2_state *); + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#include "lsquic_byteswap.h" +static inline void +vint_write (void *dst, uint64_t val, uint64_t bits, size_t len) +{ + uint64_t buf_ = (val) + | (uint64_t) (bits) << vint_bits2shift(bits); + buf_ = bswap_64(buf_); + memcpy(dst, (unsigned char *) &buf_ + 8 - (len), (len)); +} +#else +static inline void +vint_write (void *dst, uint64_t val, uint64_t bits, size_t len) +{ \ + uint64_t buf_ = (val) + | (uint64_t) (bits) << vint_bits2shift(bits); + memcpy(dst, (unsigned char *) &buf_ + 8 - (len), (len)); +} +#endif + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_ver_neg.h b/external/lsquic/src/liblsquic/lsquic_ver_neg.h new file mode 100644 index 0000000..63fafb4 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_ver_neg.h @@ -0,0 +1,26 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#ifndef LSQUIC_VER_NEG_H +#define LSQUIC_VER_NEG_H + +/* Client engages in version negotiation, going from highest supported + * version to lowest. + */ +struct ver_neg { + unsigned vn_supp; /* Remaining options, including `vn_ver' */ + enum lsquic_version vn_ver; /* If client, current version sent to server + * (sess_resume version or highest supported); + * if server, this is set to negotiated version. + */ + enum ver_neg_state { + VN_START, /* Have not received ver-nego packet */ + VN_IN_PROGRESS, /* Received ver-nego packet */ + VN_END, /* Received packet using supported version */ + } vn_state; + lsquic_ver_tag_t vn_buf; /* Buffer to store version tag */ + lsquic_ver_tag_t *vn_tag; /* Pointer to version tag. Set to NULL if + * version negotiation is done in the client; + * always set to NULL in server. + */ +}; + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_version.c b/external/lsquic/src/liblsquic/lsquic_version.c new file mode 100644 index 0000000..d93295d --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_version.c @@ -0,0 +1,195 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_version.h" + +#if _MSC_VER +#include "vc_compat.h" +#endif + + +static const unsigned char version_tags[N_LSQVER][4] = +{ + [LSQVER_043] = { 'Q', '0', '4', '3', }, + [LSQVER_046] = { 'Q', '0', '4', '6', }, + [LSQVER_050] = { 'Q', '0', '5', '0', }, + [LSQVER_ID27] = { 0xFF, 0, 0, 27, }, + [LSQVER_ID29] = { 0xFF, 0, 0, 29, }, + [LSQVER_I001] = { 0, 0, 0, 1, }, + [LSQVER_I002] = { 0x6B, 0x33, 0x43, 0xCF }, + [LSQVER_RESVED] = { 0xFA, 0xFA, 0xFA, 0xFA, }, +}; + + +uint32_t +lsquic_ver2tag (unsigned version) +{ + lsquic_ver_tag_t tag; + if (version < N_LSQVER) + { + memcpy(&tag, version_tags[version], 4); + return tag; + } + else + return 0; +} + + +enum lsquic_version +lsquic_tag2ver (uint32_t ver_tag) +{ + unsigned n; + for (n = 0; n < sizeof(version_tags) / sizeof(version_tags[0]); ++n) + if (0 == memcmp(version_tags[n], &ver_tag, sizeof(ver_tag))) + return n; + return -1; +} + + +enum lsquic_version +lsquic_tag2ver_fast (const unsigned char *tag) +{ + unsigned char ch; + ch = *tag; + if (ch == '\0' && *(tag + 1) == 0 && *(tag + 2) == 0) + { + if (*(tag + 3) == 0x01) + return LSQVER_I001; + else if (*(tag + 3) == 0x00) + return LSQVER_VERNEG; + } + else if (ch == 0xff && *(tag + 1) == 0 && *(tag + 2) == 0) + { + if (*(tag + 3) == 0x1D) + return LSQVER_ID29; + else if (*(tag + 3) == 0x1B) + return LSQVER_ID27; + } + else if (ch == 0x6b && *(tag + 1) == 0x33 + && *(tag + 2) == 0x43 && *(tag + 3) == 0xcf) + { + return LSQVER_I002; + } + else if (ch == 'Q' && *(tag + 1) == '0') + { + if (*(tag + 2) == '5' && *(tag + 3) == '0') + return LSQVER_050; + else if (*(tag + 2) == '4' && *(tag + 3) == '6') + return LSQVER_046; + } + else if ((ch & 0xf) == 0xa && (*(tag + 1) & 0xf) == 0xa + && (*(tag + 2) & 0xf) == 0xa && (*(tag + 3) & 0xf) == 0xa) + return LSQVER_RESVED; + return N_LSQVER; +} + + +enum lsquic_version +lsquic_tag2ver_ietf (const unsigned char *tag) +{ + unsigned char ch; + ch = *tag; + if (ch == '\0' && *(tag + 1) == 0 && *(tag + 2) == 0) + { + if (*(tag + 3) == 0x01) + return LSQVER_I001; + else if (*(tag + 3) == 0x00) + return LSQVER_VERNEG; + } + else if (ch == 0xff && *(tag + 1) == 0 && *(tag + 2) == 0) + { + if (*(tag + 3) == 0x1D) + return LSQVER_ID29; + else if (*(tag + 3) == 0x1B) + return LSQVER_ID27; + } + else if (ch == 0x6b && *(tag + 1) == 0x33 + && *(tag + 2) == 0x43 && *(tag + 3) == 0xcf) + { + return LSQVER_I002; + } + else if ((ch & 0xf) == 0xa && (*(tag + 1) & 0xf) == 0xa + && (*(tag + 2) & 0xf) == 0xa && (*(tag + 3) & 0xf) == 0xa) + return LSQVER_RESVED; + return N_LSQVER; +} + + +const char *const lsquic_ver2str[N_LSQVER] = { + [LSQVER_043] = "Q043", + [LSQVER_046] = "Q046", + [LSQVER_050] = "Q050", + [LSQVER_ID27] = "FF00001B", + [LSQVER_ID29] = "FF00001D", + [LSQVER_I001] = "00000001", + [LSQVER_I002] = "6B3343CF", + [LSQVER_RESVED] = "FAFAFAFA", +}; + + +const char *const lsquic_ver2altstr[N_LSQVER] = { + [LSQVER_043] = NULL, + [LSQVER_046] = NULL, + [LSQVER_050] = NULL, + [LSQVER_ID27] = "h3-27", + [LSQVER_ID29] = "h3-29", + [LSQVER_I001] = "h3", + [LSQVER_I002] = "h3-v2", + [LSQVER_RESVED] = "RESERVED", +}; + + +enum lsquic_version +lsquic_str2ver (const char *str, size_t len) +{ + enum lsquic_version ver; + uint32_t tag; + + if (len == sizeof(tag) && 'Q' == str[0]) + { + memcpy(&tag, str, sizeof(tag)); + return lsquic_tag2ver(tag); + } + + for (ver = 0; ver < N_LSQVER; ++ver) + { + if (strlen(lsquic_ver2str[ver]) == len + && strncasecmp(lsquic_ver2str[ver], str, len) == 0) + { + return ver; + } + if (lsquic_ver2altstr[ver] && strlen(lsquic_ver2altstr[ver]) == len + && strncasecmp(lsquic_ver2altstr[ver], str, len) == 0) + { + return ver; + } + } + return -1; +} + + +int +lsquic_gen_ver_tags (unsigned char *buf, size_t bufsz, unsigned version_bitmask) +{ + unsigned n; + lsquic_ver_tag_t tag; + unsigned char *p = buf; + unsigned char *const pend = p + bufsz; + for (n = 0; version_bitmask; ++n) + { + if (version_bitmask & (1 << n)) + { + if (p + 4 > pend) + return -1; + version_bitmask &= ~(1 << n); + tag = lsquic_ver2tag(n); + if (0 == tag) + return -1; + memcpy(p, &tag, 4); + p += 4; + } + } + return p - buf; +} diff --git a/external/lsquic/src/liblsquic/lsquic_version.h b/external/lsquic/src/liblsquic/lsquic_version.h new file mode 100644 index 0000000..63b1cb8 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_version.h @@ -0,0 +1,28 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * lsquic_version.h -- version manipulation routines + */ + +#ifndef LSQUIC_VERSION_H +#define LSQUIC_VERSION_H 1 + +#include + +uint32_t +lsquic_ver2tag (unsigned version); + +enum lsquic_version +lsquic_tag2ver (uint32_t ver_tag); + +enum lsquic_version +lsquic_tag2ver_ietf (const unsigned char *tag); + +enum lsquic_version +lsquic_tag2ver_fast (const unsigned char * tag); + +extern const char *const lsquic_ver2str[]; + +int +lsquic_gen_ver_tags (unsigned char *buf, size_t bufsz, unsigned versions); + +#endif diff --git a/external/lsquic/src/liblsquic/lsquic_xxhash.c b/external/lsquic/src/liblsquic/lsquic_xxhash.c new file mode 100644 index 0000000..3856882 --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_xxhash.c @@ -0,0 +1,942 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* +xxHash - Fast Hash algorithm +Copyright (C) 2012-2014, Yann Collet. +BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +You can contact the author at : +- xxHash source repository : http://code.google.com/p/xxhash/ +- public discussion board : https://groups.google.com/forum/#!forum/lz4c +*/ + + +//************************************** +// Tuning parameters +//************************************** +// Unaligned memory access is automatically enabled for "common" CPU, such as x86. +// For others CPU, the compiler will be more cautious, and insert extra code to ensure aligned access is respected. +// If you know your target CPU supports unaligned memory access, you want to force this option manually to improve performance. +// You can also enable this parameter if you know your input data will always be aligned (boundaries of 4, for U32). +#if defined(__ARM_FEATURE_UNALIGNED) || defined(__i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64) +# define XXH_USE_UNALIGNED_ACCESS 1 +#endif + +// XXH_ACCEPT_NULL_INPUT_POINTER : +// If the input pointer is a null pointer, xxHash default behavior is to trigger a memory access error, since it is a bad pointer. +// When this option is enabled, xxHash output for null input pointers will be the same as a null-length input. +// This option has a very small performance cost (only measurable on small inputs). +// By default, this option is disabled. To enable it, uncomment below define : +// #define XXH_ACCEPT_NULL_INPUT_POINTER 1 + +// XXH_FORCE_NATIVE_FORMAT : +// By default, xxHash library provides endian-independant Hash values, based on little-endian convention. +// Results are therefore identical for little-endian and big-endian CPU. +// This comes at a performance cost for big-endian CPU, since some swapping is required to emulate little-endian format. +// Should endian-independance be of no importance for your application, you may set the #define below to 1. +// It will improve speed for Big-endian CPU. +// This option has no impact on Little_Endian CPU. +#define XXH_FORCE_NATIVE_FORMAT 0 + +//************************************** +// Compiler Specific Options +//************************************** +// Disable some Visual warning messages +#ifdef _MSC_VER // Visual Studio +# pragma warning(disable : 4127) // disable: C4127: conditional expression is constant +#endif + +#ifdef _MSC_VER // Visual Studio +# define FORCE_INLINE static __forceinline +#else +# ifdef __GNUC__ +# define FORCE_INLINE static inline __attribute__((always_inline)) +# else +# define FORCE_INLINE static inline +# endif +#endif + +//************************************** +// Includes & Memory related functions +//************************************** +#include "lsquic_xxhash.h" +// Modify the local functions below should you wish to use some other memory routines +// for malloc(), free() +#include +static void *XXH_malloc(size_t s) { return malloc(s); } +static void XXH_free(void *p) { free(p); } +// for memcpy() +#include +static void *XXH_memcpy(void *dest, const void *src, size_t size) +{ + return memcpy(dest, src, size); +} + + +//************************************** +// Basic Types +//************************************** +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L // C99 +# include +typedef uint8_t BYTE; +typedef uint16_t U16; +typedef uint32_t U32; +typedef int32_t S32; +typedef uint64_t U64; +#else +typedef unsigned char BYTE; +typedef unsigned short U16; +typedef unsigned int U32; +typedef signed int S32; +typedef unsigned long long U64; +#endif + +#if defined(__GNUC__) && !defined(XXH_USE_UNALIGNED_ACCESS) +# define _PACKED __attribute__ ((packed)) +#else +# define _PACKED +#endif + +#if !defined(XXH_USE_UNALIGNED_ACCESS) && !defined(__GNUC__) +# ifdef __IBMC__ +# pragma pack(1) +# else +# pragma pack(push, 1) +# endif +#endif + +typedef struct _U32_S +{ + U32 v; +} _PACKED U32_S; +typedef struct _U64_S +{ + U64 v; +} _PACKED U64_S; + +#if !defined(XXH_USE_UNALIGNED_ACCESS) && !defined(__GNUC__) +# pragma pack(pop) +#endif + +#define A32(x) (((U32_S *)(x))->v) +#define A64(x) (((U64_S *)(x))->v) + + +//*************************************** +// Compiler-specific Functions and Macros +//*************************************** +#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) + +// Note : although _rotl exists for minGW (GCC under windows), performance seems poor +#if defined(_MSC_VER) +# define XXH_rotl32(x,r) _rotl(x,r) +# define XXH_rotl64(x,r) _rotl64(x,r) +#else +# define XXH_rotl32(x,r) ((x << r) | (x >> (32 - r))) +# define XXH_rotl64(x,r) ((x << r) | (x >> (64 - r))) +#endif + +#if defined(_MSC_VER) // Visual Studio +# define XXH_swap32 _byteswap_ulong +# define XXH_swap64 _byteswap_uint64 +#elif GCC_VERSION >= 403 +# define XXH_swap32 __builtin_bswap32 +# define XXH_swap64 __builtin_bswap64 +#else +static inline U32 XXH_swap32(U32 x) +{ + return ((x << 24) & 0xff000000) | + ((x << 8) & 0x00ff0000) | + ((x >> 8) & 0x0000ff00) | + ((x >> 24) & 0x000000ff); +} +static inline U64 XXH_swap64(U64 x) +{ + return ((x << 56) & 0xff00000000000000ULL) | + ((x << 40) & 0x00ff000000000000ULL) | + ((x << 24) & 0x0000ff0000000000ULL) | + ((x << 8) & 0x000000ff00000000ULL) | + ((x >> 8) & 0x00000000ff000000ULL) | + ((x >> 24) & 0x0000000000ff0000ULL) | + ((x >> 40) & 0x000000000000ff00ULL) | + ((x >> 56) & 0x00000000000000ffULL); +} +#endif + + +//************************************** +// Constants +//************************************** +#define PRIME32_1 2654435761U +#define PRIME32_2 2246822519U +#define PRIME32_3 3266489917U +#define PRIME32_4 668265263U +#define PRIME32_5 374761393U + +#define PRIME64_1 11400714785074694791ULL +#define PRIME64_2 14029467366897019727ULL +#define PRIME64_3 1609587929392839161ULL +#define PRIME64_4 9650029242287828579ULL +#define PRIME64_5 2870177450012600261ULL + +//************************************** +// Architecture Macros +//************************************** +typedef enum { XXH_bigEndian = 0, XXH_littleEndian = 1 } XXH_endianess; +#ifndef XXH_CPU_LITTLE_ENDIAN // It is possible to define XXH_CPU_LITTLE_ENDIAN externally, for example using a compiler switch +static const int one = 1; +# define XXH_CPU_LITTLE_ENDIAN (*(char*)(&one)) +#endif + + +//************************************** +// Macros +//************************************** +#define XXH_STATIC_ASSERT(c) { enum { XXH_static_assert = 1/(!!(c)) }; } // use only *after* variable declarations + + +//**************************** +// Memory reads +//**************************** +typedef enum { XXH_aligned, XXH_unaligned } XXH_alignment; + +FORCE_INLINE U32 XXH_readLE32_align(const void *ptr, XXH_endianess endian, + XXH_alignment align) +{ + if (align == XXH_unaligned) + return endian == XXH_littleEndian ? A32(ptr) : XXH_swap32(A32(ptr)); + else + return endian == XXH_littleEndian ? *(U32 *)ptr : XXH_swap32(*(U32 *)ptr); +} + +FORCE_INLINE U32 XXH_readLE32(const void *ptr, XXH_endianess endian) +{ + return XXH_readLE32_align(ptr, endian, XXH_unaligned); +} + +FORCE_INLINE U64 XXH_readLE64_align(const void *ptr, XXH_endianess endian, + XXH_alignment align) +{ + if (align == XXH_unaligned) + return endian == XXH_littleEndian ? A64(ptr) : XXH_swap64(A64(ptr)); + else + return endian == XXH_littleEndian ? *(U64 *)ptr : XXH_swap64(*(U64 *)ptr); +} + +FORCE_INLINE U64 XXH_readLE64(const void *ptr, XXH_endianess endian) +{ + return XXH_readLE64_align(ptr, endian, XXH_unaligned); +} + + +//**************************** +// Simple Hash Functions +//**************************** +FORCE_INLINE U32 XXH32_endian_align(const void *input, size_t len, + U32 seed, XXH_endianess endian, XXH_alignment align) +{ + const BYTE *p = (const BYTE *)input; + const BYTE *bEnd = p + len; + U32 h32; +#define XXH_get32bits(p) XXH_readLE32_align(p, endian, align) + +#ifdef XXH_ACCEPT_NULL_INPUT_POINTER + if (p == NULL) + { + len = 0; + bEnd = p = (const BYTE *)(size_t)16; + } +#endif + + if (len >= 16) + { + const BYTE *const limit = bEnd - 16; + U32 v1 = seed + PRIME32_1 + PRIME32_2; + U32 v2 = seed + PRIME32_2; + U32 v3 = seed + 0; + U32 v4 = seed - PRIME32_1; + + do + { + v1 += XXH_get32bits(p) * PRIME32_2; + v1 = XXH_rotl32(v1, 13); + v1 *= PRIME32_1; + p += 4; + v2 += XXH_get32bits(p) * PRIME32_2; + v2 = XXH_rotl32(v2, 13); + v2 *= PRIME32_1; + p += 4; + v3 += XXH_get32bits(p) * PRIME32_2; + v3 = XXH_rotl32(v3, 13); + v3 *= PRIME32_1; + p += 4; + v4 += XXH_get32bits(p) * PRIME32_2; + v4 = XXH_rotl32(v4, 13); + v4 *= PRIME32_1; + p += 4; + } + while (p <= limit); + + h32 = XXH_rotl32(v1, 1) + XXH_rotl32(v2, 7) + XXH_rotl32(v3, + 12) + XXH_rotl32(v4, 18); + } + else + h32 = seed + PRIME32_5; + + h32 += (U32) len; + + while (p + 4 <= bEnd) + { + h32 += XXH_get32bits(p) * PRIME32_3; + h32 = XXH_rotl32(h32, 17) * PRIME32_4 ; + p += 4; + } + + while (p < bEnd) + { + h32 += (*p) * PRIME32_5; + h32 = XXH_rotl32(h32, 11) * PRIME32_1 ; + p++; + } + + h32 ^= h32 >> 15; + h32 *= PRIME32_2; + h32 ^= h32 >> 13; + h32 *= PRIME32_3; + h32 ^= h32 >> 16; + + return h32; +} + + +unsigned int XXH32(const void *input, size_t len, unsigned seed) +{ +#if 0 + // Simple version, good for code maintenance, but unfortunately slow for small inputs + XXH32_state_t state; + XXH32_reset(&state, seed); + XXH32_update(&state, input, len); + return XXH32_digest(&state); +#else + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + +# if !defined(XXH_USE_UNALIGNED_ACCESS) + if ((((size_t)input) & 3) == + 0) // Input is aligned, let's leverage the speed advantage + { + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH32_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned); + else + return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned); + } +# endif + + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH32_endian_align(input, len, seed, XXH_littleEndian, + XXH_unaligned); + else + return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned); +#endif +} + +FORCE_INLINE U64 XXH64_endian_align(const void *input, size_t len, + U64 seed, XXH_endianess endian, XXH_alignment align) +{ + const BYTE *p = (const BYTE *)input; + const BYTE *bEnd = p + len; + U64 h64; +#define XXH_get64bits(p) XXH_readLE64_align(p, endian, align) + +#ifdef XXH_ACCEPT_NULL_INPUT_POINTER + if (p == NULL) + { + len = 0; + bEnd = p = (const BYTE *)(size_t)32; + } +#endif + + if (len >= 32) + { + const BYTE *const limit = bEnd - 32; + U64 v1 = seed + PRIME64_1 + PRIME64_2; + U64 v2 = seed + PRIME64_2; + U64 v3 = seed + 0; + U64 v4 = seed - PRIME64_1; + + do + { + v1 += XXH_get64bits(p) * PRIME64_2; + p += 8; + v1 = XXH_rotl64(v1, 31); + v1 *= PRIME64_1; + v2 += XXH_get64bits(p) * PRIME64_2; + p += 8; + v2 = XXH_rotl64(v2, 31); + v2 *= PRIME64_1; + v3 += XXH_get64bits(p) * PRIME64_2; + p += 8; + v3 = XXH_rotl64(v3, 31); + v3 *= PRIME64_1; + v4 += XXH_get64bits(p) * PRIME64_2; + p += 8; + v4 = XXH_rotl64(v4, 31); + v4 *= PRIME64_1; + } + while (p <= limit); + + h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, + 12) + XXH_rotl64(v4, 18); + + v1 *= PRIME64_2; + v1 = XXH_rotl64(v1, 31); + v1 *= PRIME64_1; + h64 ^= v1; + h64 = h64 * PRIME64_1 + PRIME64_4; + + v2 *= PRIME64_2; + v2 = XXH_rotl64(v2, 31); + v2 *= PRIME64_1; + h64 ^= v2; + h64 = h64 * PRIME64_1 + PRIME64_4; + + v3 *= PRIME64_2; + v3 = XXH_rotl64(v3, 31); + v3 *= PRIME64_1; + h64 ^= v3; + h64 = h64 * PRIME64_1 + PRIME64_4; + + v4 *= PRIME64_2; + v4 = XXH_rotl64(v4, 31); + v4 *= PRIME64_1; + h64 ^= v4; + h64 = h64 * PRIME64_1 + PRIME64_4; + } + else + h64 = seed + PRIME64_5; + + h64 += (U64) len; + + while (p + 8 <= bEnd) + { + U64 k1 = XXH_get64bits(p); + k1 *= PRIME64_2; + k1 = XXH_rotl64(k1, 31); + k1 *= PRIME64_1; + h64 ^= k1; + h64 = XXH_rotl64(h64, 27) * PRIME64_1 + PRIME64_4; + p += 8; + } + + if (p + 4 <= bEnd) + { + h64 ^= (U64)(XXH_get32bits(p)) * PRIME64_1; + h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3; + p += 4; + } + + while (p < bEnd) + { + h64 ^= (*p) * PRIME64_5; + h64 = XXH_rotl64(h64, 11) * PRIME64_1; + p++; + } + + h64 ^= h64 >> 33; + h64 *= PRIME64_2; + h64 ^= h64 >> 29; + h64 *= PRIME64_3; + h64 ^= h64 >> 32; + + return h64; +} + + +unsigned long long XXH64(const void *input, size_t len, + unsigned long long seed) +{ +#if 0 + // Simple version, good for code maintenance, but unfortunately slow for small inputs + XXH64_state_t state; + XXH64_reset(&state, seed); + XXH64_update(&state, input, len); + return XXH64_digest(&state); +#else + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + +# if !defined(XXH_USE_UNALIGNED_ACCESS) + if ((((size_t)input) & 7) == + 0) // Input is aligned, let's leverage the speed advantage + { + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH64_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned); + else + return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned); + } +# endif + + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH64_endian_align(input, len, seed, XXH_littleEndian, + XXH_unaligned); + else + return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned); +#endif +} + +/**************************************************** + * Advanced Hash Functions +****************************************************/ + +/*** Allocation ***/ +typedef struct +{ + U64 total_len; + U32 seed; + U32 v1; + U32 v2; + U32 v3; + U32 v4; + U32 mem32[4]; /* defined as U32 for alignment */ + U32 memsize; +} XXH_istate32_t; + +typedef struct +{ + U64 total_len; + U64 seed; + U64 v1; + U64 v2; + U64 v3; + U64 v4; + U64 mem64[4]; /* defined as U64 for alignment */ + U32 memsize; +} XXH_istate64_t; + + +XXH32_state_t *XXH32_createState(void) +{ + XXH_STATIC_ASSERT(sizeof(XXH32_state_t) >= sizeof( + XXH_istate32_t)); // A compilation error here means XXH32_state_t is not large enough + return (XXH32_state_t *)XXH_malloc(sizeof(XXH32_state_t)); +} +XXH_errorcode XXH32_freeState(XXH32_state_t *statePtr) +{ + XXH_free(statePtr); + return XXH_OK; +}; + +XXH64_state_t *XXH64_createState(void) +{ + XXH_STATIC_ASSERT(sizeof(XXH64_state_t) >= sizeof( + XXH_istate64_t)); // A compilation error here means XXH64_state_t is not large enough + return (XXH64_state_t *)XXH_malloc(sizeof(XXH64_state_t)); +} +XXH_errorcode XXH64_freeState(XXH64_state_t *statePtr) +{ + XXH_free(statePtr); + return XXH_OK; +}; + + +/*** Hash feed ***/ + +XXH_errorcode XXH32_reset(XXH32_state_t *state_in, U32 seed) +{ + XXH_istate32_t *state = (XXH_istate32_t *) state_in; + state->seed = seed; + state->v1 = seed + PRIME32_1 + PRIME32_2; + state->v2 = seed + PRIME32_2; + state->v3 = seed + 0; + state->v4 = seed - PRIME32_1; + state->total_len = 0; + state->memsize = 0; + return XXH_OK; +} + +XXH_errorcode XXH64_reset(XXH64_state_t *state_in, unsigned long long seed) +{ + XXH_istate64_t *state = (XXH_istate64_t *) state_in; + state->seed = seed; + state->v1 = seed + PRIME64_1 + PRIME64_2; + state->v2 = seed + PRIME64_2; + state->v3 = seed + 0; + state->v4 = seed - PRIME64_1; + state->total_len = 0; + state->memsize = 0; + return XXH_OK; +} + + +FORCE_INLINE XXH_errorcode XXH32_update_endian(XXH32_state_t *state_in, + const void *input, size_t len, XXH_endianess endian) +{ + XXH_istate32_t *state = (XXH_istate32_t *) state_in; + const BYTE *p = (const BYTE *)input; + const BYTE *const bEnd = p + len; + +#ifdef XXH_ACCEPT_NULL_INPUT_POINTER + if (input == NULL) return XXH_ERROR; +#endif + + state->total_len += len; + + if (state->memsize + len < 16) // fill in tmp buffer + { + XXH_memcpy((BYTE *)(state->mem32) + state->memsize, input, len); + state->memsize += (U32)len; + return XXH_OK; + } + + if (state->memsize) // some data left from previous update + { + XXH_memcpy((BYTE *)(state->mem32) + state->memsize, input, + 16 - state->memsize); + { + const U32 *p32 = state->mem32; + state->v1 += XXH_readLE32(p32, endian) * PRIME32_2; + state->v1 = XXH_rotl32(state->v1, 13); + state->v1 *= PRIME32_1; + p32++; + state->v2 += XXH_readLE32(p32, endian) * PRIME32_2; + state->v2 = XXH_rotl32(state->v2, 13); + state->v2 *= PRIME32_1; + p32++; + state->v3 += XXH_readLE32(p32, endian) * PRIME32_2; + state->v3 = XXH_rotl32(state->v3, 13); + state->v3 *= PRIME32_1; + p32++; + state->v4 += XXH_readLE32(p32, endian) * PRIME32_2; + state->v4 = XXH_rotl32(state->v4, 13); + state->v4 *= PRIME32_1; + p32++; + } + p += 16 - state->memsize; + state->memsize = 0; + } + + if (p <= bEnd - 16) + { + const BYTE *const limit = bEnd - 16; + U32 v1 = state->v1; + U32 v2 = state->v2; + U32 v3 = state->v3; + U32 v4 = state->v4; + + do + { + v1 += XXH_readLE32(p, endian) * PRIME32_2; + v1 = XXH_rotl32(v1, 13); + v1 *= PRIME32_1; + p += 4; + v2 += XXH_readLE32(p, endian) * PRIME32_2; + v2 = XXH_rotl32(v2, 13); + v2 *= PRIME32_1; + p += 4; + v3 += XXH_readLE32(p, endian) * PRIME32_2; + v3 = XXH_rotl32(v3, 13); + v3 *= PRIME32_1; + p += 4; + v4 += XXH_readLE32(p, endian) * PRIME32_2; + v4 = XXH_rotl32(v4, 13); + v4 *= PRIME32_1; + p += 4; + } + while (p <= limit); + + state->v1 = v1; + state->v2 = v2; + state->v3 = v3; + state->v4 = v4; + } + + if (p < bEnd) + { + XXH_memcpy(state->mem32, p, bEnd - p); + state->memsize = (int)(bEnd - p); + } + + return XXH_OK; +} + +XXH_errorcode XXH32_update(XXH32_state_t *state_in, const void *input, + size_t len) +{ + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH32_update_endian(state_in, input, len, XXH_littleEndian); + else + return XXH32_update_endian(state_in, input, len, XXH_bigEndian); +} + + + +FORCE_INLINE U32 XXH32_digest_endian(const XXH32_state_t *state_in, + XXH_endianess endian) +{ + XXH_istate32_t *state = (XXH_istate32_t *) state_in; + const BYTE *p = (const BYTE *)state->mem32; + BYTE *bEnd = (BYTE *)(state->mem32) + state->memsize; + U32 h32; + + if (state->total_len >= 16) + h32 = XXH_rotl32(state->v1, 1) + XXH_rotl32(state->v2, + 7) + XXH_rotl32(state->v3, 12) + XXH_rotl32(state->v4, 18); + else + h32 = state->seed + PRIME32_5; + + h32 += (U32) state->total_len; + + while (p + 4 <= bEnd) + { + h32 += XXH_readLE32(p, endian) * PRIME32_3; + h32 = XXH_rotl32(h32, 17) * PRIME32_4; + p += 4; + } + + while (p < bEnd) + { + h32 += (*p) * PRIME32_5; + h32 = XXH_rotl32(h32, 11) * PRIME32_1; + p++; + } + + h32 ^= h32 >> 15; + h32 *= PRIME32_2; + h32 ^= h32 >> 13; + h32 *= PRIME32_3; + h32 ^= h32 >> 16; + + return h32; +} + + +U32 XXH32_digest(const XXH32_state_t *state_in) +{ + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH32_digest_endian(state_in, XXH_littleEndian); + else + return XXH32_digest_endian(state_in, XXH_bigEndian); +} + + +FORCE_INLINE XXH_errorcode XXH64_update_endian(XXH64_state_t *state_in, + const void *input, size_t len, XXH_endianess endian) +{ + XXH_istate64_t *state = (XXH_istate64_t *) state_in; + const BYTE *p = (const BYTE *)input; + const BYTE *const bEnd = p + len; + +#ifdef XXH_ACCEPT_NULL_INPUT_POINTER + if (input == NULL) return XXH_ERROR; +#endif + + state->total_len += len; + + if (state->memsize + len < 32) // fill in tmp buffer + { + XXH_memcpy(((BYTE *)state->mem64) + state->memsize, input, len); + state->memsize += (U32)len; + return XXH_OK; + } + + if (state->memsize) // some data left from previous update + { + XXH_memcpy(((BYTE *)state->mem64) + state->memsize, input, + 32 - state->memsize); + { + const U64 *p64 = state->mem64; + state->v1 += XXH_readLE64(p64, endian) * PRIME64_2; + state->v1 = XXH_rotl64(state->v1, 31); + state->v1 *= PRIME64_1; + p64++; + state->v2 += XXH_readLE64(p64, endian) * PRIME64_2; + state->v2 = XXH_rotl64(state->v2, 31); + state->v2 *= PRIME64_1; + p64++; + state->v3 += XXH_readLE64(p64, endian) * PRIME64_2; + state->v3 = XXH_rotl64(state->v3, 31); + state->v3 *= PRIME64_1; + p64++; + state->v4 += XXH_readLE64(p64, endian) * PRIME64_2; + state->v4 = XXH_rotl64(state->v4, 31); + state->v4 *= PRIME64_1; + p64++; + } + p += 32 - state->memsize; + state->memsize = 0; + } + + if (p + 32 <= bEnd) + { + const BYTE *const limit = bEnd - 32; + U64 v1 = state->v1; + U64 v2 = state->v2; + U64 v3 = state->v3; + U64 v4 = state->v4; + + do + { + v1 += XXH_readLE64(p, endian) * PRIME64_2; + v1 = XXH_rotl64(v1, 31); + v1 *= PRIME64_1; + p += 8; + v2 += XXH_readLE64(p, endian) * PRIME64_2; + v2 = XXH_rotl64(v2, 31); + v2 *= PRIME64_1; + p += 8; + v3 += XXH_readLE64(p, endian) * PRIME64_2; + v3 = XXH_rotl64(v3, 31); + v3 *= PRIME64_1; + p += 8; + v4 += XXH_readLE64(p, endian) * PRIME64_2; + v4 = XXH_rotl64(v4, 31); + v4 *= PRIME64_1; + p += 8; + } + while (p <= limit); + + state->v1 = v1; + state->v2 = v2; + state->v3 = v3; + state->v4 = v4; + } + + if (p < bEnd) + { + XXH_memcpy(state->mem64, p, bEnd - p); + state->memsize = (int)(bEnd - p); + } + + return XXH_OK; +} + +XXH_errorcode XXH64_update(XXH64_state_t *state_in, const void *input, + size_t len) +{ + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH64_update_endian(state_in, input, len, XXH_littleEndian); + else + return XXH64_update_endian(state_in, input, len, XXH_bigEndian); +} + + + +FORCE_INLINE U64 XXH64_digest_endian(const XXH64_state_t *state_in, + XXH_endianess endian) +{ + XXH_istate64_t *state = (XXH_istate64_t *) state_in; + const BYTE *p = (const BYTE *)state->mem64; + BYTE *bEnd = (BYTE *)state->mem64 + state->memsize; + U64 h64; + + if (state->total_len >= 32) + { + U64 v1 = state->v1; + U64 v2 = state->v2; + U64 v3 = state->v3; + U64 v4 = state->v4; + + h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, + 12) + XXH_rotl64(v4, 18); + + v1 *= PRIME64_2; + v1 = XXH_rotl64(v1, 31); + v1 *= PRIME64_1; + h64 ^= v1; + h64 = h64 * PRIME64_1 + PRIME64_4; + + v2 *= PRIME64_2; + v2 = XXH_rotl64(v2, 31); + v2 *= PRIME64_1; + h64 ^= v2; + h64 = h64 * PRIME64_1 + PRIME64_4; + + v3 *= PRIME64_2; + v3 = XXH_rotl64(v3, 31); + v3 *= PRIME64_1; + h64 ^= v3; + h64 = h64 * PRIME64_1 + PRIME64_4; + + v4 *= PRIME64_2; + v4 = XXH_rotl64(v4, 31); + v4 *= PRIME64_1; + h64 ^= v4; + h64 = h64 * PRIME64_1 + PRIME64_4; + } + else + h64 = state->seed + PRIME64_5; + + h64 += (U64) state->total_len; + + while (p + 8 <= bEnd) + { + U64 k1 = XXH_readLE64(p, endian); + k1 *= PRIME64_2; + k1 = XXH_rotl64(k1, 31); + k1 *= PRIME64_1; + h64 ^= k1; + h64 = XXH_rotl64(h64, 27) * PRIME64_1 + PRIME64_4; + p += 8; + } + + if (p + 4 <= bEnd) + { + h64 ^= (U64)(XXH_readLE32(p, endian)) * PRIME64_1; + h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3; + p += 4; + } + + while (p < bEnd) + { + h64 ^= (*p) * PRIME64_5; + h64 = XXH_rotl64(h64, 11) * PRIME64_1; + p++; + } + + h64 ^= h64 >> 33; + h64 *= PRIME64_2; + h64 ^= h64 >> 29; + h64 *= PRIME64_3; + h64 ^= h64 >> 32; + + return h64; +} + + +unsigned long long XXH64_digest(const XXH64_state_t *state_in) +{ + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH64_digest_endian(state_in, XXH_littleEndian); + else + return XXH64_digest_endian(state_in, XXH_bigEndian); +} + + diff --git a/external/lsquic/src/liblsquic/lsquic_xxhash.h b/external/lsquic/src/liblsquic/lsquic_xxhash.h new file mode 100644 index 0000000..d89bf4d --- /dev/null +++ b/external/lsquic/src/liblsquic/lsquic_xxhash.h @@ -0,0 +1,161 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + xxHash - Extremely Fast Hash algorithm + Header File + Copyright (C) 2012-2014, Yann Collet. + BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + You can contact the author at : + - xxHash source repository : http://code.google.com/p/xxhash/ +*/ + +/* Notice extracted from xxHash homepage : + +xxHash is an extremely fast Hash algorithm, running at RAM speed limits. +It also successfully passes all tests from the SMHasher suite. + +Comparison (single thread, Windows Seven 32 bits, using SMHasher on a Core 2 Duo @3GHz) + +Name Speed Q.Score Author +xxHash 5.4 GB/s 10 +CrapWow 3.2 GB/s 2 Andrew +MumurHash 3a 2.7 GB/s 10 Austin Appleby +SpookyHash 2.0 GB/s 10 Bob Jenkins +SBox 1.4 GB/s 9 Bret Mulvey +Lookup3 1.2 GB/s 9 Bob Jenkins +SuperFastHash 1.2 GB/s 1 Paul Hsieh +CityHash64 1.05 GB/s 10 Pike & Alakuijala +FNV 0.55 GB/s 5 Fowler, Noll, Vo +CRC32 0.43 GB/s 9 +MD5-32 0.33 GB/s 10 Ronald L. Rivest +SHA1-32 0.28 GB/s 10 + +Q.Score is a measure of quality of the hash function. +It depends on successfully passing SMHasher test set. +10 is a perfect score. +*/ + +#pragma once + +#if defined (__cplusplus) +extern "C" { +#endif + + +/***************************** + Includes +*****************************/ +#include /* size_t */ + + +/***************************** + Type +*****************************/ +typedef enum { XXH_OK = 0, XXH_ERROR } XXH_errorcode; + + + +/***************************** + Simple Hash Functions +*****************************/ + +unsigned int XXH32(const void *input, size_t length, unsigned seed); +unsigned long long XXH64(const void *input, size_t length, + unsigned long long seed); + +/* +XXH32() : + Calculate the 32-bits hash of sequence "length" bytes stored at memory address "input". + The memory between input & input+length must be valid (allocated and read-accessible). + "seed" can be used to alter the result predictably. + This function successfully passes all SMHasher tests. + Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark) : 5.4 GB/s +XXH64() : + Calculate the 64-bits hash of sequence of length "len" stored at memory address "input". +*/ + + + +/***************************** + Advanced Hash Functions +*****************************/ +typedef struct { long long ll[ 6]; } XXH32_state_t; +typedef struct { long long ll[11]; } XXH64_state_t; + +/* +These structures allow static allocation of XXH states. +States must then be initialized using XXHnn_reset() before first use. + +If you prefer dynamic allocation, please refer to functions below. +*/ + +XXH32_state_t *XXH32_createState(void); +XXH_errorcode XXH32_freeState(XXH32_state_t *statePtr); + +XXH64_state_t *XXH64_createState(void); +XXH_errorcode XXH64_freeState(XXH64_state_t *statePtr); + +/* +These functions create and release memory for XXH state. +States must then be initialized using XXHnn_reset() before first use. +*/ + + +XXH_errorcode XXH32_reset(XXH32_state_t *statePtr, unsigned seed); +XXH_errorcode XXH32_update(XXH32_state_t *statePtr, const void *input, + size_t length); +unsigned int XXH32_digest(const XXH32_state_t *statePtr); + +XXH_errorcode XXH64_reset(XXH64_state_t *statePtr, + unsigned long long seed); +XXH_errorcode XXH64_update(XXH64_state_t *statePtr, const void *input, + size_t length); +unsigned long long XXH64_digest(const XXH64_state_t *statePtr); + +/* +These functions calculate the xxHash of an input provided in multiple smaller packets, +as opposed to an input provided as a single block. + +XXH state space must first be allocated, using either static or dynamic method provided above. + +Start a new hash by initializing state with a seed, using XXHnn_reset(). + +Then, feed the hash state by calling XXHnn_update() as many times as necessary. +Obviously, input must be valid, meaning allocated and read accessible. +The function returns an error code, with 0 meaning OK, and any other value meaning there is an error. + +Finally, you can produce a hash anytime, by using XXHnn_digest(). +This function returns the final nn-bits hash. +You can nonetheless continue feeding the hash state with more input, +and therefore get some new hashes, by calling again XXHnn_digest(). + +When you are done, don't forget to free XXH state space, using typically XXHnn_freeState(). +*/ + + +#if defined (__cplusplus) +} +#endif diff --git a/external/lsquic/src/lshpack/.appveyor.yml b/external/lsquic/src/lshpack/.appveyor.yml new file mode 100644 index 0000000..9bd32e5 --- /dev/null +++ b/external/lsquic/src/lshpack/.appveyor.yml @@ -0,0 +1,14 @@ +version: 1.0.{build} + +build_script: + +- cmd: >- + echo %path% + + cmake . + + msbuild ALL_BUILD.vcxproj + +test_script: + +- cmd: ctest diff --git a/external/lsquic/src/lshpack/.cirrus.yml b/external/lsquic/src/lshpack/.cirrus.yml new file mode 100644 index 0000000..703bbc7 --- /dev/null +++ b/external/lsquic/src/lshpack/.cirrus.yml @@ -0,0 +1,6 @@ +freebsd_instance: + image: freebsd-13-3-release-amd64 + +task: + install_script: pkg install -y cmake + script: cmake . && make && make test diff --git a/external/lsquic/src/lshpack/.travis.yml b/external/lsquic/src/lshpack/.travis.yml new file mode 100644 index 0000000..5a39fdc --- /dev/null +++ b/external/lsquic/src/lshpack/.travis.yml @@ -0,0 +1,27 @@ +language: c +sudo: false +addons: + apt: +matrix: + include: + - name: Linux (gcc-8) + os: linux + dist: xenial + compiler: gcc-8 + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: g++-8 + - name: Linux (clang) + os: linux + dist: xenial + compiler: clang +before_install: + - $CC --version + - cmake --version +before_script: + - cmake . +script: + - make + - make test diff --git a/external/lsquic/src/lshpack/CMakeLists.txt b/external/lsquic/src/lshpack/CMakeLists.txt new file mode 100644 index 0000000..a970b85 --- /dev/null +++ b/external/lsquic/src/lshpack/CMakeLists.txt @@ -0,0 +1,90 @@ +# The following variable can be defined on the command line: +# +# SHARED +# NDEBUG +# XXH_HEADER_NAME +# XXH_INCLUDE_DIR +# LSHPACK_XXH + +CMAKE_MINIMUM_REQUIRED(VERSION 2.8) +PROJECT(ls-hpack C) + +include(CheckIncludeFiles) + +IF (SHARED EQUAL 1) + ADD_LIBRARY(ls-hpack SHARED lshpack.c) +ELSE() + ADD_LIBRARY(ls-hpack STATIC lshpack.c) +ENDIF() +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}) + +IF (NOT DEFINED XXH_HEADER_NAME) + SET(XXH_HEADER_NAME "xxhash.h") +ENDIF() + +IF (DEFINED XXH_INCLUDE_DIR) + INCLUDE_DIRECTORIES("${XXH_INCLUDE_DIR}") +ELSE() + INCLUDE_DIRECTORIES(deps/xxhash) +ENDIF() + +IF (LSHPACK_XXH) + TARGET_SOURCES(ls-hpack PRIVATE deps/xxhash/xxhash.c) +ENDIF() + +check_include_files("sys/queue.h" HAVE_SYS_QUEUE_H) + +IF (NOT HAVE_SYS_QUEUE_H) + INCLUDE_DIRECTORIES(compat/queue) +ENDIF() + +IF (MSVC) + INCLUDE_DIRECTORIES(compat/windows) +ENDIF() + +IF (CMAKE_C_COMPILER_ID STREQUAL GNU + OR CMAKE_C_COMPILER_ID STREQUAL Clang) + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -Wall -Wextra -Wno-unused-parameter") + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -fno-omit-frame-pointer") + INCLUDE(CheckCCompilerFlag) + CHECK_C_COMPILER_FLAG(-Wno-implicit-fallthrough HAS_NO_IMPLICIT_FALLTHROUGH) + IF (HAS_NO_IMPLICIT_FALLTHROUGH) + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -Wno-implicit-fallthrough") + ENDIF() + IF (PROFILE EQUAL 1) + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -g -pg") + ENDIF() + IF (CMAKE_BUILD_TYPE STREQUAL Release) + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -g0 -O3") + ELSE() + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -g3 -O0 -fsanitize=address") + ENDIF() +ENDIF() + +IF (NOT CMAKE_BUILD_TYPE STREQUAL Release) + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLS_HPACK_EMIT_TEST_CODE=1") +ENDIF() + +IF (CMAKE_BUILD_TYPE STREQUAL MinSizeRel) + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLS_HPACK_USE_LARGE_TABLES=0") +ENDIF() + +IF (NDEBUG EQUAL 1) + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DNDEBUG") +ENDIF() + +SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DXXH_HEADER_NAME=\\\"${XXH_HEADER_NAME}\\\"") + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MY_CMAKE_FLAGS} $ENV{EXTRA_CFLAGS}") + +MESSAGE(STATUS "Compiler flags: ${CMAKE_C_FLAGS}") + +IF (NOT CMAKE_BUILD_TYPE STREQUAL Release) + ENABLE_TESTING() + INCLUDE_DIRECTORIES("test") + ADD_SUBDIRECTORY("test") +ENDIF() + +IF (CMAKE_SYSTEM_NAME STREQUAL Linux) + ADD_SUBDIRECTORY(bin) +ENDIF() diff --git a/external/lsquic/src/lshpack/LICENSE b/external/lsquic/src/lshpack/LICENSE new file mode 100644 index 0000000..3eb8520 --- /dev/null +++ b/external/lsquic/src/lshpack/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 - 2023 LiteSpeed Technologies Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/external/lsquic/src/lshpack/README.md b/external/lsquic/src/lshpack/README.md new file mode 100644 index 0000000..28770c3 --- /dev/null +++ b/external/lsquic/src/lshpack/README.md @@ -0,0 +1,33 @@ +[![Build Status](https://travis-ci.com/litespeedtech/ls-hpack.svg?branch=master)](https://travis-ci.com/litespeedtech/ls-hpack) +[![Build Status](https://api.cirrus-ci.com/github/litespeedtech/ls-hpack.svg)](https://cirrus-ci.com/github/litespeedtech/ls-hpack) +[![Build status](https://ci.appveyor.com/api/projects/status/6ev71ecmm3j2u9o5?svg=true)](https://ci.appveyor.com/project/litespeedtech/ls-hpack) + +LS-HPACK: LiteSpeed HPACK Library +================================= + +Description +----------- + +LS-HPACK provides functionality to encode and decode HTTP headers using +HPACK compression mechanism specified in RFC 7541. + +Documentation +------------- + +The API is documented in include/lshpack.h. To see usage examples, +see the unit tests. + +Requirements +------------ + +To build LS-HPACK, you need CMake. The library uses XXHASH at runtime. + +Platforms +--------- + +The library has been tested on the following platforms: +- Linux +- FreeBSD +- Windows + +Copyright (c) 2018 - 2020 LiteSpeed Technologies Inc diff --git a/external/lsquic/src/lshpack/bin/CMakeLists.txt b/external/lsquic/src/lshpack/bin/CMakeLists.txt new file mode 100644 index 0000000..69b7b54 --- /dev/null +++ b/external/lsquic/src/lshpack/bin/CMakeLists.txt @@ -0,0 +1,16 @@ +add_executable(encode-qif encode-qif.c ../deps/xxhash/xxhash.c) +target_link_libraries(encode-qif PRIVATE ls-hpack) + +add_executable(gen-fast-dec-table gen-fast-dec-table.c) + +add_executable(gen-fast-enc-table gen-fast-enc-table.c) + +add_executable(huff-decode huff-decode.c ../deps/xxhash/xxhash.c) +target_link_libraries(huff-decode PRIVATE ls-hpack) + +add_executable(huff-encode huff-encode.c ../deps/xxhash/xxhash.c) +target_link_libraries(huff-encode PRIVATE ls-hpack) + +add_executable(calc-xxh calc-xxh.c ../deps/xxhash/xxhash.c) + +add_executable(find-xxh find-xxh.c ../deps/xxhash/xxhash.c) diff --git a/external/lsquic/src/lshpack/bin/calc-xxh.c b/external/lsquic/src/lshpack/bin/calc-xxh.c new file mode 100644 index 0000000..2a238e6 --- /dev/null +++ b/external/lsquic/src/lshpack/bin/calc-xxh.c @@ -0,0 +1,69 @@ +/* calc-xxh: calculate XXH32 hashes for name and value strings */ + +#include +#include +#include +#include +#include + +#include XXH_HEADER_NAME + +int +main (int argc, char **argv) +{ + uint32_t seed, name_hash, nameval_hash; + size_t name_len, value_len; + const char *name, *value; + XXH32_state_t hash_state; + int mode; + + if (argc != 5) + { + fprintf(stderr, +"Usage: %s mode seed name value\n" +"\n" +" mode is one of:\n" +" 0 Single seed, update\n" +" 1 Use name hash as seed for calculating nameval hash\n" +"\n" +" seed is the initial seed\n" +"\n", argv[0]); + return 0; + } + + mode = atoi(argv[1]); + if (!(mode == 0 || mode == 1)) + { + fprintf(stderr, "mode `%s' is invalid\n", argv[1]); + return 1; + } + + seed = atoi(argv[2]); + name = argv[3]; + value = argv[4]; + name_len = strlen(name); + value_len = strlen(value); + + switch (mode) + { + case 0: + XXH32_reset(&hash_state, seed); + XXH32_update(&hash_state, name, name_len); + name_hash = XXH32_digest(&hash_state); + XXH32_update(&hash_state, value, value_len); + nameval_hash = XXH32_digest(&hash_state); + break; + default: + name_hash = XXH32(name, name_len, seed); + nameval_hash = XXH32(value, value_len, name_hash); + break; + } + + printf( +"In mode %d, name: `%s', value: `%s' hash to:\n" +"name hash 0x%08"PRIX32"\n" +"nameval hash 0x%08"PRIX32"\n" + , mode, name, value, name_hash, nameval_hash); + + return 0; +} diff --git a/external/lsquic/src/lshpack/bin/encode-qif.c b/external/lsquic/src/lshpack/bin/encode-qif.c new file mode 100644 index 0000000..ab6dd1e --- /dev/null +++ b/external/lsquic/src/lshpack/bin/encode-qif.c @@ -0,0 +1,263 @@ +/* + * Read QIF and encode it using HPACK. Use for benchmarking. + * + * Based on ls-qpack's interop-encode. + * + * How it works: read in QIF into a list of header set objects and encode + * the list a number of times. + * + * QIF Format: + * https://github.com/quicwg/base-drafts/wiki/QPACK-Offline-Interop + */ + +#define _GNU_SOURCE /* for memmem */ +#include + +#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) +#include +#define bswap_16 bswap16 +#define bswap_32 bswap32 +#define bswap_64 bswap64 +#elif defined(__APPLE__) +#include +#define bswap_16 OSSwapInt16 +#define bswap_32 OSSwapInt32 +#define bswap_64 OSSwapInt64 +#elif defined(WIN32) +#error Not supported on Windows +#else +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lshpack.h" + +static int s_verbose; + +#define TABLE_SIZE 4096 + +static void +usage (const char *name) +{ + fprintf(stderr, +"Usage: %s [options] [-i input] [-o output]\n" +"\n" +"Options:\n" +" -i FILE Input file.\n" +" -o FILE Output file. If not spepcified or set to `-', the output\n" +" is written to stdout.\n" +" -K Discard output: encoded output is discarded.\n" +" -H Do not use the history heuristic.\n" +" -n NUMBER Number of times to iterate over the header set list.\n" +" -t NUMBER Dynamic table size. Defaults to %u.\n" +" -v Verbose: print various messages to stderr.\n" +"\n" +" -h Print this help screen and exit\n" + , name, TABLE_SIZE); +} + + +struct header +{ + const char *name; + const char *val; + size_t name_len; + size_t val_len; +}; + + +#define MAX_HEADERS 32 + +struct header_set +{ + STAILQ_ENTRY(header_set) next; + unsigned n_headers; + struct header headers[MAX_HEADERS]; +}; + + +static inline void +lsxpack_header_set_ptr(lsxpack_header_t *hdr, + const char *name, size_t name_len, + const char *val, size_t val_len) +{ + static char buf[65536]; + memcpy(buf, name, name_len); + memcpy(&buf[name_len], val, val_len); + lsxpack_header_set_offset2(hdr, buf, 0, name_len, name_len, val_len); +} + + +int +main (int argc, char **argv) +{ + FILE *out = stdout; + int opt, qif_fd = -1; + int discard = 0, use_history = 1; + unsigned n_iters = 1, n, i; + unsigned dyn_table_size = TABLE_SIZE; + STAILQ_HEAD(, header_set) header_sets = STAILQ_HEAD_INITIALIZER(header_sets); + struct stat st; + const unsigned char *qif = NULL, *p, *tab, *nl, *nlnl; + unsigned char *s; + struct header *header; + struct header_set *hset; + struct lshpack_enc encoder; + unsigned char buf[0x2000]; + + while (-1 != (opt = getopt(argc, argv, "Hi:o:Kn:t:vh"))) + { + switch (opt) + { + case 'n': + n_iters = atoi(optarg); + break; + case 'i': + qif_fd = open(optarg, O_RDONLY); + if (qif_fd < 0) + { + perror("open"); + exit(EXIT_FAILURE); + } + if (0 != fstat(qif_fd, &st)) + { + perror("fstat"); + exit(EXIT_FAILURE); + } + qif = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, qif_fd, 0); + if (!qif) + { + perror("mmap"); + exit(EXIT_FAILURE); + } + break; + case 'o': + if (0 != strcmp(optarg, "-")) + { + out = fopen(optarg, "wb"); + if (!out) + { + fprintf(stderr, "cannot open `%s' for writing: %s\n", + optarg, strerror(errno)); + exit(EXIT_FAILURE); + } + } + break; + case 'K': + discard = 1; + break; + case 'H': + use_history = 0; + break; + case 't': + dyn_table_size = atoi(optarg); + break; + case 'h': + usage(argv[0]); + exit(EXIT_SUCCESS); + case 'v': + ++s_verbose; + break; + default: + exit(EXIT_FAILURE); + } + } + + if (!qif) + { + fprintf(stderr, "Please specify input QIF file using -i flag\n"); + exit(EXIT_FAILURE); + } + + const unsigned char *const begin = qif; + const unsigned char *const end = begin + st.st_size; + while (qif + 2 < end) + { + nlnl = memmem(qif, end - qif, "\n\n", 2); + if (!nlnl) + nlnl = end; + hset = calloc(1, sizeof(*hset)); + if (!hset) + { + perror("malloc"); + exit(EXIT_FAILURE); + } + STAILQ_INSERT_TAIL(&header_sets, hset, next); + p = qif; + while (p < nlnl) + { + if (hset->n_headers >= MAX_HEADERS) + { + fprintf(stderr, "max headers > 32, off: %u", + (unsigned) (p - begin)); + exit(EXIT_FAILURE); + } + tab = memmem(p, nlnl - p, "\t", 1); + if (!tab) + { + fprintf(stderr, "tab not found, off: %u", + (unsigned) (p - begin)); + exit(EXIT_FAILURE); + } + nl = memmem(tab + 1, nlnl - tab - 1, "\n", 1); + if (!nl) + nl = nlnl; + hset->headers[ hset->n_headers ] = (struct header) { + .name = (const char *) p, + .val = (const char *) tab + 1, + .name_len = tab - p, + .val_len = nl - tab - 1, + }; + ++hset->n_headers; + p = nl + 1; + } + qif = nlnl + 2; + } + + lsxpack_header_t hdr; + for (n = 0; n < n_iters; ++n) + { + if (0 != lshpack_enc_init(&encoder)) + { + perror("lshpack_enc_init"); + exit(EXIT_FAILURE); + } + (void) lshpack_enc_use_hist(&encoder, use_history); + + STAILQ_FOREACH(hset, &header_sets, next) + { + for (i = 0; i < hset->n_headers; ++i) + { + header = &hset->headers[i]; + lsxpack_header_set_ptr(&hdr, header->name, header->name_len, + header->val, header->val_len); + s = lshpack_enc_encode(&encoder, buf, buf + sizeof(buf), &hdr); + if (s <= buf) + { + fprintf(stderr, "cannot encode\n"); + exit(EXIT_FAILURE); + } + if (!discard) + (void) fwrite(buf, 1, s - buf, out); + } + } + + lshpack_enc_set_max_capacity(&encoder, dyn_table_size); + lshpack_enc_cleanup(&encoder); + } + + munmap((void *) begin, st.st_size); + if (qif_fd >= 0) + close(qif_fd); + exit(EXIT_SUCCESS); +} diff --git a/external/lsquic/src/lshpack/bin/find-xxh.c b/external/lsquic/src/lshpack/bin/find-xxh.c new file mode 100644 index 0000000..b716e09 --- /dev/null +++ b/external/lsquic/src/lshpack/bin/find-xxh.c @@ -0,0 +1,455 @@ +/* find-xxh -- find XXH seed common for ls-hpack and ls-qpack + * + * To speed up decoding/encoding process in a proxy, we need to use the + * same name and nameval XXH hashes in ls-hpack and ls-qpack libraries. + * This program finds an XXH seed common to both and shifts and offsets + * for construction of name and nameval XXH tables in both libraries. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include XXH_HEADER_NAME + +#define NAME_VAL(a, b) sizeof(a) - 1, sizeof(b) - 1, (a), (b) + +struct table_elem +{ + unsigned name_len; + unsigned val_len; + const char *name; + const char *val; +}; + + +static const struct table_elem hpack_table[] = +{ + { NAME_VAL(":authority", "") }, + { NAME_VAL(":method", "GET") }, + { NAME_VAL(":method", "POST") }, + { NAME_VAL(":path", "/") }, + { NAME_VAL(":path", "/index.html") }, + { NAME_VAL(":scheme", "http") }, + { NAME_VAL(":scheme", "https") }, + { NAME_VAL(":status", "200") }, + { NAME_VAL(":status", "204") }, + { NAME_VAL(":status", "206") }, + { NAME_VAL(":status", "304") }, + { NAME_VAL(":status", "400") }, + { NAME_VAL(":status", "404") }, + { NAME_VAL(":status", "500") }, + { NAME_VAL("accept-charset", "") }, + { NAME_VAL("accept-encoding", "gzip, deflate") }, + { NAME_VAL("accept-language", "") }, + { NAME_VAL("accept-ranges", "") }, + { NAME_VAL("accept", "") }, + { NAME_VAL("access-control-allow-origin", "") }, + { NAME_VAL("age", "") }, + { NAME_VAL("allow", "") }, + { NAME_VAL("authorization", "") }, + { NAME_VAL("cache-control", "") }, + { NAME_VAL("content-disposition", "") }, + { NAME_VAL("content-encoding", "") }, + { NAME_VAL("content-language", "") }, + { NAME_VAL("content-length", "") }, + { NAME_VAL("content-location", "") }, + { NAME_VAL("content-range", "") }, + { NAME_VAL("content-type", "") }, + { NAME_VAL("cookie", "") }, + { NAME_VAL("date", "") }, + { NAME_VAL("etag", "") }, + { NAME_VAL("expect", "") }, + { NAME_VAL("expires", "") }, + { NAME_VAL("from", "") }, + { NAME_VAL("host", "") }, + { NAME_VAL("if-match", "") }, + { NAME_VAL("if-modified-since", "") }, + { NAME_VAL("if-none-match", "") }, + { NAME_VAL("if-range", "") }, + { NAME_VAL("if-unmodified-since", "") }, + { NAME_VAL("last-modified", "") }, + { NAME_VAL("link", "") }, + { NAME_VAL("location", "") }, + { NAME_VAL("max-forwards", "") }, + { NAME_VAL("proxy-authenticate", "") }, + { NAME_VAL("proxy-authorization", "") }, + { NAME_VAL("range", "") }, + { NAME_VAL("referer", "") }, + { NAME_VAL("refresh", "") }, + { NAME_VAL("retry-after", "") }, + { NAME_VAL("server", "") }, + { NAME_VAL("set-cookie", "") }, + { NAME_VAL("strict-transport-security", "") }, + { NAME_VAL("transfer-encoding", "") }, + { NAME_VAL("user-agent", "") }, + { NAME_VAL("vary", "") }, + { NAME_VAL("via", "") }, + { NAME_VAL("www-authenticate", "") } +}; +#define HPACK_STATIC_TABLE_SIZE (sizeof(hpack_table) / sizeof(hpack_table[0])) + +static const unsigned hpack_name_indexes[] = { + 0, 1, 3, 5, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, +}; +#define HPACK_NAME_SIZE (sizeof(hpack_name_indexes) / sizeof(hpack_name_indexes[0])) + +/* [draft-ietf-quic-qpack-03] Appendix A */ +static const struct table_elem qpack_table[] = +{ + { NAME_VAL(":authority", "") }, + { NAME_VAL(":path", "/") }, + { NAME_VAL("age", "0") }, + { NAME_VAL("content-disposition", "") }, + { NAME_VAL("content-length", "0") }, + { NAME_VAL("cookie", "") }, + { NAME_VAL("date", "") }, + { NAME_VAL("etag", "") }, + { NAME_VAL("if-modified-since", "") }, + { NAME_VAL("if-none-match", "") }, + { NAME_VAL("last-modified", "") }, + { NAME_VAL("link", "") }, + { NAME_VAL("location", "") }, + { NAME_VAL("referer", "") }, + { NAME_VAL("set-cookie", "") }, + { NAME_VAL(":method", "CONNECT") }, + { NAME_VAL(":method", "DELETE") }, + { NAME_VAL(":method", "GET") }, + { NAME_VAL(":method", "HEAD") }, + { NAME_VAL(":method", "OPTIONS") }, + { NAME_VAL(":method", "POST") }, + { NAME_VAL(":method", "PUT") }, + { NAME_VAL(":scheme", "http") }, + { NAME_VAL(":scheme", "https") }, + { NAME_VAL(":status", "103") }, + { NAME_VAL(":status", "200") }, + { NAME_VAL(":status", "304") }, + { NAME_VAL(":status", "404") }, + { NAME_VAL(":status", "503") }, + { NAME_VAL("accept", "*/*") }, + { NAME_VAL("accept", "application/dns-message") }, + { NAME_VAL("accept-encoding", "gzip, deflate, br") }, + { NAME_VAL("accept-ranges", "bytes") }, + { NAME_VAL("access-control-allow-headers", "cache-control") }, + { NAME_VAL("access-control-allow-headers", "content-type") }, + { NAME_VAL("access-control-allow-origin", "*") }, + { NAME_VAL("cache-control", "max-age=0") }, + { NAME_VAL("cache-control", "max-age=2592000") }, + { NAME_VAL("cache-control", "max-age=604800") }, + { NAME_VAL("cache-control", "no-cache") }, + { NAME_VAL("cache-control", "no-store") }, + { NAME_VAL("cache-control", "public, max-age=31536000") }, + { NAME_VAL("content-encoding", "br") }, + { NAME_VAL("content-encoding", "gzip") }, + { NAME_VAL("content-type", "application/dns-message") }, + { NAME_VAL("content-type", "application/javascript") }, + { NAME_VAL("content-type", "application/json") }, + { NAME_VAL("content-type", "application/x-www-form-urlencoded") }, + { NAME_VAL("content-type", "image/gif") }, + { NAME_VAL("content-type", "image/jpeg") }, + { NAME_VAL("content-type", "image/png") }, + { NAME_VAL("content-type", "text/css") }, + { NAME_VAL("content-type", "text/html; charset=utf-8") }, + { NAME_VAL("content-type", "text/plain") }, + { NAME_VAL("content-type", "text/plain;charset=utf-8") }, + { NAME_VAL("range", "bytes=0-") }, + { NAME_VAL("strict-transport-security", "max-age=31536000") }, + { NAME_VAL("strict-transport-security", "max-age=31536000; includesubdomains") }, + { NAME_VAL("strict-transport-security", "max-age=31536000; includesubdomains; preload") }, + { NAME_VAL("vary", "accept-encoding") }, + { NAME_VAL("vary", "origin") }, + { NAME_VAL("x-content-type-options", "nosniff") }, + { NAME_VAL("x-xss-protection", "1; mode=block") }, + { NAME_VAL(":status", "100") }, + { NAME_VAL(":status", "204") }, + { NAME_VAL(":status", "206") }, + { NAME_VAL(":status", "302") }, + { NAME_VAL(":status", "400") }, + { NAME_VAL(":status", "403") }, + { NAME_VAL(":status", "421") }, + { NAME_VAL(":status", "425") }, + { NAME_VAL(":status", "500") }, + { NAME_VAL("accept-language", "") }, + { NAME_VAL("access-control-allow-credentials", "FALSE") }, + { NAME_VAL("access-control-allow-credentials", "TRUE") }, + { NAME_VAL("access-control-allow-headers", "*") }, + { NAME_VAL("access-control-allow-methods", "get") }, + { NAME_VAL("access-control-allow-methods", "get, post, options") }, + { NAME_VAL("access-control-allow-methods", "options") }, + { NAME_VAL("access-control-expose-headers", "content-length") }, + { NAME_VAL("access-control-request-headers", "content-type") }, + { NAME_VAL("access-control-request-method", "get") }, + { NAME_VAL("access-control-request-method", "post") }, + { NAME_VAL("alt-svc", "clear") }, + { NAME_VAL("authorization", "") }, + { NAME_VAL("content-security-policy", "script-src 'none'; object-src 'none'; base-uri 'none'") }, + { NAME_VAL("early-data", "1") }, + { NAME_VAL("expect-ct", "") }, + { NAME_VAL("forwarded", "") }, + { NAME_VAL("if-range", "") }, + { NAME_VAL("origin", "") }, + { NAME_VAL("purpose", "prefetch") }, + { NAME_VAL("server", "") }, + { NAME_VAL("timing-allow-origin", "*") }, + { NAME_VAL("upgrade-insecure-requests", "1") }, + { NAME_VAL("user-agent", "") }, + { NAME_VAL("x-forwarded-for", "") }, + { NAME_VAL("x-frame-options", "deny") }, + { NAME_VAL("x-frame-options", "sameorigin") }, +}; +#define QPACK_STATIC_TABLE_SIZE (sizeof(qpack_table) / sizeof(qpack_table[0])) + +/* This is calculated at runtime */ +static unsigned qpack_name_indexes[QPACK_STATIC_TABLE_SIZE]; +static unsigned n_qpack_name_indexes; + +/* QPACK static table has an interesting property that headers names are + * not all placed in contiguous sequences. For example, :status appears + * in two places in the table. + */ +static void +calculate_qpack_name_indexes (void) +{ + unsigned i, n; + + qpack_name_indexes[0] = 0; + n_qpack_name_indexes = 1; + for (n = 1; n < QPACK_STATIC_TABLE_SIZE; ++n) + { + for (i = 0; i < n + && !(qpack_table[i].name_len == qpack_table[n].name_len + && 0 == memcmp(qpack_table[i].name, + qpack_table[n].name, qpack_table[n].name_len)); ++i) + ; + if (i == n) + qpack_name_indexes[n_qpack_name_indexes++] = n; + } +} + + +/* Need to strike some balance here. A small start width will result in + * potentially long search time and -- more importantly -- in a hpack_table that + * is very small, which may require lookup code to perform more comparisons. + * On the other hand, a large width will result in a hpack_table that may be + * slower to use. + */ +static unsigned MIN_WIDTH = 9; +static unsigned MAX_WIDTH = 9; + +static unsigned MIN_SHIFT = 0; +static unsigned MAX_SHIFT = 31; + +/* Return true if acceptable shift and width were found, false otherwise */ +static int +find_shift_and_width (const uint32_t *hashes, const unsigned n_hashes, + unsigned *shift_p, unsigned *width_p) +{ + unsigned shift, width, hash, i, j; + + for (width = MIN_WIDTH; width <= MAX_WIDTH; ++width) + { + for (shift = MIN_SHIFT; shift <= MAX_SHIFT + && shift < 32 - width; ++shift) + { + for (i = 1; i < n_hashes; ++i) + { + hash = hashes[i] & (((1u << width) - 1) << shift); + for (j = 0; j < i; ++j) + if ((hashes[j] & (((1u << width) - 1) << shift)) == hash) + goto check; + } + check: if (i >= n_hashes) + { + *shift_p = shift; + *width_p = width; + return 1; + } + } + } + + return 0; +} + + +int +main (int argc, char **argv) +{ + uint32_t hpack_name_hashes[HPACK_NAME_SIZE]; + uint32_t hpack_nameval_hashes[HPACK_STATIC_TABLE_SIZE]; + uint32_t qpack_nameval_hashes[QPACK_STATIC_TABLE_SIZE]; + uint32_t qpack_name_hashes[QPACK_STATIC_TABLE_SIZE]; + uint32_t seed, init_seed = 0; + unsigned n, idx; + unsigned hpack_nameval_shift, hpack_name_width, hpack_nameval_width, + hpack_name_shift; + unsigned qpack_nameval_shift, qpack_name_width, qpack_nameval_width, + qpack_name_shift; + int opt, dont_stop = 0, print_tables = 0; + + while (-1 != (opt = getopt(argc, argv, "i:w:W:s:S:phN"))) + { + switch (opt) + { + case 'i': + init_seed = atoi(optarg); + break; + case 'w': + MIN_WIDTH = atoi(optarg); + break; + case 'W': + MAX_WIDTH = atoi(optarg); + break; + case 's': + MIN_SHIFT = atoi(optarg); + break; + case 'S': + MAX_SHIFT = atoi(optarg); + break; + case 'p': + print_tables = 1; + break; + case 'N': + dont_stop = 1; + break; + case 'h': printf( +"Usage: %s [options]\n" +"\n" +" -i seed Initial seed (defaults to 0)\n" +" -w width Minimum width (defaults to %u)\n" +" -W width Maximum width (defaults to %u)\n" +" -s shift Minimum shift (defaults to %u)\n" +" -S shift Maximum shift (defaults to %u)\n" +" -N Don't stop after finding a match, keep searching\n" +" -p Print resulting HPACK and QPACK tables\n" +" -h Print this help screen and exit\n" + , argv[0], MIN_WIDTH, MAX_WIDTH, MIN_SHIFT, MAX_SHIFT); + return 0; + } + } + + seed = init_seed; + calculate_qpack_name_indexes(); + + again: + for (n = 0; n < HPACK_NAME_SIZE; ++n) + { + idx = hpack_name_indexes[n]; + hpack_name_hashes[n] = XXH32(hpack_table[idx].name, + hpack_table[idx].name_len, seed); + } + if (!find_shift_and_width(hpack_name_hashes, HPACK_NAME_SIZE, + &hpack_name_shift, &hpack_name_width)) + goto incr_seed; + + for (n = 0; n < HPACK_STATIC_TABLE_SIZE; ++n) + { + hpack_nameval_hashes[n] = XXH32(hpack_table[n].name, + hpack_table[n].name_len, seed); + hpack_nameval_hashes[n] = XXH32(hpack_table[n].val, + hpack_table[n].val_len, hpack_nameval_hashes[n]); + } + if (!find_shift_and_width(hpack_nameval_hashes, HPACK_STATIC_TABLE_SIZE, + &hpack_nameval_shift, &hpack_nameval_width)) + goto incr_seed; + + for (n = 0; n < n_qpack_name_indexes; ++n) + { + idx = qpack_name_indexes[n]; + qpack_name_hashes[n] = XXH32(qpack_table[idx].name, + qpack_table[idx].name_len, seed); + } + if (!find_shift_and_width(qpack_name_hashes, n_qpack_name_indexes, + &qpack_name_shift, &qpack_name_width)) + goto incr_seed; + + for (n = 0; n < QPACK_STATIC_TABLE_SIZE; ++n) + { + qpack_nameval_hashes[n] = XXH32(qpack_table[n].name, + qpack_table[n].name_len, seed); + qpack_nameval_hashes[n] = XXH32(qpack_table[n].val, + qpack_table[n].val_len, qpack_nameval_hashes[n]); + } + if (!find_shift_and_width(qpack_nameval_hashes, QPACK_STATIC_TABLE_SIZE, + &qpack_nameval_shift, &qpack_nameval_width)) + goto incr_seed; + + printf("unique set: seed %u\n" + " hpack:\n" + " name shift: %u; width: %u\n" + " nameval shift: %u; width: %u\n" + " qpack:\n" + " name shift: %u; width: %u\n" + " nameval shift: %u; width: %u\n" + , seed + , hpack_name_shift, hpack_name_width + , hpack_nameval_shift, hpack_nameval_width + , qpack_name_shift, qpack_name_width + , qpack_nameval_shift, qpack_nameval_width + ); + + if (print_tables) + { + printf("#define XXH_SEED %"PRIu32"\n", seed); + + printf("#define XXH_HPACK_NAME_WIDTH %"PRIu32"\n", hpack_name_width); + printf("#define XXH_HPACK_NAME_SHIFT %"PRIu32"\n", hpack_name_shift); + printf("static const unsigned char hpack_name2id[ 1 << XXH_HPACK_NAME_WIDTH ] =\n{\n"); + for (n = 0; n < HPACK_NAME_SIZE; ++n) + printf("[%u] = %u, ", (hpack_name_hashes[n] >> hpack_name_shift) + & ((1 << hpack_name_width) - 1), hpack_name_indexes[n] + 1); + printf("\n};\n"); + + printf("#define XXH_HPACK_NAMEVAL_WIDTH %"PRIu32"\n", hpack_nameval_width); + printf("#define XXH_HPACK_NAMEVAL_SHIFT %"PRIu32"\n", hpack_nameval_shift); + printf("static const unsigned char hpack_nameval2id[ 1 << XXH_HPACK_NAMEVAL_WIDTH ] =\n{\n"); + for (n = 0; n < HPACK_STATIC_TABLE_SIZE; ++n) + printf("[%u] = %u, ", (hpack_nameval_hashes[n] >> hpack_nameval_shift) + & ((1 << hpack_nameval_width) - 1), n + 1); + printf("\n};\n"); + + printf("#define XXH_QPACK_NAME_WIDTH %"PRIu32"\n", qpack_name_width); + printf("#define XXH_QPACK_NAME_SHIFT %"PRIu32"\n", qpack_name_shift); + printf("static const unsigned char qpack_name2id[ 1 << XXH_QPACK_NAME_WIDTH ] =\n{\n"); + for (n = 0; n < n_qpack_name_indexes; ++n) + printf("[%u] = %u, ", (qpack_name_hashes[n] >> qpack_name_shift) + & ((1 << qpack_name_width) - 1), qpack_name_indexes[n] + 1); + printf("\n};\n"); + + printf("#define XXH_QPACK_NAMEVAL_WIDTH %"PRIu32"\n", qpack_nameval_width); + printf("#define XXH_QPACK_NAMEVAL_SHIFT %"PRIu32"\n", qpack_nameval_shift); + printf("static const unsigned char qpack_nameval2id[ 1 << XXH_QPACK_NAMEVAL_WIDTH ] =\n{\n"); + for (n = 0; n < QPACK_STATIC_TABLE_SIZE; ++n) + printf("[%u] = %u, ", (qpack_nameval_hashes[n] >> qpack_nameval_shift) + & ((1 << qpack_nameval_width) - 1), n + 1); + printf("\n};\n"); + } + + if (dont_stop) + { + fflush(stdout); + goto incr_seed; + } + +#if 0 /* TODO */ + for (i = 0; i < TABLE_SIZE; ++i) +#if NAMEVAL_SEARCH + printf("[%u] = %u,\n", (hashes[i] >> min_shift) & ((1 << min_width) - 1), nameval_indexes[i] + 1); +#else + printf("[%u] = %u,\n", (hashes[i] >> min_shift) & ((1 << min_width) - 1), name_indexes[i] + 1); +#endif +#endif + + return 0; + + incr_seed: + ++seed; + if ((seed - init_seed) % 100000 == 0) + fprintf(stderr, ".... seed: %u\n", seed); + goto again; +} diff --git a/external/lsquic/src/lshpack/bin/gen-fast-dec-table.c b/external/lsquic/src/lshpack/bin/gen-fast-dec-table.c new file mode 100644 index 0000000..9511d26 --- /dev/null +++ b/external/lsquic/src/lshpack/bin/gen-fast-dec-table.c @@ -0,0 +1,175 @@ +/* Generate table for fast Huffman decoding */ + +#include +#include +#include +#include + + +struct el +{ + uint16_t code; + unsigned bits; + uint8_t out; +}; + +static const struct el els[] = +{ + { 0x0, 5, 48, }, + { 0x1, 5, 49, }, + { 0x2, 5, 50, }, + { 0x3, 5, 97, }, + { 0x4, 5, 99, }, + { 0x5, 5, 101, }, + { 0x6, 5, 105, }, + { 0x7, 5, 111, }, + { 0x8, 5, 115, }, + { 0x9, 5, 116, }, + { 0x14, 6, 32, }, + { 0x15, 6, 37, }, + { 0x16, 6, 45, }, + { 0x17, 6, 46, }, + { 0x18, 6, 47, }, + { 0x19, 6, 51, }, + { 0x1a, 6, 52, }, + { 0x1b, 6, 53, }, + { 0x1c, 6, 54, }, + { 0x1d, 6, 55, }, + { 0x1e, 6, 56, }, + { 0x1f, 6, 57, }, + { 0x20, 6, 61, }, + { 0x21, 6, 65, }, + { 0x22, 6, 95, }, + { 0x23, 6, 98, }, + { 0x24, 6, 100, }, + { 0x25, 6, 102, }, + { 0x26, 6, 103, }, + { 0x27, 6, 104, }, + { 0x28, 6, 108, }, + { 0x29, 6, 109, }, + { 0x2a, 6, 110, }, + { 0x2b, 6, 112, }, + { 0x2c, 6, 114, }, + { 0x2d, 6, 117, }, + { 0x5c, 7, 58, }, + { 0x5d, 7, 66, }, + { 0x5e, 7, 67, }, + { 0x5f, 7, 68, }, + { 0x60, 7, 69, }, + { 0x61, 7, 70, }, + { 0x62, 7, 71, }, + { 0x63, 7, 72, }, + { 0x64, 7, 73, }, + { 0x65, 7, 74, }, + { 0x66, 7, 75, }, + { 0x67, 7, 76, }, + { 0x68, 7, 77, }, + { 0x69, 7, 78, }, + { 0x6a, 7, 79, }, + { 0x6b, 7, 80, }, + { 0x6c, 7, 81, }, + { 0x6d, 7, 82, }, + { 0x6e, 7, 83, }, + { 0x6f, 7, 84, }, + { 0x70, 7, 85, }, + { 0x71, 7, 86, }, + { 0x72, 7, 87, }, + { 0x73, 7, 89, }, + { 0x74, 7, 106, }, + { 0x75, 7, 107, }, + { 0x76, 7, 113, }, + { 0x77, 7, 118, }, + { 0x78, 7, 119, }, + { 0x79, 7, 120, }, + { 0x7a, 7, 121, }, + { 0x7b, 7, 122, }, + { 0xf8, 8, 38, }, + { 0xf9, 8, 42, }, + { 0xfa, 8, 44, }, + { 0xfb, 8, 59, }, + { 0xfc, 8, 88, }, + { 0xfd, 8, 90, }, + { 0x3f8, 10, 33, }, + { 0x3f9, 10, 34, }, + { 0x3fa, 10, 40, }, + { 0x3fb, 10, 41, }, + { 0x3fc, 10, 63, }, + { 0x7fa, 11, 39, }, + { 0x7fb, 11, 43, }, + { 0x7fc, 11, 124, }, + { 0xffa, 12, 35, }, + { 0xffb, 12, 62, }, + { 0x1ff8, 13, 0, }, + { 0x1ff9, 13, 36, }, + { 0x1ffa, 13, 64, }, + { 0x1ffb, 13, 91, }, + { 0x1ffc, 13, 93, }, + { 0x1ffd, 13, 126, }, + { 0x3ffc, 14, 94, }, + { 0x3ffd, 14, 125, }, + { 0x7ffc, 15, 60, }, + { 0x7ffd, 15, 96, }, + { 0x7ffe, 15, 123, }, +}; + + +static void +generate_entry (uint16_t idx) +{ + unsigned int bits_left, n_outs; + const struct el *el; + uint8_t outs[3]; + + bits_left = 16; + n_outs = 0; + do + { + for (el = els; el < els + sizeof(els) + / sizeof(els[0]) && el->bits <= bits_left; ++el) + if (el->code == (uint32_t) ((idx >> (bits_left - el->bits)) & ((1 << el->bits) - 1))) + break; + if (el >= els + sizeof(els) / sizeof(els[0]) || el->bits > bits_left) + break; + outs[n_outs++] = el->out; + bits_left -= el->bits; + } + while (bits_left >= 5 /* shortest code */); + + printf("/* %"PRIu16" */ ", idx); + if (n_outs) + { + printf("{(%u<<2)|%u,{", 16 - bits_left, n_outs); + switch (n_outs) + { + case 3: + printf("%u,%u,%u", outs[0], outs[1], outs[2]); + break; + case 2: + printf("%u,%u,0", outs[0], outs[1]); + break; + case 1: + printf("%u,0,0", outs[0]); + break; + default: exit(EXIT_FAILURE); + } + printf("}}"); + } + else + printf("{0,0,0,0,}"); + printf(",\n"); +} + + +int +main (void) +{ + unsigned idx; + + printf("static const struct hdec { uint8_t lens; uint8_t out[3]; } " + "hdecs[] =\n{\n"); + for (idx = 0; idx <= UINT16_MAX; ++idx) + generate_entry(idx); + printf("};\n"); + + return 0; +} diff --git a/external/lsquic/src/lshpack/bin/gen-fast-enc-table.c b/external/lsquic/src/lshpack/bin/gen-fast-enc-table.c new file mode 100644 index 0000000..6b5d745 --- /dev/null +++ b/external/lsquic/src/lshpack/bin/gen-fast-enc-table.c @@ -0,0 +1,315 @@ +/* Generate table for fast Huffman encoding */ + +#include +#include +#include +#include + +struct encode_el +{ + uint32_t code; + int bits; +}; + +static const struct encode_el encode_table[257] = +{ + { 0x1ff8, 13}, // ( 0) + { 0x7fffd8, 23}, // ( 1) + { 0xfffffe2, 28}, // ( 2) + { 0xfffffe3, 28}, // ( 3) + { 0xfffffe4, 28}, // ( 4) + { 0xfffffe5, 28}, // ( 5) + { 0xfffffe6, 28}, // ( 6) + { 0xfffffe7, 28}, // ( 7) + { 0xfffffe8, 28}, // ( 8) + { 0xffffea, 24}, // ( 9) + { 0x3ffffffc, 30}, // ( 10) + { 0xfffffe9, 28}, // ( 11) + { 0xfffffea, 28}, // ( 12) + { 0x3ffffffd, 30}, // ( 13) + { 0xfffffeb, 28}, // ( 14) + { 0xfffffec, 28}, // ( 15) + { 0xfffffed, 28}, // ( 16) + { 0xfffffee, 28}, // ( 17) + { 0xfffffef, 28}, // ( 18) + { 0xffffff0, 28}, // ( 19) + { 0xffffff1, 28}, // ( 20) + { 0xffffff2, 28}, // ( 21) + { 0x3ffffffe, 30}, // ( 22) + { 0xffffff3, 28}, // ( 23) + { 0xffffff4, 28}, // ( 24) + { 0xffffff5, 28}, // ( 25) + { 0xffffff6, 28}, // ( 26) + { 0xffffff7, 28}, // ( 27) + { 0xffffff8, 28}, // ( 28) + { 0xffffff9, 28}, // ( 29) + { 0xffffffa, 28}, // ( 30) + { 0xffffffb, 28}, // ( 31) + { 0x14, 6}, // ' ' ( 32) + { 0x3f8, 10}, // '!' ( 33) + { 0x3f9, 10}, // '"' ( 34) + { 0xffa, 12}, // '#' ( 35) + { 0x1ff9, 13}, // '$' ( 36) + { 0x15, 6}, // '%' ( 37) + { 0xf8, 8}, // '&' ( 38) + { 0x7fa, 11}, // ''' ( 39) + { 0x3fa, 10}, // '(' ( 40) + { 0x3fb, 10}, // ')' ( 41) + { 0xf9, 8}, // '*' ( 42) + { 0x7fb, 11}, // '+' ( 43) + { 0xfa, 8}, // ',' ( 44) + { 0x16, 6}, // '-' ( 45) + { 0x17, 6}, // '.' ( 46) + { 0x18, 6}, // '/' ( 47) + { 0x0, 5}, // '0' ( 48) + { 0x1, 5}, // '1' ( 49) + { 0x2, 5}, // '2' ( 50) + { 0x19, 6}, // '3' ( 51) + { 0x1a, 6}, // '4' ( 52) + { 0x1b, 6}, // '5' ( 53) + { 0x1c, 6}, // '6' ( 54) + { 0x1d, 6}, // '7' ( 55) + { 0x1e, 6}, // '8' ( 56) + { 0x1f, 6}, // '9' ( 57) + { 0x5c, 7}, // ':' ( 58) + { 0xfb, 8}, // ';' ( 59) + { 0x7ffc, 15}, // '<' ( 60) + { 0x20, 6}, // '=' ( 61) + { 0xffb, 12}, // '>' ( 62) + { 0x3fc, 10}, // '?' ( 63) + { 0x1ffa, 13}, // '@' ( 64) + { 0x21, 6}, // 'A' ( 65) + { 0x5d, 7}, // 'B' ( 66) + { 0x5e, 7}, // 'C' ( 67) + { 0x5f, 7}, // 'D' ( 68) + { 0x60, 7}, // 'E' ( 69) + { 0x61, 7}, // 'F' ( 70) + { 0x62, 7}, // 'G' ( 71) + { 0x63, 7}, // 'H' ( 72) + { 0x64, 7}, // 'I' ( 73) + { 0x65, 7}, // 'J' ( 74) + { 0x66, 7}, // 'K' ( 75) + { 0x67, 7}, // 'L' ( 76) + { 0x68, 7}, // 'M' ( 77) + { 0x69, 7}, // 'N' ( 78) + { 0x6a, 7}, // 'O' ( 79) + { 0x6b, 7}, // 'P' ( 80) + { 0x6c, 7}, // 'Q' ( 81) + { 0x6d, 7}, // 'R' ( 82) + { 0x6e, 7}, // 'S' ( 83) + { 0x6f, 7}, // 'T' ( 84) + { 0x70, 7}, // 'U' ( 85) + { 0x71, 7}, // 'V' ( 86) + { 0x72, 7}, // 'W' ( 87) + { 0xfc, 8}, // 'X' ( 88) + { 0x73, 7}, // 'Y' ( 89) + { 0xfd, 8}, // 'Z' ( 90) + { 0x1ffb, 13}, // '[' ( 91) + { 0x7fff0, 19}, // '\' ( 92) + { 0x1ffc, 13}, // ']' ( 93) + { 0x3ffc, 14}, // '^' ( 94) + { 0x22, 6}, // '_' ( 95) + { 0x7ffd, 15}, // '`' ( 96) + { 0x3, 5}, // 'a' ( 97) + { 0x23, 6}, // 'b' ( 98) + { 0x4, 5}, // 'c' ( 99) + { 0x24, 6}, // 'd' (100) + { 0x5, 5}, // 'e' (101) + { 0x25, 6}, // 'f' (102) + { 0x26, 6}, // 'g' (103) + { 0x27, 6}, // 'h' (104) + { 0x6, 5}, // 'i' (105) + { 0x74, 7}, // 'j' (106) + { 0x75, 7}, // 'k' (107) + { 0x28, 6}, // 'l' (108) + { 0x29, 6}, // 'm' (109) + { 0x2a, 6}, // 'n' (110) + { 0x7, 5}, // 'o' (111) + { 0x2b, 6}, // 'p' (112) + { 0x76, 7}, // 'q' (113) + { 0x2c, 6}, // 'r' (114) + { 0x8, 5}, // 's' (115) + { 0x9, 5}, // 't' (116) + { 0x2d, 6}, // 'u' (117) + { 0x77, 7}, // 'v' (118) + { 0x78, 7}, // 'w' (119) + { 0x79, 7}, // 'x' (120) + { 0x7a, 7}, // 'y' (121) + { 0x7b, 7}, // 'z' (122) + { 0x7ffe, 15}, // '{' (123) + { 0x7fc, 11}, // '|' (124) + { 0x3ffd, 14}, // '}' (125) + { 0x1ffd, 13}, // '~' (126) + { 0xffffffc, 28}, // (127) + { 0xfffe6, 20}, // (128) + { 0x3fffd2, 22}, // (129) + { 0xfffe7, 20}, // (130) + { 0xfffe8, 20}, // (131) + { 0x3fffd3, 22}, // (132) + { 0x3fffd4, 22}, // (133) + { 0x3fffd5, 22}, // (134) + { 0x7fffd9, 23}, // (135) + { 0x3fffd6, 22}, // (136) + { 0x7fffda, 23}, // (137) + { 0x7fffdb, 23}, // (138) + { 0x7fffdc, 23}, // (139) + { 0x7fffdd, 23}, // (140) + { 0x7fffde, 23}, // (141) + { 0xffffeb, 24}, // (142) + { 0x7fffdf, 23}, // (143) + { 0xffffec, 24}, // (144) + { 0xffffed, 24}, // (145) + { 0x3fffd7, 22}, // (146) + { 0x7fffe0, 23}, // (147) + { 0xffffee, 24}, // (148) + { 0x7fffe1, 23}, // (149) + { 0x7fffe2, 23}, // (150) + { 0x7fffe3, 23}, // (151) + { 0x7fffe4, 23}, // (152) + { 0x1fffdc, 21}, // (153) + { 0x3fffd8, 22}, // (154) + { 0x7fffe5, 23}, // (155) + { 0x3fffd9, 22}, // (156) + { 0x7fffe6, 23}, // (157) + { 0x7fffe7, 23}, // (158) + { 0xffffef, 24}, // (159) + { 0x3fffda, 22}, // (160) + { 0x1fffdd, 21}, // (161) + { 0xfffe9, 20}, // (162) + { 0x3fffdb, 22}, // (163) + { 0x3fffdc, 22}, // (164) + { 0x7fffe8, 23}, // (165) + { 0x7fffe9, 23}, // (166) + { 0x1fffde, 21}, // (167) + { 0x7fffea, 23}, // (168) + { 0x3fffdd, 22}, // (169) + { 0x3fffde, 22}, // (170) + { 0xfffff0, 24}, // (171) + { 0x1fffdf, 21}, // (172) + { 0x3fffdf, 22}, // (173) + { 0x7fffeb, 23}, // (174) + { 0x7fffec, 23}, // (175) + { 0x1fffe0, 21}, // (176) + { 0x1fffe1, 21}, // (177) + { 0x3fffe0, 22}, // (178) + { 0x1fffe2, 21}, // (179) + { 0x7fffed, 23}, // (180) + { 0x3fffe1, 22}, // (181) + { 0x7fffee, 23}, // (182) + { 0x7fffef, 23}, // (183) + { 0xfffea, 20}, // (184) + { 0x3fffe2, 22}, // (185) + { 0x3fffe3, 22}, // (186) + { 0x3fffe4, 22}, // (187) + { 0x7ffff0, 23}, // (188) + { 0x3fffe5, 22}, // (189) + { 0x3fffe6, 22}, // (190) + { 0x7ffff1, 23}, // (191) + { 0x3ffffe0, 26}, // (192) + { 0x3ffffe1, 26}, // (193) + { 0xfffeb, 20}, // (194) + { 0x7fff1, 19}, // (195) + { 0x3fffe7, 22}, // (196) + { 0x7ffff2, 23}, // (197) + { 0x3fffe8, 22}, // (198) + { 0x1ffffec, 25}, // (199) + { 0x3ffffe2, 26}, // (200) + { 0x3ffffe3, 26}, // (201) + { 0x3ffffe4, 26}, // (202) + { 0x7ffffde, 27}, // (203) + { 0x7ffffdf, 27}, // (204) + { 0x3ffffe5, 26}, // (205) + { 0xfffff1, 24}, // (206) + { 0x1ffffed, 25}, // (207) + { 0x7fff2, 19}, // (208) + { 0x1fffe3, 21}, // (209) + { 0x3ffffe6, 26}, // (210) + { 0x7ffffe0, 27}, // (211) + { 0x7ffffe1, 27}, // (212) + { 0x3ffffe7, 26}, // (213) + { 0x7ffffe2, 27}, // (214) + { 0xfffff2, 24}, // (215) + { 0x1fffe4, 21}, // (216) + { 0x1fffe5, 21}, // (217) + { 0x3ffffe8, 26}, // (218) + { 0x3ffffe9, 26}, // (219) + { 0xffffffd, 28}, // (220) + { 0x7ffffe3, 27}, // (221) + { 0x7ffffe4, 27}, // (222) + { 0x7ffffe5, 27}, // (223) + { 0xfffec, 20}, // (224) + { 0xfffff3, 24}, // (225) + { 0xfffed, 20}, // (226) + { 0x1fffe6, 21}, // (227) + { 0x3fffe9, 22}, // (228) + { 0x1fffe7, 21}, // (229) + { 0x1fffe8, 21}, // (230) + { 0x7ffff3, 23}, // (231) + { 0x3fffea, 22}, // (232) + { 0x3fffeb, 22}, // (233) + { 0x1ffffee, 25}, // (234) + { 0x1ffffef, 25}, // (235) + { 0xfffff4, 24}, // (236) + { 0xfffff5, 24}, // (237) + { 0x3ffffea, 26}, // (238) + { 0x7ffff4, 23}, // (239) + { 0x3ffffeb, 26}, // (240) + { 0x7ffffe6, 27}, // (241) + { 0x3ffffec, 26}, // (242) + { 0x3ffffed, 26}, // (243) + { 0x7ffffe7, 27}, // (244) + { 0x7ffffe8, 27}, // (245) + { 0x7ffffe9, 27}, // (246) + { 0x7ffffea, 27}, // (247) + { 0x7ffffeb, 27}, // (248) + { 0xffffffe, 28}, // (249) + { 0x7ffffec, 27}, // (250) + { 0x7ffffed, 27}, // (251) + { 0x7ffffee, 27}, // (252) + { 0x7ffffef, 27}, // (253) + { 0x7fffff0, 27}, // (254) + { 0x3ffffee, 26}, // (255) + { 0x3fffffff, 30} // EOS (256) +}; + + +static void +generate_entry (uint16_t idx) +{ + uint8_t i, j; + + j = idx >> 8; + i = idx; + + if (encode_table[i].bits + encode_table[j].bits <= 32) + printf(" [I(%hhu,%hhu)] = {%u,0x%X},\n", + i, j, + encode_table[i].bits + encode_table[j].bits, + (encode_table[i].code << encode_table[j].bits) + | encode_table[j].code); + else + printf(" [I(%hhu,%hhu)] = {64,0},\n", i, j); +} + + +int +main (void) +{ + unsigned idx; + + printf( + "#if __BYTE_ORDER == __LITTLE_ENDIAN\n" + "#define I(i,j) ((j<<8)|i)\n" + "#else\n" + "#define I(i,j) ((i<<8)|j)\n" + "#endif\n" + ); + printf("static const struct henc { unsigned lens; uint32_t code; } " + "hencs[] =\n{\n"); + for (idx = 0; idx <= UINT16_MAX; ++idx) + generate_entry(idx); + printf("};\n"); + printf("#undef I\n"); + + return 0; +} diff --git a/external/lsquic/src/lshpack/bin/huff-decode.c b/external/lsquic/src/lshpack/bin/huff-decode.c new file mode 100644 index 0000000..a9414dd --- /dev/null +++ b/external/lsquic/src/lshpack/bin/huff-decode.c @@ -0,0 +1,99 @@ +/* Decode Huffman string -- use for benchmarking + * + * Usage: huff-decode $file $count $mode + * + * $mode is either "fast" or "slow" + */ + +#include +#include +#include + +#ifndef LS_HPACK_USE_LARGE_TABLES +#define LS_HPACK_USE_LARGE_TABLES 1 +#endif + +#if LS_HPACK_USE_LARGE_TABLES +int +lshpack_dec_huff_decode_full (const unsigned char *src, int src_len, + unsigned char *dst, int dst_len); +#endif + +int +lshpack_dec_huff_decode (const unsigned char *src, int src_len, + unsigned char *dst, int dst_len); + +int +main (int argc, char **argv) +{ + size_t in_sz; + int count, i, rv; + FILE *in; + int (*decode)(const unsigned char *, int, unsigned char *, int); + unsigned char in_buf[0x1000]; + unsigned char out_buf[0x4000]; + + if (argc != 4) + { + fprintf(stderr, "Usage: %s $file $count $mode\n", argv[0]); + exit(EXIT_FAILURE); + } + + if (strcasecmp(argv[3], "slow") == 0) +#if LS_HPACK_USE_LARGE_TABLES + decode = lshpack_dec_huff_decode_full; +#else + decode = lshpack_dec_huff_decode; +#endif + else if (strcasecmp(argv[3], "fast") == 0) +#if LS_HPACK_USE_LARGE_TABLES + decode = lshpack_dec_huff_decode; +#else + { + fprintf(stderr, "support for fast decoder is compiled out\n"); + exit(EXIT_FAILURE); + } +#endif + else + { + fprintf(stderr, "Mode `%s' is invalid. Specify either `slow' or " + "`fast'.\n", argv[3]); + exit(EXIT_FAILURE); + } + + in = fopen(argv[1], "rb"); + if (!in) + { + perror("fopen"); + exit(EXIT_FAILURE); + } + + in_sz = fread(in_buf, 1, sizeof(in_buf), in); + if (in_sz == 0 || in_sz == sizeof(in_buf)) + { + fprintf(stderr, "input file is either too short or too long\n"); + exit(EXIT_FAILURE); + } + (void) fclose(in); + + count = atoi(argv[2]); + if (!count) + count = 1; + + /* TODO: validate against slow if fast is selected */ + + rv = decode(in_buf, in_sz, out_buf, sizeof(out_buf)); + if (rv < 0) + { + fprintf(stderr, "decode-%s returned %d\n", argv[3], rv); + exit(EXIT_FAILURE); + } + + for (i = 0; i < count; ++i) + { + rv = decode(in_buf, in_sz, out_buf, sizeof(out_buf)); + (void) rv; + } + + exit(EXIT_SUCCESS); +} diff --git a/external/lsquic/src/lshpack/bin/huff-encode.c b/external/lsquic/src/lshpack/bin/huff-encode.c new file mode 100644 index 0000000..d96d62e --- /dev/null +++ b/external/lsquic/src/lshpack/bin/huff-encode.c @@ -0,0 +1,30 @@ +/* huff-encode -- Huffman-encode string */ + +#include +#include +#include + +int +lshpack_enc_huff_encode (const unsigned char *src, + const unsigned char *const src_end, unsigned char *const dst, int dst_len); + +int +main (int argc, char **argv) +{ + unsigned char buf[0x1000]; + size_t len; + int sz; + + if (argc != 2) + { + fprintf(stderr, "Usage: %s string > output\n", argv[0]); + exit(EXIT_FAILURE); + } + + len = strlen(argv[1]); + sz = lshpack_enc_huff_encode((unsigned char *) argv[1], + (unsigned char *) argv[1] + len, buf, sizeof(buf)); + fwrite(buf, 1, sz, stdout); + + exit(EXIT_SUCCESS); +} diff --git a/external/lsquic/src/lshpack/compat/queue/sys/queue.h b/external/lsquic/src/lshpack/compat/queue/sys/queue.h new file mode 100644 index 0000000..7cdff45 --- /dev/null +++ b/external/lsquic/src/lshpack/compat/queue/sys/queue.h @@ -0,0 +1,859 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright (c) 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)queue.h 8.5 (Berkeley) 8/20/94 + * $FreeBSD$ + */ + +#ifndef _SYS_QUEUE_H_ +#define _SYS_QUEUE_H_ + + +/* + * This file defines four types of data structures: singly-linked lists, + * singly-linked tail queues, lists and tail queues. + * + * A singly-linked list is headed by a single forward pointer. The elements + * are singly linked for minimum space and pointer manipulation overhead at + * the expense of O(n) removal for arbitrary elements. New elements can be + * added to the list after an existing element or at the head of the list. + * Elements being removed from the head of the list should use the explicit + * macro for this purpose for optimum efficiency. A singly-linked list may + * only be traversed in the forward direction. Singly-linked lists are ideal + * for applications with large datasets and few or no removals or for + * implementing a LIFO queue. + * + * A singly-linked tail queue is headed by a pair of pointers, one to the + * head of the list and the other to the tail of the list. The elements are + * singly linked for minimum space and pointer manipulation overhead at the + * expense of O(n) removal for arbitrary elements. New elements can be added + * to the list after an existing element, at the head of the list, or at the + * end of the list. Elements being removed from the head of the tail queue + * should use the explicit macro for this purpose for optimum efficiency. + * A singly-linked tail queue may only be traversed in the forward direction. + * Singly-linked tail queues are ideal for applications with large datasets + * and few or no removals or for implementing a FIFO queue. + * + * A list is headed by a single forward pointer (or an array of forward + * pointers for a hash table header). The elements are doubly linked + * so that an arbitrary element can be removed without a need to + * traverse the list. New elements can be added to the list before + * or after an existing element or at the head of the list. A list + * may be traversed in either direction. + * + * A tail queue is headed by a pair of pointers, one to the head of the + * list and the other to the tail of the list. The elements are doubly + * linked so that an arbitrary element can be removed without a need to + * traverse the list. New elements can be added to the list before or + * after an existing element, at the head of the list, or at the end of + * the list. A tail queue may be traversed in either direction. + * + * For details on the use of these macros, see the queue(3) manual page. + * + * Below is a summary of implemented functions where: + * + means the macro is available + * - means the macro is not available + * s means the macro is available but is slow (runs in O(n) time) + * + * SLIST LIST STAILQ TAILQ + * _HEAD + + + + + * _CLASS_HEAD + + + + + * _HEAD_INITIALIZER + + + + + * _ENTRY + + + + + * _CLASS_ENTRY + + + + + * _INIT + + + + + * _EMPTY + + + + + * _FIRST + + + + + * _NEXT + + + + + * _PREV - + - + + * _LAST - - + + + * _FOREACH + + + + + * _FOREACH_FROM + + + + + * _FOREACH_SAFE + + + + + * _FOREACH_FROM_SAFE + + + + + * _FOREACH_REVERSE - - - + + * _FOREACH_REVERSE_FROM - - - + + * _FOREACH_REVERSE_SAFE - - - + + * _FOREACH_REVERSE_FROM_SAFE - - - + + * _INSERT_HEAD + + + + + * _INSERT_BEFORE - + - + + * _INSERT_AFTER + + + + + * _INSERT_TAIL - - + + + * _CONCAT s s + + + * _REMOVE_AFTER + - + - + * _REMOVE_HEAD + - + - + * _REMOVE s + s + + * _SWAP + + + + + * + */ +#ifdef QUEUE_MACRO_DEBUG +#warn Use QUEUE_MACRO_DEBUG_TRACE and/or QUEUE_MACRO_DEBUG_TRASH +#define QUEUE_MACRO_DEBUG_TRACE +#define QUEUE_MACRO_DEBUG_TRASH +#endif + +#ifdef QUEUE_MACRO_DEBUG_TRACE +/* Store the last 2 places the queue element or head was altered */ +struct qm_trace { + unsigned long lastline; + unsigned long prevline; + const char *lastfile; + const char *prevfile; +}; + +#define TRACEBUF struct qm_trace trace; +#define TRACEBUF_INITIALIZER { __LINE__, 0, __FILE__, NULL } , + +#define QMD_TRACE_HEAD(head) do { \ + (head)->trace.prevline = (head)->trace.lastline; \ + (head)->trace.prevfile = (head)->trace.lastfile; \ + (head)->trace.lastline = __LINE__; \ + (head)->trace.lastfile = __FILE__; \ +} while (0) + +#define QMD_TRACE_ELEM(elem) do { \ + (elem)->trace.prevline = (elem)->trace.lastline; \ + (elem)->trace.prevfile = (elem)->trace.lastfile; \ + (elem)->trace.lastline = __LINE__; \ + (elem)->trace.lastfile = __FILE__; \ +} while (0) + +#else /* !QUEUE_MACRO_DEBUG_TRACE */ +#define QMD_TRACE_ELEM(elem) +#define QMD_TRACE_HEAD(head) +#define TRACEBUF +#define TRACEBUF_INITIALIZER +#endif /* QUEUE_MACRO_DEBUG_TRACE */ + +#ifdef QUEUE_MACRO_DEBUG_TRASH +#define TRASHIT(x) do {(x) = (void *)-1;} while (0) +#define QMD_IS_TRASHED(x) ((x) == (void *)(intptr_t)-1) +#else /* !QUEUE_MACRO_DEBUG_TRASH */ +#define TRASHIT(x) +#define QMD_IS_TRASHED(x) 0 +#endif /* QUEUE_MACRO_DEBUG_TRASH */ + +#if defined(QUEUE_MACRO_DEBUG_TRACE) || defined(QUEUE_MACRO_DEBUG_TRASH) +#define QMD_SAVELINK(name, link) void **name = (void *)&(link) +#else /* !QUEUE_MACRO_DEBUG_TRACE && !QUEUE_MACRO_DEBUG_TRASH */ +#define QMD_SAVELINK(name, link) +#endif /* QUEUE_MACRO_DEBUG_TRACE || QUEUE_MACRO_DEBUG_TRASH */ + +#ifdef __cplusplus +/* + * In C++ there can be structure lists and class lists: + */ +#define QUEUE_TYPEOF(type) type +#else +#define QUEUE_TYPEOF(type) struct type +#endif + +/* + * Singly-linked List declarations. + */ +#define SLIST_HEAD(name, type) \ +struct name { \ + struct type *slh_first; /* first element */ \ +} + +#define SLIST_CLASS_HEAD(name, type) \ +struct name { \ + class type *slh_first; /* first element */ \ +} + +#define SLIST_HEAD_INITIALIZER(head) \ + { NULL } + +#define SLIST_ENTRY(type) \ +struct { \ + struct type *sle_next; /* next element */ \ +} + +#define SLIST_CLASS_ENTRY(type) \ +struct { \ + class type *sle_next; /* next element */ \ +} + +/* + * Singly-linked List functions. + */ +#if (defined(_KERNEL) && defined(INVARIANTS)) +#define QMD_SLIST_CHECK_PREVPTR(prevp, elm) do { \ + if (*(prevp) != (elm)) \ + panic("Bad prevptr *(%p) == %p != %p", \ + (prevp), *(prevp), (elm)); \ +} while (0) +#else +#define QMD_SLIST_CHECK_PREVPTR(prevp, elm) +#endif + +#define SLIST_CONCAT(head1, head2, type, field) do { \ + QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head1); \ + if (curelm == NULL) { \ + if ((SLIST_FIRST(head1) = SLIST_FIRST(head2)) != NULL) \ + SLIST_INIT(head2); \ + } else if (SLIST_FIRST(head2) != NULL) { \ + while (SLIST_NEXT(curelm, field) != NULL) \ + curelm = SLIST_NEXT(curelm, field); \ + SLIST_NEXT(curelm, field) = SLIST_FIRST(head2); \ + SLIST_INIT(head2); \ + } \ +} while (0) + +#define SLIST_EMPTY(head) ((head)->slh_first == NULL) + +#define SLIST_FIRST(head) ((head)->slh_first) + +#define SLIST_FOREACH(var, head, field) \ + for ((var) = SLIST_FIRST((head)); \ + (var); \ + (var) = SLIST_NEXT((var), field)) + +#define SLIST_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ + (var); \ + (var) = SLIST_NEXT((var), field)) + +#define SLIST_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = SLIST_FIRST((head)); \ + (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define SLIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ + (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \ + for ((varp) = &SLIST_FIRST((head)); \ + ((var) = *(varp)) != NULL; \ + (varp) = &SLIST_NEXT((var), field)) + +#define SLIST_INIT(head) do { \ + SLIST_FIRST((head)) = NULL; \ +} while (0) + +#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ + SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \ + SLIST_NEXT((slistelm), field) = (elm); \ +} while (0) + +#define SLIST_INSERT_HEAD(head, elm, field) do { \ + SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \ + SLIST_FIRST((head)) = (elm); \ +} while (0) + +#define SLIST_NEXT(elm, field) ((elm)->field.sle_next) + +#define SLIST_REMOVE(head, elm, type, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.sle_next); \ + if (SLIST_FIRST((head)) == (elm)) { \ + SLIST_REMOVE_HEAD((head), field); \ + } \ + else { \ + QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head); \ + while (SLIST_NEXT(curelm, field) != (elm)) \ + curelm = SLIST_NEXT(curelm, field); \ + SLIST_REMOVE_AFTER(curelm, field); \ + } \ + TRASHIT(*oldnext); \ +} while (0) + +#define SLIST_REMOVE_AFTER(elm, field) do { \ + SLIST_NEXT(elm, field) = \ + SLIST_NEXT(SLIST_NEXT(elm, field), field); \ +} while (0) + +#define SLIST_REMOVE_HEAD(head, field) do { \ + SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \ +} while (0) + +#define SLIST_REMOVE_PREVPTR(prevp, elm, field) do { \ + QMD_SLIST_CHECK_PREVPTR(prevp, elm); \ + *(prevp) = SLIST_NEXT(elm, field); \ + TRASHIT((elm)->field.sle_next); \ +} while (0) + +#define SLIST_SWAP(head1, head2, type) do { \ + QUEUE_TYPEOF(type) *swap_first = SLIST_FIRST(head1); \ + SLIST_FIRST(head1) = SLIST_FIRST(head2); \ + SLIST_FIRST(head2) = swap_first; \ +} while (0) + +/* + * Singly-linked Tail queue declarations. + */ +#define STAILQ_HEAD(name, type) \ +struct name { \ + struct type *stqh_first;/* first element */ \ + struct type **stqh_last;/* addr of last next element */ \ +} + +#define STAILQ_CLASS_HEAD(name, type) \ +struct name { \ + class type *stqh_first; /* first element */ \ + class type **stqh_last; /* addr of last next element */ \ +} + +#define STAILQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).stqh_first } + +#define STAILQ_ENTRY(type) \ +struct { \ + struct type *stqe_next; /* next element */ \ +} + +#define STAILQ_CLASS_ENTRY(type) \ +struct { \ + class type *stqe_next; /* next element */ \ +} + +/* + * Singly-linked Tail queue functions. + */ +#define STAILQ_CONCAT(head1, head2) do { \ + if (!STAILQ_EMPTY((head2))) { \ + *(head1)->stqh_last = (head2)->stqh_first; \ + (head1)->stqh_last = (head2)->stqh_last; \ + STAILQ_INIT((head2)); \ + } \ +} while (0) + +#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL) + +#define STAILQ_FIRST(head) ((head)->stqh_first) + +#define STAILQ_FOREACH(var, head, field) \ + for((var) = STAILQ_FIRST((head)); \ + (var); \ + (var) = STAILQ_NEXT((var), field)) + +#define STAILQ_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ + (var); \ + (var) = STAILQ_NEXT((var), field)) + +#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = STAILQ_FIRST((head)); \ + (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define STAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ + (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define STAILQ_INIT(head) do { \ + STAILQ_FIRST((head)) = NULL; \ + (head)->stqh_last = &STAILQ_FIRST((head)); \ +} while (0) + +#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \ + if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ + STAILQ_NEXT((tqelm), field) = (elm); \ +} while (0) + +#define STAILQ_INSERT_HEAD(head, elm, field) do { \ + if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ + STAILQ_FIRST((head)) = (elm); \ +} while (0) + +#define STAILQ_INSERT_TAIL(head, elm, field) do { \ + STAILQ_NEXT((elm), field) = NULL; \ + *(head)->stqh_last = (elm); \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ +} while (0) + +#define STAILQ_LAST(head, type, field) \ + (STAILQ_EMPTY((head)) ? NULL : \ + __containerof((head)->stqh_last, \ + QUEUE_TYPEOF(type), field.stqe_next)) + +#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next) + +#define STAILQ_REMOVE(head, elm, type, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.stqe_next); \ + if (STAILQ_FIRST((head)) == (elm)) { \ + STAILQ_REMOVE_HEAD((head), field); \ + } \ + else { \ + QUEUE_TYPEOF(type) *curelm = STAILQ_FIRST(head); \ + while (STAILQ_NEXT(curelm, field) != (elm)) \ + curelm = STAILQ_NEXT(curelm, field); \ + STAILQ_REMOVE_AFTER(head, curelm, field); \ + } \ + TRASHIT(*oldnext); \ +} while (0) + +#define STAILQ_REMOVE_AFTER(head, elm, field) do { \ + if ((STAILQ_NEXT(elm, field) = \ + STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ +} while (0) + +#define STAILQ_REMOVE_HEAD(head, field) do { \ + if ((STAILQ_FIRST((head)) = \ + STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \ + (head)->stqh_last = &STAILQ_FIRST((head)); \ +} while (0) + +#define STAILQ_SWAP(head1, head2, type) do { \ + QUEUE_TYPEOF(type) *swap_first = STAILQ_FIRST(head1); \ + QUEUE_TYPEOF(type) **swap_last = (head1)->stqh_last; \ + STAILQ_FIRST(head1) = STAILQ_FIRST(head2); \ + (head1)->stqh_last = (head2)->stqh_last; \ + STAILQ_FIRST(head2) = swap_first; \ + (head2)->stqh_last = swap_last; \ + if (STAILQ_EMPTY(head1)) \ + (head1)->stqh_last = &STAILQ_FIRST(head1); \ + if (STAILQ_EMPTY(head2)) \ + (head2)->stqh_last = &STAILQ_FIRST(head2); \ +} while (0) + + +/* + * List declarations. + */ +#define LIST_HEAD(name, type) \ +struct name { \ + struct type *lh_first; /* first element */ \ +} + +#define LIST_CLASS_HEAD(name, type) \ +struct name { \ + class type *lh_first; /* first element */ \ +} + +#define LIST_HEAD_INITIALIZER(head) \ + { NULL } + +#define LIST_ENTRY(type) \ +struct { \ + struct type *le_next; /* next element */ \ + struct type **le_prev; /* address of previous next element */ \ +} + +#define LIST_CLASS_ENTRY(type) \ +struct { \ + class type *le_next; /* next element */ \ + class type **le_prev; /* address of previous next element */ \ +} + +/* + * List functions. + */ + +#if (defined(_KERNEL) && defined(INVARIANTS)) +/* + * QMD_LIST_CHECK_HEAD(LIST_HEAD *head, LIST_ENTRY NAME) + * + * If the list is non-empty, validates that the first element of the list + * points back at 'head.' + */ +#define QMD_LIST_CHECK_HEAD(head, field) do { \ + if (LIST_FIRST((head)) != NULL && \ + LIST_FIRST((head))->field.le_prev != \ + &LIST_FIRST((head))) \ + panic("Bad list head %p first->prev != head", (head)); \ +} while (0) + +/* + * QMD_LIST_CHECK_NEXT(TYPE *elm, LIST_ENTRY NAME) + * + * If an element follows 'elm' in the list, validates that the next element + * points back at 'elm.' + */ +#define QMD_LIST_CHECK_NEXT(elm, field) do { \ + if (LIST_NEXT((elm), field) != NULL && \ + LIST_NEXT((elm), field)->field.le_prev != \ + &((elm)->field.le_next)) \ + panic("Bad link elm %p next->prev != elm", (elm)); \ +} while (0) + +/* + * QMD_LIST_CHECK_PREV(TYPE *elm, LIST_ENTRY NAME) + * + * Validates that the previous element (or head of the list) points to 'elm.' + */ +#define QMD_LIST_CHECK_PREV(elm, field) do { \ + if (*(elm)->field.le_prev != (elm)) \ + panic("Bad link elm %p prev->next != elm", (elm)); \ +} while (0) +#else +#define QMD_LIST_CHECK_HEAD(head, field) +#define QMD_LIST_CHECK_NEXT(elm, field) +#define QMD_LIST_CHECK_PREV(elm, field) +#endif /* (_KERNEL && INVARIANTS) */ + +#define LIST_CONCAT(head1, head2, type, field) do { \ + QUEUE_TYPEOF(type) *curelm = LIST_FIRST(head1); \ + if (curelm == NULL) { \ + if ((LIST_FIRST(head1) = LIST_FIRST(head2)) != NULL) { \ + LIST_FIRST(head2)->field.le_prev = \ + &LIST_FIRST((head1)); \ + LIST_INIT(head2); \ + } \ + } else if (LIST_FIRST(head2) != NULL) { \ + while (LIST_NEXT(curelm, field) != NULL) \ + curelm = LIST_NEXT(curelm, field); \ + LIST_NEXT(curelm, field) = LIST_FIRST(head2); \ + LIST_FIRST(head2)->field.le_prev = &LIST_NEXT(curelm, field); \ + LIST_INIT(head2); \ + } \ +} while (0) + +#define LIST_EMPTY(head) ((head)->lh_first == NULL) + +#define LIST_FIRST(head) ((head)->lh_first) + +#define LIST_FOREACH(var, head, field) \ + for ((var) = LIST_FIRST((head)); \ + (var); \ + (var) = LIST_NEXT((var), field)) + +#define LIST_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ + (var); \ + (var) = LIST_NEXT((var), field)) + +#define LIST_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = LIST_FIRST((head)); \ + (var) && ((tvar) = LIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define LIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ + (var) && ((tvar) = LIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define LIST_INIT(head) do { \ + LIST_FIRST((head)) = NULL; \ +} while (0) + +#define LIST_INSERT_AFTER(listelm, elm, field) do { \ + QMD_LIST_CHECK_NEXT(listelm, field); \ + if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\ + LIST_NEXT((listelm), field)->field.le_prev = \ + &LIST_NEXT((elm), field); \ + LIST_NEXT((listelm), field) = (elm); \ + (elm)->field.le_prev = &LIST_NEXT((listelm), field); \ +} while (0) + +#define LIST_INSERT_BEFORE(listelm, elm, field) do { \ + QMD_LIST_CHECK_PREV(listelm, field); \ + (elm)->field.le_prev = (listelm)->field.le_prev; \ + LIST_NEXT((elm), field) = (listelm); \ + *(listelm)->field.le_prev = (elm); \ + (listelm)->field.le_prev = &LIST_NEXT((elm), field); \ +} while (0) + +#define LIST_INSERT_HEAD(head, elm, field) do { \ + QMD_LIST_CHECK_HEAD((head), field); \ + if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \ + LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\ + LIST_FIRST((head)) = (elm); \ + (elm)->field.le_prev = &LIST_FIRST((head)); \ +} while (0) + +#define LIST_NEXT(elm, field) ((elm)->field.le_next) + +#define LIST_PREV(elm, head, type, field) \ + ((elm)->field.le_prev == &LIST_FIRST((head)) ? NULL : \ + __containerof((elm)->field.le_prev, \ + QUEUE_TYPEOF(type), field.le_next)) + +#define LIST_REMOVE(elm, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.le_next); \ + QMD_SAVELINK(oldprev, (elm)->field.le_prev); \ + QMD_LIST_CHECK_NEXT(elm, field); \ + QMD_LIST_CHECK_PREV(elm, field); \ + if (LIST_NEXT((elm), field) != NULL) \ + LIST_NEXT((elm), field)->field.le_prev = \ + (elm)->field.le_prev; \ + *(elm)->field.le_prev = LIST_NEXT((elm), field); \ + TRASHIT(*oldnext); \ + TRASHIT(*oldprev); \ +} while (0) + +#define LIST_SWAP(head1, head2, type, field) do { \ + QUEUE_TYPEOF(type) *swap_tmp = LIST_FIRST(head1); \ + LIST_FIRST((head1)) = LIST_FIRST((head2)); \ + LIST_FIRST((head2)) = swap_tmp; \ + if ((swap_tmp = LIST_FIRST((head1))) != NULL) \ + swap_tmp->field.le_prev = &LIST_FIRST((head1)); \ + if ((swap_tmp = LIST_FIRST((head2))) != NULL) \ + swap_tmp->field.le_prev = &LIST_FIRST((head2)); \ +} while (0) + +/* + * Tail queue declarations. + */ +#define TAILQ_HEAD(name, type) \ +struct name { \ + struct type *tqh_first; /* first element */ \ + struct type **tqh_last; /* addr of last next element */ \ + TRACEBUF \ +} + +#define TAILQ_CLASS_HEAD(name, type) \ +struct name { \ + class type *tqh_first; /* first element */ \ + class type **tqh_last; /* addr of last next element */ \ + TRACEBUF \ +} + +#define TAILQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).tqh_first, TRACEBUF_INITIALIZER } + +#define TAILQ_ENTRY(type) \ +struct { \ + struct type *tqe_next; /* next element */ \ + struct type **tqe_prev; /* address of previous next element */ \ + TRACEBUF \ +} + +#define TAILQ_CLASS_ENTRY(type) \ +struct { \ + class type *tqe_next; /* next element */ \ + class type **tqe_prev; /* address of previous next element */ \ + TRACEBUF \ +} + +/* + * Tail queue functions. + */ +#if (defined(_KERNEL) && defined(INVARIANTS)) +/* + * QMD_TAILQ_CHECK_HEAD(TAILQ_HEAD *head, TAILQ_ENTRY NAME) + * + * If the tailq is non-empty, validates that the first element of the tailq + * points back at 'head.' + */ +#define QMD_TAILQ_CHECK_HEAD(head, field) do { \ + if (!TAILQ_EMPTY(head) && \ + TAILQ_FIRST((head))->field.tqe_prev != \ + &TAILQ_FIRST((head))) \ + panic("Bad tailq head %p first->prev != head", (head)); \ +} while (0) + +/* + * QMD_TAILQ_CHECK_TAIL(TAILQ_HEAD *head, TAILQ_ENTRY NAME) + * + * Validates that the tail of the tailq is a pointer to pointer to NULL. + */ +#define QMD_TAILQ_CHECK_TAIL(head, field) do { \ + if (*(head)->tqh_last != NULL) \ + panic("Bad tailq NEXT(%p->tqh_last) != NULL", (head)); \ +} while (0) + +/* + * QMD_TAILQ_CHECK_NEXT(TYPE *elm, TAILQ_ENTRY NAME) + * + * If an element follows 'elm' in the tailq, validates that the next element + * points back at 'elm.' + */ +#define QMD_TAILQ_CHECK_NEXT(elm, field) do { \ + if (TAILQ_NEXT((elm), field) != NULL && \ + TAILQ_NEXT((elm), field)->field.tqe_prev != \ + &((elm)->field.tqe_next)) \ + panic("Bad link elm %p next->prev != elm", (elm)); \ +} while (0) + +/* + * QMD_TAILQ_CHECK_PREV(TYPE *elm, TAILQ_ENTRY NAME) + * + * Validates that the previous element (or head of the tailq) points to 'elm.' + */ +#define QMD_TAILQ_CHECK_PREV(elm, field) do { \ + if (*(elm)->field.tqe_prev != (elm)) \ + panic("Bad link elm %p prev->next != elm", (elm)); \ +} while (0) +#else +#define QMD_TAILQ_CHECK_HEAD(head, field) +#define QMD_TAILQ_CHECK_TAIL(head, headname) +#define QMD_TAILQ_CHECK_NEXT(elm, field) +#define QMD_TAILQ_CHECK_PREV(elm, field) +#endif /* (_KERNEL && INVARIANTS) */ + +#define TAILQ_CONCAT(head1, head2, field) do { \ + if (!TAILQ_EMPTY(head2)) { \ + *(head1)->tqh_last = (head2)->tqh_first; \ + (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \ + (head1)->tqh_last = (head2)->tqh_last; \ + TAILQ_INIT((head2)); \ + QMD_TRACE_HEAD(head1); \ + QMD_TRACE_HEAD(head2); \ + } \ +} while (0) + +#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL) + +#define TAILQ_FIRST(head) ((head)->tqh_first) + +#define TAILQ_FOREACH(var, head, field) \ + for ((var) = TAILQ_FIRST((head)); \ + (var); \ + (var) = TAILQ_NEXT((var), field)) + +#define TAILQ_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ + (var); \ + (var) = TAILQ_NEXT((var), field)) + +#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = TAILQ_FIRST((head)); \ + (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define TAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ + (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ + for ((var) = TAILQ_LAST((head), headname); \ + (var); \ + (var) = TAILQ_PREV((var), headname, field)) + +#define TAILQ_FOREACH_REVERSE_FROM(var, head, headname, field) \ + for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ + (var); \ + (var) = TAILQ_PREV((var), headname, field)) + +#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \ + for ((var) = TAILQ_LAST((head), headname); \ + (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ + (var) = (tvar)) + +#define TAILQ_FOREACH_REVERSE_FROM_SAFE(var, head, headname, field, tvar) \ + for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ + (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ + (var) = (tvar)) + +#define TAILQ_INIT(head) do { \ + TAILQ_FIRST((head)) = NULL; \ + (head)->tqh_last = &TAILQ_FIRST((head)); \ + QMD_TRACE_HEAD(head); \ +} while (0) + +#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ + QMD_TAILQ_CHECK_NEXT(listelm, field); \ + if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\ + TAILQ_NEXT((elm), field)->field.tqe_prev = \ + &TAILQ_NEXT((elm), field); \ + else { \ + (head)->tqh_last = &TAILQ_NEXT((elm), field); \ + QMD_TRACE_HEAD(head); \ + } \ + TAILQ_NEXT((listelm), field) = (elm); \ + (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \ + QMD_TRACE_ELEM(&(elm)->field); \ + QMD_TRACE_ELEM(&(listelm)->field); \ +} while (0) + +#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ + QMD_TAILQ_CHECK_PREV(listelm, field); \ + (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ + TAILQ_NEXT((elm), field) = (listelm); \ + *(listelm)->field.tqe_prev = (elm); \ + (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \ + QMD_TRACE_ELEM(&(elm)->field); \ + QMD_TRACE_ELEM(&(listelm)->field); \ +} while (0) + +#define TAILQ_INSERT_HEAD(head, elm, field) do { \ + QMD_TAILQ_CHECK_HEAD(head, field); \ + if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \ + TAILQ_FIRST((head))->field.tqe_prev = \ + &TAILQ_NEXT((elm), field); \ + else \ + (head)->tqh_last = &TAILQ_NEXT((elm), field); \ + TAILQ_FIRST((head)) = (elm); \ + (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \ + QMD_TRACE_HEAD(head); \ + QMD_TRACE_ELEM(&(elm)->field); \ +} while (0) + +#define TAILQ_INSERT_TAIL(head, elm, field) do { \ + QMD_TAILQ_CHECK_TAIL(head, field); \ + TAILQ_NEXT((elm), field) = NULL; \ + (elm)->field.tqe_prev = (head)->tqh_last; \ + *(head)->tqh_last = (elm); \ + (head)->tqh_last = &TAILQ_NEXT((elm), field); \ + QMD_TRACE_HEAD(head); \ + QMD_TRACE_ELEM(&(elm)->field); \ +} while (0) + +#define TAILQ_LAST(head, headname) \ + (*(((struct headname *)((head)->tqh_last))->tqh_last)) + +#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) + +#define TAILQ_PREV(elm, headname, field) \ + (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) + +#define TAILQ_REMOVE(head, elm, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.tqe_next); \ + QMD_SAVELINK(oldprev, (elm)->field.tqe_prev); \ + QMD_TAILQ_CHECK_NEXT(elm, field); \ + QMD_TAILQ_CHECK_PREV(elm, field); \ + if ((TAILQ_NEXT((elm), field)) != NULL) \ + TAILQ_NEXT((elm), field)->field.tqe_prev = \ + (elm)->field.tqe_prev; \ + else { \ + (head)->tqh_last = (elm)->field.tqe_prev; \ + QMD_TRACE_HEAD(head); \ + } \ + *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \ + TRASHIT(*oldnext); \ + TRASHIT(*oldprev); \ + QMD_TRACE_ELEM(&(elm)->field); \ +} while (0) + +#define TAILQ_SWAP(head1, head2, type, field) do { \ + QUEUE_TYPEOF(type) *swap_first = (head1)->tqh_first; \ + QUEUE_TYPEOF(type) **swap_last = (head1)->tqh_last; \ + (head1)->tqh_first = (head2)->tqh_first; \ + (head1)->tqh_last = (head2)->tqh_last; \ + (head2)->tqh_first = swap_first; \ + (head2)->tqh_last = swap_last; \ + if ((swap_first = (head1)->tqh_first) != NULL) \ + swap_first->field.tqe_prev = &(head1)->tqh_first; \ + else \ + (head1)->tqh_last = &(head1)->tqh_first; \ + if ((swap_first = (head2)->tqh_first) != NULL) \ + swap_first->field.tqe_prev = &(head2)->tqh_first; \ + else \ + (head2)->tqh_last = &(head2)->tqh_first; \ +} while (0) + +#endif /* !_SYS_QUEUE_H_ */ diff --git a/external/lsquic/src/lshpack/compat/windows/sys/uio.h b/external/lsquic/src/lshpack/compat/windows/sys/uio.h new file mode 100644 index 0000000..308936d --- /dev/null +++ b/external/lsquic/src/lshpack/compat/windows/sys/uio.h @@ -0,0 +1,10 @@ +#ifndef WINCOMPAT_SYS_UIO_H +#define WINCOMPAT_SYS_UIO_H + +struct iovec +{ + void *iov_base; + size_t iov_len; +}; + +#endif diff --git a/external/lsquic/src/lshpack/deps/xxhash/xxhash.c b/external/lsquic/src/lshpack/deps/xxhash/xxhash.c new file mode 100644 index 0000000..3023948 --- /dev/null +++ b/external/lsquic/src/lshpack/deps/xxhash/xxhash.c @@ -0,0 +1,941 @@ +/* +xxHash - Fast Hash algorithm +Copyright (C) 2012-2014, Yann Collet. +BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +You can contact the author at : +- xxHash source repository : http://code.google.com/p/xxhash/ +- public discussion board : https://groups.google.com/forum/#!forum/lz4c +*/ + + +//************************************** +// Tuning parameters +//************************************** +// Unaligned memory access is automatically enabled for "common" CPU, such as x86. +// For others CPU, the compiler will be more cautious, and insert extra code to ensure aligned access is respected. +// If you know your target CPU supports unaligned memory access, you want to force this option manually to improve performance. +// You can also enable this parameter if you know your input data will always be aligned (boundaries of 4, for U32). +#if defined(__ARM_FEATURE_UNALIGNED) || defined(__i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64) +# define XXH_USE_UNALIGNED_ACCESS 1 +#endif + +// XXH_ACCEPT_NULL_INPUT_POINTER : +// If the input pointer is a null pointer, xxHash default behavior is to trigger a memory access error, since it is a bad pointer. +// When this option is enabled, xxHash output for null input pointers will be the same as a null-length input. +// This option has a very small performance cost (only measurable on small inputs). +// By default, this option is disabled. To enable it, uncomment below define : +// #define XXH_ACCEPT_NULL_INPUT_POINTER 1 + +// XXH_FORCE_NATIVE_FORMAT : +// By default, xxHash library provides endian-independant Hash values, based on little-endian convention. +// Results are therefore identical for little-endian and big-endian CPU. +// This comes at a performance cost for big-endian CPU, since some swapping is required to emulate little-endian format. +// Should endian-independance be of no importance for your application, you may set the #define below to 1. +// It will improve speed for Big-endian CPU. +// This option has no impact on Little_Endian CPU. +#define XXH_FORCE_NATIVE_FORMAT 0 + +//************************************** +// Compiler Specific Options +//************************************** +// Disable some Visual warning messages +#ifdef _MSC_VER // Visual Studio +# pragma warning(disable : 4127) // disable: C4127: conditional expression is constant +#endif + +#ifdef _MSC_VER // Visual Studio +# define FORCE_INLINE static __forceinline +#else +# ifdef __GNUC__ +# define FORCE_INLINE static inline __attribute__((always_inline)) +# else +# define FORCE_INLINE static inline +# endif +#endif + +//************************************** +// Includes & Memory related functions +//************************************** +#include "xxhash.h" +// Modify the local functions below should you wish to use some other memory routines +// for malloc(), free() +#include +static void *XXH_malloc(size_t s) { return malloc(s); } +static void XXH_free(void *p) { free(p); } +// for memcpy() +#include +static void *XXH_memcpy(void *dest, const void *src, size_t size) +{ + return memcpy(dest, src, size); +} + + +//************************************** +// Basic Types +//************************************** +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L // C99 +# include +typedef uint8_t BYTE; +typedef uint16_t U16; +typedef uint32_t U32; +typedef int32_t S32; +typedef uint64_t U64; +#else +typedef unsigned char BYTE; +typedef unsigned short U16; +typedef unsigned int U32; +typedef signed int S32; +typedef unsigned long long U64; +#endif + +#if defined(__GNUC__) && !defined(XXH_USE_UNALIGNED_ACCESS) +# define _PACKED __attribute__ ((packed)) +#else +# define _PACKED +#endif + +#if !defined(XXH_USE_UNALIGNED_ACCESS) && !defined(__GNUC__) +# ifdef __IBMC__ +# pragma pack(1) +# else +# pragma pack(push, 1) +# endif +#endif + +typedef struct _U32_S +{ + U32 v; +} _PACKED U32_S; +typedef struct _U64_S +{ + U64 v; +} _PACKED U64_S; + +#if !defined(XXH_USE_UNALIGNED_ACCESS) && !defined(__GNUC__) +# pragma pack(pop) +#endif + +#define A32(x) (((U32_S *)(x))->v) +#define A64(x) (((U64_S *)(x))->v) + + +//*************************************** +// Compiler-specific Functions and Macros +//*************************************** +#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) + +// Note : although _rotl exists for minGW (GCC under windows), performance seems poor +#if defined(_MSC_VER) +# define XXH_rotl32(x,r) _rotl(x,r) +# define XXH_rotl64(x,r) _rotl64(x,r) +#else +# define XXH_rotl32(x,r) ((x << r) | (x >> (32 - r))) +# define XXH_rotl64(x,r) ((x << r) | (x >> (64 - r))) +#endif + +#if defined(_MSC_VER) // Visual Studio +# define XXH_swap32 _byteswap_ulong +# define XXH_swap64 _byteswap_uint64 +#elif GCC_VERSION >= 403 +# define XXH_swap32 __builtin_bswap32 +# define XXH_swap64 __builtin_bswap64 +#else +static inline U32 XXH_swap32(U32 x) +{ + return ((x << 24) & 0xff000000) | + ((x << 8) & 0x00ff0000) | + ((x >> 8) & 0x0000ff00) | + ((x >> 24) & 0x000000ff); +} +static inline U64 XXH_swap64(U64 x) +{ + return ((x << 56) & 0xff00000000000000ULL) | + ((x << 40) & 0x00ff000000000000ULL) | + ((x << 24) & 0x0000ff0000000000ULL) | + ((x << 8) & 0x000000ff00000000ULL) | + ((x >> 8) & 0x00000000ff000000ULL) | + ((x >> 24) & 0x0000000000ff0000ULL) | + ((x >> 40) & 0x000000000000ff00ULL) | + ((x >> 56) & 0x00000000000000ffULL); +} +#endif + + +//************************************** +// Constants +//************************************** +#define PRIME32_1 2654435761U +#define PRIME32_2 2246822519U +#define PRIME32_3 3266489917U +#define PRIME32_4 668265263U +#define PRIME32_5 374761393U + +#define PRIME64_1 11400714785074694791ULL +#define PRIME64_2 14029467366897019727ULL +#define PRIME64_3 1609587929392839161ULL +#define PRIME64_4 9650029242287828579ULL +#define PRIME64_5 2870177450012600261ULL + +//************************************** +// Architecture Macros +//************************************** +typedef enum { XXH_bigEndian = 0, XXH_littleEndian = 1 } XXH_endianess; +#ifndef XXH_CPU_LITTLE_ENDIAN // It is possible to define XXH_CPU_LITTLE_ENDIAN externally, for example using a compiler switch +static const int one = 1; +# define XXH_CPU_LITTLE_ENDIAN (*(char*)(&one)) +#endif + + +//************************************** +// Macros +//************************************** +#define XXH_STATIC_ASSERT(c) { enum { XXH_static_assert = 1/(!!(c)) }; } // use only *after* variable declarations + + +//**************************** +// Memory reads +//**************************** +typedef enum { XXH_aligned, XXH_unaligned } XXH_alignment; + +FORCE_INLINE U32 XXH_readLE32_align(const void *ptr, XXH_endianess endian, + XXH_alignment align) +{ + if (align == XXH_unaligned) + return endian == XXH_littleEndian ? A32(ptr) : XXH_swap32(A32(ptr)); + else + return endian == XXH_littleEndian ? *(U32 *)ptr : XXH_swap32(*(U32 *)ptr); +} + +FORCE_INLINE U32 XXH_readLE32(const void *ptr, XXH_endianess endian) +{ + return XXH_readLE32_align(ptr, endian, XXH_unaligned); +} + +FORCE_INLINE U64 XXH_readLE64_align(const void *ptr, XXH_endianess endian, + XXH_alignment align) +{ + if (align == XXH_unaligned) + return endian == XXH_littleEndian ? A64(ptr) : XXH_swap64(A64(ptr)); + else + return endian == XXH_littleEndian ? *(U64 *)ptr : XXH_swap64(*(U64 *)ptr); +} + +FORCE_INLINE U64 XXH_readLE64(const void *ptr, XXH_endianess endian) +{ + return XXH_readLE64_align(ptr, endian, XXH_unaligned); +} + + +//**************************** +// Simple Hash Functions +//**************************** +FORCE_INLINE U32 XXH32_endian_align(const void *input, size_t len, + U32 seed, XXH_endianess endian, XXH_alignment align) +{ + const BYTE *p = (const BYTE *)input; + const BYTE *bEnd = p + len; + U32 h32; +#define XXH_get32bits(p) XXH_readLE32_align(p, endian, align) + +#ifdef XXH_ACCEPT_NULL_INPUT_POINTER + if (p == NULL) + { + len = 0; + bEnd = p = (const BYTE *)(size_t)16; + } +#endif + + if (len >= 16) + { + const BYTE *const limit = bEnd - 16; + U32 v1 = seed + PRIME32_1 + PRIME32_2; + U32 v2 = seed + PRIME32_2; + U32 v3 = seed + 0; + U32 v4 = seed - PRIME32_1; + + do + { + v1 += XXH_get32bits(p) * PRIME32_2; + v1 = XXH_rotl32(v1, 13); + v1 *= PRIME32_1; + p += 4; + v2 += XXH_get32bits(p) * PRIME32_2; + v2 = XXH_rotl32(v2, 13); + v2 *= PRIME32_1; + p += 4; + v3 += XXH_get32bits(p) * PRIME32_2; + v3 = XXH_rotl32(v3, 13); + v3 *= PRIME32_1; + p += 4; + v4 += XXH_get32bits(p) * PRIME32_2; + v4 = XXH_rotl32(v4, 13); + v4 *= PRIME32_1; + p += 4; + } + while (p <= limit); + + h32 = XXH_rotl32(v1, 1) + XXH_rotl32(v2, 7) + XXH_rotl32(v3, + 12) + XXH_rotl32(v4, 18); + } + else + h32 = seed + PRIME32_5; + + h32 += (U32) len; + + while (p + 4 <= bEnd) + { + h32 += XXH_get32bits(p) * PRIME32_3; + h32 = XXH_rotl32(h32, 17) * PRIME32_4 ; + p += 4; + } + + while (p < bEnd) + { + h32 += (*p) * PRIME32_5; + h32 = XXH_rotl32(h32, 11) * PRIME32_1 ; + p++; + } + + h32 ^= h32 >> 15; + h32 *= PRIME32_2; + h32 ^= h32 >> 13; + h32 *= PRIME32_3; + h32 ^= h32 >> 16; + + return h32; +} + + +unsigned int XXH32(const void *input, size_t len, unsigned seed) +{ +#if 0 + // Simple version, good for code maintenance, but unfortunately slow for small inputs + XXH32_state_t state; + XXH32_reset(&state, seed); + XXH32_update(&state, input, len); + return XXH32_digest(&state); +#else + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + +# if !defined(XXH_USE_UNALIGNED_ACCESS) + if ((((size_t)input) & 3) == + 0) // Input is aligned, let's leverage the speed advantage + { + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH32_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned); + else + return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned); + } +# endif + + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH32_endian_align(input, len, seed, XXH_littleEndian, + XXH_unaligned); + else + return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned); +#endif +} + +FORCE_INLINE U64 XXH64_endian_align(const void *input, size_t len, + U64 seed, XXH_endianess endian, XXH_alignment align) +{ + const BYTE *p = (const BYTE *)input; + const BYTE *bEnd = p + len; + U64 h64; +#define XXH_get64bits(p) XXH_readLE64_align(p, endian, align) + +#ifdef XXH_ACCEPT_NULL_INPUT_POINTER + if (p == NULL) + { + len = 0; + bEnd = p = (const BYTE *)(size_t)32; + } +#endif + + if (len >= 32) + { + const BYTE *const limit = bEnd - 32; + U64 v1 = seed + PRIME64_1 + PRIME64_2; + U64 v2 = seed + PRIME64_2; + U64 v3 = seed + 0; + U64 v4 = seed - PRIME64_1; + + do + { + v1 += XXH_get64bits(p) * PRIME64_2; + p += 8; + v1 = XXH_rotl64(v1, 31); + v1 *= PRIME64_1; + v2 += XXH_get64bits(p) * PRIME64_2; + p += 8; + v2 = XXH_rotl64(v2, 31); + v2 *= PRIME64_1; + v3 += XXH_get64bits(p) * PRIME64_2; + p += 8; + v3 = XXH_rotl64(v3, 31); + v3 *= PRIME64_1; + v4 += XXH_get64bits(p) * PRIME64_2; + p += 8; + v4 = XXH_rotl64(v4, 31); + v4 *= PRIME64_1; + } + while (p <= limit); + + h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, + 12) + XXH_rotl64(v4, 18); + + v1 *= PRIME64_2; + v1 = XXH_rotl64(v1, 31); + v1 *= PRIME64_1; + h64 ^= v1; + h64 = h64 * PRIME64_1 + PRIME64_4; + + v2 *= PRIME64_2; + v2 = XXH_rotl64(v2, 31); + v2 *= PRIME64_1; + h64 ^= v2; + h64 = h64 * PRIME64_1 + PRIME64_4; + + v3 *= PRIME64_2; + v3 = XXH_rotl64(v3, 31); + v3 *= PRIME64_1; + h64 ^= v3; + h64 = h64 * PRIME64_1 + PRIME64_4; + + v4 *= PRIME64_2; + v4 = XXH_rotl64(v4, 31); + v4 *= PRIME64_1; + h64 ^= v4; + h64 = h64 * PRIME64_1 + PRIME64_4; + } + else + h64 = seed + PRIME64_5; + + h64 += (U64) len; + + while (p + 8 <= bEnd) + { + U64 k1 = XXH_get64bits(p); + k1 *= PRIME64_2; + k1 = XXH_rotl64(k1, 31); + k1 *= PRIME64_1; + h64 ^= k1; + h64 = XXH_rotl64(h64, 27) * PRIME64_1 + PRIME64_4; + p += 8; + } + + if (p + 4 <= bEnd) + { + h64 ^= (U64)(XXH_get32bits(p)) * PRIME64_1; + h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3; + p += 4; + } + + while (p < bEnd) + { + h64 ^= (*p) * PRIME64_5; + h64 = XXH_rotl64(h64, 11) * PRIME64_1; + p++; + } + + h64 ^= h64 >> 33; + h64 *= PRIME64_2; + h64 ^= h64 >> 29; + h64 *= PRIME64_3; + h64 ^= h64 >> 32; + + return h64; +} + + +unsigned long long XXH64(const void *input, size_t len, + unsigned long long seed) +{ +#if 0 + // Simple version, good for code maintenance, but unfortunately slow for small inputs + XXH64_state_t state; + XXH64_reset(&state, seed); + XXH64_update(&state, input, len); + return XXH64_digest(&state); +#else + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + +# if !defined(XXH_USE_UNALIGNED_ACCESS) + if ((((size_t)input) & 7) == + 0) // Input is aligned, let's leverage the speed advantage + { + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH64_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned); + else + return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned); + } +# endif + + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH64_endian_align(input, len, seed, XXH_littleEndian, + XXH_unaligned); + else + return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned); +#endif +} + +/**************************************************** + * Advanced Hash Functions +****************************************************/ + +/*** Allocation ***/ +typedef struct +{ + U64 total_len; + U32 seed; + U32 v1; + U32 v2; + U32 v3; + U32 v4; + U32 mem32[4]; /* defined as U32 for alignment */ + U32 memsize; +} XXH_istate32_t; + +typedef struct +{ + U64 total_len; + U64 seed; + U64 v1; + U64 v2; + U64 v3; + U64 v4; + U64 mem64[4]; /* defined as U64 for alignment */ + U32 memsize; +} XXH_istate64_t; + + +XXH32_state_t *XXH32_createState(void) +{ + XXH_STATIC_ASSERT(sizeof(XXH32_state_t) >= sizeof( + XXH_istate32_t)); // A compilation error here means XXH32_state_t is not large enough + return (XXH32_state_t *)XXH_malloc(sizeof(XXH32_state_t)); +} +XXH_errorcode XXH32_freeState(XXH32_state_t *statePtr) +{ + XXH_free(statePtr); + return XXH_OK; +}; + +XXH64_state_t *XXH64_createState(void) +{ + XXH_STATIC_ASSERT(sizeof(XXH64_state_t) >= sizeof( + XXH_istate64_t)); // A compilation error here means XXH64_state_t is not large enough + return (XXH64_state_t *)XXH_malloc(sizeof(XXH64_state_t)); +} +XXH_errorcode XXH64_freeState(XXH64_state_t *statePtr) +{ + XXH_free(statePtr); + return XXH_OK; +}; + + +/*** Hash feed ***/ + +XXH_errorcode XXH32_reset(XXH32_state_t *state_in, U32 seed) +{ + XXH_istate32_t *state = (XXH_istate32_t *) state_in; + state->seed = seed; + state->v1 = seed + PRIME32_1 + PRIME32_2; + state->v2 = seed + PRIME32_2; + state->v3 = seed + 0; + state->v4 = seed - PRIME32_1; + state->total_len = 0; + state->memsize = 0; + return XXH_OK; +} + +XXH_errorcode XXH64_reset(XXH64_state_t *state_in, unsigned long long seed) +{ + XXH_istate64_t *state = (XXH_istate64_t *) state_in; + state->seed = seed; + state->v1 = seed + PRIME64_1 + PRIME64_2; + state->v2 = seed + PRIME64_2; + state->v3 = seed + 0; + state->v4 = seed - PRIME64_1; + state->total_len = 0; + state->memsize = 0; + return XXH_OK; +} + + +FORCE_INLINE XXH_errorcode XXH32_update_endian(XXH32_state_t *state_in, + const void *input, size_t len, XXH_endianess endian) +{ + XXH_istate32_t *state = (XXH_istate32_t *) state_in; + const BYTE *p = (const BYTE *)input; + const BYTE *const bEnd = p + len; + +#ifdef XXH_ACCEPT_NULL_INPUT_POINTER + if (input == NULL) return XXH_ERROR; +#endif + + state->total_len += len; + + if (state->memsize + len < 16) // fill in tmp buffer + { + XXH_memcpy((BYTE *)(state->mem32) + state->memsize, input, len); + state->memsize += (U32)len; + return XXH_OK; + } + + if (state->memsize) // some data left from previous update + { + XXH_memcpy((BYTE *)(state->mem32) + state->memsize, input, + 16 - state->memsize); + { + const U32 *p32 = state->mem32; + state->v1 += XXH_readLE32(p32, endian) * PRIME32_2; + state->v1 = XXH_rotl32(state->v1, 13); + state->v1 *= PRIME32_1; + p32++; + state->v2 += XXH_readLE32(p32, endian) * PRIME32_2; + state->v2 = XXH_rotl32(state->v2, 13); + state->v2 *= PRIME32_1; + p32++; + state->v3 += XXH_readLE32(p32, endian) * PRIME32_2; + state->v3 = XXH_rotl32(state->v3, 13); + state->v3 *= PRIME32_1; + p32++; + state->v4 += XXH_readLE32(p32, endian) * PRIME32_2; + state->v4 = XXH_rotl32(state->v4, 13); + state->v4 *= PRIME32_1; + p32++; + } + p += 16 - state->memsize; + state->memsize = 0; + } + + if (p <= bEnd - 16) + { + const BYTE *const limit = bEnd - 16; + U32 v1 = state->v1; + U32 v2 = state->v2; + U32 v3 = state->v3; + U32 v4 = state->v4; + + do + { + v1 += XXH_readLE32(p, endian) * PRIME32_2; + v1 = XXH_rotl32(v1, 13); + v1 *= PRIME32_1; + p += 4; + v2 += XXH_readLE32(p, endian) * PRIME32_2; + v2 = XXH_rotl32(v2, 13); + v2 *= PRIME32_1; + p += 4; + v3 += XXH_readLE32(p, endian) * PRIME32_2; + v3 = XXH_rotl32(v3, 13); + v3 *= PRIME32_1; + p += 4; + v4 += XXH_readLE32(p, endian) * PRIME32_2; + v4 = XXH_rotl32(v4, 13); + v4 *= PRIME32_1; + p += 4; + } + while (p <= limit); + + state->v1 = v1; + state->v2 = v2; + state->v3 = v3; + state->v4 = v4; + } + + if (p < bEnd) + { + XXH_memcpy(state->mem32, p, bEnd - p); + state->memsize = (int)(bEnd - p); + } + + return XXH_OK; +} + +XXH_errorcode XXH32_update(XXH32_state_t *state_in, const void *input, + size_t len) +{ + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH32_update_endian(state_in, input, len, XXH_littleEndian); + else + return XXH32_update_endian(state_in, input, len, XXH_bigEndian); +} + + + +FORCE_INLINE U32 XXH32_digest_endian(const XXH32_state_t *state_in, + XXH_endianess endian) +{ + XXH_istate32_t *state = (XXH_istate32_t *) state_in; + const BYTE *p = (const BYTE *)state->mem32; + BYTE *bEnd = (BYTE *)(state->mem32) + state->memsize; + U32 h32; + + if (state->total_len >= 16) + h32 = XXH_rotl32(state->v1, 1) + XXH_rotl32(state->v2, + 7) + XXH_rotl32(state->v3, 12) + XXH_rotl32(state->v4, 18); + else + h32 = state->seed + PRIME32_5; + + h32 += (U32) state->total_len; + + while (p + 4 <= bEnd) + { + h32 += XXH_readLE32(p, endian) * PRIME32_3; + h32 = XXH_rotl32(h32, 17) * PRIME32_4; + p += 4; + } + + while (p < bEnd) + { + h32 += (*p) * PRIME32_5; + h32 = XXH_rotl32(h32, 11) * PRIME32_1; + p++; + } + + h32 ^= h32 >> 15; + h32 *= PRIME32_2; + h32 ^= h32 >> 13; + h32 *= PRIME32_3; + h32 ^= h32 >> 16; + + return h32; +} + + +U32 XXH32_digest(const XXH32_state_t *state_in) +{ + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH32_digest_endian(state_in, XXH_littleEndian); + else + return XXH32_digest_endian(state_in, XXH_bigEndian); +} + + +FORCE_INLINE XXH_errorcode XXH64_update_endian(XXH64_state_t *state_in, + const void *input, size_t len, XXH_endianess endian) +{ + XXH_istate64_t *state = (XXH_istate64_t *) state_in; + const BYTE *p = (const BYTE *)input; + const BYTE *const bEnd = p + len; + +#ifdef XXH_ACCEPT_NULL_INPUT_POINTER + if (input == NULL) return XXH_ERROR; +#endif + + state->total_len += len; + + if (state->memsize + len < 32) // fill in tmp buffer + { + XXH_memcpy(((BYTE *)state->mem64) + state->memsize, input, len); + state->memsize += (U32)len; + return XXH_OK; + } + + if (state->memsize) // some data left from previous update + { + XXH_memcpy(((BYTE *)state->mem64) + state->memsize, input, + 32 - state->memsize); + { + const U64 *p64 = state->mem64; + state->v1 += XXH_readLE64(p64, endian) * PRIME64_2; + state->v1 = XXH_rotl64(state->v1, 31); + state->v1 *= PRIME64_1; + p64++; + state->v2 += XXH_readLE64(p64, endian) * PRIME64_2; + state->v2 = XXH_rotl64(state->v2, 31); + state->v2 *= PRIME64_1; + p64++; + state->v3 += XXH_readLE64(p64, endian) * PRIME64_2; + state->v3 = XXH_rotl64(state->v3, 31); + state->v3 *= PRIME64_1; + p64++; + state->v4 += XXH_readLE64(p64, endian) * PRIME64_2; + state->v4 = XXH_rotl64(state->v4, 31); + state->v4 *= PRIME64_1; + p64++; + } + p += 32 - state->memsize; + state->memsize = 0; + } + + if (p + 32 <= bEnd) + { + const BYTE *const limit = bEnd - 32; + U64 v1 = state->v1; + U64 v2 = state->v2; + U64 v3 = state->v3; + U64 v4 = state->v4; + + do + { + v1 += XXH_readLE64(p, endian) * PRIME64_2; + v1 = XXH_rotl64(v1, 31); + v1 *= PRIME64_1; + p += 8; + v2 += XXH_readLE64(p, endian) * PRIME64_2; + v2 = XXH_rotl64(v2, 31); + v2 *= PRIME64_1; + p += 8; + v3 += XXH_readLE64(p, endian) * PRIME64_2; + v3 = XXH_rotl64(v3, 31); + v3 *= PRIME64_1; + p += 8; + v4 += XXH_readLE64(p, endian) * PRIME64_2; + v4 = XXH_rotl64(v4, 31); + v4 *= PRIME64_1; + p += 8; + } + while (p <= limit); + + state->v1 = v1; + state->v2 = v2; + state->v3 = v3; + state->v4 = v4; + } + + if (p < bEnd) + { + XXH_memcpy(state->mem64, p, bEnd - p); + state->memsize = (int)(bEnd - p); + } + + return XXH_OK; +} + +XXH_errorcode XXH64_update(XXH64_state_t *state_in, const void *input, + size_t len) +{ + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH64_update_endian(state_in, input, len, XXH_littleEndian); + else + return XXH64_update_endian(state_in, input, len, XXH_bigEndian); +} + + + +FORCE_INLINE U64 XXH64_digest_endian(const XXH64_state_t *state_in, + XXH_endianess endian) +{ + XXH_istate64_t *state = (XXH_istate64_t *) state_in; + const BYTE *p = (const BYTE *)state->mem64; + BYTE *bEnd = (BYTE *)state->mem64 + state->memsize; + U64 h64; + + if (state->total_len >= 32) + { + U64 v1 = state->v1; + U64 v2 = state->v2; + U64 v3 = state->v3; + U64 v4 = state->v4; + + h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, + 12) + XXH_rotl64(v4, 18); + + v1 *= PRIME64_2; + v1 = XXH_rotl64(v1, 31); + v1 *= PRIME64_1; + h64 ^= v1; + h64 = h64 * PRIME64_1 + PRIME64_4; + + v2 *= PRIME64_2; + v2 = XXH_rotl64(v2, 31); + v2 *= PRIME64_1; + h64 ^= v2; + h64 = h64 * PRIME64_1 + PRIME64_4; + + v3 *= PRIME64_2; + v3 = XXH_rotl64(v3, 31); + v3 *= PRIME64_1; + h64 ^= v3; + h64 = h64 * PRIME64_1 + PRIME64_4; + + v4 *= PRIME64_2; + v4 = XXH_rotl64(v4, 31); + v4 *= PRIME64_1; + h64 ^= v4; + h64 = h64 * PRIME64_1 + PRIME64_4; + } + else + h64 = state->seed + PRIME64_5; + + h64 += (U64) state->total_len; + + while (p + 8 <= bEnd) + { + U64 k1 = XXH_readLE64(p, endian); + k1 *= PRIME64_2; + k1 = XXH_rotl64(k1, 31); + k1 *= PRIME64_1; + h64 ^= k1; + h64 = XXH_rotl64(h64, 27) * PRIME64_1 + PRIME64_4; + p += 8; + } + + if (p + 4 <= bEnd) + { + h64 ^= (U64)(XXH_readLE32(p, endian)) * PRIME64_1; + h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3; + p += 4; + } + + while (p < bEnd) + { + h64 ^= (*p) * PRIME64_5; + h64 = XXH_rotl64(h64, 11) * PRIME64_1; + p++; + } + + h64 ^= h64 >> 33; + h64 *= PRIME64_2; + h64 ^= h64 >> 29; + h64 *= PRIME64_3; + h64 ^= h64 >> 32; + + return h64; +} + + +unsigned long long XXH64_digest(const XXH64_state_t *state_in) +{ + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + + if ((endian_detected == XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH64_digest_endian(state_in, XXH_littleEndian); + else + return XXH64_digest_endian(state_in, XXH_bigEndian); +} + + diff --git a/external/lsquic/src/lshpack/deps/xxhash/xxhash.h b/external/lsquic/src/lshpack/deps/xxhash/xxhash.h new file mode 100644 index 0000000..45ecc9d --- /dev/null +++ b/external/lsquic/src/lshpack/deps/xxhash/xxhash.h @@ -0,0 +1,160 @@ +/* + xxHash - Extremely Fast Hash algorithm + Header File + Copyright (C) 2012-2014, Yann Collet. + BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + You can contact the author at : + - xxHash source repository : http://code.google.com/p/xxhash/ +*/ + +/* Notice extracted from xxHash homepage : + +xxHash is an extremely fast Hash algorithm, running at RAM speed limits. +It also successfully passes all tests from the SMHasher suite. + +Comparison (single thread, Windows Seven 32 bits, using SMHasher on a Core 2 Duo @3GHz) + +Name Speed Q.Score Author +xxHash 5.4 GB/s 10 +CrapWow 3.2 GB/s 2 Andrew +MumurHash 3a 2.7 GB/s 10 Austin Appleby +SpookyHash 2.0 GB/s 10 Bob Jenkins +SBox 1.4 GB/s 9 Bret Mulvey +Lookup3 1.2 GB/s 9 Bob Jenkins +SuperFastHash 1.2 GB/s 1 Paul Hsieh +CityHash64 1.05 GB/s 10 Pike & Alakuijala +FNV 0.55 GB/s 5 Fowler, Noll, Vo +CRC32 0.43 GB/s 9 +MD5-32 0.33 GB/s 10 Ronald L. Rivest +SHA1-32 0.28 GB/s 10 + +Q.Score is a measure of quality of the hash function. +It depends on successfully passing SMHasher test set. +10 is a perfect score. +*/ + +#pragma once + +#if defined (__cplusplus) +extern "C" { +#endif + + +/***************************** + Includes +*****************************/ +#include /* size_t */ + + +/***************************** + Type +*****************************/ +typedef enum { XXH_OK = 0, XXH_ERROR } XXH_errorcode; + + + +/***************************** + Simple Hash Functions +*****************************/ + +unsigned int XXH32(const void *input, size_t length, unsigned seed); +unsigned long long XXH64(const void *input, size_t length, + unsigned long long seed); + +/* +XXH32() : + Calculate the 32-bits hash of sequence "length" bytes stored at memory address "input". + The memory between input & input+length must be valid (allocated and read-accessible). + "seed" can be used to alter the result predictably. + This function successfully passes all SMHasher tests. + Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark) : 5.4 GB/s +XXH64() : + Calculate the 64-bits hash of sequence of length "len" stored at memory address "input". +*/ + + + +/***************************** + Advanced Hash Functions +*****************************/ +typedef struct { long long ll[ 6]; } XXH32_state_t; +typedef struct { long long ll[11]; } XXH64_state_t; + +/* +These structures allow static allocation of XXH states. +States must then be initialized using XXHnn_reset() before first use. + +If you prefer dynamic allocation, please refer to functions below. +*/ + +XXH32_state_t *XXH32_createState(void); +XXH_errorcode XXH32_freeState(XXH32_state_t *statePtr); + +XXH64_state_t *XXH64_createState(void); +XXH_errorcode XXH64_freeState(XXH64_state_t *statePtr); + +/* +These functions create and release memory for XXH state. +States must then be initialized using XXHnn_reset() before first use. +*/ + + +XXH_errorcode XXH32_reset(XXH32_state_t *statePtr, unsigned seed); +XXH_errorcode XXH32_update(XXH32_state_t *statePtr, const void *input, + size_t length); +unsigned int XXH32_digest(const XXH32_state_t *statePtr); + +XXH_errorcode XXH64_reset(XXH64_state_t *statePtr, + unsigned long long seed); +XXH_errorcode XXH64_update(XXH64_state_t *statePtr, const void *input, + size_t length); +unsigned long long XXH64_digest(const XXH64_state_t *statePtr); + +/* +These functions calculate the xxHash of an input provided in multiple smaller packets, +as opposed to an input provided as a single block. + +XXH state space must first be allocated, using either static or dynamic method provided above. + +Start a new hash by initializing state with a seed, using XXHnn_reset(). + +Then, feed the hash state by calling XXHnn_update() as many times as necessary. +Obviously, input must be valid, meaning allocated and read accessible. +The function returns an error code, with 0 meaning OK, and any other value meaning there is an error. + +Finally, you can produce a hash anytime, by using XXHnn_digest(). +This function returns the final nn-bits hash. +You can nonetheless continue feeding the hash state with more input, +and therefore get some new hashes, by calling again XXHnn_digest(). + +When you are done, don't forget to free XXH state space, using typically XXHnn_freeState(). +*/ + + +#if defined (__cplusplus) +} +#endif diff --git a/external/lsquic/src/lshpack/huff-tables.h b/external/lsquic/src/lshpack/huff-tables.h new file mode 100644 index 0000000..8cf0110 --- /dev/null +++ b/external/lsquic/src/lshpack/huff-tables.h @@ -0,0 +1,136251 @@ +struct encode_el +{ + uint32_t code; + int bits; +}; + +static const struct encode_el encode_table[257] = +{ + { 0x1ff8, 13}, // ( 0) + { 0x7fffd8, 23}, // ( 1) + { 0xfffffe2, 28}, // ( 2) + { 0xfffffe3, 28}, // ( 3) + { 0xfffffe4, 28}, // ( 4) + { 0xfffffe5, 28}, // ( 5) + { 0xfffffe6, 28}, // ( 6) + { 0xfffffe7, 28}, // ( 7) + { 0xfffffe8, 28}, // ( 8) + { 0xffffea, 24}, // ( 9) + { 0x3ffffffc, 30}, // ( 10) + { 0xfffffe9, 28}, // ( 11) + { 0xfffffea, 28}, // ( 12) + { 0x3ffffffd, 30}, // ( 13) + { 0xfffffeb, 28}, // ( 14) + { 0xfffffec, 28}, // ( 15) + { 0xfffffed, 28}, // ( 16) + { 0xfffffee, 28}, // ( 17) + { 0xfffffef, 28}, // ( 18) + { 0xffffff0, 28}, // ( 19) + { 0xffffff1, 28}, // ( 20) + { 0xffffff2, 28}, // ( 21) + { 0x3ffffffe, 30}, // ( 22) + { 0xffffff3, 28}, // ( 23) + { 0xffffff4, 28}, // ( 24) + { 0xffffff5, 28}, // ( 25) + { 0xffffff6, 28}, // ( 26) + { 0xffffff7, 28}, // ( 27) + { 0xffffff8, 28}, // ( 28) + { 0xffffff9, 28}, // ( 29) + { 0xffffffa, 28}, // ( 30) + { 0xffffffb, 28}, // ( 31) + { 0x14, 6}, // ' ' ( 32) + { 0x3f8, 10}, // '!' ( 33) + { 0x3f9, 10}, // '"' ( 34) + { 0xffa, 12}, // '#' ( 35) + { 0x1ff9, 13}, // '$' ( 36) + { 0x15, 6}, // '%' ( 37) + { 0xf8, 8}, // '&' ( 38) + { 0x7fa, 11}, // ''' ( 39) + { 0x3fa, 10}, // '(' ( 40) + { 0x3fb, 10}, // ')' ( 41) + { 0xf9, 8}, // '*' ( 42) + { 0x7fb, 11}, // '+' ( 43) + { 0xfa, 8}, // ',' ( 44) + { 0x16, 6}, // '-' ( 45) + { 0x17, 6}, // '.' ( 46) + { 0x18, 6}, // '/' ( 47) + { 0x0, 5}, // '0' ( 48) + { 0x1, 5}, // '1' ( 49) + { 0x2, 5}, // '2' ( 50) + { 0x19, 6}, // '3' ( 51) + { 0x1a, 6}, // '4' ( 52) + { 0x1b, 6}, // '5' ( 53) + { 0x1c, 6}, // '6' ( 54) + { 0x1d, 6}, // '7' ( 55) + { 0x1e, 6}, // '8' ( 56) + { 0x1f, 6}, // '9' ( 57) + { 0x5c, 7}, // ':' ( 58) + { 0xfb, 8}, // ';' ( 59) + { 0x7ffc, 15}, // '<' ( 60) + { 0x20, 6}, // '=' ( 61) + { 0xffb, 12}, // '>' ( 62) + { 0x3fc, 10}, // '?' ( 63) + { 0x1ffa, 13}, // '@' ( 64) + { 0x21, 6}, // 'A' ( 65) + { 0x5d, 7}, // 'B' ( 66) + { 0x5e, 7}, // 'C' ( 67) + { 0x5f, 7}, // 'D' ( 68) + { 0x60, 7}, // 'E' ( 69) + { 0x61, 7}, // 'F' ( 70) + { 0x62, 7}, // 'G' ( 71) + { 0x63, 7}, // 'H' ( 72) + { 0x64, 7}, // 'I' ( 73) + { 0x65, 7}, // 'J' ( 74) + { 0x66, 7}, // 'K' ( 75) + { 0x67, 7}, // 'L' ( 76) + { 0x68, 7}, // 'M' ( 77) + { 0x69, 7}, // 'N' ( 78) + { 0x6a, 7}, // 'O' ( 79) + { 0x6b, 7}, // 'P' ( 80) + { 0x6c, 7}, // 'Q' ( 81) + { 0x6d, 7}, // 'R' ( 82) + { 0x6e, 7}, // 'S' ( 83) + { 0x6f, 7}, // 'T' ( 84) + { 0x70, 7}, // 'U' ( 85) + { 0x71, 7}, // 'V' ( 86) + { 0x72, 7}, // 'W' ( 87) + { 0xfc, 8}, // 'X' ( 88) + { 0x73, 7}, // 'Y' ( 89) + { 0xfd, 8}, // 'Z' ( 90) + { 0x1ffb, 13}, // '[' ( 91) + { 0x7fff0, 19}, // '\' ( 92) + { 0x1ffc, 13}, // ']' ( 93) + { 0x3ffc, 14}, // '^' ( 94) + { 0x22, 6}, // '_' ( 95) + { 0x7ffd, 15}, // '`' ( 96) + { 0x3, 5}, // 'a' ( 97) + { 0x23, 6}, // 'b' ( 98) + { 0x4, 5}, // 'c' ( 99) + { 0x24, 6}, // 'd' (100) + { 0x5, 5}, // 'e' (101) + { 0x25, 6}, // 'f' (102) + { 0x26, 6}, // 'g' (103) + { 0x27, 6}, // 'h' (104) + { 0x6, 5}, // 'i' (105) + { 0x74, 7}, // 'j' (106) + { 0x75, 7}, // 'k' (107) + { 0x28, 6}, // 'l' (108) + { 0x29, 6}, // 'm' (109) + { 0x2a, 6}, // 'n' (110) + { 0x7, 5}, // 'o' (111) + { 0x2b, 6}, // 'p' (112) + { 0x76, 7}, // 'q' (113) + { 0x2c, 6}, // 'r' (114) + { 0x8, 5}, // 's' (115) + { 0x9, 5}, // 't' (116) + { 0x2d, 6}, // 'u' (117) + { 0x77, 7}, // 'v' (118) + { 0x78, 7}, // 'w' (119) + { 0x79, 7}, // 'x' (120) + { 0x7a, 7}, // 'y' (121) + { 0x7b, 7}, // 'z' (122) + { 0x7ffe, 15}, // '{' (123) + { 0x7fc, 11}, // '|' (124) + { 0x3ffd, 14}, // '}' (125) + { 0x1ffd, 13}, // '~' (126) + { 0xffffffc, 28}, // (127) + { 0xfffe6, 20}, // (128) + { 0x3fffd2, 22}, // (129) + { 0xfffe7, 20}, // (130) + { 0xfffe8, 20}, // (131) + { 0x3fffd3, 22}, // (132) + { 0x3fffd4, 22}, // (133) + { 0x3fffd5, 22}, // (134) + { 0x7fffd9, 23}, // (135) + { 0x3fffd6, 22}, // (136) + { 0x7fffda, 23}, // (137) + { 0x7fffdb, 23}, // (138) + { 0x7fffdc, 23}, // (139) + { 0x7fffdd, 23}, // (140) + { 0x7fffde, 23}, // (141) + { 0xffffeb, 24}, // (142) + { 0x7fffdf, 23}, // (143) + { 0xffffec, 24}, // (144) + { 0xffffed, 24}, // (145) + { 0x3fffd7, 22}, // (146) + { 0x7fffe0, 23}, // (147) + { 0xffffee, 24}, // (148) + { 0x7fffe1, 23}, // (149) + { 0x7fffe2, 23}, // (150) + { 0x7fffe3, 23}, // (151) + { 0x7fffe4, 23}, // (152) + { 0x1fffdc, 21}, // (153) + { 0x3fffd8, 22}, // (154) + { 0x7fffe5, 23}, // (155) + { 0x3fffd9, 22}, // (156) + { 0x7fffe6, 23}, // (157) + { 0x7fffe7, 23}, // (158) + { 0xffffef, 24}, // (159) + { 0x3fffda, 22}, // (160) + { 0x1fffdd, 21}, // (161) + { 0xfffe9, 20}, // (162) + { 0x3fffdb, 22}, // (163) + { 0x3fffdc, 22}, // (164) + { 0x7fffe8, 23}, // (165) + { 0x7fffe9, 23}, // (166) + { 0x1fffde, 21}, // (167) + { 0x7fffea, 23}, // (168) + { 0x3fffdd, 22}, // (169) + { 0x3fffde, 22}, // (170) + { 0xfffff0, 24}, // (171) + { 0x1fffdf, 21}, // (172) + { 0x3fffdf, 22}, // (173) + { 0x7fffeb, 23}, // (174) + { 0x7fffec, 23}, // (175) + { 0x1fffe0, 21}, // (176) + { 0x1fffe1, 21}, // (177) + { 0x3fffe0, 22}, // (178) + { 0x1fffe2, 21}, // (179) + { 0x7fffed, 23}, // (180) + { 0x3fffe1, 22}, // (181) + { 0x7fffee, 23}, // (182) + { 0x7fffef, 23}, // (183) + { 0xfffea, 20}, // (184) + { 0x3fffe2, 22}, // (185) + { 0x3fffe3, 22}, // (186) + { 0x3fffe4, 22}, // (187) + { 0x7ffff0, 23}, // (188) + { 0x3fffe5, 22}, // (189) + { 0x3fffe6, 22}, // (190) + { 0x7ffff1, 23}, // (191) + { 0x3ffffe0, 26}, // (192) + { 0x3ffffe1, 26}, // (193) + { 0xfffeb, 20}, // (194) + { 0x7fff1, 19}, // (195) + { 0x3fffe7, 22}, // (196) + { 0x7ffff2, 23}, // (197) + { 0x3fffe8, 22}, // (198) + { 0x1ffffec, 25}, // (199) + { 0x3ffffe2, 26}, // (200) + { 0x3ffffe3, 26}, // (201) + { 0x3ffffe4, 26}, // (202) + { 0x7ffffde, 27}, // (203) + { 0x7ffffdf, 27}, // (204) + { 0x3ffffe5, 26}, // (205) + { 0xfffff1, 24}, // (206) + { 0x1ffffed, 25}, // (207) + { 0x7fff2, 19}, // (208) + { 0x1fffe3, 21}, // (209) + { 0x3ffffe6, 26}, // (210) + { 0x7ffffe0, 27}, // (211) + { 0x7ffffe1, 27}, // (212) + { 0x3ffffe7, 26}, // (213) + { 0x7ffffe2, 27}, // (214) + { 0xfffff2, 24}, // (215) + { 0x1fffe4, 21}, // (216) + { 0x1fffe5, 21}, // (217) + { 0x3ffffe8, 26}, // (218) + { 0x3ffffe9, 26}, // (219) + { 0xffffffd, 28}, // (220) + { 0x7ffffe3, 27}, // (221) + { 0x7ffffe4, 27}, // (222) + { 0x7ffffe5, 27}, // (223) + { 0xfffec, 20}, // (224) + { 0xfffff3, 24}, // (225) + { 0xfffed, 20}, // (226) + { 0x1fffe6, 21}, // (227) + { 0x3fffe9, 22}, // (228) + { 0x1fffe7, 21}, // (229) + { 0x1fffe8, 21}, // (230) + { 0x7ffff3, 23}, // (231) + { 0x3fffea, 22}, // (232) + { 0x3fffeb, 22}, // (233) + { 0x1ffffee, 25}, // (234) + { 0x1ffffef, 25}, // (235) + { 0xfffff4, 24}, // (236) + { 0xfffff5, 24}, // (237) + { 0x3ffffea, 26}, // (238) + { 0x7ffff4, 23}, // (239) + { 0x3ffffeb, 26}, // (240) + { 0x7ffffe6, 27}, // (241) + { 0x3ffffec, 26}, // (242) + { 0x3ffffed, 26}, // (243) + { 0x7ffffe7, 27}, // (244) + { 0x7ffffe8, 27}, // (245) + { 0x7ffffe9, 27}, // (246) + { 0x7ffffea, 27}, // (247) + { 0x7ffffeb, 27}, // (248) + { 0xffffffe, 28}, // (249) + { 0x7ffffec, 27}, // (250) + { 0x7ffffed, 27}, // (251) + { 0x7ffffee, 27}, // (252) + { 0x7ffffef, 27}, // (253) + { 0x7fffff0, 27}, // (254) + { 0x3ffffee, 26}, // (255) + { 0x3fffffff, 30} // EOS (256) +}; + + +#if LS_HPACK_USE_LARGE_TABLES +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define I(i,j) ((j<<8)|i) +#else +#define I(i,j) ((i<<8)|j) +#endif +/* On 32-bit platforms the longest code would cause undefined behavior + * when `bits' is shifted (you can't shift 32-bit value by 32 bits). + * Setting this value to 64 make the entry invalid and forces the encoder + * to use the slower loop. In other words, the longest output sequence + * is 32 bits on 64-bit platforms and 31 bits on 32-bit platforms. + */ +#if UINTPTR_MAX == 18446744073709551615ull +#define X32 32 +#else +#define X32 64 +#endif +static const struct henc { unsigned lens; uint32_t code; } hencs[] = +{ + [I(0,0)] = {26,0x3FF1FF8}, + [I(1,0)] = {64,0}, + [I(2,0)] = {64,0}, + [I(3,0)] = {64,0}, + [I(4,0)] = {64,0}, + [I(5,0)] = {64,0}, + [I(6,0)] = {64,0}, + [I(7,0)] = {64,0}, + [I(8,0)] = {64,0}, + [I(9,0)] = {64,0}, + [I(10,0)] = {64,0}, + [I(11,0)] = {64,0}, + [I(12,0)] = {64,0}, + [I(13,0)] = {64,0}, + [I(14,0)] = {64,0}, + [I(15,0)] = {64,0}, + [I(16,0)] = {64,0}, + [I(17,0)] = {64,0}, + [I(18,0)] = {64,0}, + [I(19,0)] = {64,0}, + [I(20,0)] = {64,0}, + [I(21,0)] = {64,0}, + [I(22,0)] = {64,0}, + [I(23,0)] = {64,0}, + [I(24,0)] = {64,0}, + [I(25,0)] = {64,0}, + [I(26,0)] = {64,0}, + [I(27,0)] = {64,0}, + [I(28,0)] = {64,0}, + [I(29,0)] = {64,0}, + [I(30,0)] = {64,0}, + [I(31,0)] = {64,0}, + [I(32,0)] = {19,0x29FF8}, + [I(33,0)] = {23,0x7F1FF8}, + [I(34,0)] = {23,0x7F3FF8}, + [I(35,0)] = {25,0x1FF5FF8}, + [I(36,0)] = {26,0x3FF3FF8}, + [I(37,0)] = {19,0x2BFF8}, + [I(38,0)] = {21,0x1F1FF8}, + [I(39,0)] = {24,0xFF5FF8}, + [I(40,0)] = {23,0x7F5FF8}, + [I(41,0)] = {23,0x7F7FF8}, + [I(42,0)] = {21,0x1F3FF8}, + [I(43,0)] = {24,0xFF7FF8}, + [I(44,0)] = {21,0x1F5FF8}, + [I(45,0)] = {19,0x2DFF8}, + [I(46,0)] = {19,0x2FFF8}, + [I(47,0)] = {19,0x31FF8}, + [I(48,0)] = {18,0x1FF8}, + [I(49,0)] = {18,0x3FF8}, + [I(50,0)] = {18,0x5FF8}, + [I(51,0)] = {19,0x33FF8}, + [I(52,0)] = {19,0x35FF8}, + [I(53,0)] = {19,0x37FF8}, + [I(54,0)] = {19,0x39FF8}, + [I(55,0)] = {19,0x3BFF8}, + [I(56,0)] = {19,0x3DFF8}, + [I(57,0)] = {19,0x3FFF8}, + [I(58,0)] = {20,0xB9FF8}, + [I(59,0)] = {21,0x1F7FF8}, + [I(60,0)] = {28,0xFFF9FF8}, + [I(61,0)] = {19,0x41FF8}, + [I(62,0)] = {25,0x1FF7FF8}, + [I(63,0)] = {23,0x7F9FF8}, + [I(64,0)] = {26,0x3FF5FF8}, + [I(65,0)] = {19,0x43FF8}, + [I(66,0)] = {20,0xBBFF8}, + [I(67,0)] = {20,0xBDFF8}, + [I(68,0)] = {20,0xBFFF8}, + [I(69,0)] = {20,0xC1FF8}, + [I(70,0)] = {20,0xC3FF8}, + [I(71,0)] = {20,0xC5FF8}, + [I(72,0)] = {20,0xC7FF8}, + [I(73,0)] = {20,0xC9FF8}, + [I(74,0)] = {20,0xCBFF8}, + [I(75,0)] = {20,0xCDFF8}, + [I(76,0)] = {20,0xCFFF8}, + [I(77,0)] = {20,0xD1FF8}, + [I(78,0)] = {20,0xD3FF8}, + [I(79,0)] = {20,0xD5FF8}, + [I(80,0)] = {20,0xD7FF8}, + [I(81,0)] = {20,0xD9FF8}, + [I(82,0)] = {20,0xDBFF8}, + [I(83,0)] = {20,0xDDFF8}, + [I(84,0)] = {20,0xDFFF8}, + [I(85,0)] = {20,0xE1FF8}, + [I(86,0)] = {20,0xE3FF8}, + [I(87,0)] = {20,0xE5FF8}, + [I(88,0)] = {21,0x1F9FF8}, + [I(89,0)] = {20,0xE7FF8}, + [I(90,0)] = {21,0x1FBFF8}, + [I(91,0)] = {26,0x3FF7FF8}, + [I(92,0)] = {X32,0xFFFE1FF8}, + [I(93,0)] = {26,0x3FF9FF8}, + [I(94,0)] = {27,0x7FF9FF8}, + [I(95,0)] = {19,0x45FF8}, + [I(96,0)] = {28,0xFFFBFF8}, + [I(97,0)] = {18,0x7FF8}, + [I(98,0)] = {19,0x47FF8}, + [I(99,0)] = {18,0x9FF8}, + [I(100,0)] = {19,0x49FF8}, + [I(101,0)] = {18,0xBFF8}, + [I(102,0)] = {19,0x4BFF8}, + [I(103,0)] = {19,0x4DFF8}, + [I(104,0)] = {19,0x4FFF8}, + [I(105,0)] = {18,0xDFF8}, + [I(106,0)] = {20,0xE9FF8}, + [I(107,0)] = {20,0xEBFF8}, + [I(108,0)] = {19,0x51FF8}, + [I(109,0)] = {19,0x53FF8}, + [I(110,0)] = {19,0x55FF8}, + [I(111,0)] = {18,0xFFF8}, + [I(112,0)] = {19,0x57FF8}, + [I(113,0)] = {20,0xEDFF8}, + [I(114,0)] = {19,0x59FF8}, + [I(115,0)] = {18,0x11FF8}, + [I(116,0)] = {18,0x13FF8}, + [I(117,0)] = {19,0x5BFF8}, + [I(118,0)] = {20,0xEFFF8}, + [I(119,0)] = {20,0xF1FF8}, + [I(120,0)] = {20,0xF3FF8}, + [I(121,0)] = {20,0xF5FF8}, + [I(122,0)] = {20,0xF7FF8}, + [I(123,0)] = {28,0xFFFDFF8}, + [I(124,0)] = {24,0xFF9FF8}, + [I(125,0)] = {27,0x7FFBFF8}, + [I(126,0)] = {26,0x3FFBFF8}, + [I(127,0)] = {64,0}, + [I(128,0)] = {64,0}, + [I(129,0)] = {64,0}, + [I(130,0)] = {64,0}, + [I(131,0)] = {64,0}, + [I(132,0)] = {64,0}, + [I(133,0)] = {64,0}, + [I(134,0)] = {64,0}, + [I(135,0)] = {64,0}, + [I(136,0)] = {64,0}, + [I(137,0)] = {64,0}, + [I(138,0)] = {64,0}, + [I(139,0)] = {64,0}, + [I(140,0)] = {64,0}, + [I(141,0)] = {64,0}, + [I(142,0)] = {64,0}, + [I(143,0)] = {64,0}, + [I(144,0)] = {64,0}, + [I(145,0)] = {64,0}, + [I(146,0)] = {64,0}, + [I(147,0)] = {64,0}, + [I(148,0)] = {64,0}, + [I(149,0)] = {64,0}, + [I(150,0)] = {64,0}, + [I(151,0)] = {64,0}, + [I(152,0)] = {64,0}, + [I(153,0)] = {64,0}, + [I(154,0)] = {64,0}, + [I(155,0)] = {64,0}, + [I(156,0)] = {64,0}, + [I(157,0)] = {64,0}, + [I(158,0)] = {64,0}, + [I(159,0)] = {64,0}, + [I(160,0)] = {64,0}, + [I(161,0)] = {64,0}, + [I(162,0)] = {64,0}, + [I(163,0)] = {64,0}, + [I(164,0)] = {64,0}, + [I(165,0)] = {64,0}, + [I(166,0)] = {64,0}, + [I(167,0)] = {64,0}, + [I(168,0)] = {64,0}, + [I(169,0)] = {64,0}, + [I(170,0)] = {64,0}, + [I(171,0)] = {64,0}, + [I(172,0)] = {64,0}, + [I(173,0)] = {64,0}, + [I(174,0)] = {64,0}, + [I(175,0)] = {64,0}, + [I(176,0)] = {64,0}, + [I(177,0)] = {64,0}, + [I(178,0)] = {64,0}, + [I(179,0)] = {64,0}, + [I(180,0)] = {64,0}, + [I(181,0)] = {64,0}, + [I(182,0)] = {64,0}, + [I(183,0)] = {64,0}, + [I(184,0)] = {64,0}, + [I(185,0)] = {64,0}, + [I(186,0)] = {64,0}, + [I(187,0)] = {64,0}, + [I(188,0)] = {64,0}, + [I(189,0)] = {64,0}, + [I(190,0)] = {64,0}, + [I(191,0)] = {64,0}, + [I(192,0)] = {64,0}, + [I(193,0)] = {64,0}, + [I(194,0)] = {64,0}, + [I(195,0)] = {X32,0xFFFE3FF8}, + [I(196,0)] = {64,0}, + [I(197,0)] = {64,0}, + [I(198,0)] = {64,0}, + [I(199,0)] = {64,0}, + [I(200,0)] = {64,0}, + [I(201,0)] = {64,0}, + [I(202,0)] = {64,0}, + [I(203,0)] = {64,0}, + [I(204,0)] = {64,0}, + [I(205,0)] = {64,0}, + [I(206,0)] = {64,0}, + [I(207,0)] = {64,0}, + [I(208,0)] = {X32,0xFFFE5FF8}, + [I(209,0)] = {64,0}, + [I(210,0)] = {64,0}, + [I(211,0)] = {64,0}, + [I(212,0)] = {64,0}, + [I(213,0)] = {64,0}, + [I(214,0)] = {64,0}, + [I(215,0)] = {64,0}, + [I(216,0)] = {64,0}, + [I(217,0)] = {64,0}, + [I(218,0)] = {64,0}, + [I(219,0)] = {64,0}, + [I(220,0)] = {64,0}, + [I(221,0)] = {64,0}, + [I(222,0)] = {64,0}, + [I(223,0)] = {64,0}, + [I(224,0)] = {64,0}, + [I(225,0)] = {64,0}, + [I(226,0)] = {64,0}, + [I(227,0)] = {64,0}, + [I(228,0)] = {64,0}, + [I(229,0)] = {64,0}, + [I(230,0)] = {64,0}, + [I(231,0)] = {64,0}, + [I(232,0)] = {64,0}, + [I(233,0)] = {64,0}, + [I(234,0)] = {64,0}, + [I(235,0)] = {64,0}, + [I(236,0)] = {64,0}, + [I(237,0)] = {64,0}, + [I(238,0)] = {64,0}, + [I(239,0)] = {64,0}, + [I(240,0)] = {64,0}, + [I(241,0)] = {64,0}, + [I(242,0)] = {64,0}, + [I(243,0)] = {64,0}, + [I(244,0)] = {64,0}, + [I(245,0)] = {64,0}, + [I(246,0)] = {64,0}, + [I(247,0)] = {64,0}, + [I(248,0)] = {64,0}, + [I(249,0)] = {64,0}, + [I(250,0)] = {64,0}, + [I(251,0)] = {64,0}, + [I(252,0)] = {64,0}, + [I(253,0)] = {64,0}, + [I(254,0)] = {64,0}, + [I(255,0)] = {64,0}, + [I(0,1)] = {64,0}, + [I(1,1)] = {64,0}, + [I(2,1)] = {64,0}, + [I(3,1)] = {64,0}, + [I(4,1)] = {64,0}, + [I(5,1)] = {64,0}, + [I(6,1)] = {64,0}, + [I(7,1)] = {64,0}, + [I(8,1)] = {64,0}, + [I(9,1)] = {64,0}, + [I(10,1)] = {64,0}, + [I(11,1)] = {64,0}, + [I(12,1)] = {64,0}, + [I(13,1)] = {64,0}, + [I(14,1)] = {64,0}, + [I(15,1)] = {64,0}, + [I(16,1)] = {64,0}, + [I(17,1)] = {64,0}, + [I(18,1)] = {64,0}, + [I(19,1)] = {64,0}, + [I(20,1)] = {64,0}, + [I(21,1)] = {64,0}, + [I(22,1)] = {64,0}, + [I(23,1)] = {64,0}, + [I(24,1)] = {64,0}, + [I(25,1)] = {64,0}, + [I(26,1)] = {64,0}, + [I(27,1)] = {64,0}, + [I(28,1)] = {64,0}, + [I(29,1)] = {64,0}, + [I(30,1)] = {64,0}, + [I(31,1)] = {64,0}, + [I(32,1)] = {29,0xA7FFFD8}, + [I(33,1)] = {64,0}, + [I(34,1)] = {64,0}, + [I(35,1)] = {64,0}, + [I(36,1)] = {64,0}, + [I(37,1)] = {29,0xAFFFFD8}, + [I(38,1)] = {31,0x7C7FFFD8}, + [I(39,1)] = {64,0}, + [I(40,1)] = {64,0}, + [I(41,1)] = {64,0}, + [I(42,1)] = {31,0x7CFFFFD8}, + [I(43,1)] = {64,0}, + [I(44,1)] = {31,0x7D7FFFD8}, + [I(45,1)] = {29,0xB7FFFD8}, + [I(46,1)] = {29,0xBFFFFD8}, + [I(47,1)] = {29,0xC7FFFD8}, + [I(48,1)] = {28,0x7FFFD8}, + [I(49,1)] = {28,0xFFFFD8}, + [I(50,1)] = {28,0x17FFFD8}, + [I(51,1)] = {29,0xCFFFFD8}, + [I(52,1)] = {29,0xD7FFFD8}, + [I(53,1)] = {29,0xDFFFFD8}, + [I(54,1)] = {29,0xE7FFFD8}, + [I(55,1)] = {29,0xEFFFFD8}, + [I(56,1)] = {29,0xF7FFFD8}, + [I(57,1)] = {29,0xFFFFFD8}, + [I(58,1)] = {30,0x2E7FFFD8}, + [I(59,1)] = {31,0x7DFFFFD8}, + [I(60,1)] = {64,0}, + [I(61,1)] = {29,0x107FFFD8}, + [I(62,1)] = {64,0}, + [I(63,1)] = {64,0}, + [I(64,1)] = {64,0}, + [I(65,1)] = {29,0x10FFFFD8}, + [I(66,1)] = {30,0x2EFFFFD8}, + [I(67,1)] = {30,0x2F7FFFD8}, + [I(68,1)] = {30,0x2FFFFFD8}, + [I(69,1)] = {30,0x307FFFD8}, + [I(70,1)] = {30,0x30FFFFD8}, + [I(71,1)] = {30,0x317FFFD8}, + [I(72,1)] = {30,0x31FFFFD8}, + [I(73,1)] = {30,0x327FFFD8}, + [I(74,1)] = {30,0x32FFFFD8}, + [I(75,1)] = {30,0x337FFFD8}, + [I(76,1)] = {30,0x33FFFFD8}, + [I(77,1)] = {30,0x347FFFD8}, + [I(78,1)] = {30,0x34FFFFD8}, + [I(79,1)] = {30,0x357FFFD8}, + [I(80,1)] = {30,0x35FFFFD8}, + [I(81,1)] = {30,0x367FFFD8}, + [I(82,1)] = {30,0x36FFFFD8}, + [I(83,1)] = {30,0x377FFFD8}, + [I(84,1)] = {30,0x37FFFFD8}, + [I(85,1)] = {30,0x387FFFD8}, + [I(86,1)] = {30,0x38FFFFD8}, + [I(87,1)] = {30,0x397FFFD8}, + [I(88,1)] = {31,0x7E7FFFD8}, + [I(89,1)] = {30,0x39FFFFD8}, + [I(90,1)] = {31,0x7EFFFFD8}, + [I(91,1)] = {64,0}, + [I(92,1)] = {64,0}, + [I(93,1)] = {64,0}, + [I(94,1)] = {64,0}, + [I(95,1)] = {29,0x117FFFD8}, + [I(96,1)] = {64,0}, + [I(97,1)] = {28,0x1FFFFD8}, + [I(98,1)] = {29,0x11FFFFD8}, + [I(99,1)] = {28,0x27FFFD8}, + [I(100,1)] = {29,0x127FFFD8}, + [I(101,1)] = {28,0x2FFFFD8}, + [I(102,1)] = {29,0x12FFFFD8}, + [I(103,1)] = {29,0x137FFFD8}, + [I(104,1)] = {29,0x13FFFFD8}, + [I(105,1)] = {28,0x37FFFD8}, + [I(106,1)] = {30,0x3A7FFFD8}, + [I(107,1)] = {30,0x3AFFFFD8}, + [I(108,1)] = {29,0x147FFFD8}, + [I(109,1)] = {29,0x14FFFFD8}, + [I(110,1)] = {29,0x157FFFD8}, + [I(111,1)] = {28,0x3FFFFD8}, + [I(112,1)] = {29,0x15FFFFD8}, + [I(113,1)] = {30,0x3B7FFFD8}, + [I(114,1)] = {29,0x167FFFD8}, + [I(115,1)] = {28,0x47FFFD8}, + [I(116,1)] = {28,0x4FFFFD8}, + [I(117,1)] = {29,0x16FFFFD8}, + [I(118,1)] = {30,0x3BFFFFD8}, + [I(119,1)] = {30,0x3C7FFFD8}, + [I(120,1)] = {30,0x3CFFFFD8}, + [I(121,1)] = {30,0x3D7FFFD8}, + [I(122,1)] = {30,0x3DFFFFD8}, + [I(123,1)] = {64,0}, + [I(124,1)] = {64,0}, + [I(125,1)] = {64,0}, + [I(126,1)] = {64,0}, + [I(127,1)] = {64,0}, + [I(128,1)] = {64,0}, + [I(129,1)] = {64,0}, + [I(130,1)] = {64,0}, + [I(131,1)] = {64,0}, + [I(132,1)] = {64,0}, + [I(133,1)] = {64,0}, + [I(134,1)] = {64,0}, + [I(135,1)] = {64,0}, + [I(136,1)] = {64,0}, + [I(137,1)] = {64,0}, + [I(138,1)] = {64,0}, + [I(139,1)] = {64,0}, + [I(140,1)] = {64,0}, + [I(141,1)] = {64,0}, + [I(142,1)] = {64,0}, + [I(143,1)] = {64,0}, + [I(144,1)] = {64,0}, + [I(145,1)] = {64,0}, + [I(146,1)] = {64,0}, + [I(147,1)] = {64,0}, + [I(148,1)] = {64,0}, + [I(149,1)] = {64,0}, + [I(150,1)] = {64,0}, + [I(151,1)] = {64,0}, + [I(152,1)] = {64,0}, + [I(153,1)] = {64,0}, + [I(154,1)] = {64,0}, + [I(155,1)] = {64,0}, + [I(156,1)] = {64,0}, + [I(157,1)] = {64,0}, + [I(158,1)] = {64,0}, + [I(159,1)] = {64,0}, + [I(160,1)] = {64,0}, + [I(161,1)] = {64,0}, + [I(162,1)] = {64,0}, + [I(163,1)] = {64,0}, + [I(164,1)] = {64,0}, + [I(165,1)] = {64,0}, + [I(166,1)] = {64,0}, + [I(167,1)] = {64,0}, + [I(168,1)] = {64,0}, + [I(169,1)] = {64,0}, + [I(170,1)] = {64,0}, + [I(171,1)] = {64,0}, + [I(172,1)] = {64,0}, + [I(173,1)] = {64,0}, + [I(174,1)] = {64,0}, + [I(175,1)] = {64,0}, + [I(176,1)] = {64,0}, + [I(177,1)] = {64,0}, + [I(178,1)] = {64,0}, + [I(179,1)] = {64,0}, + [I(180,1)] = {64,0}, + [I(181,1)] = {64,0}, + [I(182,1)] = {64,0}, + [I(183,1)] = {64,0}, + [I(184,1)] = {64,0}, + [I(185,1)] = {64,0}, + [I(186,1)] = {64,0}, + [I(187,1)] = {64,0}, + [I(188,1)] = {64,0}, + [I(189,1)] = {64,0}, + [I(190,1)] = {64,0}, + [I(191,1)] = {64,0}, + [I(192,1)] = {64,0}, + [I(193,1)] = {64,0}, + [I(194,1)] = {64,0}, + [I(195,1)] = {64,0}, + [I(196,1)] = {64,0}, + [I(197,1)] = {64,0}, + [I(198,1)] = {64,0}, + [I(199,1)] = {64,0}, + [I(200,1)] = {64,0}, + [I(201,1)] = {64,0}, + [I(202,1)] = {64,0}, + [I(203,1)] = {64,0}, + [I(204,1)] = {64,0}, + [I(205,1)] = {64,0}, + [I(206,1)] = {64,0}, + [I(207,1)] = {64,0}, + [I(208,1)] = {64,0}, + [I(209,1)] = {64,0}, + [I(210,1)] = {64,0}, + [I(211,1)] = {64,0}, + [I(212,1)] = {64,0}, + [I(213,1)] = {64,0}, + [I(214,1)] = {64,0}, + [I(215,1)] = {64,0}, + [I(216,1)] = {64,0}, + [I(217,1)] = {64,0}, + [I(218,1)] = {64,0}, + [I(219,1)] = {64,0}, + [I(220,1)] = {64,0}, + [I(221,1)] = {64,0}, + [I(222,1)] = {64,0}, + [I(223,1)] = {64,0}, + [I(224,1)] = {64,0}, + [I(225,1)] = {64,0}, + [I(226,1)] = {64,0}, + [I(227,1)] = {64,0}, + [I(228,1)] = {64,0}, + [I(229,1)] = {64,0}, + [I(230,1)] = {64,0}, + [I(231,1)] = {64,0}, + [I(232,1)] = {64,0}, + [I(233,1)] = {64,0}, + [I(234,1)] = {64,0}, + [I(235,1)] = {64,0}, + [I(236,1)] = {64,0}, + [I(237,1)] = {64,0}, + [I(238,1)] = {64,0}, + [I(239,1)] = {64,0}, + [I(240,1)] = {64,0}, + [I(241,1)] = {64,0}, + [I(242,1)] = {64,0}, + [I(243,1)] = {64,0}, + [I(244,1)] = {64,0}, + [I(245,1)] = {64,0}, + [I(246,1)] = {64,0}, + [I(247,1)] = {64,0}, + [I(248,1)] = {64,0}, + [I(249,1)] = {64,0}, + [I(250,1)] = {64,0}, + [I(251,1)] = {64,0}, + [I(252,1)] = {64,0}, + [I(253,1)] = {64,0}, + [I(254,1)] = {64,0}, + [I(255,1)] = {64,0}, + [I(0,2)] = {64,0}, + [I(1,2)] = {64,0}, + [I(2,2)] = {64,0}, + [I(3,2)] = {64,0}, + [I(4,2)] = {64,0}, + [I(5,2)] = {64,0}, + [I(6,2)] = {64,0}, + [I(7,2)] = {64,0}, + [I(8,2)] = {64,0}, + [I(9,2)] = {64,0}, + [I(10,2)] = {64,0}, + [I(11,2)] = {64,0}, + [I(12,2)] = {64,0}, + [I(13,2)] = {64,0}, + [I(14,2)] = {64,0}, + [I(15,2)] = {64,0}, + [I(16,2)] = {64,0}, + [I(17,2)] = {64,0}, + [I(18,2)] = {64,0}, + [I(19,2)] = {64,0}, + [I(20,2)] = {64,0}, + [I(21,2)] = {64,0}, + [I(22,2)] = {64,0}, + [I(23,2)] = {64,0}, + [I(24,2)] = {64,0}, + [I(25,2)] = {64,0}, + [I(26,2)] = {64,0}, + [I(27,2)] = {64,0}, + [I(28,2)] = {64,0}, + [I(29,2)] = {64,0}, + [I(30,2)] = {64,0}, + [I(31,2)] = {64,0}, + [I(32,2)] = {64,0}, + [I(33,2)] = {64,0}, + [I(34,2)] = {64,0}, + [I(35,2)] = {64,0}, + [I(36,2)] = {64,0}, + [I(37,2)] = {64,0}, + [I(38,2)] = {64,0}, + [I(39,2)] = {64,0}, + [I(40,2)] = {64,0}, + [I(41,2)] = {64,0}, + [I(42,2)] = {64,0}, + [I(43,2)] = {64,0}, + [I(44,2)] = {64,0}, + [I(45,2)] = {64,0}, + [I(46,2)] = {64,0}, + [I(47,2)] = {64,0}, + [I(48,2)] = {64,0}, + [I(49,2)] = {64,0}, + [I(50,2)] = {64,0}, + [I(51,2)] = {64,0}, + [I(52,2)] = {64,0}, + [I(53,2)] = {64,0}, + [I(54,2)] = {64,0}, + [I(55,2)] = {64,0}, + [I(56,2)] = {64,0}, + [I(57,2)] = {64,0}, + [I(58,2)] = {64,0}, + [I(59,2)] = {64,0}, + [I(60,2)] = {64,0}, + [I(61,2)] = {64,0}, + [I(62,2)] = {64,0}, + [I(63,2)] = {64,0}, + [I(64,2)] = {64,0}, + [I(65,2)] = {64,0}, + [I(66,2)] = {64,0}, + [I(67,2)] = {64,0}, + [I(68,2)] = {64,0}, + [I(69,2)] = {64,0}, + [I(70,2)] = {64,0}, + [I(71,2)] = {64,0}, + [I(72,2)] = {64,0}, + [I(73,2)] = {64,0}, + [I(74,2)] = {64,0}, + [I(75,2)] = {64,0}, + [I(76,2)] = {64,0}, + [I(77,2)] = {64,0}, + [I(78,2)] = {64,0}, + [I(79,2)] = {64,0}, + [I(80,2)] = {64,0}, + [I(81,2)] = {64,0}, + [I(82,2)] = {64,0}, + [I(83,2)] = {64,0}, + [I(84,2)] = {64,0}, + [I(85,2)] = {64,0}, + [I(86,2)] = {64,0}, + [I(87,2)] = {64,0}, + [I(88,2)] = {64,0}, + [I(89,2)] = {64,0}, + [I(90,2)] = {64,0}, + [I(91,2)] = {64,0}, + [I(92,2)] = {64,0}, + [I(93,2)] = {64,0}, + [I(94,2)] = {64,0}, + [I(95,2)] = {64,0}, + [I(96,2)] = {64,0}, + [I(97,2)] = {64,0}, + [I(98,2)] = {64,0}, + [I(99,2)] = {64,0}, + [I(100,2)] = {64,0}, + [I(101,2)] = {64,0}, + [I(102,2)] = {64,0}, + [I(103,2)] = {64,0}, + [I(104,2)] = {64,0}, + [I(105,2)] = {64,0}, + [I(106,2)] = {64,0}, + [I(107,2)] = {64,0}, + [I(108,2)] = {64,0}, + [I(109,2)] = {64,0}, + [I(110,2)] = {64,0}, + [I(111,2)] = {64,0}, + [I(112,2)] = {64,0}, + [I(113,2)] = {64,0}, + [I(114,2)] = {64,0}, + [I(115,2)] = {64,0}, + [I(116,2)] = {64,0}, + [I(117,2)] = {64,0}, + [I(118,2)] = {64,0}, + [I(119,2)] = {64,0}, + [I(120,2)] = {64,0}, + [I(121,2)] = {64,0}, + [I(122,2)] = {64,0}, + [I(123,2)] = {64,0}, + [I(124,2)] = {64,0}, + [I(125,2)] = {64,0}, + [I(126,2)] = {64,0}, + [I(127,2)] = {64,0}, + [I(128,2)] = {64,0}, + [I(129,2)] = {64,0}, + [I(130,2)] = {64,0}, + [I(131,2)] = {64,0}, + [I(132,2)] = {64,0}, + [I(133,2)] = {64,0}, + [I(134,2)] = {64,0}, + [I(135,2)] = {64,0}, + [I(136,2)] = {64,0}, + [I(137,2)] = {64,0}, + [I(138,2)] = {64,0}, + [I(139,2)] = {64,0}, + [I(140,2)] = {64,0}, + [I(141,2)] = {64,0}, + [I(142,2)] = {64,0}, + [I(143,2)] = {64,0}, + [I(144,2)] = {64,0}, + [I(145,2)] = {64,0}, + [I(146,2)] = {64,0}, + [I(147,2)] = {64,0}, + [I(148,2)] = {64,0}, + [I(149,2)] = {64,0}, + [I(150,2)] = {64,0}, + [I(151,2)] = {64,0}, + [I(152,2)] = {64,0}, + [I(153,2)] = {64,0}, + [I(154,2)] = {64,0}, + [I(155,2)] = {64,0}, + [I(156,2)] = {64,0}, + [I(157,2)] = {64,0}, + [I(158,2)] = {64,0}, + [I(159,2)] = {64,0}, + [I(160,2)] = {64,0}, + [I(161,2)] = {64,0}, + [I(162,2)] = {64,0}, + [I(163,2)] = {64,0}, + [I(164,2)] = {64,0}, + [I(165,2)] = {64,0}, + [I(166,2)] = {64,0}, + [I(167,2)] = {64,0}, + [I(168,2)] = {64,0}, + [I(169,2)] = {64,0}, + [I(170,2)] = {64,0}, + [I(171,2)] = {64,0}, + [I(172,2)] = {64,0}, + [I(173,2)] = {64,0}, + [I(174,2)] = {64,0}, + [I(175,2)] = {64,0}, + [I(176,2)] = {64,0}, + [I(177,2)] = {64,0}, + [I(178,2)] = {64,0}, + [I(179,2)] = {64,0}, + [I(180,2)] = {64,0}, + [I(181,2)] = {64,0}, + [I(182,2)] = {64,0}, + [I(183,2)] = {64,0}, + [I(184,2)] = {64,0}, + [I(185,2)] = {64,0}, + [I(186,2)] = {64,0}, + [I(187,2)] = {64,0}, + [I(188,2)] = {64,0}, + [I(189,2)] = {64,0}, + [I(190,2)] = {64,0}, + [I(191,2)] = {64,0}, + [I(192,2)] = {64,0}, + [I(193,2)] = {64,0}, + [I(194,2)] = {64,0}, + [I(195,2)] = {64,0}, + [I(196,2)] = {64,0}, + [I(197,2)] = {64,0}, + [I(198,2)] = {64,0}, + [I(199,2)] = {64,0}, + [I(200,2)] = {64,0}, + [I(201,2)] = {64,0}, + [I(202,2)] = {64,0}, + [I(203,2)] = {64,0}, + [I(204,2)] = {64,0}, + [I(205,2)] = {64,0}, + [I(206,2)] = {64,0}, + [I(207,2)] = {64,0}, + [I(208,2)] = {64,0}, + [I(209,2)] = {64,0}, + [I(210,2)] = {64,0}, + [I(211,2)] = {64,0}, + [I(212,2)] = {64,0}, + [I(213,2)] = {64,0}, + [I(214,2)] = {64,0}, + [I(215,2)] = {64,0}, + [I(216,2)] = {64,0}, + [I(217,2)] = {64,0}, + [I(218,2)] = {64,0}, + [I(219,2)] = {64,0}, + [I(220,2)] = {64,0}, + [I(221,2)] = {64,0}, + [I(222,2)] = {64,0}, + [I(223,2)] = {64,0}, + [I(224,2)] = {64,0}, + [I(225,2)] = {64,0}, + [I(226,2)] = {64,0}, + [I(227,2)] = {64,0}, + [I(228,2)] = {64,0}, + [I(229,2)] = {64,0}, + [I(230,2)] = {64,0}, + [I(231,2)] = {64,0}, + [I(232,2)] = {64,0}, + [I(233,2)] = {64,0}, + [I(234,2)] = {64,0}, + [I(235,2)] = {64,0}, + [I(236,2)] = {64,0}, + [I(237,2)] = {64,0}, + [I(238,2)] = {64,0}, + [I(239,2)] = {64,0}, + [I(240,2)] = {64,0}, + [I(241,2)] = {64,0}, + [I(242,2)] = {64,0}, + [I(243,2)] = {64,0}, + [I(244,2)] = {64,0}, + [I(245,2)] = {64,0}, + [I(246,2)] = {64,0}, + [I(247,2)] = {64,0}, + [I(248,2)] = {64,0}, + [I(249,2)] = {64,0}, + [I(250,2)] = {64,0}, + [I(251,2)] = {64,0}, + [I(252,2)] = {64,0}, + [I(253,2)] = {64,0}, + [I(254,2)] = {64,0}, + [I(255,2)] = {64,0}, + [I(0,3)] = {64,0}, + [I(1,3)] = {64,0}, + [I(2,3)] = {64,0}, + [I(3,3)] = {64,0}, + [I(4,3)] = {64,0}, + [I(5,3)] = {64,0}, + [I(6,3)] = {64,0}, + [I(7,3)] = {64,0}, + [I(8,3)] = {64,0}, + [I(9,3)] = {64,0}, + [I(10,3)] = {64,0}, + [I(11,3)] = {64,0}, + [I(12,3)] = {64,0}, + [I(13,3)] = {64,0}, + [I(14,3)] = {64,0}, + [I(15,3)] = {64,0}, + [I(16,3)] = {64,0}, + [I(17,3)] = {64,0}, + [I(18,3)] = {64,0}, + [I(19,3)] = {64,0}, + [I(20,3)] = {64,0}, + [I(21,3)] = {64,0}, + [I(22,3)] = {64,0}, + [I(23,3)] = {64,0}, + [I(24,3)] = {64,0}, + [I(25,3)] = {64,0}, + [I(26,3)] = {64,0}, + [I(27,3)] = {64,0}, + [I(28,3)] = {64,0}, + [I(29,3)] = {64,0}, + [I(30,3)] = {64,0}, + [I(31,3)] = {64,0}, + [I(32,3)] = {64,0}, + [I(33,3)] = {64,0}, + [I(34,3)] = {64,0}, + [I(35,3)] = {64,0}, + [I(36,3)] = {64,0}, + [I(37,3)] = {64,0}, + [I(38,3)] = {64,0}, + [I(39,3)] = {64,0}, + [I(40,3)] = {64,0}, + [I(41,3)] = {64,0}, + [I(42,3)] = {64,0}, + [I(43,3)] = {64,0}, + [I(44,3)] = {64,0}, + [I(45,3)] = {64,0}, + [I(46,3)] = {64,0}, + [I(47,3)] = {64,0}, + [I(48,3)] = {64,0}, + [I(49,3)] = {64,0}, + [I(50,3)] = {64,0}, + [I(51,3)] = {64,0}, + [I(52,3)] = {64,0}, + [I(53,3)] = {64,0}, + [I(54,3)] = {64,0}, + [I(55,3)] = {64,0}, + [I(56,3)] = {64,0}, + [I(57,3)] = {64,0}, + [I(58,3)] = {64,0}, + [I(59,3)] = {64,0}, + [I(60,3)] = {64,0}, + [I(61,3)] = {64,0}, + [I(62,3)] = {64,0}, + [I(63,3)] = {64,0}, + [I(64,3)] = {64,0}, + [I(65,3)] = {64,0}, + [I(66,3)] = {64,0}, + [I(67,3)] = {64,0}, + [I(68,3)] = {64,0}, + [I(69,3)] = {64,0}, + [I(70,3)] = {64,0}, + [I(71,3)] = {64,0}, + [I(72,3)] = {64,0}, + [I(73,3)] = {64,0}, + [I(74,3)] = {64,0}, + [I(75,3)] = {64,0}, + [I(76,3)] = {64,0}, + [I(77,3)] = {64,0}, + [I(78,3)] = {64,0}, + [I(79,3)] = {64,0}, + [I(80,3)] = {64,0}, + [I(81,3)] = {64,0}, + [I(82,3)] = {64,0}, + [I(83,3)] = {64,0}, + [I(84,3)] = {64,0}, + [I(85,3)] = {64,0}, + [I(86,3)] = {64,0}, + [I(87,3)] = {64,0}, + [I(88,3)] = {64,0}, + [I(89,3)] = {64,0}, + [I(90,3)] = {64,0}, + [I(91,3)] = {64,0}, + [I(92,3)] = {64,0}, + [I(93,3)] = {64,0}, + [I(94,3)] = {64,0}, + [I(95,3)] = {64,0}, + [I(96,3)] = {64,0}, + [I(97,3)] = {64,0}, + [I(98,3)] = {64,0}, + [I(99,3)] = {64,0}, + [I(100,3)] = {64,0}, + [I(101,3)] = {64,0}, + [I(102,3)] = {64,0}, + [I(103,3)] = {64,0}, + [I(104,3)] = {64,0}, + [I(105,3)] = {64,0}, + [I(106,3)] = {64,0}, + [I(107,3)] = {64,0}, + [I(108,3)] = {64,0}, + [I(109,3)] = {64,0}, + [I(110,3)] = {64,0}, + [I(111,3)] = {64,0}, + [I(112,3)] = {64,0}, + [I(113,3)] = {64,0}, + [I(114,3)] = {64,0}, + [I(115,3)] = {64,0}, + [I(116,3)] = {64,0}, + [I(117,3)] = {64,0}, + [I(118,3)] = {64,0}, + [I(119,3)] = {64,0}, + [I(120,3)] = {64,0}, + [I(121,3)] = {64,0}, + [I(122,3)] = {64,0}, + [I(123,3)] = {64,0}, + [I(124,3)] = {64,0}, + [I(125,3)] = {64,0}, + [I(126,3)] = {64,0}, + [I(127,3)] = {64,0}, + [I(128,3)] = {64,0}, + [I(129,3)] = {64,0}, + [I(130,3)] = {64,0}, + [I(131,3)] = {64,0}, + [I(132,3)] = {64,0}, + [I(133,3)] = {64,0}, + [I(134,3)] = {64,0}, + [I(135,3)] = {64,0}, + [I(136,3)] = {64,0}, + [I(137,3)] = {64,0}, + [I(138,3)] = {64,0}, + [I(139,3)] = {64,0}, + [I(140,3)] = {64,0}, + [I(141,3)] = {64,0}, + [I(142,3)] = {64,0}, + [I(143,3)] = {64,0}, + [I(144,3)] = {64,0}, + [I(145,3)] = {64,0}, + [I(146,3)] = {64,0}, + [I(147,3)] = {64,0}, + [I(148,3)] = {64,0}, + [I(149,3)] = {64,0}, + [I(150,3)] = {64,0}, + [I(151,3)] = {64,0}, + [I(152,3)] = {64,0}, + [I(153,3)] = {64,0}, + [I(154,3)] = {64,0}, + [I(155,3)] = {64,0}, + [I(156,3)] = {64,0}, + [I(157,3)] = {64,0}, + [I(158,3)] = {64,0}, + [I(159,3)] = {64,0}, + [I(160,3)] = {64,0}, + [I(161,3)] = {64,0}, + [I(162,3)] = {64,0}, + [I(163,3)] = {64,0}, + [I(164,3)] = {64,0}, + [I(165,3)] = {64,0}, + [I(166,3)] = {64,0}, + [I(167,3)] = {64,0}, + [I(168,3)] = {64,0}, + [I(169,3)] = {64,0}, + [I(170,3)] = {64,0}, + [I(171,3)] = {64,0}, + [I(172,3)] = {64,0}, + [I(173,3)] = {64,0}, + [I(174,3)] = {64,0}, + [I(175,3)] = {64,0}, + [I(176,3)] = {64,0}, + [I(177,3)] = {64,0}, + [I(178,3)] = {64,0}, + [I(179,3)] = {64,0}, + [I(180,3)] = {64,0}, + [I(181,3)] = {64,0}, + [I(182,3)] = {64,0}, + [I(183,3)] = {64,0}, + [I(184,3)] = {64,0}, + [I(185,3)] = {64,0}, + [I(186,3)] = {64,0}, + [I(187,3)] = {64,0}, + [I(188,3)] = {64,0}, + [I(189,3)] = {64,0}, + [I(190,3)] = {64,0}, + [I(191,3)] = {64,0}, + [I(192,3)] = {64,0}, + [I(193,3)] = {64,0}, + [I(194,3)] = {64,0}, + [I(195,3)] = {64,0}, + [I(196,3)] = {64,0}, + [I(197,3)] = {64,0}, + [I(198,3)] = {64,0}, + [I(199,3)] = {64,0}, + [I(200,3)] = {64,0}, + [I(201,3)] = {64,0}, + [I(202,3)] = {64,0}, + [I(203,3)] = {64,0}, + [I(204,3)] = {64,0}, + [I(205,3)] = {64,0}, + [I(206,3)] = {64,0}, + [I(207,3)] = {64,0}, + [I(208,3)] = {64,0}, + [I(209,3)] = {64,0}, + [I(210,3)] = {64,0}, + [I(211,3)] = {64,0}, + [I(212,3)] = {64,0}, + [I(213,3)] = {64,0}, + [I(214,3)] = {64,0}, + [I(215,3)] = {64,0}, + [I(216,3)] = {64,0}, + [I(217,3)] = {64,0}, + [I(218,3)] = {64,0}, + [I(219,3)] = {64,0}, + [I(220,3)] = {64,0}, + [I(221,3)] = {64,0}, + [I(222,3)] = {64,0}, + [I(223,3)] = {64,0}, + [I(224,3)] = {64,0}, + [I(225,3)] = {64,0}, + [I(226,3)] = {64,0}, + [I(227,3)] = {64,0}, + [I(228,3)] = {64,0}, + [I(229,3)] = {64,0}, + [I(230,3)] = {64,0}, + [I(231,3)] = {64,0}, + [I(232,3)] = {64,0}, + [I(233,3)] = {64,0}, + [I(234,3)] = {64,0}, + [I(235,3)] = {64,0}, + [I(236,3)] = {64,0}, + [I(237,3)] = {64,0}, + [I(238,3)] = {64,0}, + [I(239,3)] = {64,0}, + [I(240,3)] = {64,0}, + [I(241,3)] = {64,0}, + [I(242,3)] = {64,0}, + [I(243,3)] = {64,0}, + [I(244,3)] = {64,0}, + [I(245,3)] = {64,0}, + [I(246,3)] = {64,0}, + [I(247,3)] = {64,0}, + [I(248,3)] = {64,0}, + [I(249,3)] = {64,0}, + [I(250,3)] = {64,0}, + [I(251,3)] = {64,0}, + [I(252,3)] = {64,0}, + [I(253,3)] = {64,0}, + [I(254,3)] = {64,0}, + [I(255,3)] = {64,0}, + [I(0,4)] = {64,0}, + [I(1,4)] = {64,0}, + [I(2,4)] = {64,0}, + [I(3,4)] = {64,0}, + [I(4,4)] = {64,0}, + [I(5,4)] = {64,0}, + [I(6,4)] = {64,0}, + [I(7,4)] = {64,0}, + [I(8,4)] = {64,0}, + [I(9,4)] = {64,0}, + [I(10,4)] = {64,0}, + [I(11,4)] = {64,0}, + [I(12,4)] = {64,0}, + [I(13,4)] = {64,0}, + [I(14,4)] = {64,0}, + [I(15,4)] = {64,0}, + [I(16,4)] = {64,0}, + [I(17,4)] = {64,0}, + [I(18,4)] = {64,0}, + [I(19,4)] = {64,0}, + [I(20,4)] = {64,0}, + [I(21,4)] = {64,0}, + [I(22,4)] = {64,0}, + [I(23,4)] = {64,0}, + [I(24,4)] = {64,0}, + [I(25,4)] = {64,0}, + [I(26,4)] = {64,0}, + [I(27,4)] = {64,0}, + [I(28,4)] = {64,0}, + [I(29,4)] = {64,0}, + [I(30,4)] = {64,0}, + [I(31,4)] = {64,0}, + [I(32,4)] = {64,0}, + [I(33,4)] = {64,0}, + [I(34,4)] = {64,0}, + [I(35,4)] = {64,0}, + [I(36,4)] = {64,0}, + [I(37,4)] = {64,0}, + [I(38,4)] = {64,0}, + [I(39,4)] = {64,0}, + [I(40,4)] = {64,0}, + [I(41,4)] = {64,0}, + [I(42,4)] = {64,0}, + [I(43,4)] = {64,0}, + [I(44,4)] = {64,0}, + [I(45,4)] = {64,0}, + [I(46,4)] = {64,0}, + [I(47,4)] = {64,0}, + [I(48,4)] = {64,0}, + [I(49,4)] = {64,0}, + [I(50,4)] = {64,0}, + [I(51,4)] = {64,0}, + [I(52,4)] = {64,0}, + [I(53,4)] = {64,0}, + [I(54,4)] = {64,0}, + [I(55,4)] = {64,0}, + [I(56,4)] = {64,0}, + [I(57,4)] = {64,0}, + [I(58,4)] = {64,0}, + [I(59,4)] = {64,0}, + [I(60,4)] = {64,0}, + [I(61,4)] = {64,0}, + [I(62,4)] = {64,0}, + [I(63,4)] = {64,0}, + [I(64,4)] = {64,0}, + [I(65,4)] = {64,0}, + [I(66,4)] = {64,0}, + [I(67,4)] = {64,0}, + [I(68,4)] = {64,0}, + [I(69,4)] = {64,0}, + [I(70,4)] = {64,0}, + [I(71,4)] = {64,0}, + [I(72,4)] = {64,0}, + [I(73,4)] = {64,0}, + [I(74,4)] = {64,0}, + [I(75,4)] = {64,0}, + [I(76,4)] = {64,0}, + [I(77,4)] = {64,0}, + [I(78,4)] = {64,0}, + [I(79,4)] = {64,0}, + [I(80,4)] = {64,0}, + [I(81,4)] = {64,0}, + [I(82,4)] = {64,0}, + [I(83,4)] = {64,0}, + [I(84,4)] = {64,0}, + [I(85,4)] = {64,0}, + [I(86,4)] = {64,0}, + [I(87,4)] = {64,0}, + [I(88,4)] = {64,0}, + [I(89,4)] = {64,0}, + [I(90,4)] = {64,0}, + [I(91,4)] = {64,0}, + [I(92,4)] = {64,0}, + [I(93,4)] = {64,0}, + [I(94,4)] = {64,0}, + [I(95,4)] = {64,0}, + [I(96,4)] = {64,0}, + [I(97,4)] = {64,0}, + [I(98,4)] = {64,0}, + [I(99,4)] = {64,0}, + [I(100,4)] = {64,0}, + [I(101,4)] = {64,0}, + [I(102,4)] = {64,0}, + [I(103,4)] = {64,0}, + [I(104,4)] = {64,0}, + [I(105,4)] = {64,0}, + [I(106,4)] = {64,0}, + [I(107,4)] = {64,0}, + [I(108,4)] = {64,0}, + [I(109,4)] = {64,0}, + [I(110,4)] = {64,0}, + [I(111,4)] = {64,0}, + [I(112,4)] = {64,0}, + [I(113,4)] = {64,0}, + [I(114,4)] = {64,0}, + [I(115,4)] = {64,0}, + [I(116,4)] = {64,0}, + [I(117,4)] = {64,0}, + [I(118,4)] = {64,0}, + [I(119,4)] = {64,0}, + [I(120,4)] = {64,0}, + [I(121,4)] = {64,0}, + [I(122,4)] = {64,0}, + [I(123,4)] = {64,0}, + [I(124,4)] = {64,0}, + [I(125,4)] = {64,0}, + [I(126,4)] = {64,0}, + [I(127,4)] = {64,0}, + [I(128,4)] = {64,0}, + [I(129,4)] = {64,0}, + [I(130,4)] = {64,0}, + [I(131,4)] = {64,0}, + [I(132,4)] = {64,0}, + [I(133,4)] = {64,0}, + [I(134,4)] = {64,0}, + [I(135,4)] = {64,0}, + [I(136,4)] = {64,0}, + [I(137,4)] = {64,0}, + [I(138,4)] = {64,0}, + [I(139,4)] = {64,0}, + [I(140,4)] = {64,0}, + [I(141,4)] = {64,0}, + [I(142,4)] = {64,0}, + [I(143,4)] = {64,0}, + [I(144,4)] = {64,0}, + [I(145,4)] = {64,0}, + [I(146,4)] = {64,0}, + [I(147,4)] = {64,0}, + [I(148,4)] = {64,0}, + [I(149,4)] = {64,0}, + [I(150,4)] = {64,0}, + [I(151,4)] = {64,0}, + [I(152,4)] = {64,0}, + [I(153,4)] = {64,0}, + [I(154,4)] = {64,0}, + [I(155,4)] = {64,0}, + [I(156,4)] = {64,0}, + [I(157,4)] = {64,0}, + [I(158,4)] = {64,0}, + [I(159,4)] = {64,0}, + [I(160,4)] = {64,0}, + [I(161,4)] = {64,0}, + [I(162,4)] = {64,0}, + [I(163,4)] = {64,0}, + [I(164,4)] = {64,0}, + [I(165,4)] = {64,0}, + [I(166,4)] = {64,0}, + [I(167,4)] = {64,0}, + [I(168,4)] = {64,0}, + [I(169,4)] = {64,0}, + [I(170,4)] = {64,0}, + [I(171,4)] = {64,0}, + [I(172,4)] = {64,0}, + [I(173,4)] = {64,0}, + [I(174,4)] = {64,0}, + [I(175,4)] = {64,0}, + [I(176,4)] = {64,0}, + [I(177,4)] = {64,0}, + [I(178,4)] = {64,0}, + [I(179,4)] = {64,0}, + [I(180,4)] = {64,0}, + [I(181,4)] = {64,0}, + [I(182,4)] = {64,0}, + [I(183,4)] = {64,0}, + [I(184,4)] = {64,0}, + [I(185,4)] = {64,0}, + [I(186,4)] = {64,0}, + [I(187,4)] = {64,0}, + [I(188,4)] = {64,0}, + [I(189,4)] = {64,0}, + [I(190,4)] = {64,0}, + [I(191,4)] = {64,0}, + [I(192,4)] = {64,0}, + [I(193,4)] = {64,0}, + [I(194,4)] = {64,0}, + [I(195,4)] = {64,0}, + [I(196,4)] = {64,0}, + [I(197,4)] = {64,0}, + [I(198,4)] = {64,0}, + [I(199,4)] = {64,0}, + [I(200,4)] = {64,0}, + [I(201,4)] = {64,0}, + [I(202,4)] = {64,0}, + [I(203,4)] = {64,0}, + [I(204,4)] = {64,0}, + [I(205,4)] = {64,0}, + [I(206,4)] = {64,0}, + [I(207,4)] = {64,0}, + [I(208,4)] = {64,0}, + [I(209,4)] = {64,0}, + [I(210,4)] = {64,0}, + [I(211,4)] = {64,0}, + [I(212,4)] = {64,0}, + [I(213,4)] = {64,0}, + [I(214,4)] = {64,0}, + [I(215,4)] = {64,0}, + [I(216,4)] = {64,0}, + [I(217,4)] = {64,0}, + [I(218,4)] = {64,0}, + [I(219,4)] = {64,0}, + [I(220,4)] = {64,0}, + [I(221,4)] = {64,0}, + [I(222,4)] = {64,0}, + [I(223,4)] = {64,0}, + [I(224,4)] = {64,0}, + [I(225,4)] = {64,0}, + [I(226,4)] = {64,0}, + [I(227,4)] = {64,0}, + [I(228,4)] = {64,0}, + [I(229,4)] = {64,0}, + [I(230,4)] = {64,0}, + [I(231,4)] = {64,0}, + [I(232,4)] = {64,0}, + [I(233,4)] = {64,0}, + [I(234,4)] = {64,0}, + [I(235,4)] = {64,0}, + [I(236,4)] = {64,0}, + [I(237,4)] = {64,0}, + [I(238,4)] = {64,0}, + [I(239,4)] = {64,0}, + [I(240,4)] = {64,0}, + [I(241,4)] = {64,0}, + [I(242,4)] = {64,0}, + [I(243,4)] = {64,0}, + [I(244,4)] = {64,0}, + [I(245,4)] = {64,0}, + [I(246,4)] = {64,0}, + [I(247,4)] = {64,0}, + [I(248,4)] = {64,0}, + [I(249,4)] = {64,0}, + [I(250,4)] = {64,0}, + [I(251,4)] = {64,0}, + [I(252,4)] = {64,0}, + [I(253,4)] = {64,0}, + [I(254,4)] = {64,0}, + [I(255,4)] = {64,0}, + [I(0,5)] = {64,0}, + [I(1,5)] = {64,0}, + [I(2,5)] = {64,0}, + [I(3,5)] = {64,0}, + [I(4,5)] = {64,0}, + [I(5,5)] = {64,0}, + [I(6,5)] = {64,0}, + [I(7,5)] = {64,0}, + [I(8,5)] = {64,0}, + [I(9,5)] = {64,0}, + [I(10,5)] = {64,0}, + [I(11,5)] = {64,0}, + [I(12,5)] = {64,0}, + [I(13,5)] = {64,0}, + [I(14,5)] = {64,0}, + [I(15,5)] = {64,0}, + [I(16,5)] = {64,0}, + [I(17,5)] = {64,0}, + [I(18,5)] = {64,0}, + [I(19,5)] = {64,0}, + [I(20,5)] = {64,0}, + [I(21,5)] = {64,0}, + [I(22,5)] = {64,0}, + [I(23,5)] = {64,0}, + [I(24,5)] = {64,0}, + [I(25,5)] = {64,0}, + [I(26,5)] = {64,0}, + [I(27,5)] = {64,0}, + [I(28,5)] = {64,0}, + [I(29,5)] = {64,0}, + [I(30,5)] = {64,0}, + [I(31,5)] = {64,0}, + [I(32,5)] = {64,0}, + [I(33,5)] = {64,0}, + [I(34,5)] = {64,0}, + [I(35,5)] = {64,0}, + [I(36,5)] = {64,0}, + [I(37,5)] = {64,0}, + [I(38,5)] = {64,0}, + [I(39,5)] = {64,0}, + [I(40,5)] = {64,0}, + [I(41,5)] = {64,0}, + [I(42,5)] = {64,0}, + [I(43,5)] = {64,0}, + [I(44,5)] = {64,0}, + [I(45,5)] = {64,0}, + [I(46,5)] = {64,0}, + [I(47,5)] = {64,0}, + [I(48,5)] = {64,0}, + [I(49,5)] = {64,0}, + [I(50,5)] = {64,0}, + [I(51,5)] = {64,0}, + [I(52,5)] = {64,0}, + [I(53,5)] = {64,0}, + [I(54,5)] = {64,0}, + [I(55,5)] = {64,0}, + [I(56,5)] = {64,0}, + [I(57,5)] = {64,0}, + [I(58,5)] = {64,0}, + [I(59,5)] = {64,0}, + [I(60,5)] = {64,0}, + [I(61,5)] = {64,0}, + [I(62,5)] = {64,0}, + [I(63,5)] = {64,0}, + [I(64,5)] = {64,0}, + [I(65,5)] = {64,0}, + [I(66,5)] = {64,0}, + [I(67,5)] = {64,0}, + [I(68,5)] = {64,0}, + [I(69,5)] = {64,0}, + [I(70,5)] = {64,0}, + [I(71,5)] = {64,0}, + [I(72,5)] = {64,0}, + [I(73,5)] = {64,0}, + [I(74,5)] = {64,0}, + [I(75,5)] = {64,0}, + [I(76,5)] = {64,0}, + [I(77,5)] = {64,0}, + [I(78,5)] = {64,0}, + [I(79,5)] = {64,0}, + [I(80,5)] = {64,0}, + [I(81,5)] = {64,0}, + [I(82,5)] = {64,0}, + [I(83,5)] = {64,0}, + [I(84,5)] = {64,0}, + [I(85,5)] = {64,0}, + [I(86,5)] = {64,0}, + [I(87,5)] = {64,0}, + [I(88,5)] = {64,0}, + [I(89,5)] = {64,0}, + [I(90,5)] = {64,0}, + [I(91,5)] = {64,0}, + [I(92,5)] = {64,0}, + [I(93,5)] = {64,0}, + [I(94,5)] = {64,0}, + [I(95,5)] = {64,0}, + [I(96,5)] = {64,0}, + [I(97,5)] = {64,0}, + [I(98,5)] = {64,0}, + [I(99,5)] = {64,0}, + [I(100,5)] = {64,0}, + [I(101,5)] = {64,0}, + [I(102,5)] = {64,0}, + [I(103,5)] = {64,0}, + [I(104,5)] = {64,0}, + [I(105,5)] = {64,0}, + [I(106,5)] = {64,0}, + [I(107,5)] = {64,0}, + [I(108,5)] = {64,0}, + [I(109,5)] = {64,0}, + [I(110,5)] = {64,0}, + [I(111,5)] = {64,0}, + [I(112,5)] = {64,0}, + [I(113,5)] = {64,0}, + [I(114,5)] = {64,0}, + [I(115,5)] = {64,0}, + [I(116,5)] = {64,0}, + [I(117,5)] = {64,0}, + [I(118,5)] = {64,0}, + [I(119,5)] = {64,0}, + [I(120,5)] = {64,0}, + [I(121,5)] = {64,0}, + [I(122,5)] = {64,0}, + [I(123,5)] = {64,0}, + [I(124,5)] = {64,0}, + [I(125,5)] = {64,0}, + [I(126,5)] = {64,0}, + [I(127,5)] = {64,0}, + [I(128,5)] = {64,0}, + [I(129,5)] = {64,0}, + [I(130,5)] = {64,0}, + [I(131,5)] = {64,0}, + [I(132,5)] = {64,0}, + [I(133,5)] = {64,0}, + [I(134,5)] = {64,0}, + [I(135,5)] = {64,0}, + [I(136,5)] = {64,0}, + [I(137,5)] = {64,0}, + [I(138,5)] = {64,0}, + [I(139,5)] = {64,0}, + [I(140,5)] = {64,0}, + [I(141,5)] = {64,0}, + [I(142,5)] = {64,0}, + [I(143,5)] = {64,0}, + [I(144,5)] = {64,0}, + [I(145,5)] = {64,0}, + [I(146,5)] = {64,0}, + [I(147,5)] = {64,0}, + [I(148,5)] = {64,0}, + [I(149,5)] = {64,0}, + [I(150,5)] = {64,0}, + [I(151,5)] = {64,0}, + [I(152,5)] = {64,0}, + [I(153,5)] = {64,0}, + [I(154,5)] = {64,0}, + [I(155,5)] = {64,0}, + [I(156,5)] = {64,0}, + [I(157,5)] = {64,0}, + [I(158,5)] = {64,0}, + [I(159,5)] = {64,0}, + [I(160,5)] = {64,0}, + [I(161,5)] = {64,0}, + [I(162,5)] = {64,0}, + [I(163,5)] = {64,0}, + [I(164,5)] = {64,0}, + [I(165,5)] = {64,0}, + [I(166,5)] = {64,0}, + [I(167,5)] = {64,0}, + [I(168,5)] = {64,0}, + [I(169,5)] = {64,0}, + [I(170,5)] = {64,0}, + [I(171,5)] = {64,0}, + [I(172,5)] = {64,0}, + [I(173,5)] = {64,0}, + [I(174,5)] = {64,0}, + [I(175,5)] = {64,0}, + [I(176,5)] = {64,0}, + [I(177,5)] = {64,0}, + [I(178,5)] = {64,0}, + [I(179,5)] = {64,0}, + [I(180,5)] = {64,0}, + [I(181,5)] = {64,0}, + [I(182,5)] = {64,0}, + [I(183,5)] = {64,0}, + [I(184,5)] = {64,0}, + [I(185,5)] = {64,0}, + [I(186,5)] = {64,0}, + [I(187,5)] = {64,0}, + [I(188,5)] = {64,0}, + [I(189,5)] = {64,0}, + [I(190,5)] = {64,0}, + [I(191,5)] = {64,0}, + [I(192,5)] = {64,0}, + [I(193,5)] = {64,0}, + [I(194,5)] = {64,0}, + [I(195,5)] = {64,0}, + [I(196,5)] = {64,0}, + [I(197,5)] = {64,0}, + [I(198,5)] = {64,0}, + [I(199,5)] = {64,0}, + [I(200,5)] = {64,0}, + [I(201,5)] = {64,0}, + [I(202,5)] = {64,0}, + [I(203,5)] = {64,0}, + [I(204,5)] = {64,0}, + [I(205,5)] = {64,0}, + [I(206,5)] = {64,0}, + [I(207,5)] = {64,0}, + [I(208,5)] = {64,0}, + [I(209,5)] = {64,0}, + [I(210,5)] = {64,0}, + [I(211,5)] = {64,0}, + [I(212,5)] = {64,0}, + [I(213,5)] = {64,0}, + [I(214,5)] = {64,0}, + [I(215,5)] = {64,0}, + [I(216,5)] = {64,0}, + [I(217,5)] = {64,0}, + [I(218,5)] = {64,0}, + [I(219,5)] = {64,0}, + [I(220,5)] = {64,0}, + [I(221,5)] = {64,0}, + [I(222,5)] = {64,0}, + [I(223,5)] = {64,0}, + [I(224,5)] = {64,0}, + [I(225,5)] = {64,0}, + [I(226,5)] = {64,0}, + [I(227,5)] = {64,0}, + [I(228,5)] = {64,0}, + [I(229,5)] = {64,0}, + [I(230,5)] = {64,0}, + [I(231,5)] = {64,0}, + [I(232,5)] = {64,0}, + [I(233,5)] = {64,0}, + [I(234,5)] = {64,0}, + [I(235,5)] = {64,0}, + [I(236,5)] = {64,0}, + [I(237,5)] = {64,0}, + [I(238,5)] = {64,0}, + [I(239,5)] = {64,0}, + [I(240,5)] = {64,0}, + [I(241,5)] = {64,0}, + [I(242,5)] = {64,0}, + [I(243,5)] = {64,0}, + [I(244,5)] = {64,0}, + [I(245,5)] = {64,0}, + [I(246,5)] = {64,0}, + [I(247,5)] = {64,0}, + [I(248,5)] = {64,0}, + [I(249,5)] = {64,0}, + [I(250,5)] = {64,0}, + [I(251,5)] = {64,0}, + [I(252,5)] = {64,0}, + [I(253,5)] = {64,0}, + [I(254,5)] = {64,0}, + [I(255,5)] = {64,0}, + [I(0,6)] = {64,0}, + [I(1,6)] = {64,0}, + [I(2,6)] = {64,0}, + [I(3,6)] = {64,0}, + [I(4,6)] = {64,0}, + [I(5,6)] = {64,0}, + [I(6,6)] = {64,0}, + [I(7,6)] = {64,0}, + [I(8,6)] = {64,0}, + [I(9,6)] = {64,0}, + [I(10,6)] = {64,0}, + [I(11,6)] = {64,0}, + [I(12,6)] = {64,0}, + [I(13,6)] = {64,0}, + [I(14,6)] = {64,0}, + [I(15,6)] = {64,0}, + [I(16,6)] = {64,0}, + [I(17,6)] = {64,0}, + [I(18,6)] = {64,0}, + [I(19,6)] = {64,0}, + [I(20,6)] = {64,0}, + [I(21,6)] = {64,0}, + [I(22,6)] = {64,0}, + [I(23,6)] = {64,0}, + [I(24,6)] = {64,0}, + [I(25,6)] = {64,0}, + [I(26,6)] = {64,0}, + [I(27,6)] = {64,0}, + [I(28,6)] = {64,0}, + [I(29,6)] = {64,0}, + [I(30,6)] = {64,0}, + [I(31,6)] = {64,0}, + [I(32,6)] = {64,0}, + [I(33,6)] = {64,0}, + [I(34,6)] = {64,0}, + [I(35,6)] = {64,0}, + [I(36,6)] = {64,0}, + [I(37,6)] = {64,0}, + [I(38,6)] = {64,0}, + [I(39,6)] = {64,0}, + [I(40,6)] = {64,0}, + [I(41,6)] = {64,0}, + [I(42,6)] = {64,0}, + [I(43,6)] = {64,0}, + [I(44,6)] = {64,0}, + [I(45,6)] = {64,0}, + [I(46,6)] = {64,0}, + [I(47,6)] = {64,0}, + [I(48,6)] = {64,0}, + [I(49,6)] = {64,0}, + [I(50,6)] = {64,0}, + [I(51,6)] = {64,0}, + [I(52,6)] = {64,0}, + [I(53,6)] = {64,0}, + [I(54,6)] = {64,0}, + [I(55,6)] = {64,0}, + [I(56,6)] = {64,0}, + [I(57,6)] = {64,0}, + [I(58,6)] = {64,0}, + [I(59,6)] = {64,0}, + [I(60,6)] = {64,0}, + [I(61,6)] = {64,0}, + [I(62,6)] = {64,0}, + [I(63,6)] = {64,0}, + [I(64,6)] = {64,0}, + [I(65,6)] = {64,0}, + [I(66,6)] = {64,0}, + [I(67,6)] = {64,0}, + [I(68,6)] = {64,0}, + [I(69,6)] = {64,0}, + [I(70,6)] = {64,0}, + [I(71,6)] = {64,0}, + [I(72,6)] = {64,0}, + [I(73,6)] = {64,0}, + [I(74,6)] = {64,0}, + [I(75,6)] = {64,0}, + [I(76,6)] = {64,0}, + [I(77,6)] = {64,0}, + [I(78,6)] = {64,0}, + [I(79,6)] = {64,0}, + [I(80,6)] = {64,0}, + [I(81,6)] = {64,0}, + [I(82,6)] = {64,0}, + [I(83,6)] = {64,0}, + [I(84,6)] = {64,0}, + [I(85,6)] = {64,0}, + [I(86,6)] = {64,0}, + [I(87,6)] = {64,0}, + [I(88,6)] = {64,0}, + [I(89,6)] = {64,0}, + [I(90,6)] = {64,0}, + [I(91,6)] = {64,0}, + [I(92,6)] = {64,0}, + [I(93,6)] = {64,0}, + [I(94,6)] = {64,0}, + [I(95,6)] = {64,0}, + [I(96,6)] = {64,0}, + [I(97,6)] = {64,0}, + [I(98,6)] = {64,0}, + [I(99,6)] = {64,0}, + [I(100,6)] = {64,0}, + [I(101,6)] = {64,0}, + [I(102,6)] = {64,0}, + [I(103,6)] = {64,0}, + [I(104,6)] = {64,0}, + [I(105,6)] = {64,0}, + [I(106,6)] = {64,0}, + [I(107,6)] = {64,0}, + [I(108,6)] = {64,0}, + [I(109,6)] = {64,0}, + [I(110,6)] = {64,0}, + [I(111,6)] = {64,0}, + [I(112,6)] = {64,0}, + [I(113,6)] = {64,0}, + [I(114,6)] = {64,0}, + [I(115,6)] = {64,0}, + [I(116,6)] = {64,0}, + [I(117,6)] = {64,0}, + [I(118,6)] = {64,0}, + [I(119,6)] = {64,0}, + [I(120,6)] = {64,0}, + [I(121,6)] = {64,0}, + [I(122,6)] = {64,0}, + [I(123,6)] = {64,0}, + [I(124,6)] = {64,0}, + [I(125,6)] = {64,0}, + [I(126,6)] = {64,0}, + [I(127,6)] = {64,0}, + [I(128,6)] = {64,0}, + [I(129,6)] = {64,0}, + [I(130,6)] = {64,0}, + [I(131,6)] = {64,0}, + [I(132,6)] = {64,0}, + [I(133,6)] = {64,0}, + [I(134,6)] = {64,0}, + [I(135,6)] = {64,0}, + [I(136,6)] = {64,0}, + [I(137,6)] = {64,0}, + [I(138,6)] = {64,0}, + [I(139,6)] = {64,0}, + [I(140,6)] = {64,0}, + [I(141,6)] = {64,0}, + [I(142,6)] = {64,0}, + [I(143,6)] = {64,0}, + [I(144,6)] = {64,0}, + [I(145,6)] = {64,0}, + [I(146,6)] = {64,0}, + [I(147,6)] = {64,0}, + [I(148,6)] = {64,0}, + [I(149,6)] = {64,0}, + [I(150,6)] = {64,0}, + [I(151,6)] = {64,0}, + [I(152,6)] = {64,0}, + [I(153,6)] = {64,0}, + [I(154,6)] = {64,0}, + [I(155,6)] = {64,0}, + [I(156,6)] = {64,0}, + [I(157,6)] = {64,0}, + [I(158,6)] = {64,0}, + [I(159,6)] = {64,0}, + [I(160,6)] = {64,0}, + [I(161,6)] = {64,0}, + [I(162,6)] = {64,0}, + [I(163,6)] = {64,0}, + [I(164,6)] = {64,0}, + [I(165,6)] = {64,0}, + [I(166,6)] = {64,0}, + [I(167,6)] = {64,0}, + [I(168,6)] = {64,0}, + [I(169,6)] = {64,0}, + [I(170,6)] = {64,0}, + [I(171,6)] = {64,0}, + [I(172,6)] = {64,0}, + [I(173,6)] = {64,0}, + [I(174,6)] = {64,0}, + [I(175,6)] = {64,0}, + [I(176,6)] = {64,0}, + [I(177,6)] = {64,0}, + [I(178,6)] = {64,0}, + [I(179,6)] = {64,0}, + [I(180,6)] = {64,0}, + [I(181,6)] = {64,0}, + [I(182,6)] = {64,0}, + [I(183,6)] = {64,0}, + [I(184,6)] = {64,0}, + [I(185,6)] = {64,0}, + [I(186,6)] = {64,0}, + [I(187,6)] = {64,0}, + [I(188,6)] = {64,0}, + [I(189,6)] = {64,0}, + [I(190,6)] = {64,0}, + [I(191,6)] = {64,0}, + [I(192,6)] = {64,0}, + [I(193,6)] = {64,0}, + [I(194,6)] = {64,0}, + [I(195,6)] = {64,0}, + [I(196,6)] = {64,0}, + [I(197,6)] = {64,0}, + [I(198,6)] = {64,0}, + [I(199,6)] = {64,0}, + [I(200,6)] = {64,0}, + [I(201,6)] = {64,0}, + [I(202,6)] = {64,0}, + [I(203,6)] = {64,0}, + [I(204,6)] = {64,0}, + [I(205,6)] = {64,0}, + [I(206,6)] = {64,0}, + [I(207,6)] = {64,0}, + [I(208,6)] = {64,0}, + [I(209,6)] = {64,0}, + [I(210,6)] = {64,0}, + [I(211,6)] = {64,0}, + [I(212,6)] = {64,0}, + [I(213,6)] = {64,0}, + [I(214,6)] = {64,0}, + [I(215,6)] = {64,0}, + [I(216,6)] = {64,0}, + [I(217,6)] = {64,0}, + [I(218,6)] = {64,0}, + [I(219,6)] = {64,0}, + [I(220,6)] = {64,0}, + [I(221,6)] = {64,0}, + [I(222,6)] = {64,0}, + [I(223,6)] = {64,0}, + [I(224,6)] = {64,0}, + [I(225,6)] = {64,0}, + [I(226,6)] = {64,0}, + [I(227,6)] = {64,0}, + [I(228,6)] = {64,0}, + [I(229,6)] = {64,0}, + [I(230,6)] = {64,0}, + [I(231,6)] = {64,0}, + [I(232,6)] = {64,0}, + [I(233,6)] = {64,0}, + [I(234,6)] = {64,0}, + [I(235,6)] = {64,0}, + [I(236,6)] = {64,0}, + [I(237,6)] = {64,0}, + [I(238,6)] = {64,0}, + [I(239,6)] = {64,0}, + [I(240,6)] = {64,0}, + [I(241,6)] = {64,0}, + [I(242,6)] = {64,0}, + [I(243,6)] = {64,0}, + [I(244,6)] = {64,0}, + [I(245,6)] = {64,0}, + [I(246,6)] = {64,0}, + [I(247,6)] = {64,0}, + [I(248,6)] = {64,0}, + [I(249,6)] = {64,0}, + [I(250,6)] = {64,0}, + [I(251,6)] = {64,0}, + [I(252,6)] = {64,0}, + [I(253,6)] = {64,0}, + [I(254,6)] = {64,0}, + [I(255,6)] = {64,0}, + [I(0,7)] = {64,0}, + [I(1,7)] = {64,0}, + [I(2,7)] = {64,0}, + [I(3,7)] = {64,0}, + [I(4,7)] = {64,0}, + [I(5,7)] = {64,0}, + [I(6,7)] = {64,0}, + [I(7,7)] = {64,0}, + [I(8,7)] = {64,0}, + [I(9,7)] = {64,0}, + [I(10,7)] = {64,0}, + [I(11,7)] = {64,0}, + [I(12,7)] = {64,0}, + [I(13,7)] = {64,0}, + [I(14,7)] = {64,0}, + [I(15,7)] = {64,0}, + [I(16,7)] = {64,0}, + [I(17,7)] = {64,0}, + [I(18,7)] = {64,0}, + [I(19,7)] = {64,0}, + [I(20,7)] = {64,0}, + [I(21,7)] = {64,0}, + [I(22,7)] = {64,0}, + [I(23,7)] = {64,0}, + [I(24,7)] = {64,0}, + [I(25,7)] = {64,0}, + [I(26,7)] = {64,0}, + [I(27,7)] = {64,0}, + [I(28,7)] = {64,0}, + [I(29,7)] = {64,0}, + [I(30,7)] = {64,0}, + [I(31,7)] = {64,0}, + [I(32,7)] = {64,0}, + [I(33,7)] = {64,0}, + [I(34,7)] = {64,0}, + [I(35,7)] = {64,0}, + [I(36,7)] = {64,0}, + [I(37,7)] = {64,0}, + [I(38,7)] = {64,0}, + [I(39,7)] = {64,0}, + [I(40,7)] = {64,0}, + [I(41,7)] = {64,0}, + [I(42,7)] = {64,0}, + [I(43,7)] = {64,0}, + [I(44,7)] = {64,0}, + [I(45,7)] = {64,0}, + [I(46,7)] = {64,0}, + [I(47,7)] = {64,0}, + [I(48,7)] = {64,0}, + [I(49,7)] = {64,0}, + [I(50,7)] = {64,0}, + [I(51,7)] = {64,0}, + [I(52,7)] = {64,0}, + [I(53,7)] = {64,0}, + [I(54,7)] = {64,0}, + [I(55,7)] = {64,0}, + [I(56,7)] = {64,0}, + [I(57,7)] = {64,0}, + [I(58,7)] = {64,0}, + [I(59,7)] = {64,0}, + [I(60,7)] = {64,0}, + [I(61,7)] = {64,0}, + [I(62,7)] = {64,0}, + [I(63,7)] = {64,0}, + [I(64,7)] = {64,0}, + [I(65,7)] = {64,0}, + [I(66,7)] = {64,0}, + [I(67,7)] = {64,0}, + [I(68,7)] = {64,0}, + [I(69,7)] = {64,0}, + [I(70,7)] = {64,0}, + [I(71,7)] = {64,0}, + [I(72,7)] = {64,0}, + [I(73,7)] = {64,0}, + [I(74,7)] = {64,0}, + [I(75,7)] = {64,0}, + [I(76,7)] = {64,0}, + [I(77,7)] = {64,0}, + [I(78,7)] = {64,0}, + [I(79,7)] = {64,0}, + [I(80,7)] = {64,0}, + [I(81,7)] = {64,0}, + [I(82,7)] = {64,0}, + [I(83,7)] = {64,0}, + [I(84,7)] = {64,0}, + [I(85,7)] = {64,0}, + [I(86,7)] = {64,0}, + [I(87,7)] = {64,0}, + [I(88,7)] = {64,0}, + [I(89,7)] = {64,0}, + [I(90,7)] = {64,0}, + [I(91,7)] = {64,0}, + [I(92,7)] = {64,0}, + [I(93,7)] = {64,0}, + [I(94,7)] = {64,0}, + [I(95,7)] = {64,0}, + [I(96,7)] = {64,0}, + [I(97,7)] = {64,0}, + [I(98,7)] = {64,0}, + [I(99,7)] = {64,0}, + [I(100,7)] = {64,0}, + [I(101,7)] = {64,0}, + [I(102,7)] = {64,0}, + [I(103,7)] = {64,0}, + [I(104,7)] = {64,0}, + [I(105,7)] = {64,0}, + [I(106,7)] = {64,0}, + [I(107,7)] = {64,0}, + [I(108,7)] = {64,0}, + [I(109,7)] = {64,0}, + [I(110,7)] = {64,0}, + [I(111,7)] = {64,0}, + [I(112,7)] = {64,0}, + [I(113,7)] = {64,0}, + [I(114,7)] = {64,0}, + [I(115,7)] = {64,0}, + [I(116,7)] = {64,0}, + [I(117,7)] = {64,0}, + [I(118,7)] = {64,0}, + [I(119,7)] = {64,0}, + [I(120,7)] = {64,0}, + [I(121,7)] = {64,0}, + [I(122,7)] = {64,0}, + [I(123,7)] = {64,0}, + [I(124,7)] = {64,0}, + [I(125,7)] = {64,0}, + [I(126,7)] = {64,0}, + [I(127,7)] = {64,0}, + [I(128,7)] = {64,0}, + [I(129,7)] = {64,0}, + [I(130,7)] = {64,0}, + [I(131,7)] = {64,0}, + [I(132,7)] = {64,0}, + [I(133,7)] = {64,0}, + [I(134,7)] = {64,0}, + [I(135,7)] = {64,0}, + [I(136,7)] = {64,0}, + [I(137,7)] = {64,0}, + [I(138,7)] = {64,0}, + [I(139,7)] = {64,0}, + [I(140,7)] = {64,0}, + [I(141,7)] = {64,0}, + [I(142,7)] = {64,0}, + [I(143,7)] = {64,0}, + [I(144,7)] = {64,0}, + [I(145,7)] = {64,0}, + [I(146,7)] = {64,0}, + [I(147,7)] = {64,0}, + [I(148,7)] = {64,0}, + [I(149,7)] = {64,0}, + [I(150,7)] = {64,0}, + [I(151,7)] = {64,0}, + [I(152,7)] = {64,0}, + [I(153,7)] = {64,0}, + [I(154,7)] = {64,0}, + [I(155,7)] = {64,0}, + [I(156,7)] = {64,0}, + [I(157,7)] = {64,0}, + [I(158,7)] = {64,0}, + [I(159,7)] = {64,0}, + [I(160,7)] = {64,0}, + [I(161,7)] = {64,0}, + [I(162,7)] = {64,0}, + [I(163,7)] = {64,0}, + [I(164,7)] = {64,0}, + [I(165,7)] = {64,0}, + [I(166,7)] = {64,0}, + [I(167,7)] = {64,0}, + [I(168,7)] = {64,0}, + [I(169,7)] = {64,0}, + [I(170,7)] = {64,0}, + [I(171,7)] = {64,0}, + [I(172,7)] = {64,0}, + [I(173,7)] = {64,0}, + [I(174,7)] = {64,0}, + [I(175,7)] = {64,0}, + [I(176,7)] = {64,0}, + [I(177,7)] = {64,0}, + [I(178,7)] = {64,0}, + [I(179,7)] = {64,0}, + [I(180,7)] = {64,0}, + [I(181,7)] = {64,0}, + [I(182,7)] = {64,0}, + [I(183,7)] = {64,0}, + [I(184,7)] = {64,0}, + [I(185,7)] = {64,0}, + [I(186,7)] = {64,0}, + [I(187,7)] = {64,0}, + [I(188,7)] = {64,0}, + [I(189,7)] = {64,0}, + [I(190,7)] = {64,0}, + [I(191,7)] = {64,0}, + [I(192,7)] = {64,0}, + [I(193,7)] = {64,0}, + [I(194,7)] = {64,0}, + [I(195,7)] = {64,0}, + [I(196,7)] = {64,0}, + [I(197,7)] = {64,0}, + [I(198,7)] = {64,0}, + [I(199,7)] = {64,0}, + [I(200,7)] = {64,0}, + [I(201,7)] = {64,0}, + [I(202,7)] = {64,0}, + [I(203,7)] = {64,0}, + [I(204,7)] = {64,0}, + [I(205,7)] = {64,0}, + [I(206,7)] = {64,0}, + [I(207,7)] = {64,0}, + [I(208,7)] = {64,0}, + [I(209,7)] = {64,0}, + [I(210,7)] = {64,0}, + [I(211,7)] = {64,0}, + [I(212,7)] = {64,0}, + [I(213,7)] = {64,0}, + [I(214,7)] = {64,0}, + [I(215,7)] = {64,0}, + [I(216,7)] = {64,0}, + [I(217,7)] = {64,0}, + [I(218,7)] = {64,0}, + [I(219,7)] = {64,0}, + [I(220,7)] = {64,0}, + [I(221,7)] = {64,0}, + [I(222,7)] = {64,0}, + [I(223,7)] = {64,0}, + [I(224,7)] = {64,0}, + [I(225,7)] = {64,0}, + [I(226,7)] = {64,0}, + [I(227,7)] = {64,0}, + [I(228,7)] = {64,0}, + [I(229,7)] = {64,0}, + [I(230,7)] = {64,0}, + [I(231,7)] = {64,0}, + [I(232,7)] = {64,0}, + [I(233,7)] = {64,0}, + [I(234,7)] = {64,0}, + [I(235,7)] = {64,0}, + [I(236,7)] = {64,0}, + [I(237,7)] = {64,0}, + [I(238,7)] = {64,0}, + [I(239,7)] = {64,0}, + [I(240,7)] = {64,0}, + [I(241,7)] = {64,0}, + [I(242,7)] = {64,0}, + [I(243,7)] = {64,0}, + [I(244,7)] = {64,0}, + [I(245,7)] = {64,0}, + [I(246,7)] = {64,0}, + [I(247,7)] = {64,0}, + [I(248,7)] = {64,0}, + [I(249,7)] = {64,0}, + [I(250,7)] = {64,0}, + [I(251,7)] = {64,0}, + [I(252,7)] = {64,0}, + [I(253,7)] = {64,0}, + [I(254,7)] = {64,0}, + [I(255,7)] = {64,0}, + [I(0,8)] = {64,0}, + [I(1,8)] = {64,0}, + [I(2,8)] = {64,0}, + [I(3,8)] = {64,0}, + [I(4,8)] = {64,0}, + [I(5,8)] = {64,0}, + [I(6,8)] = {64,0}, + [I(7,8)] = {64,0}, + [I(8,8)] = {64,0}, + [I(9,8)] = {64,0}, + [I(10,8)] = {64,0}, + [I(11,8)] = {64,0}, + [I(12,8)] = {64,0}, + [I(13,8)] = {64,0}, + [I(14,8)] = {64,0}, + [I(15,8)] = {64,0}, + [I(16,8)] = {64,0}, + [I(17,8)] = {64,0}, + [I(18,8)] = {64,0}, + [I(19,8)] = {64,0}, + [I(20,8)] = {64,0}, + [I(21,8)] = {64,0}, + [I(22,8)] = {64,0}, + [I(23,8)] = {64,0}, + [I(24,8)] = {64,0}, + [I(25,8)] = {64,0}, + [I(26,8)] = {64,0}, + [I(27,8)] = {64,0}, + [I(28,8)] = {64,0}, + [I(29,8)] = {64,0}, + [I(30,8)] = {64,0}, + [I(31,8)] = {64,0}, + [I(32,8)] = {64,0}, + [I(33,8)] = {64,0}, + [I(34,8)] = {64,0}, + [I(35,8)] = {64,0}, + [I(36,8)] = {64,0}, + [I(37,8)] = {64,0}, + [I(38,8)] = {64,0}, + [I(39,8)] = {64,0}, + [I(40,8)] = {64,0}, + [I(41,8)] = {64,0}, + [I(42,8)] = {64,0}, + [I(43,8)] = {64,0}, + [I(44,8)] = {64,0}, + [I(45,8)] = {64,0}, + [I(46,8)] = {64,0}, + [I(47,8)] = {64,0}, + [I(48,8)] = {64,0}, + [I(49,8)] = {64,0}, + [I(50,8)] = {64,0}, + [I(51,8)] = {64,0}, + [I(52,8)] = {64,0}, + [I(53,8)] = {64,0}, + [I(54,8)] = {64,0}, + [I(55,8)] = {64,0}, + [I(56,8)] = {64,0}, + [I(57,8)] = {64,0}, + [I(58,8)] = {64,0}, + [I(59,8)] = {64,0}, + [I(60,8)] = {64,0}, + [I(61,8)] = {64,0}, + [I(62,8)] = {64,0}, + [I(63,8)] = {64,0}, + [I(64,8)] = {64,0}, + [I(65,8)] = {64,0}, + [I(66,8)] = {64,0}, + [I(67,8)] = {64,0}, + [I(68,8)] = {64,0}, + [I(69,8)] = {64,0}, + [I(70,8)] = {64,0}, + [I(71,8)] = {64,0}, + [I(72,8)] = {64,0}, + [I(73,8)] = {64,0}, + [I(74,8)] = {64,0}, + [I(75,8)] = {64,0}, + [I(76,8)] = {64,0}, + [I(77,8)] = {64,0}, + [I(78,8)] = {64,0}, + [I(79,8)] = {64,0}, + [I(80,8)] = {64,0}, + [I(81,8)] = {64,0}, + [I(82,8)] = {64,0}, + [I(83,8)] = {64,0}, + [I(84,8)] = {64,0}, + [I(85,8)] = {64,0}, + [I(86,8)] = {64,0}, + [I(87,8)] = {64,0}, + [I(88,8)] = {64,0}, + [I(89,8)] = {64,0}, + [I(90,8)] = {64,0}, + [I(91,8)] = {64,0}, + [I(92,8)] = {64,0}, + [I(93,8)] = {64,0}, + [I(94,8)] = {64,0}, + [I(95,8)] = {64,0}, + [I(96,8)] = {64,0}, + [I(97,8)] = {64,0}, + [I(98,8)] = {64,0}, + [I(99,8)] = {64,0}, + [I(100,8)] = {64,0}, + [I(101,8)] = {64,0}, + [I(102,8)] = {64,0}, + [I(103,8)] = {64,0}, + [I(104,8)] = {64,0}, + [I(105,8)] = {64,0}, + [I(106,8)] = {64,0}, + [I(107,8)] = {64,0}, + [I(108,8)] = {64,0}, + [I(109,8)] = {64,0}, + [I(110,8)] = {64,0}, + [I(111,8)] = {64,0}, + [I(112,8)] = {64,0}, + [I(113,8)] = {64,0}, + [I(114,8)] = {64,0}, + [I(115,8)] = {64,0}, + [I(116,8)] = {64,0}, + [I(117,8)] = {64,0}, + [I(118,8)] = {64,0}, + [I(119,8)] = {64,0}, + [I(120,8)] = {64,0}, + [I(121,8)] = {64,0}, + [I(122,8)] = {64,0}, + [I(123,8)] = {64,0}, + [I(124,8)] = {64,0}, + [I(125,8)] = {64,0}, + [I(126,8)] = {64,0}, + [I(127,8)] = {64,0}, + [I(128,8)] = {64,0}, + [I(129,8)] = {64,0}, + [I(130,8)] = {64,0}, + [I(131,8)] = {64,0}, + [I(132,8)] = {64,0}, + [I(133,8)] = {64,0}, + [I(134,8)] = {64,0}, + [I(135,8)] = {64,0}, + [I(136,8)] = {64,0}, + [I(137,8)] = {64,0}, + [I(138,8)] = {64,0}, + [I(139,8)] = {64,0}, + [I(140,8)] = {64,0}, + [I(141,8)] = {64,0}, + [I(142,8)] = {64,0}, + [I(143,8)] = {64,0}, + [I(144,8)] = {64,0}, + [I(145,8)] = {64,0}, + [I(146,8)] = {64,0}, + [I(147,8)] = {64,0}, + [I(148,8)] = {64,0}, + [I(149,8)] = {64,0}, + [I(150,8)] = {64,0}, + [I(151,8)] = {64,0}, + [I(152,8)] = {64,0}, + [I(153,8)] = {64,0}, + [I(154,8)] = {64,0}, + [I(155,8)] = {64,0}, + [I(156,8)] = {64,0}, + [I(157,8)] = {64,0}, + [I(158,8)] = {64,0}, + [I(159,8)] = {64,0}, + [I(160,8)] = {64,0}, + [I(161,8)] = {64,0}, + [I(162,8)] = {64,0}, + [I(163,8)] = {64,0}, + [I(164,8)] = {64,0}, + [I(165,8)] = {64,0}, + [I(166,8)] = {64,0}, + [I(167,8)] = {64,0}, + [I(168,8)] = {64,0}, + [I(169,8)] = {64,0}, + [I(170,8)] = {64,0}, + [I(171,8)] = {64,0}, + [I(172,8)] = {64,0}, + [I(173,8)] = {64,0}, + [I(174,8)] = {64,0}, + [I(175,8)] = {64,0}, + [I(176,8)] = {64,0}, + [I(177,8)] = {64,0}, + [I(178,8)] = {64,0}, + [I(179,8)] = {64,0}, + [I(180,8)] = {64,0}, + [I(181,8)] = {64,0}, + [I(182,8)] = {64,0}, + [I(183,8)] = {64,0}, + [I(184,8)] = {64,0}, + [I(185,8)] = {64,0}, + [I(186,8)] = {64,0}, + [I(187,8)] = {64,0}, + [I(188,8)] = {64,0}, + [I(189,8)] = {64,0}, + [I(190,8)] = {64,0}, + [I(191,8)] = {64,0}, + [I(192,8)] = {64,0}, + [I(193,8)] = {64,0}, + [I(194,8)] = {64,0}, + [I(195,8)] = {64,0}, + [I(196,8)] = {64,0}, + [I(197,8)] = {64,0}, + [I(198,8)] = {64,0}, + [I(199,8)] = {64,0}, + [I(200,8)] = {64,0}, + [I(201,8)] = {64,0}, + [I(202,8)] = {64,0}, + [I(203,8)] = {64,0}, + [I(204,8)] = {64,0}, + [I(205,8)] = {64,0}, + [I(206,8)] = {64,0}, + [I(207,8)] = {64,0}, + [I(208,8)] = {64,0}, + [I(209,8)] = {64,0}, + [I(210,8)] = {64,0}, + [I(211,8)] = {64,0}, + [I(212,8)] = {64,0}, + [I(213,8)] = {64,0}, + [I(214,8)] = {64,0}, + [I(215,8)] = {64,0}, + [I(216,8)] = {64,0}, + [I(217,8)] = {64,0}, + [I(218,8)] = {64,0}, + [I(219,8)] = {64,0}, + [I(220,8)] = {64,0}, + [I(221,8)] = {64,0}, + [I(222,8)] = {64,0}, + [I(223,8)] = {64,0}, + [I(224,8)] = {64,0}, + [I(225,8)] = {64,0}, + [I(226,8)] = {64,0}, + [I(227,8)] = {64,0}, + [I(228,8)] = {64,0}, + [I(229,8)] = {64,0}, + [I(230,8)] = {64,0}, + [I(231,8)] = {64,0}, + [I(232,8)] = {64,0}, + [I(233,8)] = {64,0}, + [I(234,8)] = {64,0}, + [I(235,8)] = {64,0}, + [I(236,8)] = {64,0}, + [I(237,8)] = {64,0}, + [I(238,8)] = {64,0}, + [I(239,8)] = {64,0}, + [I(240,8)] = {64,0}, + [I(241,8)] = {64,0}, + [I(242,8)] = {64,0}, + [I(243,8)] = {64,0}, + [I(244,8)] = {64,0}, + [I(245,8)] = {64,0}, + [I(246,8)] = {64,0}, + [I(247,8)] = {64,0}, + [I(248,8)] = {64,0}, + [I(249,8)] = {64,0}, + [I(250,8)] = {64,0}, + [I(251,8)] = {64,0}, + [I(252,8)] = {64,0}, + [I(253,8)] = {64,0}, + [I(254,8)] = {64,0}, + [I(255,8)] = {64,0}, + [I(0,9)] = {64,0}, + [I(1,9)] = {64,0}, + [I(2,9)] = {64,0}, + [I(3,9)] = {64,0}, + [I(4,9)] = {64,0}, + [I(5,9)] = {64,0}, + [I(6,9)] = {64,0}, + [I(7,9)] = {64,0}, + [I(8,9)] = {64,0}, + [I(9,9)] = {64,0}, + [I(10,9)] = {64,0}, + [I(11,9)] = {64,0}, + [I(12,9)] = {64,0}, + [I(13,9)] = {64,0}, + [I(14,9)] = {64,0}, + [I(15,9)] = {64,0}, + [I(16,9)] = {64,0}, + [I(17,9)] = {64,0}, + [I(18,9)] = {64,0}, + [I(19,9)] = {64,0}, + [I(20,9)] = {64,0}, + [I(21,9)] = {64,0}, + [I(22,9)] = {64,0}, + [I(23,9)] = {64,0}, + [I(24,9)] = {64,0}, + [I(25,9)] = {64,0}, + [I(26,9)] = {64,0}, + [I(27,9)] = {64,0}, + [I(28,9)] = {64,0}, + [I(29,9)] = {64,0}, + [I(30,9)] = {64,0}, + [I(31,9)] = {64,0}, + [I(32,9)] = {30,0x14FFFFEA}, + [I(33,9)] = {64,0}, + [I(34,9)] = {64,0}, + [I(35,9)] = {64,0}, + [I(36,9)] = {64,0}, + [I(37,9)] = {30,0x15FFFFEA}, + [I(38,9)] = {X32,0xF8FFFFEA}, + [I(39,9)] = {64,0}, + [I(40,9)] = {64,0}, + [I(41,9)] = {64,0}, + [I(42,9)] = {X32,0xF9FFFFEA}, + [I(43,9)] = {64,0}, + [I(44,9)] = {X32,0xFAFFFFEA}, + [I(45,9)] = {30,0x16FFFFEA}, + [I(46,9)] = {30,0x17FFFFEA}, + [I(47,9)] = {30,0x18FFFFEA}, + [I(48,9)] = {29,0xFFFFEA}, + [I(49,9)] = {29,0x1FFFFEA}, + [I(50,9)] = {29,0x2FFFFEA}, + [I(51,9)] = {30,0x19FFFFEA}, + [I(52,9)] = {30,0x1AFFFFEA}, + [I(53,9)] = {30,0x1BFFFFEA}, + [I(54,9)] = {30,0x1CFFFFEA}, + [I(55,9)] = {30,0x1DFFFFEA}, + [I(56,9)] = {30,0x1EFFFFEA}, + [I(57,9)] = {30,0x1FFFFFEA}, + [I(58,9)] = {31,0x5CFFFFEA}, + [I(59,9)] = {X32,0xFBFFFFEA}, + [I(60,9)] = {64,0}, + [I(61,9)] = {30,0x20FFFFEA}, + [I(62,9)] = {64,0}, + [I(63,9)] = {64,0}, + [I(64,9)] = {64,0}, + [I(65,9)] = {30,0x21FFFFEA}, + [I(66,9)] = {31,0x5DFFFFEA}, + [I(67,9)] = {31,0x5EFFFFEA}, + [I(68,9)] = {31,0x5FFFFFEA}, + [I(69,9)] = {31,0x60FFFFEA}, + [I(70,9)] = {31,0x61FFFFEA}, + [I(71,9)] = {31,0x62FFFFEA}, + [I(72,9)] = {31,0x63FFFFEA}, + [I(73,9)] = {31,0x64FFFFEA}, + [I(74,9)] = {31,0x65FFFFEA}, + [I(75,9)] = {31,0x66FFFFEA}, + [I(76,9)] = {31,0x67FFFFEA}, + [I(77,9)] = {31,0x68FFFFEA}, + [I(78,9)] = {31,0x69FFFFEA}, + [I(79,9)] = {31,0x6AFFFFEA}, + [I(80,9)] = {31,0x6BFFFFEA}, + [I(81,9)] = {31,0x6CFFFFEA}, + [I(82,9)] = {31,0x6DFFFFEA}, + [I(83,9)] = {31,0x6EFFFFEA}, + [I(84,9)] = {31,0x6FFFFFEA}, + [I(85,9)] = {31,0x70FFFFEA}, + [I(86,9)] = {31,0x71FFFFEA}, + [I(87,9)] = {31,0x72FFFFEA}, + [I(88,9)] = {X32,0xFCFFFFEA}, + [I(89,9)] = {31,0x73FFFFEA}, + [I(90,9)] = {X32,0xFDFFFFEA}, + [I(91,9)] = {64,0}, + [I(92,9)] = {64,0}, + [I(93,9)] = {64,0}, + [I(94,9)] = {64,0}, + [I(95,9)] = {30,0x22FFFFEA}, + [I(96,9)] = {64,0}, + [I(97,9)] = {29,0x3FFFFEA}, + [I(98,9)] = {30,0x23FFFFEA}, + [I(99,9)] = {29,0x4FFFFEA}, + [I(100,9)] = {30,0x24FFFFEA}, + [I(101,9)] = {29,0x5FFFFEA}, + [I(102,9)] = {30,0x25FFFFEA}, + [I(103,9)] = {30,0x26FFFFEA}, + [I(104,9)] = {30,0x27FFFFEA}, + [I(105,9)] = {29,0x6FFFFEA}, + [I(106,9)] = {31,0x74FFFFEA}, + [I(107,9)] = {31,0x75FFFFEA}, + [I(108,9)] = {30,0x28FFFFEA}, + [I(109,9)] = {30,0x29FFFFEA}, + [I(110,9)] = {30,0x2AFFFFEA}, + [I(111,9)] = {29,0x7FFFFEA}, + [I(112,9)] = {30,0x2BFFFFEA}, + [I(113,9)] = {31,0x76FFFFEA}, + [I(114,9)] = {30,0x2CFFFFEA}, + [I(115,9)] = {29,0x8FFFFEA}, + [I(116,9)] = {29,0x9FFFFEA}, + [I(117,9)] = {30,0x2DFFFFEA}, + [I(118,9)] = {31,0x77FFFFEA}, + [I(119,9)] = {31,0x78FFFFEA}, + [I(120,9)] = {31,0x79FFFFEA}, + [I(121,9)] = {31,0x7AFFFFEA}, + [I(122,9)] = {31,0x7BFFFFEA}, + [I(123,9)] = {64,0}, + [I(124,9)] = {64,0}, + [I(125,9)] = {64,0}, + [I(126,9)] = {64,0}, + [I(127,9)] = {64,0}, + [I(128,9)] = {64,0}, + [I(129,9)] = {64,0}, + [I(130,9)] = {64,0}, + [I(131,9)] = {64,0}, + [I(132,9)] = {64,0}, + [I(133,9)] = {64,0}, + [I(134,9)] = {64,0}, + [I(135,9)] = {64,0}, + [I(136,9)] = {64,0}, + [I(137,9)] = {64,0}, + [I(138,9)] = {64,0}, + [I(139,9)] = {64,0}, + [I(140,9)] = {64,0}, + [I(141,9)] = {64,0}, + [I(142,9)] = {64,0}, + [I(143,9)] = {64,0}, + [I(144,9)] = {64,0}, + [I(145,9)] = {64,0}, + [I(146,9)] = {64,0}, + [I(147,9)] = {64,0}, + [I(148,9)] = {64,0}, + [I(149,9)] = {64,0}, + [I(150,9)] = {64,0}, + [I(151,9)] = {64,0}, + [I(152,9)] = {64,0}, + [I(153,9)] = {64,0}, + [I(154,9)] = {64,0}, + [I(155,9)] = {64,0}, + [I(156,9)] = {64,0}, + [I(157,9)] = {64,0}, + [I(158,9)] = {64,0}, + [I(159,9)] = {64,0}, + [I(160,9)] = {64,0}, + [I(161,9)] = {64,0}, + [I(162,9)] = {64,0}, + [I(163,9)] = {64,0}, + [I(164,9)] = {64,0}, + [I(165,9)] = {64,0}, + [I(166,9)] = {64,0}, + [I(167,9)] = {64,0}, + [I(168,9)] = {64,0}, + [I(169,9)] = {64,0}, + [I(170,9)] = {64,0}, + [I(171,9)] = {64,0}, + [I(172,9)] = {64,0}, + [I(173,9)] = {64,0}, + [I(174,9)] = {64,0}, + [I(175,9)] = {64,0}, + [I(176,9)] = {64,0}, + [I(177,9)] = {64,0}, + [I(178,9)] = {64,0}, + [I(179,9)] = {64,0}, + [I(180,9)] = {64,0}, + [I(181,9)] = {64,0}, + [I(182,9)] = {64,0}, + [I(183,9)] = {64,0}, + [I(184,9)] = {64,0}, + [I(185,9)] = {64,0}, + [I(186,9)] = {64,0}, + [I(187,9)] = {64,0}, + [I(188,9)] = {64,0}, + [I(189,9)] = {64,0}, + [I(190,9)] = {64,0}, + [I(191,9)] = {64,0}, + [I(192,9)] = {64,0}, + [I(193,9)] = {64,0}, + [I(194,9)] = {64,0}, + [I(195,9)] = {64,0}, + [I(196,9)] = {64,0}, + [I(197,9)] = {64,0}, + [I(198,9)] = {64,0}, + [I(199,9)] = {64,0}, + [I(200,9)] = {64,0}, + [I(201,9)] = {64,0}, + [I(202,9)] = {64,0}, + [I(203,9)] = {64,0}, + [I(204,9)] = {64,0}, + [I(205,9)] = {64,0}, + [I(206,9)] = {64,0}, + [I(207,9)] = {64,0}, + [I(208,9)] = {64,0}, + [I(209,9)] = {64,0}, + [I(210,9)] = {64,0}, + [I(211,9)] = {64,0}, + [I(212,9)] = {64,0}, + [I(213,9)] = {64,0}, + [I(214,9)] = {64,0}, + [I(215,9)] = {64,0}, + [I(216,9)] = {64,0}, + [I(217,9)] = {64,0}, + [I(218,9)] = {64,0}, + [I(219,9)] = {64,0}, + [I(220,9)] = {64,0}, + [I(221,9)] = {64,0}, + [I(222,9)] = {64,0}, + [I(223,9)] = {64,0}, + [I(224,9)] = {64,0}, + [I(225,9)] = {64,0}, + [I(226,9)] = {64,0}, + [I(227,9)] = {64,0}, + [I(228,9)] = {64,0}, + [I(229,9)] = {64,0}, + [I(230,9)] = {64,0}, + [I(231,9)] = {64,0}, + [I(232,9)] = {64,0}, + [I(233,9)] = {64,0}, + [I(234,9)] = {64,0}, + [I(235,9)] = {64,0}, + [I(236,9)] = {64,0}, + [I(237,9)] = {64,0}, + [I(238,9)] = {64,0}, + [I(239,9)] = {64,0}, + [I(240,9)] = {64,0}, + [I(241,9)] = {64,0}, + [I(242,9)] = {64,0}, + [I(243,9)] = {64,0}, + [I(244,9)] = {64,0}, + [I(245,9)] = {64,0}, + [I(246,9)] = {64,0}, + [I(247,9)] = {64,0}, + [I(248,9)] = {64,0}, + [I(249,9)] = {64,0}, + [I(250,9)] = {64,0}, + [I(251,9)] = {64,0}, + [I(252,9)] = {64,0}, + [I(253,9)] = {64,0}, + [I(254,9)] = {64,0}, + [I(255,9)] = {64,0}, + [I(0,10)] = {64,0}, + [I(1,10)] = {64,0}, + [I(2,10)] = {64,0}, + [I(3,10)] = {64,0}, + [I(4,10)] = {64,0}, + [I(5,10)] = {64,0}, + [I(6,10)] = {64,0}, + [I(7,10)] = {64,0}, + [I(8,10)] = {64,0}, + [I(9,10)] = {64,0}, + [I(10,10)] = {64,0}, + [I(11,10)] = {64,0}, + [I(12,10)] = {64,0}, + [I(13,10)] = {64,0}, + [I(14,10)] = {64,0}, + [I(15,10)] = {64,0}, + [I(16,10)] = {64,0}, + [I(17,10)] = {64,0}, + [I(18,10)] = {64,0}, + [I(19,10)] = {64,0}, + [I(20,10)] = {64,0}, + [I(21,10)] = {64,0}, + [I(22,10)] = {64,0}, + [I(23,10)] = {64,0}, + [I(24,10)] = {64,0}, + [I(25,10)] = {64,0}, + [I(26,10)] = {64,0}, + [I(27,10)] = {64,0}, + [I(28,10)] = {64,0}, + [I(29,10)] = {64,0}, + [I(30,10)] = {64,0}, + [I(31,10)] = {64,0}, + [I(32,10)] = {64,0}, + [I(33,10)] = {64,0}, + [I(34,10)] = {64,0}, + [I(35,10)] = {64,0}, + [I(36,10)] = {64,0}, + [I(37,10)] = {64,0}, + [I(38,10)] = {64,0}, + [I(39,10)] = {64,0}, + [I(40,10)] = {64,0}, + [I(41,10)] = {64,0}, + [I(42,10)] = {64,0}, + [I(43,10)] = {64,0}, + [I(44,10)] = {64,0}, + [I(45,10)] = {64,0}, + [I(46,10)] = {64,0}, + [I(47,10)] = {64,0}, + [I(48,10)] = {64,0}, + [I(49,10)] = {64,0}, + [I(50,10)] = {64,0}, + [I(51,10)] = {64,0}, + [I(52,10)] = {64,0}, + [I(53,10)] = {64,0}, + [I(54,10)] = {64,0}, + [I(55,10)] = {64,0}, + [I(56,10)] = {64,0}, + [I(57,10)] = {64,0}, + [I(58,10)] = {64,0}, + [I(59,10)] = {64,0}, + [I(60,10)] = {64,0}, + [I(61,10)] = {64,0}, + [I(62,10)] = {64,0}, + [I(63,10)] = {64,0}, + [I(64,10)] = {64,0}, + [I(65,10)] = {64,0}, + [I(66,10)] = {64,0}, + [I(67,10)] = {64,0}, + [I(68,10)] = {64,0}, + [I(69,10)] = {64,0}, + [I(70,10)] = {64,0}, + [I(71,10)] = {64,0}, + [I(72,10)] = {64,0}, + [I(73,10)] = {64,0}, + [I(74,10)] = {64,0}, + [I(75,10)] = {64,0}, + [I(76,10)] = {64,0}, + [I(77,10)] = {64,0}, + [I(78,10)] = {64,0}, + [I(79,10)] = {64,0}, + [I(80,10)] = {64,0}, + [I(81,10)] = {64,0}, + [I(82,10)] = {64,0}, + [I(83,10)] = {64,0}, + [I(84,10)] = {64,0}, + [I(85,10)] = {64,0}, + [I(86,10)] = {64,0}, + [I(87,10)] = {64,0}, + [I(88,10)] = {64,0}, + [I(89,10)] = {64,0}, + [I(90,10)] = {64,0}, + [I(91,10)] = {64,0}, + [I(92,10)] = {64,0}, + [I(93,10)] = {64,0}, + [I(94,10)] = {64,0}, + [I(95,10)] = {64,0}, + [I(96,10)] = {64,0}, + [I(97,10)] = {64,0}, + [I(98,10)] = {64,0}, + [I(99,10)] = {64,0}, + [I(100,10)] = {64,0}, + [I(101,10)] = {64,0}, + [I(102,10)] = {64,0}, + [I(103,10)] = {64,0}, + [I(104,10)] = {64,0}, + [I(105,10)] = {64,0}, + [I(106,10)] = {64,0}, + [I(107,10)] = {64,0}, + [I(108,10)] = {64,0}, + [I(109,10)] = {64,0}, + [I(110,10)] = {64,0}, + [I(111,10)] = {64,0}, + [I(112,10)] = {64,0}, + [I(113,10)] = {64,0}, + [I(114,10)] = {64,0}, + [I(115,10)] = {64,0}, + [I(116,10)] = {64,0}, + [I(117,10)] = {64,0}, + [I(118,10)] = {64,0}, + [I(119,10)] = {64,0}, + [I(120,10)] = {64,0}, + [I(121,10)] = {64,0}, + [I(122,10)] = {64,0}, + [I(123,10)] = {64,0}, + [I(124,10)] = {64,0}, + [I(125,10)] = {64,0}, + [I(126,10)] = {64,0}, + [I(127,10)] = {64,0}, + [I(128,10)] = {64,0}, + [I(129,10)] = {64,0}, + [I(130,10)] = {64,0}, + [I(131,10)] = {64,0}, + [I(132,10)] = {64,0}, + [I(133,10)] = {64,0}, + [I(134,10)] = {64,0}, + [I(135,10)] = {64,0}, + [I(136,10)] = {64,0}, + [I(137,10)] = {64,0}, + [I(138,10)] = {64,0}, + [I(139,10)] = {64,0}, + [I(140,10)] = {64,0}, + [I(141,10)] = {64,0}, + [I(142,10)] = {64,0}, + [I(143,10)] = {64,0}, + [I(144,10)] = {64,0}, + [I(145,10)] = {64,0}, + [I(146,10)] = {64,0}, + [I(147,10)] = {64,0}, + [I(148,10)] = {64,0}, + [I(149,10)] = {64,0}, + [I(150,10)] = {64,0}, + [I(151,10)] = {64,0}, + [I(152,10)] = {64,0}, + [I(153,10)] = {64,0}, + [I(154,10)] = {64,0}, + [I(155,10)] = {64,0}, + [I(156,10)] = {64,0}, + [I(157,10)] = {64,0}, + [I(158,10)] = {64,0}, + [I(159,10)] = {64,0}, + [I(160,10)] = {64,0}, + [I(161,10)] = {64,0}, + [I(162,10)] = {64,0}, + [I(163,10)] = {64,0}, + [I(164,10)] = {64,0}, + [I(165,10)] = {64,0}, + [I(166,10)] = {64,0}, + [I(167,10)] = {64,0}, + [I(168,10)] = {64,0}, + [I(169,10)] = {64,0}, + [I(170,10)] = {64,0}, + [I(171,10)] = {64,0}, + [I(172,10)] = {64,0}, + [I(173,10)] = {64,0}, + [I(174,10)] = {64,0}, + [I(175,10)] = {64,0}, + [I(176,10)] = {64,0}, + [I(177,10)] = {64,0}, + [I(178,10)] = {64,0}, + [I(179,10)] = {64,0}, + [I(180,10)] = {64,0}, + [I(181,10)] = {64,0}, + [I(182,10)] = {64,0}, + [I(183,10)] = {64,0}, + [I(184,10)] = {64,0}, + [I(185,10)] = {64,0}, + [I(186,10)] = {64,0}, + [I(187,10)] = {64,0}, + [I(188,10)] = {64,0}, + [I(189,10)] = {64,0}, + [I(190,10)] = {64,0}, + [I(191,10)] = {64,0}, + [I(192,10)] = {64,0}, + [I(193,10)] = {64,0}, + [I(194,10)] = {64,0}, + [I(195,10)] = {64,0}, + [I(196,10)] = {64,0}, + [I(197,10)] = {64,0}, + [I(198,10)] = {64,0}, + [I(199,10)] = {64,0}, + [I(200,10)] = {64,0}, + [I(201,10)] = {64,0}, + [I(202,10)] = {64,0}, + [I(203,10)] = {64,0}, + [I(204,10)] = {64,0}, + [I(205,10)] = {64,0}, + [I(206,10)] = {64,0}, + [I(207,10)] = {64,0}, + [I(208,10)] = {64,0}, + [I(209,10)] = {64,0}, + [I(210,10)] = {64,0}, + [I(211,10)] = {64,0}, + [I(212,10)] = {64,0}, + [I(213,10)] = {64,0}, + [I(214,10)] = {64,0}, + [I(215,10)] = {64,0}, + [I(216,10)] = {64,0}, + [I(217,10)] = {64,0}, + [I(218,10)] = {64,0}, + [I(219,10)] = {64,0}, + [I(220,10)] = {64,0}, + [I(221,10)] = {64,0}, + [I(222,10)] = {64,0}, + [I(223,10)] = {64,0}, + [I(224,10)] = {64,0}, + [I(225,10)] = {64,0}, + [I(226,10)] = {64,0}, + [I(227,10)] = {64,0}, + [I(228,10)] = {64,0}, + [I(229,10)] = {64,0}, + [I(230,10)] = {64,0}, + [I(231,10)] = {64,0}, + [I(232,10)] = {64,0}, + [I(233,10)] = {64,0}, + [I(234,10)] = {64,0}, + [I(235,10)] = {64,0}, + [I(236,10)] = {64,0}, + [I(237,10)] = {64,0}, + [I(238,10)] = {64,0}, + [I(239,10)] = {64,0}, + [I(240,10)] = {64,0}, + [I(241,10)] = {64,0}, + [I(242,10)] = {64,0}, + [I(243,10)] = {64,0}, + [I(244,10)] = {64,0}, + [I(245,10)] = {64,0}, + [I(246,10)] = {64,0}, + [I(247,10)] = {64,0}, + [I(248,10)] = {64,0}, + [I(249,10)] = {64,0}, + [I(250,10)] = {64,0}, + [I(251,10)] = {64,0}, + [I(252,10)] = {64,0}, + [I(253,10)] = {64,0}, + [I(254,10)] = {64,0}, + [I(255,10)] = {64,0}, + [I(0,11)] = {64,0}, + [I(1,11)] = {64,0}, + [I(2,11)] = {64,0}, + [I(3,11)] = {64,0}, + [I(4,11)] = {64,0}, + [I(5,11)] = {64,0}, + [I(6,11)] = {64,0}, + [I(7,11)] = {64,0}, + [I(8,11)] = {64,0}, + [I(9,11)] = {64,0}, + [I(10,11)] = {64,0}, + [I(11,11)] = {64,0}, + [I(12,11)] = {64,0}, + [I(13,11)] = {64,0}, + [I(14,11)] = {64,0}, + [I(15,11)] = {64,0}, + [I(16,11)] = {64,0}, + [I(17,11)] = {64,0}, + [I(18,11)] = {64,0}, + [I(19,11)] = {64,0}, + [I(20,11)] = {64,0}, + [I(21,11)] = {64,0}, + [I(22,11)] = {64,0}, + [I(23,11)] = {64,0}, + [I(24,11)] = {64,0}, + [I(25,11)] = {64,0}, + [I(26,11)] = {64,0}, + [I(27,11)] = {64,0}, + [I(28,11)] = {64,0}, + [I(29,11)] = {64,0}, + [I(30,11)] = {64,0}, + [I(31,11)] = {64,0}, + [I(32,11)] = {64,0}, + [I(33,11)] = {64,0}, + [I(34,11)] = {64,0}, + [I(35,11)] = {64,0}, + [I(36,11)] = {64,0}, + [I(37,11)] = {64,0}, + [I(38,11)] = {64,0}, + [I(39,11)] = {64,0}, + [I(40,11)] = {64,0}, + [I(41,11)] = {64,0}, + [I(42,11)] = {64,0}, + [I(43,11)] = {64,0}, + [I(44,11)] = {64,0}, + [I(45,11)] = {64,0}, + [I(46,11)] = {64,0}, + [I(47,11)] = {64,0}, + [I(48,11)] = {64,0}, + [I(49,11)] = {64,0}, + [I(50,11)] = {64,0}, + [I(51,11)] = {64,0}, + [I(52,11)] = {64,0}, + [I(53,11)] = {64,0}, + [I(54,11)] = {64,0}, + [I(55,11)] = {64,0}, + [I(56,11)] = {64,0}, + [I(57,11)] = {64,0}, + [I(58,11)] = {64,0}, + [I(59,11)] = {64,0}, + [I(60,11)] = {64,0}, + [I(61,11)] = {64,0}, + [I(62,11)] = {64,0}, + [I(63,11)] = {64,0}, + [I(64,11)] = {64,0}, + [I(65,11)] = {64,0}, + [I(66,11)] = {64,0}, + [I(67,11)] = {64,0}, + [I(68,11)] = {64,0}, + [I(69,11)] = {64,0}, + [I(70,11)] = {64,0}, + [I(71,11)] = {64,0}, + [I(72,11)] = {64,0}, + [I(73,11)] = {64,0}, + [I(74,11)] = {64,0}, + [I(75,11)] = {64,0}, + [I(76,11)] = {64,0}, + [I(77,11)] = {64,0}, + [I(78,11)] = {64,0}, + [I(79,11)] = {64,0}, + [I(80,11)] = {64,0}, + [I(81,11)] = {64,0}, + [I(82,11)] = {64,0}, + [I(83,11)] = {64,0}, + [I(84,11)] = {64,0}, + [I(85,11)] = {64,0}, + [I(86,11)] = {64,0}, + [I(87,11)] = {64,0}, + [I(88,11)] = {64,0}, + [I(89,11)] = {64,0}, + [I(90,11)] = {64,0}, + [I(91,11)] = {64,0}, + [I(92,11)] = {64,0}, + [I(93,11)] = {64,0}, + [I(94,11)] = {64,0}, + [I(95,11)] = {64,0}, + [I(96,11)] = {64,0}, + [I(97,11)] = {64,0}, + [I(98,11)] = {64,0}, + [I(99,11)] = {64,0}, + [I(100,11)] = {64,0}, + [I(101,11)] = {64,0}, + [I(102,11)] = {64,0}, + [I(103,11)] = {64,0}, + [I(104,11)] = {64,0}, + [I(105,11)] = {64,0}, + [I(106,11)] = {64,0}, + [I(107,11)] = {64,0}, + [I(108,11)] = {64,0}, + [I(109,11)] = {64,0}, + [I(110,11)] = {64,0}, + [I(111,11)] = {64,0}, + [I(112,11)] = {64,0}, + [I(113,11)] = {64,0}, + [I(114,11)] = {64,0}, + [I(115,11)] = {64,0}, + [I(116,11)] = {64,0}, + [I(117,11)] = {64,0}, + [I(118,11)] = {64,0}, + [I(119,11)] = {64,0}, + [I(120,11)] = {64,0}, + [I(121,11)] = {64,0}, + [I(122,11)] = {64,0}, + [I(123,11)] = {64,0}, + [I(124,11)] = {64,0}, + [I(125,11)] = {64,0}, + [I(126,11)] = {64,0}, + [I(127,11)] = {64,0}, + [I(128,11)] = {64,0}, + [I(129,11)] = {64,0}, + [I(130,11)] = {64,0}, + [I(131,11)] = {64,0}, + [I(132,11)] = {64,0}, + [I(133,11)] = {64,0}, + [I(134,11)] = {64,0}, + [I(135,11)] = {64,0}, + [I(136,11)] = {64,0}, + [I(137,11)] = {64,0}, + [I(138,11)] = {64,0}, + [I(139,11)] = {64,0}, + [I(140,11)] = {64,0}, + [I(141,11)] = {64,0}, + [I(142,11)] = {64,0}, + [I(143,11)] = {64,0}, + [I(144,11)] = {64,0}, + [I(145,11)] = {64,0}, + [I(146,11)] = {64,0}, + [I(147,11)] = {64,0}, + [I(148,11)] = {64,0}, + [I(149,11)] = {64,0}, + [I(150,11)] = {64,0}, + [I(151,11)] = {64,0}, + [I(152,11)] = {64,0}, + [I(153,11)] = {64,0}, + [I(154,11)] = {64,0}, + [I(155,11)] = {64,0}, + [I(156,11)] = {64,0}, + [I(157,11)] = {64,0}, + [I(158,11)] = {64,0}, + [I(159,11)] = {64,0}, + [I(160,11)] = {64,0}, + [I(161,11)] = {64,0}, + [I(162,11)] = {64,0}, + [I(163,11)] = {64,0}, + [I(164,11)] = {64,0}, + [I(165,11)] = {64,0}, + [I(166,11)] = {64,0}, + [I(167,11)] = {64,0}, + [I(168,11)] = {64,0}, + [I(169,11)] = {64,0}, + [I(170,11)] = {64,0}, + [I(171,11)] = {64,0}, + [I(172,11)] = {64,0}, + [I(173,11)] = {64,0}, + [I(174,11)] = {64,0}, + [I(175,11)] = {64,0}, + [I(176,11)] = {64,0}, + [I(177,11)] = {64,0}, + [I(178,11)] = {64,0}, + [I(179,11)] = {64,0}, + [I(180,11)] = {64,0}, + [I(181,11)] = {64,0}, + [I(182,11)] = {64,0}, + [I(183,11)] = {64,0}, + [I(184,11)] = {64,0}, + [I(185,11)] = {64,0}, + [I(186,11)] = {64,0}, + [I(187,11)] = {64,0}, + [I(188,11)] = {64,0}, + [I(189,11)] = {64,0}, + [I(190,11)] = {64,0}, + [I(191,11)] = {64,0}, + [I(192,11)] = {64,0}, + [I(193,11)] = {64,0}, + [I(194,11)] = {64,0}, + [I(195,11)] = {64,0}, + [I(196,11)] = {64,0}, + [I(197,11)] = {64,0}, + [I(198,11)] = {64,0}, + [I(199,11)] = {64,0}, + [I(200,11)] = {64,0}, + [I(201,11)] = {64,0}, + [I(202,11)] = {64,0}, + [I(203,11)] = {64,0}, + [I(204,11)] = {64,0}, + [I(205,11)] = {64,0}, + [I(206,11)] = {64,0}, + [I(207,11)] = {64,0}, + [I(208,11)] = {64,0}, + [I(209,11)] = {64,0}, + [I(210,11)] = {64,0}, + [I(211,11)] = {64,0}, + [I(212,11)] = {64,0}, + [I(213,11)] = {64,0}, + [I(214,11)] = {64,0}, + [I(215,11)] = {64,0}, + [I(216,11)] = {64,0}, + [I(217,11)] = {64,0}, + [I(218,11)] = {64,0}, + [I(219,11)] = {64,0}, + [I(220,11)] = {64,0}, + [I(221,11)] = {64,0}, + [I(222,11)] = {64,0}, + [I(223,11)] = {64,0}, + [I(224,11)] = {64,0}, + [I(225,11)] = {64,0}, + [I(226,11)] = {64,0}, + [I(227,11)] = {64,0}, + [I(228,11)] = {64,0}, + [I(229,11)] = {64,0}, + [I(230,11)] = {64,0}, + [I(231,11)] = {64,0}, + [I(232,11)] = {64,0}, + [I(233,11)] = {64,0}, + [I(234,11)] = {64,0}, + [I(235,11)] = {64,0}, + [I(236,11)] = {64,0}, + [I(237,11)] = {64,0}, + [I(238,11)] = {64,0}, + [I(239,11)] = {64,0}, + [I(240,11)] = {64,0}, + [I(241,11)] = {64,0}, + [I(242,11)] = {64,0}, + [I(243,11)] = {64,0}, + [I(244,11)] = {64,0}, + [I(245,11)] = {64,0}, + [I(246,11)] = {64,0}, + [I(247,11)] = {64,0}, + [I(248,11)] = {64,0}, + [I(249,11)] = {64,0}, + [I(250,11)] = {64,0}, + [I(251,11)] = {64,0}, + [I(252,11)] = {64,0}, + [I(253,11)] = {64,0}, + [I(254,11)] = {64,0}, + [I(255,11)] = {64,0}, + [I(0,12)] = {64,0}, + [I(1,12)] = {64,0}, + [I(2,12)] = {64,0}, + [I(3,12)] = {64,0}, + [I(4,12)] = {64,0}, + [I(5,12)] = {64,0}, + [I(6,12)] = {64,0}, + [I(7,12)] = {64,0}, + [I(8,12)] = {64,0}, + [I(9,12)] = {64,0}, + [I(10,12)] = {64,0}, + [I(11,12)] = {64,0}, + [I(12,12)] = {64,0}, + [I(13,12)] = {64,0}, + [I(14,12)] = {64,0}, + [I(15,12)] = {64,0}, + [I(16,12)] = {64,0}, + [I(17,12)] = {64,0}, + [I(18,12)] = {64,0}, + [I(19,12)] = {64,0}, + [I(20,12)] = {64,0}, + [I(21,12)] = {64,0}, + [I(22,12)] = {64,0}, + [I(23,12)] = {64,0}, + [I(24,12)] = {64,0}, + [I(25,12)] = {64,0}, + [I(26,12)] = {64,0}, + [I(27,12)] = {64,0}, + [I(28,12)] = {64,0}, + [I(29,12)] = {64,0}, + [I(30,12)] = {64,0}, + [I(31,12)] = {64,0}, + [I(32,12)] = {64,0}, + [I(33,12)] = {64,0}, + [I(34,12)] = {64,0}, + [I(35,12)] = {64,0}, + [I(36,12)] = {64,0}, + [I(37,12)] = {64,0}, + [I(38,12)] = {64,0}, + [I(39,12)] = {64,0}, + [I(40,12)] = {64,0}, + [I(41,12)] = {64,0}, + [I(42,12)] = {64,0}, + [I(43,12)] = {64,0}, + [I(44,12)] = {64,0}, + [I(45,12)] = {64,0}, + [I(46,12)] = {64,0}, + [I(47,12)] = {64,0}, + [I(48,12)] = {64,0}, + [I(49,12)] = {64,0}, + [I(50,12)] = {64,0}, + [I(51,12)] = {64,0}, + [I(52,12)] = {64,0}, + [I(53,12)] = {64,0}, + [I(54,12)] = {64,0}, + [I(55,12)] = {64,0}, + [I(56,12)] = {64,0}, + [I(57,12)] = {64,0}, + [I(58,12)] = {64,0}, + [I(59,12)] = {64,0}, + [I(60,12)] = {64,0}, + [I(61,12)] = {64,0}, + [I(62,12)] = {64,0}, + [I(63,12)] = {64,0}, + [I(64,12)] = {64,0}, + [I(65,12)] = {64,0}, + [I(66,12)] = {64,0}, + [I(67,12)] = {64,0}, + [I(68,12)] = {64,0}, + [I(69,12)] = {64,0}, + [I(70,12)] = {64,0}, + [I(71,12)] = {64,0}, + [I(72,12)] = {64,0}, + [I(73,12)] = {64,0}, + [I(74,12)] = {64,0}, + [I(75,12)] = {64,0}, + [I(76,12)] = {64,0}, + [I(77,12)] = {64,0}, + [I(78,12)] = {64,0}, + [I(79,12)] = {64,0}, + [I(80,12)] = {64,0}, + [I(81,12)] = {64,0}, + [I(82,12)] = {64,0}, + [I(83,12)] = {64,0}, + [I(84,12)] = {64,0}, + [I(85,12)] = {64,0}, + [I(86,12)] = {64,0}, + [I(87,12)] = {64,0}, + [I(88,12)] = {64,0}, + [I(89,12)] = {64,0}, + [I(90,12)] = {64,0}, + [I(91,12)] = {64,0}, + [I(92,12)] = {64,0}, + [I(93,12)] = {64,0}, + [I(94,12)] = {64,0}, + [I(95,12)] = {64,0}, + [I(96,12)] = {64,0}, + [I(97,12)] = {64,0}, + [I(98,12)] = {64,0}, + [I(99,12)] = {64,0}, + [I(100,12)] = {64,0}, + [I(101,12)] = {64,0}, + [I(102,12)] = {64,0}, + [I(103,12)] = {64,0}, + [I(104,12)] = {64,0}, + [I(105,12)] = {64,0}, + [I(106,12)] = {64,0}, + [I(107,12)] = {64,0}, + [I(108,12)] = {64,0}, + [I(109,12)] = {64,0}, + [I(110,12)] = {64,0}, + [I(111,12)] = {64,0}, + [I(112,12)] = {64,0}, + [I(113,12)] = {64,0}, + [I(114,12)] = {64,0}, + [I(115,12)] = {64,0}, + [I(116,12)] = {64,0}, + [I(117,12)] = {64,0}, + [I(118,12)] = {64,0}, + [I(119,12)] = {64,0}, + [I(120,12)] = {64,0}, + [I(121,12)] = {64,0}, + [I(122,12)] = {64,0}, + [I(123,12)] = {64,0}, + [I(124,12)] = {64,0}, + [I(125,12)] = {64,0}, + [I(126,12)] = {64,0}, + [I(127,12)] = {64,0}, + [I(128,12)] = {64,0}, + [I(129,12)] = {64,0}, + [I(130,12)] = {64,0}, + [I(131,12)] = {64,0}, + [I(132,12)] = {64,0}, + [I(133,12)] = {64,0}, + [I(134,12)] = {64,0}, + [I(135,12)] = {64,0}, + [I(136,12)] = {64,0}, + [I(137,12)] = {64,0}, + [I(138,12)] = {64,0}, + [I(139,12)] = {64,0}, + [I(140,12)] = {64,0}, + [I(141,12)] = {64,0}, + [I(142,12)] = {64,0}, + [I(143,12)] = {64,0}, + [I(144,12)] = {64,0}, + [I(145,12)] = {64,0}, + [I(146,12)] = {64,0}, + [I(147,12)] = {64,0}, + [I(148,12)] = {64,0}, + [I(149,12)] = {64,0}, + [I(150,12)] = {64,0}, + [I(151,12)] = {64,0}, + [I(152,12)] = {64,0}, + [I(153,12)] = {64,0}, + [I(154,12)] = {64,0}, + [I(155,12)] = {64,0}, + [I(156,12)] = {64,0}, + [I(157,12)] = {64,0}, + [I(158,12)] = {64,0}, + [I(159,12)] = {64,0}, + [I(160,12)] = {64,0}, + [I(161,12)] = {64,0}, + [I(162,12)] = {64,0}, + [I(163,12)] = {64,0}, + [I(164,12)] = {64,0}, + [I(165,12)] = {64,0}, + [I(166,12)] = {64,0}, + [I(167,12)] = {64,0}, + [I(168,12)] = {64,0}, + [I(169,12)] = {64,0}, + [I(170,12)] = {64,0}, + [I(171,12)] = {64,0}, + [I(172,12)] = {64,0}, + [I(173,12)] = {64,0}, + [I(174,12)] = {64,0}, + [I(175,12)] = {64,0}, + [I(176,12)] = {64,0}, + [I(177,12)] = {64,0}, + [I(178,12)] = {64,0}, + [I(179,12)] = {64,0}, + [I(180,12)] = {64,0}, + [I(181,12)] = {64,0}, + [I(182,12)] = {64,0}, + [I(183,12)] = {64,0}, + [I(184,12)] = {64,0}, + [I(185,12)] = {64,0}, + [I(186,12)] = {64,0}, + [I(187,12)] = {64,0}, + [I(188,12)] = {64,0}, + [I(189,12)] = {64,0}, + [I(190,12)] = {64,0}, + [I(191,12)] = {64,0}, + [I(192,12)] = {64,0}, + [I(193,12)] = {64,0}, + [I(194,12)] = {64,0}, + [I(195,12)] = {64,0}, + [I(196,12)] = {64,0}, + [I(197,12)] = {64,0}, + [I(198,12)] = {64,0}, + [I(199,12)] = {64,0}, + [I(200,12)] = {64,0}, + [I(201,12)] = {64,0}, + [I(202,12)] = {64,0}, + [I(203,12)] = {64,0}, + [I(204,12)] = {64,0}, + [I(205,12)] = {64,0}, + [I(206,12)] = {64,0}, + [I(207,12)] = {64,0}, + [I(208,12)] = {64,0}, + [I(209,12)] = {64,0}, + [I(210,12)] = {64,0}, + [I(211,12)] = {64,0}, + [I(212,12)] = {64,0}, + [I(213,12)] = {64,0}, + [I(214,12)] = {64,0}, + [I(215,12)] = {64,0}, + [I(216,12)] = {64,0}, + [I(217,12)] = {64,0}, + [I(218,12)] = {64,0}, + [I(219,12)] = {64,0}, + [I(220,12)] = {64,0}, + [I(221,12)] = {64,0}, + [I(222,12)] = {64,0}, + [I(223,12)] = {64,0}, + [I(224,12)] = {64,0}, + [I(225,12)] = {64,0}, + [I(226,12)] = {64,0}, + [I(227,12)] = {64,0}, + [I(228,12)] = {64,0}, + [I(229,12)] = {64,0}, + [I(230,12)] = {64,0}, + [I(231,12)] = {64,0}, + [I(232,12)] = {64,0}, + [I(233,12)] = {64,0}, + [I(234,12)] = {64,0}, + [I(235,12)] = {64,0}, + [I(236,12)] = {64,0}, + [I(237,12)] = {64,0}, + [I(238,12)] = {64,0}, + [I(239,12)] = {64,0}, + [I(240,12)] = {64,0}, + [I(241,12)] = {64,0}, + [I(242,12)] = {64,0}, + [I(243,12)] = {64,0}, + [I(244,12)] = {64,0}, + [I(245,12)] = {64,0}, + [I(246,12)] = {64,0}, + [I(247,12)] = {64,0}, + [I(248,12)] = {64,0}, + [I(249,12)] = {64,0}, + [I(250,12)] = {64,0}, + [I(251,12)] = {64,0}, + [I(252,12)] = {64,0}, + [I(253,12)] = {64,0}, + [I(254,12)] = {64,0}, + [I(255,12)] = {64,0}, + [I(0,13)] = {64,0}, + [I(1,13)] = {64,0}, + [I(2,13)] = {64,0}, + [I(3,13)] = {64,0}, + [I(4,13)] = {64,0}, + [I(5,13)] = {64,0}, + [I(6,13)] = {64,0}, + [I(7,13)] = {64,0}, + [I(8,13)] = {64,0}, + [I(9,13)] = {64,0}, + [I(10,13)] = {64,0}, + [I(11,13)] = {64,0}, + [I(12,13)] = {64,0}, + [I(13,13)] = {64,0}, + [I(14,13)] = {64,0}, + [I(15,13)] = {64,0}, + [I(16,13)] = {64,0}, + [I(17,13)] = {64,0}, + [I(18,13)] = {64,0}, + [I(19,13)] = {64,0}, + [I(20,13)] = {64,0}, + [I(21,13)] = {64,0}, + [I(22,13)] = {64,0}, + [I(23,13)] = {64,0}, + [I(24,13)] = {64,0}, + [I(25,13)] = {64,0}, + [I(26,13)] = {64,0}, + [I(27,13)] = {64,0}, + [I(28,13)] = {64,0}, + [I(29,13)] = {64,0}, + [I(30,13)] = {64,0}, + [I(31,13)] = {64,0}, + [I(32,13)] = {64,0}, + [I(33,13)] = {64,0}, + [I(34,13)] = {64,0}, + [I(35,13)] = {64,0}, + [I(36,13)] = {64,0}, + [I(37,13)] = {64,0}, + [I(38,13)] = {64,0}, + [I(39,13)] = {64,0}, + [I(40,13)] = {64,0}, + [I(41,13)] = {64,0}, + [I(42,13)] = {64,0}, + [I(43,13)] = {64,0}, + [I(44,13)] = {64,0}, + [I(45,13)] = {64,0}, + [I(46,13)] = {64,0}, + [I(47,13)] = {64,0}, + [I(48,13)] = {64,0}, + [I(49,13)] = {64,0}, + [I(50,13)] = {64,0}, + [I(51,13)] = {64,0}, + [I(52,13)] = {64,0}, + [I(53,13)] = {64,0}, + [I(54,13)] = {64,0}, + [I(55,13)] = {64,0}, + [I(56,13)] = {64,0}, + [I(57,13)] = {64,0}, + [I(58,13)] = {64,0}, + [I(59,13)] = {64,0}, + [I(60,13)] = {64,0}, + [I(61,13)] = {64,0}, + [I(62,13)] = {64,0}, + [I(63,13)] = {64,0}, + [I(64,13)] = {64,0}, + [I(65,13)] = {64,0}, + [I(66,13)] = {64,0}, + [I(67,13)] = {64,0}, + [I(68,13)] = {64,0}, + [I(69,13)] = {64,0}, + [I(70,13)] = {64,0}, + [I(71,13)] = {64,0}, + [I(72,13)] = {64,0}, + [I(73,13)] = {64,0}, + [I(74,13)] = {64,0}, + [I(75,13)] = {64,0}, + [I(76,13)] = {64,0}, + [I(77,13)] = {64,0}, + [I(78,13)] = {64,0}, + [I(79,13)] = {64,0}, + [I(80,13)] = {64,0}, + [I(81,13)] = {64,0}, + [I(82,13)] = {64,0}, + [I(83,13)] = {64,0}, + [I(84,13)] = {64,0}, + [I(85,13)] = {64,0}, + [I(86,13)] = {64,0}, + [I(87,13)] = {64,0}, + [I(88,13)] = {64,0}, + [I(89,13)] = {64,0}, + [I(90,13)] = {64,0}, + [I(91,13)] = {64,0}, + [I(92,13)] = {64,0}, + [I(93,13)] = {64,0}, + [I(94,13)] = {64,0}, + [I(95,13)] = {64,0}, + [I(96,13)] = {64,0}, + [I(97,13)] = {64,0}, + [I(98,13)] = {64,0}, + [I(99,13)] = {64,0}, + [I(100,13)] = {64,0}, + [I(101,13)] = {64,0}, + [I(102,13)] = {64,0}, + [I(103,13)] = {64,0}, + [I(104,13)] = {64,0}, + [I(105,13)] = {64,0}, + [I(106,13)] = {64,0}, + [I(107,13)] = {64,0}, + [I(108,13)] = {64,0}, + [I(109,13)] = {64,0}, + [I(110,13)] = {64,0}, + [I(111,13)] = {64,0}, + [I(112,13)] = {64,0}, + [I(113,13)] = {64,0}, + [I(114,13)] = {64,0}, + [I(115,13)] = {64,0}, + [I(116,13)] = {64,0}, + [I(117,13)] = {64,0}, + [I(118,13)] = {64,0}, + [I(119,13)] = {64,0}, + [I(120,13)] = {64,0}, + [I(121,13)] = {64,0}, + [I(122,13)] = {64,0}, + [I(123,13)] = {64,0}, + [I(124,13)] = {64,0}, + [I(125,13)] = {64,0}, + [I(126,13)] = {64,0}, + [I(127,13)] = {64,0}, + [I(128,13)] = {64,0}, + [I(129,13)] = {64,0}, + [I(130,13)] = {64,0}, + [I(131,13)] = {64,0}, + [I(132,13)] = {64,0}, + [I(133,13)] = {64,0}, + [I(134,13)] = {64,0}, + [I(135,13)] = {64,0}, + [I(136,13)] = {64,0}, + [I(137,13)] = {64,0}, + [I(138,13)] = {64,0}, + [I(139,13)] = {64,0}, + [I(140,13)] = {64,0}, + [I(141,13)] = {64,0}, + [I(142,13)] = {64,0}, + [I(143,13)] = {64,0}, + [I(144,13)] = {64,0}, + [I(145,13)] = {64,0}, + [I(146,13)] = {64,0}, + [I(147,13)] = {64,0}, + [I(148,13)] = {64,0}, + [I(149,13)] = {64,0}, + [I(150,13)] = {64,0}, + [I(151,13)] = {64,0}, + [I(152,13)] = {64,0}, + [I(153,13)] = {64,0}, + [I(154,13)] = {64,0}, + [I(155,13)] = {64,0}, + [I(156,13)] = {64,0}, + [I(157,13)] = {64,0}, + [I(158,13)] = {64,0}, + [I(159,13)] = {64,0}, + [I(160,13)] = {64,0}, + [I(161,13)] = {64,0}, + [I(162,13)] = {64,0}, + [I(163,13)] = {64,0}, + [I(164,13)] = {64,0}, + [I(165,13)] = {64,0}, + [I(166,13)] = {64,0}, + [I(167,13)] = {64,0}, + [I(168,13)] = {64,0}, + [I(169,13)] = {64,0}, + [I(170,13)] = {64,0}, + [I(171,13)] = {64,0}, + [I(172,13)] = {64,0}, + [I(173,13)] = {64,0}, + [I(174,13)] = {64,0}, + [I(175,13)] = {64,0}, + [I(176,13)] = {64,0}, + [I(177,13)] = {64,0}, + [I(178,13)] = {64,0}, + [I(179,13)] = {64,0}, + [I(180,13)] = {64,0}, + [I(181,13)] = {64,0}, + [I(182,13)] = {64,0}, + [I(183,13)] = {64,0}, + [I(184,13)] = {64,0}, + [I(185,13)] = {64,0}, + [I(186,13)] = {64,0}, + [I(187,13)] = {64,0}, + [I(188,13)] = {64,0}, + [I(189,13)] = {64,0}, + [I(190,13)] = {64,0}, + [I(191,13)] = {64,0}, + [I(192,13)] = {64,0}, + [I(193,13)] = {64,0}, + [I(194,13)] = {64,0}, + [I(195,13)] = {64,0}, + [I(196,13)] = {64,0}, + [I(197,13)] = {64,0}, + [I(198,13)] = {64,0}, + [I(199,13)] = {64,0}, + [I(200,13)] = {64,0}, + [I(201,13)] = {64,0}, + [I(202,13)] = {64,0}, + [I(203,13)] = {64,0}, + [I(204,13)] = {64,0}, + [I(205,13)] = {64,0}, + [I(206,13)] = {64,0}, + [I(207,13)] = {64,0}, + [I(208,13)] = {64,0}, + [I(209,13)] = {64,0}, + [I(210,13)] = {64,0}, + [I(211,13)] = {64,0}, + [I(212,13)] = {64,0}, + [I(213,13)] = {64,0}, + [I(214,13)] = {64,0}, + [I(215,13)] = {64,0}, + [I(216,13)] = {64,0}, + [I(217,13)] = {64,0}, + [I(218,13)] = {64,0}, + [I(219,13)] = {64,0}, + [I(220,13)] = {64,0}, + [I(221,13)] = {64,0}, + [I(222,13)] = {64,0}, + [I(223,13)] = {64,0}, + [I(224,13)] = {64,0}, + [I(225,13)] = {64,0}, + [I(226,13)] = {64,0}, + [I(227,13)] = {64,0}, + [I(228,13)] = {64,0}, + [I(229,13)] = {64,0}, + [I(230,13)] = {64,0}, + [I(231,13)] = {64,0}, + [I(232,13)] = {64,0}, + [I(233,13)] = {64,0}, + [I(234,13)] = {64,0}, + [I(235,13)] = {64,0}, + [I(236,13)] = {64,0}, + [I(237,13)] = {64,0}, + [I(238,13)] = {64,0}, + [I(239,13)] = {64,0}, + [I(240,13)] = {64,0}, + [I(241,13)] = {64,0}, + [I(242,13)] = {64,0}, + [I(243,13)] = {64,0}, + [I(244,13)] = {64,0}, + [I(245,13)] = {64,0}, + [I(246,13)] = {64,0}, + [I(247,13)] = {64,0}, + [I(248,13)] = {64,0}, + [I(249,13)] = {64,0}, + [I(250,13)] = {64,0}, + [I(251,13)] = {64,0}, + [I(252,13)] = {64,0}, + [I(253,13)] = {64,0}, + [I(254,13)] = {64,0}, + [I(255,13)] = {64,0}, + [I(0,14)] = {64,0}, + [I(1,14)] = {64,0}, + [I(2,14)] = {64,0}, + [I(3,14)] = {64,0}, + [I(4,14)] = {64,0}, + [I(5,14)] = {64,0}, + [I(6,14)] = {64,0}, + [I(7,14)] = {64,0}, + [I(8,14)] = {64,0}, + [I(9,14)] = {64,0}, + [I(10,14)] = {64,0}, + [I(11,14)] = {64,0}, + [I(12,14)] = {64,0}, + [I(13,14)] = {64,0}, + [I(14,14)] = {64,0}, + [I(15,14)] = {64,0}, + [I(16,14)] = {64,0}, + [I(17,14)] = {64,0}, + [I(18,14)] = {64,0}, + [I(19,14)] = {64,0}, + [I(20,14)] = {64,0}, + [I(21,14)] = {64,0}, + [I(22,14)] = {64,0}, + [I(23,14)] = {64,0}, + [I(24,14)] = {64,0}, + [I(25,14)] = {64,0}, + [I(26,14)] = {64,0}, + [I(27,14)] = {64,0}, + [I(28,14)] = {64,0}, + [I(29,14)] = {64,0}, + [I(30,14)] = {64,0}, + [I(31,14)] = {64,0}, + [I(32,14)] = {64,0}, + [I(33,14)] = {64,0}, + [I(34,14)] = {64,0}, + [I(35,14)] = {64,0}, + [I(36,14)] = {64,0}, + [I(37,14)] = {64,0}, + [I(38,14)] = {64,0}, + [I(39,14)] = {64,0}, + [I(40,14)] = {64,0}, + [I(41,14)] = {64,0}, + [I(42,14)] = {64,0}, + [I(43,14)] = {64,0}, + [I(44,14)] = {64,0}, + [I(45,14)] = {64,0}, + [I(46,14)] = {64,0}, + [I(47,14)] = {64,0}, + [I(48,14)] = {64,0}, + [I(49,14)] = {64,0}, + [I(50,14)] = {64,0}, + [I(51,14)] = {64,0}, + [I(52,14)] = {64,0}, + [I(53,14)] = {64,0}, + [I(54,14)] = {64,0}, + [I(55,14)] = {64,0}, + [I(56,14)] = {64,0}, + [I(57,14)] = {64,0}, + [I(58,14)] = {64,0}, + [I(59,14)] = {64,0}, + [I(60,14)] = {64,0}, + [I(61,14)] = {64,0}, + [I(62,14)] = {64,0}, + [I(63,14)] = {64,0}, + [I(64,14)] = {64,0}, + [I(65,14)] = {64,0}, + [I(66,14)] = {64,0}, + [I(67,14)] = {64,0}, + [I(68,14)] = {64,0}, + [I(69,14)] = {64,0}, + [I(70,14)] = {64,0}, + [I(71,14)] = {64,0}, + [I(72,14)] = {64,0}, + [I(73,14)] = {64,0}, + [I(74,14)] = {64,0}, + [I(75,14)] = {64,0}, + [I(76,14)] = {64,0}, + [I(77,14)] = {64,0}, + [I(78,14)] = {64,0}, + [I(79,14)] = {64,0}, + [I(80,14)] = {64,0}, + [I(81,14)] = {64,0}, + [I(82,14)] = {64,0}, + [I(83,14)] = {64,0}, + [I(84,14)] = {64,0}, + [I(85,14)] = {64,0}, + [I(86,14)] = {64,0}, + [I(87,14)] = {64,0}, + [I(88,14)] = {64,0}, + [I(89,14)] = {64,0}, + [I(90,14)] = {64,0}, + [I(91,14)] = {64,0}, + [I(92,14)] = {64,0}, + [I(93,14)] = {64,0}, + [I(94,14)] = {64,0}, + [I(95,14)] = {64,0}, + [I(96,14)] = {64,0}, + [I(97,14)] = {64,0}, + [I(98,14)] = {64,0}, + [I(99,14)] = {64,0}, + [I(100,14)] = {64,0}, + [I(101,14)] = {64,0}, + [I(102,14)] = {64,0}, + [I(103,14)] = {64,0}, + [I(104,14)] = {64,0}, + [I(105,14)] = {64,0}, + [I(106,14)] = {64,0}, + [I(107,14)] = {64,0}, + [I(108,14)] = {64,0}, + [I(109,14)] = {64,0}, + [I(110,14)] = {64,0}, + [I(111,14)] = {64,0}, + [I(112,14)] = {64,0}, + [I(113,14)] = {64,0}, + [I(114,14)] = {64,0}, + [I(115,14)] = {64,0}, + [I(116,14)] = {64,0}, + [I(117,14)] = {64,0}, + [I(118,14)] = {64,0}, + [I(119,14)] = {64,0}, + [I(120,14)] = {64,0}, + [I(121,14)] = {64,0}, + [I(122,14)] = {64,0}, + [I(123,14)] = {64,0}, + [I(124,14)] = {64,0}, + [I(125,14)] = {64,0}, + [I(126,14)] = {64,0}, + [I(127,14)] = {64,0}, + [I(128,14)] = {64,0}, + [I(129,14)] = {64,0}, + [I(130,14)] = {64,0}, + [I(131,14)] = {64,0}, + [I(132,14)] = {64,0}, + [I(133,14)] = {64,0}, + [I(134,14)] = {64,0}, + [I(135,14)] = {64,0}, + [I(136,14)] = {64,0}, + [I(137,14)] = {64,0}, + [I(138,14)] = {64,0}, + [I(139,14)] = {64,0}, + [I(140,14)] = {64,0}, + [I(141,14)] = {64,0}, + [I(142,14)] = {64,0}, + [I(143,14)] = {64,0}, + [I(144,14)] = {64,0}, + [I(145,14)] = {64,0}, + [I(146,14)] = {64,0}, + [I(147,14)] = {64,0}, + [I(148,14)] = {64,0}, + [I(149,14)] = {64,0}, + [I(150,14)] = {64,0}, + [I(151,14)] = {64,0}, + [I(152,14)] = {64,0}, + [I(153,14)] = {64,0}, + [I(154,14)] = {64,0}, + [I(155,14)] = {64,0}, + [I(156,14)] = {64,0}, + [I(157,14)] = {64,0}, + [I(158,14)] = {64,0}, + [I(159,14)] = {64,0}, + [I(160,14)] = {64,0}, + [I(161,14)] = {64,0}, + [I(162,14)] = {64,0}, + [I(163,14)] = {64,0}, + [I(164,14)] = {64,0}, + [I(165,14)] = {64,0}, + [I(166,14)] = {64,0}, + [I(167,14)] = {64,0}, + [I(168,14)] = {64,0}, + [I(169,14)] = {64,0}, + [I(170,14)] = {64,0}, + [I(171,14)] = {64,0}, + [I(172,14)] = {64,0}, + [I(173,14)] = {64,0}, + [I(174,14)] = {64,0}, + [I(175,14)] = {64,0}, + [I(176,14)] = {64,0}, + [I(177,14)] = {64,0}, + [I(178,14)] = {64,0}, + [I(179,14)] = {64,0}, + [I(180,14)] = {64,0}, + [I(181,14)] = {64,0}, + [I(182,14)] = {64,0}, + [I(183,14)] = {64,0}, + [I(184,14)] = {64,0}, + [I(185,14)] = {64,0}, + [I(186,14)] = {64,0}, + [I(187,14)] = {64,0}, + [I(188,14)] = {64,0}, + [I(189,14)] = {64,0}, + [I(190,14)] = {64,0}, + [I(191,14)] = {64,0}, + [I(192,14)] = {64,0}, + [I(193,14)] = {64,0}, + [I(194,14)] = {64,0}, + [I(195,14)] = {64,0}, + [I(196,14)] = {64,0}, + [I(197,14)] = {64,0}, + [I(198,14)] = {64,0}, + [I(199,14)] = {64,0}, + [I(200,14)] = {64,0}, + [I(201,14)] = {64,0}, + [I(202,14)] = {64,0}, + [I(203,14)] = {64,0}, + [I(204,14)] = {64,0}, + [I(205,14)] = {64,0}, + [I(206,14)] = {64,0}, + [I(207,14)] = {64,0}, + [I(208,14)] = {64,0}, + [I(209,14)] = {64,0}, + [I(210,14)] = {64,0}, + [I(211,14)] = {64,0}, + [I(212,14)] = {64,0}, + [I(213,14)] = {64,0}, + [I(214,14)] = {64,0}, + [I(215,14)] = {64,0}, + [I(216,14)] = {64,0}, + [I(217,14)] = {64,0}, + [I(218,14)] = {64,0}, + [I(219,14)] = {64,0}, + [I(220,14)] = {64,0}, + [I(221,14)] = {64,0}, + [I(222,14)] = {64,0}, + [I(223,14)] = {64,0}, + [I(224,14)] = {64,0}, + [I(225,14)] = {64,0}, + [I(226,14)] = {64,0}, + [I(227,14)] = {64,0}, + [I(228,14)] = {64,0}, + [I(229,14)] = {64,0}, + [I(230,14)] = {64,0}, + [I(231,14)] = {64,0}, + [I(232,14)] = {64,0}, + [I(233,14)] = {64,0}, + [I(234,14)] = {64,0}, + [I(235,14)] = {64,0}, + [I(236,14)] = {64,0}, + [I(237,14)] = {64,0}, + [I(238,14)] = {64,0}, + [I(239,14)] = {64,0}, + [I(240,14)] = {64,0}, + [I(241,14)] = {64,0}, + [I(242,14)] = {64,0}, + [I(243,14)] = {64,0}, + [I(244,14)] = {64,0}, + [I(245,14)] = {64,0}, + [I(246,14)] = {64,0}, + [I(247,14)] = {64,0}, + [I(248,14)] = {64,0}, + [I(249,14)] = {64,0}, + [I(250,14)] = {64,0}, + [I(251,14)] = {64,0}, + [I(252,14)] = {64,0}, + [I(253,14)] = {64,0}, + [I(254,14)] = {64,0}, + [I(255,14)] = {64,0}, + [I(0,15)] = {64,0}, + [I(1,15)] = {64,0}, + [I(2,15)] = {64,0}, + [I(3,15)] = {64,0}, + [I(4,15)] = {64,0}, + [I(5,15)] = {64,0}, + [I(6,15)] = {64,0}, + [I(7,15)] = {64,0}, + [I(8,15)] = {64,0}, + [I(9,15)] = {64,0}, + [I(10,15)] = {64,0}, + [I(11,15)] = {64,0}, + [I(12,15)] = {64,0}, + [I(13,15)] = {64,0}, + [I(14,15)] = {64,0}, + [I(15,15)] = {64,0}, + [I(16,15)] = {64,0}, + [I(17,15)] = {64,0}, + [I(18,15)] = {64,0}, + [I(19,15)] = {64,0}, + [I(20,15)] = {64,0}, + [I(21,15)] = {64,0}, + [I(22,15)] = {64,0}, + [I(23,15)] = {64,0}, + [I(24,15)] = {64,0}, + [I(25,15)] = {64,0}, + [I(26,15)] = {64,0}, + [I(27,15)] = {64,0}, + [I(28,15)] = {64,0}, + [I(29,15)] = {64,0}, + [I(30,15)] = {64,0}, + [I(31,15)] = {64,0}, + [I(32,15)] = {64,0}, + [I(33,15)] = {64,0}, + [I(34,15)] = {64,0}, + [I(35,15)] = {64,0}, + [I(36,15)] = {64,0}, + [I(37,15)] = {64,0}, + [I(38,15)] = {64,0}, + [I(39,15)] = {64,0}, + [I(40,15)] = {64,0}, + [I(41,15)] = {64,0}, + [I(42,15)] = {64,0}, + [I(43,15)] = {64,0}, + [I(44,15)] = {64,0}, + [I(45,15)] = {64,0}, + [I(46,15)] = {64,0}, + [I(47,15)] = {64,0}, + [I(48,15)] = {64,0}, + [I(49,15)] = {64,0}, + [I(50,15)] = {64,0}, + [I(51,15)] = {64,0}, + [I(52,15)] = {64,0}, + [I(53,15)] = {64,0}, + [I(54,15)] = {64,0}, + [I(55,15)] = {64,0}, + [I(56,15)] = {64,0}, + [I(57,15)] = {64,0}, + [I(58,15)] = {64,0}, + [I(59,15)] = {64,0}, + [I(60,15)] = {64,0}, + [I(61,15)] = {64,0}, + [I(62,15)] = {64,0}, + [I(63,15)] = {64,0}, + [I(64,15)] = {64,0}, + [I(65,15)] = {64,0}, + [I(66,15)] = {64,0}, + [I(67,15)] = {64,0}, + [I(68,15)] = {64,0}, + [I(69,15)] = {64,0}, + [I(70,15)] = {64,0}, + [I(71,15)] = {64,0}, + [I(72,15)] = {64,0}, + [I(73,15)] = {64,0}, + [I(74,15)] = {64,0}, + [I(75,15)] = {64,0}, + [I(76,15)] = {64,0}, + [I(77,15)] = {64,0}, + [I(78,15)] = {64,0}, + [I(79,15)] = {64,0}, + [I(80,15)] = {64,0}, + [I(81,15)] = {64,0}, + [I(82,15)] = {64,0}, + [I(83,15)] = {64,0}, + [I(84,15)] = {64,0}, + [I(85,15)] = {64,0}, + [I(86,15)] = {64,0}, + [I(87,15)] = {64,0}, + [I(88,15)] = {64,0}, + [I(89,15)] = {64,0}, + [I(90,15)] = {64,0}, + [I(91,15)] = {64,0}, + [I(92,15)] = {64,0}, + [I(93,15)] = {64,0}, + [I(94,15)] = {64,0}, + [I(95,15)] = {64,0}, + [I(96,15)] = {64,0}, + [I(97,15)] = {64,0}, + [I(98,15)] = {64,0}, + [I(99,15)] = {64,0}, + [I(100,15)] = {64,0}, + [I(101,15)] = {64,0}, + [I(102,15)] = {64,0}, + [I(103,15)] = {64,0}, + [I(104,15)] = {64,0}, + [I(105,15)] = {64,0}, + [I(106,15)] = {64,0}, + [I(107,15)] = {64,0}, + [I(108,15)] = {64,0}, + [I(109,15)] = {64,0}, + [I(110,15)] = {64,0}, + [I(111,15)] = {64,0}, + [I(112,15)] = {64,0}, + [I(113,15)] = {64,0}, + [I(114,15)] = {64,0}, + [I(115,15)] = {64,0}, + [I(116,15)] = {64,0}, + [I(117,15)] = {64,0}, + [I(118,15)] = {64,0}, + [I(119,15)] = {64,0}, + [I(120,15)] = {64,0}, + [I(121,15)] = {64,0}, + [I(122,15)] = {64,0}, + [I(123,15)] = {64,0}, + [I(124,15)] = {64,0}, + [I(125,15)] = {64,0}, + [I(126,15)] = {64,0}, + [I(127,15)] = {64,0}, + [I(128,15)] = {64,0}, + [I(129,15)] = {64,0}, + [I(130,15)] = {64,0}, + [I(131,15)] = {64,0}, + [I(132,15)] = {64,0}, + [I(133,15)] = {64,0}, + [I(134,15)] = {64,0}, + [I(135,15)] = {64,0}, + [I(136,15)] = {64,0}, + [I(137,15)] = {64,0}, + [I(138,15)] = {64,0}, + [I(139,15)] = {64,0}, + [I(140,15)] = {64,0}, + [I(141,15)] = {64,0}, + [I(142,15)] = {64,0}, + [I(143,15)] = {64,0}, + [I(144,15)] = {64,0}, + [I(145,15)] = {64,0}, + [I(146,15)] = {64,0}, + [I(147,15)] = {64,0}, + [I(148,15)] = {64,0}, + [I(149,15)] = {64,0}, + [I(150,15)] = {64,0}, + [I(151,15)] = {64,0}, + [I(152,15)] = {64,0}, + [I(153,15)] = {64,0}, + [I(154,15)] = {64,0}, + [I(155,15)] = {64,0}, + [I(156,15)] = {64,0}, + [I(157,15)] = {64,0}, + [I(158,15)] = {64,0}, + [I(159,15)] = {64,0}, + [I(160,15)] = {64,0}, + [I(161,15)] = {64,0}, + [I(162,15)] = {64,0}, + [I(163,15)] = {64,0}, + [I(164,15)] = {64,0}, + [I(165,15)] = {64,0}, + [I(166,15)] = {64,0}, + [I(167,15)] = {64,0}, + [I(168,15)] = {64,0}, + [I(169,15)] = {64,0}, + [I(170,15)] = {64,0}, + [I(171,15)] = {64,0}, + [I(172,15)] = {64,0}, + [I(173,15)] = {64,0}, + [I(174,15)] = {64,0}, + [I(175,15)] = {64,0}, + [I(176,15)] = {64,0}, + [I(177,15)] = {64,0}, + [I(178,15)] = {64,0}, + [I(179,15)] = {64,0}, + [I(180,15)] = {64,0}, + [I(181,15)] = {64,0}, + [I(182,15)] = {64,0}, + [I(183,15)] = {64,0}, + [I(184,15)] = {64,0}, + [I(185,15)] = {64,0}, + [I(186,15)] = {64,0}, + [I(187,15)] = {64,0}, + [I(188,15)] = {64,0}, + [I(189,15)] = {64,0}, + [I(190,15)] = {64,0}, + [I(191,15)] = {64,0}, + [I(192,15)] = {64,0}, + [I(193,15)] = {64,0}, + [I(194,15)] = {64,0}, + [I(195,15)] = {64,0}, + [I(196,15)] = {64,0}, + [I(197,15)] = {64,0}, + [I(198,15)] = {64,0}, + [I(199,15)] = {64,0}, + [I(200,15)] = {64,0}, + [I(201,15)] = {64,0}, + [I(202,15)] = {64,0}, + [I(203,15)] = {64,0}, + [I(204,15)] = {64,0}, + [I(205,15)] = {64,0}, + [I(206,15)] = {64,0}, + [I(207,15)] = {64,0}, + [I(208,15)] = {64,0}, + [I(209,15)] = {64,0}, + [I(210,15)] = {64,0}, + [I(211,15)] = {64,0}, + [I(212,15)] = {64,0}, + [I(213,15)] = {64,0}, + [I(214,15)] = {64,0}, + [I(215,15)] = {64,0}, + [I(216,15)] = {64,0}, + [I(217,15)] = {64,0}, + [I(218,15)] = {64,0}, + [I(219,15)] = {64,0}, + [I(220,15)] = {64,0}, + [I(221,15)] = {64,0}, + [I(222,15)] = {64,0}, + [I(223,15)] = {64,0}, + [I(224,15)] = {64,0}, + [I(225,15)] = {64,0}, + [I(226,15)] = {64,0}, + [I(227,15)] = {64,0}, + [I(228,15)] = {64,0}, + [I(229,15)] = {64,0}, + [I(230,15)] = {64,0}, + [I(231,15)] = {64,0}, + [I(232,15)] = {64,0}, + [I(233,15)] = {64,0}, + [I(234,15)] = {64,0}, + [I(235,15)] = {64,0}, + [I(236,15)] = {64,0}, + [I(237,15)] = {64,0}, + [I(238,15)] = {64,0}, + [I(239,15)] = {64,0}, + [I(240,15)] = {64,0}, + [I(241,15)] = {64,0}, + [I(242,15)] = {64,0}, + [I(243,15)] = {64,0}, + [I(244,15)] = {64,0}, + [I(245,15)] = {64,0}, + [I(246,15)] = {64,0}, + [I(247,15)] = {64,0}, + [I(248,15)] = {64,0}, + [I(249,15)] = {64,0}, + [I(250,15)] = {64,0}, + [I(251,15)] = {64,0}, + [I(252,15)] = {64,0}, + [I(253,15)] = {64,0}, + [I(254,15)] = {64,0}, + [I(255,15)] = {64,0}, + [I(0,16)] = {64,0}, + [I(1,16)] = {64,0}, + [I(2,16)] = {64,0}, + [I(3,16)] = {64,0}, + [I(4,16)] = {64,0}, + [I(5,16)] = {64,0}, + [I(6,16)] = {64,0}, + [I(7,16)] = {64,0}, + [I(8,16)] = {64,0}, + [I(9,16)] = {64,0}, + [I(10,16)] = {64,0}, + [I(11,16)] = {64,0}, + [I(12,16)] = {64,0}, + [I(13,16)] = {64,0}, + [I(14,16)] = {64,0}, + [I(15,16)] = {64,0}, + [I(16,16)] = {64,0}, + [I(17,16)] = {64,0}, + [I(18,16)] = {64,0}, + [I(19,16)] = {64,0}, + [I(20,16)] = {64,0}, + [I(21,16)] = {64,0}, + [I(22,16)] = {64,0}, + [I(23,16)] = {64,0}, + [I(24,16)] = {64,0}, + [I(25,16)] = {64,0}, + [I(26,16)] = {64,0}, + [I(27,16)] = {64,0}, + [I(28,16)] = {64,0}, + [I(29,16)] = {64,0}, + [I(30,16)] = {64,0}, + [I(31,16)] = {64,0}, + [I(32,16)] = {64,0}, + [I(33,16)] = {64,0}, + [I(34,16)] = {64,0}, + [I(35,16)] = {64,0}, + [I(36,16)] = {64,0}, + [I(37,16)] = {64,0}, + [I(38,16)] = {64,0}, + [I(39,16)] = {64,0}, + [I(40,16)] = {64,0}, + [I(41,16)] = {64,0}, + [I(42,16)] = {64,0}, + [I(43,16)] = {64,0}, + [I(44,16)] = {64,0}, + [I(45,16)] = {64,0}, + [I(46,16)] = {64,0}, + [I(47,16)] = {64,0}, + [I(48,16)] = {64,0}, + [I(49,16)] = {64,0}, + [I(50,16)] = {64,0}, + [I(51,16)] = {64,0}, + [I(52,16)] = {64,0}, + [I(53,16)] = {64,0}, + [I(54,16)] = {64,0}, + [I(55,16)] = {64,0}, + [I(56,16)] = {64,0}, + [I(57,16)] = {64,0}, + [I(58,16)] = {64,0}, + [I(59,16)] = {64,0}, + [I(60,16)] = {64,0}, + [I(61,16)] = {64,0}, + [I(62,16)] = {64,0}, + [I(63,16)] = {64,0}, + [I(64,16)] = {64,0}, + [I(65,16)] = {64,0}, + [I(66,16)] = {64,0}, + [I(67,16)] = {64,0}, + [I(68,16)] = {64,0}, + [I(69,16)] = {64,0}, + [I(70,16)] = {64,0}, + [I(71,16)] = {64,0}, + [I(72,16)] = {64,0}, + [I(73,16)] = {64,0}, + [I(74,16)] = {64,0}, + [I(75,16)] = {64,0}, + [I(76,16)] = {64,0}, + [I(77,16)] = {64,0}, + [I(78,16)] = {64,0}, + [I(79,16)] = {64,0}, + [I(80,16)] = {64,0}, + [I(81,16)] = {64,0}, + [I(82,16)] = {64,0}, + [I(83,16)] = {64,0}, + [I(84,16)] = {64,0}, + [I(85,16)] = {64,0}, + [I(86,16)] = {64,0}, + [I(87,16)] = {64,0}, + [I(88,16)] = {64,0}, + [I(89,16)] = {64,0}, + [I(90,16)] = {64,0}, + [I(91,16)] = {64,0}, + [I(92,16)] = {64,0}, + [I(93,16)] = {64,0}, + [I(94,16)] = {64,0}, + [I(95,16)] = {64,0}, + [I(96,16)] = {64,0}, + [I(97,16)] = {64,0}, + [I(98,16)] = {64,0}, + [I(99,16)] = {64,0}, + [I(100,16)] = {64,0}, + [I(101,16)] = {64,0}, + [I(102,16)] = {64,0}, + [I(103,16)] = {64,0}, + [I(104,16)] = {64,0}, + [I(105,16)] = {64,0}, + [I(106,16)] = {64,0}, + [I(107,16)] = {64,0}, + [I(108,16)] = {64,0}, + [I(109,16)] = {64,0}, + [I(110,16)] = {64,0}, + [I(111,16)] = {64,0}, + [I(112,16)] = {64,0}, + [I(113,16)] = {64,0}, + [I(114,16)] = {64,0}, + [I(115,16)] = {64,0}, + [I(116,16)] = {64,0}, + [I(117,16)] = {64,0}, + [I(118,16)] = {64,0}, + [I(119,16)] = {64,0}, + [I(120,16)] = {64,0}, + [I(121,16)] = {64,0}, + [I(122,16)] = {64,0}, + [I(123,16)] = {64,0}, + [I(124,16)] = {64,0}, + [I(125,16)] = {64,0}, + [I(126,16)] = {64,0}, + [I(127,16)] = {64,0}, + [I(128,16)] = {64,0}, + [I(129,16)] = {64,0}, + [I(130,16)] = {64,0}, + [I(131,16)] = {64,0}, + [I(132,16)] = {64,0}, + [I(133,16)] = {64,0}, + [I(134,16)] = {64,0}, + [I(135,16)] = {64,0}, + [I(136,16)] = {64,0}, + [I(137,16)] = {64,0}, + [I(138,16)] = {64,0}, + [I(139,16)] = {64,0}, + [I(140,16)] = {64,0}, + [I(141,16)] = {64,0}, + [I(142,16)] = {64,0}, + [I(143,16)] = {64,0}, + [I(144,16)] = {64,0}, + [I(145,16)] = {64,0}, + [I(146,16)] = {64,0}, + [I(147,16)] = {64,0}, + [I(148,16)] = {64,0}, + [I(149,16)] = {64,0}, + [I(150,16)] = {64,0}, + [I(151,16)] = {64,0}, + [I(152,16)] = {64,0}, + [I(153,16)] = {64,0}, + [I(154,16)] = {64,0}, + [I(155,16)] = {64,0}, + [I(156,16)] = {64,0}, + [I(157,16)] = {64,0}, + [I(158,16)] = {64,0}, + [I(159,16)] = {64,0}, + [I(160,16)] = {64,0}, + [I(161,16)] = {64,0}, + [I(162,16)] = {64,0}, + [I(163,16)] = {64,0}, + [I(164,16)] = {64,0}, + [I(165,16)] = {64,0}, + [I(166,16)] = {64,0}, + [I(167,16)] = {64,0}, + [I(168,16)] = {64,0}, + [I(169,16)] = {64,0}, + [I(170,16)] = {64,0}, + [I(171,16)] = {64,0}, + [I(172,16)] = {64,0}, + [I(173,16)] = {64,0}, + [I(174,16)] = {64,0}, + [I(175,16)] = {64,0}, + [I(176,16)] = {64,0}, + [I(177,16)] = {64,0}, + [I(178,16)] = {64,0}, + [I(179,16)] = {64,0}, + [I(180,16)] = {64,0}, + [I(181,16)] = {64,0}, + [I(182,16)] = {64,0}, + [I(183,16)] = {64,0}, + [I(184,16)] = {64,0}, + [I(185,16)] = {64,0}, + [I(186,16)] = {64,0}, + [I(187,16)] = {64,0}, + [I(188,16)] = {64,0}, + [I(189,16)] = {64,0}, + [I(190,16)] = {64,0}, + [I(191,16)] = {64,0}, + [I(192,16)] = {64,0}, + [I(193,16)] = {64,0}, + [I(194,16)] = {64,0}, + [I(195,16)] = {64,0}, + [I(196,16)] = {64,0}, + [I(197,16)] = {64,0}, + [I(198,16)] = {64,0}, + [I(199,16)] = {64,0}, + [I(200,16)] = {64,0}, + [I(201,16)] = {64,0}, + [I(202,16)] = {64,0}, + [I(203,16)] = {64,0}, + [I(204,16)] = {64,0}, + [I(205,16)] = {64,0}, + [I(206,16)] = {64,0}, + [I(207,16)] = {64,0}, + [I(208,16)] = {64,0}, + [I(209,16)] = {64,0}, + [I(210,16)] = {64,0}, + [I(211,16)] = {64,0}, + [I(212,16)] = {64,0}, + [I(213,16)] = {64,0}, + [I(214,16)] = {64,0}, + [I(215,16)] = {64,0}, + [I(216,16)] = {64,0}, + [I(217,16)] = {64,0}, + [I(218,16)] = {64,0}, + [I(219,16)] = {64,0}, + [I(220,16)] = {64,0}, + [I(221,16)] = {64,0}, + [I(222,16)] = {64,0}, + [I(223,16)] = {64,0}, + [I(224,16)] = {64,0}, + [I(225,16)] = {64,0}, + [I(226,16)] = {64,0}, + [I(227,16)] = {64,0}, + [I(228,16)] = {64,0}, + [I(229,16)] = {64,0}, + [I(230,16)] = {64,0}, + [I(231,16)] = {64,0}, + [I(232,16)] = {64,0}, + [I(233,16)] = {64,0}, + [I(234,16)] = {64,0}, + [I(235,16)] = {64,0}, + [I(236,16)] = {64,0}, + [I(237,16)] = {64,0}, + [I(238,16)] = {64,0}, + [I(239,16)] = {64,0}, + [I(240,16)] = {64,0}, + [I(241,16)] = {64,0}, + [I(242,16)] = {64,0}, + [I(243,16)] = {64,0}, + [I(244,16)] = {64,0}, + [I(245,16)] = {64,0}, + [I(246,16)] = {64,0}, + [I(247,16)] = {64,0}, + [I(248,16)] = {64,0}, + [I(249,16)] = {64,0}, + [I(250,16)] = {64,0}, + [I(251,16)] = {64,0}, + [I(252,16)] = {64,0}, + [I(253,16)] = {64,0}, + [I(254,16)] = {64,0}, + [I(255,16)] = {64,0}, + [I(0,17)] = {64,0}, + [I(1,17)] = {64,0}, + [I(2,17)] = {64,0}, + [I(3,17)] = {64,0}, + [I(4,17)] = {64,0}, + [I(5,17)] = {64,0}, + [I(6,17)] = {64,0}, + [I(7,17)] = {64,0}, + [I(8,17)] = {64,0}, + [I(9,17)] = {64,0}, + [I(10,17)] = {64,0}, + [I(11,17)] = {64,0}, + [I(12,17)] = {64,0}, + [I(13,17)] = {64,0}, + [I(14,17)] = {64,0}, + [I(15,17)] = {64,0}, + [I(16,17)] = {64,0}, + [I(17,17)] = {64,0}, + [I(18,17)] = {64,0}, + [I(19,17)] = {64,0}, + [I(20,17)] = {64,0}, + [I(21,17)] = {64,0}, + [I(22,17)] = {64,0}, + [I(23,17)] = {64,0}, + [I(24,17)] = {64,0}, + [I(25,17)] = {64,0}, + [I(26,17)] = {64,0}, + [I(27,17)] = {64,0}, + [I(28,17)] = {64,0}, + [I(29,17)] = {64,0}, + [I(30,17)] = {64,0}, + [I(31,17)] = {64,0}, + [I(32,17)] = {64,0}, + [I(33,17)] = {64,0}, + [I(34,17)] = {64,0}, + [I(35,17)] = {64,0}, + [I(36,17)] = {64,0}, + [I(37,17)] = {64,0}, + [I(38,17)] = {64,0}, + [I(39,17)] = {64,0}, + [I(40,17)] = {64,0}, + [I(41,17)] = {64,0}, + [I(42,17)] = {64,0}, + [I(43,17)] = {64,0}, + [I(44,17)] = {64,0}, + [I(45,17)] = {64,0}, + [I(46,17)] = {64,0}, + [I(47,17)] = {64,0}, + [I(48,17)] = {64,0}, + [I(49,17)] = {64,0}, + [I(50,17)] = {64,0}, + [I(51,17)] = {64,0}, + [I(52,17)] = {64,0}, + [I(53,17)] = {64,0}, + [I(54,17)] = {64,0}, + [I(55,17)] = {64,0}, + [I(56,17)] = {64,0}, + [I(57,17)] = {64,0}, + [I(58,17)] = {64,0}, + [I(59,17)] = {64,0}, + [I(60,17)] = {64,0}, + [I(61,17)] = {64,0}, + [I(62,17)] = {64,0}, + [I(63,17)] = {64,0}, + [I(64,17)] = {64,0}, + [I(65,17)] = {64,0}, + [I(66,17)] = {64,0}, + [I(67,17)] = {64,0}, + [I(68,17)] = {64,0}, + [I(69,17)] = {64,0}, + [I(70,17)] = {64,0}, + [I(71,17)] = {64,0}, + [I(72,17)] = {64,0}, + [I(73,17)] = {64,0}, + [I(74,17)] = {64,0}, + [I(75,17)] = {64,0}, + [I(76,17)] = {64,0}, + [I(77,17)] = {64,0}, + [I(78,17)] = {64,0}, + [I(79,17)] = {64,0}, + [I(80,17)] = {64,0}, + [I(81,17)] = {64,0}, + [I(82,17)] = {64,0}, + [I(83,17)] = {64,0}, + [I(84,17)] = {64,0}, + [I(85,17)] = {64,0}, + [I(86,17)] = {64,0}, + [I(87,17)] = {64,0}, + [I(88,17)] = {64,0}, + [I(89,17)] = {64,0}, + [I(90,17)] = {64,0}, + [I(91,17)] = {64,0}, + [I(92,17)] = {64,0}, + [I(93,17)] = {64,0}, + [I(94,17)] = {64,0}, + [I(95,17)] = {64,0}, + [I(96,17)] = {64,0}, + [I(97,17)] = {64,0}, + [I(98,17)] = {64,0}, + [I(99,17)] = {64,0}, + [I(100,17)] = {64,0}, + [I(101,17)] = {64,0}, + [I(102,17)] = {64,0}, + [I(103,17)] = {64,0}, + [I(104,17)] = {64,0}, + [I(105,17)] = {64,0}, + [I(106,17)] = {64,0}, + [I(107,17)] = {64,0}, + [I(108,17)] = {64,0}, + [I(109,17)] = {64,0}, + [I(110,17)] = {64,0}, + [I(111,17)] = {64,0}, + [I(112,17)] = {64,0}, + [I(113,17)] = {64,0}, + [I(114,17)] = {64,0}, + [I(115,17)] = {64,0}, + [I(116,17)] = {64,0}, + [I(117,17)] = {64,0}, + [I(118,17)] = {64,0}, + [I(119,17)] = {64,0}, + [I(120,17)] = {64,0}, + [I(121,17)] = {64,0}, + [I(122,17)] = {64,0}, + [I(123,17)] = {64,0}, + [I(124,17)] = {64,0}, + [I(125,17)] = {64,0}, + [I(126,17)] = {64,0}, + [I(127,17)] = {64,0}, + [I(128,17)] = {64,0}, + [I(129,17)] = {64,0}, + [I(130,17)] = {64,0}, + [I(131,17)] = {64,0}, + [I(132,17)] = {64,0}, + [I(133,17)] = {64,0}, + [I(134,17)] = {64,0}, + [I(135,17)] = {64,0}, + [I(136,17)] = {64,0}, + [I(137,17)] = {64,0}, + [I(138,17)] = {64,0}, + [I(139,17)] = {64,0}, + [I(140,17)] = {64,0}, + [I(141,17)] = {64,0}, + [I(142,17)] = {64,0}, + [I(143,17)] = {64,0}, + [I(144,17)] = {64,0}, + [I(145,17)] = {64,0}, + [I(146,17)] = {64,0}, + [I(147,17)] = {64,0}, + [I(148,17)] = {64,0}, + [I(149,17)] = {64,0}, + [I(150,17)] = {64,0}, + [I(151,17)] = {64,0}, + [I(152,17)] = {64,0}, + [I(153,17)] = {64,0}, + [I(154,17)] = {64,0}, + [I(155,17)] = {64,0}, + [I(156,17)] = {64,0}, + [I(157,17)] = {64,0}, + [I(158,17)] = {64,0}, + [I(159,17)] = {64,0}, + [I(160,17)] = {64,0}, + [I(161,17)] = {64,0}, + [I(162,17)] = {64,0}, + [I(163,17)] = {64,0}, + [I(164,17)] = {64,0}, + [I(165,17)] = {64,0}, + [I(166,17)] = {64,0}, + [I(167,17)] = {64,0}, + [I(168,17)] = {64,0}, + [I(169,17)] = {64,0}, + [I(170,17)] = {64,0}, + [I(171,17)] = {64,0}, + [I(172,17)] = {64,0}, + [I(173,17)] = {64,0}, + [I(174,17)] = {64,0}, + [I(175,17)] = {64,0}, + [I(176,17)] = {64,0}, + [I(177,17)] = {64,0}, + [I(178,17)] = {64,0}, + [I(179,17)] = {64,0}, + [I(180,17)] = {64,0}, + [I(181,17)] = {64,0}, + [I(182,17)] = {64,0}, + [I(183,17)] = {64,0}, + [I(184,17)] = {64,0}, + [I(185,17)] = {64,0}, + [I(186,17)] = {64,0}, + [I(187,17)] = {64,0}, + [I(188,17)] = {64,0}, + [I(189,17)] = {64,0}, + [I(190,17)] = {64,0}, + [I(191,17)] = {64,0}, + [I(192,17)] = {64,0}, + [I(193,17)] = {64,0}, + [I(194,17)] = {64,0}, + [I(195,17)] = {64,0}, + [I(196,17)] = {64,0}, + [I(197,17)] = {64,0}, + [I(198,17)] = {64,0}, + [I(199,17)] = {64,0}, + [I(200,17)] = {64,0}, + [I(201,17)] = {64,0}, + [I(202,17)] = {64,0}, + [I(203,17)] = {64,0}, + [I(204,17)] = {64,0}, + [I(205,17)] = {64,0}, + [I(206,17)] = {64,0}, + [I(207,17)] = {64,0}, + [I(208,17)] = {64,0}, + [I(209,17)] = {64,0}, + [I(210,17)] = {64,0}, + [I(211,17)] = {64,0}, + [I(212,17)] = {64,0}, + [I(213,17)] = {64,0}, + [I(214,17)] = {64,0}, + [I(215,17)] = {64,0}, + [I(216,17)] = {64,0}, + [I(217,17)] = {64,0}, + [I(218,17)] = {64,0}, + [I(219,17)] = {64,0}, + [I(220,17)] = {64,0}, + [I(221,17)] = {64,0}, + [I(222,17)] = {64,0}, + [I(223,17)] = {64,0}, + [I(224,17)] = {64,0}, + [I(225,17)] = {64,0}, + [I(226,17)] = {64,0}, + [I(227,17)] = {64,0}, + [I(228,17)] = {64,0}, + [I(229,17)] = {64,0}, + [I(230,17)] = {64,0}, + [I(231,17)] = {64,0}, + [I(232,17)] = {64,0}, + [I(233,17)] = {64,0}, + [I(234,17)] = {64,0}, + [I(235,17)] = {64,0}, + [I(236,17)] = {64,0}, + [I(237,17)] = {64,0}, + [I(238,17)] = {64,0}, + [I(239,17)] = {64,0}, + [I(240,17)] = {64,0}, + [I(241,17)] = {64,0}, + [I(242,17)] = {64,0}, + [I(243,17)] = {64,0}, + [I(244,17)] = {64,0}, + [I(245,17)] = {64,0}, + [I(246,17)] = {64,0}, + [I(247,17)] = {64,0}, + [I(248,17)] = {64,0}, + [I(249,17)] = {64,0}, + [I(250,17)] = {64,0}, + [I(251,17)] = {64,0}, + [I(252,17)] = {64,0}, + [I(253,17)] = {64,0}, + [I(254,17)] = {64,0}, + [I(255,17)] = {64,0}, + [I(0,18)] = {64,0}, + [I(1,18)] = {64,0}, + [I(2,18)] = {64,0}, + [I(3,18)] = {64,0}, + [I(4,18)] = {64,0}, + [I(5,18)] = {64,0}, + [I(6,18)] = {64,0}, + [I(7,18)] = {64,0}, + [I(8,18)] = {64,0}, + [I(9,18)] = {64,0}, + [I(10,18)] = {64,0}, + [I(11,18)] = {64,0}, + [I(12,18)] = {64,0}, + [I(13,18)] = {64,0}, + [I(14,18)] = {64,0}, + [I(15,18)] = {64,0}, + [I(16,18)] = {64,0}, + [I(17,18)] = {64,0}, + [I(18,18)] = {64,0}, + [I(19,18)] = {64,0}, + [I(20,18)] = {64,0}, + [I(21,18)] = {64,0}, + [I(22,18)] = {64,0}, + [I(23,18)] = {64,0}, + [I(24,18)] = {64,0}, + [I(25,18)] = {64,0}, + [I(26,18)] = {64,0}, + [I(27,18)] = {64,0}, + [I(28,18)] = {64,0}, + [I(29,18)] = {64,0}, + [I(30,18)] = {64,0}, + [I(31,18)] = {64,0}, + [I(32,18)] = {64,0}, + [I(33,18)] = {64,0}, + [I(34,18)] = {64,0}, + [I(35,18)] = {64,0}, + [I(36,18)] = {64,0}, + [I(37,18)] = {64,0}, + [I(38,18)] = {64,0}, + [I(39,18)] = {64,0}, + [I(40,18)] = {64,0}, + [I(41,18)] = {64,0}, + [I(42,18)] = {64,0}, + [I(43,18)] = {64,0}, + [I(44,18)] = {64,0}, + [I(45,18)] = {64,0}, + [I(46,18)] = {64,0}, + [I(47,18)] = {64,0}, + [I(48,18)] = {64,0}, + [I(49,18)] = {64,0}, + [I(50,18)] = {64,0}, + [I(51,18)] = {64,0}, + [I(52,18)] = {64,0}, + [I(53,18)] = {64,0}, + [I(54,18)] = {64,0}, + [I(55,18)] = {64,0}, + [I(56,18)] = {64,0}, + [I(57,18)] = {64,0}, + [I(58,18)] = {64,0}, + [I(59,18)] = {64,0}, + [I(60,18)] = {64,0}, + [I(61,18)] = {64,0}, + [I(62,18)] = {64,0}, + [I(63,18)] = {64,0}, + [I(64,18)] = {64,0}, + [I(65,18)] = {64,0}, + [I(66,18)] = {64,0}, + [I(67,18)] = {64,0}, + [I(68,18)] = {64,0}, + [I(69,18)] = {64,0}, + [I(70,18)] = {64,0}, + [I(71,18)] = {64,0}, + [I(72,18)] = {64,0}, + [I(73,18)] = {64,0}, + [I(74,18)] = {64,0}, + [I(75,18)] = {64,0}, + [I(76,18)] = {64,0}, + [I(77,18)] = {64,0}, + [I(78,18)] = {64,0}, + [I(79,18)] = {64,0}, + [I(80,18)] = {64,0}, + [I(81,18)] = {64,0}, + [I(82,18)] = {64,0}, + [I(83,18)] = {64,0}, + [I(84,18)] = {64,0}, + [I(85,18)] = {64,0}, + [I(86,18)] = {64,0}, + [I(87,18)] = {64,0}, + [I(88,18)] = {64,0}, + [I(89,18)] = {64,0}, + [I(90,18)] = {64,0}, + [I(91,18)] = {64,0}, + [I(92,18)] = {64,0}, + [I(93,18)] = {64,0}, + [I(94,18)] = {64,0}, + [I(95,18)] = {64,0}, + [I(96,18)] = {64,0}, + [I(97,18)] = {64,0}, + [I(98,18)] = {64,0}, + [I(99,18)] = {64,0}, + [I(100,18)] = {64,0}, + [I(101,18)] = {64,0}, + [I(102,18)] = {64,0}, + [I(103,18)] = {64,0}, + [I(104,18)] = {64,0}, + [I(105,18)] = {64,0}, + [I(106,18)] = {64,0}, + [I(107,18)] = {64,0}, + [I(108,18)] = {64,0}, + [I(109,18)] = {64,0}, + [I(110,18)] = {64,0}, + [I(111,18)] = {64,0}, + [I(112,18)] = {64,0}, + [I(113,18)] = {64,0}, + [I(114,18)] = {64,0}, + [I(115,18)] = {64,0}, + [I(116,18)] = {64,0}, + [I(117,18)] = {64,0}, + [I(118,18)] = {64,0}, + [I(119,18)] = {64,0}, + [I(120,18)] = {64,0}, + [I(121,18)] = {64,0}, + [I(122,18)] = {64,0}, + [I(123,18)] = {64,0}, + [I(124,18)] = {64,0}, + [I(125,18)] = {64,0}, + [I(126,18)] = {64,0}, + [I(127,18)] = {64,0}, + [I(128,18)] = {64,0}, + [I(129,18)] = {64,0}, + [I(130,18)] = {64,0}, + [I(131,18)] = {64,0}, + [I(132,18)] = {64,0}, + [I(133,18)] = {64,0}, + [I(134,18)] = {64,0}, + [I(135,18)] = {64,0}, + [I(136,18)] = {64,0}, + [I(137,18)] = {64,0}, + [I(138,18)] = {64,0}, + [I(139,18)] = {64,0}, + [I(140,18)] = {64,0}, + [I(141,18)] = {64,0}, + [I(142,18)] = {64,0}, + [I(143,18)] = {64,0}, + [I(144,18)] = {64,0}, + [I(145,18)] = {64,0}, + [I(146,18)] = {64,0}, + [I(147,18)] = {64,0}, + [I(148,18)] = {64,0}, + [I(149,18)] = {64,0}, + [I(150,18)] = {64,0}, + [I(151,18)] = {64,0}, + [I(152,18)] = {64,0}, + [I(153,18)] = {64,0}, + [I(154,18)] = {64,0}, + [I(155,18)] = {64,0}, + [I(156,18)] = {64,0}, + [I(157,18)] = {64,0}, + [I(158,18)] = {64,0}, + [I(159,18)] = {64,0}, + [I(160,18)] = {64,0}, + [I(161,18)] = {64,0}, + [I(162,18)] = {64,0}, + [I(163,18)] = {64,0}, + [I(164,18)] = {64,0}, + [I(165,18)] = {64,0}, + [I(166,18)] = {64,0}, + [I(167,18)] = {64,0}, + [I(168,18)] = {64,0}, + [I(169,18)] = {64,0}, + [I(170,18)] = {64,0}, + [I(171,18)] = {64,0}, + [I(172,18)] = {64,0}, + [I(173,18)] = {64,0}, + [I(174,18)] = {64,0}, + [I(175,18)] = {64,0}, + [I(176,18)] = {64,0}, + [I(177,18)] = {64,0}, + [I(178,18)] = {64,0}, + [I(179,18)] = {64,0}, + [I(180,18)] = {64,0}, + [I(181,18)] = {64,0}, + [I(182,18)] = {64,0}, + [I(183,18)] = {64,0}, + [I(184,18)] = {64,0}, + [I(185,18)] = {64,0}, + [I(186,18)] = {64,0}, + [I(187,18)] = {64,0}, + [I(188,18)] = {64,0}, + [I(189,18)] = {64,0}, + [I(190,18)] = {64,0}, + [I(191,18)] = {64,0}, + [I(192,18)] = {64,0}, + [I(193,18)] = {64,0}, + [I(194,18)] = {64,0}, + [I(195,18)] = {64,0}, + [I(196,18)] = {64,0}, + [I(197,18)] = {64,0}, + [I(198,18)] = {64,0}, + [I(199,18)] = {64,0}, + [I(200,18)] = {64,0}, + [I(201,18)] = {64,0}, + [I(202,18)] = {64,0}, + [I(203,18)] = {64,0}, + [I(204,18)] = {64,0}, + [I(205,18)] = {64,0}, + [I(206,18)] = {64,0}, + [I(207,18)] = {64,0}, + [I(208,18)] = {64,0}, + [I(209,18)] = {64,0}, + [I(210,18)] = {64,0}, + [I(211,18)] = {64,0}, + [I(212,18)] = {64,0}, + [I(213,18)] = {64,0}, + [I(214,18)] = {64,0}, + [I(215,18)] = {64,0}, + [I(216,18)] = {64,0}, + [I(217,18)] = {64,0}, + [I(218,18)] = {64,0}, + [I(219,18)] = {64,0}, + [I(220,18)] = {64,0}, + [I(221,18)] = {64,0}, + [I(222,18)] = {64,0}, + [I(223,18)] = {64,0}, + [I(224,18)] = {64,0}, + [I(225,18)] = {64,0}, + [I(226,18)] = {64,0}, + [I(227,18)] = {64,0}, + [I(228,18)] = {64,0}, + [I(229,18)] = {64,0}, + [I(230,18)] = {64,0}, + [I(231,18)] = {64,0}, + [I(232,18)] = {64,0}, + [I(233,18)] = {64,0}, + [I(234,18)] = {64,0}, + [I(235,18)] = {64,0}, + [I(236,18)] = {64,0}, + [I(237,18)] = {64,0}, + [I(238,18)] = {64,0}, + [I(239,18)] = {64,0}, + [I(240,18)] = {64,0}, + [I(241,18)] = {64,0}, + [I(242,18)] = {64,0}, + [I(243,18)] = {64,0}, + [I(244,18)] = {64,0}, + [I(245,18)] = {64,0}, + [I(246,18)] = {64,0}, + [I(247,18)] = {64,0}, + [I(248,18)] = {64,0}, + [I(249,18)] = {64,0}, + [I(250,18)] = {64,0}, + [I(251,18)] = {64,0}, + [I(252,18)] = {64,0}, + [I(253,18)] = {64,0}, + [I(254,18)] = {64,0}, + [I(255,18)] = {64,0}, + [I(0,19)] = {64,0}, + [I(1,19)] = {64,0}, + [I(2,19)] = {64,0}, + [I(3,19)] = {64,0}, + [I(4,19)] = {64,0}, + [I(5,19)] = {64,0}, + [I(6,19)] = {64,0}, + [I(7,19)] = {64,0}, + [I(8,19)] = {64,0}, + [I(9,19)] = {64,0}, + [I(10,19)] = {64,0}, + [I(11,19)] = {64,0}, + [I(12,19)] = {64,0}, + [I(13,19)] = {64,0}, + [I(14,19)] = {64,0}, + [I(15,19)] = {64,0}, + [I(16,19)] = {64,0}, + [I(17,19)] = {64,0}, + [I(18,19)] = {64,0}, + [I(19,19)] = {64,0}, + [I(20,19)] = {64,0}, + [I(21,19)] = {64,0}, + [I(22,19)] = {64,0}, + [I(23,19)] = {64,0}, + [I(24,19)] = {64,0}, + [I(25,19)] = {64,0}, + [I(26,19)] = {64,0}, + [I(27,19)] = {64,0}, + [I(28,19)] = {64,0}, + [I(29,19)] = {64,0}, + [I(30,19)] = {64,0}, + [I(31,19)] = {64,0}, + [I(32,19)] = {64,0}, + [I(33,19)] = {64,0}, + [I(34,19)] = {64,0}, + [I(35,19)] = {64,0}, + [I(36,19)] = {64,0}, + [I(37,19)] = {64,0}, + [I(38,19)] = {64,0}, + [I(39,19)] = {64,0}, + [I(40,19)] = {64,0}, + [I(41,19)] = {64,0}, + [I(42,19)] = {64,0}, + [I(43,19)] = {64,0}, + [I(44,19)] = {64,0}, + [I(45,19)] = {64,0}, + [I(46,19)] = {64,0}, + [I(47,19)] = {64,0}, + [I(48,19)] = {64,0}, + [I(49,19)] = {64,0}, + [I(50,19)] = {64,0}, + [I(51,19)] = {64,0}, + [I(52,19)] = {64,0}, + [I(53,19)] = {64,0}, + [I(54,19)] = {64,0}, + [I(55,19)] = {64,0}, + [I(56,19)] = {64,0}, + [I(57,19)] = {64,0}, + [I(58,19)] = {64,0}, + [I(59,19)] = {64,0}, + [I(60,19)] = {64,0}, + [I(61,19)] = {64,0}, + [I(62,19)] = {64,0}, + [I(63,19)] = {64,0}, + [I(64,19)] = {64,0}, + [I(65,19)] = {64,0}, + [I(66,19)] = {64,0}, + [I(67,19)] = {64,0}, + [I(68,19)] = {64,0}, + [I(69,19)] = {64,0}, + [I(70,19)] = {64,0}, + [I(71,19)] = {64,0}, + [I(72,19)] = {64,0}, + [I(73,19)] = {64,0}, + [I(74,19)] = {64,0}, + [I(75,19)] = {64,0}, + [I(76,19)] = {64,0}, + [I(77,19)] = {64,0}, + [I(78,19)] = {64,0}, + [I(79,19)] = {64,0}, + [I(80,19)] = {64,0}, + [I(81,19)] = {64,0}, + [I(82,19)] = {64,0}, + [I(83,19)] = {64,0}, + [I(84,19)] = {64,0}, + [I(85,19)] = {64,0}, + [I(86,19)] = {64,0}, + [I(87,19)] = {64,0}, + [I(88,19)] = {64,0}, + [I(89,19)] = {64,0}, + [I(90,19)] = {64,0}, + [I(91,19)] = {64,0}, + [I(92,19)] = {64,0}, + [I(93,19)] = {64,0}, + [I(94,19)] = {64,0}, + [I(95,19)] = {64,0}, + [I(96,19)] = {64,0}, + [I(97,19)] = {64,0}, + [I(98,19)] = {64,0}, + [I(99,19)] = {64,0}, + [I(100,19)] = {64,0}, + [I(101,19)] = {64,0}, + [I(102,19)] = {64,0}, + [I(103,19)] = {64,0}, + [I(104,19)] = {64,0}, + [I(105,19)] = {64,0}, + [I(106,19)] = {64,0}, + [I(107,19)] = {64,0}, + [I(108,19)] = {64,0}, + [I(109,19)] = {64,0}, + [I(110,19)] = {64,0}, + [I(111,19)] = {64,0}, + [I(112,19)] = {64,0}, + [I(113,19)] = {64,0}, + [I(114,19)] = {64,0}, + [I(115,19)] = {64,0}, + [I(116,19)] = {64,0}, + [I(117,19)] = {64,0}, + [I(118,19)] = {64,0}, + [I(119,19)] = {64,0}, + [I(120,19)] = {64,0}, + [I(121,19)] = {64,0}, + [I(122,19)] = {64,0}, + [I(123,19)] = {64,0}, + [I(124,19)] = {64,0}, + [I(125,19)] = {64,0}, + [I(126,19)] = {64,0}, + [I(127,19)] = {64,0}, + [I(128,19)] = {64,0}, + [I(129,19)] = {64,0}, + [I(130,19)] = {64,0}, + [I(131,19)] = {64,0}, + [I(132,19)] = {64,0}, + [I(133,19)] = {64,0}, + [I(134,19)] = {64,0}, + [I(135,19)] = {64,0}, + [I(136,19)] = {64,0}, + [I(137,19)] = {64,0}, + [I(138,19)] = {64,0}, + [I(139,19)] = {64,0}, + [I(140,19)] = {64,0}, + [I(141,19)] = {64,0}, + [I(142,19)] = {64,0}, + [I(143,19)] = {64,0}, + [I(144,19)] = {64,0}, + [I(145,19)] = {64,0}, + [I(146,19)] = {64,0}, + [I(147,19)] = {64,0}, + [I(148,19)] = {64,0}, + [I(149,19)] = {64,0}, + [I(150,19)] = {64,0}, + [I(151,19)] = {64,0}, + [I(152,19)] = {64,0}, + [I(153,19)] = {64,0}, + [I(154,19)] = {64,0}, + [I(155,19)] = {64,0}, + [I(156,19)] = {64,0}, + [I(157,19)] = {64,0}, + [I(158,19)] = {64,0}, + [I(159,19)] = {64,0}, + [I(160,19)] = {64,0}, + [I(161,19)] = {64,0}, + [I(162,19)] = {64,0}, + [I(163,19)] = {64,0}, + [I(164,19)] = {64,0}, + [I(165,19)] = {64,0}, + [I(166,19)] = {64,0}, + [I(167,19)] = {64,0}, + [I(168,19)] = {64,0}, + [I(169,19)] = {64,0}, + [I(170,19)] = {64,0}, + [I(171,19)] = {64,0}, + [I(172,19)] = {64,0}, + [I(173,19)] = {64,0}, + [I(174,19)] = {64,0}, + [I(175,19)] = {64,0}, + [I(176,19)] = {64,0}, + [I(177,19)] = {64,0}, + [I(178,19)] = {64,0}, + [I(179,19)] = {64,0}, + [I(180,19)] = {64,0}, + [I(181,19)] = {64,0}, + [I(182,19)] = {64,0}, + [I(183,19)] = {64,0}, + [I(184,19)] = {64,0}, + [I(185,19)] = {64,0}, + [I(186,19)] = {64,0}, + [I(187,19)] = {64,0}, + [I(188,19)] = {64,0}, + [I(189,19)] = {64,0}, + [I(190,19)] = {64,0}, + [I(191,19)] = {64,0}, + [I(192,19)] = {64,0}, + [I(193,19)] = {64,0}, + [I(194,19)] = {64,0}, + [I(195,19)] = {64,0}, + [I(196,19)] = {64,0}, + [I(197,19)] = {64,0}, + [I(198,19)] = {64,0}, + [I(199,19)] = {64,0}, + [I(200,19)] = {64,0}, + [I(201,19)] = {64,0}, + [I(202,19)] = {64,0}, + [I(203,19)] = {64,0}, + [I(204,19)] = {64,0}, + [I(205,19)] = {64,0}, + [I(206,19)] = {64,0}, + [I(207,19)] = {64,0}, + [I(208,19)] = {64,0}, + [I(209,19)] = {64,0}, + [I(210,19)] = {64,0}, + [I(211,19)] = {64,0}, + [I(212,19)] = {64,0}, + [I(213,19)] = {64,0}, + [I(214,19)] = {64,0}, + [I(215,19)] = {64,0}, + [I(216,19)] = {64,0}, + [I(217,19)] = {64,0}, + [I(218,19)] = {64,0}, + [I(219,19)] = {64,0}, + [I(220,19)] = {64,0}, + [I(221,19)] = {64,0}, + [I(222,19)] = {64,0}, + [I(223,19)] = {64,0}, + [I(224,19)] = {64,0}, + [I(225,19)] = {64,0}, + [I(226,19)] = {64,0}, + [I(227,19)] = {64,0}, + [I(228,19)] = {64,0}, + [I(229,19)] = {64,0}, + [I(230,19)] = {64,0}, + [I(231,19)] = {64,0}, + [I(232,19)] = {64,0}, + [I(233,19)] = {64,0}, + [I(234,19)] = {64,0}, + [I(235,19)] = {64,0}, + [I(236,19)] = {64,0}, + [I(237,19)] = {64,0}, + [I(238,19)] = {64,0}, + [I(239,19)] = {64,0}, + [I(240,19)] = {64,0}, + [I(241,19)] = {64,0}, + [I(242,19)] = {64,0}, + [I(243,19)] = {64,0}, + [I(244,19)] = {64,0}, + [I(245,19)] = {64,0}, + [I(246,19)] = {64,0}, + [I(247,19)] = {64,0}, + [I(248,19)] = {64,0}, + [I(249,19)] = {64,0}, + [I(250,19)] = {64,0}, + [I(251,19)] = {64,0}, + [I(252,19)] = {64,0}, + [I(253,19)] = {64,0}, + [I(254,19)] = {64,0}, + [I(255,19)] = {64,0}, + [I(0,20)] = {64,0}, + [I(1,20)] = {64,0}, + [I(2,20)] = {64,0}, + [I(3,20)] = {64,0}, + [I(4,20)] = {64,0}, + [I(5,20)] = {64,0}, + [I(6,20)] = {64,0}, + [I(7,20)] = {64,0}, + [I(8,20)] = {64,0}, + [I(9,20)] = {64,0}, + [I(10,20)] = {64,0}, + [I(11,20)] = {64,0}, + [I(12,20)] = {64,0}, + [I(13,20)] = {64,0}, + [I(14,20)] = {64,0}, + [I(15,20)] = {64,0}, + [I(16,20)] = {64,0}, + [I(17,20)] = {64,0}, + [I(18,20)] = {64,0}, + [I(19,20)] = {64,0}, + [I(20,20)] = {64,0}, + [I(21,20)] = {64,0}, + [I(22,20)] = {64,0}, + [I(23,20)] = {64,0}, + [I(24,20)] = {64,0}, + [I(25,20)] = {64,0}, + [I(26,20)] = {64,0}, + [I(27,20)] = {64,0}, + [I(28,20)] = {64,0}, + [I(29,20)] = {64,0}, + [I(30,20)] = {64,0}, + [I(31,20)] = {64,0}, + [I(32,20)] = {64,0}, + [I(33,20)] = {64,0}, + [I(34,20)] = {64,0}, + [I(35,20)] = {64,0}, + [I(36,20)] = {64,0}, + [I(37,20)] = {64,0}, + [I(38,20)] = {64,0}, + [I(39,20)] = {64,0}, + [I(40,20)] = {64,0}, + [I(41,20)] = {64,0}, + [I(42,20)] = {64,0}, + [I(43,20)] = {64,0}, + [I(44,20)] = {64,0}, + [I(45,20)] = {64,0}, + [I(46,20)] = {64,0}, + [I(47,20)] = {64,0}, + [I(48,20)] = {64,0}, + [I(49,20)] = {64,0}, + [I(50,20)] = {64,0}, + [I(51,20)] = {64,0}, + [I(52,20)] = {64,0}, + [I(53,20)] = {64,0}, + [I(54,20)] = {64,0}, + [I(55,20)] = {64,0}, + [I(56,20)] = {64,0}, + [I(57,20)] = {64,0}, + [I(58,20)] = {64,0}, + [I(59,20)] = {64,0}, + [I(60,20)] = {64,0}, + [I(61,20)] = {64,0}, + [I(62,20)] = {64,0}, + [I(63,20)] = {64,0}, + [I(64,20)] = {64,0}, + [I(65,20)] = {64,0}, + [I(66,20)] = {64,0}, + [I(67,20)] = {64,0}, + [I(68,20)] = {64,0}, + [I(69,20)] = {64,0}, + [I(70,20)] = {64,0}, + [I(71,20)] = {64,0}, + [I(72,20)] = {64,0}, + [I(73,20)] = {64,0}, + [I(74,20)] = {64,0}, + [I(75,20)] = {64,0}, + [I(76,20)] = {64,0}, + [I(77,20)] = {64,0}, + [I(78,20)] = {64,0}, + [I(79,20)] = {64,0}, + [I(80,20)] = {64,0}, + [I(81,20)] = {64,0}, + [I(82,20)] = {64,0}, + [I(83,20)] = {64,0}, + [I(84,20)] = {64,0}, + [I(85,20)] = {64,0}, + [I(86,20)] = {64,0}, + [I(87,20)] = {64,0}, + [I(88,20)] = {64,0}, + [I(89,20)] = {64,0}, + [I(90,20)] = {64,0}, + [I(91,20)] = {64,0}, + [I(92,20)] = {64,0}, + [I(93,20)] = {64,0}, + [I(94,20)] = {64,0}, + [I(95,20)] = {64,0}, + [I(96,20)] = {64,0}, + [I(97,20)] = {64,0}, + [I(98,20)] = {64,0}, + [I(99,20)] = {64,0}, + [I(100,20)] = {64,0}, + [I(101,20)] = {64,0}, + [I(102,20)] = {64,0}, + [I(103,20)] = {64,0}, + [I(104,20)] = {64,0}, + [I(105,20)] = {64,0}, + [I(106,20)] = {64,0}, + [I(107,20)] = {64,0}, + [I(108,20)] = {64,0}, + [I(109,20)] = {64,0}, + [I(110,20)] = {64,0}, + [I(111,20)] = {64,0}, + [I(112,20)] = {64,0}, + [I(113,20)] = {64,0}, + [I(114,20)] = {64,0}, + [I(115,20)] = {64,0}, + [I(116,20)] = {64,0}, + [I(117,20)] = {64,0}, + [I(118,20)] = {64,0}, + [I(119,20)] = {64,0}, + [I(120,20)] = {64,0}, + [I(121,20)] = {64,0}, + [I(122,20)] = {64,0}, + [I(123,20)] = {64,0}, + [I(124,20)] = {64,0}, + [I(125,20)] = {64,0}, + [I(126,20)] = {64,0}, + [I(127,20)] = {64,0}, + [I(128,20)] = {64,0}, + [I(129,20)] = {64,0}, + [I(130,20)] = {64,0}, + [I(131,20)] = {64,0}, + [I(132,20)] = {64,0}, + [I(133,20)] = {64,0}, + [I(134,20)] = {64,0}, + [I(135,20)] = {64,0}, + [I(136,20)] = {64,0}, + [I(137,20)] = {64,0}, + [I(138,20)] = {64,0}, + [I(139,20)] = {64,0}, + [I(140,20)] = {64,0}, + [I(141,20)] = {64,0}, + [I(142,20)] = {64,0}, + [I(143,20)] = {64,0}, + [I(144,20)] = {64,0}, + [I(145,20)] = {64,0}, + [I(146,20)] = {64,0}, + [I(147,20)] = {64,0}, + [I(148,20)] = {64,0}, + [I(149,20)] = {64,0}, + [I(150,20)] = {64,0}, + [I(151,20)] = {64,0}, + [I(152,20)] = {64,0}, + [I(153,20)] = {64,0}, + [I(154,20)] = {64,0}, + [I(155,20)] = {64,0}, + [I(156,20)] = {64,0}, + [I(157,20)] = {64,0}, + [I(158,20)] = {64,0}, + [I(159,20)] = {64,0}, + [I(160,20)] = {64,0}, + [I(161,20)] = {64,0}, + [I(162,20)] = {64,0}, + [I(163,20)] = {64,0}, + [I(164,20)] = {64,0}, + [I(165,20)] = {64,0}, + [I(166,20)] = {64,0}, + [I(167,20)] = {64,0}, + [I(168,20)] = {64,0}, + [I(169,20)] = {64,0}, + [I(170,20)] = {64,0}, + [I(171,20)] = {64,0}, + [I(172,20)] = {64,0}, + [I(173,20)] = {64,0}, + [I(174,20)] = {64,0}, + [I(175,20)] = {64,0}, + [I(176,20)] = {64,0}, + [I(177,20)] = {64,0}, + [I(178,20)] = {64,0}, + [I(179,20)] = {64,0}, + [I(180,20)] = {64,0}, + [I(181,20)] = {64,0}, + [I(182,20)] = {64,0}, + [I(183,20)] = {64,0}, + [I(184,20)] = {64,0}, + [I(185,20)] = {64,0}, + [I(186,20)] = {64,0}, + [I(187,20)] = {64,0}, + [I(188,20)] = {64,0}, + [I(189,20)] = {64,0}, + [I(190,20)] = {64,0}, + [I(191,20)] = {64,0}, + [I(192,20)] = {64,0}, + [I(193,20)] = {64,0}, + [I(194,20)] = {64,0}, + [I(195,20)] = {64,0}, + [I(196,20)] = {64,0}, + [I(197,20)] = {64,0}, + [I(198,20)] = {64,0}, + [I(199,20)] = {64,0}, + [I(200,20)] = {64,0}, + [I(201,20)] = {64,0}, + [I(202,20)] = {64,0}, + [I(203,20)] = {64,0}, + [I(204,20)] = {64,0}, + [I(205,20)] = {64,0}, + [I(206,20)] = {64,0}, + [I(207,20)] = {64,0}, + [I(208,20)] = {64,0}, + [I(209,20)] = {64,0}, + [I(210,20)] = {64,0}, + [I(211,20)] = {64,0}, + [I(212,20)] = {64,0}, + [I(213,20)] = {64,0}, + [I(214,20)] = {64,0}, + [I(215,20)] = {64,0}, + [I(216,20)] = {64,0}, + [I(217,20)] = {64,0}, + [I(218,20)] = {64,0}, + [I(219,20)] = {64,0}, + [I(220,20)] = {64,0}, + [I(221,20)] = {64,0}, + [I(222,20)] = {64,0}, + [I(223,20)] = {64,0}, + [I(224,20)] = {64,0}, + [I(225,20)] = {64,0}, + [I(226,20)] = {64,0}, + [I(227,20)] = {64,0}, + [I(228,20)] = {64,0}, + [I(229,20)] = {64,0}, + [I(230,20)] = {64,0}, + [I(231,20)] = {64,0}, + [I(232,20)] = {64,0}, + [I(233,20)] = {64,0}, + [I(234,20)] = {64,0}, + [I(235,20)] = {64,0}, + [I(236,20)] = {64,0}, + [I(237,20)] = {64,0}, + [I(238,20)] = {64,0}, + [I(239,20)] = {64,0}, + [I(240,20)] = {64,0}, + [I(241,20)] = {64,0}, + [I(242,20)] = {64,0}, + [I(243,20)] = {64,0}, + [I(244,20)] = {64,0}, + [I(245,20)] = {64,0}, + [I(246,20)] = {64,0}, + [I(247,20)] = {64,0}, + [I(248,20)] = {64,0}, + [I(249,20)] = {64,0}, + [I(250,20)] = {64,0}, + [I(251,20)] = {64,0}, + [I(252,20)] = {64,0}, + [I(253,20)] = {64,0}, + [I(254,20)] = {64,0}, + [I(255,20)] = {64,0}, + [I(0,21)] = {64,0}, + [I(1,21)] = {64,0}, + [I(2,21)] = {64,0}, + [I(3,21)] = {64,0}, + [I(4,21)] = {64,0}, + [I(5,21)] = {64,0}, + [I(6,21)] = {64,0}, + [I(7,21)] = {64,0}, + [I(8,21)] = {64,0}, + [I(9,21)] = {64,0}, + [I(10,21)] = {64,0}, + [I(11,21)] = {64,0}, + [I(12,21)] = {64,0}, + [I(13,21)] = {64,0}, + [I(14,21)] = {64,0}, + [I(15,21)] = {64,0}, + [I(16,21)] = {64,0}, + [I(17,21)] = {64,0}, + [I(18,21)] = {64,0}, + [I(19,21)] = {64,0}, + [I(20,21)] = {64,0}, + [I(21,21)] = {64,0}, + [I(22,21)] = {64,0}, + [I(23,21)] = {64,0}, + [I(24,21)] = {64,0}, + [I(25,21)] = {64,0}, + [I(26,21)] = {64,0}, + [I(27,21)] = {64,0}, + [I(28,21)] = {64,0}, + [I(29,21)] = {64,0}, + [I(30,21)] = {64,0}, + [I(31,21)] = {64,0}, + [I(32,21)] = {64,0}, + [I(33,21)] = {64,0}, + [I(34,21)] = {64,0}, + [I(35,21)] = {64,0}, + [I(36,21)] = {64,0}, + [I(37,21)] = {64,0}, + [I(38,21)] = {64,0}, + [I(39,21)] = {64,0}, + [I(40,21)] = {64,0}, + [I(41,21)] = {64,0}, + [I(42,21)] = {64,0}, + [I(43,21)] = {64,0}, + [I(44,21)] = {64,0}, + [I(45,21)] = {64,0}, + [I(46,21)] = {64,0}, + [I(47,21)] = {64,0}, + [I(48,21)] = {64,0}, + [I(49,21)] = {64,0}, + [I(50,21)] = {64,0}, + [I(51,21)] = {64,0}, + [I(52,21)] = {64,0}, + [I(53,21)] = {64,0}, + [I(54,21)] = {64,0}, + [I(55,21)] = {64,0}, + [I(56,21)] = {64,0}, + [I(57,21)] = {64,0}, + [I(58,21)] = {64,0}, + [I(59,21)] = {64,0}, + [I(60,21)] = {64,0}, + [I(61,21)] = {64,0}, + [I(62,21)] = {64,0}, + [I(63,21)] = {64,0}, + [I(64,21)] = {64,0}, + [I(65,21)] = {64,0}, + [I(66,21)] = {64,0}, + [I(67,21)] = {64,0}, + [I(68,21)] = {64,0}, + [I(69,21)] = {64,0}, + [I(70,21)] = {64,0}, + [I(71,21)] = {64,0}, + [I(72,21)] = {64,0}, + [I(73,21)] = {64,0}, + [I(74,21)] = {64,0}, + [I(75,21)] = {64,0}, + [I(76,21)] = {64,0}, + [I(77,21)] = {64,0}, + [I(78,21)] = {64,0}, + [I(79,21)] = {64,0}, + [I(80,21)] = {64,0}, + [I(81,21)] = {64,0}, + [I(82,21)] = {64,0}, + [I(83,21)] = {64,0}, + [I(84,21)] = {64,0}, + [I(85,21)] = {64,0}, + [I(86,21)] = {64,0}, + [I(87,21)] = {64,0}, + [I(88,21)] = {64,0}, + [I(89,21)] = {64,0}, + [I(90,21)] = {64,0}, + [I(91,21)] = {64,0}, + [I(92,21)] = {64,0}, + [I(93,21)] = {64,0}, + [I(94,21)] = {64,0}, + [I(95,21)] = {64,0}, + [I(96,21)] = {64,0}, + [I(97,21)] = {64,0}, + [I(98,21)] = {64,0}, + [I(99,21)] = {64,0}, + [I(100,21)] = {64,0}, + [I(101,21)] = {64,0}, + [I(102,21)] = {64,0}, + [I(103,21)] = {64,0}, + [I(104,21)] = {64,0}, + [I(105,21)] = {64,0}, + [I(106,21)] = {64,0}, + [I(107,21)] = {64,0}, + [I(108,21)] = {64,0}, + [I(109,21)] = {64,0}, + [I(110,21)] = {64,0}, + [I(111,21)] = {64,0}, + [I(112,21)] = {64,0}, + [I(113,21)] = {64,0}, + [I(114,21)] = {64,0}, + [I(115,21)] = {64,0}, + [I(116,21)] = {64,0}, + [I(117,21)] = {64,0}, + [I(118,21)] = {64,0}, + [I(119,21)] = {64,0}, + [I(120,21)] = {64,0}, + [I(121,21)] = {64,0}, + [I(122,21)] = {64,0}, + [I(123,21)] = {64,0}, + [I(124,21)] = {64,0}, + [I(125,21)] = {64,0}, + [I(126,21)] = {64,0}, + [I(127,21)] = {64,0}, + [I(128,21)] = {64,0}, + [I(129,21)] = {64,0}, + [I(130,21)] = {64,0}, + [I(131,21)] = {64,0}, + [I(132,21)] = {64,0}, + [I(133,21)] = {64,0}, + [I(134,21)] = {64,0}, + [I(135,21)] = {64,0}, + [I(136,21)] = {64,0}, + [I(137,21)] = {64,0}, + [I(138,21)] = {64,0}, + [I(139,21)] = {64,0}, + [I(140,21)] = {64,0}, + [I(141,21)] = {64,0}, + [I(142,21)] = {64,0}, + [I(143,21)] = {64,0}, + [I(144,21)] = {64,0}, + [I(145,21)] = {64,0}, + [I(146,21)] = {64,0}, + [I(147,21)] = {64,0}, + [I(148,21)] = {64,0}, + [I(149,21)] = {64,0}, + [I(150,21)] = {64,0}, + [I(151,21)] = {64,0}, + [I(152,21)] = {64,0}, + [I(153,21)] = {64,0}, + [I(154,21)] = {64,0}, + [I(155,21)] = {64,0}, + [I(156,21)] = {64,0}, + [I(157,21)] = {64,0}, + [I(158,21)] = {64,0}, + [I(159,21)] = {64,0}, + [I(160,21)] = {64,0}, + [I(161,21)] = {64,0}, + [I(162,21)] = {64,0}, + [I(163,21)] = {64,0}, + [I(164,21)] = {64,0}, + [I(165,21)] = {64,0}, + [I(166,21)] = {64,0}, + [I(167,21)] = {64,0}, + [I(168,21)] = {64,0}, + [I(169,21)] = {64,0}, + [I(170,21)] = {64,0}, + [I(171,21)] = {64,0}, + [I(172,21)] = {64,0}, + [I(173,21)] = {64,0}, + [I(174,21)] = {64,0}, + [I(175,21)] = {64,0}, + [I(176,21)] = {64,0}, + [I(177,21)] = {64,0}, + [I(178,21)] = {64,0}, + [I(179,21)] = {64,0}, + [I(180,21)] = {64,0}, + [I(181,21)] = {64,0}, + [I(182,21)] = {64,0}, + [I(183,21)] = {64,0}, + [I(184,21)] = {64,0}, + [I(185,21)] = {64,0}, + [I(186,21)] = {64,0}, + [I(187,21)] = {64,0}, + [I(188,21)] = {64,0}, + [I(189,21)] = {64,0}, + [I(190,21)] = {64,0}, + [I(191,21)] = {64,0}, + [I(192,21)] = {64,0}, + [I(193,21)] = {64,0}, + [I(194,21)] = {64,0}, + [I(195,21)] = {64,0}, + [I(196,21)] = {64,0}, + [I(197,21)] = {64,0}, + [I(198,21)] = {64,0}, + [I(199,21)] = {64,0}, + [I(200,21)] = {64,0}, + [I(201,21)] = {64,0}, + [I(202,21)] = {64,0}, + [I(203,21)] = {64,0}, + [I(204,21)] = {64,0}, + [I(205,21)] = {64,0}, + [I(206,21)] = {64,0}, + [I(207,21)] = {64,0}, + [I(208,21)] = {64,0}, + [I(209,21)] = {64,0}, + [I(210,21)] = {64,0}, + [I(211,21)] = {64,0}, + [I(212,21)] = {64,0}, + [I(213,21)] = {64,0}, + [I(214,21)] = {64,0}, + [I(215,21)] = {64,0}, + [I(216,21)] = {64,0}, + [I(217,21)] = {64,0}, + [I(218,21)] = {64,0}, + [I(219,21)] = {64,0}, + [I(220,21)] = {64,0}, + [I(221,21)] = {64,0}, + [I(222,21)] = {64,0}, + [I(223,21)] = {64,0}, + [I(224,21)] = {64,0}, + [I(225,21)] = {64,0}, + [I(226,21)] = {64,0}, + [I(227,21)] = {64,0}, + [I(228,21)] = {64,0}, + [I(229,21)] = {64,0}, + [I(230,21)] = {64,0}, + [I(231,21)] = {64,0}, + [I(232,21)] = {64,0}, + [I(233,21)] = {64,0}, + [I(234,21)] = {64,0}, + [I(235,21)] = {64,0}, + [I(236,21)] = {64,0}, + [I(237,21)] = {64,0}, + [I(238,21)] = {64,0}, + [I(239,21)] = {64,0}, + [I(240,21)] = {64,0}, + [I(241,21)] = {64,0}, + [I(242,21)] = {64,0}, + [I(243,21)] = {64,0}, + [I(244,21)] = {64,0}, + [I(245,21)] = {64,0}, + [I(246,21)] = {64,0}, + [I(247,21)] = {64,0}, + [I(248,21)] = {64,0}, + [I(249,21)] = {64,0}, + [I(250,21)] = {64,0}, + [I(251,21)] = {64,0}, + [I(252,21)] = {64,0}, + [I(253,21)] = {64,0}, + [I(254,21)] = {64,0}, + [I(255,21)] = {64,0}, + [I(0,22)] = {64,0}, + [I(1,22)] = {64,0}, + [I(2,22)] = {64,0}, + [I(3,22)] = {64,0}, + [I(4,22)] = {64,0}, + [I(5,22)] = {64,0}, + [I(6,22)] = {64,0}, + [I(7,22)] = {64,0}, + [I(8,22)] = {64,0}, + [I(9,22)] = {64,0}, + [I(10,22)] = {64,0}, + [I(11,22)] = {64,0}, + [I(12,22)] = {64,0}, + [I(13,22)] = {64,0}, + [I(14,22)] = {64,0}, + [I(15,22)] = {64,0}, + [I(16,22)] = {64,0}, + [I(17,22)] = {64,0}, + [I(18,22)] = {64,0}, + [I(19,22)] = {64,0}, + [I(20,22)] = {64,0}, + [I(21,22)] = {64,0}, + [I(22,22)] = {64,0}, + [I(23,22)] = {64,0}, + [I(24,22)] = {64,0}, + [I(25,22)] = {64,0}, + [I(26,22)] = {64,0}, + [I(27,22)] = {64,0}, + [I(28,22)] = {64,0}, + [I(29,22)] = {64,0}, + [I(30,22)] = {64,0}, + [I(31,22)] = {64,0}, + [I(32,22)] = {64,0}, + [I(33,22)] = {64,0}, + [I(34,22)] = {64,0}, + [I(35,22)] = {64,0}, + [I(36,22)] = {64,0}, + [I(37,22)] = {64,0}, + [I(38,22)] = {64,0}, + [I(39,22)] = {64,0}, + [I(40,22)] = {64,0}, + [I(41,22)] = {64,0}, + [I(42,22)] = {64,0}, + [I(43,22)] = {64,0}, + [I(44,22)] = {64,0}, + [I(45,22)] = {64,0}, + [I(46,22)] = {64,0}, + [I(47,22)] = {64,0}, + [I(48,22)] = {64,0}, + [I(49,22)] = {64,0}, + [I(50,22)] = {64,0}, + [I(51,22)] = {64,0}, + [I(52,22)] = {64,0}, + [I(53,22)] = {64,0}, + [I(54,22)] = {64,0}, + [I(55,22)] = {64,0}, + [I(56,22)] = {64,0}, + [I(57,22)] = {64,0}, + [I(58,22)] = {64,0}, + [I(59,22)] = {64,0}, + [I(60,22)] = {64,0}, + [I(61,22)] = {64,0}, + [I(62,22)] = {64,0}, + [I(63,22)] = {64,0}, + [I(64,22)] = {64,0}, + [I(65,22)] = {64,0}, + [I(66,22)] = {64,0}, + [I(67,22)] = {64,0}, + [I(68,22)] = {64,0}, + [I(69,22)] = {64,0}, + [I(70,22)] = {64,0}, + [I(71,22)] = {64,0}, + [I(72,22)] = {64,0}, + [I(73,22)] = {64,0}, + [I(74,22)] = {64,0}, + [I(75,22)] = {64,0}, + [I(76,22)] = {64,0}, + [I(77,22)] = {64,0}, + [I(78,22)] = {64,0}, + [I(79,22)] = {64,0}, + [I(80,22)] = {64,0}, + [I(81,22)] = {64,0}, + [I(82,22)] = {64,0}, + [I(83,22)] = {64,0}, + [I(84,22)] = {64,0}, + [I(85,22)] = {64,0}, + [I(86,22)] = {64,0}, + [I(87,22)] = {64,0}, + [I(88,22)] = {64,0}, + [I(89,22)] = {64,0}, + [I(90,22)] = {64,0}, + [I(91,22)] = {64,0}, + [I(92,22)] = {64,0}, + [I(93,22)] = {64,0}, + [I(94,22)] = {64,0}, + [I(95,22)] = {64,0}, + [I(96,22)] = {64,0}, + [I(97,22)] = {64,0}, + [I(98,22)] = {64,0}, + [I(99,22)] = {64,0}, + [I(100,22)] = {64,0}, + [I(101,22)] = {64,0}, + [I(102,22)] = {64,0}, + [I(103,22)] = {64,0}, + [I(104,22)] = {64,0}, + [I(105,22)] = {64,0}, + [I(106,22)] = {64,0}, + [I(107,22)] = {64,0}, + [I(108,22)] = {64,0}, + [I(109,22)] = {64,0}, + [I(110,22)] = {64,0}, + [I(111,22)] = {64,0}, + [I(112,22)] = {64,0}, + [I(113,22)] = {64,0}, + [I(114,22)] = {64,0}, + [I(115,22)] = {64,0}, + [I(116,22)] = {64,0}, + [I(117,22)] = {64,0}, + [I(118,22)] = {64,0}, + [I(119,22)] = {64,0}, + [I(120,22)] = {64,0}, + [I(121,22)] = {64,0}, + [I(122,22)] = {64,0}, + [I(123,22)] = {64,0}, + [I(124,22)] = {64,0}, + [I(125,22)] = {64,0}, + [I(126,22)] = {64,0}, + [I(127,22)] = {64,0}, + [I(128,22)] = {64,0}, + [I(129,22)] = {64,0}, + [I(130,22)] = {64,0}, + [I(131,22)] = {64,0}, + [I(132,22)] = {64,0}, + [I(133,22)] = {64,0}, + [I(134,22)] = {64,0}, + [I(135,22)] = {64,0}, + [I(136,22)] = {64,0}, + [I(137,22)] = {64,0}, + [I(138,22)] = {64,0}, + [I(139,22)] = {64,0}, + [I(140,22)] = {64,0}, + [I(141,22)] = {64,0}, + [I(142,22)] = {64,0}, + [I(143,22)] = {64,0}, + [I(144,22)] = {64,0}, + [I(145,22)] = {64,0}, + [I(146,22)] = {64,0}, + [I(147,22)] = {64,0}, + [I(148,22)] = {64,0}, + [I(149,22)] = {64,0}, + [I(150,22)] = {64,0}, + [I(151,22)] = {64,0}, + [I(152,22)] = {64,0}, + [I(153,22)] = {64,0}, + [I(154,22)] = {64,0}, + [I(155,22)] = {64,0}, + [I(156,22)] = {64,0}, + [I(157,22)] = {64,0}, + [I(158,22)] = {64,0}, + [I(159,22)] = {64,0}, + [I(160,22)] = {64,0}, + [I(161,22)] = {64,0}, + [I(162,22)] = {64,0}, + [I(163,22)] = {64,0}, + [I(164,22)] = {64,0}, + [I(165,22)] = {64,0}, + [I(166,22)] = {64,0}, + [I(167,22)] = {64,0}, + [I(168,22)] = {64,0}, + [I(169,22)] = {64,0}, + [I(170,22)] = {64,0}, + [I(171,22)] = {64,0}, + [I(172,22)] = {64,0}, + [I(173,22)] = {64,0}, + [I(174,22)] = {64,0}, + [I(175,22)] = {64,0}, + [I(176,22)] = {64,0}, + [I(177,22)] = {64,0}, + [I(178,22)] = {64,0}, + [I(179,22)] = {64,0}, + [I(180,22)] = {64,0}, + [I(181,22)] = {64,0}, + [I(182,22)] = {64,0}, + [I(183,22)] = {64,0}, + [I(184,22)] = {64,0}, + [I(185,22)] = {64,0}, + [I(186,22)] = {64,0}, + [I(187,22)] = {64,0}, + [I(188,22)] = {64,0}, + [I(189,22)] = {64,0}, + [I(190,22)] = {64,0}, + [I(191,22)] = {64,0}, + [I(192,22)] = {64,0}, + [I(193,22)] = {64,0}, + [I(194,22)] = {64,0}, + [I(195,22)] = {64,0}, + [I(196,22)] = {64,0}, + [I(197,22)] = {64,0}, + [I(198,22)] = {64,0}, + [I(199,22)] = {64,0}, + [I(200,22)] = {64,0}, + [I(201,22)] = {64,0}, + [I(202,22)] = {64,0}, + [I(203,22)] = {64,0}, + [I(204,22)] = {64,0}, + [I(205,22)] = {64,0}, + [I(206,22)] = {64,0}, + [I(207,22)] = {64,0}, + [I(208,22)] = {64,0}, + [I(209,22)] = {64,0}, + [I(210,22)] = {64,0}, + [I(211,22)] = {64,0}, + [I(212,22)] = {64,0}, + [I(213,22)] = {64,0}, + [I(214,22)] = {64,0}, + [I(215,22)] = {64,0}, + [I(216,22)] = {64,0}, + [I(217,22)] = {64,0}, + [I(218,22)] = {64,0}, + [I(219,22)] = {64,0}, + [I(220,22)] = {64,0}, + [I(221,22)] = {64,0}, + [I(222,22)] = {64,0}, + [I(223,22)] = {64,0}, + [I(224,22)] = {64,0}, + [I(225,22)] = {64,0}, + [I(226,22)] = {64,0}, + [I(227,22)] = {64,0}, + [I(228,22)] = {64,0}, + [I(229,22)] = {64,0}, + [I(230,22)] = {64,0}, + [I(231,22)] = {64,0}, + [I(232,22)] = {64,0}, + [I(233,22)] = {64,0}, + [I(234,22)] = {64,0}, + [I(235,22)] = {64,0}, + [I(236,22)] = {64,0}, + [I(237,22)] = {64,0}, + [I(238,22)] = {64,0}, + [I(239,22)] = {64,0}, + [I(240,22)] = {64,0}, + [I(241,22)] = {64,0}, + [I(242,22)] = {64,0}, + [I(243,22)] = {64,0}, + [I(244,22)] = {64,0}, + [I(245,22)] = {64,0}, + [I(246,22)] = {64,0}, + [I(247,22)] = {64,0}, + [I(248,22)] = {64,0}, + [I(249,22)] = {64,0}, + [I(250,22)] = {64,0}, + [I(251,22)] = {64,0}, + [I(252,22)] = {64,0}, + [I(253,22)] = {64,0}, + [I(254,22)] = {64,0}, + [I(255,22)] = {64,0}, + [I(0,23)] = {64,0}, + [I(1,23)] = {64,0}, + [I(2,23)] = {64,0}, + [I(3,23)] = {64,0}, + [I(4,23)] = {64,0}, + [I(5,23)] = {64,0}, + [I(6,23)] = {64,0}, + [I(7,23)] = {64,0}, + [I(8,23)] = {64,0}, + [I(9,23)] = {64,0}, + [I(10,23)] = {64,0}, + [I(11,23)] = {64,0}, + [I(12,23)] = {64,0}, + [I(13,23)] = {64,0}, + [I(14,23)] = {64,0}, + [I(15,23)] = {64,0}, + [I(16,23)] = {64,0}, + [I(17,23)] = {64,0}, + [I(18,23)] = {64,0}, + [I(19,23)] = {64,0}, + [I(20,23)] = {64,0}, + [I(21,23)] = {64,0}, + [I(22,23)] = {64,0}, + [I(23,23)] = {64,0}, + [I(24,23)] = {64,0}, + [I(25,23)] = {64,0}, + [I(26,23)] = {64,0}, + [I(27,23)] = {64,0}, + [I(28,23)] = {64,0}, + [I(29,23)] = {64,0}, + [I(30,23)] = {64,0}, + [I(31,23)] = {64,0}, + [I(32,23)] = {64,0}, + [I(33,23)] = {64,0}, + [I(34,23)] = {64,0}, + [I(35,23)] = {64,0}, + [I(36,23)] = {64,0}, + [I(37,23)] = {64,0}, + [I(38,23)] = {64,0}, + [I(39,23)] = {64,0}, + [I(40,23)] = {64,0}, + [I(41,23)] = {64,0}, + [I(42,23)] = {64,0}, + [I(43,23)] = {64,0}, + [I(44,23)] = {64,0}, + [I(45,23)] = {64,0}, + [I(46,23)] = {64,0}, + [I(47,23)] = {64,0}, + [I(48,23)] = {64,0}, + [I(49,23)] = {64,0}, + [I(50,23)] = {64,0}, + [I(51,23)] = {64,0}, + [I(52,23)] = {64,0}, + [I(53,23)] = {64,0}, + [I(54,23)] = {64,0}, + [I(55,23)] = {64,0}, + [I(56,23)] = {64,0}, + [I(57,23)] = {64,0}, + [I(58,23)] = {64,0}, + [I(59,23)] = {64,0}, + [I(60,23)] = {64,0}, + [I(61,23)] = {64,0}, + [I(62,23)] = {64,0}, + [I(63,23)] = {64,0}, + [I(64,23)] = {64,0}, + [I(65,23)] = {64,0}, + [I(66,23)] = {64,0}, + [I(67,23)] = {64,0}, + [I(68,23)] = {64,0}, + [I(69,23)] = {64,0}, + [I(70,23)] = {64,0}, + [I(71,23)] = {64,0}, + [I(72,23)] = {64,0}, + [I(73,23)] = {64,0}, + [I(74,23)] = {64,0}, + [I(75,23)] = {64,0}, + [I(76,23)] = {64,0}, + [I(77,23)] = {64,0}, + [I(78,23)] = {64,0}, + [I(79,23)] = {64,0}, + [I(80,23)] = {64,0}, + [I(81,23)] = {64,0}, + [I(82,23)] = {64,0}, + [I(83,23)] = {64,0}, + [I(84,23)] = {64,0}, + [I(85,23)] = {64,0}, + [I(86,23)] = {64,0}, + [I(87,23)] = {64,0}, + [I(88,23)] = {64,0}, + [I(89,23)] = {64,0}, + [I(90,23)] = {64,0}, + [I(91,23)] = {64,0}, + [I(92,23)] = {64,0}, + [I(93,23)] = {64,0}, + [I(94,23)] = {64,0}, + [I(95,23)] = {64,0}, + [I(96,23)] = {64,0}, + [I(97,23)] = {64,0}, + [I(98,23)] = {64,0}, + [I(99,23)] = {64,0}, + [I(100,23)] = {64,0}, + [I(101,23)] = {64,0}, + [I(102,23)] = {64,0}, + [I(103,23)] = {64,0}, + [I(104,23)] = {64,0}, + [I(105,23)] = {64,0}, + [I(106,23)] = {64,0}, + [I(107,23)] = {64,0}, + [I(108,23)] = {64,0}, + [I(109,23)] = {64,0}, + [I(110,23)] = {64,0}, + [I(111,23)] = {64,0}, + [I(112,23)] = {64,0}, + [I(113,23)] = {64,0}, + [I(114,23)] = {64,0}, + [I(115,23)] = {64,0}, + [I(116,23)] = {64,0}, + [I(117,23)] = {64,0}, + [I(118,23)] = {64,0}, + [I(119,23)] = {64,0}, + [I(120,23)] = {64,0}, + [I(121,23)] = {64,0}, + [I(122,23)] = {64,0}, + [I(123,23)] = {64,0}, + [I(124,23)] = {64,0}, + [I(125,23)] = {64,0}, + [I(126,23)] = {64,0}, + [I(127,23)] = {64,0}, + [I(128,23)] = {64,0}, + [I(129,23)] = {64,0}, + [I(130,23)] = {64,0}, + [I(131,23)] = {64,0}, + [I(132,23)] = {64,0}, + [I(133,23)] = {64,0}, + [I(134,23)] = {64,0}, + [I(135,23)] = {64,0}, + [I(136,23)] = {64,0}, + [I(137,23)] = {64,0}, + [I(138,23)] = {64,0}, + [I(139,23)] = {64,0}, + [I(140,23)] = {64,0}, + [I(141,23)] = {64,0}, + [I(142,23)] = {64,0}, + [I(143,23)] = {64,0}, + [I(144,23)] = {64,0}, + [I(145,23)] = {64,0}, + [I(146,23)] = {64,0}, + [I(147,23)] = {64,0}, + [I(148,23)] = {64,0}, + [I(149,23)] = {64,0}, + [I(150,23)] = {64,0}, + [I(151,23)] = {64,0}, + [I(152,23)] = {64,0}, + [I(153,23)] = {64,0}, + [I(154,23)] = {64,0}, + [I(155,23)] = {64,0}, + [I(156,23)] = {64,0}, + [I(157,23)] = {64,0}, + [I(158,23)] = {64,0}, + [I(159,23)] = {64,0}, + [I(160,23)] = {64,0}, + [I(161,23)] = {64,0}, + [I(162,23)] = {64,0}, + [I(163,23)] = {64,0}, + [I(164,23)] = {64,0}, + [I(165,23)] = {64,0}, + [I(166,23)] = {64,0}, + [I(167,23)] = {64,0}, + [I(168,23)] = {64,0}, + [I(169,23)] = {64,0}, + [I(170,23)] = {64,0}, + [I(171,23)] = {64,0}, + [I(172,23)] = {64,0}, + [I(173,23)] = {64,0}, + [I(174,23)] = {64,0}, + [I(175,23)] = {64,0}, + [I(176,23)] = {64,0}, + [I(177,23)] = {64,0}, + [I(178,23)] = {64,0}, + [I(179,23)] = {64,0}, + [I(180,23)] = {64,0}, + [I(181,23)] = {64,0}, + [I(182,23)] = {64,0}, + [I(183,23)] = {64,0}, + [I(184,23)] = {64,0}, + [I(185,23)] = {64,0}, + [I(186,23)] = {64,0}, + [I(187,23)] = {64,0}, + [I(188,23)] = {64,0}, + [I(189,23)] = {64,0}, + [I(190,23)] = {64,0}, + [I(191,23)] = {64,0}, + [I(192,23)] = {64,0}, + [I(193,23)] = {64,0}, + [I(194,23)] = {64,0}, + [I(195,23)] = {64,0}, + [I(196,23)] = {64,0}, + [I(197,23)] = {64,0}, + [I(198,23)] = {64,0}, + [I(199,23)] = {64,0}, + [I(200,23)] = {64,0}, + [I(201,23)] = {64,0}, + [I(202,23)] = {64,0}, + [I(203,23)] = {64,0}, + [I(204,23)] = {64,0}, + [I(205,23)] = {64,0}, + [I(206,23)] = {64,0}, + [I(207,23)] = {64,0}, + [I(208,23)] = {64,0}, + [I(209,23)] = {64,0}, + [I(210,23)] = {64,0}, + [I(211,23)] = {64,0}, + [I(212,23)] = {64,0}, + [I(213,23)] = {64,0}, + [I(214,23)] = {64,0}, + [I(215,23)] = {64,0}, + [I(216,23)] = {64,0}, + [I(217,23)] = {64,0}, + [I(218,23)] = {64,0}, + [I(219,23)] = {64,0}, + [I(220,23)] = {64,0}, + [I(221,23)] = {64,0}, + [I(222,23)] = {64,0}, + [I(223,23)] = {64,0}, + [I(224,23)] = {64,0}, + [I(225,23)] = {64,0}, + [I(226,23)] = {64,0}, + [I(227,23)] = {64,0}, + [I(228,23)] = {64,0}, + [I(229,23)] = {64,0}, + [I(230,23)] = {64,0}, + [I(231,23)] = {64,0}, + [I(232,23)] = {64,0}, + [I(233,23)] = {64,0}, + [I(234,23)] = {64,0}, + [I(235,23)] = {64,0}, + [I(236,23)] = {64,0}, + [I(237,23)] = {64,0}, + [I(238,23)] = {64,0}, + [I(239,23)] = {64,0}, + [I(240,23)] = {64,0}, + [I(241,23)] = {64,0}, + [I(242,23)] = {64,0}, + [I(243,23)] = {64,0}, + [I(244,23)] = {64,0}, + [I(245,23)] = {64,0}, + [I(246,23)] = {64,0}, + [I(247,23)] = {64,0}, + [I(248,23)] = {64,0}, + [I(249,23)] = {64,0}, + [I(250,23)] = {64,0}, + [I(251,23)] = {64,0}, + [I(252,23)] = {64,0}, + [I(253,23)] = {64,0}, + [I(254,23)] = {64,0}, + [I(255,23)] = {64,0}, + [I(0,24)] = {64,0}, + [I(1,24)] = {64,0}, + [I(2,24)] = {64,0}, + [I(3,24)] = {64,0}, + [I(4,24)] = {64,0}, + [I(5,24)] = {64,0}, + [I(6,24)] = {64,0}, + [I(7,24)] = {64,0}, + [I(8,24)] = {64,0}, + [I(9,24)] = {64,0}, + [I(10,24)] = {64,0}, + [I(11,24)] = {64,0}, + [I(12,24)] = {64,0}, + [I(13,24)] = {64,0}, + [I(14,24)] = {64,0}, + [I(15,24)] = {64,0}, + [I(16,24)] = {64,0}, + [I(17,24)] = {64,0}, + [I(18,24)] = {64,0}, + [I(19,24)] = {64,0}, + [I(20,24)] = {64,0}, + [I(21,24)] = {64,0}, + [I(22,24)] = {64,0}, + [I(23,24)] = {64,0}, + [I(24,24)] = {64,0}, + [I(25,24)] = {64,0}, + [I(26,24)] = {64,0}, + [I(27,24)] = {64,0}, + [I(28,24)] = {64,0}, + [I(29,24)] = {64,0}, + [I(30,24)] = {64,0}, + [I(31,24)] = {64,0}, + [I(32,24)] = {64,0}, + [I(33,24)] = {64,0}, + [I(34,24)] = {64,0}, + [I(35,24)] = {64,0}, + [I(36,24)] = {64,0}, + [I(37,24)] = {64,0}, + [I(38,24)] = {64,0}, + [I(39,24)] = {64,0}, + [I(40,24)] = {64,0}, + [I(41,24)] = {64,0}, + [I(42,24)] = {64,0}, + [I(43,24)] = {64,0}, + [I(44,24)] = {64,0}, + [I(45,24)] = {64,0}, + [I(46,24)] = {64,0}, + [I(47,24)] = {64,0}, + [I(48,24)] = {64,0}, + [I(49,24)] = {64,0}, + [I(50,24)] = {64,0}, + [I(51,24)] = {64,0}, + [I(52,24)] = {64,0}, + [I(53,24)] = {64,0}, + [I(54,24)] = {64,0}, + [I(55,24)] = {64,0}, + [I(56,24)] = {64,0}, + [I(57,24)] = {64,0}, + [I(58,24)] = {64,0}, + [I(59,24)] = {64,0}, + [I(60,24)] = {64,0}, + [I(61,24)] = {64,0}, + [I(62,24)] = {64,0}, + [I(63,24)] = {64,0}, + [I(64,24)] = {64,0}, + [I(65,24)] = {64,0}, + [I(66,24)] = {64,0}, + [I(67,24)] = {64,0}, + [I(68,24)] = {64,0}, + [I(69,24)] = {64,0}, + [I(70,24)] = {64,0}, + [I(71,24)] = {64,0}, + [I(72,24)] = {64,0}, + [I(73,24)] = {64,0}, + [I(74,24)] = {64,0}, + [I(75,24)] = {64,0}, + [I(76,24)] = {64,0}, + [I(77,24)] = {64,0}, + [I(78,24)] = {64,0}, + [I(79,24)] = {64,0}, + [I(80,24)] = {64,0}, + [I(81,24)] = {64,0}, + [I(82,24)] = {64,0}, + [I(83,24)] = {64,0}, + [I(84,24)] = {64,0}, + [I(85,24)] = {64,0}, + [I(86,24)] = {64,0}, + [I(87,24)] = {64,0}, + [I(88,24)] = {64,0}, + [I(89,24)] = {64,0}, + [I(90,24)] = {64,0}, + [I(91,24)] = {64,0}, + [I(92,24)] = {64,0}, + [I(93,24)] = {64,0}, + [I(94,24)] = {64,0}, + [I(95,24)] = {64,0}, + [I(96,24)] = {64,0}, + [I(97,24)] = {64,0}, + [I(98,24)] = {64,0}, + [I(99,24)] = {64,0}, + [I(100,24)] = {64,0}, + [I(101,24)] = {64,0}, + [I(102,24)] = {64,0}, + [I(103,24)] = {64,0}, + [I(104,24)] = {64,0}, + [I(105,24)] = {64,0}, + [I(106,24)] = {64,0}, + [I(107,24)] = {64,0}, + [I(108,24)] = {64,0}, + [I(109,24)] = {64,0}, + [I(110,24)] = {64,0}, + [I(111,24)] = {64,0}, + [I(112,24)] = {64,0}, + [I(113,24)] = {64,0}, + [I(114,24)] = {64,0}, + [I(115,24)] = {64,0}, + [I(116,24)] = {64,0}, + [I(117,24)] = {64,0}, + [I(118,24)] = {64,0}, + [I(119,24)] = {64,0}, + [I(120,24)] = {64,0}, + [I(121,24)] = {64,0}, + [I(122,24)] = {64,0}, + [I(123,24)] = {64,0}, + [I(124,24)] = {64,0}, + [I(125,24)] = {64,0}, + [I(126,24)] = {64,0}, + [I(127,24)] = {64,0}, + [I(128,24)] = {64,0}, + [I(129,24)] = {64,0}, + [I(130,24)] = {64,0}, + [I(131,24)] = {64,0}, + [I(132,24)] = {64,0}, + [I(133,24)] = {64,0}, + [I(134,24)] = {64,0}, + [I(135,24)] = {64,0}, + [I(136,24)] = {64,0}, + [I(137,24)] = {64,0}, + [I(138,24)] = {64,0}, + [I(139,24)] = {64,0}, + [I(140,24)] = {64,0}, + [I(141,24)] = {64,0}, + [I(142,24)] = {64,0}, + [I(143,24)] = {64,0}, + [I(144,24)] = {64,0}, + [I(145,24)] = {64,0}, + [I(146,24)] = {64,0}, + [I(147,24)] = {64,0}, + [I(148,24)] = {64,0}, + [I(149,24)] = {64,0}, + [I(150,24)] = {64,0}, + [I(151,24)] = {64,0}, + [I(152,24)] = {64,0}, + [I(153,24)] = {64,0}, + [I(154,24)] = {64,0}, + [I(155,24)] = {64,0}, + [I(156,24)] = {64,0}, + [I(157,24)] = {64,0}, + [I(158,24)] = {64,0}, + [I(159,24)] = {64,0}, + [I(160,24)] = {64,0}, + [I(161,24)] = {64,0}, + [I(162,24)] = {64,0}, + [I(163,24)] = {64,0}, + [I(164,24)] = {64,0}, + [I(165,24)] = {64,0}, + [I(166,24)] = {64,0}, + [I(167,24)] = {64,0}, + [I(168,24)] = {64,0}, + [I(169,24)] = {64,0}, + [I(170,24)] = {64,0}, + [I(171,24)] = {64,0}, + [I(172,24)] = {64,0}, + [I(173,24)] = {64,0}, + [I(174,24)] = {64,0}, + [I(175,24)] = {64,0}, + [I(176,24)] = {64,0}, + [I(177,24)] = {64,0}, + [I(178,24)] = {64,0}, + [I(179,24)] = {64,0}, + [I(180,24)] = {64,0}, + [I(181,24)] = {64,0}, + [I(182,24)] = {64,0}, + [I(183,24)] = {64,0}, + [I(184,24)] = {64,0}, + [I(185,24)] = {64,0}, + [I(186,24)] = {64,0}, + [I(187,24)] = {64,0}, + [I(188,24)] = {64,0}, + [I(189,24)] = {64,0}, + [I(190,24)] = {64,0}, + [I(191,24)] = {64,0}, + [I(192,24)] = {64,0}, + [I(193,24)] = {64,0}, + [I(194,24)] = {64,0}, + [I(195,24)] = {64,0}, + [I(196,24)] = {64,0}, + [I(197,24)] = {64,0}, + [I(198,24)] = {64,0}, + [I(199,24)] = {64,0}, + [I(200,24)] = {64,0}, + [I(201,24)] = {64,0}, + [I(202,24)] = {64,0}, + [I(203,24)] = {64,0}, + [I(204,24)] = {64,0}, + [I(205,24)] = {64,0}, + [I(206,24)] = {64,0}, + [I(207,24)] = {64,0}, + [I(208,24)] = {64,0}, + [I(209,24)] = {64,0}, + [I(210,24)] = {64,0}, + [I(211,24)] = {64,0}, + [I(212,24)] = {64,0}, + [I(213,24)] = {64,0}, + [I(214,24)] = {64,0}, + [I(215,24)] = {64,0}, + [I(216,24)] = {64,0}, + [I(217,24)] = {64,0}, + [I(218,24)] = {64,0}, + [I(219,24)] = {64,0}, + [I(220,24)] = {64,0}, + [I(221,24)] = {64,0}, + [I(222,24)] = {64,0}, + [I(223,24)] = {64,0}, + [I(224,24)] = {64,0}, + [I(225,24)] = {64,0}, + [I(226,24)] = {64,0}, + [I(227,24)] = {64,0}, + [I(228,24)] = {64,0}, + [I(229,24)] = {64,0}, + [I(230,24)] = {64,0}, + [I(231,24)] = {64,0}, + [I(232,24)] = {64,0}, + [I(233,24)] = {64,0}, + [I(234,24)] = {64,0}, + [I(235,24)] = {64,0}, + [I(236,24)] = {64,0}, + [I(237,24)] = {64,0}, + [I(238,24)] = {64,0}, + [I(239,24)] = {64,0}, + [I(240,24)] = {64,0}, + [I(241,24)] = {64,0}, + [I(242,24)] = {64,0}, + [I(243,24)] = {64,0}, + [I(244,24)] = {64,0}, + [I(245,24)] = {64,0}, + [I(246,24)] = {64,0}, + [I(247,24)] = {64,0}, + [I(248,24)] = {64,0}, + [I(249,24)] = {64,0}, + [I(250,24)] = {64,0}, + [I(251,24)] = {64,0}, + [I(252,24)] = {64,0}, + [I(253,24)] = {64,0}, + [I(254,24)] = {64,0}, + [I(255,24)] = {64,0}, + [I(0,25)] = {64,0}, + [I(1,25)] = {64,0}, + [I(2,25)] = {64,0}, + [I(3,25)] = {64,0}, + [I(4,25)] = {64,0}, + [I(5,25)] = {64,0}, + [I(6,25)] = {64,0}, + [I(7,25)] = {64,0}, + [I(8,25)] = {64,0}, + [I(9,25)] = {64,0}, + [I(10,25)] = {64,0}, + [I(11,25)] = {64,0}, + [I(12,25)] = {64,0}, + [I(13,25)] = {64,0}, + [I(14,25)] = {64,0}, + [I(15,25)] = {64,0}, + [I(16,25)] = {64,0}, + [I(17,25)] = {64,0}, + [I(18,25)] = {64,0}, + [I(19,25)] = {64,0}, + [I(20,25)] = {64,0}, + [I(21,25)] = {64,0}, + [I(22,25)] = {64,0}, + [I(23,25)] = {64,0}, + [I(24,25)] = {64,0}, + [I(25,25)] = {64,0}, + [I(26,25)] = {64,0}, + [I(27,25)] = {64,0}, + [I(28,25)] = {64,0}, + [I(29,25)] = {64,0}, + [I(30,25)] = {64,0}, + [I(31,25)] = {64,0}, + [I(32,25)] = {64,0}, + [I(33,25)] = {64,0}, + [I(34,25)] = {64,0}, + [I(35,25)] = {64,0}, + [I(36,25)] = {64,0}, + [I(37,25)] = {64,0}, + [I(38,25)] = {64,0}, + [I(39,25)] = {64,0}, + [I(40,25)] = {64,0}, + [I(41,25)] = {64,0}, + [I(42,25)] = {64,0}, + [I(43,25)] = {64,0}, + [I(44,25)] = {64,0}, + [I(45,25)] = {64,0}, + [I(46,25)] = {64,0}, + [I(47,25)] = {64,0}, + [I(48,25)] = {64,0}, + [I(49,25)] = {64,0}, + [I(50,25)] = {64,0}, + [I(51,25)] = {64,0}, + [I(52,25)] = {64,0}, + [I(53,25)] = {64,0}, + [I(54,25)] = {64,0}, + [I(55,25)] = {64,0}, + [I(56,25)] = {64,0}, + [I(57,25)] = {64,0}, + [I(58,25)] = {64,0}, + [I(59,25)] = {64,0}, + [I(60,25)] = {64,0}, + [I(61,25)] = {64,0}, + [I(62,25)] = {64,0}, + [I(63,25)] = {64,0}, + [I(64,25)] = {64,0}, + [I(65,25)] = {64,0}, + [I(66,25)] = {64,0}, + [I(67,25)] = {64,0}, + [I(68,25)] = {64,0}, + [I(69,25)] = {64,0}, + [I(70,25)] = {64,0}, + [I(71,25)] = {64,0}, + [I(72,25)] = {64,0}, + [I(73,25)] = {64,0}, + [I(74,25)] = {64,0}, + [I(75,25)] = {64,0}, + [I(76,25)] = {64,0}, + [I(77,25)] = {64,0}, + [I(78,25)] = {64,0}, + [I(79,25)] = {64,0}, + [I(80,25)] = {64,0}, + [I(81,25)] = {64,0}, + [I(82,25)] = {64,0}, + [I(83,25)] = {64,0}, + [I(84,25)] = {64,0}, + [I(85,25)] = {64,0}, + [I(86,25)] = {64,0}, + [I(87,25)] = {64,0}, + [I(88,25)] = {64,0}, + [I(89,25)] = {64,0}, + [I(90,25)] = {64,0}, + [I(91,25)] = {64,0}, + [I(92,25)] = {64,0}, + [I(93,25)] = {64,0}, + [I(94,25)] = {64,0}, + [I(95,25)] = {64,0}, + [I(96,25)] = {64,0}, + [I(97,25)] = {64,0}, + [I(98,25)] = {64,0}, + [I(99,25)] = {64,0}, + [I(100,25)] = {64,0}, + [I(101,25)] = {64,0}, + [I(102,25)] = {64,0}, + [I(103,25)] = {64,0}, + [I(104,25)] = {64,0}, + [I(105,25)] = {64,0}, + [I(106,25)] = {64,0}, + [I(107,25)] = {64,0}, + [I(108,25)] = {64,0}, + [I(109,25)] = {64,0}, + [I(110,25)] = {64,0}, + [I(111,25)] = {64,0}, + [I(112,25)] = {64,0}, + [I(113,25)] = {64,0}, + [I(114,25)] = {64,0}, + [I(115,25)] = {64,0}, + [I(116,25)] = {64,0}, + [I(117,25)] = {64,0}, + [I(118,25)] = {64,0}, + [I(119,25)] = {64,0}, + [I(120,25)] = {64,0}, + [I(121,25)] = {64,0}, + [I(122,25)] = {64,0}, + [I(123,25)] = {64,0}, + [I(124,25)] = {64,0}, + [I(125,25)] = {64,0}, + [I(126,25)] = {64,0}, + [I(127,25)] = {64,0}, + [I(128,25)] = {64,0}, + [I(129,25)] = {64,0}, + [I(130,25)] = {64,0}, + [I(131,25)] = {64,0}, + [I(132,25)] = {64,0}, + [I(133,25)] = {64,0}, + [I(134,25)] = {64,0}, + [I(135,25)] = {64,0}, + [I(136,25)] = {64,0}, + [I(137,25)] = {64,0}, + [I(138,25)] = {64,0}, + [I(139,25)] = {64,0}, + [I(140,25)] = {64,0}, + [I(141,25)] = {64,0}, + [I(142,25)] = {64,0}, + [I(143,25)] = {64,0}, + [I(144,25)] = {64,0}, + [I(145,25)] = {64,0}, + [I(146,25)] = {64,0}, + [I(147,25)] = {64,0}, + [I(148,25)] = {64,0}, + [I(149,25)] = {64,0}, + [I(150,25)] = {64,0}, + [I(151,25)] = {64,0}, + [I(152,25)] = {64,0}, + [I(153,25)] = {64,0}, + [I(154,25)] = {64,0}, + [I(155,25)] = {64,0}, + [I(156,25)] = {64,0}, + [I(157,25)] = {64,0}, + [I(158,25)] = {64,0}, + [I(159,25)] = {64,0}, + [I(160,25)] = {64,0}, + [I(161,25)] = {64,0}, + [I(162,25)] = {64,0}, + [I(163,25)] = {64,0}, + [I(164,25)] = {64,0}, + [I(165,25)] = {64,0}, + [I(166,25)] = {64,0}, + [I(167,25)] = {64,0}, + [I(168,25)] = {64,0}, + [I(169,25)] = {64,0}, + [I(170,25)] = {64,0}, + [I(171,25)] = {64,0}, + [I(172,25)] = {64,0}, + [I(173,25)] = {64,0}, + [I(174,25)] = {64,0}, + [I(175,25)] = {64,0}, + [I(176,25)] = {64,0}, + [I(177,25)] = {64,0}, + [I(178,25)] = {64,0}, + [I(179,25)] = {64,0}, + [I(180,25)] = {64,0}, + [I(181,25)] = {64,0}, + [I(182,25)] = {64,0}, + [I(183,25)] = {64,0}, + [I(184,25)] = {64,0}, + [I(185,25)] = {64,0}, + [I(186,25)] = {64,0}, + [I(187,25)] = {64,0}, + [I(188,25)] = {64,0}, + [I(189,25)] = {64,0}, + [I(190,25)] = {64,0}, + [I(191,25)] = {64,0}, + [I(192,25)] = {64,0}, + [I(193,25)] = {64,0}, + [I(194,25)] = {64,0}, + [I(195,25)] = {64,0}, + [I(196,25)] = {64,0}, + [I(197,25)] = {64,0}, + [I(198,25)] = {64,0}, + [I(199,25)] = {64,0}, + [I(200,25)] = {64,0}, + [I(201,25)] = {64,0}, + [I(202,25)] = {64,0}, + [I(203,25)] = {64,0}, + [I(204,25)] = {64,0}, + [I(205,25)] = {64,0}, + [I(206,25)] = {64,0}, + [I(207,25)] = {64,0}, + [I(208,25)] = {64,0}, + [I(209,25)] = {64,0}, + [I(210,25)] = {64,0}, + [I(211,25)] = {64,0}, + [I(212,25)] = {64,0}, + [I(213,25)] = {64,0}, + [I(214,25)] = {64,0}, + [I(215,25)] = {64,0}, + [I(216,25)] = {64,0}, + [I(217,25)] = {64,0}, + [I(218,25)] = {64,0}, + [I(219,25)] = {64,0}, + [I(220,25)] = {64,0}, + [I(221,25)] = {64,0}, + [I(222,25)] = {64,0}, + [I(223,25)] = {64,0}, + [I(224,25)] = {64,0}, + [I(225,25)] = {64,0}, + [I(226,25)] = {64,0}, + [I(227,25)] = {64,0}, + [I(228,25)] = {64,0}, + [I(229,25)] = {64,0}, + [I(230,25)] = {64,0}, + [I(231,25)] = {64,0}, + [I(232,25)] = {64,0}, + [I(233,25)] = {64,0}, + [I(234,25)] = {64,0}, + [I(235,25)] = {64,0}, + [I(236,25)] = {64,0}, + [I(237,25)] = {64,0}, + [I(238,25)] = {64,0}, + [I(239,25)] = {64,0}, + [I(240,25)] = {64,0}, + [I(241,25)] = {64,0}, + [I(242,25)] = {64,0}, + [I(243,25)] = {64,0}, + [I(244,25)] = {64,0}, + [I(245,25)] = {64,0}, + [I(246,25)] = {64,0}, + [I(247,25)] = {64,0}, + [I(248,25)] = {64,0}, + [I(249,25)] = {64,0}, + [I(250,25)] = {64,0}, + [I(251,25)] = {64,0}, + [I(252,25)] = {64,0}, + [I(253,25)] = {64,0}, + [I(254,25)] = {64,0}, + [I(255,25)] = {64,0}, + [I(0,26)] = {64,0}, + [I(1,26)] = {64,0}, + [I(2,26)] = {64,0}, + [I(3,26)] = {64,0}, + [I(4,26)] = {64,0}, + [I(5,26)] = {64,0}, + [I(6,26)] = {64,0}, + [I(7,26)] = {64,0}, + [I(8,26)] = {64,0}, + [I(9,26)] = {64,0}, + [I(10,26)] = {64,0}, + [I(11,26)] = {64,0}, + [I(12,26)] = {64,0}, + [I(13,26)] = {64,0}, + [I(14,26)] = {64,0}, + [I(15,26)] = {64,0}, + [I(16,26)] = {64,0}, + [I(17,26)] = {64,0}, + [I(18,26)] = {64,0}, + [I(19,26)] = {64,0}, + [I(20,26)] = {64,0}, + [I(21,26)] = {64,0}, + [I(22,26)] = {64,0}, + [I(23,26)] = {64,0}, + [I(24,26)] = {64,0}, + [I(25,26)] = {64,0}, + [I(26,26)] = {64,0}, + [I(27,26)] = {64,0}, + [I(28,26)] = {64,0}, + [I(29,26)] = {64,0}, + [I(30,26)] = {64,0}, + [I(31,26)] = {64,0}, + [I(32,26)] = {64,0}, + [I(33,26)] = {64,0}, + [I(34,26)] = {64,0}, + [I(35,26)] = {64,0}, + [I(36,26)] = {64,0}, + [I(37,26)] = {64,0}, + [I(38,26)] = {64,0}, + [I(39,26)] = {64,0}, + [I(40,26)] = {64,0}, + [I(41,26)] = {64,0}, + [I(42,26)] = {64,0}, + [I(43,26)] = {64,0}, + [I(44,26)] = {64,0}, + [I(45,26)] = {64,0}, + [I(46,26)] = {64,0}, + [I(47,26)] = {64,0}, + [I(48,26)] = {64,0}, + [I(49,26)] = {64,0}, + [I(50,26)] = {64,0}, + [I(51,26)] = {64,0}, + [I(52,26)] = {64,0}, + [I(53,26)] = {64,0}, + [I(54,26)] = {64,0}, + [I(55,26)] = {64,0}, + [I(56,26)] = {64,0}, + [I(57,26)] = {64,0}, + [I(58,26)] = {64,0}, + [I(59,26)] = {64,0}, + [I(60,26)] = {64,0}, + [I(61,26)] = {64,0}, + [I(62,26)] = {64,0}, + [I(63,26)] = {64,0}, + [I(64,26)] = {64,0}, + [I(65,26)] = {64,0}, + [I(66,26)] = {64,0}, + [I(67,26)] = {64,0}, + [I(68,26)] = {64,0}, + [I(69,26)] = {64,0}, + [I(70,26)] = {64,0}, + [I(71,26)] = {64,0}, + [I(72,26)] = {64,0}, + [I(73,26)] = {64,0}, + [I(74,26)] = {64,0}, + [I(75,26)] = {64,0}, + [I(76,26)] = {64,0}, + [I(77,26)] = {64,0}, + [I(78,26)] = {64,0}, + [I(79,26)] = {64,0}, + [I(80,26)] = {64,0}, + [I(81,26)] = {64,0}, + [I(82,26)] = {64,0}, + [I(83,26)] = {64,0}, + [I(84,26)] = {64,0}, + [I(85,26)] = {64,0}, + [I(86,26)] = {64,0}, + [I(87,26)] = {64,0}, + [I(88,26)] = {64,0}, + [I(89,26)] = {64,0}, + [I(90,26)] = {64,0}, + [I(91,26)] = {64,0}, + [I(92,26)] = {64,0}, + [I(93,26)] = {64,0}, + [I(94,26)] = {64,0}, + [I(95,26)] = {64,0}, + [I(96,26)] = {64,0}, + [I(97,26)] = {64,0}, + [I(98,26)] = {64,0}, + [I(99,26)] = {64,0}, + [I(100,26)] = {64,0}, + [I(101,26)] = {64,0}, + [I(102,26)] = {64,0}, + [I(103,26)] = {64,0}, + [I(104,26)] = {64,0}, + [I(105,26)] = {64,0}, + [I(106,26)] = {64,0}, + [I(107,26)] = {64,0}, + [I(108,26)] = {64,0}, + [I(109,26)] = {64,0}, + [I(110,26)] = {64,0}, + [I(111,26)] = {64,0}, + [I(112,26)] = {64,0}, + [I(113,26)] = {64,0}, + [I(114,26)] = {64,0}, + [I(115,26)] = {64,0}, + [I(116,26)] = {64,0}, + [I(117,26)] = {64,0}, + [I(118,26)] = {64,0}, + [I(119,26)] = {64,0}, + [I(120,26)] = {64,0}, + [I(121,26)] = {64,0}, + [I(122,26)] = {64,0}, + [I(123,26)] = {64,0}, + [I(124,26)] = {64,0}, + [I(125,26)] = {64,0}, + [I(126,26)] = {64,0}, + [I(127,26)] = {64,0}, + [I(128,26)] = {64,0}, + [I(129,26)] = {64,0}, + [I(130,26)] = {64,0}, + [I(131,26)] = {64,0}, + [I(132,26)] = {64,0}, + [I(133,26)] = {64,0}, + [I(134,26)] = {64,0}, + [I(135,26)] = {64,0}, + [I(136,26)] = {64,0}, + [I(137,26)] = {64,0}, + [I(138,26)] = {64,0}, + [I(139,26)] = {64,0}, + [I(140,26)] = {64,0}, + [I(141,26)] = {64,0}, + [I(142,26)] = {64,0}, + [I(143,26)] = {64,0}, + [I(144,26)] = {64,0}, + [I(145,26)] = {64,0}, + [I(146,26)] = {64,0}, + [I(147,26)] = {64,0}, + [I(148,26)] = {64,0}, + [I(149,26)] = {64,0}, + [I(150,26)] = {64,0}, + [I(151,26)] = {64,0}, + [I(152,26)] = {64,0}, + [I(153,26)] = {64,0}, + [I(154,26)] = {64,0}, + [I(155,26)] = {64,0}, + [I(156,26)] = {64,0}, + [I(157,26)] = {64,0}, + [I(158,26)] = {64,0}, + [I(159,26)] = {64,0}, + [I(160,26)] = {64,0}, + [I(161,26)] = {64,0}, + [I(162,26)] = {64,0}, + [I(163,26)] = {64,0}, + [I(164,26)] = {64,0}, + [I(165,26)] = {64,0}, + [I(166,26)] = {64,0}, + [I(167,26)] = {64,0}, + [I(168,26)] = {64,0}, + [I(169,26)] = {64,0}, + [I(170,26)] = {64,0}, + [I(171,26)] = {64,0}, + [I(172,26)] = {64,0}, + [I(173,26)] = {64,0}, + [I(174,26)] = {64,0}, + [I(175,26)] = {64,0}, + [I(176,26)] = {64,0}, + [I(177,26)] = {64,0}, + [I(178,26)] = {64,0}, + [I(179,26)] = {64,0}, + [I(180,26)] = {64,0}, + [I(181,26)] = {64,0}, + [I(182,26)] = {64,0}, + [I(183,26)] = {64,0}, + [I(184,26)] = {64,0}, + [I(185,26)] = {64,0}, + [I(186,26)] = {64,0}, + [I(187,26)] = {64,0}, + [I(188,26)] = {64,0}, + [I(189,26)] = {64,0}, + [I(190,26)] = {64,0}, + [I(191,26)] = {64,0}, + [I(192,26)] = {64,0}, + [I(193,26)] = {64,0}, + [I(194,26)] = {64,0}, + [I(195,26)] = {64,0}, + [I(196,26)] = {64,0}, + [I(197,26)] = {64,0}, + [I(198,26)] = {64,0}, + [I(199,26)] = {64,0}, + [I(200,26)] = {64,0}, + [I(201,26)] = {64,0}, + [I(202,26)] = {64,0}, + [I(203,26)] = {64,0}, + [I(204,26)] = {64,0}, + [I(205,26)] = {64,0}, + [I(206,26)] = {64,0}, + [I(207,26)] = {64,0}, + [I(208,26)] = {64,0}, + [I(209,26)] = {64,0}, + [I(210,26)] = {64,0}, + [I(211,26)] = {64,0}, + [I(212,26)] = {64,0}, + [I(213,26)] = {64,0}, + [I(214,26)] = {64,0}, + [I(215,26)] = {64,0}, + [I(216,26)] = {64,0}, + [I(217,26)] = {64,0}, + [I(218,26)] = {64,0}, + [I(219,26)] = {64,0}, + [I(220,26)] = {64,0}, + [I(221,26)] = {64,0}, + [I(222,26)] = {64,0}, + [I(223,26)] = {64,0}, + [I(224,26)] = {64,0}, + [I(225,26)] = {64,0}, + [I(226,26)] = {64,0}, + [I(227,26)] = {64,0}, + [I(228,26)] = {64,0}, + [I(229,26)] = {64,0}, + [I(230,26)] = {64,0}, + [I(231,26)] = {64,0}, + [I(232,26)] = {64,0}, + [I(233,26)] = {64,0}, + [I(234,26)] = {64,0}, + [I(235,26)] = {64,0}, + [I(236,26)] = {64,0}, + [I(237,26)] = {64,0}, + [I(238,26)] = {64,0}, + [I(239,26)] = {64,0}, + [I(240,26)] = {64,0}, + [I(241,26)] = {64,0}, + [I(242,26)] = {64,0}, + [I(243,26)] = {64,0}, + [I(244,26)] = {64,0}, + [I(245,26)] = {64,0}, + [I(246,26)] = {64,0}, + [I(247,26)] = {64,0}, + [I(248,26)] = {64,0}, + [I(249,26)] = {64,0}, + [I(250,26)] = {64,0}, + [I(251,26)] = {64,0}, + [I(252,26)] = {64,0}, + [I(253,26)] = {64,0}, + [I(254,26)] = {64,0}, + [I(255,26)] = {64,0}, + [I(0,27)] = {64,0}, + [I(1,27)] = {64,0}, + [I(2,27)] = {64,0}, + [I(3,27)] = {64,0}, + [I(4,27)] = {64,0}, + [I(5,27)] = {64,0}, + [I(6,27)] = {64,0}, + [I(7,27)] = {64,0}, + [I(8,27)] = {64,0}, + [I(9,27)] = {64,0}, + [I(10,27)] = {64,0}, + [I(11,27)] = {64,0}, + [I(12,27)] = {64,0}, + [I(13,27)] = {64,0}, + [I(14,27)] = {64,0}, + [I(15,27)] = {64,0}, + [I(16,27)] = {64,0}, + [I(17,27)] = {64,0}, + [I(18,27)] = {64,0}, + [I(19,27)] = {64,0}, + [I(20,27)] = {64,0}, + [I(21,27)] = {64,0}, + [I(22,27)] = {64,0}, + [I(23,27)] = {64,0}, + [I(24,27)] = {64,0}, + [I(25,27)] = {64,0}, + [I(26,27)] = {64,0}, + [I(27,27)] = {64,0}, + [I(28,27)] = {64,0}, + [I(29,27)] = {64,0}, + [I(30,27)] = {64,0}, + [I(31,27)] = {64,0}, + [I(32,27)] = {64,0}, + [I(33,27)] = {64,0}, + [I(34,27)] = {64,0}, + [I(35,27)] = {64,0}, + [I(36,27)] = {64,0}, + [I(37,27)] = {64,0}, + [I(38,27)] = {64,0}, + [I(39,27)] = {64,0}, + [I(40,27)] = {64,0}, + [I(41,27)] = {64,0}, + [I(42,27)] = {64,0}, + [I(43,27)] = {64,0}, + [I(44,27)] = {64,0}, + [I(45,27)] = {64,0}, + [I(46,27)] = {64,0}, + [I(47,27)] = {64,0}, + [I(48,27)] = {64,0}, + [I(49,27)] = {64,0}, + [I(50,27)] = {64,0}, + [I(51,27)] = {64,0}, + [I(52,27)] = {64,0}, + [I(53,27)] = {64,0}, + [I(54,27)] = {64,0}, + [I(55,27)] = {64,0}, + [I(56,27)] = {64,0}, + [I(57,27)] = {64,0}, + [I(58,27)] = {64,0}, + [I(59,27)] = {64,0}, + [I(60,27)] = {64,0}, + [I(61,27)] = {64,0}, + [I(62,27)] = {64,0}, + [I(63,27)] = {64,0}, + [I(64,27)] = {64,0}, + [I(65,27)] = {64,0}, + [I(66,27)] = {64,0}, + [I(67,27)] = {64,0}, + [I(68,27)] = {64,0}, + [I(69,27)] = {64,0}, + [I(70,27)] = {64,0}, + [I(71,27)] = {64,0}, + [I(72,27)] = {64,0}, + [I(73,27)] = {64,0}, + [I(74,27)] = {64,0}, + [I(75,27)] = {64,0}, + [I(76,27)] = {64,0}, + [I(77,27)] = {64,0}, + [I(78,27)] = {64,0}, + [I(79,27)] = {64,0}, + [I(80,27)] = {64,0}, + [I(81,27)] = {64,0}, + [I(82,27)] = {64,0}, + [I(83,27)] = {64,0}, + [I(84,27)] = {64,0}, + [I(85,27)] = {64,0}, + [I(86,27)] = {64,0}, + [I(87,27)] = {64,0}, + [I(88,27)] = {64,0}, + [I(89,27)] = {64,0}, + [I(90,27)] = {64,0}, + [I(91,27)] = {64,0}, + [I(92,27)] = {64,0}, + [I(93,27)] = {64,0}, + [I(94,27)] = {64,0}, + [I(95,27)] = {64,0}, + [I(96,27)] = {64,0}, + [I(97,27)] = {64,0}, + [I(98,27)] = {64,0}, + [I(99,27)] = {64,0}, + [I(100,27)] = {64,0}, + [I(101,27)] = {64,0}, + [I(102,27)] = {64,0}, + [I(103,27)] = {64,0}, + [I(104,27)] = {64,0}, + [I(105,27)] = {64,0}, + [I(106,27)] = {64,0}, + [I(107,27)] = {64,0}, + [I(108,27)] = {64,0}, + [I(109,27)] = {64,0}, + [I(110,27)] = {64,0}, + [I(111,27)] = {64,0}, + [I(112,27)] = {64,0}, + [I(113,27)] = {64,0}, + [I(114,27)] = {64,0}, + [I(115,27)] = {64,0}, + [I(116,27)] = {64,0}, + [I(117,27)] = {64,0}, + [I(118,27)] = {64,0}, + [I(119,27)] = {64,0}, + [I(120,27)] = {64,0}, + [I(121,27)] = {64,0}, + [I(122,27)] = {64,0}, + [I(123,27)] = {64,0}, + [I(124,27)] = {64,0}, + [I(125,27)] = {64,0}, + [I(126,27)] = {64,0}, + [I(127,27)] = {64,0}, + [I(128,27)] = {64,0}, + [I(129,27)] = {64,0}, + [I(130,27)] = {64,0}, + [I(131,27)] = {64,0}, + [I(132,27)] = {64,0}, + [I(133,27)] = {64,0}, + [I(134,27)] = {64,0}, + [I(135,27)] = {64,0}, + [I(136,27)] = {64,0}, + [I(137,27)] = {64,0}, + [I(138,27)] = {64,0}, + [I(139,27)] = {64,0}, + [I(140,27)] = {64,0}, + [I(141,27)] = {64,0}, + [I(142,27)] = {64,0}, + [I(143,27)] = {64,0}, + [I(144,27)] = {64,0}, + [I(145,27)] = {64,0}, + [I(146,27)] = {64,0}, + [I(147,27)] = {64,0}, + [I(148,27)] = {64,0}, + [I(149,27)] = {64,0}, + [I(150,27)] = {64,0}, + [I(151,27)] = {64,0}, + [I(152,27)] = {64,0}, + [I(153,27)] = {64,0}, + [I(154,27)] = {64,0}, + [I(155,27)] = {64,0}, + [I(156,27)] = {64,0}, + [I(157,27)] = {64,0}, + [I(158,27)] = {64,0}, + [I(159,27)] = {64,0}, + [I(160,27)] = {64,0}, + [I(161,27)] = {64,0}, + [I(162,27)] = {64,0}, + [I(163,27)] = {64,0}, + [I(164,27)] = {64,0}, + [I(165,27)] = {64,0}, + [I(166,27)] = {64,0}, + [I(167,27)] = {64,0}, + [I(168,27)] = {64,0}, + [I(169,27)] = {64,0}, + [I(170,27)] = {64,0}, + [I(171,27)] = {64,0}, + [I(172,27)] = {64,0}, + [I(173,27)] = {64,0}, + [I(174,27)] = {64,0}, + [I(175,27)] = {64,0}, + [I(176,27)] = {64,0}, + [I(177,27)] = {64,0}, + [I(178,27)] = {64,0}, + [I(179,27)] = {64,0}, + [I(180,27)] = {64,0}, + [I(181,27)] = {64,0}, + [I(182,27)] = {64,0}, + [I(183,27)] = {64,0}, + [I(184,27)] = {64,0}, + [I(185,27)] = {64,0}, + [I(186,27)] = {64,0}, + [I(187,27)] = {64,0}, + [I(188,27)] = {64,0}, + [I(189,27)] = {64,0}, + [I(190,27)] = {64,0}, + [I(191,27)] = {64,0}, + [I(192,27)] = {64,0}, + [I(193,27)] = {64,0}, + [I(194,27)] = {64,0}, + [I(195,27)] = {64,0}, + [I(196,27)] = {64,0}, + [I(197,27)] = {64,0}, + [I(198,27)] = {64,0}, + [I(199,27)] = {64,0}, + [I(200,27)] = {64,0}, + [I(201,27)] = {64,0}, + [I(202,27)] = {64,0}, + [I(203,27)] = {64,0}, + [I(204,27)] = {64,0}, + [I(205,27)] = {64,0}, + [I(206,27)] = {64,0}, + [I(207,27)] = {64,0}, + [I(208,27)] = {64,0}, + [I(209,27)] = {64,0}, + [I(210,27)] = {64,0}, + [I(211,27)] = {64,0}, + [I(212,27)] = {64,0}, + [I(213,27)] = {64,0}, + [I(214,27)] = {64,0}, + [I(215,27)] = {64,0}, + [I(216,27)] = {64,0}, + [I(217,27)] = {64,0}, + [I(218,27)] = {64,0}, + [I(219,27)] = {64,0}, + [I(220,27)] = {64,0}, + [I(221,27)] = {64,0}, + [I(222,27)] = {64,0}, + [I(223,27)] = {64,0}, + [I(224,27)] = {64,0}, + [I(225,27)] = {64,0}, + [I(226,27)] = {64,0}, + [I(227,27)] = {64,0}, + [I(228,27)] = {64,0}, + [I(229,27)] = {64,0}, + [I(230,27)] = {64,0}, + [I(231,27)] = {64,0}, + [I(232,27)] = {64,0}, + [I(233,27)] = {64,0}, + [I(234,27)] = {64,0}, + [I(235,27)] = {64,0}, + [I(236,27)] = {64,0}, + [I(237,27)] = {64,0}, + [I(238,27)] = {64,0}, + [I(239,27)] = {64,0}, + [I(240,27)] = {64,0}, + [I(241,27)] = {64,0}, + [I(242,27)] = {64,0}, + [I(243,27)] = {64,0}, + [I(244,27)] = {64,0}, + [I(245,27)] = {64,0}, + [I(246,27)] = {64,0}, + [I(247,27)] = {64,0}, + [I(248,27)] = {64,0}, + [I(249,27)] = {64,0}, + [I(250,27)] = {64,0}, + [I(251,27)] = {64,0}, + [I(252,27)] = {64,0}, + [I(253,27)] = {64,0}, + [I(254,27)] = {64,0}, + [I(255,27)] = {64,0}, + [I(0,28)] = {64,0}, + [I(1,28)] = {64,0}, + [I(2,28)] = {64,0}, + [I(3,28)] = {64,0}, + [I(4,28)] = {64,0}, + [I(5,28)] = {64,0}, + [I(6,28)] = {64,0}, + [I(7,28)] = {64,0}, + [I(8,28)] = {64,0}, + [I(9,28)] = {64,0}, + [I(10,28)] = {64,0}, + [I(11,28)] = {64,0}, + [I(12,28)] = {64,0}, + [I(13,28)] = {64,0}, + [I(14,28)] = {64,0}, + [I(15,28)] = {64,0}, + [I(16,28)] = {64,0}, + [I(17,28)] = {64,0}, + [I(18,28)] = {64,0}, + [I(19,28)] = {64,0}, + [I(20,28)] = {64,0}, + [I(21,28)] = {64,0}, + [I(22,28)] = {64,0}, + [I(23,28)] = {64,0}, + [I(24,28)] = {64,0}, + [I(25,28)] = {64,0}, + [I(26,28)] = {64,0}, + [I(27,28)] = {64,0}, + [I(28,28)] = {64,0}, + [I(29,28)] = {64,0}, + [I(30,28)] = {64,0}, + [I(31,28)] = {64,0}, + [I(32,28)] = {64,0}, + [I(33,28)] = {64,0}, + [I(34,28)] = {64,0}, + [I(35,28)] = {64,0}, + [I(36,28)] = {64,0}, + [I(37,28)] = {64,0}, + [I(38,28)] = {64,0}, + [I(39,28)] = {64,0}, + [I(40,28)] = {64,0}, + [I(41,28)] = {64,0}, + [I(42,28)] = {64,0}, + [I(43,28)] = {64,0}, + [I(44,28)] = {64,0}, + [I(45,28)] = {64,0}, + [I(46,28)] = {64,0}, + [I(47,28)] = {64,0}, + [I(48,28)] = {64,0}, + [I(49,28)] = {64,0}, + [I(50,28)] = {64,0}, + [I(51,28)] = {64,0}, + [I(52,28)] = {64,0}, + [I(53,28)] = {64,0}, + [I(54,28)] = {64,0}, + [I(55,28)] = {64,0}, + [I(56,28)] = {64,0}, + [I(57,28)] = {64,0}, + [I(58,28)] = {64,0}, + [I(59,28)] = {64,0}, + [I(60,28)] = {64,0}, + [I(61,28)] = {64,0}, + [I(62,28)] = {64,0}, + [I(63,28)] = {64,0}, + [I(64,28)] = {64,0}, + [I(65,28)] = {64,0}, + [I(66,28)] = {64,0}, + [I(67,28)] = {64,0}, + [I(68,28)] = {64,0}, + [I(69,28)] = {64,0}, + [I(70,28)] = {64,0}, + [I(71,28)] = {64,0}, + [I(72,28)] = {64,0}, + [I(73,28)] = {64,0}, + [I(74,28)] = {64,0}, + [I(75,28)] = {64,0}, + [I(76,28)] = {64,0}, + [I(77,28)] = {64,0}, + [I(78,28)] = {64,0}, + [I(79,28)] = {64,0}, + [I(80,28)] = {64,0}, + [I(81,28)] = {64,0}, + [I(82,28)] = {64,0}, + [I(83,28)] = {64,0}, + [I(84,28)] = {64,0}, + [I(85,28)] = {64,0}, + [I(86,28)] = {64,0}, + [I(87,28)] = {64,0}, + [I(88,28)] = {64,0}, + [I(89,28)] = {64,0}, + [I(90,28)] = {64,0}, + [I(91,28)] = {64,0}, + [I(92,28)] = {64,0}, + [I(93,28)] = {64,0}, + [I(94,28)] = {64,0}, + [I(95,28)] = {64,0}, + [I(96,28)] = {64,0}, + [I(97,28)] = {64,0}, + [I(98,28)] = {64,0}, + [I(99,28)] = {64,0}, + [I(100,28)] = {64,0}, + [I(101,28)] = {64,0}, + [I(102,28)] = {64,0}, + [I(103,28)] = {64,0}, + [I(104,28)] = {64,0}, + [I(105,28)] = {64,0}, + [I(106,28)] = {64,0}, + [I(107,28)] = {64,0}, + [I(108,28)] = {64,0}, + [I(109,28)] = {64,0}, + [I(110,28)] = {64,0}, + [I(111,28)] = {64,0}, + [I(112,28)] = {64,0}, + [I(113,28)] = {64,0}, + [I(114,28)] = {64,0}, + [I(115,28)] = {64,0}, + [I(116,28)] = {64,0}, + [I(117,28)] = {64,0}, + [I(118,28)] = {64,0}, + [I(119,28)] = {64,0}, + [I(120,28)] = {64,0}, + [I(121,28)] = {64,0}, + [I(122,28)] = {64,0}, + [I(123,28)] = {64,0}, + [I(124,28)] = {64,0}, + [I(125,28)] = {64,0}, + [I(126,28)] = {64,0}, + [I(127,28)] = {64,0}, + [I(128,28)] = {64,0}, + [I(129,28)] = {64,0}, + [I(130,28)] = {64,0}, + [I(131,28)] = {64,0}, + [I(132,28)] = {64,0}, + [I(133,28)] = {64,0}, + [I(134,28)] = {64,0}, + [I(135,28)] = {64,0}, + [I(136,28)] = {64,0}, + [I(137,28)] = {64,0}, + [I(138,28)] = {64,0}, + [I(139,28)] = {64,0}, + [I(140,28)] = {64,0}, + [I(141,28)] = {64,0}, + [I(142,28)] = {64,0}, + [I(143,28)] = {64,0}, + [I(144,28)] = {64,0}, + [I(145,28)] = {64,0}, + [I(146,28)] = {64,0}, + [I(147,28)] = {64,0}, + [I(148,28)] = {64,0}, + [I(149,28)] = {64,0}, + [I(150,28)] = {64,0}, + [I(151,28)] = {64,0}, + [I(152,28)] = {64,0}, + [I(153,28)] = {64,0}, + [I(154,28)] = {64,0}, + [I(155,28)] = {64,0}, + [I(156,28)] = {64,0}, + [I(157,28)] = {64,0}, + [I(158,28)] = {64,0}, + [I(159,28)] = {64,0}, + [I(160,28)] = {64,0}, + [I(161,28)] = {64,0}, + [I(162,28)] = {64,0}, + [I(163,28)] = {64,0}, + [I(164,28)] = {64,0}, + [I(165,28)] = {64,0}, + [I(166,28)] = {64,0}, + [I(167,28)] = {64,0}, + [I(168,28)] = {64,0}, + [I(169,28)] = {64,0}, + [I(170,28)] = {64,0}, + [I(171,28)] = {64,0}, + [I(172,28)] = {64,0}, + [I(173,28)] = {64,0}, + [I(174,28)] = {64,0}, + [I(175,28)] = {64,0}, + [I(176,28)] = {64,0}, + [I(177,28)] = {64,0}, + [I(178,28)] = {64,0}, + [I(179,28)] = {64,0}, + [I(180,28)] = {64,0}, + [I(181,28)] = {64,0}, + [I(182,28)] = {64,0}, + [I(183,28)] = {64,0}, + [I(184,28)] = {64,0}, + [I(185,28)] = {64,0}, + [I(186,28)] = {64,0}, + [I(187,28)] = {64,0}, + [I(188,28)] = {64,0}, + [I(189,28)] = {64,0}, + [I(190,28)] = {64,0}, + [I(191,28)] = {64,0}, + [I(192,28)] = {64,0}, + [I(193,28)] = {64,0}, + [I(194,28)] = {64,0}, + [I(195,28)] = {64,0}, + [I(196,28)] = {64,0}, + [I(197,28)] = {64,0}, + [I(198,28)] = {64,0}, + [I(199,28)] = {64,0}, + [I(200,28)] = {64,0}, + [I(201,28)] = {64,0}, + [I(202,28)] = {64,0}, + [I(203,28)] = {64,0}, + [I(204,28)] = {64,0}, + [I(205,28)] = {64,0}, + [I(206,28)] = {64,0}, + [I(207,28)] = {64,0}, + [I(208,28)] = {64,0}, + [I(209,28)] = {64,0}, + [I(210,28)] = {64,0}, + [I(211,28)] = {64,0}, + [I(212,28)] = {64,0}, + [I(213,28)] = {64,0}, + [I(214,28)] = {64,0}, + [I(215,28)] = {64,0}, + [I(216,28)] = {64,0}, + [I(217,28)] = {64,0}, + [I(218,28)] = {64,0}, + [I(219,28)] = {64,0}, + [I(220,28)] = {64,0}, + [I(221,28)] = {64,0}, + [I(222,28)] = {64,0}, + [I(223,28)] = {64,0}, + [I(224,28)] = {64,0}, + [I(225,28)] = {64,0}, + [I(226,28)] = {64,0}, + [I(227,28)] = {64,0}, + [I(228,28)] = {64,0}, + [I(229,28)] = {64,0}, + [I(230,28)] = {64,0}, + [I(231,28)] = {64,0}, + [I(232,28)] = {64,0}, + [I(233,28)] = {64,0}, + [I(234,28)] = {64,0}, + [I(235,28)] = {64,0}, + [I(236,28)] = {64,0}, + [I(237,28)] = {64,0}, + [I(238,28)] = {64,0}, + [I(239,28)] = {64,0}, + [I(240,28)] = {64,0}, + [I(241,28)] = {64,0}, + [I(242,28)] = {64,0}, + [I(243,28)] = {64,0}, + [I(244,28)] = {64,0}, + [I(245,28)] = {64,0}, + [I(246,28)] = {64,0}, + [I(247,28)] = {64,0}, + [I(248,28)] = {64,0}, + [I(249,28)] = {64,0}, + [I(250,28)] = {64,0}, + [I(251,28)] = {64,0}, + [I(252,28)] = {64,0}, + [I(253,28)] = {64,0}, + [I(254,28)] = {64,0}, + [I(255,28)] = {64,0}, + [I(0,29)] = {64,0}, + [I(1,29)] = {64,0}, + [I(2,29)] = {64,0}, + [I(3,29)] = {64,0}, + [I(4,29)] = {64,0}, + [I(5,29)] = {64,0}, + [I(6,29)] = {64,0}, + [I(7,29)] = {64,0}, + [I(8,29)] = {64,0}, + [I(9,29)] = {64,0}, + [I(10,29)] = {64,0}, + [I(11,29)] = {64,0}, + [I(12,29)] = {64,0}, + [I(13,29)] = {64,0}, + [I(14,29)] = {64,0}, + [I(15,29)] = {64,0}, + [I(16,29)] = {64,0}, + [I(17,29)] = {64,0}, + [I(18,29)] = {64,0}, + [I(19,29)] = {64,0}, + [I(20,29)] = {64,0}, + [I(21,29)] = {64,0}, + [I(22,29)] = {64,0}, + [I(23,29)] = {64,0}, + [I(24,29)] = {64,0}, + [I(25,29)] = {64,0}, + [I(26,29)] = {64,0}, + [I(27,29)] = {64,0}, + [I(28,29)] = {64,0}, + [I(29,29)] = {64,0}, + [I(30,29)] = {64,0}, + [I(31,29)] = {64,0}, + [I(32,29)] = {64,0}, + [I(33,29)] = {64,0}, + [I(34,29)] = {64,0}, + [I(35,29)] = {64,0}, + [I(36,29)] = {64,0}, + [I(37,29)] = {64,0}, + [I(38,29)] = {64,0}, + [I(39,29)] = {64,0}, + [I(40,29)] = {64,0}, + [I(41,29)] = {64,0}, + [I(42,29)] = {64,0}, + [I(43,29)] = {64,0}, + [I(44,29)] = {64,0}, + [I(45,29)] = {64,0}, + [I(46,29)] = {64,0}, + [I(47,29)] = {64,0}, + [I(48,29)] = {64,0}, + [I(49,29)] = {64,0}, + [I(50,29)] = {64,0}, + [I(51,29)] = {64,0}, + [I(52,29)] = {64,0}, + [I(53,29)] = {64,0}, + [I(54,29)] = {64,0}, + [I(55,29)] = {64,0}, + [I(56,29)] = {64,0}, + [I(57,29)] = {64,0}, + [I(58,29)] = {64,0}, + [I(59,29)] = {64,0}, + [I(60,29)] = {64,0}, + [I(61,29)] = {64,0}, + [I(62,29)] = {64,0}, + [I(63,29)] = {64,0}, + [I(64,29)] = {64,0}, + [I(65,29)] = {64,0}, + [I(66,29)] = {64,0}, + [I(67,29)] = {64,0}, + [I(68,29)] = {64,0}, + [I(69,29)] = {64,0}, + [I(70,29)] = {64,0}, + [I(71,29)] = {64,0}, + [I(72,29)] = {64,0}, + [I(73,29)] = {64,0}, + [I(74,29)] = {64,0}, + [I(75,29)] = {64,0}, + [I(76,29)] = {64,0}, + [I(77,29)] = {64,0}, + [I(78,29)] = {64,0}, + [I(79,29)] = {64,0}, + [I(80,29)] = {64,0}, + [I(81,29)] = {64,0}, + [I(82,29)] = {64,0}, + [I(83,29)] = {64,0}, + [I(84,29)] = {64,0}, + [I(85,29)] = {64,0}, + [I(86,29)] = {64,0}, + [I(87,29)] = {64,0}, + [I(88,29)] = {64,0}, + [I(89,29)] = {64,0}, + [I(90,29)] = {64,0}, + [I(91,29)] = {64,0}, + [I(92,29)] = {64,0}, + [I(93,29)] = {64,0}, + [I(94,29)] = {64,0}, + [I(95,29)] = {64,0}, + [I(96,29)] = {64,0}, + [I(97,29)] = {64,0}, + [I(98,29)] = {64,0}, + [I(99,29)] = {64,0}, + [I(100,29)] = {64,0}, + [I(101,29)] = {64,0}, + [I(102,29)] = {64,0}, + [I(103,29)] = {64,0}, + [I(104,29)] = {64,0}, + [I(105,29)] = {64,0}, + [I(106,29)] = {64,0}, + [I(107,29)] = {64,0}, + [I(108,29)] = {64,0}, + [I(109,29)] = {64,0}, + [I(110,29)] = {64,0}, + [I(111,29)] = {64,0}, + [I(112,29)] = {64,0}, + [I(113,29)] = {64,0}, + [I(114,29)] = {64,0}, + [I(115,29)] = {64,0}, + [I(116,29)] = {64,0}, + [I(117,29)] = {64,0}, + [I(118,29)] = {64,0}, + [I(119,29)] = {64,0}, + [I(120,29)] = {64,0}, + [I(121,29)] = {64,0}, + [I(122,29)] = {64,0}, + [I(123,29)] = {64,0}, + [I(124,29)] = {64,0}, + [I(125,29)] = {64,0}, + [I(126,29)] = {64,0}, + [I(127,29)] = {64,0}, + [I(128,29)] = {64,0}, + [I(129,29)] = {64,0}, + [I(130,29)] = {64,0}, + [I(131,29)] = {64,0}, + [I(132,29)] = {64,0}, + [I(133,29)] = {64,0}, + [I(134,29)] = {64,0}, + [I(135,29)] = {64,0}, + [I(136,29)] = {64,0}, + [I(137,29)] = {64,0}, + [I(138,29)] = {64,0}, + [I(139,29)] = {64,0}, + [I(140,29)] = {64,0}, + [I(141,29)] = {64,0}, + [I(142,29)] = {64,0}, + [I(143,29)] = {64,0}, + [I(144,29)] = {64,0}, + [I(145,29)] = {64,0}, + [I(146,29)] = {64,0}, + [I(147,29)] = {64,0}, + [I(148,29)] = {64,0}, + [I(149,29)] = {64,0}, + [I(150,29)] = {64,0}, + [I(151,29)] = {64,0}, + [I(152,29)] = {64,0}, + [I(153,29)] = {64,0}, + [I(154,29)] = {64,0}, + [I(155,29)] = {64,0}, + [I(156,29)] = {64,0}, + [I(157,29)] = {64,0}, + [I(158,29)] = {64,0}, + [I(159,29)] = {64,0}, + [I(160,29)] = {64,0}, + [I(161,29)] = {64,0}, + [I(162,29)] = {64,0}, + [I(163,29)] = {64,0}, + [I(164,29)] = {64,0}, + [I(165,29)] = {64,0}, + [I(166,29)] = {64,0}, + [I(167,29)] = {64,0}, + [I(168,29)] = {64,0}, + [I(169,29)] = {64,0}, + [I(170,29)] = {64,0}, + [I(171,29)] = {64,0}, + [I(172,29)] = {64,0}, + [I(173,29)] = {64,0}, + [I(174,29)] = {64,0}, + [I(175,29)] = {64,0}, + [I(176,29)] = {64,0}, + [I(177,29)] = {64,0}, + [I(178,29)] = {64,0}, + [I(179,29)] = {64,0}, + [I(180,29)] = {64,0}, + [I(181,29)] = {64,0}, + [I(182,29)] = {64,0}, + [I(183,29)] = {64,0}, + [I(184,29)] = {64,0}, + [I(185,29)] = {64,0}, + [I(186,29)] = {64,0}, + [I(187,29)] = {64,0}, + [I(188,29)] = {64,0}, + [I(189,29)] = {64,0}, + [I(190,29)] = {64,0}, + [I(191,29)] = {64,0}, + [I(192,29)] = {64,0}, + [I(193,29)] = {64,0}, + [I(194,29)] = {64,0}, + [I(195,29)] = {64,0}, + [I(196,29)] = {64,0}, + [I(197,29)] = {64,0}, + [I(198,29)] = {64,0}, + [I(199,29)] = {64,0}, + [I(200,29)] = {64,0}, + [I(201,29)] = {64,0}, + [I(202,29)] = {64,0}, + [I(203,29)] = {64,0}, + [I(204,29)] = {64,0}, + [I(205,29)] = {64,0}, + [I(206,29)] = {64,0}, + [I(207,29)] = {64,0}, + [I(208,29)] = {64,0}, + [I(209,29)] = {64,0}, + [I(210,29)] = {64,0}, + [I(211,29)] = {64,0}, + [I(212,29)] = {64,0}, + [I(213,29)] = {64,0}, + [I(214,29)] = {64,0}, + [I(215,29)] = {64,0}, + [I(216,29)] = {64,0}, + [I(217,29)] = {64,0}, + [I(218,29)] = {64,0}, + [I(219,29)] = {64,0}, + [I(220,29)] = {64,0}, + [I(221,29)] = {64,0}, + [I(222,29)] = {64,0}, + [I(223,29)] = {64,0}, + [I(224,29)] = {64,0}, + [I(225,29)] = {64,0}, + [I(226,29)] = {64,0}, + [I(227,29)] = {64,0}, + [I(228,29)] = {64,0}, + [I(229,29)] = {64,0}, + [I(230,29)] = {64,0}, + [I(231,29)] = {64,0}, + [I(232,29)] = {64,0}, + [I(233,29)] = {64,0}, + [I(234,29)] = {64,0}, + [I(235,29)] = {64,0}, + [I(236,29)] = {64,0}, + [I(237,29)] = {64,0}, + [I(238,29)] = {64,0}, + [I(239,29)] = {64,0}, + [I(240,29)] = {64,0}, + [I(241,29)] = {64,0}, + [I(242,29)] = {64,0}, + [I(243,29)] = {64,0}, + [I(244,29)] = {64,0}, + [I(245,29)] = {64,0}, + [I(246,29)] = {64,0}, + [I(247,29)] = {64,0}, + [I(248,29)] = {64,0}, + [I(249,29)] = {64,0}, + [I(250,29)] = {64,0}, + [I(251,29)] = {64,0}, + [I(252,29)] = {64,0}, + [I(253,29)] = {64,0}, + [I(254,29)] = {64,0}, + [I(255,29)] = {64,0}, + [I(0,30)] = {64,0}, + [I(1,30)] = {64,0}, + [I(2,30)] = {64,0}, + [I(3,30)] = {64,0}, + [I(4,30)] = {64,0}, + [I(5,30)] = {64,0}, + [I(6,30)] = {64,0}, + [I(7,30)] = {64,0}, + [I(8,30)] = {64,0}, + [I(9,30)] = {64,0}, + [I(10,30)] = {64,0}, + [I(11,30)] = {64,0}, + [I(12,30)] = {64,0}, + [I(13,30)] = {64,0}, + [I(14,30)] = {64,0}, + [I(15,30)] = {64,0}, + [I(16,30)] = {64,0}, + [I(17,30)] = {64,0}, + [I(18,30)] = {64,0}, + [I(19,30)] = {64,0}, + [I(20,30)] = {64,0}, + [I(21,30)] = {64,0}, + [I(22,30)] = {64,0}, + [I(23,30)] = {64,0}, + [I(24,30)] = {64,0}, + [I(25,30)] = {64,0}, + [I(26,30)] = {64,0}, + [I(27,30)] = {64,0}, + [I(28,30)] = {64,0}, + [I(29,30)] = {64,0}, + [I(30,30)] = {64,0}, + [I(31,30)] = {64,0}, + [I(32,30)] = {64,0}, + [I(33,30)] = {64,0}, + [I(34,30)] = {64,0}, + [I(35,30)] = {64,0}, + [I(36,30)] = {64,0}, + [I(37,30)] = {64,0}, + [I(38,30)] = {64,0}, + [I(39,30)] = {64,0}, + [I(40,30)] = {64,0}, + [I(41,30)] = {64,0}, + [I(42,30)] = {64,0}, + [I(43,30)] = {64,0}, + [I(44,30)] = {64,0}, + [I(45,30)] = {64,0}, + [I(46,30)] = {64,0}, + [I(47,30)] = {64,0}, + [I(48,30)] = {64,0}, + [I(49,30)] = {64,0}, + [I(50,30)] = {64,0}, + [I(51,30)] = {64,0}, + [I(52,30)] = {64,0}, + [I(53,30)] = {64,0}, + [I(54,30)] = {64,0}, + [I(55,30)] = {64,0}, + [I(56,30)] = {64,0}, + [I(57,30)] = {64,0}, + [I(58,30)] = {64,0}, + [I(59,30)] = {64,0}, + [I(60,30)] = {64,0}, + [I(61,30)] = {64,0}, + [I(62,30)] = {64,0}, + [I(63,30)] = {64,0}, + [I(64,30)] = {64,0}, + [I(65,30)] = {64,0}, + [I(66,30)] = {64,0}, + [I(67,30)] = {64,0}, + [I(68,30)] = {64,0}, + [I(69,30)] = {64,0}, + [I(70,30)] = {64,0}, + [I(71,30)] = {64,0}, + [I(72,30)] = {64,0}, + [I(73,30)] = {64,0}, + [I(74,30)] = {64,0}, + [I(75,30)] = {64,0}, + [I(76,30)] = {64,0}, + [I(77,30)] = {64,0}, + [I(78,30)] = {64,0}, + [I(79,30)] = {64,0}, + [I(80,30)] = {64,0}, + [I(81,30)] = {64,0}, + [I(82,30)] = {64,0}, + [I(83,30)] = {64,0}, + [I(84,30)] = {64,0}, + [I(85,30)] = {64,0}, + [I(86,30)] = {64,0}, + [I(87,30)] = {64,0}, + [I(88,30)] = {64,0}, + [I(89,30)] = {64,0}, + [I(90,30)] = {64,0}, + [I(91,30)] = {64,0}, + [I(92,30)] = {64,0}, + [I(93,30)] = {64,0}, + [I(94,30)] = {64,0}, + [I(95,30)] = {64,0}, + [I(96,30)] = {64,0}, + [I(97,30)] = {64,0}, + [I(98,30)] = {64,0}, + [I(99,30)] = {64,0}, + [I(100,30)] = {64,0}, + [I(101,30)] = {64,0}, + [I(102,30)] = {64,0}, + [I(103,30)] = {64,0}, + [I(104,30)] = {64,0}, + [I(105,30)] = {64,0}, + [I(106,30)] = {64,0}, + [I(107,30)] = {64,0}, + [I(108,30)] = {64,0}, + [I(109,30)] = {64,0}, + [I(110,30)] = {64,0}, + [I(111,30)] = {64,0}, + [I(112,30)] = {64,0}, + [I(113,30)] = {64,0}, + [I(114,30)] = {64,0}, + [I(115,30)] = {64,0}, + [I(116,30)] = {64,0}, + [I(117,30)] = {64,0}, + [I(118,30)] = {64,0}, + [I(119,30)] = {64,0}, + [I(120,30)] = {64,0}, + [I(121,30)] = {64,0}, + [I(122,30)] = {64,0}, + [I(123,30)] = {64,0}, + [I(124,30)] = {64,0}, + [I(125,30)] = {64,0}, + [I(126,30)] = {64,0}, + [I(127,30)] = {64,0}, + [I(128,30)] = {64,0}, + [I(129,30)] = {64,0}, + [I(130,30)] = {64,0}, + [I(131,30)] = {64,0}, + [I(132,30)] = {64,0}, + [I(133,30)] = {64,0}, + [I(134,30)] = {64,0}, + [I(135,30)] = {64,0}, + [I(136,30)] = {64,0}, + [I(137,30)] = {64,0}, + [I(138,30)] = {64,0}, + [I(139,30)] = {64,0}, + [I(140,30)] = {64,0}, + [I(141,30)] = {64,0}, + [I(142,30)] = {64,0}, + [I(143,30)] = {64,0}, + [I(144,30)] = {64,0}, + [I(145,30)] = {64,0}, + [I(146,30)] = {64,0}, + [I(147,30)] = {64,0}, + [I(148,30)] = {64,0}, + [I(149,30)] = {64,0}, + [I(150,30)] = {64,0}, + [I(151,30)] = {64,0}, + [I(152,30)] = {64,0}, + [I(153,30)] = {64,0}, + [I(154,30)] = {64,0}, + [I(155,30)] = {64,0}, + [I(156,30)] = {64,0}, + [I(157,30)] = {64,0}, + [I(158,30)] = {64,0}, + [I(159,30)] = {64,0}, + [I(160,30)] = {64,0}, + [I(161,30)] = {64,0}, + [I(162,30)] = {64,0}, + [I(163,30)] = {64,0}, + [I(164,30)] = {64,0}, + [I(165,30)] = {64,0}, + [I(166,30)] = {64,0}, + [I(167,30)] = {64,0}, + [I(168,30)] = {64,0}, + [I(169,30)] = {64,0}, + [I(170,30)] = {64,0}, + [I(171,30)] = {64,0}, + [I(172,30)] = {64,0}, + [I(173,30)] = {64,0}, + [I(174,30)] = {64,0}, + [I(175,30)] = {64,0}, + [I(176,30)] = {64,0}, + [I(177,30)] = {64,0}, + [I(178,30)] = {64,0}, + [I(179,30)] = {64,0}, + [I(180,30)] = {64,0}, + [I(181,30)] = {64,0}, + [I(182,30)] = {64,0}, + [I(183,30)] = {64,0}, + [I(184,30)] = {64,0}, + [I(185,30)] = {64,0}, + [I(186,30)] = {64,0}, + [I(187,30)] = {64,0}, + [I(188,30)] = {64,0}, + [I(189,30)] = {64,0}, + [I(190,30)] = {64,0}, + [I(191,30)] = {64,0}, + [I(192,30)] = {64,0}, + [I(193,30)] = {64,0}, + [I(194,30)] = {64,0}, + [I(195,30)] = {64,0}, + [I(196,30)] = {64,0}, + [I(197,30)] = {64,0}, + [I(198,30)] = {64,0}, + [I(199,30)] = {64,0}, + [I(200,30)] = {64,0}, + [I(201,30)] = {64,0}, + [I(202,30)] = {64,0}, + [I(203,30)] = {64,0}, + [I(204,30)] = {64,0}, + [I(205,30)] = {64,0}, + [I(206,30)] = {64,0}, + [I(207,30)] = {64,0}, + [I(208,30)] = {64,0}, + [I(209,30)] = {64,0}, + [I(210,30)] = {64,0}, + [I(211,30)] = {64,0}, + [I(212,30)] = {64,0}, + [I(213,30)] = {64,0}, + [I(214,30)] = {64,0}, + [I(215,30)] = {64,0}, + [I(216,30)] = {64,0}, + [I(217,30)] = {64,0}, + [I(218,30)] = {64,0}, + [I(219,30)] = {64,0}, + [I(220,30)] = {64,0}, + [I(221,30)] = {64,0}, + [I(222,30)] = {64,0}, + [I(223,30)] = {64,0}, + [I(224,30)] = {64,0}, + [I(225,30)] = {64,0}, + [I(226,30)] = {64,0}, + [I(227,30)] = {64,0}, + [I(228,30)] = {64,0}, + [I(229,30)] = {64,0}, + [I(230,30)] = {64,0}, + [I(231,30)] = {64,0}, + [I(232,30)] = {64,0}, + [I(233,30)] = {64,0}, + [I(234,30)] = {64,0}, + [I(235,30)] = {64,0}, + [I(236,30)] = {64,0}, + [I(237,30)] = {64,0}, + [I(238,30)] = {64,0}, + [I(239,30)] = {64,0}, + [I(240,30)] = {64,0}, + [I(241,30)] = {64,0}, + [I(242,30)] = {64,0}, + [I(243,30)] = {64,0}, + [I(244,30)] = {64,0}, + [I(245,30)] = {64,0}, + [I(246,30)] = {64,0}, + [I(247,30)] = {64,0}, + [I(248,30)] = {64,0}, + [I(249,30)] = {64,0}, + [I(250,30)] = {64,0}, + [I(251,30)] = {64,0}, + [I(252,30)] = {64,0}, + [I(253,30)] = {64,0}, + [I(254,30)] = {64,0}, + [I(255,30)] = {64,0}, + [I(0,31)] = {64,0}, + [I(1,31)] = {64,0}, + [I(2,31)] = {64,0}, + [I(3,31)] = {64,0}, + [I(4,31)] = {64,0}, + [I(5,31)] = {64,0}, + [I(6,31)] = {64,0}, + [I(7,31)] = {64,0}, + [I(8,31)] = {64,0}, + [I(9,31)] = {64,0}, + [I(10,31)] = {64,0}, + [I(11,31)] = {64,0}, + [I(12,31)] = {64,0}, + [I(13,31)] = {64,0}, + [I(14,31)] = {64,0}, + [I(15,31)] = {64,0}, + [I(16,31)] = {64,0}, + [I(17,31)] = {64,0}, + [I(18,31)] = {64,0}, + [I(19,31)] = {64,0}, + [I(20,31)] = {64,0}, + [I(21,31)] = {64,0}, + [I(22,31)] = {64,0}, + [I(23,31)] = {64,0}, + [I(24,31)] = {64,0}, + [I(25,31)] = {64,0}, + [I(26,31)] = {64,0}, + [I(27,31)] = {64,0}, + [I(28,31)] = {64,0}, + [I(29,31)] = {64,0}, + [I(30,31)] = {64,0}, + [I(31,31)] = {64,0}, + [I(32,31)] = {64,0}, + [I(33,31)] = {64,0}, + [I(34,31)] = {64,0}, + [I(35,31)] = {64,0}, + [I(36,31)] = {64,0}, + [I(37,31)] = {64,0}, + [I(38,31)] = {64,0}, + [I(39,31)] = {64,0}, + [I(40,31)] = {64,0}, + [I(41,31)] = {64,0}, + [I(42,31)] = {64,0}, + [I(43,31)] = {64,0}, + [I(44,31)] = {64,0}, + [I(45,31)] = {64,0}, + [I(46,31)] = {64,0}, + [I(47,31)] = {64,0}, + [I(48,31)] = {64,0}, + [I(49,31)] = {64,0}, + [I(50,31)] = {64,0}, + [I(51,31)] = {64,0}, + [I(52,31)] = {64,0}, + [I(53,31)] = {64,0}, + [I(54,31)] = {64,0}, + [I(55,31)] = {64,0}, + [I(56,31)] = {64,0}, + [I(57,31)] = {64,0}, + [I(58,31)] = {64,0}, + [I(59,31)] = {64,0}, + [I(60,31)] = {64,0}, + [I(61,31)] = {64,0}, + [I(62,31)] = {64,0}, + [I(63,31)] = {64,0}, + [I(64,31)] = {64,0}, + [I(65,31)] = {64,0}, + [I(66,31)] = {64,0}, + [I(67,31)] = {64,0}, + [I(68,31)] = {64,0}, + [I(69,31)] = {64,0}, + [I(70,31)] = {64,0}, + [I(71,31)] = {64,0}, + [I(72,31)] = {64,0}, + [I(73,31)] = {64,0}, + [I(74,31)] = {64,0}, + [I(75,31)] = {64,0}, + [I(76,31)] = {64,0}, + [I(77,31)] = {64,0}, + [I(78,31)] = {64,0}, + [I(79,31)] = {64,0}, + [I(80,31)] = {64,0}, + [I(81,31)] = {64,0}, + [I(82,31)] = {64,0}, + [I(83,31)] = {64,0}, + [I(84,31)] = {64,0}, + [I(85,31)] = {64,0}, + [I(86,31)] = {64,0}, + [I(87,31)] = {64,0}, + [I(88,31)] = {64,0}, + [I(89,31)] = {64,0}, + [I(90,31)] = {64,0}, + [I(91,31)] = {64,0}, + [I(92,31)] = {64,0}, + [I(93,31)] = {64,0}, + [I(94,31)] = {64,0}, + [I(95,31)] = {64,0}, + [I(96,31)] = {64,0}, + [I(97,31)] = {64,0}, + [I(98,31)] = {64,0}, + [I(99,31)] = {64,0}, + [I(100,31)] = {64,0}, + [I(101,31)] = {64,0}, + [I(102,31)] = {64,0}, + [I(103,31)] = {64,0}, + [I(104,31)] = {64,0}, + [I(105,31)] = {64,0}, + [I(106,31)] = {64,0}, + [I(107,31)] = {64,0}, + [I(108,31)] = {64,0}, + [I(109,31)] = {64,0}, + [I(110,31)] = {64,0}, + [I(111,31)] = {64,0}, + [I(112,31)] = {64,0}, + [I(113,31)] = {64,0}, + [I(114,31)] = {64,0}, + [I(115,31)] = {64,0}, + [I(116,31)] = {64,0}, + [I(117,31)] = {64,0}, + [I(118,31)] = {64,0}, + [I(119,31)] = {64,0}, + [I(120,31)] = {64,0}, + [I(121,31)] = {64,0}, + [I(122,31)] = {64,0}, + [I(123,31)] = {64,0}, + [I(124,31)] = {64,0}, + [I(125,31)] = {64,0}, + [I(126,31)] = {64,0}, + [I(127,31)] = {64,0}, + [I(128,31)] = {64,0}, + [I(129,31)] = {64,0}, + [I(130,31)] = {64,0}, + [I(131,31)] = {64,0}, + [I(132,31)] = {64,0}, + [I(133,31)] = {64,0}, + [I(134,31)] = {64,0}, + [I(135,31)] = {64,0}, + [I(136,31)] = {64,0}, + [I(137,31)] = {64,0}, + [I(138,31)] = {64,0}, + [I(139,31)] = {64,0}, + [I(140,31)] = {64,0}, + [I(141,31)] = {64,0}, + [I(142,31)] = {64,0}, + [I(143,31)] = {64,0}, + [I(144,31)] = {64,0}, + [I(145,31)] = {64,0}, + [I(146,31)] = {64,0}, + [I(147,31)] = {64,0}, + [I(148,31)] = {64,0}, + [I(149,31)] = {64,0}, + [I(150,31)] = {64,0}, + [I(151,31)] = {64,0}, + [I(152,31)] = {64,0}, + [I(153,31)] = {64,0}, + [I(154,31)] = {64,0}, + [I(155,31)] = {64,0}, + [I(156,31)] = {64,0}, + [I(157,31)] = {64,0}, + [I(158,31)] = {64,0}, + [I(159,31)] = {64,0}, + [I(160,31)] = {64,0}, + [I(161,31)] = {64,0}, + [I(162,31)] = {64,0}, + [I(163,31)] = {64,0}, + [I(164,31)] = {64,0}, + [I(165,31)] = {64,0}, + [I(166,31)] = {64,0}, + [I(167,31)] = {64,0}, + [I(168,31)] = {64,0}, + [I(169,31)] = {64,0}, + [I(170,31)] = {64,0}, + [I(171,31)] = {64,0}, + [I(172,31)] = {64,0}, + [I(173,31)] = {64,0}, + [I(174,31)] = {64,0}, + [I(175,31)] = {64,0}, + [I(176,31)] = {64,0}, + [I(177,31)] = {64,0}, + [I(178,31)] = {64,0}, + [I(179,31)] = {64,0}, + [I(180,31)] = {64,0}, + [I(181,31)] = {64,0}, + [I(182,31)] = {64,0}, + [I(183,31)] = {64,0}, + [I(184,31)] = {64,0}, + [I(185,31)] = {64,0}, + [I(186,31)] = {64,0}, + [I(187,31)] = {64,0}, + [I(188,31)] = {64,0}, + [I(189,31)] = {64,0}, + [I(190,31)] = {64,0}, + [I(191,31)] = {64,0}, + [I(192,31)] = {64,0}, + [I(193,31)] = {64,0}, + [I(194,31)] = {64,0}, + [I(195,31)] = {64,0}, + [I(196,31)] = {64,0}, + [I(197,31)] = {64,0}, + [I(198,31)] = {64,0}, + [I(199,31)] = {64,0}, + [I(200,31)] = {64,0}, + [I(201,31)] = {64,0}, + [I(202,31)] = {64,0}, + [I(203,31)] = {64,0}, + [I(204,31)] = {64,0}, + [I(205,31)] = {64,0}, + [I(206,31)] = {64,0}, + [I(207,31)] = {64,0}, + [I(208,31)] = {64,0}, + [I(209,31)] = {64,0}, + [I(210,31)] = {64,0}, + [I(211,31)] = {64,0}, + [I(212,31)] = {64,0}, + [I(213,31)] = {64,0}, + [I(214,31)] = {64,0}, + [I(215,31)] = {64,0}, + [I(216,31)] = {64,0}, + [I(217,31)] = {64,0}, + [I(218,31)] = {64,0}, + [I(219,31)] = {64,0}, + [I(220,31)] = {64,0}, + [I(221,31)] = {64,0}, + [I(222,31)] = {64,0}, + [I(223,31)] = {64,0}, + [I(224,31)] = {64,0}, + [I(225,31)] = {64,0}, + [I(226,31)] = {64,0}, + [I(227,31)] = {64,0}, + [I(228,31)] = {64,0}, + [I(229,31)] = {64,0}, + [I(230,31)] = {64,0}, + [I(231,31)] = {64,0}, + [I(232,31)] = {64,0}, + [I(233,31)] = {64,0}, + [I(234,31)] = {64,0}, + [I(235,31)] = {64,0}, + [I(236,31)] = {64,0}, + [I(237,31)] = {64,0}, + [I(238,31)] = {64,0}, + [I(239,31)] = {64,0}, + [I(240,31)] = {64,0}, + [I(241,31)] = {64,0}, + [I(242,31)] = {64,0}, + [I(243,31)] = {64,0}, + [I(244,31)] = {64,0}, + [I(245,31)] = {64,0}, + [I(246,31)] = {64,0}, + [I(247,31)] = {64,0}, + [I(248,31)] = {64,0}, + [I(249,31)] = {64,0}, + [I(250,31)] = {64,0}, + [I(251,31)] = {64,0}, + [I(252,31)] = {64,0}, + [I(253,31)] = {64,0}, + [I(254,31)] = {64,0}, + [I(255,31)] = {64,0}, + [I(0,32)] = {19,0x7FE14}, + [I(1,32)] = {29,0x1FFFF614}, + [I(2,32)] = {64,0}, + [I(3,32)] = {64,0}, + [I(4,32)] = {64,0}, + [I(5,32)] = {64,0}, + [I(6,32)] = {64,0}, + [I(7,32)] = {64,0}, + [I(8,32)] = {64,0}, + [I(9,32)] = {30,0x3FFFFA94}, + [I(10,32)] = {64,0}, + [I(11,32)] = {64,0}, + [I(12,32)] = {64,0}, + [I(13,32)] = {64,0}, + [I(14,32)] = {64,0}, + [I(15,32)] = {64,0}, + [I(16,32)] = {64,0}, + [I(17,32)] = {64,0}, + [I(18,32)] = {64,0}, + [I(19,32)] = {64,0}, + [I(20,32)] = {64,0}, + [I(21,32)] = {64,0}, + [I(22,32)] = {64,0}, + [I(23,32)] = {64,0}, + [I(24,32)] = {64,0}, + [I(25,32)] = {64,0}, + [I(26,32)] = {64,0}, + [I(27,32)] = {64,0}, + [I(28,32)] = {64,0}, + [I(29,32)] = {64,0}, + [I(30,32)] = {64,0}, + [I(31,32)] = {64,0}, + [I(32,32)] = {12,0x514}, + [I(33,32)] = {16,0xFE14}, + [I(34,32)] = {16,0xFE54}, + [I(35,32)] = {18,0x3FE94}, + [I(36,32)] = {19,0x7FE54}, + [I(37,32)] = {12,0x554}, + [I(38,32)] = {14,0x3E14}, + [I(39,32)] = {17,0x1FE94}, + [I(40,32)] = {16,0xFE94}, + [I(41,32)] = {16,0xFED4}, + [I(42,32)] = {14,0x3E54}, + [I(43,32)] = {17,0x1FED4}, + [I(44,32)] = {14,0x3E94}, + [I(45,32)] = {12,0x594}, + [I(46,32)] = {12,0x5D4}, + [I(47,32)] = {12,0x614}, + [I(48,32)] = {11,0x14}, + [I(49,32)] = {11,0x54}, + [I(50,32)] = {11,0x94}, + [I(51,32)] = {12,0x654}, + [I(52,32)] = {12,0x694}, + [I(53,32)] = {12,0x6D4}, + [I(54,32)] = {12,0x714}, + [I(55,32)] = {12,0x754}, + [I(56,32)] = {12,0x794}, + [I(57,32)] = {12,0x7D4}, + [I(58,32)] = {13,0x1714}, + [I(59,32)] = {14,0x3ED4}, + [I(60,32)] = {21,0x1FFF14}, + [I(61,32)] = {12,0x814}, + [I(62,32)] = {18,0x3FED4}, + [I(63,32)] = {16,0xFF14}, + [I(64,32)] = {19,0x7FE94}, + [I(65,32)] = {12,0x854}, + [I(66,32)] = {13,0x1754}, + [I(67,32)] = {13,0x1794}, + [I(68,32)] = {13,0x17D4}, + [I(69,32)] = {13,0x1814}, + [I(70,32)] = {13,0x1854}, + [I(71,32)] = {13,0x1894}, + [I(72,32)] = {13,0x18D4}, + [I(73,32)] = {13,0x1914}, + [I(74,32)] = {13,0x1954}, + [I(75,32)] = {13,0x1994}, + [I(76,32)] = {13,0x19D4}, + [I(77,32)] = {13,0x1A14}, + [I(78,32)] = {13,0x1A54}, + [I(79,32)] = {13,0x1A94}, + [I(80,32)] = {13,0x1AD4}, + [I(81,32)] = {13,0x1B14}, + [I(82,32)] = {13,0x1B54}, + [I(83,32)] = {13,0x1B94}, + [I(84,32)] = {13,0x1BD4}, + [I(85,32)] = {13,0x1C14}, + [I(86,32)] = {13,0x1C54}, + [I(87,32)] = {13,0x1C94}, + [I(88,32)] = {14,0x3F14}, + [I(89,32)] = {13,0x1CD4}, + [I(90,32)] = {14,0x3F54}, + [I(91,32)] = {19,0x7FED4}, + [I(92,32)] = {25,0x1FFFC14}, + [I(93,32)] = {19,0x7FF14}, + [I(94,32)] = {20,0xFFF14}, + [I(95,32)] = {12,0x894}, + [I(96,32)] = {21,0x1FFF54}, + [I(97,32)] = {11,0xD4}, + [I(98,32)] = {12,0x8D4}, + [I(99,32)] = {11,0x114}, + [I(100,32)] = {12,0x914}, + [I(101,32)] = {11,0x154}, + [I(102,32)] = {12,0x954}, + [I(103,32)] = {12,0x994}, + [I(104,32)] = {12,0x9D4}, + [I(105,32)] = {11,0x194}, + [I(106,32)] = {13,0x1D14}, + [I(107,32)] = {13,0x1D54}, + [I(108,32)] = {12,0xA14}, + [I(109,32)] = {12,0xA54}, + [I(110,32)] = {12,0xA94}, + [I(111,32)] = {11,0x1D4}, + [I(112,32)] = {12,0xAD4}, + [I(113,32)] = {13,0x1D94}, + [I(114,32)] = {12,0xB14}, + [I(115,32)] = {11,0x214}, + [I(116,32)] = {11,0x254}, + [I(117,32)] = {12,0xB54}, + [I(118,32)] = {13,0x1DD4}, + [I(119,32)] = {13,0x1E14}, + [I(120,32)] = {13,0x1E54}, + [I(121,32)] = {13,0x1E94}, + [I(122,32)] = {13,0x1ED4}, + [I(123,32)] = {21,0x1FFF94}, + [I(124,32)] = {17,0x1FF14}, + [I(125,32)] = {20,0xFFF54}, + [I(126,32)] = {19,0x7FF54}, + [I(127,32)] = {64,0}, + [I(128,32)] = {26,0x3FFF994}, + [I(129,32)] = {28,0xFFFF494}, + [I(130,32)] = {26,0x3FFF9D4}, + [I(131,32)] = {26,0x3FFFA14}, + [I(132,32)] = {28,0xFFFF4D4}, + [I(133,32)] = {28,0xFFFF514}, + [I(134,32)] = {28,0xFFFF554}, + [I(135,32)] = {29,0x1FFFF654}, + [I(136,32)] = {28,0xFFFF594}, + [I(137,32)] = {29,0x1FFFF694}, + [I(138,32)] = {29,0x1FFFF6D4}, + [I(139,32)] = {29,0x1FFFF714}, + [I(140,32)] = {29,0x1FFFF754}, + [I(141,32)] = {29,0x1FFFF794}, + [I(142,32)] = {30,0x3FFFFAD4}, + [I(143,32)] = {29,0x1FFFF7D4}, + [I(144,32)] = {30,0x3FFFFB14}, + [I(145,32)] = {30,0x3FFFFB54}, + [I(146,32)] = {28,0xFFFF5D4}, + [I(147,32)] = {29,0x1FFFF814}, + [I(148,32)] = {30,0x3FFFFB94}, + [I(149,32)] = {29,0x1FFFF854}, + [I(150,32)] = {29,0x1FFFF894}, + [I(151,32)] = {29,0x1FFFF8D4}, + [I(152,32)] = {29,0x1FFFF914}, + [I(153,32)] = {27,0x7FFF714}, + [I(154,32)] = {28,0xFFFF614}, + [I(155,32)] = {29,0x1FFFF954}, + [I(156,32)] = {28,0xFFFF654}, + [I(157,32)] = {29,0x1FFFF994}, + [I(158,32)] = {29,0x1FFFF9D4}, + [I(159,32)] = {30,0x3FFFFBD4}, + [I(160,32)] = {28,0xFFFF694}, + [I(161,32)] = {27,0x7FFF754}, + [I(162,32)] = {26,0x3FFFA54}, + [I(163,32)] = {28,0xFFFF6D4}, + [I(164,32)] = {28,0xFFFF714}, + [I(165,32)] = {29,0x1FFFFA14}, + [I(166,32)] = {29,0x1FFFFA54}, + [I(167,32)] = {27,0x7FFF794}, + [I(168,32)] = {29,0x1FFFFA94}, + [I(169,32)] = {28,0xFFFF754}, + [I(170,32)] = {28,0xFFFF794}, + [I(171,32)] = {30,0x3FFFFC14}, + [I(172,32)] = {27,0x7FFF7D4}, + [I(173,32)] = {28,0xFFFF7D4}, + [I(174,32)] = {29,0x1FFFFAD4}, + [I(175,32)] = {29,0x1FFFFB14}, + [I(176,32)] = {27,0x7FFF814}, + [I(177,32)] = {27,0x7FFF854}, + [I(178,32)] = {28,0xFFFF814}, + [I(179,32)] = {27,0x7FFF894}, + [I(180,32)] = {29,0x1FFFFB54}, + [I(181,32)] = {28,0xFFFF854}, + [I(182,32)] = {29,0x1FFFFB94}, + [I(183,32)] = {29,0x1FFFFBD4}, + [I(184,32)] = {26,0x3FFFA94}, + [I(185,32)] = {28,0xFFFF894}, + [I(186,32)] = {28,0xFFFF8D4}, + [I(187,32)] = {28,0xFFFF914}, + [I(188,32)] = {29,0x1FFFFC14}, + [I(189,32)] = {28,0xFFFF954}, + [I(190,32)] = {28,0xFFFF994}, + [I(191,32)] = {29,0x1FFFFC54}, + [I(192,32)] = {X32,0xFFFFF814}, + [I(193,32)] = {X32,0xFFFFF854}, + [I(194,32)] = {26,0x3FFFAD4}, + [I(195,32)] = {25,0x1FFFC54}, + [I(196,32)] = {28,0xFFFF9D4}, + [I(197,32)] = {29,0x1FFFFC94}, + [I(198,32)] = {28,0xFFFFA14}, + [I(199,32)] = {31,0x7FFFFB14}, + [I(200,32)] = {X32,0xFFFFF894}, + [I(201,32)] = {X32,0xFFFFF8D4}, + [I(202,32)] = {X32,0xFFFFF914}, + [I(203,32)] = {64,0}, + [I(204,32)] = {64,0}, + [I(205,32)] = {X32,0xFFFFF954}, + [I(206,32)] = {30,0x3FFFFC54}, + [I(207,32)] = {31,0x7FFFFB54}, + [I(208,32)] = {25,0x1FFFC94}, + [I(209,32)] = {27,0x7FFF8D4}, + [I(210,32)] = {X32,0xFFFFF994}, + [I(211,32)] = {64,0}, + [I(212,32)] = {64,0}, + [I(213,32)] = {X32,0xFFFFF9D4}, + [I(214,32)] = {64,0}, + [I(215,32)] = {30,0x3FFFFC94}, + [I(216,32)] = {27,0x7FFF914}, + [I(217,32)] = {27,0x7FFF954}, + [I(218,32)] = {X32,0xFFFFFA14}, + [I(219,32)] = {X32,0xFFFFFA54}, + [I(220,32)] = {64,0}, + [I(221,32)] = {64,0}, + [I(222,32)] = {64,0}, + [I(223,32)] = {64,0}, + [I(224,32)] = {26,0x3FFFB14}, + [I(225,32)] = {30,0x3FFFFCD4}, + [I(226,32)] = {26,0x3FFFB54}, + [I(227,32)] = {27,0x7FFF994}, + [I(228,32)] = {28,0xFFFFA54}, + [I(229,32)] = {27,0x7FFF9D4}, + [I(230,32)] = {27,0x7FFFA14}, + [I(231,32)] = {29,0x1FFFFCD4}, + [I(232,32)] = {28,0xFFFFA94}, + [I(233,32)] = {28,0xFFFFAD4}, + [I(234,32)] = {31,0x7FFFFB94}, + [I(235,32)] = {31,0x7FFFFBD4}, + [I(236,32)] = {30,0x3FFFFD14}, + [I(237,32)] = {30,0x3FFFFD54}, + [I(238,32)] = {X32,0xFFFFFA94}, + [I(239,32)] = {29,0x1FFFFD14}, + [I(240,32)] = {X32,0xFFFFFAD4}, + [I(241,32)] = {64,0}, + [I(242,32)] = {X32,0xFFFFFB14}, + [I(243,32)] = {X32,0xFFFFFB54}, + [I(244,32)] = {64,0}, + [I(245,32)] = {64,0}, + [I(246,32)] = {64,0}, + [I(247,32)] = {64,0}, + [I(248,32)] = {64,0}, + [I(249,32)] = {64,0}, + [I(250,32)] = {64,0}, + [I(251,32)] = {64,0}, + [I(252,32)] = {64,0}, + [I(253,32)] = {64,0}, + [I(254,32)] = {64,0}, + [I(255,32)] = {X32,0xFFFFFB94}, + [I(0,33)] = {23,0x7FE3F8}, + [I(1,33)] = {64,0}, + [I(2,33)] = {64,0}, + [I(3,33)] = {64,0}, + [I(4,33)] = {64,0}, + [I(5,33)] = {64,0}, + [I(6,33)] = {64,0}, + [I(7,33)] = {64,0}, + [I(8,33)] = {64,0}, + [I(9,33)] = {64,0}, + [I(10,33)] = {64,0}, + [I(11,33)] = {64,0}, + [I(12,33)] = {64,0}, + [I(13,33)] = {64,0}, + [I(14,33)] = {64,0}, + [I(15,33)] = {64,0}, + [I(16,33)] = {64,0}, + [I(17,33)] = {64,0}, + [I(18,33)] = {64,0}, + [I(19,33)] = {64,0}, + [I(20,33)] = {64,0}, + [I(21,33)] = {64,0}, + [I(22,33)] = {64,0}, + [I(23,33)] = {64,0}, + [I(24,33)] = {64,0}, + [I(25,33)] = {64,0}, + [I(26,33)] = {64,0}, + [I(27,33)] = {64,0}, + [I(28,33)] = {64,0}, + [I(29,33)] = {64,0}, + [I(30,33)] = {64,0}, + [I(31,33)] = {64,0}, + [I(32,33)] = {16,0x53F8}, + [I(33,33)] = {20,0xFE3F8}, + [I(34,33)] = {20,0xFE7F8}, + [I(35,33)] = {22,0x3FEBF8}, + [I(36,33)] = {23,0x7FE7F8}, + [I(37,33)] = {16,0x57F8}, + [I(38,33)] = {18,0x3E3F8}, + [I(39,33)] = {21,0x1FEBF8}, + [I(40,33)] = {20,0xFEBF8}, + [I(41,33)] = {20,0xFEFF8}, + [I(42,33)] = {18,0x3E7F8}, + [I(43,33)] = {21,0x1FEFF8}, + [I(44,33)] = {18,0x3EBF8}, + [I(45,33)] = {16,0x5BF8}, + [I(46,33)] = {16,0x5FF8}, + [I(47,33)] = {16,0x63F8}, + [I(48,33)] = {15,0x3F8}, + [I(49,33)] = {15,0x7F8}, + [I(50,33)] = {15,0xBF8}, + [I(51,33)] = {16,0x67F8}, + [I(52,33)] = {16,0x6BF8}, + [I(53,33)] = {16,0x6FF8}, + [I(54,33)] = {16,0x73F8}, + [I(55,33)] = {16,0x77F8}, + [I(56,33)] = {16,0x7BF8}, + [I(57,33)] = {16,0x7FF8}, + [I(58,33)] = {17,0x173F8}, + [I(59,33)] = {18,0x3EFF8}, + [I(60,33)] = {25,0x1FFF3F8}, + [I(61,33)] = {16,0x83F8}, + [I(62,33)] = {22,0x3FEFF8}, + [I(63,33)] = {20,0xFF3F8}, + [I(64,33)] = {23,0x7FEBF8}, + [I(65,33)] = {16,0x87F8}, + [I(66,33)] = {17,0x177F8}, + [I(67,33)] = {17,0x17BF8}, + [I(68,33)] = {17,0x17FF8}, + [I(69,33)] = {17,0x183F8}, + [I(70,33)] = {17,0x187F8}, + [I(71,33)] = {17,0x18BF8}, + [I(72,33)] = {17,0x18FF8}, + [I(73,33)] = {17,0x193F8}, + [I(74,33)] = {17,0x197F8}, + [I(75,33)] = {17,0x19BF8}, + [I(76,33)] = {17,0x19FF8}, + [I(77,33)] = {17,0x1A3F8}, + [I(78,33)] = {17,0x1A7F8}, + [I(79,33)] = {17,0x1ABF8}, + [I(80,33)] = {17,0x1AFF8}, + [I(81,33)] = {17,0x1B3F8}, + [I(82,33)] = {17,0x1B7F8}, + [I(83,33)] = {17,0x1BBF8}, + [I(84,33)] = {17,0x1BFF8}, + [I(85,33)] = {17,0x1C3F8}, + [I(86,33)] = {17,0x1C7F8}, + [I(87,33)] = {17,0x1CBF8}, + [I(88,33)] = {18,0x3F3F8}, + [I(89,33)] = {17,0x1CFF8}, + [I(90,33)] = {18,0x3F7F8}, + [I(91,33)] = {23,0x7FEFF8}, + [I(92,33)] = {29,0x1FFFC3F8}, + [I(93,33)] = {23,0x7FF3F8}, + [I(94,33)] = {24,0xFFF3F8}, + [I(95,33)] = {16,0x8BF8}, + [I(96,33)] = {25,0x1FFF7F8}, + [I(97,33)] = {15,0xFF8}, + [I(98,33)] = {16,0x8FF8}, + [I(99,33)] = {15,0x13F8}, + [I(100,33)] = {16,0x93F8}, + [I(101,33)] = {15,0x17F8}, + [I(102,33)] = {16,0x97F8}, + [I(103,33)] = {16,0x9BF8}, + [I(104,33)] = {16,0x9FF8}, + [I(105,33)] = {15,0x1BF8}, + [I(106,33)] = {17,0x1D3F8}, + [I(107,33)] = {17,0x1D7F8}, + [I(108,33)] = {16,0xA3F8}, + [I(109,33)] = {16,0xA7F8}, + [I(110,33)] = {16,0xABF8}, + [I(111,33)] = {15,0x1FF8}, + [I(112,33)] = {16,0xAFF8}, + [I(113,33)] = {17,0x1DBF8}, + [I(114,33)] = {16,0xB3F8}, + [I(115,33)] = {15,0x23F8}, + [I(116,33)] = {15,0x27F8}, + [I(117,33)] = {16,0xB7F8}, + [I(118,33)] = {17,0x1DFF8}, + [I(119,33)] = {17,0x1E3F8}, + [I(120,33)] = {17,0x1E7F8}, + [I(121,33)] = {17,0x1EBF8}, + [I(122,33)] = {17,0x1EFF8}, + [I(123,33)] = {25,0x1FFFBF8}, + [I(124,33)] = {21,0x1FF3F8}, + [I(125,33)] = {24,0xFFF7F8}, + [I(126,33)] = {23,0x7FF7F8}, + [I(127,33)] = {64,0}, + [I(128,33)] = {30,0x3FFF9BF8}, + [I(129,33)] = {X32,0xFFFF4BF8}, + [I(130,33)] = {30,0x3FFF9FF8}, + [I(131,33)] = {30,0x3FFFA3F8}, + [I(132,33)] = {X32,0xFFFF4FF8}, + [I(133,33)] = {X32,0xFFFF53F8}, + [I(134,33)] = {X32,0xFFFF57F8}, + [I(135,33)] = {64,0}, + [I(136,33)] = {X32,0xFFFF5BF8}, + [I(137,33)] = {64,0}, + [I(138,33)] = {64,0}, + [I(139,33)] = {64,0}, + [I(140,33)] = {64,0}, + [I(141,33)] = {64,0}, + [I(142,33)] = {64,0}, + [I(143,33)] = {64,0}, + [I(144,33)] = {64,0}, + [I(145,33)] = {64,0}, + [I(146,33)] = {X32,0xFFFF5FF8}, + [I(147,33)] = {64,0}, + [I(148,33)] = {64,0}, + [I(149,33)] = {64,0}, + [I(150,33)] = {64,0}, + [I(151,33)] = {64,0}, + [I(152,33)] = {64,0}, + [I(153,33)] = {31,0x7FFF73F8}, + [I(154,33)] = {X32,0xFFFF63F8}, + [I(155,33)] = {64,0}, + [I(156,33)] = {X32,0xFFFF67F8}, + [I(157,33)] = {64,0}, + [I(158,33)] = {64,0}, + [I(159,33)] = {64,0}, + [I(160,33)] = {X32,0xFFFF6BF8}, + [I(161,33)] = {31,0x7FFF77F8}, + [I(162,33)] = {30,0x3FFFA7F8}, + [I(163,33)] = {X32,0xFFFF6FF8}, + [I(164,33)] = {X32,0xFFFF73F8}, + [I(165,33)] = {64,0}, + [I(166,33)] = {64,0}, + [I(167,33)] = {31,0x7FFF7BF8}, + [I(168,33)] = {64,0}, + [I(169,33)] = {X32,0xFFFF77F8}, + [I(170,33)] = {X32,0xFFFF7BF8}, + [I(171,33)] = {64,0}, + [I(172,33)] = {31,0x7FFF7FF8}, + [I(173,33)] = {X32,0xFFFF7FF8}, + [I(174,33)] = {64,0}, + [I(175,33)] = {64,0}, + [I(176,33)] = {31,0x7FFF83F8}, + [I(177,33)] = {31,0x7FFF87F8}, + [I(178,33)] = {X32,0xFFFF83F8}, + [I(179,33)] = {31,0x7FFF8BF8}, + [I(180,33)] = {64,0}, + [I(181,33)] = {X32,0xFFFF87F8}, + [I(182,33)] = {64,0}, + [I(183,33)] = {64,0}, + [I(184,33)] = {30,0x3FFFABF8}, + [I(185,33)] = {X32,0xFFFF8BF8}, + [I(186,33)] = {X32,0xFFFF8FF8}, + [I(187,33)] = {X32,0xFFFF93F8}, + [I(188,33)] = {64,0}, + [I(189,33)] = {X32,0xFFFF97F8}, + [I(190,33)] = {X32,0xFFFF9BF8}, + [I(191,33)] = {64,0}, + [I(192,33)] = {64,0}, + [I(193,33)] = {64,0}, + [I(194,33)] = {30,0x3FFFAFF8}, + [I(195,33)] = {29,0x1FFFC7F8}, + [I(196,33)] = {X32,0xFFFF9FF8}, + [I(197,33)] = {64,0}, + [I(198,33)] = {X32,0xFFFFA3F8}, + [I(199,33)] = {64,0}, + [I(200,33)] = {64,0}, + [I(201,33)] = {64,0}, + [I(202,33)] = {64,0}, + [I(203,33)] = {64,0}, + [I(204,33)] = {64,0}, + [I(205,33)] = {64,0}, + [I(206,33)] = {64,0}, + [I(207,33)] = {64,0}, + [I(208,33)] = {29,0x1FFFCBF8}, + [I(209,33)] = {31,0x7FFF8FF8}, + [I(210,33)] = {64,0}, + [I(211,33)] = {64,0}, + [I(212,33)] = {64,0}, + [I(213,33)] = {64,0}, + [I(214,33)] = {64,0}, + [I(215,33)] = {64,0}, + [I(216,33)] = {31,0x7FFF93F8}, + [I(217,33)] = {31,0x7FFF97F8}, + [I(218,33)] = {64,0}, + [I(219,33)] = {64,0}, + [I(220,33)] = {64,0}, + [I(221,33)] = {64,0}, + [I(222,33)] = {64,0}, + [I(223,33)] = {64,0}, + [I(224,33)] = {30,0x3FFFB3F8}, + [I(225,33)] = {64,0}, + [I(226,33)] = {30,0x3FFFB7F8}, + [I(227,33)] = {31,0x7FFF9BF8}, + [I(228,33)] = {X32,0xFFFFA7F8}, + [I(229,33)] = {31,0x7FFF9FF8}, + [I(230,33)] = {31,0x7FFFA3F8}, + [I(231,33)] = {64,0}, + [I(232,33)] = {X32,0xFFFFABF8}, + [I(233,33)] = {X32,0xFFFFAFF8}, + [I(234,33)] = {64,0}, + [I(235,33)] = {64,0}, + [I(236,33)] = {64,0}, + [I(237,33)] = {64,0}, + [I(238,33)] = {64,0}, + [I(239,33)] = {64,0}, + [I(240,33)] = {64,0}, + [I(241,33)] = {64,0}, + [I(242,33)] = {64,0}, + [I(243,33)] = {64,0}, + [I(244,33)] = {64,0}, + [I(245,33)] = {64,0}, + [I(246,33)] = {64,0}, + [I(247,33)] = {64,0}, + [I(248,33)] = {64,0}, + [I(249,33)] = {64,0}, + [I(250,33)] = {64,0}, + [I(251,33)] = {64,0}, + [I(252,33)] = {64,0}, + [I(253,33)] = {64,0}, + [I(254,33)] = {64,0}, + [I(255,33)] = {64,0}, + [I(0,34)] = {23,0x7FE3F9}, + [I(1,34)] = {64,0}, + [I(2,34)] = {64,0}, + [I(3,34)] = {64,0}, + [I(4,34)] = {64,0}, + [I(5,34)] = {64,0}, + [I(6,34)] = {64,0}, + [I(7,34)] = {64,0}, + [I(8,34)] = {64,0}, + [I(9,34)] = {64,0}, + [I(10,34)] = {64,0}, + [I(11,34)] = {64,0}, + [I(12,34)] = {64,0}, + [I(13,34)] = {64,0}, + [I(14,34)] = {64,0}, + [I(15,34)] = {64,0}, + [I(16,34)] = {64,0}, + [I(17,34)] = {64,0}, + [I(18,34)] = {64,0}, + [I(19,34)] = {64,0}, + [I(20,34)] = {64,0}, + [I(21,34)] = {64,0}, + [I(22,34)] = {64,0}, + [I(23,34)] = {64,0}, + [I(24,34)] = {64,0}, + [I(25,34)] = {64,0}, + [I(26,34)] = {64,0}, + [I(27,34)] = {64,0}, + [I(28,34)] = {64,0}, + [I(29,34)] = {64,0}, + [I(30,34)] = {64,0}, + [I(31,34)] = {64,0}, + [I(32,34)] = {16,0x53F9}, + [I(33,34)] = {20,0xFE3F9}, + [I(34,34)] = {20,0xFE7F9}, + [I(35,34)] = {22,0x3FEBF9}, + [I(36,34)] = {23,0x7FE7F9}, + [I(37,34)] = {16,0x57F9}, + [I(38,34)] = {18,0x3E3F9}, + [I(39,34)] = {21,0x1FEBF9}, + [I(40,34)] = {20,0xFEBF9}, + [I(41,34)] = {20,0xFEFF9}, + [I(42,34)] = {18,0x3E7F9}, + [I(43,34)] = {21,0x1FEFF9}, + [I(44,34)] = {18,0x3EBF9}, + [I(45,34)] = {16,0x5BF9}, + [I(46,34)] = {16,0x5FF9}, + [I(47,34)] = {16,0x63F9}, + [I(48,34)] = {15,0x3F9}, + [I(49,34)] = {15,0x7F9}, + [I(50,34)] = {15,0xBF9}, + [I(51,34)] = {16,0x67F9}, + [I(52,34)] = {16,0x6BF9}, + [I(53,34)] = {16,0x6FF9}, + [I(54,34)] = {16,0x73F9}, + [I(55,34)] = {16,0x77F9}, + [I(56,34)] = {16,0x7BF9}, + [I(57,34)] = {16,0x7FF9}, + [I(58,34)] = {17,0x173F9}, + [I(59,34)] = {18,0x3EFF9}, + [I(60,34)] = {25,0x1FFF3F9}, + [I(61,34)] = {16,0x83F9}, + [I(62,34)] = {22,0x3FEFF9}, + [I(63,34)] = {20,0xFF3F9}, + [I(64,34)] = {23,0x7FEBF9}, + [I(65,34)] = {16,0x87F9}, + [I(66,34)] = {17,0x177F9}, + [I(67,34)] = {17,0x17BF9}, + [I(68,34)] = {17,0x17FF9}, + [I(69,34)] = {17,0x183F9}, + [I(70,34)] = {17,0x187F9}, + [I(71,34)] = {17,0x18BF9}, + [I(72,34)] = {17,0x18FF9}, + [I(73,34)] = {17,0x193F9}, + [I(74,34)] = {17,0x197F9}, + [I(75,34)] = {17,0x19BF9}, + [I(76,34)] = {17,0x19FF9}, + [I(77,34)] = {17,0x1A3F9}, + [I(78,34)] = {17,0x1A7F9}, + [I(79,34)] = {17,0x1ABF9}, + [I(80,34)] = {17,0x1AFF9}, + [I(81,34)] = {17,0x1B3F9}, + [I(82,34)] = {17,0x1B7F9}, + [I(83,34)] = {17,0x1BBF9}, + [I(84,34)] = {17,0x1BFF9}, + [I(85,34)] = {17,0x1C3F9}, + [I(86,34)] = {17,0x1C7F9}, + [I(87,34)] = {17,0x1CBF9}, + [I(88,34)] = {18,0x3F3F9}, + [I(89,34)] = {17,0x1CFF9}, + [I(90,34)] = {18,0x3F7F9}, + [I(91,34)] = {23,0x7FEFF9}, + [I(92,34)] = {29,0x1FFFC3F9}, + [I(93,34)] = {23,0x7FF3F9}, + [I(94,34)] = {24,0xFFF3F9}, + [I(95,34)] = {16,0x8BF9}, + [I(96,34)] = {25,0x1FFF7F9}, + [I(97,34)] = {15,0xFF9}, + [I(98,34)] = {16,0x8FF9}, + [I(99,34)] = {15,0x13F9}, + [I(100,34)] = {16,0x93F9}, + [I(101,34)] = {15,0x17F9}, + [I(102,34)] = {16,0x97F9}, + [I(103,34)] = {16,0x9BF9}, + [I(104,34)] = {16,0x9FF9}, + [I(105,34)] = {15,0x1BF9}, + [I(106,34)] = {17,0x1D3F9}, + [I(107,34)] = {17,0x1D7F9}, + [I(108,34)] = {16,0xA3F9}, + [I(109,34)] = {16,0xA7F9}, + [I(110,34)] = {16,0xABF9}, + [I(111,34)] = {15,0x1FF9}, + [I(112,34)] = {16,0xAFF9}, + [I(113,34)] = {17,0x1DBF9}, + [I(114,34)] = {16,0xB3F9}, + [I(115,34)] = {15,0x23F9}, + [I(116,34)] = {15,0x27F9}, + [I(117,34)] = {16,0xB7F9}, + [I(118,34)] = {17,0x1DFF9}, + [I(119,34)] = {17,0x1E3F9}, + [I(120,34)] = {17,0x1E7F9}, + [I(121,34)] = {17,0x1EBF9}, + [I(122,34)] = {17,0x1EFF9}, + [I(123,34)] = {25,0x1FFFBF9}, + [I(124,34)] = {21,0x1FF3F9}, + [I(125,34)] = {24,0xFFF7F9}, + [I(126,34)] = {23,0x7FF7F9}, + [I(127,34)] = {64,0}, + [I(128,34)] = {30,0x3FFF9BF9}, + [I(129,34)] = {X32,0xFFFF4BF9}, + [I(130,34)] = {30,0x3FFF9FF9}, + [I(131,34)] = {30,0x3FFFA3F9}, + [I(132,34)] = {X32,0xFFFF4FF9}, + [I(133,34)] = {X32,0xFFFF53F9}, + [I(134,34)] = {X32,0xFFFF57F9}, + [I(135,34)] = {64,0}, + [I(136,34)] = {X32,0xFFFF5BF9}, + [I(137,34)] = {64,0}, + [I(138,34)] = {64,0}, + [I(139,34)] = {64,0}, + [I(140,34)] = {64,0}, + [I(141,34)] = {64,0}, + [I(142,34)] = {64,0}, + [I(143,34)] = {64,0}, + [I(144,34)] = {64,0}, + [I(145,34)] = {64,0}, + [I(146,34)] = {X32,0xFFFF5FF9}, + [I(147,34)] = {64,0}, + [I(148,34)] = {64,0}, + [I(149,34)] = {64,0}, + [I(150,34)] = {64,0}, + [I(151,34)] = {64,0}, + [I(152,34)] = {64,0}, + [I(153,34)] = {31,0x7FFF73F9}, + [I(154,34)] = {X32,0xFFFF63F9}, + [I(155,34)] = {64,0}, + [I(156,34)] = {X32,0xFFFF67F9}, + [I(157,34)] = {64,0}, + [I(158,34)] = {64,0}, + [I(159,34)] = {64,0}, + [I(160,34)] = {X32,0xFFFF6BF9}, + [I(161,34)] = {31,0x7FFF77F9}, + [I(162,34)] = {30,0x3FFFA7F9}, + [I(163,34)] = {X32,0xFFFF6FF9}, + [I(164,34)] = {X32,0xFFFF73F9}, + [I(165,34)] = {64,0}, + [I(166,34)] = {64,0}, + [I(167,34)] = {31,0x7FFF7BF9}, + [I(168,34)] = {64,0}, + [I(169,34)] = {X32,0xFFFF77F9}, + [I(170,34)] = {X32,0xFFFF7BF9}, + [I(171,34)] = {64,0}, + [I(172,34)] = {31,0x7FFF7FF9}, + [I(173,34)] = {X32,0xFFFF7FF9}, + [I(174,34)] = {64,0}, + [I(175,34)] = {64,0}, + [I(176,34)] = {31,0x7FFF83F9}, + [I(177,34)] = {31,0x7FFF87F9}, + [I(178,34)] = {X32,0xFFFF83F9}, + [I(179,34)] = {31,0x7FFF8BF9}, + [I(180,34)] = {64,0}, + [I(181,34)] = {X32,0xFFFF87F9}, + [I(182,34)] = {64,0}, + [I(183,34)] = {64,0}, + [I(184,34)] = {30,0x3FFFABF9}, + [I(185,34)] = {X32,0xFFFF8BF9}, + [I(186,34)] = {X32,0xFFFF8FF9}, + [I(187,34)] = {X32,0xFFFF93F9}, + [I(188,34)] = {64,0}, + [I(189,34)] = {X32,0xFFFF97F9}, + [I(190,34)] = {X32,0xFFFF9BF9}, + [I(191,34)] = {64,0}, + [I(192,34)] = {64,0}, + [I(193,34)] = {64,0}, + [I(194,34)] = {30,0x3FFFAFF9}, + [I(195,34)] = {29,0x1FFFC7F9}, + [I(196,34)] = {X32,0xFFFF9FF9}, + [I(197,34)] = {64,0}, + [I(198,34)] = {X32,0xFFFFA3F9}, + [I(199,34)] = {64,0}, + [I(200,34)] = {64,0}, + [I(201,34)] = {64,0}, + [I(202,34)] = {64,0}, + [I(203,34)] = {64,0}, + [I(204,34)] = {64,0}, + [I(205,34)] = {64,0}, + [I(206,34)] = {64,0}, + [I(207,34)] = {64,0}, + [I(208,34)] = {29,0x1FFFCBF9}, + [I(209,34)] = {31,0x7FFF8FF9}, + [I(210,34)] = {64,0}, + [I(211,34)] = {64,0}, + [I(212,34)] = {64,0}, + [I(213,34)] = {64,0}, + [I(214,34)] = {64,0}, + [I(215,34)] = {64,0}, + [I(216,34)] = {31,0x7FFF93F9}, + [I(217,34)] = {31,0x7FFF97F9}, + [I(218,34)] = {64,0}, + [I(219,34)] = {64,0}, + [I(220,34)] = {64,0}, + [I(221,34)] = {64,0}, + [I(222,34)] = {64,0}, + [I(223,34)] = {64,0}, + [I(224,34)] = {30,0x3FFFB3F9}, + [I(225,34)] = {64,0}, + [I(226,34)] = {30,0x3FFFB7F9}, + [I(227,34)] = {31,0x7FFF9BF9}, + [I(228,34)] = {X32,0xFFFFA7F9}, + [I(229,34)] = {31,0x7FFF9FF9}, + [I(230,34)] = {31,0x7FFFA3F9}, + [I(231,34)] = {64,0}, + [I(232,34)] = {X32,0xFFFFABF9}, + [I(233,34)] = {X32,0xFFFFAFF9}, + [I(234,34)] = {64,0}, + [I(235,34)] = {64,0}, + [I(236,34)] = {64,0}, + [I(237,34)] = {64,0}, + [I(238,34)] = {64,0}, + [I(239,34)] = {64,0}, + [I(240,34)] = {64,0}, + [I(241,34)] = {64,0}, + [I(242,34)] = {64,0}, + [I(243,34)] = {64,0}, + [I(244,34)] = {64,0}, + [I(245,34)] = {64,0}, + [I(246,34)] = {64,0}, + [I(247,34)] = {64,0}, + [I(248,34)] = {64,0}, + [I(249,34)] = {64,0}, + [I(250,34)] = {64,0}, + [I(251,34)] = {64,0}, + [I(252,34)] = {64,0}, + [I(253,34)] = {64,0}, + [I(254,34)] = {64,0}, + [I(255,34)] = {64,0}, + [I(0,35)] = {25,0x1FF8FFA}, + [I(1,35)] = {64,0}, + [I(2,35)] = {64,0}, + [I(3,35)] = {64,0}, + [I(4,35)] = {64,0}, + [I(5,35)] = {64,0}, + [I(6,35)] = {64,0}, + [I(7,35)] = {64,0}, + [I(8,35)] = {64,0}, + [I(9,35)] = {64,0}, + [I(10,35)] = {64,0}, + [I(11,35)] = {64,0}, + [I(12,35)] = {64,0}, + [I(13,35)] = {64,0}, + [I(14,35)] = {64,0}, + [I(15,35)] = {64,0}, + [I(16,35)] = {64,0}, + [I(17,35)] = {64,0}, + [I(18,35)] = {64,0}, + [I(19,35)] = {64,0}, + [I(20,35)] = {64,0}, + [I(21,35)] = {64,0}, + [I(22,35)] = {64,0}, + [I(23,35)] = {64,0}, + [I(24,35)] = {64,0}, + [I(25,35)] = {64,0}, + [I(26,35)] = {64,0}, + [I(27,35)] = {64,0}, + [I(28,35)] = {64,0}, + [I(29,35)] = {64,0}, + [I(30,35)] = {64,0}, + [I(31,35)] = {64,0}, + [I(32,35)] = {18,0x14FFA}, + [I(33,35)] = {22,0x3F8FFA}, + [I(34,35)] = {22,0x3F9FFA}, + [I(35,35)] = {24,0xFFAFFA}, + [I(36,35)] = {25,0x1FF9FFA}, + [I(37,35)] = {18,0x15FFA}, + [I(38,35)] = {20,0xF8FFA}, + [I(39,35)] = {23,0x7FAFFA}, + [I(40,35)] = {22,0x3FAFFA}, + [I(41,35)] = {22,0x3FBFFA}, + [I(42,35)] = {20,0xF9FFA}, + [I(43,35)] = {23,0x7FBFFA}, + [I(44,35)] = {20,0xFAFFA}, + [I(45,35)] = {18,0x16FFA}, + [I(46,35)] = {18,0x17FFA}, + [I(47,35)] = {18,0x18FFA}, + [I(48,35)] = {17,0xFFA}, + [I(49,35)] = {17,0x1FFA}, + [I(50,35)] = {17,0x2FFA}, + [I(51,35)] = {18,0x19FFA}, + [I(52,35)] = {18,0x1AFFA}, + [I(53,35)] = {18,0x1BFFA}, + [I(54,35)] = {18,0x1CFFA}, + [I(55,35)] = {18,0x1DFFA}, + [I(56,35)] = {18,0x1EFFA}, + [I(57,35)] = {18,0x1FFFA}, + [I(58,35)] = {19,0x5CFFA}, + [I(59,35)] = {20,0xFBFFA}, + [I(60,35)] = {27,0x7FFCFFA}, + [I(61,35)] = {18,0x20FFA}, + [I(62,35)] = {24,0xFFBFFA}, + [I(63,35)] = {22,0x3FCFFA}, + [I(64,35)] = {25,0x1FFAFFA}, + [I(65,35)] = {18,0x21FFA}, + [I(66,35)] = {19,0x5DFFA}, + [I(67,35)] = {19,0x5EFFA}, + [I(68,35)] = {19,0x5FFFA}, + [I(69,35)] = {19,0x60FFA}, + [I(70,35)] = {19,0x61FFA}, + [I(71,35)] = {19,0x62FFA}, + [I(72,35)] = {19,0x63FFA}, + [I(73,35)] = {19,0x64FFA}, + [I(74,35)] = {19,0x65FFA}, + [I(75,35)] = {19,0x66FFA}, + [I(76,35)] = {19,0x67FFA}, + [I(77,35)] = {19,0x68FFA}, + [I(78,35)] = {19,0x69FFA}, + [I(79,35)] = {19,0x6AFFA}, + [I(80,35)] = {19,0x6BFFA}, + [I(81,35)] = {19,0x6CFFA}, + [I(82,35)] = {19,0x6DFFA}, + [I(83,35)] = {19,0x6EFFA}, + [I(84,35)] = {19,0x6FFFA}, + [I(85,35)] = {19,0x70FFA}, + [I(86,35)] = {19,0x71FFA}, + [I(87,35)] = {19,0x72FFA}, + [I(88,35)] = {20,0xFCFFA}, + [I(89,35)] = {19,0x73FFA}, + [I(90,35)] = {20,0xFDFFA}, + [I(91,35)] = {25,0x1FFBFFA}, + [I(92,35)] = {31,0x7FFF0FFA}, + [I(93,35)] = {25,0x1FFCFFA}, + [I(94,35)] = {26,0x3FFCFFA}, + [I(95,35)] = {18,0x22FFA}, + [I(96,35)] = {27,0x7FFDFFA}, + [I(97,35)] = {17,0x3FFA}, + [I(98,35)] = {18,0x23FFA}, + [I(99,35)] = {17,0x4FFA}, + [I(100,35)] = {18,0x24FFA}, + [I(101,35)] = {17,0x5FFA}, + [I(102,35)] = {18,0x25FFA}, + [I(103,35)] = {18,0x26FFA}, + [I(104,35)] = {18,0x27FFA}, + [I(105,35)] = {17,0x6FFA}, + [I(106,35)] = {19,0x74FFA}, + [I(107,35)] = {19,0x75FFA}, + [I(108,35)] = {18,0x28FFA}, + [I(109,35)] = {18,0x29FFA}, + [I(110,35)] = {18,0x2AFFA}, + [I(111,35)] = {17,0x7FFA}, + [I(112,35)] = {18,0x2BFFA}, + [I(113,35)] = {19,0x76FFA}, + [I(114,35)] = {18,0x2CFFA}, + [I(115,35)] = {17,0x8FFA}, + [I(116,35)] = {17,0x9FFA}, + [I(117,35)] = {18,0x2DFFA}, + [I(118,35)] = {19,0x77FFA}, + [I(119,35)] = {19,0x78FFA}, + [I(120,35)] = {19,0x79FFA}, + [I(121,35)] = {19,0x7AFFA}, + [I(122,35)] = {19,0x7BFFA}, + [I(123,35)] = {27,0x7FFEFFA}, + [I(124,35)] = {23,0x7FCFFA}, + [I(125,35)] = {26,0x3FFDFFA}, + [I(126,35)] = {25,0x1FFDFFA}, + [I(127,35)] = {64,0}, + [I(128,35)] = {X32,0xFFFE6FFA}, + [I(129,35)] = {64,0}, + [I(130,35)] = {X32,0xFFFE7FFA}, + [I(131,35)] = {X32,0xFFFE8FFA}, + [I(132,35)] = {64,0}, + [I(133,35)] = {64,0}, + [I(134,35)] = {64,0}, + [I(135,35)] = {64,0}, + [I(136,35)] = {64,0}, + [I(137,35)] = {64,0}, + [I(138,35)] = {64,0}, + [I(139,35)] = {64,0}, + [I(140,35)] = {64,0}, + [I(141,35)] = {64,0}, + [I(142,35)] = {64,0}, + [I(143,35)] = {64,0}, + [I(144,35)] = {64,0}, + [I(145,35)] = {64,0}, + [I(146,35)] = {64,0}, + [I(147,35)] = {64,0}, + [I(148,35)] = {64,0}, + [I(149,35)] = {64,0}, + [I(150,35)] = {64,0}, + [I(151,35)] = {64,0}, + [I(152,35)] = {64,0}, + [I(153,35)] = {64,0}, + [I(154,35)] = {64,0}, + [I(155,35)] = {64,0}, + [I(156,35)] = {64,0}, + [I(157,35)] = {64,0}, + [I(158,35)] = {64,0}, + [I(159,35)] = {64,0}, + [I(160,35)] = {64,0}, + [I(161,35)] = {64,0}, + [I(162,35)] = {X32,0xFFFE9FFA}, + [I(163,35)] = {64,0}, + [I(164,35)] = {64,0}, + [I(165,35)] = {64,0}, + [I(166,35)] = {64,0}, + [I(167,35)] = {64,0}, + [I(168,35)] = {64,0}, + [I(169,35)] = {64,0}, + [I(170,35)] = {64,0}, + [I(171,35)] = {64,0}, + [I(172,35)] = {64,0}, + [I(173,35)] = {64,0}, + [I(174,35)] = {64,0}, + [I(175,35)] = {64,0}, + [I(176,35)] = {64,0}, + [I(177,35)] = {64,0}, + [I(178,35)] = {64,0}, + [I(179,35)] = {64,0}, + [I(180,35)] = {64,0}, + [I(181,35)] = {64,0}, + [I(182,35)] = {64,0}, + [I(183,35)] = {64,0}, + [I(184,35)] = {X32,0xFFFEAFFA}, + [I(185,35)] = {64,0}, + [I(186,35)] = {64,0}, + [I(187,35)] = {64,0}, + [I(188,35)] = {64,0}, + [I(189,35)] = {64,0}, + [I(190,35)] = {64,0}, + [I(191,35)] = {64,0}, + [I(192,35)] = {64,0}, + [I(193,35)] = {64,0}, + [I(194,35)] = {X32,0xFFFEBFFA}, + [I(195,35)] = {31,0x7FFF1FFA}, + [I(196,35)] = {64,0}, + [I(197,35)] = {64,0}, + [I(198,35)] = {64,0}, + [I(199,35)] = {64,0}, + [I(200,35)] = {64,0}, + [I(201,35)] = {64,0}, + [I(202,35)] = {64,0}, + [I(203,35)] = {64,0}, + [I(204,35)] = {64,0}, + [I(205,35)] = {64,0}, + [I(206,35)] = {64,0}, + [I(207,35)] = {64,0}, + [I(208,35)] = {31,0x7FFF2FFA}, + [I(209,35)] = {64,0}, + [I(210,35)] = {64,0}, + [I(211,35)] = {64,0}, + [I(212,35)] = {64,0}, + [I(213,35)] = {64,0}, + [I(214,35)] = {64,0}, + [I(215,35)] = {64,0}, + [I(216,35)] = {64,0}, + [I(217,35)] = {64,0}, + [I(218,35)] = {64,0}, + [I(219,35)] = {64,0}, + [I(220,35)] = {64,0}, + [I(221,35)] = {64,0}, + [I(222,35)] = {64,0}, + [I(223,35)] = {64,0}, + [I(224,35)] = {X32,0xFFFECFFA}, + [I(225,35)] = {64,0}, + [I(226,35)] = {X32,0xFFFEDFFA}, + [I(227,35)] = {64,0}, + [I(228,35)] = {64,0}, + [I(229,35)] = {64,0}, + [I(230,35)] = {64,0}, + [I(231,35)] = {64,0}, + [I(232,35)] = {64,0}, + [I(233,35)] = {64,0}, + [I(234,35)] = {64,0}, + [I(235,35)] = {64,0}, + [I(236,35)] = {64,0}, + [I(237,35)] = {64,0}, + [I(238,35)] = {64,0}, + [I(239,35)] = {64,0}, + [I(240,35)] = {64,0}, + [I(241,35)] = {64,0}, + [I(242,35)] = {64,0}, + [I(243,35)] = {64,0}, + [I(244,35)] = {64,0}, + [I(245,35)] = {64,0}, + [I(246,35)] = {64,0}, + [I(247,35)] = {64,0}, + [I(248,35)] = {64,0}, + [I(249,35)] = {64,0}, + [I(250,35)] = {64,0}, + [I(251,35)] = {64,0}, + [I(252,35)] = {64,0}, + [I(253,35)] = {64,0}, + [I(254,35)] = {64,0}, + [I(255,35)] = {64,0}, + [I(0,36)] = {26,0x3FF1FF9}, + [I(1,36)] = {64,0}, + [I(2,36)] = {64,0}, + [I(3,36)] = {64,0}, + [I(4,36)] = {64,0}, + [I(5,36)] = {64,0}, + [I(6,36)] = {64,0}, + [I(7,36)] = {64,0}, + [I(8,36)] = {64,0}, + [I(9,36)] = {64,0}, + [I(10,36)] = {64,0}, + [I(11,36)] = {64,0}, + [I(12,36)] = {64,0}, + [I(13,36)] = {64,0}, + [I(14,36)] = {64,0}, + [I(15,36)] = {64,0}, + [I(16,36)] = {64,0}, + [I(17,36)] = {64,0}, + [I(18,36)] = {64,0}, + [I(19,36)] = {64,0}, + [I(20,36)] = {64,0}, + [I(21,36)] = {64,0}, + [I(22,36)] = {64,0}, + [I(23,36)] = {64,0}, + [I(24,36)] = {64,0}, + [I(25,36)] = {64,0}, + [I(26,36)] = {64,0}, + [I(27,36)] = {64,0}, + [I(28,36)] = {64,0}, + [I(29,36)] = {64,0}, + [I(30,36)] = {64,0}, + [I(31,36)] = {64,0}, + [I(32,36)] = {19,0x29FF9}, + [I(33,36)] = {23,0x7F1FF9}, + [I(34,36)] = {23,0x7F3FF9}, + [I(35,36)] = {25,0x1FF5FF9}, + [I(36,36)] = {26,0x3FF3FF9}, + [I(37,36)] = {19,0x2BFF9}, + [I(38,36)] = {21,0x1F1FF9}, + [I(39,36)] = {24,0xFF5FF9}, + [I(40,36)] = {23,0x7F5FF9}, + [I(41,36)] = {23,0x7F7FF9}, + [I(42,36)] = {21,0x1F3FF9}, + [I(43,36)] = {24,0xFF7FF9}, + [I(44,36)] = {21,0x1F5FF9}, + [I(45,36)] = {19,0x2DFF9}, + [I(46,36)] = {19,0x2FFF9}, + [I(47,36)] = {19,0x31FF9}, + [I(48,36)] = {18,0x1FF9}, + [I(49,36)] = {18,0x3FF9}, + [I(50,36)] = {18,0x5FF9}, + [I(51,36)] = {19,0x33FF9}, + [I(52,36)] = {19,0x35FF9}, + [I(53,36)] = {19,0x37FF9}, + [I(54,36)] = {19,0x39FF9}, + [I(55,36)] = {19,0x3BFF9}, + [I(56,36)] = {19,0x3DFF9}, + [I(57,36)] = {19,0x3FFF9}, + [I(58,36)] = {20,0xB9FF9}, + [I(59,36)] = {21,0x1F7FF9}, + [I(60,36)] = {28,0xFFF9FF9}, + [I(61,36)] = {19,0x41FF9}, + [I(62,36)] = {25,0x1FF7FF9}, + [I(63,36)] = {23,0x7F9FF9}, + [I(64,36)] = {26,0x3FF5FF9}, + [I(65,36)] = {19,0x43FF9}, + [I(66,36)] = {20,0xBBFF9}, + [I(67,36)] = {20,0xBDFF9}, + [I(68,36)] = {20,0xBFFF9}, + [I(69,36)] = {20,0xC1FF9}, + [I(70,36)] = {20,0xC3FF9}, + [I(71,36)] = {20,0xC5FF9}, + [I(72,36)] = {20,0xC7FF9}, + [I(73,36)] = {20,0xC9FF9}, + [I(74,36)] = {20,0xCBFF9}, + [I(75,36)] = {20,0xCDFF9}, + [I(76,36)] = {20,0xCFFF9}, + [I(77,36)] = {20,0xD1FF9}, + [I(78,36)] = {20,0xD3FF9}, + [I(79,36)] = {20,0xD5FF9}, + [I(80,36)] = {20,0xD7FF9}, + [I(81,36)] = {20,0xD9FF9}, + [I(82,36)] = {20,0xDBFF9}, + [I(83,36)] = {20,0xDDFF9}, + [I(84,36)] = {20,0xDFFF9}, + [I(85,36)] = {20,0xE1FF9}, + [I(86,36)] = {20,0xE3FF9}, + [I(87,36)] = {20,0xE5FF9}, + [I(88,36)] = {21,0x1F9FF9}, + [I(89,36)] = {20,0xE7FF9}, + [I(90,36)] = {21,0x1FBFF9}, + [I(91,36)] = {26,0x3FF7FF9}, + [I(92,36)] = {X32,0xFFFE1FF9}, + [I(93,36)] = {26,0x3FF9FF9}, + [I(94,36)] = {27,0x7FF9FF9}, + [I(95,36)] = {19,0x45FF9}, + [I(96,36)] = {28,0xFFFBFF9}, + [I(97,36)] = {18,0x7FF9}, + [I(98,36)] = {19,0x47FF9}, + [I(99,36)] = {18,0x9FF9}, + [I(100,36)] = {19,0x49FF9}, + [I(101,36)] = {18,0xBFF9}, + [I(102,36)] = {19,0x4BFF9}, + [I(103,36)] = {19,0x4DFF9}, + [I(104,36)] = {19,0x4FFF9}, + [I(105,36)] = {18,0xDFF9}, + [I(106,36)] = {20,0xE9FF9}, + [I(107,36)] = {20,0xEBFF9}, + [I(108,36)] = {19,0x51FF9}, + [I(109,36)] = {19,0x53FF9}, + [I(110,36)] = {19,0x55FF9}, + [I(111,36)] = {18,0xFFF9}, + [I(112,36)] = {19,0x57FF9}, + [I(113,36)] = {20,0xEDFF9}, + [I(114,36)] = {19,0x59FF9}, + [I(115,36)] = {18,0x11FF9}, + [I(116,36)] = {18,0x13FF9}, + [I(117,36)] = {19,0x5BFF9}, + [I(118,36)] = {20,0xEFFF9}, + [I(119,36)] = {20,0xF1FF9}, + [I(120,36)] = {20,0xF3FF9}, + [I(121,36)] = {20,0xF5FF9}, + [I(122,36)] = {20,0xF7FF9}, + [I(123,36)] = {28,0xFFFDFF9}, + [I(124,36)] = {24,0xFF9FF9}, + [I(125,36)] = {27,0x7FFBFF9}, + [I(126,36)] = {26,0x3FFBFF9}, + [I(127,36)] = {64,0}, + [I(128,36)] = {64,0}, + [I(129,36)] = {64,0}, + [I(130,36)] = {64,0}, + [I(131,36)] = {64,0}, + [I(132,36)] = {64,0}, + [I(133,36)] = {64,0}, + [I(134,36)] = {64,0}, + [I(135,36)] = {64,0}, + [I(136,36)] = {64,0}, + [I(137,36)] = {64,0}, + [I(138,36)] = {64,0}, + [I(139,36)] = {64,0}, + [I(140,36)] = {64,0}, + [I(141,36)] = {64,0}, + [I(142,36)] = {64,0}, + [I(143,36)] = {64,0}, + [I(144,36)] = {64,0}, + [I(145,36)] = {64,0}, + [I(146,36)] = {64,0}, + [I(147,36)] = {64,0}, + [I(148,36)] = {64,0}, + [I(149,36)] = {64,0}, + [I(150,36)] = {64,0}, + [I(151,36)] = {64,0}, + [I(152,36)] = {64,0}, + [I(153,36)] = {64,0}, + [I(154,36)] = {64,0}, + [I(155,36)] = {64,0}, + [I(156,36)] = {64,0}, + [I(157,36)] = {64,0}, + [I(158,36)] = {64,0}, + [I(159,36)] = {64,0}, + [I(160,36)] = {64,0}, + [I(161,36)] = {64,0}, + [I(162,36)] = {64,0}, + [I(163,36)] = {64,0}, + [I(164,36)] = {64,0}, + [I(165,36)] = {64,0}, + [I(166,36)] = {64,0}, + [I(167,36)] = {64,0}, + [I(168,36)] = {64,0}, + [I(169,36)] = {64,0}, + [I(170,36)] = {64,0}, + [I(171,36)] = {64,0}, + [I(172,36)] = {64,0}, + [I(173,36)] = {64,0}, + [I(174,36)] = {64,0}, + [I(175,36)] = {64,0}, + [I(176,36)] = {64,0}, + [I(177,36)] = {64,0}, + [I(178,36)] = {64,0}, + [I(179,36)] = {64,0}, + [I(180,36)] = {64,0}, + [I(181,36)] = {64,0}, + [I(182,36)] = {64,0}, + [I(183,36)] = {64,0}, + [I(184,36)] = {64,0}, + [I(185,36)] = {64,0}, + [I(186,36)] = {64,0}, + [I(187,36)] = {64,0}, + [I(188,36)] = {64,0}, + [I(189,36)] = {64,0}, + [I(190,36)] = {64,0}, + [I(191,36)] = {64,0}, + [I(192,36)] = {64,0}, + [I(193,36)] = {64,0}, + [I(194,36)] = {64,0}, + [I(195,36)] = {X32,0xFFFE3FF9}, + [I(196,36)] = {64,0}, + [I(197,36)] = {64,0}, + [I(198,36)] = {64,0}, + [I(199,36)] = {64,0}, + [I(200,36)] = {64,0}, + [I(201,36)] = {64,0}, + [I(202,36)] = {64,0}, + [I(203,36)] = {64,0}, + [I(204,36)] = {64,0}, + [I(205,36)] = {64,0}, + [I(206,36)] = {64,0}, + [I(207,36)] = {64,0}, + [I(208,36)] = {X32,0xFFFE5FF9}, + [I(209,36)] = {64,0}, + [I(210,36)] = {64,0}, + [I(211,36)] = {64,0}, + [I(212,36)] = {64,0}, + [I(213,36)] = {64,0}, + [I(214,36)] = {64,0}, + [I(215,36)] = {64,0}, + [I(216,36)] = {64,0}, + [I(217,36)] = {64,0}, + [I(218,36)] = {64,0}, + [I(219,36)] = {64,0}, + [I(220,36)] = {64,0}, + [I(221,36)] = {64,0}, + [I(222,36)] = {64,0}, + [I(223,36)] = {64,0}, + [I(224,36)] = {64,0}, + [I(225,36)] = {64,0}, + [I(226,36)] = {64,0}, + [I(227,36)] = {64,0}, + [I(228,36)] = {64,0}, + [I(229,36)] = {64,0}, + [I(230,36)] = {64,0}, + [I(231,36)] = {64,0}, + [I(232,36)] = {64,0}, + [I(233,36)] = {64,0}, + [I(234,36)] = {64,0}, + [I(235,36)] = {64,0}, + [I(236,36)] = {64,0}, + [I(237,36)] = {64,0}, + [I(238,36)] = {64,0}, + [I(239,36)] = {64,0}, + [I(240,36)] = {64,0}, + [I(241,36)] = {64,0}, + [I(242,36)] = {64,0}, + [I(243,36)] = {64,0}, + [I(244,36)] = {64,0}, + [I(245,36)] = {64,0}, + [I(246,36)] = {64,0}, + [I(247,36)] = {64,0}, + [I(248,36)] = {64,0}, + [I(249,36)] = {64,0}, + [I(250,36)] = {64,0}, + [I(251,36)] = {64,0}, + [I(252,36)] = {64,0}, + [I(253,36)] = {64,0}, + [I(254,36)] = {64,0}, + [I(255,36)] = {64,0}, + [I(0,37)] = {19,0x7FE15}, + [I(1,37)] = {29,0x1FFFF615}, + [I(2,37)] = {64,0}, + [I(3,37)] = {64,0}, + [I(4,37)] = {64,0}, + [I(5,37)] = {64,0}, + [I(6,37)] = {64,0}, + [I(7,37)] = {64,0}, + [I(8,37)] = {64,0}, + [I(9,37)] = {30,0x3FFFFA95}, + [I(10,37)] = {64,0}, + [I(11,37)] = {64,0}, + [I(12,37)] = {64,0}, + [I(13,37)] = {64,0}, + [I(14,37)] = {64,0}, + [I(15,37)] = {64,0}, + [I(16,37)] = {64,0}, + [I(17,37)] = {64,0}, + [I(18,37)] = {64,0}, + [I(19,37)] = {64,0}, + [I(20,37)] = {64,0}, + [I(21,37)] = {64,0}, + [I(22,37)] = {64,0}, + [I(23,37)] = {64,0}, + [I(24,37)] = {64,0}, + [I(25,37)] = {64,0}, + [I(26,37)] = {64,0}, + [I(27,37)] = {64,0}, + [I(28,37)] = {64,0}, + [I(29,37)] = {64,0}, + [I(30,37)] = {64,0}, + [I(31,37)] = {64,0}, + [I(32,37)] = {12,0x515}, + [I(33,37)] = {16,0xFE15}, + [I(34,37)] = {16,0xFE55}, + [I(35,37)] = {18,0x3FE95}, + [I(36,37)] = {19,0x7FE55}, + [I(37,37)] = {12,0x555}, + [I(38,37)] = {14,0x3E15}, + [I(39,37)] = {17,0x1FE95}, + [I(40,37)] = {16,0xFE95}, + [I(41,37)] = {16,0xFED5}, + [I(42,37)] = {14,0x3E55}, + [I(43,37)] = {17,0x1FED5}, + [I(44,37)] = {14,0x3E95}, + [I(45,37)] = {12,0x595}, + [I(46,37)] = {12,0x5D5}, + [I(47,37)] = {12,0x615}, + [I(48,37)] = {11,0x15}, + [I(49,37)] = {11,0x55}, + [I(50,37)] = {11,0x95}, + [I(51,37)] = {12,0x655}, + [I(52,37)] = {12,0x695}, + [I(53,37)] = {12,0x6D5}, + [I(54,37)] = {12,0x715}, + [I(55,37)] = {12,0x755}, + [I(56,37)] = {12,0x795}, + [I(57,37)] = {12,0x7D5}, + [I(58,37)] = {13,0x1715}, + [I(59,37)] = {14,0x3ED5}, + [I(60,37)] = {21,0x1FFF15}, + [I(61,37)] = {12,0x815}, + [I(62,37)] = {18,0x3FED5}, + [I(63,37)] = {16,0xFF15}, + [I(64,37)] = {19,0x7FE95}, + [I(65,37)] = {12,0x855}, + [I(66,37)] = {13,0x1755}, + [I(67,37)] = {13,0x1795}, + [I(68,37)] = {13,0x17D5}, + [I(69,37)] = {13,0x1815}, + [I(70,37)] = {13,0x1855}, + [I(71,37)] = {13,0x1895}, + [I(72,37)] = {13,0x18D5}, + [I(73,37)] = {13,0x1915}, + [I(74,37)] = {13,0x1955}, + [I(75,37)] = {13,0x1995}, + [I(76,37)] = {13,0x19D5}, + [I(77,37)] = {13,0x1A15}, + [I(78,37)] = {13,0x1A55}, + [I(79,37)] = {13,0x1A95}, + [I(80,37)] = {13,0x1AD5}, + [I(81,37)] = {13,0x1B15}, + [I(82,37)] = {13,0x1B55}, + [I(83,37)] = {13,0x1B95}, + [I(84,37)] = {13,0x1BD5}, + [I(85,37)] = {13,0x1C15}, + [I(86,37)] = {13,0x1C55}, + [I(87,37)] = {13,0x1C95}, + [I(88,37)] = {14,0x3F15}, + [I(89,37)] = {13,0x1CD5}, + [I(90,37)] = {14,0x3F55}, + [I(91,37)] = {19,0x7FED5}, + [I(92,37)] = {25,0x1FFFC15}, + [I(93,37)] = {19,0x7FF15}, + [I(94,37)] = {20,0xFFF15}, + [I(95,37)] = {12,0x895}, + [I(96,37)] = {21,0x1FFF55}, + [I(97,37)] = {11,0xD5}, + [I(98,37)] = {12,0x8D5}, + [I(99,37)] = {11,0x115}, + [I(100,37)] = {12,0x915}, + [I(101,37)] = {11,0x155}, + [I(102,37)] = {12,0x955}, + [I(103,37)] = {12,0x995}, + [I(104,37)] = {12,0x9D5}, + [I(105,37)] = {11,0x195}, + [I(106,37)] = {13,0x1D15}, + [I(107,37)] = {13,0x1D55}, + [I(108,37)] = {12,0xA15}, + [I(109,37)] = {12,0xA55}, + [I(110,37)] = {12,0xA95}, + [I(111,37)] = {11,0x1D5}, + [I(112,37)] = {12,0xAD5}, + [I(113,37)] = {13,0x1D95}, + [I(114,37)] = {12,0xB15}, + [I(115,37)] = {11,0x215}, + [I(116,37)] = {11,0x255}, + [I(117,37)] = {12,0xB55}, + [I(118,37)] = {13,0x1DD5}, + [I(119,37)] = {13,0x1E15}, + [I(120,37)] = {13,0x1E55}, + [I(121,37)] = {13,0x1E95}, + [I(122,37)] = {13,0x1ED5}, + [I(123,37)] = {21,0x1FFF95}, + [I(124,37)] = {17,0x1FF15}, + [I(125,37)] = {20,0xFFF55}, + [I(126,37)] = {19,0x7FF55}, + [I(127,37)] = {64,0}, + [I(128,37)] = {26,0x3FFF995}, + [I(129,37)] = {28,0xFFFF495}, + [I(130,37)] = {26,0x3FFF9D5}, + [I(131,37)] = {26,0x3FFFA15}, + [I(132,37)] = {28,0xFFFF4D5}, + [I(133,37)] = {28,0xFFFF515}, + [I(134,37)] = {28,0xFFFF555}, + [I(135,37)] = {29,0x1FFFF655}, + [I(136,37)] = {28,0xFFFF595}, + [I(137,37)] = {29,0x1FFFF695}, + [I(138,37)] = {29,0x1FFFF6D5}, + [I(139,37)] = {29,0x1FFFF715}, + [I(140,37)] = {29,0x1FFFF755}, + [I(141,37)] = {29,0x1FFFF795}, + [I(142,37)] = {30,0x3FFFFAD5}, + [I(143,37)] = {29,0x1FFFF7D5}, + [I(144,37)] = {30,0x3FFFFB15}, + [I(145,37)] = {30,0x3FFFFB55}, + [I(146,37)] = {28,0xFFFF5D5}, + [I(147,37)] = {29,0x1FFFF815}, + [I(148,37)] = {30,0x3FFFFB95}, + [I(149,37)] = {29,0x1FFFF855}, + [I(150,37)] = {29,0x1FFFF895}, + [I(151,37)] = {29,0x1FFFF8D5}, + [I(152,37)] = {29,0x1FFFF915}, + [I(153,37)] = {27,0x7FFF715}, + [I(154,37)] = {28,0xFFFF615}, + [I(155,37)] = {29,0x1FFFF955}, + [I(156,37)] = {28,0xFFFF655}, + [I(157,37)] = {29,0x1FFFF995}, + [I(158,37)] = {29,0x1FFFF9D5}, + [I(159,37)] = {30,0x3FFFFBD5}, + [I(160,37)] = {28,0xFFFF695}, + [I(161,37)] = {27,0x7FFF755}, + [I(162,37)] = {26,0x3FFFA55}, + [I(163,37)] = {28,0xFFFF6D5}, + [I(164,37)] = {28,0xFFFF715}, + [I(165,37)] = {29,0x1FFFFA15}, + [I(166,37)] = {29,0x1FFFFA55}, + [I(167,37)] = {27,0x7FFF795}, + [I(168,37)] = {29,0x1FFFFA95}, + [I(169,37)] = {28,0xFFFF755}, + [I(170,37)] = {28,0xFFFF795}, + [I(171,37)] = {30,0x3FFFFC15}, + [I(172,37)] = {27,0x7FFF7D5}, + [I(173,37)] = {28,0xFFFF7D5}, + [I(174,37)] = {29,0x1FFFFAD5}, + [I(175,37)] = {29,0x1FFFFB15}, + [I(176,37)] = {27,0x7FFF815}, + [I(177,37)] = {27,0x7FFF855}, + [I(178,37)] = {28,0xFFFF815}, + [I(179,37)] = {27,0x7FFF895}, + [I(180,37)] = {29,0x1FFFFB55}, + [I(181,37)] = {28,0xFFFF855}, + [I(182,37)] = {29,0x1FFFFB95}, + [I(183,37)] = {29,0x1FFFFBD5}, + [I(184,37)] = {26,0x3FFFA95}, + [I(185,37)] = {28,0xFFFF895}, + [I(186,37)] = {28,0xFFFF8D5}, + [I(187,37)] = {28,0xFFFF915}, + [I(188,37)] = {29,0x1FFFFC15}, + [I(189,37)] = {28,0xFFFF955}, + [I(190,37)] = {28,0xFFFF995}, + [I(191,37)] = {29,0x1FFFFC55}, + [I(192,37)] = {X32,0xFFFFF815}, + [I(193,37)] = {X32,0xFFFFF855}, + [I(194,37)] = {26,0x3FFFAD5}, + [I(195,37)] = {25,0x1FFFC55}, + [I(196,37)] = {28,0xFFFF9D5}, + [I(197,37)] = {29,0x1FFFFC95}, + [I(198,37)] = {28,0xFFFFA15}, + [I(199,37)] = {31,0x7FFFFB15}, + [I(200,37)] = {X32,0xFFFFF895}, + [I(201,37)] = {X32,0xFFFFF8D5}, + [I(202,37)] = {X32,0xFFFFF915}, + [I(203,37)] = {64,0}, + [I(204,37)] = {64,0}, + [I(205,37)] = {X32,0xFFFFF955}, + [I(206,37)] = {30,0x3FFFFC55}, + [I(207,37)] = {31,0x7FFFFB55}, + [I(208,37)] = {25,0x1FFFC95}, + [I(209,37)] = {27,0x7FFF8D5}, + [I(210,37)] = {X32,0xFFFFF995}, + [I(211,37)] = {64,0}, + [I(212,37)] = {64,0}, + [I(213,37)] = {X32,0xFFFFF9D5}, + [I(214,37)] = {64,0}, + [I(215,37)] = {30,0x3FFFFC95}, + [I(216,37)] = {27,0x7FFF915}, + [I(217,37)] = {27,0x7FFF955}, + [I(218,37)] = {X32,0xFFFFFA15}, + [I(219,37)] = {X32,0xFFFFFA55}, + [I(220,37)] = {64,0}, + [I(221,37)] = {64,0}, + [I(222,37)] = {64,0}, + [I(223,37)] = {64,0}, + [I(224,37)] = {26,0x3FFFB15}, + [I(225,37)] = {30,0x3FFFFCD5}, + [I(226,37)] = {26,0x3FFFB55}, + [I(227,37)] = {27,0x7FFF995}, + [I(228,37)] = {28,0xFFFFA55}, + [I(229,37)] = {27,0x7FFF9D5}, + [I(230,37)] = {27,0x7FFFA15}, + [I(231,37)] = {29,0x1FFFFCD5}, + [I(232,37)] = {28,0xFFFFA95}, + [I(233,37)] = {28,0xFFFFAD5}, + [I(234,37)] = {31,0x7FFFFB95}, + [I(235,37)] = {31,0x7FFFFBD5}, + [I(236,37)] = {30,0x3FFFFD15}, + [I(237,37)] = {30,0x3FFFFD55}, + [I(238,37)] = {X32,0xFFFFFA95}, + [I(239,37)] = {29,0x1FFFFD15}, + [I(240,37)] = {X32,0xFFFFFAD5}, + [I(241,37)] = {64,0}, + [I(242,37)] = {X32,0xFFFFFB15}, + [I(243,37)] = {X32,0xFFFFFB55}, + [I(244,37)] = {64,0}, + [I(245,37)] = {64,0}, + [I(246,37)] = {64,0}, + [I(247,37)] = {64,0}, + [I(248,37)] = {64,0}, + [I(249,37)] = {64,0}, + [I(250,37)] = {64,0}, + [I(251,37)] = {64,0}, + [I(252,37)] = {64,0}, + [I(253,37)] = {64,0}, + [I(254,37)] = {64,0}, + [I(255,37)] = {X32,0xFFFFFB95}, + [I(0,38)] = {21,0x1FF8F8}, + [I(1,38)] = {31,0x7FFFD8F8}, + [I(2,38)] = {64,0}, + [I(3,38)] = {64,0}, + [I(4,38)] = {64,0}, + [I(5,38)] = {64,0}, + [I(6,38)] = {64,0}, + [I(7,38)] = {64,0}, + [I(8,38)] = {64,0}, + [I(9,38)] = {X32,0xFFFFEAF8}, + [I(10,38)] = {64,0}, + [I(11,38)] = {64,0}, + [I(12,38)] = {64,0}, + [I(13,38)] = {64,0}, + [I(14,38)] = {64,0}, + [I(15,38)] = {64,0}, + [I(16,38)] = {64,0}, + [I(17,38)] = {64,0}, + [I(18,38)] = {64,0}, + [I(19,38)] = {64,0}, + [I(20,38)] = {64,0}, + [I(21,38)] = {64,0}, + [I(22,38)] = {64,0}, + [I(23,38)] = {64,0}, + [I(24,38)] = {64,0}, + [I(25,38)] = {64,0}, + [I(26,38)] = {64,0}, + [I(27,38)] = {64,0}, + [I(28,38)] = {64,0}, + [I(29,38)] = {64,0}, + [I(30,38)] = {64,0}, + [I(31,38)] = {64,0}, + [I(32,38)] = {14,0x14F8}, + [I(33,38)] = {18,0x3F8F8}, + [I(34,38)] = {18,0x3F9F8}, + [I(35,38)] = {20,0xFFAF8}, + [I(36,38)] = {21,0x1FF9F8}, + [I(37,38)] = {14,0x15F8}, + [I(38,38)] = {16,0xF8F8}, + [I(39,38)] = {19,0x7FAF8}, + [I(40,38)] = {18,0x3FAF8}, + [I(41,38)] = {18,0x3FBF8}, + [I(42,38)] = {16,0xF9F8}, + [I(43,38)] = {19,0x7FBF8}, + [I(44,38)] = {16,0xFAF8}, + [I(45,38)] = {14,0x16F8}, + [I(46,38)] = {14,0x17F8}, + [I(47,38)] = {14,0x18F8}, + [I(48,38)] = {13,0xF8}, + [I(49,38)] = {13,0x1F8}, + [I(50,38)] = {13,0x2F8}, + [I(51,38)] = {14,0x19F8}, + [I(52,38)] = {14,0x1AF8}, + [I(53,38)] = {14,0x1BF8}, + [I(54,38)] = {14,0x1CF8}, + [I(55,38)] = {14,0x1DF8}, + [I(56,38)] = {14,0x1EF8}, + [I(57,38)] = {14,0x1FF8}, + [I(58,38)] = {15,0x5CF8}, + [I(59,38)] = {16,0xFBF8}, + [I(60,38)] = {23,0x7FFCF8}, + [I(61,38)] = {14,0x20F8}, + [I(62,38)] = {20,0xFFBF8}, + [I(63,38)] = {18,0x3FCF8}, + [I(64,38)] = {21,0x1FFAF8}, + [I(65,38)] = {14,0x21F8}, + [I(66,38)] = {15,0x5DF8}, + [I(67,38)] = {15,0x5EF8}, + [I(68,38)] = {15,0x5FF8}, + [I(69,38)] = {15,0x60F8}, + [I(70,38)] = {15,0x61F8}, + [I(71,38)] = {15,0x62F8}, + [I(72,38)] = {15,0x63F8}, + [I(73,38)] = {15,0x64F8}, + [I(74,38)] = {15,0x65F8}, + [I(75,38)] = {15,0x66F8}, + [I(76,38)] = {15,0x67F8}, + [I(77,38)] = {15,0x68F8}, + [I(78,38)] = {15,0x69F8}, + [I(79,38)] = {15,0x6AF8}, + [I(80,38)] = {15,0x6BF8}, + [I(81,38)] = {15,0x6CF8}, + [I(82,38)] = {15,0x6DF8}, + [I(83,38)] = {15,0x6EF8}, + [I(84,38)] = {15,0x6FF8}, + [I(85,38)] = {15,0x70F8}, + [I(86,38)] = {15,0x71F8}, + [I(87,38)] = {15,0x72F8}, + [I(88,38)] = {16,0xFCF8}, + [I(89,38)] = {15,0x73F8}, + [I(90,38)] = {16,0xFDF8}, + [I(91,38)] = {21,0x1FFBF8}, + [I(92,38)] = {27,0x7FFF0F8}, + [I(93,38)] = {21,0x1FFCF8}, + [I(94,38)] = {22,0x3FFCF8}, + [I(95,38)] = {14,0x22F8}, + [I(96,38)] = {23,0x7FFDF8}, + [I(97,38)] = {13,0x3F8}, + [I(98,38)] = {14,0x23F8}, + [I(99,38)] = {13,0x4F8}, + [I(100,38)] = {14,0x24F8}, + [I(101,38)] = {13,0x5F8}, + [I(102,38)] = {14,0x25F8}, + [I(103,38)] = {14,0x26F8}, + [I(104,38)] = {14,0x27F8}, + [I(105,38)] = {13,0x6F8}, + [I(106,38)] = {15,0x74F8}, + [I(107,38)] = {15,0x75F8}, + [I(108,38)] = {14,0x28F8}, + [I(109,38)] = {14,0x29F8}, + [I(110,38)] = {14,0x2AF8}, + [I(111,38)] = {13,0x7F8}, + [I(112,38)] = {14,0x2BF8}, + [I(113,38)] = {15,0x76F8}, + [I(114,38)] = {14,0x2CF8}, + [I(115,38)] = {13,0x8F8}, + [I(116,38)] = {13,0x9F8}, + [I(117,38)] = {14,0x2DF8}, + [I(118,38)] = {15,0x77F8}, + [I(119,38)] = {15,0x78F8}, + [I(120,38)] = {15,0x79F8}, + [I(121,38)] = {15,0x7AF8}, + [I(122,38)] = {15,0x7BF8}, + [I(123,38)] = {23,0x7FFEF8}, + [I(124,38)] = {19,0x7FCF8}, + [I(125,38)] = {22,0x3FFDF8}, + [I(126,38)] = {21,0x1FFDF8}, + [I(127,38)] = {64,0}, + [I(128,38)] = {28,0xFFFE6F8}, + [I(129,38)] = {30,0x3FFFD2F8}, + [I(130,38)] = {28,0xFFFE7F8}, + [I(131,38)] = {28,0xFFFE8F8}, + [I(132,38)] = {30,0x3FFFD3F8}, + [I(133,38)] = {30,0x3FFFD4F8}, + [I(134,38)] = {30,0x3FFFD5F8}, + [I(135,38)] = {31,0x7FFFD9F8}, + [I(136,38)] = {30,0x3FFFD6F8}, + [I(137,38)] = {31,0x7FFFDAF8}, + [I(138,38)] = {31,0x7FFFDBF8}, + [I(139,38)] = {31,0x7FFFDCF8}, + [I(140,38)] = {31,0x7FFFDDF8}, + [I(141,38)] = {31,0x7FFFDEF8}, + [I(142,38)] = {X32,0xFFFFEBF8}, + [I(143,38)] = {31,0x7FFFDFF8}, + [I(144,38)] = {X32,0xFFFFECF8}, + [I(145,38)] = {X32,0xFFFFEDF8}, + [I(146,38)] = {30,0x3FFFD7F8}, + [I(147,38)] = {31,0x7FFFE0F8}, + [I(148,38)] = {X32,0xFFFFEEF8}, + [I(149,38)] = {31,0x7FFFE1F8}, + [I(150,38)] = {31,0x7FFFE2F8}, + [I(151,38)] = {31,0x7FFFE3F8}, + [I(152,38)] = {31,0x7FFFE4F8}, + [I(153,38)] = {29,0x1FFFDCF8}, + [I(154,38)] = {30,0x3FFFD8F8}, + [I(155,38)] = {31,0x7FFFE5F8}, + [I(156,38)] = {30,0x3FFFD9F8}, + [I(157,38)] = {31,0x7FFFE6F8}, + [I(158,38)] = {31,0x7FFFE7F8}, + [I(159,38)] = {X32,0xFFFFEFF8}, + [I(160,38)] = {30,0x3FFFDAF8}, + [I(161,38)] = {29,0x1FFFDDF8}, + [I(162,38)] = {28,0xFFFE9F8}, + [I(163,38)] = {30,0x3FFFDBF8}, + [I(164,38)] = {30,0x3FFFDCF8}, + [I(165,38)] = {31,0x7FFFE8F8}, + [I(166,38)] = {31,0x7FFFE9F8}, + [I(167,38)] = {29,0x1FFFDEF8}, + [I(168,38)] = {31,0x7FFFEAF8}, + [I(169,38)] = {30,0x3FFFDDF8}, + [I(170,38)] = {30,0x3FFFDEF8}, + [I(171,38)] = {X32,0xFFFFF0F8}, + [I(172,38)] = {29,0x1FFFDFF8}, + [I(173,38)] = {30,0x3FFFDFF8}, + [I(174,38)] = {31,0x7FFFEBF8}, + [I(175,38)] = {31,0x7FFFECF8}, + [I(176,38)] = {29,0x1FFFE0F8}, + [I(177,38)] = {29,0x1FFFE1F8}, + [I(178,38)] = {30,0x3FFFE0F8}, + [I(179,38)] = {29,0x1FFFE2F8}, + [I(180,38)] = {31,0x7FFFEDF8}, + [I(181,38)] = {30,0x3FFFE1F8}, + [I(182,38)] = {31,0x7FFFEEF8}, + [I(183,38)] = {31,0x7FFFEFF8}, + [I(184,38)] = {28,0xFFFEAF8}, + [I(185,38)] = {30,0x3FFFE2F8}, + [I(186,38)] = {30,0x3FFFE3F8}, + [I(187,38)] = {30,0x3FFFE4F8}, + [I(188,38)] = {31,0x7FFFF0F8}, + [I(189,38)] = {30,0x3FFFE5F8}, + [I(190,38)] = {30,0x3FFFE6F8}, + [I(191,38)] = {31,0x7FFFF1F8}, + [I(192,38)] = {64,0}, + [I(193,38)] = {64,0}, + [I(194,38)] = {28,0xFFFEBF8}, + [I(195,38)] = {27,0x7FFF1F8}, + [I(196,38)] = {30,0x3FFFE7F8}, + [I(197,38)] = {31,0x7FFFF2F8}, + [I(198,38)] = {30,0x3FFFE8F8}, + [I(199,38)] = {64,0}, + [I(200,38)] = {64,0}, + [I(201,38)] = {64,0}, + [I(202,38)] = {64,0}, + [I(203,38)] = {64,0}, + [I(204,38)] = {64,0}, + [I(205,38)] = {64,0}, + [I(206,38)] = {X32,0xFFFFF1F8}, + [I(207,38)] = {64,0}, + [I(208,38)] = {27,0x7FFF2F8}, + [I(209,38)] = {29,0x1FFFE3F8}, + [I(210,38)] = {64,0}, + [I(211,38)] = {64,0}, + [I(212,38)] = {64,0}, + [I(213,38)] = {64,0}, + [I(214,38)] = {64,0}, + [I(215,38)] = {X32,0xFFFFF2F8}, + [I(216,38)] = {29,0x1FFFE4F8}, + [I(217,38)] = {29,0x1FFFE5F8}, + [I(218,38)] = {64,0}, + [I(219,38)] = {64,0}, + [I(220,38)] = {64,0}, + [I(221,38)] = {64,0}, + [I(222,38)] = {64,0}, + [I(223,38)] = {64,0}, + [I(224,38)] = {28,0xFFFECF8}, + [I(225,38)] = {X32,0xFFFFF3F8}, + [I(226,38)] = {28,0xFFFEDF8}, + [I(227,38)] = {29,0x1FFFE6F8}, + [I(228,38)] = {30,0x3FFFE9F8}, + [I(229,38)] = {29,0x1FFFE7F8}, + [I(230,38)] = {29,0x1FFFE8F8}, + [I(231,38)] = {31,0x7FFFF3F8}, + [I(232,38)] = {30,0x3FFFEAF8}, + [I(233,38)] = {30,0x3FFFEBF8}, + [I(234,38)] = {64,0}, + [I(235,38)] = {64,0}, + [I(236,38)] = {X32,0xFFFFF4F8}, + [I(237,38)] = {X32,0xFFFFF5F8}, + [I(238,38)] = {64,0}, + [I(239,38)] = {31,0x7FFFF4F8}, + [I(240,38)] = {64,0}, + [I(241,38)] = {64,0}, + [I(242,38)] = {64,0}, + [I(243,38)] = {64,0}, + [I(244,38)] = {64,0}, + [I(245,38)] = {64,0}, + [I(246,38)] = {64,0}, + [I(247,38)] = {64,0}, + [I(248,38)] = {64,0}, + [I(249,38)] = {64,0}, + [I(250,38)] = {64,0}, + [I(251,38)] = {64,0}, + [I(252,38)] = {64,0}, + [I(253,38)] = {64,0}, + [I(254,38)] = {64,0}, + [I(255,38)] = {64,0}, + [I(0,39)] = {24,0xFFC7FA}, + [I(1,39)] = {64,0}, + [I(2,39)] = {64,0}, + [I(3,39)] = {64,0}, + [I(4,39)] = {64,0}, + [I(5,39)] = {64,0}, + [I(6,39)] = {64,0}, + [I(7,39)] = {64,0}, + [I(8,39)] = {64,0}, + [I(9,39)] = {64,0}, + [I(10,39)] = {64,0}, + [I(11,39)] = {64,0}, + [I(12,39)] = {64,0}, + [I(13,39)] = {64,0}, + [I(14,39)] = {64,0}, + [I(15,39)] = {64,0}, + [I(16,39)] = {64,0}, + [I(17,39)] = {64,0}, + [I(18,39)] = {64,0}, + [I(19,39)] = {64,0}, + [I(20,39)] = {64,0}, + [I(21,39)] = {64,0}, + [I(22,39)] = {64,0}, + [I(23,39)] = {64,0}, + [I(24,39)] = {64,0}, + [I(25,39)] = {64,0}, + [I(26,39)] = {64,0}, + [I(27,39)] = {64,0}, + [I(28,39)] = {64,0}, + [I(29,39)] = {64,0}, + [I(30,39)] = {64,0}, + [I(31,39)] = {64,0}, + [I(32,39)] = {17,0xA7FA}, + [I(33,39)] = {21,0x1FC7FA}, + [I(34,39)] = {21,0x1FCFFA}, + [I(35,39)] = {23,0x7FD7FA}, + [I(36,39)] = {24,0xFFCFFA}, + [I(37,39)] = {17,0xAFFA}, + [I(38,39)] = {19,0x7C7FA}, + [I(39,39)] = {22,0x3FD7FA}, + [I(40,39)] = {21,0x1FD7FA}, + [I(41,39)] = {21,0x1FDFFA}, + [I(42,39)] = {19,0x7CFFA}, + [I(43,39)] = {22,0x3FDFFA}, + [I(44,39)] = {19,0x7D7FA}, + [I(45,39)] = {17,0xB7FA}, + [I(46,39)] = {17,0xBFFA}, + [I(47,39)] = {17,0xC7FA}, + [I(48,39)] = {16,0x7FA}, + [I(49,39)] = {16,0xFFA}, + [I(50,39)] = {16,0x17FA}, + [I(51,39)] = {17,0xCFFA}, + [I(52,39)] = {17,0xD7FA}, + [I(53,39)] = {17,0xDFFA}, + [I(54,39)] = {17,0xE7FA}, + [I(55,39)] = {17,0xEFFA}, + [I(56,39)] = {17,0xF7FA}, + [I(57,39)] = {17,0xFFFA}, + [I(58,39)] = {18,0x2E7FA}, + [I(59,39)] = {19,0x7DFFA}, + [I(60,39)] = {26,0x3FFE7FA}, + [I(61,39)] = {17,0x107FA}, + [I(62,39)] = {23,0x7FDFFA}, + [I(63,39)] = {21,0x1FE7FA}, + [I(64,39)] = {24,0xFFD7FA}, + [I(65,39)] = {17,0x10FFA}, + [I(66,39)] = {18,0x2EFFA}, + [I(67,39)] = {18,0x2F7FA}, + [I(68,39)] = {18,0x2FFFA}, + [I(69,39)] = {18,0x307FA}, + [I(70,39)] = {18,0x30FFA}, + [I(71,39)] = {18,0x317FA}, + [I(72,39)] = {18,0x31FFA}, + [I(73,39)] = {18,0x327FA}, + [I(74,39)] = {18,0x32FFA}, + [I(75,39)] = {18,0x337FA}, + [I(76,39)] = {18,0x33FFA}, + [I(77,39)] = {18,0x347FA}, + [I(78,39)] = {18,0x34FFA}, + [I(79,39)] = {18,0x357FA}, + [I(80,39)] = {18,0x35FFA}, + [I(81,39)] = {18,0x367FA}, + [I(82,39)] = {18,0x36FFA}, + [I(83,39)] = {18,0x377FA}, + [I(84,39)] = {18,0x37FFA}, + [I(85,39)] = {18,0x387FA}, + [I(86,39)] = {18,0x38FFA}, + [I(87,39)] = {18,0x397FA}, + [I(88,39)] = {19,0x7E7FA}, + [I(89,39)] = {18,0x39FFA}, + [I(90,39)] = {19,0x7EFFA}, + [I(91,39)] = {24,0xFFDFFA}, + [I(92,39)] = {30,0x3FFF87FA}, + [I(93,39)] = {24,0xFFE7FA}, + [I(94,39)] = {25,0x1FFE7FA}, + [I(95,39)] = {17,0x117FA}, + [I(96,39)] = {26,0x3FFEFFA}, + [I(97,39)] = {16,0x1FFA}, + [I(98,39)] = {17,0x11FFA}, + [I(99,39)] = {16,0x27FA}, + [I(100,39)] = {17,0x127FA}, + [I(101,39)] = {16,0x2FFA}, + [I(102,39)] = {17,0x12FFA}, + [I(103,39)] = {17,0x137FA}, + [I(104,39)] = {17,0x13FFA}, + [I(105,39)] = {16,0x37FA}, + [I(106,39)] = {18,0x3A7FA}, + [I(107,39)] = {18,0x3AFFA}, + [I(108,39)] = {17,0x147FA}, + [I(109,39)] = {17,0x14FFA}, + [I(110,39)] = {17,0x157FA}, + [I(111,39)] = {16,0x3FFA}, + [I(112,39)] = {17,0x15FFA}, + [I(113,39)] = {18,0x3B7FA}, + [I(114,39)] = {17,0x167FA}, + [I(115,39)] = {16,0x47FA}, + [I(116,39)] = {16,0x4FFA}, + [I(117,39)] = {17,0x16FFA}, + [I(118,39)] = {18,0x3BFFA}, + [I(119,39)] = {18,0x3C7FA}, + [I(120,39)] = {18,0x3CFFA}, + [I(121,39)] = {18,0x3D7FA}, + [I(122,39)] = {18,0x3DFFA}, + [I(123,39)] = {26,0x3FFF7FA}, + [I(124,39)] = {22,0x3FE7FA}, + [I(125,39)] = {25,0x1FFEFFA}, + [I(126,39)] = {24,0xFFEFFA}, + [I(127,39)] = {64,0}, + [I(128,39)] = {31,0x7FFF37FA}, + [I(129,39)] = {64,0}, + [I(130,39)] = {31,0x7FFF3FFA}, + [I(131,39)] = {31,0x7FFF47FA}, + [I(132,39)] = {64,0}, + [I(133,39)] = {64,0}, + [I(134,39)] = {64,0}, + [I(135,39)] = {64,0}, + [I(136,39)] = {64,0}, + [I(137,39)] = {64,0}, + [I(138,39)] = {64,0}, + [I(139,39)] = {64,0}, + [I(140,39)] = {64,0}, + [I(141,39)] = {64,0}, + [I(142,39)] = {64,0}, + [I(143,39)] = {64,0}, + [I(144,39)] = {64,0}, + [I(145,39)] = {64,0}, + [I(146,39)] = {64,0}, + [I(147,39)] = {64,0}, + [I(148,39)] = {64,0}, + [I(149,39)] = {64,0}, + [I(150,39)] = {64,0}, + [I(151,39)] = {64,0}, + [I(152,39)] = {64,0}, + [I(153,39)] = {X32,0xFFFEE7FA}, + [I(154,39)] = {64,0}, + [I(155,39)] = {64,0}, + [I(156,39)] = {64,0}, + [I(157,39)] = {64,0}, + [I(158,39)] = {64,0}, + [I(159,39)] = {64,0}, + [I(160,39)] = {64,0}, + [I(161,39)] = {X32,0xFFFEEFFA}, + [I(162,39)] = {31,0x7FFF4FFA}, + [I(163,39)] = {64,0}, + [I(164,39)] = {64,0}, + [I(165,39)] = {64,0}, + [I(166,39)] = {64,0}, + [I(167,39)] = {X32,0xFFFEF7FA}, + [I(168,39)] = {64,0}, + [I(169,39)] = {64,0}, + [I(170,39)] = {64,0}, + [I(171,39)] = {64,0}, + [I(172,39)] = {X32,0xFFFEFFFA}, + [I(173,39)] = {64,0}, + [I(174,39)] = {64,0}, + [I(175,39)] = {64,0}, + [I(176,39)] = {X32,0xFFFF07FA}, + [I(177,39)] = {X32,0xFFFF0FFA}, + [I(178,39)] = {64,0}, + [I(179,39)] = {X32,0xFFFF17FA}, + [I(180,39)] = {64,0}, + [I(181,39)] = {64,0}, + [I(182,39)] = {64,0}, + [I(183,39)] = {64,0}, + [I(184,39)] = {31,0x7FFF57FA}, + [I(185,39)] = {64,0}, + [I(186,39)] = {64,0}, + [I(187,39)] = {64,0}, + [I(188,39)] = {64,0}, + [I(189,39)] = {64,0}, + [I(190,39)] = {64,0}, + [I(191,39)] = {64,0}, + [I(192,39)] = {64,0}, + [I(193,39)] = {64,0}, + [I(194,39)] = {31,0x7FFF5FFA}, + [I(195,39)] = {30,0x3FFF8FFA}, + [I(196,39)] = {64,0}, + [I(197,39)] = {64,0}, + [I(198,39)] = {64,0}, + [I(199,39)] = {64,0}, + [I(200,39)] = {64,0}, + [I(201,39)] = {64,0}, + [I(202,39)] = {64,0}, + [I(203,39)] = {64,0}, + [I(204,39)] = {64,0}, + [I(205,39)] = {64,0}, + [I(206,39)] = {64,0}, + [I(207,39)] = {64,0}, + [I(208,39)] = {30,0x3FFF97FA}, + [I(209,39)] = {X32,0xFFFF1FFA}, + [I(210,39)] = {64,0}, + [I(211,39)] = {64,0}, + [I(212,39)] = {64,0}, + [I(213,39)] = {64,0}, + [I(214,39)] = {64,0}, + [I(215,39)] = {64,0}, + [I(216,39)] = {X32,0xFFFF27FA}, + [I(217,39)] = {X32,0xFFFF2FFA}, + [I(218,39)] = {64,0}, + [I(219,39)] = {64,0}, + [I(220,39)] = {64,0}, + [I(221,39)] = {64,0}, + [I(222,39)] = {64,0}, + [I(223,39)] = {64,0}, + [I(224,39)] = {31,0x7FFF67FA}, + [I(225,39)] = {64,0}, + [I(226,39)] = {31,0x7FFF6FFA}, + [I(227,39)] = {X32,0xFFFF37FA}, + [I(228,39)] = {64,0}, + [I(229,39)] = {X32,0xFFFF3FFA}, + [I(230,39)] = {X32,0xFFFF47FA}, + [I(231,39)] = {64,0}, + [I(232,39)] = {64,0}, + [I(233,39)] = {64,0}, + [I(234,39)] = {64,0}, + [I(235,39)] = {64,0}, + [I(236,39)] = {64,0}, + [I(237,39)] = {64,0}, + [I(238,39)] = {64,0}, + [I(239,39)] = {64,0}, + [I(240,39)] = {64,0}, + [I(241,39)] = {64,0}, + [I(242,39)] = {64,0}, + [I(243,39)] = {64,0}, + [I(244,39)] = {64,0}, + [I(245,39)] = {64,0}, + [I(246,39)] = {64,0}, + [I(247,39)] = {64,0}, + [I(248,39)] = {64,0}, + [I(249,39)] = {64,0}, + [I(250,39)] = {64,0}, + [I(251,39)] = {64,0}, + [I(252,39)] = {64,0}, + [I(253,39)] = {64,0}, + [I(254,39)] = {64,0}, + [I(255,39)] = {64,0}, + [I(0,40)] = {23,0x7FE3FA}, + [I(1,40)] = {64,0}, + [I(2,40)] = {64,0}, + [I(3,40)] = {64,0}, + [I(4,40)] = {64,0}, + [I(5,40)] = {64,0}, + [I(6,40)] = {64,0}, + [I(7,40)] = {64,0}, + [I(8,40)] = {64,0}, + [I(9,40)] = {64,0}, + [I(10,40)] = {64,0}, + [I(11,40)] = {64,0}, + [I(12,40)] = {64,0}, + [I(13,40)] = {64,0}, + [I(14,40)] = {64,0}, + [I(15,40)] = {64,0}, + [I(16,40)] = {64,0}, + [I(17,40)] = {64,0}, + [I(18,40)] = {64,0}, + [I(19,40)] = {64,0}, + [I(20,40)] = {64,0}, + [I(21,40)] = {64,0}, + [I(22,40)] = {64,0}, + [I(23,40)] = {64,0}, + [I(24,40)] = {64,0}, + [I(25,40)] = {64,0}, + [I(26,40)] = {64,0}, + [I(27,40)] = {64,0}, + [I(28,40)] = {64,0}, + [I(29,40)] = {64,0}, + [I(30,40)] = {64,0}, + [I(31,40)] = {64,0}, + [I(32,40)] = {16,0x53FA}, + [I(33,40)] = {20,0xFE3FA}, + [I(34,40)] = {20,0xFE7FA}, + [I(35,40)] = {22,0x3FEBFA}, + [I(36,40)] = {23,0x7FE7FA}, + [I(37,40)] = {16,0x57FA}, + [I(38,40)] = {18,0x3E3FA}, + [I(39,40)] = {21,0x1FEBFA}, + [I(40,40)] = {20,0xFEBFA}, + [I(41,40)] = {20,0xFEFFA}, + [I(42,40)] = {18,0x3E7FA}, + [I(43,40)] = {21,0x1FEFFA}, + [I(44,40)] = {18,0x3EBFA}, + [I(45,40)] = {16,0x5BFA}, + [I(46,40)] = {16,0x5FFA}, + [I(47,40)] = {16,0x63FA}, + [I(48,40)] = {15,0x3FA}, + [I(49,40)] = {15,0x7FA}, + [I(50,40)] = {15,0xBFA}, + [I(51,40)] = {16,0x67FA}, + [I(52,40)] = {16,0x6BFA}, + [I(53,40)] = {16,0x6FFA}, + [I(54,40)] = {16,0x73FA}, + [I(55,40)] = {16,0x77FA}, + [I(56,40)] = {16,0x7BFA}, + [I(57,40)] = {16,0x7FFA}, + [I(58,40)] = {17,0x173FA}, + [I(59,40)] = {18,0x3EFFA}, + [I(60,40)] = {25,0x1FFF3FA}, + [I(61,40)] = {16,0x83FA}, + [I(62,40)] = {22,0x3FEFFA}, + [I(63,40)] = {20,0xFF3FA}, + [I(64,40)] = {23,0x7FEBFA}, + [I(65,40)] = {16,0x87FA}, + [I(66,40)] = {17,0x177FA}, + [I(67,40)] = {17,0x17BFA}, + [I(68,40)] = {17,0x17FFA}, + [I(69,40)] = {17,0x183FA}, + [I(70,40)] = {17,0x187FA}, + [I(71,40)] = {17,0x18BFA}, + [I(72,40)] = {17,0x18FFA}, + [I(73,40)] = {17,0x193FA}, + [I(74,40)] = {17,0x197FA}, + [I(75,40)] = {17,0x19BFA}, + [I(76,40)] = {17,0x19FFA}, + [I(77,40)] = {17,0x1A3FA}, + [I(78,40)] = {17,0x1A7FA}, + [I(79,40)] = {17,0x1ABFA}, + [I(80,40)] = {17,0x1AFFA}, + [I(81,40)] = {17,0x1B3FA}, + [I(82,40)] = {17,0x1B7FA}, + [I(83,40)] = {17,0x1BBFA}, + [I(84,40)] = {17,0x1BFFA}, + [I(85,40)] = {17,0x1C3FA}, + [I(86,40)] = {17,0x1C7FA}, + [I(87,40)] = {17,0x1CBFA}, + [I(88,40)] = {18,0x3F3FA}, + [I(89,40)] = {17,0x1CFFA}, + [I(90,40)] = {18,0x3F7FA}, + [I(91,40)] = {23,0x7FEFFA}, + [I(92,40)] = {29,0x1FFFC3FA}, + [I(93,40)] = {23,0x7FF3FA}, + [I(94,40)] = {24,0xFFF3FA}, + [I(95,40)] = {16,0x8BFA}, + [I(96,40)] = {25,0x1FFF7FA}, + [I(97,40)] = {15,0xFFA}, + [I(98,40)] = {16,0x8FFA}, + [I(99,40)] = {15,0x13FA}, + [I(100,40)] = {16,0x93FA}, + [I(101,40)] = {15,0x17FA}, + [I(102,40)] = {16,0x97FA}, + [I(103,40)] = {16,0x9BFA}, + [I(104,40)] = {16,0x9FFA}, + [I(105,40)] = {15,0x1BFA}, + [I(106,40)] = {17,0x1D3FA}, + [I(107,40)] = {17,0x1D7FA}, + [I(108,40)] = {16,0xA3FA}, + [I(109,40)] = {16,0xA7FA}, + [I(110,40)] = {16,0xABFA}, + [I(111,40)] = {15,0x1FFA}, + [I(112,40)] = {16,0xAFFA}, + [I(113,40)] = {17,0x1DBFA}, + [I(114,40)] = {16,0xB3FA}, + [I(115,40)] = {15,0x23FA}, + [I(116,40)] = {15,0x27FA}, + [I(117,40)] = {16,0xB7FA}, + [I(118,40)] = {17,0x1DFFA}, + [I(119,40)] = {17,0x1E3FA}, + [I(120,40)] = {17,0x1E7FA}, + [I(121,40)] = {17,0x1EBFA}, + [I(122,40)] = {17,0x1EFFA}, + [I(123,40)] = {25,0x1FFFBFA}, + [I(124,40)] = {21,0x1FF3FA}, + [I(125,40)] = {24,0xFFF7FA}, + [I(126,40)] = {23,0x7FF7FA}, + [I(127,40)] = {64,0}, + [I(128,40)] = {30,0x3FFF9BFA}, + [I(129,40)] = {X32,0xFFFF4BFA}, + [I(130,40)] = {30,0x3FFF9FFA}, + [I(131,40)] = {30,0x3FFFA3FA}, + [I(132,40)] = {X32,0xFFFF4FFA}, + [I(133,40)] = {X32,0xFFFF53FA}, + [I(134,40)] = {X32,0xFFFF57FA}, + [I(135,40)] = {64,0}, + [I(136,40)] = {X32,0xFFFF5BFA}, + [I(137,40)] = {64,0}, + [I(138,40)] = {64,0}, + [I(139,40)] = {64,0}, + [I(140,40)] = {64,0}, + [I(141,40)] = {64,0}, + [I(142,40)] = {64,0}, + [I(143,40)] = {64,0}, + [I(144,40)] = {64,0}, + [I(145,40)] = {64,0}, + [I(146,40)] = {X32,0xFFFF5FFA}, + [I(147,40)] = {64,0}, + [I(148,40)] = {64,0}, + [I(149,40)] = {64,0}, + [I(150,40)] = {64,0}, + [I(151,40)] = {64,0}, + [I(152,40)] = {64,0}, + [I(153,40)] = {31,0x7FFF73FA}, + [I(154,40)] = {X32,0xFFFF63FA}, + [I(155,40)] = {64,0}, + [I(156,40)] = {X32,0xFFFF67FA}, + [I(157,40)] = {64,0}, + [I(158,40)] = {64,0}, + [I(159,40)] = {64,0}, + [I(160,40)] = {X32,0xFFFF6BFA}, + [I(161,40)] = {31,0x7FFF77FA}, + [I(162,40)] = {30,0x3FFFA7FA}, + [I(163,40)] = {X32,0xFFFF6FFA}, + [I(164,40)] = {X32,0xFFFF73FA}, + [I(165,40)] = {64,0}, + [I(166,40)] = {64,0}, + [I(167,40)] = {31,0x7FFF7BFA}, + [I(168,40)] = {64,0}, + [I(169,40)] = {X32,0xFFFF77FA}, + [I(170,40)] = {X32,0xFFFF7BFA}, + [I(171,40)] = {64,0}, + [I(172,40)] = {31,0x7FFF7FFA}, + [I(173,40)] = {X32,0xFFFF7FFA}, + [I(174,40)] = {64,0}, + [I(175,40)] = {64,0}, + [I(176,40)] = {31,0x7FFF83FA}, + [I(177,40)] = {31,0x7FFF87FA}, + [I(178,40)] = {X32,0xFFFF83FA}, + [I(179,40)] = {31,0x7FFF8BFA}, + [I(180,40)] = {64,0}, + [I(181,40)] = {X32,0xFFFF87FA}, + [I(182,40)] = {64,0}, + [I(183,40)] = {64,0}, + [I(184,40)] = {30,0x3FFFABFA}, + [I(185,40)] = {X32,0xFFFF8BFA}, + [I(186,40)] = {X32,0xFFFF8FFA}, + [I(187,40)] = {X32,0xFFFF93FA}, + [I(188,40)] = {64,0}, + [I(189,40)] = {X32,0xFFFF97FA}, + [I(190,40)] = {X32,0xFFFF9BFA}, + [I(191,40)] = {64,0}, + [I(192,40)] = {64,0}, + [I(193,40)] = {64,0}, + [I(194,40)] = {30,0x3FFFAFFA}, + [I(195,40)] = {29,0x1FFFC7FA}, + [I(196,40)] = {X32,0xFFFF9FFA}, + [I(197,40)] = {64,0}, + [I(198,40)] = {X32,0xFFFFA3FA}, + [I(199,40)] = {64,0}, + [I(200,40)] = {64,0}, + [I(201,40)] = {64,0}, + [I(202,40)] = {64,0}, + [I(203,40)] = {64,0}, + [I(204,40)] = {64,0}, + [I(205,40)] = {64,0}, + [I(206,40)] = {64,0}, + [I(207,40)] = {64,0}, + [I(208,40)] = {29,0x1FFFCBFA}, + [I(209,40)] = {31,0x7FFF8FFA}, + [I(210,40)] = {64,0}, + [I(211,40)] = {64,0}, + [I(212,40)] = {64,0}, + [I(213,40)] = {64,0}, + [I(214,40)] = {64,0}, + [I(215,40)] = {64,0}, + [I(216,40)] = {31,0x7FFF93FA}, + [I(217,40)] = {31,0x7FFF97FA}, + [I(218,40)] = {64,0}, + [I(219,40)] = {64,0}, + [I(220,40)] = {64,0}, + [I(221,40)] = {64,0}, + [I(222,40)] = {64,0}, + [I(223,40)] = {64,0}, + [I(224,40)] = {30,0x3FFFB3FA}, + [I(225,40)] = {64,0}, + [I(226,40)] = {30,0x3FFFB7FA}, + [I(227,40)] = {31,0x7FFF9BFA}, + [I(228,40)] = {X32,0xFFFFA7FA}, + [I(229,40)] = {31,0x7FFF9FFA}, + [I(230,40)] = {31,0x7FFFA3FA}, + [I(231,40)] = {64,0}, + [I(232,40)] = {X32,0xFFFFABFA}, + [I(233,40)] = {X32,0xFFFFAFFA}, + [I(234,40)] = {64,0}, + [I(235,40)] = {64,0}, + [I(236,40)] = {64,0}, + [I(237,40)] = {64,0}, + [I(238,40)] = {64,0}, + [I(239,40)] = {64,0}, + [I(240,40)] = {64,0}, + [I(241,40)] = {64,0}, + [I(242,40)] = {64,0}, + [I(243,40)] = {64,0}, + [I(244,40)] = {64,0}, + [I(245,40)] = {64,0}, + [I(246,40)] = {64,0}, + [I(247,40)] = {64,0}, + [I(248,40)] = {64,0}, + [I(249,40)] = {64,0}, + [I(250,40)] = {64,0}, + [I(251,40)] = {64,0}, + [I(252,40)] = {64,0}, + [I(253,40)] = {64,0}, + [I(254,40)] = {64,0}, + [I(255,40)] = {64,0}, + [I(0,41)] = {23,0x7FE3FB}, + [I(1,41)] = {64,0}, + [I(2,41)] = {64,0}, + [I(3,41)] = {64,0}, + [I(4,41)] = {64,0}, + [I(5,41)] = {64,0}, + [I(6,41)] = {64,0}, + [I(7,41)] = {64,0}, + [I(8,41)] = {64,0}, + [I(9,41)] = {64,0}, + [I(10,41)] = {64,0}, + [I(11,41)] = {64,0}, + [I(12,41)] = {64,0}, + [I(13,41)] = {64,0}, + [I(14,41)] = {64,0}, + [I(15,41)] = {64,0}, + [I(16,41)] = {64,0}, + [I(17,41)] = {64,0}, + [I(18,41)] = {64,0}, + [I(19,41)] = {64,0}, + [I(20,41)] = {64,0}, + [I(21,41)] = {64,0}, + [I(22,41)] = {64,0}, + [I(23,41)] = {64,0}, + [I(24,41)] = {64,0}, + [I(25,41)] = {64,0}, + [I(26,41)] = {64,0}, + [I(27,41)] = {64,0}, + [I(28,41)] = {64,0}, + [I(29,41)] = {64,0}, + [I(30,41)] = {64,0}, + [I(31,41)] = {64,0}, + [I(32,41)] = {16,0x53FB}, + [I(33,41)] = {20,0xFE3FB}, + [I(34,41)] = {20,0xFE7FB}, + [I(35,41)] = {22,0x3FEBFB}, + [I(36,41)] = {23,0x7FE7FB}, + [I(37,41)] = {16,0x57FB}, + [I(38,41)] = {18,0x3E3FB}, + [I(39,41)] = {21,0x1FEBFB}, + [I(40,41)] = {20,0xFEBFB}, + [I(41,41)] = {20,0xFEFFB}, + [I(42,41)] = {18,0x3E7FB}, + [I(43,41)] = {21,0x1FEFFB}, + [I(44,41)] = {18,0x3EBFB}, + [I(45,41)] = {16,0x5BFB}, + [I(46,41)] = {16,0x5FFB}, + [I(47,41)] = {16,0x63FB}, + [I(48,41)] = {15,0x3FB}, + [I(49,41)] = {15,0x7FB}, + [I(50,41)] = {15,0xBFB}, + [I(51,41)] = {16,0x67FB}, + [I(52,41)] = {16,0x6BFB}, + [I(53,41)] = {16,0x6FFB}, + [I(54,41)] = {16,0x73FB}, + [I(55,41)] = {16,0x77FB}, + [I(56,41)] = {16,0x7BFB}, + [I(57,41)] = {16,0x7FFB}, + [I(58,41)] = {17,0x173FB}, + [I(59,41)] = {18,0x3EFFB}, + [I(60,41)] = {25,0x1FFF3FB}, + [I(61,41)] = {16,0x83FB}, + [I(62,41)] = {22,0x3FEFFB}, + [I(63,41)] = {20,0xFF3FB}, + [I(64,41)] = {23,0x7FEBFB}, + [I(65,41)] = {16,0x87FB}, + [I(66,41)] = {17,0x177FB}, + [I(67,41)] = {17,0x17BFB}, + [I(68,41)] = {17,0x17FFB}, + [I(69,41)] = {17,0x183FB}, + [I(70,41)] = {17,0x187FB}, + [I(71,41)] = {17,0x18BFB}, + [I(72,41)] = {17,0x18FFB}, + [I(73,41)] = {17,0x193FB}, + [I(74,41)] = {17,0x197FB}, + [I(75,41)] = {17,0x19BFB}, + [I(76,41)] = {17,0x19FFB}, + [I(77,41)] = {17,0x1A3FB}, + [I(78,41)] = {17,0x1A7FB}, + [I(79,41)] = {17,0x1ABFB}, + [I(80,41)] = {17,0x1AFFB}, + [I(81,41)] = {17,0x1B3FB}, + [I(82,41)] = {17,0x1B7FB}, + [I(83,41)] = {17,0x1BBFB}, + [I(84,41)] = {17,0x1BFFB}, + [I(85,41)] = {17,0x1C3FB}, + [I(86,41)] = {17,0x1C7FB}, + [I(87,41)] = {17,0x1CBFB}, + [I(88,41)] = {18,0x3F3FB}, + [I(89,41)] = {17,0x1CFFB}, + [I(90,41)] = {18,0x3F7FB}, + [I(91,41)] = {23,0x7FEFFB}, + [I(92,41)] = {29,0x1FFFC3FB}, + [I(93,41)] = {23,0x7FF3FB}, + [I(94,41)] = {24,0xFFF3FB}, + [I(95,41)] = {16,0x8BFB}, + [I(96,41)] = {25,0x1FFF7FB}, + [I(97,41)] = {15,0xFFB}, + [I(98,41)] = {16,0x8FFB}, + [I(99,41)] = {15,0x13FB}, + [I(100,41)] = {16,0x93FB}, + [I(101,41)] = {15,0x17FB}, + [I(102,41)] = {16,0x97FB}, + [I(103,41)] = {16,0x9BFB}, + [I(104,41)] = {16,0x9FFB}, + [I(105,41)] = {15,0x1BFB}, + [I(106,41)] = {17,0x1D3FB}, + [I(107,41)] = {17,0x1D7FB}, + [I(108,41)] = {16,0xA3FB}, + [I(109,41)] = {16,0xA7FB}, + [I(110,41)] = {16,0xABFB}, + [I(111,41)] = {15,0x1FFB}, + [I(112,41)] = {16,0xAFFB}, + [I(113,41)] = {17,0x1DBFB}, + [I(114,41)] = {16,0xB3FB}, + [I(115,41)] = {15,0x23FB}, + [I(116,41)] = {15,0x27FB}, + [I(117,41)] = {16,0xB7FB}, + [I(118,41)] = {17,0x1DFFB}, + [I(119,41)] = {17,0x1E3FB}, + [I(120,41)] = {17,0x1E7FB}, + [I(121,41)] = {17,0x1EBFB}, + [I(122,41)] = {17,0x1EFFB}, + [I(123,41)] = {25,0x1FFFBFB}, + [I(124,41)] = {21,0x1FF3FB}, + [I(125,41)] = {24,0xFFF7FB}, + [I(126,41)] = {23,0x7FF7FB}, + [I(127,41)] = {64,0}, + [I(128,41)] = {30,0x3FFF9BFB}, + [I(129,41)] = {X32,0xFFFF4BFB}, + [I(130,41)] = {30,0x3FFF9FFB}, + [I(131,41)] = {30,0x3FFFA3FB}, + [I(132,41)] = {X32,0xFFFF4FFB}, + [I(133,41)] = {X32,0xFFFF53FB}, + [I(134,41)] = {X32,0xFFFF57FB}, + [I(135,41)] = {64,0}, + [I(136,41)] = {X32,0xFFFF5BFB}, + [I(137,41)] = {64,0}, + [I(138,41)] = {64,0}, + [I(139,41)] = {64,0}, + [I(140,41)] = {64,0}, + [I(141,41)] = {64,0}, + [I(142,41)] = {64,0}, + [I(143,41)] = {64,0}, + [I(144,41)] = {64,0}, + [I(145,41)] = {64,0}, + [I(146,41)] = {X32,0xFFFF5FFB}, + [I(147,41)] = {64,0}, + [I(148,41)] = {64,0}, + [I(149,41)] = {64,0}, + [I(150,41)] = {64,0}, + [I(151,41)] = {64,0}, + [I(152,41)] = {64,0}, + [I(153,41)] = {31,0x7FFF73FB}, + [I(154,41)] = {X32,0xFFFF63FB}, + [I(155,41)] = {64,0}, + [I(156,41)] = {X32,0xFFFF67FB}, + [I(157,41)] = {64,0}, + [I(158,41)] = {64,0}, + [I(159,41)] = {64,0}, + [I(160,41)] = {X32,0xFFFF6BFB}, + [I(161,41)] = {31,0x7FFF77FB}, + [I(162,41)] = {30,0x3FFFA7FB}, + [I(163,41)] = {X32,0xFFFF6FFB}, + [I(164,41)] = {X32,0xFFFF73FB}, + [I(165,41)] = {64,0}, + [I(166,41)] = {64,0}, + [I(167,41)] = {31,0x7FFF7BFB}, + [I(168,41)] = {64,0}, + [I(169,41)] = {X32,0xFFFF77FB}, + [I(170,41)] = {X32,0xFFFF7BFB}, + [I(171,41)] = {64,0}, + [I(172,41)] = {31,0x7FFF7FFB}, + [I(173,41)] = {X32,0xFFFF7FFB}, + [I(174,41)] = {64,0}, + [I(175,41)] = {64,0}, + [I(176,41)] = {31,0x7FFF83FB}, + [I(177,41)] = {31,0x7FFF87FB}, + [I(178,41)] = {X32,0xFFFF83FB}, + [I(179,41)] = {31,0x7FFF8BFB}, + [I(180,41)] = {64,0}, + [I(181,41)] = {X32,0xFFFF87FB}, + [I(182,41)] = {64,0}, + [I(183,41)] = {64,0}, + [I(184,41)] = {30,0x3FFFABFB}, + [I(185,41)] = {X32,0xFFFF8BFB}, + [I(186,41)] = {X32,0xFFFF8FFB}, + [I(187,41)] = {X32,0xFFFF93FB}, + [I(188,41)] = {64,0}, + [I(189,41)] = {X32,0xFFFF97FB}, + [I(190,41)] = {X32,0xFFFF9BFB}, + [I(191,41)] = {64,0}, + [I(192,41)] = {64,0}, + [I(193,41)] = {64,0}, + [I(194,41)] = {30,0x3FFFAFFB}, + [I(195,41)] = {29,0x1FFFC7FB}, + [I(196,41)] = {X32,0xFFFF9FFB}, + [I(197,41)] = {64,0}, + [I(198,41)] = {X32,0xFFFFA3FB}, + [I(199,41)] = {64,0}, + [I(200,41)] = {64,0}, + [I(201,41)] = {64,0}, + [I(202,41)] = {64,0}, + [I(203,41)] = {64,0}, + [I(204,41)] = {64,0}, + [I(205,41)] = {64,0}, + [I(206,41)] = {64,0}, + [I(207,41)] = {64,0}, + [I(208,41)] = {29,0x1FFFCBFB}, + [I(209,41)] = {31,0x7FFF8FFB}, + [I(210,41)] = {64,0}, + [I(211,41)] = {64,0}, + [I(212,41)] = {64,0}, + [I(213,41)] = {64,0}, + [I(214,41)] = {64,0}, + [I(215,41)] = {64,0}, + [I(216,41)] = {31,0x7FFF93FB}, + [I(217,41)] = {31,0x7FFF97FB}, + [I(218,41)] = {64,0}, + [I(219,41)] = {64,0}, + [I(220,41)] = {64,0}, + [I(221,41)] = {64,0}, + [I(222,41)] = {64,0}, + [I(223,41)] = {64,0}, + [I(224,41)] = {30,0x3FFFB3FB}, + [I(225,41)] = {64,0}, + [I(226,41)] = {30,0x3FFFB7FB}, + [I(227,41)] = {31,0x7FFF9BFB}, + [I(228,41)] = {X32,0xFFFFA7FB}, + [I(229,41)] = {31,0x7FFF9FFB}, + [I(230,41)] = {31,0x7FFFA3FB}, + [I(231,41)] = {64,0}, + [I(232,41)] = {X32,0xFFFFABFB}, + [I(233,41)] = {X32,0xFFFFAFFB}, + [I(234,41)] = {64,0}, + [I(235,41)] = {64,0}, + [I(236,41)] = {64,0}, + [I(237,41)] = {64,0}, + [I(238,41)] = {64,0}, + [I(239,41)] = {64,0}, + [I(240,41)] = {64,0}, + [I(241,41)] = {64,0}, + [I(242,41)] = {64,0}, + [I(243,41)] = {64,0}, + [I(244,41)] = {64,0}, + [I(245,41)] = {64,0}, + [I(246,41)] = {64,0}, + [I(247,41)] = {64,0}, + [I(248,41)] = {64,0}, + [I(249,41)] = {64,0}, + [I(250,41)] = {64,0}, + [I(251,41)] = {64,0}, + [I(252,41)] = {64,0}, + [I(253,41)] = {64,0}, + [I(254,41)] = {64,0}, + [I(255,41)] = {64,0}, + [I(0,42)] = {21,0x1FF8F9}, + [I(1,42)] = {31,0x7FFFD8F9}, + [I(2,42)] = {64,0}, + [I(3,42)] = {64,0}, + [I(4,42)] = {64,0}, + [I(5,42)] = {64,0}, + [I(6,42)] = {64,0}, + [I(7,42)] = {64,0}, + [I(8,42)] = {64,0}, + [I(9,42)] = {X32,0xFFFFEAF9}, + [I(10,42)] = {64,0}, + [I(11,42)] = {64,0}, + [I(12,42)] = {64,0}, + [I(13,42)] = {64,0}, + [I(14,42)] = {64,0}, + [I(15,42)] = {64,0}, + [I(16,42)] = {64,0}, + [I(17,42)] = {64,0}, + [I(18,42)] = {64,0}, + [I(19,42)] = {64,0}, + [I(20,42)] = {64,0}, + [I(21,42)] = {64,0}, + [I(22,42)] = {64,0}, + [I(23,42)] = {64,0}, + [I(24,42)] = {64,0}, + [I(25,42)] = {64,0}, + [I(26,42)] = {64,0}, + [I(27,42)] = {64,0}, + [I(28,42)] = {64,0}, + [I(29,42)] = {64,0}, + [I(30,42)] = {64,0}, + [I(31,42)] = {64,0}, + [I(32,42)] = {14,0x14F9}, + [I(33,42)] = {18,0x3F8F9}, + [I(34,42)] = {18,0x3F9F9}, + [I(35,42)] = {20,0xFFAF9}, + [I(36,42)] = {21,0x1FF9F9}, + [I(37,42)] = {14,0x15F9}, + [I(38,42)] = {16,0xF8F9}, + [I(39,42)] = {19,0x7FAF9}, + [I(40,42)] = {18,0x3FAF9}, + [I(41,42)] = {18,0x3FBF9}, + [I(42,42)] = {16,0xF9F9}, + [I(43,42)] = {19,0x7FBF9}, + [I(44,42)] = {16,0xFAF9}, + [I(45,42)] = {14,0x16F9}, + [I(46,42)] = {14,0x17F9}, + [I(47,42)] = {14,0x18F9}, + [I(48,42)] = {13,0xF9}, + [I(49,42)] = {13,0x1F9}, + [I(50,42)] = {13,0x2F9}, + [I(51,42)] = {14,0x19F9}, + [I(52,42)] = {14,0x1AF9}, + [I(53,42)] = {14,0x1BF9}, + [I(54,42)] = {14,0x1CF9}, + [I(55,42)] = {14,0x1DF9}, + [I(56,42)] = {14,0x1EF9}, + [I(57,42)] = {14,0x1FF9}, + [I(58,42)] = {15,0x5CF9}, + [I(59,42)] = {16,0xFBF9}, + [I(60,42)] = {23,0x7FFCF9}, + [I(61,42)] = {14,0x20F9}, + [I(62,42)] = {20,0xFFBF9}, + [I(63,42)] = {18,0x3FCF9}, + [I(64,42)] = {21,0x1FFAF9}, + [I(65,42)] = {14,0x21F9}, + [I(66,42)] = {15,0x5DF9}, + [I(67,42)] = {15,0x5EF9}, + [I(68,42)] = {15,0x5FF9}, + [I(69,42)] = {15,0x60F9}, + [I(70,42)] = {15,0x61F9}, + [I(71,42)] = {15,0x62F9}, + [I(72,42)] = {15,0x63F9}, + [I(73,42)] = {15,0x64F9}, + [I(74,42)] = {15,0x65F9}, + [I(75,42)] = {15,0x66F9}, + [I(76,42)] = {15,0x67F9}, + [I(77,42)] = {15,0x68F9}, + [I(78,42)] = {15,0x69F9}, + [I(79,42)] = {15,0x6AF9}, + [I(80,42)] = {15,0x6BF9}, + [I(81,42)] = {15,0x6CF9}, + [I(82,42)] = {15,0x6DF9}, + [I(83,42)] = {15,0x6EF9}, + [I(84,42)] = {15,0x6FF9}, + [I(85,42)] = {15,0x70F9}, + [I(86,42)] = {15,0x71F9}, + [I(87,42)] = {15,0x72F9}, + [I(88,42)] = {16,0xFCF9}, + [I(89,42)] = {15,0x73F9}, + [I(90,42)] = {16,0xFDF9}, + [I(91,42)] = {21,0x1FFBF9}, + [I(92,42)] = {27,0x7FFF0F9}, + [I(93,42)] = {21,0x1FFCF9}, + [I(94,42)] = {22,0x3FFCF9}, + [I(95,42)] = {14,0x22F9}, + [I(96,42)] = {23,0x7FFDF9}, + [I(97,42)] = {13,0x3F9}, + [I(98,42)] = {14,0x23F9}, + [I(99,42)] = {13,0x4F9}, + [I(100,42)] = {14,0x24F9}, + [I(101,42)] = {13,0x5F9}, + [I(102,42)] = {14,0x25F9}, + [I(103,42)] = {14,0x26F9}, + [I(104,42)] = {14,0x27F9}, + [I(105,42)] = {13,0x6F9}, + [I(106,42)] = {15,0x74F9}, + [I(107,42)] = {15,0x75F9}, + [I(108,42)] = {14,0x28F9}, + [I(109,42)] = {14,0x29F9}, + [I(110,42)] = {14,0x2AF9}, + [I(111,42)] = {13,0x7F9}, + [I(112,42)] = {14,0x2BF9}, + [I(113,42)] = {15,0x76F9}, + [I(114,42)] = {14,0x2CF9}, + [I(115,42)] = {13,0x8F9}, + [I(116,42)] = {13,0x9F9}, + [I(117,42)] = {14,0x2DF9}, + [I(118,42)] = {15,0x77F9}, + [I(119,42)] = {15,0x78F9}, + [I(120,42)] = {15,0x79F9}, + [I(121,42)] = {15,0x7AF9}, + [I(122,42)] = {15,0x7BF9}, + [I(123,42)] = {23,0x7FFEF9}, + [I(124,42)] = {19,0x7FCF9}, + [I(125,42)] = {22,0x3FFDF9}, + [I(126,42)] = {21,0x1FFDF9}, + [I(127,42)] = {64,0}, + [I(128,42)] = {28,0xFFFE6F9}, + [I(129,42)] = {30,0x3FFFD2F9}, + [I(130,42)] = {28,0xFFFE7F9}, + [I(131,42)] = {28,0xFFFE8F9}, + [I(132,42)] = {30,0x3FFFD3F9}, + [I(133,42)] = {30,0x3FFFD4F9}, + [I(134,42)] = {30,0x3FFFD5F9}, + [I(135,42)] = {31,0x7FFFD9F9}, + [I(136,42)] = {30,0x3FFFD6F9}, + [I(137,42)] = {31,0x7FFFDAF9}, + [I(138,42)] = {31,0x7FFFDBF9}, + [I(139,42)] = {31,0x7FFFDCF9}, + [I(140,42)] = {31,0x7FFFDDF9}, + [I(141,42)] = {31,0x7FFFDEF9}, + [I(142,42)] = {X32,0xFFFFEBF9}, + [I(143,42)] = {31,0x7FFFDFF9}, + [I(144,42)] = {X32,0xFFFFECF9}, + [I(145,42)] = {X32,0xFFFFEDF9}, + [I(146,42)] = {30,0x3FFFD7F9}, + [I(147,42)] = {31,0x7FFFE0F9}, + [I(148,42)] = {X32,0xFFFFEEF9}, + [I(149,42)] = {31,0x7FFFE1F9}, + [I(150,42)] = {31,0x7FFFE2F9}, + [I(151,42)] = {31,0x7FFFE3F9}, + [I(152,42)] = {31,0x7FFFE4F9}, + [I(153,42)] = {29,0x1FFFDCF9}, + [I(154,42)] = {30,0x3FFFD8F9}, + [I(155,42)] = {31,0x7FFFE5F9}, + [I(156,42)] = {30,0x3FFFD9F9}, + [I(157,42)] = {31,0x7FFFE6F9}, + [I(158,42)] = {31,0x7FFFE7F9}, + [I(159,42)] = {X32,0xFFFFEFF9}, + [I(160,42)] = {30,0x3FFFDAF9}, + [I(161,42)] = {29,0x1FFFDDF9}, + [I(162,42)] = {28,0xFFFE9F9}, + [I(163,42)] = {30,0x3FFFDBF9}, + [I(164,42)] = {30,0x3FFFDCF9}, + [I(165,42)] = {31,0x7FFFE8F9}, + [I(166,42)] = {31,0x7FFFE9F9}, + [I(167,42)] = {29,0x1FFFDEF9}, + [I(168,42)] = {31,0x7FFFEAF9}, + [I(169,42)] = {30,0x3FFFDDF9}, + [I(170,42)] = {30,0x3FFFDEF9}, + [I(171,42)] = {X32,0xFFFFF0F9}, + [I(172,42)] = {29,0x1FFFDFF9}, + [I(173,42)] = {30,0x3FFFDFF9}, + [I(174,42)] = {31,0x7FFFEBF9}, + [I(175,42)] = {31,0x7FFFECF9}, + [I(176,42)] = {29,0x1FFFE0F9}, + [I(177,42)] = {29,0x1FFFE1F9}, + [I(178,42)] = {30,0x3FFFE0F9}, + [I(179,42)] = {29,0x1FFFE2F9}, + [I(180,42)] = {31,0x7FFFEDF9}, + [I(181,42)] = {30,0x3FFFE1F9}, + [I(182,42)] = {31,0x7FFFEEF9}, + [I(183,42)] = {31,0x7FFFEFF9}, + [I(184,42)] = {28,0xFFFEAF9}, + [I(185,42)] = {30,0x3FFFE2F9}, + [I(186,42)] = {30,0x3FFFE3F9}, + [I(187,42)] = {30,0x3FFFE4F9}, + [I(188,42)] = {31,0x7FFFF0F9}, + [I(189,42)] = {30,0x3FFFE5F9}, + [I(190,42)] = {30,0x3FFFE6F9}, + [I(191,42)] = {31,0x7FFFF1F9}, + [I(192,42)] = {64,0}, + [I(193,42)] = {64,0}, + [I(194,42)] = {28,0xFFFEBF9}, + [I(195,42)] = {27,0x7FFF1F9}, + [I(196,42)] = {30,0x3FFFE7F9}, + [I(197,42)] = {31,0x7FFFF2F9}, + [I(198,42)] = {30,0x3FFFE8F9}, + [I(199,42)] = {64,0}, + [I(200,42)] = {64,0}, + [I(201,42)] = {64,0}, + [I(202,42)] = {64,0}, + [I(203,42)] = {64,0}, + [I(204,42)] = {64,0}, + [I(205,42)] = {64,0}, + [I(206,42)] = {X32,0xFFFFF1F9}, + [I(207,42)] = {64,0}, + [I(208,42)] = {27,0x7FFF2F9}, + [I(209,42)] = {29,0x1FFFE3F9}, + [I(210,42)] = {64,0}, + [I(211,42)] = {64,0}, + [I(212,42)] = {64,0}, + [I(213,42)] = {64,0}, + [I(214,42)] = {64,0}, + [I(215,42)] = {X32,0xFFFFF2F9}, + [I(216,42)] = {29,0x1FFFE4F9}, + [I(217,42)] = {29,0x1FFFE5F9}, + [I(218,42)] = {64,0}, + [I(219,42)] = {64,0}, + [I(220,42)] = {64,0}, + [I(221,42)] = {64,0}, + [I(222,42)] = {64,0}, + [I(223,42)] = {64,0}, + [I(224,42)] = {28,0xFFFECF9}, + [I(225,42)] = {X32,0xFFFFF3F9}, + [I(226,42)] = {28,0xFFFEDF9}, + [I(227,42)] = {29,0x1FFFE6F9}, + [I(228,42)] = {30,0x3FFFE9F9}, + [I(229,42)] = {29,0x1FFFE7F9}, + [I(230,42)] = {29,0x1FFFE8F9}, + [I(231,42)] = {31,0x7FFFF3F9}, + [I(232,42)] = {30,0x3FFFEAF9}, + [I(233,42)] = {30,0x3FFFEBF9}, + [I(234,42)] = {64,0}, + [I(235,42)] = {64,0}, + [I(236,42)] = {X32,0xFFFFF4F9}, + [I(237,42)] = {X32,0xFFFFF5F9}, + [I(238,42)] = {64,0}, + [I(239,42)] = {31,0x7FFFF4F9}, + [I(240,42)] = {64,0}, + [I(241,42)] = {64,0}, + [I(242,42)] = {64,0}, + [I(243,42)] = {64,0}, + [I(244,42)] = {64,0}, + [I(245,42)] = {64,0}, + [I(246,42)] = {64,0}, + [I(247,42)] = {64,0}, + [I(248,42)] = {64,0}, + [I(249,42)] = {64,0}, + [I(250,42)] = {64,0}, + [I(251,42)] = {64,0}, + [I(252,42)] = {64,0}, + [I(253,42)] = {64,0}, + [I(254,42)] = {64,0}, + [I(255,42)] = {64,0}, + [I(0,43)] = {24,0xFFC7FB}, + [I(1,43)] = {64,0}, + [I(2,43)] = {64,0}, + [I(3,43)] = {64,0}, + [I(4,43)] = {64,0}, + [I(5,43)] = {64,0}, + [I(6,43)] = {64,0}, + [I(7,43)] = {64,0}, + [I(8,43)] = {64,0}, + [I(9,43)] = {64,0}, + [I(10,43)] = {64,0}, + [I(11,43)] = {64,0}, + [I(12,43)] = {64,0}, + [I(13,43)] = {64,0}, + [I(14,43)] = {64,0}, + [I(15,43)] = {64,0}, + [I(16,43)] = {64,0}, + [I(17,43)] = {64,0}, + [I(18,43)] = {64,0}, + [I(19,43)] = {64,0}, + [I(20,43)] = {64,0}, + [I(21,43)] = {64,0}, + [I(22,43)] = {64,0}, + [I(23,43)] = {64,0}, + [I(24,43)] = {64,0}, + [I(25,43)] = {64,0}, + [I(26,43)] = {64,0}, + [I(27,43)] = {64,0}, + [I(28,43)] = {64,0}, + [I(29,43)] = {64,0}, + [I(30,43)] = {64,0}, + [I(31,43)] = {64,0}, + [I(32,43)] = {17,0xA7FB}, + [I(33,43)] = {21,0x1FC7FB}, + [I(34,43)] = {21,0x1FCFFB}, + [I(35,43)] = {23,0x7FD7FB}, + [I(36,43)] = {24,0xFFCFFB}, + [I(37,43)] = {17,0xAFFB}, + [I(38,43)] = {19,0x7C7FB}, + [I(39,43)] = {22,0x3FD7FB}, + [I(40,43)] = {21,0x1FD7FB}, + [I(41,43)] = {21,0x1FDFFB}, + [I(42,43)] = {19,0x7CFFB}, + [I(43,43)] = {22,0x3FDFFB}, + [I(44,43)] = {19,0x7D7FB}, + [I(45,43)] = {17,0xB7FB}, + [I(46,43)] = {17,0xBFFB}, + [I(47,43)] = {17,0xC7FB}, + [I(48,43)] = {16,0x7FB}, + [I(49,43)] = {16,0xFFB}, + [I(50,43)] = {16,0x17FB}, + [I(51,43)] = {17,0xCFFB}, + [I(52,43)] = {17,0xD7FB}, + [I(53,43)] = {17,0xDFFB}, + [I(54,43)] = {17,0xE7FB}, + [I(55,43)] = {17,0xEFFB}, + [I(56,43)] = {17,0xF7FB}, + [I(57,43)] = {17,0xFFFB}, + [I(58,43)] = {18,0x2E7FB}, + [I(59,43)] = {19,0x7DFFB}, + [I(60,43)] = {26,0x3FFE7FB}, + [I(61,43)] = {17,0x107FB}, + [I(62,43)] = {23,0x7FDFFB}, + [I(63,43)] = {21,0x1FE7FB}, + [I(64,43)] = {24,0xFFD7FB}, + [I(65,43)] = {17,0x10FFB}, + [I(66,43)] = {18,0x2EFFB}, + [I(67,43)] = {18,0x2F7FB}, + [I(68,43)] = {18,0x2FFFB}, + [I(69,43)] = {18,0x307FB}, + [I(70,43)] = {18,0x30FFB}, + [I(71,43)] = {18,0x317FB}, + [I(72,43)] = {18,0x31FFB}, + [I(73,43)] = {18,0x327FB}, + [I(74,43)] = {18,0x32FFB}, + [I(75,43)] = {18,0x337FB}, + [I(76,43)] = {18,0x33FFB}, + [I(77,43)] = {18,0x347FB}, + [I(78,43)] = {18,0x34FFB}, + [I(79,43)] = {18,0x357FB}, + [I(80,43)] = {18,0x35FFB}, + [I(81,43)] = {18,0x367FB}, + [I(82,43)] = {18,0x36FFB}, + [I(83,43)] = {18,0x377FB}, + [I(84,43)] = {18,0x37FFB}, + [I(85,43)] = {18,0x387FB}, + [I(86,43)] = {18,0x38FFB}, + [I(87,43)] = {18,0x397FB}, + [I(88,43)] = {19,0x7E7FB}, + [I(89,43)] = {18,0x39FFB}, + [I(90,43)] = {19,0x7EFFB}, + [I(91,43)] = {24,0xFFDFFB}, + [I(92,43)] = {30,0x3FFF87FB}, + [I(93,43)] = {24,0xFFE7FB}, + [I(94,43)] = {25,0x1FFE7FB}, + [I(95,43)] = {17,0x117FB}, + [I(96,43)] = {26,0x3FFEFFB}, + [I(97,43)] = {16,0x1FFB}, + [I(98,43)] = {17,0x11FFB}, + [I(99,43)] = {16,0x27FB}, + [I(100,43)] = {17,0x127FB}, + [I(101,43)] = {16,0x2FFB}, + [I(102,43)] = {17,0x12FFB}, + [I(103,43)] = {17,0x137FB}, + [I(104,43)] = {17,0x13FFB}, + [I(105,43)] = {16,0x37FB}, + [I(106,43)] = {18,0x3A7FB}, + [I(107,43)] = {18,0x3AFFB}, + [I(108,43)] = {17,0x147FB}, + [I(109,43)] = {17,0x14FFB}, + [I(110,43)] = {17,0x157FB}, + [I(111,43)] = {16,0x3FFB}, + [I(112,43)] = {17,0x15FFB}, + [I(113,43)] = {18,0x3B7FB}, + [I(114,43)] = {17,0x167FB}, + [I(115,43)] = {16,0x47FB}, + [I(116,43)] = {16,0x4FFB}, + [I(117,43)] = {17,0x16FFB}, + [I(118,43)] = {18,0x3BFFB}, + [I(119,43)] = {18,0x3C7FB}, + [I(120,43)] = {18,0x3CFFB}, + [I(121,43)] = {18,0x3D7FB}, + [I(122,43)] = {18,0x3DFFB}, + [I(123,43)] = {26,0x3FFF7FB}, + [I(124,43)] = {22,0x3FE7FB}, + [I(125,43)] = {25,0x1FFEFFB}, + [I(126,43)] = {24,0xFFEFFB}, + [I(127,43)] = {64,0}, + [I(128,43)] = {31,0x7FFF37FB}, + [I(129,43)] = {64,0}, + [I(130,43)] = {31,0x7FFF3FFB}, + [I(131,43)] = {31,0x7FFF47FB}, + [I(132,43)] = {64,0}, + [I(133,43)] = {64,0}, + [I(134,43)] = {64,0}, + [I(135,43)] = {64,0}, + [I(136,43)] = {64,0}, + [I(137,43)] = {64,0}, + [I(138,43)] = {64,0}, + [I(139,43)] = {64,0}, + [I(140,43)] = {64,0}, + [I(141,43)] = {64,0}, + [I(142,43)] = {64,0}, + [I(143,43)] = {64,0}, + [I(144,43)] = {64,0}, + [I(145,43)] = {64,0}, + [I(146,43)] = {64,0}, + [I(147,43)] = {64,0}, + [I(148,43)] = {64,0}, + [I(149,43)] = {64,0}, + [I(150,43)] = {64,0}, + [I(151,43)] = {64,0}, + [I(152,43)] = {64,0}, + [I(153,43)] = {X32,0xFFFEE7FB}, + [I(154,43)] = {64,0}, + [I(155,43)] = {64,0}, + [I(156,43)] = {64,0}, + [I(157,43)] = {64,0}, + [I(158,43)] = {64,0}, + [I(159,43)] = {64,0}, + [I(160,43)] = {64,0}, + [I(161,43)] = {X32,0xFFFEEFFB}, + [I(162,43)] = {31,0x7FFF4FFB}, + [I(163,43)] = {64,0}, + [I(164,43)] = {64,0}, + [I(165,43)] = {64,0}, + [I(166,43)] = {64,0}, + [I(167,43)] = {X32,0xFFFEF7FB}, + [I(168,43)] = {64,0}, + [I(169,43)] = {64,0}, + [I(170,43)] = {64,0}, + [I(171,43)] = {64,0}, + [I(172,43)] = {X32,0xFFFEFFFB}, + [I(173,43)] = {64,0}, + [I(174,43)] = {64,0}, + [I(175,43)] = {64,0}, + [I(176,43)] = {X32,0xFFFF07FB}, + [I(177,43)] = {X32,0xFFFF0FFB}, + [I(178,43)] = {64,0}, + [I(179,43)] = {X32,0xFFFF17FB}, + [I(180,43)] = {64,0}, + [I(181,43)] = {64,0}, + [I(182,43)] = {64,0}, + [I(183,43)] = {64,0}, + [I(184,43)] = {31,0x7FFF57FB}, + [I(185,43)] = {64,0}, + [I(186,43)] = {64,0}, + [I(187,43)] = {64,0}, + [I(188,43)] = {64,0}, + [I(189,43)] = {64,0}, + [I(190,43)] = {64,0}, + [I(191,43)] = {64,0}, + [I(192,43)] = {64,0}, + [I(193,43)] = {64,0}, + [I(194,43)] = {31,0x7FFF5FFB}, + [I(195,43)] = {30,0x3FFF8FFB}, + [I(196,43)] = {64,0}, + [I(197,43)] = {64,0}, + [I(198,43)] = {64,0}, + [I(199,43)] = {64,0}, + [I(200,43)] = {64,0}, + [I(201,43)] = {64,0}, + [I(202,43)] = {64,0}, + [I(203,43)] = {64,0}, + [I(204,43)] = {64,0}, + [I(205,43)] = {64,0}, + [I(206,43)] = {64,0}, + [I(207,43)] = {64,0}, + [I(208,43)] = {30,0x3FFF97FB}, + [I(209,43)] = {X32,0xFFFF1FFB}, + [I(210,43)] = {64,0}, + [I(211,43)] = {64,0}, + [I(212,43)] = {64,0}, + [I(213,43)] = {64,0}, + [I(214,43)] = {64,0}, + [I(215,43)] = {64,0}, + [I(216,43)] = {X32,0xFFFF27FB}, + [I(217,43)] = {X32,0xFFFF2FFB}, + [I(218,43)] = {64,0}, + [I(219,43)] = {64,0}, + [I(220,43)] = {64,0}, + [I(221,43)] = {64,0}, + [I(222,43)] = {64,0}, + [I(223,43)] = {64,0}, + [I(224,43)] = {31,0x7FFF67FB}, + [I(225,43)] = {64,0}, + [I(226,43)] = {31,0x7FFF6FFB}, + [I(227,43)] = {X32,0xFFFF37FB}, + [I(228,43)] = {64,0}, + [I(229,43)] = {X32,0xFFFF3FFB}, + [I(230,43)] = {X32,0xFFFF47FB}, + [I(231,43)] = {64,0}, + [I(232,43)] = {64,0}, + [I(233,43)] = {64,0}, + [I(234,43)] = {64,0}, + [I(235,43)] = {64,0}, + [I(236,43)] = {64,0}, + [I(237,43)] = {64,0}, + [I(238,43)] = {64,0}, + [I(239,43)] = {64,0}, + [I(240,43)] = {64,0}, + [I(241,43)] = {64,0}, + [I(242,43)] = {64,0}, + [I(243,43)] = {64,0}, + [I(244,43)] = {64,0}, + [I(245,43)] = {64,0}, + [I(246,43)] = {64,0}, + [I(247,43)] = {64,0}, + [I(248,43)] = {64,0}, + [I(249,43)] = {64,0}, + [I(250,43)] = {64,0}, + [I(251,43)] = {64,0}, + [I(252,43)] = {64,0}, + [I(253,43)] = {64,0}, + [I(254,43)] = {64,0}, + [I(255,43)] = {64,0}, + [I(0,44)] = {21,0x1FF8FA}, + [I(1,44)] = {31,0x7FFFD8FA}, + [I(2,44)] = {64,0}, + [I(3,44)] = {64,0}, + [I(4,44)] = {64,0}, + [I(5,44)] = {64,0}, + [I(6,44)] = {64,0}, + [I(7,44)] = {64,0}, + [I(8,44)] = {64,0}, + [I(9,44)] = {X32,0xFFFFEAFA}, + [I(10,44)] = {64,0}, + [I(11,44)] = {64,0}, + [I(12,44)] = {64,0}, + [I(13,44)] = {64,0}, + [I(14,44)] = {64,0}, + [I(15,44)] = {64,0}, + [I(16,44)] = {64,0}, + [I(17,44)] = {64,0}, + [I(18,44)] = {64,0}, + [I(19,44)] = {64,0}, + [I(20,44)] = {64,0}, + [I(21,44)] = {64,0}, + [I(22,44)] = {64,0}, + [I(23,44)] = {64,0}, + [I(24,44)] = {64,0}, + [I(25,44)] = {64,0}, + [I(26,44)] = {64,0}, + [I(27,44)] = {64,0}, + [I(28,44)] = {64,0}, + [I(29,44)] = {64,0}, + [I(30,44)] = {64,0}, + [I(31,44)] = {64,0}, + [I(32,44)] = {14,0x14FA}, + [I(33,44)] = {18,0x3F8FA}, + [I(34,44)] = {18,0x3F9FA}, + [I(35,44)] = {20,0xFFAFA}, + [I(36,44)] = {21,0x1FF9FA}, + [I(37,44)] = {14,0x15FA}, + [I(38,44)] = {16,0xF8FA}, + [I(39,44)] = {19,0x7FAFA}, + [I(40,44)] = {18,0x3FAFA}, + [I(41,44)] = {18,0x3FBFA}, + [I(42,44)] = {16,0xF9FA}, + [I(43,44)] = {19,0x7FBFA}, + [I(44,44)] = {16,0xFAFA}, + [I(45,44)] = {14,0x16FA}, + [I(46,44)] = {14,0x17FA}, + [I(47,44)] = {14,0x18FA}, + [I(48,44)] = {13,0xFA}, + [I(49,44)] = {13,0x1FA}, + [I(50,44)] = {13,0x2FA}, + [I(51,44)] = {14,0x19FA}, + [I(52,44)] = {14,0x1AFA}, + [I(53,44)] = {14,0x1BFA}, + [I(54,44)] = {14,0x1CFA}, + [I(55,44)] = {14,0x1DFA}, + [I(56,44)] = {14,0x1EFA}, + [I(57,44)] = {14,0x1FFA}, + [I(58,44)] = {15,0x5CFA}, + [I(59,44)] = {16,0xFBFA}, + [I(60,44)] = {23,0x7FFCFA}, + [I(61,44)] = {14,0x20FA}, + [I(62,44)] = {20,0xFFBFA}, + [I(63,44)] = {18,0x3FCFA}, + [I(64,44)] = {21,0x1FFAFA}, + [I(65,44)] = {14,0x21FA}, + [I(66,44)] = {15,0x5DFA}, + [I(67,44)] = {15,0x5EFA}, + [I(68,44)] = {15,0x5FFA}, + [I(69,44)] = {15,0x60FA}, + [I(70,44)] = {15,0x61FA}, + [I(71,44)] = {15,0x62FA}, + [I(72,44)] = {15,0x63FA}, + [I(73,44)] = {15,0x64FA}, + [I(74,44)] = {15,0x65FA}, + [I(75,44)] = {15,0x66FA}, + [I(76,44)] = {15,0x67FA}, + [I(77,44)] = {15,0x68FA}, + [I(78,44)] = {15,0x69FA}, + [I(79,44)] = {15,0x6AFA}, + [I(80,44)] = {15,0x6BFA}, + [I(81,44)] = {15,0x6CFA}, + [I(82,44)] = {15,0x6DFA}, + [I(83,44)] = {15,0x6EFA}, + [I(84,44)] = {15,0x6FFA}, + [I(85,44)] = {15,0x70FA}, + [I(86,44)] = {15,0x71FA}, + [I(87,44)] = {15,0x72FA}, + [I(88,44)] = {16,0xFCFA}, + [I(89,44)] = {15,0x73FA}, + [I(90,44)] = {16,0xFDFA}, + [I(91,44)] = {21,0x1FFBFA}, + [I(92,44)] = {27,0x7FFF0FA}, + [I(93,44)] = {21,0x1FFCFA}, + [I(94,44)] = {22,0x3FFCFA}, + [I(95,44)] = {14,0x22FA}, + [I(96,44)] = {23,0x7FFDFA}, + [I(97,44)] = {13,0x3FA}, + [I(98,44)] = {14,0x23FA}, + [I(99,44)] = {13,0x4FA}, + [I(100,44)] = {14,0x24FA}, + [I(101,44)] = {13,0x5FA}, + [I(102,44)] = {14,0x25FA}, + [I(103,44)] = {14,0x26FA}, + [I(104,44)] = {14,0x27FA}, + [I(105,44)] = {13,0x6FA}, + [I(106,44)] = {15,0x74FA}, + [I(107,44)] = {15,0x75FA}, + [I(108,44)] = {14,0x28FA}, + [I(109,44)] = {14,0x29FA}, + [I(110,44)] = {14,0x2AFA}, + [I(111,44)] = {13,0x7FA}, + [I(112,44)] = {14,0x2BFA}, + [I(113,44)] = {15,0x76FA}, + [I(114,44)] = {14,0x2CFA}, + [I(115,44)] = {13,0x8FA}, + [I(116,44)] = {13,0x9FA}, + [I(117,44)] = {14,0x2DFA}, + [I(118,44)] = {15,0x77FA}, + [I(119,44)] = {15,0x78FA}, + [I(120,44)] = {15,0x79FA}, + [I(121,44)] = {15,0x7AFA}, + [I(122,44)] = {15,0x7BFA}, + [I(123,44)] = {23,0x7FFEFA}, + [I(124,44)] = {19,0x7FCFA}, + [I(125,44)] = {22,0x3FFDFA}, + [I(126,44)] = {21,0x1FFDFA}, + [I(127,44)] = {64,0}, + [I(128,44)] = {28,0xFFFE6FA}, + [I(129,44)] = {30,0x3FFFD2FA}, + [I(130,44)] = {28,0xFFFE7FA}, + [I(131,44)] = {28,0xFFFE8FA}, + [I(132,44)] = {30,0x3FFFD3FA}, + [I(133,44)] = {30,0x3FFFD4FA}, + [I(134,44)] = {30,0x3FFFD5FA}, + [I(135,44)] = {31,0x7FFFD9FA}, + [I(136,44)] = {30,0x3FFFD6FA}, + [I(137,44)] = {31,0x7FFFDAFA}, + [I(138,44)] = {31,0x7FFFDBFA}, + [I(139,44)] = {31,0x7FFFDCFA}, + [I(140,44)] = {31,0x7FFFDDFA}, + [I(141,44)] = {31,0x7FFFDEFA}, + [I(142,44)] = {X32,0xFFFFEBFA}, + [I(143,44)] = {31,0x7FFFDFFA}, + [I(144,44)] = {X32,0xFFFFECFA}, + [I(145,44)] = {X32,0xFFFFEDFA}, + [I(146,44)] = {30,0x3FFFD7FA}, + [I(147,44)] = {31,0x7FFFE0FA}, + [I(148,44)] = {X32,0xFFFFEEFA}, + [I(149,44)] = {31,0x7FFFE1FA}, + [I(150,44)] = {31,0x7FFFE2FA}, + [I(151,44)] = {31,0x7FFFE3FA}, + [I(152,44)] = {31,0x7FFFE4FA}, + [I(153,44)] = {29,0x1FFFDCFA}, + [I(154,44)] = {30,0x3FFFD8FA}, + [I(155,44)] = {31,0x7FFFE5FA}, + [I(156,44)] = {30,0x3FFFD9FA}, + [I(157,44)] = {31,0x7FFFE6FA}, + [I(158,44)] = {31,0x7FFFE7FA}, + [I(159,44)] = {X32,0xFFFFEFFA}, + [I(160,44)] = {30,0x3FFFDAFA}, + [I(161,44)] = {29,0x1FFFDDFA}, + [I(162,44)] = {28,0xFFFE9FA}, + [I(163,44)] = {30,0x3FFFDBFA}, + [I(164,44)] = {30,0x3FFFDCFA}, + [I(165,44)] = {31,0x7FFFE8FA}, + [I(166,44)] = {31,0x7FFFE9FA}, + [I(167,44)] = {29,0x1FFFDEFA}, + [I(168,44)] = {31,0x7FFFEAFA}, + [I(169,44)] = {30,0x3FFFDDFA}, + [I(170,44)] = {30,0x3FFFDEFA}, + [I(171,44)] = {X32,0xFFFFF0FA}, + [I(172,44)] = {29,0x1FFFDFFA}, + [I(173,44)] = {30,0x3FFFDFFA}, + [I(174,44)] = {31,0x7FFFEBFA}, + [I(175,44)] = {31,0x7FFFECFA}, + [I(176,44)] = {29,0x1FFFE0FA}, + [I(177,44)] = {29,0x1FFFE1FA}, + [I(178,44)] = {30,0x3FFFE0FA}, + [I(179,44)] = {29,0x1FFFE2FA}, + [I(180,44)] = {31,0x7FFFEDFA}, + [I(181,44)] = {30,0x3FFFE1FA}, + [I(182,44)] = {31,0x7FFFEEFA}, + [I(183,44)] = {31,0x7FFFEFFA}, + [I(184,44)] = {28,0xFFFEAFA}, + [I(185,44)] = {30,0x3FFFE2FA}, + [I(186,44)] = {30,0x3FFFE3FA}, + [I(187,44)] = {30,0x3FFFE4FA}, + [I(188,44)] = {31,0x7FFFF0FA}, + [I(189,44)] = {30,0x3FFFE5FA}, + [I(190,44)] = {30,0x3FFFE6FA}, + [I(191,44)] = {31,0x7FFFF1FA}, + [I(192,44)] = {64,0}, + [I(193,44)] = {64,0}, + [I(194,44)] = {28,0xFFFEBFA}, + [I(195,44)] = {27,0x7FFF1FA}, + [I(196,44)] = {30,0x3FFFE7FA}, + [I(197,44)] = {31,0x7FFFF2FA}, + [I(198,44)] = {30,0x3FFFE8FA}, + [I(199,44)] = {64,0}, + [I(200,44)] = {64,0}, + [I(201,44)] = {64,0}, + [I(202,44)] = {64,0}, + [I(203,44)] = {64,0}, + [I(204,44)] = {64,0}, + [I(205,44)] = {64,0}, + [I(206,44)] = {X32,0xFFFFF1FA}, + [I(207,44)] = {64,0}, + [I(208,44)] = {27,0x7FFF2FA}, + [I(209,44)] = {29,0x1FFFE3FA}, + [I(210,44)] = {64,0}, + [I(211,44)] = {64,0}, + [I(212,44)] = {64,0}, + [I(213,44)] = {64,0}, + [I(214,44)] = {64,0}, + [I(215,44)] = {X32,0xFFFFF2FA}, + [I(216,44)] = {29,0x1FFFE4FA}, + [I(217,44)] = {29,0x1FFFE5FA}, + [I(218,44)] = {64,0}, + [I(219,44)] = {64,0}, + [I(220,44)] = {64,0}, + [I(221,44)] = {64,0}, + [I(222,44)] = {64,0}, + [I(223,44)] = {64,0}, + [I(224,44)] = {28,0xFFFECFA}, + [I(225,44)] = {X32,0xFFFFF3FA}, + [I(226,44)] = {28,0xFFFEDFA}, + [I(227,44)] = {29,0x1FFFE6FA}, + [I(228,44)] = {30,0x3FFFE9FA}, + [I(229,44)] = {29,0x1FFFE7FA}, + [I(230,44)] = {29,0x1FFFE8FA}, + [I(231,44)] = {31,0x7FFFF3FA}, + [I(232,44)] = {30,0x3FFFEAFA}, + [I(233,44)] = {30,0x3FFFEBFA}, + [I(234,44)] = {64,0}, + [I(235,44)] = {64,0}, + [I(236,44)] = {X32,0xFFFFF4FA}, + [I(237,44)] = {X32,0xFFFFF5FA}, + [I(238,44)] = {64,0}, + [I(239,44)] = {31,0x7FFFF4FA}, + [I(240,44)] = {64,0}, + [I(241,44)] = {64,0}, + [I(242,44)] = {64,0}, + [I(243,44)] = {64,0}, + [I(244,44)] = {64,0}, + [I(245,44)] = {64,0}, + [I(246,44)] = {64,0}, + [I(247,44)] = {64,0}, + [I(248,44)] = {64,0}, + [I(249,44)] = {64,0}, + [I(250,44)] = {64,0}, + [I(251,44)] = {64,0}, + [I(252,44)] = {64,0}, + [I(253,44)] = {64,0}, + [I(254,44)] = {64,0}, + [I(255,44)] = {64,0}, + [I(0,45)] = {19,0x7FE16}, + [I(1,45)] = {29,0x1FFFF616}, + [I(2,45)] = {64,0}, + [I(3,45)] = {64,0}, + [I(4,45)] = {64,0}, + [I(5,45)] = {64,0}, + [I(6,45)] = {64,0}, + [I(7,45)] = {64,0}, + [I(8,45)] = {64,0}, + [I(9,45)] = {30,0x3FFFFA96}, + [I(10,45)] = {64,0}, + [I(11,45)] = {64,0}, + [I(12,45)] = {64,0}, + [I(13,45)] = {64,0}, + [I(14,45)] = {64,0}, + [I(15,45)] = {64,0}, + [I(16,45)] = {64,0}, + [I(17,45)] = {64,0}, + [I(18,45)] = {64,0}, + [I(19,45)] = {64,0}, + [I(20,45)] = {64,0}, + [I(21,45)] = {64,0}, + [I(22,45)] = {64,0}, + [I(23,45)] = {64,0}, + [I(24,45)] = {64,0}, + [I(25,45)] = {64,0}, + [I(26,45)] = {64,0}, + [I(27,45)] = {64,0}, + [I(28,45)] = {64,0}, + [I(29,45)] = {64,0}, + [I(30,45)] = {64,0}, + [I(31,45)] = {64,0}, + [I(32,45)] = {12,0x516}, + [I(33,45)] = {16,0xFE16}, + [I(34,45)] = {16,0xFE56}, + [I(35,45)] = {18,0x3FE96}, + [I(36,45)] = {19,0x7FE56}, + [I(37,45)] = {12,0x556}, + [I(38,45)] = {14,0x3E16}, + [I(39,45)] = {17,0x1FE96}, + [I(40,45)] = {16,0xFE96}, + [I(41,45)] = {16,0xFED6}, + [I(42,45)] = {14,0x3E56}, + [I(43,45)] = {17,0x1FED6}, + [I(44,45)] = {14,0x3E96}, + [I(45,45)] = {12,0x596}, + [I(46,45)] = {12,0x5D6}, + [I(47,45)] = {12,0x616}, + [I(48,45)] = {11,0x16}, + [I(49,45)] = {11,0x56}, + [I(50,45)] = {11,0x96}, + [I(51,45)] = {12,0x656}, + [I(52,45)] = {12,0x696}, + [I(53,45)] = {12,0x6D6}, + [I(54,45)] = {12,0x716}, + [I(55,45)] = {12,0x756}, + [I(56,45)] = {12,0x796}, + [I(57,45)] = {12,0x7D6}, + [I(58,45)] = {13,0x1716}, + [I(59,45)] = {14,0x3ED6}, + [I(60,45)] = {21,0x1FFF16}, + [I(61,45)] = {12,0x816}, + [I(62,45)] = {18,0x3FED6}, + [I(63,45)] = {16,0xFF16}, + [I(64,45)] = {19,0x7FE96}, + [I(65,45)] = {12,0x856}, + [I(66,45)] = {13,0x1756}, + [I(67,45)] = {13,0x1796}, + [I(68,45)] = {13,0x17D6}, + [I(69,45)] = {13,0x1816}, + [I(70,45)] = {13,0x1856}, + [I(71,45)] = {13,0x1896}, + [I(72,45)] = {13,0x18D6}, + [I(73,45)] = {13,0x1916}, + [I(74,45)] = {13,0x1956}, + [I(75,45)] = {13,0x1996}, + [I(76,45)] = {13,0x19D6}, + [I(77,45)] = {13,0x1A16}, + [I(78,45)] = {13,0x1A56}, + [I(79,45)] = {13,0x1A96}, + [I(80,45)] = {13,0x1AD6}, + [I(81,45)] = {13,0x1B16}, + [I(82,45)] = {13,0x1B56}, + [I(83,45)] = {13,0x1B96}, + [I(84,45)] = {13,0x1BD6}, + [I(85,45)] = {13,0x1C16}, + [I(86,45)] = {13,0x1C56}, + [I(87,45)] = {13,0x1C96}, + [I(88,45)] = {14,0x3F16}, + [I(89,45)] = {13,0x1CD6}, + [I(90,45)] = {14,0x3F56}, + [I(91,45)] = {19,0x7FED6}, + [I(92,45)] = {25,0x1FFFC16}, + [I(93,45)] = {19,0x7FF16}, + [I(94,45)] = {20,0xFFF16}, + [I(95,45)] = {12,0x896}, + [I(96,45)] = {21,0x1FFF56}, + [I(97,45)] = {11,0xD6}, + [I(98,45)] = {12,0x8D6}, + [I(99,45)] = {11,0x116}, + [I(100,45)] = {12,0x916}, + [I(101,45)] = {11,0x156}, + [I(102,45)] = {12,0x956}, + [I(103,45)] = {12,0x996}, + [I(104,45)] = {12,0x9D6}, + [I(105,45)] = {11,0x196}, + [I(106,45)] = {13,0x1D16}, + [I(107,45)] = {13,0x1D56}, + [I(108,45)] = {12,0xA16}, + [I(109,45)] = {12,0xA56}, + [I(110,45)] = {12,0xA96}, + [I(111,45)] = {11,0x1D6}, + [I(112,45)] = {12,0xAD6}, + [I(113,45)] = {13,0x1D96}, + [I(114,45)] = {12,0xB16}, + [I(115,45)] = {11,0x216}, + [I(116,45)] = {11,0x256}, + [I(117,45)] = {12,0xB56}, + [I(118,45)] = {13,0x1DD6}, + [I(119,45)] = {13,0x1E16}, + [I(120,45)] = {13,0x1E56}, + [I(121,45)] = {13,0x1E96}, + [I(122,45)] = {13,0x1ED6}, + [I(123,45)] = {21,0x1FFF96}, + [I(124,45)] = {17,0x1FF16}, + [I(125,45)] = {20,0xFFF56}, + [I(126,45)] = {19,0x7FF56}, + [I(127,45)] = {64,0}, + [I(128,45)] = {26,0x3FFF996}, + [I(129,45)] = {28,0xFFFF496}, + [I(130,45)] = {26,0x3FFF9D6}, + [I(131,45)] = {26,0x3FFFA16}, + [I(132,45)] = {28,0xFFFF4D6}, + [I(133,45)] = {28,0xFFFF516}, + [I(134,45)] = {28,0xFFFF556}, + [I(135,45)] = {29,0x1FFFF656}, + [I(136,45)] = {28,0xFFFF596}, + [I(137,45)] = {29,0x1FFFF696}, + [I(138,45)] = {29,0x1FFFF6D6}, + [I(139,45)] = {29,0x1FFFF716}, + [I(140,45)] = {29,0x1FFFF756}, + [I(141,45)] = {29,0x1FFFF796}, + [I(142,45)] = {30,0x3FFFFAD6}, + [I(143,45)] = {29,0x1FFFF7D6}, + [I(144,45)] = {30,0x3FFFFB16}, + [I(145,45)] = {30,0x3FFFFB56}, + [I(146,45)] = {28,0xFFFF5D6}, + [I(147,45)] = {29,0x1FFFF816}, + [I(148,45)] = {30,0x3FFFFB96}, + [I(149,45)] = {29,0x1FFFF856}, + [I(150,45)] = {29,0x1FFFF896}, + [I(151,45)] = {29,0x1FFFF8D6}, + [I(152,45)] = {29,0x1FFFF916}, + [I(153,45)] = {27,0x7FFF716}, + [I(154,45)] = {28,0xFFFF616}, + [I(155,45)] = {29,0x1FFFF956}, + [I(156,45)] = {28,0xFFFF656}, + [I(157,45)] = {29,0x1FFFF996}, + [I(158,45)] = {29,0x1FFFF9D6}, + [I(159,45)] = {30,0x3FFFFBD6}, + [I(160,45)] = {28,0xFFFF696}, + [I(161,45)] = {27,0x7FFF756}, + [I(162,45)] = {26,0x3FFFA56}, + [I(163,45)] = {28,0xFFFF6D6}, + [I(164,45)] = {28,0xFFFF716}, + [I(165,45)] = {29,0x1FFFFA16}, + [I(166,45)] = {29,0x1FFFFA56}, + [I(167,45)] = {27,0x7FFF796}, + [I(168,45)] = {29,0x1FFFFA96}, + [I(169,45)] = {28,0xFFFF756}, + [I(170,45)] = {28,0xFFFF796}, + [I(171,45)] = {30,0x3FFFFC16}, + [I(172,45)] = {27,0x7FFF7D6}, + [I(173,45)] = {28,0xFFFF7D6}, + [I(174,45)] = {29,0x1FFFFAD6}, + [I(175,45)] = {29,0x1FFFFB16}, + [I(176,45)] = {27,0x7FFF816}, + [I(177,45)] = {27,0x7FFF856}, + [I(178,45)] = {28,0xFFFF816}, + [I(179,45)] = {27,0x7FFF896}, + [I(180,45)] = {29,0x1FFFFB56}, + [I(181,45)] = {28,0xFFFF856}, + [I(182,45)] = {29,0x1FFFFB96}, + [I(183,45)] = {29,0x1FFFFBD6}, + [I(184,45)] = {26,0x3FFFA96}, + [I(185,45)] = {28,0xFFFF896}, + [I(186,45)] = {28,0xFFFF8D6}, + [I(187,45)] = {28,0xFFFF916}, + [I(188,45)] = {29,0x1FFFFC16}, + [I(189,45)] = {28,0xFFFF956}, + [I(190,45)] = {28,0xFFFF996}, + [I(191,45)] = {29,0x1FFFFC56}, + [I(192,45)] = {X32,0xFFFFF816}, + [I(193,45)] = {X32,0xFFFFF856}, + [I(194,45)] = {26,0x3FFFAD6}, + [I(195,45)] = {25,0x1FFFC56}, + [I(196,45)] = {28,0xFFFF9D6}, + [I(197,45)] = {29,0x1FFFFC96}, + [I(198,45)] = {28,0xFFFFA16}, + [I(199,45)] = {31,0x7FFFFB16}, + [I(200,45)] = {X32,0xFFFFF896}, + [I(201,45)] = {X32,0xFFFFF8D6}, + [I(202,45)] = {X32,0xFFFFF916}, + [I(203,45)] = {64,0}, + [I(204,45)] = {64,0}, + [I(205,45)] = {X32,0xFFFFF956}, + [I(206,45)] = {30,0x3FFFFC56}, + [I(207,45)] = {31,0x7FFFFB56}, + [I(208,45)] = {25,0x1FFFC96}, + [I(209,45)] = {27,0x7FFF8D6}, + [I(210,45)] = {X32,0xFFFFF996}, + [I(211,45)] = {64,0}, + [I(212,45)] = {64,0}, + [I(213,45)] = {X32,0xFFFFF9D6}, + [I(214,45)] = {64,0}, + [I(215,45)] = {30,0x3FFFFC96}, + [I(216,45)] = {27,0x7FFF916}, + [I(217,45)] = {27,0x7FFF956}, + [I(218,45)] = {X32,0xFFFFFA16}, + [I(219,45)] = {X32,0xFFFFFA56}, + [I(220,45)] = {64,0}, + [I(221,45)] = {64,0}, + [I(222,45)] = {64,0}, + [I(223,45)] = {64,0}, + [I(224,45)] = {26,0x3FFFB16}, + [I(225,45)] = {30,0x3FFFFCD6}, + [I(226,45)] = {26,0x3FFFB56}, + [I(227,45)] = {27,0x7FFF996}, + [I(228,45)] = {28,0xFFFFA56}, + [I(229,45)] = {27,0x7FFF9D6}, + [I(230,45)] = {27,0x7FFFA16}, + [I(231,45)] = {29,0x1FFFFCD6}, + [I(232,45)] = {28,0xFFFFA96}, + [I(233,45)] = {28,0xFFFFAD6}, + [I(234,45)] = {31,0x7FFFFB96}, + [I(235,45)] = {31,0x7FFFFBD6}, + [I(236,45)] = {30,0x3FFFFD16}, + [I(237,45)] = {30,0x3FFFFD56}, + [I(238,45)] = {X32,0xFFFFFA96}, + [I(239,45)] = {29,0x1FFFFD16}, + [I(240,45)] = {X32,0xFFFFFAD6}, + [I(241,45)] = {64,0}, + [I(242,45)] = {X32,0xFFFFFB16}, + [I(243,45)] = {X32,0xFFFFFB56}, + [I(244,45)] = {64,0}, + [I(245,45)] = {64,0}, + [I(246,45)] = {64,0}, + [I(247,45)] = {64,0}, + [I(248,45)] = {64,0}, + [I(249,45)] = {64,0}, + [I(250,45)] = {64,0}, + [I(251,45)] = {64,0}, + [I(252,45)] = {64,0}, + [I(253,45)] = {64,0}, + [I(254,45)] = {64,0}, + [I(255,45)] = {X32,0xFFFFFB96}, + [I(0,46)] = {19,0x7FE17}, + [I(1,46)] = {29,0x1FFFF617}, + [I(2,46)] = {64,0}, + [I(3,46)] = {64,0}, + [I(4,46)] = {64,0}, + [I(5,46)] = {64,0}, + [I(6,46)] = {64,0}, + [I(7,46)] = {64,0}, + [I(8,46)] = {64,0}, + [I(9,46)] = {30,0x3FFFFA97}, + [I(10,46)] = {64,0}, + [I(11,46)] = {64,0}, + [I(12,46)] = {64,0}, + [I(13,46)] = {64,0}, + [I(14,46)] = {64,0}, + [I(15,46)] = {64,0}, + [I(16,46)] = {64,0}, + [I(17,46)] = {64,0}, + [I(18,46)] = {64,0}, + [I(19,46)] = {64,0}, + [I(20,46)] = {64,0}, + [I(21,46)] = {64,0}, + [I(22,46)] = {64,0}, + [I(23,46)] = {64,0}, + [I(24,46)] = {64,0}, + [I(25,46)] = {64,0}, + [I(26,46)] = {64,0}, + [I(27,46)] = {64,0}, + [I(28,46)] = {64,0}, + [I(29,46)] = {64,0}, + [I(30,46)] = {64,0}, + [I(31,46)] = {64,0}, + [I(32,46)] = {12,0x517}, + [I(33,46)] = {16,0xFE17}, + [I(34,46)] = {16,0xFE57}, + [I(35,46)] = {18,0x3FE97}, + [I(36,46)] = {19,0x7FE57}, + [I(37,46)] = {12,0x557}, + [I(38,46)] = {14,0x3E17}, + [I(39,46)] = {17,0x1FE97}, + [I(40,46)] = {16,0xFE97}, + [I(41,46)] = {16,0xFED7}, + [I(42,46)] = {14,0x3E57}, + [I(43,46)] = {17,0x1FED7}, + [I(44,46)] = {14,0x3E97}, + [I(45,46)] = {12,0x597}, + [I(46,46)] = {12,0x5D7}, + [I(47,46)] = {12,0x617}, + [I(48,46)] = {11,0x17}, + [I(49,46)] = {11,0x57}, + [I(50,46)] = {11,0x97}, + [I(51,46)] = {12,0x657}, + [I(52,46)] = {12,0x697}, + [I(53,46)] = {12,0x6D7}, + [I(54,46)] = {12,0x717}, + [I(55,46)] = {12,0x757}, + [I(56,46)] = {12,0x797}, + [I(57,46)] = {12,0x7D7}, + [I(58,46)] = {13,0x1717}, + [I(59,46)] = {14,0x3ED7}, + [I(60,46)] = {21,0x1FFF17}, + [I(61,46)] = {12,0x817}, + [I(62,46)] = {18,0x3FED7}, + [I(63,46)] = {16,0xFF17}, + [I(64,46)] = {19,0x7FE97}, + [I(65,46)] = {12,0x857}, + [I(66,46)] = {13,0x1757}, + [I(67,46)] = {13,0x1797}, + [I(68,46)] = {13,0x17D7}, + [I(69,46)] = {13,0x1817}, + [I(70,46)] = {13,0x1857}, + [I(71,46)] = {13,0x1897}, + [I(72,46)] = {13,0x18D7}, + [I(73,46)] = {13,0x1917}, + [I(74,46)] = {13,0x1957}, + [I(75,46)] = {13,0x1997}, + [I(76,46)] = {13,0x19D7}, + [I(77,46)] = {13,0x1A17}, + [I(78,46)] = {13,0x1A57}, + [I(79,46)] = {13,0x1A97}, + [I(80,46)] = {13,0x1AD7}, + [I(81,46)] = {13,0x1B17}, + [I(82,46)] = {13,0x1B57}, + [I(83,46)] = {13,0x1B97}, + [I(84,46)] = {13,0x1BD7}, + [I(85,46)] = {13,0x1C17}, + [I(86,46)] = {13,0x1C57}, + [I(87,46)] = {13,0x1C97}, + [I(88,46)] = {14,0x3F17}, + [I(89,46)] = {13,0x1CD7}, + [I(90,46)] = {14,0x3F57}, + [I(91,46)] = {19,0x7FED7}, + [I(92,46)] = {25,0x1FFFC17}, + [I(93,46)] = {19,0x7FF17}, + [I(94,46)] = {20,0xFFF17}, + [I(95,46)] = {12,0x897}, + [I(96,46)] = {21,0x1FFF57}, + [I(97,46)] = {11,0xD7}, + [I(98,46)] = {12,0x8D7}, + [I(99,46)] = {11,0x117}, + [I(100,46)] = {12,0x917}, + [I(101,46)] = {11,0x157}, + [I(102,46)] = {12,0x957}, + [I(103,46)] = {12,0x997}, + [I(104,46)] = {12,0x9D7}, + [I(105,46)] = {11,0x197}, + [I(106,46)] = {13,0x1D17}, + [I(107,46)] = {13,0x1D57}, + [I(108,46)] = {12,0xA17}, + [I(109,46)] = {12,0xA57}, + [I(110,46)] = {12,0xA97}, + [I(111,46)] = {11,0x1D7}, + [I(112,46)] = {12,0xAD7}, + [I(113,46)] = {13,0x1D97}, + [I(114,46)] = {12,0xB17}, + [I(115,46)] = {11,0x217}, + [I(116,46)] = {11,0x257}, + [I(117,46)] = {12,0xB57}, + [I(118,46)] = {13,0x1DD7}, + [I(119,46)] = {13,0x1E17}, + [I(120,46)] = {13,0x1E57}, + [I(121,46)] = {13,0x1E97}, + [I(122,46)] = {13,0x1ED7}, + [I(123,46)] = {21,0x1FFF97}, + [I(124,46)] = {17,0x1FF17}, + [I(125,46)] = {20,0xFFF57}, + [I(126,46)] = {19,0x7FF57}, + [I(127,46)] = {64,0}, + [I(128,46)] = {26,0x3FFF997}, + [I(129,46)] = {28,0xFFFF497}, + [I(130,46)] = {26,0x3FFF9D7}, + [I(131,46)] = {26,0x3FFFA17}, + [I(132,46)] = {28,0xFFFF4D7}, + [I(133,46)] = {28,0xFFFF517}, + [I(134,46)] = {28,0xFFFF557}, + [I(135,46)] = {29,0x1FFFF657}, + [I(136,46)] = {28,0xFFFF597}, + [I(137,46)] = {29,0x1FFFF697}, + [I(138,46)] = {29,0x1FFFF6D7}, + [I(139,46)] = {29,0x1FFFF717}, + [I(140,46)] = {29,0x1FFFF757}, + [I(141,46)] = {29,0x1FFFF797}, + [I(142,46)] = {30,0x3FFFFAD7}, + [I(143,46)] = {29,0x1FFFF7D7}, + [I(144,46)] = {30,0x3FFFFB17}, + [I(145,46)] = {30,0x3FFFFB57}, + [I(146,46)] = {28,0xFFFF5D7}, + [I(147,46)] = {29,0x1FFFF817}, + [I(148,46)] = {30,0x3FFFFB97}, + [I(149,46)] = {29,0x1FFFF857}, + [I(150,46)] = {29,0x1FFFF897}, + [I(151,46)] = {29,0x1FFFF8D7}, + [I(152,46)] = {29,0x1FFFF917}, + [I(153,46)] = {27,0x7FFF717}, + [I(154,46)] = {28,0xFFFF617}, + [I(155,46)] = {29,0x1FFFF957}, + [I(156,46)] = {28,0xFFFF657}, + [I(157,46)] = {29,0x1FFFF997}, + [I(158,46)] = {29,0x1FFFF9D7}, + [I(159,46)] = {30,0x3FFFFBD7}, + [I(160,46)] = {28,0xFFFF697}, + [I(161,46)] = {27,0x7FFF757}, + [I(162,46)] = {26,0x3FFFA57}, + [I(163,46)] = {28,0xFFFF6D7}, + [I(164,46)] = {28,0xFFFF717}, + [I(165,46)] = {29,0x1FFFFA17}, + [I(166,46)] = {29,0x1FFFFA57}, + [I(167,46)] = {27,0x7FFF797}, + [I(168,46)] = {29,0x1FFFFA97}, + [I(169,46)] = {28,0xFFFF757}, + [I(170,46)] = {28,0xFFFF797}, + [I(171,46)] = {30,0x3FFFFC17}, + [I(172,46)] = {27,0x7FFF7D7}, + [I(173,46)] = {28,0xFFFF7D7}, + [I(174,46)] = {29,0x1FFFFAD7}, + [I(175,46)] = {29,0x1FFFFB17}, + [I(176,46)] = {27,0x7FFF817}, + [I(177,46)] = {27,0x7FFF857}, + [I(178,46)] = {28,0xFFFF817}, + [I(179,46)] = {27,0x7FFF897}, + [I(180,46)] = {29,0x1FFFFB57}, + [I(181,46)] = {28,0xFFFF857}, + [I(182,46)] = {29,0x1FFFFB97}, + [I(183,46)] = {29,0x1FFFFBD7}, + [I(184,46)] = {26,0x3FFFA97}, + [I(185,46)] = {28,0xFFFF897}, + [I(186,46)] = {28,0xFFFF8D7}, + [I(187,46)] = {28,0xFFFF917}, + [I(188,46)] = {29,0x1FFFFC17}, + [I(189,46)] = {28,0xFFFF957}, + [I(190,46)] = {28,0xFFFF997}, + [I(191,46)] = {29,0x1FFFFC57}, + [I(192,46)] = {X32,0xFFFFF817}, + [I(193,46)] = {X32,0xFFFFF857}, + [I(194,46)] = {26,0x3FFFAD7}, + [I(195,46)] = {25,0x1FFFC57}, + [I(196,46)] = {28,0xFFFF9D7}, + [I(197,46)] = {29,0x1FFFFC97}, + [I(198,46)] = {28,0xFFFFA17}, + [I(199,46)] = {31,0x7FFFFB17}, + [I(200,46)] = {X32,0xFFFFF897}, + [I(201,46)] = {X32,0xFFFFF8D7}, + [I(202,46)] = {X32,0xFFFFF917}, + [I(203,46)] = {64,0}, + [I(204,46)] = {64,0}, + [I(205,46)] = {X32,0xFFFFF957}, + [I(206,46)] = {30,0x3FFFFC57}, + [I(207,46)] = {31,0x7FFFFB57}, + [I(208,46)] = {25,0x1FFFC97}, + [I(209,46)] = {27,0x7FFF8D7}, + [I(210,46)] = {X32,0xFFFFF997}, + [I(211,46)] = {64,0}, + [I(212,46)] = {64,0}, + [I(213,46)] = {X32,0xFFFFF9D7}, + [I(214,46)] = {64,0}, + [I(215,46)] = {30,0x3FFFFC97}, + [I(216,46)] = {27,0x7FFF917}, + [I(217,46)] = {27,0x7FFF957}, + [I(218,46)] = {X32,0xFFFFFA17}, + [I(219,46)] = {X32,0xFFFFFA57}, + [I(220,46)] = {64,0}, + [I(221,46)] = {64,0}, + [I(222,46)] = {64,0}, + [I(223,46)] = {64,0}, + [I(224,46)] = {26,0x3FFFB17}, + [I(225,46)] = {30,0x3FFFFCD7}, + [I(226,46)] = {26,0x3FFFB57}, + [I(227,46)] = {27,0x7FFF997}, + [I(228,46)] = {28,0xFFFFA57}, + [I(229,46)] = {27,0x7FFF9D7}, + [I(230,46)] = {27,0x7FFFA17}, + [I(231,46)] = {29,0x1FFFFCD7}, + [I(232,46)] = {28,0xFFFFA97}, + [I(233,46)] = {28,0xFFFFAD7}, + [I(234,46)] = {31,0x7FFFFB97}, + [I(235,46)] = {31,0x7FFFFBD7}, + [I(236,46)] = {30,0x3FFFFD17}, + [I(237,46)] = {30,0x3FFFFD57}, + [I(238,46)] = {X32,0xFFFFFA97}, + [I(239,46)] = {29,0x1FFFFD17}, + [I(240,46)] = {X32,0xFFFFFAD7}, + [I(241,46)] = {64,0}, + [I(242,46)] = {X32,0xFFFFFB17}, + [I(243,46)] = {X32,0xFFFFFB57}, + [I(244,46)] = {64,0}, + [I(245,46)] = {64,0}, + [I(246,46)] = {64,0}, + [I(247,46)] = {64,0}, + [I(248,46)] = {64,0}, + [I(249,46)] = {64,0}, + [I(250,46)] = {64,0}, + [I(251,46)] = {64,0}, + [I(252,46)] = {64,0}, + [I(253,46)] = {64,0}, + [I(254,46)] = {64,0}, + [I(255,46)] = {X32,0xFFFFFB97}, + [I(0,47)] = {19,0x7FE18}, + [I(1,47)] = {29,0x1FFFF618}, + [I(2,47)] = {64,0}, + [I(3,47)] = {64,0}, + [I(4,47)] = {64,0}, + [I(5,47)] = {64,0}, + [I(6,47)] = {64,0}, + [I(7,47)] = {64,0}, + [I(8,47)] = {64,0}, + [I(9,47)] = {30,0x3FFFFA98}, + [I(10,47)] = {64,0}, + [I(11,47)] = {64,0}, + [I(12,47)] = {64,0}, + [I(13,47)] = {64,0}, + [I(14,47)] = {64,0}, + [I(15,47)] = {64,0}, + [I(16,47)] = {64,0}, + [I(17,47)] = {64,0}, + [I(18,47)] = {64,0}, + [I(19,47)] = {64,0}, + [I(20,47)] = {64,0}, + [I(21,47)] = {64,0}, + [I(22,47)] = {64,0}, + [I(23,47)] = {64,0}, + [I(24,47)] = {64,0}, + [I(25,47)] = {64,0}, + [I(26,47)] = {64,0}, + [I(27,47)] = {64,0}, + [I(28,47)] = {64,0}, + [I(29,47)] = {64,0}, + [I(30,47)] = {64,0}, + [I(31,47)] = {64,0}, + [I(32,47)] = {12,0x518}, + [I(33,47)] = {16,0xFE18}, + [I(34,47)] = {16,0xFE58}, + [I(35,47)] = {18,0x3FE98}, + [I(36,47)] = {19,0x7FE58}, + [I(37,47)] = {12,0x558}, + [I(38,47)] = {14,0x3E18}, + [I(39,47)] = {17,0x1FE98}, + [I(40,47)] = {16,0xFE98}, + [I(41,47)] = {16,0xFED8}, + [I(42,47)] = {14,0x3E58}, + [I(43,47)] = {17,0x1FED8}, + [I(44,47)] = {14,0x3E98}, + [I(45,47)] = {12,0x598}, + [I(46,47)] = {12,0x5D8}, + [I(47,47)] = {12,0x618}, + [I(48,47)] = {11,0x18}, + [I(49,47)] = {11,0x58}, + [I(50,47)] = {11,0x98}, + [I(51,47)] = {12,0x658}, + [I(52,47)] = {12,0x698}, + [I(53,47)] = {12,0x6D8}, + [I(54,47)] = {12,0x718}, + [I(55,47)] = {12,0x758}, + [I(56,47)] = {12,0x798}, + [I(57,47)] = {12,0x7D8}, + [I(58,47)] = {13,0x1718}, + [I(59,47)] = {14,0x3ED8}, + [I(60,47)] = {21,0x1FFF18}, + [I(61,47)] = {12,0x818}, + [I(62,47)] = {18,0x3FED8}, + [I(63,47)] = {16,0xFF18}, + [I(64,47)] = {19,0x7FE98}, + [I(65,47)] = {12,0x858}, + [I(66,47)] = {13,0x1758}, + [I(67,47)] = {13,0x1798}, + [I(68,47)] = {13,0x17D8}, + [I(69,47)] = {13,0x1818}, + [I(70,47)] = {13,0x1858}, + [I(71,47)] = {13,0x1898}, + [I(72,47)] = {13,0x18D8}, + [I(73,47)] = {13,0x1918}, + [I(74,47)] = {13,0x1958}, + [I(75,47)] = {13,0x1998}, + [I(76,47)] = {13,0x19D8}, + [I(77,47)] = {13,0x1A18}, + [I(78,47)] = {13,0x1A58}, + [I(79,47)] = {13,0x1A98}, + [I(80,47)] = {13,0x1AD8}, + [I(81,47)] = {13,0x1B18}, + [I(82,47)] = {13,0x1B58}, + [I(83,47)] = {13,0x1B98}, + [I(84,47)] = {13,0x1BD8}, + [I(85,47)] = {13,0x1C18}, + [I(86,47)] = {13,0x1C58}, + [I(87,47)] = {13,0x1C98}, + [I(88,47)] = {14,0x3F18}, + [I(89,47)] = {13,0x1CD8}, + [I(90,47)] = {14,0x3F58}, + [I(91,47)] = {19,0x7FED8}, + [I(92,47)] = {25,0x1FFFC18}, + [I(93,47)] = {19,0x7FF18}, + [I(94,47)] = {20,0xFFF18}, + [I(95,47)] = {12,0x898}, + [I(96,47)] = {21,0x1FFF58}, + [I(97,47)] = {11,0xD8}, + [I(98,47)] = {12,0x8D8}, + [I(99,47)] = {11,0x118}, + [I(100,47)] = {12,0x918}, + [I(101,47)] = {11,0x158}, + [I(102,47)] = {12,0x958}, + [I(103,47)] = {12,0x998}, + [I(104,47)] = {12,0x9D8}, + [I(105,47)] = {11,0x198}, + [I(106,47)] = {13,0x1D18}, + [I(107,47)] = {13,0x1D58}, + [I(108,47)] = {12,0xA18}, + [I(109,47)] = {12,0xA58}, + [I(110,47)] = {12,0xA98}, + [I(111,47)] = {11,0x1D8}, + [I(112,47)] = {12,0xAD8}, + [I(113,47)] = {13,0x1D98}, + [I(114,47)] = {12,0xB18}, + [I(115,47)] = {11,0x218}, + [I(116,47)] = {11,0x258}, + [I(117,47)] = {12,0xB58}, + [I(118,47)] = {13,0x1DD8}, + [I(119,47)] = {13,0x1E18}, + [I(120,47)] = {13,0x1E58}, + [I(121,47)] = {13,0x1E98}, + [I(122,47)] = {13,0x1ED8}, + [I(123,47)] = {21,0x1FFF98}, + [I(124,47)] = {17,0x1FF18}, + [I(125,47)] = {20,0xFFF58}, + [I(126,47)] = {19,0x7FF58}, + [I(127,47)] = {64,0}, + [I(128,47)] = {26,0x3FFF998}, + [I(129,47)] = {28,0xFFFF498}, + [I(130,47)] = {26,0x3FFF9D8}, + [I(131,47)] = {26,0x3FFFA18}, + [I(132,47)] = {28,0xFFFF4D8}, + [I(133,47)] = {28,0xFFFF518}, + [I(134,47)] = {28,0xFFFF558}, + [I(135,47)] = {29,0x1FFFF658}, + [I(136,47)] = {28,0xFFFF598}, + [I(137,47)] = {29,0x1FFFF698}, + [I(138,47)] = {29,0x1FFFF6D8}, + [I(139,47)] = {29,0x1FFFF718}, + [I(140,47)] = {29,0x1FFFF758}, + [I(141,47)] = {29,0x1FFFF798}, + [I(142,47)] = {30,0x3FFFFAD8}, + [I(143,47)] = {29,0x1FFFF7D8}, + [I(144,47)] = {30,0x3FFFFB18}, + [I(145,47)] = {30,0x3FFFFB58}, + [I(146,47)] = {28,0xFFFF5D8}, + [I(147,47)] = {29,0x1FFFF818}, + [I(148,47)] = {30,0x3FFFFB98}, + [I(149,47)] = {29,0x1FFFF858}, + [I(150,47)] = {29,0x1FFFF898}, + [I(151,47)] = {29,0x1FFFF8D8}, + [I(152,47)] = {29,0x1FFFF918}, + [I(153,47)] = {27,0x7FFF718}, + [I(154,47)] = {28,0xFFFF618}, + [I(155,47)] = {29,0x1FFFF958}, + [I(156,47)] = {28,0xFFFF658}, + [I(157,47)] = {29,0x1FFFF998}, + [I(158,47)] = {29,0x1FFFF9D8}, + [I(159,47)] = {30,0x3FFFFBD8}, + [I(160,47)] = {28,0xFFFF698}, + [I(161,47)] = {27,0x7FFF758}, + [I(162,47)] = {26,0x3FFFA58}, + [I(163,47)] = {28,0xFFFF6D8}, + [I(164,47)] = {28,0xFFFF718}, + [I(165,47)] = {29,0x1FFFFA18}, + [I(166,47)] = {29,0x1FFFFA58}, + [I(167,47)] = {27,0x7FFF798}, + [I(168,47)] = {29,0x1FFFFA98}, + [I(169,47)] = {28,0xFFFF758}, + [I(170,47)] = {28,0xFFFF798}, + [I(171,47)] = {30,0x3FFFFC18}, + [I(172,47)] = {27,0x7FFF7D8}, + [I(173,47)] = {28,0xFFFF7D8}, + [I(174,47)] = {29,0x1FFFFAD8}, + [I(175,47)] = {29,0x1FFFFB18}, + [I(176,47)] = {27,0x7FFF818}, + [I(177,47)] = {27,0x7FFF858}, + [I(178,47)] = {28,0xFFFF818}, + [I(179,47)] = {27,0x7FFF898}, + [I(180,47)] = {29,0x1FFFFB58}, + [I(181,47)] = {28,0xFFFF858}, + [I(182,47)] = {29,0x1FFFFB98}, + [I(183,47)] = {29,0x1FFFFBD8}, + [I(184,47)] = {26,0x3FFFA98}, + [I(185,47)] = {28,0xFFFF898}, + [I(186,47)] = {28,0xFFFF8D8}, + [I(187,47)] = {28,0xFFFF918}, + [I(188,47)] = {29,0x1FFFFC18}, + [I(189,47)] = {28,0xFFFF958}, + [I(190,47)] = {28,0xFFFF998}, + [I(191,47)] = {29,0x1FFFFC58}, + [I(192,47)] = {X32,0xFFFFF818}, + [I(193,47)] = {X32,0xFFFFF858}, + [I(194,47)] = {26,0x3FFFAD8}, + [I(195,47)] = {25,0x1FFFC58}, + [I(196,47)] = {28,0xFFFF9D8}, + [I(197,47)] = {29,0x1FFFFC98}, + [I(198,47)] = {28,0xFFFFA18}, + [I(199,47)] = {31,0x7FFFFB18}, + [I(200,47)] = {X32,0xFFFFF898}, + [I(201,47)] = {X32,0xFFFFF8D8}, + [I(202,47)] = {X32,0xFFFFF918}, + [I(203,47)] = {64,0}, + [I(204,47)] = {64,0}, + [I(205,47)] = {X32,0xFFFFF958}, + [I(206,47)] = {30,0x3FFFFC58}, + [I(207,47)] = {31,0x7FFFFB58}, + [I(208,47)] = {25,0x1FFFC98}, + [I(209,47)] = {27,0x7FFF8D8}, + [I(210,47)] = {X32,0xFFFFF998}, + [I(211,47)] = {64,0}, + [I(212,47)] = {64,0}, + [I(213,47)] = {X32,0xFFFFF9D8}, + [I(214,47)] = {64,0}, + [I(215,47)] = {30,0x3FFFFC98}, + [I(216,47)] = {27,0x7FFF918}, + [I(217,47)] = {27,0x7FFF958}, + [I(218,47)] = {X32,0xFFFFFA18}, + [I(219,47)] = {X32,0xFFFFFA58}, + [I(220,47)] = {64,0}, + [I(221,47)] = {64,0}, + [I(222,47)] = {64,0}, + [I(223,47)] = {64,0}, + [I(224,47)] = {26,0x3FFFB18}, + [I(225,47)] = {30,0x3FFFFCD8}, + [I(226,47)] = {26,0x3FFFB58}, + [I(227,47)] = {27,0x7FFF998}, + [I(228,47)] = {28,0xFFFFA58}, + [I(229,47)] = {27,0x7FFF9D8}, + [I(230,47)] = {27,0x7FFFA18}, + [I(231,47)] = {29,0x1FFFFCD8}, + [I(232,47)] = {28,0xFFFFA98}, + [I(233,47)] = {28,0xFFFFAD8}, + [I(234,47)] = {31,0x7FFFFB98}, + [I(235,47)] = {31,0x7FFFFBD8}, + [I(236,47)] = {30,0x3FFFFD18}, + [I(237,47)] = {30,0x3FFFFD58}, + [I(238,47)] = {X32,0xFFFFFA98}, + [I(239,47)] = {29,0x1FFFFD18}, + [I(240,47)] = {X32,0xFFFFFAD8}, + [I(241,47)] = {64,0}, + [I(242,47)] = {X32,0xFFFFFB18}, + [I(243,47)] = {X32,0xFFFFFB58}, + [I(244,47)] = {64,0}, + [I(245,47)] = {64,0}, + [I(246,47)] = {64,0}, + [I(247,47)] = {64,0}, + [I(248,47)] = {64,0}, + [I(249,47)] = {64,0}, + [I(250,47)] = {64,0}, + [I(251,47)] = {64,0}, + [I(252,47)] = {64,0}, + [I(253,47)] = {64,0}, + [I(254,47)] = {64,0}, + [I(255,47)] = {X32,0xFFFFFB98}, + [I(0,48)] = {18,0x3FF00}, + [I(1,48)] = {28,0xFFFFB00}, + [I(2,48)] = {64,0}, + [I(3,48)] = {64,0}, + [I(4,48)] = {64,0}, + [I(5,48)] = {64,0}, + [I(6,48)] = {64,0}, + [I(7,48)] = {64,0}, + [I(8,48)] = {64,0}, + [I(9,48)] = {29,0x1FFFFD40}, + [I(10,48)] = {64,0}, + [I(11,48)] = {64,0}, + [I(12,48)] = {64,0}, + [I(13,48)] = {64,0}, + [I(14,48)] = {64,0}, + [I(15,48)] = {64,0}, + [I(16,48)] = {64,0}, + [I(17,48)] = {64,0}, + [I(18,48)] = {64,0}, + [I(19,48)] = {64,0}, + [I(20,48)] = {64,0}, + [I(21,48)] = {64,0}, + [I(22,48)] = {64,0}, + [I(23,48)] = {64,0}, + [I(24,48)] = {64,0}, + [I(25,48)] = {64,0}, + [I(26,48)] = {64,0}, + [I(27,48)] = {64,0}, + [I(28,48)] = {64,0}, + [I(29,48)] = {64,0}, + [I(30,48)] = {64,0}, + [I(31,48)] = {64,0}, + [I(32,48)] = {11,0x280}, + [I(33,48)] = {15,0x7F00}, + [I(34,48)] = {15,0x7F20}, + [I(35,48)] = {17,0x1FF40}, + [I(36,48)] = {18,0x3FF20}, + [I(37,48)] = {11,0x2A0}, + [I(38,48)] = {13,0x1F00}, + [I(39,48)] = {16,0xFF40}, + [I(40,48)] = {15,0x7F40}, + [I(41,48)] = {15,0x7F60}, + [I(42,48)] = {13,0x1F20}, + [I(43,48)] = {16,0xFF60}, + [I(44,48)] = {13,0x1F40}, + [I(45,48)] = {11,0x2C0}, + [I(46,48)] = {11,0x2E0}, + [I(47,48)] = {11,0x300}, + [I(48,48)] = {10,0x0}, + [I(49,48)] = {10,0x20}, + [I(50,48)] = {10,0x40}, + [I(51,48)] = {11,0x320}, + [I(52,48)] = {11,0x340}, + [I(53,48)] = {11,0x360}, + [I(54,48)] = {11,0x380}, + [I(55,48)] = {11,0x3A0}, + [I(56,48)] = {11,0x3C0}, + [I(57,48)] = {11,0x3E0}, + [I(58,48)] = {12,0xB80}, + [I(59,48)] = {13,0x1F60}, + [I(60,48)] = {20,0xFFF80}, + [I(61,48)] = {11,0x400}, + [I(62,48)] = {17,0x1FF60}, + [I(63,48)] = {15,0x7F80}, + [I(64,48)] = {18,0x3FF40}, + [I(65,48)] = {11,0x420}, + [I(66,48)] = {12,0xBA0}, + [I(67,48)] = {12,0xBC0}, + [I(68,48)] = {12,0xBE0}, + [I(69,48)] = {12,0xC00}, + [I(70,48)] = {12,0xC20}, + [I(71,48)] = {12,0xC40}, + [I(72,48)] = {12,0xC60}, + [I(73,48)] = {12,0xC80}, + [I(74,48)] = {12,0xCA0}, + [I(75,48)] = {12,0xCC0}, + [I(76,48)] = {12,0xCE0}, + [I(77,48)] = {12,0xD00}, + [I(78,48)] = {12,0xD20}, + [I(79,48)] = {12,0xD40}, + [I(80,48)] = {12,0xD60}, + [I(81,48)] = {12,0xD80}, + [I(82,48)] = {12,0xDA0}, + [I(83,48)] = {12,0xDC0}, + [I(84,48)] = {12,0xDE0}, + [I(85,48)] = {12,0xE00}, + [I(86,48)] = {12,0xE20}, + [I(87,48)] = {12,0xE40}, + [I(88,48)] = {13,0x1F80}, + [I(89,48)] = {12,0xE60}, + [I(90,48)] = {13,0x1FA0}, + [I(91,48)] = {18,0x3FF60}, + [I(92,48)] = {24,0xFFFE00}, + [I(93,48)] = {18,0x3FF80}, + [I(94,48)] = {19,0x7FF80}, + [I(95,48)] = {11,0x440}, + [I(96,48)] = {20,0xFFFA0}, + [I(97,48)] = {10,0x60}, + [I(98,48)] = {11,0x460}, + [I(99,48)] = {10,0x80}, + [I(100,48)] = {11,0x480}, + [I(101,48)] = {10,0xA0}, + [I(102,48)] = {11,0x4A0}, + [I(103,48)] = {11,0x4C0}, + [I(104,48)] = {11,0x4E0}, + [I(105,48)] = {10,0xC0}, + [I(106,48)] = {12,0xE80}, + [I(107,48)] = {12,0xEA0}, + [I(108,48)] = {11,0x500}, + [I(109,48)] = {11,0x520}, + [I(110,48)] = {11,0x540}, + [I(111,48)] = {10,0xE0}, + [I(112,48)] = {11,0x560}, + [I(113,48)] = {12,0xEC0}, + [I(114,48)] = {11,0x580}, + [I(115,48)] = {10,0x100}, + [I(116,48)] = {10,0x120}, + [I(117,48)] = {11,0x5A0}, + [I(118,48)] = {12,0xEE0}, + [I(119,48)] = {12,0xF00}, + [I(120,48)] = {12,0xF20}, + [I(121,48)] = {12,0xF40}, + [I(122,48)] = {12,0xF60}, + [I(123,48)] = {20,0xFFFC0}, + [I(124,48)] = {16,0xFF80}, + [I(125,48)] = {19,0x7FFA0}, + [I(126,48)] = {18,0x3FFA0}, + [I(127,48)] = {64,0}, + [I(128,48)] = {25,0x1FFFCC0}, + [I(129,48)] = {27,0x7FFFA40}, + [I(130,48)] = {25,0x1FFFCE0}, + [I(131,48)] = {25,0x1FFFD00}, + [I(132,48)] = {27,0x7FFFA60}, + [I(133,48)] = {27,0x7FFFA80}, + [I(134,48)] = {27,0x7FFFAA0}, + [I(135,48)] = {28,0xFFFFB20}, + [I(136,48)] = {27,0x7FFFAC0}, + [I(137,48)] = {28,0xFFFFB40}, + [I(138,48)] = {28,0xFFFFB60}, + [I(139,48)] = {28,0xFFFFB80}, + [I(140,48)] = {28,0xFFFFBA0}, + [I(141,48)] = {28,0xFFFFBC0}, + [I(142,48)] = {29,0x1FFFFD60}, + [I(143,48)] = {28,0xFFFFBE0}, + [I(144,48)] = {29,0x1FFFFD80}, + [I(145,48)] = {29,0x1FFFFDA0}, + [I(146,48)] = {27,0x7FFFAE0}, + [I(147,48)] = {28,0xFFFFC00}, + [I(148,48)] = {29,0x1FFFFDC0}, + [I(149,48)] = {28,0xFFFFC20}, + [I(150,48)] = {28,0xFFFFC40}, + [I(151,48)] = {28,0xFFFFC60}, + [I(152,48)] = {28,0xFFFFC80}, + [I(153,48)] = {26,0x3FFFB80}, + [I(154,48)] = {27,0x7FFFB00}, + [I(155,48)] = {28,0xFFFFCA0}, + [I(156,48)] = {27,0x7FFFB20}, + [I(157,48)] = {28,0xFFFFCC0}, + [I(158,48)] = {28,0xFFFFCE0}, + [I(159,48)] = {29,0x1FFFFDE0}, + [I(160,48)] = {27,0x7FFFB40}, + [I(161,48)] = {26,0x3FFFBA0}, + [I(162,48)] = {25,0x1FFFD20}, + [I(163,48)] = {27,0x7FFFB60}, + [I(164,48)] = {27,0x7FFFB80}, + [I(165,48)] = {28,0xFFFFD00}, + [I(166,48)] = {28,0xFFFFD20}, + [I(167,48)] = {26,0x3FFFBC0}, + [I(168,48)] = {28,0xFFFFD40}, + [I(169,48)] = {27,0x7FFFBA0}, + [I(170,48)] = {27,0x7FFFBC0}, + [I(171,48)] = {29,0x1FFFFE00}, + [I(172,48)] = {26,0x3FFFBE0}, + [I(173,48)] = {27,0x7FFFBE0}, + [I(174,48)] = {28,0xFFFFD60}, + [I(175,48)] = {28,0xFFFFD80}, + [I(176,48)] = {26,0x3FFFC00}, + [I(177,48)] = {26,0x3FFFC20}, + [I(178,48)] = {27,0x7FFFC00}, + [I(179,48)] = {26,0x3FFFC40}, + [I(180,48)] = {28,0xFFFFDA0}, + [I(181,48)] = {27,0x7FFFC20}, + [I(182,48)] = {28,0xFFFFDC0}, + [I(183,48)] = {28,0xFFFFDE0}, + [I(184,48)] = {25,0x1FFFD40}, + [I(185,48)] = {27,0x7FFFC40}, + [I(186,48)] = {27,0x7FFFC60}, + [I(187,48)] = {27,0x7FFFC80}, + [I(188,48)] = {28,0xFFFFE00}, + [I(189,48)] = {27,0x7FFFCA0}, + [I(190,48)] = {27,0x7FFFCC0}, + [I(191,48)] = {28,0xFFFFE20}, + [I(192,48)] = {31,0x7FFFFC00}, + [I(193,48)] = {31,0x7FFFFC20}, + [I(194,48)] = {25,0x1FFFD60}, + [I(195,48)] = {24,0xFFFE20}, + [I(196,48)] = {27,0x7FFFCE0}, + [I(197,48)] = {28,0xFFFFE40}, + [I(198,48)] = {27,0x7FFFD00}, + [I(199,48)] = {30,0x3FFFFD80}, + [I(200,48)] = {31,0x7FFFFC40}, + [I(201,48)] = {31,0x7FFFFC60}, + [I(202,48)] = {31,0x7FFFFC80}, + [I(203,48)] = {X32,0xFFFFFBC0}, + [I(204,48)] = {X32,0xFFFFFBE0}, + [I(205,48)] = {31,0x7FFFFCA0}, + [I(206,48)] = {29,0x1FFFFE20}, + [I(207,48)] = {30,0x3FFFFDA0}, + [I(208,48)] = {24,0xFFFE40}, + [I(209,48)] = {26,0x3FFFC60}, + [I(210,48)] = {31,0x7FFFFCC0}, + [I(211,48)] = {X32,0xFFFFFC00}, + [I(212,48)] = {X32,0xFFFFFC20}, + [I(213,48)] = {31,0x7FFFFCE0}, + [I(214,48)] = {X32,0xFFFFFC40}, + [I(215,48)] = {29,0x1FFFFE40}, + [I(216,48)] = {26,0x3FFFC80}, + [I(217,48)] = {26,0x3FFFCA0}, + [I(218,48)] = {31,0x7FFFFD00}, + [I(219,48)] = {31,0x7FFFFD20}, + [I(220,48)] = {64,0}, + [I(221,48)] = {X32,0xFFFFFC60}, + [I(222,48)] = {X32,0xFFFFFC80}, + [I(223,48)] = {X32,0xFFFFFCA0}, + [I(224,48)] = {25,0x1FFFD80}, + [I(225,48)] = {29,0x1FFFFE60}, + [I(226,48)] = {25,0x1FFFDA0}, + [I(227,48)] = {26,0x3FFFCC0}, + [I(228,48)] = {27,0x7FFFD20}, + [I(229,48)] = {26,0x3FFFCE0}, + [I(230,48)] = {26,0x3FFFD00}, + [I(231,48)] = {28,0xFFFFE60}, + [I(232,48)] = {27,0x7FFFD40}, + [I(233,48)] = {27,0x7FFFD60}, + [I(234,48)] = {30,0x3FFFFDC0}, + [I(235,48)] = {30,0x3FFFFDE0}, + [I(236,48)] = {29,0x1FFFFE80}, + [I(237,48)] = {29,0x1FFFFEA0}, + [I(238,48)] = {31,0x7FFFFD40}, + [I(239,48)] = {28,0xFFFFE80}, + [I(240,48)] = {31,0x7FFFFD60}, + [I(241,48)] = {X32,0xFFFFFCC0}, + [I(242,48)] = {31,0x7FFFFD80}, + [I(243,48)] = {31,0x7FFFFDA0}, + [I(244,48)] = {X32,0xFFFFFCE0}, + [I(245,48)] = {X32,0xFFFFFD00}, + [I(246,48)] = {X32,0xFFFFFD20}, + [I(247,48)] = {X32,0xFFFFFD40}, + [I(248,48)] = {X32,0xFFFFFD60}, + [I(249,48)] = {64,0}, + [I(250,48)] = {X32,0xFFFFFD80}, + [I(251,48)] = {X32,0xFFFFFDA0}, + [I(252,48)] = {X32,0xFFFFFDC0}, + [I(253,48)] = {X32,0xFFFFFDE0}, + [I(254,48)] = {X32,0xFFFFFE00}, + [I(255,48)] = {31,0x7FFFFDC0}, + [I(0,49)] = {18,0x3FF01}, + [I(1,49)] = {28,0xFFFFB01}, + [I(2,49)] = {64,0}, + [I(3,49)] = {64,0}, + [I(4,49)] = {64,0}, + [I(5,49)] = {64,0}, + [I(6,49)] = {64,0}, + [I(7,49)] = {64,0}, + [I(8,49)] = {64,0}, + [I(9,49)] = {29,0x1FFFFD41}, + [I(10,49)] = {64,0}, + [I(11,49)] = {64,0}, + [I(12,49)] = {64,0}, + [I(13,49)] = {64,0}, + [I(14,49)] = {64,0}, + [I(15,49)] = {64,0}, + [I(16,49)] = {64,0}, + [I(17,49)] = {64,0}, + [I(18,49)] = {64,0}, + [I(19,49)] = {64,0}, + [I(20,49)] = {64,0}, + [I(21,49)] = {64,0}, + [I(22,49)] = {64,0}, + [I(23,49)] = {64,0}, + [I(24,49)] = {64,0}, + [I(25,49)] = {64,0}, + [I(26,49)] = {64,0}, + [I(27,49)] = {64,0}, + [I(28,49)] = {64,0}, + [I(29,49)] = {64,0}, + [I(30,49)] = {64,0}, + [I(31,49)] = {64,0}, + [I(32,49)] = {11,0x281}, + [I(33,49)] = {15,0x7F01}, + [I(34,49)] = {15,0x7F21}, + [I(35,49)] = {17,0x1FF41}, + [I(36,49)] = {18,0x3FF21}, + [I(37,49)] = {11,0x2A1}, + [I(38,49)] = {13,0x1F01}, + [I(39,49)] = {16,0xFF41}, + [I(40,49)] = {15,0x7F41}, + [I(41,49)] = {15,0x7F61}, + [I(42,49)] = {13,0x1F21}, + [I(43,49)] = {16,0xFF61}, + [I(44,49)] = {13,0x1F41}, + [I(45,49)] = {11,0x2C1}, + [I(46,49)] = {11,0x2E1}, + [I(47,49)] = {11,0x301}, + [I(48,49)] = {10,0x1}, + [I(49,49)] = {10,0x21}, + [I(50,49)] = {10,0x41}, + [I(51,49)] = {11,0x321}, + [I(52,49)] = {11,0x341}, + [I(53,49)] = {11,0x361}, + [I(54,49)] = {11,0x381}, + [I(55,49)] = {11,0x3A1}, + [I(56,49)] = {11,0x3C1}, + [I(57,49)] = {11,0x3E1}, + [I(58,49)] = {12,0xB81}, + [I(59,49)] = {13,0x1F61}, + [I(60,49)] = {20,0xFFF81}, + [I(61,49)] = {11,0x401}, + [I(62,49)] = {17,0x1FF61}, + [I(63,49)] = {15,0x7F81}, + [I(64,49)] = {18,0x3FF41}, + [I(65,49)] = {11,0x421}, + [I(66,49)] = {12,0xBA1}, + [I(67,49)] = {12,0xBC1}, + [I(68,49)] = {12,0xBE1}, + [I(69,49)] = {12,0xC01}, + [I(70,49)] = {12,0xC21}, + [I(71,49)] = {12,0xC41}, + [I(72,49)] = {12,0xC61}, + [I(73,49)] = {12,0xC81}, + [I(74,49)] = {12,0xCA1}, + [I(75,49)] = {12,0xCC1}, + [I(76,49)] = {12,0xCE1}, + [I(77,49)] = {12,0xD01}, + [I(78,49)] = {12,0xD21}, + [I(79,49)] = {12,0xD41}, + [I(80,49)] = {12,0xD61}, + [I(81,49)] = {12,0xD81}, + [I(82,49)] = {12,0xDA1}, + [I(83,49)] = {12,0xDC1}, + [I(84,49)] = {12,0xDE1}, + [I(85,49)] = {12,0xE01}, + [I(86,49)] = {12,0xE21}, + [I(87,49)] = {12,0xE41}, + [I(88,49)] = {13,0x1F81}, + [I(89,49)] = {12,0xE61}, + [I(90,49)] = {13,0x1FA1}, + [I(91,49)] = {18,0x3FF61}, + [I(92,49)] = {24,0xFFFE01}, + [I(93,49)] = {18,0x3FF81}, + [I(94,49)] = {19,0x7FF81}, + [I(95,49)] = {11,0x441}, + [I(96,49)] = {20,0xFFFA1}, + [I(97,49)] = {10,0x61}, + [I(98,49)] = {11,0x461}, + [I(99,49)] = {10,0x81}, + [I(100,49)] = {11,0x481}, + [I(101,49)] = {10,0xA1}, + [I(102,49)] = {11,0x4A1}, + [I(103,49)] = {11,0x4C1}, + [I(104,49)] = {11,0x4E1}, + [I(105,49)] = {10,0xC1}, + [I(106,49)] = {12,0xE81}, + [I(107,49)] = {12,0xEA1}, + [I(108,49)] = {11,0x501}, + [I(109,49)] = {11,0x521}, + [I(110,49)] = {11,0x541}, + [I(111,49)] = {10,0xE1}, + [I(112,49)] = {11,0x561}, + [I(113,49)] = {12,0xEC1}, + [I(114,49)] = {11,0x581}, + [I(115,49)] = {10,0x101}, + [I(116,49)] = {10,0x121}, + [I(117,49)] = {11,0x5A1}, + [I(118,49)] = {12,0xEE1}, + [I(119,49)] = {12,0xF01}, + [I(120,49)] = {12,0xF21}, + [I(121,49)] = {12,0xF41}, + [I(122,49)] = {12,0xF61}, + [I(123,49)] = {20,0xFFFC1}, + [I(124,49)] = {16,0xFF81}, + [I(125,49)] = {19,0x7FFA1}, + [I(126,49)] = {18,0x3FFA1}, + [I(127,49)] = {64,0}, + [I(128,49)] = {25,0x1FFFCC1}, + [I(129,49)] = {27,0x7FFFA41}, + [I(130,49)] = {25,0x1FFFCE1}, + [I(131,49)] = {25,0x1FFFD01}, + [I(132,49)] = {27,0x7FFFA61}, + [I(133,49)] = {27,0x7FFFA81}, + [I(134,49)] = {27,0x7FFFAA1}, + [I(135,49)] = {28,0xFFFFB21}, + [I(136,49)] = {27,0x7FFFAC1}, + [I(137,49)] = {28,0xFFFFB41}, + [I(138,49)] = {28,0xFFFFB61}, + [I(139,49)] = {28,0xFFFFB81}, + [I(140,49)] = {28,0xFFFFBA1}, + [I(141,49)] = {28,0xFFFFBC1}, + [I(142,49)] = {29,0x1FFFFD61}, + [I(143,49)] = {28,0xFFFFBE1}, + [I(144,49)] = {29,0x1FFFFD81}, + [I(145,49)] = {29,0x1FFFFDA1}, + [I(146,49)] = {27,0x7FFFAE1}, + [I(147,49)] = {28,0xFFFFC01}, + [I(148,49)] = {29,0x1FFFFDC1}, + [I(149,49)] = {28,0xFFFFC21}, + [I(150,49)] = {28,0xFFFFC41}, + [I(151,49)] = {28,0xFFFFC61}, + [I(152,49)] = {28,0xFFFFC81}, + [I(153,49)] = {26,0x3FFFB81}, + [I(154,49)] = {27,0x7FFFB01}, + [I(155,49)] = {28,0xFFFFCA1}, + [I(156,49)] = {27,0x7FFFB21}, + [I(157,49)] = {28,0xFFFFCC1}, + [I(158,49)] = {28,0xFFFFCE1}, + [I(159,49)] = {29,0x1FFFFDE1}, + [I(160,49)] = {27,0x7FFFB41}, + [I(161,49)] = {26,0x3FFFBA1}, + [I(162,49)] = {25,0x1FFFD21}, + [I(163,49)] = {27,0x7FFFB61}, + [I(164,49)] = {27,0x7FFFB81}, + [I(165,49)] = {28,0xFFFFD01}, + [I(166,49)] = {28,0xFFFFD21}, + [I(167,49)] = {26,0x3FFFBC1}, + [I(168,49)] = {28,0xFFFFD41}, + [I(169,49)] = {27,0x7FFFBA1}, + [I(170,49)] = {27,0x7FFFBC1}, + [I(171,49)] = {29,0x1FFFFE01}, + [I(172,49)] = {26,0x3FFFBE1}, + [I(173,49)] = {27,0x7FFFBE1}, + [I(174,49)] = {28,0xFFFFD61}, + [I(175,49)] = {28,0xFFFFD81}, + [I(176,49)] = {26,0x3FFFC01}, + [I(177,49)] = {26,0x3FFFC21}, + [I(178,49)] = {27,0x7FFFC01}, + [I(179,49)] = {26,0x3FFFC41}, + [I(180,49)] = {28,0xFFFFDA1}, + [I(181,49)] = {27,0x7FFFC21}, + [I(182,49)] = {28,0xFFFFDC1}, + [I(183,49)] = {28,0xFFFFDE1}, + [I(184,49)] = {25,0x1FFFD41}, + [I(185,49)] = {27,0x7FFFC41}, + [I(186,49)] = {27,0x7FFFC61}, + [I(187,49)] = {27,0x7FFFC81}, + [I(188,49)] = {28,0xFFFFE01}, + [I(189,49)] = {27,0x7FFFCA1}, + [I(190,49)] = {27,0x7FFFCC1}, + [I(191,49)] = {28,0xFFFFE21}, + [I(192,49)] = {31,0x7FFFFC01}, + [I(193,49)] = {31,0x7FFFFC21}, + [I(194,49)] = {25,0x1FFFD61}, + [I(195,49)] = {24,0xFFFE21}, + [I(196,49)] = {27,0x7FFFCE1}, + [I(197,49)] = {28,0xFFFFE41}, + [I(198,49)] = {27,0x7FFFD01}, + [I(199,49)] = {30,0x3FFFFD81}, + [I(200,49)] = {31,0x7FFFFC41}, + [I(201,49)] = {31,0x7FFFFC61}, + [I(202,49)] = {31,0x7FFFFC81}, + [I(203,49)] = {X32,0xFFFFFBC1}, + [I(204,49)] = {X32,0xFFFFFBE1}, + [I(205,49)] = {31,0x7FFFFCA1}, + [I(206,49)] = {29,0x1FFFFE21}, + [I(207,49)] = {30,0x3FFFFDA1}, + [I(208,49)] = {24,0xFFFE41}, + [I(209,49)] = {26,0x3FFFC61}, + [I(210,49)] = {31,0x7FFFFCC1}, + [I(211,49)] = {X32,0xFFFFFC01}, + [I(212,49)] = {X32,0xFFFFFC21}, + [I(213,49)] = {31,0x7FFFFCE1}, + [I(214,49)] = {X32,0xFFFFFC41}, + [I(215,49)] = {29,0x1FFFFE41}, + [I(216,49)] = {26,0x3FFFC81}, + [I(217,49)] = {26,0x3FFFCA1}, + [I(218,49)] = {31,0x7FFFFD01}, + [I(219,49)] = {31,0x7FFFFD21}, + [I(220,49)] = {64,0}, + [I(221,49)] = {X32,0xFFFFFC61}, + [I(222,49)] = {X32,0xFFFFFC81}, + [I(223,49)] = {X32,0xFFFFFCA1}, + [I(224,49)] = {25,0x1FFFD81}, + [I(225,49)] = {29,0x1FFFFE61}, + [I(226,49)] = {25,0x1FFFDA1}, + [I(227,49)] = {26,0x3FFFCC1}, + [I(228,49)] = {27,0x7FFFD21}, + [I(229,49)] = {26,0x3FFFCE1}, + [I(230,49)] = {26,0x3FFFD01}, + [I(231,49)] = {28,0xFFFFE61}, + [I(232,49)] = {27,0x7FFFD41}, + [I(233,49)] = {27,0x7FFFD61}, + [I(234,49)] = {30,0x3FFFFDC1}, + [I(235,49)] = {30,0x3FFFFDE1}, + [I(236,49)] = {29,0x1FFFFE81}, + [I(237,49)] = {29,0x1FFFFEA1}, + [I(238,49)] = {31,0x7FFFFD41}, + [I(239,49)] = {28,0xFFFFE81}, + [I(240,49)] = {31,0x7FFFFD61}, + [I(241,49)] = {X32,0xFFFFFCC1}, + [I(242,49)] = {31,0x7FFFFD81}, + [I(243,49)] = {31,0x7FFFFDA1}, + [I(244,49)] = {X32,0xFFFFFCE1}, + [I(245,49)] = {X32,0xFFFFFD01}, + [I(246,49)] = {X32,0xFFFFFD21}, + [I(247,49)] = {X32,0xFFFFFD41}, + [I(248,49)] = {X32,0xFFFFFD61}, + [I(249,49)] = {64,0}, + [I(250,49)] = {X32,0xFFFFFD81}, + [I(251,49)] = {X32,0xFFFFFDA1}, + [I(252,49)] = {X32,0xFFFFFDC1}, + [I(253,49)] = {X32,0xFFFFFDE1}, + [I(254,49)] = {X32,0xFFFFFE01}, + [I(255,49)] = {31,0x7FFFFDC1}, + [I(0,50)] = {18,0x3FF02}, + [I(1,50)] = {28,0xFFFFB02}, + [I(2,50)] = {64,0}, + [I(3,50)] = {64,0}, + [I(4,50)] = {64,0}, + [I(5,50)] = {64,0}, + [I(6,50)] = {64,0}, + [I(7,50)] = {64,0}, + [I(8,50)] = {64,0}, + [I(9,50)] = {29,0x1FFFFD42}, + [I(10,50)] = {64,0}, + [I(11,50)] = {64,0}, + [I(12,50)] = {64,0}, + [I(13,50)] = {64,0}, + [I(14,50)] = {64,0}, + [I(15,50)] = {64,0}, + [I(16,50)] = {64,0}, + [I(17,50)] = {64,0}, + [I(18,50)] = {64,0}, + [I(19,50)] = {64,0}, + [I(20,50)] = {64,0}, + [I(21,50)] = {64,0}, + [I(22,50)] = {64,0}, + [I(23,50)] = {64,0}, + [I(24,50)] = {64,0}, + [I(25,50)] = {64,0}, + [I(26,50)] = {64,0}, + [I(27,50)] = {64,0}, + [I(28,50)] = {64,0}, + [I(29,50)] = {64,0}, + [I(30,50)] = {64,0}, + [I(31,50)] = {64,0}, + [I(32,50)] = {11,0x282}, + [I(33,50)] = {15,0x7F02}, + [I(34,50)] = {15,0x7F22}, + [I(35,50)] = {17,0x1FF42}, + [I(36,50)] = {18,0x3FF22}, + [I(37,50)] = {11,0x2A2}, + [I(38,50)] = {13,0x1F02}, + [I(39,50)] = {16,0xFF42}, + [I(40,50)] = {15,0x7F42}, + [I(41,50)] = {15,0x7F62}, + [I(42,50)] = {13,0x1F22}, + [I(43,50)] = {16,0xFF62}, + [I(44,50)] = {13,0x1F42}, + [I(45,50)] = {11,0x2C2}, + [I(46,50)] = {11,0x2E2}, + [I(47,50)] = {11,0x302}, + [I(48,50)] = {10,0x2}, + [I(49,50)] = {10,0x22}, + [I(50,50)] = {10,0x42}, + [I(51,50)] = {11,0x322}, + [I(52,50)] = {11,0x342}, + [I(53,50)] = {11,0x362}, + [I(54,50)] = {11,0x382}, + [I(55,50)] = {11,0x3A2}, + [I(56,50)] = {11,0x3C2}, + [I(57,50)] = {11,0x3E2}, + [I(58,50)] = {12,0xB82}, + [I(59,50)] = {13,0x1F62}, + [I(60,50)] = {20,0xFFF82}, + [I(61,50)] = {11,0x402}, + [I(62,50)] = {17,0x1FF62}, + [I(63,50)] = {15,0x7F82}, + [I(64,50)] = {18,0x3FF42}, + [I(65,50)] = {11,0x422}, + [I(66,50)] = {12,0xBA2}, + [I(67,50)] = {12,0xBC2}, + [I(68,50)] = {12,0xBE2}, + [I(69,50)] = {12,0xC02}, + [I(70,50)] = {12,0xC22}, + [I(71,50)] = {12,0xC42}, + [I(72,50)] = {12,0xC62}, + [I(73,50)] = {12,0xC82}, + [I(74,50)] = {12,0xCA2}, + [I(75,50)] = {12,0xCC2}, + [I(76,50)] = {12,0xCE2}, + [I(77,50)] = {12,0xD02}, + [I(78,50)] = {12,0xD22}, + [I(79,50)] = {12,0xD42}, + [I(80,50)] = {12,0xD62}, + [I(81,50)] = {12,0xD82}, + [I(82,50)] = {12,0xDA2}, + [I(83,50)] = {12,0xDC2}, + [I(84,50)] = {12,0xDE2}, + [I(85,50)] = {12,0xE02}, + [I(86,50)] = {12,0xE22}, + [I(87,50)] = {12,0xE42}, + [I(88,50)] = {13,0x1F82}, + [I(89,50)] = {12,0xE62}, + [I(90,50)] = {13,0x1FA2}, + [I(91,50)] = {18,0x3FF62}, + [I(92,50)] = {24,0xFFFE02}, + [I(93,50)] = {18,0x3FF82}, + [I(94,50)] = {19,0x7FF82}, + [I(95,50)] = {11,0x442}, + [I(96,50)] = {20,0xFFFA2}, + [I(97,50)] = {10,0x62}, + [I(98,50)] = {11,0x462}, + [I(99,50)] = {10,0x82}, + [I(100,50)] = {11,0x482}, + [I(101,50)] = {10,0xA2}, + [I(102,50)] = {11,0x4A2}, + [I(103,50)] = {11,0x4C2}, + [I(104,50)] = {11,0x4E2}, + [I(105,50)] = {10,0xC2}, + [I(106,50)] = {12,0xE82}, + [I(107,50)] = {12,0xEA2}, + [I(108,50)] = {11,0x502}, + [I(109,50)] = {11,0x522}, + [I(110,50)] = {11,0x542}, + [I(111,50)] = {10,0xE2}, + [I(112,50)] = {11,0x562}, + [I(113,50)] = {12,0xEC2}, + [I(114,50)] = {11,0x582}, + [I(115,50)] = {10,0x102}, + [I(116,50)] = {10,0x122}, + [I(117,50)] = {11,0x5A2}, + [I(118,50)] = {12,0xEE2}, + [I(119,50)] = {12,0xF02}, + [I(120,50)] = {12,0xF22}, + [I(121,50)] = {12,0xF42}, + [I(122,50)] = {12,0xF62}, + [I(123,50)] = {20,0xFFFC2}, + [I(124,50)] = {16,0xFF82}, + [I(125,50)] = {19,0x7FFA2}, + [I(126,50)] = {18,0x3FFA2}, + [I(127,50)] = {64,0}, + [I(128,50)] = {25,0x1FFFCC2}, + [I(129,50)] = {27,0x7FFFA42}, + [I(130,50)] = {25,0x1FFFCE2}, + [I(131,50)] = {25,0x1FFFD02}, + [I(132,50)] = {27,0x7FFFA62}, + [I(133,50)] = {27,0x7FFFA82}, + [I(134,50)] = {27,0x7FFFAA2}, + [I(135,50)] = {28,0xFFFFB22}, + [I(136,50)] = {27,0x7FFFAC2}, + [I(137,50)] = {28,0xFFFFB42}, + [I(138,50)] = {28,0xFFFFB62}, + [I(139,50)] = {28,0xFFFFB82}, + [I(140,50)] = {28,0xFFFFBA2}, + [I(141,50)] = {28,0xFFFFBC2}, + [I(142,50)] = {29,0x1FFFFD62}, + [I(143,50)] = {28,0xFFFFBE2}, + [I(144,50)] = {29,0x1FFFFD82}, + [I(145,50)] = {29,0x1FFFFDA2}, + [I(146,50)] = {27,0x7FFFAE2}, + [I(147,50)] = {28,0xFFFFC02}, + [I(148,50)] = {29,0x1FFFFDC2}, + [I(149,50)] = {28,0xFFFFC22}, + [I(150,50)] = {28,0xFFFFC42}, + [I(151,50)] = {28,0xFFFFC62}, + [I(152,50)] = {28,0xFFFFC82}, + [I(153,50)] = {26,0x3FFFB82}, + [I(154,50)] = {27,0x7FFFB02}, + [I(155,50)] = {28,0xFFFFCA2}, + [I(156,50)] = {27,0x7FFFB22}, + [I(157,50)] = {28,0xFFFFCC2}, + [I(158,50)] = {28,0xFFFFCE2}, + [I(159,50)] = {29,0x1FFFFDE2}, + [I(160,50)] = {27,0x7FFFB42}, + [I(161,50)] = {26,0x3FFFBA2}, + [I(162,50)] = {25,0x1FFFD22}, + [I(163,50)] = {27,0x7FFFB62}, + [I(164,50)] = {27,0x7FFFB82}, + [I(165,50)] = {28,0xFFFFD02}, + [I(166,50)] = {28,0xFFFFD22}, + [I(167,50)] = {26,0x3FFFBC2}, + [I(168,50)] = {28,0xFFFFD42}, + [I(169,50)] = {27,0x7FFFBA2}, + [I(170,50)] = {27,0x7FFFBC2}, + [I(171,50)] = {29,0x1FFFFE02}, + [I(172,50)] = {26,0x3FFFBE2}, + [I(173,50)] = {27,0x7FFFBE2}, + [I(174,50)] = {28,0xFFFFD62}, + [I(175,50)] = {28,0xFFFFD82}, + [I(176,50)] = {26,0x3FFFC02}, + [I(177,50)] = {26,0x3FFFC22}, + [I(178,50)] = {27,0x7FFFC02}, + [I(179,50)] = {26,0x3FFFC42}, + [I(180,50)] = {28,0xFFFFDA2}, + [I(181,50)] = {27,0x7FFFC22}, + [I(182,50)] = {28,0xFFFFDC2}, + [I(183,50)] = {28,0xFFFFDE2}, + [I(184,50)] = {25,0x1FFFD42}, + [I(185,50)] = {27,0x7FFFC42}, + [I(186,50)] = {27,0x7FFFC62}, + [I(187,50)] = {27,0x7FFFC82}, + [I(188,50)] = {28,0xFFFFE02}, + [I(189,50)] = {27,0x7FFFCA2}, + [I(190,50)] = {27,0x7FFFCC2}, + [I(191,50)] = {28,0xFFFFE22}, + [I(192,50)] = {31,0x7FFFFC02}, + [I(193,50)] = {31,0x7FFFFC22}, + [I(194,50)] = {25,0x1FFFD62}, + [I(195,50)] = {24,0xFFFE22}, + [I(196,50)] = {27,0x7FFFCE2}, + [I(197,50)] = {28,0xFFFFE42}, + [I(198,50)] = {27,0x7FFFD02}, + [I(199,50)] = {30,0x3FFFFD82}, + [I(200,50)] = {31,0x7FFFFC42}, + [I(201,50)] = {31,0x7FFFFC62}, + [I(202,50)] = {31,0x7FFFFC82}, + [I(203,50)] = {X32,0xFFFFFBC2}, + [I(204,50)] = {X32,0xFFFFFBE2}, + [I(205,50)] = {31,0x7FFFFCA2}, + [I(206,50)] = {29,0x1FFFFE22}, + [I(207,50)] = {30,0x3FFFFDA2}, + [I(208,50)] = {24,0xFFFE42}, + [I(209,50)] = {26,0x3FFFC62}, + [I(210,50)] = {31,0x7FFFFCC2}, + [I(211,50)] = {X32,0xFFFFFC02}, + [I(212,50)] = {X32,0xFFFFFC22}, + [I(213,50)] = {31,0x7FFFFCE2}, + [I(214,50)] = {X32,0xFFFFFC42}, + [I(215,50)] = {29,0x1FFFFE42}, + [I(216,50)] = {26,0x3FFFC82}, + [I(217,50)] = {26,0x3FFFCA2}, + [I(218,50)] = {31,0x7FFFFD02}, + [I(219,50)] = {31,0x7FFFFD22}, + [I(220,50)] = {64,0}, + [I(221,50)] = {X32,0xFFFFFC62}, + [I(222,50)] = {X32,0xFFFFFC82}, + [I(223,50)] = {X32,0xFFFFFCA2}, + [I(224,50)] = {25,0x1FFFD82}, + [I(225,50)] = {29,0x1FFFFE62}, + [I(226,50)] = {25,0x1FFFDA2}, + [I(227,50)] = {26,0x3FFFCC2}, + [I(228,50)] = {27,0x7FFFD22}, + [I(229,50)] = {26,0x3FFFCE2}, + [I(230,50)] = {26,0x3FFFD02}, + [I(231,50)] = {28,0xFFFFE62}, + [I(232,50)] = {27,0x7FFFD42}, + [I(233,50)] = {27,0x7FFFD62}, + [I(234,50)] = {30,0x3FFFFDC2}, + [I(235,50)] = {30,0x3FFFFDE2}, + [I(236,50)] = {29,0x1FFFFE82}, + [I(237,50)] = {29,0x1FFFFEA2}, + [I(238,50)] = {31,0x7FFFFD42}, + [I(239,50)] = {28,0xFFFFE82}, + [I(240,50)] = {31,0x7FFFFD62}, + [I(241,50)] = {X32,0xFFFFFCC2}, + [I(242,50)] = {31,0x7FFFFD82}, + [I(243,50)] = {31,0x7FFFFDA2}, + [I(244,50)] = {X32,0xFFFFFCE2}, + [I(245,50)] = {X32,0xFFFFFD02}, + [I(246,50)] = {X32,0xFFFFFD22}, + [I(247,50)] = {X32,0xFFFFFD42}, + [I(248,50)] = {X32,0xFFFFFD62}, + [I(249,50)] = {64,0}, + [I(250,50)] = {X32,0xFFFFFD82}, + [I(251,50)] = {X32,0xFFFFFDA2}, + [I(252,50)] = {X32,0xFFFFFDC2}, + [I(253,50)] = {X32,0xFFFFFDE2}, + [I(254,50)] = {X32,0xFFFFFE02}, + [I(255,50)] = {31,0x7FFFFDC2}, + [I(0,51)] = {19,0x7FE19}, + [I(1,51)] = {29,0x1FFFF619}, + [I(2,51)] = {64,0}, + [I(3,51)] = {64,0}, + [I(4,51)] = {64,0}, + [I(5,51)] = {64,0}, + [I(6,51)] = {64,0}, + [I(7,51)] = {64,0}, + [I(8,51)] = {64,0}, + [I(9,51)] = {30,0x3FFFFA99}, + [I(10,51)] = {64,0}, + [I(11,51)] = {64,0}, + [I(12,51)] = {64,0}, + [I(13,51)] = {64,0}, + [I(14,51)] = {64,0}, + [I(15,51)] = {64,0}, + [I(16,51)] = {64,0}, + [I(17,51)] = {64,0}, + [I(18,51)] = {64,0}, + [I(19,51)] = {64,0}, + [I(20,51)] = {64,0}, + [I(21,51)] = {64,0}, + [I(22,51)] = {64,0}, + [I(23,51)] = {64,0}, + [I(24,51)] = {64,0}, + [I(25,51)] = {64,0}, + [I(26,51)] = {64,0}, + [I(27,51)] = {64,0}, + [I(28,51)] = {64,0}, + [I(29,51)] = {64,0}, + [I(30,51)] = {64,0}, + [I(31,51)] = {64,0}, + [I(32,51)] = {12,0x519}, + [I(33,51)] = {16,0xFE19}, + [I(34,51)] = {16,0xFE59}, + [I(35,51)] = {18,0x3FE99}, + [I(36,51)] = {19,0x7FE59}, + [I(37,51)] = {12,0x559}, + [I(38,51)] = {14,0x3E19}, + [I(39,51)] = {17,0x1FE99}, + [I(40,51)] = {16,0xFE99}, + [I(41,51)] = {16,0xFED9}, + [I(42,51)] = {14,0x3E59}, + [I(43,51)] = {17,0x1FED9}, + [I(44,51)] = {14,0x3E99}, + [I(45,51)] = {12,0x599}, + [I(46,51)] = {12,0x5D9}, + [I(47,51)] = {12,0x619}, + [I(48,51)] = {11,0x19}, + [I(49,51)] = {11,0x59}, + [I(50,51)] = {11,0x99}, + [I(51,51)] = {12,0x659}, + [I(52,51)] = {12,0x699}, + [I(53,51)] = {12,0x6D9}, + [I(54,51)] = {12,0x719}, + [I(55,51)] = {12,0x759}, + [I(56,51)] = {12,0x799}, + [I(57,51)] = {12,0x7D9}, + [I(58,51)] = {13,0x1719}, + [I(59,51)] = {14,0x3ED9}, + [I(60,51)] = {21,0x1FFF19}, + [I(61,51)] = {12,0x819}, + [I(62,51)] = {18,0x3FED9}, + [I(63,51)] = {16,0xFF19}, + [I(64,51)] = {19,0x7FE99}, + [I(65,51)] = {12,0x859}, + [I(66,51)] = {13,0x1759}, + [I(67,51)] = {13,0x1799}, + [I(68,51)] = {13,0x17D9}, + [I(69,51)] = {13,0x1819}, + [I(70,51)] = {13,0x1859}, + [I(71,51)] = {13,0x1899}, + [I(72,51)] = {13,0x18D9}, + [I(73,51)] = {13,0x1919}, + [I(74,51)] = {13,0x1959}, + [I(75,51)] = {13,0x1999}, + [I(76,51)] = {13,0x19D9}, + [I(77,51)] = {13,0x1A19}, + [I(78,51)] = {13,0x1A59}, + [I(79,51)] = {13,0x1A99}, + [I(80,51)] = {13,0x1AD9}, + [I(81,51)] = {13,0x1B19}, + [I(82,51)] = {13,0x1B59}, + [I(83,51)] = {13,0x1B99}, + [I(84,51)] = {13,0x1BD9}, + [I(85,51)] = {13,0x1C19}, + [I(86,51)] = {13,0x1C59}, + [I(87,51)] = {13,0x1C99}, + [I(88,51)] = {14,0x3F19}, + [I(89,51)] = {13,0x1CD9}, + [I(90,51)] = {14,0x3F59}, + [I(91,51)] = {19,0x7FED9}, + [I(92,51)] = {25,0x1FFFC19}, + [I(93,51)] = {19,0x7FF19}, + [I(94,51)] = {20,0xFFF19}, + [I(95,51)] = {12,0x899}, + [I(96,51)] = {21,0x1FFF59}, + [I(97,51)] = {11,0xD9}, + [I(98,51)] = {12,0x8D9}, + [I(99,51)] = {11,0x119}, + [I(100,51)] = {12,0x919}, + [I(101,51)] = {11,0x159}, + [I(102,51)] = {12,0x959}, + [I(103,51)] = {12,0x999}, + [I(104,51)] = {12,0x9D9}, + [I(105,51)] = {11,0x199}, + [I(106,51)] = {13,0x1D19}, + [I(107,51)] = {13,0x1D59}, + [I(108,51)] = {12,0xA19}, + [I(109,51)] = {12,0xA59}, + [I(110,51)] = {12,0xA99}, + [I(111,51)] = {11,0x1D9}, + [I(112,51)] = {12,0xAD9}, + [I(113,51)] = {13,0x1D99}, + [I(114,51)] = {12,0xB19}, + [I(115,51)] = {11,0x219}, + [I(116,51)] = {11,0x259}, + [I(117,51)] = {12,0xB59}, + [I(118,51)] = {13,0x1DD9}, + [I(119,51)] = {13,0x1E19}, + [I(120,51)] = {13,0x1E59}, + [I(121,51)] = {13,0x1E99}, + [I(122,51)] = {13,0x1ED9}, + [I(123,51)] = {21,0x1FFF99}, + [I(124,51)] = {17,0x1FF19}, + [I(125,51)] = {20,0xFFF59}, + [I(126,51)] = {19,0x7FF59}, + [I(127,51)] = {64,0}, + [I(128,51)] = {26,0x3FFF999}, + [I(129,51)] = {28,0xFFFF499}, + [I(130,51)] = {26,0x3FFF9D9}, + [I(131,51)] = {26,0x3FFFA19}, + [I(132,51)] = {28,0xFFFF4D9}, + [I(133,51)] = {28,0xFFFF519}, + [I(134,51)] = {28,0xFFFF559}, + [I(135,51)] = {29,0x1FFFF659}, + [I(136,51)] = {28,0xFFFF599}, + [I(137,51)] = {29,0x1FFFF699}, + [I(138,51)] = {29,0x1FFFF6D9}, + [I(139,51)] = {29,0x1FFFF719}, + [I(140,51)] = {29,0x1FFFF759}, + [I(141,51)] = {29,0x1FFFF799}, + [I(142,51)] = {30,0x3FFFFAD9}, + [I(143,51)] = {29,0x1FFFF7D9}, + [I(144,51)] = {30,0x3FFFFB19}, + [I(145,51)] = {30,0x3FFFFB59}, + [I(146,51)] = {28,0xFFFF5D9}, + [I(147,51)] = {29,0x1FFFF819}, + [I(148,51)] = {30,0x3FFFFB99}, + [I(149,51)] = {29,0x1FFFF859}, + [I(150,51)] = {29,0x1FFFF899}, + [I(151,51)] = {29,0x1FFFF8D9}, + [I(152,51)] = {29,0x1FFFF919}, + [I(153,51)] = {27,0x7FFF719}, + [I(154,51)] = {28,0xFFFF619}, + [I(155,51)] = {29,0x1FFFF959}, + [I(156,51)] = {28,0xFFFF659}, + [I(157,51)] = {29,0x1FFFF999}, + [I(158,51)] = {29,0x1FFFF9D9}, + [I(159,51)] = {30,0x3FFFFBD9}, + [I(160,51)] = {28,0xFFFF699}, + [I(161,51)] = {27,0x7FFF759}, + [I(162,51)] = {26,0x3FFFA59}, + [I(163,51)] = {28,0xFFFF6D9}, + [I(164,51)] = {28,0xFFFF719}, + [I(165,51)] = {29,0x1FFFFA19}, + [I(166,51)] = {29,0x1FFFFA59}, + [I(167,51)] = {27,0x7FFF799}, + [I(168,51)] = {29,0x1FFFFA99}, + [I(169,51)] = {28,0xFFFF759}, + [I(170,51)] = {28,0xFFFF799}, + [I(171,51)] = {30,0x3FFFFC19}, + [I(172,51)] = {27,0x7FFF7D9}, + [I(173,51)] = {28,0xFFFF7D9}, + [I(174,51)] = {29,0x1FFFFAD9}, + [I(175,51)] = {29,0x1FFFFB19}, + [I(176,51)] = {27,0x7FFF819}, + [I(177,51)] = {27,0x7FFF859}, + [I(178,51)] = {28,0xFFFF819}, + [I(179,51)] = {27,0x7FFF899}, + [I(180,51)] = {29,0x1FFFFB59}, + [I(181,51)] = {28,0xFFFF859}, + [I(182,51)] = {29,0x1FFFFB99}, + [I(183,51)] = {29,0x1FFFFBD9}, + [I(184,51)] = {26,0x3FFFA99}, + [I(185,51)] = {28,0xFFFF899}, + [I(186,51)] = {28,0xFFFF8D9}, + [I(187,51)] = {28,0xFFFF919}, + [I(188,51)] = {29,0x1FFFFC19}, + [I(189,51)] = {28,0xFFFF959}, + [I(190,51)] = {28,0xFFFF999}, + [I(191,51)] = {29,0x1FFFFC59}, + [I(192,51)] = {X32,0xFFFFF819}, + [I(193,51)] = {X32,0xFFFFF859}, + [I(194,51)] = {26,0x3FFFAD9}, + [I(195,51)] = {25,0x1FFFC59}, + [I(196,51)] = {28,0xFFFF9D9}, + [I(197,51)] = {29,0x1FFFFC99}, + [I(198,51)] = {28,0xFFFFA19}, + [I(199,51)] = {31,0x7FFFFB19}, + [I(200,51)] = {X32,0xFFFFF899}, + [I(201,51)] = {X32,0xFFFFF8D9}, + [I(202,51)] = {X32,0xFFFFF919}, + [I(203,51)] = {64,0}, + [I(204,51)] = {64,0}, + [I(205,51)] = {X32,0xFFFFF959}, + [I(206,51)] = {30,0x3FFFFC59}, + [I(207,51)] = {31,0x7FFFFB59}, + [I(208,51)] = {25,0x1FFFC99}, + [I(209,51)] = {27,0x7FFF8D9}, + [I(210,51)] = {X32,0xFFFFF999}, + [I(211,51)] = {64,0}, + [I(212,51)] = {64,0}, + [I(213,51)] = {X32,0xFFFFF9D9}, + [I(214,51)] = {64,0}, + [I(215,51)] = {30,0x3FFFFC99}, + [I(216,51)] = {27,0x7FFF919}, + [I(217,51)] = {27,0x7FFF959}, + [I(218,51)] = {X32,0xFFFFFA19}, + [I(219,51)] = {X32,0xFFFFFA59}, + [I(220,51)] = {64,0}, + [I(221,51)] = {64,0}, + [I(222,51)] = {64,0}, + [I(223,51)] = {64,0}, + [I(224,51)] = {26,0x3FFFB19}, + [I(225,51)] = {30,0x3FFFFCD9}, + [I(226,51)] = {26,0x3FFFB59}, + [I(227,51)] = {27,0x7FFF999}, + [I(228,51)] = {28,0xFFFFA59}, + [I(229,51)] = {27,0x7FFF9D9}, + [I(230,51)] = {27,0x7FFFA19}, + [I(231,51)] = {29,0x1FFFFCD9}, + [I(232,51)] = {28,0xFFFFA99}, + [I(233,51)] = {28,0xFFFFAD9}, + [I(234,51)] = {31,0x7FFFFB99}, + [I(235,51)] = {31,0x7FFFFBD9}, + [I(236,51)] = {30,0x3FFFFD19}, + [I(237,51)] = {30,0x3FFFFD59}, + [I(238,51)] = {X32,0xFFFFFA99}, + [I(239,51)] = {29,0x1FFFFD19}, + [I(240,51)] = {X32,0xFFFFFAD9}, + [I(241,51)] = {64,0}, + [I(242,51)] = {X32,0xFFFFFB19}, + [I(243,51)] = {X32,0xFFFFFB59}, + [I(244,51)] = {64,0}, + [I(245,51)] = {64,0}, + [I(246,51)] = {64,0}, + [I(247,51)] = {64,0}, + [I(248,51)] = {64,0}, + [I(249,51)] = {64,0}, + [I(250,51)] = {64,0}, + [I(251,51)] = {64,0}, + [I(252,51)] = {64,0}, + [I(253,51)] = {64,0}, + [I(254,51)] = {64,0}, + [I(255,51)] = {X32,0xFFFFFB99}, + [I(0,52)] = {19,0x7FE1A}, + [I(1,52)] = {29,0x1FFFF61A}, + [I(2,52)] = {64,0}, + [I(3,52)] = {64,0}, + [I(4,52)] = {64,0}, + [I(5,52)] = {64,0}, + [I(6,52)] = {64,0}, + [I(7,52)] = {64,0}, + [I(8,52)] = {64,0}, + [I(9,52)] = {30,0x3FFFFA9A}, + [I(10,52)] = {64,0}, + [I(11,52)] = {64,0}, + [I(12,52)] = {64,0}, + [I(13,52)] = {64,0}, + [I(14,52)] = {64,0}, + [I(15,52)] = {64,0}, + [I(16,52)] = {64,0}, + [I(17,52)] = {64,0}, + [I(18,52)] = {64,0}, + [I(19,52)] = {64,0}, + [I(20,52)] = {64,0}, + [I(21,52)] = {64,0}, + [I(22,52)] = {64,0}, + [I(23,52)] = {64,0}, + [I(24,52)] = {64,0}, + [I(25,52)] = {64,0}, + [I(26,52)] = {64,0}, + [I(27,52)] = {64,0}, + [I(28,52)] = {64,0}, + [I(29,52)] = {64,0}, + [I(30,52)] = {64,0}, + [I(31,52)] = {64,0}, + [I(32,52)] = {12,0x51A}, + [I(33,52)] = {16,0xFE1A}, + [I(34,52)] = {16,0xFE5A}, + [I(35,52)] = {18,0x3FE9A}, + [I(36,52)] = {19,0x7FE5A}, + [I(37,52)] = {12,0x55A}, + [I(38,52)] = {14,0x3E1A}, + [I(39,52)] = {17,0x1FE9A}, + [I(40,52)] = {16,0xFE9A}, + [I(41,52)] = {16,0xFEDA}, + [I(42,52)] = {14,0x3E5A}, + [I(43,52)] = {17,0x1FEDA}, + [I(44,52)] = {14,0x3E9A}, + [I(45,52)] = {12,0x59A}, + [I(46,52)] = {12,0x5DA}, + [I(47,52)] = {12,0x61A}, + [I(48,52)] = {11,0x1A}, + [I(49,52)] = {11,0x5A}, + [I(50,52)] = {11,0x9A}, + [I(51,52)] = {12,0x65A}, + [I(52,52)] = {12,0x69A}, + [I(53,52)] = {12,0x6DA}, + [I(54,52)] = {12,0x71A}, + [I(55,52)] = {12,0x75A}, + [I(56,52)] = {12,0x79A}, + [I(57,52)] = {12,0x7DA}, + [I(58,52)] = {13,0x171A}, + [I(59,52)] = {14,0x3EDA}, + [I(60,52)] = {21,0x1FFF1A}, + [I(61,52)] = {12,0x81A}, + [I(62,52)] = {18,0x3FEDA}, + [I(63,52)] = {16,0xFF1A}, + [I(64,52)] = {19,0x7FE9A}, + [I(65,52)] = {12,0x85A}, + [I(66,52)] = {13,0x175A}, + [I(67,52)] = {13,0x179A}, + [I(68,52)] = {13,0x17DA}, + [I(69,52)] = {13,0x181A}, + [I(70,52)] = {13,0x185A}, + [I(71,52)] = {13,0x189A}, + [I(72,52)] = {13,0x18DA}, + [I(73,52)] = {13,0x191A}, + [I(74,52)] = {13,0x195A}, + [I(75,52)] = {13,0x199A}, + [I(76,52)] = {13,0x19DA}, + [I(77,52)] = {13,0x1A1A}, + [I(78,52)] = {13,0x1A5A}, + [I(79,52)] = {13,0x1A9A}, + [I(80,52)] = {13,0x1ADA}, + [I(81,52)] = {13,0x1B1A}, + [I(82,52)] = {13,0x1B5A}, + [I(83,52)] = {13,0x1B9A}, + [I(84,52)] = {13,0x1BDA}, + [I(85,52)] = {13,0x1C1A}, + [I(86,52)] = {13,0x1C5A}, + [I(87,52)] = {13,0x1C9A}, + [I(88,52)] = {14,0x3F1A}, + [I(89,52)] = {13,0x1CDA}, + [I(90,52)] = {14,0x3F5A}, + [I(91,52)] = {19,0x7FEDA}, + [I(92,52)] = {25,0x1FFFC1A}, + [I(93,52)] = {19,0x7FF1A}, + [I(94,52)] = {20,0xFFF1A}, + [I(95,52)] = {12,0x89A}, + [I(96,52)] = {21,0x1FFF5A}, + [I(97,52)] = {11,0xDA}, + [I(98,52)] = {12,0x8DA}, + [I(99,52)] = {11,0x11A}, + [I(100,52)] = {12,0x91A}, + [I(101,52)] = {11,0x15A}, + [I(102,52)] = {12,0x95A}, + [I(103,52)] = {12,0x99A}, + [I(104,52)] = {12,0x9DA}, + [I(105,52)] = {11,0x19A}, + [I(106,52)] = {13,0x1D1A}, + [I(107,52)] = {13,0x1D5A}, + [I(108,52)] = {12,0xA1A}, + [I(109,52)] = {12,0xA5A}, + [I(110,52)] = {12,0xA9A}, + [I(111,52)] = {11,0x1DA}, + [I(112,52)] = {12,0xADA}, + [I(113,52)] = {13,0x1D9A}, + [I(114,52)] = {12,0xB1A}, + [I(115,52)] = {11,0x21A}, + [I(116,52)] = {11,0x25A}, + [I(117,52)] = {12,0xB5A}, + [I(118,52)] = {13,0x1DDA}, + [I(119,52)] = {13,0x1E1A}, + [I(120,52)] = {13,0x1E5A}, + [I(121,52)] = {13,0x1E9A}, + [I(122,52)] = {13,0x1EDA}, + [I(123,52)] = {21,0x1FFF9A}, + [I(124,52)] = {17,0x1FF1A}, + [I(125,52)] = {20,0xFFF5A}, + [I(126,52)] = {19,0x7FF5A}, + [I(127,52)] = {64,0}, + [I(128,52)] = {26,0x3FFF99A}, + [I(129,52)] = {28,0xFFFF49A}, + [I(130,52)] = {26,0x3FFF9DA}, + [I(131,52)] = {26,0x3FFFA1A}, + [I(132,52)] = {28,0xFFFF4DA}, + [I(133,52)] = {28,0xFFFF51A}, + [I(134,52)] = {28,0xFFFF55A}, + [I(135,52)] = {29,0x1FFFF65A}, + [I(136,52)] = {28,0xFFFF59A}, + [I(137,52)] = {29,0x1FFFF69A}, + [I(138,52)] = {29,0x1FFFF6DA}, + [I(139,52)] = {29,0x1FFFF71A}, + [I(140,52)] = {29,0x1FFFF75A}, + [I(141,52)] = {29,0x1FFFF79A}, + [I(142,52)] = {30,0x3FFFFADA}, + [I(143,52)] = {29,0x1FFFF7DA}, + [I(144,52)] = {30,0x3FFFFB1A}, + [I(145,52)] = {30,0x3FFFFB5A}, + [I(146,52)] = {28,0xFFFF5DA}, + [I(147,52)] = {29,0x1FFFF81A}, + [I(148,52)] = {30,0x3FFFFB9A}, + [I(149,52)] = {29,0x1FFFF85A}, + [I(150,52)] = {29,0x1FFFF89A}, + [I(151,52)] = {29,0x1FFFF8DA}, + [I(152,52)] = {29,0x1FFFF91A}, + [I(153,52)] = {27,0x7FFF71A}, + [I(154,52)] = {28,0xFFFF61A}, + [I(155,52)] = {29,0x1FFFF95A}, + [I(156,52)] = {28,0xFFFF65A}, + [I(157,52)] = {29,0x1FFFF99A}, + [I(158,52)] = {29,0x1FFFF9DA}, + [I(159,52)] = {30,0x3FFFFBDA}, + [I(160,52)] = {28,0xFFFF69A}, + [I(161,52)] = {27,0x7FFF75A}, + [I(162,52)] = {26,0x3FFFA5A}, + [I(163,52)] = {28,0xFFFF6DA}, + [I(164,52)] = {28,0xFFFF71A}, + [I(165,52)] = {29,0x1FFFFA1A}, + [I(166,52)] = {29,0x1FFFFA5A}, + [I(167,52)] = {27,0x7FFF79A}, + [I(168,52)] = {29,0x1FFFFA9A}, + [I(169,52)] = {28,0xFFFF75A}, + [I(170,52)] = {28,0xFFFF79A}, + [I(171,52)] = {30,0x3FFFFC1A}, + [I(172,52)] = {27,0x7FFF7DA}, + [I(173,52)] = {28,0xFFFF7DA}, + [I(174,52)] = {29,0x1FFFFADA}, + [I(175,52)] = {29,0x1FFFFB1A}, + [I(176,52)] = {27,0x7FFF81A}, + [I(177,52)] = {27,0x7FFF85A}, + [I(178,52)] = {28,0xFFFF81A}, + [I(179,52)] = {27,0x7FFF89A}, + [I(180,52)] = {29,0x1FFFFB5A}, + [I(181,52)] = {28,0xFFFF85A}, + [I(182,52)] = {29,0x1FFFFB9A}, + [I(183,52)] = {29,0x1FFFFBDA}, + [I(184,52)] = {26,0x3FFFA9A}, + [I(185,52)] = {28,0xFFFF89A}, + [I(186,52)] = {28,0xFFFF8DA}, + [I(187,52)] = {28,0xFFFF91A}, + [I(188,52)] = {29,0x1FFFFC1A}, + [I(189,52)] = {28,0xFFFF95A}, + [I(190,52)] = {28,0xFFFF99A}, + [I(191,52)] = {29,0x1FFFFC5A}, + [I(192,52)] = {X32,0xFFFFF81A}, + [I(193,52)] = {X32,0xFFFFF85A}, + [I(194,52)] = {26,0x3FFFADA}, + [I(195,52)] = {25,0x1FFFC5A}, + [I(196,52)] = {28,0xFFFF9DA}, + [I(197,52)] = {29,0x1FFFFC9A}, + [I(198,52)] = {28,0xFFFFA1A}, + [I(199,52)] = {31,0x7FFFFB1A}, + [I(200,52)] = {X32,0xFFFFF89A}, + [I(201,52)] = {X32,0xFFFFF8DA}, + [I(202,52)] = {X32,0xFFFFF91A}, + [I(203,52)] = {64,0}, + [I(204,52)] = {64,0}, + [I(205,52)] = {X32,0xFFFFF95A}, + [I(206,52)] = {30,0x3FFFFC5A}, + [I(207,52)] = {31,0x7FFFFB5A}, + [I(208,52)] = {25,0x1FFFC9A}, + [I(209,52)] = {27,0x7FFF8DA}, + [I(210,52)] = {X32,0xFFFFF99A}, + [I(211,52)] = {64,0}, + [I(212,52)] = {64,0}, + [I(213,52)] = {X32,0xFFFFF9DA}, + [I(214,52)] = {64,0}, + [I(215,52)] = {30,0x3FFFFC9A}, + [I(216,52)] = {27,0x7FFF91A}, + [I(217,52)] = {27,0x7FFF95A}, + [I(218,52)] = {X32,0xFFFFFA1A}, + [I(219,52)] = {X32,0xFFFFFA5A}, + [I(220,52)] = {64,0}, + [I(221,52)] = {64,0}, + [I(222,52)] = {64,0}, + [I(223,52)] = {64,0}, + [I(224,52)] = {26,0x3FFFB1A}, + [I(225,52)] = {30,0x3FFFFCDA}, + [I(226,52)] = {26,0x3FFFB5A}, + [I(227,52)] = {27,0x7FFF99A}, + [I(228,52)] = {28,0xFFFFA5A}, + [I(229,52)] = {27,0x7FFF9DA}, + [I(230,52)] = {27,0x7FFFA1A}, + [I(231,52)] = {29,0x1FFFFCDA}, + [I(232,52)] = {28,0xFFFFA9A}, + [I(233,52)] = {28,0xFFFFADA}, + [I(234,52)] = {31,0x7FFFFB9A}, + [I(235,52)] = {31,0x7FFFFBDA}, + [I(236,52)] = {30,0x3FFFFD1A}, + [I(237,52)] = {30,0x3FFFFD5A}, + [I(238,52)] = {X32,0xFFFFFA9A}, + [I(239,52)] = {29,0x1FFFFD1A}, + [I(240,52)] = {X32,0xFFFFFADA}, + [I(241,52)] = {64,0}, + [I(242,52)] = {X32,0xFFFFFB1A}, + [I(243,52)] = {X32,0xFFFFFB5A}, + [I(244,52)] = {64,0}, + [I(245,52)] = {64,0}, + [I(246,52)] = {64,0}, + [I(247,52)] = {64,0}, + [I(248,52)] = {64,0}, + [I(249,52)] = {64,0}, + [I(250,52)] = {64,0}, + [I(251,52)] = {64,0}, + [I(252,52)] = {64,0}, + [I(253,52)] = {64,0}, + [I(254,52)] = {64,0}, + [I(255,52)] = {X32,0xFFFFFB9A}, + [I(0,53)] = {19,0x7FE1B}, + [I(1,53)] = {29,0x1FFFF61B}, + [I(2,53)] = {64,0}, + [I(3,53)] = {64,0}, + [I(4,53)] = {64,0}, + [I(5,53)] = {64,0}, + [I(6,53)] = {64,0}, + [I(7,53)] = {64,0}, + [I(8,53)] = {64,0}, + [I(9,53)] = {30,0x3FFFFA9B}, + [I(10,53)] = {64,0}, + [I(11,53)] = {64,0}, + [I(12,53)] = {64,0}, + [I(13,53)] = {64,0}, + [I(14,53)] = {64,0}, + [I(15,53)] = {64,0}, + [I(16,53)] = {64,0}, + [I(17,53)] = {64,0}, + [I(18,53)] = {64,0}, + [I(19,53)] = {64,0}, + [I(20,53)] = {64,0}, + [I(21,53)] = {64,0}, + [I(22,53)] = {64,0}, + [I(23,53)] = {64,0}, + [I(24,53)] = {64,0}, + [I(25,53)] = {64,0}, + [I(26,53)] = {64,0}, + [I(27,53)] = {64,0}, + [I(28,53)] = {64,0}, + [I(29,53)] = {64,0}, + [I(30,53)] = {64,0}, + [I(31,53)] = {64,0}, + [I(32,53)] = {12,0x51B}, + [I(33,53)] = {16,0xFE1B}, + [I(34,53)] = {16,0xFE5B}, + [I(35,53)] = {18,0x3FE9B}, + [I(36,53)] = {19,0x7FE5B}, + [I(37,53)] = {12,0x55B}, + [I(38,53)] = {14,0x3E1B}, + [I(39,53)] = {17,0x1FE9B}, + [I(40,53)] = {16,0xFE9B}, + [I(41,53)] = {16,0xFEDB}, + [I(42,53)] = {14,0x3E5B}, + [I(43,53)] = {17,0x1FEDB}, + [I(44,53)] = {14,0x3E9B}, + [I(45,53)] = {12,0x59B}, + [I(46,53)] = {12,0x5DB}, + [I(47,53)] = {12,0x61B}, + [I(48,53)] = {11,0x1B}, + [I(49,53)] = {11,0x5B}, + [I(50,53)] = {11,0x9B}, + [I(51,53)] = {12,0x65B}, + [I(52,53)] = {12,0x69B}, + [I(53,53)] = {12,0x6DB}, + [I(54,53)] = {12,0x71B}, + [I(55,53)] = {12,0x75B}, + [I(56,53)] = {12,0x79B}, + [I(57,53)] = {12,0x7DB}, + [I(58,53)] = {13,0x171B}, + [I(59,53)] = {14,0x3EDB}, + [I(60,53)] = {21,0x1FFF1B}, + [I(61,53)] = {12,0x81B}, + [I(62,53)] = {18,0x3FEDB}, + [I(63,53)] = {16,0xFF1B}, + [I(64,53)] = {19,0x7FE9B}, + [I(65,53)] = {12,0x85B}, + [I(66,53)] = {13,0x175B}, + [I(67,53)] = {13,0x179B}, + [I(68,53)] = {13,0x17DB}, + [I(69,53)] = {13,0x181B}, + [I(70,53)] = {13,0x185B}, + [I(71,53)] = {13,0x189B}, + [I(72,53)] = {13,0x18DB}, + [I(73,53)] = {13,0x191B}, + [I(74,53)] = {13,0x195B}, + [I(75,53)] = {13,0x199B}, + [I(76,53)] = {13,0x19DB}, + [I(77,53)] = {13,0x1A1B}, + [I(78,53)] = {13,0x1A5B}, + [I(79,53)] = {13,0x1A9B}, + [I(80,53)] = {13,0x1ADB}, + [I(81,53)] = {13,0x1B1B}, + [I(82,53)] = {13,0x1B5B}, + [I(83,53)] = {13,0x1B9B}, + [I(84,53)] = {13,0x1BDB}, + [I(85,53)] = {13,0x1C1B}, + [I(86,53)] = {13,0x1C5B}, + [I(87,53)] = {13,0x1C9B}, + [I(88,53)] = {14,0x3F1B}, + [I(89,53)] = {13,0x1CDB}, + [I(90,53)] = {14,0x3F5B}, + [I(91,53)] = {19,0x7FEDB}, + [I(92,53)] = {25,0x1FFFC1B}, + [I(93,53)] = {19,0x7FF1B}, + [I(94,53)] = {20,0xFFF1B}, + [I(95,53)] = {12,0x89B}, + [I(96,53)] = {21,0x1FFF5B}, + [I(97,53)] = {11,0xDB}, + [I(98,53)] = {12,0x8DB}, + [I(99,53)] = {11,0x11B}, + [I(100,53)] = {12,0x91B}, + [I(101,53)] = {11,0x15B}, + [I(102,53)] = {12,0x95B}, + [I(103,53)] = {12,0x99B}, + [I(104,53)] = {12,0x9DB}, + [I(105,53)] = {11,0x19B}, + [I(106,53)] = {13,0x1D1B}, + [I(107,53)] = {13,0x1D5B}, + [I(108,53)] = {12,0xA1B}, + [I(109,53)] = {12,0xA5B}, + [I(110,53)] = {12,0xA9B}, + [I(111,53)] = {11,0x1DB}, + [I(112,53)] = {12,0xADB}, + [I(113,53)] = {13,0x1D9B}, + [I(114,53)] = {12,0xB1B}, + [I(115,53)] = {11,0x21B}, + [I(116,53)] = {11,0x25B}, + [I(117,53)] = {12,0xB5B}, + [I(118,53)] = {13,0x1DDB}, + [I(119,53)] = {13,0x1E1B}, + [I(120,53)] = {13,0x1E5B}, + [I(121,53)] = {13,0x1E9B}, + [I(122,53)] = {13,0x1EDB}, + [I(123,53)] = {21,0x1FFF9B}, + [I(124,53)] = {17,0x1FF1B}, + [I(125,53)] = {20,0xFFF5B}, + [I(126,53)] = {19,0x7FF5B}, + [I(127,53)] = {64,0}, + [I(128,53)] = {26,0x3FFF99B}, + [I(129,53)] = {28,0xFFFF49B}, + [I(130,53)] = {26,0x3FFF9DB}, + [I(131,53)] = {26,0x3FFFA1B}, + [I(132,53)] = {28,0xFFFF4DB}, + [I(133,53)] = {28,0xFFFF51B}, + [I(134,53)] = {28,0xFFFF55B}, + [I(135,53)] = {29,0x1FFFF65B}, + [I(136,53)] = {28,0xFFFF59B}, + [I(137,53)] = {29,0x1FFFF69B}, + [I(138,53)] = {29,0x1FFFF6DB}, + [I(139,53)] = {29,0x1FFFF71B}, + [I(140,53)] = {29,0x1FFFF75B}, + [I(141,53)] = {29,0x1FFFF79B}, + [I(142,53)] = {30,0x3FFFFADB}, + [I(143,53)] = {29,0x1FFFF7DB}, + [I(144,53)] = {30,0x3FFFFB1B}, + [I(145,53)] = {30,0x3FFFFB5B}, + [I(146,53)] = {28,0xFFFF5DB}, + [I(147,53)] = {29,0x1FFFF81B}, + [I(148,53)] = {30,0x3FFFFB9B}, + [I(149,53)] = {29,0x1FFFF85B}, + [I(150,53)] = {29,0x1FFFF89B}, + [I(151,53)] = {29,0x1FFFF8DB}, + [I(152,53)] = {29,0x1FFFF91B}, + [I(153,53)] = {27,0x7FFF71B}, + [I(154,53)] = {28,0xFFFF61B}, + [I(155,53)] = {29,0x1FFFF95B}, + [I(156,53)] = {28,0xFFFF65B}, + [I(157,53)] = {29,0x1FFFF99B}, + [I(158,53)] = {29,0x1FFFF9DB}, + [I(159,53)] = {30,0x3FFFFBDB}, + [I(160,53)] = {28,0xFFFF69B}, + [I(161,53)] = {27,0x7FFF75B}, + [I(162,53)] = {26,0x3FFFA5B}, + [I(163,53)] = {28,0xFFFF6DB}, + [I(164,53)] = {28,0xFFFF71B}, + [I(165,53)] = {29,0x1FFFFA1B}, + [I(166,53)] = {29,0x1FFFFA5B}, + [I(167,53)] = {27,0x7FFF79B}, + [I(168,53)] = {29,0x1FFFFA9B}, + [I(169,53)] = {28,0xFFFF75B}, + [I(170,53)] = {28,0xFFFF79B}, + [I(171,53)] = {30,0x3FFFFC1B}, + [I(172,53)] = {27,0x7FFF7DB}, + [I(173,53)] = {28,0xFFFF7DB}, + [I(174,53)] = {29,0x1FFFFADB}, + [I(175,53)] = {29,0x1FFFFB1B}, + [I(176,53)] = {27,0x7FFF81B}, + [I(177,53)] = {27,0x7FFF85B}, + [I(178,53)] = {28,0xFFFF81B}, + [I(179,53)] = {27,0x7FFF89B}, + [I(180,53)] = {29,0x1FFFFB5B}, + [I(181,53)] = {28,0xFFFF85B}, + [I(182,53)] = {29,0x1FFFFB9B}, + [I(183,53)] = {29,0x1FFFFBDB}, + [I(184,53)] = {26,0x3FFFA9B}, + [I(185,53)] = {28,0xFFFF89B}, + [I(186,53)] = {28,0xFFFF8DB}, + [I(187,53)] = {28,0xFFFF91B}, + [I(188,53)] = {29,0x1FFFFC1B}, + [I(189,53)] = {28,0xFFFF95B}, + [I(190,53)] = {28,0xFFFF99B}, + [I(191,53)] = {29,0x1FFFFC5B}, + [I(192,53)] = {X32,0xFFFFF81B}, + [I(193,53)] = {X32,0xFFFFF85B}, + [I(194,53)] = {26,0x3FFFADB}, + [I(195,53)] = {25,0x1FFFC5B}, + [I(196,53)] = {28,0xFFFF9DB}, + [I(197,53)] = {29,0x1FFFFC9B}, + [I(198,53)] = {28,0xFFFFA1B}, + [I(199,53)] = {31,0x7FFFFB1B}, + [I(200,53)] = {X32,0xFFFFF89B}, + [I(201,53)] = {X32,0xFFFFF8DB}, + [I(202,53)] = {X32,0xFFFFF91B}, + [I(203,53)] = {64,0}, + [I(204,53)] = {64,0}, + [I(205,53)] = {X32,0xFFFFF95B}, + [I(206,53)] = {30,0x3FFFFC5B}, + [I(207,53)] = {31,0x7FFFFB5B}, + [I(208,53)] = {25,0x1FFFC9B}, + [I(209,53)] = {27,0x7FFF8DB}, + [I(210,53)] = {X32,0xFFFFF99B}, + [I(211,53)] = {64,0}, + [I(212,53)] = {64,0}, + [I(213,53)] = {X32,0xFFFFF9DB}, + [I(214,53)] = {64,0}, + [I(215,53)] = {30,0x3FFFFC9B}, + [I(216,53)] = {27,0x7FFF91B}, + [I(217,53)] = {27,0x7FFF95B}, + [I(218,53)] = {X32,0xFFFFFA1B}, + [I(219,53)] = {X32,0xFFFFFA5B}, + [I(220,53)] = {64,0}, + [I(221,53)] = {64,0}, + [I(222,53)] = {64,0}, + [I(223,53)] = {64,0}, + [I(224,53)] = {26,0x3FFFB1B}, + [I(225,53)] = {30,0x3FFFFCDB}, + [I(226,53)] = {26,0x3FFFB5B}, + [I(227,53)] = {27,0x7FFF99B}, + [I(228,53)] = {28,0xFFFFA5B}, + [I(229,53)] = {27,0x7FFF9DB}, + [I(230,53)] = {27,0x7FFFA1B}, + [I(231,53)] = {29,0x1FFFFCDB}, + [I(232,53)] = {28,0xFFFFA9B}, + [I(233,53)] = {28,0xFFFFADB}, + [I(234,53)] = {31,0x7FFFFB9B}, + [I(235,53)] = {31,0x7FFFFBDB}, + [I(236,53)] = {30,0x3FFFFD1B}, + [I(237,53)] = {30,0x3FFFFD5B}, + [I(238,53)] = {X32,0xFFFFFA9B}, + [I(239,53)] = {29,0x1FFFFD1B}, + [I(240,53)] = {X32,0xFFFFFADB}, + [I(241,53)] = {64,0}, + [I(242,53)] = {X32,0xFFFFFB1B}, + [I(243,53)] = {X32,0xFFFFFB5B}, + [I(244,53)] = {64,0}, + [I(245,53)] = {64,0}, + [I(246,53)] = {64,0}, + [I(247,53)] = {64,0}, + [I(248,53)] = {64,0}, + [I(249,53)] = {64,0}, + [I(250,53)] = {64,0}, + [I(251,53)] = {64,0}, + [I(252,53)] = {64,0}, + [I(253,53)] = {64,0}, + [I(254,53)] = {64,0}, + [I(255,53)] = {X32,0xFFFFFB9B}, + [I(0,54)] = {19,0x7FE1C}, + [I(1,54)] = {29,0x1FFFF61C}, + [I(2,54)] = {64,0}, + [I(3,54)] = {64,0}, + [I(4,54)] = {64,0}, + [I(5,54)] = {64,0}, + [I(6,54)] = {64,0}, + [I(7,54)] = {64,0}, + [I(8,54)] = {64,0}, + [I(9,54)] = {30,0x3FFFFA9C}, + [I(10,54)] = {64,0}, + [I(11,54)] = {64,0}, + [I(12,54)] = {64,0}, + [I(13,54)] = {64,0}, + [I(14,54)] = {64,0}, + [I(15,54)] = {64,0}, + [I(16,54)] = {64,0}, + [I(17,54)] = {64,0}, + [I(18,54)] = {64,0}, + [I(19,54)] = {64,0}, + [I(20,54)] = {64,0}, + [I(21,54)] = {64,0}, + [I(22,54)] = {64,0}, + [I(23,54)] = {64,0}, + [I(24,54)] = {64,0}, + [I(25,54)] = {64,0}, + [I(26,54)] = {64,0}, + [I(27,54)] = {64,0}, + [I(28,54)] = {64,0}, + [I(29,54)] = {64,0}, + [I(30,54)] = {64,0}, + [I(31,54)] = {64,0}, + [I(32,54)] = {12,0x51C}, + [I(33,54)] = {16,0xFE1C}, + [I(34,54)] = {16,0xFE5C}, + [I(35,54)] = {18,0x3FE9C}, + [I(36,54)] = {19,0x7FE5C}, + [I(37,54)] = {12,0x55C}, + [I(38,54)] = {14,0x3E1C}, + [I(39,54)] = {17,0x1FE9C}, + [I(40,54)] = {16,0xFE9C}, + [I(41,54)] = {16,0xFEDC}, + [I(42,54)] = {14,0x3E5C}, + [I(43,54)] = {17,0x1FEDC}, + [I(44,54)] = {14,0x3E9C}, + [I(45,54)] = {12,0x59C}, + [I(46,54)] = {12,0x5DC}, + [I(47,54)] = {12,0x61C}, + [I(48,54)] = {11,0x1C}, + [I(49,54)] = {11,0x5C}, + [I(50,54)] = {11,0x9C}, + [I(51,54)] = {12,0x65C}, + [I(52,54)] = {12,0x69C}, + [I(53,54)] = {12,0x6DC}, + [I(54,54)] = {12,0x71C}, + [I(55,54)] = {12,0x75C}, + [I(56,54)] = {12,0x79C}, + [I(57,54)] = {12,0x7DC}, + [I(58,54)] = {13,0x171C}, + [I(59,54)] = {14,0x3EDC}, + [I(60,54)] = {21,0x1FFF1C}, + [I(61,54)] = {12,0x81C}, + [I(62,54)] = {18,0x3FEDC}, + [I(63,54)] = {16,0xFF1C}, + [I(64,54)] = {19,0x7FE9C}, + [I(65,54)] = {12,0x85C}, + [I(66,54)] = {13,0x175C}, + [I(67,54)] = {13,0x179C}, + [I(68,54)] = {13,0x17DC}, + [I(69,54)] = {13,0x181C}, + [I(70,54)] = {13,0x185C}, + [I(71,54)] = {13,0x189C}, + [I(72,54)] = {13,0x18DC}, + [I(73,54)] = {13,0x191C}, + [I(74,54)] = {13,0x195C}, + [I(75,54)] = {13,0x199C}, + [I(76,54)] = {13,0x19DC}, + [I(77,54)] = {13,0x1A1C}, + [I(78,54)] = {13,0x1A5C}, + [I(79,54)] = {13,0x1A9C}, + [I(80,54)] = {13,0x1ADC}, + [I(81,54)] = {13,0x1B1C}, + [I(82,54)] = {13,0x1B5C}, + [I(83,54)] = {13,0x1B9C}, + [I(84,54)] = {13,0x1BDC}, + [I(85,54)] = {13,0x1C1C}, + [I(86,54)] = {13,0x1C5C}, + [I(87,54)] = {13,0x1C9C}, + [I(88,54)] = {14,0x3F1C}, + [I(89,54)] = {13,0x1CDC}, + [I(90,54)] = {14,0x3F5C}, + [I(91,54)] = {19,0x7FEDC}, + [I(92,54)] = {25,0x1FFFC1C}, + [I(93,54)] = {19,0x7FF1C}, + [I(94,54)] = {20,0xFFF1C}, + [I(95,54)] = {12,0x89C}, + [I(96,54)] = {21,0x1FFF5C}, + [I(97,54)] = {11,0xDC}, + [I(98,54)] = {12,0x8DC}, + [I(99,54)] = {11,0x11C}, + [I(100,54)] = {12,0x91C}, + [I(101,54)] = {11,0x15C}, + [I(102,54)] = {12,0x95C}, + [I(103,54)] = {12,0x99C}, + [I(104,54)] = {12,0x9DC}, + [I(105,54)] = {11,0x19C}, + [I(106,54)] = {13,0x1D1C}, + [I(107,54)] = {13,0x1D5C}, + [I(108,54)] = {12,0xA1C}, + [I(109,54)] = {12,0xA5C}, + [I(110,54)] = {12,0xA9C}, + [I(111,54)] = {11,0x1DC}, + [I(112,54)] = {12,0xADC}, + [I(113,54)] = {13,0x1D9C}, + [I(114,54)] = {12,0xB1C}, + [I(115,54)] = {11,0x21C}, + [I(116,54)] = {11,0x25C}, + [I(117,54)] = {12,0xB5C}, + [I(118,54)] = {13,0x1DDC}, + [I(119,54)] = {13,0x1E1C}, + [I(120,54)] = {13,0x1E5C}, + [I(121,54)] = {13,0x1E9C}, + [I(122,54)] = {13,0x1EDC}, + [I(123,54)] = {21,0x1FFF9C}, + [I(124,54)] = {17,0x1FF1C}, + [I(125,54)] = {20,0xFFF5C}, + [I(126,54)] = {19,0x7FF5C}, + [I(127,54)] = {64,0}, + [I(128,54)] = {26,0x3FFF99C}, + [I(129,54)] = {28,0xFFFF49C}, + [I(130,54)] = {26,0x3FFF9DC}, + [I(131,54)] = {26,0x3FFFA1C}, + [I(132,54)] = {28,0xFFFF4DC}, + [I(133,54)] = {28,0xFFFF51C}, + [I(134,54)] = {28,0xFFFF55C}, + [I(135,54)] = {29,0x1FFFF65C}, + [I(136,54)] = {28,0xFFFF59C}, + [I(137,54)] = {29,0x1FFFF69C}, + [I(138,54)] = {29,0x1FFFF6DC}, + [I(139,54)] = {29,0x1FFFF71C}, + [I(140,54)] = {29,0x1FFFF75C}, + [I(141,54)] = {29,0x1FFFF79C}, + [I(142,54)] = {30,0x3FFFFADC}, + [I(143,54)] = {29,0x1FFFF7DC}, + [I(144,54)] = {30,0x3FFFFB1C}, + [I(145,54)] = {30,0x3FFFFB5C}, + [I(146,54)] = {28,0xFFFF5DC}, + [I(147,54)] = {29,0x1FFFF81C}, + [I(148,54)] = {30,0x3FFFFB9C}, + [I(149,54)] = {29,0x1FFFF85C}, + [I(150,54)] = {29,0x1FFFF89C}, + [I(151,54)] = {29,0x1FFFF8DC}, + [I(152,54)] = {29,0x1FFFF91C}, + [I(153,54)] = {27,0x7FFF71C}, + [I(154,54)] = {28,0xFFFF61C}, + [I(155,54)] = {29,0x1FFFF95C}, + [I(156,54)] = {28,0xFFFF65C}, + [I(157,54)] = {29,0x1FFFF99C}, + [I(158,54)] = {29,0x1FFFF9DC}, + [I(159,54)] = {30,0x3FFFFBDC}, + [I(160,54)] = {28,0xFFFF69C}, + [I(161,54)] = {27,0x7FFF75C}, + [I(162,54)] = {26,0x3FFFA5C}, + [I(163,54)] = {28,0xFFFF6DC}, + [I(164,54)] = {28,0xFFFF71C}, + [I(165,54)] = {29,0x1FFFFA1C}, + [I(166,54)] = {29,0x1FFFFA5C}, + [I(167,54)] = {27,0x7FFF79C}, + [I(168,54)] = {29,0x1FFFFA9C}, + [I(169,54)] = {28,0xFFFF75C}, + [I(170,54)] = {28,0xFFFF79C}, + [I(171,54)] = {30,0x3FFFFC1C}, + [I(172,54)] = {27,0x7FFF7DC}, + [I(173,54)] = {28,0xFFFF7DC}, + [I(174,54)] = {29,0x1FFFFADC}, + [I(175,54)] = {29,0x1FFFFB1C}, + [I(176,54)] = {27,0x7FFF81C}, + [I(177,54)] = {27,0x7FFF85C}, + [I(178,54)] = {28,0xFFFF81C}, + [I(179,54)] = {27,0x7FFF89C}, + [I(180,54)] = {29,0x1FFFFB5C}, + [I(181,54)] = {28,0xFFFF85C}, + [I(182,54)] = {29,0x1FFFFB9C}, + [I(183,54)] = {29,0x1FFFFBDC}, + [I(184,54)] = {26,0x3FFFA9C}, + [I(185,54)] = {28,0xFFFF89C}, + [I(186,54)] = {28,0xFFFF8DC}, + [I(187,54)] = {28,0xFFFF91C}, + [I(188,54)] = {29,0x1FFFFC1C}, + [I(189,54)] = {28,0xFFFF95C}, + [I(190,54)] = {28,0xFFFF99C}, + [I(191,54)] = {29,0x1FFFFC5C}, + [I(192,54)] = {X32,0xFFFFF81C}, + [I(193,54)] = {X32,0xFFFFF85C}, + [I(194,54)] = {26,0x3FFFADC}, + [I(195,54)] = {25,0x1FFFC5C}, + [I(196,54)] = {28,0xFFFF9DC}, + [I(197,54)] = {29,0x1FFFFC9C}, + [I(198,54)] = {28,0xFFFFA1C}, + [I(199,54)] = {31,0x7FFFFB1C}, + [I(200,54)] = {X32,0xFFFFF89C}, + [I(201,54)] = {X32,0xFFFFF8DC}, + [I(202,54)] = {X32,0xFFFFF91C}, + [I(203,54)] = {64,0}, + [I(204,54)] = {64,0}, + [I(205,54)] = {X32,0xFFFFF95C}, + [I(206,54)] = {30,0x3FFFFC5C}, + [I(207,54)] = {31,0x7FFFFB5C}, + [I(208,54)] = {25,0x1FFFC9C}, + [I(209,54)] = {27,0x7FFF8DC}, + [I(210,54)] = {X32,0xFFFFF99C}, + [I(211,54)] = {64,0}, + [I(212,54)] = {64,0}, + [I(213,54)] = {X32,0xFFFFF9DC}, + [I(214,54)] = {64,0}, + [I(215,54)] = {30,0x3FFFFC9C}, + [I(216,54)] = {27,0x7FFF91C}, + [I(217,54)] = {27,0x7FFF95C}, + [I(218,54)] = {X32,0xFFFFFA1C}, + [I(219,54)] = {X32,0xFFFFFA5C}, + [I(220,54)] = {64,0}, + [I(221,54)] = {64,0}, + [I(222,54)] = {64,0}, + [I(223,54)] = {64,0}, + [I(224,54)] = {26,0x3FFFB1C}, + [I(225,54)] = {30,0x3FFFFCDC}, + [I(226,54)] = {26,0x3FFFB5C}, + [I(227,54)] = {27,0x7FFF99C}, + [I(228,54)] = {28,0xFFFFA5C}, + [I(229,54)] = {27,0x7FFF9DC}, + [I(230,54)] = {27,0x7FFFA1C}, + [I(231,54)] = {29,0x1FFFFCDC}, + [I(232,54)] = {28,0xFFFFA9C}, + [I(233,54)] = {28,0xFFFFADC}, + [I(234,54)] = {31,0x7FFFFB9C}, + [I(235,54)] = {31,0x7FFFFBDC}, + [I(236,54)] = {30,0x3FFFFD1C}, + [I(237,54)] = {30,0x3FFFFD5C}, + [I(238,54)] = {X32,0xFFFFFA9C}, + [I(239,54)] = {29,0x1FFFFD1C}, + [I(240,54)] = {X32,0xFFFFFADC}, + [I(241,54)] = {64,0}, + [I(242,54)] = {X32,0xFFFFFB1C}, + [I(243,54)] = {X32,0xFFFFFB5C}, + [I(244,54)] = {64,0}, + [I(245,54)] = {64,0}, + [I(246,54)] = {64,0}, + [I(247,54)] = {64,0}, + [I(248,54)] = {64,0}, + [I(249,54)] = {64,0}, + [I(250,54)] = {64,0}, + [I(251,54)] = {64,0}, + [I(252,54)] = {64,0}, + [I(253,54)] = {64,0}, + [I(254,54)] = {64,0}, + [I(255,54)] = {X32,0xFFFFFB9C}, + [I(0,55)] = {19,0x7FE1D}, + [I(1,55)] = {29,0x1FFFF61D}, + [I(2,55)] = {64,0}, + [I(3,55)] = {64,0}, + [I(4,55)] = {64,0}, + [I(5,55)] = {64,0}, + [I(6,55)] = {64,0}, + [I(7,55)] = {64,0}, + [I(8,55)] = {64,0}, + [I(9,55)] = {30,0x3FFFFA9D}, + [I(10,55)] = {64,0}, + [I(11,55)] = {64,0}, + [I(12,55)] = {64,0}, + [I(13,55)] = {64,0}, + [I(14,55)] = {64,0}, + [I(15,55)] = {64,0}, + [I(16,55)] = {64,0}, + [I(17,55)] = {64,0}, + [I(18,55)] = {64,0}, + [I(19,55)] = {64,0}, + [I(20,55)] = {64,0}, + [I(21,55)] = {64,0}, + [I(22,55)] = {64,0}, + [I(23,55)] = {64,0}, + [I(24,55)] = {64,0}, + [I(25,55)] = {64,0}, + [I(26,55)] = {64,0}, + [I(27,55)] = {64,0}, + [I(28,55)] = {64,0}, + [I(29,55)] = {64,0}, + [I(30,55)] = {64,0}, + [I(31,55)] = {64,0}, + [I(32,55)] = {12,0x51D}, + [I(33,55)] = {16,0xFE1D}, + [I(34,55)] = {16,0xFE5D}, + [I(35,55)] = {18,0x3FE9D}, + [I(36,55)] = {19,0x7FE5D}, + [I(37,55)] = {12,0x55D}, + [I(38,55)] = {14,0x3E1D}, + [I(39,55)] = {17,0x1FE9D}, + [I(40,55)] = {16,0xFE9D}, + [I(41,55)] = {16,0xFEDD}, + [I(42,55)] = {14,0x3E5D}, + [I(43,55)] = {17,0x1FEDD}, + [I(44,55)] = {14,0x3E9D}, + [I(45,55)] = {12,0x59D}, + [I(46,55)] = {12,0x5DD}, + [I(47,55)] = {12,0x61D}, + [I(48,55)] = {11,0x1D}, + [I(49,55)] = {11,0x5D}, + [I(50,55)] = {11,0x9D}, + [I(51,55)] = {12,0x65D}, + [I(52,55)] = {12,0x69D}, + [I(53,55)] = {12,0x6DD}, + [I(54,55)] = {12,0x71D}, + [I(55,55)] = {12,0x75D}, + [I(56,55)] = {12,0x79D}, + [I(57,55)] = {12,0x7DD}, + [I(58,55)] = {13,0x171D}, + [I(59,55)] = {14,0x3EDD}, + [I(60,55)] = {21,0x1FFF1D}, + [I(61,55)] = {12,0x81D}, + [I(62,55)] = {18,0x3FEDD}, + [I(63,55)] = {16,0xFF1D}, + [I(64,55)] = {19,0x7FE9D}, + [I(65,55)] = {12,0x85D}, + [I(66,55)] = {13,0x175D}, + [I(67,55)] = {13,0x179D}, + [I(68,55)] = {13,0x17DD}, + [I(69,55)] = {13,0x181D}, + [I(70,55)] = {13,0x185D}, + [I(71,55)] = {13,0x189D}, + [I(72,55)] = {13,0x18DD}, + [I(73,55)] = {13,0x191D}, + [I(74,55)] = {13,0x195D}, + [I(75,55)] = {13,0x199D}, + [I(76,55)] = {13,0x19DD}, + [I(77,55)] = {13,0x1A1D}, + [I(78,55)] = {13,0x1A5D}, + [I(79,55)] = {13,0x1A9D}, + [I(80,55)] = {13,0x1ADD}, + [I(81,55)] = {13,0x1B1D}, + [I(82,55)] = {13,0x1B5D}, + [I(83,55)] = {13,0x1B9D}, + [I(84,55)] = {13,0x1BDD}, + [I(85,55)] = {13,0x1C1D}, + [I(86,55)] = {13,0x1C5D}, + [I(87,55)] = {13,0x1C9D}, + [I(88,55)] = {14,0x3F1D}, + [I(89,55)] = {13,0x1CDD}, + [I(90,55)] = {14,0x3F5D}, + [I(91,55)] = {19,0x7FEDD}, + [I(92,55)] = {25,0x1FFFC1D}, + [I(93,55)] = {19,0x7FF1D}, + [I(94,55)] = {20,0xFFF1D}, + [I(95,55)] = {12,0x89D}, + [I(96,55)] = {21,0x1FFF5D}, + [I(97,55)] = {11,0xDD}, + [I(98,55)] = {12,0x8DD}, + [I(99,55)] = {11,0x11D}, + [I(100,55)] = {12,0x91D}, + [I(101,55)] = {11,0x15D}, + [I(102,55)] = {12,0x95D}, + [I(103,55)] = {12,0x99D}, + [I(104,55)] = {12,0x9DD}, + [I(105,55)] = {11,0x19D}, + [I(106,55)] = {13,0x1D1D}, + [I(107,55)] = {13,0x1D5D}, + [I(108,55)] = {12,0xA1D}, + [I(109,55)] = {12,0xA5D}, + [I(110,55)] = {12,0xA9D}, + [I(111,55)] = {11,0x1DD}, + [I(112,55)] = {12,0xADD}, + [I(113,55)] = {13,0x1D9D}, + [I(114,55)] = {12,0xB1D}, + [I(115,55)] = {11,0x21D}, + [I(116,55)] = {11,0x25D}, + [I(117,55)] = {12,0xB5D}, + [I(118,55)] = {13,0x1DDD}, + [I(119,55)] = {13,0x1E1D}, + [I(120,55)] = {13,0x1E5D}, + [I(121,55)] = {13,0x1E9D}, + [I(122,55)] = {13,0x1EDD}, + [I(123,55)] = {21,0x1FFF9D}, + [I(124,55)] = {17,0x1FF1D}, + [I(125,55)] = {20,0xFFF5D}, + [I(126,55)] = {19,0x7FF5D}, + [I(127,55)] = {64,0}, + [I(128,55)] = {26,0x3FFF99D}, + [I(129,55)] = {28,0xFFFF49D}, + [I(130,55)] = {26,0x3FFF9DD}, + [I(131,55)] = {26,0x3FFFA1D}, + [I(132,55)] = {28,0xFFFF4DD}, + [I(133,55)] = {28,0xFFFF51D}, + [I(134,55)] = {28,0xFFFF55D}, + [I(135,55)] = {29,0x1FFFF65D}, + [I(136,55)] = {28,0xFFFF59D}, + [I(137,55)] = {29,0x1FFFF69D}, + [I(138,55)] = {29,0x1FFFF6DD}, + [I(139,55)] = {29,0x1FFFF71D}, + [I(140,55)] = {29,0x1FFFF75D}, + [I(141,55)] = {29,0x1FFFF79D}, + [I(142,55)] = {30,0x3FFFFADD}, + [I(143,55)] = {29,0x1FFFF7DD}, + [I(144,55)] = {30,0x3FFFFB1D}, + [I(145,55)] = {30,0x3FFFFB5D}, + [I(146,55)] = {28,0xFFFF5DD}, + [I(147,55)] = {29,0x1FFFF81D}, + [I(148,55)] = {30,0x3FFFFB9D}, + [I(149,55)] = {29,0x1FFFF85D}, + [I(150,55)] = {29,0x1FFFF89D}, + [I(151,55)] = {29,0x1FFFF8DD}, + [I(152,55)] = {29,0x1FFFF91D}, + [I(153,55)] = {27,0x7FFF71D}, + [I(154,55)] = {28,0xFFFF61D}, + [I(155,55)] = {29,0x1FFFF95D}, + [I(156,55)] = {28,0xFFFF65D}, + [I(157,55)] = {29,0x1FFFF99D}, + [I(158,55)] = {29,0x1FFFF9DD}, + [I(159,55)] = {30,0x3FFFFBDD}, + [I(160,55)] = {28,0xFFFF69D}, + [I(161,55)] = {27,0x7FFF75D}, + [I(162,55)] = {26,0x3FFFA5D}, + [I(163,55)] = {28,0xFFFF6DD}, + [I(164,55)] = {28,0xFFFF71D}, + [I(165,55)] = {29,0x1FFFFA1D}, + [I(166,55)] = {29,0x1FFFFA5D}, + [I(167,55)] = {27,0x7FFF79D}, + [I(168,55)] = {29,0x1FFFFA9D}, + [I(169,55)] = {28,0xFFFF75D}, + [I(170,55)] = {28,0xFFFF79D}, + [I(171,55)] = {30,0x3FFFFC1D}, + [I(172,55)] = {27,0x7FFF7DD}, + [I(173,55)] = {28,0xFFFF7DD}, + [I(174,55)] = {29,0x1FFFFADD}, + [I(175,55)] = {29,0x1FFFFB1D}, + [I(176,55)] = {27,0x7FFF81D}, + [I(177,55)] = {27,0x7FFF85D}, + [I(178,55)] = {28,0xFFFF81D}, + [I(179,55)] = {27,0x7FFF89D}, + [I(180,55)] = {29,0x1FFFFB5D}, + [I(181,55)] = {28,0xFFFF85D}, + [I(182,55)] = {29,0x1FFFFB9D}, + [I(183,55)] = {29,0x1FFFFBDD}, + [I(184,55)] = {26,0x3FFFA9D}, + [I(185,55)] = {28,0xFFFF89D}, + [I(186,55)] = {28,0xFFFF8DD}, + [I(187,55)] = {28,0xFFFF91D}, + [I(188,55)] = {29,0x1FFFFC1D}, + [I(189,55)] = {28,0xFFFF95D}, + [I(190,55)] = {28,0xFFFF99D}, + [I(191,55)] = {29,0x1FFFFC5D}, + [I(192,55)] = {X32,0xFFFFF81D}, + [I(193,55)] = {X32,0xFFFFF85D}, + [I(194,55)] = {26,0x3FFFADD}, + [I(195,55)] = {25,0x1FFFC5D}, + [I(196,55)] = {28,0xFFFF9DD}, + [I(197,55)] = {29,0x1FFFFC9D}, + [I(198,55)] = {28,0xFFFFA1D}, + [I(199,55)] = {31,0x7FFFFB1D}, + [I(200,55)] = {X32,0xFFFFF89D}, + [I(201,55)] = {X32,0xFFFFF8DD}, + [I(202,55)] = {X32,0xFFFFF91D}, + [I(203,55)] = {64,0}, + [I(204,55)] = {64,0}, + [I(205,55)] = {X32,0xFFFFF95D}, + [I(206,55)] = {30,0x3FFFFC5D}, + [I(207,55)] = {31,0x7FFFFB5D}, + [I(208,55)] = {25,0x1FFFC9D}, + [I(209,55)] = {27,0x7FFF8DD}, + [I(210,55)] = {X32,0xFFFFF99D}, + [I(211,55)] = {64,0}, + [I(212,55)] = {64,0}, + [I(213,55)] = {X32,0xFFFFF9DD}, + [I(214,55)] = {64,0}, + [I(215,55)] = {30,0x3FFFFC9D}, + [I(216,55)] = {27,0x7FFF91D}, + [I(217,55)] = {27,0x7FFF95D}, + [I(218,55)] = {X32,0xFFFFFA1D}, + [I(219,55)] = {X32,0xFFFFFA5D}, + [I(220,55)] = {64,0}, + [I(221,55)] = {64,0}, + [I(222,55)] = {64,0}, + [I(223,55)] = {64,0}, + [I(224,55)] = {26,0x3FFFB1D}, + [I(225,55)] = {30,0x3FFFFCDD}, + [I(226,55)] = {26,0x3FFFB5D}, + [I(227,55)] = {27,0x7FFF99D}, + [I(228,55)] = {28,0xFFFFA5D}, + [I(229,55)] = {27,0x7FFF9DD}, + [I(230,55)] = {27,0x7FFFA1D}, + [I(231,55)] = {29,0x1FFFFCDD}, + [I(232,55)] = {28,0xFFFFA9D}, + [I(233,55)] = {28,0xFFFFADD}, + [I(234,55)] = {31,0x7FFFFB9D}, + [I(235,55)] = {31,0x7FFFFBDD}, + [I(236,55)] = {30,0x3FFFFD1D}, + [I(237,55)] = {30,0x3FFFFD5D}, + [I(238,55)] = {X32,0xFFFFFA9D}, + [I(239,55)] = {29,0x1FFFFD1D}, + [I(240,55)] = {X32,0xFFFFFADD}, + [I(241,55)] = {64,0}, + [I(242,55)] = {X32,0xFFFFFB1D}, + [I(243,55)] = {X32,0xFFFFFB5D}, + [I(244,55)] = {64,0}, + [I(245,55)] = {64,0}, + [I(246,55)] = {64,0}, + [I(247,55)] = {64,0}, + [I(248,55)] = {64,0}, + [I(249,55)] = {64,0}, + [I(250,55)] = {64,0}, + [I(251,55)] = {64,0}, + [I(252,55)] = {64,0}, + [I(253,55)] = {64,0}, + [I(254,55)] = {64,0}, + [I(255,55)] = {X32,0xFFFFFB9D}, + [I(0,56)] = {19,0x7FE1E}, + [I(1,56)] = {29,0x1FFFF61E}, + [I(2,56)] = {64,0}, + [I(3,56)] = {64,0}, + [I(4,56)] = {64,0}, + [I(5,56)] = {64,0}, + [I(6,56)] = {64,0}, + [I(7,56)] = {64,0}, + [I(8,56)] = {64,0}, + [I(9,56)] = {30,0x3FFFFA9E}, + [I(10,56)] = {64,0}, + [I(11,56)] = {64,0}, + [I(12,56)] = {64,0}, + [I(13,56)] = {64,0}, + [I(14,56)] = {64,0}, + [I(15,56)] = {64,0}, + [I(16,56)] = {64,0}, + [I(17,56)] = {64,0}, + [I(18,56)] = {64,0}, + [I(19,56)] = {64,0}, + [I(20,56)] = {64,0}, + [I(21,56)] = {64,0}, + [I(22,56)] = {64,0}, + [I(23,56)] = {64,0}, + [I(24,56)] = {64,0}, + [I(25,56)] = {64,0}, + [I(26,56)] = {64,0}, + [I(27,56)] = {64,0}, + [I(28,56)] = {64,0}, + [I(29,56)] = {64,0}, + [I(30,56)] = {64,0}, + [I(31,56)] = {64,0}, + [I(32,56)] = {12,0x51E}, + [I(33,56)] = {16,0xFE1E}, + [I(34,56)] = {16,0xFE5E}, + [I(35,56)] = {18,0x3FE9E}, + [I(36,56)] = {19,0x7FE5E}, + [I(37,56)] = {12,0x55E}, + [I(38,56)] = {14,0x3E1E}, + [I(39,56)] = {17,0x1FE9E}, + [I(40,56)] = {16,0xFE9E}, + [I(41,56)] = {16,0xFEDE}, + [I(42,56)] = {14,0x3E5E}, + [I(43,56)] = {17,0x1FEDE}, + [I(44,56)] = {14,0x3E9E}, + [I(45,56)] = {12,0x59E}, + [I(46,56)] = {12,0x5DE}, + [I(47,56)] = {12,0x61E}, + [I(48,56)] = {11,0x1E}, + [I(49,56)] = {11,0x5E}, + [I(50,56)] = {11,0x9E}, + [I(51,56)] = {12,0x65E}, + [I(52,56)] = {12,0x69E}, + [I(53,56)] = {12,0x6DE}, + [I(54,56)] = {12,0x71E}, + [I(55,56)] = {12,0x75E}, + [I(56,56)] = {12,0x79E}, + [I(57,56)] = {12,0x7DE}, + [I(58,56)] = {13,0x171E}, + [I(59,56)] = {14,0x3EDE}, + [I(60,56)] = {21,0x1FFF1E}, + [I(61,56)] = {12,0x81E}, + [I(62,56)] = {18,0x3FEDE}, + [I(63,56)] = {16,0xFF1E}, + [I(64,56)] = {19,0x7FE9E}, + [I(65,56)] = {12,0x85E}, + [I(66,56)] = {13,0x175E}, + [I(67,56)] = {13,0x179E}, + [I(68,56)] = {13,0x17DE}, + [I(69,56)] = {13,0x181E}, + [I(70,56)] = {13,0x185E}, + [I(71,56)] = {13,0x189E}, + [I(72,56)] = {13,0x18DE}, + [I(73,56)] = {13,0x191E}, + [I(74,56)] = {13,0x195E}, + [I(75,56)] = {13,0x199E}, + [I(76,56)] = {13,0x19DE}, + [I(77,56)] = {13,0x1A1E}, + [I(78,56)] = {13,0x1A5E}, + [I(79,56)] = {13,0x1A9E}, + [I(80,56)] = {13,0x1ADE}, + [I(81,56)] = {13,0x1B1E}, + [I(82,56)] = {13,0x1B5E}, + [I(83,56)] = {13,0x1B9E}, + [I(84,56)] = {13,0x1BDE}, + [I(85,56)] = {13,0x1C1E}, + [I(86,56)] = {13,0x1C5E}, + [I(87,56)] = {13,0x1C9E}, + [I(88,56)] = {14,0x3F1E}, + [I(89,56)] = {13,0x1CDE}, + [I(90,56)] = {14,0x3F5E}, + [I(91,56)] = {19,0x7FEDE}, + [I(92,56)] = {25,0x1FFFC1E}, + [I(93,56)] = {19,0x7FF1E}, + [I(94,56)] = {20,0xFFF1E}, + [I(95,56)] = {12,0x89E}, + [I(96,56)] = {21,0x1FFF5E}, + [I(97,56)] = {11,0xDE}, + [I(98,56)] = {12,0x8DE}, + [I(99,56)] = {11,0x11E}, + [I(100,56)] = {12,0x91E}, + [I(101,56)] = {11,0x15E}, + [I(102,56)] = {12,0x95E}, + [I(103,56)] = {12,0x99E}, + [I(104,56)] = {12,0x9DE}, + [I(105,56)] = {11,0x19E}, + [I(106,56)] = {13,0x1D1E}, + [I(107,56)] = {13,0x1D5E}, + [I(108,56)] = {12,0xA1E}, + [I(109,56)] = {12,0xA5E}, + [I(110,56)] = {12,0xA9E}, + [I(111,56)] = {11,0x1DE}, + [I(112,56)] = {12,0xADE}, + [I(113,56)] = {13,0x1D9E}, + [I(114,56)] = {12,0xB1E}, + [I(115,56)] = {11,0x21E}, + [I(116,56)] = {11,0x25E}, + [I(117,56)] = {12,0xB5E}, + [I(118,56)] = {13,0x1DDE}, + [I(119,56)] = {13,0x1E1E}, + [I(120,56)] = {13,0x1E5E}, + [I(121,56)] = {13,0x1E9E}, + [I(122,56)] = {13,0x1EDE}, + [I(123,56)] = {21,0x1FFF9E}, + [I(124,56)] = {17,0x1FF1E}, + [I(125,56)] = {20,0xFFF5E}, + [I(126,56)] = {19,0x7FF5E}, + [I(127,56)] = {64,0}, + [I(128,56)] = {26,0x3FFF99E}, + [I(129,56)] = {28,0xFFFF49E}, + [I(130,56)] = {26,0x3FFF9DE}, + [I(131,56)] = {26,0x3FFFA1E}, + [I(132,56)] = {28,0xFFFF4DE}, + [I(133,56)] = {28,0xFFFF51E}, + [I(134,56)] = {28,0xFFFF55E}, + [I(135,56)] = {29,0x1FFFF65E}, + [I(136,56)] = {28,0xFFFF59E}, + [I(137,56)] = {29,0x1FFFF69E}, + [I(138,56)] = {29,0x1FFFF6DE}, + [I(139,56)] = {29,0x1FFFF71E}, + [I(140,56)] = {29,0x1FFFF75E}, + [I(141,56)] = {29,0x1FFFF79E}, + [I(142,56)] = {30,0x3FFFFADE}, + [I(143,56)] = {29,0x1FFFF7DE}, + [I(144,56)] = {30,0x3FFFFB1E}, + [I(145,56)] = {30,0x3FFFFB5E}, + [I(146,56)] = {28,0xFFFF5DE}, + [I(147,56)] = {29,0x1FFFF81E}, + [I(148,56)] = {30,0x3FFFFB9E}, + [I(149,56)] = {29,0x1FFFF85E}, + [I(150,56)] = {29,0x1FFFF89E}, + [I(151,56)] = {29,0x1FFFF8DE}, + [I(152,56)] = {29,0x1FFFF91E}, + [I(153,56)] = {27,0x7FFF71E}, + [I(154,56)] = {28,0xFFFF61E}, + [I(155,56)] = {29,0x1FFFF95E}, + [I(156,56)] = {28,0xFFFF65E}, + [I(157,56)] = {29,0x1FFFF99E}, + [I(158,56)] = {29,0x1FFFF9DE}, + [I(159,56)] = {30,0x3FFFFBDE}, + [I(160,56)] = {28,0xFFFF69E}, + [I(161,56)] = {27,0x7FFF75E}, + [I(162,56)] = {26,0x3FFFA5E}, + [I(163,56)] = {28,0xFFFF6DE}, + [I(164,56)] = {28,0xFFFF71E}, + [I(165,56)] = {29,0x1FFFFA1E}, + [I(166,56)] = {29,0x1FFFFA5E}, + [I(167,56)] = {27,0x7FFF79E}, + [I(168,56)] = {29,0x1FFFFA9E}, + [I(169,56)] = {28,0xFFFF75E}, + [I(170,56)] = {28,0xFFFF79E}, + [I(171,56)] = {30,0x3FFFFC1E}, + [I(172,56)] = {27,0x7FFF7DE}, + [I(173,56)] = {28,0xFFFF7DE}, + [I(174,56)] = {29,0x1FFFFADE}, + [I(175,56)] = {29,0x1FFFFB1E}, + [I(176,56)] = {27,0x7FFF81E}, + [I(177,56)] = {27,0x7FFF85E}, + [I(178,56)] = {28,0xFFFF81E}, + [I(179,56)] = {27,0x7FFF89E}, + [I(180,56)] = {29,0x1FFFFB5E}, + [I(181,56)] = {28,0xFFFF85E}, + [I(182,56)] = {29,0x1FFFFB9E}, + [I(183,56)] = {29,0x1FFFFBDE}, + [I(184,56)] = {26,0x3FFFA9E}, + [I(185,56)] = {28,0xFFFF89E}, + [I(186,56)] = {28,0xFFFF8DE}, + [I(187,56)] = {28,0xFFFF91E}, + [I(188,56)] = {29,0x1FFFFC1E}, + [I(189,56)] = {28,0xFFFF95E}, + [I(190,56)] = {28,0xFFFF99E}, + [I(191,56)] = {29,0x1FFFFC5E}, + [I(192,56)] = {X32,0xFFFFF81E}, + [I(193,56)] = {X32,0xFFFFF85E}, + [I(194,56)] = {26,0x3FFFADE}, + [I(195,56)] = {25,0x1FFFC5E}, + [I(196,56)] = {28,0xFFFF9DE}, + [I(197,56)] = {29,0x1FFFFC9E}, + [I(198,56)] = {28,0xFFFFA1E}, + [I(199,56)] = {31,0x7FFFFB1E}, + [I(200,56)] = {X32,0xFFFFF89E}, + [I(201,56)] = {X32,0xFFFFF8DE}, + [I(202,56)] = {X32,0xFFFFF91E}, + [I(203,56)] = {64,0}, + [I(204,56)] = {64,0}, + [I(205,56)] = {X32,0xFFFFF95E}, + [I(206,56)] = {30,0x3FFFFC5E}, + [I(207,56)] = {31,0x7FFFFB5E}, + [I(208,56)] = {25,0x1FFFC9E}, + [I(209,56)] = {27,0x7FFF8DE}, + [I(210,56)] = {X32,0xFFFFF99E}, + [I(211,56)] = {64,0}, + [I(212,56)] = {64,0}, + [I(213,56)] = {X32,0xFFFFF9DE}, + [I(214,56)] = {64,0}, + [I(215,56)] = {30,0x3FFFFC9E}, + [I(216,56)] = {27,0x7FFF91E}, + [I(217,56)] = {27,0x7FFF95E}, + [I(218,56)] = {X32,0xFFFFFA1E}, + [I(219,56)] = {X32,0xFFFFFA5E}, + [I(220,56)] = {64,0}, + [I(221,56)] = {64,0}, + [I(222,56)] = {64,0}, + [I(223,56)] = {64,0}, + [I(224,56)] = {26,0x3FFFB1E}, + [I(225,56)] = {30,0x3FFFFCDE}, + [I(226,56)] = {26,0x3FFFB5E}, + [I(227,56)] = {27,0x7FFF99E}, + [I(228,56)] = {28,0xFFFFA5E}, + [I(229,56)] = {27,0x7FFF9DE}, + [I(230,56)] = {27,0x7FFFA1E}, + [I(231,56)] = {29,0x1FFFFCDE}, + [I(232,56)] = {28,0xFFFFA9E}, + [I(233,56)] = {28,0xFFFFADE}, + [I(234,56)] = {31,0x7FFFFB9E}, + [I(235,56)] = {31,0x7FFFFBDE}, + [I(236,56)] = {30,0x3FFFFD1E}, + [I(237,56)] = {30,0x3FFFFD5E}, + [I(238,56)] = {X32,0xFFFFFA9E}, + [I(239,56)] = {29,0x1FFFFD1E}, + [I(240,56)] = {X32,0xFFFFFADE}, + [I(241,56)] = {64,0}, + [I(242,56)] = {X32,0xFFFFFB1E}, + [I(243,56)] = {X32,0xFFFFFB5E}, + [I(244,56)] = {64,0}, + [I(245,56)] = {64,0}, + [I(246,56)] = {64,0}, + [I(247,56)] = {64,0}, + [I(248,56)] = {64,0}, + [I(249,56)] = {64,0}, + [I(250,56)] = {64,0}, + [I(251,56)] = {64,0}, + [I(252,56)] = {64,0}, + [I(253,56)] = {64,0}, + [I(254,56)] = {64,0}, + [I(255,56)] = {X32,0xFFFFFB9E}, + [I(0,57)] = {19,0x7FE1F}, + [I(1,57)] = {29,0x1FFFF61F}, + [I(2,57)] = {64,0}, + [I(3,57)] = {64,0}, + [I(4,57)] = {64,0}, + [I(5,57)] = {64,0}, + [I(6,57)] = {64,0}, + [I(7,57)] = {64,0}, + [I(8,57)] = {64,0}, + [I(9,57)] = {30,0x3FFFFA9F}, + [I(10,57)] = {64,0}, + [I(11,57)] = {64,0}, + [I(12,57)] = {64,0}, + [I(13,57)] = {64,0}, + [I(14,57)] = {64,0}, + [I(15,57)] = {64,0}, + [I(16,57)] = {64,0}, + [I(17,57)] = {64,0}, + [I(18,57)] = {64,0}, + [I(19,57)] = {64,0}, + [I(20,57)] = {64,0}, + [I(21,57)] = {64,0}, + [I(22,57)] = {64,0}, + [I(23,57)] = {64,0}, + [I(24,57)] = {64,0}, + [I(25,57)] = {64,0}, + [I(26,57)] = {64,0}, + [I(27,57)] = {64,0}, + [I(28,57)] = {64,0}, + [I(29,57)] = {64,0}, + [I(30,57)] = {64,0}, + [I(31,57)] = {64,0}, + [I(32,57)] = {12,0x51F}, + [I(33,57)] = {16,0xFE1F}, + [I(34,57)] = {16,0xFE5F}, + [I(35,57)] = {18,0x3FE9F}, + [I(36,57)] = {19,0x7FE5F}, + [I(37,57)] = {12,0x55F}, + [I(38,57)] = {14,0x3E1F}, + [I(39,57)] = {17,0x1FE9F}, + [I(40,57)] = {16,0xFE9F}, + [I(41,57)] = {16,0xFEDF}, + [I(42,57)] = {14,0x3E5F}, + [I(43,57)] = {17,0x1FEDF}, + [I(44,57)] = {14,0x3E9F}, + [I(45,57)] = {12,0x59F}, + [I(46,57)] = {12,0x5DF}, + [I(47,57)] = {12,0x61F}, + [I(48,57)] = {11,0x1F}, + [I(49,57)] = {11,0x5F}, + [I(50,57)] = {11,0x9F}, + [I(51,57)] = {12,0x65F}, + [I(52,57)] = {12,0x69F}, + [I(53,57)] = {12,0x6DF}, + [I(54,57)] = {12,0x71F}, + [I(55,57)] = {12,0x75F}, + [I(56,57)] = {12,0x79F}, + [I(57,57)] = {12,0x7DF}, + [I(58,57)] = {13,0x171F}, + [I(59,57)] = {14,0x3EDF}, + [I(60,57)] = {21,0x1FFF1F}, + [I(61,57)] = {12,0x81F}, + [I(62,57)] = {18,0x3FEDF}, + [I(63,57)] = {16,0xFF1F}, + [I(64,57)] = {19,0x7FE9F}, + [I(65,57)] = {12,0x85F}, + [I(66,57)] = {13,0x175F}, + [I(67,57)] = {13,0x179F}, + [I(68,57)] = {13,0x17DF}, + [I(69,57)] = {13,0x181F}, + [I(70,57)] = {13,0x185F}, + [I(71,57)] = {13,0x189F}, + [I(72,57)] = {13,0x18DF}, + [I(73,57)] = {13,0x191F}, + [I(74,57)] = {13,0x195F}, + [I(75,57)] = {13,0x199F}, + [I(76,57)] = {13,0x19DF}, + [I(77,57)] = {13,0x1A1F}, + [I(78,57)] = {13,0x1A5F}, + [I(79,57)] = {13,0x1A9F}, + [I(80,57)] = {13,0x1ADF}, + [I(81,57)] = {13,0x1B1F}, + [I(82,57)] = {13,0x1B5F}, + [I(83,57)] = {13,0x1B9F}, + [I(84,57)] = {13,0x1BDF}, + [I(85,57)] = {13,0x1C1F}, + [I(86,57)] = {13,0x1C5F}, + [I(87,57)] = {13,0x1C9F}, + [I(88,57)] = {14,0x3F1F}, + [I(89,57)] = {13,0x1CDF}, + [I(90,57)] = {14,0x3F5F}, + [I(91,57)] = {19,0x7FEDF}, + [I(92,57)] = {25,0x1FFFC1F}, + [I(93,57)] = {19,0x7FF1F}, + [I(94,57)] = {20,0xFFF1F}, + [I(95,57)] = {12,0x89F}, + [I(96,57)] = {21,0x1FFF5F}, + [I(97,57)] = {11,0xDF}, + [I(98,57)] = {12,0x8DF}, + [I(99,57)] = {11,0x11F}, + [I(100,57)] = {12,0x91F}, + [I(101,57)] = {11,0x15F}, + [I(102,57)] = {12,0x95F}, + [I(103,57)] = {12,0x99F}, + [I(104,57)] = {12,0x9DF}, + [I(105,57)] = {11,0x19F}, + [I(106,57)] = {13,0x1D1F}, + [I(107,57)] = {13,0x1D5F}, + [I(108,57)] = {12,0xA1F}, + [I(109,57)] = {12,0xA5F}, + [I(110,57)] = {12,0xA9F}, + [I(111,57)] = {11,0x1DF}, + [I(112,57)] = {12,0xADF}, + [I(113,57)] = {13,0x1D9F}, + [I(114,57)] = {12,0xB1F}, + [I(115,57)] = {11,0x21F}, + [I(116,57)] = {11,0x25F}, + [I(117,57)] = {12,0xB5F}, + [I(118,57)] = {13,0x1DDF}, + [I(119,57)] = {13,0x1E1F}, + [I(120,57)] = {13,0x1E5F}, + [I(121,57)] = {13,0x1E9F}, + [I(122,57)] = {13,0x1EDF}, + [I(123,57)] = {21,0x1FFF9F}, + [I(124,57)] = {17,0x1FF1F}, + [I(125,57)] = {20,0xFFF5F}, + [I(126,57)] = {19,0x7FF5F}, + [I(127,57)] = {64,0}, + [I(128,57)] = {26,0x3FFF99F}, + [I(129,57)] = {28,0xFFFF49F}, + [I(130,57)] = {26,0x3FFF9DF}, + [I(131,57)] = {26,0x3FFFA1F}, + [I(132,57)] = {28,0xFFFF4DF}, + [I(133,57)] = {28,0xFFFF51F}, + [I(134,57)] = {28,0xFFFF55F}, + [I(135,57)] = {29,0x1FFFF65F}, + [I(136,57)] = {28,0xFFFF59F}, + [I(137,57)] = {29,0x1FFFF69F}, + [I(138,57)] = {29,0x1FFFF6DF}, + [I(139,57)] = {29,0x1FFFF71F}, + [I(140,57)] = {29,0x1FFFF75F}, + [I(141,57)] = {29,0x1FFFF79F}, + [I(142,57)] = {30,0x3FFFFADF}, + [I(143,57)] = {29,0x1FFFF7DF}, + [I(144,57)] = {30,0x3FFFFB1F}, + [I(145,57)] = {30,0x3FFFFB5F}, + [I(146,57)] = {28,0xFFFF5DF}, + [I(147,57)] = {29,0x1FFFF81F}, + [I(148,57)] = {30,0x3FFFFB9F}, + [I(149,57)] = {29,0x1FFFF85F}, + [I(150,57)] = {29,0x1FFFF89F}, + [I(151,57)] = {29,0x1FFFF8DF}, + [I(152,57)] = {29,0x1FFFF91F}, + [I(153,57)] = {27,0x7FFF71F}, + [I(154,57)] = {28,0xFFFF61F}, + [I(155,57)] = {29,0x1FFFF95F}, + [I(156,57)] = {28,0xFFFF65F}, + [I(157,57)] = {29,0x1FFFF99F}, + [I(158,57)] = {29,0x1FFFF9DF}, + [I(159,57)] = {30,0x3FFFFBDF}, + [I(160,57)] = {28,0xFFFF69F}, + [I(161,57)] = {27,0x7FFF75F}, + [I(162,57)] = {26,0x3FFFA5F}, + [I(163,57)] = {28,0xFFFF6DF}, + [I(164,57)] = {28,0xFFFF71F}, + [I(165,57)] = {29,0x1FFFFA1F}, + [I(166,57)] = {29,0x1FFFFA5F}, + [I(167,57)] = {27,0x7FFF79F}, + [I(168,57)] = {29,0x1FFFFA9F}, + [I(169,57)] = {28,0xFFFF75F}, + [I(170,57)] = {28,0xFFFF79F}, + [I(171,57)] = {30,0x3FFFFC1F}, + [I(172,57)] = {27,0x7FFF7DF}, + [I(173,57)] = {28,0xFFFF7DF}, + [I(174,57)] = {29,0x1FFFFADF}, + [I(175,57)] = {29,0x1FFFFB1F}, + [I(176,57)] = {27,0x7FFF81F}, + [I(177,57)] = {27,0x7FFF85F}, + [I(178,57)] = {28,0xFFFF81F}, + [I(179,57)] = {27,0x7FFF89F}, + [I(180,57)] = {29,0x1FFFFB5F}, + [I(181,57)] = {28,0xFFFF85F}, + [I(182,57)] = {29,0x1FFFFB9F}, + [I(183,57)] = {29,0x1FFFFBDF}, + [I(184,57)] = {26,0x3FFFA9F}, + [I(185,57)] = {28,0xFFFF89F}, + [I(186,57)] = {28,0xFFFF8DF}, + [I(187,57)] = {28,0xFFFF91F}, + [I(188,57)] = {29,0x1FFFFC1F}, + [I(189,57)] = {28,0xFFFF95F}, + [I(190,57)] = {28,0xFFFF99F}, + [I(191,57)] = {29,0x1FFFFC5F}, + [I(192,57)] = {X32,0xFFFFF81F}, + [I(193,57)] = {X32,0xFFFFF85F}, + [I(194,57)] = {26,0x3FFFADF}, + [I(195,57)] = {25,0x1FFFC5F}, + [I(196,57)] = {28,0xFFFF9DF}, + [I(197,57)] = {29,0x1FFFFC9F}, + [I(198,57)] = {28,0xFFFFA1F}, + [I(199,57)] = {31,0x7FFFFB1F}, + [I(200,57)] = {X32,0xFFFFF89F}, + [I(201,57)] = {X32,0xFFFFF8DF}, + [I(202,57)] = {X32,0xFFFFF91F}, + [I(203,57)] = {64,0}, + [I(204,57)] = {64,0}, + [I(205,57)] = {X32,0xFFFFF95F}, + [I(206,57)] = {30,0x3FFFFC5F}, + [I(207,57)] = {31,0x7FFFFB5F}, + [I(208,57)] = {25,0x1FFFC9F}, + [I(209,57)] = {27,0x7FFF8DF}, + [I(210,57)] = {X32,0xFFFFF99F}, + [I(211,57)] = {64,0}, + [I(212,57)] = {64,0}, + [I(213,57)] = {X32,0xFFFFF9DF}, + [I(214,57)] = {64,0}, + [I(215,57)] = {30,0x3FFFFC9F}, + [I(216,57)] = {27,0x7FFF91F}, + [I(217,57)] = {27,0x7FFF95F}, + [I(218,57)] = {X32,0xFFFFFA1F}, + [I(219,57)] = {X32,0xFFFFFA5F}, + [I(220,57)] = {64,0}, + [I(221,57)] = {64,0}, + [I(222,57)] = {64,0}, + [I(223,57)] = {64,0}, + [I(224,57)] = {26,0x3FFFB1F}, + [I(225,57)] = {30,0x3FFFFCDF}, + [I(226,57)] = {26,0x3FFFB5F}, + [I(227,57)] = {27,0x7FFF99F}, + [I(228,57)] = {28,0xFFFFA5F}, + [I(229,57)] = {27,0x7FFF9DF}, + [I(230,57)] = {27,0x7FFFA1F}, + [I(231,57)] = {29,0x1FFFFCDF}, + [I(232,57)] = {28,0xFFFFA9F}, + [I(233,57)] = {28,0xFFFFADF}, + [I(234,57)] = {31,0x7FFFFB9F}, + [I(235,57)] = {31,0x7FFFFBDF}, + [I(236,57)] = {30,0x3FFFFD1F}, + [I(237,57)] = {30,0x3FFFFD5F}, + [I(238,57)] = {X32,0xFFFFFA9F}, + [I(239,57)] = {29,0x1FFFFD1F}, + [I(240,57)] = {X32,0xFFFFFADF}, + [I(241,57)] = {64,0}, + [I(242,57)] = {X32,0xFFFFFB1F}, + [I(243,57)] = {X32,0xFFFFFB5F}, + [I(244,57)] = {64,0}, + [I(245,57)] = {64,0}, + [I(246,57)] = {64,0}, + [I(247,57)] = {64,0}, + [I(248,57)] = {64,0}, + [I(249,57)] = {64,0}, + [I(250,57)] = {64,0}, + [I(251,57)] = {64,0}, + [I(252,57)] = {64,0}, + [I(253,57)] = {64,0}, + [I(254,57)] = {64,0}, + [I(255,57)] = {X32,0xFFFFFB9F}, + [I(0,58)] = {20,0xFFC5C}, + [I(1,58)] = {30,0x3FFFEC5C}, + [I(2,58)] = {64,0}, + [I(3,58)] = {64,0}, + [I(4,58)] = {64,0}, + [I(5,58)] = {64,0}, + [I(6,58)] = {64,0}, + [I(7,58)] = {64,0}, + [I(8,58)] = {64,0}, + [I(9,58)] = {31,0x7FFFF55C}, + [I(10,58)] = {64,0}, + [I(11,58)] = {64,0}, + [I(12,58)] = {64,0}, + [I(13,58)] = {64,0}, + [I(14,58)] = {64,0}, + [I(15,58)] = {64,0}, + [I(16,58)] = {64,0}, + [I(17,58)] = {64,0}, + [I(18,58)] = {64,0}, + [I(19,58)] = {64,0}, + [I(20,58)] = {64,0}, + [I(21,58)] = {64,0}, + [I(22,58)] = {64,0}, + [I(23,58)] = {64,0}, + [I(24,58)] = {64,0}, + [I(25,58)] = {64,0}, + [I(26,58)] = {64,0}, + [I(27,58)] = {64,0}, + [I(28,58)] = {64,0}, + [I(29,58)] = {64,0}, + [I(30,58)] = {64,0}, + [I(31,58)] = {64,0}, + [I(32,58)] = {13,0xA5C}, + [I(33,58)] = {17,0x1FC5C}, + [I(34,58)] = {17,0x1FCDC}, + [I(35,58)] = {19,0x7FD5C}, + [I(36,58)] = {20,0xFFCDC}, + [I(37,58)] = {13,0xADC}, + [I(38,58)] = {15,0x7C5C}, + [I(39,58)] = {18,0x3FD5C}, + [I(40,58)] = {17,0x1FD5C}, + [I(41,58)] = {17,0x1FDDC}, + [I(42,58)] = {15,0x7CDC}, + [I(43,58)] = {18,0x3FDDC}, + [I(44,58)] = {15,0x7D5C}, + [I(45,58)] = {13,0xB5C}, + [I(46,58)] = {13,0xBDC}, + [I(47,58)] = {13,0xC5C}, + [I(48,58)] = {12,0x5C}, + [I(49,58)] = {12,0xDC}, + [I(50,58)] = {12,0x15C}, + [I(51,58)] = {13,0xCDC}, + [I(52,58)] = {13,0xD5C}, + [I(53,58)] = {13,0xDDC}, + [I(54,58)] = {13,0xE5C}, + [I(55,58)] = {13,0xEDC}, + [I(56,58)] = {13,0xF5C}, + [I(57,58)] = {13,0xFDC}, + [I(58,58)] = {14,0x2E5C}, + [I(59,58)] = {15,0x7DDC}, + [I(60,58)] = {22,0x3FFE5C}, + [I(61,58)] = {13,0x105C}, + [I(62,58)] = {19,0x7FDDC}, + [I(63,58)] = {17,0x1FE5C}, + [I(64,58)] = {20,0xFFD5C}, + [I(65,58)] = {13,0x10DC}, + [I(66,58)] = {14,0x2EDC}, + [I(67,58)] = {14,0x2F5C}, + [I(68,58)] = {14,0x2FDC}, + [I(69,58)] = {14,0x305C}, + [I(70,58)] = {14,0x30DC}, + [I(71,58)] = {14,0x315C}, + [I(72,58)] = {14,0x31DC}, + [I(73,58)] = {14,0x325C}, + [I(74,58)] = {14,0x32DC}, + [I(75,58)] = {14,0x335C}, + [I(76,58)] = {14,0x33DC}, + [I(77,58)] = {14,0x345C}, + [I(78,58)] = {14,0x34DC}, + [I(79,58)] = {14,0x355C}, + [I(80,58)] = {14,0x35DC}, + [I(81,58)] = {14,0x365C}, + [I(82,58)] = {14,0x36DC}, + [I(83,58)] = {14,0x375C}, + [I(84,58)] = {14,0x37DC}, + [I(85,58)] = {14,0x385C}, + [I(86,58)] = {14,0x38DC}, + [I(87,58)] = {14,0x395C}, + [I(88,58)] = {15,0x7E5C}, + [I(89,58)] = {14,0x39DC}, + [I(90,58)] = {15,0x7EDC}, + [I(91,58)] = {20,0xFFDDC}, + [I(92,58)] = {26,0x3FFF85C}, + [I(93,58)] = {20,0xFFE5C}, + [I(94,58)] = {21,0x1FFE5C}, + [I(95,58)] = {13,0x115C}, + [I(96,58)] = {22,0x3FFEDC}, + [I(97,58)] = {12,0x1DC}, + [I(98,58)] = {13,0x11DC}, + [I(99,58)] = {12,0x25C}, + [I(100,58)] = {13,0x125C}, + [I(101,58)] = {12,0x2DC}, + [I(102,58)] = {13,0x12DC}, + [I(103,58)] = {13,0x135C}, + [I(104,58)] = {13,0x13DC}, + [I(105,58)] = {12,0x35C}, + [I(106,58)] = {14,0x3A5C}, + [I(107,58)] = {14,0x3ADC}, + [I(108,58)] = {13,0x145C}, + [I(109,58)] = {13,0x14DC}, + [I(110,58)] = {13,0x155C}, + [I(111,58)] = {12,0x3DC}, + [I(112,58)] = {13,0x15DC}, + [I(113,58)] = {14,0x3B5C}, + [I(114,58)] = {13,0x165C}, + [I(115,58)] = {12,0x45C}, + [I(116,58)] = {12,0x4DC}, + [I(117,58)] = {13,0x16DC}, + [I(118,58)] = {14,0x3BDC}, + [I(119,58)] = {14,0x3C5C}, + [I(120,58)] = {14,0x3CDC}, + [I(121,58)] = {14,0x3D5C}, + [I(122,58)] = {14,0x3DDC}, + [I(123,58)] = {22,0x3FFF5C}, + [I(124,58)] = {18,0x3FE5C}, + [I(125,58)] = {21,0x1FFEDC}, + [I(126,58)] = {20,0xFFEDC}, + [I(127,58)] = {64,0}, + [I(128,58)] = {27,0x7FFF35C}, + [I(129,58)] = {29,0x1FFFE95C}, + [I(130,58)] = {27,0x7FFF3DC}, + [I(131,58)] = {27,0x7FFF45C}, + [I(132,58)] = {29,0x1FFFE9DC}, + [I(133,58)] = {29,0x1FFFEA5C}, + [I(134,58)] = {29,0x1FFFEADC}, + [I(135,58)] = {30,0x3FFFECDC}, + [I(136,58)] = {29,0x1FFFEB5C}, + [I(137,58)] = {30,0x3FFFED5C}, + [I(138,58)] = {30,0x3FFFEDDC}, + [I(139,58)] = {30,0x3FFFEE5C}, + [I(140,58)] = {30,0x3FFFEEDC}, + [I(141,58)] = {30,0x3FFFEF5C}, + [I(142,58)] = {31,0x7FFFF5DC}, + [I(143,58)] = {30,0x3FFFEFDC}, + [I(144,58)] = {31,0x7FFFF65C}, + [I(145,58)] = {31,0x7FFFF6DC}, + [I(146,58)] = {29,0x1FFFEBDC}, + [I(147,58)] = {30,0x3FFFF05C}, + [I(148,58)] = {31,0x7FFFF75C}, + [I(149,58)] = {30,0x3FFFF0DC}, + [I(150,58)] = {30,0x3FFFF15C}, + [I(151,58)] = {30,0x3FFFF1DC}, + [I(152,58)] = {30,0x3FFFF25C}, + [I(153,58)] = {28,0xFFFEE5C}, + [I(154,58)] = {29,0x1FFFEC5C}, + [I(155,58)] = {30,0x3FFFF2DC}, + [I(156,58)] = {29,0x1FFFECDC}, + [I(157,58)] = {30,0x3FFFF35C}, + [I(158,58)] = {30,0x3FFFF3DC}, + [I(159,58)] = {31,0x7FFFF7DC}, + [I(160,58)] = {29,0x1FFFED5C}, + [I(161,58)] = {28,0xFFFEEDC}, + [I(162,58)] = {27,0x7FFF4DC}, + [I(163,58)] = {29,0x1FFFEDDC}, + [I(164,58)] = {29,0x1FFFEE5C}, + [I(165,58)] = {30,0x3FFFF45C}, + [I(166,58)] = {30,0x3FFFF4DC}, + [I(167,58)] = {28,0xFFFEF5C}, + [I(168,58)] = {30,0x3FFFF55C}, + [I(169,58)] = {29,0x1FFFEEDC}, + [I(170,58)] = {29,0x1FFFEF5C}, + [I(171,58)] = {31,0x7FFFF85C}, + [I(172,58)] = {28,0xFFFEFDC}, + [I(173,58)] = {29,0x1FFFEFDC}, + [I(174,58)] = {30,0x3FFFF5DC}, + [I(175,58)] = {30,0x3FFFF65C}, + [I(176,58)] = {28,0xFFFF05C}, + [I(177,58)] = {28,0xFFFF0DC}, + [I(178,58)] = {29,0x1FFFF05C}, + [I(179,58)] = {28,0xFFFF15C}, + [I(180,58)] = {30,0x3FFFF6DC}, + [I(181,58)] = {29,0x1FFFF0DC}, + [I(182,58)] = {30,0x3FFFF75C}, + [I(183,58)] = {30,0x3FFFF7DC}, + [I(184,58)] = {27,0x7FFF55C}, + [I(185,58)] = {29,0x1FFFF15C}, + [I(186,58)] = {29,0x1FFFF1DC}, + [I(187,58)] = {29,0x1FFFF25C}, + [I(188,58)] = {30,0x3FFFF85C}, + [I(189,58)] = {29,0x1FFFF2DC}, + [I(190,58)] = {29,0x1FFFF35C}, + [I(191,58)] = {30,0x3FFFF8DC}, + [I(192,58)] = {64,0}, + [I(193,58)] = {64,0}, + [I(194,58)] = {27,0x7FFF5DC}, + [I(195,58)] = {26,0x3FFF8DC}, + [I(196,58)] = {29,0x1FFFF3DC}, + [I(197,58)] = {30,0x3FFFF95C}, + [I(198,58)] = {29,0x1FFFF45C}, + [I(199,58)] = {X32,0xFFFFF65C}, + [I(200,58)] = {64,0}, + [I(201,58)] = {64,0}, + [I(202,58)] = {64,0}, + [I(203,58)] = {64,0}, + [I(204,58)] = {64,0}, + [I(205,58)] = {64,0}, + [I(206,58)] = {31,0x7FFFF8DC}, + [I(207,58)] = {X32,0xFFFFF6DC}, + [I(208,58)] = {26,0x3FFF95C}, + [I(209,58)] = {28,0xFFFF1DC}, + [I(210,58)] = {64,0}, + [I(211,58)] = {64,0}, + [I(212,58)] = {64,0}, + [I(213,58)] = {64,0}, + [I(214,58)] = {64,0}, + [I(215,58)] = {31,0x7FFFF95C}, + [I(216,58)] = {28,0xFFFF25C}, + [I(217,58)] = {28,0xFFFF2DC}, + [I(218,58)] = {64,0}, + [I(219,58)] = {64,0}, + [I(220,58)] = {64,0}, + [I(221,58)] = {64,0}, + [I(222,58)] = {64,0}, + [I(223,58)] = {64,0}, + [I(224,58)] = {27,0x7FFF65C}, + [I(225,58)] = {31,0x7FFFF9DC}, + [I(226,58)] = {27,0x7FFF6DC}, + [I(227,58)] = {28,0xFFFF35C}, + [I(228,58)] = {29,0x1FFFF4DC}, + [I(229,58)] = {28,0xFFFF3DC}, + [I(230,58)] = {28,0xFFFF45C}, + [I(231,58)] = {30,0x3FFFF9DC}, + [I(232,58)] = {29,0x1FFFF55C}, + [I(233,58)] = {29,0x1FFFF5DC}, + [I(234,58)] = {X32,0xFFFFF75C}, + [I(235,58)] = {X32,0xFFFFF7DC}, + [I(236,58)] = {31,0x7FFFFA5C}, + [I(237,58)] = {31,0x7FFFFADC}, + [I(238,58)] = {64,0}, + [I(239,58)] = {30,0x3FFFFA5C}, + [I(240,58)] = {64,0}, + [I(241,58)] = {64,0}, + [I(242,58)] = {64,0}, + [I(243,58)] = {64,0}, + [I(244,58)] = {64,0}, + [I(245,58)] = {64,0}, + [I(246,58)] = {64,0}, + [I(247,58)] = {64,0}, + [I(248,58)] = {64,0}, + [I(249,58)] = {64,0}, + [I(250,58)] = {64,0}, + [I(251,58)] = {64,0}, + [I(252,58)] = {64,0}, + [I(253,58)] = {64,0}, + [I(254,58)] = {64,0}, + [I(255,58)] = {64,0}, + [I(0,59)] = {21,0x1FF8FB}, + [I(1,59)] = {31,0x7FFFD8FB}, + [I(2,59)] = {64,0}, + [I(3,59)] = {64,0}, + [I(4,59)] = {64,0}, + [I(5,59)] = {64,0}, + [I(6,59)] = {64,0}, + [I(7,59)] = {64,0}, + [I(8,59)] = {64,0}, + [I(9,59)] = {X32,0xFFFFEAFB}, + [I(10,59)] = {64,0}, + [I(11,59)] = {64,0}, + [I(12,59)] = {64,0}, + [I(13,59)] = {64,0}, + [I(14,59)] = {64,0}, + [I(15,59)] = {64,0}, + [I(16,59)] = {64,0}, + [I(17,59)] = {64,0}, + [I(18,59)] = {64,0}, + [I(19,59)] = {64,0}, + [I(20,59)] = {64,0}, + [I(21,59)] = {64,0}, + [I(22,59)] = {64,0}, + [I(23,59)] = {64,0}, + [I(24,59)] = {64,0}, + [I(25,59)] = {64,0}, + [I(26,59)] = {64,0}, + [I(27,59)] = {64,0}, + [I(28,59)] = {64,0}, + [I(29,59)] = {64,0}, + [I(30,59)] = {64,0}, + [I(31,59)] = {64,0}, + [I(32,59)] = {14,0x14FB}, + [I(33,59)] = {18,0x3F8FB}, + [I(34,59)] = {18,0x3F9FB}, + [I(35,59)] = {20,0xFFAFB}, + [I(36,59)] = {21,0x1FF9FB}, + [I(37,59)] = {14,0x15FB}, + [I(38,59)] = {16,0xF8FB}, + [I(39,59)] = {19,0x7FAFB}, + [I(40,59)] = {18,0x3FAFB}, + [I(41,59)] = {18,0x3FBFB}, + [I(42,59)] = {16,0xF9FB}, + [I(43,59)] = {19,0x7FBFB}, + [I(44,59)] = {16,0xFAFB}, + [I(45,59)] = {14,0x16FB}, + [I(46,59)] = {14,0x17FB}, + [I(47,59)] = {14,0x18FB}, + [I(48,59)] = {13,0xFB}, + [I(49,59)] = {13,0x1FB}, + [I(50,59)] = {13,0x2FB}, + [I(51,59)] = {14,0x19FB}, + [I(52,59)] = {14,0x1AFB}, + [I(53,59)] = {14,0x1BFB}, + [I(54,59)] = {14,0x1CFB}, + [I(55,59)] = {14,0x1DFB}, + [I(56,59)] = {14,0x1EFB}, + [I(57,59)] = {14,0x1FFB}, + [I(58,59)] = {15,0x5CFB}, + [I(59,59)] = {16,0xFBFB}, + [I(60,59)] = {23,0x7FFCFB}, + [I(61,59)] = {14,0x20FB}, + [I(62,59)] = {20,0xFFBFB}, + [I(63,59)] = {18,0x3FCFB}, + [I(64,59)] = {21,0x1FFAFB}, + [I(65,59)] = {14,0x21FB}, + [I(66,59)] = {15,0x5DFB}, + [I(67,59)] = {15,0x5EFB}, + [I(68,59)] = {15,0x5FFB}, + [I(69,59)] = {15,0x60FB}, + [I(70,59)] = {15,0x61FB}, + [I(71,59)] = {15,0x62FB}, + [I(72,59)] = {15,0x63FB}, + [I(73,59)] = {15,0x64FB}, + [I(74,59)] = {15,0x65FB}, + [I(75,59)] = {15,0x66FB}, + [I(76,59)] = {15,0x67FB}, + [I(77,59)] = {15,0x68FB}, + [I(78,59)] = {15,0x69FB}, + [I(79,59)] = {15,0x6AFB}, + [I(80,59)] = {15,0x6BFB}, + [I(81,59)] = {15,0x6CFB}, + [I(82,59)] = {15,0x6DFB}, + [I(83,59)] = {15,0x6EFB}, + [I(84,59)] = {15,0x6FFB}, + [I(85,59)] = {15,0x70FB}, + [I(86,59)] = {15,0x71FB}, + [I(87,59)] = {15,0x72FB}, + [I(88,59)] = {16,0xFCFB}, + [I(89,59)] = {15,0x73FB}, + [I(90,59)] = {16,0xFDFB}, + [I(91,59)] = {21,0x1FFBFB}, + [I(92,59)] = {27,0x7FFF0FB}, + [I(93,59)] = {21,0x1FFCFB}, + [I(94,59)] = {22,0x3FFCFB}, + [I(95,59)] = {14,0x22FB}, + [I(96,59)] = {23,0x7FFDFB}, + [I(97,59)] = {13,0x3FB}, + [I(98,59)] = {14,0x23FB}, + [I(99,59)] = {13,0x4FB}, + [I(100,59)] = {14,0x24FB}, + [I(101,59)] = {13,0x5FB}, + [I(102,59)] = {14,0x25FB}, + [I(103,59)] = {14,0x26FB}, + [I(104,59)] = {14,0x27FB}, + [I(105,59)] = {13,0x6FB}, + [I(106,59)] = {15,0x74FB}, + [I(107,59)] = {15,0x75FB}, + [I(108,59)] = {14,0x28FB}, + [I(109,59)] = {14,0x29FB}, + [I(110,59)] = {14,0x2AFB}, + [I(111,59)] = {13,0x7FB}, + [I(112,59)] = {14,0x2BFB}, + [I(113,59)] = {15,0x76FB}, + [I(114,59)] = {14,0x2CFB}, + [I(115,59)] = {13,0x8FB}, + [I(116,59)] = {13,0x9FB}, + [I(117,59)] = {14,0x2DFB}, + [I(118,59)] = {15,0x77FB}, + [I(119,59)] = {15,0x78FB}, + [I(120,59)] = {15,0x79FB}, + [I(121,59)] = {15,0x7AFB}, + [I(122,59)] = {15,0x7BFB}, + [I(123,59)] = {23,0x7FFEFB}, + [I(124,59)] = {19,0x7FCFB}, + [I(125,59)] = {22,0x3FFDFB}, + [I(126,59)] = {21,0x1FFDFB}, + [I(127,59)] = {64,0}, + [I(128,59)] = {28,0xFFFE6FB}, + [I(129,59)] = {30,0x3FFFD2FB}, + [I(130,59)] = {28,0xFFFE7FB}, + [I(131,59)] = {28,0xFFFE8FB}, + [I(132,59)] = {30,0x3FFFD3FB}, + [I(133,59)] = {30,0x3FFFD4FB}, + [I(134,59)] = {30,0x3FFFD5FB}, + [I(135,59)] = {31,0x7FFFD9FB}, + [I(136,59)] = {30,0x3FFFD6FB}, + [I(137,59)] = {31,0x7FFFDAFB}, + [I(138,59)] = {31,0x7FFFDBFB}, + [I(139,59)] = {31,0x7FFFDCFB}, + [I(140,59)] = {31,0x7FFFDDFB}, + [I(141,59)] = {31,0x7FFFDEFB}, + [I(142,59)] = {X32,0xFFFFEBFB}, + [I(143,59)] = {31,0x7FFFDFFB}, + [I(144,59)] = {X32,0xFFFFECFB}, + [I(145,59)] = {X32,0xFFFFEDFB}, + [I(146,59)] = {30,0x3FFFD7FB}, + [I(147,59)] = {31,0x7FFFE0FB}, + [I(148,59)] = {X32,0xFFFFEEFB}, + [I(149,59)] = {31,0x7FFFE1FB}, + [I(150,59)] = {31,0x7FFFE2FB}, + [I(151,59)] = {31,0x7FFFE3FB}, + [I(152,59)] = {31,0x7FFFE4FB}, + [I(153,59)] = {29,0x1FFFDCFB}, + [I(154,59)] = {30,0x3FFFD8FB}, + [I(155,59)] = {31,0x7FFFE5FB}, + [I(156,59)] = {30,0x3FFFD9FB}, + [I(157,59)] = {31,0x7FFFE6FB}, + [I(158,59)] = {31,0x7FFFE7FB}, + [I(159,59)] = {X32,0xFFFFEFFB}, + [I(160,59)] = {30,0x3FFFDAFB}, + [I(161,59)] = {29,0x1FFFDDFB}, + [I(162,59)] = {28,0xFFFE9FB}, + [I(163,59)] = {30,0x3FFFDBFB}, + [I(164,59)] = {30,0x3FFFDCFB}, + [I(165,59)] = {31,0x7FFFE8FB}, + [I(166,59)] = {31,0x7FFFE9FB}, + [I(167,59)] = {29,0x1FFFDEFB}, + [I(168,59)] = {31,0x7FFFEAFB}, + [I(169,59)] = {30,0x3FFFDDFB}, + [I(170,59)] = {30,0x3FFFDEFB}, + [I(171,59)] = {X32,0xFFFFF0FB}, + [I(172,59)] = {29,0x1FFFDFFB}, + [I(173,59)] = {30,0x3FFFDFFB}, + [I(174,59)] = {31,0x7FFFEBFB}, + [I(175,59)] = {31,0x7FFFECFB}, + [I(176,59)] = {29,0x1FFFE0FB}, + [I(177,59)] = {29,0x1FFFE1FB}, + [I(178,59)] = {30,0x3FFFE0FB}, + [I(179,59)] = {29,0x1FFFE2FB}, + [I(180,59)] = {31,0x7FFFEDFB}, + [I(181,59)] = {30,0x3FFFE1FB}, + [I(182,59)] = {31,0x7FFFEEFB}, + [I(183,59)] = {31,0x7FFFEFFB}, + [I(184,59)] = {28,0xFFFEAFB}, + [I(185,59)] = {30,0x3FFFE2FB}, + [I(186,59)] = {30,0x3FFFE3FB}, + [I(187,59)] = {30,0x3FFFE4FB}, + [I(188,59)] = {31,0x7FFFF0FB}, + [I(189,59)] = {30,0x3FFFE5FB}, + [I(190,59)] = {30,0x3FFFE6FB}, + [I(191,59)] = {31,0x7FFFF1FB}, + [I(192,59)] = {64,0}, + [I(193,59)] = {64,0}, + [I(194,59)] = {28,0xFFFEBFB}, + [I(195,59)] = {27,0x7FFF1FB}, + [I(196,59)] = {30,0x3FFFE7FB}, + [I(197,59)] = {31,0x7FFFF2FB}, + [I(198,59)] = {30,0x3FFFE8FB}, + [I(199,59)] = {64,0}, + [I(200,59)] = {64,0}, + [I(201,59)] = {64,0}, + [I(202,59)] = {64,0}, + [I(203,59)] = {64,0}, + [I(204,59)] = {64,0}, + [I(205,59)] = {64,0}, + [I(206,59)] = {X32,0xFFFFF1FB}, + [I(207,59)] = {64,0}, + [I(208,59)] = {27,0x7FFF2FB}, + [I(209,59)] = {29,0x1FFFE3FB}, + [I(210,59)] = {64,0}, + [I(211,59)] = {64,0}, + [I(212,59)] = {64,0}, + [I(213,59)] = {64,0}, + [I(214,59)] = {64,0}, + [I(215,59)] = {X32,0xFFFFF2FB}, + [I(216,59)] = {29,0x1FFFE4FB}, + [I(217,59)] = {29,0x1FFFE5FB}, + [I(218,59)] = {64,0}, + [I(219,59)] = {64,0}, + [I(220,59)] = {64,0}, + [I(221,59)] = {64,0}, + [I(222,59)] = {64,0}, + [I(223,59)] = {64,0}, + [I(224,59)] = {28,0xFFFECFB}, + [I(225,59)] = {X32,0xFFFFF3FB}, + [I(226,59)] = {28,0xFFFEDFB}, + [I(227,59)] = {29,0x1FFFE6FB}, + [I(228,59)] = {30,0x3FFFE9FB}, + [I(229,59)] = {29,0x1FFFE7FB}, + [I(230,59)] = {29,0x1FFFE8FB}, + [I(231,59)] = {31,0x7FFFF3FB}, + [I(232,59)] = {30,0x3FFFEAFB}, + [I(233,59)] = {30,0x3FFFEBFB}, + [I(234,59)] = {64,0}, + [I(235,59)] = {64,0}, + [I(236,59)] = {X32,0xFFFFF4FB}, + [I(237,59)] = {X32,0xFFFFF5FB}, + [I(238,59)] = {64,0}, + [I(239,59)] = {31,0x7FFFF4FB}, + [I(240,59)] = {64,0}, + [I(241,59)] = {64,0}, + [I(242,59)] = {64,0}, + [I(243,59)] = {64,0}, + [I(244,59)] = {64,0}, + [I(245,59)] = {64,0}, + [I(246,59)] = {64,0}, + [I(247,59)] = {64,0}, + [I(248,59)] = {64,0}, + [I(249,59)] = {64,0}, + [I(250,59)] = {64,0}, + [I(251,59)] = {64,0}, + [I(252,59)] = {64,0}, + [I(253,59)] = {64,0}, + [I(254,59)] = {64,0}, + [I(255,59)] = {64,0}, + [I(0,60)] = {28,0xFFC7FFC}, + [I(1,60)] = {64,0}, + [I(2,60)] = {64,0}, + [I(3,60)] = {64,0}, + [I(4,60)] = {64,0}, + [I(5,60)] = {64,0}, + [I(6,60)] = {64,0}, + [I(7,60)] = {64,0}, + [I(8,60)] = {64,0}, + [I(9,60)] = {64,0}, + [I(10,60)] = {64,0}, + [I(11,60)] = {64,0}, + [I(12,60)] = {64,0}, + [I(13,60)] = {64,0}, + [I(14,60)] = {64,0}, + [I(15,60)] = {64,0}, + [I(16,60)] = {64,0}, + [I(17,60)] = {64,0}, + [I(18,60)] = {64,0}, + [I(19,60)] = {64,0}, + [I(20,60)] = {64,0}, + [I(21,60)] = {64,0}, + [I(22,60)] = {64,0}, + [I(23,60)] = {64,0}, + [I(24,60)] = {64,0}, + [I(25,60)] = {64,0}, + [I(26,60)] = {64,0}, + [I(27,60)] = {64,0}, + [I(28,60)] = {64,0}, + [I(29,60)] = {64,0}, + [I(30,60)] = {64,0}, + [I(31,60)] = {64,0}, + [I(32,60)] = {21,0xA7FFC}, + [I(33,60)] = {25,0x1FC7FFC}, + [I(34,60)] = {25,0x1FCFFFC}, + [I(35,60)] = {27,0x7FD7FFC}, + [I(36,60)] = {28,0xFFCFFFC}, + [I(37,60)] = {21,0xAFFFC}, + [I(38,60)] = {23,0x7C7FFC}, + [I(39,60)] = {26,0x3FD7FFC}, + [I(40,60)] = {25,0x1FD7FFC}, + [I(41,60)] = {25,0x1FDFFFC}, + [I(42,60)] = {23,0x7CFFFC}, + [I(43,60)] = {26,0x3FDFFFC}, + [I(44,60)] = {23,0x7D7FFC}, + [I(45,60)] = {21,0xB7FFC}, + [I(46,60)] = {21,0xBFFFC}, + [I(47,60)] = {21,0xC7FFC}, + [I(48,60)] = {20,0x7FFC}, + [I(49,60)] = {20,0xFFFC}, + [I(50,60)] = {20,0x17FFC}, + [I(51,60)] = {21,0xCFFFC}, + [I(52,60)] = {21,0xD7FFC}, + [I(53,60)] = {21,0xDFFFC}, + [I(54,60)] = {21,0xE7FFC}, + [I(55,60)] = {21,0xEFFFC}, + [I(56,60)] = {21,0xF7FFC}, + [I(57,60)] = {21,0xFFFFC}, + [I(58,60)] = {22,0x2E7FFC}, + [I(59,60)] = {23,0x7DFFFC}, + [I(60,60)] = {30,0x3FFE7FFC}, + [I(61,60)] = {21,0x107FFC}, + [I(62,60)] = {27,0x7FDFFFC}, + [I(63,60)] = {25,0x1FE7FFC}, + [I(64,60)] = {28,0xFFD7FFC}, + [I(65,60)] = {21,0x10FFFC}, + [I(66,60)] = {22,0x2EFFFC}, + [I(67,60)] = {22,0x2F7FFC}, + [I(68,60)] = {22,0x2FFFFC}, + [I(69,60)] = {22,0x307FFC}, + [I(70,60)] = {22,0x30FFFC}, + [I(71,60)] = {22,0x317FFC}, + [I(72,60)] = {22,0x31FFFC}, + [I(73,60)] = {22,0x327FFC}, + [I(74,60)] = {22,0x32FFFC}, + [I(75,60)] = {22,0x337FFC}, + [I(76,60)] = {22,0x33FFFC}, + [I(77,60)] = {22,0x347FFC}, + [I(78,60)] = {22,0x34FFFC}, + [I(79,60)] = {22,0x357FFC}, + [I(80,60)] = {22,0x35FFFC}, + [I(81,60)] = {22,0x367FFC}, + [I(82,60)] = {22,0x36FFFC}, + [I(83,60)] = {22,0x377FFC}, + [I(84,60)] = {22,0x37FFFC}, + [I(85,60)] = {22,0x387FFC}, + [I(86,60)] = {22,0x38FFFC}, + [I(87,60)] = {22,0x397FFC}, + [I(88,60)] = {23,0x7E7FFC}, + [I(89,60)] = {22,0x39FFFC}, + [I(90,60)] = {23,0x7EFFFC}, + [I(91,60)] = {28,0xFFDFFFC}, + [I(92,60)] = {64,0}, + [I(93,60)] = {28,0xFFE7FFC}, + [I(94,60)] = {29,0x1FFE7FFC}, + [I(95,60)] = {21,0x117FFC}, + [I(96,60)] = {30,0x3FFEFFFC}, + [I(97,60)] = {20,0x1FFFC}, + [I(98,60)] = {21,0x11FFFC}, + [I(99,60)] = {20,0x27FFC}, + [I(100,60)] = {21,0x127FFC}, + [I(101,60)] = {20,0x2FFFC}, + [I(102,60)] = {21,0x12FFFC}, + [I(103,60)] = {21,0x137FFC}, + [I(104,60)] = {21,0x13FFFC}, + [I(105,60)] = {20,0x37FFC}, + [I(106,60)] = {22,0x3A7FFC}, + [I(107,60)] = {22,0x3AFFFC}, + [I(108,60)] = {21,0x147FFC}, + [I(109,60)] = {21,0x14FFFC}, + [I(110,60)] = {21,0x157FFC}, + [I(111,60)] = {20,0x3FFFC}, + [I(112,60)] = {21,0x15FFFC}, + [I(113,60)] = {22,0x3B7FFC}, + [I(114,60)] = {21,0x167FFC}, + [I(115,60)] = {20,0x47FFC}, + [I(116,60)] = {20,0x4FFFC}, + [I(117,60)] = {21,0x16FFFC}, + [I(118,60)] = {22,0x3BFFFC}, + [I(119,60)] = {22,0x3C7FFC}, + [I(120,60)] = {22,0x3CFFFC}, + [I(121,60)] = {22,0x3D7FFC}, + [I(122,60)] = {22,0x3DFFFC}, + [I(123,60)] = {30,0x3FFF7FFC}, + [I(124,60)] = {26,0x3FE7FFC}, + [I(125,60)] = {29,0x1FFEFFFC}, + [I(126,60)] = {28,0xFFEFFFC}, + [I(127,60)] = {64,0}, + [I(128,60)] = {64,0}, + [I(129,60)] = {64,0}, + [I(130,60)] = {64,0}, + [I(131,60)] = {64,0}, + [I(132,60)] = {64,0}, + [I(133,60)] = {64,0}, + [I(134,60)] = {64,0}, + [I(135,60)] = {64,0}, + [I(136,60)] = {64,0}, + [I(137,60)] = {64,0}, + [I(138,60)] = {64,0}, + [I(139,60)] = {64,0}, + [I(140,60)] = {64,0}, + [I(141,60)] = {64,0}, + [I(142,60)] = {64,0}, + [I(143,60)] = {64,0}, + [I(144,60)] = {64,0}, + [I(145,60)] = {64,0}, + [I(146,60)] = {64,0}, + [I(147,60)] = {64,0}, + [I(148,60)] = {64,0}, + [I(149,60)] = {64,0}, + [I(150,60)] = {64,0}, + [I(151,60)] = {64,0}, + [I(152,60)] = {64,0}, + [I(153,60)] = {64,0}, + [I(154,60)] = {64,0}, + [I(155,60)] = {64,0}, + [I(156,60)] = {64,0}, + [I(157,60)] = {64,0}, + [I(158,60)] = {64,0}, + [I(159,60)] = {64,0}, + [I(160,60)] = {64,0}, + [I(161,60)] = {64,0}, + [I(162,60)] = {64,0}, + [I(163,60)] = {64,0}, + [I(164,60)] = {64,0}, + [I(165,60)] = {64,0}, + [I(166,60)] = {64,0}, + [I(167,60)] = {64,0}, + [I(168,60)] = {64,0}, + [I(169,60)] = {64,0}, + [I(170,60)] = {64,0}, + [I(171,60)] = {64,0}, + [I(172,60)] = {64,0}, + [I(173,60)] = {64,0}, + [I(174,60)] = {64,0}, + [I(175,60)] = {64,0}, + [I(176,60)] = {64,0}, + [I(177,60)] = {64,0}, + [I(178,60)] = {64,0}, + [I(179,60)] = {64,0}, + [I(180,60)] = {64,0}, + [I(181,60)] = {64,0}, + [I(182,60)] = {64,0}, + [I(183,60)] = {64,0}, + [I(184,60)] = {64,0}, + [I(185,60)] = {64,0}, + [I(186,60)] = {64,0}, + [I(187,60)] = {64,0}, + [I(188,60)] = {64,0}, + [I(189,60)] = {64,0}, + [I(190,60)] = {64,0}, + [I(191,60)] = {64,0}, + [I(192,60)] = {64,0}, + [I(193,60)] = {64,0}, + [I(194,60)] = {64,0}, + [I(195,60)] = {64,0}, + [I(196,60)] = {64,0}, + [I(197,60)] = {64,0}, + [I(198,60)] = {64,0}, + [I(199,60)] = {64,0}, + [I(200,60)] = {64,0}, + [I(201,60)] = {64,0}, + [I(202,60)] = {64,0}, + [I(203,60)] = {64,0}, + [I(204,60)] = {64,0}, + [I(205,60)] = {64,0}, + [I(206,60)] = {64,0}, + [I(207,60)] = {64,0}, + [I(208,60)] = {64,0}, + [I(209,60)] = {64,0}, + [I(210,60)] = {64,0}, + [I(211,60)] = {64,0}, + [I(212,60)] = {64,0}, + [I(213,60)] = {64,0}, + [I(214,60)] = {64,0}, + [I(215,60)] = {64,0}, + [I(216,60)] = {64,0}, + [I(217,60)] = {64,0}, + [I(218,60)] = {64,0}, + [I(219,60)] = {64,0}, + [I(220,60)] = {64,0}, + [I(221,60)] = {64,0}, + [I(222,60)] = {64,0}, + [I(223,60)] = {64,0}, + [I(224,60)] = {64,0}, + [I(225,60)] = {64,0}, + [I(226,60)] = {64,0}, + [I(227,60)] = {64,0}, + [I(228,60)] = {64,0}, + [I(229,60)] = {64,0}, + [I(230,60)] = {64,0}, + [I(231,60)] = {64,0}, + [I(232,60)] = {64,0}, + [I(233,60)] = {64,0}, + [I(234,60)] = {64,0}, + [I(235,60)] = {64,0}, + [I(236,60)] = {64,0}, + [I(237,60)] = {64,0}, + [I(238,60)] = {64,0}, + [I(239,60)] = {64,0}, + [I(240,60)] = {64,0}, + [I(241,60)] = {64,0}, + [I(242,60)] = {64,0}, + [I(243,60)] = {64,0}, + [I(244,60)] = {64,0}, + [I(245,60)] = {64,0}, + [I(246,60)] = {64,0}, + [I(247,60)] = {64,0}, + [I(248,60)] = {64,0}, + [I(249,60)] = {64,0}, + [I(250,60)] = {64,0}, + [I(251,60)] = {64,0}, + [I(252,60)] = {64,0}, + [I(253,60)] = {64,0}, + [I(254,60)] = {64,0}, + [I(255,60)] = {64,0}, + [I(0,61)] = {19,0x7FE20}, + [I(1,61)] = {29,0x1FFFF620}, + [I(2,61)] = {64,0}, + [I(3,61)] = {64,0}, + [I(4,61)] = {64,0}, + [I(5,61)] = {64,0}, + [I(6,61)] = {64,0}, + [I(7,61)] = {64,0}, + [I(8,61)] = {64,0}, + [I(9,61)] = {30,0x3FFFFAA0}, + [I(10,61)] = {64,0}, + [I(11,61)] = {64,0}, + [I(12,61)] = {64,0}, + [I(13,61)] = {64,0}, + [I(14,61)] = {64,0}, + [I(15,61)] = {64,0}, + [I(16,61)] = {64,0}, + [I(17,61)] = {64,0}, + [I(18,61)] = {64,0}, + [I(19,61)] = {64,0}, + [I(20,61)] = {64,0}, + [I(21,61)] = {64,0}, + [I(22,61)] = {64,0}, + [I(23,61)] = {64,0}, + [I(24,61)] = {64,0}, + [I(25,61)] = {64,0}, + [I(26,61)] = {64,0}, + [I(27,61)] = {64,0}, + [I(28,61)] = {64,0}, + [I(29,61)] = {64,0}, + [I(30,61)] = {64,0}, + [I(31,61)] = {64,0}, + [I(32,61)] = {12,0x520}, + [I(33,61)] = {16,0xFE20}, + [I(34,61)] = {16,0xFE60}, + [I(35,61)] = {18,0x3FEA0}, + [I(36,61)] = {19,0x7FE60}, + [I(37,61)] = {12,0x560}, + [I(38,61)] = {14,0x3E20}, + [I(39,61)] = {17,0x1FEA0}, + [I(40,61)] = {16,0xFEA0}, + [I(41,61)] = {16,0xFEE0}, + [I(42,61)] = {14,0x3E60}, + [I(43,61)] = {17,0x1FEE0}, + [I(44,61)] = {14,0x3EA0}, + [I(45,61)] = {12,0x5A0}, + [I(46,61)] = {12,0x5E0}, + [I(47,61)] = {12,0x620}, + [I(48,61)] = {11,0x20}, + [I(49,61)] = {11,0x60}, + [I(50,61)] = {11,0xA0}, + [I(51,61)] = {12,0x660}, + [I(52,61)] = {12,0x6A0}, + [I(53,61)] = {12,0x6E0}, + [I(54,61)] = {12,0x720}, + [I(55,61)] = {12,0x760}, + [I(56,61)] = {12,0x7A0}, + [I(57,61)] = {12,0x7E0}, + [I(58,61)] = {13,0x1720}, + [I(59,61)] = {14,0x3EE0}, + [I(60,61)] = {21,0x1FFF20}, + [I(61,61)] = {12,0x820}, + [I(62,61)] = {18,0x3FEE0}, + [I(63,61)] = {16,0xFF20}, + [I(64,61)] = {19,0x7FEA0}, + [I(65,61)] = {12,0x860}, + [I(66,61)] = {13,0x1760}, + [I(67,61)] = {13,0x17A0}, + [I(68,61)] = {13,0x17E0}, + [I(69,61)] = {13,0x1820}, + [I(70,61)] = {13,0x1860}, + [I(71,61)] = {13,0x18A0}, + [I(72,61)] = {13,0x18E0}, + [I(73,61)] = {13,0x1920}, + [I(74,61)] = {13,0x1960}, + [I(75,61)] = {13,0x19A0}, + [I(76,61)] = {13,0x19E0}, + [I(77,61)] = {13,0x1A20}, + [I(78,61)] = {13,0x1A60}, + [I(79,61)] = {13,0x1AA0}, + [I(80,61)] = {13,0x1AE0}, + [I(81,61)] = {13,0x1B20}, + [I(82,61)] = {13,0x1B60}, + [I(83,61)] = {13,0x1BA0}, + [I(84,61)] = {13,0x1BE0}, + [I(85,61)] = {13,0x1C20}, + [I(86,61)] = {13,0x1C60}, + [I(87,61)] = {13,0x1CA0}, + [I(88,61)] = {14,0x3F20}, + [I(89,61)] = {13,0x1CE0}, + [I(90,61)] = {14,0x3F60}, + [I(91,61)] = {19,0x7FEE0}, + [I(92,61)] = {25,0x1FFFC20}, + [I(93,61)] = {19,0x7FF20}, + [I(94,61)] = {20,0xFFF20}, + [I(95,61)] = {12,0x8A0}, + [I(96,61)] = {21,0x1FFF60}, + [I(97,61)] = {11,0xE0}, + [I(98,61)] = {12,0x8E0}, + [I(99,61)] = {11,0x120}, + [I(100,61)] = {12,0x920}, + [I(101,61)] = {11,0x160}, + [I(102,61)] = {12,0x960}, + [I(103,61)] = {12,0x9A0}, + [I(104,61)] = {12,0x9E0}, + [I(105,61)] = {11,0x1A0}, + [I(106,61)] = {13,0x1D20}, + [I(107,61)] = {13,0x1D60}, + [I(108,61)] = {12,0xA20}, + [I(109,61)] = {12,0xA60}, + [I(110,61)] = {12,0xAA0}, + [I(111,61)] = {11,0x1E0}, + [I(112,61)] = {12,0xAE0}, + [I(113,61)] = {13,0x1DA0}, + [I(114,61)] = {12,0xB20}, + [I(115,61)] = {11,0x220}, + [I(116,61)] = {11,0x260}, + [I(117,61)] = {12,0xB60}, + [I(118,61)] = {13,0x1DE0}, + [I(119,61)] = {13,0x1E20}, + [I(120,61)] = {13,0x1E60}, + [I(121,61)] = {13,0x1EA0}, + [I(122,61)] = {13,0x1EE0}, + [I(123,61)] = {21,0x1FFFA0}, + [I(124,61)] = {17,0x1FF20}, + [I(125,61)] = {20,0xFFF60}, + [I(126,61)] = {19,0x7FF60}, + [I(127,61)] = {64,0}, + [I(128,61)] = {26,0x3FFF9A0}, + [I(129,61)] = {28,0xFFFF4A0}, + [I(130,61)] = {26,0x3FFF9E0}, + [I(131,61)] = {26,0x3FFFA20}, + [I(132,61)] = {28,0xFFFF4E0}, + [I(133,61)] = {28,0xFFFF520}, + [I(134,61)] = {28,0xFFFF560}, + [I(135,61)] = {29,0x1FFFF660}, + [I(136,61)] = {28,0xFFFF5A0}, + [I(137,61)] = {29,0x1FFFF6A0}, + [I(138,61)] = {29,0x1FFFF6E0}, + [I(139,61)] = {29,0x1FFFF720}, + [I(140,61)] = {29,0x1FFFF760}, + [I(141,61)] = {29,0x1FFFF7A0}, + [I(142,61)] = {30,0x3FFFFAE0}, + [I(143,61)] = {29,0x1FFFF7E0}, + [I(144,61)] = {30,0x3FFFFB20}, + [I(145,61)] = {30,0x3FFFFB60}, + [I(146,61)] = {28,0xFFFF5E0}, + [I(147,61)] = {29,0x1FFFF820}, + [I(148,61)] = {30,0x3FFFFBA0}, + [I(149,61)] = {29,0x1FFFF860}, + [I(150,61)] = {29,0x1FFFF8A0}, + [I(151,61)] = {29,0x1FFFF8E0}, + [I(152,61)] = {29,0x1FFFF920}, + [I(153,61)] = {27,0x7FFF720}, + [I(154,61)] = {28,0xFFFF620}, + [I(155,61)] = {29,0x1FFFF960}, + [I(156,61)] = {28,0xFFFF660}, + [I(157,61)] = {29,0x1FFFF9A0}, + [I(158,61)] = {29,0x1FFFF9E0}, + [I(159,61)] = {30,0x3FFFFBE0}, + [I(160,61)] = {28,0xFFFF6A0}, + [I(161,61)] = {27,0x7FFF760}, + [I(162,61)] = {26,0x3FFFA60}, + [I(163,61)] = {28,0xFFFF6E0}, + [I(164,61)] = {28,0xFFFF720}, + [I(165,61)] = {29,0x1FFFFA20}, + [I(166,61)] = {29,0x1FFFFA60}, + [I(167,61)] = {27,0x7FFF7A0}, + [I(168,61)] = {29,0x1FFFFAA0}, + [I(169,61)] = {28,0xFFFF760}, + [I(170,61)] = {28,0xFFFF7A0}, + [I(171,61)] = {30,0x3FFFFC20}, + [I(172,61)] = {27,0x7FFF7E0}, + [I(173,61)] = {28,0xFFFF7E0}, + [I(174,61)] = {29,0x1FFFFAE0}, + [I(175,61)] = {29,0x1FFFFB20}, + [I(176,61)] = {27,0x7FFF820}, + [I(177,61)] = {27,0x7FFF860}, + [I(178,61)] = {28,0xFFFF820}, + [I(179,61)] = {27,0x7FFF8A0}, + [I(180,61)] = {29,0x1FFFFB60}, + [I(181,61)] = {28,0xFFFF860}, + [I(182,61)] = {29,0x1FFFFBA0}, + [I(183,61)] = {29,0x1FFFFBE0}, + [I(184,61)] = {26,0x3FFFAA0}, + [I(185,61)] = {28,0xFFFF8A0}, + [I(186,61)] = {28,0xFFFF8E0}, + [I(187,61)] = {28,0xFFFF920}, + [I(188,61)] = {29,0x1FFFFC20}, + [I(189,61)] = {28,0xFFFF960}, + [I(190,61)] = {28,0xFFFF9A0}, + [I(191,61)] = {29,0x1FFFFC60}, + [I(192,61)] = {X32,0xFFFFF820}, + [I(193,61)] = {X32,0xFFFFF860}, + [I(194,61)] = {26,0x3FFFAE0}, + [I(195,61)] = {25,0x1FFFC60}, + [I(196,61)] = {28,0xFFFF9E0}, + [I(197,61)] = {29,0x1FFFFCA0}, + [I(198,61)] = {28,0xFFFFA20}, + [I(199,61)] = {31,0x7FFFFB20}, + [I(200,61)] = {X32,0xFFFFF8A0}, + [I(201,61)] = {X32,0xFFFFF8E0}, + [I(202,61)] = {X32,0xFFFFF920}, + [I(203,61)] = {64,0}, + [I(204,61)] = {64,0}, + [I(205,61)] = {X32,0xFFFFF960}, + [I(206,61)] = {30,0x3FFFFC60}, + [I(207,61)] = {31,0x7FFFFB60}, + [I(208,61)] = {25,0x1FFFCA0}, + [I(209,61)] = {27,0x7FFF8E0}, + [I(210,61)] = {X32,0xFFFFF9A0}, + [I(211,61)] = {64,0}, + [I(212,61)] = {64,0}, + [I(213,61)] = {X32,0xFFFFF9E0}, + [I(214,61)] = {64,0}, + [I(215,61)] = {30,0x3FFFFCA0}, + [I(216,61)] = {27,0x7FFF920}, + [I(217,61)] = {27,0x7FFF960}, + [I(218,61)] = {X32,0xFFFFFA20}, + [I(219,61)] = {X32,0xFFFFFA60}, + [I(220,61)] = {64,0}, + [I(221,61)] = {64,0}, + [I(222,61)] = {64,0}, + [I(223,61)] = {64,0}, + [I(224,61)] = {26,0x3FFFB20}, + [I(225,61)] = {30,0x3FFFFCE0}, + [I(226,61)] = {26,0x3FFFB60}, + [I(227,61)] = {27,0x7FFF9A0}, + [I(228,61)] = {28,0xFFFFA60}, + [I(229,61)] = {27,0x7FFF9E0}, + [I(230,61)] = {27,0x7FFFA20}, + [I(231,61)] = {29,0x1FFFFCE0}, + [I(232,61)] = {28,0xFFFFAA0}, + [I(233,61)] = {28,0xFFFFAE0}, + [I(234,61)] = {31,0x7FFFFBA0}, + [I(235,61)] = {31,0x7FFFFBE0}, + [I(236,61)] = {30,0x3FFFFD20}, + [I(237,61)] = {30,0x3FFFFD60}, + [I(238,61)] = {X32,0xFFFFFAA0}, + [I(239,61)] = {29,0x1FFFFD20}, + [I(240,61)] = {X32,0xFFFFFAE0}, + [I(241,61)] = {64,0}, + [I(242,61)] = {X32,0xFFFFFB20}, + [I(243,61)] = {X32,0xFFFFFB60}, + [I(244,61)] = {64,0}, + [I(245,61)] = {64,0}, + [I(246,61)] = {64,0}, + [I(247,61)] = {64,0}, + [I(248,61)] = {64,0}, + [I(249,61)] = {64,0}, + [I(250,61)] = {64,0}, + [I(251,61)] = {64,0}, + [I(252,61)] = {64,0}, + [I(253,61)] = {64,0}, + [I(254,61)] = {64,0}, + [I(255,61)] = {X32,0xFFFFFBA0}, + [I(0,62)] = {25,0x1FF8FFB}, + [I(1,62)] = {64,0}, + [I(2,62)] = {64,0}, + [I(3,62)] = {64,0}, + [I(4,62)] = {64,0}, + [I(5,62)] = {64,0}, + [I(6,62)] = {64,0}, + [I(7,62)] = {64,0}, + [I(8,62)] = {64,0}, + [I(9,62)] = {64,0}, + [I(10,62)] = {64,0}, + [I(11,62)] = {64,0}, + [I(12,62)] = {64,0}, + [I(13,62)] = {64,0}, + [I(14,62)] = {64,0}, + [I(15,62)] = {64,0}, + [I(16,62)] = {64,0}, + [I(17,62)] = {64,0}, + [I(18,62)] = {64,0}, + [I(19,62)] = {64,0}, + [I(20,62)] = {64,0}, + [I(21,62)] = {64,0}, + [I(22,62)] = {64,0}, + [I(23,62)] = {64,0}, + [I(24,62)] = {64,0}, + [I(25,62)] = {64,0}, + [I(26,62)] = {64,0}, + [I(27,62)] = {64,0}, + [I(28,62)] = {64,0}, + [I(29,62)] = {64,0}, + [I(30,62)] = {64,0}, + [I(31,62)] = {64,0}, + [I(32,62)] = {18,0x14FFB}, + [I(33,62)] = {22,0x3F8FFB}, + [I(34,62)] = {22,0x3F9FFB}, + [I(35,62)] = {24,0xFFAFFB}, + [I(36,62)] = {25,0x1FF9FFB}, + [I(37,62)] = {18,0x15FFB}, + [I(38,62)] = {20,0xF8FFB}, + [I(39,62)] = {23,0x7FAFFB}, + [I(40,62)] = {22,0x3FAFFB}, + [I(41,62)] = {22,0x3FBFFB}, + [I(42,62)] = {20,0xF9FFB}, + [I(43,62)] = {23,0x7FBFFB}, + [I(44,62)] = {20,0xFAFFB}, + [I(45,62)] = {18,0x16FFB}, + [I(46,62)] = {18,0x17FFB}, + [I(47,62)] = {18,0x18FFB}, + [I(48,62)] = {17,0xFFB}, + [I(49,62)] = {17,0x1FFB}, + [I(50,62)] = {17,0x2FFB}, + [I(51,62)] = {18,0x19FFB}, + [I(52,62)] = {18,0x1AFFB}, + [I(53,62)] = {18,0x1BFFB}, + [I(54,62)] = {18,0x1CFFB}, + [I(55,62)] = {18,0x1DFFB}, + [I(56,62)] = {18,0x1EFFB}, + [I(57,62)] = {18,0x1FFFB}, + [I(58,62)] = {19,0x5CFFB}, + [I(59,62)] = {20,0xFBFFB}, + [I(60,62)] = {27,0x7FFCFFB}, + [I(61,62)] = {18,0x20FFB}, + [I(62,62)] = {24,0xFFBFFB}, + [I(63,62)] = {22,0x3FCFFB}, + [I(64,62)] = {25,0x1FFAFFB}, + [I(65,62)] = {18,0x21FFB}, + [I(66,62)] = {19,0x5DFFB}, + [I(67,62)] = {19,0x5EFFB}, + [I(68,62)] = {19,0x5FFFB}, + [I(69,62)] = {19,0x60FFB}, + [I(70,62)] = {19,0x61FFB}, + [I(71,62)] = {19,0x62FFB}, + [I(72,62)] = {19,0x63FFB}, + [I(73,62)] = {19,0x64FFB}, + [I(74,62)] = {19,0x65FFB}, + [I(75,62)] = {19,0x66FFB}, + [I(76,62)] = {19,0x67FFB}, + [I(77,62)] = {19,0x68FFB}, + [I(78,62)] = {19,0x69FFB}, + [I(79,62)] = {19,0x6AFFB}, + [I(80,62)] = {19,0x6BFFB}, + [I(81,62)] = {19,0x6CFFB}, + [I(82,62)] = {19,0x6DFFB}, + [I(83,62)] = {19,0x6EFFB}, + [I(84,62)] = {19,0x6FFFB}, + [I(85,62)] = {19,0x70FFB}, + [I(86,62)] = {19,0x71FFB}, + [I(87,62)] = {19,0x72FFB}, + [I(88,62)] = {20,0xFCFFB}, + [I(89,62)] = {19,0x73FFB}, + [I(90,62)] = {20,0xFDFFB}, + [I(91,62)] = {25,0x1FFBFFB}, + [I(92,62)] = {31,0x7FFF0FFB}, + [I(93,62)] = {25,0x1FFCFFB}, + [I(94,62)] = {26,0x3FFCFFB}, + [I(95,62)] = {18,0x22FFB}, + [I(96,62)] = {27,0x7FFDFFB}, + [I(97,62)] = {17,0x3FFB}, + [I(98,62)] = {18,0x23FFB}, + [I(99,62)] = {17,0x4FFB}, + [I(100,62)] = {18,0x24FFB}, + [I(101,62)] = {17,0x5FFB}, + [I(102,62)] = {18,0x25FFB}, + [I(103,62)] = {18,0x26FFB}, + [I(104,62)] = {18,0x27FFB}, + [I(105,62)] = {17,0x6FFB}, + [I(106,62)] = {19,0x74FFB}, + [I(107,62)] = {19,0x75FFB}, + [I(108,62)] = {18,0x28FFB}, + [I(109,62)] = {18,0x29FFB}, + [I(110,62)] = {18,0x2AFFB}, + [I(111,62)] = {17,0x7FFB}, + [I(112,62)] = {18,0x2BFFB}, + [I(113,62)] = {19,0x76FFB}, + [I(114,62)] = {18,0x2CFFB}, + [I(115,62)] = {17,0x8FFB}, + [I(116,62)] = {17,0x9FFB}, + [I(117,62)] = {18,0x2DFFB}, + [I(118,62)] = {19,0x77FFB}, + [I(119,62)] = {19,0x78FFB}, + [I(120,62)] = {19,0x79FFB}, + [I(121,62)] = {19,0x7AFFB}, + [I(122,62)] = {19,0x7BFFB}, + [I(123,62)] = {27,0x7FFEFFB}, + [I(124,62)] = {23,0x7FCFFB}, + [I(125,62)] = {26,0x3FFDFFB}, + [I(126,62)] = {25,0x1FFDFFB}, + [I(127,62)] = {64,0}, + [I(128,62)] = {X32,0xFFFE6FFB}, + [I(129,62)] = {64,0}, + [I(130,62)] = {X32,0xFFFE7FFB}, + [I(131,62)] = {X32,0xFFFE8FFB}, + [I(132,62)] = {64,0}, + [I(133,62)] = {64,0}, + [I(134,62)] = {64,0}, + [I(135,62)] = {64,0}, + [I(136,62)] = {64,0}, + [I(137,62)] = {64,0}, + [I(138,62)] = {64,0}, + [I(139,62)] = {64,0}, + [I(140,62)] = {64,0}, + [I(141,62)] = {64,0}, + [I(142,62)] = {64,0}, + [I(143,62)] = {64,0}, + [I(144,62)] = {64,0}, + [I(145,62)] = {64,0}, + [I(146,62)] = {64,0}, + [I(147,62)] = {64,0}, + [I(148,62)] = {64,0}, + [I(149,62)] = {64,0}, + [I(150,62)] = {64,0}, + [I(151,62)] = {64,0}, + [I(152,62)] = {64,0}, + [I(153,62)] = {64,0}, + [I(154,62)] = {64,0}, + [I(155,62)] = {64,0}, + [I(156,62)] = {64,0}, + [I(157,62)] = {64,0}, + [I(158,62)] = {64,0}, + [I(159,62)] = {64,0}, + [I(160,62)] = {64,0}, + [I(161,62)] = {64,0}, + [I(162,62)] = {X32,0xFFFE9FFB}, + [I(163,62)] = {64,0}, + [I(164,62)] = {64,0}, + [I(165,62)] = {64,0}, + [I(166,62)] = {64,0}, + [I(167,62)] = {64,0}, + [I(168,62)] = {64,0}, + [I(169,62)] = {64,0}, + [I(170,62)] = {64,0}, + [I(171,62)] = {64,0}, + [I(172,62)] = {64,0}, + [I(173,62)] = {64,0}, + [I(174,62)] = {64,0}, + [I(175,62)] = {64,0}, + [I(176,62)] = {64,0}, + [I(177,62)] = {64,0}, + [I(178,62)] = {64,0}, + [I(179,62)] = {64,0}, + [I(180,62)] = {64,0}, + [I(181,62)] = {64,0}, + [I(182,62)] = {64,0}, + [I(183,62)] = {64,0}, + [I(184,62)] = {X32,0xFFFEAFFB}, + [I(185,62)] = {64,0}, + [I(186,62)] = {64,0}, + [I(187,62)] = {64,0}, + [I(188,62)] = {64,0}, + [I(189,62)] = {64,0}, + [I(190,62)] = {64,0}, + [I(191,62)] = {64,0}, + [I(192,62)] = {64,0}, + [I(193,62)] = {64,0}, + [I(194,62)] = {X32,0xFFFEBFFB}, + [I(195,62)] = {31,0x7FFF1FFB}, + [I(196,62)] = {64,0}, + [I(197,62)] = {64,0}, + [I(198,62)] = {64,0}, + [I(199,62)] = {64,0}, + [I(200,62)] = {64,0}, + [I(201,62)] = {64,0}, + [I(202,62)] = {64,0}, + [I(203,62)] = {64,0}, + [I(204,62)] = {64,0}, + [I(205,62)] = {64,0}, + [I(206,62)] = {64,0}, + [I(207,62)] = {64,0}, + [I(208,62)] = {31,0x7FFF2FFB}, + [I(209,62)] = {64,0}, + [I(210,62)] = {64,0}, + [I(211,62)] = {64,0}, + [I(212,62)] = {64,0}, + [I(213,62)] = {64,0}, + [I(214,62)] = {64,0}, + [I(215,62)] = {64,0}, + [I(216,62)] = {64,0}, + [I(217,62)] = {64,0}, + [I(218,62)] = {64,0}, + [I(219,62)] = {64,0}, + [I(220,62)] = {64,0}, + [I(221,62)] = {64,0}, + [I(222,62)] = {64,0}, + [I(223,62)] = {64,0}, + [I(224,62)] = {X32,0xFFFECFFB}, + [I(225,62)] = {64,0}, + [I(226,62)] = {X32,0xFFFEDFFB}, + [I(227,62)] = {64,0}, + [I(228,62)] = {64,0}, + [I(229,62)] = {64,0}, + [I(230,62)] = {64,0}, + [I(231,62)] = {64,0}, + [I(232,62)] = {64,0}, + [I(233,62)] = {64,0}, + [I(234,62)] = {64,0}, + [I(235,62)] = {64,0}, + [I(236,62)] = {64,0}, + [I(237,62)] = {64,0}, + [I(238,62)] = {64,0}, + [I(239,62)] = {64,0}, + [I(240,62)] = {64,0}, + [I(241,62)] = {64,0}, + [I(242,62)] = {64,0}, + [I(243,62)] = {64,0}, + [I(244,62)] = {64,0}, + [I(245,62)] = {64,0}, + [I(246,62)] = {64,0}, + [I(247,62)] = {64,0}, + [I(248,62)] = {64,0}, + [I(249,62)] = {64,0}, + [I(250,62)] = {64,0}, + [I(251,62)] = {64,0}, + [I(252,62)] = {64,0}, + [I(253,62)] = {64,0}, + [I(254,62)] = {64,0}, + [I(255,62)] = {64,0}, + [I(0,63)] = {23,0x7FE3FC}, + [I(1,63)] = {64,0}, + [I(2,63)] = {64,0}, + [I(3,63)] = {64,0}, + [I(4,63)] = {64,0}, + [I(5,63)] = {64,0}, + [I(6,63)] = {64,0}, + [I(7,63)] = {64,0}, + [I(8,63)] = {64,0}, + [I(9,63)] = {64,0}, + [I(10,63)] = {64,0}, + [I(11,63)] = {64,0}, + [I(12,63)] = {64,0}, + [I(13,63)] = {64,0}, + [I(14,63)] = {64,0}, + [I(15,63)] = {64,0}, + [I(16,63)] = {64,0}, + [I(17,63)] = {64,0}, + [I(18,63)] = {64,0}, + [I(19,63)] = {64,0}, + [I(20,63)] = {64,0}, + [I(21,63)] = {64,0}, + [I(22,63)] = {64,0}, + [I(23,63)] = {64,0}, + [I(24,63)] = {64,0}, + [I(25,63)] = {64,0}, + [I(26,63)] = {64,0}, + [I(27,63)] = {64,0}, + [I(28,63)] = {64,0}, + [I(29,63)] = {64,0}, + [I(30,63)] = {64,0}, + [I(31,63)] = {64,0}, + [I(32,63)] = {16,0x53FC}, + [I(33,63)] = {20,0xFE3FC}, + [I(34,63)] = {20,0xFE7FC}, + [I(35,63)] = {22,0x3FEBFC}, + [I(36,63)] = {23,0x7FE7FC}, + [I(37,63)] = {16,0x57FC}, + [I(38,63)] = {18,0x3E3FC}, + [I(39,63)] = {21,0x1FEBFC}, + [I(40,63)] = {20,0xFEBFC}, + [I(41,63)] = {20,0xFEFFC}, + [I(42,63)] = {18,0x3E7FC}, + [I(43,63)] = {21,0x1FEFFC}, + [I(44,63)] = {18,0x3EBFC}, + [I(45,63)] = {16,0x5BFC}, + [I(46,63)] = {16,0x5FFC}, + [I(47,63)] = {16,0x63FC}, + [I(48,63)] = {15,0x3FC}, + [I(49,63)] = {15,0x7FC}, + [I(50,63)] = {15,0xBFC}, + [I(51,63)] = {16,0x67FC}, + [I(52,63)] = {16,0x6BFC}, + [I(53,63)] = {16,0x6FFC}, + [I(54,63)] = {16,0x73FC}, + [I(55,63)] = {16,0x77FC}, + [I(56,63)] = {16,0x7BFC}, + [I(57,63)] = {16,0x7FFC}, + [I(58,63)] = {17,0x173FC}, + [I(59,63)] = {18,0x3EFFC}, + [I(60,63)] = {25,0x1FFF3FC}, + [I(61,63)] = {16,0x83FC}, + [I(62,63)] = {22,0x3FEFFC}, + [I(63,63)] = {20,0xFF3FC}, + [I(64,63)] = {23,0x7FEBFC}, + [I(65,63)] = {16,0x87FC}, + [I(66,63)] = {17,0x177FC}, + [I(67,63)] = {17,0x17BFC}, + [I(68,63)] = {17,0x17FFC}, + [I(69,63)] = {17,0x183FC}, + [I(70,63)] = {17,0x187FC}, + [I(71,63)] = {17,0x18BFC}, + [I(72,63)] = {17,0x18FFC}, + [I(73,63)] = {17,0x193FC}, + [I(74,63)] = {17,0x197FC}, + [I(75,63)] = {17,0x19BFC}, + [I(76,63)] = {17,0x19FFC}, + [I(77,63)] = {17,0x1A3FC}, + [I(78,63)] = {17,0x1A7FC}, + [I(79,63)] = {17,0x1ABFC}, + [I(80,63)] = {17,0x1AFFC}, + [I(81,63)] = {17,0x1B3FC}, + [I(82,63)] = {17,0x1B7FC}, + [I(83,63)] = {17,0x1BBFC}, + [I(84,63)] = {17,0x1BFFC}, + [I(85,63)] = {17,0x1C3FC}, + [I(86,63)] = {17,0x1C7FC}, + [I(87,63)] = {17,0x1CBFC}, + [I(88,63)] = {18,0x3F3FC}, + [I(89,63)] = {17,0x1CFFC}, + [I(90,63)] = {18,0x3F7FC}, + [I(91,63)] = {23,0x7FEFFC}, + [I(92,63)] = {29,0x1FFFC3FC}, + [I(93,63)] = {23,0x7FF3FC}, + [I(94,63)] = {24,0xFFF3FC}, + [I(95,63)] = {16,0x8BFC}, + [I(96,63)] = {25,0x1FFF7FC}, + [I(97,63)] = {15,0xFFC}, + [I(98,63)] = {16,0x8FFC}, + [I(99,63)] = {15,0x13FC}, + [I(100,63)] = {16,0x93FC}, + [I(101,63)] = {15,0x17FC}, + [I(102,63)] = {16,0x97FC}, + [I(103,63)] = {16,0x9BFC}, + [I(104,63)] = {16,0x9FFC}, + [I(105,63)] = {15,0x1BFC}, + [I(106,63)] = {17,0x1D3FC}, + [I(107,63)] = {17,0x1D7FC}, + [I(108,63)] = {16,0xA3FC}, + [I(109,63)] = {16,0xA7FC}, + [I(110,63)] = {16,0xABFC}, + [I(111,63)] = {15,0x1FFC}, + [I(112,63)] = {16,0xAFFC}, + [I(113,63)] = {17,0x1DBFC}, + [I(114,63)] = {16,0xB3FC}, + [I(115,63)] = {15,0x23FC}, + [I(116,63)] = {15,0x27FC}, + [I(117,63)] = {16,0xB7FC}, + [I(118,63)] = {17,0x1DFFC}, + [I(119,63)] = {17,0x1E3FC}, + [I(120,63)] = {17,0x1E7FC}, + [I(121,63)] = {17,0x1EBFC}, + [I(122,63)] = {17,0x1EFFC}, + [I(123,63)] = {25,0x1FFFBFC}, + [I(124,63)] = {21,0x1FF3FC}, + [I(125,63)] = {24,0xFFF7FC}, + [I(126,63)] = {23,0x7FF7FC}, + [I(127,63)] = {64,0}, + [I(128,63)] = {30,0x3FFF9BFC}, + [I(129,63)] = {X32,0xFFFF4BFC}, + [I(130,63)] = {30,0x3FFF9FFC}, + [I(131,63)] = {30,0x3FFFA3FC}, + [I(132,63)] = {X32,0xFFFF4FFC}, + [I(133,63)] = {X32,0xFFFF53FC}, + [I(134,63)] = {X32,0xFFFF57FC}, + [I(135,63)] = {64,0}, + [I(136,63)] = {X32,0xFFFF5BFC}, + [I(137,63)] = {64,0}, + [I(138,63)] = {64,0}, + [I(139,63)] = {64,0}, + [I(140,63)] = {64,0}, + [I(141,63)] = {64,0}, + [I(142,63)] = {64,0}, + [I(143,63)] = {64,0}, + [I(144,63)] = {64,0}, + [I(145,63)] = {64,0}, + [I(146,63)] = {X32,0xFFFF5FFC}, + [I(147,63)] = {64,0}, + [I(148,63)] = {64,0}, + [I(149,63)] = {64,0}, + [I(150,63)] = {64,0}, + [I(151,63)] = {64,0}, + [I(152,63)] = {64,0}, + [I(153,63)] = {31,0x7FFF73FC}, + [I(154,63)] = {X32,0xFFFF63FC}, + [I(155,63)] = {64,0}, + [I(156,63)] = {X32,0xFFFF67FC}, + [I(157,63)] = {64,0}, + [I(158,63)] = {64,0}, + [I(159,63)] = {64,0}, + [I(160,63)] = {X32,0xFFFF6BFC}, + [I(161,63)] = {31,0x7FFF77FC}, + [I(162,63)] = {30,0x3FFFA7FC}, + [I(163,63)] = {X32,0xFFFF6FFC}, + [I(164,63)] = {X32,0xFFFF73FC}, + [I(165,63)] = {64,0}, + [I(166,63)] = {64,0}, + [I(167,63)] = {31,0x7FFF7BFC}, + [I(168,63)] = {64,0}, + [I(169,63)] = {X32,0xFFFF77FC}, + [I(170,63)] = {X32,0xFFFF7BFC}, + [I(171,63)] = {64,0}, + [I(172,63)] = {31,0x7FFF7FFC}, + [I(173,63)] = {X32,0xFFFF7FFC}, + [I(174,63)] = {64,0}, + [I(175,63)] = {64,0}, + [I(176,63)] = {31,0x7FFF83FC}, + [I(177,63)] = {31,0x7FFF87FC}, + [I(178,63)] = {X32,0xFFFF83FC}, + [I(179,63)] = {31,0x7FFF8BFC}, + [I(180,63)] = {64,0}, + [I(181,63)] = {X32,0xFFFF87FC}, + [I(182,63)] = {64,0}, + [I(183,63)] = {64,0}, + [I(184,63)] = {30,0x3FFFABFC}, + [I(185,63)] = {X32,0xFFFF8BFC}, + [I(186,63)] = {X32,0xFFFF8FFC}, + [I(187,63)] = {X32,0xFFFF93FC}, + [I(188,63)] = {64,0}, + [I(189,63)] = {X32,0xFFFF97FC}, + [I(190,63)] = {X32,0xFFFF9BFC}, + [I(191,63)] = {64,0}, + [I(192,63)] = {64,0}, + [I(193,63)] = {64,0}, + [I(194,63)] = {30,0x3FFFAFFC}, + [I(195,63)] = {29,0x1FFFC7FC}, + [I(196,63)] = {X32,0xFFFF9FFC}, + [I(197,63)] = {64,0}, + [I(198,63)] = {X32,0xFFFFA3FC}, + [I(199,63)] = {64,0}, + [I(200,63)] = {64,0}, + [I(201,63)] = {64,0}, + [I(202,63)] = {64,0}, + [I(203,63)] = {64,0}, + [I(204,63)] = {64,0}, + [I(205,63)] = {64,0}, + [I(206,63)] = {64,0}, + [I(207,63)] = {64,0}, + [I(208,63)] = {29,0x1FFFCBFC}, + [I(209,63)] = {31,0x7FFF8FFC}, + [I(210,63)] = {64,0}, + [I(211,63)] = {64,0}, + [I(212,63)] = {64,0}, + [I(213,63)] = {64,0}, + [I(214,63)] = {64,0}, + [I(215,63)] = {64,0}, + [I(216,63)] = {31,0x7FFF93FC}, + [I(217,63)] = {31,0x7FFF97FC}, + [I(218,63)] = {64,0}, + [I(219,63)] = {64,0}, + [I(220,63)] = {64,0}, + [I(221,63)] = {64,0}, + [I(222,63)] = {64,0}, + [I(223,63)] = {64,0}, + [I(224,63)] = {30,0x3FFFB3FC}, + [I(225,63)] = {64,0}, + [I(226,63)] = {30,0x3FFFB7FC}, + [I(227,63)] = {31,0x7FFF9BFC}, + [I(228,63)] = {X32,0xFFFFA7FC}, + [I(229,63)] = {31,0x7FFF9FFC}, + [I(230,63)] = {31,0x7FFFA3FC}, + [I(231,63)] = {64,0}, + [I(232,63)] = {X32,0xFFFFABFC}, + [I(233,63)] = {X32,0xFFFFAFFC}, + [I(234,63)] = {64,0}, + [I(235,63)] = {64,0}, + [I(236,63)] = {64,0}, + [I(237,63)] = {64,0}, + [I(238,63)] = {64,0}, + [I(239,63)] = {64,0}, + [I(240,63)] = {64,0}, + [I(241,63)] = {64,0}, + [I(242,63)] = {64,0}, + [I(243,63)] = {64,0}, + [I(244,63)] = {64,0}, + [I(245,63)] = {64,0}, + [I(246,63)] = {64,0}, + [I(247,63)] = {64,0}, + [I(248,63)] = {64,0}, + [I(249,63)] = {64,0}, + [I(250,63)] = {64,0}, + [I(251,63)] = {64,0}, + [I(252,63)] = {64,0}, + [I(253,63)] = {64,0}, + [I(254,63)] = {64,0}, + [I(255,63)] = {64,0}, + [I(0,64)] = {26,0x3FF1FFA}, + [I(1,64)] = {64,0}, + [I(2,64)] = {64,0}, + [I(3,64)] = {64,0}, + [I(4,64)] = {64,0}, + [I(5,64)] = {64,0}, + [I(6,64)] = {64,0}, + [I(7,64)] = {64,0}, + [I(8,64)] = {64,0}, + [I(9,64)] = {64,0}, + [I(10,64)] = {64,0}, + [I(11,64)] = {64,0}, + [I(12,64)] = {64,0}, + [I(13,64)] = {64,0}, + [I(14,64)] = {64,0}, + [I(15,64)] = {64,0}, + [I(16,64)] = {64,0}, + [I(17,64)] = {64,0}, + [I(18,64)] = {64,0}, + [I(19,64)] = {64,0}, + [I(20,64)] = {64,0}, + [I(21,64)] = {64,0}, + [I(22,64)] = {64,0}, + [I(23,64)] = {64,0}, + [I(24,64)] = {64,0}, + [I(25,64)] = {64,0}, + [I(26,64)] = {64,0}, + [I(27,64)] = {64,0}, + [I(28,64)] = {64,0}, + [I(29,64)] = {64,0}, + [I(30,64)] = {64,0}, + [I(31,64)] = {64,0}, + [I(32,64)] = {19,0x29FFA}, + [I(33,64)] = {23,0x7F1FFA}, + [I(34,64)] = {23,0x7F3FFA}, + [I(35,64)] = {25,0x1FF5FFA}, + [I(36,64)] = {26,0x3FF3FFA}, + [I(37,64)] = {19,0x2BFFA}, + [I(38,64)] = {21,0x1F1FFA}, + [I(39,64)] = {24,0xFF5FFA}, + [I(40,64)] = {23,0x7F5FFA}, + [I(41,64)] = {23,0x7F7FFA}, + [I(42,64)] = {21,0x1F3FFA}, + [I(43,64)] = {24,0xFF7FFA}, + [I(44,64)] = {21,0x1F5FFA}, + [I(45,64)] = {19,0x2DFFA}, + [I(46,64)] = {19,0x2FFFA}, + [I(47,64)] = {19,0x31FFA}, + [I(48,64)] = {18,0x1FFA}, + [I(49,64)] = {18,0x3FFA}, + [I(50,64)] = {18,0x5FFA}, + [I(51,64)] = {19,0x33FFA}, + [I(52,64)] = {19,0x35FFA}, + [I(53,64)] = {19,0x37FFA}, + [I(54,64)] = {19,0x39FFA}, + [I(55,64)] = {19,0x3BFFA}, + [I(56,64)] = {19,0x3DFFA}, + [I(57,64)] = {19,0x3FFFA}, + [I(58,64)] = {20,0xB9FFA}, + [I(59,64)] = {21,0x1F7FFA}, + [I(60,64)] = {28,0xFFF9FFA}, + [I(61,64)] = {19,0x41FFA}, + [I(62,64)] = {25,0x1FF7FFA}, + [I(63,64)] = {23,0x7F9FFA}, + [I(64,64)] = {26,0x3FF5FFA}, + [I(65,64)] = {19,0x43FFA}, + [I(66,64)] = {20,0xBBFFA}, + [I(67,64)] = {20,0xBDFFA}, + [I(68,64)] = {20,0xBFFFA}, + [I(69,64)] = {20,0xC1FFA}, + [I(70,64)] = {20,0xC3FFA}, + [I(71,64)] = {20,0xC5FFA}, + [I(72,64)] = {20,0xC7FFA}, + [I(73,64)] = {20,0xC9FFA}, + [I(74,64)] = {20,0xCBFFA}, + [I(75,64)] = {20,0xCDFFA}, + [I(76,64)] = {20,0xCFFFA}, + [I(77,64)] = {20,0xD1FFA}, + [I(78,64)] = {20,0xD3FFA}, + [I(79,64)] = {20,0xD5FFA}, + [I(80,64)] = {20,0xD7FFA}, + [I(81,64)] = {20,0xD9FFA}, + [I(82,64)] = {20,0xDBFFA}, + [I(83,64)] = {20,0xDDFFA}, + [I(84,64)] = {20,0xDFFFA}, + [I(85,64)] = {20,0xE1FFA}, + [I(86,64)] = {20,0xE3FFA}, + [I(87,64)] = {20,0xE5FFA}, + [I(88,64)] = {21,0x1F9FFA}, + [I(89,64)] = {20,0xE7FFA}, + [I(90,64)] = {21,0x1FBFFA}, + [I(91,64)] = {26,0x3FF7FFA}, + [I(92,64)] = {X32,0xFFFE1FFA}, + [I(93,64)] = {26,0x3FF9FFA}, + [I(94,64)] = {27,0x7FF9FFA}, + [I(95,64)] = {19,0x45FFA}, + [I(96,64)] = {28,0xFFFBFFA}, + [I(97,64)] = {18,0x7FFA}, + [I(98,64)] = {19,0x47FFA}, + [I(99,64)] = {18,0x9FFA}, + [I(100,64)] = {19,0x49FFA}, + [I(101,64)] = {18,0xBFFA}, + [I(102,64)] = {19,0x4BFFA}, + [I(103,64)] = {19,0x4DFFA}, + [I(104,64)] = {19,0x4FFFA}, + [I(105,64)] = {18,0xDFFA}, + [I(106,64)] = {20,0xE9FFA}, + [I(107,64)] = {20,0xEBFFA}, + [I(108,64)] = {19,0x51FFA}, + [I(109,64)] = {19,0x53FFA}, + [I(110,64)] = {19,0x55FFA}, + [I(111,64)] = {18,0xFFFA}, + [I(112,64)] = {19,0x57FFA}, + [I(113,64)] = {20,0xEDFFA}, + [I(114,64)] = {19,0x59FFA}, + [I(115,64)] = {18,0x11FFA}, + [I(116,64)] = {18,0x13FFA}, + [I(117,64)] = {19,0x5BFFA}, + [I(118,64)] = {20,0xEFFFA}, + [I(119,64)] = {20,0xF1FFA}, + [I(120,64)] = {20,0xF3FFA}, + [I(121,64)] = {20,0xF5FFA}, + [I(122,64)] = {20,0xF7FFA}, + [I(123,64)] = {28,0xFFFDFFA}, + [I(124,64)] = {24,0xFF9FFA}, + [I(125,64)] = {27,0x7FFBFFA}, + [I(126,64)] = {26,0x3FFBFFA}, + [I(127,64)] = {64,0}, + [I(128,64)] = {64,0}, + [I(129,64)] = {64,0}, + [I(130,64)] = {64,0}, + [I(131,64)] = {64,0}, + [I(132,64)] = {64,0}, + [I(133,64)] = {64,0}, + [I(134,64)] = {64,0}, + [I(135,64)] = {64,0}, + [I(136,64)] = {64,0}, + [I(137,64)] = {64,0}, + [I(138,64)] = {64,0}, + [I(139,64)] = {64,0}, + [I(140,64)] = {64,0}, + [I(141,64)] = {64,0}, + [I(142,64)] = {64,0}, + [I(143,64)] = {64,0}, + [I(144,64)] = {64,0}, + [I(145,64)] = {64,0}, + [I(146,64)] = {64,0}, + [I(147,64)] = {64,0}, + [I(148,64)] = {64,0}, + [I(149,64)] = {64,0}, + [I(150,64)] = {64,0}, + [I(151,64)] = {64,0}, + [I(152,64)] = {64,0}, + [I(153,64)] = {64,0}, + [I(154,64)] = {64,0}, + [I(155,64)] = {64,0}, + [I(156,64)] = {64,0}, + [I(157,64)] = {64,0}, + [I(158,64)] = {64,0}, + [I(159,64)] = {64,0}, + [I(160,64)] = {64,0}, + [I(161,64)] = {64,0}, + [I(162,64)] = {64,0}, + [I(163,64)] = {64,0}, + [I(164,64)] = {64,0}, + [I(165,64)] = {64,0}, + [I(166,64)] = {64,0}, + [I(167,64)] = {64,0}, + [I(168,64)] = {64,0}, + [I(169,64)] = {64,0}, + [I(170,64)] = {64,0}, + [I(171,64)] = {64,0}, + [I(172,64)] = {64,0}, + [I(173,64)] = {64,0}, + [I(174,64)] = {64,0}, + [I(175,64)] = {64,0}, + [I(176,64)] = {64,0}, + [I(177,64)] = {64,0}, + [I(178,64)] = {64,0}, + [I(179,64)] = {64,0}, + [I(180,64)] = {64,0}, + [I(181,64)] = {64,0}, + [I(182,64)] = {64,0}, + [I(183,64)] = {64,0}, + [I(184,64)] = {64,0}, + [I(185,64)] = {64,0}, + [I(186,64)] = {64,0}, + [I(187,64)] = {64,0}, + [I(188,64)] = {64,0}, + [I(189,64)] = {64,0}, + [I(190,64)] = {64,0}, + [I(191,64)] = {64,0}, + [I(192,64)] = {64,0}, + [I(193,64)] = {64,0}, + [I(194,64)] = {64,0}, + [I(195,64)] = {X32,0xFFFE3FFA}, + [I(196,64)] = {64,0}, + [I(197,64)] = {64,0}, + [I(198,64)] = {64,0}, + [I(199,64)] = {64,0}, + [I(200,64)] = {64,0}, + [I(201,64)] = {64,0}, + [I(202,64)] = {64,0}, + [I(203,64)] = {64,0}, + [I(204,64)] = {64,0}, + [I(205,64)] = {64,0}, + [I(206,64)] = {64,0}, + [I(207,64)] = {64,0}, + [I(208,64)] = {X32,0xFFFE5FFA}, + [I(209,64)] = {64,0}, + [I(210,64)] = {64,0}, + [I(211,64)] = {64,0}, + [I(212,64)] = {64,0}, + [I(213,64)] = {64,0}, + [I(214,64)] = {64,0}, + [I(215,64)] = {64,0}, + [I(216,64)] = {64,0}, + [I(217,64)] = {64,0}, + [I(218,64)] = {64,0}, + [I(219,64)] = {64,0}, + [I(220,64)] = {64,0}, + [I(221,64)] = {64,0}, + [I(222,64)] = {64,0}, + [I(223,64)] = {64,0}, + [I(224,64)] = {64,0}, + [I(225,64)] = {64,0}, + [I(226,64)] = {64,0}, + [I(227,64)] = {64,0}, + [I(228,64)] = {64,0}, + [I(229,64)] = {64,0}, + [I(230,64)] = {64,0}, + [I(231,64)] = {64,0}, + [I(232,64)] = {64,0}, + [I(233,64)] = {64,0}, + [I(234,64)] = {64,0}, + [I(235,64)] = {64,0}, + [I(236,64)] = {64,0}, + [I(237,64)] = {64,0}, + [I(238,64)] = {64,0}, + [I(239,64)] = {64,0}, + [I(240,64)] = {64,0}, + [I(241,64)] = {64,0}, + [I(242,64)] = {64,0}, + [I(243,64)] = {64,0}, + [I(244,64)] = {64,0}, + [I(245,64)] = {64,0}, + [I(246,64)] = {64,0}, + [I(247,64)] = {64,0}, + [I(248,64)] = {64,0}, + [I(249,64)] = {64,0}, + [I(250,64)] = {64,0}, + [I(251,64)] = {64,0}, + [I(252,64)] = {64,0}, + [I(253,64)] = {64,0}, + [I(254,64)] = {64,0}, + [I(255,64)] = {64,0}, + [I(0,65)] = {19,0x7FE21}, + [I(1,65)] = {29,0x1FFFF621}, + [I(2,65)] = {64,0}, + [I(3,65)] = {64,0}, + [I(4,65)] = {64,0}, + [I(5,65)] = {64,0}, + [I(6,65)] = {64,0}, + [I(7,65)] = {64,0}, + [I(8,65)] = {64,0}, + [I(9,65)] = {30,0x3FFFFAA1}, + [I(10,65)] = {64,0}, + [I(11,65)] = {64,0}, + [I(12,65)] = {64,0}, + [I(13,65)] = {64,0}, + [I(14,65)] = {64,0}, + [I(15,65)] = {64,0}, + [I(16,65)] = {64,0}, + [I(17,65)] = {64,0}, + [I(18,65)] = {64,0}, + [I(19,65)] = {64,0}, + [I(20,65)] = {64,0}, + [I(21,65)] = {64,0}, + [I(22,65)] = {64,0}, + [I(23,65)] = {64,0}, + [I(24,65)] = {64,0}, + [I(25,65)] = {64,0}, + [I(26,65)] = {64,0}, + [I(27,65)] = {64,0}, + [I(28,65)] = {64,0}, + [I(29,65)] = {64,0}, + [I(30,65)] = {64,0}, + [I(31,65)] = {64,0}, + [I(32,65)] = {12,0x521}, + [I(33,65)] = {16,0xFE21}, + [I(34,65)] = {16,0xFE61}, + [I(35,65)] = {18,0x3FEA1}, + [I(36,65)] = {19,0x7FE61}, + [I(37,65)] = {12,0x561}, + [I(38,65)] = {14,0x3E21}, + [I(39,65)] = {17,0x1FEA1}, + [I(40,65)] = {16,0xFEA1}, + [I(41,65)] = {16,0xFEE1}, + [I(42,65)] = {14,0x3E61}, + [I(43,65)] = {17,0x1FEE1}, + [I(44,65)] = {14,0x3EA1}, + [I(45,65)] = {12,0x5A1}, + [I(46,65)] = {12,0x5E1}, + [I(47,65)] = {12,0x621}, + [I(48,65)] = {11,0x21}, + [I(49,65)] = {11,0x61}, + [I(50,65)] = {11,0xA1}, + [I(51,65)] = {12,0x661}, + [I(52,65)] = {12,0x6A1}, + [I(53,65)] = {12,0x6E1}, + [I(54,65)] = {12,0x721}, + [I(55,65)] = {12,0x761}, + [I(56,65)] = {12,0x7A1}, + [I(57,65)] = {12,0x7E1}, + [I(58,65)] = {13,0x1721}, + [I(59,65)] = {14,0x3EE1}, + [I(60,65)] = {21,0x1FFF21}, + [I(61,65)] = {12,0x821}, + [I(62,65)] = {18,0x3FEE1}, + [I(63,65)] = {16,0xFF21}, + [I(64,65)] = {19,0x7FEA1}, + [I(65,65)] = {12,0x861}, + [I(66,65)] = {13,0x1761}, + [I(67,65)] = {13,0x17A1}, + [I(68,65)] = {13,0x17E1}, + [I(69,65)] = {13,0x1821}, + [I(70,65)] = {13,0x1861}, + [I(71,65)] = {13,0x18A1}, + [I(72,65)] = {13,0x18E1}, + [I(73,65)] = {13,0x1921}, + [I(74,65)] = {13,0x1961}, + [I(75,65)] = {13,0x19A1}, + [I(76,65)] = {13,0x19E1}, + [I(77,65)] = {13,0x1A21}, + [I(78,65)] = {13,0x1A61}, + [I(79,65)] = {13,0x1AA1}, + [I(80,65)] = {13,0x1AE1}, + [I(81,65)] = {13,0x1B21}, + [I(82,65)] = {13,0x1B61}, + [I(83,65)] = {13,0x1BA1}, + [I(84,65)] = {13,0x1BE1}, + [I(85,65)] = {13,0x1C21}, + [I(86,65)] = {13,0x1C61}, + [I(87,65)] = {13,0x1CA1}, + [I(88,65)] = {14,0x3F21}, + [I(89,65)] = {13,0x1CE1}, + [I(90,65)] = {14,0x3F61}, + [I(91,65)] = {19,0x7FEE1}, + [I(92,65)] = {25,0x1FFFC21}, + [I(93,65)] = {19,0x7FF21}, + [I(94,65)] = {20,0xFFF21}, + [I(95,65)] = {12,0x8A1}, + [I(96,65)] = {21,0x1FFF61}, + [I(97,65)] = {11,0xE1}, + [I(98,65)] = {12,0x8E1}, + [I(99,65)] = {11,0x121}, + [I(100,65)] = {12,0x921}, + [I(101,65)] = {11,0x161}, + [I(102,65)] = {12,0x961}, + [I(103,65)] = {12,0x9A1}, + [I(104,65)] = {12,0x9E1}, + [I(105,65)] = {11,0x1A1}, + [I(106,65)] = {13,0x1D21}, + [I(107,65)] = {13,0x1D61}, + [I(108,65)] = {12,0xA21}, + [I(109,65)] = {12,0xA61}, + [I(110,65)] = {12,0xAA1}, + [I(111,65)] = {11,0x1E1}, + [I(112,65)] = {12,0xAE1}, + [I(113,65)] = {13,0x1DA1}, + [I(114,65)] = {12,0xB21}, + [I(115,65)] = {11,0x221}, + [I(116,65)] = {11,0x261}, + [I(117,65)] = {12,0xB61}, + [I(118,65)] = {13,0x1DE1}, + [I(119,65)] = {13,0x1E21}, + [I(120,65)] = {13,0x1E61}, + [I(121,65)] = {13,0x1EA1}, + [I(122,65)] = {13,0x1EE1}, + [I(123,65)] = {21,0x1FFFA1}, + [I(124,65)] = {17,0x1FF21}, + [I(125,65)] = {20,0xFFF61}, + [I(126,65)] = {19,0x7FF61}, + [I(127,65)] = {64,0}, + [I(128,65)] = {26,0x3FFF9A1}, + [I(129,65)] = {28,0xFFFF4A1}, + [I(130,65)] = {26,0x3FFF9E1}, + [I(131,65)] = {26,0x3FFFA21}, + [I(132,65)] = {28,0xFFFF4E1}, + [I(133,65)] = {28,0xFFFF521}, + [I(134,65)] = {28,0xFFFF561}, + [I(135,65)] = {29,0x1FFFF661}, + [I(136,65)] = {28,0xFFFF5A1}, + [I(137,65)] = {29,0x1FFFF6A1}, + [I(138,65)] = {29,0x1FFFF6E1}, + [I(139,65)] = {29,0x1FFFF721}, + [I(140,65)] = {29,0x1FFFF761}, + [I(141,65)] = {29,0x1FFFF7A1}, + [I(142,65)] = {30,0x3FFFFAE1}, + [I(143,65)] = {29,0x1FFFF7E1}, + [I(144,65)] = {30,0x3FFFFB21}, + [I(145,65)] = {30,0x3FFFFB61}, + [I(146,65)] = {28,0xFFFF5E1}, + [I(147,65)] = {29,0x1FFFF821}, + [I(148,65)] = {30,0x3FFFFBA1}, + [I(149,65)] = {29,0x1FFFF861}, + [I(150,65)] = {29,0x1FFFF8A1}, + [I(151,65)] = {29,0x1FFFF8E1}, + [I(152,65)] = {29,0x1FFFF921}, + [I(153,65)] = {27,0x7FFF721}, + [I(154,65)] = {28,0xFFFF621}, + [I(155,65)] = {29,0x1FFFF961}, + [I(156,65)] = {28,0xFFFF661}, + [I(157,65)] = {29,0x1FFFF9A1}, + [I(158,65)] = {29,0x1FFFF9E1}, + [I(159,65)] = {30,0x3FFFFBE1}, + [I(160,65)] = {28,0xFFFF6A1}, + [I(161,65)] = {27,0x7FFF761}, + [I(162,65)] = {26,0x3FFFA61}, + [I(163,65)] = {28,0xFFFF6E1}, + [I(164,65)] = {28,0xFFFF721}, + [I(165,65)] = {29,0x1FFFFA21}, + [I(166,65)] = {29,0x1FFFFA61}, + [I(167,65)] = {27,0x7FFF7A1}, + [I(168,65)] = {29,0x1FFFFAA1}, + [I(169,65)] = {28,0xFFFF761}, + [I(170,65)] = {28,0xFFFF7A1}, + [I(171,65)] = {30,0x3FFFFC21}, + [I(172,65)] = {27,0x7FFF7E1}, + [I(173,65)] = {28,0xFFFF7E1}, + [I(174,65)] = {29,0x1FFFFAE1}, + [I(175,65)] = {29,0x1FFFFB21}, + [I(176,65)] = {27,0x7FFF821}, + [I(177,65)] = {27,0x7FFF861}, + [I(178,65)] = {28,0xFFFF821}, + [I(179,65)] = {27,0x7FFF8A1}, + [I(180,65)] = {29,0x1FFFFB61}, + [I(181,65)] = {28,0xFFFF861}, + [I(182,65)] = {29,0x1FFFFBA1}, + [I(183,65)] = {29,0x1FFFFBE1}, + [I(184,65)] = {26,0x3FFFAA1}, + [I(185,65)] = {28,0xFFFF8A1}, + [I(186,65)] = {28,0xFFFF8E1}, + [I(187,65)] = {28,0xFFFF921}, + [I(188,65)] = {29,0x1FFFFC21}, + [I(189,65)] = {28,0xFFFF961}, + [I(190,65)] = {28,0xFFFF9A1}, + [I(191,65)] = {29,0x1FFFFC61}, + [I(192,65)] = {X32,0xFFFFF821}, + [I(193,65)] = {X32,0xFFFFF861}, + [I(194,65)] = {26,0x3FFFAE1}, + [I(195,65)] = {25,0x1FFFC61}, + [I(196,65)] = {28,0xFFFF9E1}, + [I(197,65)] = {29,0x1FFFFCA1}, + [I(198,65)] = {28,0xFFFFA21}, + [I(199,65)] = {31,0x7FFFFB21}, + [I(200,65)] = {X32,0xFFFFF8A1}, + [I(201,65)] = {X32,0xFFFFF8E1}, + [I(202,65)] = {X32,0xFFFFF921}, + [I(203,65)] = {64,0}, + [I(204,65)] = {64,0}, + [I(205,65)] = {X32,0xFFFFF961}, + [I(206,65)] = {30,0x3FFFFC61}, + [I(207,65)] = {31,0x7FFFFB61}, + [I(208,65)] = {25,0x1FFFCA1}, + [I(209,65)] = {27,0x7FFF8E1}, + [I(210,65)] = {X32,0xFFFFF9A1}, + [I(211,65)] = {64,0}, + [I(212,65)] = {64,0}, + [I(213,65)] = {X32,0xFFFFF9E1}, + [I(214,65)] = {64,0}, + [I(215,65)] = {30,0x3FFFFCA1}, + [I(216,65)] = {27,0x7FFF921}, + [I(217,65)] = {27,0x7FFF961}, + [I(218,65)] = {X32,0xFFFFFA21}, + [I(219,65)] = {X32,0xFFFFFA61}, + [I(220,65)] = {64,0}, + [I(221,65)] = {64,0}, + [I(222,65)] = {64,0}, + [I(223,65)] = {64,0}, + [I(224,65)] = {26,0x3FFFB21}, + [I(225,65)] = {30,0x3FFFFCE1}, + [I(226,65)] = {26,0x3FFFB61}, + [I(227,65)] = {27,0x7FFF9A1}, + [I(228,65)] = {28,0xFFFFA61}, + [I(229,65)] = {27,0x7FFF9E1}, + [I(230,65)] = {27,0x7FFFA21}, + [I(231,65)] = {29,0x1FFFFCE1}, + [I(232,65)] = {28,0xFFFFAA1}, + [I(233,65)] = {28,0xFFFFAE1}, + [I(234,65)] = {31,0x7FFFFBA1}, + [I(235,65)] = {31,0x7FFFFBE1}, + [I(236,65)] = {30,0x3FFFFD21}, + [I(237,65)] = {30,0x3FFFFD61}, + [I(238,65)] = {X32,0xFFFFFAA1}, + [I(239,65)] = {29,0x1FFFFD21}, + [I(240,65)] = {X32,0xFFFFFAE1}, + [I(241,65)] = {64,0}, + [I(242,65)] = {X32,0xFFFFFB21}, + [I(243,65)] = {X32,0xFFFFFB61}, + [I(244,65)] = {64,0}, + [I(245,65)] = {64,0}, + [I(246,65)] = {64,0}, + [I(247,65)] = {64,0}, + [I(248,65)] = {64,0}, + [I(249,65)] = {64,0}, + [I(250,65)] = {64,0}, + [I(251,65)] = {64,0}, + [I(252,65)] = {64,0}, + [I(253,65)] = {64,0}, + [I(254,65)] = {64,0}, + [I(255,65)] = {X32,0xFFFFFBA1}, + [I(0,66)] = {20,0xFFC5D}, + [I(1,66)] = {30,0x3FFFEC5D}, + [I(2,66)] = {64,0}, + [I(3,66)] = {64,0}, + [I(4,66)] = {64,0}, + [I(5,66)] = {64,0}, + [I(6,66)] = {64,0}, + [I(7,66)] = {64,0}, + [I(8,66)] = {64,0}, + [I(9,66)] = {31,0x7FFFF55D}, + [I(10,66)] = {64,0}, + [I(11,66)] = {64,0}, + [I(12,66)] = {64,0}, + [I(13,66)] = {64,0}, + [I(14,66)] = {64,0}, + [I(15,66)] = {64,0}, + [I(16,66)] = {64,0}, + [I(17,66)] = {64,0}, + [I(18,66)] = {64,0}, + [I(19,66)] = {64,0}, + [I(20,66)] = {64,0}, + [I(21,66)] = {64,0}, + [I(22,66)] = {64,0}, + [I(23,66)] = {64,0}, + [I(24,66)] = {64,0}, + [I(25,66)] = {64,0}, + [I(26,66)] = {64,0}, + [I(27,66)] = {64,0}, + [I(28,66)] = {64,0}, + [I(29,66)] = {64,0}, + [I(30,66)] = {64,0}, + [I(31,66)] = {64,0}, + [I(32,66)] = {13,0xA5D}, + [I(33,66)] = {17,0x1FC5D}, + [I(34,66)] = {17,0x1FCDD}, + [I(35,66)] = {19,0x7FD5D}, + [I(36,66)] = {20,0xFFCDD}, + [I(37,66)] = {13,0xADD}, + [I(38,66)] = {15,0x7C5D}, + [I(39,66)] = {18,0x3FD5D}, + [I(40,66)] = {17,0x1FD5D}, + [I(41,66)] = {17,0x1FDDD}, + [I(42,66)] = {15,0x7CDD}, + [I(43,66)] = {18,0x3FDDD}, + [I(44,66)] = {15,0x7D5D}, + [I(45,66)] = {13,0xB5D}, + [I(46,66)] = {13,0xBDD}, + [I(47,66)] = {13,0xC5D}, + [I(48,66)] = {12,0x5D}, + [I(49,66)] = {12,0xDD}, + [I(50,66)] = {12,0x15D}, + [I(51,66)] = {13,0xCDD}, + [I(52,66)] = {13,0xD5D}, + [I(53,66)] = {13,0xDDD}, + [I(54,66)] = {13,0xE5D}, + [I(55,66)] = {13,0xEDD}, + [I(56,66)] = {13,0xF5D}, + [I(57,66)] = {13,0xFDD}, + [I(58,66)] = {14,0x2E5D}, + [I(59,66)] = {15,0x7DDD}, + [I(60,66)] = {22,0x3FFE5D}, + [I(61,66)] = {13,0x105D}, + [I(62,66)] = {19,0x7FDDD}, + [I(63,66)] = {17,0x1FE5D}, + [I(64,66)] = {20,0xFFD5D}, + [I(65,66)] = {13,0x10DD}, + [I(66,66)] = {14,0x2EDD}, + [I(67,66)] = {14,0x2F5D}, + [I(68,66)] = {14,0x2FDD}, + [I(69,66)] = {14,0x305D}, + [I(70,66)] = {14,0x30DD}, + [I(71,66)] = {14,0x315D}, + [I(72,66)] = {14,0x31DD}, + [I(73,66)] = {14,0x325D}, + [I(74,66)] = {14,0x32DD}, + [I(75,66)] = {14,0x335D}, + [I(76,66)] = {14,0x33DD}, + [I(77,66)] = {14,0x345D}, + [I(78,66)] = {14,0x34DD}, + [I(79,66)] = {14,0x355D}, + [I(80,66)] = {14,0x35DD}, + [I(81,66)] = {14,0x365D}, + [I(82,66)] = {14,0x36DD}, + [I(83,66)] = {14,0x375D}, + [I(84,66)] = {14,0x37DD}, + [I(85,66)] = {14,0x385D}, + [I(86,66)] = {14,0x38DD}, + [I(87,66)] = {14,0x395D}, + [I(88,66)] = {15,0x7E5D}, + [I(89,66)] = {14,0x39DD}, + [I(90,66)] = {15,0x7EDD}, + [I(91,66)] = {20,0xFFDDD}, + [I(92,66)] = {26,0x3FFF85D}, + [I(93,66)] = {20,0xFFE5D}, + [I(94,66)] = {21,0x1FFE5D}, + [I(95,66)] = {13,0x115D}, + [I(96,66)] = {22,0x3FFEDD}, + [I(97,66)] = {12,0x1DD}, + [I(98,66)] = {13,0x11DD}, + [I(99,66)] = {12,0x25D}, + [I(100,66)] = {13,0x125D}, + [I(101,66)] = {12,0x2DD}, + [I(102,66)] = {13,0x12DD}, + [I(103,66)] = {13,0x135D}, + [I(104,66)] = {13,0x13DD}, + [I(105,66)] = {12,0x35D}, + [I(106,66)] = {14,0x3A5D}, + [I(107,66)] = {14,0x3ADD}, + [I(108,66)] = {13,0x145D}, + [I(109,66)] = {13,0x14DD}, + [I(110,66)] = {13,0x155D}, + [I(111,66)] = {12,0x3DD}, + [I(112,66)] = {13,0x15DD}, + [I(113,66)] = {14,0x3B5D}, + [I(114,66)] = {13,0x165D}, + [I(115,66)] = {12,0x45D}, + [I(116,66)] = {12,0x4DD}, + [I(117,66)] = {13,0x16DD}, + [I(118,66)] = {14,0x3BDD}, + [I(119,66)] = {14,0x3C5D}, + [I(120,66)] = {14,0x3CDD}, + [I(121,66)] = {14,0x3D5D}, + [I(122,66)] = {14,0x3DDD}, + [I(123,66)] = {22,0x3FFF5D}, + [I(124,66)] = {18,0x3FE5D}, + [I(125,66)] = {21,0x1FFEDD}, + [I(126,66)] = {20,0xFFEDD}, + [I(127,66)] = {64,0}, + [I(128,66)] = {27,0x7FFF35D}, + [I(129,66)] = {29,0x1FFFE95D}, + [I(130,66)] = {27,0x7FFF3DD}, + [I(131,66)] = {27,0x7FFF45D}, + [I(132,66)] = {29,0x1FFFE9DD}, + [I(133,66)] = {29,0x1FFFEA5D}, + [I(134,66)] = {29,0x1FFFEADD}, + [I(135,66)] = {30,0x3FFFECDD}, + [I(136,66)] = {29,0x1FFFEB5D}, + [I(137,66)] = {30,0x3FFFED5D}, + [I(138,66)] = {30,0x3FFFEDDD}, + [I(139,66)] = {30,0x3FFFEE5D}, + [I(140,66)] = {30,0x3FFFEEDD}, + [I(141,66)] = {30,0x3FFFEF5D}, + [I(142,66)] = {31,0x7FFFF5DD}, + [I(143,66)] = {30,0x3FFFEFDD}, + [I(144,66)] = {31,0x7FFFF65D}, + [I(145,66)] = {31,0x7FFFF6DD}, + [I(146,66)] = {29,0x1FFFEBDD}, + [I(147,66)] = {30,0x3FFFF05D}, + [I(148,66)] = {31,0x7FFFF75D}, + [I(149,66)] = {30,0x3FFFF0DD}, + [I(150,66)] = {30,0x3FFFF15D}, + [I(151,66)] = {30,0x3FFFF1DD}, + [I(152,66)] = {30,0x3FFFF25D}, + [I(153,66)] = {28,0xFFFEE5D}, + [I(154,66)] = {29,0x1FFFEC5D}, + [I(155,66)] = {30,0x3FFFF2DD}, + [I(156,66)] = {29,0x1FFFECDD}, + [I(157,66)] = {30,0x3FFFF35D}, + [I(158,66)] = {30,0x3FFFF3DD}, + [I(159,66)] = {31,0x7FFFF7DD}, + [I(160,66)] = {29,0x1FFFED5D}, + [I(161,66)] = {28,0xFFFEEDD}, + [I(162,66)] = {27,0x7FFF4DD}, + [I(163,66)] = {29,0x1FFFEDDD}, + [I(164,66)] = {29,0x1FFFEE5D}, + [I(165,66)] = {30,0x3FFFF45D}, + [I(166,66)] = {30,0x3FFFF4DD}, + [I(167,66)] = {28,0xFFFEF5D}, + [I(168,66)] = {30,0x3FFFF55D}, + [I(169,66)] = {29,0x1FFFEEDD}, + [I(170,66)] = {29,0x1FFFEF5D}, + [I(171,66)] = {31,0x7FFFF85D}, + [I(172,66)] = {28,0xFFFEFDD}, + [I(173,66)] = {29,0x1FFFEFDD}, + [I(174,66)] = {30,0x3FFFF5DD}, + [I(175,66)] = {30,0x3FFFF65D}, + [I(176,66)] = {28,0xFFFF05D}, + [I(177,66)] = {28,0xFFFF0DD}, + [I(178,66)] = {29,0x1FFFF05D}, + [I(179,66)] = {28,0xFFFF15D}, + [I(180,66)] = {30,0x3FFFF6DD}, + [I(181,66)] = {29,0x1FFFF0DD}, + [I(182,66)] = {30,0x3FFFF75D}, + [I(183,66)] = {30,0x3FFFF7DD}, + [I(184,66)] = {27,0x7FFF55D}, + [I(185,66)] = {29,0x1FFFF15D}, + [I(186,66)] = {29,0x1FFFF1DD}, + [I(187,66)] = {29,0x1FFFF25D}, + [I(188,66)] = {30,0x3FFFF85D}, + [I(189,66)] = {29,0x1FFFF2DD}, + [I(190,66)] = {29,0x1FFFF35D}, + [I(191,66)] = {30,0x3FFFF8DD}, + [I(192,66)] = {64,0}, + [I(193,66)] = {64,0}, + [I(194,66)] = {27,0x7FFF5DD}, + [I(195,66)] = {26,0x3FFF8DD}, + [I(196,66)] = {29,0x1FFFF3DD}, + [I(197,66)] = {30,0x3FFFF95D}, + [I(198,66)] = {29,0x1FFFF45D}, + [I(199,66)] = {X32,0xFFFFF65D}, + [I(200,66)] = {64,0}, + [I(201,66)] = {64,0}, + [I(202,66)] = {64,0}, + [I(203,66)] = {64,0}, + [I(204,66)] = {64,0}, + [I(205,66)] = {64,0}, + [I(206,66)] = {31,0x7FFFF8DD}, + [I(207,66)] = {X32,0xFFFFF6DD}, + [I(208,66)] = {26,0x3FFF95D}, + [I(209,66)] = {28,0xFFFF1DD}, + [I(210,66)] = {64,0}, + [I(211,66)] = {64,0}, + [I(212,66)] = {64,0}, + [I(213,66)] = {64,0}, + [I(214,66)] = {64,0}, + [I(215,66)] = {31,0x7FFFF95D}, + [I(216,66)] = {28,0xFFFF25D}, + [I(217,66)] = {28,0xFFFF2DD}, + [I(218,66)] = {64,0}, + [I(219,66)] = {64,0}, + [I(220,66)] = {64,0}, + [I(221,66)] = {64,0}, + [I(222,66)] = {64,0}, + [I(223,66)] = {64,0}, + [I(224,66)] = {27,0x7FFF65D}, + [I(225,66)] = {31,0x7FFFF9DD}, + [I(226,66)] = {27,0x7FFF6DD}, + [I(227,66)] = {28,0xFFFF35D}, + [I(228,66)] = {29,0x1FFFF4DD}, + [I(229,66)] = {28,0xFFFF3DD}, + [I(230,66)] = {28,0xFFFF45D}, + [I(231,66)] = {30,0x3FFFF9DD}, + [I(232,66)] = {29,0x1FFFF55D}, + [I(233,66)] = {29,0x1FFFF5DD}, + [I(234,66)] = {X32,0xFFFFF75D}, + [I(235,66)] = {X32,0xFFFFF7DD}, + [I(236,66)] = {31,0x7FFFFA5D}, + [I(237,66)] = {31,0x7FFFFADD}, + [I(238,66)] = {64,0}, + [I(239,66)] = {30,0x3FFFFA5D}, + [I(240,66)] = {64,0}, + [I(241,66)] = {64,0}, + [I(242,66)] = {64,0}, + [I(243,66)] = {64,0}, + [I(244,66)] = {64,0}, + [I(245,66)] = {64,0}, + [I(246,66)] = {64,0}, + [I(247,66)] = {64,0}, + [I(248,66)] = {64,0}, + [I(249,66)] = {64,0}, + [I(250,66)] = {64,0}, + [I(251,66)] = {64,0}, + [I(252,66)] = {64,0}, + [I(253,66)] = {64,0}, + [I(254,66)] = {64,0}, + [I(255,66)] = {64,0}, + [I(0,67)] = {20,0xFFC5E}, + [I(1,67)] = {30,0x3FFFEC5E}, + [I(2,67)] = {64,0}, + [I(3,67)] = {64,0}, + [I(4,67)] = {64,0}, + [I(5,67)] = {64,0}, + [I(6,67)] = {64,0}, + [I(7,67)] = {64,0}, + [I(8,67)] = {64,0}, + [I(9,67)] = {31,0x7FFFF55E}, + [I(10,67)] = {64,0}, + [I(11,67)] = {64,0}, + [I(12,67)] = {64,0}, + [I(13,67)] = {64,0}, + [I(14,67)] = {64,0}, + [I(15,67)] = {64,0}, + [I(16,67)] = {64,0}, + [I(17,67)] = {64,0}, + [I(18,67)] = {64,0}, + [I(19,67)] = {64,0}, + [I(20,67)] = {64,0}, + [I(21,67)] = {64,0}, + [I(22,67)] = {64,0}, + [I(23,67)] = {64,0}, + [I(24,67)] = {64,0}, + [I(25,67)] = {64,0}, + [I(26,67)] = {64,0}, + [I(27,67)] = {64,0}, + [I(28,67)] = {64,0}, + [I(29,67)] = {64,0}, + [I(30,67)] = {64,0}, + [I(31,67)] = {64,0}, + [I(32,67)] = {13,0xA5E}, + [I(33,67)] = {17,0x1FC5E}, + [I(34,67)] = {17,0x1FCDE}, + [I(35,67)] = {19,0x7FD5E}, + [I(36,67)] = {20,0xFFCDE}, + [I(37,67)] = {13,0xADE}, + [I(38,67)] = {15,0x7C5E}, + [I(39,67)] = {18,0x3FD5E}, + [I(40,67)] = {17,0x1FD5E}, + [I(41,67)] = {17,0x1FDDE}, + [I(42,67)] = {15,0x7CDE}, + [I(43,67)] = {18,0x3FDDE}, + [I(44,67)] = {15,0x7D5E}, + [I(45,67)] = {13,0xB5E}, + [I(46,67)] = {13,0xBDE}, + [I(47,67)] = {13,0xC5E}, + [I(48,67)] = {12,0x5E}, + [I(49,67)] = {12,0xDE}, + [I(50,67)] = {12,0x15E}, + [I(51,67)] = {13,0xCDE}, + [I(52,67)] = {13,0xD5E}, + [I(53,67)] = {13,0xDDE}, + [I(54,67)] = {13,0xE5E}, + [I(55,67)] = {13,0xEDE}, + [I(56,67)] = {13,0xF5E}, + [I(57,67)] = {13,0xFDE}, + [I(58,67)] = {14,0x2E5E}, + [I(59,67)] = {15,0x7DDE}, + [I(60,67)] = {22,0x3FFE5E}, + [I(61,67)] = {13,0x105E}, + [I(62,67)] = {19,0x7FDDE}, + [I(63,67)] = {17,0x1FE5E}, + [I(64,67)] = {20,0xFFD5E}, + [I(65,67)] = {13,0x10DE}, + [I(66,67)] = {14,0x2EDE}, + [I(67,67)] = {14,0x2F5E}, + [I(68,67)] = {14,0x2FDE}, + [I(69,67)] = {14,0x305E}, + [I(70,67)] = {14,0x30DE}, + [I(71,67)] = {14,0x315E}, + [I(72,67)] = {14,0x31DE}, + [I(73,67)] = {14,0x325E}, + [I(74,67)] = {14,0x32DE}, + [I(75,67)] = {14,0x335E}, + [I(76,67)] = {14,0x33DE}, + [I(77,67)] = {14,0x345E}, + [I(78,67)] = {14,0x34DE}, + [I(79,67)] = {14,0x355E}, + [I(80,67)] = {14,0x35DE}, + [I(81,67)] = {14,0x365E}, + [I(82,67)] = {14,0x36DE}, + [I(83,67)] = {14,0x375E}, + [I(84,67)] = {14,0x37DE}, + [I(85,67)] = {14,0x385E}, + [I(86,67)] = {14,0x38DE}, + [I(87,67)] = {14,0x395E}, + [I(88,67)] = {15,0x7E5E}, + [I(89,67)] = {14,0x39DE}, + [I(90,67)] = {15,0x7EDE}, + [I(91,67)] = {20,0xFFDDE}, + [I(92,67)] = {26,0x3FFF85E}, + [I(93,67)] = {20,0xFFE5E}, + [I(94,67)] = {21,0x1FFE5E}, + [I(95,67)] = {13,0x115E}, + [I(96,67)] = {22,0x3FFEDE}, + [I(97,67)] = {12,0x1DE}, + [I(98,67)] = {13,0x11DE}, + [I(99,67)] = {12,0x25E}, + [I(100,67)] = {13,0x125E}, + [I(101,67)] = {12,0x2DE}, + [I(102,67)] = {13,0x12DE}, + [I(103,67)] = {13,0x135E}, + [I(104,67)] = {13,0x13DE}, + [I(105,67)] = {12,0x35E}, + [I(106,67)] = {14,0x3A5E}, + [I(107,67)] = {14,0x3ADE}, + [I(108,67)] = {13,0x145E}, + [I(109,67)] = {13,0x14DE}, + [I(110,67)] = {13,0x155E}, + [I(111,67)] = {12,0x3DE}, + [I(112,67)] = {13,0x15DE}, + [I(113,67)] = {14,0x3B5E}, + [I(114,67)] = {13,0x165E}, + [I(115,67)] = {12,0x45E}, + [I(116,67)] = {12,0x4DE}, + [I(117,67)] = {13,0x16DE}, + [I(118,67)] = {14,0x3BDE}, + [I(119,67)] = {14,0x3C5E}, + [I(120,67)] = {14,0x3CDE}, + [I(121,67)] = {14,0x3D5E}, + [I(122,67)] = {14,0x3DDE}, + [I(123,67)] = {22,0x3FFF5E}, + [I(124,67)] = {18,0x3FE5E}, + [I(125,67)] = {21,0x1FFEDE}, + [I(126,67)] = {20,0xFFEDE}, + [I(127,67)] = {64,0}, + [I(128,67)] = {27,0x7FFF35E}, + [I(129,67)] = {29,0x1FFFE95E}, + [I(130,67)] = {27,0x7FFF3DE}, + [I(131,67)] = {27,0x7FFF45E}, + [I(132,67)] = {29,0x1FFFE9DE}, + [I(133,67)] = {29,0x1FFFEA5E}, + [I(134,67)] = {29,0x1FFFEADE}, + [I(135,67)] = {30,0x3FFFECDE}, + [I(136,67)] = {29,0x1FFFEB5E}, + [I(137,67)] = {30,0x3FFFED5E}, + [I(138,67)] = {30,0x3FFFEDDE}, + [I(139,67)] = {30,0x3FFFEE5E}, + [I(140,67)] = {30,0x3FFFEEDE}, + [I(141,67)] = {30,0x3FFFEF5E}, + [I(142,67)] = {31,0x7FFFF5DE}, + [I(143,67)] = {30,0x3FFFEFDE}, + [I(144,67)] = {31,0x7FFFF65E}, + [I(145,67)] = {31,0x7FFFF6DE}, + [I(146,67)] = {29,0x1FFFEBDE}, + [I(147,67)] = {30,0x3FFFF05E}, + [I(148,67)] = {31,0x7FFFF75E}, + [I(149,67)] = {30,0x3FFFF0DE}, + [I(150,67)] = {30,0x3FFFF15E}, + [I(151,67)] = {30,0x3FFFF1DE}, + [I(152,67)] = {30,0x3FFFF25E}, + [I(153,67)] = {28,0xFFFEE5E}, + [I(154,67)] = {29,0x1FFFEC5E}, + [I(155,67)] = {30,0x3FFFF2DE}, + [I(156,67)] = {29,0x1FFFECDE}, + [I(157,67)] = {30,0x3FFFF35E}, + [I(158,67)] = {30,0x3FFFF3DE}, + [I(159,67)] = {31,0x7FFFF7DE}, + [I(160,67)] = {29,0x1FFFED5E}, + [I(161,67)] = {28,0xFFFEEDE}, + [I(162,67)] = {27,0x7FFF4DE}, + [I(163,67)] = {29,0x1FFFEDDE}, + [I(164,67)] = {29,0x1FFFEE5E}, + [I(165,67)] = {30,0x3FFFF45E}, + [I(166,67)] = {30,0x3FFFF4DE}, + [I(167,67)] = {28,0xFFFEF5E}, + [I(168,67)] = {30,0x3FFFF55E}, + [I(169,67)] = {29,0x1FFFEEDE}, + [I(170,67)] = {29,0x1FFFEF5E}, + [I(171,67)] = {31,0x7FFFF85E}, + [I(172,67)] = {28,0xFFFEFDE}, + [I(173,67)] = {29,0x1FFFEFDE}, + [I(174,67)] = {30,0x3FFFF5DE}, + [I(175,67)] = {30,0x3FFFF65E}, + [I(176,67)] = {28,0xFFFF05E}, + [I(177,67)] = {28,0xFFFF0DE}, + [I(178,67)] = {29,0x1FFFF05E}, + [I(179,67)] = {28,0xFFFF15E}, + [I(180,67)] = {30,0x3FFFF6DE}, + [I(181,67)] = {29,0x1FFFF0DE}, + [I(182,67)] = {30,0x3FFFF75E}, + [I(183,67)] = {30,0x3FFFF7DE}, + [I(184,67)] = {27,0x7FFF55E}, + [I(185,67)] = {29,0x1FFFF15E}, + [I(186,67)] = {29,0x1FFFF1DE}, + [I(187,67)] = {29,0x1FFFF25E}, + [I(188,67)] = {30,0x3FFFF85E}, + [I(189,67)] = {29,0x1FFFF2DE}, + [I(190,67)] = {29,0x1FFFF35E}, + [I(191,67)] = {30,0x3FFFF8DE}, + [I(192,67)] = {64,0}, + [I(193,67)] = {64,0}, + [I(194,67)] = {27,0x7FFF5DE}, + [I(195,67)] = {26,0x3FFF8DE}, + [I(196,67)] = {29,0x1FFFF3DE}, + [I(197,67)] = {30,0x3FFFF95E}, + [I(198,67)] = {29,0x1FFFF45E}, + [I(199,67)] = {X32,0xFFFFF65E}, + [I(200,67)] = {64,0}, + [I(201,67)] = {64,0}, + [I(202,67)] = {64,0}, + [I(203,67)] = {64,0}, + [I(204,67)] = {64,0}, + [I(205,67)] = {64,0}, + [I(206,67)] = {31,0x7FFFF8DE}, + [I(207,67)] = {X32,0xFFFFF6DE}, + [I(208,67)] = {26,0x3FFF95E}, + [I(209,67)] = {28,0xFFFF1DE}, + [I(210,67)] = {64,0}, + [I(211,67)] = {64,0}, + [I(212,67)] = {64,0}, + [I(213,67)] = {64,0}, + [I(214,67)] = {64,0}, + [I(215,67)] = {31,0x7FFFF95E}, + [I(216,67)] = {28,0xFFFF25E}, + [I(217,67)] = {28,0xFFFF2DE}, + [I(218,67)] = {64,0}, + [I(219,67)] = {64,0}, + [I(220,67)] = {64,0}, + [I(221,67)] = {64,0}, + [I(222,67)] = {64,0}, + [I(223,67)] = {64,0}, + [I(224,67)] = {27,0x7FFF65E}, + [I(225,67)] = {31,0x7FFFF9DE}, + [I(226,67)] = {27,0x7FFF6DE}, + [I(227,67)] = {28,0xFFFF35E}, + [I(228,67)] = {29,0x1FFFF4DE}, + [I(229,67)] = {28,0xFFFF3DE}, + [I(230,67)] = {28,0xFFFF45E}, + [I(231,67)] = {30,0x3FFFF9DE}, + [I(232,67)] = {29,0x1FFFF55E}, + [I(233,67)] = {29,0x1FFFF5DE}, + [I(234,67)] = {X32,0xFFFFF75E}, + [I(235,67)] = {X32,0xFFFFF7DE}, + [I(236,67)] = {31,0x7FFFFA5E}, + [I(237,67)] = {31,0x7FFFFADE}, + [I(238,67)] = {64,0}, + [I(239,67)] = {30,0x3FFFFA5E}, + [I(240,67)] = {64,0}, + [I(241,67)] = {64,0}, + [I(242,67)] = {64,0}, + [I(243,67)] = {64,0}, + [I(244,67)] = {64,0}, + [I(245,67)] = {64,0}, + [I(246,67)] = {64,0}, + [I(247,67)] = {64,0}, + [I(248,67)] = {64,0}, + [I(249,67)] = {64,0}, + [I(250,67)] = {64,0}, + [I(251,67)] = {64,0}, + [I(252,67)] = {64,0}, + [I(253,67)] = {64,0}, + [I(254,67)] = {64,0}, + [I(255,67)] = {64,0}, + [I(0,68)] = {20,0xFFC5F}, + [I(1,68)] = {30,0x3FFFEC5F}, + [I(2,68)] = {64,0}, + [I(3,68)] = {64,0}, + [I(4,68)] = {64,0}, + [I(5,68)] = {64,0}, + [I(6,68)] = {64,0}, + [I(7,68)] = {64,0}, + [I(8,68)] = {64,0}, + [I(9,68)] = {31,0x7FFFF55F}, + [I(10,68)] = {64,0}, + [I(11,68)] = {64,0}, + [I(12,68)] = {64,0}, + [I(13,68)] = {64,0}, + [I(14,68)] = {64,0}, + [I(15,68)] = {64,0}, + [I(16,68)] = {64,0}, + [I(17,68)] = {64,0}, + [I(18,68)] = {64,0}, + [I(19,68)] = {64,0}, + [I(20,68)] = {64,0}, + [I(21,68)] = {64,0}, + [I(22,68)] = {64,0}, + [I(23,68)] = {64,0}, + [I(24,68)] = {64,0}, + [I(25,68)] = {64,0}, + [I(26,68)] = {64,0}, + [I(27,68)] = {64,0}, + [I(28,68)] = {64,0}, + [I(29,68)] = {64,0}, + [I(30,68)] = {64,0}, + [I(31,68)] = {64,0}, + [I(32,68)] = {13,0xA5F}, + [I(33,68)] = {17,0x1FC5F}, + [I(34,68)] = {17,0x1FCDF}, + [I(35,68)] = {19,0x7FD5F}, + [I(36,68)] = {20,0xFFCDF}, + [I(37,68)] = {13,0xADF}, + [I(38,68)] = {15,0x7C5F}, + [I(39,68)] = {18,0x3FD5F}, + [I(40,68)] = {17,0x1FD5F}, + [I(41,68)] = {17,0x1FDDF}, + [I(42,68)] = {15,0x7CDF}, + [I(43,68)] = {18,0x3FDDF}, + [I(44,68)] = {15,0x7D5F}, + [I(45,68)] = {13,0xB5F}, + [I(46,68)] = {13,0xBDF}, + [I(47,68)] = {13,0xC5F}, + [I(48,68)] = {12,0x5F}, + [I(49,68)] = {12,0xDF}, + [I(50,68)] = {12,0x15F}, + [I(51,68)] = {13,0xCDF}, + [I(52,68)] = {13,0xD5F}, + [I(53,68)] = {13,0xDDF}, + [I(54,68)] = {13,0xE5F}, + [I(55,68)] = {13,0xEDF}, + [I(56,68)] = {13,0xF5F}, + [I(57,68)] = {13,0xFDF}, + [I(58,68)] = {14,0x2E5F}, + [I(59,68)] = {15,0x7DDF}, + [I(60,68)] = {22,0x3FFE5F}, + [I(61,68)] = {13,0x105F}, + [I(62,68)] = {19,0x7FDDF}, + [I(63,68)] = {17,0x1FE5F}, + [I(64,68)] = {20,0xFFD5F}, + [I(65,68)] = {13,0x10DF}, + [I(66,68)] = {14,0x2EDF}, + [I(67,68)] = {14,0x2F5F}, + [I(68,68)] = {14,0x2FDF}, + [I(69,68)] = {14,0x305F}, + [I(70,68)] = {14,0x30DF}, + [I(71,68)] = {14,0x315F}, + [I(72,68)] = {14,0x31DF}, + [I(73,68)] = {14,0x325F}, + [I(74,68)] = {14,0x32DF}, + [I(75,68)] = {14,0x335F}, + [I(76,68)] = {14,0x33DF}, + [I(77,68)] = {14,0x345F}, + [I(78,68)] = {14,0x34DF}, + [I(79,68)] = {14,0x355F}, + [I(80,68)] = {14,0x35DF}, + [I(81,68)] = {14,0x365F}, + [I(82,68)] = {14,0x36DF}, + [I(83,68)] = {14,0x375F}, + [I(84,68)] = {14,0x37DF}, + [I(85,68)] = {14,0x385F}, + [I(86,68)] = {14,0x38DF}, + [I(87,68)] = {14,0x395F}, + [I(88,68)] = {15,0x7E5F}, + [I(89,68)] = {14,0x39DF}, + [I(90,68)] = {15,0x7EDF}, + [I(91,68)] = {20,0xFFDDF}, + [I(92,68)] = {26,0x3FFF85F}, + [I(93,68)] = {20,0xFFE5F}, + [I(94,68)] = {21,0x1FFE5F}, + [I(95,68)] = {13,0x115F}, + [I(96,68)] = {22,0x3FFEDF}, + [I(97,68)] = {12,0x1DF}, + [I(98,68)] = {13,0x11DF}, + [I(99,68)] = {12,0x25F}, + [I(100,68)] = {13,0x125F}, + [I(101,68)] = {12,0x2DF}, + [I(102,68)] = {13,0x12DF}, + [I(103,68)] = {13,0x135F}, + [I(104,68)] = {13,0x13DF}, + [I(105,68)] = {12,0x35F}, + [I(106,68)] = {14,0x3A5F}, + [I(107,68)] = {14,0x3ADF}, + [I(108,68)] = {13,0x145F}, + [I(109,68)] = {13,0x14DF}, + [I(110,68)] = {13,0x155F}, + [I(111,68)] = {12,0x3DF}, + [I(112,68)] = {13,0x15DF}, + [I(113,68)] = {14,0x3B5F}, + [I(114,68)] = {13,0x165F}, + [I(115,68)] = {12,0x45F}, + [I(116,68)] = {12,0x4DF}, + [I(117,68)] = {13,0x16DF}, + [I(118,68)] = {14,0x3BDF}, + [I(119,68)] = {14,0x3C5F}, + [I(120,68)] = {14,0x3CDF}, + [I(121,68)] = {14,0x3D5F}, + [I(122,68)] = {14,0x3DDF}, + [I(123,68)] = {22,0x3FFF5F}, + [I(124,68)] = {18,0x3FE5F}, + [I(125,68)] = {21,0x1FFEDF}, + [I(126,68)] = {20,0xFFEDF}, + [I(127,68)] = {64,0}, + [I(128,68)] = {27,0x7FFF35F}, + [I(129,68)] = {29,0x1FFFE95F}, + [I(130,68)] = {27,0x7FFF3DF}, + [I(131,68)] = {27,0x7FFF45F}, + [I(132,68)] = {29,0x1FFFE9DF}, + [I(133,68)] = {29,0x1FFFEA5F}, + [I(134,68)] = {29,0x1FFFEADF}, + [I(135,68)] = {30,0x3FFFECDF}, + [I(136,68)] = {29,0x1FFFEB5F}, + [I(137,68)] = {30,0x3FFFED5F}, + [I(138,68)] = {30,0x3FFFEDDF}, + [I(139,68)] = {30,0x3FFFEE5F}, + [I(140,68)] = {30,0x3FFFEEDF}, + [I(141,68)] = {30,0x3FFFEF5F}, + [I(142,68)] = {31,0x7FFFF5DF}, + [I(143,68)] = {30,0x3FFFEFDF}, + [I(144,68)] = {31,0x7FFFF65F}, + [I(145,68)] = {31,0x7FFFF6DF}, + [I(146,68)] = {29,0x1FFFEBDF}, + [I(147,68)] = {30,0x3FFFF05F}, + [I(148,68)] = {31,0x7FFFF75F}, + [I(149,68)] = {30,0x3FFFF0DF}, + [I(150,68)] = {30,0x3FFFF15F}, + [I(151,68)] = {30,0x3FFFF1DF}, + [I(152,68)] = {30,0x3FFFF25F}, + [I(153,68)] = {28,0xFFFEE5F}, + [I(154,68)] = {29,0x1FFFEC5F}, + [I(155,68)] = {30,0x3FFFF2DF}, + [I(156,68)] = {29,0x1FFFECDF}, + [I(157,68)] = {30,0x3FFFF35F}, + [I(158,68)] = {30,0x3FFFF3DF}, + [I(159,68)] = {31,0x7FFFF7DF}, + [I(160,68)] = {29,0x1FFFED5F}, + [I(161,68)] = {28,0xFFFEEDF}, + [I(162,68)] = {27,0x7FFF4DF}, + [I(163,68)] = {29,0x1FFFEDDF}, + [I(164,68)] = {29,0x1FFFEE5F}, + [I(165,68)] = {30,0x3FFFF45F}, + [I(166,68)] = {30,0x3FFFF4DF}, + [I(167,68)] = {28,0xFFFEF5F}, + [I(168,68)] = {30,0x3FFFF55F}, + [I(169,68)] = {29,0x1FFFEEDF}, + [I(170,68)] = {29,0x1FFFEF5F}, + [I(171,68)] = {31,0x7FFFF85F}, + [I(172,68)] = {28,0xFFFEFDF}, + [I(173,68)] = {29,0x1FFFEFDF}, + [I(174,68)] = {30,0x3FFFF5DF}, + [I(175,68)] = {30,0x3FFFF65F}, + [I(176,68)] = {28,0xFFFF05F}, + [I(177,68)] = {28,0xFFFF0DF}, + [I(178,68)] = {29,0x1FFFF05F}, + [I(179,68)] = {28,0xFFFF15F}, + [I(180,68)] = {30,0x3FFFF6DF}, + [I(181,68)] = {29,0x1FFFF0DF}, + [I(182,68)] = {30,0x3FFFF75F}, + [I(183,68)] = {30,0x3FFFF7DF}, + [I(184,68)] = {27,0x7FFF55F}, + [I(185,68)] = {29,0x1FFFF15F}, + [I(186,68)] = {29,0x1FFFF1DF}, + [I(187,68)] = {29,0x1FFFF25F}, + [I(188,68)] = {30,0x3FFFF85F}, + [I(189,68)] = {29,0x1FFFF2DF}, + [I(190,68)] = {29,0x1FFFF35F}, + [I(191,68)] = {30,0x3FFFF8DF}, + [I(192,68)] = {64,0}, + [I(193,68)] = {64,0}, + [I(194,68)] = {27,0x7FFF5DF}, + [I(195,68)] = {26,0x3FFF8DF}, + [I(196,68)] = {29,0x1FFFF3DF}, + [I(197,68)] = {30,0x3FFFF95F}, + [I(198,68)] = {29,0x1FFFF45F}, + [I(199,68)] = {X32,0xFFFFF65F}, + [I(200,68)] = {64,0}, + [I(201,68)] = {64,0}, + [I(202,68)] = {64,0}, + [I(203,68)] = {64,0}, + [I(204,68)] = {64,0}, + [I(205,68)] = {64,0}, + [I(206,68)] = {31,0x7FFFF8DF}, + [I(207,68)] = {X32,0xFFFFF6DF}, + [I(208,68)] = {26,0x3FFF95F}, + [I(209,68)] = {28,0xFFFF1DF}, + [I(210,68)] = {64,0}, + [I(211,68)] = {64,0}, + [I(212,68)] = {64,0}, + [I(213,68)] = {64,0}, + [I(214,68)] = {64,0}, + [I(215,68)] = {31,0x7FFFF95F}, + [I(216,68)] = {28,0xFFFF25F}, + [I(217,68)] = {28,0xFFFF2DF}, + [I(218,68)] = {64,0}, + [I(219,68)] = {64,0}, + [I(220,68)] = {64,0}, + [I(221,68)] = {64,0}, + [I(222,68)] = {64,0}, + [I(223,68)] = {64,0}, + [I(224,68)] = {27,0x7FFF65F}, + [I(225,68)] = {31,0x7FFFF9DF}, + [I(226,68)] = {27,0x7FFF6DF}, + [I(227,68)] = {28,0xFFFF35F}, + [I(228,68)] = {29,0x1FFFF4DF}, + [I(229,68)] = {28,0xFFFF3DF}, + [I(230,68)] = {28,0xFFFF45F}, + [I(231,68)] = {30,0x3FFFF9DF}, + [I(232,68)] = {29,0x1FFFF55F}, + [I(233,68)] = {29,0x1FFFF5DF}, + [I(234,68)] = {X32,0xFFFFF75F}, + [I(235,68)] = {X32,0xFFFFF7DF}, + [I(236,68)] = {31,0x7FFFFA5F}, + [I(237,68)] = {31,0x7FFFFADF}, + [I(238,68)] = {64,0}, + [I(239,68)] = {30,0x3FFFFA5F}, + [I(240,68)] = {64,0}, + [I(241,68)] = {64,0}, + [I(242,68)] = {64,0}, + [I(243,68)] = {64,0}, + [I(244,68)] = {64,0}, + [I(245,68)] = {64,0}, + [I(246,68)] = {64,0}, + [I(247,68)] = {64,0}, + [I(248,68)] = {64,0}, + [I(249,68)] = {64,0}, + [I(250,68)] = {64,0}, + [I(251,68)] = {64,0}, + [I(252,68)] = {64,0}, + [I(253,68)] = {64,0}, + [I(254,68)] = {64,0}, + [I(255,68)] = {64,0}, + [I(0,69)] = {20,0xFFC60}, + [I(1,69)] = {30,0x3FFFEC60}, + [I(2,69)] = {64,0}, + [I(3,69)] = {64,0}, + [I(4,69)] = {64,0}, + [I(5,69)] = {64,0}, + [I(6,69)] = {64,0}, + [I(7,69)] = {64,0}, + [I(8,69)] = {64,0}, + [I(9,69)] = {31,0x7FFFF560}, + [I(10,69)] = {64,0}, + [I(11,69)] = {64,0}, + [I(12,69)] = {64,0}, + [I(13,69)] = {64,0}, + [I(14,69)] = {64,0}, + [I(15,69)] = {64,0}, + [I(16,69)] = {64,0}, + [I(17,69)] = {64,0}, + [I(18,69)] = {64,0}, + [I(19,69)] = {64,0}, + [I(20,69)] = {64,0}, + [I(21,69)] = {64,0}, + [I(22,69)] = {64,0}, + [I(23,69)] = {64,0}, + [I(24,69)] = {64,0}, + [I(25,69)] = {64,0}, + [I(26,69)] = {64,0}, + [I(27,69)] = {64,0}, + [I(28,69)] = {64,0}, + [I(29,69)] = {64,0}, + [I(30,69)] = {64,0}, + [I(31,69)] = {64,0}, + [I(32,69)] = {13,0xA60}, + [I(33,69)] = {17,0x1FC60}, + [I(34,69)] = {17,0x1FCE0}, + [I(35,69)] = {19,0x7FD60}, + [I(36,69)] = {20,0xFFCE0}, + [I(37,69)] = {13,0xAE0}, + [I(38,69)] = {15,0x7C60}, + [I(39,69)] = {18,0x3FD60}, + [I(40,69)] = {17,0x1FD60}, + [I(41,69)] = {17,0x1FDE0}, + [I(42,69)] = {15,0x7CE0}, + [I(43,69)] = {18,0x3FDE0}, + [I(44,69)] = {15,0x7D60}, + [I(45,69)] = {13,0xB60}, + [I(46,69)] = {13,0xBE0}, + [I(47,69)] = {13,0xC60}, + [I(48,69)] = {12,0x60}, + [I(49,69)] = {12,0xE0}, + [I(50,69)] = {12,0x160}, + [I(51,69)] = {13,0xCE0}, + [I(52,69)] = {13,0xD60}, + [I(53,69)] = {13,0xDE0}, + [I(54,69)] = {13,0xE60}, + [I(55,69)] = {13,0xEE0}, + [I(56,69)] = {13,0xF60}, + [I(57,69)] = {13,0xFE0}, + [I(58,69)] = {14,0x2E60}, + [I(59,69)] = {15,0x7DE0}, + [I(60,69)] = {22,0x3FFE60}, + [I(61,69)] = {13,0x1060}, + [I(62,69)] = {19,0x7FDE0}, + [I(63,69)] = {17,0x1FE60}, + [I(64,69)] = {20,0xFFD60}, + [I(65,69)] = {13,0x10E0}, + [I(66,69)] = {14,0x2EE0}, + [I(67,69)] = {14,0x2F60}, + [I(68,69)] = {14,0x2FE0}, + [I(69,69)] = {14,0x3060}, + [I(70,69)] = {14,0x30E0}, + [I(71,69)] = {14,0x3160}, + [I(72,69)] = {14,0x31E0}, + [I(73,69)] = {14,0x3260}, + [I(74,69)] = {14,0x32E0}, + [I(75,69)] = {14,0x3360}, + [I(76,69)] = {14,0x33E0}, + [I(77,69)] = {14,0x3460}, + [I(78,69)] = {14,0x34E0}, + [I(79,69)] = {14,0x3560}, + [I(80,69)] = {14,0x35E0}, + [I(81,69)] = {14,0x3660}, + [I(82,69)] = {14,0x36E0}, + [I(83,69)] = {14,0x3760}, + [I(84,69)] = {14,0x37E0}, + [I(85,69)] = {14,0x3860}, + [I(86,69)] = {14,0x38E0}, + [I(87,69)] = {14,0x3960}, + [I(88,69)] = {15,0x7E60}, + [I(89,69)] = {14,0x39E0}, + [I(90,69)] = {15,0x7EE0}, + [I(91,69)] = {20,0xFFDE0}, + [I(92,69)] = {26,0x3FFF860}, + [I(93,69)] = {20,0xFFE60}, + [I(94,69)] = {21,0x1FFE60}, + [I(95,69)] = {13,0x1160}, + [I(96,69)] = {22,0x3FFEE0}, + [I(97,69)] = {12,0x1E0}, + [I(98,69)] = {13,0x11E0}, + [I(99,69)] = {12,0x260}, + [I(100,69)] = {13,0x1260}, + [I(101,69)] = {12,0x2E0}, + [I(102,69)] = {13,0x12E0}, + [I(103,69)] = {13,0x1360}, + [I(104,69)] = {13,0x13E0}, + [I(105,69)] = {12,0x360}, + [I(106,69)] = {14,0x3A60}, + [I(107,69)] = {14,0x3AE0}, + [I(108,69)] = {13,0x1460}, + [I(109,69)] = {13,0x14E0}, + [I(110,69)] = {13,0x1560}, + [I(111,69)] = {12,0x3E0}, + [I(112,69)] = {13,0x15E0}, + [I(113,69)] = {14,0x3B60}, + [I(114,69)] = {13,0x1660}, + [I(115,69)] = {12,0x460}, + [I(116,69)] = {12,0x4E0}, + [I(117,69)] = {13,0x16E0}, + [I(118,69)] = {14,0x3BE0}, + [I(119,69)] = {14,0x3C60}, + [I(120,69)] = {14,0x3CE0}, + [I(121,69)] = {14,0x3D60}, + [I(122,69)] = {14,0x3DE0}, + [I(123,69)] = {22,0x3FFF60}, + [I(124,69)] = {18,0x3FE60}, + [I(125,69)] = {21,0x1FFEE0}, + [I(126,69)] = {20,0xFFEE0}, + [I(127,69)] = {64,0}, + [I(128,69)] = {27,0x7FFF360}, + [I(129,69)] = {29,0x1FFFE960}, + [I(130,69)] = {27,0x7FFF3E0}, + [I(131,69)] = {27,0x7FFF460}, + [I(132,69)] = {29,0x1FFFE9E0}, + [I(133,69)] = {29,0x1FFFEA60}, + [I(134,69)] = {29,0x1FFFEAE0}, + [I(135,69)] = {30,0x3FFFECE0}, + [I(136,69)] = {29,0x1FFFEB60}, + [I(137,69)] = {30,0x3FFFED60}, + [I(138,69)] = {30,0x3FFFEDE0}, + [I(139,69)] = {30,0x3FFFEE60}, + [I(140,69)] = {30,0x3FFFEEE0}, + [I(141,69)] = {30,0x3FFFEF60}, + [I(142,69)] = {31,0x7FFFF5E0}, + [I(143,69)] = {30,0x3FFFEFE0}, + [I(144,69)] = {31,0x7FFFF660}, + [I(145,69)] = {31,0x7FFFF6E0}, + [I(146,69)] = {29,0x1FFFEBE0}, + [I(147,69)] = {30,0x3FFFF060}, + [I(148,69)] = {31,0x7FFFF760}, + [I(149,69)] = {30,0x3FFFF0E0}, + [I(150,69)] = {30,0x3FFFF160}, + [I(151,69)] = {30,0x3FFFF1E0}, + [I(152,69)] = {30,0x3FFFF260}, + [I(153,69)] = {28,0xFFFEE60}, + [I(154,69)] = {29,0x1FFFEC60}, + [I(155,69)] = {30,0x3FFFF2E0}, + [I(156,69)] = {29,0x1FFFECE0}, + [I(157,69)] = {30,0x3FFFF360}, + [I(158,69)] = {30,0x3FFFF3E0}, + [I(159,69)] = {31,0x7FFFF7E0}, + [I(160,69)] = {29,0x1FFFED60}, + [I(161,69)] = {28,0xFFFEEE0}, + [I(162,69)] = {27,0x7FFF4E0}, + [I(163,69)] = {29,0x1FFFEDE0}, + [I(164,69)] = {29,0x1FFFEE60}, + [I(165,69)] = {30,0x3FFFF460}, + [I(166,69)] = {30,0x3FFFF4E0}, + [I(167,69)] = {28,0xFFFEF60}, + [I(168,69)] = {30,0x3FFFF560}, + [I(169,69)] = {29,0x1FFFEEE0}, + [I(170,69)] = {29,0x1FFFEF60}, + [I(171,69)] = {31,0x7FFFF860}, + [I(172,69)] = {28,0xFFFEFE0}, + [I(173,69)] = {29,0x1FFFEFE0}, + [I(174,69)] = {30,0x3FFFF5E0}, + [I(175,69)] = {30,0x3FFFF660}, + [I(176,69)] = {28,0xFFFF060}, + [I(177,69)] = {28,0xFFFF0E0}, + [I(178,69)] = {29,0x1FFFF060}, + [I(179,69)] = {28,0xFFFF160}, + [I(180,69)] = {30,0x3FFFF6E0}, + [I(181,69)] = {29,0x1FFFF0E0}, + [I(182,69)] = {30,0x3FFFF760}, + [I(183,69)] = {30,0x3FFFF7E0}, + [I(184,69)] = {27,0x7FFF560}, + [I(185,69)] = {29,0x1FFFF160}, + [I(186,69)] = {29,0x1FFFF1E0}, + [I(187,69)] = {29,0x1FFFF260}, + [I(188,69)] = {30,0x3FFFF860}, + [I(189,69)] = {29,0x1FFFF2E0}, + [I(190,69)] = {29,0x1FFFF360}, + [I(191,69)] = {30,0x3FFFF8E0}, + [I(192,69)] = {64,0}, + [I(193,69)] = {64,0}, + [I(194,69)] = {27,0x7FFF5E0}, + [I(195,69)] = {26,0x3FFF8E0}, + [I(196,69)] = {29,0x1FFFF3E0}, + [I(197,69)] = {30,0x3FFFF960}, + [I(198,69)] = {29,0x1FFFF460}, + [I(199,69)] = {X32,0xFFFFF660}, + [I(200,69)] = {64,0}, + [I(201,69)] = {64,0}, + [I(202,69)] = {64,0}, + [I(203,69)] = {64,0}, + [I(204,69)] = {64,0}, + [I(205,69)] = {64,0}, + [I(206,69)] = {31,0x7FFFF8E0}, + [I(207,69)] = {X32,0xFFFFF6E0}, + [I(208,69)] = {26,0x3FFF960}, + [I(209,69)] = {28,0xFFFF1E0}, + [I(210,69)] = {64,0}, + [I(211,69)] = {64,0}, + [I(212,69)] = {64,0}, + [I(213,69)] = {64,0}, + [I(214,69)] = {64,0}, + [I(215,69)] = {31,0x7FFFF960}, + [I(216,69)] = {28,0xFFFF260}, + [I(217,69)] = {28,0xFFFF2E0}, + [I(218,69)] = {64,0}, + [I(219,69)] = {64,0}, + [I(220,69)] = {64,0}, + [I(221,69)] = {64,0}, + [I(222,69)] = {64,0}, + [I(223,69)] = {64,0}, + [I(224,69)] = {27,0x7FFF660}, + [I(225,69)] = {31,0x7FFFF9E0}, + [I(226,69)] = {27,0x7FFF6E0}, + [I(227,69)] = {28,0xFFFF360}, + [I(228,69)] = {29,0x1FFFF4E0}, + [I(229,69)] = {28,0xFFFF3E0}, + [I(230,69)] = {28,0xFFFF460}, + [I(231,69)] = {30,0x3FFFF9E0}, + [I(232,69)] = {29,0x1FFFF560}, + [I(233,69)] = {29,0x1FFFF5E0}, + [I(234,69)] = {X32,0xFFFFF760}, + [I(235,69)] = {X32,0xFFFFF7E0}, + [I(236,69)] = {31,0x7FFFFA60}, + [I(237,69)] = {31,0x7FFFFAE0}, + [I(238,69)] = {64,0}, + [I(239,69)] = {30,0x3FFFFA60}, + [I(240,69)] = {64,0}, + [I(241,69)] = {64,0}, + [I(242,69)] = {64,0}, + [I(243,69)] = {64,0}, + [I(244,69)] = {64,0}, + [I(245,69)] = {64,0}, + [I(246,69)] = {64,0}, + [I(247,69)] = {64,0}, + [I(248,69)] = {64,0}, + [I(249,69)] = {64,0}, + [I(250,69)] = {64,0}, + [I(251,69)] = {64,0}, + [I(252,69)] = {64,0}, + [I(253,69)] = {64,0}, + [I(254,69)] = {64,0}, + [I(255,69)] = {64,0}, + [I(0,70)] = {20,0xFFC61}, + [I(1,70)] = {30,0x3FFFEC61}, + [I(2,70)] = {64,0}, + [I(3,70)] = {64,0}, + [I(4,70)] = {64,0}, + [I(5,70)] = {64,0}, + [I(6,70)] = {64,0}, + [I(7,70)] = {64,0}, + [I(8,70)] = {64,0}, + [I(9,70)] = {31,0x7FFFF561}, + [I(10,70)] = {64,0}, + [I(11,70)] = {64,0}, + [I(12,70)] = {64,0}, + [I(13,70)] = {64,0}, + [I(14,70)] = {64,0}, + [I(15,70)] = {64,0}, + [I(16,70)] = {64,0}, + [I(17,70)] = {64,0}, + [I(18,70)] = {64,0}, + [I(19,70)] = {64,0}, + [I(20,70)] = {64,0}, + [I(21,70)] = {64,0}, + [I(22,70)] = {64,0}, + [I(23,70)] = {64,0}, + [I(24,70)] = {64,0}, + [I(25,70)] = {64,0}, + [I(26,70)] = {64,0}, + [I(27,70)] = {64,0}, + [I(28,70)] = {64,0}, + [I(29,70)] = {64,0}, + [I(30,70)] = {64,0}, + [I(31,70)] = {64,0}, + [I(32,70)] = {13,0xA61}, + [I(33,70)] = {17,0x1FC61}, + [I(34,70)] = {17,0x1FCE1}, + [I(35,70)] = {19,0x7FD61}, + [I(36,70)] = {20,0xFFCE1}, + [I(37,70)] = {13,0xAE1}, + [I(38,70)] = {15,0x7C61}, + [I(39,70)] = {18,0x3FD61}, + [I(40,70)] = {17,0x1FD61}, + [I(41,70)] = {17,0x1FDE1}, + [I(42,70)] = {15,0x7CE1}, + [I(43,70)] = {18,0x3FDE1}, + [I(44,70)] = {15,0x7D61}, + [I(45,70)] = {13,0xB61}, + [I(46,70)] = {13,0xBE1}, + [I(47,70)] = {13,0xC61}, + [I(48,70)] = {12,0x61}, + [I(49,70)] = {12,0xE1}, + [I(50,70)] = {12,0x161}, + [I(51,70)] = {13,0xCE1}, + [I(52,70)] = {13,0xD61}, + [I(53,70)] = {13,0xDE1}, + [I(54,70)] = {13,0xE61}, + [I(55,70)] = {13,0xEE1}, + [I(56,70)] = {13,0xF61}, + [I(57,70)] = {13,0xFE1}, + [I(58,70)] = {14,0x2E61}, + [I(59,70)] = {15,0x7DE1}, + [I(60,70)] = {22,0x3FFE61}, + [I(61,70)] = {13,0x1061}, + [I(62,70)] = {19,0x7FDE1}, + [I(63,70)] = {17,0x1FE61}, + [I(64,70)] = {20,0xFFD61}, + [I(65,70)] = {13,0x10E1}, + [I(66,70)] = {14,0x2EE1}, + [I(67,70)] = {14,0x2F61}, + [I(68,70)] = {14,0x2FE1}, + [I(69,70)] = {14,0x3061}, + [I(70,70)] = {14,0x30E1}, + [I(71,70)] = {14,0x3161}, + [I(72,70)] = {14,0x31E1}, + [I(73,70)] = {14,0x3261}, + [I(74,70)] = {14,0x32E1}, + [I(75,70)] = {14,0x3361}, + [I(76,70)] = {14,0x33E1}, + [I(77,70)] = {14,0x3461}, + [I(78,70)] = {14,0x34E1}, + [I(79,70)] = {14,0x3561}, + [I(80,70)] = {14,0x35E1}, + [I(81,70)] = {14,0x3661}, + [I(82,70)] = {14,0x36E1}, + [I(83,70)] = {14,0x3761}, + [I(84,70)] = {14,0x37E1}, + [I(85,70)] = {14,0x3861}, + [I(86,70)] = {14,0x38E1}, + [I(87,70)] = {14,0x3961}, + [I(88,70)] = {15,0x7E61}, + [I(89,70)] = {14,0x39E1}, + [I(90,70)] = {15,0x7EE1}, + [I(91,70)] = {20,0xFFDE1}, + [I(92,70)] = {26,0x3FFF861}, + [I(93,70)] = {20,0xFFE61}, + [I(94,70)] = {21,0x1FFE61}, + [I(95,70)] = {13,0x1161}, + [I(96,70)] = {22,0x3FFEE1}, + [I(97,70)] = {12,0x1E1}, + [I(98,70)] = {13,0x11E1}, + [I(99,70)] = {12,0x261}, + [I(100,70)] = {13,0x1261}, + [I(101,70)] = {12,0x2E1}, + [I(102,70)] = {13,0x12E1}, + [I(103,70)] = {13,0x1361}, + [I(104,70)] = {13,0x13E1}, + [I(105,70)] = {12,0x361}, + [I(106,70)] = {14,0x3A61}, + [I(107,70)] = {14,0x3AE1}, + [I(108,70)] = {13,0x1461}, + [I(109,70)] = {13,0x14E1}, + [I(110,70)] = {13,0x1561}, + [I(111,70)] = {12,0x3E1}, + [I(112,70)] = {13,0x15E1}, + [I(113,70)] = {14,0x3B61}, + [I(114,70)] = {13,0x1661}, + [I(115,70)] = {12,0x461}, + [I(116,70)] = {12,0x4E1}, + [I(117,70)] = {13,0x16E1}, + [I(118,70)] = {14,0x3BE1}, + [I(119,70)] = {14,0x3C61}, + [I(120,70)] = {14,0x3CE1}, + [I(121,70)] = {14,0x3D61}, + [I(122,70)] = {14,0x3DE1}, + [I(123,70)] = {22,0x3FFF61}, + [I(124,70)] = {18,0x3FE61}, + [I(125,70)] = {21,0x1FFEE1}, + [I(126,70)] = {20,0xFFEE1}, + [I(127,70)] = {64,0}, + [I(128,70)] = {27,0x7FFF361}, + [I(129,70)] = {29,0x1FFFE961}, + [I(130,70)] = {27,0x7FFF3E1}, + [I(131,70)] = {27,0x7FFF461}, + [I(132,70)] = {29,0x1FFFE9E1}, + [I(133,70)] = {29,0x1FFFEA61}, + [I(134,70)] = {29,0x1FFFEAE1}, + [I(135,70)] = {30,0x3FFFECE1}, + [I(136,70)] = {29,0x1FFFEB61}, + [I(137,70)] = {30,0x3FFFED61}, + [I(138,70)] = {30,0x3FFFEDE1}, + [I(139,70)] = {30,0x3FFFEE61}, + [I(140,70)] = {30,0x3FFFEEE1}, + [I(141,70)] = {30,0x3FFFEF61}, + [I(142,70)] = {31,0x7FFFF5E1}, + [I(143,70)] = {30,0x3FFFEFE1}, + [I(144,70)] = {31,0x7FFFF661}, + [I(145,70)] = {31,0x7FFFF6E1}, + [I(146,70)] = {29,0x1FFFEBE1}, + [I(147,70)] = {30,0x3FFFF061}, + [I(148,70)] = {31,0x7FFFF761}, + [I(149,70)] = {30,0x3FFFF0E1}, + [I(150,70)] = {30,0x3FFFF161}, + [I(151,70)] = {30,0x3FFFF1E1}, + [I(152,70)] = {30,0x3FFFF261}, + [I(153,70)] = {28,0xFFFEE61}, + [I(154,70)] = {29,0x1FFFEC61}, + [I(155,70)] = {30,0x3FFFF2E1}, + [I(156,70)] = {29,0x1FFFECE1}, + [I(157,70)] = {30,0x3FFFF361}, + [I(158,70)] = {30,0x3FFFF3E1}, + [I(159,70)] = {31,0x7FFFF7E1}, + [I(160,70)] = {29,0x1FFFED61}, + [I(161,70)] = {28,0xFFFEEE1}, + [I(162,70)] = {27,0x7FFF4E1}, + [I(163,70)] = {29,0x1FFFEDE1}, + [I(164,70)] = {29,0x1FFFEE61}, + [I(165,70)] = {30,0x3FFFF461}, + [I(166,70)] = {30,0x3FFFF4E1}, + [I(167,70)] = {28,0xFFFEF61}, + [I(168,70)] = {30,0x3FFFF561}, + [I(169,70)] = {29,0x1FFFEEE1}, + [I(170,70)] = {29,0x1FFFEF61}, + [I(171,70)] = {31,0x7FFFF861}, + [I(172,70)] = {28,0xFFFEFE1}, + [I(173,70)] = {29,0x1FFFEFE1}, + [I(174,70)] = {30,0x3FFFF5E1}, + [I(175,70)] = {30,0x3FFFF661}, + [I(176,70)] = {28,0xFFFF061}, + [I(177,70)] = {28,0xFFFF0E1}, + [I(178,70)] = {29,0x1FFFF061}, + [I(179,70)] = {28,0xFFFF161}, + [I(180,70)] = {30,0x3FFFF6E1}, + [I(181,70)] = {29,0x1FFFF0E1}, + [I(182,70)] = {30,0x3FFFF761}, + [I(183,70)] = {30,0x3FFFF7E1}, + [I(184,70)] = {27,0x7FFF561}, + [I(185,70)] = {29,0x1FFFF161}, + [I(186,70)] = {29,0x1FFFF1E1}, + [I(187,70)] = {29,0x1FFFF261}, + [I(188,70)] = {30,0x3FFFF861}, + [I(189,70)] = {29,0x1FFFF2E1}, + [I(190,70)] = {29,0x1FFFF361}, + [I(191,70)] = {30,0x3FFFF8E1}, + [I(192,70)] = {64,0}, + [I(193,70)] = {64,0}, + [I(194,70)] = {27,0x7FFF5E1}, + [I(195,70)] = {26,0x3FFF8E1}, + [I(196,70)] = {29,0x1FFFF3E1}, + [I(197,70)] = {30,0x3FFFF961}, + [I(198,70)] = {29,0x1FFFF461}, + [I(199,70)] = {X32,0xFFFFF661}, + [I(200,70)] = {64,0}, + [I(201,70)] = {64,0}, + [I(202,70)] = {64,0}, + [I(203,70)] = {64,0}, + [I(204,70)] = {64,0}, + [I(205,70)] = {64,0}, + [I(206,70)] = {31,0x7FFFF8E1}, + [I(207,70)] = {X32,0xFFFFF6E1}, + [I(208,70)] = {26,0x3FFF961}, + [I(209,70)] = {28,0xFFFF1E1}, + [I(210,70)] = {64,0}, + [I(211,70)] = {64,0}, + [I(212,70)] = {64,0}, + [I(213,70)] = {64,0}, + [I(214,70)] = {64,0}, + [I(215,70)] = {31,0x7FFFF961}, + [I(216,70)] = {28,0xFFFF261}, + [I(217,70)] = {28,0xFFFF2E1}, + [I(218,70)] = {64,0}, + [I(219,70)] = {64,0}, + [I(220,70)] = {64,0}, + [I(221,70)] = {64,0}, + [I(222,70)] = {64,0}, + [I(223,70)] = {64,0}, + [I(224,70)] = {27,0x7FFF661}, + [I(225,70)] = {31,0x7FFFF9E1}, + [I(226,70)] = {27,0x7FFF6E1}, + [I(227,70)] = {28,0xFFFF361}, + [I(228,70)] = {29,0x1FFFF4E1}, + [I(229,70)] = {28,0xFFFF3E1}, + [I(230,70)] = {28,0xFFFF461}, + [I(231,70)] = {30,0x3FFFF9E1}, + [I(232,70)] = {29,0x1FFFF561}, + [I(233,70)] = {29,0x1FFFF5E1}, + [I(234,70)] = {X32,0xFFFFF761}, + [I(235,70)] = {X32,0xFFFFF7E1}, + [I(236,70)] = {31,0x7FFFFA61}, + [I(237,70)] = {31,0x7FFFFAE1}, + [I(238,70)] = {64,0}, + [I(239,70)] = {30,0x3FFFFA61}, + [I(240,70)] = {64,0}, + [I(241,70)] = {64,0}, + [I(242,70)] = {64,0}, + [I(243,70)] = {64,0}, + [I(244,70)] = {64,0}, + [I(245,70)] = {64,0}, + [I(246,70)] = {64,0}, + [I(247,70)] = {64,0}, + [I(248,70)] = {64,0}, + [I(249,70)] = {64,0}, + [I(250,70)] = {64,0}, + [I(251,70)] = {64,0}, + [I(252,70)] = {64,0}, + [I(253,70)] = {64,0}, + [I(254,70)] = {64,0}, + [I(255,70)] = {64,0}, + [I(0,71)] = {20,0xFFC62}, + [I(1,71)] = {30,0x3FFFEC62}, + [I(2,71)] = {64,0}, + [I(3,71)] = {64,0}, + [I(4,71)] = {64,0}, + [I(5,71)] = {64,0}, + [I(6,71)] = {64,0}, + [I(7,71)] = {64,0}, + [I(8,71)] = {64,0}, + [I(9,71)] = {31,0x7FFFF562}, + [I(10,71)] = {64,0}, + [I(11,71)] = {64,0}, + [I(12,71)] = {64,0}, + [I(13,71)] = {64,0}, + [I(14,71)] = {64,0}, + [I(15,71)] = {64,0}, + [I(16,71)] = {64,0}, + [I(17,71)] = {64,0}, + [I(18,71)] = {64,0}, + [I(19,71)] = {64,0}, + [I(20,71)] = {64,0}, + [I(21,71)] = {64,0}, + [I(22,71)] = {64,0}, + [I(23,71)] = {64,0}, + [I(24,71)] = {64,0}, + [I(25,71)] = {64,0}, + [I(26,71)] = {64,0}, + [I(27,71)] = {64,0}, + [I(28,71)] = {64,0}, + [I(29,71)] = {64,0}, + [I(30,71)] = {64,0}, + [I(31,71)] = {64,0}, + [I(32,71)] = {13,0xA62}, + [I(33,71)] = {17,0x1FC62}, + [I(34,71)] = {17,0x1FCE2}, + [I(35,71)] = {19,0x7FD62}, + [I(36,71)] = {20,0xFFCE2}, + [I(37,71)] = {13,0xAE2}, + [I(38,71)] = {15,0x7C62}, + [I(39,71)] = {18,0x3FD62}, + [I(40,71)] = {17,0x1FD62}, + [I(41,71)] = {17,0x1FDE2}, + [I(42,71)] = {15,0x7CE2}, + [I(43,71)] = {18,0x3FDE2}, + [I(44,71)] = {15,0x7D62}, + [I(45,71)] = {13,0xB62}, + [I(46,71)] = {13,0xBE2}, + [I(47,71)] = {13,0xC62}, + [I(48,71)] = {12,0x62}, + [I(49,71)] = {12,0xE2}, + [I(50,71)] = {12,0x162}, + [I(51,71)] = {13,0xCE2}, + [I(52,71)] = {13,0xD62}, + [I(53,71)] = {13,0xDE2}, + [I(54,71)] = {13,0xE62}, + [I(55,71)] = {13,0xEE2}, + [I(56,71)] = {13,0xF62}, + [I(57,71)] = {13,0xFE2}, + [I(58,71)] = {14,0x2E62}, + [I(59,71)] = {15,0x7DE2}, + [I(60,71)] = {22,0x3FFE62}, + [I(61,71)] = {13,0x1062}, + [I(62,71)] = {19,0x7FDE2}, + [I(63,71)] = {17,0x1FE62}, + [I(64,71)] = {20,0xFFD62}, + [I(65,71)] = {13,0x10E2}, + [I(66,71)] = {14,0x2EE2}, + [I(67,71)] = {14,0x2F62}, + [I(68,71)] = {14,0x2FE2}, + [I(69,71)] = {14,0x3062}, + [I(70,71)] = {14,0x30E2}, + [I(71,71)] = {14,0x3162}, + [I(72,71)] = {14,0x31E2}, + [I(73,71)] = {14,0x3262}, + [I(74,71)] = {14,0x32E2}, + [I(75,71)] = {14,0x3362}, + [I(76,71)] = {14,0x33E2}, + [I(77,71)] = {14,0x3462}, + [I(78,71)] = {14,0x34E2}, + [I(79,71)] = {14,0x3562}, + [I(80,71)] = {14,0x35E2}, + [I(81,71)] = {14,0x3662}, + [I(82,71)] = {14,0x36E2}, + [I(83,71)] = {14,0x3762}, + [I(84,71)] = {14,0x37E2}, + [I(85,71)] = {14,0x3862}, + [I(86,71)] = {14,0x38E2}, + [I(87,71)] = {14,0x3962}, + [I(88,71)] = {15,0x7E62}, + [I(89,71)] = {14,0x39E2}, + [I(90,71)] = {15,0x7EE2}, + [I(91,71)] = {20,0xFFDE2}, + [I(92,71)] = {26,0x3FFF862}, + [I(93,71)] = {20,0xFFE62}, + [I(94,71)] = {21,0x1FFE62}, + [I(95,71)] = {13,0x1162}, + [I(96,71)] = {22,0x3FFEE2}, + [I(97,71)] = {12,0x1E2}, + [I(98,71)] = {13,0x11E2}, + [I(99,71)] = {12,0x262}, + [I(100,71)] = {13,0x1262}, + [I(101,71)] = {12,0x2E2}, + [I(102,71)] = {13,0x12E2}, + [I(103,71)] = {13,0x1362}, + [I(104,71)] = {13,0x13E2}, + [I(105,71)] = {12,0x362}, + [I(106,71)] = {14,0x3A62}, + [I(107,71)] = {14,0x3AE2}, + [I(108,71)] = {13,0x1462}, + [I(109,71)] = {13,0x14E2}, + [I(110,71)] = {13,0x1562}, + [I(111,71)] = {12,0x3E2}, + [I(112,71)] = {13,0x15E2}, + [I(113,71)] = {14,0x3B62}, + [I(114,71)] = {13,0x1662}, + [I(115,71)] = {12,0x462}, + [I(116,71)] = {12,0x4E2}, + [I(117,71)] = {13,0x16E2}, + [I(118,71)] = {14,0x3BE2}, + [I(119,71)] = {14,0x3C62}, + [I(120,71)] = {14,0x3CE2}, + [I(121,71)] = {14,0x3D62}, + [I(122,71)] = {14,0x3DE2}, + [I(123,71)] = {22,0x3FFF62}, + [I(124,71)] = {18,0x3FE62}, + [I(125,71)] = {21,0x1FFEE2}, + [I(126,71)] = {20,0xFFEE2}, + [I(127,71)] = {64,0}, + [I(128,71)] = {27,0x7FFF362}, + [I(129,71)] = {29,0x1FFFE962}, + [I(130,71)] = {27,0x7FFF3E2}, + [I(131,71)] = {27,0x7FFF462}, + [I(132,71)] = {29,0x1FFFE9E2}, + [I(133,71)] = {29,0x1FFFEA62}, + [I(134,71)] = {29,0x1FFFEAE2}, + [I(135,71)] = {30,0x3FFFECE2}, + [I(136,71)] = {29,0x1FFFEB62}, + [I(137,71)] = {30,0x3FFFED62}, + [I(138,71)] = {30,0x3FFFEDE2}, + [I(139,71)] = {30,0x3FFFEE62}, + [I(140,71)] = {30,0x3FFFEEE2}, + [I(141,71)] = {30,0x3FFFEF62}, + [I(142,71)] = {31,0x7FFFF5E2}, + [I(143,71)] = {30,0x3FFFEFE2}, + [I(144,71)] = {31,0x7FFFF662}, + [I(145,71)] = {31,0x7FFFF6E2}, + [I(146,71)] = {29,0x1FFFEBE2}, + [I(147,71)] = {30,0x3FFFF062}, + [I(148,71)] = {31,0x7FFFF762}, + [I(149,71)] = {30,0x3FFFF0E2}, + [I(150,71)] = {30,0x3FFFF162}, + [I(151,71)] = {30,0x3FFFF1E2}, + [I(152,71)] = {30,0x3FFFF262}, + [I(153,71)] = {28,0xFFFEE62}, + [I(154,71)] = {29,0x1FFFEC62}, + [I(155,71)] = {30,0x3FFFF2E2}, + [I(156,71)] = {29,0x1FFFECE2}, + [I(157,71)] = {30,0x3FFFF362}, + [I(158,71)] = {30,0x3FFFF3E2}, + [I(159,71)] = {31,0x7FFFF7E2}, + [I(160,71)] = {29,0x1FFFED62}, + [I(161,71)] = {28,0xFFFEEE2}, + [I(162,71)] = {27,0x7FFF4E2}, + [I(163,71)] = {29,0x1FFFEDE2}, + [I(164,71)] = {29,0x1FFFEE62}, + [I(165,71)] = {30,0x3FFFF462}, + [I(166,71)] = {30,0x3FFFF4E2}, + [I(167,71)] = {28,0xFFFEF62}, + [I(168,71)] = {30,0x3FFFF562}, + [I(169,71)] = {29,0x1FFFEEE2}, + [I(170,71)] = {29,0x1FFFEF62}, + [I(171,71)] = {31,0x7FFFF862}, + [I(172,71)] = {28,0xFFFEFE2}, + [I(173,71)] = {29,0x1FFFEFE2}, + [I(174,71)] = {30,0x3FFFF5E2}, + [I(175,71)] = {30,0x3FFFF662}, + [I(176,71)] = {28,0xFFFF062}, + [I(177,71)] = {28,0xFFFF0E2}, + [I(178,71)] = {29,0x1FFFF062}, + [I(179,71)] = {28,0xFFFF162}, + [I(180,71)] = {30,0x3FFFF6E2}, + [I(181,71)] = {29,0x1FFFF0E2}, + [I(182,71)] = {30,0x3FFFF762}, + [I(183,71)] = {30,0x3FFFF7E2}, + [I(184,71)] = {27,0x7FFF562}, + [I(185,71)] = {29,0x1FFFF162}, + [I(186,71)] = {29,0x1FFFF1E2}, + [I(187,71)] = {29,0x1FFFF262}, + [I(188,71)] = {30,0x3FFFF862}, + [I(189,71)] = {29,0x1FFFF2E2}, + [I(190,71)] = {29,0x1FFFF362}, + [I(191,71)] = {30,0x3FFFF8E2}, + [I(192,71)] = {64,0}, + [I(193,71)] = {64,0}, + [I(194,71)] = {27,0x7FFF5E2}, + [I(195,71)] = {26,0x3FFF8E2}, + [I(196,71)] = {29,0x1FFFF3E2}, + [I(197,71)] = {30,0x3FFFF962}, + [I(198,71)] = {29,0x1FFFF462}, + [I(199,71)] = {X32,0xFFFFF662}, + [I(200,71)] = {64,0}, + [I(201,71)] = {64,0}, + [I(202,71)] = {64,0}, + [I(203,71)] = {64,0}, + [I(204,71)] = {64,0}, + [I(205,71)] = {64,0}, + [I(206,71)] = {31,0x7FFFF8E2}, + [I(207,71)] = {X32,0xFFFFF6E2}, + [I(208,71)] = {26,0x3FFF962}, + [I(209,71)] = {28,0xFFFF1E2}, + [I(210,71)] = {64,0}, + [I(211,71)] = {64,0}, + [I(212,71)] = {64,0}, + [I(213,71)] = {64,0}, + [I(214,71)] = {64,0}, + [I(215,71)] = {31,0x7FFFF962}, + [I(216,71)] = {28,0xFFFF262}, + [I(217,71)] = {28,0xFFFF2E2}, + [I(218,71)] = {64,0}, + [I(219,71)] = {64,0}, + [I(220,71)] = {64,0}, + [I(221,71)] = {64,0}, + [I(222,71)] = {64,0}, + [I(223,71)] = {64,0}, + [I(224,71)] = {27,0x7FFF662}, + [I(225,71)] = {31,0x7FFFF9E2}, + [I(226,71)] = {27,0x7FFF6E2}, + [I(227,71)] = {28,0xFFFF362}, + [I(228,71)] = {29,0x1FFFF4E2}, + [I(229,71)] = {28,0xFFFF3E2}, + [I(230,71)] = {28,0xFFFF462}, + [I(231,71)] = {30,0x3FFFF9E2}, + [I(232,71)] = {29,0x1FFFF562}, + [I(233,71)] = {29,0x1FFFF5E2}, + [I(234,71)] = {X32,0xFFFFF762}, + [I(235,71)] = {X32,0xFFFFF7E2}, + [I(236,71)] = {31,0x7FFFFA62}, + [I(237,71)] = {31,0x7FFFFAE2}, + [I(238,71)] = {64,0}, + [I(239,71)] = {30,0x3FFFFA62}, + [I(240,71)] = {64,0}, + [I(241,71)] = {64,0}, + [I(242,71)] = {64,0}, + [I(243,71)] = {64,0}, + [I(244,71)] = {64,0}, + [I(245,71)] = {64,0}, + [I(246,71)] = {64,0}, + [I(247,71)] = {64,0}, + [I(248,71)] = {64,0}, + [I(249,71)] = {64,0}, + [I(250,71)] = {64,0}, + [I(251,71)] = {64,0}, + [I(252,71)] = {64,0}, + [I(253,71)] = {64,0}, + [I(254,71)] = {64,0}, + [I(255,71)] = {64,0}, + [I(0,72)] = {20,0xFFC63}, + [I(1,72)] = {30,0x3FFFEC63}, + [I(2,72)] = {64,0}, + [I(3,72)] = {64,0}, + [I(4,72)] = {64,0}, + [I(5,72)] = {64,0}, + [I(6,72)] = {64,0}, + [I(7,72)] = {64,0}, + [I(8,72)] = {64,0}, + [I(9,72)] = {31,0x7FFFF563}, + [I(10,72)] = {64,0}, + [I(11,72)] = {64,0}, + [I(12,72)] = {64,0}, + [I(13,72)] = {64,0}, + [I(14,72)] = {64,0}, + [I(15,72)] = {64,0}, + [I(16,72)] = {64,0}, + [I(17,72)] = {64,0}, + [I(18,72)] = {64,0}, + [I(19,72)] = {64,0}, + [I(20,72)] = {64,0}, + [I(21,72)] = {64,0}, + [I(22,72)] = {64,0}, + [I(23,72)] = {64,0}, + [I(24,72)] = {64,0}, + [I(25,72)] = {64,0}, + [I(26,72)] = {64,0}, + [I(27,72)] = {64,0}, + [I(28,72)] = {64,0}, + [I(29,72)] = {64,0}, + [I(30,72)] = {64,0}, + [I(31,72)] = {64,0}, + [I(32,72)] = {13,0xA63}, + [I(33,72)] = {17,0x1FC63}, + [I(34,72)] = {17,0x1FCE3}, + [I(35,72)] = {19,0x7FD63}, + [I(36,72)] = {20,0xFFCE3}, + [I(37,72)] = {13,0xAE3}, + [I(38,72)] = {15,0x7C63}, + [I(39,72)] = {18,0x3FD63}, + [I(40,72)] = {17,0x1FD63}, + [I(41,72)] = {17,0x1FDE3}, + [I(42,72)] = {15,0x7CE3}, + [I(43,72)] = {18,0x3FDE3}, + [I(44,72)] = {15,0x7D63}, + [I(45,72)] = {13,0xB63}, + [I(46,72)] = {13,0xBE3}, + [I(47,72)] = {13,0xC63}, + [I(48,72)] = {12,0x63}, + [I(49,72)] = {12,0xE3}, + [I(50,72)] = {12,0x163}, + [I(51,72)] = {13,0xCE3}, + [I(52,72)] = {13,0xD63}, + [I(53,72)] = {13,0xDE3}, + [I(54,72)] = {13,0xE63}, + [I(55,72)] = {13,0xEE3}, + [I(56,72)] = {13,0xF63}, + [I(57,72)] = {13,0xFE3}, + [I(58,72)] = {14,0x2E63}, + [I(59,72)] = {15,0x7DE3}, + [I(60,72)] = {22,0x3FFE63}, + [I(61,72)] = {13,0x1063}, + [I(62,72)] = {19,0x7FDE3}, + [I(63,72)] = {17,0x1FE63}, + [I(64,72)] = {20,0xFFD63}, + [I(65,72)] = {13,0x10E3}, + [I(66,72)] = {14,0x2EE3}, + [I(67,72)] = {14,0x2F63}, + [I(68,72)] = {14,0x2FE3}, + [I(69,72)] = {14,0x3063}, + [I(70,72)] = {14,0x30E3}, + [I(71,72)] = {14,0x3163}, + [I(72,72)] = {14,0x31E3}, + [I(73,72)] = {14,0x3263}, + [I(74,72)] = {14,0x32E3}, + [I(75,72)] = {14,0x3363}, + [I(76,72)] = {14,0x33E3}, + [I(77,72)] = {14,0x3463}, + [I(78,72)] = {14,0x34E3}, + [I(79,72)] = {14,0x3563}, + [I(80,72)] = {14,0x35E3}, + [I(81,72)] = {14,0x3663}, + [I(82,72)] = {14,0x36E3}, + [I(83,72)] = {14,0x3763}, + [I(84,72)] = {14,0x37E3}, + [I(85,72)] = {14,0x3863}, + [I(86,72)] = {14,0x38E3}, + [I(87,72)] = {14,0x3963}, + [I(88,72)] = {15,0x7E63}, + [I(89,72)] = {14,0x39E3}, + [I(90,72)] = {15,0x7EE3}, + [I(91,72)] = {20,0xFFDE3}, + [I(92,72)] = {26,0x3FFF863}, + [I(93,72)] = {20,0xFFE63}, + [I(94,72)] = {21,0x1FFE63}, + [I(95,72)] = {13,0x1163}, + [I(96,72)] = {22,0x3FFEE3}, + [I(97,72)] = {12,0x1E3}, + [I(98,72)] = {13,0x11E3}, + [I(99,72)] = {12,0x263}, + [I(100,72)] = {13,0x1263}, + [I(101,72)] = {12,0x2E3}, + [I(102,72)] = {13,0x12E3}, + [I(103,72)] = {13,0x1363}, + [I(104,72)] = {13,0x13E3}, + [I(105,72)] = {12,0x363}, + [I(106,72)] = {14,0x3A63}, + [I(107,72)] = {14,0x3AE3}, + [I(108,72)] = {13,0x1463}, + [I(109,72)] = {13,0x14E3}, + [I(110,72)] = {13,0x1563}, + [I(111,72)] = {12,0x3E3}, + [I(112,72)] = {13,0x15E3}, + [I(113,72)] = {14,0x3B63}, + [I(114,72)] = {13,0x1663}, + [I(115,72)] = {12,0x463}, + [I(116,72)] = {12,0x4E3}, + [I(117,72)] = {13,0x16E3}, + [I(118,72)] = {14,0x3BE3}, + [I(119,72)] = {14,0x3C63}, + [I(120,72)] = {14,0x3CE3}, + [I(121,72)] = {14,0x3D63}, + [I(122,72)] = {14,0x3DE3}, + [I(123,72)] = {22,0x3FFF63}, + [I(124,72)] = {18,0x3FE63}, + [I(125,72)] = {21,0x1FFEE3}, + [I(126,72)] = {20,0xFFEE3}, + [I(127,72)] = {64,0}, + [I(128,72)] = {27,0x7FFF363}, + [I(129,72)] = {29,0x1FFFE963}, + [I(130,72)] = {27,0x7FFF3E3}, + [I(131,72)] = {27,0x7FFF463}, + [I(132,72)] = {29,0x1FFFE9E3}, + [I(133,72)] = {29,0x1FFFEA63}, + [I(134,72)] = {29,0x1FFFEAE3}, + [I(135,72)] = {30,0x3FFFECE3}, + [I(136,72)] = {29,0x1FFFEB63}, + [I(137,72)] = {30,0x3FFFED63}, + [I(138,72)] = {30,0x3FFFEDE3}, + [I(139,72)] = {30,0x3FFFEE63}, + [I(140,72)] = {30,0x3FFFEEE3}, + [I(141,72)] = {30,0x3FFFEF63}, + [I(142,72)] = {31,0x7FFFF5E3}, + [I(143,72)] = {30,0x3FFFEFE3}, + [I(144,72)] = {31,0x7FFFF663}, + [I(145,72)] = {31,0x7FFFF6E3}, + [I(146,72)] = {29,0x1FFFEBE3}, + [I(147,72)] = {30,0x3FFFF063}, + [I(148,72)] = {31,0x7FFFF763}, + [I(149,72)] = {30,0x3FFFF0E3}, + [I(150,72)] = {30,0x3FFFF163}, + [I(151,72)] = {30,0x3FFFF1E3}, + [I(152,72)] = {30,0x3FFFF263}, + [I(153,72)] = {28,0xFFFEE63}, + [I(154,72)] = {29,0x1FFFEC63}, + [I(155,72)] = {30,0x3FFFF2E3}, + [I(156,72)] = {29,0x1FFFECE3}, + [I(157,72)] = {30,0x3FFFF363}, + [I(158,72)] = {30,0x3FFFF3E3}, + [I(159,72)] = {31,0x7FFFF7E3}, + [I(160,72)] = {29,0x1FFFED63}, + [I(161,72)] = {28,0xFFFEEE3}, + [I(162,72)] = {27,0x7FFF4E3}, + [I(163,72)] = {29,0x1FFFEDE3}, + [I(164,72)] = {29,0x1FFFEE63}, + [I(165,72)] = {30,0x3FFFF463}, + [I(166,72)] = {30,0x3FFFF4E3}, + [I(167,72)] = {28,0xFFFEF63}, + [I(168,72)] = {30,0x3FFFF563}, + [I(169,72)] = {29,0x1FFFEEE3}, + [I(170,72)] = {29,0x1FFFEF63}, + [I(171,72)] = {31,0x7FFFF863}, + [I(172,72)] = {28,0xFFFEFE3}, + [I(173,72)] = {29,0x1FFFEFE3}, + [I(174,72)] = {30,0x3FFFF5E3}, + [I(175,72)] = {30,0x3FFFF663}, + [I(176,72)] = {28,0xFFFF063}, + [I(177,72)] = {28,0xFFFF0E3}, + [I(178,72)] = {29,0x1FFFF063}, + [I(179,72)] = {28,0xFFFF163}, + [I(180,72)] = {30,0x3FFFF6E3}, + [I(181,72)] = {29,0x1FFFF0E3}, + [I(182,72)] = {30,0x3FFFF763}, + [I(183,72)] = {30,0x3FFFF7E3}, + [I(184,72)] = {27,0x7FFF563}, + [I(185,72)] = {29,0x1FFFF163}, + [I(186,72)] = {29,0x1FFFF1E3}, + [I(187,72)] = {29,0x1FFFF263}, + [I(188,72)] = {30,0x3FFFF863}, + [I(189,72)] = {29,0x1FFFF2E3}, + [I(190,72)] = {29,0x1FFFF363}, + [I(191,72)] = {30,0x3FFFF8E3}, + [I(192,72)] = {64,0}, + [I(193,72)] = {64,0}, + [I(194,72)] = {27,0x7FFF5E3}, + [I(195,72)] = {26,0x3FFF8E3}, + [I(196,72)] = {29,0x1FFFF3E3}, + [I(197,72)] = {30,0x3FFFF963}, + [I(198,72)] = {29,0x1FFFF463}, + [I(199,72)] = {X32,0xFFFFF663}, + [I(200,72)] = {64,0}, + [I(201,72)] = {64,0}, + [I(202,72)] = {64,0}, + [I(203,72)] = {64,0}, + [I(204,72)] = {64,0}, + [I(205,72)] = {64,0}, + [I(206,72)] = {31,0x7FFFF8E3}, + [I(207,72)] = {X32,0xFFFFF6E3}, + [I(208,72)] = {26,0x3FFF963}, + [I(209,72)] = {28,0xFFFF1E3}, + [I(210,72)] = {64,0}, + [I(211,72)] = {64,0}, + [I(212,72)] = {64,0}, + [I(213,72)] = {64,0}, + [I(214,72)] = {64,0}, + [I(215,72)] = {31,0x7FFFF963}, + [I(216,72)] = {28,0xFFFF263}, + [I(217,72)] = {28,0xFFFF2E3}, + [I(218,72)] = {64,0}, + [I(219,72)] = {64,0}, + [I(220,72)] = {64,0}, + [I(221,72)] = {64,0}, + [I(222,72)] = {64,0}, + [I(223,72)] = {64,0}, + [I(224,72)] = {27,0x7FFF663}, + [I(225,72)] = {31,0x7FFFF9E3}, + [I(226,72)] = {27,0x7FFF6E3}, + [I(227,72)] = {28,0xFFFF363}, + [I(228,72)] = {29,0x1FFFF4E3}, + [I(229,72)] = {28,0xFFFF3E3}, + [I(230,72)] = {28,0xFFFF463}, + [I(231,72)] = {30,0x3FFFF9E3}, + [I(232,72)] = {29,0x1FFFF563}, + [I(233,72)] = {29,0x1FFFF5E3}, + [I(234,72)] = {X32,0xFFFFF763}, + [I(235,72)] = {X32,0xFFFFF7E3}, + [I(236,72)] = {31,0x7FFFFA63}, + [I(237,72)] = {31,0x7FFFFAE3}, + [I(238,72)] = {64,0}, + [I(239,72)] = {30,0x3FFFFA63}, + [I(240,72)] = {64,0}, + [I(241,72)] = {64,0}, + [I(242,72)] = {64,0}, + [I(243,72)] = {64,0}, + [I(244,72)] = {64,0}, + [I(245,72)] = {64,0}, + [I(246,72)] = {64,0}, + [I(247,72)] = {64,0}, + [I(248,72)] = {64,0}, + [I(249,72)] = {64,0}, + [I(250,72)] = {64,0}, + [I(251,72)] = {64,0}, + [I(252,72)] = {64,0}, + [I(253,72)] = {64,0}, + [I(254,72)] = {64,0}, + [I(255,72)] = {64,0}, + [I(0,73)] = {20,0xFFC64}, + [I(1,73)] = {30,0x3FFFEC64}, + [I(2,73)] = {64,0}, + [I(3,73)] = {64,0}, + [I(4,73)] = {64,0}, + [I(5,73)] = {64,0}, + [I(6,73)] = {64,0}, + [I(7,73)] = {64,0}, + [I(8,73)] = {64,0}, + [I(9,73)] = {31,0x7FFFF564}, + [I(10,73)] = {64,0}, + [I(11,73)] = {64,0}, + [I(12,73)] = {64,0}, + [I(13,73)] = {64,0}, + [I(14,73)] = {64,0}, + [I(15,73)] = {64,0}, + [I(16,73)] = {64,0}, + [I(17,73)] = {64,0}, + [I(18,73)] = {64,0}, + [I(19,73)] = {64,0}, + [I(20,73)] = {64,0}, + [I(21,73)] = {64,0}, + [I(22,73)] = {64,0}, + [I(23,73)] = {64,0}, + [I(24,73)] = {64,0}, + [I(25,73)] = {64,0}, + [I(26,73)] = {64,0}, + [I(27,73)] = {64,0}, + [I(28,73)] = {64,0}, + [I(29,73)] = {64,0}, + [I(30,73)] = {64,0}, + [I(31,73)] = {64,0}, + [I(32,73)] = {13,0xA64}, + [I(33,73)] = {17,0x1FC64}, + [I(34,73)] = {17,0x1FCE4}, + [I(35,73)] = {19,0x7FD64}, + [I(36,73)] = {20,0xFFCE4}, + [I(37,73)] = {13,0xAE4}, + [I(38,73)] = {15,0x7C64}, + [I(39,73)] = {18,0x3FD64}, + [I(40,73)] = {17,0x1FD64}, + [I(41,73)] = {17,0x1FDE4}, + [I(42,73)] = {15,0x7CE4}, + [I(43,73)] = {18,0x3FDE4}, + [I(44,73)] = {15,0x7D64}, + [I(45,73)] = {13,0xB64}, + [I(46,73)] = {13,0xBE4}, + [I(47,73)] = {13,0xC64}, + [I(48,73)] = {12,0x64}, + [I(49,73)] = {12,0xE4}, + [I(50,73)] = {12,0x164}, + [I(51,73)] = {13,0xCE4}, + [I(52,73)] = {13,0xD64}, + [I(53,73)] = {13,0xDE4}, + [I(54,73)] = {13,0xE64}, + [I(55,73)] = {13,0xEE4}, + [I(56,73)] = {13,0xF64}, + [I(57,73)] = {13,0xFE4}, + [I(58,73)] = {14,0x2E64}, + [I(59,73)] = {15,0x7DE4}, + [I(60,73)] = {22,0x3FFE64}, + [I(61,73)] = {13,0x1064}, + [I(62,73)] = {19,0x7FDE4}, + [I(63,73)] = {17,0x1FE64}, + [I(64,73)] = {20,0xFFD64}, + [I(65,73)] = {13,0x10E4}, + [I(66,73)] = {14,0x2EE4}, + [I(67,73)] = {14,0x2F64}, + [I(68,73)] = {14,0x2FE4}, + [I(69,73)] = {14,0x3064}, + [I(70,73)] = {14,0x30E4}, + [I(71,73)] = {14,0x3164}, + [I(72,73)] = {14,0x31E4}, + [I(73,73)] = {14,0x3264}, + [I(74,73)] = {14,0x32E4}, + [I(75,73)] = {14,0x3364}, + [I(76,73)] = {14,0x33E4}, + [I(77,73)] = {14,0x3464}, + [I(78,73)] = {14,0x34E4}, + [I(79,73)] = {14,0x3564}, + [I(80,73)] = {14,0x35E4}, + [I(81,73)] = {14,0x3664}, + [I(82,73)] = {14,0x36E4}, + [I(83,73)] = {14,0x3764}, + [I(84,73)] = {14,0x37E4}, + [I(85,73)] = {14,0x3864}, + [I(86,73)] = {14,0x38E4}, + [I(87,73)] = {14,0x3964}, + [I(88,73)] = {15,0x7E64}, + [I(89,73)] = {14,0x39E4}, + [I(90,73)] = {15,0x7EE4}, + [I(91,73)] = {20,0xFFDE4}, + [I(92,73)] = {26,0x3FFF864}, + [I(93,73)] = {20,0xFFE64}, + [I(94,73)] = {21,0x1FFE64}, + [I(95,73)] = {13,0x1164}, + [I(96,73)] = {22,0x3FFEE4}, + [I(97,73)] = {12,0x1E4}, + [I(98,73)] = {13,0x11E4}, + [I(99,73)] = {12,0x264}, + [I(100,73)] = {13,0x1264}, + [I(101,73)] = {12,0x2E4}, + [I(102,73)] = {13,0x12E4}, + [I(103,73)] = {13,0x1364}, + [I(104,73)] = {13,0x13E4}, + [I(105,73)] = {12,0x364}, + [I(106,73)] = {14,0x3A64}, + [I(107,73)] = {14,0x3AE4}, + [I(108,73)] = {13,0x1464}, + [I(109,73)] = {13,0x14E4}, + [I(110,73)] = {13,0x1564}, + [I(111,73)] = {12,0x3E4}, + [I(112,73)] = {13,0x15E4}, + [I(113,73)] = {14,0x3B64}, + [I(114,73)] = {13,0x1664}, + [I(115,73)] = {12,0x464}, + [I(116,73)] = {12,0x4E4}, + [I(117,73)] = {13,0x16E4}, + [I(118,73)] = {14,0x3BE4}, + [I(119,73)] = {14,0x3C64}, + [I(120,73)] = {14,0x3CE4}, + [I(121,73)] = {14,0x3D64}, + [I(122,73)] = {14,0x3DE4}, + [I(123,73)] = {22,0x3FFF64}, + [I(124,73)] = {18,0x3FE64}, + [I(125,73)] = {21,0x1FFEE4}, + [I(126,73)] = {20,0xFFEE4}, + [I(127,73)] = {64,0}, + [I(128,73)] = {27,0x7FFF364}, + [I(129,73)] = {29,0x1FFFE964}, + [I(130,73)] = {27,0x7FFF3E4}, + [I(131,73)] = {27,0x7FFF464}, + [I(132,73)] = {29,0x1FFFE9E4}, + [I(133,73)] = {29,0x1FFFEA64}, + [I(134,73)] = {29,0x1FFFEAE4}, + [I(135,73)] = {30,0x3FFFECE4}, + [I(136,73)] = {29,0x1FFFEB64}, + [I(137,73)] = {30,0x3FFFED64}, + [I(138,73)] = {30,0x3FFFEDE4}, + [I(139,73)] = {30,0x3FFFEE64}, + [I(140,73)] = {30,0x3FFFEEE4}, + [I(141,73)] = {30,0x3FFFEF64}, + [I(142,73)] = {31,0x7FFFF5E4}, + [I(143,73)] = {30,0x3FFFEFE4}, + [I(144,73)] = {31,0x7FFFF664}, + [I(145,73)] = {31,0x7FFFF6E4}, + [I(146,73)] = {29,0x1FFFEBE4}, + [I(147,73)] = {30,0x3FFFF064}, + [I(148,73)] = {31,0x7FFFF764}, + [I(149,73)] = {30,0x3FFFF0E4}, + [I(150,73)] = {30,0x3FFFF164}, + [I(151,73)] = {30,0x3FFFF1E4}, + [I(152,73)] = {30,0x3FFFF264}, + [I(153,73)] = {28,0xFFFEE64}, + [I(154,73)] = {29,0x1FFFEC64}, + [I(155,73)] = {30,0x3FFFF2E4}, + [I(156,73)] = {29,0x1FFFECE4}, + [I(157,73)] = {30,0x3FFFF364}, + [I(158,73)] = {30,0x3FFFF3E4}, + [I(159,73)] = {31,0x7FFFF7E4}, + [I(160,73)] = {29,0x1FFFED64}, + [I(161,73)] = {28,0xFFFEEE4}, + [I(162,73)] = {27,0x7FFF4E4}, + [I(163,73)] = {29,0x1FFFEDE4}, + [I(164,73)] = {29,0x1FFFEE64}, + [I(165,73)] = {30,0x3FFFF464}, + [I(166,73)] = {30,0x3FFFF4E4}, + [I(167,73)] = {28,0xFFFEF64}, + [I(168,73)] = {30,0x3FFFF564}, + [I(169,73)] = {29,0x1FFFEEE4}, + [I(170,73)] = {29,0x1FFFEF64}, + [I(171,73)] = {31,0x7FFFF864}, + [I(172,73)] = {28,0xFFFEFE4}, + [I(173,73)] = {29,0x1FFFEFE4}, + [I(174,73)] = {30,0x3FFFF5E4}, + [I(175,73)] = {30,0x3FFFF664}, + [I(176,73)] = {28,0xFFFF064}, + [I(177,73)] = {28,0xFFFF0E4}, + [I(178,73)] = {29,0x1FFFF064}, + [I(179,73)] = {28,0xFFFF164}, + [I(180,73)] = {30,0x3FFFF6E4}, + [I(181,73)] = {29,0x1FFFF0E4}, + [I(182,73)] = {30,0x3FFFF764}, + [I(183,73)] = {30,0x3FFFF7E4}, + [I(184,73)] = {27,0x7FFF564}, + [I(185,73)] = {29,0x1FFFF164}, + [I(186,73)] = {29,0x1FFFF1E4}, + [I(187,73)] = {29,0x1FFFF264}, + [I(188,73)] = {30,0x3FFFF864}, + [I(189,73)] = {29,0x1FFFF2E4}, + [I(190,73)] = {29,0x1FFFF364}, + [I(191,73)] = {30,0x3FFFF8E4}, + [I(192,73)] = {64,0}, + [I(193,73)] = {64,0}, + [I(194,73)] = {27,0x7FFF5E4}, + [I(195,73)] = {26,0x3FFF8E4}, + [I(196,73)] = {29,0x1FFFF3E4}, + [I(197,73)] = {30,0x3FFFF964}, + [I(198,73)] = {29,0x1FFFF464}, + [I(199,73)] = {X32,0xFFFFF664}, + [I(200,73)] = {64,0}, + [I(201,73)] = {64,0}, + [I(202,73)] = {64,0}, + [I(203,73)] = {64,0}, + [I(204,73)] = {64,0}, + [I(205,73)] = {64,0}, + [I(206,73)] = {31,0x7FFFF8E4}, + [I(207,73)] = {X32,0xFFFFF6E4}, + [I(208,73)] = {26,0x3FFF964}, + [I(209,73)] = {28,0xFFFF1E4}, + [I(210,73)] = {64,0}, + [I(211,73)] = {64,0}, + [I(212,73)] = {64,0}, + [I(213,73)] = {64,0}, + [I(214,73)] = {64,0}, + [I(215,73)] = {31,0x7FFFF964}, + [I(216,73)] = {28,0xFFFF264}, + [I(217,73)] = {28,0xFFFF2E4}, + [I(218,73)] = {64,0}, + [I(219,73)] = {64,0}, + [I(220,73)] = {64,0}, + [I(221,73)] = {64,0}, + [I(222,73)] = {64,0}, + [I(223,73)] = {64,0}, + [I(224,73)] = {27,0x7FFF664}, + [I(225,73)] = {31,0x7FFFF9E4}, + [I(226,73)] = {27,0x7FFF6E4}, + [I(227,73)] = {28,0xFFFF364}, + [I(228,73)] = {29,0x1FFFF4E4}, + [I(229,73)] = {28,0xFFFF3E4}, + [I(230,73)] = {28,0xFFFF464}, + [I(231,73)] = {30,0x3FFFF9E4}, + [I(232,73)] = {29,0x1FFFF564}, + [I(233,73)] = {29,0x1FFFF5E4}, + [I(234,73)] = {X32,0xFFFFF764}, + [I(235,73)] = {X32,0xFFFFF7E4}, + [I(236,73)] = {31,0x7FFFFA64}, + [I(237,73)] = {31,0x7FFFFAE4}, + [I(238,73)] = {64,0}, + [I(239,73)] = {30,0x3FFFFA64}, + [I(240,73)] = {64,0}, + [I(241,73)] = {64,0}, + [I(242,73)] = {64,0}, + [I(243,73)] = {64,0}, + [I(244,73)] = {64,0}, + [I(245,73)] = {64,0}, + [I(246,73)] = {64,0}, + [I(247,73)] = {64,0}, + [I(248,73)] = {64,0}, + [I(249,73)] = {64,0}, + [I(250,73)] = {64,0}, + [I(251,73)] = {64,0}, + [I(252,73)] = {64,0}, + [I(253,73)] = {64,0}, + [I(254,73)] = {64,0}, + [I(255,73)] = {64,0}, + [I(0,74)] = {20,0xFFC65}, + [I(1,74)] = {30,0x3FFFEC65}, + [I(2,74)] = {64,0}, + [I(3,74)] = {64,0}, + [I(4,74)] = {64,0}, + [I(5,74)] = {64,0}, + [I(6,74)] = {64,0}, + [I(7,74)] = {64,0}, + [I(8,74)] = {64,0}, + [I(9,74)] = {31,0x7FFFF565}, + [I(10,74)] = {64,0}, + [I(11,74)] = {64,0}, + [I(12,74)] = {64,0}, + [I(13,74)] = {64,0}, + [I(14,74)] = {64,0}, + [I(15,74)] = {64,0}, + [I(16,74)] = {64,0}, + [I(17,74)] = {64,0}, + [I(18,74)] = {64,0}, + [I(19,74)] = {64,0}, + [I(20,74)] = {64,0}, + [I(21,74)] = {64,0}, + [I(22,74)] = {64,0}, + [I(23,74)] = {64,0}, + [I(24,74)] = {64,0}, + [I(25,74)] = {64,0}, + [I(26,74)] = {64,0}, + [I(27,74)] = {64,0}, + [I(28,74)] = {64,0}, + [I(29,74)] = {64,0}, + [I(30,74)] = {64,0}, + [I(31,74)] = {64,0}, + [I(32,74)] = {13,0xA65}, + [I(33,74)] = {17,0x1FC65}, + [I(34,74)] = {17,0x1FCE5}, + [I(35,74)] = {19,0x7FD65}, + [I(36,74)] = {20,0xFFCE5}, + [I(37,74)] = {13,0xAE5}, + [I(38,74)] = {15,0x7C65}, + [I(39,74)] = {18,0x3FD65}, + [I(40,74)] = {17,0x1FD65}, + [I(41,74)] = {17,0x1FDE5}, + [I(42,74)] = {15,0x7CE5}, + [I(43,74)] = {18,0x3FDE5}, + [I(44,74)] = {15,0x7D65}, + [I(45,74)] = {13,0xB65}, + [I(46,74)] = {13,0xBE5}, + [I(47,74)] = {13,0xC65}, + [I(48,74)] = {12,0x65}, + [I(49,74)] = {12,0xE5}, + [I(50,74)] = {12,0x165}, + [I(51,74)] = {13,0xCE5}, + [I(52,74)] = {13,0xD65}, + [I(53,74)] = {13,0xDE5}, + [I(54,74)] = {13,0xE65}, + [I(55,74)] = {13,0xEE5}, + [I(56,74)] = {13,0xF65}, + [I(57,74)] = {13,0xFE5}, + [I(58,74)] = {14,0x2E65}, + [I(59,74)] = {15,0x7DE5}, + [I(60,74)] = {22,0x3FFE65}, + [I(61,74)] = {13,0x1065}, + [I(62,74)] = {19,0x7FDE5}, + [I(63,74)] = {17,0x1FE65}, + [I(64,74)] = {20,0xFFD65}, + [I(65,74)] = {13,0x10E5}, + [I(66,74)] = {14,0x2EE5}, + [I(67,74)] = {14,0x2F65}, + [I(68,74)] = {14,0x2FE5}, + [I(69,74)] = {14,0x3065}, + [I(70,74)] = {14,0x30E5}, + [I(71,74)] = {14,0x3165}, + [I(72,74)] = {14,0x31E5}, + [I(73,74)] = {14,0x3265}, + [I(74,74)] = {14,0x32E5}, + [I(75,74)] = {14,0x3365}, + [I(76,74)] = {14,0x33E5}, + [I(77,74)] = {14,0x3465}, + [I(78,74)] = {14,0x34E5}, + [I(79,74)] = {14,0x3565}, + [I(80,74)] = {14,0x35E5}, + [I(81,74)] = {14,0x3665}, + [I(82,74)] = {14,0x36E5}, + [I(83,74)] = {14,0x3765}, + [I(84,74)] = {14,0x37E5}, + [I(85,74)] = {14,0x3865}, + [I(86,74)] = {14,0x38E5}, + [I(87,74)] = {14,0x3965}, + [I(88,74)] = {15,0x7E65}, + [I(89,74)] = {14,0x39E5}, + [I(90,74)] = {15,0x7EE5}, + [I(91,74)] = {20,0xFFDE5}, + [I(92,74)] = {26,0x3FFF865}, + [I(93,74)] = {20,0xFFE65}, + [I(94,74)] = {21,0x1FFE65}, + [I(95,74)] = {13,0x1165}, + [I(96,74)] = {22,0x3FFEE5}, + [I(97,74)] = {12,0x1E5}, + [I(98,74)] = {13,0x11E5}, + [I(99,74)] = {12,0x265}, + [I(100,74)] = {13,0x1265}, + [I(101,74)] = {12,0x2E5}, + [I(102,74)] = {13,0x12E5}, + [I(103,74)] = {13,0x1365}, + [I(104,74)] = {13,0x13E5}, + [I(105,74)] = {12,0x365}, + [I(106,74)] = {14,0x3A65}, + [I(107,74)] = {14,0x3AE5}, + [I(108,74)] = {13,0x1465}, + [I(109,74)] = {13,0x14E5}, + [I(110,74)] = {13,0x1565}, + [I(111,74)] = {12,0x3E5}, + [I(112,74)] = {13,0x15E5}, + [I(113,74)] = {14,0x3B65}, + [I(114,74)] = {13,0x1665}, + [I(115,74)] = {12,0x465}, + [I(116,74)] = {12,0x4E5}, + [I(117,74)] = {13,0x16E5}, + [I(118,74)] = {14,0x3BE5}, + [I(119,74)] = {14,0x3C65}, + [I(120,74)] = {14,0x3CE5}, + [I(121,74)] = {14,0x3D65}, + [I(122,74)] = {14,0x3DE5}, + [I(123,74)] = {22,0x3FFF65}, + [I(124,74)] = {18,0x3FE65}, + [I(125,74)] = {21,0x1FFEE5}, + [I(126,74)] = {20,0xFFEE5}, + [I(127,74)] = {64,0}, + [I(128,74)] = {27,0x7FFF365}, + [I(129,74)] = {29,0x1FFFE965}, + [I(130,74)] = {27,0x7FFF3E5}, + [I(131,74)] = {27,0x7FFF465}, + [I(132,74)] = {29,0x1FFFE9E5}, + [I(133,74)] = {29,0x1FFFEA65}, + [I(134,74)] = {29,0x1FFFEAE5}, + [I(135,74)] = {30,0x3FFFECE5}, + [I(136,74)] = {29,0x1FFFEB65}, + [I(137,74)] = {30,0x3FFFED65}, + [I(138,74)] = {30,0x3FFFEDE5}, + [I(139,74)] = {30,0x3FFFEE65}, + [I(140,74)] = {30,0x3FFFEEE5}, + [I(141,74)] = {30,0x3FFFEF65}, + [I(142,74)] = {31,0x7FFFF5E5}, + [I(143,74)] = {30,0x3FFFEFE5}, + [I(144,74)] = {31,0x7FFFF665}, + [I(145,74)] = {31,0x7FFFF6E5}, + [I(146,74)] = {29,0x1FFFEBE5}, + [I(147,74)] = {30,0x3FFFF065}, + [I(148,74)] = {31,0x7FFFF765}, + [I(149,74)] = {30,0x3FFFF0E5}, + [I(150,74)] = {30,0x3FFFF165}, + [I(151,74)] = {30,0x3FFFF1E5}, + [I(152,74)] = {30,0x3FFFF265}, + [I(153,74)] = {28,0xFFFEE65}, + [I(154,74)] = {29,0x1FFFEC65}, + [I(155,74)] = {30,0x3FFFF2E5}, + [I(156,74)] = {29,0x1FFFECE5}, + [I(157,74)] = {30,0x3FFFF365}, + [I(158,74)] = {30,0x3FFFF3E5}, + [I(159,74)] = {31,0x7FFFF7E5}, + [I(160,74)] = {29,0x1FFFED65}, + [I(161,74)] = {28,0xFFFEEE5}, + [I(162,74)] = {27,0x7FFF4E5}, + [I(163,74)] = {29,0x1FFFEDE5}, + [I(164,74)] = {29,0x1FFFEE65}, + [I(165,74)] = {30,0x3FFFF465}, + [I(166,74)] = {30,0x3FFFF4E5}, + [I(167,74)] = {28,0xFFFEF65}, + [I(168,74)] = {30,0x3FFFF565}, + [I(169,74)] = {29,0x1FFFEEE5}, + [I(170,74)] = {29,0x1FFFEF65}, + [I(171,74)] = {31,0x7FFFF865}, + [I(172,74)] = {28,0xFFFEFE5}, + [I(173,74)] = {29,0x1FFFEFE5}, + [I(174,74)] = {30,0x3FFFF5E5}, + [I(175,74)] = {30,0x3FFFF665}, + [I(176,74)] = {28,0xFFFF065}, + [I(177,74)] = {28,0xFFFF0E5}, + [I(178,74)] = {29,0x1FFFF065}, + [I(179,74)] = {28,0xFFFF165}, + [I(180,74)] = {30,0x3FFFF6E5}, + [I(181,74)] = {29,0x1FFFF0E5}, + [I(182,74)] = {30,0x3FFFF765}, + [I(183,74)] = {30,0x3FFFF7E5}, + [I(184,74)] = {27,0x7FFF565}, + [I(185,74)] = {29,0x1FFFF165}, + [I(186,74)] = {29,0x1FFFF1E5}, + [I(187,74)] = {29,0x1FFFF265}, + [I(188,74)] = {30,0x3FFFF865}, + [I(189,74)] = {29,0x1FFFF2E5}, + [I(190,74)] = {29,0x1FFFF365}, + [I(191,74)] = {30,0x3FFFF8E5}, + [I(192,74)] = {64,0}, + [I(193,74)] = {64,0}, + [I(194,74)] = {27,0x7FFF5E5}, + [I(195,74)] = {26,0x3FFF8E5}, + [I(196,74)] = {29,0x1FFFF3E5}, + [I(197,74)] = {30,0x3FFFF965}, + [I(198,74)] = {29,0x1FFFF465}, + [I(199,74)] = {X32,0xFFFFF665}, + [I(200,74)] = {64,0}, + [I(201,74)] = {64,0}, + [I(202,74)] = {64,0}, + [I(203,74)] = {64,0}, + [I(204,74)] = {64,0}, + [I(205,74)] = {64,0}, + [I(206,74)] = {31,0x7FFFF8E5}, + [I(207,74)] = {X32,0xFFFFF6E5}, + [I(208,74)] = {26,0x3FFF965}, + [I(209,74)] = {28,0xFFFF1E5}, + [I(210,74)] = {64,0}, + [I(211,74)] = {64,0}, + [I(212,74)] = {64,0}, + [I(213,74)] = {64,0}, + [I(214,74)] = {64,0}, + [I(215,74)] = {31,0x7FFFF965}, + [I(216,74)] = {28,0xFFFF265}, + [I(217,74)] = {28,0xFFFF2E5}, + [I(218,74)] = {64,0}, + [I(219,74)] = {64,0}, + [I(220,74)] = {64,0}, + [I(221,74)] = {64,0}, + [I(222,74)] = {64,0}, + [I(223,74)] = {64,0}, + [I(224,74)] = {27,0x7FFF665}, + [I(225,74)] = {31,0x7FFFF9E5}, + [I(226,74)] = {27,0x7FFF6E5}, + [I(227,74)] = {28,0xFFFF365}, + [I(228,74)] = {29,0x1FFFF4E5}, + [I(229,74)] = {28,0xFFFF3E5}, + [I(230,74)] = {28,0xFFFF465}, + [I(231,74)] = {30,0x3FFFF9E5}, + [I(232,74)] = {29,0x1FFFF565}, + [I(233,74)] = {29,0x1FFFF5E5}, + [I(234,74)] = {X32,0xFFFFF765}, + [I(235,74)] = {X32,0xFFFFF7E5}, + [I(236,74)] = {31,0x7FFFFA65}, + [I(237,74)] = {31,0x7FFFFAE5}, + [I(238,74)] = {64,0}, + [I(239,74)] = {30,0x3FFFFA65}, + [I(240,74)] = {64,0}, + [I(241,74)] = {64,0}, + [I(242,74)] = {64,0}, + [I(243,74)] = {64,0}, + [I(244,74)] = {64,0}, + [I(245,74)] = {64,0}, + [I(246,74)] = {64,0}, + [I(247,74)] = {64,0}, + [I(248,74)] = {64,0}, + [I(249,74)] = {64,0}, + [I(250,74)] = {64,0}, + [I(251,74)] = {64,0}, + [I(252,74)] = {64,0}, + [I(253,74)] = {64,0}, + [I(254,74)] = {64,0}, + [I(255,74)] = {64,0}, + [I(0,75)] = {20,0xFFC66}, + [I(1,75)] = {30,0x3FFFEC66}, + [I(2,75)] = {64,0}, + [I(3,75)] = {64,0}, + [I(4,75)] = {64,0}, + [I(5,75)] = {64,0}, + [I(6,75)] = {64,0}, + [I(7,75)] = {64,0}, + [I(8,75)] = {64,0}, + [I(9,75)] = {31,0x7FFFF566}, + [I(10,75)] = {64,0}, + [I(11,75)] = {64,0}, + [I(12,75)] = {64,0}, + [I(13,75)] = {64,0}, + [I(14,75)] = {64,0}, + [I(15,75)] = {64,0}, + [I(16,75)] = {64,0}, + [I(17,75)] = {64,0}, + [I(18,75)] = {64,0}, + [I(19,75)] = {64,0}, + [I(20,75)] = {64,0}, + [I(21,75)] = {64,0}, + [I(22,75)] = {64,0}, + [I(23,75)] = {64,0}, + [I(24,75)] = {64,0}, + [I(25,75)] = {64,0}, + [I(26,75)] = {64,0}, + [I(27,75)] = {64,0}, + [I(28,75)] = {64,0}, + [I(29,75)] = {64,0}, + [I(30,75)] = {64,0}, + [I(31,75)] = {64,0}, + [I(32,75)] = {13,0xA66}, + [I(33,75)] = {17,0x1FC66}, + [I(34,75)] = {17,0x1FCE6}, + [I(35,75)] = {19,0x7FD66}, + [I(36,75)] = {20,0xFFCE6}, + [I(37,75)] = {13,0xAE6}, + [I(38,75)] = {15,0x7C66}, + [I(39,75)] = {18,0x3FD66}, + [I(40,75)] = {17,0x1FD66}, + [I(41,75)] = {17,0x1FDE6}, + [I(42,75)] = {15,0x7CE6}, + [I(43,75)] = {18,0x3FDE6}, + [I(44,75)] = {15,0x7D66}, + [I(45,75)] = {13,0xB66}, + [I(46,75)] = {13,0xBE6}, + [I(47,75)] = {13,0xC66}, + [I(48,75)] = {12,0x66}, + [I(49,75)] = {12,0xE6}, + [I(50,75)] = {12,0x166}, + [I(51,75)] = {13,0xCE6}, + [I(52,75)] = {13,0xD66}, + [I(53,75)] = {13,0xDE6}, + [I(54,75)] = {13,0xE66}, + [I(55,75)] = {13,0xEE6}, + [I(56,75)] = {13,0xF66}, + [I(57,75)] = {13,0xFE6}, + [I(58,75)] = {14,0x2E66}, + [I(59,75)] = {15,0x7DE6}, + [I(60,75)] = {22,0x3FFE66}, + [I(61,75)] = {13,0x1066}, + [I(62,75)] = {19,0x7FDE6}, + [I(63,75)] = {17,0x1FE66}, + [I(64,75)] = {20,0xFFD66}, + [I(65,75)] = {13,0x10E6}, + [I(66,75)] = {14,0x2EE6}, + [I(67,75)] = {14,0x2F66}, + [I(68,75)] = {14,0x2FE6}, + [I(69,75)] = {14,0x3066}, + [I(70,75)] = {14,0x30E6}, + [I(71,75)] = {14,0x3166}, + [I(72,75)] = {14,0x31E6}, + [I(73,75)] = {14,0x3266}, + [I(74,75)] = {14,0x32E6}, + [I(75,75)] = {14,0x3366}, + [I(76,75)] = {14,0x33E6}, + [I(77,75)] = {14,0x3466}, + [I(78,75)] = {14,0x34E6}, + [I(79,75)] = {14,0x3566}, + [I(80,75)] = {14,0x35E6}, + [I(81,75)] = {14,0x3666}, + [I(82,75)] = {14,0x36E6}, + [I(83,75)] = {14,0x3766}, + [I(84,75)] = {14,0x37E6}, + [I(85,75)] = {14,0x3866}, + [I(86,75)] = {14,0x38E6}, + [I(87,75)] = {14,0x3966}, + [I(88,75)] = {15,0x7E66}, + [I(89,75)] = {14,0x39E6}, + [I(90,75)] = {15,0x7EE6}, + [I(91,75)] = {20,0xFFDE6}, + [I(92,75)] = {26,0x3FFF866}, + [I(93,75)] = {20,0xFFE66}, + [I(94,75)] = {21,0x1FFE66}, + [I(95,75)] = {13,0x1166}, + [I(96,75)] = {22,0x3FFEE6}, + [I(97,75)] = {12,0x1E6}, + [I(98,75)] = {13,0x11E6}, + [I(99,75)] = {12,0x266}, + [I(100,75)] = {13,0x1266}, + [I(101,75)] = {12,0x2E6}, + [I(102,75)] = {13,0x12E6}, + [I(103,75)] = {13,0x1366}, + [I(104,75)] = {13,0x13E6}, + [I(105,75)] = {12,0x366}, + [I(106,75)] = {14,0x3A66}, + [I(107,75)] = {14,0x3AE6}, + [I(108,75)] = {13,0x1466}, + [I(109,75)] = {13,0x14E6}, + [I(110,75)] = {13,0x1566}, + [I(111,75)] = {12,0x3E6}, + [I(112,75)] = {13,0x15E6}, + [I(113,75)] = {14,0x3B66}, + [I(114,75)] = {13,0x1666}, + [I(115,75)] = {12,0x466}, + [I(116,75)] = {12,0x4E6}, + [I(117,75)] = {13,0x16E6}, + [I(118,75)] = {14,0x3BE6}, + [I(119,75)] = {14,0x3C66}, + [I(120,75)] = {14,0x3CE6}, + [I(121,75)] = {14,0x3D66}, + [I(122,75)] = {14,0x3DE6}, + [I(123,75)] = {22,0x3FFF66}, + [I(124,75)] = {18,0x3FE66}, + [I(125,75)] = {21,0x1FFEE6}, + [I(126,75)] = {20,0xFFEE6}, + [I(127,75)] = {64,0}, + [I(128,75)] = {27,0x7FFF366}, + [I(129,75)] = {29,0x1FFFE966}, + [I(130,75)] = {27,0x7FFF3E6}, + [I(131,75)] = {27,0x7FFF466}, + [I(132,75)] = {29,0x1FFFE9E6}, + [I(133,75)] = {29,0x1FFFEA66}, + [I(134,75)] = {29,0x1FFFEAE6}, + [I(135,75)] = {30,0x3FFFECE6}, + [I(136,75)] = {29,0x1FFFEB66}, + [I(137,75)] = {30,0x3FFFED66}, + [I(138,75)] = {30,0x3FFFEDE6}, + [I(139,75)] = {30,0x3FFFEE66}, + [I(140,75)] = {30,0x3FFFEEE6}, + [I(141,75)] = {30,0x3FFFEF66}, + [I(142,75)] = {31,0x7FFFF5E6}, + [I(143,75)] = {30,0x3FFFEFE6}, + [I(144,75)] = {31,0x7FFFF666}, + [I(145,75)] = {31,0x7FFFF6E6}, + [I(146,75)] = {29,0x1FFFEBE6}, + [I(147,75)] = {30,0x3FFFF066}, + [I(148,75)] = {31,0x7FFFF766}, + [I(149,75)] = {30,0x3FFFF0E6}, + [I(150,75)] = {30,0x3FFFF166}, + [I(151,75)] = {30,0x3FFFF1E6}, + [I(152,75)] = {30,0x3FFFF266}, + [I(153,75)] = {28,0xFFFEE66}, + [I(154,75)] = {29,0x1FFFEC66}, + [I(155,75)] = {30,0x3FFFF2E6}, + [I(156,75)] = {29,0x1FFFECE6}, + [I(157,75)] = {30,0x3FFFF366}, + [I(158,75)] = {30,0x3FFFF3E6}, + [I(159,75)] = {31,0x7FFFF7E6}, + [I(160,75)] = {29,0x1FFFED66}, + [I(161,75)] = {28,0xFFFEEE6}, + [I(162,75)] = {27,0x7FFF4E6}, + [I(163,75)] = {29,0x1FFFEDE6}, + [I(164,75)] = {29,0x1FFFEE66}, + [I(165,75)] = {30,0x3FFFF466}, + [I(166,75)] = {30,0x3FFFF4E6}, + [I(167,75)] = {28,0xFFFEF66}, + [I(168,75)] = {30,0x3FFFF566}, + [I(169,75)] = {29,0x1FFFEEE6}, + [I(170,75)] = {29,0x1FFFEF66}, + [I(171,75)] = {31,0x7FFFF866}, + [I(172,75)] = {28,0xFFFEFE6}, + [I(173,75)] = {29,0x1FFFEFE6}, + [I(174,75)] = {30,0x3FFFF5E6}, + [I(175,75)] = {30,0x3FFFF666}, + [I(176,75)] = {28,0xFFFF066}, + [I(177,75)] = {28,0xFFFF0E6}, + [I(178,75)] = {29,0x1FFFF066}, + [I(179,75)] = {28,0xFFFF166}, + [I(180,75)] = {30,0x3FFFF6E6}, + [I(181,75)] = {29,0x1FFFF0E6}, + [I(182,75)] = {30,0x3FFFF766}, + [I(183,75)] = {30,0x3FFFF7E6}, + [I(184,75)] = {27,0x7FFF566}, + [I(185,75)] = {29,0x1FFFF166}, + [I(186,75)] = {29,0x1FFFF1E6}, + [I(187,75)] = {29,0x1FFFF266}, + [I(188,75)] = {30,0x3FFFF866}, + [I(189,75)] = {29,0x1FFFF2E6}, + [I(190,75)] = {29,0x1FFFF366}, + [I(191,75)] = {30,0x3FFFF8E6}, + [I(192,75)] = {64,0}, + [I(193,75)] = {64,0}, + [I(194,75)] = {27,0x7FFF5E6}, + [I(195,75)] = {26,0x3FFF8E6}, + [I(196,75)] = {29,0x1FFFF3E6}, + [I(197,75)] = {30,0x3FFFF966}, + [I(198,75)] = {29,0x1FFFF466}, + [I(199,75)] = {X32,0xFFFFF666}, + [I(200,75)] = {64,0}, + [I(201,75)] = {64,0}, + [I(202,75)] = {64,0}, + [I(203,75)] = {64,0}, + [I(204,75)] = {64,0}, + [I(205,75)] = {64,0}, + [I(206,75)] = {31,0x7FFFF8E6}, + [I(207,75)] = {X32,0xFFFFF6E6}, + [I(208,75)] = {26,0x3FFF966}, + [I(209,75)] = {28,0xFFFF1E6}, + [I(210,75)] = {64,0}, + [I(211,75)] = {64,0}, + [I(212,75)] = {64,0}, + [I(213,75)] = {64,0}, + [I(214,75)] = {64,0}, + [I(215,75)] = {31,0x7FFFF966}, + [I(216,75)] = {28,0xFFFF266}, + [I(217,75)] = {28,0xFFFF2E6}, + [I(218,75)] = {64,0}, + [I(219,75)] = {64,0}, + [I(220,75)] = {64,0}, + [I(221,75)] = {64,0}, + [I(222,75)] = {64,0}, + [I(223,75)] = {64,0}, + [I(224,75)] = {27,0x7FFF666}, + [I(225,75)] = {31,0x7FFFF9E6}, + [I(226,75)] = {27,0x7FFF6E6}, + [I(227,75)] = {28,0xFFFF366}, + [I(228,75)] = {29,0x1FFFF4E6}, + [I(229,75)] = {28,0xFFFF3E6}, + [I(230,75)] = {28,0xFFFF466}, + [I(231,75)] = {30,0x3FFFF9E6}, + [I(232,75)] = {29,0x1FFFF566}, + [I(233,75)] = {29,0x1FFFF5E6}, + [I(234,75)] = {X32,0xFFFFF766}, + [I(235,75)] = {X32,0xFFFFF7E6}, + [I(236,75)] = {31,0x7FFFFA66}, + [I(237,75)] = {31,0x7FFFFAE6}, + [I(238,75)] = {64,0}, + [I(239,75)] = {30,0x3FFFFA66}, + [I(240,75)] = {64,0}, + [I(241,75)] = {64,0}, + [I(242,75)] = {64,0}, + [I(243,75)] = {64,0}, + [I(244,75)] = {64,0}, + [I(245,75)] = {64,0}, + [I(246,75)] = {64,0}, + [I(247,75)] = {64,0}, + [I(248,75)] = {64,0}, + [I(249,75)] = {64,0}, + [I(250,75)] = {64,0}, + [I(251,75)] = {64,0}, + [I(252,75)] = {64,0}, + [I(253,75)] = {64,0}, + [I(254,75)] = {64,0}, + [I(255,75)] = {64,0}, + [I(0,76)] = {20,0xFFC67}, + [I(1,76)] = {30,0x3FFFEC67}, + [I(2,76)] = {64,0}, + [I(3,76)] = {64,0}, + [I(4,76)] = {64,0}, + [I(5,76)] = {64,0}, + [I(6,76)] = {64,0}, + [I(7,76)] = {64,0}, + [I(8,76)] = {64,0}, + [I(9,76)] = {31,0x7FFFF567}, + [I(10,76)] = {64,0}, + [I(11,76)] = {64,0}, + [I(12,76)] = {64,0}, + [I(13,76)] = {64,0}, + [I(14,76)] = {64,0}, + [I(15,76)] = {64,0}, + [I(16,76)] = {64,0}, + [I(17,76)] = {64,0}, + [I(18,76)] = {64,0}, + [I(19,76)] = {64,0}, + [I(20,76)] = {64,0}, + [I(21,76)] = {64,0}, + [I(22,76)] = {64,0}, + [I(23,76)] = {64,0}, + [I(24,76)] = {64,0}, + [I(25,76)] = {64,0}, + [I(26,76)] = {64,0}, + [I(27,76)] = {64,0}, + [I(28,76)] = {64,0}, + [I(29,76)] = {64,0}, + [I(30,76)] = {64,0}, + [I(31,76)] = {64,0}, + [I(32,76)] = {13,0xA67}, + [I(33,76)] = {17,0x1FC67}, + [I(34,76)] = {17,0x1FCE7}, + [I(35,76)] = {19,0x7FD67}, + [I(36,76)] = {20,0xFFCE7}, + [I(37,76)] = {13,0xAE7}, + [I(38,76)] = {15,0x7C67}, + [I(39,76)] = {18,0x3FD67}, + [I(40,76)] = {17,0x1FD67}, + [I(41,76)] = {17,0x1FDE7}, + [I(42,76)] = {15,0x7CE7}, + [I(43,76)] = {18,0x3FDE7}, + [I(44,76)] = {15,0x7D67}, + [I(45,76)] = {13,0xB67}, + [I(46,76)] = {13,0xBE7}, + [I(47,76)] = {13,0xC67}, + [I(48,76)] = {12,0x67}, + [I(49,76)] = {12,0xE7}, + [I(50,76)] = {12,0x167}, + [I(51,76)] = {13,0xCE7}, + [I(52,76)] = {13,0xD67}, + [I(53,76)] = {13,0xDE7}, + [I(54,76)] = {13,0xE67}, + [I(55,76)] = {13,0xEE7}, + [I(56,76)] = {13,0xF67}, + [I(57,76)] = {13,0xFE7}, + [I(58,76)] = {14,0x2E67}, + [I(59,76)] = {15,0x7DE7}, + [I(60,76)] = {22,0x3FFE67}, + [I(61,76)] = {13,0x1067}, + [I(62,76)] = {19,0x7FDE7}, + [I(63,76)] = {17,0x1FE67}, + [I(64,76)] = {20,0xFFD67}, + [I(65,76)] = {13,0x10E7}, + [I(66,76)] = {14,0x2EE7}, + [I(67,76)] = {14,0x2F67}, + [I(68,76)] = {14,0x2FE7}, + [I(69,76)] = {14,0x3067}, + [I(70,76)] = {14,0x30E7}, + [I(71,76)] = {14,0x3167}, + [I(72,76)] = {14,0x31E7}, + [I(73,76)] = {14,0x3267}, + [I(74,76)] = {14,0x32E7}, + [I(75,76)] = {14,0x3367}, + [I(76,76)] = {14,0x33E7}, + [I(77,76)] = {14,0x3467}, + [I(78,76)] = {14,0x34E7}, + [I(79,76)] = {14,0x3567}, + [I(80,76)] = {14,0x35E7}, + [I(81,76)] = {14,0x3667}, + [I(82,76)] = {14,0x36E7}, + [I(83,76)] = {14,0x3767}, + [I(84,76)] = {14,0x37E7}, + [I(85,76)] = {14,0x3867}, + [I(86,76)] = {14,0x38E7}, + [I(87,76)] = {14,0x3967}, + [I(88,76)] = {15,0x7E67}, + [I(89,76)] = {14,0x39E7}, + [I(90,76)] = {15,0x7EE7}, + [I(91,76)] = {20,0xFFDE7}, + [I(92,76)] = {26,0x3FFF867}, + [I(93,76)] = {20,0xFFE67}, + [I(94,76)] = {21,0x1FFE67}, + [I(95,76)] = {13,0x1167}, + [I(96,76)] = {22,0x3FFEE7}, + [I(97,76)] = {12,0x1E7}, + [I(98,76)] = {13,0x11E7}, + [I(99,76)] = {12,0x267}, + [I(100,76)] = {13,0x1267}, + [I(101,76)] = {12,0x2E7}, + [I(102,76)] = {13,0x12E7}, + [I(103,76)] = {13,0x1367}, + [I(104,76)] = {13,0x13E7}, + [I(105,76)] = {12,0x367}, + [I(106,76)] = {14,0x3A67}, + [I(107,76)] = {14,0x3AE7}, + [I(108,76)] = {13,0x1467}, + [I(109,76)] = {13,0x14E7}, + [I(110,76)] = {13,0x1567}, + [I(111,76)] = {12,0x3E7}, + [I(112,76)] = {13,0x15E7}, + [I(113,76)] = {14,0x3B67}, + [I(114,76)] = {13,0x1667}, + [I(115,76)] = {12,0x467}, + [I(116,76)] = {12,0x4E7}, + [I(117,76)] = {13,0x16E7}, + [I(118,76)] = {14,0x3BE7}, + [I(119,76)] = {14,0x3C67}, + [I(120,76)] = {14,0x3CE7}, + [I(121,76)] = {14,0x3D67}, + [I(122,76)] = {14,0x3DE7}, + [I(123,76)] = {22,0x3FFF67}, + [I(124,76)] = {18,0x3FE67}, + [I(125,76)] = {21,0x1FFEE7}, + [I(126,76)] = {20,0xFFEE7}, + [I(127,76)] = {64,0}, + [I(128,76)] = {27,0x7FFF367}, + [I(129,76)] = {29,0x1FFFE967}, + [I(130,76)] = {27,0x7FFF3E7}, + [I(131,76)] = {27,0x7FFF467}, + [I(132,76)] = {29,0x1FFFE9E7}, + [I(133,76)] = {29,0x1FFFEA67}, + [I(134,76)] = {29,0x1FFFEAE7}, + [I(135,76)] = {30,0x3FFFECE7}, + [I(136,76)] = {29,0x1FFFEB67}, + [I(137,76)] = {30,0x3FFFED67}, + [I(138,76)] = {30,0x3FFFEDE7}, + [I(139,76)] = {30,0x3FFFEE67}, + [I(140,76)] = {30,0x3FFFEEE7}, + [I(141,76)] = {30,0x3FFFEF67}, + [I(142,76)] = {31,0x7FFFF5E7}, + [I(143,76)] = {30,0x3FFFEFE7}, + [I(144,76)] = {31,0x7FFFF667}, + [I(145,76)] = {31,0x7FFFF6E7}, + [I(146,76)] = {29,0x1FFFEBE7}, + [I(147,76)] = {30,0x3FFFF067}, + [I(148,76)] = {31,0x7FFFF767}, + [I(149,76)] = {30,0x3FFFF0E7}, + [I(150,76)] = {30,0x3FFFF167}, + [I(151,76)] = {30,0x3FFFF1E7}, + [I(152,76)] = {30,0x3FFFF267}, + [I(153,76)] = {28,0xFFFEE67}, + [I(154,76)] = {29,0x1FFFEC67}, + [I(155,76)] = {30,0x3FFFF2E7}, + [I(156,76)] = {29,0x1FFFECE7}, + [I(157,76)] = {30,0x3FFFF367}, + [I(158,76)] = {30,0x3FFFF3E7}, + [I(159,76)] = {31,0x7FFFF7E7}, + [I(160,76)] = {29,0x1FFFED67}, + [I(161,76)] = {28,0xFFFEEE7}, + [I(162,76)] = {27,0x7FFF4E7}, + [I(163,76)] = {29,0x1FFFEDE7}, + [I(164,76)] = {29,0x1FFFEE67}, + [I(165,76)] = {30,0x3FFFF467}, + [I(166,76)] = {30,0x3FFFF4E7}, + [I(167,76)] = {28,0xFFFEF67}, + [I(168,76)] = {30,0x3FFFF567}, + [I(169,76)] = {29,0x1FFFEEE7}, + [I(170,76)] = {29,0x1FFFEF67}, + [I(171,76)] = {31,0x7FFFF867}, + [I(172,76)] = {28,0xFFFEFE7}, + [I(173,76)] = {29,0x1FFFEFE7}, + [I(174,76)] = {30,0x3FFFF5E7}, + [I(175,76)] = {30,0x3FFFF667}, + [I(176,76)] = {28,0xFFFF067}, + [I(177,76)] = {28,0xFFFF0E7}, + [I(178,76)] = {29,0x1FFFF067}, + [I(179,76)] = {28,0xFFFF167}, + [I(180,76)] = {30,0x3FFFF6E7}, + [I(181,76)] = {29,0x1FFFF0E7}, + [I(182,76)] = {30,0x3FFFF767}, + [I(183,76)] = {30,0x3FFFF7E7}, + [I(184,76)] = {27,0x7FFF567}, + [I(185,76)] = {29,0x1FFFF167}, + [I(186,76)] = {29,0x1FFFF1E7}, + [I(187,76)] = {29,0x1FFFF267}, + [I(188,76)] = {30,0x3FFFF867}, + [I(189,76)] = {29,0x1FFFF2E7}, + [I(190,76)] = {29,0x1FFFF367}, + [I(191,76)] = {30,0x3FFFF8E7}, + [I(192,76)] = {64,0}, + [I(193,76)] = {64,0}, + [I(194,76)] = {27,0x7FFF5E7}, + [I(195,76)] = {26,0x3FFF8E7}, + [I(196,76)] = {29,0x1FFFF3E7}, + [I(197,76)] = {30,0x3FFFF967}, + [I(198,76)] = {29,0x1FFFF467}, + [I(199,76)] = {X32,0xFFFFF667}, + [I(200,76)] = {64,0}, + [I(201,76)] = {64,0}, + [I(202,76)] = {64,0}, + [I(203,76)] = {64,0}, + [I(204,76)] = {64,0}, + [I(205,76)] = {64,0}, + [I(206,76)] = {31,0x7FFFF8E7}, + [I(207,76)] = {X32,0xFFFFF6E7}, + [I(208,76)] = {26,0x3FFF967}, + [I(209,76)] = {28,0xFFFF1E7}, + [I(210,76)] = {64,0}, + [I(211,76)] = {64,0}, + [I(212,76)] = {64,0}, + [I(213,76)] = {64,0}, + [I(214,76)] = {64,0}, + [I(215,76)] = {31,0x7FFFF967}, + [I(216,76)] = {28,0xFFFF267}, + [I(217,76)] = {28,0xFFFF2E7}, + [I(218,76)] = {64,0}, + [I(219,76)] = {64,0}, + [I(220,76)] = {64,0}, + [I(221,76)] = {64,0}, + [I(222,76)] = {64,0}, + [I(223,76)] = {64,0}, + [I(224,76)] = {27,0x7FFF667}, + [I(225,76)] = {31,0x7FFFF9E7}, + [I(226,76)] = {27,0x7FFF6E7}, + [I(227,76)] = {28,0xFFFF367}, + [I(228,76)] = {29,0x1FFFF4E7}, + [I(229,76)] = {28,0xFFFF3E7}, + [I(230,76)] = {28,0xFFFF467}, + [I(231,76)] = {30,0x3FFFF9E7}, + [I(232,76)] = {29,0x1FFFF567}, + [I(233,76)] = {29,0x1FFFF5E7}, + [I(234,76)] = {X32,0xFFFFF767}, + [I(235,76)] = {X32,0xFFFFF7E7}, + [I(236,76)] = {31,0x7FFFFA67}, + [I(237,76)] = {31,0x7FFFFAE7}, + [I(238,76)] = {64,0}, + [I(239,76)] = {30,0x3FFFFA67}, + [I(240,76)] = {64,0}, + [I(241,76)] = {64,0}, + [I(242,76)] = {64,0}, + [I(243,76)] = {64,0}, + [I(244,76)] = {64,0}, + [I(245,76)] = {64,0}, + [I(246,76)] = {64,0}, + [I(247,76)] = {64,0}, + [I(248,76)] = {64,0}, + [I(249,76)] = {64,0}, + [I(250,76)] = {64,0}, + [I(251,76)] = {64,0}, + [I(252,76)] = {64,0}, + [I(253,76)] = {64,0}, + [I(254,76)] = {64,0}, + [I(255,76)] = {64,0}, + [I(0,77)] = {20,0xFFC68}, + [I(1,77)] = {30,0x3FFFEC68}, + [I(2,77)] = {64,0}, + [I(3,77)] = {64,0}, + [I(4,77)] = {64,0}, + [I(5,77)] = {64,0}, + [I(6,77)] = {64,0}, + [I(7,77)] = {64,0}, + [I(8,77)] = {64,0}, + [I(9,77)] = {31,0x7FFFF568}, + [I(10,77)] = {64,0}, + [I(11,77)] = {64,0}, + [I(12,77)] = {64,0}, + [I(13,77)] = {64,0}, + [I(14,77)] = {64,0}, + [I(15,77)] = {64,0}, + [I(16,77)] = {64,0}, + [I(17,77)] = {64,0}, + [I(18,77)] = {64,0}, + [I(19,77)] = {64,0}, + [I(20,77)] = {64,0}, + [I(21,77)] = {64,0}, + [I(22,77)] = {64,0}, + [I(23,77)] = {64,0}, + [I(24,77)] = {64,0}, + [I(25,77)] = {64,0}, + [I(26,77)] = {64,0}, + [I(27,77)] = {64,0}, + [I(28,77)] = {64,0}, + [I(29,77)] = {64,0}, + [I(30,77)] = {64,0}, + [I(31,77)] = {64,0}, + [I(32,77)] = {13,0xA68}, + [I(33,77)] = {17,0x1FC68}, + [I(34,77)] = {17,0x1FCE8}, + [I(35,77)] = {19,0x7FD68}, + [I(36,77)] = {20,0xFFCE8}, + [I(37,77)] = {13,0xAE8}, + [I(38,77)] = {15,0x7C68}, + [I(39,77)] = {18,0x3FD68}, + [I(40,77)] = {17,0x1FD68}, + [I(41,77)] = {17,0x1FDE8}, + [I(42,77)] = {15,0x7CE8}, + [I(43,77)] = {18,0x3FDE8}, + [I(44,77)] = {15,0x7D68}, + [I(45,77)] = {13,0xB68}, + [I(46,77)] = {13,0xBE8}, + [I(47,77)] = {13,0xC68}, + [I(48,77)] = {12,0x68}, + [I(49,77)] = {12,0xE8}, + [I(50,77)] = {12,0x168}, + [I(51,77)] = {13,0xCE8}, + [I(52,77)] = {13,0xD68}, + [I(53,77)] = {13,0xDE8}, + [I(54,77)] = {13,0xE68}, + [I(55,77)] = {13,0xEE8}, + [I(56,77)] = {13,0xF68}, + [I(57,77)] = {13,0xFE8}, + [I(58,77)] = {14,0x2E68}, + [I(59,77)] = {15,0x7DE8}, + [I(60,77)] = {22,0x3FFE68}, + [I(61,77)] = {13,0x1068}, + [I(62,77)] = {19,0x7FDE8}, + [I(63,77)] = {17,0x1FE68}, + [I(64,77)] = {20,0xFFD68}, + [I(65,77)] = {13,0x10E8}, + [I(66,77)] = {14,0x2EE8}, + [I(67,77)] = {14,0x2F68}, + [I(68,77)] = {14,0x2FE8}, + [I(69,77)] = {14,0x3068}, + [I(70,77)] = {14,0x30E8}, + [I(71,77)] = {14,0x3168}, + [I(72,77)] = {14,0x31E8}, + [I(73,77)] = {14,0x3268}, + [I(74,77)] = {14,0x32E8}, + [I(75,77)] = {14,0x3368}, + [I(76,77)] = {14,0x33E8}, + [I(77,77)] = {14,0x3468}, + [I(78,77)] = {14,0x34E8}, + [I(79,77)] = {14,0x3568}, + [I(80,77)] = {14,0x35E8}, + [I(81,77)] = {14,0x3668}, + [I(82,77)] = {14,0x36E8}, + [I(83,77)] = {14,0x3768}, + [I(84,77)] = {14,0x37E8}, + [I(85,77)] = {14,0x3868}, + [I(86,77)] = {14,0x38E8}, + [I(87,77)] = {14,0x3968}, + [I(88,77)] = {15,0x7E68}, + [I(89,77)] = {14,0x39E8}, + [I(90,77)] = {15,0x7EE8}, + [I(91,77)] = {20,0xFFDE8}, + [I(92,77)] = {26,0x3FFF868}, + [I(93,77)] = {20,0xFFE68}, + [I(94,77)] = {21,0x1FFE68}, + [I(95,77)] = {13,0x1168}, + [I(96,77)] = {22,0x3FFEE8}, + [I(97,77)] = {12,0x1E8}, + [I(98,77)] = {13,0x11E8}, + [I(99,77)] = {12,0x268}, + [I(100,77)] = {13,0x1268}, + [I(101,77)] = {12,0x2E8}, + [I(102,77)] = {13,0x12E8}, + [I(103,77)] = {13,0x1368}, + [I(104,77)] = {13,0x13E8}, + [I(105,77)] = {12,0x368}, + [I(106,77)] = {14,0x3A68}, + [I(107,77)] = {14,0x3AE8}, + [I(108,77)] = {13,0x1468}, + [I(109,77)] = {13,0x14E8}, + [I(110,77)] = {13,0x1568}, + [I(111,77)] = {12,0x3E8}, + [I(112,77)] = {13,0x15E8}, + [I(113,77)] = {14,0x3B68}, + [I(114,77)] = {13,0x1668}, + [I(115,77)] = {12,0x468}, + [I(116,77)] = {12,0x4E8}, + [I(117,77)] = {13,0x16E8}, + [I(118,77)] = {14,0x3BE8}, + [I(119,77)] = {14,0x3C68}, + [I(120,77)] = {14,0x3CE8}, + [I(121,77)] = {14,0x3D68}, + [I(122,77)] = {14,0x3DE8}, + [I(123,77)] = {22,0x3FFF68}, + [I(124,77)] = {18,0x3FE68}, + [I(125,77)] = {21,0x1FFEE8}, + [I(126,77)] = {20,0xFFEE8}, + [I(127,77)] = {64,0}, + [I(128,77)] = {27,0x7FFF368}, + [I(129,77)] = {29,0x1FFFE968}, + [I(130,77)] = {27,0x7FFF3E8}, + [I(131,77)] = {27,0x7FFF468}, + [I(132,77)] = {29,0x1FFFE9E8}, + [I(133,77)] = {29,0x1FFFEA68}, + [I(134,77)] = {29,0x1FFFEAE8}, + [I(135,77)] = {30,0x3FFFECE8}, + [I(136,77)] = {29,0x1FFFEB68}, + [I(137,77)] = {30,0x3FFFED68}, + [I(138,77)] = {30,0x3FFFEDE8}, + [I(139,77)] = {30,0x3FFFEE68}, + [I(140,77)] = {30,0x3FFFEEE8}, + [I(141,77)] = {30,0x3FFFEF68}, + [I(142,77)] = {31,0x7FFFF5E8}, + [I(143,77)] = {30,0x3FFFEFE8}, + [I(144,77)] = {31,0x7FFFF668}, + [I(145,77)] = {31,0x7FFFF6E8}, + [I(146,77)] = {29,0x1FFFEBE8}, + [I(147,77)] = {30,0x3FFFF068}, + [I(148,77)] = {31,0x7FFFF768}, + [I(149,77)] = {30,0x3FFFF0E8}, + [I(150,77)] = {30,0x3FFFF168}, + [I(151,77)] = {30,0x3FFFF1E8}, + [I(152,77)] = {30,0x3FFFF268}, + [I(153,77)] = {28,0xFFFEE68}, + [I(154,77)] = {29,0x1FFFEC68}, + [I(155,77)] = {30,0x3FFFF2E8}, + [I(156,77)] = {29,0x1FFFECE8}, + [I(157,77)] = {30,0x3FFFF368}, + [I(158,77)] = {30,0x3FFFF3E8}, + [I(159,77)] = {31,0x7FFFF7E8}, + [I(160,77)] = {29,0x1FFFED68}, + [I(161,77)] = {28,0xFFFEEE8}, + [I(162,77)] = {27,0x7FFF4E8}, + [I(163,77)] = {29,0x1FFFEDE8}, + [I(164,77)] = {29,0x1FFFEE68}, + [I(165,77)] = {30,0x3FFFF468}, + [I(166,77)] = {30,0x3FFFF4E8}, + [I(167,77)] = {28,0xFFFEF68}, + [I(168,77)] = {30,0x3FFFF568}, + [I(169,77)] = {29,0x1FFFEEE8}, + [I(170,77)] = {29,0x1FFFEF68}, + [I(171,77)] = {31,0x7FFFF868}, + [I(172,77)] = {28,0xFFFEFE8}, + [I(173,77)] = {29,0x1FFFEFE8}, + [I(174,77)] = {30,0x3FFFF5E8}, + [I(175,77)] = {30,0x3FFFF668}, + [I(176,77)] = {28,0xFFFF068}, + [I(177,77)] = {28,0xFFFF0E8}, + [I(178,77)] = {29,0x1FFFF068}, + [I(179,77)] = {28,0xFFFF168}, + [I(180,77)] = {30,0x3FFFF6E8}, + [I(181,77)] = {29,0x1FFFF0E8}, + [I(182,77)] = {30,0x3FFFF768}, + [I(183,77)] = {30,0x3FFFF7E8}, + [I(184,77)] = {27,0x7FFF568}, + [I(185,77)] = {29,0x1FFFF168}, + [I(186,77)] = {29,0x1FFFF1E8}, + [I(187,77)] = {29,0x1FFFF268}, + [I(188,77)] = {30,0x3FFFF868}, + [I(189,77)] = {29,0x1FFFF2E8}, + [I(190,77)] = {29,0x1FFFF368}, + [I(191,77)] = {30,0x3FFFF8E8}, + [I(192,77)] = {64,0}, + [I(193,77)] = {64,0}, + [I(194,77)] = {27,0x7FFF5E8}, + [I(195,77)] = {26,0x3FFF8E8}, + [I(196,77)] = {29,0x1FFFF3E8}, + [I(197,77)] = {30,0x3FFFF968}, + [I(198,77)] = {29,0x1FFFF468}, + [I(199,77)] = {X32,0xFFFFF668}, + [I(200,77)] = {64,0}, + [I(201,77)] = {64,0}, + [I(202,77)] = {64,0}, + [I(203,77)] = {64,0}, + [I(204,77)] = {64,0}, + [I(205,77)] = {64,0}, + [I(206,77)] = {31,0x7FFFF8E8}, + [I(207,77)] = {X32,0xFFFFF6E8}, + [I(208,77)] = {26,0x3FFF968}, + [I(209,77)] = {28,0xFFFF1E8}, + [I(210,77)] = {64,0}, + [I(211,77)] = {64,0}, + [I(212,77)] = {64,0}, + [I(213,77)] = {64,0}, + [I(214,77)] = {64,0}, + [I(215,77)] = {31,0x7FFFF968}, + [I(216,77)] = {28,0xFFFF268}, + [I(217,77)] = {28,0xFFFF2E8}, + [I(218,77)] = {64,0}, + [I(219,77)] = {64,0}, + [I(220,77)] = {64,0}, + [I(221,77)] = {64,0}, + [I(222,77)] = {64,0}, + [I(223,77)] = {64,0}, + [I(224,77)] = {27,0x7FFF668}, + [I(225,77)] = {31,0x7FFFF9E8}, + [I(226,77)] = {27,0x7FFF6E8}, + [I(227,77)] = {28,0xFFFF368}, + [I(228,77)] = {29,0x1FFFF4E8}, + [I(229,77)] = {28,0xFFFF3E8}, + [I(230,77)] = {28,0xFFFF468}, + [I(231,77)] = {30,0x3FFFF9E8}, + [I(232,77)] = {29,0x1FFFF568}, + [I(233,77)] = {29,0x1FFFF5E8}, + [I(234,77)] = {X32,0xFFFFF768}, + [I(235,77)] = {X32,0xFFFFF7E8}, + [I(236,77)] = {31,0x7FFFFA68}, + [I(237,77)] = {31,0x7FFFFAE8}, + [I(238,77)] = {64,0}, + [I(239,77)] = {30,0x3FFFFA68}, + [I(240,77)] = {64,0}, + [I(241,77)] = {64,0}, + [I(242,77)] = {64,0}, + [I(243,77)] = {64,0}, + [I(244,77)] = {64,0}, + [I(245,77)] = {64,0}, + [I(246,77)] = {64,0}, + [I(247,77)] = {64,0}, + [I(248,77)] = {64,0}, + [I(249,77)] = {64,0}, + [I(250,77)] = {64,0}, + [I(251,77)] = {64,0}, + [I(252,77)] = {64,0}, + [I(253,77)] = {64,0}, + [I(254,77)] = {64,0}, + [I(255,77)] = {64,0}, + [I(0,78)] = {20,0xFFC69}, + [I(1,78)] = {30,0x3FFFEC69}, + [I(2,78)] = {64,0}, + [I(3,78)] = {64,0}, + [I(4,78)] = {64,0}, + [I(5,78)] = {64,0}, + [I(6,78)] = {64,0}, + [I(7,78)] = {64,0}, + [I(8,78)] = {64,0}, + [I(9,78)] = {31,0x7FFFF569}, + [I(10,78)] = {64,0}, + [I(11,78)] = {64,0}, + [I(12,78)] = {64,0}, + [I(13,78)] = {64,0}, + [I(14,78)] = {64,0}, + [I(15,78)] = {64,0}, + [I(16,78)] = {64,0}, + [I(17,78)] = {64,0}, + [I(18,78)] = {64,0}, + [I(19,78)] = {64,0}, + [I(20,78)] = {64,0}, + [I(21,78)] = {64,0}, + [I(22,78)] = {64,0}, + [I(23,78)] = {64,0}, + [I(24,78)] = {64,0}, + [I(25,78)] = {64,0}, + [I(26,78)] = {64,0}, + [I(27,78)] = {64,0}, + [I(28,78)] = {64,0}, + [I(29,78)] = {64,0}, + [I(30,78)] = {64,0}, + [I(31,78)] = {64,0}, + [I(32,78)] = {13,0xA69}, + [I(33,78)] = {17,0x1FC69}, + [I(34,78)] = {17,0x1FCE9}, + [I(35,78)] = {19,0x7FD69}, + [I(36,78)] = {20,0xFFCE9}, + [I(37,78)] = {13,0xAE9}, + [I(38,78)] = {15,0x7C69}, + [I(39,78)] = {18,0x3FD69}, + [I(40,78)] = {17,0x1FD69}, + [I(41,78)] = {17,0x1FDE9}, + [I(42,78)] = {15,0x7CE9}, + [I(43,78)] = {18,0x3FDE9}, + [I(44,78)] = {15,0x7D69}, + [I(45,78)] = {13,0xB69}, + [I(46,78)] = {13,0xBE9}, + [I(47,78)] = {13,0xC69}, + [I(48,78)] = {12,0x69}, + [I(49,78)] = {12,0xE9}, + [I(50,78)] = {12,0x169}, + [I(51,78)] = {13,0xCE9}, + [I(52,78)] = {13,0xD69}, + [I(53,78)] = {13,0xDE9}, + [I(54,78)] = {13,0xE69}, + [I(55,78)] = {13,0xEE9}, + [I(56,78)] = {13,0xF69}, + [I(57,78)] = {13,0xFE9}, + [I(58,78)] = {14,0x2E69}, + [I(59,78)] = {15,0x7DE9}, + [I(60,78)] = {22,0x3FFE69}, + [I(61,78)] = {13,0x1069}, + [I(62,78)] = {19,0x7FDE9}, + [I(63,78)] = {17,0x1FE69}, + [I(64,78)] = {20,0xFFD69}, + [I(65,78)] = {13,0x10E9}, + [I(66,78)] = {14,0x2EE9}, + [I(67,78)] = {14,0x2F69}, + [I(68,78)] = {14,0x2FE9}, + [I(69,78)] = {14,0x3069}, + [I(70,78)] = {14,0x30E9}, + [I(71,78)] = {14,0x3169}, + [I(72,78)] = {14,0x31E9}, + [I(73,78)] = {14,0x3269}, + [I(74,78)] = {14,0x32E9}, + [I(75,78)] = {14,0x3369}, + [I(76,78)] = {14,0x33E9}, + [I(77,78)] = {14,0x3469}, + [I(78,78)] = {14,0x34E9}, + [I(79,78)] = {14,0x3569}, + [I(80,78)] = {14,0x35E9}, + [I(81,78)] = {14,0x3669}, + [I(82,78)] = {14,0x36E9}, + [I(83,78)] = {14,0x3769}, + [I(84,78)] = {14,0x37E9}, + [I(85,78)] = {14,0x3869}, + [I(86,78)] = {14,0x38E9}, + [I(87,78)] = {14,0x3969}, + [I(88,78)] = {15,0x7E69}, + [I(89,78)] = {14,0x39E9}, + [I(90,78)] = {15,0x7EE9}, + [I(91,78)] = {20,0xFFDE9}, + [I(92,78)] = {26,0x3FFF869}, + [I(93,78)] = {20,0xFFE69}, + [I(94,78)] = {21,0x1FFE69}, + [I(95,78)] = {13,0x1169}, + [I(96,78)] = {22,0x3FFEE9}, + [I(97,78)] = {12,0x1E9}, + [I(98,78)] = {13,0x11E9}, + [I(99,78)] = {12,0x269}, + [I(100,78)] = {13,0x1269}, + [I(101,78)] = {12,0x2E9}, + [I(102,78)] = {13,0x12E9}, + [I(103,78)] = {13,0x1369}, + [I(104,78)] = {13,0x13E9}, + [I(105,78)] = {12,0x369}, + [I(106,78)] = {14,0x3A69}, + [I(107,78)] = {14,0x3AE9}, + [I(108,78)] = {13,0x1469}, + [I(109,78)] = {13,0x14E9}, + [I(110,78)] = {13,0x1569}, + [I(111,78)] = {12,0x3E9}, + [I(112,78)] = {13,0x15E9}, + [I(113,78)] = {14,0x3B69}, + [I(114,78)] = {13,0x1669}, + [I(115,78)] = {12,0x469}, + [I(116,78)] = {12,0x4E9}, + [I(117,78)] = {13,0x16E9}, + [I(118,78)] = {14,0x3BE9}, + [I(119,78)] = {14,0x3C69}, + [I(120,78)] = {14,0x3CE9}, + [I(121,78)] = {14,0x3D69}, + [I(122,78)] = {14,0x3DE9}, + [I(123,78)] = {22,0x3FFF69}, + [I(124,78)] = {18,0x3FE69}, + [I(125,78)] = {21,0x1FFEE9}, + [I(126,78)] = {20,0xFFEE9}, + [I(127,78)] = {64,0}, + [I(128,78)] = {27,0x7FFF369}, + [I(129,78)] = {29,0x1FFFE969}, + [I(130,78)] = {27,0x7FFF3E9}, + [I(131,78)] = {27,0x7FFF469}, + [I(132,78)] = {29,0x1FFFE9E9}, + [I(133,78)] = {29,0x1FFFEA69}, + [I(134,78)] = {29,0x1FFFEAE9}, + [I(135,78)] = {30,0x3FFFECE9}, + [I(136,78)] = {29,0x1FFFEB69}, + [I(137,78)] = {30,0x3FFFED69}, + [I(138,78)] = {30,0x3FFFEDE9}, + [I(139,78)] = {30,0x3FFFEE69}, + [I(140,78)] = {30,0x3FFFEEE9}, + [I(141,78)] = {30,0x3FFFEF69}, + [I(142,78)] = {31,0x7FFFF5E9}, + [I(143,78)] = {30,0x3FFFEFE9}, + [I(144,78)] = {31,0x7FFFF669}, + [I(145,78)] = {31,0x7FFFF6E9}, + [I(146,78)] = {29,0x1FFFEBE9}, + [I(147,78)] = {30,0x3FFFF069}, + [I(148,78)] = {31,0x7FFFF769}, + [I(149,78)] = {30,0x3FFFF0E9}, + [I(150,78)] = {30,0x3FFFF169}, + [I(151,78)] = {30,0x3FFFF1E9}, + [I(152,78)] = {30,0x3FFFF269}, + [I(153,78)] = {28,0xFFFEE69}, + [I(154,78)] = {29,0x1FFFEC69}, + [I(155,78)] = {30,0x3FFFF2E9}, + [I(156,78)] = {29,0x1FFFECE9}, + [I(157,78)] = {30,0x3FFFF369}, + [I(158,78)] = {30,0x3FFFF3E9}, + [I(159,78)] = {31,0x7FFFF7E9}, + [I(160,78)] = {29,0x1FFFED69}, + [I(161,78)] = {28,0xFFFEEE9}, + [I(162,78)] = {27,0x7FFF4E9}, + [I(163,78)] = {29,0x1FFFEDE9}, + [I(164,78)] = {29,0x1FFFEE69}, + [I(165,78)] = {30,0x3FFFF469}, + [I(166,78)] = {30,0x3FFFF4E9}, + [I(167,78)] = {28,0xFFFEF69}, + [I(168,78)] = {30,0x3FFFF569}, + [I(169,78)] = {29,0x1FFFEEE9}, + [I(170,78)] = {29,0x1FFFEF69}, + [I(171,78)] = {31,0x7FFFF869}, + [I(172,78)] = {28,0xFFFEFE9}, + [I(173,78)] = {29,0x1FFFEFE9}, + [I(174,78)] = {30,0x3FFFF5E9}, + [I(175,78)] = {30,0x3FFFF669}, + [I(176,78)] = {28,0xFFFF069}, + [I(177,78)] = {28,0xFFFF0E9}, + [I(178,78)] = {29,0x1FFFF069}, + [I(179,78)] = {28,0xFFFF169}, + [I(180,78)] = {30,0x3FFFF6E9}, + [I(181,78)] = {29,0x1FFFF0E9}, + [I(182,78)] = {30,0x3FFFF769}, + [I(183,78)] = {30,0x3FFFF7E9}, + [I(184,78)] = {27,0x7FFF569}, + [I(185,78)] = {29,0x1FFFF169}, + [I(186,78)] = {29,0x1FFFF1E9}, + [I(187,78)] = {29,0x1FFFF269}, + [I(188,78)] = {30,0x3FFFF869}, + [I(189,78)] = {29,0x1FFFF2E9}, + [I(190,78)] = {29,0x1FFFF369}, + [I(191,78)] = {30,0x3FFFF8E9}, + [I(192,78)] = {64,0}, + [I(193,78)] = {64,0}, + [I(194,78)] = {27,0x7FFF5E9}, + [I(195,78)] = {26,0x3FFF8E9}, + [I(196,78)] = {29,0x1FFFF3E9}, + [I(197,78)] = {30,0x3FFFF969}, + [I(198,78)] = {29,0x1FFFF469}, + [I(199,78)] = {X32,0xFFFFF669}, + [I(200,78)] = {64,0}, + [I(201,78)] = {64,0}, + [I(202,78)] = {64,0}, + [I(203,78)] = {64,0}, + [I(204,78)] = {64,0}, + [I(205,78)] = {64,0}, + [I(206,78)] = {31,0x7FFFF8E9}, + [I(207,78)] = {X32,0xFFFFF6E9}, + [I(208,78)] = {26,0x3FFF969}, + [I(209,78)] = {28,0xFFFF1E9}, + [I(210,78)] = {64,0}, + [I(211,78)] = {64,0}, + [I(212,78)] = {64,0}, + [I(213,78)] = {64,0}, + [I(214,78)] = {64,0}, + [I(215,78)] = {31,0x7FFFF969}, + [I(216,78)] = {28,0xFFFF269}, + [I(217,78)] = {28,0xFFFF2E9}, + [I(218,78)] = {64,0}, + [I(219,78)] = {64,0}, + [I(220,78)] = {64,0}, + [I(221,78)] = {64,0}, + [I(222,78)] = {64,0}, + [I(223,78)] = {64,0}, + [I(224,78)] = {27,0x7FFF669}, + [I(225,78)] = {31,0x7FFFF9E9}, + [I(226,78)] = {27,0x7FFF6E9}, + [I(227,78)] = {28,0xFFFF369}, + [I(228,78)] = {29,0x1FFFF4E9}, + [I(229,78)] = {28,0xFFFF3E9}, + [I(230,78)] = {28,0xFFFF469}, + [I(231,78)] = {30,0x3FFFF9E9}, + [I(232,78)] = {29,0x1FFFF569}, + [I(233,78)] = {29,0x1FFFF5E9}, + [I(234,78)] = {X32,0xFFFFF769}, + [I(235,78)] = {X32,0xFFFFF7E9}, + [I(236,78)] = {31,0x7FFFFA69}, + [I(237,78)] = {31,0x7FFFFAE9}, + [I(238,78)] = {64,0}, + [I(239,78)] = {30,0x3FFFFA69}, + [I(240,78)] = {64,0}, + [I(241,78)] = {64,0}, + [I(242,78)] = {64,0}, + [I(243,78)] = {64,0}, + [I(244,78)] = {64,0}, + [I(245,78)] = {64,0}, + [I(246,78)] = {64,0}, + [I(247,78)] = {64,0}, + [I(248,78)] = {64,0}, + [I(249,78)] = {64,0}, + [I(250,78)] = {64,0}, + [I(251,78)] = {64,0}, + [I(252,78)] = {64,0}, + [I(253,78)] = {64,0}, + [I(254,78)] = {64,0}, + [I(255,78)] = {64,0}, + [I(0,79)] = {20,0xFFC6A}, + [I(1,79)] = {30,0x3FFFEC6A}, + [I(2,79)] = {64,0}, + [I(3,79)] = {64,0}, + [I(4,79)] = {64,0}, + [I(5,79)] = {64,0}, + [I(6,79)] = {64,0}, + [I(7,79)] = {64,0}, + [I(8,79)] = {64,0}, + [I(9,79)] = {31,0x7FFFF56A}, + [I(10,79)] = {64,0}, + [I(11,79)] = {64,0}, + [I(12,79)] = {64,0}, + [I(13,79)] = {64,0}, + [I(14,79)] = {64,0}, + [I(15,79)] = {64,0}, + [I(16,79)] = {64,0}, + [I(17,79)] = {64,0}, + [I(18,79)] = {64,0}, + [I(19,79)] = {64,0}, + [I(20,79)] = {64,0}, + [I(21,79)] = {64,0}, + [I(22,79)] = {64,0}, + [I(23,79)] = {64,0}, + [I(24,79)] = {64,0}, + [I(25,79)] = {64,0}, + [I(26,79)] = {64,0}, + [I(27,79)] = {64,0}, + [I(28,79)] = {64,0}, + [I(29,79)] = {64,0}, + [I(30,79)] = {64,0}, + [I(31,79)] = {64,0}, + [I(32,79)] = {13,0xA6A}, + [I(33,79)] = {17,0x1FC6A}, + [I(34,79)] = {17,0x1FCEA}, + [I(35,79)] = {19,0x7FD6A}, + [I(36,79)] = {20,0xFFCEA}, + [I(37,79)] = {13,0xAEA}, + [I(38,79)] = {15,0x7C6A}, + [I(39,79)] = {18,0x3FD6A}, + [I(40,79)] = {17,0x1FD6A}, + [I(41,79)] = {17,0x1FDEA}, + [I(42,79)] = {15,0x7CEA}, + [I(43,79)] = {18,0x3FDEA}, + [I(44,79)] = {15,0x7D6A}, + [I(45,79)] = {13,0xB6A}, + [I(46,79)] = {13,0xBEA}, + [I(47,79)] = {13,0xC6A}, + [I(48,79)] = {12,0x6A}, + [I(49,79)] = {12,0xEA}, + [I(50,79)] = {12,0x16A}, + [I(51,79)] = {13,0xCEA}, + [I(52,79)] = {13,0xD6A}, + [I(53,79)] = {13,0xDEA}, + [I(54,79)] = {13,0xE6A}, + [I(55,79)] = {13,0xEEA}, + [I(56,79)] = {13,0xF6A}, + [I(57,79)] = {13,0xFEA}, + [I(58,79)] = {14,0x2E6A}, + [I(59,79)] = {15,0x7DEA}, + [I(60,79)] = {22,0x3FFE6A}, + [I(61,79)] = {13,0x106A}, + [I(62,79)] = {19,0x7FDEA}, + [I(63,79)] = {17,0x1FE6A}, + [I(64,79)] = {20,0xFFD6A}, + [I(65,79)] = {13,0x10EA}, + [I(66,79)] = {14,0x2EEA}, + [I(67,79)] = {14,0x2F6A}, + [I(68,79)] = {14,0x2FEA}, + [I(69,79)] = {14,0x306A}, + [I(70,79)] = {14,0x30EA}, + [I(71,79)] = {14,0x316A}, + [I(72,79)] = {14,0x31EA}, + [I(73,79)] = {14,0x326A}, + [I(74,79)] = {14,0x32EA}, + [I(75,79)] = {14,0x336A}, + [I(76,79)] = {14,0x33EA}, + [I(77,79)] = {14,0x346A}, + [I(78,79)] = {14,0x34EA}, + [I(79,79)] = {14,0x356A}, + [I(80,79)] = {14,0x35EA}, + [I(81,79)] = {14,0x366A}, + [I(82,79)] = {14,0x36EA}, + [I(83,79)] = {14,0x376A}, + [I(84,79)] = {14,0x37EA}, + [I(85,79)] = {14,0x386A}, + [I(86,79)] = {14,0x38EA}, + [I(87,79)] = {14,0x396A}, + [I(88,79)] = {15,0x7E6A}, + [I(89,79)] = {14,0x39EA}, + [I(90,79)] = {15,0x7EEA}, + [I(91,79)] = {20,0xFFDEA}, + [I(92,79)] = {26,0x3FFF86A}, + [I(93,79)] = {20,0xFFE6A}, + [I(94,79)] = {21,0x1FFE6A}, + [I(95,79)] = {13,0x116A}, + [I(96,79)] = {22,0x3FFEEA}, + [I(97,79)] = {12,0x1EA}, + [I(98,79)] = {13,0x11EA}, + [I(99,79)] = {12,0x26A}, + [I(100,79)] = {13,0x126A}, + [I(101,79)] = {12,0x2EA}, + [I(102,79)] = {13,0x12EA}, + [I(103,79)] = {13,0x136A}, + [I(104,79)] = {13,0x13EA}, + [I(105,79)] = {12,0x36A}, + [I(106,79)] = {14,0x3A6A}, + [I(107,79)] = {14,0x3AEA}, + [I(108,79)] = {13,0x146A}, + [I(109,79)] = {13,0x14EA}, + [I(110,79)] = {13,0x156A}, + [I(111,79)] = {12,0x3EA}, + [I(112,79)] = {13,0x15EA}, + [I(113,79)] = {14,0x3B6A}, + [I(114,79)] = {13,0x166A}, + [I(115,79)] = {12,0x46A}, + [I(116,79)] = {12,0x4EA}, + [I(117,79)] = {13,0x16EA}, + [I(118,79)] = {14,0x3BEA}, + [I(119,79)] = {14,0x3C6A}, + [I(120,79)] = {14,0x3CEA}, + [I(121,79)] = {14,0x3D6A}, + [I(122,79)] = {14,0x3DEA}, + [I(123,79)] = {22,0x3FFF6A}, + [I(124,79)] = {18,0x3FE6A}, + [I(125,79)] = {21,0x1FFEEA}, + [I(126,79)] = {20,0xFFEEA}, + [I(127,79)] = {64,0}, + [I(128,79)] = {27,0x7FFF36A}, + [I(129,79)] = {29,0x1FFFE96A}, + [I(130,79)] = {27,0x7FFF3EA}, + [I(131,79)] = {27,0x7FFF46A}, + [I(132,79)] = {29,0x1FFFE9EA}, + [I(133,79)] = {29,0x1FFFEA6A}, + [I(134,79)] = {29,0x1FFFEAEA}, + [I(135,79)] = {30,0x3FFFECEA}, + [I(136,79)] = {29,0x1FFFEB6A}, + [I(137,79)] = {30,0x3FFFED6A}, + [I(138,79)] = {30,0x3FFFEDEA}, + [I(139,79)] = {30,0x3FFFEE6A}, + [I(140,79)] = {30,0x3FFFEEEA}, + [I(141,79)] = {30,0x3FFFEF6A}, + [I(142,79)] = {31,0x7FFFF5EA}, + [I(143,79)] = {30,0x3FFFEFEA}, + [I(144,79)] = {31,0x7FFFF66A}, + [I(145,79)] = {31,0x7FFFF6EA}, + [I(146,79)] = {29,0x1FFFEBEA}, + [I(147,79)] = {30,0x3FFFF06A}, + [I(148,79)] = {31,0x7FFFF76A}, + [I(149,79)] = {30,0x3FFFF0EA}, + [I(150,79)] = {30,0x3FFFF16A}, + [I(151,79)] = {30,0x3FFFF1EA}, + [I(152,79)] = {30,0x3FFFF26A}, + [I(153,79)] = {28,0xFFFEE6A}, + [I(154,79)] = {29,0x1FFFEC6A}, + [I(155,79)] = {30,0x3FFFF2EA}, + [I(156,79)] = {29,0x1FFFECEA}, + [I(157,79)] = {30,0x3FFFF36A}, + [I(158,79)] = {30,0x3FFFF3EA}, + [I(159,79)] = {31,0x7FFFF7EA}, + [I(160,79)] = {29,0x1FFFED6A}, + [I(161,79)] = {28,0xFFFEEEA}, + [I(162,79)] = {27,0x7FFF4EA}, + [I(163,79)] = {29,0x1FFFEDEA}, + [I(164,79)] = {29,0x1FFFEE6A}, + [I(165,79)] = {30,0x3FFFF46A}, + [I(166,79)] = {30,0x3FFFF4EA}, + [I(167,79)] = {28,0xFFFEF6A}, + [I(168,79)] = {30,0x3FFFF56A}, + [I(169,79)] = {29,0x1FFFEEEA}, + [I(170,79)] = {29,0x1FFFEF6A}, + [I(171,79)] = {31,0x7FFFF86A}, + [I(172,79)] = {28,0xFFFEFEA}, + [I(173,79)] = {29,0x1FFFEFEA}, + [I(174,79)] = {30,0x3FFFF5EA}, + [I(175,79)] = {30,0x3FFFF66A}, + [I(176,79)] = {28,0xFFFF06A}, + [I(177,79)] = {28,0xFFFF0EA}, + [I(178,79)] = {29,0x1FFFF06A}, + [I(179,79)] = {28,0xFFFF16A}, + [I(180,79)] = {30,0x3FFFF6EA}, + [I(181,79)] = {29,0x1FFFF0EA}, + [I(182,79)] = {30,0x3FFFF76A}, + [I(183,79)] = {30,0x3FFFF7EA}, + [I(184,79)] = {27,0x7FFF56A}, + [I(185,79)] = {29,0x1FFFF16A}, + [I(186,79)] = {29,0x1FFFF1EA}, + [I(187,79)] = {29,0x1FFFF26A}, + [I(188,79)] = {30,0x3FFFF86A}, + [I(189,79)] = {29,0x1FFFF2EA}, + [I(190,79)] = {29,0x1FFFF36A}, + [I(191,79)] = {30,0x3FFFF8EA}, + [I(192,79)] = {64,0}, + [I(193,79)] = {64,0}, + [I(194,79)] = {27,0x7FFF5EA}, + [I(195,79)] = {26,0x3FFF8EA}, + [I(196,79)] = {29,0x1FFFF3EA}, + [I(197,79)] = {30,0x3FFFF96A}, + [I(198,79)] = {29,0x1FFFF46A}, + [I(199,79)] = {X32,0xFFFFF66A}, + [I(200,79)] = {64,0}, + [I(201,79)] = {64,0}, + [I(202,79)] = {64,0}, + [I(203,79)] = {64,0}, + [I(204,79)] = {64,0}, + [I(205,79)] = {64,0}, + [I(206,79)] = {31,0x7FFFF8EA}, + [I(207,79)] = {X32,0xFFFFF6EA}, + [I(208,79)] = {26,0x3FFF96A}, + [I(209,79)] = {28,0xFFFF1EA}, + [I(210,79)] = {64,0}, + [I(211,79)] = {64,0}, + [I(212,79)] = {64,0}, + [I(213,79)] = {64,0}, + [I(214,79)] = {64,0}, + [I(215,79)] = {31,0x7FFFF96A}, + [I(216,79)] = {28,0xFFFF26A}, + [I(217,79)] = {28,0xFFFF2EA}, + [I(218,79)] = {64,0}, + [I(219,79)] = {64,0}, + [I(220,79)] = {64,0}, + [I(221,79)] = {64,0}, + [I(222,79)] = {64,0}, + [I(223,79)] = {64,0}, + [I(224,79)] = {27,0x7FFF66A}, + [I(225,79)] = {31,0x7FFFF9EA}, + [I(226,79)] = {27,0x7FFF6EA}, + [I(227,79)] = {28,0xFFFF36A}, + [I(228,79)] = {29,0x1FFFF4EA}, + [I(229,79)] = {28,0xFFFF3EA}, + [I(230,79)] = {28,0xFFFF46A}, + [I(231,79)] = {30,0x3FFFF9EA}, + [I(232,79)] = {29,0x1FFFF56A}, + [I(233,79)] = {29,0x1FFFF5EA}, + [I(234,79)] = {X32,0xFFFFF76A}, + [I(235,79)] = {X32,0xFFFFF7EA}, + [I(236,79)] = {31,0x7FFFFA6A}, + [I(237,79)] = {31,0x7FFFFAEA}, + [I(238,79)] = {64,0}, + [I(239,79)] = {30,0x3FFFFA6A}, + [I(240,79)] = {64,0}, + [I(241,79)] = {64,0}, + [I(242,79)] = {64,0}, + [I(243,79)] = {64,0}, + [I(244,79)] = {64,0}, + [I(245,79)] = {64,0}, + [I(246,79)] = {64,0}, + [I(247,79)] = {64,0}, + [I(248,79)] = {64,0}, + [I(249,79)] = {64,0}, + [I(250,79)] = {64,0}, + [I(251,79)] = {64,0}, + [I(252,79)] = {64,0}, + [I(253,79)] = {64,0}, + [I(254,79)] = {64,0}, + [I(255,79)] = {64,0}, + [I(0,80)] = {20,0xFFC6B}, + [I(1,80)] = {30,0x3FFFEC6B}, + [I(2,80)] = {64,0}, + [I(3,80)] = {64,0}, + [I(4,80)] = {64,0}, + [I(5,80)] = {64,0}, + [I(6,80)] = {64,0}, + [I(7,80)] = {64,0}, + [I(8,80)] = {64,0}, + [I(9,80)] = {31,0x7FFFF56B}, + [I(10,80)] = {64,0}, + [I(11,80)] = {64,0}, + [I(12,80)] = {64,0}, + [I(13,80)] = {64,0}, + [I(14,80)] = {64,0}, + [I(15,80)] = {64,0}, + [I(16,80)] = {64,0}, + [I(17,80)] = {64,0}, + [I(18,80)] = {64,0}, + [I(19,80)] = {64,0}, + [I(20,80)] = {64,0}, + [I(21,80)] = {64,0}, + [I(22,80)] = {64,0}, + [I(23,80)] = {64,0}, + [I(24,80)] = {64,0}, + [I(25,80)] = {64,0}, + [I(26,80)] = {64,0}, + [I(27,80)] = {64,0}, + [I(28,80)] = {64,0}, + [I(29,80)] = {64,0}, + [I(30,80)] = {64,0}, + [I(31,80)] = {64,0}, + [I(32,80)] = {13,0xA6B}, + [I(33,80)] = {17,0x1FC6B}, + [I(34,80)] = {17,0x1FCEB}, + [I(35,80)] = {19,0x7FD6B}, + [I(36,80)] = {20,0xFFCEB}, + [I(37,80)] = {13,0xAEB}, + [I(38,80)] = {15,0x7C6B}, + [I(39,80)] = {18,0x3FD6B}, + [I(40,80)] = {17,0x1FD6B}, + [I(41,80)] = {17,0x1FDEB}, + [I(42,80)] = {15,0x7CEB}, + [I(43,80)] = {18,0x3FDEB}, + [I(44,80)] = {15,0x7D6B}, + [I(45,80)] = {13,0xB6B}, + [I(46,80)] = {13,0xBEB}, + [I(47,80)] = {13,0xC6B}, + [I(48,80)] = {12,0x6B}, + [I(49,80)] = {12,0xEB}, + [I(50,80)] = {12,0x16B}, + [I(51,80)] = {13,0xCEB}, + [I(52,80)] = {13,0xD6B}, + [I(53,80)] = {13,0xDEB}, + [I(54,80)] = {13,0xE6B}, + [I(55,80)] = {13,0xEEB}, + [I(56,80)] = {13,0xF6B}, + [I(57,80)] = {13,0xFEB}, + [I(58,80)] = {14,0x2E6B}, + [I(59,80)] = {15,0x7DEB}, + [I(60,80)] = {22,0x3FFE6B}, + [I(61,80)] = {13,0x106B}, + [I(62,80)] = {19,0x7FDEB}, + [I(63,80)] = {17,0x1FE6B}, + [I(64,80)] = {20,0xFFD6B}, + [I(65,80)] = {13,0x10EB}, + [I(66,80)] = {14,0x2EEB}, + [I(67,80)] = {14,0x2F6B}, + [I(68,80)] = {14,0x2FEB}, + [I(69,80)] = {14,0x306B}, + [I(70,80)] = {14,0x30EB}, + [I(71,80)] = {14,0x316B}, + [I(72,80)] = {14,0x31EB}, + [I(73,80)] = {14,0x326B}, + [I(74,80)] = {14,0x32EB}, + [I(75,80)] = {14,0x336B}, + [I(76,80)] = {14,0x33EB}, + [I(77,80)] = {14,0x346B}, + [I(78,80)] = {14,0x34EB}, + [I(79,80)] = {14,0x356B}, + [I(80,80)] = {14,0x35EB}, + [I(81,80)] = {14,0x366B}, + [I(82,80)] = {14,0x36EB}, + [I(83,80)] = {14,0x376B}, + [I(84,80)] = {14,0x37EB}, + [I(85,80)] = {14,0x386B}, + [I(86,80)] = {14,0x38EB}, + [I(87,80)] = {14,0x396B}, + [I(88,80)] = {15,0x7E6B}, + [I(89,80)] = {14,0x39EB}, + [I(90,80)] = {15,0x7EEB}, + [I(91,80)] = {20,0xFFDEB}, + [I(92,80)] = {26,0x3FFF86B}, + [I(93,80)] = {20,0xFFE6B}, + [I(94,80)] = {21,0x1FFE6B}, + [I(95,80)] = {13,0x116B}, + [I(96,80)] = {22,0x3FFEEB}, + [I(97,80)] = {12,0x1EB}, + [I(98,80)] = {13,0x11EB}, + [I(99,80)] = {12,0x26B}, + [I(100,80)] = {13,0x126B}, + [I(101,80)] = {12,0x2EB}, + [I(102,80)] = {13,0x12EB}, + [I(103,80)] = {13,0x136B}, + [I(104,80)] = {13,0x13EB}, + [I(105,80)] = {12,0x36B}, + [I(106,80)] = {14,0x3A6B}, + [I(107,80)] = {14,0x3AEB}, + [I(108,80)] = {13,0x146B}, + [I(109,80)] = {13,0x14EB}, + [I(110,80)] = {13,0x156B}, + [I(111,80)] = {12,0x3EB}, + [I(112,80)] = {13,0x15EB}, + [I(113,80)] = {14,0x3B6B}, + [I(114,80)] = {13,0x166B}, + [I(115,80)] = {12,0x46B}, + [I(116,80)] = {12,0x4EB}, + [I(117,80)] = {13,0x16EB}, + [I(118,80)] = {14,0x3BEB}, + [I(119,80)] = {14,0x3C6B}, + [I(120,80)] = {14,0x3CEB}, + [I(121,80)] = {14,0x3D6B}, + [I(122,80)] = {14,0x3DEB}, + [I(123,80)] = {22,0x3FFF6B}, + [I(124,80)] = {18,0x3FE6B}, + [I(125,80)] = {21,0x1FFEEB}, + [I(126,80)] = {20,0xFFEEB}, + [I(127,80)] = {64,0}, + [I(128,80)] = {27,0x7FFF36B}, + [I(129,80)] = {29,0x1FFFE96B}, + [I(130,80)] = {27,0x7FFF3EB}, + [I(131,80)] = {27,0x7FFF46B}, + [I(132,80)] = {29,0x1FFFE9EB}, + [I(133,80)] = {29,0x1FFFEA6B}, + [I(134,80)] = {29,0x1FFFEAEB}, + [I(135,80)] = {30,0x3FFFECEB}, + [I(136,80)] = {29,0x1FFFEB6B}, + [I(137,80)] = {30,0x3FFFED6B}, + [I(138,80)] = {30,0x3FFFEDEB}, + [I(139,80)] = {30,0x3FFFEE6B}, + [I(140,80)] = {30,0x3FFFEEEB}, + [I(141,80)] = {30,0x3FFFEF6B}, + [I(142,80)] = {31,0x7FFFF5EB}, + [I(143,80)] = {30,0x3FFFEFEB}, + [I(144,80)] = {31,0x7FFFF66B}, + [I(145,80)] = {31,0x7FFFF6EB}, + [I(146,80)] = {29,0x1FFFEBEB}, + [I(147,80)] = {30,0x3FFFF06B}, + [I(148,80)] = {31,0x7FFFF76B}, + [I(149,80)] = {30,0x3FFFF0EB}, + [I(150,80)] = {30,0x3FFFF16B}, + [I(151,80)] = {30,0x3FFFF1EB}, + [I(152,80)] = {30,0x3FFFF26B}, + [I(153,80)] = {28,0xFFFEE6B}, + [I(154,80)] = {29,0x1FFFEC6B}, + [I(155,80)] = {30,0x3FFFF2EB}, + [I(156,80)] = {29,0x1FFFECEB}, + [I(157,80)] = {30,0x3FFFF36B}, + [I(158,80)] = {30,0x3FFFF3EB}, + [I(159,80)] = {31,0x7FFFF7EB}, + [I(160,80)] = {29,0x1FFFED6B}, + [I(161,80)] = {28,0xFFFEEEB}, + [I(162,80)] = {27,0x7FFF4EB}, + [I(163,80)] = {29,0x1FFFEDEB}, + [I(164,80)] = {29,0x1FFFEE6B}, + [I(165,80)] = {30,0x3FFFF46B}, + [I(166,80)] = {30,0x3FFFF4EB}, + [I(167,80)] = {28,0xFFFEF6B}, + [I(168,80)] = {30,0x3FFFF56B}, + [I(169,80)] = {29,0x1FFFEEEB}, + [I(170,80)] = {29,0x1FFFEF6B}, + [I(171,80)] = {31,0x7FFFF86B}, + [I(172,80)] = {28,0xFFFEFEB}, + [I(173,80)] = {29,0x1FFFEFEB}, + [I(174,80)] = {30,0x3FFFF5EB}, + [I(175,80)] = {30,0x3FFFF66B}, + [I(176,80)] = {28,0xFFFF06B}, + [I(177,80)] = {28,0xFFFF0EB}, + [I(178,80)] = {29,0x1FFFF06B}, + [I(179,80)] = {28,0xFFFF16B}, + [I(180,80)] = {30,0x3FFFF6EB}, + [I(181,80)] = {29,0x1FFFF0EB}, + [I(182,80)] = {30,0x3FFFF76B}, + [I(183,80)] = {30,0x3FFFF7EB}, + [I(184,80)] = {27,0x7FFF56B}, + [I(185,80)] = {29,0x1FFFF16B}, + [I(186,80)] = {29,0x1FFFF1EB}, + [I(187,80)] = {29,0x1FFFF26B}, + [I(188,80)] = {30,0x3FFFF86B}, + [I(189,80)] = {29,0x1FFFF2EB}, + [I(190,80)] = {29,0x1FFFF36B}, + [I(191,80)] = {30,0x3FFFF8EB}, + [I(192,80)] = {64,0}, + [I(193,80)] = {64,0}, + [I(194,80)] = {27,0x7FFF5EB}, + [I(195,80)] = {26,0x3FFF8EB}, + [I(196,80)] = {29,0x1FFFF3EB}, + [I(197,80)] = {30,0x3FFFF96B}, + [I(198,80)] = {29,0x1FFFF46B}, + [I(199,80)] = {X32,0xFFFFF66B}, + [I(200,80)] = {64,0}, + [I(201,80)] = {64,0}, + [I(202,80)] = {64,0}, + [I(203,80)] = {64,0}, + [I(204,80)] = {64,0}, + [I(205,80)] = {64,0}, + [I(206,80)] = {31,0x7FFFF8EB}, + [I(207,80)] = {X32,0xFFFFF6EB}, + [I(208,80)] = {26,0x3FFF96B}, + [I(209,80)] = {28,0xFFFF1EB}, + [I(210,80)] = {64,0}, + [I(211,80)] = {64,0}, + [I(212,80)] = {64,0}, + [I(213,80)] = {64,0}, + [I(214,80)] = {64,0}, + [I(215,80)] = {31,0x7FFFF96B}, + [I(216,80)] = {28,0xFFFF26B}, + [I(217,80)] = {28,0xFFFF2EB}, + [I(218,80)] = {64,0}, + [I(219,80)] = {64,0}, + [I(220,80)] = {64,0}, + [I(221,80)] = {64,0}, + [I(222,80)] = {64,0}, + [I(223,80)] = {64,0}, + [I(224,80)] = {27,0x7FFF66B}, + [I(225,80)] = {31,0x7FFFF9EB}, + [I(226,80)] = {27,0x7FFF6EB}, + [I(227,80)] = {28,0xFFFF36B}, + [I(228,80)] = {29,0x1FFFF4EB}, + [I(229,80)] = {28,0xFFFF3EB}, + [I(230,80)] = {28,0xFFFF46B}, + [I(231,80)] = {30,0x3FFFF9EB}, + [I(232,80)] = {29,0x1FFFF56B}, + [I(233,80)] = {29,0x1FFFF5EB}, + [I(234,80)] = {X32,0xFFFFF76B}, + [I(235,80)] = {X32,0xFFFFF7EB}, + [I(236,80)] = {31,0x7FFFFA6B}, + [I(237,80)] = {31,0x7FFFFAEB}, + [I(238,80)] = {64,0}, + [I(239,80)] = {30,0x3FFFFA6B}, + [I(240,80)] = {64,0}, + [I(241,80)] = {64,0}, + [I(242,80)] = {64,0}, + [I(243,80)] = {64,0}, + [I(244,80)] = {64,0}, + [I(245,80)] = {64,0}, + [I(246,80)] = {64,0}, + [I(247,80)] = {64,0}, + [I(248,80)] = {64,0}, + [I(249,80)] = {64,0}, + [I(250,80)] = {64,0}, + [I(251,80)] = {64,0}, + [I(252,80)] = {64,0}, + [I(253,80)] = {64,0}, + [I(254,80)] = {64,0}, + [I(255,80)] = {64,0}, + [I(0,81)] = {20,0xFFC6C}, + [I(1,81)] = {30,0x3FFFEC6C}, + [I(2,81)] = {64,0}, + [I(3,81)] = {64,0}, + [I(4,81)] = {64,0}, + [I(5,81)] = {64,0}, + [I(6,81)] = {64,0}, + [I(7,81)] = {64,0}, + [I(8,81)] = {64,0}, + [I(9,81)] = {31,0x7FFFF56C}, + [I(10,81)] = {64,0}, + [I(11,81)] = {64,0}, + [I(12,81)] = {64,0}, + [I(13,81)] = {64,0}, + [I(14,81)] = {64,0}, + [I(15,81)] = {64,0}, + [I(16,81)] = {64,0}, + [I(17,81)] = {64,0}, + [I(18,81)] = {64,0}, + [I(19,81)] = {64,0}, + [I(20,81)] = {64,0}, + [I(21,81)] = {64,0}, + [I(22,81)] = {64,0}, + [I(23,81)] = {64,0}, + [I(24,81)] = {64,0}, + [I(25,81)] = {64,0}, + [I(26,81)] = {64,0}, + [I(27,81)] = {64,0}, + [I(28,81)] = {64,0}, + [I(29,81)] = {64,0}, + [I(30,81)] = {64,0}, + [I(31,81)] = {64,0}, + [I(32,81)] = {13,0xA6C}, + [I(33,81)] = {17,0x1FC6C}, + [I(34,81)] = {17,0x1FCEC}, + [I(35,81)] = {19,0x7FD6C}, + [I(36,81)] = {20,0xFFCEC}, + [I(37,81)] = {13,0xAEC}, + [I(38,81)] = {15,0x7C6C}, + [I(39,81)] = {18,0x3FD6C}, + [I(40,81)] = {17,0x1FD6C}, + [I(41,81)] = {17,0x1FDEC}, + [I(42,81)] = {15,0x7CEC}, + [I(43,81)] = {18,0x3FDEC}, + [I(44,81)] = {15,0x7D6C}, + [I(45,81)] = {13,0xB6C}, + [I(46,81)] = {13,0xBEC}, + [I(47,81)] = {13,0xC6C}, + [I(48,81)] = {12,0x6C}, + [I(49,81)] = {12,0xEC}, + [I(50,81)] = {12,0x16C}, + [I(51,81)] = {13,0xCEC}, + [I(52,81)] = {13,0xD6C}, + [I(53,81)] = {13,0xDEC}, + [I(54,81)] = {13,0xE6C}, + [I(55,81)] = {13,0xEEC}, + [I(56,81)] = {13,0xF6C}, + [I(57,81)] = {13,0xFEC}, + [I(58,81)] = {14,0x2E6C}, + [I(59,81)] = {15,0x7DEC}, + [I(60,81)] = {22,0x3FFE6C}, + [I(61,81)] = {13,0x106C}, + [I(62,81)] = {19,0x7FDEC}, + [I(63,81)] = {17,0x1FE6C}, + [I(64,81)] = {20,0xFFD6C}, + [I(65,81)] = {13,0x10EC}, + [I(66,81)] = {14,0x2EEC}, + [I(67,81)] = {14,0x2F6C}, + [I(68,81)] = {14,0x2FEC}, + [I(69,81)] = {14,0x306C}, + [I(70,81)] = {14,0x30EC}, + [I(71,81)] = {14,0x316C}, + [I(72,81)] = {14,0x31EC}, + [I(73,81)] = {14,0x326C}, + [I(74,81)] = {14,0x32EC}, + [I(75,81)] = {14,0x336C}, + [I(76,81)] = {14,0x33EC}, + [I(77,81)] = {14,0x346C}, + [I(78,81)] = {14,0x34EC}, + [I(79,81)] = {14,0x356C}, + [I(80,81)] = {14,0x35EC}, + [I(81,81)] = {14,0x366C}, + [I(82,81)] = {14,0x36EC}, + [I(83,81)] = {14,0x376C}, + [I(84,81)] = {14,0x37EC}, + [I(85,81)] = {14,0x386C}, + [I(86,81)] = {14,0x38EC}, + [I(87,81)] = {14,0x396C}, + [I(88,81)] = {15,0x7E6C}, + [I(89,81)] = {14,0x39EC}, + [I(90,81)] = {15,0x7EEC}, + [I(91,81)] = {20,0xFFDEC}, + [I(92,81)] = {26,0x3FFF86C}, + [I(93,81)] = {20,0xFFE6C}, + [I(94,81)] = {21,0x1FFE6C}, + [I(95,81)] = {13,0x116C}, + [I(96,81)] = {22,0x3FFEEC}, + [I(97,81)] = {12,0x1EC}, + [I(98,81)] = {13,0x11EC}, + [I(99,81)] = {12,0x26C}, + [I(100,81)] = {13,0x126C}, + [I(101,81)] = {12,0x2EC}, + [I(102,81)] = {13,0x12EC}, + [I(103,81)] = {13,0x136C}, + [I(104,81)] = {13,0x13EC}, + [I(105,81)] = {12,0x36C}, + [I(106,81)] = {14,0x3A6C}, + [I(107,81)] = {14,0x3AEC}, + [I(108,81)] = {13,0x146C}, + [I(109,81)] = {13,0x14EC}, + [I(110,81)] = {13,0x156C}, + [I(111,81)] = {12,0x3EC}, + [I(112,81)] = {13,0x15EC}, + [I(113,81)] = {14,0x3B6C}, + [I(114,81)] = {13,0x166C}, + [I(115,81)] = {12,0x46C}, + [I(116,81)] = {12,0x4EC}, + [I(117,81)] = {13,0x16EC}, + [I(118,81)] = {14,0x3BEC}, + [I(119,81)] = {14,0x3C6C}, + [I(120,81)] = {14,0x3CEC}, + [I(121,81)] = {14,0x3D6C}, + [I(122,81)] = {14,0x3DEC}, + [I(123,81)] = {22,0x3FFF6C}, + [I(124,81)] = {18,0x3FE6C}, + [I(125,81)] = {21,0x1FFEEC}, + [I(126,81)] = {20,0xFFEEC}, + [I(127,81)] = {64,0}, + [I(128,81)] = {27,0x7FFF36C}, + [I(129,81)] = {29,0x1FFFE96C}, + [I(130,81)] = {27,0x7FFF3EC}, + [I(131,81)] = {27,0x7FFF46C}, + [I(132,81)] = {29,0x1FFFE9EC}, + [I(133,81)] = {29,0x1FFFEA6C}, + [I(134,81)] = {29,0x1FFFEAEC}, + [I(135,81)] = {30,0x3FFFECEC}, + [I(136,81)] = {29,0x1FFFEB6C}, + [I(137,81)] = {30,0x3FFFED6C}, + [I(138,81)] = {30,0x3FFFEDEC}, + [I(139,81)] = {30,0x3FFFEE6C}, + [I(140,81)] = {30,0x3FFFEEEC}, + [I(141,81)] = {30,0x3FFFEF6C}, + [I(142,81)] = {31,0x7FFFF5EC}, + [I(143,81)] = {30,0x3FFFEFEC}, + [I(144,81)] = {31,0x7FFFF66C}, + [I(145,81)] = {31,0x7FFFF6EC}, + [I(146,81)] = {29,0x1FFFEBEC}, + [I(147,81)] = {30,0x3FFFF06C}, + [I(148,81)] = {31,0x7FFFF76C}, + [I(149,81)] = {30,0x3FFFF0EC}, + [I(150,81)] = {30,0x3FFFF16C}, + [I(151,81)] = {30,0x3FFFF1EC}, + [I(152,81)] = {30,0x3FFFF26C}, + [I(153,81)] = {28,0xFFFEE6C}, + [I(154,81)] = {29,0x1FFFEC6C}, + [I(155,81)] = {30,0x3FFFF2EC}, + [I(156,81)] = {29,0x1FFFECEC}, + [I(157,81)] = {30,0x3FFFF36C}, + [I(158,81)] = {30,0x3FFFF3EC}, + [I(159,81)] = {31,0x7FFFF7EC}, + [I(160,81)] = {29,0x1FFFED6C}, + [I(161,81)] = {28,0xFFFEEEC}, + [I(162,81)] = {27,0x7FFF4EC}, + [I(163,81)] = {29,0x1FFFEDEC}, + [I(164,81)] = {29,0x1FFFEE6C}, + [I(165,81)] = {30,0x3FFFF46C}, + [I(166,81)] = {30,0x3FFFF4EC}, + [I(167,81)] = {28,0xFFFEF6C}, + [I(168,81)] = {30,0x3FFFF56C}, + [I(169,81)] = {29,0x1FFFEEEC}, + [I(170,81)] = {29,0x1FFFEF6C}, + [I(171,81)] = {31,0x7FFFF86C}, + [I(172,81)] = {28,0xFFFEFEC}, + [I(173,81)] = {29,0x1FFFEFEC}, + [I(174,81)] = {30,0x3FFFF5EC}, + [I(175,81)] = {30,0x3FFFF66C}, + [I(176,81)] = {28,0xFFFF06C}, + [I(177,81)] = {28,0xFFFF0EC}, + [I(178,81)] = {29,0x1FFFF06C}, + [I(179,81)] = {28,0xFFFF16C}, + [I(180,81)] = {30,0x3FFFF6EC}, + [I(181,81)] = {29,0x1FFFF0EC}, + [I(182,81)] = {30,0x3FFFF76C}, + [I(183,81)] = {30,0x3FFFF7EC}, + [I(184,81)] = {27,0x7FFF56C}, + [I(185,81)] = {29,0x1FFFF16C}, + [I(186,81)] = {29,0x1FFFF1EC}, + [I(187,81)] = {29,0x1FFFF26C}, + [I(188,81)] = {30,0x3FFFF86C}, + [I(189,81)] = {29,0x1FFFF2EC}, + [I(190,81)] = {29,0x1FFFF36C}, + [I(191,81)] = {30,0x3FFFF8EC}, + [I(192,81)] = {64,0}, + [I(193,81)] = {64,0}, + [I(194,81)] = {27,0x7FFF5EC}, + [I(195,81)] = {26,0x3FFF8EC}, + [I(196,81)] = {29,0x1FFFF3EC}, + [I(197,81)] = {30,0x3FFFF96C}, + [I(198,81)] = {29,0x1FFFF46C}, + [I(199,81)] = {X32,0xFFFFF66C}, + [I(200,81)] = {64,0}, + [I(201,81)] = {64,0}, + [I(202,81)] = {64,0}, + [I(203,81)] = {64,0}, + [I(204,81)] = {64,0}, + [I(205,81)] = {64,0}, + [I(206,81)] = {31,0x7FFFF8EC}, + [I(207,81)] = {X32,0xFFFFF6EC}, + [I(208,81)] = {26,0x3FFF96C}, + [I(209,81)] = {28,0xFFFF1EC}, + [I(210,81)] = {64,0}, + [I(211,81)] = {64,0}, + [I(212,81)] = {64,0}, + [I(213,81)] = {64,0}, + [I(214,81)] = {64,0}, + [I(215,81)] = {31,0x7FFFF96C}, + [I(216,81)] = {28,0xFFFF26C}, + [I(217,81)] = {28,0xFFFF2EC}, + [I(218,81)] = {64,0}, + [I(219,81)] = {64,0}, + [I(220,81)] = {64,0}, + [I(221,81)] = {64,0}, + [I(222,81)] = {64,0}, + [I(223,81)] = {64,0}, + [I(224,81)] = {27,0x7FFF66C}, + [I(225,81)] = {31,0x7FFFF9EC}, + [I(226,81)] = {27,0x7FFF6EC}, + [I(227,81)] = {28,0xFFFF36C}, + [I(228,81)] = {29,0x1FFFF4EC}, + [I(229,81)] = {28,0xFFFF3EC}, + [I(230,81)] = {28,0xFFFF46C}, + [I(231,81)] = {30,0x3FFFF9EC}, + [I(232,81)] = {29,0x1FFFF56C}, + [I(233,81)] = {29,0x1FFFF5EC}, + [I(234,81)] = {X32,0xFFFFF76C}, + [I(235,81)] = {X32,0xFFFFF7EC}, + [I(236,81)] = {31,0x7FFFFA6C}, + [I(237,81)] = {31,0x7FFFFAEC}, + [I(238,81)] = {64,0}, + [I(239,81)] = {30,0x3FFFFA6C}, + [I(240,81)] = {64,0}, + [I(241,81)] = {64,0}, + [I(242,81)] = {64,0}, + [I(243,81)] = {64,0}, + [I(244,81)] = {64,0}, + [I(245,81)] = {64,0}, + [I(246,81)] = {64,0}, + [I(247,81)] = {64,0}, + [I(248,81)] = {64,0}, + [I(249,81)] = {64,0}, + [I(250,81)] = {64,0}, + [I(251,81)] = {64,0}, + [I(252,81)] = {64,0}, + [I(253,81)] = {64,0}, + [I(254,81)] = {64,0}, + [I(255,81)] = {64,0}, + [I(0,82)] = {20,0xFFC6D}, + [I(1,82)] = {30,0x3FFFEC6D}, + [I(2,82)] = {64,0}, + [I(3,82)] = {64,0}, + [I(4,82)] = {64,0}, + [I(5,82)] = {64,0}, + [I(6,82)] = {64,0}, + [I(7,82)] = {64,0}, + [I(8,82)] = {64,0}, + [I(9,82)] = {31,0x7FFFF56D}, + [I(10,82)] = {64,0}, + [I(11,82)] = {64,0}, + [I(12,82)] = {64,0}, + [I(13,82)] = {64,0}, + [I(14,82)] = {64,0}, + [I(15,82)] = {64,0}, + [I(16,82)] = {64,0}, + [I(17,82)] = {64,0}, + [I(18,82)] = {64,0}, + [I(19,82)] = {64,0}, + [I(20,82)] = {64,0}, + [I(21,82)] = {64,0}, + [I(22,82)] = {64,0}, + [I(23,82)] = {64,0}, + [I(24,82)] = {64,0}, + [I(25,82)] = {64,0}, + [I(26,82)] = {64,0}, + [I(27,82)] = {64,0}, + [I(28,82)] = {64,0}, + [I(29,82)] = {64,0}, + [I(30,82)] = {64,0}, + [I(31,82)] = {64,0}, + [I(32,82)] = {13,0xA6D}, + [I(33,82)] = {17,0x1FC6D}, + [I(34,82)] = {17,0x1FCED}, + [I(35,82)] = {19,0x7FD6D}, + [I(36,82)] = {20,0xFFCED}, + [I(37,82)] = {13,0xAED}, + [I(38,82)] = {15,0x7C6D}, + [I(39,82)] = {18,0x3FD6D}, + [I(40,82)] = {17,0x1FD6D}, + [I(41,82)] = {17,0x1FDED}, + [I(42,82)] = {15,0x7CED}, + [I(43,82)] = {18,0x3FDED}, + [I(44,82)] = {15,0x7D6D}, + [I(45,82)] = {13,0xB6D}, + [I(46,82)] = {13,0xBED}, + [I(47,82)] = {13,0xC6D}, + [I(48,82)] = {12,0x6D}, + [I(49,82)] = {12,0xED}, + [I(50,82)] = {12,0x16D}, + [I(51,82)] = {13,0xCED}, + [I(52,82)] = {13,0xD6D}, + [I(53,82)] = {13,0xDED}, + [I(54,82)] = {13,0xE6D}, + [I(55,82)] = {13,0xEED}, + [I(56,82)] = {13,0xF6D}, + [I(57,82)] = {13,0xFED}, + [I(58,82)] = {14,0x2E6D}, + [I(59,82)] = {15,0x7DED}, + [I(60,82)] = {22,0x3FFE6D}, + [I(61,82)] = {13,0x106D}, + [I(62,82)] = {19,0x7FDED}, + [I(63,82)] = {17,0x1FE6D}, + [I(64,82)] = {20,0xFFD6D}, + [I(65,82)] = {13,0x10ED}, + [I(66,82)] = {14,0x2EED}, + [I(67,82)] = {14,0x2F6D}, + [I(68,82)] = {14,0x2FED}, + [I(69,82)] = {14,0x306D}, + [I(70,82)] = {14,0x30ED}, + [I(71,82)] = {14,0x316D}, + [I(72,82)] = {14,0x31ED}, + [I(73,82)] = {14,0x326D}, + [I(74,82)] = {14,0x32ED}, + [I(75,82)] = {14,0x336D}, + [I(76,82)] = {14,0x33ED}, + [I(77,82)] = {14,0x346D}, + [I(78,82)] = {14,0x34ED}, + [I(79,82)] = {14,0x356D}, + [I(80,82)] = {14,0x35ED}, + [I(81,82)] = {14,0x366D}, + [I(82,82)] = {14,0x36ED}, + [I(83,82)] = {14,0x376D}, + [I(84,82)] = {14,0x37ED}, + [I(85,82)] = {14,0x386D}, + [I(86,82)] = {14,0x38ED}, + [I(87,82)] = {14,0x396D}, + [I(88,82)] = {15,0x7E6D}, + [I(89,82)] = {14,0x39ED}, + [I(90,82)] = {15,0x7EED}, + [I(91,82)] = {20,0xFFDED}, + [I(92,82)] = {26,0x3FFF86D}, + [I(93,82)] = {20,0xFFE6D}, + [I(94,82)] = {21,0x1FFE6D}, + [I(95,82)] = {13,0x116D}, + [I(96,82)] = {22,0x3FFEED}, + [I(97,82)] = {12,0x1ED}, + [I(98,82)] = {13,0x11ED}, + [I(99,82)] = {12,0x26D}, + [I(100,82)] = {13,0x126D}, + [I(101,82)] = {12,0x2ED}, + [I(102,82)] = {13,0x12ED}, + [I(103,82)] = {13,0x136D}, + [I(104,82)] = {13,0x13ED}, + [I(105,82)] = {12,0x36D}, + [I(106,82)] = {14,0x3A6D}, + [I(107,82)] = {14,0x3AED}, + [I(108,82)] = {13,0x146D}, + [I(109,82)] = {13,0x14ED}, + [I(110,82)] = {13,0x156D}, + [I(111,82)] = {12,0x3ED}, + [I(112,82)] = {13,0x15ED}, + [I(113,82)] = {14,0x3B6D}, + [I(114,82)] = {13,0x166D}, + [I(115,82)] = {12,0x46D}, + [I(116,82)] = {12,0x4ED}, + [I(117,82)] = {13,0x16ED}, + [I(118,82)] = {14,0x3BED}, + [I(119,82)] = {14,0x3C6D}, + [I(120,82)] = {14,0x3CED}, + [I(121,82)] = {14,0x3D6D}, + [I(122,82)] = {14,0x3DED}, + [I(123,82)] = {22,0x3FFF6D}, + [I(124,82)] = {18,0x3FE6D}, + [I(125,82)] = {21,0x1FFEED}, + [I(126,82)] = {20,0xFFEED}, + [I(127,82)] = {64,0}, + [I(128,82)] = {27,0x7FFF36D}, + [I(129,82)] = {29,0x1FFFE96D}, + [I(130,82)] = {27,0x7FFF3ED}, + [I(131,82)] = {27,0x7FFF46D}, + [I(132,82)] = {29,0x1FFFE9ED}, + [I(133,82)] = {29,0x1FFFEA6D}, + [I(134,82)] = {29,0x1FFFEAED}, + [I(135,82)] = {30,0x3FFFECED}, + [I(136,82)] = {29,0x1FFFEB6D}, + [I(137,82)] = {30,0x3FFFED6D}, + [I(138,82)] = {30,0x3FFFEDED}, + [I(139,82)] = {30,0x3FFFEE6D}, + [I(140,82)] = {30,0x3FFFEEED}, + [I(141,82)] = {30,0x3FFFEF6D}, + [I(142,82)] = {31,0x7FFFF5ED}, + [I(143,82)] = {30,0x3FFFEFED}, + [I(144,82)] = {31,0x7FFFF66D}, + [I(145,82)] = {31,0x7FFFF6ED}, + [I(146,82)] = {29,0x1FFFEBED}, + [I(147,82)] = {30,0x3FFFF06D}, + [I(148,82)] = {31,0x7FFFF76D}, + [I(149,82)] = {30,0x3FFFF0ED}, + [I(150,82)] = {30,0x3FFFF16D}, + [I(151,82)] = {30,0x3FFFF1ED}, + [I(152,82)] = {30,0x3FFFF26D}, + [I(153,82)] = {28,0xFFFEE6D}, + [I(154,82)] = {29,0x1FFFEC6D}, + [I(155,82)] = {30,0x3FFFF2ED}, + [I(156,82)] = {29,0x1FFFECED}, + [I(157,82)] = {30,0x3FFFF36D}, + [I(158,82)] = {30,0x3FFFF3ED}, + [I(159,82)] = {31,0x7FFFF7ED}, + [I(160,82)] = {29,0x1FFFED6D}, + [I(161,82)] = {28,0xFFFEEED}, + [I(162,82)] = {27,0x7FFF4ED}, + [I(163,82)] = {29,0x1FFFEDED}, + [I(164,82)] = {29,0x1FFFEE6D}, + [I(165,82)] = {30,0x3FFFF46D}, + [I(166,82)] = {30,0x3FFFF4ED}, + [I(167,82)] = {28,0xFFFEF6D}, + [I(168,82)] = {30,0x3FFFF56D}, + [I(169,82)] = {29,0x1FFFEEED}, + [I(170,82)] = {29,0x1FFFEF6D}, + [I(171,82)] = {31,0x7FFFF86D}, + [I(172,82)] = {28,0xFFFEFED}, + [I(173,82)] = {29,0x1FFFEFED}, + [I(174,82)] = {30,0x3FFFF5ED}, + [I(175,82)] = {30,0x3FFFF66D}, + [I(176,82)] = {28,0xFFFF06D}, + [I(177,82)] = {28,0xFFFF0ED}, + [I(178,82)] = {29,0x1FFFF06D}, + [I(179,82)] = {28,0xFFFF16D}, + [I(180,82)] = {30,0x3FFFF6ED}, + [I(181,82)] = {29,0x1FFFF0ED}, + [I(182,82)] = {30,0x3FFFF76D}, + [I(183,82)] = {30,0x3FFFF7ED}, + [I(184,82)] = {27,0x7FFF56D}, + [I(185,82)] = {29,0x1FFFF16D}, + [I(186,82)] = {29,0x1FFFF1ED}, + [I(187,82)] = {29,0x1FFFF26D}, + [I(188,82)] = {30,0x3FFFF86D}, + [I(189,82)] = {29,0x1FFFF2ED}, + [I(190,82)] = {29,0x1FFFF36D}, + [I(191,82)] = {30,0x3FFFF8ED}, + [I(192,82)] = {64,0}, + [I(193,82)] = {64,0}, + [I(194,82)] = {27,0x7FFF5ED}, + [I(195,82)] = {26,0x3FFF8ED}, + [I(196,82)] = {29,0x1FFFF3ED}, + [I(197,82)] = {30,0x3FFFF96D}, + [I(198,82)] = {29,0x1FFFF46D}, + [I(199,82)] = {X32,0xFFFFF66D}, + [I(200,82)] = {64,0}, + [I(201,82)] = {64,0}, + [I(202,82)] = {64,0}, + [I(203,82)] = {64,0}, + [I(204,82)] = {64,0}, + [I(205,82)] = {64,0}, + [I(206,82)] = {31,0x7FFFF8ED}, + [I(207,82)] = {X32,0xFFFFF6ED}, + [I(208,82)] = {26,0x3FFF96D}, + [I(209,82)] = {28,0xFFFF1ED}, + [I(210,82)] = {64,0}, + [I(211,82)] = {64,0}, + [I(212,82)] = {64,0}, + [I(213,82)] = {64,0}, + [I(214,82)] = {64,0}, + [I(215,82)] = {31,0x7FFFF96D}, + [I(216,82)] = {28,0xFFFF26D}, + [I(217,82)] = {28,0xFFFF2ED}, + [I(218,82)] = {64,0}, + [I(219,82)] = {64,0}, + [I(220,82)] = {64,0}, + [I(221,82)] = {64,0}, + [I(222,82)] = {64,0}, + [I(223,82)] = {64,0}, + [I(224,82)] = {27,0x7FFF66D}, + [I(225,82)] = {31,0x7FFFF9ED}, + [I(226,82)] = {27,0x7FFF6ED}, + [I(227,82)] = {28,0xFFFF36D}, + [I(228,82)] = {29,0x1FFFF4ED}, + [I(229,82)] = {28,0xFFFF3ED}, + [I(230,82)] = {28,0xFFFF46D}, + [I(231,82)] = {30,0x3FFFF9ED}, + [I(232,82)] = {29,0x1FFFF56D}, + [I(233,82)] = {29,0x1FFFF5ED}, + [I(234,82)] = {X32,0xFFFFF76D}, + [I(235,82)] = {X32,0xFFFFF7ED}, + [I(236,82)] = {31,0x7FFFFA6D}, + [I(237,82)] = {31,0x7FFFFAED}, + [I(238,82)] = {64,0}, + [I(239,82)] = {30,0x3FFFFA6D}, + [I(240,82)] = {64,0}, + [I(241,82)] = {64,0}, + [I(242,82)] = {64,0}, + [I(243,82)] = {64,0}, + [I(244,82)] = {64,0}, + [I(245,82)] = {64,0}, + [I(246,82)] = {64,0}, + [I(247,82)] = {64,0}, + [I(248,82)] = {64,0}, + [I(249,82)] = {64,0}, + [I(250,82)] = {64,0}, + [I(251,82)] = {64,0}, + [I(252,82)] = {64,0}, + [I(253,82)] = {64,0}, + [I(254,82)] = {64,0}, + [I(255,82)] = {64,0}, + [I(0,83)] = {20,0xFFC6E}, + [I(1,83)] = {30,0x3FFFEC6E}, + [I(2,83)] = {64,0}, + [I(3,83)] = {64,0}, + [I(4,83)] = {64,0}, + [I(5,83)] = {64,0}, + [I(6,83)] = {64,0}, + [I(7,83)] = {64,0}, + [I(8,83)] = {64,0}, + [I(9,83)] = {31,0x7FFFF56E}, + [I(10,83)] = {64,0}, + [I(11,83)] = {64,0}, + [I(12,83)] = {64,0}, + [I(13,83)] = {64,0}, + [I(14,83)] = {64,0}, + [I(15,83)] = {64,0}, + [I(16,83)] = {64,0}, + [I(17,83)] = {64,0}, + [I(18,83)] = {64,0}, + [I(19,83)] = {64,0}, + [I(20,83)] = {64,0}, + [I(21,83)] = {64,0}, + [I(22,83)] = {64,0}, + [I(23,83)] = {64,0}, + [I(24,83)] = {64,0}, + [I(25,83)] = {64,0}, + [I(26,83)] = {64,0}, + [I(27,83)] = {64,0}, + [I(28,83)] = {64,0}, + [I(29,83)] = {64,0}, + [I(30,83)] = {64,0}, + [I(31,83)] = {64,0}, + [I(32,83)] = {13,0xA6E}, + [I(33,83)] = {17,0x1FC6E}, + [I(34,83)] = {17,0x1FCEE}, + [I(35,83)] = {19,0x7FD6E}, + [I(36,83)] = {20,0xFFCEE}, + [I(37,83)] = {13,0xAEE}, + [I(38,83)] = {15,0x7C6E}, + [I(39,83)] = {18,0x3FD6E}, + [I(40,83)] = {17,0x1FD6E}, + [I(41,83)] = {17,0x1FDEE}, + [I(42,83)] = {15,0x7CEE}, + [I(43,83)] = {18,0x3FDEE}, + [I(44,83)] = {15,0x7D6E}, + [I(45,83)] = {13,0xB6E}, + [I(46,83)] = {13,0xBEE}, + [I(47,83)] = {13,0xC6E}, + [I(48,83)] = {12,0x6E}, + [I(49,83)] = {12,0xEE}, + [I(50,83)] = {12,0x16E}, + [I(51,83)] = {13,0xCEE}, + [I(52,83)] = {13,0xD6E}, + [I(53,83)] = {13,0xDEE}, + [I(54,83)] = {13,0xE6E}, + [I(55,83)] = {13,0xEEE}, + [I(56,83)] = {13,0xF6E}, + [I(57,83)] = {13,0xFEE}, + [I(58,83)] = {14,0x2E6E}, + [I(59,83)] = {15,0x7DEE}, + [I(60,83)] = {22,0x3FFE6E}, + [I(61,83)] = {13,0x106E}, + [I(62,83)] = {19,0x7FDEE}, + [I(63,83)] = {17,0x1FE6E}, + [I(64,83)] = {20,0xFFD6E}, + [I(65,83)] = {13,0x10EE}, + [I(66,83)] = {14,0x2EEE}, + [I(67,83)] = {14,0x2F6E}, + [I(68,83)] = {14,0x2FEE}, + [I(69,83)] = {14,0x306E}, + [I(70,83)] = {14,0x30EE}, + [I(71,83)] = {14,0x316E}, + [I(72,83)] = {14,0x31EE}, + [I(73,83)] = {14,0x326E}, + [I(74,83)] = {14,0x32EE}, + [I(75,83)] = {14,0x336E}, + [I(76,83)] = {14,0x33EE}, + [I(77,83)] = {14,0x346E}, + [I(78,83)] = {14,0x34EE}, + [I(79,83)] = {14,0x356E}, + [I(80,83)] = {14,0x35EE}, + [I(81,83)] = {14,0x366E}, + [I(82,83)] = {14,0x36EE}, + [I(83,83)] = {14,0x376E}, + [I(84,83)] = {14,0x37EE}, + [I(85,83)] = {14,0x386E}, + [I(86,83)] = {14,0x38EE}, + [I(87,83)] = {14,0x396E}, + [I(88,83)] = {15,0x7E6E}, + [I(89,83)] = {14,0x39EE}, + [I(90,83)] = {15,0x7EEE}, + [I(91,83)] = {20,0xFFDEE}, + [I(92,83)] = {26,0x3FFF86E}, + [I(93,83)] = {20,0xFFE6E}, + [I(94,83)] = {21,0x1FFE6E}, + [I(95,83)] = {13,0x116E}, + [I(96,83)] = {22,0x3FFEEE}, + [I(97,83)] = {12,0x1EE}, + [I(98,83)] = {13,0x11EE}, + [I(99,83)] = {12,0x26E}, + [I(100,83)] = {13,0x126E}, + [I(101,83)] = {12,0x2EE}, + [I(102,83)] = {13,0x12EE}, + [I(103,83)] = {13,0x136E}, + [I(104,83)] = {13,0x13EE}, + [I(105,83)] = {12,0x36E}, + [I(106,83)] = {14,0x3A6E}, + [I(107,83)] = {14,0x3AEE}, + [I(108,83)] = {13,0x146E}, + [I(109,83)] = {13,0x14EE}, + [I(110,83)] = {13,0x156E}, + [I(111,83)] = {12,0x3EE}, + [I(112,83)] = {13,0x15EE}, + [I(113,83)] = {14,0x3B6E}, + [I(114,83)] = {13,0x166E}, + [I(115,83)] = {12,0x46E}, + [I(116,83)] = {12,0x4EE}, + [I(117,83)] = {13,0x16EE}, + [I(118,83)] = {14,0x3BEE}, + [I(119,83)] = {14,0x3C6E}, + [I(120,83)] = {14,0x3CEE}, + [I(121,83)] = {14,0x3D6E}, + [I(122,83)] = {14,0x3DEE}, + [I(123,83)] = {22,0x3FFF6E}, + [I(124,83)] = {18,0x3FE6E}, + [I(125,83)] = {21,0x1FFEEE}, + [I(126,83)] = {20,0xFFEEE}, + [I(127,83)] = {64,0}, + [I(128,83)] = {27,0x7FFF36E}, + [I(129,83)] = {29,0x1FFFE96E}, + [I(130,83)] = {27,0x7FFF3EE}, + [I(131,83)] = {27,0x7FFF46E}, + [I(132,83)] = {29,0x1FFFE9EE}, + [I(133,83)] = {29,0x1FFFEA6E}, + [I(134,83)] = {29,0x1FFFEAEE}, + [I(135,83)] = {30,0x3FFFECEE}, + [I(136,83)] = {29,0x1FFFEB6E}, + [I(137,83)] = {30,0x3FFFED6E}, + [I(138,83)] = {30,0x3FFFEDEE}, + [I(139,83)] = {30,0x3FFFEE6E}, + [I(140,83)] = {30,0x3FFFEEEE}, + [I(141,83)] = {30,0x3FFFEF6E}, + [I(142,83)] = {31,0x7FFFF5EE}, + [I(143,83)] = {30,0x3FFFEFEE}, + [I(144,83)] = {31,0x7FFFF66E}, + [I(145,83)] = {31,0x7FFFF6EE}, + [I(146,83)] = {29,0x1FFFEBEE}, + [I(147,83)] = {30,0x3FFFF06E}, + [I(148,83)] = {31,0x7FFFF76E}, + [I(149,83)] = {30,0x3FFFF0EE}, + [I(150,83)] = {30,0x3FFFF16E}, + [I(151,83)] = {30,0x3FFFF1EE}, + [I(152,83)] = {30,0x3FFFF26E}, + [I(153,83)] = {28,0xFFFEE6E}, + [I(154,83)] = {29,0x1FFFEC6E}, + [I(155,83)] = {30,0x3FFFF2EE}, + [I(156,83)] = {29,0x1FFFECEE}, + [I(157,83)] = {30,0x3FFFF36E}, + [I(158,83)] = {30,0x3FFFF3EE}, + [I(159,83)] = {31,0x7FFFF7EE}, + [I(160,83)] = {29,0x1FFFED6E}, + [I(161,83)] = {28,0xFFFEEEE}, + [I(162,83)] = {27,0x7FFF4EE}, + [I(163,83)] = {29,0x1FFFEDEE}, + [I(164,83)] = {29,0x1FFFEE6E}, + [I(165,83)] = {30,0x3FFFF46E}, + [I(166,83)] = {30,0x3FFFF4EE}, + [I(167,83)] = {28,0xFFFEF6E}, + [I(168,83)] = {30,0x3FFFF56E}, + [I(169,83)] = {29,0x1FFFEEEE}, + [I(170,83)] = {29,0x1FFFEF6E}, + [I(171,83)] = {31,0x7FFFF86E}, + [I(172,83)] = {28,0xFFFEFEE}, + [I(173,83)] = {29,0x1FFFEFEE}, + [I(174,83)] = {30,0x3FFFF5EE}, + [I(175,83)] = {30,0x3FFFF66E}, + [I(176,83)] = {28,0xFFFF06E}, + [I(177,83)] = {28,0xFFFF0EE}, + [I(178,83)] = {29,0x1FFFF06E}, + [I(179,83)] = {28,0xFFFF16E}, + [I(180,83)] = {30,0x3FFFF6EE}, + [I(181,83)] = {29,0x1FFFF0EE}, + [I(182,83)] = {30,0x3FFFF76E}, + [I(183,83)] = {30,0x3FFFF7EE}, + [I(184,83)] = {27,0x7FFF56E}, + [I(185,83)] = {29,0x1FFFF16E}, + [I(186,83)] = {29,0x1FFFF1EE}, + [I(187,83)] = {29,0x1FFFF26E}, + [I(188,83)] = {30,0x3FFFF86E}, + [I(189,83)] = {29,0x1FFFF2EE}, + [I(190,83)] = {29,0x1FFFF36E}, + [I(191,83)] = {30,0x3FFFF8EE}, + [I(192,83)] = {64,0}, + [I(193,83)] = {64,0}, + [I(194,83)] = {27,0x7FFF5EE}, + [I(195,83)] = {26,0x3FFF8EE}, + [I(196,83)] = {29,0x1FFFF3EE}, + [I(197,83)] = {30,0x3FFFF96E}, + [I(198,83)] = {29,0x1FFFF46E}, + [I(199,83)] = {X32,0xFFFFF66E}, + [I(200,83)] = {64,0}, + [I(201,83)] = {64,0}, + [I(202,83)] = {64,0}, + [I(203,83)] = {64,0}, + [I(204,83)] = {64,0}, + [I(205,83)] = {64,0}, + [I(206,83)] = {31,0x7FFFF8EE}, + [I(207,83)] = {X32,0xFFFFF6EE}, + [I(208,83)] = {26,0x3FFF96E}, + [I(209,83)] = {28,0xFFFF1EE}, + [I(210,83)] = {64,0}, + [I(211,83)] = {64,0}, + [I(212,83)] = {64,0}, + [I(213,83)] = {64,0}, + [I(214,83)] = {64,0}, + [I(215,83)] = {31,0x7FFFF96E}, + [I(216,83)] = {28,0xFFFF26E}, + [I(217,83)] = {28,0xFFFF2EE}, + [I(218,83)] = {64,0}, + [I(219,83)] = {64,0}, + [I(220,83)] = {64,0}, + [I(221,83)] = {64,0}, + [I(222,83)] = {64,0}, + [I(223,83)] = {64,0}, + [I(224,83)] = {27,0x7FFF66E}, + [I(225,83)] = {31,0x7FFFF9EE}, + [I(226,83)] = {27,0x7FFF6EE}, + [I(227,83)] = {28,0xFFFF36E}, + [I(228,83)] = {29,0x1FFFF4EE}, + [I(229,83)] = {28,0xFFFF3EE}, + [I(230,83)] = {28,0xFFFF46E}, + [I(231,83)] = {30,0x3FFFF9EE}, + [I(232,83)] = {29,0x1FFFF56E}, + [I(233,83)] = {29,0x1FFFF5EE}, + [I(234,83)] = {X32,0xFFFFF76E}, + [I(235,83)] = {X32,0xFFFFF7EE}, + [I(236,83)] = {31,0x7FFFFA6E}, + [I(237,83)] = {31,0x7FFFFAEE}, + [I(238,83)] = {64,0}, + [I(239,83)] = {30,0x3FFFFA6E}, + [I(240,83)] = {64,0}, + [I(241,83)] = {64,0}, + [I(242,83)] = {64,0}, + [I(243,83)] = {64,0}, + [I(244,83)] = {64,0}, + [I(245,83)] = {64,0}, + [I(246,83)] = {64,0}, + [I(247,83)] = {64,0}, + [I(248,83)] = {64,0}, + [I(249,83)] = {64,0}, + [I(250,83)] = {64,0}, + [I(251,83)] = {64,0}, + [I(252,83)] = {64,0}, + [I(253,83)] = {64,0}, + [I(254,83)] = {64,0}, + [I(255,83)] = {64,0}, + [I(0,84)] = {20,0xFFC6F}, + [I(1,84)] = {30,0x3FFFEC6F}, + [I(2,84)] = {64,0}, + [I(3,84)] = {64,0}, + [I(4,84)] = {64,0}, + [I(5,84)] = {64,0}, + [I(6,84)] = {64,0}, + [I(7,84)] = {64,0}, + [I(8,84)] = {64,0}, + [I(9,84)] = {31,0x7FFFF56F}, + [I(10,84)] = {64,0}, + [I(11,84)] = {64,0}, + [I(12,84)] = {64,0}, + [I(13,84)] = {64,0}, + [I(14,84)] = {64,0}, + [I(15,84)] = {64,0}, + [I(16,84)] = {64,0}, + [I(17,84)] = {64,0}, + [I(18,84)] = {64,0}, + [I(19,84)] = {64,0}, + [I(20,84)] = {64,0}, + [I(21,84)] = {64,0}, + [I(22,84)] = {64,0}, + [I(23,84)] = {64,0}, + [I(24,84)] = {64,0}, + [I(25,84)] = {64,0}, + [I(26,84)] = {64,0}, + [I(27,84)] = {64,0}, + [I(28,84)] = {64,0}, + [I(29,84)] = {64,0}, + [I(30,84)] = {64,0}, + [I(31,84)] = {64,0}, + [I(32,84)] = {13,0xA6F}, + [I(33,84)] = {17,0x1FC6F}, + [I(34,84)] = {17,0x1FCEF}, + [I(35,84)] = {19,0x7FD6F}, + [I(36,84)] = {20,0xFFCEF}, + [I(37,84)] = {13,0xAEF}, + [I(38,84)] = {15,0x7C6F}, + [I(39,84)] = {18,0x3FD6F}, + [I(40,84)] = {17,0x1FD6F}, + [I(41,84)] = {17,0x1FDEF}, + [I(42,84)] = {15,0x7CEF}, + [I(43,84)] = {18,0x3FDEF}, + [I(44,84)] = {15,0x7D6F}, + [I(45,84)] = {13,0xB6F}, + [I(46,84)] = {13,0xBEF}, + [I(47,84)] = {13,0xC6F}, + [I(48,84)] = {12,0x6F}, + [I(49,84)] = {12,0xEF}, + [I(50,84)] = {12,0x16F}, + [I(51,84)] = {13,0xCEF}, + [I(52,84)] = {13,0xD6F}, + [I(53,84)] = {13,0xDEF}, + [I(54,84)] = {13,0xE6F}, + [I(55,84)] = {13,0xEEF}, + [I(56,84)] = {13,0xF6F}, + [I(57,84)] = {13,0xFEF}, + [I(58,84)] = {14,0x2E6F}, + [I(59,84)] = {15,0x7DEF}, + [I(60,84)] = {22,0x3FFE6F}, + [I(61,84)] = {13,0x106F}, + [I(62,84)] = {19,0x7FDEF}, + [I(63,84)] = {17,0x1FE6F}, + [I(64,84)] = {20,0xFFD6F}, + [I(65,84)] = {13,0x10EF}, + [I(66,84)] = {14,0x2EEF}, + [I(67,84)] = {14,0x2F6F}, + [I(68,84)] = {14,0x2FEF}, + [I(69,84)] = {14,0x306F}, + [I(70,84)] = {14,0x30EF}, + [I(71,84)] = {14,0x316F}, + [I(72,84)] = {14,0x31EF}, + [I(73,84)] = {14,0x326F}, + [I(74,84)] = {14,0x32EF}, + [I(75,84)] = {14,0x336F}, + [I(76,84)] = {14,0x33EF}, + [I(77,84)] = {14,0x346F}, + [I(78,84)] = {14,0x34EF}, + [I(79,84)] = {14,0x356F}, + [I(80,84)] = {14,0x35EF}, + [I(81,84)] = {14,0x366F}, + [I(82,84)] = {14,0x36EF}, + [I(83,84)] = {14,0x376F}, + [I(84,84)] = {14,0x37EF}, + [I(85,84)] = {14,0x386F}, + [I(86,84)] = {14,0x38EF}, + [I(87,84)] = {14,0x396F}, + [I(88,84)] = {15,0x7E6F}, + [I(89,84)] = {14,0x39EF}, + [I(90,84)] = {15,0x7EEF}, + [I(91,84)] = {20,0xFFDEF}, + [I(92,84)] = {26,0x3FFF86F}, + [I(93,84)] = {20,0xFFE6F}, + [I(94,84)] = {21,0x1FFE6F}, + [I(95,84)] = {13,0x116F}, + [I(96,84)] = {22,0x3FFEEF}, + [I(97,84)] = {12,0x1EF}, + [I(98,84)] = {13,0x11EF}, + [I(99,84)] = {12,0x26F}, + [I(100,84)] = {13,0x126F}, + [I(101,84)] = {12,0x2EF}, + [I(102,84)] = {13,0x12EF}, + [I(103,84)] = {13,0x136F}, + [I(104,84)] = {13,0x13EF}, + [I(105,84)] = {12,0x36F}, + [I(106,84)] = {14,0x3A6F}, + [I(107,84)] = {14,0x3AEF}, + [I(108,84)] = {13,0x146F}, + [I(109,84)] = {13,0x14EF}, + [I(110,84)] = {13,0x156F}, + [I(111,84)] = {12,0x3EF}, + [I(112,84)] = {13,0x15EF}, + [I(113,84)] = {14,0x3B6F}, + [I(114,84)] = {13,0x166F}, + [I(115,84)] = {12,0x46F}, + [I(116,84)] = {12,0x4EF}, + [I(117,84)] = {13,0x16EF}, + [I(118,84)] = {14,0x3BEF}, + [I(119,84)] = {14,0x3C6F}, + [I(120,84)] = {14,0x3CEF}, + [I(121,84)] = {14,0x3D6F}, + [I(122,84)] = {14,0x3DEF}, + [I(123,84)] = {22,0x3FFF6F}, + [I(124,84)] = {18,0x3FE6F}, + [I(125,84)] = {21,0x1FFEEF}, + [I(126,84)] = {20,0xFFEEF}, + [I(127,84)] = {64,0}, + [I(128,84)] = {27,0x7FFF36F}, + [I(129,84)] = {29,0x1FFFE96F}, + [I(130,84)] = {27,0x7FFF3EF}, + [I(131,84)] = {27,0x7FFF46F}, + [I(132,84)] = {29,0x1FFFE9EF}, + [I(133,84)] = {29,0x1FFFEA6F}, + [I(134,84)] = {29,0x1FFFEAEF}, + [I(135,84)] = {30,0x3FFFECEF}, + [I(136,84)] = {29,0x1FFFEB6F}, + [I(137,84)] = {30,0x3FFFED6F}, + [I(138,84)] = {30,0x3FFFEDEF}, + [I(139,84)] = {30,0x3FFFEE6F}, + [I(140,84)] = {30,0x3FFFEEEF}, + [I(141,84)] = {30,0x3FFFEF6F}, + [I(142,84)] = {31,0x7FFFF5EF}, + [I(143,84)] = {30,0x3FFFEFEF}, + [I(144,84)] = {31,0x7FFFF66F}, + [I(145,84)] = {31,0x7FFFF6EF}, + [I(146,84)] = {29,0x1FFFEBEF}, + [I(147,84)] = {30,0x3FFFF06F}, + [I(148,84)] = {31,0x7FFFF76F}, + [I(149,84)] = {30,0x3FFFF0EF}, + [I(150,84)] = {30,0x3FFFF16F}, + [I(151,84)] = {30,0x3FFFF1EF}, + [I(152,84)] = {30,0x3FFFF26F}, + [I(153,84)] = {28,0xFFFEE6F}, + [I(154,84)] = {29,0x1FFFEC6F}, + [I(155,84)] = {30,0x3FFFF2EF}, + [I(156,84)] = {29,0x1FFFECEF}, + [I(157,84)] = {30,0x3FFFF36F}, + [I(158,84)] = {30,0x3FFFF3EF}, + [I(159,84)] = {31,0x7FFFF7EF}, + [I(160,84)] = {29,0x1FFFED6F}, + [I(161,84)] = {28,0xFFFEEEF}, + [I(162,84)] = {27,0x7FFF4EF}, + [I(163,84)] = {29,0x1FFFEDEF}, + [I(164,84)] = {29,0x1FFFEE6F}, + [I(165,84)] = {30,0x3FFFF46F}, + [I(166,84)] = {30,0x3FFFF4EF}, + [I(167,84)] = {28,0xFFFEF6F}, + [I(168,84)] = {30,0x3FFFF56F}, + [I(169,84)] = {29,0x1FFFEEEF}, + [I(170,84)] = {29,0x1FFFEF6F}, + [I(171,84)] = {31,0x7FFFF86F}, + [I(172,84)] = {28,0xFFFEFEF}, + [I(173,84)] = {29,0x1FFFEFEF}, + [I(174,84)] = {30,0x3FFFF5EF}, + [I(175,84)] = {30,0x3FFFF66F}, + [I(176,84)] = {28,0xFFFF06F}, + [I(177,84)] = {28,0xFFFF0EF}, + [I(178,84)] = {29,0x1FFFF06F}, + [I(179,84)] = {28,0xFFFF16F}, + [I(180,84)] = {30,0x3FFFF6EF}, + [I(181,84)] = {29,0x1FFFF0EF}, + [I(182,84)] = {30,0x3FFFF76F}, + [I(183,84)] = {30,0x3FFFF7EF}, + [I(184,84)] = {27,0x7FFF56F}, + [I(185,84)] = {29,0x1FFFF16F}, + [I(186,84)] = {29,0x1FFFF1EF}, + [I(187,84)] = {29,0x1FFFF26F}, + [I(188,84)] = {30,0x3FFFF86F}, + [I(189,84)] = {29,0x1FFFF2EF}, + [I(190,84)] = {29,0x1FFFF36F}, + [I(191,84)] = {30,0x3FFFF8EF}, + [I(192,84)] = {64,0}, + [I(193,84)] = {64,0}, + [I(194,84)] = {27,0x7FFF5EF}, + [I(195,84)] = {26,0x3FFF8EF}, + [I(196,84)] = {29,0x1FFFF3EF}, + [I(197,84)] = {30,0x3FFFF96F}, + [I(198,84)] = {29,0x1FFFF46F}, + [I(199,84)] = {X32,0xFFFFF66F}, + [I(200,84)] = {64,0}, + [I(201,84)] = {64,0}, + [I(202,84)] = {64,0}, + [I(203,84)] = {64,0}, + [I(204,84)] = {64,0}, + [I(205,84)] = {64,0}, + [I(206,84)] = {31,0x7FFFF8EF}, + [I(207,84)] = {X32,0xFFFFF6EF}, + [I(208,84)] = {26,0x3FFF96F}, + [I(209,84)] = {28,0xFFFF1EF}, + [I(210,84)] = {64,0}, + [I(211,84)] = {64,0}, + [I(212,84)] = {64,0}, + [I(213,84)] = {64,0}, + [I(214,84)] = {64,0}, + [I(215,84)] = {31,0x7FFFF96F}, + [I(216,84)] = {28,0xFFFF26F}, + [I(217,84)] = {28,0xFFFF2EF}, + [I(218,84)] = {64,0}, + [I(219,84)] = {64,0}, + [I(220,84)] = {64,0}, + [I(221,84)] = {64,0}, + [I(222,84)] = {64,0}, + [I(223,84)] = {64,0}, + [I(224,84)] = {27,0x7FFF66F}, + [I(225,84)] = {31,0x7FFFF9EF}, + [I(226,84)] = {27,0x7FFF6EF}, + [I(227,84)] = {28,0xFFFF36F}, + [I(228,84)] = {29,0x1FFFF4EF}, + [I(229,84)] = {28,0xFFFF3EF}, + [I(230,84)] = {28,0xFFFF46F}, + [I(231,84)] = {30,0x3FFFF9EF}, + [I(232,84)] = {29,0x1FFFF56F}, + [I(233,84)] = {29,0x1FFFF5EF}, + [I(234,84)] = {X32,0xFFFFF76F}, + [I(235,84)] = {X32,0xFFFFF7EF}, + [I(236,84)] = {31,0x7FFFFA6F}, + [I(237,84)] = {31,0x7FFFFAEF}, + [I(238,84)] = {64,0}, + [I(239,84)] = {30,0x3FFFFA6F}, + [I(240,84)] = {64,0}, + [I(241,84)] = {64,0}, + [I(242,84)] = {64,0}, + [I(243,84)] = {64,0}, + [I(244,84)] = {64,0}, + [I(245,84)] = {64,0}, + [I(246,84)] = {64,0}, + [I(247,84)] = {64,0}, + [I(248,84)] = {64,0}, + [I(249,84)] = {64,0}, + [I(250,84)] = {64,0}, + [I(251,84)] = {64,0}, + [I(252,84)] = {64,0}, + [I(253,84)] = {64,0}, + [I(254,84)] = {64,0}, + [I(255,84)] = {64,0}, + [I(0,85)] = {20,0xFFC70}, + [I(1,85)] = {30,0x3FFFEC70}, + [I(2,85)] = {64,0}, + [I(3,85)] = {64,0}, + [I(4,85)] = {64,0}, + [I(5,85)] = {64,0}, + [I(6,85)] = {64,0}, + [I(7,85)] = {64,0}, + [I(8,85)] = {64,0}, + [I(9,85)] = {31,0x7FFFF570}, + [I(10,85)] = {64,0}, + [I(11,85)] = {64,0}, + [I(12,85)] = {64,0}, + [I(13,85)] = {64,0}, + [I(14,85)] = {64,0}, + [I(15,85)] = {64,0}, + [I(16,85)] = {64,0}, + [I(17,85)] = {64,0}, + [I(18,85)] = {64,0}, + [I(19,85)] = {64,0}, + [I(20,85)] = {64,0}, + [I(21,85)] = {64,0}, + [I(22,85)] = {64,0}, + [I(23,85)] = {64,0}, + [I(24,85)] = {64,0}, + [I(25,85)] = {64,0}, + [I(26,85)] = {64,0}, + [I(27,85)] = {64,0}, + [I(28,85)] = {64,0}, + [I(29,85)] = {64,0}, + [I(30,85)] = {64,0}, + [I(31,85)] = {64,0}, + [I(32,85)] = {13,0xA70}, + [I(33,85)] = {17,0x1FC70}, + [I(34,85)] = {17,0x1FCF0}, + [I(35,85)] = {19,0x7FD70}, + [I(36,85)] = {20,0xFFCF0}, + [I(37,85)] = {13,0xAF0}, + [I(38,85)] = {15,0x7C70}, + [I(39,85)] = {18,0x3FD70}, + [I(40,85)] = {17,0x1FD70}, + [I(41,85)] = {17,0x1FDF0}, + [I(42,85)] = {15,0x7CF0}, + [I(43,85)] = {18,0x3FDF0}, + [I(44,85)] = {15,0x7D70}, + [I(45,85)] = {13,0xB70}, + [I(46,85)] = {13,0xBF0}, + [I(47,85)] = {13,0xC70}, + [I(48,85)] = {12,0x70}, + [I(49,85)] = {12,0xF0}, + [I(50,85)] = {12,0x170}, + [I(51,85)] = {13,0xCF0}, + [I(52,85)] = {13,0xD70}, + [I(53,85)] = {13,0xDF0}, + [I(54,85)] = {13,0xE70}, + [I(55,85)] = {13,0xEF0}, + [I(56,85)] = {13,0xF70}, + [I(57,85)] = {13,0xFF0}, + [I(58,85)] = {14,0x2E70}, + [I(59,85)] = {15,0x7DF0}, + [I(60,85)] = {22,0x3FFE70}, + [I(61,85)] = {13,0x1070}, + [I(62,85)] = {19,0x7FDF0}, + [I(63,85)] = {17,0x1FE70}, + [I(64,85)] = {20,0xFFD70}, + [I(65,85)] = {13,0x10F0}, + [I(66,85)] = {14,0x2EF0}, + [I(67,85)] = {14,0x2F70}, + [I(68,85)] = {14,0x2FF0}, + [I(69,85)] = {14,0x3070}, + [I(70,85)] = {14,0x30F0}, + [I(71,85)] = {14,0x3170}, + [I(72,85)] = {14,0x31F0}, + [I(73,85)] = {14,0x3270}, + [I(74,85)] = {14,0x32F0}, + [I(75,85)] = {14,0x3370}, + [I(76,85)] = {14,0x33F0}, + [I(77,85)] = {14,0x3470}, + [I(78,85)] = {14,0x34F0}, + [I(79,85)] = {14,0x3570}, + [I(80,85)] = {14,0x35F0}, + [I(81,85)] = {14,0x3670}, + [I(82,85)] = {14,0x36F0}, + [I(83,85)] = {14,0x3770}, + [I(84,85)] = {14,0x37F0}, + [I(85,85)] = {14,0x3870}, + [I(86,85)] = {14,0x38F0}, + [I(87,85)] = {14,0x3970}, + [I(88,85)] = {15,0x7E70}, + [I(89,85)] = {14,0x39F0}, + [I(90,85)] = {15,0x7EF0}, + [I(91,85)] = {20,0xFFDF0}, + [I(92,85)] = {26,0x3FFF870}, + [I(93,85)] = {20,0xFFE70}, + [I(94,85)] = {21,0x1FFE70}, + [I(95,85)] = {13,0x1170}, + [I(96,85)] = {22,0x3FFEF0}, + [I(97,85)] = {12,0x1F0}, + [I(98,85)] = {13,0x11F0}, + [I(99,85)] = {12,0x270}, + [I(100,85)] = {13,0x1270}, + [I(101,85)] = {12,0x2F0}, + [I(102,85)] = {13,0x12F0}, + [I(103,85)] = {13,0x1370}, + [I(104,85)] = {13,0x13F0}, + [I(105,85)] = {12,0x370}, + [I(106,85)] = {14,0x3A70}, + [I(107,85)] = {14,0x3AF0}, + [I(108,85)] = {13,0x1470}, + [I(109,85)] = {13,0x14F0}, + [I(110,85)] = {13,0x1570}, + [I(111,85)] = {12,0x3F0}, + [I(112,85)] = {13,0x15F0}, + [I(113,85)] = {14,0x3B70}, + [I(114,85)] = {13,0x1670}, + [I(115,85)] = {12,0x470}, + [I(116,85)] = {12,0x4F0}, + [I(117,85)] = {13,0x16F0}, + [I(118,85)] = {14,0x3BF0}, + [I(119,85)] = {14,0x3C70}, + [I(120,85)] = {14,0x3CF0}, + [I(121,85)] = {14,0x3D70}, + [I(122,85)] = {14,0x3DF0}, + [I(123,85)] = {22,0x3FFF70}, + [I(124,85)] = {18,0x3FE70}, + [I(125,85)] = {21,0x1FFEF0}, + [I(126,85)] = {20,0xFFEF0}, + [I(127,85)] = {64,0}, + [I(128,85)] = {27,0x7FFF370}, + [I(129,85)] = {29,0x1FFFE970}, + [I(130,85)] = {27,0x7FFF3F0}, + [I(131,85)] = {27,0x7FFF470}, + [I(132,85)] = {29,0x1FFFE9F0}, + [I(133,85)] = {29,0x1FFFEA70}, + [I(134,85)] = {29,0x1FFFEAF0}, + [I(135,85)] = {30,0x3FFFECF0}, + [I(136,85)] = {29,0x1FFFEB70}, + [I(137,85)] = {30,0x3FFFED70}, + [I(138,85)] = {30,0x3FFFEDF0}, + [I(139,85)] = {30,0x3FFFEE70}, + [I(140,85)] = {30,0x3FFFEEF0}, + [I(141,85)] = {30,0x3FFFEF70}, + [I(142,85)] = {31,0x7FFFF5F0}, + [I(143,85)] = {30,0x3FFFEFF0}, + [I(144,85)] = {31,0x7FFFF670}, + [I(145,85)] = {31,0x7FFFF6F0}, + [I(146,85)] = {29,0x1FFFEBF0}, + [I(147,85)] = {30,0x3FFFF070}, + [I(148,85)] = {31,0x7FFFF770}, + [I(149,85)] = {30,0x3FFFF0F0}, + [I(150,85)] = {30,0x3FFFF170}, + [I(151,85)] = {30,0x3FFFF1F0}, + [I(152,85)] = {30,0x3FFFF270}, + [I(153,85)] = {28,0xFFFEE70}, + [I(154,85)] = {29,0x1FFFEC70}, + [I(155,85)] = {30,0x3FFFF2F0}, + [I(156,85)] = {29,0x1FFFECF0}, + [I(157,85)] = {30,0x3FFFF370}, + [I(158,85)] = {30,0x3FFFF3F0}, + [I(159,85)] = {31,0x7FFFF7F0}, + [I(160,85)] = {29,0x1FFFED70}, + [I(161,85)] = {28,0xFFFEEF0}, + [I(162,85)] = {27,0x7FFF4F0}, + [I(163,85)] = {29,0x1FFFEDF0}, + [I(164,85)] = {29,0x1FFFEE70}, + [I(165,85)] = {30,0x3FFFF470}, + [I(166,85)] = {30,0x3FFFF4F0}, + [I(167,85)] = {28,0xFFFEF70}, + [I(168,85)] = {30,0x3FFFF570}, + [I(169,85)] = {29,0x1FFFEEF0}, + [I(170,85)] = {29,0x1FFFEF70}, + [I(171,85)] = {31,0x7FFFF870}, + [I(172,85)] = {28,0xFFFEFF0}, + [I(173,85)] = {29,0x1FFFEFF0}, + [I(174,85)] = {30,0x3FFFF5F0}, + [I(175,85)] = {30,0x3FFFF670}, + [I(176,85)] = {28,0xFFFF070}, + [I(177,85)] = {28,0xFFFF0F0}, + [I(178,85)] = {29,0x1FFFF070}, + [I(179,85)] = {28,0xFFFF170}, + [I(180,85)] = {30,0x3FFFF6F0}, + [I(181,85)] = {29,0x1FFFF0F0}, + [I(182,85)] = {30,0x3FFFF770}, + [I(183,85)] = {30,0x3FFFF7F0}, + [I(184,85)] = {27,0x7FFF570}, + [I(185,85)] = {29,0x1FFFF170}, + [I(186,85)] = {29,0x1FFFF1F0}, + [I(187,85)] = {29,0x1FFFF270}, + [I(188,85)] = {30,0x3FFFF870}, + [I(189,85)] = {29,0x1FFFF2F0}, + [I(190,85)] = {29,0x1FFFF370}, + [I(191,85)] = {30,0x3FFFF8F0}, + [I(192,85)] = {64,0}, + [I(193,85)] = {64,0}, + [I(194,85)] = {27,0x7FFF5F0}, + [I(195,85)] = {26,0x3FFF8F0}, + [I(196,85)] = {29,0x1FFFF3F0}, + [I(197,85)] = {30,0x3FFFF970}, + [I(198,85)] = {29,0x1FFFF470}, + [I(199,85)] = {X32,0xFFFFF670}, + [I(200,85)] = {64,0}, + [I(201,85)] = {64,0}, + [I(202,85)] = {64,0}, + [I(203,85)] = {64,0}, + [I(204,85)] = {64,0}, + [I(205,85)] = {64,0}, + [I(206,85)] = {31,0x7FFFF8F0}, + [I(207,85)] = {X32,0xFFFFF6F0}, + [I(208,85)] = {26,0x3FFF970}, + [I(209,85)] = {28,0xFFFF1F0}, + [I(210,85)] = {64,0}, + [I(211,85)] = {64,0}, + [I(212,85)] = {64,0}, + [I(213,85)] = {64,0}, + [I(214,85)] = {64,0}, + [I(215,85)] = {31,0x7FFFF970}, + [I(216,85)] = {28,0xFFFF270}, + [I(217,85)] = {28,0xFFFF2F0}, + [I(218,85)] = {64,0}, + [I(219,85)] = {64,0}, + [I(220,85)] = {64,0}, + [I(221,85)] = {64,0}, + [I(222,85)] = {64,0}, + [I(223,85)] = {64,0}, + [I(224,85)] = {27,0x7FFF670}, + [I(225,85)] = {31,0x7FFFF9F0}, + [I(226,85)] = {27,0x7FFF6F0}, + [I(227,85)] = {28,0xFFFF370}, + [I(228,85)] = {29,0x1FFFF4F0}, + [I(229,85)] = {28,0xFFFF3F0}, + [I(230,85)] = {28,0xFFFF470}, + [I(231,85)] = {30,0x3FFFF9F0}, + [I(232,85)] = {29,0x1FFFF570}, + [I(233,85)] = {29,0x1FFFF5F0}, + [I(234,85)] = {X32,0xFFFFF770}, + [I(235,85)] = {X32,0xFFFFF7F0}, + [I(236,85)] = {31,0x7FFFFA70}, + [I(237,85)] = {31,0x7FFFFAF0}, + [I(238,85)] = {64,0}, + [I(239,85)] = {30,0x3FFFFA70}, + [I(240,85)] = {64,0}, + [I(241,85)] = {64,0}, + [I(242,85)] = {64,0}, + [I(243,85)] = {64,0}, + [I(244,85)] = {64,0}, + [I(245,85)] = {64,0}, + [I(246,85)] = {64,0}, + [I(247,85)] = {64,0}, + [I(248,85)] = {64,0}, + [I(249,85)] = {64,0}, + [I(250,85)] = {64,0}, + [I(251,85)] = {64,0}, + [I(252,85)] = {64,0}, + [I(253,85)] = {64,0}, + [I(254,85)] = {64,0}, + [I(255,85)] = {64,0}, + [I(0,86)] = {20,0xFFC71}, + [I(1,86)] = {30,0x3FFFEC71}, + [I(2,86)] = {64,0}, + [I(3,86)] = {64,0}, + [I(4,86)] = {64,0}, + [I(5,86)] = {64,0}, + [I(6,86)] = {64,0}, + [I(7,86)] = {64,0}, + [I(8,86)] = {64,0}, + [I(9,86)] = {31,0x7FFFF571}, + [I(10,86)] = {64,0}, + [I(11,86)] = {64,0}, + [I(12,86)] = {64,0}, + [I(13,86)] = {64,0}, + [I(14,86)] = {64,0}, + [I(15,86)] = {64,0}, + [I(16,86)] = {64,0}, + [I(17,86)] = {64,0}, + [I(18,86)] = {64,0}, + [I(19,86)] = {64,0}, + [I(20,86)] = {64,0}, + [I(21,86)] = {64,0}, + [I(22,86)] = {64,0}, + [I(23,86)] = {64,0}, + [I(24,86)] = {64,0}, + [I(25,86)] = {64,0}, + [I(26,86)] = {64,0}, + [I(27,86)] = {64,0}, + [I(28,86)] = {64,0}, + [I(29,86)] = {64,0}, + [I(30,86)] = {64,0}, + [I(31,86)] = {64,0}, + [I(32,86)] = {13,0xA71}, + [I(33,86)] = {17,0x1FC71}, + [I(34,86)] = {17,0x1FCF1}, + [I(35,86)] = {19,0x7FD71}, + [I(36,86)] = {20,0xFFCF1}, + [I(37,86)] = {13,0xAF1}, + [I(38,86)] = {15,0x7C71}, + [I(39,86)] = {18,0x3FD71}, + [I(40,86)] = {17,0x1FD71}, + [I(41,86)] = {17,0x1FDF1}, + [I(42,86)] = {15,0x7CF1}, + [I(43,86)] = {18,0x3FDF1}, + [I(44,86)] = {15,0x7D71}, + [I(45,86)] = {13,0xB71}, + [I(46,86)] = {13,0xBF1}, + [I(47,86)] = {13,0xC71}, + [I(48,86)] = {12,0x71}, + [I(49,86)] = {12,0xF1}, + [I(50,86)] = {12,0x171}, + [I(51,86)] = {13,0xCF1}, + [I(52,86)] = {13,0xD71}, + [I(53,86)] = {13,0xDF1}, + [I(54,86)] = {13,0xE71}, + [I(55,86)] = {13,0xEF1}, + [I(56,86)] = {13,0xF71}, + [I(57,86)] = {13,0xFF1}, + [I(58,86)] = {14,0x2E71}, + [I(59,86)] = {15,0x7DF1}, + [I(60,86)] = {22,0x3FFE71}, + [I(61,86)] = {13,0x1071}, + [I(62,86)] = {19,0x7FDF1}, + [I(63,86)] = {17,0x1FE71}, + [I(64,86)] = {20,0xFFD71}, + [I(65,86)] = {13,0x10F1}, + [I(66,86)] = {14,0x2EF1}, + [I(67,86)] = {14,0x2F71}, + [I(68,86)] = {14,0x2FF1}, + [I(69,86)] = {14,0x3071}, + [I(70,86)] = {14,0x30F1}, + [I(71,86)] = {14,0x3171}, + [I(72,86)] = {14,0x31F1}, + [I(73,86)] = {14,0x3271}, + [I(74,86)] = {14,0x32F1}, + [I(75,86)] = {14,0x3371}, + [I(76,86)] = {14,0x33F1}, + [I(77,86)] = {14,0x3471}, + [I(78,86)] = {14,0x34F1}, + [I(79,86)] = {14,0x3571}, + [I(80,86)] = {14,0x35F1}, + [I(81,86)] = {14,0x3671}, + [I(82,86)] = {14,0x36F1}, + [I(83,86)] = {14,0x3771}, + [I(84,86)] = {14,0x37F1}, + [I(85,86)] = {14,0x3871}, + [I(86,86)] = {14,0x38F1}, + [I(87,86)] = {14,0x3971}, + [I(88,86)] = {15,0x7E71}, + [I(89,86)] = {14,0x39F1}, + [I(90,86)] = {15,0x7EF1}, + [I(91,86)] = {20,0xFFDF1}, + [I(92,86)] = {26,0x3FFF871}, + [I(93,86)] = {20,0xFFE71}, + [I(94,86)] = {21,0x1FFE71}, + [I(95,86)] = {13,0x1171}, + [I(96,86)] = {22,0x3FFEF1}, + [I(97,86)] = {12,0x1F1}, + [I(98,86)] = {13,0x11F1}, + [I(99,86)] = {12,0x271}, + [I(100,86)] = {13,0x1271}, + [I(101,86)] = {12,0x2F1}, + [I(102,86)] = {13,0x12F1}, + [I(103,86)] = {13,0x1371}, + [I(104,86)] = {13,0x13F1}, + [I(105,86)] = {12,0x371}, + [I(106,86)] = {14,0x3A71}, + [I(107,86)] = {14,0x3AF1}, + [I(108,86)] = {13,0x1471}, + [I(109,86)] = {13,0x14F1}, + [I(110,86)] = {13,0x1571}, + [I(111,86)] = {12,0x3F1}, + [I(112,86)] = {13,0x15F1}, + [I(113,86)] = {14,0x3B71}, + [I(114,86)] = {13,0x1671}, + [I(115,86)] = {12,0x471}, + [I(116,86)] = {12,0x4F1}, + [I(117,86)] = {13,0x16F1}, + [I(118,86)] = {14,0x3BF1}, + [I(119,86)] = {14,0x3C71}, + [I(120,86)] = {14,0x3CF1}, + [I(121,86)] = {14,0x3D71}, + [I(122,86)] = {14,0x3DF1}, + [I(123,86)] = {22,0x3FFF71}, + [I(124,86)] = {18,0x3FE71}, + [I(125,86)] = {21,0x1FFEF1}, + [I(126,86)] = {20,0xFFEF1}, + [I(127,86)] = {64,0}, + [I(128,86)] = {27,0x7FFF371}, + [I(129,86)] = {29,0x1FFFE971}, + [I(130,86)] = {27,0x7FFF3F1}, + [I(131,86)] = {27,0x7FFF471}, + [I(132,86)] = {29,0x1FFFE9F1}, + [I(133,86)] = {29,0x1FFFEA71}, + [I(134,86)] = {29,0x1FFFEAF1}, + [I(135,86)] = {30,0x3FFFECF1}, + [I(136,86)] = {29,0x1FFFEB71}, + [I(137,86)] = {30,0x3FFFED71}, + [I(138,86)] = {30,0x3FFFEDF1}, + [I(139,86)] = {30,0x3FFFEE71}, + [I(140,86)] = {30,0x3FFFEEF1}, + [I(141,86)] = {30,0x3FFFEF71}, + [I(142,86)] = {31,0x7FFFF5F1}, + [I(143,86)] = {30,0x3FFFEFF1}, + [I(144,86)] = {31,0x7FFFF671}, + [I(145,86)] = {31,0x7FFFF6F1}, + [I(146,86)] = {29,0x1FFFEBF1}, + [I(147,86)] = {30,0x3FFFF071}, + [I(148,86)] = {31,0x7FFFF771}, + [I(149,86)] = {30,0x3FFFF0F1}, + [I(150,86)] = {30,0x3FFFF171}, + [I(151,86)] = {30,0x3FFFF1F1}, + [I(152,86)] = {30,0x3FFFF271}, + [I(153,86)] = {28,0xFFFEE71}, + [I(154,86)] = {29,0x1FFFEC71}, + [I(155,86)] = {30,0x3FFFF2F1}, + [I(156,86)] = {29,0x1FFFECF1}, + [I(157,86)] = {30,0x3FFFF371}, + [I(158,86)] = {30,0x3FFFF3F1}, + [I(159,86)] = {31,0x7FFFF7F1}, + [I(160,86)] = {29,0x1FFFED71}, + [I(161,86)] = {28,0xFFFEEF1}, + [I(162,86)] = {27,0x7FFF4F1}, + [I(163,86)] = {29,0x1FFFEDF1}, + [I(164,86)] = {29,0x1FFFEE71}, + [I(165,86)] = {30,0x3FFFF471}, + [I(166,86)] = {30,0x3FFFF4F1}, + [I(167,86)] = {28,0xFFFEF71}, + [I(168,86)] = {30,0x3FFFF571}, + [I(169,86)] = {29,0x1FFFEEF1}, + [I(170,86)] = {29,0x1FFFEF71}, + [I(171,86)] = {31,0x7FFFF871}, + [I(172,86)] = {28,0xFFFEFF1}, + [I(173,86)] = {29,0x1FFFEFF1}, + [I(174,86)] = {30,0x3FFFF5F1}, + [I(175,86)] = {30,0x3FFFF671}, + [I(176,86)] = {28,0xFFFF071}, + [I(177,86)] = {28,0xFFFF0F1}, + [I(178,86)] = {29,0x1FFFF071}, + [I(179,86)] = {28,0xFFFF171}, + [I(180,86)] = {30,0x3FFFF6F1}, + [I(181,86)] = {29,0x1FFFF0F1}, + [I(182,86)] = {30,0x3FFFF771}, + [I(183,86)] = {30,0x3FFFF7F1}, + [I(184,86)] = {27,0x7FFF571}, + [I(185,86)] = {29,0x1FFFF171}, + [I(186,86)] = {29,0x1FFFF1F1}, + [I(187,86)] = {29,0x1FFFF271}, + [I(188,86)] = {30,0x3FFFF871}, + [I(189,86)] = {29,0x1FFFF2F1}, + [I(190,86)] = {29,0x1FFFF371}, + [I(191,86)] = {30,0x3FFFF8F1}, + [I(192,86)] = {64,0}, + [I(193,86)] = {64,0}, + [I(194,86)] = {27,0x7FFF5F1}, + [I(195,86)] = {26,0x3FFF8F1}, + [I(196,86)] = {29,0x1FFFF3F1}, + [I(197,86)] = {30,0x3FFFF971}, + [I(198,86)] = {29,0x1FFFF471}, + [I(199,86)] = {X32,0xFFFFF671}, + [I(200,86)] = {64,0}, + [I(201,86)] = {64,0}, + [I(202,86)] = {64,0}, + [I(203,86)] = {64,0}, + [I(204,86)] = {64,0}, + [I(205,86)] = {64,0}, + [I(206,86)] = {31,0x7FFFF8F1}, + [I(207,86)] = {X32,0xFFFFF6F1}, + [I(208,86)] = {26,0x3FFF971}, + [I(209,86)] = {28,0xFFFF1F1}, + [I(210,86)] = {64,0}, + [I(211,86)] = {64,0}, + [I(212,86)] = {64,0}, + [I(213,86)] = {64,0}, + [I(214,86)] = {64,0}, + [I(215,86)] = {31,0x7FFFF971}, + [I(216,86)] = {28,0xFFFF271}, + [I(217,86)] = {28,0xFFFF2F1}, + [I(218,86)] = {64,0}, + [I(219,86)] = {64,0}, + [I(220,86)] = {64,0}, + [I(221,86)] = {64,0}, + [I(222,86)] = {64,0}, + [I(223,86)] = {64,0}, + [I(224,86)] = {27,0x7FFF671}, + [I(225,86)] = {31,0x7FFFF9F1}, + [I(226,86)] = {27,0x7FFF6F1}, + [I(227,86)] = {28,0xFFFF371}, + [I(228,86)] = {29,0x1FFFF4F1}, + [I(229,86)] = {28,0xFFFF3F1}, + [I(230,86)] = {28,0xFFFF471}, + [I(231,86)] = {30,0x3FFFF9F1}, + [I(232,86)] = {29,0x1FFFF571}, + [I(233,86)] = {29,0x1FFFF5F1}, + [I(234,86)] = {X32,0xFFFFF771}, + [I(235,86)] = {X32,0xFFFFF7F1}, + [I(236,86)] = {31,0x7FFFFA71}, + [I(237,86)] = {31,0x7FFFFAF1}, + [I(238,86)] = {64,0}, + [I(239,86)] = {30,0x3FFFFA71}, + [I(240,86)] = {64,0}, + [I(241,86)] = {64,0}, + [I(242,86)] = {64,0}, + [I(243,86)] = {64,0}, + [I(244,86)] = {64,0}, + [I(245,86)] = {64,0}, + [I(246,86)] = {64,0}, + [I(247,86)] = {64,0}, + [I(248,86)] = {64,0}, + [I(249,86)] = {64,0}, + [I(250,86)] = {64,0}, + [I(251,86)] = {64,0}, + [I(252,86)] = {64,0}, + [I(253,86)] = {64,0}, + [I(254,86)] = {64,0}, + [I(255,86)] = {64,0}, + [I(0,87)] = {20,0xFFC72}, + [I(1,87)] = {30,0x3FFFEC72}, + [I(2,87)] = {64,0}, + [I(3,87)] = {64,0}, + [I(4,87)] = {64,0}, + [I(5,87)] = {64,0}, + [I(6,87)] = {64,0}, + [I(7,87)] = {64,0}, + [I(8,87)] = {64,0}, + [I(9,87)] = {31,0x7FFFF572}, + [I(10,87)] = {64,0}, + [I(11,87)] = {64,0}, + [I(12,87)] = {64,0}, + [I(13,87)] = {64,0}, + [I(14,87)] = {64,0}, + [I(15,87)] = {64,0}, + [I(16,87)] = {64,0}, + [I(17,87)] = {64,0}, + [I(18,87)] = {64,0}, + [I(19,87)] = {64,0}, + [I(20,87)] = {64,0}, + [I(21,87)] = {64,0}, + [I(22,87)] = {64,0}, + [I(23,87)] = {64,0}, + [I(24,87)] = {64,0}, + [I(25,87)] = {64,0}, + [I(26,87)] = {64,0}, + [I(27,87)] = {64,0}, + [I(28,87)] = {64,0}, + [I(29,87)] = {64,0}, + [I(30,87)] = {64,0}, + [I(31,87)] = {64,0}, + [I(32,87)] = {13,0xA72}, + [I(33,87)] = {17,0x1FC72}, + [I(34,87)] = {17,0x1FCF2}, + [I(35,87)] = {19,0x7FD72}, + [I(36,87)] = {20,0xFFCF2}, + [I(37,87)] = {13,0xAF2}, + [I(38,87)] = {15,0x7C72}, + [I(39,87)] = {18,0x3FD72}, + [I(40,87)] = {17,0x1FD72}, + [I(41,87)] = {17,0x1FDF2}, + [I(42,87)] = {15,0x7CF2}, + [I(43,87)] = {18,0x3FDF2}, + [I(44,87)] = {15,0x7D72}, + [I(45,87)] = {13,0xB72}, + [I(46,87)] = {13,0xBF2}, + [I(47,87)] = {13,0xC72}, + [I(48,87)] = {12,0x72}, + [I(49,87)] = {12,0xF2}, + [I(50,87)] = {12,0x172}, + [I(51,87)] = {13,0xCF2}, + [I(52,87)] = {13,0xD72}, + [I(53,87)] = {13,0xDF2}, + [I(54,87)] = {13,0xE72}, + [I(55,87)] = {13,0xEF2}, + [I(56,87)] = {13,0xF72}, + [I(57,87)] = {13,0xFF2}, + [I(58,87)] = {14,0x2E72}, + [I(59,87)] = {15,0x7DF2}, + [I(60,87)] = {22,0x3FFE72}, + [I(61,87)] = {13,0x1072}, + [I(62,87)] = {19,0x7FDF2}, + [I(63,87)] = {17,0x1FE72}, + [I(64,87)] = {20,0xFFD72}, + [I(65,87)] = {13,0x10F2}, + [I(66,87)] = {14,0x2EF2}, + [I(67,87)] = {14,0x2F72}, + [I(68,87)] = {14,0x2FF2}, + [I(69,87)] = {14,0x3072}, + [I(70,87)] = {14,0x30F2}, + [I(71,87)] = {14,0x3172}, + [I(72,87)] = {14,0x31F2}, + [I(73,87)] = {14,0x3272}, + [I(74,87)] = {14,0x32F2}, + [I(75,87)] = {14,0x3372}, + [I(76,87)] = {14,0x33F2}, + [I(77,87)] = {14,0x3472}, + [I(78,87)] = {14,0x34F2}, + [I(79,87)] = {14,0x3572}, + [I(80,87)] = {14,0x35F2}, + [I(81,87)] = {14,0x3672}, + [I(82,87)] = {14,0x36F2}, + [I(83,87)] = {14,0x3772}, + [I(84,87)] = {14,0x37F2}, + [I(85,87)] = {14,0x3872}, + [I(86,87)] = {14,0x38F2}, + [I(87,87)] = {14,0x3972}, + [I(88,87)] = {15,0x7E72}, + [I(89,87)] = {14,0x39F2}, + [I(90,87)] = {15,0x7EF2}, + [I(91,87)] = {20,0xFFDF2}, + [I(92,87)] = {26,0x3FFF872}, + [I(93,87)] = {20,0xFFE72}, + [I(94,87)] = {21,0x1FFE72}, + [I(95,87)] = {13,0x1172}, + [I(96,87)] = {22,0x3FFEF2}, + [I(97,87)] = {12,0x1F2}, + [I(98,87)] = {13,0x11F2}, + [I(99,87)] = {12,0x272}, + [I(100,87)] = {13,0x1272}, + [I(101,87)] = {12,0x2F2}, + [I(102,87)] = {13,0x12F2}, + [I(103,87)] = {13,0x1372}, + [I(104,87)] = {13,0x13F2}, + [I(105,87)] = {12,0x372}, + [I(106,87)] = {14,0x3A72}, + [I(107,87)] = {14,0x3AF2}, + [I(108,87)] = {13,0x1472}, + [I(109,87)] = {13,0x14F2}, + [I(110,87)] = {13,0x1572}, + [I(111,87)] = {12,0x3F2}, + [I(112,87)] = {13,0x15F2}, + [I(113,87)] = {14,0x3B72}, + [I(114,87)] = {13,0x1672}, + [I(115,87)] = {12,0x472}, + [I(116,87)] = {12,0x4F2}, + [I(117,87)] = {13,0x16F2}, + [I(118,87)] = {14,0x3BF2}, + [I(119,87)] = {14,0x3C72}, + [I(120,87)] = {14,0x3CF2}, + [I(121,87)] = {14,0x3D72}, + [I(122,87)] = {14,0x3DF2}, + [I(123,87)] = {22,0x3FFF72}, + [I(124,87)] = {18,0x3FE72}, + [I(125,87)] = {21,0x1FFEF2}, + [I(126,87)] = {20,0xFFEF2}, + [I(127,87)] = {64,0}, + [I(128,87)] = {27,0x7FFF372}, + [I(129,87)] = {29,0x1FFFE972}, + [I(130,87)] = {27,0x7FFF3F2}, + [I(131,87)] = {27,0x7FFF472}, + [I(132,87)] = {29,0x1FFFE9F2}, + [I(133,87)] = {29,0x1FFFEA72}, + [I(134,87)] = {29,0x1FFFEAF2}, + [I(135,87)] = {30,0x3FFFECF2}, + [I(136,87)] = {29,0x1FFFEB72}, + [I(137,87)] = {30,0x3FFFED72}, + [I(138,87)] = {30,0x3FFFEDF2}, + [I(139,87)] = {30,0x3FFFEE72}, + [I(140,87)] = {30,0x3FFFEEF2}, + [I(141,87)] = {30,0x3FFFEF72}, + [I(142,87)] = {31,0x7FFFF5F2}, + [I(143,87)] = {30,0x3FFFEFF2}, + [I(144,87)] = {31,0x7FFFF672}, + [I(145,87)] = {31,0x7FFFF6F2}, + [I(146,87)] = {29,0x1FFFEBF2}, + [I(147,87)] = {30,0x3FFFF072}, + [I(148,87)] = {31,0x7FFFF772}, + [I(149,87)] = {30,0x3FFFF0F2}, + [I(150,87)] = {30,0x3FFFF172}, + [I(151,87)] = {30,0x3FFFF1F2}, + [I(152,87)] = {30,0x3FFFF272}, + [I(153,87)] = {28,0xFFFEE72}, + [I(154,87)] = {29,0x1FFFEC72}, + [I(155,87)] = {30,0x3FFFF2F2}, + [I(156,87)] = {29,0x1FFFECF2}, + [I(157,87)] = {30,0x3FFFF372}, + [I(158,87)] = {30,0x3FFFF3F2}, + [I(159,87)] = {31,0x7FFFF7F2}, + [I(160,87)] = {29,0x1FFFED72}, + [I(161,87)] = {28,0xFFFEEF2}, + [I(162,87)] = {27,0x7FFF4F2}, + [I(163,87)] = {29,0x1FFFEDF2}, + [I(164,87)] = {29,0x1FFFEE72}, + [I(165,87)] = {30,0x3FFFF472}, + [I(166,87)] = {30,0x3FFFF4F2}, + [I(167,87)] = {28,0xFFFEF72}, + [I(168,87)] = {30,0x3FFFF572}, + [I(169,87)] = {29,0x1FFFEEF2}, + [I(170,87)] = {29,0x1FFFEF72}, + [I(171,87)] = {31,0x7FFFF872}, + [I(172,87)] = {28,0xFFFEFF2}, + [I(173,87)] = {29,0x1FFFEFF2}, + [I(174,87)] = {30,0x3FFFF5F2}, + [I(175,87)] = {30,0x3FFFF672}, + [I(176,87)] = {28,0xFFFF072}, + [I(177,87)] = {28,0xFFFF0F2}, + [I(178,87)] = {29,0x1FFFF072}, + [I(179,87)] = {28,0xFFFF172}, + [I(180,87)] = {30,0x3FFFF6F2}, + [I(181,87)] = {29,0x1FFFF0F2}, + [I(182,87)] = {30,0x3FFFF772}, + [I(183,87)] = {30,0x3FFFF7F2}, + [I(184,87)] = {27,0x7FFF572}, + [I(185,87)] = {29,0x1FFFF172}, + [I(186,87)] = {29,0x1FFFF1F2}, + [I(187,87)] = {29,0x1FFFF272}, + [I(188,87)] = {30,0x3FFFF872}, + [I(189,87)] = {29,0x1FFFF2F2}, + [I(190,87)] = {29,0x1FFFF372}, + [I(191,87)] = {30,0x3FFFF8F2}, + [I(192,87)] = {64,0}, + [I(193,87)] = {64,0}, + [I(194,87)] = {27,0x7FFF5F2}, + [I(195,87)] = {26,0x3FFF8F2}, + [I(196,87)] = {29,0x1FFFF3F2}, + [I(197,87)] = {30,0x3FFFF972}, + [I(198,87)] = {29,0x1FFFF472}, + [I(199,87)] = {X32,0xFFFFF672}, + [I(200,87)] = {64,0}, + [I(201,87)] = {64,0}, + [I(202,87)] = {64,0}, + [I(203,87)] = {64,0}, + [I(204,87)] = {64,0}, + [I(205,87)] = {64,0}, + [I(206,87)] = {31,0x7FFFF8F2}, + [I(207,87)] = {X32,0xFFFFF6F2}, + [I(208,87)] = {26,0x3FFF972}, + [I(209,87)] = {28,0xFFFF1F2}, + [I(210,87)] = {64,0}, + [I(211,87)] = {64,0}, + [I(212,87)] = {64,0}, + [I(213,87)] = {64,0}, + [I(214,87)] = {64,0}, + [I(215,87)] = {31,0x7FFFF972}, + [I(216,87)] = {28,0xFFFF272}, + [I(217,87)] = {28,0xFFFF2F2}, + [I(218,87)] = {64,0}, + [I(219,87)] = {64,0}, + [I(220,87)] = {64,0}, + [I(221,87)] = {64,0}, + [I(222,87)] = {64,0}, + [I(223,87)] = {64,0}, + [I(224,87)] = {27,0x7FFF672}, + [I(225,87)] = {31,0x7FFFF9F2}, + [I(226,87)] = {27,0x7FFF6F2}, + [I(227,87)] = {28,0xFFFF372}, + [I(228,87)] = {29,0x1FFFF4F2}, + [I(229,87)] = {28,0xFFFF3F2}, + [I(230,87)] = {28,0xFFFF472}, + [I(231,87)] = {30,0x3FFFF9F2}, + [I(232,87)] = {29,0x1FFFF572}, + [I(233,87)] = {29,0x1FFFF5F2}, + [I(234,87)] = {X32,0xFFFFF772}, + [I(235,87)] = {X32,0xFFFFF7F2}, + [I(236,87)] = {31,0x7FFFFA72}, + [I(237,87)] = {31,0x7FFFFAF2}, + [I(238,87)] = {64,0}, + [I(239,87)] = {30,0x3FFFFA72}, + [I(240,87)] = {64,0}, + [I(241,87)] = {64,0}, + [I(242,87)] = {64,0}, + [I(243,87)] = {64,0}, + [I(244,87)] = {64,0}, + [I(245,87)] = {64,0}, + [I(246,87)] = {64,0}, + [I(247,87)] = {64,0}, + [I(248,87)] = {64,0}, + [I(249,87)] = {64,0}, + [I(250,87)] = {64,0}, + [I(251,87)] = {64,0}, + [I(252,87)] = {64,0}, + [I(253,87)] = {64,0}, + [I(254,87)] = {64,0}, + [I(255,87)] = {64,0}, + [I(0,88)] = {21,0x1FF8FC}, + [I(1,88)] = {31,0x7FFFD8FC}, + [I(2,88)] = {64,0}, + [I(3,88)] = {64,0}, + [I(4,88)] = {64,0}, + [I(5,88)] = {64,0}, + [I(6,88)] = {64,0}, + [I(7,88)] = {64,0}, + [I(8,88)] = {64,0}, + [I(9,88)] = {X32,0xFFFFEAFC}, + [I(10,88)] = {64,0}, + [I(11,88)] = {64,0}, + [I(12,88)] = {64,0}, + [I(13,88)] = {64,0}, + [I(14,88)] = {64,0}, + [I(15,88)] = {64,0}, + [I(16,88)] = {64,0}, + [I(17,88)] = {64,0}, + [I(18,88)] = {64,0}, + [I(19,88)] = {64,0}, + [I(20,88)] = {64,0}, + [I(21,88)] = {64,0}, + [I(22,88)] = {64,0}, + [I(23,88)] = {64,0}, + [I(24,88)] = {64,0}, + [I(25,88)] = {64,0}, + [I(26,88)] = {64,0}, + [I(27,88)] = {64,0}, + [I(28,88)] = {64,0}, + [I(29,88)] = {64,0}, + [I(30,88)] = {64,0}, + [I(31,88)] = {64,0}, + [I(32,88)] = {14,0x14FC}, + [I(33,88)] = {18,0x3F8FC}, + [I(34,88)] = {18,0x3F9FC}, + [I(35,88)] = {20,0xFFAFC}, + [I(36,88)] = {21,0x1FF9FC}, + [I(37,88)] = {14,0x15FC}, + [I(38,88)] = {16,0xF8FC}, + [I(39,88)] = {19,0x7FAFC}, + [I(40,88)] = {18,0x3FAFC}, + [I(41,88)] = {18,0x3FBFC}, + [I(42,88)] = {16,0xF9FC}, + [I(43,88)] = {19,0x7FBFC}, + [I(44,88)] = {16,0xFAFC}, + [I(45,88)] = {14,0x16FC}, + [I(46,88)] = {14,0x17FC}, + [I(47,88)] = {14,0x18FC}, + [I(48,88)] = {13,0xFC}, + [I(49,88)] = {13,0x1FC}, + [I(50,88)] = {13,0x2FC}, + [I(51,88)] = {14,0x19FC}, + [I(52,88)] = {14,0x1AFC}, + [I(53,88)] = {14,0x1BFC}, + [I(54,88)] = {14,0x1CFC}, + [I(55,88)] = {14,0x1DFC}, + [I(56,88)] = {14,0x1EFC}, + [I(57,88)] = {14,0x1FFC}, + [I(58,88)] = {15,0x5CFC}, + [I(59,88)] = {16,0xFBFC}, + [I(60,88)] = {23,0x7FFCFC}, + [I(61,88)] = {14,0x20FC}, + [I(62,88)] = {20,0xFFBFC}, + [I(63,88)] = {18,0x3FCFC}, + [I(64,88)] = {21,0x1FFAFC}, + [I(65,88)] = {14,0x21FC}, + [I(66,88)] = {15,0x5DFC}, + [I(67,88)] = {15,0x5EFC}, + [I(68,88)] = {15,0x5FFC}, + [I(69,88)] = {15,0x60FC}, + [I(70,88)] = {15,0x61FC}, + [I(71,88)] = {15,0x62FC}, + [I(72,88)] = {15,0x63FC}, + [I(73,88)] = {15,0x64FC}, + [I(74,88)] = {15,0x65FC}, + [I(75,88)] = {15,0x66FC}, + [I(76,88)] = {15,0x67FC}, + [I(77,88)] = {15,0x68FC}, + [I(78,88)] = {15,0x69FC}, + [I(79,88)] = {15,0x6AFC}, + [I(80,88)] = {15,0x6BFC}, + [I(81,88)] = {15,0x6CFC}, + [I(82,88)] = {15,0x6DFC}, + [I(83,88)] = {15,0x6EFC}, + [I(84,88)] = {15,0x6FFC}, + [I(85,88)] = {15,0x70FC}, + [I(86,88)] = {15,0x71FC}, + [I(87,88)] = {15,0x72FC}, + [I(88,88)] = {16,0xFCFC}, + [I(89,88)] = {15,0x73FC}, + [I(90,88)] = {16,0xFDFC}, + [I(91,88)] = {21,0x1FFBFC}, + [I(92,88)] = {27,0x7FFF0FC}, + [I(93,88)] = {21,0x1FFCFC}, + [I(94,88)] = {22,0x3FFCFC}, + [I(95,88)] = {14,0x22FC}, + [I(96,88)] = {23,0x7FFDFC}, + [I(97,88)] = {13,0x3FC}, + [I(98,88)] = {14,0x23FC}, + [I(99,88)] = {13,0x4FC}, + [I(100,88)] = {14,0x24FC}, + [I(101,88)] = {13,0x5FC}, + [I(102,88)] = {14,0x25FC}, + [I(103,88)] = {14,0x26FC}, + [I(104,88)] = {14,0x27FC}, + [I(105,88)] = {13,0x6FC}, + [I(106,88)] = {15,0x74FC}, + [I(107,88)] = {15,0x75FC}, + [I(108,88)] = {14,0x28FC}, + [I(109,88)] = {14,0x29FC}, + [I(110,88)] = {14,0x2AFC}, + [I(111,88)] = {13,0x7FC}, + [I(112,88)] = {14,0x2BFC}, + [I(113,88)] = {15,0x76FC}, + [I(114,88)] = {14,0x2CFC}, + [I(115,88)] = {13,0x8FC}, + [I(116,88)] = {13,0x9FC}, + [I(117,88)] = {14,0x2DFC}, + [I(118,88)] = {15,0x77FC}, + [I(119,88)] = {15,0x78FC}, + [I(120,88)] = {15,0x79FC}, + [I(121,88)] = {15,0x7AFC}, + [I(122,88)] = {15,0x7BFC}, + [I(123,88)] = {23,0x7FFEFC}, + [I(124,88)] = {19,0x7FCFC}, + [I(125,88)] = {22,0x3FFDFC}, + [I(126,88)] = {21,0x1FFDFC}, + [I(127,88)] = {64,0}, + [I(128,88)] = {28,0xFFFE6FC}, + [I(129,88)] = {30,0x3FFFD2FC}, + [I(130,88)] = {28,0xFFFE7FC}, + [I(131,88)] = {28,0xFFFE8FC}, + [I(132,88)] = {30,0x3FFFD3FC}, + [I(133,88)] = {30,0x3FFFD4FC}, + [I(134,88)] = {30,0x3FFFD5FC}, + [I(135,88)] = {31,0x7FFFD9FC}, + [I(136,88)] = {30,0x3FFFD6FC}, + [I(137,88)] = {31,0x7FFFDAFC}, + [I(138,88)] = {31,0x7FFFDBFC}, + [I(139,88)] = {31,0x7FFFDCFC}, + [I(140,88)] = {31,0x7FFFDDFC}, + [I(141,88)] = {31,0x7FFFDEFC}, + [I(142,88)] = {X32,0xFFFFEBFC}, + [I(143,88)] = {31,0x7FFFDFFC}, + [I(144,88)] = {X32,0xFFFFECFC}, + [I(145,88)] = {X32,0xFFFFEDFC}, + [I(146,88)] = {30,0x3FFFD7FC}, + [I(147,88)] = {31,0x7FFFE0FC}, + [I(148,88)] = {X32,0xFFFFEEFC}, + [I(149,88)] = {31,0x7FFFE1FC}, + [I(150,88)] = {31,0x7FFFE2FC}, + [I(151,88)] = {31,0x7FFFE3FC}, + [I(152,88)] = {31,0x7FFFE4FC}, + [I(153,88)] = {29,0x1FFFDCFC}, + [I(154,88)] = {30,0x3FFFD8FC}, + [I(155,88)] = {31,0x7FFFE5FC}, + [I(156,88)] = {30,0x3FFFD9FC}, + [I(157,88)] = {31,0x7FFFE6FC}, + [I(158,88)] = {31,0x7FFFE7FC}, + [I(159,88)] = {X32,0xFFFFEFFC}, + [I(160,88)] = {30,0x3FFFDAFC}, + [I(161,88)] = {29,0x1FFFDDFC}, + [I(162,88)] = {28,0xFFFE9FC}, + [I(163,88)] = {30,0x3FFFDBFC}, + [I(164,88)] = {30,0x3FFFDCFC}, + [I(165,88)] = {31,0x7FFFE8FC}, + [I(166,88)] = {31,0x7FFFE9FC}, + [I(167,88)] = {29,0x1FFFDEFC}, + [I(168,88)] = {31,0x7FFFEAFC}, + [I(169,88)] = {30,0x3FFFDDFC}, + [I(170,88)] = {30,0x3FFFDEFC}, + [I(171,88)] = {X32,0xFFFFF0FC}, + [I(172,88)] = {29,0x1FFFDFFC}, + [I(173,88)] = {30,0x3FFFDFFC}, + [I(174,88)] = {31,0x7FFFEBFC}, + [I(175,88)] = {31,0x7FFFECFC}, + [I(176,88)] = {29,0x1FFFE0FC}, + [I(177,88)] = {29,0x1FFFE1FC}, + [I(178,88)] = {30,0x3FFFE0FC}, + [I(179,88)] = {29,0x1FFFE2FC}, + [I(180,88)] = {31,0x7FFFEDFC}, + [I(181,88)] = {30,0x3FFFE1FC}, + [I(182,88)] = {31,0x7FFFEEFC}, + [I(183,88)] = {31,0x7FFFEFFC}, + [I(184,88)] = {28,0xFFFEAFC}, + [I(185,88)] = {30,0x3FFFE2FC}, + [I(186,88)] = {30,0x3FFFE3FC}, + [I(187,88)] = {30,0x3FFFE4FC}, + [I(188,88)] = {31,0x7FFFF0FC}, + [I(189,88)] = {30,0x3FFFE5FC}, + [I(190,88)] = {30,0x3FFFE6FC}, + [I(191,88)] = {31,0x7FFFF1FC}, + [I(192,88)] = {64,0}, + [I(193,88)] = {64,0}, + [I(194,88)] = {28,0xFFFEBFC}, + [I(195,88)] = {27,0x7FFF1FC}, + [I(196,88)] = {30,0x3FFFE7FC}, + [I(197,88)] = {31,0x7FFFF2FC}, + [I(198,88)] = {30,0x3FFFE8FC}, + [I(199,88)] = {64,0}, + [I(200,88)] = {64,0}, + [I(201,88)] = {64,0}, + [I(202,88)] = {64,0}, + [I(203,88)] = {64,0}, + [I(204,88)] = {64,0}, + [I(205,88)] = {64,0}, + [I(206,88)] = {X32,0xFFFFF1FC}, + [I(207,88)] = {64,0}, + [I(208,88)] = {27,0x7FFF2FC}, + [I(209,88)] = {29,0x1FFFE3FC}, + [I(210,88)] = {64,0}, + [I(211,88)] = {64,0}, + [I(212,88)] = {64,0}, + [I(213,88)] = {64,0}, + [I(214,88)] = {64,0}, + [I(215,88)] = {X32,0xFFFFF2FC}, + [I(216,88)] = {29,0x1FFFE4FC}, + [I(217,88)] = {29,0x1FFFE5FC}, + [I(218,88)] = {64,0}, + [I(219,88)] = {64,0}, + [I(220,88)] = {64,0}, + [I(221,88)] = {64,0}, + [I(222,88)] = {64,0}, + [I(223,88)] = {64,0}, + [I(224,88)] = {28,0xFFFECFC}, + [I(225,88)] = {X32,0xFFFFF3FC}, + [I(226,88)] = {28,0xFFFEDFC}, + [I(227,88)] = {29,0x1FFFE6FC}, + [I(228,88)] = {30,0x3FFFE9FC}, + [I(229,88)] = {29,0x1FFFE7FC}, + [I(230,88)] = {29,0x1FFFE8FC}, + [I(231,88)] = {31,0x7FFFF3FC}, + [I(232,88)] = {30,0x3FFFEAFC}, + [I(233,88)] = {30,0x3FFFEBFC}, + [I(234,88)] = {64,0}, + [I(235,88)] = {64,0}, + [I(236,88)] = {X32,0xFFFFF4FC}, + [I(237,88)] = {X32,0xFFFFF5FC}, + [I(238,88)] = {64,0}, + [I(239,88)] = {31,0x7FFFF4FC}, + [I(240,88)] = {64,0}, + [I(241,88)] = {64,0}, + [I(242,88)] = {64,0}, + [I(243,88)] = {64,0}, + [I(244,88)] = {64,0}, + [I(245,88)] = {64,0}, + [I(246,88)] = {64,0}, + [I(247,88)] = {64,0}, + [I(248,88)] = {64,0}, + [I(249,88)] = {64,0}, + [I(250,88)] = {64,0}, + [I(251,88)] = {64,0}, + [I(252,88)] = {64,0}, + [I(253,88)] = {64,0}, + [I(254,88)] = {64,0}, + [I(255,88)] = {64,0}, + [I(0,89)] = {20,0xFFC73}, + [I(1,89)] = {30,0x3FFFEC73}, + [I(2,89)] = {64,0}, + [I(3,89)] = {64,0}, + [I(4,89)] = {64,0}, + [I(5,89)] = {64,0}, + [I(6,89)] = {64,0}, + [I(7,89)] = {64,0}, + [I(8,89)] = {64,0}, + [I(9,89)] = {31,0x7FFFF573}, + [I(10,89)] = {64,0}, + [I(11,89)] = {64,0}, + [I(12,89)] = {64,0}, + [I(13,89)] = {64,0}, + [I(14,89)] = {64,0}, + [I(15,89)] = {64,0}, + [I(16,89)] = {64,0}, + [I(17,89)] = {64,0}, + [I(18,89)] = {64,0}, + [I(19,89)] = {64,0}, + [I(20,89)] = {64,0}, + [I(21,89)] = {64,0}, + [I(22,89)] = {64,0}, + [I(23,89)] = {64,0}, + [I(24,89)] = {64,0}, + [I(25,89)] = {64,0}, + [I(26,89)] = {64,0}, + [I(27,89)] = {64,0}, + [I(28,89)] = {64,0}, + [I(29,89)] = {64,0}, + [I(30,89)] = {64,0}, + [I(31,89)] = {64,0}, + [I(32,89)] = {13,0xA73}, + [I(33,89)] = {17,0x1FC73}, + [I(34,89)] = {17,0x1FCF3}, + [I(35,89)] = {19,0x7FD73}, + [I(36,89)] = {20,0xFFCF3}, + [I(37,89)] = {13,0xAF3}, + [I(38,89)] = {15,0x7C73}, + [I(39,89)] = {18,0x3FD73}, + [I(40,89)] = {17,0x1FD73}, + [I(41,89)] = {17,0x1FDF3}, + [I(42,89)] = {15,0x7CF3}, + [I(43,89)] = {18,0x3FDF3}, + [I(44,89)] = {15,0x7D73}, + [I(45,89)] = {13,0xB73}, + [I(46,89)] = {13,0xBF3}, + [I(47,89)] = {13,0xC73}, + [I(48,89)] = {12,0x73}, + [I(49,89)] = {12,0xF3}, + [I(50,89)] = {12,0x173}, + [I(51,89)] = {13,0xCF3}, + [I(52,89)] = {13,0xD73}, + [I(53,89)] = {13,0xDF3}, + [I(54,89)] = {13,0xE73}, + [I(55,89)] = {13,0xEF3}, + [I(56,89)] = {13,0xF73}, + [I(57,89)] = {13,0xFF3}, + [I(58,89)] = {14,0x2E73}, + [I(59,89)] = {15,0x7DF3}, + [I(60,89)] = {22,0x3FFE73}, + [I(61,89)] = {13,0x1073}, + [I(62,89)] = {19,0x7FDF3}, + [I(63,89)] = {17,0x1FE73}, + [I(64,89)] = {20,0xFFD73}, + [I(65,89)] = {13,0x10F3}, + [I(66,89)] = {14,0x2EF3}, + [I(67,89)] = {14,0x2F73}, + [I(68,89)] = {14,0x2FF3}, + [I(69,89)] = {14,0x3073}, + [I(70,89)] = {14,0x30F3}, + [I(71,89)] = {14,0x3173}, + [I(72,89)] = {14,0x31F3}, + [I(73,89)] = {14,0x3273}, + [I(74,89)] = {14,0x32F3}, + [I(75,89)] = {14,0x3373}, + [I(76,89)] = {14,0x33F3}, + [I(77,89)] = {14,0x3473}, + [I(78,89)] = {14,0x34F3}, + [I(79,89)] = {14,0x3573}, + [I(80,89)] = {14,0x35F3}, + [I(81,89)] = {14,0x3673}, + [I(82,89)] = {14,0x36F3}, + [I(83,89)] = {14,0x3773}, + [I(84,89)] = {14,0x37F3}, + [I(85,89)] = {14,0x3873}, + [I(86,89)] = {14,0x38F3}, + [I(87,89)] = {14,0x3973}, + [I(88,89)] = {15,0x7E73}, + [I(89,89)] = {14,0x39F3}, + [I(90,89)] = {15,0x7EF3}, + [I(91,89)] = {20,0xFFDF3}, + [I(92,89)] = {26,0x3FFF873}, + [I(93,89)] = {20,0xFFE73}, + [I(94,89)] = {21,0x1FFE73}, + [I(95,89)] = {13,0x1173}, + [I(96,89)] = {22,0x3FFEF3}, + [I(97,89)] = {12,0x1F3}, + [I(98,89)] = {13,0x11F3}, + [I(99,89)] = {12,0x273}, + [I(100,89)] = {13,0x1273}, + [I(101,89)] = {12,0x2F3}, + [I(102,89)] = {13,0x12F3}, + [I(103,89)] = {13,0x1373}, + [I(104,89)] = {13,0x13F3}, + [I(105,89)] = {12,0x373}, + [I(106,89)] = {14,0x3A73}, + [I(107,89)] = {14,0x3AF3}, + [I(108,89)] = {13,0x1473}, + [I(109,89)] = {13,0x14F3}, + [I(110,89)] = {13,0x1573}, + [I(111,89)] = {12,0x3F3}, + [I(112,89)] = {13,0x15F3}, + [I(113,89)] = {14,0x3B73}, + [I(114,89)] = {13,0x1673}, + [I(115,89)] = {12,0x473}, + [I(116,89)] = {12,0x4F3}, + [I(117,89)] = {13,0x16F3}, + [I(118,89)] = {14,0x3BF3}, + [I(119,89)] = {14,0x3C73}, + [I(120,89)] = {14,0x3CF3}, + [I(121,89)] = {14,0x3D73}, + [I(122,89)] = {14,0x3DF3}, + [I(123,89)] = {22,0x3FFF73}, + [I(124,89)] = {18,0x3FE73}, + [I(125,89)] = {21,0x1FFEF3}, + [I(126,89)] = {20,0xFFEF3}, + [I(127,89)] = {64,0}, + [I(128,89)] = {27,0x7FFF373}, + [I(129,89)] = {29,0x1FFFE973}, + [I(130,89)] = {27,0x7FFF3F3}, + [I(131,89)] = {27,0x7FFF473}, + [I(132,89)] = {29,0x1FFFE9F3}, + [I(133,89)] = {29,0x1FFFEA73}, + [I(134,89)] = {29,0x1FFFEAF3}, + [I(135,89)] = {30,0x3FFFECF3}, + [I(136,89)] = {29,0x1FFFEB73}, + [I(137,89)] = {30,0x3FFFED73}, + [I(138,89)] = {30,0x3FFFEDF3}, + [I(139,89)] = {30,0x3FFFEE73}, + [I(140,89)] = {30,0x3FFFEEF3}, + [I(141,89)] = {30,0x3FFFEF73}, + [I(142,89)] = {31,0x7FFFF5F3}, + [I(143,89)] = {30,0x3FFFEFF3}, + [I(144,89)] = {31,0x7FFFF673}, + [I(145,89)] = {31,0x7FFFF6F3}, + [I(146,89)] = {29,0x1FFFEBF3}, + [I(147,89)] = {30,0x3FFFF073}, + [I(148,89)] = {31,0x7FFFF773}, + [I(149,89)] = {30,0x3FFFF0F3}, + [I(150,89)] = {30,0x3FFFF173}, + [I(151,89)] = {30,0x3FFFF1F3}, + [I(152,89)] = {30,0x3FFFF273}, + [I(153,89)] = {28,0xFFFEE73}, + [I(154,89)] = {29,0x1FFFEC73}, + [I(155,89)] = {30,0x3FFFF2F3}, + [I(156,89)] = {29,0x1FFFECF3}, + [I(157,89)] = {30,0x3FFFF373}, + [I(158,89)] = {30,0x3FFFF3F3}, + [I(159,89)] = {31,0x7FFFF7F3}, + [I(160,89)] = {29,0x1FFFED73}, + [I(161,89)] = {28,0xFFFEEF3}, + [I(162,89)] = {27,0x7FFF4F3}, + [I(163,89)] = {29,0x1FFFEDF3}, + [I(164,89)] = {29,0x1FFFEE73}, + [I(165,89)] = {30,0x3FFFF473}, + [I(166,89)] = {30,0x3FFFF4F3}, + [I(167,89)] = {28,0xFFFEF73}, + [I(168,89)] = {30,0x3FFFF573}, + [I(169,89)] = {29,0x1FFFEEF3}, + [I(170,89)] = {29,0x1FFFEF73}, + [I(171,89)] = {31,0x7FFFF873}, + [I(172,89)] = {28,0xFFFEFF3}, + [I(173,89)] = {29,0x1FFFEFF3}, + [I(174,89)] = {30,0x3FFFF5F3}, + [I(175,89)] = {30,0x3FFFF673}, + [I(176,89)] = {28,0xFFFF073}, + [I(177,89)] = {28,0xFFFF0F3}, + [I(178,89)] = {29,0x1FFFF073}, + [I(179,89)] = {28,0xFFFF173}, + [I(180,89)] = {30,0x3FFFF6F3}, + [I(181,89)] = {29,0x1FFFF0F3}, + [I(182,89)] = {30,0x3FFFF773}, + [I(183,89)] = {30,0x3FFFF7F3}, + [I(184,89)] = {27,0x7FFF573}, + [I(185,89)] = {29,0x1FFFF173}, + [I(186,89)] = {29,0x1FFFF1F3}, + [I(187,89)] = {29,0x1FFFF273}, + [I(188,89)] = {30,0x3FFFF873}, + [I(189,89)] = {29,0x1FFFF2F3}, + [I(190,89)] = {29,0x1FFFF373}, + [I(191,89)] = {30,0x3FFFF8F3}, + [I(192,89)] = {64,0}, + [I(193,89)] = {64,0}, + [I(194,89)] = {27,0x7FFF5F3}, + [I(195,89)] = {26,0x3FFF8F3}, + [I(196,89)] = {29,0x1FFFF3F3}, + [I(197,89)] = {30,0x3FFFF973}, + [I(198,89)] = {29,0x1FFFF473}, + [I(199,89)] = {X32,0xFFFFF673}, + [I(200,89)] = {64,0}, + [I(201,89)] = {64,0}, + [I(202,89)] = {64,0}, + [I(203,89)] = {64,0}, + [I(204,89)] = {64,0}, + [I(205,89)] = {64,0}, + [I(206,89)] = {31,0x7FFFF8F3}, + [I(207,89)] = {X32,0xFFFFF6F3}, + [I(208,89)] = {26,0x3FFF973}, + [I(209,89)] = {28,0xFFFF1F3}, + [I(210,89)] = {64,0}, + [I(211,89)] = {64,0}, + [I(212,89)] = {64,0}, + [I(213,89)] = {64,0}, + [I(214,89)] = {64,0}, + [I(215,89)] = {31,0x7FFFF973}, + [I(216,89)] = {28,0xFFFF273}, + [I(217,89)] = {28,0xFFFF2F3}, + [I(218,89)] = {64,0}, + [I(219,89)] = {64,0}, + [I(220,89)] = {64,0}, + [I(221,89)] = {64,0}, + [I(222,89)] = {64,0}, + [I(223,89)] = {64,0}, + [I(224,89)] = {27,0x7FFF673}, + [I(225,89)] = {31,0x7FFFF9F3}, + [I(226,89)] = {27,0x7FFF6F3}, + [I(227,89)] = {28,0xFFFF373}, + [I(228,89)] = {29,0x1FFFF4F3}, + [I(229,89)] = {28,0xFFFF3F3}, + [I(230,89)] = {28,0xFFFF473}, + [I(231,89)] = {30,0x3FFFF9F3}, + [I(232,89)] = {29,0x1FFFF573}, + [I(233,89)] = {29,0x1FFFF5F3}, + [I(234,89)] = {X32,0xFFFFF773}, + [I(235,89)] = {X32,0xFFFFF7F3}, + [I(236,89)] = {31,0x7FFFFA73}, + [I(237,89)] = {31,0x7FFFFAF3}, + [I(238,89)] = {64,0}, + [I(239,89)] = {30,0x3FFFFA73}, + [I(240,89)] = {64,0}, + [I(241,89)] = {64,0}, + [I(242,89)] = {64,0}, + [I(243,89)] = {64,0}, + [I(244,89)] = {64,0}, + [I(245,89)] = {64,0}, + [I(246,89)] = {64,0}, + [I(247,89)] = {64,0}, + [I(248,89)] = {64,0}, + [I(249,89)] = {64,0}, + [I(250,89)] = {64,0}, + [I(251,89)] = {64,0}, + [I(252,89)] = {64,0}, + [I(253,89)] = {64,0}, + [I(254,89)] = {64,0}, + [I(255,89)] = {64,0}, + [I(0,90)] = {21,0x1FF8FD}, + [I(1,90)] = {31,0x7FFFD8FD}, + [I(2,90)] = {64,0}, + [I(3,90)] = {64,0}, + [I(4,90)] = {64,0}, + [I(5,90)] = {64,0}, + [I(6,90)] = {64,0}, + [I(7,90)] = {64,0}, + [I(8,90)] = {64,0}, + [I(9,90)] = {X32,0xFFFFEAFD}, + [I(10,90)] = {64,0}, + [I(11,90)] = {64,0}, + [I(12,90)] = {64,0}, + [I(13,90)] = {64,0}, + [I(14,90)] = {64,0}, + [I(15,90)] = {64,0}, + [I(16,90)] = {64,0}, + [I(17,90)] = {64,0}, + [I(18,90)] = {64,0}, + [I(19,90)] = {64,0}, + [I(20,90)] = {64,0}, + [I(21,90)] = {64,0}, + [I(22,90)] = {64,0}, + [I(23,90)] = {64,0}, + [I(24,90)] = {64,0}, + [I(25,90)] = {64,0}, + [I(26,90)] = {64,0}, + [I(27,90)] = {64,0}, + [I(28,90)] = {64,0}, + [I(29,90)] = {64,0}, + [I(30,90)] = {64,0}, + [I(31,90)] = {64,0}, + [I(32,90)] = {14,0x14FD}, + [I(33,90)] = {18,0x3F8FD}, + [I(34,90)] = {18,0x3F9FD}, + [I(35,90)] = {20,0xFFAFD}, + [I(36,90)] = {21,0x1FF9FD}, + [I(37,90)] = {14,0x15FD}, + [I(38,90)] = {16,0xF8FD}, + [I(39,90)] = {19,0x7FAFD}, + [I(40,90)] = {18,0x3FAFD}, + [I(41,90)] = {18,0x3FBFD}, + [I(42,90)] = {16,0xF9FD}, + [I(43,90)] = {19,0x7FBFD}, + [I(44,90)] = {16,0xFAFD}, + [I(45,90)] = {14,0x16FD}, + [I(46,90)] = {14,0x17FD}, + [I(47,90)] = {14,0x18FD}, + [I(48,90)] = {13,0xFD}, + [I(49,90)] = {13,0x1FD}, + [I(50,90)] = {13,0x2FD}, + [I(51,90)] = {14,0x19FD}, + [I(52,90)] = {14,0x1AFD}, + [I(53,90)] = {14,0x1BFD}, + [I(54,90)] = {14,0x1CFD}, + [I(55,90)] = {14,0x1DFD}, + [I(56,90)] = {14,0x1EFD}, + [I(57,90)] = {14,0x1FFD}, + [I(58,90)] = {15,0x5CFD}, + [I(59,90)] = {16,0xFBFD}, + [I(60,90)] = {23,0x7FFCFD}, + [I(61,90)] = {14,0x20FD}, + [I(62,90)] = {20,0xFFBFD}, + [I(63,90)] = {18,0x3FCFD}, + [I(64,90)] = {21,0x1FFAFD}, + [I(65,90)] = {14,0x21FD}, + [I(66,90)] = {15,0x5DFD}, + [I(67,90)] = {15,0x5EFD}, + [I(68,90)] = {15,0x5FFD}, + [I(69,90)] = {15,0x60FD}, + [I(70,90)] = {15,0x61FD}, + [I(71,90)] = {15,0x62FD}, + [I(72,90)] = {15,0x63FD}, + [I(73,90)] = {15,0x64FD}, + [I(74,90)] = {15,0x65FD}, + [I(75,90)] = {15,0x66FD}, + [I(76,90)] = {15,0x67FD}, + [I(77,90)] = {15,0x68FD}, + [I(78,90)] = {15,0x69FD}, + [I(79,90)] = {15,0x6AFD}, + [I(80,90)] = {15,0x6BFD}, + [I(81,90)] = {15,0x6CFD}, + [I(82,90)] = {15,0x6DFD}, + [I(83,90)] = {15,0x6EFD}, + [I(84,90)] = {15,0x6FFD}, + [I(85,90)] = {15,0x70FD}, + [I(86,90)] = {15,0x71FD}, + [I(87,90)] = {15,0x72FD}, + [I(88,90)] = {16,0xFCFD}, + [I(89,90)] = {15,0x73FD}, + [I(90,90)] = {16,0xFDFD}, + [I(91,90)] = {21,0x1FFBFD}, + [I(92,90)] = {27,0x7FFF0FD}, + [I(93,90)] = {21,0x1FFCFD}, + [I(94,90)] = {22,0x3FFCFD}, + [I(95,90)] = {14,0x22FD}, + [I(96,90)] = {23,0x7FFDFD}, + [I(97,90)] = {13,0x3FD}, + [I(98,90)] = {14,0x23FD}, + [I(99,90)] = {13,0x4FD}, + [I(100,90)] = {14,0x24FD}, + [I(101,90)] = {13,0x5FD}, + [I(102,90)] = {14,0x25FD}, + [I(103,90)] = {14,0x26FD}, + [I(104,90)] = {14,0x27FD}, + [I(105,90)] = {13,0x6FD}, + [I(106,90)] = {15,0x74FD}, + [I(107,90)] = {15,0x75FD}, + [I(108,90)] = {14,0x28FD}, + [I(109,90)] = {14,0x29FD}, + [I(110,90)] = {14,0x2AFD}, + [I(111,90)] = {13,0x7FD}, + [I(112,90)] = {14,0x2BFD}, + [I(113,90)] = {15,0x76FD}, + [I(114,90)] = {14,0x2CFD}, + [I(115,90)] = {13,0x8FD}, + [I(116,90)] = {13,0x9FD}, + [I(117,90)] = {14,0x2DFD}, + [I(118,90)] = {15,0x77FD}, + [I(119,90)] = {15,0x78FD}, + [I(120,90)] = {15,0x79FD}, + [I(121,90)] = {15,0x7AFD}, + [I(122,90)] = {15,0x7BFD}, + [I(123,90)] = {23,0x7FFEFD}, + [I(124,90)] = {19,0x7FCFD}, + [I(125,90)] = {22,0x3FFDFD}, + [I(126,90)] = {21,0x1FFDFD}, + [I(127,90)] = {64,0}, + [I(128,90)] = {28,0xFFFE6FD}, + [I(129,90)] = {30,0x3FFFD2FD}, + [I(130,90)] = {28,0xFFFE7FD}, + [I(131,90)] = {28,0xFFFE8FD}, + [I(132,90)] = {30,0x3FFFD3FD}, + [I(133,90)] = {30,0x3FFFD4FD}, + [I(134,90)] = {30,0x3FFFD5FD}, + [I(135,90)] = {31,0x7FFFD9FD}, + [I(136,90)] = {30,0x3FFFD6FD}, + [I(137,90)] = {31,0x7FFFDAFD}, + [I(138,90)] = {31,0x7FFFDBFD}, + [I(139,90)] = {31,0x7FFFDCFD}, + [I(140,90)] = {31,0x7FFFDDFD}, + [I(141,90)] = {31,0x7FFFDEFD}, + [I(142,90)] = {X32,0xFFFFEBFD}, + [I(143,90)] = {31,0x7FFFDFFD}, + [I(144,90)] = {X32,0xFFFFECFD}, + [I(145,90)] = {X32,0xFFFFEDFD}, + [I(146,90)] = {30,0x3FFFD7FD}, + [I(147,90)] = {31,0x7FFFE0FD}, + [I(148,90)] = {X32,0xFFFFEEFD}, + [I(149,90)] = {31,0x7FFFE1FD}, + [I(150,90)] = {31,0x7FFFE2FD}, + [I(151,90)] = {31,0x7FFFE3FD}, + [I(152,90)] = {31,0x7FFFE4FD}, + [I(153,90)] = {29,0x1FFFDCFD}, + [I(154,90)] = {30,0x3FFFD8FD}, + [I(155,90)] = {31,0x7FFFE5FD}, + [I(156,90)] = {30,0x3FFFD9FD}, + [I(157,90)] = {31,0x7FFFE6FD}, + [I(158,90)] = {31,0x7FFFE7FD}, + [I(159,90)] = {X32,0xFFFFEFFD}, + [I(160,90)] = {30,0x3FFFDAFD}, + [I(161,90)] = {29,0x1FFFDDFD}, + [I(162,90)] = {28,0xFFFE9FD}, + [I(163,90)] = {30,0x3FFFDBFD}, + [I(164,90)] = {30,0x3FFFDCFD}, + [I(165,90)] = {31,0x7FFFE8FD}, + [I(166,90)] = {31,0x7FFFE9FD}, + [I(167,90)] = {29,0x1FFFDEFD}, + [I(168,90)] = {31,0x7FFFEAFD}, + [I(169,90)] = {30,0x3FFFDDFD}, + [I(170,90)] = {30,0x3FFFDEFD}, + [I(171,90)] = {X32,0xFFFFF0FD}, + [I(172,90)] = {29,0x1FFFDFFD}, + [I(173,90)] = {30,0x3FFFDFFD}, + [I(174,90)] = {31,0x7FFFEBFD}, + [I(175,90)] = {31,0x7FFFECFD}, + [I(176,90)] = {29,0x1FFFE0FD}, + [I(177,90)] = {29,0x1FFFE1FD}, + [I(178,90)] = {30,0x3FFFE0FD}, + [I(179,90)] = {29,0x1FFFE2FD}, + [I(180,90)] = {31,0x7FFFEDFD}, + [I(181,90)] = {30,0x3FFFE1FD}, + [I(182,90)] = {31,0x7FFFEEFD}, + [I(183,90)] = {31,0x7FFFEFFD}, + [I(184,90)] = {28,0xFFFEAFD}, + [I(185,90)] = {30,0x3FFFE2FD}, + [I(186,90)] = {30,0x3FFFE3FD}, + [I(187,90)] = {30,0x3FFFE4FD}, + [I(188,90)] = {31,0x7FFFF0FD}, + [I(189,90)] = {30,0x3FFFE5FD}, + [I(190,90)] = {30,0x3FFFE6FD}, + [I(191,90)] = {31,0x7FFFF1FD}, + [I(192,90)] = {64,0}, + [I(193,90)] = {64,0}, + [I(194,90)] = {28,0xFFFEBFD}, + [I(195,90)] = {27,0x7FFF1FD}, + [I(196,90)] = {30,0x3FFFE7FD}, + [I(197,90)] = {31,0x7FFFF2FD}, + [I(198,90)] = {30,0x3FFFE8FD}, + [I(199,90)] = {64,0}, + [I(200,90)] = {64,0}, + [I(201,90)] = {64,0}, + [I(202,90)] = {64,0}, + [I(203,90)] = {64,0}, + [I(204,90)] = {64,0}, + [I(205,90)] = {64,0}, + [I(206,90)] = {X32,0xFFFFF1FD}, + [I(207,90)] = {64,0}, + [I(208,90)] = {27,0x7FFF2FD}, + [I(209,90)] = {29,0x1FFFE3FD}, + [I(210,90)] = {64,0}, + [I(211,90)] = {64,0}, + [I(212,90)] = {64,0}, + [I(213,90)] = {64,0}, + [I(214,90)] = {64,0}, + [I(215,90)] = {X32,0xFFFFF2FD}, + [I(216,90)] = {29,0x1FFFE4FD}, + [I(217,90)] = {29,0x1FFFE5FD}, + [I(218,90)] = {64,0}, + [I(219,90)] = {64,0}, + [I(220,90)] = {64,0}, + [I(221,90)] = {64,0}, + [I(222,90)] = {64,0}, + [I(223,90)] = {64,0}, + [I(224,90)] = {28,0xFFFECFD}, + [I(225,90)] = {X32,0xFFFFF3FD}, + [I(226,90)] = {28,0xFFFEDFD}, + [I(227,90)] = {29,0x1FFFE6FD}, + [I(228,90)] = {30,0x3FFFE9FD}, + [I(229,90)] = {29,0x1FFFE7FD}, + [I(230,90)] = {29,0x1FFFE8FD}, + [I(231,90)] = {31,0x7FFFF3FD}, + [I(232,90)] = {30,0x3FFFEAFD}, + [I(233,90)] = {30,0x3FFFEBFD}, + [I(234,90)] = {64,0}, + [I(235,90)] = {64,0}, + [I(236,90)] = {X32,0xFFFFF4FD}, + [I(237,90)] = {X32,0xFFFFF5FD}, + [I(238,90)] = {64,0}, + [I(239,90)] = {31,0x7FFFF4FD}, + [I(240,90)] = {64,0}, + [I(241,90)] = {64,0}, + [I(242,90)] = {64,0}, + [I(243,90)] = {64,0}, + [I(244,90)] = {64,0}, + [I(245,90)] = {64,0}, + [I(246,90)] = {64,0}, + [I(247,90)] = {64,0}, + [I(248,90)] = {64,0}, + [I(249,90)] = {64,0}, + [I(250,90)] = {64,0}, + [I(251,90)] = {64,0}, + [I(252,90)] = {64,0}, + [I(253,90)] = {64,0}, + [I(254,90)] = {64,0}, + [I(255,90)] = {64,0}, + [I(0,91)] = {26,0x3FF1FFB}, + [I(1,91)] = {64,0}, + [I(2,91)] = {64,0}, + [I(3,91)] = {64,0}, + [I(4,91)] = {64,0}, + [I(5,91)] = {64,0}, + [I(6,91)] = {64,0}, + [I(7,91)] = {64,0}, + [I(8,91)] = {64,0}, + [I(9,91)] = {64,0}, + [I(10,91)] = {64,0}, + [I(11,91)] = {64,0}, + [I(12,91)] = {64,0}, + [I(13,91)] = {64,0}, + [I(14,91)] = {64,0}, + [I(15,91)] = {64,0}, + [I(16,91)] = {64,0}, + [I(17,91)] = {64,0}, + [I(18,91)] = {64,0}, + [I(19,91)] = {64,0}, + [I(20,91)] = {64,0}, + [I(21,91)] = {64,0}, + [I(22,91)] = {64,0}, + [I(23,91)] = {64,0}, + [I(24,91)] = {64,0}, + [I(25,91)] = {64,0}, + [I(26,91)] = {64,0}, + [I(27,91)] = {64,0}, + [I(28,91)] = {64,0}, + [I(29,91)] = {64,0}, + [I(30,91)] = {64,0}, + [I(31,91)] = {64,0}, + [I(32,91)] = {19,0x29FFB}, + [I(33,91)] = {23,0x7F1FFB}, + [I(34,91)] = {23,0x7F3FFB}, + [I(35,91)] = {25,0x1FF5FFB}, + [I(36,91)] = {26,0x3FF3FFB}, + [I(37,91)] = {19,0x2BFFB}, + [I(38,91)] = {21,0x1F1FFB}, + [I(39,91)] = {24,0xFF5FFB}, + [I(40,91)] = {23,0x7F5FFB}, + [I(41,91)] = {23,0x7F7FFB}, + [I(42,91)] = {21,0x1F3FFB}, + [I(43,91)] = {24,0xFF7FFB}, + [I(44,91)] = {21,0x1F5FFB}, + [I(45,91)] = {19,0x2DFFB}, + [I(46,91)] = {19,0x2FFFB}, + [I(47,91)] = {19,0x31FFB}, + [I(48,91)] = {18,0x1FFB}, + [I(49,91)] = {18,0x3FFB}, + [I(50,91)] = {18,0x5FFB}, + [I(51,91)] = {19,0x33FFB}, + [I(52,91)] = {19,0x35FFB}, + [I(53,91)] = {19,0x37FFB}, + [I(54,91)] = {19,0x39FFB}, + [I(55,91)] = {19,0x3BFFB}, + [I(56,91)] = {19,0x3DFFB}, + [I(57,91)] = {19,0x3FFFB}, + [I(58,91)] = {20,0xB9FFB}, + [I(59,91)] = {21,0x1F7FFB}, + [I(60,91)] = {28,0xFFF9FFB}, + [I(61,91)] = {19,0x41FFB}, + [I(62,91)] = {25,0x1FF7FFB}, + [I(63,91)] = {23,0x7F9FFB}, + [I(64,91)] = {26,0x3FF5FFB}, + [I(65,91)] = {19,0x43FFB}, + [I(66,91)] = {20,0xBBFFB}, + [I(67,91)] = {20,0xBDFFB}, + [I(68,91)] = {20,0xBFFFB}, + [I(69,91)] = {20,0xC1FFB}, + [I(70,91)] = {20,0xC3FFB}, + [I(71,91)] = {20,0xC5FFB}, + [I(72,91)] = {20,0xC7FFB}, + [I(73,91)] = {20,0xC9FFB}, + [I(74,91)] = {20,0xCBFFB}, + [I(75,91)] = {20,0xCDFFB}, + [I(76,91)] = {20,0xCFFFB}, + [I(77,91)] = {20,0xD1FFB}, + [I(78,91)] = {20,0xD3FFB}, + [I(79,91)] = {20,0xD5FFB}, + [I(80,91)] = {20,0xD7FFB}, + [I(81,91)] = {20,0xD9FFB}, + [I(82,91)] = {20,0xDBFFB}, + [I(83,91)] = {20,0xDDFFB}, + [I(84,91)] = {20,0xDFFFB}, + [I(85,91)] = {20,0xE1FFB}, + [I(86,91)] = {20,0xE3FFB}, + [I(87,91)] = {20,0xE5FFB}, + [I(88,91)] = {21,0x1F9FFB}, + [I(89,91)] = {20,0xE7FFB}, + [I(90,91)] = {21,0x1FBFFB}, + [I(91,91)] = {26,0x3FF7FFB}, + [I(92,91)] = {X32,0xFFFE1FFB}, + [I(93,91)] = {26,0x3FF9FFB}, + [I(94,91)] = {27,0x7FF9FFB}, + [I(95,91)] = {19,0x45FFB}, + [I(96,91)] = {28,0xFFFBFFB}, + [I(97,91)] = {18,0x7FFB}, + [I(98,91)] = {19,0x47FFB}, + [I(99,91)] = {18,0x9FFB}, + [I(100,91)] = {19,0x49FFB}, + [I(101,91)] = {18,0xBFFB}, + [I(102,91)] = {19,0x4BFFB}, + [I(103,91)] = {19,0x4DFFB}, + [I(104,91)] = {19,0x4FFFB}, + [I(105,91)] = {18,0xDFFB}, + [I(106,91)] = {20,0xE9FFB}, + [I(107,91)] = {20,0xEBFFB}, + [I(108,91)] = {19,0x51FFB}, + [I(109,91)] = {19,0x53FFB}, + [I(110,91)] = {19,0x55FFB}, + [I(111,91)] = {18,0xFFFB}, + [I(112,91)] = {19,0x57FFB}, + [I(113,91)] = {20,0xEDFFB}, + [I(114,91)] = {19,0x59FFB}, + [I(115,91)] = {18,0x11FFB}, + [I(116,91)] = {18,0x13FFB}, + [I(117,91)] = {19,0x5BFFB}, + [I(118,91)] = {20,0xEFFFB}, + [I(119,91)] = {20,0xF1FFB}, + [I(120,91)] = {20,0xF3FFB}, + [I(121,91)] = {20,0xF5FFB}, + [I(122,91)] = {20,0xF7FFB}, + [I(123,91)] = {28,0xFFFDFFB}, + [I(124,91)] = {24,0xFF9FFB}, + [I(125,91)] = {27,0x7FFBFFB}, + [I(126,91)] = {26,0x3FFBFFB}, + [I(127,91)] = {64,0}, + [I(128,91)] = {64,0}, + [I(129,91)] = {64,0}, + [I(130,91)] = {64,0}, + [I(131,91)] = {64,0}, + [I(132,91)] = {64,0}, + [I(133,91)] = {64,0}, + [I(134,91)] = {64,0}, + [I(135,91)] = {64,0}, + [I(136,91)] = {64,0}, + [I(137,91)] = {64,0}, + [I(138,91)] = {64,0}, + [I(139,91)] = {64,0}, + [I(140,91)] = {64,0}, + [I(141,91)] = {64,0}, + [I(142,91)] = {64,0}, + [I(143,91)] = {64,0}, + [I(144,91)] = {64,0}, + [I(145,91)] = {64,0}, + [I(146,91)] = {64,0}, + [I(147,91)] = {64,0}, + [I(148,91)] = {64,0}, + [I(149,91)] = {64,0}, + [I(150,91)] = {64,0}, + [I(151,91)] = {64,0}, + [I(152,91)] = {64,0}, + [I(153,91)] = {64,0}, + [I(154,91)] = {64,0}, + [I(155,91)] = {64,0}, + [I(156,91)] = {64,0}, + [I(157,91)] = {64,0}, + [I(158,91)] = {64,0}, + [I(159,91)] = {64,0}, + [I(160,91)] = {64,0}, + [I(161,91)] = {64,0}, + [I(162,91)] = {64,0}, + [I(163,91)] = {64,0}, + [I(164,91)] = {64,0}, + [I(165,91)] = {64,0}, + [I(166,91)] = {64,0}, + [I(167,91)] = {64,0}, + [I(168,91)] = {64,0}, + [I(169,91)] = {64,0}, + [I(170,91)] = {64,0}, + [I(171,91)] = {64,0}, + [I(172,91)] = {64,0}, + [I(173,91)] = {64,0}, + [I(174,91)] = {64,0}, + [I(175,91)] = {64,0}, + [I(176,91)] = {64,0}, + [I(177,91)] = {64,0}, + [I(178,91)] = {64,0}, + [I(179,91)] = {64,0}, + [I(180,91)] = {64,0}, + [I(181,91)] = {64,0}, + [I(182,91)] = {64,0}, + [I(183,91)] = {64,0}, + [I(184,91)] = {64,0}, + [I(185,91)] = {64,0}, + [I(186,91)] = {64,0}, + [I(187,91)] = {64,0}, + [I(188,91)] = {64,0}, + [I(189,91)] = {64,0}, + [I(190,91)] = {64,0}, + [I(191,91)] = {64,0}, + [I(192,91)] = {64,0}, + [I(193,91)] = {64,0}, + [I(194,91)] = {64,0}, + [I(195,91)] = {X32,0xFFFE3FFB}, + [I(196,91)] = {64,0}, + [I(197,91)] = {64,0}, + [I(198,91)] = {64,0}, + [I(199,91)] = {64,0}, + [I(200,91)] = {64,0}, + [I(201,91)] = {64,0}, + [I(202,91)] = {64,0}, + [I(203,91)] = {64,0}, + [I(204,91)] = {64,0}, + [I(205,91)] = {64,0}, + [I(206,91)] = {64,0}, + [I(207,91)] = {64,0}, + [I(208,91)] = {X32,0xFFFE5FFB}, + [I(209,91)] = {64,0}, + [I(210,91)] = {64,0}, + [I(211,91)] = {64,0}, + [I(212,91)] = {64,0}, + [I(213,91)] = {64,0}, + [I(214,91)] = {64,0}, + [I(215,91)] = {64,0}, + [I(216,91)] = {64,0}, + [I(217,91)] = {64,0}, + [I(218,91)] = {64,0}, + [I(219,91)] = {64,0}, + [I(220,91)] = {64,0}, + [I(221,91)] = {64,0}, + [I(222,91)] = {64,0}, + [I(223,91)] = {64,0}, + [I(224,91)] = {64,0}, + [I(225,91)] = {64,0}, + [I(226,91)] = {64,0}, + [I(227,91)] = {64,0}, + [I(228,91)] = {64,0}, + [I(229,91)] = {64,0}, + [I(230,91)] = {64,0}, + [I(231,91)] = {64,0}, + [I(232,91)] = {64,0}, + [I(233,91)] = {64,0}, + [I(234,91)] = {64,0}, + [I(235,91)] = {64,0}, + [I(236,91)] = {64,0}, + [I(237,91)] = {64,0}, + [I(238,91)] = {64,0}, + [I(239,91)] = {64,0}, + [I(240,91)] = {64,0}, + [I(241,91)] = {64,0}, + [I(242,91)] = {64,0}, + [I(243,91)] = {64,0}, + [I(244,91)] = {64,0}, + [I(245,91)] = {64,0}, + [I(246,91)] = {64,0}, + [I(247,91)] = {64,0}, + [I(248,91)] = {64,0}, + [I(249,91)] = {64,0}, + [I(250,91)] = {64,0}, + [I(251,91)] = {64,0}, + [I(252,91)] = {64,0}, + [I(253,91)] = {64,0}, + [I(254,91)] = {64,0}, + [I(255,91)] = {64,0}, + [I(0,92)] = {X32,0xFFC7FFF0}, + [I(1,92)] = {64,0}, + [I(2,92)] = {64,0}, + [I(3,92)] = {64,0}, + [I(4,92)] = {64,0}, + [I(5,92)] = {64,0}, + [I(6,92)] = {64,0}, + [I(7,92)] = {64,0}, + [I(8,92)] = {64,0}, + [I(9,92)] = {64,0}, + [I(10,92)] = {64,0}, + [I(11,92)] = {64,0}, + [I(12,92)] = {64,0}, + [I(13,92)] = {64,0}, + [I(14,92)] = {64,0}, + [I(15,92)] = {64,0}, + [I(16,92)] = {64,0}, + [I(17,92)] = {64,0}, + [I(18,92)] = {64,0}, + [I(19,92)] = {64,0}, + [I(20,92)] = {64,0}, + [I(21,92)] = {64,0}, + [I(22,92)] = {64,0}, + [I(23,92)] = {64,0}, + [I(24,92)] = {64,0}, + [I(25,92)] = {64,0}, + [I(26,92)] = {64,0}, + [I(27,92)] = {64,0}, + [I(28,92)] = {64,0}, + [I(29,92)] = {64,0}, + [I(30,92)] = {64,0}, + [I(31,92)] = {64,0}, + [I(32,92)] = {25,0xA7FFF0}, + [I(33,92)] = {29,0x1FC7FFF0}, + [I(34,92)] = {29,0x1FCFFFF0}, + [I(35,92)] = {31,0x7FD7FFF0}, + [I(36,92)] = {X32,0xFFCFFFF0}, + [I(37,92)] = {25,0xAFFFF0}, + [I(38,92)] = {27,0x7C7FFF0}, + [I(39,92)] = {30,0x3FD7FFF0}, + [I(40,92)] = {29,0x1FD7FFF0}, + [I(41,92)] = {29,0x1FDFFFF0}, + [I(42,92)] = {27,0x7CFFFF0}, + [I(43,92)] = {30,0x3FDFFFF0}, + [I(44,92)] = {27,0x7D7FFF0}, + [I(45,92)] = {25,0xB7FFF0}, + [I(46,92)] = {25,0xBFFFF0}, + [I(47,92)] = {25,0xC7FFF0}, + [I(48,92)] = {24,0x7FFF0}, + [I(49,92)] = {24,0xFFFF0}, + [I(50,92)] = {24,0x17FFF0}, + [I(51,92)] = {25,0xCFFFF0}, + [I(52,92)] = {25,0xD7FFF0}, + [I(53,92)] = {25,0xDFFFF0}, + [I(54,92)] = {25,0xE7FFF0}, + [I(55,92)] = {25,0xEFFFF0}, + [I(56,92)] = {25,0xF7FFF0}, + [I(57,92)] = {25,0xFFFFF0}, + [I(58,92)] = {26,0x2E7FFF0}, + [I(59,92)] = {27,0x7DFFFF0}, + [I(60,92)] = {64,0}, + [I(61,92)] = {25,0x107FFF0}, + [I(62,92)] = {31,0x7FDFFFF0}, + [I(63,92)] = {29,0x1FE7FFF0}, + [I(64,92)] = {X32,0xFFD7FFF0}, + [I(65,92)] = {25,0x10FFFF0}, + [I(66,92)] = {26,0x2EFFFF0}, + [I(67,92)] = {26,0x2F7FFF0}, + [I(68,92)] = {26,0x2FFFFF0}, + [I(69,92)] = {26,0x307FFF0}, + [I(70,92)] = {26,0x30FFFF0}, + [I(71,92)] = {26,0x317FFF0}, + [I(72,92)] = {26,0x31FFFF0}, + [I(73,92)] = {26,0x327FFF0}, + [I(74,92)] = {26,0x32FFFF0}, + [I(75,92)] = {26,0x337FFF0}, + [I(76,92)] = {26,0x33FFFF0}, + [I(77,92)] = {26,0x347FFF0}, + [I(78,92)] = {26,0x34FFFF0}, + [I(79,92)] = {26,0x357FFF0}, + [I(80,92)] = {26,0x35FFFF0}, + [I(81,92)] = {26,0x367FFF0}, + [I(82,92)] = {26,0x36FFFF0}, + [I(83,92)] = {26,0x377FFF0}, + [I(84,92)] = {26,0x37FFFF0}, + [I(85,92)] = {26,0x387FFF0}, + [I(86,92)] = {26,0x38FFFF0}, + [I(87,92)] = {26,0x397FFF0}, + [I(88,92)] = {27,0x7E7FFF0}, + [I(89,92)] = {26,0x39FFFF0}, + [I(90,92)] = {27,0x7EFFFF0}, + [I(91,92)] = {X32,0xFFDFFFF0}, + [I(92,92)] = {64,0}, + [I(93,92)] = {X32,0xFFE7FFF0}, + [I(94,92)] = {64,0}, + [I(95,92)] = {25,0x117FFF0}, + [I(96,92)] = {64,0}, + [I(97,92)] = {24,0x1FFFF0}, + [I(98,92)] = {25,0x11FFFF0}, + [I(99,92)] = {24,0x27FFF0}, + [I(100,92)] = {25,0x127FFF0}, + [I(101,92)] = {24,0x2FFFF0}, + [I(102,92)] = {25,0x12FFFF0}, + [I(103,92)] = {25,0x137FFF0}, + [I(104,92)] = {25,0x13FFFF0}, + [I(105,92)] = {24,0x37FFF0}, + [I(106,92)] = {26,0x3A7FFF0}, + [I(107,92)] = {26,0x3AFFFF0}, + [I(108,92)] = {25,0x147FFF0}, + [I(109,92)] = {25,0x14FFFF0}, + [I(110,92)] = {25,0x157FFF0}, + [I(111,92)] = {24,0x3FFFF0}, + [I(112,92)] = {25,0x15FFFF0}, + [I(113,92)] = {26,0x3B7FFF0}, + [I(114,92)] = {25,0x167FFF0}, + [I(115,92)] = {24,0x47FFF0}, + [I(116,92)] = {24,0x4FFFF0}, + [I(117,92)] = {25,0x16FFFF0}, + [I(118,92)] = {26,0x3BFFFF0}, + [I(119,92)] = {26,0x3C7FFF0}, + [I(120,92)] = {26,0x3CFFFF0}, + [I(121,92)] = {26,0x3D7FFF0}, + [I(122,92)] = {26,0x3DFFFF0}, + [I(123,92)] = {64,0}, + [I(124,92)] = {30,0x3FE7FFF0}, + [I(125,92)] = {64,0}, + [I(126,92)] = {X32,0xFFEFFFF0}, + [I(127,92)] = {64,0}, + [I(128,92)] = {64,0}, + [I(129,92)] = {64,0}, + [I(130,92)] = {64,0}, + [I(131,92)] = {64,0}, + [I(132,92)] = {64,0}, + [I(133,92)] = {64,0}, + [I(134,92)] = {64,0}, + [I(135,92)] = {64,0}, + [I(136,92)] = {64,0}, + [I(137,92)] = {64,0}, + [I(138,92)] = {64,0}, + [I(139,92)] = {64,0}, + [I(140,92)] = {64,0}, + [I(141,92)] = {64,0}, + [I(142,92)] = {64,0}, + [I(143,92)] = {64,0}, + [I(144,92)] = {64,0}, + [I(145,92)] = {64,0}, + [I(146,92)] = {64,0}, + [I(147,92)] = {64,0}, + [I(148,92)] = {64,0}, + [I(149,92)] = {64,0}, + [I(150,92)] = {64,0}, + [I(151,92)] = {64,0}, + [I(152,92)] = {64,0}, + [I(153,92)] = {64,0}, + [I(154,92)] = {64,0}, + [I(155,92)] = {64,0}, + [I(156,92)] = {64,0}, + [I(157,92)] = {64,0}, + [I(158,92)] = {64,0}, + [I(159,92)] = {64,0}, + [I(160,92)] = {64,0}, + [I(161,92)] = {64,0}, + [I(162,92)] = {64,0}, + [I(163,92)] = {64,0}, + [I(164,92)] = {64,0}, + [I(165,92)] = {64,0}, + [I(166,92)] = {64,0}, + [I(167,92)] = {64,0}, + [I(168,92)] = {64,0}, + [I(169,92)] = {64,0}, + [I(170,92)] = {64,0}, + [I(171,92)] = {64,0}, + [I(172,92)] = {64,0}, + [I(173,92)] = {64,0}, + [I(174,92)] = {64,0}, + [I(175,92)] = {64,0}, + [I(176,92)] = {64,0}, + [I(177,92)] = {64,0}, + [I(178,92)] = {64,0}, + [I(179,92)] = {64,0}, + [I(180,92)] = {64,0}, + [I(181,92)] = {64,0}, + [I(182,92)] = {64,0}, + [I(183,92)] = {64,0}, + [I(184,92)] = {64,0}, + [I(185,92)] = {64,0}, + [I(186,92)] = {64,0}, + [I(187,92)] = {64,0}, + [I(188,92)] = {64,0}, + [I(189,92)] = {64,0}, + [I(190,92)] = {64,0}, + [I(191,92)] = {64,0}, + [I(192,92)] = {64,0}, + [I(193,92)] = {64,0}, + [I(194,92)] = {64,0}, + [I(195,92)] = {64,0}, + [I(196,92)] = {64,0}, + [I(197,92)] = {64,0}, + [I(198,92)] = {64,0}, + [I(199,92)] = {64,0}, + [I(200,92)] = {64,0}, + [I(201,92)] = {64,0}, + [I(202,92)] = {64,0}, + [I(203,92)] = {64,0}, + [I(204,92)] = {64,0}, + [I(205,92)] = {64,0}, + [I(206,92)] = {64,0}, + [I(207,92)] = {64,0}, + [I(208,92)] = {64,0}, + [I(209,92)] = {64,0}, + [I(210,92)] = {64,0}, + [I(211,92)] = {64,0}, + [I(212,92)] = {64,0}, + [I(213,92)] = {64,0}, + [I(214,92)] = {64,0}, + [I(215,92)] = {64,0}, + [I(216,92)] = {64,0}, + [I(217,92)] = {64,0}, + [I(218,92)] = {64,0}, + [I(219,92)] = {64,0}, + [I(220,92)] = {64,0}, + [I(221,92)] = {64,0}, + [I(222,92)] = {64,0}, + [I(223,92)] = {64,0}, + [I(224,92)] = {64,0}, + [I(225,92)] = {64,0}, + [I(226,92)] = {64,0}, + [I(227,92)] = {64,0}, + [I(228,92)] = {64,0}, + [I(229,92)] = {64,0}, + [I(230,92)] = {64,0}, + [I(231,92)] = {64,0}, + [I(232,92)] = {64,0}, + [I(233,92)] = {64,0}, + [I(234,92)] = {64,0}, + [I(235,92)] = {64,0}, + [I(236,92)] = {64,0}, + [I(237,92)] = {64,0}, + [I(238,92)] = {64,0}, + [I(239,92)] = {64,0}, + [I(240,92)] = {64,0}, + [I(241,92)] = {64,0}, + [I(242,92)] = {64,0}, + [I(243,92)] = {64,0}, + [I(244,92)] = {64,0}, + [I(245,92)] = {64,0}, + [I(246,92)] = {64,0}, + [I(247,92)] = {64,0}, + [I(248,92)] = {64,0}, + [I(249,92)] = {64,0}, + [I(250,92)] = {64,0}, + [I(251,92)] = {64,0}, + [I(252,92)] = {64,0}, + [I(253,92)] = {64,0}, + [I(254,92)] = {64,0}, + [I(255,92)] = {64,0}, + [I(0,93)] = {26,0x3FF1FFC}, + [I(1,93)] = {64,0}, + [I(2,93)] = {64,0}, + [I(3,93)] = {64,0}, + [I(4,93)] = {64,0}, + [I(5,93)] = {64,0}, + [I(6,93)] = {64,0}, + [I(7,93)] = {64,0}, + [I(8,93)] = {64,0}, + [I(9,93)] = {64,0}, + [I(10,93)] = {64,0}, + [I(11,93)] = {64,0}, + [I(12,93)] = {64,0}, + [I(13,93)] = {64,0}, + [I(14,93)] = {64,0}, + [I(15,93)] = {64,0}, + [I(16,93)] = {64,0}, + [I(17,93)] = {64,0}, + [I(18,93)] = {64,0}, + [I(19,93)] = {64,0}, + [I(20,93)] = {64,0}, + [I(21,93)] = {64,0}, + [I(22,93)] = {64,0}, + [I(23,93)] = {64,0}, + [I(24,93)] = {64,0}, + [I(25,93)] = {64,0}, + [I(26,93)] = {64,0}, + [I(27,93)] = {64,0}, + [I(28,93)] = {64,0}, + [I(29,93)] = {64,0}, + [I(30,93)] = {64,0}, + [I(31,93)] = {64,0}, + [I(32,93)] = {19,0x29FFC}, + [I(33,93)] = {23,0x7F1FFC}, + [I(34,93)] = {23,0x7F3FFC}, + [I(35,93)] = {25,0x1FF5FFC}, + [I(36,93)] = {26,0x3FF3FFC}, + [I(37,93)] = {19,0x2BFFC}, + [I(38,93)] = {21,0x1F1FFC}, + [I(39,93)] = {24,0xFF5FFC}, + [I(40,93)] = {23,0x7F5FFC}, + [I(41,93)] = {23,0x7F7FFC}, + [I(42,93)] = {21,0x1F3FFC}, + [I(43,93)] = {24,0xFF7FFC}, + [I(44,93)] = {21,0x1F5FFC}, + [I(45,93)] = {19,0x2DFFC}, + [I(46,93)] = {19,0x2FFFC}, + [I(47,93)] = {19,0x31FFC}, + [I(48,93)] = {18,0x1FFC}, + [I(49,93)] = {18,0x3FFC}, + [I(50,93)] = {18,0x5FFC}, + [I(51,93)] = {19,0x33FFC}, + [I(52,93)] = {19,0x35FFC}, + [I(53,93)] = {19,0x37FFC}, + [I(54,93)] = {19,0x39FFC}, + [I(55,93)] = {19,0x3BFFC}, + [I(56,93)] = {19,0x3DFFC}, + [I(57,93)] = {19,0x3FFFC}, + [I(58,93)] = {20,0xB9FFC}, + [I(59,93)] = {21,0x1F7FFC}, + [I(60,93)] = {28,0xFFF9FFC}, + [I(61,93)] = {19,0x41FFC}, + [I(62,93)] = {25,0x1FF7FFC}, + [I(63,93)] = {23,0x7F9FFC}, + [I(64,93)] = {26,0x3FF5FFC}, + [I(65,93)] = {19,0x43FFC}, + [I(66,93)] = {20,0xBBFFC}, + [I(67,93)] = {20,0xBDFFC}, + [I(68,93)] = {20,0xBFFFC}, + [I(69,93)] = {20,0xC1FFC}, + [I(70,93)] = {20,0xC3FFC}, + [I(71,93)] = {20,0xC5FFC}, + [I(72,93)] = {20,0xC7FFC}, + [I(73,93)] = {20,0xC9FFC}, + [I(74,93)] = {20,0xCBFFC}, + [I(75,93)] = {20,0xCDFFC}, + [I(76,93)] = {20,0xCFFFC}, + [I(77,93)] = {20,0xD1FFC}, + [I(78,93)] = {20,0xD3FFC}, + [I(79,93)] = {20,0xD5FFC}, + [I(80,93)] = {20,0xD7FFC}, + [I(81,93)] = {20,0xD9FFC}, + [I(82,93)] = {20,0xDBFFC}, + [I(83,93)] = {20,0xDDFFC}, + [I(84,93)] = {20,0xDFFFC}, + [I(85,93)] = {20,0xE1FFC}, + [I(86,93)] = {20,0xE3FFC}, + [I(87,93)] = {20,0xE5FFC}, + [I(88,93)] = {21,0x1F9FFC}, + [I(89,93)] = {20,0xE7FFC}, + [I(90,93)] = {21,0x1FBFFC}, + [I(91,93)] = {26,0x3FF7FFC}, + [I(92,93)] = {X32,0xFFFE1FFC}, + [I(93,93)] = {26,0x3FF9FFC}, + [I(94,93)] = {27,0x7FF9FFC}, + [I(95,93)] = {19,0x45FFC}, + [I(96,93)] = {28,0xFFFBFFC}, + [I(97,93)] = {18,0x7FFC}, + [I(98,93)] = {19,0x47FFC}, + [I(99,93)] = {18,0x9FFC}, + [I(100,93)] = {19,0x49FFC}, + [I(101,93)] = {18,0xBFFC}, + [I(102,93)] = {19,0x4BFFC}, + [I(103,93)] = {19,0x4DFFC}, + [I(104,93)] = {19,0x4FFFC}, + [I(105,93)] = {18,0xDFFC}, + [I(106,93)] = {20,0xE9FFC}, + [I(107,93)] = {20,0xEBFFC}, + [I(108,93)] = {19,0x51FFC}, + [I(109,93)] = {19,0x53FFC}, + [I(110,93)] = {19,0x55FFC}, + [I(111,93)] = {18,0xFFFC}, + [I(112,93)] = {19,0x57FFC}, + [I(113,93)] = {20,0xEDFFC}, + [I(114,93)] = {19,0x59FFC}, + [I(115,93)] = {18,0x11FFC}, + [I(116,93)] = {18,0x13FFC}, + [I(117,93)] = {19,0x5BFFC}, + [I(118,93)] = {20,0xEFFFC}, + [I(119,93)] = {20,0xF1FFC}, + [I(120,93)] = {20,0xF3FFC}, + [I(121,93)] = {20,0xF5FFC}, + [I(122,93)] = {20,0xF7FFC}, + [I(123,93)] = {28,0xFFFDFFC}, + [I(124,93)] = {24,0xFF9FFC}, + [I(125,93)] = {27,0x7FFBFFC}, + [I(126,93)] = {26,0x3FFBFFC}, + [I(127,93)] = {64,0}, + [I(128,93)] = {64,0}, + [I(129,93)] = {64,0}, + [I(130,93)] = {64,0}, + [I(131,93)] = {64,0}, + [I(132,93)] = {64,0}, + [I(133,93)] = {64,0}, + [I(134,93)] = {64,0}, + [I(135,93)] = {64,0}, + [I(136,93)] = {64,0}, + [I(137,93)] = {64,0}, + [I(138,93)] = {64,0}, + [I(139,93)] = {64,0}, + [I(140,93)] = {64,0}, + [I(141,93)] = {64,0}, + [I(142,93)] = {64,0}, + [I(143,93)] = {64,0}, + [I(144,93)] = {64,0}, + [I(145,93)] = {64,0}, + [I(146,93)] = {64,0}, + [I(147,93)] = {64,0}, + [I(148,93)] = {64,0}, + [I(149,93)] = {64,0}, + [I(150,93)] = {64,0}, + [I(151,93)] = {64,0}, + [I(152,93)] = {64,0}, + [I(153,93)] = {64,0}, + [I(154,93)] = {64,0}, + [I(155,93)] = {64,0}, + [I(156,93)] = {64,0}, + [I(157,93)] = {64,0}, + [I(158,93)] = {64,0}, + [I(159,93)] = {64,0}, + [I(160,93)] = {64,0}, + [I(161,93)] = {64,0}, + [I(162,93)] = {64,0}, + [I(163,93)] = {64,0}, + [I(164,93)] = {64,0}, + [I(165,93)] = {64,0}, + [I(166,93)] = {64,0}, + [I(167,93)] = {64,0}, + [I(168,93)] = {64,0}, + [I(169,93)] = {64,0}, + [I(170,93)] = {64,0}, + [I(171,93)] = {64,0}, + [I(172,93)] = {64,0}, + [I(173,93)] = {64,0}, + [I(174,93)] = {64,0}, + [I(175,93)] = {64,0}, + [I(176,93)] = {64,0}, + [I(177,93)] = {64,0}, + [I(178,93)] = {64,0}, + [I(179,93)] = {64,0}, + [I(180,93)] = {64,0}, + [I(181,93)] = {64,0}, + [I(182,93)] = {64,0}, + [I(183,93)] = {64,0}, + [I(184,93)] = {64,0}, + [I(185,93)] = {64,0}, + [I(186,93)] = {64,0}, + [I(187,93)] = {64,0}, + [I(188,93)] = {64,0}, + [I(189,93)] = {64,0}, + [I(190,93)] = {64,0}, + [I(191,93)] = {64,0}, + [I(192,93)] = {64,0}, + [I(193,93)] = {64,0}, + [I(194,93)] = {64,0}, + [I(195,93)] = {X32,0xFFFE3FFC}, + [I(196,93)] = {64,0}, + [I(197,93)] = {64,0}, + [I(198,93)] = {64,0}, + [I(199,93)] = {64,0}, + [I(200,93)] = {64,0}, + [I(201,93)] = {64,0}, + [I(202,93)] = {64,0}, + [I(203,93)] = {64,0}, + [I(204,93)] = {64,0}, + [I(205,93)] = {64,0}, + [I(206,93)] = {64,0}, + [I(207,93)] = {64,0}, + [I(208,93)] = {X32,0xFFFE5FFC}, + [I(209,93)] = {64,0}, + [I(210,93)] = {64,0}, + [I(211,93)] = {64,0}, + [I(212,93)] = {64,0}, + [I(213,93)] = {64,0}, + [I(214,93)] = {64,0}, + [I(215,93)] = {64,0}, + [I(216,93)] = {64,0}, + [I(217,93)] = {64,0}, + [I(218,93)] = {64,0}, + [I(219,93)] = {64,0}, + [I(220,93)] = {64,0}, + [I(221,93)] = {64,0}, + [I(222,93)] = {64,0}, + [I(223,93)] = {64,0}, + [I(224,93)] = {64,0}, + [I(225,93)] = {64,0}, + [I(226,93)] = {64,0}, + [I(227,93)] = {64,0}, + [I(228,93)] = {64,0}, + [I(229,93)] = {64,0}, + [I(230,93)] = {64,0}, + [I(231,93)] = {64,0}, + [I(232,93)] = {64,0}, + [I(233,93)] = {64,0}, + [I(234,93)] = {64,0}, + [I(235,93)] = {64,0}, + [I(236,93)] = {64,0}, + [I(237,93)] = {64,0}, + [I(238,93)] = {64,0}, + [I(239,93)] = {64,0}, + [I(240,93)] = {64,0}, + [I(241,93)] = {64,0}, + [I(242,93)] = {64,0}, + [I(243,93)] = {64,0}, + [I(244,93)] = {64,0}, + [I(245,93)] = {64,0}, + [I(246,93)] = {64,0}, + [I(247,93)] = {64,0}, + [I(248,93)] = {64,0}, + [I(249,93)] = {64,0}, + [I(250,93)] = {64,0}, + [I(251,93)] = {64,0}, + [I(252,93)] = {64,0}, + [I(253,93)] = {64,0}, + [I(254,93)] = {64,0}, + [I(255,93)] = {64,0}, + [I(0,94)] = {27,0x7FE3FFC}, + [I(1,94)] = {64,0}, + [I(2,94)] = {64,0}, + [I(3,94)] = {64,0}, + [I(4,94)] = {64,0}, + [I(5,94)] = {64,0}, + [I(6,94)] = {64,0}, + [I(7,94)] = {64,0}, + [I(8,94)] = {64,0}, + [I(9,94)] = {64,0}, + [I(10,94)] = {64,0}, + [I(11,94)] = {64,0}, + [I(12,94)] = {64,0}, + [I(13,94)] = {64,0}, + [I(14,94)] = {64,0}, + [I(15,94)] = {64,0}, + [I(16,94)] = {64,0}, + [I(17,94)] = {64,0}, + [I(18,94)] = {64,0}, + [I(19,94)] = {64,0}, + [I(20,94)] = {64,0}, + [I(21,94)] = {64,0}, + [I(22,94)] = {64,0}, + [I(23,94)] = {64,0}, + [I(24,94)] = {64,0}, + [I(25,94)] = {64,0}, + [I(26,94)] = {64,0}, + [I(27,94)] = {64,0}, + [I(28,94)] = {64,0}, + [I(29,94)] = {64,0}, + [I(30,94)] = {64,0}, + [I(31,94)] = {64,0}, + [I(32,94)] = {20,0x53FFC}, + [I(33,94)] = {24,0xFE3FFC}, + [I(34,94)] = {24,0xFE7FFC}, + [I(35,94)] = {26,0x3FEBFFC}, + [I(36,94)] = {27,0x7FE7FFC}, + [I(37,94)] = {20,0x57FFC}, + [I(38,94)] = {22,0x3E3FFC}, + [I(39,94)] = {25,0x1FEBFFC}, + [I(40,94)] = {24,0xFEBFFC}, + [I(41,94)] = {24,0xFEFFFC}, + [I(42,94)] = {22,0x3E7FFC}, + [I(43,94)] = {25,0x1FEFFFC}, + [I(44,94)] = {22,0x3EBFFC}, + [I(45,94)] = {20,0x5BFFC}, + [I(46,94)] = {20,0x5FFFC}, + [I(47,94)] = {20,0x63FFC}, + [I(48,94)] = {19,0x3FFC}, + [I(49,94)] = {19,0x7FFC}, + [I(50,94)] = {19,0xBFFC}, + [I(51,94)] = {20,0x67FFC}, + [I(52,94)] = {20,0x6BFFC}, + [I(53,94)] = {20,0x6FFFC}, + [I(54,94)] = {20,0x73FFC}, + [I(55,94)] = {20,0x77FFC}, + [I(56,94)] = {20,0x7BFFC}, + [I(57,94)] = {20,0x7FFFC}, + [I(58,94)] = {21,0x173FFC}, + [I(59,94)] = {22,0x3EFFFC}, + [I(60,94)] = {29,0x1FFF3FFC}, + [I(61,94)] = {20,0x83FFC}, + [I(62,94)] = {26,0x3FEFFFC}, + [I(63,94)] = {24,0xFF3FFC}, + [I(64,94)] = {27,0x7FEBFFC}, + [I(65,94)] = {20,0x87FFC}, + [I(66,94)] = {21,0x177FFC}, + [I(67,94)] = {21,0x17BFFC}, + [I(68,94)] = {21,0x17FFFC}, + [I(69,94)] = {21,0x183FFC}, + [I(70,94)] = {21,0x187FFC}, + [I(71,94)] = {21,0x18BFFC}, + [I(72,94)] = {21,0x18FFFC}, + [I(73,94)] = {21,0x193FFC}, + [I(74,94)] = {21,0x197FFC}, + [I(75,94)] = {21,0x19BFFC}, + [I(76,94)] = {21,0x19FFFC}, + [I(77,94)] = {21,0x1A3FFC}, + [I(78,94)] = {21,0x1A7FFC}, + [I(79,94)] = {21,0x1ABFFC}, + [I(80,94)] = {21,0x1AFFFC}, + [I(81,94)] = {21,0x1B3FFC}, + [I(82,94)] = {21,0x1B7FFC}, + [I(83,94)] = {21,0x1BBFFC}, + [I(84,94)] = {21,0x1BFFFC}, + [I(85,94)] = {21,0x1C3FFC}, + [I(86,94)] = {21,0x1C7FFC}, + [I(87,94)] = {21,0x1CBFFC}, + [I(88,94)] = {22,0x3F3FFC}, + [I(89,94)] = {21,0x1CFFFC}, + [I(90,94)] = {22,0x3F7FFC}, + [I(91,94)] = {27,0x7FEFFFC}, + [I(92,94)] = {64,0}, + [I(93,94)] = {27,0x7FF3FFC}, + [I(94,94)] = {28,0xFFF3FFC}, + [I(95,94)] = {20,0x8BFFC}, + [I(96,94)] = {29,0x1FFF7FFC}, + [I(97,94)] = {19,0xFFFC}, + [I(98,94)] = {20,0x8FFFC}, + [I(99,94)] = {19,0x13FFC}, + [I(100,94)] = {20,0x93FFC}, + [I(101,94)] = {19,0x17FFC}, + [I(102,94)] = {20,0x97FFC}, + [I(103,94)] = {20,0x9BFFC}, + [I(104,94)] = {20,0x9FFFC}, + [I(105,94)] = {19,0x1BFFC}, + [I(106,94)] = {21,0x1D3FFC}, + [I(107,94)] = {21,0x1D7FFC}, + [I(108,94)] = {20,0xA3FFC}, + [I(109,94)] = {20,0xA7FFC}, + [I(110,94)] = {20,0xABFFC}, + [I(111,94)] = {19,0x1FFFC}, + [I(112,94)] = {20,0xAFFFC}, + [I(113,94)] = {21,0x1DBFFC}, + [I(114,94)] = {20,0xB3FFC}, + [I(115,94)] = {19,0x23FFC}, + [I(116,94)] = {19,0x27FFC}, + [I(117,94)] = {20,0xB7FFC}, + [I(118,94)] = {21,0x1DFFFC}, + [I(119,94)] = {21,0x1E3FFC}, + [I(120,94)] = {21,0x1E7FFC}, + [I(121,94)] = {21,0x1EBFFC}, + [I(122,94)] = {21,0x1EFFFC}, + [I(123,94)] = {29,0x1FFFBFFC}, + [I(124,94)] = {25,0x1FF3FFC}, + [I(125,94)] = {28,0xFFF7FFC}, + [I(126,94)] = {27,0x7FF7FFC}, + [I(127,94)] = {64,0}, + [I(128,94)] = {64,0}, + [I(129,94)] = {64,0}, + [I(130,94)] = {64,0}, + [I(131,94)] = {64,0}, + [I(132,94)] = {64,0}, + [I(133,94)] = {64,0}, + [I(134,94)] = {64,0}, + [I(135,94)] = {64,0}, + [I(136,94)] = {64,0}, + [I(137,94)] = {64,0}, + [I(138,94)] = {64,0}, + [I(139,94)] = {64,0}, + [I(140,94)] = {64,0}, + [I(141,94)] = {64,0}, + [I(142,94)] = {64,0}, + [I(143,94)] = {64,0}, + [I(144,94)] = {64,0}, + [I(145,94)] = {64,0}, + [I(146,94)] = {64,0}, + [I(147,94)] = {64,0}, + [I(148,94)] = {64,0}, + [I(149,94)] = {64,0}, + [I(150,94)] = {64,0}, + [I(151,94)] = {64,0}, + [I(152,94)] = {64,0}, + [I(153,94)] = {64,0}, + [I(154,94)] = {64,0}, + [I(155,94)] = {64,0}, + [I(156,94)] = {64,0}, + [I(157,94)] = {64,0}, + [I(158,94)] = {64,0}, + [I(159,94)] = {64,0}, + [I(160,94)] = {64,0}, + [I(161,94)] = {64,0}, + [I(162,94)] = {64,0}, + [I(163,94)] = {64,0}, + [I(164,94)] = {64,0}, + [I(165,94)] = {64,0}, + [I(166,94)] = {64,0}, + [I(167,94)] = {64,0}, + [I(168,94)] = {64,0}, + [I(169,94)] = {64,0}, + [I(170,94)] = {64,0}, + [I(171,94)] = {64,0}, + [I(172,94)] = {64,0}, + [I(173,94)] = {64,0}, + [I(174,94)] = {64,0}, + [I(175,94)] = {64,0}, + [I(176,94)] = {64,0}, + [I(177,94)] = {64,0}, + [I(178,94)] = {64,0}, + [I(179,94)] = {64,0}, + [I(180,94)] = {64,0}, + [I(181,94)] = {64,0}, + [I(182,94)] = {64,0}, + [I(183,94)] = {64,0}, + [I(184,94)] = {64,0}, + [I(185,94)] = {64,0}, + [I(186,94)] = {64,0}, + [I(187,94)] = {64,0}, + [I(188,94)] = {64,0}, + [I(189,94)] = {64,0}, + [I(190,94)] = {64,0}, + [I(191,94)] = {64,0}, + [I(192,94)] = {64,0}, + [I(193,94)] = {64,0}, + [I(194,94)] = {64,0}, + [I(195,94)] = {64,0}, + [I(196,94)] = {64,0}, + [I(197,94)] = {64,0}, + [I(198,94)] = {64,0}, + [I(199,94)] = {64,0}, + [I(200,94)] = {64,0}, + [I(201,94)] = {64,0}, + [I(202,94)] = {64,0}, + [I(203,94)] = {64,0}, + [I(204,94)] = {64,0}, + [I(205,94)] = {64,0}, + [I(206,94)] = {64,0}, + [I(207,94)] = {64,0}, + [I(208,94)] = {64,0}, + [I(209,94)] = {64,0}, + [I(210,94)] = {64,0}, + [I(211,94)] = {64,0}, + [I(212,94)] = {64,0}, + [I(213,94)] = {64,0}, + [I(214,94)] = {64,0}, + [I(215,94)] = {64,0}, + [I(216,94)] = {64,0}, + [I(217,94)] = {64,0}, + [I(218,94)] = {64,0}, + [I(219,94)] = {64,0}, + [I(220,94)] = {64,0}, + [I(221,94)] = {64,0}, + [I(222,94)] = {64,0}, + [I(223,94)] = {64,0}, + [I(224,94)] = {64,0}, + [I(225,94)] = {64,0}, + [I(226,94)] = {64,0}, + [I(227,94)] = {64,0}, + [I(228,94)] = {64,0}, + [I(229,94)] = {64,0}, + [I(230,94)] = {64,0}, + [I(231,94)] = {64,0}, + [I(232,94)] = {64,0}, + [I(233,94)] = {64,0}, + [I(234,94)] = {64,0}, + [I(235,94)] = {64,0}, + [I(236,94)] = {64,0}, + [I(237,94)] = {64,0}, + [I(238,94)] = {64,0}, + [I(239,94)] = {64,0}, + [I(240,94)] = {64,0}, + [I(241,94)] = {64,0}, + [I(242,94)] = {64,0}, + [I(243,94)] = {64,0}, + [I(244,94)] = {64,0}, + [I(245,94)] = {64,0}, + [I(246,94)] = {64,0}, + [I(247,94)] = {64,0}, + [I(248,94)] = {64,0}, + [I(249,94)] = {64,0}, + [I(250,94)] = {64,0}, + [I(251,94)] = {64,0}, + [I(252,94)] = {64,0}, + [I(253,94)] = {64,0}, + [I(254,94)] = {64,0}, + [I(255,94)] = {64,0}, + [I(0,95)] = {19,0x7FE22}, + [I(1,95)] = {29,0x1FFFF622}, + [I(2,95)] = {64,0}, + [I(3,95)] = {64,0}, + [I(4,95)] = {64,0}, + [I(5,95)] = {64,0}, + [I(6,95)] = {64,0}, + [I(7,95)] = {64,0}, + [I(8,95)] = {64,0}, + [I(9,95)] = {30,0x3FFFFAA2}, + [I(10,95)] = {64,0}, + [I(11,95)] = {64,0}, + [I(12,95)] = {64,0}, + [I(13,95)] = {64,0}, + [I(14,95)] = {64,0}, + [I(15,95)] = {64,0}, + [I(16,95)] = {64,0}, + [I(17,95)] = {64,0}, + [I(18,95)] = {64,0}, + [I(19,95)] = {64,0}, + [I(20,95)] = {64,0}, + [I(21,95)] = {64,0}, + [I(22,95)] = {64,0}, + [I(23,95)] = {64,0}, + [I(24,95)] = {64,0}, + [I(25,95)] = {64,0}, + [I(26,95)] = {64,0}, + [I(27,95)] = {64,0}, + [I(28,95)] = {64,0}, + [I(29,95)] = {64,0}, + [I(30,95)] = {64,0}, + [I(31,95)] = {64,0}, + [I(32,95)] = {12,0x522}, + [I(33,95)] = {16,0xFE22}, + [I(34,95)] = {16,0xFE62}, + [I(35,95)] = {18,0x3FEA2}, + [I(36,95)] = {19,0x7FE62}, + [I(37,95)] = {12,0x562}, + [I(38,95)] = {14,0x3E22}, + [I(39,95)] = {17,0x1FEA2}, + [I(40,95)] = {16,0xFEA2}, + [I(41,95)] = {16,0xFEE2}, + [I(42,95)] = {14,0x3E62}, + [I(43,95)] = {17,0x1FEE2}, + [I(44,95)] = {14,0x3EA2}, + [I(45,95)] = {12,0x5A2}, + [I(46,95)] = {12,0x5E2}, + [I(47,95)] = {12,0x622}, + [I(48,95)] = {11,0x22}, + [I(49,95)] = {11,0x62}, + [I(50,95)] = {11,0xA2}, + [I(51,95)] = {12,0x662}, + [I(52,95)] = {12,0x6A2}, + [I(53,95)] = {12,0x6E2}, + [I(54,95)] = {12,0x722}, + [I(55,95)] = {12,0x762}, + [I(56,95)] = {12,0x7A2}, + [I(57,95)] = {12,0x7E2}, + [I(58,95)] = {13,0x1722}, + [I(59,95)] = {14,0x3EE2}, + [I(60,95)] = {21,0x1FFF22}, + [I(61,95)] = {12,0x822}, + [I(62,95)] = {18,0x3FEE2}, + [I(63,95)] = {16,0xFF22}, + [I(64,95)] = {19,0x7FEA2}, + [I(65,95)] = {12,0x862}, + [I(66,95)] = {13,0x1762}, + [I(67,95)] = {13,0x17A2}, + [I(68,95)] = {13,0x17E2}, + [I(69,95)] = {13,0x1822}, + [I(70,95)] = {13,0x1862}, + [I(71,95)] = {13,0x18A2}, + [I(72,95)] = {13,0x18E2}, + [I(73,95)] = {13,0x1922}, + [I(74,95)] = {13,0x1962}, + [I(75,95)] = {13,0x19A2}, + [I(76,95)] = {13,0x19E2}, + [I(77,95)] = {13,0x1A22}, + [I(78,95)] = {13,0x1A62}, + [I(79,95)] = {13,0x1AA2}, + [I(80,95)] = {13,0x1AE2}, + [I(81,95)] = {13,0x1B22}, + [I(82,95)] = {13,0x1B62}, + [I(83,95)] = {13,0x1BA2}, + [I(84,95)] = {13,0x1BE2}, + [I(85,95)] = {13,0x1C22}, + [I(86,95)] = {13,0x1C62}, + [I(87,95)] = {13,0x1CA2}, + [I(88,95)] = {14,0x3F22}, + [I(89,95)] = {13,0x1CE2}, + [I(90,95)] = {14,0x3F62}, + [I(91,95)] = {19,0x7FEE2}, + [I(92,95)] = {25,0x1FFFC22}, + [I(93,95)] = {19,0x7FF22}, + [I(94,95)] = {20,0xFFF22}, + [I(95,95)] = {12,0x8A2}, + [I(96,95)] = {21,0x1FFF62}, + [I(97,95)] = {11,0xE2}, + [I(98,95)] = {12,0x8E2}, + [I(99,95)] = {11,0x122}, + [I(100,95)] = {12,0x922}, + [I(101,95)] = {11,0x162}, + [I(102,95)] = {12,0x962}, + [I(103,95)] = {12,0x9A2}, + [I(104,95)] = {12,0x9E2}, + [I(105,95)] = {11,0x1A2}, + [I(106,95)] = {13,0x1D22}, + [I(107,95)] = {13,0x1D62}, + [I(108,95)] = {12,0xA22}, + [I(109,95)] = {12,0xA62}, + [I(110,95)] = {12,0xAA2}, + [I(111,95)] = {11,0x1E2}, + [I(112,95)] = {12,0xAE2}, + [I(113,95)] = {13,0x1DA2}, + [I(114,95)] = {12,0xB22}, + [I(115,95)] = {11,0x222}, + [I(116,95)] = {11,0x262}, + [I(117,95)] = {12,0xB62}, + [I(118,95)] = {13,0x1DE2}, + [I(119,95)] = {13,0x1E22}, + [I(120,95)] = {13,0x1E62}, + [I(121,95)] = {13,0x1EA2}, + [I(122,95)] = {13,0x1EE2}, + [I(123,95)] = {21,0x1FFFA2}, + [I(124,95)] = {17,0x1FF22}, + [I(125,95)] = {20,0xFFF62}, + [I(126,95)] = {19,0x7FF62}, + [I(127,95)] = {64,0}, + [I(128,95)] = {26,0x3FFF9A2}, + [I(129,95)] = {28,0xFFFF4A2}, + [I(130,95)] = {26,0x3FFF9E2}, + [I(131,95)] = {26,0x3FFFA22}, + [I(132,95)] = {28,0xFFFF4E2}, + [I(133,95)] = {28,0xFFFF522}, + [I(134,95)] = {28,0xFFFF562}, + [I(135,95)] = {29,0x1FFFF662}, + [I(136,95)] = {28,0xFFFF5A2}, + [I(137,95)] = {29,0x1FFFF6A2}, + [I(138,95)] = {29,0x1FFFF6E2}, + [I(139,95)] = {29,0x1FFFF722}, + [I(140,95)] = {29,0x1FFFF762}, + [I(141,95)] = {29,0x1FFFF7A2}, + [I(142,95)] = {30,0x3FFFFAE2}, + [I(143,95)] = {29,0x1FFFF7E2}, + [I(144,95)] = {30,0x3FFFFB22}, + [I(145,95)] = {30,0x3FFFFB62}, + [I(146,95)] = {28,0xFFFF5E2}, + [I(147,95)] = {29,0x1FFFF822}, + [I(148,95)] = {30,0x3FFFFBA2}, + [I(149,95)] = {29,0x1FFFF862}, + [I(150,95)] = {29,0x1FFFF8A2}, + [I(151,95)] = {29,0x1FFFF8E2}, + [I(152,95)] = {29,0x1FFFF922}, + [I(153,95)] = {27,0x7FFF722}, + [I(154,95)] = {28,0xFFFF622}, + [I(155,95)] = {29,0x1FFFF962}, + [I(156,95)] = {28,0xFFFF662}, + [I(157,95)] = {29,0x1FFFF9A2}, + [I(158,95)] = {29,0x1FFFF9E2}, + [I(159,95)] = {30,0x3FFFFBE2}, + [I(160,95)] = {28,0xFFFF6A2}, + [I(161,95)] = {27,0x7FFF762}, + [I(162,95)] = {26,0x3FFFA62}, + [I(163,95)] = {28,0xFFFF6E2}, + [I(164,95)] = {28,0xFFFF722}, + [I(165,95)] = {29,0x1FFFFA22}, + [I(166,95)] = {29,0x1FFFFA62}, + [I(167,95)] = {27,0x7FFF7A2}, + [I(168,95)] = {29,0x1FFFFAA2}, + [I(169,95)] = {28,0xFFFF762}, + [I(170,95)] = {28,0xFFFF7A2}, + [I(171,95)] = {30,0x3FFFFC22}, + [I(172,95)] = {27,0x7FFF7E2}, + [I(173,95)] = {28,0xFFFF7E2}, + [I(174,95)] = {29,0x1FFFFAE2}, + [I(175,95)] = {29,0x1FFFFB22}, + [I(176,95)] = {27,0x7FFF822}, + [I(177,95)] = {27,0x7FFF862}, + [I(178,95)] = {28,0xFFFF822}, + [I(179,95)] = {27,0x7FFF8A2}, + [I(180,95)] = {29,0x1FFFFB62}, + [I(181,95)] = {28,0xFFFF862}, + [I(182,95)] = {29,0x1FFFFBA2}, + [I(183,95)] = {29,0x1FFFFBE2}, + [I(184,95)] = {26,0x3FFFAA2}, + [I(185,95)] = {28,0xFFFF8A2}, + [I(186,95)] = {28,0xFFFF8E2}, + [I(187,95)] = {28,0xFFFF922}, + [I(188,95)] = {29,0x1FFFFC22}, + [I(189,95)] = {28,0xFFFF962}, + [I(190,95)] = {28,0xFFFF9A2}, + [I(191,95)] = {29,0x1FFFFC62}, + [I(192,95)] = {X32,0xFFFFF822}, + [I(193,95)] = {X32,0xFFFFF862}, + [I(194,95)] = {26,0x3FFFAE2}, + [I(195,95)] = {25,0x1FFFC62}, + [I(196,95)] = {28,0xFFFF9E2}, + [I(197,95)] = {29,0x1FFFFCA2}, + [I(198,95)] = {28,0xFFFFA22}, + [I(199,95)] = {31,0x7FFFFB22}, + [I(200,95)] = {X32,0xFFFFF8A2}, + [I(201,95)] = {X32,0xFFFFF8E2}, + [I(202,95)] = {X32,0xFFFFF922}, + [I(203,95)] = {64,0}, + [I(204,95)] = {64,0}, + [I(205,95)] = {X32,0xFFFFF962}, + [I(206,95)] = {30,0x3FFFFC62}, + [I(207,95)] = {31,0x7FFFFB62}, + [I(208,95)] = {25,0x1FFFCA2}, + [I(209,95)] = {27,0x7FFF8E2}, + [I(210,95)] = {X32,0xFFFFF9A2}, + [I(211,95)] = {64,0}, + [I(212,95)] = {64,0}, + [I(213,95)] = {X32,0xFFFFF9E2}, + [I(214,95)] = {64,0}, + [I(215,95)] = {30,0x3FFFFCA2}, + [I(216,95)] = {27,0x7FFF922}, + [I(217,95)] = {27,0x7FFF962}, + [I(218,95)] = {X32,0xFFFFFA22}, + [I(219,95)] = {X32,0xFFFFFA62}, + [I(220,95)] = {64,0}, + [I(221,95)] = {64,0}, + [I(222,95)] = {64,0}, + [I(223,95)] = {64,0}, + [I(224,95)] = {26,0x3FFFB22}, + [I(225,95)] = {30,0x3FFFFCE2}, + [I(226,95)] = {26,0x3FFFB62}, + [I(227,95)] = {27,0x7FFF9A2}, + [I(228,95)] = {28,0xFFFFA62}, + [I(229,95)] = {27,0x7FFF9E2}, + [I(230,95)] = {27,0x7FFFA22}, + [I(231,95)] = {29,0x1FFFFCE2}, + [I(232,95)] = {28,0xFFFFAA2}, + [I(233,95)] = {28,0xFFFFAE2}, + [I(234,95)] = {31,0x7FFFFBA2}, + [I(235,95)] = {31,0x7FFFFBE2}, + [I(236,95)] = {30,0x3FFFFD22}, + [I(237,95)] = {30,0x3FFFFD62}, + [I(238,95)] = {X32,0xFFFFFAA2}, + [I(239,95)] = {29,0x1FFFFD22}, + [I(240,95)] = {X32,0xFFFFFAE2}, + [I(241,95)] = {64,0}, + [I(242,95)] = {X32,0xFFFFFB22}, + [I(243,95)] = {X32,0xFFFFFB62}, + [I(244,95)] = {64,0}, + [I(245,95)] = {64,0}, + [I(246,95)] = {64,0}, + [I(247,95)] = {64,0}, + [I(248,95)] = {64,0}, + [I(249,95)] = {64,0}, + [I(250,95)] = {64,0}, + [I(251,95)] = {64,0}, + [I(252,95)] = {64,0}, + [I(253,95)] = {64,0}, + [I(254,95)] = {64,0}, + [I(255,95)] = {X32,0xFFFFFBA2}, + [I(0,96)] = {28,0xFFC7FFD}, + [I(1,96)] = {64,0}, + [I(2,96)] = {64,0}, + [I(3,96)] = {64,0}, + [I(4,96)] = {64,0}, + [I(5,96)] = {64,0}, + [I(6,96)] = {64,0}, + [I(7,96)] = {64,0}, + [I(8,96)] = {64,0}, + [I(9,96)] = {64,0}, + [I(10,96)] = {64,0}, + [I(11,96)] = {64,0}, + [I(12,96)] = {64,0}, + [I(13,96)] = {64,0}, + [I(14,96)] = {64,0}, + [I(15,96)] = {64,0}, + [I(16,96)] = {64,0}, + [I(17,96)] = {64,0}, + [I(18,96)] = {64,0}, + [I(19,96)] = {64,0}, + [I(20,96)] = {64,0}, + [I(21,96)] = {64,0}, + [I(22,96)] = {64,0}, + [I(23,96)] = {64,0}, + [I(24,96)] = {64,0}, + [I(25,96)] = {64,0}, + [I(26,96)] = {64,0}, + [I(27,96)] = {64,0}, + [I(28,96)] = {64,0}, + [I(29,96)] = {64,0}, + [I(30,96)] = {64,0}, + [I(31,96)] = {64,0}, + [I(32,96)] = {21,0xA7FFD}, + [I(33,96)] = {25,0x1FC7FFD}, + [I(34,96)] = {25,0x1FCFFFD}, + [I(35,96)] = {27,0x7FD7FFD}, + [I(36,96)] = {28,0xFFCFFFD}, + [I(37,96)] = {21,0xAFFFD}, + [I(38,96)] = {23,0x7C7FFD}, + [I(39,96)] = {26,0x3FD7FFD}, + [I(40,96)] = {25,0x1FD7FFD}, + [I(41,96)] = {25,0x1FDFFFD}, + [I(42,96)] = {23,0x7CFFFD}, + [I(43,96)] = {26,0x3FDFFFD}, + [I(44,96)] = {23,0x7D7FFD}, + [I(45,96)] = {21,0xB7FFD}, + [I(46,96)] = {21,0xBFFFD}, + [I(47,96)] = {21,0xC7FFD}, + [I(48,96)] = {20,0x7FFD}, + [I(49,96)] = {20,0xFFFD}, + [I(50,96)] = {20,0x17FFD}, + [I(51,96)] = {21,0xCFFFD}, + [I(52,96)] = {21,0xD7FFD}, + [I(53,96)] = {21,0xDFFFD}, + [I(54,96)] = {21,0xE7FFD}, + [I(55,96)] = {21,0xEFFFD}, + [I(56,96)] = {21,0xF7FFD}, + [I(57,96)] = {21,0xFFFFD}, + [I(58,96)] = {22,0x2E7FFD}, + [I(59,96)] = {23,0x7DFFFD}, + [I(60,96)] = {30,0x3FFE7FFD}, + [I(61,96)] = {21,0x107FFD}, + [I(62,96)] = {27,0x7FDFFFD}, + [I(63,96)] = {25,0x1FE7FFD}, + [I(64,96)] = {28,0xFFD7FFD}, + [I(65,96)] = {21,0x10FFFD}, + [I(66,96)] = {22,0x2EFFFD}, + [I(67,96)] = {22,0x2F7FFD}, + [I(68,96)] = {22,0x2FFFFD}, + [I(69,96)] = {22,0x307FFD}, + [I(70,96)] = {22,0x30FFFD}, + [I(71,96)] = {22,0x317FFD}, + [I(72,96)] = {22,0x31FFFD}, + [I(73,96)] = {22,0x327FFD}, + [I(74,96)] = {22,0x32FFFD}, + [I(75,96)] = {22,0x337FFD}, + [I(76,96)] = {22,0x33FFFD}, + [I(77,96)] = {22,0x347FFD}, + [I(78,96)] = {22,0x34FFFD}, + [I(79,96)] = {22,0x357FFD}, + [I(80,96)] = {22,0x35FFFD}, + [I(81,96)] = {22,0x367FFD}, + [I(82,96)] = {22,0x36FFFD}, + [I(83,96)] = {22,0x377FFD}, + [I(84,96)] = {22,0x37FFFD}, + [I(85,96)] = {22,0x387FFD}, + [I(86,96)] = {22,0x38FFFD}, + [I(87,96)] = {22,0x397FFD}, + [I(88,96)] = {23,0x7E7FFD}, + [I(89,96)] = {22,0x39FFFD}, + [I(90,96)] = {23,0x7EFFFD}, + [I(91,96)] = {28,0xFFDFFFD}, + [I(92,96)] = {64,0}, + [I(93,96)] = {28,0xFFE7FFD}, + [I(94,96)] = {29,0x1FFE7FFD}, + [I(95,96)] = {21,0x117FFD}, + [I(96,96)] = {30,0x3FFEFFFD}, + [I(97,96)] = {20,0x1FFFD}, + [I(98,96)] = {21,0x11FFFD}, + [I(99,96)] = {20,0x27FFD}, + [I(100,96)] = {21,0x127FFD}, + [I(101,96)] = {20,0x2FFFD}, + [I(102,96)] = {21,0x12FFFD}, + [I(103,96)] = {21,0x137FFD}, + [I(104,96)] = {21,0x13FFFD}, + [I(105,96)] = {20,0x37FFD}, + [I(106,96)] = {22,0x3A7FFD}, + [I(107,96)] = {22,0x3AFFFD}, + [I(108,96)] = {21,0x147FFD}, + [I(109,96)] = {21,0x14FFFD}, + [I(110,96)] = {21,0x157FFD}, + [I(111,96)] = {20,0x3FFFD}, + [I(112,96)] = {21,0x15FFFD}, + [I(113,96)] = {22,0x3B7FFD}, + [I(114,96)] = {21,0x167FFD}, + [I(115,96)] = {20,0x47FFD}, + [I(116,96)] = {20,0x4FFFD}, + [I(117,96)] = {21,0x16FFFD}, + [I(118,96)] = {22,0x3BFFFD}, + [I(119,96)] = {22,0x3C7FFD}, + [I(120,96)] = {22,0x3CFFFD}, + [I(121,96)] = {22,0x3D7FFD}, + [I(122,96)] = {22,0x3DFFFD}, + [I(123,96)] = {30,0x3FFF7FFD}, + [I(124,96)] = {26,0x3FE7FFD}, + [I(125,96)] = {29,0x1FFEFFFD}, + [I(126,96)] = {28,0xFFEFFFD}, + [I(127,96)] = {64,0}, + [I(128,96)] = {64,0}, + [I(129,96)] = {64,0}, + [I(130,96)] = {64,0}, + [I(131,96)] = {64,0}, + [I(132,96)] = {64,0}, + [I(133,96)] = {64,0}, + [I(134,96)] = {64,0}, + [I(135,96)] = {64,0}, + [I(136,96)] = {64,0}, + [I(137,96)] = {64,0}, + [I(138,96)] = {64,0}, + [I(139,96)] = {64,0}, + [I(140,96)] = {64,0}, + [I(141,96)] = {64,0}, + [I(142,96)] = {64,0}, + [I(143,96)] = {64,0}, + [I(144,96)] = {64,0}, + [I(145,96)] = {64,0}, + [I(146,96)] = {64,0}, + [I(147,96)] = {64,0}, + [I(148,96)] = {64,0}, + [I(149,96)] = {64,0}, + [I(150,96)] = {64,0}, + [I(151,96)] = {64,0}, + [I(152,96)] = {64,0}, + [I(153,96)] = {64,0}, + [I(154,96)] = {64,0}, + [I(155,96)] = {64,0}, + [I(156,96)] = {64,0}, + [I(157,96)] = {64,0}, + [I(158,96)] = {64,0}, + [I(159,96)] = {64,0}, + [I(160,96)] = {64,0}, + [I(161,96)] = {64,0}, + [I(162,96)] = {64,0}, + [I(163,96)] = {64,0}, + [I(164,96)] = {64,0}, + [I(165,96)] = {64,0}, + [I(166,96)] = {64,0}, + [I(167,96)] = {64,0}, + [I(168,96)] = {64,0}, + [I(169,96)] = {64,0}, + [I(170,96)] = {64,0}, + [I(171,96)] = {64,0}, + [I(172,96)] = {64,0}, + [I(173,96)] = {64,0}, + [I(174,96)] = {64,0}, + [I(175,96)] = {64,0}, + [I(176,96)] = {64,0}, + [I(177,96)] = {64,0}, + [I(178,96)] = {64,0}, + [I(179,96)] = {64,0}, + [I(180,96)] = {64,0}, + [I(181,96)] = {64,0}, + [I(182,96)] = {64,0}, + [I(183,96)] = {64,0}, + [I(184,96)] = {64,0}, + [I(185,96)] = {64,0}, + [I(186,96)] = {64,0}, + [I(187,96)] = {64,0}, + [I(188,96)] = {64,0}, + [I(189,96)] = {64,0}, + [I(190,96)] = {64,0}, + [I(191,96)] = {64,0}, + [I(192,96)] = {64,0}, + [I(193,96)] = {64,0}, + [I(194,96)] = {64,0}, + [I(195,96)] = {64,0}, + [I(196,96)] = {64,0}, + [I(197,96)] = {64,0}, + [I(198,96)] = {64,0}, + [I(199,96)] = {64,0}, + [I(200,96)] = {64,0}, + [I(201,96)] = {64,0}, + [I(202,96)] = {64,0}, + [I(203,96)] = {64,0}, + [I(204,96)] = {64,0}, + [I(205,96)] = {64,0}, + [I(206,96)] = {64,0}, + [I(207,96)] = {64,0}, + [I(208,96)] = {64,0}, + [I(209,96)] = {64,0}, + [I(210,96)] = {64,0}, + [I(211,96)] = {64,0}, + [I(212,96)] = {64,0}, + [I(213,96)] = {64,0}, + [I(214,96)] = {64,0}, + [I(215,96)] = {64,0}, + [I(216,96)] = {64,0}, + [I(217,96)] = {64,0}, + [I(218,96)] = {64,0}, + [I(219,96)] = {64,0}, + [I(220,96)] = {64,0}, + [I(221,96)] = {64,0}, + [I(222,96)] = {64,0}, + [I(223,96)] = {64,0}, + [I(224,96)] = {64,0}, + [I(225,96)] = {64,0}, + [I(226,96)] = {64,0}, + [I(227,96)] = {64,0}, + [I(228,96)] = {64,0}, + [I(229,96)] = {64,0}, + [I(230,96)] = {64,0}, + [I(231,96)] = {64,0}, + [I(232,96)] = {64,0}, + [I(233,96)] = {64,0}, + [I(234,96)] = {64,0}, + [I(235,96)] = {64,0}, + [I(236,96)] = {64,0}, + [I(237,96)] = {64,0}, + [I(238,96)] = {64,0}, + [I(239,96)] = {64,0}, + [I(240,96)] = {64,0}, + [I(241,96)] = {64,0}, + [I(242,96)] = {64,0}, + [I(243,96)] = {64,0}, + [I(244,96)] = {64,0}, + [I(245,96)] = {64,0}, + [I(246,96)] = {64,0}, + [I(247,96)] = {64,0}, + [I(248,96)] = {64,0}, + [I(249,96)] = {64,0}, + [I(250,96)] = {64,0}, + [I(251,96)] = {64,0}, + [I(252,96)] = {64,0}, + [I(253,96)] = {64,0}, + [I(254,96)] = {64,0}, + [I(255,96)] = {64,0}, + [I(0,97)] = {18,0x3FF03}, + [I(1,97)] = {28,0xFFFFB03}, + [I(2,97)] = {64,0}, + [I(3,97)] = {64,0}, + [I(4,97)] = {64,0}, + [I(5,97)] = {64,0}, + [I(6,97)] = {64,0}, + [I(7,97)] = {64,0}, + [I(8,97)] = {64,0}, + [I(9,97)] = {29,0x1FFFFD43}, + [I(10,97)] = {64,0}, + [I(11,97)] = {64,0}, + [I(12,97)] = {64,0}, + [I(13,97)] = {64,0}, + [I(14,97)] = {64,0}, + [I(15,97)] = {64,0}, + [I(16,97)] = {64,0}, + [I(17,97)] = {64,0}, + [I(18,97)] = {64,0}, + [I(19,97)] = {64,0}, + [I(20,97)] = {64,0}, + [I(21,97)] = {64,0}, + [I(22,97)] = {64,0}, + [I(23,97)] = {64,0}, + [I(24,97)] = {64,0}, + [I(25,97)] = {64,0}, + [I(26,97)] = {64,0}, + [I(27,97)] = {64,0}, + [I(28,97)] = {64,0}, + [I(29,97)] = {64,0}, + [I(30,97)] = {64,0}, + [I(31,97)] = {64,0}, + [I(32,97)] = {11,0x283}, + [I(33,97)] = {15,0x7F03}, + [I(34,97)] = {15,0x7F23}, + [I(35,97)] = {17,0x1FF43}, + [I(36,97)] = {18,0x3FF23}, + [I(37,97)] = {11,0x2A3}, + [I(38,97)] = {13,0x1F03}, + [I(39,97)] = {16,0xFF43}, + [I(40,97)] = {15,0x7F43}, + [I(41,97)] = {15,0x7F63}, + [I(42,97)] = {13,0x1F23}, + [I(43,97)] = {16,0xFF63}, + [I(44,97)] = {13,0x1F43}, + [I(45,97)] = {11,0x2C3}, + [I(46,97)] = {11,0x2E3}, + [I(47,97)] = {11,0x303}, + [I(48,97)] = {10,0x3}, + [I(49,97)] = {10,0x23}, + [I(50,97)] = {10,0x43}, + [I(51,97)] = {11,0x323}, + [I(52,97)] = {11,0x343}, + [I(53,97)] = {11,0x363}, + [I(54,97)] = {11,0x383}, + [I(55,97)] = {11,0x3A3}, + [I(56,97)] = {11,0x3C3}, + [I(57,97)] = {11,0x3E3}, + [I(58,97)] = {12,0xB83}, + [I(59,97)] = {13,0x1F63}, + [I(60,97)] = {20,0xFFF83}, + [I(61,97)] = {11,0x403}, + [I(62,97)] = {17,0x1FF63}, + [I(63,97)] = {15,0x7F83}, + [I(64,97)] = {18,0x3FF43}, + [I(65,97)] = {11,0x423}, + [I(66,97)] = {12,0xBA3}, + [I(67,97)] = {12,0xBC3}, + [I(68,97)] = {12,0xBE3}, + [I(69,97)] = {12,0xC03}, + [I(70,97)] = {12,0xC23}, + [I(71,97)] = {12,0xC43}, + [I(72,97)] = {12,0xC63}, + [I(73,97)] = {12,0xC83}, + [I(74,97)] = {12,0xCA3}, + [I(75,97)] = {12,0xCC3}, + [I(76,97)] = {12,0xCE3}, + [I(77,97)] = {12,0xD03}, + [I(78,97)] = {12,0xD23}, + [I(79,97)] = {12,0xD43}, + [I(80,97)] = {12,0xD63}, + [I(81,97)] = {12,0xD83}, + [I(82,97)] = {12,0xDA3}, + [I(83,97)] = {12,0xDC3}, + [I(84,97)] = {12,0xDE3}, + [I(85,97)] = {12,0xE03}, + [I(86,97)] = {12,0xE23}, + [I(87,97)] = {12,0xE43}, + [I(88,97)] = {13,0x1F83}, + [I(89,97)] = {12,0xE63}, + [I(90,97)] = {13,0x1FA3}, + [I(91,97)] = {18,0x3FF63}, + [I(92,97)] = {24,0xFFFE03}, + [I(93,97)] = {18,0x3FF83}, + [I(94,97)] = {19,0x7FF83}, + [I(95,97)] = {11,0x443}, + [I(96,97)] = {20,0xFFFA3}, + [I(97,97)] = {10,0x63}, + [I(98,97)] = {11,0x463}, + [I(99,97)] = {10,0x83}, + [I(100,97)] = {11,0x483}, + [I(101,97)] = {10,0xA3}, + [I(102,97)] = {11,0x4A3}, + [I(103,97)] = {11,0x4C3}, + [I(104,97)] = {11,0x4E3}, + [I(105,97)] = {10,0xC3}, + [I(106,97)] = {12,0xE83}, + [I(107,97)] = {12,0xEA3}, + [I(108,97)] = {11,0x503}, + [I(109,97)] = {11,0x523}, + [I(110,97)] = {11,0x543}, + [I(111,97)] = {10,0xE3}, + [I(112,97)] = {11,0x563}, + [I(113,97)] = {12,0xEC3}, + [I(114,97)] = {11,0x583}, + [I(115,97)] = {10,0x103}, + [I(116,97)] = {10,0x123}, + [I(117,97)] = {11,0x5A3}, + [I(118,97)] = {12,0xEE3}, + [I(119,97)] = {12,0xF03}, + [I(120,97)] = {12,0xF23}, + [I(121,97)] = {12,0xF43}, + [I(122,97)] = {12,0xF63}, + [I(123,97)] = {20,0xFFFC3}, + [I(124,97)] = {16,0xFF83}, + [I(125,97)] = {19,0x7FFA3}, + [I(126,97)] = {18,0x3FFA3}, + [I(127,97)] = {64,0}, + [I(128,97)] = {25,0x1FFFCC3}, + [I(129,97)] = {27,0x7FFFA43}, + [I(130,97)] = {25,0x1FFFCE3}, + [I(131,97)] = {25,0x1FFFD03}, + [I(132,97)] = {27,0x7FFFA63}, + [I(133,97)] = {27,0x7FFFA83}, + [I(134,97)] = {27,0x7FFFAA3}, + [I(135,97)] = {28,0xFFFFB23}, + [I(136,97)] = {27,0x7FFFAC3}, + [I(137,97)] = {28,0xFFFFB43}, + [I(138,97)] = {28,0xFFFFB63}, + [I(139,97)] = {28,0xFFFFB83}, + [I(140,97)] = {28,0xFFFFBA3}, + [I(141,97)] = {28,0xFFFFBC3}, + [I(142,97)] = {29,0x1FFFFD63}, + [I(143,97)] = {28,0xFFFFBE3}, + [I(144,97)] = {29,0x1FFFFD83}, + [I(145,97)] = {29,0x1FFFFDA3}, + [I(146,97)] = {27,0x7FFFAE3}, + [I(147,97)] = {28,0xFFFFC03}, + [I(148,97)] = {29,0x1FFFFDC3}, + [I(149,97)] = {28,0xFFFFC23}, + [I(150,97)] = {28,0xFFFFC43}, + [I(151,97)] = {28,0xFFFFC63}, + [I(152,97)] = {28,0xFFFFC83}, + [I(153,97)] = {26,0x3FFFB83}, + [I(154,97)] = {27,0x7FFFB03}, + [I(155,97)] = {28,0xFFFFCA3}, + [I(156,97)] = {27,0x7FFFB23}, + [I(157,97)] = {28,0xFFFFCC3}, + [I(158,97)] = {28,0xFFFFCE3}, + [I(159,97)] = {29,0x1FFFFDE3}, + [I(160,97)] = {27,0x7FFFB43}, + [I(161,97)] = {26,0x3FFFBA3}, + [I(162,97)] = {25,0x1FFFD23}, + [I(163,97)] = {27,0x7FFFB63}, + [I(164,97)] = {27,0x7FFFB83}, + [I(165,97)] = {28,0xFFFFD03}, + [I(166,97)] = {28,0xFFFFD23}, + [I(167,97)] = {26,0x3FFFBC3}, + [I(168,97)] = {28,0xFFFFD43}, + [I(169,97)] = {27,0x7FFFBA3}, + [I(170,97)] = {27,0x7FFFBC3}, + [I(171,97)] = {29,0x1FFFFE03}, + [I(172,97)] = {26,0x3FFFBE3}, + [I(173,97)] = {27,0x7FFFBE3}, + [I(174,97)] = {28,0xFFFFD63}, + [I(175,97)] = {28,0xFFFFD83}, + [I(176,97)] = {26,0x3FFFC03}, + [I(177,97)] = {26,0x3FFFC23}, + [I(178,97)] = {27,0x7FFFC03}, + [I(179,97)] = {26,0x3FFFC43}, + [I(180,97)] = {28,0xFFFFDA3}, + [I(181,97)] = {27,0x7FFFC23}, + [I(182,97)] = {28,0xFFFFDC3}, + [I(183,97)] = {28,0xFFFFDE3}, + [I(184,97)] = {25,0x1FFFD43}, + [I(185,97)] = {27,0x7FFFC43}, + [I(186,97)] = {27,0x7FFFC63}, + [I(187,97)] = {27,0x7FFFC83}, + [I(188,97)] = {28,0xFFFFE03}, + [I(189,97)] = {27,0x7FFFCA3}, + [I(190,97)] = {27,0x7FFFCC3}, + [I(191,97)] = {28,0xFFFFE23}, + [I(192,97)] = {31,0x7FFFFC03}, + [I(193,97)] = {31,0x7FFFFC23}, + [I(194,97)] = {25,0x1FFFD63}, + [I(195,97)] = {24,0xFFFE23}, + [I(196,97)] = {27,0x7FFFCE3}, + [I(197,97)] = {28,0xFFFFE43}, + [I(198,97)] = {27,0x7FFFD03}, + [I(199,97)] = {30,0x3FFFFD83}, + [I(200,97)] = {31,0x7FFFFC43}, + [I(201,97)] = {31,0x7FFFFC63}, + [I(202,97)] = {31,0x7FFFFC83}, + [I(203,97)] = {X32,0xFFFFFBC3}, + [I(204,97)] = {X32,0xFFFFFBE3}, + [I(205,97)] = {31,0x7FFFFCA3}, + [I(206,97)] = {29,0x1FFFFE23}, + [I(207,97)] = {30,0x3FFFFDA3}, + [I(208,97)] = {24,0xFFFE43}, + [I(209,97)] = {26,0x3FFFC63}, + [I(210,97)] = {31,0x7FFFFCC3}, + [I(211,97)] = {X32,0xFFFFFC03}, + [I(212,97)] = {X32,0xFFFFFC23}, + [I(213,97)] = {31,0x7FFFFCE3}, + [I(214,97)] = {X32,0xFFFFFC43}, + [I(215,97)] = {29,0x1FFFFE43}, + [I(216,97)] = {26,0x3FFFC83}, + [I(217,97)] = {26,0x3FFFCA3}, + [I(218,97)] = {31,0x7FFFFD03}, + [I(219,97)] = {31,0x7FFFFD23}, + [I(220,97)] = {64,0}, + [I(221,97)] = {X32,0xFFFFFC63}, + [I(222,97)] = {X32,0xFFFFFC83}, + [I(223,97)] = {X32,0xFFFFFCA3}, + [I(224,97)] = {25,0x1FFFD83}, + [I(225,97)] = {29,0x1FFFFE63}, + [I(226,97)] = {25,0x1FFFDA3}, + [I(227,97)] = {26,0x3FFFCC3}, + [I(228,97)] = {27,0x7FFFD23}, + [I(229,97)] = {26,0x3FFFCE3}, + [I(230,97)] = {26,0x3FFFD03}, + [I(231,97)] = {28,0xFFFFE63}, + [I(232,97)] = {27,0x7FFFD43}, + [I(233,97)] = {27,0x7FFFD63}, + [I(234,97)] = {30,0x3FFFFDC3}, + [I(235,97)] = {30,0x3FFFFDE3}, + [I(236,97)] = {29,0x1FFFFE83}, + [I(237,97)] = {29,0x1FFFFEA3}, + [I(238,97)] = {31,0x7FFFFD43}, + [I(239,97)] = {28,0xFFFFE83}, + [I(240,97)] = {31,0x7FFFFD63}, + [I(241,97)] = {X32,0xFFFFFCC3}, + [I(242,97)] = {31,0x7FFFFD83}, + [I(243,97)] = {31,0x7FFFFDA3}, + [I(244,97)] = {X32,0xFFFFFCE3}, + [I(245,97)] = {X32,0xFFFFFD03}, + [I(246,97)] = {X32,0xFFFFFD23}, + [I(247,97)] = {X32,0xFFFFFD43}, + [I(248,97)] = {X32,0xFFFFFD63}, + [I(249,97)] = {64,0}, + [I(250,97)] = {X32,0xFFFFFD83}, + [I(251,97)] = {X32,0xFFFFFDA3}, + [I(252,97)] = {X32,0xFFFFFDC3}, + [I(253,97)] = {X32,0xFFFFFDE3}, + [I(254,97)] = {X32,0xFFFFFE03}, + [I(255,97)] = {31,0x7FFFFDC3}, + [I(0,98)] = {19,0x7FE23}, + [I(1,98)] = {29,0x1FFFF623}, + [I(2,98)] = {64,0}, + [I(3,98)] = {64,0}, + [I(4,98)] = {64,0}, + [I(5,98)] = {64,0}, + [I(6,98)] = {64,0}, + [I(7,98)] = {64,0}, + [I(8,98)] = {64,0}, + [I(9,98)] = {30,0x3FFFFAA3}, + [I(10,98)] = {64,0}, + [I(11,98)] = {64,0}, + [I(12,98)] = {64,0}, + [I(13,98)] = {64,0}, + [I(14,98)] = {64,0}, + [I(15,98)] = {64,0}, + [I(16,98)] = {64,0}, + [I(17,98)] = {64,0}, + [I(18,98)] = {64,0}, + [I(19,98)] = {64,0}, + [I(20,98)] = {64,0}, + [I(21,98)] = {64,0}, + [I(22,98)] = {64,0}, + [I(23,98)] = {64,0}, + [I(24,98)] = {64,0}, + [I(25,98)] = {64,0}, + [I(26,98)] = {64,0}, + [I(27,98)] = {64,0}, + [I(28,98)] = {64,0}, + [I(29,98)] = {64,0}, + [I(30,98)] = {64,0}, + [I(31,98)] = {64,0}, + [I(32,98)] = {12,0x523}, + [I(33,98)] = {16,0xFE23}, + [I(34,98)] = {16,0xFE63}, + [I(35,98)] = {18,0x3FEA3}, + [I(36,98)] = {19,0x7FE63}, + [I(37,98)] = {12,0x563}, + [I(38,98)] = {14,0x3E23}, + [I(39,98)] = {17,0x1FEA3}, + [I(40,98)] = {16,0xFEA3}, + [I(41,98)] = {16,0xFEE3}, + [I(42,98)] = {14,0x3E63}, + [I(43,98)] = {17,0x1FEE3}, + [I(44,98)] = {14,0x3EA3}, + [I(45,98)] = {12,0x5A3}, + [I(46,98)] = {12,0x5E3}, + [I(47,98)] = {12,0x623}, + [I(48,98)] = {11,0x23}, + [I(49,98)] = {11,0x63}, + [I(50,98)] = {11,0xA3}, + [I(51,98)] = {12,0x663}, + [I(52,98)] = {12,0x6A3}, + [I(53,98)] = {12,0x6E3}, + [I(54,98)] = {12,0x723}, + [I(55,98)] = {12,0x763}, + [I(56,98)] = {12,0x7A3}, + [I(57,98)] = {12,0x7E3}, + [I(58,98)] = {13,0x1723}, + [I(59,98)] = {14,0x3EE3}, + [I(60,98)] = {21,0x1FFF23}, + [I(61,98)] = {12,0x823}, + [I(62,98)] = {18,0x3FEE3}, + [I(63,98)] = {16,0xFF23}, + [I(64,98)] = {19,0x7FEA3}, + [I(65,98)] = {12,0x863}, + [I(66,98)] = {13,0x1763}, + [I(67,98)] = {13,0x17A3}, + [I(68,98)] = {13,0x17E3}, + [I(69,98)] = {13,0x1823}, + [I(70,98)] = {13,0x1863}, + [I(71,98)] = {13,0x18A3}, + [I(72,98)] = {13,0x18E3}, + [I(73,98)] = {13,0x1923}, + [I(74,98)] = {13,0x1963}, + [I(75,98)] = {13,0x19A3}, + [I(76,98)] = {13,0x19E3}, + [I(77,98)] = {13,0x1A23}, + [I(78,98)] = {13,0x1A63}, + [I(79,98)] = {13,0x1AA3}, + [I(80,98)] = {13,0x1AE3}, + [I(81,98)] = {13,0x1B23}, + [I(82,98)] = {13,0x1B63}, + [I(83,98)] = {13,0x1BA3}, + [I(84,98)] = {13,0x1BE3}, + [I(85,98)] = {13,0x1C23}, + [I(86,98)] = {13,0x1C63}, + [I(87,98)] = {13,0x1CA3}, + [I(88,98)] = {14,0x3F23}, + [I(89,98)] = {13,0x1CE3}, + [I(90,98)] = {14,0x3F63}, + [I(91,98)] = {19,0x7FEE3}, + [I(92,98)] = {25,0x1FFFC23}, + [I(93,98)] = {19,0x7FF23}, + [I(94,98)] = {20,0xFFF23}, + [I(95,98)] = {12,0x8A3}, + [I(96,98)] = {21,0x1FFF63}, + [I(97,98)] = {11,0xE3}, + [I(98,98)] = {12,0x8E3}, + [I(99,98)] = {11,0x123}, + [I(100,98)] = {12,0x923}, + [I(101,98)] = {11,0x163}, + [I(102,98)] = {12,0x963}, + [I(103,98)] = {12,0x9A3}, + [I(104,98)] = {12,0x9E3}, + [I(105,98)] = {11,0x1A3}, + [I(106,98)] = {13,0x1D23}, + [I(107,98)] = {13,0x1D63}, + [I(108,98)] = {12,0xA23}, + [I(109,98)] = {12,0xA63}, + [I(110,98)] = {12,0xAA3}, + [I(111,98)] = {11,0x1E3}, + [I(112,98)] = {12,0xAE3}, + [I(113,98)] = {13,0x1DA3}, + [I(114,98)] = {12,0xB23}, + [I(115,98)] = {11,0x223}, + [I(116,98)] = {11,0x263}, + [I(117,98)] = {12,0xB63}, + [I(118,98)] = {13,0x1DE3}, + [I(119,98)] = {13,0x1E23}, + [I(120,98)] = {13,0x1E63}, + [I(121,98)] = {13,0x1EA3}, + [I(122,98)] = {13,0x1EE3}, + [I(123,98)] = {21,0x1FFFA3}, + [I(124,98)] = {17,0x1FF23}, + [I(125,98)] = {20,0xFFF63}, + [I(126,98)] = {19,0x7FF63}, + [I(127,98)] = {64,0}, + [I(128,98)] = {26,0x3FFF9A3}, + [I(129,98)] = {28,0xFFFF4A3}, + [I(130,98)] = {26,0x3FFF9E3}, + [I(131,98)] = {26,0x3FFFA23}, + [I(132,98)] = {28,0xFFFF4E3}, + [I(133,98)] = {28,0xFFFF523}, + [I(134,98)] = {28,0xFFFF563}, + [I(135,98)] = {29,0x1FFFF663}, + [I(136,98)] = {28,0xFFFF5A3}, + [I(137,98)] = {29,0x1FFFF6A3}, + [I(138,98)] = {29,0x1FFFF6E3}, + [I(139,98)] = {29,0x1FFFF723}, + [I(140,98)] = {29,0x1FFFF763}, + [I(141,98)] = {29,0x1FFFF7A3}, + [I(142,98)] = {30,0x3FFFFAE3}, + [I(143,98)] = {29,0x1FFFF7E3}, + [I(144,98)] = {30,0x3FFFFB23}, + [I(145,98)] = {30,0x3FFFFB63}, + [I(146,98)] = {28,0xFFFF5E3}, + [I(147,98)] = {29,0x1FFFF823}, + [I(148,98)] = {30,0x3FFFFBA3}, + [I(149,98)] = {29,0x1FFFF863}, + [I(150,98)] = {29,0x1FFFF8A3}, + [I(151,98)] = {29,0x1FFFF8E3}, + [I(152,98)] = {29,0x1FFFF923}, + [I(153,98)] = {27,0x7FFF723}, + [I(154,98)] = {28,0xFFFF623}, + [I(155,98)] = {29,0x1FFFF963}, + [I(156,98)] = {28,0xFFFF663}, + [I(157,98)] = {29,0x1FFFF9A3}, + [I(158,98)] = {29,0x1FFFF9E3}, + [I(159,98)] = {30,0x3FFFFBE3}, + [I(160,98)] = {28,0xFFFF6A3}, + [I(161,98)] = {27,0x7FFF763}, + [I(162,98)] = {26,0x3FFFA63}, + [I(163,98)] = {28,0xFFFF6E3}, + [I(164,98)] = {28,0xFFFF723}, + [I(165,98)] = {29,0x1FFFFA23}, + [I(166,98)] = {29,0x1FFFFA63}, + [I(167,98)] = {27,0x7FFF7A3}, + [I(168,98)] = {29,0x1FFFFAA3}, + [I(169,98)] = {28,0xFFFF763}, + [I(170,98)] = {28,0xFFFF7A3}, + [I(171,98)] = {30,0x3FFFFC23}, + [I(172,98)] = {27,0x7FFF7E3}, + [I(173,98)] = {28,0xFFFF7E3}, + [I(174,98)] = {29,0x1FFFFAE3}, + [I(175,98)] = {29,0x1FFFFB23}, + [I(176,98)] = {27,0x7FFF823}, + [I(177,98)] = {27,0x7FFF863}, + [I(178,98)] = {28,0xFFFF823}, + [I(179,98)] = {27,0x7FFF8A3}, + [I(180,98)] = {29,0x1FFFFB63}, + [I(181,98)] = {28,0xFFFF863}, + [I(182,98)] = {29,0x1FFFFBA3}, + [I(183,98)] = {29,0x1FFFFBE3}, + [I(184,98)] = {26,0x3FFFAA3}, + [I(185,98)] = {28,0xFFFF8A3}, + [I(186,98)] = {28,0xFFFF8E3}, + [I(187,98)] = {28,0xFFFF923}, + [I(188,98)] = {29,0x1FFFFC23}, + [I(189,98)] = {28,0xFFFF963}, + [I(190,98)] = {28,0xFFFF9A3}, + [I(191,98)] = {29,0x1FFFFC63}, + [I(192,98)] = {X32,0xFFFFF823}, + [I(193,98)] = {X32,0xFFFFF863}, + [I(194,98)] = {26,0x3FFFAE3}, + [I(195,98)] = {25,0x1FFFC63}, + [I(196,98)] = {28,0xFFFF9E3}, + [I(197,98)] = {29,0x1FFFFCA3}, + [I(198,98)] = {28,0xFFFFA23}, + [I(199,98)] = {31,0x7FFFFB23}, + [I(200,98)] = {X32,0xFFFFF8A3}, + [I(201,98)] = {X32,0xFFFFF8E3}, + [I(202,98)] = {X32,0xFFFFF923}, + [I(203,98)] = {64,0}, + [I(204,98)] = {64,0}, + [I(205,98)] = {X32,0xFFFFF963}, + [I(206,98)] = {30,0x3FFFFC63}, + [I(207,98)] = {31,0x7FFFFB63}, + [I(208,98)] = {25,0x1FFFCA3}, + [I(209,98)] = {27,0x7FFF8E3}, + [I(210,98)] = {X32,0xFFFFF9A3}, + [I(211,98)] = {64,0}, + [I(212,98)] = {64,0}, + [I(213,98)] = {X32,0xFFFFF9E3}, + [I(214,98)] = {64,0}, + [I(215,98)] = {30,0x3FFFFCA3}, + [I(216,98)] = {27,0x7FFF923}, + [I(217,98)] = {27,0x7FFF963}, + [I(218,98)] = {X32,0xFFFFFA23}, + [I(219,98)] = {X32,0xFFFFFA63}, + [I(220,98)] = {64,0}, + [I(221,98)] = {64,0}, + [I(222,98)] = {64,0}, + [I(223,98)] = {64,0}, + [I(224,98)] = {26,0x3FFFB23}, + [I(225,98)] = {30,0x3FFFFCE3}, + [I(226,98)] = {26,0x3FFFB63}, + [I(227,98)] = {27,0x7FFF9A3}, + [I(228,98)] = {28,0xFFFFA63}, + [I(229,98)] = {27,0x7FFF9E3}, + [I(230,98)] = {27,0x7FFFA23}, + [I(231,98)] = {29,0x1FFFFCE3}, + [I(232,98)] = {28,0xFFFFAA3}, + [I(233,98)] = {28,0xFFFFAE3}, + [I(234,98)] = {31,0x7FFFFBA3}, + [I(235,98)] = {31,0x7FFFFBE3}, + [I(236,98)] = {30,0x3FFFFD23}, + [I(237,98)] = {30,0x3FFFFD63}, + [I(238,98)] = {X32,0xFFFFFAA3}, + [I(239,98)] = {29,0x1FFFFD23}, + [I(240,98)] = {X32,0xFFFFFAE3}, + [I(241,98)] = {64,0}, + [I(242,98)] = {X32,0xFFFFFB23}, + [I(243,98)] = {X32,0xFFFFFB63}, + [I(244,98)] = {64,0}, + [I(245,98)] = {64,0}, + [I(246,98)] = {64,0}, + [I(247,98)] = {64,0}, + [I(248,98)] = {64,0}, + [I(249,98)] = {64,0}, + [I(250,98)] = {64,0}, + [I(251,98)] = {64,0}, + [I(252,98)] = {64,0}, + [I(253,98)] = {64,0}, + [I(254,98)] = {64,0}, + [I(255,98)] = {X32,0xFFFFFBA3}, + [I(0,99)] = {18,0x3FF04}, + [I(1,99)] = {28,0xFFFFB04}, + [I(2,99)] = {64,0}, + [I(3,99)] = {64,0}, + [I(4,99)] = {64,0}, + [I(5,99)] = {64,0}, + [I(6,99)] = {64,0}, + [I(7,99)] = {64,0}, + [I(8,99)] = {64,0}, + [I(9,99)] = {29,0x1FFFFD44}, + [I(10,99)] = {64,0}, + [I(11,99)] = {64,0}, + [I(12,99)] = {64,0}, + [I(13,99)] = {64,0}, + [I(14,99)] = {64,0}, + [I(15,99)] = {64,0}, + [I(16,99)] = {64,0}, + [I(17,99)] = {64,0}, + [I(18,99)] = {64,0}, + [I(19,99)] = {64,0}, + [I(20,99)] = {64,0}, + [I(21,99)] = {64,0}, + [I(22,99)] = {64,0}, + [I(23,99)] = {64,0}, + [I(24,99)] = {64,0}, + [I(25,99)] = {64,0}, + [I(26,99)] = {64,0}, + [I(27,99)] = {64,0}, + [I(28,99)] = {64,0}, + [I(29,99)] = {64,0}, + [I(30,99)] = {64,0}, + [I(31,99)] = {64,0}, + [I(32,99)] = {11,0x284}, + [I(33,99)] = {15,0x7F04}, + [I(34,99)] = {15,0x7F24}, + [I(35,99)] = {17,0x1FF44}, + [I(36,99)] = {18,0x3FF24}, + [I(37,99)] = {11,0x2A4}, + [I(38,99)] = {13,0x1F04}, + [I(39,99)] = {16,0xFF44}, + [I(40,99)] = {15,0x7F44}, + [I(41,99)] = {15,0x7F64}, + [I(42,99)] = {13,0x1F24}, + [I(43,99)] = {16,0xFF64}, + [I(44,99)] = {13,0x1F44}, + [I(45,99)] = {11,0x2C4}, + [I(46,99)] = {11,0x2E4}, + [I(47,99)] = {11,0x304}, + [I(48,99)] = {10,0x4}, + [I(49,99)] = {10,0x24}, + [I(50,99)] = {10,0x44}, + [I(51,99)] = {11,0x324}, + [I(52,99)] = {11,0x344}, + [I(53,99)] = {11,0x364}, + [I(54,99)] = {11,0x384}, + [I(55,99)] = {11,0x3A4}, + [I(56,99)] = {11,0x3C4}, + [I(57,99)] = {11,0x3E4}, + [I(58,99)] = {12,0xB84}, + [I(59,99)] = {13,0x1F64}, + [I(60,99)] = {20,0xFFF84}, + [I(61,99)] = {11,0x404}, + [I(62,99)] = {17,0x1FF64}, + [I(63,99)] = {15,0x7F84}, + [I(64,99)] = {18,0x3FF44}, + [I(65,99)] = {11,0x424}, + [I(66,99)] = {12,0xBA4}, + [I(67,99)] = {12,0xBC4}, + [I(68,99)] = {12,0xBE4}, + [I(69,99)] = {12,0xC04}, + [I(70,99)] = {12,0xC24}, + [I(71,99)] = {12,0xC44}, + [I(72,99)] = {12,0xC64}, + [I(73,99)] = {12,0xC84}, + [I(74,99)] = {12,0xCA4}, + [I(75,99)] = {12,0xCC4}, + [I(76,99)] = {12,0xCE4}, + [I(77,99)] = {12,0xD04}, + [I(78,99)] = {12,0xD24}, + [I(79,99)] = {12,0xD44}, + [I(80,99)] = {12,0xD64}, + [I(81,99)] = {12,0xD84}, + [I(82,99)] = {12,0xDA4}, + [I(83,99)] = {12,0xDC4}, + [I(84,99)] = {12,0xDE4}, + [I(85,99)] = {12,0xE04}, + [I(86,99)] = {12,0xE24}, + [I(87,99)] = {12,0xE44}, + [I(88,99)] = {13,0x1F84}, + [I(89,99)] = {12,0xE64}, + [I(90,99)] = {13,0x1FA4}, + [I(91,99)] = {18,0x3FF64}, + [I(92,99)] = {24,0xFFFE04}, + [I(93,99)] = {18,0x3FF84}, + [I(94,99)] = {19,0x7FF84}, + [I(95,99)] = {11,0x444}, + [I(96,99)] = {20,0xFFFA4}, + [I(97,99)] = {10,0x64}, + [I(98,99)] = {11,0x464}, + [I(99,99)] = {10,0x84}, + [I(100,99)] = {11,0x484}, + [I(101,99)] = {10,0xA4}, + [I(102,99)] = {11,0x4A4}, + [I(103,99)] = {11,0x4C4}, + [I(104,99)] = {11,0x4E4}, + [I(105,99)] = {10,0xC4}, + [I(106,99)] = {12,0xE84}, + [I(107,99)] = {12,0xEA4}, + [I(108,99)] = {11,0x504}, + [I(109,99)] = {11,0x524}, + [I(110,99)] = {11,0x544}, + [I(111,99)] = {10,0xE4}, + [I(112,99)] = {11,0x564}, + [I(113,99)] = {12,0xEC4}, + [I(114,99)] = {11,0x584}, + [I(115,99)] = {10,0x104}, + [I(116,99)] = {10,0x124}, + [I(117,99)] = {11,0x5A4}, + [I(118,99)] = {12,0xEE4}, + [I(119,99)] = {12,0xF04}, + [I(120,99)] = {12,0xF24}, + [I(121,99)] = {12,0xF44}, + [I(122,99)] = {12,0xF64}, + [I(123,99)] = {20,0xFFFC4}, + [I(124,99)] = {16,0xFF84}, + [I(125,99)] = {19,0x7FFA4}, + [I(126,99)] = {18,0x3FFA4}, + [I(127,99)] = {64,0}, + [I(128,99)] = {25,0x1FFFCC4}, + [I(129,99)] = {27,0x7FFFA44}, + [I(130,99)] = {25,0x1FFFCE4}, + [I(131,99)] = {25,0x1FFFD04}, + [I(132,99)] = {27,0x7FFFA64}, + [I(133,99)] = {27,0x7FFFA84}, + [I(134,99)] = {27,0x7FFFAA4}, + [I(135,99)] = {28,0xFFFFB24}, + [I(136,99)] = {27,0x7FFFAC4}, + [I(137,99)] = {28,0xFFFFB44}, + [I(138,99)] = {28,0xFFFFB64}, + [I(139,99)] = {28,0xFFFFB84}, + [I(140,99)] = {28,0xFFFFBA4}, + [I(141,99)] = {28,0xFFFFBC4}, + [I(142,99)] = {29,0x1FFFFD64}, + [I(143,99)] = {28,0xFFFFBE4}, + [I(144,99)] = {29,0x1FFFFD84}, + [I(145,99)] = {29,0x1FFFFDA4}, + [I(146,99)] = {27,0x7FFFAE4}, + [I(147,99)] = {28,0xFFFFC04}, + [I(148,99)] = {29,0x1FFFFDC4}, + [I(149,99)] = {28,0xFFFFC24}, + [I(150,99)] = {28,0xFFFFC44}, + [I(151,99)] = {28,0xFFFFC64}, + [I(152,99)] = {28,0xFFFFC84}, + [I(153,99)] = {26,0x3FFFB84}, + [I(154,99)] = {27,0x7FFFB04}, + [I(155,99)] = {28,0xFFFFCA4}, + [I(156,99)] = {27,0x7FFFB24}, + [I(157,99)] = {28,0xFFFFCC4}, + [I(158,99)] = {28,0xFFFFCE4}, + [I(159,99)] = {29,0x1FFFFDE4}, + [I(160,99)] = {27,0x7FFFB44}, + [I(161,99)] = {26,0x3FFFBA4}, + [I(162,99)] = {25,0x1FFFD24}, + [I(163,99)] = {27,0x7FFFB64}, + [I(164,99)] = {27,0x7FFFB84}, + [I(165,99)] = {28,0xFFFFD04}, + [I(166,99)] = {28,0xFFFFD24}, + [I(167,99)] = {26,0x3FFFBC4}, + [I(168,99)] = {28,0xFFFFD44}, + [I(169,99)] = {27,0x7FFFBA4}, + [I(170,99)] = {27,0x7FFFBC4}, + [I(171,99)] = {29,0x1FFFFE04}, + [I(172,99)] = {26,0x3FFFBE4}, + [I(173,99)] = {27,0x7FFFBE4}, + [I(174,99)] = {28,0xFFFFD64}, + [I(175,99)] = {28,0xFFFFD84}, + [I(176,99)] = {26,0x3FFFC04}, + [I(177,99)] = {26,0x3FFFC24}, + [I(178,99)] = {27,0x7FFFC04}, + [I(179,99)] = {26,0x3FFFC44}, + [I(180,99)] = {28,0xFFFFDA4}, + [I(181,99)] = {27,0x7FFFC24}, + [I(182,99)] = {28,0xFFFFDC4}, + [I(183,99)] = {28,0xFFFFDE4}, + [I(184,99)] = {25,0x1FFFD44}, + [I(185,99)] = {27,0x7FFFC44}, + [I(186,99)] = {27,0x7FFFC64}, + [I(187,99)] = {27,0x7FFFC84}, + [I(188,99)] = {28,0xFFFFE04}, + [I(189,99)] = {27,0x7FFFCA4}, + [I(190,99)] = {27,0x7FFFCC4}, + [I(191,99)] = {28,0xFFFFE24}, + [I(192,99)] = {31,0x7FFFFC04}, + [I(193,99)] = {31,0x7FFFFC24}, + [I(194,99)] = {25,0x1FFFD64}, + [I(195,99)] = {24,0xFFFE24}, + [I(196,99)] = {27,0x7FFFCE4}, + [I(197,99)] = {28,0xFFFFE44}, + [I(198,99)] = {27,0x7FFFD04}, + [I(199,99)] = {30,0x3FFFFD84}, + [I(200,99)] = {31,0x7FFFFC44}, + [I(201,99)] = {31,0x7FFFFC64}, + [I(202,99)] = {31,0x7FFFFC84}, + [I(203,99)] = {X32,0xFFFFFBC4}, + [I(204,99)] = {X32,0xFFFFFBE4}, + [I(205,99)] = {31,0x7FFFFCA4}, + [I(206,99)] = {29,0x1FFFFE24}, + [I(207,99)] = {30,0x3FFFFDA4}, + [I(208,99)] = {24,0xFFFE44}, + [I(209,99)] = {26,0x3FFFC64}, + [I(210,99)] = {31,0x7FFFFCC4}, + [I(211,99)] = {X32,0xFFFFFC04}, + [I(212,99)] = {X32,0xFFFFFC24}, + [I(213,99)] = {31,0x7FFFFCE4}, + [I(214,99)] = {X32,0xFFFFFC44}, + [I(215,99)] = {29,0x1FFFFE44}, + [I(216,99)] = {26,0x3FFFC84}, + [I(217,99)] = {26,0x3FFFCA4}, + [I(218,99)] = {31,0x7FFFFD04}, + [I(219,99)] = {31,0x7FFFFD24}, + [I(220,99)] = {64,0}, + [I(221,99)] = {X32,0xFFFFFC64}, + [I(222,99)] = {X32,0xFFFFFC84}, + [I(223,99)] = {X32,0xFFFFFCA4}, + [I(224,99)] = {25,0x1FFFD84}, + [I(225,99)] = {29,0x1FFFFE64}, + [I(226,99)] = {25,0x1FFFDA4}, + [I(227,99)] = {26,0x3FFFCC4}, + [I(228,99)] = {27,0x7FFFD24}, + [I(229,99)] = {26,0x3FFFCE4}, + [I(230,99)] = {26,0x3FFFD04}, + [I(231,99)] = {28,0xFFFFE64}, + [I(232,99)] = {27,0x7FFFD44}, + [I(233,99)] = {27,0x7FFFD64}, + [I(234,99)] = {30,0x3FFFFDC4}, + [I(235,99)] = {30,0x3FFFFDE4}, + [I(236,99)] = {29,0x1FFFFE84}, + [I(237,99)] = {29,0x1FFFFEA4}, + [I(238,99)] = {31,0x7FFFFD44}, + [I(239,99)] = {28,0xFFFFE84}, + [I(240,99)] = {31,0x7FFFFD64}, + [I(241,99)] = {X32,0xFFFFFCC4}, + [I(242,99)] = {31,0x7FFFFD84}, + [I(243,99)] = {31,0x7FFFFDA4}, + [I(244,99)] = {X32,0xFFFFFCE4}, + [I(245,99)] = {X32,0xFFFFFD04}, + [I(246,99)] = {X32,0xFFFFFD24}, + [I(247,99)] = {X32,0xFFFFFD44}, + [I(248,99)] = {X32,0xFFFFFD64}, + [I(249,99)] = {64,0}, + [I(250,99)] = {X32,0xFFFFFD84}, + [I(251,99)] = {X32,0xFFFFFDA4}, + [I(252,99)] = {X32,0xFFFFFDC4}, + [I(253,99)] = {X32,0xFFFFFDE4}, + [I(254,99)] = {X32,0xFFFFFE04}, + [I(255,99)] = {31,0x7FFFFDC4}, + [I(0,100)] = {19,0x7FE24}, + [I(1,100)] = {29,0x1FFFF624}, + [I(2,100)] = {64,0}, + [I(3,100)] = {64,0}, + [I(4,100)] = {64,0}, + [I(5,100)] = {64,0}, + [I(6,100)] = {64,0}, + [I(7,100)] = {64,0}, + [I(8,100)] = {64,0}, + [I(9,100)] = {30,0x3FFFFAA4}, + [I(10,100)] = {64,0}, + [I(11,100)] = {64,0}, + [I(12,100)] = {64,0}, + [I(13,100)] = {64,0}, + [I(14,100)] = {64,0}, + [I(15,100)] = {64,0}, + [I(16,100)] = {64,0}, + [I(17,100)] = {64,0}, + [I(18,100)] = {64,0}, + [I(19,100)] = {64,0}, + [I(20,100)] = {64,0}, + [I(21,100)] = {64,0}, + [I(22,100)] = {64,0}, + [I(23,100)] = {64,0}, + [I(24,100)] = {64,0}, + [I(25,100)] = {64,0}, + [I(26,100)] = {64,0}, + [I(27,100)] = {64,0}, + [I(28,100)] = {64,0}, + [I(29,100)] = {64,0}, + [I(30,100)] = {64,0}, + [I(31,100)] = {64,0}, + [I(32,100)] = {12,0x524}, + [I(33,100)] = {16,0xFE24}, + [I(34,100)] = {16,0xFE64}, + [I(35,100)] = {18,0x3FEA4}, + [I(36,100)] = {19,0x7FE64}, + [I(37,100)] = {12,0x564}, + [I(38,100)] = {14,0x3E24}, + [I(39,100)] = {17,0x1FEA4}, + [I(40,100)] = {16,0xFEA4}, + [I(41,100)] = {16,0xFEE4}, + [I(42,100)] = {14,0x3E64}, + [I(43,100)] = {17,0x1FEE4}, + [I(44,100)] = {14,0x3EA4}, + [I(45,100)] = {12,0x5A4}, + [I(46,100)] = {12,0x5E4}, + [I(47,100)] = {12,0x624}, + [I(48,100)] = {11,0x24}, + [I(49,100)] = {11,0x64}, + [I(50,100)] = {11,0xA4}, + [I(51,100)] = {12,0x664}, + [I(52,100)] = {12,0x6A4}, + [I(53,100)] = {12,0x6E4}, + [I(54,100)] = {12,0x724}, + [I(55,100)] = {12,0x764}, + [I(56,100)] = {12,0x7A4}, + [I(57,100)] = {12,0x7E4}, + [I(58,100)] = {13,0x1724}, + [I(59,100)] = {14,0x3EE4}, + [I(60,100)] = {21,0x1FFF24}, + [I(61,100)] = {12,0x824}, + [I(62,100)] = {18,0x3FEE4}, + [I(63,100)] = {16,0xFF24}, + [I(64,100)] = {19,0x7FEA4}, + [I(65,100)] = {12,0x864}, + [I(66,100)] = {13,0x1764}, + [I(67,100)] = {13,0x17A4}, + [I(68,100)] = {13,0x17E4}, + [I(69,100)] = {13,0x1824}, + [I(70,100)] = {13,0x1864}, + [I(71,100)] = {13,0x18A4}, + [I(72,100)] = {13,0x18E4}, + [I(73,100)] = {13,0x1924}, + [I(74,100)] = {13,0x1964}, + [I(75,100)] = {13,0x19A4}, + [I(76,100)] = {13,0x19E4}, + [I(77,100)] = {13,0x1A24}, + [I(78,100)] = {13,0x1A64}, + [I(79,100)] = {13,0x1AA4}, + [I(80,100)] = {13,0x1AE4}, + [I(81,100)] = {13,0x1B24}, + [I(82,100)] = {13,0x1B64}, + [I(83,100)] = {13,0x1BA4}, + [I(84,100)] = {13,0x1BE4}, + [I(85,100)] = {13,0x1C24}, + [I(86,100)] = {13,0x1C64}, + [I(87,100)] = {13,0x1CA4}, + [I(88,100)] = {14,0x3F24}, + [I(89,100)] = {13,0x1CE4}, + [I(90,100)] = {14,0x3F64}, + [I(91,100)] = {19,0x7FEE4}, + [I(92,100)] = {25,0x1FFFC24}, + [I(93,100)] = {19,0x7FF24}, + [I(94,100)] = {20,0xFFF24}, + [I(95,100)] = {12,0x8A4}, + [I(96,100)] = {21,0x1FFF64}, + [I(97,100)] = {11,0xE4}, + [I(98,100)] = {12,0x8E4}, + [I(99,100)] = {11,0x124}, + [I(100,100)] = {12,0x924}, + [I(101,100)] = {11,0x164}, + [I(102,100)] = {12,0x964}, + [I(103,100)] = {12,0x9A4}, + [I(104,100)] = {12,0x9E4}, + [I(105,100)] = {11,0x1A4}, + [I(106,100)] = {13,0x1D24}, + [I(107,100)] = {13,0x1D64}, + [I(108,100)] = {12,0xA24}, + [I(109,100)] = {12,0xA64}, + [I(110,100)] = {12,0xAA4}, + [I(111,100)] = {11,0x1E4}, + [I(112,100)] = {12,0xAE4}, + [I(113,100)] = {13,0x1DA4}, + [I(114,100)] = {12,0xB24}, + [I(115,100)] = {11,0x224}, + [I(116,100)] = {11,0x264}, + [I(117,100)] = {12,0xB64}, + [I(118,100)] = {13,0x1DE4}, + [I(119,100)] = {13,0x1E24}, + [I(120,100)] = {13,0x1E64}, + [I(121,100)] = {13,0x1EA4}, + [I(122,100)] = {13,0x1EE4}, + [I(123,100)] = {21,0x1FFFA4}, + [I(124,100)] = {17,0x1FF24}, + [I(125,100)] = {20,0xFFF64}, + [I(126,100)] = {19,0x7FF64}, + [I(127,100)] = {64,0}, + [I(128,100)] = {26,0x3FFF9A4}, + [I(129,100)] = {28,0xFFFF4A4}, + [I(130,100)] = {26,0x3FFF9E4}, + [I(131,100)] = {26,0x3FFFA24}, + [I(132,100)] = {28,0xFFFF4E4}, + [I(133,100)] = {28,0xFFFF524}, + [I(134,100)] = {28,0xFFFF564}, + [I(135,100)] = {29,0x1FFFF664}, + [I(136,100)] = {28,0xFFFF5A4}, + [I(137,100)] = {29,0x1FFFF6A4}, + [I(138,100)] = {29,0x1FFFF6E4}, + [I(139,100)] = {29,0x1FFFF724}, + [I(140,100)] = {29,0x1FFFF764}, + [I(141,100)] = {29,0x1FFFF7A4}, + [I(142,100)] = {30,0x3FFFFAE4}, + [I(143,100)] = {29,0x1FFFF7E4}, + [I(144,100)] = {30,0x3FFFFB24}, + [I(145,100)] = {30,0x3FFFFB64}, + [I(146,100)] = {28,0xFFFF5E4}, + [I(147,100)] = {29,0x1FFFF824}, + [I(148,100)] = {30,0x3FFFFBA4}, + [I(149,100)] = {29,0x1FFFF864}, + [I(150,100)] = {29,0x1FFFF8A4}, + [I(151,100)] = {29,0x1FFFF8E4}, + [I(152,100)] = {29,0x1FFFF924}, + [I(153,100)] = {27,0x7FFF724}, + [I(154,100)] = {28,0xFFFF624}, + [I(155,100)] = {29,0x1FFFF964}, + [I(156,100)] = {28,0xFFFF664}, + [I(157,100)] = {29,0x1FFFF9A4}, + [I(158,100)] = {29,0x1FFFF9E4}, + [I(159,100)] = {30,0x3FFFFBE4}, + [I(160,100)] = {28,0xFFFF6A4}, + [I(161,100)] = {27,0x7FFF764}, + [I(162,100)] = {26,0x3FFFA64}, + [I(163,100)] = {28,0xFFFF6E4}, + [I(164,100)] = {28,0xFFFF724}, + [I(165,100)] = {29,0x1FFFFA24}, + [I(166,100)] = {29,0x1FFFFA64}, + [I(167,100)] = {27,0x7FFF7A4}, + [I(168,100)] = {29,0x1FFFFAA4}, + [I(169,100)] = {28,0xFFFF764}, + [I(170,100)] = {28,0xFFFF7A4}, + [I(171,100)] = {30,0x3FFFFC24}, + [I(172,100)] = {27,0x7FFF7E4}, + [I(173,100)] = {28,0xFFFF7E4}, + [I(174,100)] = {29,0x1FFFFAE4}, + [I(175,100)] = {29,0x1FFFFB24}, + [I(176,100)] = {27,0x7FFF824}, + [I(177,100)] = {27,0x7FFF864}, + [I(178,100)] = {28,0xFFFF824}, + [I(179,100)] = {27,0x7FFF8A4}, + [I(180,100)] = {29,0x1FFFFB64}, + [I(181,100)] = {28,0xFFFF864}, + [I(182,100)] = {29,0x1FFFFBA4}, + [I(183,100)] = {29,0x1FFFFBE4}, + [I(184,100)] = {26,0x3FFFAA4}, + [I(185,100)] = {28,0xFFFF8A4}, + [I(186,100)] = {28,0xFFFF8E4}, + [I(187,100)] = {28,0xFFFF924}, + [I(188,100)] = {29,0x1FFFFC24}, + [I(189,100)] = {28,0xFFFF964}, + [I(190,100)] = {28,0xFFFF9A4}, + [I(191,100)] = {29,0x1FFFFC64}, + [I(192,100)] = {X32,0xFFFFF824}, + [I(193,100)] = {X32,0xFFFFF864}, + [I(194,100)] = {26,0x3FFFAE4}, + [I(195,100)] = {25,0x1FFFC64}, + [I(196,100)] = {28,0xFFFF9E4}, + [I(197,100)] = {29,0x1FFFFCA4}, + [I(198,100)] = {28,0xFFFFA24}, + [I(199,100)] = {31,0x7FFFFB24}, + [I(200,100)] = {X32,0xFFFFF8A4}, + [I(201,100)] = {X32,0xFFFFF8E4}, + [I(202,100)] = {X32,0xFFFFF924}, + [I(203,100)] = {64,0}, + [I(204,100)] = {64,0}, + [I(205,100)] = {X32,0xFFFFF964}, + [I(206,100)] = {30,0x3FFFFC64}, + [I(207,100)] = {31,0x7FFFFB64}, + [I(208,100)] = {25,0x1FFFCA4}, + [I(209,100)] = {27,0x7FFF8E4}, + [I(210,100)] = {X32,0xFFFFF9A4}, + [I(211,100)] = {64,0}, + [I(212,100)] = {64,0}, + [I(213,100)] = {X32,0xFFFFF9E4}, + [I(214,100)] = {64,0}, + [I(215,100)] = {30,0x3FFFFCA4}, + [I(216,100)] = {27,0x7FFF924}, + [I(217,100)] = {27,0x7FFF964}, + [I(218,100)] = {X32,0xFFFFFA24}, + [I(219,100)] = {X32,0xFFFFFA64}, + [I(220,100)] = {64,0}, + [I(221,100)] = {64,0}, + [I(222,100)] = {64,0}, + [I(223,100)] = {64,0}, + [I(224,100)] = {26,0x3FFFB24}, + [I(225,100)] = {30,0x3FFFFCE4}, + [I(226,100)] = {26,0x3FFFB64}, + [I(227,100)] = {27,0x7FFF9A4}, + [I(228,100)] = {28,0xFFFFA64}, + [I(229,100)] = {27,0x7FFF9E4}, + [I(230,100)] = {27,0x7FFFA24}, + [I(231,100)] = {29,0x1FFFFCE4}, + [I(232,100)] = {28,0xFFFFAA4}, + [I(233,100)] = {28,0xFFFFAE4}, + [I(234,100)] = {31,0x7FFFFBA4}, + [I(235,100)] = {31,0x7FFFFBE4}, + [I(236,100)] = {30,0x3FFFFD24}, + [I(237,100)] = {30,0x3FFFFD64}, + [I(238,100)] = {X32,0xFFFFFAA4}, + [I(239,100)] = {29,0x1FFFFD24}, + [I(240,100)] = {X32,0xFFFFFAE4}, + [I(241,100)] = {64,0}, + [I(242,100)] = {X32,0xFFFFFB24}, + [I(243,100)] = {X32,0xFFFFFB64}, + [I(244,100)] = {64,0}, + [I(245,100)] = {64,0}, + [I(246,100)] = {64,0}, + [I(247,100)] = {64,0}, + [I(248,100)] = {64,0}, + [I(249,100)] = {64,0}, + [I(250,100)] = {64,0}, + [I(251,100)] = {64,0}, + [I(252,100)] = {64,0}, + [I(253,100)] = {64,0}, + [I(254,100)] = {64,0}, + [I(255,100)] = {X32,0xFFFFFBA4}, + [I(0,101)] = {18,0x3FF05}, + [I(1,101)] = {28,0xFFFFB05}, + [I(2,101)] = {64,0}, + [I(3,101)] = {64,0}, + [I(4,101)] = {64,0}, + [I(5,101)] = {64,0}, + [I(6,101)] = {64,0}, + [I(7,101)] = {64,0}, + [I(8,101)] = {64,0}, + [I(9,101)] = {29,0x1FFFFD45}, + [I(10,101)] = {64,0}, + [I(11,101)] = {64,0}, + [I(12,101)] = {64,0}, + [I(13,101)] = {64,0}, + [I(14,101)] = {64,0}, + [I(15,101)] = {64,0}, + [I(16,101)] = {64,0}, + [I(17,101)] = {64,0}, + [I(18,101)] = {64,0}, + [I(19,101)] = {64,0}, + [I(20,101)] = {64,0}, + [I(21,101)] = {64,0}, + [I(22,101)] = {64,0}, + [I(23,101)] = {64,0}, + [I(24,101)] = {64,0}, + [I(25,101)] = {64,0}, + [I(26,101)] = {64,0}, + [I(27,101)] = {64,0}, + [I(28,101)] = {64,0}, + [I(29,101)] = {64,0}, + [I(30,101)] = {64,0}, + [I(31,101)] = {64,0}, + [I(32,101)] = {11,0x285}, + [I(33,101)] = {15,0x7F05}, + [I(34,101)] = {15,0x7F25}, + [I(35,101)] = {17,0x1FF45}, + [I(36,101)] = {18,0x3FF25}, + [I(37,101)] = {11,0x2A5}, + [I(38,101)] = {13,0x1F05}, + [I(39,101)] = {16,0xFF45}, + [I(40,101)] = {15,0x7F45}, + [I(41,101)] = {15,0x7F65}, + [I(42,101)] = {13,0x1F25}, + [I(43,101)] = {16,0xFF65}, + [I(44,101)] = {13,0x1F45}, + [I(45,101)] = {11,0x2C5}, + [I(46,101)] = {11,0x2E5}, + [I(47,101)] = {11,0x305}, + [I(48,101)] = {10,0x5}, + [I(49,101)] = {10,0x25}, + [I(50,101)] = {10,0x45}, + [I(51,101)] = {11,0x325}, + [I(52,101)] = {11,0x345}, + [I(53,101)] = {11,0x365}, + [I(54,101)] = {11,0x385}, + [I(55,101)] = {11,0x3A5}, + [I(56,101)] = {11,0x3C5}, + [I(57,101)] = {11,0x3E5}, + [I(58,101)] = {12,0xB85}, + [I(59,101)] = {13,0x1F65}, + [I(60,101)] = {20,0xFFF85}, + [I(61,101)] = {11,0x405}, + [I(62,101)] = {17,0x1FF65}, + [I(63,101)] = {15,0x7F85}, + [I(64,101)] = {18,0x3FF45}, + [I(65,101)] = {11,0x425}, + [I(66,101)] = {12,0xBA5}, + [I(67,101)] = {12,0xBC5}, + [I(68,101)] = {12,0xBE5}, + [I(69,101)] = {12,0xC05}, + [I(70,101)] = {12,0xC25}, + [I(71,101)] = {12,0xC45}, + [I(72,101)] = {12,0xC65}, + [I(73,101)] = {12,0xC85}, + [I(74,101)] = {12,0xCA5}, + [I(75,101)] = {12,0xCC5}, + [I(76,101)] = {12,0xCE5}, + [I(77,101)] = {12,0xD05}, + [I(78,101)] = {12,0xD25}, + [I(79,101)] = {12,0xD45}, + [I(80,101)] = {12,0xD65}, + [I(81,101)] = {12,0xD85}, + [I(82,101)] = {12,0xDA5}, + [I(83,101)] = {12,0xDC5}, + [I(84,101)] = {12,0xDE5}, + [I(85,101)] = {12,0xE05}, + [I(86,101)] = {12,0xE25}, + [I(87,101)] = {12,0xE45}, + [I(88,101)] = {13,0x1F85}, + [I(89,101)] = {12,0xE65}, + [I(90,101)] = {13,0x1FA5}, + [I(91,101)] = {18,0x3FF65}, + [I(92,101)] = {24,0xFFFE05}, + [I(93,101)] = {18,0x3FF85}, + [I(94,101)] = {19,0x7FF85}, + [I(95,101)] = {11,0x445}, + [I(96,101)] = {20,0xFFFA5}, + [I(97,101)] = {10,0x65}, + [I(98,101)] = {11,0x465}, + [I(99,101)] = {10,0x85}, + [I(100,101)] = {11,0x485}, + [I(101,101)] = {10,0xA5}, + [I(102,101)] = {11,0x4A5}, + [I(103,101)] = {11,0x4C5}, + [I(104,101)] = {11,0x4E5}, + [I(105,101)] = {10,0xC5}, + [I(106,101)] = {12,0xE85}, + [I(107,101)] = {12,0xEA5}, + [I(108,101)] = {11,0x505}, + [I(109,101)] = {11,0x525}, + [I(110,101)] = {11,0x545}, + [I(111,101)] = {10,0xE5}, + [I(112,101)] = {11,0x565}, + [I(113,101)] = {12,0xEC5}, + [I(114,101)] = {11,0x585}, + [I(115,101)] = {10,0x105}, + [I(116,101)] = {10,0x125}, + [I(117,101)] = {11,0x5A5}, + [I(118,101)] = {12,0xEE5}, + [I(119,101)] = {12,0xF05}, + [I(120,101)] = {12,0xF25}, + [I(121,101)] = {12,0xF45}, + [I(122,101)] = {12,0xF65}, + [I(123,101)] = {20,0xFFFC5}, + [I(124,101)] = {16,0xFF85}, + [I(125,101)] = {19,0x7FFA5}, + [I(126,101)] = {18,0x3FFA5}, + [I(127,101)] = {64,0}, + [I(128,101)] = {25,0x1FFFCC5}, + [I(129,101)] = {27,0x7FFFA45}, + [I(130,101)] = {25,0x1FFFCE5}, + [I(131,101)] = {25,0x1FFFD05}, + [I(132,101)] = {27,0x7FFFA65}, + [I(133,101)] = {27,0x7FFFA85}, + [I(134,101)] = {27,0x7FFFAA5}, + [I(135,101)] = {28,0xFFFFB25}, + [I(136,101)] = {27,0x7FFFAC5}, + [I(137,101)] = {28,0xFFFFB45}, + [I(138,101)] = {28,0xFFFFB65}, + [I(139,101)] = {28,0xFFFFB85}, + [I(140,101)] = {28,0xFFFFBA5}, + [I(141,101)] = {28,0xFFFFBC5}, + [I(142,101)] = {29,0x1FFFFD65}, + [I(143,101)] = {28,0xFFFFBE5}, + [I(144,101)] = {29,0x1FFFFD85}, + [I(145,101)] = {29,0x1FFFFDA5}, + [I(146,101)] = {27,0x7FFFAE5}, + [I(147,101)] = {28,0xFFFFC05}, + [I(148,101)] = {29,0x1FFFFDC5}, + [I(149,101)] = {28,0xFFFFC25}, + [I(150,101)] = {28,0xFFFFC45}, + [I(151,101)] = {28,0xFFFFC65}, + [I(152,101)] = {28,0xFFFFC85}, + [I(153,101)] = {26,0x3FFFB85}, + [I(154,101)] = {27,0x7FFFB05}, + [I(155,101)] = {28,0xFFFFCA5}, + [I(156,101)] = {27,0x7FFFB25}, + [I(157,101)] = {28,0xFFFFCC5}, + [I(158,101)] = {28,0xFFFFCE5}, + [I(159,101)] = {29,0x1FFFFDE5}, + [I(160,101)] = {27,0x7FFFB45}, + [I(161,101)] = {26,0x3FFFBA5}, + [I(162,101)] = {25,0x1FFFD25}, + [I(163,101)] = {27,0x7FFFB65}, + [I(164,101)] = {27,0x7FFFB85}, + [I(165,101)] = {28,0xFFFFD05}, + [I(166,101)] = {28,0xFFFFD25}, + [I(167,101)] = {26,0x3FFFBC5}, + [I(168,101)] = {28,0xFFFFD45}, + [I(169,101)] = {27,0x7FFFBA5}, + [I(170,101)] = {27,0x7FFFBC5}, + [I(171,101)] = {29,0x1FFFFE05}, + [I(172,101)] = {26,0x3FFFBE5}, + [I(173,101)] = {27,0x7FFFBE5}, + [I(174,101)] = {28,0xFFFFD65}, + [I(175,101)] = {28,0xFFFFD85}, + [I(176,101)] = {26,0x3FFFC05}, + [I(177,101)] = {26,0x3FFFC25}, + [I(178,101)] = {27,0x7FFFC05}, + [I(179,101)] = {26,0x3FFFC45}, + [I(180,101)] = {28,0xFFFFDA5}, + [I(181,101)] = {27,0x7FFFC25}, + [I(182,101)] = {28,0xFFFFDC5}, + [I(183,101)] = {28,0xFFFFDE5}, + [I(184,101)] = {25,0x1FFFD45}, + [I(185,101)] = {27,0x7FFFC45}, + [I(186,101)] = {27,0x7FFFC65}, + [I(187,101)] = {27,0x7FFFC85}, + [I(188,101)] = {28,0xFFFFE05}, + [I(189,101)] = {27,0x7FFFCA5}, + [I(190,101)] = {27,0x7FFFCC5}, + [I(191,101)] = {28,0xFFFFE25}, + [I(192,101)] = {31,0x7FFFFC05}, + [I(193,101)] = {31,0x7FFFFC25}, + [I(194,101)] = {25,0x1FFFD65}, + [I(195,101)] = {24,0xFFFE25}, + [I(196,101)] = {27,0x7FFFCE5}, + [I(197,101)] = {28,0xFFFFE45}, + [I(198,101)] = {27,0x7FFFD05}, + [I(199,101)] = {30,0x3FFFFD85}, + [I(200,101)] = {31,0x7FFFFC45}, + [I(201,101)] = {31,0x7FFFFC65}, + [I(202,101)] = {31,0x7FFFFC85}, + [I(203,101)] = {X32,0xFFFFFBC5}, + [I(204,101)] = {X32,0xFFFFFBE5}, + [I(205,101)] = {31,0x7FFFFCA5}, + [I(206,101)] = {29,0x1FFFFE25}, + [I(207,101)] = {30,0x3FFFFDA5}, + [I(208,101)] = {24,0xFFFE45}, + [I(209,101)] = {26,0x3FFFC65}, + [I(210,101)] = {31,0x7FFFFCC5}, + [I(211,101)] = {X32,0xFFFFFC05}, + [I(212,101)] = {X32,0xFFFFFC25}, + [I(213,101)] = {31,0x7FFFFCE5}, + [I(214,101)] = {X32,0xFFFFFC45}, + [I(215,101)] = {29,0x1FFFFE45}, + [I(216,101)] = {26,0x3FFFC85}, + [I(217,101)] = {26,0x3FFFCA5}, + [I(218,101)] = {31,0x7FFFFD05}, + [I(219,101)] = {31,0x7FFFFD25}, + [I(220,101)] = {64,0}, + [I(221,101)] = {X32,0xFFFFFC65}, + [I(222,101)] = {X32,0xFFFFFC85}, + [I(223,101)] = {X32,0xFFFFFCA5}, + [I(224,101)] = {25,0x1FFFD85}, + [I(225,101)] = {29,0x1FFFFE65}, + [I(226,101)] = {25,0x1FFFDA5}, + [I(227,101)] = {26,0x3FFFCC5}, + [I(228,101)] = {27,0x7FFFD25}, + [I(229,101)] = {26,0x3FFFCE5}, + [I(230,101)] = {26,0x3FFFD05}, + [I(231,101)] = {28,0xFFFFE65}, + [I(232,101)] = {27,0x7FFFD45}, + [I(233,101)] = {27,0x7FFFD65}, + [I(234,101)] = {30,0x3FFFFDC5}, + [I(235,101)] = {30,0x3FFFFDE5}, + [I(236,101)] = {29,0x1FFFFE85}, + [I(237,101)] = {29,0x1FFFFEA5}, + [I(238,101)] = {31,0x7FFFFD45}, + [I(239,101)] = {28,0xFFFFE85}, + [I(240,101)] = {31,0x7FFFFD65}, + [I(241,101)] = {X32,0xFFFFFCC5}, + [I(242,101)] = {31,0x7FFFFD85}, + [I(243,101)] = {31,0x7FFFFDA5}, + [I(244,101)] = {X32,0xFFFFFCE5}, + [I(245,101)] = {X32,0xFFFFFD05}, + [I(246,101)] = {X32,0xFFFFFD25}, + [I(247,101)] = {X32,0xFFFFFD45}, + [I(248,101)] = {X32,0xFFFFFD65}, + [I(249,101)] = {64,0}, + [I(250,101)] = {X32,0xFFFFFD85}, + [I(251,101)] = {X32,0xFFFFFDA5}, + [I(252,101)] = {X32,0xFFFFFDC5}, + [I(253,101)] = {X32,0xFFFFFDE5}, + [I(254,101)] = {X32,0xFFFFFE05}, + [I(255,101)] = {31,0x7FFFFDC5}, + [I(0,102)] = {19,0x7FE25}, + [I(1,102)] = {29,0x1FFFF625}, + [I(2,102)] = {64,0}, + [I(3,102)] = {64,0}, + [I(4,102)] = {64,0}, + [I(5,102)] = {64,0}, + [I(6,102)] = {64,0}, + [I(7,102)] = {64,0}, + [I(8,102)] = {64,0}, + [I(9,102)] = {30,0x3FFFFAA5}, + [I(10,102)] = {64,0}, + [I(11,102)] = {64,0}, + [I(12,102)] = {64,0}, + [I(13,102)] = {64,0}, + [I(14,102)] = {64,0}, + [I(15,102)] = {64,0}, + [I(16,102)] = {64,0}, + [I(17,102)] = {64,0}, + [I(18,102)] = {64,0}, + [I(19,102)] = {64,0}, + [I(20,102)] = {64,0}, + [I(21,102)] = {64,0}, + [I(22,102)] = {64,0}, + [I(23,102)] = {64,0}, + [I(24,102)] = {64,0}, + [I(25,102)] = {64,0}, + [I(26,102)] = {64,0}, + [I(27,102)] = {64,0}, + [I(28,102)] = {64,0}, + [I(29,102)] = {64,0}, + [I(30,102)] = {64,0}, + [I(31,102)] = {64,0}, + [I(32,102)] = {12,0x525}, + [I(33,102)] = {16,0xFE25}, + [I(34,102)] = {16,0xFE65}, + [I(35,102)] = {18,0x3FEA5}, + [I(36,102)] = {19,0x7FE65}, + [I(37,102)] = {12,0x565}, + [I(38,102)] = {14,0x3E25}, + [I(39,102)] = {17,0x1FEA5}, + [I(40,102)] = {16,0xFEA5}, + [I(41,102)] = {16,0xFEE5}, + [I(42,102)] = {14,0x3E65}, + [I(43,102)] = {17,0x1FEE5}, + [I(44,102)] = {14,0x3EA5}, + [I(45,102)] = {12,0x5A5}, + [I(46,102)] = {12,0x5E5}, + [I(47,102)] = {12,0x625}, + [I(48,102)] = {11,0x25}, + [I(49,102)] = {11,0x65}, + [I(50,102)] = {11,0xA5}, + [I(51,102)] = {12,0x665}, + [I(52,102)] = {12,0x6A5}, + [I(53,102)] = {12,0x6E5}, + [I(54,102)] = {12,0x725}, + [I(55,102)] = {12,0x765}, + [I(56,102)] = {12,0x7A5}, + [I(57,102)] = {12,0x7E5}, + [I(58,102)] = {13,0x1725}, + [I(59,102)] = {14,0x3EE5}, + [I(60,102)] = {21,0x1FFF25}, + [I(61,102)] = {12,0x825}, + [I(62,102)] = {18,0x3FEE5}, + [I(63,102)] = {16,0xFF25}, + [I(64,102)] = {19,0x7FEA5}, + [I(65,102)] = {12,0x865}, + [I(66,102)] = {13,0x1765}, + [I(67,102)] = {13,0x17A5}, + [I(68,102)] = {13,0x17E5}, + [I(69,102)] = {13,0x1825}, + [I(70,102)] = {13,0x1865}, + [I(71,102)] = {13,0x18A5}, + [I(72,102)] = {13,0x18E5}, + [I(73,102)] = {13,0x1925}, + [I(74,102)] = {13,0x1965}, + [I(75,102)] = {13,0x19A5}, + [I(76,102)] = {13,0x19E5}, + [I(77,102)] = {13,0x1A25}, + [I(78,102)] = {13,0x1A65}, + [I(79,102)] = {13,0x1AA5}, + [I(80,102)] = {13,0x1AE5}, + [I(81,102)] = {13,0x1B25}, + [I(82,102)] = {13,0x1B65}, + [I(83,102)] = {13,0x1BA5}, + [I(84,102)] = {13,0x1BE5}, + [I(85,102)] = {13,0x1C25}, + [I(86,102)] = {13,0x1C65}, + [I(87,102)] = {13,0x1CA5}, + [I(88,102)] = {14,0x3F25}, + [I(89,102)] = {13,0x1CE5}, + [I(90,102)] = {14,0x3F65}, + [I(91,102)] = {19,0x7FEE5}, + [I(92,102)] = {25,0x1FFFC25}, + [I(93,102)] = {19,0x7FF25}, + [I(94,102)] = {20,0xFFF25}, + [I(95,102)] = {12,0x8A5}, + [I(96,102)] = {21,0x1FFF65}, + [I(97,102)] = {11,0xE5}, + [I(98,102)] = {12,0x8E5}, + [I(99,102)] = {11,0x125}, + [I(100,102)] = {12,0x925}, + [I(101,102)] = {11,0x165}, + [I(102,102)] = {12,0x965}, + [I(103,102)] = {12,0x9A5}, + [I(104,102)] = {12,0x9E5}, + [I(105,102)] = {11,0x1A5}, + [I(106,102)] = {13,0x1D25}, + [I(107,102)] = {13,0x1D65}, + [I(108,102)] = {12,0xA25}, + [I(109,102)] = {12,0xA65}, + [I(110,102)] = {12,0xAA5}, + [I(111,102)] = {11,0x1E5}, + [I(112,102)] = {12,0xAE5}, + [I(113,102)] = {13,0x1DA5}, + [I(114,102)] = {12,0xB25}, + [I(115,102)] = {11,0x225}, + [I(116,102)] = {11,0x265}, + [I(117,102)] = {12,0xB65}, + [I(118,102)] = {13,0x1DE5}, + [I(119,102)] = {13,0x1E25}, + [I(120,102)] = {13,0x1E65}, + [I(121,102)] = {13,0x1EA5}, + [I(122,102)] = {13,0x1EE5}, + [I(123,102)] = {21,0x1FFFA5}, + [I(124,102)] = {17,0x1FF25}, + [I(125,102)] = {20,0xFFF65}, + [I(126,102)] = {19,0x7FF65}, + [I(127,102)] = {64,0}, + [I(128,102)] = {26,0x3FFF9A5}, + [I(129,102)] = {28,0xFFFF4A5}, + [I(130,102)] = {26,0x3FFF9E5}, + [I(131,102)] = {26,0x3FFFA25}, + [I(132,102)] = {28,0xFFFF4E5}, + [I(133,102)] = {28,0xFFFF525}, + [I(134,102)] = {28,0xFFFF565}, + [I(135,102)] = {29,0x1FFFF665}, + [I(136,102)] = {28,0xFFFF5A5}, + [I(137,102)] = {29,0x1FFFF6A5}, + [I(138,102)] = {29,0x1FFFF6E5}, + [I(139,102)] = {29,0x1FFFF725}, + [I(140,102)] = {29,0x1FFFF765}, + [I(141,102)] = {29,0x1FFFF7A5}, + [I(142,102)] = {30,0x3FFFFAE5}, + [I(143,102)] = {29,0x1FFFF7E5}, + [I(144,102)] = {30,0x3FFFFB25}, + [I(145,102)] = {30,0x3FFFFB65}, + [I(146,102)] = {28,0xFFFF5E5}, + [I(147,102)] = {29,0x1FFFF825}, + [I(148,102)] = {30,0x3FFFFBA5}, + [I(149,102)] = {29,0x1FFFF865}, + [I(150,102)] = {29,0x1FFFF8A5}, + [I(151,102)] = {29,0x1FFFF8E5}, + [I(152,102)] = {29,0x1FFFF925}, + [I(153,102)] = {27,0x7FFF725}, + [I(154,102)] = {28,0xFFFF625}, + [I(155,102)] = {29,0x1FFFF965}, + [I(156,102)] = {28,0xFFFF665}, + [I(157,102)] = {29,0x1FFFF9A5}, + [I(158,102)] = {29,0x1FFFF9E5}, + [I(159,102)] = {30,0x3FFFFBE5}, + [I(160,102)] = {28,0xFFFF6A5}, + [I(161,102)] = {27,0x7FFF765}, + [I(162,102)] = {26,0x3FFFA65}, + [I(163,102)] = {28,0xFFFF6E5}, + [I(164,102)] = {28,0xFFFF725}, + [I(165,102)] = {29,0x1FFFFA25}, + [I(166,102)] = {29,0x1FFFFA65}, + [I(167,102)] = {27,0x7FFF7A5}, + [I(168,102)] = {29,0x1FFFFAA5}, + [I(169,102)] = {28,0xFFFF765}, + [I(170,102)] = {28,0xFFFF7A5}, + [I(171,102)] = {30,0x3FFFFC25}, + [I(172,102)] = {27,0x7FFF7E5}, + [I(173,102)] = {28,0xFFFF7E5}, + [I(174,102)] = {29,0x1FFFFAE5}, + [I(175,102)] = {29,0x1FFFFB25}, + [I(176,102)] = {27,0x7FFF825}, + [I(177,102)] = {27,0x7FFF865}, + [I(178,102)] = {28,0xFFFF825}, + [I(179,102)] = {27,0x7FFF8A5}, + [I(180,102)] = {29,0x1FFFFB65}, + [I(181,102)] = {28,0xFFFF865}, + [I(182,102)] = {29,0x1FFFFBA5}, + [I(183,102)] = {29,0x1FFFFBE5}, + [I(184,102)] = {26,0x3FFFAA5}, + [I(185,102)] = {28,0xFFFF8A5}, + [I(186,102)] = {28,0xFFFF8E5}, + [I(187,102)] = {28,0xFFFF925}, + [I(188,102)] = {29,0x1FFFFC25}, + [I(189,102)] = {28,0xFFFF965}, + [I(190,102)] = {28,0xFFFF9A5}, + [I(191,102)] = {29,0x1FFFFC65}, + [I(192,102)] = {X32,0xFFFFF825}, + [I(193,102)] = {X32,0xFFFFF865}, + [I(194,102)] = {26,0x3FFFAE5}, + [I(195,102)] = {25,0x1FFFC65}, + [I(196,102)] = {28,0xFFFF9E5}, + [I(197,102)] = {29,0x1FFFFCA5}, + [I(198,102)] = {28,0xFFFFA25}, + [I(199,102)] = {31,0x7FFFFB25}, + [I(200,102)] = {X32,0xFFFFF8A5}, + [I(201,102)] = {X32,0xFFFFF8E5}, + [I(202,102)] = {X32,0xFFFFF925}, + [I(203,102)] = {64,0}, + [I(204,102)] = {64,0}, + [I(205,102)] = {X32,0xFFFFF965}, + [I(206,102)] = {30,0x3FFFFC65}, + [I(207,102)] = {31,0x7FFFFB65}, + [I(208,102)] = {25,0x1FFFCA5}, + [I(209,102)] = {27,0x7FFF8E5}, + [I(210,102)] = {X32,0xFFFFF9A5}, + [I(211,102)] = {64,0}, + [I(212,102)] = {64,0}, + [I(213,102)] = {X32,0xFFFFF9E5}, + [I(214,102)] = {64,0}, + [I(215,102)] = {30,0x3FFFFCA5}, + [I(216,102)] = {27,0x7FFF925}, + [I(217,102)] = {27,0x7FFF965}, + [I(218,102)] = {X32,0xFFFFFA25}, + [I(219,102)] = {X32,0xFFFFFA65}, + [I(220,102)] = {64,0}, + [I(221,102)] = {64,0}, + [I(222,102)] = {64,0}, + [I(223,102)] = {64,0}, + [I(224,102)] = {26,0x3FFFB25}, + [I(225,102)] = {30,0x3FFFFCE5}, + [I(226,102)] = {26,0x3FFFB65}, + [I(227,102)] = {27,0x7FFF9A5}, + [I(228,102)] = {28,0xFFFFA65}, + [I(229,102)] = {27,0x7FFF9E5}, + [I(230,102)] = {27,0x7FFFA25}, + [I(231,102)] = {29,0x1FFFFCE5}, + [I(232,102)] = {28,0xFFFFAA5}, + [I(233,102)] = {28,0xFFFFAE5}, + [I(234,102)] = {31,0x7FFFFBA5}, + [I(235,102)] = {31,0x7FFFFBE5}, + [I(236,102)] = {30,0x3FFFFD25}, + [I(237,102)] = {30,0x3FFFFD65}, + [I(238,102)] = {X32,0xFFFFFAA5}, + [I(239,102)] = {29,0x1FFFFD25}, + [I(240,102)] = {X32,0xFFFFFAE5}, + [I(241,102)] = {64,0}, + [I(242,102)] = {X32,0xFFFFFB25}, + [I(243,102)] = {X32,0xFFFFFB65}, + [I(244,102)] = {64,0}, + [I(245,102)] = {64,0}, + [I(246,102)] = {64,0}, + [I(247,102)] = {64,0}, + [I(248,102)] = {64,0}, + [I(249,102)] = {64,0}, + [I(250,102)] = {64,0}, + [I(251,102)] = {64,0}, + [I(252,102)] = {64,0}, + [I(253,102)] = {64,0}, + [I(254,102)] = {64,0}, + [I(255,102)] = {X32,0xFFFFFBA5}, + [I(0,103)] = {19,0x7FE26}, + [I(1,103)] = {29,0x1FFFF626}, + [I(2,103)] = {64,0}, + [I(3,103)] = {64,0}, + [I(4,103)] = {64,0}, + [I(5,103)] = {64,0}, + [I(6,103)] = {64,0}, + [I(7,103)] = {64,0}, + [I(8,103)] = {64,0}, + [I(9,103)] = {30,0x3FFFFAA6}, + [I(10,103)] = {64,0}, + [I(11,103)] = {64,0}, + [I(12,103)] = {64,0}, + [I(13,103)] = {64,0}, + [I(14,103)] = {64,0}, + [I(15,103)] = {64,0}, + [I(16,103)] = {64,0}, + [I(17,103)] = {64,0}, + [I(18,103)] = {64,0}, + [I(19,103)] = {64,0}, + [I(20,103)] = {64,0}, + [I(21,103)] = {64,0}, + [I(22,103)] = {64,0}, + [I(23,103)] = {64,0}, + [I(24,103)] = {64,0}, + [I(25,103)] = {64,0}, + [I(26,103)] = {64,0}, + [I(27,103)] = {64,0}, + [I(28,103)] = {64,0}, + [I(29,103)] = {64,0}, + [I(30,103)] = {64,0}, + [I(31,103)] = {64,0}, + [I(32,103)] = {12,0x526}, + [I(33,103)] = {16,0xFE26}, + [I(34,103)] = {16,0xFE66}, + [I(35,103)] = {18,0x3FEA6}, + [I(36,103)] = {19,0x7FE66}, + [I(37,103)] = {12,0x566}, + [I(38,103)] = {14,0x3E26}, + [I(39,103)] = {17,0x1FEA6}, + [I(40,103)] = {16,0xFEA6}, + [I(41,103)] = {16,0xFEE6}, + [I(42,103)] = {14,0x3E66}, + [I(43,103)] = {17,0x1FEE6}, + [I(44,103)] = {14,0x3EA6}, + [I(45,103)] = {12,0x5A6}, + [I(46,103)] = {12,0x5E6}, + [I(47,103)] = {12,0x626}, + [I(48,103)] = {11,0x26}, + [I(49,103)] = {11,0x66}, + [I(50,103)] = {11,0xA6}, + [I(51,103)] = {12,0x666}, + [I(52,103)] = {12,0x6A6}, + [I(53,103)] = {12,0x6E6}, + [I(54,103)] = {12,0x726}, + [I(55,103)] = {12,0x766}, + [I(56,103)] = {12,0x7A6}, + [I(57,103)] = {12,0x7E6}, + [I(58,103)] = {13,0x1726}, + [I(59,103)] = {14,0x3EE6}, + [I(60,103)] = {21,0x1FFF26}, + [I(61,103)] = {12,0x826}, + [I(62,103)] = {18,0x3FEE6}, + [I(63,103)] = {16,0xFF26}, + [I(64,103)] = {19,0x7FEA6}, + [I(65,103)] = {12,0x866}, + [I(66,103)] = {13,0x1766}, + [I(67,103)] = {13,0x17A6}, + [I(68,103)] = {13,0x17E6}, + [I(69,103)] = {13,0x1826}, + [I(70,103)] = {13,0x1866}, + [I(71,103)] = {13,0x18A6}, + [I(72,103)] = {13,0x18E6}, + [I(73,103)] = {13,0x1926}, + [I(74,103)] = {13,0x1966}, + [I(75,103)] = {13,0x19A6}, + [I(76,103)] = {13,0x19E6}, + [I(77,103)] = {13,0x1A26}, + [I(78,103)] = {13,0x1A66}, + [I(79,103)] = {13,0x1AA6}, + [I(80,103)] = {13,0x1AE6}, + [I(81,103)] = {13,0x1B26}, + [I(82,103)] = {13,0x1B66}, + [I(83,103)] = {13,0x1BA6}, + [I(84,103)] = {13,0x1BE6}, + [I(85,103)] = {13,0x1C26}, + [I(86,103)] = {13,0x1C66}, + [I(87,103)] = {13,0x1CA6}, + [I(88,103)] = {14,0x3F26}, + [I(89,103)] = {13,0x1CE6}, + [I(90,103)] = {14,0x3F66}, + [I(91,103)] = {19,0x7FEE6}, + [I(92,103)] = {25,0x1FFFC26}, + [I(93,103)] = {19,0x7FF26}, + [I(94,103)] = {20,0xFFF26}, + [I(95,103)] = {12,0x8A6}, + [I(96,103)] = {21,0x1FFF66}, + [I(97,103)] = {11,0xE6}, + [I(98,103)] = {12,0x8E6}, + [I(99,103)] = {11,0x126}, + [I(100,103)] = {12,0x926}, + [I(101,103)] = {11,0x166}, + [I(102,103)] = {12,0x966}, + [I(103,103)] = {12,0x9A6}, + [I(104,103)] = {12,0x9E6}, + [I(105,103)] = {11,0x1A6}, + [I(106,103)] = {13,0x1D26}, + [I(107,103)] = {13,0x1D66}, + [I(108,103)] = {12,0xA26}, + [I(109,103)] = {12,0xA66}, + [I(110,103)] = {12,0xAA6}, + [I(111,103)] = {11,0x1E6}, + [I(112,103)] = {12,0xAE6}, + [I(113,103)] = {13,0x1DA6}, + [I(114,103)] = {12,0xB26}, + [I(115,103)] = {11,0x226}, + [I(116,103)] = {11,0x266}, + [I(117,103)] = {12,0xB66}, + [I(118,103)] = {13,0x1DE6}, + [I(119,103)] = {13,0x1E26}, + [I(120,103)] = {13,0x1E66}, + [I(121,103)] = {13,0x1EA6}, + [I(122,103)] = {13,0x1EE6}, + [I(123,103)] = {21,0x1FFFA6}, + [I(124,103)] = {17,0x1FF26}, + [I(125,103)] = {20,0xFFF66}, + [I(126,103)] = {19,0x7FF66}, + [I(127,103)] = {64,0}, + [I(128,103)] = {26,0x3FFF9A6}, + [I(129,103)] = {28,0xFFFF4A6}, + [I(130,103)] = {26,0x3FFF9E6}, + [I(131,103)] = {26,0x3FFFA26}, + [I(132,103)] = {28,0xFFFF4E6}, + [I(133,103)] = {28,0xFFFF526}, + [I(134,103)] = {28,0xFFFF566}, + [I(135,103)] = {29,0x1FFFF666}, + [I(136,103)] = {28,0xFFFF5A6}, + [I(137,103)] = {29,0x1FFFF6A6}, + [I(138,103)] = {29,0x1FFFF6E6}, + [I(139,103)] = {29,0x1FFFF726}, + [I(140,103)] = {29,0x1FFFF766}, + [I(141,103)] = {29,0x1FFFF7A6}, + [I(142,103)] = {30,0x3FFFFAE6}, + [I(143,103)] = {29,0x1FFFF7E6}, + [I(144,103)] = {30,0x3FFFFB26}, + [I(145,103)] = {30,0x3FFFFB66}, + [I(146,103)] = {28,0xFFFF5E6}, + [I(147,103)] = {29,0x1FFFF826}, + [I(148,103)] = {30,0x3FFFFBA6}, + [I(149,103)] = {29,0x1FFFF866}, + [I(150,103)] = {29,0x1FFFF8A6}, + [I(151,103)] = {29,0x1FFFF8E6}, + [I(152,103)] = {29,0x1FFFF926}, + [I(153,103)] = {27,0x7FFF726}, + [I(154,103)] = {28,0xFFFF626}, + [I(155,103)] = {29,0x1FFFF966}, + [I(156,103)] = {28,0xFFFF666}, + [I(157,103)] = {29,0x1FFFF9A6}, + [I(158,103)] = {29,0x1FFFF9E6}, + [I(159,103)] = {30,0x3FFFFBE6}, + [I(160,103)] = {28,0xFFFF6A6}, + [I(161,103)] = {27,0x7FFF766}, + [I(162,103)] = {26,0x3FFFA66}, + [I(163,103)] = {28,0xFFFF6E6}, + [I(164,103)] = {28,0xFFFF726}, + [I(165,103)] = {29,0x1FFFFA26}, + [I(166,103)] = {29,0x1FFFFA66}, + [I(167,103)] = {27,0x7FFF7A6}, + [I(168,103)] = {29,0x1FFFFAA6}, + [I(169,103)] = {28,0xFFFF766}, + [I(170,103)] = {28,0xFFFF7A6}, + [I(171,103)] = {30,0x3FFFFC26}, + [I(172,103)] = {27,0x7FFF7E6}, + [I(173,103)] = {28,0xFFFF7E6}, + [I(174,103)] = {29,0x1FFFFAE6}, + [I(175,103)] = {29,0x1FFFFB26}, + [I(176,103)] = {27,0x7FFF826}, + [I(177,103)] = {27,0x7FFF866}, + [I(178,103)] = {28,0xFFFF826}, + [I(179,103)] = {27,0x7FFF8A6}, + [I(180,103)] = {29,0x1FFFFB66}, + [I(181,103)] = {28,0xFFFF866}, + [I(182,103)] = {29,0x1FFFFBA6}, + [I(183,103)] = {29,0x1FFFFBE6}, + [I(184,103)] = {26,0x3FFFAA6}, + [I(185,103)] = {28,0xFFFF8A6}, + [I(186,103)] = {28,0xFFFF8E6}, + [I(187,103)] = {28,0xFFFF926}, + [I(188,103)] = {29,0x1FFFFC26}, + [I(189,103)] = {28,0xFFFF966}, + [I(190,103)] = {28,0xFFFF9A6}, + [I(191,103)] = {29,0x1FFFFC66}, + [I(192,103)] = {X32,0xFFFFF826}, + [I(193,103)] = {X32,0xFFFFF866}, + [I(194,103)] = {26,0x3FFFAE6}, + [I(195,103)] = {25,0x1FFFC66}, + [I(196,103)] = {28,0xFFFF9E6}, + [I(197,103)] = {29,0x1FFFFCA6}, + [I(198,103)] = {28,0xFFFFA26}, + [I(199,103)] = {31,0x7FFFFB26}, + [I(200,103)] = {X32,0xFFFFF8A6}, + [I(201,103)] = {X32,0xFFFFF8E6}, + [I(202,103)] = {X32,0xFFFFF926}, + [I(203,103)] = {64,0}, + [I(204,103)] = {64,0}, + [I(205,103)] = {X32,0xFFFFF966}, + [I(206,103)] = {30,0x3FFFFC66}, + [I(207,103)] = {31,0x7FFFFB66}, + [I(208,103)] = {25,0x1FFFCA6}, + [I(209,103)] = {27,0x7FFF8E6}, + [I(210,103)] = {X32,0xFFFFF9A6}, + [I(211,103)] = {64,0}, + [I(212,103)] = {64,0}, + [I(213,103)] = {X32,0xFFFFF9E6}, + [I(214,103)] = {64,0}, + [I(215,103)] = {30,0x3FFFFCA6}, + [I(216,103)] = {27,0x7FFF926}, + [I(217,103)] = {27,0x7FFF966}, + [I(218,103)] = {X32,0xFFFFFA26}, + [I(219,103)] = {X32,0xFFFFFA66}, + [I(220,103)] = {64,0}, + [I(221,103)] = {64,0}, + [I(222,103)] = {64,0}, + [I(223,103)] = {64,0}, + [I(224,103)] = {26,0x3FFFB26}, + [I(225,103)] = {30,0x3FFFFCE6}, + [I(226,103)] = {26,0x3FFFB66}, + [I(227,103)] = {27,0x7FFF9A6}, + [I(228,103)] = {28,0xFFFFA66}, + [I(229,103)] = {27,0x7FFF9E6}, + [I(230,103)] = {27,0x7FFFA26}, + [I(231,103)] = {29,0x1FFFFCE6}, + [I(232,103)] = {28,0xFFFFAA6}, + [I(233,103)] = {28,0xFFFFAE6}, + [I(234,103)] = {31,0x7FFFFBA6}, + [I(235,103)] = {31,0x7FFFFBE6}, + [I(236,103)] = {30,0x3FFFFD26}, + [I(237,103)] = {30,0x3FFFFD66}, + [I(238,103)] = {X32,0xFFFFFAA6}, + [I(239,103)] = {29,0x1FFFFD26}, + [I(240,103)] = {X32,0xFFFFFAE6}, + [I(241,103)] = {64,0}, + [I(242,103)] = {X32,0xFFFFFB26}, + [I(243,103)] = {X32,0xFFFFFB66}, + [I(244,103)] = {64,0}, + [I(245,103)] = {64,0}, + [I(246,103)] = {64,0}, + [I(247,103)] = {64,0}, + [I(248,103)] = {64,0}, + [I(249,103)] = {64,0}, + [I(250,103)] = {64,0}, + [I(251,103)] = {64,0}, + [I(252,103)] = {64,0}, + [I(253,103)] = {64,0}, + [I(254,103)] = {64,0}, + [I(255,103)] = {X32,0xFFFFFBA6}, + [I(0,104)] = {19,0x7FE27}, + [I(1,104)] = {29,0x1FFFF627}, + [I(2,104)] = {64,0}, + [I(3,104)] = {64,0}, + [I(4,104)] = {64,0}, + [I(5,104)] = {64,0}, + [I(6,104)] = {64,0}, + [I(7,104)] = {64,0}, + [I(8,104)] = {64,0}, + [I(9,104)] = {30,0x3FFFFAA7}, + [I(10,104)] = {64,0}, + [I(11,104)] = {64,0}, + [I(12,104)] = {64,0}, + [I(13,104)] = {64,0}, + [I(14,104)] = {64,0}, + [I(15,104)] = {64,0}, + [I(16,104)] = {64,0}, + [I(17,104)] = {64,0}, + [I(18,104)] = {64,0}, + [I(19,104)] = {64,0}, + [I(20,104)] = {64,0}, + [I(21,104)] = {64,0}, + [I(22,104)] = {64,0}, + [I(23,104)] = {64,0}, + [I(24,104)] = {64,0}, + [I(25,104)] = {64,0}, + [I(26,104)] = {64,0}, + [I(27,104)] = {64,0}, + [I(28,104)] = {64,0}, + [I(29,104)] = {64,0}, + [I(30,104)] = {64,0}, + [I(31,104)] = {64,0}, + [I(32,104)] = {12,0x527}, + [I(33,104)] = {16,0xFE27}, + [I(34,104)] = {16,0xFE67}, + [I(35,104)] = {18,0x3FEA7}, + [I(36,104)] = {19,0x7FE67}, + [I(37,104)] = {12,0x567}, + [I(38,104)] = {14,0x3E27}, + [I(39,104)] = {17,0x1FEA7}, + [I(40,104)] = {16,0xFEA7}, + [I(41,104)] = {16,0xFEE7}, + [I(42,104)] = {14,0x3E67}, + [I(43,104)] = {17,0x1FEE7}, + [I(44,104)] = {14,0x3EA7}, + [I(45,104)] = {12,0x5A7}, + [I(46,104)] = {12,0x5E7}, + [I(47,104)] = {12,0x627}, + [I(48,104)] = {11,0x27}, + [I(49,104)] = {11,0x67}, + [I(50,104)] = {11,0xA7}, + [I(51,104)] = {12,0x667}, + [I(52,104)] = {12,0x6A7}, + [I(53,104)] = {12,0x6E7}, + [I(54,104)] = {12,0x727}, + [I(55,104)] = {12,0x767}, + [I(56,104)] = {12,0x7A7}, + [I(57,104)] = {12,0x7E7}, + [I(58,104)] = {13,0x1727}, + [I(59,104)] = {14,0x3EE7}, + [I(60,104)] = {21,0x1FFF27}, + [I(61,104)] = {12,0x827}, + [I(62,104)] = {18,0x3FEE7}, + [I(63,104)] = {16,0xFF27}, + [I(64,104)] = {19,0x7FEA7}, + [I(65,104)] = {12,0x867}, + [I(66,104)] = {13,0x1767}, + [I(67,104)] = {13,0x17A7}, + [I(68,104)] = {13,0x17E7}, + [I(69,104)] = {13,0x1827}, + [I(70,104)] = {13,0x1867}, + [I(71,104)] = {13,0x18A7}, + [I(72,104)] = {13,0x18E7}, + [I(73,104)] = {13,0x1927}, + [I(74,104)] = {13,0x1967}, + [I(75,104)] = {13,0x19A7}, + [I(76,104)] = {13,0x19E7}, + [I(77,104)] = {13,0x1A27}, + [I(78,104)] = {13,0x1A67}, + [I(79,104)] = {13,0x1AA7}, + [I(80,104)] = {13,0x1AE7}, + [I(81,104)] = {13,0x1B27}, + [I(82,104)] = {13,0x1B67}, + [I(83,104)] = {13,0x1BA7}, + [I(84,104)] = {13,0x1BE7}, + [I(85,104)] = {13,0x1C27}, + [I(86,104)] = {13,0x1C67}, + [I(87,104)] = {13,0x1CA7}, + [I(88,104)] = {14,0x3F27}, + [I(89,104)] = {13,0x1CE7}, + [I(90,104)] = {14,0x3F67}, + [I(91,104)] = {19,0x7FEE7}, + [I(92,104)] = {25,0x1FFFC27}, + [I(93,104)] = {19,0x7FF27}, + [I(94,104)] = {20,0xFFF27}, + [I(95,104)] = {12,0x8A7}, + [I(96,104)] = {21,0x1FFF67}, + [I(97,104)] = {11,0xE7}, + [I(98,104)] = {12,0x8E7}, + [I(99,104)] = {11,0x127}, + [I(100,104)] = {12,0x927}, + [I(101,104)] = {11,0x167}, + [I(102,104)] = {12,0x967}, + [I(103,104)] = {12,0x9A7}, + [I(104,104)] = {12,0x9E7}, + [I(105,104)] = {11,0x1A7}, + [I(106,104)] = {13,0x1D27}, + [I(107,104)] = {13,0x1D67}, + [I(108,104)] = {12,0xA27}, + [I(109,104)] = {12,0xA67}, + [I(110,104)] = {12,0xAA7}, + [I(111,104)] = {11,0x1E7}, + [I(112,104)] = {12,0xAE7}, + [I(113,104)] = {13,0x1DA7}, + [I(114,104)] = {12,0xB27}, + [I(115,104)] = {11,0x227}, + [I(116,104)] = {11,0x267}, + [I(117,104)] = {12,0xB67}, + [I(118,104)] = {13,0x1DE7}, + [I(119,104)] = {13,0x1E27}, + [I(120,104)] = {13,0x1E67}, + [I(121,104)] = {13,0x1EA7}, + [I(122,104)] = {13,0x1EE7}, + [I(123,104)] = {21,0x1FFFA7}, + [I(124,104)] = {17,0x1FF27}, + [I(125,104)] = {20,0xFFF67}, + [I(126,104)] = {19,0x7FF67}, + [I(127,104)] = {64,0}, + [I(128,104)] = {26,0x3FFF9A7}, + [I(129,104)] = {28,0xFFFF4A7}, + [I(130,104)] = {26,0x3FFF9E7}, + [I(131,104)] = {26,0x3FFFA27}, + [I(132,104)] = {28,0xFFFF4E7}, + [I(133,104)] = {28,0xFFFF527}, + [I(134,104)] = {28,0xFFFF567}, + [I(135,104)] = {29,0x1FFFF667}, + [I(136,104)] = {28,0xFFFF5A7}, + [I(137,104)] = {29,0x1FFFF6A7}, + [I(138,104)] = {29,0x1FFFF6E7}, + [I(139,104)] = {29,0x1FFFF727}, + [I(140,104)] = {29,0x1FFFF767}, + [I(141,104)] = {29,0x1FFFF7A7}, + [I(142,104)] = {30,0x3FFFFAE7}, + [I(143,104)] = {29,0x1FFFF7E7}, + [I(144,104)] = {30,0x3FFFFB27}, + [I(145,104)] = {30,0x3FFFFB67}, + [I(146,104)] = {28,0xFFFF5E7}, + [I(147,104)] = {29,0x1FFFF827}, + [I(148,104)] = {30,0x3FFFFBA7}, + [I(149,104)] = {29,0x1FFFF867}, + [I(150,104)] = {29,0x1FFFF8A7}, + [I(151,104)] = {29,0x1FFFF8E7}, + [I(152,104)] = {29,0x1FFFF927}, + [I(153,104)] = {27,0x7FFF727}, + [I(154,104)] = {28,0xFFFF627}, + [I(155,104)] = {29,0x1FFFF967}, + [I(156,104)] = {28,0xFFFF667}, + [I(157,104)] = {29,0x1FFFF9A7}, + [I(158,104)] = {29,0x1FFFF9E7}, + [I(159,104)] = {30,0x3FFFFBE7}, + [I(160,104)] = {28,0xFFFF6A7}, + [I(161,104)] = {27,0x7FFF767}, + [I(162,104)] = {26,0x3FFFA67}, + [I(163,104)] = {28,0xFFFF6E7}, + [I(164,104)] = {28,0xFFFF727}, + [I(165,104)] = {29,0x1FFFFA27}, + [I(166,104)] = {29,0x1FFFFA67}, + [I(167,104)] = {27,0x7FFF7A7}, + [I(168,104)] = {29,0x1FFFFAA7}, + [I(169,104)] = {28,0xFFFF767}, + [I(170,104)] = {28,0xFFFF7A7}, + [I(171,104)] = {30,0x3FFFFC27}, + [I(172,104)] = {27,0x7FFF7E7}, + [I(173,104)] = {28,0xFFFF7E7}, + [I(174,104)] = {29,0x1FFFFAE7}, + [I(175,104)] = {29,0x1FFFFB27}, + [I(176,104)] = {27,0x7FFF827}, + [I(177,104)] = {27,0x7FFF867}, + [I(178,104)] = {28,0xFFFF827}, + [I(179,104)] = {27,0x7FFF8A7}, + [I(180,104)] = {29,0x1FFFFB67}, + [I(181,104)] = {28,0xFFFF867}, + [I(182,104)] = {29,0x1FFFFBA7}, + [I(183,104)] = {29,0x1FFFFBE7}, + [I(184,104)] = {26,0x3FFFAA7}, + [I(185,104)] = {28,0xFFFF8A7}, + [I(186,104)] = {28,0xFFFF8E7}, + [I(187,104)] = {28,0xFFFF927}, + [I(188,104)] = {29,0x1FFFFC27}, + [I(189,104)] = {28,0xFFFF967}, + [I(190,104)] = {28,0xFFFF9A7}, + [I(191,104)] = {29,0x1FFFFC67}, + [I(192,104)] = {X32,0xFFFFF827}, + [I(193,104)] = {X32,0xFFFFF867}, + [I(194,104)] = {26,0x3FFFAE7}, + [I(195,104)] = {25,0x1FFFC67}, + [I(196,104)] = {28,0xFFFF9E7}, + [I(197,104)] = {29,0x1FFFFCA7}, + [I(198,104)] = {28,0xFFFFA27}, + [I(199,104)] = {31,0x7FFFFB27}, + [I(200,104)] = {X32,0xFFFFF8A7}, + [I(201,104)] = {X32,0xFFFFF8E7}, + [I(202,104)] = {X32,0xFFFFF927}, + [I(203,104)] = {64,0}, + [I(204,104)] = {64,0}, + [I(205,104)] = {X32,0xFFFFF967}, + [I(206,104)] = {30,0x3FFFFC67}, + [I(207,104)] = {31,0x7FFFFB67}, + [I(208,104)] = {25,0x1FFFCA7}, + [I(209,104)] = {27,0x7FFF8E7}, + [I(210,104)] = {X32,0xFFFFF9A7}, + [I(211,104)] = {64,0}, + [I(212,104)] = {64,0}, + [I(213,104)] = {X32,0xFFFFF9E7}, + [I(214,104)] = {64,0}, + [I(215,104)] = {30,0x3FFFFCA7}, + [I(216,104)] = {27,0x7FFF927}, + [I(217,104)] = {27,0x7FFF967}, + [I(218,104)] = {X32,0xFFFFFA27}, + [I(219,104)] = {X32,0xFFFFFA67}, + [I(220,104)] = {64,0}, + [I(221,104)] = {64,0}, + [I(222,104)] = {64,0}, + [I(223,104)] = {64,0}, + [I(224,104)] = {26,0x3FFFB27}, + [I(225,104)] = {30,0x3FFFFCE7}, + [I(226,104)] = {26,0x3FFFB67}, + [I(227,104)] = {27,0x7FFF9A7}, + [I(228,104)] = {28,0xFFFFA67}, + [I(229,104)] = {27,0x7FFF9E7}, + [I(230,104)] = {27,0x7FFFA27}, + [I(231,104)] = {29,0x1FFFFCE7}, + [I(232,104)] = {28,0xFFFFAA7}, + [I(233,104)] = {28,0xFFFFAE7}, + [I(234,104)] = {31,0x7FFFFBA7}, + [I(235,104)] = {31,0x7FFFFBE7}, + [I(236,104)] = {30,0x3FFFFD27}, + [I(237,104)] = {30,0x3FFFFD67}, + [I(238,104)] = {X32,0xFFFFFAA7}, + [I(239,104)] = {29,0x1FFFFD27}, + [I(240,104)] = {X32,0xFFFFFAE7}, + [I(241,104)] = {64,0}, + [I(242,104)] = {X32,0xFFFFFB27}, + [I(243,104)] = {X32,0xFFFFFB67}, + [I(244,104)] = {64,0}, + [I(245,104)] = {64,0}, + [I(246,104)] = {64,0}, + [I(247,104)] = {64,0}, + [I(248,104)] = {64,0}, + [I(249,104)] = {64,0}, + [I(250,104)] = {64,0}, + [I(251,104)] = {64,0}, + [I(252,104)] = {64,0}, + [I(253,104)] = {64,0}, + [I(254,104)] = {64,0}, + [I(255,104)] = {X32,0xFFFFFBA7}, + [I(0,105)] = {18,0x3FF06}, + [I(1,105)] = {28,0xFFFFB06}, + [I(2,105)] = {64,0}, + [I(3,105)] = {64,0}, + [I(4,105)] = {64,0}, + [I(5,105)] = {64,0}, + [I(6,105)] = {64,0}, + [I(7,105)] = {64,0}, + [I(8,105)] = {64,0}, + [I(9,105)] = {29,0x1FFFFD46}, + [I(10,105)] = {64,0}, + [I(11,105)] = {64,0}, + [I(12,105)] = {64,0}, + [I(13,105)] = {64,0}, + [I(14,105)] = {64,0}, + [I(15,105)] = {64,0}, + [I(16,105)] = {64,0}, + [I(17,105)] = {64,0}, + [I(18,105)] = {64,0}, + [I(19,105)] = {64,0}, + [I(20,105)] = {64,0}, + [I(21,105)] = {64,0}, + [I(22,105)] = {64,0}, + [I(23,105)] = {64,0}, + [I(24,105)] = {64,0}, + [I(25,105)] = {64,0}, + [I(26,105)] = {64,0}, + [I(27,105)] = {64,0}, + [I(28,105)] = {64,0}, + [I(29,105)] = {64,0}, + [I(30,105)] = {64,0}, + [I(31,105)] = {64,0}, + [I(32,105)] = {11,0x286}, + [I(33,105)] = {15,0x7F06}, + [I(34,105)] = {15,0x7F26}, + [I(35,105)] = {17,0x1FF46}, + [I(36,105)] = {18,0x3FF26}, + [I(37,105)] = {11,0x2A6}, + [I(38,105)] = {13,0x1F06}, + [I(39,105)] = {16,0xFF46}, + [I(40,105)] = {15,0x7F46}, + [I(41,105)] = {15,0x7F66}, + [I(42,105)] = {13,0x1F26}, + [I(43,105)] = {16,0xFF66}, + [I(44,105)] = {13,0x1F46}, + [I(45,105)] = {11,0x2C6}, + [I(46,105)] = {11,0x2E6}, + [I(47,105)] = {11,0x306}, + [I(48,105)] = {10,0x6}, + [I(49,105)] = {10,0x26}, + [I(50,105)] = {10,0x46}, + [I(51,105)] = {11,0x326}, + [I(52,105)] = {11,0x346}, + [I(53,105)] = {11,0x366}, + [I(54,105)] = {11,0x386}, + [I(55,105)] = {11,0x3A6}, + [I(56,105)] = {11,0x3C6}, + [I(57,105)] = {11,0x3E6}, + [I(58,105)] = {12,0xB86}, + [I(59,105)] = {13,0x1F66}, + [I(60,105)] = {20,0xFFF86}, + [I(61,105)] = {11,0x406}, + [I(62,105)] = {17,0x1FF66}, + [I(63,105)] = {15,0x7F86}, + [I(64,105)] = {18,0x3FF46}, + [I(65,105)] = {11,0x426}, + [I(66,105)] = {12,0xBA6}, + [I(67,105)] = {12,0xBC6}, + [I(68,105)] = {12,0xBE6}, + [I(69,105)] = {12,0xC06}, + [I(70,105)] = {12,0xC26}, + [I(71,105)] = {12,0xC46}, + [I(72,105)] = {12,0xC66}, + [I(73,105)] = {12,0xC86}, + [I(74,105)] = {12,0xCA6}, + [I(75,105)] = {12,0xCC6}, + [I(76,105)] = {12,0xCE6}, + [I(77,105)] = {12,0xD06}, + [I(78,105)] = {12,0xD26}, + [I(79,105)] = {12,0xD46}, + [I(80,105)] = {12,0xD66}, + [I(81,105)] = {12,0xD86}, + [I(82,105)] = {12,0xDA6}, + [I(83,105)] = {12,0xDC6}, + [I(84,105)] = {12,0xDE6}, + [I(85,105)] = {12,0xE06}, + [I(86,105)] = {12,0xE26}, + [I(87,105)] = {12,0xE46}, + [I(88,105)] = {13,0x1F86}, + [I(89,105)] = {12,0xE66}, + [I(90,105)] = {13,0x1FA6}, + [I(91,105)] = {18,0x3FF66}, + [I(92,105)] = {24,0xFFFE06}, + [I(93,105)] = {18,0x3FF86}, + [I(94,105)] = {19,0x7FF86}, + [I(95,105)] = {11,0x446}, + [I(96,105)] = {20,0xFFFA6}, + [I(97,105)] = {10,0x66}, + [I(98,105)] = {11,0x466}, + [I(99,105)] = {10,0x86}, + [I(100,105)] = {11,0x486}, + [I(101,105)] = {10,0xA6}, + [I(102,105)] = {11,0x4A6}, + [I(103,105)] = {11,0x4C6}, + [I(104,105)] = {11,0x4E6}, + [I(105,105)] = {10,0xC6}, + [I(106,105)] = {12,0xE86}, + [I(107,105)] = {12,0xEA6}, + [I(108,105)] = {11,0x506}, + [I(109,105)] = {11,0x526}, + [I(110,105)] = {11,0x546}, + [I(111,105)] = {10,0xE6}, + [I(112,105)] = {11,0x566}, + [I(113,105)] = {12,0xEC6}, + [I(114,105)] = {11,0x586}, + [I(115,105)] = {10,0x106}, + [I(116,105)] = {10,0x126}, + [I(117,105)] = {11,0x5A6}, + [I(118,105)] = {12,0xEE6}, + [I(119,105)] = {12,0xF06}, + [I(120,105)] = {12,0xF26}, + [I(121,105)] = {12,0xF46}, + [I(122,105)] = {12,0xF66}, + [I(123,105)] = {20,0xFFFC6}, + [I(124,105)] = {16,0xFF86}, + [I(125,105)] = {19,0x7FFA6}, + [I(126,105)] = {18,0x3FFA6}, + [I(127,105)] = {64,0}, + [I(128,105)] = {25,0x1FFFCC6}, + [I(129,105)] = {27,0x7FFFA46}, + [I(130,105)] = {25,0x1FFFCE6}, + [I(131,105)] = {25,0x1FFFD06}, + [I(132,105)] = {27,0x7FFFA66}, + [I(133,105)] = {27,0x7FFFA86}, + [I(134,105)] = {27,0x7FFFAA6}, + [I(135,105)] = {28,0xFFFFB26}, + [I(136,105)] = {27,0x7FFFAC6}, + [I(137,105)] = {28,0xFFFFB46}, + [I(138,105)] = {28,0xFFFFB66}, + [I(139,105)] = {28,0xFFFFB86}, + [I(140,105)] = {28,0xFFFFBA6}, + [I(141,105)] = {28,0xFFFFBC6}, + [I(142,105)] = {29,0x1FFFFD66}, + [I(143,105)] = {28,0xFFFFBE6}, + [I(144,105)] = {29,0x1FFFFD86}, + [I(145,105)] = {29,0x1FFFFDA6}, + [I(146,105)] = {27,0x7FFFAE6}, + [I(147,105)] = {28,0xFFFFC06}, + [I(148,105)] = {29,0x1FFFFDC6}, + [I(149,105)] = {28,0xFFFFC26}, + [I(150,105)] = {28,0xFFFFC46}, + [I(151,105)] = {28,0xFFFFC66}, + [I(152,105)] = {28,0xFFFFC86}, + [I(153,105)] = {26,0x3FFFB86}, + [I(154,105)] = {27,0x7FFFB06}, + [I(155,105)] = {28,0xFFFFCA6}, + [I(156,105)] = {27,0x7FFFB26}, + [I(157,105)] = {28,0xFFFFCC6}, + [I(158,105)] = {28,0xFFFFCE6}, + [I(159,105)] = {29,0x1FFFFDE6}, + [I(160,105)] = {27,0x7FFFB46}, + [I(161,105)] = {26,0x3FFFBA6}, + [I(162,105)] = {25,0x1FFFD26}, + [I(163,105)] = {27,0x7FFFB66}, + [I(164,105)] = {27,0x7FFFB86}, + [I(165,105)] = {28,0xFFFFD06}, + [I(166,105)] = {28,0xFFFFD26}, + [I(167,105)] = {26,0x3FFFBC6}, + [I(168,105)] = {28,0xFFFFD46}, + [I(169,105)] = {27,0x7FFFBA6}, + [I(170,105)] = {27,0x7FFFBC6}, + [I(171,105)] = {29,0x1FFFFE06}, + [I(172,105)] = {26,0x3FFFBE6}, + [I(173,105)] = {27,0x7FFFBE6}, + [I(174,105)] = {28,0xFFFFD66}, + [I(175,105)] = {28,0xFFFFD86}, + [I(176,105)] = {26,0x3FFFC06}, + [I(177,105)] = {26,0x3FFFC26}, + [I(178,105)] = {27,0x7FFFC06}, + [I(179,105)] = {26,0x3FFFC46}, + [I(180,105)] = {28,0xFFFFDA6}, + [I(181,105)] = {27,0x7FFFC26}, + [I(182,105)] = {28,0xFFFFDC6}, + [I(183,105)] = {28,0xFFFFDE6}, + [I(184,105)] = {25,0x1FFFD46}, + [I(185,105)] = {27,0x7FFFC46}, + [I(186,105)] = {27,0x7FFFC66}, + [I(187,105)] = {27,0x7FFFC86}, + [I(188,105)] = {28,0xFFFFE06}, + [I(189,105)] = {27,0x7FFFCA6}, + [I(190,105)] = {27,0x7FFFCC6}, + [I(191,105)] = {28,0xFFFFE26}, + [I(192,105)] = {31,0x7FFFFC06}, + [I(193,105)] = {31,0x7FFFFC26}, + [I(194,105)] = {25,0x1FFFD66}, + [I(195,105)] = {24,0xFFFE26}, + [I(196,105)] = {27,0x7FFFCE6}, + [I(197,105)] = {28,0xFFFFE46}, + [I(198,105)] = {27,0x7FFFD06}, + [I(199,105)] = {30,0x3FFFFD86}, + [I(200,105)] = {31,0x7FFFFC46}, + [I(201,105)] = {31,0x7FFFFC66}, + [I(202,105)] = {31,0x7FFFFC86}, + [I(203,105)] = {X32,0xFFFFFBC6}, + [I(204,105)] = {X32,0xFFFFFBE6}, + [I(205,105)] = {31,0x7FFFFCA6}, + [I(206,105)] = {29,0x1FFFFE26}, + [I(207,105)] = {30,0x3FFFFDA6}, + [I(208,105)] = {24,0xFFFE46}, + [I(209,105)] = {26,0x3FFFC66}, + [I(210,105)] = {31,0x7FFFFCC6}, + [I(211,105)] = {X32,0xFFFFFC06}, + [I(212,105)] = {X32,0xFFFFFC26}, + [I(213,105)] = {31,0x7FFFFCE6}, + [I(214,105)] = {X32,0xFFFFFC46}, + [I(215,105)] = {29,0x1FFFFE46}, + [I(216,105)] = {26,0x3FFFC86}, + [I(217,105)] = {26,0x3FFFCA6}, + [I(218,105)] = {31,0x7FFFFD06}, + [I(219,105)] = {31,0x7FFFFD26}, + [I(220,105)] = {64,0}, + [I(221,105)] = {X32,0xFFFFFC66}, + [I(222,105)] = {X32,0xFFFFFC86}, + [I(223,105)] = {X32,0xFFFFFCA6}, + [I(224,105)] = {25,0x1FFFD86}, + [I(225,105)] = {29,0x1FFFFE66}, + [I(226,105)] = {25,0x1FFFDA6}, + [I(227,105)] = {26,0x3FFFCC6}, + [I(228,105)] = {27,0x7FFFD26}, + [I(229,105)] = {26,0x3FFFCE6}, + [I(230,105)] = {26,0x3FFFD06}, + [I(231,105)] = {28,0xFFFFE66}, + [I(232,105)] = {27,0x7FFFD46}, + [I(233,105)] = {27,0x7FFFD66}, + [I(234,105)] = {30,0x3FFFFDC6}, + [I(235,105)] = {30,0x3FFFFDE6}, + [I(236,105)] = {29,0x1FFFFE86}, + [I(237,105)] = {29,0x1FFFFEA6}, + [I(238,105)] = {31,0x7FFFFD46}, + [I(239,105)] = {28,0xFFFFE86}, + [I(240,105)] = {31,0x7FFFFD66}, + [I(241,105)] = {X32,0xFFFFFCC6}, + [I(242,105)] = {31,0x7FFFFD86}, + [I(243,105)] = {31,0x7FFFFDA6}, + [I(244,105)] = {X32,0xFFFFFCE6}, + [I(245,105)] = {X32,0xFFFFFD06}, + [I(246,105)] = {X32,0xFFFFFD26}, + [I(247,105)] = {X32,0xFFFFFD46}, + [I(248,105)] = {X32,0xFFFFFD66}, + [I(249,105)] = {64,0}, + [I(250,105)] = {X32,0xFFFFFD86}, + [I(251,105)] = {X32,0xFFFFFDA6}, + [I(252,105)] = {X32,0xFFFFFDC6}, + [I(253,105)] = {X32,0xFFFFFDE6}, + [I(254,105)] = {X32,0xFFFFFE06}, + [I(255,105)] = {31,0x7FFFFDC6}, + [I(0,106)] = {20,0xFFC74}, + [I(1,106)] = {30,0x3FFFEC74}, + [I(2,106)] = {64,0}, + [I(3,106)] = {64,0}, + [I(4,106)] = {64,0}, + [I(5,106)] = {64,0}, + [I(6,106)] = {64,0}, + [I(7,106)] = {64,0}, + [I(8,106)] = {64,0}, + [I(9,106)] = {31,0x7FFFF574}, + [I(10,106)] = {64,0}, + [I(11,106)] = {64,0}, + [I(12,106)] = {64,0}, + [I(13,106)] = {64,0}, + [I(14,106)] = {64,0}, + [I(15,106)] = {64,0}, + [I(16,106)] = {64,0}, + [I(17,106)] = {64,0}, + [I(18,106)] = {64,0}, + [I(19,106)] = {64,0}, + [I(20,106)] = {64,0}, + [I(21,106)] = {64,0}, + [I(22,106)] = {64,0}, + [I(23,106)] = {64,0}, + [I(24,106)] = {64,0}, + [I(25,106)] = {64,0}, + [I(26,106)] = {64,0}, + [I(27,106)] = {64,0}, + [I(28,106)] = {64,0}, + [I(29,106)] = {64,0}, + [I(30,106)] = {64,0}, + [I(31,106)] = {64,0}, + [I(32,106)] = {13,0xA74}, + [I(33,106)] = {17,0x1FC74}, + [I(34,106)] = {17,0x1FCF4}, + [I(35,106)] = {19,0x7FD74}, + [I(36,106)] = {20,0xFFCF4}, + [I(37,106)] = {13,0xAF4}, + [I(38,106)] = {15,0x7C74}, + [I(39,106)] = {18,0x3FD74}, + [I(40,106)] = {17,0x1FD74}, + [I(41,106)] = {17,0x1FDF4}, + [I(42,106)] = {15,0x7CF4}, + [I(43,106)] = {18,0x3FDF4}, + [I(44,106)] = {15,0x7D74}, + [I(45,106)] = {13,0xB74}, + [I(46,106)] = {13,0xBF4}, + [I(47,106)] = {13,0xC74}, + [I(48,106)] = {12,0x74}, + [I(49,106)] = {12,0xF4}, + [I(50,106)] = {12,0x174}, + [I(51,106)] = {13,0xCF4}, + [I(52,106)] = {13,0xD74}, + [I(53,106)] = {13,0xDF4}, + [I(54,106)] = {13,0xE74}, + [I(55,106)] = {13,0xEF4}, + [I(56,106)] = {13,0xF74}, + [I(57,106)] = {13,0xFF4}, + [I(58,106)] = {14,0x2E74}, + [I(59,106)] = {15,0x7DF4}, + [I(60,106)] = {22,0x3FFE74}, + [I(61,106)] = {13,0x1074}, + [I(62,106)] = {19,0x7FDF4}, + [I(63,106)] = {17,0x1FE74}, + [I(64,106)] = {20,0xFFD74}, + [I(65,106)] = {13,0x10F4}, + [I(66,106)] = {14,0x2EF4}, + [I(67,106)] = {14,0x2F74}, + [I(68,106)] = {14,0x2FF4}, + [I(69,106)] = {14,0x3074}, + [I(70,106)] = {14,0x30F4}, + [I(71,106)] = {14,0x3174}, + [I(72,106)] = {14,0x31F4}, + [I(73,106)] = {14,0x3274}, + [I(74,106)] = {14,0x32F4}, + [I(75,106)] = {14,0x3374}, + [I(76,106)] = {14,0x33F4}, + [I(77,106)] = {14,0x3474}, + [I(78,106)] = {14,0x34F4}, + [I(79,106)] = {14,0x3574}, + [I(80,106)] = {14,0x35F4}, + [I(81,106)] = {14,0x3674}, + [I(82,106)] = {14,0x36F4}, + [I(83,106)] = {14,0x3774}, + [I(84,106)] = {14,0x37F4}, + [I(85,106)] = {14,0x3874}, + [I(86,106)] = {14,0x38F4}, + [I(87,106)] = {14,0x3974}, + [I(88,106)] = {15,0x7E74}, + [I(89,106)] = {14,0x39F4}, + [I(90,106)] = {15,0x7EF4}, + [I(91,106)] = {20,0xFFDF4}, + [I(92,106)] = {26,0x3FFF874}, + [I(93,106)] = {20,0xFFE74}, + [I(94,106)] = {21,0x1FFE74}, + [I(95,106)] = {13,0x1174}, + [I(96,106)] = {22,0x3FFEF4}, + [I(97,106)] = {12,0x1F4}, + [I(98,106)] = {13,0x11F4}, + [I(99,106)] = {12,0x274}, + [I(100,106)] = {13,0x1274}, + [I(101,106)] = {12,0x2F4}, + [I(102,106)] = {13,0x12F4}, + [I(103,106)] = {13,0x1374}, + [I(104,106)] = {13,0x13F4}, + [I(105,106)] = {12,0x374}, + [I(106,106)] = {14,0x3A74}, + [I(107,106)] = {14,0x3AF4}, + [I(108,106)] = {13,0x1474}, + [I(109,106)] = {13,0x14F4}, + [I(110,106)] = {13,0x1574}, + [I(111,106)] = {12,0x3F4}, + [I(112,106)] = {13,0x15F4}, + [I(113,106)] = {14,0x3B74}, + [I(114,106)] = {13,0x1674}, + [I(115,106)] = {12,0x474}, + [I(116,106)] = {12,0x4F4}, + [I(117,106)] = {13,0x16F4}, + [I(118,106)] = {14,0x3BF4}, + [I(119,106)] = {14,0x3C74}, + [I(120,106)] = {14,0x3CF4}, + [I(121,106)] = {14,0x3D74}, + [I(122,106)] = {14,0x3DF4}, + [I(123,106)] = {22,0x3FFF74}, + [I(124,106)] = {18,0x3FE74}, + [I(125,106)] = {21,0x1FFEF4}, + [I(126,106)] = {20,0xFFEF4}, + [I(127,106)] = {64,0}, + [I(128,106)] = {27,0x7FFF374}, + [I(129,106)] = {29,0x1FFFE974}, + [I(130,106)] = {27,0x7FFF3F4}, + [I(131,106)] = {27,0x7FFF474}, + [I(132,106)] = {29,0x1FFFE9F4}, + [I(133,106)] = {29,0x1FFFEA74}, + [I(134,106)] = {29,0x1FFFEAF4}, + [I(135,106)] = {30,0x3FFFECF4}, + [I(136,106)] = {29,0x1FFFEB74}, + [I(137,106)] = {30,0x3FFFED74}, + [I(138,106)] = {30,0x3FFFEDF4}, + [I(139,106)] = {30,0x3FFFEE74}, + [I(140,106)] = {30,0x3FFFEEF4}, + [I(141,106)] = {30,0x3FFFEF74}, + [I(142,106)] = {31,0x7FFFF5F4}, + [I(143,106)] = {30,0x3FFFEFF4}, + [I(144,106)] = {31,0x7FFFF674}, + [I(145,106)] = {31,0x7FFFF6F4}, + [I(146,106)] = {29,0x1FFFEBF4}, + [I(147,106)] = {30,0x3FFFF074}, + [I(148,106)] = {31,0x7FFFF774}, + [I(149,106)] = {30,0x3FFFF0F4}, + [I(150,106)] = {30,0x3FFFF174}, + [I(151,106)] = {30,0x3FFFF1F4}, + [I(152,106)] = {30,0x3FFFF274}, + [I(153,106)] = {28,0xFFFEE74}, + [I(154,106)] = {29,0x1FFFEC74}, + [I(155,106)] = {30,0x3FFFF2F4}, + [I(156,106)] = {29,0x1FFFECF4}, + [I(157,106)] = {30,0x3FFFF374}, + [I(158,106)] = {30,0x3FFFF3F4}, + [I(159,106)] = {31,0x7FFFF7F4}, + [I(160,106)] = {29,0x1FFFED74}, + [I(161,106)] = {28,0xFFFEEF4}, + [I(162,106)] = {27,0x7FFF4F4}, + [I(163,106)] = {29,0x1FFFEDF4}, + [I(164,106)] = {29,0x1FFFEE74}, + [I(165,106)] = {30,0x3FFFF474}, + [I(166,106)] = {30,0x3FFFF4F4}, + [I(167,106)] = {28,0xFFFEF74}, + [I(168,106)] = {30,0x3FFFF574}, + [I(169,106)] = {29,0x1FFFEEF4}, + [I(170,106)] = {29,0x1FFFEF74}, + [I(171,106)] = {31,0x7FFFF874}, + [I(172,106)] = {28,0xFFFEFF4}, + [I(173,106)] = {29,0x1FFFEFF4}, + [I(174,106)] = {30,0x3FFFF5F4}, + [I(175,106)] = {30,0x3FFFF674}, + [I(176,106)] = {28,0xFFFF074}, + [I(177,106)] = {28,0xFFFF0F4}, + [I(178,106)] = {29,0x1FFFF074}, + [I(179,106)] = {28,0xFFFF174}, + [I(180,106)] = {30,0x3FFFF6F4}, + [I(181,106)] = {29,0x1FFFF0F4}, + [I(182,106)] = {30,0x3FFFF774}, + [I(183,106)] = {30,0x3FFFF7F4}, + [I(184,106)] = {27,0x7FFF574}, + [I(185,106)] = {29,0x1FFFF174}, + [I(186,106)] = {29,0x1FFFF1F4}, + [I(187,106)] = {29,0x1FFFF274}, + [I(188,106)] = {30,0x3FFFF874}, + [I(189,106)] = {29,0x1FFFF2F4}, + [I(190,106)] = {29,0x1FFFF374}, + [I(191,106)] = {30,0x3FFFF8F4}, + [I(192,106)] = {64,0}, + [I(193,106)] = {64,0}, + [I(194,106)] = {27,0x7FFF5F4}, + [I(195,106)] = {26,0x3FFF8F4}, + [I(196,106)] = {29,0x1FFFF3F4}, + [I(197,106)] = {30,0x3FFFF974}, + [I(198,106)] = {29,0x1FFFF474}, + [I(199,106)] = {X32,0xFFFFF674}, + [I(200,106)] = {64,0}, + [I(201,106)] = {64,0}, + [I(202,106)] = {64,0}, + [I(203,106)] = {64,0}, + [I(204,106)] = {64,0}, + [I(205,106)] = {64,0}, + [I(206,106)] = {31,0x7FFFF8F4}, + [I(207,106)] = {X32,0xFFFFF6F4}, + [I(208,106)] = {26,0x3FFF974}, + [I(209,106)] = {28,0xFFFF1F4}, + [I(210,106)] = {64,0}, + [I(211,106)] = {64,0}, + [I(212,106)] = {64,0}, + [I(213,106)] = {64,0}, + [I(214,106)] = {64,0}, + [I(215,106)] = {31,0x7FFFF974}, + [I(216,106)] = {28,0xFFFF274}, + [I(217,106)] = {28,0xFFFF2F4}, + [I(218,106)] = {64,0}, + [I(219,106)] = {64,0}, + [I(220,106)] = {64,0}, + [I(221,106)] = {64,0}, + [I(222,106)] = {64,0}, + [I(223,106)] = {64,0}, + [I(224,106)] = {27,0x7FFF674}, + [I(225,106)] = {31,0x7FFFF9F4}, + [I(226,106)] = {27,0x7FFF6F4}, + [I(227,106)] = {28,0xFFFF374}, + [I(228,106)] = {29,0x1FFFF4F4}, + [I(229,106)] = {28,0xFFFF3F4}, + [I(230,106)] = {28,0xFFFF474}, + [I(231,106)] = {30,0x3FFFF9F4}, + [I(232,106)] = {29,0x1FFFF574}, + [I(233,106)] = {29,0x1FFFF5F4}, + [I(234,106)] = {X32,0xFFFFF774}, + [I(235,106)] = {X32,0xFFFFF7F4}, + [I(236,106)] = {31,0x7FFFFA74}, + [I(237,106)] = {31,0x7FFFFAF4}, + [I(238,106)] = {64,0}, + [I(239,106)] = {30,0x3FFFFA74}, + [I(240,106)] = {64,0}, + [I(241,106)] = {64,0}, + [I(242,106)] = {64,0}, + [I(243,106)] = {64,0}, + [I(244,106)] = {64,0}, + [I(245,106)] = {64,0}, + [I(246,106)] = {64,0}, + [I(247,106)] = {64,0}, + [I(248,106)] = {64,0}, + [I(249,106)] = {64,0}, + [I(250,106)] = {64,0}, + [I(251,106)] = {64,0}, + [I(252,106)] = {64,0}, + [I(253,106)] = {64,0}, + [I(254,106)] = {64,0}, + [I(255,106)] = {64,0}, + [I(0,107)] = {20,0xFFC75}, + [I(1,107)] = {30,0x3FFFEC75}, + [I(2,107)] = {64,0}, + [I(3,107)] = {64,0}, + [I(4,107)] = {64,0}, + [I(5,107)] = {64,0}, + [I(6,107)] = {64,0}, + [I(7,107)] = {64,0}, + [I(8,107)] = {64,0}, + [I(9,107)] = {31,0x7FFFF575}, + [I(10,107)] = {64,0}, + [I(11,107)] = {64,0}, + [I(12,107)] = {64,0}, + [I(13,107)] = {64,0}, + [I(14,107)] = {64,0}, + [I(15,107)] = {64,0}, + [I(16,107)] = {64,0}, + [I(17,107)] = {64,0}, + [I(18,107)] = {64,0}, + [I(19,107)] = {64,0}, + [I(20,107)] = {64,0}, + [I(21,107)] = {64,0}, + [I(22,107)] = {64,0}, + [I(23,107)] = {64,0}, + [I(24,107)] = {64,0}, + [I(25,107)] = {64,0}, + [I(26,107)] = {64,0}, + [I(27,107)] = {64,0}, + [I(28,107)] = {64,0}, + [I(29,107)] = {64,0}, + [I(30,107)] = {64,0}, + [I(31,107)] = {64,0}, + [I(32,107)] = {13,0xA75}, + [I(33,107)] = {17,0x1FC75}, + [I(34,107)] = {17,0x1FCF5}, + [I(35,107)] = {19,0x7FD75}, + [I(36,107)] = {20,0xFFCF5}, + [I(37,107)] = {13,0xAF5}, + [I(38,107)] = {15,0x7C75}, + [I(39,107)] = {18,0x3FD75}, + [I(40,107)] = {17,0x1FD75}, + [I(41,107)] = {17,0x1FDF5}, + [I(42,107)] = {15,0x7CF5}, + [I(43,107)] = {18,0x3FDF5}, + [I(44,107)] = {15,0x7D75}, + [I(45,107)] = {13,0xB75}, + [I(46,107)] = {13,0xBF5}, + [I(47,107)] = {13,0xC75}, + [I(48,107)] = {12,0x75}, + [I(49,107)] = {12,0xF5}, + [I(50,107)] = {12,0x175}, + [I(51,107)] = {13,0xCF5}, + [I(52,107)] = {13,0xD75}, + [I(53,107)] = {13,0xDF5}, + [I(54,107)] = {13,0xE75}, + [I(55,107)] = {13,0xEF5}, + [I(56,107)] = {13,0xF75}, + [I(57,107)] = {13,0xFF5}, + [I(58,107)] = {14,0x2E75}, + [I(59,107)] = {15,0x7DF5}, + [I(60,107)] = {22,0x3FFE75}, + [I(61,107)] = {13,0x1075}, + [I(62,107)] = {19,0x7FDF5}, + [I(63,107)] = {17,0x1FE75}, + [I(64,107)] = {20,0xFFD75}, + [I(65,107)] = {13,0x10F5}, + [I(66,107)] = {14,0x2EF5}, + [I(67,107)] = {14,0x2F75}, + [I(68,107)] = {14,0x2FF5}, + [I(69,107)] = {14,0x3075}, + [I(70,107)] = {14,0x30F5}, + [I(71,107)] = {14,0x3175}, + [I(72,107)] = {14,0x31F5}, + [I(73,107)] = {14,0x3275}, + [I(74,107)] = {14,0x32F5}, + [I(75,107)] = {14,0x3375}, + [I(76,107)] = {14,0x33F5}, + [I(77,107)] = {14,0x3475}, + [I(78,107)] = {14,0x34F5}, + [I(79,107)] = {14,0x3575}, + [I(80,107)] = {14,0x35F5}, + [I(81,107)] = {14,0x3675}, + [I(82,107)] = {14,0x36F5}, + [I(83,107)] = {14,0x3775}, + [I(84,107)] = {14,0x37F5}, + [I(85,107)] = {14,0x3875}, + [I(86,107)] = {14,0x38F5}, + [I(87,107)] = {14,0x3975}, + [I(88,107)] = {15,0x7E75}, + [I(89,107)] = {14,0x39F5}, + [I(90,107)] = {15,0x7EF5}, + [I(91,107)] = {20,0xFFDF5}, + [I(92,107)] = {26,0x3FFF875}, + [I(93,107)] = {20,0xFFE75}, + [I(94,107)] = {21,0x1FFE75}, + [I(95,107)] = {13,0x1175}, + [I(96,107)] = {22,0x3FFEF5}, + [I(97,107)] = {12,0x1F5}, + [I(98,107)] = {13,0x11F5}, + [I(99,107)] = {12,0x275}, + [I(100,107)] = {13,0x1275}, + [I(101,107)] = {12,0x2F5}, + [I(102,107)] = {13,0x12F5}, + [I(103,107)] = {13,0x1375}, + [I(104,107)] = {13,0x13F5}, + [I(105,107)] = {12,0x375}, + [I(106,107)] = {14,0x3A75}, + [I(107,107)] = {14,0x3AF5}, + [I(108,107)] = {13,0x1475}, + [I(109,107)] = {13,0x14F5}, + [I(110,107)] = {13,0x1575}, + [I(111,107)] = {12,0x3F5}, + [I(112,107)] = {13,0x15F5}, + [I(113,107)] = {14,0x3B75}, + [I(114,107)] = {13,0x1675}, + [I(115,107)] = {12,0x475}, + [I(116,107)] = {12,0x4F5}, + [I(117,107)] = {13,0x16F5}, + [I(118,107)] = {14,0x3BF5}, + [I(119,107)] = {14,0x3C75}, + [I(120,107)] = {14,0x3CF5}, + [I(121,107)] = {14,0x3D75}, + [I(122,107)] = {14,0x3DF5}, + [I(123,107)] = {22,0x3FFF75}, + [I(124,107)] = {18,0x3FE75}, + [I(125,107)] = {21,0x1FFEF5}, + [I(126,107)] = {20,0xFFEF5}, + [I(127,107)] = {64,0}, + [I(128,107)] = {27,0x7FFF375}, + [I(129,107)] = {29,0x1FFFE975}, + [I(130,107)] = {27,0x7FFF3F5}, + [I(131,107)] = {27,0x7FFF475}, + [I(132,107)] = {29,0x1FFFE9F5}, + [I(133,107)] = {29,0x1FFFEA75}, + [I(134,107)] = {29,0x1FFFEAF5}, + [I(135,107)] = {30,0x3FFFECF5}, + [I(136,107)] = {29,0x1FFFEB75}, + [I(137,107)] = {30,0x3FFFED75}, + [I(138,107)] = {30,0x3FFFEDF5}, + [I(139,107)] = {30,0x3FFFEE75}, + [I(140,107)] = {30,0x3FFFEEF5}, + [I(141,107)] = {30,0x3FFFEF75}, + [I(142,107)] = {31,0x7FFFF5F5}, + [I(143,107)] = {30,0x3FFFEFF5}, + [I(144,107)] = {31,0x7FFFF675}, + [I(145,107)] = {31,0x7FFFF6F5}, + [I(146,107)] = {29,0x1FFFEBF5}, + [I(147,107)] = {30,0x3FFFF075}, + [I(148,107)] = {31,0x7FFFF775}, + [I(149,107)] = {30,0x3FFFF0F5}, + [I(150,107)] = {30,0x3FFFF175}, + [I(151,107)] = {30,0x3FFFF1F5}, + [I(152,107)] = {30,0x3FFFF275}, + [I(153,107)] = {28,0xFFFEE75}, + [I(154,107)] = {29,0x1FFFEC75}, + [I(155,107)] = {30,0x3FFFF2F5}, + [I(156,107)] = {29,0x1FFFECF5}, + [I(157,107)] = {30,0x3FFFF375}, + [I(158,107)] = {30,0x3FFFF3F5}, + [I(159,107)] = {31,0x7FFFF7F5}, + [I(160,107)] = {29,0x1FFFED75}, + [I(161,107)] = {28,0xFFFEEF5}, + [I(162,107)] = {27,0x7FFF4F5}, + [I(163,107)] = {29,0x1FFFEDF5}, + [I(164,107)] = {29,0x1FFFEE75}, + [I(165,107)] = {30,0x3FFFF475}, + [I(166,107)] = {30,0x3FFFF4F5}, + [I(167,107)] = {28,0xFFFEF75}, + [I(168,107)] = {30,0x3FFFF575}, + [I(169,107)] = {29,0x1FFFEEF5}, + [I(170,107)] = {29,0x1FFFEF75}, + [I(171,107)] = {31,0x7FFFF875}, + [I(172,107)] = {28,0xFFFEFF5}, + [I(173,107)] = {29,0x1FFFEFF5}, + [I(174,107)] = {30,0x3FFFF5F5}, + [I(175,107)] = {30,0x3FFFF675}, + [I(176,107)] = {28,0xFFFF075}, + [I(177,107)] = {28,0xFFFF0F5}, + [I(178,107)] = {29,0x1FFFF075}, + [I(179,107)] = {28,0xFFFF175}, + [I(180,107)] = {30,0x3FFFF6F5}, + [I(181,107)] = {29,0x1FFFF0F5}, + [I(182,107)] = {30,0x3FFFF775}, + [I(183,107)] = {30,0x3FFFF7F5}, + [I(184,107)] = {27,0x7FFF575}, + [I(185,107)] = {29,0x1FFFF175}, + [I(186,107)] = {29,0x1FFFF1F5}, + [I(187,107)] = {29,0x1FFFF275}, + [I(188,107)] = {30,0x3FFFF875}, + [I(189,107)] = {29,0x1FFFF2F5}, + [I(190,107)] = {29,0x1FFFF375}, + [I(191,107)] = {30,0x3FFFF8F5}, + [I(192,107)] = {64,0}, + [I(193,107)] = {64,0}, + [I(194,107)] = {27,0x7FFF5F5}, + [I(195,107)] = {26,0x3FFF8F5}, + [I(196,107)] = {29,0x1FFFF3F5}, + [I(197,107)] = {30,0x3FFFF975}, + [I(198,107)] = {29,0x1FFFF475}, + [I(199,107)] = {X32,0xFFFFF675}, + [I(200,107)] = {64,0}, + [I(201,107)] = {64,0}, + [I(202,107)] = {64,0}, + [I(203,107)] = {64,0}, + [I(204,107)] = {64,0}, + [I(205,107)] = {64,0}, + [I(206,107)] = {31,0x7FFFF8F5}, + [I(207,107)] = {X32,0xFFFFF6F5}, + [I(208,107)] = {26,0x3FFF975}, + [I(209,107)] = {28,0xFFFF1F5}, + [I(210,107)] = {64,0}, + [I(211,107)] = {64,0}, + [I(212,107)] = {64,0}, + [I(213,107)] = {64,0}, + [I(214,107)] = {64,0}, + [I(215,107)] = {31,0x7FFFF975}, + [I(216,107)] = {28,0xFFFF275}, + [I(217,107)] = {28,0xFFFF2F5}, + [I(218,107)] = {64,0}, + [I(219,107)] = {64,0}, + [I(220,107)] = {64,0}, + [I(221,107)] = {64,0}, + [I(222,107)] = {64,0}, + [I(223,107)] = {64,0}, + [I(224,107)] = {27,0x7FFF675}, + [I(225,107)] = {31,0x7FFFF9F5}, + [I(226,107)] = {27,0x7FFF6F5}, + [I(227,107)] = {28,0xFFFF375}, + [I(228,107)] = {29,0x1FFFF4F5}, + [I(229,107)] = {28,0xFFFF3F5}, + [I(230,107)] = {28,0xFFFF475}, + [I(231,107)] = {30,0x3FFFF9F5}, + [I(232,107)] = {29,0x1FFFF575}, + [I(233,107)] = {29,0x1FFFF5F5}, + [I(234,107)] = {X32,0xFFFFF775}, + [I(235,107)] = {X32,0xFFFFF7F5}, + [I(236,107)] = {31,0x7FFFFA75}, + [I(237,107)] = {31,0x7FFFFAF5}, + [I(238,107)] = {64,0}, + [I(239,107)] = {30,0x3FFFFA75}, + [I(240,107)] = {64,0}, + [I(241,107)] = {64,0}, + [I(242,107)] = {64,0}, + [I(243,107)] = {64,0}, + [I(244,107)] = {64,0}, + [I(245,107)] = {64,0}, + [I(246,107)] = {64,0}, + [I(247,107)] = {64,0}, + [I(248,107)] = {64,0}, + [I(249,107)] = {64,0}, + [I(250,107)] = {64,0}, + [I(251,107)] = {64,0}, + [I(252,107)] = {64,0}, + [I(253,107)] = {64,0}, + [I(254,107)] = {64,0}, + [I(255,107)] = {64,0}, + [I(0,108)] = {19,0x7FE28}, + [I(1,108)] = {29,0x1FFFF628}, + [I(2,108)] = {64,0}, + [I(3,108)] = {64,0}, + [I(4,108)] = {64,0}, + [I(5,108)] = {64,0}, + [I(6,108)] = {64,0}, + [I(7,108)] = {64,0}, + [I(8,108)] = {64,0}, + [I(9,108)] = {30,0x3FFFFAA8}, + [I(10,108)] = {64,0}, + [I(11,108)] = {64,0}, + [I(12,108)] = {64,0}, + [I(13,108)] = {64,0}, + [I(14,108)] = {64,0}, + [I(15,108)] = {64,0}, + [I(16,108)] = {64,0}, + [I(17,108)] = {64,0}, + [I(18,108)] = {64,0}, + [I(19,108)] = {64,0}, + [I(20,108)] = {64,0}, + [I(21,108)] = {64,0}, + [I(22,108)] = {64,0}, + [I(23,108)] = {64,0}, + [I(24,108)] = {64,0}, + [I(25,108)] = {64,0}, + [I(26,108)] = {64,0}, + [I(27,108)] = {64,0}, + [I(28,108)] = {64,0}, + [I(29,108)] = {64,0}, + [I(30,108)] = {64,0}, + [I(31,108)] = {64,0}, + [I(32,108)] = {12,0x528}, + [I(33,108)] = {16,0xFE28}, + [I(34,108)] = {16,0xFE68}, + [I(35,108)] = {18,0x3FEA8}, + [I(36,108)] = {19,0x7FE68}, + [I(37,108)] = {12,0x568}, + [I(38,108)] = {14,0x3E28}, + [I(39,108)] = {17,0x1FEA8}, + [I(40,108)] = {16,0xFEA8}, + [I(41,108)] = {16,0xFEE8}, + [I(42,108)] = {14,0x3E68}, + [I(43,108)] = {17,0x1FEE8}, + [I(44,108)] = {14,0x3EA8}, + [I(45,108)] = {12,0x5A8}, + [I(46,108)] = {12,0x5E8}, + [I(47,108)] = {12,0x628}, + [I(48,108)] = {11,0x28}, + [I(49,108)] = {11,0x68}, + [I(50,108)] = {11,0xA8}, + [I(51,108)] = {12,0x668}, + [I(52,108)] = {12,0x6A8}, + [I(53,108)] = {12,0x6E8}, + [I(54,108)] = {12,0x728}, + [I(55,108)] = {12,0x768}, + [I(56,108)] = {12,0x7A8}, + [I(57,108)] = {12,0x7E8}, + [I(58,108)] = {13,0x1728}, + [I(59,108)] = {14,0x3EE8}, + [I(60,108)] = {21,0x1FFF28}, + [I(61,108)] = {12,0x828}, + [I(62,108)] = {18,0x3FEE8}, + [I(63,108)] = {16,0xFF28}, + [I(64,108)] = {19,0x7FEA8}, + [I(65,108)] = {12,0x868}, + [I(66,108)] = {13,0x1768}, + [I(67,108)] = {13,0x17A8}, + [I(68,108)] = {13,0x17E8}, + [I(69,108)] = {13,0x1828}, + [I(70,108)] = {13,0x1868}, + [I(71,108)] = {13,0x18A8}, + [I(72,108)] = {13,0x18E8}, + [I(73,108)] = {13,0x1928}, + [I(74,108)] = {13,0x1968}, + [I(75,108)] = {13,0x19A8}, + [I(76,108)] = {13,0x19E8}, + [I(77,108)] = {13,0x1A28}, + [I(78,108)] = {13,0x1A68}, + [I(79,108)] = {13,0x1AA8}, + [I(80,108)] = {13,0x1AE8}, + [I(81,108)] = {13,0x1B28}, + [I(82,108)] = {13,0x1B68}, + [I(83,108)] = {13,0x1BA8}, + [I(84,108)] = {13,0x1BE8}, + [I(85,108)] = {13,0x1C28}, + [I(86,108)] = {13,0x1C68}, + [I(87,108)] = {13,0x1CA8}, + [I(88,108)] = {14,0x3F28}, + [I(89,108)] = {13,0x1CE8}, + [I(90,108)] = {14,0x3F68}, + [I(91,108)] = {19,0x7FEE8}, + [I(92,108)] = {25,0x1FFFC28}, + [I(93,108)] = {19,0x7FF28}, + [I(94,108)] = {20,0xFFF28}, + [I(95,108)] = {12,0x8A8}, + [I(96,108)] = {21,0x1FFF68}, + [I(97,108)] = {11,0xE8}, + [I(98,108)] = {12,0x8E8}, + [I(99,108)] = {11,0x128}, + [I(100,108)] = {12,0x928}, + [I(101,108)] = {11,0x168}, + [I(102,108)] = {12,0x968}, + [I(103,108)] = {12,0x9A8}, + [I(104,108)] = {12,0x9E8}, + [I(105,108)] = {11,0x1A8}, + [I(106,108)] = {13,0x1D28}, + [I(107,108)] = {13,0x1D68}, + [I(108,108)] = {12,0xA28}, + [I(109,108)] = {12,0xA68}, + [I(110,108)] = {12,0xAA8}, + [I(111,108)] = {11,0x1E8}, + [I(112,108)] = {12,0xAE8}, + [I(113,108)] = {13,0x1DA8}, + [I(114,108)] = {12,0xB28}, + [I(115,108)] = {11,0x228}, + [I(116,108)] = {11,0x268}, + [I(117,108)] = {12,0xB68}, + [I(118,108)] = {13,0x1DE8}, + [I(119,108)] = {13,0x1E28}, + [I(120,108)] = {13,0x1E68}, + [I(121,108)] = {13,0x1EA8}, + [I(122,108)] = {13,0x1EE8}, + [I(123,108)] = {21,0x1FFFA8}, + [I(124,108)] = {17,0x1FF28}, + [I(125,108)] = {20,0xFFF68}, + [I(126,108)] = {19,0x7FF68}, + [I(127,108)] = {64,0}, + [I(128,108)] = {26,0x3FFF9A8}, + [I(129,108)] = {28,0xFFFF4A8}, + [I(130,108)] = {26,0x3FFF9E8}, + [I(131,108)] = {26,0x3FFFA28}, + [I(132,108)] = {28,0xFFFF4E8}, + [I(133,108)] = {28,0xFFFF528}, + [I(134,108)] = {28,0xFFFF568}, + [I(135,108)] = {29,0x1FFFF668}, + [I(136,108)] = {28,0xFFFF5A8}, + [I(137,108)] = {29,0x1FFFF6A8}, + [I(138,108)] = {29,0x1FFFF6E8}, + [I(139,108)] = {29,0x1FFFF728}, + [I(140,108)] = {29,0x1FFFF768}, + [I(141,108)] = {29,0x1FFFF7A8}, + [I(142,108)] = {30,0x3FFFFAE8}, + [I(143,108)] = {29,0x1FFFF7E8}, + [I(144,108)] = {30,0x3FFFFB28}, + [I(145,108)] = {30,0x3FFFFB68}, + [I(146,108)] = {28,0xFFFF5E8}, + [I(147,108)] = {29,0x1FFFF828}, + [I(148,108)] = {30,0x3FFFFBA8}, + [I(149,108)] = {29,0x1FFFF868}, + [I(150,108)] = {29,0x1FFFF8A8}, + [I(151,108)] = {29,0x1FFFF8E8}, + [I(152,108)] = {29,0x1FFFF928}, + [I(153,108)] = {27,0x7FFF728}, + [I(154,108)] = {28,0xFFFF628}, + [I(155,108)] = {29,0x1FFFF968}, + [I(156,108)] = {28,0xFFFF668}, + [I(157,108)] = {29,0x1FFFF9A8}, + [I(158,108)] = {29,0x1FFFF9E8}, + [I(159,108)] = {30,0x3FFFFBE8}, + [I(160,108)] = {28,0xFFFF6A8}, + [I(161,108)] = {27,0x7FFF768}, + [I(162,108)] = {26,0x3FFFA68}, + [I(163,108)] = {28,0xFFFF6E8}, + [I(164,108)] = {28,0xFFFF728}, + [I(165,108)] = {29,0x1FFFFA28}, + [I(166,108)] = {29,0x1FFFFA68}, + [I(167,108)] = {27,0x7FFF7A8}, + [I(168,108)] = {29,0x1FFFFAA8}, + [I(169,108)] = {28,0xFFFF768}, + [I(170,108)] = {28,0xFFFF7A8}, + [I(171,108)] = {30,0x3FFFFC28}, + [I(172,108)] = {27,0x7FFF7E8}, + [I(173,108)] = {28,0xFFFF7E8}, + [I(174,108)] = {29,0x1FFFFAE8}, + [I(175,108)] = {29,0x1FFFFB28}, + [I(176,108)] = {27,0x7FFF828}, + [I(177,108)] = {27,0x7FFF868}, + [I(178,108)] = {28,0xFFFF828}, + [I(179,108)] = {27,0x7FFF8A8}, + [I(180,108)] = {29,0x1FFFFB68}, + [I(181,108)] = {28,0xFFFF868}, + [I(182,108)] = {29,0x1FFFFBA8}, + [I(183,108)] = {29,0x1FFFFBE8}, + [I(184,108)] = {26,0x3FFFAA8}, + [I(185,108)] = {28,0xFFFF8A8}, + [I(186,108)] = {28,0xFFFF8E8}, + [I(187,108)] = {28,0xFFFF928}, + [I(188,108)] = {29,0x1FFFFC28}, + [I(189,108)] = {28,0xFFFF968}, + [I(190,108)] = {28,0xFFFF9A8}, + [I(191,108)] = {29,0x1FFFFC68}, + [I(192,108)] = {X32,0xFFFFF828}, + [I(193,108)] = {X32,0xFFFFF868}, + [I(194,108)] = {26,0x3FFFAE8}, + [I(195,108)] = {25,0x1FFFC68}, + [I(196,108)] = {28,0xFFFF9E8}, + [I(197,108)] = {29,0x1FFFFCA8}, + [I(198,108)] = {28,0xFFFFA28}, + [I(199,108)] = {31,0x7FFFFB28}, + [I(200,108)] = {X32,0xFFFFF8A8}, + [I(201,108)] = {X32,0xFFFFF8E8}, + [I(202,108)] = {X32,0xFFFFF928}, + [I(203,108)] = {64,0}, + [I(204,108)] = {64,0}, + [I(205,108)] = {X32,0xFFFFF968}, + [I(206,108)] = {30,0x3FFFFC68}, + [I(207,108)] = {31,0x7FFFFB68}, + [I(208,108)] = {25,0x1FFFCA8}, + [I(209,108)] = {27,0x7FFF8E8}, + [I(210,108)] = {X32,0xFFFFF9A8}, + [I(211,108)] = {64,0}, + [I(212,108)] = {64,0}, + [I(213,108)] = {X32,0xFFFFF9E8}, + [I(214,108)] = {64,0}, + [I(215,108)] = {30,0x3FFFFCA8}, + [I(216,108)] = {27,0x7FFF928}, + [I(217,108)] = {27,0x7FFF968}, + [I(218,108)] = {X32,0xFFFFFA28}, + [I(219,108)] = {X32,0xFFFFFA68}, + [I(220,108)] = {64,0}, + [I(221,108)] = {64,0}, + [I(222,108)] = {64,0}, + [I(223,108)] = {64,0}, + [I(224,108)] = {26,0x3FFFB28}, + [I(225,108)] = {30,0x3FFFFCE8}, + [I(226,108)] = {26,0x3FFFB68}, + [I(227,108)] = {27,0x7FFF9A8}, + [I(228,108)] = {28,0xFFFFA68}, + [I(229,108)] = {27,0x7FFF9E8}, + [I(230,108)] = {27,0x7FFFA28}, + [I(231,108)] = {29,0x1FFFFCE8}, + [I(232,108)] = {28,0xFFFFAA8}, + [I(233,108)] = {28,0xFFFFAE8}, + [I(234,108)] = {31,0x7FFFFBA8}, + [I(235,108)] = {31,0x7FFFFBE8}, + [I(236,108)] = {30,0x3FFFFD28}, + [I(237,108)] = {30,0x3FFFFD68}, + [I(238,108)] = {X32,0xFFFFFAA8}, + [I(239,108)] = {29,0x1FFFFD28}, + [I(240,108)] = {X32,0xFFFFFAE8}, + [I(241,108)] = {64,0}, + [I(242,108)] = {X32,0xFFFFFB28}, + [I(243,108)] = {X32,0xFFFFFB68}, + [I(244,108)] = {64,0}, + [I(245,108)] = {64,0}, + [I(246,108)] = {64,0}, + [I(247,108)] = {64,0}, + [I(248,108)] = {64,0}, + [I(249,108)] = {64,0}, + [I(250,108)] = {64,0}, + [I(251,108)] = {64,0}, + [I(252,108)] = {64,0}, + [I(253,108)] = {64,0}, + [I(254,108)] = {64,0}, + [I(255,108)] = {X32,0xFFFFFBA8}, + [I(0,109)] = {19,0x7FE29}, + [I(1,109)] = {29,0x1FFFF629}, + [I(2,109)] = {64,0}, + [I(3,109)] = {64,0}, + [I(4,109)] = {64,0}, + [I(5,109)] = {64,0}, + [I(6,109)] = {64,0}, + [I(7,109)] = {64,0}, + [I(8,109)] = {64,0}, + [I(9,109)] = {30,0x3FFFFAA9}, + [I(10,109)] = {64,0}, + [I(11,109)] = {64,0}, + [I(12,109)] = {64,0}, + [I(13,109)] = {64,0}, + [I(14,109)] = {64,0}, + [I(15,109)] = {64,0}, + [I(16,109)] = {64,0}, + [I(17,109)] = {64,0}, + [I(18,109)] = {64,0}, + [I(19,109)] = {64,0}, + [I(20,109)] = {64,0}, + [I(21,109)] = {64,0}, + [I(22,109)] = {64,0}, + [I(23,109)] = {64,0}, + [I(24,109)] = {64,0}, + [I(25,109)] = {64,0}, + [I(26,109)] = {64,0}, + [I(27,109)] = {64,0}, + [I(28,109)] = {64,0}, + [I(29,109)] = {64,0}, + [I(30,109)] = {64,0}, + [I(31,109)] = {64,0}, + [I(32,109)] = {12,0x529}, + [I(33,109)] = {16,0xFE29}, + [I(34,109)] = {16,0xFE69}, + [I(35,109)] = {18,0x3FEA9}, + [I(36,109)] = {19,0x7FE69}, + [I(37,109)] = {12,0x569}, + [I(38,109)] = {14,0x3E29}, + [I(39,109)] = {17,0x1FEA9}, + [I(40,109)] = {16,0xFEA9}, + [I(41,109)] = {16,0xFEE9}, + [I(42,109)] = {14,0x3E69}, + [I(43,109)] = {17,0x1FEE9}, + [I(44,109)] = {14,0x3EA9}, + [I(45,109)] = {12,0x5A9}, + [I(46,109)] = {12,0x5E9}, + [I(47,109)] = {12,0x629}, + [I(48,109)] = {11,0x29}, + [I(49,109)] = {11,0x69}, + [I(50,109)] = {11,0xA9}, + [I(51,109)] = {12,0x669}, + [I(52,109)] = {12,0x6A9}, + [I(53,109)] = {12,0x6E9}, + [I(54,109)] = {12,0x729}, + [I(55,109)] = {12,0x769}, + [I(56,109)] = {12,0x7A9}, + [I(57,109)] = {12,0x7E9}, + [I(58,109)] = {13,0x1729}, + [I(59,109)] = {14,0x3EE9}, + [I(60,109)] = {21,0x1FFF29}, + [I(61,109)] = {12,0x829}, + [I(62,109)] = {18,0x3FEE9}, + [I(63,109)] = {16,0xFF29}, + [I(64,109)] = {19,0x7FEA9}, + [I(65,109)] = {12,0x869}, + [I(66,109)] = {13,0x1769}, + [I(67,109)] = {13,0x17A9}, + [I(68,109)] = {13,0x17E9}, + [I(69,109)] = {13,0x1829}, + [I(70,109)] = {13,0x1869}, + [I(71,109)] = {13,0x18A9}, + [I(72,109)] = {13,0x18E9}, + [I(73,109)] = {13,0x1929}, + [I(74,109)] = {13,0x1969}, + [I(75,109)] = {13,0x19A9}, + [I(76,109)] = {13,0x19E9}, + [I(77,109)] = {13,0x1A29}, + [I(78,109)] = {13,0x1A69}, + [I(79,109)] = {13,0x1AA9}, + [I(80,109)] = {13,0x1AE9}, + [I(81,109)] = {13,0x1B29}, + [I(82,109)] = {13,0x1B69}, + [I(83,109)] = {13,0x1BA9}, + [I(84,109)] = {13,0x1BE9}, + [I(85,109)] = {13,0x1C29}, + [I(86,109)] = {13,0x1C69}, + [I(87,109)] = {13,0x1CA9}, + [I(88,109)] = {14,0x3F29}, + [I(89,109)] = {13,0x1CE9}, + [I(90,109)] = {14,0x3F69}, + [I(91,109)] = {19,0x7FEE9}, + [I(92,109)] = {25,0x1FFFC29}, + [I(93,109)] = {19,0x7FF29}, + [I(94,109)] = {20,0xFFF29}, + [I(95,109)] = {12,0x8A9}, + [I(96,109)] = {21,0x1FFF69}, + [I(97,109)] = {11,0xE9}, + [I(98,109)] = {12,0x8E9}, + [I(99,109)] = {11,0x129}, + [I(100,109)] = {12,0x929}, + [I(101,109)] = {11,0x169}, + [I(102,109)] = {12,0x969}, + [I(103,109)] = {12,0x9A9}, + [I(104,109)] = {12,0x9E9}, + [I(105,109)] = {11,0x1A9}, + [I(106,109)] = {13,0x1D29}, + [I(107,109)] = {13,0x1D69}, + [I(108,109)] = {12,0xA29}, + [I(109,109)] = {12,0xA69}, + [I(110,109)] = {12,0xAA9}, + [I(111,109)] = {11,0x1E9}, + [I(112,109)] = {12,0xAE9}, + [I(113,109)] = {13,0x1DA9}, + [I(114,109)] = {12,0xB29}, + [I(115,109)] = {11,0x229}, + [I(116,109)] = {11,0x269}, + [I(117,109)] = {12,0xB69}, + [I(118,109)] = {13,0x1DE9}, + [I(119,109)] = {13,0x1E29}, + [I(120,109)] = {13,0x1E69}, + [I(121,109)] = {13,0x1EA9}, + [I(122,109)] = {13,0x1EE9}, + [I(123,109)] = {21,0x1FFFA9}, + [I(124,109)] = {17,0x1FF29}, + [I(125,109)] = {20,0xFFF69}, + [I(126,109)] = {19,0x7FF69}, + [I(127,109)] = {64,0}, + [I(128,109)] = {26,0x3FFF9A9}, + [I(129,109)] = {28,0xFFFF4A9}, + [I(130,109)] = {26,0x3FFF9E9}, + [I(131,109)] = {26,0x3FFFA29}, + [I(132,109)] = {28,0xFFFF4E9}, + [I(133,109)] = {28,0xFFFF529}, + [I(134,109)] = {28,0xFFFF569}, + [I(135,109)] = {29,0x1FFFF669}, + [I(136,109)] = {28,0xFFFF5A9}, + [I(137,109)] = {29,0x1FFFF6A9}, + [I(138,109)] = {29,0x1FFFF6E9}, + [I(139,109)] = {29,0x1FFFF729}, + [I(140,109)] = {29,0x1FFFF769}, + [I(141,109)] = {29,0x1FFFF7A9}, + [I(142,109)] = {30,0x3FFFFAE9}, + [I(143,109)] = {29,0x1FFFF7E9}, + [I(144,109)] = {30,0x3FFFFB29}, + [I(145,109)] = {30,0x3FFFFB69}, + [I(146,109)] = {28,0xFFFF5E9}, + [I(147,109)] = {29,0x1FFFF829}, + [I(148,109)] = {30,0x3FFFFBA9}, + [I(149,109)] = {29,0x1FFFF869}, + [I(150,109)] = {29,0x1FFFF8A9}, + [I(151,109)] = {29,0x1FFFF8E9}, + [I(152,109)] = {29,0x1FFFF929}, + [I(153,109)] = {27,0x7FFF729}, + [I(154,109)] = {28,0xFFFF629}, + [I(155,109)] = {29,0x1FFFF969}, + [I(156,109)] = {28,0xFFFF669}, + [I(157,109)] = {29,0x1FFFF9A9}, + [I(158,109)] = {29,0x1FFFF9E9}, + [I(159,109)] = {30,0x3FFFFBE9}, + [I(160,109)] = {28,0xFFFF6A9}, + [I(161,109)] = {27,0x7FFF769}, + [I(162,109)] = {26,0x3FFFA69}, + [I(163,109)] = {28,0xFFFF6E9}, + [I(164,109)] = {28,0xFFFF729}, + [I(165,109)] = {29,0x1FFFFA29}, + [I(166,109)] = {29,0x1FFFFA69}, + [I(167,109)] = {27,0x7FFF7A9}, + [I(168,109)] = {29,0x1FFFFAA9}, + [I(169,109)] = {28,0xFFFF769}, + [I(170,109)] = {28,0xFFFF7A9}, + [I(171,109)] = {30,0x3FFFFC29}, + [I(172,109)] = {27,0x7FFF7E9}, + [I(173,109)] = {28,0xFFFF7E9}, + [I(174,109)] = {29,0x1FFFFAE9}, + [I(175,109)] = {29,0x1FFFFB29}, + [I(176,109)] = {27,0x7FFF829}, + [I(177,109)] = {27,0x7FFF869}, + [I(178,109)] = {28,0xFFFF829}, + [I(179,109)] = {27,0x7FFF8A9}, + [I(180,109)] = {29,0x1FFFFB69}, + [I(181,109)] = {28,0xFFFF869}, + [I(182,109)] = {29,0x1FFFFBA9}, + [I(183,109)] = {29,0x1FFFFBE9}, + [I(184,109)] = {26,0x3FFFAA9}, + [I(185,109)] = {28,0xFFFF8A9}, + [I(186,109)] = {28,0xFFFF8E9}, + [I(187,109)] = {28,0xFFFF929}, + [I(188,109)] = {29,0x1FFFFC29}, + [I(189,109)] = {28,0xFFFF969}, + [I(190,109)] = {28,0xFFFF9A9}, + [I(191,109)] = {29,0x1FFFFC69}, + [I(192,109)] = {X32,0xFFFFF829}, + [I(193,109)] = {X32,0xFFFFF869}, + [I(194,109)] = {26,0x3FFFAE9}, + [I(195,109)] = {25,0x1FFFC69}, + [I(196,109)] = {28,0xFFFF9E9}, + [I(197,109)] = {29,0x1FFFFCA9}, + [I(198,109)] = {28,0xFFFFA29}, + [I(199,109)] = {31,0x7FFFFB29}, + [I(200,109)] = {X32,0xFFFFF8A9}, + [I(201,109)] = {X32,0xFFFFF8E9}, + [I(202,109)] = {X32,0xFFFFF929}, + [I(203,109)] = {64,0}, + [I(204,109)] = {64,0}, + [I(205,109)] = {X32,0xFFFFF969}, + [I(206,109)] = {30,0x3FFFFC69}, + [I(207,109)] = {31,0x7FFFFB69}, + [I(208,109)] = {25,0x1FFFCA9}, + [I(209,109)] = {27,0x7FFF8E9}, + [I(210,109)] = {X32,0xFFFFF9A9}, + [I(211,109)] = {64,0}, + [I(212,109)] = {64,0}, + [I(213,109)] = {X32,0xFFFFF9E9}, + [I(214,109)] = {64,0}, + [I(215,109)] = {30,0x3FFFFCA9}, + [I(216,109)] = {27,0x7FFF929}, + [I(217,109)] = {27,0x7FFF969}, + [I(218,109)] = {X32,0xFFFFFA29}, + [I(219,109)] = {X32,0xFFFFFA69}, + [I(220,109)] = {64,0}, + [I(221,109)] = {64,0}, + [I(222,109)] = {64,0}, + [I(223,109)] = {64,0}, + [I(224,109)] = {26,0x3FFFB29}, + [I(225,109)] = {30,0x3FFFFCE9}, + [I(226,109)] = {26,0x3FFFB69}, + [I(227,109)] = {27,0x7FFF9A9}, + [I(228,109)] = {28,0xFFFFA69}, + [I(229,109)] = {27,0x7FFF9E9}, + [I(230,109)] = {27,0x7FFFA29}, + [I(231,109)] = {29,0x1FFFFCE9}, + [I(232,109)] = {28,0xFFFFAA9}, + [I(233,109)] = {28,0xFFFFAE9}, + [I(234,109)] = {31,0x7FFFFBA9}, + [I(235,109)] = {31,0x7FFFFBE9}, + [I(236,109)] = {30,0x3FFFFD29}, + [I(237,109)] = {30,0x3FFFFD69}, + [I(238,109)] = {X32,0xFFFFFAA9}, + [I(239,109)] = {29,0x1FFFFD29}, + [I(240,109)] = {X32,0xFFFFFAE9}, + [I(241,109)] = {64,0}, + [I(242,109)] = {X32,0xFFFFFB29}, + [I(243,109)] = {X32,0xFFFFFB69}, + [I(244,109)] = {64,0}, + [I(245,109)] = {64,0}, + [I(246,109)] = {64,0}, + [I(247,109)] = {64,0}, + [I(248,109)] = {64,0}, + [I(249,109)] = {64,0}, + [I(250,109)] = {64,0}, + [I(251,109)] = {64,0}, + [I(252,109)] = {64,0}, + [I(253,109)] = {64,0}, + [I(254,109)] = {64,0}, + [I(255,109)] = {X32,0xFFFFFBA9}, + [I(0,110)] = {19,0x7FE2A}, + [I(1,110)] = {29,0x1FFFF62A}, + [I(2,110)] = {64,0}, + [I(3,110)] = {64,0}, + [I(4,110)] = {64,0}, + [I(5,110)] = {64,0}, + [I(6,110)] = {64,0}, + [I(7,110)] = {64,0}, + [I(8,110)] = {64,0}, + [I(9,110)] = {30,0x3FFFFAAA}, + [I(10,110)] = {64,0}, + [I(11,110)] = {64,0}, + [I(12,110)] = {64,0}, + [I(13,110)] = {64,0}, + [I(14,110)] = {64,0}, + [I(15,110)] = {64,0}, + [I(16,110)] = {64,0}, + [I(17,110)] = {64,0}, + [I(18,110)] = {64,0}, + [I(19,110)] = {64,0}, + [I(20,110)] = {64,0}, + [I(21,110)] = {64,0}, + [I(22,110)] = {64,0}, + [I(23,110)] = {64,0}, + [I(24,110)] = {64,0}, + [I(25,110)] = {64,0}, + [I(26,110)] = {64,0}, + [I(27,110)] = {64,0}, + [I(28,110)] = {64,0}, + [I(29,110)] = {64,0}, + [I(30,110)] = {64,0}, + [I(31,110)] = {64,0}, + [I(32,110)] = {12,0x52A}, + [I(33,110)] = {16,0xFE2A}, + [I(34,110)] = {16,0xFE6A}, + [I(35,110)] = {18,0x3FEAA}, + [I(36,110)] = {19,0x7FE6A}, + [I(37,110)] = {12,0x56A}, + [I(38,110)] = {14,0x3E2A}, + [I(39,110)] = {17,0x1FEAA}, + [I(40,110)] = {16,0xFEAA}, + [I(41,110)] = {16,0xFEEA}, + [I(42,110)] = {14,0x3E6A}, + [I(43,110)] = {17,0x1FEEA}, + [I(44,110)] = {14,0x3EAA}, + [I(45,110)] = {12,0x5AA}, + [I(46,110)] = {12,0x5EA}, + [I(47,110)] = {12,0x62A}, + [I(48,110)] = {11,0x2A}, + [I(49,110)] = {11,0x6A}, + [I(50,110)] = {11,0xAA}, + [I(51,110)] = {12,0x66A}, + [I(52,110)] = {12,0x6AA}, + [I(53,110)] = {12,0x6EA}, + [I(54,110)] = {12,0x72A}, + [I(55,110)] = {12,0x76A}, + [I(56,110)] = {12,0x7AA}, + [I(57,110)] = {12,0x7EA}, + [I(58,110)] = {13,0x172A}, + [I(59,110)] = {14,0x3EEA}, + [I(60,110)] = {21,0x1FFF2A}, + [I(61,110)] = {12,0x82A}, + [I(62,110)] = {18,0x3FEEA}, + [I(63,110)] = {16,0xFF2A}, + [I(64,110)] = {19,0x7FEAA}, + [I(65,110)] = {12,0x86A}, + [I(66,110)] = {13,0x176A}, + [I(67,110)] = {13,0x17AA}, + [I(68,110)] = {13,0x17EA}, + [I(69,110)] = {13,0x182A}, + [I(70,110)] = {13,0x186A}, + [I(71,110)] = {13,0x18AA}, + [I(72,110)] = {13,0x18EA}, + [I(73,110)] = {13,0x192A}, + [I(74,110)] = {13,0x196A}, + [I(75,110)] = {13,0x19AA}, + [I(76,110)] = {13,0x19EA}, + [I(77,110)] = {13,0x1A2A}, + [I(78,110)] = {13,0x1A6A}, + [I(79,110)] = {13,0x1AAA}, + [I(80,110)] = {13,0x1AEA}, + [I(81,110)] = {13,0x1B2A}, + [I(82,110)] = {13,0x1B6A}, + [I(83,110)] = {13,0x1BAA}, + [I(84,110)] = {13,0x1BEA}, + [I(85,110)] = {13,0x1C2A}, + [I(86,110)] = {13,0x1C6A}, + [I(87,110)] = {13,0x1CAA}, + [I(88,110)] = {14,0x3F2A}, + [I(89,110)] = {13,0x1CEA}, + [I(90,110)] = {14,0x3F6A}, + [I(91,110)] = {19,0x7FEEA}, + [I(92,110)] = {25,0x1FFFC2A}, + [I(93,110)] = {19,0x7FF2A}, + [I(94,110)] = {20,0xFFF2A}, + [I(95,110)] = {12,0x8AA}, + [I(96,110)] = {21,0x1FFF6A}, + [I(97,110)] = {11,0xEA}, + [I(98,110)] = {12,0x8EA}, + [I(99,110)] = {11,0x12A}, + [I(100,110)] = {12,0x92A}, + [I(101,110)] = {11,0x16A}, + [I(102,110)] = {12,0x96A}, + [I(103,110)] = {12,0x9AA}, + [I(104,110)] = {12,0x9EA}, + [I(105,110)] = {11,0x1AA}, + [I(106,110)] = {13,0x1D2A}, + [I(107,110)] = {13,0x1D6A}, + [I(108,110)] = {12,0xA2A}, + [I(109,110)] = {12,0xA6A}, + [I(110,110)] = {12,0xAAA}, + [I(111,110)] = {11,0x1EA}, + [I(112,110)] = {12,0xAEA}, + [I(113,110)] = {13,0x1DAA}, + [I(114,110)] = {12,0xB2A}, + [I(115,110)] = {11,0x22A}, + [I(116,110)] = {11,0x26A}, + [I(117,110)] = {12,0xB6A}, + [I(118,110)] = {13,0x1DEA}, + [I(119,110)] = {13,0x1E2A}, + [I(120,110)] = {13,0x1E6A}, + [I(121,110)] = {13,0x1EAA}, + [I(122,110)] = {13,0x1EEA}, + [I(123,110)] = {21,0x1FFFAA}, + [I(124,110)] = {17,0x1FF2A}, + [I(125,110)] = {20,0xFFF6A}, + [I(126,110)] = {19,0x7FF6A}, + [I(127,110)] = {64,0}, + [I(128,110)] = {26,0x3FFF9AA}, + [I(129,110)] = {28,0xFFFF4AA}, + [I(130,110)] = {26,0x3FFF9EA}, + [I(131,110)] = {26,0x3FFFA2A}, + [I(132,110)] = {28,0xFFFF4EA}, + [I(133,110)] = {28,0xFFFF52A}, + [I(134,110)] = {28,0xFFFF56A}, + [I(135,110)] = {29,0x1FFFF66A}, + [I(136,110)] = {28,0xFFFF5AA}, + [I(137,110)] = {29,0x1FFFF6AA}, + [I(138,110)] = {29,0x1FFFF6EA}, + [I(139,110)] = {29,0x1FFFF72A}, + [I(140,110)] = {29,0x1FFFF76A}, + [I(141,110)] = {29,0x1FFFF7AA}, + [I(142,110)] = {30,0x3FFFFAEA}, + [I(143,110)] = {29,0x1FFFF7EA}, + [I(144,110)] = {30,0x3FFFFB2A}, + [I(145,110)] = {30,0x3FFFFB6A}, + [I(146,110)] = {28,0xFFFF5EA}, + [I(147,110)] = {29,0x1FFFF82A}, + [I(148,110)] = {30,0x3FFFFBAA}, + [I(149,110)] = {29,0x1FFFF86A}, + [I(150,110)] = {29,0x1FFFF8AA}, + [I(151,110)] = {29,0x1FFFF8EA}, + [I(152,110)] = {29,0x1FFFF92A}, + [I(153,110)] = {27,0x7FFF72A}, + [I(154,110)] = {28,0xFFFF62A}, + [I(155,110)] = {29,0x1FFFF96A}, + [I(156,110)] = {28,0xFFFF66A}, + [I(157,110)] = {29,0x1FFFF9AA}, + [I(158,110)] = {29,0x1FFFF9EA}, + [I(159,110)] = {30,0x3FFFFBEA}, + [I(160,110)] = {28,0xFFFF6AA}, + [I(161,110)] = {27,0x7FFF76A}, + [I(162,110)] = {26,0x3FFFA6A}, + [I(163,110)] = {28,0xFFFF6EA}, + [I(164,110)] = {28,0xFFFF72A}, + [I(165,110)] = {29,0x1FFFFA2A}, + [I(166,110)] = {29,0x1FFFFA6A}, + [I(167,110)] = {27,0x7FFF7AA}, + [I(168,110)] = {29,0x1FFFFAAA}, + [I(169,110)] = {28,0xFFFF76A}, + [I(170,110)] = {28,0xFFFF7AA}, + [I(171,110)] = {30,0x3FFFFC2A}, + [I(172,110)] = {27,0x7FFF7EA}, + [I(173,110)] = {28,0xFFFF7EA}, + [I(174,110)] = {29,0x1FFFFAEA}, + [I(175,110)] = {29,0x1FFFFB2A}, + [I(176,110)] = {27,0x7FFF82A}, + [I(177,110)] = {27,0x7FFF86A}, + [I(178,110)] = {28,0xFFFF82A}, + [I(179,110)] = {27,0x7FFF8AA}, + [I(180,110)] = {29,0x1FFFFB6A}, + [I(181,110)] = {28,0xFFFF86A}, + [I(182,110)] = {29,0x1FFFFBAA}, + [I(183,110)] = {29,0x1FFFFBEA}, + [I(184,110)] = {26,0x3FFFAAA}, + [I(185,110)] = {28,0xFFFF8AA}, + [I(186,110)] = {28,0xFFFF8EA}, + [I(187,110)] = {28,0xFFFF92A}, + [I(188,110)] = {29,0x1FFFFC2A}, + [I(189,110)] = {28,0xFFFF96A}, + [I(190,110)] = {28,0xFFFF9AA}, + [I(191,110)] = {29,0x1FFFFC6A}, + [I(192,110)] = {X32,0xFFFFF82A}, + [I(193,110)] = {X32,0xFFFFF86A}, + [I(194,110)] = {26,0x3FFFAEA}, + [I(195,110)] = {25,0x1FFFC6A}, + [I(196,110)] = {28,0xFFFF9EA}, + [I(197,110)] = {29,0x1FFFFCAA}, + [I(198,110)] = {28,0xFFFFA2A}, + [I(199,110)] = {31,0x7FFFFB2A}, + [I(200,110)] = {X32,0xFFFFF8AA}, + [I(201,110)] = {X32,0xFFFFF8EA}, + [I(202,110)] = {X32,0xFFFFF92A}, + [I(203,110)] = {64,0}, + [I(204,110)] = {64,0}, + [I(205,110)] = {X32,0xFFFFF96A}, + [I(206,110)] = {30,0x3FFFFC6A}, + [I(207,110)] = {31,0x7FFFFB6A}, + [I(208,110)] = {25,0x1FFFCAA}, + [I(209,110)] = {27,0x7FFF8EA}, + [I(210,110)] = {X32,0xFFFFF9AA}, + [I(211,110)] = {64,0}, + [I(212,110)] = {64,0}, + [I(213,110)] = {X32,0xFFFFF9EA}, + [I(214,110)] = {64,0}, + [I(215,110)] = {30,0x3FFFFCAA}, + [I(216,110)] = {27,0x7FFF92A}, + [I(217,110)] = {27,0x7FFF96A}, + [I(218,110)] = {X32,0xFFFFFA2A}, + [I(219,110)] = {X32,0xFFFFFA6A}, + [I(220,110)] = {64,0}, + [I(221,110)] = {64,0}, + [I(222,110)] = {64,0}, + [I(223,110)] = {64,0}, + [I(224,110)] = {26,0x3FFFB2A}, + [I(225,110)] = {30,0x3FFFFCEA}, + [I(226,110)] = {26,0x3FFFB6A}, + [I(227,110)] = {27,0x7FFF9AA}, + [I(228,110)] = {28,0xFFFFA6A}, + [I(229,110)] = {27,0x7FFF9EA}, + [I(230,110)] = {27,0x7FFFA2A}, + [I(231,110)] = {29,0x1FFFFCEA}, + [I(232,110)] = {28,0xFFFFAAA}, + [I(233,110)] = {28,0xFFFFAEA}, + [I(234,110)] = {31,0x7FFFFBAA}, + [I(235,110)] = {31,0x7FFFFBEA}, + [I(236,110)] = {30,0x3FFFFD2A}, + [I(237,110)] = {30,0x3FFFFD6A}, + [I(238,110)] = {X32,0xFFFFFAAA}, + [I(239,110)] = {29,0x1FFFFD2A}, + [I(240,110)] = {X32,0xFFFFFAEA}, + [I(241,110)] = {64,0}, + [I(242,110)] = {X32,0xFFFFFB2A}, + [I(243,110)] = {X32,0xFFFFFB6A}, + [I(244,110)] = {64,0}, + [I(245,110)] = {64,0}, + [I(246,110)] = {64,0}, + [I(247,110)] = {64,0}, + [I(248,110)] = {64,0}, + [I(249,110)] = {64,0}, + [I(250,110)] = {64,0}, + [I(251,110)] = {64,0}, + [I(252,110)] = {64,0}, + [I(253,110)] = {64,0}, + [I(254,110)] = {64,0}, + [I(255,110)] = {X32,0xFFFFFBAA}, + [I(0,111)] = {18,0x3FF07}, + [I(1,111)] = {28,0xFFFFB07}, + [I(2,111)] = {64,0}, + [I(3,111)] = {64,0}, + [I(4,111)] = {64,0}, + [I(5,111)] = {64,0}, + [I(6,111)] = {64,0}, + [I(7,111)] = {64,0}, + [I(8,111)] = {64,0}, + [I(9,111)] = {29,0x1FFFFD47}, + [I(10,111)] = {64,0}, + [I(11,111)] = {64,0}, + [I(12,111)] = {64,0}, + [I(13,111)] = {64,0}, + [I(14,111)] = {64,0}, + [I(15,111)] = {64,0}, + [I(16,111)] = {64,0}, + [I(17,111)] = {64,0}, + [I(18,111)] = {64,0}, + [I(19,111)] = {64,0}, + [I(20,111)] = {64,0}, + [I(21,111)] = {64,0}, + [I(22,111)] = {64,0}, + [I(23,111)] = {64,0}, + [I(24,111)] = {64,0}, + [I(25,111)] = {64,0}, + [I(26,111)] = {64,0}, + [I(27,111)] = {64,0}, + [I(28,111)] = {64,0}, + [I(29,111)] = {64,0}, + [I(30,111)] = {64,0}, + [I(31,111)] = {64,0}, + [I(32,111)] = {11,0x287}, + [I(33,111)] = {15,0x7F07}, + [I(34,111)] = {15,0x7F27}, + [I(35,111)] = {17,0x1FF47}, + [I(36,111)] = {18,0x3FF27}, + [I(37,111)] = {11,0x2A7}, + [I(38,111)] = {13,0x1F07}, + [I(39,111)] = {16,0xFF47}, + [I(40,111)] = {15,0x7F47}, + [I(41,111)] = {15,0x7F67}, + [I(42,111)] = {13,0x1F27}, + [I(43,111)] = {16,0xFF67}, + [I(44,111)] = {13,0x1F47}, + [I(45,111)] = {11,0x2C7}, + [I(46,111)] = {11,0x2E7}, + [I(47,111)] = {11,0x307}, + [I(48,111)] = {10,0x7}, + [I(49,111)] = {10,0x27}, + [I(50,111)] = {10,0x47}, + [I(51,111)] = {11,0x327}, + [I(52,111)] = {11,0x347}, + [I(53,111)] = {11,0x367}, + [I(54,111)] = {11,0x387}, + [I(55,111)] = {11,0x3A7}, + [I(56,111)] = {11,0x3C7}, + [I(57,111)] = {11,0x3E7}, + [I(58,111)] = {12,0xB87}, + [I(59,111)] = {13,0x1F67}, + [I(60,111)] = {20,0xFFF87}, + [I(61,111)] = {11,0x407}, + [I(62,111)] = {17,0x1FF67}, + [I(63,111)] = {15,0x7F87}, + [I(64,111)] = {18,0x3FF47}, + [I(65,111)] = {11,0x427}, + [I(66,111)] = {12,0xBA7}, + [I(67,111)] = {12,0xBC7}, + [I(68,111)] = {12,0xBE7}, + [I(69,111)] = {12,0xC07}, + [I(70,111)] = {12,0xC27}, + [I(71,111)] = {12,0xC47}, + [I(72,111)] = {12,0xC67}, + [I(73,111)] = {12,0xC87}, + [I(74,111)] = {12,0xCA7}, + [I(75,111)] = {12,0xCC7}, + [I(76,111)] = {12,0xCE7}, + [I(77,111)] = {12,0xD07}, + [I(78,111)] = {12,0xD27}, + [I(79,111)] = {12,0xD47}, + [I(80,111)] = {12,0xD67}, + [I(81,111)] = {12,0xD87}, + [I(82,111)] = {12,0xDA7}, + [I(83,111)] = {12,0xDC7}, + [I(84,111)] = {12,0xDE7}, + [I(85,111)] = {12,0xE07}, + [I(86,111)] = {12,0xE27}, + [I(87,111)] = {12,0xE47}, + [I(88,111)] = {13,0x1F87}, + [I(89,111)] = {12,0xE67}, + [I(90,111)] = {13,0x1FA7}, + [I(91,111)] = {18,0x3FF67}, + [I(92,111)] = {24,0xFFFE07}, + [I(93,111)] = {18,0x3FF87}, + [I(94,111)] = {19,0x7FF87}, + [I(95,111)] = {11,0x447}, + [I(96,111)] = {20,0xFFFA7}, + [I(97,111)] = {10,0x67}, + [I(98,111)] = {11,0x467}, + [I(99,111)] = {10,0x87}, + [I(100,111)] = {11,0x487}, + [I(101,111)] = {10,0xA7}, + [I(102,111)] = {11,0x4A7}, + [I(103,111)] = {11,0x4C7}, + [I(104,111)] = {11,0x4E7}, + [I(105,111)] = {10,0xC7}, + [I(106,111)] = {12,0xE87}, + [I(107,111)] = {12,0xEA7}, + [I(108,111)] = {11,0x507}, + [I(109,111)] = {11,0x527}, + [I(110,111)] = {11,0x547}, + [I(111,111)] = {10,0xE7}, + [I(112,111)] = {11,0x567}, + [I(113,111)] = {12,0xEC7}, + [I(114,111)] = {11,0x587}, + [I(115,111)] = {10,0x107}, + [I(116,111)] = {10,0x127}, + [I(117,111)] = {11,0x5A7}, + [I(118,111)] = {12,0xEE7}, + [I(119,111)] = {12,0xF07}, + [I(120,111)] = {12,0xF27}, + [I(121,111)] = {12,0xF47}, + [I(122,111)] = {12,0xF67}, + [I(123,111)] = {20,0xFFFC7}, + [I(124,111)] = {16,0xFF87}, + [I(125,111)] = {19,0x7FFA7}, + [I(126,111)] = {18,0x3FFA7}, + [I(127,111)] = {64,0}, + [I(128,111)] = {25,0x1FFFCC7}, + [I(129,111)] = {27,0x7FFFA47}, + [I(130,111)] = {25,0x1FFFCE7}, + [I(131,111)] = {25,0x1FFFD07}, + [I(132,111)] = {27,0x7FFFA67}, + [I(133,111)] = {27,0x7FFFA87}, + [I(134,111)] = {27,0x7FFFAA7}, + [I(135,111)] = {28,0xFFFFB27}, + [I(136,111)] = {27,0x7FFFAC7}, + [I(137,111)] = {28,0xFFFFB47}, + [I(138,111)] = {28,0xFFFFB67}, + [I(139,111)] = {28,0xFFFFB87}, + [I(140,111)] = {28,0xFFFFBA7}, + [I(141,111)] = {28,0xFFFFBC7}, + [I(142,111)] = {29,0x1FFFFD67}, + [I(143,111)] = {28,0xFFFFBE7}, + [I(144,111)] = {29,0x1FFFFD87}, + [I(145,111)] = {29,0x1FFFFDA7}, + [I(146,111)] = {27,0x7FFFAE7}, + [I(147,111)] = {28,0xFFFFC07}, + [I(148,111)] = {29,0x1FFFFDC7}, + [I(149,111)] = {28,0xFFFFC27}, + [I(150,111)] = {28,0xFFFFC47}, + [I(151,111)] = {28,0xFFFFC67}, + [I(152,111)] = {28,0xFFFFC87}, + [I(153,111)] = {26,0x3FFFB87}, + [I(154,111)] = {27,0x7FFFB07}, + [I(155,111)] = {28,0xFFFFCA7}, + [I(156,111)] = {27,0x7FFFB27}, + [I(157,111)] = {28,0xFFFFCC7}, + [I(158,111)] = {28,0xFFFFCE7}, + [I(159,111)] = {29,0x1FFFFDE7}, + [I(160,111)] = {27,0x7FFFB47}, + [I(161,111)] = {26,0x3FFFBA7}, + [I(162,111)] = {25,0x1FFFD27}, + [I(163,111)] = {27,0x7FFFB67}, + [I(164,111)] = {27,0x7FFFB87}, + [I(165,111)] = {28,0xFFFFD07}, + [I(166,111)] = {28,0xFFFFD27}, + [I(167,111)] = {26,0x3FFFBC7}, + [I(168,111)] = {28,0xFFFFD47}, + [I(169,111)] = {27,0x7FFFBA7}, + [I(170,111)] = {27,0x7FFFBC7}, + [I(171,111)] = {29,0x1FFFFE07}, + [I(172,111)] = {26,0x3FFFBE7}, + [I(173,111)] = {27,0x7FFFBE7}, + [I(174,111)] = {28,0xFFFFD67}, + [I(175,111)] = {28,0xFFFFD87}, + [I(176,111)] = {26,0x3FFFC07}, + [I(177,111)] = {26,0x3FFFC27}, + [I(178,111)] = {27,0x7FFFC07}, + [I(179,111)] = {26,0x3FFFC47}, + [I(180,111)] = {28,0xFFFFDA7}, + [I(181,111)] = {27,0x7FFFC27}, + [I(182,111)] = {28,0xFFFFDC7}, + [I(183,111)] = {28,0xFFFFDE7}, + [I(184,111)] = {25,0x1FFFD47}, + [I(185,111)] = {27,0x7FFFC47}, + [I(186,111)] = {27,0x7FFFC67}, + [I(187,111)] = {27,0x7FFFC87}, + [I(188,111)] = {28,0xFFFFE07}, + [I(189,111)] = {27,0x7FFFCA7}, + [I(190,111)] = {27,0x7FFFCC7}, + [I(191,111)] = {28,0xFFFFE27}, + [I(192,111)] = {31,0x7FFFFC07}, + [I(193,111)] = {31,0x7FFFFC27}, + [I(194,111)] = {25,0x1FFFD67}, + [I(195,111)] = {24,0xFFFE27}, + [I(196,111)] = {27,0x7FFFCE7}, + [I(197,111)] = {28,0xFFFFE47}, + [I(198,111)] = {27,0x7FFFD07}, + [I(199,111)] = {30,0x3FFFFD87}, + [I(200,111)] = {31,0x7FFFFC47}, + [I(201,111)] = {31,0x7FFFFC67}, + [I(202,111)] = {31,0x7FFFFC87}, + [I(203,111)] = {X32,0xFFFFFBC7}, + [I(204,111)] = {X32,0xFFFFFBE7}, + [I(205,111)] = {31,0x7FFFFCA7}, + [I(206,111)] = {29,0x1FFFFE27}, + [I(207,111)] = {30,0x3FFFFDA7}, + [I(208,111)] = {24,0xFFFE47}, + [I(209,111)] = {26,0x3FFFC67}, + [I(210,111)] = {31,0x7FFFFCC7}, + [I(211,111)] = {X32,0xFFFFFC07}, + [I(212,111)] = {X32,0xFFFFFC27}, + [I(213,111)] = {31,0x7FFFFCE7}, + [I(214,111)] = {X32,0xFFFFFC47}, + [I(215,111)] = {29,0x1FFFFE47}, + [I(216,111)] = {26,0x3FFFC87}, + [I(217,111)] = {26,0x3FFFCA7}, + [I(218,111)] = {31,0x7FFFFD07}, + [I(219,111)] = {31,0x7FFFFD27}, + [I(220,111)] = {64,0}, + [I(221,111)] = {X32,0xFFFFFC67}, + [I(222,111)] = {X32,0xFFFFFC87}, + [I(223,111)] = {X32,0xFFFFFCA7}, + [I(224,111)] = {25,0x1FFFD87}, + [I(225,111)] = {29,0x1FFFFE67}, + [I(226,111)] = {25,0x1FFFDA7}, + [I(227,111)] = {26,0x3FFFCC7}, + [I(228,111)] = {27,0x7FFFD27}, + [I(229,111)] = {26,0x3FFFCE7}, + [I(230,111)] = {26,0x3FFFD07}, + [I(231,111)] = {28,0xFFFFE67}, + [I(232,111)] = {27,0x7FFFD47}, + [I(233,111)] = {27,0x7FFFD67}, + [I(234,111)] = {30,0x3FFFFDC7}, + [I(235,111)] = {30,0x3FFFFDE7}, + [I(236,111)] = {29,0x1FFFFE87}, + [I(237,111)] = {29,0x1FFFFEA7}, + [I(238,111)] = {31,0x7FFFFD47}, + [I(239,111)] = {28,0xFFFFE87}, + [I(240,111)] = {31,0x7FFFFD67}, + [I(241,111)] = {X32,0xFFFFFCC7}, + [I(242,111)] = {31,0x7FFFFD87}, + [I(243,111)] = {31,0x7FFFFDA7}, + [I(244,111)] = {X32,0xFFFFFCE7}, + [I(245,111)] = {X32,0xFFFFFD07}, + [I(246,111)] = {X32,0xFFFFFD27}, + [I(247,111)] = {X32,0xFFFFFD47}, + [I(248,111)] = {X32,0xFFFFFD67}, + [I(249,111)] = {64,0}, + [I(250,111)] = {X32,0xFFFFFD87}, + [I(251,111)] = {X32,0xFFFFFDA7}, + [I(252,111)] = {X32,0xFFFFFDC7}, + [I(253,111)] = {X32,0xFFFFFDE7}, + [I(254,111)] = {X32,0xFFFFFE07}, + [I(255,111)] = {31,0x7FFFFDC7}, + [I(0,112)] = {19,0x7FE2B}, + [I(1,112)] = {29,0x1FFFF62B}, + [I(2,112)] = {64,0}, + [I(3,112)] = {64,0}, + [I(4,112)] = {64,0}, + [I(5,112)] = {64,0}, + [I(6,112)] = {64,0}, + [I(7,112)] = {64,0}, + [I(8,112)] = {64,0}, + [I(9,112)] = {30,0x3FFFFAAB}, + [I(10,112)] = {64,0}, + [I(11,112)] = {64,0}, + [I(12,112)] = {64,0}, + [I(13,112)] = {64,0}, + [I(14,112)] = {64,0}, + [I(15,112)] = {64,0}, + [I(16,112)] = {64,0}, + [I(17,112)] = {64,0}, + [I(18,112)] = {64,0}, + [I(19,112)] = {64,0}, + [I(20,112)] = {64,0}, + [I(21,112)] = {64,0}, + [I(22,112)] = {64,0}, + [I(23,112)] = {64,0}, + [I(24,112)] = {64,0}, + [I(25,112)] = {64,0}, + [I(26,112)] = {64,0}, + [I(27,112)] = {64,0}, + [I(28,112)] = {64,0}, + [I(29,112)] = {64,0}, + [I(30,112)] = {64,0}, + [I(31,112)] = {64,0}, + [I(32,112)] = {12,0x52B}, + [I(33,112)] = {16,0xFE2B}, + [I(34,112)] = {16,0xFE6B}, + [I(35,112)] = {18,0x3FEAB}, + [I(36,112)] = {19,0x7FE6B}, + [I(37,112)] = {12,0x56B}, + [I(38,112)] = {14,0x3E2B}, + [I(39,112)] = {17,0x1FEAB}, + [I(40,112)] = {16,0xFEAB}, + [I(41,112)] = {16,0xFEEB}, + [I(42,112)] = {14,0x3E6B}, + [I(43,112)] = {17,0x1FEEB}, + [I(44,112)] = {14,0x3EAB}, + [I(45,112)] = {12,0x5AB}, + [I(46,112)] = {12,0x5EB}, + [I(47,112)] = {12,0x62B}, + [I(48,112)] = {11,0x2B}, + [I(49,112)] = {11,0x6B}, + [I(50,112)] = {11,0xAB}, + [I(51,112)] = {12,0x66B}, + [I(52,112)] = {12,0x6AB}, + [I(53,112)] = {12,0x6EB}, + [I(54,112)] = {12,0x72B}, + [I(55,112)] = {12,0x76B}, + [I(56,112)] = {12,0x7AB}, + [I(57,112)] = {12,0x7EB}, + [I(58,112)] = {13,0x172B}, + [I(59,112)] = {14,0x3EEB}, + [I(60,112)] = {21,0x1FFF2B}, + [I(61,112)] = {12,0x82B}, + [I(62,112)] = {18,0x3FEEB}, + [I(63,112)] = {16,0xFF2B}, + [I(64,112)] = {19,0x7FEAB}, + [I(65,112)] = {12,0x86B}, + [I(66,112)] = {13,0x176B}, + [I(67,112)] = {13,0x17AB}, + [I(68,112)] = {13,0x17EB}, + [I(69,112)] = {13,0x182B}, + [I(70,112)] = {13,0x186B}, + [I(71,112)] = {13,0x18AB}, + [I(72,112)] = {13,0x18EB}, + [I(73,112)] = {13,0x192B}, + [I(74,112)] = {13,0x196B}, + [I(75,112)] = {13,0x19AB}, + [I(76,112)] = {13,0x19EB}, + [I(77,112)] = {13,0x1A2B}, + [I(78,112)] = {13,0x1A6B}, + [I(79,112)] = {13,0x1AAB}, + [I(80,112)] = {13,0x1AEB}, + [I(81,112)] = {13,0x1B2B}, + [I(82,112)] = {13,0x1B6B}, + [I(83,112)] = {13,0x1BAB}, + [I(84,112)] = {13,0x1BEB}, + [I(85,112)] = {13,0x1C2B}, + [I(86,112)] = {13,0x1C6B}, + [I(87,112)] = {13,0x1CAB}, + [I(88,112)] = {14,0x3F2B}, + [I(89,112)] = {13,0x1CEB}, + [I(90,112)] = {14,0x3F6B}, + [I(91,112)] = {19,0x7FEEB}, + [I(92,112)] = {25,0x1FFFC2B}, + [I(93,112)] = {19,0x7FF2B}, + [I(94,112)] = {20,0xFFF2B}, + [I(95,112)] = {12,0x8AB}, + [I(96,112)] = {21,0x1FFF6B}, + [I(97,112)] = {11,0xEB}, + [I(98,112)] = {12,0x8EB}, + [I(99,112)] = {11,0x12B}, + [I(100,112)] = {12,0x92B}, + [I(101,112)] = {11,0x16B}, + [I(102,112)] = {12,0x96B}, + [I(103,112)] = {12,0x9AB}, + [I(104,112)] = {12,0x9EB}, + [I(105,112)] = {11,0x1AB}, + [I(106,112)] = {13,0x1D2B}, + [I(107,112)] = {13,0x1D6B}, + [I(108,112)] = {12,0xA2B}, + [I(109,112)] = {12,0xA6B}, + [I(110,112)] = {12,0xAAB}, + [I(111,112)] = {11,0x1EB}, + [I(112,112)] = {12,0xAEB}, + [I(113,112)] = {13,0x1DAB}, + [I(114,112)] = {12,0xB2B}, + [I(115,112)] = {11,0x22B}, + [I(116,112)] = {11,0x26B}, + [I(117,112)] = {12,0xB6B}, + [I(118,112)] = {13,0x1DEB}, + [I(119,112)] = {13,0x1E2B}, + [I(120,112)] = {13,0x1E6B}, + [I(121,112)] = {13,0x1EAB}, + [I(122,112)] = {13,0x1EEB}, + [I(123,112)] = {21,0x1FFFAB}, + [I(124,112)] = {17,0x1FF2B}, + [I(125,112)] = {20,0xFFF6B}, + [I(126,112)] = {19,0x7FF6B}, + [I(127,112)] = {64,0}, + [I(128,112)] = {26,0x3FFF9AB}, + [I(129,112)] = {28,0xFFFF4AB}, + [I(130,112)] = {26,0x3FFF9EB}, + [I(131,112)] = {26,0x3FFFA2B}, + [I(132,112)] = {28,0xFFFF4EB}, + [I(133,112)] = {28,0xFFFF52B}, + [I(134,112)] = {28,0xFFFF56B}, + [I(135,112)] = {29,0x1FFFF66B}, + [I(136,112)] = {28,0xFFFF5AB}, + [I(137,112)] = {29,0x1FFFF6AB}, + [I(138,112)] = {29,0x1FFFF6EB}, + [I(139,112)] = {29,0x1FFFF72B}, + [I(140,112)] = {29,0x1FFFF76B}, + [I(141,112)] = {29,0x1FFFF7AB}, + [I(142,112)] = {30,0x3FFFFAEB}, + [I(143,112)] = {29,0x1FFFF7EB}, + [I(144,112)] = {30,0x3FFFFB2B}, + [I(145,112)] = {30,0x3FFFFB6B}, + [I(146,112)] = {28,0xFFFF5EB}, + [I(147,112)] = {29,0x1FFFF82B}, + [I(148,112)] = {30,0x3FFFFBAB}, + [I(149,112)] = {29,0x1FFFF86B}, + [I(150,112)] = {29,0x1FFFF8AB}, + [I(151,112)] = {29,0x1FFFF8EB}, + [I(152,112)] = {29,0x1FFFF92B}, + [I(153,112)] = {27,0x7FFF72B}, + [I(154,112)] = {28,0xFFFF62B}, + [I(155,112)] = {29,0x1FFFF96B}, + [I(156,112)] = {28,0xFFFF66B}, + [I(157,112)] = {29,0x1FFFF9AB}, + [I(158,112)] = {29,0x1FFFF9EB}, + [I(159,112)] = {30,0x3FFFFBEB}, + [I(160,112)] = {28,0xFFFF6AB}, + [I(161,112)] = {27,0x7FFF76B}, + [I(162,112)] = {26,0x3FFFA6B}, + [I(163,112)] = {28,0xFFFF6EB}, + [I(164,112)] = {28,0xFFFF72B}, + [I(165,112)] = {29,0x1FFFFA2B}, + [I(166,112)] = {29,0x1FFFFA6B}, + [I(167,112)] = {27,0x7FFF7AB}, + [I(168,112)] = {29,0x1FFFFAAB}, + [I(169,112)] = {28,0xFFFF76B}, + [I(170,112)] = {28,0xFFFF7AB}, + [I(171,112)] = {30,0x3FFFFC2B}, + [I(172,112)] = {27,0x7FFF7EB}, + [I(173,112)] = {28,0xFFFF7EB}, + [I(174,112)] = {29,0x1FFFFAEB}, + [I(175,112)] = {29,0x1FFFFB2B}, + [I(176,112)] = {27,0x7FFF82B}, + [I(177,112)] = {27,0x7FFF86B}, + [I(178,112)] = {28,0xFFFF82B}, + [I(179,112)] = {27,0x7FFF8AB}, + [I(180,112)] = {29,0x1FFFFB6B}, + [I(181,112)] = {28,0xFFFF86B}, + [I(182,112)] = {29,0x1FFFFBAB}, + [I(183,112)] = {29,0x1FFFFBEB}, + [I(184,112)] = {26,0x3FFFAAB}, + [I(185,112)] = {28,0xFFFF8AB}, + [I(186,112)] = {28,0xFFFF8EB}, + [I(187,112)] = {28,0xFFFF92B}, + [I(188,112)] = {29,0x1FFFFC2B}, + [I(189,112)] = {28,0xFFFF96B}, + [I(190,112)] = {28,0xFFFF9AB}, + [I(191,112)] = {29,0x1FFFFC6B}, + [I(192,112)] = {X32,0xFFFFF82B}, + [I(193,112)] = {X32,0xFFFFF86B}, + [I(194,112)] = {26,0x3FFFAEB}, + [I(195,112)] = {25,0x1FFFC6B}, + [I(196,112)] = {28,0xFFFF9EB}, + [I(197,112)] = {29,0x1FFFFCAB}, + [I(198,112)] = {28,0xFFFFA2B}, + [I(199,112)] = {31,0x7FFFFB2B}, + [I(200,112)] = {X32,0xFFFFF8AB}, + [I(201,112)] = {X32,0xFFFFF8EB}, + [I(202,112)] = {X32,0xFFFFF92B}, + [I(203,112)] = {64,0}, + [I(204,112)] = {64,0}, + [I(205,112)] = {X32,0xFFFFF96B}, + [I(206,112)] = {30,0x3FFFFC6B}, + [I(207,112)] = {31,0x7FFFFB6B}, + [I(208,112)] = {25,0x1FFFCAB}, + [I(209,112)] = {27,0x7FFF8EB}, + [I(210,112)] = {X32,0xFFFFF9AB}, + [I(211,112)] = {64,0}, + [I(212,112)] = {64,0}, + [I(213,112)] = {X32,0xFFFFF9EB}, + [I(214,112)] = {64,0}, + [I(215,112)] = {30,0x3FFFFCAB}, + [I(216,112)] = {27,0x7FFF92B}, + [I(217,112)] = {27,0x7FFF96B}, + [I(218,112)] = {X32,0xFFFFFA2B}, + [I(219,112)] = {X32,0xFFFFFA6B}, + [I(220,112)] = {64,0}, + [I(221,112)] = {64,0}, + [I(222,112)] = {64,0}, + [I(223,112)] = {64,0}, + [I(224,112)] = {26,0x3FFFB2B}, + [I(225,112)] = {30,0x3FFFFCEB}, + [I(226,112)] = {26,0x3FFFB6B}, + [I(227,112)] = {27,0x7FFF9AB}, + [I(228,112)] = {28,0xFFFFA6B}, + [I(229,112)] = {27,0x7FFF9EB}, + [I(230,112)] = {27,0x7FFFA2B}, + [I(231,112)] = {29,0x1FFFFCEB}, + [I(232,112)] = {28,0xFFFFAAB}, + [I(233,112)] = {28,0xFFFFAEB}, + [I(234,112)] = {31,0x7FFFFBAB}, + [I(235,112)] = {31,0x7FFFFBEB}, + [I(236,112)] = {30,0x3FFFFD2B}, + [I(237,112)] = {30,0x3FFFFD6B}, + [I(238,112)] = {X32,0xFFFFFAAB}, + [I(239,112)] = {29,0x1FFFFD2B}, + [I(240,112)] = {X32,0xFFFFFAEB}, + [I(241,112)] = {64,0}, + [I(242,112)] = {X32,0xFFFFFB2B}, + [I(243,112)] = {X32,0xFFFFFB6B}, + [I(244,112)] = {64,0}, + [I(245,112)] = {64,0}, + [I(246,112)] = {64,0}, + [I(247,112)] = {64,0}, + [I(248,112)] = {64,0}, + [I(249,112)] = {64,0}, + [I(250,112)] = {64,0}, + [I(251,112)] = {64,0}, + [I(252,112)] = {64,0}, + [I(253,112)] = {64,0}, + [I(254,112)] = {64,0}, + [I(255,112)] = {X32,0xFFFFFBAB}, + [I(0,113)] = {20,0xFFC76}, + [I(1,113)] = {30,0x3FFFEC76}, + [I(2,113)] = {64,0}, + [I(3,113)] = {64,0}, + [I(4,113)] = {64,0}, + [I(5,113)] = {64,0}, + [I(6,113)] = {64,0}, + [I(7,113)] = {64,0}, + [I(8,113)] = {64,0}, + [I(9,113)] = {31,0x7FFFF576}, + [I(10,113)] = {64,0}, + [I(11,113)] = {64,0}, + [I(12,113)] = {64,0}, + [I(13,113)] = {64,0}, + [I(14,113)] = {64,0}, + [I(15,113)] = {64,0}, + [I(16,113)] = {64,0}, + [I(17,113)] = {64,0}, + [I(18,113)] = {64,0}, + [I(19,113)] = {64,0}, + [I(20,113)] = {64,0}, + [I(21,113)] = {64,0}, + [I(22,113)] = {64,0}, + [I(23,113)] = {64,0}, + [I(24,113)] = {64,0}, + [I(25,113)] = {64,0}, + [I(26,113)] = {64,0}, + [I(27,113)] = {64,0}, + [I(28,113)] = {64,0}, + [I(29,113)] = {64,0}, + [I(30,113)] = {64,0}, + [I(31,113)] = {64,0}, + [I(32,113)] = {13,0xA76}, + [I(33,113)] = {17,0x1FC76}, + [I(34,113)] = {17,0x1FCF6}, + [I(35,113)] = {19,0x7FD76}, + [I(36,113)] = {20,0xFFCF6}, + [I(37,113)] = {13,0xAF6}, + [I(38,113)] = {15,0x7C76}, + [I(39,113)] = {18,0x3FD76}, + [I(40,113)] = {17,0x1FD76}, + [I(41,113)] = {17,0x1FDF6}, + [I(42,113)] = {15,0x7CF6}, + [I(43,113)] = {18,0x3FDF6}, + [I(44,113)] = {15,0x7D76}, + [I(45,113)] = {13,0xB76}, + [I(46,113)] = {13,0xBF6}, + [I(47,113)] = {13,0xC76}, + [I(48,113)] = {12,0x76}, + [I(49,113)] = {12,0xF6}, + [I(50,113)] = {12,0x176}, + [I(51,113)] = {13,0xCF6}, + [I(52,113)] = {13,0xD76}, + [I(53,113)] = {13,0xDF6}, + [I(54,113)] = {13,0xE76}, + [I(55,113)] = {13,0xEF6}, + [I(56,113)] = {13,0xF76}, + [I(57,113)] = {13,0xFF6}, + [I(58,113)] = {14,0x2E76}, + [I(59,113)] = {15,0x7DF6}, + [I(60,113)] = {22,0x3FFE76}, + [I(61,113)] = {13,0x1076}, + [I(62,113)] = {19,0x7FDF6}, + [I(63,113)] = {17,0x1FE76}, + [I(64,113)] = {20,0xFFD76}, + [I(65,113)] = {13,0x10F6}, + [I(66,113)] = {14,0x2EF6}, + [I(67,113)] = {14,0x2F76}, + [I(68,113)] = {14,0x2FF6}, + [I(69,113)] = {14,0x3076}, + [I(70,113)] = {14,0x30F6}, + [I(71,113)] = {14,0x3176}, + [I(72,113)] = {14,0x31F6}, + [I(73,113)] = {14,0x3276}, + [I(74,113)] = {14,0x32F6}, + [I(75,113)] = {14,0x3376}, + [I(76,113)] = {14,0x33F6}, + [I(77,113)] = {14,0x3476}, + [I(78,113)] = {14,0x34F6}, + [I(79,113)] = {14,0x3576}, + [I(80,113)] = {14,0x35F6}, + [I(81,113)] = {14,0x3676}, + [I(82,113)] = {14,0x36F6}, + [I(83,113)] = {14,0x3776}, + [I(84,113)] = {14,0x37F6}, + [I(85,113)] = {14,0x3876}, + [I(86,113)] = {14,0x38F6}, + [I(87,113)] = {14,0x3976}, + [I(88,113)] = {15,0x7E76}, + [I(89,113)] = {14,0x39F6}, + [I(90,113)] = {15,0x7EF6}, + [I(91,113)] = {20,0xFFDF6}, + [I(92,113)] = {26,0x3FFF876}, + [I(93,113)] = {20,0xFFE76}, + [I(94,113)] = {21,0x1FFE76}, + [I(95,113)] = {13,0x1176}, + [I(96,113)] = {22,0x3FFEF6}, + [I(97,113)] = {12,0x1F6}, + [I(98,113)] = {13,0x11F6}, + [I(99,113)] = {12,0x276}, + [I(100,113)] = {13,0x1276}, + [I(101,113)] = {12,0x2F6}, + [I(102,113)] = {13,0x12F6}, + [I(103,113)] = {13,0x1376}, + [I(104,113)] = {13,0x13F6}, + [I(105,113)] = {12,0x376}, + [I(106,113)] = {14,0x3A76}, + [I(107,113)] = {14,0x3AF6}, + [I(108,113)] = {13,0x1476}, + [I(109,113)] = {13,0x14F6}, + [I(110,113)] = {13,0x1576}, + [I(111,113)] = {12,0x3F6}, + [I(112,113)] = {13,0x15F6}, + [I(113,113)] = {14,0x3B76}, + [I(114,113)] = {13,0x1676}, + [I(115,113)] = {12,0x476}, + [I(116,113)] = {12,0x4F6}, + [I(117,113)] = {13,0x16F6}, + [I(118,113)] = {14,0x3BF6}, + [I(119,113)] = {14,0x3C76}, + [I(120,113)] = {14,0x3CF6}, + [I(121,113)] = {14,0x3D76}, + [I(122,113)] = {14,0x3DF6}, + [I(123,113)] = {22,0x3FFF76}, + [I(124,113)] = {18,0x3FE76}, + [I(125,113)] = {21,0x1FFEF6}, + [I(126,113)] = {20,0xFFEF6}, + [I(127,113)] = {64,0}, + [I(128,113)] = {27,0x7FFF376}, + [I(129,113)] = {29,0x1FFFE976}, + [I(130,113)] = {27,0x7FFF3F6}, + [I(131,113)] = {27,0x7FFF476}, + [I(132,113)] = {29,0x1FFFE9F6}, + [I(133,113)] = {29,0x1FFFEA76}, + [I(134,113)] = {29,0x1FFFEAF6}, + [I(135,113)] = {30,0x3FFFECF6}, + [I(136,113)] = {29,0x1FFFEB76}, + [I(137,113)] = {30,0x3FFFED76}, + [I(138,113)] = {30,0x3FFFEDF6}, + [I(139,113)] = {30,0x3FFFEE76}, + [I(140,113)] = {30,0x3FFFEEF6}, + [I(141,113)] = {30,0x3FFFEF76}, + [I(142,113)] = {31,0x7FFFF5F6}, + [I(143,113)] = {30,0x3FFFEFF6}, + [I(144,113)] = {31,0x7FFFF676}, + [I(145,113)] = {31,0x7FFFF6F6}, + [I(146,113)] = {29,0x1FFFEBF6}, + [I(147,113)] = {30,0x3FFFF076}, + [I(148,113)] = {31,0x7FFFF776}, + [I(149,113)] = {30,0x3FFFF0F6}, + [I(150,113)] = {30,0x3FFFF176}, + [I(151,113)] = {30,0x3FFFF1F6}, + [I(152,113)] = {30,0x3FFFF276}, + [I(153,113)] = {28,0xFFFEE76}, + [I(154,113)] = {29,0x1FFFEC76}, + [I(155,113)] = {30,0x3FFFF2F6}, + [I(156,113)] = {29,0x1FFFECF6}, + [I(157,113)] = {30,0x3FFFF376}, + [I(158,113)] = {30,0x3FFFF3F6}, + [I(159,113)] = {31,0x7FFFF7F6}, + [I(160,113)] = {29,0x1FFFED76}, + [I(161,113)] = {28,0xFFFEEF6}, + [I(162,113)] = {27,0x7FFF4F6}, + [I(163,113)] = {29,0x1FFFEDF6}, + [I(164,113)] = {29,0x1FFFEE76}, + [I(165,113)] = {30,0x3FFFF476}, + [I(166,113)] = {30,0x3FFFF4F6}, + [I(167,113)] = {28,0xFFFEF76}, + [I(168,113)] = {30,0x3FFFF576}, + [I(169,113)] = {29,0x1FFFEEF6}, + [I(170,113)] = {29,0x1FFFEF76}, + [I(171,113)] = {31,0x7FFFF876}, + [I(172,113)] = {28,0xFFFEFF6}, + [I(173,113)] = {29,0x1FFFEFF6}, + [I(174,113)] = {30,0x3FFFF5F6}, + [I(175,113)] = {30,0x3FFFF676}, + [I(176,113)] = {28,0xFFFF076}, + [I(177,113)] = {28,0xFFFF0F6}, + [I(178,113)] = {29,0x1FFFF076}, + [I(179,113)] = {28,0xFFFF176}, + [I(180,113)] = {30,0x3FFFF6F6}, + [I(181,113)] = {29,0x1FFFF0F6}, + [I(182,113)] = {30,0x3FFFF776}, + [I(183,113)] = {30,0x3FFFF7F6}, + [I(184,113)] = {27,0x7FFF576}, + [I(185,113)] = {29,0x1FFFF176}, + [I(186,113)] = {29,0x1FFFF1F6}, + [I(187,113)] = {29,0x1FFFF276}, + [I(188,113)] = {30,0x3FFFF876}, + [I(189,113)] = {29,0x1FFFF2F6}, + [I(190,113)] = {29,0x1FFFF376}, + [I(191,113)] = {30,0x3FFFF8F6}, + [I(192,113)] = {64,0}, + [I(193,113)] = {64,0}, + [I(194,113)] = {27,0x7FFF5F6}, + [I(195,113)] = {26,0x3FFF8F6}, + [I(196,113)] = {29,0x1FFFF3F6}, + [I(197,113)] = {30,0x3FFFF976}, + [I(198,113)] = {29,0x1FFFF476}, + [I(199,113)] = {X32,0xFFFFF676}, + [I(200,113)] = {64,0}, + [I(201,113)] = {64,0}, + [I(202,113)] = {64,0}, + [I(203,113)] = {64,0}, + [I(204,113)] = {64,0}, + [I(205,113)] = {64,0}, + [I(206,113)] = {31,0x7FFFF8F6}, + [I(207,113)] = {X32,0xFFFFF6F6}, + [I(208,113)] = {26,0x3FFF976}, + [I(209,113)] = {28,0xFFFF1F6}, + [I(210,113)] = {64,0}, + [I(211,113)] = {64,0}, + [I(212,113)] = {64,0}, + [I(213,113)] = {64,0}, + [I(214,113)] = {64,0}, + [I(215,113)] = {31,0x7FFFF976}, + [I(216,113)] = {28,0xFFFF276}, + [I(217,113)] = {28,0xFFFF2F6}, + [I(218,113)] = {64,0}, + [I(219,113)] = {64,0}, + [I(220,113)] = {64,0}, + [I(221,113)] = {64,0}, + [I(222,113)] = {64,0}, + [I(223,113)] = {64,0}, + [I(224,113)] = {27,0x7FFF676}, + [I(225,113)] = {31,0x7FFFF9F6}, + [I(226,113)] = {27,0x7FFF6F6}, + [I(227,113)] = {28,0xFFFF376}, + [I(228,113)] = {29,0x1FFFF4F6}, + [I(229,113)] = {28,0xFFFF3F6}, + [I(230,113)] = {28,0xFFFF476}, + [I(231,113)] = {30,0x3FFFF9F6}, + [I(232,113)] = {29,0x1FFFF576}, + [I(233,113)] = {29,0x1FFFF5F6}, + [I(234,113)] = {X32,0xFFFFF776}, + [I(235,113)] = {X32,0xFFFFF7F6}, + [I(236,113)] = {31,0x7FFFFA76}, + [I(237,113)] = {31,0x7FFFFAF6}, + [I(238,113)] = {64,0}, + [I(239,113)] = {30,0x3FFFFA76}, + [I(240,113)] = {64,0}, + [I(241,113)] = {64,0}, + [I(242,113)] = {64,0}, + [I(243,113)] = {64,0}, + [I(244,113)] = {64,0}, + [I(245,113)] = {64,0}, + [I(246,113)] = {64,0}, + [I(247,113)] = {64,0}, + [I(248,113)] = {64,0}, + [I(249,113)] = {64,0}, + [I(250,113)] = {64,0}, + [I(251,113)] = {64,0}, + [I(252,113)] = {64,0}, + [I(253,113)] = {64,0}, + [I(254,113)] = {64,0}, + [I(255,113)] = {64,0}, + [I(0,114)] = {19,0x7FE2C}, + [I(1,114)] = {29,0x1FFFF62C}, + [I(2,114)] = {64,0}, + [I(3,114)] = {64,0}, + [I(4,114)] = {64,0}, + [I(5,114)] = {64,0}, + [I(6,114)] = {64,0}, + [I(7,114)] = {64,0}, + [I(8,114)] = {64,0}, + [I(9,114)] = {30,0x3FFFFAAC}, + [I(10,114)] = {64,0}, + [I(11,114)] = {64,0}, + [I(12,114)] = {64,0}, + [I(13,114)] = {64,0}, + [I(14,114)] = {64,0}, + [I(15,114)] = {64,0}, + [I(16,114)] = {64,0}, + [I(17,114)] = {64,0}, + [I(18,114)] = {64,0}, + [I(19,114)] = {64,0}, + [I(20,114)] = {64,0}, + [I(21,114)] = {64,0}, + [I(22,114)] = {64,0}, + [I(23,114)] = {64,0}, + [I(24,114)] = {64,0}, + [I(25,114)] = {64,0}, + [I(26,114)] = {64,0}, + [I(27,114)] = {64,0}, + [I(28,114)] = {64,0}, + [I(29,114)] = {64,0}, + [I(30,114)] = {64,0}, + [I(31,114)] = {64,0}, + [I(32,114)] = {12,0x52C}, + [I(33,114)] = {16,0xFE2C}, + [I(34,114)] = {16,0xFE6C}, + [I(35,114)] = {18,0x3FEAC}, + [I(36,114)] = {19,0x7FE6C}, + [I(37,114)] = {12,0x56C}, + [I(38,114)] = {14,0x3E2C}, + [I(39,114)] = {17,0x1FEAC}, + [I(40,114)] = {16,0xFEAC}, + [I(41,114)] = {16,0xFEEC}, + [I(42,114)] = {14,0x3E6C}, + [I(43,114)] = {17,0x1FEEC}, + [I(44,114)] = {14,0x3EAC}, + [I(45,114)] = {12,0x5AC}, + [I(46,114)] = {12,0x5EC}, + [I(47,114)] = {12,0x62C}, + [I(48,114)] = {11,0x2C}, + [I(49,114)] = {11,0x6C}, + [I(50,114)] = {11,0xAC}, + [I(51,114)] = {12,0x66C}, + [I(52,114)] = {12,0x6AC}, + [I(53,114)] = {12,0x6EC}, + [I(54,114)] = {12,0x72C}, + [I(55,114)] = {12,0x76C}, + [I(56,114)] = {12,0x7AC}, + [I(57,114)] = {12,0x7EC}, + [I(58,114)] = {13,0x172C}, + [I(59,114)] = {14,0x3EEC}, + [I(60,114)] = {21,0x1FFF2C}, + [I(61,114)] = {12,0x82C}, + [I(62,114)] = {18,0x3FEEC}, + [I(63,114)] = {16,0xFF2C}, + [I(64,114)] = {19,0x7FEAC}, + [I(65,114)] = {12,0x86C}, + [I(66,114)] = {13,0x176C}, + [I(67,114)] = {13,0x17AC}, + [I(68,114)] = {13,0x17EC}, + [I(69,114)] = {13,0x182C}, + [I(70,114)] = {13,0x186C}, + [I(71,114)] = {13,0x18AC}, + [I(72,114)] = {13,0x18EC}, + [I(73,114)] = {13,0x192C}, + [I(74,114)] = {13,0x196C}, + [I(75,114)] = {13,0x19AC}, + [I(76,114)] = {13,0x19EC}, + [I(77,114)] = {13,0x1A2C}, + [I(78,114)] = {13,0x1A6C}, + [I(79,114)] = {13,0x1AAC}, + [I(80,114)] = {13,0x1AEC}, + [I(81,114)] = {13,0x1B2C}, + [I(82,114)] = {13,0x1B6C}, + [I(83,114)] = {13,0x1BAC}, + [I(84,114)] = {13,0x1BEC}, + [I(85,114)] = {13,0x1C2C}, + [I(86,114)] = {13,0x1C6C}, + [I(87,114)] = {13,0x1CAC}, + [I(88,114)] = {14,0x3F2C}, + [I(89,114)] = {13,0x1CEC}, + [I(90,114)] = {14,0x3F6C}, + [I(91,114)] = {19,0x7FEEC}, + [I(92,114)] = {25,0x1FFFC2C}, + [I(93,114)] = {19,0x7FF2C}, + [I(94,114)] = {20,0xFFF2C}, + [I(95,114)] = {12,0x8AC}, + [I(96,114)] = {21,0x1FFF6C}, + [I(97,114)] = {11,0xEC}, + [I(98,114)] = {12,0x8EC}, + [I(99,114)] = {11,0x12C}, + [I(100,114)] = {12,0x92C}, + [I(101,114)] = {11,0x16C}, + [I(102,114)] = {12,0x96C}, + [I(103,114)] = {12,0x9AC}, + [I(104,114)] = {12,0x9EC}, + [I(105,114)] = {11,0x1AC}, + [I(106,114)] = {13,0x1D2C}, + [I(107,114)] = {13,0x1D6C}, + [I(108,114)] = {12,0xA2C}, + [I(109,114)] = {12,0xA6C}, + [I(110,114)] = {12,0xAAC}, + [I(111,114)] = {11,0x1EC}, + [I(112,114)] = {12,0xAEC}, + [I(113,114)] = {13,0x1DAC}, + [I(114,114)] = {12,0xB2C}, + [I(115,114)] = {11,0x22C}, + [I(116,114)] = {11,0x26C}, + [I(117,114)] = {12,0xB6C}, + [I(118,114)] = {13,0x1DEC}, + [I(119,114)] = {13,0x1E2C}, + [I(120,114)] = {13,0x1E6C}, + [I(121,114)] = {13,0x1EAC}, + [I(122,114)] = {13,0x1EEC}, + [I(123,114)] = {21,0x1FFFAC}, + [I(124,114)] = {17,0x1FF2C}, + [I(125,114)] = {20,0xFFF6C}, + [I(126,114)] = {19,0x7FF6C}, + [I(127,114)] = {64,0}, + [I(128,114)] = {26,0x3FFF9AC}, + [I(129,114)] = {28,0xFFFF4AC}, + [I(130,114)] = {26,0x3FFF9EC}, + [I(131,114)] = {26,0x3FFFA2C}, + [I(132,114)] = {28,0xFFFF4EC}, + [I(133,114)] = {28,0xFFFF52C}, + [I(134,114)] = {28,0xFFFF56C}, + [I(135,114)] = {29,0x1FFFF66C}, + [I(136,114)] = {28,0xFFFF5AC}, + [I(137,114)] = {29,0x1FFFF6AC}, + [I(138,114)] = {29,0x1FFFF6EC}, + [I(139,114)] = {29,0x1FFFF72C}, + [I(140,114)] = {29,0x1FFFF76C}, + [I(141,114)] = {29,0x1FFFF7AC}, + [I(142,114)] = {30,0x3FFFFAEC}, + [I(143,114)] = {29,0x1FFFF7EC}, + [I(144,114)] = {30,0x3FFFFB2C}, + [I(145,114)] = {30,0x3FFFFB6C}, + [I(146,114)] = {28,0xFFFF5EC}, + [I(147,114)] = {29,0x1FFFF82C}, + [I(148,114)] = {30,0x3FFFFBAC}, + [I(149,114)] = {29,0x1FFFF86C}, + [I(150,114)] = {29,0x1FFFF8AC}, + [I(151,114)] = {29,0x1FFFF8EC}, + [I(152,114)] = {29,0x1FFFF92C}, + [I(153,114)] = {27,0x7FFF72C}, + [I(154,114)] = {28,0xFFFF62C}, + [I(155,114)] = {29,0x1FFFF96C}, + [I(156,114)] = {28,0xFFFF66C}, + [I(157,114)] = {29,0x1FFFF9AC}, + [I(158,114)] = {29,0x1FFFF9EC}, + [I(159,114)] = {30,0x3FFFFBEC}, + [I(160,114)] = {28,0xFFFF6AC}, + [I(161,114)] = {27,0x7FFF76C}, + [I(162,114)] = {26,0x3FFFA6C}, + [I(163,114)] = {28,0xFFFF6EC}, + [I(164,114)] = {28,0xFFFF72C}, + [I(165,114)] = {29,0x1FFFFA2C}, + [I(166,114)] = {29,0x1FFFFA6C}, + [I(167,114)] = {27,0x7FFF7AC}, + [I(168,114)] = {29,0x1FFFFAAC}, + [I(169,114)] = {28,0xFFFF76C}, + [I(170,114)] = {28,0xFFFF7AC}, + [I(171,114)] = {30,0x3FFFFC2C}, + [I(172,114)] = {27,0x7FFF7EC}, + [I(173,114)] = {28,0xFFFF7EC}, + [I(174,114)] = {29,0x1FFFFAEC}, + [I(175,114)] = {29,0x1FFFFB2C}, + [I(176,114)] = {27,0x7FFF82C}, + [I(177,114)] = {27,0x7FFF86C}, + [I(178,114)] = {28,0xFFFF82C}, + [I(179,114)] = {27,0x7FFF8AC}, + [I(180,114)] = {29,0x1FFFFB6C}, + [I(181,114)] = {28,0xFFFF86C}, + [I(182,114)] = {29,0x1FFFFBAC}, + [I(183,114)] = {29,0x1FFFFBEC}, + [I(184,114)] = {26,0x3FFFAAC}, + [I(185,114)] = {28,0xFFFF8AC}, + [I(186,114)] = {28,0xFFFF8EC}, + [I(187,114)] = {28,0xFFFF92C}, + [I(188,114)] = {29,0x1FFFFC2C}, + [I(189,114)] = {28,0xFFFF96C}, + [I(190,114)] = {28,0xFFFF9AC}, + [I(191,114)] = {29,0x1FFFFC6C}, + [I(192,114)] = {X32,0xFFFFF82C}, + [I(193,114)] = {X32,0xFFFFF86C}, + [I(194,114)] = {26,0x3FFFAEC}, + [I(195,114)] = {25,0x1FFFC6C}, + [I(196,114)] = {28,0xFFFF9EC}, + [I(197,114)] = {29,0x1FFFFCAC}, + [I(198,114)] = {28,0xFFFFA2C}, + [I(199,114)] = {31,0x7FFFFB2C}, + [I(200,114)] = {X32,0xFFFFF8AC}, + [I(201,114)] = {X32,0xFFFFF8EC}, + [I(202,114)] = {X32,0xFFFFF92C}, + [I(203,114)] = {64,0}, + [I(204,114)] = {64,0}, + [I(205,114)] = {X32,0xFFFFF96C}, + [I(206,114)] = {30,0x3FFFFC6C}, + [I(207,114)] = {31,0x7FFFFB6C}, + [I(208,114)] = {25,0x1FFFCAC}, + [I(209,114)] = {27,0x7FFF8EC}, + [I(210,114)] = {X32,0xFFFFF9AC}, + [I(211,114)] = {64,0}, + [I(212,114)] = {64,0}, + [I(213,114)] = {X32,0xFFFFF9EC}, + [I(214,114)] = {64,0}, + [I(215,114)] = {30,0x3FFFFCAC}, + [I(216,114)] = {27,0x7FFF92C}, + [I(217,114)] = {27,0x7FFF96C}, + [I(218,114)] = {X32,0xFFFFFA2C}, + [I(219,114)] = {X32,0xFFFFFA6C}, + [I(220,114)] = {64,0}, + [I(221,114)] = {64,0}, + [I(222,114)] = {64,0}, + [I(223,114)] = {64,0}, + [I(224,114)] = {26,0x3FFFB2C}, + [I(225,114)] = {30,0x3FFFFCEC}, + [I(226,114)] = {26,0x3FFFB6C}, + [I(227,114)] = {27,0x7FFF9AC}, + [I(228,114)] = {28,0xFFFFA6C}, + [I(229,114)] = {27,0x7FFF9EC}, + [I(230,114)] = {27,0x7FFFA2C}, + [I(231,114)] = {29,0x1FFFFCEC}, + [I(232,114)] = {28,0xFFFFAAC}, + [I(233,114)] = {28,0xFFFFAEC}, + [I(234,114)] = {31,0x7FFFFBAC}, + [I(235,114)] = {31,0x7FFFFBEC}, + [I(236,114)] = {30,0x3FFFFD2C}, + [I(237,114)] = {30,0x3FFFFD6C}, + [I(238,114)] = {X32,0xFFFFFAAC}, + [I(239,114)] = {29,0x1FFFFD2C}, + [I(240,114)] = {X32,0xFFFFFAEC}, + [I(241,114)] = {64,0}, + [I(242,114)] = {X32,0xFFFFFB2C}, + [I(243,114)] = {X32,0xFFFFFB6C}, + [I(244,114)] = {64,0}, + [I(245,114)] = {64,0}, + [I(246,114)] = {64,0}, + [I(247,114)] = {64,0}, + [I(248,114)] = {64,0}, + [I(249,114)] = {64,0}, + [I(250,114)] = {64,0}, + [I(251,114)] = {64,0}, + [I(252,114)] = {64,0}, + [I(253,114)] = {64,0}, + [I(254,114)] = {64,0}, + [I(255,114)] = {X32,0xFFFFFBAC}, + [I(0,115)] = {18,0x3FF08}, + [I(1,115)] = {28,0xFFFFB08}, + [I(2,115)] = {64,0}, + [I(3,115)] = {64,0}, + [I(4,115)] = {64,0}, + [I(5,115)] = {64,0}, + [I(6,115)] = {64,0}, + [I(7,115)] = {64,0}, + [I(8,115)] = {64,0}, + [I(9,115)] = {29,0x1FFFFD48}, + [I(10,115)] = {64,0}, + [I(11,115)] = {64,0}, + [I(12,115)] = {64,0}, + [I(13,115)] = {64,0}, + [I(14,115)] = {64,0}, + [I(15,115)] = {64,0}, + [I(16,115)] = {64,0}, + [I(17,115)] = {64,0}, + [I(18,115)] = {64,0}, + [I(19,115)] = {64,0}, + [I(20,115)] = {64,0}, + [I(21,115)] = {64,0}, + [I(22,115)] = {64,0}, + [I(23,115)] = {64,0}, + [I(24,115)] = {64,0}, + [I(25,115)] = {64,0}, + [I(26,115)] = {64,0}, + [I(27,115)] = {64,0}, + [I(28,115)] = {64,0}, + [I(29,115)] = {64,0}, + [I(30,115)] = {64,0}, + [I(31,115)] = {64,0}, + [I(32,115)] = {11,0x288}, + [I(33,115)] = {15,0x7F08}, + [I(34,115)] = {15,0x7F28}, + [I(35,115)] = {17,0x1FF48}, + [I(36,115)] = {18,0x3FF28}, + [I(37,115)] = {11,0x2A8}, + [I(38,115)] = {13,0x1F08}, + [I(39,115)] = {16,0xFF48}, + [I(40,115)] = {15,0x7F48}, + [I(41,115)] = {15,0x7F68}, + [I(42,115)] = {13,0x1F28}, + [I(43,115)] = {16,0xFF68}, + [I(44,115)] = {13,0x1F48}, + [I(45,115)] = {11,0x2C8}, + [I(46,115)] = {11,0x2E8}, + [I(47,115)] = {11,0x308}, + [I(48,115)] = {10,0x8}, + [I(49,115)] = {10,0x28}, + [I(50,115)] = {10,0x48}, + [I(51,115)] = {11,0x328}, + [I(52,115)] = {11,0x348}, + [I(53,115)] = {11,0x368}, + [I(54,115)] = {11,0x388}, + [I(55,115)] = {11,0x3A8}, + [I(56,115)] = {11,0x3C8}, + [I(57,115)] = {11,0x3E8}, + [I(58,115)] = {12,0xB88}, + [I(59,115)] = {13,0x1F68}, + [I(60,115)] = {20,0xFFF88}, + [I(61,115)] = {11,0x408}, + [I(62,115)] = {17,0x1FF68}, + [I(63,115)] = {15,0x7F88}, + [I(64,115)] = {18,0x3FF48}, + [I(65,115)] = {11,0x428}, + [I(66,115)] = {12,0xBA8}, + [I(67,115)] = {12,0xBC8}, + [I(68,115)] = {12,0xBE8}, + [I(69,115)] = {12,0xC08}, + [I(70,115)] = {12,0xC28}, + [I(71,115)] = {12,0xC48}, + [I(72,115)] = {12,0xC68}, + [I(73,115)] = {12,0xC88}, + [I(74,115)] = {12,0xCA8}, + [I(75,115)] = {12,0xCC8}, + [I(76,115)] = {12,0xCE8}, + [I(77,115)] = {12,0xD08}, + [I(78,115)] = {12,0xD28}, + [I(79,115)] = {12,0xD48}, + [I(80,115)] = {12,0xD68}, + [I(81,115)] = {12,0xD88}, + [I(82,115)] = {12,0xDA8}, + [I(83,115)] = {12,0xDC8}, + [I(84,115)] = {12,0xDE8}, + [I(85,115)] = {12,0xE08}, + [I(86,115)] = {12,0xE28}, + [I(87,115)] = {12,0xE48}, + [I(88,115)] = {13,0x1F88}, + [I(89,115)] = {12,0xE68}, + [I(90,115)] = {13,0x1FA8}, + [I(91,115)] = {18,0x3FF68}, + [I(92,115)] = {24,0xFFFE08}, + [I(93,115)] = {18,0x3FF88}, + [I(94,115)] = {19,0x7FF88}, + [I(95,115)] = {11,0x448}, + [I(96,115)] = {20,0xFFFA8}, + [I(97,115)] = {10,0x68}, + [I(98,115)] = {11,0x468}, + [I(99,115)] = {10,0x88}, + [I(100,115)] = {11,0x488}, + [I(101,115)] = {10,0xA8}, + [I(102,115)] = {11,0x4A8}, + [I(103,115)] = {11,0x4C8}, + [I(104,115)] = {11,0x4E8}, + [I(105,115)] = {10,0xC8}, + [I(106,115)] = {12,0xE88}, + [I(107,115)] = {12,0xEA8}, + [I(108,115)] = {11,0x508}, + [I(109,115)] = {11,0x528}, + [I(110,115)] = {11,0x548}, + [I(111,115)] = {10,0xE8}, + [I(112,115)] = {11,0x568}, + [I(113,115)] = {12,0xEC8}, + [I(114,115)] = {11,0x588}, + [I(115,115)] = {10,0x108}, + [I(116,115)] = {10,0x128}, + [I(117,115)] = {11,0x5A8}, + [I(118,115)] = {12,0xEE8}, + [I(119,115)] = {12,0xF08}, + [I(120,115)] = {12,0xF28}, + [I(121,115)] = {12,0xF48}, + [I(122,115)] = {12,0xF68}, + [I(123,115)] = {20,0xFFFC8}, + [I(124,115)] = {16,0xFF88}, + [I(125,115)] = {19,0x7FFA8}, + [I(126,115)] = {18,0x3FFA8}, + [I(127,115)] = {64,0}, + [I(128,115)] = {25,0x1FFFCC8}, + [I(129,115)] = {27,0x7FFFA48}, + [I(130,115)] = {25,0x1FFFCE8}, + [I(131,115)] = {25,0x1FFFD08}, + [I(132,115)] = {27,0x7FFFA68}, + [I(133,115)] = {27,0x7FFFA88}, + [I(134,115)] = {27,0x7FFFAA8}, + [I(135,115)] = {28,0xFFFFB28}, + [I(136,115)] = {27,0x7FFFAC8}, + [I(137,115)] = {28,0xFFFFB48}, + [I(138,115)] = {28,0xFFFFB68}, + [I(139,115)] = {28,0xFFFFB88}, + [I(140,115)] = {28,0xFFFFBA8}, + [I(141,115)] = {28,0xFFFFBC8}, + [I(142,115)] = {29,0x1FFFFD68}, + [I(143,115)] = {28,0xFFFFBE8}, + [I(144,115)] = {29,0x1FFFFD88}, + [I(145,115)] = {29,0x1FFFFDA8}, + [I(146,115)] = {27,0x7FFFAE8}, + [I(147,115)] = {28,0xFFFFC08}, + [I(148,115)] = {29,0x1FFFFDC8}, + [I(149,115)] = {28,0xFFFFC28}, + [I(150,115)] = {28,0xFFFFC48}, + [I(151,115)] = {28,0xFFFFC68}, + [I(152,115)] = {28,0xFFFFC88}, + [I(153,115)] = {26,0x3FFFB88}, + [I(154,115)] = {27,0x7FFFB08}, + [I(155,115)] = {28,0xFFFFCA8}, + [I(156,115)] = {27,0x7FFFB28}, + [I(157,115)] = {28,0xFFFFCC8}, + [I(158,115)] = {28,0xFFFFCE8}, + [I(159,115)] = {29,0x1FFFFDE8}, + [I(160,115)] = {27,0x7FFFB48}, + [I(161,115)] = {26,0x3FFFBA8}, + [I(162,115)] = {25,0x1FFFD28}, + [I(163,115)] = {27,0x7FFFB68}, + [I(164,115)] = {27,0x7FFFB88}, + [I(165,115)] = {28,0xFFFFD08}, + [I(166,115)] = {28,0xFFFFD28}, + [I(167,115)] = {26,0x3FFFBC8}, + [I(168,115)] = {28,0xFFFFD48}, + [I(169,115)] = {27,0x7FFFBA8}, + [I(170,115)] = {27,0x7FFFBC8}, + [I(171,115)] = {29,0x1FFFFE08}, + [I(172,115)] = {26,0x3FFFBE8}, + [I(173,115)] = {27,0x7FFFBE8}, + [I(174,115)] = {28,0xFFFFD68}, + [I(175,115)] = {28,0xFFFFD88}, + [I(176,115)] = {26,0x3FFFC08}, + [I(177,115)] = {26,0x3FFFC28}, + [I(178,115)] = {27,0x7FFFC08}, + [I(179,115)] = {26,0x3FFFC48}, + [I(180,115)] = {28,0xFFFFDA8}, + [I(181,115)] = {27,0x7FFFC28}, + [I(182,115)] = {28,0xFFFFDC8}, + [I(183,115)] = {28,0xFFFFDE8}, + [I(184,115)] = {25,0x1FFFD48}, + [I(185,115)] = {27,0x7FFFC48}, + [I(186,115)] = {27,0x7FFFC68}, + [I(187,115)] = {27,0x7FFFC88}, + [I(188,115)] = {28,0xFFFFE08}, + [I(189,115)] = {27,0x7FFFCA8}, + [I(190,115)] = {27,0x7FFFCC8}, + [I(191,115)] = {28,0xFFFFE28}, + [I(192,115)] = {31,0x7FFFFC08}, + [I(193,115)] = {31,0x7FFFFC28}, + [I(194,115)] = {25,0x1FFFD68}, + [I(195,115)] = {24,0xFFFE28}, + [I(196,115)] = {27,0x7FFFCE8}, + [I(197,115)] = {28,0xFFFFE48}, + [I(198,115)] = {27,0x7FFFD08}, + [I(199,115)] = {30,0x3FFFFD88}, + [I(200,115)] = {31,0x7FFFFC48}, + [I(201,115)] = {31,0x7FFFFC68}, + [I(202,115)] = {31,0x7FFFFC88}, + [I(203,115)] = {X32,0xFFFFFBC8}, + [I(204,115)] = {X32,0xFFFFFBE8}, + [I(205,115)] = {31,0x7FFFFCA8}, + [I(206,115)] = {29,0x1FFFFE28}, + [I(207,115)] = {30,0x3FFFFDA8}, + [I(208,115)] = {24,0xFFFE48}, + [I(209,115)] = {26,0x3FFFC68}, + [I(210,115)] = {31,0x7FFFFCC8}, + [I(211,115)] = {X32,0xFFFFFC08}, + [I(212,115)] = {X32,0xFFFFFC28}, + [I(213,115)] = {31,0x7FFFFCE8}, + [I(214,115)] = {X32,0xFFFFFC48}, + [I(215,115)] = {29,0x1FFFFE48}, + [I(216,115)] = {26,0x3FFFC88}, + [I(217,115)] = {26,0x3FFFCA8}, + [I(218,115)] = {31,0x7FFFFD08}, + [I(219,115)] = {31,0x7FFFFD28}, + [I(220,115)] = {64,0}, + [I(221,115)] = {X32,0xFFFFFC68}, + [I(222,115)] = {X32,0xFFFFFC88}, + [I(223,115)] = {X32,0xFFFFFCA8}, + [I(224,115)] = {25,0x1FFFD88}, + [I(225,115)] = {29,0x1FFFFE68}, + [I(226,115)] = {25,0x1FFFDA8}, + [I(227,115)] = {26,0x3FFFCC8}, + [I(228,115)] = {27,0x7FFFD28}, + [I(229,115)] = {26,0x3FFFCE8}, + [I(230,115)] = {26,0x3FFFD08}, + [I(231,115)] = {28,0xFFFFE68}, + [I(232,115)] = {27,0x7FFFD48}, + [I(233,115)] = {27,0x7FFFD68}, + [I(234,115)] = {30,0x3FFFFDC8}, + [I(235,115)] = {30,0x3FFFFDE8}, + [I(236,115)] = {29,0x1FFFFE88}, + [I(237,115)] = {29,0x1FFFFEA8}, + [I(238,115)] = {31,0x7FFFFD48}, + [I(239,115)] = {28,0xFFFFE88}, + [I(240,115)] = {31,0x7FFFFD68}, + [I(241,115)] = {X32,0xFFFFFCC8}, + [I(242,115)] = {31,0x7FFFFD88}, + [I(243,115)] = {31,0x7FFFFDA8}, + [I(244,115)] = {X32,0xFFFFFCE8}, + [I(245,115)] = {X32,0xFFFFFD08}, + [I(246,115)] = {X32,0xFFFFFD28}, + [I(247,115)] = {X32,0xFFFFFD48}, + [I(248,115)] = {X32,0xFFFFFD68}, + [I(249,115)] = {64,0}, + [I(250,115)] = {X32,0xFFFFFD88}, + [I(251,115)] = {X32,0xFFFFFDA8}, + [I(252,115)] = {X32,0xFFFFFDC8}, + [I(253,115)] = {X32,0xFFFFFDE8}, + [I(254,115)] = {X32,0xFFFFFE08}, + [I(255,115)] = {31,0x7FFFFDC8}, + [I(0,116)] = {18,0x3FF09}, + [I(1,116)] = {28,0xFFFFB09}, + [I(2,116)] = {64,0}, + [I(3,116)] = {64,0}, + [I(4,116)] = {64,0}, + [I(5,116)] = {64,0}, + [I(6,116)] = {64,0}, + [I(7,116)] = {64,0}, + [I(8,116)] = {64,0}, + [I(9,116)] = {29,0x1FFFFD49}, + [I(10,116)] = {64,0}, + [I(11,116)] = {64,0}, + [I(12,116)] = {64,0}, + [I(13,116)] = {64,0}, + [I(14,116)] = {64,0}, + [I(15,116)] = {64,0}, + [I(16,116)] = {64,0}, + [I(17,116)] = {64,0}, + [I(18,116)] = {64,0}, + [I(19,116)] = {64,0}, + [I(20,116)] = {64,0}, + [I(21,116)] = {64,0}, + [I(22,116)] = {64,0}, + [I(23,116)] = {64,0}, + [I(24,116)] = {64,0}, + [I(25,116)] = {64,0}, + [I(26,116)] = {64,0}, + [I(27,116)] = {64,0}, + [I(28,116)] = {64,0}, + [I(29,116)] = {64,0}, + [I(30,116)] = {64,0}, + [I(31,116)] = {64,0}, + [I(32,116)] = {11,0x289}, + [I(33,116)] = {15,0x7F09}, + [I(34,116)] = {15,0x7F29}, + [I(35,116)] = {17,0x1FF49}, + [I(36,116)] = {18,0x3FF29}, + [I(37,116)] = {11,0x2A9}, + [I(38,116)] = {13,0x1F09}, + [I(39,116)] = {16,0xFF49}, + [I(40,116)] = {15,0x7F49}, + [I(41,116)] = {15,0x7F69}, + [I(42,116)] = {13,0x1F29}, + [I(43,116)] = {16,0xFF69}, + [I(44,116)] = {13,0x1F49}, + [I(45,116)] = {11,0x2C9}, + [I(46,116)] = {11,0x2E9}, + [I(47,116)] = {11,0x309}, + [I(48,116)] = {10,0x9}, + [I(49,116)] = {10,0x29}, + [I(50,116)] = {10,0x49}, + [I(51,116)] = {11,0x329}, + [I(52,116)] = {11,0x349}, + [I(53,116)] = {11,0x369}, + [I(54,116)] = {11,0x389}, + [I(55,116)] = {11,0x3A9}, + [I(56,116)] = {11,0x3C9}, + [I(57,116)] = {11,0x3E9}, + [I(58,116)] = {12,0xB89}, + [I(59,116)] = {13,0x1F69}, + [I(60,116)] = {20,0xFFF89}, + [I(61,116)] = {11,0x409}, + [I(62,116)] = {17,0x1FF69}, + [I(63,116)] = {15,0x7F89}, + [I(64,116)] = {18,0x3FF49}, + [I(65,116)] = {11,0x429}, + [I(66,116)] = {12,0xBA9}, + [I(67,116)] = {12,0xBC9}, + [I(68,116)] = {12,0xBE9}, + [I(69,116)] = {12,0xC09}, + [I(70,116)] = {12,0xC29}, + [I(71,116)] = {12,0xC49}, + [I(72,116)] = {12,0xC69}, + [I(73,116)] = {12,0xC89}, + [I(74,116)] = {12,0xCA9}, + [I(75,116)] = {12,0xCC9}, + [I(76,116)] = {12,0xCE9}, + [I(77,116)] = {12,0xD09}, + [I(78,116)] = {12,0xD29}, + [I(79,116)] = {12,0xD49}, + [I(80,116)] = {12,0xD69}, + [I(81,116)] = {12,0xD89}, + [I(82,116)] = {12,0xDA9}, + [I(83,116)] = {12,0xDC9}, + [I(84,116)] = {12,0xDE9}, + [I(85,116)] = {12,0xE09}, + [I(86,116)] = {12,0xE29}, + [I(87,116)] = {12,0xE49}, + [I(88,116)] = {13,0x1F89}, + [I(89,116)] = {12,0xE69}, + [I(90,116)] = {13,0x1FA9}, + [I(91,116)] = {18,0x3FF69}, + [I(92,116)] = {24,0xFFFE09}, + [I(93,116)] = {18,0x3FF89}, + [I(94,116)] = {19,0x7FF89}, + [I(95,116)] = {11,0x449}, + [I(96,116)] = {20,0xFFFA9}, + [I(97,116)] = {10,0x69}, + [I(98,116)] = {11,0x469}, + [I(99,116)] = {10,0x89}, + [I(100,116)] = {11,0x489}, + [I(101,116)] = {10,0xA9}, + [I(102,116)] = {11,0x4A9}, + [I(103,116)] = {11,0x4C9}, + [I(104,116)] = {11,0x4E9}, + [I(105,116)] = {10,0xC9}, + [I(106,116)] = {12,0xE89}, + [I(107,116)] = {12,0xEA9}, + [I(108,116)] = {11,0x509}, + [I(109,116)] = {11,0x529}, + [I(110,116)] = {11,0x549}, + [I(111,116)] = {10,0xE9}, + [I(112,116)] = {11,0x569}, + [I(113,116)] = {12,0xEC9}, + [I(114,116)] = {11,0x589}, + [I(115,116)] = {10,0x109}, + [I(116,116)] = {10,0x129}, + [I(117,116)] = {11,0x5A9}, + [I(118,116)] = {12,0xEE9}, + [I(119,116)] = {12,0xF09}, + [I(120,116)] = {12,0xF29}, + [I(121,116)] = {12,0xF49}, + [I(122,116)] = {12,0xF69}, + [I(123,116)] = {20,0xFFFC9}, + [I(124,116)] = {16,0xFF89}, + [I(125,116)] = {19,0x7FFA9}, + [I(126,116)] = {18,0x3FFA9}, + [I(127,116)] = {64,0}, + [I(128,116)] = {25,0x1FFFCC9}, + [I(129,116)] = {27,0x7FFFA49}, + [I(130,116)] = {25,0x1FFFCE9}, + [I(131,116)] = {25,0x1FFFD09}, + [I(132,116)] = {27,0x7FFFA69}, + [I(133,116)] = {27,0x7FFFA89}, + [I(134,116)] = {27,0x7FFFAA9}, + [I(135,116)] = {28,0xFFFFB29}, + [I(136,116)] = {27,0x7FFFAC9}, + [I(137,116)] = {28,0xFFFFB49}, + [I(138,116)] = {28,0xFFFFB69}, + [I(139,116)] = {28,0xFFFFB89}, + [I(140,116)] = {28,0xFFFFBA9}, + [I(141,116)] = {28,0xFFFFBC9}, + [I(142,116)] = {29,0x1FFFFD69}, + [I(143,116)] = {28,0xFFFFBE9}, + [I(144,116)] = {29,0x1FFFFD89}, + [I(145,116)] = {29,0x1FFFFDA9}, + [I(146,116)] = {27,0x7FFFAE9}, + [I(147,116)] = {28,0xFFFFC09}, + [I(148,116)] = {29,0x1FFFFDC9}, + [I(149,116)] = {28,0xFFFFC29}, + [I(150,116)] = {28,0xFFFFC49}, + [I(151,116)] = {28,0xFFFFC69}, + [I(152,116)] = {28,0xFFFFC89}, + [I(153,116)] = {26,0x3FFFB89}, + [I(154,116)] = {27,0x7FFFB09}, + [I(155,116)] = {28,0xFFFFCA9}, + [I(156,116)] = {27,0x7FFFB29}, + [I(157,116)] = {28,0xFFFFCC9}, + [I(158,116)] = {28,0xFFFFCE9}, + [I(159,116)] = {29,0x1FFFFDE9}, + [I(160,116)] = {27,0x7FFFB49}, + [I(161,116)] = {26,0x3FFFBA9}, + [I(162,116)] = {25,0x1FFFD29}, + [I(163,116)] = {27,0x7FFFB69}, + [I(164,116)] = {27,0x7FFFB89}, + [I(165,116)] = {28,0xFFFFD09}, + [I(166,116)] = {28,0xFFFFD29}, + [I(167,116)] = {26,0x3FFFBC9}, + [I(168,116)] = {28,0xFFFFD49}, + [I(169,116)] = {27,0x7FFFBA9}, + [I(170,116)] = {27,0x7FFFBC9}, + [I(171,116)] = {29,0x1FFFFE09}, + [I(172,116)] = {26,0x3FFFBE9}, + [I(173,116)] = {27,0x7FFFBE9}, + [I(174,116)] = {28,0xFFFFD69}, + [I(175,116)] = {28,0xFFFFD89}, + [I(176,116)] = {26,0x3FFFC09}, + [I(177,116)] = {26,0x3FFFC29}, + [I(178,116)] = {27,0x7FFFC09}, + [I(179,116)] = {26,0x3FFFC49}, + [I(180,116)] = {28,0xFFFFDA9}, + [I(181,116)] = {27,0x7FFFC29}, + [I(182,116)] = {28,0xFFFFDC9}, + [I(183,116)] = {28,0xFFFFDE9}, + [I(184,116)] = {25,0x1FFFD49}, + [I(185,116)] = {27,0x7FFFC49}, + [I(186,116)] = {27,0x7FFFC69}, + [I(187,116)] = {27,0x7FFFC89}, + [I(188,116)] = {28,0xFFFFE09}, + [I(189,116)] = {27,0x7FFFCA9}, + [I(190,116)] = {27,0x7FFFCC9}, + [I(191,116)] = {28,0xFFFFE29}, + [I(192,116)] = {31,0x7FFFFC09}, + [I(193,116)] = {31,0x7FFFFC29}, + [I(194,116)] = {25,0x1FFFD69}, + [I(195,116)] = {24,0xFFFE29}, + [I(196,116)] = {27,0x7FFFCE9}, + [I(197,116)] = {28,0xFFFFE49}, + [I(198,116)] = {27,0x7FFFD09}, + [I(199,116)] = {30,0x3FFFFD89}, + [I(200,116)] = {31,0x7FFFFC49}, + [I(201,116)] = {31,0x7FFFFC69}, + [I(202,116)] = {31,0x7FFFFC89}, + [I(203,116)] = {X32,0xFFFFFBC9}, + [I(204,116)] = {X32,0xFFFFFBE9}, + [I(205,116)] = {31,0x7FFFFCA9}, + [I(206,116)] = {29,0x1FFFFE29}, + [I(207,116)] = {30,0x3FFFFDA9}, + [I(208,116)] = {24,0xFFFE49}, + [I(209,116)] = {26,0x3FFFC69}, + [I(210,116)] = {31,0x7FFFFCC9}, + [I(211,116)] = {X32,0xFFFFFC09}, + [I(212,116)] = {X32,0xFFFFFC29}, + [I(213,116)] = {31,0x7FFFFCE9}, + [I(214,116)] = {X32,0xFFFFFC49}, + [I(215,116)] = {29,0x1FFFFE49}, + [I(216,116)] = {26,0x3FFFC89}, + [I(217,116)] = {26,0x3FFFCA9}, + [I(218,116)] = {31,0x7FFFFD09}, + [I(219,116)] = {31,0x7FFFFD29}, + [I(220,116)] = {64,0}, + [I(221,116)] = {X32,0xFFFFFC69}, + [I(222,116)] = {X32,0xFFFFFC89}, + [I(223,116)] = {X32,0xFFFFFCA9}, + [I(224,116)] = {25,0x1FFFD89}, + [I(225,116)] = {29,0x1FFFFE69}, + [I(226,116)] = {25,0x1FFFDA9}, + [I(227,116)] = {26,0x3FFFCC9}, + [I(228,116)] = {27,0x7FFFD29}, + [I(229,116)] = {26,0x3FFFCE9}, + [I(230,116)] = {26,0x3FFFD09}, + [I(231,116)] = {28,0xFFFFE69}, + [I(232,116)] = {27,0x7FFFD49}, + [I(233,116)] = {27,0x7FFFD69}, + [I(234,116)] = {30,0x3FFFFDC9}, + [I(235,116)] = {30,0x3FFFFDE9}, + [I(236,116)] = {29,0x1FFFFE89}, + [I(237,116)] = {29,0x1FFFFEA9}, + [I(238,116)] = {31,0x7FFFFD49}, + [I(239,116)] = {28,0xFFFFE89}, + [I(240,116)] = {31,0x7FFFFD69}, + [I(241,116)] = {X32,0xFFFFFCC9}, + [I(242,116)] = {31,0x7FFFFD89}, + [I(243,116)] = {31,0x7FFFFDA9}, + [I(244,116)] = {X32,0xFFFFFCE9}, + [I(245,116)] = {X32,0xFFFFFD09}, + [I(246,116)] = {X32,0xFFFFFD29}, + [I(247,116)] = {X32,0xFFFFFD49}, + [I(248,116)] = {X32,0xFFFFFD69}, + [I(249,116)] = {64,0}, + [I(250,116)] = {X32,0xFFFFFD89}, + [I(251,116)] = {X32,0xFFFFFDA9}, + [I(252,116)] = {X32,0xFFFFFDC9}, + [I(253,116)] = {X32,0xFFFFFDE9}, + [I(254,116)] = {X32,0xFFFFFE09}, + [I(255,116)] = {31,0x7FFFFDC9}, + [I(0,117)] = {19,0x7FE2D}, + [I(1,117)] = {29,0x1FFFF62D}, + [I(2,117)] = {64,0}, + [I(3,117)] = {64,0}, + [I(4,117)] = {64,0}, + [I(5,117)] = {64,0}, + [I(6,117)] = {64,0}, + [I(7,117)] = {64,0}, + [I(8,117)] = {64,0}, + [I(9,117)] = {30,0x3FFFFAAD}, + [I(10,117)] = {64,0}, + [I(11,117)] = {64,0}, + [I(12,117)] = {64,0}, + [I(13,117)] = {64,0}, + [I(14,117)] = {64,0}, + [I(15,117)] = {64,0}, + [I(16,117)] = {64,0}, + [I(17,117)] = {64,0}, + [I(18,117)] = {64,0}, + [I(19,117)] = {64,0}, + [I(20,117)] = {64,0}, + [I(21,117)] = {64,0}, + [I(22,117)] = {64,0}, + [I(23,117)] = {64,0}, + [I(24,117)] = {64,0}, + [I(25,117)] = {64,0}, + [I(26,117)] = {64,0}, + [I(27,117)] = {64,0}, + [I(28,117)] = {64,0}, + [I(29,117)] = {64,0}, + [I(30,117)] = {64,0}, + [I(31,117)] = {64,0}, + [I(32,117)] = {12,0x52D}, + [I(33,117)] = {16,0xFE2D}, + [I(34,117)] = {16,0xFE6D}, + [I(35,117)] = {18,0x3FEAD}, + [I(36,117)] = {19,0x7FE6D}, + [I(37,117)] = {12,0x56D}, + [I(38,117)] = {14,0x3E2D}, + [I(39,117)] = {17,0x1FEAD}, + [I(40,117)] = {16,0xFEAD}, + [I(41,117)] = {16,0xFEED}, + [I(42,117)] = {14,0x3E6D}, + [I(43,117)] = {17,0x1FEED}, + [I(44,117)] = {14,0x3EAD}, + [I(45,117)] = {12,0x5AD}, + [I(46,117)] = {12,0x5ED}, + [I(47,117)] = {12,0x62D}, + [I(48,117)] = {11,0x2D}, + [I(49,117)] = {11,0x6D}, + [I(50,117)] = {11,0xAD}, + [I(51,117)] = {12,0x66D}, + [I(52,117)] = {12,0x6AD}, + [I(53,117)] = {12,0x6ED}, + [I(54,117)] = {12,0x72D}, + [I(55,117)] = {12,0x76D}, + [I(56,117)] = {12,0x7AD}, + [I(57,117)] = {12,0x7ED}, + [I(58,117)] = {13,0x172D}, + [I(59,117)] = {14,0x3EED}, + [I(60,117)] = {21,0x1FFF2D}, + [I(61,117)] = {12,0x82D}, + [I(62,117)] = {18,0x3FEED}, + [I(63,117)] = {16,0xFF2D}, + [I(64,117)] = {19,0x7FEAD}, + [I(65,117)] = {12,0x86D}, + [I(66,117)] = {13,0x176D}, + [I(67,117)] = {13,0x17AD}, + [I(68,117)] = {13,0x17ED}, + [I(69,117)] = {13,0x182D}, + [I(70,117)] = {13,0x186D}, + [I(71,117)] = {13,0x18AD}, + [I(72,117)] = {13,0x18ED}, + [I(73,117)] = {13,0x192D}, + [I(74,117)] = {13,0x196D}, + [I(75,117)] = {13,0x19AD}, + [I(76,117)] = {13,0x19ED}, + [I(77,117)] = {13,0x1A2D}, + [I(78,117)] = {13,0x1A6D}, + [I(79,117)] = {13,0x1AAD}, + [I(80,117)] = {13,0x1AED}, + [I(81,117)] = {13,0x1B2D}, + [I(82,117)] = {13,0x1B6D}, + [I(83,117)] = {13,0x1BAD}, + [I(84,117)] = {13,0x1BED}, + [I(85,117)] = {13,0x1C2D}, + [I(86,117)] = {13,0x1C6D}, + [I(87,117)] = {13,0x1CAD}, + [I(88,117)] = {14,0x3F2D}, + [I(89,117)] = {13,0x1CED}, + [I(90,117)] = {14,0x3F6D}, + [I(91,117)] = {19,0x7FEED}, + [I(92,117)] = {25,0x1FFFC2D}, + [I(93,117)] = {19,0x7FF2D}, + [I(94,117)] = {20,0xFFF2D}, + [I(95,117)] = {12,0x8AD}, + [I(96,117)] = {21,0x1FFF6D}, + [I(97,117)] = {11,0xED}, + [I(98,117)] = {12,0x8ED}, + [I(99,117)] = {11,0x12D}, + [I(100,117)] = {12,0x92D}, + [I(101,117)] = {11,0x16D}, + [I(102,117)] = {12,0x96D}, + [I(103,117)] = {12,0x9AD}, + [I(104,117)] = {12,0x9ED}, + [I(105,117)] = {11,0x1AD}, + [I(106,117)] = {13,0x1D2D}, + [I(107,117)] = {13,0x1D6D}, + [I(108,117)] = {12,0xA2D}, + [I(109,117)] = {12,0xA6D}, + [I(110,117)] = {12,0xAAD}, + [I(111,117)] = {11,0x1ED}, + [I(112,117)] = {12,0xAED}, + [I(113,117)] = {13,0x1DAD}, + [I(114,117)] = {12,0xB2D}, + [I(115,117)] = {11,0x22D}, + [I(116,117)] = {11,0x26D}, + [I(117,117)] = {12,0xB6D}, + [I(118,117)] = {13,0x1DED}, + [I(119,117)] = {13,0x1E2D}, + [I(120,117)] = {13,0x1E6D}, + [I(121,117)] = {13,0x1EAD}, + [I(122,117)] = {13,0x1EED}, + [I(123,117)] = {21,0x1FFFAD}, + [I(124,117)] = {17,0x1FF2D}, + [I(125,117)] = {20,0xFFF6D}, + [I(126,117)] = {19,0x7FF6D}, + [I(127,117)] = {64,0}, + [I(128,117)] = {26,0x3FFF9AD}, + [I(129,117)] = {28,0xFFFF4AD}, + [I(130,117)] = {26,0x3FFF9ED}, + [I(131,117)] = {26,0x3FFFA2D}, + [I(132,117)] = {28,0xFFFF4ED}, + [I(133,117)] = {28,0xFFFF52D}, + [I(134,117)] = {28,0xFFFF56D}, + [I(135,117)] = {29,0x1FFFF66D}, + [I(136,117)] = {28,0xFFFF5AD}, + [I(137,117)] = {29,0x1FFFF6AD}, + [I(138,117)] = {29,0x1FFFF6ED}, + [I(139,117)] = {29,0x1FFFF72D}, + [I(140,117)] = {29,0x1FFFF76D}, + [I(141,117)] = {29,0x1FFFF7AD}, + [I(142,117)] = {30,0x3FFFFAED}, + [I(143,117)] = {29,0x1FFFF7ED}, + [I(144,117)] = {30,0x3FFFFB2D}, + [I(145,117)] = {30,0x3FFFFB6D}, + [I(146,117)] = {28,0xFFFF5ED}, + [I(147,117)] = {29,0x1FFFF82D}, + [I(148,117)] = {30,0x3FFFFBAD}, + [I(149,117)] = {29,0x1FFFF86D}, + [I(150,117)] = {29,0x1FFFF8AD}, + [I(151,117)] = {29,0x1FFFF8ED}, + [I(152,117)] = {29,0x1FFFF92D}, + [I(153,117)] = {27,0x7FFF72D}, + [I(154,117)] = {28,0xFFFF62D}, + [I(155,117)] = {29,0x1FFFF96D}, + [I(156,117)] = {28,0xFFFF66D}, + [I(157,117)] = {29,0x1FFFF9AD}, + [I(158,117)] = {29,0x1FFFF9ED}, + [I(159,117)] = {30,0x3FFFFBED}, + [I(160,117)] = {28,0xFFFF6AD}, + [I(161,117)] = {27,0x7FFF76D}, + [I(162,117)] = {26,0x3FFFA6D}, + [I(163,117)] = {28,0xFFFF6ED}, + [I(164,117)] = {28,0xFFFF72D}, + [I(165,117)] = {29,0x1FFFFA2D}, + [I(166,117)] = {29,0x1FFFFA6D}, + [I(167,117)] = {27,0x7FFF7AD}, + [I(168,117)] = {29,0x1FFFFAAD}, + [I(169,117)] = {28,0xFFFF76D}, + [I(170,117)] = {28,0xFFFF7AD}, + [I(171,117)] = {30,0x3FFFFC2D}, + [I(172,117)] = {27,0x7FFF7ED}, + [I(173,117)] = {28,0xFFFF7ED}, + [I(174,117)] = {29,0x1FFFFAED}, + [I(175,117)] = {29,0x1FFFFB2D}, + [I(176,117)] = {27,0x7FFF82D}, + [I(177,117)] = {27,0x7FFF86D}, + [I(178,117)] = {28,0xFFFF82D}, + [I(179,117)] = {27,0x7FFF8AD}, + [I(180,117)] = {29,0x1FFFFB6D}, + [I(181,117)] = {28,0xFFFF86D}, + [I(182,117)] = {29,0x1FFFFBAD}, + [I(183,117)] = {29,0x1FFFFBED}, + [I(184,117)] = {26,0x3FFFAAD}, + [I(185,117)] = {28,0xFFFF8AD}, + [I(186,117)] = {28,0xFFFF8ED}, + [I(187,117)] = {28,0xFFFF92D}, + [I(188,117)] = {29,0x1FFFFC2D}, + [I(189,117)] = {28,0xFFFF96D}, + [I(190,117)] = {28,0xFFFF9AD}, + [I(191,117)] = {29,0x1FFFFC6D}, + [I(192,117)] = {X32,0xFFFFF82D}, + [I(193,117)] = {X32,0xFFFFF86D}, + [I(194,117)] = {26,0x3FFFAED}, + [I(195,117)] = {25,0x1FFFC6D}, + [I(196,117)] = {28,0xFFFF9ED}, + [I(197,117)] = {29,0x1FFFFCAD}, + [I(198,117)] = {28,0xFFFFA2D}, + [I(199,117)] = {31,0x7FFFFB2D}, + [I(200,117)] = {X32,0xFFFFF8AD}, + [I(201,117)] = {X32,0xFFFFF8ED}, + [I(202,117)] = {X32,0xFFFFF92D}, + [I(203,117)] = {64,0}, + [I(204,117)] = {64,0}, + [I(205,117)] = {X32,0xFFFFF96D}, + [I(206,117)] = {30,0x3FFFFC6D}, + [I(207,117)] = {31,0x7FFFFB6D}, + [I(208,117)] = {25,0x1FFFCAD}, + [I(209,117)] = {27,0x7FFF8ED}, + [I(210,117)] = {X32,0xFFFFF9AD}, + [I(211,117)] = {64,0}, + [I(212,117)] = {64,0}, + [I(213,117)] = {X32,0xFFFFF9ED}, + [I(214,117)] = {64,0}, + [I(215,117)] = {30,0x3FFFFCAD}, + [I(216,117)] = {27,0x7FFF92D}, + [I(217,117)] = {27,0x7FFF96D}, + [I(218,117)] = {X32,0xFFFFFA2D}, + [I(219,117)] = {X32,0xFFFFFA6D}, + [I(220,117)] = {64,0}, + [I(221,117)] = {64,0}, + [I(222,117)] = {64,0}, + [I(223,117)] = {64,0}, + [I(224,117)] = {26,0x3FFFB2D}, + [I(225,117)] = {30,0x3FFFFCED}, + [I(226,117)] = {26,0x3FFFB6D}, + [I(227,117)] = {27,0x7FFF9AD}, + [I(228,117)] = {28,0xFFFFA6D}, + [I(229,117)] = {27,0x7FFF9ED}, + [I(230,117)] = {27,0x7FFFA2D}, + [I(231,117)] = {29,0x1FFFFCED}, + [I(232,117)] = {28,0xFFFFAAD}, + [I(233,117)] = {28,0xFFFFAED}, + [I(234,117)] = {31,0x7FFFFBAD}, + [I(235,117)] = {31,0x7FFFFBED}, + [I(236,117)] = {30,0x3FFFFD2D}, + [I(237,117)] = {30,0x3FFFFD6D}, + [I(238,117)] = {X32,0xFFFFFAAD}, + [I(239,117)] = {29,0x1FFFFD2D}, + [I(240,117)] = {X32,0xFFFFFAED}, + [I(241,117)] = {64,0}, + [I(242,117)] = {X32,0xFFFFFB2D}, + [I(243,117)] = {X32,0xFFFFFB6D}, + [I(244,117)] = {64,0}, + [I(245,117)] = {64,0}, + [I(246,117)] = {64,0}, + [I(247,117)] = {64,0}, + [I(248,117)] = {64,0}, + [I(249,117)] = {64,0}, + [I(250,117)] = {64,0}, + [I(251,117)] = {64,0}, + [I(252,117)] = {64,0}, + [I(253,117)] = {64,0}, + [I(254,117)] = {64,0}, + [I(255,117)] = {X32,0xFFFFFBAD}, + [I(0,118)] = {20,0xFFC77}, + [I(1,118)] = {30,0x3FFFEC77}, + [I(2,118)] = {64,0}, + [I(3,118)] = {64,0}, + [I(4,118)] = {64,0}, + [I(5,118)] = {64,0}, + [I(6,118)] = {64,0}, + [I(7,118)] = {64,0}, + [I(8,118)] = {64,0}, + [I(9,118)] = {31,0x7FFFF577}, + [I(10,118)] = {64,0}, + [I(11,118)] = {64,0}, + [I(12,118)] = {64,0}, + [I(13,118)] = {64,0}, + [I(14,118)] = {64,0}, + [I(15,118)] = {64,0}, + [I(16,118)] = {64,0}, + [I(17,118)] = {64,0}, + [I(18,118)] = {64,0}, + [I(19,118)] = {64,0}, + [I(20,118)] = {64,0}, + [I(21,118)] = {64,0}, + [I(22,118)] = {64,0}, + [I(23,118)] = {64,0}, + [I(24,118)] = {64,0}, + [I(25,118)] = {64,0}, + [I(26,118)] = {64,0}, + [I(27,118)] = {64,0}, + [I(28,118)] = {64,0}, + [I(29,118)] = {64,0}, + [I(30,118)] = {64,0}, + [I(31,118)] = {64,0}, + [I(32,118)] = {13,0xA77}, + [I(33,118)] = {17,0x1FC77}, + [I(34,118)] = {17,0x1FCF7}, + [I(35,118)] = {19,0x7FD77}, + [I(36,118)] = {20,0xFFCF7}, + [I(37,118)] = {13,0xAF7}, + [I(38,118)] = {15,0x7C77}, + [I(39,118)] = {18,0x3FD77}, + [I(40,118)] = {17,0x1FD77}, + [I(41,118)] = {17,0x1FDF7}, + [I(42,118)] = {15,0x7CF7}, + [I(43,118)] = {18,0x3FDF7}, + [I(44,118)] = {15,0x7D77}, + [I(45,118)] = {13,0xB77}, + [I(46,118)] = {13,0xBF7}, + [I(47,118)] = {13,0xC77}, + [I(48,118)] = {12,0x77}, + [I(49,118)] = {12,0xF7}, + [I(50,118)] = {12,0x177}, + [I(51,118)] = {13,0xCF7}, + [I(52,118)] = {13,0xD77}, + [I(53,118)] = {13,0xDF7}, + [I(54,118)] = {13,0xE77}, + [I(55,118)] = {13,0xEF7}, + [I(56,118)] = {13,0xF77}, + [I(57,118)] = {13,0xFF7}, + [I(58,118)] = {14,0x2E77}, + [I(59,118)] = {15,0x7DF7}, + [I(60,118)] = {22,0x3FFE77}, + [I(61,118)] = {13,0x1077}, + [I(62,118)] = {19,0x7FDF7}, + [I(63,118)] = {17,0x1FE77}, + [I(64,118)] = {20,0xFFD77}, + [I(65,118)] = {13,0x10F7}, + [I(66,118)] = {14,0x2EF7}, + [I(67,118)] = {14,0x2F77}, + [I(68,118)] = {14,0x2FF7}, + [I(69,118)] = {14,0x3077}, + [I(70,118)] = {14,0x30F7}, + [I(71,118)] = {14,0x3177}, + [I(72,118)] = {14,0x31F7}, + [I(73,118)] = {14,0x3277}, + [I(74,118)] = {14,0x32F7}, + [I(75,118)] = {14,0x3377}, + [I(76,118)] = {14,0x33F7}, + [I(77,118)] = {14,0x3477}, + [I(78,118)] = {14,0x34F7}, + [I(79,118)] = {14,0x3577}, + [I(80,118)] = {14,0x35F7}, + [I(81,118)] = {14,0x3677}, + [I(82,118)] = {14,0x36F7}, + [I(83,118)] = {14,0x3777}, + [I(84,118)] = {14,0x37F7}, + [I(85,118)] = {14,0x3877}, + [I(86,118)] = {14,0x38F7}, + [I(87,118)] = {14,0x3977}, + [I(88,118)] = {15,0x7E77}, + [I(89,118)] = {14,0x39F7}, + [I(90,118)] = {15,0x7EF7}, + [I(91,118)] = {20,0xFFDF7}, + [I(92,118)] = {26,0x3FFF877}, + [I(93,118)] = {20,0xFFE77}, + [I(94,118)] = {21,0x1FFE77}, + [I(95,118)] = {13,0x1177}, + [I(96,118)] = {22,0x3FFEF7}, + [I(97,118)] = {12,0x1F7}, + [I(98,118)] = {13,0x11F7}, + [I(99,118)] = {12,0x277}, + [I(100,118)] = {13,0x1277}, + [I(101,118)] = {12,0x2F7}, + [I(102,118)] = {13,0x12F7}, + [I(103,118)] = {13,0x1377}, + [I(104,118)] = {13,0x13F7}, + [I(105,118)] = {12,0x377}, + [I(106,118)] = {14,0x3A77}, + [I(107,118)] = {14,0x3AF7}, + [I(108,118)] = {13,0x1477}, + [I(109,118)] = {13,0x14F7}, + [I(110,118)] = {13,0x1577}, + [I(111,118)] = {12,0x3F7}, + [I(112,118)] = {13,0x15F7}, + [I(113,118)] = {14,0x3B77}, + [I(114,118)] = {13,0x1677}, + [I(115,118)] = {12,0x477}, + [I(116,118)] = {12,0x4F7}, + [I(117,118)] = {13,0x16F7}, + [I(118,118)] = {14,0x3BF7}, + [I(119,118)] = {14,0x3C77}, + [I(120,118)] = {14,0x3CF7}, + [I(121,118)] = {14,0x3D77}, + [I(122,118)] = {14,0x3DF7}, + [I(123,118)] = {22,0x3FFF77}, + [I(124,118)] = {18,0x3FE77}, + [I(125,118)] = {21,0x1FFEF7}, + [I(126,118)] = {20,0xFFEF7}, + [I(127,118)] = {64,0}, + [I(128,118)] = {27,0x7FFF377}, + [I(129,118)] = {29,0x1FFFE977}, + [I(130,118)] = {27,0x7FFF3F7}, + [I(131,118)] = {27,0x7FFF477}, + [I(132,118)] = {29,0x1FFFE9F7}, + [I(133,118)] = {29,0x1FFFEA77}, + [I(134,118)] = {29,0x1FFFEAF7}, + [I(135,118)] = {30,0x3FFFECF7}, + [I(136,118)] = {29,0x1FFFEB77}, + [I(137,118)] = {30,0x3FFFED77}, + [I(138,118)] = {30,0x3FFFEDF7}, + [I(139,118)] = {30,0x3FFFEE77}, + [I(140,118)] = {30,0x3FFFEEF7}, + [I(141,118)] = {30,0x3FFFEF77}, + [I(142,118)] = {31,0x7FFFF5F7}, + [I(143,118)] = {30,0x3FFFEFF7}, + [I(144,118)] = {31,0x7FFFF677}, + [I(145,118)] = {31,0x7FFFF6F7}, + [I(146,118)] = {29,0x1FFFEBF7}, + [I(147,118)] = {30,0x3FFFF077}, + [I(148,118)] = {31,0x7FFFF777}, + [I(149,118)] = {30,0x3FFFF0F7}, + [I(150,118)] = {30,0x3FFFF177}, + [I(151,118)] = {30,0x3FFFF1F7}, + [I(152,118)] = {30,0x3FFFF277}, + [I(153,118)] = {28,0xFFFEE77}, + [I(154,118)] = {29,0x1FFFEC77}, + [I(155,118)] = {30,0x3FFFF2F7}, + [I(156,118)] = {29,0x1FFFECF7}, + [I(157,118)] = {30,0x3FFFF377}, + [I(158,118)] = {30,0x3FFFF3F7}, + [I(159,118)] = {31,0x7FFFF7F7}, + [I(160,118)] = {29,0x1FFFED77}, + [I(161,118)] = {28,0xFFFEEF7}, + [I(162,118)] = {27,0x7FFF4F7}, + [I(163,118)] = {29,0x1FFFEDF7}, + [I(164,118)] = {29,0x1FFFEE77}, + [I(165,118)] = {30,0x3FFFF477}, + [I(166,118)] = {30,0x3FFFF4F7}, + [I(167,118)] = {28,0xFFFEF77}, + [I(168,118)] = {30,0x3FFFF577}, + [I(169,118)] = {29,0x1FFFEEF7}, + [I(170,118)] = {29,0x1FFFEF77}, + [I(171,118)] = {31,0x7FFFF877}, + [I(172,118)] = {28,0xFFFEFF7}, + [I(173,118)] = {29,0x1FFFEFF7}, + [I(174,118)] = {30,0x3FFFF5F7}, + [I(175,118)] = {30,0x3FFFF677}, + [I(176,118)] = {28,0xFFFF077}, + [I(177,118)] = {28,0xFFFF0F7}, + [I(178,118)] = {29,0x1FFFF077}, + [I(179,118)] = {28,0xFFFF177}, + [I(180,118)] = {30,0x3FFFF6F7}, + [I(181,118)] = {29,0x1FFFF0F7}, + [I(182,118)] = {30,0x3FFFF777}, + [I(183,118)] = {30,0x3FFFF7F7}, + [I(184,118)] = {27,0x7FFF577}, + [I(185,118)] = {29,0x1FFFF177}, + [I(186,118)] = {29,0x1FFFF1F7}, + [I(187,118)] = {29,0x1FFFF277}, + [I(188,118)] = {30,0x3FFFF877}, + [I(189,118)] = {29,0x1FFFF2F7}, + [I(190,118)] = {29,0x1FFFF377}, + [I(191,118)] = {30,0x3FFFF8F7}, + [I(192,118)] = {64,0}, + [I(193,118)] = {64,0}, + [I(194,118)] = {27,0x7FFF5F7}, + [I(195,118)] = {26,0x3FFF8F7}, + [I(196,118)] = {29,0x1FFFF3F7}, + [I(197,118)] = {30,0x3FFFF977}, + [I(198,118)] = {29,0x1FFFF477}, + [I(199,118)] = {X32,0xFFFFF677}, + [I(200,118)] = {64,0}, + [I(201,118)] = {64,0}, + [I(202,118)] = {64,0}, + [I(203,118)] = {64,0}, + [I(204,118)] = {64,0}, + [I(205,118)] = {64,0}, + [I(206,118)] = {31,0x7FFFF8F7}, + [I(207,118)] = {X32,0xFFFFF6F7}, + [I(208,118)] = {26,0x3FFF977}, + [I(209,118)] = {28,0xFFFF1F7}, + [I(210,118)] = {64,0}, + [I(211,118)] = {64,0}, + [I(212,118)] = {64,0}, + [I(213,118)] = {64,0}, + [I(214,118)] = {64,0}, + [I(215,118)] = {31,0x7FFFF977}, + [I(216,118)] = {28,0xFFFF277}, + [I(217,118)] = {28,0xFFFF2F7}, + [I(218,118)] = {64,0}, + [I(219,118)] = {64,0}, + [I(220,118)] = {64,0}, + [I(221,118)] = {64,0}, + [I(222,118)] = {64,0}, + [I(223,118)] = {64,0}, + [I(224,118)] = {27,0x7FFF677}, + [I(225,118)] = {31,0x7FFFF9F7}, + [I(226,118)] = {27,0x7FFF6F7}, + [I(227,118)] = {28,0xFFFF377}, + [I(228,118)] = {29,0x1FFFF4F7}, + [I(229,118)] = {28,0xFFFF3F7}, + [I(230,118)] = {28,0xFFFF477}, + [I(231,118)] = {30,0x3FFFF9F7}, + [I(232,118)] = {29,0x1FFFF577}, + [I(233,118)] = {29,0x1FFFF5F7}, + [I(234,118)] = {X32,0xFFFFF777}, + [I(235,118)] = {X32,0xFFFFF7F7}, + [I(236,118)] = {31,0x7FFFFA77}, + [I(237,118)] = {31,0x7FFFFAF7}, + [I(238,118)] = {64,0}, + [I(239,118)] = {30,0x3FFFFA77}, + [I(240,118)] = {64,0}, + [I(241,118)] = {64,0}, + [I(242,118)] = {64,0}, + [I(243,118)] = {64,0}, + [I(244,118)] = {64,0}, + [I(245,118)] = {64,0}, + [I(246,118)] = {64,0}, + [I(247,118)] = {64,0}, + [I(248,118)] = {64,0}, + [I(249,118)] = {64,0}, + [I(250,118)] = {64,0}, + [I(251,118)] = {64,0}, + [I(252,118)] = {64,0}, + [I(253,118)] = {64,0}, + [I(254,118)] = {64,0}, + [I(255,118)] = {64,0}, + [I(0,119)] = {20,0xFFC78}, + [I(1,119)] = {30,0x3FFFEC78}, + [I(2,119)] = {64,0}, + [I(3,119)] = {64,0}, + [I(4,119)] = {64,0}, + [I(5,119)] = {64,0}, + [I(6,119)] = {64,0}, + [I(7,119)] = {64,0}, + [I(8,119)] = {64,0}, + [I(9,119)] = {31,0x7FFFF578}, + [I(10,119)] = {64,0}, + [I(11,119)] = {64,0}, + [I(12,119)] = {64,0}, + [I(13,119)] = {64,0}, + [I(14,119)] = {64,0}, + [I(15,119)] = {64,0}, + [I(16,119)] = {64,0}, + [I(17,119)] = {64,0}, + [I(18,119)] = {64,0}, + [I(19,119)] = {64,0}, + [I(20,119)] = {64,0}, + [I(21,119)] = {64,0}, + [I(22,119)] = {64,0}, + [I(23,119)] = {64,0}, + [I(24,119)] = {64,0}, + [I(25,119)] = {64,0}, + [I(26,119)] = {64,0}, + [I(27,119)] = {64,0}, + [I(28,119)] = {64,0}, + [I(29,119)] = {64,0}, + [I(30,119)] = {64,0}, + [I(31,119)] = {64,0}, + [I(32,119)] = {13,0xA78}, + [I(33,119)] = {17,0x1FC78}, + [I(34,119)] = {17,0x1FCF8}, + [I(35,119)] = {19,0x7FD78}, + [I(36,119)] = {20,0xFFCF8}, + [I(37,119)] = {13,0xAF8}, + [I(38,119)] = {15,0x7C78}, + [I(39,119)] = {18,0x3FD78}, + [I(40,119)] = {17,0x1FD78}, + [I(41,119)] = {17,0x1FDF8}, + [I(42,119)] = {15,0x7CF8}, + [I(43,119)] = {18,0x3FDF8}, + [I(44,119)] = {15,0x7D78}, + [I(45,119)] = {13,0xB78}, + [I(46,119)] = {13,0xBF8}, + [I(47,119)] = {13,0xC78}, + [I(48,119)] = {12,0x78}, + [I(49,119)] = {12,0xF8}, + [I(50,119)] = {12,0x178}, + [I(51,119)] = {13,0xCF8}, + [I(52,119)] = {13,0xD78}, + [I(53,119)] = {13,0xDF8}, + [I(54,119)] = {13,0xE78}, + [I(55,119)] = {13,0xEF8}, + [I(56,119)] = {13,0xF78}, + [I(57,119)] = {13,0xFF8}, + [I(58,119)] = {14,0x2E78}, + [I(59,119)] = {15,0x7DF8}, + [I(60,119)] = {22,0x3FFE78}, + [I(61,119)] = {13,0x1078}, + [I(62,119)] = {19,0x7FDF8}, + [I(63,119)] = {17,0x1FE78}, + [I(64,119)] = {20,0xFFD78}, + [I(65,119)] = {13,0x10F8}, + [I(66,119)] = {14,0x2EF8}, + [I(67,119)] = {14,0x2F78}, + [I(68,119)] = {14,0x2FF8}, + [I(69,119)] = {14,0x3078}, + [I(70,119)] = {14,0x30F8}, + [I(71,119)] = {14,0x3178}, + [I(72,119)] = {14,0x31F8}, + [I(73,119)] = {14,0x3278}, + [I(74,119)] = {14,0x32F8}, + [I(75,119)] = {14,0x3378}, + [I(76,119)] = {14,0x33F8}, + [I(77,119)] = {14,0x3478}, + [I(78,119)] = {14,0x34F8}, + [I(79,119)] = {14,0x3578}, + [I(80,119)] = {14,0x35F8}, + [I(81,119)] = {14,0x3678}, + [I(82,119)] = {14,0x36F8}, + [I(83,119)] = {14,0x3778}, + [I(84,119)] = {14,0x37F8}, + [I(85,119)] = {14,0x3878}, + [I(86,119)] = {14,0x38F8}, + [I(87,119)] = {14,0x3978}, + [I(88,119)] = {15,0x7E78}, + [I(89,119)] = {14,0x39F8}, + [I(90,119)] = {15,0x7EF8}, + [I(91,119)] = {20,0xFFDF8}, + [I(92,119)] = {26,0x3FFF878}, + [I(93,119)] = {20,0xFFE78}, + [I(94,119)] = {21,0x1FFE78}, + [I(95,119)] = {13,0x1178}, + [I(96,119)] = {22,0x3FFEF8}, + [I(97,119)] = {12,0x1F8}, + [I(98,119)] = {13,0x11F8}, + [I(99,119)] = {12,0x278}, + [I(100,119)] = {13,0x1278}, + [I(101,119)] = {12,0x2F8}, + [I(102,119)] = {13,0x12F8}, + [I(103,119)] = {13,0x1378}, + [I(104,119)] = {13,0x13F8}, + [I(105,119)] = {12,0x378}, + [I(106,119)] = {14,0x3A78}, + [I(107,119)] = {14,0x3AF8}, + [I(108,119)] = {13,0x1478}, + [I(109,119)] = {13,0x14F8}, + [I(110,119)] = {13,0x1578}, + [I(111,119)] = {12,0x3F8}, + [I(112,119)] = {13,0x15F8}, + [I(113,119)] = {14,0x3B78}, + [I(114,119)] = {13,0x1678}, + [I(115,119)] = {12,0x478}, + [I(116,119)] = {12,0x4F8}, + [I(117,119)] = {13,0x16F8}, + [I(118,119)] = {14,0x3BF8}, + [I(119,119)] = {14,0x3C78}, + [I(120,119)] = {14,0x3CF8}, + [I(121,119)] = {14,0x3D78}, + [I(122,119)] = {14,0x3DF8}, + [I(123,119)] = {22,0x3FFF78}, + [I(124,119)] = {18,0x3FE78}, + [I(125,119)] = {21,0x1FFEF8}, + [I(126,119)] = {20,0xFFEF8}, + [I(127,119)] = {64,0}, + [I(128,119)] = {27,0x7FFF378}, + [I(129,119)] = {29,0x1FFFE978}, + [I(130,119)] = {27,0x7FFF3F8}, + [I(131,119)] = {27,0x7FFF478}, + [I(132,119)] = {29,0x1FFFE9F8}, + [I(133,119)] = {29,0x1FFFEA78}, + [I(134,119)] = {29,0x1FFFEAF8}, + [I(135,119)] = {30,0x3FFFECF8}, + [I(136,119)] = {29,0x1FFFEB78}, + [I(137,119)] = {30,0x3FFFED78}, + [I(138,119)] = {30,0x3FFFEDF8}, + [I(139,119)] = {30,0x3FFFEE78}, + [I(140,119)] = {30,0x3FFFEEF8}, + [I(141,119)] = {30,0x3FFFEF78}, + [I(142,119)] = {31,0x7FFFF5F8}, + [I(143,119)] = {30,0x3FFFEFF8}, + [I(144,119)] = {31,0x7FFFF678}, + [I(145,119)] = {31,0x7FFFF6F8}, + [I(146,119)] = {29,0x1FFFEBF8}, + [I(147,119)] = {30,0x3FFFF078}, + [I(148,119)] = {31,0x7FFFF778}, + [I(149,119)] = {30,0x3FFFF0F8}, + [I(150,119)] = {30,0x3FFFF178}, + [I(151,119)] = {30,0x3FFFF1F8}, + [I(152,119)] = {30,0x3FFFF278}, + [I(153,119)] = {28,0xFFFEE78}, + [I(154,119)] = {29,0x1FFFEC78}, + [I(155,119)] = {30,0x3FFFF2F8}, + [I(156,119)] = {29,0x1FFFECF8}, + [I(157,119)] = {30,0x3FFFF378}, + [I(158,119)] = {30,0x3FFFF3F8}, + [I(159,119)] = {31,0x7FFFF7F8}, + [I(160,119)] = {29,0x1FFFED78}, + [I(161,119)] = {28,0xFFFEEF8}, + [I(162,119)] = {27,0x7FFF4F8}, + [I(163,119)] = {29,0x1FFFEDF8}, + [I(164,119)] = {29,0x1FFFEE78}, + [I(165,119)] = {30,0x3FFFF478}, + [I(166,119)] = {30,0x3FFFF4F8}, + [I(167,119)] = {28,0xFFFEF78}, + [I(168,119)] = {30,0x3FFFF578}, + [I(169,119)] = {29,0x1FFFEEF8}, + [I(170,119)] = {29,0x1FFFEF78}, + [I(171,119)] = {31,0x7FFFF878}, + [I(172,119)] = {28,0xFFFEFF8}, + [I(173,119)] = {29,0x1FFFEFF8}, + [I(174,119)] = {30,0x3FFFF5F8}, + [I(175,119)] = {30,0x3FFFF678}, + [I(176,119)] = {28,0xFFFF078}, + [I(177,119)] = {28,0xFFFF0F8}, + [I(178,119)] = {29,0x1FFFF078}, + [I(179,119)] = {28,0xFFFF178}, + [I(180,119)] = {30,0x3FFFF6F8}, + [I(181,119)] = {29,0x1FFFF0F8}, + [I(182,119)] = {30,0x3FFFF778}, + [I(183,119)] = {30,0x3FFFF7F8}, + [I(184,119)] = {27,0x7FFF578}, + [I(185,119)] = {29,0x1FFFF178}, + [I(186,119)] = {29,0x1FFFF1F8}, + [I(187,119)] = {29,0x1FFFF278}, + [I(188,119)] = {30,0x3FFFF878}, + [I(189,119)] = {29,0x1FFFF2F8}, + [I(190,119)] = {29,0x1FFFF378}, + [I(191,119)] = {30,0x3FFFF8F8}, + [I(192,119)] = {64,0}, + [I(193,119)] = {64,0}, + [I(194,119)] = {27,0x7FFF5F8}, + [I(195,119)] = {26,0x3FFF8F8}, + [I(196,119)] = {29,0x1FFFF3F8}, + [I(197,119)] = {30,0x3FFFF978}, + [I(198,119)] = {29,0x1FFFF478}, + [I(199,119)] = {X32,0xFFFFF678}, + [I(200,119)] = {64,0}, + [I(201,119)] = {64,0}, + [I(202,119)] = {64,0}, + [I(203,119)] = {64,0}, + [I(204,119)] = {64,0}, + [I(205,119)] = {64,0}, + [I(206,119)] = {31,0x7FFFF8F8}, + [I(207,119)] = {X32,0xFFFFF6F8}, + [I(208,119)] = {26,0x3FFF978}, + [I(209,119)] = {28,0xFFFF1F8}, + [I(210,119)] = {64,0}, + [I(211,119)] = {64,0}, + [I(212,119)] = {64,0}, + [I(213,119)] = {64,0}, + [I(214,119)] = {64,0}, + [I(215,119)] = {31,0x7FFFF978}, + [I(216,119)] = {28,0xFFFF278}, + [I(217,119)] = {28,0xFFFF2F8}, + [I(218,119)] = {64,0}, + [I(219,119)] = {64,0}, + [I(220,119)] = {64,0}, + [I(221,119)] = {64,0}, + [I(222,119)] = {64,0}, + [I(223,119)] = {64,0}, + [I(224,119)] = {27,0x7FFF678}, + [I(225,119)] = {31,0x7FFFF9F8}, + [I(226,119)] = {27,0x7FFF6F8}, + [I(227,119)] = {28,0xFFFF378}, + [I(228,119)] = {29,0x1FFFF4F8}, + [I(229,119)] = {28,0xFFFF3F8}, + [I(230,119)] = {28,0xFFFF478}, + [I(231,119)] = {30,0x3FFFF9F8}, + [I(232,119)] = {29,0x1FFFF578}, + [I(233,119)] = {29,0x1FFFF5F8}, + [I(234,119)] = {X32,0xFFFFF778}, + [I(235,119)] = {X32,0xFFFFF7F8}, + [I(236,119)] = {31,0x7FFFFA78}, + [I(237,119)] = {31,0x7FFFFAF8}, + [I(238,119)] = {64,0}, + [I(239,119)] = {30,0x3FFFFA78}, + [I(240,119)] = {64,0}, + [I(241,119)] = {64,0}, + [I(242,119)] = {64,0}, + [I(243,119)] = {64,0}, + [I(244,119)] = {64,0}, + [I(245,119)] = {64,0}, + [I(246,119)] = {64,0}, + [I(247,119)] = {64,0}, + [I(248,119)] = {64,0}, + [I(249,119)] = {64,0}, + [I(250,119)] = {64,0}, + [I(251,119)] = {64,0}, + [I(252,119)] = {64,0}, + [I(253,119)] = {64,0}, + [I(254,119)] = {64,0}, + [I(255,119)] = {64,0}, + [I(0,120)] = {20,0xFFC79}, + [I(1,120)] = {30,0x3FFFEC79}, + [I(2,120)] = {64,0}, + [I(3,120)] = {64,0}, + [I(4,120)] = {64,0}, + [I(5,120)] = {64,0}, + [I(6,120)] = {64,0}, + [I(7,120)] = {64,0}, + [I(8,120)] = {64,0}, + [I(9,120)] = {31,0x7FFFF579}, + [I(10,120)] = {64,0}, + [I(11,120)] = {64,0}, + [I(12,120)] = {64,0}, + [I(13,120)] = {64,0}, + [I(14,120)] = {64,0}, + [I(15,120)] = {64,0}, + [I(16,120)] = {64,0}, + [I(17,120)] = {64,0}, + [I(18,120)] = {64,0}, + [I(19,120)] = {64,0}, + [I(20,120)] = {64,0}, + [I(21,120)] = {64,0}, + [I(22,120)] = {64,0}, + [I(23,120)] = {64,0}, + [I(24,120)] = {64,0}, + [I(25,120)] = {64,0}, + [I(26,120)] = {64,0}, + [I(27,120)] = {64,0}, + [I(28,120)] = {64,0}, + [I(29,120)] = {64,0}, + [I(30,120)] = {64,0}, + [I(31,120)] = {64,0}, + [I(32,120)] = {13,0xA79}, + [I(33,120)] = {17,0x1FC79}, + [I(34,120)] = {17,0x1FCF9}, + [I(35,120)] = {19,0x7FD79}, + [I(36,120)] = {20,0xFFCF9}, + [I(37,120)] = {13,0xAF9}, + [I(38,120)] = {15,0x7C79}, + [I(39,120)] = {18,0x3FD79}, + [I(40,120)] = {17,0x1FD79}, + [I(41,120)] = {17,0x1FDF9}, + [I(42,120)] = {15,0x7CF9}, + [I(43,120)] = {18,0x3FDF9}, + [I(44,120)] = {15,0x7D79}, + [I(45,120)] = {13,0xB79}, + [I(46,120)] = {13,0xBF9}, + [I(47,120)] = {13,0xC79}, + [I(48,120)] = {12,0x79}, + [I(49,120)] = {12,0xF9}, + [I(50,120)] = {12,0x179}, + [I(51,120)] = {13,0xCF9}, + [I(52,120)] = {13,0xD79}, + [I(53,120)] = {13,0xDF9}, + [I(54,120)] = {13,0xE79}, + [I(55,120)] = {13,0xEF9}, + [I(56,120)] = {13,0xF79}, + [I(57,120)] = {13,0xFF9}, + [I(58,120)] = {14,0x2E79}, + [I(59,120)] = {15,0x7DF9}, + [I(60,120)] = {22,0x3FFE79}, + [I(61,120)] = {13,0x1079}, + [I(62,120)] = {19,0x7FDF9}, + [I(63,120)] = {17,0x1FE79}, + [I(64,120)] = {20,0xFFD79}, + [I(65,120)] = {13,0x10F9}, + [I(66,120)] = {14,0x2EF9}, + [I(67,120)] = {14,0x2F79}, + [I(68,120)] = {14,0x2FF9}, + [I(69,120)] = {14,0x3079}, + [I(70,120)] = {14,0x30F9}, + [I(71,120)] = {14,0x3179}, + [I(72,120)] = {14,0x31F9}, + [I(73,120)] = {14,0x3279}, + [I(74,120)] = {14,0x32F9}, + [I(75,120)] = {14,0x3379}, + [I(76,120)] = {14,0x33F9}, + [I(77,120)] = {14,0x3479}, + [I(78,120)] = {14,0x34F9}, + [I(79,120)] = {14,0x3579}, + [I(80,120)] = {14,0x35F9}, + [I(81,120)] = {14,0x3679}, + [I(82,120)] = {14,0x36F9}, + [I(83,120)] = {14,0x3779}, + [I(84,120)] = {14,0x37F9}, + [I(85,120)] = {14,0x3879}, + [I(86,120)] = {14,0x38F9}, + [I(87,120)] = {14,0x3979}, + [I(88,120)] = {15,0x7E79}, + [I(89,120)] = {14,0x39F9}, + [I(90,120)] = {15,0x7EF9}, + [I(91,120)] = {20,0xFFDF9}, + [I(92,120)] = {26,0x3FFF879}, + [I(93,120)] = {20,0xFFE79}, + [I(94,120)] = {21,0x1FFE79}, + [I(95,120)] = {13,0x1179}, + [I(96,120)] = {22,0x3FFEF9}, + [I(97,120)] = {12,0x1F9}, + [I(98,120)] = {13,0x11F9}, + [I(99,120)] = {12,0x279}, + [I(100,120)] = {13,0x1279}, + [I(101,120)] = {12,0x2F9}, + [I(102,120)] = {13,0x12F9}, + [I(103,120)] = {13,0x1379}, + [I(104,120)] = {13,0x13F9}, + [I(105,120)] = {12,0x379}, + [I(106,120)] = {14,0x3A79}, + [I(107,120)] = {14,0x3AF9}, + [I(108,120)] = {13,0x1479}, + [I(109,120)] = {13,0x14F9}, + [I(110,120)] = {13,0x1579}, + [I(111,120)] = {12,0x3F9}, + [I(112,120)] = {13,0x15F9}, + [I(113,120)] = {14,0x3B79}, + [I(114,120)] = {13,0x1679}, + [I(115,120)] = {12,0x479}, + [I(116,120)] = {12,0x4F9}, + [I(117,120)] = {13,0x16F9}, + [I(118,120)] = {14,0x3BF9}, + [I(119,120)] = {14,0x3C79}, + [I(120,120)] = {14,0x3CF9}, + [I(121,120)] = {14,0x3D79}, + [I(122,120)] = {14,0x3DF9}, + [I(123,120)] = {22,0x3FFF79}, + [I(124,120)] = {18,0x3FE79}, + [I(125,120)] = {21,0x1FFEF9}, + [I(126,120)] = {20,0xFFEF9}, + [I(127,120)] = {64,0}, + [I(128,120)] = {27,0x7FFF379}, + [I(129,120)] = {29,0x1FFFE979}, + [I(130,120)] = {27,0x7FFF3F9}, + [I(131,120)] = {27,0x7FFF479}, + [I(132,120)] = {29,0x1FFFE9F9}, + [I(133,120)] = {29,0x1FFFEA79}, + [I(134,120)] = {29,0x1FFFEAF9}, + [I(135,120)] = {30,0x3FFFECF9}, + [I(136,120)] = {29,0x1FFFEB79}, + [I(137,120)] = {30,0x3FFFED79}, + [I(138,120)] = {30,0x3FFFEDF9}, + [I(139,120)] = {30,0x3FFFEE79}, + [I(140,120)] = {30,0x3FFFEEF9}, + [I(141,120)] = {30,0x3FFFEF79}, + [I(142,120)] = {31,0x7FFFF5F9}, + [I(143,120)] = {30,0x3FFFEFF9}, + [I(144,120)] = {31,0x7FFFF679}, + [I(145,120)] = {31,0x7FFFF6F9}, + [I(146,120)] = {29,0x1FFFEBF9}, + [I(147,120)] = {30,0x3FFFF079}, + [I(148,120)] = {31,0x7FFFF779}, + [I(149,120)] = {30,0x3FFFF0F9}, + [I(150,120)] = {30,0x3FFFF179}, + [I(151,120)] = {30,0x3FFFF1F9}, + [I(152,120)] = {30,0x3FFFF279}, + [I(153,120)] = {28,0xFFFEE79}, + [I(154,120)] = {29,0x1FFFEC79}, + [I(155,120)] = {30,0x3FFFF2F9}, + [I(156,120)] = {29,0x1FFFECF9}, + [I(157,120)] = {30,0x3FFFF379}, + [I(158,120)] = {30,0x3FFFF3F9}, + [I(159,120)] = {31,0x7FFFF7F9}, + [I(160,120)] = {29,0x1FFFED79}, + [I(161,120)] = {28,0xFFFEEF9}, + [I(162,120)] = {27,0x7FFF4F9}, + [I(163,120)] = {29,0x1FFFEDF9}, + [I(164,120)] = {29,0x1FFFEE79}, + [I(165,120)] = {30,0x3FFFF479}, + [I(166,120)] = {30,0x3FFFF4F9}, + [I(167,120)] = {28,0xFFFEF79}, + [I(168,120)] = {30,0x3FFFF579}, + [I(169,120)] = {29,0x1FFFEEF9}, + [I(170,120)] = {29,0x1FFFEF79}, + [I(171,120)] = {31,0x7FFFF879}, + [I(172,120)] = {28,0xFFFEFF9}, + [I(173,120)] = {29,0x1FFFEFF9}, + [I(174,120)] = {30,0x3FFFF5F9}, + [I(175,120)] = {30,0x3FFFF679}, + [I(176,120)] = {28,0xFFFF079}, + [I(177,120)] = {28,0xFFFF0F9}, + [I(178,120)] = {29,0x1FFFF079}, + [I(179,120)] = {28,0xFFFF179}, + [I(180,120)] = {30,0x3FFFF6F9}, + [I(181,120)] = {29,0x1FFFF0F9}, + [I(182,120)] = {30,0x3FFFF779}, + [I(183,120)] = {30,0x3FFFF7F9}, + [I(184,120)] = {27,0x7FFF579}, + [I(185,120)] = {29,0x1FFFF179}, + [I(186,120)] = {29,0x1FFFF1F9}, + [I(187,120)] = {29,0x1FFFF279}, + [I(188,120)] = {30,0x3FFFF879}, + [I(189,120)] = {29,0x1FFFF2F9}, + [I(190,120)] = {29,0x1FFFF379}, + [I(191,120)] = {30,0x3FFFF8F9}, + [I(192,120)] = {64,0}, + [I(193,120)] = {64,0}, + [I(194,120)] = {27,0x7FFF5F9}, + [I(195,120)] = {26,0x3FFF8F9}, + [I(196,120)] = {29,0x1FFFF3F9}, + [I(197,120)] = {30,0x3FFFF979}, + [I(198,120)] = {29,0x1FFFF479}, + [I(199,120)] = {X32,0xFFFFF679}, + [I(200,120)] = {64,0}, + [I(201,120)] = {64,0}, + [I(202,120)] = {64,0}, + [I(203,120)] = {64,0}, + [I(204,120)] = {64,0}, + [I(205,120)] = {64,0}, + [I(206,120)] = {31,0x7FFFF8F9}, + [I(207,120)] = {X32,0xFFFFF6F9}, + [I(208,120)] = {26,0x3FFF979}, + [I(209,120)] = {28,0xFFFF1F9}, + [I(210,120)] = {64,0}, + [I(211,120)] = {64,0}, + [I(212,120)] = {64,0}, + [I(213,120)] = {64,0}, + [I(214,120)] = {64,0}, + [I(215,120)] = {31,0x7FFFF979}, + [I(216,120)] = {28,0xFFFF279}, + [I(217,120)] = {28,0xFFFF2F9}, + [I(218,120)] = {64,0}, + [I(219,120)] = {64,0}, + [I(220,120)] = {64,0}, + [I(221,120)] = {64,0}, + [I(222,120)] = {64,0}, + [I(223,120)] = {64,0}, + [I(224,120)] = {27,0x7FFF679}, + [I(225,120)] = {31,0x7FFFF9F9}, + [I(226,120)] = {27,0x7FFF6F9}, + [I(227,120)] = {28,0xFFFF379}, + [I(228,120)] = {29,0x1FFFF4F9}, + [I(229,120)] = {28,0xFFFF3F9}, + [I(230,120)] = {28,0xFFFF479}, + [I(231,120)] = {30,0x3FFFF9F9}, + [I(232,120)] = {29,0x1FFFF579}, + [I(233,120)] = {29,0x1FFFF5F9}, + [I(234,120)] = {X32,0xFFFFF779}, + [I(235,120)] = {X32,0xFFFFF7F9}, + [I(236,120)] = {31,0x7FFFFA79}, + [I(237,120)] = {31,0x7FFFFAF9}, + [I(238,120)] = {64,0}, + [I(239,120)] = {30,0x3FFFFA79}, + [I(240,120)] = {64,0}, + [I(241,120)] = {64,0}, + [I(242,120)] = {64,0}, + [I(243,120)] = {64,0}, + [I(244,120)] = {64,0}, + [I(245,120)] = {64,0}, + [I(246,120)] = {64,0}, + [I(247,120)] = {64,0}, + [I(248,120)] = {64,0}, + [I(249,120)] = {64,0}, + [I(250,120)] = {64,0}, + [I(251,120)] = {64,0}, + [I(252,120)] = {64,0}, + [I(253,120)] = {64,0}, + [I(254,120)] = {64,0}, + [I(255,120)] = {64,0}, + [I(0,121)] = {20,0xFFC7A}, + [I(1,121)] = {30,0x3FFFEC7A}, + [I(2,121)] = {64,0}, + [I(3,121)] = {64,0}, + [I(4,121)] = {64,0}, + [I(5,121)] = {64,0}, + [I(6,121)] = {64,0}, + [I(7,121)] = {64,0}, + [I(8,121)] = {64,0}, + [I(9,121)] = {31,0x7FFFF57A}, + [I(10,121)] = {64,0}, + [I(11,121)] = {64,0}, + [I(12,121)] = {64,0}, + [I(13,121)] = {64,0}, + [I(14,121)] = {64,0}, + [I(15,121)] = {64,0}, + [I(16,121)] = {64,0}, + [I(17,121)] = {64,0}, + [I(18,121)] = {64,0}, + [I(19,121)] = {64,0}, + [I(20,121)] = {64,0}, + [I(21,121)] = {64,0}, + [I(22,121)] = {64,0}, + [I(23,121)] = {64,0}, + [I(24,121)] = {64,0}, + [I(25,121)] = {64,0}, + [I(26,121)] = {64,0}, + [I(27,121)] = {64,0}, + [I(28,121)] = {64,0}, + [I(29,121)] = {64,0}, + [I(30,121)] = {64,0}, + [I(31,121)] = {64,0}, + [I(32,121)] = {13,0xA7A}, + [I(33,121)] = {17,0x1FC7A}, + [I(34,121)] = {17,0x1FCFA}, + [I(35,121)] = {19,0x7FD7A}, + [I(36,121)] = {20,0xFFCFA}, + [I(37,121)] = {13,0xAFA}, + [I(38,121)] = {15,0x7C7A}, + [I(39,121)] = {18,0x3FD7A}, + [I(40,121)] = {17,0x1FD7A}, + [I(41,121)] = {17,0x1FDFA}, + [I(42,121)] = {15,0x7CFA}, + [I(43,121)] = {18,0x3FDFA}, + [I(44,121)] = {15,0x7D7A}, + [I(45,121)] = {13,0xB7A}, + [I(46,121)] = {13,0xBFA}, + [I(47,121)] = {13,0xC7A}, + [I(48,121)] = {12,0x7A}, + [I(49,121)] = {12,0xFA}, + [I(50,121)] = {12,0x17A}, + [I(51,121)] = {13,0xCFA}, + [I(52,121)] = {13,0xD7A}, + [I(53,121)] = {13,0xDFA}, + [I(54,121)] = {13,0xE7A}, + [I(55,121)] = {13,0xEFA}, + [I(56,121)] = {13,0xF7A}, + [I(57,121)] = {13,0xFFA}, + [I(58,121)] = {14,0x2E7A}, + [I(59,121)] = {15,0x7DFA}, + [I(60,121)] = {22,0x3FFE7A}, + [I(61,121)] = {13,0x107A}, + [I(62,121)] = {19,0x7FDFA}, + [I(63,121)] = {17,0x1FE7A}, + [I(64,121)] = {20,0xFFD7A}, + [I(65,121)] = {13,0x10FA}, + [I(66,121)] = {14,0x2EFA}, + [I(67,121)] = {14,0x2F7A}, + [I(68,121)] = {14,0x2FFA}, + [I(69,121)] = {14,0x307A}, + [I(70,121)] = {14,0x30FA}, + [I(71,121)] = {14,0x317A}, + [I(72,121)] = {14,0x31FA}, + [I(73,121)] = {14,0x327A}, + [I(74,121)] = {14,0x32FA}, + [I(75,121)] = {14,0x337A}, + [I(76,121)] = {14,0x33FA}, + [I(77,121)] = {14,0x347A}, + [I(78,121)] = {14,0x34FA}, + [I(79,121)] = {14,0x357A}, + [I(80,121)] = {14,0x35FA}, + [I(81,121)] = {14,0x367A}, + [I(82,121)] = {14,0x36FA}, + [I(83,121)] = {14,0x377A}, + [I(84,121)] = {14,0x37FA}, + [I(85,121)] = {14,0x387A}, + [I(86,121)] = {14,0x38FA}, + [I(87,121)] = {14,0x397A}, + [I(88,121)] = {15,0x7E7A}, + [I(89,121)] = {14,0x39FA}, + [I(90,121)] = {15,0x7EFA}, + [I(91,121)] = {20,0xFFDFA}, + [I(92,121)] = {26,0x3FFF87A}, + [I(93,121)] = {20,0xFFE7A}, + [I(94,121)] = {21,0x1FFE7A}, + [I(95,121)] = {13,0x117A}, + [I(96,121)] = {22,0x3FFEFA}, + [I(97,121)] = {12,0x1FA}, + [I(98,121)] = {13,0x11FA}, + [I(99,121)] = {12,0x27A}, + [I(100,121)] = {13,0x127A}, + [I(101,121)] = {12,0x2FA}, + [I(102,121)] = {13,0x12FA}, + [I(103,121)] = {13,0x137A}, + [I(104,121)] = {13,0x13FA}, + [I(105,121)] = {12,0x37A}, + [I(106,121)] = {14,0x3A7A}, + [I(107,121)] = {14,0x3AFA}, + [I(108,121)] = {13,0x147A}, + [I(109,121)] = {13,0x14FA}, + [I(110,121)] = {13,0x157A}, + [I(111,121)] = {12,0x3FA}, + [I(112,121)] = {13,0x15FA}, + [I(113,121)] = {14,0x3B7A}, + [I(114,121)] = {13,0x167A}, + [I(115,121)] = {12,0x47A}, + [I(116,121)] = {12,0x4FA}, + [I(117,121)] = {13,0x16FA}, + [I(118,121)] = {14,0x3BFA}, + [I(119,121)] = {14,0x3C7A}, + [I(120,121)] = {14,0x3CFA}, + [I(121,121)] = {14,0x3D7A}, + [I(122,121)] = {14,0x3DFA}, + [I(123,121)] = {22,0x3FFF7A}, + [I(124,121)] = {18,0x3FE7A}, + [I(125,121)] = {21,0x1FFEFA}, + [I(126,121)] = {20,0xFFEFA}, + [I(127,121)] = {64,0}, + [I(128,121)] = {27,0x7FFF37A}, + [I(129,121)] = {29,0x1FFFE97A}, + [I(130,121)] = {27,0x7FFF3FA}, + [I(131,121)] = {27,0x7FFF47A}, + [I(132,121)] = {29,0x1FFFE9FA}, + [I(133,121)] = {29,0x1FFFEA7A}, + [I(134,121)] = {29,0x1FFFEAFA}, + [I(135,121)] = {30,0x3FFFECFA}, + [I(136,121)] = {29,0x1FFFEB7A}, + [I(137,121)] = {30,0x3FFFED7A}, + [I(138,121)] = {30,0x3FFFEDFA}, + [I(139,121)] = {30,0x3FFFEE7A}, + [I(140,121)] = {30,0x3FFFEEFA}, + [I(141,121)] = {30,0x3FFFEF7A}, + [I(142,121)] = {31,0x7FFFF5FA}, + [I(143,121)] = {30,0x3FFFEFFA}, + [I(144,121)] = {31,0x7FFFF67A}, + [I(145,121)] = {31,0x7FFFF6FA}, + [I(146,121)] = {29,0x1FFFEBFA}, + [I(147,121)] = {30,0x3FFFF07A}, + [I(148,121)] = {31,0x7FFFF77A}, + [I(149,121)] = {30,0x3FFFF0FA}, + [I(150,121)] = {30,0x3FFFF17A}, + [I(151,121)] = {30,0x3FFFF1FA}, + [I(152,121)] = {30,0x3FFFF27A}, + [I(153,121)] = {28,0xFFFEE7A}, + [I(154,121)] = {29,0x1FFFEC7A}, + [I(155,121)] = {30,0x3FFFF2FA}, + [I(156,121)] = {29,0x1FFFECFA}, + [I(157,121)] = {30,0x3FFFF37A}, + [I(158,121)] = {30,0x3FFFF3FA}, + [I(159,121)] = {31,0x7FFFF7FA}, + [I(160,121)] = {29,0x1FFFED7A}, + [I(161,121)] = {28,0xFFFEEFA}, + [I(162,121)] = {27,0x7FFF4FA}, + [I(163,121)] = {29,0x1FFFEDFA}, + [I(164,121)] = {29,0x1FFFEE7A}, + [I(165,121)] = {30,0x3FFFF47A}, + [I(166,121)] = {30,0x3FFFF4FA}, + [I(167,121)] = {28,0xFFFEF7A}, + [I(168,121)] = {30,0x3FFFF57A}, + [I(169,121)] = {29,0x1FFFEEFA}, + [I(170,121)] = {29,0x1FFFEF7A}, + [I(171,121)] = {31,0x7FFFF87A}, + [I(172,121)] = {28,0xFFFEFFA}, + [I(173,121)] = {29,0x1FFFEFFA}, + [I(174,121)] = {30,0x3FFFF5FA}, + [I(175,121)] = {30,0x3FFFF67A}, + [I(176,121)] = {28,0xFFFF07A}, + [I(177,121)] = {28,0xFFFF0FA}, + [I(178,121)] = {29,0x1FFFF07A}, + [I(179,121)] = {28,0xFFFF17A}, + [I(180,121)] = {30,0x3FFFF6FA}, + [I(181,121)] = {29,0x1FFFF0FA}, + [I(182,121)] = {30,0x3FFFF77A}, + [I(183,121)] = {30,0x3FFFF7FA}, + [I(184,121)] = {27,0x7FFF57A}, + [I(185,121)] = {29,0x1FFFF17A}, + [I(186,121)] = {29,0x1FFFF1FA}, + [I(187,121)] = {29,0x1FFFF27A}, + [I(188,121)] = {30,0x3FFFF87A}, + [I(189,121)] = {29,0x1FFFF2FA}, + [I(190,121)] = {29,0x1FFFF37A}, + [I(191,121)] = {30,0x3FFFF8FA}, + [I(192,121)] = {64,0}, + [I(193,121)] = {64,0}, + [I(194,121)] = {27,0x7FFF5FA}, + [I(195,121)] = {26,0x3FFF8FA}, + [I(196,121)] = {29,0x1FFFF3FA}, + [I(197,121)] = {30,0x3FFFF97A}, + [I(198,121)] = {29,0x1FFFF47A}, + [I(199,121)] = {X32,0xFFFFF67A}, + [I(200,121)] = {64,0}, + [I(201,121)] = {64,0}, + [I(202,121)] = {64,0}, + [I(203,121)] = {64,0}, + [I(204,121)] = {64,0}, + [I(205,121)] = {64,0}, + [I(206,121)] = {31,0x7FFFF8FA}, + [I(207,121)] = {X32,0xFFFFF6FA}, + [I(208,121)] = {26,0x3FFF97A}, + [I(209,121)] = {28,0xFFFF1FA}, + [I(210,121)] = {64,0}, + [I(211,121)] = {64,0}, + [I(212,121)] = {64,0}, + [I(213,121)] = {64,0}, + [I(214,121)] = {64,0}, + [I(215,121)] = {31,0x7FFFF97A}, + [I(216,121)] = {28,0xFFFF27A}, + [I(217,121)] = {28,0xFFFF2FA}, + [I(218,121)] = {64,0}, + [I(219,121)] = {64,0}, + [I(220,121)] = {64,0}, + [I(221,121)] = {64,0}, + [I(222,121)] = {64,0}, + [I(223,121)] = {64,0}, + [I(224,121)] = {27,0x7FFF67A}, + [I(225,121)] = {31,0x7FFFF9FA}, + [I(226,121)] = {27,0x7FFF6FA}, + [I(227,121)] = {28,0xFFFF37A}, + [I(228,121)] = {29,0x1FFFF4FA}, + [I(229,121)] = {28,0xFFFF3FA}, + [I(230,121)] = {28,0xFFFF47A}, + [I(231,121)] = {30,0x3FFFF9FA}, + [I(232,121)] = {29,0x1FFFF57A}, + [I(233,121)] = {29,0x1FFFF5FA}, + [I(234,121)] = {X32,0xFFFFF77A}, + [I(235,121)] = {X32,0xFFFFF7FA}, + [I(236,121)] = {31,0x7FFFFA7A}, + [I(237,121)] = {31,0x7FFFFAFA}, + [I(238,121)] = {64,0}, + [I(239,121)] = {30,0x3FFFFA7A}, + [I(240,121)] = {64,0}, + [I(241,121)] = {64,0}, + [I(242,121)] = {64,0}, + [I(243,121)] = {64,0}, + [I(244,121)] = {64,0}, + [I(245,121)] = {64,0}, + [I(246,121)] = {64,0}, + [I(247,121)] = {64,0}, + [I(248,121)] = {64,0}, + [I(249,121)] = {64,0}, + [I(250,121)] = {64,0}, + [I(251,121)] = {64,0}, + [I(252,121)] = {64,0}, + [I(253,121)] = {64,0}, + [I(254,121)] = {64,0}, + [I(255,121)] = {64,0}, + [I(0,122)] = {20,0xFFC7B}, + [I(1,122)] = {30,0x3FFFEC7B}, + [I(2,122)] = {64,0}, + [I(3,122)] = {64,0}, + [I(4,122)] = {64,0}, + [I(5,122)] = {64,0}, + [I(6,122)] = {64,0}, + [I(7,122)] = {64,0}, + [I(8,122)] = {64,0}, + [I(9,122)] = {31,0x7FFFF57B}, + [I(10,122)] = {64,0}, + [I(11,122)] = {64,0}, + [I(12,122)] = {64,0}, + [I(13,122)] = {64,0}, + [I(14,122)] = {64,0}, + [I(15,122)] = {64,0}, + [I(16,122)] = {64,0}, + [I(17,122)] = {64,0}, + [I(18,122)] = {64,0}, + [I(19,122)] = {64,0}, + [I(20,122)] = {64,0}, + [I(21,122)] = {64,0}, + [I(22,122)] = {64,0}, + [I(23,122)] = {64,0}, + [I(24,122)] = {64,0}, + [I(25,122)] = {64,0}, + [I(26,122)] = {64,0}, + [I(27,122)] = {64,0}, + [I(28,122)] = {64,0}, + [I(29,122)] = {64,0}, + [I(30,122)] = {64,0}, + [I(31,122)] = {64,0}, + [I(32,122)] = {13,0xA7B}, + [I(33,122)] = {17,0x1FC7B}, + [I(34,122)] = {17,0x1FCFB}, + [I(35,122)] = {19,0x7FD7B}, + [I(36,122)] = {20,0xFFCFB}, + [I(37,122)] = {13,0xAFB}, + [I(38,122)] = {15,0x7C7B}, + [I(39,122)] = {18,0x3FD7B}, + [I(40,122)] = {17,0x1FD7B}, + [I(41,122)] = {17,0x1FDFB}, + [I(42,122)] = {15,0x7CFB}, + [I(43,122)] = {18,0x3FDFB}, + [I(44,122)] = {15,0x7D7B}, + [I(45,122)] = {13,0xB7B}, + [I(46,122)] = {13,0xBFB}, + [I(47,122)] = {13,0xC7B}, + [I(48,122)] = {12,0x7B}, + [I(49,122)] = {12,0xFB}, + [I(50,122)] = {12,0x17B}, + [I(51,122)] = {13,0xCFB}, + [I(52,122)] = {13,0xD7B}, + [I(53,122)] = {13,0xDFB}, + [I(54,122)] = {13,0xE7B}, + [I(55,122)] = {13,0xEFB}, + [I(56,122)] = {13,0xF7B}, + [I(57,122)] = {13,0xFFB}, + [I(58,122)] = {14,0x2E7B}, + [I(59,122)] = {15,0x7DFB}, + [I(60,122)] = {22,0x3FFE7B}, + [I(61,122)] = {13,0x107B}, + [I(62,122)] = {19,0x7FDFB}, + [I(63,122)] = {17,0x1FE7B}, + [I(64,122)] = {20,0xFFD7B}, + [I(65,122)] = {13,0x10FB}, + [I(66,122)] = {14,0x2EFB}, + [I(67,122)] = {14,0x2F7B}, + [I(68,122)] = {14,0x2FFB}, + [I(69,122)] = {14,0x307B}, + [I(70,122)] = {14,0x30FB}, + [I(71,122)] = {14,0x317B}, + [I(72,122)] = {14,0x31FB}, + [I(73,122)] = {14,0x327B}, + [I(74,122)] = {14,0x32FB}, + [I(75,122)] = {14,0x337B}, + [I(76,122)] = {14,0x33FB}, + [I(77,122)] = {14,0x347B}, + [I(78,122)] = {14,0x34FB}, + [I(79,122)] = {14,0x357B}, + [I(80,122)] = {14,0x35FB}, + [I(81,122)] = {14,0x367B}, + [I(82,122)] = {14,0x36FB}, + [I(83,122)] = {14,0x377B}, + [I(84,122)] = {14,0x37FB}, + [I(85,122)] = {14,0x387B}, + [I(86,122)] = {14,0x38FB}, + [I(87,122)] = {14,0x397B}, + [I(88,122)] = {15,0x7E7B}, + [I(89,122)] = {14,0x39FB}, + [I(90,122)] = {15,0x7EFB}, + [I(91,122)] = {20,0xFFDFB}, + [I(92,122)] = {26,0x3FFF87B}, + [I(93,122)] = {20,0xFFE7B}, + [I(94,122)] = {21,0x1FFE7B}, + [I(95,122)] = {13,0x117B}, + [I(96,122)] = {22,0x3FFEFB}, + [I(97,122)] = {12,0x1FB}, + [I(98,122)] = {13,0x11FB}, + [I(99,122)] = {12,0x27B}, + [I(100,122)] = {13,0x127B}, + [I(101,122)] = {12,0x2FB}, + [I(102,122)] = {13,0x12FB}, + [I(103,122)] = {13,0x137B}, + [I(104,122)] = {13,0x13FB}, + [I(105,122)] = {12,0x37B}, + [I(106,122)] = {14,0x3A7B}, + [I(107,122)] = {14,0x3AFB}, + [I(108,122)] = {13,0x147B}, + [I(109,122)] = {13,0x14FB}, + [I(110,122)] = {13,0x157B}, + [I(111,122)] = {12,0x3FB}, + [I(112,122)] = {13,0x15FB}, + [I(113,122)] = {14,0x3B7B}, + [I(114,122)] = {13,0x167B}, + [I(115,122)] = {12,0x47B}, + [I(116,122)] = {12,0x4FB}, + [I(117,122)] = {13,0x16FB}, + [I(118,122)] = {14,0x3BFB}, + [I(119,122)] = {14,0x3C7B}, + [I(120,122)] = {14,0x3CFB}, + [I(121,122)] = {14,0x3D7B}, + [I(122,122)] = {14,0x3DFB}, + [I(123,122)] = {22,0x3FFF7B}, + [I(124,122)] = {18,0x3FE7B}, + [I(125,122)] = {21,0x1FFEFB}, + [I(126,122)] = {20,0xFFEFB}, + [I(127,122)] = {64,0}, + [I(128,122)] = {27,0x7FFF37B}, + [I(129,122)] = {29,0x1FFFE97B}, + [I(130,122)] = {27,0x7FFF3FB}, + [I(131,122)] = {27,0x7FFF47B}, + [I(132,122)] = {29,0x1FFFE9FB}, + [I(133,122)] = {29,0x1FFFEA7B}, + [I(134,122)] = {29,0x1FFFEAFB}, + [I(135,122)] = {30,0x3FFFECFB}, + [I(136,122)] = {29,0x1FFFEB7B}, + [I(137,122)] = {30,0x3FFFED7B}, + [I(138,122)] = {30,0x3FFFEDFB}, + [I(139,122)] = {30,0x3FFFEE7B}, + [I(140,122)] = {30,0x3FFFEEFB}, + [I(141,122)] = {30,0x3FFFEF7B}, + [I(142,122)] = {31,0x7FFFF5FB}, + [I(143,122)] = {30,0x3FFFEFFB}, + [I(144,122)] = {31,0x7FFFF67B}, + [I(145,122)] = {31,0x7FFFF6FB}, + [I(146,122)] = {29,0x1FFFEBFB}, + [I(147,122)] = {30,0x3FFFF07B}, + [I(148,122)] = {31,0x7FFFF77B}, + [I(149,122)] = {30,0x3FFFF0FB}, + [I(150,122)] = {30,0x3FFFF17B}, + [I(151,122)] = {30,0x3FFFF1FB}, + [I(152,122)] = {30,0x3FFFF27B}, + [I(153,122)] = {28,0xFFFEE7B}, + [I(154,122)] = {29,0x1FFFEC7B}, + [I(155,122)] = {30,0x3FFFF2FB}, + [I(156,122)] = {29,0x1FFFECFB}, + [I(157,122)] = {30,0x3FFFF37B}, + [I(158,122)] = {30,0x3FFFF3FB}, + [I(159,122)] = {31,0x7FFFF7FB}, + [I(160,122)] = {29,0x1FFFED7B}, + [I(161,122)] = {28,0xFFFEEFB}, + [I(162,122)] = {27,0x7FFF4FB}, + [I(163,122)] = {29,0x1FFFEDFB}, + [I(164,122)] = {29,0x1FFFEE7B}, + [I(165,122)] = {30,0x3FFFF47B}, + [I(166,122)] = {30,0x3FFFF4FB}, + [I(167,122)] = {28,0xFFFEF7B}, + [I(168,122)] = {30,0x3FFFF57B}, + [I(169,122)] = {29,0x1FFFEEFB}, + [I(170,122)] = {29,0x1FFFEF7B}, + [I(171,122)] = {31,0x7FFFF87B}, + [I(172,122)] = {28,0xFFFEFFB}, + [I(173,122)] = {29,0x1FFFEFFB}, + [I(174,122)] = {30,0x3FFFF5FB}, + [I(175,122)] = {30,0x3FFFF67B}, + [I(176,122)] = {28,0xFFFF07B}, + [I(177,122)] = {28,0xFFFF0FB}, + [I(178,122)] = {29,0x1FFFF07B}, + [I(179,122)] = {28,0xFFFF17B}, + [I(180,122)] = {30,0x3FFFF6FB}, + [I(181,122)] = {29,0x1FFFF0FB}, + [I(182,122)] = {30,0x3FFFF77B}, + [I(183,122)] = {30,0x3FFFF7FB}, + [I(184,122)] = {27,0x7FFF57B}, + [I(185,122)] = {29,0x1FFFF17B}, + [I(186,122)] = {29,0x1FFFF1FB}, + [I(187,122)] = {29,0x1FFFF27B}, + [I(188,122)] = {30,0x3FFFF87B}, + [I(189,122)] = {29,0x1FFFF2FB}, + [I(190,122)] = {29,0x1FFFF37B}, + [I(191,122)] = {30,0x3FFFF8FB}, + [I(192,122)] = {64,0}, + [I(193,122)] = {64,0}, + [I(194,122)] = {27,0x7FFF5FB}, + [I(195,122)] = {26,0x3FFF8FB}, + [I(196,122)] = {29,0x1FFFF3FB}, + [I(197,122)] = {30,0x3FFFF97B}, + [I(198,122)] = {29,0x1FFFF47B}, + [I(199,122)] = {X32,0xFFFFF67B}, + [I(200,122)] = {64,0}, + [I(201,122)] = {64,0}, + [I(202,122)] = {64,0}, + [I(203,122)] = {64,0}, + [I(204,122)] = {64,0}, + [I(205,122)] = {64,0}, + [I(206,122)] = {31,0x7FFFF8FB}, + [I(207,122)] = {X32,0xFFFFF6FB}, + [I(208,122)] = {26,0x3FFF97B}, + [I(209,122)] = {28,0xFFFF1FB}, + [I(210,122)] = {64,0}, + [I(211,122)] = {64,0}, + [I(212,122)] = {64,0}, + [I(213,122)] = {64,0}, + [I(214,122)] = {64,0}, + [I(215,122)] = {31,0x7FFFF97B}, + [I(216,122)] = {28,0xFFFF27B}, + [I(217,122)] = {28,0xFFFF2FB}, + [I(218,122)] = {64,0}, + [I(219,122)] = {64,0}, + [I(220,122)] = {64,0}, + [I(221,122)] = {64,0}, + [I(222,122)] = {64,0}, + [I(223,122)] = {64,0}, + [I(224,122)] = {27,0x7FFF67B}, + [I(225,122)] = {31,0x7FFFF9FB}, + [I(226,122)] = {27,0x7FFF6FB}, + [I(227,122)] = {28,0xFFFF37B}, + [I(228,122)] = {29,0x1FFFF4FB}, + [I(229,122)] = {28,0xFFFF3FB}, + [I(230,122)] = {28,0xFFFF47B}, + [I(231,122)] = {30,0x3FFFF9FB}, + [I(232,122)] = {29,0x1FFFF57B}, + [I(233,122)] = {29,0x1FFFF5FB}, + [I(234,122)] = {X32,0xFFFFF77B}, + [I(235,122)] = {X32,0xFFFFF7FB}, + [I(236,122)] = {31,0x7FFFFA7B}, + [I(237,122)] = {31,0x7FFFFAFB}, + [I(238,122)] = {64,0}, + [I(239,122)] = {30,0x3FFFFA7B}, + [I(240,122)] = {64,0}, + [I(241,122)] = {64,0}, + [I(242,122)] = {64,0}, + [I(243,122)] = {64,0}, + [I(244,122)] = {64,0}, + [I(245,122)] = {64,0}, + [I(246,122)] = {64,0}, + [I(247,122)] = {64,0}, + [I(248,122)] = {64,0}, + [I(249,122)] = {64,0}, + [I(250,122)] = {64,0}, + [I(251,122)] = {64,0}, + [I(252,122)] = {64,0}, + [I(253,122)] = {64,0}, + [I(254,122)] = {64,0}, + [I(255,122)] = {64,0}, + [I(0,123)] = {28,0xFFC7FFE}, + [I(1,123)] = {64,0}, + [I(2,123)] = {64,0}, + [I(3,123)] = {64,0}, + [I(4,123)] = {64,0}, + [I(5,123)] = {64,0}, + [I(6,123)] = {64,0}, + [I(7,123)] = {64,0}, + [I(8,123)] = {64,0}, + [I(9,123)] = {64,0}, + [I(10,123)] = {64,0}, + [I(11,123)] = {64,0}, + [I(12,123)] = {64,0}, + [I(13,123)] = {64,0}, + [I(14,123)] = {64,0}, + [I(15,123)] = {64,0}, + [I(16,123)] = {64,0}, + [I(17,123)] = {64,0}, + [I(18,123)] = {64,0}, + [I(19,123)] = {64,0}, + [I(20,123)] = {64,0}, + [I(21,123)] = {64,0}, + [I(22,123)] = {64,0}, + [I(23,123)] = {64,0}, + [I(24,123)] = {64,0}, + [I(25,123)] = {64,0}, + [I(26,123)] = {64,0}, + [I(27,123)] = {64,0}, + [I(28,123)] = {64,0}, + [I(29,123)] = {64,0}, + [I(30,123)] = {64,0}, + [I(31,123)] = {64,0}, + [I(32,123)] = {21,0xA7FFE}, + [I(33,123)] = {25,0x1FC7FFE}, + [I(34,123)] = {25,0x1FCFFFE}, + [I(35,123)] = {27,0x7FD7FFE}, + [I(36,123)] = {28,0xFFCFFFE}, + [I(37,123)] = {21,0xAFFFE}, + [I(38,123)] = {23,0x7C7FFE}, + [I(39,123)] = {26,0x3FD7FFE}, + [I(40,123)] = {25,0x1FD7FFE}, + [I(41,123)] = {25,0x1FDFFFE}, + [I(42,123)] = {23,0x7CFFFE}, + [I(43,123)] = {26,0x3FDFFFE}, + [I(44,123)] = {23,0x7D7FFE}, + [I(45,123)] = {21,0xB7FFE}, + [I(46,123)] = {21,0xBFFFE}, + [I(47,123)] = {21,0xC7FFE}, + [I(48,123)] = {20,0x7FFE}, + [I(49,123)] = {20,0xFFFE}, + [I(50,123)] = {20,0x17FFE}, + [I(51,123)] = {21,0xCFFFE}, + [I(52,123)] = {21,0xD7FFE}, + [I(53,123)] = {21,0xDFFFE}, + [I(54,123)] = {21,0xE7FFE}, + [I(55,123)] = {21,0xEFFFE}, + [I(56,123)] = {21,0xF7FFE}, + [I(57,123)] = {21,0xFFFFE}, + [I(58,123)] = {22,0x2E7FFE}, + [I(59,123)] = {23,0x7DFFFE}, + [I(60,123)] = {30,0x3FFE7FFE}, + [I(61,123)] = {21,0x107FFE}, + [I(62,123)] = {27,0x7FDFFFE}, + [I(63,123)] = {25,0x1FE7FFE}, + [I(64,123)] = {28,0xFFD7FFE}, + [I(65,123)] = {21,0x10FFFE}, + [I(66,123)] = {22,0x2EFFFE}, + [I(67,123)] = {22,0x2F7FFE}, + [I(68,123)] = {22,0x2FFFFE}, + [I(69,123)] = {22,0x307FFE}, + [I(70,123)] = {22,0x30FFFE}, + [I(71,123)] = {22,0x317FFE}, + [I(72,123)] = {22,0x31FFFE}, + [I(73,123)] = {22,0x327FFE}, + [I(74,123)] = {22,0x32FFFE}, + [I(75,123)] = {22,0x337FFE}, + [I(76,123)] = {22,0x33FFFE}, + [I(77,123)] = {22,0x347FFE}, + [I(78,123)] = {22,0x34FFFE}, + [I(79,123)] = {22,0x357FFE}, + [I(80,123)] = {22,0x35FFFE}, + [I(81,123)] = {22,0x367FFE}, + [I(82,123)] = {22,0x36FFFE}, + [I(83,123)] = {22,0x377FFE}, + [I(84,123)] = {22,0x37FFFE}, + [I(85,123)] = {22,0x387FFE}, + [I(86,123)] = {22,0x38FFFE}, + [I(87,123)] = {22,0x397FFE}, + [I(88,123)] = {23,0x7E7FFE}, + [I(89,123)] = {22,0x39FFFE}, + [I(90,123)] = {23,0x7EFFFE}, + [I(91,123)] = {28,0xFFDFFFE}, + [I(92,123)] = {64,0}, + [I(93,123)] = {28,0xFFE7FFE}, + [I(94,123)] = {29,0x1FFE7FFE}, + [I(95,123)] = {21,0x117FFE}, + [I(96,123)] = {30,0x3FFEFFFE}, + [I(97,123)] = {20,0x1FFFE}, + [I(98,123)] = {21,0x11FFFE}, + [I(99,123)] = {20,0x27FFE}, + [I(100,123)] = {21,0x127FFE}, + [I(101,123)] = {20,0x2FFFE}, + [I(102,123)] = {21,0x12FFFE}, + [I(103,123)] = {21,0x137FFE}, + [I(104,123)] = {21,0x13FFFE}, + [I(105,123)] = {20,0x37FFE}, + [I(106,123)] = {22,0x3A7FFE}, + [I(107,123)] = {22,0x3AFFFE}, + [I(108,123)] = {21,0x147FFE}, + [I(109,123)] = {21,0x14FFFE}, + [I(110,123)] = {21,0x157FFE}, + [I(111,123)] = {20,0x3FFFE}, + [I(112,123)] = {21,0x15FFFE}, + [I(113,123)] = {22,0x3B7FFE}, + [I(114,123)] = {21,0x167FFE}, + [I(115,123)] = {20,0x47FFE}, + [I(116,123)] = {20,0x4FFFE}, + [I(117,123)] = {21,0x16FFFE}, + [I(118,123)] = {22,0x3BFFFE}, + [I(119,123)] = {22,0x3C7FFE}, + [I(120,123)] = {22,0x3CFFFE}, + [I(121,123)] = {22,0x3D7FFE}, + [I(122,123)] = {22,0x3DFFFE}, + [I(123,123)] = {30,0x3FFF7FFE}, + [I(124,123)] = {26,0x3FE7FFE}, + [I(125,123)] = {29,0x1FFEFFFE}, + [I(126,123)] = {28,0xFFEFFFE}, + [I(127,123)] = {64,0}, + [I(128,123)] = {64,0}, + [I(129,123)] = {64,0}, + [I(130,123)] = {64,0}, + [I(131,123)] = {64,0}, + [I(132,123)] = {64,0}, + [I(133,123)] = {64,0}, + [I(134,123)] = {64,0}, + [I(135,123)] = {64,0}, + [I(136,123)] = {64,0}, + [I(137,123)] = {64,0}, + [I(138,123)] = {64,0}, + [I(139,123)] = {64,0}, + [I(140,123)] = {64,0}, + [I(141,123)] = {64,0}, + [I(142,123)] = {64,0}, + [I(143,123)] = {64,0}, + [I(144,123)] = {64,0}, + [I(145,123)] = {64,0}, + [I(146,123)] = {64,0}, + [I(147,123)] = {64,0}, + [I(148,123)] = {64,0}, + [I(149,123)] = {64,0}, + [I(150,123)] = {64,0}, + [I(151,123)] = {64,0}, + [I(152,123)] = {64,0}, + [I(153,123)] = {64,0}, + [I(154,123)] = {64,0}, + [I(155,123)] = {64,0}, + [I(156,123)] = {64,0}, + [I(157,123)] = {64,0}, + [I(158,123)] = {64,0}, + [I(159,123)] = {64,0}, + [I(160,123)] = {64,0}, + [I(161,123)] = {64,0}, + [I(162,123)] = {64,0}, + [I(163,123)] = {64,0}, + [I(164,123)] = {64,0}, + [I(165,123)] = {64,0}, + [I(166,123)] = {64,0}, + [I(167,123)] = {64,0}, + [I(168,123)] = {64,0}, + [I(169,123)] = {64,0}, + [I(170,123)] = {64,0}, + [I(171,123)] = {64,0}, + [I(172,123)] = {64,0}, + [I(173,123)] = {64,0}, + [I(174,123)] = {64,0}, + [I(175,123)] = {64,0}, + [I(176,123)] = {64,0}, + [I(177,123)] = {64,0}, + [I(178,123)] = {64,0}, + [I(179,123)] = {64,0}, + [I(180,123)] = {64,0}, + [I(181,123)] = {64,0}, + [I(182,123)] = {64,0}, + [I(183,123)] = {64,0}, + [I(184,123)] = {64,0}, + [I(185,123)] = {64,0}, + [I(186,123)] = {64,0}, + [I(187,123)] = {64,0}, + [I(188,123)] = {64,0}, + [I(189,123)] = {64,0}, + [I(190,123)] = {64,0}, + [I(191,123)] = {64,0}, + [I(192,123)] = {64,0}, + [I(193,123)] = {64,0}, + [I(194,123)] = {64,0}, + [I(195,123)] = {64,0}, + [I(196,123)] = {64,0}, + [I(197,123)] = {64,0}, + [I(198,123)] = {64,0}, + [I(199,123)] = {64,0}, + [I(200,123)] = {64,0}, + [I(201,123)] = {64,0}, + [I(202,123)] = {64,0}, + [I(203,123)] = {64,0}, + [I(204,123)] = {64,0}, + [I(205,123)] = {64,0}, + [I(206,123)] = {64,0}, + [I(207,123)] = {64,0}, + [I(208,123)] = {64,0}, + [I(209,123)] = {64,0}, + [I(210,123)] = {64,0}, + [I(211,123)] = {64,0}, + [I(212,123)] = {64,0}, + [I(213,123)] = {64,0}, + [I(214,123)] = {64,0}, + [I(215,123)] = {64,0}, + [I(216,123)] = {64,0}, + [I(217,123)] = {64,0}, + [I(218,123)] = {64,0}, + [I(219,123)] = {64,0}, + [I(220,123)] = {64,0}, + [I(221,123)] = {64,0}, + [I(222,123)] = {64,0}, + [I(223,123)] = {64,0}, + [I(224,123)] = {64,0}, + [I(225,123)] = {64,0}, + [I(226,123)] = {64,0}, + [I(227,123)] = {64,0}, + [I(228,123)] = {64,0}, + [I(229,123)] = {64,0}, + [I(230,123)] = {64,0}, + [I(231,123)] = {64,0}, + [I(232,123)] = {64,0}, + [I(233,123)] = {64,0}, + [I(234,123)] = {64,0}, + [I(235,123)] = {64,0}, + [I(236,123)] = {64,0}, + [I(237,123)] = {64,0}, + [I(238,123)] = {64,0}, + [I(239,123)] = {64,0}, + [I(240,123)] = {64,0}, + [I(241,123)] = {64,0}, + [I(242,123)] = {64,0}, + [I(243,123)] = {64,0}, + [I(244,123)] = {64,0}, + [I(245,123)] = {64,0}, + [I(246,123)] = {64,0}, + [I(247,123)] = {64,0}, + [I(248,123)] = {64,0}, + [I(249,123)] = {64,0}, + [I(250,123)] = {64,0}, + [I(251,123)] = {64,0}, + [I(252,123)] = {64,0}, + [I(253,123)] = {64,0}, + [I(254,123)] = {64,0}, + [I(255,123)] = {64,0}, + [I(0,124)] = {24,0xFFC7FC}, + [I(1,124)] = {64,0}, + [I(2,124)] = {64,0}, + [I(3,124)] = {64,0}, + [I(4,124)] = {64,0}, + [I(5,124)] = {64,0}, + [I(6,124)] = {64,0}, + [I(7,124)] = {64,0}, + [I(8,124)] = {64,0}, + [I(9,124)] = {64,0}, + [I(10,124)] = {64,0}, + [I(11,124)] = {64,0}, + [I(12,124)] = {64,0}, + [I(13,124)] = {64,0}, + [I(14,124)] = {64,0}, + [I(15,124)] = {64,0}, + [I(16,124)] = {64,0}, + [I(17,124)] = {64,0}, + [I(18,124)] = {64,0}, + [I(19,124)] = {64,0}, + [I(20,124)] = {64,0}, + [I(21,124)] = {64,0}, + [I(22,124)] = {64,0}, + [I(23,124)] = {64,0}, + [I(24,124)] = {64,0}, + [I(25,124)] = {64,0}, + [I(26,124)] = {64,0}, + [I(27,124)] = {64,0}, + [I(28,124)] = {64,0}, + [I(29,124)] = {64,0}, + [I(30,124)] = {64,0}, + [I(31,124)] = {64,0}, + [I(32,124)] = {17,0xA7FC}, + [I(33,124)] = {21,0x1FC7FC}, + [I(34,124)] = {21,0x1FCFFC}, + [I(35,124)] = {23,0x7FD7FC}, + [I(36,124)] = {24,0xFFCFFC}, + [I(37,124)] = {17,0xAFFC}, + [I(38,124)] = {19,0x7C7FC}, + [I(39,124)] = {22,0x3FD7FC}, + [I(40,124)] = {21,0x1FD7FC}, + [I(41,124)] = {21,0x1FDFFC}, + [I(42,124)] = {19,0x7CFFC}, + [I(43,124)] = {22,0x3FDFFC}, + [I(44,124)] = {19,0x7D7FC}, + [I(45,124)] = {17,0xB7FC}, + [I(46,124)] = {17,0xBFFC}, + [I(47,124)] = {17,0xC7FC}, + [I(48,124)] = {16,0x7FC}, + [I(49,124)] = {16,0xFFC}, + [I(50,124)] = {16,0x17FC}, + [I(51,124)] = {17,0xCFFC}, + [I(52,124)] = {17,0xD7FC}, + [I(53,124)] = {17,0xDFFC}, + [I(54,124)] = {17,0xE7FC}, + [I(55,124)] = {17,0xEFFC}, + [I(56,124)] = {17,0xF7FC}, + [I(57,124)] = {17,0xFFFC}, + [I(58,124)] = {18,0x2E7FC}, + [I(59,124)] = {19,0x7DFFC}, + [I(60,124)] = {26,0x3FFE7FC}, + [I(61,124)] = {17,0x107FC}, + [I(62,124)] = {23,0x7FDFFC}, + [I(63,124)] = {21,0x1FE7FC}, + [I(64,124)] = {24,0xFFD7FC}, + [I(65,124)] = {17,0x10FFC}, + [I(66,124)] = {18,0x2EFFC}, + [I(67,124)] = {18,0x2F7FC}, + [I(68,124)] = {18,0x2FFFC}, + [I(69,124)] = {18,0x307FC}, + [I(70,124)] = {18,0x30FFC}, + [I(71,124)] = {18,0x317FC}, + [I(72,124)] = {18,0x31FFC}, + [I(73,124)] = {18,0x327FC}, + [I(74,124)] = {18,0x32FFC}, + [I(75,124)] = {18,0x337FC}, + [I(76,124)] = {18,0x33FFC}, + [I(77,124)] = {18,0x347FC}, + [I(78,124)] = {18,0x34FFC}, + [I(79,124)] = {18,0x357FC}, + [I(80,124)] = {18,0x35FFC}, + [I(81,124)] = {18,0x367FC}, + [I(82,124)] = {18,0x36FFC}, + [I(83,124)] = {18,0x377FC}, + [I(84,124)] = {18,0x37FFC}, + [I(85,124)] = {18,0x387FC}, + [I(86,124)] = {18,0x38FFC}, + [I(87,124)] = {18,0x397FC}, + [I(88,124)] = {19,0x7E7FC}, + [I(89,124)] = {18,0x39FFC}, + [I(90,124)] = {19,0x7EFFC}, + [I(91,124)] = {24,0xFFDFFC}, + [I(92,124)] = {30,0x3FFF87FC}, + [I(93,124)] = {24,0xFFE7FC}, + [I(94,124)] = {25,0x1FFE7FC}, + [I(95,124)] = {17,0x117FC}, + [I(96,124)] = {26,0x3FFEFFC}, + [I(97,124)] = {16,0x1FFC}, + [I(98,124)] = {17,0x11FFC}, + [I(99,124)] = {16,0x27FC}, + [I(100,124)] = {17,0x127FC}, + [I(101,124)] = {16,0x2FFC}, + [I(102,124)] = {17,0x12FFC}, + [I(103,124)] = {17,0x137FC}, + [I(104,124)] = {17,0x13FFC}, + [I(105,124)] = {16,0x37FC}, + [I(106,124)] = {18,0x3A7FC}, + [I(107,124)] = {18,0x3AFFC}, + [I(108,124)] = {17,0x147FC}, + [I(109,124)] = {17,0x14FFC}, + [I(110,124)] = {17,0x157FC}, + [I(111,124)] = {16,0x3FFC}, + [I(112,124)] = {17,0x15FFC}, + [I(113,124)] = {18,0x3B7FC}, + [I(114,124)] = {17,0x167FC}, + [I(115,124)] = {16,0x47FC}, + [I(116,124)] = {16,0x4FFC}, + [I(117,124)] = {17,0x16FFC}, + [I(118,124)] = {18,0x3BFFC}, + [I(119,124)] = {18,0x3C7FC}, + [I(120,124)] = {18,0x3CFFC}, + [I(121,124)] = {18,0x3D7FC}, + [I(122,124)] = {18,0x3DFFC}, + [I(123,124)] = {26,0x3FFF7FC}, + [I(124,124)] = {22,0x3FE7FC}, + [I(125,124)] = {25,0x1FFEFFC}, + [I(126,124)] = {24,0xFFEFFC}, + [I(127,124)] = {64,0}, + [I(128,124)] = {31,0x7FFF37FC}, + [I(129,124)] = {64,0}, + [I(130,124)] = {31,0x7FFF3FFC}, + [I(131,124)] = {31,0x7FFF47FC}, + [I(132,124)] = {64,0}, + [I(133,124)] = {64,0}, + [I(134,124)] = {64,0}, + [I(135,124)] = {64,0}, + [I(136,124)] = {64,0}, + [I(137,124)] = {64,0}, + [I(138,124)] = {64,0}, + [I(139,124)] = {64,0}, + [I(140,124)] = {64,0}, + [I(141,124)] = {64,0}, + [I(142,124)] = {64,0}, + [I(143,124)] = {64,0}, + [I(144,124)] = {64,0}, + [I(145,124)] = {64,0}, + [I(146,124)] = {64,0}, + [I(147,124)] = {64,0}, + [I(148,124)] = {64,0}, + [I(149,124)] = {64,0}, + [I(150,124)] = {64,0}, + [I(151,124)] = {64,0}, + [I(152,124)] = {64,0}, + [I(153,124)] = {X32,0xFFFEE7FC}, + [I(154,124)] = {64,0}, + [I(155,124)] = {64,0}, + [I(156,124)] = {64,0}, + [I(157,124)] = {64,0}, + [I(158,124)] = {64,0}, + [I(159,124)] = {64,0}, + [I(160,124)] = {64,0}, + [I(161,124)] = {X32,0xFFFEEFFC}, + [I(162,124)] = {31,0x7FFF4FFC}, + [I(163,124)] = {64,0}, + [I(164,124)] = {64,0}, + [I(165,124)] = {64,0}, + [I(166,124)] = {64,0}, + [I(167,124)] = {X32,0xFFFEF7FC}, + [I(168,124)] = {64,0}, + [I(169,124)] = {64,0}, + [I(170,124)] = {64,0}, + [I(171,124)] = {64,0}, + [I(172,124)] = {X32,0xFFFEFFFC}, + [I(173,124)] = {64,0}, + [I(174,124)] = {64,0}, + [I(175,124)] = {64,0}, + [I(176,124)] = {X32,0xFFFF07FC}, + [I(177,124)] = {X32,0xFFFF0FFC}, + [I(178,124)] = {64,0}, + [I(179,124)] = {X32,0xFFFF17FC}, + [I(180,124)] = {64,0}, + [I(181,124)] = {64,0}, + [I(182,124)] = {64,0}, + [I(183,124)] = {64,0}, + [I(184,124)] = {31,0x7FFF57FC}, + [I(185,124)] = {64,0}, + [I(186,124)] = {64,0}, + [I(187,124)] = {64,0}, + [I(188,124)] = {64,0}, + [I(189,124)] = {64,0}, + [I(190,124)] = {64,0}, + [I(191,124)] = {64,0}, + [I(192,124)] = {64,0}, + [I(193,124)] = {64,0}, + [I(194,124)] = {31,0x7FFF5FFC}, + [I(195,124)] = {30,0x3FFF8FFC}, + [I(196,124)] = {64,0}, + [I(197,124)] = {64,0}, + [I(198,124)] = {64,0}, + [I(199,124)] = {64,0}, + [I(200,124)] = {64,0}, + [I(201,124)] = {64,0}, + [I(202,124)] = {64,0}, + [I(203,124)] = {64,0}, + [I(204,124)] = {64,0}, + [I(205,124)] = {64,0}, + [I(206,124)] = {64,0}, + [I(207,124)] = {64,0}, + [I(208,124)] = {30,0x3FFF97FC}, + [I(209,124)] = {X32,0xFFFF1FFC}, + [I(210,124)] = {64,0}, + [I(211,124)] = {64,0}, + [I(212,124)] = {64,0}, + [I(213,124)] = {64,0}, + [I(214,124)] = {64,0}, + [I(215,124)] = {64,0}, + [I(216,124)] = {X32,0xFFFF27FC}, + [I(217,124)] = {X32,0xFFFF2FFC}, + [I(218,124)] = {64,0}, + [I(219,124)] = {64,0}, + [I(220,124)] = {64,0}, + [I(221,124)] = {64,0}, + [I(222,124)] = {64,0}, + [I(223,124)] = {64,0}, + [I(224,124)] = {31,0x7FFF67FC}, + [I(225,124)] = {64,0}, + [I(226,124)] = {31,0x7FFF6FFC}, + [I(227,124)] = {X32,0xFFFF37FC}, + [I(228,124)] = {64,0}, + [I(229,124)] = {X32,0xFFFF3FFC}, + [I(230,124)] = {X32,0xFFFF47FC}, + [I(231,124)] = {64,0}, + [I(232,124)] = {64,0}, + [I(233,124)] = {64,0}, + [I(234,124)] = {64,0}, + [I(235,124)] = {64,0}, + [I(236,124)] = {64,0}, + [I(237,124)] = {64,0}, + [I(238,124)] = {64,0}, + [I(239,124)] = {64,0}, + [I(240,124)] = {64,0}, + [I(241,124)] = {64,0}, + [I(242,124)] = {64,0}, + [I(243,124)] = {64,0}, + [I(244,124)] = {64,0}, + [I(245,124)] = {64,0}, + [I(246,124)] = {64,0}, + [I(247,124)] = {64,0}, + [I(248,124)] = {64,0}, + [I(249,124)] = {64,0}, + [I(250,124)] = {64,0}, + [I(251,124)] = {64,0}, + [I(252,124)] = {64,0}, + [I(253,124)] = {64,0}, + [I(254,124)] = {64,0}, + [I(255,124)] = {64,0}, + [I(0,125)] = {27,0x7FE3FFD}, + [I(1,125)] = {64,0}, + [I(2,125)] = {64,0}, + [I(3,125)] = {64,0}, + [I(4,125)] = {64,0}, + [I(5,125)] = {64,0}, + [I(6,125)] = {64,0}, + [I(7,125)] = {64,0}, + [I(8,125)] = {64,0}, + [I(9,125)] = {64,0}, + [I(10,125)] = {64,0}, + [I(11,125)] = {64,0}, + [I(12,125)] = {64,0}, + [I(13,125)] = {64,0}, + [I(14,125)] = {64,0}, + [I(15,125)] = {64,0}, + [I(16,125)] = {64,0}, + [I(17,125)] = {64,0}, + [I(18,125)] = {64,0}, + [I(19,125)] = {64,0}, + [I(20,125)] = {64,0}, + [I(21,125)] = {64,0}, + [I(22,125)] = {64,0}, + [I(23,125)] = {64,0}, + [I(24,125)] = {64,0}, + [I(25,125)] = {64,0}, + [I(26,125)] = {64,0}, + [I(27,125)] = {64,0}, + [I(28,125)] = {64,0}, + [I(29,125)] = {64,0}, + [I(30,125)] = {64,0}, + [I(31,125)] = {64,0}, + [I(32,125)] = {20,0x53FFD}, + [I(33,125)] = {24,0xFE3FFD}, + [I(34,125)] = {24,0xFE7FFD}, + [I(35,125)] = {26,0x3FEBFFD}, + [I(36,125)] = {27,0x7FE7FFD}, + [I(37,125)] = {20,0x57FFD}, + [I(38,125)] = {22,0x3E3FFD}, + [I(39,125)] = {25,0x1FEBFFD}, + [I(40,125)] = {24,0xFEBFFD}, + [I(41,125)] = {24,0xFEFFFD}, + [I(42,125)] = {22,0x3E7FFD}, + [I(43,125)] = {25,0x1FEFFFD}, + [I(44,125)] = {22,0x3EBFFD}, + [I(45,125)] = {20,0x5BFFD}, + [I(46,125)] = {20,0x5FFFD}, + [I(47,125)] = {20,0x63FFD}, + [I(48,125)] = {19,0x3FFD}, + [I(49,125)] = {19,0x7FFD}, + [I(50,125)] = {19,0xBFFD}, + [I(51,125)] = {20,0x67FFD}, + [I(52,125)] = {20,0x6BFFD}, + [I(53,125)] = {20,0x6FFFD}, + [I(54,125)] = {20,0x73FFD}, + [I(55,125)] = {20,0x77FFD}, + [I(56,125)] = {20,0x7BFFD}, + [I(57,125)] = {20,0x7FFFD}, + [I(58,125)] = {21,0x173FFD}, + [I(59,125)] = {22,0x3EFFFD}, + [I(60,125)] = {29,0x1FFF3FFD}, + [I(61,125)] = {20,0x83FFD}, + [I(62,125)] = {26,0x3FEFFFD}, + [I(63,125)] = {24,0xFF3FFD}, + [I(64,125)] = {27,0x7FEBFFD}, + [I(65,125)] = {20,0x87FFD}, + [I(66,125)] = {21,0x177FFD}, + [I(67,125)] = {21,0x17BFFD}, + [I(68,125)] = {21,0x17FFFD}, + [I(69,125)] = {21,0x183FFD}, + [I(70,125)] = {21,0x187FFD}, + [I(71,125)] = {21,0x18BFFD}, + [I(72,125)] = {21,0x18FFFD}, + [I(73,125)] = {21,0x193FFD}, + [I(74,125)] = {21,0x197FFD}, + [I(75,125)] = {21,0x19BFFD}, + [I(76,125)] = {21,0x19FFFD}, + [I(77,125)] = {21,0x1A3FFD}, + [I(78,125)] = {21,0x1A7FFD}, + [I(79,125)] = {21,0x1ABFFD}, + [I(80,125)] = {21,0x1AFFFD}, + [I(81,125)] = {21,0x1B3FFD}, + [I(82,125)] = {21,0x1B7FFD}, + [I(83,125)] = {21,0x1BBFFD}, + [I(84,125)] = {21,0x1BFFFD}, + [I(85,125)] = {21,0x1C3FFD}, + [I(86,125)] = {21,0x1C7FFD}, + [I(87,125)] = {21,0x1CBFFD}, + [I(88,125)] = {22,0x3F3FFD}, + [I(89,125)] = {21,0x1CFFFD}, + [I(90,125)] = {22,0x3F7FFD}, + [I(91,125)] = {27,0x7FEFFFD}, + [I(92,125)] = {64,0}, + [I(93,125)] = {27,0x7FF3FFD}, + [I(94,125)] = {28,0xFFF3FFD}, + [I(95,125)] = {20,0x8BFFD}, + [I(96,125)] = {29,0x1FFF7FFD}, + [I(97,125)] = {19,0xFFFD}, + [I(98,125)] = {20,0x8FFFD}, + [I(99,125)] = {19,0x13FFD}, + [I(100,125)] = {20,0x93FFD}, + [I(101,125)] = {19,0x17FFD}, + [I(102,125)] = {20,0x97FFD}, + [I(103,125)] = {20,0x9BFFD}, + [I(104,125)] = {20,0x9FFFD}, + [I(105,125)] = {19,0x1BFFD}, + [I(106,125)] = {21,0x1D3FFD}, + [I(107,125)] = {21,0x1D7FFD}, + [I(108,125)] = {20,0xA3FFD}, + [I(109,125)] = {20,0xA7FFD}, + [I(110,125)] = {20,0xABFFD}, + [I(111,125)] = {19,0x1FFFD}, + [I(112,125)] = {20,0xAFFFD}, + [I(113,125)] = {21,0x1DBFFD}, + [I(114,125)] = {20,0xB3FFD}, + [I(115,125)] = {19,0x23FFD}, + [I(116,125)] = {19,0x27FFD}, + [I(117,125)] = {20,0xB7FFD}, + [I(118,125)] = {21,0x1DFFFD}, + [I(119,125)] = {21,0x1E3FFD}, + [I(120,125)] = {21,0x1E7FFD}, + [I(121,125)] = {21,0x1EBFFD}, + [I(122,125)] = {21,0x1EFFFD}, + [I(123,125)] = {29,0x1FFFBFFD}, + [I(124,125)] = {25,0x1FF3FFD}, + [I(125,125)] = {28,0xFFF7FFD}, + [I(126,125)] = {27,0x7FF7FFD}, + [I(127,125)] = {64,0}, + [I(128,125)] = {64,0}, + [I(129,125)] = {64,0}, + [I(130,125)] = {64,0}, + [I(131,125)] = {64,0}, + [I(132,125)] = {64,0}, + [I(133,125)] = {64,0}, + [I(134,125)] = {64,0}, + [I(135,125)] = {64,0}, + [I(136,125)] = {64,0}, + [I(137,125)] = {64,0}, + [I(138,125)] = {64,0}, + [I(139,125)] = {64,0}, + [I(140,125)] = {64,0}, + [I(141,125)] = {64,0}, + [I(142,125)] = {64,0}, + [I(143,125)] = {64,0}, + [I(144,125)] = {64,0}, + [I(145,125)] = {64,0}, + [I(146,125)] = {64,0}, + [I(147,125)] = {64,0}, + [I(148,125)] = {64,0}, + [I(149,125)] = {64,0}, + [I(150,125)] = {64,0}, + [I(151,125)] = {64,0}, + [I(152,125)] = {64,0}, + [I(153,125)] = {64,0}, + [I(154,125)] = {64,0}, + [I(155,125)] = {64,0}, + [I(156,125)] = {64,0}, + [I(157,125)] = {64,0}, + [I(158,125)] = {64,0}, + [I(159,125)] = {64,0}, + [I(160,125)] = {64,0}, + [I(161,125)] = {64,0}, + [I(162,125)] = {64,0}, + [I(163,125)] = {64,0}, + [I(164,125)] = {64,0}, + [I(165,125)] = {64,0}, + [I(166,125)] = {64,0}, + [I(167,125)] = {64,0}, + [I(168,125)] = {64,0}, + [I(169,125)] = {64,0}, + [I(170,125)] = {64,0}, + [I(171,125)] = {64,0}, + [I(172,125)] = {64,0}, + [I(173,125)] = {64,0}, + [I(174,125)] = {64,0}, + [I(175,125)] = {64,0}, + [I(176,125)] = {64,0}, + [I(177,125)] = {64,0}, + [I(178,125)] = {64,0}, + [I(179,125)] = {64,0}, + [I(180,125)] = {64,0}, + [I(181,125)] = {64,0}, + [I(182,125)] = {64,0}, + [I(183,125)] = {64,0}, + [I(184,125)] = {64,0}, + [I(185,125)] = {64,0}, + [I(186,125)] = {64,0}, + [I(187,125)] = {64,0}, + [I(188,125)] = {64,0}, + [I(189,125)] = {64,0}, + [I(190,125)] = {64,0}, + [I(191,125)] = {64,0}, + [I(192,125)] = {64,0}, + [I(193,125)] = {64,0}, + [I(194,125)] = {64,0}, + [I(195,125)] = {64,0}, + [I(196,125)] = {64,0}, + [I(197,125)] = {64,0}, + [I(198,125)] = {64,0}, + [I(199,125)] = {64,0}, + [I(200,125)] = {64,0}, + [I(201,125)] = {64,0}, + [I(202,125)] = {64,0}, + [I(203,125)] = {64,0}, + [I(204,125)] = {64,0}, + [I(205,125)] = {64,0}, + [I(206,125)] = {64,0}, + [I(207,125)] = {64,0}, + [I(208,125)] = {64,0}, + [I(209,125)] = {64,0}, + [I(210,125)] = {64,0}, + [I(211,125)] = {64,0}, + [I(212,125)] = {64,0}, + [I(213,125)] = {64,0}, + [I(214,125)] = {64,0}, + [I(215,125)] = {64,0}, + [I(216,125)] = {64,0}, + [I(217,125)] = {64,0}, + [I(218,125)] = {64,0}, + [I(219,125)] = {64,0}, + [I(220,125)] = {64,0}, + [I(221,125)] = {64,0}, + [I(222,125)] = {64,0}, + [I(223,125)] = {64,0}, + [I(224,125)] = {64,0}, + [I(225,125)] = {64,0}, + [I(226,125)] = {64,0}, + [I(227,125)] = {64,0}, + [I(228,125)] = {64,0}, + [I(229,125)] = {64,0}, + [I(230,125)] = {64,0}, + [I(231,125)] = {64,0}, + [I(232,125)] = {64,0}, + [I(233,125)] = {64,0}, + [I(234,125)] = {64,0}, + [I(235,125)] = {64,0}, + [I(236,125)] = {64,0}, + [I(237,125)] = {64,0}, + [I(238,125)] = {64,0}, + [I(239,125)] = {64,0}, + [I(240,125)] = {64,0}, + [I(241,125)] = {64,0}, + [I(242,125)] = {64,0}, + [I(243,125)] = {64,0}, + [I(244,125)] = {64,0}, + [I(245,125)] = {64,0}, + [I(246,125)] = {64,0}, + [I(247,125)] = {64,0}, + [I(248,125)] = {64,0}, + [I(249,125)] = {64,0}, + [I(250,125)] = {64,0}, + [I(251,125)] = {64,0}, + [I(252,125)] = {64,0}, + [I(253,125)] = {64,0}, + [I(254,125)] = {64,0}, + [I(255,125)] = {64,0}, + [I(0,126)] = {26,0x3FF1FFD}, + [I(1,126)] = {64,0}, + [I(2,126)] = {64,0}, + [I(3,126)] = {64,0}, + [I(4,126)] = {64,0}, + [I(5,126)] = {64,0}, + [I(6,126)] = {64,0}, + [I(7,126)] = {64,0}, + [I(8,126)] = {64,0}, + [I(9,126)] = {64,0}, + [I(10,126)] = {64,0}, + [I(11,126)] = {64,0}, + [I(12,126)] = {64,0}, + [I(13,126)] = {64,0}, + [I(14,126)] = {64,0}, + [I(15,126)] = {64,0}, + [I(16,126)] = {64,0}, + [I(17,126)] = {64,0}, + [I(18,126)] = {64,0}, + [I(19,126)] = {64,0}, + [I(20,126)] = {64,0}, + [I(21,126)] = {64,0}, + [I(22,126)] = {64,0}, + [I(23,126)] = {64,0}, + [I(24,126)] = {64,0}, + [I(25,126)] = {64,0}, + [I(26,126)] = {64,0}, + [I(27,126)] = {64,0}, + [I(28,126)] = {64,0}, + [I(29,126)] = {64,0}, + [I(30,126)] = {64,0}, + [I(31,126)] = {64,0}, + [I(32,126)] = {19,0x29FFD}, + [I(33,126)] = {23,0x7F1FFD}, + [I(34,126)] = {23,0x7F3FFD}, + [I(35,126)] = {25,0x1FF5FFD}, + [I(36,126)] = {26,0x3FF3FFD}, + [I(37,126)] = {19,0x2BFFD}, + [I(38,126)] = {21,0x1F1FFD}, + [I(39,126)] = {24,0xFF5FFD}, + [I(40,126)] = {23,0x7F5FFD}, + [I(41,126)] = {23,0x7F7FFD}, + [I(42,126)] = {21,0x1F3FFD}, + [I(43,126)] = {24,0xFF7FFD}, + [I(44,126)] = {21,0x1F5FFD}, + [I(45,126)] = {19,0x2DFFD}, + [I(46,126)] = {19,0x2FFFD}, + [I(47,126)] = {19,0x31FFD}, + [I(48,126)] = {18,0x1FFD}, + [I(49,126)] = {18,0x3FFD}, + [I(50,126)] = {18,0x5FFD}, + [I(51,126)] = {19,0x33FFD}, + [I(52,126)] = {19,0x35FFD}, + [I(53,126)] = {19,0x37FFD}, + [I(54,126)] = {19,0x39FFD}, + [I(55,126)] = {19,0x3BFFD}, + [I(56,126)] = {19,0x3DFFD}, + [I(57,126)] = {19,0x3FFFD}, + [I(58,126)] = {20,0xB9FFD}, + [I(59,126)] = {21,0x1F7FFD}, + [I(60,126)] = {28,0xFFF9FFD}, + [I(61,126)] = {19,0x41FFD}, + [I(62,126)] = {25,0x1FF7FFD}, + [I(63,126)] = {23,0x7F9FFD}, + [I(64,126)] = {26,0x3FF5FFD}, + [I(65,126)] = {19,0x43FFD}, + [I(66,126)] = {20,0xBBFFD}, + [I(67,126)] = {20,0xBDFFD}, + [I(68,126)] = {20,0xBFFFD}, + [I(69,126)] = {20,0xC1FFD}, + [I(70,126)] = {20,0xC3FFD}, + [I(71,126)] = {20,0xC5FFD}, + [I(72,126)] = {20,0xC7FFD}, + [I(73,126)] = {20,0xC9FFD}, + [I(74,126)] = {20,0xCBFFD}, + [I(75,126)] = {20,0xCDFFD}, + [I(76,126)] = {20,0xCFFFD}, + [I(77,126)] = {20,0xD1FFD}, + [I(78,126)] = {20,0xD3FFD}, + [I(79,126)] = {20,0xD5FFD}, + [I(80,126)] = {20,0xD7FFD}, + [I(81,126)] = {20,0xD9FFD}, + [I(82,126)] = {20,0xDBFFD}, + [I(83,126)] = {20,0xDDFFD}, + [I(84,126)] = {20,0xDFFFD}, + [I(85,126)] = {20,0xE1FFD}, + [I(86,126)] = {20,0xE3FFD}, + [I(87,126)] = {20,0xE5FFD}, + [I(88,126)] = {21,0x1F9FFD}, + [I(89,126)] = {20,0xE7FFD}, + [I(90,126)] = {21,0x1FBFFD}, + [I(91,126)] = {26,0x3FF7FFD}, + [I(92,126)] = {X32,0xFFFE1FFD}, + [I(93,126)] = {26,0x3FF9FFD}, + [I(94,126)] = {27,0x7FF9FFD}, + [I(95,126)] = {19,0x45FFD}, + [I(96,126)] = {28,0xFFFBFFD}, + [I(97,126)] = {18,0x7FFD}, + [I(98,126)] = {19,0x47FFD}, + [I(99,126)] = {18,0x9FFD}, + [I(100,126)] = {19,0x49FFD}, + [I(101,126)] = {18,0xBFFD}, + [I(102,126)] = {19,0x4BFFD}, + [I(103,126)] = {19,0x4DFFD}, + [I(104,126)] = {19,0x4FFFD}, + [I(105,126)] = {18,0xDFFD}, + [I(106,126)] = {20,0xE9FFD}, + [I(107,126)] = {20,0xEBFFD}, + [I(108,126)] = {19,0x51FFD}, + [I(109,126)] = {19,0x53FFD}, + [I(110,126)] = {19,0x55FFD}, + [I(111,126)] = {18,0xFFFD}, + [I(112,126)] = {19,0x57FFD}, + [I(113,126)] = {20,0xEDFFD}, + [I(114,126)] = {19,0x59FFD}, + [I(115,126)] = {18,0x11FFD}, + [I(116,126)] = {18,0x13FFD}, + [I(117,126)] = {19,0x5BFFD}, + [I(118,126)] = {20,0xEFFFD}, + [I(119,126)] = {20,0xF1FFD}, + [I(120,126)] = {20,0xF3FFD}, + [I(121,126)] = {20,0xF5FFD}, + [I(122,126)] = {20,0xF7FFD}, + [I(123,126)] = {28,0xFFFDFFD}, + [I(124,126)] = {24,0xFF9FFD}, + [I(125,126)] = {27,0x7FFBFFD}, + [I(126,126)] = {26,0x3FFBFFD}, + [I(127,126)] = {64,0}, + [I(128,126)] = {64,0}, + [I(129,126)] = {64,0}, + [I(130,126)] = {64,0}, + [I(131,126)] = {64,0}, + [I(132,126)] = {64,0}, + [I(133,126)] = {64,0}, + [I(134,126)] = {64,0}, + [I(135,126)] = {64,0}, + [I(136,126)] = {64,0}, + [I(137,126)] = {64,0}, + [I(138,126)] = {64,0}, + [I(139,126)] = {64,0}, + [I(140,126)] = {64,0}, + [I(141,126)] = {64,0}, + [I(142,126)] = {64,0}, + [I(143,126)] = {64,0}, + [I(144,126)] = {64,0}, + [I(145,126)] = {64,0}, + [I(146,126)] = {64,0}, + [I(147,126)] = {64,0}, + [I(148,126)] = {64,0}, + [I(149,126)] = {64,0}, + [I(150,126)] = {64,0}, + [I(151,126)] = {64,0}, + [I(152,126)] = {64,0}, + [I(153,126)] = {64,0}, + [I(154,126)] = {64,0}, + [I(155,126)] = {64,0}, + [I(156,126)] = {64,0}, + [I(157,126)] = {64,0}, + [I(158,126)] = {64,0}, + [I(159,126)] = {64,0}, + [I(160,126)] = {64,0}, + [I(161,126)] = {64,0}, + [I(162,126)] = {64,0}, + [I(163,126)] = {64,0}, + [I(164,126)] = {64,0}, + [I(165,126)] = {64,0}, + [I(166,126)] = {64,0}, + [I(167,126)] = {64,0}, + [I(168,126)] = {64,0}, + [I(169,126)] = {64,0}, + [I(170,126)] = {64,0}, + [I(171,126)] = {64,0}, + [I(172,126)] = {64,0}, + [I(173,126)] = {64,0}, + [I(174,126)] = {64,0}, + [I(175,126)] = {64,0}, + [I(176,126)] = {64,0}, + [I(177,126)] = {64,0}, + [I(178,126)] = {64,0}, + [I(179,126)] = {64,0}, + [I(180,126)] = {64,0}, + [I(181,126)] = {64,0}, + [I(182,126)] = {64,0}, + [I(183,126)] = {64,0}, + [I(184,126)] = {64,0}, + [I(185,126)] = {64,0}, + [I(186,126)] = {64,0}, + [I(187,126)] = {64,0}, + [I(188,126)] = {64,0}, + [I(189,126)] = {64,0}, + [I(190,126)] = {64,0}, + [I(191,126)] = {64,0}, + [I(192,126)] = {64,0}, + [I(193,126)] = {64,0}, + [I(194,126)] = {64,0}, + [I(195,126)] = {X32,0xFFFE3FFD}, + [I(196,126)] = {64,0}, + [I(197,126)] = {64,0}, + [I(198,126)] = {64,0}, + [I(199,126)] = {64,0}, + [I(200,126)] = {64,0}, + [I(201,126)] = {64,0}, + [I(202,126)] = {64,0}, + [I(203,126)] = {64,0}, + [I(204,126)] = {64,0}, + [I(205,126)] = {64,0}, + [I(206,126)] = {64,0}, + [I(207,126)] = {64,0}, + [I(208,126)] = {X32,0xFFFE5FFD}, + [I(209,126)] = {64,0}, + [I(210,126)] = {64,0}, + [I(211,126)] = {64,0}, + [I(212,126)] = {64,0}, + [I(213,126)] = {64,0}, + [I(214,126)] = {64,0}, + [I(215,126)] = {64,0}, + [I(216,126)] = {64,0}, + [I(217,126)] = {64,0}, + [I(218,126)] = {64,0}, + [I(219,126)] = {64,0}, + [I(220,126)] = {64,0}, + [I(221,126)] = {64,0}, + [I(222,126)] = {64,0}, + [I(223,126)] = {64,0}, + [I(224,126)] = {64,0}, + [I(225,126)] = {64,0}, + [I(226,126)] = {64,0}, + [I(227,126)] = {64,0}, + [I(228,126)] = {64,0}, + [I(229,126)] = {64,0}, + [I(230,126)] = {64,0}, + [I(231,126)] = {64,0}, + [I(232,126)] = {64,0}, + [I(233,126)] = {64,0}, + [I(234,126)] = {64,0}, + [I(235,126)] = {64,0}, + [I(236,126)] = {64,0}, + [I(237,126)] = {64,0}, + [I(238,126)] = {64,0}, + [I(239,126)] = {64,0}, + [I(240,126)] = {64,0}, + [I(241,126)] = {64,0}, + [I(242,126)] = {64,0}, + [I(243,126)] = {64,0}, + [I(244,126)] = {64,0}, + [I(245,126)] = {64,0}, + [I(246,126)] = {64,0}, + [I(247,126)] = {64,0}, + [I(248,126)] = {64,0}, + [I(249,126)] = {64,0}, + [I(250,126)] = {64,0}, + [I(251,126)] = {64,0}, + [I(252,126)] = {64,0}, + [I(253,126)] = {64,0}, + [I(254,126)] = {64,0}, + [I(255,126)] = {64,0}, + [I(0,127)] = {64,0}, + [I(1,127)] = {64,0}, + [I(2,127)] = {64,0}, + [I(3,127)] = {64,0}, + [I(4,127)] = {64,0}, + [I(5,127)] = {64,0}, + [I(6,127)] = {64,0}, + [I(7,127)] = {64,0}, + [I(8,127)] = {64,0}, + [I(9,127)] = {64,0}, + [I(10,127)] = {64,0}, + [I(11,127)] = {64,0}, + [I(12,127)] = {64,0}, + [I(13,127)] = {64,0}, + [I(14,127)] = {64,0}, + [I(15,127)] = {64,0}, + [I(16,127)] = {64,0}, + [I(17,127)] = {64,0}, + [I(18,127)] = {64,0}, + [I(19,127)] = {64,0}, + [I(20,127)] = {64,0}, + [I(21,127)] = {64,0}, + [I(22,127)] = {64,0}, + [I(23,127)] = {64,0}, + [I(24,127)] = {64,0}, + [I(25,127)] = {64,0}, + [I(26,127)] = {64,0}, + [I(27,127)] = {64,0}, + [I(28,127)] = {64,0}, + [I(29,127)] = {64,0}, + [I(30,127)] = {64,0}, + [I(31,127)] = {64,0}, + [I(32,127)] = {64,0}, + [I(33,127)] = {64,0}, + [I(34,127)] = {64,0}, + [I(35,127)] = {64,0}, + [I(36,127)] = {64,0}, + [I(37,127)] = {64,0}, + [I(38,127)] = {64,0}, + [I(39,127)] = {64,0}, + [I(40,127)] = {64,0}, + [I(41,127)] = {64,0}, + [I(42,127)] = {64,0}, + [I(43,127)] = {64,0}, + [I(44,127)] = {64,0}, + [I(45,127)] = {64,0}, + [I(46,127)] = {64,0}, + [I(47,127)] = {64,0}, + [I(48,127)] = {64,0}, + [I(49,127)] = {64,0}, + [I(50,127)] = {64,0}, + [I(51,127)] = {64,0}, + [I(52,127)] = {64,0}, + [I(53,127)] = {64,0}, + [I(54,127)] = {64,0}, + [I(55,127)] = {64,0}, + [I(56,127)] = {64,0}, + [I(57,127)] = {64,0}, + [I(58,127)] = {64,0}, + [I(59,127)] = {64,0}, + [I(60,127)] = {64,0}, + [I(61,127)] = {64,0}, + [I(62,127)] = {64,0}, + [I(63,127)] = {64,0}, + [I(64,127)] = {64,0}, + [I(65,127)] = {64,0}, + [I(66,127)] = {64,0}, + [I(67,127)] = {64,0}, + [I(68,127)] = {64,0}, + [I(69,127)] = {64,0}, + [I(70,127)] = {64,0}, + [I(71,127)] = {64,0}, + [I(72,127)] = {64,0}, + [I(73,127)] = {64,0}, + [I(74,127)] = {64,0}, + [I(75,127)] = {64,0}, + [I(76,127)] = {64,0}, + [I(77,127)] = {64,0}, + [I(78,127)] = {64,0}, + [I(79,127)] = {64,0}, + [I(80,127)] = {64,0}, + [I(81,127)] = {64,0}, + [I(82,127)] = {64,0}, + [I(83,127)] = {64,0}, + [I(84,127)] = {64,0}, + [I(85,127)] = {64,0}, + [I(86,127)] = {64,0}, + [I(87,127)] = {64,0}, + [I(88,127)] = {64,0}, + [I(89,127)] = {64,0}, + [I(90,127)] = {64,0}, + [I(91,127)] = {64,0}, + [I(92,127)] = {64,0}, + [I(93,127)] = {64,0}, + [I(94,127)] = {64,0}, + [I(95,127)] = {64,0}, + [I(96,127)] = {64,0}, + [I(97,127)] = {64,0}, + [I(98,127)] = {64,0}, + [I(99,127)] = {64,0}, + [I(100,127)] = {64,0}, + [I(101,127)] = {64,0}, + [I(102,127)] = {64,0}, + [I(103,127)] = {64,0}, + [I(104,127)] = {64,0}, + [I(105,127)] = {64,0}, + [I(106,127)] = {64,0}, + [I(107,127)] = {64,0}, + [I(108,127)] = {64,0}, + [I(109,127)] = {64,0}, + [I(110,127)] = {64,0}, + [I(111,127)] = {64,0}, + [I(112,127)] = {64,0}, + [I(113,127)] = {64,0}, + [I(114,127)] = {64,0}, + [I(115,127)] = {64,0}, + [I(116,127)] = {64,0}, + [I(117,127)] = {64,0}, + [I(118,127)] = {64,0}, + [I(119,127)] = {64,0}, + [I(120,127)] = {64,0}, + [I(121,127)] = {64,0}, + [I(122,127)] = {64,0}, + [I(123,127)] = {64,0}, + [I(124,127)] = {64,0}, + [I(125,127)] = {64,0}, + [I(126,127)] = {64,0}, + [I(127,127)] = {64,0}, + [I(128,127)] = {64,0}, + [I(129,127)] = {64,0}, + [I(130,127)] = {64,0}, + [I(131,127)] = {64,0}, + [I(132,127)] = {64,0}, + [I(133,127)] = {64,0}, + [I(134,127)] = {64,0}, + [I(135,127)] = {64,0}, + [I(136,127)] = {64,0}, + [I(137,127)] = {64,0}, + [I(138,127)] = {64,0}, + [I(139,127)] = {64,0}, + [I(140,127)] = {64,0}, + [I(141,127)] = {64,0}, + [I(142,127)] = {64,0}, + [I(143,127)] = {64,0}, + [I(144,127)] = {64,0}, + [I(145,127)] = {64,0}, + [I(146,127)] = {64,0}, + [I(147,127)] = {64,0}, + [I(148,127)] = {64,0}, + [I(149,127)] = {64,0}, + [I(150,127)] = {64,0}, + [I(151,127)] = {64,0}, + [I(152,127)] = {64,0}, + [I(153,127)] = {64,0}, + [I(154,127)] = {64,0}, + [I(155,127)] = {64,0}, + [I(156,127)] = {64,0}, + [I(157,127)] = {64,0}, + [I(158,127)] = {64,0}, + [I(159,127)] = {64,0}, + [I(160,127)] = {64,0}, + [I(161,127)] = {64,0}, + [I(162,127)] = {64,0}, + [I(163,127)] = {64,0}, + [I(164,127)] = {64,0}, + [I(165,127)] = {64,0}, + [I(166,127)] = {64,0}, + [I(167,127)] = {64,0}, + [I(168,127)] = {64,0}, + [I(169,127)] = {64,0}, + [I(170,127)] = {64,0}, + [I(171,127)] = {64,0}, + [I(172,127)] = {64,0}, + [I(173,127)] = {64,0}, + [I(174,127)] = {64,0}, + [I(175,127)] = {64,0}, + [I(176,127)] = {64,0}, + [I(177,127)] = {64,0}, + [I(178,127)] = {64,0}, + [I(179,127)] = {64,0}, + [I(180,127)] = {64,0}, + [I(181,127)] = {64,0}, + [I(182,127)] = {64,0}, + [I(183,127)] = {64,0}, + [I(184,127)] = {64,0}, + [I(185,127)] = {64,0}, + [I(186,127)] = {64,0}, + [I(187,127)] = {64,0}, + [I(188,127)] = {64,0}, + [I(189,127)] = {64,0}, + [I(190,127)] = {64,0}, + [I(191,127)] = {64,0}, + [I(192,127)] = {64,0}, + [I(193,127)] = {64,0}, + [I(194,127)] = {64,0}, + [I(195,127)] = {64,0}, + [I(196,127)] = {64,0}, + [I(197,127)] = {64,0}, + [I(198,127)] = {64,0}, + [I(199,127)] = {64,0}, + [I(200,127)] = {64,0}, + [I(201,127)] = {64,0}, + [I(202,127)] = {64,0}, + [I(203,127)] = {64,0}, + [I(204,127)] = {64,0}, + [I(205,127)] = {64,0}, + [I(206,127)] = {64,0}, + [I(207,127)] = {64,0}, + [I(208,127)] = {64,0}, + [I(209,127)] = {64,0}, + [I(210,127)] = {64,0}, + [I(211,127)] = {64,0}, + [I(212,127)] = {64,0}, + [I(213,127)] = {64,0}, + [I(214,127)] = {64,0}, + [I(215,127)] = {64,0}, + [I(216,127)] = {64,0}, + [I(217,127)] = {64,0}, + [I(218,127)] = {64,0}, + [I(219,127)] = {64,0}, + [I(220,127)] = {64,0}, + [I(221,127)] = {64,0}, + [I(222,127)] = {64,0}, + [I(223,127)] = {64,0}, + [I(224,127)] = {64,0}, + [I(225,127)] = {64,0}, + [I(226,127)] = {64,0}, + [I(227,127)] = {64,0}, + [I(228,127)] = {64,0}, + [I(229,127)] = {64,0}, + [I(230,127)] = {64,0}, + [I(231,127)] = {64,0}, + [I(232,127)] = {64,0}, + [I(233,127)] = {64,0}, + [I(234,127)] = {64,0}, + [I(235,127)] = {64,0}, + [I(236,127)] = {64,0}, + [I(237,127)] = {64,0}, + [I(238,127)] = {64,0}, + [I(239,127)] = {64,0}, + [I(240,127)] = {64,0}, + [I(241,127)] = {64,0}, + [I(242,127)] = {64,0}, + [I(243,127)] = {64,0}, + [I(244,127)] = {64,0}, + [I(245,127)] = {64,0}, + [I(246,127)] = {64,0}, + [I(247,127)] = {64,0}, + [I(248,127)] = {64,0}, + [I(249,127)] = {64,0}, + [I(250,127)] = {64,0}, + [I(251,127)] = {64,0}, + [I(252,127)] = {64,0}, + [I(253,127)] = {64,0}, + [I(254,127)] = {64,0}, + [I(255,127)] = {64,0}, + [I(0,128)] = {64,0}, + [I(1,128)] = {64,0}, + [I(2,128)] = {64,0}, + [I(3,128)] = {64,0}, + [I(4,128)] = {64,0}, + [I(5,128)] = {64,0}, + [I(6,128)] = {64,0}, + [I(7,128)] = {64,0}, + [I(8,128)] = {64,0}, + [I(9,128)] = {64,0}, + [I(10,128)] = {64,0}, + [I(11,128)] = {64,0}, + [I(12,128)] = {64,0}, + [I(13,128)] = {64,0}, + [I(14,128)] = {64,0}, + [I(15,128)] = {64,0}, + [I(16,128)] = {64,0}, + [I(17,128)] = {64,0}, + [I(18,128)] = {64,0}, + [I(19,128)] = {64,0}, + [I(20,128)] = {64,0}, + [I(21,128)] = {64,0}, + [I(22,128)] = {64,0}, + [I(23,128)] = {64,0}, + [I(24,128)] = {64,0}, + [I(25,128)] = {64,0}, + [I(26,128)] = {64,0}, + [I(27,128)] = {64,0}, + [I(28,128)] = {64,0}, + [I(29,128)] = {64,0}, + [I(30,128)] = {64,0}, + [I(31,128)] = {64,0}, + [I(32,128)] = {26,0x14FFFE6}, + [I(33,128)] = {30,0x3F8FFFE6}, + [I(34,128)] = {30,0x3F9FFFE6}, + [I(35,128)] = {X32,0xFFAFFFE6}, + [I(36,128)] = {64,0}, + [I(37,128)] = {26,0x15FFFE6}, + [I(38,128)] = {28,0xF8FFFE6}, + [I(39,128)] = {31,0x7FAFFFE6}, + [I(40,128)] = {30,0x3FAFFFE6}, + [I(41,128)] = {30,0x3FBFFFE6}, + [I(42,128)] = {28,0xF9FFFE6}, + [I(43,128)] = {31,0x7FBFFFE6}, + [I(44,128)] = {28,0xFAFFFE6}, + [I(45,128)] = {26,0x16FFFE6}, + [I(46,128)] = {26,0x17FFFE6}, + [I(47,128)] = {26,0x18FFFE6}, + [I(48,128)] = {25,0xFFFE6}, + [I(49,128)] = {25,0x1FFFE6}, + [I(50,128)] = {25,0x2FFFE6}, + [I(51,128)] = {26,0x19FFFE6}, + [I(52,128)] = {26,0x1AFFFE6}, + [I(53,128)] = {26,0x1BFFFE6}, + [I(54,128)] = {26,0x1CFFFE6}, + [I(55,128)] = {26,0x1DFFFE6}, + [I(56,128)] = {26,0x1EFFFE6}, + [I(57,128)] = {26,0x1FFFFE6}, + [I(58,128)] = {27,0x5CFFFE6}, + [I(59,128)] = {28,0xFBFFFE6}, + [I(60,128)] = {64,0}, + [I(61,128)] = {26,0x20FFFE6}, + [I(62,128)] = {X32,0xFFBFFFE6}, + [I(63,128)] = {30,0x3FCFFFE6}, + [I(64,128)] = {64,0}, + [I(65,128)] = {26,0x21FFFE6}, + [I(66,128)] = {27,0x5DFFFE6}, + [I(67,128)] = {27,0x5EFFFE6}, + [I(68,128)] = {27,0x5FFFFE6}, + [I(69,128)] = {27,0x60FFFE6}, + [I(70,128)] = {27,0x61FFFE6}, + [I(71,128)] = {27,0x62FFFE6}, + [I(72,128)] = {27,0x63FFFE6}, + [I(73,128)] = {27,0x64FFFE6}, + [I(74,128)] = {27,0x65FFFE6}, + [I(75,128)] = {27,0x66FFFE6}, + [I(76,128)] = {27,0x67FFFE6}, + [I(77,128)] = {27,0x68FFFE6}, + [I(78,128)] = {27,0x69FFFE6}, + [I(79,128)] = {27,0x6AFFFE6}, + [I(80,128)] = {27,0x6BFFFE6}, + [I(81,128)] = {27,0x6CFFFE6}, + [I(82,128)] = {27,0x6DFFFE6}, + [I(83,128)] = {27,0x6EFFFE6}, + [I(84,128)] = {27,0x6FFFFE6}, + [I(85,128)] = {27,0x70FFFE6}, + [I(86,128)] = {27,0x71FFFE6}, + [I(87,128)] = {27,0x72FFFE6}, + [I(88,128)] = {28,0xFCFFFE6}, + [I(89,128)] = {27,0x73FFFE6}, + [I(90,128)] = {28,0xFDFFFE6}, + [I(91,128)] = {64,0}, + [I(92,128)] = {64,0}, + [I(93,128)] = {64,0}, + [I(94,128)] = {64,0}, + [I(95,128)] = {26,0x22FFFE6}, + [I(96,128)] = {64,0}, + [I(97,128)] = {25,0x3FFFE6}, + [I(98,128)] = {26,0x23FFFE6}, + [I(99,128)] = {25,0x4FFFE6}, + [I(100,128)] = {26,0x24FFFE6}, + [I(101,128)] = {25,0x5FFFE6}, + [I(102,128)] = {26,0x25FFFE6}, + [I(103,128)] = {26,0x26FFFE6}, + [I(104,128)] = {26,0x27FFFE6}, + [I(105,128)] = {25,0x6FFFE6}, + [I(106,128)] = {27,0x74FFFE6}, + [I(107,128)] = {27,0x75FFFE6}, + [I(108,128)] = {26,0x28FFFE6}, + [I(109,128)] = {26,0x29FFFE6}, + [I(110,128)] = {26,0x2AFFFE6}, + [I(111,128)] = {25,0x7FFFE6}, + [I(112,128)] = {26,0x2BFFFE6}, + [I(113,128)] = {27,0x76FFFE6}, + [I(114,128)] = {26,0x2CFFFE6}, + [I(115,128)] = {25,0x8FFFE6}, + [I(116,128)] = {25,0x9FFFE6}, + [I(117,128)] = {26,0x2DFFFE6}, + [I(118,128)] = {27,0x77FFFE6}, + [I(119,128)] = {27,0x78FFFE6}, + [I(120,128)] = {27,0x79FFFE6}, + [I(121,128)] = {27,0x7AFFFE6}, + [I(122,128)] = {27,0x7BFFFE6}, + [I(123,128)] = {64,0}, + [I(124,128)] = {31,0x7FCFFFE6}, + [I(125,128)] = {64,0}, + [I(126,128)] = {64,0}, + [I(127,128)] = {64,0}, + [I(128,128)] = {64,0}, + [I(129,128)] = {64,0}, + [I(130,128)] = {64,0}, + [I(131,128)] = {64,0}, + [I(132,128)] = {64,0}, + [I(133,128)] = {64,0}, + [I(134,128)] = {64,0}, + [I(135,128)] = {64,0}, + [I(136,128)] = {64,0}, + [I(137,128)] = {64,0}, + [I(138,128)] = {64,0}, + [I(139,128)] = {64,0}, + [I(140,128)] = {64,0}, + [I(141,128)] = {64,0}, + [I(142,128)] = {64,0}, + [I(143,128)] = {64,0}, + [I(144,128)] = {64,0}, + [I(145,128)] = {64,0}, + [I(146,128)] = {64,0}, + [I(147,128)] = {64,0}, + [I(148,128)] = {64,0}, + [I(149,128)] = {64,0}, + [I(150,128)] = {64,0}, + [I(151,128)] = {64,0}, + [I(152,128)] = {64,0}, + [I(153,128)] = {64,0}, + [I(154,128)] = {64,0}, + [I(155,128)] = {64,0}, + [I(156,128)] = {64,0}, + [I(157,128)] = {64,0}, + [I(158,128)] = {64,0}, + [I(159,128)] = {64,0}, + [I(160,128)] = {64,0}, + [I(161,128)] = {64,0}, + [I(162,128)] = {64,0}, + [I(163,128)] = {64,0}, + [I(164,128)] = {64,0}, + [I(165,128)] = {64,0}, + [I(166,128)] = {64,0}, + [I(167,128)] = {64,0}, + [I(168,128)] = {64,0}, + [I(169,128)] = {64,0}, + [I(170,128)] = {64,0}, + [I(171,128)] = {64,0}, + [I(172,128)] = {64,0}, + [I(173,128)] = {64,0}, + [I(174,128)] = {64,0}, + [I(175,128)] = {64,0}, + [I(176,128)] = {64,0}, + [I(177,128)] = {64,0}, + [I(178,128)] = {64,0}, + [I(179,128)] = {64,0}, + [I(180,128)] = {64,0}, + [I(181,128)] = {64,0}, + [I(182,128)] = {64,0}, + [I(183,128)] = {64,0}, + [I(184,128)] = {64,0}, + [I(185,128)] = {64,0}, + [I(186,128)] = {64,0}, + [I(187,128)] = {64,0}, + [I(188,128)] = {64,0}, + [I(189,128)] = {64,0}, + [I(190,128)] = {64,0}, + [I(191,128)] = {64,0}, + [I(192,128)] = {64,0}, + [I(193,128)] = {64,0}, + [I(194,128)] = {64,0}, + [I(195,128)] = {64,0}, + [I(196,128)] = {64,0}, + [I(197,128)] = {64,0}, + [I(198,128)] = {64,0}, + [I(199,128)] = {64,0}, + [I(200,128)] = {64,0}, + [I(201,128)] = {64,0}, + [I(202,128)] = {64,0}, + [I(203,128)] = {64,0}, + [I(204,128)] = {64,0}, + [I(205,128)] = {64,0}, + [I(206,128)] = {64,0}, + [I(207,128)] = {64,0}, + [I(208,128)] = {64,0}, + [I(209,128)] = {64,0}, + [I(210,128)] = {64,0}, + [I(211,128)] = {64,0}, + [I(212,128)] = {64,0}, + [I(213,128)] = {64,0}, + [I(214,128)] = {64,0}, + [I(215,128)] = {64,0}, + [I(216,128)] = {64,0}, + [I(217,128)] = {64,0}, + [I(218,128)] = {64,0}, + [I(219,128)] = {64,0}, + [I(220,128)] = {64,0}, + [I(221,128)] = {64,0}, + [I(222,128)] = {64,0}, + [I(223,128)] = {64,0}, + [I(224,128)] = {64,0}, + [I(225,128)] = {64,0}, + [I(226,128)] = {64,0}, + [I(227,128)] = {64,0}, + [I(228,128)] = {64,0}, + [I(229,128)] = {64,0}, + [I(230,128)] = {64,0}, + [I(231,128)] = {64,0}, + [I(232,128)] = {64,0}, + [I(233,128)] = {64,0}, + [I(234,128)] = {64,0}, + [I(235,128)] = {64,0}, + [I(236,128)] = {64,0}, + [I(237,128)] = {64,0}, + [I(238,128)] = {64,0}, + [I(239,128)] = {64,0}, + [I(240,128)] = {64,0}, + [I(241,128)] = {64,0}, + [I(242,128)] = {64,0}, + [I(243,128)] = {64,0}, + [I(244,128)] = {64,0}, + [I(245,128)] = {64,0}, + [I(246,128)] = {64,0}, + [I(247,128)] = {64,0}, + [I(248,128)] = {64,0}, + [I(249,128)] = {64,0}, + [I(250,128)] = {64,0}, + [I(251,128)] = {64,0}, + [I(252,128)] = {64,0}, + [I(253,128)] = {64,0}, + [I(254,128)] = {64,0}, + [I(255,128)] = {64,0}, + [I(0,129)] = {64,0}, + [I(1,129)] = {64,0}, + [I(2,129)] = {64,0}, + [I(3,129)] = {64,0}, + [I(4,129)] = {64,0}, + [I(5,129)] = {64,0}, + [I(6,129)] = {64,0}, + [I(7,129)] = {64,0}, + [I(8,129)] = {64,0}, + [I(9,129)] = {64,0}, + [I(10,129)] = {64,0}, + [I(11,129)] = {64,0}, + [I(12,129)] = {64,0}, + [I(13,129)] = {64,0}, + [I(14,129)] = {64,0}, + [I(15,129)] = {64,0}, + [I(16,129)] = {64,0}, + [I(17,129)] = {64,0}, + [I(18,129)] = {64,0}, + [I(19,129)] = {64,0}, + [I(20,129)] = {64,0}, + [I(21,129)] = {64,0}, + [I(22,129)] = {64,0}, + [I(23,129)] = {64,0}, + [I(24,129)] = {64,0}, + [I(25,129)] = {64,0}, + [I(26,129)] = {64,0}, + [I(27,129)] = {64,0}, + [I(28,129)] = {64,0}, + [I(29,129)] = {64,0}, + [I(30,129)] = {64,0}, + [I(31,129)] = {64,0}, + [I(32,129)] = {28,0x53FFFD2}, + [I(33,129)] = {X32,0xFE3FFFD2}, + [I(34,129)] = {X32,0xFE7FFFD2}, + [I(35,129)] = {64,0}, + [I(36,129)] = {64,0}, + [I(37,129)] = {28,0x57FFFD2}, + [I(38,129)] = {30,0x3E3FFFD2}, + [I(39,129)] = {64,0}, + [I(40,129)] = {X32,0xFEBFFFD2}, + [I(41,129)] = {X32,0xFEFFFFD2}, + [I(42,129)] = {30,0x3E7FFFD2}, + [I(43,129)] = {64,0}, + [I(44,129)] = {30,0x3EBFFFD2}, + [I(45,129)] = {28,0x5BFFFD2}, + [I(46,129)] = {28,0x5FFFFD2}, + [I(47,129)] = {28,0x63FFFD2}, + [I(48,129)] = {27,0x3FFFD2}, + [I(49,129)] = {27,0x7FFFD2}, + [I(50,129)] = {27,0xBFFFD2}, + [I(51,129)] = {28,0x67FFFD2}, + [I(52,129)] = {28,0x6BFFFD2}, + [I(53,129)] = {28,0x6FFFFD2}, + [I(54,129)] = {28,0x73FFFD2}, + [I(55,129)] = {28,0x77FFFD2}, + [I(56,129)] = {28,0x7BFFFD2}, + [I(57,129)] = {28,0x7FFFFD2}, + [I(58,129)] = {29,0x173FFFD2}, + [I(59,129)] = {30,0x3EFFFFD2}, + [I(60,129)] = {64,0}, + [I(61,129)] = {28,0x83FFFD2}, + [I(62,129)] = {64,0}, + [I(63,129)] = {X32,0xFF3FFFD2}, + [I(64,129)] = {64,0}, + [I(65,129)] = {28,0x87FFFD2}, + [I(66,129)] = {29,0x177FFFD2}, + [I(67,129)] = {29,0x17BFFFD2}, + [I(68,129)] = {29,0x17FFFFD2}, + [I(69,129)] = {29,0x183FFFD2}, + [I(70,129)] = {29,0x187FFFD2}, + [I(71,129)] = {29,0x18BFFFD2}, + [I(72,129)] = {29,0x18FFFFD2}, + [I(73,129)] = {29,0x193FFFD2}, + [I(74,129)] = {29,0x197FFFD2}, + [I(75,129)] = {29,0x19BFFFD2}, + [I(76,129)] = {29,0x19FFFFD2}, + [I(77,129)] = {29,0x1A3FFFD2}, + [I(78,129)] = {29,0x1A7FFFD2}, + [I(79,129)] = {29,0x1ABFFFD2}, + [I(80,129)] = {29,0x1AFFFFD2}, + [I(81,129)] = {29,0x1B3FFFD2}, + [I(82,129)] = {29,0x1B7FFFD2}, + [I(83,129)] = {29,0x1BBFFFD2}, + [I(84,129)] = {29,0x1BFFFFD2}, + [I(85,129)] = {29,0x1C3FFFD2}, + [I(86,129)] = {29,0x1C7FFFD2}, + [I(87,129)] = {29,0x1CBFFFD2}, + [I(88,129)] = {30,0x3F3FFFD2}, + [I(89,129)] = {29,0x1CFFFFD2}, + [I(90,129)] = {30,0x3F7FFFD2}, + [I(91,129)] = {64,0}, + [I(92,129)] = {64,0}, + [I(93,129)] = {64,0}, + [I(94,129)] = {64,0}, + [I(95,129)] = {28,0x8BFFFD2}, + [I(96,129)] = {64,0}, + [I(97,129)] = {27,0xFFFFD2}, + [I(98,129)] = {28,0x8FFFFD2}, + [I(99,129)] = {27,0x13FFFD2}, + [I(100,129)] = {28,0x93FFFD2}, + [I(101,129)] = {27,0x17FFFD2}, + [I(102,129)] = {28,0x97FFFD2}, + [I(103,129)] = {28,0x9BFFFD2}, + [I(104,129)] = {28,0x9FFFFD2}, + [I(105,129)] = {27,0x1BFFFD2}, + [I(106,129)] = {29,0x1D3FFFD2}, + [I(107,129)] = {29,0x1D7FFFD2}, + [I(108,129)] = {28,0xA3FFFD2}, + [I(109,129)] = {28,0xA7FFFD2}, + [I(110,129)] = {28,0xABFFFD2}, + [I(111,129)] = {27,0x1FFFFD2}, + [I(112,129)] = {28,0xAFFFFD2}, + [I(113,129)] = {29,0x1DBFFFD2}, + [I(114,129)] = {28,0xB3FFFD2}, + [I(115,129)] = {27,0x23FFFD2}, + [I(116,129)] = {27,0x27FFFD2}, + [I(117,129)] = {28,0xB7FFFD2}, + [I(118,129)] = {29,0x1DFFFFD2}, + [I(119,129)] = {29,0x1E3FFFD2}, + [I(120,129)] = {29,0x1E7FFFD2}, + [I(121,129)] = {29,0x1EBFFFD2}, + [I(122,129)] = {29,0x1EFFFFD2}, + [I(123,129)] = {64,0}, + [I(124,129)] = {64,0}, + [I(125,129)] = {64,0}, + [I(126,129)] = {64,0}, + [I(127,129)] = {64,0}, + [I(128,129)] = {64,0}, + [I(129,129)] = {64,0}, + [I(130,129)] = {64,0}, + [I(131,129)] = {64,0}, + [I(132,129)] = {64,0}, + [I(133,129)] = {64,0}, + [I(134,129)] = {64,0}, + [I(135,129)] = {64,0}, + [I(136,129)] = {64,0}, + [I(137,129)] = {64,0}, + [I(138,129)] = {64,0}, + [I(139,129)] = {64,0}, + [I(140,129)] = {64,0}, + [I(141,129)] = {64,0}, + [I(142,129)] = {64,0}, + [I(143,129)] = {64,0}, + [I(144,129)] = {64,0}, + [I(145,129)] = {64,0}, + [I(146,129)] = {64,0}, + [I(147,129)] = {64,0}, + [I(148,129)] = {64,0}, + [I(149,129)] = {64,0}, + [I(150,129)] = {64,0}, + [I(151,129)] = {64,0}, + [I(152,129)] = {64,0}, + [I(153,129)] = {64,0}, + [I(154,129)] = {64,0}, + [I(155,129)] = {64,0}, + [I(156,129)] = {64,0}, + [I(157,129)] = {64,0}, + [I(158,129)] = {64,0}, + [I(159,129)] = {64,0}, + [I(160,129)] = {64,0}, + [I(161,129)] = {64,0}, + [I(162,129)] = {64,0}, + [I(163,129)] = {64,0}, + [I(164,129)] = {64,0}, + [I(165,129)] = {64,0}, + [I(166,129)] = {64,0}, + [I(167,129)] = {64,0}, + [I(168,129)] = {64,0}, + [I(169,129)] = {64,0}, + [I(170,129)] = {64,0}, + [I(171,129)] = {64,0}, + [I(172,129)] = {64,0}, + [I(173,129)] = {64,0}, + [I(174,129)] = {64,0}, + [I(175,129)] = {64,0}, + [I(176,129)] = {64,0}, + [I(177,129)] = {64,0}, + [I(178,129)] = {64,0}, + [I(179,129)] = {64,0}, + [I(180,129)] = {64,0}, + [I(181,129)] = {64,0}, + [I(182,129)] = {64,0}, + [I(183,129)] = {64,0}, + [I(184,129)] = {64,0}, + [I(185,129)] = {64,0}, + [I(186,129)] = {64,0}, + [I(187,129)] = {64,0}, + [I(188,129)] = {64,0}, + [I(189,129)] = {64,0}, + [I(190,129)] = {64,0}, + [I(191,129)] = {64,0}, + [I(192,129)] = {64,0}, + [I(193,129)] = {64,0}, + [I(194,129)] = {64,0}, + [I(195,129)] = {64,0}, + [I(196,129)] = {64,0}, + [I(197,129)] = {64,0}, + [I(198,129)] = {64,0}, + [I(199,129)] = {64,0}, + [I(200,129)] = {64,0}, + [I(201,129)] = {64,0}, + [I(202,129)] = {64,0}, + [I(203,129)] = {64,0}, + [I(204,129)] = {64,0}, + [I(205,129)] = {64,0}, + [I(206,129)] = {64,0}, + [I(207,129)] = {64,0}, + [I(208,129)] = {64,0}, + [I(209,129)] = {64,0}, + [I(210,129)] = {64,0}, + [I(211,129)] = {64,0}, + [I(212,129)] = {64,0}, + [I(213,129)] = {64,0}, + [I(214,129)] = {64,0}, + [I(215,129)] = {64,0}, + [I(216,129)] = {64,0}, + [I(217,129)] = {64,0}, + [I(218,129)] = {64,0}, + [I(219,129)] = {64,0}, + [I(220,129)] = {64,0}, + [I(221,129)] = {64,0}, + [I(222,129)] = {64,0}, + [I(223,129)] = {64,0}, + [I(224,129)] = {64,0}, + [I(225,129)] = {64,0}, + [I(226,129)] = {64,0}, + [I(227,129)] = {64,0}, + [I(228,129)] = {64,0}, + [I(229,129)] = {64,0}, + [I(230,129)] = {64,0}, + [I(231,129)] = {64,0}, + [I(232,129)] = {64,0}, + [I(233,129)] = {64,0}, + [I(234,129)] = {64,0}, + [I(235,129)] = {64,0}, + [I(236,129)] = {64,0}, + [I(237,129)] = {64,0}, + [I(238,129)] = {64,0}, + [I(239,129)] = {64,0}, + [I(240,129)] = {64,0}, + [I(241,129)] = {64,0}, + [I(242,129)] = {64,0}, + [I(243,129)] = {64,0}, + [I(244,129)] = {64,0}, + [I(245,129)] = {64,0}, + [I(246,129)] = {64,0}, + [I(247,129)] = {64,0}, + [I(248,129)] = {64,0}, + [I(249,129)] = {64,0}, + [I(250,129)] = {64,0}, + [I(251,129)] = {64,0}, + [I(252,129)] = {64,0}, + [I(253,129)] = {64,0}, + [I(254,129)] = {64,0}, + [I(255,129)] = {64,0}, + [I(0,130)] = {64,0}, + [I(1,130)] = {64,0}, + [I(2,130)] = {64,0}, + [I(3,130)] = {64,0}, + [I(4,130)] = {64,0}, + [I(5,130)] = {64,0}, + [I(6,130)] = {64,0}, + [I(7,130)] = {64,0}, + [I(8,130)] = {64,0}, + [I(9,130)] = {64,0}, + [I(10,130)] = {64,0}, + [I(11,130)] = {64,0}, + [I(12,130)] = {64,0}, + [I(13,130)] = {64,0}, + [I(14,130)] = {64,0}, + [I(15,130)] = {64,0}, + [I(16,130)] = {64,0}, + [I(17,130)] = {64,0}, + [I(18,130)] = {64,0}, + [I(19,130)] = {64,0}, + [I(20,130)] = {64,0}, + [I(21,130)] = {64,0}, + [I(22,130)] = {64,0}, + [I(23,130)] = {64,0}, + [I(24,130)] = {64,0}, + [I(25,130)] = {64,0}, + [I(26,130)] = {64,0}, + [I(27,130)] = {64,0}, + [I(28,130)] = {64,0}, + [I(29,130)] = {64,0}, + [I(30,130)] = {64,0}, + [I(31,130)] = {64,0}, + [I(32,130)] = {26,0x14FFFE7}, + [I(33,130)] = {30,0x3F8FFFE7}, + [I(34,130)] = {30,0x3F9FFFE7}, + [I(35,130)] = {X32,0xFFAFFFE7}, + [I(36,130)] = {64,0}, + [I(37,130)] = {26,0x15FFFE7}, + [I(38,130)] = {28,0xF8FFFE7}, + [I(39,130)] = {31,0x7FAFFFE7}, + [I(40,130)] = {30,0x3FAFFFE7}, + [I(41,130)] = {30,0x3FBFFFE7}, + [I(42,130)] = {28,0xF9FFFE7}, + [I(43,130)] = {31,0x7FBFFFE7}, + [I(44,130)] = {28,0xFAFFFE7}, + [I(45,130)] = {26,0x16FFFE7}, + [I(46,130)] = {26,0x17FFFE7}, + [I(47,130)] = {26,0x18FFFE7}, + [I(48,130)] = {25,0xFFFE7}, + [I(49,130)] = {25,0x1FFFE7}, + [I(50,130)] = {25,0x2FFFE7}, + [I(51,130)] = {26,0x19FFFE7}, + [I(52,130)] = {26,0x1AFFFE7}, + [I(53,130)] = {26,0x1BFFFE7}, + [I(54,130)] = {26,0x1CFFFE7}, + [I(55,130)] = {26,0x1DFFFE7}, + [I(56,130)] = {26,0x1EFFFE7}, + [I(57,130)] = {26,0x1FFFFE7}, + [I(58,130)] = {27,0x5CFFFE7}, + [I(59,130)] = {28,0xFBFFFE7}, + [I(60,130)] = {64,0}, + [I(61,130)] = {26,0x20FFFE7}, + [I(62,130)] = {X32,0xFFBFFFE7}, + [I(63,130)] = {30,0x3FCFFFE7}, + [I(64,130)] = {64,0}, + [I(65,130)] = {26,0x21FFFE7}, + [I(66,130)] = {27,0x5DFFFE7}, + [I(67,130)] = {27,0x5EFFFE7}, + [I(68,130)] = {27,0x5FFFFE7}, + [I(69,130)] = {27,0x60FFFE7}, + [I(70,130)] = {27,0x61FFFE7}, + [I(71,130)] = {27,0x62FFFE7}, + [I(72,130)] = {27,0x63FFFE7}, + [I(73,130)] = {27,0x64FFFE7}, + [I(74,130)] = {27,0x65FFFE7}, + [I(75,130)] = {27,0x66FFFE7}, + [I(76,130)] = {27,0x67FFFE7}, + [I(77,130)] = {27,0x68FFFE7}, + [I(78,130)] = {27,0x69FFFE7}, + [I(79,130)] = {27,0x6AFFFE7}, + [I(80,130)] = {27,0x6BFFFE7}, + [I(81,130)] = {27,0x6CFFFE7}, + [I(82,130)] = {27,0x6DFFFE7}, + [I(83,130)] = {27,0x6EFFFE7}, + [I(84,130)] = {27,0x6FFFFE7}, + [I(85,130)] = {27,0x70FFFE7}, + [I(86,130)] = {27,0x71FFFE7}, + [I(87,130)] = {27,0x72FFFE7}, + [I(88,130)] = {28,0xFCFFFE7}, + [I(89,130)] = {27,0x73FFFE7}, + [I(90,130)] = {28,0xFDFFFE7}, + [I(91,130)] = {64,0}, + [I(92,130)] = {64,0}, + [I(93,130)] = {64,0}, + [I(94,130)] = {64,0}, + [I(95,130)] = {26,0x22FFFE7}, + [I(96,130)] = {64,0}, + [I(97,130)] = {25,0x3FFFE7}, + [I(98,130)] = {26,0x23FFFE7}, + [I(99,130)] = {25,0x4FFFE7}, + [I(100,130)] = {26,0x24FFFE7}, + [I(101,130)] = {25,0x5FFFE7}, + [I(102,130)] = {26,0x25FFFE7}, + [I(103,130)] = {26,0x26FFFE7}, + [I(104,130)] = {26,0x27FFFE7}, + [I(105,130)] = {25,0x6FFFE7}, + [I(106,130)] = {27,0x74FFFE7}, + [I(107,130)] = {27,0x75FFFE7}, + [I(108,130)] = {26,0x28FFFE7}, + [I(109,130)] = {26,0x29FFFE7}, + [I(110,130)] = {26,0x2AFFFE7}, + [I(111,130)] = {25,0x7FFFE7}, + [I(112,130)] = {26,0x2BFFFE7}, + [I(113,130)] = {27,0x76FFFE7}, + [I(114,130)] = {26,0x2CFFFE7}, + [I(115,130)] = {25,0x8FFFE7}, + [I(116,130)] = {25,0x9FFFE7}, + [I(117,130)] = {26,0x2DFFFE7}, + [I(118,130)] = {27,0x77FFFE7}, + [I(119,130)] = {27,0x78FFFE7}, + [I(120,130)] = {27,0x79FFFE7}, + [I(121,130)] = {27,0x7AFFFE7}, + [I(122,130)] = {27,0x7BFFFE7}, + [I(123,130)] = {64,0}, + [I(124,130)] = {31,0x7FCFFFE7}, + [I(125,130)] = {64,0}, + [I(126,130)] = {64,0}, + [I(127,130)] = {64,0}, + [I(128,130)] = {64,0}, + [I(129,130)] = {64,0}, + [I(130,130)] = {64,0}, + [I(131,130)] = {64,0}, + [I(132,130)] = {64,0}, + [I(133,130)] = {64,0}, + [I(134,130)] = {64,0}, + [I(135,130)] = {64,0}, + [I(136,130)] = {64,0}, + [I(137,130)] = {64,0}, + [I(138,130)] = {64,0}, + [I(139,130)] = {64,0}, + [I(140,130)] = {64,0}, + [I(141,130)] = {64,0}, + [I(142,130)] = {64,0}, + [I(143,130)] = {64,0}, + [I(144,130)] = {64,0}, + [I(145,130)] = {64,0}, + [I(146,130)] = {64,0}, + [I(147,130)] = {64,0}, + [I(148,130)] = {64,0}, + [I(149,130)] = {64,0}, + [I(150,130)] = {64,0}, + [I(151,130)] = {64,0}, + [I(152,130)] = {64,0}, + [I(153,130)] = {64,0}, + [I(154,130)] = {64,0}, + [I(155,130)] = {64,0}, + [I(156,130)] = {64,0}, + [I(157,130)] = {64,0}, + [I(158,130)] = {64,0}, + [I(159,130)] = {64,0}, + [I(160,130)] = {64,0}, + [I(161,130)] = {64,0}, + [I(162,130)] = {64,0}, + [I(163,130)] = {64,0}, + [I(164,130)] = {64,0}, + [I(165,130)] = {64,0}, + [I(166,130)] = {64,0}, + [I(167,130)] = {64,0}, + [I(168,130)] = {64,0}, + [I(169,130)] = {64,0}, + [I(170,130)] = {64,0}, + [I(171,130)] = {64,0}, + [I(172,130)] = {64,0}, + [I(173,130)] = {64,0}, + [I(174,130)] = {64,0}, + [I(175,130)] = {64,0}, + [I(176,130)] = {64,0}, + [I(177,130)] = {64,0}, + [I(178,130)] = {64,0}, + [I(179,130)] = {64,0}, + [I(180,130)] = {64,0}, + [I(181,130)] = {64,0}, + [I(182,130)] = {64,0}, + [I(183,130)] = {64,0}, + [I(184,130)] = {64,0}, + [I(185,130)] = {64,0}, + [I(186,130)] = {64,0}, + [I(187,130)] = {64,0}, + [I(188,130)] = {64,0}, + [I(189,130)] = {64,0}, + [I(190,130)] = {64,0}, + [I(191,130)] = {64,0}, + [I(192,130)] = {64,0}, + [I(193,130)] = {64,0}, + [I(194,130)] = {64,0}, + [I(195,130)] = {64,0}, + [I(196,130)] = {64,0}, + [I(197,130)] = {64,0}, + [I(198,130)] = {64,0}, + [I(199,130)] = {64,0}, + [I(200,130)] = {64,0}, + [I(201,130)] = {64,0}, + [I(202,130)] = {64,0}, + [I(203,130)] = {64,0}, + [I(204,130)] = {64,0}, + [I(205,130)] = {64,0}, + [I(206,130)] = {64,0}, + [I(207,130)] = {64,0}, + [I(208,130)] = {64,0}, + [I(209,130)] = {64,0}, + [I(210,130)] = {64,0}, + [I(211,130)] = {64,0}, + [I(212,130)] = {64,0}, + [I(213,130)] = {64,0}, + [I(214,130)] = {64,0}, + [I(215,130)] = {64,0}, + [I(216,130)] = {64,0}, + [I(217,130)] = {64,0}, + [I(218,130)] = {64,0}, + [I(219,130)] = {64,0}, + [I(220,130)] = {64,0}, + [I(221,130)] = {64,0}, + [I(222,130)] = {64,0}, + [I(223,130)] = {64,0}, + [I(224,130)] = {64,0}, + [I(225,130)] = {64,0}, + [I(226,130)] = {64,0}, + [I(227,130)] = {64,0}, + [I(228,130)] = {64,0}, + [I(229,130)] = {64,0}, + [I(230,130)] = {64,0}, + [I(231,130)] = {64,0}, + [I(232,130)] = {64,0}, + [I(233,130)] = {64,0}, + [I(234,130)] = {64,0}, + [I(235,130)] = {64,0}, + [I(236,130)] = {64,0}, + [I(237,130)] = {64,0}, + [I(238,130)] = {64,0}, + [I(239,130)] = {64,0}, + [I(240,130)] = {64,0}, + [I(241,130)] = {64,0}, + [I(242,130)] = {64,0}, + [I(243,130)] = {64,0}, + [I(244,130)] = {64,0}, + [I(245,130)] = {64,0}, + [I(246,130)] = {64,0}, + [I(247,130)] = {64,0}, + [I(248,130)] = {64,0}, + [I(249,130)] = {64,0}, + [I(250,130)] = {64,0}, + [I(251,130)] = {64,0}, + [I(252,130)] = {64,0}, + [I(253,130)] = {64,0}, + [I(254,130)] = {64,0}, + [I(255,130)] = {64,0}, + [I(0,131)] = {64,0}, + [I(1,131)] = {64,0}, + [I(2,131)] = {64,0}, + [I(3,131)] = {64,0}, + [I(4,131)] = {64,0}, + [I(5,131)] = {64,0}, + [I(6,131)] = {64,0}, + [I(7,131)] = {64,0}, + [I(8,131)] = {64,0}, + [I(9,131)] = {64,0}, + [I(10,131)] = {64,0}, + [I(11,131)] = {64,0}, + [I(12,131)] = {64,0}, + [I(13,131)] = {64,0}, + [I(14,131)] = {64,0}, + [I(15,131)] = {64,0}, + [I(16,131)] = {64,0}, + [I(17,131)] = {64,0}, + [I(18,131)] = {64,0}, + [I(19,131)] = {64,0}, + [I(20,131)] = {64,0}, + [I(21,131)] = {64,0}, + [I(22,131)] = {64,0}, + [I(23,131)] = {64,0}, + [I(24,131)] = {64,0}, + [I(25,131)] = {64,0}, + [I(26,131)] = {64,0}, + [I(27,131)] = {64,0}, + [I(28,131)] = {64,0}, + [I(29,131)] = {64,0}, + [I(30,131)] = {64,0}, + [I(31,131)] = {64,0}, + [I(32,131)] = {26,0x14FFFE8}, + [I(33,131)] = {30,0x3F8FFFE8}, + [I(34,131)] = {30,0x3F9FFFE8}, + [I(35,131)] = {X32,0xFFAFFFE8}, + [I(36,131)] = {64,0}, + [I(37,131)] = {26,0x15FFFE8}, + [I(38,131)] = {28,0xF8FFFE8}, + [I(39,131)] = {31,0x7FAFFFE8}, + [I(40,131)] = {30,0x3FAFFFE8}, + [I(41,131)] = {30,0x3FBFFFE8}, + [I(42,131)] = {28,0xF9FFFE8}, + [I(43,131)] = {31,0x7FBFFFE8}, + [I(44,131)] = {28,0xFAFFFE8}, + [I(45,131)] = {26,0x16FFFE8}, + [I(46,131)] = {26,0x17FFFE8}, + [I(47,131)] = {26,0x18FFFE8}, + [I(48,131)] = {25,0xFFFE8}, + [I(49,131)] = {25,0x1FFFE8}, + [I(50,131)] = {25,0x2FFFE8}, + [I(51,131)] = {26,0x19FFFE8}, + [I(52,131)] = {26,0x1AFFFE8}, + [I(53,131)] = {26,0x1BFFFE8}, + [I(54,131)] = {26,0x1CFFFE8}, + [I(55,131)] = {26,0x1DFFFE8}, + [I(56,131)] = {26,0x1EFFFE8}, + [I(57,131)] = {26,0x1FFFFE8}, + [I(58,131)] = {27,0x5CFFFE8}, + [I(59,131)] = {28,0xFBFFFE8}, + [I(60,131)] = {64,0}, + [I(61,131)] = {26,0x20FFFE8}, + [I(62,131)] = {X32,0xFFBFFFE8}, + [I(63,131)] = {30,0x3FCFFFE8}, + [I(64,131)] = {64,0}, + [I(65,131)] = {26,0x21FFFE8}, + [I(66,131)] = {27,0x5DFFFE8}, + [I(67,131)] = {27,0x5EFFFE8}, + [I(68,131)] = {27,0x5FFFFE8}, + [I(69,131)] = {27,0x60FFFE8}, + [I(70,131)] = {27,0x61FFFE8}, + [I(71,131)] = {27,0x62FFFE8}, + [I(72,131)] = {27,0x63FFFE8}, + [I(73,131)] = {27,0x64FFFE8}, + [I(74,131)] = {27,0x65FFFE8}, + [I(75,131)] = {27,0x66FFFE8}, + [I(76,131)] = {27,0x67FFFE8}, + [I(77,131)] = {27,0x68FFFE8}, + [I(78,131)] = {27,0x69FFFE8}, + [I(79,131)] = {27,0x6AFFFE8}, + [I(80,131)] = {27,0x6BFFFE8}, + [I(81,131)] = {27,0x6CFFFE8}, + [I(82,131)] = {27,0x6DFFFE8}, + [I(83,131)] = {27,0x6EFFFE8}, + [I(84,131)] = {27,0x6FFFFE8}, + [I(85,131)] = {27,0x70FFFE8}, + [I(86,131)] = {27,0x71FFFE8}, + [I(87,131)] = {27,0x72FFFE8}, + [I(88,131)] = {28,0xFCFFFE8}, + [I(89,131)] = {27,0x73FFFE8}, + [I(90,131)] = {28,0xFDFFFE8}, + [I(91,131)] = {64,0}, + [I(92,131)] = {64,0}, + [I(93,131)] = {64,0}, + [I(94,131)] = {64,0}, + [I(95,131)] = {26,0x22FFFE8}, + [I(96,131)] = {64,0}, + [I(97,131)] = {25,0x3FFFE8}, + [I(98,131)] = {26,0x23FFFE8}, + [I(99,131)] = {25,0x4FFFE8}, + [I(100,131)] = {26,0x24FFFE8}, + [I(101,131)] = {25,0x5FFFE8}, + [I(102,131)] = {26,0x25FFFE8}, + [I(103,131)] = {26,0x26FFFE8}, + [I(104,131)] = {26,0x27FFFE8}, + [I(105,131)] = {25,0x6FFFE8}, + [I(106,131)] = {27,0x74FFFE8}, + [I(107,131)] = {27,0x75FFFE8}, + [I(108,131)] = {26,0x28FFFE8}, + [I(109,131)] = {26,0x29FFFE8}, + [I(110,131)] = {26,0x2AFFFE8}, + [I(111,131)] = {25,0x7FFFE8}, + [I(112,131)] = {26,0x2BFFFE8}, + [I(113,131)] = {27,0x76FFFE8}, + [I(114,131)] = {26,0x2CFFFE8}, + [I(115,131)] = {25,0x8FFFE8}, + [I(116,131)] = {25,0x9FFFE8}, + [I(117,131)] = {26,0x2DFFFE8}, + [I(118,131)] = {27,0x77FFFE8}, + [I(119,131)] = {27,0x78FFFE8}, + [I(120,131)] = {27,0x79FFFE8}, + [I(121,131)] = {27,0x7AFFFE8}, + [I(122,131)] = {27,0x7BFFFE8}, + [I(123,131)] = {64,0}, + [I(124,131)] = {31,0x7FCFFFE8}, + [I(125,131)] = {64,0}, + [I(126,131)] = {64,0}, + [I(127,131)] = {64,0}, + [I(128,131)] = {64,0}, + [I(129,131)] = {64,0}, + [I(130,131)] = {64,0}, + [I(131,131)] = {64,0}, + [I(132,131)] = {64,0}, + [I(133,131)] = {64,0}, + [I(134,131)] = {64,0}, + [I(135,131)] = {64,0}, + [I(136,131)] = {64,0}, + [I(137,131)] = {64,0}, + [I(138,131)] = {64,0}, + [I(139,131)] = {64,0}, + [I(140,131)] = {64,0}, + [I(141,131)] = {64,0}, + [I(142,131)] = {64,0}, + [I(143,131)] = {64,0}, + [I(144,131)] = {64,0}, + [I(145,131)] = {64,0}, + [I(146,131)] = {64,0}, + [I(147,131)] = {64,0}, + [I(148,131)] = {64,0}, + [I(149,131)] = {64,0}, + [I(150,131)] = {64,0}, + [I(151,131)] = {64,0}, + [I(152,131)] = {64,0}, + [I(153,131)] = {64,0}, + [I(154,131)] = {64,0}, + [I(155,131)] = {64,0}, + [I(156,131)] = {64,0}, + [I(157,131)] = {64,0}, + [I(158,131)] = {64,0}, + [I(159,131)] = {64,0}, + [I(160,131)] = {64,0}, + [I(161,131)] = {64,0}, + [I(162,131)] = {64,0}, + [I(163,131)] = {64,0}, + [I(164,131)] = {64,0}, + [I(165,131)] = {64,0}, + [I(166,131)] = {64,0}, + [I(167,131)] = {64,0}, + [I(168,131)] = {64,0}, + [I(169,131)] = {64,0}, + [I(170,131)] = {64,0}, + [I(171,131)] = {64,0}, + [I(172,131)] = {64,0}, + [I(173,131)] = {64,0}, + [I(174,131)] = {64,0}, + [I(175,131)] = {64,0}, + [I(176,131)] = {64,0}, + [I(177,131)] = {64,0}, + [I(178,131)] = {64,0}, + [I(179,131)] = {64,0}, + [I(180,131)] = {64,0}, + [I(181,131)] = {64,0}, + [I(182,131)] = {64,0}, + [I(183,131)] = {64,0}, + [I(184,131)] = {64,0}, + [I(185,131)] = {64,0}, + [I(186,131)] = {64,0}, + [I(187,131)] = {64,0}, + [I(188,131)] = {64,0}, + [I(189,131)] = {64,0}, + [I(190,131)] = {64,0}, + [I(191,131)] = {64,0}, + [I(192,131)] = {64,0}, + [I(193,131)] = {64,0}, + [I(194,131)] = {64,0}, + [I(195,131)] = {64,0}, + [I(196,131)] = {64,0}, + [I(197,131)] = {64,0}, + [I(198,131)] = {64,0}, + [I(199,131)] = {64,0}, + [I(200,131)] = {64,0}, + [I(201,131)] = {64,0}, + [I(202,131)] = {64,0}, + [I(203,131)] = {64,0}, + [I(204,131)] = {64,0}, + [I(205,131)] = {64,0}, + [I(206,131)] = {64,0}, + [I(207,131)] = {64,0}, + [I(208,131)] = {64,0}, + [I(209,131)] = {64,0}, + [I(210,131)] = {64,0}, + [I(211,131)] = {64,0}, + [I(212,131)] = {64,0}, + [I(213,131)] = {64,0}, + [I(214,131)] = {64,0}, + [I(215,131)] = {64,0}, + [I(216,131)] = {64,0}, + [I(217,131)] = {64,0}, + [I(218,131)] = {64,0}, + [I(219,131)] = {64,0}, + [I(220,131)] = {64,0}, + [I(221,131)] = {64,0}, + [I(222,131)] = {64,0}, + [I(223,131)] = {64,0}, + [I(224,131)] = {64,0}, + [I(225,131)] = {64,0}, + [I(226,131)] = {64,0}, + [I(227,131)] = {64,0}, + [I(228,131)] = {64,0}, + [I(229,131)] = {64,0}, + [I(230,131)] = {64,0}, + [I(231,131)] = {64,0}, + [I(232,131)] = {64,0}, + [I(233,131)] = {64,0}, + [I(234,131)] = {64,0}, + [I(235,131)] = {64,0}, + [I(236,131)] = {64,0}, + [I(237,131)] = {64,0}, + [I(238,131)] = {64,0}, + [I(239,131)] = {64,0}, + [I(240,131)] = {64,0}, + [I(241,131)] = {64,0}, + [I(242,131)] = {64,0}, + [I(243,131)] = {64,0}, + [I(244,131)] = {64,0}, + [I(245,131)] = {64,0}, + [I(246,131)] = {64,0}, + [I(247,131)] = {64,0}, + [I(248,131)] = {64,0}, + [I(249,131)] = {64,0}, + [I(250,131)] = {64,0}, + [I(251,131)] = {64,0}, + [I(252,131)] = {64,0}, + [I(253,131)] = {64,0}, + [I(254,131)] = {64,0}, + [I(255,131)] = {64,0}, + [I(0,132)] = {64,0}, + [I(1,132)] = {64,0}, + [I(2,132)] = {64,0}, + [I(3,132)] = {64,0}, + [I(4,132)] = {64,0}, + [I(5,132)] = {64,0}, + [I(6,132)] = {64,0}, + [I(7,132)] = {64,0}, + [I(8,132)] = {64,0}, + [I(9,132)] = {64,0}, + [I(10,132)] = {64,0}, + [I(11,132)] = {64,0}, + [I(12,132)] = {64,0}, + [I(13,132)] = {64,0}, + [I(14,132)] = {64,0}, + [I(15,132)] = {64,0}, + [I(16,132)] = {64,0}, + [I(17,132)] = {64,0}, + [I(18,132)] = {64,0}, + [I(19,132)] = {64,0}, + [I(20,132)] = {64,0}, + [I(21,132)] = {64,0}, + [I(22,132)] = {64,0}, + [I(23,132)] = {64,0}, + [I(24,132)] = {64,0}, + [I(25,132)] = {64,0}, + [I(26,132)] = {64,0}, + [I(27,132)] = {64,0}, + [I(28,132)] = {64,0}, + [I(29,132)] = {64,0}, + [I(30,132)] = {64,0}, + [I(31,132)] = {64,0}, + [I(32,132)] = {28,0x53FFFD3}, + [I(33,132)] = {X32,0xFE3FFFD3}, + [I(34,132)] = {X32,0xFE7FFFD3}, + [I(35,132)] = {64,0}, + [I(36,132)] = {64,0}, + [I(37,132)] = {28,0x57FFFD3}, + [I(38,132)] = {30,0x3E3FFFD3}, + [I(39,132)] = {64,0}, + [I(40,132)] = {X32,0xFEBFFFD3}, + [I(41,132)] = {X32,0xFEFFFFD3}, + [I(42,132)] = {30,0x3E7FFFD3}, + [I(43,132)] = {64,0}, + [I(44,132)] = {30,0x3EBFFFD3}, + [I(45,132)] = {28,0x5BFFFD3}, + [I(46,132)] = {28,0x5FFFFD3}, + [I(47,132)] = {28,0x63FFFD3}, + [I(48,132)] = {27,0x3FFFD3}, + [I(49,132)] = {27,0x7FFFD3}, + [I(50,132)] = {27,0xBFFFD3}, + [I(51,132)] = {28,0x67FFFD3}, + [I(52,132)] = {28,0x6BFFFD3}, + [I(53,132)] = {28,0x6FFFFD3}, + [I(54,132)] = {28,0x73FFFD3}, + [I(55,132)] = {28,0x77FFFD3}, + [I(56,132)] = {28,0x7BFFFD3}, + [I(57,132)] = {28,0x7FFFFD3}, + [I(58,132)] = {29,0x173FFFD3}, + [I(59,132)] = {30,0x3EFFFFD3}, + [I(60,132)] = {64,0}, + [I(61,132)] = {28,0x83FFFD3}, + [I(62,132)] = {64,0}, + [I(63,132)] = {X32,0xFF3FFFD3}, + [I(64,132)] = {64,0}, + [I(65,132)] = {28,0x87FFFD3}, + [I(66,132)] = {29,0x177FFFD3}, + [I(67,132)] = {29,0x17BFFFD3}, + [I(68,132)] = {29,0x17FFFFD3}, + [I(69,132)] = {29,0x183FFFD3}, + [I(70,132)] = {29,0x187FFFD3}, + [I(71,132)] = {29,0x18BFFFD3}, + [I(72,132)] = {29,0x18FFFFD3}, + [I(73,132)] = {29,0x193FFFD3}, + [I(74,132)] = {29,0x197FFFD3}, + [I(75,132)] = {29,0x19BFFFD3}, + [I(76,132)] = {29,0x19FFFFD3}, + [I(77,132)] = {29,0x1A3FFFD3}, + [I(78,132)] = {29,0x1A7FFFD3}, + [I(79,132)] = {29,0x1ABFFFD3}, + [I(80,132)] = {29,0x1AFFFFD3}, + [I(81,132)] = {29,0x1B3FFFD3}, + [I(82,132)] = {29,0x1B7FFFD3}, + [I(83,132)] = {29,0x1BBFFFD3}, + [I(84,132)] = {29,0x1BFFFFD3}, + [I(85,132)] = {29,0x1C3FFFD3}, + [I(86,132)] = {29,0x1C7FFFD3}, + [I(87,132)] = {29,0x1CBFFFD3}, + [I(88,132)] = {30,0x3F3FFFD3}, + [I(89,132)] = {29,0x1CFFFFD3}, + [I(90,132)] = {30,0x3F7FFFD3}, + [I(91,132)] = {64,0}, + [I(92,132)] = {64,0}, + [I(93,132)] = {64,0}, + [I(94,132)] = {64,0}, + [I(95,132)] = {28,0x8BFFFD3}, + [I(96,132)] = {64,0}, + [I(97,132)] = {27,0xFFFFD3}, + [I(98,132)] = {28,0x8FFFFD3}, + [I(99,132)] = {27,0x13FFFD3}, + [I(100,132)] = {28,0x93FFFD3}, + [I(101,132)] = {27,0x17FFFD3}, + [I(102,132)] = {28,0x97FFFD3}, + [I(103,132)] = {28,0x9BFFFD3}, + [I(104,132)] = {28,0x9FFFFD3}, + [I(105,132)] = {27,0x1BFFFD3}, + [I(106,132)] = {29,0x1D3FFFD3}, + [I(107,132)] = {29,0x1D7FFFD3}, + [I(108,132)] = {28,0xA3FFFD3}, + [I(109,132)] = {28,0xA7FFFD3}, + [I(110,132)] = {28,0xABFFFD3}, + [I(111,132)] = {27,0x1FFFFD3}, + [I(112,132)] = {28,0xAFFFFD3}, + [I(113,132)] = {29,0x1DBFFFD3}, + [I(114,132)] = {28,0xB3FFFD3}, + [I(115,132)] = {27,0x23FFFD3}, + [I(116,132)] = {27,0x27FFFD3}, + [I(117,132)] = {28,0xB7FFFD3}, + [I(118,132)] = {29,0x1DFFFFD3}, + [I(119,132)] = {29,0x1E3FFFD3}, + [I(120,132)] = {29,0x1E7FFFD3}, + [I(121,132)] = {29,0x1EBFFFD3}, + [I(122,132)] = {29,0x1EFFFFD3}, + [I(123,132)] = {64,0}, + [I(124,132)] = {64,0}, + [I(125,132)] = {64,0}, + [I(126,132)] = {64,0}, + [I(127,132)] = {64,0}, + [I(128,132)] = {64,0}, + [I(129,132)] = {64,0}, + [I(130,132)] = {64,0}, + [I(131,132)] = {64,0}, + [I(132,132)] = {64,0}, + [I(133,132)] = {64,0}, + [I(134,132)] = {64,0}, + [I(135,132)] = {64,0}, + [I(136,132)] = {64,0}, + [I(137,132)] = {64,0}, + [I(138,132)] = {64,0}, + [I(139,132)] = {64,0}, + [I(140,132)] = {64,0}, + [I(141,132)] = {64,0}, + [I(142,132)] = {64,0}, + [I(143,132)] = {64,0}, + [I(144,132)] = {64,0}, + [I(145,132)] = {64,0}, + [I(146,132)] = {64,0}, + [I(147,132)] = {64,0}, + [I(148,132)] = {64,0}, + [I(149,132)] = {64,0}, + [I(150,132)] = {64,0}, + [I(151,132)] = {64,0}, + [I(152,132)] = {64,0}, + [I(153,132)] = {64,0}, + [I(154,132)] = {64,0}, + [I(155,132)] = {64,0}, + [I(156,132)] = {64,0}, + [I(157,132)] = {64,0}, + [I(158,132)] = {64,0}, + [I(159,132)] = {64,0}, + [I(160,132)] = {64,0}, + [I(161,132)] = {64,0}, + [I(162,132)] = {64,0}, + [I(163,132)] = {64,0}, + [I(164,132)] = {64,0}, + [I(165,132)] = {64,0}, + [I(166,132)] = {64,0}, + [I(167,132)] = {64,0}, + [I(168,132)] = {64,0}, + [I(169,132)] = {64,0}, + [I(170,132)] = {64,0}, + [I(171,132)] = {64,0}, + [I(172,132)] = {64,0}, + [I(173,132)] = {64,0}, + [I(174,132)] = {64,0}, + [I(175,132)] = {64,0}, + [I(176,132)] = {64,0}, + [I(177,132)] = {64,0}, + [I(178,132)] = {64,0}, + [I(179,132)] = {64,0}, + [I(180,132)] = {64,0}, + [I(181,132)] = {64,0}, + [I(182,132)] = {64,0}, + [I(183,132)] = {64,0}, + [I(184,132)] = {64,0}, + [I(185,132)] = {64,0}, + [I(186,132)] = {64,0}, + [I(187,132)] = {64,0}, + [I(188,132)] = {64,0}, + [I(189,132)] = {64,0}, + [I(190,132)] = {64,0}, + [I(191,132)] = {64,0}, + [I(192,132)] = {64,0}, + [I(193,132)] = {64,0}, + [I(194,132)] = {64,0}, + [I(195,132)] = {64,0}, + [I(196,132)] = {64,0}, + [I(197,132)] = {64,0}, + [I(198,132)] = {64,0}, + [I(199,132)] = {64,0}, + [I(200,132)] = {64,0}, + [I(201,132)] = {64,0}, + [I(202,132)] = {64,0}, + [I(203,132)] = {64,0}, + [I(204,132)] = {64,0}, + [I(205,132)] = {64,0}, + [I(206,132)] = {64,0}, + [I(207,132)] = {64,0}, + [I(208,132)] = {64,0}, + [I(209,132)] = {64,0}, + [I(210,132)] = {64,0}, + [I(211,132)] = {64,0}, + [I(212,132)] = {64,0}, + [I(213,132)] = {64,0}, + [I(214,132)] = {64,0}, + [I(215,132)] = {64,0}, + [I(216,132)] = {64,0}, + [I(217,132)] = {64,0}, + [I(218,132)] = {64,0}, + [I(219,132)] = {64,0}, + [I(220,132)] = {64,0}, + [I(221,132)] = {64,0}, + [I(222,132)] = {64,0}, + [I(223,132)] = {64,0}, + [I(224,132)] = {64,0}, + [I(225,132)] = {64,0}, + [I(226,132)] = {64,0}, + [I(227,132)] = {64,0}, + [I(228,132)] = {64,0}, + [I(229,132)] = {64,0}, + [I(230,132)] = {64,0}, + [I(231,132)] = {64,0}, + [I(232,132)] = {64,0}, + [I(233,132)] = {64,0}, + [I(234,132)] = {64,0}, + [I(235,132)] = {64,0}, + [I(236,132)] = {64,0}, + [I(237,132)] = {64,0}, + [I(238,132)] = {64,0}, + [I(239,132)] = {64,0}, + [I(240,132)] = {64,0}, + [I(241,132)] = {64,0}, + [I(242,132)] = {64,0}, + [I(243,132)] = {64,0}, + [I(244,132)] = {64,0}, + [I(245,132)] = {64,0}, + [I(246,132)] = {64,0}, + [I(247,132)] = {64,0}, + [I(248,132)] = {64,0}, + [I(249,132)] = {64,0}, + [I(250,132)] = {64,0}, + [I(251,132)] = {64,0}, + [I(252,132)] = {64,0}, + [I(253,132)] = {64,0}, + [I(254,132)] = {64,0}, + [I(255,132)] = {64,0}, + [I(0,133)] = {64,0}, + [I(1,133)] = {64,0}, + [I(2,133)] = {64,0}, + [I(3,133)] = {64,0}, + [I(4,133)] = {64,0}, + [I(5,133)] = {64,0}, + [I(6,133)] = {64,0}, + [I(7,133)] = {64,0}, + [I(8,133)] = {64,0}, + [I(9,133)] = {64,0}, + [I(10,133)] = {64,0}, + [I(11,133)] = {64,0}, + [I(12,133)] = {64,0}, + [I(13,133)] = {64,0}, + [I(14,133)] = {64,0}, + [I(15,133)] = {64,0}, + [I(16,133)] = {64,0}, + [I(17,133)] = {64,0}, + [I(18,133)] = {64,0}, + [I(19,133)] = {64,0}, + [I(20,133)] = {64,0}, + [I(21,133)] = {64,0}, + [I(22,133)] = {64,0}, + [I(23,133)] = {64,0}, + [I(24,133)] = {64,0}, + [I(25,133)] = {64,0}, + [I(26,133)] = {64,0}, + [I(27,133)] = {64,0}, + [I(28,133)] = {64,0}, + [I(29,133)] = {64,0}, + [I(30,133)] = {64,0}, + [I(31,133)] = {64,0}, + [I(32,133)] = {28,0x53FFFD4}, + [I(33,133)] = {X32,0xFE3FFFD4}, + [I(34,133)] = {X32,0xFE7FFFD4}, + [I(35,133)] = {64,0}, + [I(36,133)] = {64,0}, + [I(37,133)] = {28,0x57FFFD4}, + [I(38,133)] = {30,0x3E3FFFD4}, + [I(39,133)] = {64,0}, + [I(40,133)] = {X32,0xFEBFFFD4}, + [I(41,133)] = {X32,0xFEFFFFD4}, + [I(42,133)] = {30,0x3E7FFFD4}, + [I(43,133)] = {64,0}, + [I(44,133)] = {30,0x3EBFFFD4}, + [I(45,133)] = {28,0x5BFFFD4}, + [I(46,133)] = {28,0x5FFFFD4}, + [I(47,133)] = {28,0x63FFFD4}, + [I(48,133)] = {27,0x3FFFD4}, + [I(49,133)] = {27,0x7FFFD4}, + [I(50,133)] = {27,0xBFFFD4}, + [I(51,133)] = {28,0x67FFFD4}, + [I(52,133)] = {28,0x6BFFFD4}, + [I(53,133)] = {28,0x6FFFFD4}, + [I(54,133)] = {28,0x73FFFD4}, + [I(55,133)] = {28,0x77FFFD4}, + [I(56,133)] = {28,0x7BFFFD4}, + [I(57,133)] = {28,0x7FFFFD4}, + [I(58,133)] = {29,0x173FFFD4}, + [I(59,133)] = {30,0x3EFFFFD4}, + [I(60,133)] = {64,0}, + [I(61,133)] = {28,0x83FFFD4}, + [I(62,133)] = {64,0}, + [I(63,133)] = {X32,0xFF3FFFD4}, + [I(64,133)] = {64,0}, + [I(65,133)] = {28,0x87FFFD4}, + [I(66,133)] = {29,0x177FFFD4}, + [I(67,133)] = {29,0x17BFFFD4}, + [I(68,133)] = {29,0x17FFFFD4}, + [I(69,133)] = {29,0x183FFFD4}, + [I(70,133)] = {29,0x187FFFD4}, + [I(71,133)] = {29,0x18BFFFD4}, + [I(72,133)] = {29,0x18FFFFD4}, + [I(73,133)] = {29,0x193FFFD4}, + [I(74,133)] = {29,0x197FFFD4}, + [I(75,133)] = {29,0x19BFFFD4}, + [I(76,133)] = {29,0x19FFFFD4}, + [I(77,133)] = {29,0x1A3FFFD4}, + [I(78,133)] = {29,0x1A7FFFD4}, + [I(79,133)] = {29,0x1ABFFFD4}, + [I(80,133)] = {29,0x1AFFFFD4}, + [I(81,133)] = {29,0x1B3FFFD4}, + [I(82,133)] = {29,0x1B7FFFD4}, + [I(83,133)] = {29,0x1BBFFFD4}, + [I(84,133)] = {29,0x1BFFFFD4}, + [I(85,133)] = {29,0x1C3FFFD4}, + [I(86,133)] = {29,0x1C7FFFD4}, + [I(87,133)] = {29,0x1CBFFFD4}, + [I(88,133)] = {30,0x3F3FFFD4}, + [I(89,133)] = {29,0x1CFFFFD4}, + [I(90,133)] = {30,0x3F7FFFD4}, + [I(91,133)] = {64,0}, + [I(92,133)] = {64,0}, + [I(93,133)] = {64,0}, + [I(94,133)] = {64,0}, + [I(95,133)] = {28,0x8BFFFD4}, + [I(96,133)] = {64,0}, + [I(97,133)] = {27,0xFFFFD4}, + [I(98,133)] = {28,0x8FFFFD4}, + [I(99,133)] = {27,0x13FFFD4}, + [I(100,133)] = {28,0x93FFFD4}, + [I(101,133)] = {27,0x17FFFD4}, + [I(102,133)] = {28,0x97FFFD4}, + [I(103,133)] = {28,0x9BFFFD4}, + [I(104,133)] = {28,0x9FFFFD4}, + [I(105,133)] = {27,0x1BFFFD4}, + [I(106,133)] = {29,0x1D3FFFD4}, + [I(107,133)] = {29,0x1D7FFFD4}, + [I(108,133)] = {28,0xA3FFFD4}, + [I(109,133)] = {28,0xA7FFFD4}, + [I(110,133)] = {28,0xABFFFD4}, + [I(111,133)] = {27,0x1FFFFD4}, + [I(112,133)] = {28,0xAFFFFD4}, + [I(113,133)] = {29,0x1DBFFFD4}, + [I(114,133)] = {28,0xB3FFFD4}, + [I(115,133)] = {27,0x23FFFD4}, + [I(116,133)] = {27,0x27FFFD4}, + [I(117,133)] = {28,0xB7FFFD4}, + [I(118,133)] = {29,0x1DFFFFD4}, + [I(119,133)] = {29,0x1E3FFFD4}, + [I(120,133)] = {29,0x1E7FFFD4}, + [I(121,133)] = {29,0x1EBFFFD4}, + [I(122,133)] = {29,0x1EFFFFD4}, + [I(123,133)] = {64,0}, + [I(124,133)] = {64,0}, + [I(125,133)] = {64,0}, + [I(126,133)] = {64,0}, + [I(127,133)] = {64,0}, + [I(128,133)] = {64,0}, + [I(129,133)] = {64,0}, + [I(130,133)] = {64,0}, + [I(131,133)] = {64,0}, + [I(132,133)] = {64,0}, + [I(133,133)] = {64,0}, + [I(134,133)] = {64,0}, + [I(135,133)] = {64,0}, + [I(136,133)] = {64,0}, + [I(137,133)] = {64,0}, + [I(138,133)] = {64,0}, + [I(139,133)] = {64,0}, + [I(140,133)] = {64,0}, + [I(141,133)] = {64,0}, + [I(142,133)] = {64,0}, + [I(143,133)] = {64,0}, + [I(144,133)] = {64,0}, + [I(145,133)] = {64,0}, + [I(146,133)] = {64,0}, + [I(147,133)] = {64,0}, + [I(148,133)] = {64,0}, + [I(149,133)] = {64,0}, + [I(150,133)] = {64,0}, + [I(151,133)] = {64,0}, + [I(152,133)] = {64,0}, + [I(153,133)] = {64,0}, + [I(154,133)] = {64,0}, + [I(155,133)] = {64,0}, + [I(156,133)] = {64,0}, + [I(157,133)] = {64,0}, + [I(158,133)] = {64,0}, + [I(159,133)] = {64,0}, + [I(160,133)] = {64,0}, + [I(161,133)] = {64,0}, + [I(162,133)] = {64,0}, + [I(163,133)] = {64,0}, + [I(164,133)] = {64,0}, + [I(165,133)] = {64,0}, + [I(166,133)] = {64,0}, + [I(167,133)] = {64,0}, + [I(168,133)] = {64,0}, + [I(169,133)] = {64,0}, + [I(170,133)] = {64,0}, + [I(171,133)] = {64,0}, + [I(172,133)] = {64,0}, + [I(173,133)] = {64,0}, + [I(174,133)] = {64,0}, + [I(175,133)] = {64,0}, + [I(176,133)] = {64,0}, + [I(177,133)] = {64,0}, + [I(178,133)] = {64,0}, + [I(179,133)] = {64,0}, + [I(180,133)] = {64,0}, + [I(181,133)] = {64,0}, + [I(182,133)] = {64,0}, + [I(183,133)] = {64,0}, + [I(184,133)] = {64,0}, + [I(185,133)] = {64,0}, + [I(186,133)] = {64,0}, + [I(187,133)] = {64,0}, + [I(188,133)] = {64,0}, + [I(189,133)] = {64,0}, + [I(190,133)] = {64,0}, + [I(191,133)] = {64,0}, + [I(192,133)] = {64,0}, + [I(193,133)] = {64,0}, + [I(194,133)] = {64,0}, + [I(195,133)] = {64,0}, + [I(196,133)] = {64,0}, + [I(197,133)] = {64,0}, + [I(198,133)] = {64,0}, + [I(199,133)] = {64,0}, + [I(200,133)] = {64,0}, + [I(201,133)] = {64,0}, + [I(202,133)] = {64,0}, + [I(203,133)] = {64,0}, + [I(204,133)] = {64,0}, + [I(205,133)] = {64,0}, + [I(206,133)] = {64,0}, + [I(207,133)] = {64,0}, + [I(208,133)] = {64,0}, + [I(209,133)] = {64,0}, + [I(210,133)] = {64,0}, + [I(211,133)] = {64,0}, + [I(212,133)] = {64,0}, + [I(213,133)] = {64,0}, + [I(214,133)] = {64,0}, + [I(215,133)] = {64,0}, + [I(216,133)] = {64,0}, + [I(217,133)] = {64,0}, + [I(218,133)] = {64,0}, + [I(219,133)] = {64,0}, + [I(220,133)] = {64,0}, + [I(221,133)] = {64,0}, + [I(222,133)] = {64,0}, + [I(223,133)] = {64,0}, + [I(224,133)] = {64,0}, + [I(225,133)] = {64,0}, + [I(226,133)] = {64,0}, + [I(227,133)] = {64,0}, + [I(228,133)] = {64,0}, + [I(229,133)] = {64,0}, + [I(230,133)] = {64,0}, + [I(231,133)] = {64,0}, + [I(232,133)] = {64,0}, + [I(233,133)] = {64,0}, + [I(234,133)] = {64,0}, + [I(235,133)] = {64,0}, + [I(236,133)] = {64,0}, + [I(237,133)] = {64,0}, + [I(238,133)] = {64,0}, + [I(239,133)] = {64,0}, + [I(240,133)] = {64,0}, + [I(241,133)] = {64,0}, + [I(242,133)] = {64,0}, + [I(243,133)] = {64,0}, + [I(244,133)] = {64,0}, + [I(245,133)] = {64,0}, + [I(246,133)] = {64,0}, + [I(247,133)] = {64,0}, + [I(248,133)] = {64,0}, + [I(249,133)] = {64,0}, + [I(250,133)] = {64,0}, + [I(251,133)] = {64,0}, + [I(252,133)] = {64,0}, + [I(253,133)] = {64,0}, + [I(254,133)] = {64,0}, + [I(255,133)] = {64,0}, + [I(0,134)] = {64,0}, + [I(1,134)] = {64,0}, + [I(2,134)] = {64,0}, + [I(3,134)] = {64,0}, + [I(4,134)] = {64,0}, + [I(5,134)] = {64,0}, + [I(6,134)] = {64,0}, + [I(7,134)] = {64,0}, + [I(8,134)] = {64,0}, + [I(9,134)] = {64,0}, + [I(10,134)] = {64,0}, + [I(11,134)] = {64,0}, + [I(12,134)] = {64,0}, + [I(13,134)] = {64,0}, + [I(14,134)] = {64,0}, + [I(15,134)] = {64,0}, + [I(16,134)] = {64,0}, + [I(17,134)] = {64,0}, + [I(18,134)] = {64,0}, + [I(19,134)] = {64,0}, + [I(20,134)] = {64,0}, + [I(21,134)] = {64,0}, + [I(22,134)] = {64,0}, + [I(23,134)] = {64,0}, + [I(24,134)] = {64,0}, + [I(25,134)] = {64,0}, + [I(26,134)] = {64,0}, + [I(27,134)] = {64,0}, + [I(28,134)] = {64,0}, + [I(29,134)] = {64,0}, + [I(30,134)] = {64,0}, + [I(31,134)] = {64,0}, + [I(32,134)] = {28,0x53FFFD5}, + [I(33,134)] = {X32,0xFE3FFFD5}, + [I(34,134)] = {X32,0xFE7FFFD5}, + [I(35,134)] = {64,0}, + [I(36,134)] = {64,0}, + [I(37,134)] = {28,0x57FFFD5}, + [I(38,134)] = {30,0x3E3FFFD5}, + [I(39,134)] = {64,0}, + [I(40,134)] = {X32,0xFEBFFFD5}, + [I(41,134)] = {X32,0xFEFFFFD5}, + [I(42,134)] = {30,0x3E7FFFD5}, + [I(43,134)] = {64,0}, + [I(44,134)] = {30,0x3EBFFFD5}, + [I(45,134)] = {28,0x5BFFFD5}, + [I(46,134)] = {28,0x5FFFFD5}, + [I(47,134)] = {28,0x63FFFD5}, + [I(48,134)] = {27,0x3FFFD5}, + [I(49,134)] = {27,0x7FFFD5}, + [I(50,134)] = {27,0xBFFFD5}, + [I(51,134)] = {28,0x67FFFD5}, + [I(52,134)] = {28,0x6BFFFD5}, + [I(53,134)] = {28,0x6FFFFD5}, + [I(54,134)] = {28,0x73FFFD5}, + [I(55,134)] = {28,0x77FFFD5}, + [I(56,134)] = {28,0x7BFFFD5}, + [I(57,134)] = {28,0x7FFFFD5}, + [I(58,134)] = {29,0x173FFFD5}, + [I(59,134)] = {30,0x3EFFFFD5}, + [I(60,134)] = {64,0}, + [I(61,134)] = {28,0x83FFFD5}, + [I(62,134)] = {64,0}, + [I(63,134)] = {X32,0xFF3FFFD5}, + [I(64,134)] = {64,0}, + [I(65,134)] = {28,0x87FFFD5}, + [I(66,134)] = {29,0x177FFFD5}, + [I(67,134)] = {29,0x17BFFFD5}, + [I(68,134)] = {29,0x17FFFFD5}, + [I(69,134)] = {29,0x183FFFD5}, + [I(70,134)] = {29,0x187FFFD5}, + [I(71,134)] = {29,0x18BFFFD5}, + [I(72,134)] = {29,0x18FFFFD5}, + [I(73,134)] = {29,0x193FFFD5}, + [I(74,134)] = {29,0x197FFFD5}, + [I(75,134)] = {29,0x19BFFFD5}, + [I(76,134)] = {29,0x19FFFFD5}, + [I(77,134)] = {29,0x1A3FFFD5}, + [I(78,134)] = {29,0x1A7FFFD5}, + [I(79,134)] = {29,0x1ABFFFD5}, + [I(80,134)] = {29,0x1AFFFFD5}, + [I(81,134)] = {29,0x1B3FFFD5}, + [I(82,134)] = {29,0x1B7FFFD5}, + [I(83,134)] = {29,0x1BBFFFD5}, + [I(84,134)] = {29,0x1BFFFFD5}, + [I(85,134)] = {29,0x1C3FFFD5}, + [I(86,134)] = {29,0x1C7FFFD5}, + [I(87,134)] = {29,0x1CBFFFD5}, + [I(88,134)] = {30,0x3F3FFFD5}, + [I(89,134)] = {29,0x1CFFFFD5}, + [I(90,134)] = {30,0x3F7FFFD5}, + [I(91,134)] = {64,0}, + [I(92,134)] = {64,0}, + [I(93,134)] = {64,0}, + [I(94,134)] = {64,0}, + [I(95,134)] = {28,0x8BFFFD5}, + [I(96,134)] = {64,0}, + [I(97,134)] = {27,0xFFFFD5}, + [I(98,134)] = {28,0x8FFFFD5}, + [I(99,134)] = {27,0x13FFFD5}, + [I(100,134)] = {28,0x93FFFD5}, + [I(101,134)] = {27,0x17FFFD5}, + [I(102,134)] = {28,0x97FFFD5}, + [I(103,134)] = {28,0x9BFFFD5}, + [I(104,134)] = {28,0x9FFFFD5}, + [I(105,134)] = {27,0x1BFFFD5}, + [I(106,134)] = {29,0x1D3FFFD5}, + [I(107,134)] = {29,0x1D7FFFD5}, + [I(108,134)] = {28,0xA3FFFD5}, + [I(109,134)] = {28,0xA7FFFD5}, + [I(110,134)] = {28,0xABFFFD5}, + [I(111,134)] = {27,0x1FFFFD5}, + [I(112,134)] = {28,0xAFFFFD5}, + [I(113,134)] = {29,0x1DBFFFD5}, + [I(114,134)] = {28,0xB3FFFD5}, + [I(115,134)] = {27,0x23FFFD5}, + [I(116,134)] = {27,0x27FFFD5}, + [I(117,134)] = {28,0xB7FFFD5}, + [I(118,134)] = {29,0x1DFFFFD5}, + [I(119,134)] = {29,0x1E3FFFD5}, + [I(120,134)] = {29,0x1E7FFFD5}, + [I(121,134)] = {29,0x1EBFFFD5}, + [I(122,134)] = {29,0x1EFFFFD5}, + [I(123,134)] = {64,0}, + [I(124,134)] = {64,0}, + [I(125,134)] = {64,0}, + [I(126,134)] = {64,0}, + [I(127,134)] = {64,0}, + [I(128,134)] = {64,0}, + [I(129,134)] = {64,0}, + [I(130,134)] = {64,0}, + [I(131,134)] = {64,0}, + [I(132,134)] = {64,0}, + [I(133,134)] = {64,0}, + [I(134,134)] = {64,0}, + [I(135,134)] = {64,0}, + [I(136,134)] = {64,0}, + [I(137,134)] = {64,0}, + [I(138,134)] = {64,0}, + [I(139,134)] = {64,0}, + [I(140,134)] = {64,0}, + [I(141,134)] = {64,0}, + [I(142,134)] = {64,0}, + [I(143,134)] = {64,0}, + [I(144,134)] = {64,0}, + [I(145,134)] = {64,0}, + [I(146,134)] = {64,0}, + [I(147,134)] = {64,0}, + [I(148,134)] = {64,0}, + [I(149,134)] = {64,0}, + [I(150,134)] = {64,0}, + [I(151,134)] = {64,0}, + [I(152,134)] = {64,0}, + [I(153,134)] = {64,0}, + [I(154,134)] = {64,0}, + [I(155,134)] = {64,0}, + [I(156,134)] = {64,0}, + [I(157,134)] = {64,0}, + [I(158,134)] = {64,0}, + [I(159,134)] = {64,0}, + [I(160,134)] = {64,0}, + [I(161,134)] = {64,0}, + [I(162,134)] = {64,0}, + [I(163,134)] = {64,0}, + [I(164,134)] = {64,0}, + [I(165,134)] = {64,0}, + [I(166,134)] = {64,0}, + [I(167,134)] = {64,0}, + [I(168,134)] = {64,0}, + [I(169,134)] = {64,0}, + [I(170,134)] = {64,0}, + [I(171,134)] = {64,0}, + [I(172,134)] = {64,0}, + [I(173,134)] = {64,0}, + [I(174,134)] = {64,0}, + [I(175,134)] = {64,0}, + [I(176,134)] = {64,0}, + [I(177,134)] = {64,0}, + [I(178,134)] = {64,0}, + [I(179,134)] = {64,0}, + [I(180,134)] = {64,0}, + [I(181,134)] = {64,0}, + [I(182,134)] = {64,0}, + [I(183,134)] = {64,0}, + [I(184,134)] = {64,0}, + [I(185,134)] = {64,0}, + [I(186,134)] = {64,0}, + [I(187,134)] = {64,0}, + [I(188,134)] = {64,0}, + [I(189,134)] = {64,0}, + [I(190,134)] = {64,0}, + [I(191,134)] = {64,0}, + [I(192,134)] = {64,0}, + [I(193,134)] = {64,0}, + [I(194,134)] = {64,0}, + [I(195,134)] = {64,0}, + [I(196,134)] = {64,0}, + [I(197,134)] = {64,0}, + [I(198,134)] = {64,0}, + [I(199,134)] = {64,0}, + [I(200,134)] = {64,0}, + [I(201,134)] = {64,0}, + [I(202,134)] = {64,0}, + [I(203,134)] = {64,0}, + [I(204,134)] = {64,0}, + [I(205,134)] = {64,0}, + [I(206,134)] = {64,0}, + [I(207,134)] = {64,0}, + [I(208,134)] = {64,0}, + [I(209,134)] = {64,0}, + [I(210,134)] = {64,0}, + [I(211,134)] = {64,0}, + [I(212,134)] = {64,0}, + [I(213,134)] = {64,0}, + [I(214,134)] = {64,0}, + [I(215,134)] = {64,0}, + [I(216,134)] = {64,0}, + [I(217,134)] = {64,0}, + [I(218,134)] = {64,0}, + [I(219,134)] = {64,0}, + [I(220,134)] = {64,0}, + [I(221,134)] = {64,0}, + [I(222,134)] = {64,0}, + [I(223,134)] = {64,0}, + [I(224,134)] = {64,0}, + [I(225,134)] = {64,0}, + [I(226,134)] = {64,0}, + [I(227,134)] = {64,0}, + [I(228,134)] = {64,0}, + [I(229,134)] = {64,0}, + [I(230,134)] = {64,0}, + [I(231,134)] = {64,0}, + [I(232,134)] = {64,0}, + [I(233,134)] = {64,0}, + [I(234,134)] = {64,0}, + [I(235,134)] = {64,0}, + [I(236,134)] = {64,0}, + [I(237,134)] = {64,0}, + [I(238,134)] = {64,0}, + [I(239,134)] = {64,0}, + [I(240,134)] = {64,0}, + [I(241,134)] = {64,0}, + [I(242,134)] = {64,0}, + [I(243,134)] = {64,0}, + [I(244,134)] = {64,0}, + [I(245,134)] = {64,0}, + [I(246,134)] = {64,0}, + [I(247,134)] = {64,0}, + [I(248,134)] = {64,0}, + [I(249,134)] = {64,0}, + [I(250,134)] = {64,0}, + [I(251,134)] = {64,0}, + [I(252,134)] = {64,0}, + [I(253,134)] = {64,0}, + [I(254,134)] = {64,0}, + [I(255,134)] = {64,0}, + [I(0,135)] = {64,0}, + [I(1,135)] = {64,0}, + [I(2,135)] = {64,0}, + [I(3,135)] = {64,0}, + [I(4,135)] = {64,0}, + [I(5,135)] = {64,0}, + [I(6,135)] = {64,0}, + [I(7,135)] = {64,0}, + [I(8,135)] = {64,0}, + [I(9,135)] = {64,0}, + [I(10,135)] = {64,0}, + [I(11,135)] = {64,0}, + [I(12,135)] = {64,0}, + [I(13,135)] = {64,0}, + [I(14,135)] = {64,0}, + [I(15,135)] = {64,0}, + [I(16,135)] = {64,0}, + [I(17,135)] = {64,0}, + [I(18,135)] = {64,0}, + [I(19,135)] = {64,0}, + [I(20,135)] = {64,0}, + [I(21,135)] = {64,0}, + [I(22,135)] = {64,0}, + [I(23,135)] = {64,0}, + [I(24,135)] = {64,0}, + [I(25,135)] = {64,0}, + [I(26,135)] = {64,0}, + [I(27,135)] = {64,0}, + [I(28,135)] = {64,0}, + [I(29,135)] = {64,0}, + [I(30,135)] = {64,0}, + [I(31,135)] = {64,0}, + [I(32,135)] = {29,0xA7FFFD9}, + [I(33,135)] = {64,0}, + [I(34,135)] = {64,0}, + [I(35,135)] = {64,0}, + [I(36,135)] = {64,0}, + [I(37,135)] = {29,0xAFFFFD9}, + [I(38,135)] = {31,0x7C7FFFD9}, + [I(39,135)] = {64,0}, + [I(40,135)] = {64,0}, + [I(41,135)] = {64,0}, + [I(42,135)] = {31,0x7CFFFFD9}, + [I(43,135)] = {64,0}, + [I(44,135)] = {31,0x7D7FFFD9}, + [I(45,135)] = {29,0xB7FFFD9}, + [I(46,135)] = {29,0xBFFFFD9}, + [I(47,135)] = {29,0xC7FFFD9}, + [I(48,135)] = {28,0x7FFFD9}, + [I(49,135)] = {28,0xFFFFD9}, + [I(50,135)] = {28,0x17FFFD9}, + [I(51,135)] = {29,0xCFFFFD9}, + [I(52,135)] = {29,0xD7FFFD9}, + [I(53,135)] = {29,0xDFFFFD9}, + [I(54,135)] = {29,0xE7FFFD9}, + [I(55,135)] = {29,0xEFFFFD9}, + [I(56,135)] = {29,0xF7FFFD9}, + [I(57,135)] = {29,0xFFFFFD9}, + [I(58,135)] = {30,0x2E7FFFD9}, + [I(59,135)] = {31,0x7DFFFFD9}, + [I(60,135)] = {64,0}, + [I(61,135)] = {29,0x107FFFD9}, + [I(62,135)] = {64,0}, + [I(63,135)] = {64,0}, + [I(64,135)] = {64,0}, + [I(65,135)] = {29,0x10FFFFD9}, + [I(66,135)] = {30,0x2EFFFFD9}, + [I(67,135)] = {30,0x2F7FFFD9}, + [I(68,135)] = {30,0x2FFFFFD9}, + [I(69,135)] = {30,0x307FFFD9}, + [I(70,135)] = {30,0x30FFFFD9}, + [I(71,135)] = {30,0x317FFFD9}, + [I(72,135)] = {30,0x31FFFFD9}, + [I(73,135)] = {30,0x327FFFD9}, + [I(74,135)] = {30,0x32FFFFD9}, + [I(75,135)] = {30,0x337FFFD9}, + [I(76,135)] = {30,0x33FFFFD9}, + [I(77,135)] = {30,0x347FFFD9}, + [I(78,135)] = {30,0x34FFFFD9}, + [I(79,135)] = {30,0x357FFFD9}, + [I(80,135)] = {30,0x35FFFFD9}, + [I(81,135)] = {30,0x367FFFD9}, + [I(82,135)] = {30,0x36FFFFD9}, + [I(83,135)] = {30,0x377FFFD9}, + [I(84,135)] = {30,0x37FFFFD9}, + [I(85,135)] = {30,0x387FFFD9}, + [I(86,135)] = {30,0x38FFFFD9}, + [I(87,135)] = {30,0x397FFFD9}, + [I(88,135)] = {31,0x7E7FFFD9}, + [I(89,135)] = {30,0x39FFFFD9}, + [I(90,135)] = {31,0x7EFFFFD9}, + [I(91,135)] = {64,0}, + [I(92,135)] = {64,0}, + [I(93,135)] = {64,0}, + [I(94,135)] = {64,0}, + [I(95,135)] = {29,0x117FFFD9}, + [I(96,135)] = {64,0}, + [I(97,135)] = {28,0x1FFFFD9}, + [I(98,135)] = {29,0x11FFFFD9}, + [I(99,135)] = {28,0x27FFFD9}, + [I(100,135)] = {29,0x127FFFD9}, + [I(101,135)] = {28,0x2FFFFD9}, + [I(102,135)] = {29,0x12FFFFD9}, + [I(103,135)] = {29,0x137FFFD9}, + [I(104,135)] = {29,0x13FFFFD9}, + [I(105,135)] = {28,0x37FFFD9}, + [I(106,135)] = {30,0x3A7FFFD9}, + [I(107,135)] = {30,0x3AFFFFD9}, + [I(108,135)] = {29,0x147FFFD9}, + [I(109,135)] = {29,0x14FFFFD9}, + [I(110,135)] = {29,0x157FFFD9}, + [I(111,135)] = {28,0x3FFFFD9}, + [I(112,135)] = {29,0x15FFFFD9}, + [I(113,135)] = {30,0x3B7FFFD9}, + [I(114,135)] = {29,0x167FFFD9}, + [I(115,135)] = {28,0x47FFFD9}, + [I(116,135)] = {28,0x4FFFFD9}, + [I(117,135)] = {29,0x16FFFFD9}, + [I(118,135)] = {30,0x3BFFFFD9}, + [I(119,135)] = {30,0x3C7FFFD9}, + [I(120,135)] = {30,0x3CFFFFD9}, + [I(121,135)] = {30,0x3D7FFFD9}, + [I(122,135)] = {30,0x3DFFFFD9}, + [I(123,135)] = {64,0}, + [I(124,135)] = {64,0}, + [I(125,135)] = {64,0}, + [I(126,135)] = {64,0}, + [I(127,135)] = {64,0}, + [I(128,135)] = {64,0}, + [I(129,135)] = {64,0}, + [I(130,135)] = {64,0}, + [I(131,135)] = {64,0}, + [I(132,135)] = {64,0}, + [I(133,135)] = {64,0}, + [I(134,135)] = {64,0}, + [I(135,135)] = {64,0}, + [I(136,135)] = {64,0}, + [I(137,135)] = {64,0}, + [I(138,135)] = {64,0}, + [I(139,135)] = {64,0}, + [I(140,135)] = {64,0}, + [I(141,135)] = {64,0}, + [I(142,135)] = {64,0}, + [I(143,135)] = {64,0}, + [I(144,135)] = {64,0}, + [I(145,135)] = {64,0}, + [I(146,135)] = {64,0}, + [I(147,135)] = {64,0}, + [I(148,135)] = {64,0}, + [I(149,135)] = {64,0}, + [I(150,135)] = {64,0}, + [I(151,135)] = {64,0}, + [I(152,135)] = {64,0}, + [I(153,135)] = {64,0}, + [I(154,135)] = {64,0}, + [I(155,135)] = {64,0}, + [I(156,135)] = {64,0}, + [I(157,135)] = {64,0}, + [I(158,135)] = {64,0}, + [I(159,135)] = {64,0}, + [I(160,135)] = {64,0}, + [I(161,135)] = {64,0}, + [I(162,135)] = {64,0}, + [I(163,135)] = {64,0}, + [I(164,135)] = {64,0}, + [I(165,135)] = {64,0}, + [I(166,135)] = {64,0}, + [I(167,135)] = {64,0}, + [I(168,135)] = {64,0}, + [I(169,135)] = {64,0}, + [I(170,135)] = {64,0}, + [I(171,135)] = {64,0}, + [I(172,135)] = {64,0}, + [I(173,135)] = {64,0}, + [I(174,135)] = {64,0}, + [I(175,135)] = {64,0}, + [I(176,135)] = {64,0}, + [I(177,135)] = {64,0}, + [I(178,135)] = {64,0}, + [I(179,135)] = {64,0}, + [I(180,135)] = {64,0}, + [I(181,135)] = {64,0}, + [I(182,135)] = {64,0}, + [I(183,135)] = {64,0}, + [I(184,135)] = {64,0}, + [I(185,135)] = {64,0}, + [I(186,135)] = {64,0}, + [I(187,135)] = {64,0}, + [I(188,135)] = {64,0}, + [I(189,135)] = {64,0}, + [I(190,135)] = {64,0}, + [I(191,135)] = {64,0}, + [I(192,135)] = {64,0}, + [I(193,135)] = {64,0}, + [I(194,135)] = {64,0}, + [I(195,135)] = {64,0}, + [I(196,135)] = {64,0}, + [I(197,135)] = {64,0}, + [I(198,135)] = {64,0}, + [I(199,135)] = {64,0}, + [I(200,135)] = {64,0}, + [I(201,135)] = {64,0}, + [I(202,135)] = {64,0}, + [I(203,135)] = {64,0}, + [I(204,135)] = {64,0}, + [I(205,135)] = {64,0}, + [I(206,135)] = {64,0}, + [I(207,135)] = {64,0}, + [I(208,135)] = {64,0}, + [I(209,135)] = {64,0}, + [I(210,135)] = {64,0}, + [I(211,135)] = {64,0}, + [I(212,135)] = {64,0}, + [I(213,135)] = {64,0}, + [I(214,135)] = {64,0}, + [I(215,135)] = {64,0}, + [I(216,135)] = {64,0}, + [I(217,135)] = {64,0}, + [I(218,135)] = {64,0}, + [I(219,135)] = {64,0}, + [I(220,135)] = {64,0}, + [I(221,135)] = {64,0}, + [I(222,135)] = {64,0}, + [I(223,135)] = {64,0}, + [I(224,135)] = {64,0}, + [I(225,135)] = {64,0}, + [I(226,135)] = {64,0}, + [I(227,135)] = {64,0}, + [I(228,135)] = {64,0}, + [I(229,135)] = {64,0}, + [I(230,135)] = {64,0}, + [I(231,135)] = {64,0}, + [I(232,135)] = {64,0}, + [I(233,135)] = {64,0}, + [I(234,135)] = {64,0}, + [I(235,135)] = {64,0}, + [I(236,135)] = {64,0}, + [I(237,135)] = {64,0}, + [I(238,135)] = {64,0}, + [I(239,135)] = {64,0}, + [I(240,135)] = {64,0}, + [I(241,135)] = {64,0}, + [I(242,135)] = {64,0}, + [I(243,135)] = {64,0}, + [I(244,135)] = {64,0}, + [I(245,135)] = {64,0}, + [I(246,135)] = {64,0}, + [I(247,135)] = {64,0}, + [I(248,135)] = {64,0}, + [I(249,135)] = {64,0}, + [I(250,135)] = {64,0}, + [I(251,135)] = {64,0}, + [I(252,135)] = {64,0}, + [I(253,135)] = {64,0}, + [I(254,135)] = {64,0}, + [I(255,135)] = {64,0}, + [I(0,136)] = {64,0}, + [I(1,136)] = {64,0}, + [I(2,136)] = {64,0}, + [I(3,136)] = {64,0}, + [I(4,136)] = {64,0}, + [I(5,136)] = {64,0}, + [I(6,136)] = {64,0}, + [I(7,136)] = {64,0}, + [I(8,136)] = {64,0}, + [I(9,136)] = {64,0}, + [I(10,136)] = {64,0}, + [I(11,136)] = {64,0}, + [I(12,136)] = {64,0}, + [I(13,136)] = {64,0}, + [I(14,136)] = {64,0}, + [I(15,136)] = {64,0}, + [I(16,136)] = {64,0}, + [I(17,136)] = {64,0}, + [I(18,136)] = {64,0}, + [I(19,136)] = {64,0}, + [I(20,136)] = {64,0}, + [I(21,136)] = {64,0}, + [I(22,136)] = {64,0}, + [I(23,136)] = {64,0}, + [I(24,136)] = {64,0}, + [I(25,136)] = {64,0}, + [I(26,136)] = {64,0}, + [I(27,136)] = {64,0}, + [I(28,136)] = {64,0}, + [I(29,136)] = {64,0}, + [I(30,136)] = {64,0}, + [I(31,136)] = {64,0}, + [I(32,136)] = {28,0x53FFFD6}, + [I(33,136)] = {X32,0xFE3FFFD6}, + [I(34,136)] = {X32,0xFE7FFFD6}, + [I(35,136)] = {64,0}, + [I(36,136)] = {64,0}, + [I(37,136)] = {28,0x57FFFD6}, + [I(38,136)] = {30,0x3E3FFFD6}, + [I(39,136)] = {64,0}, + [I(40,136)] = {X32,0xFEBFFFD6}, + [I(41,136)] = {X32,0xFEFFFFD6}, + [I(42,136)] = {30,0x3E7FFFD6}, + [I(43,136)] = {64,0}, + [I(44,136)] = {30,0x3EBFFFD6}, + [I(45,136)] = {28,0x5BFFFD6}, + [I(46,136)] = {28,0x5FFFFD6}, + [I(47,136)] = {28,0x63FFFD6}, + [I(48,136)] = {27,0x3FFFD6}, + [I(49,136)] = {27,0x7FFFD6}, + [I(50,136)] = {27,0xBFFFD6}, + [I(51,136)] = {28,0x67FFFD6}, + [I(52,136)] = {28,0x6BFFFD6}, + [I(53,136)] = {28,0x6FFFFD6}, + [I(54,136)] = {28,0x73FFFD6}, + [I(55,136)] = {28,0x77FFFD6}, + [I(56,136)] = {28,0x7BFFFD6}, + [I(57,136)] = {28,0x7FFFFD6}, + [I(58,136)] = {29,0x173FFFD6}, + [I(59,136)] = {30,0x3EFFFFD6}, + [I(60,136)] = {64,0}, + [I(61,136)] = {28,0x83FFFD6}, + [I(62,136)] = {64,0}, + [I(63,136)] = {X32,0xFF3FFFD6}, + [I(64,136)] = {64,0}, + [I(65,136)] = {28,0x87FFFD6}, + [I(66,136)] = {29,0x177FFFD6}, + [I(67,136)] = {29,0x17BFFFD6}, + [I(68,136)] = {29,0x17FFFFD6}, + [I(69,136)] = {29,0x183FFFD6}, + [I(70,136)] = {29,0x187FFFD6}, + [I(71,136)] = {29,0x18BFFFD6}, + [I(72,136)] = {29,0x18FFFFD6}, + [I(73,136)] = {29,0x193FFFD6}, + [I(74,136)] = {29,0x197FFFD6}, + [I(75,136)] = {29,0x19BFFFD6}, + [I(76,136)] = {29,0x19FFFFD6}, + [I(77,136)] = {29,0x1A3FFFD6}, + [I(78,136)] = {29,0x1A7FFFD6}, + [I(79,136)] = {29,0x1ABFFFD6}, + [I(80,136)] = {29,0x1AFFFFD6}, + [I(81,136)] = {29,0x1B3FFFD6}, + [I(82,136)] = {29,0x1B7FFFD6}, + [I(83,136)] = {29,0x1BBFFFD6}, + [I(84,136)] = {29,0x1BFFFFD6}, + [I(85,136)] = {29,0x1C3FFFD6}, + [I(86,136)] = {29,0x1C7FFFD6}, + [I(87,136)] = {29,0x1CBFFFD6}, + [I(88,136)] = {30,0x3F3FFFD6}, + [I(89,136)] = {29,0x1CFFFFD6}, + [I(90,136)] = {30,0x3F7FFFD6}, + [I(91,136)] = {64,0}, + [I(92,136)] = {64,0}, + [I(93,136)] = {64,0}, + [I(94,136)] = {64,0}, + [I(95,136)] = {28,0x8BFFFD6}, + [I(96,136)] = {64,0}, + [I(97,136)] = {27,0xFFFFD6}, + [I(98,136)] = {28,0x8FFFFD6}, + [I(99,136)] = {27,0x13FFFD6}, + [I(100,136)] = {28,0x93FFFD6}, + [I(101,136)] = {27,0x17FFFD6}, + [I(102,136)] = {28,0x97FFFD6}, + [I(103,136)] = {28,0x9BFFFD6}, + [I(104,136)] = {28,0x9FFFFD6}, + [I(105,136)] = {27,0x1BFFFD6}, + [I(106,136)] = {29,0x1D3FFFD6}, + [I(107,136)] = {29,0x1D7FFFD6}, + [I(108,136)] = {28,0xA3FFFD6}, + [I(109,136)] = {28,0xA7FFFD6}, + [I(110,136)] = {28,0xABFFFD6}, + [I(111,136)] = {27,0x1FFFFD6}, + [I(112,136)] = {28,0xAFFFFD6}, + [I(113,136)] = {29,0x1DBFFFD6}, + [I(114,136)] = {28,0xB3FFFD6}, + [I(115,136)] = {27,0x23FFFD6}, + [I(116,136)] = {27,0x27FFFD6}, + [I(117,136)] = {28,0xB7FFFD6}, + [I(118,136)] = {29,0x1DFFFFD6}, + [I(119,136)] = {29,0x1E3FFFD6}, + [I(120,136)] = {29,0x1E7FFFD6}, + [I(121,136)] = {29,0x1EBFFFD6}, + [I(122,136)] = {29,0x1EFFFFD6}, + [I(123,136)] = {64,0}, + [I(124,136)] = {64,0}, + [I(125,136)] = {64,0}, + [I(126,136)] = {64,0}, + [I(127,136)] = {64,0}, + [I(128,136)] = {64,0}, + [I(129,136)] = {64,0}, + [I(130,136)] = {64,0}, + [I(131,136)] = {64,0}, + [I(132,136)] = {64,0}, + [I(133,136)] = {64,0}, + [I(134,136)] = {64,0}, + [I(135,136)] = {64,0}, + [I(136,136)] = {64,0}, + [I(137,136)] = {64,0}, + [I(138,136)] = {64,0}, + [I(139,136)] = {64,0}, + [I(140,136)] = {64,0}, + [I(141,136)] = {64,0}, + [I(142,136)] = {64,0}, + [I(143,136)] = {64,0}, + [I(144,136)] = {64,0}, + [I(145,136)] = {64,0}, + [I(146,136)] = {64,0}, + [I(147,136)] = {64,0}, + [I(148,136)] = {64,0}, + [I(149,136)] = {64,0}, + [I(150,136)] = {64,0}, + [I(151,136)] = {64,0}, + [I(152,136)] = {64,0}, + [I(153,136)] = {64,0}, + [I(154,136)] = {64,0}, + [I(155,136)] = {64,0}, + [I(156,136)] = {64,0}, + [I(157,136)] = {64,0}, + [I(158,136)] = {64,0}, + [I(159,136)] = {64,0}, + [I(160,136)] = {64,0}, + [I(161,136)] = {64,0}, + [I(162,136)] = {64,0}, + [I(163,136)] = {64,0}, + [I(164,136)] = {64,0}, + [I(165,136)] = {64,0}, + [I(166,136)] = {64,0}, + [I(167,136)] = {64,0}, + [I(168,136)] = {64,0}, + [I(169,136)] = {64,0}, + [I(170,136)] = {64,0}, + [I(171,136)] = {64,0}, + [I(172,136)] = {64,0}, + [I(173,136)] = {64,0}, + [I(174,136)] = {64,0}, + [I(175,136)] = {64,0}, + [I(176,136)] = {64,0}, + [I(177,136)] = {64,0}, + [I(178,136)] = {64,0}, + [I(179,136)] = {64,0}, + [I(180,136)] = {64,0}, + [I(181,136)] = {64,0}, + [I(182,136)] = {64,0}, + [I(183,136)] = {64,0}, + [I(184,136)] = {64,0}, + [I(185,136)] = {64,0}, + [I(186,136)] = {64,0}, + [I(187,136)] = {64,0}, + [I(188,136)] = {64,0}, + [I(189,136)] = {64,0}, + [I(190,136)] = {64,0}, + [I(191,136)] = {64,0}, + [I(192,136)] = {64,0}, + [I(193,136)] = {64,0}, + [I(194,136)] = {64,0}, + [I(195,136)] = {64,0}, + [I(196,136)] = {64,0}, + [I(197,136)] = {64,0}, + [I(198,136)] = {64,0}, + [I(199,136)] = {64,0}, + [I(200,136)] = {64,0}, + [I(201,136)] = {64,0}, + [I(202,136)] = {64,0}, + [I(203,136)] = {64,0}, + [I(204,136)] = {64,0}, + [I(205,136)] = {64,0}, + [I(206,136)] = {64,0}, + [I(207,136)] = {64,0}, + [I(208,136)] = {64,0}, + [I(209,136)] = {64,0}, + [I(210,136)] = {64,0}, + [I(211,136)] = {64,0}, + [I(212,136)] = {64,0}, + [I(213,136)] = {64,0}, + [I(214,136)] = {64,0}, + [I(215,136)] = {64,0}, + [I(216,136)] = {64,0}, + [I(217,136)] = {64,0}, + [I(218,136)] = {64,0}, + [I(219,136)] = {64,0}, + [I(220,136)] = {64,0}, + [I(221,136)] = {64,0}, + [I(222,136)] = {64,0}, + [I(223,136)] = {64,0}, + [I(224,136)] = {64,0}, + [I(225,136)] = {64,0}, + [I(226,136)] = {64,0}, + [I(227,136)] = {64,0}, + [I(228,136)] = {64,0}, + [I(229,136)] = {64,0}, + [I(230,136)] = {64,0}, + [I(231,136)] = {64,0}, + [I(232,136)] = {64,0}, + [I(233,136)] = {64,0}, + [I(234,136)] = {64,0}, + [I(235,136)] = {64,0}, + [I(236,136)] = {64,0}, + [I(237,136)] = {64,0}, + [I(238,136)] = {64,0}, + [I(239,136)] = {64,0}, + [I(240,136)] = {64,0}, + [I(241,136)] = {64,0}, + [I(242,136)] = {64,0}, + [I(243,136)] = {64,0}, + [I(244,136)] = {64,0}, + [I(245,136)] = {64,0}, + [I(246,136)] = {64,0}, + [I(247,136)] = {64,0}, + [I(248,136)] = {64,0}, + [I(249,136)] = {64,0}, + [I(250,136)] = {64,0}, + [I(251,136)] = {64,0}, + [I(252,136)] = {64,0}, + [I(253,136)] = {64,0}, + [I(254,136)] = {64,0}, + [I(255,136)] = {64,0}, + [I(0,137)] = {64,0}, + [I(1,137)] = {64,0}, + [I(2,137)] = {64,0}, + [I(3,137)] = {64,0}, + [I(4,137)] = {64,0}, + [I(5,137)] = {64,0}, + [I(6,137)] = {64,0}, + [I(7,137)] = {64,0}, + [I(8,137)] = {64,0}, + [I(9,137)] = {64,0}, + [I(10,137)] = {64,0}, + [I(11,137)] = {64,0}, + [I(12,137)] = {64,0}, + [I(13,137)] = {64,0}, + [I(14,137)] = {64,0}, + [I(15,137)] = {64,0}, + [I(16,137)] = {64,0}, + [I(17,137)] = {64,0}, + [I(18,137)] = {64,0}, + [I(19,137)] = {64,0}, + [I(20,137)] = {64,0}, + [I(21,137)] = {64,0}, + [I(22,137)] = {64,0}, + [I(23,137)] = {64,0}, + [I(24,137)] = {64,0}, + [I(25,137)] = {64,0}, + [I(26,137)] = {64,0}, + [I(27,137)] = {64,0}, + [I(28,137)] = {64,0}, + [I(29,137)] = {64,0}, + [I(30,137)] = {64,0}, + [I(31,137)] = {64,0}, + [I(32,137)] = {29,0xA7FFFDA}, + [I(33,137)] = {64,0}, + [I(34,137)] = {64,0}, + [I(35,137)] = {64,0}, + [I(36,137)] = {64,0}, + [I(37,137)] = {29,0xAFFFFDA}, + [I(38,137)] = {31,0x7C7FFFDA}, + [I(39,137)] = {64,0}, + [I(40,137)] = {64,0}, + [I(41,137)] = {64,0}, + [I(42,137)] = {31,0x7CFFFFDA}, + [I(43,137)] = {64,0}, + [I(44,137)] = {31,0x7D7FFFDA}, + [I(45,137)] = {29,0xB7FFFDA}, + [I(46,137)] = {29,0xBFFFFDA}, + [I(47,137)] = {29,0xC7FFFDA}, + [I(48,137)] = {28,0x7FFFDA}, + [I(49,137)] = {28,0xFFFFDA}, + [I(50,137)] = {28,0x17FFFDA}, + [I(51,137)] = {29,0xCFFFFDA}, + [I(52,137)] = {29,0xD7FFFDA}, + [I(53,137)] = {29,0xDFFFFDA}, + [I(54,137)] = {29,0xE7FFFDA}, + [I(55,137)] = {29,0xEFFFFDA}, + [I(56,137)] = {29,0xF7FFFDA}, + [I(57,137)] = {29,0xFFFFFDA}, + [I(58,137)] = {30,0x2E7FFFDA}, + [I(59,137)] = {31,0x7DFFFFDA}, + [I(60,137)] = {64,0}, + [I(61,137)] = {29,0x107FFFDA}, + [I(62,137)] = {64,0}, + [I(63,137)] = {64,0}, + [I(64,137)] = {64,0}, + [I(65,137)] = {29,0x10FFFFDA}, + [I(66,137)] = {30,0x2EFFFFDA}, + [I(67,137)] = {30,0x2F7FFFDA}, + [I(68,137)] = {30,0x2FFFFFDA}, + [I(69,137)] = {30,0x307FFFDA}, + [I(70,137)] = {30,0x30FFFFDA}, + [I(71,137)] = {30,0x317FFFDA}, + [I(72,137)] = {30,0x31FFFFDA}, + [I(73,137)] = {30,0x327FFFDA}, + [I(74,137)] = {30,0x32FFFFDA}, + [I(75,137)] = {30,0x337FFFDA}, + [I(76,137)] = {30,0x33FFFFDA}, + [I(77,137)] = {30,0x347FFFDA}, + [I(78,137)] = {30,0x34FFFFDA}, + [I(79,137)] = {30,0x357FFFDA}, + [I(80,137)] = {30,0x35FFFFDA}, + [I(81,137)] = {30,0x367FFFDA}, + [I(82,137)] = {30,0x36FFFFDA}, + [I(83,137)] = {30,0x377FFFDA}, + [I(84,137)] = {30,0x37FFFFDA}, + [I(85,137)] = {30,0x387FFFDA}, + [I(86,137)] = {30,0x38FFFFDA}, + [I(87,137)] = {30,0x397FFFDA}, + [I(88,137)] = {31,0x7E7FFFDA}, + [I(89,137)] = {30,0x39FFFFDA}, + [I(90,137)] = {31,0x7EFFFFDA}, + [I(91,137)] = {64,0}, + [I(92,137)] = {64,0}, + [I(93,137)] = {64,0}, + [I(94,137)] = {64,0}, + [I(95,137)] = {29,0x117FFFDA}, + [I(96,137)] = {64,0}, + [I(97,137)] = {28,0x1FFFFDA}, + [I(98,137)] = {29,0x11FFFFDA}, + [I(99,137)] = {28,0x27FFFDA}, + [I(100,137)] = {29,0x127FFFDA}, + [I(101,137)] = {28,0x2FFFFDA}, + [I(102,137)] = {29,0x12FFFFDA}, + [I(103,137)] = {29,0x137FFFDA}, + [I(104,137)] = {29,0x13FFFFDA}, + [I(105,137)] = {28,0x37FFFDA}, + [I(106,137)] = {30,0x3A7FFFDA}, + [I(107,137)] = {30,0x3AFFFFDA}, + [I(108,137)] = {29,0x147FFFDA}, + [I(109,137)] = {29,0x14FFFFDA}, + [I(110,137)] = {29,0x157FFFDA}, + [I(111,137)] = {28,0x3FFFFDA}, + [I(112,137)] = {29,0x15FFFFDA}, + [I(113,137)] = {30,0x3B7FFFDA}, + [I(114,137)] = {29,0x167FFFDA}, + [I(115,137)] = {28,0x47FFFDA}, + [I(116,137)] = {28,0x4FFFFDA}, + [I(117,137)] = {29,0x16FFFFDA}, + [I(118,137)] = {30,0x3BFFFFDA}, + [I(119,137)] = {30,0x3C7FFFDA}, + [I(120,137)] = {30,0x3CFFFFDA}, + [I(121,137)] = {30,0x3D7FFFDA}, + [I(122,137)] = {30,0x3DFFFFDA}, + [I(123,137)] = {64,0}, + [I(124,137)] = {64,0}, + [I(125,137)] = {64,0}, + [I(126,137)] = {64,0}, + [I(127,137)] = {64,0}, + [I(128,137)] = {64,0}, + [I(129,137)] = {64,0}, + [I(130,137)] = {64,0}, + [I(131,137)] = {64,0}, + [I(132,137)] = {64,0}, + [I(133,137)] = {64,0}, + [I(134,137)] = {64,0}, + [I(135,137)] = {64,0}, + [I(136,137)] = {64,0}, + [I(137,137)] = {64,0}, + [I(138,137)] = {64,0}, + [I(139,137)] = {64,0}, + [I(140,137)] = {64,0}, + [I(141,137)] = {64,0}, + [I(142,137)] = {64,0}, + [I(143,137)] = {64,0}, + [I(144,137)] = {64,0}, + [I(145,137)] = {64,0}, + [I(146,137)] = {64,0}, + [I(147,137)] = {64,0}, + [I(148,137)] = {64,0}, + [I(149,137)] = {64,0}, + [I(150,137)] = {64,0}, + [I(151,137)] = {64,0}, + [I(152,137)] = {64,0}, + [I(153,137)] = {64,0}, + [I(154,137)] = {64,0}, + [I(155,137)] = {64,0}, + [I(156,137)] = {64,0}, + [I(157,137)] = {64,0}, + [I(158,137)] = {64,0}, + [I(159,137)] = {64,0}, + [I(160,137)] = {64,0}, + [I(161,137)] = {64,0}, + [I(162,137)] = {64,0}, + [I(163,137)] = {64,0}, + [I(164,137)] = {64,0}, + [I(165,137)] = {64,0}, + [I(166,137)] = {64,0}, + [I(167,137)] = {64,0}, + [I(168,137)] = {64,0}, + [I(169,137)] = {64,0}, + [I(170,137)] = {64,0}, + [I(171,137)] = {64,0}, + [I(172,137)] = {64,0}, + [I(173,137)] = {64,0}, + [I(174,137)] = {64,0}, + [I(175,137)] = {64,0}, + [I(176,137)] = {64,0}, + [I(177,137)] = {64,0}, + [I(178,137)] = {64,0}, + [I(179,137)] = {64,0}, + [I(180,137)] = {64,0}, + [I(181,137)] = {64,0}, + [I(182,137)] = {64,0}, + [I(183,137)] = {64,0}, + [I(184,137)] = {64,0}, + [I(185,137)] = {64,0}, + [I(186,137)] = {64,0}, + [I(187,137)] = {64,0}, + [I(188,137)] = {64,0}, + [I(189,137)] = {64,0}, + [I(190,137)] = {64,0}, + [I(191,137)] = {64,0}, + [I(192,137)] = {64,0}, + [I(193,137)] = {64,0}, + [I(194,137)] = {64,0}, + [I(195,137)] = {64,0}, + [I(196,137)] = {64,0}, + [I(197,137)] = {64,0}, + [I(198,137)] = {64,0}, + [I(199,137)] = {64,0}, + [I(200,137)] = {64,0}, + [I(201,137)] = {64,0}, + [I(202,137)] = {64,0}, + [I(203,137)] = {64,0}, + [I(204,137)] = {64,0}, + [I(205,137)] = {64,0}, + [I(206,137)] = {64,0}, + [I(207,137)] = {64,0}, + [I(208,137)] = {64,0}, + [I(209,137)] = {64,0}, + [I(210,137)] = {64,0}, + [I(211,137)] = {64,0}, + [I(212,137)] = {64,0}, + [I(213,137)] = {64,0}, + [I(214,137)] = {64,0}, + [I(215,137)] = {64,0}, + [I(216,137)] = {64,0}, + [I(217,137)] = {64,0}, + [I(218,137)] = {64,0}, + [I(219,137)] = {64,0}, + [I(220,137)] = {64,0}, + [I(221,137)] = {64,0}, + [I(222,137)] = {64,0}, + [I(223,137)] = {64,0}, + [I(224,137)] = {64,0}, + [I(225,137)] = {64,0}, + [I(226,137)] = {64,0}, + [I(227,137)] = {64,0}, + [I(228,137)] = {64,0}, + [I(229,137)] = {64,0}, + [I(230,137)] = {64,0}, + [I(231,137)] = {64,0}, + [I(232,137)] = {64,0}, + [I(233,137)] = {64,0}, + [I(234,137)] = {64,0}, + [I(235,137)] = {64,0}, + [I(236,137)] = {64,0}, + [I(237,137)] = {64,0}, + [I(238,137)] = {64,0}, + [I(239,137)] = {64,0}, + [I(240,137)] = {64,0}, + [I(241,137)] = {64,0}, + [I(242,137)] = {64,0}, + [I(243,137)] = {64,0}, + [I(244,137)] = {64,0}, + [I(245,137)] = {64,0}, + [I(246,137)] = {64,0}, + [I(247,137)] = {64,0}, + [I(248,137)] = {64,0}, + [I(249,137)] = {64,0}, + [I(250,137)] = {64,0}, + [I(251,137)] = {64,0}, + [I(252,137)] = {64,0}, + [I(253,137)] = {64,0}, + [I(254,137)] = {64,0}, + [I(255,137)] = {64,0}, + [I(0,138)] = {64,0}, + [I(1,138)] = {64,0}, + [I(2,138)] = {64,0}, + [I(3,138)] = {64,0}, + [I(4,138)] = {64,0}, + [I(5,138)] = {64,0}, + [I(6,138)] = {64,0}, + [I(7,138)] = {64,0}, + [I(8,138)] = {64,0}, + [I(9,138)] = {64,0}, + [I(10,138)] = {64,0}, + [I(11,138)] = {64,0}, + [I(12,138)] = {64,0}, + [I(13,138)] = {64,0}, + [I(14,138)] = {64,0}, + [I(15,138)] = {64,0}, + [I(16,138)] = {64,0}, + [I(17,138)] = {64,0}, + [I(18,138)] = {64,0}, + [I(19,138)] = {64,0}, + [I(20,138)] = {64,0}, + [I(21,138)] = {64,0}, + [I(22,138)] = {64,0}, + [I(23,138)] = {64,0}, + [I(24,138)] = {64,0}, + [I(25,138)] = {64,0}, + [I(26,138)] = {64,0}, + [I(27,138)] = {64,0}, + [I(28,138)] = {64,0}, + [I(29,138)] = {64,0}, + [I(30,138)] = {64,0}, + [I(31,138)] = {64,0}, + [I(32,138)] = {29,0xA7FFFDB}, + [I(33,138)] = {64,0}, + [I(34,138)] = {64,0}, + [I(35,138)] = {64,0}, + [I(36,138)] = {64,0}, + [I(37,138)] = {29,0xAFFFFDB}, + [I(38,138)] = {31,0x7C7FFFDB}, + [I(39,138)] = {64,0}, + [I(40,138)] = {64,0}, + [I(41,138)] = {64,0}, + [I(42,138)] = {31,0x7CFFFFDB}, + [I(43,138)] = {64,0}, + [I(44,138)] = {31,0x7D7FFFDB}, + [I(45,138)] = {29,0xB7FFFDB}, + [I(46,138)] = {29,0xBFFFFDB}, + [I(47,138)] = {29,0xC7FFFDB}, + [I(48,138)] = {28,0x7FFFDB}, + [I(49,138)] = {28,0xFFFFDB}, + [I(50,138)] = {28,0x17FFFDB}, + [I(51,138)] = {29,0xCFFFFDB}, + [I(52,138)] = {29,0xD7FFFDB}, + [I(53,138)] = {29,0xDFFFFDB}, + [I(54,138)] = {29,0xE7FFFDB}, + [I(55,138)] = {29,0xEFFFFDB}, + [I(56,138)] = {29,0xF7FFFDB}, + [I(57,138)] = {29,0xFFFFFDB}, + [I(58,138)] = {30,0x2E7FFFDB}, + [I(59,138)] = {31,0x7DFFFFDB}, + [I(60,138)] = {64,0}, + [I(61,138)] = {29,0x107FFFDB}, + [I(62,138)] = {64,0}, + [I(63,138)] = {64,0}, + [I(64,138)] = {64,0}, + [I(65,138)] = {29,0x10FFFFDB}, + [I(66,138)] = {30,0x2EFFFFDB}, + [I(67,138)] = {30,0x2F7FFFDB}, + [I(68,138)] = {30,0x2FFFFFDB}, + [I(69,138)] = {30,0x307FFFDB}, + [I(70,138)] = {30,0x30FFFFDB}, + [I(71,138)] = {30,0x317FFFDB}, + [I(72,138)] = {30,0x31FFFFDB}, + [I(73,138)] = {30,0x327FFFDB}, + [I(74,138)] = {30,0x32FFFFDB}, + [I(75,138)] = {30,0x337FFFDB}, + [I(76,138)] = {30,0x33FFFFDB}, + [I(77,138)] = {30,0x347FFFDB}, + [I(78,138)] = {30,0x34FFFFDB}, + [I(79,138)] = {30,0x357FFFDB}, + [I(80,138)] = {30,0x35FFFFDB}, + [I(81,138)] = {30,0x367FFFDB}, + [I(82,138)] = {30,0x36FFFFDB}, + [I(83,138)] = {30,0x377FFFDB}, + [I(84,138)] = {30,0x37FFFFDB}, + [I(85,138)] = {30,0x387FFFDB}, + [I(86,138)] = {30,0x38FFFFDB}, + [I(87,138)] = {30,0x397FFFDB}, + [I(88,138)] = {31,0x7E7FFFDB}, + [I(89,138)] = {30,0x39FFFFDB}, + [I(90,138)] = {31,0x7EFFFFDB}, + [I(91,138)] = {64,0}, + [I(92,138)] = {64,0}, + [I(93,138)] = {64,0}, + [I(94,138)] = {64,0}, + [I(95,138)] = {29,0x117FFFDB}, + [I(96,138)] = {64,0}, + [I(97,138)] = {28,0x1FFFFDB}, + [I(98,138)] = {29,0x11FFFFDB}, + [I(99,138)] = {28,0x27FFFDB}, + [I(100,138)] = {29,0x127FFFDB}, + [I(101,138)] = {28,0x2FFFFDB}, + [I(102,138)] = {29,0x12FFFFDB}, + [I(103,138)] = {29,0x137FFFDB}, + [I(104,138)] = {29,0x13FFFFDB}, + [I(105,138)] = {28,0x37FFFDB}, + [I(106,138)] = {30,0x3A7FFFDB}, + [I(107,138)] = {30,0x3AFFFFDB}, + [I(108,138)] = {29,0x147FFFDB}, + [I(109,138)] = {29,0x14FFFFDB}, + [I(110,138)] = {29,0x157FFFDB}, + [I(111,138)] = {28,0x3FFFFDB}, + [I(112,138)] = {29,0x15FFFFDB}, + [I(113,138)] = {30,0x3B7FFFDB}, + [I(114,138)] = {29,0x167FFFDB}, + [I(115,138)] = {28,0x47FFFDB}, + [I(116,138)] = {28,0x4FFFFDB}, + [I(117,138)] = {29,0x16FFFFDB}, + [I(118,138)] = {30,0x3BFFFFDB}, + [I(119,138)] = {30,0x3C7FFFDB}, + [I(120,138)] = {30,0x3CFFFFDB}, + [I(121,138)] = {30,0x3D7FFFDB}, + [I(122,138)] = {30,0x3DFFFFDB}, + [I(123,138)] = {64,0}, + [I(124,138)] = {64,0}, + [I(125,138)] = {64,0}, + [I(126,138)] = {64,0}, + [I(127,138)] = {64,0}, + [I(128,138)] = {64,0}, + [I(129,138)] = {64,0}, + [I(130,138)] = {64,0}, + [I(131,138)] = {64,0}, + [I(132,138)] = {64,0}, + [I(133,138)] = {64,0}, + [I(134,138)] = {64,0}, + [I(135,138)] = {64,0}, + [I(136,138)] = {64,0}, + [I(137,138)] = {64,0}, + [I(138,138)] = {64,0}, + [I(139,138)] = {64,0}, + [I(140,138)] = {64,0}, + [I(141,138)] = {64,0}, + [I(142,138)] = {64,0}, + [I(143,138)] = {64,0}, + [I(144,138)] = {64,0}, + [I(145,138)] = {64,0}, + [I(146,138)] = {64,0}, + [I(147,138)] = {64,0}, + [I(148,138)] = {64,0}, + [I(149,138)] = {64,0}, + [I(150,138)] = {64,0}, + [I(151,138)] = {64,0}, + [I(152,138)] = {64,0}, + [I(153,138)] = {64,0}, + [I(154,138)] = {64,0}, + [I(155,138)] = {64,0}, + [I(156,138)] = {64,0}, + [I(157,138)] = {64,0}, + [I(158,138)] = {64,0}, + [I(159,138)] = {64,0}, + [I(160,138)] = {64,0}, + [I(161,138)] = {64,0}, + [I(162,138)] = {64,0}, + [I(163,138)] = {64,0}, + [I(164,138)] = {64,0}, + [I(165,138)] = {64,0}, + [I(166,138)] = {64,0}, + [I(167,138)] = {64,0}, + [I(168,138)] = {64,0}, + [I(169,138)] = {64,0}, + [I(170,138)] = {64,0}, + [I(171,138)] = {64,0}, + [I(172,138)] = {64,0}, + [I(173,138)] = {64,0}, + [I(174,138)] = {64,0}, + [I(175,138)] = {64,0}, + [I(176,138)] = {64,0}, + [I(177,138)] = {64,0}, + [I(178,138)] = {64,0}, + [I(179,138)] = {64,0}, + [I(180,138)] = {64,0}, + [I(181,138)] = {64,0}, + [I(182,138)] = {64,0}, + [I(183,138)] = {64,0}, + [I(184,138)] = {64,0}, + [I(185,138)] = {64,0}, + [I(186,138)] = {64,0}, + [I(187,138)] = {64,0}, + [I(188,138)] = {64,0}, + [I(189,138)] = {64,0}, + [I(190,138)] = {64,0}, + [I(191,138)] = {64,0}, + [I(192,138)] = {64,0}, + [I(193,138)] = {64,0}, + [I(194,138)] = {64,0}, + [I(195,138)] = {64,0}, + [I(196,138)] = {64,0}, + [I(197,138)] = {64,0}, + [I(198,138)] = {64,0}, + [I(199,138)] = {64,0}, + [I(200,138)] = {64,0}, + [I(201,138)] = {64,0}, + [I(202,138)] = {64,0}, + [I(203,138)] = {64,0}, + [I(204,138)] = {64,0}, + [I(205,138)] = {64,0}, + [I(206,138)] = {64,0}, + [I(207,138)] = {64,0}, + [I(208,138)] = {64,0}, + [I(209,138)] = {64,0}, + [I(210,138)] = {64,0}, + [I(211,138)] = {64,0}, + [I(212,138)] = {64,0}, + [I(213,138)] = {64,0}, + [I(214,138)] = {64,0}, + [I(215,138)] = {64,0}, + [I(216,138)] = {64,0}, + [I(217,138)] = {64,0}, + [I(218,138)] = {64,0}, + [I(219,138)] = {64,0}, + [I(220,138)] = {64,0}, + [I(221,138)] = {64,0}, + [I(222,138)] = {64,0}, + [I(223,138)] = {64,0}, + [I(224,138)] = {64,0}, + [I(225,138)] = {64,0}, + [I(226,138)] = {64,0}, + [I(227,138)] = {64,0}, + [I(228,138)] = {64,0}, + [I(229,138)] = {64,0}, + [I(230,138)] = {64,0}, + [I(231,138)] = {64,0}, + [I(232,138)] = {64,0}, + [I(233,138)] = {64,0}, + [I(234,138)] = {64,0}, + [I(235,138)] = {64,0}, + [I(236,138)] = {64,0}, + [I(237,138)] = {64,0}, + [I(238,138)] = {64,0}, + [I(239,138)] = {64,0}, + [I(240,138)] = {64,0}, + [I(241,138)] = {64,0}, + [I(242,138)] = {64,0}, + [I(243,138)] = {64,0}, + [I(244,138)] = {64,0}, + [I(245,138)] = {64,0}, + [I(246,138)] = {64,0}, + [I(247,138)] = {64,0}, + [I(248,138)] = {64,0}, + [I(249,138)] = {64,0}, + [I(250,138)] = {64,0}, + [I(251,138)] = {64,0}, + [I(252,138)] = {64,0}, + [I(253,138)] = {64,0}, + [I(254,138)] = {64,0}, + [I(255,138)] = {64,0}, + [I(0,139)] = {64,0}, + [I(1,139)] = {64,0}, + [I(2,139)] = {64,0}, + [I(3,139)] = {64,0}, + [I(4,139)] = {64,0}, + [I(5,139)] = {64,0}, + [I(6,139)] = {64,0}, + [I(7,139)] = {64,0}, + [I(8,139)] = {64,0}, + [I(9,139)] = {64,0}, + [I(10,139)] = {64,0}, + [I(11,139)] = {64,0}, + [I(12,139)] = {64,0}, + [I(13,139)] = {64,0}, + [I(14,139)] = {64,0}, + [I(15,139)] = {64,0}, + [I(16,139)] = {64,0}, + [I(17,139)] = {64,0}, + [I(18,139)] = {64,0}, + [I(19,139)] = {64,0}, + [I(20,139)] = {64,0}, + [I(21,139)] = {64,0}, + [I(22,139)] = {64,0}, + [I(23,139)] = {64,0}, + [I(24,139)] = {64,0}, + [I(25,139)] = {64,0}, + [I(26,139)] = {64,0}, + [I(27,139)] = {64,0}, + [I(28,139)] = {64,0}, + [I(29,139)] = {64,0}, + [I(30,139)] = {64,0}, + [I(31,139)] = {64,0}, + [I(32,139)] = {29,0xA7FFFDC}, + [I(33,139)] = {64,0}, + [I(34,139)] = {64,0}, + [I(35,139)] = {64,0}, + [I(36,139)] = {64,0}, + [I(37,139)] = {29,0xAFFFFDC}, + [I(38,139)] = {31,0x7C7FFFDC}, + [I(39,139)] = {64,0}, + [I(40,139)] = {64,0}, + [I(41,139)] = {64,0}, + [I(42,139)] = {31,0x7CFFFFDC}, + [I(43,139)] = {64,0}, + [I(44,139)] = {31,0x7D7FFFDC}, + [I(45,139)] = {29,0xB7FFFDC}, + [I(46,139)] = {29,0xBFFFFDC}, + [I(47,139)] = {29,0xC7FFFDC}, + [I(48,139)] = {28,0x7FFFDC}, + [I(49,139)] = {28,0xFFFFDC}, + [I(50,139)] = {28,0x17FFFDC}, + [I(51,139)] = {29,0xCFFFFDC}, + [I(52,139)] = {29,0xD7FFFDC}, + [I(53,139)] = {29,0xDFFFFDC}, + [I(54,139)] = {29,0xE7FFFDC}, + [I(55,139)] = {29,0xEFFFFDC}, + [I(56,139)] = {29,0xF7FFFDC}, + [I(57,139)] = {29,0xFFFFFDC}, + [I(58,139)] = {30,0x2E7FFFDC}, + [I(59,139)] = {31,0x7DFFFFDC}, + [I(60,139)] = {64,0}, + [I(61,139)] = {29,0x107FFFDC}, + [I(62,139)] = {64,0}, + [I(63,139)] = {64,0}, + [I(64,139)] = {64,0}, + [I(65,139)] = {29,0x10FFFFDC}, + [I(66,139)] = {30,0x2EFFFFDC}, + [I(67,139)] = {30,0x2F7FFFDC}, + [I(68,139)] = {30,0x2FFFFFDC}, + [I(69,139)] = {30,0x307FFFDC}, + [I(70,139)] = {30,0x30FFFFDC}, + [I(71,139)] = {30,0x317FFFDC}, + [I(72,139)] = {30,0x31FFFFDC}, + [I(73,139)] = {30,0x327FFFDC}, + [I(74,139)] = {30,0x32FFFFDC}, + [I(75,139)] = {30,0x337FFFDC}, + [I(76,139)] = {30,0x33FFFFDC}, + [I(77,139)] = {30,0x347FFFDC}, + [I(78,139)] = {30,0x34FFFFDC}, + [I(79,139)] = {30,0x357FFFDC}, + [I(80,139)] = {30,0x35FFFFDC}, + [I(81,139)] = {30,0x367FFFDC}, + [I(82,139)] = {30,0x36FFFFDC}, + [I(83,139)] = {30,0x377FFFDC}, + [I(84,139)] = {30,0x37FFFFDC}, + [I(85,139)] = {30,0x387FFFDC}, + [I(86,139)] = {30,0x38FFFFDC}, + [I(87,139)] = {30,0x397FFFDC}, + [I(88,139)] = {31,0x7E7FFFDC}, + [I(89,139)] = {30,0x39FFFFDC}, + [I(90,139)] = {31,0x7EFFFFDC}, + [I(91,139)] = {64,0}, + [I(92,139)] = {64,0}, + [I(93,139)] = {64,0}, + [I(94,139)] = {64,0}, + [I(95,139)] = {29,0x117FFFDC}, + [I(96,139)] = {64,0}, + [I(97,139)] = {28,0x1FFFFDC}, + [I(98,139)] = {29,0x11FFFFDC}, + [I(99,139)] = {28,0x27FFFDC}, + [I(100,139)] = {29,0x127FFFDC}, + [I(101,139)] = {28,0x2FFFFDC}, + [I(102,139)] = {29,0x12FFFFDC}, + [I(103,139)] = {29,0x137FFFDC}, + [I(104,139)] = {29,0x13FFFFDC}, + [I(105,139)] = {28,0x37FFFDC}, + [I(106,139)] = {30,0x3A7FFFDC}, + [I(107,139)] = {30,0x3AFFFFDC}, + [I(108,139)] = {29,0x147FFFDC}, + [I(109,139)] = {29,0x14FFFFDC}, + [I(110,139)] = {29,0x157FFFDC}, + [I(111,139)] = {28,0x3FFFFDC}, + [I(112,139)] = {29,0x15FFFFDC}, + [I(113,139)] = {30,0x3B7FFFDC}, + [I(114,139)] = {29,0x167FFFDC}, + [I(115,139)] = {28,0x47FFFDC}, + [I(116,139)] = {28,0x4FFFFDC}, + [I(117,139)] = {29,0x16FFFFDC}, + [I(118,139)] = {30,0x3BFFFFDC}, + [I(119,139)] = {30,0x3C7FFFDC}, + [I(120,139)] = {30,0x3CFFFFDC}, + [I(121,139)] = {30,0x3D7FFFDC}, + [I(122,139)] = {30,0x3DFFFFDC}, + [I(123,139)] = {64,0}, + [I(124,139)] = {64,0}, + [I(125,139)] = {64,0}, + [I(126,139)] = {64,0}, + [I(127,139)] = {64,0}, + [I(128,139)] = {64,0}, + [I(129,139)] = {64,0}, + [I(130,139)] = {64,0}, + [I(131,139)] = {64,0}, + [I(132,139)] = {64,0}, + [I(133,139)] = {64,0}, + [I(134,139)] = {64,0}, + [I(135,139)] = {64,0}, + [I(136,139)] = {64,0}, + [I(137,139)] = {64,0}, + [I(138,139)] = {64,0}, + [I(139,139)] = {64,0}, + [I(140,139)] = {64,0}, + [I(141,139)] = {64,0}, + [I(142,139)] = {64,0}, + [I(143,139)] = {64,0}, + [I(144,139)] = {64,0}, + [I(145,139)] = {64,0}, + [I(146,139)] = {64,0}, + [I(147,139)] = {64,0}, + [I(148,139)] = {64,0}, + [I(149,139)] = {64,0}, + [I(150,139)] = {64,0}, + [I(151,139)] = {64,0}, + [I(152,139)] = {64,0}, + [I(153,139)] = {64,0}, + [I(154,139)] = {64,0}, + [I(155,139)] = {64,0}, + [I(156,139)] = {64,0}, + [I(157,139)] = {64,0}, + [I(158,139)] = {64,0}, + [I(159,139)] = {64,0}, + [I(160,139)] = {64,0}, + [I(161,139)] = {64,0}, + [I(162,139)] = {64,0}, + [I(163,139)] = {64,0}, + [I(164,139)] = {64,0}, + [I(165,139)] = {64,0}, + [I(166,139)] = {64,0}, + [I(167,139)] = {64,0}, + [I(168,139)] = {64,0}, + [I(169,139)] = {64,0}, + [I(170,139)] = {64,0}, + [I(171,139)] = {64,0}, + [I(172,139)] = {64,0}, + [I(173,139)] = {64,0}, + [I(174,139)] = {64,0}, + [I(175,139)] = {64,0}, + [I(176,139)] = {64,0}, + [I(177,139)] = {64,0}, + [I(178,139)] = {64,0}, + [I(179,139)] = {64,0}, + [I(180,139)] = {64,0}, + [I(181,139)] = {64,0}, + [I(182,139)] = {64,0}, + [I(183,139)] = {64,0}, + [I(184,139)] = {64,0}, + [I(185,139)] = {64,0}, + [I(186,139)] = {64,0}, + [I(187,139)] = {64,0}, + [I(188,139)] = {64,0}, + [I(189,139)] = {64,0}, + [I(190,139)] = {64,0}, + [I(191,139)] = {64,0}, + [I(192,139)] = {64,0}, + [I(193,139)] = {64,0}, + [I(194,139)] = {64,0}, + [I(195,139)] = {64,0}, + [I(196,139)] = {64,0}, + [I(197,139)] = {64,0}, + [I(198,139)] = {64,0}, + [I(199,139)] = {64,0}, + [I(200,139)] = {64,0}, + [I(201,139)] = {64,0}, + [I(202,139)] = {64,0}, + [I(203,139)] = {64,0}, + [I(204,139)] = {64,0}, + [I(205,139)] = {64,0}, + [I(206,139)] = {64,0}, + [I(207,139)] = {64,0}, + [I(208,139)] = {64,0}, + [I(209,139)] = {64,0}, + [I(210,139)] = {64,0}, + [I(211,139)] = {64,0}, + [I(212,139)] = {64,0}, + [I(213,139)] = {64,0}, + [I(214,139)] = {64,0}, + [I(215,139)] = {64,0}, + [I(216,139)] = {64,0}, + [I(217,139)] = {64,0}, + [I(218,139)] = {64,0}, + [I(219,139)] = {64,0}, + [I(220,139)] = {64,0}, + [I(221,139)] = {64,0}, + [I(222,139)] = {64,0}, + [I(223,139)] = {64,0}, + [I(224,139)] = {64,0}, + [I(225,139)] = {64,0}, + [I(226,139)] = {64,0}, + [I(227,139)] = {64,0}, + [I(228,139)] = {64,0}, + [I(229,139)] = {64,0}, + [I(230,139)] = {64,0}, + [I(231,139)] = {64,0}, + [I(232,139)] = {64,0}, + [I(233,139)] = {64,0}, + [I(234,139)] = {64,0}, + [I(235,139)] = {64,0}, + [I(236,139)] = {64,0}, + [I(237,139)] = {64,0}, + [I(238,139)] = {64,0}, + [I(239,139)] = {64,0}, + [I(240,139)] = {64,0}, + [I(241,139)] = {64,0}, + [I(242,139)] = {64,0}, + [I(243,139)] = {64,0}, + [I(244,139)] = {64,0}, + [I(245,139)] = {64,0}, + [I(246,139)] = {64,0}, + [I(247,139)] = {64,0}, + [I(248,139)] = {64,0}, + [I(249,139)] = {64,0}, + [I(250,139)] = {64,0}, + [I(251,139)] = {64,0}, + [I(252,139)] = {64,0}, + [I(253,139)] = {64,0}, + [I(254,139)] = {64,0}, + [I(255,139)] = {64,0}, + [I(0,140)] = {64,0}, + [I(1,140)] = {64,0}, + [I(2,140)] = {64,0}, + [I(3,140)] = {64,0}, + [I(4,140)] = {64,0}, + [I(5,140)] = {64,0}, + [I(6,140)] = {64,0}, + [I(7,140)] = {64,0}, + [I(8,140)] = {64,0}, + [I(9,140)] = {64,0}, + [I(10,140)] = {64,0}, + [I(11,140)] = {64,0}, + [I(12,140)] = {64,0}, + [I(13,140)] = {64,0}, + [I(14,140)] = {64,0}, + [I(15,140)] = {64,0}, + [I(16,140)] = {64,0}, + [I(17,140)] = {64,0}, + [I(18,140)] = {64,0}, + [I(19,140)] = {64,0}, + [I(20,140)] = {64,0}, + [I(21,140)] = {64,0}, + [I(22,140)] = {64,0}, + [I(23,140)] = {64,0}, + [I(24,140)] = {64,0}, + [I(25,140)] = {64,0}, + [I(26,140)] = {64,0}, + [I(27,140)] = {64,0}, + [I(28,140)] = {64,0}, + [I(29,140)] = {64,0}, + [I(30,140)] = {64,0}, + [I(31,140)] = {64,0}, + [I(32,140)] = {29,0xA7FFFDD}, + [I(33,140)] = {64,0}, + [I(34,140)] = {64,0}, + [I(35,140)] = {64,0}, + [I(36,140)] = {64,0}, + [I(37,140)] = {29,0xAFFFFDD}, + [I(38,140)] = {31,0x7C7FFFDD}, + [I(39,140)] = {64,0}, + [I(40,140)] = {64,0}, + [I(41,140)] = {64,0}, + [I(42,140)] = {31,0x7CFFFFDD}, + [I(43,140)] = {64,0}, + [I(44,140)] = {31,0x7D7FFFDD}, + [I(45,140)] = {29,0xB7FFFDD}, + [I(46,140)] = {29,0xBFFFFDD}, + [I(47,140)] = {29,0xC7FFFDD}, + [I(48,140)] = {28,0x7FFFDD}, + [I(49,140)] = {28,0xFFFFDD}, + [I(50,140)] = {28,0x17FFFDD}, + [I(51,140)] = {29,0xCFFFFDD}, + [I(52,140)] = {29,0xD7FFFDD}, + [I(53,140)] = {29,0xDFFFFDD}, + [I(54,140)] = {29,0xE7FFFDD}, + [I(55,140)] = {29,0xEFFFFDD}, + [I(56,140)] = {29,0xF7FFFDD}, + [I(57,140)] = {29,0xFFFFFDD}, + [I(58,140)] = {30,0x2E7FFFDD}, + [I(59,140)] = {31,0x7DFFFFDD}, + [I(60,140)] = {64,0}, + [I(61,140)] = {29,0x107FFFDD}, + [I(62,140)] = {64,0}, + [I(63,140)] = {64,0}, + [I(64,140)] = {64,0}, + [I(65,140)] = {29,0x10FFFFDD}, + [I(66,140)] = {30,0x2EFFFFDD}, + [I(67,140)] = {30,0x2F7FFFDD}, + [I(68,140)] = {30,0x2FFFFFDD}, + [I(69,140)] = {30,0x307FFFDD}, + [I(70,140)] = {30,0x30FFFFDD}, + [I(71,140)] = {30,0x317FFFDD}, + [I(72,140)] = {30,0x31FFFFDD}, + [I(73,140)] = {30,0x327FFFDD}, + [I(74,140)] = {30,0x32FFFFDD}, + [I(75,140)] = {30,0x337FFFDD}, + [I(76,140)] = {30,0x33FFFFDD}, + [I(77,140)] = {30,0x347FFFDD}, + [I(78,140)] = {30,0x34FFFFDD}, + [I(79,140)] = {30,0x357FFFDD}, + [I(80,140)] = {30,0x35FFFFDD}, + [I(81,140)] = {30,0x367FFFDD}, + [I(82,140)] = {30,0x36FFFFDD}, + [I(83,140)] = {30,0x377FFFDD}, + [I(84,140)] = {30,0x37FFFFDD}, + [I(85,140)] = {30,0x387FFFDD}, + [I(86,140)] = {30,0x38FFFFDD}, + [I(87,140)] = {30,0x397FFFDD}, + [I(88,140)] = {31,0x7E7FFFDD}, + [I(89,140)] = {30,0x39FFFFDD}, + [I(90,140)] = {31,0x7EFFFFDD}, + [I(91,140)] = {64,0}, + [I(92,140)] = {64,0}, + [I(93,140)] = {64,0}, + [I(94,140)] = {64,0}, + [I(95,140)] = {29,0x117FFFDD}, + [I(96,140)] = {64,0}, + [I(97,140)] = {28,0x1FFFFDD}, + [I(98,140)] = {29,0x11FFFFDD}, + [I(99,140)] = {28,0x27FFFDD}, + [I(100,140)] = {29,0x127FFFDD}, + [I(101,140)] = {28,0x2FFFFDD}, + [I(102,140)] = {29,0x12FFFFDD}, + [I(103,140)] = {29,0x137FFFDD}, + [I(104,140)] = {29,0x13FFFFDD}, + [I(105,140)] = {28,0x37FFFDD}, + [I(106,140)] = {30,0x3A7FFFDD}, + [I(107,140)] = {30,0x3AFFFFDD}, + [I(108,140)] = {29,0x147FFFDD}, + [I(109,140)] = {29,0x14FFFFDD}, + [I(110,140)] = {29,0x157FFFDD}, + [I(111,140)] = {28,0x3FFFFDD}, + [I(112,140)] = {29,0x15FFFFDD}, + [I(113,140)] = {30,0x3B7FFFDD}, + [I(114,140)] = {29,0x167FFFDD}, + [I(115,140)] = {28,0x47FFFDD}, + [I(116,140)] = {28,0x4FFFFDD}, + [I(117,140)] = {29,0x16FFFFDD}, + [I(118,140)] = {30,0x3BFFFFDD}, + [I(119,140)] = {30,0x3C7FFFDD}, + [I(120,140)] = {30,0x3CFFFFDD}, + [I(121,140)] = {30,0x3D7FFFDD}, + [I(122,140)] = {30,0x3DFFFFDD}, + [I(123,140)] = {64,0}, + [I(124,140)] = {64,0}, + [I(125,140)] = {64,0}, + [I(126,140)] = {64,0}, + [I(127,140)] = {64,0}, + [I(128,140)] = {64,0}, + [I(129,140)] = {64,0}, + [I(130,140)] = {64,0}, + [I(131,140)] = {64,0}, + [I(132,140)] = {64,0}, + [I(133,140)] = {64,0}, + [I(134,140)] = {64,0}, + [I(135,140)] = {64,0}, + [I(136,140)] = {64,0}, + [I(137,140)] = {64,0}, + [I(138,140)] = {64,0}, + [I(139,140)] = {64,0}, + [I(140,140)] = {64,0}, + [I(141,140)] = {64,0}, + [I(142,140)] = {64,0}, + [I(143,140)] = {64,0}, + [I(144,140)] = {64,0}, + [I(145,140)] = {64,0}, + [I(146,140)] = {64,0}, + [I(147,140)] = {64,0}, + [I(148,140)] = {64,0}, + [I(149,140)] = {64,0}, + [I(150,140)] = {64,0}, + [I(151,140)] = {64,0}, + [I(152,140)] = {64,0}, + [I(153,140)] = {64,0}, + [I(154,140)] = {64,0}, + [I(155,140)] = {64,0}, + [I(156,140)] = {64,0}, + [I(157,140)] = {64,0}, + [I(158,140)] = {64,0}, + [I(159,140)] = {64,0}, + [I(160,140)] = {64,0}, + [I(161,140)] = {64,0}, + [I(162,140)] = {64,0}, + [I(163,140)] = {64,0}, + [I(164,140)] = {64,0}, + [I(165,140)] = {64,0}, + [I(166,140)] = {64,0}, + [I(167,140)] = {64,0}, + [I(168,140)] = {64,0}, + [I(169,140)] = {64,0}, + [I(170,140)] = {64,0}, + [I(171,140)] = {64,0}, + [I(172,140)] = {64,0}, + [I(173,140)] = {64,0}, + [I(174,140)] = {64,0}, + [I(175,140)] = {64,0}, + [I(176,140)] = {64,0}, + [I(177,140)] = {64,0}, + [I(178,140)] = {64,0}, + [I(179,140)] = {64,0}, + [I(180,140)] = {64,0}, + [I(181,140)] = {64,0}, + [I(182,140)] = {64,0}, + [I(183,140)] = {64,0}, + [I(184,140)] = {64,0}, + [I(185,140)] = {64,0}, + [I(186,140)] = {64,0}, + [I(187,140)] = {64,0}, + [I(188,140)] = {64,0}, + [I(189,140)] = {64,0}, + [I(190,140)] = {64,0}, + [I(191,140)] = {64,0}, + [I(192,140)] = {64,0}, + [I(193,140)] = {64,0}, + [I(194,140)] = {64,0}, + [I(195,140)] = {64,0}, + [I(196,140)] = {64,0}, + [I(197,140)] = {64,0}, + [I(198,140)] = {64,0}, + [I(199,140)] = {64,0}, + [I(200,140)] = {64,0}, + [I(201,140)] = {64,0}, + [I(202,140)] = {64,0}, + [I(203,140)] = {64,0}, + [I(204,140)] = {64,0}, + [I(205,140)] = {64,0}, + [I(206,140)] = {64,0}, + [I(207,140)] = {64,0}, + [I(208,140)] = {64,0}, + [I(209,140)] = {64,0}, + [I(210,140)] = {64,0}, + [I(211,140)] = {64,0}, + [I(212,140)] = {64,0}, + [I(213,140)] = {64,0}, + [I(214,140)] = {64,0}, + [I(215,140)] = {64,0}, + [I(216,140)] = {64,0}, + [I(217,140)] = {64,0}, + [I(218,140)] = {64,0}, + [I(219,140)] = {64,0}, + [I(220,140)] = {64,0}, + [I(221,140)] = {64,0}, + [I(222,140)] = {64,0}, + [I(223,140)] = {64,0}, + [I(224,140)] = {64,0}, + [I(225,140)] = {64,0}, + [I(226,140)] = {64,0}, + [I(227,140)] = {64,0}, + [I(228,140)] = {64,0}, + [I(229,140)] = {64,0}, + [I(230,140)] = {64,0}, + [I(231,140)] = {64,0}, + [I(232,140)] = {64,0}, + [I(233,140)] = {64,0}, + [I(234,140)] = {64,0}, + [I(235,140)] = {64,0}, + [I(236,140)] = {64,0}, + [I(237,140)] = {64,0}, + [I(238,140)] = {64,0}, + [I(239,140)] = {64,0}, + [I(240,140)] = {64,0}, + [I(241,140)] = {64,0}, + [I(242,140)] = {64,0}, + [I(243,140)] = {64,0}, + [I(244,140)] = {64,0}, + [I(245,140)] = {64,0}, + [I(246,140)] = {64,0}, + [I(247,140)] = {64,0}, + [I(248,140)] = {64,0}, + [I(249,140)] = {64,0}, + [I(250,140)] = {64,0}, + [I(251,140)] = {64,0}, + [I(252,140)] = {64,0}, + [I(253,140)] = {64,0}, + [I(254,140)] = {64,0}, + [I(255,140)] = {64,0}, + [I(0,141)] = {64,0}, + [I(1,141)] = {64,0}, + [I(2,141)] = {64,0}, + [I(3,141)] = {64,0}, + [I(4,141)] = {64,0}, + [I(5,141)] = {64,0}, + [I(6,141)] = {64,0}, + [I(7,141)] = {64,0}, + [I(8,141)] = {64,0}, + [I(9,141)] = {64,0}, + [I(10,141)] = {64,0}, + [I(11,141)] = {64,0}, + [I(12,141)] = {64,0}, + [I(13,141)] = {64,0}, + [I(14,141)] = {64,0}, + [I(15,141)] = {64,0}, + [I(16,141)] = {64,0}, + [I(17,141)] = {64,0}, + [I(18,141)] = {64,0}, + [I(19,141)] = {64,0}, + [I(20,141)] = {64,0}, + [I(21,141)] = {64,0}, + [I(22,141)] = {64,0}, + [I(23,141)] = {64,0}, + [I(24,141)] = {64,0}, + [I(25,141)] = {64,0}, + [I(26,141)] = {64,0}, + [I(27,141)] = {64,0}, + [I(28,141)] = {64,0}, + [I(29,141)] = {64,0}, + [I(30,141)] = {64,0}, + [I(31,141)] = {64,0}, + [I(32,141)] = {29,0xA7FFFDE}, + [I(33,141)] = {64,0}, + [I(34,141)] = {64,0}, + [I(35,141)] = {64,0}, + [I(36,141)] = {64,0}, + [I(37,141)] = {29,0xAFFFFDE}, + [I(38,141)] = {31,0x7C7FFFDE}, + [I(39,141)] = {64,0}, + [I(40,141)] = {64,0}, + [I(41,141)] = {64,0}, + [I(42,141)] = {31,0x7CFFFFDE}, + [I(43,141)] = {64,0}, + [I(44,141)] = {31,0x7D7FFFDE}, + [I(45,141)] = {29,0xB7FFFDE}, + [I(46,141)] = {29,0xBFFFFDE}, + [I(47,141)] = {29,0xC7FFFDE}, + [I(48,141)] = {28,0x7FFFDE}, + [I(49,141)] = {28,0xFFFFDE}, + [I(50,141)] = {28,0x17FFFDE}, + [I(51,141)] = {29,0xCFFFFDE}, + [I(52,141)] = {29,0xD7FFFDE}, + [I(53,141)] = {29,0xDFFFFDE}, + [I(54,141)] = {29,0xE7FFFDE}, + [I(55,141)] = {29,0xEFFFFDE}, + [I(56,141)] = {29,0xF7FFFDE}, + [I(57,141)] = {29,0xFFFFFDE}, + [I(58,141)] = {30,0x2E7FFFDE}, + [I(59,141)] = {31,0x7DFFFFDE}, + [I(60,141)] = {64,0}, + [I(61,141)] = {29,0x107FFFDE}, + [I(62,141)] = {64,0}, + [I(63,141)] = {64,0}, + [I(64,141)] = {64,0}, + [I(65,141)] = {29,0x10FFFFDE}, + [I(66,141)] = {30,0x2EFFFFDE}, + [I(67,141)] = {30,0x2F7FFFDE}, + [I(68,141)] = {30,0x2FFFFFDE}, + [I(69,141)] = {30,0x307FFFDE}, + [I(70,141)] = {30,0x30FFFFDE}, + [I(71,141)] = {30,0x317FFFDE}, + [I(72,141)] = {30,0x31FFFFDE}, + [I(73,141)] = {30,0x327FFFDE}, + [I(74,141)] = {30,0x32FFFFDE}, + [I(75,141)] = {30,0x337FFFDE}, + [I(76,141)] = {30,0x33FFFFDE}, + [I(77,141)] = {30,0x347FFFDE}, + [I(78,141)] = {30,0x34FFFFDE}, + [I(79,141)] = {30,0x357FFFDE}, + [I(80,141)] = {30,0x35FFFFDE}, + [I(81,141)] = {30,0x367FFFDE}, + [I(82,141)] = {30,0x36FFFFDE}, + [I(83,141)] = {30,0x377FFFDE}, + [I(84,141)] = {30,0x37FFFFDE}, + [I(85,141)] = {30,0x387FFFDE}, + [I(86,141)] = {30,0x38FFFFDE}, + [I(87,141)] = {30,0x397FFFDE}, + [I(88,141)] = {31,0x7E7FFFDE}, + [I(89,141)] = {30,0x39FFFFDE}, + [I(90,141)] = {31,0x7EFFFFDE}, + [I(91,141)] = {64,0}, + [I(92,141)] = {64,0}, + [I(93,141)] = {64,0}, + [I(94,141)] = {64,0}, + [I(95,141)] = {29,0x117FFFDE}, + [I(96,141)] = {64,0}, + [I(97,141)] = {28,0x1FFFFDE}, + [I(98,141)] = {29,0x11FFFFDE}, + [I(99,141)] = {28,0x27FFFDE}, + [I(100,141)] = {29,0x127FFFDE}, + [I(101,141)] = {28,0x2FFFFDE}, + [I(102,141)] = {29,0x12FFFFDE}, + [I(103,141)] = {29,0x137FFFDE}, + [I(104,141)] = {29,0x13FFFFDE}, + [I(105,141)] = {28,0x37FFFDE}, + [I(106,141)] = {30,0x3A7FFFDE}, + [I(107,141)] = {30,0x3AFFFFDE}, + [I(108,141)] = {29,0x147FFFDE}, + [I(109,141)] = {29,0x14FFFFDE}, + [I(110,141)] = {29,0x157FFFDE}, + [I(111,141)] = {28,0x3FFFFDE}, + [I(112,141)] = {29,0x15FFFFDE}, + [I(113,141)] = {30,0x3B7FFFDE}, + [I(114,141)] = {29,0x167FFFDE}, + [I(115,141)] = {28,0x47FFFDE}, + [I(116,141)] = {28,0x4FFFFDE}, + [I(117,141)] = {29,0x16FFFFDE}, + [I(118,141)] = {30,0x3BFFFFDE}, + [I(119,141)] = {30,0x3C7FFFDE}, + [I(120,141)] = {30,0x3CFFFFDE}, + [I(121,141)] = {30,0x3D7FFFDE}, + [I(122,141)] = {30,0x3DFFFFDE}, + [I(123,141)] = {64,0}, + [I(124,141)] = {64,0}, + [I(125,141)] = {64,0}, + [I(126,141)] = {64,0}, + [I(127,141)] = {64,0}, + [I(128,141)] = {64,0}, + [I(129,141)] = {64,0}, + [I(130,141)] = {64,0}, + [I(131,141)] = {64,0}, + [I(132,141)] = {64,0}, + [I(133,141)] = {64,0}, + [I(134,141)] = {64,0}, + [I(135,141)] = {64,0}, + [I(136,141)] = {64,0}, + [I(137,141)] = {64,0}, + [I(138,141)] = {64,0}, + [I(139,141)] = {64,0}, + [I(140,141)] = {64,0}, + [I(141,141)] = {64,0}, + [I(142,141)] = {64,0}, + [I(143,141)] = {64,0}, + [I(144,141)] = {64,0}, + [I(145,141)] = {64,0}, + [I(146,141)] = {64,0}, + [I(147,141)] = {64,0}, + [I(148,141)] = {64,0}, + [I(149,141)] = {64,0}, + [I(150,141)] = {64,0}, + [I(151,141)] = {64,0}, + [I(152,141)] = {64,0}, + [I(153,141)] = {64,0}, + [I(154,141)] = {64,0}, + [I(155,141)] = {64,0}, + [I(156,141)] = {64,0}, + [I(157,141)] = {64,0}, + [I(158,141)] = {64,0}, + [I(159,141)] = {64,0}, + [I(160,141)] = {64,0}, + [I(161,141)] = {64,0}, + [I(162,141)] = {64,0}, + [I(163,141)] = {64,0}, + [I(164,141)] = {64,0}, + [I(165,141)] = {64,0}, + [I(166,141)] = {64,0}, + [I(167,141)] = {64,0}, + [I(168,141)] = {64,0}, + [I(169,141)] = {64,0}, + [I(170,141)] = {64,0}, + [I(171,141)] = {64,0}, + [I(172,141)] = {64,0}, + [I(173,141)] = {64,0}, + [I(174,141)] = {64,0}, + [I(175,141)] = {64,0}, + [I(176,141)] = {64,0}, + [I(177,141)] = {64,0}, + [I(178,141)] = {64,0}, + [I(179,141)] = {64,0}, + [I(180,141)] = {64,0}, + [I(181,141)] = {64,0}, + [I(182,141)] = {64,0}, + [I(183,141)] = {64,0}, + [I(184,141)] = {64,0}, + [I(185,141)] = {64,0}, + [I(186,141)] = {64,0}, + [I(187,141)] = {64,0}, + [I(188,141)] = {64,0}, + [I(189,141)] = {64,0}, + [I(190,141)] = {64,0}, + [I(191,141)] = {64,0}, + [I(192,141)] = {64,0}, + [I(193,141)] = {64,0}, + [I(194,141)] = {64,0}, + [I(195,141)] = {64,0}, + [I(196,141)] = {64,0}, + [I(197,141)] = {64,0}, + [I(198,141)] = {64,0}, + [I(199,141)] = {64,0}, + [I(200,141)] = {64,0}, + [I(201,141)] = {64,0}, + [I(202,141)] = {64,0}, + [I(203,141)] = {64,0}, + [I(204,141)] = {64,0}, + [I(205,141)] = {64,0}, + [I(206,141)] = {64,0}, + [I(207,141)] = {64,0}, + [I(208,141)] = {64,0}, + [I(209,141)] = {64,0}, + [I(210,141)] = {64,0}, + [I(211,141)] = {64,0}, + [I(212,141)] = {64,0}, + [I(213,141)] = {64,0}, + [I(214,141)] = {64,0}, + [I(215,141)] = {64,0}, + [I(216,141)] = {64,0}, + [I(217,141)] = {64,0}, + [I(218,141)] = {64,0}, + [I(219,141)] = {64,0}, + [I(220,141)] = {64,0}, + [I(221,141)] = {64,0}, + [I(222,141)] = {64,0}, + [I(223,141)] = {64,0}, + [I(224,141)] = {64,0}, + [I(225,141)] = {64,0}, + [I(226,141)] = {64,0}, + [I(227,141)] = {64,0}, + [I(228,141)] = {64,0}, + [I(229,141)] = {64,0}, + [I(230,141)] = {64,0}, + [I(231,141)] = {64,0}, + [I(232,141)] = {64,0}, + [I(233,141)] = {64,0}, + [I(234,141)] = {64,0}, + [I(235,141)] = {64,0}, + [I(236,141)] = {64,0}, + [I(237,141)] = {64,0}, + [I(238,141)] = {64,0}, + [I(239,141)] = {64,0}, + [I(240,141)] = {64,0}, + [I(241,141)] = {64,0}, + [I(242,141)] = {64,0}, + [I(243,141)] = {64,0}, + [I(244,141)] = {64,0}, + [I(245,141)] = {64,0}, + [I(246,141)] = {64,0}, + [I(247,141)] = {64,0}, + [I(248,141)] = {64,0}, + [I(249,141)] = {64,0}, + [I(250,141)] = {64,0}, + [I(251,141)] = {64,0}, + [I(252,141)] = {64,0}, + [I(253,141)] = {64,0}, + [I(254,141)] = {64,0}, + [I(255,141)] = {64,0}, + [I(0,142)] = {64,0}, + [I(1,142)] = {64,0}, + [I(2,142)] = {64,0}, + [I(3,142)] = {64,0}, + [I(4,142)] = {64,0}, + [I(5,142)] = {64,0}, + [I(6,142)] = {64,0}, + [I(7,142)] = {64,0}, + [I(8,142)] = {64,0}, + [I(9,142)] = {64,0}, + [I(10,142)] = {64,0}, + [I(11,142)] = {64,0}, + [I(12,142)] = {64,0}, + [I(13,142)] = {64,0}, + [I(14,142)] = {64,0}, + [I(15,142)] = {64,0}, + [I(16,142)] = {64,0}, + [I(17,142)] = {64,0}, + [I(18,142)] = {64,0}, + [I(19,142)] = {64,0}, + [I(20,142)] = {64,0}, + [I(21,142)] = {64,0}, + [I(22,142)] = {64,0}, + [I(23,142)] = {64,0}, + [I(24,142)] = {64,0}, + [I(25,142)] = {64,0}, + [I(26,142)] = {64,0}, + [I(27,142)] = {64,0}, + [I(28,142)] = {64,0}, + [I(29,142)] = {64,0}, + [I(30,142)] = {64,0}, + [I(31,142)] = {64,0}, + [I(32,142)] = {30,0x14FFFFEB}, + [I(33,142)] = {64,0}, + [I(34,142)] = {64,0}, + [I(35,142)] = {64,0}, + [I(36,142)] = {64,0}, + [I(37,142)] = {30,0x15FFFFEB}, + [I(38,142)] = {X32,0xF8FFFFEB}, + [I(39,142)] = {64,0}, + [I(40,142)] = {64,0}, + [I(41,142)] = {64,0}, + [I(42,142)] = {X32,0xF9FFFFEB}, + [I(43,142)] = {64,0}, + [I(44,142)] = {X32,0xFAFFFFEB}, + [I(45,142)] = {30,0x16FFFFEB}, + [I(46,142)] = {30,0x17FFFFEB}, + [I(47,142)] = {30,0x18FFFFEB}, + [I(48,142)] = {29,0xFFFFEB}, + [I(49,142)] = {29,0x1FFFFEB}, + [I(50,142)] = {29,0x2FFFFEB}, + [I(51,142)] = {30,0x19FFFFEB}, + [I(52,142)] = {30,0x1AFFFFEB}, + [I(53,142)] = {30,0x1BFFFFEB}, + [I(54,142)] = {30,0x1CFFFFEB}, + [I(55,142)] = {30,0x1DFFFFEB}, + [I(56,142)] = {30,0x1EFFFFEB}, + [I(57,142)] = {30,0x1FFFFFEB}, + [I(58,142)] = {31,0x5CFFFFEB}, + [I(59,142)] = {X32,0xFBFFFFEB}, + [I(60,142)] = {64,0}, + [I(61,142)] = {30,0x20FFFFEB}, + [I(62,142)] = {64,0}, + [I(63,142)] = {64,0}, + [I(64,142)] = {64,0}, + [I(65,142)] = {30,0x21FFFFEB}, + [I(66,142)] = {31,0x5DFFFFEB}, + [I(67,142)] = {31,0x5EFFFFEB}, + [I(68,142)] = {31,0x5FFFFFEB}, + [I(69,142)] = {31,0x60FFFFEB}, + [I(70,142)] = {31,0x61FFFFEB}, + [I(71,142)] = {31,0x62FFFFEB}, + [I(72,142)] = {31,0x63FFFFEB}, + [I(73,142)] = {31,0x64FFFFEB}, + [I(74,142)] = {31,0x65FFFFEB}, + [I(75,142)] = {31,0x66FFFFEB}, + [I(76,142)] = {31,0x67FFFFEB}, + [I(77,142)] = {31,0x68FFFFEB}, + [I(78,142)] = {31,0x69FFFFEB}, + [I(79,142)] = {31,0x6AFFFFEB}, + [I(80,142)] = {31,0x6BFFFFEB}, + [I(81,142)] = {31,0x6CFFFFEB}, + [I(82,142)] = {31,0x6DFFFFEB}, + [I(83,142)] = {31,0x6EFFFFEB}, + [I(84,142)] = {31,0x6FFFFFEB}, + [I(85,142)] = {31,0x70FFFFEB}, + [I(86,142)] = {31,0x71FFFFEB}, + [I(87,142)] = {31,0x72FFFFEB}, + [I(88,142)] = {X32,0xFCFFFFEB}, + [I(89,142)] = {31,0x73FFFFEB}, + [I(90,142)] = {X32,0xFDFFFFEB}, + [I(91,142)] = {64,0}, + [I(92,142)] = {64,0}, + [I(93,142)] = {64,0}, + [I(94,142)] = {64,0}, + [I(95,142)] = {30,0x22FFFFEB}, + [I(96,142)] = {64,0}, + [I(97,142)] = {29,0x3FFFFEB}, + [I(98,142)] = {30,0x23FFFFEB}, + [I(99,142)] = {29,0x4FFFFEB}, + [I(100,142)] = {30,0x24FFFFEB}, + [I(101,142)] = {29,0x5FFFFEB}, + [I(102,142)] = {30,0x25FFFFEB}, + [I(103,142)] = {30,0x26FFFFEB}, + [I(104,142)] = {30,0x27FFFFEB}, + [I(105,142)] = {29,0x6FFFFEB}, + [I(106,142)] = {31,0x74FFFFEB}, + [I(107,142)] = {31,0x75FFFFEB}, + [I(108,142)] = {30,0x28FFFFEB}, + [I(109,142)] = {30,0x29FFFFEB}, + [I(110,142)] = {30,0x2AFFFFEB}, + [I(111,142)] = {29,0x7FFFFEB}, + [I(112,142)] = {30,0x2BFFFFEB}, + [I(113,142)] = {31,0x76FFFFEB}, + [I(114,142)] = {30,0x2CFFFFEB}, + [I(115,142)] = {29,0x8FFFFEB}, + [I(116,142)] = {29,0x9FFFFEB}, + [I(117,142)] = {30,0x2DFFFFEB}, + [I(118,142)] = {31,0x77FFFFEB}, + [I(119,142)] = {31,0x78FFFFEB}, + [I(120,142)] = {31,0x79FFFFEB}, + [I(121,142)] = {31,0x7AFFFFEB}, + [I(122,142)] = {31,0x7BFFFFEB}, + [I(123,142)] = {64,0}, + [I(124,142)] = {64,0}, + [I(125,142)] = {64,0}, + [I(126,142)] = {64,0}, + [I(127,142)] = {64,0}, + [I(128,142)] = {64,0}, + [I(129,142)] = {64,0}, + [I(130,142)] = {64,0}, + [I(131,142)] = {64,0}, + [I(132,142)] = {64,0}, + [I(133,142)] = {64,0}, + [I(134,142)] = {64,0}, + [I(135,142)] = {64,0}, + [I(136,142)] = {64,0}, + [I(137,142)] = {64,0}, + [I(138,142)] = {64,0}, + [I(139,142)] = {64,0}, + [I(140,142)] = {64,0}, + [I(141,142)] = {64,0}, + [I(142,142)] = {64,0}, + [I(143,142)] = {64,0}, + [I(144,142)] = {64,0}, + [I(145,142)] = {64,0}, + [I(146,142)] = {64,0}, + [I(147,142)] = {64,0}, + [I(148,142)] = {64,0}, + [I(149,142)] = {64,0}, + [I(150,142)] = {64,0}, + [I(151,142)] = {64,0}, + [I(152,142)] = {64,0}, + [I(153,142)] = {64,0}, + [I(154,142)] = {64,0}, + [I(155,142)] = {64,0}, + [I(156,142)] = {64,0}, + [I(157,142)] = {64,0}, + [I(158,142)] = {64,0}, + [I(159,142)] = {64,0}, + [I(160,142)] = {64,0}, + [I(161,142)] = {64,0}, + [I(162,142)] = {64,0}, + [I(163,142)] = {64,0}, + [I(164,142)] = {64,0}, + [I(165,142)] = {64,0}, + [I(166,142)] = {64,0}, + [I(167,142)] = {64,0}, + [I(168,142)] = {64,0}, + [I(169,142)] = {64,0}, + [I(170,142)] = {64,0}, + [I(171,142)] = {64,0}, + [I(172,142)] = {64,0}, + [I(173,142)] = {64,0}, + [I(174,142)] = {64,0}, + [I(175,142)] = {64,0}, + [I(176,142)] = {64,0}, + [I(177,142)] = {64,0}, + [I(178,142)] = {64,0}, + [I(179,142)] = {64,0}, + [I(180,142)] = {64,0}, + [I(181,142)] = {64,0}, + [I(182,142)] = {64,0}, + [I(183,142)] = {64,0}, + [I(184,142)] = {64,0}, + [I(185,142)] = {64,0}, + [I(186,142)] = {64,0}, + [I(187,142)] = {64,0}, + [I(188,142)] = {64,0}, + [I(189,142)] = {64,0}, + [I(190,142)] = {64,0}, + [I(191,142)] = {64,0}, + [I(192,142)] = {64,0}, + [I(193,142)] = {64,0}, + [I(194,142)] = {64,0}, + [I(195,142)] = {64,0}, + [I(196,142)] = {64,0}, + [I(197,142)] = {64,0}, + [I(198,142)] = {64,0}, + [I(199,142)] = {64,0}, + [I(200,142)] = {64,0}, + [I(201,142)] = {64,0}, + [I(202,142)] = {64,0}, + [I(203,142)] = {64,0}, + [I(204,142)] = {64,0}, + [I(205,142)] = {64,0}, + [I(206,142)] = {64,0}, + [I(207,142)] = {64,0}, + [I(208,142)] = {64,0}, + [I(209,142)] = {64,0}, + [I(210,142)] = {64,0}, + [I(211,142)] = {64,0}, + [I(212,142)] = {64,0}, + [I(213,142)] = {64,0}, + [I(214,142)] = {64,0}, + [I(215,142)] = {64,0}, + [I(216,142)] = {64,0}, + [I(217,142)] = {64,0}, + [I(218,142)] = {64,0}, + [I(219,142)] = {64,0}, + [I(220,142)] = {64,0}, + [I(221,142)] = {64,0}, + [I(222,142)] = {64,0}, + [I(223,142)] = {64,0}, + [I(224,142)] = {64,0}, + [I(225,142)] = {64,0}, + [I(226,142)] = {64,0}, + [I(227,142)] = {64,0}, + [I(228,142)] = {64,0}, + [I(229,142)] = {64,0}, + [I(230,142)] = {64,0}, + [I(231,142)] = {64,0}, + [I(232,142)] = {64,0}, + [I(233,142)] = {64,0}, + [I(234,142)] = {64,0}, + [I(235,142)] = {64,0}, + [I(236,142)] = {64,0}, + [I(237,142)] = {64,0}, + [I(238,142)] = {64,0}, + [I(239,142)] = {64,0}, + [I(240,142)] = {64,0}, + [I(241,142)] = {64,0}, + [I(242,142)] = {64,0}, + [I(243,142)] = {64,0}, + [I(244,142)] = {64,0}, + [I(245,142)] = {64,0}, + [I(246,142)] = {64,0}, + [I(247,142)] = {64,0}, + [I(248,142)] = {64,0}, + [I(249,142)] = {64,0}, + [I(250,142)] = {64,0}, + [I(251,142)] = {64,0}, + [I(252,142)] = {64,0}, + [I(253,142)] = {64,0}, + [I(254,142)] = {64,0}, + [I(255,142)] = {64,0}, + [I(0,143)] = {64,0}, + [I(1,143)] = {64,0}, + [I(2,143)] = {64,0}, + [I(3,143)] = {64,0}, + [I(4,143)] = {64,0}, + [I(5,143)] = {64,0}, + [I(6,143)] = {64,0}, + [I(7,143)] = {64,0}, + [I(8,143)] = {64,0}, + [I(9,143)] = {64,0}, + [I(10,143)] = {64,0}, + [I(11,143)] = {64,0}, + [I(12,143)] = {64,0}, + [I(13,143)] = {64,0}, + [I(14,143)] = {64,0}, + [I(15,143)] = {64,0}, + [I(16,143)] = {64,0}, + [I(17,143)] = {64,0}, + [I(18,143)] = {64,0}, + [I(19,143)] = {64,0}, + [I(20,143)] = {64,0}, + [I(21,143)] = {64,0}, + [I(22,143)] = {64,0}, + [I(23,143)] = {64,0}, + [I(24,143)] = {64,0}, + [I(25,143)] = {64,0}, + [I(26,143)] = {64,0}, + [I(27,143)] = {64,0}, + [I(28,143)] = {64,0}, + [I(29,143)] = {64,0}, + [I(30,143)] = {64,0}, + [I(31,143)] = {64,0}, + [I(32,143)] = {29,0xA7FFFDF}, + [I(33,143)] = {64,0}, + [I(34,143)] = {64,0}, + [I(35,143)] = {64,0}, + [I(36,143)] = {64,0}, + [I(37,143)] = {29,0xAFFFFDF}, + [I(38,143)] = {31,0x7C7FFFDF}, + [I(39,143)] = {64,0}, + [I(40,143)] = {64,0}, + [I(41,143)] = {64,0}, + [I(42,143)] = {31,0x7CFFFFDF}, + [I(43,143)] = {64,0}, + [I(44,143)] = {31,0x7D7FFFDF}, + [I(45,143)] = {29,0xB7FFFDF}, + [I(46,143)] = {29,0xBFFFFDF}, + [I(47,143)] = {29,0xC7FFFDF}, + [I(48,143)] = {28,0x7FFFDF}, + [I(49,143)] = {28,0xFFFFDF}, + [I(50,143)] = {28,0x17FFFDF}, + [I(51,143)] = {29,0xCFFFFDF}, + [I(52,143)] = {29,0xD7FFFDF}, + [I(53,143)] = {29,0xDFFFFDF}, + [I(54,143)] = {29,0xE7FFFDF}, + [I(55,143)] = {29,0xEFFFFDF}, + [I(56,143)] = {29,0xF7FFFDF}, + [I(57,143)] = {29,0xFFFFFDF}, + [I(58,143)] = {30,0x2E7FFFDF}, + [I(59,143)] = {31,0x7DFFFFDF}, + [I(60,143)] = {64,0}, + [I(61,143)] = {29,0x107FFFDF}, + [I(62,143)] = {64,0}, + [I(63,143)] = {64,0}, + [I(64,143)] = {64,0}, + [I(65,143)] = {29,0x10FFFFDF}, + [I(66,143)] = {30,0x2EFFFFDF}, + [I(67,143)] = {30,0x2F7FFFDF}, + [I(68,143)] = {30,0x2FFFFFDF}, + [I(69,143)] = {30,0x307FFFDF}, + [I(70,143)] = {30,0x30FFFFDF}, + [I(71,143)] = {30,0x317FFFDF}, + [I(72,143)] = {30,0x31FFFFDF}, + [I(73,143)] = {30,0x327FFFDF}, + [I(74,143)] = {30,0x32FFFFDF}, + [I(75,143)] = {30,0x337FFFDF}, + [I(76,143)] = {30,0x33FFFFDF}, + [I(77,143)] = {30,0x347FFFDF}, + [I(78,143)] = {30,0x34FFFFDF}, + [I(79,143)] = {30,0x357FFFDF}, + [I(80,143)] = {30,0x35FFFFDF}, + [I(81,143)] = {30,0x367FFFDF}, + [I(82,143)] = {30,0x36FFFFDF}, + [I(83,143)] = {30,0x377FFFDF}, + [I(84,143)] = {30,0x37FFFFDF}, + [I(85,143)] = {30,0x387FFFDF}, + [I(86,143)] = {30,0x38FFFFDF}, + [I(87,143)] = {30,0x397FFFDF}, + [I(88,143)] = {31,0x7E7FFFDF}, + [I(89,143)] = {30,0x39FFFFDF}, + [I(90,143)] = {31,0x7EFFFFDF}, + [I(91,143)] = {64,0}, + [I(92,143)] = {64,0}, + [I(93,143)] = {64,0}, + [I(94,143)] = {64,0}, + [I(95,143)] = {29,0x117FFFDF}, + [I(96,143)] = {64,0}, + [I(97,143)] = {28,0x1FFFFDF}, + [I(98,143)] = {29,0x11FFFFDF}, + [I(99,143)] = {28,0x27FFFDF}, + [I(100,143)] = {29,0x127FFFDF}, + [I(101,143)] = {28,0x2FFFFDF}, + [I(102,143)] = {29,0x12FFFFDF}, + [I(103,143)] = {29,0x137FFFDF}, + [I(104,143)] = {29,0x13FFFFDF}, + [I(105,143)] = {28,0x37FFFDF}, + [I(106,143)] = {30,0x3A7FFFDF}, + [I(107,143)] = {30,0x3AFFFFDF}, + [I(108,143)] = {29,0x147FFFDF}, + [I(109,143)] = {29,0x14FFFFDF}, + [I(110,143)] = {29,0x157FFFDF}, + [I(111,143)] = {28,0x3FFFFDF}, + [I(112,143)] = {29,0x15FFFFDF}, + [I(113,143)] = {30,0x3B7FFFDF}, + [I(114,143)] = {29,0x167FFFDF}, + [I(115,143)] = {28,0x47FFFDF}, + [I(116,143)] = {28,0x4FFFFDF}, + [I(117,143)] = {29,0x16FFFFDF}, + [I(118,143)] = {30,0x3BFFFFDF}, + [I(119,143)] = {30,0x3C7FFFDF}, + [I(120,143)] = {30,0x3CFFFFDF}, + [I(121,143)] = {30,0x3D7FFFDF}, + [I(122,143)] = {30,0x3DFFFFDF}, + [I(123,143)] = {64,0}, + [I(124,143)] = {64,0}, + [I(125,143)] = {64,0}, + [I(126,143)] = {64,0}, + [I(127,143)] = {64,0}, + [I(128,143)] = {64,0}, + [I(129,143)] = {64,0}, + [I(130,143)] = {64,0}, + [I(131,143)] = {64,0}, + [I(132,143)] = {64,0}, + [I(133,143)] = {64,0}, + [I(134,143)] = {64,0}, + [I(135,143)] = {64,0}, + [I(136,143)] = {64,0}, + [I(137,143)] = {64,0}, + [I(138,143)] = {64,0}, + [I(139,143)] = {64,0}, + [I(140,143)] = {64,0}, + [I(141,143)] = {64,0}, + [I(142,143)] = {64,0}, + [I(143,143)] = {64,0}, + [I(144,143)] = {64,0}, + [I(145,143)] = {64,0}, + [I(146,143)] = {64,0}, + [I(147,143)] = {64,0}, + [I(148,143)] = {64,0}, + [I(149,143)] = {64,0}, + [I(150,143)] = {64,0}, + [I(151,143)] = {64,0}, + [I(152,143)] = {64,0}, + [I(153,143)] = {64,0}, + [I(154,143)] = {64,0}, + [I(155,143)] = {64,0}, + [I(156,143)] = {64,0}, + [I(157,143)] = {64,0}, + [I(158,143)] = {64,0}, + [I(159,143)] = {64,0}, + [I(160,143)] = {64,0}, + [I(161,143)] = {64,0}, + [I(162,143)] = {64,0}, + [I(163,143)] = {64,0}, + [I(164,143)] = {64,0}, + [I(165,143)] = {64,0}, + [I(166,143)] = {64,0}, + [I(167,143)] = {64,0}, + [I(168,143)] = {64,0}, + [I(169,143)] = {64,0}, + [I(170,143)] = {64,0}, + [I(171,143)] = {64,0}, + [I(172,143)] = {64,0}, + [I(173,143)] = {64,0}, + [I(174,143)] = {64,0}, + [I(175,143)] = {64,0}, + [I(176,143)] = {64,0}, + [I(177,143)] = {64,0}, + [I(178,143)] = {64,0}, + [I(179,143)] = {64,0}, + [I(180,143)] = {64,0}, + [I(181,143)] = {64,0}, + [I(182,143)] = {64,0}, + [I(183,143)] = {64,0}, + [I(184,143)] = {64,0}, + [I(185,143)] = {64,0}, + [I(186,143)] = {64,0}, + [I(187,143)] = {64,0}, + [I(188,143)] = {64,0}, + [I(189,143)] = {64,0}, + [I(190,143)] = {64,0}, + [I(191,143)] = {64,0}, + [I(192,143)] = {64,0}, + [I(193,143)] = {64,0}, + [I(194,143)] = {64,0}, + [I(195,143)] = {64,0}, + [I(196,143)] = {64,0}, + [I(197,143)] = {64,0}, + [I(198,143)] = {64,0}, + [I(199,143)] = {64,0}, + [I(200,143)] = {64,0}, + [I(201,143)] = {64,0}, + [I(202,143)] = {64,0}, + [I(203,143)] = {64,0}, + [I(204,143)] = {64,0}, + [I(205,143)] = {64,0}, + [I(206,143)] = {64,0}, + [I(207,143)] = {64,0}, + [I(208,143)] = {64,0}, + [I(209,143)] = {64,0}, + [I(210,143)] = {64,0}, + [I(211,143)] = {64,0}, + [I(212,143)] = {64,0}, + [I(213,143)] = {64,0}, + [I(214,143)] = {64,0}, + [I(215,143)] = {64,0}, + [I(216,143)] = {64,0}, + [I(217,143)] = {64,0}, + [I(218,143)] = {64,0}, + [I(219,143)] = {64,0}, + [I(220,143)] = {64,0}, + [I(221,143)] = {64,0}, + [I(222,143)] = {64,0}, + [I(223,143)] = {64,0}, + [I(224,143)] = {64,0}, + [I(225,143)] = {64,0}, + [I(226,143)] = {64,0}, + [I(227,143)] = {64,0}, + [I(228,143)] = {64,0}, + [I(229,143)] = {64,0}, + [I(230,143)] = {64,0}, + [I(231,143)] = {64,0}, + [I(232,143)] = {64,0}, + [I(233,143)] = {64,0}, + [I(234,143)] = {64,0}, + [I(235,143)] = {64,0}, + [I(236,143)] = {64,0}, + [I(237,143)] = {64,0}, + [I(238,143)] = {64,0}, + [I(239,143)] = {64,0}, + [I(240,143)] = {64,0}, + [I(241,143)] = {64,0}, + [I(242,143)] = {64,0}, + [I(243,143)] = {64,0}, + [I(244,143)] = {64,0}, + [I(245,143)] = {64,0}, + [I(246,143)] = {64,0}, + [I(247,143)] = {64,0}, + [I(248,143)] = {64,0}, + [I(249,143)] = {64,0}, + [I(250,143)] = {64,0}, + [I(251,143)] = {64,0}, + [I(252,143)] = {64,0}, + [I(253,143)] = {64,0}, + [I(254,143)] = {64,0}, + [I(255,143)] = {64,0}, + [I(0,144)] = {64,0}, + [I(1,144)] = {64,0}, + [I(2,144)] = {64,0}, + [I(3,144)] = {64,0}, + [I(4,144)] = {64,0}, + [I(5,144)] = {64,0}, + [I(6,144)] = {64,0}, + [I(7,144)] = {64,0}, + [I(8,144)] = {64,0}, + [I(9,144)] = {64,0}, + [I(10,144)] = {64,0}, + [I(11,144)] = {64,0}, + [I(12,144)] = {64,0}, + [I(13,144)] = {64,0}, + [I(14,144)] = {64,0}, + [I(15,144)] = {64,0}, + [I(16,144)] = {64,0}, + [I(17,144)] = {64,0}, + [I(18,144)] = {64,0}, + [I(19,144)] = {64,0}, + [I(20,144)] = {64,0}, + [I(21,144)] = {64,0}, + [I(22,144)] = {64,0}, + [I(23,144)] = {64,0}, + [I(24,144)] = {64,0}, + [I(25,144)] = {64,0}, + [I(26,144)] = {64,0}, + [I(27,144)] = {64,0}, + [I(28,144)] = {64,0}, + [I(29,144)] = {64,0}, + [I(30,144)] = {64,0}, + [I(31,144)] = {64,0}, + [I(32,144)] = {30,0x14FFFFEC}, + [I(33,144)] = {64,0}, + [I(34,144)] = {64,0}, + [I(35,144)] = {64,0}, + [I(36,144)] = {64,0}, + [I(37,144)] = {30,0x15FFFFEC}, + [I(38,144)] = {X32,0xF8FFFFEC}, + [I(39,144)] = {64,0}, + [I(40,144)] = {64,0}, + [I(41,144)] = {64,0}, + [I(42,144)] = {X32,0xF9FFFFEC}, + [I(43,144)] = {64,0}, + [I(44,144)] = {X32,0xFAFFFFEC}, + [I(45,144)] = {30,0x16FFFFEC}, + [I(46,144)] = {30,0x17FFFFEC}, + [I(47,144)] = {30,0x18FFFFEC}, + [I(48,144)] = {29,0xFFFFEC}, + [I(49,144)] = {29,0x1FFFFEC}, + [I(50,144)] = {29,0x2FFFFEC}, + [I(51,144)] = {30,0x19FFFFEC}, + [I(52,144)] = {30,0x1AFFFFEC}, + [I(53,144)] = {30,0x1BFFFFEC}, + [I(54,144)] = {30,0x1CFFFFEC}, + [I(55,144)] = {30,0x1DFFFFEC}, + [I(56,144)] = {30,0x1EFFFFEC}, + [I(57,144)] = {30,0x1FFFFFEC}, + [I(58,144)] = {31,0x5CFFFFEC}, + [I(59,144)] = {X32,0xFBFFFFEC}, + [I(60,144)] = {64,0}, + [I(61,144)] = {30,0x20FFFFEC}, + [I(62,144)] = {64,0}, + [I(63,144)] = {64,0}, + [I(64,144)] = {64,0}, + [I(65,144)] = {30,0x21FFFFEC}, + [I(66,144)] = {31,0x5DFFFFEC}, + [I(67,144)] = {31,0x5EFFFFEC}, + [I(68,144)] = {31,0x5FFFFFEC}, + [I(69,144)] = {31,0x60FFFFEC}, + [I(70,144)] = {31,0x61FFFFEC}, + [I(71,144)] = {31,0x62FFFFEC}, + [I(72,144)] = {31,0x63FFFFEC}, + [I(73,144)] = {31,0x64FFFFEC}, + [I(74,144)] = {31,0x65FFFFEC}, + [I(75,144)] = {31,0x66FFFFEC}, + [I(76,144)] = {31,0x67FFFFEC}, + [I(77,144)] = {31,0x68FFFFEC}, + [I(78,144)] = {31,0x69FFFFEC}, + [I(79,144)] = {31,0x6AFFFFEC}, + [I(80,144)] = {31,0x6BFFFFEC}, + [I(81,144)] = {31,0x6CFFFFEC}, + [I(82,144)] = {31,0x6DFFFFEC}, + [I(83,144)] = {31,0x6EFFFFEC}, + [I(84,144)] = {31,0x6FFFFFEC}, + [I(85,144)] = {31,0x70FFFFEC}, + [I(86,144)] = {31,0x71FFFFEC}, + [I(87,144)] = {31,0x72FFFFEC}, + [I(88,144)] = {X32,0xFCFFFFEC}, + [I(89,144)] = {31,0x73FFFFEC}, + [I(90,144)] = {X32,0xFDFFFFEC}, + [I(91,144)] = {64,0}, + [I(92,144)] = {64,0}, + [I(93,144)] = {64,0}, + [I(94,144)] = {64,0}, + [I(95,144)] = {30,0x22FFFFEC}, + [I(96,144)] = {64,0}, + [I(97,144)] = {29,0x3FFFFEC}, + [I(98,144)] = {30,0x23FFFFEC}, + [I(99,144)] = {29,0x4FFFFEC}, + [I(100,144)] = {30,0x24FFFFEC}, + [I(101,144)] = {29,0x5FFFFEC}, + [I(102,144)] = {30,0x25FFFFEC}, + [I(103,144)] = {30,0x26FFFFEC}, + [I(104,144)] = {30,0x27FFFFEC}, + [I(105,144)] = {29,0x6FFFFEC}, + [I(106,144)] = {31,0x74FFFFEC}, + [I(107,144)] = {31,0x75FFFFEC}, + [I(108,144)] = {30,0x28FFFFEC}, + [I(109,144)] = {30,0x29FFFFEC}, + [I(110,144)] = {30,0x2AFFFFEC}, + [I(111,144)] = {29,0x7FFFFEC}, + [I(112,144)] = {30,0x2BFFFFEC}, + [I(113,144)] = {31,0x76FFFFEC}, + [I(114,144)] = {30,0x2CFFFFEC}, + [I(115,144)] = {29,0x8FFFFEC}, + [I(116,144)] = {29,0x9FFFFEC}, + [I(117,144)] = {30,0x2DFFFFEC}, + [I(118,144)] = {31,0x77FFFFEC}, + [I(119,144)] = {31,0x78FFFFEC}, + [I(120,144)] = {31,0x79FFFFEC}, + [I(121,144)] = {31,0x7AFFFFEC}, + [I(122,144)] = {31,0x7BFFFFEC}, + [I(123,144)] = {64,0}, + [I(124,144)] = {64,0}, + [I(125,144)] = {64,0}, + [I(126,144)] = {64,0}, + [I(127,144)] = {64,0}, + [I(128,144)] = {64,0}, + [I(129,144)] = {64,0}, + [I(130,144)] = {64,0}, + [I(131,144)] = {64,0}, + [I(132,144)] = {64,0}, + [I(133,144)] = {64,0}, + [I(134,144)] = {64,0}, + [I(135,144)] = {64,0}, + [I(136,144)] = {64,0}, + [I(137,144)] = {64,0}, + [I(138,144)] = {64,0}, + [I(139,144)] = {64,0}, + [I(140,144)] = {64,0}, + [I(141,144)] = {64,0}, + [I(142,144)] = {64,0}, + [I(143,144)] = {64,0}, + [I(144,144)] = {64,0}, + [I(145,144)] = {64,0}, + [I(146,144)] = {64,0}, + [I(147,144)] = {64,0}, + [I(148,144)] = {64,0}, + [I(149,144)] = {64,0}, + [I(150,144)] = {64,0}, + [I(151,144)] = {64,0}, + [I(152,144)] = {64,0}, + [I(153,144)] = {64,0}, + [I(154,144)] = {64,0}, + [I(155,144)] = {64,0}, + [I(156,144)] = {64,0}, + [I(157,144)] = {64,0}, + [I(158,144)] = {64,0}, + [I(159,144)] = {64,0}, + [I(160,144)] = {64,0}, + [I(161,144)] = {64,0}, + [I(162,144)] = {64,0}, + [I(163,144)] = {64,0}, + [I(164,144)] = {64,0}, + [I(165,144)] = {64,0}, + [I(166,144)] = {64,0}, + [I(167,144)] = {64,0}, + [I(168,144)] = {64,0}, + [I(169,144)] = {64,0}, + [I(170,144)] = {64,0}, + [I(171,144)] = {64,0}, + [I(172,144)] = {64,0}, + [I(173,144)] = {64,0}, + [I(174,144)] = {64,0}, + [I(175,144)] = {64,0}, + [I(176,144)] = {64,0}, + [I(177,144)] = {64,0}, + [I(178,144)] = {64,0}, + [I(179,144)] = {64,0}, + [I(180,144)] = {64,0}, + [I(181,144)] = {64,0}, + [I(182,144)] = {64,0}, + [I(183,144)] = {64,0}, + [I(184,144)] = {64,0}, + [I(185,144)] = {64,0}, + [I(186,144)] = {64,0}, + [I(187,144)] = {64,0}, + [I(188,144)] = {64,0}, + [I(189,144)] = {64,0}, + [I(190,144)] = {64,0}, + [I(191,144)] = {64,0}, + [I(192,144)] = {64,0}, + [I(193,144)] = {64,0}, + [I(194,144)] = {64,0}, + [I(195,144)] = {64,0}, + [I(196,144)] = {64,0}, + [I(197,144)] = {64,0}, + [I(198,144)] = {64,0}, + [I(199,144)] = {64,0}, + [I(200,144)] = {64,0}, + [I(201,144)] = {64,0}, + [I(202,144)] = {64,0}, + [I(203,144)] = {64,0}, + [I(204,144)] = {64,0}, + [I(205,144)] = {64,0}, + [I(206,144)] = {64,0}, + [I(207,144)] = {64,0}, + [I(208,144)] = {64,0}, + [I(209,144)] = {64,0}, + [I(210,144)] = {64,0}, + [I(211,144)] = {64,0}, + [I(212,144)] = {64,0}, + [I(213,144)] = {64,0}, + [I(214,144)] = {64,0}, + [I(215,144)] = {64,0}, + [I(216,144)] = {64,0}, + [I(217,144)] = {64,0}, + [I(218,144)] = {64,0}, + [I(219,144)] = {64,0}, + [I(220,144)] = {64,0}, + [I(221,144)] = {64,0}, + [I(222,144)] = {64,0}, + [I(223,144)] = {64,0}, + [I(224,144)] = {64,0}, + [I(225,144)] = {64,0}, + [I(226,144)] = {64,0}, + [I(227,144)] = {64,0}, + [I(228,144)] = {64,0}, + [I(229,144)] = {64,0}, + [I(230,144)] = {64,0}, + [I(231,144)] = {64,0}, + [I(232,144)] = {64,0}, + [I(233,144)] = {64,0}, + [I(234,144)] = {64,0}, + [I(235,144)] = {64,0}, + [I(236,144)] = {64,0}, + [I(237,144)] = {64,0}, + [I(238,144)] = {64,0}, + [I(239,144)] = {64,0}, + [I(240,144)] = {64,0}, + [I(241,144)] = {64,0}, + [I(242,144)] = {64,0}, + [I(243,144)] = {64,0}, + [I(244,144)] = {64,0}, + [I(245,144)] = {64,0}, + [I(246,144)] = {64,0}, + [I(247,144)] = {64,0}, + [I(248,144)] = {64,0}, + [I(249,144)] = {64,0}, + [I(250,144)] = {64,0}, + [I(251,144)] = {64,0}, + [I(252,144)] = {64,0}, + [I(253,144)] = {64,0}, + [I(254,144)] = {64,0}, + [I(255,144)] = {64,0}, + [I(0,145)] = {64,0}, + [I(1,145)] = {64,0}, + [I(2,145)] = {64,0}, + [I(3,145)] = {64,0}, + [I(4,145)] = {64,0}, + [I(5,145)] = {64,0}, + [I(6,145)] = {64,0}, + [I(7,145)] = {64,0}, + [I(8,145)] = {64,0}, + [I(9,145)] = {64,0}, + [I(10,145)] = {64,0}, + [I(11,145)] = {64,0}, + [I(12,145)] = {64,0}, + [I(13,145)] = {64,0}, + [I(14,145)] = {64,0}, + [I(15,145)] = {64,0}, + [I(16,145)] = {64,0}, + [I(17,145)] = {64,0}, + [I(18,145)] = {64,0}, + [I(19,145)] = {64,0}, + [I(20,145)] = {64,0}, + [I(21,145)] = {64,0}, + [I(22,145)] = {64,0}, + [I(23,145)] = {64,0}, + [I(24,145)] = {64,0}, + [I(25,145)] = {64,0}, + [I(26,145)] = {64,0}, + [I(27,145)] = {64,0}, + [I(28,145)] = {64,0}, + [I(29,145)] = {64,0}, + [I(30,145)] = {64,0}, + [I(31,145)] = {64,0}, + [I(32,145)] = {30,0x14FFFFED}, + [I(33,145)] = {64,0}, + [I(34,145)] = {64,0}, + [I(35,145)] = {64,0}, + [I(36,145)] = {64,0}, + [I(37,145)] = {30,0x15FFFFED}, + [I(38,145)] = {X32,0xF8FFFFED}, + [I(39,145)] = {64,0}, + [I(40,145)] = {64,0}, + [I(41,145)] = {64,0}, + [I(42,145)] = {X32,0xF9FFFFED}, + [I(43,145)] = {64,0}, + [I(44,145)] = {X32,0xFAFFFFED}, + [I(45,145)] = {30,0x16FFFFED}, + [I(46,145)] = {30,0x17FFFFED}, + [I(47,145)] = {30,0x18FFFFED}, + [I(48,145)] = {29,0xFFFFED}, + [I(49,145)] = {29,0x1FFFFED}, + [I(50,145)] = {29,0x2FFFFED}, + [I(51,145)] = {30,0x19FFFFED}, + [I(52,145)] = {30,0x1AFFFFED}, + [I(53,145)] = {30,0x1BFFFFED}, + [I(54,145)] = {30,0x1CFFFFED}, + [I(55,145)] = {30,0x1DFFFFED}, + [I(56,145)] = {30,0x1EFFFFED}, + [I(57,145)] = {30,0x1FFFFFED}, + [I(58,145)] = {31,0x5CFFFFED}, + [I(59,145)] = {X32,0xFBFFFFED}, + [I(60,145)] = {64,0}, + [I(61,145)] = {30,0x20FFFFED}, + [I(62,145)] = {64,0}, + [I(63,145)] = {64,0}, + [I(64,145)] = {64,0}, + [I(65,145)] = {30,0x21FFFFED}, + [I(66,145)] = {31,0x5DFFFFED}, + [I(67,145)] = {31,0x5EFFFFED}, + [I(68,145)] = {31,0x5FFFFFED}, + [I(69,145)] = {31,0x60FFFFED}, + [I(70,145)] = {31,0x61FFFFED}, + [I(71,145)] = {31,0x62FFFFED}, + [I(72,145)] = {31,0x63FFFFED}, + [I(73,145)] = {31,0x64FFFFED}, + [I(74,145)] = {31,0x65FFFFED}, + [I(75,145)] = {31,0x66FFFFED}, + [I(76,145)] = {31,0x67FFFFED}, + [I(77,145)] = {31,0x68FFFFED}, + [I(78,145)] = {31,0x69FFFFED}, + [I(79,145)] = {31,0x6AFFFFED}, + [I(80,145)] = {31,0x6BFFFFED}, + [I(81,145)] = {31,0x6CFFFFED}, + [I(82,145)] = {31,0x6DFFFFED}, + [I(83,145)] = {31,0x6EFFFFED}, + [I(84,145)] = {31,0x6FFFFFED}, + [I(85,145)] = {31,0x70FFFFED}, + [I(86,145)] = {31,0x71FFFFED}, + [I(87,145)] = {31,0x72FFFFED}, + [I(88,145)] = {X32,0xFCFFFFED}, + [I(89,145)] = {31,0x73FFFFED}, + [I(90,145)] = {X32,0xFDFFFFED}, + [I(91,145)] = {64,0}, + [I(92,145)] = {64,0}, + [I(93,145)] = {64,0}, + [I(94,145)] = {64,0}, + [I(95,145)] = {30,0x22FFFFED}, + [I(96,145)] = {64,0}, + [I(97,145)] = {29,0x3FFFFED}, + [I(98,145)] = {30,0x23FFFFED}, + [I(99,145)] = {29,0x4FFFFED}, + [I(100,145)] = {30,0x24FFFFED}, + [I(101,145)] = {29,0x5FFFFED}, + [I(102,145)] = {30,0x25FFFFED}, + [I(103,145)] = {30,0x26FFFFED}, + [I(104,145)] = {30,0x27FFFFED}, + [I(105,145)] = {29,0x6FFFFED}, + [I(106,145)] = {31,0x74FFFFED}, + [I(107,145)] = {31,0x75FFFFED}, + [I(108,145)] = {30,0x28FFFFED}, + [I(109,145)] = {30,0x29FFFFED}, + [I(110,145)] = {30,0x2AFFFFED}, + [I(111,145)] = {29,0x7FFFFED}, + [I(112,145)] = {30,0x2BFFFFED}, + [I(113,145)] = {31,0x76FFFFED}, + [I(114,145)] = {30,0x2CFFFFED}, + [I(115,145)] = {29,0x8FFFFED}, + [I(116,145)] = {29,0x9FFFFED}, + [I(117,145)] = {30,0x2DFFFFED}, + [I(118,145)] = {31,0x77FFFFED}, + [I(119,145)] = {31,0x78FFFFED}, + [I(120,145)] = {31,0x79FFFFED}, + [I(121,145)] = {31,0x7AFFFFED}, + [I(122,145)] = {31,0x7BFFFFED}, + [I(123,145)] = {64,0}, + [I(124,145)] = {64,0}, + [I(125,145)] = {64,0}, + [I(126,145)] = {64,0}, + [I(127,145)] = {64,0}, + [I(128,145)] = {64,0}, + [I(129,145)] = {64,0}, + [I(130,145)] = {64,0}, + [I(131,145)] = {64,0}, + [I(132,145)] = {64,0}, + [I(133,145)] = {64,0}, + [I(134,145)] = {64,0}, + [I(135,145)] = {64,0}, + [I(136,145)] = {64,0}, + [I(137,145)] = {64,0}, + [I(138,145)] = {64,0}, + [I(139,145)] = {64,0}, + [I(140,145)] = {64,0}, + [I(141,145)] = {64,0}, + [I(142,145)] = {64,0}, + [I(143,145)] = {64,0}, + [I(144,145)] = {64,0}, + [I(145,145)] = {64,0}, + [I(146,145)] = {64,0}, + [I(147,145)] = {64,0}, + [I(148,145)] = {64,0}, + [I(149,145)] = {64,0}, + [I(150,145)] = {64,0}, + [I(151,145)] = {64,0}, + [I(152,145)] = {64,0}, + [I(153,145)] = {64,0}, + [I(154,145)] = {64,0}, + [I(155,145)] = {64,0}, + [I(156,145)] = {64,0}, + [I(157,145)] = {64,0}, + [I(158,145)] = {64,0}, + [I(159,145)] = {64,0}, + [I(160,145)] = {64,0}, + [I(161,145)] = {64,0}, + [I(162,145)] = {64,0}, + [I(163,145)] = {64,0}, + [I(164,145)] = {64,0}, + [I(165,145)] = {64,0}, + [I(166,145)] = {64,0}, + [I(167,145)] = {64,0}, + [I(168,145)] = {64,0}, + [I(169,145)] = {64,0}, + [I(170,145)] = {64,0}, + [I(171,145)] = {64,0}, + [I(172,145)] = {64,0}, + [I(173,145)] = {64,0}, + [I(174,145)] = {64,0}, + [I(175,145)] = {64,0}, + [I(176,145)] = {64,0}, + [I(177,145)] = {64,0}, + [I(178,145)] = {64,0}, + [I(179,145)] = {64,0}, + [I(180,145)] = {64,0}, + [I(181,145)] = {64,0}, + [I(182,145)] = {64,0}, + [I(183,145)] = {64,0}, + [I(184,145)] = {64,0}, + [I(185,145)] = {64,0}, + [I(186,145)] = {64,0}, + [I(187,145)] = {64,0}, + [I(188,145)] = {64,0}, + [I(189,145)] = {64,0}, + [I(190,145)] = {64,0}, + [I(191,145)] = {64,0}, + [I(192,145)] = {64,0}, + [I(193,145)] = {64,0}, + [I(194,145)] = {64,0}, + [I(195,145)] = {64,0}, + [I(196,145)] = {64,0}, + [I(197,145)] = {64,0}, + [I(198,145)] = {64,0}, + [I(199,145)] = {64,0}, + [I(200,145)] = {64,0}, + [I(201,145)] = {64,0}, + [I(202,145)] = {64,0}, + [I(203,145)] = {64,0}, + [I(204,145)] = {64,0}, + [I(205,145)] = {64,0}, + [I(206,145)] = {64,0}, + [I(207,145)] = {64,0}, + [I(208,145)] = {64,0}, + [I(209,145)] = {64,0}, + [I(210,145)] = {64,0}, + [I(211,145)] = {64,0}, + [I(212,145)] = {64,0}, + [I(213,145)] = {64,0}, + [I(214,145)] = {64,0}, + [I(215,145)] = {64,0}, + [I(216,145)] = {64,0}, + [I(217,145)] = {64,0}, + [I(218,145)] = {64,0}, + [I(219,145)] = {64,0}, + [I(220,145)] = {64,0}, + [I(221,145)] = {64,0}, + [I(222,145)] = {64,0}, + [I(223,145)] = {64,0}, + [I(224,145)] = {64,0}, + [I(225,145)] = {64,0}, + [I(226,145)] = {64,0}, + [I(227,145)] = {64,0}, + [I(228,145)] = {64,0}, + [I(229,145)] = {64,0}, + [I(230,145)] = {64,0}, + [I(231,145)] = {64,0}, + [I(232,145)] = {64,0}, + [I(233,145)] = {64,0}, + [I(234,145)] = {64,0}, + [I(235,145)] = {64,0}, + [I(236,145)] = {64,0}, + [I(237,145)] = {64,0}, + [I(238,145)] = {64,0}, + [I(239,145)] = {64,0}, + [I(240,145)] = {64,0}, + [I(241,145)] = {64,0}, + [I(242,145)] = {64,0}, + [I(243,145)] = {64,0}, + [I(244,145)] = {64,0}, + [I(245,145)] = {64,0}, + [I(246,145)] = {64,0}, + [I(247,145)] = {64,0}, + [I(248,145)] = {64,0}, + [I(249,145)] = {64,0}, + [I(250,145)] = {64,0}, + [I(251,145)] = {64,0}, + [I(252,145)] = {64,0}, + [I(253,145)] = {64,0}, + [I(254,145)] = {64,0}, + [I(255,145)] = {64,0}, + [I(0,146)] = {64,0}, + [I(1,146)] = {64,0}, + [I(2,146)] = {64,0}, + [I(3,146)] = {64,0}, + [I(4,146)] = {64,0}, + [I(5,146)] = {64,0}, + [I(6,146)] = {64,0}, + [I(7,146)] = {64,0}, + [I(8,146)] = {64,0}, + [I(9,146)] = {64,0}, + [I(10,146)] = {64,0}, + [I(11,146)] = {64,0}, + [I(12,146)] = {64,0}, + [I(13,146)] = {64,0}, + [I(14,146)] = {64,0}, + [I(15,146)] = {64,0}, + [I(16,146)] = {64,0}, + [I(17,146)] = {64,0}, + [I(18,146)] = {64,0}, + [I(19,146)] = {64,0}, + [I(20,146)] = {64,0}, + [I(21,146)] = {64,0}, + [I(22,146)] = {64,0}, + [I(23,146)] = {64,0}, + [I(24,146)] = {64,0}, + [I(25,146)] = {64,0}, + [I(26,146)] = {64,0}, + [I(27,146)] = {64,0}, + [I(28,146)] = {64,0}, + [I(29,146)] = {64,0}, + [I(30,146)] = {64,0}, + [I(31,146)] = {64,0}, + [I(32,146)] = {28,0x53FFFD7}, + [I(33,146)] = {X32,0xFE3FFFD7}, + [I(34,146)] = {X32,0xFE7FFFD7}, + [I(35,146)] = {64,0}, + [I(36,146)] = {64,0}, + [I(37,146)] = {28,0x57FFFD7}, + [I(38,146)] = {30,0x3E3FFFD7}, + [I(39,146)] = {64,0}, + [I(40,146)] = {X32,0xFEBFFFD7}, + [I(41,146)] = {X32,0xFEFFFFD7}, + [I(42,146)] = {30,0x3E7FFFD7}, + [I(43,146)] = {64,0}, + [I(44,146)] = {30,0x3EBFFFD7}, + [I(45,146)] = {28,0x5BFFFD7}, + [I(46,146)] = {28,0x5FFFFD7}, + [I(47,146)] = {28,0x63FFFD7}, + [I(48,146)] = {27,0x3FFFD7}, + [I(49,146)] = {27,0x7FFFD7}, + [I(50,146)] = {27,0xBFFFD7}, + [I(51,146)] = {28,0x67FFFD7}, + [I(52,146)] = {28,0x6BFFFD7}, + [I(53,146)] = {28,0x6FFFFD7}, + [I(54,146)] = {28,0x73FFFD7}, + [I(55,146)] = {28,0x77FFFD7}, + [I(56,146)] = {28,0x7BFFFD7}, + [I(57,146)] = {28,0x7FFFFD7}, + [I(58,146)] = {29,0x173FFFD7}, + [I(59,146)] = {30,0x3EFFFFD7}, + [I(60,146)] = {64,0}, + [I(61,146)] = {28,0x83FFFD7}, + [I(62,146)] = {64,0}, + [I(63,146)] = {X32,0xFF3FFFD7}, + [I(64,146)] = {64,0}, + [I(65,146)] = {28,0x87FFFD7}, + [I(66,146)] = {29,0x177FFFD7}, + [I(67,146)] = {29,0x17BFFFD7}, + [I(68,146)] = {29,0x17FFFFD7}, + [I(69,146)] = {29,0x183FFFD7}, + [I(70,146)] = {29,0x187FFFD7}, + [I(71,146)] = {29,0x18BFFFD7}, + [I(72,146)] = {29,0x18FFFFD7}, + [I(73,146)] = {29,0x193FFFD7}, + [I(74,146)] = {29,0x197FFFD7}, + [I(75,146)] = {29,0x19BFFFD7}, + [I(76,146)] = {29,0x19FFFFD7}, + [I(77,146)] = {29,0x1A3FFFD7}, + [I(78,146)] = {29,0x1A7FFFD7}, + [I(79,146)] = {29,0x1ABFFFD7}, + [I(80,146)] = {29,0x1AFFFFD7}, + [I(81,146)] = {29,0x1B3FFFD7}, + [I(82,146)] = {29,0x1B7FFFD7}, + [I(83,146)] = {29,0x1BBFFFD7}, + [I(84,146)] = {29,0x1BFFFFD7}, + [I(85,146)] = {29,0x1C3FFFD7}, + [I(86,146)] = {29,0x1C7FFFD7}, + [I(87,146)] = {29,0x1CBFFFD7}, + [I(88,146)] = {30,0x3F3FFFD7}, + [I(89,146)] = {29,0x1CFFFFD7}, + [I(90,146)] = {30,0x3F7FFFD7}, + [I(91,146)] = {64,0}, + [I(92,146)] = {64,0}, + [I(93,146)] = {64,0}, + [I(94,146)] = {64,0}, + [I(95,146)] = {28,0x8BFFFD7}, + [I(96,146)] = {64,0}, + [I(97,146)] = {27,0xFFFFD7}, + [I(98,146)] = {28,0x8FFFFD7}, + [I(99,146)] = {27,0x13FFFD7}, + [I(100,146)] = {28,0x93FFFD7}, + [I(101,146)] = {27,0x17FFFD7}, + [I(102,146)] = {28,0x97FFFD7}, + [I(103,146)] = {28,0x9BFFFD7}, + [I(104,146)] = {28,0x9FFFFD7}, + [I(105,146)] = {27,0x1BFFFD7}, + [I(106,146)] = {29,0x1D3FFFD7}, + [I(107,146)] = {29,0x1D7FFFD7}, + [I(108,146)] = {28,0xA3FFFD7}, + [I(109,146)] = {28,0xA7FFFD7}, + [I(110,146)] = {28,0xABFFFD7}, + [I(111,146)] = {27,0x1FFFFD7}, + [I(112,146)] = {28,0xAFFFFD7}, + [I(113,146)] = {29,0x1DBFFFD7}, + [I(114,146)] = {28,0xB3FFFD7}, + [I(115,146)] = {27,0x23FFFD7}, + [I(116,146)] = {27,0x27FFFD7}, + [I(117,146)] = {28,0xB7FFFD7}, + [I(118,146)] = {29,0x1DFFFFD7}, + [I(119,146)] = {29,0x1E3FFFD7}, + [I(120,146)] = {29,0x1E7FFFD7}, + [I(121,146)] = {29,0x1EBFFFD7}, + [I(122,146)] = {29,0x1EFFFFD7}, + [I(123,146)] = {64,0}, + [I(124,146)] = {64,0}, + [I(125,146)] = {64,0}, + [I(126,146)] = {64,0}, + [I(127,146)] = {64,0}, + [I(128,146)] = {64,0}, + [I(129,146)] = {64,0}, + [I(130,146)] = {64,0}, + [I(131,146)] = {64,0}, + [I(132,146)] = {64,0}, + [I(133,146)] = {64,0}, + [I(134,146)] = {64,0}, + [I(135,146)] = {64,0}, + [I(136,146)] = {64,0}, + [I(137,146)] = {64,0}, + [I(138,146)] = {64,0}, + [I(139,146)] = {64,0}, + [I(140,146)] = {64,0}, + [I(141,146)] = {64,0}, + [I(142,146)] = {64,0}, + [I(143,146)] = {64,0}, + [I(144,146)] = {64,0}, + [I(145,146)] = {64,0}, + [I(146,146)] = {64,0}, + [I(147,146)] = {64,0}, + [I(148,146)] = {64,0}, + [I(149,146)] = {64,0}, + [I(150,146)] = {64,0}, + [I(151,146)] = {64,0}, + [I(152,146)] = {64,0}, + [I(153,146)] = {64,0}, + [I(154,146)] = {64,0}, + [I(155,146)] = {64,0}, + [I(156,146)] = {64,0}, + [I(157,146)] = {64,0}, + [I(158,146)] = {64,0}, + [I(159,146)] = {64,0}, + [I(160,146)] = {64,0}, + [I(161,146)] = {64,0}, + [I(162,146)] = {64,0}, + [I(163,146)] = {64,0}, + [I(164,146)] = {64,0}, + [I(165,146)] = {64,0}, + [I(166,146)] = {64,0}, + [I(167,146)] = {64,0}, + [I(168,146)] = {64,0}, + [I(169,146)] = {64,0}, + [I(170,146)] = {64,0}, + [I(171,146)] = {64,0}, + [I(172,146)] = {64,0}, + [I(173,146)] = {64,0}, + [I(174,146)] = {64,0}, + [I(175,146)] = {64,0}, + [I(176,146)] = {64,0}, + [I(177,146)] = {64,0}, + [I(178,146)] = {64,0}, + [I(179,146)] = {64,0}, + [I(180,146)] = {64,0}, + [I(181,146)] = {64,0}, + [I(182,146)] = {64,0}, + [I(183,146)] = {64,0}, + [I(184,146)] = {64,0}, + [I(185,146)] = {64,0}, + [I(186,146)] = {64,0}, + [I(187,146)] = {64,0}, + [I(188,146)] = {64,0}, + [I(189,146)] = {64,0}, + [I(190,146)] = {64,0}, + [I(191,146)] = {64,0}, + [I(192,146)] = {64,0}, + [I(193,146)] = {64,0}, + [I(194,146)] = {64,0}, + [I(195,146)] = {64,0}, + [I(196,146)] = {64,0}, + [I(197,146)] = {64,0}, + [I(198,146)] = {64,0}, + [I(199,146)] = {64,0}, + [I(200,146)] = {64,0}, + [I(201,146)] = {64,0}, + [I(202,146)] = {64,0}, + [I(203,146)] = {64,0}, + [I(204,146)] = {64,0}, + [I(205,146)] = {64,0}, + [I(206,146)] = {64,0}, + [I(207,146)] = {64,0}, + [I(208,146)] = {64,0}, + [I(209,146)] = {64,0}, + [I(210,146)] = {64,0}, + [I(211,146)] = {64,0}, + [I(212,146)] = {64,0}, + [I(213,146)] = {64,0}, + [I(214,146)] = {64,0}, + [I(215,146)] = {64,0}, + [I(216,146)] = {64,0}, + [I(217,146)] = {64,0}, + [I(218,146)] = {64,0}, + [I(219,146)] = {64,0}, + [I(220,146)] = {64,0}, + [I(221,146)] = {64,0}, + [I(222,146)] = {64,0}, + [I(223,146)] = {64,0}, + [I(224,146)] = {64,0}, + [I(225,146)] = {64,0}, + [I(226,146)] = {64,0}, + [I(227,146)] = {64,0}, + [I(228,146)] = {64,0}, + [I(229,146)] = {64,0}, + [I(230,146)] = {64,0}, + [I(231,146)] = {64,0}, + [I(232,146)] = {64,0}, + [I(233,146)] = {64,0}, + [I(234,146)] = {64,0}, + [I(235,146)] = {64,0}, + [I(236,146)] = {64,0}, + [I(237,146)] = {64,0}, + [I(238,146)] = {64,0}, + [I(239,146)] = {64,0}, + [I(240,146)] = {64,0}, + [I(241,146)] = {64,0}, + [I(242,146)] = {64,0}, + [I(243,146)] = {64,0}, + [I(244,146)] = {64,0}, + [I(245,146)] = {64,0}, + [I(246,146)] = {64,0}, + [I(247,146)] = {64,0}, + [I(248,146)] = {64,0}, + [I(249,146)] = {64,0}, + [I(250,146)] = {64,0}, + [I(251,146)] = {64,0}, + [I(252,146)] = {64,0}, + [I(253,146)] = {64,0}, + [I(254,146)] = {64,0}, + [I(255,146)] = {64,0}, + [I(0,147)] = {64,0}, + [I(1,147)] = {64,0}, + [I(2,147)] = {64,0}, + [I(3,147)] = {64,0}, + [I(4,147)] = {64,0}, + [I(5,147)] = {64,0}, + [I(6,147)] = {64,0}, + [I(7,147)] = {64,0}, + [I(8,147)] = {64,0}, + [I(9,147)] = {64,0}, + [I(10,147)] = {64,0}, + [I(11,147)] = {64,0}, + [I(12,147)] = {64,0}, + [I(13,147)] = {64,0}, + [I(14,147)] = {64,0}, + [I(15,147)] = {64,0}, + [I(16,147)] = {64,0}, + [I(17,147)] = {64,0}, + [I(18,147)] = {64,0}, + [I(19,147)] = {64,0}, + [I(20,147)] = {64,0}, + [I(21,147)] = {64,0}, + [I(22,147)] = {64,0}, + [I(23,147)] = {64,0}, + [I(24,147)] = {64,0}, + [I(25,147)] = {64,0}, + [I(26,147)] = {64,0}, + [I(27,147)] = {64,0}, + [I(28,147)] = {64,0}, + [I(29,147)] = {64,0}, + [I(30,147)] = {64,0}, + [I(31,147)] = {64,0}, + [I(32,147)] = {29,0xA7FFFE0}, + [I(33,147)] = {64,0}, + [I(34,147)] = {64,0}, + [I(35,147)] = {64,0}, + [I(36,147)] = {64,0}, + [I(37,147)] = {29,0xAFFFFE0}, + [I(38,147)] = {31,0x7C7FFFE0}, + [I(39,147)] = {64,0}, + [I(40,147)] = {64,0}, + [I(41,147)] = {64,0}, + [I(42,147)] = {31,0x7CFFFFE0}, + [I(43,147)] = {64,0}, + [I(44,147)] = {31,0x7D7FFFE0}, + [I(45,147)] = {29,0xB7FFFE0}, + [I(46,147)] = {29,0xBFFFFE0}, + [I(47,147)] = {29,0xC7FFFE0}, + [I(48,147)] = {28,0x7FFFE0}, + [I(49,147)] = {28,0xFFFFE0}, + [I(50,147)] = {28,0x17FFFE0}, + [I(51,147)] = {29,0xCFFFFE0}, + [I(52,147)] = {29,0xD7FFFE0}, + [I(53,147)] = {29,0xDFFFFE0}, + [I(54,147)] = {29,0xE7FFFE0}, + [I(55,147)] = {29,0xEFFFFE0}, + [I(56,147)] = {29,0xF7FFFE0}, + [I(57,147)] = {29,0xFFFFFE0}, + [I(58,147)] = {30,0x2E7FFFE0}, + [I(59,147)] = {31,0x7DFFFFE0}, + [I(60,147)] = {64,0}, + [I(61,147)] = {29,0x107FFFE0}, + [I(62,147)] = {64,0}, + [I(63,147)] = {64,0}, + [I(64,147)] = {64,0}, + [I(65,147)] = {29,0x10FFFFE0}, + [I(66,147)] = {30,0x2EFFFFE0}, + [I(67,147)] = {30,0x2F7FFFE0}, + [I(68,147)] = {30,0x2FFFFFE0}, + [I(69,147)] = {30,0x307FFFE0}, + [I(70,147)] = {30,0x30FFFFE0}, + [I(71,147)] = {30,0x317FFFE0}, + [I(72,147)] = {30,0x31FFFFE0}, + [I(73,147)] = {30,0x327FFFE0}, + [I(74,147)] = {30,0x32FFFFE0}, + [I(75,147)] = {30,0x337FFFE0}, + [I(76,147)] = {30,0x33FFFFE0}, + [I(77,147)] = {30,0x347FFFE0}, + [I(78,147)] = {30,0x34FFFFE0}, + [I(79,147)] = {30,0x357FFFE0}, + [I(80,147)] = {30,0x35FFFFE0}, + [I(81,147)] = {30,0x367FFFE0}, + [I(82,147)] = {30,0x36FFFFE0}, + [I(83,147)] = {30,0x377FFFE0}, + [I(84,147)] = {30,0x37FFFFE0}, + [I(85,147)] = {30,0x387FFFE0}, + [I(86,147)] = {30,0x38FFFFE0}, + [I(87,147)] = {30,0x397FFFE0}, + [I(88,147)] = {31,0x7E7FFFE0}, + [I(89,147)] = {30,0x39FFFFE0}, + [I(90,147)] = {31,0x7EFFFFE0}, + [I(91,147)] = {64,0}, + [I(92,147)] = {64,0}, + [I(93,147)] = {64,0}, + [I(94,147)] = {64,0}, + [I(95,147)] = {29,0x117FFFE0}, + [I(96,147)] = {64,0}, + [I(97,147)] = {28,0x1FFFFE0}, + [I(98,147)] = {29,0x11FFFFE0}, + [I(99,147)] = {28,0x27FFFE0}, + [I(100,147)] = {29,0x127FFFE0}, + [I(101,147)] = {28,0x2FFFFE0}, + [I(102,147)] = {29,0x12FFFFE0}, + [I(103,147)] = {29,0x137FFFE0}, + [I(104,147)] = {29,0x13FFFFE0}, + [I(105,147)] = {28,0x37FFFE0}, + [I(106,147)] = {30,0x3A7FFFE0}, + [I(107,147)] = {30,0x3AFFFFE0}, + [I(108,147)] = {29,0x147FFFE0}, + [I(109,147)] = {29,0x14FFFFE0}, + [I(110,147)] = {29,0x157FFFE0}, + [I(111,147)] = {28,0x3FFFFE0}, + [I(112,147)] = {29,0x15FFFFE0}, + [I(113,147)] = {30,0x3B7FFFE0}, + [I(114,147)] = {29,0x167FFFE0}, + [I(115,147)] = {28,0x47FFFE0}, + [I(116,147)] = {28,0x4FFFFE0}, + [I(117,147)] = {29,0x16FFFFE0}, + [I(118,147)] = {30,0x3BFFFFE0}, + [I(119,147)] = {30,0x3C7FFFE0}, + [I(120,147)] = {30,0x3CFFFFE0}, + [I(121,147)] = {30,0x3D7FFFE0}, + [I(122,147)] = {30,0x3DFFFFE0}, + [I(123,147)] = {64,0}, + [I(124,147)] = {64,0}, + [I(125,147)] = {64,0}, + [I(126,147)] = {64,0}, + [I(127,147)] = {64,0}, + [I(128,147)] = {64,0}, + [I(129,147)] = {64,0}, + [I(130,147)] = {64,0}, + [I(131,147)] = {64,0}, + [I(132,147)] = {64,0}, + [I(133,147)] = {64,0}, + [I(134,147)] = {64,0}, + [I(135,147)] = {64,0}, + [I(136,147)] = {64,0}, + [I(137,147)] = {64,0}, + [I(138,147)] = {64,0}, + [I(139,147)] = {64,0}, + [I(140,147)] = {64,0}, + [I(141,147)] = {64,0}, + [I(142,147)] = {64,0}, + [I(143,147)] = {64,0}, + [I(144,147)] = {64,0}, + [I(145,147)] = {64,0}, + [I(146,147)] = {64,0}, + [I(147,147)] = {64,0}, + [I(148,147)] = {64,0}, + [I(149,147)] = {64,0}, + [I(150,147)] = {64,0}, + [I(151,147)] = {64,0}, + [I(152,147)] = {64,0}, + [I(153,147)] = {64,0}, + [I(154,147)] = {64,0}, + [I(155,147)] = {64,0}, + [I(156,147)] = {64,0}, + [I(157,147)] = {64,0}, + [I(158,147)] = {64,0}, + [I(159,147)] = {64,0}, + [I(160,147)] = {64,0}, + [I(161,147)] = {64,0}, + [I(162,147)] = {64,0}, + [I(163,147)] = {64,0}, + [I(164,147)] = {64,0}, + [I(165,147)] = {64,0}, + [I(166,147)] = {64,0}, + [I(167,147)] = {64,0}, + [I(168,147)] = {64,0}, + [I(169,147)] = {64,0}, + [I(170,147)] = {64,0}, + [I(171,147)] = {64,0}, + [I(172,147)] = {64,0}, + [I(173,147)] = {64,0}, + [I(174,147)] = {64,0}, + [I(175,147)] = {64,0}, + [I(176,147)] = {64,0}, + [I(177,147)] = {64,0}, + [I(178,147)] = {64,0}, + [I(179,147)] = {64,0}, + [I(180,147)] = {64,0}, + [I(181,147)] = {64,0}, + [I(182,147)] = {64,0}, + [I(183,147)] = {64,0}, + [I(184,147)] = {64,0}, + [I(185,147)] = {64,0}, + [I(186,147)] = {64,0}, + [I(187,147)] = {64,0}, + [I(188,147)] = {64,0}, + [I(189,147)] = {64,0}, + [I(190,147)] = {64,0}, + [I(191,147)] = {64,0}, + [I(192,147)] = {64,0}, + [I(193,147)] = {64,0}, + [I(194,147)] = {64,0}, + [I(195,147)] = {64,0}, + [I(196,147)] = {64,0}, + [I(197,147)] = {64,0}, + [I(198,147)] = {64,0}, + [I(199,147)] = {64,0}, + [I(200,147)] = {64,0}, + [I(201,147)] = {64,0}, + [I(202,147)] = {64,0}, + [I(203,147)] = {64,0}, + [I(204,147)] = {64,0}, + [I(205,147)] = {64,0}, + [I(206,147)] = {64,0}, + [I(207,147)] = {64,0}, + [I(208,147)] = {64,0}, + [I(209,147)] = {64,0}, + [I(210,147)] = {64,0}, + [I(211,147)] = {64,0}, + [I(212,147)] = {64,0}, + [I(213,147)] = {64,0}, + [I(214,147)] = {64,0}, + [I(215,147)] = {64,0}, + [I(216,147)] = {64,0}, + [I(217,147)] = {64,0}, + [I(218,147)] = {64,0}, + [I(219,147)] = {64,0}, + [I(220,147)] = {64,0}, + [I(221,147)] = {64,0}, + [I(222,147)] = {64,0}, + [I(223,147)] = {64,0}, + [I(224,147)] = {64,0}, + [I(225,147)] = {64,0}, + [I(226,147)] = {64,0}, + [I(227,147)] = {64,0}, + [I(228,147)] = {64,0}, + [I(229,147)] = {64,0}, + [I(230,147)] = {64,0}, + [I(231,147)] = {64,0}, + [I(232,147)] = {64,0}, + [I(233,147)] = {64,0}, + [I(234,147)] = {64,0}, + [I(235,147)] = {64,0}, + [I(236,147)] = {64,0}, + [I(237,147)] = {64,0}, + [I(238,147)] = {64,0}, + [I(239,147)] = {64,0}, + [I(240,147)] = {64,0}, + [I(241,147)] = {64,0}, + [I(242,147)] = {64,0}, + [I(243,147)] = {64,0}, + [I(244,147)] = {64,0}, + [I(245,147)] = {64,0}, + [I(246,147)] = {64,0}, + [I(247,147)] = {64,0}, + [I(248,147)] = {64,0}, + [I(249,147)] = {64,0}, + [I(250,147)] = {64,0}, + [I(251,147)] = {64,0}, + [I(252,147)] = {64,0}, + [I(253,147)] = {64,0}, + [I(254,147)] = {64,0}, + [I(255,147)] = {64,0}, + [I(0,148)] = {64,0}, + [I(1,148)] = {64,0}, + [I(2,148)] = {64,0}, + [I(3,148)] = {64,0}, + [I(4,148)] = {64,0}, + [I(5,148)] = {64,0}, + [I(6,148)] = {64,0}, + [I(7,148)] = {64,0}, + [I(8,148)] = {64,0}, + [I(9,148)] = {64,0}, + [I(10,148)] = {64,0}, + [I(11,148)] = {64,0}, + [I(12,148)] = {64,0}, + [I(13,148)] = {64,0}, + [I(14,148)] = {64,0}, + [I(15,148)] = {64,0}, + [I(16,148)] = {64,0}, + [I(17,148)] = {64,0}, + [I(18,148)] = {64,0}, + [I(19,148)] = {64,0}, + [I(20,148)] = {64,0}, + [I(21,148)] = {64,0}, + [I(22,148)] = {64,0}, + [I(23,148)] = {64,0}, + [I(24,148)] = {64,0}, + [I(25,148)] = {64,0}, + [I(26,148)] = {64,0}, + [I(27,148)] = {64,0}, + [I(28,148)] = {64,0}, + [I(29,148)] = {64,0}, + [I(30,148)] = {64,0}, + [I(31,148)] = {64,0}, + [I(32,148)] = {30,0x14FFFFEE}, + [I(33,148)] = {64,0}, + [I(34,148)] = {64,0}, + [I(35,148)] = {64,0}, + [I(36,148)] = {64,0}, + [I(37,148)] = {30,0x15FFFFEE}, + [I(38,148)] = {X32,0xF8FFFFEE}, + [I(39,148)] = {64,0}, + [I(40,148)] = {64,0}, + [I(41,148)] = {64,0}, + [I(42,148)] = {X32,0xF9FFFFEE}, + [I(43,148)] = {64,0}, + [I(44,148)] = {X32,0xFAFFFFEE}, + [I(45,148)] = {30,0x16FFFFEE}, + [I(46,148)] = {30,0x17FFFFEE}, + [I(47,148)] = {30,0x18FFFFEE}, + [I(48,148)] = {29,0xFFFFEE}, + [I(49,148)] = {29,0x1FFFFEE}, + [I(50,148)] = {29,0x2FFFFEE}, + [I(51,148)] = {30,0x19FFFFEE}, + [I(52,148)] = {30,0x1AFFFFEE}, + [I(53,148)] = {30,0x1BFFFFEE}, + [I(54,148)] = {30,0x1CFFFFEE}, + [I(55,148)] = {30,0x1DFFFFEE}, + [I(56,148)] = {30,0x1EFFFFEE}, + [I(57,148)] = {30,0x1FFFFFEE}, + [I(58,148)] = {31,0x5CFFFFEE}, + [I(59,148)] = {X32,0xFBFFFFEE}, + [I(60,148)] = {64,0}, + [I(61,148)] = {30,0x20FFFFEE}, + [I(62,148)] = {64,0}, + [I(63,148)] = {64,0}, + [I(64,148)] = {64,0}, + [I(65,148)] = {30,0x21FFFFEE}, + [I(66,148)] = {31,0x5DFFFFEE}, + [I(67,148)] = {31,0x5EFFFFEE}, + [I(68,148)] = {31,0x5FFFFFEE}, + [I(69,148)] = {31,0x60FFFFEE}, + [I(70,148)] = {31,0x61FFFFEE}, + [I(71,148)] = {31,0x62FFFFEE}, + [I(72,148)] = {31,0x63FFFFEE}, + [I(73,148)] = {31,0x64FFFFEE}, + [I(74,148)] = {31,0x65FFFFEE}, + [I(75,148)] = {31,0x66FFFFEE}, + [I(76,148)] = {31,0x67FFFFEE}, + [I(77,148)] = {31,0x68FFFFEE}, + [I(78,148)] = {31,0x69FFFFEE}, + [I(79,148)] = {31,0x6AFFFFEE}, + [I(80,148)] = {31,0x6BFFFFEE}, + [I(81,148)] = {31,0x6CFFFFEE}, + [I(82,148)] = {31,0x6DFFFFEE}, + [I(83,148)] = {31,0x6EFFFFEE}, + [I(84,148)] = {31,0x6FFFFFEE}, + [I(85,148)] = {31,0x70FFFFEE}, + [I(86,148)] = {31,0x71FFFFEE}, + [I(87,148)] = {31,0x72FFFFEE}, + [I(88,148)] = {X32,0xFCFFFFEE}, + [I(89,148)] = {31,0x73FFFFEE}, + [I(90,148)] = {X32,0xFDFFFFEE}, + [I(91,148)] = {64,0}, + [I(92,148)] = {64,0}, + [I(93,148)] = {64,0}, + [I(94,148)] = {64,0}, + [I(95,148)] = {30,0x22FFFFEE}, + [I(96,148)] = {64,0}, + [I(97,148)] = {29,0x3FFFFEE}, + [I(98,148)] = {30,0x23FFFFEE}, + [I(99,148)] = {29,0x4FFFFEE}, + [I(100,148)] = {30,0x24FFFFEE}, + [I(101,148)] = {29,0x5FFFFEE}, + [I(102,148)] = {30,0x25FFFFEE}, + [I(103,148)] = {30,0x26FFFFEE}, + [I(104,148)] = {30,0x27FFFFEE}, + [I(105,148)] = {29,0x6FFFFEE}, + [I(106,148)] = {31,0x74FFFFEE}, + [I(107,148)] = {31,0x75FFFFEE}, + [I(108,148)] = {30,0x28FFFFEE}, + [I(109,148)] = {30,0x29FFFFEE}, + [I(110,148)] = {30,0x2AFFFFEE}, + [I(111,148)] = {29,0x7FFFFEE}, + [I(112,148)] = {30,0x2BFFFFEE}, + [I(113,148)] = {31,0x76FFFFEE}, + [I(114,148)] = {30,0x2CFFFFEE}, + [I(115,148)] = {29,0x8FFFFEE}, + [I(116,148)] = {29,0x9FFFFEE}, + [I(117,148)] = {30,0x2DFFFFEE}, + [I(118,148)] = {31,0x77FFFFEE}, + [I(119,148)] = {31,0x78FFFFEE}, + [I(120,148)] = {31,0x79FFFFEE}, + [I(121,148)] = {31,0x7AFFFFEE}, + [I(122,148)] = {31,0x7BFFFFEE}, + [I(123,148)] = {64,0}, + [I(124,148)] = {64,0}, + [I(125,148)] = {64,0}, + [I(126,148)] = {64,0}, + [I(127,148)] = {64,0}, + [I(128,148)] = {64,0}, + [I(129,148)] = {64,0}, + [I(130,148)] = {64,0}, + [I(131,148)] = {64,0}, + [I(132,148)] = {64,0}, + [I(133,148)] = {64,0}, + [I(134,148)] = {64,0}, + [I(135,148)] = {64,0}, + [I(136,148)] = {64,0}, + [I(137,148)] = {64,0}, + [I(138,148)] = {64,0}, + [I(139,148)] = {64,0}, + [I(140,148)] = {64,0}, + [I(141,148)] = {64,0}, + [I(142,148)] = {64,0}, + [I(143,148)] = {64,0}, + [I(144,148)] = {64,0}, + [I(145,148)] = {64,0}, + [I(146,148)] = {64,0}, + [I(147,148)] = {64,0}, + [I(148,148)] = {64,0}, + [I(149,148)] = {64,0}, + [I(150,148)] = {64,0}, + [I(151,148)] = {64,0}, + [I(152,148)] = {64,0}, + [I(153,148)] = {64,0}, + [I(154,148)] = {64,0}, + [I(155,148)] = {64,0}, + [I(156,148)] = {64,0}, + [I(157,148)] = {64,0}, + [I(158,148)] = {64,0}, + [I(159,148)] = {64,0}, + [I(160,148)] = {64,0}, + [I(161,148)] = {64,0}, + [I(162,148)] = {64,0}, + [I(163,148)] = {64,0}, + [I(164,148)] = {64,0}, + [I(165,148)] = {64,0}, + [I(166,148)] = {64,0}, + [I(167,148)] = {64,0}, + [I(168,148)] = {64,0}, + [I(169,148)] = {64,0}, + [I(170,148)] = {64,0}, + [I(171,148)] = {64,0}, + [I(172,148)] = {64,0}, + [I(173,148)] = {64,0}, + [I(174,148)] = {64,0}, + [I(175,148)] = {64,0}, + [I(176,148)] = {64,0}, + [I(177,148)] = {64,0}, + [I(178,148)] = {64,0}, + [I(179,148)] = {64,0}, + [I(180,148)] = {64,0}, + [I(181,148)] = {64,0}, + [I(182,148)] = {64,0}, + [I(183,148)] = {64,0}, + [I(184,148)] = {64,0}, + [I(185,148)] = {64,0}, + [I(186,148)] = {64,0}, + [I(187,148)] = {64,0}, + [I(188,148)] = {64,0}, + [I(189,148)] = {64,0}, + [I(190,148)] = {64,0}, + [I(191,148)] = {64,0}, + [I(192,148)] = {64,0}, + [I(193,148)] = {64,0}, + [I(194,148)] = {64,0}, + [I(195,148)] = {64,0}, + [I(196,148)] = {64,0}, + [I(197,148)] = {64,0}, + [I(198,148)] = {64,0}, + [I(199,148)] = {64,0}, + [I(200,148)] = {64,0}, + [I(201,148)] = {64,0}, + [I(202,148)] = {64,0}, + [I(203,148)] = {64,0}, + [I(204,148)] = {64,0}, + [I(205,148)] = {64,0}, + [I(206,148)] = {64,0}, + [I(207,148)] = {64,0}, + [I(208,148)] = {64,0}, + [I(209,148)] = {64,0}, + [I(210,148)] = {64,0}, + [I(211,148)] = {64,0}, + [I(212,148)] = {64,0}, + [I(213,148)] = {64,0}, + [I(214,148)] = {64,0}, + [I(215,148)] = {64,0}, + [I(216,148)] = {64,0}, + [I(217,148)] = {64,0}, + [I(218,148)] = {64,0}, + [I(219,148)] = {64,0}, + [I(220,148)] = {64,0}, + [I(221,148)] = {64,0}, + [I(222,148)] = {64,0}, + [I(223,148)] = {64,0}, + [I(224,148)] = {64,0}, + [I(225,148)] = {64,0}, + [I(226,148)] = {64,0}, + [I(227,148)] = {64,0}, + [I(228,148)] = {64,0}, + [I(229,148)] = {64,0}, + [I(230,148)] = {64,0}, + [I(231,148)] = {64,0}, + [I(232,148)] = {64,0}, + [I(233,148)] = {64,0}, + [I(234,148)] = {64,0}, + [I(235,148)] = {64,0}, + [I(236,148)] = {64,0}, + [I(237,148)] = {64,0}, + [I(238,148)] = {64,0}, + [I(239,148)] = {64,0}, + [I(240,148)] = {64,0}, + [I(241,148)] = {64,0}, + [I(242,148)] = {64,0}, + [I(243,148)] = {64,0}, + [I(244,148)] = {64,0}, + [I(245,148)] = {64,0}, + [I(246,148)] = {64,0}, + [I(247,148)] = {64,0}, + [I(248,148)] = {64,0}, + [I(249,148)] = {64,0}, + [I(250,148)] = {64,0}, + [I(251,148)] = {64,0}, + [I(252,148)] = {64,0}, + [I(253,148)] = {64,0}, + [I(254,148)] = {64,0}, + [I(255,148)] = {64,0}, + [I(0,149)] = {64,0}, + [I(1,149)] = {64,0}, + [I(2,149)] = {64,0}, + [I(3,149)] = {64,0}, + [I(4,149)] = {64,0}, + [I(5,149)] = {64,0}, + [I(6,149)] = {64,0}, + [I(7,149)] = {64,0}, + [I(8,149)] = {64,0}, + [I(9,149)] = {64,0}, + [I(10,149)] = {64,0}, + [I(11,149)] = {64,0}, + [I(12,149)] = {64,0}, + [I(13,149)] = {64,0}, + [I(14,149)] = {64,0}, + [I(15,149)] = {64,0}, + [I(16,149)] = {64,0}, + [I(17,149)] = {64,0}, + [I(18,149)] = {64,0}, + [I(19,149)] = {64,0}, + [I(20,149)] = {64,0}, + [I(21,149)] = {64,0}, + [I(22,149)] = {64,0}, + [I(23,149)] = {64,0}, + [I(24,149)] = {64,0}, + [I(25,149)] = {64,0}, + [I(26,149)] = {64,0}, + [I(27,149)] = {64,0}, + [I(28,149)] = {64,0}, + [I(29,149)] = {64,0}, + [I(30,149)] = {64,0}, + [I(31,149)] = {64,0}, + [I(32,149)] = {29,0xA7FFFE1}, + [I(33,149)] = {64,0}, + [I(34,149)] = {64,0}, + [I(35,149)] = {64,0}, + [I(36,149)] = {64,0}, + [I(37,149)] = {29,0xAFFFFE1}, + [I(38,149)] = {31,0x7C7FFFE1}, + [I(39,149)] = {64,0}, + [I(40,149)] = {64,0}, + [I(41,149)] = {64,0}, + [I(42,149)] = {31,0x7CFFFFE1}, + [I(43,149)] = {64,0}, + [I(44,149)] = {31,0x7D7FFFE1}, + [I(45,149)] = {29,0xB7FFFE1}, + [I(46,149)] = {29,0xBFFFFE1}, + [I(47,149)] = {29,0xC7FFFE1}, + [I(48,149)] = {28,0x7FFFE1}, + [I(49,149)] = {28,0xFFFFE1}, + [I(50,149)] = {28,0x17FFFE1}, + [I(51,149)] = {29,0xCFFFFE1}, + [I(52,149)] = {29,0xD7FFFE1}, + [I(53,149)] = {29,0xDFFFFE1}, + [I(54,149)] = {29,0xE7FFFE1}, + [I(55,149)] = {29,0xEFFFFE1}, + [I(56,149)] = {29,0xF7FFFE1}, + [I(57,149)] = {29,0xFFFFFE1}, + [I(58,149)] = {30,0x2E7FFFE1}, + [I(59,149)] = {31,0x7DFFFFE1}, + [I(60,149)] = {64,0}, + [I(61,149)] = {29,0x107FFFE1}, + [I(62,149)] = {64,0}, + [I(63,149)] = {64,0}, + [I(64,149)] = {64,0}, + [I(65,149)] = {29,0x10FFFFE1}, + [I(66,149)] = {30,0x2EFFFFE1}, + [I(67,149)] = {30,0x2F7FFFE1}, + [I(68,149)] = {30,0x2FFFFFE1}, + [I(69,149)] = {30,0x307FFFE1}, + [I(70,149)] = {30,0x30FFFFE1}, + [I(71,149)] = {30,0x317FFFE1}, + [I(72,149)] = {30,0x31FFFFE1}, + [I(73,149)] = {30,0x327FFFE1}, + [I(74,149)] = {30,0x32FFFFE1}, + [I(75,149)] = {30,0x337FFFE1}, + [I(76,149)] = {30,0x33FFFFE1}, + [I(77,149)] = {30,0x347FFFE1}, + [I(78,149)] = {30,0x34FFFFE1}, + [I(79,149)] = {30,0x357FFFE1}, + [I(80,149)] = {30,0x35FFFFE1}, + [I(81,149)] = {30,0x367FFFE1}, + [I(82,149)] = {30,0x36FFFFE1}, + [I(83,149)] = {30,0x377FFFE1}, + [I(84,149)] = {30,0x37FFFFE1}, + [I(85,149)] = {30,0x387FFFE1}, + [I(86,149)] = {30,0x38FFFFE1}, + [I(87,149)] = {30,0x397FFFE1}, + [I(88,149)] = {31,0x7E7FFFE1}, + [I(89,149)] = {30,0x39FFFFE1}, + [I(90,149)] = {31,0x7EFFFFE1}, + [I(91,149)] = {64,0}, + [I(92,149)] = {64,0}, + [I(93,149)] = {64,0}, + [I(94,149)] = {64,0}, + [I(95,149)] = {29,0x117FFFE1}, + [I(96,149)] = {64,0}, + [I(97,149)] = {28,0x1FFFFE1}, + [I(98,149)] = {29,0x11FFFFE1}, + [I(99,149)] = {28,0x27FFFE1}, + [I(100,149)] = {29,0x127FFFE1}, + [I(101,149)] = {28,0x2FFFFE1}, + [I(102,149)] = {29,0x12FFFFE1}, + [I(103,149)] = {29,0x137FFFE1}, + [I(104,149)] = {29,0x13FFFFE1}, + [I(105,149)] = {28,0x37FFFE1}, + [I(106,149)] = {30,0x3A7FFFE1}, + [I(107,149)] = {30,0x3AFFFFE1}, + [I(108,149)] = {29,0x147FFFE1}, + [I(109,149)] = {29,0x14FFFFE1}, + [I(110,149)] = {29,0x157FFFE1}, + [I(111,149)] = {28,0x3FFFFE1}, + [I(112,149)] = {29,0x15FFFFE1}, + [I(113,149)] = {30,0x3B7FFFE1}, + [I(114,149)] = {29,0x167FFFE1}, + [I(115,149)] = {28,0x47FFFE1}, + [I(116,149)] = {28,0x4FFFFE1}, + [I(117,149)] = {29,0x16FFFFE1}, + [I(118,149)] = {30,0x3BFFFFE1}, + [I(119,149)] = {30,0x3C7FFFE1}, + [I(120,149)] = {30,0x3CFFFFE1}, + [I(121,149)] = {30,0x3D7FFFE1}, + [I(122,149)] = {30,0x3DFFFFE1}, + [I(123,149)] = {64,0}, + [I(124,149)] = {64,0}, + [I(125,149)] = {64,0}, + [I(126,149)] = {64,0}, + [I(127,149)] = {64,0}, + [I(128,149)] = {64,0}, + [I(129,149)] = {64,0}, + [I(130,149)] = {64,0}, + [I(131,149)] = {64,0}, + [I(132,149)] = {64,0}, + [I(133,149)] = {64,0}, + [I(134,149)] = {64,0}, + [I(135,149)] = {64,0}, + [I(136,149)] = {64,0}, + [I(137,149)] = {64,0}, + [I(138,149)] = {64,0}, + [I(139,149)] = {64,0}, + [I(140,149)] = {64,0}, + [I(141,149)] = {64,0}, + [I(142,149)] = {64,0}, + [I(143,149)] = {64,0}, + [I(144,149)] = {64,0}, + [I(145,149)] = {64,0}, + [I(146,149)] = {64,0}, + [I(147,149)] = {64,0}, + [I(148,149)] = {64,0}, + [I(149,149)] = {64,0}, + [I(150,149)] = {64,0}, + [I(151,149)] = {64,0}, + [I(152,149)] = {64,0}, + [I(153,149)] = {64,0}, + [I(154,149)] = {64,0}, + [I(155,149)] = {64,0}, + [I(156,149)] = {64,0}, + [I(157,149)] = {64,0}, + [I(158,149)] = {64,0}, + [I(159,149)] = {64,0}, + [I(160,149)] = {64,0}, + [I(161,149)] = {64,0}, + [I(162,149)] = {64,0}, + [I(163,149)] = {64,0}, + [I(164,149)] = {64,0}, + [I(165,149)] = {64,0}, + [I(166,149)] = {64,0}, + [I(167,149)] = {64,0}, + [I(168,149)] = {64,0}, + [I(169,149)] = {64,0}, + [I(170,149)] = {64,0}, + [I(171,149)] = {64,0}, + [I(172,149)] = {64,0}, + [I(173,149)] = {64,0}, + [I(174,149)] = {64,0}, + [I(175,149)] = {64,0}, + [I(176,149)] = {64,0}, + [I(177,149)] = {64,0}, + [I(178,149)] = {64,0}, + [I(179,149)] = {64,0}, + [I(180,149)] = {64,0}, + [I(181,149)] = {64,0}, + [I(182,149)] = {64,0}, + [I(183,149)] = {64,0}, + [I(184,149)] = {64,0}, + [I(185,149)] = {64,0}, + [I(186,149)] = {64,0}, + [I(187,149)] = {64,0}, + [I(188,149)] = {64,0}, + [I(189,149)] = {64,0}, + [I(190,149)] = {64,0}, + [I(191,149)] = {64,0}, + [I(192,149)] = {64,0}, + [I(193,149)] = {64,0}, + [I(194,149)] = {64,0}, + [I(195,149)] = {64,0}, + [I(196,149)] = {64,0}, + [I(197,149)] = {64,0}, + [I(198,149)] = {64,0}, + [I(199,149)] = {64,0}, + [I(200,149)] = {64,0}, + [I(201,149)] = {64,0}, + [I(202,149)] = {64,0}, + [I(203,149)] = {64,0}, + [I(204,149)] = {64,0}, + [I(205,149)] = {64,0}, + [I(206,149)] = {64,0}, + [I(207,149)] = {64,0}, + [I(208,149)] = {64,0}, + [I(209,149)] = {64,0}, + [I(210,149)] = {64,0}, + [I(211,149)] = {64,0}, + [I(212,149)] = {64,0}, + [I(213,149)] = {64,0}, + [I(214,149)] = {64,0}, + [I(215,149)] = {64,0}, + [I(216,149)] = {64,0}, + [I(217,149)] = {64,0}, + [I(218,149)] = {64,0}, + [I(219,149)] = {64,0}, + [I(220,149)] = {64,0}, + [I(221,149)] = {64,0}, + [I(222,149)] = {64,0}, + [I(223,149)] = {64,0}, + [I(224,149)] = {64,0}, + [I(225,149)] = {64,0}, + [I(226,149)] = {64,0}, + [I(227,149)] = {64,0}, + [I(228,149)] = {64,0}, + [I(229,149)] = {64,0}, + [I(230,149)] = {64,0}, + [I(231,149)] = {64,0}, + [I(232,149)] = {64,0}, + [I(233,149)] = {64,0}, + [I(234,149)] = {64,0}, + [I(235,149)] = {64,0}, + [I(236,149)] = {64,0}, + [I(237,149)] = {64,0}, + [I(238,149)] = {64,0}, + [I(239,149)] = {64,0}, + [I(240,149)] = {64,0}, + [I(241,149)] = {64,0}, + [I(242,149)] = {64,0}, + [I(243,149)] = {64,0}, + [I(244,149)] = {64,0}, + [I(245,149)] = {64,0}, + [I(246,149)] = {64,0}, + [I(247,149)] = {64,0}, + [I(248,149)] = {64,0}, + [I(249,149)] = {64,0}, + [I(250,149)] = {64,0}, + [I(251,149)] = {64,0}, + [I(252,149)] = {64,0}, + [I(253,149)] = {64,0}, + [I(254,149)] = {64,0}, + [I(255,149)] = {64,0}, + [I(0,150)] = {64,0}, + [I(1,150)] = {64,0}, + [I(2,150)] = {64,0}, + [I(3,150)] = {64,0}, + [I(4,150)] = {64,0}, + [I(5,150)] = {64,0}, + [I(6,150)] = {64,0}, + [I(7,150)] = {64,0}, + [I(8,150)] = {64,0}, + [I(9,150)] = {64,0}, + [I(10,150)] = {64,0}, + [I(11,150)] = {64,0}, + [I(12,150)] = {64,0}, + [I(13,150)] = {64,0}, + [I(14,150)] = {64,0}, + [I(15,150)] = {64,0}, + [I(16,150)] = {64,0}, + [I(17,150)] = {64,0}, + [I(18,150)] = {64,0}, + [I(19,150)] = {64,0}, + [I(20,150)] = {64,0}, + [I(21,150)] = {64,0}, + [I(22,150)] = {64,0}, + [I(23,150)] = {64,0}, + [I(24,150)] = {64,0}, + [I(25,150)] = {64,0}, + [I(26,150)] = {64,0}, + [I(27,150)] = {64,0}, + [I(28,150)] = {64,0}, + [I(29,150)] = {64,0}, + [I(30,150)] = {64,0}, + [I(31,150)] = {64,0}, + [I(32,150)] = {29,0xA7FFFE2}, + [I(33,150)] = {64,0}, + [I(34,150)] = {64,0}, + [I(35,150)] = {64,0}, + [I(36,150)] = {64,0}, + [I(37,150)] = {29,0xAFFFFE2}, + [I(38,150)] = {31,0x7C7FFFE2}, + [I(39,150)] = {64,0}, + [I(40,150)] = {64,0}, + [I(41,150)] = {64,0}, + [I(42,150)] = {31,0x7CFFFFE2}, + [I(43,150)] = {64,0}, + [I(44,150)] = {31,0x7D7FFFE2}, + [I(45,150)] = {29,0xB7FFFE2}, + [I(46,150)] = {29,0xBFFFFE2}, + [I(47,150)] = {29,0xC7FFFE2}, + [I(48,150)] = {28,0x7FFFE2}, + [I(49,150)] = {28,0xFFFFE2}, + [I(50,150)] = {28,0x17FFFE2}, + [I(51,150)] = {29,0xCFFFFE2}, + [I(52,150)] = {29,0xD7FFFE2}, + [I(53,150)] = {29,0xDFFFFE2}, + [I(54,150)] = {29,0xE7FFFE2}, + [I(55,150)] = {29,0xEFFFFE2}, + [I(56,150)] = {29,0xF7FFFE2}, + [I(57,150)] = {29,0xFFFFFE2}, + [I(58,150)] = {30,0x2E7FFFE2}, + [I(59,150)] = {31,0x7DFFFFE2}, + [I(60,150)] = {64,0}, + [I(61,150)] = {29,0x107FFFE2}, + [I(62,150)] = {64,0}, + [I(63,150)] = {64,0}, + [I(64,150)] = {64,0}, + [I(65,150)] = {29,0x10FFFFE2}, + [I(66,150)] = {30,0x2EFFFFE2}, + [I(67,150)] = {30,0x2F7FFFE2}, + [I(68,150)] = {30,0x2FFFFFE2}, + [I(69,150)] = {30,0x307FFFE2}, + [I(70,150)] = {30,0x30FFFFE2}, + [I(71,150)] = {30,0x317FFFE2}, + [I(72,150)] = {30,0x31FFFFE2}, + [I(73,150)] = {30,0x327FFFE2}, + [I(74,150)] = {30,0x32FFFFE2}, + [I(75,150)] = {30,0x337FFFE2}, + [I(76,150)] = {30,0x33FFFFE2}, + [I(77,150)] = {30,0x347FFFE2}, + [I(78,150)] = {30,0x34FFFFE2}, + [I(79,150)] = {30,0x357FFFE2}, + [I(80,150)] = {30,0x35FFFFE2}, + [I(81,150)] = {30,0x367FFFE2}, + [I(82,150)] = {30,0x36FFFFE2}, + [I(83,150)] = {30,0x377FFFE2}, + [I(84,150)] = {30,0x37FFFFE2}, + [I(85,150)] = {30,0x387FFFE2}, + [I(86,150)] = {30,0x38FFFFE2}, + [I(87,150)] = {30,0x397FFFE2}, + [I(88,150)] = {31,0x7E7FFFE2}, + [I(89,150)] = {30,0x39FFFFE2}, + [I(90,150)] = {31,0x7EFFFFE2}, + [I(91,150)] = {64,0}, + [I(92,150)] = {64,0}, + [I(93,150)] = {64,0}, + [I(94,150)] = {64,0}, + [I(95,150)] = {29,0x117FFFE2}, + [I(96,150)] = {64,0}, + [I(97,150)] = {28,0x1FFFFE2}, + [I(98,150)] = {29,0x11FFFFE2}, + [I(99,150)] = {28,0x27FFFE2}, + [I(100,150)] = {29,0x127FFFE2}, + [I(101,150)] = {28,0x2FFFFE2}, + [I(102,150)] = {29,0x12FFFFE2}, + [I(103,150)] = {29,0x137FFFE2}, + [I(104,150)] = {29,0x13FFFFE2}, + [I(105,150)] = {28,0x37FFFE2}, + [I(106,150)] = {30,0x3A7FFFE2}, + [I(107,150)] = {30,0x3AFFFFE2}, + [I(108,150)] = {29,0x147FFFE2}, + [I(109,150)] = {29,0x14FFFFE2}, + [I(110,150)] = {29,0x157FFFE2}, + [I(111,150)] = {28,0x3FFFFE2}, + [I(112,150)] = {29,0x15FFFFE2}, + [I(113,150)] = {30,0x3B7FFFE2}, + [I(114,150)] = {29,0x167FFFE2}, + [I(115,150)] = {28,0x47FFFE2}, + [I(116,150)] = {28,0x4FFFFE2}, + [I(117,150)] = {29,0x16FFFFE2}, + [I(118,150)] = {30,0x3BFFFFE2}, + [I(119,150)] = {30,0x3C7FFFE2}, + [I(120,150)] = {30,0x3CFFFFE2}, + [I(121,150)] = {30,0x3D7FFFE2}, + [I(122,150)] = {30,0x3DFFFFE2}, + [I(123,150)] = {64,0}, + [I(124,150)] = {64,0}, + [I(125,150)] = {64,0}, + [I(126,150)] = {64,0}, + [I(127,150)] = {64,0}, + [I(128,150)] = {64,0}, + [I(129,150)] = {64,0}, + [I(130,150)] = {64,0}, + [I(131,150)] = {64,0}, + [I(132,150)] = {64,0}, + [I(133,150)] = {64,0}, + [I(134,150)] = {64,0}, + [I(135,150)] = {64,0}, + [I(136,150)] = {64,0}, + [I(137,150)] = {64,0}, + [I(138,150)] = {64,0}, + [I(139,150)] = {64,0}, + [I(140,150)] = {64,0}, + [I(141,150)] = {64,0}, + [I(142,150)] = {64,0}, + [I(143,150)] = {64,0}, + [I(144,150)] = {64,0}, + [I(145,150)] = {64,0}, + [I(146,150)] = {64,0}, + [I(147,150)] = {64,0}, + [I(148,150)] = {64,0}, + [I(149,150)] = {64,0}, + [I(150,150)] = {64,0}, + [I(151,150)] = {64,0}, + [I(152,150)] = {64,0}, + [I(153,150)] = {64,0}, + [I(154,150)] = {64,0}, + [I(155,150)] = {64,0}, + [I(156,150)] = {64,0}, + [I(157,150)] = {64,0}, + [I(158,150)] = {64,0}, + [I(159,150)] = {64,0}, + [I(160,150)] = {64,0}, + [I(161,150)] = {64,0}, + [I(162,150)] = {64,0}, + [I(163,150)] = {64,0}, + [I(164,150)] = {64,0}, + [I(165,150)] = {64,0}, + [I(166,150)] = {64,0}, + [I(167,150)] = {64,0}, + [I(168,150)] = {64,0}, + [I(169,150)] = {64,0}, + [I(170,150)] = {64,0}, + [I(171,150)] = {64,0}, + [I(172,150)] = {64,0}, + [I(173,150)] = {64,0}, + [I(174,150)] = {64,0}, + [I(175,150)] = {64,0}, + [I(176,150)] = {64,0}, + [I(177,150)] = {64,0}, + [I(178,150)] = {64,0}, + [I(179,150)] = {64,0}, + [I(180,150)] = {64,0}, + [I(181,150)] = {64,0}, + [I(182,150)] = {64,0}, + [I(183,150)] = {64,0}, + [I(184,150)] = {64,0}, + [I(185,150)] = {64,0}, + [I(186,150)] = {64,0}, + [I(187,150)] = {64,0}, + [I(188,150)] = {64,0}, + [I(189,150)] = {64,0}, + [I(190,150)] = {64,0}, + [I(191,150)] = {64,0}, + [I(192,150)] = {64,0}, + [I(193,150)] = {64,0}, + [I(194,150)] = {64,0}, + [I(195,150)] = {64,0}, + [I(196,150)] = {64,0}, + [I(197,150)] = {64,0}, + [I(198,150)] = {64,0}, + [I(199,150)] = {64,0}, + [I(200,150)] = {64,0}, + [I(201,150)] = {64,0}, + [I(202,150)] = {64,0}, + [I(203,150)] = {64,0}, + [I(204,150)] = {64,0}, + [I(205,150)] = {64,0}, + [I(206,150)] = {64,0}, + [I(207,150)] = {64,0}, + [I(208,150)] = {64,0}, + [I(209,150)] = {64,0}, + [I(210,150)] = {64,0}, + [I(211,150)] = {64,0}, + [I(212,150)] = {64,0}, + [I(213,150)] = {64,0}, + [I(214,150)] = {64,0}, + [I(215,150)] = {64,0}, + [I(216,150)] = {64,0}, + [I(217,150)] = {64,0}, + [I(218,150)] = {64,0}, + [I(219,150)] = {64,0}, + [I(220,150)] = {64,0}, + [I(221,150)] = {64,0}, + [I(222,150)] = {64,0}, + [I(223,150)] = {64,0}, + [I(224,150)] = {64,0}, + [I(225,150)] = {64,0}, + [I(226,150)] = {64,0}, + [I(227,150)] = {64,0}, + [I(228,150)] = {64,0}, + [I(229,150)] = {64,0}, + [I(230,150)] = {64,0}, + [I(231,150)] = {64,0}, + [I(232,150)] = {64,0}, + [I(233,150)] = {64,0}, + [I(234,150)] = {64,0}, + [I(235,150)] = {64,0}, + [I(236,150)] = {64,0}, + [I(237,150)] = {64,0}, + [I(238,150)] = {64,0}, + [I(239,150)] = {64,0}, + [I(240,150)] = {64,0}, + [I(241,150)] = {64,0}, + [I(242,150)] = {64,0}, + [I(243,150)] = {64,0}, + [I(244,150)] = {64,0}, + [I(245,150)] = {64,0}, + [I(246,150)] = {64,0}, + [I(247,150)] = {64,0}, + [I(248,150)] = {64,0}, + [I(249,150)] = {64,0}, + [I(250,150)] = {64,0}, + [I(251,150)] = {64,0}, + [I(252,150)] = {64,0}, + [I(253,150)] = {64,0}, + [I(254,150)] = {64,0}, + [I(255,150)] = {64,0}, + [I(0,151)] = {64,0}, + [I(1,151)] = {64,0}, + [I(2,151)] = {64,0}, + [I(3,151)] = {64,0}, + [I(4,151)] = {64,0}, + [I(5,151)] = {64,0}, + [I(6,151)] = {64,0}, + [I(7,151)] = {64,0}, + [I(8,151)] = {64,0}, + [I(9,151)] = {64,0}, + [I(10,151)] = {64,0}, + [I(11,151)] = {64,0}, + [I(12,151)] = {64,0}, + [I(13,151)] = {64,0}, + [I(14,151)] = {64,0}, + [I(15,151)] = {64,0}, + [I(16,151)] = {64,0}, + [I(17,151)] = {64,0}, + [I(18,151)] = {64,0}, + [I(19,151)] = {64,0}, + [I(20,151)] = {64,0}, + [I(21,151)] = {64,0}, + [I(22,151)] = {64,0}, + [I(23,151)] = {64,0}, + [I(24,151)] = {64,0}, + [I(25,151)] = {64,0}, + [I(26,151)] = {64,0}, + [I(27,151)] = {64,0}, + [I(28,151)] = {64,0}, + [I(29,151)] = {64,0}, + [I(30,151)] = {64,0}, + [I(31,151)] = {64,0}, + [I(32,151)] = {29,0xA7FFFE3}, + [I(33,151)] = {64,0}, + [I(34,151)] = {64,0}, + [I(35,151)] = {64,0}, + [I(36,151)] = {64,0}, + [I(37,151)] = {29,0xAFFFFE3}, + [I(38,151)] = {31,0x7C7FFFE3}, + [I(39,151)] = {64,0}, + [I(40,151)] = {64,0}, + [I(41,151)] = {64,0}, + [I(42,151)] = {31,0x7CFFFFE3}, + [I(43,151)] = {64,0}, + [I(44,151)] = {31,0x7D7FFFE3}, + [I(45,151)] = {29,0xB7FFFE3}, + [I(46,151)] = {29,0xBFFFFE3}, + [I(47,151)] = {29,0xC7FFFE3}, + [I(48,151)] = {28,0x7FFFE3}, + [I(49,151)] = {28,0xFFFFE3}, + [I(50,151)] = {28,0x17FFFE3}, + [I(51,151)] = {29,0xCFFFFE3}, + [I(52,151)] = {29,0xD7FFFE3}, + [I(53,151)] = {29,0xDFFFFE3}, + [I(54,151)] = {29,0xE7FFFE3}, + [I(55,151)] = {29,0xEFFFFE3}, + [I(56,151)] = {29,0xF7FFFE3}, + [I(57,151)] = {29,0xFFFFFE3}, + [I(58,151)] = {30,0x2E7FFFE3}, + [I(59,151)] = {31,0x7DFFFFE3}, + [I(60,151)] = {64,0}, + [I(61,151)] = {29,0x107FFFE3}, + [I(62,151)] = {64,0}, + [I(63,151)] = {64,0}, + [I(64,151)] = {64,0}, + [I(65,151)] = {29,0x10FFFFE3}, + [I(66,151)] = {30,0x2EFFFFE3}, + [I(67,151)] = {30,0x2F7FFFE3}, + [I(68,151)] = {30,0x2FFFFFE3}, + [I(69,151)] = {30,0x307FFFE3}, + [I(70,151)] = {30,0x30FFFFE3}, + [I(71,151)] = {30,0x317FFFE3}, + [I(72,151)] = {30,0x31FFFFE3}, + [I(73,151)] = {30,0x327FFFE3}, + [I(74,151)] = {30,0x32FFFFE3}, + [I(75,151)] = {30,0x337FFFE3}, + [I(76,151)] = {30,0x33FFFFE3}, + [I(77,151)] = {30,0x347FFFE3}, + [I(78,151)] = {30,0x34FFFFE3}, + [I(79,151)] = {30,0x357FFFE3}, + [I(80,151)] = {30,0x35FFFFE3}, + [I(81,151)] = {30,0x367FFFE3}, + [I(82,151)] = {30,0x36FFFFE3}, + [I(83,151)] = {30,0x377FFFE3}, + [I(84,151)] = {30,0x37FFFFE3}, + [I(85,151)] = {30,0x387FFFE3}, + [I(86,151)] = {30,0x38FFFFE3}, + [I(87,151)] = {30,0x397FFFE3}, + [I(88,151)] = {31,0x7E7FFFE3}, + [I(89,151)] = {30,0x39FFFFE3}, + [I(90,151)] = {31,0x7EFFFFE3}, + [I(91,151)] = {64,0}, + [I(92,151)] = {64,0}, + [I(93,151)] = {64,0}, + [I(94,151)] = {64,0}, + [I(95,151)] = {29,0x117FFFE3}, + [I(96,151)] = {64,0}, + [I(97,151)] = {28,0x1FFFFE3}, + [I(98,151)] = {29,0x11FFFFE3}, + [I(99,151)] = {28,0x27FFFE3}, + [I(100,151)] = {29,0x127FFFE3}, + [I(101,151)] = {28,0x2FFFFE3}, + [I(102,151)] = {29,0x12FFFFE3}, + [I(103,151)] = {29,0x137FFFE3}, + [I(104,151)] = {29,0x13FFFFE3}, + [I(105,151)] = {28,0x37FFFE3}, + [I(106,151)] = {30,0x3A7FFFE3}, + [I(107,151)] = {30,0x3AFFFFE3}, + [I(108,151)] = {29,0x147FFFE3}, + [I(109,151)] = {29,0x14FFFFE3}, + [I(110,151)] = {29,0x157FFFE3}, + [I(111,151)] = {28,0x3FFFFE3}, + [I(112,151)] = {29,0x15FFFFE3}, + [I(113,151)] = {30,0x3B7FFFE3}, + [I(114,151)] = {29,0x167FFFE3}, + [I(115,151)] = {28,0x47FFFE3}, + [I(116,151)] = {28,0x4FFFFE3}, + [I(117,151)] = {29,0x16FFFFE3}, + [I(118,151)] = {30,0x3BFFFFE3}, + [I(119,151)] = {30,0x3C7FFFE3}, + [I(120,151)] = {30,0x3CFFFFE3}, + [I(121,151)] = {30,0x3D7FFFE3}, + [I(122,151)] = {30,0x3DFFFFE3}, + [I(123,151)] = {64,0}, + [I(124,151)] = {64,0}, + [I(125,151)] = {64,0}, + [I(126,151)] = {64,0}, + [I(127,151)] = {64,0}, + [I(128,151)] = {64,0}, + [I(129,151)] = {64,0}, + [I(130,151)] = {64,0}, + [I(131,151)] = {64,0}, + [I(132,151)] = {64,0}, + [I(133,151)] = {64,0}, + [I(134,151)] = {64,0}, + [I(135,151)] = {64,0}, + [I(136,151)] = {64,0}, + [I(137,151)] = {64,0}, + [I(138,151)] = {64,0}, + [I(139,151)] = {64,0}, + [I(140,151)] = {64,0}, + [I(141,151)] = {64,0}, + [I(142,151)] = {64,0}, + [I(143,151)] = {64,0}, + [I(144,151)] = {64,0}, + [I(145,151)] = {64,0}, + [I(146,151)] = {64,0}, + [I(147,151)] = {64,0}, + [I(148,151)] = {64,0}, + [I(149,151)] = {64,0}, + [I(150,151)] = {64,0}, + [I(151,151)] = {64,0}, + [I(152,151)] = {64,0}, + [I(153,151)] = {64,0}, + [I(154,151)] = {64,0}, + [I(155,151)] = {64,0}, + [I(156,151)] = {64,0}, + [I(157,151)] = {64,0}, + [I(158,151)] = {64,0}, + [I(159,151)] = {64,0}, + [I(160,151)] = {64,0}, + [I(161,151)] = {64,0}, + [I(162,151)] = {64,0}, + [I(163,151)] = {64,0}, + [I(164,151)] = {64,0}, + [I(165,151)] = {64,0}, + [I(166,151)] = {64,0}, + [I(167,151)] = {64,0}, + [I(168,151)] = {64,0}, + [I(169,151)] = {64,0}, + [I(170,151)] = {64,0}, + [I(171,151)] = {64,0}, + [I(172,151)] = {64,0}, + [I(173,151)] = {64,0}, + [I(174,151)] = {64,0}, + [I(175,151)] = {64,0}, + [I(176,151)] = {64,0}, + [I(177,151)] = {64,0}, + [I(178,151)] = {64,0}, + [I(179,151)] = {64,0}, + [I(180,151)] = {64,0}, + [I(181,151)] = {64,0}, + [I(182,151)] = {64,0}, + [I(183,151)] = {64,0}, + [I(184,151)] = {64,0}, + [I(185,151)] = {64,0}, + [I(186,151)] = {64,0}, + [I(187,151)] = {64,0}, + [I(188,151)] = {64,0}, + [I(189,151)] = {64,0}, + [I(190,151)] = {64,0}, + [I(191,151)] = {64,0}, + [I(192,151)] = {64,0}, + [I(193,151)] = {64,0}, + [I(194,151)] = {64,0}, + [I(195,151)] = {64,0}, + [I(196,151)] = {64,0}, + [I(197,151)] = {64,0}, + [I(198,151)] = {64,0}, + [I(199,151)] = {64,0}, + [I(200,151)] = {64,0}, + [I(201,151)] = {64,0}, + [I(202,151)] = {64,0}, + [I(203,151)] = {64,0}, + [I(204,151)] = {64,0}, + [I(205,151)] = {64,0}, + [I(206,151)] = {64,0}, + [I(207,151)] = {64,0}, + [I(208,151)] = {64,0}, + [I(209,151)] = {64,0}, + [I(210,151)] = {64,0}, + [I(211,151)] = {64,0}, + [I(212,151)] = {64,0}, + [I(213,151)] = {64,0}, + [I(214,151)] = {64,0}, + [I(215,151)] = {64,0}, + [I(216,151)] = {64,0}, + [I(217,151)] = {64,0}, + [I(218,151)] = {64,0}, + [I(219,151)] = {64,0}, + [I(220,151)] = {64,0}, + [I(221,151)] = {64,0}, + [I(222,151)] = {64,0}, + [I(223,151)] = {64,0}, + [I(224,151)] = {64,0}, + [I(225,151)] = {64,0}, + [I(226,151)] = {64,0}, + [I(227,151)] = {64,0}, + [I(228,151)] = {64,0}, + [I(229,151)] = {64,0}, + [I(230,151)] = {64,0}, + [I(231,151)] = {64,0}, + [I(232,151)] = {64,0}, + [I(233,151)] = {64,0}, + [I(234,151)] = {64,0}, + [I(235,151)] = {64,0}, + [I(236,151)] = {64,0}, + [I(237,151)] = {64,0}, + [I(238,151)] = {64,0}, + [I(239,151)] = {64,0}, + [I(240,151)] = {64,0}, + [I(241,151)] = {64,0}, + [I(242,151)] = {64,0}, + [I(243,151)] = {64,0}, + [I(244,151)] = {64,0}, + [I(245,151)] = {64,0}, + [I(246,151)] = {64,0}, + [I(247,151)] = {64,0}, + [I(248,151)] = {64,0}, + [I(249,151)] = {64,0}, + [I(250,151)] = {64,0}, + [I(251,151)] = {64,0}, + [I(252,151)] = {64,0}, + [I(253,151)] = {64,0}, + [I(254,151)] = {64,0}, + [I(255,151)] = {64,0}, + [I(0,152)] = {64,0}, + [I(1,152)] = {64,0}, + [I(2,152)] = {64,0}, + [I(3,152)] = {64,0}, + [I(4,152)] = {64,0}, + [I(5,152)] = {64,0}, + [I(6,152)] = {64,0}, + [I(7,152)] = {64,0}, + [I(8,152)] = {64,0}, + [I(9,152)] = {64,0}, + [I(10,152)] = {64,0}, + [I(11,152)] = {64,0}, + [I(12,152)] = {64,0}, + [I(13,152)] = {64,0}, + [I(14,152)] = {64,0}, + [I(15,152)] = {64,0}, + [I(16,152)] = {64,0}, + [I(17,152)] = {64,0}, + [I(18,152)] = {64,0}, + [I(19,152)] = {64,0}, + [I(20,152)] = {64,0}, + [I(21,152)] = {64,0}, + [I(22,152)] = {64,0}, + [I(23,152)] = {64,0}, + [I(24,152)] = {64,0}, + [I(25,152)] = {64,0}, + [I(26,152)] = {64,0}, + [I(27,152)] = {64,0}, + [I(28,152)] = {64,0}, + [I(29,152)] = {64,0}, + [I(30,152)] = {64,0}, + [I(31,152)] = {64,0}, + [I(32,152)] = {29,0xA7FFFE4}, + [I(33,152)] = {64,0}, + [I(34,152)] = {64,0}, + [I(35,152)] = {64,0}, + [I(36,152)] = {64,0}, + [I(37,152)] = {29,0xAFFFFE4}, + [I(38,152)] = {31,0x7C7FFFE4}, + [I(39,152)] = {64,0}, + [I(40,152)] = {64,0}, + [I(41,152)] = {64,0}, + [I(42,152)] = {31,0x7CFFFFE4}, + [I(43,152)] = {64,0}, + [I(44,152)] = {31,0x7D7FFFE4}, + [I(45,152)] = {29,0xB7FFFE4}, + [I(46,152)] = {29,0xBFFFFE4}, + [I(47,152)] = {29,0xC7FFFE4}, + [I(48,152)] = {28,0x7FFFE4}, + [I(49,152)] = {28,0xFFFFE4}, + [I(50,152)] = {28,0x17FFFE4}, + [I(51,152)] = {29,0xCFFFFE4}, + [I(52,152)] = {29,0xD7FFFE4}, + [I(53,152)] = {29,0xDFFFFE4}, + [I(54,152)] = {29,0xE7FFFE4}, + [I(55,152)] = {29,0xEFFFFE4}, + [I(56,152)] = {29,0xF7FFFE4}, + [I(57,152)] = {29,0xFFFFFE4}, + [I(58,152)] = {30,0x2E7FFFE4}, + [I(59,152)] = {31,0x7DFFFFE4}, + [I(60,152)] = {64,0}, + [I(61,152)] = {29,0x107FFFE4}, + [I(62,152)] = {64,0}, + [I(63,152)] = {64,0}, + [I(64,152)] = {64,0}, + [I(65,152)] = {29,0x10FFFFE4}, + [I(66,152)] = {30,0x2EFFFFE4}, + [I(67,152)] = {30,0x2F7FFFE4}, + [I(68,152)] = {30,0x2FFFFFE4}, + [I(69,152)] = {30,0x307FFFE4}, + [I(70,152)] = {30,0x30FFFFE4}, + [I(71,152)] = {30,0x317FFFE4}, + [I(72,152)] = {30,0x31FFFFE4}, + [I(73,152)] = {30,0x327FFFE4}, + [I(74,152)] = {30,0x32FFFFE4}, + [I(75,152)] = {30,0x337FFFE4}, + [I(76,152)] = {30,0x33FFFFE4}, + [I(77,152)] = {30,0x347FFFE4}, + [I(78,152)] = {30,0x34FFFFE4}, + [I(79,152)] = {30,0x357FFFE4}, + [I(80,152)] = {30,0x35FFFFE4}, + [I(81,152)] = {30,0x367FFFE4}, + [I(82,152)] = {30,0x36FFFFE4}, + [I(83,152)] = {30,0x377FFFE4}, + [I(84,152)] = {30,0x37FFFFE4}, + [I(85,152)] = {30,0x387FFFE4}, + [I(86,152)] = {30,0x38FFFFE4}, + [I(87,152)] = {30,0x397FFFE4}, + [I(88,152)] = {31,0x7E7FFFE4}, + [I(89,152)] = {30,0x39FFFFE4}, + [I(90,152)] = {31,0x7EFFFFE4}, + [I(91,152)] = {64,0}, + [I(92,152)] = {64,0}, + [I(93,152)] = {64,0}, + [I(94,152)] = {64,0}, + [I(95,152)] = {29,0x117FFFE4}, + [I(96,152)] = {64,0}, + [I(97,152)] = {28,0x1FFFFE4}, + [I(98,152)] = {29,0x11FFFFE4}, + [I(99,152)] = {28,0x27FFFE4}, + [I(100,152)] = {29,0x127FFFE4}, + [I(101,152)] = {28,0x2FFFFE4}, + [I(102,152)] = {29,0x12FFFFE4}, + [I(103,152)] = {29,0x137FFFE4}, + [I(104,152)] = {29,0x13FFFFE4}, + [I(105,152)] = {28,0x37FFFE4}, + [I(106,152)] = {30,0x3A7FFFE4}, + [I(107,152)] = {30,0x3AFFFFE4}, + [I(108,152)] = {29,0x147FFFE4}, + [I(109,152)] = {29,0x14FFFFE4}, + [I(110,152)] = {29,0x157FFFE4}, + [I(111,152)] = {28,0x3FFFFE4}, + [I(112,152)] = {29,0x15FFFFE4}, + [I(113,152)] = {30,0x3B7FFFE4}, + [I(114,152)] = {29,0x167FFFE4}, + [I(115,152)] = {28,0x47FFFE4}, + [I(116,152)] = {28,0x4FFFFE4}, + [I(117,152)] = {29,0x16FFFFE4}, + [I(118,152)] = {30,0x3BFFFFE4}, + [I(119,152)] = {30,0x3C7FFFE4}, + [I(120,152)] = {30,0x3CFFFFE4}, + [I(121,152)] = {30,0x3D7FFFE4}, + [I(122,152)] = {30,0x3DFFFFE4}, + [I(123,152)] = {64,0}, + [I(124,152)] = {64,0}, + [I(125,152)] = {64,0}, + [I(126,152)] = {64,0}, + [I(127,152)] = {64,0}, + [I(128,152)] = {64,0}, + [I(129,152)] = {64,0}, + [I(130,152)] = {64,0}, + [I(131,152)] = {64,0}, + [I(132,152)] = {64,0}, + [I(133,152)] = {64,0}, + [I(134,152)] = {64,0}, + [I(135,152)] = {64,0}, + [I(136,152)] = {64,0}, + [I(137,152)] = {64,0}, + [I(138,152)] = {64,0}, + [I(139,152)] = {64,0}, + [I(140,152)] = {64,0}, + [I(141,152)] = {64,0}, + [I(142,152)] = {64,0}, + [I(143,152)] = {64,0}, + [I(144,152)] = {64,0}, + [I(145,152)] = {64,0}, + [I(146,152)] = {64,0}, + [I(147,152)] = {64,0}, + [I(148,152)] = {64,0}, + [I(149,152)] = {64,0}, + [I(150,152)] = {64,0}, + [I(151,152)] = {64,0}, + [I(152,152)] = {64,0}, + [I(153,152)] = {64,0}, + [I(154,152)] = {64,0}, + [I(155,152)] = {64,0}, + [I(156,152)] = {64,0}, + [I(157,152)] = {64,0}, + [I(158,152)] = {64,0}, + [I(159,152)] = {64,0}, + [I(160,152)] = {64,0}, + [I(161,152)] = {64,0}, + [I(162,152)] = {64,0}, + [I(163,152)] = {64,0}, + [I(164,152)] = {64,0}, + [I(165,152)] = {64,0}, + [I(166,152)] = {64,0}, + [I(167,152)] = {64,0}, + [I(168,152)] = {64,0}, + [I(169,152)] = {64,0}, + [I(170,152)] = {64,0}, + [I(171,152)] = {64,0}, + [I(172,152)] = {64,0}, + [I(173,152)] = {64,0}, + [I(174,152)] = {64,0}, + [I(175,152)] = {64,0}, + [I(176,152)] = {64,0}, + [I(177,152)] = {64,0}, + [I(178,152)] = {64,0}, + [I(179,152)] = {64,0}, + [I(180,152)] = {64,0}, + [I(181,152)] = {64,0}, + [I(182,152)] = {64,0}, + [I(183,152)] = {64,0}, + [I(184,152)] = {64,0}, + [I(185,152)] = {64,0}, + [I(186,152)] = {64,0}, + [I(187,152)] = {64,0}, + [I(188,152)] = {64,0}, + [I(189,152)] = {64,0}, + [I(190,152)] = {64,0}, + [I(191,152)] = {64,0}, + [I(192,152)] = {64,0}, + [I(193,152)] = {64,0}, + [I(194,152)] = {64,0}, + [I(195,152)] = {64,0}, + [I(196,152)] = {64,0}, + [I(197,152)] = {64,0}, + [I(198,152)] = {64,0}, + [I(199,152)] = {64,0}, + [I(200,152)] = {64,0}, + [I(201,152)] = {64,0}, + [I(202,152)] = {64,0}, + [I(203,152)] = {64,0}, + [I(204,152)] = {64,0}, + [I(205,152)] = {64,0}, + [I(206,152)] = {64,0}, + [I(207,152)] = {64,0}, + [I(208,152)] = {64,0}, + [I(209,152)] = {64,0}, + [I(210,152)] = {64,0}, + [I(211,152)] = {64,0}, + [I(212,152)] = {64,0}, + [I(213,152)] = {64,0}, + [I(214,152)] = {64,0}, + [I(215,152)] = {64,0}, + [I(216,152)] = {64,0}, + [I(217,152)] = {64,0}, + [I(218,152)] = {64,0}, + [I(219,152)] = {64,0}, + [I(220,152)] = {64,0}, + [I(221,152)] = {64,0}, + [I(222,152)] = {64,0}, + [I(223,152)] = {64,0}, + [I(224,152)] = {64,0}, + [I(225,152)] = {64,0}, + [I(226,152)] = {64,0}, + [I(227,152)] = {64,0}, + [I(228,152)] = {64,0}, + [I(229,152)] = {64,0}, + [I(230,152)] = {64,0}, + [I(231,152)] = {64,0}, + [I(232,152)] = {64,0}, + [I(233,152)] = {64,0}, + [I(234,152)] = {64,0}, + [I(235,152)] = {64,0}, + [I(236,152)] = {64,0}, + [I(237,152)] = {64,0}, + [I(238,152)] = {64,0}, + [I(239,152)] = {64,0}, + [I(240,152)] = {64,0}, + [I(241,152)] = {64,0}, + [I(242,152)] = {64,0}, + [I(243,152)] = {64,0}, + [I(244,152)] = {64,0}, + [I(245,152)] = {64,0}, + [I(246,152)] = {64,0}, + [I(247,152)] = {64,0}, + [I(248,152)] = {64,0}, + [I(249,152)] = {64,0}, + [I(250,152)] = {64,0}, + [I(251,152)] = {64,0}, + [I(252,152)] = {64,0}, + [I(253,152)] = {64,0}, + [I(254,152)] = {64,0}, + [I(255,152)] = {64,0}, + [I(0,153)] = {64,0}, + [I(1,153)] = {64,0}, + [I(2,153)] = {64,0}, + [I(3,153)] = {64,0}, + [I(4,153)] = {64,0}, + [I(5,153)] = {64,0}, + [I(6,153)] = {64,0}, + [I(7,153)] = {64,0}, + [I(8,153)] = {64,0}, + [I(9,153)] = {64,0}, + [I(10,153)] = {64,0}, + [I(11,153)] = {64,0}, + [I(12,153)] = {64,0}, + [I(13,153)] = {64,0}, + [I(14,153)] = {64,0}, + [I(15,153)] = {64,0}, + [I(16,153)] = {64,0}, + [I(17,153)] = {64,0}, + [I(18,153)] = {64,0}, + [I(19,153)] = {64,0}, + [I(20,153)] = {64,0}, + [I(21,153)] = {64,0}, + [I(22,153)] = {64,0}, + [I(23,153)] = {64,0}, + [I(24,153)] = {64,0}, + [I(25,153)] = {64,0}, + [I(26,153)] = {64,0}, + [I(27,153)] = {64,0}, + [I(28,153)] = {64,0}, + [I(29,153)] = {64,0}, + [I(30,153)] = {64,0}, + [I(31,153)] = {64,0}, + [I(32,153)] = {27,0x29FFFDC}, + [I(33,153)] = {31,0x7F1FFFDC}, + [I(34,153)] = {31,0x7F3FFFDC}, + [I(35,153)] = {64,0}, + [I(36,153)] = {64,0}, + [I(37,153)] = {27,0x2BFFFDC}, + [I(38,153)] = {29,0x1F1FFFDC}, + [I(39,153)] = {X32,0xFF5FFFDC}, + [I(40,153)] = {31,0x7F5FFFDC}, + [I(41,153)] = {31,0x7F7FFFDC}, + [I(42,153)] = {29,0x1F3FFFDC}, + [I(43,153)] = {X32,0xFF7FFFDC}, + [I(44,153)] = {29,0x1F5FFFDC}, + [I(45,153)] = {27,0x2DFFFDC}, + [I(46,153)] = {27,0x2FFFFDC}, + [I(47,153)] = {27,0x31FFFDC}, + [I(48,153)] = {26,0x1FFFDC}, + [I(49,153)] = {26,0x3FFFDC}, + [I(50,153)] = {26,0x5FFFDC}, + [I(51,153)] = {27,0x33FFFDC}, + [I(52,153)] = {27,0x35FFFDC}, + [I(53,153)] = {27,0x37FFFDC}, + [I(54,153)] = {27,0x39FFFDC}, + [I(55,153)] = {27,0x3BFFFDC}, + [I(56,153)] = {27,0x3DFFFDC}, + [I(57,153)] = {27,0x3FFFFDC}, + [I(58,153)] = {28,0xB9FFFDC}, + [I(59,153)] = {29,0x1F7FFFDC}, + [I(60,153)] = {64,0}, + [I(61,153)] = {27,0x41FFFDC}, + [I(62,153)] = {64,0}, + [I(63,153)] = {31,0x7F9FFFDC}, + [I(64,153)] = {64,0}, + [I(65,153)] = {27,0x43FFFDC}, + [I(66,153)] = {28,0xBBFFFDC}, + [I(67,153)] = {28,0xBDFFFDC}, + [I(68,153)] = {28,0xBFFFFDC}, + [I(69,153)] = {28,0xC1FFFDC}, + [I(70,153)] = {28,0xC3FFFDC}, + [I(71,153)] = {28,0xC5FFFDC}, + [I(72,153)] = {28,0xC7FFFDC}, + [I(73,153)] = {28,0xC9FFFDC}, + [I(74,153)] = {28,0xCBFFFDC}, + [I(75,153)] = {28,0xCDFFFDC}, + [I(76,153)] = {28,0xCFFFFDC}, + [I(77,153)] = {28,0xD1FFFDC}, + [I(78,153)] = {28,0xD3FFFDC}, + [I(79,153)] = {28,0xD5FFFDC}, + [I(80,153)] = {28,0xD7FFFDC}, + [I(81,153)] = {28,0xD9FFFDC}, + [I(82,153)] = {28,0xDBFFFDC}, + [I(83,153)] = {28,0xDDFFFDC}, + [I(84,153)] = {28,0xDFFFFDC}, + [I(85,153)] = {28,0xE1FFFDC}, + [I(86,153)] = {28,0xE3FFFDC}, + [I(87,153)] = {28,0xE5FFFDC}, + [I(88,153)] = {29,0x1F9FFFDC}, + [I(89,153)] = {28,0xE7FFFDC}, + [I(90,153)] = {29,0x1FBFFFDC}, + [I(91,153)] = {64,0}, + [I(92,153)] = {64,0}, + [I(93,153)] = {64,0}, + [I(94,153)] = {64,0}, + [I(95,153)] = {27,0x45FFFDC}, + [I(96,153)] = {64,0}, + [I(97,153)] = {26,0x7FFFDC}, + [I(98,153)] = {27,0x47FFFDC}, + [I(99,153)] = {26,0x9FFFDC}, + [I(100,153)] = {27,0x49FFFDC}, + [I(101,153)] = {26,0xBFFFDC}, + [I(102,153)] = {27,0x4BFFFDC}, + [I(103,153)] = {27,0x4DFFFDC}, + [I(104,153)] = {27,0x4FFFFDC}, + [I(105,153)] = {26,0xDFFFDC}, + [I(106,153)] = {28,0xE9FFFDC}, + [I(107,153)] = {28,0xEBFFFDC}, + [I(108,153)] = {27,0x51FFFDC}, + [I(109,153)] = {27,0x53FFFDC}, + [I(110,153)] = {27,0x55FFFDC}, + [I(111,153)] = {26,0xFFFFDC}, + [I(112,153)] = {27,0x57FFFDC}, + [I(113,153)] = {28,0xEDFFFDC}, + [I(114,153)] = {27,0x59FFFDC}, + [I(115,153)] = {26,0x11FFFDC}, + [I(116,153)] = {26,0x13FFFDC}, + [I(117,153)] = {27,0x5BFFFDC}, + [I(118,153)] = {28,0xEFFFFDC}, + [I(119,153)] = {28,0xF1FFFDC}, + [I(120,153)] = {28,0xF3FFFDC}, + [I(121,153)] = {28,0xF5FFFDC}, + [I(122,153)] = {28,0xF7FFFDC}, + [I(123,153)] = {64,0}, + [I(124,153)] = {X32,0xFF9FFFDC}, + [I(125,153)] = {64,0}, + [I(126,153)] = {64,0}, + [I(127,153)] = {64,0}, + [I(128,153)] = {64,0}, + [I(129,153)] = {64,0}, + [I(130,153)] = {64,0}, + [I(131,153)] = {64,0}, + [I(132,153)] = {64,0}, + [I(133,153)] = {64,0}, + [I(134,153)] = {64,0}, + [I(135,153)] = {64,0}, + [I(136,153)] = {64,0}, + [I(137,153)] = {64,0}, + [I(138,153)] = {64,0}, + [I(139,153)] = {64,0}, + [I(140,153)] = {64,0}, + [I(141,153)] = {64,0}, + [I(142,153)] = {64,0}, + [I(143,153)] = {64,0}, + [I(144,153)] = {64,0}, + [I(145,153)] = {64,0}, + [I(146,153)] = {64,0}, + [I(147,153)] = {64,0}, + [I(148,153)] = {64,0}, + [I(149,153)] = {64,0}, + [I(150,153)] = {64,0}, + [I(151,153)] = {64,0}, + [I(152,153)] = {64,0}, + [I(153,153)] = {64,0}, + [I(154,153)] = {64,0}, + [I(155,153)] = {64,0}, + [I(156,153)] = {64,0}, + [I(157,153)] = {64,0}, + [I(158,153)] = {64,0}, + [I(159,153)] = {64,0}, + [I(160,153)] = {64,0}, + [I(161,153)] = {64,0}, + [I(162,153)] = {64,0}, + [I(163,153)] = {64,0}, + [I(164,153)] = {64,0}, + [I(165,153)] = {64,0}, + [I(166,153)] = {64,0}, + [I(167,153)] = {64,0}, + [I(168,153)] = {64,0}, + [I(169,153)] = {64,0}, + [I(170,153)] = {64,0}, + [I(171,153)] = {64,0}, + [I(172,153)] = {64,0}, + [I(173,153)] = {64,0}, + [I(174,153)] = {64,0}, + [I(175,153)] = {64,0}, + [I(176,153)] = {64,0}, + [I(177,153)] = {64,0}, + [I(178,153)] = {64,0}, + [I(179,153)] = {64,0}, + [I(180,153)] = {64,0}, + [I(181,153)] = {64,0}, + [I(182,153)] = {64,0}, + [I(183,153)] = {64,0}, + [I(184,153)] = {64,0}, + [I(185,153)] = {64,0}, + [I(186,153)] = {64,0}, + [I(187,153)] = {64,0}, + [I(188,153)] = {64,0}, + [I(189,153)] = {64,0}, + [I(190,153)] = {64,0}, + [I(191,153)] = {64,0}, + [I(192,153)] = {64,0}, + [I(193,153)] = {64,0}, + [I(194,153)] = {64,0}, + [I(195,153)] = {64,0}, + [I(196,153)] = {64,0}, + [I(197,153)] = {64,0}, + [I(198,153)] = {64,0}, + [I(199,153)] = {64,0}, + [I(200,153)] = {64,0}, + [I(201,153)] = {64,0}, + [I(202,153)] = {64,0}, + [I(203,153)] = {64,0}, + [I(204,153)] = {64,0}, + [I(205,153)] = {64,0}, + [I(206,153)] = {64,0}, + [I(207,153)] = {64,0}, + [I(208,153)] = {64,0}, + [I(209,153)] = {64,0}, + [I(210,153)] = {64,0}, + [I(211,153)] = {64,0}, + [I(212,153)] = {64,0}, + [I(213,153)] = {64,0}, + [I(214,153)] = {64,0}, + [I(215,153)] = {64,0}, + [I(216,153)] = {64,0}, + [I(217,153)] = {64,0}, + [I(218,153)] = {64,0}, + [I(219,153)] = {64,0}, + [I(220,153)] = {64,0}, + [I(221,153)] = {64,0}, + [I(222,153)] = {64,0}, + [I(223,153)] = {64,0}, + [I(224,153)] = {64,0}, + [I(225,153)] = {64,0}, + [I(226,153)] = {64,0}, + [I(227,153)] = {64,0}, + [I(228,153)] = {64,0}, + [I(229,153)] = {64,0}, + [I(230,153)] = {64,0}, + [I(231,153)] = {64,0}, + [I(232,153)] = {64,0}, + [I(233,153)] = {64,0}, + [I(234,153)] = {64,0}, + [I(235,153)] = {64,0}, + [I(236,153)] = {64,0}, + [I(237,153)] = {64,0}, + [I(238,153)] = {64,0}, + [I(239,153)] = {64,0}, + [I(240,153)] = {64,0}, + [I(241,153)] = {64,0}, + [I(242,153)] = {64,0}, + [I(243,153)] = {64,0}, + [I(244,153)] = {64,0}, + [I(245,153)] = {64,0}, + [I(246,153)] = {64,0}, + [I(247,153)] = {64,0}, + [I(248,153)] = {64,0}, + [I(249,153)] = {64,0}, + [I(250,153)] = {64,0}, + [I(251,153)] = {64,0}, + [I(252,153)] = {64,0}, + [I(253,153)] = {64,0}, + [I(254,153)] = {64,0}, + [I(255,153)] = {64,0}, + [I(0,154)] = {64,0}, + [I(1,154)] = {64,0}, + [I(2,154)] = {64,0}, + [I(3,154)] = {64,0}, + [I(4,154)] = {64,0}, + [I(5,154)] = {64,0}, + [I(6,154)] = {64,0}, + [I(7,154)] = {64,0}, + [I(8,154)] = {64,0}, + [I(9,154)] = {64,0}, + [I(10,154)] = {64,0}, + [I(11,154)] = {64,0}, + [I(12,154)] = {64,0}, + [I(13,154)] = {64,0}, + [I(14,154)] = {64,0}, + [I(15,154)] = {64,0}, + [I(16,154)] = {64,0}, + [I(17,154)] = {64,0}, + [I(18,154)] = {64,0}, + [I(19,154)] = {64,0}, + [I(20,154)] = {64,0}, + [I(21,154)] = {64,0}, + [I(22,154)] = {64,0}, + [I(23,154)] = {64,0}, + [I(24,154)] = {64,0}, + [I(25,154)] = {64,0}, + [I(26,154)] = {64,0}, + [I(27,154)] = {64,0}, + [I(28,154)] = {64,0}, + [I(29,154)] = {64,0}, + [I(30,154)] = {64,0}, + [I(31,154)] = {64,0}, + [I(32,154)] = {28,0x53FFFD8}, + [I(33,154)] = {X32,0xFE3FFFD8}, + [I(34,154)] = {X32,0xFE7FFFD8}, + [I(35,154)] = {64,0}, + [I(36,154)] = {64,0}, + [I(37,154)] = {28,0x57FFFD8}, + [I(38,154)] = {30,0x3E3FFFD8}, + [I(39,154)] = {64,0}, + [I(40,154)] = {X32,0xFEBFFFD8}, + [I(41,154)] = {X32,0xFEFFFFD8}, + [I(42,154)] = {30,0x3E7FFFD8}, + [I(43,154)] = {64,0}, + [I(44,154)] = {30,0x3EBFFFD8}, + [I(45,154)] = {28,0x5BFFFD8}, + [I(46,154)] = {28,0x5FFFFD8}, + [I(47,154)] = {28,0x63FFFD8}, + [I(48,154)] = {27,0x3FFFD8}, + [I(49,154)] = {27,0x7FFFD8}, + [I(50,154)] = {27,0xBFFFD8}, + [I(51,154)] = {28,0x67FFFD8}, + [I(52,154)] = {28,0x6BFFFD8}, + [I(53,154)] = {28,0x6FFFFD8}, + [I(54,154)] = {28,0x73FFFD8}, + [I(55,154)] = {28,0x77FFFD8}, + [I(56,154)] = {28,0x7BFFFD8}, + [I(57,154)] = {28,0x7FFFFD8}, + [I(58,154)] = {29,0x173FFFD8}, + [I(59,154)] = {30,0x3EFFFFD8}, + [I(60,154)] = {64,0}, + [I(61,154)] = {28,0x83FFFD8}, + [I(62,154)] = {64,0}, + [I(63,154)] = {X32,0xFF3FFFD8}, + [I(64,154)] = {64,0}, + [I(65,154)] = {28,0x87FFFD8}, + [I(66,154)] = {29,0x177FFFD8}, + [I(67,154)] = {29,0x17BFFFD8}, + [I(68,154)] = {29,0x17FFFFD8}, + [I(69,154)] = {29,0x183FFFD8}, + [I(70,154)] = {29,0x187FFFD8}, + [I(71,154)] = {29,0x18BFFFD8}, + [I(72,154)] = {29,0x18FFFFD8}, + [I(73,154)] = {29,0x193FFFD8}, + [I(74,154)] = {29,0x197FFFD8}, + [I(75,154)] = {29,0x19BFFFD8}, + [I(76,154)] = {29,0x19FFFFD8}, + [I(77,154)] = {29,0x1A3FFFD8}, + [I(78,154)] = {29,0x1A7FFFD8}, + [I(79,154)] = {29,0x1ABFFFD8}, + [I(80,154)] = {29,0x1AFFFFD8}, + [I(81,154)] = {29,0x1B3FFFD8}, + [I(82,154)] = {29,0x1B7FFFD8}, + [I(83,154)] = {29,0x1BBFFFD8}, + [I(84,154)] = {29,0x1BFFFFD8}, + [I(85,154)] = {29,0x1C3FFFD8}, + [I(86,154)] = {29,0x1C7FFFD8}, + [I(87,154)] = {29,0x1CBFFFD8}, + [I(88,154)] = {30,0x3F3FFFD8}, + [I(89,154)] = {29,0x1CFFFFD8}, + [I(90,154)] = {30,0x3F7FFFD8}, + [I(91,154)] = {64,0}, + [I(92,154)] = {64,0}, + [I(93,154)] = {64,0}, + [I(94,154)] = {64,0}, + [I(95,154)] = {28,0x8BFFFD8}, + [I(96,154)] = {64,0}, + [I(97,154)] = {27,0xFFFFD8}, + [I(98,154)] = {28,0x8FFFFD8}, + [I(99,154)] = {27,0x13FFFD8}, + [I(100,154)] = {28,0x93FFFD8}, + [I(101,154)] = {27,0x17FFFD8}, + [I(102,154)] = {28,0x97FFFD8}, + [I(103,154)] = {28,0x9BFFFD8}, + [I(104,154)] = {28,0x9FFFFD8}, + [I(105,154)] = {27,0x1BFFFD8}, + [I(106,154)] = {29,0x1D3FFFD8}, + [I(107,154)] = {29,0x1D7FFFD8}, + [I(108,154)] = {28,0xA3FFFD8}, + [I(109,154)] = {28,0xA7FFFD8}, + [I(110,154)] = {28,0xABFFFD8}, + [I(111,154)] = {27,0x1FFFFD8}, + [I(112,154)] = {28,0xAFFFFD8}, + [I(113,154)] = {29,0x1DBFFFD8}, + [I(114,154)] = {28,0xB3FFFD8}, + [I(115,154)] = {27,0x23FFFD8}, + [I(116,154)] = {27,0x27FFFD8}, + [I(117,154)] = {28,0xB7FFFD8}, + [I(118,154)] = {29,0x1DFFFFD8}, + [I(119,154)] = {29,0x1E3FFFD8}, + [I(120,154)] = {29,0x1E7FFFD8}, + [I(121,154)] = {29,0x1EBFFFD8}, + [I(122,154)] = {29,0x1EFFFFD8}, + [I(123,154)] = {64,0}, + [I(124,154)] = {64,0}, + [I(125,154)] = {64,0}, + [I(126,154)] = {64,0}, + [I(127,154)] = {64,0}, + [I(128,154)] = {64,0}, + [I(129,154)] = {64,0}, + [I(130,154)] = {64,0}, + [I(131,154)] = {64,0}, + [I(132,154)] = {64,0}, + [I(133,154)] = {64,0}, + [I(134,154)] = {64,0}, + [I(135,154)] = {64,0}, + [I(136,154)] = {64,0}, + [I(137,154)] = {64,0}, + [I(138,154)] = {64,0}, + [I(139,154)] = {64,0}, + [I(140,154)] = {64,0}, + [I(141,154)] = {64,0}, + [I(142,154)] = {64,0}, + [I(143,154)] = {64,0}, + [I(144,154)] = {64,0}, + [I(145,154)] = {64,0}, + [I(146,154)] = {64,0}, + [I(147,154)] = {64,0}, + [I(148,154)] = {64,0}, + [I(149,154)] = {64,0}, + [I(150,154)] = {64,0}, + [I(151,154)] = {64,0}, + [I(152,154)] = {64,0}, + [I(153,154)] = {64,0}, + [I(154,154)] = {64,0}, + [I(155,154)] = {64,0}, + [I(156,154)] = {64,0}, + [I(157,154)] = {64,0}, + [I(158,154)] = {64,0}, + [I(159,154)] = {64,0}, + [I(160,154)] = {64,0}, + [I(161,154)] = {64,0}, + [I(162,154)] = {64,0}, + [I(163,154)] = {64,0}, + [I(164,154)] = {64,0}, + [I(165,154)] = {64,0}, + [I(166,154)] = {64,0}, + [I(167,154)] = {64,0}, + [I(168,154)] = {64,0}, + [I(169,154)] = {64,0}, + [I(170,154)] = {64,0}, + [I(171,154)] = {64,0}, + [I(172,154)] = {64,0}, + [I(173,154)] = {64,0}, + [I(174,154)] = {64,0}, + [I(175,154)] = {64,0}, + [I(176,154)] = {64,0}, + [I(177,154)] = {64,0}, + [I(178,154)] = {64,0}, + [I(179,154)] = {64,0}, + [I(180,154)] = {64,0}, + [I(181,154)] = {64,0}, + [I(182,154)] = {64,0}, + [I(183,154)] = {64,0}, + [I(184,154)] = {64,0}, + [I(185,154)] = {64,0}, + [I(186,154)] = {64,0}, + [I(187,154)] = {64,0}, + [I(188,154)] = {64,0}, + [I(189,154)] = {64,0}, + [I(190,154)] = {64,0}, + [I(191,154)] = {64,0}, + [I(192,154)] = {64,0}, + [I(193,154)] = {64,0}, + [I(194,154)] = {64,0}, + [I(195,154)] = {64,0}, + [I(196,154)] = {64,0}, + [I(197,154)] = {64,0}, + [I(198,154)] = {64,0}, + [I(199,154)] = {64,0}, + [I(200,154)] = {64,0}, + [I(201,154)] = {64,0}, + [I(202,154)] = {64,0}, + [I(203,154)] = {64,0}, + [I(204,154)] = {64,0}, + [I(205,154)] = {64,0}, + [I(206,154)] = {64,0}, + [I(207,154)] = {64,0}, + [I(208,154)] = {64,0}, + [I(209,154)] = {64,0}, + [I(210,154)] = {64,0}, + [I(211,154)] = {64,0}, + [I(212,154)] = {64,0}, + [I(213,154)] = {64,0}, + [I(214,154)] = {64,0}, + [I(215,154)] = {64,0}, + [I(216,154)] = {64,0}, + [I(217,154)] = {64,0}, + [I(218,154)] = {64,0}, + [I(219,154)] = {64,0}, + [I(220,154)] = {64,0}, + [I(221,154)] = {64,0}, + [I(222,154)] = {64,0}, + [I(223,154)] = {64,0}, + [I(224,154)] = {64,0}, + [I(225,154)] = {64,0}, + [I(226,154)] = {64,0}, + [I(227,154)] = {64,0}, + [I(228,154)] = {64,0}, + [I(229,154)] = {64,0}, + [I(230,154)] = {64,0}, + [I(231,154)] = {64,0}, + [I(232,154)] = {64,0}, + [I(233,154)] = {64,0}, + [I(234,154)] = {64,0}, + [I(235,154)] = {64,0}, + [I(236,154)] = {64,0}, + [I(237,154)] = {64,0}, + [I(238,154)] = {64,0}, + [I(239,154)] = {64,0}, + [I(240,154)] = {64,0}, + [I(241,154)] = {64,0}, + [I(242,154)] = {64,0}, + [I(243,154)] = {64,0}, + [I(244,154)] = {64,0}, + [I(245,154)] = {64,0}, + [I(246,154)] = {64,0}, + [I(247,154)] = {64,0}, + [I(248,154)] = {64,0}, + [I(249,154)] = {64,0}, + [I(250,154)] = {64,0}, + [I(251,154)] = {64,0}, + [I(252,154)] = {64,0}, + [I(253,154)] = {64,0}, + [I(254,154)] = {64,0}, + [I(255,154)] = {64,0}, + [I(0,155)] = {64,0}, + [I(1,155)] = {64,0}, + [I(2,155)] = {64,0}, + [I(3,155)] = {64,0}, + [I(4,155)] = {64,0}, + [I(5,155)] = {64,0}, + [I(6,155)] = {64,0}, + [I(7,155)] = {64,0}, + [I(8,155)] = {64,0}, + [I(9,155)] = {64,0}, + [I(10,155)] = {64,0}, + [I(11,155)] = {64,0}, + [I(12,155)] = {64,0}, + [I(13,155)] = {64,0}, + [I(14,155)] = {64,0}, + [I(15,155)] = {64,0}, + [I(16,155)] = {64,0}, + [I(17,155)] = {64,0}, + [I(18,155)] = {64,0}, + [I(19,155)] = {64,0}, + [I(20,155)] = {64,0}, + [I(21,155)] = {64,0}, + [I(22,155)] = {64,0}, + [I(23,155)] = {64,0}, + [I(24,155)] = {64,0}, + [I(25,155)] = {64,0}, + [I(26,155)] = {64,0}, + [I(27,155)] = {64,0}, + [I(28,155)] = {64,0}, + [I(29,155)] = {64,0}, + [I(30,155)] = {64,0}, + [I(31,155)] = {64,0}, + [I(32,155)] = {29,0xA7FFFE5}, + [I(33,155)] = {64,0}, + [I(34,155)] = {64,0}, + [I(35,155)] = {64,0}, + [I(36,155)] = {64,0}, + [I(37,155)] = {29,0xAFFFFE5}, + [I(38,155)] = {31,0x7C7FFFE5}, + [I(39,155)] = {64,0}, + [I(40,155)] = {64,0}, + [I(41,155)] = {64,0}, + [I(42,155)] = {31,0x7CFFFFE5}, + [I(43,155)] = {64,0}, + [I(44,155)] = {31,0x7D7FFFE5}, + [I(45,155)] = {29,0xB7FFFE5}, + [I(46,155)] = {29,0xBFFFFE5}, + [I(47,155)] = {29,0xC7FFFE5}, + [I(48,155)] = {28,0x7FFFE5}, + [I(49,155)] = {28,0xFFFFE5}, + [I(50,155)] = {28,0x17FFFE5}, + [I(51,155)] = {29,0xCFFFFE5}, + [I(52,155)] = {29,0xD7FFFE5}, + [I(53,155)] = {29,0xDFFFFE5}, + [I(54,155)] = {29,0xE7FFFE5}, + [I(55,155)] = {29,0xEFFFFE5}, + [I(56,155)] = {29,0xF7FFFE5}, + [I(57,155)] = {29,0xFFFFFE5}, + [I(58,155)] = {30,0x2E7FFFE5}, + [I(59,155)] = {31,0x7DFFFFE5}, + [I(60,155)] = {64,0}, + [I(61,155)] = {29,0x107FFFE5}, + [I(62,155)] = {64,0}, + [I(63,155)] = {64,0}, + [I(64,155)] = {64,0}, + [I(65,155)] = {29,0x10FFFFE5}, + [I(66,155)] = {30,0x2EFFFFE5}, + [I(67,155)] = {30,0x2F7FFFE5}, + [I(68,155)] = {30,0x2FFFFFE5}, + [I(69,155)] = {30,0x307FFFE5}, + [I(70,155)] = {30,0x30FFFFE5}, + [I(71,155)] = {30,0x317FFFE5}, + [I(72,155)] = {30,0x31FFFFE5}, + [I(73,155)] = {30,0x327FFFE5}, + [I(74,155)] = {30,0x32FFFFE5}, + [I(75,155)] = {30,0x337FFFE5}, + [I(76,155)] = {30,0x33FFFFE5}, + [I(77,155)] = {30,0x347FFFE5}, + [I(78,155)] = {30,0x34FFFFE5}, + [I(79,155)] = {30,0x357FFFE5}, + [I(80,155)] = {30,0x35FFFFE5}, + [I(81,155)] = {30,0x367FFFE5}, + [I(82,155)] = {30,0x36FFFFE5}, + [I(83,155)] = {30,0x377FFFE5}, + [I(84,155)] = {30,0x37FFFFE5}, + [I(85,155)] = {30,0x387FFFE5}, + [I(86,155)] = {30,0x38FFFFE5}, + [I(87,155)] = {30,0x397FFFE5}, + [I(88,155)] = {31,0x7E7FFFE5}, + [I(89,155)] = {30,0x39FFFFE5}, + [I(90,155)] = {31,0x7EFFFFE5}, + [I(91,155)] = {64,0}, + [I(92,155)] = {64,0}, + [I(93,155)] = {64,0}, + [I(94,155)] = {64,0}, + [I(95,155)] = {29,0x117FFFE5}, + [I(96,155)] = {64,0}, + [I(97,155)] = {28,0x1FFFFE5}, + [I(98,155)] = {29,0x11FFFFE5}, + [I(99,155)] = {28,0x27FFFE5}, + [I(100,155)] = {29,0x127FFFE5}, + [I(101,155)] = {28,0x2FFFFE5}, + [I(102,155)] = {29,0x12FFFFE5}, + [I(103,155)] = {29,0x137FFFE5}, + [I(104,155)] = {29,0x13FFFFE5}, + [I(105,155)] = {28,0x37FFFE5}, + [I(106,155)] = {30,0x3A7FFFE5}, + [I(107,155)] = {30,0x3AFFFFE5}, + [I(108,155)] = {29,0x147FFFE5}, + [I(109,155)] = {29,0x14FFFFE5}, + [I(110,155)] = {29,0x157FFFE5}, + [I(111,155)] = {28,0x3FFFFE5}, + [I(112,155)] = {29,0x15FFFFE5}, + [I(113,155)] = {30,0x3B7FFFE5}, + [I(114,155)] = {29,0x167FFFE5}, + [I(115,155)] = {28,0x47FFFE5}, + [I(116,155)] = {28,0x4FFFFE5}, + [I(117,155)] = {29,0x16FFFFE5}, + [I(118,155)] = {30,0x3BFFFFE5}, + [I(119,155)] = {30,0x3C7FFFE5}, + [I(120,155)] = {30,0x3CFFFFE5}, + [I(121,155)] = {30,0x3D7FFFE5}, + [I(122,155)] = {30,0x3DFFFFE5}, + [I(123,155)] = {64,0}, + [I(124,155)] = {64,0}, + [I(125,155)] = {64,0}, + [I(126,155)] = {64,0}, + [I(127,155)] = {64,0}, + [I(128,155)] = {64,0}, + [I(129,155)] = {64,0}, + [I(130,155)] = {64,0}, + [I(131,155)] = {64,0}, + [I(132,155)] = {64,0}, + [I(133,155)] = {64,0}, + [I(134,155)] = {64,0}, + [I(135,155)] = {64,0}, + [I(136,155)] = {64,0}, + [I(137,155)] = {64,0}, + [I(138,155)] = {64,0}, + [I(139,155)] = {64,0}, + [I(140,155)] = {64,0}, + [I(141,155)] = {64,0}, + [I(142,155)] = {64,0}, + [I(143,155)] = {64,0}, + [I(144,155)] = {64,0}, + [I(145,155)] = {64,0}, + [I(146,155)] = {64,0}, + [I(147,155)] = {64,0}, + [I(148,155)] = {64,0}, + [I(149,155)] = {64,0}, + [I(150,155)] = {64,0}, + [I(151,155)] = {64,0}, + [I(152,155)] = {64,0}, + [I(153,155)] = {64,0}, + [I(154,155)] = {64,0}, + [I(155,155)] = {64,0}, + [I(156,155)] = {64,0}, + [I(157,155)] = {64,0}, + [I(158,155)] = {64,0}, + [I(159,155)] = {64,0}, + [I(160,155)] = {64,0}, + [I(161,155)] = {64,0}, + [I(162,155)] = {64,0}, + [I(163,155)] = {64,0}, + [I(164,155)] = {64,0}, + [I(165,155)] = {64,0}, + [I(166,155)] = {64,0}, + [I(167,155)] = {64,0}, + [I(168,155)] = {64,0}, + [I(169,155)] = {64,0}, + [I(170,155)] = {64,0}, + [I(171,155)] = {64,0}, + [I(172,155)] = {64,0}, + [I(173,155)] = {64,0}, + [I(174,155)] = {64,0}, + [I(175,155)] = {64,0}, + [I(176,155)] = {64,0}, + [I(177,155)] = {64,0}, + [I(178,155)] = {64,0}, + [I(179,155)] = {64,0}, + [I(180,155)] = {64,0}, + [I(181,155)] = {64,0}, + [I(182,155)] = {64,0}, + [I(183,155)] = {64,0}, + [I(184,155)] = {64,0}, + [I(185,155)] = {64,0}, + [I(186,155)] = {64,0}, + [I(187,155)] = {64,0}, + [I(188,155)] = {64,0}, + [I(189,155)] = {64,0}, + [I(190,155)] = {64,0}, + [I(191,155)] = {64,0}, + [I(192,155)] = {64,0}, + [I(193,155)] = {64,0}, + [I(194,155)] = {64,0}, + [I(195,155)] = {64,0}, + [I(196,155)] = {64,0}, + [I(197,155)] = {64,0}, + [I(198,155)] = {64,0}, + [I(199,155)] = {64,0}, + [I(200,155)] = {64,0}, + [I(201,155)] = {64,0}, + [I(202,155)] = {64,0}, + [I(203,155)] = {64,0}, + [I(204,155)] = {64,0}, + [I(205,155)] = {64,0}, + [I(206,155)] = {64,0}, + [I(207,155)] = {64,0}, + [I(208,155)] = {64,0}, + [I(209,155)] = {64,0}, + [I(210,155)] = {64,0}, + [I(211,155)] = {64,0}, + [I(212,155)] = {64,0}, + [I(213,155)] = {64,0}, + [I(214,155)] = {64,0}, + [I(215,155)] = {64,0}, + [I(216,155)] = {64,0}, + [I(217,155)] = {64,0}, + [I(218,155)] = {64,0}, + [I(219,155)] = {64,0}, + [I(220,155)] = {64,0}, + [I(221,155)] = {64,0}, + [I(222,155)] = {64,0}, + [I(223,155)] = {64,0}, + [I(224,155)] = {64,0}, + [I(225,155)] = {64,0}, + [I(226,155)] = {64,0}, + [I(227,155)] = {64,0}, + [I(228,155)] = {64,0}, + [I(229,155)] = {64,0}, + [I(230,155)] = {64,0}, + [I(231,155)] = {64,0}, + [I(232,155)] = {64,0}, + [I(233,155)] = {64,0}, + [I(234,155)] = {64,0}, + [I(235,155)] = {64,0}, + [I(236,155)] = {64,0}, + [I(237,155)] = {64,0}, + [I(238,155)] = {64,0}, + [I(239,155)] = {64,0}, + [I(240,155)] = {64,0}, + [I(241,155)] = {64,0}, + [I(242,155)] = {64,0}, + [I(243,155)] = {64,0}, + [I(244,155)] = {64,0}, + [I(245,155)] = {64,0}, + [I(246,155)] = {64,0}, + [I(247,155)] = {64,0}, + [I(248,155)] = {64,0}, + [I(249,155)] = {64,0}, + [I(250,155)] = {64,0}, + [I(251,155)] = {64,0}, + [I(252,155)] = {64,0}, + [I(253,155)] = {64,0}, + [I(254,155)] = {64,0}, + [I(255,155)] = {64,0}, + [I(0,156)] = {64,0}, + [I(1,156)] = {64,0}, + [I(2,156)] = {64,0}, + [I(3,156)] = {64,0}, + [I(4,156)] = {64,0}, + [I(5,156)] = {64,0}, + [I(6,156)] = {64,0}, + [I(7,156)] = {64,0}, + [I(8,156)] = {64,0}, + [I(9,156)] = {64,0}, + [I(10,156)] = {64,0}, + [I(11,156)] = {64,0}, + [I(12,156)] = {64,0}, + [I(13,156)] = {64,0}, + [I(14,156)] = {64,0}, + [I(15,156)] = {64,0}, + [I(16,156)] = {64,0}, + [I(17,156)] = {64,0}, + [I(18,156)] = {64,0}, + [I(19,156)] = {64,0}, + [I(20,156)] = {64,0}, + [I(21,156)] = {64,0}, + [I(22,156)] = {64,0}, + [I(23,156)] = {64,0}, + [I(24,156)] = {64,0}, + [I(25,156)] = {64,0}, + [I(26,156)] = {64,0}, + [I(27,156)] = {64,0}, + [I(28,156)] = {64,0}, + [I(29,156)] = {64,0}, + [I(30,156)] = {64,0}, + [I(31,156)] = {64,0}, + [I(32,156)] = {28,0x53FFFD9}, + [I(33,156)] = {X32,0xFE3FFFD9}, + [I(34,156)] = {X32,0xFE7FFFD9}, + [I(35,156)] = {64,0}, + [I(36,156)] = {64,0}, + [I(37,156)] = {28,0x57FFFD9}, + [I(38,156)] = {30,0x3E3FFFD9}, + [I(39,156)] = {64,0}, + [I(40,156)] = {X32,0xFEBFFFD9}, + [I(41,156)] = {X32,0xFEFFFFD9}, + [I(42,156)] = {30,0x3E7FFFD9}, + [I(43,156)] = {64,0}, + [I(44,156)] = {30,0x3EBFFFD9}, + [I(45,156)] = {28,0x5BFFFD9}, + [I(46,156)] = {28,0x5FFFFD9}, + [I(47,156)] = {28,0x63FFFD9}, + [I(48,156)] = {27,0x3FFFD9}, + [I(49,156)] = {27,0x7FFFD9}, + [I(50,156)] = {27,0xBFFFD9}, + [I(51,156)] = {28,0x67FFFD9}, + [I(52,156)] = {28,0x6BFFFD9}, + [I(53,156)] = {28,0x6FFFFD9}, + [I(54,156)] = {28,0x73FFFD9}, + [I(55,156)] = {28,0x77FFFD9}, + [I(56,156)] = {28,0x7BFFFD9}, + [I(57,156)] = {28,0x7FFFFD9}, + [I(58,156)] = {29,0x173FFFD9}, + [I(59,156)] = {30,0x3EFFFFD9}, + [I(60,156)] = {64,0}, + [I(61,156)] = {28,0x83FFFD9}, + [I(62,156)] = {64,0}, + [I(63,156)] = {X32,0xFF3FFFD9}, + [I(64,156)] = {64,0}, + [I(65,156)] = {28,0x87FFFD9}, + [I(66,156)] = {29,0x177FFFD9}, + [I(67,156)] = {29,0x17BFFFD9}, + [I(68,156)] = {29,0x17FFFFD9}, + [I(69,156)] = {29,0x183FFFD9}, + [I(70,156)] = {29,0x187FFFD9}, + [I(71,156)] = {29,0x18BFFFD9}, + [I(72,156)] = {29,0x18FFFFD9}, + [I(73,156)] = {29,0x193FFFD9}, + [I(74,156)] = {29,0x197FFFD9}, + [I(75,156)] = {29,0x19BFFFD9}, + [I(76,156)] = {29,0x19FFFFD9}, + [I(77,156)] = {29,0x1A3FFFD9}, + [I(78,156)] = {29,0x1A7FFFD9}, + [I(79,156)] = {29,0x1ABFFFD9}, + [I(80,156)] = {29,0x1AFFFFD9}, + [I(81,156)] = {29,0x1B3FFFD9}, + [I(82,156)] = {29,0x1B7FFFD9}, + [I(83,156)] = {29,0x1BBFFFD9}, + [I(84,156)] = {29,0x1BFFFFD9}, + [I(85,156)] = {29,0x1C3FFFD9}, + [I(86,156)] = {29,0x1C7FFFD9}, + [I(87,156)] = {29,0x1CBFFFD9}, + [I(88,156)] = {30,0x3F3FFFD9}, + [I(89,156)] = {29,0x1CFFFFD9}, + [I(90,156)] = {30,0x3F7FFFD9}, + [I(91,156)] = {64,0}, + [I(92,156)] = {64,0}, + [I(93,156)] = {64,0}, + [I(94,156)] = {64,0}, + [I(95,156)] = {28,0x8BFFFD9}, + [I(96,156)] = {64,0}, + [I(97,156)] = {27,0xFFFFD9}, + [I(98,156)] = {28,0x8FFFFD9}, + [I(99,156)] = {27,0x13FFFD9}, + [I(100,156)] = {28,0x93FFFD9}, + [I(101,156)] = {27,0x17FFFD9}, + [I(102,156)] = {28,0x97FFFD9}, + [I(103,156)] = {28,0x9BFFFD9}, + [I(104,156)] = {28,0x9FFFFD9}, + [I(105,156)] = {27,0x1BFFFD9}, + [I(106,156)] = {29,0x1D3FFFD9}, + [I(107,156)] = {29,0x1D7FFFD9}, + [I(108,156)] = {28,0xA3FFFD9}, + [I(109,156)] = {28,0xA7FFFD9}, + [I(110,156)] = {28,0xABFFFD9}, + [I(111,156)] = {27,0x1FFFFD9}, + [I(112,156)] = {28,0xAFFFFD9}, + [I(113,156)] = {29,0x1DBFFFD9}, + [I(114,156)] = {28,0xB3FFFD9}, + [I(115,156)] = {27,0x23FFFD9}, + [I(116,156)] = {27,0x27FFFD9}, + [I(117,156)] = {28,0xB7FFFD9}, + [I(118,156)] = {29,0x1DFFFFD9}, + [I(119,156)] = {29,0x1E3FFFD9}, + [I(120,156)] = {29,0x1E7FFFD9}, + [I(121,156)] = {29,0x1EBFFFD9}, + [I(122,156)] = {29,0x1EFFFFD9}, + [I(123,156)] = {64,0}, + [I(124,156)] = {64,0}, + [I(125,156)] = {64,0}, + [I(126,156)] = {64,0}, + [I(127,156)] = {64,0}, + [I(128,156)] = {64,0}, + [I(129,156)] = {64,0}, + [I(130,156)] = {64,0}, + [I(131,156)] = {64,0}, + [I(132,156)] = {64,0}, + [I(133,156)] = {64,0}, + [I(134,156)] = {64,0}, + [I(135,156)] = {64,0}, + [I(136,156)] = {64,0}, + [I(137,156)] = {64,0}, + [I(138,156)] = {64,0}, + [I(139,156)] = {64,0}, + [I(140,156)] = {64,0}, + [I(141,156)] = {64,0}, + [I(142,156)] = {64,0}, + [I(143,156)] = {64,0}, + [I(144,156)] = {64,0}, + [I(145,156)] = {64,0}, + [I(146,156)] = {64,0}, + [I(147,156)] = {64,0}, + [I(148,156)] = {64,0}, + [I(149,156)] = {64,0}, + [I(150,156)] = {64,0}, + [I(151,156)] = {64,0}, + [I(152,156)] = {64,0}, + [I(153,156)] = {64,0}, + [I(154,156)] = {64,0}, + [I(155,156)] = {64,0}, + [I(156,156)] = {64,0}, + [I(157,156)] = {64,0}, + [I(158,156)] = {64,0}, + [I(159,156)] = {64,0}, + [I(160,156)] = {64,0}, + [I(161,156)] = {64,0}, + [I(162,156)] = {64,0}, + [I(163,156)] = {64,0}, + [I(164,156)] = {64,0}, + [I(165,156)] = {64,0}, + [I(166,156)] = {64,0}, + [I(167,156)] = {64,0}, + [I(168,156)] = {64,0}, + [I(169,156)] = {64,0}, + [I(170,156)] = {64,0}, + [I(171,156)] = {64,0}, + [I(172,156)] = {64,0}, + [I(173,156)] = {64,0}, + [I(174,156)] = {64,0}, + [I(175,156)] = {64,0}, + [I(176,156)] = {64,0}, + [I(177,156)] = {64,0}, + [I(178,156)] = {64,0}, + [I(179,156)] = {64,0}, + [I(180,156)] = {64,0}, + [I(181,156)] = {64,0}, + [I(182,156)] = {64,0}, + [I(183,156)] = {64,0}, + [I(184,156)] = {64,0}, + [I(185,156)] = {64,0}, + [I(186,156)] = {64,0}, + [I(187,156)] = {64,0}, + [I(188,156)] = {64,0}, + [I(189,156)] = {64,0}, + [I(190,156)] = {64,0}, + [I(191,156)] = {64,0}, + [I(192,156)] = {64,0}, + [I(193,156)] = {64,0}, + [I(194,156)] = {64,0}, + [I(195,156)] = {64,0}, + [I(196,156)] = {64,0}, + [I(197,156)] = {64,0}, + [I(198,156)] = {64,0}, + [I(199,156)] = {64,0}, + [I(200,156)] = {64,0}, + [I(201,156)] = {64,0}, + [I(202,156)] = {64,0}, + [I(203,156)] = {64,0}, + [I(204,156)] = {64,0}, + [I(205,156)] = {64,0}, + [I(206,156)] = {64,0}, + [I(207,156)] = {64,0}, + [I(208,156)] = {64,0}, + [I(209,156)] = {64,0}, + [I(210,156)] = {64,0}, + [I(211,156)] = {64,0}, + [I(212,156)] = {64,0}, + [I(213,156)] = {64,0}, + [I(214,156)] = {64,0}, + [I(215,156)] = {64,0}, + [I(216,156)] = {64,0}, + [I(217,156)] = {64,0}, + [I(218,156)] = {64,0}, + [I(219,156)] = {64,0}, + [I(220,156)] = {64,0}, + [I(221,156)] = {64,0}, + [I(222,156)] = {64,0}, + [I(223,156)] = {64,0}, + [I(224,156)] = {64,0}, + [I(225,156)] = {64,0}, + [I(226,156)] = {64,0}, + [I(227,156)] = {64,0}, + [I(228,156)] = {64,0}, + [I(229,156)] = {64,0}, + [I(230,156)] = {64,0}, + [I(231,156)] = {64,0}, + [I(232,156)] = {64,0}, + [I(233,156)] = {64,0}, + [I(234,156)] = {64,0}, + [I(235,156)] = {64,0}, + [I(236,156)] = {64,0}, + [I(237,156)] = {64,0}, + [I(238,156)] = {64,0}, + [I(239,156)] = {64,0}, + [I(240,156)] = {64,0}, + [I(241,156)] = {64,0}, + [I(242,156)] = {64,0}, + [I(243,156)] = {64,0}, + [I(244,156)] = {64,0}, + [I(245,156)] = {64,0}, + [I(246,156)] = {64,0}, + [I(247,156)] = {64,0}, + [I(248,156)] = {64,0}, + [I(249,156)] = {64,0}, + [I(250,156)] = {64,0}, + [I(251,156)] = {64,0}, + [I(252,156)] = {64,0}, + [I(253,156)] = {64,0}, + [I(254,156)] = {64,0}, + [I(255,156)] = {64,0}, + [I(0,157)] = {64,0}, + [I(1,157)] = {64,0}, + [I(2,157)] = {64,0}, + [I(3,157)] = {64,0}, + [I(4,157)] = {64,0}, + [I(5,157)] = {64,0}, + [I(6,157)] = {64,0}, + [I(7,157)] = {64,0}, + [I(8,157)] = {64,0}, + [I(9,157)] = {64,0}, + [I(10,157)] = {64,0}, + [I(11,157)] = {64,0}, + [I(12,157)] = {64,0}, + [I(13,157)] = {64,0}, + [I(14,157)] = {64,0}, + [I(15,157)] = {64,0}, + [I(16,157)] = {64,0}, + [I(17,157)] = {64,0}, + [I(18,157)] = {64,0}, + [I(19,157)] = {64,0}, + [I(20,157)] = {64,0}, + [I(21,157)] = {64,0}, + [I(22,157)] = {64,0}, + [I(23,157)] = {64,0}, + [I(24,157)] = {64,0}, + [I(25,157)] = {64,0}, + [I(26,157)] = {64,0}, + [I(27,157)] = {64,0}, + [I(28,157)] = {64,0}, + [I(29,157)] = {64,0}, + [I(30,157)] = {64,0}, + [I(31,157)] = {64,0}, + [I(32,157)] = {29,0xA7FFFE6}, + [I(33,157)] = {64,0}, + [I(34,157)] = {64,0}, + [I(35,157)] = {64,0}, + [I(36,157)] = {64,0}, + [I(37,157)] = {29,0xAFFFFE6}, + [I(38,157)] = {31,0x7C7FFFE6}, + [I(39,157)] = {64,0}, + [I(40,157)] = {64,0}, + [I(41,157)] = {64,0}, + [I(42,157)] = {31,0x7CFFFFE6}, + [I(43,157)] = {64,0}, + [I(44,157)] = {31,0x7D7FFFE6}, + [I(45,157)] = {29,0xB7FFFE6}, + [I(46,157)] = {29,0xBFFFFE6}, + [I(47,157)] = {29,0xC7FFFE6}, + [I(48,157)] = {28,0x7FFFE6}, + [I(49,157)] = {28,0xFFFFE6}, + [I(50,157)] = {28,0x17FFFE6}, + [I(51,157)] = {29,0xCFFFFE6}, + [I(52,157)] = {29,0xD7FFFE6}, + [I(53,157)] = {29,0xDFFFFE6}, + [I(54,157)] = {29,0xE7FFFE6}, + [I(55,157)] = {29,0xEFFFFE6}, + [I(56,157)] = {29,0xF7FFFE6}, + [I(57,157)] = {29,0xFFFFFE6}, + [I(58,157)] = {30,0x2E7FFFE6}, + [I(59,157)] = {31,0x7DFFFFE6}, + [I(60,157)] = {64,0}, + [I(61,157)] = {29,0x107FFFE6}, + [I(62,157)] = {64,0}, + [I(63,157)] = {64,0}, + [I(64,157)] = {64,0}, + [I(65,157)] = {29,0x10FFFFE6}, + [I(66,157)] = {30,0x2EFFFFE6}, + [I(67,157)] = {30,0x2F7FFFE6}, + [I(68,157)] = {30,0x2FFFFFE6}, + [I(69,157)] = {30,0x307FFFE6}, + [I(70,157)] = {30,0x30FFFFE6}, + [I(71,157)] = {30,0x317FFFE6}, + [I(72,157)] = {30,0x31FFFFE6}, + [I(73,157)] = {30,0x327FFFE6}, + [I(74,157)] = {30,0x32FFFFE6}, + [I(75,157)] = {30,0x337FFFE6}, + [I(76,157)] = {30,0x33FFFFE6}, + [I(77,157)] = {30,0x347FFFE6}, + [I(78,157)] = {30,0x34FFFFE6}, + [I(79,157)] = {30,0x357FFFE6}, + [I(80,157)] = {30,0x35FFFFE6}, + [I(81,157)] = {30,0x367FFFE6}, + [I(82,157)] = {30,0x36FFFFE6}, + [I(83,157)] = {30,0x377FFFE6}, + [I(84,157)] = {30,0x37FFFFE6}, + [I(85,157)] = {30,0x387FFFE6}, + [I(86,157)] = {30,0x38FFFFE6}, + [I(87,157)] = {30,0x397FFFE6}, + [I(88,157)] = {31,0x7E7FFFE6}, + [I(89,157)] = {30,0x39FFFFE6}, + [I(90,157)] = {31,0x7EFFFFE6}, + [I(91,157)] = {64,0}, + [I(92,157)] = {64,0}, + [I(93,157)] = {64,0}, + [I(94,157)] = {64,0}, + [I(95,157)] = {29,0x117FFFE6}, + [I(96,157)] = {64,0}, + [I(97,157)] = {28,0x1FFFFE6}, + [I(98,157)] = {29,0x11FFFFE6}, + [I(99,157)] = {28,0x27FFFE6}, + [I(100,157)] = {29,0x127FFFE6}, + [I(101,157)] = {28,0x2FFFFE6}, + [I(102,157)] = {29,0x12FFFFE6}, + [I(103,157)] = {29,0x137FFFE6}, + [I(104,157)] = {29,0x13FFFFE6}, + [I(105,157)] = {28,0x37FFFE6}, + [I(106,157)] = {30,0x3A7FFFE6}, + [I(107,157)] = {30,0x3AFFFFE6}, + [I(108,157)] = {29,0x147FFFE6}, + [I(109,157)] = {29,0x14FFFFE6}, + [I(110,157)] = {29,0x157FFFE6}, + [I(111,157)] = {28,0x3FFFFE6}, + [I(112,157)] = {29,0x15FFFFE6}, + [I(113,157)] = {30,0x3B7FFFE6}, + [I(114,157)] = {29,0x167FFFE6}, + [I(115,157)] = {28,0x47FFFE6}, + [I(116,157)] = {28,0x4FFFFE6}, + [I(117,157)] = {29,0x16FFFFE6}, + [I(118,157)] = {30,0x3BFFFFE6}, + [I(119,157)] = {30,0x3C7FFFE6}, + [I(120,157)] = {30,0x3CFFFFE6}, + [I(121,157)] = {30,0x3D7FFFE6}, + [I(122,157)] = {30,0x3DFFFFE6}, + [I(123,157)] = {64,0}, + [I(124,157)] = {64,0}, + [I(125,157)] = {64,0}, + [I(126,157)] = {64,0}, + [I(127,157)] = {64,0}, + [I(128,157)] = {64,0}, + [I(129,157)] = {64,0}, + [I(130,157)] = {64,0}, + [I(131,157)] = {64,0}, + [I(132,157)] = {64,0}, + [I(133,157)] = {64,0}, + [I(134,157)] = {64,0}, + [I(135,157)] = {64,0}, + [I(136,157)] = {64,0}, + [I(137,157)] = {64,0}, + [I(138,157)] = {64,0}, + [I(139,157)] = {64,0}, + [I(140,157)] = {64,0}, + [I(141,157)] = {64,0}, + [I(142,157)] = {64,0}, + [I(143,157)] = {64,0}, + [I(144,157)] = {64,0}, + [I(145,157)] = {64,0}, + [I(146,157)] = {64,0}, + [I(147,157)] = {64,0}, + [I(148,157)] = {64,0}, + [I(149,157)] = {64,0}, + [I(150,157)] = {64,0}, + [I(151,157)] = {64,0}, + [I(152,157)] = {64,0}, + [I(153,157)] = {64,0}, + [I(154,157)] = {64,0}, + [I(155,157)] = {64,0}, + [I(156,157)] = {64,0}, + [I(157,157)] = {64,0}, + [I(158,157)] = {64,0}, + [I(159,157)] = {64,0}, + [I(160,157)] = {64,0}, + [I(161,157)] = {64,0}, + [I(162,157)] = {64,0}, + [I(163,157)] = {64,0}, + [I(164,157)] = {64,0}, + [I(165,157)] = {64,0}, + [I(166,157)] = {64,0}, + [I(167,157)] = {64,0}, + [I(168,157)] = {64,0}, + [I(169,157)] = {64,0}, + [I(170,157)] = {64,0}, + [I(171,157)] = {64,0}, + [I(172,157)] = {64,0}, + [I(173,157)] = {64,0}, + [I(174,157)] = {64,0}, + [I(175,157)] = {64,0}, + [I(176,157)] = {64,0}, + [I(177,157)] = {64,0}, + [I(178,157)] = {64,0}, + [I(179,157)] = {64,0}, + [I(180,157)] = {64,0}, + [I(181,157)] = {64,0}, + [I(182,157)] = {64,0}, + [I(183,157)] = {64,0}, + [I(184,157)] = {64,0}, + [I(185,157)] = {64,0}, + [I(186,157)] = {64,0}, + [I(187,157)] = {64,0}, + [I(188,157)] = {64,0}, + [I(189,157)] = {64,0}, + [I(190,157)] = {64,0}, + [I(191,157)] = {64,0}, + [I(192,157)] = {64,0}, + [I(193,157)] = {64,0}, + [I(194,157)] = {64,0}, + [I(195,157)] = {64,0}, + [I(196,157)] = {64,0}, + [I(197,157)] = {64,0}, + [I(198,157)] = {64,0}, + [I(199,157)] = {64,0}, + [I(200,157)] = {64,0}, + [I(201,157)] = {64,0}, + [I(202,157)] = {64,0}, + [I(203,157)] = {64,0}, + [I(204,157)] = {64,0}, + [I(205,157)] = {64,0}, + [I(206,157)] = {64,0}, + [I(207,157)] = {64,0}, + [I(208,157)] = {64,0}, + [I(209,157)] = {64,0}, + [I(210,157)] = {64,0}, + [I(211,157)] = {64,0}, + [I(212,157)] = {64,0}, + [I(213,157)] = {64,0}, + [I(214,157)] = {64,0}, + [I(215,157)] = {64,0}, + [I(216,157)] = {64,0}, + [I(217,157)] = {64,0}, + [I(218,157)] = {64,0}, + [I(219,157)] = {64,0}, + [I(220,157)] = {64,0}, + [I(221,157)] = {64,0}, + [I(222,157)] = {64,0}, + [I(223,157)] = {64,0}, + [I(224,157)] = {64,0}, + [I(225,157)] = {64,0}, + [I(226,157)] = {64,0}, + [I(227,157)] = {64,0}, + [I(228,157)] = {64,0}, + [I(229,157)] = {64,0}, + [I(230,157)] = {64,0}, + [I(231,157)] = {64,0}, + [I(232,157)] = {64,0}, + [I(233,157)] = {64,0}, + [I(234,157)] = {64,0}, + [I(235,157)] = {64,0}, + [I(236,157)] = {64,0}, + [I(237,157)] = {64,0}, + [I(238,157)] = {64,0}, + [I(239,157)] = {64,0}, + [I(240,157)] = {64,0}, + [I(241,157)] = {64,0}, + [I(242,157)] = {64,0}, + [I(243,157)] = {64,0}, + [I(244,157)] = {64,0}, + [I(245,157)] = {64,0}, + [I(246,157)] = {64,0}, + [I(247,157)] = {64,0}, + [I(248,157)] = {64,0}, + [I(249,157)] = {64,0}, + [I(250,157)] = {64,0}, + [I(251,157)] = {64,0}, + [I(252,157)] = {64,0}, + [I(253,157)] = {64,0}, + [I(254,157)] = {64,0}, + [I(255,157)] = {64,0}, + [I(0,158)] = {64,0}, + [I(1,158)] = {64,0}, + [I(2,158)] = {64,0}, + [I(3,158)] = {64,0}, + [I(4,158)] = {64,0}, + [I(5,158)] = {64,0}, + [I(6,158)] = {64,0}, + [I(7,158)] = {64,0}, + [I(8,158)] = {64,0}, + [I(9,158)] = {64,0}, + [I(10,158)] = {64,0}, + [I(11,158)] = {64,0}, + [I(12,158)] = {64,0}, + [I(13,158)] = {64,0}, + [I(14,158)] = {64,0}, + [I(15,158)] = {64,0}, + [I(16,158)] = {64,0}, + [I(17,158)] = {64,0}, + [I(18,158)] = {64,0}, + [I(19,158)] = {64,0}, + [I(20,158)] = {64,0}, + [I(21,158)] = {64,0}, + [I(22,158)] = {64,0}, + [I(23,158)] = {64,0}, + [I(24,158)] = {64,0}, + [I(25,158)] = {64,0}, + [I(26,158)] = {64,0}, + [I(27,158)] = {64,0}, + [I(28,158)] = {64,0}, + [I(29,158)] = {64,0}, + [I(30,158)] = {64,0}, + [I(31,158)] = {64,0}, + [I(32,158)] = {29,0xA7FFFE7}, + [I(33,158)] = {64,0}, + [I(34,158)] = {64,0}, + [I(35,158)] = {64,0}, + [I(36,158)] = {64,0}, + [I(37,158)] = {29,0xAFFFFE7}, + [I(38,158)] = {31,0x7C7FFFE7}, + [I(39,158)] = {64,0}, + [I(40,158)] = {64,0}, + [I(41,158)] = {64,0}, + [I(42,158)] = {31,0x7CFFFFE7}, + [I(43,158)] = {64,0}, + [I(44,158)] = {31,0x7D7FFFE7}, + [I(45,158)] = {29,0xB7FFFE7}, + [I(46,158)] = {29,0xBFFFFE7}, + [I(47,158)] = {29,0xC7FFFE7}, + [I(48,158)] = {28,0x7FFFE7}, + [I(49,158)] = {28,0xFFFFE7}, + [I(50,158)] = {28,0x17FFFE7}, + [I(51,158)] = {29,0xCFFFFE7}, + [I(52,158)] = {29,0xD7FFFE7}, + [I(53,158)] = {29,0xDFFFFE7}, + [I(54,158)] = {29,0xE7FFFE7}, + [I(55,158)] = {29,0xEFFFFE7}, + [I(56,158)] = {29,0xF7FFFE7}, + [I(57,158)] = {29,0xFFFFFE7}, + [I(58,158)] = {30,0x2E7FFFE7}, + [I(59,158)] = {31,0x7DFFFFE7}, + [I(60,158)] = {64,0}, + [I(61,158)] = {29,0x107FFFE7}, + [I(62,158)] = {64,0}, + [I(63,158)] = {64,0}, + [I(64,158)] = {64,0}, + [I(65,158)] = {29,0x10FFFFE7}, + [I(66,158)] = {30,0x2EFFFFE7}, + [I(67,158)] = {30,0x2F7FFFE7}, + [I(68,158)] = {30,0x2FFFFFE7}, + [I(69,158)] = {30,0x307FFFE7}, + [I(70,158)] = {30,0x30FFFFE7}, + [I(71,158)] = {30,0x317FFFE7}, + [I(72,158)] = {30,0x31FFFFE7}, + [I(73,158)] = {30,0x327FFFE7}, + [I(74,158)] = {30,0x32FFFFE7}, + [I(75,158)] = {30,0x337FFFE7}, + [I(76,158)] = {30,0x33FFFFE7}, + [I(77,158)] = {30,0x347FFFE7}, + [I(78,158)] = {30,0x34FFFFE7}, + [I(79,158)] = {30,0x357FFFE7}, + [I(80,158)] = {30,0x35FFFFE7}, + [I(81,158)] = {30,0x367FFFE7}, + [I(82,158)] = {30,0x36FFFFE7}, + [I(83,158)] = {30,0x377FFFE7}, + [I(84,158)] = {30,0x37FFFFE7}, + [I(85,158)] = {30,0x387FFFE7}, + [I(86,158)] = {30,0x38FFFFE7}, + [I(87,158)] = {30,0x397FFFE7}, + [I(88,158)] = {31,0x7E7FFFE7}, + [I(89,158)] = {30,0x39FFFFE7}, + [I(90,158)] = {31,0x7EFFFFE7}, + [I(91,158)] = {64,0}, + [I(92,158)] = {64,0}, + [I(93,158)] = {64,0}, + [I(94,158)] = {64,0}, + [I(95,158)] = {29,0x117FFFE7}, + [I(96,158)] = {64,0}, + [I(97,158)] = {28,0x1FFFFE7}, + [I(98,158)] = {29,0x11FFFFE7}, + [I(99,158)] = {28,0x27FFFE7}, + [I(100,158)] = {29,0x127FFFE7}, + [I(101,158)] = {28,0x2FFFFE7}, + [I(102,158)] = {29,0x12FFFFE7}, + [I(103,158)] = {29,0x137FFFE7}, + [I(104,158)] = {29,0x13FFFFE7}, + [I(105,158)] = {28,0x37FFFE7}, + [I(106,158)] = {30,0x3A7FFFE7}, + [I(107,158)] = {30,0x3AFFFFE7}, + [I(108,158)] = {29,0x147FFFE7}, + [I(109,158)] = {29,0x14FFFFE7}, + [I(110,158)] = {29,0x157FFFE7}, + [I(111,158)] = {28,0x3FFFFE7}, + [I(112,158)] = {29,0x15FFFFE7}, + [I(113,158)] = {30,0x3B7FFFE7}, + [I(114,158)] = {29,0x167FFFE7}, + [I(115,158)] = {28,0x47FFFE7}, + [I(116,158)] = {28,0x4FFFFE7}, + [I(117,158)] = {29,0x16FFFFE7}, + [I(118,158)] = {30,0x3BFFFFE7}, + [I(119,158)] = {30,0x3C7FFFE7}, + [I(120,158)] = {30,0x3CFFFFE7}, + [I(121,158)] = {30,0x3D7FFFE7}, + [I(122,158)] = {30,0x3DFFFFE7}, + [I(123,158)] = {64,0}, + [I(124,158)] = {64,0}, + [I(125,158)] = {64,0}, + [I(126,158)] = {64,0}, + [I(127,158)] = {64,0}, + [I(128,158)] = {64,0}, + [I(129,158)] = {64,0}, + [I(130,158)] = {64,0}, + [I(131,158)] = {64,0}, + [I(132,158)] = {64,0}, + [I(133,158)] = {64,0}, + [I(134,158)] = {64,0}, + [I(135,158)] = {64,0}, + [I(136,158)] = {64,0}, + [I(137,158)] = {64,0}, + [I(138,158)] = {64,0}, + [I(139,158)] = {64,0}, + [I(140,158)] = {64,0}, + [I(141,158)] = {64,0}, + [I(142,158)] = {64,0}, + [I(143,158)] = {64,0}, + [I(144,158)] = {64,0}, + [I(145,158)] = {64,0}, + [I(146,158)] = {64,0}, + [I(147,158)] = {64,0}, + [I(148,158)] = {64,0}, + [I(149,158)] = {64,0}, + [I(150,158)] = {64,0}, + [I(151,158)] = {64,0}, + [I(152,158)] = {64,0}, + [I(153,158)] = {64,0}, + [I(154,158)] = {64,0}, + [I(155,158)] = {64,0}, + [I(156,158)] = {64,0}, + [I(157,158)] = {64,0}, + [I(158,158)] = {64,0}, + [I(159,158)] = {64,0}, + [I(160,158)] = {64,0}, + [I(161,158)] = {64,0}, + [I(162,158)] = {64,0}, + [I(163,158)] = {64,0}, + [I(164,158)] = {64,0}, + [I(165,158)] = {64,0}, + [I(166,158)] = {64,0}, + [I(167,158)] = {64,0}, + [I(168,158)] = {64,0}, + [I(169,158)] = {64,0}, + [I(170,158)] = {64,0}, + [I(171,158)] = {64,0}, + [I(172,158)] = {64,0}, + [I(173,158)] = {64,0}, + [I(174,158)] = {64,0}, + [I(175,158)] = {64,0}, + [I(176,158)] = {64,0}, + [I(177,158)] = {64,0}, + [I(178,158)] = {64,0}, + [I(179,158)] = {64,0}, + [I(180,158)] = {64,0}, + [I(181,158)] = {64,0}, + [I(182,158)] = {64,0}, + [I(183,158)] = {64,0}, + [I(184,158)] = {64,0}, + [I(185,158)] = {64,0}, + [I(186,158)] = {64,0}, + [I(187,158)] = {64,0}, + [I(188,158)] = {64,0}, + [I(189,158)] = {64,0}, + [I(190,158)] = {64,0}, + [I(191,158)] = {64,0}, + [I(192,158)] = {64,0}, + [I(193,158)] = {64,0}, + [I(194,158)] = {64,0}, + [I(195,158)] = {64,0}, + [I(196,158)] = {64,0}, + [I(197,158)] = {64,0}, + [I(198,158)] = {64,0}, + [I(199,158)] = {64,0}, + [I(200,158)] = {64,0}, + [I(201,158)] = {64,0}, + [I(202,158)] = {64,0}, + [I(203,158)] = {64,0}, + [I(204,158)] = {64,0}, + [I(205,158)] = {64,0}, + [I(206,158)] = {64,0}, + [I(207,158)] = {64,0}, + [I(208,158)] = {64,0}, + [I(209,158)] = {64,0}, + [I(210,158)] = {64,0}, + [I(211,158)] = {64,0}, + [I(212,158)] = {64,0}, + [I(213,158)] = {64,0}, + [I(214,158)] = {64,0}, + [I(215,158)] = {64,0}, + [I(216,158)] = {64,0}, + [I(217,158)] = {64,0}, + [I(218,158)] = {64,0}, + [I(219,158)] = {64,0}, + [I(220,158)] = {64,0}, + [I(221,158)] = {64,0}, + [I(222,158)] = {64,0}, + [I(223,158)] = {64,0}, + [I(224,158)] = {64,0}, + [I(225,158)] = {64,0}, + [I(226,158)] = {64,0}, + [I(227,158)] = {64,0}, + [I(228,158)] = {64,0}, + [I(229,158)] = {64,0}, + [I(230,158)] = {64,0}, + [I(231,158)] = {64,0}, + [I(232,158)] = {64,0}, + [I(233,158)] = {64,0}, + [I(234,158)] = {64,0}, + [I(235,158)] = {64,0}, + [I(236,158)] = {64,0}, + [I(237,158)] = {64,0}, + [I(238,158)] = {64,0}, + [I(239,158)] = {64,0}, + [I(240,158)] = {64,0}, + [I(241,158)] = {64,0}, + [I(242,158)] = {64,0}, + [I(243,158)] = {64,0}, + [I(244,158)] = {64,0}, + [I(245,158)] = {64,0}, + [I(246,158)] = {64,0}, + [I(247,158)] = {64,0}, + [I(248,158)] = {64,0}, + [I(249,158)] = {64,0}, + [I(250,158)] = {64,0}, + [I(251,158)] = {64,0}, + [I(252,158)] = {64,0}, + [I(253,158)] = {64,0}, + [I(254,158)] = {64,0}, + [I(255,158)] = {64,0}, + [I(0,159)] = {64,0}, + [I(1,159)] = {64,0}, + [I(2,159)] = {64,0}, + [I(3,159)] = {64,0}, + [I(4,159)] = {64,0}, + [I(5,159)] = {64,0}, + [I(6,159)] = {64,0}, + [I(7,159)] = {64,0}, + [I(8,159)] = {64,0}, + [I(9,159)] = {64,0}, + [I(10,159)] = {64,0}, + [I(11,159)] = {64,0}, + [I(12,159)] = {64,0}, + [I(13,159)] = {64,0}, + [I(14,159)] = {64,0}, + [I(15,159)] = {64,0}, + [I(16,159)] = {64,0}, + [I(17,159)] = {64,0}, + [I(18,159)] = {64,0}, + [I(19,159)] = {64,0}, + [I(20,159)] = {64,0}, + [I(21,159)] = {64,0}, + [I(22,159)] = {64,0}, + [I(23,159)] = {64,0}, + [I(24,159)] = {64,0}, + [I(25,159)] = {64,0}, + [I(26,159)] = {64,0}, + [I(27,159)] = {64,0}, + [I(28,159)] = {64,0}, + [I(29,159)] = {64,0}, + [I(30,159)] = {64,0}, + [I(31,159)] = {64,0}, + [I(32,159)] = {30,0x14FFFFEF}, + [I(33,159)] = {64,0}, + [I(34,159)] = {64,0}, + [I(35,159)] = {64,0}, + [I(36,159)] = {64,0}, + [I(37,159)] = {30,0x15FFFFEF}, + [I(38,159)] = {X32,0xF8FFFFEF}, + [I(39,159)] = {64,0}, + [I(40,159)] = {64,0}, + [I(41,159)] = {64,0}, + [I(42,159)] = {X32,0xF9FFFFEF}, + [I(43,159)] = {64,0}, + [I(44,159)] = {X32,0xFAFFFFEF}, + [I(45,159)] = {30,0x16FFFFEF}, + [I(46,159)] = {30,0x17FFFFEF}, + [I(47,159)] = {30,0x18FFFFEF}, + [I(48,159)] = {29,0xFFFFEF}, + [I(49,159)] = {29,0x1FFFFEF}, + [I(50,159)] = {29,0x2FFFFEF}, + [I(51,159)] = {30,0x19FFFFEF}, + [I(52,159)] = {30,0x1AFFFFEF}, + [I(53,159)] = {30,0x1BFFFFEF}, + [I(54,159)] = {30,0x1CFFFFEF}, + [I(55,159)] = {30,0x1DFFFFEF}, + [I(56,159)] = {30,0x1EFFFFEF}, + [I(57,159)] = {30,0x1FFFFFEF}, + [I(58,159)] = {31,0x5CFFFFEF}, + [I(59,159)] = {X32,0xFBFFFFEF}, + [I(60,159)] = {64,0}, + [I(61,159)] = {30,0x20FFFFEF}, + [I(62,159)] = {64,0}, + [I(63,159)] = {64,0}, + [I(64,159)] = {64,0}, + [I(65,159)] = {30,0x21FFFFEF}, + [I(66,159)] = {31,0x5DFFFFEF}, + [I(67,159)] = {31,0x5EFFFFEF}, + [I(68,159)] = {31,0x5FFFFFEF}, + [I(69,159)] = {31,0x60FFFFEF}, + [I(70,159)] = {31,0x61FFFFEF}, + [I(71,159)] = {31,0x62FFFFEF}, + [I(72,159)] = {31,0x63FFFFEF}, + [I(73,159)] = {31,0x64FFFFEF}, + [I(74,159)] = {31,0x65FFFFEF}, + [I(75,159)] = {31,0x66FFFFEF}, + [I(76,159)] = {31,0x67FFFFEF}, + [I(77,159)] = {31,0x68FFFFEF}, + [I(78,159)] = {31,0x69FFFFEF}, + [I(79,159)] = {31,0x6AFFFFEF}, + [I(80,159)] = {31,0x6BFFFFEF}, + [I(81,159)] = {31,0x6CFFFFEF}, + [I(82,159)] = {31,0x6DFFFFEF}, + [I(83,159)] = {31,0x6EFFFFEF}, + [I(84,159)] = {31,0x6FFFFFEF}, + [I(85,159)] = {31,0x70FFFFEF}, + [I(86,159)] = {31,0x71FFFFEF}, + [I(87,159)] = {31,0x72FFFFEF}, + [I(88,159)] = {X32,0xFCFFFFEF}, + [I(89,159)] = {31,0x73FFFFEF}, + [I(90,159)] = {X32,0xFDFFFFEF}, + [I(91,159)] = {64,0}, + [I(92,159)] = {64,0}, + [I(93,159)] = {64,0}, + [I(94,159)] = {64,0}, + [I(95,159)] = {30,0x22FFFFEF}, + [I(96,159)] = {64,0}, + [I(97,159)] = {29,0x3FFFFEF}, + [I(98,159)] = {30,0x23FFFFEF}, + [I(99,159)] = {29,0x4FFFFEF}, + [I(100,159)] = {30,0x24FFFFEF}, + [I(101,159)] = {29,0x5FFFFEF}, + [I(102,159)] = {30,0x25FFFFEF}, + [I(103,159)] = {30,0x26FFFFEF}, + [I(104,159)] = {30,0x27FFFFEF}, + [I(105,159)] = {29,0x6FFFFEF}, + [I(106,159)] = {31,0x74FFFFEF}, + [I(107,159)] = {31,0x75FFFFEF}, + [I(108,159)] = {30,0x28FFFFEF}, + [I(109,159)] = {30,0x29FFFFEF}, + [I(110,159)] = {30,0x2AFFFFEF}, + [I(111,159)] = {29,0x7FFFFEF}, + [I(112,159)] = {30,0x2BFFFFEF}, + [I(113,159)] = {31,0x76FFFFEF}, + [I(114,159)] = {30,0x2CFFFFEF}, + [I(115,159)] = {29,0x8FFFFEF}, + [I(116,159)] = {29,0x9FFFFEF}, + [I(117,159)] = {30,0x2DFFFFEF}, + [I(118,159)] = {31,0x77FFFFEF}, + [I(119,159)] = {31,0x78FFFFEF}, + [I(120,159)] = {31,0x79FFFFEF}, + [I(121,159)] = {31,0x7AFFFFEF}, + [I(122,159)] = {31,0x7BFFFFEF}, + [I(123,159)] = {64,0}, + [I(124,159)] = {64,0}, + [I(125,159)] = {64,0}, + [I(126,159)] = {64,0}, + [I(127,159)] = {64,0}, + [I(128,159)] = {64,0}, + [I(129,159)] = {64,0}, + [I(130,159)] = {64,0}, + [I(131,159)] = {64,0}, + [I(132,159)] = {64,0}, + [I(133,159)] = {64,0}, + [I(134,159)] = {64,0}, + [I(135,159)] = {64,0}, + [I(136,159)] = {64,0}, + [I(137,159)] = {64,0}, + [I(138,159)] = {64,0}, + [I(139,159)] = {64,0}, + [I(140,159)] = {64,0}, + [I(141,159)] = {64,0}, + [I(142,159)] = {64,0}, + [I(143,159)] = {64,0}, + [I(144,159)] = {64,0}, + [I(145,159)] = {64,0}, + [I(146,159)] = {64,0}, + [I(147,159)] = {64,0}, + [I(148,159)] = {64,0}, + [I(149,159)] = {64,0}, + [I(150,159)] = {64,0}, + [I(151,159)] = {64,0}, + [I(152,159)] = {64,0}, + [I(153,159)] = {64,0}, + [I(154,159)] = {64,0}, + [I(155,159)] = {64,0}, + [I(156,159)] = {64,0}, + [I(157,159)] = {64,0}, + [I(158,159)] = {64,0}, + [I(159,159)] = {64,0}, + [I(160,159)] = {64,0}, + [I(161,159)] = {64,0}, + [I(162,159)] = {64,0}, + [I(163,159)] = {64,0}, + [I(164,159)] = {64,0}, + [I(165,159)] = {64,0}, + [I(166,159)] = {64,0}, + [I(167,159)] = {64,0}, + [I(168,159)] = {64,0}, + [I(169,159)] = {64,0}, + [I(170,159)] = {64,0}, + [I(171,159)] = {64,0}, + [I(172,159)] = {64,0}, + [I(173,159)] = {64,0}, + [I(174,159)] = {64,0}, + [I(175,159)] = {64,0}, + [I(176,159)] = {64,0}, + [I(177,159)] = {64,0}, + [I(178,159)] = {64,0}, + [I(179,159)] = {64,0}, + [I(180,159)] = {64,0}, + [I(181,159)] = {64,0}, + [I(182,159)] = {64,0}, + [I(183,159)] = {64,0}, + [I(184,159)] = {64,0}, + [I(185,159)] = {64,0}, + [I(186,159)] = {64,0}, + [I(187,159)] = {64,0}, + [I(188,159)] = {64,0}, + [I(189,159)] = {64,0}, + [I(190,159)] = {64,0}, + [I(191,159)] = {64,0}, + [I(192,159)] = {64,0}, + [I(193,159)] = {64,0}, + [I(194,159)] = {64,0}, + [I(195,159)] = {64,0}, + [I(196,159)] = {64,0}, + [I(197,159)] = {64,0}, + [I(198,159)] = {64,0}, + [I(199,159)] = {64,0}, + [I(200,159)] = {64,0}, + [I(201,159)] = {64,0}, + [I(202,159)] = {64,0}, + [I(203,159)] = {64,0}, + [I(204,159)] = {64,0}, + [I(205,159)] = {64,0}, + [I(206,159)] = {64,0}, + [I(207,159)] = {64,0}, + [I(208,159)] = {64,0}, + [I(209,159)] = {64,0}, + [I(210,159)] = {64,0}, + [I(211,159)] = {64,0}, + [I(212,159)] = {64,0}, + [I(213,159)] = {64,0}, + [I(214,159)] = {64,0}, + [I(215,159)] = {64,0}, + [I(216,159)] = {64,0}, + [I(217,159)] = {64,0}, + [I(218,159)] = {64,0}, + [I(219,159)] = {64,0}, + [I(220,159)] = {64,0}, + [I(221,159)] = {64,0}, + [I(222,159)] = {64,0}, + [I(223,159)] = {64,0}, + [I(224,159)] = {64,0}, + [I(225,159)] = {64,0}, + [I(226,159)] = {64,0}, + [I(227,159)] = {64,0}, + [I(228,159)] = {64,0}, + [I(229,159)] = {64,0}, + [I(230,159)] = {64,0}, + [I(231,159)] = {64,0}, + [I(232,159)] = {64,0}, + [I(233,159)] = {64,0}, + [I(234,159)] = {64,0}, + [I(235,159)] = {64,0}, + [I(236,159)] = {64,0}, + [I(237,159)] = {64,0}, + [I(238,159)] = {64,0}, + [I(239,159)] = {64,0}, + [I(240,159)] = {64,0}, + [I(241,159)] = {64,0}, + [I(242,159)] = {64,0}, + [I(243,159)] = {64,0}, + [I(244,159)] = {64,0}, + [I(245,159)] = {64,0}, + [I(246,159)] = {64,0}, + [I(247,159)] = {64,0}, + [I(248,159)] = {64,0}, + [I(249,159)] = {64,0}, + [I(250,159)] = {64,0}, + [I(251,159)] = {64,0}, + [I(252,159)] = {64,0}, + [I(253,159)] = {64,0}, + [I(254,159)] = {64,0}, + [I(255,159)] = {64,0}, + [I(0,160)] = {64,0}, + [I(1,160)] = {64,0}, + [I(2,160)] = {64,0}, + [I(3,160)] = {64,0}, + [I(4,160)] = {64,0}, + [I(5,160)] = {64,0}, + [I(6,160)] = {64,0}, + [I(7,160)] = {64,0}, + [I(8,160)] = {64,0}, + [I(9,160)] = {64,0}, + [I(10,160)] = {64,0}, + [I(11,160)] = {64,0}, + [I(12,160)] = {64,0}, + [I(13,160)] = {64,0}, + [I(14,160)] = {64,0}, + [I(15,160)] = {64,0}, + [I(16,160)] = {64,0}, + [I(17,160)] = {64,0}, + [I(18,160)] = {64,0}, + [I(19,160)] = {64,0}, + [I(20,160)] = {64,0}, + [I(21,160)] = {64,0}, + [I(22,160)] = {64,0}, + [I(23,160)] = {64,0}, + [I(24,160)] = {64,0}, + [I(25,160)] = {64,0}, + [I(26,160)] = {64,0}, + [I(27,160)] = {64,0}, + [I(28,160)] = {64,0}, + [I(29,160)] = {64,0}, + [I(30,160)] = {64,0}, + [I(31,160)] = {64,0}, + [I(32,160)] = {28,0x53FFFDA}, + [I(33,160)] = {X32,0xFE3FFFDA}, + [I(34,160)] = {X32,0xFE7FFFDA}, + [I(35,160)] = {64,0}, + [I(36,160)] = {64,0}, + [I(37,160)] = {28,0x57FFFDA}, + [I(38,160)] = {30,0x3E3FFFDA}, + [I(39,160)] = {64,0}, + [I(40,160)] = {X32,0xFEBFFFDA}, + [I(41,160)] = {X32,0xFEFFFFDA}, + [I(42,160)] = {30,0x3E7FFFDA}, + [I(43,160)] = {64,0}, + [I(44,160)] = {30,0x3EBFFFDA}, + [I(45,160)] = {28,0x5BFFFDA}, + [I(46,160)] = {28,0x5FFFFDA}, + [I(47,160)] = {28,0x63FFFDA}, + [I(48,160)] = {27,0x3FFFDA}, + [I(49,160)] = {27,0x7FFFDA}, + [I(50,160)] = {27,0xBFFFDA}, + [I(51,160)] = {28,0x67FFFDA}, + [I(52,160)] = {28,0x6BFFFDA}, + [I(53,160)] = {28,0x6FFFFDA}, + [I(54,160)] = {28,0x73FFFDA}, + [I(55,160)] = {28,0x77FFFDA}, + [I(56,160)] = {28,0x7BFFFDA}, + [I(57,160)] = {28,0x7FFFFDA}, + [I(58,160)] = {29,0x173FFFDA}, + [I(59,160)] = {30,0x3EFFFFDA}, + [I(60,160)] = {64,0}, + [I(61,160)] = {28,0x83FFFDA}, + [I(62,160)] = {64,0}, + [I(63,160)] = {X32,0xFF3FFFDA}, + [I(64,160)] = {64,0}, + [I(65,160)] = {28,0x87FFFDA}, + [I(66,160)] = {29,0x177FFFDA}, + [I(67,160)] = {29,0x17BFFFDA}, + [I(68,160)] = {29,0x17FFFFDA}, + [I(69,160)] = {29,0x183FFFDA}, + [I(70,160)] = {29,0x187FFFDA}, + [I(71,160)] = {29,0x18BFFFDA}, + [I(72,160)] = {29,0x18FFFFDA}, + [I(73,160)] = {29,0x193FFFDA}, + [I(74,160)] = {29,0x197FFFDA}, + [I(75,160)] = {29,0x19BFFFDA}, + [I(76,160)] = {29,0x19FFFFDA}, + [I(77,160)] = {29,0x1A3FFFDA}, + [I(78,160)] = {29,0x1A7FFFDA}, + [I(79,160)] = {29,0x1ABFFFDA}, + [I(80,160)] = {29,0x1AFFFFDA}, + [I(81,160)] = {29,0x1B3FFFDA}, + [I(82,160)] = {29,0x1B7FFFDA}, + [I(83,160)] = {29,0x1BBFFFDA}, + [I(84,160)] = {29,0x1BFFFFDA}, + [I(85,160)] = {29,0x1C3FFFDA}, + [I(86,160)] = {29,0x1C7FFFDA}, + [I(87,160)] = {29,0x1CBFFFDA}, + [I(88,160)] = {30,0x3F3FFFDA}, + [I(89,160)] = {29,0x1CFFFFDA}, + [I(90,160)] = {30,0x3F7FFFDA}, + [I(91,160)] = {64,0}, + [I(92,160)] = {64,0}, + [I(93,160)] = {64,0}, + [I(94,160)] = {64,0}, + [I(95,160)] = {28,0x8BFFFDA}, + [I(96,160)] = {64,0}, + [I(97,160)] = {27,0xFFFFDA}, + [I(98,160)] = {28,0x8FFFFDA}, + [I(99,160)] = {27,0x13FFFDA}, + [I(100,160)] = {28,0x93FFFDA}, + [I(101,160)] = {27,0x17FFFDA}, + [I(102,160)] = {28,0x97FFFDA}, + [I(103,160)] = {28,0x9BFFFDA}, + [I(104,160)] = {28,0x9FFFFDA}, + [I(105,160)] = {27,0x1BFFFDA}, + [I(106,160)] = {29,0x1D3FFFDA}, + [I(107,160)] = {29,0x1D7FFFDA}, + [I(108,160)] = {28,0xA3FFFDA}, + [I(109,160)] = {28,0xA7FFFDA}, + [I(110,160)] = {28,0xABFFFDA}, + [I(111,160)] = {27,0x1FFFFDA}, + [I(112,160)] = {28,0xAFFFFDA}, + [I(113,160)] = {29,0x1DBFFFDA}, + [I(114,160)] = {28,0xB3FFFDA}, + [I(115,160)] = {27,0x23FFFDA}, + [I(116,160)] = {27,0x27FFFDA}, + [I(117,160)] = {28,0xB7FFFDA}, + [I(118,160)] = {29,0x1DFFFFDA}, + [I(119,160)] = {29,0x1E3FFFDA}, + [I(120,160)] = {29,0x1E7FFFDA}, + [I(121,160)] = {29,0x1EBFFFDA}, + [I(122,160)] = {29,0x1EFFFFDA}, + [I(123,160)] = {64,0}, + [I(124,160)] = {64,0}, + [I(125,160)] = {64,0}, + [I(126,160)] = {64,0}, + [I(127,160)] = {64,0}, + [I(128,160)] = {64,0}, + [I(129,160)] = {64,0}, + [I(130,160)] = {64,0}, + [I(131,160)] = {64,0}, + [I(132,160)] = {64,0}, + [I(133,160)] = {64,0}, + [I(134,160)] = {64,0}, + [I(135,160)] = {64,0}, + [I(136,160)] = {64,0}, + [I(137,160)] = {64,0}, + [I(138,160)] = {64,0}, + [I(139,160)] = {64,0}, + [I(140,160)] = {64,0}, + [I(141,160)] = {64,0}, + [I(142,160)] = {64,0}, + [I(143,160)] = {64,0}, + [I(144,160)] = {64,0}, + [I(145,160)] = {64,0}, + [I(146,160)] = {64,0}, + [I(147,160)] = {64,0}, + [I(148,160)] = {64,0}, + [I(149,160)] = {64,0}, + [I(150,160)] = {64,0}, + [I(151,160)] = {64,0}, + [I(152,160)] = {64,0}, + [I(153,160)] = {64,0}, + [I(154,160)] = {64,0}, + [I(155,160)] = {64,0}, + [I(156,160)] = {64,0}, + [I(157,160)] = {64,0}, + [I(158,160)] = {64,0}, + [I(159,160)] = {64,0}, + [I(160,160)] = {64,0}, + [I(161,160)] = {64,0}, + [I(162,160)] = {64,0}, + [I(163,160)] = {64,0}, + [I(164,160)] = {64,0}, + [I(165,160)] = {64,0}, + [I(166,160)] = {64,0}, + [I(167,160)] = {64,0}, + [I(168,160)] = {64,0}, + [I(169,160)] = {64,0}, + [I(170,160)] = {64,0}, + [I(171,160)] = {64,0}, + [I(172,160)] = {64,0}, + [I(173,160)] = {64,0}, + [I(174,160)] = {64,0}, + [I(175,160)] = {64,0}, + [I(176,160)] = {64,0}, + [I(177,160)] = {64,0}, + [I(178,160)] = {64,0}, + [I(179,160)] = {64,0}, + [I(180,160)] = {64,0}, + [I(181,160)] = {64,0}, + [I(182,160)] = {64,0}, + [I(183,160)] = {64,0}, + [I(184,160)] = {64,0}, + [I(185,160)] = {64,0}, + [I(186,160)] = {64,0}, + [I(187,160)] = {64,0}, + [I(188,160)] = {64,0}, + [I(189,160)] = {64,0}, + [I(190,160)] = {64,0}, + [I(191,160)] = {64,0}, + [I(192,160)] = {64,0}, + [I(193,160)] = {64,0}, + [I(194,160)] = {64,0}, + [I(195,160)] = {64,0}, + [I(196,160)] = {64,0}, + [I(197,160)] = {64,0}, + [I(198,160)] = {64,0}, + [I(199,160)] = {64,0}, + [I(200,160)] = {64,0}, + [I(201,160)] = {64,0}, + [I(202,160)] = {64,0}, + [I(203,160)] = {64,0}, + [I(204,160)] = {64,0}, + [I(205,160)] = {64,0}, + [I(206,160)] = {64,0}, + [I(207,160)] = {64,0}, + [I(208,160)] = {64,0}, + [I(209,160)] = {64,0}, + [I(210,160)] = {64,0}, + [I(211,160)] = {64,0}, + [I(212,160)] = {64,0}, + [I(213,160)] = {64,0}, + [I(214,160)] = {64,0}, + [I(215,160)] = {64,0}, + [I(216,160)] = {64,0}, + [I(217,160)] = {64,0}, + [I(218,160)] = {64,0}, + [I(219,160)] = {64,0}, + [I(220,160)] = {64,0}, + [I(221,160)] = {64,0}, + [I(222,160)] = {64,0}, + [I(223,160)] = {64,0}, + [I(224,160)] = {64,0}, + [I(225,160)] = {64,0}, + [I(226,160)] = {64,0}, + [I(227,160)] = {64,0}, + [I(228,160)] = {64,0}, + [I(229,160)] = {64,0}, + [I(230,160)] = {64,0}, + [I(231,160)] = {64,0}, + [I(232,160)] = {64,0}, + [I(233,160)] = {64,0}, + [I(234,160)] = {64,0}, + [I(235,160)] = {64,0}, + [I(236,160)] = {64,0}, + [I(237,160)] = {64,0}, + [I(238,160)] = {64,0}, + [I(239,160)] = {64,0}, + [I(240,160)] = {64,0}, + [I(241,160)] = {64,0}, + [I(242,160)] = {64,0}, + [I(243,160)] = {64,0}, + [I(244,160)] = {64,0}, + [I(245,160)] = {64,0}, + [I(246,160)] = {64,0}, + [I(247,160)] = {64,0}, + [I(248,160)] = {64,0}, + [I(249,160)] = {64,0}, + [I(250,160)] = {64,0}, + [I(251,160)] = {64,0}, + [I(252,160)] = {64,0}, + [I(253,160)] = {64,0}, + [I(254,160)] = {64,0}, + [I(255,160)] = {64,0}, + [I(0,161)] = {64,0}, + [I(1,161)] = {64,0}, + [I(2,161)] = {64,0}, + [I(3,161)] = {64,0}, + [I(4,161)] = {64,0}, + [I(5,161)] = {64,0}, + [I(6,161)] = {64,0}, + [I(7,161)] = {64,0}, + [I(8,161)] = {64,0}, + [I(9,161)] = {64,0}, + [I(10,161)] = {64,0}, + [I(11,161)] = {64,0}, + [I(12,161)] = {64,0}, + [I(13,161)] = {64,0}, + [I(14,161)] = {64,0}, + [I(15,161)] = {64,0}, + [I(16,161)] = {64,0}, + [I(17,161)] = {64,0}, + [I(18,161)] = {64,0}, + [I(19,161)] = {64,0}, + [I(20,161)] = {64,0}, + [I(21,161)] = {64,0}, + [I(22,161)] = {64,0}, + [I(23,161)] = {64,0}, + [I(24,161)] = {64,0}, + [I(25,161)] = {64,0}, + [I(26,161)] = {64,0}, + [I(27,161)] = {64,0}, + [I(28,161)] = {64,0}, + [I(29,161)] = {64,0}, + [I(30,161)] = {64,0}, + [I(31,161)] = {64,0}, + [I(32,161)] = {27,0x29FFFDD}, + [I(33,161)] = {31,0x7F1FFFDD}, + [I(34,161)] = {31,0x7F3FFFDD}, + [I(35,161)] = {64,0}, + [I(36,161)] = {64,0}, + [I(37,161)] = {27,0x2BFFFDD}, + [I(38,161)] = {29,0x1F1FFFDD}, + [I(39,161)] = {X32,0xFF5FFFDD}, + [I(40,161)] = {31,0x7F5FFFDD}, + [I(41,161)] = {31,0x7F7FFFDD}, + [I(42,161)] = {29,0x1F3FFFDD}, + [I(43,161)] = {X32,0xFF7FFFDD}, + [I(44,161)] = {29,0x1F5FFFDD}, + [I(45,161)] = {27,0x2DFFFDD}, + [I(46,161)] = {27,0x2FFFFDD}, + [I(47,161)] = {27,0x31FFFDD}, + [I(48,161)] = {26,0x1FFFDD}, + [I(49,161)] = {26,0x3FFFDD}, + [I(50,161)] = {26,0x5FFFDD}, + [I(51,161)] = {27,0x33FFFDD}, + [I(52,161)] = {27,0x35FFFDD}, + [I(53,161)] = {27,0x37FFFDD}, + [I(54,161)] = {27,0x39FFFDD}, + [I(55,161)] = {27,0x3BFFFDD}, + [I(56,161)] = {27,0x3DFFFDD}, + [I(57,161)] = {27,0x3FFFFDD}, + [I(58,161)] = {28,0xB9FFFDD}, + [I(59,161)] = {29,0x1F7FFFDD}, + [I(60,161)] = {64,0}, + [I(61,161)] = {27,0x41FFFDD}, + [I(62,161)] = {64,0}, + [I(63,161)] = {31,0x7F9FFFDD}, + [I(64,161)] = {64,0}, + [I(65,161)] = {27,0x43FFFDD}, + [I(66,161)] = {28,0xBBFFFDD}, + [I(67,161)] = {28,0xBDFFFDD}, + [I(68,161)] = {28,0xBFFFFDD}, + [I(69,161)] = {28,0xC1FFFDD}, + [I(70,161)] = {28,0xC3FFFDD}, + [I(71,161)] = {28,0xC5FFFDD}, + [I(72,161)] = {28,0xC7FFFDD}, + [I(73,161)] = {28,0xC9FFFDD}, + [I(74,161)] = {28,0xCBFFFDD}, + [I(75,161)] = {28,0xCDFFFDD}, + [I(76,161)] = {28,0xCFFFFDD}, + [I(77,161)] = {28,0xD1FFFDD}, + [I(78,161)] = {28,0xD3FFFDD}, + [I(79,161)] = {28,0xD5FFFDD}, + [I(80,161)] = {28,0xD7FFFDD}, + [I(81,161)] = {28,0xD9FFFDD}, + [I(82,161)] = {28,0xDBFFFDD}, + [I(83,161)] = {28,0xDDFFFDD}, + [I(84,161)] = {28,0xDFFFFDD}, + [I(85,161)] = {28,0xE1FFFDD}, + [I(86,161)] = {28,0xE3FFFDD}, + [I(87,161)] = {28,0xE5FFFDD}, + [I(88,161)] = {29,0x1F9FFFDD}, + [I(89,161)] = {28,0xE7FFFDD}, + [I(90,161)] = {29,0x1FBFFFDD}, + [I(91,161)] = {64,0}, + [I(92,161)] = {64,0}, + [I(93,161)] = {64,0}, + [I(94,161)] = {64,0}, + [I(95,161)] = {27,0x45FFFDD}, + [I(96,161)] = {64,0}, + [I(97,161)] = {26,0x7FFFDD}, + [I(98,161)] = {27,0x47FFFDD}, + [I(99,161)] = {26,0x9FFFDD}, + [I(100,161)] = {27,0x49FFFDD}, + [I(101,161)] = {26,0xBFFFDD}, + [I(102,161)] = {27,0x4BFFFDD}, + [I(103,161)] = {27,0x4DFFFDD}, + [I(104,161)] = {27,0x4FFFFDD}, + [I(105,161)] = {26,0xDFFFDD}, + [I(106,161)] = {28,0xE9FFFDD}, + [I(107,161)] = {28,0xEBFFFDD}, + [I(108,161)] = {27,0x51FFFDD}, + [I(109,161)] = {27,0x53FFFDD}, + [I(110,161)] = {27,0x55FFFDD}, + [I(111,161)] = {26,0xFFFFDD}, + [I(112,161)] = {27,0x57FFFDD}, + [I(113,161)] = {28,0xEDFFFDD}, + [I(114,161)] = {27,0x59FFFDD}, + [I(115,161)] = {26,0x11FFFDD}, + [I(116,161)] = {26,0x13FFFDD}, + [I(117,161)] = {27,0x5BFFFDD}, + [I(118,161)] = {28,0xEFFFFDD}, + [I(119,161)] = {28,0xF1FFFDD}, + [I(120,161)] = {28,0xF3FFFDD}, + [I(121,161)] = {28,0xF5FFFDD}, + [I(122,161)] = {28,0xF7FFFDD}, + [I(123,161)] = {64,0}, + [I(124,161)] = {X32,0xFF9FFFDD}, + [I(125,161)] = {64,0}, + [I(126,161)] = {64,0}, + [I(127,161)] = {64,0}, + [I(128,161)] = {64,0}, + [I(129,161)] = {64,0}, + [I(130,161)] = {64,0}, + [I(131,161)] = {64,0}, + [I(132,161)] = {64,0}, + [I(133,161)] = {64,0}, + [I(134,161)] = {64,0}, + [I(135,161)] = {64,0}, + [I(136,161)] = {64,0}, + [I(137,161)] = {64,0}, + [I(138,161)] = {64,0}, + [I(139,161)] = {64,0}, + [I(140,161)] = {64,0}, + [I(141,161)] = {64,0}, + [I(142,161)] = {64,0}, + [I(143,161)] = {64,0}, + [I(144,161)] = {64,0}, + [I(145,161)] = {64,0}, + [I(146,161)] = {64,0}, + [I(147,161)] = {64,0}, + [I(148,161)] = {64,0}, + [I(149,161)] = {64,0}, + [I(150,161)] = {64,0}, + [I(151,161)] = {64,0}, + [I(152,161)] = {64,0}, + [I(153,161)] = {64,0}, + [I(154,161)] = {64,0}, + [I(155,161)] = {64,0}, + [I(156,161)] = {64,0}, + [I(157,161)] = {64,0}, + [I(158,161)] = {64,0}, + [I(159,161)] = {64,0}, + [I(160,161)] = {64,0}, + [I(161,161)] = {64,0}, + [I(162,161)] = {64,0}, + [I(163,161)] = {64,0}, + [I(164,161)] = {64,0}, + [I(165,161)] = {64,0}, + [I(166,161)] = {64,0}, + [I(167,161)] = {64,0}, + [I(168,161)] = {64,0}, + [I(169,161)] = {64,0}, + [I(170,161)] = {64,0}, + [I(171,161)] = {64,0}, + [I(172,161)] = {64,0}, + [I(173,161)] = {64,0}, + [I(174,161)] = {64,0}, + [I(175,161)] = {64,0}, + [I(176,161)] = {64,0}, + [I(177,161)] = {64,0}, + [I(178,161)] = {64,0}, + [I(179,161)] = {64,0}, + [I(180,161)] = {64,0}, + [I(181,161)] = {64,0}, + [I(182,161)] = {64,0}, + [I(183,161)] = {64,0}, + [I(184,161)] = {64,0}, + [I(185,161)] = {64,0}, + [I(186,161)] = {64,0}, + [I(187,161)] = {64,0}, + [I(188,161)] = {64,0}, + [I(189,161)] = {64,0}, + [I(190,161)] = {64,0}, + [I(191,161)] = {64,0}, + [I(192,161)] = {64,0}, + [I(193,161)] = {64,0}, + [I(194,161)] = {64,0}, + [I(195,161)] = {64,0}, + [I(196,161)] = {64,0}, + [I(197,161)] = {64,0}, + [I(198,161)] = {64,0}, + [I(199,161)] = {64,0}, + [I(200,161)] = {64,0}, + [I(201,161)] = {64,0}, + [I(202,161)] = {64,0}, + [I(203,161)] = {64,0}, + [I(204,161)] = {64,0}, + [I(205,161)] = {64,0}, + [I(206,161)] = {64,0}, + [I(207,161)] = {64,0}, + [I(208,161)] = {64,0}, + [I(209,161)] = {64,0}, + [I(210,161)] = {64,0}, + [I(211,161)] = {64,0}, + [I(212,161)] = {64,0}, + [I(213,161)] = {64,0}, + [I(214,161)] = {64,0}, + [I(215,161)] = {64,0}, + [I(216,161)] = {64,0}, + [I(217,161)] = {64,0}, + [I(218,161)] = {64,0}, + [I(219,161)] = {64,0}, + [I(220,161)] = {64,0}, + [I(221,161)] = {64,0}, + [I(222,161)] = {64,0}, + [I(223,161)] = {64,0}, + [I(224,161)] = {64,0}, + [I(225,161)] = {64,0}, + [I(226,161)] = {64,0}, + [I(227,161)] = {64,0}, + [I(228,161)] = {64,0}, + [I(229,161)] = {64,0}, + [I(230,161)] = {64,0}, + [I(231,161)] = {64,0}, + [I(232,161)] = {64,0}, + [I(233,161)] = {64,0}, + [I(234,161)] = {64,0}, + [I(235,161)] = {64,0}, + [I(236,161)] = {64,0}, + [I(237,161)] = {64,0}, + [I(238,161)] = {64,0}, + [I(239,161)] = {64,0}, + [I(240,161)] = {64,0}, + [I(241,161)] = {64,0}, + [I(242,161)] = {64,0}, + [I(243,161)] = {64,0}, + [I(244,161)] = {64,0}, + [I(245,161)] = {64,0}, + [I(246,161)] = {64,0}, + [I(247,161)] = {64,0}, + [I(248,161)] = {64,0}, + [I(249,161)] = {64,0}, + [I(250,161)] = {64,0}, + [I(251,161)] = {64,0}, + [I(252,161)] = {64,0}, + [I(253,161)] = {64,0}, + [I(254,161)] = {64,0}, + [I(255,161)] = {64,0}, + [I(0,162)] = {64,0}, + [I(1,162)] = {64,0}, + [I(2,162)] = {64,0}, + [I(3,162)] = {64,0}, + [I(4,162)] = {64,0}, + [I(5,162)] = {64,0}, + [I(6,162)] = {64,0}, + [I(7,162)] = {64,0}, + [I(8,162)] = {64,0}, + [I(9,162)] = {64,0}, + [I(10,162)] = {64,0}, + [I(11,162)] = {64,0}, + [I(12,162)] = {64,0}, + [I(13,162)] = {64,0}, + [I(14,162)] = {64,0}, + [I(15,162)] = {64,0}, + [I(16,162)] = {64,0}, + [I(17,162)] = {64,0}, + [I(18,162)] = {64,0}, + [I(19,162)] = {64,0}, + [I(20,162)] = {64,0}, + [I(21,162)] = {64,0}, + [I(22,162)] = {64,0}, + [I(23,162)] = {64,0}, + [I(24,162)] = {64,0}, + [I(25,162)] = {64,0}, + [I(26,162)] = {64,0}, + [I(27,162)] = {64,0}, + [I(28,162)] = {64,0}, + [I(29,162)] = {64,0}, + [I(30,162)] = {64,0}, + [I(31,162)] = {64,0}, + [I(32,162)] = {26,0x14FFFE9}, + [I(33,162)] = {30,0x3F8FFFE9}, + [I(34,162)] = {30,0x3F9FFFE9}, + [I(35,162)] = {X32,0xFFAFFFE9}, + [I(36,162)] = {64,0}, + [I(37,162)] = {26,0x15FFFE9}, + [I(38,162)] = {28,0xF8FFFE9}, + [I(39,162)] = {31,0x7FAFFFE9}, + [I(40,162)] = {30,0x3FAFFFE9}, + [I(41,162)] = {30,0x3FBFFFE9}, + [I(42,162)] = {28,0xF9FFFE9}, + [I(43,162)] = {31,0x7FBFFFE9}, + [I(44,162)] = {28,0xFAFFFE9}, + [I(45,162)] = {26,0x16FFFE9}, + [I(46,162)] = {26,0x17FFFE9}, + [I(47,162)] = {26,0x18FFFE9}, + [I(48,162)] = {25,0xFFFE9}, + [I(49,162)] = {25,0x1FFFE9}, + [I(50,162)] = {25,0x2FFFE9}, + [I(51,162)] = {26,0x19FFFE9}, + [I(52,162)] = {26,0x1AFFFE9}, + [I(53,162)] = {26,0x1BFFFE9}, + [I(54,162)] = {26,0x1CFFFE9}, + [I(55,162)] = {26,0x1DFFFE9}, + [I(56,162)] = {26,0x1EFFFE9}, + [I(57,162)] = {26,0x1FFFFE9}, + [I(58,162)] = {27,0x5CFFFE9}, + [I(59,162)] = {28,0xFBFFFE9}, + [I(60,162)] = {64,0}, + [I(61,162)] = {26,0x20FFFE9}, + [I(62,162)] = {X32,0xFFBFFFE9}, + [I(63,162)] = {30,0x3FCFFFE9}, + [I(64,162)] = {64,0}, + [I(65,162)] = {26,0x21FFFE9}, + [I(66,162)] = {27,0x5DFFFE9}, + [I(67,162)] = {27,0x5EFFFE9}, + [I(68,162)] = {27,0x5FFFFE9}, + [I(69,162)] = {27,0x60FFFE9}, + [I(70,162)] = {27,0x61FFFE9}, + [I(71,162)] = {27,0x62FFFE9}, + [I(72,162)] = {27,0x63FFFE9}, + [I(73,162)] = {27,0x64FFFE9}, + [I(74,162)] = {27,0x65FFFE9}, + [I(75,162)] = {27,0x66FFFE9}, + [I(76,162)] = {27,0x67FFFE9}, + [I(77,162)] = {27,0x68FFFE9}, + [I(78,162)] = {27,0x69FFFE9}, + [I(79,162)] = {27,0x6AFFFE9}, + [I(80,162)] = {27,0x6BFFFE9}, + [I(81,162)] = {27,0x6CFFFE9}, + [I(82,162)] = {27,0x6DFFFE9}, + [I(83,162)] = {27,0x6EFFFE9}, + [I(84,162)] = {27,0x6FFFFE9}, + [I(85,162)] = {27,0x70FFFE9}, + [I(86,162)] = {27,0x71FFFE9}, + [I(87,162)] = {27,0x72FFFE9}, + [I(88,162)] = {28,0xFCFFFE9}, + [I(89,162)] = {27,0x73FFFE9}, + [I(90,162)] = {28,0xFDFFFE9}, + [I(91,162)] = {64,0}, + [I(92,162)] = {64,0}, + [I(93,162)] = {64,0}, + [I(94,162)] = {64,0}, + [I(95,162)] = {26,0x22FFFE9}, + [I(96,162)] = {64,0}, + [I(97,162)] = {25,0x3FFFE9}, + [I(98,162)] = {26,0x23FFFE9}, + [I(99,162)] = {25,0x4FFFE9}, + [I(100,162)] = {26,0x24FFFE9}, + [I(101,162)] = {25,0x5FFFE9}, + [I(102,162)] = {26,0x25FFFE9}, + [I(103,162)] = {26,0x26FFFE9}, + [I(104,162)] = {26,0x27FFFE9}, + [I(105,162)] = {25,0x6FFFE9}, + [I(106,162)] = {27,0x74FFFE9}, + [I(107,162)] = {27,0x75FFFE9}, + [I(108,162)] = {26,0x28FFFE9}, + [I(109,162)] = {26,0x29FFFE9}, + [I(110,162)] = {26,0x2AFFFE9}, + [I(111,162)] = {25,0x7FFFE9}, + [I(112,162)] = {26,0x2BFFFE9}, + [I(113,162)] = {27,0x76FFFE9}, + [I(114,162)] = {26,0x2CFFFE9}, + [I(115,162)] = {25,0x8FFFE9}, + [I(116,162)] = {25,0x9FFFE9}, + [I(117,162)] = {26,0x2DFFFE9}, + [I(118,162)] = {27,0x77FFFE9}, + [I(119,162)] = {27,0x78FFFE9}, + [I(120,162)] = {27,0x79FFFE9}, + [I(121,162)] = {27,0x7AFFFE9}, + [I(122,162)] = {27,0x7BFFFE9}, + [I(123,162)] = {64,0}, + [I(124,162)] = {31,0x7FCFFFE9}, + [I(125,162)] = {64,0}, + [I(126,162)] = {64,0}, + [I(127,162)] = {64,0}, + [I(128,162)] = {64,0}, + [I(129,162)] = {64,0}, + [I(130,162)] = {64,0}, + [I(131,162)] = {64,0}, + [I(132,162)] = {64,0}, + [I(133,162)] = {64,0}, + [I(134,162)] = {64,0}, + [I(135,162)] = {64,0}, + [I(136,162)] = {64,0}, + [I(137,162)] = {64,0}, + [I(138,162)] = {64,0}, + [I(139,162)] = {64,0}, + [I(140,162)] = {64,0}, + [I(141,162)] = {64,0}, + [I(142,162)] = {64,0}, + [I(143,162)] = {64,0}, + [I(144,162)] = {64,0}, + [I(145,162)] = {64,0}, + [I(146,162)] = {64,0}, + [I(147,162)] = {64,0}, + [I(148,162)] = {64,0}, + [I(149,162)] = {64,0}, + [I(150,162)] = {64,0}, + [I(151,162)] = {64,0}, + [I(152,162)] = {64,0}, + [I(153,162)] = {64,0}, + [I(154,162)] = {64,0}, + [I(155,162)] = {64,0}, + [I(156,162)] = {64,0}, + [I(157,162)] = {64,0}, + [I(158,162)] = {64,0}, + [I(159,162)] = {64,0}, + [I(160,162)] = {64,0}, + [I(161,162)] = {64,0}, + [I(162,162)] = {64,0}, + [I(163,162)] = {64,0}, + [I(164,162)] = {64,0}, + [I(165,162)] = {64,0}, + [I(166,162)] = {64,0}, + [I(167,162)] = {64,0}, + [I(168,162)] = {64,0}, + [I(169,162)] = {64,0}, + [I(170,162)] = {64,0}, + [I(171,162)] = {64,0}, + [I(172,162)] = {64,0}, + [I(173,162)] = {64,0}, + [I(174,162)] = {64,0}, + [I(175,162)] = {64,0}, + [I(176,162)] = {64,0}, + [I(177,162)] = {64,0}, + [I(178,162)] = {64,0}, + [I(179,162)] = {64,0}, + [I(180,162)] = {64,0}, + [I(181,162)] = {64,0}, + [I(182,162)] = {64,0}, + [I(183,162)] = {64,0}, + [I(184,162)] = {64,0}, + [I(185,162)] = {64,0}, + [I(186,162)] = {64,0}, + [I(187,162)] = {64,0}, + [I(188,162)] = {64,0}, + [I(189,162)] = {64,0}, + [I(190,162)] = {64,0}, + [I(191,162)] = {64,0}, + [I(192,162)] = {64,0}, + [I(193,162)] = {64,0}, + [I(194,162)] = {64,0}, + [I(195,162)] = {64,0}, + [I(196,162)] = {64,0}, + [I(197,162)] = {64,0}, + [I(198,162)] = {64,0}, + [I(199,162)] = {64,0}, + [I(200,162)] = {64,0}, + [I(201,162)] = {64,0}, + [I(202,162)] = {64,0}, + [I(203,162)] = {64,0}, + [I(204,162)] = {64,0}, + [I(205,162)] = {64,0}, + [I(206,162)] = {64,0}, + [I(207,162)] = {64,0}, + [I(208,162)] = {64,0}, + [I(209,162)] = {64,0}, + [I(210,162)] = {64,0}, + [I(211,162)] = {64,0}, + [I(212,162)] = {64,0}, + [I(213,162)] = {64,0}, + [I(214,162)] = {64,0}, + [I(215,162)] = {64,0}, + [I(216,162)] = {64,0}, + [I(217,162)] = {64,0}, + [I(218,162)] = {64,0}, + [I(219,162)] = {64,0}, + [I(220,162)] = {64,0}, + [I(221,162)] = {64,0}, + [I(222,162)] = {64,0}, + [I(223,162)] = {64,0}, + [I(224,162)] = {64,0}, + [I(225,162)] = {64,0}, + [I(226,162)] = {64,0}, + [I(227,162)] = {64,0}, + [I(228,162)] = {64,0}, + [I(229,162)] = {64,0}, + [I(230,162)] = {64,0}, + [I(231,162)] = {64,0}, + [I(232,162)] = {64,0}, + [I(233,162)] = {64,0}, + [I(234,162)] = {64,0}, + [I(235,162)] = {64,0}, + [I(236,162)] = {64,0}, + [I(237,162)] = {64,0}, + [I(238,162)] = {64,0}, + [I(239,162)] = {64,0}, + [I(240,162)] = {64,0}, + [I(241,162)] = {64,0}, + [I(242,162)] = {64,0}, + [I(243,162)] = {64,0}, + [I(244,162)] = {64,0}, + [I(245,162)] = {64,0}, + [I(246,162)] = {64,0}, + [I(247,162)] = {64,0}, + [I(248,162)] = {64,0}, + [I(249,162)] = {64,0}, + [I(250,162)] = {64,0}, + [I(251,162)] = {64,0}, + [I(252,162)] = {64,0}, + [I(253,162)] = {64,0}, + [I(254,162)] = {64,0}, + [I(255,162)] = {64,0}, + [I(0,163)] = {64,0}, + [I(1,163)] = {64,0}, + [I(2,163)] = {64,0}, + [I(3,163)] = {64,0}, + [I(4,163)] = {64,0}, + [I(5,163)] = {64,0}, + [I(6,163)] = {64,0}, + [I(7,163)] = {64,0}, + [I(8,163)] = {64,0}, + [I(9,163)] = {64,0}, + [I(10,163)] = {64,0}, + [I(11,163)] = {64,0}, + [I(12,163)] = {64,0}, + [I(13,163)] = {64,0}, + [I(14,163)] = {64,0}, + [I(15,163)] = {64,0}, + [I(16,163)] = {64,0}, + [I(17,163)] = {64,0}, + [I(18,163)] = {64,0}, + [I(19,163)] = {64,0}, + [I(20,163)] = {64,0}, + [I(21,163)] = {64,0}, + [I(22,163)] = {64,0}, + [I(23,163)] = {64,0}, + [I(24,163)] = {64,0}, + [I(25,163)] = {64,0}, + [I(26,163)] = {64,0}, + [I(27,163)] = {64,0}, + [I(28,163)] = {64,0}, + [I(29,163)] = {64,0}, + [I(30,163)] = {64,0}, + [I(31,163)] = {64,0}, + [I(32,163)] = {28,0x53FFFDB}, + [I(33,163)] = {X32,0xFE3FFFDB}, + [I(34,163)] = {X32,0xFE7FFFDB}, + [I(35,163)] = {64,0}, + [I(36,163)] = {64,0}, + [I(37,163)] = {28,0x57FFFDB}, + [I(38,163)] = {30,0x3E3FFFDB}, + [I(39,163)] = {64,0}, + [I(40,163)] = {X32,0xFEBFFFDB}, + [I(41,163)] = {X32,0xFEFFFFDB}, + [I(42,163)] = {30,0x3E7FFFDB}, + [I(43,163)] = {64,0}, + [I(44,163)] = {30,0x3EBFFFDB}, + [I(45,163)] = {28,0x5BFFFDB}, + [I(46,163)] = {28,0x5FFFFDB}, + [I(47,163)] = {28,0x63FFFDB}, + [I(48,163)] = {27,0x3FFFDB}, + [I(49,163)] = {27,0x7FFFDB}, + [I(50,163)] = {27,0xBFFFDB}, + [I(51,163)] = {28,0x67FFFDB}, + [I(52,163)] = {28,0x6BFFFDB}, + [I(53,163)] = {28,0x6FFFFDB}, + [I(54,163)] = {28,0x73FFFDB}, + [I(55,163)] = {28,0x77FFFDB}, + [I(56,163)] = {28,0x7BFFFDB}, + [I(57,163)] = {28,0x7FFFFDB}, + [I(58,163)] = {29,0x173FFFDB}, + [I(59,163)] = {30,0x3EFFFFDB}, + [I(60,163)] = {64,0}, + [I(61,163)] = {28,0x83FFFDB}, + [I(62,163)] = {64,0}, + [I(63,163)] = {X32,0xFF3FFFDB}, + [I(64,163)] = {64,0}, + [I(65,163)] = {28,0x87FFFDB}, + [I(66,163)] = {29,0x177FFFDB}, + [I(67,163)] = {29,0x17BFFFDB}, + [I(68,163)] = {29,0x17FFFFDB}, + [I(69,163)] = {29,0x183FFFDB}, + [I(70,163)] = {29,0x187FFFDB}, + [I(71,163)] = {29,0x18BFFFDB}, + [I(72,163)] = {29,0x18FFFFDB}, + [I(73,163)] = {29,0x193FFFDB}, + [I(74,163)] = {29,0x197FFFDB}, + [I(75,163)] = {29,0x19BFFFDB}, + [I(76,163)] = {29,0x19FFFFDB}, + [I(77,163)] = {29,0x1A3FFFDB}, + [I(78,163)] = {29,0x1A7FFFDB}, + [I(79,163)] = {29,0x1ABFFFDB}, + [I(80,163)] = {29,0x1AFFFFDB}, + [I(81,163)] = {29,0x1B3FFFDB}, + [I(82,163)] = {29,0x1B7FFFDB}, + [I(83,163)] = {29,0x1BBFFFDB}, + [I(84,163)] = {29,0x1BFFFFDB}, + [I(85,163)] = {29,0x1C3FFFDB}, + [I(86,163)] = {29,0x1C7FFFDB}, + [I(87,163)] = {29,0x1CBFFFDB}, + [I(88,163)] = {30,0x3F3FFFDB}, + [I(89,163)] = {29,0x1CFFFFDB}, + [I(90,163)] = {30,0x3F7FFFDB}, + [I(91,163)] = {64,0}, + [I(92,163)] = {64,0}, + [I(93,163)] = {64,0}, + [I(94,163)] = {64,0}, + [I(95,163)] = {28,0x8BFFFDB}, + [I(96,163)] = {64,0}, + [I(97,163)] = {27,0xFFFFDB}, + [I(98,163)] = {28,0x8FFFFDB}, + [I(99,163)] = {27,0x13FFFDB}, + [I(100,163)] = {28,0x93FFFDB}, + [I(101,163)] = {27,0x17FFFDB}, + [I(102,163)] = {28,0x97FFFDB}, + [I(103,163)] = {28,0x9BFFFDB}, + [I(104,163)] = {28,0x9FFFFDB}, + [I(105,163)] = {27,0x1BFFFDB}, + [I(106,163)] = {29,0x1D3FFFDB}, + [I(107,163)] = {29,0x1D7FFFDB}, + [I(108,163)] = {28,0xA3FFFDB}, + [I(109,163)] = {28,0xA7FFFDB}, + [I(110,163)] = {28,0xABFFFDB}, + [I(111,163)] = {27,0x1FFFFDB}, + [I(112,163)] = {28,0xAFFFFDB}, + [I(113,163)] = {29,0x1DBFFFDB}, + [I(114,163)] = {28,0xB3FFFDB}, + [I(115,163)] = {27,0x23FFFDB}, + [I(116,163)] = {27,0x27FFFDB}, + [I(117,163)] = {28,0xB7FFFDB}, + [I(118,163)] = {29,0x1DFFFFDB}, + [I(119,163)] = {29,0x1E3FFFDB}, + [I(120,163)] = {29,0x1E7FFFDB}, + [I(121,163)] = {29,0x1EBFFFDB}, + [I(122,163)] = {29,0x1EFFFFDB}, + [I(123,163)] = {64,0}, + [I(124,163)] = {64,0}, + [I(125,163)] = {64,0}, + [I(126,163)] = {64,0}, + [I(127,163)] = {64,0}, + [I(128,163)] = {64,0}, + [I(129,163)] = {64,0}, + [I(130,163)] = {64,0}, + [I(131,163)] = {64,0}, + [I(132,163)] = {64,0}, + [I(133,163)] = {64,0}, + [I(134,163)] = {64,0}, + [I(135,163)] = {64,0}, + [I(136,163)] = {64,0}, + [I(137,163)] = {64,0}, + [I(138,163)] = {64,0}, + [I(139,163)] = {64,0}, + [I(140,163)] = {64,0}, + [I(141,163)] = {64,0}, + [I(142,163)] = {64,0}, + [I(143,163)] = {64,0}, + [I(144,163)] = {64,0}, + [I(145,163)] = {64,0}, + [I(146,163)] = {64,0}, + [I(147,163)] = {64,0}, + [I(148,163)] = {64,0}, + [I(149,163)] = {64,0}, + [I(150,163)] = {64,0}, + [I(151,163)] = {64,0}, + [I(152,163)] = {64,0}, + [I(153,163)] = {64,0}, + [I(154,163)] = {64,0}, + [I(155,163)] = {64,0}, + [I(156,163)] = {64,0}, + [I(157,163)] = {64,0}, + [I(158,163)] = {64,0}, + [I(159,163)] = {64,0}, + [I(160,163)] = {64,0}, + [I(161,163)] = {64,0}, + [I(162,163)] = {64,0}, + [I(163,163)] = {64,0}, + [I(164,163)] = {64,0}, + [I(165,163)] = {64,0}, + [I(166,163)] = {64,0}, + [I(167,163)] = {64,0}, + [I(168,163)] = {64,0}, + [I(169,163)] = {64,0}, + [I(170,163)] = {64,0}, + [I(171,163)] = {64,0}, + [I(172,163)] = {64,0}, + [I(173,163)] = {64,0}, + [I(174,163)] = {64,0}, + [I(175,163)] = {64,0}, + [I(176,163)] = {64,0}, + [I(177,163)] = {64,0}, + [I(178,163)] = {64,0}, + [I(179,163)] = {64,0}, + [I(180,163)] = {64,0}, + [I(181,163)] = {64,0}, + [I(182,163)] = {64,0}, + [I(183,163)] = {64,0}, + [I(184,163)] = {64,0}, + [I(185,163)] = {64,0}, + [I(186,163)] = {64,0}, + [I(187,163)] = {64,0}, + [I(188,163)] = {64,0}, + [I(189,163)] = {64,0}, + [I(190,163)] = {64,0}, + [I(191,163)] = {64,0}, + [I(192,163)] = {64,0}, + [I(193,163)] = {64,0}, + [I(194,163)] = {64,0}, + [I(195,163)] = {64,0}, + [I(196,163)] = {64,0}, + [I(197,163)] = {64,0}, + [I(198,163)] = {64,0}, + [I(199,163)] = {64,0}, + [I(200,163)] = {64,0}, + [I(201,163)] = {64,0}, + [I(202,163)] = {64,0}, + [I(203,163)] = {64,0}, + [I(204,163)] = {64,0}, + [I(205,163)] = {64,0}, + [I(206,163)] = {64,0}, + [I(207,163)] = {64,0}, + [I(208,163)] = {64,0}, + [I(209,163)] = {64,0}, + [I(210,163)] = {64,0}, + [I(211,163)] = {64,0}, + [I(212,163)] = {64,0}, + [I(213,163)] = {64,0}, + [I(214,163)] = {64,0}, + [I(215,163)] = {64,0}, + [I(216,163)] = {64,0}, + [I(217,163)] = {64,0}, + [I(218,163)] = {64,0}, + [I(219,163)] = {64,0}, + [I(220,163)] = {64,0}, + [I(221,163)] = {64,0}, + [I(222,163)] = {64,0}, + [I(223,163)] = {64,0}, + [I(224,163)] = {64,0}, + [I(225,163)] = {64,0}, + [I(226,163)] = {64,0}, + [I(227,163)] = {64,0}, + [I(228,163)] = {64,0}, + [I(229,163)] = {64,0}, + [I(230,163)] = {64,0}, + [I(231,163)] = {64,0}, + [I(232,163)] = {64,0}, + [I(233,163)] = {64,0}, + [I(234,163)] = {64,0}, + [I(235,163)] = {64,0}, + [I(236,163)] = {64,0}, + [I(237,163)] = {64,0}, + [I(238,163)] = {64,0}, + [I(239,163)] = {64,0}, + [I(240,163)] = {64,0}, + [I(241,163)] = {64,0}, + [I(242,163)] = {64,0}, + [I(243,163)] = {64,0}, + [I(244,163)] = {64,0}, + [I(245,163)] = {64,0}, + [I(246,163)] = {64,0}, + [I(247,163)] = {64,0}, + [I(248,163)] = {64,0}, + [I(249,163)] = {64,0}, + [I(250,163)] = {64,0}, + [I(251,163)] = {64,0}, + [I(252,163)] = {64,0}, + [I(253,163)] = {64,0}, + [I(254,163)] = {64,0}, + [I(255,163)] = {64,0}, + [I(0,164)] = {64,0}, + [I(1,164)] = {64,0}, + [I(2,164)] = {64,0}, + [I(3,164)] = {64,0}, + [I(4,164)] = {64,0}, + [I(5,164)] = {64,0}, + [I(6,164)] = {64,0}, + [I(7,164)] = {64,0}, + [I(8,164)] = {64,0}, + [I(9,164)] = {64,0}, + [I(10,164)] = {64,0}, + [I(11,164)] = {64,0}, + [I(12,164)] = {64,0}, + [I(13,164)] = {64,0}, + [I(14,164)] = {64,0}, + [I(15,164)] = {64,0}, + [I(16,164)] = {64,0}, + [I(17,164)] = {64,0}, + [I(18,164)] = {64,0}, + [I(19,164)] = {64,0}, + [I(20,164)] = {64,0}, + [I(21,164)] = {64,0}, + [I(22,164)] = {64,0}, + [I(23,164)] = {64,0}, + [I(24,164)] = {64,0}, + [I(25,164)] = {64,0}, + [I(26,164)] = {64,0}, + [I(27,164)] = {64,0}, + [I(28,164)] = {64,0}, + [I(29,164)] = {64,0}, + [I(30,164)] = {64,0}, + [I(31,164)] = {64,0}, + [I(32,164)] = {28,0x53FFFDC}, + [I(33,164)] = {X32,0xFE3FFFDC}, + [I(34,164)] = {X32,0xFE7FFFDC}, + [I(35,164)] = {64,0}, + [I(36,164)] = {64,0}, + [I(37,164)] = {28,0x57FFFDC}, + [I(38,164)] = {30,0x3E3FFFDC}, + [I(39,164)] = {64,0}, + [I(40,164)] = {X32,0xFEBFFFDC}, + [I(41,164)] = {X32,0xFEFFFFDC}, + [I(42,164)] = {30,0x3E7FFFDC}, + [I(43,164)] = {64,0}, + [I(44,164)] = {30,0x3EBFFFDC}, + [I(45,164)] = {28,0x5BFFFDC}, + [I(46,164)] = {28,0x5FFFFDC}, + [I(47,164)] = {28,0x63FFFDC}, + [I(48,164)] = {27,0x3FFFDC}, + [I(49,164)] = {27,0x7FFFDC}, + [I(50,164)] = {27,0xBFFFDC}, + [I(51,164)] = {28,0x67FFFDC}, + [I(52,164)] = {28,0x6BFFFDC}, + [I(53,164)] = {28,0x6FFFFDC}, + [I(54,164)] = {28,0x73FFFDC}, + [I(55,164)] = {28,0x77FFFDC}, + [I(56,164)] = {28,0x7BFFFDC}, + [I(57,164)] = {28,0x7FFFFDC}, + [I(58,164)] = {29,0x173FFFDC}, + [I(59,164)] = {30,0x3EFFFFDC}, + [I(60,164)] = {64,0}, + [I(61,164)] = {28,0x83FFFDC}, + [I(62,164)] = {64,0}, + [I(63,164)] = {X32,0xFF3FFFDC}, + [I(64,164)] = {64,0}, + [I(65,164)] = {28,0x87FFFDC}, + [I(66,164)] = {29,0x177FFFDC}, + [I(67,164)] = {29,0x17BFFFDC}, + [I(68,164)] = {29,0x17FFFFDC}, + [I(69,164)] = {29,0x183FFFDC}, + [I(70,164)] = {29,0x187FFFDC}, + [I(71,164)] = {29,0x18BFFFDC}, + [I(72,164)] = {29,0x18FFFFDC}, + [I(73,164)] = {29,0x193FFFDC}, + [I(74,164)] = {29,0x197FFFDC}, + [I(75,164)] = {29,0x19BFFFDC}, + [I(76,164)] = {29,0x19FFFFDC}, + [I(77,164)] = {29,0x1A3FFFDC}, + [I(78,164)] = {29,0x1A7FFFDC}, + [I(79,164)] = {29,0x1ABFFFDC}, + [I(80,164)] = {29,0x1AFFFFDC}, + [I(81,164)] = {29,0x1B3FFFDC}, + [I(82,164)] = {29,0x1B7FFFDC}, + [I(83,164)] = {29,0x1BBFFFDC}, + [I(84,164)] = {29,0x1BFFFFDC}, + [I(85,164)] = {29,0x1C3FFFDC}, + [I(86,164)] = {29,0x1C7FFFDC}, + [I(87,164)] = {29,0x1CBFFFDC}, + [I(88,164)] = {30,0x3F3FFFDC}, + [I(89,164)] = {29,0x1CFFFFDC}, + [I(90,164)] = {30,0x3F7FFFDC}, + [I(91,164)] = {64,0}, + [I(92,164)] = {64,0}, + [I(93,164)] = {64,0}, + [I(94,164)] = {64,0}, + [I(95,164)] = {28,0x8BFFFDC}, + [I(96,164)] = {64,0}, + [I(97,164)] = {27,0xFFFFDC}, + [I(98,164)] = {28,0x8FFFFDC}, + [I(99,164)] = {27,0x13FFFDC}, + [I(100,164)] = {28,0x93FFFDC}, + [I(101,164)] = {27,0x17FFFDC}, + [I(102,164)] = {28,0x97FFFDC}, + [I(103,164)] = {28,0x9BFFFDC}, + [I(104,164)] = {28,0x9FFFFDC}, + [I(105,164)] = {27,0x1BFFFDC}, + [I(106,164)] = {29,0x1D3FFFDC}, + [I(107,164)] = {29,0x1D7FFFDC}, + [I(108,164)] = {28,0xA3FFFDC}, + [I(109,164)] = {28,0xA7FFFDC}, + [I(110,164)] = {28,0xABFFFDC}, + [I(111,164)] = {27,0x1FFFFDC}, + [I(112,164)] = {28,0xAFFFFDC}, + [I(113,164)] = {29,0x1DBFFFDC}, + [I(114,164)] = {28,0xB3FFFDC}, + [I(115,164)] = {27,0x23FFFDC}, + [I(116,164)] = {27,0x27FFFDC}, + [I(117,164)] = {28,0xB7FFFDC}, + [I(118,164)] = {29,0x1DFFFFDC}, + [I(119,164)] = {29,0x1E3FFFDC}, + [I(120,164)] = {29,0x1E7FFFDC}, + [I(121,164)] = {29,0x1EBFFFDC}, + [I(122,164)] = {29,0x1EFFFFDC}, + [I(123,164)] = {64,0}, + [I(124,164)] = {64,0}, + [I(125,164)] = {64,0}, + [I(126,164)] = {64,0}, + [I(127,164)] = {64,0}, + [I(128,164)] = {64,0}, + [I(129,164)] = {64,0}, + [I(130,164)] = {64,0}, + [I(131,164)] = {64,0}, + [I(132,164)] = {64,0}, + [I(133,164)] = {64,0}, + [I(134,164)] = {64,0}, + [I(135,164)] = {64,0}, + [I(136,164)] = {64,0}, + [I(137,164)] = {64,0}, + [I(138,164)] = {64,0}, + [I(139,164)] = {64,0}, + [I(140,164)] = {64,0}, + [I(141,164)] = {64,0}, + [I(142,164)] = {64,0}, + [I(143,164)] = {64,0}, + [I(144,164)] = {64,0}, + [I(145,164)] = {64,0}, + [I(146,164)] = {64,0}, + [I(147,164)] = {64,0}, + [I(148,164)] = {64,0}, + [I(149,164)] = {64,0}, + [I(150,164)] = {64,0}, + [I(151,164)] = {64,0}, + [I(152,164)] = {64,0}, + [I(153,164)] = {64,0}, + [I(154,164)] = {64,0}, + [I(155,164)] = {64,0}, + [I(156,164)] = {64,0}, + [I(157,164)] = {64,0}, + [I(158,164)] = {64,0}, + [I(159,164)] = {64,0}, + [I(160,164)] = {64,0}, + [I(161,164)] = {64,0}, + [I(162,164)] = {64,0}, + [I(163,164)] = {64,0}, + [I(164,164)] = {64,0}, + [I(165,164)] = {64,0}, + [I(166,164)] = {64,0}, + [I(167,164)] = {64,0}, + [I(168,164)] = {64,0}, + [I(169,164)] = {64,0}, + [I(170,164)] = {64,0}, + [I(171,164)] = {64,0}, + [I(172,164)] = {64,0}, + [I(173,164)] = {64,0}, + [I(174,164)] = {64,0}, + [I(175,164)] = {64,0}, + [I(176,164)] = {64,0}, + [I(177,164)] = {64,0}, + [I(178,164)] = {64,0}, + [I(179,164)] = {64,0}, + [I(180,164)] = {64,0}, + [I(181,164)] = {64,0}, + [I(182,164)] = {64,0}, + [I(183,164)] = {64,0}, + [I(184,164)] = {64,0}, + [I(185,164)] = {64,0}, + [I(186,164)] = {64,0}, + [I(187,164)] = {64,0}, + [I(188,164)] = {64,0}, + [I(189,164)] = {64,0}, + [I(190,164)] = {64,0}, + [I(191,164)] = {64,0}, + [I(192,164)] = {64,0}, + [I(193,164)] = {64,0}, + [I(194,164)] = {64,0}, + [I(195,164)] = {64,0}, + [I(196,164)] = {64,0}, + [I(197,164)] = {64,0}, + [I(198,164)] = {64,0}, + [I(199,164)] = {64,0}, + [I(200,164)] = {64,0}, + [I(201,164)] = {64,0}, + [I(202,164)] = {64,0}, + [I(203,164)] = {64,0}, + [I(204,164)] = {64,0}, + [I(205,164)] = {64,0}, + [I(206,164)] = {64,0}, + [I(207,164)] = {64,0}, + [I(208,164)] = {64,0}, + [I(209,164)] = {64,0}, + [I(210,164)] = {64,0}, + [I(211,164)] = {64,0}, + [I(212,164)] = {64,0}, + [I(213,164)] = {64,0}, + [I(214,164)] = {64,0}, + [I(215,164)] = {64,0}, + [I(216,164)] = {64,0}, + [I(217,164)] = {64,0}, + [I(218,164)] = {64,0}, + [I(219,164)] = {64,0}, + [I(220,164)] = {64,0}, + [I(221,164)] = {64,0}, + [I(222,164)] = {64,0}, + [I(223,164)] = {64,0}, + [I(224,164)] = {64,0}, + [I(225,164)] = {64,0}, + [I(226,164)] = {64,0}, + [I(227,164)] = {64,0}, + [I(228,164)] = {64,0}, + [I(229,164)] = {64,0}, + [I(230,164)] = {64,0}, + [I(231,164)] = {64,0}, + [I(232,164)] = {64,0}, + [I(233,164)] = {64,0}, + [I(234,164)] = {64,0}, + [I(235,164)] = {64,0}, + [I(236,164)] = {64,0}, + [I(237,164)] = {64,0}, + [I(238,164)] = {64,0}, + [I(239,164)] = {64,0}, + [I(240,164)] = {64,0}, + [I(241,164)] = {64,0}, + [I(242,164)] = {64,0}, + [I(243,164)] = {64,0}, + [I(244,164)] = {64,0}, + [I(245,164)] = {64,0}, + [I(246,164)] = {64,0}, + [I(247,164)] = {64,0}, + [I(248,164)] = {64,0}, + [I(249,164)] = {64,0}, + [I(250,164)] = {64,0}, + [I(251,164)] = {64,0}, + [I(252,164)] = {64,0}, + [I(253,164)] = {64,0}, + [I(254,164)] = {64,0}, + [I(255,164)] = {64,0}, + [I(0,165)] = {64,0}, + [I(1,165)] = {64,0}, + [I(2,165)] = {64,0}, + [I(3,165)] = {64,0}, + [I(4,165)] = {64,0}, + [I(5,165)] = {64,0}, + [I(6,165)] = {64,0}, + [I(7,165)] = {64,0}, + [I(8,165)] = {64,0}, + [I(9,165)] = {64,0}, + [I(10,165)] = {64,0}, + [I(11,165)] = {64,0}, + [I(12,165)] = {64,0}, + [I(13,165)] = {64,0}, + [I(14,165)] = {64,0}, + [I(15,165)] = {64,0}, + [I(16,165)] = {64,0}, + [I(17,165)] = {64,0}, + [I(18,165)] = {64,0}, + [I(19,165)] = {64,0}, + [I(20,165)] = {64,0}, + [I(21,165)] = {64,0}, + [I(22,165)] = {64,0}, + [I(23,165)] = {64,0}, + [I(24,165)] = {64,0}, + [I(25,165)] = {64,0}, + [I(26,165)] = {64,0}, + [I(27,165)] = {64,0}, + [I(28,165)] = {64,0}, + [I(29,165)] = {64,0}, + [I(30,165)] = {64,0}, + [I(31,165)] = {64,0}, + [I(32,165)] = {29,0xA7FFFE8}, + [I(33,165)] = {64,0}, + [I(34,165)] = {64,0}, + [I(35,165)] = {64,0}, + [I(36,165)] = {64,0}, + [I(37,165)] = {29,0xAFFFFE8}, + [I(38,165)] = {31,0x7C7FFFE8}, + [I(39,165)] = {64,0}, + [I(40,165)] = {64,0}, + [I(41,165)] = {64,0}, + [I(42,165)] = {31,0x7CFFFFE8}, + [I(43,165)] = {64,0}, + [I(44,165)] = {31,0x7D7FFFE8}, + [I(45,165)] = {29,0xB7FFFE8}, + [I(46,165)] = {29,0xBFFFFE8}, + [I(47,165)] = {29,0xC7FFFE8}, + [I(48,165)] = {28,0x7FFFE8}, + [I(49,165)] = {28,0xFFFFE8}, + [I(50,165)] = {28,0x17FFFE8}, + [I(51,165)] = {29,0xCFFFFE8}, + [I(52,165)] = {29,0xD7FFFE8}, + [I(53,165)] = {29,0xDFFFFE8}, + [I(54,165)] = {29,0xE7FFFE8}, + [I(55,165)] = {29,0xEFFFFE8}, + [I(56,165)] = {29,0xF7FFFE8}, + [I(57,165)] = {29,0xFFFFFE8}, + [I(58,165)] = {30,0x2E7FFFE8}, + [I(59,165)] = {31,0x7DFFFFE8}, + [I(60,165)] = {64,0}, + [I(61,165)] = {29,0x107FFFE8}, + [I(62,165)] = {64,0}, + [I(63,165)] = {64,0}, + [I(64,165)] = {64,0}, + [I(65,165)] = {29,0x10FFFFE8}, + [I(66,165)] = {30,0x2EFFFFE8}, + [I(67,165)] = {30,0x2F7FFFE8}, + [I(68,165)] = {30,0x2FFFFFE8}, + [I(69,165)] = {30,0x307FFFE8}, + [I(70,165)] = {30,0x30FFFFE8}, + [I(71,165)] = {30,0x317FFFE8}, + [I(72,165)] = {30,0x31FFFFE8}, + [I(73,165)] = {30,0x327FFFE8}, + [I(74,165)] = {30,0x32FFFFE8}, + [I(75,165)] = {30,0x337FFFE8}, + [I(76,165)] = {30,0x33FFFFE8}, + [I(77,165)] = {30,0x347FFFE8}, + [I(78,165)] = {30,0x34FFFFE8}, + [I(79,165)] = {30,0x357FFFE8}, + [I(80,165)] = {30,0x35FFFFE8}, + [I(81,165)] = {30,0x367FFFE8}, + [I(82,165)] = {30,0x36FFFFE8}, + [I(83,165)] = {30,0x377FFFE8}, + [I(84,165)] = {30,0x37FFFFE8}, + [I(85,165)] = {30,0x387FFFE8}, + [I(86,165)] = {30,0x38FFFFE8}, + [I(87,165)] = {30,0x397FFFE8}, + [I(88,165)] = {31,0x7E7FFFE8}, + [I(89,165)] = {30,0x39FFFFE8}, + [I(90,165)] = {31,0x7EFFFFE8}, + [I(91,165)] = {64,0}, + [I(92,165)] = {64,0}, + [I(93,165)] = {64,0}, + [I(94,165)] = {64,0}, + [I(95,165)] = {29,0x117FFFE8}, + [I(96,165)] = {64,0}, + [I(97,165)] = {28,0x1FFFFE8}, + [I(98,165)] = {29,0x11FFFFE8}, + [I(99,165)] = {28,0x27FFFE8}, + [I(100,165)] = {29,0x127FFFE8}, + [I(101,165)] = {28,0x2FFFFE8}, + [I(102,165)] = {29,0x12FFFFE8}, + [I(103,165)] = {29,0x137FFFE8}, + [I(104,165)] = {29,0x13FFFFE8}, + [I(105,165)] = {28,0x37FFFE8}, + [I(106,165)] = {30,0x3A7FFFE8}, + [I(107,165)] = {30,0x3AFFFFE8}, + [I(108,165)] = {29,0x147FFFE8}, + [I(109,165)] = {29,0x14FFFFE8}, + [I(110,165)] = {29,0x157FFFE8}, + [I(111,165)] = {28,0x3FFFFE8}, + [I(112,165)] = {29,0x15FFFFE8}, + [I(113,165)] = {30,0x3B7FFFE8}, + [I(114,165)] = {29,0x167FFFE8}, + [I(115,165)] = {28,0x47FFFE8}, + [I(116,165)] = {28,0x4FFFFE8}, + [I(117,165)] = {29,0x16FFFFE8}, + [I(118,165)] = {30,0x3BFFFFE8}, + [I(119,165)] = {30,0x3C7FFFE8}, + [I(120,165)] = {30,0x3CFFFFE8}, + [I(121,165)] = {30,0x3D7FFFE8}, + [I(122,165)] = {30,0x3DFFFFE8}, + [I(123,165)] = {64,0}, + [I(124,165)] = {64,0}, + [I(125,165)] = {64,0}, + [I(126,165)] = {64,0}, + [I(127,165)] = {64,0}, + [I(128,165)] = {64,0}, + [I(129,165)] = {64,0}, + [I(130,165)] = {64,0}, + [I(131,165)] = {64,0}, + [I(132,165)] = {64,0}, + [I(133,165)] = {64,0}, + [I(134,165)] = {64,0}, + [I(135,165)] = {64,0}, + [I(136,165)] = {64,0}, + [I(137,165)] = {64,0}, + [I(138,165)] = {64,0}, + [I(139,165)] = {64,0}, + [I(140,165)] = {64,0}, + [I(141,165)] = {64,0}, + [I(142,165)] = {64,0}, + [I(143,165)] = {64,0}, + [I(144,165)] = {64,0}, + [I(145,165)] = {64,0}, + [I(146,165)] = {64,0}, + [I(147,165)] = {64,0}, + [I(148,165)] = {64,0}, + [I(149,165)] = {64,0}, + [I(150,165)] = {64,0}, + [I(151,165)] = {64,0}, + [I(152,165)] = {64,0}, + [I(153,165)] = {64,0}, + [I(154,165)] = {64,0}, + [I(155,165)] = {64,0}, + [I(156,165)] = {64,0}, + [I(157,165)] = {64,0}, + [I(158,165)] = {64,0}, + [I(159,165)] = {64,0}, + [I(160,165)] = {64,0}, + [I(161,165)] = {64,0}, + [I(162,165)] = {64,0}, + [I(163,165)] = {64,0}, + [I(164,165)] = {64,0}, + [I(165,165)] = {64,0}, + [I(166,165)] = {64,0}, + [I(167,165)] = {64,0}, + [I(168,165)] = {64,0}, + [I(169,165)] = {64,0}, + [I(170,165)] = {64,0}, + [I(171,165)] = {64,0}, + [I(172,165)] = {64,0}, + [I(173,165)] = {64,0}, + [I(174,165)] = {64,0}, + [I(175,165)] = {64,0}, + [I(176,165)] = {64,0}, + [I(177,165)] = {64,0}, + [I(178,165)] = {64,0}, + [I(179,165)] = {64,0}, + [I(180,165)] = {64,0}, + [I(181,165)] = {64,0}, + [I(182,165)] = {64,0}, + [I(183,165)] = {64,0}, + [I(184,165)] = {64,0}, + [I(185,165)] = {64,0}, + [I(186,165)] = {64,0}, + [I(187,165)] = {64,0}, + [I(188,165)] = {64,0}, + [I(189,165)] = {64,0}, + [I(190,165)] = {64,0}, + [I(191,165)] = {64,0}, + [I(192,165)] = {64,0}, + [I(193,165)] = {64,0}, + [I(194,165)] = {64,0}, + [I(195,165)] = {64,0}, + [I(196,165)] = {64,0}, + [I(197,165)] = {64,0}, + [I(198,165)] = {64,0}, + [I(199,165)] = {64,0}, + [I(200,165)] = {64,0}, + [I(201,165)] = {64,0}, + [I(202,165)] = {64,0}, + [I(203,165)] = {64,0}, + [I(204,165)] = {64,0}, + [I(205,165)] = {64,0}, + [I(206,165)] = {64,0}, + [I(207,165)] = {64,0}, + [I(208,165)] = {64,0}, + [I(209,165)] = {64,0}, + [I(210,165)] = {64,0}, + [I(211,165)] = {64,0}, + [I(212,165)] = {64,0}, + [I(213,165)] = {64,0}, + [I(214,165)] = {64,0}, + [I(215,165)] = {64,0}, + [I(216,165)] = {64,0}, + [I(217,165)] = {64,0}, + [I(218,165)] = {64,0}, + [I(219,165)] = {64,0}, + [I(220,165)] = {64,0}, + [I(221,165)] = {64,0}, + [I(222,165)] = {64,0}, + [I(223,165)] = {64,0}, + [I(224,165)] = {64,0}, + [I(225,165)] = {64,0}, + [I(226,165)] = {64,0}, + [I(227,165)] = {64,0}, + [I(228,165)] = {64,0}, + [I(229,165)] = {64,0}, + [I(230,165)] = {64,0}, + [I(231,165)] = {64,0}, + [I(232,165)] = {64,0}, + [I(233,165)] = {64,0}, + [I(234,165)] = {64,0}, + [I(235,165)] = {64,0}, + [I(236,165)] = {64,0}, + [I(237,165)] = {64,0}, + [I(238,165)] = {64,0}, + [I(239,165)] = {64,0}, + [I(240,165)] = {64,0}, + [I(241,165)] = {64,0}, + [I(242,165)] = {64,0}, + [I(243,165)] = {64,0}, + [I(244,165)] = {64,0}, + [I(245,165)] = {64,0}, + [I(246,165)] = {64,0}, + [I(247,165)] = {64,0}, + [I(248,165)] = {64,0}, + [I(249,165)] = {64,0}, + [I(250,165)] = {64,0}, + [I(251,165)] = {64,0}, + [I(252,165)] = {64,0}, + [I(253,165)] = {64,0}, + [I(254,165)] = {64,0}, + [I(255,165)] = {64,0}, + [I(0,166)] = {64,0}, + [I(1,166)] = {64,0}, + [I(2,166)] = {64,0}, + [I(3,166)] = {64,0}, + [I(4,166)] = {64,0}, + [I(5,166)] = {64,0}, + [I(6,166)] = {64,0}, + [I(7,166)] = {64,0}, + [I(8,166)] = {64,0}, + [I(9,166)] = {64,0}, + [I(10,166)] = {64,0}, + [I(11,166)] = {64,0}, + [I(12,166)] = {64,0}, + [I(13,166)] = {64,0}, + [I(14,166)] = {64,0}, + [I(15,166)] = {64,0}, + [I(16,166)] = {64,0}, + [I(17,166)] = {64,0}, + [I(18,166)] = {64,0}, + [I(19,166)] = {64,0}, + [I(20,166)] = {64,0}, + [I(21,166)] = {64,0}, + [I(22,166)] = {64,0}, + [I(23,166)] = {64,0}, + [I(24,166)] = {64,0}, + [I(25,166)] = {64,0}, + [I(26,166)] = {64,0}, + [I(27,166)] = {64,0}, + [I(28,166)] = {64,0}, + [I(29,166)] = {64,0}, + [I(30,166)] = {64,0}, + [I(31,166)] = {64,0}, + [I(32,166)] = {29,0xA7FFFE9}, + [I(33,166)] = {64,0}, + [I(34,166)] = {64,0}, + [I(35,166)] = {64,0}, + [I(36,166)] = {64,0}, + [I(37,166)] = {29,0xAFFFFE9}, + [I(38,166)] = {31,0x7C7FFFE9}, + [I(39,166)] = {64,0}, + [I(40,166)] = {64,0}, + [I(41,166)] = {64,0}, + [I(42,166)] = {31,0x7CFFFFE9}, + [I(43,166)] = {64,0}, + [I(44,166)] = {31,0x7D7FFFE9}, + [I(45,166)] = {29,0xB7FFFE9}, + [I(46,166)] = {29,0xBFFFFE9}, + [I(47,166)] = {29,0xC7FFFE9}, + [I(48,166)] = {28,0x7FFFE9}, + [I(49,166)] = {28,0xFFFFE9}, + [I(50,166)] = {28,0x17FFFE9}, + [I(51,166)] = {29,0xCFFFFE9}, + [I(52,166)] = {29,0xD7FFFE9}, + [I(53,166)] = {29,0xDFFFFE9}, + [I(54,166)] = {29,0xE7FFFE9}, + [I(55,166)] = {29,0xEFFFFE9}, + [I(56,166)] = {29,0xF7FFFE9}, + [I(57,166)] = {29,0xFFFFFE9}, + [I(58,166)] = {30,0x2E7FFFE9}, + [I(59,166)] = {31,0x7DFFFFE9}, + [I(60,166)] = {64,0}, + [I(61,166)] = {29,0x107FFFE9}, + [I(62,166)] = {64,0}, + [I(63,166)] = {64,0}, + [I(64,166)] = {64,0}, + [I(65,166)] = {29,0x10FFFFE9}, + [I(66,166)] = {30,0x2EFFFFE9}, + [I(67,166)] = {30,0x2F7FFFE9}, + [I(68,166)] = {30,0x2FFFFFE9}, + [I(69,166)] = {30,0x307FFFE9}, + [I(70,166)] = {30,0x30FFFFE9}, + [I(71,166)] = {30,0x317FFFE9}, + [I(72,166)] = {30,0x31FFFFE9}, + [I(73,166)] = {30,0x327FFFE9}, + [I(74,166)] = {30,0x32FFFFE9}, + [I(75,166)] = {30,0x337FFFE9}, + [I(76,166)] = {30,0x33FFFFE9}, + [I(77,166)] = {30,0x347FFFE9}, + [I(78,166)] = {30,0x34FFFFE9}, + [I(79,166)] = {30,0x357FFFE9}, + [I(80,166)] = {30,0x35FFFFE9}, + [I(81,166)] = {30,0x367FFFE9}, + [I(82,166)] = {30,0x36FFFFE9}, + [I(83,166)] = {30,0x377FFFE9}, + [I(84,166)] = {30,0x37FFFFE9}, + [I(85,166)] = {30,0x387FFFE9}, + [I(86,166)] = {30,0x38FFFFE9}, + [I(87,166)] = {30,0x397FFFE9}, + [I(88,166)] = {31,0x7E7FFFE9}, + [I(89,166)] = {30,0x39FFFFE9}, + [I(90,166)] = {31,0x7EFFFFE9}, + [I(91,166)] = {64,0}, + [I(92,166)] = {64,0}, + [I(93,166)] = {64,0}, + [I(94,166)] = {64,0}, + [I(95,166)] = {29,0x117FFFE9}, + [I(96,166)] = {64,0}, + [I(97,166)] = {28,0x1FFFFE9}, + [I(98,166)] = {29,0x11FFFFE9}, + [I(99,166)] = {28,0x27FFFE9}, + [I(100,166)] = {29,0x127FFFE9}, + [I(101,166)] = {28,0x2FFFFE9}, + [I(102,166)] = {29,0x12FFFFE9}, + [I(103,166)] = {29,0x137FFFE9}, + [I(104,166)] = {29,0x13FFFFE9}, + [I(105,166)] = {28,0x37FFFE9}, + [I(106,166)] = {30,0x3A7FFFE9}, + [I(107,166)] = {30,0x3AFFFFE9}, + [I(108,166)] = {29,0x147FFFE9}, + [I(109,166)] = {29,0x14FFFFE9}, + [I(110,166)] = {29,0x157FFFE9}, + [I(111,166)] = {28,0x3FFFFE9}, + [I(112,166)] = {29,0x15FFFFE9}, + [I(113,166)] = {30,0x3B7FFFE9}, + [I(114,166)] = {29,0x167FFFE9}, + [I(115,166)] = {28,0x47FFFE9}, + [I(116,166)] = {28,0x4FFFFE9}, + [I(117,166)] = {29,0x16FFFFE9}, + [I(118,166)] = {30,0x3BFFFFE9}, + [I(119,166)] = {30,0x3C7FFFE9}, + [I(120,166)] = {30,0x3CFFFFE9}, + [I(121,166)] = {30,0x3D7FFFE9}, + [I(122,166)] = {30,0x3DFFFFE9}, + [I(123,166)] = {64,0}, + [I(124,166)] = {64,0}, + [I(125,166)] = {64,0}, + [I(126,166)] = {64,0}, + [I(127,166)] = {64,0}, + [I(128,166)] = {64,0}, + [I(129,166)] = {64,0}, + [I(130,166)] = {64,0}, + [I(131,166)] = {64,0}, + [I(132,166)] = {64,0}, + [I(133,166)] = {64,0}, + [I(134,166)] = {64,0}, + [I(135,166)] = {64,0}, + [I(136,166)] = {64,0}, + [I(137,166)] = {64,0}, + [I(138,166)] = {64,0}, + [I(139,166)] = {64,0}, + [I(140,166)] = {64,0}, + [I(141,166)] = {64,0}, + [I(142,166)] = {64,0}, + [I(143,166)] = {64,0}, + [I(144,166)] = {64,0}, + [I(145,166)] = {64,0}, + [I(146,166)] = {64,0}, + [I(147,166)] = {64,0}, + [I(148,166)] = {64,0}, + [I(149,166)] = {64,0}, + [I(150,166)] = {64,0}, + [I(151,166)] = {64,0}, + [I(152,166)] = {64,0}, + [I(153,166)] = {64,0}, + [I(154,166)] = {64,0}, + [I(155,166)] = {64,0}, + [I(156,166)] = {64,0}, + [I(157,166)] = {64,0}, + [I(158,166)] = {64,0}, + [I(159,166)] = {64,0}, + [I(160,166)] = {64,0}, + [I(161,166)] = {64,0}, + [I(162,166)] = {64,0}, + [I(163,166)] = {64,0}, + [I(164,166)] = {64,0}, + [I(165,166)] = {64,0}, + [I(166,166)] = {64,0}, + [I(167,166)] = {64,0}, + [I(168,166)] = {64,0}, + [I(169,166)] = {64,0}, + [I(170,166)] = {64,0}, + [I(171,166)] = {64,0}, + [I(172,166)] = {64,0}, + [I(173,166)] = {64,0}, + [I(174,166)] = {64,0}, + [I(175,166)] = {64,0}, + [I(176,166)] = {64,0}, + [I(177,166)] = {64,0}, + [I(178,166)] = {64,0}, + [I(179,166)] = {64,0}, + [I(180,166)] = {64,0}, + [I(181,166)] = {64,0}, + [I(182,166)] = {64,0}, + [I(183,166)] = {64,0}, + [I(184,166)] = {64,0}, + [I(185,166)] = {64,0}, + [I(186,166)] = {64,0}, + [I(187,166)] = {64,0}, + [I(188,166)] = {64,0}, + [I(189,166)] = {64,0}, + [I(190,166)] = {64,0}, + [I(191,166)] = {64,0}, + [I(192,166)] = {64,0}, + [I(193,166)] = {64,0}, + [I(194,166)] = {64,0}, + [I(195,166)] = {64,0}, + [I(196,166)] = {64,0}, + [I(197,166)] = {64,0}, + [I(198,166)] = {64,0}, + [I(199,166)] = {64,0}, + [I(200,166)] = {64,0}, + [I(201,166)] = {64,0}, + [I(202,166)] = {64,0}, + [I(203,166)] = {64,0}, + [I(204,166)] = {64,0}, + [I(205,166)] = {64,0}, + [I(206,166)] = {64,0}, + [I(207,166)] = {64,0}, + [I(208,166)] = {64,0}, + [I(209,166)] = {64,0}, + [I(210,166)] = {64,0}, + [I(211,166)] = {64,0}, + [I(212,166)] = {64,0}, + [I(213,166)] = {64,0}, + [I(214,166)] = {64,0}, + [I(215,166)] = {64,0}, + [I(216,166)] = {64,0}, + [I(217,166)] = {64,0}, + [I(218,166)] = {64,0}, + [I(219,166)] = {64,0}, + [I(220,166)] = {64,0}, + [I(221,166)] = {64,0}, + [I(222,166)] = {64,0}, + [I(223,166)] = {64,0}, + [I(224,166)] = {64,0}, + [I(225,166)] = {64,0}, + [I(226,166)] = {64,0}, + [I(227,166)] = {64,0}, + [I(228,166)] = {64,0}, + [I(229,166)] = {64,0}, + [I(230,166)] = {64,0}, + [I(231,166)] = {64,0}, + [I(232,166)] = {64,0}, + [I(233,166)] = {64,0}, + [I(234,166)] = {64,0}, + [I(235,166)] = {64,0}, + [I(236,166)] = {64,0}, + [I(237,166)] = {64,0}, + [I(238,166)] = {64,0}, + [I(239,166)] = {64,0}, + [I(240,166)] = {64,0}, + [I(241,166)] = {64,0}, + [I(242,166)] = {64,0}, + [I(243,166)] = {64,0}, + [I(244,166)] = {64,0}, + [I(245,166)] = {64,0}, + [I(246,166)] = {64,0}, + [I(247,166)] = {64,0}, + [I(248,166)] = {64,0}, + [I(249,166)] = {64,0}, + [I(250,166)] = {64,0}, + [I(251,166)] = {64,0}, + [I(252,166)] = {64,0}, + [I(253,166)] = {64,0}, + [I(254,166)] = {64,0}, + [I(255,166)] = {64,0}, + [I(0,167)] = {64,0}, + [I(1,167)] = {64,0}, + [I(2,167)] = {64,0}, + [I(3,167)] = {64,0}, + [I(4,167)] = {64,0}, + [I(5,167)] = {64,0}, + [I(6,167)] = {64,0}, + [I(7,167)] = {64,0}, + [I(8,167)] = {64,0}, + [I(9,167)] = {64,0}, + [I(10,167)] = {64,0}, + [I(11,167)] = {64,0}, + [I(12,167)] = {64,0}, + [I(13,167)] = {64,0}, + [I(14,167)] = {64,0}, + [I(15,167)] = {64,0}, + [I(16,167)] = {64,0}, + [I(17,167)] = {64,0}, + [I(18,167)] = {64,0}, + [I(19,167)] = {64,0}, + [I(20,167)] = {64,0}, + [I(21,167)] = {64,0}, + [I(22,167)] = {64,0}, + [I(23,167)] = {64,0}, + [I(24,167)] = {64,0}, + [I(25,167)] = {64,0}, + [I(26,167)] = {64,0}, + [I(27,167)] = {64,0}, + [I(28,167)] = {64,0}, + [I(29,167)] = {64,0}, + [I(30,167)] = {64,0}, + [I(31,167)] = {64,0}, + [I(32,167)] = {27,0x29FFFDE}, + [I(33,167)] = {31,0x7F1FFFDE}, + [I(34,167)] = {31,0x7F3FFFDE}, + [I(35,167)] = {64,0}, + [I(36,167)] = {64,0}, + [I(37,167)] = {27,0x2BFFFDE}, + [I(38,167)] = {29,0x1F1FFFDE}, + [I(39,167)] = {X32,0xFF5FFFDE}, + [I(40,167)] = {31,0x7F5FFFDE}, + [I(41,167)] = {31,0x7F7FFFDE}, + [I(42,167)] = {29,0x1F3FFFDE}, + [I(43,167)] = {X32,0xFF7FFFDE}, + [I(44,167)] = {29,0x1F5FFFDE}, + [I(45,167)] = {27,0x2DFFFDE}, + [I(46,167)] = {27,0x2FFFFDE}, + [I(47,167)] = {27,0x31FFFDE}, + [I(48,167)] = {26,0x1FFFDE}, + [I(49,167)] = {26,0x3FFFDE}, + [I(50,167)] = {26,0x5FFFDE}, + [I(51,167)] = {27,0x33FFFDE}, + [I(52,167)] = {27,0x35FFFDE}, + [I(53,167)] = {27,0x37FFFDE}, + [I(54,167)] = {27,0x39FFFDE}, + [I(55,167)] = {27,0x3BFFFDE}, + [I(56,167)] = {27,0x3DFFFDE}, + [I(57,167)] = {27,0x3FFFFDE}, + [I(58,167)] = {28,0xB9FFFDE}, + [I(59,167)] = {29,0x1F7FFFDE}, + [I(60,167)] = {64,0}, + [I(61,167)] = {27,0x41FFFDE}, + [I(62,167)] = {64,0}, + [I(63,167)] = {31,0x7F9FFFDE}, + [I(64,167)] = {64,0}, + [I(65,167)] = {27,0x43FFFDE}, + [I(66,167)] = {28,0xBBFFFDE}, + [I(67,167)] = {28,0xBDFFFDE}, + [I(68,167)] = {28,0xBFFFFDE}, + [I(69,167)] = {28,0xC1FFFDE}, + [I(70,167)] = {28,0xC3FFFDE}, + [I(71,167)] = {28,0xC5FFFDE}, + [I(72,167)] = {28,0xC7FFFDE}, + [I(73,167)] = {28,0xC9FFFDE}, + [I(74,167)] = {28,0xCBFFFDE}, + [I(75,167)] = {28,0xCDFFFDE}, + [I(76,167)] = {28,0xCFFFFDE}, + [I(77,167)] = {28,0xD1FFFDE}, + [I(78,167)] = {28,0xD3FFFDE}, + [I(79,167)] = {28,0xD5FFFDE}, + [I(80,167)] = {28,0xD7FFFDE}, + [I(81,167)] = {28,0xD9FFFDE}, + [I(82,167)] = {28,0xDBFFFDE}, + [I(83,167)] = {28,0xDDFFFDE}, + [I(84,167)] = {28,0xDFFFFDE}, + [I(85,167)] = {28,0xE1FFFDE}, + [I(86,167)] = {28,0xE3FFFDE}, + [I(87,167)] = {28,0xE5FFFDE}, + [I(88,167)] = {29,0x1F9FFFDE}, + [I(89,167)] = {28,0xE7FFFDE}, + [I(90,167)] = {29,0x1FBFFFDE}, + [I(91,167)] = {64,0}, + [I(92,167)] = {64,0}, + [I(93,167)] = {64,0}, + [I(94,167)] = {64,0}, + [I(95,167)] = {27,0x45FFFDE}, + [I(96,167)] = {64,0}, + [I(97,167)] = {26,0x7FFFDE}, + [I(98,167)] = {27,0x47FFFDE}, + [I(99,167)] = {26,0x9FFFDE}, + [I(100,167)] = {27,0x49FFFDE}, + [I(101,167)] = {26,0xBFFFDE}, + [I(102,167)] = {27,0x4BFFFDE}, + [I(103,167)] = {27,0x4DFFFDE}, + [I(104,167)] = {27,0x4FFFFDE}, + [I(105,167)] = {26,0xDFFFDE}, + [I(106,167)] = {28,0xE9FFFDE}, + [I(107,167)] = {28,0xEBFFFDE}, + [I(108,167)] = {27,0x51FFFDE}, + [I(109,167)] = {27,0x53FFFDE}, + [I(110,167)] = {27,0x55FFFDE}, + [I(111,167)] = {26,0xFFFFDE}, + [I(112,167)] = {27,0x57FFFDE}, + [I(113,167)] = {28,0xEDFFFDE}, + [I(114,167)] = {27,0x59FFFDE}, + [I(115,167)] = {26,0x11FFFDE}, + [I(116,167)] = {26,0x13FFFDE}, + [I(117,167)] = {27,0x5BFFFDE}, + [I(118,167)] = {28,0xEFFFFDE}, + [I(119,167)] = {28,0xF1FFFDE}, + [I(120,167)] = {28,0xF3FFFDE}, + [I(121,167)] = {28,0xF5FFFDE}, + [I(122,167)] = {28,0xF7FFFDE}, + [I(123,167)] = {64,0}, + [I(124,167)] = {X32,0xFF9FFFDE}, + [I(125,167)] = {64,0}, + [I(126,167)] = {64,0}, + [I(127,167)] = {64,0}, + [I(128,167)] = {64,0}, + [I(129,167)] = {64,0}, + [I(130,167)] = {64,0}, + [I(131,167)] = {64,0}, + [I(132,167)] = {64,0}, + [I(133,167)] = {64,0}, + [I(134,167)] = {64,0}, + [I(135,167)] = {64,0}, + [I(136,167)] = {64,0}, + [I(137,167)] = {64,0}, + [I(138,167)] = {64,0}, + [I(139,167)] = {64,0}, + [I(140,167)] = {64,0}, + [I(141,167)] = {64,0}, + [I(142,167)] = {64,0}, + [I(143,167)] = {64,0}, + [I(144,167)] = {64,0}, + [I(145,167)] = {64,0}, + [I(146,167)] = {64,0}, + [I(147,167)] = {64,0}, + [I(148,167)] = {64,0}, + [I(149,167)] = {64,0}, + [I(150,167)] = {64,0}, + [I(151,167)] = {64,0}, + [I(152,167)] = {64,0}, + [I(153,167)] = {64,0}, + [I(154,167)] = {64,0}, + [I(155,167)] = {64,0}, + [I(156,167)] = {64,0}, + [I(157,167)] = {64,0}, + [I(158,167)] = {64,0}, + [I(159,167)] = {64,0}, + [I(160,167)] = {64,0}, + [I(161,167)] = {64,0}, + [I(162,167)] = {64,0}, + [I(163,167)] = {64,0}, + [I(164,167)] = {64,0}, + [I(165,167)] = {64,0}, + [I(166,167)] = {64,0}, + [I(167,167)] = {64,0}, + [I(168,167)] = {64,0}, + [I(169,167)] = {64,0}, + [I(170,167)] = {64,0}, + [I(171,167)] = {64,0}, + [I(172,167)] = {64,0}, + [I(173,167)] = {64,0}, + [I(174,167)] = {64,0}, + [I(175,167)] = {64,0}, + [I(176,167)] = {64,0}, + [I(177,167)] = {64,0}, + [I(178,167)] = {64,0}, + [I(179,167)] = {64,0}, + [I(180,167)] = {64,0}, + [I(181,167)] = {64,0}, + [I(182,167)] = {64,0}, + [I(183,167)] = {64,0}, + [I(184,167)] = {64,0}, + [I(185,167)] = {64,0}, + [I(186,167)] = {64,0}, + [I(187,167)] = {64,0}, + [I(188,167)] = {64,0}, + [I(189,167)] = {64,0}, + [I(190,167)] = {64,0}, + [I(191,167)] = {64,0}, + [I(192,167)] = {64,0}, + [I(193,167)] = {64,0}, + [I(194,167)] = {64,0}, + [I(195,167)] = {64,0}, + [I(196,167)] = {64,0}, + [I(197,167)] = {64,0}, + [I(198,167)] = {64,0}, + [I(199,167)] = {64,0}, + [I(200,167)] = {64,0}, + [I(201,167)] = {64,0}, + [I(202,167)] = {64,0}, + [I(203,167)] = {64,0}, + [I(204,167)] = {64,0}, + [I(205,167)] = {64,0}, + [I(206,167)] = {64,0}, + [I(207,167)] = {64,0}, + [I(208,167)] = {64,0}, + [I(209,167)] = {64,0}, + [I(210,167)] = {64,0}, + [I(211,167)] = {64,0}, + [I(212,167)] = {64,0}, + [I(213,167)] = {64,0}, + [I(214,167)] = {64,0}, + [I(215,167)] = {64,0}, + [I(216,167)] = {64,0}, + [I(217,167)] = {64,0}, + [I(218,167)] = {64,0}, + [I(219,167)] = {64,0}, + [I(220,167)] = {64,0}, + [I(221,167)] = {64,0}, + [I(222,167)] = {64,0}, + [I(223,167)] = {64,0}, + [I(224,167)] = {64,0}, + [I(225,167)] = {64,0}, + [I(226,167)] = {64,0}, + [I(227,167)] = {64,0}, + [I(228,167)] = {64,0}, + [I(229,167)] = {64,0}, + [I(230,167)] = {64,0}, + [I(231,167)] = {64,0}, + [I(232,167)] = {64,0}, + [I(233,167)] = {64,0}, + [I(234,167)] = {64,0}, + [I(235,167)] = {64,0}, + [I(236,167)] = {64,0}, + [I(237,167)] = {64,0}, + [I(238,167)] = {64,0}, + [I(239,167)] = {64,0}, + [I(240,167)] = {64,0}, + [I(241,167)] = {64,0}, + [I(242,167)] = {64,0}, + [I(243,167)] = {64,0}, + [I(244,167)] = {64,0}, + [I(245,167)] = {64,0}, + [I(246,167)] = {64,0}, + [I(247,167)] = {64,0}, + [I(248,167)] = {64,0}, + [I(249,167)] = {64,0}, + [I(250,167)] = {64,0}, + [I(251,167)] = {64,0}, + [I(252,167)] = {64,0}, + [I(253,167)] = {64,0}, + [I(254,167)] = {64,0}, + [I(255,167)] = {64,0}, + [I(0,168)] = {64,0}, + [I(1,168)] = {64,0}, + [I(2,168)] = {64,0}, + [I(3,168)] = {64,0}, + [I(4,168)] = {64,0}, + [I(5,168)] = {64,0}, + [I(6,168)] = {64,0}, + [I(7,168)] = {64,0}, + [I(8,168)] = {64,0}, + [I(9,168)] = {64,0}, + [I(10,168)] = {64,0}, + [I(11,168)] = {64,0}, + [I(12,168)] = {64,0}, + [I(13,168)] = {64,0}, + [I(14,168)] = {64,0}, + [I(15,168)] = {64,0}, + [I(16,168)] = {64,0}, + [I(17,168)] = {64,0}, + [I(18,168)] = {64,0}, + [I(19,168)] = {64,0}, + [I(20,168)] = {64,0}, + [I(21,168)] = {64,0}, + [I(22,168)] = {64,0}, + [I(23,168)] = {64,0}, + [I(24,168)] = {64,0}, + [I(25,168)] = {64,0}, + [I(26,168)] = {64,0}, + [I(27,168)] = {64,0}, + [I(28,168)] = {64,0}, + [I(29,168)] = {64,0}, + [I(30,168)] = {64,0}, + [I(31,168)] = {64,0}, + [I(32,168)] = {29,0xA7FFFEA}, + [I(33,168)] = {64,0}, + [I(34,168)] = {64,0}, + [I(35,168)] = {64,0}, + [I(36,168)] = {64,0}, + [I(37,168)] = {29,0xAFFFFEA}, + [I(38,168)] = {31,0x7C7FFFEA}, + [I(39,168)] = {64,0}, + [I(40,168)] = {64,0}, + [I(41,168)] = {64,0}, + [I(42,168)] = {31,0x7CFFFFEA}, + [I(43,168)] = {64,0}, + [I(44,168)] = {31,0x7D7FFFEA}, + [I(45,168)] = {29,0xB7FFFEA}, + [I(46,168)] = {29,0xBFFFFEA}, + [I(47,168)] = {29,0xC7FFFEA}, + [I(48,168)] = {28,0x7FFFEA}, + [I(49,168)] = {28,0xFFFFEA}, + [I(50,168)] = {28,0x17FFFEA}, + [I(51,168)] = {29,0xCFFFFEA}, + [I(52,168)] = {29,0xD7FFFEA}, + [I(53,168)] = {29,0xDFFFFEA}, + [I(54,168)] = {29,0xE7FFFEA}, + [I(55,168)] = {29,0xEFFFFEA}, + [I(56,168)] = {29,0xF7FFFEA}, + [I(57,168)] = {29,0xFFFFFEA}, + [I(58,168)] = {30,0x2E7FFFEA}, + [I(59,168)] = {31,0x7DFFFFEA}, + [I(60,168)] = {64,0}, + [I(61,168)] = {29,0x107FFFEA}, + [I(62,168)] = {64,0}, + [I(63,168)] = {64,0}, + [I(64,168)] = {64,0}, + [I(65,168)] = {29,0x10FFFFEA}, + [I(66,168)] = {30,0x2EFFFFEA}, + [I(67,168)] = {30,0x2F7FFFEA}, + [I(68,168)] = {30,0x2FFFFFEA}, + [I(69,168)] = {30,0x307FFFEA}, + [I(70,168)] = {30,0x30FFFFEA}, + [I(71,168)] = {30,0x317FFFEA}, + [I(72,168)] = {30,0x31FFFFEA}, + [I(73,168)] = {30,0x327FFFEA}, + [I(74,168)] = {30,0x32FFFFEA}, + [I(75,168)] = {30,0x337FFFEA}, + [I(76,168)] = {30,0x33FFFFEA}, + [I(77,168)] = {30,0x347FFFEA}, + [I(78,168)] = {30,0x34FFFFEA}, + [I(79,168)] = {30,0x357FFFEA}, + [I(80,168)] = {30,0x35FFFFEA}, + [I(81,168)] = {30,0x367FFFEA}, + [I(82,168)] = {30,0x36FFFFEA}, + [I(83,168)] = {30,0x377FFFEA}, + [I(84,168)] = {30,0x37FFFFEA}, + [I(85,168)] = {30,0x387FFFEA}, + [I(86,168)] = {30,0x38FFFFEA}, + [I(87,168)] = {30,0x397FFFEA}, + [I(88,168)] = {31,0x7E7FFFEA}, + [I(89,168)] = {30,0x39FFFFEA}, + [I(90,168)] = {31,0x7EFFFFEA}, + [I(91,168)] = {64,0}, + [I(92,168)] = {64,0}, + [I(93,168)] = {64,0}, + [I(94,168)] = {64,0}, + [I(95,168)] = {29,0x117FFFEA}, + [I(96,168)] = {64,0}, + [I(97,168)] = {28,0x1FFFFEA}, + [I(98,168)] = {29,0x11FFFFEA}, + [I(99,168)] = {28,0x27FFFEA}, + [I(100,168)] = {29,0x127FFFEA}, + [I(101,168)] = {28,0x2FFFFEA}, + [I(102,168)] = {29,0x12FFFFEA}, + [I(103,168)] = {29,0x137FFFEA}, + [I(104,168)] = {29,0x13FFFFEA}, + [I(105,168)] = {28,0x37FFFEA}, + [I(106,168)] = {30,0x3A7FFFEA}, + [I(107,168)] = {30,0x3AFFFFEA}, + [I(108,168)] = {29,0x147FFFEA}, + [I(109,168)] = {29,0x14FFFFEA}, + [I(110,168)] = {29,0x157FFFEA}, + [I(111,168)] = {28,0x3FFFFEA}, + [I(112,168)] = {29,0x15FFFFEA}, + [I(113,168)] = {30,0x3B7FFFEA}, + [I(114,168)] = {29,0x167FFFEA}, + [I(115,168)] = {28,0x47FFFEA}, + [I(116,168)] = {28,0x4FFFFEA}, + [I(117,168)] = {29,0x16FFFFEA}, + [I(118,168)] = {30,0x3BFFFFEA}, + [I(119,168)] = {30,0x3C7FFFEA}, + [I(120,168)] = {30,0x3CFFFFEA}, + [I(121,168)] = {30,0x3D7FFFEA}, + [I(122,168)] = {30,0x3DFFFFEA}, + [I(123,168)] = {64,0}, + [I(124,168)] = {64,0}, + [I(125,168)] = {64,0}, + [I(126,168)] = {64,0}, + [I(127,168)] = {64,0}, + [I(128,168)] = {64,0}, + [I(129,168)] = {64,0}, + [I(130,168)] = {64,0}, + [I(131,168)] = {64,0}, + [I(132,168)] = {64,0}, + [I(133,168)] = {64,0}, + [I(134,168)] = {64,0}, + [I(135,168)] = {64,0}, + [I(136,168)] = {64,0}, + [I(137,168)] = {64,0}, + [I(138,168)] = {64,0}, + [I(139,168)] = {64,0}, + [I(140,168)] = {64,0}, + [I(141,168)] = {64,0}, + [I(142,168)] = {64,0}, + [I(143,168)] = {64,0}, + [I(144,168)] = {64,0}, + [I(145,168)] = {64,0}, + [I(146,168)] = {64,0}, + [I(147,168)] = {64,0}, + [I(148,168)] = {64,0}, + [I(149,168)] = {64,0}, + [I(150,168)] = {64,0}, + [I(151,168)] = {64,0}, + [I(152,168)] = {64,0}, + [I(153,168)] = {64,0}, + [I(154,168)] = {64,0}, + [I(155,168)] = {64,0}, + [I(156,168)] = {64,0}, + [I(157,168)] = {64,0}, + [I(158,168)] = {64,0}, + [I(159,168)] = {64,0}, + [I(160,168)] = {64,0}, + [I(161,168)] = {64,0}, + [I(162,168)] = {64,0}, + [I(163,168)] = {64,0}, + [I(164,168)] = {64,0}, + [I(165,168)] = {64,0}, + [I(166,168)] = {64,0}, + [I(167,168)] = {64,0}, + [I(168,168)] = {64,0}, + [I(169,168)] = {64,0}, + [I(170,168)] = {64,0}, + [I(171,168)] = {64,0}, + [I(172,168)] = {64,0}, + [I(173,168)] = {64,0}, + [I(174,168)] = {64,0}, + [I(175,168)] = {64,0}, + [I(176,168)] = {64,0}, + [I(177,168)] = {64,0}, + [I(178,168)] = {64,0}, + [I(179,168)] = {64,0}, + [I(180,168)] = {64,0}, + [I(181,168)] = {64,0}, + [I(182,168)] = {64,0}, + [I(183,168)] = {64,0}, + [I(184,168)] = {64,0}, + [I(185,168)] = {64,0}, + [I(186,168)] = {64,0}, + [I(187,168)] = {64,0}, + [I(188,168)] = {64,0}, + [I(189,168)] = {64,0}, + [I(190,168)] = {64,0}, + [I(191,168)] = {64,0}, + [I(192,168)] = {64,0}, + [I(193,168)] = {64,0}, + [I(194,168)] = {64,0}, + [I(195,168)] = {64,0}, + [I(196,168)] = {64,0}, + [I(197,168)] = {64,0}, + [I(198,168)] = {64,0}, + [I(199,168)] = {64,0}, + [I(200,168)] = {64,0}, + [I(201,168)] = {64,0}, + [I(202,168)] = {64,0}, + [I(203,168)] = {64,0}, + [I(204,168)] = {64,0}, + [I(205,168)] = {64,0}, + [I(206,168)] = {64,0}, + [I(207,168)] = {64,0}, + [I(208,168)] = {64,0}, + [I(209,168)] = {64,0}, + [I(210,168)] = {64,0}, + [I(211,168)] = {64,0}, + [I(212,168)] = {64,0}, + [I(213,168)] = {64,0}, + [I(214,168)] = {64,0}, + [I(215,168)] = {64,0}, + [I(216,168)] = {64,0}, + [I(217,168)] = {64,0}, + [I(218,168)] = {64,0}, + [I(219,168)] = {64,0}, + [I(220,168)] = {64,0}, + [I(221,168)] = {64,0}, + [I(222,168)] = {64,0}, + [I(223,168)] = {64,0}, + [I(224,168)] = {64,0}, + [I(225,168)] = {64,0}, + [I(226,168)] = {64,0}, + [I(227,168)] = {64,0}, + [I(228,168)] = {64,0}, + [I(229,168)] = {64,0}, + [I(230,168)] = {64,0}, + [I(231,168)] = {64,0}, + [I(232,168)] = {64,0}, + [I(233,168)] = {64,0}, + [I(234,168)] = {64,0}, + [I(235,168)] = {64,0}, + [I(236,168)] = {64,0}, + [I(237,168)] = {64,0}, + [I(238,168)] = {64,0}, + [I(239,168)] = {64,0}, + [I(240,168)] = {64,0}, + [I(241,168)] = {64,0}, + [I(242,168)] = {64,0}, + [I(243,168)] = {64,0}, + [I(244,168)] = {64,0}, + [I(245,168)] = {64,0}, + [I(246,168)] = {64,0}, + [I(247,168)] = {64,0}, + [I(248,168)] = {64,0}, + [I(249,168)] = {64,0}, + [I(250,168)] = {64,0}, + [I(251,168)] = {64,0}, + [I(252,168)] = {64,0}, + [I(253,168)] = {64,0}, + [I(254,168)] = {64,0}, + [I(255,168)] = {64,0}, + [I(0,169)] = {64,0}, + [I(1,169)] = {64,0}, + [I(2,169)] = {64,0}, + [I(3,169)] = {64,0}, + [I(4,169)] = {64,0}, + [I(5,169)] = {64,0}, + [I(6,169)] = {64,0}, + [I(7,169)] = {64,0}, + [I(8,169)] = {64,0}, + [I(9,169)] = {64,0}, + [I(10,169)] = {64,0}, + [I(11,169)] = {64,0}, + [I(12,169)] = {64,0}, + [I(13,169)] = {64,0}, + [I(14,169)] = {64,0}, + [I(15,169)] = {64,0}, + [I(16,169)] = {64,0}, + [I(17,169)] = {64,0}, + [I(18,169)] = {64,0}, + [I(19,169)] = {64,0}, + [I(20,169)] = {64,0}, + [I(21,169)] = {64,0}, + [I(22,169)] = {64,0}, + [I(23,169)] = {64,0}, + [I(24,169)] = {64,0}, + [I(25,169)] = {64,0}, + [I(26,169)] = {64,0}, + [I(27,169)] = {64,0}, + [I(28,169)] = {64,0}, + [I(29,169)] = {64,0}, + [I(30,169)] = {64,0}, + [I(31,169)] = {64,0}, + [I(32,169)] = {28,0x53FFFDD}, + [I(33,169)] = {X32,0xFE3FFFDD}, + [I(34,169)] = {X32,0xFE7FFFDD}, + [I(35,169)] = {64,0}, + [I(36,169)] = {64,0}, + [I(37,169)] = {28,0x57FFFDD}, + [I(38,169)] = {30,0x3E3FFFDD}, + [I(39,169)] = {64,0}, + [I(40,169)] = {X32,0xFEBFFFDD}, + [I(41,169)] = {X32,0xFEFFFFDD}, + [I(42,169)] = {30,0x3E7FFFDD}, + [I(43,169)] = {64,0}, + [I(44,169)] = {30,0x3EBFFFDD}, + [I(45,169)] = {28,0x5BFFFDD}, + [I(46,169)] = {28,0x5FFFFDD}, + [I(47,169)] = {28,0x63FFFDD}, + [I(48,169)] = {27,0x3FFFDD}, + [I(49,169)] = {27,0x7FFFDD}, + [I(50,169)] = {27,0xBFFFDD}, + [I(51,169)] = {28,0x67FFFDD}, + [I(52,169)] = {28,0x6BFFFDD}, + [I(53,169)] = {28,0x6FFFFDD}, + [I(54,169)] = {28,0x73FFFDD}, + [I(55,169)] = {28,0x77FFFDD}, + [I(56,169)] = {28,0x7BFFFDD}, + [I(57,169)] = {28,0x7FFFFDD}, + [I(58,169)] = {29,0x173FFFDD}, + [I(59,169)] = {30,0x3EFFFFDD}, + [I(60,169)] = {64,0}, + [I(61,169)] = {28,0x83FFFDD}, + [I(62,169)] = {64,0}, + [I(63,169)] = {X32,0xFF3FFFDD}, + [I(64,169)] = {64,0}, + [I(65,169)] = {28,0x87FFFDD}, + [I(66,169)] = {29,0x177FFFDD}, + [I(67,169)] = {29,0x17BFFFDD}, + [I(68,169)] = {29,0x17FFFFDD}, + [I(69,169)] = {29,0x183FFFDD}, + [I(70,169)] = {29,0x187FFFDD}, + [I(71,169)] = {29,0x18BFFFDD}, + [I(72,169)] = {29,0x18FFFFDD}, + [I(73,169)] = {29,0x193FFFDD}, + [I(74,169)] = {29,0x197FFFDD}, + [I(75,169)] = {29,0x19BFFFDD}, + [I(76,169)] = {29,0x19FFFFDD}, + [I(77,169)] = {29,0x1A3FFFDD}, + [I(78,169)] = {29,0x1A7FFFDD}, + [I(79,169)] = {29,0x1ABFFFDD}, + [I(80,169)] = {29,0x1AFFFFDD}, + [I(81,169)] = {29,0x1B3FFFDD}, + [I(82,169)] = {29,0x1B7FFFDD}, + [I(83,169)] = {29,0x1BBFFFDD}, + [I(84,169)] = {29,0x1BFFFFDD}, + [I(85,169)] = {29,0x1C3FFFDD}, + [I(86,169)] = {29,0x1C7FFFDD}, + [I(87,169)] = {29,0x1CBFFFDD}, + [I(88,169)] = {30,0x3F3FFFDD}, + [I(89,169)] = {29,0x1CFFFFDD}, + [I(90,169)] = {30,0x3F7FFFDD}, + [I(91,169)] = {64,0}, + [I(92,169)] = {64,0}, + [I(93,169)] = {64,0}, + [I(94,169)] = {64,0}, + [I(95,169)] = {28,0x8BFFFDD}, + [I(96,169)] = {64,0}, + [I(97,169)] = {27,0xFFFFDD}, + [I(98,169)] = {28,0x8FFFFDD}, + [I(99,169)] = {27,0x13FFFDD}, + [I(100,169)] = {28,0x93FFFDD}, + [I(101,169)] = {27,0x17FFFDD}, + [I(102,169)] = {28,0x97FFFDD}, + [I(103,169)] = {28,0x9BFFFDD}, + [I(104,169)] = {28,0x9FFFFDD}, + [I(105,169)] = {27,0x1BFFFDD}, + [I(106,169)] = {29,0x1D3FFFDD}, + [I(107,169)] = {29,0x1D7FFFDD}, + [I(108,169)] = {28,0xA3FFFDD}, + [I(109,169)] = {28,0xA7FFFDD}, + [I(110,169)] = {28,0xABFFFDD}, + [I(111,169)] = {27,0x1FFFFDD}, + [I(112,169)] = {28,0xAFFFFDD}, + [I(113,169)] = {29,0x1DBFFFDD}, + [I(114,169)] = {28,0xB3FFFDD}, + [I(115,169)] = {27,0x23FFFDD}, + [I(116,169)] = {27,0x27FFFDD}, + [I(117,169)] = {28,0xB7FFFDD}, + [I(118,169)] = {29,0x1DFFFFDD}, + [I(119,169)] = {29,0x1E3FFFDD}, + [I(120,169)] = {29,0x1E7FFFDD}, + [I(121,169)] = {29,0x1EBFFFDD}, + [I(122,169)] = {29,0x1EFFFFDD}, + [I(123,169)] = {64,0}, + [I(124,169)] = {64,0}, + [I(125,169)] = {64,0}, + [I(126,169)] = {64,0}, + [I(127,169)] = {64,0}, + [I(128,169)] = {64,0}, + [I(129,169)] = {64,0}, + [I(130,169)] = {64,0}, + [I(131,169)] = {64,0}, + [I(132,169)] = {64,0}, + [I(133,169)] = {64,0}, + [I(134,169)] = {64,0}, + [I(135,169)] = {64,0}, + [I(136,169)] = {64,0}, + [I(137,169)] = {64,0}, + [I(138,169)] = {64,0}, + [I(139,169)] = {64,0}, + [I(140,169)] = {64,0}, + [I(141,169)] = {64,0}, + [I(142,169)] = {64,0}, + [I(143,169)] = {64,0}, + [I(144,169)] = {64,0}, + [I(145,169)] = {64,0}, + [I(146,169)] = {64,0}, + [I(147,169)] = {64,0}, + [I(148,169)] = {64,0}, + [I(149,169)] = {64,0}, + [I(150,169)] = {64,0}, + [I(151,169)] = {64,0}, + [I(152,169)] = {64,0}, + [I(153,169)] = {64,0}, + [I(154,169)] = {64,0}, + [I(155,169)] = {64,0}, + [I(156,169)] = {64,0}, + [I(157,169)] = {64,0}, + [I(158,169)] = {64,0}, + [I(159,169)] = {64,0}, + [I(160,169)] = {64,0}, + [I(161,169)] = {64,0}, + [I(162,169)] = {64,0}, + [I(163,169)] = {64,0}, + [I(164,169)] = {64,0}, + [I(165,169)] = {64,0}, + [I(166,169)] = {64,0}, + [I(167,169)] = {64,0}, + [I(168,169)] = {64,0}, + [I(169,169)] = {64,0}, + [I(170,169)] = {64,0}, + [I(171,169)] = {64,0}, + [I(172,169)] = {64,0}, + [I(173,169)] = {64,0}, + [I(174,169)] = {64,0}, + [I(175,169)] = {64,0}, + [I(176,169)] = {64,0}, + [I(177,169)] = {64,0}, + [I(178,169)] = {64,0}, + [I(179,169)] = {64,0}, + [I(180,169)] = {64,0}, + [I(181,169)] = {64,0}, + [I(182,169)] = {64,0}, + [I(183,169)] = {64,0}, + [I(184,169)] = {64,0}, + [I(185,169)] = {64,0}, + [I(186,169)] = {64,0}, + [I(187,169)] = {64,0}, + [I(188,169)] = {64,0}, + [I(189,169)] = {64,0}, + [I(190,169)] = {64,0}, + [I(191,169)] = {64,0}, + [I(192,169)] = {64,0}, + [I(193,169)] = {64,0}, + [I(194,169)] = {64,0}, + [I(195,169)] = {64,0}, + [I(196,169)] = {64,0}, + [I(197,169)] = {64,0}, + [I(198,169)] = {64,0}, + [I(199,169)] = {64,0}, + [I(200,169)] = {64,0}, + [I(201,169)] = {64,0}, + [I(202,169)] = {64,0}, + [I(203,169)] = {64,0}, + [I(204,169)] = {64,0}, + [I(205,169)] = {64,0}, + [I(206,169)] = {64,0}, + [I(207,169)] = {64,0}, + [I(208,169)] = {64,0}, + [I(209,169)] = {64,0}, + [I(210,169)] = {64,0}, + [I(211,169)] = {64,0}, + [I(212,169)] = {64,0}, + [I(213,169)] = {64,0}, + [I(214,169)] = {64,0}, + [I(215,169)] = {64,0}, + [I(216,169)] = {64,0}, + [I(217,169)] = {64,0}, + [I(218,169)] = {64,0}, + [I(219,169)] = {64,0}, + [I(220,169)] = {64,0}, + [I(221,169)] = {64,0}, + [I(222,169)] = {64,0}, + [I(223,169)] = {64,0}, + [I(224,169)] = {64,0}, + [I(225,169)] = {64,0}, + [I(226,169)] = {64,0}, + [I(227,169)] = {64,0}, + [I(228,169)] = {64,0}, + [I(229,169)] = {64,0}, + [I(230,169)] = {64,0}, + [I(231,169)] = {64,0}, + [I(232,169)] = {64,0}, + [I(233,169)] = {64,0}, + [I(234,169)] = {64,0}, + [I(235,169)] = {64,0}, + [I(236,169)] = {64,0}, + [I(237,169)] = {64,0}, + [I(238,169)] = {64,0}, + [I(239,169)] = {64,0}, + [I(240,169)] = {64,0}, + [I(241,169)] = {64,0}, + [I(242,169)] = {64,0}, + [I(243,169)] = {64,0}, + [I(244,169)] = {64,0}, + [I(245,169)] = {64,0}, + [I(246,169)] = {64,0}, + [I(247,169)] = {64,0}, + [I(248,169)] = {64,0}, + [I(249,169)] = {64,0}, + [I(250,169)] = {64,0}, + [I(251,169)] = {64,0}, + [I(252,169)] = {64,0}, + [I(253,169)] = {64,0}, + [I(254,169)] = {64,0}, + [I(255,169)] = {64,0}, + [I(0,170)] = {64,0}, + [I(1,170)] = {64,0}, + [I(2,170)] = {64,0}, + [I(3,170)] = {64,0}, + [I(4,170)] = {64,0}, + [I(5,170)] = {64,0}, + [I(6,170)] = {64,0}, + [I(7,170)] = {64,0}, + [I(8,170)] = {64,0}, + [I(9,170)] = {64,0}, + [I(10,170)] = {64,0}, + [I(11,170)] = {64,0}, + [I(12,170)] = {64,0}, + [I(13,170)] = {64,0}, + [I(14,170)] = {64,0}, + [I(15,170)] = {64,0}, + [I(16,170)] = {64,0}, + [I(17,170)] = {64,0}, + [I(18,170)] = {64,0}, + [I(19,170)] = {64,0}, + [I(20,170)] = {64,0}, + [I(21,170)] = {64,0}, + [I(22,170)] = {64,0}, + [I(23,170)] = {64,0}, + [I(24,170)] = {64,0}, + [I(25,170)] = {64,0}, + [I(26,170)] = {64,0}, + [I(27,170)] = {64,0}, + [I(28,170)] = {64,0}, + [I(29,170)] = {64,0}, + [I(30,170)] = {64,0}, + [I(31,170)] = {64,0}, + [I(32,170)] = {28,0x53FFFDE}, + [I(33,170)] = {X32,0xFE3FFFDE}, + [I(34,170)] = {X32,0xFE7FFFDE}, + [I(35,170)] = {64,0}, + [I(36,170)] = {64,0}, + [I(37,170)] = {28,0x57FFFDE}, + [I(38,170)] = {30,0x3E3FFFDE}, + [I(39,170)] = {64,0}, + [I(40,170)] = {X32,0xFEBFFFDE}, + [I(41,170)] = {X32,0xFEFFFFDE}, + [I(42,170)] = {30,0x3E7FFFDE}, + [I(43,170)] = {64,0}, + [I(44,170)] = {30,0x3EBFFFDE}, + [I(45,170)] = {28,0x5BFFFDE}, + [I(46,170)] = {28,0x5FFFFDE}, + [I(47,170)] = {28,0x63FFFDE}, + [I(48,170)] = {27,0x3FFFDE}, + [I(49,170)] = {27,0x7FFFDE}, + [I(50,170)] = {27,0xBFFFDE}, + [I(51,170)] = {28,0x67FFFDE}, + [I(52,170)] = {28,0x6BFFFDE}, + [I(53,170)] = {28,0x6FFFFDE}, + [I(54,170)] = {28,0x73FFFDE}, + [I(55,170)] = {28,0x77FFFDE}, + [I(56,170)] = {28,0x7BFFFDE}, + [I(57,170)] = {28,0x7FFFFDE}, + [I(58,170)] = {29,0x173FFFDE}, + [I(59,170)] = {30,0x3EFFFFDE}, + [I(60,170)] = {64,0}, + [I(61,170)] = {28,0x83FFFDE}, + [I(62,170)] = {64,0}, + [I(63,170)] = {X32,0xFF3FFFDE}, + [I(64,170)] = {64,0}, + [I(65,170)] = {28,0x87FFFDE}, + [I(66,170)] = {29,0x177FFFDE}, + [I(67,170)] = {29,0x17BFFFDE}, + [I(68,170)] = {29,0x17FFFFDE}, + [I(69,170)] = {29,0x183FFFDE}, + [I(70,170)] = {29,0x187FFFDE}, + [I(71,170)] = {29,0x18BFFFDE}, + [I(72,170)] = {29,0x18FFFFDE}, + [I(73,170)] = {29,0x193FFFDE}, + [I(74,170)] = {29,0x197FFFDE}, + [I(75,170)] = {29,0x19BFFFDE}, + [I(76,170)] = {29,0x19FFFFDE}, + [I(77,170)] = {29,0x1A3FFFDE}, + [I(78,170)] = {29,0x1A7FFFDE}, + [I(79,170)] = {29,0x1ABFFFDE}, + [I(80,170)] = {29,0x1AFFFFDE}, + [I(81,170)] = {29,0x1B3FFFDE}, + [I(82,170)] = {29,0x1B7FFFDE}, + [I(83,170)] = {29,0x1BBFFFDE}, + [I(84,170)] = {29,0x1BFFFFDE}, + [I(85,170)] = {29,0x1C3FFFDE}, + [I(86,170)] = {29,0x1C7FFFDE}, + [I(87,170)] = {29,0x1CBFFFDE}, + [I(88,170)] = {30,0x3F3FFFDE}, + [I(89,170)] = {29,0x1CFFFFDE}, + [I(90,170)] = {30,0x3F7FFFDE}, + [I(91,170)] = {64,0}, + [I(92,170)] = {64,0}, + [I(93,170)] = {64,0}, + [I(94,170)] = {64,0}, + [I(95,170)] = {28,0x8BFFFDE}, + [I(96,170)] = {64,0}, + [I(97,170)] = {27,0xFFFFDE}, + [I(98,170)] = {28,0x8FFFFDE}, + [I(99,170)] = {27,0x13FFFDE}, + [I(100,170)] = {28,0x93FFFDE}, + [I(101,170)] = {27,0x17FFFDE}, + [I(102,170)] = {28,0x97FFFDE}, + [I(103,170)] = {28,0x9BFFFDE}, + [I(104,170)] = {28,0x9FFFFDE}, + [I(105,170)] = {27,0x1BFFFDE}, + [I(106,170)] = {29,0x1D3FFFDE}, + [I(107,170)] = {29,0x1D7FFFDE}, + [I(108,170)] = {28,0xA3FFFDE}, + [I(109,170)] = {28,0xA7FFFDE}, + [I(110,170)] = {28,0xABFFFDE}, + [I(111,170)] = {27,0x1FFFFDE}, + [I(112,170)] = {28,0xAFFFFDE}, + [I(113,170)] = {29,0x1DBFFFDE}, + [I(114,170)] = {28,0xB3FFFDE}, + [I(115,170)] = {27,0x23FFFDE}, + [I(116,170)] = {27,0x27FFFDE}, + [I(117,170)] = {28,0xB7FFFDE}, + [I(118,170)] = {29,0x1DFFFFDE}, + [I(119,170)] = {29,0x1E3FFFDE}, + [I(120,170)] = {29,0x1E7FFFDE}, + [I(121,170)] = {29,0x1EBFFFDE}, + [I(122,170)] = {29,0x1EFFFFDE}, + [I(123,170)] = {64,0}, + [I(124,170)] = {64,0}, + [I(125,170)] = {64,0}, + [I(126,170)] = {64,0}, + [I(127,170)] = {64,0}, + [I(128,170)] = {64,0}, + [I(129,170)] = {64,0}, + [I(130,170)] = {64,0}, + [I(131,170)] = {64,0}, + [I(132,170)] = {64,0}, + [I(133,170)] = {64,0}, + [I(134,170)] = {64,0}, + [I(135,170)] = {64,0}, + [I(136,170)] = {64,0}, + [I(137,170)] = {64,0}, + [I(138,170)] = {64,0}, + [I(139,170)] = {64,0}, + [I(140,170)] = {64,0}, + [I(141,170)] = {64,0}, + [I(142,170)] = {64,0}, + [I(143,170)] = {64,0}, + [I(144,170)] = {64,0}, + [I(145,170)] = {64,0}, + [I(146,170)] = {64,0}, + [I(147,170)] = {64,0}, + [I(148,170)] = {64,0}, + [I(149,170)] = {64,0}, + [I(150,170)] = {64,0}, + [I(151,170)] = {64,0}, + [I(152,170)] = {64,0}, + [I(153,170)] = {64,0}, + [I(154,170)] = {64,0}, + [I(155,170)] = {64,0}, + [I(156,170)] = {64,0}, + [I(157,170)] = {64,0}, + [I(158,170)] = {64,0}, + [I(159,170)] = {64,0}, + [I(160,170)] = {64,0}, + [I(161,170)] = {64,0}, + [I(162,170)] = {64,0}, + [I(163,170)] = {64,0}, + [I(164,170)] = {64,0}, + [I(165,170)] = {64,0}, + [I(166,170)] = {64,0}, + [I(167,170)] = {64,0}, + [I(168,170)] = {64,0}, + [I(169,170)] = {64,0}, + [I(170,170)] = {64,0}, + [I(171,170)] = {64,0}, + [I(172,170)] = {64,0}, + [I(173,170)] = {64,0}, + [I(174,170)] = {64,0}, + [I(175,170)] = {64,0}, + [I(176,170)] = {64,0}, + [I(177,170)] = {64,0}, + [I(178,170)] = {64,0}, + [I(179,170)] = {64,0}, + [I(180,170)] = {64,0}, + [I(181,170)] = {64,0}, + [I(182,170)] = {64,0}, + [I(183,170)] = {64,0}, + [I(184,170)] = {64,0}, + [I(185,170)] = {64,0}, + [I(186,170)] = {64,0}, + [I(187,170)] = {64,0}, + [I(188,170)] = {64,0}, + [I(189,170)] = {64,0}, + [I(190,170)] = {64,0}, + [I(191,170)] = {64,0}, + [I(192,170)] = {64,0}, + [I(193,170)] = {64,0}, + [I(194,170)] = {64,0}, + [I(195,170)] = {64,0}, + [I(196,170)] = {64,0}, + [I(197,170)] = {64,0}, + [I(198,170)] = {64,0}, + [I(199,170)] = {64,0}, + [I(200,170)] = {64,0}, + [I(201,170)] = {64,0}, + [I(202,170)] = {64,0}, + [I(203,170)] = {64,0}, + [I(204,170)] = {64,0}, + [I(205,170)] = {64,0}, + [I(206,170)] = {64,0}, + [I(207,170)] = {64,0}, + [I(208,170)] = {64,0}, + [I(209,170)] = {64,0}, + [I(210,170)] = {64,0}, + [I(211,170)] = {64,0}, + [I(212,170)] = {64,0}, + [I(213,170)] = {64,0}, + [I(214,170)] = {64,0}, + [I(215,170)] = {64,0}, + [I(216,170)] = {64,0}, + [I(217,170)] = {64,0}, + [I(218,170)] = {64,0}, + [I(219,170)] = {64,0}, + [I(220,170)] = {64,0}, + [I(221,170)] = {64,0}, + [I(222,170)] = {64,0}, + [I(223,170)] = {64,0}, + [I(224,170)] = {64,0}, + [I(225,170)] = {64,0}, + [I(226,170)] = {64,0}, + [I(227,170)] = {64,0}, + [I(228,170)] = {64,0}, + [I(229,170)] = {64,0}, + [I(230,170)] = {64,0}, + [I(231,170)] = {64,0}, + [I(232,170)] = {64,0}, + [I(233,170)] = {64,0}, + [I(234,170)] = {64,0}, + [I(235,170)] = {64,0}, + [I(236,170)] = {64,0}, + [I(237,170)] = {64,0}, + [I(238,170)] = {64,0}, + [I(239,170)] = {64,0}, + [I(240,170)] = {64,0}, + [I(241,170)] = {64,0}, + [I(242,170)] = {64,0}, + [I(243,170)] = {64,0}, + [I(244,170)] = {64,0}, + [I(245,170)] = {64,0}, + [I(246,170)] = {64,0}, + [I(247,170)] = {64,0}, + [I(248,170)] = {64,0}, + [I(249,170)] = {64,0}, + [I(250,170)] = {64,0}, + [I(251,170)] = {64,0}, + [I(252,170)] = {64,0}, + [I(253,170)] = {64,0}, + [I(254,170)] = {64,0}, + [I(255,170)] = {64,0}, + [I(0,171)] = {64,0}, + [I(1,171)] = {64,0}, + [I(2,171)] = {64,0}, + [I(3,171)] = {64,0}, + [I(4,171)] = {64,0}, + [I(5,171)] = {64,0}, + [I(6,171)] = {64,0}, + [I(7,171)] = {64,0}, + [I(8,171)] = {64,0}, + [I(9,171)] = {64,0}, + [I(10,171)] = {64,0}, + [I(11,171)] = {64,0}, + [I(12,171)] = {64,0}, + [I(13,171)] = {64,0}, + [I(14,171)] = {64,0}, + [I(15,171)] = {64,0}, + [I(16,171)] = {64,0}, + [I(17,171)] = {64,0}, + [I(18,171)] = {64,0}, + [I(19,171)] = {64,0}, + [I(20,171)] = {64,0}, + [I(21,171)] = {64,0}, + [I(22,171)] = {64,0}, + [I(23,171)] = {64,0}, + [I(24,171)] = {64,0}, + [I(25,171)] = {64,0}, + [I(26,171)] = {64,0}, + [I(27,171)] = {64,0}, + [I(28,171)] = {64,0}, + [I(29,171)] = {64,0}, + [I(30,171)] = {64,0}, + [I(31,171)] = {64,0}, + [I(32,171)] = {30,0x14FFFFF0}, + [I(33,171)] = {64,0}, + [I(34,171)] = {64,0}, + [I(35,171)] = {64,0}, + [I(36,171)] = {64,0}, + [I(37,171)] = {30,0x15FFFFF0}, + [I(38,171)] = {X32,0xF8FFFFF0}, + [I(39,171)] = {64,0}, + [I(40,171)] = {64,0}, + [I(41,171)] = {64,0}, + [I(42,171)] = {X32,0xF9FFFFF0}, + [I(43,171)] = {64,0}, + [I(44,171)] = {X32,0xFAFFFFF0}, + [I(45,171)] = {30,0x16FFFFF0}, + [I(46,171)] = {30,0x17FFFFF0}, + [I(47,171)] = {30,0x18FFFFF0}, + [I(48,171)] = {29,0xFFFFF0}, + [I(49,171)] = {29,0x1FFFFF0}, + [I(50,171)] = {29,0x2FFFFF0}, + [I(51,171)] = {30,0x19FFFFF0}, + [I(52,171)] = {30,0x1AFFFFF0}, + [I(53,171)] = {30,0x1BFFFFF0}, + [I(54,171)] = {30,0x1CFFFFF0}, + [I(55,171)] = {30,0x1DFFFFF0}, + [I(56,171)] = {30,0x1EFFFFF0}, + [I(57,171)] = {30,0x1FFFFFF0}, + [I(58,171)] = {31,0x5CFFFFF0}, + [I(59,171)] = {X32,0xFBFFFFF0}, + [I(60,171)] = {64,0}, + [I(61,171)] = {30,0x20FFFFF0}, + [I(62,171)] = {64,0}, + [I(63,171)] = {64,0}, + [I(64,171)] = {64,0}, + [I(65,171)] = {30,0x21FFFFF0}, + [I(66,171)] = {31,0x5DFFFFF0}, + [I(67,171)] = {31,0x5EFFFFF0}, + [I(68,171)] = {31,0x5FFFFFF0}, + [I(69,171)] = {31,0x60FFFFF0}, + [I(70,171)] = {31,0x61FFFFF0}, + [I(71,171)] = {31,0x62FFFFF0}, + [I(72,171)] = {31,0x63FFFFF0}, + [I(73,171)] = {31,0x64FFFFF0}, + [I(74,171)] = {31,0x65FFFFF0}, + [I(75,171)] = {31,0x66FFFFF0}, + [I(76,171)] = {31,0x67FFFFF0}, + [I(77,171)] = {31,0x68FFFFF0}, + [I(78,171)] = {31,0x69FFFFF0}, + [I(79,171)] = {31,0x6AFFFFF0}, + [I(80,171)] = {31,0x6BFFFFF0}, + [I(81,171)] = {31,0x6CFFFFF0}, + [I(82,171)] = {31,0x6DFFFFF0}, + [I(83,171)] = {31,0x6EFFFFF0}, + [I(84,171)] = {31,0x6FFFFFF0}, + [I(85,171)] = {31,0x70FFFFF0}, + [I(86,171)] = {31,0x71FFFFF0}, + [I(87,171)] = {31,0x72FFFFF0}, + [I(88,171)] = {X32,0xFCFFFFF0}, + [I(89,171)] = {31,0x73FFFFF0}, + [I(90,171)] = {X32,0xFDFFFFF0}, + [I(91,171)] = {64,0}, + [I(92,171)] = {64,0}, + [I(93,171)] = {64,0}, + [I(94,171)] = {64,0}, + [I(95,171)] = {30,0x22FFFFF0}, + [I(96,171)] = {64,0}, + [I(97,171)] = {29,0x3FFFFF0}, + [I(98,171)] = {30,0x23FFFFF0}, + [I(99,171)] = {29,0x4FFFFF0}, + [I(100,171)] = {30,0x24FFFFF0}, + [I(101,171)] = {29,0x5FFFFF0}, + [I(102,171)] = {30,0x25FFFFF0}, + [I(103,171)] = {30,0x26FFFFF0}, + [I(104,171)] = {30,0x27FFFFF0}, + [I(105,171)] = {29,0x6FFFFF0}, + [I(106,171)] = {31,0x74FFFFF0}, + [I(107,171)] = {31,0x75FFFFF0}, + [I(108,171)] = {30,0x28FFFFF0}, + [I(109,171)] = {30,0x29FFFFF0}, + [I(110,171)] = {30,0x2AFFFFF0}, + [I(111,171)] = {29,0x7FFFFF0}, + [I(112,171)] = {30,0x2BFFFFF0}, + [I(113,171)] = {31,0x76FFFFF0}, + [I(114,171)] = {30,0x2CFFFFF0}, + [I(115,171)] = {29,0x8FFFFF0}, + [I(116,171)] = {29,0x9FFFFF0}, + [I(117,171)] = {30,0x2DFFFFF0}, + [I(118,171)] = {31,0x77FFFFF0}, + [I(119,171)] = {31,0x78FFFFF0}, + [I(120,171)] = {31,0x79FFFFF0}, + [I(121,171)] = {31,0x7AFFFFF0}, + [I(122,171)] = {31,0x7BFFFFF0}, + [I(123,171)] = {64,0}, + [I(124,171)] = {64,0}, + [I(125,171)] = {64,0}, + [I(126,171)] = {64,0}, + [I(127,171)] = {64,0}, + [I(128,171)] = {64,0}, + [I(129,171)] = {64,0}, + [I(130,171)] = {64,0}, + [I(131,171)] = {64,0}, + [I(132,171)] = {64,0}, + [I(133,171)] = {64,0}, + [I(134,171)] = {64,0}, + [I(135,171)] = {64,0}, + [I(136,171)] = {64,0}, + [I(137,171)] = {64,0}, + [I(138,171)] = {64,0}, + [I(139,171)] = {64,0}, + [I(140,171)] = {64,0}, + [I(141,171)] = {64,0}, + [I(142,171)] = {64,0}, + [I(143,171)] = {64,0}, + [I(144,171)] = {64,0}, + [I(145,171)] = {64,0}, + [I(146,171)] = {64,0}, + [I(147,171)] = {64,0}, + [I(148,171)] = {64,0}, + [I(149,171)] = {64,0}, + [I(150,171)] = {64,0}, + [I(151,171)] = {64,0}, + [I(152,171)] = {64,0}, + [I(153,171)] = {64,0}, + [I(154,171)] = {64,0}, + [I(155,171)] = {64,0}, + [I(156,171)] = {64,0}, + [I(157,171)] = {64,0}, + [I(158,171)] = {64,0}, + [I(159,171)] = {64,0}, + [I(160,171)] = {64,0}, + [I(161,171)] = {64,0}, + [I(162,171)] = {64,0}, + [I(163,171)] = {64,0}, + [I(164,171)] = {64,0}, + [I(165,171)] = {64,0}, + [I(166,171)] = {64,0}, + [I(167,171)] = {64,0}, + [I(168,171)] = {64,0}, + [I(169,171)] = {64,0}, + [I(170,171)] = {64,0}, + [I(171,171)] = {64,0}, + [I(172,171)] = {64,0}, + [I(173,171)] = {64,0}, + [I(174,171)] = {64,0}, + [I(175,171)] = {64,0}, + [I(176,171)] = {64,0}, + [I(177,171)] = {64,0}, + [I(178,171)] = {64,0}, + [I(179,171)] = {64,0}, + [I(180,171)] = {64,0}, + [I(181,171)] = {64,0}, + [I(182,171)] = {64,0}, + [I(183,171)] = {64,0}, + [I(184,171)] = {64,0}, + [I(185,171)] = {64,0}, + [I(186,171)] = {64,0}, + [I(187,171)] = {64,0}, + [I(188,171)] = {64,0}, + [I(189,171)] = {64,0}, + [I(190,171)] = {64,0}, + [I(191,171)] = {64,0}, + [I(192,171)] = {64,0}, + [I(193,171)] = {64,0}, + [I(194,171)] = {64,0}, + [I(195,171)] = {64,0}, + [I(196,171)] = {64,0}, + [I(197,171)] = {64,0}, + [I(198,171)] = {64,0}, + [I(199,171)] = {64,0}, + [I(200,171)] = {64,0}, + [I(201,171)] = {64,0}, + [I(202,171)] = {64,0}, + [I(203,171)] = {64,0}, + [I(204,171)] = {64,0}, + [I(205,171)] = {64,0}, + [I(206,171)] = {64,0}, + [I(207,171)] = {64,0}, + [I(208,171)] = {64,0}, + [I(209,171)] = {64,0}, + [I(210,171)] = {64,0}, + [I(211,171)] = {64,0}, + [I(212,171)] = {64,0}, + [I(213,171)] = {64,0}, + [I(214,171)] = {64,0}, + [I(215,171)] = {64,0}, + [I(216,171)] = {64,0}, + [I(217,171)] = {64,0}, + [I(218,171)] = {64,0}, + [I(219,171)] = {64,0}, + [I(220,171)] = {64,0}, + [I(221,171)] = {64,0}, + [I(222,171)] = {64,0}, + [I(223,171)] = {64,0}, + [I(224,171)] = {64,0}, + [I(225,171)] = {64,0}, + [I(226,171)] = {64,0}, + [I(227,171)] = {64,0}, + [I(228,171)] = {64,0}, + [I(229,171)] = {64,0}, + [I(230,171)] = {64,0}, + [I(231,171)] = {64,0}, + [I(232,171)] = {64,0}, + [I(233,171)] = {64,0}, + [I(234,171)] = {64,0}, + [I(235,171)] = {64,0}, + [I(236,171)] = {64,0}, + [I(237,171)] = {64,0}, + [I(238,171)] = {64,0}, + [I(239,171)] = {64,0}, + [I(240,171)] = {64,0}, + [I(241,171)] = {64,0}, + [I(242,171)] = {64,0}, + [I(243,171)] = {64,0}, + [I(244,171)] = {64,0}, + [I(245,171)] = {64,0}, + [I(246,171)] = {64,0}, + [I(247,171)] = {64,0}, + [I(248,171)] = {64,0}, + [I(249,171)] = {64,0}, + [I(250,171)] = {64,0}, + [I(251,171)] = {64,0}, + [I(252,171)] = {64,0}, + [I(253,171)] = {64,0}, + [I(254,171)] = {64,0}, + [I(255,171)] = {64,0}, + [I(0,172)] = {64,0}, + [I(1,172)] = {64,0}, + [I(2,172)] = {64,0}, + [I(3,172)] = {64,0}, + [I(4,172)] = {64,0}, + [I(5,172)] = {64,0}, + [I(6,172)] = {64,0}, + [I(7,172)] = {64,0}, + [I(8,172)] = {64,0}, + [I(9,172)] = {64,0}, + [I(10,172)] = {64,0}, + [I(11,172)] = {64,0}, + [I(12,172)] = {64,0}, + [I(13,172)] = {64,0}, + [I(14,172)] = {64,0}, + [I(15,172)] = {64,0}, + [I(16,172)] = {64,0}, + [I(17,172)] = {64,0}, + [I(18,172)] = {64,0}, + [I(19,172)] = {64,0}, + [I(20,172)] = {64,0}, + [I(21,172)] = {64,0}, + [I(22,172)] = {64,0}, + [I(23,172)] = {64,0}, + [I(24,172)] = {64,0}, + [I(25,172)] = {64,0}, + [I(26,172)] = {64,0}, + [I(27,172)] = {64,0}, + [I(28,172)] = {64,0}, + [I(29,172)] = {64,0}, + [I(30,172)] = {64,0}, + [I(31,172)] = {64,0}, + [I(32,172)] = {27,0x29FFFDF}, + [I(33,172)] = {31,0x7F1FFFDF}, + [I(34,172)] = {31,0x7F3FFFDF}, + [I(35,172)] = {64,0}, + [I(36,172)] = {64,0}, + [I(37,172)] = {27,0x2BFFFDF}, + [I(38,172)] = {29,0x1F1FFFDF}, + [I(39,172)] = {X32,0xFF5FFFDF}, + [I(40,172)] = {31,0x7F5FFFDF}, + [I(41,172)] = {31,0x7F7FFFDF}, + [I(42,172)] = {29,0x1F3FFFDF}, + [I(43,172)] = {X32,0xFF7FFFDF}, + [I(44,172)] = {29,0x1F5FFFDF}, + [I(45,172)] = {27,0x2DFFFDF}, + [I(46,172)] = {27,0x2FFFFDF}, + [I(47,172)] = {27,0x31FFFDF}, + [I(48,172)] = {26,0x1FFFDF}, + [I(49,172)] = {26,0x3FFFDF}, + [I(50,172)] = {26,0x5FFFDF}, + [I(51,172)] = {27,0x33FFFDF}, + [I(52,172)] = {27,0x35FFFDF}, + [I(53,172)] = {27,0x37FFFDF}, + [I(54,172)] = {27,0x39FFFDF}, + [I(55,172)] = {27,0x3BFFFDF}, + [I(56,172)] = {27,0x3DFFFDF}, + [I(57,172)] = {27,0x3FFFFDF}, + [I(58,172)] = {28,0xB9FFFDF}, + [I(59,172)] = {29,0x1F7FFFDF}, + [I(60,172)] = {64,0}, + [I(61,172)] = {27,0x41FFFDF}, + [I(62,172)] = {64,0}, + [I(63,172)] = {31,0x7F9FFFDF}, + [I(64,172)] = {64,0}, + [I(65,172)] = {27,0x43FFFDF}, + [I(66,172)] = {28,0xBBFFFDF}, + [I(67,172)] = {28,0xBDFFFDF}, + [I(68,172)] = {28,0xBFFFFDF}, + [I(69,172)] = {28,0xC1FFFDF}, + [I(70,172)] = {28,0xC3FFFDF}, + [I(71,172)] = {28,0xC5FFFDF}, + [I(72,172)] = {28,0xC7FFFDF}, + [I(73,172)] = {28,0xC9FFFDF}, + [I(74,172)] = {28,0xCBFFFDF}, + [I(75,172)] = {28,0xCDFFFDF}, + [I(76,172)] = {28,0xCFFFFDF}, + [I(77,172)] = {28,0xD1FFFDF}, + [I(78,172)] = {28,0xD3FFFDF}, + [I(79,172)] = {28,0xD5FFFDF}, + [I(80,172)] = {28,0xD7FFFDF}, + [I(81,172)] = {28,0xD9FFFDF}, + [I(82,172)] = {28,0xDBFFFDF}, + [I(83,172)] = {28,0xDDFFFDF}, + [I(84,172)] = {28,0xDFFFFDF}, + [I(85,172)] = {28,0xE1FFFDF}, + [I(86,172)] = {28,0xE3FFFDF}, + [I(87,172)] = {28,0xE5FFFDF}, + [I(88,172)] = {29,0x1F9FFFDF}, + [I(89,172)] = {28,0xE7FFFDF}, + [I(90,172)] = {29,0x1FBFFFDF}, + [I(91,172)] = {64,0}, + [I(92,172)] = {64,0}, + [I(93,172)] = {64,0}, + [I(94,172)] = {64,0}, + [I(95,172)] = {27,0x45FFFDF}, + [I(96,172)] = {64,0}, + [I(97,172)] = {26,0x7FFFDF}, + [I(98,172)] = {27,0x47FFFDF}, + [I(99,172)] = {26,0x9FFFDF}, + [I(100,172)] = {27,0x49FFFDF}, + [I(101,172)] = {26,0xBFFFDF}, + [I(102,172)] = {27,0x4BFFFDF}, + [I(103,172)] = {27,0x4DFFFDF}, + [I(104,172)] = {27,0x4FFFFDF}, + [I(105,172)] = {26,0xDFFFDF}, + [I(106,172)] = {28,0xE9FFFDF}, + [I(107,172)] = {28,0xEBFFFDF}, + [I(108,172)] = {27,0x51FFFDF}, + [I(109,172)] = {27,0x53FFFDF}, + [I(110,172)] = {27,0x55FFFDF}, + [I(111,172)] = {26,0xFFFFDF}, + [I(112,172)] = {27,0x57FFFDF}, + [I(113,172)] = {28,0xEDFFFDF}, + [I(114,172)] = {27,0x59FFFDF}, + [I(115,172)] = {26,0x11FFFDF}, + [I(116,172)] = {26,0x13FFFDF}, + [I(117,172)] = {27,0x5BFFFDF}, + [I(118,172)] = {28,0xEFFFFDF}, + [I(119,172)] = {28,0xF1FFFDF}, + [I(120,172)] = {28,0xF3FFFDF}, + [I(121,172)] = {28,0xF5FFFDF}, + [I(122,172)] = {28,0xF7FFFDF}, + [I(123,172)] = {64,0}, + [I(124,172)] = {X32,0xFF9FFFDF}, + [I(125,172)] = {64,0}, + [I(126,172)] = {64,0}, + [I(127,172)] = {64,0}, + [I(128,172)] = {64,0}, + [I(129,172)] = {64,0}, + [I(130,172)] = {64,0}, + [I(131,172)] = {64,0}, + [I(132,172)] = {64,0}, + [I(133,172)] = {64,0}, + [I(134,172)] = {64,0}, + [I(135,172)] = {64,0}, + [I(136,172)] = {64,0}, + [I(137,172)] = {64,0}, + [I(138,172)] = {64,0}, + [I(139,172)] = {64,0}, + [I(140,172)] = {64,0}, + [I(141,172)] = {64,0}, + [I(142,172)] = {64,0}, + [I(143,172)] = {64,0}, + [I(144,172)] = {64,0}, + [I(145,172)] = {64,0}, + [I(146,172)] = {64,0}, + [I(147,172)] = {64,0}, + [I(148,172)] = {64,0}, + [I(149,172)] = {64,0}, + [I(150,172)] = {64,0}, + [I(151,172)] = {64,0}, + [I(152,172)] = {64,0}, + [I(153,172)] = {64,0}, + [I(154,172)] = {64,0}, + [I(155,172)] = {64,0}, + [I(156,172)] = {64,0}, + [I(157,172)] = {64,0}, + [I(158,172)] = {64,0}, + [I(159,172)] = {64,0}, + [I(160,172)] = {64,0}, + [I(161,172)] = {64,0}, + [I(162,172)] = {64,0}, + [I(163,172)] = {64,0}, + [I(164,172)] = {64,0}, + [I(165,172)] = {64,0}, + [I(166,172)] = {64,0}, + [I(167,172)] = {64,0}, + [I(168,172)] = {64,0}, + [I(169,172)] = {64,0}, + [I(170,172)] = {64,0}, + [I(171,172)] = {64,0}, + [I(172,172)] = {64,0}, + [I(173,172)] = {64,0}, + [I(174,172)] = {64,0}, + [I(175,172)] = {64,0}, + [I(176,172)] = {64,0}, + [I(177,172)] = {64,0}, + [I(178,172)] = {64,0}, + [I(179,172)] = {64,0}, + [I(180,172)] = {64,0}, + [I(181,172)] = {64,0}, + [I(182,172)] = {64,0}, + [I(183,172)] = {64,0}, + [I(184,172)] = {64,0}, + [I(185,172)] = {64,0}, + [I(186,172)] = {64,0}, + [I(187,172)] = {64,0}, + [I(188,172)] = {64,0}, + [I(189,172)] = {64,0}, + [I(190,172)] = {64,0}, + [I(191,172)] = {64,0}, + [I(192,172)] = {64,0}, + [I(193,172)] = {64,0}, + [I(194,172)] = {64,0}, + [I(195,172)] = {64,0}, + [I(196,172)] = {64,0}, + [I(197,172)] = {64,0}, + [I(198,172)] = {64,0}, + [I(199,172)] = {64,0}, + [I(200,172)] = {64,0}, + [I(201,172)] = {64,0}, + [I(202,172)] = {64,0}, + [I(203,172)] = {64,0}, + [I(204,172)] = {64,0}, + [I(205,172)] = {64,0}, + [I(206,172)] = {64,0}, + [I(207,172)] = {64,0}, + [I(208,172)] = {64,0}, + [I(209,172)] = {64,0}, + [I(210,172)] = {64,0}, + [I(211,172)] = {64,0}, + [I(212,172)] = {64,0}, + [I(213,172)] = {64,0}, + [I(214,172)] = {64,0}, + [I(215,172)] = {64,0}, + [I(216,172)] = {64,0}, + [I(217,172)] = {64,0}, + [I(218,172)] = {64,0}, + [I(219,172)] = {64,0}, + [I(220,172)] = {64,0}, + [I(221,172)] = {64,0}, + [I(222,172)] = {64,0}, + [I(223,172)] = {64,0}, + [I(224,172)] = {64,0}, + [I(225,172)] = {64,0}, + [I(226,172)] = {64,0}, + [I(227,172)] = {64,0}, + [I(228,172)] = {64,0}, + [I(229,172)] = {64,0}, + [I(230,172)] = {64,0}, + [I(231,172)] = {64,0}, + [I(232,172)] = {64,0}, + [I(233,172)] = {64,0}, + [I(234,172)] = {64,0}, + [I(235,172)] = {64,0}, + [I(236,172)] = {64,0}, + [I(237,172)] = {64,0}, + [I(238,172)] = {64,0}, + [I(239,172)] = {64,0}, + [I(240,172)] = {64,0}, + [I(241,172)] = {64,0}, + [I(242,172)] = {64,0}, + [I(243,172)] = {64,0}, + [I(244,172)] = {64,0}, + [I(245,172)] = {64,0}, + [I(246,172)] = {64,0}, + [I(247,172)] = {64,0}, + [I(248,172)] = {64,0}, + [I(249,172)] = {64,0}, + [I(250,172)] = {64,0}, + [I(251,172)] = {64,0}, + [I(252,172)] = {64,0}, + [I(253,172)] = {64,0}, + [I(254,172)] = {64,0}, + [I(255,172)] = {64,0}, + [I(0,173)] = {64,0}, + [I(1,173)] = {64,0}, + [I(2,173)] = {64,0}, + [I(3,173)] = {64,0}, + [I(4,173)] = {64,0}, + [I(5,173)] = {64,0}, + [I(6,173)] = {64,0}, + [I(7,173)] = {64,0}, + [I(8,173)] = {64,0}, + [I(9,173)] = {64,0}, + [I(10,173)] = {64,0}, + [I(11,173)] = {64,0}, + [I(12,173)] = {64,0}, + [I(13,173)] = {64,0}, + [I(14,173)] = {64,0}, + [I(15,173)] = {64,0}, + [I(16,173)] = {64,0}, + [I(17,173)] = {64,0}, + [I(18,173)] = {64,0}, + [I(19,173)] = {64,0}, + [I(20,173)] = {64,0}, + [I(21,173)] = {64,0}, + [I(22,173)] = {64,0}, + [I(23,173)] = {64,0}, + [I(24,173)] = {64,0}, + [I(25,173)] = {64,0}, + [I(26,173)] = {64,0}, + [I(27,173)] = {64,0}, + [I(28,173)] = {64,0}, + [I(29,173)] = {64,0}, + [I(30,173)] = {64,0}, + [I(31,173)] = {64,0}, + [I(32,173)] = {28,0x53FFFDF}, + [I(33,173)] = {X32,0xFE3FFFDF}, + [I(34,173)] = {X32,0xFE7FFFDF}, + [I(35,173)] = {64,0}, + [I(36,173)] = {64,0}, + [I(37,173)] = {28,0x57FFFDF}, + [I(38,173)] = {30,0x3E3FFFDF}, + [I(39,173)] = {64,0}, + [I(40,173)] = {X32,0xFEBFFFDF}, + [I(41,173)] = {X32,0xFEFFFFDF}, + [I(42,173)] = {30,0x3E7FFFDF}, + [I(43,173)] = {64,0}, + [I(44,173)] = {30,0x3EBFFFDF}, + [I(45,173)] = {28,0x5BFFFDF}, + [I(46,173)] = {28,0x5FFFFDF}, + [I(47,173)] = {28,0x63FFFDF}, + [I(48,173)] = {27,0x3FFFDF}, + [I(49,173)] = {27,0x7FFFDF}, + [I(50,173)] = {27,0xBFFFDF}, + [I(51,173)] = {28,0x67FFFDF}, + [I(52,173)] = {28,0x6BFFFDF}, + [I(53,173)] = {28,0x6FFFFDF}, + [I(54,173)] = {28,0x73FFFDF}, + [I(55,173)] = {28,0x77FFFDF}, + [I(56,173)] = {28,0x7BFFFDF}, + [I(57,173)] = {28,0x7FFFFDF}, + [I(58,173)] = {29,0x173FFFDF}, + [I(59,173)] = {30,0x3EFFFFDF}, + [I(60,173)] = {64,0}, + [I(61,173)] = {28,0x83FFFDF}, + [I(62,173)] = {64,0}, + [I(63,173)] = {X32,0xFF3FFFDF}, + [I(64,173)] = {64,0}, + [I(65,173)] = {28,0x87FFFDF}, + [I(66,173)] = {29,0x177FFFDF}, + [I(67,173)] = {29,0x17BFFFDF}, + [I(68,173)] = {29,0x17FFFFDF}, + [I(69,173)] = {29,0x183FFFDF}, + [I(70,173)] = {29,0x187FFFDF}, + [I(71,173)] = {29,0x18BFFFDF}, + [I(72,173)] = {29,0x18FFFFDF}, + [I(73,173)] = {29,0x193FFFDF}, + [I(74,173)] = {29,0x197FFFDF}, + [I(75,173)] = {29,0x19BFFFDF}, + [I(76,173)] = {29,0x19FFFFDF}, + [I(77,173)] = {29,0x1A3FFFDF}, + [I(78,173)] = {29,0x1A7FFFDF}, + [I(79,173)] = {29,0x1ABFFFDF}, + [I(80,173)] = {29,0x1AFFFFDF}, + [I(81,173)] = {29,0x1B3FFFDF}, + [I(82,173)] = {29,0x1B7FFFDF}, + [I(83,173)] = {29,0x1BBFFFDF}, + [I(84,173)] = {29,0x1BFFFFDF}, + [I(85,173)] = {29,0x1C3FFFDF}, + [I(86,173)] = {29,0x1C7FFFDF}, + [I(87,173)] = {29,0x1CBFFFDF}, + [I(88,173)] = {30,0x3F3FFFDF}, + [I(89,173)] = {29,0x1CFFFFDF}, + [I(90,173)] = {30,0x3F7FFFDF}, + [I(91,173)] = {64,0}, + [I(92,173)] = {64,0}, + [I(93,173)] = {64,0}, + [I(94,173)] = {64,0}, + [I(95,173)] = {28,0x8BFFFDF}, + [I(96,173)] = {64,0}, + [I(97,173)] = {27,0xFFFFDF}, + [I(98,173)] = {28,0x8FFFFDF}, + [I(99,173)] = {27,0x13FFFDF}, + [I(100,173)] = {28,0x93FFFDF}, + [I(101,173)] = {27,0x17FFFDF}, + [I(102,173)] = {28,0x97FFFDF}, + [I(103,173)] = {28,0x9BFFFDF}, + [I(104,173)] = {28,0x9FFFFDF}, + [I(105,173)] = {27,0x1BFFFDF}, + [I(106,173)] = {29,0x1D3FFFDF}, + [I(107,173)] = {29,0x1D7FFFDF}, + [I(108,173)] = {28,0xA3FFFDF}, + [I(109,173)] = {28,0xA7FFFDF}, + [I(110,173)] = {28,0xABFFFDF}, + [I(111,173)] = {27,0x1FFFFDF}, + [I(112,173)] = {28,0xAFFFFDF}, + [I(113,173)] = {29,0x1DBFFFDF}, + [I(114,173)] = {28,0xB3FFFDF}, + [I(115,173)] = {27,0x23FFFDF}, + [I(116,173)] = {27,0x27FFFDF}, + [I(117,173)] = {28,0xB7FFFDF}, + [I(118,173)] = {29,0x1DFFFFDF}, + [I(119,173)] = {29,0x1E3FFFDF}, + [I(120,173)] = {29,0x1E7FFFDF}, + [I(121,173)] = {29,0x1EBFFFDF}, + [I(122,173)] = {29,0x1EFFFFDF}, + [I(123,173)] = {64,0}, + [I(124,173)] = {64,0}, + [I(125,173)] = {64,0}, + [I(126,173)] = {64,0}, + [I(127,173)] = {64,0}, + [I(128,173)] = {64,0}, + [I(129,173)] = {64,0}, + [I(130,173)] = {64,0}, + [I(131,173)] = {64,0}, + [I(132,173)] = {64,0}, + [I(133,173)] = {64,0}, + [I(134,173)] = {64,0}, + [I(135,173)] = {64,0}, + [I(136,173)] = {64,0}, + [I(137,173)] = {64,0}, + [I(138,173)] = {64,0}, + [I(139,173)] = {64,0}, + [I(140,173)] = {64,0}, + [I(141,173)] = {64,0}, + [I(142,173)] = {64,0}, + [I(143,173)] = {64,0}, + [I(144,173)] = {64,0}, + [I(145,173)] = {64,0}, + [I(146,173)] = {64,0}, + [I(147,173)] = {64,0}, + [I(148,173)] = {64,0}, + [I(149,173)] = {64,0}, + [I(150,173)] = {64,0}, + [I(151,173)] = {64,0}, + [I(152,173)] = {64,0}, + [I(153,173)] = {64,0}, + [I(154,173)] = {64,0}, + [I(155,173)] = {64,0}, + [I(156,173)] = {64,0}, + [I(157,173)] = {64,0}, + [I(158,173)] = {64,0}, + [I(159,173)] = {64,0}, + [I(160,173)] = {64,0}, + [I(161,173)] = {64,0}, + [I(162,173)] = {64,0}, + [I(163,173)] = {64,0}, + [I(164,173)] = {64,0}, + [I(165,173)] = {64,0}, + [I(166,173)] = {64,0}, + [I(167,173)] = {64,0}, + [I(168,173)] = {64,0}, + [I(169,173)] = {64,0}, + [I(170,173)] = {64,0}, + [I(171,173)] = {64,0}, + [I(172,173)] = {64,0}, + [I(173,173)] = {64,0}, + [I(174,173)] = {64,0}, + [I(175,173)] = {64,0}, + [I(176,173)] = {64,0}, + [I(177,173)] = {64,0}, + [I(178,173)] = {64,0}, + [I(179,173)] = {64,0}, + [I(180,173)] = {64,0}, + [I(181,173)] = {64,0}, + [I(182,173)] = {64,0}, + [I(183,173)] = {64,0}, + [I(184,173)] = {64,0}, + [I(185,173)] = {64,0}, + [I(186,173)] = {64,0}, + [I(187,173)] = {64,0}, + [I(188,173)] = {64,0}, + [I(189,173)] = {64,0}, + [I(190,173)] = {64,0}, + [I(191,173)] = {64,0}, + [I(192,173)] = {64,0}, + [I(193,173)] = {64,0}, + [I(194,173)] = {64,0}, + [I(195,173)] = {64,0}, + [I(196,173)] = {64,0}, + [I(197,173)] = {64,0}, + [I(198,173)] = {64,0}, + [I(199,173)] = {64,0}, + [I(200,173)] = {64,0}, + [I(201,173)] = {64,0}, + [I(202,173)] = {64,0}, + [I(203,173)] = {64,0}, + [I(204,173)] = {64,0}, + [I(205,173)] = {64,0}, + [I(206,173)] = {64,0}, + [I(207,173)] = {64,0}, + [I(208,173)] = {64,0}, + [I(209,173)] = {64,0}, + [I(210,173)] = {64,0}, + [I(211,173)] = {64,0}, + [I(212,173)] = {64,0}, + [I(213,173)] = {64,0}, + [I(214,173)] = {64,0}, + [I(215,173)] = {64,0}, + [I(216,173)] = {64,0}, + [I(217,173)] = {64,0}, + [I(218,173)] = {64,0}, + [I(219,173)] = {64,0}, + [I(220,173)] = {64,0}, + [I(221,173)] = {64,0}, + [I(222,173)] = {64,0}, + [I(223,173)] = {64,0}, + [I(224,173)] = {64,0}, + [I(225,173)] = {64,0}, + [I(226,173)] = {64,0}, + [I(227,173)] = {64,0}, + [I(228,173)] = {64,0}, + [I(229,173)] = {64,0}, + [I(230,173)] = {64,0}, + [I(231,173)] = {64,0}, + [I(232,173)] = {64,0}, + [I(233,173)] = {64,0}, + [I(234,173)] = {64,0}, + [I(235,173)] = {64,0}, + [I(236,173)] = {64,0}, + [I(237,173)] = {64,0}, + [I(238,173)] = {64,0}, + [I(239,173)] = {64,0}, + [I(240,173)] = {64,0}, + [I(241,173)] = {64,0}, + [I(242,173)] = {64,0}, + [I(243,173)] = {64,0}, + [I(244,173)] = {64,0}, + [I(245,173)] = {64,0}, + [I(246,173)] = {64,0}, + [I(247,173)] = {64,0}, + [I(248,173)] = {64,0}, + [I(249,173)] = {64,0}, + [I(250,173)] = {64,0}, + [I(251,173)] = {64,0}, + [I(252,173)] = {64,0}, + [I(253,173)] = {64,0}, + [I(254,173)] = {64,0}, + [I(255,173)] = {64,0}, + [I(0,174)] = {64,0}, + [I(1,174)] = {64,0}, + [I(2,174)] = {64,0}, + [I(3,174)] = {64,0}, + [I(4,174)] = {64,0}, + [I(5,174)] = {64,0}, + [I(6,174)] = {64,0}, + [I(7,174)] = {64,0}, + [I(8,174)] = {64,0}, + [I(9,174)] = {64,0}, + [I(10,174)] = {64,0}, + [I(11,174)] = {64,0}, + [I(12,174)] = {64,0}, + [I(13,174)] = {64,0}, + [I(14,174)] = {64,0}, + [I(15,174)] = {64,0}, + [I(16,174)] = {64,0}, + [I(17,174)] = {64,0}, + [I(18,174)] = {64,0}, + [I(19,174)] = {64,0}, + [I(20,174)] = {64,0}, + [I(21,174)] = {64,0}, + [I(22,174)] = {64,0}, + [I(23,174)] = {64,0}, + [I(24,174)] = {64,0}, + [I(25,174)] = {64,0}, + [I(26,174)] = {64,0}, + [I(27,174)] = {64,0}, + [I(28,174)] = {64,0}, + [I(29,174)] = {64,0}, + [I(30,174)] = {64,0}, + [I(31,174)] = {64,0}, + [I(32,174)] = {29,0xA7FFFEB}, + [I(33,174)] = {64,0}, + [I(34,174)] = {64,0}, + [I(35,174)] = {64,0}, + [I(36,174)] = {64,0}, + [I(37,174)] = {29,0xAFFFFEB}, + [I(38,174)] = {31,0x7C7FFFEB}, + [I(39,174)] = {64,0}, + [I(40,174)] = {64,0}, + [I(41,174)] = {64,0}, + [I(42,174)] = {31,0x7CFFFFEB}, + [I(43,174)] = {64,0}, + [I(44,174)] = {31,0x7D7FFFEB}, + [I(45,174)] = {29,0xB7FFFEB}, + [I(46,174)] = {29,0xBFFFFEB}, + [I(47,174)] = {29,0xC7FFFEB}, + [I(48,174)] = {28,0x7FFFEB}, + [I(49,174)] = {28,0xFFFFEB}, + [I(50,174)] = {28,0x17FFFEB}, + [I(51,174)] = {29,0xCFFFFEB}, + [I(52,174)] = {29,0xD7FFFEB}, + [I(53,174)] = {29,0xDFFFFEB}, + [I(54,174)] = {29,0xE7FFFEB}, + [I(55,174)] = {29,0xEFFFFEB}, + [I(56,174)] = {29,0xF7FFFEB}, + [I(57,174)] = {29,0xFFFFFEB}, + [I(58,174)] = {30,0x2E7FFFEB}, + [I(59,174)] = {31,0x7DFFFFEB}, + [I(60,174)] = {64,0}, + [I(61,174)] = {29,0x107FFFEB}, + [I(62,174)] = {64,0}, + [I(63,174)] = {64,0}, + [I(64,174)] = {64,0}, + [I(65,174)] = {29,0x10FFFFEB}, + [I(66,174)] = {30,0x2EFFFFEB}, + [I(67,174)] = {30,0x2F7FFFEB}, + [I(68,174)] = {30,0x2FFFFFEB}, + [I(69,174)] = {30,0x307FFFEB}, + [I(70,174)] = {30,0x30FFFFEB}, + [I(71,174)] = {30,0x317FFFEB}, + [I(72,174)] = {30,0x31FFFFEB}, + [I(73,174)] = {30,0x327FFFEB}, + [I(74,174)] = {30,0x32FFFFEB}, + [I(75,174)] = {30,0x337FFFEB}, + [I(76,174)] = {30,0x33FFFFEB}, + [I(77,174)] = {30,0x347FFFEB}, + [I(78,174)] = {30,0x34FFFFEB}, + [I(79,174)] = {30,0x357FFFEB}, + [I(80,174)] = {30,0x35FFFFEB}, + [I(81,174)] = {30,0x367FFFEB}, + [I(82,174)] = {30,0x36FFFFEB}, + [I(83,174)] = {30,0x377FFFEB}, + [I(84,174)] = {30,0x37FFFFEB}, + [I(85,174)] = {30,0x387FFFEB}, + [I(86,174)] = {30,0x38FFFFEB}, + [I(87,174)] = {30,0x397FFFEB}, + [I(88,174)] = {31,0x7E7FFFEB}, + [I(89,174)] = {30,0x39FFFFEB}, + [I(90,174)] = {31,0x7EFFFFEB}, + [I(91,174)] = {64,0}, + [I(92,174)] = {64,0}, + [I(93,174)] = {64,0}, + [I(94,174)] = {64,0}, + [I(95,174)] = {29,0x117FFFEB}, + [I(96,174)] = {64,0}, + [I(97,174)] = {28,0x1FFFFEB}, + [I(98,174)] = {29,0x11FFFFEB}, + [I(99,174)] = {28,0x27FFFEB}, + [I(100,174)] = {29,0x127FFFEB}, + [I(101,174)] = {28,0x2FFFFEB}, + [I(102,174)] = {29,0x12FFFFEB}, + [I(103,174)] = {29,0x137FFFEB}, + [I(104,174)] = {29,0x13FFFFEB}, + [I(105,174)] = {28,0x37FFFEB}, + [I(106,174)] = {30,0x3A7FFFEB}, + [I(107,174)] = {30,0x3AFFFFEB}, + [I(108,174)] = {29,0x147FFFEB}, + [I(109,174)] = {29,0x14FFFFEB}, + [I(110,174)] = {29,0x157FFFEB}, + [I(111,174)] = {28,0x3FFFFEB}, + [I(112,174)] = {29,0x15FFFFEB}, + [I(113,174)] = {30,0x3B7FFFEB}, + [I(114,174)] = {29,0x167FFFEB}, + [I(115,174)] = {28,0x47FFFEB}, + [I(116,174)] = {28,0x4FFFFEB}, + [I(117,174)] = {29,0x16FFFFEB}, + [I(118,174)] = {30,0x3BFFFFEB}, + [I(119,174)] = {30,0x3C7FFFEB}, + [I(120,174)] = {30,0x3CFFFFEB}, + [I(121,174)] = {30,0x3D7FFFEB}, + [I(122,174)] = {30,0x3DFFFFEB}, + [I(123,174)] = {64,0}, + [I(124,174)] = {64,0}, + [I(125,174)] = {64,0}, + [I(126,174)] = {64,0}, + [I(127,174)] = {64,0}, + [I(128,174)] = {64,0}, + [I(129,174)] = {64,0}, + [I(130,174)] = {64,0}, + [I(131,174)] = {64,0}, + [I(132,174)] = {64,0}, + [I(133,174)] = {64,0}, + [I(134,174)] = {64,0}, + [I(135,174)] = {64,0}, + [I(136,174)] = {64,0}, + [I(137,174)] = {64,0}, + [I(138,174)] = {64,0}, + [I(139,174)] = {64,0}, + [I(140,174)] = {64,0}, + [I(141,174)] = {64,0}, + [I(142,174)] = {64,0}, + [I(143,174)] = {64,0}, + [I(144,174)] = {64,0}, + [I(145,174)] = {64,0}, + [I(146,174)] = {64,0}, + [I(147,174)] = {64,0}, + [I(148,174)] = {64,0}, + [I(149,174)] = {64,0}, + [I(150,174)] = {64,0}, + [I(151,174)] = {64,0}, + [I(152,174)] = {64,0}, + [I(153,174)] = {64,0}, + [I(154,174)] = {64,0}, + [I(155,174)] = {64,0}, + [I(156,174)] = {64,0}, + [I(157,174)] = {64,0}, + [I(158,174)] = {64,0}, + [I(159,174)] = {64,0}, + [I(160,174)] = {64,0}, + [I(161,174)] = {64,0}, + [I(162,174)] = {64,0}, + [I(163,174)] = {64,0}, + [I(164,174)] = {64,0}, + [I(165,174)] = {64,0}, + [I(166,174)] = {64,0}, + [I(167,174)] = {64,0}, + [I(168,174)] = {64,0}, + [I(169,174)] = {64,0}, + [I(170,174)] = {64,0}, + [I(171,174)] = {64,0}, + [I(172,174)] = {64,0}, + [I(173,174)] = {64,0}, + [I(174,174)] = {64,0}, + [I(175,174)] = {64,0}, + [I(176,174)] = {64,0}, + [I(177,174)] = {64,0}, + [I(178,174)] = {64,0}, + [I(179,174)] = {64,0}, + [I(180,174)] = {64,0}, + [I(181,174)] = {64,0}, + [I(182,174)] = {64,0}, + [I(183,174)] = {64,0}, + [I(184,174)] = {64,0}, + [I(185,174)] = {64,0}, + [I(186,174)] = {64,0}, + [I(187,174)] = {64,0}, + [I(188,174)] = {64,0}, + [I(189,174)] = {64,0}, + [I(190,174)] = {64,0}, + [I(191,174)] = {64,0}, + [I(192,174)] = {64,0}, + [I(193,174)] = {64,0}, + [I(194,174)] = {64,0}, + [I(195,174)] = {64,0}, + [I(196,174)] = {64,0}, + [I(197,174)] = {64,0}, + [I(198,174)] = {64,0}, + [I(199,174)] = {64,0}, + [I(200,174)] = {64,0}, + [I(201,174)] = {64,0}, + [I(202,174)] = {64,0}, + [I(203,174)] = {64,0}, + [I(204,174)] = {64,0}, + [I(205,174)] = {64,0}, + [I(206,174)] = {64,0}, + [I(207,174)] = {64,0}, + [I(208,174)] = {64,0}, + [I(209,174)] = {64,0}, + [I(210,174)] = {64,0}, + [I(211,174)] = {64,0}, + [I(212,174)] = {64,0}, + [I(213,174)] = {64,0}, + [I(214,174)] = {64,0}, + [I(215,174)] = {64,0}, + [I(216,174)] = {64,0}, + [I(217,174)] = {64,0}, + [I(218,174)] = {64,0}, + [I(219,174)] = {64,0}, + [I(220,174)] = {64,0}, + [I(221,174)] = {64,0}, + [I(222,174)] = {64,0}, + [I(223,174)] = {64,0}, + [I(224,174)] = {64,0}, + [I(225,174)] = {64,0}, + [I(226,174)] = {64,0}, + [I(227,174)] = {64,0}, + [I(228,174)] = {64,0}, + [I(229,174)] = {64,0}, + [I(230,174)] = {64,0}, + [I(231,174)] = {64,0}, + [I(232,174)] = {64,0}, + [I(233,174)] = {64,0}, + [I(234,174)] = {64,0}, + [I(235,174)] = {64,0}, + [I(236,174)] = {64,0}, + [I(237,174)] = {64,0}, + [I(238,174)] = {64,0}, + [I(239,174)] = {64,0}, + [I(240,174)] = {64,0}, + [I(241,174)] = {64,0}, + [I(242,174)] = {64,0}, + [I(243,174)] = {64,0}, + [I(244,174)] = {64,0}, + [I(245,174)] = {64,0}, + [I(246,174)] = {64,0}, + [I(247,174)] = {64,0}, + [I(248,174)] = {64,0}, + [I(249,174)] = {64,0}, + [I(250,174)] = {64,0}, + [I(251,174)] = {64,0}, + [I(252,174)] = {64,0}, + [I(253,174)] = {64,0}, + [I(254,174)] = {64,0}, + [I(255,174)] = {64,0}, + [I(0,175)] = {64,0}, + [I(1,175)] = {64,0}, + [I(2,175)] = {64,0}, + [I(3,175)] = {64,0}, + [I(4,175)] = {64,0}, + [I(5,175)] = {64,0}, + [I(6,175)] = {64,0}, + [I(7,175)] = {64,0}, + [I(8,175)] = {64,0}, + [I(9,175)] = {64,0}, + [I(10,175)] = {64,0}, + [I(11,175)] = {64,0}, + [I(12,175)] = {64,0}, + [I(13,175)] = {64,0}, + [I(14,175)] = {64,0}, + [I(15,175)] = {64,0}, + [I(16,175)] = {64,0}, + [I(17,175)] = {64,0}, + [I(18,175)] = {64,0}, + [I(19,175)] = {64,0}, + [I(20,175)] = {64,0}, + [I(21,175)] = {64,0}, + [I(22,175)] = {64,0}, + [I(23,175)] = {64,0}, + [I(24,175)] = {64,0}, + [I(25,175)] = {64,0}, + [I(26,175)] = {64,0}, + [I(27,175)] = {64,0}, + [I(28,175)] = {64,0}, + [I(29,175)] = {64,0}, + [I(30,175)] = {64,0}, + [I(31,175)] = {64,0}, + [I(32,175)] = {29,0xA7FFFEC}, + [I(33,175)] = {64,0}, + [I(34,175)] = {64,0}, + [I(35,175)] = {64,0}, + [I(36,175)] = {64,0}, + [I(37,175)] = {29,0xAFFFFEC}, + [I(38,175)] = {31,0x7C7FFFEC}, + [I(39,175)] = {64,0}, + [I(40,175)] = {64,0}, + [I(41,175)] = {64,0}, + [I(42,175)] = {31,0x7CFFFFEC}, + [I(43,175)] = {64,0}, + [I(44,175)] = {31,0x7D7FFFEC}, + [I(45,175)] = {29,0xB7FFFEC}, + [I(46,175)] = {29,0xBFFFFEC}, + [I(47,175)] = {29,0xC7FFFEC}, + [I(48,175)] = {28,0x7FFFEC}, + [I(49,175)] = {28,0xFFFFEC}, + [I(50,175)] = {28,0x17FFFEC}, + [I(51,175)] = {29,0xCFFFFEC}, + [I(52,175)] = {29,0xD7FFFEC}, + [I(53,175)] = {29,0xDFFFFEC}, + [I(54,175)] = {29,0xE7FFFEC}, + [I(55,175)] = {29,0xEFFFFEC}, + [I(56,175)] = {29,0xF7FFFEC}, + [I(57,175)] = {29,0xFFFFFEC}, + [I(58,175)] = {30,0x2E7FFFEC}, + [I(59,175)] = {31,0x7DFFFFEC}, + [I(60,175)] = {64,0}, + [I(61,175)] = {29,0x107FFFEC}, + [I(62,175)] = {64,0}, + [I(63,175)] = {64,0}, + [I(64,175)] = {64,0}, + [I(65,175)] = {29,0x10FFFFEC}, + [I(66,175)] = {30,0x2EFFFFEC}, + [I(67,175)] = {30,0x2F7FFFEC}, + [I(68,175)] = {30,0x2FFFFFEC}, + [I(69,175)] = {30,0x307FFFEC}, + [I(70,175)] = {30,0x30FFFFEC}, + [I(71,175)] = {30,0x317FFFEC}, + [I(72,175)] = {30,0x31FFFFEC}, + [I(73,175)] = {30,0x327FFFEC}, + [I(74,175)] = {30,0x32FFFFEC}, + [I(75,175)] = {30,0x337FFFEC}, + [I(76,175)] = {30,0x33FFFFEC}, + [I(77,175)] = {30,0x347FFFEC}, + [I(78,175)] = {30,0x34FFFFEC}, + [I(79,175)] = {30,0x357FFFEC}, + [I(80,175)] = {30,0x35FFFFEC}, + [I(81,175)] = {30,0x367FFFEC}, + [I(82,175)] = {30,0x36FFFFEC}, + [I(83,175)] = {30,0x377FFFEC}, + [I(84,175)] = {30,0x37FFFFEC}, + [I(85,175)] = {30,0x387FFFEC}, + [I(86,175)] = {30,0x38FFFFEC}, + [I(87,175)] = {30,0x397FFFEC}, + [I(88,175)] = {31,0x7E7FFFEC}, + [I(89,175)] = {30,0x39FFFFEC}, + [I(90,175)] = {31,0x7EFFFFEC}, + [I(91,175)] = {64,0}, + [I(92,175)] = {64,0}, + [I(93,175)] = {64,0}, + [I(94,175)] = {64,0}, + [I(95,175)] = {29,0x117FFFEC}, + [I(96,175)] = {64,0}, + [I(97,175)] = {28,0x1FFFFEC}, + [I(98,175)] = {29,0x11FFFFEC}, + [I(99,175)] = {28,0x27FFFEC}, + [I(100,175)] = {29,0x127FFFEC}, + [I(101,175)] = {28,0x2FFFFEC}, + [I(102,175)] = {29,0x12FFFFEC}, + [I(103,175)] = {29,0x137FFFEC}, + [I(104,175)] = {29,0x13FFFFEC}, + [I(105,175)] = {28,0x37FFFEC}, + [I(106,175)] = {30,0x3A7FFFEC}, + [I(107,175)] = {30,0x3AFFFFEC}, + [I(108,175)] = {29,0x147FFFEC}, + [I(109,175)] = {29,0x14FFFFEC}, + [I(110,175)] = {29,0x157FFFEC}, + [I(111,175)] = {28,0x3FFFFEC}, + [I(112,175)] = {29,0x15FFFFEC}, + [I(113,175)] = {30,0x3B7FFFEC}, + [I(114,175)] = {29,0x167FFFEC}, + [I(115,175)] = {28,0x47FFFEC}, + [I(116,175)] = {28,0x4FFFFEC}, + [I(117,175)] = {29,0x16FFFFEC}, + [I(118,175)] = {30,0x3BFFFFEC}, + [I(119,175)] = {30,0x3C7FFFEC}, + [I(120,175)] = {30,0x3CFFFFEC}, + [I(121,175)] = {30,0x3D7FFFEC}, + [I(122,175)] = {30,0x3DFFFFEC}, + [I(123,175)] = {64,0}, + [I(124,175)] = {64,0}, + [I(125,175)] = {64,0}, + [I(126,175)] = {64,0}, + [I(127,175)] = {64,0}, + [I(128,175)] = {64,0}, + [I(129,175)] = {64,0}, + [I(130,175)] = {64,0}, + [I(131,175)] = {64,0}, + [I(132,175)] = {64,0}, + [I(133,175)] = {64,0}, + [I(134,175)] = {64,0}, + [I(135,175)] = {64,0}, + [I(136,175)] = {64,0}, + [I(137,175)] = {64,0}, + [I(138,175)] = {64,0}, + [I(139,175)] = {64,0}, + [I(140,175)] = {64,0}, + [I(141,175)] = {64,0}, + [I(142,175)] = {64,0}, + [I(143,175)] = {64,0}, + [I(144,175)] = {64,0}, + [I(145,175)] = {64,0}, + [I(146,175)] = {64,0}, + [I(147,175)] = {64,0}, + [I(148,175)] = {64,0}, + [I(149,175)] = {64,0}, + [I(150,175)] = {64,0}, + [I(151,175)] = {64,0}, + [I(152,175)] = {64,0}, + [I(153,175)] = {64,0}, + [I(154,175)] = {64,0}, + [I(155,175)] = {64,0}, + [I(156,175)] = {64,0}, + [I(157,175)] = {64,0}, + [I(158,175)] = {64,0}, + [I(159,175)] = {64,0}, + [I(160,175)] = {64,0}, + [I(161,175)] = {64,0}, + [I(162,175)] = {64,0}, + [I(163,175)] = {64,0}, + [I(164,175)] = {64,0}, + [I(165,175)] = {64,0}, + [I(166,175)] = {64,0}, + [I(167,175)] = {64,0}, + [I(168,175)] = {64,0}, + [I(169,175)] = {64,0}, + [I(170,175)] = {64,0}, + [I(171,175)] = {64,0}, + [I(172,175)] = {64,0}, + [I(173,175)] = {64,0}, + [I(174,175)] = {64,0}, + [I(175,175)] = {64,0}, + [I(176,175)] = {64,0}, + [I(177,175)] = {64,0}, + [I(178,175)] = {64,0}, + [I(179,175)] = {64,0}, + [I(180,175)] = {64,0}, + [I(181,175)] = {64,0}, + [I(182,175)] = {64,0}, + [I(183,175)] = {64,0}, + [I(184,175)] = {64,0}, + [I(185,175)] = {64,0}, + [I(186,175)] = {64,0}, + [I(187,175)] = {64,0}, + [I(188,175)] = {64,0}, + [I(189,175)] = {64,0}, + [I(190,175)] = {64,0}, + [I(191,175)] = {64,0}, + [I(192,175)] = {64,0}, + [I(193,175)] = {64,0}, + [I(194,175)] = {64,0}, + [I(195,175)] = {64,0}, + [I(196,175)] = {64,0}, + [I(197,175)] = {64,0}, + [I(198,175)] = {64,0}, + [I(199,175)] = {64,0}, + [I(200,175)] = {64,0}, + [I(201,175)] = {64,0}, + [I(202,175)] = {64,0}, + [I(203,175)] = {64,0}, + [I(204,175)] = {64,0}, + [I(205,175)] = {64,0}, + [I(206,175)] = {64,0}, + [I(207,175)] = {64,0}, + [I(208,175)] = {64,0}, + [I(209,175)] = {64,0}, + [I(210,175)] = {64,0}, + [I(211,175)] = {64,0}, + [I(212,175)] = {64,0}, + [I(213,175)] = {64,0}, + [I(214,175)] = {64,0}, + [I(215,175)] = {64,0}, + [I(216,175)] = {64,0}, + [I(217,175)] = {64,0}, + [I(218,175)] = {64,0}, + [I(219,175)] = {64,0}, + [I(220,175)] = {64,0}, + [I(221,175)] = {64,0}, + [I(222,175)] = {64,0}, + [I(223,175)] = {64,0}, + [I(224,175)] = {64,0}, + [I(225,175)] = {64,0}, + [I(226,175)] = {64,0}, + [I(227,175)] = {64,0}, + [I(228,175)] = {64,0}, + [I(229,175)] = {64,0}, + [I(230,175)] = {64,0}, + [I(231,175)] = {64,0}, + [I(232,175)] = {64,0}, + [I(233,175)] = {64,0}, + [I(234,175)] = {64,0}, + [I(235,175)] = {64,0}, + [I(236,175)] = {64,0}, + [I(237,175)] = {64,0}, + [I(238,175)] = {64,0}, + [I(239,175)] = {64,0}, + [I(240,175)] = {64,0}, + [I(241,175)] = {64,0}, + [I(242,175)] = {64,0}, + [I(243,175)] = {64,0}, + [I(244,175)] = {64,0}, + [I(245,175)] = {64,0}, + [I(246,175)] = {64,0}, + [I(247,175)] = {64,0}, + [I(248,175)] = {64,0}, + [I(249,175)] = {64,0}, + [I(250,175)] = {64,0}, + [I(251,175)] = {64,0}, + [I(252,175)] = {64,0}, + [I(253,175)] = {64,0}, + [I(254,175)] = {64,0}, + [I(255,175)] = {64,0}, + [I(0,176)] = {64,0}, + [I(1,176)] = {64,0}, + [I(2,176)] = {64,0}, + [I(3,176)] = {64,0}, + [I(4,176)] = {64,0}, + [I(5,176)] = {64,0}, + [I(6,176)] = {64,0}, + [I(7,176)] = {64,0}, + [I(8,176)] = {64,0}, + [I(9,176)] = {64,0}, + [I(10,176)] = {64,0}, + [I(11,176)] = {64,0}, + [I(12,176)] = {64,0}, + [I(13,176)] = {64,0}, + [I(14,176)] = {64,0}, + [I(15,176)] = {64,0}, + [I(16,176)] = {64,0}, + [I(17,176)] = {64,0}, + [I(18,176)] = {64,0}, + [I(19,176)] = {64,0}, + [I(20,176)] = {64,0}, + [I(21,176)] = {64,0}, + [I(22,176)] = {64,0}, + [I(23,176)] = {64,0}, + [I(24,176)] = {64,0}, + [I(25,176)] = {64,0}, + [I(26,176)] = {64,0}, + [I(27,176)] = {64,0}, + [I(28,176)] = {64,0}, + [I(29,176)] = {64,0}, + [I(30,176)] = {64,0}, + [I(31,176)] = {64,0}, + [I(32,176)] = {27,0x29FFFE0}, + [I(33,176)] = {31,0x7F1FFFE0}, + [I(34,176)] = {31,0x7F3FFFE0}, + [I(35,176)] = {64,0}, + [I(36,176)] = {64,0}, + [I(37,176)] = {27,0x2BFFFE0}, + [I(38,176)] = {29,0x1F1FFFE0}, + [I(39,176)] = {X32,0xFF5FFFE0}, + [I(40,176)] = {31,0x7F5FFFE0}, + [I(41,176)] = {31,0x7F7FFFE0}, + [I(42,176)] = {29,0x1F3FFFE0}, + [I(43,176)] = {X32,0xFF7FFFE0}, + [I(44,176)] = {29,0x1F5FFFE0}, + [I(45,176)] = {27,0x2DFFFE0}, + [I(46,176)] = {27,0x2FFFFE0}, + [I(47,176)] = {27,0x31FFFE0}, + [I(48,176)] = {26,0x1FFFE0}, + [I(49,176)] = {26,0x3FFFE0}, + [I(50,176)] = {26,0x5FFFE0}, + [I(51,176)] = {27,0x33FFFE0}, + [I(52,176)] = {27,0x35FFFE0}, + [I(53,176)] = {27,0x37FFFE0}, + [I(54,176)] = {27,0x39FFFE0}, + [I(55,176)] = {27,0x3BFFFE0}, + [I(56,176)] = {27,0x3DFFFE0}, + [I(57,176)] = {27,0x3FFFFE0}, + [I(58,176)] = {28,0xB9FFFE0}, + [I(59,176)] = {29,0x1F7FFFE0}, + [I(60,176)] = {64,0}, + [I(61,176)] = {27,0x41FFFE0}, + [I(62,176)] = {64,0}, + [I(63,176)] = {31,0x7F9FFFE0}, + [I(64,176)] = {64,0}, + [I(65,176)] = {27,0x43FFFE0}, + [I(66,176)] = {28,0xBBFFFE0}, + [I(67,176)] = {28,0xBDFFFE0}, + [I(68,176)] = {28,0xBFFFFE0}, + [I(69,176)] = {28,0xC1FFFE0}, + [I(70,176)] = {28,0xC3FFFE0}, + [I(71,176)] = {28,0xC5FFFE0}, + [I(72,176)] = {28,0xC7FFFE0}, + [I(73,176)] = {28,0xC9FFFE0}, + [I(74,176)] = {28,0xCBFFFE0}, + [I(75,176)] = {28,0xCDFFFE0}, + [I(76,176)] = {28,0xCFFFFE0}, + [I(77,176)] = {28,0xD1FFFE0}, + [I(78,176)] = {28,0xD3FFFE0}, + [I(79,176)] = {28,0xD5FFFE0}, + [I(80,176)] = {28,0xD7FFFE0}, + [I(81,176)] = {28,0xD9FFFE0}, + [I(82,176)] = {28,0xDBFFFE0}, + [I(83,176)] = {28,0xDDFFFE0}, + [I(84,176)] = {28,0xDFFFFE0}, + [I(85,176)] = {28,0xE1FFFE0}, + [I(86,176)] = {28,0xE3FFFE0}, + [I(87,176)] = {28,0xE5FFFE0}, + [I(88,176)] = {29,0x1F9FFFE0}, + [I(89,176)] = {28,0xE7FFFE0}, + [I(90,176)] = {29,0x1FBFFFE0}, + [I(91,176)] = {64,0}, + [I(92,176)] = {64,0}, + [I(93,176)] = {64,0}, + [I(94,176)] = {64,0}, + [I(95,176)] = {27,0x45FFFE0}, + [I(96,176)] = {64,0}, + [I(97,176)] = {26,0x7FFFE0}, + [I(98,176)] = {27,0x47FFFE0}, + [I(99,176)] = {26,0x9FFFE0}, + [I(100,176)] = {27,0x49FFFE0}, + [I(101,176)] = {26,0xBFFFE0}, + [I(102,176)] = {27,0x4BFFFE0}, + [I(103,176)] = {27,0x4DFFFE0}, + [I(104,176)] = {27,0x4FFFFE0}, + [I(105,176)] = {26,0xDFFFE0}, + [I(106,176)] = {28,0xE9FFFE0}, + [I(107,176)] = {28,0xEBFFFE0}, + [I(108,176)] = {27,0x51FFFE0}, + [I(109,176)] = {27,0x53FFFE0}, + [I(110,176)] = {27,0x55FFFE0}, + [I(111,176)] = {26,0xFFFFE0}, + [I(112,176)] = {27,0x57FFFE0}, + [I(113,176)] = {28,0xEDFFFE0}, + [I(114,176)] = {27,0x59FFFE0}, + [I(115,176)] = {26,0x11FFFE0}, + [I(116,176)] = {26,0x13FFFE0}, + [I(117,176)] = {27,0x5BFFFE0}, + [I(118,176)] = {28,0xEFFFFE0}, + [I(119,176)] = {28,0xF1FFFE0}, + [I(120,176)] = {28,0xF3FFFE0}, + [I(121,176)] = {28,0xF5FFFE0}, + [I(122,176)] = {28,0xF7FFFE0}, + [I(123,176)] = {64,0}, + [I(124,176)] = {X32,0xFF9FFFE0}, + [I(125,176)] = {64,0}, + [I(126,176)] = {64,0}, + [I(127,176)] = {64,0}, + [I(128,176)] = {64,0}, + [I(129,176)] = {64,0}, + [I(130,176)] = {64,0}, + [I(131,176)] = {64,0}, + [I(132,176)] = {64,0}, + [I(133,176)] = {64,0}, + [I(134,176)] = {64,0}, + [I(135,176)] = {64,0}, + [I(136,176)] = {64,0}, + [I(137,176)] = {64,0}, + [I(138,176)] = {64,0}, + [I(139,176)] = {64,0}, + [I(140,176)] = {64,0}, + [I(141,176)] = {64,0}, + [I(142,176)] = {64,0}, + [I(143,176)] = {64,0}, + [I(144,176)] = {64,0}, + [I(145,176)] = {64,0}, + [I(146,176)] = {64,0}, + [I(147,176)] = {64,0}, + [I(148,176)] = {64,0}, + [I(149,176)] = {64,0}, + [I(150,176)] = {64,0}, + [I(151,176)] = {64,0}, + [I(152,176)] = {64,0}, + [I(153,176)] = {64,0}, + [I(154,176)] = {64,0}, + [I(155,176)] = {64,0}, + [I(156,176)] = {64,0}, + [I(157,176)] = {64,0}, + [I(158,176)] = {64,0}, + [I(159,176)] = {64,0}, + [I(160,176)] = {64,0}, + [I(161,176)] = {64,0}, + [I(162,176)] = {64,0}, + [I(163,176)] = {64,0}, + [I(164,176)] = {64,0}, + [I(165,176)] = {64,0}, + [I(166,176)] = {64,0}, + [I(167,176)] = {64,0}, + [I(168,176)] = {64,0}, + [I(169,176)] = {64,0}, + [I(170,176)] = {64,0}, + [I(171,176)] = {64,0}, + [I(172,176)] = {64,0}, + [I(173,176)] = {64,0}, + [I(174,176)] = {64,0}, + [I(175,176)] = {64,0}, + [I(176,176)] = {64,0}, + [I(177,176)] = {64,0}, + [I(178,176)] = {64,0}, + [I(179,176)] = {64,0}, + [I(180,176)] = {64,0}, + [I(181,176)] = {64,0}, + [I(182,176)] = {64,0}, + [I(183,176)] = {64,0}, + [I(184,176)] = {64,0}, + [I(185,176)] = {64,0}, + [I(186,176)] = {64,0}, + [I(187,176)] = {64,0}, + [I(188,176)] = {64,0}, + [I(189,176)] = {64,0}, + [I(190,176)] = {64,0}, + [I(191,176)] = {64,0}, + [I(192,176)] = {64,0}, + [I(193,176)] = {64,0}, + [I(194,176)] = {64,0}, + [I(195,176)] = {64,0}, + [I(196,176)] = {64,0}, + [I(197,176)] = {64,0}, + [I(198,176)] = {64,0}, + [I(199,176)] = {64,0}, + [I(200,176)] = {64,0}, + [I(201,176)] = {64,0}, + [I(202,176)] = {64,0}, + [I(203,176)] = {64,0}, + [I(204,176)] = {64,0}, + [I(205,176)] = {64,0}, + [I(206,176)] = {64,0}, + [I(207,176)] = {64,0}, + [I(208,176)] = {64,0}, + [I(209,176)] = {64,0}, + [I(210,176)] = {64,0}, + [I(211,176)] = {64,0}, + [I(212,176)] = {64,0}, + [I(213,176)] = {64,0}, + [I(214,176)] = {64,0}, + [I(215,176)] = {64,0}, + [I(216,176)] = {64,0}, + [I(217,176)] = {64,0}, + [I(218,176)] = {64,0}, + [I(219,176)] = {64,0}, + [I(220,176)] = {64,0}, + [I(221,176)] = {64,0}, + [I(222,176)] = {64,0}, + [I(223,176)] = {64,0}, + [I(224,176)] = {64,0}, + [I(225,176)] = {64,0}, + [I(226,176)] = {64,0}, + [I(227,176)] = {64,0}, + [I(228,176)] = {64,0}, + [I(229,176)] = {64,0}, + [I(230,176)] = {64,0}, + [I(231,176)] = {64,0}, + [I(232,176)] = {64,0}, + [I(233,176)] = {64,0}, + [I(234,176)] = {64,0}, + [I(235,176)] = {64,0}, + [I(236,176)] = {64,0}, + [I(237,176)] = {64,0}, + [I(238,176)] = {64,0}, + [I(239,176)] = {64,0}, + [I(240,176)] = {64,0}, + [I(241,176)] = {64,0}, + [I(242,176)] = {64,0}, + [I(243,176)] = {64,0}, + [I(244,176)] = {64,0}, + [I(245,176)] = {64,0}, + [I(246,176)] = {64,0}, + [I(247,176)] = {64,0}, + [I(248,176)] = {64,0}, + [I(249,176)] = {64,0}, + [I(250,176)] = {64,0}, + [I(251,176)] = {64,0}, + [I(252,176)] = {64,0}, + [I(253,176)] = {64,0}, + [I(254,176)] = {64,0}, + [I(255,176)] = {64,0}, + [I(0,177)] = {64,0}, + [I(1,177)] = {64,0}, + [I(2,177)] = {64,0}, + [I(3,177)] = {64,0}, + [I(4,177)] = {64,0}, + [I(5,177)] = {64,0}, + [I(6,177)] = {64,0}, + [I(7,177)] = {64,0}, + [I(8,177)] = {64,0}, + [I(9,177)] = {64,0}, + [I(10,177)] = {64,0}, + [I(11,177)] = {64,0}, + [I(12,177)] = {64,0}, + [I(13,177)] = {64,0}, + [I(14,177)] = {64,0}, + [I(15,177)] = {64,0}, + [I(16,177)] = {64,0}, + [I(17,177)] = {64,0}, + [I(18,177)] = {64,0}, + [I(19,177)] = {64,0}, + [I(20,177)] = {64,0}, + [I(21,177)] = {64,0}, + [I(22,177)] = {64,0}, + [I(23,177)] = {64,0}, + [I(24,177)] = {64,0}, + [I(25,177)] = {64,0}, + [I(26,177)] = {64,0}, + [I(27,177)] = {64,0}, + [I(28,177)] = {64,0}, + [I(29,177)] = {64,0}, + [I(30,177)] = {64,0}, + [I(31,177)] = {64,0}, + [I(32,177)] = {27,0x29FFFE1}, + [I(33,177)] = {31,0x7F1FFFE1}, + [I(34,177)] = {31,0x7F3FFFE1}, + [I(35,177)] = {64,0}, + [I(36,177)] = {64,0}, + [I(37,177)] = {27,0x2BFFFE1}, + [I(38,177)] = {29,0x1F1FFFE1}, + [I(39,177)] = {X32,0xFF5FFFE1}, + [I(40,177)] = {31,0x7F5FFFE1}, + [I(41,177)] = {31,0x7F7FFFE1}, + [I(42,177)] = {29,0x1F3FFFE1}, + [I(43,177)] = {X32,0xFF7FFFE1}, + [I(44,177)] = {29,0x1F5FFFE1}, + [I(45,177)] = {27,0x2DFFFE1}, + [I(46,177)] = {27,0x2FFFFE1}, + [I(47,177)] = {27,0x31FFFE1}, + [I(48,177)] = {26,0x1FFFE1}, + [I(49,177)] = {26,0x3FFFE1}, + [I(50,177)] = {26,0x5FFFE1}, + [I(51,177)] = {27,0x33FFFE1}, + [I(52,177)] = {27,0x35FFFE1}, + [I(53,177)] = {27,0x37FFFE1}, + [I(54,177)] = {27,0x39FFFE1}, + [I(55,177)] = {27,0x3BFFFE1}, + [I(56,177)] = {27,0x3DFFFE1}, + [I(57,177)] = {27,0x3FFFFE1}, + [I(58,177)] = {28,0xB9FFFE1}, + [I(59,177)] = {29,0x1F7FFFE1}, + [I(60,177)] = {64,0}, + [I(61,177)] = {27,0x41FFFE1}, + [I(62,177)] = {64,0}, + [I(63,177)] = {31,0x7F9FFFE1}, + [I(64,177)] = {64,0}, + [I(65,177)] = {27,0x43FFFE1}, + [I(66,177)] = {28,0xBBFFFE1}, + [I(67,177)] = {28,0xBDFFFE1}, + [I(68,177)] = {28,0xBFFFFE1}, + [I(69,177)] = {28,0xC1FFFE1}, + [I(70,177)] = {28,0xC3FFFE1}, + [I(71,177)] = {28,0xC5FFFE1}, + [I(72,177)] = {28,0xC7FFFE1}, + [I(73,177)] = {28,0xC9FFFE1}, + [I(74,177)] = {28,0xCBFFFE1}, + [I(75,177)] = {28,0xCDFFFE1}, + [I(76,177)] = {28,0xCFFFFE1}, + [I(77,177)] = {28,0xD1FFFE1}, + [I(78,177)] = {28,0xD3FFFE1}, + [I(79,177)] = {28,0xD5FFFE1}, + [I(80,177)] = {28,0xD7FFFE1}, + [I(81,177)] = {28,0xD9FFFE1}, + [I(82,177)] = {28,0xDBFFFE1}, + [I(83,177)] = {28,0xDDFFFE1}, + [I(84,177)] = {28,0xDFFFFE1}, + [I(85,177)] = {28,0xE1FFFE1}, + [I(86,177)] = {28,0xE3FFFE1}, + [I(87,177)] = {28,0xE5FFFE1}, + [I(88,177)] = {29,0x1F9FFFE1}, + [I(89,177)] = {28,0xE7FFFE1}, + [I(90,177)] = {29,0x1FBFFFE1}, + [I(91,177)] = {64,0}, + [I(92,177)] = {64,0}, + [I(93,177)] = {64,0}, + [I(94,177)] = {64,0}, + [I(95,177)] = {27,0x45FFFE1}, + [I(96,177)] = {64,0}, + [I(97,177)] = {26,0x7FFFE1}, + [I(98,177)] = {27,0x47FFFE1}, + [I(99,177)] = {26,0x9FFFE1}, + [I(100,177)] = {27,0x49FFFE1}, + [I(101,177)] = {26,0xBFFFE1}, + [I(102,177)] = {27,0x4BFFFE1}, + [I(103,177)] = {27,0x4DFFFE1}, + [I(104,177)] = {27,0x4FFFFE1}, + [I(105,177)] = {26,0xDFFFE1}, + [I(106,177)] = {28,0xE9FFFE1}, + [I(107,177)] = {28,0xEBFFFE1}, + [I(108,177)] = {27,0x51FFFE1}, + [I(109,177)] = {27,0x53FFFE1}, + [I(110,177)] = {27,0x55FFFE1}, + [I(111,177)] = {26,0xFFFFE1}, + [I(112,177)] = {27,0x57FFFE1}, + [I(113,177)] = {28,0xEDFFFE1}, + [I(114,177)] = {27,0x59FFFE1}, + [I(115,177)] = {26,0x11FFFE1}, + [I(116,177)] = {26,0x13FFFE1}, + [I(117,177)] = {27,0x5BFFFE1}, + [I(118,177)] = {28,0xEFFFFE1}, + [I(119,177)] = {28,0xF1FFFE1}, + [I(120,177)] = {28,0xF3FFFE1}, + [I(121,177)] = {28,0xF5FFFE1}, + [I(122,177)] = {28,0xF7FFFE1}, + [I(123,177)] = {64,0}, + [I(124,177)] = {X32,0xFF9FFFE1}, + [I(125,177)] = {64,0}, + [I(126,177)] = {64,0}, + [I(127,177)] = {64,0}, + [I(128,177)] = {64,0}, + [I(129,177)] = {64,0}, + [I(130,177)] = {64,0}, + [I(131,177)] = {64,0}, + [I(132,177)] = {64,0}, + [I(133,177)] = {64,0}, + [I(134,177)] = {64,0}, + [I(135,177)] = {64,0}, + [I(136,177)] = {64,0}, + [I(137,177)] = {64,0}, + [I(138,177)] = {64,0}, + [I(139,177)] = {64,0}, + [I(140,177)] = {64,0}, + [I(141,177)] = {64,0}, + [I(142,177)] = {64,0}, + [I(143,177)] = {64,0}, + [I(144,177)] = {64,0}, + [I(145,177)] = {64,0}, + [I(146,177)] = {64,0}, + [I(147,177)] = {64,0}, + [I(148,177)] = {64,0}, + [I(149,177)] = {64,0}, + [I(150,177)] = {64,0}, + [I(151,177)] = {64,0}, + [I(152,177)] = {64,0}, + [I(153,177)] = {64,0}, + [I(154,177)] = {64,0}, + [I(155,177)] = {64,0}, + [I(156,177)] = {64,0}, + [I(157,177)] = {64,0}, + [I(158,177)] = {64,0}, + [I(159,177)] = {64,0}, + [I(160,177)] = {64,0}, + [I(161,177)] = {64,0}, + [I(162,177)] = {64,0}, + [I(163,177)] = {64,0}, + [I(164,177)] = {64,0}, + [I(165,177)] = {64,0}, + [I(166,177)] = {64,0}, + [I(167,177)] = {64,0}, + [I(168,177)] = {64,0}, + [I(169,177)] = {64,0}, + [I(170,177)] = {64,0}, + [I(171,177)] = {64,0}, + [I(172,177)] = {64,0}, + [I(173,177)] = {64,0}, + [I(174,177)] = {64,0}, + [I(175,177)] = {64,0}, + [I(176,177)] = {64,0}, + [I(177,177)] = {64,0}, + [I(178,177)] = {64,0}, + [I(179,177)] = {64,0}, + [I(180,177)] = {64,0}, + [I(181,177)] = {64,0}, + [I(182,177)] = {64,0}, + [I(183,177)] = {64,0}, + [I(184,177)] = {64,0}, + [I(185,177)] = {64,0}, + [I(186,177)] = {64,0}, + [I(187,177)] = {64,0}, + [I(188,177)] = {64,0}, + [I(189,177)] = {64,0}, + [I(190,177)] = {64,0}, + [I(191,177)] = {64,0}, + [I(192,177)] = {64,0}, + [I(193,177)] = {64,0}, + [I(194,177)] = {64,0}, + [I(195,177)] = {64,0}, + [I(196,177)] = {64,0}, + [I(197,177)] = {64,0}, + [I(198,177)] = {64,0}, + [I(199,177)] = {64,0}, + [I(200,177)] = {64,0}, + [I(201,177)] = {64,0}, + [I(202,177)] = {64,0}, + [I(203,177)] = {64,0}, + [I(204,177)] = {64,0}, + [I(205,177)] = {64,0}, + [I(206,177)] = {64,0}, + [I(207,177)] = {64,0}, + [I(208,177)] = {64,0}, + [I(209,177)] = {64,0}, + [I(210,177)] = {64,0}, + [I(211,177)] = {64,0}, + [I(212,177)] = {64,0}, + [I(213,177)] = {64,0}, + [I(214,177)] = {64,0}, + [I(215,177)] = {64,0}, + [I(216,177)] = {64,0}, + [I(217,177)] = {64,0}, + [I(218,177)] = {64,0}, + [I(219,177)] = {64,0}, + [I(220,177)] = {64,0}, + [I(221,177)] = {64,0}, + [I(222,177)] = {64,0}, + [I(223,177)] = {64,0}, + [I(224,177)] = {64,0}, + [I(225,177)] = {64,0}, + [I(226,177)] = {64,0}, + [I(227,177)] = {64,0}, + [I(228,177)] = {64,0}, + [I(229,177)] = {64,0}, + [I(230,177)] = {64,0}, + [I(231,177)] = {64,0}, + [I(232,177)] = {64,0}, + [I(233,177)] = {64,0}, + [I(234,177)] = {64,0}, + [I(235,177)] = {64,0}, + [I(236,177)] = {64,0}, + [I(237,177)] = {64,0}, + [I(238,177)] = {64,0}, + [I(239,177)] = {64,0}, + [I(240,177)] = {64,0}, + [I(241,177)] = {64,0}, + [I(242,177)] = {64,0}, + [I(243,177)] = {64,0}, + [I(244,177)] = {64,0}, + [I(245,177)] = {64,0}, + [I(246,177)] = {64,0}, + [I(247,177)] = {64,0}, + [I(248,177)] = {64,0}, + [I(249,177)] = {64,0}, + [I(250,177)] = {64,0}, + [I(251,177)] = {64,0}, + [I(252,177)] = {64,0}, + [I(253,177)] = {64,0}, + [I(254,177)] = {64,0}, + [I(255,177)] = {64,0}, + [I(0,178)] = {64,0}, + [I(1,178)] = {64,0}, + [I(2,178)] = {64,0}, + [I(3,178)] = {64,0}, + [I(4,178)] = {64,0}, + [I(5,178)] = {64,0}, + [I(6,178)] = {64,0}, + [I(7,178)] = {64,0}, + [I(8,178)] = {64,0}, + [I(9,178)] = {64,0}, + [I(10,178)] = {64,0}, + [I(11,178)] = {64,0}, + [I(12,178)] = {64,0}, + [I(13,178)] = {64,0}, + [I(14,178)] = {64,0}, + [I(15,178)] = {64,0}, + [I(16,178)] = {64,0}, + [I(17,178)] = {64,0}, + [I(18,178)] = {64,0}, + [I(19,178)] = {64,0}, + [I(20,178)] = {64,0}, + [I(21,178)] = {64,0}, + [I(22,178)] = {64,0}, + [I(23,178)] = {64,0}, + [I(24,178)] = {64,0}, + [I(25,178)] = {64,0}, + [I(26,178)] = {64,0}, + [I(27,178)] = {64,0}, + [I(28,178)] = {64,0}, + [I(29,178)] = {64,0}, + [I(30,178)] = {64,0}, + [I(31,178)] = {64,0}, + [I(32,178)] = {28,0x53FFFE0}, + [I(33,178)] = {X32,0xFE3FFFE0}, + [I(34,178)] = {X32,0xFE7FFFE0}, + [I(35,178)] = {64,0}, + [I(36,178)] = {64,0}, + [I(37,178)] = {28,0x57FFFE0}, + [I(38,178)] = {30,0x3E3FFFE0}, + [I(39,178)] = {64,0}, + [I(40,178)] = {X32,0xFEBFFFE0}, + [I(41,178)] = {X32,0xFEFFFFE0}, + [I(42,178)] = {30,0x3E7FFFE0}, + [I(43,178)] = {64,0}, + [I(44,178)] = {30,0x3EBFFFE0}, + [I(45,178)] = {28,0x5BFFFE0}, + [I(46,178)] = {28,0x5FFFFE0}, + [I(47,178)] = {28,0x63FFFE0}, + [I(48,178)] = {27,0x3FFFE0}, + [I(49,178)] = {27,0x7FFFE0}, + [I(50,178)] = {27,0xBFFFE0}, + [I(51,178)] = {28,0x67FFFE0}, + [I(52,178)] = {28,0x6BFFFE0}, + [I(53,178)] = {28,0x6FFFFE0}, + [I(54,178)] = {28,0x73FFFE0}, + [I(55,178)] = {28,0x77FFFE0}, + [I(56,178)] = {28,0x7BFFFE0}, + [I(57,178)] = {28,0x7FFFFE0}, + [I(58,178)] = {29,0x173FFFE0}, + [I(59,178)] = {30,0x3EFFFFE0}, + [I(60,178)] = {64,0}, + [I(61,178)] = {28,0x83FFFE0}, + [I(62,178)] = {64,0}, + [I(63,178)] = {X32,0xFF3FFFE0}, + [I(64,178)] = {64,0}, + [I(65,178)] = {28,0x87FFFE0}, + [I(66,178)] = {29,0x177FFFE0}, + [I(67,178)] = {29,0x17BFFFE0}, + [I(68,178)] = {29,0x17FFFFE0}, + [I(69,178)] = {29,0x183FFFE0}, + [I(70,178)] = {29,0x187FFFE0}, + [I(71,178)] = {29,0x18BFFFE0}, + [I(72,178)] = {29,0x18FFFFE0}, + [I(73,178)] = {29,0x193FFFE0}, + [I(74,178)] = {29,0x197FFFE0}, + [I(75,178)] = {29,0x19BFFFE0}, + [I(76,178)] = {29,0x19FFFFE0}, + [I(77,178)] = {29,0x1A3FFFE0}, + [I(78,178)] = {29,0x1A7FFFE0}, + [I(79,178)] = {29,0x1ABFFFE0}, + [I(80,178)] = {29,0x1AFFFFE0}, + [I(81,178)] = {29,0x1B3FFFE0}, + [I(82,178)] = {29,0x1B7FFFE0}, + [I(83,178)] = {29,0x1BBFFFE0}, + [I(84,178)] = {29,0x1BFFFFE0}, + [I(85,178)] = {29,0x1C3FFFE0}, + [I(86,178)] = {29,0x1C7FFFE0}, + [I(87,178)] = {29,0x1CBFFFE0}, + [I(88,178)] = {30,0x3F3FFFE0}, + [I(89,178)] = {29,0x1CFFFFE0}, + [I(90,178)] = {30,0x3F7FFFE0}, + [I(91,178)] = {64,0}, + [I(92,178)] = {64,0}, + [I(93,178)] = {64,0}, + [I(94,178)] = {64,0}, + [I(95,178)] = {28,0x8BFFFE0}, + [I(96,178)] = {64,0}, + [I(97,178)] = {27,0xFFFFE0}, + [I(98,178)] = {28,0x8FFFFE0}, + [I(99,178)] = {27,0x13FFFE0}, + [I(100,178)] = {28,0x93FFFE0}, + [I(101,178)] = {27,0x17FFFE0}, + [I(102,178)] = {28,0x97FFFE0}, + [I(103,178)] = {28,0x9BFFFE0}, + [I(104,178)] = {28,0x9FFFFE0}, + [I(105,178)] = {27,0x1BFFFE0}, + [I(106,178)] = {29,0x1D3FFFE0}, + [I(107,178)] = {29,0x1D7FFFE0}, + [I(108,178)] = {28,0xA3FFFE0}, + [I(109,178)] = {28,0xA7FFFE0}, + [I(110,178)] = {28,0xABFFFE0}, + [I(111,178)] = {27,0x1FFFFE0}, + [I(112,178)] = {28,0xAFFFFE0}, + [I(113,178)] = {29,0x1DBFFFE0}, + [I(114,178)] = {28,0xB3FFFE0}, + [I(115,178)] = {27,0x23FFFE0}, + [I(116,178)] = {27,0x27FFFE0}, + [I(117,178)] = {28,0xB7FFFE0}, + [I(118,178)] = {29,0x1DFFFFE0}, + [I(119,178)] = {29,0x1E3FFFE0}, + [I(120,178)] = {29,0x1E7FFFE0}, + [I(121,178)] = {29,0x1EBFFFE0}, + [I(122,178)] = {29,0x1EFFFFE0}, + [I(123,178)] = {64,0}, + [I(124,178)] = {64,0}, + [I(125,178)] = {64,0}, + [I(126,178)] = {64,0}, + [I(127,178)] = {64,0}, + [I(128,178)] = {64,0}, + [I(129,178)] = {64,0}, + [I(130,178)] = {64,0}, + [I(131,178)] = {64,0}, + [I(132,178)] = {64,0}, + [I(133,178)] = {64,0}, + [I(134,178)] = {64,0}, + [I(135,178)] = {64,0}, + [I(136,178)] = {64,0}, + [I(137,178)] = {64,0}, + [I(138,178)] = {64,0}, + [I(139,178)] = {64,0}, + [I(140,178)] = {64,0}, + [I(141,178)] = {64,0}, + [I(142,178)] = {64,0}, + [I(143,178)] = {64,0}, + [I(144,178)] = {64,0}, + [I(145,178)] = {64,0}, + [I(146,178)] = {64,0}, + [I(147,178)] = {64,0}, + [I(148,178)] = {64,0}, + [I(149,178)] = {64,0}, + [I(150,178)] = {64,0}, + [I(151,178)] = {64,0}, + [I(152,178)] = {64,0}, + [I(153,178)] = {64,0}, + [I(154,178)] = {64,0}, + [I(155,178)] = {64,0}, + [I(156,178)] = {64,0}, + [I(157,178)] = {64,0}, + [I(158,178)] = {64,0}, + [I(159,178)] = {64,0}, + [I(160,178)] = {64,0}, + [I(161,178)] = {64,0}, + [I(162,178)] = {64,0}, + [I(163,178)] = {64,0}, + [I(164,178)] = {64,0}, + [I(165,178)] = {64,0}, + [I(166,178)] = {64,0}, + [I(167,178)] = {64,0}, + [I(168,178)] = {64,0}, + [I(169,178)] = {64,0}, + [I(170,178)] = {64,0}, + [I(171,178)] = {64,0}, + [I(172,178)] = {64,0}, + [I(173,178)] = {64,0}, + [I(174,178)] = {64,0}, + [I(175,178)] = {64,0}, + [I(176,178)] = {64,0}, + [I(177,178)] = {64,0}, + [I(178,178)] = {64,0}, + [I(179,178)] = {64,0}, + [I(180,178)] = {64,0}, + [I(181,178)] = {64,0}, + [I(182,178)] = {64,0}, + [I(183,178)] = {64,0}, + [I(184,178)] = {64,0}, + [I(185,178)] = {64,0}, + [I(186,178)] = {64,0}, + [I(187,178)] = {64,0}, + [I(188,178)] = {64,0}, + [I(189,178)] = {64,0}, + [I(190,178)] = {64,0}, + [I(191,178)] = {64,0}, + [I(192,178)] = {64,0}, + [I(193,178)] = {64,0}, + [I(194,178)] = {64,0}, + [I(195,178)] = {64,0}, + [I(196,178)] = {64,0}, + [I(197,178)] = {64,0}, + [I(198,178)] = {64,0}, + [I(199,178)] = {64,0}, + [I(200,178)] = {64,0}, + [I(201,178)] = {64,0}, + [I(202,178)] = {64,0}, + [I(203,178)] = {64,0}, + [I(204,178)] = {64,0}, + [I(205,178)] = {64,0}, + [I(206,178)] = {64,0}, + [I(207,178)] = {64,0}, + [I(208,178)] = {64,0}, + [I(209,178)] = {64,0}, + [I(210,178)] = {64,0}, + [I(211,178)] = {64,0}, + [I(212,178)] = {64,0}, + [I(213,178)] = {64,0}, + [I(214,178)] = {64,0}, + [I(215,178)] = {64,0}, + [I(216,178)] = {64,0}, + [I(217,178)] = {64,0}, + [I(218,178)] = {64,0}, + [I(219,178)] = {64,0}, + [I(220,178)] = {64,0}, + [I(221,178)] = {64,0}, + [I(222,178)] = {64,0}, + [I(223,178)] = {64,0}, + [I(224,178)] = {64,0}, + [I(225,178)] = {64,0}, + [I(226,178)] = {64,0}, + [I(227,178)] = {64,0}, + [I(228,178)] = {64,0}, + [I(229,178)] = {64,0}, + [I(230,178)] = {64,0}, + [I(231,178)] = {64,0}, + [I(232,178)] = {64,0}, + [I(233,178)] = {64,0}, + [I(234,178)] = {64,0}, + [I(235,178)] = {64,0}, + [I(236,178)] = {64,0}, + [I(237,178)] = {64,0}, + [I(238,178)] = {64,0}, + [I(239,178)] = {64,0}, + [I(240,178)] = {64,0}, + [I(241,178)] = {64,0}, + [I(242,178)] = {64,0}, + [I(243,178)] = {64,0}, + [I(244,178)] = {64,0}, + [I(245,178)] = {64,0}, + [I(246,178)] = {64,0}, + [I(247,178)] = {64,0}, + [I(248,178)] = {64,0}, + [I(249,178)] = {64,0}, + [I(250,178)] = {64,0}, + [I(251,178)] = {64,0}, + [I(252,178)] = {64,0}, + [I(253,178)] = {64,0}, + [I(254,178)] = {64,0}, + [I(255,178)] = {64,0}, + [I(0,179)] = {64,0}, + [I(1,179)] = {64,0}, + [I(2,179)] = {64,0}, + [I(3,179)] = {64,0}, + [I(4,179)] = {64,0}, + [I(5,179)] = {64,0}, + [I(6,179)] = {64,0}, + [I(7,179)] = {64,0}, + [I(8,179)] = {64,0}, + [I(9,179)] = {64,0}, + [I(10,179)] = {64,0}, + [I(11,179)] = {64,0}, + [I(12,179)] = {64,0}, + [I(13,179)] = {64,0}, + [I(14,179)] = {64,0}, + [I(15,179)] = {64,0}, + [I(16,179)] = {64,0}, + [I(17,179)] = {64,0}, + [I(18,179)] = {64,0}, + [I(19,179)] = {64,0}, + [I(20,179)] = {64,0}, + [I(21,179)] = {64,0}, + [I(22,179)] = {64,0}, + [I(23,179)] = {64,0}, + [I(24,179)] = {64,0}, + [I(25,179)] = {64,0}, + [I(26,179)] = {64,0}, + [I(27,179)] = {64,0}, + [I(28,179)] = {64,0}, + [I(29,179)] = {64,0}, + [I(30,179)] = {64,0}, + [I(31,179)] = {64,0}, + [I(32,179)] = {27,0x29FFFE2}, + [I(33,179)] = {31,0x7F1FFFE2}, + [I(34,179)] = {31,0x7F3FFFE2}, + [I(35,179)] = {64,0}, + [I(36,179)] = {64,0}, + [I(37,179)] = {27,0x2BFFFE2}, + [I(38,179)] = {29,0x1F1FFFE2}, + [I(39,179)] = {X32,0xFF5FFFE2}, + [I(40,179)] = {31,0x7F5FFFE2}, + [I(41,179)] = {31,0x7F7FFFE2}, + [I(42,179)] = {29,0x1F3FFFE2}, + [I(43,179)] = {X32,0xFF7FFFE2}, + [I(44,179)] = {29,0x1F5FFFE2}, + [I(45,179)] = {27,0x2DFFFE2}, + [I(46,179)] = {27,0x2FFFFE2}, + [I(47,179)] = {27,0x31FFFE2}, + [I(48,179)] = {26,0x1FFFE2}, + [I(49,179)] = {26,0x3FFFE2}, + [I(50,179)] = {26,0x5FFFE2}, + [I(51,179)] = {27,0x33FFFE2}, + [I(52,179)] = {27,0x35FFFE2}, + [I(53,179)] = {27,0x37FFFE2}, + [I(54,179)] = {27,0x39FFFE2}, + [I(55,179)] = {27,0x3BFFFE2}, + [I(56,179)] = {27,0x3DFFFE2}, + [I(57,179)] = {27,0x3FFFFE2}, + [I(58,179)] = {28,0xB9FFFE2}, + [I(59,179)] = {29,0x1F7FFFE2}, + [I(60,179)] = {64,0}, + [I(61,179)] = {27,0x41FFFE2}, + [I(62,179)] = {64,0}, + [I(63,179)] = {31,0x7F9FFFE2}, + [I(64,179)] = {64,0}, + [I(65,179)] = {27,0x43FFFE2}, + [I(66,179)] = {28,0xBBFFFE2}, + [I(67,179)] = {28,0xBDFFFE2}, + [I(68,179)] = {28,0xBFFFFE2}, + [I(69,179)] = {28,0xC1FFFE2}, + [I(70,179)] = {28,0xC3FFFE2}, + [I(71,179)] = {28,0xC5FFFE2}, + [I(72,179)] = {28,0xC7FFFE2}, + [I(73,179)] = {28,0xC9FFFE2}, + [I(74,179)] = {28,0xCBFFFE2}, + [I(75,179)] = {28,0xCDFFFE2}, + [I(76,179)] = {28,0xCFFFFE2}, + [I(77,179)] = {28,0xD1FFFE2}, + [I(78,179)] = {28,0xD3FFFE2}, + [I(79,179)] = {28,0xD5FFFE2}, + [I(80,179)] = {28,0xD7FFFE2}, + [I(81,179)] = {28,0xD9FFFE2}, + [I(82,179)] = {28,0xDBFFFE2}, + [I(83,179)] = {28,0xDDFFFE2}, + [I(84,179)] = {28,0xDFFFFE2}, + [I(85,179)] = {28,0xE1FFFE2}, + [I(86,179)] = {28,0xE3FFFE2}, + [I(87,179)] = {28,0xE5FFFE2}, + [I(88,179)] = {29,0x1F9FFFE2}, + [I(89,179)] = {28,0xE7FFFE2}, + [I(90,179)] = {29,0x1FBFFFE2}, + [I(91,179)] = {64,0}, + [I(92,179)] = {64,0}, + [I(93,179)] = {64,0}, + [I(94,179)] = {64,0}, + [I(95,179)] = {27,0x45FFFE2}, + [I(96,179)] = {64,0}, + [I(97,179)] = {26,0x7FFFE2}, + [I(98,179)] = {27,0x47FFFE2}, + [I(99,179)] = {26,0x9FFFE2}, + [I(100,179)] = {27,0x49FFFE2}, + [I(101,179)] = {26,0xBFFFE2}, + [I(102,179)] = {27,0x4BFFFE2}, + [I(103,179)] = {27,0x4DFFFE2}, + [I(104,179)] = {27,0x4FFFFE2}, + [I(105,179)] = {26,0xDFFFE2}, + [I(106,179)] = {28,0xE9FFFE2}, + [I(107,179)] = {28,0xEBFFFE2}, + [I(108,179)] = {27,0x51FFFE2}, + [I(109,179)] = {27,0x53FFFE2}, + [I(110,179)] = {27,0x55FFFE2}, + [I(111,179)] = {26,0xFFFFE2}, + [I(112,179)] = {27,0x57FFFE2}, + [I(113,179)] = {28,0xEDFFFE2}, + [I(114,179)] = {27,0x59FFFE2}, + [I(115,179)] = {26,0x11FFFE2}, + [I(116,179)] = {26,0x13FFFE2}, + [I(117,179)] = {27,0x5BFFFE2}, + [I(118,179)] = {28,0xEFFFFE2}, + [I(119,179)] = {28,0xF1FFFE2}, + [I(120,179)] = {28,0xF3FFFE2}, + [I(121,179)] = {28,0xF5FFFE2}, + [I(122,179)] = {28,0xF7FFFE2}, + [I(123,179)] = {64,0}, + [I(124,179)] = {X32,0xFF9FFFE2}, + [I(125,179)] = {64,0}, + [I(126,179)] = {64,0}, + [I(127,179)] = {64,0}, + [I(128,179)] = {64,0}, + [I(129,179)] = {64,0}, + [I(130,179)] = {64,0}, + [I(131,179)] = {64,0}, + [I(132,179)] = {64,0}, + [I(133,179)] = {64,0}, + [I(134,179)] = {64,0}, + [I(135,179)] = {64,0}, + [I(136,179)] = {64,0}, + [I(137,179)] = {64,0}, + [I(138,179)] = {64,0}, + [I(139,179)] = {64,0}, + [I(140,179)] = {64,0}, + [I(141,179)] = {64,0}, + [I(142,179)] = {64,0}, + [I(143,179)] = {64,0}, + [I(144,179)] = {64,0}, + [I(145,179)] = {64,0}, + [I(146,179)] = {64,0}, + [I(147,179)] = {64,0}, + [I(148,179)] = {64,0}, + [I(149,179)] = {64,0}, + [I(150,179)] = {64,0}, + [I(151,179)] = {64,0}, + [I(152,179)] = {64,0}, + [I(153,179)] = {64,0}, + [I(154,179)] = {64,0}, + [I(155,179)] = {64,0}, + [I(156,179)] = {64,0}, + [I(157,179)] = {64,0}, + [I(158,179)] = {64,0}, + [I(159,179)] = {64,0}, + [I(160,179)] = {64,0}, + [I(161,179)] = {64,0}, + [I(162,179)] = {64,0}, + [I(163,179)] = {64,0}, + [I(164,179)] = {64,0}, + [I(165,179)] = {64,0}, + [I(166,179)] = {64,0}, + [I(167,179)] = {64,0}, + [I(168,179)] = {64,0}, + [I(169,179)] = {64,0}, + [I(170,179)] = {64,0}, + [I(171,179)] = {64,0}, + [I(172,179)] = {64,0}, + [I(173,179)] = {64,0}, + [I(174,179)] = {64,0}, + [I(175,179)] = {64,0}, + [I(176,179)] = {64,0}, + [I(177,179)] = {64,0}, + [I(178,179)] = {64,0}, + [I(179,179)] = {64,0}, + [I(180,179)] = {64,0}, + [I(181,179)] = {64,0}, + [I(182,179)] = {64,0}, + [I(183,179)] = {64,0}, + [I(184,179)] = {64,0}, + [I(185,179)] = {64,0}, + [I(186,179)] = {64,0}, + [I(187,179)] = {64,0}, + [I(188,179)] = {64,0}, + [I(189,179)] = {64,0}, + [I(190,179)] = {64,0}, + [I(191,179)] = {64,0}, + [I(192,179)] = {64,0}, + [I(193,179)] = {64,0}, + [I(194,179)] = {64,0}, + [I(195,179)] = {64,0}, + [I(196,179)] = {64,0}, + [I(197,179)] = {64,0}, + [I(198,179)] = {64,0}, + [I(199,179)] = {64,0}, + [I(200,179)] = {64,0}, + [I(201,179)] = {64,0}, + [I(202,179)] = {64,0}, + [I(203,179)] = {64,0}, + [I(204,179)] = {64,0}, + [I(205,179)] = {64,0}, + [I(206,179)] = {64,0}, + [I(207,179)] = {64,0}, + [I(208,179)] = {64,0}, + [I(209,179)] = {64,0}, + [I(210,179)] = {64,0}, + [I(211,179)] = {64,0}, + [I(212,179)] = {64,0}, + [I(213,179)] = {64,0}, + [I(214,179)] = {64,0}, + [I(215,179)] = {64,0}, + [I(216,179)] = {64,0}, + [I(217,179)] = {64,0}, + [I(218,179)] = {64,0}, + [I(219,179)] = {64,0}, + [I(220,179)] = {64,0}, + [I(221,179)] = {64,0}, + [I(222,179)] = {64,0}, + [I(223,179)] = {64,0}, + [I(224,179)] = {64,0}, + [I(225,179)] = {64,0}, + [I(226,179)] = {64,0}, + [I(227,179)] = {64,0}, + [I(228,179)] = {64,0}, + [I(229,179)] = {64,0}, + [I(230,179)] = {64,0}, + [I(231,179)] = {64,0}, + [I(232,179)] = {64,0}, + [I(233,179)] = {64,0}, + [I(234,179)] = {64,0}, + [I(235,179)] = {64,0}, + [I(236,179)] = {64,0}, + [I(237,179)] = {64,0}, + [I(238,179)] = {64,0}, + [I(239,179)] = {64,0}, + [I(240,179)] = {64,0}, + [I(241,179)] = {64,0}, + [I(242,179)] = {64,0}, + [I(243,179)] = {64,0}, + [I(244,179)] = {64,0}, + [I(245,179)] = {64,0}, + [I(246,179)] = {64,0}, + [I(247,179)] = {64,0}, + [I(248,179)] = {64,0}, + [I(249,179)] = {64,0}, + [I(250,179)] = {64,0}, + [I(251,179)] = {64,0}, + [I(252,179)] = {64,0}, + [I(253,179)] = {64,0}, + [I(254,179)] = {64,0}, + [I(255,179)] = {64,0}, + [I(0,180)] = {64,0}, + [I(1,180)] = {64,0}, + [I(2,180)] = {64,0}, + [I(3,180)] = {64,0}, + [I(4,180)] = {64,0}, + [I(5,180)] = {64,0}, + [I(6,180)] = {64,0}, + [I(7,180)] = {64,0}, + [I(8,180)] = {64,0}, + [I(9,180)] = {64,0}, + [I(10,180)] = {64,0}, + [I(11,180)] = {64,0}, + [I(12,180)] = {64,0}, + [I(13,180)] = {64,0}, + [I(14,180)] = {64,0}, + [I(15,180)] = {64,0}, + [I(16,180)] = {64,0}, + [I(17,180)] = {64,0}, + [I(18,180)] = {64,0}, + [I(19,180)] = {64,0}, + [I(20,180)] = {64,0}, + [I(21,180)] = {64,0}, + [I(22,180)] = {64,0}, + [I(23,180)] = {64,0}, + [I(24,180)] = {64,0}, + [I(25,180)] = {64,0}, + [I(26,180)] = {64,0}, + [I(27,180)] = {64,0}, + [I(28,180)] = {64,0}, + [I(29,180)] = {64,0}, + [I(30,180)] = {64,0}, + [I(31,180)] = {64,0}, + [I(32,180)] = {29,0xA7FFFED}, + [I(33,180)] = {64,0}, + [I(34,180)] = {64,0}, + [I(35,180)] = {64,0}, + [I(36,180)] = {64,0}, + [I(37,180)] = {29,0xAFFFFED}, + [I(38,180)] = {31,0x7C7FFFED}, + [I(39,180)] = {64,0}, + [I(40,180)] = {64,0}, + [I(41,180)] = {64,0}, + [I(42,180)] = {31,0x7CFFFFED}, + [I(43,180)] = {64,0}, + [I(44,180)] = {31,0x7D7FFFED}, + [I(45,180)] = {29,0xB7FFFED}, + [I(46,180)] = {29,0xBFFFFED}, + [I(47,180)] = {29,0xC7FFFED}, + [I(48,180)] = {28,0x7FFFED}, + [I(49,180)] = {28,0xFFFFED}, + [I(50,180)] = {28,0x17FFFED}, + [I(51,180)] = {29,0xCFFFFED}, + [I(52,180)] = {29,0xD7FFFED}, + [I(53,180)] = {29,0xDFFFFED}, + [I(54,180)] = {29,0xE7FFFED}, + [I(55,180)] = {29,0xEFFFFED}, + [I(56,180)] = {29,0xF7FFFED}, + [I(57,180)] = {29,0xFFFFFED}, + [I(58,180)] = {30,0x2E7FFFED}, + [I(59,180)] = {31,0x7DFFFFED}, + [I(60,180)] = {64,0}, + [I(61,180)] = {29,0x107FFFED}, + [I(62,180)] = {64,0}, + [I(63,180)] = {64,0}, + [I(64,180)] = {64,0}, + [I(65,180)] = {29,0x10FFFFED}, + [I(66,180)] = {30,0x2EFFFFED}, + [I(67,180)] = {30,0x2F7FFFED}, + [I(68,180)] = {30,0x2FFFFFED}, + [I(69,180)] = {30,0x307FFFED}, + [I(70,180)] = {30,0x30FFFFED}, + [I(71,180)] = {30,0x317FFFED}, + [I(72,180)] = {30,0x31FFFFED}, + [I(73,180)] = {30,0x327FFFED}, + [I(74,180)] = {30,0x32FFFFED}, + [I(75,180)] = {30,0x337FFFED}, + [I(76,180)] = {30,0x33FFFFED}, + [I(77,180)] = {30,0x347FFFED}, + [I(78,180)] = {30,0x34FFFFED}, + [I(79,180)] = {30,0x357FFFED}, + [I(80,180)] = {30,0x35FFFFED}, + [I(81,180)] = {30,0x367FFFED}, + [I(82,180)] = {30,0x36FFFFED}, + [I(83,180)] = {30,0x377FFFED}, + [I(84,180)] = {30,0x37FFFFED}, + [I(85,180)] = {30,0x387FFFED}, + [I(86,180)] = {30,0x38FFFFED}, + [I(87,180)] = {30,0x397FFFED}, + [I(88,180)] = {31,0x7E7FFFED}, + [I(89,180)] = {30,0x39FFFFED}, + [I(90,180)] = {31,0x7EFFFFED}, + [I(91,180)] = {64,0}, + [I(92,180)] = {64,0}, + [I(93,180)] = {64,0}, + [I(94,180)] = {64,0}, + [I(95,180)] = {29,0x117FFFED}, + [I(96,180)] = {64,0}, + [I(97,180)] = {28,0x1FFFFED}, + [I(98,180)] = {29,0x11FFFFED}, + [I(99,180)] = {28,0x27FFFED}, + [I(100,180)] = {29,0x127FFFED}, + [I(101,180)] = {28,0x2FFFFED}, + [I(102,180)] = {29,0x12FFFFED}, + [I(103,180)] = {29,0x137FFFED}, + [I(104,180)] = {29,0x13FFFFED}, + [I(105,180)] = {28,0x37FFFED}, + [I(106,180)] = {30,0x3A7FFFED}, + [I(107,180)] = {30,0x3AFFFFED}, + [I(108,180)] = {29,0x147FFFED}, + [I(109,180)] = {29,0x14FFFFED}, + [I(110,180)] = {29,0x157FFFED}, + [I(111,180)] = {28,0x3FFFFED}, + [I(112,180)] = {29,0x15FFFFED}, + [I(113,180)] = {30,0x3B7FFFED}, + [I(114,180)] = {29,0x167FFFED}, + [I(115,180)] = {28,0x47FFFED}, + [I(116,180)] = {28,0x4FFFFED}, + [I(117,180)] = {29,0x16FFFFED}, + [I(118,180)] = {30,0x3BFFFFED}, + [I(119,180)] = {30,0x3C7FFFED}, + [I(120,180)] = {30,0x3CFFFFED}, + [I(121,180)] = {30,0x3D7FFFED}, + [I(122,180)] = {30,0x3DFFFFED}, + [I(123,180)] = {64,0}, + [I(124,180)] = {64,0}, + [I(125,180)] = {64,0}, + [I(126,180)] = {64,0}, + [I(127,180)] = {64,0}, + [I(128,180)] = {64,0}, + [I(129,180)] = {64,0}, + [I(130,180)] = {64,0}, + [I(131,180)] = {64,0}, + [I(132,180)] = {64,0}, + [I(133,180)] = {64,0}, + [I(134,180)] = {64,0}, + [I(135,180)] = {64,0}, + [I(136,180)] = {64,0}, + [I(137,180)] = {64,0}, + [I(138,180)] = {64,0}, + [I(139,180)] = {64,0}, + [I(140,180)] = {64,0}, + [I(141,180)] = {64,0}, + [I(142,180)] = {64,0}, + [I(143,180)] = {64,0}, + [I(144,180)] = {64,0}, + [I(145,180)] = {64,0}, + [I(146,180)] = {64,0}, + [I(147,180)] = {64,0}, + [I(148,180)] = {64,0}, + [I(149,180)] = {64,0}, + [I(150,180)] = {64,0}, + [I(151,180)] = {64,0}, + [I(152,180)] = {64,0}, + [I(153,180)] = {64,0}, + [I(154,180)] = {64,0}, + [I(155,180)] = {64,0}, + [I(156,180)] = {64,0}, + [I(157,180)] = {64,0}, + [I(158,180)] = {64,0}, + [I(159,180)] = {64,0}, + [I(160,180)] = {64,0}, + [I(161,180)] = {64,0}, + [I(162,180)] = {64,0}, + [I(163,180)] = {64,0}, + [I(164,180)] = {64,0}, + [I(165,180)] = {64,0}, + [I(166,180)] = {64,0}, + [I(167,180)] = {64,0}, + [I(168,180)] = {64,0}, + [I(169,180)] = {64,0}, + [I(170,180)] = {64,0}, + [I(171,180)] = {64,0}, + [I(172,180)] = {64,0}, + [I(173,180)] = {64,0}, + [I(174,180)] = {64,0}, + [I(175,180)] = {64,0}, + [I(176,180)] = {64,0}, + [I(177,180)] = {64,0}, + [I(178,180)] = {64,0}, + [I(179,180)] = {64,0}, + [I(180,180)] = {64,0}, + [I(181,180)] = {64,0}, + [I(182,180)] = {64,0}, + [I(183,180)] = {64,0}, + [I(184,180)] = {64,0}, + [I(185,180)] = {64,0}, + [I(186,180)] = {64,0}, + [I(187,180)] = {64,0}, + [I(188,180)] = {64,0}, + [I(189,180)] = {64,0}, + [I(190,180)] = {64,0}, + [I(191,180)] = {64,0}, + [I(192,180)] = {64,0}, + [I(193,180)] = {64,0}, + [I(194,180)] = {64,0}, + [I(195,180)] = {64,0}, + [I(196,180)] = {64,0}, + [I(197,180)] = {64,0}, + [I(198,180)] = {64,0}, + [I(199,180)] = {64,0}, + [I(200,180)] = {64,0}, + [I(201,180)] = {64,0}, + [I(202,180)] = {64,0}, + [I(203,180)] = {64,0}, + [I(204,180)] = {64,0}, + [I(205,180)] = {64,0}, + [I(206,180)] = {64,0}, + [I(207,180)] = {64,0}, + [I(208,180)] = {64,0}, + [I(209,180)] = {64,0}, + [I(210,180)] = {64,0}, + [I(211,180)] = {64,0}, + [I(212,180)] = {64,0}, + [I(213,180)] = {64,0}, + [I(214,180)] = {64,0}, + [I(215,180)] = {64,0}, + [I(216,180)] = {64,0}, + [I(217,180)] = {64,0}, + [I(218,180)] = {64,0}, + [I(219,180)] = {64,0}, + [I(220,180)] = {64,0}, + [I(221,180)] = {64,0}, + [I(222,180)] = {64,0}, + [I(223,180)] = {64,0}, + [I(224,180)] = {64,0}, + [I(225,180)] = {64,0}, + [I(226,180)] = {64,0}, + [I(227,180)] = {64,0}, + [I(228,180)] = {64,0}, + [I(229,180)] = {64,0}, + [I(230,180)] = {64,0}, + [I(231,180)] = {64,0}, + [I(232,180)] = {64,0}, + [I(233,180)] = {64,0}, + [I(234,180)] = {64,0}, + [I(235,180)] = {64,0}, + [I(236,180)] = {64,0}, + [I(237,180)] = {64,0}, + [I(238,180)] = {64,0}, + [I(239,180)] = {64,0}, + [I(240,180)] = {64,0}, + [I(241,180)] = {64,0}, + [I(242,180)] = {64,0}, + [I(243,180)] = {64,0}, + [I(244,180)] = {64,0}, + [I(245,180)] = {64,0}, + [I(246,180)] = {64,0}, + [I(247,180)] = {64,0}, + [I(248,180)] = {64,0}, + [I(249,180)] = {64,0}, + [I(250,180)] = {64,0}, + [I(251,180)] = {64,0}, + [I(252,180)] = {64,0}, + [I(253,180)] = {64,0}, + [I(254,180)] = {64,0}, + [I(255,180)] = {64,0}, + [I(0,181)] = {64,0}, + [I(1,181)] = {64,0}, + [I(2,181)] = {64,0}, + [I(3,181)] = {64,0}, + [I(4,181)] = {64,0}, + [I(5,181)] = {64,0}, + [I(6,181)] = {64,0}, + [I(7,181)] = {64,0}, + [I(8,181)] = {64,0}, + [I(9,181)] = {64,0}, + [I(10,181)] = {64,0}, + [I(11,181)] = {64,0}, + [I(12,181)] = {64,0}, + [I(13,181)] = {64,0}, + [I(14,181)] = {64,0}, + [I(15,181)] = {64,0}, + [I(16,181)] = {64,0}, + [I(17,181)] = {64,0}, + [I(18,181)] = {64,0}, + [I(19,181)] = {64,0}, + [I(20,181)] = {64,0}, + [I(21,181)] = {64,0}, + [I(22,181)] = {64,0}, + [I(23,181)] = {64,0}, + [I(24,181)] = {64,0}, + [I(25,181)] = {64,0}, + [I(26,181)] = {64,0}, + [I(27,181)] = {64,0}, + [I(28,181)] = {64,0}, + [I(29,181)] = {64,0}, + [I(30,181)] = {64,0}, + [I(31,181)] = {64,0}, + [I(32,181)] = {28,0x53FFFE1}, + [I(33,181)] = {X32,0xFE3FFFE1}, + [I(34,181)] = {X32,0xFE7FFFE1}, + [I(35,181)] = {64,0}, + [I(36,181)] = {64,0}, + [I(37,181)] = {28,0x57FFFE1}, + [I(38,181)] = {30,0x3E3FFFE1}, + [I(39,181)] = {64,0}, + [I(40,181)] = {X32,0xFEBFFFE1}, + [I(41,181)] = {X32,0xFEFFFFE1}, + [I(42,181)] = {30,0x3E7FFFE1}, + [I(43,181)] = {64,0}, + [I(44,181)] = {30,0x3EBFFFE1}, + [I(45,181)] = {28,0x5BFFFE1}, + [I(46,181)] = {28,0x5FFFFE1}, + [I(47,181)] = {28,0x63FFFE1}, + [I(48,181)] = {27,0x3FFFE1}, + [I(49,181)] = {27,0x7FFFE1}, + [I(50,181)] = {27,0xBFFFE1}, + [I(51,181)] = {28,0x67FFFE1}, + [I(52,181)] = {28,0x6BFFFE1}, + [I(53,181)] = {28,0x6FFFFE1}, + [I(54,181)] = {28,0x73FFFE1}, + [I(55,181)] = {28,0x77FFFE1}, + [I(56,181)] = {28,0x7BFFFE1}, + [I(57,181)] = {28,0x7FFFFE1}, + [I(58,181)] = {29,0x173FFFE1}, + [I(59,181)] = {30,0x3EFFFFE1}, + [I(60,181)] = {64,0}, + [I(61,181)] = {28,0x83FFFE1}, + [I(62,181)] = {64,0}, + [I(63,181)] = {X32,0xFF3FFFE1}, + [I(64,181)] = {64,0}, + [I(65,181)] = {28,0x87FFFE1}, + [I(66,181)] = {29,0x177FFFE1}, + [I(67,181)] = {29,0x17BFFFE1}, + [I(68,181)] = {29,0x17FFFFE1}, + [I(69,181)] = {29,0x183FFFE1}, + [I(70,181)] = {29,0x187FFFE1}, + [I(71,181)] = {29,0x18BFFFE1}, + [I(72,181)] = {29,0x18FFFFE1}, + [I(73,181)] = {29,0x193FFFE1}, + [I(74,181)] = {29,0x197FFFE1}, + [I(75,181)] = {29,0x19BFFFE1}, + [I(76,181)] = {29,0x19FFFFE1}, + [I(77,181)] = {29,0x1A3FFFE1}, + [I(78,181)] = {29,0x1A7FFFE1}, + [I(79,181)] = {29,0x1ABFFFE1}, + [I(80,181)] = {29,0x1AFFFFE1}, + [I(81,181)] = {29,0x1B3FFFE1}, + [I(82,181)] = {29,0x1B7FFFE1}, + [I(83,181)] = {29,0x1BBFFFE1}, + [I(84,181)] = {29,0x1BFFFFE1}, + [I(85,181)] = {29,0x1C3FFFE1}, + [I(86,181)] = {29,0x1C7FFFE1}, + [I(87,181)] = {29,0x1CBFFFE1}, + [I(88,181)] = {30,0x3F3FFFE1}, + [I(89,181)] = {29,0x1CFFFFE1}, + [I(90,181)] = {30,0x3F7FFFE1}, + [I(91,181)] = {64,0}, + [I(92,181)] = {64,0}, + [I(93,181)] = {64,0}, + [I(94,181)] = {64,0}, + [I(95,181)] = {28,0x8BFFFE1}, + [I(96,181)] = {64,0}, + [I(97,181)] = {27,0xFFFFE1}, + [I(98,181)] = {28,0x8FFFFE1}, + [I(99,181)] = {27,0x13FFFE1}, + [I(100,181)] = {28,0x93FFFE1}, + [I(101,181)] = {27,0x17FFFE1}, + [I(102,181)] = {28,0x97FFFE1}, + [I(103,181)] = {28,0x9BFFFE1}, + [I(104,181)] = {28,0x9FFFFE1}, + [I(105,181)] = {27,0x1BFFFE1}, + [I(106,181)] = {29,0x1D3FFFE1}, + [I(107,181)] = {29,0x1D7FFFE1}, + [I(108,181)] = {28,0xA3FFFE1}, + [I(109,181)] = {28,0xA7FFFE1}, + [I(110,181)] = {28,0xABFFFE1}, + [I(111,181)] = {27,0x1FFFFE1}, + [I(112,181)] = {28,0xAFFFFE1}, + [I(113,181)] = {29,0x1DBFFFE1}, + [I(114,181)] = {28,0xB3FFFE1}, + [I(115,181)] = {27,0x23FFFE1}, + [I(116,181)] = {27,0x27FFFE1}, + [I(117,181)] = {28,0xB7FFFE1}, + [I(118,181)] = {29,0x1DFFFFE1}, + [I(119,181)] = {29,0x1E3FFFE1}, + [I(120,181)] = {29,0x1E7FFFE1}, + [I(121,181)] = {29,0x1EBFFFE1}, + [I(122,181)] = {29,0x1EFFFFE1}, + [I(123,181)] = {64,0}, + [I(124,181)] = {64,0}, + [I(125,181)] = {64,0}, + [I(126,181)] = {64,0}, + [I(127,181)] = {64,0}, + [I(128,181)] = {64,0}, + [I(129,181)] = {64,0}, + [I(130,181)] = {64,0}, + [I(131,181)] = {64,0}, + [I(132,181)] = {64,0}, + [I(133,181)] = {64,0}, + [I(134,181)] = {64,0}, + [I(135,181)] = {64,0}, + [I(136,181)] = {64,0}, + [I(137,181)] = {64,0}, + [I(138,181)] = {64,0}, + [I(139,181)] = {64,0}, + [I(140,181)] = {64,0}, + [I(141,181)] = {64,0}, + [I(142,181)] = {64,0}, + [I(143,181)] = {64,0}, + [I(144,181)] = {64,0}, + [I(145,181)] = {64,0}, + [I(146,181)] = {64,0}, + [I(147,181)] = {64,0}, + [I(148,181)] = {64,0}, + [I(149,181)] = {64,0}, + [I(150,181)] = {64,0}, + [I(151,181)] = {64,0}, + [I(152,181)] = {64,0}, + [I(153,181)] = {64,0}, + [I(154,181)] = {64,0}, + [I(155,181)] = {64,0}, + [I(156,181)] = {64,0}, + [I(157,181)] = {64,0}, + [I(158,181)] = {64,0}, + [I(159,181)] = {64,0}, + [I(160,181)] = {64,0}, + [I(161,181)] = {64,0}, + [I(162,181)] = {64,0}, + [I(163,181)] = {64,0}, + [I(164,181)] = {64,0}, + [I(165,181)] = {64,0}, + [I(166,181)] = {64,0}, + [I(167,181)] = {64,0}, + [I(168,181)] = {64,0}, + [I(169,181)] = {64,0}, + [I(170,181)] = {64,0}, + [I(171,181)] = {64,0}, + [I(172,181)] = {64,0}, + [I(173,181)] = {64,0}, + [I(174,181)] = {64,0}, + [I(175,181)] = {64,0}, + [I(176,181)] = {64,0}, + [I(177,181)] = {64,0}, + [I(178,181)] = {64,0}, + [I(179,181)] = {64,0}, + [I(180,181)] = {64,0}, + [I(181,181)] = {64,0}, + [I(182,181)] = {64,0}, + [I(183,181)] = {64,0}, + [I(184,181)] = {64,0}, + [I(185,181)] = {64,0}, + [I(186,181)] = {64,0}, + [I(187,181)] = {64,0}, + [I(188,181)] = {64,0}, + [I(189,181)] = {64,0}, + [I(190,181)] = {64,0}, + [I(191,181)] = {64,0}, + [I(192,181)] = {64,0}, + [I(193,181)] = {64,0}, + [I(194,181)] = {64,0}, + [I(195,181)] = {64,0}, + [I(196,181)] = {64,0}, + [I(197,181)] = {64,0}, + [I(198,181)] = {64,0}, + [I(199,181)] = {64,0}, + [I(200,181)] = {64,0}, + [I(201,181)] = {64,0}, + [I(202,181)] = {64,0}, + [I(203,181)] = {64,0}, + [I(204,181)] = {64,0}, + [I(205,181)] = {64,0}, + [I(206,181)] = {64,0}, + [I(207,181)] = {64,0}, + [I(208,181)] = {64,0}, + [I(209,181)] = {64,0}, + [I(210,181)] = {64,0}, + [I(211,181)] = {64,0}, + [I(212,181)] = {64,0}, + [I(213,181)] = {64,0}, + [I(214,181)] = {64,0}, + [I(215,181)] = {64,0}, + [I(216,181)] = {64,0}, + [I(217,181)] = {64,0}, + [I(218,181)] = {64,0}, + [I(219,181)] = {64,0}, + [I(220,181)] = {64,0}, + [I(221,181)] = {64,0}, + [I(222,181)] = {64,0}, + [I(223,181)] = {64,0}, + [I(224,181)] = {64,0}, + [I(225,181)] = {64,0}, + [I(226,181)] = {64,0}, + [I(227,181)] = {64,0}, + [I(228,181)] = {64,0}, + [I(229,181)] = {64,0}, + [I(230,181)] = {64,0}, + [I(231,181)] = {64,0}, + [I(232,181)] = {64,0}, + [I(233,181)] = {64,0}, + [I(234,181)] = {64,0}, + [I(235,181)] = {64,0}, + [I(236,181)] = {64,0}, + [I(237,181)] = {64,0}, + [I(238,181)] = {64,0}, + [I(239,181)] = {64,0}, + [I(240,181)] = {64,0}, + [I(241,181)] = {64,0}, + [I(242,181)] = {64,0}, + [I(243,181)] = {64,0}, + [I(244,181)] = {64,0}, + [I(245,181)] = {64,0}, + [I(246,181)] = {64,0}, + [I(247,181)] = {64,0}, + [I(248,181)] = {64,0}, + [I(249,181)] = {64,0}, + [I(250,181)] = {64,0}, + [I(251,181)] = {64,0}, + [I(252,181)] = {64,0}, + [I(253,181)] = {64,0}, + [I(254,181)] = {64,0}, + [I(255,181)] = {64,0}, + [I(0,182)] = {64,0}, + [I(1,182)] = {64,0}, + [I(2,182)] = {64,0}, + [I(3,182)] = {64,0}, + [I(4,182)] = {64,0}, + [I(5,182)] = {64,0}, + [I(6,182)] = {64,0}, + [I(7,182)] = {64,0}, + [I(8,182)] = {64,0}, + [I(9,182)] = {64,0}, + [I(10,182)] = {64,0}, + [I(11,182)] = {64,0}, + [I(12,182)] = {64,0}, + [I(13,182)] = {64,0}, + [I(14,182)] = {64,0}, + [I(15,182)] = {64,0}, + [I(16,182)] = {64,0}, + [I(17,182)] = {64,0}, + [I(18,182)] = {64,0}, + [I(19,182)] = {64,0}, + [I(20,182)] = {64,0}, + [I(21,182)] = {64,0}, + [I(22,182)] = {64,0}, + [I(23,182)] = {64,0}, + [I(24,182)] = {64,0}, + [I(25,182)] = {64,0}, + [I(26,182)] = {64,0}, + [I(27,182)] = {64,0}, + [I(28,182)] = {64,0}, + [I(29,182)] = {64,0}, + [I(30,182)] = {64,0}, + [I(31,182)] = {64,0}, + [I(32,182)] = {29,0xA7FFFEE}, + [I(33,182)] = {64,0}, + [I(34,182)] = {64,0}, + [I(35,182)] = {64,0}, + [I(36,182)] = {64,0}, + [I(37,182)] = {29,0xAFFFFEE}, + [I(38,182)] = {31,0x7C7FFFEE}, + [I(39,182)] = {64,0}, + [I(40,182)] = {64,0}, + [I(41,182)] = {64,0}, + [I(42,182)] = {31,0x7CFFFFEE}, + [I(43,182)] = {64,0}, + [I(44,182)] = {31,0x7D7FFFEE}, + [I(45,182)] = {29,0xB7FFFEE}, + [I(46,182)] = {29,0xBFFFFEE}, + [I(47,182)] = {29,0xC7FFFEE}, + [I(48,182)] = {28,0x7FFFEE}, + [I(49,182)] = {28,0xFFFFEE}, + [I(50,182)] = {28,0x17FFFEE}, + [I(51,182)] = {29,0xCFFFFEE}, + [I(52,182)] = {29,0xD7FFFEE}, + [I(53,182)] = {29,0xDFFFFEE}, + [I(54,182)] = {29,0xE7FFFEE}, + [I(55,182)] = {29,0xEFFFFEE}, + [I(56,182)] = {29,0xF7FFFEE}, + [I(57,182)] = {29,0xFFFFFEE}, + [I(58,182)] = {30,0x2E7FFFEE}, + [I(59,182)] = {31,0x7DFFFFEE}, + [I(60,182)] = {64,0}, + [I(61,182)] = {29,0x107FFFEE}, + [I(62,182)] = {64,0}, + [I(63,182)] = {64,0}, + [I(64,182)] = {64,0}, + [I(65,182)] = {29,0x10FFFFEE}, + [I(66,182)] = {30,0x2EFFFFEE}, + [I(67,182)] = {30,0x2F7FFFEE}, + [I(68,182)] = {30,0x2FFFFFEE}, + [I(69,182)] = {30,0x307FFFEE}, + [I(70,182)] = {30,0x30FFFFEE}, + [I(71,182)] = {30,0x317FFFEE}, + [I(72,182)] = {30,0x31FFFFEE}, + [I(73,182)] = {30,0x327FFFEE}, + [I(74,182)] = {30,0x32FFFFEE}, + [I(75,182)] = {30,0x337FFFEE}, + [I(76,182)] = {30,0x33FFFFEE}, + [I(77,182)] = {30,0x347FFFEE}, + [I(78,182)] = {30,0x34FFFFEE}, + [I(79,182)] = {30,0x357FFFEE}, + [I(80,182)] = {30,0x35FFFFEE}, + [I(81,182)] = {30,0x367FFFEE}, + [I(82,182)] = {30,0x36FFFFEE}, + [I(83,182)] = {30,0x377FFFEE}, + [I(84,182)] = {30,0x37FFFFEE}, + [I(85,182)] = {30,0x387FFFEE}, + [I(86,182)] = {30,0x38FFFFEE}, + [I(87,182)] = {30,0x397FFFEE}, + [I(88,182)] = {31,0x7E7FFFEE}, + [I(89,182)] = {30,0x39FFFFEE}, + [I(90,182)] = {31,0x7EFFFFEE}, + [I(91,182)] = {64,0}, + [I(92,182)] = {64,0}, + [I(93,182)] = {64,0}, + [I(94,182)] = {64,0}, + [I(95,182)] = {29,0x117FFFEE}, + [I(96,182)] = {64,0}, + [I(97,182)] = {28,0x1FFFFEE}, + [I(98,182)] = {29,0x11FFFFEE}, + [I(99,182)] = {28,0x27FFFEE}, + [I(100,182)] = {29,0x127FFFEE}, + [I(101,182)] = {28,0x2FFFFEE}, + [I(102,182)] = {29,0x12FFFFEE}, + [I(103,182)] = {29,0x137FFFEE}, + [I(104,182)] = {29,0x13FFFFEE}, + [I(105,182)] = {28,0x37FFFEE}, + [I(106,182)] = {30,0x3A7FFFEE}, + [I(107,182)] = {30,0x3AFFFFEE}, + [I(108,182)] = {29,0x147FFFEE}, + [I(109,182)] = {29,0x14FFFFEE}, + [I(110,182)] = {29,0x157FFFEE}, + [I(111,182)] = {28,0x3FFFFEE}, + [I(112,182)] = {29,0x15FFFFEE}, + [I(113,182)] = {30,0x3B7FFFEE}, + [I(114,182)] = {29,0x167FFFEE}, + [I(115,182)] = {28,0x47FFFEE}, + [I(116,182)] = {28,0x4FFFFEE}, + [I(117,182)] = {29,0x16FFFFEE}, + [I(118,182)] = {30,0x3BFFFFEE}, + [I(119,182)] = {30,0x3C7FFFEE}, + [I(120,182)] = {30,0x3CFFFFEE}, + [I(121,182)] = {30,0x3D7FFFEE}, + [I(122,182)] = {30,0x3DFFFFEE}, + [I(123,182)] = {64,0}, + [I(124,182)] = {64,0}, + [I(125,182)] = {64,0}, + [I(126,182)] = {64,0}, + [I(127,182)] = {64,0}, + [I(128,182)] = {64,0}, + [I(129,182)] = {64,0}, + [I(130,182)] = {64,0}, + [I(131,182)] = {64,0}, + [I(132,182)] = {64,0}, + [I(133,182)] = {64,0}, + [I(134,182)] = {64,0}, + [I(135,182)] = {64,0}, + [I(136,182)] = {64,0}, + [I(137,182)] = {64,0}, + [I(138,182)] = {64,0}, + [I(139,182)] = {64,0}, + [I(140,182)] = {64,0}, + [I(141,182)] = {64,0}, + [I(142,182)] = {64,0}, + [I(143,182)] = {64,0}, + [I(144,182)] = {64,0}, + [I(145,182)] = {64,0}, + [I(146,182)] = {64,0}, + [I(147,182)] = {64,0}, + [I(148,182)] = {64,0}, + [I(149,182)] = {64,0}, + [I(150,182)] = {64,0}, + [I(151,182)] = {64,0}, + [I(152,182)] = {64,0}, + [I(153,182)] = {64,0}, + [I(154,182)] = {64,0}, + [I(155,182)] = {64,0}, + [I(156,182)] = {64,0}, + [I(157,182)] = {64,0}, + [I(158,182)] = {64,0}, + [I(159,182)] = {64,0}, + [I(160,182)] = {64,0}, + [I(161,182)] = {64,0}, + [I(162,182)] = {64,0}, + [I(163,182)] = {64,0}, + [I(164,182)] = {64,0}, + [I(165,182)] = {64,0}, + [I(166,182)] = {64,0}, + [I(167,182)] = {64,0}, + [I(168,182)] = {64,0}, + [I(169,182)] = {64,0}, + [I(170,182)] = {64,0}, + [I(171,182)] = {64,0}, + [I(172,182)] = {64,0}, + [I(173,182)] = {64,0}, + [I(174,182)] = {64,0}, + [I(175,182)] = {64,0}, + [I(176,182)] = {64,0}, + [I(177,182)] = {64,0}, + [I(178,182)] = {64,0}, + [I(179,182)] = {64,0}, + [I(180,182)] = {64,0}, + [I(181,182)] = {64,0}, + [I(182,182)] = {64,0}, + [I(183,182)] = {64,0}, + [I(184,182)] = {64,0}, + [I(185,182)] = {64,0}, + [I(186,182)] = {64,0}, + [I(187,182)] = {64,0}, + [I(188,182)] = {64,0}, + [I(189,182)] = {64,0}, + [I(190,182)] = {64,0}, + [I(191,182)] = {64,0}, + [I(192,182)] = {64,0}, + [I(193,182)] = {64,0}, + [I(194,182)] = {64,0}, + [I(195,182)] = {64,0}, + [I(196,182)] = {64,0}, + [I(197,182)] = {64,0}, + [I(198,182)] = {64,0}, + [I(199,182)] = {64,0}, + [I(200,182)] = {64,0}, + [I(201,182)] = {64,0}, + [I(202,182)] = {64,0}, + [I(203,182)] = {64,0}, + [I(204,182)] = {64,0}, + [I(205,182)] = {64,0}, + [I(206,182)] = {64,0}, + [I(207,182)] = {64,0}, + [I(208,182)] = {64,0}, + [I(209,182)] = {64,0}, + [I(210,182)] = {64,0}, + [I(211,182)] = {64,0}, + [I(212,182)] = {64,0}, + [I(213,182)] = {64,0}, + [I(214,182)] = {64,0}, + [I(215,182)] = {64,0}, + [I(216,182)] = {64,0}, + [I(217,182)] = {64,0}, + [I(218,182)] = {64,0}, + [I(219,182)] = {64,0}, + [I(220,182)] = {64,0}, + [I(221,182)] = {64,0}, + [I(222,182)] = {64,0}, + [I(223,182)] = {64,0}, + [I(224,182)] = {64,0}, + [I(225,182)] = {64,0}, + [I(226,182)] = {64,0}, + [I(227,182)] = {64,0}, + [I(228,182)] = {64,0}, + [I(229,182)] = {64,0}, + [I(230,182)] = {64,0}, + [I(231,182)] = {64,0}, + [I(232,182)] = {64,0}, + [I(233,182)] = {64,0}, + [I(234,182)] = {64,0}, + [I(235,182)] = {64,0}, + [I(236,182)] = {64,0}, + [I(237,182)] = {64,0}, + [I(238,182)] = {64,0}, + [I(239,182)] = {64,0}, + [I(240,182)] = {64,0}, + [I(241,182)] = {64,0}, + [I(242,182)] = {64,0}, + [I(243,182)] = {64,0}, + [I(244,182)] = {64,0}, + [I(245,182)] = {64,0}, + [I(246,182)] = {64,0}, + [I(247,182)] = {64,0}, + [I(248,182)] = {64,0}, + [I(249,182)] = {64,0}, + [I(250,182)] = {64,0}, + [I(251,182)] = {64,0}, + [I(252,182)] = {64,0}, + [I(253,182)] = {64,0}, + [I(254,182)] = {64,0}, + [I(255,182)] = {64,0}, + [I(0,183)] = {64,0}, + [I(1,183)] = {64,0}, + [I(2,183)] = {64,0}, + [I(3,183)] = {64,0}, + [I(4,183)] = {64,0}, + [I(5,183)] = {64,0}, + [I(6,183)] = {64,0}, + [I(7,183)] = {64,0}, + [I(8,183)] = {64,0}, + [I(9,183)] = {64,0}, + [I(10,183)] = {64,0}, + [I(11,183)] = {64,0}, + [I(12,183)] = {64,0}, + [I(13,183)] = {64,0}, + [I(14,183)] = {64,0}, + [I(15,183)] = {64,0}, + [I(16,183)] = {64,0}, + [I(17,183)] = {64,0}, + [I(18,183)] = {64,0}, + [I(19,183)] = {64,0}, + [I(20,183)] = {64,0}, + [I(21,183)] = {64,0}, + [I(22,183)] = {64,0}, + [I(23,183)] = {64,0}, + [I(24,183)] = {64,0}, + [I(25,183)] = {64,0}, + [I(26,183)] = {64,0}, + [I(27,183)] = {64,0}, + [I(28,183)] = {64,0}, + [I(29,183)] = {64,0}, + [I(30,183)] = {64,0}, + [I(31,183)] = {64,0}, + [I(32,183)] = {29,0xA7FFFEF}, + [I(33,183)] = {64,0}, + [I(34,183)] = {64,0}, + [I(35,183)] = {64,0}, + [I(36,183)] = {64,0}, + [I(37,183)] = {29,0xAFFFFEF}, + [I(38,183)] = {31,0x7C7FFFEF}, + [I(39,183)] = {64,0}, + [I(40,183)] = {64,0}, + [I(41,183)] = {64,0}, + [I(42,183)] = {31,0x7CFFFFEF}, + [I(43,183)] = {64,0}, + [I(44,183)] = {31,0x7D7FFFEF}, + [I(45,183)] = {29,0xB7FFFEF}, + [I(46,183)] = {29,0xBFFFFEF}, + [I(47,183)] = {29,0xC7FFFEF}, + [I(48,183)] = {28,0x7FFFEF}, + [I(49,183)] = {28,0xFFFFEF}, + [I(50,183)] = {28,0x17FFFEF}, + [I(51,183)] = {29,0xCFFFFEF}, + [I(52,183)] = {29,0xD7FFFEF}, + [I(53,183)] = {29,0xDFFFFEF}, + [I(54,183)] = {29,0xE7FFFEF}, + [I(55,183)] = {29,0xEFFFFEF}, + [I(56,183)] = {29,0xF7FFFEF}, + [I(57,183)] = {29,0xFFFFFEF}, + [I(58,183)] = {30,0x2E7FFFEF}, + [I(59,183)] = {31,0x7DFFFFEF}, + [I(60,183)] = {64,0}, + [I(61,183)] = {29,0x107FFFEF}, + [I(62,183)] = {64,0}, + [I(63,183)] = {64,0}, + [I(64,183)] = {64,0}, + [I(65,183)] = {29,0x10FFFFEF}, + [I(66,183)] = {30,0x2EFFFFEF}, + [I(67,183)] = {30,0x2F7FFFEF}, + [I(68,183)] = {30,0x2FFFFFEF}, + [I(69,183)] = {30,0x307FFFEF}, + [I(70,183)] = {30,0x30FFFFEF}, + [I(71,183)] = {30,0x317FFFEF}, + [I(72,183)] = {30,0x31FFFFEF}, + [I(73,183)] = {30,0x327FFFEF}, + [I(74,183)] = {30,0x32FFFFEF}, + [I(75,183)] = {30,0x337FFFEF}, + [I(76,183)] = {30,0x33FFFFEF}, + [I(77,183)] = {30,0x347FFFEF}, + [I(78,183)] = {30,0x34FFFFEF}, + [I(79,183)] = {30,0x357FFFEF}, + [I(80,183)] = {30,0x35FFFFEF}, + [I(81,183)] = {30,0x367FFFEF}, + [I(82,183)] = {30,0x36FFFFEF}, + [I(83,183)] = {30,0x377FFFEF}, + [I(84,183)] = {30,0x37FFFFEF}, + [I(85,183)] = {30,0x387FFFEF}, + [I(86,183)] = {30,0x38FFFFEF}, + [I(87,183)] = {30,0x397FFFEF}, + [I(88,183)] = {31,0x7E7FFFEF}, + [I(89,183)] = {30,0x39FFFFEF}, + [I(90,183)] = {31,0x7EFFFFEF}, + [I(91,183)] = {64,0}, + [I(92,183)] = {64,0}, + [I(93,183)] = {64,0}, + [I(94,183)] = {64,0}, + [I(95,183)] = {29,0x117FFFEF}, + [I(96,183)] = {64,0}, + [I(97,183)] = {28,0x1FFFFEF}, + [I(98,183)] = {29,0x11FFFFEF}, + [I(99,183)] = {28,0x27FFFEF}, + [I(100,183)] = {29,0x127FFFEF}, + [I(101,183)] = {28,0x2FFFFEF}, + [I(102,183)] = {29,0x12FFFFEF}, + [I(103,183)] = {29,0x137FFFEF}, + [I(104,183)] = {29,0x13FFFFEF}, + [I(105,183)] = {28,0x37FFFEF}, + [I(106,183)] = {30,0x3A7FFFEF}, + [I(107,183)] = {30,0x3AFFFFEF}, + [I(108,183)] = {29,0x147FFFEF}, + [I(109,183)] = {29,0x14FFFFEF}, + [I(110,183)] = {29,0x157FFFEF}, + [I(111,183)] = {28,0x3FFFFEF}, + [I(112,183)] = {29,0x15FFFFEF}, + [I(113,183)] = {30,0x3B7FFFEF}, + [I(114,183)] = {29,0x167FFFEF}, + [I(115,183)] = {28,0x47FFFEF}, + [I(116,183)] = {28,0x4FFFFEF}, + [I(117,183)] = {29,0x16FFFFEF}, + [I(118,183)] = {30,0x3BFFFFEF}, + [I(119,183)] = {30,0x3C7FFFEF}, + [I(120,183)] = {30,0x3CFFFFEF}, + [I(121,183)] = {30,0x3D7FFFEF}, + [I(122,183)] = {30,0x3DFFFFEF}, + [I(123,183)] = {64,0}, + [I(124,183)] = {64,0}, + [I(125,183)] = {64,0}, + [I(126,183)] = {64,0}, + [I(127,183)] = {64,0}, + [I(128,183)] = {64,0}, + [I(129,183)] = {64,0}, + [I(130,183)] = {64,0}, + [I(131,183)] = {64,0}, + [I(132,183)] = {64,0}, + [I(133,183)] = {64,0}, + [I(134,183)] = {64,0}, + [I(135,183)] = {64,0}, + [I(136,183)] = {64,0}, + [I(137,183)] = {64,0}, + [I(138,183)] = {64,0}, + [I(139,183)] = {64,0}, + [I(140,183)] = {64,0}, + [I(141,183)] = {64,0}, + [I(142,183)] = {64,0}, + [I(143,183)] = {64,0}, + [I(144,183)] = {64,0}, + [I(145,183)] = {64,0}, + [I(146,183)] = {64,0}, + [I(147,183)] = {64,0}, + [I(148,183)] = {64,0}, + [I(149,183)] = {64,0}, + [I(150,183)] = {64,0}, + [I(151,183)] = {64,0}, + [I(152,183)] = {64,0}, + [I(153,183)] = {64,0}, + [I(154,183)] = {64,0}, + [I(155,183)] = {64,0}, + [I(156,183)] = {64,0}, + [I(157,183)] = {64,0}, + [I(158,183)] = {64,0}, + [I(159,183)] = {64,0}, + [I(160,183)] = {64,0}, + [I(161,183)] = {64,0}, + [I(162,183)] = {64,0}, + [I(163,183)] = {64,0}, + [I(164,183)] = {64,0}, + [I(165,183)] = {64,0}, + [I(166,183)] = {64,0}, + [I(167,183)] = {64,0}, + [I(168,183)] = {64,0}, + [I(169,183)] = {64,0}, + [I(170,183)] = {64,0}, + [I(171,183)] = {64,0}, + [I(172,183)] = {64,0}, + [I(173,183)] = {64,0}, + [I(174,183)] = {64,0}, + [I(175,183)] = {64,0}, + [I(176,183)] = {64,0}, + [I(177,183)] = {64,0}, + [I(178,183)] = {64,0}, + [I(179,183)] = {64,0}, + [I(180,183)] = {64,0}, + [I(181,183)] = {64,0}, + [I(182,183)] = {64,0}, + [I(183,183)] = {64,0}, + [I(184,183)] = {64,0}, + [I(185,183)] = {64,0}, + [I(186,183)] = {64,0}, + [I(187,183)] = {64,0}, + [I(188,183)] = {64,0}, + [I(189,183)] = {64,0}, + [I(190,183)] = {64,0}, + [I(191,183)] = {64,0}, + [I(192,183)] = {64,0}, + [I(193,183)] = {64,0}, + [I(194,183)] = {64,0}, + [I(195,183)] = {64,0}, + [I(196,183)] = {64,0}, + [I(197,183)] = {64,0}, + [I(198,183)] = {64,0}, + [I(199,183)] = {64,0}, + [I(200,183)] = {64,0}, + [I(201,183)] = {64,0}, + [I(202,183)] = {64,0}, + [I(203,183)] = {64,0}, + [I(204,183)] = {64,0}, + [I(205,183)] = {64,0}, + [I(206,183)] = {64,0}, + [I(207,183)] = {64,0}, + [I(208,183)] = {64,0}, + [I(209,183)] = {64,0}, + [I(210,183)] = {64,0}, + [I(211,183)] = {64,0}, + [I(212,183)] = {64,0}, + [I(213,183)] = {64,0}, + [I(214,183)] = {64,0}, + [I(215,183)] = {64,0}, + [I(216,183)] = {64,0}, + [I(217,183)] = {64,0}, + [I(218,183)] = {64,0}, + [I(219,183)] = {64,0}, + [I(220,183)] = {64,0}, + [I(221,183)] = {64,0}, + [I(222,183)] = {64,0}, + [I(223,183)] = {64,0}, + [I(224,183)] = {64,0}, + [I(225,183)] = {64,0}, + [I(226,183)] = {64,0}, + [I(227,183)] = {64,0}, + [I(228,183)] = {64,0}, + [I(229,183)] = {64,0}, + [I(230,183)] = {64,0}, + [I(231,183)] = {64,0}, + [I(232,183)] = {64,0}, + [I(233,183)] = {64,0}, + [I(234,183)] = {64,0}, + [I(235,183)] = {64,0}, + [I(236,183)] = {64,0}, + [I(237,183)] = {64,0}, + [I(238,183)] = {64,0}, + [I(239,183)] = {64,0}, + [I(240,183)] = {64,0}, + [I(241,183)] = {64,0}, + [I(242,183)] = {64,0}, + [I(243,183)] = {64,0}, + [I(244,183)] = {64,0}, + [I(245,183)] = {64,0}, + [I(246,183)] = {64,0}, + [I(247,183)] = {64,0}, + [I(248,183)] = {64,0}, + [I(249,183)] = {64,0}, + [I(250,183)] = {64,0}, + [I(251,183)] = {64,0}, + [I(252,183)] = {64,0}, + [I(253,183)] = {64,0}, + [I(254,183)] = {64,0}, + [I(255,183)] = {64,0}, + [I(0,184)] = {64,0}, + [I(1,184)] = {64,0}, + [I(2,184)] = {64,0}, + [I(3,184)] = {64,0}, + [I(4,184)] = {64,0}, + [I(5,184)] = {64,0}, + [I(6,184)] = {64,0}, + [I(7,184)] = {64,0}, + [I(8,184)] = {64,0}, + [I(9,184)] = {64,0}, + [I(10,184)] = {64,0}, + [I(11,184)] = {64,0}, + [I(12,184)] = {64,0}, + [I(13,184)] = {64,0}, + [I(14,184)] = {64,0}, + [I(15,184)] = {64,0}, + [I(16,184)] = {64,0}, + [I(17,184)] = {64,0}, + [I(18,184)] = {64,0}, + [I(19,184)] = {64,0}, + [I(20,184)] = {64,0}, + [I(21,184)] = {64,0}, + [I(22,184)] = {64,0}, + [I(23,184)] = {64,0}, + [I(24,184)] = {64,0}, + [I(25,184)] = {64,0}, + [I(26,184)] = {64,0}, + [I(27,184)] = {64,0}, + [I(28,184)] = {64,0}, + [I(29,184)] = {64,0}, + [I(30,184)] = {64,0}, + [I(31,184)] = {64,0}, + [I(32,184)] = {26,0x14FFFEA}, + [I(33,184)] = {30,0x3F8FFFEA}, + [I(34,184)] = {30,0x3F9FFFEA}, + [I(35,184)] = {X32,0xFFAFFFEA}, + [I(36,184)] = {64,0}, + [I(37,184)] = {26,0x15FFFEA}, + [I(38,184)] = {28,0xF8FFFEA}, + [I(39,184)] = {31,0x7FAFFFEA}, + [I(40,184)] = {30,0x3FAFFFEA}, + [I(41,184)] = {30,0x3FBFFFEA}, + [I(42,184)] = {28,0xF9FFFEA}, + [I(43,184)] = {31,0x7FBFFFEA}, + [I(44,184)] = {28,0xFAFFFEA}, + [I(45,184)] = {26,0x16FFFEA}, + [I(46,184)] = {26,0x17FFFEA}, + [I(47,184)] = {26,0x18FFFEA}, + [I(48,184)] = {25,0xFFFEA}, + [I(49,184)] = {25,0x1FFFEA}, + [I(50,184)] = {25,0x2FFFEA}, + [I(51,184)] = {26,0x19FFFEA}, + [I(52,184)] = {26,0x1AFFFEA}, + [I(53,184)] = {26,0x1BFFFEA}, + [I(54,184)] = {26,0x1CFFFEA}, + [I(55,184)] = {26,0x1DFFFEA}, + [I(56,184)] = {26,0x1EFFFEA}, + [I(57,184)] = {26,0x1FFFFEA}, + [I(58,184)] = {27,0x5CFFFEA}, + [I(59,184)] = {28,0xFBFFFEA}, + [I(60,184)] = {64,0}, + [I(61,184)] = {26,0x20FFFEA}, + [I(62,184)] = {X32,0xFFBFFFEA}, + [I(63,184)] = {30,0x3FCFFFEA}, + [I(64,184)] = {64,0}, + [I(65,184)] = {26,0x21FFFEA}, + [I(66,184)] = {27,0x5DFFFEA}, + [I(67,184)] = {27,0x5EFFFEA}, + [I(68,184)] = {27,0x5FFFFEA}, + [I(69,184)] = {27,0x60FFFEA}, + [I(70,184)] = {27,0x61FFFEA}, + [I(71,184)] = {27,0x62FFFEA}, + [I(72,184)] = {27,0x63FFFEA}, + [I(73,184)] = {27,0x64FFFEA}, + [I(74,184)] = {27,0x65FFFEA}, + [I(75,184)] = {27,0x66FFFEA}, + [I(76,184)] = {27,0x67FFFEA}, + [I(77,184)] = {27,0x68FFFEA}, + [I(78,184)] = {27,0x69FFFEA}, + [I(79,184)] = {27,0x6AFFFEA}, + [I(80,184)] = {27,0x6BFFFEA}, + [I(81,184)] = {27,0x6CFFFEA}, + [I(82,184)] = {27,0x6DFFFEA}, + [I(83,184)] = {27,0x6EFFFEA}, + [I(84,184)] = {27,0x6FFFFEA}, + [I(85,184)] = {27,0x70FFFEA}, + [I(86,184)] = {27,0x71FFFEA}, + [I(87,184)] = {27,0x72FFFEA}, + [I(88,184)] = {28,0xFCFFFEA}, + [I(89,184)] = {27,0x73FFFEA}, + [I(90,184)] = {28,0xFDFFFEA}, + [I(91,184)] = {64,0}, + [I(92,184)] = {64,0}, + [I(93,184)] = {64,0}, + [I(94,184)] = {64,0}, + [I(95,184)] = {26,0x22FFFEA}, + [I(96,184)] = {64,0}, + [I(97,184)] = {25,0x3FFFEA}, + [I(98,184)] = {26,0x23FFFEA}, + [I(99,184)] = {25,0x4FFFEA}, + [I(100,184)] = {26,0x24FFFEA}, + [I(101,184)] = {25,0x5FFFEA}, + [I(102,184)] = {26,0x25FFFEA}, + [I(103,184)] = {26,0x26FFFEA}, + [I(104,184)] = {26,0x27FFFEA}, + [I(105,184)] = {25,0x6FFFEA}, + [I(106,184)] = {27,0x74FFFEA}, + [I(107,184)] = {27,0x75FFFEA}, + [I(108,184)] = {26,0x28FFFEA}, + [I(109,184)] = {26,0x29FFFEA}, + [I(110,184)] = {26,0x2AFFFEA}, + [I(111,184)] = {25,0x7FFFEA}, + [I(112,184)] = {26,0x2BFFFEA}, + [I(113,184)] = {27,0x76FFFEA}, + [I(114,184)] = {26,0x2CFFFEA}, + [I(115,184)] = {25,0x8FFFEA}, + [I(116,184)] = {25,0x9FFFEA}, + [I(117,184)] = {26,0x2DFFFEA}, + [I(118,184)] = {27,0x77FFFEA}, + [I(119,184)] = {27,0x78FFFEA}, + [I(120,184)] = {27,0x79FFFEA}, + [I(121,184)] = {27,0x7AFFFEA}, + [I(122,184)] = {27,0x7BFFFEA}, + [I(123,184)] = {64,0}, + [I(124,184)] = {31,0x7FCFFFEA}, + [I(125,184)] = {64,0}, + [I(126,184)] = {64,0}, + [I(127,184)] = {64,0}, + [I(128,184)] = {64,0}, + [I(129,184)] = {64,0}, + [I(130,184)] = {64,0}, + [I(131,184)] = {64,0}, + [I(132,184)] = {64,0}, + [I(133,184)] = {64,0}, + [I(134,184)] = {64,0}, + [I(135,184)] = {64,0}, + [I(136,184)] = {64,0}, + [I(137,184)] = {64,0}, + [I(138,184)] = {64,0}, + [I(139,184)] = {64,0}, + [I(140,184)] = {64,0}, + [I(141,184)] = {64,0}, + [I(142,184)] = {64,0}, + [I(143,184)] = {64,0}, + [I(144,184)] = {64,0}, + [I(145,184)] = {64,0}, + [I(146,184)] = {64,0}, + [I(147,184)] = {64,0}, + [I(148,184)] = {64,0}, + [I(149,184)] = {64,0}, + [I(150,184)] = {64,0}, + [I(151,184)] = {64,0}, + [I(152,184)] = {64,0}, + [I(153,184)] = {64,0}, + [I(154,184)] = {64,0}, + [I(155,184)] = {64,0}, + [I(156,184)] = {64,0}, + [I(157,184)] = {64,0}, + [I(158,184)] = {64,0}, + [I(159,184)] = {64,0}, + [I(160,184)] = {64,0}, + [I(161,184)] = {64,0}, + [I(162,184)] = {64,0}, + [I(163,184)] = {64,0}, + [I(164,184)] = {64,0}, + [I(165,184)] = {64,0}, + [I(166,184)] = {64,0}, + [I(167,184)] = {64,0}, + [I(168,184)] = {64,0}, + [I(169,184)] = {64,0}, + [I(170,184)] = {64,0}, + [I(171,184)] = {64,0}, + [I(172,184)] = {64,0}, + [I(173,184)] = {64,0}, + [I(174,184)] = {64,0}, + [I(175,184)] = {64,0}, + [I(176,184)] = {64,0}, + [I(177,184)] = {64,0}, + [I(178,184)] = {64,0}, + [I(179,184)] = {64,0}, + [I(180,184)] = {64,0}, + [I(181,184)] = {64,0}, + [I(182,184)] = {64,0}, + [I(183,184)] = {64,0}, + [I(184,184)] = {64,0}, + [I(185,184)] = {64,0}, + [I(186,184)] = {64,0}, + [I(187,184)] = {64,0}, + [I(188,184)] = {64,0}, + [I(189,184)] = {64,0}, + [I(190,184)] = {64,0}, + [I(191,184)] = {64,0}, + [I(192,184)] = {64,0}, + [I(193,184)] = {64,0}, + [I(194,184)] = {64,0}, + [I(195,184)] = {64,0}, + [I(196,184)] = {64,0}, + [I(197,184)] = {64,0}, + [I(198,184)] = {64,0}, + [I(199,184)] = {64,0}, + [I(200,184)] = {64,0}, + [I(201,184)] = {64,0}, + [I(202,184)] = {64,0}, + [I(203,184)] = {64,0}, + [I(204,184)] = {64,0}, + [I(205,184)] = {64,0}, + [I(206,184)] = {64,0}, + [I(207,184)] = {64,0}, + [I(208,184)] = {64,0}, + [I(209,184)] = {64,0}, + [I(210,184)] = {64,0}, + [I(211,184)] = {64,0}, + [I(212,184)] = {64,0}, + [I(213,184)] = {64,0}, + [I(214,184)] = {64,0}, + [I(215,184)] = {64,0}, + [I(216,184)] = {64,0}, + [I(217,184)] = {64,0}, + [I(218,184)] = {64,0}, + [I(219,184)] = {64,0}, + [I(220,184)] = {64,0}, + [I(221,184)] = {64,0}, + [I(222,184)] = {64,0}, + [I(223,184)] = {64,0}, + [I(224,184)] = {64,0}, + [I(225,184)] = {64,0}, + [I(226,184)] = {64,0}, + [I(227,184)] = {64,0}, + [I(228,184)] = {64,0}, + [I(229,184)] = {64,0}, + [I(230,184)] = {64,0}, + [I(231,184)] = {64,0}, + [I(232,184)] = {64,0}, + [I(233,184)] = {64,0}, + [I(234,184)] = {64,0}, + [I(235,184)] = {64,0}, + [I(236,184)] = {64,0}, + [I(237,184)] = {64,0}, + [I(238,184)] = {64,0}, + [I(239,184)] = {64,0}, + [I(240,184)] = {64,0}, + [I(241,184)] = {64,0}, + [I(242,184)] = {64,0}, + [I(243,184)] = {64,0}, + [I(244,184)] = {64,0}, + [I(245,184)] = {64,0}, + [I(246,184)] = {64,0}, + [I(247,184)] = {64,0}, + [I(248,184)] = {64,0}, + [I(249,184)] = {64,0}, + [I(250,184)] = {64,0}, + [I(251,184)] = {64,0}, + [I(252,184)] = {64,0}, + [I(253,184)] = {64,0}, + [I(254,184)] = {64,0}, + [I(255,184)] = {64,0}, + [I(0,185)] = {64,0}, + [I(1,185)] = {64,0}, + [I(2,185)] = {64,0}, + [I(3,185)] = {64,0}, + [I(4,185)] = {64,0}, + [I(5,185)] = {64,0}, + [I(6,185)] = {64,0}, + [I(7,185)] = {64,0}, + [I(8,185)] = {64,0}, + [I(9,185)] = {64,0}, + [I(10,185)] = {64,0}, + [I(11,185)] = {64,0}, + [I(12,185)] = {64,0}, + [I(13,185)] = {64,0}, + [I(14,185)] = {64,0}, + [I(15,185)] = {64,0}, + [I(16,185)] = {64,0}, + [I(17,185)] = {64,0}, + [I(18,185)] = {64,0}, + [I(19,185)] = {64,0}, + [I(20,185)] = {64,0}, + [I(21,185)] = {64,0}, + [I(22,185)] = {64,0}, + [I(23,185)] = {64,0}, + [I(24,185)] = {64,0}, + [I(25,185)] = {64,0}, + [I(26,185)] = {64,0}, + [I(27,185)] = {64,0}, + [I(28,185)] = {64,0}, + [I(29,185)] = {64,0}, + [I(30,185)] = {64,0}, + [I(31,185)] = {64,0}, + [I(32,185)] = {28,0x53FFFE2}, + [I(33,185)] = {X32,0xFE3FFFE2}, + [I(34,185)] = {X32,0xFE7FFFE2}, + [I(35,185)] = {64,0}, + [I(36,185)] = {64,0}, + [I(37,185)] = {28,0x57FFFE2}, + [I(38,185)] = {30,0x3E3FFFE2}, + [I(39,185)] = {64,0}, + [I(40,185)] = {X32,0xFEBFFFE2}, + [I(41,185)] = {X32,0xFEFFFFE2}, + [I(42,185)] = {30,0x3E7FFFE2}, + [I(43,185)] = {64,0}, + [I(44,185)] = {30,0x3EBFFFE2}, + [I(45,185)] = {28,0x5BFFFE2}, + [I(46,185)] = {28,0x5FFFFE2}, + [I(47,185)] = {28,0x63FFFE2}, + [I(48,185)] = {27,0x3FFFE2}, + [I(49,185)] = {27,0x7FFFE2}, + [I(50,185)] = {27,0xBFFFE2}, + [I(51,185)] = {28,0x67FFFE2}, + [I(52,185)] = {28,0x6BFFFE2}, + [I(53,185)] = {28,0x6FFFFE2}, + [I(54,185)] = {28,0x73FFFE2}, + [I(55,185)] = {28,0x77FFFE2}, + [I(56,185)] = {28,0x7BFFFE2}, + [I(57,185)] = {28,0x7FFFFE2}, + [I(58,185)] = {29,0x173FFFE2}, + [I(59,185)] = {30,0x3EFFFFE2}, + [I(60,185)] = {64,0}, + [I(61,185)] = {28,0x83FFFE2}, + [I(62,185)] = {64,0}, + [I(63,185)] = {X32,0xFF3FFFE2}, + [I(64,185)] = {64,0}, + [I(65,185)] = {28,0x87FFFE2}, + [I(66,185)] = {29,0x177FFFE2}, + [I(67,185)] = {29,0x17BFFFE2}, + [I(68,185)] = {29,0x17FFFFE2}, + [I(69,185)] = {29,0x183FFFE2}, + [I(70,185)] = {29,0x187FFFE2}, + [I(71,185)] = {29,0x18BFFFE2}, + [I(72,185)] = {29,0x18FFFFE2}, + [I(73,185)] = {29,0x193FFFE2}, + [I(74,185)] = {29,0x197FFFE2}, + [I(75,185)] = {29,0x19BFFFE2}, + [I(76,185)] = {29,0x19FFFFE2}, + [I(77,185)] = {29,0x1A3FFFE2}, + [I(78,185)] = {29,0x1A7FFFE2}, + [I(79,185)] = {29,0x1ABFFFE2}, + [I(80,185)] = {29,0x1AFFFFE2}, + [I(81,185)] = {29,0x1B3FFFE2}, + [I(82,185)] = {29,0x1B7FFFE2}, + [I(83,185)] = {29,0x1BBFFFE2}, + [I(84,185)] = {29,0x1BFFFFE2}, + [I(85,185)] = {29,0x1C3FFFE2}, + [I(86,185)] = {29,0x1C7FFFE2}, + [I(87,185)] = {29,0x1CBFFFE2}, + [I(88,185)] = {30,0x3F3FFFE2}, + [I(89,185)] = {29,0x1CFFFFE2}, + [I(90,185)] = {30,0x3F7FFFE2}, + [I(91,185)] = {64,0}, + [I(92,185)] = {64,0}, + [I(93,185)] = {64,0}, + [I(94,185)] = {64,0}, + [I(95,185)] = {28,0x8BFFFE2}, + [I(96,185)] = {64,0}, + [I(97,185)] = {27,0xFFFFE2}, + [I(98,185)] = {28,0x8FFFFE2}, + [I(99,185)] = {27,0x13FFFE2}, + [I(100,185)] = {28,0x93FFFE2}, + [I(101,185)] = {27,0x17FFFE2}, + [I(102,185)] = {28,0x97FFFE2}, + [I(103,185)] = {28,0x9BFFFE2}, + [I(104,185)] = {28,0x9FFFFE2}, + [I(105,185)] = {27,0x1BFFFE2}, + [I(106,185)] = {29,0x1D3FFFE2}, + [I(107,185)] = {29,0x1D7FFFE2}, + [I(108,185)] = {28,0xA3FFFE2}, + [I(109,185)] = {28,0xA7FFFE2}, + [I(110,185)] = {28,0xABFFFE2}, + [I(111,185)] = {27,0x1FFFFE2}, + [I(112,185)] = {28,0xAFFFFE2}, + [I(113,185)] = {29,0x1DBFFFE2}, + [I(114,185)] = {28,0xB3FFFE2}, + [I(115,185)] = {27,0x23FFFE2}, + [I(116,185)] = {27,0x27FFFE2}, + [I(117,185)] = {28,0xB7FFFE2}, + [I(118,185)] = {29,0x1DFFFFE2}, + [I(119,185)] = {29,0x1E3FFFE2}, + [I(120,185)] = {29,0x1E7FFFE2}, + [I(121,185)] = {29,0x1EBFFFE2}, + [I(122,185)] = {29,0x1EFFFFE2}, + [I(123,185)] = {64,0}, + [I(124,185)] = {64,0}, + [I(125,185)] = {64,0}, + [I(126,185)] = {64,0}, + [I(127,185)] = {64,0}, + [I(128,185)] = {64,0}, + [I(129,185)] = {64,0}, + [I(130,185)] = {64,0}, + [I(131,185)] = {64,0}, + [I(132,185)] = {64,0}, + [I(133,185)] = {64,0}, + [I(134,185)] = {64,0}, + [I(135,185)] = {64,0}, + [I(136,185)] = {64,0}, + [I(137,185)] = {64,0}, + [I(138,185)] = {64,0}, + [I(139,185)] = {64,0}, + [I(140,185)] = {64,0}, + [I(141,185)] = {64,0}, + [I(142,185)] = {64,0}, + [I(143,185)] = {64,0}, + [I(144,185)] = {64,0}, + [I(145,185)] = {64,0}, + [I(146,185)] = {64,0}, + [I(147,185)] = {64,0}, + [I(148,185)] = {64,0}, + [I(149,185)] = {64,0}, + [I(150,185)] = {64,0}, + [I(151,185)] = {64,0}, + [I(152,185)] = {64,0}, + [I(153,185)] = {64,0}, + [I(154,185)] = {64,0}, + [I(155,185)] = {64,0}, + [I(156,185)] = {64,0}, + [I(157,185)] = {64,0}, + [I(158,185)] = {64,0}, + [I(159,185)] = {64,0}, + [I(160,185)] = {64,0}, + [I(161,185)] = {64,0}, + [I(162,185)] = {64,0}, + [I(163,185)] = {64,0}, + [I(164,185)] = {64,0}, + [I(165,185)] = {64,0}, + [I(166,185)] = {64,0}, + [I(167,185)] = {64,0}, + [I(168,185)] = {64,0}, + [I(169,185)] = {64,0}, + [I(170,185)] = {64,0}, + [I(171,185)] = {64,0}, + [I(172,185)] = {64,0}, + [I(173,185)] = {64,0}, + [I(174,185)] = {64,0}, + [I(175,185)] = {64,0}, + [I(176,185)] = {64,0}, + [I(177,185)] = {64,0}, + [I(178,185)] = {64,0}, + [I(179,185)] = {64,0}, + [I(180,185)] = {64,0}, + [I(181,185)] = {64,0}, + [I(182,185)] = {64,0}, + [I(183,185)] = {64,0}, + [I(184,185)] = {64,0}, + [I(185,185)] = {64,0}, + [I(186,185)] = {64,0}, + [I(187,185)] = {64,0}, + [I(188,185)] = {64,0}, + [I(189,185)] = {64,0}, + [I(190,185)] = {64,0}, + [I(191,185)] = {64,0}, + [I(192,185)] = {64,0}, + [I(193,185)] = {64,0}, + [I(194,185)] = {64,0}, + [I(195,185)] = {64,0}, + [I(196,185)] = {64,0}, + [I(197,185)] = {64,0}, + [I(198,185)] = {64,0}, + [I(199,185)] = {64,0}, + [I(200,185)] = {64,0}, + [I(201,185)] = {64,0}, + [I(202,185)] = {64,0}, + [I(203,185)] = {64,0}, + [I(204,185)] = {64,0}, + [I(205,185)] = {64,0}, + [I(206,185)] = {64,0}, + [I(207,185)] = {64,0}, + [I(208,185)] = {64,0}, + [I(209,185)] = {64,0}, + [I(210,185)] = {64,0}, + [I(211,185)] = {64,0}, + [I(212,185)] = {64,0}, + [I(213,185)] = {64,0}, + [I(214,185)] = {64,0}, + [I(215,185)] = {64,0}, + [I(216,185)] = {64,0}, + [I(217,185)] = {64,0}, + [I(218,185)] = {64,0}, + [I(219,185)] = {64,0}, + [I(220,185)] = {64,0}, + [I(221,185)] = {64,0}, + [I(222,185)] = {64,0}, + [I(223,185)] = {64,0}, + [I(224,185)] = {64,0}, + [I(225,185)] = {64,0}, + [I(226,185)] = {64,0}, + [I(227,185)] = {64,0}, + [I(228,185)] = {64,0}, + [I(229,185)] = {64,0}, + [I(230,185)] = {64,0}, + [I(231,185)] = {64,0}, + [I(232,185)] = {64,0}, + [I(233,185)] = {64,0}, + [I(234,185)] = {64,0}, + [I(235,185)] = {64,0}, + [I(236,185)] = {64,0}, + [I(237,185)] = {64,0}, + [I(238,185)] = {64,0}, + [I(239,185)] = {64,0}, + [I(240,185)] = {64,0}, + [I(241,185)] = {64,0}, + [I(242,185)] = {64,0}, + [I(243,185)] = {64,0}, + [I(244,185)] = {64,0}, + [I(245,185)] = {64,0}, + [I(246,185)] = {64,0}, + [I(247,185)] = {64,0}, + [I(248,185)] = {64,0}, + [I(249,185)] = {64,0}, + [I(250,185)] = {64,0}, + [I(251,185)] = {64,0}, + [I(252,185)] = {64,0}, + [I(253,185)] = {64,0}, + [I(254,185)] = {64,0}, + [I(255,185)] = {64,0}, + [I(0,186)] = {64,0}, + [I(1,186)] = {64,0}, + [I(2,186)] = {64,0}, + [I(3,186)] = {64,0}, + [I(4,186)] = {64,0}, + [I(5,186)] = {64,0}, + [I(6,186)] = {64,0}, + [I(7,186)] = {64,0}, + [I(8,186)] = {64,0}, + [I(9,186)] = {64,0}, + [I(10,186)] = {64,0}, + [I(11,186)] = {64,0}, + [I(12,186)] = {64,0}, + [I(13,186)] = {64,0}, + [I(14,186)] = {64,0}, + [I(15,186)] = {64,0}, + [I(16,186)] = {64,0}, + [I(17,186)] = {64,0}, + [I(18,186)] = {64,0}, + [I(19,186)] = {64,0}, + [I(20,186)] = {64,0}, + [I(21,186)] = {64,0}, + [I(22,186)] = {64,0}, + [I(23,186)] = {64,0}, + [I(24,186)] = {64,0}, + [I(25,186)] = {64,0}, + [I(26,186)] = {64,0}, + [I(27,186)] = {64,0}, + [I(28,186)] = {64,0}, + [I(29,186)] = {64,0}, + [I(30,186)] = {64,0}, + [I(31,186)] = {64,0}, + [I(32,186)] = {28,0x53FFFE3}, + [I(33,186)] = {X32,0xFE3FFFE3}, + [I(34,186)] = {X32,0xFE7FFFE3}, + [I(35,186)] = {64,0}, + [I(36,186)] = {64,0}, + [I(37,186)] = {28,0x57FFFE3}, + [I(38,186)] = {30,0x3E3FFFE3}, + [I(39,186)] = {64,0}, + [I(40,186)] = {X32,0xFEBFFFE3}, + [I(41,186)] = {X32,0xFEFFFFE3}, + [I(42,186)] = {30,0x3E7FFFE3}, + [I(43,186)] = {64,0}, + [I(44,186)] = {30,0x3EBFFFE3}, + [I(45,186)] = {28,0x5BFFFE3}, + [I(46,186)] = {28,0x5FFFFE3}, + [I(47,186)] = {28,0x63FFFE3}, + [I(48,186)] = {27,0x3FFFE3}, + [I(49,186)] = {27,0x7FFFE3}, + [I(50,186)] = {27,0xBFFFE3}, + [I(51,186)] = {28,0x67FFFE3}, + [I(52,186)] = {28,0x6BFFFE3}, + [I(53,186)] = {28,0x6FFFFE3}, + [I(54,186)] = {28,0x73FFFE3}, + [I(55,186)] = {28,0x77FFFE3}, + [I(56,186)] = {28,0x7BFFFE3}, + [I(57,186)] = {28,0x7FFFFE3}, + [I(58,186)] = {29,0x173FFFE3}, + [I(59,186)] = {30,0x3EFFFFE3}, + [I(60,186)] = {64,0}, + [I(61,186)] = {28,0x83FFFE3}, + [I(62,186)] = {64,0}, + [I(63,186)] = {X32,0xFF3FFFE3}, + [I(64,186)] = {64,0}, + [I(65,186)] = {28,0x87FFFE3}, + [I(66,186)] = {29,0x177FFFE3}, + [I(67,186)] = {29,0x17BFFFE3}, + [I(68,186)] = {29,0x17FFFFE3}, + [I(69,186)] = {29,0x183FFFE3}, + [I(70,186)] = {29,0x187FFFE3}, + [I(71,186)] = {29,0x18BFFFE3}, + [I(72,186)] = {29,0x18FFFFE3}, + [I(73,186)] = {29,0x193FFFE3}, + [I(74,186)] = {29,0x197FFFE3}, + [I(75,186)] = {29,0x19BFFFE3}, + [I(76,186)] = {29,0x19FFFFE3}, + [I(77,186)] = {29,0x1A3FFFE3}, + [I(78,186)] = {29,0x1A7FFFE3}, + [I(79,186)] = {29,0x1ABFFFE3}, + [I(80,186)] = {29,0x1AFFFFE3}, + [I(81,186)] = {29,0x1B3FFFE3}, + [I(82,186)] = {29,0x1B7FFFE3}, + [I(83,186)] = {29,0x1BBFFFE3}, + [I(84,186)] = {29,0x1BFFFFE3}, + [I(85,186)] = {29,0x1C3FFFE3}, + [I(86,186)] = {29,0x1C7FFFE3}, + [I(87,186)] = {29,0x1CBFFFE3}, + [I(88,186)] = {30,0x3F3FFFE3}, + [I(89,186)] = {29,0x1CFFFFE3}, + [I(90,186)] = {30,0x3F7FFFE3}, + [I(91,186)] = {64,0}, + [I(92,186)] = {64,0}, + [I(93,186)] = {64,0}, + [I(94,186)] = {64,0}, + [I(95,186)] = {28,0x8BFFFE3}, + [I(96,186)] = {64,0}, + [I(97,186)] = {27,0xFFFFE3}, + [I(98,186)] = {28,0x8FFFFE3}, + [I(99,186)] = {27,0x13FFFE3}, + [I(100,186)] = {28,0x93FFFE3}, + [I(101,186)] = {27,0x17FFFE3}, + [I(102,186)] = {28,0x97FFFE3}, + [I(103,186)] = {28,0x9BFFFE3}, + [I(104,186)] = {28,0x9FFFFE3}, + [I(105,186)] = {27,0x1BFFFE3}, + [I(106,186)] = {29,0x1D3FFFE3}, + [I(107,186)] = {29,0x1D7FFFE3}, + [I(108,186)] = {28,0xA3FFFE3}, + [I(109,186)] = {28,0xA7FFFE3}, + [I(110,186)] = {28,0xABFFFE3}, + [I(111,186)] = {27,0x1FFFFE3}, + [I(112,186)] = {28,0xAFFFFE3}, + [I(113,186)] = {29,0x1DBFFFE3}, + [I(114,186)] = {28,0xB3FFFE3}, + [I(115,186)] = {27,0x23FFFE3}, + [I(116,186)] = {27,0x27FFFE3}, + [I(117,186)] = {28,0xB7FFFE3}, + [I(118,186)] = {29,0x1DFFFFE3}, + [I(119,186)] = {29,0x1E3FFFE3}, + [I(120,186)] = {29,0x1E7FFFE3}, + [I(121,186)] = {29,0x1EBFFFE3}, + [I(122,186)] = {29,0x1EFFFFE3}, + [I(123,186)] = {64,0}, + [I(124,186)] = {64,0}, + [I(125,186)] = {64,0}, + [I(126,186)] = {64,0}, + [I(127,186)] = {64,0}, + [I(128,186)] = {64,0}, + [I(129,186)] = {64,0}, + [I(130,186)] = {64,0}, + [I(131,186)] = {64,0}, + [I(132,186)] = {64,0}, + [I(133,186)] = {64,0}, + [I(134,186)] = {64,0}, + [I(135,186)] = {64,0}, + [I(136,186)] = {64,0}, + [I(137,186)] = {64,0}, + [I(138,186)] = {64,0}, + [I(139,186)] = {64,0}, + [I(140,186)] = {64,0}, + [I(141,186)] = {64,0}, + [I(142,186)] = {64,0}, + [I(143,186)] = {64,0}, + [I(144,186)] = {64,0}, + [I(145,186)] = {64,0}, + [I(146,186)] = {64,0}, + [I(147,186)] = {64,0}, + [I(148,186)] = {64,0}, + [I(149,186)] = {64,0}, + [I(150,186)] = {64,0}, + [I(151,186)] = {64,0}, + [I(152,186)] = {64,0}, + [I(153,186)] = {64,0}, + [I(154,186)] = {64,0}, + [I(155,186)] = {64,0}, + [I(156,186)] = {64,0}, + [I(157,186)] = {64,0}, + [I(158,186)] = {64,0}, + [I(159,186)] = {64,0}, + [I(160,186)] = {64,0}, + [I(161,186)] = {64,0}, + [I(162,186)] = {64,0}, + [I(163,186)] = {64,0}, + [I(164,186)] = {64,0}, + [I(165,186)] = {64,0}, + [I(166,186)] = {64,0}, + [I(167,186)] = {64,0}, + [I(168,186)] = {64,0}, + [I(169,186)] = {64,0}, + [I(170,186)] = {64,0}, + [I(171,186)] = {64,0}, + [I(172,186)] = {64,0}, + [I(173,186)] = {64,0}, + [I(174,186)] = {64,0}, + [I(175,186)] = {64,0}, + [I(176,186)] = {64,0}, + [I(177,186)] = {64,0}, + [I(178,186)] = {64,0}, + [I(179,186)] = {64,0}, + [I(180,186)] = {64,0}, + [I(181,186)] = {64,0}, + [I(182,186)] = {64,0}, + [I(183,186)] = {64,0}, + [I(184,186)] = {64,0}, + [I(185,186)] = {64,0}, + [I(186,186)] = {64,0}, + [I(187,186)] = {64,0}, + [I(188,186)] = {64,0}, + [I(189,186)] = {64,0}, + [I(190,186)] = {64,0}, + [I(191,186)] = {64,0}, + [I(192,186)] = {64,0}, + [I(193,186)] = {64,0}, + [I(194,186)] = {64,0}, + [I(195,186)] = {64,0}, + [I(196,186)] = {64,0}, + [I(197,186)] = {64,0}, + [I(198,186)] = {64,0}, + [I(199,186)] = {64,0}, + [I(200,186)] = {64,0}, + [I(201,186)] = {64,0}, + [I(202,186)] = {64,0}, + [I(203,186)] = {64,0}, + [I(204,186)] = {64,0}, + [I(205,186)] = {64,0}, + [I(206,186)] = {64,0}, + [I(207,186)] = {64,0}, + [I(208,186)] = {64,0}, + [I(209,186)] = {64,0}, + [I(210,186)] = {64,0}, + [I(211,186)] = {64,0}, + [I(212,186)] = {64,0}, + [I(213,186)] = {64,0}, + [I(214,186)] = {64,0}, + [I(215,186)] = {64,0}, + [I(216,186)] = {64,0}, + [I(217,186)] = {64,0}, + [I(218,186)] = {64,0}, + [I(219,186)] = {64,0}, + [I(220,186)] = {64,0}, + [I(221,186)] = {64,0}, + [I(222,186)] = {64,0}, + [I(223,186)] = {64,0}, + [I(224,186)] = {64,0}, + [I(225,186)] = {64,0}, + [I(226,186)] = {64,0}, + [I(227,186)] = {64,0}, + [I(228,186)] = {64,0}, + [I(229,186)] = {64,0}, + [I(230,186)] = {64,0}, + [I(231,186)] = {64,0}, + [I(232,186)] = {64,0}, + [I(233,186)] = {64,0}, + [I(234,186)] = {64,0}, + [I(235,186)] = {64,0}, + [I(236,186)] = {64,0}, + [I(237,186)] = {64,0}, + [I(238,186)] = {64,0}, + [I(239,186)] = {64,0}, + [I(240,186)] = {64,0}, + [I(241,186)] = {64,0}, + [I(242,186)] = {64,0}, + [I(243,186)] = {64,0}, + [I(244,186)] = {64,0}, + [I(245,186)] = {64,0}, + [I(246,186)] = {64,0}, + [I(247,186)] = {64,0}, + [I(248,186)] = {64,0}, + [I(249,186)] = {64,0}, + [I(250,186)] = {64,0}, + [I(251,186)] = {64,0}, + [I(252,186)] = {64,0}, + [I(253,186)] = {64,0}, + [I(254,186)] = {64,0}, + [I(255,186)] = {64,0}, + [I(0,187)] = {64,0}, + [I(1,187)] = {64,0}, + [I(2,187)] = {64,0}, + [I(3,187)] = {64,0}, + [I(4,187)] = {64,0}, + [I(5,187)] = {64,0}, + [I(6,187)] = {64,0}, + [I(7,187)] = {64,0}, + [I(8,187)] = {64,0}, + [I(9,187)] = {64,0}, + [I(10,187)] = {64,0}, + [I(11,187)] = {64,0}, + [I(12,187)] = {64,0}, + [I(13,187)] = {64,0}, + [I(14,187)] = {64,0}, + [I(15,187)] = {64,0}, + [I(16,187)] = {64,0}, + [I(17,187)] = {64,0}, + [I(18,187)] = {64,0}, + [I(19,187)] = {64,0}, + [I(20,187)] = {64,0}, + [I(21,187)] = {64,0}, + [I(22,187)] = {64,0}, + [I(23,187)] = {64,0}, + [I(24,187)] = {64,0}, + [I(25,187)] = {64,0}, + [I(26,187)] = {64,0}, + [I(27,187)] = {64,0}, + [I(28,187)] = {64,0}, + [I(29,187)] = {64,0}, + [I(30,187)] = {64,0}, + [I(31,187)] = {64,0}, + [I(32,187)] = {28,0x53FFFE4}, + [I(33,187)] = {X32,0xFE3FFFE4}, + [I(34,187)] = {X32,0xFE7FFFE4}, + [I(35,187)] = {64,0}, + [I(36,187)] = {64,0}, + [I(37,187)] = {28,0x57FFFE4}, + [I(38,187)] = {30,0x3E3FFFE4}, + [I(39,187)] = {64,0}, + [I(40,187)] = {X32,0xFEBFFFE4}, + [I(41,187)] = {X32,0xFEFFFFE4}, + [I(42,187)] = {30,0x3E7FFFE4}, + [I(43,187)] = {64,0}, + [I(44,187)] = {30,0x3EBFFFE4}, + [I(45,187)] = {28,0x5BFFFE4}, + [I(46,187)] = {28,0x5FFFFE4}, + [I(47,187)] = {28,0x63FFFE4}, + [I(48,187)] = {27,0x3FFFE4}, + [I(49,187)] = {27,0x7FFFE4}, + [I(50,187)] = {27,0xBFFFE4}, + [I(51,187)] = {28,0x67FFFE4}, + [I(52,187)] = {28,0x6BFFFE4}, + [I(53,187)] = {28,0x6FFFFE4}, + [I(54,187)] = {28,0x73FFFE4}, + [I(55,187)] = {28,0x77FFFE4}, + [I(56,187)] = {28,0x7BFFFE4}, + [I(57,187)] = {28,0x7FFFFE4}, + [I(58,187)] = {29,0x173FFFE4}, + [I(59,187)] = {30,0x3EFFFFE4}, + [I(60,187)] = {64,0}, + [I(61,187)] = {28,0x83FFFE4}, + [I(62,187)] = {64,0}, + [I(63,187)] = {X32,0xFF3FFFE4}, + [I(64,187)] = {64,0}, + [I(65,187)] = {28,0x87FFFE4}, + [I(66,187)] = {29,0x177FFFE4}, + [I(67,187)] = {29,0x17BFFFE4}, + [I(68,187)] = {29,0x17FFFFE4}, + [I(69,187)] = {29,0x183FFFE4}, + [I(70,187)] = {29,0x187FFFE4}, + [I(71,187)] = {29,0x18BFFFE4}, + [I(72,187)] = {29,0x18FFFFE4}, + [I(73,187)] = {29,0x193FFFE4}, + [I(74,187)] = {29,0x197FFFE4}, + [I(75,187)] = {29,0x19BFFFE4}, + [I(76,187)] = {29,0x19FFFFE4}, + [I(77,187)] = {29,0x1A3FFFE4}, + [I(78,187)] = {29,0x1A7FFFE4}, + [I(79,187)] = {29,0x1ABFFFE4}, + [I(80,187)] = {29,0x1AFFFFE4}, + [I(81,187)] = {29,0x1B3FFFE4}, + [I(82,187)] = {29,0x1B7FFFE4}, + [I(83,187)] = {29,0x1BBFFFE4}, + [I(84,187)] = {29,0x1BFFFFE4}, + [I(85,187)] = {29,0x1C3FFFE4}, + [I(86,187)] = {29,0x1C7FFFE4}, + [I(87,187)] = {29,0x1CBFFFE4}, + [I(88,187)] = {30,0x3F3FFFE4}, + [I(89,187)] = {29,0x1CFFFFE4}, + [I(90,187)] = {30,0x3F7FFFE4}, + [I(91,187)] = {64,0}, + [I(92,187)] = {64,0}, + [I(93,187)] = {64,0}, + [I(94,187)] = {64,0}, + [I(95,187)] = {28,0x8BFFFE4}, + [I(96,187)] = {64,0}, + [I(97,187)] = {27,0xFFFFE4}, + [I(98,187)] = {28,0x8FFFFE4}, + [I(99,187)] = {27,0x13FFFE4}, + [I(100,187)] = {28,0x93FFFE4}, + [I(101,187)] = {27,0x17FFFE4}, + [I(102,187)] = {28,0x97FFFE4}, + [I(103,187)] = {28,0x9BFFFE4}, + [I(104,187)] = {28,0x9FFFFE4}, + [I(105,187)] = {27,0x1BFFFE4}, + [I(106,187)] = {29,0x1D3FFFE4}, + [I(107,187)] = {29,0x1D7FFFE4}, + [I(108,187)] = {28,0xA3FFFE4}, + [I(109,187)] = {28,0xA7FFFE4}, + [I(110,187)] = {28,0xABFFFE4}, + [I(111,187)] = {27,0x1FFFFE4}, + [I(112,187)] = {28,0xAFFFFE4}, + [I(113,187)] = {29,0x1DBFFFE4}, + [I(114,187)] = {28,0xB3FFFE4}, + [I(115,187)] = {27,0x23FFFE4}, + [I(116,187)] = {27,0x27FFFE4}, + [I(117,187)] = {28,0xB7FFFE4}, + [I(118,187)] = {29,0x1DFFFFE4}, + [I(119,187)] = {29,0x1E3FFFE4}, + [I(120,187)] = {29,0x1E7FFFE4}, + [I(121,187)] = {29,0x1EBFFFE4}, + [I(122,187)] = {29,0x1EFFFFE4}, + [I(123,187)] = {64,0}, + [I(124,187)] = {64,0}, + [I(125,187)] = {64,0}, + [I(126,187)] = {64,0}, + [I(127,187)] = {64,0}, + [I(128,187)] = {64,0}, + [I(129,187)] = {64,0}, + [I(130,187)] = {64,0}, + [I(131,187)] = {64,0}, + [I(132,187)] = {64,0}, + [I(133,187)] = {64,0}, + [I(134,187)] = {64,0}, + [I(135,187)] = {64,0}, + [I(136,187)] = {64,0}, + [I(137,187)] = {64,0}, + [I(138,187)] = {64,0}, + [I(139,187)] = {64,0}, + [I(140,187)] = {64,0}, + [I(141,187)] = {64,0}, + [I(142,187)] = {64,0}, + [I(143,187)] = {64,0}, + [I(144,187)] = {64,0}, + [I(145,187)] = {64,0}, + [I(146,187)] = {64,0}, + [I(147,187)] = {64,0}, + [I(148,187)] = {64,0}, + [I(149,187)] = {64,0}, + [I(150,187)] = {64,0}, + [I(151,187)] = {64,0}, + [I(152,187)] = {64,0}, + [I(153,187)] = {64,0}, + [I(154,187)] = {64,0}, + [I(155,187)] = {64,0}, + [I(156,187)] = {64,0}, + [I(157,187)] = {64,0}, + [I(158,187)] = {64,0}, + [I(159,187)] = {64,0}, + [I(160,187)] = {64,0}, + [I(161,187)] = {64,0}, + [I(162,187)] = {64,0}, + [I(163,187)] = {64,0}, + [I(164,187)] = {64,0}, + [I(165,187)] = {64,0}, + [I(166,187)] = {64,0}, + [I(167,187)] = {64,0}, + [I(168,187)] = {64,0}, + [I(169,187)] = {64,0}, + [I(170,187)] = {64,0}, + [I(171,187)] = {64,0}, + [I(172,187)] = {64,0}, + [I(173,187)] = {64,0}, + [I(174,187)] = {64,0}, + [I(175,187)] = {64,0}, + [I(176,187)] = {64,0}, + [I(177,187)] = {64,0}, + [I(178,187)] = {64,0}, + [I(179,187)] = {64,0}, + [I(180,187)] = {64,0}, + [I(181,187)] = {64,0}, + [I(182,187)] = {64,0}, + [I(183,187)] = {64,0}, + [I(184,187)] = {64,0}, + [I(185,187)] = {64,0}, + [I(186,187)] = {64,0}, + [I(187,187)] = {64,0}, + [I(188,187)] = {64,0}, + [I(189,187)] = {64,0}, + [I(190,187)] = {64,0}, + [I(191,187)] = {64,0}, + [I(192,187)] = {64,0}, + [I(193,187)] = {64,0}, + [I(194,187)] = {64,0}, + [I(195,187)] = {64,0}, + [I(196,187)] = {64,0}, + [I(197,187)] = {64,0}, + [I(198,187)] = {64,0}, + [I(199,187)] = {64,0}, + [I(200,187)] = {64,0}, + [I(201,187)] = {64,0}, + [I(202,187)] = {64,0}, + [I(203,187)] = {64,0}, + [I(204,187)] = {64,0}, + [I(205,187)] = {64,0}, + [I(206,187)] = {64,0}, + [I(207,187)] = {64,0}, + [I(208,187)] = {64,0}, + [I(209,187)] = {64,0}, + [I(210,187)] = {64,0}, + [I(211,187)] = {64,0}, + [I(212,187)] = {64,0}, + [I(213,187)] = {64,0}, + [I(214,187)] = {64,0}, + [I(215,187)] = {64,0}, + [I(216,187)] = {64,0}, + [I(217,187)] = {64,0}, + [I(218,187)] = {64,0}, + [I(219,187)] = {64,0}, + [I(220,187)] = {64,0}, + [I(221,187)] = {64,0}, + [I(222,187)] = {64,0}, + [I(223,187)] = {64,0}, + [I(224,187)] = {64,0}, + [I(225,187)] = {64,0}, + [I(226,187)] = {64,0}, + [I(227,187)] = {64,0}, + [I(228,187)] = {64,0}, + [I(229,187)] = {64,0}, + [I(230,187)] = {64,0}, + [I(231,187)] = {64,0}, + [I(232,187)] = {64,0}, + [I(233,187)] = {64,0}, + [I(234,187)] = {64,0}, + [I(235,187)] = {64,0}, + [I(236,187)] = {64,0}, + [I(237,187)] = {64,0}, + [I(238,187)] = {64,0}, + [I(239,187)] = {64,0}, + [I(240,187)] = {64,0}, + [I(241,187)] = {64,0}, + [I(242,187)] = {64,0}, + [I(243,187)] = {64,0}, + [I(244,187)] = {64,0}, + [I(245,187)] = {64,0}, + [I(246,187)] = {64,0}, + [I(247,187)] = {64,0}, + [I(248,187)] = {64,0}, + [I(249,187)] = {64,0}, + [I(250,187)] = {64,0}, + [I(251,187)] = {64,0}, + [I(252,187)] = {64,0}, + [I(253,187)] = {64,0}, + [I(254,187)] = {64,0}, + [I(255,187)] = {64,0}, + [I(0,188)] = {64,0}, + [I(1,188)] = {64,0}, + [I(2,188)] = {64,0}, + [I(3,188)] = {64,0}, + [I(4,188)] = {64,0}, + [I(5,188)] = {64,0}, + [I(6,188)] = {64,0}, + [I(7,188)] = {64,0}, + [I(8,188)] = {64,0}, + [I(9,188)] = {64,0}, + [I(10,188)] = {64,0}, + [I(11,188)] = {64,0}, + [I(12,188)] = {64,0}, + [I(13,188)] = {64,0}, + [I(14,188)] = {64,0}, + [I(15,188)] = {64,0}, + [I(16,188)] = {64,0}, + [I(17,188)] = {64,0}, + [I(18,188)] = {64,0}, + [I(19,188)] = {64,0}, + [I(20,188)] = {64,0}, + [I(21,188)] = {64,0}, + [I(22,188)] = {64,0}, + [I(23,188)] = {64,0}, + [I(24,188)] = {64,0}, + [I(25,188)] = {64,0}, + [I(26,188)] = {64,0}, + [I(27,188)] = {64,0}, + [I(28,188)] = {64,0}, + [I(29,188)] = {64,0}, + [I(30,188)] = {64,0}, + [I(31,188)] = {64,0}, + [I(32,188)] = {29,0xA7FFFF0}, + [I(33,188)] = {64,0}, + [I(34,188)] = {64,0}, + [I(35,188)] = {64,0}, + [I(36,188)] = {64,0}, + [I(37,188)] = {29,0xAFFFFF0}, + [I(38,188)] = {31,0x7C7FFFF0}, + [I(39,188)] = {64,0}, + [I(40,188)] = {64,0}, + [I(41,188)] = {64,0}, + [I(42,188)] = {31,0x7CFFFFF0}, + [I(43,188)] = {64,0}, + [I(44,188)] = {31,0x7D7FFFF0}, + [I(45,188)] = {29,0xB7FFFF0}, + [I(46,188)] = {29,0xBFFFFF0}, + [I(47,188)] = {29,0xC7FFFF0}, + [I(48,188)] = {28,0x7FFFF0}, + [I(49,188)] = {28,0xFFFFF0}, + [I(50,188)] = {28,0x17FFFF0}, + [I(51,188)] = {29,0xCFFFFF0}, + [I(52,188)] = {29,0xD7FFFF0}, + [I(53,188)] = {29,0xDFFFFF0}, + [I(54,188)] = {29,0xE7FFFF0}, + [I(55,188)] = {29,0xEFFFFF0}, + [I(56,188)] = {29,0xF7FFFF0}, + [I(57,188)] = {29,0xFFFFFF0}, + [I(58,188)] = {30,0x2E7FFFF0}, + [I(59,188)] = {31,0x7DFFFFF0}, + [I(60,188)] = {64,0}, + [I(61,188)] = {29,0x107FFFF0}, + [I(62,188)] = {64,0}, + [I(63,188)] = {64,0}, + [I(64,188)] = {64,0}, + [I(65,188)] = {29,0x10FFFFF0}, + [I(66,188)] = {30,0x2EFFFFF0}, + [I(67,188)] = {30,0x2F7FFFF0}, + [I(68,188)] = {30,0x2FFFFFF0}, + [I(69,188)] = {30,0x307FFFF0}, + [I(70,188)] = {30,0x30FFFFF0}, + [I(71,188)] = {30,0x317FFFF0}, + [I(72,188)] = {30,0x31FFFFF0}, + [I(73,188)] = {30,0x327FFFF0}, + [I(74,188)] = {30,0x32FFFFF0}, + [I(75,188)] = {30,0x337FFFF0}, + [I(76,188)] = {30,0x33FFFFF0}, + [I(77,188)] = {30,0x347FFFF0}, + [I(78,188)] = {30,0x34FFFFF0}, + [I(79,188)] = {30,0x357FFFF0}, + [I(80,188)] = {30,0x35FFFFF0}, + [I(81,188)] = {30,0x367FFFF0}, + [I(82,188)] = {30,0x36FFFFF0}, + [I(83,188)] = {30,0x377FFFF0}, + [I(84,188)] = {30,0x37FFFFF0}, + [I(85,188)] = {30,0x387FFFF0}, + [I(86,188)] = {30,0x38FFFFF0}, + [I(87,188)] = {30,0x397FFFF0}, + [I(88,188)] = {31,0x7E7FFFF0}, + [I(89,188)] = {30,0x39FFFFF0}, + [I(90,188)] = {31,0x7EFFFFF0}, + [I(91,188)] = {64,0}, + [I(92,188)] = {64,0}, + [I(93,188)] = {64,0}, + [I(94,188)] = {64,0}, + [I(95,188)] = {29,0x117FFFF0}, + [I(96,188)] = {64,0}, + [I(97,188)] = {28,0x1FFFFF0}, + [I(98,188)] = {29,0x11FFFFF0}, + [I(99,188)] = {28,0x27FFFF0}, + [I(100,188)] = {29,0x127FFFF0}, + [I(101,188)] = {28,0x2FFFFF0}, + [I(102,188)] = {29,0x12FFFFF0}, + [I(103,188)] = {29,0x137FFFF0}, + [I(104,188)] = {29,0x13FFFFF0}, + [I(105,188)] = {28,0x37FFFF0}, + [I(106,188)] = {30,0x3A7FFFF0}, + [I(107,188)] = {30,0x3AFFFFF0}, + [I(108,188)] = {29,0x147FFFF0}, + [I(109,188)] = {29,0x14FFFFF0}, + [I(110,188)] = {29,0x157FFFF0}, + [I(111,188)] = {28,0x3FFFFF0}, + [I(112,188)] = {29,0x15FFFFF0}, + [I(113,188)] = {30,0x3B7FFFF0}, + [I(114,188)] = {29,0x167FFFF0}, + [I(115,188)] = {28,0x47FFFF0}, + [I(116,188)] = {28,0x4FFFFF0}, + [I(117,188)] = {29,0x16FFFFF0}, + [I(118,188)] = {30,0x3BFFFFF0}, + [I(119,188)] = {30,0x3C7FFFF0}, + [I(120,188)] = {30,0x3CFFFFF0}, + [I(121,188)] = {30,0x3D7FFFF0}, + [I(122,188)] = {30,0x3DFFFFF0}, + [I(123,188)] = {64,0}, + [I(124,188)] = {64,0}, + [I(125,188)] = {64,0}, + [I(126,188)] = {64,0}, + [I(127,188)] = {64,0}, + [I(128,188)] = {64,0}, + [I(129,188)] = {64,0}, + [I(130,188)] = {64,0}, + [I(131,188)] = {64,0}, + [I(132,188)] = {64,0}, + [I(133,188)] = {64,0}, + [I(134,188)] = {64,0}, + [I(135,188)] = {64,0}, + [I(136,188)] = {64,0}, + [I(137,188)] = {64,0}, + [I(138,188)] = {64,0}, + [I(139,188)] = {64,0}, + [I(140,188)] = {64,0}, + [I(141,188)] = {64,0}, + [I(142,188)] = {64,0}, + [I(143,188)] = {64,0}, + [I(144,188)] = {64,0}, + [I(145,188)] = {64,0}, + [I(146,188)] = {64,0}, + [I(147,188)] = {64,0}, + [I(148,188)] = {64,0}, + [I(149,188)] = {64,0}, + [I(150,188)] = {64,0}, + [I(151,188)] = {64,0}, + [I(152,188)] = {64,0}, + [I(153,188)] = {64,0}, + [I(154,188)] = {64,0}, + [I(155,188)] = {64,0}, + [I(156,188)] = {64,0}, + [I(157,188)] = {64,0}, + [I(158,188)] = {64,0}, + [I(159,188)] = {64,0}, + [I(160,188)] = {64,0}, + [I(161,188)] = {64,0}, + [I(162,188)] = {64,0}, + [I(163,188)] = {64,0}, + [I(164,188)] = {64,0}, + [I(165,188)] = {64,0}, + [I(166,188)] = {64,0}, + [I(167,188)] = {64,0}, + [I(168,188)] = {64,0}, + [I(169,188)] = {64,0}, + [I(170,188)] = {64,0}, + [I(171,188)] = {64,0}, + [I(172,188)] = {64,0}, + [I(173,188)] = {64,0}, + [I(174,188)] = {64,0}, + [I(175,188)] = {64,0}, + [I(176,188)] = {64,0}, + [I(177,188)] = {64,0}, + [I(178,188)] = {64,0}, + [I(179,188)] = {64,0}, + [I(180,188)] = {64,0}, + [I(181,188)] = {64,0}, + [I(182,188)] = {64,0}, + [I(183,188)] = {64,0}, + [I(184,188)] = {64,0}, + [I(185,188)] = {64,0}, + [I(186,188)] = {64,0}, + [I(187,188)] = {64,0}, + [I(188,188)] = {64,0}, + [I(189,188)] = {64,0}, + [I(190,188)] = {64,0}, + [I(191,188)] = {64,0}, + [I(192,188)] = {64,0}, + [I(193,188)] = {64,0}, + [I(194,188)] = {64,0}, + [I(195,188)] = {64,0}, + [I(196,188)] = {64,0}, + [I(197,188)] = {64,0}, + [I(198,188)] = {64,0}, + [I(199,188)] = {64,0}, + [I(200,188)] = {64,0}, + [I(201,188)] = {64,0}, + [I(202,188)] = {64,0}, + [I(203,188)] = {64,0}, + [I(204,188)] = {64,0}, + [I(205,188)] = {64,0}, + [I(206,188)] = {64,0}, + [I(207,188)] = {64,0}, + [I(208,188)] = {64,0}, + [I(209,188)] = {64,0}, + [I(210,188)] = {64,0}, + [I(211,188)] = {64,0}, + [I(212,188)] = {64,0}, + [I(213,188)] = {64,0}, + [I(214,188)] = {64,0}, + [I(215,188)] = {64,0}, + [I(216,188)] = {64,0}, + [I(217,188)] = {64,0}, + [I(218,188)] = {64,0}, + [I(219,188)] = {64,0}, + [I(220,188)] = {64,0}, + [I(221,188)] = {64,0}, + [I(222,188)] = {64,0}, + [I(223,188)] = {64,0}, + [I(224,188)] = {64,0}, + [I(225,188)] = {64,0}, + [I(226,188)] = {64,0}, + [I(227,188)] = {64,0}, + [I(228,188)] = {64,0}, + [I(229,188)] = {64,0}, + [I(230,188)] = {64,0}, + [I(231,188)] = {64,0}, + [I(232,188)] = {64,0}, + [I(233,188)] = {64,0}, + [I(234,188)] = {64,0}, + [I(235,188)] = {64,0}, + [I(236,188)] = {64,0}, + [I(237,188)] = {64,0}, + [I(238,188)] = {64,0}, + [I(239,188)] = {64,0}, + [I(240,188)] = {64,0}, + [I(241,188)] = {64,0}, + [I(242,188)] = {64,0}, + [I(243,188)] = {64,0}, + [I(244,188)] = {64,0}, + [I(245,188)] = {64,0}, + [I(246,188)] = {64,0}, + [I(247,188)] = {64,0}, + [I(248,188)] = {64,0}, + [I(249,188)] = {64,0}, + [I(250,188)] = {64,0}, + [I(251,188)] = {64,0}, + [I(252,188)] = {64,0}, + [I(253,188)] = {64,0}, + [I(254,188)] = {64,0}, + [I(255,188)] = {64,0}, + [I(0,189)] = {64,0}, + [I(1,189)] = {64,0}, + [I(2,189)] = {64,0}, + [I(3,189)] = {64,0}, + [I(4,189)] = {64,0}, + [I(5,189)] = {64,0}, + [I(6,189)] = {64,0}, + [I(7,189)] = {64,0}, + [I(8,189)] = {64,0}, + [I(9,189)] = {64,0}, + [I(10,189)] = {64,0}, + [I(11,189)] = {64,0}, + [I(12,189)] = {64,0}, + [I(13,189)] = {64,0}, + [I(14,189)] = {64,0}, + [I(15,189)] = {64,0}, + [I(16,189)] = {64,0}, + [I(17,189)] = {64,0}, + [I(18,189)] = {64,0}, + [I(19,189)] = {64,0}, + [I(20,189)] = {64,0}, + [I(21,189)] = {64,0}, + [I(22,189)] = {64,0}, + [I(23,189)] = {64,0}, + [I(24,189)] = {64,0}, + [I(25,189)] = {64,0}, + [I(26,189)] = {64,0}, + [I(27,189)] = {64,0}, + [I(28,189)] = {64,0}, + [I(29,189)] = {64,0}, + [I(30,189)] = {64,0}, + [I(31,189)] = {64,0}, + [I(32,189)] = {28,0x53FFFE5}, + [I(33,189)] = {X32,0xFE3FFFE5}, + [I(34,189)] = {X32,0xFE7FFFE5}, + [I(35,189)] = {64,0}, + [I(36,189)] = {64,0}, + [I(37,189)] = {28,0x57FFFE5}, + [I(38,189)] = {30,0x3E3FFFE5}, + [I(39,189)] = {64,0}, + [I(40,189)] = {X32,0xFEBFFFE5}, + [I(41,189)] = {X32,0xFEFFFFE5}, + [I(42,189)] = {30,0x3E7FFFE5}, + [I(43,189)] = {64,0}, + [I(44,189)] = {30,0x3EBFFFE5}, + [I(45,189)] = {28,0x5BFFFE5}, + [I(46,189)] = {28,0x5FFFFE5}, + [I(47,189)] = {28,0x63FFFE5}, + [I(48,189)] = {27,0x3FFFE5}, + [I(49,189)] = {27,0x7FFFE5}, + [I(50,189)] = {27,0xBFFFE5}, + [I(51,189)] = {28,0x67FFFE5}, + [I(52,189)] = {28,0x6BFFFE5}, + [I(53,189)] = {28,0x6FFFFE5}, + [I(54,189)] = {28,0x73FFFE5}, + [I(55,189)] = {28,0x77FFFE5}, + [I(56,189)] = {28,0x7BFFFE5}, + [I(57,189)] = {28,0x7FFFFE5}, + [I(58,189)] = {29,0x173FFFE5}, + [I(59,189)] = {30,0x3EFFFFE5}, + [I(60,189)] = {64,0}, + [I(61,189)] = {28,0x83FFFE5}, + [I(62,189)] = {64,0}, + [I(63,189)] = {X32,0xFF3FFFE5}, + [I(64,189)] = {64,0}, + [I(65,189)] = {28,0x87FFFE5}, + [I(66,189)] = {29,0x177FFFE5}, + [I(67,189)] = {29,0x17BFFFE5}, + [I(68,189)] = {29,0x17FFFFE5}, + [I(69,189)] = {29,0x183FFFE5}, + [I(70,189)] = {29,0x187FFFE5}, + [I(71,189)] = {29,0x18BFFFE5}, + [I(72,189)] = {29,0x18FFFFE5}, + [I(73,189)] = {29,0x193FFFE5}, + [I(74,189)] = {29,0x197FFFE5}, + [I(75,189)] = {29,0x19BFFFE5}, + [I(76,189)] = {29,0x19FFFFE5}, + [I(77,189)] = {29,0x1A3FFFE5}, + [I(78,189)] = {29,0x1A7FFFE5}, + [I(79,189)] = {29,0x1ABFFFE5}, + [I(80,189)] = {29,0x1AFFFFE5}, + [I(81,189)] = {29,0x1B3FFFE5}, + [I(82,189)] = {29,0x1B7FFFE5}, + [I(83,189)] = {29,0x1BBFFFE5}, + [I(84,189)] = {29,0x1BFFFFE5}, + [I(85,189)] = {29,0x1C3FFFE5}, + [I(86,189)] = {29,0x1C7FFFE5}, + [I(87,189)] = {29,0x1CBFFFE5}, + [I(88,189)] = {30,0x3F3FFFE5}, + [I(89,189)] = {29,0x1CFFFFE5}, + [I(90,189)] = {30,0x3F7FFFE5}, + [I(91,189)] = {64,0}, + [I(92,189)] = {64,0}, + [I(93,189)] = {64,0}, + [I(94,189)] = {64,0}, + [I(95,189)] = {28,0x8BFFFE5}, + [I(96,189)] = {64,0}, + [I(97,189)] = {27,0xFFFFE5}, + [I(98,189)] = {28,0x8FFFFE5}, + [I(99,189)] = {27,0x13FFFE5}, + [I(100,189)] = {28,0x93FFFE5}, + [I(101,189)] = {27,0x17FFFE5}, + [I(102,189)] = {28,0x97FFFE5}, + [I(103,189)] = {28,0x9BFFFE5}, + [I(104,189)] = {28,0x9FFFFE5}, + [I(105,189)] = {27,0x1BFFFE5}, + [I(106,189)] = {29,0x1D3FFFE5}, + [I(107,189)] = {29,0x1D7FFFE5}, + [I(108,189)] = {28,0xA3FFFE5}, + [I(109,189)] = {28,0xA7FFFE5}, + [I(110,189)] = {28,0xABFFFE5}, + [I(111,189)] = {27,0x1FFFFE5}, + [I(112,189)] = {28,0xAFFFFE5}, + [I(113,189)] = {29,0x1DBFFFE5}, + [I(114,189)] = {28,0xB3FFFE5}, + [I(115,189)] = {27,0x23FFFE5}, + [I(116,189)] = {27,0x27FFFE5}, + [I(117,189)] = {28,0xB7FFFE5}, + [I(118,189)] = {29,0x1DFFFFE5}, + [I(119,189)] = {29,0x1E3FFFE5}, + [I(120,189)] = {29,0x1E7FFFE5}, + [I(121,189)] = {29,0x1EBFFFE5}, + [I(122,189)] = {29,0x1EFFFFE5}, + [I(123,189)] = {64,0}, + [I(124,189)] = {64,0}, + [I(125,189)] = {64,0}, + [I(126,189)] = {64,0}, + [I(127,189)] = {64,0}, + [I(128,189)] = {64,0}, + [I(129,189)] = {64,0}, + [I(130,189)] = {64,0}, + [I(131,189)] = {64,0}, + [I(132,189)] = {64,0}, + [I(133,189)] = {64,0}, + [I(134,189)] = {64,0}, + [I(135,189)] = {64,0}, + [I(136,189)] = {64,0}, + [I(137,189)] = {64,0}, + [I(138,189)] = {64,0}, + [I(139,189)] = {64,0}, + [I(140,189)] = {64,0}, + [I(141,189)] = {64,0}, + [I(142,189)] = {64,0}, + [I(143,189)] = {64,0}, + [I(144,189)] = {64,0}, + [I(145,189)] = {64,0}, + [I(146,189)] = {64,0}, + [I(147,189)] = {64,0}, + [I(148,189)] = {64,0}, + [I(149,189)] = {64,0}, + [I(150,189)] = {64,0}, + [I(151,189)] = {64,0}, + [I(152,189)] = {64,0}, + [I(153,189)] = {64,0}, + [I(154,189)] = {64,0}, + [I(155,189)] = {64,0}, + [I(156,189)] = {64,0}, + [I(157,189)] = {64,0}, + [I(158,189)] = {64,0}, + [I(159,189)] = {64,0}, + [I(160,189)] = {64,0}, + [I(161,189)] = {64,0}, + [I(162,189)] = {64,0}, + [I(163,189)] = {64,0}, + [I(164,189)] = {64,0}, + [I(165,189)] = {64,0}, + [I(166,189)] = {64,0}, + [I(167,189)] = {64,0}, + [I(168,189)] = {64,0}, + [I(169,189)] = {64,0}, + [I(170,189)] = {64,0}, + [I(171,189)] = {64,0}, + [I(172,189)] = {64,0}, + [I(173,189)] = {64,0}, + [I(174,189)] = {64,0}, + [I(175,189)] = {64,0}, + [I(176,189)] = {64,0}, + [I(177,189)] = {64,0}, + [I(178,189)] = {64,0}, + [I(179,189)] = {64,0}, + [I(180,189)] = {64,0}, + [I(181,189)] = {64,0}, + [I(182,189)] = {64,0}, + [I(183,189)] = {64,0}, + [I(184,189)] = {64,0}, + [I(185,189)] = {64,0}, + [I(186,189)] = {64,0}, + [I(187,189)] = {64,0}, + [I(188,189)] = {64,0}, + [I(189,189)] = {64,0}, + [I(190,189)] = {64,0}, + [I(191,189)] = {64,0}, + [I(192,189)] = {64,0}, + [I(193,189)] = {64,0}, + [I(194,189)] = {64,0}, + [I(195,189)] = {64,0}, + [I(196,189)] = {64,0}, + [I(197,189)] = {64,0}, + [I(198,189)] = {64,0}, + [I(199,189)] = {64,0}, + [I(200,189)] = {64,0}, + [I(201,189)] = {64,0}, + [I(202,189)] = {64,0}, + [I(203,189)] = {64,0}, + [I(204,189)] = {64,0}, + [I(205,189)] = {64,0}, + [I(206,189)] = {64,0}, + [I(207,189)] = {64,0}, + [I(208,189)] = {64,0}, + [I(209,189)] = {64,0}, + [I(210,189)] = {64,0}, + [I(211,189)] = {64,0}, + [I(212,189)] = {64,0}, + [I(213,189)] = {64,0}, + [I(214,189)] = {64,0}, + [I(215,189)] = {64,0}, + [I(216,189)] = {64,0}, + [I(217,189)] = {64,0}, + [I(218,189)] = {64,0}, + [I(219,189)] = {64,0}, + [I(220,189)] = {64,0}, + [I(221,189)] = {64,0}, + [I(222,189)] = {64,0}, + [I(223,189)] = {64,0}, + [I(224,189)] = {64,0}, + [I(225,189)] = {64,0}, + [I(226,189)] = {64,0}, + [I(227,189)] = {64,0}, + [I(228,189)] = {64,0}, + [I(229,189)] = {64,0}, + [I(230,189)] = {64,0}, + [I(231,189)] = {64,0}, + [I(232,189)] = {64,0}, + [I(233,189)] = {64,0}, + [I(234,189)] = {64,0}, + [I(235,189)] = {64,0}, + [I(236,189)] = {64,0}, + [I(237,189)] = {64,0}, + [I(238,189)] = {64,0}, + [I(239,189)] = {64,0}, + [I(240,189)] = {64,0}, + [I(241,189)] = {64,0}, + [I(242,189)] = {64,0}, + [I(243,189)] = {64,0}, + [I(244,189)] = {64,0}, + [I(245,189)] = {64,0}, + [I(246,189)] = {64,0}, + [I(247,189)] = {64,0}, + [I(248,189)] = {64,0}, + [I(249,189)] = {64,0}, + [I(250,189)] = {64,0}, + [I(251,189)] = {64,0}, + [I(252,189)] = {64,0}, + [I(253,189)] = {64,0}, + [I(254,189)] = {64,0}, + [I(255,189)] = {64,0}, + [I(0,190)] = {64,0}, + [I(1,190)] = {64,0}, + [I(2,190)] = {64,0}, + [I(3,190)] = {64,0}, + [I(4,190)] = {64,0}, + [I(5,190)] = {64,0}, + [I(6,190)] = {64,0}, + [I(7,190)] = {64,0}, + [I(8,190)] = {64,0}, + [I(9,190)] = {64,0}, + [I(10,190)] = {64,0}, + [I(11,190)] = {64,0}, + [I(12,190)] = {64,0}, + [I(13,190)] = {64,0}, + [I(14,190)] = {64,0}, + [I(15,190)] = {64,0}, + [I(16,190)] = {64,0}, + [I(17,190)] = {64,0}, + [I(18,190)] = {64,0}, + [I(19,190)] = {64,0}, + [I(20,190)] = {64,0}, + [I(21,190)] = {64,0}, + [I(22,190)] = {64,0}, + [I(23,190)] = {64,0}, + [I(24,190)] = {64,0}, + [I(25,190)] = {64,0}, + [I(26,190)] = {64,0}, + [I(27,190)] = {64,0}, + [I(28,190)] = {64,0}, + [I(29,190)] = {64,0}, + [I(30,190)] = {64,0}, + [I(31,190)] = {64,0}, + [I(32,190)] = {28,0x53FFFE6}, + [I(33,190)] = {X32,0xFE3FFFE6}, + [I(34,190)] = {X32,0xFE7FFFE6}, + [I(35,190)] = {64,0}, + [I(36,190)] = {64,0}, + [I(37,190)] = {28,0x57FFFE6}, + [I(38,190)] = {30,0x3E3FFFE6}, + [I(39,190)] = {64,0}, + [I(40,190)] = {X32,0xFEBFFFE6}, + [I(41,190)] = {X32,0xFEFFFFE6}, + [I(42,190)] = {30,0x3E7FFFE6}, + [I(43,190)] = {64,0}, + [I(44,190)] = {30,0x3EBFFFE6}, + [I(45,190)] = {28,0x5BFFFE6}, + [I(46,190)] = {28,0x5FFFFE6}, + [I(47,190)] = {28,0x63FFFE6}, + [I(48,190)] = {27,0x3FFFE6}, + [I(49,190)] = {27,0x7FFFE6}, + [I(50,190)] = {27,0xBFFFE6}, + [I(51,190)] = {28,0x67FFFE6}, + [I(52,190)] = {28,0x6BFFFE6}, + [I(53,190)] = {28,0x6FFFFE6}, + [I(54,190)] = {28,0x73FFFE6}, + [I(55,190)] = {28,0x77FFFE6}, + [I(56,190)] = {28,0x7BFFFE6}, + [I(57,190)] = {28,0x7FFFFE6}, + [I(58,190)] = {29,0x173FFFE6}, + [I(59,190)] = {30,0x3EFFFFE6}, + [I(60,190)] = {64,0}, + [I(61,190)] = {28,0x83FFFE6}, + [I(62,190)] = {64,0}, + [I(63,190)] = {X32,0xFF3FFFE6}, + [I(64,190)] = {64,0}, + [I(65,190)] = {28,0x87FFFE6}, + [I(66,190)] = {29,0x177FFFE6}, + [I(67,190)] = {29,0x17BFFFE6}, + [I(68,190)] = {29,0x17FFFFE6}, + [I(69,190)] = {29,0x183FFFE6}, + [I(70,190)] = {29,0x187FFFE6}, + [I(71,190)] = {29,0x18BFFFE6}, + [I(72,190)] = {29,0x18FFFFE6}, + [I(73,190)] = {29,0x193FFFE6}, + [I(74,190)] = {29,0x197FFFE6}, + [I(75,190)] = {29,0x19BFFFE6}, + [I(76,190)] = {29,0x19FFFFE6}, + [I(77,190)] = {29,0x1A3FFFE6}, + [I(78,190)] = {29,0x1A7FFFE6}, + [I(79,190)] = {29,0x1ABFFFE6}, + [I(80,190)] = {29,0x1AFFFFE6}, + [I(81,190)] = {29,0x1B3FFFE6}, + [I(82,190)] = {29,0x1B7FFFE6}, + [I(83,190)] = {29,0x1BBFFFE6}, + [I(84,190)] = {29,0x1BFFFFE6}, + [I(85,190)] = {29,0x1C3FFFE6}, + [I(86,190)] = {29,0x1C7FFFE6}, + [I(87,190)] = {29,0x1CBFFFE6}, + [I(88,190)] = {30,0x3F3FFFE6}, + [I(89,190)] = {29,0x1CFFFFE6}, + [I(90,190)] = {30,0x3F7FFFE6}, + [I(91,190)] = {64,0}, + [I(92,190)] = {64,0}, + [I(93,190)] = {64,0}, + [I(94,190)] = {64,0}, + [I(95,190)] = {28,0x8BFFFE6}, + [I(96,190)] = {64,0}, + [I(97,190)] = {27,0xFFFFE6}, + [I(98,190)] = {28,0x8FFFFE6}, + [I(99,190)] = {27,0x13FFFE6}, + [I(100,190)] = {28,0x93FFFE6}, + [I(101,190)] = {27,0x17FFFE6}, + [I(102,190)] = {28,0x97FFFE6}, + [I(103,190)] = {28,0x9BFFFE6}, + [I(104,190)] = {28,0x9FFFFE6}, + [I(105,190)] = {27,0x1BFFFE6}, + [I(106,190)] = {29,0x1D3FFFE6}, + [I(107,190)] = {29,0x1D7FFFE6}, + [I(108,190)] = {28,0xA3FFFE6}, + [I(109,190)] = {28,0xA7FFFE6}, + [I(110,190)] = {28,0xABFFFE6}, + [I(111,190)] = {27,0x1FFFFE6}, + [I(112,190)] = {28,0xAFFFFE6}, + [I(113,190)] = {29,0x1DBFFFE6}, + [I(114,190)] = {28,0xB3FFFE6}, + [I(115,190)] = {27,0x23FFFE6}, + [I(116,190)] = {27,0x27FFFE6}, + [I(117,190)] = {28,0xB7FFFE6}, + [I(118,190)] = {29,0x1DFFFFE6}, + [I(119,190)] = {29,0x1E3FFFE6}, + [I(120,190)] = {29,0x1E7FFFE6}, + [I(121,190)] = {29,0x1EBFFFE6}, + [I(122,190)] = {29,0x1EFFFFE6}, + [I(123,190)] = {64,0}, + [I(124,190)] = {64,0}, + [I(125,190)] = {64,0}, + [I(126,190)] = {64,0}, + [I(127,190)] = {64,0}, + [I(128,190)] = {64,0}, + [I(129,190)] = {64,0}, + [I(130,190)] = {64,0}, + [I(131,190)] = {64,0}, + [I(132,190)] = {64,0}, + [I(133,190)] = {64,0}, + [I(134,190)] = {64,0}, + [I(135,190)] = {64,0}, + [I(136,190)] = {64,0}, + [I(137,190)] = {64,0}, + [I(138,190)] = {64,0}, + [I(139,190)] = {64,0}, + [I(140,190)] = {64,0}, + [I(141,190)] = {64,0}, + [I(142,190)] = {64,0}, + [I(143,190)] = {64,0}, + [I(144,190)] = {64,0}, + [I(145,190)] = {64,0}, + [I(146,190)] = {64,0}, + [I(147,190)] = {64,0}, + [I(148,190)] = {64,0}, + [I(149,190)] = {64,0}, + [I(150,190)] = {64,0}, + [I(151,190)] = {64,0}, + [I(152,190)] = {64,0}, + [I(153,190)] = {64,0}, + [I(154,190)] = {64,0}, + [I(155,190)] = {64,0}, + [I(156,190)] = {64,0}, + [I(157,190)] = {64,0}, + [I(158,190)] = {64,0}, + [I(159,190)] = {64,0}, + [I(160,190)] = {64,0}, + [I(161,190)] = {64,0}, + [I(162,190)] = {64,0}, + [I(163,190)] = {64,0}, + [I(164,190)] = {64,0}, + [I(165,190)] = {64,0}, + [I(166,190)] = {64,0}, + [I(167,190)] = {64,0}, + [I(168,190)] = {64,0}, + [I(169,190)] = {64,0}, + [I(170,190)] = {64,0}, + [I(171,190)] = {64,0}, + [I(172,190)] = {64,0}, + [I(173,190)] = {64,0}, + [I(174,190)] = {64,0}, + [I(175,190)] = {64,0}, + [I(176,190)] = {64,0}, + [I(177,190)] = {64,0}, + [I(178,190)] = {64,0}, + [I(179,190)] = {64,0}, + [I(180,190)] = {64,0}, + [I(181,190)] = {64,0}, + [I(182,190)] = {64,0}, + [I(183,190)] = {64,0}, + [I(184,190)] = {64,0}, + [I(185,190)] = {64,0}, + [I(186,190)] = {64,0}, + [I(187,190)] = {64,0}, + [I(188,190)] = {64,0}, + [I(189,190)] = {64,0}, + [I(190,190)] = {64,0}, + [I(191,190)] = {64,0}, + [I(192,190)] = {64,0}, + [I(193,190)] = {64,0}, + [I(194,190)] = {64,0}, + [I(195,190)] = {64,0}, + [I(196,190)] = {64,0}, + [I(197,190)] = {64,0}, + [I(198,190)] = {64,0}, + [I(199,190)] = {64,0}, + [I(200,190)] = {64,0}, + [I(201,190)] = {64,0}, + [I(202,190)] = {64,0}, + [I(203,190)] = {64,0}, + [I(204,190)] = {64,0}, + [I(205,190)] = {64,0}, + [I(206,190)] = {64,0}, + [I(207,190)] = {64,0}, + [I(208,190)] = {64,0}, + [I(209,190)] = {64,0}, + [I(210,190)] = {64,0}, + [I(211,190)] = {64,0}, + [I(212,190)] = {64,0}, + [I(213,190)] = {64,0}, + [I(214,190)] = {64,0}, + [I(215,190)] = {64,0}, + [I(216,190)] = {64,0}, + [I(217,190)] = {64,0}, + [I(218,190)] = {64,0}, + [I(219,190)] = {64,0}, + [I(220,190)] = {64,0}, + [I(221,190)] = {64,0}, + [I(222,190)] = {64,0}, + [I(223,190)] = {64,0}, + [I(224,190)] = {64,0}, + [I(225,190)] = {64,0}, + [I(226,190)] = {64,0}, + [I(227,190)] = {64,0}, + [I(228,190)] = {64,0}, + [I(229,190)] = {64,0}, + [I(230,190)] = {64,0}, + [I(231,190)] = {64,0}, + [I(232,190)] = {64,0}, + [I(233,190)] = {64,0}, + [I(234,190)] = {64,0}, + [I(235,190)] = {64,0}, + [I(236,190)] = {64,0}, + [I(237,190)] = {64,0}, + [I(238,190)] = {64,0}, + [I(239,190)] = {64,0}, + [I(240,190)] = {64,0}, + [I(241,190)] = {64,0}, + [I(242,190)] = {64,0}, + [I(243,190)] = {64,0}, + [I(244,190)] = {64,0}, + [I(245,190)] = {64,0}, + [I(246,190)] = {64,0}, + [I(247,190)] = {64,0}, + [I(248,190)] = {64,0}, + [I(249,190)] = {64,0}, + [I(250,190)] = {64,0}, + [I(251,190)] = {64,0}, + [I(252,190)] = {64,0}, + [I(253,190)] = {64,0}, + [I(254,190)] = {64,0}, + [I(255,190)] = {64,0}, + [I(0,191)] = {64,0}, + [I(1,191)] = {64,0}, + [I(2,191)] = {64,0}, + [I(3,191)] = {64,0}, + [I(4,191)] = {64,0}, + [I(5,191)] = {64,0}, + [I(6,191)] = {64,0}, + [I(7,191)] = {64,0}, + [I(8,191)] = {64,0}, + [I(9,191)] = {64,0}, + [I(10,191)] = {64,0}, + [I(11,191)] = {64,0}, + [I(12,191)] = {64,0}, + [I(13,191)] = {64,0}, + [I(14,191)] = {64,0}, + [I(15,191)] = {64,0}, + [I(16,191)] = {64,0}, + [I(17,191)] = {64,0}, + [I(18,191)] = {64,0}, + [I(19,191)] = {64,0}, + [I(20,191)] = {64,0}, + [I(21,191)] = {64,0}, + [I(22,191)] = {64,0}, + [I(23,191)] = {64,0}, + [I(24,191)] = {64,0}, + [I(25,191)] = {64,0}, + [I(26,191)] = {64,0}, + [I(27,191)] = {64,0}, + [I(28,191)] = {64,0}, + [I(29,191)] = {64,0}, + [I(30,191)] = {64,0}, + [I(31,191)] = {64,0}, + [I(32,191)] = {29,0xA7FFFF1}, + [I(33,191)] = {64,0}, + [I(34,191)] = {64,0}, + [I(35,191)] = {64,0}, + [I(36,191)] = {64,0}, + [I(37,191)] = {29,0xAFFFFF1}, + [I(38,191)] = {31,0x7C7FFFF1}, + [I(39,191)] = {64,0}, + [I(40,191)] = {64,0}, + [I(41,191)] = {64,0}, + [I(42,191)] = {31,0x7CFFFFF1}, + [I(43,191)] = {64,0}, + [I(44,191)] = {31,0x7D7FFFF1}, + [I(45,191)] = {29,0xB7FFFF1}, + [I(46,191)] = {29,0xBFFFFF1}, + [I(47,191)] = {29,0xC7FFFF1}, + [I(48,191)] = {28,0x7FFFF1}, + [I(49,191)] = {28,0xFFFFF1}, + [I(50,191)] = {28,0x17FFFF1}, + [I(51,191)] = {29,0xCFFFFF1}, + [I(52,191)] = {29,0xD7FFFF1}, + [I(53,191)] = {29,0xDFFFFF1}, + [I(54,191)] = {29,0xE7FFFF1}, + [I(55,191)] = {29,0xEFFFFF1}, + [I(56,191)] = {29,0xF7FFFF1}, + [I(57,191)] = {29,0xFFFFFF1}, + [I(58,191)] = {30,0x2E7FFFF1}, + [I(59,191)] = {31,0x7DFFFFF1}, + [I(60,191)] = {64,0}, + [I(61,191)] = {29,0x107FFFF1}, + [I(62,191)] = {64,0}, + [I(63,191)] = {64,0}, + [I(64,191)] = {64,0}, + [I(65,191)] = {29,0x10FFFFF1}, + [I(66,191)] = {30,0x2EFFFFF1}, + [I(67,191)] = {30,0x2F7FFFF1}, + [I(68,191)] = {30,0x2FFFFFF1}, + [I(69,191)] = {30,0x307FFFF1}, + [I(70,191)] = {30,0x30FFFFF1}, + [I(71,191)] = {30,0x317FFFF1}, + [I(72,191)] = {30,0x31FFFFF1}, + [I(73,191)] = {30,0x327FFFF1}, + [I(74,191)] = {30,0x32FFFFF1}, + [I(75,191)] = {30,0x337FFFF1}, + [I(76,191)] = {30,0x33FFFFF1}, + [I(77,191)] = {30,0x347FFFF1}, + [I(78,191)] = {30,0x34FFFFF1}, + [I(79,191)] = {30,0x357FFFF1}, + [I(80,191)] = {30,0x35FFFFF1}, + [I(81,191)] = {30,0x367FFFF1}, + [I(82,191)] = {30,0x36FFFFF1}, + [I(83,191)] = {30,0x377FFFF1}, + [I(84,191)] = {30,0x37FFFFF1}, + [I(85,191)] = {30,0x387FFFF1}, + [I(86,191)] = {30,0x38FFFFF1}, + [I(87,191)] = {30,0x397FFFF1}, + [I(88,191)] = {31,0x7E7FFFF1}, + [I(89,191)] = {30,0x39FFFFF1}, + [I(90,191)] = {31,0x7EFFFFF1}, + [I(91,191)] = {64,0}, + [I(92,191)] = {64,0}, + [I(93,191)] = {64,0}, + [I(94,191)] = {64,0}, + [I(95,191)] = {29,0x117FFFF1}, + [I(96,191)] = {64,0}, + [I(97,191)] = {28,0x1FFFFF1}, + [I(98,191)] = {29,0x11FFFFF1}, + [I(99,191)] = {28,0x27FFFF1}, + [I(100,191)] = {29,0x127FFFF1}, + [I(101,191)] = {28,0x2FFFFF1}, + [I(102,191)] = {29,0x12FFFFF1}, + [I(103,191)] = {29,0x137FFFF1}, + [I(104,191)] = {29,0x13FFFFF1}, + [I(105,191)] = {28,0x37FFFF1}, + [I(106,191)] = {30,0x3A7FFFF1}, + [I(107,191)] = {30,0x3AFFFFF1}, + [I(108,191)] = {29,0x147FFFF1}, + [I(109,191)] = {29,0x14FFFFF1}, + [I(110,191)] = {29,0x157FFFF1}, + [I(111,191)] = {28,0x3FFFFF1}, + [I(112,191)] = {29,0x15FFFFF1}, + [I(113,191)] = {30,0x3B7FFFF1}, + [I(114,191)] = {29,0x167FFFF1}, + [I(115,191)] = {28,0x47FFFF1}, + [I(116,191)] = {28,0x4FFFFF1}, + [I(117,191)] = {29,0x16FFFFF1}, + [I(118,191)] = {30,0x3BFFFFF1}, + [I(119,191)] = {30,0x3C7FFFF1}, + [I(120,191)] = {30,0x3CFFFFF1}, + [I(121,191)] = {30,0x3D7FFFF1}, + [I(122,191)] = {30,0x3DFFFFF1}, + [I(123,191)] = {64,0}, + [I(124,191)] = {64,0}, + [I(125,191)] = {64,0}, + [I(126,191)] = {64,0}, + [I(127,191)] = {64,0}, + [I(128,191)] = {64,0}, + [I(129,191)] = {64,0}, + [I(130,191)] = {64,0}, + [I(131,191)] = {64,0}, + [I(132,191)] = {64,0}, + [I(133,191)] = {64,0}, + [I(134,191)] = {64,0}, + [I(135,191)] = {64,0}, + [I(136,191)] = {64,0}, + [I(137,191)] = {64,0}, + [I(138,191)] = {64,0}, + [I(139,191)] = {64,0}, + [I(140,191)] = {64,0}, + [I(141,191)] = {64,0}, + [I(142,191)] = {64,0}, + [I(143,191)] = {64,0}, + [I(144,191)] = {64,0}, + [I(145,191)] = {64,0}, + [I(146,191)] = {64,0}, + [I(147,191)] = {64,0}, + [I(148,191)] = {64,0}, + [I(149,191)] = {64,0}, + [I(150,191)] = {64,0}, + [I(151,191)] = {64,0}, + [I(152,191)] = {64,0}, + [I(153,191)] = {64,0}, + [I(154,191)] = {64,0}, + [I(155,191)] = {64,0}, + [I(156,191)] = {64,0}, + [I(157,191)] = {64,0}, + [I(158,191)] = {64,0}, + [I(159,191)] = {64,0}, + [I(160,191)] = {64,0}, + [I(161,191)] = {64,0}, + [I(162,191)] = {64,0}, + [I(163,191)] = {64,0}, + [I(164,191)] = {64,0}, + [I(165,191)] = {64,0}, + [I(166,191)] = {64,0}, + [I(167,191)] = {64,0}, + [I(168,191)] = {64,0}, + [I(169,191)] = {64,0}, + [I(170,191)] = {64,0}, + [I(171,191)] = {64,0}, + [I(172,191)] = {64,0}, + [I(173,191)] = {64,0}, + [I(174,191)] = {64,0}, + [I(175,191)] = {64,0}, + [I(176,191)] = {64,0}, + [I(177,191)] = {64,0}, + [I(178,191)] = {64,0}, + [I(179,191)] = {64,0}, + [I(180,191)] = {64,0}, + [I(181,191)] = {64,0}, + [I(182,191)] = {64,0}, + [I(183,191)] = {64,0}, + [I(184,191)] = {64,0}, + [I(185,191)] = {64,0}, + [I(186,191)] = {64,0}, + [I(187,191)] = {64,0}, + [I(188,191)] = {64,0}, + [I(189,191)] = {64,0}, + [I(190,191)] = {64,0}, + [I(191,191)] = {64,0}, + [I(192,191)] = {64,0}, + [I(193,191)] = {64,0}, + [I(194,191)] = {64,0}, + [I(195,191)] = {64,0}, + [I(196,191)] = {64,0}, + [I(197,191)] = {64,0}, + [I(198,191)] = {64,0}, + [I(199,191)] = {64,0}, + [I(200,191)] = {64,0}, + [I(201,191)] = {64,0}, + [I(202,191)] = {64,0}, + [I(203,191)] = {64,0}, + [I(204,191)] = {64,0}, + [I(205,191)] = {64,0}, + [I(206,191)] = {64,0}, + [I(207,191)] = {64,0}, + [I(208,191)] = {64,0}, + [I(209,191)] = {64,0}, + [I(210,191)] = {64,0}, + [I(211,191)] = {64,0}, + [I(212,191)] = {64,0}, + [I(213,191)] = {64,0}, + [I(214,191)] = {64,0}, + [I(215,191)] = {64,0}, + [I(216,191)] = {64,0}, + [I(217,191)] = {64,0}, + [I(218,191)] = {64,0}, + [I(219,191)] = {64,0}, + [I(220,191)] = {64,0}, + [I(221,191)] = {64,0}, + [I(222,191)] = {64,0}, + [I(223,191)] = {64,0}, + [I(224,191)] = {64,0}, + [I(225,191)] = {64,0}, + [I(226,191)] = {64,0}, + [I(227,191)] = {64,0}, + [I(228,191)] = {64,0}, + [I(229,191)] = {64,0}, + [I(230,191)] = {64,0}, + [I(231,191)] = {64,0}, + [I(232,191)] = {64,0}, + [I(233,191)] = {64,0}, + [I(234,191)] = {64,0}, + [I(235,191)] = {64,0}, + [I(236,191)] = {64,0}, + [I(237,191)] = {64,0}, + [I(238,191)] = {64,0}, + [I(239,191)] = {64,0}, + [I(240,191)] = {64,0}, + [I(241,191)] = {64,0}, + [I(242,191)] = {64,0}, + [I(243,191)] = {64,0}, + [I(244,191)] = {64,0}, + [I(245,191)] = {64,0}, + [I(246,191)] = {64,0}, + [I(247,191)] = {64,0}, + [I(248,191)] = {64,0}, + [I(249,191)] = {64,0}, + [I(250,191)] = {64,0}, + [I(251,191)] = {64,0}, + [I(252,191)] = {64,0}, + [I(253,191)] = {64,0}, + [I(254,191)] = {64,0}, + [I(255,191)] = {64,0}, + [I(0,192)] = {64,0}, + [I(1,192)] = {64,0}, + [I(2,192)] = {64,0}, + [I(3,192)] = {64,0}, + [I(4,192)] = {64,0}, + [I(5,192)] = {64,0}, + [I(6,192)] = {64,0}, + [I(7,192)] = {64,0}, + [I(8,192)] = {64,0}, + [I(9,192)] = {64,0}, + [I(10,192)] = {64,0}, + [I(11,192)] = {64,0}, + [I(12,192)] = {64,0}, + [I(13,192)] = {64,0}, + [I(14,192)] = {64,0}, + [I(15,192)] = {64,0}, + [I(16,192)] = {64,0}, + [I(17,192)] = {64,0}, + [I(18,192)] = {64,0}, + [I(19,192)] = {64,0}, + [I(20,192)] = {64,0}, + [I(21,192)] = {64,0}, + [I(22,192)] = {64,0}, + [I(23,192)] = {64,0}, + [I(24,192)] = {64,0}, + [I(25,192)] = {64,0}, + [I(26,192)] = {64,0}, + [I(27,192)] = {64,0}, + [I(28,192)] = {64,0}, + [I(29,192)] = {64,0}, + [I(30,192)] = {64,0}, + [I(31,192)] = {64,0}, + [I(32,192)] = {X32,0x53FFFFE0}, + [I(33,192)] = {64,0}, + [I(34,192)] = {64,0}, + [I(35,192)] = {64,0}, + [I(36,192)] = {64,0}, + [I(37,192)] = {X32,0x57FFFFE0}, + [I(38,192)] = {64,0}, + [I(39,192)] = {64,0}, + [I(40,192)] = {64,0}, + [I(41,192)] = {64,0}, + [I(42,192)] = {64,0}, + [I(43,192)] = {64,0}, + [I(44,192)] = {64,0}, + [I(45,192)] = {X32,0x5BFFFFE0}, + [I(46,192)] = {X32,0x5FFFFFE0}, + [I(47,192)] = {X32,0x63FFFFE0}, + [I(48,192)] = {31,0x3FFFFE0}, + [I(49,192)] = {31,0x7FFFFE0}, + [I(50,192)] = {31,0xBFFFFE0}, + [I(51,192)] = {X32,0x67FFFFE0}, + [I(52,192)] = {X32,0x6BFFFFE0}, + [I(53,192)] = {X32,0x6FFFFFE0}, + [I(54,192)] = {X32,0x73FFFFE0}, + [I(55,192)] = {X32,0x77FFFFE0}, + [I(56,192)] = {X32,0x7BFFFFE0}, + [I(57,192)] = {X32,0x7FFFFFE0}, + [I(58,192)] = {64,0}, + [I(59,192)] = {64,0}, + [I(60,192)] = {64,0}, + [I(61,192)] = {X32,0x83FFFFE0}, + [I(62,192)] = {64,0}, + [I(63,192)] = {64,0}, + [I(64,192)] = {64,0}, + [I(65,192)] = {X32,0x87FFFFE0}, + [I(66,192)] = {64,0}, + [I(67,192)] = {64,0}, + [I(68,192)] = {64,0}, + [I(69,192)] = {64,0}, + [I(70,192)] = {64,0}, + [I(71,192)] = {64,0}, + [I(72,192)] = {64,0}, + [I(73,192)] = {64,0}, + [I(74,192)] = {64,0}, + [I(75,192)] = {64,0}, + [I(76,192)] = {64,0}, + [I(77,192)] = {64,0}, + [I(78,192)] = {64,0}, + [I(79,192)] = {64,0}, + [I(80,192)] = {64,0}, + [I(81,192)] = {64,0}, + [I(82,192)] = {64,0}, + [I(83,192)] = {64,0}, + [I(84,192)] = {64,0}, + [I(85,192)] = {64,0}, + [I(86,192)] = {64,0}, + [I(87,192)] = {64,0}, + [I(88,192)] = {64,0}, + [I(89,192)] = {64,0}, + [I(90,192)] = {64,0}, + [I(91,192)] = {64,0}, + [I(92,192)] = {64,0}, + [I(93,192)] = {64,0}, + [I(94,192)] = {64,0}, + [I(95,192)] = {X32,0x8BFFFFE0}, + [I(96,192)] = {64,0}, + [I(97,192)] = {31,0xFFFFFE0}, + [I(98,192)] = {X32,0x8FFFFFE0}, + [I(99,192)] = {31,0x13FFFFE0}, + [I(100,192)] = {X32,0x93FFFFE0}, + [I(101,192)] = {31,0x17FFFFE0}, + [I(102,192)] = {X32,0x97FFFFE0}, + [I(103,192)] = {X32,0x9BFFFFE0}, + [I(104,192)] = {X32,0x9FFFFFE0}, + [I(105,192)] = {31,0x1BFFFFE0}, + [I(106,192)] = {64,0}, + [I(107,192)] = {64,0}, + [I(108,192)] = {X32,0xA3FFFFE0}, + [I(109,192)] = {X32,0xA7FFFFE0}, + [I(110,192)] = {X32,0xABFFFFE0}, + [I(111,192)] = {31,0x1FFFFFE0}, + [I(112,192)] = {X32,0xAFFFFFE0}, + [I(113,192)] = {64,0}, + [I(114,192)] = {X32,0xB3FFFFE0}, + [I(115,192)] = {31,0x23FFFFE0}, + [I(116,192)] = {31,0x27FFFFE0}, + [I(117,192)] = {X32,0xB7FFFFE0}, + [I(118,192)] = {64,0}, + [I(119,192)] = {64,0}, + [I(120,192)] = {64,0}, + [I(121,192)] = {64,0}, + [I(122,192)] = {64,0}, + [I(123,192)] = {64,0}, + [I(124,192)] = {64,0}, + [I(125,192)] = {64,0}, + [I(126,192)] = {64,0}, + [I(127,192)] = {64,0}, + [I(128,192)] = {64,0}, + [I(129,192)] = {64,0}, + [I(130,192)] = {64,0}, + [I(131,192)] = {64,0}, + [I(132,192)] = {64,0}, + [I(133,192)] = {64,0}, + [I(134,192)] = {64,0}, + [I(135,192)] = {64,0}, + [I(136,192)] = {64,0}, + [I(137,192)] = {64,0}, + [I(138,192)] = {64,0}, + [I(139,192)] = {64,0}, + [I(140,192)] = {64,0}, + [I(141,192)] = {64,0}, + [I(142,192)] = {64,0}, + [I(143,192)] = {64,0}, + [I(144,192)] = {64,0}, + [I(145,192)] = {64,0}, + [I(146,192)] = {64,0}, + [I(147,192)] = {64,0}, + [I(148,192)] = {64,0}, + [I(149,192)] = {64,0}, + [I(150,192)] = {64,0}, + [I(151,192)] = {64,0}, + [I(152,192)] = {64,0}, + [I(153,192)] = {64,0}, + [I(154,192)] = {64,0}, + [I(155,192)] = {64,0}, + [I(156,192)] = {64,0}, + [I(157,192)] = {64,0}, + [I(158,192)] = {64,0}, + [I(159,192)] = {64,0}, + [I(160,192)] = {64,0}, + [I(161,192)] = {64,0}, + [I(162,192)] = {64,0}, + [I(163,192)] = {64,0}, + [I(164,192)] = {64,0}, + [I(165,192)] = {64,0}, + [I(166,192)] = {64,0}, + [I(167,192)] = {64,0}, + [I(168,192)] = {64,0}, + [I(169,192)] = {64,0}, + [I(170,192)] = {64,0}, + [I(171,192)] = {64,0}, + [I(172,192)] = {64,0}, + [I(173,192)] = {64,0}, + [I(174,192)] = {64,0}, + [I(175,192)] = {64,0}, + [I(176,192)] = {64,0}, + [I(177,192)] = {64,0}, + [I(178,192)] = {64,0}, + [I(179,192)] = {64,0}, + [I(180,192)] = {64,0}, + [I(181,192)] = {64,0}, + [I(182,192)] = {64,0}, + [I(183,192)] = {64,0}, + [I(184,192)] = {64,0}, + [I(185,192)] = {64,0}, + [I(186,192)] = {64,0}, + [I(187,192)] = {64,0}, + [I(188,192)] = {64,0}, + [I(189,192)] = {64,0}, + [I(190,192)] = {64,0}, + [I(191,192)] = {64,0}, + [I(192,192)] = {64,0}, + [I(193,192)] = {64,0}, + [I(194,192)] = {64,0}, + [I(195,192)] = {64,0}, + [I(196,192)] = {64,0}, + [I(197,192)] = {64,0}, + [I(198,192)] = {64,0}, + [I(199,192)] = {64,0}, + [I(200,192)] = {64,0}, + [I(201,192)] = {64,0}, + [I(202,192)] = {64,0}, + [I(203,192)] = {64,0}, + [I(204,192)] = {64,0}, + [I(205,192)] = {64,0}, + [I(206,192)] = {64,0}, + [I(207,192)] = {64,0}, + [I(208,192)] = {64,0}, + [I(209,192)] = {64,0}, + [I(210,192)] = {64,0}, + [I(211,192)] = {64,0}, + [I(212,192)] = {64,0}, + [I(213,192)] = {64,0}, + [I(214,192)] = {64,0}, + [I(215,192)] = {64,0}, + [I(216,192)] = {64,0}, + [I(217,192)] = {64,0}, + [I(218,192)] = {64,0}, + [I(219,192)] = {64,0}, + [I(220,192)] = {64,0}, + [I(221,192)] = {64,0}, + [I(222,192)] = {64,0}, + [I(223,192)] = {64,0}, + [I(224,192)] = {64,0}, + [I(225,192)] = {64,0}, + [I(226,192)] = {64,0}, + [I(227,192)] = {64,0}, + [I(228,192)] = {64,0}, + [I(229,192)] = {64,0}, + [I(230,192)] = {64,0}, + [I(231,192)] = {64,0}, + [I(232,192)] = {64,0}, + [I(233,192)] = {64,0}, + [I(234,192)] = {64,0}, + [I(235,192)] = {64,0}, + [I(236,192)] = {64,0}, + [I(237,192)] = {64,0}, + [I(238,192)] = {64,0}, + [I(239,192)] = {64,0}, + [I(240,192)] = {64,0}, + [I(241,192)] = {64,0}, + [I(242,192)] = {64,0}, + [I(243,192)] = {64,0}, + [I(244,192)] = {64,0}, + [I(245,192)] = {64,0}, + [I(246,192)] = {64,0}, + [I(247,192)] = {64,0}, + [I(248,192)] = {64,0}, + [I(249,192)] = {64,0}, + [I(250,192)] = {64,0}, + [I(251,192)] = {64,0}, + [I(252,192)] = {64,0}, + [I(253,192)] = {64,0}, + [I(254,192)] = {64,0}, + [I(255,192)] = {64,0}, + [I(0,193)] = {64,0}, + [I(1,193)] = {64,0}, + [I(2,193)] = {64,0}, + [I(3,193)] = {64,0}, + [I(4,193)] = {64,0}, + [I(5,193)] = {64,0}, + [I(6,193)] = {64,0}, + [I(7,193)] = {64,0}, + [I(8,193)] = {64,0}, + [I(9,193)] = {64,0}, + [I(10,193)] = {64,0}, + [I(11,193)] = {64,0}, + [I(12,193)] = {64,0}, + [I(13,193)] = {64,0}, + [I(14,193)] = {64,0}, + [I(15,193)] = {64,0}, + [I(16,193)] = {64,0}, + [I(17,193)] = {64,0}, + [I(18,193)] = {64,0}, + [I(19,193)] = {64,0}, + [I(20,193)] = {64,0}, + [I(21,193)] = {64,0}, + [I(22,193)] = {64,0}, + [I(23,193)] = {64,0}, + [I(24,193)] = {64,0}, + [I(25,193)] = {64,0}, + [I(26,193)] = {64,0}, + [I(27,193)] = {64,0}, + [I(28,193)] = {64,0}, + [I(29,193)] = {64,0}, + [I(30,193)] = {64,0}, + [I(31,193)] = {64,0}, + [I(32,193)] = {X32,0x53FFFFE1}, + [I(33,193)] = {64,0}, + [I(34,193)] = {64,0}, + [I(35,193)] = {64,0}, + [I(36,193)] = {64,0}, + [I(37,193)] = {X32,0x57FFFFE1}, + [I(38,193)] = {64,0}, + [I(39,193)] = {64,0}, + [I(40,193)] = {64,0}, + [I(41,193)] = {64,0}, + [I(42,193)] = {64,0}, + [I(43,193)] = {64,0}, + [I(44,193)] = {64,0}, + [I(45,193)] = {X32,0x5BFFFFE1}, + [I(46,193)] = {X32,0x5FFFFFE1}, + [I(47,193)] = {X32,0x63FFFFE1}, + [I(48,193)] = {31,0x3FFFFE1}, + [I(49,193)] = {31,0x7FFFFE1}, + [I(50,193)] = {31,0xBFFFFE1}, + [I(51,193)] = {X32,0x67FFFFE1}, + [I(52,193)] = {X32,0x6BFFFFE1}, + [I(53,193)] = {X32,0x6FFFFFE1}, + [I(54,193)] = {X32,0x73FFFFE1}, + [I(55,193)] = {X32,0x77FFFFE1}, + [I(56,193)] = {X32,0x7BFFFFE1}, + [I(57,193)] = {X32,0x7FFFFFE1}, + [I(58,193)] = {64,0}, + [I(59,193)] = {64,0}, + [I(60,193)] = {64,0}, + [I(61,193)] = {X32,0x83FFFFE1}, + [I(62,193)] = {64,0}, + [I(63,193)] = {64,0}, + [I(64,193)] = {64,0}, + [I(65,193)] = {X32,0x87FFFFE1}, + [I(66,193)] = {64,0}, + [I(67,193)] = {64,0}, + [I(68,193)] = {64,0}, + [I(69,193)] = {64,0}, + [I(70,193)] = {64,0}, + [I(71,193)] = {64,0}, + [I(72,193)] = {64,0}, + [I(73,193)] = {64,0}, + [I(74,193)] = {64,0}, + [I(75,193)] = {64,0}, + [I(76,193)] = {64,0}, + [I(77,193)] = {64,0}, + [I(78,193)] = {64,0}, + [I(79,193)] = {64,0}, + [I(80,193)] = {64,0}, + [I(81,193)] = {64,0}, + [I(82,193)] = {64,0}, + [I(83,193)] = {64,0}, + [I(84,193)] = {64,0}, + [I(85,193)] = {64,0}, + [I(86,193)] = {64,0}, + [I(87,193)] = {64,0}, + [I(88,193)] = {64,0}, + [I(89,193)] = {64,0}, + [I(90,193)] = {64,0}, + [I(91,193)] = {64,0}, + [I(92,193)] = {64,0}, + [I(93,193)] = {64,0}, + [I(94,193)] = {64,0}, + [I(95,193)] = {X32,0x8BFFFFE1}, + [I(96,193)] = {64,0}, + [I(97,193)] = {31,0xFFFFFE1}, + [I(98,193)] = {X32,0x8FFFFFE1}, + [I(99,193)] = {31,0x13FFFFE1}, + [I(100,193)] = {X32,0x93FFFFE1}, + [I(101,193)] = {31,0x17FFFFE1}, + [I(102,193)] = {X32,0x97FFFFE1}, + [I(103,193)] = {X32,0x9BFFFFE1}, + [I(104,193)] = {X32,0x9FFFFFE1}, + [I(105,193)] = {31,0x1BFFFFE1}, + [I(106,193)] = {64,0}, + [I(107,193)] = {64,0}, + [I(108,193)] = {X32,0xA3FFFFE1}, + [I(109,193)] = {X32,0xA7FFFFE1}, + [I(110,193)] = {X32,0xABFFFFE1}, + [I(111,193)] = {31,0x1FFFFFE1}, + [I(112,193)] = {X32,0xAFFFFFE1}, + [I(113,193)] = {64,0}, + [I(114,193)] = {X32,0xB3FFFFE1}, + [I(115,193)] = {31,0x23FFFFE1}, + [I(116,193)] = {31,0x27FFFFE1}, + [I(117,193)] = {X32,0xB7FFFFE1}, + [I(118,193)] = {64,0}, + [I(119,193)] = {64,0}, + [I(120,193)] = {64,0}, + [I(121,193)] = {64,0}, + [I(122,193)] = {64,0}, + [I(123,193)] = {64,0}, + [I(124,193)] = {64,0}, + [I(125,193)] = {64,0}, + [I(126,193)] = {64,0}, + [I(127,193)] = {64,0}, + [I(128,193)] = {64,0}, + [I(129,193)] = {64,0}, + [I(130,193)] = {64,0}, + [I(131,193)] = {64,0}, + [I(132,193)] = {64,0}, + [I(133,193)] = {64,0}, + [I(134,193)] = {64,0}, + [I(135,193)] = {64,0}, + [I(136,193)] = {64,0}, + [I(137,193)] = {64,0}, + [I(138,193)] = {64,0}, + [I(139,193)] = {64,0}, + [I(140,193)] = {64,0}, + [I(141,193)] = {64,0}, + [I(142,193)] = {64,0}, + [I(143,193)] = {64,0}, + [I(144,193)] = {64,0}, + [I(145,193)] = {64,0}, + [I(146,193)] = {64,0}, + [I(147,193)] = {64,0}, + [I(148,193)] = {64,0}, + [I(149,193)] = {64,0}, + [I(150,193)] = {64,0}, + [I(151,193)] = {64,0}, + [I(152,193)] = {64,0}, + [I(153,193)] = {64,0}, + [I(154,193)] = {64,0}, + [I(155,193)] = {64,0}, + [I(156,193)] = {64,0}, + [I(157,193)] = {64,0}, + [I(158,193)] = {64,0}, + [I(159,193)] = {64,0}, + [I(160,193)] = {64,0}, + [I(161,193)] = {64,0}, + [I(162,193)] = {64,0}, + [I(163,193)] = {64,0}, + [I(164,193)] = {64,0}, + [I(165,193)] = {64,0}, + [I(166,193)] = {64,0}, + [I(167,193)] = {64,0}, + [I(168,193)] = {64,0}, + [I(169,193)] = {64,0}, + [I(170,193)] = {64,0}, + [I(171,193)] = {64,0}, + [I(172,193)] = {64,0}, + [I(173,193)] = {64,0}, + [I(174,193)] = {64,0}, + [I(175,193)] = {64,0}, + [I(176,193)] = {64,0}, + [I(177,193)] = {64,0}, + [I(178,193)] = {64,0}, + [I(179,193)] = {64,0}, + [I(180,193)] = {64,0}, + [I(181,193)] = {64,0}, + [I(182,193)] = {64,0}, + [I(183,193)] = {64,0}, + [I(184,193)] = {64,0}, + [I(185,193)] = {64,0}, + [I(186,193)] = {64,0}, + [I(187,193)] = {64,0}, + [I(188,193)] = {64,0}, + [I(189,193)] = {64,0}, + [I(190,193)] = {64,0}, + [I(191,193)] = {64,0}, + [I(192,193)] = {64,0}, + [I(193,193)] = {64,0}, + [I(194,193)] = {64,0}, + [I(195,193)] = {64,0}, + [I(196,193)] = {64,0}, + [I(197,193)] = {64,0}, + [I(198,193)] = {64,0}, + [I(199,193)] = {64,0}, + [I(200,193)] = {64,0}, + [I(201,193)] = {64,0}, + [I(202,193)] = {64,0}, + [I(203,193)] = {64,0}, + [I(204,193)] = {64,0}, + [I(205,193)] = {64,0}, + [I(206,193)] = {64,0}, + [I(207,193)] = {64,0}, + [I(208,193)] = {64,0}, + [I(209,193)] = {64,0}, + [I(210,193)] = {64,0}, + [I(211,193)] = {64,0}, + [I(212,193)] = {64,0}, + [I(213,193)] = {64,0}, + [I(214,193)] = {64,0}, + [I(215,193)] = {64,0}, + [I(216,193)] = {64,0}, + [I(217,193)] = {64,0}, + [I(218,193)] = {64,0}, + [I(219,193)] = {64,0}, + [I(220,193)] = {64,0}, + [I(221,193)] = {64,0}, + [I(222,193)] = {64,0}, + [I(223,193)] = {64,0}, + [I(224,193)] = {64,0}, + [I(225,193)] = {64,0}, + [I(226,193)] = {64,0}, + [I(227,193)] = {64,0}, + [I(228,193)] = {64,0}, + [I(229,193)] = {64,0}, + [I(230,193)] = {64,0}, + [I(231,193)] = {64,0}, + [I(232,193)] = {64,0}, + [I(233,193)] = {64,0}, + [I(234,193)] = {64,0}, + [I(235,193)] = {64,0}, + [I(236,193)] = {64,0}, + [I(237,193)] = {64,0}, + [I(238,193)] = {64,0}, + [I(239,193)] = {64,0}, + [I(240,193)] = {64,0}, + [I(241,193)] = {64,0}, + [I(242,193)] = {64,0}, + [I(243,193)] = {64,0}, + [I(244,193)] = {64,0}, + [I(245,193)] = {64,0}, + [I(246,193)] = {64,0}, + [I(247,193)] = {64,0}, + [I(248,193)] = {64,0}, + [I(249,193)] = {64,0}, + [I(250,193)] = {64,0}, + [I(251,193)] = {64,0}, + [I(252,193)] = {64,0}, + [I(253,193)] = {64,0}, + [I(254,193)] = {64,0}, + [I(255,193)] = {64,0}, + [I(0,194)] = {64,0}, + [I(1,194)] = {64,0}, + [I(2,194)] = {64,0}, + [I(3,194)] = {64,0}, + [I(4,194)] = {64,0}, + [I(5,194)] = {64,0}, + [I(6,194)] = {64,0}, + [I(7,194)] = {64,0}, + [I(8,194)] = {64,0}, + [I(9,194)] = {64,0}, + [I(10,194)] = {64,0}, + [I(11,194)] = {64,0}, + [I(12,194)] = {64,0}, + [I(13,194)] = {64,0}, + [I(14,194)] = {64,0}, + [I(15,194)] = {64,0}, + [I(16,194)] = {64,0}, + [I(17,194)] = {64,0}, + [I(18,194)] = {64,0}, + [I(19,194)] = {64,0}, + [I(20,194)] = {64,0}, + [I(21,194)] = {64,0}, + [I(22,194)] = {64,0}, + [I(23,194)] = {64,0}, + [I(24,194)] = {64,0}, + [I(25,194)] = {64,0}, + [I(26,194)] = {64,0}, + [I(27,194)] = {64,0}, + [I(28,194)] = {64,0}, + [I(29,194)] = {64,0}, + [I(30,194)] = {64,0}, + [I(31,194)] = {64,0}, + [I(32,194)] = {26,0x14FFFEB}, + [I(33,194)] = {30,0x3F8FFFEB}, + [I(34,194)] = {30,0x3F9FFFEB}, + [I(35,194)] = {X32,0xFFAFFFEB}, + [I(36,194)] = {64,0}, + [I(37,194)] = {26,0x15FFFEB}, + [I(38,194)] = {28,0xF8FFFEB}, + [I(39,194)] = {31,0x7FAFFFEB}, + [I(40,194)] = {30,0x3FAFFFEB}, + [I(41,194)] = {30,0x3FBFFFEB}, + [I(42,194)] = {28,0xF9FFFEB}, + [I(43,194)] = {31,0x7FBFFFEB}, + [I(44,194)] = {28,0xFAFFFEB}, + [I(45,194)] = {26,0x16FFFEB}, + [I(46,194)] = {26,0x17FFFEB}, + [I(47,194)] = {26,0x18FFFEB}, + [I(48,194)] = {25,0xFFFEB}, + [I(49,194)] = {25,0x1FFFEB}, + [I(50,194)] = {25,0x2FFFEB}, + [I(51,194)] = {26,0x19FFFEB}, + [I(52,194)] = {26,0x1AFFFEB}, + [I(53,194)] = {26,0x1BFFFEB}, + [I(54,194)] = {26,0x1CFFFEB}, + [I(55,194)] = {26,0x1DFFFEB}, + [I(56,194)] = {26,0x1EFFFEB}, + [I(57,194)] = {26,0x1FFFFEB}, + [I(58,194)] = {27,0x5CFFFEB}, + [I(59,194)] = {28,0xFBFFFEB}, + [I(60,194)] = {64,0}, + [I(61,194)] = {26,0x20FFFEB}, + [I(62,194)] = {X32,0xFFBFFFEB}, + [I(63,194)] = {30,0x3FCFFFEB}, + [I(64,194)] = {64,0}, + [I(65,194)] = {26,0x21FFFEB}, + [I(66,194)] = {27,0x5DFFFEB}, + [I(67,194)] = {27,0x5EFFFEB}, + [I(68,194)] = {27,0x5FFFFEB}, + [I(69,194)] = {27,0x60FFFEB}, + [I(70,194)] = {27,0x61FFFEB}, + [I(71,194)] = {27,0x62FFFEB}, + [I(72,194)] = {27,0x63FFFEB}, + [I(73,194)] = {27,0x64FFFEB}, + [I(74,194)] = {27,0x65FFFEB}, + [I(75,194)] = {27,0x66FFFEB}, + [I(76,194)] = {27,0x67FFFEB}, + [I(77,194)] = {27,0x68FFFEB}, + [I(78,194)] = {27,0x69FFFEB}, + [I(79,194)] = {27,0x6AFFFEB}, + [I(80,194)] = {27,0x6BFFFEB}, + [I(81,194)] = {27,0x6CFFFEB}, + [I(82,194)] = {27,0x6DFFFEB}, + [I(83,194)] = {27,0x6EFFFEB}, + [I(84,194)] = {27,0x6FFFFEB}, + [I(85,194)] = {27,0x70FFFEB}, + [I(86,194)] = {27,0x71FFFEB}, + [I(87,194)] = {27,0x72FFFEB}, + [I(88,194)] = {28,0xFCFFFEB}, + [I(89,194)] = {27,0x73FFFEB}, + [I(90,194)] = {28,0xFDFFFEB}, + [I(91,194)] = {64,0}, + [I(92,194)] = {64,0}, + [I(93,194)] = {64,0}, + [I(94,194)] = {64,0}, + [I(95,194)] = {26,0x22FFFEB}, + [I(96,194)] = {64,0}, + [I(97,194)] = {25,0x3FFFEB}, + [I(98,194)] = {26,0x23FFFEB}, + [I(99,194)] = {25,0x4FFFEB}, + [I(100,194)] = {26,0x24FFFEB}, + [I(101,194)] = {25,0x5FFFEB}, + [I(102,194)] = {26,0x25FFFEB}, + [I(103,194)] = {26,0x26FFFEB}, + [I(104,194)] = {26,0x27FFFEB}, + [I(105,194)] = {25,0x6FFFEB}, + [I(106,194)] = {27,0x74FFFEB}, + [I(107,194)] = {27,0x75FFFEB}, + [I(108,194)] = {26,0x28FFFEB}, + [I(109,194)] = {26,0x29FFFEB}, + [I(110,194)] = {26,0x2AFFFEB}, + [I(111,194)] = {25,0x7FFFEB}, + [I(112,194)] = {26,0x2BFFFEB}, + [I(113,194)] = {27,0x76FFFEB}, + [I(114,194)] = {26,0x2CFFFEB}, + [I(115,194)] = {25,0x8FFFEB}, + [I(116,194)] = {25,0x9FFFEB}, + [I(117,194)] = {26,0x2DFFFEB}, + [I(118,194)] = {27,0x77FFFEB}, + [I(119,194)] = {27,0x78FFFEB}, + [I(120,194)] = {27,0x79FFFEB}, + [I(121,194)] = {27,0x7AFFFEB}, + [I(122,194)] = {27,0x7BFFFEB}, + [I(123,194)] = {64,0}, + [I(124,194)] = {31,0x7FCFFFEB}, + [I(125,194)] = {64,0}, + [I(126,194)] = {64,0}, + [I(127,194)] = {64,0}, + [I(128,194)] = {64,0}, + [I(129,194)] = {64,0}, + [I(130,194)] = {64,0}, + [I(131,194)] = {64,0}, + [I(132,194)] = {64,0}, + [I(133,194)] = {64,0}, + [I(134,194)] = {64,0}, + [I(135,194)] = {64,0}, + [I(136,194)] = {64,0}, + [I(137,194)] = {64,0}, + [I(138,194)] = {64,0}, + [I(139,194)] = {64,0}, + [I(140,194)] = {64,0}, + [I(141,194)] = {64,0}, + [I(142,194)] = {64,0}, + [I(143,194)] = {64,0}, + [I(144,194)] = {64,0}, + [I(145,194)] = {64,0}, + [I(146,194)] = {64,0}, + [I(147,194)] = {64,0}, + [I(148,194)] = {64,0}, + [I(149,194)] = {64,0}, + [I(150,194)] = {64,0}, + [I(151,194)] = {64,0}, + [I(152,194)] = {64,0}, + [I(153,194)] = {64,0}, + [I(154,194)] = {64,0}, + [I(155,194)] = {64,0}, + [I(156,194)] = {64,0}, + [I(157,194)] = {64,0}, + [I(158,194)] = {64,0}, + [I(159,194)] = {64,0}, + [I(160,194)] = {64,0}, + [I(161,194)] = {64,0}, + [I(162,194)] = {64,0}, + [I(163,194)] = {64,0}, + [I(164,194)] = {64,0}, + [I(165,194)] = {64,0}, + [I(166,194)] = {64,0}, + [I(167,194)] = {64,0}, + [I(168,194)] = {64,0}, + [I(169,194)] = {64,0}, + [I(170,194)] = {64,0}, + [I(171,194)] = {64,0}, + [I(172,194)] = {64,0}, + [I(173,194)] = {64,0}, + [I(174,194)] = {64,0}, + [I(175,194)] = {64,0}, + [I(176,194)] = {64,0}, + [I(177,194)] = {64,0}, + [I(178,194)] = {64,0}, + [I(179,194)] = {64,0}, + [I(180,194)] = {64,0}, + [I(181,194)] = {64,0}, + [I(182,194)] = {64,0}, + [I(183,194)] = {64,0}, + [I(184,194)] = {64,0}, + [I(185,194)] = {64,0}, + [I(186,194)] = {64,0}, + [I(187,194)] = {64,0}, + [I(188,194)] = {64,0}, + [I(189,194)] = {64,0}, + [I(190,194)] = {64,0}, + [I(191,194)] = {64,0}, + [I(192,194)] = {64,0}, + [I(193,194)] = {64,0}, + [I(194,194)] = {64,0}, + [I(195,194)] = {64,0}, + [I(196,194)] = {64,0}, + [I(197,194)] = {64,0}, + [I(198,194)] = {64,0}, + [I(199,194)] = {64,0}, + [I(200,194)] = {64,0}, + [I(201,194)] = {64,0}, + [I(202,194)] = {64,0}, + [I(203,194)] = {64,0}, + [I(204,194)] = {64,0}, + [I(205,194)] = {64,0}, + [I(206,194)] = {64,0}, + [I(207,194)] = {64,0}, + [I(208,194)] = {64,0}, + [I(209,194)] = {64,0}, + [I(210,194)] = {64,0}, + [I(211,194)] = {64,0}, + [I(212,194)] = {64,0}, + [I(213,194)] = {64,0}, + [I(214,194)] = {64,0}, + [I(215,194)] = {64,0}, + [I(216,194)] = {64,0}, + [I(217,194)] = {64,0}, + [I(218,194)] = {64,0}, + [I(219,194)] = {64,0}, + [I(220,194)] = {64,0}, + [I(221,194)] = {64,0}, + [I(222,194)] = {64,0}, + [I(223,194)] = {64,0}, + [I(224,194)] = {64,0}, + [I(225,194)] = {64,0}, + [I(226,194)] = {64,0}, + [I(227,194)] = {64,0}, + [I(228,194)] = {64,0}, + [I(229,194)] = {64,0}, + [I(230,194)] = {64,0}, + [I(231,194)] = {64,0}, + [I(232,194)] = {64,0}, + [I(233,194)] = {64,0}, + [I(234,194)] = {64,0}, + [I(235,194)] = {64,0}, + [I(236,194)] = {64,0}, + [I(237,194)] = {64,0}, + [I(238,194)] = {64,0}, + [I(239,194)] = {64,0}, + [I(240,194)] = {64,0}, + [I(241,194)] = {64,0}, + [I(242,194)] = {64,0}, + [I(243,194)] = {64,0}, + [I(244,194)] = {64,0}, + [I(245,194)] = {64,0}, + [I(246,194)] = {64,0}, + [I(247,194)] = {64,0}, + [I(248,194)] = {64,0}, + [I(249,194)] = {64,0}, + [I(250,194)] = {64,0}, + [I(251,194)] = {64,0}, + [I(252,194)] = {64,0}, + [I(253,194)] = {64,0}, + [I(254,194)] = {64,0}, + [I(255,194)] = {64,0}, + [I(0,195)] = {X32,0xFFC7FFF1}, + [I(1,195)] = {64,0}, + [I(2,195)] = {64,0}, + [I(3,195)] = {64,0}, + [I(4,195)] = {64,0}, + [I(5,195)] = {64,0}, + [I(6,195)] = {64,0}, + [I(7,195)] = {64,0}, + [I(8,195)] = {64,0}, + [I(9,195)] = {64,0}, + [I(10,195)] = {64,0}, + [I(11,195)] = {64,0}, + [I(12,195)] = {64,0}, + [I(13,195)] = {64,0}, + [I(14,195)] = {64,0}, + [I(15,195)] = {64,0}, + [I(16,195)] = {64,0}, + [I(17,195)] = {64,0}, + [I(18,195)] = {64,0}, + [I(19,195)] = {64,0}, + [I(20,195)] = {64,0}, + [I(21,195)] = {64,0}, + [I(22,195)] = {64,0}, + [I(23,195)] = {64,0}, + [I(24,195)] = {64,0}, + [I(25,195)] = {64,0}, + [I(26,195)] = {64,0}, + [I(27,195)] = {64,0}, + [I(28,195)] = {64,0}, + [I(29,195)] = {64,0}, + [I(30,195)] = {64,0}, + [I(31,195)] = {64,0}, + [I(32,195)] = {25,0xA7FFF1}, + [I(33,195)] = {29,0x1FC7FFF1}, + [I(34,195)] = {29,0x1FCFFFF1}, + [I(35,195)] = {31,0x7FD7FFF1}, + [I(36,195)] = {X32,0xFFCFFFF1}, + [I(37,195)] = {25,0xAFFFF1}, + [I(38,195)] = {27,0x7C7FFF1}, + [I(39,195)] = {30,0x3FD7FFF1}, + [I(40,195)] = {29,0x1FD7FFF1}, + [I(41,195)] = {29,0x1FDFFFF1}, + [I(42,195)] = {27,0x7CFFFF1}, + [I(43,195)] = {30,0x3FDFFFF1}, + [I(44,195)] = {27,0x7D7FFF1}, + [I(45,195)] = {25,0xB7FFF1}, + [I(46,195)] = {25,0xBFFFF1}, + [I(47,195)] = {25,0xC7FFF1}, + [I(48,195)] = {24,0x7FFF1}, + [I(49,195)] = {24,0xFFFF1}, + [I(50,195)] = {24,0x17FFF1}, + [I(51,195)] = {25,0xCFFFF1}, + [I(52,195)] = {25,0xD7FFF1}, + [I(53,195)] = {25,0xDFFFF1}, + [I(54,195)] = {25,0xE7FFF1}, + [I(55,195)] = {25,0xEFFFF1}, + [I(56,195)] = {25,0xF7FFF1}, + [I(57,195)] = {25,0xFFFFF1}, + [I(58,195)] = {26,0x2E7FFF1}, + [I(59,195)] = {27,0x7DFFFF1}, + [I(60,195)] = {64,0}, + [I(61,195)] = {25,0x107FFF1}, + [I(62,195)] = {31,0x7FDFFFF1}, + [I(63,195)] = {29,0x1FE7FFF1}, + [I(64,195)] = {X32,0xFFD7FFF1}, + [I(65,195)] = {25,0x10FFFF1}, + [I(66,195)] = {26,0x2EFFFF1}, + [I(67,195)] = {26,0x2F7FFF1}, + [I(68,195)] = {26,0x2FFFFF1}, + [I(69,195)] = {26,0x307FFF1}, + [I(70,195)] = {26,0x30FFFF1}, + [I(71,195)] = {26,0x317FFF1}, + [I(72,195)] = {26,0x31FFFF1}, + [I(73,195)] = {26,0x327FFF1}, + [I(74,195)] = {26,0x32FFFF1}, + [I(75,195)] = {26,0x337FFF1}, + [I(76,195)] = {26,0x33FFFF1}, + [I(77,195)] = {26,0x347FFF1}, + [I(78,195)] = {26,0x34FFFF1}, + [I(79,195)] = {26,0x357FFF1}, + [I(80,195)] = {26,0x35FFFF1}, + [I(81,195)] = {26,0x367FFF1}, + [I(82,195)] = {26,0x36FFFF1}, + [I(83,195)] = {26,0x377FFF1}, + [I(84,195)] = {26,0x37FFFF1}, + [I(85,195)] = {26,0x387FFF1}, + [I(86,195)] = {26,0x38FFFF1}, + [I(87,195)] = {26,0x397FFF1}, + [I(88,195)] = {27,0x7E7FFF1}, + [I(89,195)] = {26,0x39FFFF1}, + [I(90,195)] = {27,0x7EFFFF1}, + [I(91,195)] = {X32,0xFFDFFFF1}, + [I(92,195)] = {64,0}, + [I(93,195)] = {X32,0xFFE7FFF1}, + [I(94,195)] = {64,0}, + [I(95,195)] = {25,0x117FFF1}, + [I(96,195)] = {64,0}, + [I(97,195)] = {24,0x1FFFF1}, + [I(98,195)] = {25,0x11FFFF1}, + [I(99,195)] = {24,0x27FFF1}, + [I(100,195)] = {25,0x127FFF1}, + [I(101,195)] = {24,0x2FFFF1}, + [I(102,195)] = {25,0x12FFFF1}, + [I(103,195)] = {25,0x137FFF1}, + [I(104,195)] = {25,0x13FFFF1}, + [I(105,195)] = {24,0x37FFF1}, + [I(106,195)] = {26,0x3A7FFF1}, + [I(107,195)] = {26,0x3AFFFF1}, + [I(108,195)] = {25,0x147FFF1}, + [I(109,195)] = {25,0x14FFFF1}, + [I(110,195)] = {25,0x157FFF1}, + [I(111,195)] = {24,0x3FFFF1}, + [I(112,195)] = {25,0x15FFFF1}, + [I(113,195)] = {26,0x3B7FFF1}, + [I(114,195)] = {25,0x167FFF1}, + [I(115,195)] = {24,0x47FFF1}, + [I(116,195)] = {24,0x4FFFF1}, + [I(117,195)] = {25,0x16FFFF1}, + [I(118,195)] = {26,0x3BFFFF1}, + [I(119,195)] = {26,0x3C7FFF1}, + [I(120,195)] = {26,0x3CFFFF1}, + [I(121,195)] = {26,0x3D7FFF1}, + [I(122,195)] = {26,0x3DFFFF1}, + [I(123,195)] = {64,0}, + [I(124,195)] = {30,0x3FE7FFF1}, + [I(125,195)] = {64,0}, + [I(126,195)] = {X32,0xFFEFFFF1}, + [I(127,195)] = {64,0}, + [I(128,195)] = {64,0}, + [I(129,195)] = {64,0}, + [I(130,195)] = {64,0}, + [I(131,195)] = {64,0}, + [I(132,195)] = {64,0}, + [I(133,195)] = {64,0}, + [I(134,195)] = {64,0}, + [I(135,195)] = {64,0}, + [I(136,195)] = {64,0}, + [I(137,195)] = {64,0}, + [I(138,195)] = {64,0}, + [I(139,195)] = {64,0}, + [I(140,195)] = {64,0}, + [I(141,195)] = {64,0}, + [I(142,195)] = {64,0}, + [I(143,195)] = {64,0}, + [I(144,195)] = {64,0}, + [I(145,195)] = {64,0}, + [I(146,195)] = {64,0}, + [I(147,195)] = {64,0}, + [I(148,195)] = {64,0}, + [I(149,195)] = {64,0}, + [I(150,195)] = {64,0}, + [I(151,195)] = {64,0}, + [I(152,195)] = {64,0}, + [I(153,195)] = {64,0}, + [I(154,195)] = {64,0}, + [I(155,195)] = {64,0}, + [I(156,195)] = {64,0}, + [I(157,195)] = {64,0}, + [I(158,195)] = {64,0}, + [I(159,195)] = {64,0}, + [I(160,195)] = {64,0}, + [I(161,195)] = {64,0}, + [I(162,195)] = {64,0}, + [I(163,195)] = {64,0}, + [I(164,195)] = {64,0}, + [I(165,195)] = {64,0}, + [I(166,195)] = {64,0}, + [I(167,195)] = {64,0}, + [I(168,195)] = {64,0}, + [I(169,195)] = {64,0}, + [I(170,195)] = {64,0}, + [I(171,195)] = {64,0}, + [I(172,195)] = {64,0}, + [I(173,195)] = {64,0}, + [I(174,195)] = {64,0}, + [I(175,195)] = {64,0}, + [I(176,195)] = {64,0}, + [I(177,195)] = {64,0}, + [I(178,195)] = {64,0}, + [I(179,195)] = {64,0}, + [I(180,195)] = {64,0}, + [I(181,195)] = {64,0}, + [I(182,195)] = {64,0}, + [I(183,195)] = {64,0}, + [I(184,195)] = {64,0}, + [I(185,195)] = {64,0}, + [I(186,195)] = {64,0}, + [I(187,195)] = {64,0}, + [I(188,195)] = {64,0}, + [I(189,195)] = {64,0}, + [I(190,195)] = {64,0}, + [I(191,195)] = {64,0}, + [I(192,195)] = {64,0}, + [I(193,195)] = {64,0}, + [I(194,195)] = {64,0}, + [I(195,195)] = {64,0}, + [I(196,195)] = {64,0}, + [I(197,195)] = {64,0}, + [I(198,195)] = {64,0}, + [I(199,195)] = {64,0}, + [I(200,195)] = {64,0}, + [I(201,195)] = {64,0}, + [I(202,195)] = {64,0}, + [I(203,195)] = {64,0}, + [I(204,195)] = {64,0}, + [I(205,195)] = {64,0}, + [I(206,195)] = {64,0}, + [I(207,195)] = {64,0}, + [I(208,195)] = {64,0}, + [I(209,195)] = {64,0}, + [I(210,195)] = {64,0}, + [I(211,195)] = {64,0}, + [I(212,195)] = {64,0}, + [I(213,195)] = {64,0}, + [I(214,195)] = {64,0}, + [I(215,195)] = {64,0}, + [I(216,195)] = {64,0}, + [I(217,195)] = {64,0}, + [I(218,195)] = {64,0}, + [I(219,195)] = {64,0}, + [I(220,195)] = {64,0}, + [I(221,195)] = {64,0}, + [I(222,195)] = {64,0}, + [I(223,195)] = {64,0}, + [I(224,195)] = {64,0}, + [I(225,195)] = {64,0}, + [I(226,195)] = {64,0}, + [I(227,195)] = {64,0}, + [I(228,195)] = {64,0}, + [I(229,195)] = {64,0}, + [I(230,195)] = {64,0}, + [I(231,195)] = {64,0}, + [I(232,195)] = {64,0}, + [I(233,195)] = {64,0}, + [I(234,195)] = {64,0}, + [I(235,195)] = {64,0}, + [I(236,195)] = {64,0}, + [I(237,195)] = {64,0}, + [I(238,195)] = {64,0}, + [I(239,195)] = {64,0}, + [I(240,195)] = {64,0}, + [I(241,195)] = {64,0}, + [I(242,195)] = {64,0}, + [I(243,195)] = {64,0}, + [I(244,195)] = {64,0}, + [I(245,195)] = {64,0}, + [I(246,195)] = {64,0}, + [I(247,195)] = {64,0}, + [I(248,195)] = {64,0}, + [I(249,195)] = {64,0}, + [I(250,195)] = {64,0}, + [I(251,195)] = {64,0}, + [I(252,195)] = {64,0}, + [I(253,195)] = {64,0}, + [I(254,195)] = {64,0}, + [I(255,195)] = {64,0}, + [I(0,196)] = {64,0}, + [I(1,196)] = {64,0}, + [I(2,196)] = {64,0}, + [I(3,196)] = {64,0}, + [I(4,196)] = {64,0}, + [I(5,196)] = {64,0}, + [I(6,196)] = {64,0}, + [I(7,196)] = {64,0}, + [I(8,196)] = {64,0}, + [I(9,196)] = {64,0}, + [I(10,196)] = {64,0}, + [I(11,196)] = {64,0}, + [I(12,196)] = {64,0}, + [I(13,196)] = {64,0}, + [I(14,196)] = {64,0}, + [I(15,196)] = {64,0}, + [I(16,196)] = {64,0}, + [I(17,196)] = {64,0}, + [I(18,196)] = {64,0}, + [I(19,196)] = {64,0}, + [I(20,196)] = {64,0}, + [I(21,196)] = {64,0}, + [I(22,196)] = {64,0}, + [I(23,196)] = {64,0}, + [I(24,196)] = {64,0}, + [I(25,196)] = {64,0}, + [I(26,196)] = {64,0}, + [I(27,196)] = {64,0}, + [I(28,196)] = {64,0}, + [I(29,196)] = {64,0}, + [I(30,196)] = {64,0}, + [I(31,196)] = {64,0}, + [I(32,196)] = {28,0x53FFFE7}, + [I(33,196)] = {X32,0xFE3FFFE7}, + [I(34,196)] = {X32,0xFE7FFFE7}, + [I(35,196)] = {64,0}, + [I(36,196)] = {64,0}, + [I(37,196)] = {28,0x57FFFE7}, + [I(38,196)] = {30,0x3E3FFFE7}, + [I(39,196)] = {64,0}, + [I(40,196)] = {X32,0xFEBFFFE7}, + [I(41,196)] = {X32,0xFEFFFFE7}, + [I(42,196)] = {30,0x3E7FFFE7}, + [I(43,196)] = {64,0}, + [I(44,196)] = {30,0x3EBFFFE7}, + [I(45,196)] = {28,0x5BFFFE7}, + [I(46,196)] = {28,0x5FFFFE7}, + [I(47,196)] = {28,0x63FFFE7}, + [I(48,196)] = {27,0x3FFFE7}, + [I(49,196)] = {27,0x7FFFE7}, + [I(50,196)] = {27,0xBFFFE7}, + [I(51,196)] = {28,0x67FFFE7}, + [I(52,196)] = {28,0x6BFFFE7}, + [I(53,196)] = {28,0x6FFFFE7}, + [I(54,196)] = {28,0x73FFFE7}, + [I(55,196)] = {28,0x77FFFE7}, + [I(56,196)] = {28,0x7BFFFE7}, + [I(57,196)] = {28,0x7FFFFE7}, + [I(58,196)] = {29,0x173FFFE7}, + [I(59,196)] = {30,0x3EFFFFE7}, + [I(60,196)] = {64,0}, + [I(61,196)] = {28,0x83FFFE7}, + [I(62,196)] = {64,0}, + [I(63,196)] = {X32,0xFF3FFFE7}, + [I(64,196)] = {64,0}, + [I(65,196)] = {28,0x87FFFE7}, + [I(66,196)] = {29,0x177FFFE7}, + [I(67,196)] = {29,0x17BFFFE7}, + [I(68,196)] = {29,0x17FFFFE7}, + [I(69,196)] = {29,0x183FFFE7}, + [I(70,196)] = {29,0x187FFFE7}, + [I(71,196)] = {29,0x18BFFFE7}, + [I(72,196)] = {29,0x18FFFFE7}, + [I(73,196)] = {29,0x193FFFE7}, + [I(74,196)] = {29,0x197FFFE7}, + [I(75,196)] = {29,0x19BFFFE7}, + [I(76,196)] = {29,0x19FFFFE7}, + [I(77,196)] = {29,0x1A3FFFE7}, + [I(78,196)] = {29,0x1A7FFFE7}, + [I(79,196)] = {29,0x1ABFFFE7}, + [I(80,196)] = {29,0x1AFFFFE7}, + [I(81,196)] = {29,0x1B3FFFE7}, + [I(82,196)] = {29,0x1B7FFFE7}, + [I(83,196)] = {29,0x1BBFFFE7}, + [I(84,196)] = {29,0x1BFFFFE7}, + [I(85,196)] = {29,0x1C3FFFE7}, + [I(86,196)] = {29,0x1C7FFFE7}, + [I(87,196)] = {29,0x1CBFFFE7}, + [I(88,196)] = {30,0x3F3FFFE7}, + [I(89,196)] = {29,0x1CFFFFE7}, + [I(90,196)] = {30,0x3F7FFFE7}, + [I(91,196)] = {64,0}, + [I(92,196)] = {64,0}, + [I(93,196)] = {64,0}, + [I(94,196)] = {64,0}, + [I(95,196)] = {28,0x8BFFFE7}, + [I(96,196)] = {64,0}, + [I(97,196)] = {27,0xFFFFE7}, + [I(98,196)] = {28,0x8FFFFE7}, + [I(99,196)] = {27,0x13FFFE7}, + [I(100,196)] = {28,0x93FFFE7}, + [I(101,196)] = {27,0x17FFFE7}, + [I(102,196)] = {28,0x97FFFE7}, + [I(103,196)] = {28,0x9BFFFE7}, + [I(104,196)] = {28,0x9FFFFE7}, + [I(105,196)] = {27,0x1BFFFE7}, + [I(106,196)] = {29,0x1D3FFFE7}, + [I(107,196)] = {29,0x1D7FFFE7}, + [I(108,196)] = {28,0xA3FFFE7}, + [I(109,196)] = {28,0xA7FFFE7}, + [I(110,196)] = {28,0xABFFFE7}, + [I(111,196)] = {27,0x1FFFFE7}, + [I(112,196)] = {28,0xAFFFFE7}, + [I(113,196)] = {29,0x1DBFFFE7}, + [I(114,196)] = {28,0xB3FFFE7}, + [I(115,196)] = {27,0x23FFFE7}, + [I(116,196)] = {27,0x27FFFE7}, + [I(117,196)] = {28,0xB7FFFE7}, + [I(118,196)] = {29,0x1DFFFFE7}, + [I(119,196)] = {29,0x1E3FFFE7}, + [I(120,196)] = {29,0x1E7FFFE7}, + [I(121,196)] = {29,0x1EBFFFE7}, + [I(122,196)] = {29,0x1EFFFFE7}, + [I(123,196)] = {64,0}, + [I(124,196)] = {64,0}, + [I(125,196)] = {64,0}, + [I(126,196)] = {64,0}, + [I(127,196)] = {64,0}, + [I(128,196)] = {64,0}, + [I(129,196)] = {64,0}, + [I(130,196)] = {64,0}, + [I(131,196)] = {64,0}, + [I(132,196)] = {64,0}, + [I(133,196)] = {64,0}, + [I(134,196)] = {64,0}, + [I(135,196)] = {64,0}, + [I(136,196)] = {64,0}, + [I(137,196)] = {64,0}, + [I(138,196)] = {64,0}, + [I(139,196)] = {64,0}, + [I(140,196)] = {64,0}, + [I(141,196)] = {64,0}, + [I(142,196)] = {64,0}, + [I(143,196)] = {64,0}, + [I(144,196)] = {64,0}, + [I(145,196)] = {64,0}, + [I(146,196)] = {64,0}, + [I(147,196)] = {64,0}, + [I(148,196)] = {64,0}, + [I(149,196)] = {64,0}, + [I(150,196)] = {64,0}, + [I(151,196)] = {64,0}, + [I(152,196)] = {64,0}, + [I(153,196)] = {64,0}, + [I(154,196)] = {64,0}, + [I(155,196)] = {64,0}, + [I(156,196)] = {64,0}, + [I(157,196)] = {64,0}, + [I(158,196)] = {64,0}, + [I(159,196)] = {64,0}, + [I(160,196)] = {64,0}, + [I(161,196)] = {64,0}, + [I(162,196)] = {64,0}, + [I(163,196)] = {64,0}, + [I(164,196)] = {64,0}, + [I(165,196)] = {64,0}, + [I(166,196)] = {64,0}, + [I(167,196)] = {64,0}, + [I(168,196)] = {64,0}, + [I(169,196)] = {64,0}, + [I(170,196)] = {64,0}, + [I(171,196)] = {64,0}, + [I(172,196)] = {64,0}, + [I(173,196)] = {64,0}, + [I(174,196)] = {64,0}, + [I(175,196)] = {64,0}, + [I(176,196)] = {64,0}, + [I(177,196)] = {64,0}, + [I(178,196)] = {64,0}, + [I(179,196)] = {64,0}, + [I(180,196)] = {64,0}, + [I(181,196)] = {64,0}, + [I(182,196)] = {64,0}, + [I(183,196)] = {64,0}, + [I(184,196)] = {64,0}, + [I(185,196)] = {64,0}, + [I(186,196)] = {64,0}, + [I(187,196)] = {64,0}, + [I(188,196)] = {64,0}, + [I(189,196)] = {64,0}, + [I(190,196)] = {64,0}, + [I(191,196)] = {64,0}, + [I(192,196)] = {64,0}, + [I(193,196)] = {64,0}, + [I(194,196)] = {64,0}, + [I(195,196)] = {64,0}, + [I(196,196)] = {64,0}, + [I(197,196)] = {64,0}, + [I(198,196)] = {64,0}, + [I(199,196)] = {64,0}, + [I(200,196)] = {64,0}, + [I(201,196)] = {64,0}, + [I(202,196)] = {64,0}, + [I(203,196)] = {64,0}, + [I(204,196)] = {64,0}, + [I(205,196)] = {64,0}, + [I(206,196)] = {64,0}, + [I(207,196)] = {64,0}, + [I(208,196)] = {64,0}, + [I(209,196)] = {64,0}, + [I(210,196)] = {64,0}, + [I(211,196)] = {64,0}, + [I(212,196)] = {64,0}, + [I(213,196)] = {64,0}, + [I(214,196)] = {64,0}, + [I(215,196)] = {64,0}, + [I(216,196)] = {64,0}, + [I(217,196)] = {64,0}, + [I(218,196)] = {64,0}, + [I(219,196)] = {64,0}, + [I(220,196)] = {64,0}, + [I(221,196)] = {64,0}, + [I(222,196)] = {64,0}, + [I(223,196)] = {64,0}, + [I(224,196)] = {64,0}, + [I(225,196)] = {64,0}, + [I(226,196)] = {64,0}, + [I(227,196)] = {64,0}, + [I(228,196)] = {64,0}, + [I(229,196)] = {64,0}, + [I(230,196)] = {64,0}, + [I(231,196)] = {64,0}, + [I(232,196)] = {64,0}, + [I(233,196)] = {64,0}, + [I(234,196)] = {64,0}, + [I(235,196)] = {64,0}, + [I(236,196)] = {64,0}, + [I(237,196)] = {64,0}, + [I(238,196)] = {64,0}, + [I(239,196)] = {64,0}, + [I(240,196)] = {64,0}, + [I(241,196)] = {64,0}, + [I(242,196)] = {64,0}, + [I(243,196)] = {64,0}, + [I(244,196)] = {64,0}, + [I(245,196)] = {64,0}, + [I(246,196)] = {64,0}, + [I(247,196)] = {64,0}, + [I(248,196)] = {64,0}, + [I(249,196)] = {64,0}, + [I(250,196)] = {64,0}, + [I(251,196)] = {64,0}, + [I(252,196)] = {64,0}, + [I(253,196)] = {64,0}, + [I(254,196)] = {64,0}, + [I(255,196)] = {64,0}, + [I(0,197)] = {64,0}, + [I(1,197)] = {64,0}, + [I(2,197)] = {64,0}, + [I(3,197)] = {64,0}, + [I(4,197)] = {64,0}, + [I(5,197)] = {64,0}, + [I(6,197)] = {64,0}, + [I(7,197)] = {64,0}, + [I(8,197)] = {64,0}, + [I(9,197)] = {64,0}, + [I(10,197)] = {64,0}, + [I(11,197)] = {64,0}, + [I(12,197)] = {64,0}, + [I(13,197)] = {64,0}, + [I(14,197)] = {64,0}, + [I(15,197)] = {64,0}, + [I(16,197)] = {64,0}, + [I(17,197)] = {64,0}, + [I(18,197)] = {64,0}, + [I(19,197)] = {64,0}, + [I(20,197)] = {64,0}, + [I(21,197)] = {64,0}, + [I(22,197)] = {64,0}, + [I(23,197)] = {64,0}, + [I(24,197)] = {64,0}, + [I(25,197)] = {64,0}, + [I(26,197)] = {64,0}, + [I(27,197)] = {64,0}, + [I(28,197)] = {64,0}, + [I(29,197)] = {64,0}, + [I(30,197)] = {64,0}, + [I(31,197)] = {64,0}, + [I(32,197)] = {29,0xA7FFFF2}, + [I(33,197)] = {64,0}, + [I(34,197)] = {64,0}, + [I(35,197)] = {64,0}, + [I(36,197)] = {64,0}, + [I(37,197)] = {29,0xAFFFFF2}, + [I(38,197)] = {31,0x7C7FFFF2}, + [I(39,197)] = {64,0}, + [I(40,197)] = {64,0}, + [I(41,197)] = {64,0}, + [I(42,197)] = {31,0x7CFFFFF2}, + [I(43,197)] = {64,0}, + [I(44,197)] = {31,0x7D7FFFF2}, + [I(45,197)] = {29,0xB7FFFF2}, + [I(46,197)] = {29,0xBFFFFF2}, + [I(47,197)] = {29,0xC7FFFF2}, + [I(48,197)] = {28,0x7FFFF2}, + [I(49,197)] = {28,0xFFFFF2}, + [I(50,197)] = {28,0x17FFFF2}, + [I(51,197)] = {29,0xCFFFFF2}, + [I(52,197)] = {29,0xD7FFFF2}, + [I(53,197)] = {29,0xDFFFFF2}, + [I(54,197)] = {29,0xE7FFFF2}, + [I(55,197)] = {29,0xEFFFFF2}, + [I(56,197)] = {29,0xF7FFFF2}, + [I(57,197)] = {29,0xFFFFFF2}, + [I(58,197)] = {30,0x2E7FFFF2}, + [I(59,197)] = {31,0x7DFFFFF2}, + [I(60,197)] = {64,0}, + [I(61,197)] = {29,0x107FFFF2}, + [I(62,197)] = {64,0}, + [I(63,197)] = {64,0}, + [I(64,197)] = {64,0}, + [I(65,197)] = {29,0x10FFFFF2}, + [I(66,197)] = {30,0x2EFFFFF2}, + [I(67,197)] = {30,0x2F7FFFF2}, + [I(68,197)] = {30,0x2FFFFFF2}, + [I(69,197)] = {30,0x307FFFF2}, + [I(70,197)] = {30,0x30FFFFF2}, + [I(71,197)] = {30,0x317FFFF2}, + [I(72,197)] = {30,0x31FFFFF2}, + [I(73,197)] = {30,0x327FFFF2}, + [I(74,197)] = {30,0x32FFFFF2}, + [I(75,197)] = {30,0x337FFFF2}, + [I(76,197)] = {30,0x33FFFFF2}, + [I(77,197)] = {30,0x347FFFF2}, + [I(78,197)] = {30,0x34FFFFF2}, + [I(79,197)] = {30,0x357FFFF2}, + [I(80,197)] = {30,0x35FFFFF2}, + [I(81,197)] = {30,0x367FFFF2}, + [I(82,197)] = {30,0x36FFFFF2}, + [I(83,197)] = {30,0x377FFFF2}, + [I(84,197)] = {30,0x37FFFFF2}, + [I(85,197)] = {30,0x387FFFF2}, + [I(86,197)] = {30,0x38FFFFF2}, + [I(87,197)] = {30,0x397FFFF2}, + [I(88,197)] = {31,0x7E7FFFF2}, + [I(89,197)] = {30,0x39FFFFF2}, + [I(90,197)] = {31,0x7EFFFFF2}, + [I(91,197)] = {64,0}, + [I(92,197)] = {64,0}, + [I(93,197)] = {64,0}, + [I(94,197)] = {64,0}, + [I(95,197)] = {29,0x117FFFF2}, + [I(96,197)] = {64,0}, + [I(97,197)] = {28,0x1FFFFF2}, + [I(98,197)] = {29,0x11FFFFF2}, + [I(99,197)] = {28,0x27FFFF2}, + [I(100,197)] = {29,0x127FFFF2}, + [I(101,197)] = {28,0x2FFFFF2}, + [I(102,197)] = {29,0x12FFFFF2}, + [I(103,197)] = {29,0x137FFFF2}, + [I(104,197)] = {29,0x13FFFFF2}, + [I(105,197)] = {28,0x37FFFF2}, + [I(106,197)] = {30,0x3A7FFFF2}, + [I(107,197)] = {30,0x3AFFFFF2}, + [I(108,197)] = {29,0x147FFFF2}, + [I(109,197)] = {29,0x14FFFFF2}, + [I(110,197)] = {29,0x157FFFF2}, + [I(111,197)] = {28,0x3FFFFF2}, + [I(112,197)] = {29,0x15FFFFF2}, + [I(113,197)] = {30,0x3B7FFFF2}, + [I(114,197)] = {29,0x167FFFF2}, + [I(115,197)] = {28,0x47FFFF2}, + [I(116,197)] = {28,0x4FFFFF2}, + [I(117,197)] = {29,0x16FFFFF2}, + [I(118,197)] = {30,0x3BFFFFF2}, + [I(119,197)] = {30,0x3C7FFFF2}, + [I(120,197)] = {30,0x3CFFFFF2}, + [I(121,197)] = {30,0x3D7FFFF2}, + [I(122,197)] = {30,0x3DFFFFF2}, + [I(123,197)] = {64,0}, + [I(124,197)] = {64,0}, + [I(125,197)] = {64,0}, + [I(126,197)] = {64,0}, + [I(127,197)] = {64,0}, + [I(128,197)] = {64,0}, + [I(129,197)] = {64,0}, + [I(130,197)] = {64,0}, + [I(131,197)] = {64,0}, + [I(132,197)] = {64,0}, + [I(133,197)] = {64,0}, + [I(134,197)] = {64,0}, + [I(135,197)] = {64,0}, + [I(136,197)] = {64,0}, + [I(137,197)] = {64,0}, + [I(138,197)] = {64,0}, + [I(139,197)] = {64,0}, + [I(140,197)] = {64,0}, + [I(141,197)] = {64,0}, + [I(142,197)] = {64,0}, + [I(143,197)] = {64,0}, + [I(144,197)] = {64,0}, + [I(145,197)] = {64,0}, + [I(146,197)] = {64,0}, + [I(147,197)] = {64,0}, + [I(148,197)] = {64,0}, + [I(149,197)] = {64,0}, + [I(150,197)] = {64,0}, + [I(151,197)] = {64,0}, + [I(152,197)] = {64,0}, + [I(153,197)] = {64,0}, + [I(154,197)] = {64,0}, + [I(155,197)] = {64,0}, + [I(156,197)] = {64,0}, + [I(157,197)] = {64,0}, + [I(158,197)] = {64,0}, + [I(159,197)] = {64,0}, + [I(160,197)] = {64,0}, + [I(161,197)] = {64,0}, + [I(162,197)] = {64,0}, + [I(163,197)] = {64,0}, + [I(164,197)] = {64,0}, + [I(165,197)] = {64,0}, + [I(166,197)] = {64,0}, + [I(167,197)] = {64,0}, + [I(168,197)] = {64,0}, + [I(169,197)] = {64,0}, + [I(170,197)] = {64,0}, + [I(171,197)] = {64,0}, + [I(172,197)] = {64,0}, + [I(173,197)] = {64,0}, + [I(174,197)] = {64,0}, + [I(175,197)] = {64,0}, + [I(176,197)] = {64,0}, + [I(177,197)] = {64,0}, + [I(178,197)] = {64,0}, + [I(179,197)] = {64,0}, + [I(180,197)] = {64,0}, + [I(181,197)] = {64,0}, + [I(182,197)] = {64,0}, + [I(183,197)] = {64,0}, + [I(184,197)] = {64,0}, + [I(185,197)] = {64,0}, + [I(186,197)] = {64,0}, + [I(187,197)] = {64,0}, + [I(188,197)] = {64,0}, + [I(189,197)] = {64,0}, + [I(190,197)] = {64,0}, + [I(191,197)] = {64,0}, + [I(192,197)] = {64,0}, + [I(193,197)] = {64,0}, + [I(194,197)] = {64,0}, + [I(195,197)] = {64,0}, + [I(196,197)] = {64,0}, + [I(197,197)] = {64,0}, + [I(198,197)] = {64,0}, + [I(199,197)] = {64,0}, + [I(200,197)] = {64,0}, + [I(201,197)] = {64,0}, + [I(202,197)] = {64,0}, + [I(203,197)] = {64,0}, + [I(204,197)] = {64,0}, + [I(205,197)] = {64,0}, + [I(206,197)] = {64,0}, + [I(207,197)] = {64,0}, + [I(208,197)] = {64,0}, + [I(209,197)] = {64,0}, + [I(210,197)] = {64,0}, + [I(211,197)] = {64,0}, + [I(212,197)] = {64,0}, + [I(213,197)] = {64,0}, + [I(214,197)] = {64,0}, + [I(215,197)] = {64,0}, + [I(216,197)] = {64,0}, + [I(217,197)] = {64,0}, + [I(218,197)] = {64,0}, + [I(219,197)] = {64,0}, + [I(220,197)] = {64,0}, + [I(221,197)] = {64,0}, + [I(222,197)] = {64,0}, + [I(223,197)] = {64,0}, + [I(224,197)] = {64,0}, + [I(225,197)] = {64,0}, + [I(226,197)] = {64,0}, + [I(227,197)] = {64,0}, + [I(228,197)] = {64,0}, + [I(229,197)] = {64,0}, + [I(230,197)] = {64,0}, + [I(231,197)] = {64,0}, + [I(232,197)] = {64,0}, + [I(233,197)] = {64,0}, + [I(234,197)] = {64,0}, + [I(235,197)] = {64,0}, + [I(236,197)] = {64,0}, + [I(237,197)] = {64,0}, + [I(238,197)] = {64,0}, + [I(239,197)] = {64,0}, + [I(240,197)] = {64,0}, + [I(241,197)] = {64,0}, + [I(242,197)] = {64,0}, + [I(243,197)] = {64,0}, + [I(244,197)] = {64,0}, + [I(245,197)] = {64,0}, + [I(246,197)] = {64,0}, + [I(247,197)] = {64,0}, + [I(248,197)] = {64,0}, + [I(249,197)] = {64,0}, + [I(250,197)] = {64,0}, + [I(251,197)] = {64,0}, + [I(252,197)] = {64,0}, + [I(253,197)] = {64,0}, + [I(254,197)] = {64,0}, + [I(255,197)] = {64,0}, + [I(0,198)] = {64,0}, + [I(1,198)] = {64,0}, + [I(2,198)] = {64,0}, + [I(3,198)] = {64,0}, + [I(4,198)] = {64,0}, + [I(5,198)] = {64,0}, + [I(6,198)] = {64,0}, + [I(7,198)] = {64,0}, + [I(8,198)] = {64,0}, + [I(9,198)] = {64,0}, + [I(10,198)] = {64,0}, + [I(11,198)] = {64,0}, + [I(12,198)] = {64,0}, + [I(13,198)] = {64,0}, + [I(14,198)] = {64,0}, + [I(15,198)] = {64,0}, + [I(16,198)] = {64,0}, + [I(17,198)] = {64,0}, + [I(18,198)] = {64,0}, + [I(19,198)] = {64,0}, + [I(20,198)] = {64,0}, + [I(21,198)] = {64,0}, + [I(22,198)] = {64,0}, + [I(23,198)] = {64,0}, + [I(24,198)] = {64,0}, + [I(25,198)] = {64,0}, + [I(26,198)] = {64,0}, + [I(27,198)] = {64,0}, + [I(28,198)] = {64,0}, + [I(29,198)] = {64,0}, + [I(30,198)] = {64,0}, + [I(31,198)] = {64,0}, + [I(32,198)] = {28,0x53FFFE8}, + [I(33,198)] = {X32,0xFE3FFFE8}, + [I(34,198)] = {X32,0xFE7FFFE8}, + [I(35,198)] = {64,0}, + [I(36,198)] = {64,0}, + [I(37,198)] = {28,0x57FFFE8}, + [I(38,198)] = {30,0x3E3FFFE8}, + [I(39,198)] = {64,0}, + [I(40,198)] = {X32,0xFEBFFFE8}, + [I(41,198)] = {X32,0xFEFFFFE8}, + [I(42,198)] = {30,0x3E7FFFE8}, + [I(43,198)] = {64,0}, + [I(44,198)] = {30,0x3EBFFFE8}, + [I(45,198)] = {28,0x5BFFFE8}, + [I(46,198)] = {28,0x5FFFFE8}, + [I(47,198)] = {28,0x63FFFE8}, + [I(48,198)] = {27,0x3FFFE8}, + [I(49,198)] = {27,0x7FFFE8}, + [I(50,198)] = {27,0xBFFFE8}, + [I(51,198)] = {28,0x67FFFE8}, + [I(52,198)] = {28,0x6BFFFE8}, + [I(53,198)] = {28,0x6FFFFE8}, + [I(54,198)] = {28,0x73FFFE8}, + [I(55,198)] = {28,0x77FFFE8}, + [I(56,198)] = {28,0x7BFFFE8}, + [I(57,198)] = {28,0x7FFFFE8}, + [I(58,198)] = {29,0x173FFFE8}, + [I(59,198)] = {30,0x3EFFFFE8}, + [I(60,198)] = {64,0}, + [I(61,198)] = {28,0x83FFFE8}, + [I(62,198)] = {64,0}, + [I(63,198)] = {X32,0xFF3FFFE8}, + [I(64,198)] = {64,0}, + [I(65,198)] = {28,0x87FFFE8}, + [I(66,198)] = {29,0x177FFFE8}, + [I(67,198)] = {29,0x17BFFFE8}, + [I(68,198)] = {29,0x17FFFFE8}, + [I(69,198)] = {29,0x183FFFE8}, + [I(70,198)] = {29,0x187FFFE8}, + [I(71,198)] = {29,0x18BFFFE8}, + [I(72,198)] = {29,0x18FFFFE8}, + [I(73,198)] = {29,0x193FFFE8}, + [I(74,198)] = {29,0x197FFFE8}, + [I(75,198)] = {29,0x19BFFFE8}, + [I(76,198)] = {29,0x19FFFFE8}, + [I(77,198)] = {29,0x1A3FFFE8}, + [I(78,198)] = {29,0x1A7FFFE8}, + [I(79,198)] = {29,0x1ABFFFE8}, + [I(80,198)] = {29,0x1AFFFFE8}, + [I(81,198)] = {29,0x1B3FFFE8}, + [I(82,198)] = {29,0x1B7FFFE8}, + [I(83,198)] = {29,0x1BBFFFE8}, + [I(84,198)] = {29,0x1BFFFFE8}, + [I(85,198)] = {29,0x1C3FFFE8}, + [I(86,198)] = {29,0x1C7FFFE8}, + [I(87,198)] = {29,0x1CBFFFE8}, + [I(88,198)] = {30,0x3F3FFFE8}, + [I(89,198)] = {29,0x1CFFFFE8}, + [I(90,198)] = {30,0x3F7FFFE8}, + [I(91,198)] = {64,0}, + [I(92,198)] = {64,0}, + [I(93,198)] = {64,0}, + [I(94,198)] = {64,0}, + [I(95,198)] = {28,0x8BFFFE8}, + [I(96,198)] = {64,0}, + [I(97,198)] = {27,0xFFFFE8}, + [I(98,198)] = {28,0x8FFFFE8}, + [I(99,198)] = {27,0x13FFFE8}, + [I(100,198)] = {28,0x93FFFE8}, + [I(101,198)] = {27,0x17FFFE8}, + [I(102,198)] = {28,0x97FFFE8}, + [I(103,198)] = {28,0x9BFFFE8}, + [I(104,198)] = {28,0x9FFFFE8}, + [I(105,198)] = {27,0x1BFFFE8}, + [I(106,198)] = {29,0x1D3FFFE8}, + [I(107,198)] = {29,0x1D7FFFE8}, + [I(108,198)] = {28,0xA3FFFE8}, + [I(109,198)] = {28,0xA7FFFE8}, + [I(110,198)] = {28,0xABFFFE8}, + [I(111,198)] = {27,0x1FFFFE8}, + [I(112,198)] = {28,0xAFFFFE8}, + [I(113,198)] = {29,0x1DBFFFE8}, + [I(114,198)] = {28,0xB3FFFE8}, + [I(115,198)] = {27,0x23FFFE8}, + [I(116,198)] = {27,0x27FFFE8}, + [I(117,198)] = {28,0xB7FFFE8}, + [I(118,198)] = {29,0x1DFFFFE8}, + [I(119,198)] = {29,0x1E3FFFE8}, + [I(120,198)] = {29,0x1E7FFFE8}, + [I(121,198)] = {29,0x1EBFFFE8}, + [I(122,198)] = {29,0x1EFFFFE8}, + [I(123,198)] = {64,0}, + [I(124,198)] = {64,0}, + [I(125,198)] = {64,0}, + [I(126,198)] = {64,0}, + [I(127,198)] = {64,0}, + [I(128,198)] = {64,0}, + [I(129,198)] = {64,0}, + [I(130,198)] = {64,0}, + [I(131,198)] = {64,0}, + [I(132,198)] = {64,0}, + [I(133,198)] = {64,0}, + [I(134,198)] = {64,0}, + [I(135,198)] = {64,0}, + [I(136,198)] = {64,0}, + [I(137,198)] = {64,0}, + [I(138,198)] = {64,0}, + [I(139,198)] = {64,0}, + [I(140,198)] = {64,0}, + [I(141,198)] = {64,0}, + [I(142,198)] = {64,0}, + [I(143,198)] = {64,0}, + [I(144,198)] = {64,0}, + [I(145,198)] = {64,0}, + [I(146,198)] = {64,0}, + [I(147,198)] = {64,0}, + [I(148,198)] = {64,0}, + [I(149,198)] = {64,0}, + [I(150,198)] = {64,0}, + [I(151,198)] = {64,0}, + [I(152,198)] = {64,0}, + [I(153,198)] = {64,0}, + [I(154,198)] = {64,0}, + [I(155,198)] = {64,0}, + [I(156,198)] = {64,0}, + [I(157,198)] = {64,0}, + [I(158,198)] = {64,0}, + [I(159,198)] = {64,0}, + [I(160,198)] = {64,0}, + [I(161,198)] = {64,0}, + [I(162,198)] = {64,0}, + [I(163,198)] = {64,0}, + [I(164,198)] = {64,0}, + [I(165,198)] = {64,0}, + [I(166,198)] = {64,0}, + [I(167,198)] = {64,0}, + [I(168,198)] = {64,0}, + [I(169,198)] = {64,0}, + [I(170,198)] = {64,0}, + [I(171,198)] = {64,0}, + [I(172,198)] = {64,0}, + [I(173,198)] = {64,0}, + [I(174,198)] = {64,0}, + [I(175,198)] = {64,0}, + [I(176,198)] = {64,0}, + [I(177,198)] = {64,0}, + [I(178,198)] = {64,0}, + [I(179,198)] = {64,0}, + [I(180,198)] = {64,0}, + [I(181,198)] = {64,0}, + [I(182,198)] = {64,0}, + [I(183,198)] = {64,0}, + [I(184,198)] = {64,0}, + [I(185,198)] = {64,0}, + [I(186,198)] = {64,0}, + [I(187,198)] = {64,0}, + [I(188,198)] = {64,0}, + [I(189,198)] = {64,0}, + [I(190,198)] = {64,0}, + [I(191,198)] = {64,0}, + [I(192,198)] = {64,0}, + [I(193,198)] = {64,0}, + [I(194,198)] = {64,0}, + [I(195,198)] = {64,0}, + [I(196,198)] = {64,0}, + [I(197,198)] = {64,0}, + [I(198,198)] = {64,0}, + [I(199,198)] = {64,0}, + [I(200,198)] = {64,0}, + [I(201,198)] = {64,0}, + [I(202,198)] = {64,0}, + [I(203,198)] = {64,0}, + [I(204,198)] = {64,0}, + [I(205,198)] = {64,0}, + [I(206,198)] = {64,0}, + [I(207,198)] = {64,0}, + [I(208,198)] = {64,0}, + [I(209,198)] = {64,0}, + [I(210,198)] = {64,0}, + [I(211,198)] = {64,0}, + [I(212,198)] = {64,0}, + [I(213,198)] = {64,0}, + [I(214,198)] = {64,0}, + [I(215,198)] = {64,0}, + [I(216,198)] = {64,0}, + [I(217,198)] = {64,0}, + [I(218,198)] = {64,0}, + [I(219,198)] = {64,0}, + [I(220,198)] = {64,0}, + [I(221,198)] = {64,0}, + [I(222,198)] = {64,0}, + [I(223,198)] = {64,0}, + [I(224,198)] = {64,0}, + [I(225,198)] = {64,0}, + [I(226,198)] = {64,0}, + [I(227,198)] = {64,0}, + [I(228,198)] = {64,0}, + [I(229,198)] = {64,0}, + [I(230,198)] = {64,0}, + [I(231,198)] = {64,0}, + [I(232,198)] = {64,0}, + [I(233,198)] = {64,0}, + [I(234,198)] = {64,0}, + [I(235,198)] = {64,0}, + [I(236,198)] = {64,0}, + [I(237,198)] = {64,0}, + [I(238,198)] = {64,0}, + [I(239,198)] = {64,0}, + [I(240,198)] = {64,0}, + [I(241,198)] = {64,0}, + [I(242,198)] = {64,0}, + [I(243,198)] = {64,0}, + [I(244,198)] = {64,0}, + [I(245,198)] = {64,0}, + [I(246,198)] = {64,0}, + [I(247,198)] = {64,0}, + [I(248,198)] = {64,0}, + [I(249,198)] = {64,0}, + [I(250,198)] = {64,0}, + [I(251,198)] = {64,0}, + [I(252,198)] = {64,0}, + [I(253,198)] = {64,0}, + [I(254,198)] = {64,0}, + [I(255,198)] = {64,0}, + [I(0,199)] = {64,0}, + [I(1,199)] = {64,0}, + [I(2,199)] = {64,0}, + [I(3,199)] = {64,0}, + [I(4,199)] = {64,0}, + [I(5,199)] = {64,0}, + [I(6,199)] = {64,0}, + [I(7,199)] = {64,0}, + [I(8,199)] = {64,0}, + [I(9,199)] = {64,0}, + [I(10,199)] = {64,0}, + [I(11,199)] = {64,0}, + [I(12,199)] = {64,0}, + [I(13,199)] = {64,0}, + [I(14,199)] = {64,0}, + [I(15,199)] = {64,0}, + [I(16,199)] = {64,0}, + [I(17,199)] = {64,0}, + [I(18,199)] = {64,0}, + [I(19,199)] = {64,0}, + [I(20,199)] = {64,0}, + [I(21,199)] = {64,0}, + [I(22,199)] = {64,0}, + [I(23,199)] = {64,0}, + [I(24,199)] = {64,0}, + [I(25,199)] = {64,0}, + [I(26,199)] = {64,0}, + [I(27,199)] = {64,0}, + [I(28,199)] = {64,0}, + [I(29,199)] = {64,0}, + [I(30,199)] = {64,0}, + [I(31,199)] = {64,0}, + [I(32,199)] = {31,0x29FFFFEC}, + [I(33,199)] = {64,0}, + [I(34,199)] = {64,0}, + [I(35,199)] = {64,0}, + [I(36,199)] = {64,0}, + [I(37,199)] = {31,0x2BFFFFEC}, + [I(38,199)] = {64,0}, + [I(39,199)] = {64,0}, + [I(40,199)] = {64,0}, + [I(41,199)] = {64,0}, + [I(42,199)] = {64,0}, + [I(43,199)] = {64,0}, + [I(44,199)] = {64,0}, + [I(45,199)] = {31,0x2DFFFFEC}, + [I(46,199)] = {31,0x2FFFFFEC}, + [I(47,199)] = {31,0x31FFFFEC}, + [I(48,199)] = {30,0x1FFFFEC}, + [I(49,199)] = {30,0x3FFFFEC}, + [I(50,199)] = {30,0x5FFFFEC}, + [I(51,199)] = {31,0x33FFFFEC}, + [I(52,199)] = {31,0x35FFFFEC}, + [I(53,199)] = {31,0x37FFFFEC}, + [I(54,199)] = {31,0x39FFFFEC}, + [I(55,199)] = {31,0x3BFFFFEC}, + [I(56,199)] = {31,0x3DFFFFEC}, + [I(57,199)] = {31,0x3FFFFFEC}, + [I(58,199)] = {X32,0xB9FFFFEC}, + [I(59,199)] = {64,0}, + [I(60,199)] = {64,0}, + [I(61,199)] = {31,0x41FFFFEC}, + [I(62,199)] = {64,0}, + [I(63,199)] = {64,0}, + [I(64,199)] = {64,0}, + [I(65,199)] = {31,0x43FFFFEC}, + [I(66,199)] = {X32,0xBBFFFFEC}, + [I(67,199)] = {X32,0xBDFFFFEC}, + [I(68,199)] = {X32,0xBFFFFFEC}, + [I(69,199)] = {X32,0xC1FFFFEC}, + [I(70,199)] = {X32,0xC3FFFFEC}, + [I(71,199)] = {X32,0xC5FFFFEC}, + [I(72,199)] = {X32,0xC7FFFFEC}, + [I(73,199)] = {X32,0xC9FFFFEC}, + [I(74,199)] = {X32,0xCBFFFFEC}, + [I(75,199)] = {X32,0xCDFFFFEC}, + [I(76,199)] = {X32,0xCFFFFFEC}, + [I(77,199)] = {X32,0xD1FFFFEC}, + [I(78,199)] = {X32,0xD3FFFFEC}, + [I(79,199)] = {X32,0xD5FFFFEC}, + [I(80,199)] = {X32,0xD7FFFFEC}, + [I(81,199)] = {X32,0xD9FFFFEC}, + [I(82,199)] = {X32,0xDBFFFFEC}, + [I(83,199)] = {X32,0xDDFFFFEC}, + [I(84,199)] = {X32,0xDFFFFFEC}, + [I(85,199)] = {X32,0xE1FFFFEC}, + [I(86,199)] = {X32,0xE3FFFFEC}, + [I(87,199)] = {X32,0xE5FFFFEC}, + [I(88,199)] = {64,0}, + [I(89,199)] = {X32,0xE7FFFFEC}, + [I(90,199)] = {64,0}, + [I(91,199)] = {64,0}, + [I(92,199)] = {64,0}, + [I(93,199)] = {64,0}, + [I(94,199)] = {64,0}, + [I(95,199)] = {31,0x45FFFFEC}, + [I(96,199)] = {64,0}, + [I(97,199)] = {30,0x7FFFFEC}, + [I(98,199)] = {31,0x47FFFFEC}, + [I(99,199)] = {30,0x9FFFFEC}, + [I(100,199)] = {31,0x49FFFFEC}, + [I(101,199)] = {30,0xBFFFFEC}, + [I(102,199)] = {31,0x4BFFFFEC}, + [I(103,199)] = {31,0x4DFFFFEC}, + [I(104,199)] = {31,0x4FFFFFEC}, + [I(105,199)] = {30,0xDFFFFEC}, + [I(106,199)] = {X32,0xE9FFFFEC}, + [I(107,199)] = {X32,0xEBFFFFEC}, + [I(108,199)] = {31,0x51FFFFEC}, + [I(109,199)] = {31,0x53FFFFEC}, + [I(110,199)] = {31,0x55FFFFEC}, + [I(111,199)] = {30,0xFFFFFEC}, + [I(112,199)] = {31,0x57FFFFEC}, + [I(113,199)] = {X32,0xEDFFFFEC}, + [I(114,199)] = {31,0x59FFFFEC}, + [I(115,199)] = {30,0x11FFFFEC}, + [I(116,199)] = {30,0x13FFFFEC}, + [I(117,199)] = {31,0x5BFFFFEC}, + [I(118,199)] = {X32,0xEFFFFFEC}, + [I(119,199)] = {X32,0xF1FFFFEC}, + [I(120,199)] = {X32,0xF3FFFFEC}, + [I(121,199)] = {X32,0xF5FFFFEC}, + [I(122,199)] = {X32,0xF7FFFFEC}, + [I(123,199)] = {64,0}, + [I(124,199)] = {64,0}, + [I(125,199)] = {64,0}, + [I(126,199)] = {64,0}, + [I(127,199)] = {64,0}, + [I(128,199)] = {64,0}, + [I(129,199)] = {64,0}, + [I(130,199)] = {64,0}, + [I(131,199)] = {64,0}, + [I(132,199)] = {64,0}, + [I(133,199)] = {64,0}, + [I(134,199)] = {64,0}, + [I(135,199)] = {64,0}, + [I(136,199)] = {64,0}, + [I(137,199)] = {64,0}, + [I(138,199)] = {64,0}, + [I(139,199)] = {64,0}, + [I(140,199)] = {64,0}, + [I(141,199)] = {64,0}, + [I(142,199)] = {64,0}, + [I(143,199)] = {64,0}, + [I(144,199)] = {64,0}, + [I(145,199)] = {64,0}, + [I(146,199)] = {64,0}, + [I(147,199)] = {64,0}, + [I(148,199)] = {64,0}, + [I(149,199)] = {64,0}, + [I(150,199)] = {64,0}, + [I(151,199)] = {64,0}, + [I(152,199)] = {64,0}, + [I(153,199)] = {64,0}, + [I(154,199)] = {64,0}, + [I(155,199)] = {64,0}, + [I(156,199)] = {64,0}, + [I(157,199)] = {64,0}, + [I(158,199)] = {64,0}, + [I(159,199)] = {64,0}, + [I(160,199)] = {64,0}, + [I(161,199)] = {64,0}, + [I(162,199)] = {64,0}, + [I(163,199)] = {64,0}, + [I(164,199)] = {64,0}, + [I(165,199)] = {64,0}, + [I(166,199)] = {64,0}, + [I(167,199)] = {64,0}, + [I(168,199)] = {64,0}, + [I(169,199)] = {64,0}, + [I(170,199)] = {64,0}, + [I(171,199)] = {64,0}, + [I(172,199)] = {64,0}, + [I(173,199)] = {64,0}, + [I(174,199)] = {64,0}, + [I(175,199)] = {64,0}, + [I(176,199)] = {64,0}, + [I(177,199)] = {64,0}, + [I(178,199)] = {64,0}, + [I(179,199)] = {64,0}, + [I(180,199)] = {64,0}, + [I(181,199)] = {64,0}, + [I(182,199)] = {64,0}, + [I(183,199)] = {64,0}, + [I(184,199)] = {64,0}, + [I(185,199)] = {64,0}, + [I(186,199)] = {64,0}, + [I(187,199)] = {64,0}, + [I(188,199)] = {64,0}, + [I(189,199)] = {64,0}, + [I(190,199)] = {64,0}, + [I(191,199)] = {64,0}, + [I(192,199)] = {64,0}, + [I(193,199)] = {64,0}, + [I(194,199)] = {64,0}, + [I(195,199)] = {64,0}, + [I(196,199)] = {64,0}, + [I(197,199)] = {64,0}, + [I(198,199)] = {64,0}, + [I(199,199)] = {64,0}, + [I(200,199)] = {64,0}, + [I(201,199)] = {64,0}, + [I(202,199)] = {64,0}, + [I(203,199)] = {64,0}, + [I(204,199)] = {64,0}, + [I(205,199)] = {64,0}, + [I(206,199)] = {64,0}, + [I(207,199)] = {64,0}, + [I(208,199)] = {64,0}, + [I(209,199)] = {64,0}, + [I(210,199)] = {64,0}, + [I(211,199)] = {64,0}, + [I(212,199)] = {64,0}, + [I(213,199)] = {64,0}, + [I(214,199)] = {64,0}, + [I(215,199)] = {64,0}, + [I(216,199)] = {64,0}, + [I(217,199)] = {64,0}, + [I(218,199)] = {64,0}, + [I(219,199)] = {64,0}, + [I(220,199)] = {64,0}, + [I(221,199)] = {64,0}, + [I(222,199)] = {64,0}, + [I(223,199)] = {64,0}, + [I(224,199)] = {64,0}, + [I(225,199)] = {64,0}, + [I(226,199)] = {64,0}, + [I(227,199)] = {64,0}, + [I(228,199)] = {64,0}, + [I(229,199)] = {64,0}, + [I(230,199)] = {64,0}, + [I(231,199)] = {64,0}, + [I(232,199)] = {64,0}, + [I(233,199)] = {64,0}, + [I(234,199)] = {64,0}, + [I(235,199)] = {64,0}, + [I(236,199)] = {64,0}, + [I(237,199)] = {64,0}, + [I(238,199)] = {64,0}, + [I(239,199)] = {64,0}, + [I(240,199)] = {64,0}, + [I(241,199)] = {64,0}, + [I(242,199)] = {64,0}, + [I(243,199)] = {64,0}, + [I(244,199)] = {64,0}, + [I(245,199)] = {64,0}, + [I(246,199)] = {64,0}, + [I(247,199)] = {64,0}, + [I(248,199)] = {64,0}, + [I(249,199)] = {64,0}, + [I(250,199)] = {64,0}, + [I(251,199)] = {64,0}, + [I(252,199)] = {64,0}, + [I(253,199)] = {64,0}, + [I(254,199)] = {64,0}, + [I(255,199)] = {64,0}, + [I(0,200)] = {64,0}, + [I(1,200)] = {64,0}, + [I(2,200)] = {64,0}, + [I(3,200)] = {64,0}, + [I(4,200)] = {64,0}, + [I(5,200)] = {64,0}, + [I(6,200)] = {64,0}, + [I(7,200)] = {64,0}, + [I(8,200)] = {64,0}, + [I(9,200)] = {64,0}, + [I(10,200)] = {64,0}, + [I(11,200)] = {64,0}, + [I(12,200)] = {64,0}, + [I(13,200)] = {64,0}, + [I(14,200)] = {64,0}, + [I(15,200)] = {64,0}, + [I(16,200)] = {64,0}, + [I(17,200)] = {64,0}, + [I(18,200)] = {64,0}, + [I(19,200)] = {64,0}, + [I(20,200)] = {64,0}, + [I(21,200)] = {64,0}, + [I(22,200)] = {64,0}, + [I(23,200)] = {64,0}, + [I(24,200)] = {64,0}, + [I(25,200)] = {64,0}, + [I(26,200)] = {64,0}, + [I(27,200)] = {64,0}, + [I(28,200)] = {64,0}, + [I(29,200)] = {64,0}, + [I(30,200)] = {64,0}, + [I(31,200)] = {64,0}, + [I(32,200)] = {X32,0x53FFFFE2}, + [I(33,200)] = {64,0}, + [I(34,200)] = {64,0}, + [I(35,200)] = {64,0}, + [I(36,200)] = {64,0}, + [I(37,200)] = {X32,0x57FFFFE2}, + [I(38,200)] = {64,0}, + [I(39,200)] = {64,0}, + [I(40,200)] = {64,0}, + [I(41,200)] = {64,0}, + [I(42,200)] = {64,0}, + [I(43,200)] = {64,0}, + [I(44,200)] = {64,0}, + [I(45,200)] = {X32,0x5BFFFFE2}, + [I(46,200)] = {X32,0x5FFFFFE2}, + [I(47,200)] = {X32,0x63FFFFE2}, + [I(48,200)] = {31,0x3FFFFE2}, + [I(49,200)] = {31,0x7FFFFE2}, + [I(50,200)] = {31,0xBFFFFE2}, + [I(51,200)] = {X32,0x67FFFFE2}, + [I(52,200)] = {X32,0x6BFFFFE2}, + [I(53,200)] = {X32,0x6FFFFFE2}, + [I(54,200)] = {X32,0x73FFFFE2}, + [I(55,200)] = {X32,0x77FFFFE2}, + [I(56,200)] = {X32,0x7BFFFFE2}, + [I(57,200)] = {X32,0x7FFFFFE2}, + [I(58,200)] = {64,0}, + [I(59,200)] = {64,0}, + [I(60,200)] = {64,0}, + [I(61,200)] = {X32,0x83FFFFE2}, + [I(62,200)] = {64,0}, + [I(63,200)] = {64,0}, + [I(64,200)] = {64,0}, + [I(65,200)] = {X32,0x87FFFFE2}, + [I(66,200)] = {64,0}, + [I(67,200)] = {64,0}, + [I(68,200)] = {64,0}, + [I(69,200)] = {64,0}, + [I(70,200)] = {64,0}, + [I(71,200)] = {64,0}, + [I(72,200)] = {64,0}, + [I(73,200)] = {64,0}, + [I(74,200)] = {64,0}, + [I(75,200)] = {64,0}, + [I(76,200)] = {64,0}, + [I(77,200)] = {64,0}, + [I(78,200)] = {64,0}, + [I(79,200)] = {64,0}, + [I(80,200)] = {64,0}, + [I(81,200)] = {64,0}, + [I(82,200)] = {64,0}, + [I(83,200)] = {64,0}, + [I(84,200)] = {64,0}, + [I(85,200)] = {64,0}, + [I(86,200)] = {64,0}, + [I(87,200)] = {64,0}, + [I(88,200)] = {64,0}, + [I(89,200)] = {64,0}, + [I(90,200)] = {64,0}, + [I(91,200)] = {64,0}, + [I(92,200)] = {64,0}, + [I(93,200)] = {64,0}, + [I(94,200)] = {64,0}, + [I(95,200)] = {X32,0x8BFFFFE2}, + [I(96,200)] = {64,0}, + [I(97,200)] = {31,0xFFFFFE2}, + [I(98,200)] = {X32,0x8FFFFFE2}, + [I(99,200)] = {31,0x13FFFFE2}, + [I(100,200)] = {X32,0x93FFFFE2}, + [I(101,200)] = {31,0x17FFFFE2}, + [I(102,200)] = {X32,0x97FFFFE2}, + [I(103,200)] = {X32,0x9BFFFFE2}, + [I(104,200)] = {X32,0x9FFFFFE2}, + [I(105,200)] = {31,0x1BFFFFE2}, + [I(106,200)] = {64,0}, + [I(107,200)] = {64,0}, + [I(108,200)] = {X32,0xA3FFFFE2}, + [I(109,200)] = {X32,0xA7FFFFE2}, + [I(110,200)] = {X32,0xABFFFFE2}, + [I(111,200)] = {31,0x1FFFFFE2}, + [I(112,200)] = {X32,0xAFFFFFE2}, + [I(113,200)] = {64,0}, + [I(114,200)] = {X32,0xB3FFFFE2}, + [I(115,200)] = {31,0x23FFFFE2}, + [I(116,200)] = {31,0x27FFFFE2}, + [I(117,200)] = {X32,0xB7FFFFE2}, + [I(118,200)] = {64,0}, + [I(119,200)] = {64,0}, + [I(120,200)] = {64,0}, + [I(121,200)] = {64,0}, + [I(122,200)] = {64,0}, + [I(123,200)] = {64,0}, + [I(124,200)] = {64,0}, + [I(125,200)] = {64,0}, + [I(126,200)] = {64,0}, + [I(127,200)] = {64,0}, + [I(128,200)] = {64,0}, + [I(129,200)] = {64,0}, + [I(130,200)] = {64,0}, + [I(131,200)] = {64,0}, + [I(132,200)] = {64,0}, + [I(133,200)] = {64,0}, + [I(134,200)] = {64,0}, + [I(135,200)] = {64,0}, + [I(136,200)] = {64,0}, + [I(137,200)] = {64,0}, + [I(138,200)] = {64,0}, + [I(139,200)] = {64,0}, + [I(140,200)] = {64,0}, + [I(141,200)] = {64,0}, + [I(142,200)] = {64,0}, + [I(143,200)] = {64,0}, + [I(144,200)] = {64,0}, + [I(145,200)] = {64,0}, + [I(146,200)] = {64,0}, + [I(147,200)] = {64,0}, + [I(148,200)] = {64,0}, + [I(149,200)] = {64,0}, + [I(150,200)] = {64,0}, + [I(151,200)] = {64,0}, + [I(152,200)] = {64,0}, + [I(153,200)] = {64,0}, + [I(154,200)] = {64,0}, + [I(155,200)] = {64,0}, + [I(156,200)] = {64,0}, + [I(157,200)] = {64,0}, + [I(158,200)] = {64,0}, + [I(159,200)] = {64,0}, + [I(160,200)] = {64,0}, + [I(161,200)] = {64,0}, + [I(162,200)] = {64,0}, + [I(163,200)] = {64,0}, + [I(164,200)] = {64,0}, + [I(165,200)] = {64,0}, + [I(166,200)] = {64,0}, + [I(167,200)] = {64,0}, + [I(168,200)] = {64,0}, + [I(169,200)] = {64,0}, + [I(170,200)] = {64,0}, + [I(171,200)] = {64,0}, + [I(172,200)] = {64,0}, + [I(173,200)] = {64,0}, + [I(174,200)] = {64,0}, + [I(175,200)] = {64,0}, + [I(176,200)] = {64,0}, + [I(177,200)] = {64,0}, + [I(178,200)] = {64,0}, + [I(179,200)] = {64,0}, + [I(180,200)] = {64,0}, + [I(181,200)] = {64,0}, + [I(182,200)] = {64,0}, + [I(183,200)] = {64,0}, + [I(184,200)] = {64,0}, + [I(185,200)] = {64,0}, + [I(186,200)] = {64,0}, + [I(187,200)] = {64,0}, + [I(188,200)] = {64,0}, + [I(189,200)] = {64,0}, + [I(190,200)] = {64,0}, + [I(191,200)] = {64,0}, + [I(192,200)] = {64,0}, + [I(193,200)] = {64,0}, + [I(194,200)] = {64,0}, + [I(195,200)] = {64,0}, + [I(196,200)] = {64,0}, + [I(197,200)] = {64,0}, + [I(198,200)] = {64,0}, + [I(199,200)] = {64,0}, + [I(200,200)] = {64,0}, + [I(201,200)] = {64,0}, + [I(202,200)] = {64,0}, + [I(203,200)] = {64,0}, + [I(204,200)] = {64,0}, + [I(205,200)] = {64,0}, + [I(206,200)] = {64,0}, + [I(207,200)] = {64,0}, + [I(208,200)] = {64,0}, + [I(209,200)] = {64,0}, + [I(210,200)] = {64,0}, + [I(211,200)] = {64,0}, + [I(212,200)] = {64,0}, + [I(213,200)] = {64,0}, + [I(214,200)] = {64,0}, + [I(215,200)] = {64,0}, + [I(216,200)] = {64,0}, + [I(217,200)] = {64,0}, + [I(218,200)] = {64,0}, + [I(219,200)] = {64,0}, + [I(220,200)] = {64,0}, + [I(221,200)] = {64,0}, + [I(222,200)] = {64,0}, + [I(223,200)] = {64,0}, + [I(224,200)] = {64,0}, + [I(225,200)] = {64,0}, + [I(226,200)] = {64,0}, + [I(227,200)] = {64,0}, + [I(228,200)] = {64,0}, + [I(229,200)] = {64,0}, + [I(230,200)] = {64,0}, + [I(231,200)] = {64,0}, + [I(232,200)] = {64,0}, + [I(233,200)] = {64,0}, + [I(234,200)] = {64,0}, + [I(235,200)] = {64,0}, + [I(236,200)] = {64,0}, + [I(237,200)] = {64,0}, + [I(238,200)] = {64,0}, + [I(239,200)] = {64,0}, + [I(240,200)] = {64,0}, + [I(241,200)] = {64,0}, + [I(242,200)] = {64,0}, + [I(243,200)] = {64,0}, + [I(244,200)] = {64,0}, + [I(245,200)] = {64,0}, + [I(246,200)] = {64,0}, + [I(247,200)] = {64,0}, + [I(248,200)] = {64,0}, + [I(249,200)] = {64,0}, + [I(250,200)] = {64,0}, + [I(251,200)] = {64,0}, + [I(252,200)] = {64,0}, + [I(253,200)] = {64,0}, + [I(254,200)] = {64,0}, + [I(255,200)] = {64,0}, + [I(0,201)] = {64,0}, + [I(1,201)] = {64,0}, + [I(2,201)] = {64,0}, + [I(3,201)] = {64,0}, + [I(4,201)] = {64,0}, + [I(5,201)] = {64,0}, + [I(6,201)] = {64,0}, + [I(7,201)] = {64,0}, + [I(8,201)] = {64,0}, + [I(9,201)] = {64,0}, + [I(10,201)] = {64,0}, + [I(11,201)] = {64,0}, + [I(12,201)] = {64,0}, + [I(13,201)] = {64,0}, + [I(14,201)] = {64,0}, + [I(15,201)] = {64,0}, + [I(16,201)] = {64,0}, + [I(17,201)] = {64,0}, + [I(18,201)] = {64,0}, + [I(19,201)] = {64,0}, + [I(20,201)] = {64,0}, + [I(21,201)] = {64,0}, + [I(22,201)] = {64,0}, + [I(23,201)] = {64,0}, + [I(24,201)] = {64,0}, + [I(25,201)] = {64,0}, + [I(26,201)] = {64,0}, + [I(27,201)] = {64,0}, + [I(28,201)] = {64,0}, + [I(29,201)] = {64,0}, + [I(30,201)] = {64,0}, + [I(31,201)] = {64,0}, + [I(32,201)] = {X32,0x53FFFFE3}, + [I(33,201)] = {64,0}, + [I(34,201)] = {64,0}, + [I(35,201)] = {64,0}, + [I(36,201)] = {64,0}, + [I(37,201)] = {X32,0x57FFFFE3}, + [I(38,201)] = {64,0}, + [I(39,201)] = {64,0}, + [I(40,201)] = {64,0}, + [I(41,201)] = {64,0}, + [I(42,201)] = {64,0}, + [I(43,201)] = {64,0}, + [I(44,201)] = {64,0}, + [I(45,201)] = {X32,0x5BFFFFE3}, + [I(46,201)] = {X32,0x5FFFFFE3}, + [I(47,201)] = {X32,0x63FFFFE3}, + [I(48,201)] = {31,0x3FFFFE3}, + [I(49,201)] = {31,0x7FFFFE3}, + [I(50,201)] = {31,0xBFFFFE3}, + [I(51,201)] = {X32,0x67FFFFE3}, + [I(52,201)] = {X32,0x6BFFFFE3}, + [I(53,201)] = {X32,0x6FFFFFE3}, + [I(54,201)] = {X32,0x73FFFFE3}, + [I(55,201)] = {X32,0x77FFFFE3}, + [I(56,201)] = {X32,0x7BFFFFE3}, + [I(57,201)] = {X32,0x7FFFFFE3}, + [I(58,201)] = {64,0}, + [I(59,201)] = {64,0}, + [I(60,201)] = {64,0}, + [I(61,201)] = {X32,0x83FFFFE3}, + [I(62,201)] = {64,0}, + [I(63,201)] = {64,0}, + [I(64,201)] = {64,0}, + [I(65,201)] = {X32,0x87FFFFE3}, + [I(66,201)] = {64,0}, + [I(67,201)] = {64,0}, + [I(68,201)] = {64,0}, + [I(69,201)] = {64,0}, + [I(70,201)] = {64,0}, + [I(71,201)] = {64,0}, + [I(72,201)] = {64,0}, + [I(73,201)] = {64,0}, + [I(74,201)] = {64,0}, + [I(75,201)] = {64,0}, + [I(76,201)] = {64,0}, + [I(77,201)] = {64,0}, + [I(78,201)] = {64,0}, + [I(79,201)] = {64,0}, + [I(80,201)] = {64,0}, + [I(81,201)] = {64,0}, + [I(82,201)] = {64,0}, + [I(83,201)] = {64,0}, + [I(84,201)] = {64,0}, + [I(85,201)] = {64,0}, + [I(86,201)] = {64,0}, + [I(87,201)] = {64,0}, + [I(88,201)] = {64,0}, + [I(89,201)] = {64,0}, + [I(90,201)] = {64,0}, + [I(91,201)] = {64,0}, + [I(92,201)] = {64,0}, + [I(93,201)] = {64,0}, + [I(94,201)] = {64,0}, + [I(95,201)] = {X32,0x8BFFFFE3}, + [I(96,201)] = {64,0}, + [I(97,201)] = {31,0xFFFFFE3}, + [I(98,201)] = {X32,0x8FFFFFE3}, + [I(99,201)] = {31,0x13FFFFE3}, + [I(100,201)] = {X32,0x93FFFFE3}, + [I(101,201)] = {31,0x17FFFFE3}, + [I(102,201)] = {X32,0x97FFFFE3}, + [I(103,201)] = {X32,0x9BFFFFE3}, + [I(104,201)] = {X32,0x9FFFFFE3}, + [I(105,201)] = {31,0x1BFFFFE3}, + [I(106,201)] = {64,0}, + [I(107,201)] = {64,0}, + [I(108,201)] = {X32,0xA3FFFFE3}, + [I(109,201)] = {X32,0xA7FFFFE3}, + [I(110,201)] = {X32,0xABFFFFE3}, + [I(111,201)] = {31,0x1FFFFFE3}, + [I(112,201)] = {X32,0xAFFFFFE3}, + [I(113,201)] = {64,0}, + [I(114,201)] = {X32,0xB3FFFFE3}, + [I(115,201)] = {31,0x23FFFFE3}, + [I(116,201)] = {31,0x27FFFFE3}, + [I(117,201)] = {X32,0xB7FFFFE3}, + [I(118,201)] = {64,0}, + [I(119,201)] = {64,0}, + [I(120,201)] = {64,0}, + [I(121,201)] = {64,0}, + [I(122,201)] = {64,0}, + [I(123,201)] = {64,0}, + [I(124,201)] = {64,0}, + [I(125,201)] = {64,0}, + [I(126,201)] = {64,0}, + [I(127,201)] = {64,0}, + [I(128,201)] = {64,0}, + [I(129,201)] = {64,0}, + [I(130,201)] = {64,0}, + [I(131,201)] = {64,0}, + [I(132,201)] = {64,0}, + [I(133,201)] = {64,0}, + [I(134,201)] = {64,0}, + [I(135,201)] = {64,0}, + [I(136,201)] = {64,0}, + [I(137,201)] = {64,0}, + [I(138,201)] = {64,0}, + [I(139,201)] = {64,0}, + [I(140,201)] = {64,0}, + [I(141,201)] = {64,0}, + [I(142,201)] = {64,0}, + [I(143,201)] = {64,0}, + [I(144,201)] = {64,0}, + [I(145,201)] = {64,0}, + [I(146,201)] = {64,0}, + [I(147,201)] = {64,0}, + [I(148,201)] = {64,0}, + [I(149,201)] = {64,0}, + [I(150,201)] = {64,0}, + [I(151,201)] = {64,0}, + [I(152,201)] = {64,0}, + [I(153,201)] = {64,0}, + [I(154,201)] = {64,0}, + [I(155,201)] = {64,0}, + [I(156,201)] = {64,0}, + [I(157,201)] = {64,0}, + [I(158,201)] = {64,0}, + [I(159,201)] = {64,0}, + [I(160,201)] = {64,0}, + [I(161,201)] = {64,0}, + [I(162,201)] = {64,0}, + [I(163,201)] = {64,0}, + [I(164,201)] = {64,0}, + [I(165,201)] = {64,0}, + [I(166,201)] = {64,0}, + [I(167,201)] = {64,0}, + [I(168,201)] = {64,0}, + [I(169,201)] = {64,0}, + [I(170,201)] = {64,0}, + [I(171,201)] = {64,0}, + [I(172,201)] = {64,0}, + [I(173,201)] = {64,0}, + [I(174,201)] = {64,0}, + [I(175,201)] = {64,0}, + [I(176,201)] = {64,0}, + [I(177,201)] = {64,0}, + [I(178,201)] = {64,0}, + [I(179,201)] = {64,0}, + [I(180,201)] = {64,0}, + [I(181,201)] = {64,0}, + [I(182,201)] = {64,0}, + [I(183,201)] = {64,0}, + [I(184,201)] = {64,0}, + [I(185,201)] = {64,0}, + [I(186,201)] = {64,0}, + [I(187,201)] = {64,0}, + [I(188,201)] = {64,0}, + [I(189,201)] = {64,0}, + [I(190,201)] = {64,0}, + [I(191,201)] = {64,0}, + [I(192,201)] = {64,0}, + [I(193,201)] = {64,0}, + [I(194,201)] = {64,0}, + [I(195,201)] = {64,0}, + [I(196,201)] = {64,0}, + [I(197,201)] = {64,0}, + [I(198,201)] = {64,0}, + [I(199,201)] = {64,0}, + [I(200,201)] = {64,0}, + [I(201,201)] = {64,0}, + [I(202,201)] = {64,0}, + [I(203,201)] = {64,0}, + [I(204,201)] = {64,0}, + [I(205,201)] = {64,0}, + [I(206,201)] = {64,0}, + [I(207,201)] = {64,0}, + [I(208,201)] = {64,0}, + [I(209,201)] = {64,0}, + [I(210,201)] = {64,0}, + [I(211,201)] = {64,0}, + [I(212,201)] = {64,0}, + [I(213,201)] = {64,0}, + [I(214,201)] = {64,0}, + [I(215,201)] = {64,0}, + [I(216,201)] = {64,0}, + [I(217,201)] = {64,0}, + [I(218,201)] = {64,0}, + [I(219,201)] = {64,0}, + [I(220,201)] = {64,0}, + [I(221,201)] = {64,0}, + [I(222,201)] = {64,0}, + [I(223,201)] = {64,0}, + [I(224,201)] = {64,0}, + [I(225,201)] = {64,0}, + [I(226,201)] = {64,0}, + [I(227,201)] = {64,0}, + [I(228,201)] = {64,0}, + [I(229,201)] = {64,0}, + [I(230,201)] = {64,0}, + [I(231,201)] = {64,0}, + [I(232,201)] = {64,0}, + [I(233,201)] = {64,0}, + [I(234,201)] = {64,0}, + [I(235,201)] = {64,0}, + [I(236,201)] = {64,0}, + [I(237,201)] = {64,0}, + [I(238,201)] = {64,0}, + [I(239,201)] = {64,0}, + [I(240,201)] = {64,0}, + [I(241,201)] = {64,0}, + [I(242,201)] = {64,0}, + [I(243,201)] = {64,0}, + [I(244,201)] = {64,0}, + [I(245,201)] = {64,0}, + [I(246,201)] = {64,0}, + [I(247,201)] = {64,0}, + [I(248,201)] = {64,0}, + [I(249,201)] = {64,0}, + [I(250,201)] = {64,0}, + [I(251,201)] = {64,0}, + [I(252,201)] = {64,0}, + [I(253,201)] = {64,0}, + [I(254,201)] = {64,0}, + [I(255,201)] = {64,0}, + [I(0,202)] = {64,0}, + [I(1,202)] = {64,0}, + [I(2,202)] = {64,0}, + [I(3,202)] = {64,0}, + [I(4,202)] = {64,0}, + [I(5,202)] = {64,0}, + [I(6,202)] = {64,0}, + [I(7,202)] = {64,0}, + [I(8,202)] = {64,0}, + [I(9,202)] = {64,0}, + [I(10,202)] = {64,0}, + [I(11,202)] = {64,0}, + [I(12,202)] = {64,0}, + [I(13,202)] = {64,0}, + [I(14,202)] = {64,0}, + [I(15,202)] = {64,0}, + [I(16,202)] = {64,0}, + [I(17,202)] = {64,0}, + [I(18,202)] = {64,0}, + [I(19,202)] = {64,0}, + [I(20,202)] = {64,0}, + [I(21,202)] = {64,0}, + [I(22,202)] = {64,0}, + [I(23,202)] = {64,0}, + [I(24,202)] = {64,0}, + [I(25,202)] = {64,0}, + [I(26,202)] = {64,0}, + [I(27,202)] = {64,0}, + [I(28,202)] = {64,0}, + [I(29,202)] = {64,0}, + [I(30,202)] = {64,0}, + [I(31,202)] = {64,0}, + [I(32,202)] = {X32,0x53FFFFE4}, + [I(33,202)] = {64,0}, + [I(34,202)] = {64,0}, + [I(35,202)] = {64,0}, + [I(36,202)] = {64,0}, + [I(37,202)] = {X32,0x57FFFFE4}, + [I(38,202)] = {64,0}, + [I(39,202)] = {64,0}, + [I(40,202)] = {64,0}, + [I(41,202)] = {64,0}, + [I(42,202)] = {64,0}, + [I(43,202)] = {64,0}, + [I(44,202)] = {64,0}, + [I(45,202)] = {X32,0x5BFFFFE4}, + [I(46,202)] = {X32,0x5FFFFFE4}, + [I(47,202)] = {X32,0x63FFFFE4}, + [I(48,202)] = {31,0x3FFFFE4}, + [I(49,202)] = {31,0x7FFFFE4}, + [I(50,202)] = {31,0xBFFFFE4}, + [I(51,202)] = {X32,0x67FFFFE4}, + [I(52,202)] = {X32,0x6BFFFFE4}, + [I(53,202)] = {X32,0x6FFFFFE4}, + [I(54,202)] = {X32,0x73FFFFE4}, + [I(55,202)] = {X32,0x77FFFFE4}, + [I(56,202)] = {X32,0x7BFFFFE4}, + [I(57,202)] = {X32,0x7FFFFFE4}, + [I(58,202)] = {64,0}, + [I(59,202)] = {64,0}, + [I(60,202)] = {64,0}, + [I(61,202)] = {X32,0x83FFFFE4}, + [I(62,202)] = {64,0}, + [I(63,202)] = {64,0}, + [I(64,202)] = {64,0}, + [I(65,202)] = {X32,0x87FFFFE4}, + [I(66,202)] = {64,0}, + [I(67,202)] = {64,0}, + [I(68,202)] = {64,0}, + [I(69,202)] = {64,0}, + [I(70,202)] = {64,0}, + [I(71,202)] = {64,0}, + [I(72,202)] = {64,0}, + [I(73,202)] = {64,0}, + [I(74,202)] = {64,0}, + [I(75,202)] = {64,0}, + [I(76,202)] = {64,0}, + [I(77,202)] = {64,0}, + [I(78,202)] = {64,0}, + [I(79,202)] = {64,0}, + [I(80,202)] = {64,0}, + [I(81,202)] = {64,0}, + [I(82,202)] = {64,0}, + [I(83,202)] = {64,0}, + [I(84,202)] = {64,0}, + [I(85,202)] = {64,0}, + [I(86,202)] = {64,0}, + [I(87,202)] = {64,0}, + [I(88,202)] = {64,0}, + [I(89,202)] = {64,0}, + [I(90,202)] = {64,0}, + [I(91,202)] = {64,0}, + [I(92,202)] = {64,0}, + [I(93,202)] = {64,0}, + [I(94,202)] = {64,0}, + [I(95,202)] = {X32,0x8BFFFFE4}, + [I(96,202)] = {64,0}, + [I(97,202)] = {31,0xFFFFFE4}, + [I(98,202)] = {X32,0x8FFFFFE4}, + [I(99,202)] = {31,0x13FFFFE4}, + [I(100,202)] = {X32,0x93FFFFE4}, + [I(101,202)] = {31,0x17FFFFE4}, + [I(102,202)] = {X32,0x97FFFFE4}, + [I(103,202)] = {X32,0x9BFFFFE4}, + [I(104,202)] = {X32,0x9FFFFFE4}, + [I(105,202)] = {31,0x1BFFFFE4}, + [I(106,202)] = {64,0}, + [I(107,202)] = {64,0}, + [I(108,202)] = {X32,0xA3FFFFE4}, + [I(109,202)] = {X32,0xA7FFFFE4}, + [I(110,202)] = {X32,0xABFFFFE4}, + [I(111,202)] = {31,0x1FFFFFE4}, + [I(112,202)] = {X32,0xAFFFFFE4}, + [I(113,202)] = {64,0}, + [I(114,202)] = {X32,0xB3FFFFE4}, + [I(115,202)] = {31,0x23FFFFE4}, + [I(116,202)] = {31,0x27FFFFE4}, + [I(117,202)] = {X32,0xB7FFFFE4}, + [I(118,202)] = {64,0}, + [I(119,202)] = {64,0}, + [I(120,202)] = {64,0}, + [I(121,202)] = {64,0}, + [I(122,202)] = {64,0}, + [I(123,202)] = {64,0}, + [I(124,202)] = {64,0}, + [I(125,202)] = {64,0}, + [I(126,202)] = {64,0}, + [I(127,202)] = {64,0}, + [I(128,202)] = {64,0}, + [I(129,202)] = {64,0}, + [I(130,202)] = {64,0}, + [I(131,202)] = {64,0}, + [I(132,202)] = {64,0}, + [I(133,202)] = {64,0}, + [I(134,202)] = {64,0}, + [I(135,202)] = {64,0}, + [I(136,202)] = {64,0}, + [I(137,202)] = {64,0}, + [I(138,202)] = {64,0}, + [I(139,202)] = {64,0}, + [I(140,202)] = {64,0}, + [I(141,202)] = {64,0}, + [I(142,202)] = {64,0}, + [I(143,202)] = {64,0}, + [I(144,202)] = {64,0}, + [I(145,202)] = {64,0}, + [I(146,202)] = {64,0}, + [I(147,202)] = {64,0}, + [I(148,202)] = {64,0}, + [I(149,202)] = {64,0}, + [I(150,202)] = {64,0}, + [I(151,202)] = {64,0}, + [I(152,202)] = {64,0}, + [I(153,202)] = {64,0}, + [I(154,202)] = {64,0}, + [I(155,202)] = {64,0}, + [I(156,202)] = {64,0}, + [I(157,202)] = {64,0}, + [I(158,202)] = {64,0}, + [I(159,202)] = {64,0}, + [I(160,202)] = {64,0}, + [I(161,202)] = {64,0}, + [I(162,202)] = {64,0}, + [I(163,202)] = {64,0}, + [I(164,202)] = {64,0}, + [I(165,202)] = {64,0}, + [I(166,202)] = {64,0}, + [I(167,202)] = {64,0}, + [I(168,202)] = {64,0}, + [I(169,202)] = {64,0}, + [I(170,202)] = {64,0}, + [I(171,202)] = {64,0}, + [I(172,202)] = {64,0}, + [I(173,202)] = {64,0}, + [I(174,202)] = {64,0}, + [I(175,202)] = {64,0}, + [I(176,202)] = {64,0}, + [I(177,202)] = {64,0}, + [I(178,202)] = {64,0}, + [I(179,202)] = {64,0}, + [I(180,202)] = {64,0}, + [I(181,202)] = {64,0}, + [I(182,202)] = {64,0}, + [I(183,202)] = {64,0}, + [I(184,202)] = {64,0}, + [I(185,202)] = {64,0}, + [I(186,202)] = {64,0}, + [I(187,202)] = {64,0}, + [I(188,202)] = {64,0}, + [I(189,202)] = {64,0}, + [I(190,202)] = {64,0}, + [I(191,202)] = {64,0}, + [I(192,202)] = {64,0}, + [I(193,202)] = {64,0}, + [I(194,202)] = {64,0}, + [I(195,202)] = {64,0}, + [I(196,202)] = {64,0}, + [I(197,202)] = {64,0}, + [I(198,202)] = {64,0}, + [I(199,202)] = {64,0}, + [I(200,202)] = {64,0}, + [I(201,202)] = {64,0}, + [I(202,202)] = {64,0}, + [I(203,202)] = {64,0}, + [I(204,202)] = {64,0}, + [I(205,202)] = {64,0}, + [I(206,202)] = {64,0}, + [I(207,202)] = {64,0}, + [I(208,202)] = {64,0}, + [I(209,202)] = {64,0}, + [I(210,202)] = {64,0}, + [I(211,202)] = {64,0}, + [I(212,202)] = {64,0}, + [I(213,202)] = {64,0}, + [I(214,202)] = {64,0}, + [I(215,202)] = {64,0}, + [I(216,202)] = {64,0}, + [I(217,202)] = {64,0}, + [I(218,202)] = {64,0}, + [I(219,202)] = {64,0}, + [I(220,202)] = {64,0}, + [I(221,202)] = {64,0}, + [I(222,202)] = {64,0}, + [I(223,202)] = {64,0}, + [I(224,202)] = {64,0}, + [I(225,202)] = {64,0}, + [I(226,202)] = {64,0}, + [I(227,202)] = {64,0}, + [I(228,202)] = {64,0}, + [I(229,202)] = {64,0}, + [I(230,202)] = {64,0}, + [I(231,202)] = {64,0}, + [I(232,202)] = {64,0}, + [I(233,202)] = {64,0}, + [I(234,202)] = {64,0}, + [I(235,202)] = {64,0}, + [I(236,202)] = {64,0}, + [I(237,202)] = {64,0}, + [I(238,202)] = {64,0}, + [I(239,202)] = {64,0}, + [I(240,202)] = {64,0}, + [I(241,202)] = {64,0}, + [I(242,202)] = {64,0}, + [I(243,202)] = {64,0}, + [I(244,202)] = {64,0}, + [I(245,202)] = {64,0}, + [I(246,202)] = {64,0}, + [I(247,202)] = {64,0}, + [I(248,202)] = {64,0}, + [I(249,202)] = {64,0}, + [I(250,202)] = {64,0}, + [I(251,202)] = {64,0}, + [I(252,202)] = {64,0}, + [I(253,202)] = {64,0}, + [I(254,202)] = {64,0}, + [I(255,202)] = {64,0}, + [I(0,203)] = {64,0}, + [I(1,203)] = {64,0}, + [I(2,203)] = {64,0}, + [I(3,203)] = {64,0}, + [I(4,203)] = {64,0}, + [I(5,203)] = {64,0}, + [I(6,203)] = {64,0}, + [I(7,203)] = {64,0}, + [I(8,203)] = {64,0}, + [I(9,203)] = {64,0}, + [I(10,203)] = {64,0}, + [I(11,203)] = {64,0}, + [I(12,203)] = {64,0}, + [I(13,203)] = {64,0}, + [I(14,203)] = {64,0}, + [I(15,203)] = {64,0}, + [I(16,203)] = {64,0}, + [I(17,203)] = {64,0}, + [I(18,203)] = {64,0}, + [I(19,203)] = {64,0}, + [I(20,203)] = {64,0}, + [I(21,203)] = {64,0}, + [I(22,203)] = {64,0}, + [I(23,203)] = {64,0}, + [I(24,203)] = {64,0}, + [I(25,203)] = {64,0}, + [I(26,203)] = {64,0}, + [I(27,203)] = {64,0}, + [I(28,203)] = {64,0}, + [I(29,203)] = {64,0}, + [I(30,203)] = {64,0}, + [I(31,203)] = {64,0}, + [I(32,203)] = {64,0}, + [I(33,203)] = {64,0}, + [I(34,203)] = {64,0}, + [I(35,203)] = {64,0}, + [I(36,203)] = {64,0}, + [I(37,203)] = {64,0}, + [I(38,203)] = {64,0}, + [I(39,203)] = {64,0}, + [I(40,203)] = {64,0}, + [I(41,203)] = {64,0}, + [I(42,203)] = {64,0}, + [I(43,203)] = {64,0}, + [I(44,203)] = {64,0}, + [I(45,203)] = {64,0}, + [I(46,203)] = {64,0}, + [I(47,203)] = {64,0}, + [I(48,203)] = {X32,0x7FFFFDE}, + [I(49,203)] = {X32,0xFFFFFDE}, + [I(50,203)] = {X32,0x17FFFFDE}, + [I(51,203)] = {64,0}, + [I(52,203)] = {64,0}, + [I(53,203)] = {64,0}, + [I(54,203)] = {64,0}, + [I(55,203)] = {64,0}, + [I(56,203)] = {64,0}, + [I(57,203)] = {64,0}, + [I(58,203)] = {64,0}, + [I(59,203)] = {64,0}, + [I(60,203)] = {64,0}, + [I(61,203)] = {64,0}, + [I(62,203)] = {64,0}, + [I(63,203)] = {64,0}, + [I(64,203)] = {64,0}, + [I(65,203)] = {64,0}, + [I(66,203)] = {64,0}, + [I(67,203)] = {64,0}, + [I(68,203)] = {64,0}, + [I(69,203)] = {64,0}, + [I(70,203)] = {64,0}, + [I(71,203)] = {64,0}, + [I(72,203)] = {64,0}, + [I(73,203)] = {64,0}, + [I(74,203)] = {64,0}, + [I(75,203)] = {64,0}, + [I(76,203)] = {64,0}, + [I(77,203)] = {64,0}, + [I(78,203)] = {64,0}, + [I(79,203)] = {64,0}, + [I(80,203)] = {64,0}, + [I(81,203)] = {64,0}, + [I(82,203)] = {64,0}, + [I(83,203)] = {64,0}, + [I(84,203)] = {64,0}, + [I(85,203)] = {64,0}, + [I(86,203)] = {64,0}, + [I(87,203)] = {64,0}, + [I(88,203)] = {64,0}, + [I(89,203)] = {64,0}, + [I(90,203)] = {64,0}, + [I(91,203)] = {64,0}, + [I(92,203)] = {64,0}, + [I(93,203)] = {64,0}, + [I(94,203)] = {64,0}, + [I(95,203)] = {64,0}, + [I(96,203)] = {64,0}, + [I(97,203)] = {X32,0x1FFFFFDE}, + [I(98,203)] = {64,0}, + [I(99,203)] = {X32,0x27FFFFDE}, + [I(100,203)] = {64,0}, + [I(101,203)] = {X32,0x2FFFFFDE}, + [I(102,203)] = {64,0}, + [I(103,203)] = {64,0}, + [I(104,203)] = {64,0}, + [I(105,203)] = {X32,0x37FFFFDE}, + [I(106,203)] = {64,0}, + [I(107,203)] = {64,0}, + [I(108,203)] = {64,0}, + [I(109,203)] = {64,0}, + [I(110,203)] = {64,0}, + [I(111,203)] = {X32,0x3FFFFFDE}, + [I(112,203)] = {64,0}, + [I(113,203)] = {64,0}, + [I(114,203)] = {64,0}, + [I(115,203)] = {X32,0x47FFFFDE}, + [I(116,203)] = {X32,0x4FFFFFDE}, + [I(117,203)] = {64,0}, + [I(118,203)] = {64,0}, + [I(119,203)] = {64,0}, + [I(120,203)] = {64,0}, + [I(121,203)] = {64,0}, + [I(122,203)] = {64,0}, + [I(123,203)] = {64,0}, + [I(124,203)] = {64,0}, + [I(125,203)] = {64,0}, + [I(126,203)] = {64,0}, + [I(127,203)] = {64,0}, + [I(128,203)] = {64,0}, + [I(129,203)] = {64,0}, + [I(130,203)] = {64,0}, + [I(131,203)] = {64,0}, + [I(132,203)] = {64,0}, + [I(133,203)] = {64,0}, + [I(134,203)] = {64,0}, + [I(135,203)] = {64,0}, + [I(136,203)] = {64,0}, + [I(137,203)] = {64,0}, + [I(138,203)] = {64,0}, + [I(139,203)] = {64,0}, + [I(140,203)] = {64,0}, + [I(141,203)] = {64,0}, + [I(142,203)] = {64,0}, + [I(143,203)] = {64,0}, + [I(144,203)] = {64,0}, + [I(145,203)] = {64,0}, + [I(146,203)] = {64,0}, + [I(147,203)] = {64,0}, + [I(148,203)] = {64,0}, + [I(149,203)] = {64,0}, + [I(150,203)] = {64,0}, + [I(151,203)] = {64,0}, + [I(152,203)] = {64,0}, + [I(153,203)] = {64,0}, + [I(154,203)] = {64,0}, + [I(155,203)] = {64,0}, + [I(156,203)] = {64,0}, + [I(157,203)] = {64,0}, + [I(158,203)] = {64,0}, + [I(159,203)] = {64,0}, + [I(160,203)] = {64,0}, + [I(161,203)] = {64,0}, + [I(162,203)] = {64,0}, + [I(163,203)] = {64,0}, + [I(164,203)] = {64,0}, + [I(165,203)] = {64,0}, + [I(166,203)] = {64,0}, + [I(167,203)] = {64,0}, + [I(168,203)] = {64,0}, + [I(169,203)] = {64,0}, + [I(170,203)] = {64,0}, + [I(171,203)] = {64,0}, + [I(172,203)] = {64,0}, + [I(173,203)] = {64,0}, + [I(174,203)] = {64,0}, + [I(175,203)] = {64,0}, + [I(176,203)] = {64,0}, + [I(177,203)] = {64,0}, + [I(178,203)] = {64,0}, + [I(179,203)] = {64,0}, + [I(180,203)] = {64,0}, + [I(181,203)] = {64,0}, + [I(182,203)] = {64,0}, + [I(183,203)] = {64,0}, + [I(184,203)] = {64,0}, + [I(185,203)] = {64,0}, + [I(186,203)] = {64,0}, + [I(187,203)] = {64,0}, + [I(188,203)] = {64,0}, + [I(189,203)] = {64,0}, + [I(190,203)] = {64,0}, + [I(191,203)] = {64,0}, + [I(192,203)] = {64,0}, + [I(193,203)] = {64,0}, + [I(194,203)] = {64,0}, + [I(195,203)] = {64,0}, + [I(196,203)] = {64,0}, + [I(197,203)] = {64,0}, + [I(198,203)] = {64,0}, + [I(199,203)] = {64,0}, + [I(200,203)] = {64,0}, + [I(201,203)] = {64,0}, + [I(202,203)] = {64,0}, + [I(203,203)] = {64,0}, + [I(204,203)] = {64,0}, + [I(205,203)] = {64,0}, + [I(206,203)] = {64,0}, + [I(207,203)] = {64,0}, + [I(208,203)] = {64,0}, + [I(209,203)] = {64,0}, + [I(210,203)] = {64,0}, + [I(211,203)] = {64,0}, + [I(212,203)] = {64,0}, + [I(213,203)] = {64,0}, + [I(214,203)] = {64,0}, + [I(215,203)] = {64,0}, + [I(216,203)] = {64,0}, + [I(217,203)] = {64,0}, + [I(218,203)] = {64,0}, + [I(219,203)] = {64,0}, + [I(220,203)] = {64,0}, + [I(221,203)] = {64,0}, + [I(222,203)] = {64,0}, + [I(223,203)] = {64,0}, + [I(224,203)] = {64,0}, + [I(225,203)] = {64,0}, + [I(226,203)] = {64,0}, + [I(227,203)] = {64,0}, + [I(228,203)] = {64,0}, + [I(229,203)] = {64,0}, + [I(230,203)] = {64,0}, + [I(231,203)] = {64,0}, + [I(232,203)] = {64,0}, + [I(233,203)] = {64,0}, + [I(234,203)] = {64,0}, + [I(235,203)] = {64,0}, + [I(236,203)] = {64,0}, + [I(237,203)] = {64,0}, + [I(238,203)] = {64,0}, + [I(239,203)] = {64,0}, + [I(240,203)] = {64,0}, + [I(241,203)] = {64,0}, + [I(242,203)] = {64,0}, + [I(243,203)] = {64,0}, + [I(244,203)] = {64,0}, + [I(245,203)] = {64,0}, + [I(246,203)] = {64,0}, + [I(247,203)] = {64,0}, + [I(248,203)] = {64,0}, + [I(249,203)] = {64,0}, + [I(250,203)] = {64,0}, + [I(251,203)] = {64,0}, + [I(252,203)] = {64,0}, + [I(253,203)] = {64,0}, + [I(254,203)] = {64,0}, + [I(255,203)] = {64,0}, + [I(0,204)] = {64,0}, + [I(1,204)] = {64,0}, + [I(2,204)] = {64,0}, + [I(3,204)] = {64,0}, + [I(4,204)] = {64,0}, + [I(5,204)] = {64,0}, + [I(6,204)] = {64,0}, + [I(7,204)] = {64,0}, + [I(8,204)] = {64,0}, + [I(9,204)] = {64,0}, + [I(10,204)] = {64,0}, + [I(11,204)] = {64,0}, + [I(12,204)] = {64,0}, + [I(13,204)] = {64,0}, + [I(14,204)] = {64,0}, + [I(15,204)] = {64,0}, + [I(16,204)] = {64,0}, + [I(17,204)] = {64,0}, + [I(18,204)] = {64,0}, + [I(19,204)] = {64,0}, + [I(20,204)] = {64,0}, + [I(21,204)] = {64,0}, + [I(22,204)] = {64,0}, + [I(23,204)] = {64,0}, + [I(24,204)] = {64,0}, + [I(25,204)] = {64,0}, + [I(26,204)] = {64,0}, + [I(27,204)] = {64,0}, + [I(28,204)] = {64,0}, + [I(29,204)] = {64,0}, + [I(30,204)] = {64,0}, + [I(31,204)] = {64,0}, + [I(32,204)] = {64,0}, + [I(33,204)] = {64,0}, + [I(34,204)] = {64,0}, + [I(35,204)] = {64,0}, + [I(36,204)] = {64,0}, + [I(37,204)] = {64,0}, + [I(38,204)] = {64,0}, + [I(39,204)] = {64,0}, + [I(40,204)] = {64,0}, + [I(41,204)] = {64,0}, + [I(42,204)] = {64,0}, + [I(43,204)] = {64,0}, + [I(44,204)] = {64,0}, + [I(45,204)] = {64,0}, + [I(46,204)] = {64,0}, + [I(47,204)] = {64,0}, + [I(48,204)] = {X32,0x7FFFFDF}, + [I(49,204)] = {X32,0xFFFFFDF}, + [I(50,204)] = {X32,0x17FFFFDF}, + [I(51,204)] = {64,0}, + [I(52,204)] = {64,0}, + [I(53,204)] = {64,0}, + [I(54,204)] = {64,0}, + [I(55,204)] = {64,0}, + [I(56,204)] = {64,0}, + [I(57,204)] = {64,0}, + [I(58,204)] = {64,0}, + [I(59,204)] = {64,0}, + [I(60,204)] = {64,0}, + [I(61,204)] = {64,0}, + [I(62,204)] = {64,0}, + [I(63,204)] = {64,0}, + [I(64,204)] = {64,0}, + [I(65,204)] = {64,0}, + [I(66,204)] = {64,0}, + [I(67,204)] = {64,0}, + [I(68,204)] = {64,0}, + [I(69,204)] = {64,0}, + [I(70,204)] = {64,0}, + [I(71,204)] = {64,0}, + [I(72,204)] = {64,0}, + [I(73,204)] = {64,0}, + [I(74,204)] = {64,0}, + [I(75,204)] = {64,0}, + [I(76,204)] = {64,0}, + [I(77,204)] = {64,0}, + [I(78,204)] = {64,0}, + [I(79,204)] = {64,0}, + [I(80,204)] = {64,0}, + [I(81,204)] = {64,0}, + [I(82,204)] = {64,0}, + [I(83,204)] = {64,0}, + [I(84,204)] = {64,0}, + [I(85,204)] = {64,0}, + [I(86,204)] = {64,0}, + [I(87,204)] = {64,0}, + [I(88,204)] = {64,0}, + [I(89,204)] = {64,0}, + [I(90,204)] = {64,0}, + [I(91,204)] = {64,0}, + [I(92,204)] = {64,0}, + [I(93,204)] = {64,0}, + [I(94,204)] = {64,0}, + [I(95,204)] = {64,0}, + [I(96,204)] = {64,0}, + [I(97,204)] = {X32,0x1FFFFFDF}, + [I(98,204)] = {64,0}, + [I(99,204)] = {X32,0x27FFFFDF}, + [I(100,204)] = {64,0}, + [I(101,204)] = {X32,0x2FFFFFDF}, + [I(102,204)] = {64,0}, + [I(103,204)] = {64,0}, + [I(104,204)] = {64,0}, + [I(105,204)] = {X32,0x37FFFFDF}, + [I(106,204)] = {64,0}, + [I(107,204)] = {64,0}, + [I(108,204)] = {64,0}, + [I(109,204)] = {64,0}, + [I(110,204)] = {64,0}, + [I(111,204)] = {X32,0x3FFFFFDF}, + [I(112,204)] = {64,0}, + [I(113,204)] = {64,0}, + [I(114,204)] = {64,0}, + [I(115,204)] = {X32,0x47FFFFDF}, + [I(116,204)] = {X32,0x4FFFFFDF}, + [I(117,204)] = {64,0}, + [I(118,204)] = {64,0}, + [I(119,204)] = {64,0}, + [I(120,204)] = {64,0}, + [I(121,204)] = {64,0}, + [I(122,204)] = {64,0}, + [I(123,204)] = {64,0}, + [I(124,204)] = {64,0}, + [I(125,204)] = {64,0}, + [I(126,204)] = {64,0}, + [I(127,204)] = {64,0}, + [I(128,204)] = {64,0}, + [I(129,204)] = {64,0}, + [I(130,204)] = {64,0}, + [I(131,204)] = {64,0}, + [I(132,204)] = {64,0}, + [I(133,204)] = {64,0}, + [I(134,204)] = {64,0}, + [I(135,204)] = {64,0}, + [I(136,204)] = {64,0}, + [I(137,204)] = {64,0}, + [I(138,204)] = {64,0}, + [I(139,204)] = {64,0}, + [I(140,204)] = {64,0}, + [I(141,204)] = {64,0}, + [I(142,204)] = {64,0}, + [I(143,204)] = {64,0}, + [I(144,204)] = {64,0}, + [I(145,204)] = {64,0}, + [I(146,204)] = {64,0}, + [I(147,204)] = {64,0}, + [I(148,204)] = {64,0}, + [I(149,204)] = {64,0}, + [I(150,204)] = {64,0}, + [I(151,204)] = {64,0}, + [I(152,204)] = {64,0}, + [I(153,204)] = {64,0}, + [I(154,204)] = {64,0}, + [I(155,204)] = {64,0}, + [I(156,204)] = {64,0}, + [I(157,204)] = {64,0}, + [I(158,204)] = {64,0}, + [I(159,204)] = {64,0}, + [I(160,204)] = {64,0}, + [I(161,204)] = {64,0}, + [I(162,204)] = {64,0}, + [I(163,204)] = {64,0}, + [I(164,204)] = {64,0}, + [I(165,204)] = {64,0}, + [I(166,204)] = {64,0}, + [I(167,204)] = {64,0}, + [I(168,204)] = {64,0}, + [I(169,204)] = {64,0}, + [I(170,204)] = {64,0}, + [I(171,204)] = {64,0}, + [I(172,204)] = {64,0}, + [I(173,204)] = {64,0}, + [I(174,204)] = {64,0}, + [I(175,204)] = {64,0}, + [I(176,204)] = {64,0}, + [I(177,204)] = {64,0}, + [I(178,204)] = {64,0}, + [I(179,204)] = {64,0}, + [I(180,204)] = {64,0}, + [I(181,204)] = {64,0}, + [I(182,204)] = {64,0}, + [I(183,204)] = {64,0}, + [I(184,204)] = {64,0}, + [I(185,204)] = {64,0}, + [I(186,204)] = {64,0}, + [I(187,204)] = {64,0}, + [I(188,204)] = {64,0}, + [I(189,204)] = {64,0}, + [I(190,204)] = {64,0}, + [I(191,204)] = {64,0}, + [I(192,204)] = {64,0}, + [I(193,204)] = {64,0}, + [I(194,204)] = {64,0}, + [I(195,204)] = {64,0}, + [I(196,204)] = {64,0}, + [I(197,204)] = {64,0}, + [I(198,204)] = {64,0}, + [I(199,204)] = {64,0}, + [I(200,204)] = {64,0}, + [I(201,204)] = {64,0}, + [I(202,204)] = {64,0}, + [I(203,204)] = {64,0}, + [I(204,204)] = {64,0}, + [I(205,204)] = {64,0}, + [I(206,204)] = {64,0}, + [I(207,204)] = {64,0}, + [I(208,204)] = {64,0}, + [I(209,204)] = {64,0}, + [I(210,204)] = {64,0}, + [I(211,204)] = {64,0}, + [I(212,204)] = {64,0}, + [I(213,204)] = {64,0}, + [I(214,204)] = {64,0}, + [I(215,204)] = {64,0}, + [I(216,204)] = {64,0}, + [I(217,204)] = {64,0}, + [I(218,204)] = {64,0}, + [I(219,204)] = {64,0}, + [I(220,204)] = {64,0}, + [I(221,204)] = {64,0}, + [I(222,204)] = {64,0}, + [I(223,204)] = {64,0}, + [I(224,204)] = {64,0}, + [I(225,204)] = {64,0}, + [I(226,204)] = {64,0}, + [I(227,204)] = {64,0}, + [I(228,204)] = {64,0}, + [I(229,204)] = {64,0}, + [I(230,204)] = {64,0}, + [I(231,204)] = {64,0}, + [I(232,204)] = {64,0}, + [I(233,204)] = {64,0}, + [I(234,204)] = {64,0}, + [I(235,204)] = {64,0}, + [I(236,204)] = {64,0}, + [I(237,204)] = {64,0}, + [I(238,204)] = {64,0}, + [I(239,204)] = {64,0}, + [I(240,204)] = {64,0}, + [I(241,204)] = {64,0}, + [I(242,204)] = {64,0}, + [I(243,204)] = {64,0}, + [I(244,204)] = {64,0}, + [I(245,204)] = {64,0}, + [I(246,204)] = {64,0}, + [I(247,204)] = {64,0}, + [I(248,204)] = {64,0}, + [I(249,204)] = {64,0}, + [I(250,204)] = {64,0}, + [I(251,204)] = {64,0}, + [I(252,204)] = {64,0}, + [I(253,204)] = {64,0}, + [I(254,204)] = {64,0}, + [I(255,204)] = {64,0}, + [I(0,205)] = {64,0}, + [I(1,205)] = {64,0}, + [I(2,205)] = {64,0}, + [I(3,205)] = {64,0}, + [I(4,205)] = {64,0}, + [I(5,205)] = {64,0}, + [I(6,205)] = {64,0}, + [I(7,205)] = {64,0}, + [I(8,205)] = {64,0}, + [I(9,205)] = {64,0}, + [I(10,205)] = {64,0}, + [I(11,205)] = {64,0}, + [I(12,205)] = {64,0}, + [I(13,205)] = {64,0}, + [I(14,205)] = {64,0}, + [I(15,205)] = {64,0}, + [I(16,205)] = {64,0}, + [I(17,205)] = {64,0}, + [I(18,205)] = {64,0}, + [I(19,205)] = {64,0}, + [I(20,205)] = {64,0}, + [I(21,205)] = {64,0}, + [I(22,205)] = {64,0}, + [I(23,205)] = {64,0}, + [I(24,205)] = {64,0}, + [I(25,205)] = {64,0}, + [I(26,205)] = {64,0}, + [I(27,205)] = {64,0}, + [I(28,205)] = {64,0}, + [I(29,205)] = {64,0}, + [I(30,205)] = {64,0}, + [I(31,205)] = {64,0}, + [I(32,205)] = {X32,0x53FFFFE5}, + [I(33,205)] = {64,0}, + [I(34,205)] = {64,0}, + [I(35,205)] = {64,0}, + [I(36,205)] = {64,0}, + [I(37,205)] = {X32,0x57FFFFE5}, + [I(38,205)] = {64,0}, + [I(39,205)] = {64,0}, + [I(40,205)] = {64,0}, + [I(41,205)] = {64,0}, + [I(42,205)] = {64,0}, + [I(43,205)] = {64,0}, + [I(44,205)] = {64,0}, + [I(45,205)] = {X32,0x5BFFFFE5}, + [I(46,205)] = {X32,0x5FFFFFE5}, + [I(47,205)] = {X32,0x63FFFFE5}, + [I(48,205)] = {31,0x3FFFFE5}, + [I(49,205)] = {31,0x7FFFFE5}, + [I(50,205)] = {31,0xBFFFFE5}, + [I(51,205)] = {X32,0x67FFFFE5}, + [I(52,205)] = {X32,0x6BFFFFE5}, + [I(53,205)] = {X32,0x6FFFFFE5}, + [I(54,205)] = {X32,0x73FFFFE5}, + [I(55,205)] = {X32,0x77FFFFE5}, + [I(56,205)] = {X32,0x7BFFFFE5}, + [I(57,205)] = {X32,0x7FFFFFE5}, + [I(58,205)] = {64,0}, + [I(59,205)] = {64,0}, + [I(60,205)] = {64,0}, + [I(61,205)] = {X32,0x83FFFFE5}, + [I(62,205)] = {64,0}, + [I(63,205)] = {64,0}, + [I(64,205)] = {64,0}, + [I(65,205)] = {X32,0x87FFFFE5}, + [I(66,205)] = {64,0}, + [I(67,205)] = {64,0}, + [I(68,205)] = {64,0}, + [I(69,205)] = {64,0}, + [I(70,205)] = {64,0}, + [I(71,205)] = {64,0}, + [I(72,205)] = {64,0}, + [I(73,205)] = {64,0}, + [I(74,205)] = {64,0}, + [I(75,205)] = {64,0}, + [I(76,205)] = {64,0}, + [I(77,205)] = {64,0}, + [I(78,205)] = {64,0}, + [I(79,205)] = {64,0}, + [I(80,205)] = {64,0}, + [I(81,205)] = {64,0}, + [I(82,205)] = {64,0}, + [I(83,205)] = {64,0}, + [I(84,205)] = {64,0}, + [I(85,205)] = {64,0}, + [I(86,205)] = {64,0}, + [I(87,205)] = {64,0}, + [I(88,205)] = {64,0}, + [I(89,205)] = {64,0}, + [I(90,205)] = {64,0}, + [I(91,205)] = {64,0}, + [I(92,205)] = {64,0}, + [I(93,205)] = {64,0}, + [I(94,205)] = {64,0}, + [I(95,205)] = {X32,0x8BFFFFE5}, + [I(96,205)] = {64,0}, + [I(97,205)] = {31,0xFFFFFE5}, + [I(98,205)] = {X32,0x8FFFFFE5}, + [I(99,205)] = {31,0x13FFFFE5}, + [I(100,205)] = {X32,0x93FFFFE5}, + [I(101,205)] = {31,0x17FFFFE5}, + [I(102,205)] = {X32,0x97FFFFE5}, + [I(103,205)] = {X32,0x9BFFFFE5}, + [I(104,205)] = {X32,0x9FFFFFE5}, + [I(105,205)] = {31,0x1BFFFFE5}, + [I(106,205)] = {64,0}, + [I(107,205)] = {64,0}, + [I(108,205)] = {X32,0xA3FFFFE5}, + [I(109,205)] = {X32,0xA7FFFFE5}, + [I(110,205)] = {X32,0xABFFFFE5}, + [I(111,205)] = {31,0x1FFFFFE5}, + [I(112,205)] = {X32,0xAFFFFFE5}, + [I(113,205)] = {64,0}, + [I(114,205)] = {X32,0xB3FFFFE5}, + [I(115,205)] = {31,0x23FFFFE5}, + [I(116,205)] = {31,0x27FFFFE5}, + [I(117,205)] = {X32,0xB7FFFFE5}, + [I(118,205)] = {64,0}, + [I(119,205)] = {64,0}, + [I(120,205)] = {64,0}, + [I(121,205)] = {64,0}, + [I(122,205)] = {64,0}, + [I(123,205)] = {64,0}, + [I(124,205)] = {64,0}, + [I(125,205)] = {64,0}, + [I(126,205)] = {64,0}, + [I(127,205)] = {64,0}, + [I(128,205)] = {64,0}, + [I(129,205)] = {64,0}, + [I(130,205)] = {64,0}, + [I(131,205)] = {64,0}, + [I(132,205)] = {64,0}, + [I(133,205)] = {64,0}, + [I(134,205)] = {64,0}, + [I(135,205)] = {64,0}, + [I(136,205)] = {64,0}, + [I(137,205)] = {64,0}, + [I(138,205)] = {64,0}, + [I(139,205)] = {64,0}, + [I(140,205)] = {64,0}, + [I(141,205)] = {64,0}, + [I(142,205)] = {64,0}, + [I(143,205)] = {64,0}, + [I(144,205)] = {64,0}, + [I(145,205)] = {64,0}, + [I(146,205)] = {64,0}, + [I(147,205)] = {64,0}, + [I(148,205)] = {64,0}, + [I(149,205)] = {64,0}, + [I(150,205)] = {64,0}, + [I(151,205)] = {64,0}, + [I(152,205)] = {64,0}, + [I(153,205)] = {64,0}, + [I(154,205)] = {64,0}, + [I(155,205)] = {64,0}, + [I(156,205)] = {64,0}, + [I(157,205)] = {64,0}, + [I(158,205)] = {64,0}, + [I(159,205)] = {64,0}, + [I(160,205)] = {64,0}, + [I(161,205)] = {64,0}, + [I(162,205)] = {64,0}, + [I(163,205)] = {64,0}, + [I(164,205)] = {64,0}, + [I(165,205)] = {64,0}, + [I(166,205)] = {64,0}, + [I(167,205)] = {64,0}, + [I(168,205)] = {64,0}, + [I(169,205)] = {64,0}, + [I(170,205)] = {64,0}, + [I(171,205)] = {64,0}, + [I(172,205)] = {64,0}, + [I(173,205)] = {64,0}, + [I(174,205)] = {64,0}, + [I(175,205)] = {64,0}, + [I(176,205)] = {64,0}, + [I(177,205)] = {64,0}, + [I(178,205)] = {64,0}, + [I(179,205)] = {64,0}, + [I(180,205)] = {64,0}, + [I(181,205)] = {64,0}, + [I(182,205)] = {64,0}, + [I(183,205)] = {64,0}, + [I(184,205)] = {64,0}, + [I(185,205)] = {64,0}, + [I(186,205)] = {64,0}, + [I(187,205)] = {64,0}, + [I(188,205)] = {64,0}, + [I(189,205)] = {64,0}, + [I(190,205)] = {64,0}, + [I(191,205)] = {64,0}, + [I(192,205)] = {64,0}, + [I(193,205)] = {64,0}, + [I(194,205)] = {64,0}, + [I(195,205)] = {64,0}, + [I(196,205)] = {64,0}, + [I(197,205)] = {64,0}, + [I(198,205)] = {64,0}, + [I(199,205)] = {64,0}, + [I(200,205)] = {64,0}, + [I(201,205)] = {64,0}, + [I(202,205)] = {64,0}, + [I(203,205)] = {64,0}, + [I(204,205)] = {64,0}, + [I(205,205)] = {64,0}, + [I(206,205)] = {64,0}, + [I(207,205)] = {64,0}, + [I(208,205)] = {64,0}, + [I(209,205)] = {64,0}, + [I(210,205)] = {64,0}, + [I(211,205)] = {64,0}, + [I(212,205)] = {64,0}, + [I(213,205)] = {64,0}, + [I(214,205)] = {64,0}, + [I(215,205)] = {64,0}, + [I(216,205)] = {64,0}, + [I(217,205)] = {64,0}, + [I(218,205)] = {64,0}, + [I(219,205)] = {64,0}, + [I(220,205)] = {64,0}, + [I(221,205)] = {64,0}, + [I(222,205)] = {64,0}, + [I(223,205)] = {64,0}, + [I(224,205)] = {64,0}, + [I(225,205)] = {64,0}, + [I(226,205)] = {64,0}, + [I(227,205)] = {64,0}, + [I(228,205)] = {64,0}, + [I(229,205)] = {64,0}, + [I(230,205)] = {64,0}, + [I(231,205)] = {64,0}, + [I(232,205)] = {64,0}, + [I(233,205)] = {64,0}, + [I(234,205)] = {64,0}, + [I(235,205)] = {64,0}, + [I(236,205)] = {64,0}, + [I(237,205)] = {64,0}, + [I(238,205)] = {64,0}, + [I(239,205)] = {64,0}, + [I(240,205)] = {64,0}, + [I(241,205)] = {64,0}, + [I(242,205)] = {64,0}, + [I(243,205)] = {64,0}, + [I(244,205)] = {64,0}, + [I(245,205)] = {64,0}, + [I(246,205)] = {64,0}, + [I(247,205)] = {64,0}, + [I(248,205)] = {64,0}, + [I(249,205)] = {64,0}, + [I(250,205)] = {64,0}, + [I(251,205)] = {64,0}, + [I(252,205)] = {64,0}, + [I(253,205)] = {64,0}, + [I(254,205)] = {64,0}, + [I(255,205)] = {64,0}, + [I(0,206)] = {64,0}, + [I(1,206)] = {64,0}, + [I(2,206)] = {64,0}, + [I(3,206)] = {64,0}, + [I(4,206)] = {64,0}, + [I(5,206)] = {64,0}, + [I(6,206)] = {64,0}, + [I(7,206)] = {64,0}, + [I(8,206)] = {64,0}, + [I(9,206)] = {64,0}, + [I(10,206)] = {64,0}, + [I(11,206)] = {64,0}, + [I(12,206)] = {64,0}, + [I(13,206)] = {64,0}, + [I(14,206)] = {64,0}, + [I(15,206)] = {64,0}, + [I(16,206)] = {64,0}, + [I(17,206)] = {64,0}, + [I(18,206)] = {64,0}, + [I(19,206)] = {64,0}, + [I(20,206)] = {64,0}, + [I(21,206)] = {64,0}, + [I(22,206)] = {64,0}, + [I(23,206)] = {64,0}, + [I(24,206)] = {64,0}, + [I(25,206)] = {64,0}, + [I(26,206)] = {64,0}, + [I(27,206)] = {64,0}, + [I(28,206)] = {64,0}, + [I(29,206)] = {64,0}, + [I(30,206)] = {64,0}, + [I(31,206)] = {64,0}, + [I(32,206)] = {30,0x14FFFFF1}, + [I(33,206)] = {64,0}, + [I(34,206)] = {64,0}, + [I(35,206)] = {64,0}, + [I(36,206)] = {64,0}, + [I(37,206)] = {30,0x15FFFFF1}, + [I(38,206)] = {X32,0xF8FFFFF1}, + [I(39,206)] = {64,0}, + [I(40,206)] = {64,0}, + [I(41,206)] = {64,0}, + [I(42,206)] = {X32,0xF9FFFFF1}, + [I(43,206)] = {64,0}, + [I(44,206)] = {X32,0xFAFFFFF1}, + [I(45,206)] = {30,0x16FFFFF1}, + [I(46,206)] = {30,0x17FFFFF1}, + [I(47,206)] = {30,0x18FFFFF1}, + [I(48,206)] = {29,0xFFFFF1}, + [I(49,206)] = {29,0x1FFFFF1}, + [I(50,206)] = {29,0x2FFFFF1}, + [I(51,206)] = {30,0x19FFFFF1}, + [I(52,206)] = {30,0x1AFFFFF1}, + [I(53,206)] = {30,0x1BFFFFF1}, + [I(54,206)] = {30,0x1CFFFFF1}, + [I(55,206)] = {30,0x1DFFFFF1}, + [I(56,206)] = {30,0x1EFFFFF1}, + [I(57,206)] = {30,0x1FFFFFF1}, + [I(58,206)] = {31,0x5CFFFFF1}, + [I(59,206)] = {X32,0xFBFFFFF1}, + [I(60,206)] = {64,0}, + [I(61,206)] = {30,0x20FFFFF1}, + [I(62,206)] = {64,0}, + [I(63,206)] = {64,0}, + [I(64,206)] = {64,0}, + [I(65,206)] = {30,0x21FFFFF1}, + [I(66,206)] = {31,0x5DFFFFF1}, + [I(67,206)] = {31,0x5EFFFFF1}, + [I(68,206)] = {31,0x5FFFFFF1}, + [I(69,206)] = {31,0x60FFFFF1}, + [I(70,206)] = {31,0x61FFFFF1}, + [I(71,206)] = {31,0x62FFFFF1}, + [I(72,206)] = {31,0x63FFFFF1}, + [I(73,206)] = {31,0x64FFFFF1}, + [I(74,206)] = {31,0x65FFFFF1}, + [I(75,206)] = {31,0x66FFFFF1}, + [I(76,206)] = {31,0x67FFFFF1}, + [I(77,206)] = {31,0x68FFFFF1}, + [I(78,206)] = {31,0x69FFFFF1}, + [I(79,206)] = {31,0x6AFFFFF1}, + [I(80,206)] = {31,0x6BFFFFF1}, + [I(81,206)] = {31,0x6CFFFFF1}, + [I(82,206)] = {31,0x6DFFFFF1}, + [I(83,206)] = {31,0x6EFFFFF1}, + [I(84,206)] = {31,0x6FFFFFF1}, + [I(85,206)] = {31,0x70FFFFF1}, + [I(86,206)] = {31,0x71FFFFF1}, + [I(87,206)] = {31,0x72FFFFF1}, + [I(88,206)] = {X32,0xFCFFFFF1}, + [I(89,206)] = {31,0x73FFFFF1}, + [I(90,206)] = {X32,0xFDFFFFF1}, + [I(91,206)] = {64,0}, + [I(92,206)] = {64,0}, + [I(93,206)] = {64,0}, + [I(94,206)] = {64,0}, + [I(95,206)] = {30,0x22FFFFF1}, + [I(96,206)] = {64,0}, + [I(97,206)] = {29,0x3FFFFF1}, + [I(98,206)] = {30,0x23FFFFF1}, + [I(99,206)] = {29,0x4FFFFF1}, + [I(100,206)] = {30,0x24FFFFF1}, + [I(101,206)] = {29,0x5FFFFF1}, + [I(102,206)] = {30,0x25FFFFF1}, + [I(103,206)] = {30,0x26FFFFF1}, + [I(104,206)] = {30,0x27FFFFF1}, + [I(105,206)] = {29,0x6FFFFF1}, + [I(106,206)] = {31,0x74FFFFF1}, + [I(107,206)] = {31,0x75FFFFF1}, + [I(108,206)] = {30,0x28FFFFF1}, + [I(109,206)] = {30,0x29FFFFF1}, + [I(110,206)] = {30,0x2AFFFFF1}, + [I(111,206)] = {29,0x7FFFFF1}, + [I(112,206)] = {30,0x2BFFFFF1}, + [I(113,206)] = {31,0x76FFFFF1}, + [I(114,206)] = {30,0x2CFFFFF1}, + [I(115,206)] = {29,0x8FFFFF1}, + [I(116,206)] = {29,0x9FFFFF1}, + [I(117,206)] = {30,0x2DFFFFF1}, + [I(118,206)] = {31,0x77FFFFF1}, + [I(119,206)] = {31,0x78FFFFF1}, + [I(120,206)] = {31,0x79FFFFF1}, + [I(121,206)] = {31,0x7AFFFFF1}, + [I(122,206)] = {31,0x7BFFFFF1}, + [I(123,206)] = {64,0}, + [I(124,206)] = {64,0}, + [I(125,206)] = {64,0}, + [I(126,206)] = {64,0}, + [I(127,206)] = {64,0}, + [I(128,206)] = {64,0}, + [I(129,206)] = {64,0}, + [I(130,206)] = {64,0}, + [I(131,206)] = {64,0}, + [I(132,206)] = {64,0}, + [I(133,206)] = {64,0}, + [I(134,206)] = {64,0}, + [I(135,206)] = {64,0}, + [I(136,206)] = {64,0}, + [I(137,206)] = {64,0}, + [I(138,206)] = {64,0}, + [I(139,206)] = {64,0}, + [I(140,206)] = {64,0}, + [I(141,206)] = {64,0}, + [I(142,206)] = {64,0}, + [I(143,206)] = {64,0}, + [I(144,206)] = {64,0}, + [I(145,206)] = {64,0}, + [I(146,206)] = {64,0}, + [I(147,206)] = {64,0}, + [I(148,206)] = {64,0}, + [I(149,206)] = {64,0}, + [I(150,206)] = {64,0}, + [I(151,206)] = {64,0}, + [I(152,206)] = {64,0}, + [I(153,206)] = {64,0}, + [I(154,206)] = {64,0}, + [I(155,206)] = {64,0}, + [I(156,206)] = {64,0}, + [I(157,206)] = {64,0}, + [I(158,206)] = {64,0}, + [I(159,206)] = {64,0}, + [I(160,206)] = {64,0}, + [I(161,206)] = {64,0}, + [I(162,206)] = {64,0}, + [I(163,206)] = {64,0}, + [I(164,206)] = {64,0}, + [I(165,206)] = {64,0}, + [I(166,206)] = {64,0}, + [I(167,206)] = {64,0}, + [I(168,206)] = {64,0}, + [I(169,206)] = {64,0}, + [I(170,206)] = {64,0}, + [I(171,206)] = {64,0}, + [I(172,206)] = {64,0}, + [I(173,206)] = {64,0}, + [I(174,206)] = {64,0}, + [I(175,206)] = {64,0}, + [I(176,206)] = {64,0}, + [I(177,206)] = {64,0}, + [I(178,206)] = {64,0}, + [I(179,206)] = {64,0}, + [I(180,206)] = {64,0}, + [I(181,206)] = {64,0}, + [I(182,206)] = {64,0}, + [I(183,206)] = {64,0}, + [I(184,206)] = {64,0}, + [I(185,206)] = {64,0}, + [I(186,206)] = {64,0}, + [I(187,206)] = {64,0}, + [I(188,206)] = {64,0}, + [I(189,206)] = {64,0}, + [I(190,206)] = {64,0}, + [I(191,206)] = {64,0}, + [I(192,206)] = {64,0}, + [I(193,206)] = {64,0}, + [I(194,206)] = {64,0}, + [I(195,206)] = {64,0}, + [I(196,206)] = {64,0}, + [I(197,206)] = {64,0}, + [I(198,206)] = {64,0}, + [I(199,206)] = {64,0}, + [I(200,206)] = {64,0}, + [I(201,206)] = {64,0}, + [I(202,206)] = {64,0}, + [I(203,206)] = {64,0}, + [I(204,206)] = {64,0}, + [I(205,206)] = {64,0}, + [I(206,206)] = {64,0}, + [I(207,206)] = {64,0}, + [I(208,206)] = {64,0}, + [I(209,206)] = {64,0}, + [I(210,206)] = {64,0}, + [I(211,206)] = {64,0}, + [I(212,206)] = {64,0}, + [I(213,206)] = {64,0}, + [I(214,206)] = {64,0}, + [I(215,206)] = {64,0}, + [I(216,206)] = {64,0}, + [I(217,206)] = {64,0}, + [I(218,206)] = {64,0}, + [I(219,206)] = {64,0}, + [I(220,206)] = {64,0}, + [I(221,206)] = {64,0}, + [I(222,206)] = {64,0}, + [I(223,206)] = {64,0}, + [I(224,206)] = {64,0}, + [I(225,206)] = {64,0}, + [I(226,206)] = {64,0}, + [I(227,206)] = {64,0}, + [I(228,206)] = {64,0}, + [I(229,206)] = {64,0}, + [I(230,206)] = {64,0}, + [I(231,206)] = {64,0}, + [I(232,206)] = {64,0}, + [I(233,206)] = {64,0}, + [I(234,206)] = {64,0}, + [I(235,206)] = {64,0}, + [I(236,206)] = {64,0}, + [I(237,206)] = {64,0}, + [I(238,206)] = {64,0}, + [I(239,206)] = {64,0}, + [I(240,206)] = {64,0}, + [I(241,206)] = {64,0}, + [I(242,206)] = {64,0}, + [I(243,206)] = {64,0}, + [I(244,206)] = {64,0}, + [I(245,206)] = {64,0}, + [I(246,206)] = {64,0}, + [I(247,206)] = {64,0}, + [I(248,206)] = {64,0}, + [I(249,206)] = {64,0}, + [I(250,206)] = {64,0}, + [I(251,206)] = {64,0}, + [I(252,206)] = {64,0}, + [I(253,206)] = {64,0}, + [I(254,206)] = {64,0}, + [I(255,206)] = {64,0}, + [I(0,207)] = {64,0}, + [I(1,207)] = {64,0}, + [I(2,207)] = {64,0}, + [I(3,207)] = {64,0}, + [I(4,207)] = {64,0}, + [I(5,207)] = {64,0}, + [I(6,207)] = {64,0}, + [I(7,207)] = {64,0}, + [I(8,207)] = {64,0}, + [I(9,207)] = {64,0}, + [I(10,207)] = {64,0}, + [I(11,207)] = {64,0}, + [I(12,207)] = {64,0}, + [I(13,207)] = {64,0}, + [I(14,207)] = {64,0}, + [I(15,207)] = {64,0}, + [I(16,207)] = {64,0}, + [I(17,207)] = {64,0}, + [I(18,207)] = {64,0}, + [I(19,207)] = {64,0}, + [I(20,207)] = {64,0}, + [I(21,207)] = {64,0}, + [I(22,207)] = {64,0}, + [I(23,207)] = {64,0}, + [I(24,207)] = {64,0}, + [I(25,207)] = {64,0}, + [I(26,207)] = {64,0}, + [I(27,207)] = {64,0}, + [I(28,207)] = {64,0}, + [I(29,207)] = {64,0}, + [I(30,207)] = {64,0}, + [I(31,207)] = {64,0}, + [I(32,207)] = {31,0x29FFFFED}, + [I(33,207)] = {64,0}, + [I(34,207)] = {64,0}, + [I(35,207)] = {64,0}, + [I(36,207)] = {64,0}, + [I(37,207)] = {31,0x2BFFFFED}, + [I(38,207)] = {64,0}, + [I(39,207)] = {64,0}, + [I(40,207)] = {64,0}, + [I(41,207)] = {64,0}, + [I(42,207)] = {64,0}, + [I(43,207)] = {64,0}, + [I(44,207)] = {64,0}, + [I(45,207)] = {31,0x2DFFFFED}, + [I(46,207)] = {31,0x2FFFFFED}, + [I(47,207)] = {31,0x31FFFFED}, + [I(48,207)] = {30,0x1FFFFED}, + [I(49,207)] = {30,0x3FFFFED}, + [I(50,207)] = {30,0x5FFFFED}, + [I(51,207)] = {31,0x33FFFFED}, + [I(52,207)] = {31,0x35FFFFED}, + [I(53,207)] = {31,0x37FFFFED}, + [I(54,207)] = {31,0x39FFFFED}, + [I(55,207)] = {31,0x3BFFFFED}, + [I(56,207)] = {31,0x3DFFFFED}, + [I(57,207)] = {31,0x3FFFFFED}, + [I(58,207)] = {X32,0xB9FFFFED}, + [I(59,207)] = {64,0}, + [I(60,207)] = {64,0}, + [I(61,207)] = {31,0x41FFFFED}, + [I(62,207)] = {64,0}, + [I(63,207)] = {64,0}, + [I(64,207)] = {64,0}, + [I(65,207)] = {31,0x43FFFFED}, + [I(66,207)] = {X32,0xBBFFFFED}, + [I(67,207)] = {X32,0xBDFFFFED}, + [I(68,207)] = {X32,0xBFFFFFED}, + [I(69,207)] = {X32,0xC1FFFFED}, + [I(70,207)] = {X32,0xC3FFFFED}, + [I(71,207)] = {X32,0xC5FFFFED}, + [I(72,207)] = {X32,0xC7FFFFED}, + [I(73,207)] = {X32,0xC9FFFFED}, + [I(74,207)] = {X32,0xCBFFFFED}, + [I(75,207)] = {X32,0xCDFFFFED}, + [I(76,207)] = {X32,0xCFFFFFED}, + [I(77,207)] = {X32,0xD1FFFFED}, + [I(78,207)] = {X32,0xD3FFFFED}, + [I(79,207)] = {X32,0xD5FFFFED}, + [I(80,207)] = {X32,0xD7FFFFED}, + [I(81,207)] = {X32,0xD9FFFFED}, + [I(82,207)] = {X32,0xDBFFFFED}, + [I(83,207)] = {X32,0xDDFFFFED}, + [I(84,207)] = {X32,0xDFFFFFED}, + [I(85,207)] = {X32,0xE1FFFFED}, + [I(86,207)] = {X32,0xE3FFFFED}, + [I(87,207)] = {X32,0xE5FFFFED}, + [I(88,207)] = {64,0}, + [I(89,207)] = {X32,0xE7FFFFED}, + [I(90,207)] = {64,0}, + [I(91,207)] = {64,0}, + [I(92,207)] = {64,0}, + [I(93,207)] = {64,0}, + [I(94,207)] = {64,0}, + [I(95,207)] = {31,0x45FFFFED}, + [I(96,207)] = {64,0}, + [I(97,207)] = {30,0x7FFFFED}, + [I(98,207)] = {31,0x47FFFFED}, + [I(99,207)] = {30,0x9FFFFED}, + [I(100,207)] = {31,0x49FFFFED}, + [I(101,207)] = {30,0xBFFFFED}, + [I(102,207)] = {31,0x4BFFFFED}, + [I(103,207)] = {31,0x4DFFFFED}, + [I(104,207)] = {31,0x4FFFFFED}, + [I(105,207)] = {30,0xDFFFFED}, + [I(106,207)] = {X32,0xE9FFFFED}, + [I(107,207)] = {X32,0xEBFFFFED}, + [I(108,207)] = {31,0x51FFFFED}, + [I(109,207)] = {31,0x53FFFFED}, + [I(110,207)] = {31,0x55FFFFED}, + [I(111,207)] = {30,0xFFFFFED}, + [I(112,207)] = {31,0x57FFFFED}, + [I(113,207)] = {X32,0xEDFFFFED}, + [I(114,207)] = {31,0x59FFFFED}, + [I(115,207)] = {30,0x11FFFFED}, + [I(116,207)] = {30,0x13FFFFED}, + [I(117,207)] = {31,0x5BFFFFED}, + [I(118,207)] = {X32,0xEFFFFFED}, + [I(119,207)] = {X32,0xF1FFFFED}, + [I(120,207)] = {X32,0xF3FFFFED}, + [I(121,207)] = {X32,0xF5FFFFED}, + [I(122,207)] = {X32,0xF7FFFFED}, + [I(123,207)] = {64,0}, + [I(124,207)] = {64,0}, + [I(125,207)] = {64,0}, + [I(126,207)] = {64,0}, + [I(127,207)] = {64,0}, + [I(128,207)] = {64,0}, + [I(129,207)] = {64,0}, + [I(130,207)] = {64,0}, + [I(131,207)] = {64,0}, + [I(132,207)] = {64,0}, + [I(133,207)] = {64,0}, + [I(134,207)] = {64,0}, + [I(135,207)] = {64,0}, + [I(136,207)] = {64,0}, + [I(137,207)] = {64,0}, + [I(138,207)] = {64,0}, + [I(139,207)] = {64,0}, + [I(140,207)] = {64,0}, + [I(141,207)] = {64,0}, + [I(142,207)] = {64,0}, + [I(143,207)] = {64,0}, + [I(144,207)] = {64,0}, + [I(145,207)] = {64,0}, + [I(146,207)] = {64,0}, + [I(147,207)] = {64,0}, + [I(148,207)] = {64,0}, + [I(149,207)] = {64,0}, + [I(150,207)] = {64,0}, + [I(151,207)] = {64,0}, + [I(152,207)] = {64,0}, + [I(153,207)] = {64,0}, + [I(154,207)] = {64,0}, + [I(155,207)] = {64,0}, + [I(156,207)] = {64,0}, + [I(157,207)] = {64,0}, + [I(158,207)] = {64,0}, + [I(159,207)] = {64,0}, + [I(160,207)] = {64,0}, + [I(161,207)] = {64,0}, + [I(162,207)] = {64,0}, + [I(163,207)] = {64,0}, + [I(164,207)] = {64,0}, + [I(165,207)] = {64,0}, + [I(166,207)] = {64,0}, + [I(167,207)] = {64,0}, + [I(168,207)] = {64,0}, + [I(169,207)] = {64,0}, + [I(170,207)] = {64,0}, + [I(171,207)] = {64,0}, + [I(172,207)] = {64,0}, + [I(173,207)] = {64,0}, + [I(174,207)] = {64,0}, + [I(175,207)] = {64,0}, + [I(176,207)] = {64,0}, + [I(177,207)] = {64,0}, + [I(178,207)] = {64,0}, + [I(179,207)] = {64,0}, + [I(180,207)] = {64,0}, + [I(181,207)] = {64,0}, + [I(182,207)] = {64,0}, + [I(183,207)] = {64,0}, + [I(184,207)] = {64,0}, + [I(185,207)] = {64,0}, + [I(186,207)] = {64,0}, + [I(187,207)] = {64,0}, + [I(188,207)] = {64,0}, + [I(189,207)] = {64,0}, + [I(190,207)] = {64,0}, + [I(191,207)] = {64,0}, + [I(192,207)] = {64,0}, + [I(193,207)] = {64,0}, + [I(194,207)] = {64,0}, + [I(195,207)] = {64,0}, + [I(196,207)] = {64,0}, + [I(197,207)] = {64,0}, + [I(198,207)] = {64,0}, + [I(199,207)] = {64,0}, + [I(200,207)] = {64,0}, + [I(201,207)] = {64,0}, + [I(202,207)] = {64,0}, + [I(203,207)] = {64,0}, + [I(204,207)] = {64,0}, + [I(205,207)] = {64,0}, + [I(206,207)] = {64,0}, + [I(207,207)] = {64,0}, + [I(208,207)] = {64,0}, + [I(209,207)] = {64,0}, + [I(210,207)] = {64,0}, + [I(211,207)] = {64,0}, + [I(212,207)] = {64,0}, + [I(213,207)] = {64,0}, + [I(214,207)] = {64,0}, + [I(215,207)] = {64,0}, + [I(216,207)] = {64,0}, + [I(217,207)] = {64,0}, + [I(218,207)] = {64,0}, + [I(219,207)] = {64,0}, + [I(220,207)] = {64,0}, + [I(221,207)] = {64,0}, + [I(222,207)] = {64,0}, + [I(223,207)] = {64,0}, + [I(224,207)] = {64,0}, + [I(225,207)] = {64,0}, + [I(226,207)] = {64,0}, + [I(227,207)] = {64,0}, + [I(228,207)] = {64,0}, + [I(229,207)] = {64,0}, + [I(230,207)] = {64,0}, + [I(231,207)] = {64,0}, + [I(232,207)] = {64,0}, + [I(233,207)] = {64,0}, + [I(234,207)] = {64,0}, + [I(235,207)] = {64,0}, + [I(236,207)] = {64,0}, + [I(237,207)] = {64,0}, + [I(238,207)] = {64,0}, + [I(239,207)] = {64,0}, + [I(240,207)] = {64,0}, + [I(241,207)] = {64,0}, + [I(242,207)] = {64,0}, + [I(243,207)] = {64,0}, + [I(244,207)] = {64,0}, + [I(245,207)] = {64,0}, + [I(246,207)] = {64,0}, + [I(247,207)] = {64,0}, + [I(248,207)] = {64,0}, + [I(249,207)] = {64,0}, + [I(250,207)] = {64,0}, + [I(251,207)] = {64,0}, + [I(252,207)] = {64,0}, + [I(253,207)] = {64,0}, + [I(254,207)] = {64,0}, + [I(255,207)] = {64,0}, + [I(0,208)] = {X32,0xFFC7FFF2}, + [I(1,208)] = {64,0}, + [I(2,208)] = {64,0}, + [I(3,208)] = {64,0}, + [I(4,208)] = {64,0}, + [I(5,208)] = {64,0}, + [I(6,208)] = {64,0}, + [I(7,208)] = {64,0}, + [I(8,208)] = {64,0}, + [I(9,208)] = {64,0}, + [I(10,208)] = {64,0}, + [I(11,208)] = {64,0}, + [I(12,208)] = {64,0}, + [I(13,208)] = {64,0}, + [I(14,208)] = {64,0}, + [I(15,208)] = {64,0}, + [I(16,208)] = {64,0}, + [I(17,208)] = {64,0}, + [I(18,208)] = {64,0}, + [I(19,208)] = {64,0}, + [I(20,208)] = {64,0}, + [I(21,208)] = {64,0}, + [I(22,208)] = {64,0}, + [I(23,208)] = {64,0}, + [I(24,208)] = {64,0}, + [I(25,208)] = {64,0}, + [I(26,208)] = {64,0}, + [I(27,208)] = {64,0}, + [I(28,208)] = {64,0}, + [I(29,208)] = {64,0}, + [I(30,208)] = {64,0}, + [I(31,208)] = {64,0}, + [I(32,208)] = {25,0xA7FFF2}, + [I(33,208)] = {29,0x1FC7FFF2}, + [I(34,208)] = {29,0x1FCFFFF2}, + [I(35,208)] = {31,0x7FD7FFF2}, + [I(36,208)] = {X32,0xFFCFFFF2}, + [I(37,208)] = {25,0xAFFFF2}, + [I(38,208)] = {27,0x7C7FFF2}, + [I(39,208)] = {30,0x3FD7FFF2}, + [I(40,208)] = {29,0x1FD7FFF2}, + [I(41,208)] = {29,0x1FDFFFF2}, + [I(42,208)] = {27,0x7CFFFF2}, + [I(43,208)] = {30,0x3FDFFFF2}, + [I(44,208)] = {27,0x7D7FFF2}, + [I(45,208)] = {25,0xB7FFF2}, + [I(46,208)] = {25,0xBFFFF2}, + [I(47,208)] = {25,0xC7FFF2}, + [I(48,208)] = {24,0x7FFF2}, + [I(49,208)] = {24,0xFFFF2}, + [I(50,208)] = {24,0x17FFF2}, + [I(51,208)] = {25,0xCFFFF2}, + [I(52,208)] = {25,0xD7FFF2}, + [I(53,208)] = {25,0xDFFFF2}, + [I(54,208)] = {25,0xE7FFF2}, + [I(55,208)] = {25,0xEFFFF2}, + [I(56,208)] = {25,0xF7FFF2}, + [I(57,208)] = {25,0xFFFFF2}, + [I(58,208)] = {26,0x2E7FFF2}, + [I(59,208)] = {27,0x7DFFFF2}, + [I(60,208)] = {64,0}, + [I(61,208)] = {25,0x107FFF2}, + [I(62,208)] = {31,0x7FDFFFF2}, + [I(63,208)] = {29,0x1FE7FFF2}, + [I(64,208)] = {X32,0xFFD7FFF2}, + [I(65,208)] = {25,0x10FFFF2}, + [I(66,208)] = {26,0x2EFFFF2}, + [I(67,208)] = {26,0x2F7FFF2}, + [I(68,208)] = {26,0x2FFFFF2}, + [I(69,208)] = {26,0x307FFF2}, + [I(70,208)] = {26,0x30FFFF2}, + [I(71,208)] = {26,0x317FFF2}, + [I(72,208)] = {26,0x31FFFF2}, + [I(73,208)] = {26,0x327FFF2}, + [I(74,208)] = {26,0x32FFFF2}, + [I(75,208)] = {26,0x337FFF2}, + [I(76,208)] = {26,0x33FFFF2}, + [I(77,208)] = {26,0x347FFF2}, + [I(78,208)] = {26,0x34FFFF2}, + [I(79,208)] = {26,0x357FFF2}, + [I(80,208)] = {26,0x35FFFF2}, + [I(81,208)] = {26,0x367FFF2}, + [I(82,208)] = {26,0x36FFFF2}, + [I(83,208)] = {26,0x377FFF2}, + [I(84,208)] = {26,0x37FFFF2}, + [I(85,208)] = {26,0x387FFF2}, + [I(86,208)] = {26,0x38FFFF2}, + [I(87,208)] = {26,0x397FFF2}, + [I(88,208)] = {27,0x7E7FFF2}, + [I(89,208)] = {26,0x39FFFF2}, + [I(90,208)] = {27,0x7EFFFF2}, + [I(91,208)] = {X32,0xFFDFFFF2}, + [I(92,208)] = {64,0}, + [I(93,208)] = {X32,0xFFE7FFF2}, + [I(94,208)] = {64,0}, + [I(95,208)] = {25,0x117FFF2}, + [I(96,208)] = {64,0}, + [I(97,208)] = {24,0x1FFFF2}, + [I(98,208)] = {25,0x11FFFF2}, + [I(99,208)] = {24,0x27FFF2}, + [I(100,208)] = {25,0x127FFF2}, + [I(101,208)] = {24,0x2FFFF2}, + [I(102,208)] = {25,0x12FFFF2}, + [I(103,208)] = {25,0x137FFF2}, + [I(104,208)] = {25,0x13FFFF2}, + [I(105,208)] = {24,0x37FFF2}, + [I(106,208)] = {26,0x3A7FFF2}, + [I(107,208)] = {26,0x3AFFFF2}, + [I(108,208)] = {25,0x147FFF2}, + [I(109,208)] = {25,0x14FFFF2}, + [I(110,208)] = {25,0x157FFF2}, + [I(111,208)] = {24,0x3FFFF2}, + [I(112,208)] = {25,0x15FFFF2}, + [I(113,208)] = {26,0x3B7FFF2}, + [I(114,208)] = {25,0x167FFF2}, + [I(115,208)] = {24,0x47FFF2}, + [I(116,208)] = {24,0x4FFFF2}, + [I(117,208)] = {25,0x16FFFF2}, + [I(118,208)] = {26,0x3BFFFF2}, + [I(119,208)] = {26,0x3C7FFF2}, + [I(120,208)] = {26,0x3CFFFF2}, + [I(121,208)] = {26,0x3D7FFF2}, + [I(122,208)] = {26,0x3DFFFF2}, + [I(123,208)] = {64,0}, + [I(124,208)] = {30,0x3FE7FFF2}, + [I(125,208)] = {64,0}, + [I(126,208)] = {X32,0xFFEFFFF2}, + [I(127,208)] = {64,0}, + [I(128,208)] = {64,0}, + [I(129,208)] = {64,0}, + [I(130,208)] = {64,0}, + [I(131,208)] = {64,0}, + [I(132,208)] = {64,0}, + [I(133,208)] = {64,0}, + [I(134,208)] = {64,0}, + [I(135,208)] = {64,0}, + [I(136,208)] = {64,0}, + [I(137,208)] = {64,0}, + [I(138,208)] = {64,0}, + [I(139,208)] = {64,0}, + [I(140,208)] = {64,0}, + [I(141,208)] = {64,0}, + [I(142,208)] = {64,0}, + [I(143,208)] = {64,0}, + [I(144,208)] = {64,0}, + [I(145,208)] = {64,0}, + [I(146,208)] = {64,0}, + [I(147,208)] = {64,0}, + [I(148,208)] = {64,0}, + [I(149,208)] = {64,0}, + [I(150,208)] = {64,0}, + [I(151,208)] = {64,0}, + [I(152,208)] = {64,0}, + [I(153,208)] = {64,0}, + [I(154,208)] = {64,0}, + [I(155,208)] = {64,0}, + [I(156,208)] = {64,0}, + [I(157,208)] = {64,0}, + [I(158,208)] = {64,0}, + [I(159,208)] = {64,0}, + [I(160,208)] = {64,0}, + [I(161,208)] = {64,0}, + [I(162,208)] = {64,0}, + [I(163,208)] = {64,0}, + [I(164,208)] = {64,0}, + [I(165,208)] = {64,0}, + [I(166,208)] = {64,0}, + [I(167,208)] = {64,0}, + [I(168,208)] = {64,0}, + [I(169,208)] = {64,0}, + [I(170,208)] = {64,0}, + [I(171,208)] = {64,0}, + [I(172,208)] = {64,0}, + [I(173,208)] = {64,0}, + [I(174,208)] = {64,0}, + [I(175,208)] = {64,0}, + [I(176,208)] = {64,0}, + [I(177,208)] = {64,0}, + [I(178,208)] = {64,0}, + [I(179,208)] = {64,0}, + [I(180,208)] = {64,0}, + [I(181,208)] = {64,0}, + [I(182,208)] = {64,0}, + [I(183,208)] = {64,0}, + [I(184,208)] = {64,0}, + [I(185,208)] = {64,0}, + [I(186,208)] = {64,0}, + [I(187,208)] = {64,0}, + [I(188,208)] = {64,0}, + [I(189,208)] = {64,0}, + [I(190,208)] = {64,0}, + [I(191,208)] = {64,0}, + [I(192,208)] = {64,0}, + [I(193,208)] = {64,0}, + [I(194,208)] = {64,0}, + [I(195,208)] = {64,0}, + [I(196,208)] = {64,0}, + [I(197,208)] = {64,0}, + [I(198,208)] = {64,0}, + [I(199,208)] = {64,0}, + [I(200,208)] = {64,0}, + [I(201,208)] = {64,0}, + [I(202,208)] = {64,0}, + [I(203,208)] = {64,0}, + [I(204,208)] = {64,0}, + [I(205,208)] = {64,0}, + [I(206,208)] = {64,0}, + [I(207,208)] = {64,0}, + [I(208,208)] = {64,0}, + [I(209,208)] = {64,0}, + [I(210,208)] = {64,0}, + [I(211,208)] = {64,0}, + [I(212,208)] = {64,0}, + [I(213,208)] = {64,0}, + [I(214,208)] = {64,0}, + [I(215,208)] = {64,0}, + [I(216,208)] = {64,0}, + [I(217,208)] = {64,0}, + [I(218,208)] = {64,0}, + [I(219,208)] = {64,0}, + [I(220,208)] = {64,0}, + [I(221,208)] = {64,0}, + [I(222,208)] = {64,0}, + [I(223,208)] = {64,0}, + [I(224,208)] = {64,0}, + [I(225,208)] = {64,0}, + [I(226,208)] = {64,0}, + [I(227,208)] = {64,0}, + [I(228,208)] = {64,0}, + [I(229,208)] = {64,0}, + [I(230,208)] = {64,0}, + [I(231,208)] = {64,0}, + [I(232,208)] = {64,0}, + [I(233,208)] = {64,0}, + [I(234,208)] = {64,0}, + [I(235,208)] = {64,0}, + [I(236,208)] = {64,0}, + [I(237,208)] = {64,0}, + [I(238,208)] = {64,0}, + [I(239,208)] = {64,0}, + [I(240,208)] = {64,0}, + [I(241,208)] = {64,0}, + [I(242,208)] = {64,0}, + [I(243,208)] = {64,0}, + [I(244,208)] = {64,0}, + [I(245,208)] = {64,0}, + [I(246,208)] = {64,0}, + [I(247,208)] = {64,0}, + [I(248,208)] = {64,0}, + [I(249,208)] = {64,0}, + [I(250,208)] = {64,0}, + [I(251,208)] = {64,0}, + [I(252,208)] = {64,0}, + [I(253,208)] = {64,0}, + [I(254,208)] = {64,0}, + [I(255,208)] = {64,0}, + [I(0,209)] = {64,0}, + [I(1,209)] = {64,0}, + [I(2,209)] = {64,0}, + [I(3,209)] = {64,0}, + [I(4,209)] = {64,0}, + [I(5,209)] = {64,0}, + [I(6,209)] = {64,0}, + [I(7,209)] = {64,0}, + [I(8,209)] = {64,0}, + [I(9,209)] = {64,0}, + [I(10,209)] = {64,0}, + [I(11,209)] = {64,0}, + [I(12,209)] = {64,0}, + [I(13,209)] = {64,0}, + [I(14,209)] = {64,0}, + [I(15,209)] = {64,0}, + [I(16,209)] = {64,0}, + [I(17,209)] = {64,0}, + [I(18,209)] = {64,0}, + [I(19,209)] = {64,0}, + [I(20,209)] = {64,0}, + [I(21,209)] = {64,0}, + [I(22,209)] = {64,0}, + [I(23,209)] = {64,0}, + [I(24,209)] = {64,0}, + [I(25,209)] = {64,0}, + [I(26,209)] = {64,0}, + [I(27,209)] = {64,0}, + [I(28,209)] = {64,0}, + [I(29,209)] = {64,0}, + [I(30,209)] = {64,0}, + [I(31,209)] = {64,0}, + [I(32,209)] = {27,0x29FFFE3}, + [I(33,209)] = {31,0x7F1FFFE3}, + [I(34,209)] = {31,0x7F3FFFE3}, + [I(35,209)] = {64,0}, + [I(36,209)] = {64,0}, + [I(37,209)] = {27,0x2BFFFE3}, + [I(38,209)] = {29,0x1F1FFFE3}, + [I(39,209)] = {X32,0xFF5FFFE3}, + [I(40,209)] = {31,0x7F5FFFE3}, + [I(41,209)] = {31,0x7F7FFFE3}, + [I(42,209)] = {29,0x1F3FFFE3}, + [I(43,209)] = {X32,0xFF7FFFE3}, + [I(44,209)] = {29,0x1F5FFFE3}, + [I(45,209)] = {27,0x2DFFFE3}, + [I(46,209)] = {27,0x2FFFFE3}, + [I(47,209)] = {27,0x31FFFE3}, + [I(48,209)] = {26,0x1FFFE3}, + [I(49,209)] = {26,0x3FFFE3}, + [I(50,209)] = {26,0x5FFFE3}, + [I(51,209)] = {27,0x33FFFE3}, + [I(52,209)] = {27,0x35FFFE3}, + [I(53,209)] = {27,0x37FFFE3}, + [I(54,209)] = {27,0x39FFFE3}, + [I(55,209)] = {27,0x3BFFFE3}, + [I(56,209)] = {27,0x3DFFFE3}, + [I(57,209)] = {27,0x3FFFFE3}, + [I(58,209)] = {28,0xB9FFFE3}, + [I(59,209)] = {29,0x1F7FFFE3}, + [I(60,209)] = {64,0}, + [I(61,209)] = {27,0x41FFFE3}, + [I(62,209)] = {64,0}, + [I(63,209)] = {31,0x7F9FFFE3}, + [I(64,209)] = {64,0}, + [I(65,209)] = {27,0x43FFFE3}, + [I(66,209)] = {28,0xBBFFFE3}, + [I(67,209)] = {28,0xBDFFFE3}, + [I(68,209)] = {28,0xBFFFFE3}, + [I(69,209)] = {28,0xC1FFFE3}, + [I(70,209)] = {28,0xC3FFFE3}, + [I(71,209)] = {28,0xC5FFFE3}, + [I(72,209)] = {28,0xC7FFFE3}, + [I(73,209)] = {28,0xC9FFFE3}, + [I(74,209)] = {28,0xCBFFFE3}, + [I(75,209)] = {28,0xCDFFFE3}, + [I(76,209)] = {28,0xCFFFFE3}, + [I(77,209)] = {28,0xD1FFFE3}, + [I(78,209)] = {28,0xD3FFFE3}, + [I(79,209)] = {28,0xD5FFFE3}, + [I(80,209)] = {28,0xD7FFFE3}, + [I(81,209)] = {28,0xD9FFFE3}, + [I(82,209)] = {28,0xDBFFFE3}, + [I(83,209)] = {28,0xDDFFFE3}, + [I(84,209)] = {28,0xDFFFFE3}, + [I(85,209)] = {28,0xE1FFFE3}, + [I(86,209)] = {28,0xE3FFFE3}, + [I(87,209)] = {28,0xE5FFFE3}, + [I(88,209)] = {29,0x1F9FFFE3}, + [I(89,209)] = {28,0xE7FFFE3}, + [I(90,209)] = {29,0x1FBFFFE3}, + [I(91,209)] = {64,0}, + [I(92,209)] = {64,0}, + [I(93,209)] = {64,0}, + [I(94,209)] = {64,0}, + [I(95,209)] = {27,0x45FFFE3}, + [I(96,209)] = {64,0}, + [I(97,209)] = {26,0x7FFFE3}, + [I(98,209)] = {27,0x47FFFE3}, + [I(99,209)] = {26,0x9FFFE3}, + [I(100,209)] = {27,0x49FFFE3}, + [I(101,209)] = {26,0xBFFFE3}, + [I(102,209)] = {27,0x4BFFFE3}, + [I(103,209)] = {27,0x4DFFFE3}, + [I(104,209)] = {27,0x4FFFFE3}, + [I(105,209)] = {26,0xDFFFE3}, + [I(106,209)] = {28,0xE9FFFE3}, + [I(107,209)] = {28,0xEBFFFE3}, + [I(108,209)] = {27,0x51FFFE3}, + [I(109,209)] = {27,0x53FFFE3}, + [I(110,209)] = {27,0x55FFFE3}, + [I(111,209)] = {26,0xFFFFE3}, + [I(112,209)] = {27,0x57FFFE3}, + [I(113,209)] = {28,0xEDFFFE3}, + [I(114,209)] = {27,0x59FFFE3}, + [I(115,209)] = {26,0x11FFFE3}, + [I(116,209)] = {26,0x13FFFE3}, + [I(117,209)] = {27,0x5BFFFE3}, + [I(118,209)] = {28,0xEFFFFE3}, + [I(119,209)] = {28,0xF1FFFE3}, + [I(120,209)] = {28,0xF3FFFE3}, + [I(121,209)] = {28,0xF5FFFE3}, + [I(122,209)] = {28,0xF7FFFE3}, + [I(123,209)] = {64,0}, + [I(124,209)] = {X32,0xFF9FFFE3}, + [I(125,209)] = {64,0}, + [I(126,209)] = {64,0}, + [I(127,209)] = {64,0}, + [I(128,209)] = {64,0}, + [I(129,209)] = {64,0}, + [I(130,209)] = {64,0}, + [I(131,209)] = {64,0}, + [I(132,209)] = {64,0}, + [I(133,209)] = {64,0}, + [I(134,209)] = {64,0}, + [I(135,209)] = {64,0}, + [I(136,209)] = {64,0}, + [I(137,209)] = {64,0}, + [I(138,209)] = {64,0}, + [I(139,209)] = {64,0}, + [I(140,209)] = {64,0}, + [I(141,209)] = {64,0}, + [I(142,209)] = {64,0}, + [I(143,209)] = {64,0}, + [I(144,209)] = {64,0}, + [I(145,209)] = {64,0}, + [I(146,209)] = {64,0}, + [I(147,209)] = {64,0}, + [I(148,209)] = {64,0}, + [I(149,209)] = {64,0}, + [I(150,209)] = {64,0}, + [I(151,209)] = {64,0}, + [I(152,209)] = {64,0}, + [I(153,209)] = {64,0}, + [I(154,209)] = {64,0}, + [I(155,209)] = {64,0}, + [I(156,209)] = {64,0}, + [I(157,209)] = {64,0}, + [I(158,209)] = {64,0}, + [I(159,209)] = {64,0}, + [I(160,209)] = {64,0}, + [I(161,209)] = {64,0}, + [I(162,209)] = {64,0}, + [I(163,209)] = {64,0}, + [I(164,209)] = {64,0}, + [I(165,209)] = {64,0}, + [I(166,209)] = {64,0}, + [I(167,209)] = {64,0}, + [I(168,209)] = {64,0}, + [I(169,209)] = {64,0}, + [I(170,209)] = {64,0}, + [I(171,209)] = {64,0}, + [I(172,209)] = {64,0}, + [I(173,209)] = {64,0}, + [I(174,209)] = {64,0}, + [I(175,209)] = {64,0}, + [I(176,209)] = {64,0}, + [I(177,209)] = {64,0}, + [I(178,209)] = {64,0}, + [I(179,209)] = {64,0}, + [I(180,209)] = {64,0}, + [I(181,209)] = {64,0}, + [I(182,209)] = {64,0}, + [I(183,209)] = {64,0}, + [I(184,209)] = {64,0}, + [I(185,209)] = {64,0}, + [I(186,209)] = {64,0}, + [I(187,209)] = {64,0}, + [I(188,209)] = {64,0}, + [I(189,209)] = {64,0}, + [I(190,209)] = {64,0}, + [I(191,209)] = {64,0}, + [I(192,209)] = {64,0}, + [I(193,209)] = {64,0}, + [I(194,209)] = {64,0}, + [I(195,209)] = {64,0}, + [I(196,209)] = {64,0}, + [I(197,209)] = {64,0}, + [I(198,209)] = {64,0}, + [I(199,209)] = {64,0}, + [I(200,209)] = {64,0}, + [I(201,209)] = {64,0}, + [I(202,209)] = {64,0}, + [I(203,209)] = {64,0}, + [I(204,209)] = {64,0}, + [I(205,209)] = {64,0}, + [I(206,209)] = {64,0}, + [I(207,209)] = {64,0}, + [I(208,209)] = {64,0}, + [I(209,209)] = {64,0}, + [I(210,209)] = {64,0}, + [I(211,209)] = {64,0}, + [I(212,209)] = {64,0}, + [I(213,209)] = {64,0}, + [I(214,209)] = {64,0}, + [I(215,209)] = {64,0}, + [I(216,209)] = {64,0}, + [I(217,209)] = {64,0}, + [I(218,209)] = {64,0}, + [I(219,209)] = {64,0}, + [I(220,209)] = {64,0}, + [I(221,209)] = {64,0}, + [I(222,209)] = {64,0}, + [I(223,209)] = {64,0}, + [I(224,209)] = {64,0}, + [I(225,209)] = {64,0}, + [I(226,209)] = {64,0}, + [I(227,209)] = {64,0}, + [I(228,209)] = {64,0}, + [I(229,209)] = {64,0}, + [I(230,209)] = {64,0}, + [I(231,209)] = {64,0}, + [I(232,209)] = {64,0}, + [I(233,209)] = {64,0}, + [I(234,209)] = {64,0}, + [I(235,209)] = {64,0}, + [I(236,209)] = {64,0}, + [I(237,209)] = {64,0}, + [I(238,209)] = {64,0}, + [I(239,209)] = {64,0}, + [I(240,209)] = {64,0}, + [I(241,209)] = {64,0}, + [I(242,209)] = {64,0}, + [I(243,209)] = {64,0}, + [I(244,209)] = {64,0}, + [I(245,209)] = {64,0}, + [I(246,209)] = {64,0}, + [I(247,209)] = {64,0}, + [I(248,209)] = {64,0}, + [I(249,209)] = {64,0}, + [I(250,209)] = {64,0}, + [I(251,209)] = {64,0}, + [I(252,209)] = {64,0}, + [I(253,209)] = {64,0}, + [I(254,209)] = {64,0}, + [I(255,209)] = {64,0}, + [I(0,210)] = {64,0}, + [I(1,210)] = {64,0}, + [I(2,210)] = {64,0}, + [I(3,210)] = {64,0}, + [I(4,210)] = {64,0}, + [I(5,210)] = {64,0}, + [I(6,210)] = {64,0}, + [I(7,210)] = {64,0}, + [I(8,210)] = {64,0}, + [I(9,210)] = {64,0}, + [I(10,210)] = {64,0}, + [I(11,210)] = {64,0}, + [I(12,210)] = {64,0}, + [I(13,210)] = {64,0}, + [I(14,210)] = {64,0}, + [I(15,210)] = {64,0}, + [I(16,210)] = {64,0}, + [I(17,210)] = {64,0}, + [I(18,210)] = {64,0}, + [I(19,210)] = {64,0}, + [I(20,210)] = {64,0}, + [I(21,210)] = {64,0}, + [I(22,210)] = {64,0}, + [I(23,210)] = {64,0}, + [I(24,210)] = {64,0}, + [I(25,210)] = {64,0}, + [I(26,210)] = {64,0}, + [I(27,210)] = {64,0}, + [I(28,210)] = {64,0}, + [I(29,210)] = {64,0}, + [I(30,210)] = {64,0}, + [I(31,210)] = {64,0}, + [I(32,210)] = {X32,0x53FFFFE6}, + [I(33,210)] = {64,0}, + [I(34,210)] = {64,0}, + [I(35,210)] = {64,0}, + [I(36,210)] = {64,0}, + [I(37,210)] = {X32,0x57FFFFE6}, + [I(38,210)] = {64,0}, + [I(39,210)] = {64,0}, + [I(40,210)] = {64,0}, + [I(41,210)] = {64,0}, + [I(42,210)] = {64,0}, + [I(43,210)] = {64,0}, + [I(44,210)] = {64,0}, + [I(45,210)] = {X32,0x5BFFFFE6}, + [I(46,210)] = {X32,0x5FFFFFE6}, + [I(47,210)] = {X32,0x63FFFFE6}, + [I(48,210)] = {31,0x3FFFFE6}, + [I(49,210)] = {31,0x7FFFFE6}, + [I(50,210)] = {31,0xBFFFFE6}, + [I(51,210)] = {X32,0x67FFFFE6}, + [I(52,210)] = {X32,0x6BFFFFE6}, + [I(53,210)] = {X32,0x6FFFFFE6}, + [I(54,210)] = {X32,0x73FFFFE6}, + [I(55,210)] = {X32,0x77FFFFE6}, + [I(56,210)] = {X32,0x7BFFFFE6}, + [I(57,210)] = {X32,0x7FFFFFE6}, + [I(58,210)] = {64,0}, + [I(59,210)] = {64,0}, + [I(60,210)] = {64,0}, + [I(61,210)] = {X32,0x83FFFFE6}, + [I(62,210)] = {64,0}, + [I(63,210)] = {64,0}, + [I(64,210)] = {64,0}, + [I(65,210)] = {X32,0x87FFFFE6}, + [I(66,210)] = {64,0}, + [I(67,210)] = {64,0}, + [I(68,210)] = {64,0}, + [I(69,210)] = {64,0}, + [I(70,210)] = {64,0}, + [I(71,210)] = {64,0}, + [I(72,210)] = {64,0}, + [I(73,210)] = {64,0}, + [I(74,210)] = {64,0}, + [I(75,210)] = {64,0}, + [I(76,210)] = {64,0}, + [I(77,210)] = {64,0}, + [I(78,210)] = {64,0}, + [I(79,210)] = {64,0}, + [I(80,210)] = {64,0}, + [I(81,210)] = {64,0}, + [I(82,210)] = {64,0}, + [I(83,210)] = {64,0}, + [I(84,210)] = {64,0}, + [I(85,210)] = {64,0}, + [I(86,210)] = {64,0}, + [I(87,210)] = {64,0}, + [I(88,210)] = {64,0}, + [I(89,210)] = {64,0}, + [I(90,210)] = {64,0}, + [I(91,210)] = {64,0}, + [I(92,210)] = {64,0}, + [I(93,210)] = {64,0}, + [I(94,210)] = {64,0}, + [I(95,210)] = {X32,0x8BFFFFE6}, + [I(96,210)] = {64,0}, + [I(97,210)] = {31,0xFFFFFE6}, + [I(98,210)] = {X32,0x8FFFFFE6}, + [I(99,210)] = {31,0x13FFFFE6}, + [I(100,210)] = {X32,0x93FFFFE6}, + [I(101,210)] = {31,0x17FFFFE6}, + [I(102,210)] = {X32,0x97FFFFE6}, + [I(103,210)] = {X32,0x9BFFFFE6}, + [I(104,210)] = {X32,0x9FFFFFE6}, + [I(105,210)] = {31,0x1BFFFFE6}, + [I(106,210)] = {64,0}, + [I(107,210)] = {64,0}, + [I(108,210)] = {X32,0xA3FFFFE6}, + [I(109,210)] = {X32,0xA7FFFFE6}, + [I(110,210)] = {X32,0xABFFFFE6}, + [I(111,210)] = {31,0x1FFFFFE6}, + [I(112,210)] = {X32,0xAFFFFFE6}, + [I(113,210)] = {64,0}, + [I(114,210)] = {X32,0xB3FFFFE6}, + [I(115,210)] = {31,0x23FFFFE6}, + [I(116,210)] = {31,0x27FFFFE6}, + [I(117,210)] = {X32,0xB7FFFFE6}, + [I(118,210)] = {64,0}, + [I(119,210)] = {64,0}, + [I(120,210)] = {64,0}, + [I(121,210)] = {64,0}, + [I(122,210)] = {64,0}, + [I(123,210)] = {64,0}, + [I(124,210)] = {64,0}, + [I(125,210)] = {64,0}, + [I(126,210)] = {64,0}, + [I(127,210)] = {64,0}, + [I(128,210)] = {64,0}, + [I(129,210)] = {64,0}, + [I(130,210)] = {64,0}, + [I(131,210)] = {64,0}, + [I(132,210)] = {64,0}, + [I(133,210)] = {64,0}, + [I(134,210)] = {64,0}, + [I(135,210)] = {64,0}, + [I(136,210)] = {64,0}, + [I(137,210)] = {64,0}, + [I(138,210)] = {64,0}, + [I(139,210)] = {64,0}, + [I(140,210)] = {64,0}, + [I(141,210)] = {64,0}, + [I(142,210)] = {64,0}, + [I(143,210)] = {64,0}, + [I(144,210)] = {64,0}, + [I(145,210)] = {64,0}, + [I(146,210)] = {64,0}, + [I(147,210)] = {64,0}, + [I(148,210)] = {64,0}, + [I(149,210)] = {64,0}, + [I(150,210)] = {64,0}, + [I(151,210)] = {64,0}, + [I(152,210)] = {64,0}, + [I(153,210)] = {64,0}, + [I(154,210)] = {64,0}, + [I(155,210)] = {64,0}, + [I(156,210)] = {64,0}, + [I(157,210)] = {64,0}, + [I(158,210)] = {64,0}, + [I(159,210)] = {64,0}, + [I(160,210)] = {64,0}, + [I(161,210)] = {64,0}, + [I(162,210)] = {64,0}, + [I(163,210)] = {64,0}, + [I(164,210)] = {64,0}, + [I(165,210)] = {64,0}, + [I(166,210)] = {64,0}, + [I(167,210)] = {64,0}, + [I(168,210)] = {64,0}, + [I(169,210)] = {64,0}, + [I(170,210)] = {64,0}, + [I(171,210)] = {64,0}, + [I(172,210)] = {64,0}, + [I(173,210)] = {64,0}, + [I(174,210)] = {64,0}, + [I(175,210)] = {64,0}, + [I(176,210)] = {64,0}, + [I(177,210)] = {64,0}, + [I(178,210)] = {64,0}, + [I(179,210)] = {64,0}, + [I(180,210)] = {64,0}, + [I(181,210)] = {64,0}, + [I(182,210)] = {64,0}, + [I(183,210)] = {64,0}, + [I(184,210)] = {64,0}, + [I(185,210)] = {64,0}, + [I(186,210)] = {64,0}, + [I(187,210)] = {64,0}, + [I(188,210)] = {64,0}, + [I(189,210)] = {64,0}, + [I(190,210)] = {64,0}, + [I(191,210)] = {64,0}, + [I(192,210)] = {64,0}, + [I(193,210)] = {64,0}, + [I(194,210)] = {64,0}, + [I(195,210)] = {64,0}, + [I(196,210)] = {64,0}, + [I(197,210)] = {64,0}, + [I(198,210)] = {64,0}, + [I(199,210)] = {64,0}, + [I(200,210)] = {64,0}, + [I(201,210)] = {64,0}, + [I(202,210)] = {64,0}, + [I(203,210)] = {64,0}, + [I(204,210)] = {64,0}, + [I(205,210)] = {64,0}, + [I(206,210)] = {64,0}, + [I(207,210)] = {64,0}, + [I(208,210)] = {64,0}, + [I(209,210)] = {64,0}, + [I(210,210)] = {64,0}, + [I(211,210)] = {64,0}, + [I(212,210)] = {64,0}, + [I(213,210)] = {64,0}, + [I(214,210)] = {64,0}, + [I(215,210)] = {64,0}, + [I(216,210)] = {64,0}, + [I(217,210)] = {64,0}, + [I(218,210)] = {64,0}, + [I(219,210)] = {64,0}, + [I(220,210)] = {64,0}, + [I(221,210)] = {64,0}, + [I(222,210)] = {64,0}, + [I(223,210)] = {64,0}, + [I(224,210)] = {64,0}, + [I(225,210)] = {64,0}, + [I(226,210)] = {64,0}, + [I(227,210)] = {64,0}, + [I(228,210)] = {64,0}, + [I(229,210)] = {64,0}, + [I(230,210)] = {64,0}, + [I(231,210)] = {64,0}, + [I(232,210)] = {64,0}, + [I(233,210)] = {64,0}, + [I(234,210)] = {64,0}, + [I(235,210)] = {64,0}, + [I(236,210)] = {64,0}, + [I(237,210)] = {64,0}, + [I(238,210)] = {64,0}, + [I(239,210)] = {64,0}, + [I(240,210)] = {64,0}, + [I(241,210)] = {64,0}, + [I(242,210)] = {64,0}, + [I(243,210)] = {64,0}, + [I(244,210)] = {64,0}, + [I(245,210)] = {64,0}, + [I(246,210)] = {64,0}, + [I(247,210)] = {64,0}, + [I(248,210)] = {64,0}, + [I(249,210)] = {64,0}, + [I(250,210)] = {64,0}, + [I(251,210)] = {64,0}, + [I(252,210)] = {64,0}, + [I(253,210)] = {64,0}, + [I(254,210)] = {64,0}, + [I(255,210)] = {64,0}, + [I(0,211)] = {64,0}, + [I(1,211)] = {64,0}, + [I(2,211)] = {64,0}, + [I(3,211)] = {64,0}, + [I(4,211)] = {64,0}, + [I(5,211)] = {64,0}, + [I(6,211)] = {64,0}, + [I(7,211)] = {64,0}, + [I(8,211)] = {64,0}, + [I(9,211)] = {64,0}, + [I(10,211)] = {64,0}, + [I(11,211)] = {64,0}, + [I(12,211)] = {64,0}, + [I(13,211)] = {64,0}, + [I(14,211)] = {64,0}, + [I(15,211)] = {64,0}, + [I(16,211)] = {64,0}, + [I(17,211)] = {64,0}, + [I(18,211)] = {64,0}, + [I(19,211)] = {64,0}, + [I(20,211)] = {64,0}, + [I(21,211)] = {64,0}, + [I(22,211)] = {64,0}, + [I(23,211)] = {64,0}, + [I(24,211)] = {64,0}, + [I(25,211)] = {64,0}, + [I(26,211)] = {64,0}, + [I(27,211)] = {64,0}, + [I(28,211)] = {64,0}, + [I(29,211)] = {64,0}, + [I(30,211)] = {64,0}, + [I(31,211)] = {64,0}, + [I(32,211)] = {64,0}, + [I(33,211)] = {64,0}, + [I(34,211)] = {64,0}, + [I(35,211)] = {64,0}, + [I(36,211)] = {64,0}, + [I(37,211)] = {64,0}, + [I(38,211)] = {64,0}, + [I(39,211)] = {64,0}, + [I(40,211)] = {64,0}, + [I(41,211)] = {64,0}, + [I(42,211)] = {64,0}, + [I(43,211)] = {64,0}, + [I(44,211)] = {64,0}, + [I(45,211)] = {64,0}, + [I(46,211)] = {64,0}, + [I(47,211)] = {64,0}, + [I(48,211)] = {X32,0x7FFFFE0}, + [I(49,211)] = {X32,0xFFFFFE0}, + [I(50,211)] = {X32,0x17FFFFE0}, + [I(51,211)] = {64,0}, + [I(52,211)] = {64,0}, + [I(53,211)] = {64,0}, + [I(54,211)] = {64,0}, + [I(55,211)] = {64,0}, + [I(56,211)] = {64,0}, + [I(57,211)] = {64,0}, + [I(58,211)] = {64,0}, + [I(59,211)] = {64,0}, + [I(60,211)] = {64,0}, + [I(61,211)] = {64,0}, + [I(62,211)] = {64,0}, + [I(63,211)] = {64,0}, + [I(64,211)] = {64,0}, + [I(65,211)] = {64,0}, + [I(66,211)] = {64,0}, + [I(67,211)] = {64,0}, + [I(68,211)] = {64,0}, + [I(69,211)] = {64,0}, + [I(70,211)] = {64,0}, + [I(71,211)] = {64,0}, + [I(72,211)] = {64,0}, + [I(73,211)] = {64,0}, + [I(74,211)] = {64,0}, + [I(75,211)] = {64,0}, + [I(76,211)] = {64,0}, + [I(77,211)] = {64,0}, + [I(78,211)] = {64,0}, + [I(79,211)] = {64,0}, + [I(80,211)] = {64,0}, + [I(81,211)] = {64,0}, + [I(82,211)] = {64,0}, + [I(83,211)] = {64,0}, + [I(84,211)] = {64,0}, + [I(85,211)] = {64,0}, + [I(86,211)] = {64,0}, + [I(87,211)] = {64,0}, + [I(88,211)] = {64,0}, + [I(89,211)] = {64,0}, + [I(90,211)] = {64,0}, + [I(91,211)] = {64,0}, + [I(92,211)] = {64,0}, + [I(93,211)] = {64,0}, + [I(94,211)] = {64,0}, + [I(95,211)] = {64,0}, + [I(96,211)] = {64,0}, + [I(97,211)] = {X32,0x1FFFFFE0}, + [I(98,211)] = {64,0}, + [I(99,211)] = {X32,0x27FFFFE0}, + [I(100,211)] = {64,0}, + [I(101,211)] = {X32,0x2FFFFFE0}, + [I(102,211)] = {64,0}, + [I(103,211)] = {64,0}, + [I(104,211)] = {64,0}, + [I(105,211)] = {X32,0x37FFFFE0}, + [I(106,211)] = {64,0}, + [I(107,211)] = {64,0}, + [I(108,211)] = {64,0}, + [I(109,211)] = {64,0}, + [I(110,211)] = {64,0}, + [I(111,211)] = {X32,0x3FFFFFE0}, + [I(112,211)] = {64,0}, + [I(113,211)] = {64,0}, + [I(114,211)] = {64,0}, + [I(115,211)] = {X32,0x47FFFFE0}, + [I(116,211)] = {X32,0x4FFFFFE0}, + [I(117,211)] = {64,0}, + [I(118,211)] = {64,0}, + [I(119,211)] = {64,0}, + [I(120,211)] = {64,0}, + [I(121,211)] = {64,0}, + [I(122,211)] = {64,0}, + [I(123,211)] = {64,0}, + [I(124,211)] = {64,0}, + [I(125,211)] = {64,0}, + [I(126,211)] = {64,0}, + [I(127,211)] = {64,0}, + [I(128,211)] = {64,0}, + [I(129,211)] = {64,0}, + [I(130,211)] = {64,0}, + [I(131,211)] = {64,0}, + [I(132,211)] = {64,0}, + [I(133,211)] = {64,0}, + [I(134,211)] = {64,0}, + [I(135,211)] = {64,0}, + [I(136,211)] = {64,0}, + [I(137,211)] = {64,0}, + [I(138,211)] = {64,0}, + [I(139,211)] = {64,0}, + [I(140,211)] = {64,0}, + [I(141,211)] = {64,0}, + [I(142,211)] = {64,0}, + [I(143,211)] = {64,0}, + [I(144,211)] = {64,0}, + [I(145,211)] = {64,0}, + [I(146,211)] = {64,0}, + [I(147,211)] = {64,0}, + [I(148,211)] = {64,0}, + [I(149,211)] = {64,0}, + [I(150,211)] = {64,0}, + [I(151,211)] = {64,0}, + [I(152,211)] = {64,0}, + [I(153,211)] = {64,0}, + [I(154,211)] = {64,0}, + [I(155,211)] = {64,0}, + [I(156,211)] = {64,0}, + [I(157,211)] = {64,0}, + [I(158,211)] = {64,0}, + [I(159,211)] = {64,0}, + [I(160,211)] = {64,0}, + [I(161,211)] = {64,0}, + [I(162,211)] = {64,0}, + [I(163,211)] = {64,0}, + [I(164,211)] = {64,0}, + [I(165,211)] = {64,0}, + [I(166,211)] = {64,0}, + [I(167,211)] = {64,0}, + [I(168,211)] = {64,0}, + [I(169,211)] = {64,0}, + [I(170,211)] = {64,0}, + [I(171,211)] = {64,0}, + [I(172,211)] = {64,0}, + [I(173,211)] = {64,0}, + [I(174,211)] = {64,0}, + [I(175,211)] = {64,0}, + [I(176,211)] = {64,0}, + [I(177,211)] = {64,0}, + [I(178,211)] = {64,0}, + [I(179,211)] = {64,0}, + [I(180,211)] = {64,0}, + [I(181,211)] = {64,0}, + [I(182,211)] = {64,0}, + [I(183,211)] = {64,0}, + [I(184,211)] = {64,0}, + [I(185,211)] = {64,0}, + [I(186,211)] = {64,0}, + [I(187,211)] = {64,0}, + [I(188,211)] = {64,0}, + [I(189,211)] = {64,0}, + [I(190,211)] = {64,0}, + [I(191,211)] = {64,0}, + [I(192,211)] = {64,0}, + [I(193,211)] = {64,0}, + [I(194,211)] = {64,0}, + [I(195,211)] = {64,0}, + [I(196,211)] = {64,0}, + [I(197,211)] = {64,0}, + [I(198,211)] = {64,0}, + [I(199,211)] = {64,0}, + [I(200,211)] = {64,0}, + [I(201,211)] = {64,0}, + [I(202,211)] = {64,0}, + [I(203,211)] = {64,0}, + [I(204,211)] = {64,0}, + [I(205,211)] = {64,0}, + [I(206,211)] = {64,0}, + [I(207,211)] = {64,0}, + [I(208,211)] = {64,0}, + [I(209,211)] = {64,0}, + [I(210,211)] = {64,0}, + [I(211,211)] = {64,0}, + [I(212,211)] = {64,0}, + [I(213,211)] = {64,0}, + [I(214,211)] = {64,0}, + [I(215,211)] = {64,0}, + [I(216,211)] = {64,0}, + [I(217,211)] = {64,0}, + [I(218,211)] = {64,0}, + [I(219,211)] = {64,0}, + [I(220,211)] = {64,0}, + [I(221,211)] = {64,0}, + [I(222,211)] = {64,0}, + [I(223,211)] = {64,0}, + [I(224,211)] = {64,0}, + [I(225,211)] = {64,0}, + [I(226,211)] = {64,0}, + [I(227,211)] = {64,0}, + [I(228,211)] = {64,0}, + [I(229,211)] = {64,0}, + [I(230,211)] = {64,0}, + [I(231,211)] = {64,0}, + [I(232,211)] = {64,0}, + [I(233,211)] = {64,0}, + [I(234,211)] = {64,0}, + [I(235,211)] = {64,0}, + [I(236,211)] = {64,0}, + [I(237,211)] = {64,0}, + [I(238,211)] = {64,0}, + [I(239,211)] = {64,0}, + [I(240,211)] = {64,0}, + [I(241,211)] = {64,0}, + [I(242,211)] = {64,0}, + [I(243,211)] = {64,0}, + [I(244,211)] = {64,0}, + [I(245,211)] = {64,0}, + [I(246,211)] = {64,0}, + [I(247,211)] = {64,0}, + [I(248,211)] = {64,0}, + [I(249,211)] = {64,0}, + [I(250,211)] = {64,0}, + [I(251,211)] = {64,0}, + [I(252,211)] = {64,0}, + [I(253,211)] = {64,0}, + [I(254,211)] = {64,0}, + [I(255,211)] = {64,0}, + [I(0,212)] = {64,0}, + [I(1,212)] = {64,0}, + [I(2,212)] = {64,0}, + [I(3,212)] = {64,0}, + [I(4,212)] = {64,0}, + [I(5,212)] = {64,0}, + [I(6,212)] = {64,0}, + [I(7,212)] = {64,0}, + [I(8,212)] = {64,0}, + [I(9,212)] = {64,0}, + [I(10,212)] = {64,0}, + [I(11,212)] = {64,0}, + [I(12,212)] = {64,0}, + [I(13,212)] = {64,0}, + [I(14,212)] = {64,0}, + [I(15,212)] = {64,0}, + [I(16,212)] = {64,0}, + [I(17,212)] = {64,0}, + [I(18,212)] = {64,0}, + [I(19,212)] = {64,0}, + [I(20,212)] = {64,0}, + [I(21,212)] = {64,0}, + [I(22,212)] = {64,0}, + [I(23,212)] = {64,0}, + [I(24,212)] = {64,0}, + [I(25,212)] = {64,0}, + [I(26,212)] = {64,0}, + [I(27,212)] = {64,0}, + [I(28,212)] = {64,0}, + [I(29,212)] = {64,0}, + [I(30,212)] = {64,0}, + [I(31,212)] = {64,0}, + [I(32,212)] = {64,0}, + [I(33,212)] = {64,0}, + [I(34,212)] = {64,0}, + [I(35,212)] = {64,0}, + [I(36,212)] = {64,0}, + [I(37,212)] = {64,0}, + [I(38,212)] = {64,0}, + [I(39,212)] = {64,0}, + [I(40,212)] = {64,0}, + [I(41,212)] = {64,0}, + [I(42,212)] = {64,0}, + [I(43,212)] = {64,0}, + [I(44,212)] = {64,0}, + [I(45,212)] = {64,0}, + [I(46,212)] = {64,0}, + [I(47,212)] = {64,0}, + [I(48,212)] = {X32,0x7FFFFE1}, + [I(49,212)] = {X32,0xFFFFFE1}, + [I(50,212)] = {X32,0x17FFFFE1}, + [I(51,212)] = {64,0}, + [I(52,212)] = {64,0}, + [I(53,212)] = {64,0}, + [I(54,212)] = {64,0}, + [I(55,212)] = {64,0}, + [I(56,212)] = {64,0}, + [I(57,212)] = {64,0}, + [I(58,212)] = {64,0}, + [I(59,212)] = {64,0}, + [I(60,212)] = {64,0}, + [I(61,212)] = {64,0}, + [I(62,212)] = {64,0}, + [I(63,212)] = {64,0}, + [I(64,212)] = {64,0}, + [I(65,212)] = {64,0}, + [I(66,212)] = {64,0}, + [I(67,212)] = {64,0}, + [I(68,212)] = {64,0}, + [I(69,212)] = {64,0}, + [I(70,212)] = {64,0}, + [I(71,212)] = {64,0}, + [I(72,212)] = {64,0}, + [I(73,212)] = {64,0}, + [I(74,212)] = {64,0}, + [I(75,212)] = {64,0}, + [I(76,212)] = {64,0}, + [I(77,212)] = {64,0}, + [I(78,212)] = {64,0}, + [I(79,212)] = {64,0}, + [I(80,212)] = {64,0}, + [I(81,212)] = {64,0}, + [I(82,212)] = {64,0}, + [I(83,212)] = {64,0}, + [I(84,212)] = {64,0}, + [I(85,212)] = {64,0}, + [I(86,212)] = {64,0}, + [I(87,212)] = {64,0}, + [I(88,212)] = {64,0}, + [I(89,212)] = {64,0}, + [I(90,212)] = {64,0}, + [I(91,212)] = {64,0}, + [I(92,212)] = {64,0}, + [I(93,212)] = {64,0}, + [I(94,212)] = {64,0}, + [I(95,212)] = {64,0}, + [I(96,212)] = {64,0}, + [I(97,212)] = {X32,0x1FFFFFE1}, + [I(98,212)] = {64,0}, + [I(99,212)] = {X32,0x27FFFFE1}, + [I(100,212)] = {64,0}, + [I(101,212)] = {X32,0x2FFFFFE1}, + [I(102,212)] = {64,0}, + [I(103,212)] = {64,0}, + [I(104,212)] = {64,0}, + [I(105,212)] = {X32,0x37FFFFE1}, + [I(106,212)] = {64,0}, + [I(107,212)] = {64,0}, + [I(108,212)] = {64,0}, + [I(109,212)] = {64,0}, + [I(110,212)] = {64,0}, + [I(111,212)] = {X32,0x3FFFFFE1}, + [I(112,212)] = {64,0}, + [I(113,212)] = {64,0}, + [I(114,212)] = {64,0}, + [I(115,212)] = {X32,0x47FFFFE1}, + [I(116,212)] = {X32,0x4FFFFFE1}, + [I(117,212)] = {64,0}, + [I(118,212)] = {64,0}, + [I(119,212)] = {64,0}, + [I(120,212)] = {64,0}, + [I(121,212)] = {64,0}, + [I(122,212)] = {64,0}, + [I(123,212)] = {64,0}, + [I(124,212)] = {64,0}, + [I(125,212)] = {64,0}, + [I(126,212)] = {64,0}, + [I(127,212)] = {64,0}, + [I(128,212)] = {64,0}, + [I(129,212)] = {64,0}, + [I(130,212)] = {64,0}, + [I(131,212)] = {64,0}, + [I(132,212)] = {64,0}, + [I(133,212)] = {64,0}, + [I(134,212)] = {64,0}, + [I(135,212)] = {64,0}, + [I(136,212)] = {64,0}, + [I(137,212)] = {64,0}, + [I(138,212)] = {64,0}, + [I(139,212)] = {64,0}, + [I(140,212)] = {64,0}, + [I(141,212)] = {64,0}, + [I(142,212)] = {64,0}, + [I(143,212)] = {64,0}, + [I(144,212)] = {64,0}, + [I(145,212)] = {64,0}, + [I(146,212)] = {64,0}, + [I(147,212)] = {64,0}, + [I(148,212)] = {64,0}, + [I(149,212)] = {64,0}, + [I(150,212)] = {64,0}, + [I(151,212)] = {64,0}, + [I(152,212)] = {64,0}, + [I(153,212)] = {64,0}, + [I(154,212)] = {64,0}, + [I(155,212)] = {64,0}, + [I(156,212)] = {64,0}, + [I(157,212)] = {64,0}, + [I(158,212)] = {64,0}, + [I(159,212)] = {64,0}, + [I(160,212)] = {64,0}, + [I(161,212)] = {64,0}, + [I(162,212)] = {64,0}, + [I(163,212)] = {64,0}, + [I(164,212)] = {64,0}, + [I(165,212)] = {64,0}, + [I(166,212)] = {64,0}, + [I(167,212)] = {64,0}, + [I(168,212)] = {64,0}, + [I(169,212)] = {64,0}, + [I(170,212)] = {64,0}, + [I(171,212)] = {64,0}, + [I(172,212)] = {64,0}, + [I(173,212)] = {64,0}, + [I(174,212)] = {64,0}, + [I(175,212)] = {64,0}, + [I(176,212)] = {64,0}, + [I(177,212)] = {64,0}, + [I(178,212)] = {64,0}, + [I(179,212)] = {64,0}, + [I(180,212)] = {64,0}, + [I(181,212)] = {64,0}, + [I(182,212)] = {64,0}, + [I(183,212)] = {64,0}, + [I(184,212)] = {64,0}, + [I(185,212)] = {64,0}, + [I(186,212)] = {64,0}, + [I(187,212)] = {64,0}, + [I(188,212)] = {64,0}, + [I(189,212)] = {64,0}, + [I(190,212)] = {64,0}, + [I(191,212)] = {64,0}, + [I(192,212)] = {64,0}, + [I(193,212)] = {64,0}, + [I(194,212)] = {64,0}, + [I(195,212)] = {64,0}, + [I(196,212)] = {64,0}, + [I(197,212)] = {64,0}, + [I(198,212)] = {64,0}, + [I(199,212)] = {64,0}, + [I(200,212)] = {64,0}, + [I(201,212)] = {64,0}, + [I(202,212)] = {64,0}, + [I(203,212)] = {64,0}, + [I(204,212)] = {64,0}, + [I(205,212)] = {64,0}, + [I(206,212)] = {64,0}, + [I(207,212)] = {64,0}, + [I(208,212)] = {64,0}, + [I(209,212)] = {64,0}, + [I(210,212)] = {64,0}, + [I(211,212)] = {64,0}, + [I(212,212)] = {64,0}, + [I(213,212)] = {64,0}, + [I(214,212)] = {64,0}, + [I(215,212)] = {64,0}, + [I(216,212)] = {64,0}, + [I(217,212)] = {64,0}, + [I(218,212)] = {64,0}, + [I(219,212)] = {64,0}, + [I(220,212)] = {64,0}, + [I(221,212)] = {64,0}, + [I(222,212)] = {64,0}, + [I(223,212)] = {64,0}, + [I(224,212)] = {64,0}, + [I(225,212)] = {64,0}, + [I(226,212)] = {64,0}, + [I(227,212)] = {64,0}, + [I(228,212)] = {64,0}, + [I(229,212)] = {64,0}, + [I(230,212)] = {64,0}, + [I(231,212)] = {64,0}, + [I(232,212)] = {64,0}, + [I(233,212)] = {64,0}, + [I(234,212)] = {64,0}, + [I(235,212)] = {64,0}, + [I(236,212)] = {64,0}, + [I(237,212)] = {64,0}, + [I(238,212)] = {64,0}, + [I(239,212)] = {64,0}, + [I(240,212)] = {64,0}, + [I(241,212)] = {64,0}, + [I(242,212)] = {64,0}, + [I(243,212)] = {64,0}, + [I(244,212)] = {64,0}, + [I(245,212)] = {64,0}, + [I(246,212)] = {64,0}, + [I(247,212)] = {64,0}, + [I(248,212)] = {64,0}, + [I(249,212)] = {64,0}, + [I(250,212)] = {64,0}, + [I(251,212)] = {64,0}, + [I(252,212)] = {64,0}, + [I(253,212)] = {64,0}, + [I(254,212)] = {64,0}, + [I(255,212)] = {64,0}, + [I(0,213)] = {64,0}, + [I(1,213)] = {64,0}, + [I(2,213)] = {64,0}, + [I(3,213)] = {64,0}, + [I(4,213)] = {64,0}, + [I(5,213)] = {64,0}, + [I(6,213)] = {64,0}, + [I(7,213)] = {64,0}, + [I(8,213)] = {64,0}, + [I(9,213)] = {64,0}, + [I(10,213)] = {64,0}, + [I(11,213)] = {64,0}, + [I(12,213)] = {64,0}, + [I(13,213)] = {64,0}, + [I(14,213)] = {64,0}, + [I(15,213)] = {64,0}, + [I(16,213)] = {64,0}, + [I(17,213)] = {64,0}, + [I(18,213)] = {64,0}, + [I(19,213)] = {64,0}, + [I(20,213)] = {64,0}, + [I(21,213)] = {64,0}, + [I(22,213)] = {64,0}, + [I(23,213)] = {64,0}, + [I(24,213)] = {64,0}, + [I(25,213)] = {64,0}, + [I(26,213)] = {64,0}, + [I(27,213)] = {64,0}, + [I(28,213)] = {64,0}, + [I(29,213)] = {64,0}, + [I(30,213)] = {64,0}, + [I(31,213)] = {64,0}, + [I(32,213)] = {X32,0x53FFFFE7}, + [I(33,213)] = {64,0}, + [I(34,213)] = {64,0}, + [I(35,213)] = {64,0}, + [I(36,213)] = {64,0}, + [I(37,213)] = {X32,0x57FFFFE7}, + [I(38,213)] = {64,0}, + [I(39,213)] = {64,0}, + [I(40,213)] = {64,0}, + [I(41,213)] = {64,0}, + [I(42,213)] = {64,0}, + [I(43,213)] = {64,0}, + [I(44,213)] = {64,0}, + [I(45,213)] = {X32,0x5BFFFFE7}, + [I(46,213)] = {X32,0x5FFFFFE7}, + [I(47,213)] = {X32,0x63FFFFE7}, + [I(48,213)] = {31,0x3FFFFE7}, + [I(49,213)] = {31,0x7FFFFE7}, + [I(50,213)] = {31,0xBFFFFE7}, + [I(51,213)] = {X32,0x67FFFFE7}, + [I(52,213)] = {X32,0x6BFFFFE7}, + [I(53,213)] = {X32,0x6FFFFFE7}, + [I(54,213)] = {X32,0x73FFFFE7}, + [I(55,213)] = {X32,0x77FFFFE7}, + [I(56,213)] = {X32,0x7BFFFFE7}, + [I(57,213)] = {X32,0x7FFFFFE7}, + [I(58,213)] = {64,0}, + [I(59,213)] = {64,0}, + [I(60,213)] = {64,0}, + [I(61,213)] = {X32,0x83FFFFE7}, + [I(62,213)] = {64,0}, + [I(63,213)] = {64,0}, + [I(64,213)] = {64,0}, + [I(65,213)] = {X32,0x87FFFFE7}, + [I(66,213)] = {64,0}, + [I(67,213)] = {64,0}, + [I(68,213)] = {64,0}, + [I(69,213)] = {64,0}, + [I(70,213)] = {64,0}, + [I(71,213)] = {64,0}, + [I(72,213)] = {64,0}, + [I(73,213)] = {64,0}, + [I(74,213)] = {64,0}, + [I(75,213)] = {64,0}, + [I(76,213)] = {64,0}, + [I(77,213)] = {64,0}, + [I(78,213)] = {64,0}, + [I(79,213)] = {64,0}, + [I(80,213)] = {64,0}, + [I(81,213)] = {64,0}, + [I(82,213)] = {64,0}, + [I(83,213)] = {64,0}, + [I(84,213)] = {64,0}, + [I(85,213)] = {64,0}, + [I(86,213)] = {64,0}, + [I(87,213)] = {64,0}, + [I(88,213)] = {64,0}, + [I(89,213)] = {64,0}, + [I(90,213)] = {64,0}, + [I(91,213)] = {64,0}, + [I(92,213)] = {64,0}, + [I(93,213)] = {64,0}, + [I(94,213)] = {64,0}, + [I(95,213)] = {X32,0x8BFFFFE7}, + [I(96,213)] = {64,0}, + [I(97,213)] = {31,0xFFFFFE7}, + [I(98,213)] = {X32,0x8FFFFFE7}, + [I(99,213)] = {31,0x13FFFFE7}, + [I(100,213)] = {X32,0x93FFFFE7}, + [I(101,213)] = {31,0x17FFFFE7}, + [I(102,213)] = {X32,0x97FFFFE7}, + [I(103,213)] = {X32,0x9BFFFFE7}, + [I(104,213)] = {X32,0x9FFFFFE7}, + [I(105,213)] = {31,0x1BFFFFE7}, + [I(106,213)] = {64,0}, + [I(107,213)] = {64,0}, + [I(108,213)] = {X32,0xA3FFFFE7}, + [I(109,213)] = {X32,0xA7FFFFE7}, + [I(110,213)] = {X32,0xABFFFFE7}, + [I(111,213)] = {31,0x1FFFFFE7}, + [I(112,213)] = {X32,0xAFFFFFE7}, + [I(113,213)] = {64,0}, + [I(114,213)] = {X32,0xB3FFFFE7}, + [I(115,213)] = {31,0x23FFFFE7}, + [I(116,213)] = {31,0x27FFFFE7}, + [I(117,213)] = {X32,0xB7FFFFE7}, + [I(118,213)] = {64,0}, + [I(119,213)] = {64,0}, + [I(120,213)] = {64,0}, + [I(121,213)] = {64,0}, + [I(122,213)] = {64,0}, + [I(123,213)] = {64,0}, + [I(124,213)] = {64,0}, + [I(125,213)] = {64,0}, + [I(126,213)] = {64,0}, + [I(127,213)] = {64,0}, + [I(128,213)] = {64,0}, + [I(129,213)] = {64,0}, + [I(130,213)] = {64,0}, + [I(131,213)] = {64,0}, + [I(132,213)] = {64,0}, + [I(133,213)] = {64,0}, + [I(134,213)] = {64,0}, + [I(135,213)] = {64,0}, + [I(136,213)] = {64,0}, + [I(137,213)] = {64,0}, + [I(138,213)] = {64,0}, + [I(139,213)] = {64,0}, + [I(140,213)] = {64,0}, + [I(141,213)] = {64,0}, + [I(142,213)] = {64,0}, + [I(143,213)] = {64,0}, + [I(144,213)] = {64,0}, + [I(145,213)] = {64,0}, + [I(146,213)] = {64,0}, + [I(147,213)] = {64,0}, + [I(148,213)] = {64,0}, + [I(149,213)] = {64,0}, + [I(150,213)] = {64,0}, + [I(151,213)] = {64,0}, + [I(152,213)] = {64,0}, + [I(153,213)] = {64,0}, + [I(154,213)] = {64,0}, + [I(155,213)] = {64,0}, + [I(156,213)] = {64,0}, + [I(157,213)] = {64,0}, + [I(158,213)] = {64,0}, + [I(159,213)] = {64,0}, + [I(160,213)] = {64,0}, + [I(161,213)] = {64,0}, + [I(162,213)] = {64,0}, + [I(163,213)] = {64,0}, + [I(164,213)] = {64,0}, + [I(165,213)] = {64,0}, + [I(166,213)] = {64,0}, + [I(167,213)] = {64,0}, + [I(168,213)] = {64,0}, + [I(169,213)] = {64,0}, + [I(170,213)] = {64,0}, + [I(171,213)] = {64,0}, + [I(172,213)] = {64,0}, + [I(173,213)] = {64,0}, + [I(174,213)] = {64,0}, + [I(175,213)] = {64,0}, + [I(176,213)] = {64,0}, + [I(177,213)] = {64,0}, + [I(178,213)] = {64,0}, + [I(179,213)] = {64,0}, + [I(180,213)] = {64,0}, + [I(181,213)] = {64,0}, + [I(182,213)] = {64,0}, + [I(183,213)] = {64,0}, + [I(184,213)] = {64,0}, + [I(185,213)] = {64,0}, + [I(186,213)] = {64,0}, + [I(187,213)] = {64,0}, + [I(188,213)] = {64,0}, + [I(189,213)] = {64,0}, + [I(190,213)] = {64,0}, + [I(191,213)] = {64,0}, + [I(192,213)] = {64,0}, + [I(193,213)] = {64,0}, + [I(194,213)] = {64,0}, + [I(195,213)] = {64,0}, + [I(196,213)] = {64,0}, + [I(197,213)] = {64,0}, + [I(198,213)] = {64,0}, + [I(199,213)] = {64,0}, + [I(200,213)] = {64,0}, + [I(201,213)] = {64,0}, + [I(202,213)] = {64,0}, + [I(203,213)] = {64,0}, + [I(204,213)] = {64,0}, + [I(205,213)] = {64,0}, + [I(206,213)] = {64,0}, + [I(207,213)] = {64,0}, + [I(208,213)] = {64,0}, + [I(209,213)] = {64,0}, + [I(210,213)] = {64,0}, + [I(211,213)] = {64,0}, + [I(212,213)] = {64,0}, + [I(213,213)] = {64,0}, + [I(214,213)] = {64,0}, + [I(215,213)] = {64,0}, + [I(216,213)] = {64,0}, + [I(217,213)] = {64,0}, + [I(218,213)] = {64,0}, + [I(219,213)] = {64,0}, + [I(220,213)] = {64,0}, + [I(221,213)] = {64,0}, + [I(222,213)] = {64,0}, + [I(223,213)] = {64,0}, + [I(224,213)] = {64,0}, + [I(225,213)] = {64,0}, + [I(226,213)] = {64,0}, + [I(227,213)] = {64,0}, + [I(228,213)] = {64,0}, + [I(229,213)] = {64,0}, + [I(230,213)] = {64,0}, + [I(231,213)] = {64,0}, + [I(232,213)] = {64,0}, + [I(233,213)] = {64,0}, + [I(234,213)] = {64,0}, + [I(235,213)] = {64,0}, + [I(236,213)] = {64,0}, + [I(237,213)] = {64,0}, + [I(238,213)] = {64,0}, + [I(239,213)] = {64,0}, + [I(240,213)] = {64,0}, + [I(241,213)] = {64,0}, + [I(242,213)] = {64,0}, + [I(243,213)] = {64,0}, + [I(244,213)] = {64,0}, + [I(245,213)] = {64,0}, + [I(246,213)] = {64,0}, + [I(247,213)] = {64,0}, + [I(248,213)] = {64,0}, + [I(249,213)] = {64,0}, + [I(250,213)] = {64,0}, + [I(251,213)] = {64,0}, + [I(252,213)] = {64,0}, + [I(253,213)] = {64,0}, + [I(254,213)] = {64,0}, + [I(255,213)] = {64,0}, + [I(0,214)] = {64,0}, + [I(1,214)] = {64,0}, + [I(2,214)] = {64,0}, + [I(3,214)] = {64,0}, + [I(4,214)] = {64,0}, + [I(5,214)] = {64,0}, + [I(6,214)] = {64,0}, + [I(7,214)] = {64,0}, + [I(8,214)] = {64,0}, + [I(9,214)] = {64,0}, + [I(10,214)] = {64,0}, + [I(11,214)] = {64,0}, + [I(12,214)] = {64,0}, + [I(13,214)] = {64,0}, + [I(14,214)] = {64,0}, + [I(15,214)] = {64,0}, + [I(16,214)] = {64,0}, + [I(17,214)] = {64,0}, + [I(18,214)] = {64,0}, + [I(19,214)] = {64,0}, + [I(20,214)] = {64,0}, + [I(21,214)] = {64,0}, + [I(22,214)] = {64,0}, + [I(23,214)] = {64,0}, + [I(24,214)] = {64,0}, + [I(25,214)] = {64,0}, + [I(26,214)] = {64,0}, + [I(27,214)] = {64,0}, + [I(28,214)] = {64,0}, + [I(29,214)] = {64,0}, + [I(30,214)] = {64,0}, + [I(31,214)] = {64,0}, + [I(32,214)] = {64,0}, + [I(33,214)] = {64,0}, + [I(34,214)] = {64,0}, + [I(35,214)] = {64,0}, + [I(36,214)] = {64,0}, + [I(37,214)] = {64,0}, + [I(38,214)] = {64,0}, + [I(39,214)] = {64,0}, + [I(40,214)] = {64,0}, + [I(41,214)] = {64,0}, + [I(42,214)] = {64,0}, + [I(43,214)] = {64,0}, + [I(44,214)] = {64,0}, + [I(45,214)] = {64,0}, + [I(46,214)] = {64,0}, + [I(47,214)] = {64,0}, + [I(48,214)] = {X32,0x7FFFFE2}, + [I(49,214)] = {X32,0xFFFFFE2}, + [I(50,214)] = {X32,0x17FFFFE2}, + [I(51,214)] = {64,0}, + [I(52,214)] = {64,0}, + [I(53,214)] = {64,0}, + [I(54,214)] = {64,0}, + [I(55,214)] = {64,0}, + [I(56,214)] = {64,0}, + [I(57,214)] = {64,0}, + [I(58,214)] = {64,0}, + [I(59,214)] = {64,0}, + [I(60,214)] = {64,0}, + [I(61,214)] = {64,0}, + [I(62,214)] = {64,0}, + [I(63,214)] = {64,0}, + [I(64,214)] = {64,0}, + [I(65,214)] = {64,0}, + [I(66,214)] = {64,0}, + [I(67,214)] = {64,0}, + [I(68,214)] = {64,0}, + [I(69,214)] = {64,0}, + [I(70,214)] = {64,0}, + [I(71,214)] = {64,0}, + [I(72,214)] = {64,0}, + [I(73,214)] = {64,0}, + [I(74,214)] = {64,0}, + [I(75,214)] = {64,0}, + [I(76,214)] = {64,0}, + [I(77,214)] = {64,0}, + [I(78,214)] = {64,0}, + [I(79,214)] = {64,0}, + [I(80,214)] = {64,0}, + [I(81,214)] = {64,0}, + [I(82,214)] = {64,0}, + [I(83,214)] = {64,0}, + [I(84,214)] = {64,0}, + [I(85,214)] = {64,0}, + [I(86,214)] = {64,0}, + [I(87,214)] = {64,0}, + [I(88,214)] = {64,0}, + [I(89,214)] = {64,0}, + [I(90,214)] = {64,0}, + [I(91,214)] = {64,0}, + [I(92,214)] = {64,0}, + [I(93,214)] = {64,0}, + [I(94,214)] = {64,0}, + [I(95,214)] = {64,0}, + [I(96,214)] = {64,0}, + [I(97,214)] = {X32,0x1FFFFFE2}, + [I(98,214)] = {64,0}, + [I(99,214)] = {X32,0x27FFFFE2}, + [I(100,214)] = {64,0}, + [I(101,214)] = {X32,0x2FFFFFE2}, + [I(102,214)] = {64,0}, + [I(103,214)] = {64,0}, + [I(104,214)] = {64,0}, + [I(105,214)] = {X32,0x37FFFFE2}, + [I(106,214)] = {64,0}, + [I(107,214)] = {64,0}, + [I(108,214)] = {64,0}, + [I(109,214)] = {64,0}, + [I(110,214)] = {64,0}, + [I(111,214)] = {X32,0x3FFFFFE2}, + [I(112,214)] = {64,0}, + [I(113,214)] = {64,0}, + [I(114,214)] = {64,0}, + [I(115,214)] = {X32,0x47FFFFE2}, + [I(116,214)] = {X32,0x4FFFFFE2}, + [I(117,214)] = {64,0}, + [I(118,214)] = {64,0}, + [I(119,214)] = {64,0}, + [I(120,214)] = {64,0}, + [I(121,214)] = {64,0}, + [I(122,214)] = {64,0}, + [I(123,214)] = {64,0}, + [I(124,214)] = {64,0}, + [I(125,214)] = {64,0}, + [I(126,214)] = {64,0}, + [I(127,214)] = {64,0}, + [I(128,214)] = {64,0}, + [I(129,214)] = {64,0}, + [I(130,214)] = {64,0}, + [I(131,214)] = {64,0}, + [I(132,214)] = {64,0}, + [I(133,214)] = {64,0}, + [I(134,214)] = {64,0}, + [I(135,214)] = {64,0}, + [I(136,214)] = {64,0}, + [I(137,214)] = {64,0}, + [I(138,214)] = {64,0}, + [I(139,214)] = {64,0}, + [I(140,214)] = {64,0}, + [I(141,214)] = {64,0}, + [I(142,214)] = {64,0}, + [I(143,214)] = {64,0}, + [I(144,214)] = {64,0}, + [I(145,214)] = {64,0}, + [I(146,214)] = {64,0}, + [I(147,214)] = {64,0}, + [I(148,214)] = {64,0}, + [I(149,214)] = {64,0}, + [I(150,214)] = {64,0}, + [I(151,214)] = {64,0}, + [I(152,214)] = {64,0}, + [I(153,214)] = {64,0}, + [I(154,214)] = {64,0}, + [I(155,214)] = {64,0}, + [I(156,214)] = {64,0}, + [I(157,214)] = {64,0}, + [I(158,214)] = {64,0}, + [I(159,214)] = {64,0}, + [I(160,214)] = {64,0}, + [I(161,214)] = {64,0}, + [I(162,214)] = {64,0}, + [I(163,214)] = {64,0}, + [I(164,214)] = {64,0}, + [I(165,214)] = {64,0}, + [I(166,214)] = {64,0}, + [I(167,214)] = {64,0}, + [I(168,214)] = {64,0}, + [I(169,214)] = {64,0}, + [I(170,214)] = {64,0}, + [I(171,214)] = {64,0}, + [I(172,214)] = {64,0}, + [I(173,214)] = {64,0}, + [I(174,214)] = {64,0}, + [I(175,214)] = {64,0}, + [I(176,214)] = {64,0}, + [I(177,214)] = {64,0}, + [I(178,214)] = {64,0}, + [I(179,214)] = {64,0}, + [I(180,214)] = {64,0}, + [I(181,214)] = {64,0}, + [I(182,214)] = {64,0}, + [I(183,214)] = {64,0}, + [I(184,214)] = {64,0}, + [I(185,214)] = {64,0}, + [I(186,214)] = {64,0}, + [I(187,214)] = {64,0}, + [I(188,214)] = {64,0}, + [I(189,214)] = {64,0}, + [I(190,214)] = {64,0}, + [I(191,214)] = {64,0}, + [I(192,214)] = {64,0}, + [I(193,214)] = {64,0}, + [I(194,214)] = {64,0}, + [I(195,214)] = {64,0}, + [I(196,214)] = {64,0}, + [I(197,214)] = {64,0}, + [I(198,214)] = {64,0}, + [I(199,214)] = {64,0}, + [I(200,214)] = {64,0}, + [I(201,214)] = {64,0}, + [I(202,214)] = {64,0}, + [I(203,214)] = {64,0}, + [I(204,214)] = {64,0}, + [I(205,214)] = {64,0}, + [I(206,214)] = {64,0}, + [I(207,214)] = {64,0}, + [I(208,214)] = {64,0}, + [I(209,214)] = {64,0}, + [I(210,214)] = {64,0}, + [I(211,214)] = {64,0}, + [I(212,214)] = {64,0}, + [I(213,214)] = {64,0}, + [I(214,214)] = {64,0}, + [I(215,214)] = {64,0}, + [I(216,214)] = {64,0}, + [I(217,214)] = {64,0}, + [I(218,214)] = {64,0}, + [I(219,214)] = {64,0}, + [I(220,214)] = {64,0}, + [I(221,214)] = {64,0}, + [I(222,214)] = {64,0}, + [I(223,214)] = {64,0}, + [I(224,214)] = {64,0}, + [I(225,214)] = {64,0}, + [I(226,214)] = {64,0}, + [I(227,214)] = {64,0}, + [I(228,214)] = {64,0}, + [I(229,214)] = {64,0}, + [I(230,214)] = {64,0}, + [I(231,214)] = {64,0}, + [I(232,214)] = {64,0}, + [I(233,214)] = {64,0}, + [I(234,214)] = {64,0}, + [I(235,214)] = {64,0}, + [I(236,214)] = {64,0}, + [I(237,214)] = {64,0}, + [I(238,214)] = {64,0}, + [I(239,214)] = {64,0}, + [I(240,214)] = {64,0}, + [I(241,214)] = {64,0}, + [I(242,214)] = {64,0}, + [I(243,214)] = {64,0}, + [I(244,214)] = {64,0}, + [I(245,214)] = {64,0}, + [I(246,214)] = {64,0}, + [I(247,214)] = {64,0}, + [I(248,214)] = {64,0}, + [I(249,214)] = {64,0}, + [I(250,214)] = {64,0}, + [I(251,214)] = {64,0}, + [I(252,214)] = {64,0}, + [I(253,214)] = {64,0}, + [I(254,214)] = {64,0}, + [I(255,214)] = {64,0}, + [I(0,215)] = {64,0}, + [I(1,215)] = {64,0}, + [I(2,215)] = {64,0}, + [I(3,215)] = {64,0}, + [I(4,215)] = {64,0}, + [I(5,215)] = {64,0}, + [I(6,215)] = {64,0}, + [I(7,215)] = {64,0}, + [I(8,215)] = {64,0}, + [I(9,215)] = {64,0}, + [I(10,215)] = {64,0}, + [I(11,215)] = {64,0}, + [I(12,215)] = {64,0}, + [I(13,215)] = {64,0}, + [I(14,215)] = {64,0}, + [I(15,215)] = {64,0}, + [I(16,215)] = {64,0}, + [I(17,215)] = {64,0}, + [I(18,215)] = {64,0}, + [I(19,215)] = {64,0}, + [I(20,215)] = {64,0}, + [I(21,215)] = {64,0}, + [I(22,215)] = {64,0}, + [I(23,215)] = {64,0}, + [I(24,215)] = {64,0}, + [I(25,215)] = {64,0}, + [I(26,215)] = {64,0}, + [I(27,215)] = {64,0}, + [I(28,215)] = {64,0}, + [I(29,215)] = {64,0}, + [I(30,215)] = {64,0}, + [I(31,215)] = {64,0}, + [I(32,215)] = {30,0x14FFFFF2}, + [I(33,215)] = {64,0}, + [I(34,215)] = {64,0}, + [I(35,215)] = {64,0}, + [I(36,215)] = {64,0}, + [I(37,215)] = {30,0x15FFFFF2}, + [I(38,215)] = {X32,0xF8FFFFF2}, + [I(39,215)] = {64,0}, + [I(40,215)] = {64,0}, + [I(41,215)] = {64,0}, + [I(42,215)] = {X32,0xF9FFFFF2}, + [I(43,215)] = {64,0}, + [I(44,215)] = {X32,0xFAFFFFF2}, + [I(45,215)] = {30,0x16FFFFF2}, + [I(46,215)] = {30,0x17FFFFF2}, + [I(47,215)] = {30,0x18FFFFF2}, + [I(48,215)] = {29,0xFFFFF2}, + [I(49,215)] = {29,0x1FFFFF2}, + [I(50,215)] = {29,0x2FFFFF2}, + [I(51,215)] = {30,0x19FFFFF2}, + [I(52,215)] = {30,0x1AFFFFF2}, + [I(53,215)] = {30,0x1BFFFFF2}, + [I(54,215)] = {30,0x1CFFFFF2}, + [I(55,215)] = {30,0x1DFFFFF2}, + [I(56,215)] = {30,0x1EFFFFF2}, + [I(57,215)] = {30,0x1FFFFFF2}, + [I(58,215)] = {31,0x5CFFFFF2}, + [I(59,215)] = {X32,0xFBFFFFF2}, + [I(60,215)] = {64,0}, + [I(61,215)] = {30,0x20FFFFF2}, + [I(62,215)] = {64,0}, + [I(63,215)] = {64,0}, + [I(64,215)] = {64,0}, + [I(65,215)] = {30,0x21FFFFF2}, + [I(66,215)] = {31,0x5DFFFFF2}, + [I(67,215)] = {31,0x5EFFFFF2}, + [I(68,215)] = {31,0x5FFFFFF2}, + [I(69,215)] = {31,0x60FFFFF2}, + [I(70,215)] = {31,0x61FFFFF2}, + [I(71,215)] = {31,0x62FFFFF2}, + [I(72,215)] = {31,0x63FFFFF2}, + [I(73,215)] = {31,0x64FFFFF2}, + [I(74,215)] = {31,0x65FFFFF2}, + [I(75,215)] = {31,0x66FFFFF2}, + [I(76,215)] = {31,0x67FFFFF2}, + [I(77,215)] = {31,0x68FFFFF2}, + [I(78,215)] = {31,0x69FFFFF2}, + [I(79,215)] = {31,0x6AFFFFF2}, + [I(80,215)] = {31,0x6BFFFFF2}, + [I(81,215)] = {31,0x6CFFFFF2}, + [I(82,215)] = {31,0x6DFFFFF2}, + [I(83,215)] = {31,0x6EFFFFF2}, + [I(84,215)] = {31,0x6FFFFFF2}, + [I(85,215)] = {31,0x70FFFFF2}, + [I(86,215)] = {31,0x71FFFFF2}, + [I(87,215)] = {31,0x72FFFFF2}, + [I(88,215)] = {X32,0xFCFFFFF2}, + [I(89,215)] = {31,0x73FFFFF2}, + [I(90,215)] = {X32,0xFDFFFFF2}, + [I(91,215)] = {64,0}, + [I(92,215)] = {64,0}, + [I(93,215)] = {64,0}, + [I(94,215)] = {64,0}, + [I(95,215)] = {30,0x22FFFFF2}, + [I(96,215)] = {64,0}, + [I(97,215)] = {29,0x3FFFFF2}, + [I(98,215)] = {30,0x23FFFFF2}, + [I(99,215)] = {29,0x4FFFFF2}, + [I(100,215)] = {30,0x24FFFFF2}, + [I(101,215)] = {29,0x5FFFFF2}, + [I(102,215)] = {30,0x25FFFFF2}, + [I(103,215)] = {30,0x26FFFFF2}, + [I(104,215)] = {30,0x27FFFFF2}, + [I(105,215)] = {29,0x6FFFFF2}, + [I(106,215)] = {31,0x74FFFFF2}, + [I(107,215)] = {31,0x75FFFFF2}, + [I(108,215)] = {30,0x28FFFFF2}, + [I(109,215)] = {30,0x29FFFFF2}, + [I(110,215)] = {30,0x2AFFFFF2}, + [I(111,215)] = {29,0x7FFFFF2}, + [I(112,215)] = {30,0x2BFFFFF2}, + [I(113,215)] = {31,0x76FFFFF2}, + [I(114,215)] = {30,0x2CFFFFF2}, + [I(115,215)] = {29,0x8FFFFF2}, + [I(116,215)] = {29,0x9FFFFF2}, + [I(117,215)] = {30,0x2DFFFFF2}, + [I(118,215)] = {31,0x77FFFFF2}, + [I(119,215)] = {31,0x78FFFFF2}, + [I(120,215)] = {31,0x79FFFFF2}, + [I(121,215)] = {31,0x7AFFFFF2}, + [I(122,215)] = {31,0x7BFFFFF2}, + [I(123,215)] = {64,0}, + [I(124,215)] = {64,0}, + [I(125,215)] = {64,0}, + [I(126,215)] = {64,0}, + [I(127,215)] = {64,0}, + [I(128,215)] = {64,0}, + [I(129,215)] = {64,0}, + [I(130,215)] = {64,0}, + [I(131,215)] = {64,0}, + [I(132,215)] = {64,0}, + [I(133,215)] = {64,0}, + [I(134,215)] = {64,0}, + [I(135,215)] = {64,0}, + [I(136,215)] = {64,0}, + [I(137,215)] = {64,0}, + [I(138,215)] = {64,0}, + [I(139,215)] = {64,0}, + [I(140,215)] = {64,0}, + [I(141,215)] = {64,0}, + [I(142,215)] = {64,0}, + [I(143,215)] = {64,0}, + [I(144,215)] = {64,0}, + [I(145,215)] = {64,0}, + [I(146,215)] = {64,0}, + [I(147,215)] = {64,0}, + [I(148,215)] = {64,0}, + [I(149,215)] = {64,0}, + [I(150,215)] = {64,0}, + [I(151,215)] = {64,0}, + [I(152,215)] = {64,0}, + [I(153,215)] = {64,0}, + [I(154,215)] = {64,0}, + [I(155,215)] = {64,0}, + [I(156,215)] = {64,0}, + [I(157,215)] = {64,0}, + [I(158,215)] = {64,0}, + [I(159,215)] = {64,0}, + [I(160,215)] = {64,0}, + [I(161,215)] = {64,0}, + [I(162,215)] = {64,0}, + [I(163,215)] = {64,0}, + [I(164,215)] = {64,0}, + [I(165,215)] = {64,0}, + [I(166,215)] = {64,0}, + [I(167,215)] = {64,0}, + [I(168,215)] = {64,0}, + [I(169,215)] = {64,0}, + [I(170,215)] = {64,0}, + [I(171,215)] = {64,0}, + [I(172,215)] = {64,0}, + [I(173,215)] = {64,0}, + [I(174,215)] = {64,0}, + [I(175,215)] = {64,0}, + [I(176,215)] = {64,0}, + [I(177,215)] = {64,0}, + [I(178,215)] = {64,0}, + [I(179,215)] = {64,0}, + [I(180,215)] = {64,0}, + [I(181,215)] = {64,0}, + [I(182,215)] = {64,0}, + [I(183,215)] = {64,0}, + [I(184,215)] = {64,0}, + [I(185,215)] = {64,0}, + [I(186,215)] = {64,0}, + [I(187,215)] = {64,0}, + [I(188,215)] = {64,0}, + [I(189,215)] = {64,0}, + [I(190,215)] = {64,0}, + [I(191,215)] = {64,0}, + [I(192,215)] = {64,0}, + [I(193,215)] = {64,0}, + [I(194,215)] = {64,0}, + [I(195,215)] = {64,0}, + [I(196,215)] = {64,0}, + [I(197,215)] = {64,0}, + [I(198,215)] = {64,0}, + [I(199,215)] = {64,0}, + [I(200,215)] = {64,0}, + [I(201,215)] = {64,0}, + [I(202,215)] = {64,0}, + [I(203,215)] = {64,0}, + [I(204,215)] = {64,0}, + [I(205,215)] = {64,0}, + [I(206,215)] = {64,0}, + [I(207,215)] = {64,0}, + [I(208,215)] = {64,0}, + [I(209,215)] = {64,0}, + [I(210,215)] = {64,0}, + [I(211,215)] = {64,0}, + [I(212,215)] = {64,0}, + [I(213,215)] = {64,0}, + [I(214,215)] = {64,0}, + [I(215,215)] = {64,0}, + [I(216,215)] = {64,0}, + [I(217,215)] = {64,0}, + [I(218,215)] = {64,0}, + [I(219,215)] = {64,0}, + [I(220,215)] = {64,0}, + [I(221,215)] = {64,0}, + [I(222,215)] = {64,0}, + [I(223,215)] = {64,0}, + [I(224,215)] = {64,0}, + [I(225,215)] = {64,0}, + [I(226,215)] = {64,0}, + [I(227,215)] = {64,0}, + [I(228,215)] = {64,0}, + [I(229,215)] = {64,0}, + [I(230,215)] = {64,0}, + [I(231,215)] = {64,0}, + [I(232,215)] = {64,0}, + [I(233,215)] = {64,0}, + [I(234,215)] = {64,0}, + [I(235,215)] = {64,0}, + [I(236,215)] = {64,0}, + [I(237,215)] = {64,0}, + [I(238,215)] = {64,0}, + [I(239,215)] = {64,0}, + [I(240,215)] = {64,0}, + [I(241,215)] = {64,0}, + [I(242,215)] = {64,0}, + [I(243,215)] = {64,0}, + [I(244,215)] = {64,0}, + [I(245,215)] = {64,0}, + [I(246,215)] = {64,0}, + [I(247,215)] = {64,0}, + [I(248,215)] = {64,0}, + [I(249,215)] = {64,0}, + [I(250,215)] = {64,0}, + [I(251,215)] = {64,0}, + [I(252,215)] = {64,0}, + [I(253,215)] = {64,0}, + [I(254,215)] = {64,0}, + [I(255,215)] = {64,0}, + [I(0,216)] = {64,0}, + [I(1,216)] = {64,0}, + [I(2,216)] = {64,0}, + [I(3,216)] = {64,0}, + [I(4,216)] = {64,0}, + [I(5,216)] = {64,0}, + [I(6,216)] = {64,0}, + [I(7,216)] = {64,0}, + [I(8,216)] = {64,0}, + [I(9,216)] = {64,0}, + [I(10,216)] = {64,0}, + [I(11,216)] = {64,0}, + [I(12,216)] = {64,0}, + [I(13,216)] = {64,0}, + [I(14,216)] = {64,0}, + [I(15,216)] = {64,0}, + [I(16,216)] = {64,0}, + [I(17,216)] = {64,0}, + [I(18,216)] = {64,0}, + [I(19,216)] = {64,0}, + [I(20,216)] = {64,0}, + [I(21,216)] = {64,0}, + [I(22,216)] = {64,0}, + [I(23,216)] = {64,0}, + [I(24,216)] = {64,0}, + [I(25,216)] = {64,0}, + [I(26,216)] = {64,0}, + [I(27,216)] = {64,0}, + [I(28,216)] = {64,0}, + [I(29,216)] = {64,0}, + [I(30,216)] = {64,0}, + [I(31,216)] = {64,0}, + [I(32,216)] = {27,0x29FFFE4}, + [I(33,216)] = {31,0x7F1FFFE4}, + [I(34,216)] = {31,0x7F3FFFE4}, + [I(35,216)] = {64,0}, + [I(36,216)] = {64,0}, + [I(37,216)] = {27,0x2BFFFE4}, + [I(38,216)] = {29,0x1F1FFFE4}, + [I(39,216)] = {X32,0xFF5FFFE4}, + [I(40,216)] = {31,0x7F5FFFE4}, + [I(41,216)] = {31,0x7F7FFFE4}, + [I(42,216)] = {29,0x1F3FFFE4}, + [I(43,216)] = {X32,0xFF7FFFE4}, + [I(44,216)] = {29,0x1F5FFFE4}, + [I(45,216)] = {27,0x2DFFFE4}, + [I(46,216)] = {27,0x2FFFFE4}, + [I(47,216)] = {27,0x31FFFE4}, + [I(48,216)] = {26,0x1FFFE4}, + [I(49,216)] = {26,0x3FFFE4}, + [I(50,216)] = {26,0x5FFFE4}, + [I(51,216)] = {27,0x33FFFE4}, + [I(52,216)] = {27,0x35FFFE4}, + [I(53,216)] = {27,0x37FFFE4}, + [I(54,216)] = {27,0x39FFFE4}, + [I(55,216)] = {27,0x3BFFFE4}, + [I(56,216)] = {27,0x3DFFFE4}, + [I(57,216)] = {27,0x3FFFFE4}, + [I(58,216)] = {28,0xB9FFFE4}, + [I(59,216)] = {29,0x1F7FFFE4}, + [I(60,216)] = {64,0}, + [I(61,216)] = {27,0x41FFFE4}, + [I(62,216)] = {64,0}, + [I(63,216)] = {31,0x7F9FFFE4}, + [I(64,216)] = {64,0}, + [I(65,216)] = {27,0x43FFFE4}, + [I(66,216)] = {28,0xBBFFFE4}, + [I(67,216)] = {28,0xBDFFFE4}, + [I(68,216)] = {28,0xBFFFFE4}, + [I(69,216)] = {28,0xC1FFFE4}, + [I(70,216)] = {28,0xC3FFFE4}, + [I(71,216)] = {28,0xC5FFFE4}, + [I(72,216)] = {28,0xC7FFFE4}, + [I(73,216)] = {28,0xC9FFFE4}, + [I(74,216)] = {28,0xCBFFFE4}, + [I(75,216)] = {28,0xCDFFFE4}, + [I(76,216)] = {28,0xCFFFFE4}, + [I(77,216)] = {28,0xD1FFFE4}, + [I(78,216)] = {28,0xD3FFFE4}, + [I(79,216)] = {28,0xD5FFFE4}, + [I(80,216)] = {28,0xD7FFFE4}, + [I(81,216)] = {28,0xD9FFFE4}, + [I(82,216)] = {28,0xDBFFFE4}, + [I(83,216)] = {28,0xDDFFFE4}, + [I(84,216)] = {28,0xDFFFFE4}, + [I(85,216)] = {28,0xE1FFFE4}, + [I(86,216)] = {28,0xE3FFFE4}, + [I(87,216)] = {28,0xE5FFFE4}, + [I(88,216)] = {29,0x1F9FFFE4}, + [I(89,216)] = {28,0xE7FFFE4}, + [I(90,216)] = {29,0x1FBFFFE4}, + [I(91,216)] = {64,0}, + [I(92,216)] = {64,0}, + [I(93,216)] = {64,0}, + [I(94,216)] = {64,0}, + [I(95,216)] = {27,0x45FFFE4}, + [I(96,216)] = {64,0}, + [I(97,216)] = {26,0x7FFFE4}, + [I(98,216)] = {27,0x47FFFE4}, + [I(99,216)] = {26,0x9FFFE4}, + [I(100,216)] = {27,0x49FFFE4}, + [I(101,216)] = {26,0xBFFFE4}, + [I(102,216)] = {27,0x4BFFFE4}, + [I(103,216)] = {27,0x4DFFFE4}, + [I(104,216)] = {27,0x4FFFFE4}, + [I(105,216)] = {26,0xDFFFE4}, + [I(106,216)] = {28,0xE9FFFE4}, + [I(107,216)] = {28,0xEBFFFE4}, + [I(108,216)] = {27,0x51FFFE4}, + [I(109,216)] = {27,0x53FFFE4}, + [I(110,216)] = {27,0x55FFFE4}, + [I(111,216)] = {26,0xFFFFE4}, + [I(112,216)] = {27,0x57FFFE4}, + [I(113,216)] = {28,0xEDFFFE4}, + [I(114,216)] = {27,0x59FFFE4}, + [I(115,216)] = {26,0x11FFFE4}, + [I(116,216)] = {26,0x13FFFE4}, + [I(117,216)] = {27,0x5BFFFE4}, + [I(118,216)] = {28,0xEFFFFE4}, + [I(119,216)] = {28,0xF1FFFE4}, + [I(120,216)] = {28,0xF3FFFE4}, + [I(121,216)] = {28,0xF5FFFE4}, + [I(122,216)] = {28,0xF7FFFE4}, + [I(123,216)] = {64,0}, + [I(124,216)] = {X32,0xFF9FFFE4}, + [I(125,216)] = {64,0}, + [I(126,216)] = {64,0}, + [I(127,216)] = {64,0}, + [I(128,216)] = {64,0}, + [I(129,216)] = {64,0}, + [I(130,216)] = {64,0}, + [I(131,216)] = {64,0}, + [I(132,216)] = {64,0}, + [I(133,216)] = {64,0}, + [I(134,216)] = {64,0}, + [I(135,216)] = {64,0}, + [I(136,216)] = {64,0}, + [I(137,216)] = {64,0}, + [I(138,216)] = {64,0}, + [I(139,216)] = {64,0}, + [I(140,216)] = {64,0}, + [I(141,216)] = {64,0}, + [I(142,216)] = {64,0}, + [I(143,216)] = {64,0}, + [I(144,216)] = {64,0}, + [I(145,216)] = {64,0}, + [I(146,216)] = {64,0}, + [I(147,216)] = {64,0}, + [I(148,216)] = {64,0}, + [I(149,216)] = {64,0}, + [I(150,216)] = {64,0}, + [I(151,216)] = {64,0}, + [I(152,216)] = {64,0}, + [I(153,216)] = {64,0}, + [I(154,216)] = {64,0}, + [I(155,216)] = {64,0}, + [I(156,216)] = {64,0}, + [I(157,216)] = {64,0}, + [I(158,216)] = {64,0}, + [I(159,216)] = {64,0}, + [I(160,216)] = {64,0}, + [I(161,216)] = {64,0}, + [I(162,216)] = {64,0}, + [I(163,216)] = {64,0}, + [I(164,216)] = {64,0}, + [I(165,216)] = {64,0}, + [I(166,216)] = {64,0}, + [I(167,216)] = {64,0}, + [I(168,216)] = {64,0}, + [I(169,216)] = {64,0}, + [I(170,216)] = {64,0}, + [I(171,216)] = {64,0}, + [I(172,216)] = {64,0}, + [I(173,216)] = {64,0}, + [I(174,216)] = {64,0}, + [I(175,216)] = {64,0}, + [I(176,216)] = {64,0}, + [I(177,216)] = {64,0}, + [I(178,216)] = {64,0}, + [I(179,216)] = {64,0}, + [I(180,216)] = {64,0}, + [I(181,216)] = {64,0}, + [I(182,216)] = {64,0}, + [I(183,216)] = {64,0}, + [I(184,216)] = {64,0}, + [I(185,216)] = {64,0}, + [I(186,216)] = {64,0}, + [I(187,216)] = {64,0}, + [I(188,216)] = {64,0}, + [I(189,216)] = {64,0}, + [I(190,216)] = {64,0}, + [I(191,216)] = {64,0}, + [I(192,216)] = {64,0}, + [I(193,216)] = {64,0}, + [I(194,216)] = {64,0}, + [I(195,216)] = {64,0}, + [I(196,216)] = {64,0}, + [I(197,216)] = {64,0}, + [I(198,216)] = {64,0}, + [I(199,216)] = {64,0}, + [I(200,216)] = {64,0}, + [I(201,216)] = {64,0}, + [I(202,216)] = {64,0}, + [I(203,216)] = {64,0}, + [I(204,216)] = {64,0}, + [I(205,216)] = {64,0}, + [I(206,216)] = {64,0}, + [I(207,216)] = {64,0}, + [I(208,216)] = {64,0}, + [I(209,216)] = {64,0}, + [I(210,216)] = {64,0}, + [I(211,216)] = {64,0}, + [I(212,216)] = {64,0}, + [I(213,216)] = {64,0}, + [I(214,216)] = {64,0}, + [I(215,216)] = {64,0}, + [I(216,216)] = {64,0}, + [I(217,216)] = {64,0}, + [I(218,216)] = {64,0}, + [I(219,216)] = {64,0}, + [I(220,216)] = {64,0}, + [I(221,216)] = {64,0}, + [I(222,216)] = {64,0}, + [I(223,216)] = {64,0}, + [I(224,216)] = {64,0}, + [I(225,216)] = {64,0}, + [I(226,216)] = {64,0}, + [I(227,216)] = {64,0}, + [I(228,216)] = {64,0}, + [I(229,216)] = {64,0}, + [I(230,216)] = {64,0}, + [I(231,216)] = {64,0}, + [I(232,216)] = {64,0}, + [I(233,216)] = {64,0}, + [I(234,216)] = {64,0}, + [I(235,216)] = {64,0}, + [I(236,216)] = {64,0}, + [I(237,216)] = {64,0}, + [I(238,216)] = {64,0}, + [I(239,216)] = {64,0}, + [I(240,216)] = {64,0}, + [I(241,216)] = {64,0}, + [I(242,216)] = {64,0}, + [I(243,216)] = {64,0}, + [I(244,216)] = {64,0}, + [I(245,216)] = {64,0}, + [I(246,216)] = {64,0}, + [I(247,216)] = {64,0}, + [I(248,216)] = {64,0}, + [I(249,216)] = {64,0}, + [I(250,216)] = {64,0}, + [I(251,216)] = {64,0}, + [I(252,216)] = {64,0}, + [I(253,216)] = {64,0}, + [I(254,216)] = {64,0}, + [I(255,216)] = {64,0}, + [I(0,217)] = {64,0}, + [I(1,217)] = {64,0}, + [I(2,217)] = {64,0}, + [I(3,217)] = {64,0}, + [I(4,217)] = {64,0}, + [I(5,217)] = {64,0}, + [I(6,217)] = {64,0}, + [I(7,217)] = {64,0}, + [I(8,217)] = {64,0}, + [I(9,217)] = {64,0}, + [I(10,217)] = {64,0}, + [I(11,217)] = {64,0}, + [I(12,217)] = {64,0}, + [I(13,217)] = {64,0}, + [I(14,217)] = {64,0}, + [I(15,217)] = {64,0}, + [I(16,217)] = {64,0}, + [I(17,217)] = {64,0}, + [I(18,217)] = {64,0}, + [I(19,217)] = {64,0}, + [I(20,217)] = {64,0}, + [I(21,217)] = {64,0}, + [I(22,217)] = {64,0}, + [I(23,217)] = {64,0}, + [I(24,217)] = {64,0}, + [I(25,217)] = {64,0}, + [I(26,217)] = {64,0}, + [I(27,217)] = {64,0}, + [I(28,217)] = {64,0}, + [I(29,217)] = {64,0}, + [I(30,217)] = {64,0}, + [I(31,217)] = {64,0}, + [I(32,217)] = {27,0x29FFFE5}, + [I(33,217)] = {31,0x7F1FFFE5}, + [I(34,217)] = {31,0x7F3FFFE5}, + [I(35,217)] = {64,0}, + [I(36,217)] = {64,0}, + [I(37,217)] = {27,0x2BFFFE5}, + [I(38,217)] = {29,0x1F1FFFE5}, + [I(39,217)] = {X32,0xFF5FFFE5}, + [I(40,217)] = {31,0x7F5FFFE5}, + [I(41,217)] = {31,0x7F7FFFE5}, + [I(42,217)] = {29,0x1F3FFFE5}, + [I(43,217)] = {X32,0xFF7FFFE5}, + [I(44,217)] = {29,0x1F5FFFE5}, + [I(45,217)] = {27,0x2DFFFE5}, + [I(46,217)] = {27,0x2FFFFE5}, + [I(47,217)] = {27,0x31FFFE5}, + [I(48,217)] = {26,0x1FFFE5}, + [I(49,217)] = {26,0x3FFFE5}, + [I(50,217)] = {26,0x5FFFE5}, + [I(51,217)] = {27,0x33FFFE5}, + [I(52,217)] = {27,0x35FFFE5}, + [I(53,217)] = {27,0x37FFFE5}, + [I(54,217)] = {27,0x39FFFE5}, + [I(55,217)] = {27,0x3BFFFE5}, + [I(56,217)] = {27,0x3DFFFE5}, + [I(57,217)] = {27,0x3FFFFE5}, + [I(58,217)] = {28,0xB9FFFE5}, + [I(59,217)] = {29,0x1F7FFFE5}, + [I(60,217)] = {64,0}, + [I(61,217)] = {27,0x41FFFE5}, + [I(62,217)] = {64,0}, + [I(63,217)] = {31,0x7F9FFFE5}, + [I(64,217)] = {64,0}, + [I(65,217)] = {27,0x43FFFE5}, + [I(66,217)] = {28,0xBBFFFE5}, + [I(67,217)] = {28,0xBDFFFE5}, + [I(68,217)] = {28,0xBFFFFE5}, + [I(69,217)] = {28,0xC1FFFE5}, + [I(70,217)] = {28,0xC3FFFE5}, + [I(71,217)] = {28,0xC5FFFE5}, + [I(72,217)] = {28,0xC7FFFE5}, + [I(73,217)] = {28,0xC9FFFE5}, + [I(74,217)] = {28,0xCBFFFE5}, + [I(75,217)] = {28,0xCDFFFE5}, + [I(76,217)] = {28,0xCFFFFE5}, + [I(77,217)] = {28,0xD1FFFE5}, + [I(78,217)] = {28,0xD3FFFE5}, + [I(79,217)] = {28,0xD5FFFE5}, + [I(80,217)] = {28,0xD7FFFE5}, + [I(81,217)] = {28,0xD9FFFE5}, + [I(82,217)] = {28,0xDBFFFE5}, + [I(83,217)] = {28,0xDDFFFE5}, + [I(84,217)] = {28,0xDFFFFE5}, + [I(85,217)] = {28,0xE1FFFE5}, + [I(86,217)] = {28,0xE3FFFE5}, + [I(87,217)] = {28,0xE5FFFE5}, + [I(88,217)] = {29,0x1F9FFFE5}, + [I(89,217)] = {28,0xE7FFFE5}, + [I(90,217)] = {29,0x1FBFFFE5}, + [I(91,217)] = {64,0}, + [I(92,217)] = {64,0}, + [I(93,217)] = {64,0}, + [I(94,217)] = {64,0}, + [I(95,217)] = {27,0x45FFFE5}, + [I(96,217)] = {64,0}, + [I(97,217)] = {26,0x7FFFE5}, + [I(98,217)] = {27,0x47FFFE5}, + [I(99,217)] = {26,0x9FFFE5}, + [I(100,217)] = {27,0x49FFFE5}, + [I(101,217)] = {26,0xBFFFE5}, + [I(102,217)] = {27,0x4BFFFE5}, + [I(103,217)] = {27,0x4DFFFE5}, + [I(104,217)] = {27,0x4FFFFE5}, + [I(105,217)] = {26,0xDFFFE5}, + [I(106,217)] = {28,0xE9FFFE5}, + [I(107,217)] = {28,0xEBFFFE5}, + [I(108,217)] = {27,0x51FFFE5}, + [I(109,217)] = {27,0x53FFFE5}, + [I(110,217)] = {27,0x55FFFE5}, + [I(111,217)] = {26,0xFFFFE5}, + [I(112,217)] = {27,0x57FFFE5}, + [I(113,217)] = {28,0xEDFFFE5}, + [I(114,217)] = {27,0x59FFFE5}, + [I(115,217)] = {26,0x11FFFE5}, + [I(116,217)] = {26,0x13FFFE5}, + [I(117,217)] = {27,0x5BFFFE5}, + [I(118,217)] = {28,0xEFFFFE5}, + [I(119,217)] = {28,0xF1FFFE5}, + [I(120,217)] = {28,0xF3FFFE5}, + [I(121,217)] = {28,0xF5FFFE5}, + [I(122,217)] = {28,0xF7FFFE5}, + [I(123,217)] = {64,0}, + [I(124,217)] = {X32,0xFF9FFFE5}, + [I(125,217)] = {64,0}, + [I(126,217)] = {64,0}, + [I(127,217)] = {64,0}, + [I(128,217)] = {64,0}, + [I(129,217)] = {64,0}, + [I(130,217)] = {64,0}, + [I(131,217)] = {64,0}, + [I(132,217)] = {64,0}, + [I(133,217)] = {64,0}, + [I(134,217)] = {64,0}, + [I(135,217)] = {64,0}, + [I(136,217)] = {64,0}, + [I(137,217)] = {64,0}, + [I(138,217)] = {64,0}, + [I(139,217)] = {64,0}, + [I(140,217)] = {64,0}, + [I(141,217)] = {64,0}, + [I(142,217)] = {64,0}, + [I(143,217)] = {64,0}, + [I(144,217)] = {64,0}, + [I(145,217)] = {64,0}, + [I(146,217)] = {64,0}, + [I(147,217)] = {64,0}, + [I(148,217)] = {64,0}, + [I(149,217)] = {64,0}, + [I(150,217)] = {64,0}, + [I(151,217)] = {64,0}, + [I(152,217)] = {64,0}, + [I(153,217)] = {64,0}, + [I(154,217)] = {64,0}, + [I(155,217)] = {64,0}, + [I(156,217)] = {64,0}, + [I(157,217)] = {64,0}, + [I(158,217)] = {64,0}, + [I(159,217)] = {64,0}, + [I(160,217)] = {64,0}, + [I(161,217)] = {64,0}, + [I(162,217)] = {64,0}, + [I(163,217)] = {64,0}, + [I(164,217)] = {64,0}, + [I(165,217)] = {64,0}, + [I(166,217)] = {64,0}, + [I(167,217)] = {64,0}, + [I(168,217)] = {64,0}, + [I(169,217)] = {64,0}, + [I(170,217)] = {64,0}, + [I(171,217)] = {64,0}, + [I(172,217)] = {64,0}, + [I(173,217)] = {64,0}, + [I(174,217)] = {64,0}, + [I(175,217)] = {64,0}, + [I(176,217)] = {64,0}, + [I(177,217)] = {64,0}, + [I(178,217)] = {64,0}, + [I(179,217)] = {64,0}, + [I(180,217)] = {64,0}, + [I(181,217)] = {64,0}, + [I(182,217)] = {64,0}, + [I(183,217)] = {64,0}, + [I(184,217)] = {64,0}, + [I(185,217)] = {64,0}, + [I(186,217)] = {64,0}, + [I(187,217)] = {64,0}, + [I(188,217)] = {64,0}, + [I(189,217)] = {64,0}, + [I(190,217)] = {64,0}, + [I(191,217)] = {64,0}, + [I(192,217)] = {64,0}, + [I(193,217)] = {64,0}, + [I(194,217)] = {64,0}, + [I(195,217)] = {64,0}, + [I(196,217)] = {64,0}, + [I(197,217)] = {64,0}, + [I(198,217)] = {64,0}, + [I(199,217)] = {64,0}, + [I(200,217)] = {64,0}, + [I(201,217)] = {64,0}, + [I(202,217)] = {64,0}, + [I(203,217)] = {64,0}, + [I(204,217)] = {64,0}, + [I(205,217)] = {64,0}, + [I(206,217)] = {64,0}, + [I(207,217)] = {64,0}, + [I(208,217)] = {64,0}, + [I(209,217)] = {64,0}, + [I(210,217)] = {64,0}, + [I(211,217)] = {64,0}, + [I(212,217)] = {64,0}, + [I(213,217)] = {64,0}, + [I(214,217)] = {64,0}, + [I(215,217)] = {64,0}, + [I(216,217)] = {64,0}, + [I(217,217)] = {64,0}, + [I(218,217)] = {64,0}, + [I(219,217)] = {64,0}, + [I(220,217)] = {64,0}, + [I(221,217)] = {64,0}, + [I(222,217)] = {64,0}, + [I(223,217)] = {64,0}, + [I(224,217)] = {64,0}, + [I(225,217)] = {64,0}, + [I(226,217)] = {64,0}, + [I(227,217)] = {64,0}, + [I(228,217)] = {64,0}, + [I(229,217)] = {64,0}, + [I(230,217)] = {64,0}, + [I(231,217)] = {64,0}, + [I(232,217)] = {64,0}, + [I(233,217)] = {64,0}, + [I(234,217)] = {64,0}, + [I(235,217)] = {64,0}, + [I(236,217)] = {64,0}, + [I(237,217)] = {64,0}, + [I(238,217)] = {64,0}, + [I(239,217)] = {64,0}, + [I(240,217)] = {64,0}, + [I(241,217)] = {64,0}, + [I(242,217)] = {64,0}, + [I(243,217)] = {64,0}, + [I(244,217)] = {64,0}, + [I(245,217)] = {64,0}, + [I(246,217)] = {64,0}, + [I(247,217)] = {64,0}, + [I(248,217)] = {64,0}, + [I(249,217)] = {64,0}, + [I(250,217)] = {64,0}, + [I(251,217)] = {64,0}, + [I(252,217)] = {64,0}, + [I(253,217)] = {64,0}, + [I(254,217)] = {64,0}, + [I(255,217)] = {64,0}, + [I(0,218)] = {64,0}, + [I(1,218)] = {64,0}, + [I(2,218)] = {64,0}, + [I(3,218)] = {64,0}, + [I(4,218)] = {64,0}, + [I(5,218)] = {64,0}, + [I(6,218)] = {64,0}, + [I(7,218)] = {64,0}, + [I(8,218)] = {64,0}, + [I(9,218)] = {64,0}, + [I(10,218)] = {64,0}, + [I(11,218)] = {64,0}, + [I(12,218)] = {64,0}, + [I(13,218)] = {64,0}, + [I(14,218)] = {64,0}, + [I(15,218)] = {64,0}, + [I(16,218)] = {64,0}, + [I(17,218)] = {64,0}, + [I(18,218)] = {64,0}, + [I(19,218)] = {64,0}, + [I(20,218)] = {64,0}, + [I(21,218)] = {64,0}, + [I(22,218)] = {64,0}, + [I(23,218)] = {64,0}, + [I(24,218)] = {64,0}, + [I(25,218)] = {64,0}, + [I(26,218)] = {64,0}, + [I(27,218)] = {64,0}, + [I(28,218)] = {64,0}, + [I(29,218)] = {64,0}, + [I(30,218)] = {64,0}, + [I(31,218)] = {64,0}, + [I(32,218)] = {X32,0x53FFFFE8}, + [I(33,218)] = {64,0}, + [I(34,218)] = {64,0}, + [I(35,218)] = {64,0}, + [I(36,218)] = {64,0}, + [I(37,218)] = {X32,0x57FFFFE8}, + [I(38,218)] = {64,0}, + [I(39,218)] = {64,0}, + [I(40,218)] = {64,0}, + [I(41,218)] = {64,0}, + [I(42,218)] = {64,0}, + [I(43,218)] = {64,0}, + [I(44,218)] = {64,0}, + [I(45,218)] = {X32,0x5BFFFFE8}, + [I(46,218)] = {X32,0x5FFFFFE8}, + [I(47,218)] = {X32,0x63FFFFE8}, + [I(48,218)] = {31,0x3FFFFE8}, + [I(49,218)] = {31,0x7FFFFE8}, + [I(50,218)] = {31,0xBFFFFE8}, + [I(51,218)] = {X32,0x67FFFFE8}, + [I(52,218)] = {X32,0x6BFFFFE8}, + [I(53,218)] = {X32,0x6FFFFFE8}, + [I(54,218)] = {X32,0x73FFFFE8}, + [I(55,218)] = {X32,0x77FFFFE8}, + [I(56,218)] = {X32,0x7BFFFFE8}, + [I(57,218)] = {X32,0x7FFFFFE8}, + [I(58,218)] = {64,0}, + [I(59,218)] = {64,0}, + [I(60,218)] = {64,0}, + [I(61,218)] = {X32,0x83FFFFE8}, + [I(62,218)] = {64,0}, + [I(63,218)] = {64,0}, + [I(64,218)] = {64,0}, + [I(65,218)] = {X32,0x87FFFFE8}, + [I(66,218)] = {64,0}, + [I(67,218)] = {64,0}, + [I(68,218)] = {64,0}, + [I(69,218)] = {64,0}, + [I(70,218)] = {64,0}, + [I(71,218)] = {64,0}, + [I(72,218)] = {64,0}, + [I(73,218)] = {64,0}, + [I(74,218)] = {64,0}, + [I(75,218)] = {64,0}, + [I(76,218)] = {64,0}, + [I(77,218)] = {64,0}, + [I(78,218)] = {64,0}, + [I(79,218)] = {64,0}, + [I(80,218)] = {64,0}, + [I(81,218)] = {64,0}, + [I(82,218)] = {64,0}, + [I(83,218)] = {64,0}, + [I(84,218)] = {64,0}, + [I(85,218)] = {64,0}, + [I(86,218)] = {64,0}, + [I(87,218)] = {64,0}, + [I(88,218)] = {64,0}, + [I(89,218)] = {64,0}, + [I(90,218)] = {64,0}, + [I(91,218)] = {64,0}, + [I(92,218)] = {64,0}, + [I(93,218)] = {64,0}, + [I(94,218)] = {64,0}, + [I(95,218)] = {X32,0x8BFFFFE8}, + [I(96,218)] = {64,0}, + [I(97,218)] = {31,0xFFFFFE8}, + [I(98,218)] = {X32,0x8FFFFFE8}, + [I(99,218)] = {31,0x13FFFFE8}, + [I(100,218)] = {X32,0x93FFFFE8}, + [I(101,218)] = {31,0x17FFFFE8}, + [I(102,218)] = {X32,0x97FFFFE8}, + [I(103,218)] = {X32,0x9BFFFFE8}, + [I(104,218)] = {X32,0x9FFFFFE8}, + [I(105,218)] = {31,0x1BFFFFE8}, + [I(106,218)] = {64,0}, + [I(107,218)] = {64,0}, + [I(108,218)] = {X32,0xA3FFFFE8}, + [I(109,218)] = {X32,0xA7FFFFE8}, + [I(110,218)] = {X32,0xABFFFFE8}, + [I(111,218)] = {31,0x1FFFFFE8}, + [I(112,218)] = {X32,0xAFFFFFE8}, + [I(113,218)] = {64,0}, + [I(114,218)] = {X32,0xB3FFFFE8}, + [I(115,218)] = {31,0x23FFFFE8}, + [I(116,218)] = {31,0x27FFFFE8}, + [I(117,218)] = {X32,0xB7FFFFE8}, + [I(118,218)] = {64,0}, + [I(119,218)] = {64,0}, + [I(120,218)] = {64,0}, + [I(121,218)] = {64,0}, + [I(122,218)] = {64,0}, + [I(123,218)] = {64,0}, + [I(124,218)] = {64,0}, + [I(125,218)] = {64,0}, + [I(126,218)] = {64,0}, + [I(127,218)] = {64,0}, + [I(128,218)] = {64,0}, + [I(129,218)] = {64,0}, + [I(130,218)] = {64,0}, + [I(131,218)] = {64,0}, + [I(132,218)] = {64,0}, + [I(133,218)] = {64,0}, + [I(134,218)] = {64,0}, + [I(135,218)] = {64,0}, + [I(136,218)] = {64,0}, + [I(137,218)] = {64,0}, + [I(138,218)] = {64,0}, + [I(139,218)] = {64,0}, + [I(140,218)] = {64,0}, + [I(141,218)] = {64,0}, + [I(142,218)] = {64,0}, + [I(143,218)] = {64,0}, + [I(144,218)] = {64,0}, + [I(145,218)] = {64,0}, + [I(146,218)] = {64,0}, + [I(147,218)] = {64,0}, + [I(148,218)] = {64,0}, + [I(149,218)] = {64,0}, + [I(150,218)] = {64,0}, + [I(151,218)] = {64,0}, + [I(152,218)] = {64,0}, + [I(153,218)] = {64,0}, + [I(154,218)] = {64,0}, + [I(155,218)] = {64,0}, + [I(156,218)] = {64,0}, + [I(157,218)] = {64,0}, + [I(158,218)] = {64,0}, + [I(159,218)] = {64,0}, + [I(160,218)] = {64,0}, + [I(161,218)] = {64,0}, + [I(162,218)] = {64,0}, + [I(163,218)] = {64,0}, + [I(164,218)] = {64,0}, + [I(165,218)] = {64,0}, + [I(166,218)] = {64,0}, + [I(167,218)] = {64,0}, + [I(168,218)] = {64,0}, + [I(169,218)] = {64,0}, + [I(170,218)] = {64,0}, + [I(171,218)] = {64,0}, + [I(172,218)] = {64,0}, + [I(173,218)] = {64,0}, + [I(174,218)] = {64,0}, + [I(175,218)] = {64,0}, + [I(176,218)] = {64,0}, + [I(177,218)] = {64,0}, + [I(178,218)] = {64,0}, + [I(179,218)] = {64,0}, + [I(180,218)] = {64,0}, + [I(181,218)] = {64,0}, + [I(182,218)] = {64,0}, + [I(183,218)] = {64,0}, + [I(184,218)] = {64,0}, + [I(185,218)] = {64,0}, + [I(186,218)] = {64,0}, + [I(187,218)] = {64,0}, + [I(188,218)] = {64,0}, + [I(189,218)] = {64,0}, + [I(190,218)] = {64,0}, + [I(191,218)] = {64,0}, + [I(192,218)] = {64,0}, + [I(193,218)] = {64,0}, + [I(194,218)] = {64,0}, + [I(195,218)] = {64,0}, + [I(196,218)] = {64,0}, + [I(197,218)] = {64,0}, + [I(198,218)] = {64,0}, + [I(199,218)] = {64,0}, + [I(200,218)] = {64,0}, + [I(201,218)] = {64,0}, + [I(202,218)] = {64,0}, + [I(203,218)] = {64,0}, + [I(204,218)] = {64,0}, + [I(205,218)] = {64,0}, + [I(206,218)] = {64,0}, + [I(207,218)] = {64,0}, + [I(208,218)] = {64,0}, + [I(209,218)] = {64,0}, + [I(210,218)] = {64,0}, + [I(211,218)] = {64,0}, + [I(212,218)] = {64,0}, + [I(213,218)] = {64,0}, + [I(214,218)] = {64,0}, + [I(215,218)] = {64,0}, + [I(216,218)] = {64,0}, + [I(217,218)] = {64,0}, + [I(218,218)] = {64,0}, + [I(219,218)] = {64,0}, + [I(220,218)] = {64,0}, + [I(221,218)] = {64,0}, + [I(222,218)] = {64,0}, + [I(223,218)] = {64,0}, + [I(224,218)] = {64,0}, + [I(225,218)] = {64,0}, + [I(226,218)] = {64,0}, + [I(227,218)] = {64,0}, + [I(228,218)] = {64,0}, + [I(229,218)] = {64,0}, + [I(230,218)] = {64,0}, + [I(231,218)] = {64,0}, + [I(232,218)] = {64,0}, + [I(233,218)] = {64,0}, + [I(234,218)] = {64,0}, + [I(235,218)] = {64,0}, + [I(236,218)] = {64,0}, + [I(237,218)] = {64,0}, + [I(238,218)] = {64,0}, + [I(239,218)] = {64,0}, + [I(240,218)] = {64,0}, + [I(241,218)] = {64,0}, + [I(242,218)] = {64,0}, + [I(243,218)] = {64,0}, + [I(244,218)] = {64,0}, + [I(245,218)] = {64,0}, + [I(246,218)] = {64,0}, + [I(247,218)] = {64,0}, + [I(248,218)] = {64,0}, + [I(249,218)] = {64,0}, + [I(250,218)] = {64,0}, + [I(251,218)] = {64,0}, + [I(252,218)] = {64,0}, + [I(253,218)] = {64,0}, + [I(254,218)] = {64,0}, + [I(255,218)] = {64,0}, + [I(0,219)] = {64,0}, + [I(1,219)] = {64,0}, + [I(2,219)] = {64,0}, + [I(3,219)] = {64,0}, + [I(4,219)] = {64,0}, + [I(5,219)] = {64,0}, + [I(6,219)] = {64,0}, + [I(7,219)] = {64,0}, + [I(8,219)] = {64,0}, + [I(9,219)] = {64,0}, + [I(10,219)] = {64,0}, + [I(11,219)] = {64,0}, + [I(12,219)] = {64,0}, + [I(13,219)] = {64,0}, + [I(14,219)] = {64,0}, + [I(15,219)] = {64,0}, + [I(16,219)] = {64,0}, + [I(17,219)] = {64,0}, + [I(18,219)] = {64,0}, + [I(19,219)] = {64,0}, + [I(20,219)] = {64,0}, + [I(21,219)] = {64,0}, + [I(22,219)] = {64,0}, + [I(23,219)] = {64,0}, + [I(24,219)] = {64,0}, + [I(25,219)] = {64,0}, + [I(26,219)] = {64,0}, + [I(27,219)] = {64,0}, + [I(28,219)] = {64,0}, + [I(29,219)] = {64,0}, + [I(30,219)] = {64,0}, + [I(31,219)] = {64,0}, + [I(32,219)] = {X32,0x53FFFFE9}, + [I(33,219)] = {64,0}, + [I(34,219)] = {64,0}, + [I(35,219)] = {64,0}, + [I(36,219)] = {64,0}, + [I(37,219)] = {X32,0x57FFFFE9}, + [I(38,219)] = {64,0}, + [I(39,219)] = {64,0}, + [I(40,219)] = {64,0}, + [I(41,219)] = {64,0}, + [I(42,219)] = {64,0}, + [I(43,219)] = {64,0}, + [I(44,219)] = {64,0}, + [I(45,219)] = {X32,0x5BFFFFE9}, + [I(46,219)] = {X32,0x5FFFFFE9}, + [I(47,219)] = {X32,0x63FFFFE9}, + [I(48,219)] = {31,0x3FFFFE9}, + [I(49,219)] = {31,0x7FFFFE9}, + [I(50,219)] = {31,0xBFFFFE9}, + [I(51,219)] = {X32,0x67FFFFE9}, + [I(52,219)] = {X32,0x6BFFFFE9}, + [I(53,219)] = {X32,0x6FFFFFE9}, + [I(54,219)] = {X32,0x73FFFFE9}, + [I(55,219)] = {X32,0x77FFFFE9}, + [I(56,219)] = {X32,0x7BFFFFE9}, + [I(57,219)] = {X32,0x7FFFFFE9}, + [I(58,219)] = {64,0}, + [I(59,219)] = {64,0}, + [I(60,219)] = {64,0}, + [I(61,219)] = {X32,0x83FFFFE9}, + [I(62,219)] = {64,0}, + [I(63,219)] = {64,0}, + [I(64,219)] = {64,0}, + [I(65,219)] = {X32,0x87FFFFE9}, + [I(66,219)] = {64,0}, + [I(67,219)] = {64,0}, + [I(68,219)] = {64,0}, + [I(69,219)] = {64,0}, + [I(70,219)] = {64,0}, + [I(71,219)] = {64,0}, + [I(72,219)] = {64,0}, + [I(73,219)] = {64,0}, + [I(74,219)] = {64,0}, + [I(75,219)] = {64,0}, + [I(76,219)] = {64,0}, + [I(77,219)] = {64,0}, + [I(78,219)] = {64,0}, + [I(79,219)] = {64,0}, + [I(80,219)] = {64,0}, + [I(81,219)] = {64,0}, + [I(82,219)] = {64,0}, + [I(83,219)] = {64,0}, + [I(84,219)] = {64,0}, + [I(85,219)] = {64,0}, + [I(86,219)] = {64,0}, + [I(87,219)] = {64,0}, + [I(88,219)] = {64,0}, + [I(89,219)] = {64,0}, + [I(90,219)] = {64,0}, + [I(91,219)] = {64,0}, + [I(92,219)] = {64,0}, + [I(93,219)] = {64,0}, + [I(94,219)] = {64,0}, + [I(95,219)] = {X32,0x8BFFFFE9}, + [I(96,219)] = {64,0}, + [I(97,219)] = {31,0xFFFFFE9}, + [I(98,219)] = {X32,0x8FFFFFE9}, + [I(99,219)] = {31,0x13FFFFE9}, + [I(100,219)] = {X32,0x93FFFFE9}, + [I(101,219)] = {31,0x17FFFFE9}, + [I(102,219)] = {X32,0x97FFFFE9}, + [I(103,219)] = {X32,0x9BFFFFE9}, + [I(104,219)] = {X32,0x9FFFFFE9}, + [I(105,219)] = {31,0x1BFFFFE9}, + [I(106,219)] = {64,0}, + [I(107,219)] = {64,0}, + [I(108,219)] = {X32,0xA3FFFFE9}, + [I(109,219)] = {X32,0xA7FFFFE9}, + [I(110,219)] = {X32,0xABFFFFE9}, + [I(111,219)] = {31,0x1FFFFFE9}, + [I(112,219)] = {X32,0xAFFFFFE9}, + [I(113,219)] = {64,0}, + [I(114,219)] = {X32,0xB3FFFFE9}, + [I(115,219)] = {31,0x23FFFFE9}, + [I(116,219)] = {31,0x27FFFFE9}, + [I(117,219)] = {X32,0xB7FFFFE9}, + [I(118,219)] = {64,0}, + [I(119,219)] = {64,0}, + [I(120,219)] = {64,0}, + [I(121,219)] = {64,0}, + [I(122,219)] = {64,0}, + [I(123,219)] = {64,0}, + [I(124,219)] = {64,0}, + [I(125,219)] = {64,0}, + [I(126,219)] = {64,0}, + [I(127,219)] = {64,0}, + [I(128,219)] = {64,0}, + [I(129,219)] = {64,0}, + [I(130,219)] = {64,0}, + [I(131,219)] = {64,0}, + [I(132,219)] = {64,0}, + [I(133,219)] = {64,0}, + [I(134,219)] = {64,0}, + [I(135,219)] = {64,0}, + [I(136,219)] = {64,0}, + [I(137,219)] = {64,0}, + [I(138,219)] = {64,0}, + [I(139,219)] = {64,0}, + [I(140,219)] = {64,0}, + [I(141,219)] = {64,0}, + [I(142,219)] = {64,0}, + [I(143,219)] = {64,0}, + [I(144,219)] = {64,0}, + [I(145,219)] = {64,0}, + [I(146,219)] = {64,0}, + [I(147,219)] = {64,0}, + [I(148,219)] = {64,0}, + [I(149,219)] = {64,0}, + [I(150,219)] = {64,0}, + [I(151,219)] = {64,0}, + [I(152,219)] = {64,0}, + [I(153,219)] = {64,0}, + [I(154,219)] = {64,0}, + [I(155,219)] = {64,0}, + [I(156,219)] = {64,0}, + [I(157,219)] = {64,0}, + [I(158,219)] = {64,0}, + [I(159,219)] = {64,0}, + [I(160,219)] = {64,0}, + [I(161,219)] = {64,0}, + [I(162,219)] = {64,0}, + [I(163,219)] = {64,0}, + [I(164,219)] = {64,0}, + [I(165,219)] = {64,0}, + [I(166,219)] = {64,0}, + [I(167,219)] = {64,0}, + [I(168,219)] = {64,0}, + [I(169,219)] = {64,0}, + [I(170,219)] = {64,0}, + [I(171,219)] = {64,0}, + [I(172,219)] = {64,0}, + [I(173,219)] = {64,0}, + [I(174,219)] = {64,0}, + [I(175,219)] = {64,0}, + [I(176,219)] = {64,0}, + [I(177,219)] = {64,0}, + [I(178,219)] = {64,0}, + [I(179,219)] = {64,0}, + [I(180,219)] = {64,0}, + [I(181,219)] = {64,0}, + [I(182,219)] = {64,0}, + [I(183,219)] = {64,0}, + [I(184,219)] = {64,0}, + [I(185,219)] = {64,0}, + [I(186,219)] = {64,0}, + [I(187,219)] = {64,0}, + [I(188,219)] = {64,0}, + [I(189,219)] = {64,0}, + [I(190,219)] = {64,0}, + [I(191,219)] = {64,0}, + [I(192,219)] = {64,0}, + [I(193,219)] = {64,0}, + [I(194,219)] = {64,0}, + [I(195,219)] = {64,0}, + [I(196,219)] = {64,0}, + [I(197,219)] = {64,0}, + [I(198,219)] = {64,0}, + [I(199,219)] = {64,0}, + [I(200,219)] = {64,0}, + [I(201,219)] = {64,0}, + [I(202,219)] = {64,0}, + [I(203,219)] = {64,0}, + [I(204,219)] = {64,0}, + [I(205,219)] = {64,0}, + [I(206,219)] = {64,0}, + [I(207,219)] = {64,0}, + [I(208,219)] = {64,0}, + [I(209,219)] = {64,0}, + [I(210,219)] = {64,0}, + [I(211,219)] = {64,0}, + [I(212,219)] = {64,0}, + [I(213,219)] = {64,0}, + [I(214,219)] = {64,0}, + [I(215,219)] = {64,0}, + [I(216,219)] = {64,0}, + [I(217,219)] = {64,0}, + [I(218,219)] = {64,0}, + [I(219,219)] = {64,0}, + [I(220,219)] = {64,0}, + [I(221,219)] = {64,0}, + [I(222,219)] = {64,0}, + [I(223,219)] = {64,0}, + [I(224,219)] = {64,0}, + [I(225,219)] = {64,0}, + [I(226,219)] = {64,0}, + [I(227,219)] = {64,0}, + [I(228,219)] = {64,0}, + [I(229,219)] = {64,0}, + [I(230,219)] = {64,0}, + [I(231,219)] = {64,0}, + [I(232,219)] = {64,0}, + [I(233,219)] = {64,0}, + [I(234,219)] = {64,0}, + [I(235,219)] = {64,0}, + [I(236,219)] = {64,0}, + [I(237,219)] = {64,0}, + [I(238,219)] = {64,0}, + [I(239,219)] = {64,0}, + [I(240,219)] = {64,0}, + [I(241,219)] = {64,0}, + [I(242,219)] = {64,0}, + [I(243,219)] = {64,0}, + [I(244,219)] = {64,0}, + [I(245,219)] = {64,0}, + [I(246,219)] = {64,0}, + [I(247,219)] = {64,0}, + [I(248,219)] = {64,0}, + [I(249,219)] = {64,0}, + [I(250,219)] = {64,0}, + [I(251,219)] = {64,0}, + [I(252,219)] = {64,0}, + [I(253,219)] = {64,0}, + [I(254,219)] = {64,0}, + [I(255,219)] = {64,0}, + [I(0,220)] = {64,0}, + [I(1,220)] = {64,0}, + [I(2,220)] = {64,0}, + [I(3,220)] = {64,0}, + [I(4,220)] = {64,0}, + [I(5,220)] = {64,0}, + [I(6,220)] = {64,0}, + [I(7,220)] = {64,0}, + [I(8,220)] = {64,0}, + [I(9,220)] = {64,0}, + [I(10,220)] = {64,0}, + [I(11,220)] = {64,0}, + [I(12,220)] = {64,0}, + [I(13,220)] = {64,0}, + [I(14,220)] = {64,0}, + [I(15,220)] = {64,0}, + [I(16,220)] = {64,0}, + [I(17,220)] = {64,0}, + [I(18,220)] = {64,0}, + [I(19,220)] = {64,0}, + [I(20,220)] = {64,0}, + [I(21,220)] = {64,0}, + [I(22,220)] = {64,0}, + [I(23,220)] = {64,0}, + [I(24,220)] = {64,0}, + [I(25,220)] = {64,0}, + [I(26,220)] = {64,0}, + [I(27,220)] = {64,0}, + [I(28,220)] = {64,0}, + [I(29,220)] = {64,0}, + [I(30,220)] = {64,0}, + [I(31,220)] = {64,0}, + [I(32,220)] = {64,0}, + [I(33,220)] = {64,0}, + [I(34,220)] = {64,0}, + [I(35,220)] = {64,0}, + [I(36,220)] = {64,0}, + [I(37,220)] = {64,0}, + [I(38,220)] = {64,0}, + [I(39,220)] = {64,0}, + [I(40,220)] = {64,0}, + [I(41,220)] = {64,0}, + [I(42,220)] = {64,0}, + [I(43,220)] = {64,0}, + [I(44,220)] = {64,0}, + [I(45,220)] = {64,0}, + [I(46,220)] = {64,0}, + [I(47,220)] = {64,0}, + [I(48,220)] = {64,0}, + [I(49,220)] = {64,0}, + [I(50,220)] = {64,0}, + [I(51,220)] = {64,0}, + [I(52,220)] = {64,0}, + [I(53,220)] = {64,0}, + [I(54,220)] = {64,0}, + [I(55,220)] = {64,0}, + [I(56,220)] = {64,0}, + [I(57,220)] = {64,0}, + [I(58,220)] = {64,0}, + [I(59,220)] = {64,0}, + [I(60,220)] = {64,0}, + [I(61,220)] = {64,0}, + [I(62,220)] = {64,0}, + [I(63,220)] = {64,0}, + [I(64,220)] = {64,0}, + [I(65,220)] = {64,0}, + [I(66,220)] = {64,0}, + [I(67,220)] = {64,0}, + [I(68,220)] = {64,0}, + [I(69,220)] = {64,0}, + [I(70,220)] = {64,0}, + [I(71,220)] = {64,0}, + [I(72,220)] = {64,0}, + [I(73,220)] = {64,0}, + [I(74,220)] = {64,0}, + [I(75,220)] = {64,0}, + [I(76,220)] = {64,0}, + [I(77,220)] = {64,0}, + [I(78,220)] = {64,0}, + [I(79,220)] = {64,0}, + [I(80,220)] = {64,0}, + [I(81,220)] = {64,0}, + [I(82,220)] = {64,0}, + [I(83,220)] = {64,0}, + [I(84,220)] = {64,0}, + [I(85,220)] = {64,0}, + [I(86,220)] = {64,0}, + [I(87,220)] = {64,0}, + [I(88,220)] = {64,0}, + [I(89,220)] = {64,0}, + [I(90,220)] = {64,0}, + [I(91,220)] = {64,0}, + [I(92,220)] = {64,0}, + [I(93,220)] = {64,0}, + [I(94,220)] = {64,0}, + [I(95,220)] = {64,0}, + [I(96,220)] = {64,0}, + [I(97,220)] = {64,0}, + [I(98,220)] = {64,0}, + [I(99,220)] = {64,0}, + [I(100,220)] = {64,0}, + [I(101,220)] = {64,0}, + [I(102,220)] = {64,0}, + [I(103,220)] = {64,0}, + [I(104,220)] = {64,0}, + [I(105,220)] = {64,0}, + [I(106,220)] = {64,0}, + [I(107,220)] = {64,0}, + [I(108,220)] = {64,0}, + [I(109,220)] = {64,0}, + [I(110,220)] = {64,0}, + [I(111,220)] = {64,0}, + [I(112,220)] = {64,0}, + [I(113,220)] = {64,0}, + [I(114,220)] = {64,0}, + [I(115,220)] = {64,0}, + [I(116,220)] = {64,0}, + [I(117,220)] = {64,0}, + [I(118,220)] = {64,0}, + [I(119,220)] = {64,0}, + [I(120,220)] = {64,0}, + [I(121,220)] = {64,0}, + [I(122,220)] = {64,0}, + [I(123,220)] = {64,0}, + [I(124,220)] = {64,0}, + [I(125,220)] = {64,0}, + [I(126,220)] = {64,0}, + [I(127,220)] = {64,0}, + [I(128,220)] = {64,0}, + [I(129,220)] = {64,0}, + [I(130,220)] = {64,0}, + [I(131,220)] = {64,0}, + [I(132,220)] = {64,0}, + [I(133,220)] = {64,0}, + [I(134,220)] = {64,0}, + [I(135,220)] = {64,0}, + [I(136,220)] = {64,0}, + [I(137,220)] = {64,0}, + [I(138,220)] = {64,0}, + [I(139,220)] = {64,0}, + [I(140,220)] = {64,0}, + [I(141,220)] = {64,0}, + [I(142,220)] = {64,0}, + [I(143,220)] = {64,0}, + [I(144,220)] = {64,0}, + [I(145,220)] = {64,0}, + [I(146,220)] = {64,0}, + [I(147,220)] = {64,0}, + [I(148,220)] = {64,0}, + [I(149,220)] = {64,0}, + [I(150,220)] = {64,0}, + [I(151,220)] = {64,0}, + [I(152,220)] = {64,0}, + [I(153,220)] = {64,0}, + [I(154,220)] = {64,0}, + [I(155,220)] = {64,0}, + [I(156,220)] = {64,0}, + [I(157,220)] = {64,0}, + [I(158,220)] = {64,0}, + [I(159,220)] = {64,0}, + [I(160,220)] = {64,0}, + [I(161,220)] = {64,0}, + [I(162,220)] = {64,0}, + [I(163,220)] = {64,0}, + [I(164,220)] = {64,0}, + [I(165,220)] = {64,0}, + [I(166,220)] = {64,0}, + [I(167,220)] = {64,0}, + [I(168,220)] = {64,0}, + [I(169,220)] = {64,0}, + [I(170,220)] = {64,0}, + [I(171,220)] = {64,0}, + [I(172,220)] = {64,0}, + [I(173,220)] = {64,0}, + [I(174,220)] = {64,0}, + [I(175,220)] = {64,0}, + [I(176,220)] = {64,0}, + [I(177,220)] = {64,0}, + [I(178,220)] = {64,0}, + [I(179,220)] = {64,0}, + [I(180,220)] = {64,0}, + [I(181,220)] = {64,0}, + [I(182,220)] = {64,0}, + [I(183,220)] = {64,0}, + [I(184,220)] = {64,0}, + [I(185,220)] = {64,0}, + [I(186,220)] = {64,0}, + [I(187,220)] = {64,0}, + [I(188,220)] = {64,0}, + [I(189,220)] = {64,0}, + [I(190,220)] = {64,0}, + [I(191,220)] = {64,0}, + [I(192,220)] = {64,0}, + [I(193,220)] = {64,0}, + [I(194,220)] = {64,0}, + [I(195,220)] = {64,0}, + [I(196,220)] = {64,0}, + [I(197,220)] = {64,0}, + [I(198,220)] = {64,0}, + [I(199,220)] = {64,0}, + [I(200,220)] = {64,0}, + [I(201,220)] = {64,0}, + [I(202,220)] = {64,0}, + [I(203,220)] = {64,0}, + [I(204,220)] = {64,0}, + [I(205,220)] = {64,0}, + [I(206,220)] = {64,0}, + [I(207,220)] = {64,0}, + [I(208,220)] = {64,0}, + [I(209,220)] = {64,0}, + [I(210,220)] = {64,0}, + [I(211,220)] = {64,0}, + [I(212,220)] = {64,0}, + [I(213,220)] = {64,0}, + [I(214,220)] = {64,0}, + [I(215,220)] = {64,0}, + [I(216,220)] = {64,0}, + [I(217,220)] = {64,0}, + [I(218,220)] = {64,0}, + [I(219,220)] = {64,0}, + [I(220,220)] = {64,0}, + [I(221,220)] = {64,0}, + [I(222,220)] = {64,0}, + [I(223,220)] = {64,0}, + [I(224,220)] = {64,0}, + [I(225,220)] = {64,0}, + [I(226,220)] = {64,0}, + [I(227,220)] = {64,0}, + [I(228,220)] = {64,0}, + [I(229,220)] = {64,0}, + [I(230,220)] = {64,0}, + [I(231,220)] = {64,0}, + [I(232,220)] = {64,0}, + [I(233,220)] = {64,0}, + [I(234,220)] = {64,0}, + [I(235,220)] = {64,0}, + [I(236,220)] = {64,0}, + [I(237,220)] = {64,0}, + [I(238,220)] = {64,0}, + [I(239,220)] = {64,0}, + [I(240,220)] = {64,0}, + [I(241,220)] = {64,0}, + [I(242,220)] = {64,0}, + [I(243,220)] = {64,0}, + [I(244,220)] = {64,0}, + [I(245,220)] = {64,0}, + [I(246,220)] = {64,0}, + [I(247,220)] = {64,0}, + [I(248,220)] = {64,0}, + [I(249,220)] = {64,0}, + [I(250,220)] = {64,0}, + [I(251,220)] = {64,0}, + [I(252,220)] = {64,0}, + [I(253,220)] = {64,0}, + [I(254,220)] = {64,0}, + [I(255,220)] = {64,0}, + [I(0,221)] = {64,0}, + [I(1,221)] = {64,0}, + [I(2,221)] = {64,0}, + [I(3,221)] = {64,0}, + [I(4,221)] = {64,0}, + [I(5,221)] = {64,0}, + [I(6,221)] = {64,0}, + [I(7,221)] = {64,0}, + [I(8,221)] = {64,0}, + [I(9,221)] = {64,0}, + [I(10,221)] = {64,0}, + [I(11,221)] = {64,0}, + [I(12,221)] = {64,0}, + [I(13,221)] = {64,0}, + [I(14,221)] = {64,0}, + [I(15,221)] = {64,0}, + [I(16,221)] = {64,0}, + [I(17,221)] = {64,0}, + [I(18,221)] = {64,0}, + [I(19,221)] = {64,0}, + [I(20,221)] = {64,0}, + [I(21,221)] = {64,0}, + [I(22,221)] = {64,0}, + [I(23,221)] = {64,0}, + [I(24,221)] = {64,0}, + [I(25,221)] = {64,0}, + [I(26,221)] = {64,0}, + [I(27,221)] = {64,0}, + [I(28,221)] = {64,0}, + [I(29,221)] = {64,0}, + [I(30,221)] = {64,0}, + [I(31,221)] = {64,0}, + [I(32,221)] = {64,0}, + [I(33,221)] = {64,0}, + [I(34,221)] = {64,0}, + [I(35,221)] = {64,0}, + [I(36,221)] = {64,0}, + [I(37,221)] = {64,0}, + [I(38,221)] = {64,0}, + [I(39,221)] = {64,0}, + [I(40,221)] = {64,0}, + [I(41,221)] = {64,0}, + [I(42,221)] = {64,0}, + [I(43,221)] = {64,0}, + [I(44,221)] = {64,0}, + [I(45,221)] = {64,0}, + [I(46,221)] = {64,0}, + [I(47,221)] = {64,0}, + [I(48,221)] = {X32,0x7FFFFE3}, + [I(49,221)] = {X32,0xFFFFFE3}, + [I(50,221)] = {X32,0x17FFFFE3}, + [I(51,221)] = {64,0}, + [I(52,221)] = {64,0}, + [I(53,221)] = {64,0}, + [I(54,221)] = {64,0}, + [I(55,221)] = {64,0}, + [I(56,221)] = {64,0}, + [I(57,221)] = {64,0}, + [I(58,221)] = {64,0}, + [I(59,221)] = {64,0}, + [I(60,221)] = {64,0}, + [I(61,221)] = {64,0}, + [I(62,221)] = {64,0}, + [I(63,221)] = {64,0}, + [I(64,221)] = {64,0}, + [I(65,221)] = {64,0}, + [I(66,221)] = {64,0}, + [I(67,221)] = {64,0}, + [I(68,221)] = {64,0}, + [I(69,221)] = {64,0}, + [I(70,221)] = {64,0}, + [I(71,221)] = {64,0}, + [I(72,221)] = {64,0}, + [I(73,221)] = {64,0}, + [I(74,221)] = {64,0}, + [I(75,221)] = {64,0}, + [I(76,221)] = {64,0}, + [I(77,221)] = {64,0}, + [I(78,221)] = {64,0}, + [I(79,221)] = {64,0}, + [I(80,221)] = {64,0}, + [I(81,221)] = {64,0}, + [I(82,221)] = {64,0}, + [I(83,221)] = {64,0}, + [I(84,221)] = {64,0}, + [I(85,221)] = {64,0}, + [I(86,221)] = {64,0}, + [I(87,221)] = {64,0}, + [I(88,221)] = {64,0}, + [I(89,221)] = {64,0}, + [I(90,221)] = {64,0}, + [I(91,221)] = {64,0}, + [I(92,221)] = {64,0}, + [I(93,221)] = {64,0}, + [I(94,221)] = {64,0}, + [I(95,221)] = {64,0}, + [I(96,221)] = {64,0}, + [I(97,221)] = {X32,0x1FFFFFE3}, + [I(98,221)] = {64,0}, + [I(99,221)] = {X32,0x27FFFFE3}, + [I(100,221)] = {64,0}, + [I(101,221)] = {X32,0x2FFFFFE3}, + [I(102,221)] = {64,0}, + [I(103,221)] = {64,0}, + [I(104,221)] = {64,0}, + [I(105,221)] = {X32,0x37FFFFE3}, + [I(106,221)] = {64,0}, + [I(107,221)] = {64,0}, + [I(108,221)] = {64,0}, + [I(109,221)] = {64,0}, + [I(110,221)] = {64,0}, + [I(111,221)] = {X32,0x3FFFFFE3}, + [I(112,221)] = {64,0}, + [I(113,221)] = {64,0}, + [I(114,221)] = {64,0}, + [I(115,221)] = {X32,0x47FFFFE3}, + [I(116,221)] = {X32,0x4FFFFFE3}, + [I(117,221)] = {64,0}, + [I(118,221)] = {64,0}, + [I(119,221)] = {64,0}, + [I(120,221)] = {64,0}, + [I(121,221)] = {64,0}, + [I(122,221)] = {64,0}, + [I(123,221)] = {64,0}, + [I(124,221)] = {64,0}, + [I(125,221)] = {64,0}, + [I(126,221)] = {64,0}, + [I(127,221)] = {64,0}, + [I(128,221)] = {64,0}, + [I(129,221)] = {64,0}, + [I(130,221)] = {64,0}, + [I(131,221)] = {64,0}, + [I(132,221)] = {64,0}, + [I(133,221)] = {64,0}, + [I(134,221)] = {64,0}, + [I(135,221)] = {64,0}, + [I(136,221)] = {64,0}, + [I(137,221)] = {64,0}, + [I(138,221)] = {64,0}, + [I(139,221)] = {64,0}, + [I(140,221)] = {64,0}, + [I(141,221)] = {64,0}, + [I(142,221)] = {64,0}, + [I(143,221)] = {64,0}, + [I(144,221)] = {64,0}, + [I(145,221)] = {64,0}, + [I(146,221)] = {64,0}, + [I(147,221)] = {64,0}, + [I(148,221)] = {64,0}, + [I(149,221)] = {64,0}, + [I(150,221)] = {64,0}, + [I(151,221)] = {64,0}, + [I(152,221)] = {64,0}, + [I(153,221)] = {64,0}, + [I(154,221)] = {64,0}, + [I(155,221)] = {64,0}, + [I(156,221)] = {64,0}, + [I(157,221)] = {64,0}, + [I(158,221)] = {64,0}, + [I(159,221)] = {64,0}, + [I(160,221)] = {64,0}, + [I(161,221)] = {64,0}, + [I(162,221)] = {64,0}, + [I(163,221)] = {64,0}, + [I(164,221)] = {64,0}, + [I(165,221)] = {64,0}, + [I(166,221)] = {64,0}, + [I(167,221)] = {64,0}, + [I(168,221)] = {64,0}, + [I(169,221)] = {64,0}, + [I(170,221)] = {64,0}, + [I(171,221)] = {64,0}, + [I(172,221)] = {64,0}, + [I(173,221)] = {64,0}, + [I(174,221)] = {64,0}, + [I(175,221)] = {64,0}, + [I(176,221)] = {64,0}, + [I(177,221)] = {64,0}, + [I(178,221)] = {64,0}, + [I(179,221)] = {64,0}, + [I(180,221)] = {64,0}, + [I(181,221)] = {64,0}, + [I(182,221)] = {64,0}, + [I(183,221)] = {64,0}, + [I(184,221)] = {64,0}, + [I(185,221)] = {64,0}, + [I(186,221)] = {64,0}, + [I(187,221)] = {64,0}, + [I(188,221)] = {64,0}, + [I(189,221)] = {64,0}, + [I(190,221)] = {64,0}, + [I(191,221)] = {64,0}, + [I(192,221)] = {64,0}, + [I(193,221)] = {64,0}, + [I(194,221)] = {64,0}, + [I(195,221)] = {64,0}, + [I(196,221)] = {64,0}, + [I(197,221)] = {64,0}, + [I(198,221)] = {64,0}, + [I(199,221)] = {64,0}, + [I(200,221)] = {64,0}, + [I(201,221)] = {64,0}, + [I(202,221)] = {64,0}, + [I(203,221)] = {64,0}, + [I(204,221)] = {64,0}, + [I(205,221)] = {64,0}, + [I(206,221)] = {64,0}, + [I(207,221)] = {64,0}, + [I(208,221)] = {64,0}, + [I(209,221)] = {64,0}, + [I(210,221)] = {64,0}, + [I(211,221)] = {64,0}, + [I(212,221)] = {64,0}, + [I(213,221)] = {64,0}, + [I(214,221)] = {64,0}, + [I(215,221)] = {64,0}, + [I(216,221)] = {64,0}, + [I(217,221)] = {64,0}, + [I(218,221)] = {64,0}, + [I(219,221)] = {64,0}, + [I(220,221)] = {64,0}, + [I(221,221)] = {64,0}, + [I(222,221)] = {64,0}, + [I(223,221)] = {64,0}, + [I(224,221)] = {64,0}, + [I(225,221)] = {64,0}, + [I(226,221)] = {64,0}, + [I(227,221)] = {64,0}, + [I(228,221)] = {64,0}, + [I(229,221)] = {64,0}, + [I(230,221)] = {64,0}, + [I(231,221)] = {64,0}, + [I(232,221)] = {64,0}, + [I(233,221)] = {64,0}, + [I(234,221)] = {64,0}, + [I(235,221)] = {64,0}, + [I(236,221)] = {64,0}, + [I(237,221)] = {64,0}, + [I(238,221)] = {64,0}, + [I(239,221)] = {64,0}, + [I(240,221)] = {64,0}, + [I(241,221)] = {64,0}, + [I(242,221)] = {64,0}, + [I(243,221)] = {64,0}, + [I(244,221)] = {64,0}, + [I(245,221)] = {64,0}, + [I(246,221)] = {64,0}, + [I(247,221)] = {64,0}, + [I(248,221)] = {64,0}, + [I(249,221)] = {64,0}, + [I(250,221)] = {64,0}, + [I(251,221)] = {64,0}, + [I(252,221)] = {64,0}, + [I(253,221)] = {64,0}, + [I(254,221)] = {64,0}, + [I(255,221)] = {64,0}, + [I(0,222)] = {64,0}, + [I(1,222)] = {64,0}, + [I(2,222)] = {64,0}, + [I(3,222)] = {64,0}, + [I(4,222)] = {64,0}, + [I(5,222)] = {64,0}, + [I(6,222)] = {64,0}, + [I(7,222)] = {64,0}, + [I(8,222)] = {64,0}, + [I(9,222)] = {64,0}, + [I(10,222)] = {64,0}, + [I(11,222)] = {64,0}, + [I(12,222)] = {64,0}, + [I(13,222)] = {64,0}, + [I(14,222)] = {64,0}, + [I(15,222)] = {64,0}, + [I(16,222)] = {64,0}, + [I(17,222)] = {64,0}, + [I(18,222)] = {64,0}, + [I(19,222)] = {64,0}, + [I(20,222)] = {64,0}, + [I(21,222)] = {64,0}, + [I(22,222)] = {64,0}, + [I(23,222)] = {64,0}, + [I(24,222)] = {64,0}, + [I(25,222)] = {64,0}, + [I(26,222)] = {64,0}, + [I(27,222)] = {64,0}, + [I(28,222)] = {64,0}, + [I(29,222)] = {64,0}, + [I(30,222)] = {64,0}, + [I(31,222)] = {64,0}, + [I(32,222)] = {64,0}, + [I(33,222)] = {64,0}, + [I(34,222)] = {64,0}, + [I(35,222)] = {64,0}, + [I(36,222)] = {64,0}, + [I(37,222)] = {64,0}, + [I(38,222)] = {64,0}, + [I(39,222)] = {64,0}, + [I(40,222)] = {64,0}, + [I(41,222)] = {64,0}, + [I(42,222)] = {64,0}, + [I(43,222)] = {64,0}, + [I(44,222)] = {64,0}, + [I(45,222)] = {64,0}, + [I(46,222)] = {64,0}, + [I(47,222)] = {64,0}, + [I(48,222)] = {X32,0x7FFFFE4}, + [I(49,222)] = {X32,0xFFFFFE4}, + [I(50,222)] = {X32,0x17FFFFE4}, + [I(51,222)] = {64,0}, + [I(52,222)] = {64,0}, + [I(53,222)] = {64,0}, + [I(54,222)] = {64,0}, + [I(55,222)] = {64,0}, + [I(56,222)] = {64,0}, + [I(57,222)] = {64,0}, + [I(58,222)] = {64,0}, + [I(59,222)] = {64,0}, + [I(60,222)] = {64,0}, + [I(61,222)] = {64,0}, + [I(62,222)] = {64,0}, + [I(63,222)] = {64,0}, + [I(64,222)] = {64,0}, + [I(65,222)] = {64,0}, + [I(66,222)] = {64,0}, + [I(67,222)] = {64,0}, + [I(68,222)] = {64,0}, + [I(69,222)] = {64,0}, + [I(70,222)] = {64,0}, + [I(71,222)] = {64,0}, + [I(72,222)] = {64,0}, + [I(73,222)] = {64,0}, + [I(74,222)] = {64,0}, + [I(75,222)] = {64,0}, + [I(76,222)] = {64,0}, + [I(77,222)] = {64,0}, + [I(78,222)] = {64,0}, + [I(79,222)] = {64,0}, + [I(80,222)] = {64,0}, + [I(81,222)] = {64,0}, + [I(82,222)] = {64,0}, + [I(83,222)] = {64,0}, + [I(84,222)] = {64,0}, + [I(85,222)] = {64,0}, + [I(86,222)] = {64,0}, + [I(87,222)] = {64,0}, + [I(88,222)] = {64,0}, + [I(89,222)] = {64,0}, + [I(90,222)] = {64,0}, + [I(91,222)] = {64,0}, + [I(92,222)] = {64,0}, + [I(93,222)] = {64,0}, + [I(94,222)] = {64,0}, + [I(95,222)] = {64,0}, + [I(96,222)] = {64,0}, + [I(97,222)] = {X32,0x1FFFFFE4}, + [I(98,222)] = {64,0}, + [I(99,222)] = {X32,0x27FFFFE4}, + [I(100,222)] = {64,0}, + [I(101,222)] = {X32,0x2FFFFFE4}, + [I(102,222)] = {64,0}, + [I(103,222)] = {64,0}, + [I(104,222)] = {64,0}, + [I(105,222)] = {X32,0x37FFFFE4}, + [I(106,222)] = {64,0}, + [I(107,222)] = {64,0}, + [I(108,222)] = {64,0}, + [I(109,222)] = {64,0}, + [I(110,222)] = {64,0}, + [I(111,222)] = {X32,0x3FFFFFE4}, + [I(112,222)] = {64,0}, + [I(113,222)] = {64,0}, + [I(114,222)] = {64,0}, + [I(115,222)] = {X32,0x47FFFFE4}, + [I(116,222)] = {X32,0x4FFFFFE4}, + [I(117,222)] = {64,0}, + [I(118,222)] = {64,0}, + [I(119,222)] = {64,0}, + [I(120,222)] = {64,0}, + [I(121,222)] = {64,0}, + [I(122,222)] = {64,0}, + [I(123,222)] = {64,0}, + [I(124,222)] = {64,0}, + [I(125,222)] = {64,0}, + [I(126,222)] = {64,0}, + [I(127,222)] = {64,0}, + [I(128,222)] = {64,0}, + [I(129,222)] = {64,0}, + [I(130,222)] = {64,0}, + [I(131,222)] = {64,0}, + [I(132,222)] = {64,0}, + [I(133,222)] = {64,0}, + [I(134,222)] = {64,0}, + [I(135,222)] = {64,0}, + [I(136,222)] = {64,0}, + [I(137,222)] = {64,0}, + [I(138,222)] = {64,0}, + [I(139,222)] = {64,0}, + [I(140,222)] = {64,0}, + [I(141,222)] = {64,0}, + [I(142,222)] = {64,0}, + [I(143,222)] = {64,0}, + [I(144,222)] = {64,0}, + [I(145,222)] = {64,0}, + [I(146,222)] = {64,0}, + [I(147,222)] = {64,0}, + [I(148,222)] = {64,0}, + [I(149,222)] = {64,0}, + [I(150,222)] = {64,0}, + [I(151,222)] = {64,0}, + [I(152,222)] = {64,0}, + [I(153,222)] = {64,0}, + [I(154,222)] = {64,0}, + [I(155,222)] = {64,0}, + [I(156,222)] = {64,0}, + [I(157,222)] = {64,0}, + [I(158,222)] = {64,0}, + [I(159,222)] = {64,0}, + [I(160,222)] = {64,0}, + [I(161,222)] = {64,0}, + [I(162,222)] = {64,0}, + [I(163,222)] = {64,0}, + [I(164,222)] = {64,0}, + [I(165,222)] = {64,0}, + [I(166,222)] = {64,0}, + [I(167,222)] = {64,0}, + [I(168,222)] = {64,0}, + [I(169,222)] = {64,0}, + [I(170,222)] = {64,0}, + [I(171,222)] = {64,0}, + [I(172,222)] = {64,0}, + [I(173,222)] = {64,0}, + [I(174,222)] = {64,0}, + [I(175,222)] = {64,0}, + [I(176,222)] = {64,0}, + [I(177,222)] = {64,0}, + [I(178,222)] = {64,0}, + [I(179,222)] = {64,0}, + [I(180,222)] = {64,0}, + [I(181,222)] = {64,0}, + [I(182,222)] = {64,0}, + [I(183,222)] = {64,0}, + [I(184,222)] = {64,0}, + [I(185,222)] = {64,0}, + [I(186,222)] = {64,0}, + [I(187,222)] = {64,0}, + [I(188,222)] = {64,0}, + [I(189,222)] = {64,0}, + [I(190,222)] = {64,0}, + [I(191,222)] = {64,0}, + [I(192,222)] = {64,0}, + [I(193,222)] = {64,0}, + [I(194,222)] = {64,0}, + [I(195,222)] = {64,0}, + [I(196,222)] = {64,0}, + [I(197,222)] = {64,0}, + [I(198,222)] = {64,0}, + [I(199,222)] = {64,0}, + [I(200,222)] = {64,0}, + [I(201,222)] = {64,0}, + [I(202,222)] = {64,0}, + [I(203,222)] = {64,0}, + [I(204,222)] = {64,0}, + [I(205,222)] = {64,0}, + [I(206,222)] = {64,0}, + [I(207,222)] = {64,0}, + [I(208,222)] = {64,0}, + [I(209,222)] = {64,0}, + [I(210,222)] = {64,0}, + [I(211,222)] = {64,0}, + [I(212,222)] = {64,0}, + [I(213,222)] = {64,0}, + [I(214,222)] = {64,0}, + [I(215,222)] = {64,0}, + [I(216,222)] = {64,0}, + [I(217,222)] = {64,0}, + [I(218,222)] = {64,0}, + [I(219,222)] = {64,0}, + [I(220,222)] = {64,0}, + [I(221,222)] = {64,0}, + [I(222,222)] = {64,0}, + [I(223,222)] = {64,0}, + [I(224,222)] = {64,0}, + [I(225,222)] = {64,0}, + [I(226,222)] = {64,0}, + [I(227,222)] = {64,0}, + [I(228,222)] = {64,0}, + [I(229,222)] = {64,0}, + [I(230,222)] = {64,0}, + [I(231,222)] = {64,0}, + [I(232,222)] = {64,0}, + [I(233,222)] = {64,0}, + [I(234,222)] = {64,0}, + [I(235,222)] = {64,0}, + [I(236,222)] = {64,0}, + [I(237,222)] = {64,0}, + [I(238,222)] = {64,0}, + [I(239,222)] = {64,0}, + [I(240,222)] = {64,0}, + [I(241,222)] = {64,0}, + [I(242,222)] = {64,0}, + [I(243,222)] = {64,0}, + [I(244,222)] = {64,0}, + [I(245,222)] = {64,0}, + [I(246,222)] = {64,0}, + [I(247,222)] = {64,0}, + [I(248,222)] = {64,0}, + [I(249,222)] = {64,0}, + [I(250,222)] = {64,0}, + [I(251,222)] = {64,0}, + [I(252,222)] = {64,0}, + [I(253,222)] = {64,0}, + [I(254,222)] = {64,0}, + [I(255,222)] = {64,0}, + [I(0,223)] = {64,0}, + [I(1,223)] = {64,0}, + [I(2,223)] = {64,0}, + [I(3,223)] = {64,0}, + [I(4,223)] = {64,0}, + [I(5,223)] = {64,0}, + [I(6,223)] = {64,0}, + [I(7,223)] = {64,0}, + [I(8,223)] = {64,0}, + [I(9,223)] = {64,0}, + [I(10,223)] = {64,0}, + [I(11,223)] = {64,0}, + [I(12,223)] = {64,0}, + [I(13,223)] = {64,0}, + [I(14,223)] = {64,0}, + [I(15,223)] = {64,0}, + [I(16,223)] = {64,0}, + [I(17,223)] = {64,0}, + [I(18,223)] = {64,0}, + [I(19,223)] = {64,0}, + [I(20,223)] = {64,0}, + [I(21,223)] = {64,0}, + [I(22,223)] = {64,0}, + [I(23,223)] = {64,0}, + [I(24,223)] = {64,0}, + [I(25,223)] = {64,0}, + [I(26,223)] = {64,0}, + [I(27,223)] = {64,0}, + [I(28,223)] = {64,0}, + [I(29,223)] = {64,0}, + [I(30,223)] = {64,0}, + [I(31,223)] = {64,0}, + [I(32,223)] = {64,0}, + [I(33,223)] = {64,0}, + [I(34,223)] = {64,0}, + [I(35,223)] = {64,0}, + [I(36,223)] = {64,0}, + [I(37,223)] = {64,0}, + [I(38,223)] = {64,0}, + [I(39,223)] = {64,0}, + [I(40,223)] = {64,0}, + [I(41,223)] = {64,0}, + [I(42,223)] = {64,0}, + [I(43,223)] = {64,0}, + [I(44,223)] = {64,0}, + [I(45,223)] = {64,0}, + [I(46,223)] = {64,0}, + [I(47,223)] = {64,0}, + [I(48,223)] = {X32,0x7FFFFE5}, + [I(49,223)] = {X32,0xFFFFFE5}, + [I(50,223)] = {X32,0x17FFFFE5}, + [I(51,223)] = {64,0}, + [I(52,223)] = {64,0}, + [I(53,223)] = {64,0}, + [I(54,223)] = {64,0}, + [I(55,223)] = {64,0}, + [I(56,223)] = {64,0}, + [I(57,223)] = {64,0}, + [I(58,223)] = {64,0}, + [I(59,223)] = {64,0}, + [I(60,223)] = {64,0}, + [I(61,223)] = {64,0}, + [I(62,223)] = {64,0}, + [I(63,223)] = {64,0}, + [I(64,223)] = {64,0}, + [I(65,223)] = {64,0}, + [I(66,223)] = {64,0}, + [I(67,223)] = {64,0}, + [I(68,223)] = {64,0}, + [I(69,223)] = {64,0}, + [I(70,223)] = {64,0}, + [I(71,223)] = {64,0}, + [I(72,223)] = {64,0}, + [I(73,223)] = {64,0}, + [I(74,223)] = {64,0}, + [I(75,223)] = {64,0}, + [I(76,223)] = {64,0}, + [I(77,223)] = {64,0}, + [I(78,223)] = {64,0}, + [I(79,223)] = {64,0}, + [I(80,223)] = {64,0}, + [I(81,223)] = {64,0}, + [I(82,223)] = {64,0}, + [I(83,223)] = {64,0}, + [I(84,223)] = {64,0}, + [I(85,223)] = {64,0}, + [I(86,223)] = {64,0}, + [I(87,223)] = {64,0}, + [I(88,223)] = {64,0}, + [I(89,223)] = {64,0}, + [I(90,223)] = {64,0}, + [I(91,223)] = {64,0}, + [I(92,223)] = {64,0}, + [I(93,223)] = {64,0}, + [I(94,223)] = {64,0}, + [I(95,223)] = {64,0}, + [I(96,223)] = {64,0}, + [I(97,223)] = {X32,0x1FFFFFE5}, + [I(98,223)] = {64,0}, + [I(99,223)] = {X32,0x27FFFFE5}, + [I(100,223)] = {64,0}, + [I(101,223)] = {X32,0x2FFFFFE5}, + [I(102,223)] = {64,0}, + [I(103,223)] = {64,0}, + [I(104,223)] = {64,0}, + [I(105,223)] = {X32,0x37FFFFE5}, + [I(106,223)] = {64,0}, + [I(107,223)] = {64,0}, + [I(108,223)] = {64,0}, + [I(109,223)] = {64,0}, + [I(110,223)] = {64,0}, + [I(111,223)] = {X32,0x3FFFFFE5}, + [I(112,223)] = {64,0}, + [I(113,223)] = {64,0}, + [I(114,223)] = {64,0}, + [I(115,223)] = {X32,0x47FFFFE5}, + [I(116,223)] = {X32,0x4FFFFFE5}, + [I(117,223)] = {64,0}, + [I(118,223)] = {64,0}, + [I(119,223)] = {64,0}, + [I(120,223)] = {64,0}, + [I(121,223)] = {64,0}, + [I(122,223)] = {64,0}, + [I(123,223)] = {64,0}, + [I(124,223)] = {64,0}, + [I(125,223)] = {64,0}, + [I(126,223)] = {64,0}, + [I(127,223)] = {64,0}, + [I(128,223)] = {64,0}, + [I(129,223)] = {64,0}, + [I(130,223)] = {64,0}, + [I(131,223)] = {64,0}, + [I(132,223)] = {64,0}, + [I(133,223)] = {64,0}, + [I(134,223)] = {64,0}, + [I(135,223)] = {64,0}, + [I(136,223)] = {64,0}, + [I(137,223)] = {64,0}, + [I(138,223)] = {64,0}, + [I(139,223)] = {64,0}, + [I(140,223)] = {64,0}, + [I(141,223)] = {64,0}, + [I(142,223)] = {64,0}, + [I(143,223)] = {64,0}, + [I(144,223)] = {64,0}, + [I(145,223)] = {64,0}, + [I(146,223)] = {64,0}, + [I(147,223)] = {64,0}, + [I(148,223)] = {64,0}, + [I(149,223)] = {64,0}, + [I(150,223)] = {64,0}, + [I(151,223)] = {64,0}, + [I(152,223)] = {64,0}, + [I(153,223)] = {64,0}, + [I(154,223)] = {64,0}, + [I(155,223)] = {64,0}, + [I(156,223)] = {64,0}, + [I(157,223)] = {64,0}, + [I(158,223)] = {64,0}, + [I(159,223)] = {64,0}, + [I(160,223)] = {64,0}, + [I(161,223)] = {64,0}, + [I(162,223)] = {64,0}, + [I(163,223)] = {64,0}, + [I(164,223)] = {64,0}, + [I(165,223)] = {64,0}, + [I(166,223)] = {64,0}, + [I(167,223)] = {64,0}, + [I(168,223)] = {64,0}, + [I(169,223)] = {64,0}, + [I(170,223)] = {64,0}, + [I(171,223)] = {64,0}, + [I(172,223)] = {64,0}, + [I(173,223)] = {64,0}, + [I(174,223)] = {64,0}, + [I(175,223)] = {64,0}, + [I(176,223)] = {64,0}, + [I(177,223)] = {64,0}, + [I(178,223)] = {64,0}, + [I(179,223)] = {64,0}, + [I(180,223)] = {64,0}, + [I(181,223)] = {64,0}, + [I(182,223)] = {64,0}, + [I(183,223)] = {64,0}, + [I(184,223)] = {64,0}, + [I(185,223)] = {64,0}, + [I(186,223)] = {64,0}, + [I(187,223)] = {64,0}, + [I(188,223)] = {64,0}, + [I(189,223)] = {64,0}, + [I(190,223)] = {64,0}, + [I(191,223)] = {64,0}, + [I(192,223)] = {64,0}, + [I(193,223)] = {64,0}, + [I(194,223)] = {64,0}, + [I(195,223)] = {64,0}, + [I(196,223)] = {64,0}, + [I(197,223)] = {64,0}, + [I(198,223)] = {64,0}, + [I(199,223)] = {64,0}, + [I(200,223)] = {64,0}, + [I(201,223)] = {64,0}, + [I(202,223)] = {64,0}, + [I(203,223)] = {64,0}, + [I(204,223)] = {64,0}, + [I(205,223)] = {64,0}, + [I(206,223)] = {64,0}, + [I(207,223)] = {64,0}, + [I(208,223)] = {64,0}, + [I(209,223)] = {64,0}, + [I(210,223)] = {64,0}, + [I(211,223)] = {64,0}, + [I(212,223)] = {64,0}, + [I(213,223)] = {64,0}, + [I(214,223)] = {64,0}, + [I(215,223)] = {64,0}, + [I(216,223)] = {64,0}, + [I(217,223)] = {64,0}, + [I(218,223)] = {64,0}, + [I(219,223)] = {64,0}, + [I(220,223)] = {64,0}, + [I(221,223)] = {64,0}, + [I(222,223)] = {64,0}, + [I(223,223)] = {64,0}, + [I(224,223)] = {64,0}, + [I(225,223)] = {64,0}, + [I(226,223)] = {64,0}, + [I(227,223)] = {64,0}, + [I(228,223)] = {64,0}, + [I(229,223)] = {64,0}, + [I(230,223)] = {64,0}, + [I(231,223)] = {64,0}, + [I(232,223)] = {64,0}, + [I(233,223)] = {64,0}, + [I(234,223)] = {64,0}, + [I(235,223)] = {64,0}, + [I(236,223)] = {64,0}, + [I(237,223)] = {64,0}, + [I(238,223)] = {64,0}, + [I(239,223)] = {64,0}, + [I(240,223)] = {64,0}, + [I(241,223)] = {64,0}, + [I(242,223)] = {64,0}, + [I(243,223)] = {64,0}, + [I(244,223)] = {64,0}, + [I(245,223)] = {64,0}, + [I(246,223)] = {64,0}, + [I(247,223)] = {64,0}, + [I(248,223)] = {64,0}, + [I(249,223)] = {64,0}, + [I(250,223)] = {64,0}, + [I(251,223)] = {64,0}, + [I(252,223)] = {64,0}, + [I(253,223)] = {64,0}, + [I(254,223)] = {64,0}, + [I(255,223)] = {64,0}, + [I(0,224)] = {64,0}, + [I(1,224)] = {64,0}, + [I(2,224)] = {64,0}, + [I(3,224)] = {64,0}, + [I(4,224)] = {64,0}, + [I(5,224)] = {64,0}, + [I(6,224)] = {64,0}, + [I(7,224)] = {64,0}, + [I(8,224)] = {64,0}, + [I(9,224)] = {64,0}, + [I(10,224)] = {64,0}, + [I(11,224)] = {64,0}, + [I(12,224)] = {64,0}, + [I(13,224)] = {64,0}, + [I(14,224)] = {64,0}, + [I(15,224)] = {64,0}, + [I(16,224)] = {64,0}, + [I(17,224)] = {64,0}, + [I(18,224)] = {64,0}, + [I(19,224)] = {64,0}, + [I(20,224)] = {64,0}, + [I(21,224)] = {64,0}, + [I(22,224)] = {64,0}, + [I(23,224)] = {64,0}, + [I(24,224)] = {64,0}, + [I(25,224)] = {64,0}, + [I(26,224)] = {64,0}, + [I(27,224)] = {64,0}, + [I(28,224)] = {64,0}, + [I(29,224)] = {64,0}, + [I(30,224)] = {64,0}, + [I(31,224)] = {64,0}, + [I(32,224)] = {26,0x14FFFEC}, + [I(33,224)] = {30,0x3F8FFFEC}, + [I(34,224)] = {30,0x3F9FFFEC}, + [I(35,224)] = {X32,0xFFAFFFEC}, + [I(36,224)] = {64,0}, + [I(37,224)] = {26,0x15FFFEC}, + [I(38,224)] = {28,0xF8FFFEC}, + [I(39,224)] = {31,0x7FAFFFEC}, + [I(40,224)] = {30,0x3FAFFFEC}, + [I(41,224)] = {30,0x3FBFFFEC}, + [I(42,224)] = {28,0xF9FFFEC}, + [I(43,224)] = {31,0x7FBFFFEC}, + [I(44,224)] = {28,0xFAFFFEC}, + [I(45,224)] = {26,0x16FFFEC}, + [I(46,224)] = {26,0x17FFFEC}, + [I(47,224)] = {26,0x18FFFEC}, + [I(48,224)] = {25,0xFFFEC}, + [I(49,224)] = {25,0x1FFFEC}, + [I(50,224)] = {25,0x2FFFEC}, + [I(51,224)] = {26,0x19FFFEC}, + [I(52,224)] = {26,0x1AFFFEC}, + [I(53,224)] = {26,0x1BFFFEC}, + [I(54,224)] = {26,0x1CFFFEC}, + [I(55,224)] = {26,0x1DFFFEC}, + [I(56,224)] = {26,0x1EFFFEC}, + [I(57,224)] = {26,0x1FFFFEC}, + [I(58,224)] = {27,0x5CFFFEC}, + [I(59,224)] = {28,0xFBFFFEC}, + [I(60,224)] = {64,0}, + [I(61,224)] = {26,0x20FFFEC}, + [I(62,224)] = {X32,0xFFBFFFEC}, + [I(63,224)] = {30,0x3FCFFFEC}, + [I(64,224)] = {64,0}, + [I(65,224)] = {26,0x21FFFEC}, + [I(66,224)] = {27,0x5DFFFEC}, + [I(67,224)] = {27,0x5EFFFEC}, + [I(68,224)] = {27,0x5FFFFEC}, + [I(69,224)] = {27,0x60FFFEC}, + [I(70,224)] = {27,0x61FFFEC}, + [I(71,224)] = {27,0x62FFFEC}, + [I(72,224)] = {27,0x63FFFEC}, + [I(73,224)] = {27,0x64FFFEC}, + [I(74,224)] = {27,0x65FFFEC}, + [I(75,224)] = {27,0x66FFFEC}, + [I(76,224)] = {27,0x67FFFEC}, + [I(77,224)] = {27,0x68FFFEC}, + [I(78,224)] = {27,0x69FFFEC}, + [I(79,224)] = {27,0x6AFFFEC}, + [I(80,224)] = {27,0x6BFFFEC}, + [I(81,224)] = {27,0x6CFFFEC}, + [I(82,224)] = {27,0x6DFFFEC}, + [I(83,224)] = {27,0x6EFFFEC}, + [I(84,224)] = {27,0x6FFFFEC}, + [I(85,224)] = {27,0x70FFFEC}, + [I(86,224)] = {27,0x71FFFEC}, + [I(87,224)] = {27,0x72FFFEC}, + [I(88,224)] = {28,0xFCFFFEC}, + [I(89,224)] = {27,0x73FFFEC}, + [I(90,224)] = {28,0xFDFFFEC}, + [I(91,224)] = {64,0}, + [I(92,224)] = {64,0}, + [I(93,224)] = {64,0}, + [I(94,224)] = {64,0}, + [I(95,224)] = {26,0x22FFFEC}, + [I(96,224)] = {64,0}, + [I(97,224)] = {25,0x3FFFEC}, + [I(98,224)] = {26,0x23FFFEC}, + [I(99,224)] = {25,0x4FFFEC}, + [I(100,224)] = {26,0x24FFFEC}, + [I(101,224)] = {25,0x5FFFEC}, + [I(102,224)] = {26,0x25FFFEC}, + [I(103,224)] = {26,0x26FFFEC}, + [I(104,224)] = {26,0x27FFFEC}, + [I(105,224)] = {25,0x6FFFEC}, + [I(106,224)] = {27,0x74FFFEC}, + [I(107,224)] = {27,0x75FFFEC}, + [I(108,224)] = {26,0x28FFFEC}, + [I(109,224)] = {26,0x29FFFEC}, + [I(110,224)] = {26,0x2AFFFEC}, + [I(111,224)] = {25,0x7FFFEC}, + [I(112,224)] = {26,0x2BFFFEC}, + [I(113,224)] = {27,0x76FFFEC}, + [I(114,224)] = {26,0x2CFFFEC}, + [I(115,224)] = {25,0x8FFFEC}, + [I(116,224)] = {25,0x9FFFEC}, + [I(117,224)] = {26,0x2DFFFEC}, + [I(118,224)] = {27,0x77FFFEC}, + [I(119,224)] = {27,0x78FFFEC}, + [I(120,224)] = {27,0x79FFFEC}, + [I(121,224)] = {27,0x7AFFFEC}, + [I(122,224)] = {27,0x7BFFFEC}, + [I(123,224)] = {64,0}, + [I(124,224)] = {31,0x7FCFFFEC}, + [I(125,224)] = {64,0}, + [I(126,224)] = {64,0}, + [I(127,224)] = {64,0}, + [I(128,224)] = {64,0}, + [I(129,224)] = {64,0}, + [I(130,224)] = {64,0}, + [I(131,224)] = {64,0}, + [I(132,224)] = {64,0}, + [I(133,224)] = {64,0}, + [I(134,224)] = {64,0}, + [I(135,224)] = {64,0}, + [I(136,224)] = {64,0}, + [I(137,224)] = {64,0}, + [I(138,224)] = {64,0}, + [I(139,224)] = {64,0}, + [I(140,224)] = {64,0}, + [I(141,224)] = {64,0}, + [I(142,224)] = {64,0}, + [I(143,224)] = {64,0}, + [I(144,224)] = {64,0}, + [I(145,224)] = {64,0}, + [I(146,224)] = {64,0}, + [I(147,224)] = {64,0}, + [I(148,224)] = {64,0}, + [I(149,224)] = {64,0}, + [I(150,224)] = {64,0}, + [I(151,224)] = {64,0}, + [I(152,224)] = {64,0}, + [I(153,224)] = {64,0}, + [I(154,224)] = {64,0}, + [I(155,224)] = {64,0}, + [I(156,224)] = {64,0}, + [I(157,224)] = {64,0}, + [I(158,224)] = {64,0}, + [I(159,224)] = {64,0}, + [I(160,224)] = {64,0}, + [I(161,224)] = {64,0}, + [I(162,224)] = {64,0}, + [I(163,224)] = {64,0}, + [I(164,224)] = {64,0}, + [I(165,224)] = {64,0}, + [I(166,224)] = {64,0}, + [I(167,224)] = {64,0}, + [I(168,224)] = {64,0}, + [I(169,224)] = {64,0}, + [I(170,224)] = {64,0}, + [I(171,224)] = {64,0}, + [I(172,224)] = {64,0}, + [I(173,224)] = {64,0}, + [I(174,224)] = {64,0}, + [I(175,224)] = {64,0}, + [I(176,224)] = {64,0}, + [I(177,224)] = {64,0}, + [I(178,224)] = {64,0}, + [I(179,224)] = {64,0}, + [I(180,224)] = {64,0}, + [I(181,224)] = {64,0}, + [I(182,224)] = {64,0}, + [I(183,224)] = {64,0}, + [I(184,224)] = {64,0}, + [I(185,224)] = {64,0}, + [I(186,224)] = {64,0}, + [I(187,224)] = {64,0}, + [I(188,224)] = {64,0}, + [I(189,224)] = {64,0}, + [I(190,224)] = {64,0}, + [I(191,224)] = {64,0}, + [I(192,224)] = {64,0}, + [I(193,224)] = {64,0}, + [I(194,224)] = {64,0}, + [I(195,224)] = {64,0}, + [I(196,224)] = {64,0}, + [I(197,224)] = {64,0}, + [I(198,224)] = {64,0}, + [I(199,224)] = {64,0}, + [I(200,224)] = {64,0}, + [I(201,224)] = {64,0}, + [I(202,224)] = {64,0}, + [I(203,224)] = {64,0}, + [I(204,224)] = {64,0}, + [I(205,224)] = {64,0}, + [I(206,224)] = {64,0}, + [I(207,224)] = {64,0}, + [I(208,224)] = {64,0}, + [I(209,224)] = {64,0}, + [I(210,224)] = {64,0}, + [I(211,224)] = {64,0}, + [I(212,224)] = {64,0}, + [I(213,224)] = {64,0}, + [I(214,224)] = {64,0}, + [I(215,224)] = {64,0}, + [I(216,224)] = {64,0}, + [I(217,224)] = {64,0}, + [I(218,224)] = {64,0}, + [I(219,224)] = {64,0}, + [I(220,224)] = {64,0}, + [I(221,224)] = {64,0}, + [I(222,224)] = {64,0}, + [I(223,224)] = {64,0}, + [I(224,224)] = {64,0}, + [I(225,224)] = {64,0}, + [I(226,224)] = {64,0}, + [I(227,224)] = {64,0}, + [I(228,224)] = {64,0}, + [I(229,224)] = {64,0}, + [I(230,224)] = {64,0}, + [I(231,224)] = {64,0}, + [I(232,224)] = {64,0}, + [I(233,224)] = {64,0}, + [I(234,224)] = {64,0}, + [I(235,224)] = {64,0}, + [I(236,224)] = {64,0}, + [I(237,224)] = {64,0}, + [I(238,224)] = {64,0}, + [I(239,224)] = {64,0}, + [I(240,224)] = {64,0}, + [I(241,224)] = {64,0}, + [I(242,224)] = {64,0}, + [I(243,224)] = {64,0}, + [I(244,224)] = {64,0}, + [I(245,224)] = {64,0}, + [I(246,224)] = {64,0}, + [I(247,224)] = {64,0}, + [I(248,224)] = {64,0}, + [I(249,224)] = {64,0}, + [I(250,224)] = {64,0}, + [I(251,224)] = {64,0}, + [I(252,224)] = {64,0}, + [I(253,224)] = {64,0}, + [I(254,224)] = {64,0}, + [I(255,224)] = {64,0}, + [I(0,225)] = {64,0}, + [I(1,225)] = {64,0}, + [I(2,225)] = {64,0}, + [I(3,225)] = {64,0}, + [I(4,225)] = {64,0}, + [I(5,225)] = {64,0}, + [I(6,225)] = {64,0}, + [I(7,225)] = {64,0}, + [I(8,225)] = {64,0}, + [I(9,225)] = {64,0}, + [I(10,225)] = {64,0}, + [I(11,225)] = {64,0}, + [I(12,225)] = {64,0}, + [I(13,225)] = {64,0}, + [I(14,225)] = {64,0}, + [I(15,225)] = {64,0}, + [I(16,225)] = {64,0}, + [I(17,225)] = {64,0}, + [I(18,225)] = {64,0}, + [I(19,225)] = {64,0}, + [I(20,225)] = {64,0}, + [I(21,225)] = {64,0}, + [I(22,225)] = {64,0}, + [I(23,225)] = {64,0}, + [I(24,225)] = {64,0}, + [I(25,225)] = {64,0}, + [I(26,225)] = {64,0}, + [I(27,225)] = {64,0}, + [I(28,225)] = {64,0}, + [I(29,225)] = {64,0}, + [I(30,225)] = {64,0}, + [I(31,225)] = {64,0}, + [I(32,225)] = {30,0x14FFFFF3}, + [I(33,225)] = {64,0}, + [I(34,225)] = {64,0}, + [I(35,225)] = {64,0}, + [I(36,225)] = {64,0}, + [I(37,225)] = {30,0x15FFFFF3}, + [I(38,225)] = {X32,0xF8FFFFF3}, + [I(39,225)] = {64,0}, + [I(40,225)] = {64,0}, + [I(41,225)] = {64,0}, + [I(42,225)] = {X32,0xF9FFFFF3}, + [I(43,225)] = {64,0}, + [I(44,225)] = {X32,0xFAFFFFF3}, + [I(45,225)] = {30,0x16FFFFF3}, + [I(46,225)] = {30,0x17FFFFF3}, + [I(47,225)] = {30,0x18FFFFF3}, + [I(48,225)] = {29,0xFFFFF3}, + [I(49,225)] = {29,0x1FFFFF3}, + [I(50,225)] = {29,0x2FFFFF3}, + [I(51,225)] = {30,0x19FFFFF3}, + [I(52,225)] = {30,0x1AFFFFF3}, + [I(53,225)] = {30,0x1BFFFFF3}, + [I(54,225)] = {30,0x1CFFFFF3}, + [I(55,225)] = {30,0x1DFFFFF3}, + [I(56,225)] = {30,0x1EFFFFF3}, + [I(57,225)] = {30,0x1FFFFFF3}, + [I(58,225)] = {31,0x5CFFFFF3}, + [I(59,225)] = {X32,0xFBFFFFF3}, + [I(60,225)] = {64,0}, + [I(61,225)] = {30,0x20FFFFF3}, + [I(62,225)] = {64,0}, + [I(63,225)] = {64,0}, + [I(64,225)] = {64,0}, + [I(65,225)] = {30,0x21FFFFF3}, + [I(66,225)] = {31,0x5DFFFFF3}, + [I(67,225)] = {31,0x5EFFFFF3}, + [I(68,225)] = {31,0x5FFFFFF3}, + [I(69,225)] = {31,0x60FFFFF3}, + [I(70,225)] = {31,0x61FFFFF3}, + [I(71,225)] = {31,0x62FFFFF3}, + [I(72,225)] = {31,0x63FFFFF3}, + [I(73,225)] = {31,0x64FFFFF3}, + [I(74,225)] = {31,0x65FFFFF3}, + [I(75,225)] = {31,0x66FFFFF3}, + [I(76,225)] = {31,0x67FFFFF3}, + [I(77,225)] = {31,0x68FFFFF3}, + [I(78,225)] = {31,0x69FFFFF3}, + [I(79,225)] = {31,0x6AFFFFF3}, + [I(80,225)] = {31,0x6BFFFFF3}, + [I(81,225)] = {31,0x6CFFFFF3}, + [I(82,225)] = {31,0x6DFFFFF3}, + [I(83,225)] = {31,0x6EFFFFF3}, + [I(84,225)] = {31,0x6FFFFFF3}, + [I(85,225)] = {31,0x70FFFFF3}, + [I(86,225)] = {31,0x71FFFFF3}, + [I(87,225)] = {31,0x72FFFFF3}, + [I(88,225)] = {X32,0xFCFFFFF3}, + [I(89,225)] = {31,0x73FFFFF3}, + [I(90,225)] = {X32,0xFDFFFFF3}, + [I(91,225)] = {64,0}, + [I(92,225)] = {64,0}, + [I(93,225)] = {64,0}, + [I(94,225)] = {64,0}, + [I(95,225)] = {30,0x22FFFFF3}, + [I(96,225)] = {64,0}, + [I(97,225)] = {29,0x3FFFFF3}, + [I(98,225)] = {30,0x23FFFFF3}, + [I(99,225)] = {29,0x4FFFFF3}, + [I(100,225)] = {30,0x24FFFFF3}, + [I(101,225)] = {29,0x5FFFFF3}, + [I(102,225)] = {30,0x25FFFFF3}, + [I(103,225)] = {30,0x26FFFFF3}, + [I(104,225)] = {30,0x27FFFFF3}, + [I(105,225)] = {29,0x6FFFFF3}, + [I(106,225)] = {31,0x74FFFFF3}, + [I(107,225)] = {31,0x75FFFFF3}, + [I(108,225)] = {30,0x28FFFFF3}, + [I(109,225)] = {30,0x29FFFFF3}, + [I(110,225)] = {30,0x2AFFFFF3}, + [I(111,225)] = {29,0x7FFFFF3}, + [I(112,225)] = {30,0x2BFFFFF3}, + [I(113,225)] = {31,0x76FFFFF3}, + [I(114,225)] = {30,0x2CFFFFF3}, + [I(115,225)] = {29,0x8FFFFF3}, + [I(116,225)] = {29,0x9FFFFF3}, + [I(117,225)] = {30,0x2DFFFFF3}, + [I(118,225)] = {31,0x77FFFFF3}, + [I(119,225)] = {31,0x78FFFFF3}, + [I(120,225)] = {31,0x79FFFFF3}, + [I(121,225)] = {31,0x7AFFFFF3}, + [I(122,225)] = {31,0x7BFFFFF3}, + [I(123,225)] = {64,0}, + [I(124,225)] = {64,0}, + [I(125,225)] = {64,0}, + [I(126,225)] = {64,0}, + [I(127,225)] = {64,0}, + [I(128,225)] = {64,0}, + [I(129,225)] = {64,0}, + [I(130,225)] = {64,0}, + [I(131,225)] = {64,0}, + [I(132,225)] = {64,0}, + [I(133,225)] = {64,0}, + [I(134,225)] = {64,0}, + [I(135,225)] = {64,0}, + [I(136,225)] = {64,0}, + [I(137,225)] = {64,0}, + [I(138,225)] = {64,0}, + [I(139,225)] = {64,0}, + [I(140,225)] = {64,0}, + [I(141,225)] = {64,0}, + [I(142,225)] = {64,0}, + [I(143,225)] = {64,0}, + [I(144,225)] = {64,0}, + [I(145,225)] = {64,0}, + [I(146,225)] = {64,0}, + [I(147,225)] = {64,0}, + [I(148,225)] = {64,0}, + [I(149,225)] = {64,0}, + [I(150,225)] = {64,0}, + [I(151,225)] = {64,0}, + [I(152,225)] = {64,0}, + [I(153,225)] = {64,0}, + [I(154,225)] = {64,0}, + [I(155,225)] = {64,0}, + [I(156,225)] = {64,0}, + [I(157,225)] = {64,0}, + [I(158,225)] = {64,0}, + [I(159,225)] = {64,0}, + [I(160,225)] = {64,0}, + [I(161,225)] = {64,0}, + [I(162,225)] = {64,0}, + [I(163,225)] = {64,0}, + [I(164,225)] = {64,0}, + [I(165,225)] = {64,0}, + [I(166,225)] = {64,0}, + [I(167,225)] = {64,0}, + [I(168,225)] = {64,0}, + [I(169,225)] = {64,0}, + [I(170,225)] = {64,0}, + [I(171,225)] = {64,0}, + [I(172,225)] = {64,0}, + [I(173,225)] = {64,0}, + [I(174,225)] = {64,0}, + [I(175,225)] = {64,0}, + [I(176,225)] = {64,0}, + [I(177,225)] = {64,0}, + [I(178,225)] = {64,0}, + [I(179,225)] = {64,0}, + [I(180,225)] = {64,0}, + [I(181,225)] = {64,0}, + [I(182,225)] = {64,0}, + [I(183,225)] = {64,0}, + [I(184,225)] = {64,0}, + [I(185,225)] = {64,0}, + [I(186,225)] = {64,0}, + [I(187,225)] = {64,0}, + [I(188,225)] = {64,0}, + [I(189,225)] = {64,0}, + [I(190,225)] = {64,0}, + [I(191,225)] = {64,0}, + [I(192,225)] = {64,0}, + [I(193,225)] = {64,0}, + [I(194,225)] = {64,0}, + [I(195,225)] = {64,0}, + [I(196,225)] = {64,0}, + [I(197,225)] = {64,0}, + [I(198,225)] = {64,0}, + [I(199,225)] = {64,0}, + [I(200,225)] = {64,0}, + [I(201,225)] = {64,0}, + [I(202,225)] = {64,0}, + [I(203,225)] = {64,0}, + [I(204,225)] = {64,0}, + [I(205,225)] = {64,0}, + [I(206,225)] = {64,0}, + [I(207,225)] = {64,0}, + [I(208,225)] = {64,0}, + [I(209,225)] = {64,0}, + [I(210,225)] = {64,0}, + [I(211,225)] = {64,0}, + [I(212,225)] = {64,0}, + [I(213,225)] = {64,0}, + [I(214,225)] = {64,0}, + [I(215,225)] = {64,0}, + [I(216,225)] = {64,0}, + [I(217,225)] = {64,0}, + [I(218,225)] = {64,0}, + [I(219,225)] = {64,0}, + [I(220,225)] = {64,0}, + [I(221,225)] = {64,0}, + [I(222,225)] = {64,0}, + [I(223,225)] = {64,0}, + [I(224,225)] = {64,0}, + [I(225,225)] = {64,0}, + [I(226,225)] = {64,0}, + [I(227,225)] = {64,0}, + [I(228,225)] = {64,0}, + [I(229,225)] = {64,0}, + [I(230,225)] = {64,0}, + [I(231,225)] = {64,0}, + [I(232,225)] = {64,0}, + [I(233,225)] = {64,0}, + [I(234,225)] = {64,0}, + [I(235,225)] = {64,0}, + [I(236,225)] = {64,0}, + [I(237,225)] = {64,0}, + [I(238,225)] = {64,0}, + [I(239,225)] = {64,0}, + [I(240,225)] = {64,0}, + [I(241,225)] = {64,0}, + [I(242,225)] = {64,0}, + [I(243,225)] = {64,0}, + [I(244,225)] = {64,0}, + [I(245,225)] = {64,0}, + [I(246,225)] = {64,0}, + [I(247,225)] = {64,0}, + [I(248,225)] = {64,0}, + [I(249,225)] = {64,0}, + [I(250,225)] = {64,0}, + [I(251,225)] = {64,0}, + [I(252,225)] = {64,0}, + [I(253,225)] = {64,0}, + [I(254,225)] = {64,0}, + [I(255,225)] = {64,0}, + [I(0,226)] = {64,0}, + [I(1,226)] = {64,0}, + [I(2,226)] = {64,0}, + [I(3,226)] = {64,0}, + [I(4,226)] = {64,0}, + [I(5,226)] = {64,0}, + [I(6,226)] = {64,0}, + [I(7,226)] = {64,0}, + [I(8,226)] = {64,0}, + [I(9,226)] = {64,0}, + [I(10,226)] = {64,0}, + [I(11,226)] = {64,0}, + [I(12,226)] = {64,0}, + [I(13,226)] = {64,0}, + [I(14,226)] = {64,0}, + [I(15,226)] = {64,0}, + [I(16,226)] = {64,0}, + [I(17,226)] = {64,0}, + [I(18,226)] = {64,0}, + [I(19,226)] = {64,0}, + [I(20,226)] = {64,0}, + [I(21,226)] = {64,0}, + [I(22,226)] = {64,0}, + [I(23,226)] = {64,0}, + [I(24,226)] = {64,0}, + [I(25,226)] = {64,0}, + [I(26,226)] = {64,0}, + [I(27,226)] = {64,0}, + [I(28,226)] = {64,0}, + [I(29,226)] = {64,0}, + [I(30,226)] = {64,0}, + [I(31,226)] = {64,0}, + [I(32,226)] = {26,0x14FFFED}, + [I(33,226)] = {30,0x3F8FFFED}, + [I(34,226)] = {30,0x3F9FFFED}, + [I(35,226)] = {X32,0xFFAFFFED}, + [I(36,226)] = {64,0}, + [I(37,226)] = {26,0x15FFFED}, + [I(38,226)] = {28,0xF8FFFED}, + [I(39,226)] = {31,0x7FAFFFED}, + [I(40,226)] = {30,0x3FAFFFED}, + [I(41,226)] = {30,0x3FBFFFED}, + [I(42,226)] = {28,0xF9FFFED}, + [I(43,226)] = {31,0x7FBFFFED}, + [I(44,226)] = {28,0xFAFFFED}, + [I(45,226)] = {26,0x16FFFED}, + [I(46,226)] = {26,0x17FFFED}, + [I(47,226)] = {26,0x18FFFED}, + [I(48,226)] = {25,0xFFFED}, + [I(49,226)] = {25,0x1FFFED}, + [I(50,226)] = {25,0x2FFFED}, + [I(51,226)] = {26,0x19FFFED}, + [I(52,226)] = {26,0x1AFFFED}, + [I(53,226)] = {26,0x1BFFFED}, + [I(54,226)] = {26,0x1CFFFED}, + [I(55,226)] = {26,0x1DFFFED}, + [I(56,226)] = {26,0x1EFFFED}, + [I(57,226)] = {26,0x1FFFFED}, + [I(58,226)] = {27,0x5CFFFED}, + [I(59,226)] = {28,0xFBFFFED}, + [I(60,226)] = {64,0}, + [I(61,226)] = {26,0x20FFFED}, + [I(62,226)] = {X32,0xFFBFFFED}, + [I(63,226)] = {30,0x3FCFFFED}, + [I(64,226)] = {64,0}, + [I(65,226)] = {26,0x21FFFED}, + [I(66,226)] = {27,0x5DFFFED}, + [I(67,226)] = {27,0x5EFFFED}, + [I(68,226)] = {27,0x5FFFFED}, + [I(69,226)] = {27,0x60FFFED}, + [I(70,226)] = {27,0x61FFFED}, + [I(71,226)] = {27,0x62FFFED}, + [I(72,226)] = {27,0x63FFFED}, + [I(73,226)] = {27,0x64FFFED}, + [I(74,226)] = {27,0x65FFFED}, + [I(75,226)] = {27,0x66FFFED}, + [I(76,226)] = {27,0x67FFFED}, + [I(77,226)] = {27,0x68FFFED}, + [I(78,226)] = {27,0x69FFFED}, + [I(79,226)] = {27,0x6AFFFED}, + [I(80,226)] = {27,0x6BFFFED}, + [I(81,226)] = {27,0x6CFFFED}, + [I(82,226)] = {27,0x6DFFFED}, + [I(83,226)] = {27,0x6EFFFED}, + [I(84,226)] = {27,0x6FFFFED}, + [I(85,226)] = {27,0x70FFFED}, + [I(86,226)] = {27,0x71FFFED}, + [I(87,226)] = {27,0x72FFFED}, + [I(88,226)] = {28,0xFCFFFED}, + [I(89,226)] = {27,0x73FFFED}, + [I(90,226)] = {28,0xFDFFFED}, + [I(91,226)] = {64,0}, + [I(92,226)] = {64,0}, + [I(93,226)] = {64,0}, + [I(94,226)] = {64,0}, + [I(95,226)] = {26,0x22FFFED}, + [I(96,226)] = {64,0}, + [I(97,226)] = {25,0x3FFFED}, + [I(98,226)] = {26,0x23FFFED}, + [I(99,226)] = {25,0x4FFFED}, + [I(100,226)] = {26,0x24FFFED}, + [I(101,226)] = {25,0x5FFFED}, + [I(102,226)] = {26,0x25FFFED}, + [I(103,226)] = {26,0x26FFFED}, + [I(104,226)] = {26,0x27FFFED}, + [I(105,226)] = {25,0x6FFFED}, + [I(106,226)] = {27,0x74FFFED}, + [I(107,226)] = {27,0x75FFFED}, + [I(108,226)] = {26,0x28FFFED}, + [I(109,226)] = {26,0x29FFFED}, + [I(110,226)] = {26,0x2AFFFED}, + [I(111,226)] = {25,0x7FFFED}, + [I(112,226)] = {26,0x2BFFFED}, + [I(113,226)] = {27,0x76FFFED}, + [I(114,226)] = {26,0x2CFFFED}, + [I(115,226)] = {25,0x8FFFED}, + [I(116,226)] = {25,0x9FFFED}, + [I(117,226)] = {26,0x2DFFFED}, + [I(118,226)] = {27,0x77FFFED}, + [I(119,226)] = {27,0x78FFFED}, + [I(120,226)] = {27,0x79FFFED}, + [I(121,226)] = {27,0x7AFFFED}, + [I(122,226)] = {27,0x7BFFFED}, + [I(123,226)] = {64,0}, + [I(124,226)] = {31,0x7FCFFFED}, + [I(125,226)] = {64,0}, + [I(126,226)] = {64,0}, + [I(127,226)] = {64,0}, + [I(128,226)] = {64,0}, + [I(129,226)] = {64,0}, + [I(130,226)] = {64,0}, + [I(131,226)] = {64,0}, + [I(132,226)] = {64,0}, + [I(133,226)] = {64,0}, + [I(134,226)] = {64,0}, + [I(135,226)] = {64,0}, + [I(136,226)] = {64,0}, + [I(137,226)] = {64,0}, + [I(138,226)] = {64,0}, + [I(139,226)] = {64,0}, + [I(140,226)] = {64,0}, + [I(141,226)] = {64,0}, + [I(142,226)] = {64,0}, + [I(143,226)] = {64,0}, + [I(144,226)] = {64,0}, + [I(145,226)] = {64,0}, + [I(146,226)] = {64,0}, + [I(147,226)] = {64,0}, + [I(148,226)] = {64,0}, + [I(149,226)] = {64,0}, + [I(150,226)] = {64,0}, + [I(151,226)] = {64,0}, + [I(152,226)] = {64,0}, + [I(153,226)] = {64,0}, + [I(154,226)] = {64,0}, + [I(155,226)] = {64,0}, + [I(156,226)] = {64,0}, + [I(157,226)] = {64,0}, + [I(158,226)] = {64,0}, + [I(159,226)] = {64,0}, + [I(160,226)] = {64,0}, + [I(161,226)] = {64,0}, + [I(162,226)] = {64,0}, + [I(163,226)] = {64,0}, + [I(164,226)] = {64,0}, + [I(165,226)] = {64,0}, + [I(166,226)] = {64,0}, + [I(167,226)] = {64,0}, + [I(168,226)] = {64,0}, + [I(169,226)] = {64,0}, + [I(170,226)] = {64,0}, + [I(171,226)] = {64,0}, + [I(172,226)] = {64,0}, + [I(173,226)] = {64,0}, + [I(174,226)] = {64,0}, + [I(175,226)] = {64,0}, + [I(176,226)] = {64,0}, + [I(177,226)] = {64,0}, + [I(178,226)] = {64,0}, + [I(179,226)] = {64,0}, + [I(180,226)] = {64,0}, + [I(181,226)] = {64,0}, + [I(182,226)] = {64,0}, + [I(183,226)] = {64,0}, + [I(184,226)] = {64,0}, + [I(185,226)] = {64,0}, + [I(186,226)] = {64,0}, + [I(187,226)] = {64,0}, + [I(188,226)] = {64,0}, + [I(189,226)] = {64,0}, + [I(190,226)] = {64,0}, + [I(191,226)] = {64,0}, + [I(192,226)] = {64,0}, + [I(193,226)] = {64,0}, + [I(194,226)] = {64,0}, + [I(195,226)] = {64,0}, + [I(196,226)] = {64,0}, + [I(197,226)] = {64,0}, + [I(198,226)] = {64,0}, + [I(199,226)] = {64,0}, + [I(200,226)] = {64,0}, + [I(201,226)] = {64,0}, + [I(202,226)] = {64,0}, + [I(203,226)] = {64,0}, + [I(204,226)] = {64,0}, + [I(205,226)] = {64,0}, + [I(206,226)] = {64,0}, + [I(207,226)] = {64,0}, + [I(208,226)] = {64,0}, + [I(209,226)] = {64,0}, + [I(210,226)] = {64,0}, + [I(211,226)] = {64,0}, + [I(212,226)] = {64,0}, + [I(213,226)] = {64,0}, + [I(214,226)] = {64,0}, + [I(215,226)] = {64,0}, + [I(216,226)] = {64,0}, + [I(217,226)] = {64,0}, + [I(218,226)] = {64,0}, + [I(219,226)] = {64,0}, + [I(220,226)] = {64,0}, + [I(221,226)] = {64,0}, + [I(222,226)] = {64,0}, + [I(223,226)] = {64,0}, + [I(224,226)] = {64,0}, + [I(225,226)] = {64,0}, + [I(226,226)] = {64,0}, + [I(227,226)] = {64,0}, + [I(228,226)] = {64,0}, + [I(229,226)] = {64,0}, + [I(230,226)] = {64,0}, + [I(231,226)] = {64,0}, + [I(232,226)] = {64,0}, + [I(233,226)] = {64,0}, + [I(234,226)] = {64,0}, + [I(235,226)] = {64,0}, + [I(236,226)] = {64,0}, + [I(237,226)] = {64,0}, + [I(238,226)] = {64,0}, + [I(239,226)] = {64,0}, + [I(240,226)] = {64,0}, + [I(241,226)] = {64,0}, + [I(242,226)] = {64,0}, + [I(243,226)] = {64,0}, + [I(244,226)] = {64,0}, + [I(245,226)] = {64,0}, + [I(246,226)] = {64,0}, + [I(247,226)] = {64,0}, + [I(248,226)] = {64,0}, + [I(249,226)] = {64,0}, + [I(250,226)] = {64,0}, + [I(251,226)] = {64,0}, + [I(252,226)] = {64,0}, + [I(253,226)] = {64,0}, + [I(254,226)] = {64,0}, + [I(255,226)] = {64,0}, + [I(0,227)] = {64,0}, + [I(1,227)] = {64,0}, + [I(2,227)] = {64,0}, + [I(3,227)] = {64,0}, + [I(4,227)] = {64,0}, + [I(5,227)] = {64,0}, + [I(6,227)] = {64,0}, + [I(7,227)] = {64,0}, + [I(8,227)] = {64,0}, + [I(9,227)] = {64,0}, + [I(10,227)] = {64,0}, + [I(11,227)] = {64,0}, + [I(12,227)] = {64,0}, + [I(13,227)] = {64,0}, + [I(14,227)] = {64,0}, + [I(15,227)] = {64,0}, + [I(16,227)] = {64,0}, + [I(17,227)] = {64,0}, + [I(18,227)] = {64,0}, + [I(19,227)] = {64,0}, + [I(20,227)] = {64,0}, + [I(21,227)] = {64,0}, + [I(22,227)] = {64,0}, + [I(23,227)] = {64,0}, + [I(24,227)] = {64,0}, + [I(25,227)] = {64,0}, + [I(26,227)] = {64,0}, + [I(27,227)] = {64,0}, + [I(28,227)] = {64,0}, + [I(29,227)] = {64,0}, + [I(30,227)] = {64,0}, + [I(31,227)] = {64,0}, + [I(32,227)] = {27,0x29FFFE6}, + [I(33,227)] = {31,0x7F1FFFE6}, + [I(34,227)] = {31,0x7F3FFFE6}, + [I(35,227)] = {64,0}, + [I(36,227)] = {64,0}, + [I(37,227)] = {27,0x2BFFFE6}, + [I(38,227)] = {29,0x1F1FFFE6}, + [I(39,227)] = {X32,0xFF5FFFE6}, + [I(40,227)] = {31,0x7F5FFFE6}, + [I(41,227)] = {31,0x7F7FFFE6}, + [I(42,227)] = {29,0x1F3FFFE6}, + [I(43,227)] = {X32,0xFF7FFFE6}, + [I(44,227)] = {29,0x1F5FFFE6}, + [I(45,227)] = {27,0x2DFFFE6}, + [I(46,227)] = {27,0x2FFFFE6}, + [I(47,227)] = {27,0x31FFFE6}, + [I(48,227)] = {26,0x1FFFE6}, + [I(49,227)] = {26,0x3FFFE6}, + [I(50,227)] = {26,0x5FFFE6}, + [I(51,227)] = {27,0x33FFFE6}, + [I(52,227)] = {27,0x35FFFE6}, + [I(53,227)] = {27,0x37FFFE6}, + [I(54,227)] = {27,0x39FFFE6}, + [I(55,227)] = {27,0x3BFFFE6}, + [I(56,227)] = {27,0x3DFFFE6}, + [I(57,227)] = {27,0x3FFFFE6}, + [I(58,227)] = {28,0xB9FFFE6}, + [I(59,227)] = {29,0x1F7FFFE6}, + [I(60,227)] = {64,0}, + [I(61,227)] = {27,0x41FFFE6}, + [I(62,227)] = {64,0}, + [I(63,227)] = {31,0x7F9FFFE6}, + [I(64,227)] = {64,0}, + [I(65,227)] = {27,0x43FFFE6}, + [I(66,227)] = {28,0xBBFFFE6}, + [I(67,227)] = {28,0xBDFFFE6}, + [I(68,227)] = {28,0xBFFFFE6}, + [I(69,227)] = {28,0xC1FFFE6}, + [I(70,227)] = {28,0xC3FFFE6}, + [I(71,227)] = {28,0xC5FFFE6}, + [I(72,227)] = {28,0xC7FFFE6}, + [I(73,227)] = {28,0xC9FFFE6}, + [I(74,227)] = {28,0xCBFFFE6}, + [I(75,227)] = {28,0xCDFFFE6}, + [I(76,227)] = {28,0xCFFFFE6}, + [I(77,227)] = {28,0xD1FFFE6}, + [I(78,227)] = {28,0xD3FFFE6}, + [I(79,227)] = {28,0xD5FFFE6}, + [I(80,227)] = {28,0xD7FFFE6}, + [I(81,227)] = {28,0xD9FFFE6}, + [I(82,227)] = {28,0xDBFFFE6}, + [I(83,227)] = {28,0xDDFFFE6}, + [I(84,227)] = {28,0xDFFFFE6}, + [I(85,227)] = {28,0xE1FFFE6}, + [I(86,227)] = {28,0xE3FFFE6}, + [I(87,227)] = {28,0xE5FFFE6}, + [I(88,227)] = {29,0x1F9FFFE6}, + [I(89,227)] = {28,0xE7FFFE6}, + [I(90,227)] = {29,0x1FBFFFE6}, + [I(91,227)] = {64,0}, + [I(92,227)] = {64,0}, + [I(93,227)] = {64,0}, + [I(94,227)] = {64,0}, + [I(95,227)] = {27,0x45FFFE6}, + [I(96,227)] = {64,0}, + [I(97,227)] = {26,0x7FFFE6}, + [I(98,227)] = {27,0x47FFFE6}, + [I(99,227)] = {26,0x9FFFE6}, + [I(100,227)] = {27,0x49FFFE6}, + [I(101,227)] = {26,0xBFFFE6}, + [I(102,227)] = {27,0x4BFFFE6}, + [I(103,227)] = {27,0x4DFFFE6}, + [I(104,227)] = {27,0x4FFFFE6}, + [I(105,227)] = {26,0xDFFFE6}, + [I(106,227)] = {28,0xE9FFFE6}, + [I(107,227)] = {28,0xEBFFFE6}, + [I(108,227)] = {27,0x51FFFE6}, + [I(109,227)] = {27,0x53FFFE6}, + [I(110,227)] = {27,0x55FFFE6}, + [I(111,227)] = {26,0xFFFFE6}, + [I(112,227)] = {27,0x57FFFE6}, + [I(113,227)] = {28,0xEDFFFE6}, + [I(114,227)] = {27,0x59FFFE6}, + [I(115,227)] = {26,0x11FFFE6}, + [I(116,227)] = {26,0x13FFFE6}, + [I(117,227)] = {27,0x5BFFFE6}, + [I(118,227)] = {28,0xEFFFFE6}, + [I(119,227)] = {28,0xF1FFFE6}, + [I(120,227)] = {28,0xF3FFFE6}, + [I(121,227)] = {28,0xF5FFFE6}, + [I(122,227)] = {28,0xF7FFFE6}, + [I(123,227)] = {64,0}, + [I(124,227)] = {X32,0xFF9FFFE6}, + [I(125,227)] = {64,0}, + [I(126,227)] = {64,0}, + [I(127,227)] = {64,0}, + [I(128,227)] = {64,0}, + [I(129,227)] = {64,0}, + [I(130,227)] = {64,0}, + [I(131,227)] = {64,0}, + [I(132,227)] = {64,0}, + [I(133,227)] = {64,0}, + [I(134,227)] = {64,0}, + [I(135,227)] = {64,0}, + [I(136,227)] = {64,0}, + [I(137,227)] = {64,0}, + [I(138,227)] = {64,0}, + [I(139,227)] = {64,0}, + [I(140,227)] = {64,0}, + [I(141,227)] = {64,0}, + [I(142,227)] = {64,0}, + [I(143,227)] = {64,0}, + [I(144,227)] = {64,0}, + [I(145,227)] = {64,0}, + [I(146,227)] = {64,0}, + [I(147,227)] = {64,0}, + [I(148,227)] = {64,0}, + [I(149,227)] = {64,0}, + [I(150,227)] = {64,0}, + [I(151,227)] = {64,0}, + [I(152,227)] = {64,0}, + [I(153,227)] = {64,0}, + [I(154,227)] = {64,0}, + [I(155,227)] = {64,0}, + [I(156,227)] = {64,0}, + [I(157,227)] = {64,0}, + [I(158,227)] = {64,0}, + [I(159,227)] = {64,0}, + [I(160,227)] = {64,0}, + [I(161,227)] = {64,0}, + [I(162,227)] = {64,0}, + [I(163,227)] = {64,0}, + [I(164,227)] = {64,0}, + [I(165,227)] = {64,0}, + [I(166,227)] = {64,0}, + [I(167,227)] = {64,0}, + [I(168,227)] = {64,0}, + [I(169,227)] = {64,0}, + [I(170,227)] = {64,0}, + [I(171,227)] = {64,0}, + [I(172,227)] = {64,0}, + [I(173,227)] = {64,0}, + [I(174,227)] = {64,0}, + [I(175,227)] = {64,0}, + [I(176,227)] = {64,0}, + [I(177,227)] = {64,0}, + [I(178,227)] = {64,0}, + [I(179,227)] = {64,0}, + [I(180,227)] = {64,0}, + [I(181,227)] = {64,0}, + [I(182,227)] = {64,0}, + [I(183,227)] = {64,0}, + [I(184,227)] = {64,0}, + [I(185,227)] = {64,0}, + [I(186,227)] = {64,0}, + [I(187,227)] = {64,0}, + [I(188,227)] = {64,0}, + [I(189,227)] = {64,0}, + [I(190,227)] = {64,0}, + [I(191,227)] = {64,0}, + [I(192,227)] = {64,0}, + [I(193,227)] = {64,0}, + [I(194,227)] = {64,0}, + [I(195,227)] = {64,0}, + [I(196,227)] = {64,0}, + [I(197,227)] = {64,0}, + [I(198,227)] = {64,0}, + [I(199,227)] = {64,0}, + [I(200,227)] = {64,0}, + [I(201,227)] = {64,0}, + [I(202,227)] = {64,0}, + [I(203,227)] = {64,0}, + [I(204,227)] = {64,0}, + [I(205,227)] = {64,0}, + [I(206,227)] = {64,0}, + [I(207,227)] = {64,0}, + [I(208,227)] = {64,0}, + [I(209,227)] = {64,0}, + [I(210,227)] = {64,0}, + [I(211,227)] = {64,0}, + [I(212,227)] = {64,0}, + [I(213,227)] = {64,0}, + [I(214,227)] = {64,0}, + [I(215,227)] = {64,0}, + [I(216,227)] = {64,0}, + [I(217,227)] = {64,0}, + [I(218,227)] = {64,0}, + [I(219,227)] = {64,0}, + [I(220,227)] = {64,0}, + [I(221,227)] = {64,0}, + [I(222,227)] = {64,0}, + [I(223,227)] = {64,0}, + [I(224,227)] = {64,0}, + [I(225,227)] = {64,0}, + [I(226,227)] = {64,0}, + [I(227,227)] = {64,0}, + [I(228,227)] = {64,0}, + [I(229,227)] = {64,0}, + [I(230,227)] = {64,0}, + [I(231,227)] = {64,0}, + [I(232,227)] = {64,0}, + [I(233,227)] = {64,0}, + [I(234,227)] = {64,0}, + [I(235,227)] = {64,0}, + [I(236,227)] = {64,0}, + [I(237,227)] = {64,0}, + [I(238,227)] = {64,0}, + [I(239,227)] = {64,0}, + [I(240,227)] = {64,0}, + [I(241,227)] = {64,0}, + [I(242,227)] = {64,0}, + [I(243,227)] = {64,0}, + [I(244,227)] = {64,0}, + [I(245,227)] = {64,0}, + [I(246,227)] = {64,0}, + [I(247,227)] = {64,0}, + [I(248,227)] = {64,0}, + [I(249,227)] = {64,0}, + [I(250,227)] = {64,0}, + [I(251,227)] = {64,0}, + [I(252,227)] = {64,0}, + [I(253,227)] = {64,0}, + [I(254,227)] = {64,0}, + [I(255,227)] = {64,0}, + [I(0,228)] = {64,0}, + [I(1,228)] = {64,0}, + [I(2,228)] = {64,0}, + [I(3,228)] = {64,0}, + [I(4,228)] = {64,0}, + [I(5,228)] = {64,0}, + [I(6,228)] = {64,0}, + [I(7,228)] = {64,0}, + [I(8,228)] = {64,0}, + [I(9,228)] = {64,0}, + [I(10,228)] = {64,0}, + [I(11,228)] = {64,0}, + [I(12,228)] = {64,0}, + [I(13,228)] = {64,0}, + [I(14,228)] = {64,0}, + [I(15,228)] = {64,0}, + [I(16,228)] = {64,0}, + [I(17,228)] = {64,0}, + [I(18,228)] = {64,0}, + [I(19,228)] = {64,0}, + [I(20,228)] = {64,0}, + [I(21,228)] = {64,0}, + [I(22,228)] = {64,0}, + [I(23,228)] = {64,0}, + [I(24,228)] = {64,0}, + [I(25,228)] = {64,0}, + [I(26,228)] = {64,0}, + [I(27,228)] = {64,0}, + [I(28,228)] = {64,0}, + [I(29,228)] = {64,0}, + [I(30,228)] = {64,0}, + [I(31,228)] = {64,0}, + [I(32,228)] = {28,0x53FFFE9}, + [I(33,228)] = {X32,0xFE3FFFE9}, + [I(34,228)] = {X32,0xFE7FFFE9}, + [I(35,228)] = {64,0}, + [I(36,228)] = {64,0}, + [I(37,228)] = {28,0x57FFFE9}, + [I(38,228)] = {30,0x3E3FFFE9}, + [I(39,228)] = {64,0}, + [I(40,228)] = {X32,0xFEBFFFE9}, + [I(41,228)] = {X32,0xFEFFFFE9}, + [I(42,228)] = {30,0x3E7FFFE9}, + [I(43,228)] = {64,0}, + [I(44,228)] = {30,0x3EBFFFE9}, + [I(45,228)] = {28,0x5BFFFE9}, + [I(46,228)] = {28,0x5FFFFE9}, + [I(47,228)] = {28,0x63FFFE9}, + [I(48,228)] = {27,0x3FFFE9}, + [I(49,228)] = {27,0x7FFFE9}, + [I(50,228)] = {27,0xBFFFE9}, + [I(51,228)] = {28,0x67FFFE9}, + [I(52,228)] = {28,0x6BFFFE9}, + [I(53,228)] = {28,0x6FFFFE9}, + [I(54,228)] = {28,0x73FFFE9}, + [I(55,228)] = {28,0x77FFFE9}, + [I(56,228)] = {28,0x7BFFFE9}, + [I(57,228)] = {28,0x7FFFFE9}, + [I(58,228)] = {29,0x173FFFE9}, + [I(59,228)] = {30,0x3EFFFFE9}, + [I(60,228)] = {64,0}, + [I(61,228)] = {28,0x83FFFE9}, + [I(62,228)] = {64,0}, + [I(63,228)] = {X32,0xFF3FFFE9}, + [I(64,228)] = {64,0}, + [I(65,228)] = {28,0x87FFFE9}, + [I(66,228)] = {29,0x177FFFE9}, + [I(67,228)] = {29,0x17BFFFE9}, + [I(68,228)] = {29,0x17FFFFE9}, + [I(69,228)] = {29,0x183FFFE9}, + [I(70,228)] = {29,0x187FFFE9}, + [I(71,228)] = {29,0x18BFFFE9}, + [I(72,228)] = {29,0x18FFFFE9}, + [I(73,228)] = {29,0x193FFFE9}, + [I(74,228)] = {29,0x197FFFE9}, + [I(75,228)] = {29,0x19BFFFE9}, + [I(76,228)] = {29,0x19FFFFE9}, + [I(77,228)] = {29,0x1A3FFFE9}, + [I(78,228)] = {29,0x1A7FFFE9}, + [I(79,228)] = {29,0x1ABFFFE9}, + [I(80,228)] = {29,0x1AFFFFE9}, + [I(81,228)] = {29,0x1B3FFFE9}, + [I(82,228)] = {29,0x1B7FFFE9}, + [I(83,228)] = {29,0x1BBFFFE9}, + [I(84,228)] = {29,0x1BFFFFE9}, + [I(85,228)] = {29,0x1C3FFFE9}, + [I(86,228)] = {29,0x1C7FFFE9}, + [I(87,228)] = {29,0x1CBFFFE9}, + [I(88,228)] = {30,0x3F3FFFE9}, + [I(89,228)] = {29,0x1CFFFFE9}, + [I(90,228)] = {30,0x3F7FFFE9}, + [I(91,228)] = {64,0}, + [I(92,228)] = {64,0}, + [I(93,228)] = {64,0}, + [I(94,228)] = {64,0}, + [I(95,228)] = {28,0x8BFFFE9}, + [I(96,228)] = {64,0}, + [I(97,228)] = {27,0xFFFFE9}, + [I(98,228)] = {28,0x8FFFFE9}, + [I(99,228)] = {27,0x13FFFE9}, + [I(100,228)] = {28,0x93FFFE9}, + [I(101,228)] = {27,0x17FFFE9}, + [I(102,228)] = {28,0x97FFFE9}, + [I(103,228)] = {28,0x9BFFFE9}, + [I(104,228)] = {28,0x9FFFFE9}, + [I(105,228)] = {27,0x1BFFFE9}, + [I(106,228)] = {29,0x1D3FFFE9}, + [I(107,228)] = {29,0x1D7FFFE9}, + [I(108,228)] = {28,0xA3FFFE9}, + [I(109,228)] = {28,0xA7FFFE9}, + [I(110,228)] = {28,0xABFFFE9}, + [I(111,228)] = {27,0x1FFFFE9}, + [I(112,228)] = {28,0xAFFFFE9}, + [I(113,228)] = {29,0x1DBFFFE9}, + [I(114,228)] = {28,0xB3FFFE9}, + [I(115,228)] = {27,0x23FFFE9}, + [I(116,228)] = {27,0x27FFFE9}, + [I(117,228)] = {28,0xB7FFFE9}, + [I(118,228)] = {29,0x1DFFFFE9}, + [I(119,228)] = {29,0x1E3FFFE9}, + [I(120,228)] = {29,0x1E7FFFE9}, + [I(121,228)] = {29,0x1EBFFFE9}, + [I(122,228)] = {29,0x1EFFFFE9}, + [I(123,228)] = {64,0}, + [I(124,228)] = {64,0}, + [I(125,228)] = {64,0}, + [I(126,228)] = {64,0}, + [I(127,228)] = {64,0}, + [I(128,228)] = {64,0}, + [I(129,228)] = {64,0}, + [I(130,228)] = {64,0}, + [I(131,228)] = {64,0}, + [I(132,228)] = {64,0}, + [I(133,228)] = {64,0}, + [I(134,228)] = {64,0}, + [I(135,228)] = {64,0}, + [I(136,228)] = {64,0}, + [I(137,228)] = {64,0}, + [I(138,228)] = {64,0}, + [I(139,228)] = {64,0}, + [I(140,228)] = {64,0}, + [I(141,228)] = {64,0}, + [I(142,228)] = {64,0}, + [I(143,228)] = {64,0}, + [I(144,228)] = {64,0}, + [I(145,228)] = {64,0}, + [I(146,228)] = {64,0}, + [I(147,228)] = {64,0}, + [I(148,228)] = {64,0}, + [I(149,228)] = {64,0}, + [I(150,228)] = {64,0}, + [I(151,228)] = {64,0}, + [I(152,228)] = {64,0}, + [I(153,228)] = {64,0}, + [I(154,228)] = {64,0}, + [I(155,228)] = {64,0}, + [I(156,228)] = {64,0}, + [I(157,228)] = {64,0}, + [I(158,228)] = {64,0}, + [I(159,228)] = {64,0}, + [I(160,228)] = {64,0}, + [I(161,228)] = {64,0}, + [I(162,228)] = {64,0}, + [I(163,228)] = {64,0}, + [I(164,228)] = {64,0}, + [I(165,228)] = {64,0}, + [I(166,228)] = {64,0}, + [I(167,228)] = {64,0}, + [I(168,228)] = {64,0}, + [I(169,228)] = {64,0}, + [I(170,228)] = {64,0}, + [I(171,228)] = {64,0}, + [I(172,228)] = {64,0}, + [I(173,228)] = {64,0}, + [I(174,228)] = {64,0}, + [I(175,228)] = {64,0}, + [I(176,228)] = {64,0}, + [I(177,228)] = {64,0}, + [I(178,228)] = {64,0}, + [I(179,228)] = {64,0}, + [I(180,228)] = {64,0}, + [I(181,228)] = {64,0}, + [I(182,228)] = {64,0}, + [I(183,228)] = {64,0}, + [I(184,228)] = {64,0}, + [I(185,228)] = {64,0}, + [I(186,228)] = {64,0}, + [I(187,228)] = {64,0}, + [I(188,228)] = {64,0}, + [I(189,228)] = {64,0}, + [I(190,228)] = {64,0}, + [I(191,228)] = {64,0}, + [I(192,228)] = {64,0}, + [I(193,228)] = {64,0}, + [I(194,228)] = {64,0}, + [I(195,228)] = {64,0}, + [I(196,228)] = {64,0}, + [I(197,228)] = {64,0}, + [I(198,228)] = {64,0}, + [I(199,228)] = {64,0}, + [I(200,228)] = {64,0}, + [I(201,228)] = {64,0}, + [I(202,228)] = {64,0}, + [I(203,228)] = {64,0}, + [I(204,228)] = {64,0}, + [I(205,228)] = {64,0}, + [I(206,228)] = {64,0}, + [I(207,228)] = {64,0}, + [I(208,228)] = {64,0}, + [I(209,228)] = {64,0}, + [I(210,228)] = {64,0}, + [I(211,228)] = {64,0}, + [I(212,228)] = {64,0}, + [I(213,228)] = {64,0}, + [I(214,228)] = {64,0}, + [I(215,228)] = {64,0}, + [I(216,228)] = {64,0}, + [I(217,228)] = {64,0}, + [I(218,228)] = {64,0}, + [I(219,228)] = {64,0}, + [I(220,228)] = {64,0}, + [I(221,228)] = {64,0}, + [I(222,228)] = {64,0}, + [I(223,228)] = {64,0}, + [I(224,228)] = {64,0}, + [I(225,228)] = {64,0}, + [I(226,228)] = {64,0}, + [I(227,228)] = {64,0}, + [I(228,228)] = {64,0}, + [I(229,228)] = {64,0}, + [I(230,228)] = {64,0}, + [I(231,228)] = {64,0}, + [I(232,228)] = {64,0}, + [I(233,228)] = {64,0}, + [I(234,228)] = {64,0}, + [I(235,228)] = {64,0}, + [I(236,228)] = {64,0}, + [I(237,228)] = {64,0}, + [I(238,228)] = {64,0}, + [I(239,228)] = {64,0}, + [I(240,228)] = {64,0}, + [I(241,228)] = {64,0}, + [I(242,228)] = {64,0}, + [I(243,228)] = {64,0}, + [I(244,228)] = {64,0}, + [I(245,228)] = {64,0}, + [I(246,228)] = {64,0}, + [I(247,228)] = {64,0}, + [I(248,228)] = {64,0}, + [I(249,228)] = {64,0}, + [I(250,228)] = {64,0}, + [I(251,228)] = {64,0}, + [I(252,228)] = {64,0}, + [I(253,228)] = {64,0}, + [I(254,228)] = {64,0}, + [I(255,228)] = {64,0}, + [I(0,229)] = {64,0}, + [I(1,229)] = {64,0}, + [I(2,229)] = {64,0}, + [I(3,229)] = {64,0}, + [I(4,229)] = {64,0}, + [I(5,229)] = {64,0}, + [I(6,229)] = {64,0}, + [I(7,229)] = {64,0}, + [I(8,229)] = {64,0}, + [I(9,229)] = {64,0}, + [I(10,229)] = {64,0}, + [I(11,229)] = {64,0}, + [I(12,229)] = {64,0}, + [I(13,229)] = {64,0}, + [I(14,229)] = {64,0}, + [I(15,229)] = {64,0}, + [I(16,229)] = {64,0}, + [I(17,229)] = {64,0}, + [I(18,229)] = {64,0}, + [I(19,229)] = {64,0}, + [I(20,229)] = {64,0}, + [I(21,229)] = {64,0}, + [I(22,229)] = {64,0}, + [I(23,229)] = {64,0}, + [I(24,229)] = {64,0}, + [I(25,229)] = {64,0}, + [I(26,229)] = {64,0}, + [I(27,229)] = {64,0}, + [I(28,229)] = {64,0}, + [I(29,229)] = {64,0}, + [I(30,229)] = {64,0}, + [I(31,229)] = {64,0}, + [I(32,229)] = {27,0x29FFFE7}, + [I(33,229)] = {31,0x7F1FFFE7}, + [I(34,229)] = {31,0x7F3FFFE7}, + [I(35,229)] = {64,0}, + [I(36,229)] = {64,0}, + [I(37,229)] = {27,0x2BFFFE7}, + [I(38,229)] = {29,0x1F1FFFE7}, + [I(39,229)] = {X32,0xFF5FFFE7}, + [I(40,229)] = {31,0x7F5FFFE7}, + [I(41,229)] = {31,0x7F7FFFE7}, + [I(42,229)] = {29,0x1F3FFFE7}, + [I(43,229)] = {X32,0xFF7FFFE7}, + [I(44,229)] = {29,0x1F5FFFE7}, + [I(45,229)] = {27,0x2DFFFE7}, + [I(46,229)] = {27,0x2FFFFE7}, + [I(47,229)] = {27,0x31FFFE7}, + [I(48,229)] = {26,0x1FFFE7}, + [I(49,229)] = {26,0x3FFFE7}, + [I(50,229)] = {26,0x5FFFE7}, + [I(51,229)] = {27,0x33FFFE7}, + [I(52,229)] = {27,0x35FFFE7}, + [I(53,229)] = {27,0x37FFFE7}, + [I(54,229)] = {27,0x39FFFE7}, + [I(55,229)] = {27,0x3BFFFE7}, + [I(56,229)] = {27,0x3DFFFE7}, + [I(57,229)] = {27,0x3FFFFE7}, + [I(58,229)] = {28,0xB9FFFE7}, + [I(59,229)] = {29,0x1F7FFFE7}, + [I(60,229)] = {64,0}, + [I(61,229)] = {27,0x41FFFE7}, + [I(62,229)] = {64,0}, + [I(63,229)] = {31,0x7F9FFFE7}, + [I(64,229)] = {64,0}, + [I(65,229)] = {27,0x43FFFE7}, + [I(66,229)] = {28,0xBBFFFE7}, + [I(67,229)] = {28,0xBDFFFE7}, + [I(68,229)] = {28,0xBFFFFE7}, + [I(69,229)] = {28,0xC1FFFE7}, + [I(70,229)] = {28,0xC3FFFE7}, + [I(71,229)] = {28,0xC5FFFE7}, + [I(72,229)] = {28,0xC7FFFE7}, + [I(73,229)] = {28,0xC9FFFE7}, + [I(74,229)] = {28,0xCBFFFE7}, + [I(75,229)] = {28,0xCDFFFE7}, + [I(76,229)] = {28,0xCFFFFE7}, + [I(77,229)] = {28,0xD1FFFE7}, + [I(78,229)] = {28,0xD3FFFE7}, + [I(79,229)] = {28,0xD5FFFE7}, + [I(80,229)] = {28,0xD7FFFE7}, + [I(81,229)] = {28,0xD9FFFE7}, + [I(82,229)] = {28,0xDBFFFE7}, + [I(83,229)] = {28,0xDDFFFE7}, + [I(84,229)] = {28,0xDFFFFE7}, + [I(85,229)] = {28,0xE1FFFE7}, + [I(86,229)] = {28,0xE3FFFE7}, + [I(87,229)] = {28,0xE5FFFE7}, + [I(88,229)] = {29,0x1F9FFFE7}, + [I(89,229)] = {28,0xE7FFFE7}, + [I(90,229)] = {29,0x1FBFFFE7}, + [I(91,229)] = {64,0}, + [I(92,229)] = {64,0}, + [I(93,229)] = {64,0}, + [I(94,229)] = {64,0}, + [I(95,229)] = {27,0x45FFFE7}, + [I(96,229)] = {64,0}, + [I(97,229)] = {26,0x7FFFE7}, + [I(98,229)] = {27,0x47FFFE7}, + [I(99,229)] = {26,0x9FFFE7}, + [I(100,229)] = {27,0x49FFFE7}, + [I(101,229)] = {26,0xBFFFE7}, + [I(102,229)] = {27,0x4BFFFE7}, + [I(103,229)] = {27,0x4DFFFE7}, + [I(104,229)] = {27,0x4FFFFE7}, + [I(105,229)] = {26,0xDFFFE7}, + [I(106,229)] = {28,0xE9FFFE7}, + [I(107,229)] = {28,0xEBFFFE7}, + [I(108,229)] = {27,0x51FFFE7}, + [I(109,229)] = {27,0x53FFFE7}, + [I(110,229)] = {27,0x55FFFE7}, + [I(111,229)] = {26,0xFFFFE7}, + [I(112,229)] = {27,0x57FFFE7}, + [I(113,229)] = {28,0xEDFFFE7}, + [I(114,229)] = {27,0x59FFFE7}, + [I(115,229)] = {26,0x11FFFE7}, + [I(116,229)] = {26,0x13FFFE7}, + [I(117,229)] = {27,0x5BFFFE7}, + [I(118,229)] = {28,0xEFFFFE7}, + [I(119,229)] = {28,0xF1FFFE7}, + [I(120,229)] = {28,0xF3FFFE7}, + [I(121,229)] = {28,0xF5FFFE7}, + [I(122,229)] = {28,0xF7FFFE7}, + [I(123,229)] = {64,0}, + [I(124,229)] = {X32,0xFF9FFFE7}, + [I(125,229)] = {64,0}, + [I(126,229)] = {64,0}, + [I(127,229)] = {64,0}, + [I(128,229)] = {64,0}, + [I(129,229)] = {64,0}, + [I(130,229)] = {64,0}, + [I(131,229)] = {64,0}, + [I(132,229)] = {64,0}, + [I(133,229)] = {64,0}, + [I(134,229)] = {64,0}, + [I(135,229)] = {64,0}, + [I(136,229)] = {64,0}, + [I(137,229)] = {64,0}, + [I(138,229)] = {64,0}, + [I(139,229)] = {64,0}, + [I(140,229)] = {64,0}, + [I(141,229)] = {64,0}, + [I(142,229)] = {64,0}, + [I(143,229)] = {64,0}, + [I(144,229)] = {64,0}, + [I(145,229)] = {64,0}, + [I(146,229)] = {64,0}, + [I(147,229)] = {64,0}, + [I(148,229)] = {64,0}, + [I(149,229)] = {64,0}, + [I(150,229)] = {64,0}, + [I(151,229)] = {64,0}, + [I(152,229)] = {64,0}, + [I(153,229)] = {64,0}, + [I(154,229)] = {64,0}, + [I(155,229)] = {64,0}, + [I(156,229)] = {64,0}, + [I(157,229)] = {64,0}, + [I(158,229)] = {64,0}, + [I(159,229)] = {64,0}, + [I(160,229)] = {64,0}, + [I(161,229)] = {64,0}, + [I(162,229)] = {64,0}, + [I(163,229)] = {64,0}, + [I(164,229)] = {64,0}, + [I(165,229)] = {64,0}, + [I(166,229)] = {64,0}, + [I(167,229)] = {64,0}, + [I(168,229)] = {64,0}, + [I(169,229)] = {64,0}, + [I(170,229)] = {64,0}, + [I(171,229)] = {64,0}, + [I(172,229)] = {64,0}, + [I(173,229)] = {64,0}, + [I(174,229)] = {64,0}, + [I(175,229)] = {64,0}, + [I(176,229)] = {64,0}, + [I(177,229)] = {64,0}, + [I(178,229)] = {64,0}, + [I(179,229)] = {64,0}, + [I(180,229)] = {64,0}, + [I(181,229)] = {64,0}, + [I(182,229)] = {64,0}, + [I(183,229)] = {64,0}, + [I(184,229)] = {64,0}, + [I(185,229)] = {64,0}, + [I(186,229)] = {64,0}, + [I(187,229)] = {64,0}, + [I(188,229)] = {64,0}, + [I(189,229)] = {64,0}, + [I(190,229)] = {64,0}, + [I(191,229)] = {64,0}, + [I(192,229)] = {64,0}, + [I(193,229)] = {64,0}, + [I(194,229)] = {64,0}, + [I(195,229)] = {64,0}, + [I(196,229)] = {64,0}, + [I(197,229)] = {64,0}, + [I(198,229)] = {64,0}, + [I(199,229)] = {64,0}, + [I(200,229)] = {64,0}, + [I(201,229)] = {64,0}, + [I(202,229)] = {64,0}, + [I(203,229)] = {64,0}, + [I(204,229)] = {64,0}, + [I(205,229)] = {64,0}, + [I(206,229)] = {64,0}, + [I(207,229)] = {64,0}, + [I(208,229)] = {64,0}, + [I(209,229)] = {64,0}, + [I(210,229)] = {64,0}, + [I(211,229)] = {64,0}, + [I(212,229)] = {64,0}, + [I(213,229)] = {64,0}, + [I(214,229)] = {64,0}, + [I(215,229)] = {64,0}, + [I(216,229)] = {64,0}, + [I(217,229)] = {64,0}, + [I(218,229)] = {64,0}, + [I(219,229)] = {64,0}, + [I(220,229)] = {64,0}, + [I(221,229)] = {64,0}, + [I(222,229)] = {64,0}, + [I(223,229)] = {64,0}, + [I(224,229)] = {64,0}, + [I(225,229)] = {64,0}, + [I(226,229)] = {64,0}, + [I(227,229)] = {64,0}, + [I(228,229)] = {64,0}, + [I(229,229)] = {64,0}, + [I(230,229)] = {64,0}, + [I(231,229)] = {64,0}, + [I(232,229)] = {64,0}, + [I(233,229)] = {64,0}, + [I(234,229)] = {64,0}, + [I(235,229)] = {64,0}, + [I(236,229)] = {64,0}, + [I(237,229)] = {64,0}, + [I(238,229)] = {64,0}, + [I(239,229)] = {64,0}, + [I(240,229)] = {64,0}, + [I(241,229)] = {64,0}, + [I(242,229)] = {64,0}, + [I(243,229)] = {64,0}, + [I(244,229)] = {64,0}, + [I(245,229)] = {64,0}, + [I(246,229)] = {64,0}, + [I(247,229)] = {64,0}, + [I(248,229)] = {64,0}, + [I(249,229)] = {64,0}, + [I(250,229)] = {64,0}, + [I(251,229)] = {64,0}, + [I(252,229)] = {64,0}, + [I(253,229)] = {64,0}, + [I(254,229)] = {64,0}, + [I(255,229)] = {64,0}, + [I(0,230)] = {64,0}, + [I(1,230)] = {64,0}, + [I(2,230)] = {64,0}, + [I(3,230)] = {64,0}, + [I(4,230)] = {64,0}, + [I(5,230)] = {64,0}, + [I(6,230)] = {64,0}, + [I(7,230)] = {64,0}, + [I(8,230)] = {64,0}, + [I(9,230)] = {64,0}, + [I(10,230)] = {64,0}, + [I(11,230)] = {64,0}, + [I(12,230)] = {64,0}, + [I(13,230)] = {64,0}, + [I(14,230)] = {64,0}, + [I(15,230)] = {64,0}, + [I(16,230)] = {64,0}, + [I(17,230)] = {64,0}, + [I(18,230)] = {64,0}, + [I(19,230)] = {64,0}, + [I(20,230)] = {64,0}, + [I(21,230)] = {64,0}, + [I(22,230)] = {64,0}, + [I(23,230)] = {64,0}, + [I(24,230)] = {64,0}, + [I(25,230)] = {64,0}, + [I(26,230)] = {64,0}, + [I(27,230)] = {64,0}, + [I(28,230)] = {64,0}, + [I(29,230)] = {64,0}, + [I(30,230)] = {64,0}, + [I(31,230)] = {64,0}, + [I(32,230)] = {27,0x29FFFE8}, + [I(33,230)] = {31,0x7F1FFFE8}, + [I(34,230)] = {31,0x7F3FFFE8}, + [I(35,230)] = {64,0}, + [I(36,230)] = {64,0}, + [I(37,230)] = {27,0x2BFFFE8}, + [I(38,230)] = {29,0x1F1FFFE8}, + [I(39,230)] = {X32,0xFF5FFFE8}, + [I(40,230)] = {31,0x7F5FFFE8}, + [I(41,230)] = {31,0x7F7FFFE8}, + [I(42,230)] = {29,0x1F3FFFE8}, + [I(43,230)] = {X32,0xFF7FFFE8}, + [I(44,230)] = {29,0x1F5FFFE8}, + [I(45,230)] = {27,0x2DFFFE8}, + [I(46,230)] = {27,0x2FFFFE8}, + [I(47,230)] = {27,0x31FFFE8}, + [I(48,230)] = {26,0x1FFFE8}, + [I(49,230)] = {26,0x3FFFE8}, + [I(50,230)] = {26,0x5FFFE8}, + [I(51,230)] = {27,0x33FFFE8}, + [I(52,230)] = {27,0x35FFFE8}, + [I(53,230)] = {27,0x37FFFE8}, + [I(54,230)] = {27,0x39FFFE8}, + [I(55,230)] = {27,0x3BFFFE8}, + [I(56,230)] = {27,0x3DFFFE8}, + [I(57,230)] = {27,0x3FFFFE8}, + [I(58,230)] = {28,0xB9FFFE8}, + [I(59,230)] = {29,0x1F7FFFE8}, + [I(60,230)] = {64,0}, + [I(61,230)] = {27,0x41FFFE8}, + [I(62,230)] = {64,0}, + [I(63,230)] = {31,0x7F9FFFE8}, + [I(64,230)] = {64,0}, + [I(65,230)] = {27,0x43FFFE8}, + [I(66,230)] = {28,0xBBFFFE8}, + [I(67,230)] = {28,0xBDFFFE8}, + [I(68,230)] = {28,0xBFFFFE8}, + [I(69,230)] = {28,0xC1FFFE8}, + [I(70,230)] = {28,0xC3FFFE8}, + [I(71,230)] = {28,0xC5FFFE8}, + [I(72,230)] = {28,0xC7FFFE8}, + [I(73,230)] = {28,0xC9FFFE8}, + [I(74,230)] = {28,0xCBFFFE8}, + [I(75,230)] = {28,0xCDFFFE8}, + [I(76,230)] = {28,0xCFFFFE8}, + [I(77,230)] = {28,0xD1FFFE8}, + [I(78,230)] = {28,0xD3FFFE8}, + [I(79,230)] = {28,0xD5FFFE8}, + [I(80,230)] = {28,0xD7FFFE8}, + [I(81,230)] = {28,0xD9FFFE8}, + [I(82,230)] = {28,0xDBFFFE8}, + [I(83,230)] = {28,0xDDFFFE8}, + [I(84,230)] = {28,0xDFFFFE8}, + [I(85,230)] = {28,0xE1FFFE8}, + [I(86,230)] = {28,0xE3FFFE8}, + [I(87,230)] = {28,0xE5FFFE8}, + [I(88,230)] = {29,0x1F9FFFE8}, + [I(89,230)] = {28,0xE7FFFE8}, + [I(90,230)] = {29,0x1FBFFFE8}, + [I(91,230)] = {64,0}, + [I(92,230)] = {64,0}, + [I(93,230)] = {64,0}, + [I(94,230)] = {64,0}, + [I(95,230)] = {27,0x45FFFE8}, + [I(96,230)] = {64,0}, + [I(97,230)] = {26,0x7FFFE8}, + [I(98,230)] = {27,0x47FFFE8}, + [I(99,230)] = {26,0x9FFFE8}, + [I(100,230)] = {27,0x49FFFE8}, + [I(101,230)] = {26,0xBFFFE8}, + [I(102,230)] = {27,0x4BFFFE8}, + [I(103,230)] = {27,0x4DFFFE8}, + [I(104,230)] = {27,0x4FFFFE8}, + [I(105,230)] = {26,0xDFFFE8}, + [I(106,230)] = {28,0xE9FFFE8}, + [I(107,230)] = {28,0xEBFFFE8}, + [I(108,230)] = {27,0x51FFFE8}, + [I(109,230)] = {27,0x53FFFE8}, + [I(110,230)] = {27,0x55FFFE8}, + [I(111,230)] = {26,0xFFFFE8}, + [I(112,230)] = {27,0x57FFFE8}, + [I(113,230)] = {28,0xEDFFFE8}, + [I(114,230)] = {27,0x59FFFE8}, + [I(115,230)] = {26,0x11FFFE8}, + [I(116,230)] = {26,0x13FFFE8}, + [I(117,230)] = {27,0x5BFFFE8}, + [I(118,230)] = {28,0xEFFFFE8}, + [I(119,230)] = {28,0xF1FFFE8}, + [I(120,230)] = {28,0xF3FFFE8}, + [I(121,230)] = {28,0xF5FFFE8}, + [I(122,230)] = {28,0xF7FFFE8}, + [I(123,230)] = {64,0}, + [I(124,230)] = {X32,0xFF9FFFE8}, + [I(125,230)] = {64,0}, + [I(126,230)] = {64,0}, + [I(127,230)] = {64,0}, + [I(128,230)] = {64,0}, + [I(129,230)] = {64,0}, + [I(130,230)] = {64,0}, + [I(131,230)] = {64,0}, + [I(132,230)] = {64,0}, + [I(133,230)] = {64,0}, + [I(134,230)] = {64,0}, + [I(135,230)] = {64,0}, + [I(136,230)] = {64,0}, + [I(137,230)] = {64,0}, + [I(138,230)] = {64,0}, + [I(139,230)] = {64,0}, + [I(140,230)] = {64,0}, + [I(141,230)] = {64,0}, + [I(142,230)] = {64,0}, + [I(143,230)] = {64,0}, + [I(144,230)] = {64,0}, + [I(145,230)] = {64,0}, + [I(146,230)] = {64,0}, + [I(147,230)] = {64,0}, + [I(148,230)] = {64,0}, + [I(149,230)] = {64,0}, + [I(150,230)] = {64,0}, + [I(151,230)] = {64,0}, + [I(152,230)] = {64,0}, + [I(153,230)] = {64,0}, + [I(154,230)] = {64,0}, + [I(155,230)] = {64,0}, + [I(156,230)] = {64,0}, + [I(157,230)] = {64,0}, + [I(158,230)] = {64,0}, + [I(159,230)] = {64,0}, + [I(160,230)] = {64,0}, + [I(161,230)] = {64,0}, + [I(162,230)] = {64,0}, + [I(163,230)] = {64,0}, + [I(164,230)] = {64,0}, + [I(165,230)] = {64,0}, + [I(166,230)] = {64,0}, + [I(167,230)] = {64,0}, + [I(168,230)] = {64,0}, + [I(169,230)] = {64,0}, + [I(170,230)] = {64,0}, + [I(171,230)] = {64,0}, + [I(172,230)] = {64,0}, + [I(173,230)] = {64,0}, + [I(174,230)] = {64,0}, + [I(175,230)] = {64,0}, + [I(176,230)] = {64,0}, + [I(177,230)] = {64,0}, + [I(178,230)] = {64,0}, + [I(179,230)] = {64,0}, + [I(180,230)] = {64,0}, + [I(181,230)] = {64,0}, + [I(182,230)] = {64,0}, + [I(183,230)] = {64,0}, + [I(184,230)] = {64,0}, + [I(185,230)] = {64,0}, + [I(186,230)] = {64,0}, + [I(187,230)] = {64,0}, + [I(188,230)] = {64,0}, + [I(189,230)] = {64,0}, + [I(190,230)] = {64,0}, + [I(191,230)] = {64,0}, + [I(192,230)] = {64,0}, + [I(193,230)] = {64,0}, + [I(194,230)] = {64,0}, + [I(195,230)] = {64,0}, + [I(196,230)] = {64,0}, + [I(197,230)] = {64,0}, + [I(198,230)] = {64,0}, + [I(199,230)] = {64,0}, + [I(200,230)] = {64,0}, + [I(201,230)] = {64,0}, + [I(202,230)] = {64,0}, + [I(203,230)] = {64,0}, + [I(204,230)] = {64,0}, + [I(205,230)] = {64,0}, + [I(206,230)] = {64,0}, + [I(207,230)] = {64,0}, + [I(208,230)] = {64,0}, + [I(209,230)] = {64,0}, + [I(210,230)] = {64,0}, + [I(211,230)] = {64,0}, + [I(212,230)] = {64,0}, + [I(213,230)] = {64,0}, + [I(214,230)] = {64,0}, + [I(215,230)] = {64,0}, + [I(216,230)] = {64,0}, + [I(217,230)] = {64,0}, + [I(218,230)] = {64,0}, + [I(219,230)] = {64,0}, + [I(220,230)] = {64,0}, + [I(221,230)] = {64,0}, + [I(222,230)] = {64,0}, + [I(223,230)] = {64,0}, + [I(224,230)] = {64,0}, + [I(225,230)] = {64,0}, + [I(226,230)] = {64,0}, + [I(227,230)] = {64,0}, + [I(228,230)] = {64,0}, + [I(229,230)] = {64,0}, + [I(230,230)] = {64,0}, + [I(231,230)] = {64,0}, + [I(232,230)] = {64,0}, + [I(233,230)] = {64,0}, + [I(234,230)] = {64,0}, + [I(235,230)] = {64,0}, + [I(236,230)] = {64,0}, + [I(237,230)] = {64,0}, + [I(238,230)] = {64,0}, + [I(239,230)] = {64,0}, + [I(240,230)] = {64,0}, + [I(241,230)] = {64,0}, + [I(242,230)] = {64,0}, + [I(243,230)] = {64,0}, + [I(244,230)] = {64,0}, + [I(245,230)] = {64,0}, + [I(246,230)] = {64,0}, + [I(247,230)] = {64,0}, + [I(248,230)] = {64,0}, + [I(249,230)] = {64,0}, + [I(250,230)] = {64,0}, + [I(251,230)] = {64,0}, + [I(252,230)] = {64,0}, + [I(253,230)] = {64,0}, + [I(254,230)] = {64,0}, + [I(255,230)] = {64,0}, + [I(0,231)] = {64,0}, + [I(1,231)] = {64,0}, + [I(2,231)] = {64,0}, + [I(3,231)] = {64,0}, + [I(4,231)] = {64,0}, + [I(5,231)] = {64,0}, + [I(6,231)] = {64,0}, + [I(7,231)] = {64,0}, + [I(8,231)] = {64,0}, + [I(9,231)] = {64,0}, + [I(10,231)] = {64,0}, + [I(11,231)] = {64,0}, + [I(12,231)] = {64,0}, + [I(13,231)] = {64,0}, + [I(14,231)] = {64,0}, + [I(15,231)] = {64,0}, + [I(16,231)] = {64,0}, + [I(17,231)] = {64,0}, + [I(18,231)] = {64,0}, + [I(19,231)] = {64,0}, + [I(20,231)] = {64,0}, + [I(21,231)] = {64,0}, + [I(22,231)] = {64,0}, + [I(23,231)] = {64,0}, + [I(24,231)] = {64,0}, + [I(25,231)] = {64,0}, + [I(26,231)] = {64,0}, + [I(27,231)] = {64,0}, + [I(28,231)] = {64,0}, + [I(29,231)] = {64,0}, + [I(30,231)] = {64,0}, + [I(31,231)] = {64,0}, + [I(32,231)] = {29,0xA7FFFF3}, + [I(33,231)] = {64,0}, + [I(34,231)] = {64,0}, + [I(35,231)] = {64,0}, + [I(36,231)] = {64,0}, + [I(37,231)] = {29,0xAFFFFF3}, + [I(38,231)] = {31,0x7C7FFFF3}, + [I(39,231)] = {64,0}, + [I(40,231)] = {64,0}, + [I(41,231)] = {64,0}, + [I(42,231)] = {31,0x7CFFFFF3}, + [I(43,231)] = {64,0}, + [I(44,231)] = {31,0x7D7FFFF3}, + [I(45,231)] = {29,0xB7FFFF3}, + [I(46,231)] = {29,0xBFFFFF3}, + [I(47,231)] = {29,0xC7FFFF3}, + [I(48,231)] = {28,0x7FFFF3}, + [I(49,231)] = {28,0xFFFFF3}, + [I(50,231)] = {28,0x17FFFF3}, + [I(51,231)] = {29,0xCFFFFF3}, + [I(52,231)] = {29,0xD7FFFF3}, + [I(53,231)] = {29,0xDFFFFF3}, + [I(54,231)] = {29,0xE7FFFF3}, + [I(55,231)] = {29,0xEFFFFF3}, + [I(56,231)] = {29,0xF7FFFF3}, + [I(57,231)] = {29,0xFFFFFF3}, + [I(58,231)] = {30,0x2E7FFFF3}, + [I(59,231)] = {31,0x7DFFFFF3}, + [I(60,231)] = {64,0}, + [I(61,231)] = {29,0x107FFFF3}, + [I(62,231)] = {64,0}, + [I(63,231)] = {64,0}, + [I(64,231)] = {64,0}, + [I(65,231)] = {29,0x10FFFFF3}, + [I(66,231)] = {30,0x2EFFFFF3}, + [I(67,231)] = {30,0x2F7FFFF3}, + [I(68,231)] = {30,0x2FFFFFF3}, + [I(69,231)] = {30,0x307FFFF3}, + [I(70,231)] = {30,0x30FFFFF3}, + [I(71,231)] = {30,0x317FFFF3}, + [I(72,231)] = {30,0x31FFFFF3}, + [I(73,231)] = {30,0x327FFFF3}, + [I(74,231)] = {30,0x32FFFFF3}, + [I(75,231)] = {30,0x337FFFF3}, + [I(76,231)] = {30,0x33FFFFF3}, + [I(77,231)] = {30,0x347FFFF3}, + [I(78,231)] = {30,0x34FFFFF3}, + [I(79,231)] = {30,0x357FFFF3}, + [I(80,231)] = {30,0x35FFFFF3}, + [I(81,231)] = {30,0x367FFFF3}, + [I(82,231)] = {30,0x36FFFFF3}, + [I(83,231)] = {30,0x377FFFF3}, + [I(84,231)] = {30,0x37FFFFF3}, + [I(85,231)] = {30,0x387FFFF3}, + [I(86,231)] = {30,0x38FFFFF3}, + [I(87,231)] = {30,0x397FFFF3}, + [I(88,231)] = {31,0x7E7FFFF3}, + [I(89,231)] = {30,0x39FFFFF3}, + [I(90,231)] = {31,0x7EFFFFF3}, + [I(91,231)] = {64,0}, + [I(92,231)] = {64,0}, + [I(93,231)] = {64,0}, + [I(94,231)] = {64,0}, + [I(95,231)] = {29,0x117FFFF3}, + [I(96,231)] = {64,0}, + [I(97,231)] = {28,0x1FFFFF3}, + [I(98,231)] = {29,0x11FFFFF3}, + [I(99,231)] = {28,0x27FFFF3}, + [I(100,231)] = {29,0x127FFFF3}, + [I(101,231)] = {28,0x2FFFFF3}, + [I(102,231)] = {29,0x12FFFFF3}, + [I(103,231)] = {29,0x137FFFF3}, + [I(104,231)] = {29,0x13FFFFF3}, + [I(105,231)] = {28,0x37FFFF3}, + [I(106,231)] = {30,0x3A7FFFF3}, + [I(107,231)] = {30,0x3AFFFFF3}, + [I(108,231)] = {29,0x147FFFF3}, + [I(109,231)] = {29,0x14FFFFF3}, + [I(110,231)] = {29,0x157FFFF3}, + [I(111,231)] = {28,0x3FFFFF3}, + [I(112,231)] = {29,0x15FFFFF3}, + [I(113,231)] = {30,0x3B7FFFF3}, + [I(114,231)] = {29,0x167FFFF3}, + [I(115,231)] = {28,0x47FFFF3}, + [I(116,231)] = {28,0x4FFFFF3}, + [I(117,231)] = {29,0x16FFFFF3}, + [I(118,231)] = {30,0x3BFFFFF3}, + [I(119,231)] = {30,0x3C7FFFF3}, + [I(120,231)] = {30,0x3CFFFFF3}, + [I(121,231)] = {30,0x3D7FFFF3}, + [I(122,231)] = {30,0x3DFFFFF3}, + [I(123,231)] = {64,0}, + [I(124,231)] = {64,0}, + [I(125,231)] = {64,0}, + [I(126,231)] = {64,0}, + [I(127,231)] = {64,0}, + [I(128,231)] = {64,0}, + [I(129,231)] = {64,0}, + [I(130,231)] = {64,0}, + [I(131,231)] = {64,0}, + [I(132,231)] = {64,0}, + [I(133,231)] = {64,0}, + [I(134,231)] = {64,0}, + [I(135,231)] = {64,0}, + [I(136,231)] = {64,0}, + [I(137,231)] = {64,0}, + [I(138,231)] = {64,0}, + [I(139,231)] = {64,0}, + [I(140,231)] = {64,0}, + [I(141,231)] = {64,0}, + [I(142,231)] = {64,0}, + [I(143,231)] = {64,0}, + [I(144,231)] = {64,0}, + [I(145,231)] = {64,0}, + [I(146,231)] = {64,0}, + [I(147,231)] = {64,0}, + [I(148,231)] = {64,0}, + [I(149,231)] = {64,0}, + [I(150,231)] = {64,0}, + [I(151,231)] = {64,0}, + [I(152,231)] = {64,0}, + [I(153,231)] = {64,0}, + [I(154,231)] = {64,0}, + [I(155,231)] = {64,0}, + [I(156,231)] = {64,0}, + [I(157,231)] = {64,0}, + [I(158,231)] = {64,0}, + [I(159,231)] = {64,0}, + [I(160,231)] = {64,0}, + [I(161,231)] = {64,0}, + [I(162,231)] = {64,0}, + [I(163,231)] = {64,0}, + [I(164,231)] = {64,0}, + [I(165,231)] = {64,0}, + [I(166,231)] = {64,0}, + [I(167,231)] = {64,0}, + [I(168,231)] = {64,0}, + [I(169,231)] = {64,0}, + [I(170,231)] = {64,0}, + [I(171,231)] = {64,0}, + [I(172,231)] = {64,0}, + [I(173,231)] = {64,0}, + [I(174,231)] = {64,0}, + [I(175,231)] = {64,0}, + [I(176,231)] = {64,0}, + [I(177,231)] = {64,0}, + [I(178,231)] = {64,0}, + [I(179,231)] = {64,0}, + [I(180,231)] = {64,0}, + [I(181,231)] = {64,0}, + [I(182,231)] = {64,0}, + [I(183,231)] = {64,0}, + [I(184,231)] = {64,0}, + [I(185,231)] = {64,0}, + [I(186,231)] = {64,0}, + [I(187,231)] = {64,0}, + [I(188,231)] = {64,0}, + [I(189,231)] = {64,0}, + [I(190,231)] = {64,0}, + [I(191,231)] = {64,0}, + [I(192,231)] = {64,0}, + [I(193,231)] = {64,0}, + [I(194,231)] = {64,0}, + [I(195,231)] = {64,0}, + [I(196,231)] = {64,0}, + [I(197,231)] = {64,0}, + [I(198,231)] = {64,0}, + [I(199,231)] = {64,0}, + [I(200,231)] = {64,0}, + [I(201,231)] = {64,0}, + [I(202,231)] = {64,0}, + [I(203,231)] = {64,0}, + [I(204,231)] = {64,0}, + [I(205,231)] = {64,0}, + [I(206,231)] = {64,0}, + [I(207,231)] = {64,0}, + [I(208,231)] = {64,0}, + [I(209,231)] = {64,0}, + [I(210,231)] = {64,0}, + [I(211,231)] = {64,0}, + [I(212,231)] = {64,0}, + [I(213,231)] = {64,0}, + [I(214,231)] = {64,0}, + [I(215,231)] = {64,0}, + [I(216,231)] = {64,0}, + [I(217,231)] = {64,0}, + [I(218,231)] = {64,0}, + [I(219,231)] = {64,0}, + [I(220,231)] = {64,0}, + [I(221,231)] = {64,0}, + [I(222,231)] = {64,0}, + [I(223,231)] = {64,0}, + [I(224,231)] = {64,0}, + [I(225,231)] = {64,0}, + [I(226,231)] = {64,0}, + [I(227,231)] = {64,0}, + [I(228,231)] = {64,0}, + [I(229,231)] = {64,0}, + [I(230,231)] = {64,0}, + [I(231,231)] = {64,0}, + [I(232,231)] = {64,0}, + [I(233,231)] = {64,0}, + [I(234,231)] = {64,0}, + [I(235,231)] = {64,0}, + [I(236,231)] = {64,0}, + [I(237,231)] = {64,0}, + [I(238,231)] = {64,0}, + [I(239,231)] = {64,0}, + [I(240,231)] = {64,0}, + [I(241,231)] = {64,0}, + [I(242,231)] = {64,0}, + [I(243,231)] = {64,0}, + [I(244,231)] = {64,0}, + [I(245,231)] = {64,0}, + [I(246,231)] = {64,0}, + [I(247,231)] = {64,0}, + [I(248,231)] = {64,0}, + [I(249,231)] = {64,0}, + [I(250,231)] = {64,0}, + [I(251,231)] = {64,0}, + [I(252,231)] = {64,0}, + [I(253,231)] = {64,0}, + [I(254,231)] = {64,0}, + [I(255,231)] = {64,0}, + [I(0,232)] = {64,0}, + [I(1,232)] = {64,0}, + [I(2,232)] = {64,0}, + [I(3,232)] = {64,0}, + [I(4,232)] = {64,0}, + [I(5,232)] = {64,0}, + [I(6,232)] = {64,0}, + [I(7,232)] = {64,0}, + [I(8,232)] = {64,0}, + [I(9,232)] = {64,0}, + [I(10,232)] = {64,0}, + [I(11,232)] = {64,0}, + [I(12,232)] = {64,0}, + [I(13,232)] = {64,0}, + [I(14,232)] = {64,0}, + [I(15,232)] = {64,0}, + [I(16,232)] = {64,0}, + [I(17,232)] = {64,0}, + [I(18,232)] = {64,0}, + [I(19,232)] = {64,0}, + [I(20,232)] = {64,0}, + [I(21,232)] = {64,0}, + [I(22,232)] = {64,0}, + [I(23,232)] = {64,0}, + [I(24,232)] = {64,0}, + [I(25,232)] = {64,0}, + [I(26,232)] = {64,0}, + [I(27,232)] = {64,0}, + [I(28,232)] = {64,0}, + [I(29,232)] = {64,0}, + [I(30,232)] = {64,0}, + [I(31,232)] = {64,0}, + [I(32,232)] = {28,0x53FFFEA}, + [I(33,232)] = {X32,0xFE3FFFEA}, + [I(34,232)] = {X32,0xFE7FFFEA}, + [I(35,232)] = {64,0}, + [I(36,232)] = {64,0}, + [I(37,232)] = {28,0x57FFFEA}, + [I(38,232)] = {30,0x3E3FFFEA}, + [I(39,232)] = {64,0}, + [I(40,232)] = {X32,0xFEBFFFEA}, + [I(41,232)] = {X32,0xFEFFFFEA}, + [I(42,232)] = {30,0x3E7FFFEA}, + [I(43,232)] = {64,0}, + [I(44,232)] = {30,0x3EBFFFEA}, + [I(45,232)] = {28,0x5BFFFEA}, + [I(46,232)] = {28,0x5FFFFEA}, + [I(47,232)] = {28,0x63FFFEA}, + [I(48,232)] = {27,0x3FFFEA}, + [I(49,232)] = {27,0x7FFFEA}, + [I(50,232)] = {27,0xBFFFEA}, + [I(51,232)] = {28,0x67FFFEA}, + [I(52,232)] = {28,0x6BFFFEA}, + [I(53,232)] = {28,0x6FFFFEA}, + [I(54,232)] = {28,0x73FFFEA}, + [I(55,232)] = {28,0x77FFFEA}, + [I(56,232)] = {28,0x7BFFFEA}, + [I(57,232)] = {28,0x7FFFFEA}, + [I(58,232)] = {29,0x173FFFEA}, + [I(59,232)] = {30,0x3EFFFFEA}, + [I(60,232)] = {64,0}, + [I(61,232)] = {28,0x83FFFEA}, + [I(62,232)] = {64,0}, + [I(63,232)] = {X32,0xFF3FFFEA}, + [I(64,232)] = {64,0}, + [I(65,232)] = {28,0x87FFFEA}, + [I(66,232)] = {29,0x177FFFEA}, + [I(67,232)] = {29,0x17BFFFEA}, + [I(68,232)] = {29,0x17FFFFEA}, + [I(69,232)] = {29,0x183FFFEA}, + [I(70,232)] = {29,0x187FFFEA}, + [I(71,232)] = {29,0x18BFFFEA}, + [I(72,232)] = {29,0x18FFFFEA}, + [I(73,232)] = {29,0x193FFFEA}, + [I(74,232)] = {29,0x197FFFEA}, + [I(75,232)] = {29,0x19BFFFEA}, + [I(76,232)] = {29,0x19FFFFEA}, + [I(77,232)] = {29,0x1A3FFFEA}, + [I(78,232)] = {29,0x1A7FFFEA}, + [I(79,232)] = {29,0x1ABFFFEA}, + [I(80,232)] = {29,0x1AFFFFEA}, + [I(81,232)] = {29,0x1B3FFFEA}, + [I(82,232)] = {29,0x1B7FFFEA}, + [I(83,232)] = {29,0x1BBFFFEA}, + [I(84,232)] = {29,0x1BFFFFEA}, + [I(85,232)] = {29,0x1C3FFFEA}, + [I(86,232)] = {29,0x1C7FFFEA}, + [I(87,232)] = {29,0x1CBFFFEA}, + [I(88,232)] = {30,0x3F3FFFEA}, + [I(89,232)] = {29,0x1CFFFFEA}, + [I(90,232)] = {30,0x3F7FFFEA}, + [I(91,232)] = {64,0}, + [I(92,232)] = {64,0}, + [I(93,232)] = {64,0}, + [I(94,232)] = {64,0}, + [I(95,232)] = {28,0x8BFFFEA}, + [I(96,232)] = {64,0}, + [I(97,232)] = {27,0xFFFFEA}, + [I(98,232)] = {28,0x8FFFFEA}, + [I(99,232)] = {27,0x13FFFEA}, + [I(100,232)] = {28,0x93FFFEA}, + [I(101,232)] = {27,0x17FFFEA}, + [I(102,232)] = {28,0x97FFFEA}, + [I(103,232)] = {28,0x9BFFFEA}, + [I(104,232)] = {28,0x9FFFFEA}, + [I(105,232)] = {27,0x1BFFFEA}, + [I(106,232)] = {29,0x1D3FFFEA}, + [I(107,232)] = {29,0x1D7FFFEA}, + [I(108,232)] = {28,0xA3FFFEA}, + [I(109,232)] = {28,0xA7FFFEA}, + [I(110,232)] = {28,0xABFFFEA}, + [I(111,232)] = {27,0x1FFFFEA}, + [I(112,232)] = {28,0xAFFFFEA}, + [I(113,232)] = {29,0x1DBFFFEA}, + [I(114,232)] = {28,0xB3FFFEA}, + [I(115,232)] = {27,0x23FFFEA}, + [I(116,232)] = {27,0x27FFFEA}, + [I(117,232)] = {28,0xB7FFFEA}, + [I(118,232)] = {29,0x1DFFFFEA}, + [I(119,232)] = {29,0x1E3FFFEA}, + [I(120,232)] = {29,0x1E7FFFEA}, + [I(121,232)] = {29,0x1EBFFFEA}, + [I(122,232)] = {29,0x1EFFFFEA}, + [I(123,232)] = {64,0}, + [I(124,232)] = {64,0}, + [I(125,232)] = {64,0}, + [I(126,232)] = {64,0}, + [I(127,232)] = {64,0}, + [I(128,232)] = {64,0}, + [I(129,232)] = {64,0}, + [I(130,232)] = {64,0}, + [I(131,232)] = {64,0}, + [I(132,232)] = {64,0}, + [I(133,232)] = {64,0}, + [I(134,232)] = {64,0}, + [I(135,232)] = {64,0}, + [I(136,232)] = {64,0}, + [I(137,232)] = {64,0}, + [I(138,232)] = {64,0}, + [I(139,232)] = {64,0}, + [I(140,232)] = {64,0}, + [I(141,232)] = {64,0}, + [I(142,232)] = {64,0}, + [I(143,232)] = {64,0}, + [I(144,232)] = {64,0}, + [I(145,232)] = {64,0}, + [I(146,232)] = {64,0}, + [I(147,232)] = {64,0}, + [I(148,232)] = {64,0}, + [I(149,232)] = {64,0}, + [I(150,232)] = {64,0}, + [I(151,232)] = {64,0}, + [I(152,232)] = {64,0}, + [I(153,232)] = {64,0}, + [I(154,232)] = {64,0}, + [I(155,232)] = {64,0}, + [I(156,232)] = {64,0}, + [I(157,232)] = {64,0}, + [I(158,232)] = {64,0}, + [I(159,232)] = {64,0}, + [I(160,232)] = {64,0}, + [I(161,232)] = {64,0}, + [I(162,232)] = {64,0}, + [I(163,232)] = {64,0}, + [I(164,232)] = {64,0}, + [I(165,232)] = {64,0}, + [I(166,232)] = {64,0}, + [I(167,232)] = {64,0}, + [I(168,232)] = {64,0}, + [I(169,232)] = {64,0}, + [I(170,232)] = {64,0}, + [I(171,232)] = {64,0}, + [I(172,232)] = {64,0}, + [I(173,232)] = {64,0}, + [I(174,232)] = {64,0}, + [I(175,232)] = {64,0}, + [I(176,232)] = {64,0}, + [I(177,232)] = {64,0}, + [I(178,232)] = {64,0}, + [I(179,232)] = {64,0}, + [I(180,232)] = {64,0}, + [I(181,232)] = {64,0}, + [I(182,232)] = {64,0}, + [I(183,232)] = {64,0}, + [I(184,232)] = {64,0}, + [I(185,232)] = {64,0}, + [I(186,232)] = {64,0}, + [I(187,232)] = {64,0}, + [I(188,232)] = {64,0}, + [I(189,232)] = {64,0}, + [I(190,232)] = {64,0}, + [I(191,232)] = {64,0}, + [I(192,232)] = {64,0}, + [I(193,232)] = {64,0}, + [I(194,232)] = {64,0}, + [I(195,232)] = {64,0}, + [I(196,232)] = {64,0}, + [I(197,232)] = {64,0}, + [I(198,232)] = {64,0}, + [I(199,232)] = {64,0}, + [I(200,232)] = {64,0}, + [I(201,232)] = {64,0}, + [I(202,232)] = {64,0}, + [I(203,232)] = {64,0}, + [I(204,232)] = {64,0}, + [I(205,232)] = {64,0}, + [I(206,232)] = {64,0}, + [I(207,232)] = {64,0}, + [I(208,232)] = {64,0}, + [I(209,232)] = {64,0}, + [I(210,232)] = {64,0}, + [I(211,232)] = {64,0}, + [I(212,232)] = {64,0}, + [I(213,232)] = {64,0}, + [I(214,232)] = {64,0}, + [I(215,232)] = {64,0}, + [I(216,232)] = {64,0}, + [I(217,232)] = {64,0}, + [I(218,232)] = {64,0}, + [I(219,232)] = {64,0}, + [I(220,232)] = {64,0}, + [I(221,232)] = {64,0}, + [I(222,232)] = {64,0}, + [I(223,232)] = {64,0}, + [I(224,232)] = {64,0}, + [I(225,232)] = {64,0}, + [I(226,232)] = {64,0}, + [I(227,232)] = {64,0}, + [I(228,232)] = {64,0}, + [I(229,232)] = {64,0}, + [I(230,232)] = {64,0}, + [I(231,232)] = {64,0}, + [I(232,232)] = {64,0}, + [I(233,232)] = {64,0}, + [I(234,232)] = {64,0}, + [I(235,232)] = {64,0}, + [I(236,232)] = {64,0}, + [I(237,232)] = {64,0}, + [I(238,232)] = {64,0}, + [I(239,232)] = {64,0}, + [I(240,232)] = {64,0}, + [I(241,232)] = {64,0}, + [I(242,232)] = {64,0}, + [I(243,232)] = {64,0}, + [I(244,232)] = {64,0}, + [I(245,232)] = {64,0}, + [I(246,232)] = {64,0}, + [I(247,232)] = {64,0}, + [I(248,232)] = {64,0}, + [I(249,232)] = {64,0}, + [I(250,232)] = {64,0}, + [I(251,232)] = {64,0}, + [I(252,232)] = {64,0}, + [I(253,232)] = {64,0}, + [I(254,232)] = {64,0}, + [I(255,232)] = {64,0}, + [I(0,233)] = {64,0}, + [I(1,233)] = {64,0}, + [I(2,233)] = {64,0}, + [I(3,233)] = {64,0}, + [I(4,233)] = {64,0}, + [I(5,233)] = {64,0}, + [I(6,233)] = {64,0}, + [I(7,233)] = {64,0}, + [I(8,233)] = {64,0}, + [I(9,233)] = {64,0}, + [I(10,233)] = {64,0}, + [I(11,233)] = {64,0}, + [I(12,233)] = {64,0}, + [I(13,233)] = {64,0}, + [I(14,233)] = {64,0}, + [I(15,233)] = {64,0}, + [I(16,233)] = {64,0}, + [I(17,233)] = {64,0}, + [I(18,233)] = {64,0}, + [I(19,233)] = {64,0}, + [I(20,233)] = {64,0}, + [I(21,233)] = {64,0}, + [I(22,233)] = {64,0}, + [I(23,233)] = {64,0}, + [I(24,233)] = {64,0}, + [I(25,233)] = {64,0}, + [I(26,233)] = {64,0}, + [I(27,233)] = {64,0}, + [I(28,233)] = {64,0}, + [I(29,233)] = {64,0}, + [I(30,233)] = {64,0}, + [I(31,233)] = {64,0}, + [I(32,233)] = {28,0x53FFFEB}, + [I(33,233)] = {X32,0xFE3FFFEB}, + [I(34,233)] = {X32,0xFE7FFFEB}, + [I(35,233)] = {64,0}, + [I(36,233)] = {64,0}, + [I(37,233)] = {28,0x57FFFEB}, + [I(38,233)] = {30,0x3E3FFFEB}, + [I(39,233)] = {64,0}, + [I(40,233)] = {X32,0xFEBFFFEB}, + [I(41,233)] = {X32,0xFEFFFFEB}, + [I(42,233)] = {30,0x3E7FFFEB}, + [I(43,233)] = {64,0}, + [I(44,233)] = {30,0x3EBFFFEB}, + [I(45,233)] = {28,0x5BFFFEB}, + [I(46,233)] = {28,0x5FFFFEB}, + [I(47,233)] = {28,0x63FFFEB}, + [I(48,233)] = {27,0x3FFFEB}, + [I(49,233)] = {27,0x7FFFEB}, + [I(50,233)] = {27,0xBFFFEB}, + [I(51,233)] = {28,0x67FFFEB}, + [I(52,233)] = {28,0x6BFFFEB}, + [I(53,233)] = {28,0x6FFFFEB}, + [I(54,233)] = {28,0x73FFFEB}, + [I(55,233)] = {28,0x77FFFEB}, + [I(56,233)] = {28,0x7BFFFEB}, + [I(57,233)] = {28,0x7FFFFEB}, + [I(58,233)] = {29,0x173FFFEB}, + [I(59,233)] = {30,0x3EFFFFEB}, + [I(60,233)] = {64,0}, + [I(61,233)] = {28,0x83FFFEB}, + [I(62,233)] = {64,0}, + [I(63,233)] = {X32,0xFF3FFFEB}, + [I(64,233)] = {64,0}, + [I(65,233)] = {28,0x87FFFEB}, + [I(66,233)] = {29,0x177FFFEB}, + [I(67,233)] = {29,0x17BFFFEB}, + [I(68,233)] = {29,0x17FFFFEB}, + [I(69,233)] = {29,0x183FFFEB}, + [I(70,233)] = {29,0x187FFFEB}, + [I(71,233)] = {29,0x18BFFFEB}, + [I(72,233)] = {29,0x18FFFFEB}, + [I(73,233)] = {29,0x193FFFEB}, + [I(74,233)] = {29,0x197FFFEB}, + [I(75,233)] = {29,0x19BFFFEB}, + [I(76,233)] = {29,0x19FFFFEB}, + [I(77,233)] = {29,0x1A3FFFEB}, + [I(78,233)] = {29,0x1A7FFFEB}, + [I(79,233)] = {29,0x1ABFFFEB}, + [I(80,233)] = {29,0x1AFFFFEB}, + [I(81,233)] = {29,0x1B3FFFEB}, + [I(82,233)] = {29,0x1B7FFFEB}, + [I(83,233)] = {29,0x1BBFFFEB}, + [I(84,233)] = {29,0x1BFFFFEB}, + [I(85,233)] = {29,0x1C3FFFEB}, + [I(86,233)] = {29,0x1C7FFFEB}, + [I(87,233)] = {29,0x1CBFFFEB}, + [I(88,233)] = {30,0x3F3FFFEB}, + [I(89,233)] = {29,0x1CFFFFEB}, + [I(90,233)] = {30,0x3F7FFFEB}, + [I(91,233)] = {64,0}, + [I(92,233)] = {64,0}, + [I(93,233)] = {64,0}, + [I(94,233)] = {64,0}, + [I(95,233)] = {28,0x8BFFFEB}, + [I(96,233)] = {64,0}, + [I(97,233)] = {27,0xFFFFEB}, + [I(98,233)] = {28,0x8FFFFEB}, + [I(99,233)] = {27,0x13FFFEB}, + [I(100,233)] = {28,0x93FFFEB}, + [I(101,233)] = {27,0x17FFFEB}, + [I(102,233)] = {28,0x97FFFEB}, + [I(103,233)] = {28,0x9BFFFEB}, + [I(104,233)] = {28,0x9FFFFEB}, + [I(105,233)] = {27,0x1BFFFEB}, + [I(106,233)] = {29,0x1D3FFFEB}, + [I(107,233)] = {29,0x1D7FFFEB}, + [I(108,233)] = {28,0xA3FFFEB}, + [I(109,233)] = {28,0xA7FFFEB}, + [I(110,233)] = {28,0xABFFFEB}, + [I(111,233)] = {27,0x1FFFFEB}, + [I(112,233)] = {28,0xAFFFFEB}, + [I(113,233)] = {29,0x1DBFFFEB}, + [I(114,233)] = {28,0xB3FFFEB}, + [I(115,233)] = {27,0x23FFFEB}, + [I(116,233)] = {27,0x27FFFEB}, + [I(117,233)] = {28,0xB7FFFEB}, + [I(118,233)] = {29,0x1DFFFFEB}, + [I(119,233)] = {29,0x1E3FFFEB}, + [I(120,233)] = {29,0x1E7FFFEB}, + [I(121,233)] = {29,0x1EBFFFEB}, + [I(122,233)] = {29,0x1EFFFFEB}, + [I(123,233)] = {64,0}, + [I(124,233)] = {64,0}, + [I(125,233)] = {64,0}, + [I(126,233)] = {64,0}, + [I(127,233)] = {64,0}, + [I(128,233)] = {64,0}, + [I(129,233)] = {64,0}, + [I(130,233)] = {64,0}, + [I(131,233)] = {64,0}, + [I(132,233)] = {64,0}, + [I(133,233)] = {64,0}, + [I(134,233)] = {64,0}, + [I(135,233)] = {64,0}, + [I(136,233)] = {64,0}, + [I(137,233)] = {64,0}, + [I(138,233)] = {64,0}, + [I(139,233)] = {64,0}, + [I(140,233)] = {64,0}, + [I(141,233)] = {64,0}, + [I(142,233)] = {64,0}, + [I(143,233)] = {64,0}, + [I(144,233)] = {64,0}, + [I(145,233)] = {64,0}, + [I(146,233)] = {64,0}, + [I(147,233)] = {64,0}, + [I(148,233)] = {64,0}, + [I(149,233)] = {64,0}, + [I(150,233)] = {64,0}, + [I(151,233)] = {64,0}, + [I(152,233)] = {64,0}, + [I(153,233)] = {64,0}, + [I(154,233)] = {64,0}, + [I(155,233)] = {64,0}, + [I(156,233)] = {64,0}, + [I(157,233)] = {64,0}, + [I(158,233)] = {64,0}, + [I(159,233)] = {64,0}, + [I(160,233)] = {64,0}, + [I(161,233)] = {64,0}, + [I(162,233)] = {64,0}, + [I(163,233)] = {64,0}, + [I(164,233)] = {64,0}, + [I(165,233)] = {64,0}, + [I(166,233)] = {64,0}, + [I(167,233)] = {64,0}, + [I(168,233)] = {64,0}, + [I(169,233)] = {64,0}, + [I(170,233)] = {64,0}, + [I(171,233)] = {64,0}, + [I(172,233)] = {64,0}, + [I(173,233)] = {64,0}, + [I(174,233)] = {64,0}, + [I(175,233)] = {64,0}, + [I(176,233)] = {64,0}, + [I(177,233)] = {64,0}, + [I(178,233)] = {64,0}, + [I(179,233)] = {64,0}, + [I(180,233)] = {64,0}, + [I(181,233)] = {64,0}, + [I(182,233)] = {64,0}, + [I(183,233)] = {64,0}, + [I(184,233)] = {64,0}, + [I(185,233)] = {64,0}, + [I(186,233)] = {64,0}, + [I(187,233)] = {64,0}, + [I(188,233)] = {64,0}, + [I(189,233)] = {64,0}, + [I(190,233)] = {64,0}, + [I(191,233)] = {64,0}, + [I(192,233)] = {64,0}, + [I(193,233)] = {64,0}, + [I(194,233)] = {64,0}, + [I(195,233)] = {64,0}, + [I(196,233)] = {64,0}, + [I(197,233)] = {64,0}, + [I(198,233)] = {64,0}, + [I(199,233)] = {64,0}, + [I(200,233)] = {64,0}, + [I(201,233)] = {64,0}, + [I(202,233)] = {64,0}, + [I(203,233)] = {64,0}, + [I(204,233)] = {64,0}, + [I(205,233)] = {64,0}, + [I(206,233)] = {64,0}, + [I(207,233)] = {64,0}, + [I(208,233)] = {64,0}, + [I(209,233)] = {64,0}, + [I(210,233)] = {64,0}, + [I(211,233)] = {64,0}, + [I(212,233)] = {64,0}, + [I(213,233)] = {64,0}, + [I(214,233)] = {64,0}, + [I(215,233)] = {64,0}, + [I(216,233)] = {64,0}, + [I(217,233)] = {64,0}, + [I(218,233)] = {64,0}, + [I(219,233)] = {64,0}, + [I(220,233)] = {64,0}, + [I(221,233)] = {64,0}, + [I(222,233)] = {64,0}, + [I(223,233)] = {64,0}, + [I(224,233)] = {64,0}, + [I(225,233)] = {64,0}, + [I(226,233)] = {64,0}, + [I(227,233)] = {64,0}, + [I(228,233)] = {64,0}, + [I(229,233)] = {64,0}, + [I(230,233)] = {64,0}, + [I(231,233)] = {64,0}, + [I(232,233)] = {64,0}, + [I(233,233)] = {64,0}, + [I(234,233)] = {64,0}, + [I(235,233)] = {64,0}, + [I(236,233)] = {64,0}, + [I(237,233)] = {64,0}, + [I(238,233)] = {64,0}, + [I(239,233)] = {64,0}, + [I(240,233)] = {64,0}, + [I(241,233)] = {64,0}, + [I(242,233)] = {64,0}, + [I(243,233)] = {64,0}, + [I(244,233)] = {64,0}, + [I(245,233)] = {64,0}, + [I(246,233)] = {64,0}, + [I(247,233)] = {64,0}, + [I(248,233)] = {64,0}, + [I(249,233)] = {64,0}, + [I(250,233)] = {64,0}, + [I(251,233)] = {64,0}, + [I(252,233)] = {64,0}, + [I(253,233)] = {64,0}, + [I(254,233)] = {64,0}, + [I(255,233)] = {64,0}, + [I(0,234)] = {64,0}, + [I(1,234)] = {64,0}, + [I(2,234)] = {64,0}, + [I(3,234)] = {64,0}, + [I(4,234)] = {64,0}, + [I(5,234)] = {64,0}, + [I(6,234)] = {64,0}, + [I(7,234)] = {64,0}, + [I(8,234)] = {64,0}, + [I(9,234)] = {64,0}, + [I(10,234)] = {64,0}, + [I(11,234)] = {64,0}, + [I(12,234)] = {64,0}, + [I(13,234)] = {64,0}, + [I(14,234)] = {64,0}, + [I(15,234)] = {64,0}, + [I(16,234)] = {64,0}, + [I(17,234)] = {64,0}, + [I(18,234)] = {64,0}, + [I(19,234)] = {64,0}, + [I(20,234)] = {64,0}, + [I(21,234)] = {64,0}, + [I(22,234)] = {64,0}, + [I(23,234)] = {64,0}, + [I(24,234)] = {64,0}, + [I(25,234)] = {64,0}, + [I(26,234)] = {64,0}, + [I(27,234)] = {64,0}, + [I(28,234)] = {64,0}, + [I(29,234)] = {64,0}, + [I(30,234)] = {64,0}, + [I(31,234)] = {64,0}, + [I(32,234)] = {31,0x29FFFFEE}, + [I(33,234)] = {64,0}, + [I(34,234)] = {64,0}, + [I(35,234)] = {64,0}, + [I(36,234)] = {64,0}, + [I(37,234)] = {31,0x2BFFFFEE}, + [I(38,234)] = {64,0}, + [I(39,234)] = {64,0}, + [I(40,234)] = {64,0}, + [I(41,234)] = {64,0}, + [I(42,234)] = {64,0}, + [I(43,234)] = {64,0}, + [I(44,234)] = {64,0}, + [I(45,234)] = {31,0x2DFFFFEE}, + [I(46,234)] = {31,0x2FFFFFEE}, + [I(47,234)] = {31,0x31FFFFEE}, + [I(48,234)] = {30,0x1FFFFEE}, + [I(49,234)] = {30,0x3FFFFEE}, + [I(50,234)] = {30,0x5FFFFEE}, + [I(51,234)] = {31,0x33FFFFEE}, + [I(52,234)] = {31,0x35FFFFEE}, + [I(53,234)] = {31,0x37FFFFEE}, + [I(54,234)] = {31,0x39FFFFEE}, + [I(55,234)] = {31,0x3BFFFFEE}, + [I(56,234)] = {31,0x3DFFFFEE}, + [I(57,234)] = {31,0x3FFFFFEE}, + [I(58,234)] = {X32,0xB9FFFFEE}, + [I(59,234)] = {64,0}, + [I(60,234)] = {64,0}, + [I(61,234)] = {31,0x41FFFFEE}, + [I(62,234)] = {64,0}, + [I(63,234)] = {64,0}, + [I(64,234)] = {64,0}, + [I(65,234)] = {31,0x43FFFFEE}, + [I(66,234)] = {X32,0xBBFFFFEE}, + [I(67,234)] = {X32,0xBDFFFFEE}, + [I(68,234)] = {X32,0xBFFFFFEE}, + [I(69,234)] = {X32,0xC1FFFFEE}, + [I(70,234)] = {X32,0xC3FFFFEE}, + [I(71,234)] = {X32,0xC5FFFFEE}, + [I(72,234)] = {X32,0xC7FFFFEE}, + [I(73,234)] = {X32,0xC9FFFFEE}, + [I(74,234)] = {X32,0xCBFFFFEE}, + [I(75,234)] = {X32,0xCDFFFFEE}, + [I(76,234)] = {X32,0xCFFFFFEE}, + [I(77,234)] = {X32,0xD1FFFFEE}, + [I(78,234)] = {X32,0xD3FFFFEE}, + [I(79,234)] = {X32,0xD5FFFFEE}, + [I(80,234)] = {X32,0xD7FFFFEE}, + [I(81,234)] = {X32,0xD9FFFFEE}, + [I(82,234)] = {X32,0xDBFFFFEE}, + [I(83,234)] = {X32,0xDDFFFFEE}, + [I(84,234)] = {X32,0xDFFFFFEE}, + [I(85,234)] = {X32,0xE1FFFFEE}, + [I(86,234)] = {X32,0xE3FFFFEE}, + [I(87,234)] = {X32,0xE5FFFFEE}, + [I(88,234)] = {64,0}, + [I(89,234)] = {X32,0xE7FFFFEE}, + [I(90,234)] = {64,0}, + [I(91,234)] = {64,0}, + [I(92,234)] = {64,0}, + [I(93,234)] = {64,0}, + [I(94,234)] = {64,0}, + [I(95,234)] = {31,0x45FFFFEE}, + [I(96,234)] = {64,0}, + [I(97,234)] = {30,0x7FFFFEE}, + [I(98,234)] = {31,0x47FFFFEE}, + [I(99,234)] = {30,0x9FFFFEE}, + [I(100,234)] = {31,0x49FFFFEE}, + [I(101,234)] = {30,0xBFFFFEE}, + [I(102,234)] = {31,0x4BFFFFEE}, + [I(103,234)] = {31,0x4DFFFFEE}, + [I(104,234)] = {31,0x4FFFFFEE}, + [I(105,234)] = {30,0xDFFFFEE}, + [I(106,234)] = {X32,0xE9FFFFEE}, + [I(107,234)] = {X32,0xEBFFFFEE}, + [I(108,234)] = {31,0x51FFFFEE}, + [I(109,234)] = {31,0x53FFFFEE}, + [I(110,234)] = {31,0x55FFFFEE}, + [I(111,234)] = {30,0xFFFFFEE}, + [I(112,234)] = {31,0x57FFFFEE}, + [I(113,234)] = {X32,0xEDFFFFEE}, + [I(114,234)] = {31,0x59FFFFEE}, + [I(115,234)] = {30,0x11FFFFEE}, + [I(116,234)] = {30,0x13FFFFEE}, + [I(117,234)] = {31,0x5BFFFFEE}, + [I(118,234)] = {X32,0xEFFFFFEE}, + [I(119,234)] = {X32,0xF1FFFFEE}, + [I(120,234)] = {X32,0xF3FFFFEE}, + [I(121,234)] = {X32,0xF5FFFFEE}, + [I(122,234)] = {X32,0xF7FFFFEE}, + [I(123,234)] = {64,0}, + [I(124,234)] = {64,0}, + [I(125,234)] = {64,0}, + [I(126,234)] = {64,0}, + [I(127,234)] = {64,0}, + [I(128,234)] = {64,0}, + [I(129,234)] = {64,0}, + [I(130,234)] = {64,0}, + [I(131,234)] = {64,0}, + [I(132,234)] = {64,0}, + [I(133,234)] = {64,0}, + [I(134,234)] = {64,0}, + [I(135,234)] = {64,0}, + [I(136,234)] = {64,0}, + [I(137,234)] = {64,0}, + [I(138,234)] = {64,0}, + [I(139,234)] = {64,0}, + [I(140,234)] = {64,0}, + [I(141,234)] = {64,0}, + [I(142,234)] = {64,0}, + [I(143,234)] = {64,0}, + [I(144,234)] = {64,0}, + [I(145,234)] = {64,0}, + [I(146,234)] = {64,0}, + [I(147,234)] = {64,0}, + [I(148,234)] = {64,0}, + [I(149,234)] = {64,0}, + [I(150,234)] = {64,0}, + [I(151,234)] = {64,0}, + [I(152,234)] = {64,0}, + [I(153,234)] = {64,0}, + [I(154,234)] = {64,0}, + [I(155,234)] = {64,0}, + [I(156,234)] = {64,0}, + [I(157,234)] = {64,0}, + [I(158,234)] = {64,0}, + [I(159,234)] = {64,0}, + [I(160,234)] = {64,0}, + [I(161,234)] = {64,0}, + [I(162,234)] = {64,0}, + [I(163,234)] = {64,0}, + [I(164,234)] = {64,0}, + [I(165,234)] = {64,0}, + [I(166,234)] = {64,0}, + [I(167,234)] = {64,0}, + [I(168,234)] = {64,0}, + [I(169,234)] = {64,0}, + [I(170,234)] = {64,0}, + [I(171,234)] = {64,0}, + [I(172,234)] = {64,0}, + [I(173,234)] = {64,0}, + [I(174,234)] = {64,0}, + [I(175,234)] = {64,0}, + [I(176,234)] = {64,0}, + [I(177,234)] = {64,0}, + [I(178,234)] = {64,0}, + [I(179,234)] = {64,0}, + [I(180,234)] = {64,0}, + [I(181,234)] = {64,0}, + [I(182,234)] = {64,0}, + [I(183,234)] = {64,0}, + [I(184,234)] = {64,0}, + [I(185,234)] = {64,0}, + [I(186,234)] = {64,0}, + [I(187,234)] = {64,0}, + [I(188,234)] = {64,0}, + [I(189,234)] = {64,0}, + [I(190,234)] = {64,0}, + [I(191,234)] = {64,0}, + [I(192,234)] = {64,0}, + [I(193,234)] = {64,0}, + [I(194,234)] = {64,0}, + [I(195,234)] = {64,0}, + [I(196,234)] = {64,0}, + [I(197,234)] = {64,0}, + [I(198,234)] = {64,0}, + [I(199,234)] = {64,0}, + [I(200,234)] = {64,0}, + [I(201,234)] = {64,0}, + [I(202,234)] = {64,0}, + [I(203,234)] = {64,0}, + [I(204,234)] = {64,0}, + [I(205,234)] = {64,0}, + [I(206,234)] = {64,0}, + [I(207,234)] = {64,0}, + [I(208,234)] = {64,0}, + [I(209,234)] = {64,0}, + [I(210,234)] = {64,0}, + [I(211,234)] = {64,0}, + [I(212,234)] = {64,0}, + [I(213,234)] = {64,0}, + [I(214,234)] = {64,0}, + [I(215,234)] = {64,0}, + [I(216,234)] = {64,0}, + [I(217,234)] = {64,0}, + [I(218,234)] = {64,0}, + [I(219,234)] = {64,0}, + [I(220,234)] = {64,0}, + [I(221,234)] = {64,0}, + [I(222,234)] = {64,0}, + [I(223,234)] = {64,0}, + [I(224,234)] = {64,0}, + [I(225,234)] = {64,0}, + [I(226,234)] = {64,0}, + [I(227,234)] = {64,0}, + [I(228,234)] = {64,0}, + [I(229,234)] = {64,0}, + [I(230,234)] = {64,0}, + [I(231,234)] = {64,0}, + [I(232,234)] = {64,0}, + [I(233,234)] = {64,0}, + [I(234,234)] = {64,0}, + [I(235,234)] = {64,0}, + [I(236,234)] = {64,0}, + [I(237,234)] = {64,0}, + [I(238,234)] = {64,0}, + [I(239,234)] = {64,0}, + [I(240,234)] = {64,0}, + [I(241,234)] = {64,0}, + [I(242,234)] = {64,0}, + [I(243,234)] = {64,0}, + [I(244,234)] = {64,0}, + [I(245,234)] = {64,0}, + [I(246,234)] = {64,0}, + [I(247,234)] = {64,0}, + [I(248,234)] = {64,0}, + [I(249,234)] = {64,0}, + [I(250,234)] = {64,0}, + [I(251,234)] = {64,0}, + [I(252,234)] = {64,0}, + [I(253,234)] = {64,0}, + [I(254,234)] = {64,0}, + [I(255,234)] = {64,0}, + [I(0,235)] = {64,0}, + [I(1,235)] = {64,0}, + [I(2,235)] = {64,0}, + [I(3,235)] = {64,0}, + [I(4,235)] = {64,0}, + [I(5,235)] = {64,0}, + [I(6,235)] = {64,0}, + [I(7,235)] = {64,0}, + [I(8,235)] = {64,0}, + [I(9,235)] = {64,0}, + [I(10,235)] = {64,0}, + [I(11,235)] = {64,0}, + [I(12,235)] = {64,0}, + [I(13,235)] = {64,0}, + [I(14,235)] = {64,0}, + [I(15,235)] = {64,0}, + [I(16,235)] = {64,0}, + [I(17,235)] = {64,0}, + [I(18,235)] = {64,0}, + [I(19,235)] = {64,0}, + [I(20,235)] = {64,0}, + [I(21,235)] = {64,0}, + [I(22,235)] = {64,0}, + [I(23,235)] = {64,0}, + [I(24,235)] = {64,0}, + [I(25,235)] = {64,0}, + [I(26,235)] = {64,0}, + [I(27,235)] = {64,0}, + [I(28,235)] = {64,0}, + [I(29,235)] = {64,0}, + [I(30,235)] = {64,0}, + [I(31,235)] = {64,0}, + [I(32,235)] = {31,0x29FFFFEF}, + [I(33,235)] = {64,0}, + [I(34,235)] = {64,0}, + [I(35,235)] = {64,0}, + [I(36,235)] = {64,0}, + [I(37,235)] = {31,0x2BFFFFEF}, + [I(38,235)] = {64,0}, + [I(39,235)] = {64,0}, + [I(40,235)] = {64,0}, + [I(41,235)] = {64,0}, + [I(42,235)] = {64,0}, + [I(43,235)] = {64,0}, + [I(44,235)] = {64,0}, + [I(45,235)] = {31,0x2DFFFFEF}, + [I(46,235)] = {31,0x2FFFFFEF}, + [I(47,235)] = {31,0x31FFFFEF}, + [I(48,235)] = {30,0x1FFFFEF}, + [I(49,235)] = {30,0x3FFFFEF}, + [I(50,235)] = {30,0x5FFFFEF}, + [I(51,235)] = {31,0x33FFFFEF}, + [I(52,235)] = {31,0x35FFFFEF}, + [I(53,235)] = {31,0x37FFFFEF}, + [I(54,235)] = {31,0x39FFFFEF}, + [I(55,235)] = {31,0x3BFFFFEF}, + [I(56,235)] = {31,0x3DFFFFEF}, + [I(57,235)] = {31,0x3FFFFFEF}, + [I(58,235)] = {X32,0xB9FFFFEF}, + [I(59,235)] = {64,0}, + [I(60,235)] = {64,0}, + [I(61,235)] = {31,0x41FFFFEF}, + [I(62,235)] = {64,0}, + [I(63,235)] = {64,0}, + [I(64,235)] = {64,0}, + [I(65,235)] = {31,0x43FFFFEF}, + [I(66,235)] = {X32,0xBBFFFFEF}, + [I(67,235)] = {X32,0xBDFFFFEF}, + [I(68,235)] = {X32,0xBFFFFFEF}, + [I(69,235)] = {X32,0xC1FFFFEF}, + [I(70,235)] = {X32,0xC3FFFFEF}, + [I(71,235)] = {X32,0xC5FFFFEF}, + [I(72,235)] = {X32,0xC7FFFFEF}, + [I(73,235)] = {X32,0xC9FFFFEF}, + [I(74,235)] = {X32,0xCBFFFFEF}, + [I(75,235)] = {X32,0xCDFFFFEF}, + [I(76,235)] = {X32,0xCFFFFFEF}, + [I(77,235)] = {X32,0xD1FFFFEF}, + [I(78,235)] = {X32,0xD3FFFFEF}, + [I(79,235)] = {X32,0xD5FFFFEF}, + [I(80,235)] = {X32,0xD7FFFFEF}, + [I(81,235)] = {X32,0xD9FFFFEF}, + [I(82,235)] = {X32,0xDBFFFFEF}, + [I(83,235)] = {X32,0xDDFFFFEF}, + [I(84,235)] = {X32,0xDFFFFFEF}, + [I(85,235)] = {X32,0xE1FFFFEF}, + [I(86,235)] = {X32,0xE3FFFFEF}, + [I(87,235)] = {X32,0xE5FFFFEF}, + [I(88,235)] = {64,0}, + [I(89,235)] = {X32,0xE7FFFFEF}, + [I(90,235)] = {64,0}, + [I(91,235)] = {64,0}, + [I(92,235)] = {64,0}, + [I(93,235)] = {64,0}, + [I(94,235)] = {64,0}, + [I(95,235)] = {31,0x45FFFFEF}, + [I(96,235)] = {64,0}, + [I(97,235)] = {30,0x7FFFFEF}, + [I(98,235)] = {31,0x47FFFFEF}, + [I(99,235)] = {30,0x9FFFFEF}, + [I(100,235)] = {31,0x49FFFFEF}, + [I(101,235)] = {30,0xBFFFFEF}, + [I(102,235)] = {31,0x4BFFFFEF}, + [I(103,235)] = {31,0x4DFFFFEF}, + [I(104,235)] = {31,0x4FFFFFEF}, + [I(105,235)] = {30,0xDFFFFEF}, + [I(106,235)] = {X32,0xE9FFFFEF}, + [I(107,235)] = {X32,0xEBFFFFEF}, + [I(108,235)] = {31,0x51FFFFEF}, + [I(109,235)] = {31,0x53FFFFEF}, + [I(110,235)] = {31,0x55FFFFEF}, + [I(111,235)] = {30,0xFFFFFEF}, + [I(112,235)] = {31,0x57FFFFEF}, + [I(113,235)] = {X32,0xEDFFFFEF}, + [I(114,235)] = {31,0x59FFFFEF}, + [I(115,235)] = {30,0x11FFFFEF}, + [I(116,235)] = {30,0x13FFFFEF}, + [I(117,235)] = {31,0x5BFFFFEF}, + [I(118,235)] = {X32,0xEFFFFFEF}, + [I(119,235)] = {X32,0xF1FFFFEF}, + [I(120,235)] = {X32,0xF3FFFFEF}, + [I(121,235)] = {X32,0xF5FFFFEF}, + [I(122,235)] = {X32,0xF7FFFFEF}, + [I(123,235)] = {64,0}, + [I(124,235)] = {64,0}, + [I(125,235)] = {64,0}, + [I(126,235)] = {64,0}, + [I(127,235)] = {64,0}, + [I(128,235)] = {64,0}, + [I(129,235)] = {64,0}, + [I(130,235)] = {64,0}, + [I(131,235)] = {64,0}, + [I(132,235)] = {64,0}, + [I(133,235)] = {64,0}, + [I(134,235)] = {64,0}, + [I(135,235)] = {64,0}, + [I(136,235)] = {64,0}, + [I(137,235)] = {64,0}, + [I(138,235)] = {64,0}, + [I(139,235)] = {64,0}, + [I(140,235)] = {64,0}, + [I(141,235)] = {64,0}, + [I(142,235)] = {64,0}, + [I(143,235)] = {64,0}, + [I(144,235)] = {64,0}, + [I(145,235)] = {64,0}, + [I(146,235)] = {64,0}, + [I(147,235)] = {64,0}, + [I(148,235)] = {64,0}, + [I(149,235)] = {64,0}, + [I(150,235)] = {64,0}, + [I(151,235)] = {64,0}, + [I(152,235)] = {64,0}, + [I(153,235)] = {64,0}, + [I(154,235)] = {64,0}, + [I(155,235)] = {64,0}, + [I(156,235)] = {64,0}, + [I(157,235)] = {64,0}, + [I(158,235)] = {64,0}, + [I(159,235)] = {64,0}, + [I(160,235)] = {64,0}, + [I(161,235)] = {64,0}, + [I(162,235)] = {64,0}, + [I(163,235)] = {64,0}, + [I(164,235)] = {64,0}, + [I(165,235)] = {64,0}, + [I(166,235)] = {64,0}, + [I(167,235)] = {64,0}, + [I(168,235)] = {64,0}, + [I(169,235)] = {64,0}, + [I(170,235)] = {64,0}, + [I(171,235)] = {64,0}, + [I(172,235)] = {64,0}, + [I(173,235)] = {64,0}, + [I(174,235)] = {64,0}, + [I(175,235)] = {64,0}, + [I(176,235)] = {64,0}, + [I(177,235)] = {64,0}, + [I(178,235)] = {64,0}, + [I(179,235)] = {64,0}, + [I(180,235)] = {64,0}, + [I(181,235)] = {64,0}, + [I(182,235)] = {64,0}, + [I(183,235)] = {64,0}, + [I(184,235)] = {64,0}, + [I(185,235)] = {64,0}, + [I(186,235)] = {64,0}, + [I(187,235)] = {64,0}, + [I(188,235)] = {64,0}, + [I(189,235)] = {64,0}, + [I(190,235)] = {64,0}, + [I(191,235)] = {64,0}, + [I(192,235)] = {64,0}, + [I(193,235)] = {64,0}, + [I(194,235)] = {64,0}, + [I(195,235)] = {64,0}, + [I(196,235)] = {64,0}, + [I(197,235)] = {64,0}, + [I(198,235)] = {64,0}, + [I(199,235)] = {64,0}, + [I(200,235)] = {64,0}, + [I(201,235)] = {64,0}, + [I(202,235)] = {64,0}, + [I(203,235)] = {64,0}, + [I(204,235)] = {64,0}, + [I(205,235)] = {64,0}, + [I(206,235)] = {64,0}, + [I(207,235)] = {64,0}, + [I(208,235)] = {64,0}, + [I(209,235)] = {64,0}, + [I(210,235)] = {64,0}, + [I(211,235)] = {64,0}, + [I(212,235)] = {64,0}, + [I(213,235)] = {64,0}, + [I(214,235)] = {64,0}, + [I(215,235)] = {64,0}, + [I(216,235)] = {64,0}, + [I(217,235)] = {64,0}, + [I(218,235)] = {64,0}, + [I(219,235)] = {64,0}, + [I(220,235)] = {64,0}, + [I(221,235)] = {64,0}, + [I(222,235)] = {64,0}, + [I(223,235)] = {64,0}, + [I(224,235)] = {64,0}, + [I(225,235)] = {64,0}, + [I(226,235)] = {64,0}, + [I(227,235)] = {64,0}, + [I(228,235)] = {64,0}, + [I(229,235)] = {64,0}, + [I(230,235)] = {64,0}, + [I(231,235)] = {64,0}, + [I(232,235)] = {64,0}, + [I(233,235)] = {64,0}, + [I(234,235)] = {64,0}, + [I(235,235)] = {64,0}, + [I(236,235)] = {64,0}, + [I(237,235)] = {64,0}, + [I(238,235)] = {64,0}, + [I(239,235)] = {64,0}, + [I(240,235)] = {64,0}, + [I(241,235)] = {64,0}, + [I(242,235)] = {64,0}, + [I(243,235)] = {64,0}, + [I(244,235)] = {64,0}, + [I(245,235)] = {64,0}, + [I(246,235)] = {64,0}, + [I(247,235)] = {64,0}, + [I(248,235)] = {64,0}, + [I(249,235)] = {64,0}, + [I(250,235)] = {64,0}, + [I(251,235)] = {64,0}, + [I(252,235)] = {64,0}, + [I(253,235)] = {64,0}, + [I(254,235)] = {64,0}, + [I(255,235)] = {64,0}, + [I(0,236)] = {64,0}, + [I(1,236)] = {64,0}, + [I(2,236)] = {64,0}, + [I(3,236)] = {64,0}, + [I(4,236)] = {64,0}, + [I(5,236)] = {64,0}, + [I(6,236)] = {64,0}, + [I(7,236)] = {64,0}, + [I(8,236)] = {64,0}, + [I(9,236)] = {64,0}, + [I(10,236)] = {64,0}, + [I(11,236)] = {64,0}, + [I(12,236)] = {64,0}, + [I(13,236)] = {64,0}, + [I(14,236)] = {64,0}, + [I(15,236)] = {64,0}, + [I(16,236)] = {64,0}, + [I(17,236)] = {64,0}, + [I(18,236)] = {64,0}, + [I(19,236)] = {64,0}, + [I(20,236)] = {64,0}, + [I(21,236)] = {64,0}, + [I(22,236)] = {64,0}, + [I(23,236)] = {64,0}, + [I(24,236)] = {64,0}, + [I(25,236)] = {64,0}, + [I(26,236)] = {64,0}, + [I(27,236)] = {64,0}, + [I(28,236)] = {64,0}, + [I(29,236)] = {64,0}, + [I(30,236)] = {64,0}, + [I(31,236)] = {64,0}, + [I(32,236)] = {30,0x14FFFFF4}, + [I(33,236)] = {64,0}, + [I(34,236)] = {64,0}, + [I(35,236)] = {64,0}, + [I(36,236)] = {64,0}, + [I(37,236)] = {30,0x15FFFFF4}, + [I(38,236)] = {X32,0xF8FFFFF4}, + [I(39,236)] = {64,0}, + [I(40,236)] = {64,0}, + [I(41,236)] = {64,0}, + [I(42,236)] = {X32,0xF9FFFFF4}, + [I(43,236)] = {64,0}, + [I(44,236)] = {X32,0xFAFFFFF4}, + [I(45,236)] = {30,0x16FFFFF4}, + [I(46,236)] = {30,0x17FFFFF4}, + [I(47,236)] = {30,0x18FFFFF4}, + [I(48,236)] = {29,0xFFFFF4}, + [I(49,236)] = {29,0x1FFFFF4}, + [I(50,236)] = {29,0x2FFFFF4}, + [I(51,236)] = {30,0x19FFFFF4}, + [I(52,236)] = {30,0x1AFFFFF4}, + [I(53,236)] = {30,0x1BFFFFF4}, + [I(54,236)] = {30,0x1CFFFFF4}, + [I(55,236)] = {30,0x1DFFFFF4}, + [I(56,236)] = {30,0x1EFFFFF4}, + [I(57,236)] = {30,0x1FFFFFF4}, + [I(58,236)] = {31,0x5CFFFFF4}, + [I(59,236)] = {X32,0xFBFFFFF4}, + [I(60,236)] = {64,0}, + [I(61,236)] = {30,0x20FFFFF4}, + [I(62,236)] = {64,0}, + [I(63,236)] = {64,0}, + [I(64,236)] = {64,0}, + [I(65,236)] = {30,0x21FFFFF4}, + [I(66,236)] = {31,0x5DFFFFF4}, + [I(67,236)] = {31,0x5EFFFFF4}, + [I(68,236)] = {31,0x5FFFFFF4}, + [I(69,236)] = {31,0x60FFFFF4}, + [I(70,236)] = {31,0x61FFFFF4}, + [I(71,236)] = {31,0x62FFFFF4}, + [I(72,236)] = {31,0x63FFFFF4}, + [I(73,236)] = {31,0x64FFFFF4}, + [I(74,236)] = {31,0x65FFFFF4}, + [I(75,236)] = {31,0x66FFFFF4}, + [I(76,236)] = {31,0x67FFFFF4}, + [I(77,236)] = {31,0x68FFFFF4}, + [I(78,236)] = {31,0x69FFFFF4}, + [I(79,236)] = {31,0x6AFFFFF4}, + [I(80,236)] = {31,0x6BFFFFF4}, + [I(81,236)] = {31,0x6CFFFFF4}, + [I(82,236)] = {31,0x6DFFFFF4}, + [I(83,236)] = {31,0x6EFFFFF4}, + [I(84,236)] = {31,0x6FFFFFF4}, + [I(85,236)] = {31,0x70FFFFF4}, + [I(86,236)] = {31,0x71FFFFF4}, + [I(87,236)] = {31,0x72FFFFF4}, + [I(88,236)] = {X32,0xFCFFFFF4}, + [I(89,236)] = {31,0x73FFFFF4}, + [I(90,236)] = {X32,0xFDFFFFF4}, + [I(91,236)] = {64,0}, + [I(92,236)] = {64,0}, + [I(93,236)] = {64,0}, + [I(94,236)] = {64,0}, + [I(95,236)] = {30,0x22FFFFF4}, + [I(96,236)] = {64,0}, + [I(97,236)] = {29,0x3FFFFF4}, + [I(98,236)] = {30,0x23FFFFF4}, + [I(99,236)] = {29,0x4FFFFF4}, + [I(100,236)] = {30,0x24FFFFF4}, + [I(101,236)] = {29,0x5FFFFF4}, + [I(102,236)] = {30,0x25FFFFF4}, + [I(103,236)] = {30,0x26FFFFF4}, + [I(104,236)] = {30,0x27FFFFF4}, + [I(105,236)] = {29,0x6FFFFF4}, + [I(106,236)] = {31,0x74FFFFF4}, + [I(107,236)] = {31,0x75FFFFF4}, + [I(108,236)] = {30,0x28FFFFF4}, + [I(109,236)] = {30,0x29FFFFF4}, + [I(110,236)] = {30,0x2AFFFFF4}, + [I(111,236)] = {29,0x7FFFFF4}, + [I(112,236)] = {30,0x2BFFFFF4}, + [I(113,236)] = {31,0x76FFFFF4}, + [I(114,236)] = {30,0x2CFFFFF4}, + [I(115,236)] = {29,0x8FFFFF4}, + [I(116,236)] = {29,0x9FFFFF4}, + [I(117,236)] = {30,0x2DFFFFF4}, + [I(118,236)] = {31,0x77FFFFF4}, + [I(119,236)] = {31,0x78FFFFF4}, + [I(120,236)] = {31,0x79FFFFF4}, + [I(121,236)] = {31,0x7AFFFFF4}, + [I(122,236)] = {31,0x7BFFFFF4}, + [I(123,236)] = {64,0}, + [I(124,236)] = {64,0}, + [I(125,236)] = {64,0}, + [I(126,236)] = {64,0}, + [I(127,236)] = {64,0}, + [I(128,236)] = {64,0}, + [I(129,236)] = {64,0}, + [I(130,236)] = {64,0}, + [I(131,236)] = {64,0}, + [I(132,236)] = {64,0}, + [I(133,236)] = {64,0}, + [I(134,236)] = {64,0}, + [I(135,236)] = {64,0}, + [I(136,236)] = {64,0}, + [I(137,236)] = {64,0}, + [I(138,236)] = {64,0}, + [I(139,236)] = {64,0}, + [I(140,236)] = {64,0}, + [I(141,236)] = {64,0}, + [I(142,236)] = {64,0}, + [I(143,236)] = {64,0}, + [I(144,236)] = {64,0}, + [I(145,236)] = {64,0}, + [I(146,236)] = {64,0}, + [I(147,236)] = {64,0}, + [I(148,236)] = {64,0}, + [I(149,236)] = {64,0}, + [I(150,236)] = {64,0}, + [I(151,236)] = {64,0}, + [I(152,236)] = {64,0}, + [I(153,236)] = {64,0}, + [I(154,236)] = {64,0}, + [I(155,236)] = {64,0}, + [I(156,236)] = {64,0}, + [I(157,236)] = {64,0}, + [I(158,236)] = {64,0}, + [I(159,236)] = {64,0}, + [I(160,236)] = {64,0}, + [I(161,236)] = {64,0}, + [I(162,236)] = {64,0}, + [I(163,236)] = {64,0}, + [I(164,236)] = {64,0}, + [I(165,236)] = {64,0}, + [I(166,236)] = {64,0}, + [I(167,236)] = {64,0}, + [I(168,236)] = {64,0}, + [I(169,236)] = {64,0}, + [I(170,236)] = {64,0}, + [I(171,236)] = {64,0}, + [I(172,236)] = {64,0}, + [I(173,236)] = {64,0}, + [I(174,236)] = {64,0}, + [I(175,236)] = {64,0}, + [I(176,236)] = {64,0}, + [I(177,236)] = {64,0}, + [I(178,236)] = {64,0}, + [I(179,236)] = {64,0}, + [I(180,236)] = {64,0}, + [I(181,236)] = {64,0}, + [I(182,236)] = {64,0}, + [I(183,236)] = {64,0}, + [I(184,236)] = {64,0}, + [I(185,236)] = {64,0}, + [I(186,236)] = {64,0}, + [I(187,236)] = {64,0}, + [I(188,236)] = {64,0}, + [I(189,236)] = {64,0}, + [I(190,236)] = {64,0}, + [I(191,236)] = {64,0}, + [I(192,236)] = {64,0}, + [I(193,236)] = {64,0}, + [I(194,236)] = {64,0}, + [I(195,236)] = {64,0}, + [I(196,236)] = {64,0}, + [I(197,236)] = {64,0}, + [I(198,236)] = {64,0}, + [I(199,236)] = {64,0}, + [I(200,236)] = {64,0}, + [I(201,236)] = {64,0}, + [I(202,236)] = {64,0}, + [I(203,236)] = {64,0}, + [I(204,236)] = {64,0}, + [I(205,236)] = {64,0}, + [I(206,236)] = {64,0}, + [I(207,236)] = {64,0}, + [I(208,236)] = {64,0}, + [I(209,236)] = {64,0}, + [I(210,236)] = {64,0}, + [I(211,236)] = {64,0}, + [I(212,236)] = {64,0}, + [I(213,236)] = {64,0}, + [I(214,236)] = {64,0}, + [I(215,236)] = {64,0}, + [I(216,236)] = {64,0}, + [I(217,236)] = {64,0}, + [I(218,236)] = {64,0}, + [I(219,236)] = {64,0}, + [I(220,236)] = {64,0}, + [I(221,236)] = {64,0}, + [I(222,236)] = {64,0}, + [I(223,236)] = {64,0}, + [I(224,236)] = {64,0}, + [I(225,236)] = {64,0}, + [I(226,236)] = {64,0}, + [I(227,236)] = {64,0}, + [I(228,236)] = {64,0}, + [I(229,236)] = {64,0}, + [I(230,236)] = {64,0}, + [I(231,236)] = {64,0}, + [I(232,236)] = {64,0}, + [I(233,236)] = {64,0}, + [I(234,236)] = {64,0}, + [I(235,236)] = {64,0}, + [I(236,236)] = {64,0}, + [I(237,236)] = {64,0}, + [I(238,236)] = {64,0}, + [I(239,236)] = {64,0}, + [I(240,236)] = {64,0}, + [I(241,236)] = {64,0}, + [I(242,236)] = {64,0}, + [I(243,236)] = {64,0}, + [I(244,236)] = {64,0}, + [I(245,236)] = {64,0}, + [I(246,236)] = {64,0}, + [I(247,236)] = {64,0}, + [I(248,236)] = {64,0}, + [I(249,236)] = {64,0}, + [I(250,236)] = {64,0}, + [I(251,236)] = {64,0}, + [I(252,236)] = {64,0}, + [I(253,236)] = {64,0}, + [I(254,236)] = {64,0}, + [I(255,236)] = {64,0}, + [I(0,237)] = {64,0}, + [I(1,237)] = {64,0}, + [I(2,237)] = {64,0}, + [I(3,237)] = {64,0}, + [I(4,237)] = {64,0}, + [I(5,237)] = {64,0}, + [I(6,237)] = {64,0}, + [I(7,237)] = {64,0}, + [I(8,237)] = {64,0}, + [I(9,237)] = {64,0}, + [I(10,237)] = {64,0}, + [I(11,237)] = {64,0}, + [I(12,237)] = {64,0}, + [I(13,237)] = {64,0}, + [I(14,237)] = {64,0}, + [I(15,237)] = {64,0}, + [I(16,237)] = {64,0}, + [I(17,237)] = {64,0}, + [I(18,237)] = {64,0}, + [I(19,237)] = {64,0}, + [I(20,237)] = {64,0}, + [I(21,237)] = {64,0}, + [I(22,237)] = {64,0}, + [I(23,237)] = {64,0}, + [I(24,237)] = {64,0}, + [I(25,237)] = {64,0}, + [I(26,237)] = {64,0}, + [I(27,237)] = {64,0}, + [I(28,237)] = {64,0}, + [I(29,237)] = {64,0}, + [I(30,237)] = {64,0}, + [I(31,237)] = {64,0}, + [I(32,237)] = {30,0x14FFFFF5}, + [I(33,237)] = {64,0}, + [I(34,237)] = {64,0}, + [I(35,237)] = {64,0}, + [I(36,237)] = {64,0}, + [I(37,237)] = {30,0x15FFFFF5}, + [I(38,237)] = {X32,0xF8FFFFF5}, + [I(39,237)] = {64,0}, + [I(40,237)] = {64,0}, + [I(41,237)] = {64,0}, + [I(42,237)] = {X32,0xF9FFFFF5}, + [I(43,237)] = {64,0}, + [I(44,237)] = {X32,0xFAFFFFF5}, + [I(45,237)] = {30,0x16FFFFF5}, + [I(46,237)] = {30,0x17FFFFF5}, + [I(47,237)] = {30,0x18FFFFF5}, + [I(48,237)] = {29,0xFFFFF5}, + [I(49,237)] = {29,0x1FFFFF5}, + [I(50,237)] = {29,0x2FFFFF5}, + [I(51,237)] = {30,0x19FFFFF5}, + [I(52,237)] = {30,0x1AFFFFF5}, + [I(53,237)] = {30,0x1BFFFFF5}, + [I(54,237)] = {30,0x1CFFFFF5}, + [I(55,237)] = {30,0x1DFFFFF5}, + [I(56,237)] = {30,0x1EFFFFF5}, + [I(57,237)] = {30,0x1FFFFFF5}, + [I(58,237)] = {31,0x5CFFFFF5}, + [I(59,237)] = {X32,0xFBFFFFF5}, + [I(60,237)] = {64,0}, + [I(61,237)] = {30,0x20FFFFF5}, + [I(62,237)] = {64,0}, + [I(63,237)] = {64,0}, + [I(64,237)] = {64,0}, + [I(65,237)] = {30,0x21FFFFF5}, + [I(66,237)] = {31,0x5DFFFFF5}, + [I(67,237)] = {31,0x5EFFFFF5}, + [I(68,237)] = {31,0x5FFFFFF5}, + [I(69,237)] = {31,0x60FFFFF5}, + [I(70,237)] = {31,0x61FFFFF5}, + [I(71,237)] = {31,0x62FFFFF5}, + [I(72,237)] = {31,0x63FFFFF5}, + [I(73,237)] = {31,0x64FFFFF5}, + [I(74,237)] = {31,0x65FFFFF5}, + [I(75,237)] = {31,0x66FFFFF5}, + [I(76,237)] = {31,0x67FFFFF5}, + [I(77,237)] = {31,0x68FFFFF5}, + [I(78,237)] = {31,0x69FFFFF5}, + [I(79,237)] = {31,0x6AFFFFF5}, + [I(80,237)] = {31,0x6BFFFFF5}, + [I(81,237)] = {31,0x6CFFFFF5}, + [I(82,237)] = {31,0x6DFFFFF5}, + [I(83,237)] = {31,0x6EFFFFF5}, + [I(84,237)] = {31,0x6FFFFFF5}, + [I(85,237)] = {31,0x70FFFFF5}, + [I(86,237)] = {31,0x71FFFFF5}, + [I(87,237)] = {31,0x72FFFFF5}, + [I(88,237)] = {X32,0xFCFFFFF5}, + [I(89,237)] = {31,0x73FFFFF5}, + [I(90,237)] = {X32,0xFDFFFFF5}, + [I(91,237)] = {64,0}, + [I(92,237)] = {64,0}, + [I(93,237)] = {64,0}, + [I(94,237)] = {64,0}, + [I(95,237)] = {30,0x22FFFFF5}, + [I(96,237)] = {64,0}, + [I(97,237)] = {29,0x3FFFFF5}, + [I(98,237)] = {30,0x23FFFFF5}, + [I(99,237)] = {29,0x4FFFFF5}, + [I(100,237)] = {30,0x24FFFFF5}, + [I(101,237)] = {29,0x5FFFFF5}, + [I(102,237)] = {30,0x25FFFFF5}, + [I(103,237)] = {30,0x26FFFFF5}, + [I(104,237)] = {30,0x27FFFFF5}, + [I(105,237)] = {29,0x6FFFFF5}, + [I(106,237)] = {31,0x74FFFFF5}, + [I(107,237)] = {31,0x75FFFFF5}, + [I(108,237)] = {30,0x28FFFFF5}, + [I(109,237)] = {30,0x29FFFFF5}, + [I(110,237)] = {30,0x2AFFFFF5}, + [I(111,237)] = {29,0x7FFFFF5}, + [I(112,237)] = {30,0x2BFFFFF5}, + [I(113,237)] = {31,0x76FFFFF5}, + [I(114,237)] = {30,0x2CFFFFF5}, + [I(115,237)] = {29,0x8FFFFF5}, + [I(116,237)] = {29,0x9FFFFF5}, + [I(117,237)] = {30,0x2DFFFFF5}, + [I(118,237)] = {31,0x77FFFFF5}, + [I(119,237)] = {31,0x78FFFFF5}, + [I(120,237)] = {31,0x79FFFFF5}, + [I(121,237)] = {31,0x7AFFFFF5}, + [I(122,237)] = {31,0x7BFFFFF5}, + [I(123,237)] = {64,0}, + [I(124,237)] = {64,0}, + [I(125,237)] = {64,0}, + [I(126,237)] = {64,0}, + [I(127,237)] = {64,0}, + [I(128,237)] = {64,0}, + [I(129,237)] = {64,0}, + [I(130,237)] = {64,0}, + [I(131,237)] = {64,0}, + [I(132,237)] = {64,0}, + [I(133,237)] = {64,0}, + [I(134,237)] = {64,0}, + [I(135,237)] = {64,0}, + [I(136,237)] = {64,0}, + [I(137,237)] = {64,0}, + [I(138,237)] = {64,0}, + [I(139,237)] = {64,0}, + [I(140,237)] = {64,0}, + [I(141,237)] = {64,0}, + [I(142,237)] = {64,0}, + [I(143,237)] = {64,0}, + [I(144,237)] = {64,0}, + [I(145,237)] = {64,0}, + [I(146,237)] = {64,0}, + [I(147,237)] = {64,0}, + [I(148,237)] = {64,0}, + [I(149,237)] = {64,0}, + [I(150,237)] = {64,0}, + [I(151,237)] = {64,0}, + [I(152,237)] = {64,0}, + [I(153,237)] = {64,0}, + [I(154,237)] = {64,0}, + [I(155,237)] = {64,0}, + [I(156,237)] = {64,0}, + [I(157,237)] = {64,0}, + [I(158,237)] = {64,0}, + [I(159,237)] = {64,0}, + [I(160,237)] = {64,0}, + [I(161,237)] = {64,0}, + [I(162,237)] = {64,0}, + [I(163,237)] = {64,0}, + [I(164,237)] = {64,0}, + [I(165,237)] = {64,0}, + [I(166,237)] = {64,0}, + [I(167,237)] = {64,0}, + [I(168,237)] = {64,0}, + [I(169,237)] = {64,0}, + [I(170,237)] = {64,0}, + [I(171,237)] = {64,0}, + [I(172,237)] = {64,0}, + [I(173,237)] = {64,0}, + [I(174,237)] = {64,0}, + [I(175,237)] = {64,0}, + [I(176,237)] = {64,0}, + [I(177,237)] = {64,0}, + [I(178,237)] = {64,0}, + [I(179,237)] = {64,0}, + [I(180,237)] = {64,0}, + [I(181,237)] = {64,0}, + [I(182,237)] = {64,0}, + [I(183,237)] = {64,0}, + [I(184,237)] = {64,0}, + [I(185,237)] = {64,0}, + [I(186,237)] = {64,0}, + [I(187,237)] = {64,0}, + [I(188,237)] = {64,0}, + [I(189,237)] = {64,0}, + [I(190,237)] = {64,0}, + [I(191,237)] = {64,0}, + [I(192,237)] = {64,0}, + [I(193,237)] = {64,0}, + [I(194,237)] = {64,0}, + [I(195,237)] = {64,0}, + [I(196,237)] = {64,0}, + [I(197,237)] = {64,0}, + [I(198,237)] = {64,0}, + [I(199,237)] = {64,0}, + [I(200,237)] = {64,0}, + [I(201,237)] = {64,0}, + [I(202,237)] = {64,0}, + [I(203,237)] = {64,0}, + [I(204,237)] = {64,0}, + [I(205,237)] = {64,0}, + [I(206,237)] = {64,0}, + [I(207,237)] = {64,0}, + [I(208,237)] = {64,0}, + [I(209,237)] = {64,0}, + [I(210,237)] = {64,0}, + [I(211,237)] = {64,0}, + [I(212,237)] = {64,0}, + [I(213,237)] = {64,0}, + [I(214,237)] = {64,0}, + [I(215,237)] = {64,0}, + [I(216,237)] = {64,0}, + [I(217,237)] = {64,0}, + [I(218,237)] = {64,0}, + [I(219,237)] = {64,0}, + [I(220,237)] = {64,0}, + [I(221,237)] = {64,0}, + [I(222,237)] = {64,0}, + [I(223,237)] = {64,0}, + [I(224,237)] = {64,0}, + [I(225,237)] = {64,0}, + [I(226,237)] = {64,0}, + [I(227,237)] = {64,0}, + [I(228,237)] = {64,0}, + [I(229,237)] = {64,0}, + [I(230,237)] = {64,0}, + [I(231,237)] = {64,0}, + [I(232,237)] = {64,0}, + [I(233,237)] = {64,0}, + [I(234,237)] = {64,0}, + [I(235,237)] = {64,0}, + [I(236,237)] = {64,0}, + [I(237,237)] = {64,0}, + [I(238,237)] = {64,0}, + [I(239,237)] = {64,0}, + [I(240,237)] = {64,0}, + [I(241,237)] = {64,0}, + [I(242,237)] = {64,0}, + [I(243,237)] = {64,0}, + [I(244,237)] = {64,0}, + [I(245,237)] = {64,0}, + [I(246,237)] = {64,0}, + [I(247,237)] = {64,0}, + [I(248,237)] = {64,0}, + [I(249,237)] = {64,0}, + [I(250,237)] = {64,0}, + [I(251,237)] = {64,0}, + [I(252,237)] = {64,0}, + [I(253,237)] = {64,0}, + [I(254,237)] = {64,0}, + [I(255,237)] = {64,0}, + [I(0,238)] = {64,0}, + [I(1,238)] = {64,0}, + [I(2,238)] = {64,0}, + [I(3,238)] = {64,0}, + [I(4,238)] = {64,0}, + [I(5,238)] = {64,0}, + [I(6,238)] = {64,0}, + [I(7,238)] = {64,0}, + [I(8,238)] = {64,0}, + [I(9,238)] = {64,0}, + [I(10,238)] = {64,0}, + [I(11,238)] = {64,0}, + [I(12,238)] = {64,0}, + [I(13,238)] = {64,0}, + [I(14,238)] = {64,0}, + [I(15,238)] = {64,0}, + [I(16,238)] = {64,0}, + [I(17,238)] = {64,0}, + [I(18,238)] = {64,0}, + [I(19,238)] = {64,0}, + [I(20,238)] = {64,0}, + [I(21,238)] = {64,0}, + [I(22,238)] = {64,0}, + [I(23,238)] = {64,0}, + [I(24,238)] = {64,0}, + [I(25,238)] = {64,0}, + [I(26,238)] = {64,0}, + [I(27,238)] = {64,0}, + [I(28,238)] = {64,0}, + [I(29,238)] = {64,0}, + [I(30,238)] = {64,0}, + [I(31,238)] = {64,0}, + [I(32,238)] = {X32,0x53FFFFEA}, + [I(33,238)] = {64,0}, + [I(34,238)] = {64,0}, + [I(35,238)] = {64,0}, + [I(36,238)] = {64,0}, + [I(37,238)] = {X32,0x57FFFFEA}, + [I(38,238)] = {64,0}, + [I(39,238)] = {64,0}, + [I(40,238)] = {64,0}, + [I(41,238)] = {64,0}, + [I(42,238)] = {64,0}, + [I(43,238)] = {64,0}, + [I(44,238)] = {64,0}, + [I(45,238)] = {X32,0x5BFFFFEA}, + [I(46,238)] = {X32,0x5FFFFFEA}, + [I(47,238)] = {X32,0x63FFFFEA}, + [I(48,238)] = {31,0x3FFFFEA}, + [I(49,238)] = {31,0x7FFFFEA}, + [I(50,238)] = {31,0xBFFFFEA}, + [I(51,238)] = {X32,0x67FFFFEA}, + [I(52,238)] = {X32,0x6BFFFFEA}, + [I(53,238)] = {X32,0x6FFFFFEA}, + [I(54,238)] = {X32,0x73FFFFEA}, + [I(55,238)] = {X32,0x77FFFFEA}, + [I(56,238)] = {X32,0x7BFFFFEA}, + [I(57,238)] = {X32,0x7FFFFFEA}, + [I(58,238)] = {64,0}, + [I(59,238)] = {64,0}, + [I(60,238)] = {64,0}, + [I(61,238)] = {X32,0x83FFFFEA}, + [I(62,238)] = {64,0}, + [I(63,238)] = {64,0}, + [I(64,238)] = {64,0}, + [I(65,238)] = {X32,0x87FFFFEA}, + [I(66,238)] = {64,0}, + [I(67,238)] = {64,0}, + [I(68,238)] = {64,0}, + [I(69,238)] = {64,0}, + [I(70,238)] = {64,0}, + [I(71,238)] = {64,0}, + [I(72,238)] = {64,0}, + [I(73,238)] = {64,0}, + [I(74,238)] = {64,0}, + [I(75,238)] = {64,0}, + [I(76,238)] = {64,0}, + [I(77,238)] = {64,0}, + [I(78,238)] = {64,0}, + [I(79,238)] = {64,0}, + [I(80,238)] = {64,0}, + [I(81,238)] = {64,0}, + [I(82,238)] = {64,0}, + [I(83,238)] = {64,0}, + [I(84,238)] = {64,0}, + [I(85,238)] = {64,0}, + [I(86,238)] = {64,0}, + [I(87,238)] = {64,0}, + [I(88,238)] = {64,0}, + [I(89,238)] = {64,0}, + [I(90,238)] = {64,0}, + [I(91,238)] = {64,0}, + [I(92,238)] = {64,0}, + [I(93,238)] = {64,0}, + [I(94,238)] = {64,0}, + [I(95,238)] = {X32,0x8BFFFFEA}, + [I(96,238)] = {64,0}, + [I(97,238)] = {31,0xFFFFFEA}, + [I(98,238)] = {X32,0x8FFFFFEA}, + [I(99,238)] = {31,0x13FFFFEA}, + [I(100,238)] = {X32,0x93FFFFEA}, + [I(101,238)] = {31,0x17FFFFEA}, + [I(102,238)] = {X32,0x97FFFFEA}, + [I(103,238)] = {X32,0x9BFFFFEA}, + [I(104,238)] = {X32,0x9FFFFFEA}, + [I(105,238)] = {31,0x1BFFFFEA}, + [I(106,238)] = {64,0}, + [I(107,238)] = {64,0}, + [I(108,238)] = {X32,0xA3FFFFEA}, + [I(109,238)] = {X32,0xA7FFFFEA}, + [I(110,238)] = {X32,0xABFFFFEA}, + [I(111,238)] = {31,0x1FFFFFEA}, + [I(112,238)] = {X32,0xAFFFFFEA}, + [I(113,238)] = {64,0}, + [I(114,238)] = {X32,0xB3FFFFEA}, + [I(115,238)] = {31,0x23FFFFEA}, + [I(116,238)] = {31,0x27FFFFEA}, + [I(117,238)] = {X32,0xB7FFFFEA}, + [I(118,238)] = {64,0}, + [I(119,238)] = {64,0}, + [I(120,238)] = {64,0}, + [I(121,238)] = {64,0}, + [I(122,238)] = {64,0}, + [I(123,238)] = {64,0}, + [I(124,238)] = {64,0}, + [I(125,238)] = {64,0}, + [I(126,238)] = {64,0}, + [I(127,238)] = {64,0}, + [I(128,238)] = {64,0}, + [I(129,238)] = {64,0}, + [I(130,238)] = {64,0}, + [I(131,238)] = {64,0}, + [I(132,238)] = {64,0}, + [I(133,238)] = {64,0}, + [I(134,238)] = {64,0}, + [I(135,238)] = {64,0}, + [I(136,238)] = {64,0}, + [I(137,238)] = {64,0}, + [I(138,238)] = {64,0}, + [I(139,238)] = {64,0}, + [I(140,238)] = {64,0}, + [I(141,238)] = {64,0}, + [I(142,238)] = {64,0}, + [I(143,238)] = {64,0}, + [I(144,238)] = {64,0}, + [I(145,238)] = {64,0}, + [I(146,238)] = {64,0}, + [I(147,238)] = {64,0}, + [I(148,238)] = {64,0}, + [I(149,238)] = {64,0}, + [I(150,238)] = {64,0}, + [I(151,238)] = {64,0}, + [I(152,238)] = {64,0}, + [I(153,238)] = {64,0}, + [I(154,238)] = {64,0}, + [I(155,238)] = {64,0}, + [I(156,238)] = {64,0}, + [I(157,238)] = {64,0}, + [I(158,238)] = {64,0}, + [I(159,238)] = {64,0}, + [I(160,238)] = {64,0}, + [I(161,238)] = {64,0}, + [I(162,238)] = {64,0}, + [I(163,238)] = {64,0}, + [I(164,238)] = {64,0}, + [I(165,238)] = {64,0}, + [I(166,238)] = {64,0}, + [I(167,238)] = {64,0}, + [I(168,238)] = {64,0}, + [I(169,238)] = {64,0}, + [I(170,238)] = {64,0}, + [I(171,238)] = {64,0}, + [I(172,238)] = {64,0}, + [I(173,238)] = {64,0}, + [I(174,238)] = {64,0}, + [I(175,238)] = {64,0}, + [I(176,238)] = {64,0}, + [I(177,238)] = {64,0}, + [I(178,238)] = {64,0}, + [I(179,238)] = {64,0}, + [I(180,238)] = {64,0}, + [I(181,238)] = {64,0}, + [I(182,238)] = {64,0}, + [I(183,238)] = {64,0}, + [I(184,238)] = {64,0}, + [I(185,238)] = {64,0}, + [I(186,238)] = {64,0}, + [I(187,238)] = {64,0}, + [I(188,238)] = {64,0}, + [I(189,238)] = {64,0}, + [I(190,238)] = {64,0}, + [I(191,238)] = {64,0}, + [I(192,238)] = {64,0}, + [I(193,238)] = {64,0}, + [I(194,238)] = {64,0}, + [I(195,238)] = {64,0}, + [I(196,238)] = {64,0}, + [I(197,238)] = {64,0}, + [I(198,238)] = {64,0}, + [I(199,238)] = {64,0}, + [I(200,238)] = {64,0}, + [I(201,238)] = {64,0}, + [I(202,238)] = {64,0}, + [I(203,238)] = {64,0}, + [I(204,238)] = {64,0}, + [I(205,238)] = {64,0}, + [I(206,238)] = {64,0}, + [I(207,238)] = {64,0}, + [I(208,238)] = {64,0}, + [I(209,238)] = {64,0}, + [I(210,238)] = {64,0}, + [I(211,238)] = {64,0}, + [I(212,238)] = {64,0}, + [I(213,238)] = {64,0}, + [I(214,238)] = {64,0}, + [I(215,238)] = {64,0}, + [I(216,238)] = {64,0}, + [I(217,238)] = {64,0}, + [I(218,238)] = {64,0}, + [I(219,238)] = {64,0}, + [I(220,238)] = {64,0}, + [I(221,238)] = {64,0}, + [I(222,238)] = {64,0}, + [I(223,238)] = {64,0}, + [I(224,238)] = {64,0}, + [I(225,238)] = {64,0}, + [I(226,238)] = {64,0}, + [I(227,238)] = {64,0}, + [I(228,238)] = {64,0}, + [I(229,238)] = {64,0}, + [I(230,238)] = {64,0}, + [I(231,238)] = {64,0}, + [I(232,238)] = {64,0}, + [I(233,238)] = {64,0}, + [I(234,238)] = {64,0}, + [I(235,238)] = {64,0}, + [I(236,238)] = {64,0}, + [I(237,238)] = {64,0}, + [I(238,238)] = {64,0}, + [I(239,238)] = {64,0}, + [I(240,238)] = {64,0}, + [I(241,238)] = {64,0}, + [I(242,238)] = {64,0}, + [I(243,238)] = {64,0}, + [I(244,238)] = {64,0}, + [I(245,238)] = {64,0}, + [I(246,238)] = {64,0}, + [I(247,238)] = {64,0}, + [I(248,238)] = {64,0}, + [I(249,238)] = {64,0}, + [I(250,238)] = {64,0}, + [I(251,238)] = {64,0}, + [I(252,238)] = {64,0}, + [I(253,238)] = {64,0}, + [I(254,238)] = {64,0}, + [I(255,238)] = {64,0}, + [I(0,239)] = {64,0}, + [I(1,239)] = {64,0}, + [I(2,239)] = {64,0}, + [I(3,239)] = {64,0}, + [I(4,239)] = {64,0}, + [I(5,239)] = {64,0}, + [I(6,239)] = {64,0}, + [I(7,239)] = {64,0}, + [I(8,239)] = {64,0}, + [I(9,239)] = {64,0}, + [I(10,239)] = {64,0}, + [I(11,239)] = {64,0}, + [I(12,239)] = {64,0}, + [I(13,239)] = {64,0}, + [I(14,239)] = {64,0}, + [I(15,239)] = {64,0}, + [I(16,239)] = {64,0}, + [I(17,239)] = {64,0}, + [I(18,239)] = {64,0}, + [I(19,239)] = {64,0}, + [I(20,239)] = {64,0}, + [I(21,239)] = {64,0}, + [I(22,239)] = {64,0}, + [I(23,239)] = {64,0}, + [I(24,239)] = {64,0}, + [I(25,239)] = {64,0}, + [I(26,239)] = {64,0}, + [I(27,239)] = {64,0}, + [I(28,239)] = {64,0}, + [I(29,239)] = {64,0}, + [I(30,239)] = {64,0}, + [I(31,239)] = {64,0}, + [I(32,239)] = {29,0xA7FFFF4}, + [I(33,239)] = {64,0}, + [I(34,239)] = {64,0}, + [I(35,239)] = {64,0}, + [I(36,239)] = {64,0}, + [I(37,239)] = {29,0xAFFFFF4}, + [I(38,239)] = {31,0x7C7FFFF4}, + [I(39,239)] = {64,0}, + [I(40,239)] = {64,0}, + [I(41,239)] = {64,0}, + [I(42,239)] = {31,0x7CFFFFF4}, + [I(43,239)] = {64,0}, + [I(44,239)] = {31,0x7D7FFFF4}, + [I(45,239)] = {29,0xB7FFFF4}, + [I(46,239)] = {29,0xBFFFFF4}, + [I(47,239)] = {29,0xC7FFFF4}, + [I(48,239)] = {28,0x7FFFF4}, + [I(49,239)] = {28,0xFFFFF4}, + [I(50,239)] = {28,0x17FFFF4}, + [I(51,239)] = {29,0xCFFFFF4}, + [I(52,239)] = {29,0xD7FFFF4}, + [I(53,239)] = {29,0xDFFFFF4}, + [I(54,239)] = {29,0xE7FFFF4}, + [I(55,239)] = {29,0xEFFFFF4}, + [I(56,239)] = {29,0xF7FFFF4}, + [I(57,239)] = {29,0xFFFFFF4}, + [I(58,239)] = {30,0x2E7FFFF4}, + [I(59,239)] = {31,0x7DFFFFF4}, + [I(60,239)] = {64,0}, + [I(61,239)] = {29,0x107FFFF4}, + [I(62,239)] = {64,0}, + [I(63,239)] = {64,0}, + [I(64,239)] = {64,0}, + [I(65,239)] = {29,0x10FFFFF4}, + [I(66,239)] = {30,0x2EFFFFF4}, + [I(67,239)] = {30,0x2F7FFFF4}, + [I(68,239)] = {30,0x2FFFFFF4}, + [I(69,239)] = {30,0x307FFFF4}, + [I(70,239)] = {30,0x30FFFFF4}, + [I(71,239)] = {30,0x317FFFF4}, + [I(72,239)] = {30,0x31FFFFF4}, + [I(73,239)] = {30,0x327FFFF4}, + [I(74,239)] = {30,0x32FFFFF4}, + [I(75,239)] = {30,0x337FFFF4}, + [I(76,239)] = {30,0x33FFFFF4}, + [I(77,239)] = {30,0x347FFFF4}, + [I(78,239)] = {30,0x34FFFFF4}, + [I(79,239)] = {30,0x357FFFF4}, + [I(80,239)] = {30,0x35FFFFF4}, + [I(81,239)] = {30,0x367FFFF4}, + [I(82,239)] = {30,0x36FFFFF4}, + [I(83,239)] = {30,0x377FFFF4}, + [I(84,239)] = {30,0x37FFFFF4}, + [I(85,239)] = {30,0x387FFFF4}, + [I(86,239)] = {30,0x38FFFFF4}, + [I(87,239)] = {30,0x397FFFF4}, + [I(88,239)] = {31,0x7E7FFFF4}, + [I(89,239)] = {30,0x39FFFFF4}, + [I(90,239)] = {31,0x7EFFFFF4}, + [I(91,239)] = {64,0}, + [I(92,239)] = {64,0}, + [I(93,239)] = {64,0}, + [I(94,239)] = {64,0}, + [I(95,239)] = {29,0x117FFFF4}, + [I(96,239)] = {64,0}, + [I(97,239)] = {28,0x1FFFFF4}, + [I(98,239)] = {29,0x11FFFFF4}, + [I(99,239)] = {28,0x27FFFF4}, + [I(100,239)] = {29,0x127FFFF4}, + [I(101,239)] = {28,0x2FFFFF4}, + [I(102,239)] = {29,0x12FFFFF4}, + [I(103,239)] = {29,0x137FFFF4}, + [I(104,239)] = {29,0x13FFFFF4}, + [I(105,239)] = {28,0x37FFFF4}, + [I(106,239)] = {30,0x3A7FFFF4}, + [I(107,239)] = {30,0x3AFFFFF4}, + [I(108,239)] = {29,0x147FFFF4}, + [I(109,239)] = {29,0x14FFFFF4}, + [I(110,239)] = {29,0x157FFFF4}, + [I(111,239)] = {28,0x3FFFFF4}, + [I(112,239)] = {29,0x15FFFFF4}, + [I(113,239)] = {30,0x3B7FFFF4}, + [I(114,239)] = {29,0x167FFFF4}, + [I(115,239)] = {28,0x47FFFF4}, + [I(116,239)] = {28,0x4FFFFF4}, + [I(117,239)] = {29,0x16FFFFF4}, + [I(118,239)] = {30,0x3BFFFFF4}, + [I(119,239)] = {30,0x3C7FFFF4}, + [I(120,239)] = {30,0x3CFFFFF4}, + [I(121,239)] = {30,0x3D7FFFF4}, + [I(122,239)] = {30,0x3DFFFFF4}, + [I(123,239)] = {64,0}, + [I(124,239)] = {64,0}, + [I(125,239)] = {64,0}, + [I(126,239)] = {64,0}, + [I(127,239)] = {64,0}, + [I(128,239)] = {64,0}, + [I(129,239)] = {64,0}, + [I(130,239)] = {64,0}, + [I(131,239)] = {64,0}, + [I(132,239)] = {64,0}, + [I(133,239)] = {64,0}, + [I(134,239)] = {64,0}, + [I(135,239)] = {64,0}, + [I(136,239)] = {64,0}, + [I(137,239)] = {64,0}, + [I(138,239)] = {64,0}, + [I(139,239)] = {64,0}, + [I(140,239)] = {64,0}, + [I(141,239)] = {64,0}, + [I(142,239)] = {64,0}, + [I(143,239)] = {64,0}, + [I(144,239)] = {64,0}, + [I(145,239)] = {64,0}, + [I(146,239)] = {64,0}, + [I(147,239)] = {64,0}, + [I(148,239)] = {64,0}, + [I(149,239)] = {64,0}, + [I(150,239)] = {64,0}, + [I(151,239)] = {64,0}, + [I(152,239)] = {64,0}, + [I(153,239)] = {64,0}, + [I(154,239)] = {64,0}, + [I(155,239)] = {64,0}, + [I(156,239)] = {64,0}, + [I(157,239)] = {64,0}, + [I(158,239)] = {64,0}, + [I(159,239)] = {64,0}, + [I(160,239)] = {64,0}, + [I(161,239)] = {64,0}, + [I(162,239)] = {64,0}, + [I(163,239)] = {64,0}, + [I(164,239)] = {64,0}, + [I(165,239)] = {64,0}, + [I(166,239)] = {64,0}, + [I(167,239)] = {64,0}, + [I(168,239)] = {64,0}, + [I(169,239)] = {64,0}, + [I(170,239)] = {64,0}, + [I(171,239)] = {64,0}, + [I(172,239)] = {64,0}, + [I(173,239)] = {64,0}, + [I(174,239)] = {64,0}, + [I(175,239)] = {64,0}, + [I(176,239)] = {64,0}, + [I(177,239)] = {64,0}, + [I(178,239)] = {64,0}, + [I(179,239)] = {64,0}, + [I(180,239)] = {64,0}, + [I(181,239)] = {64,0}, + [I(182,239)] = {64,0}, + [I(183,239)] = {64,0}, + [I(184,239)] = {64,0}, + [I(185,239)] = {64,0}, + [I(186,239)] = {64,0}, + [I(187,239)] = {64,0}, + [I(188,239)] = {64,0}, + [I(189,239)] = {64,0}, + [I(190,239)] = {64,0}, + [I(191,239)] = {64,0}, + [I(192,239)] = {64,0}, + [I(193,239)] = {64,0}, + [I(194,239)] = {64,0}, + [I(195,239)] = {64,0}, + [I(196,239)] = {64,0}, + [I(197,239)] = {64,0}, + [I(198,239)] = {64,0}, + [I(199,239)] = {64,0}, + [I(200,239)] = {64,0}, + [I(201,239)] = {64,0}, + [I(202,239)] = {64,0}, + [I(203,239)] = {64,0}, + [I(204,239)] = {64,0}, + [I(205,239)] = {64,0}, + [I(206,239)] = {64,0}, + [I(207,239)] = {64,0}, + [I(208,239)] = {64,0}, + [I(209,239)] = {64,0}, + [I(210,239)] = {64,0}, + [I(211,239)] = {64,0}, + [I(212,239)] = {64,0}, + [I(213,239)] = {64,0}, + [I(214,239)] = {64,0}, + [I(215,239)] = {64,0}, + [I(216,239)] = {64,0}, + [I(217,239)] = {64,0}, + [I(218,239)] = {64,0}, + [I(219,239)] = {64,0}, + [I(220,239)] = {64,0}, + [I(221,239)] = {64,0}, + [I(222,239)] = {64,0}, + [I(223,239)] = {64,0}, + [I(224,239)] = {64,0}, + [I(225,239)] = {64,0}, + [I(226,239)] = {64,0}, + [I(227,239)] = {64,0}, + [I(228,239)] = {64,0}, + [I(229,239)] = {64,0}, + [I(230,239)] = {64,0}, + [I(231,239)] = {64,0}, + [I(232,239)] = {64,0}, + [I(233,239)] = {64,0}, + [I(234,239)] = {64,0}, + [I(235,239)] = {64,0}, + [I(236,239)] = {64,0}, + [I(237,239)] = {64,0}, + [I(238,239)] = {64,0}, + [I(239,239)] = {64,0}, + [I(240,239)] = {64,0}, + [I(241,239)] = {64,0}, + [I(242,239)] = {64,0}, + [I(243,239)] = {64,0}, + [I(244,239)] = {64,0}, + [I(245,239)] = {64,0}, + [I(246,239)] = {64,0}, + [I(247,239)] = {64,0}, + [I(248,239)] = {64,0}, + [I(249,239)] = {64,0}, + [I(250,239)] = {64,0}, + [I(251,239)] = {64,0}, + [I(252,239)] = {64,0}, + [I(253,239)] = {64,0}, + [I(254,239)] = {64,0}, + [I(255,239)] = {64,0}, + [I(0,240)] = {64,0}, + [I(1,240)] = {64,0}, + [I(2,240)] = {64,0}, + [I(3,240)] = {64,0}, + [I(4,240)] = {64,0}, + [I(5,240)] = {64,0}, + [I(6,240)] = {64,0}, + [I(7,240)] = {64,0}, + [I(8,240)] = {64,0}, + [I(9,240)] = {64,0}, + [I(10,240)] = {64,0}, + [I(11,240)] = {64,0}, + [I(12,240)] = {64,0}, + [I(13,240)] = {64,0}, + [I(14,240)] = {64,0}, + [I(15,240)] = {64,0}, + [I(16,240)] = {64,0}, + [I(17,240)] = {64,0}, + [I(18,240)] = {64,0}, + [I(19,240)] = {64,0}, + [I(20,240)] = {64,0}, + [I(21,240)] = {64,0}, + [I(22,240)] = {64,0}, + [I(23,240)] = {64,0}, + [I(24,240)] = {64,0}, + [I(25,240)] = {64,0}, + [I(26,240)] = {64,0}, + [I(27,240)] = {64,0}, + [I(28,240)] = {64,0}, + [I(29,240)] = {64,0}, + [I(30,240)] = {64,0}, + [I(31,240)] = {64,0}, + [I(32,240)] = {X32,0x53FFFFEB}, + [I(33,240)] = {64,0}, + [I(34,240)] = {64,0}, + [I(35,240)] = {64,0}, + [I(36,240)] = {64,0}, + [I(37,240)] = {X32,0x57FFFFEB}, + [I(38,240)] = {64,0}, + [I(39,240)] = {64,0}, + [I(40,240)] = {64,0}, + [I(41,240)] = {64,0}, + [I(42,240)] = {64,0}, + [I(43,240)] = {64,0}, + [I(44,240)] = {64,0}, + [I(45,240)] = {X32,0x5BFFFFEB}, + [I(46,240)] = {X32,0x5FFFFFEB}, + [I(47,240)] = {X32,0x63FFFFEB}, + [I(48,240)] = {31,0x3FFFFEB}, + [I(49,240)] = {31,0x7FFFFEB}, + [I(50,240)] = {31,0xBFFFFEB}, + [I(51,240)] = {X32,0x67FFFFEB}, + [I(52,240)] = {X32,0x6BFFFFEB}, + [I(53,240)] = {X32,0x6FFFFFEB}, + [I(54,240)] = {X32,0x73FFFFEB}, + [I(55,240)] = {X32,0x77FFFFEB}, + [I(56,240)] = {X32,0x7BFFFFEB}, + [I(57,240)] = {X32,0x7FFFFFEB}, + [I(58,240)] = {64,0}, + [I(59,240)] = {64,0}, + [I(60,240)] = {64,0}, + [I(61,240)] = {X32,0x83FFFFEB}, + [I(62,240)] = {64,0}, + [I(63,240)] = {64,0}, + [I(64,240)] = {64,0}, + [I(65,240)] = {X32,0x87FFFFEB}, + [I(66,240)] = {64,0}, + [I(67,240)] = {64,0}, + [I(68,240)] = {64,0}, + [I(69,240)] = {64,0}, + [I(70,240)] = {64,0}, + [I(71,240)] = {64,0}, + [I(72,240)] = {64,0}, + [I(73,240)] = {64,0}, + [I(74,240)] = {64,0}, + [I(75,240)] = {64,0}, + [I(76,240)] = {64,0}, + [I(77,240)] = {64,0}, + [I(78,240)] = {64,0}, + [I(79,240)] = {64,0}, + [I(80,240)] = {64,0}, + [I(81,240)] = {64,0}, + [I(82,240)] = {64,0}, + [I(83,240)] = {64,0}, + [I(84,240)] = {64,0}, + [I(85,240)] = {64,0}, + [I(86,240)] = {64,0}, + [I(87,240)] = {64,0}, + [I(88,240)] = {64,0}, + [I(89,240)] = {64,0}, + [I(90,240)] = {64,0}, + [I(91,240)] = {64,0}, + [I(92,240)] = {64,0}, + [I(93,240)] = {64,0}, + [I(94,240)] = {64,0}, + [I(95,240)] = {X32,0x8BFFFFEB}, + [I(96,240)] = {64,0}, + [I(97,240)] = {31,0xFFFFFEB}, + [I(98,240)] = {X32,0x8FFFFFEB}, + [I(99,240)] = {31,0x13FFFFEB}, + [I(100,240)] = {X32,0x93FFFFEB}, + [I(101,240)] = {31,0x17FFFFEB}, + [I(102,240)] = {X32,0x97FFFFEB}, + [I(103,240)] = {X32,0x9BFFFFEB}, + [I(104,240)] = {X32,0x9FFFFFEB}, + [I(105,240)] = {31,0x1BFFFFEB}, + [I(106,240)] = {64,0}, + [I(107,240)] = {64,0}, + [I(108,240)] = {X32,0xA3FFFFEB}, + [I(109,240)] = {X32,0xA7FFFFEB}, + [I(110,240)] = {X32,0xABFFFFEB}, + [I(111,240)] = {31,0x1FFFFFEB}, + [I(112,240)] = {X32,0xAFFFFFEB}, + [I(113,240)] = {64,0}, + [I(114,240)] = {X32,0xB3FFFFEB}, + [I(115,240)] = {31,0x23FFFFEB}, + [I(116,240)] = {31,0x27FFFFEB}, + [I(117,240)] = {X32,0xB7FFFFEB}, + [I(118,240)] = {64,0}, + [I(119,240)] = {64,0}, + [I(120,240)] = {64,0}, + [I(121,240)] = {64,0}, + [I(122,240)] = {64,0}, + [I(123,240)] = {64,0}, + [I(124,240)] = {64,0}, + [I(125,240)] = {64,0}, + [I(126,240)] = {64,0}, + [I(127,240)] = {64,0}, + [I(128,240)] = {64,0}, + [I(129,240)] = {64,0}, + [I(130,240)] = {64,0}, + [I(131,240)] = {64,0}, + [I(132,240)] = {64,0}, + [I(133,240)] = {64,0}, + [I(134,240)] = {64,0}, + [I(135,240)] = {64,0}, + [I(136,240)] = {64,0}, + [I(137,240)] = {64,0}, + [I(138,240)] = {64,0}, + [I(139,240)] = {64,0}, + [I(140,240)] = {64,0}, + [I(141,240)] = {64,0}, + [I(142,240)] = {64,0}, + [I(143,240)] = {64,0}, + [I(144,240)] = {64,0}, + [I(145,240)] = {64,0}, + [I(146,240)] = {64,0}, + [I(147,240)] = {64,0}, + [I(148,240)] = {64,0}, + [I(149,240)] = {64,0}, + [I(150,240)] = {64,0}, + [I(151,240)] = {64,0}, + [I(152,240)] = {64,0}, + [I(153,240)] = {64,0}, + [I(154,240)] = {64,0}, + [I(155,240)] = {64,0}, + [I(156,240)] = {64,0}, + [I(157,240)] = {64,0}, + [I(158,240)] = {64,0}, + [I(159,240)] = {64,0}, + [I(160,240)] = {64,0}, + [I(161,240)] = {64,0}, + [I(162,240)] = {64,0}, + [I(163,240)] = {64,0}, + [I(164,240)] = {64,0}, + [I(165,240)] = {64,0}, + [I(166,240)] = {64,0}, + [I(167,240)] = {64,0}, + [I(168,240)] = {64,0}, + [I(169,240)] = {64,0}, + [I(170,240)] = {64,0}, + [I(171,240)] = {64,0}, + [I(172,240)] = {64,0}, + [I(173,240)] = {64,0}, + [I(174,240)] = {64,0}, + [I(175,240)] = {64,0}, + [I(176,240)] = {64,0}, + [I(177,240)] = {64,0}, + [I(178,240)] = {64,0}, + [I(179,240)] = {64,0}, + [I(180,240)] = {64,0}, + [I(181,240)] = {64,0}, + [I(182,240)] = {64,0}, + [I(183,240)] = {64,0}, + [I(184,240)] = {64,0}, + [I(185,240)] = {64,0}, + [I(186,240)] = {64,0}, + [I(187,240)] = {64,0}, + [I(188,240)] = {64,0}, + [I(189,240)] = {64,0}, + [I(190,240)] = {64,0}, + [I(191,240)] = {64,0}, + [I(192,240)] = {64,0}, + [I(193,240)] = {64,0}, + [I(194,240)] = {64,0}, + [I(195,240)] = {64,0}, + [I(196,240)] = {64,0}, + [I(197,240)] = {64,0}, + [I(198,240)] = {64,0}, + [I(199,240)] = {64,0}, + [I(200,240)] = {64,0}, + [I(201,240)] = {64,0}, + [I(202,240)] = {64,0}, + [I(203,240)] = {64,0}, + [I(204,240)] = {64,0}, + [I(205,240)] = {64,0}, + [I(206,240)] = {64,0}, + [I(207,240)] = {64,0}, + [I(208,240)] = {64,0}, + [I(209,240)] = {64,0}, + [I(210,240)] = {64,0}, + [I(211,240)] = {64,0}, + [I(212,240)] = {64,0}, + [I(213,240)] = {64,0}, + [I(214,240)] = {64,0}, + [I(215,240)] = {64,0}, + [I(216,240)] = {64,0}, + [I(217,240)] = {64,0}, + [I(218,240)] = {64,0}, + [I(219,240)] = {64,0}, + [I(220,240)] = {64,0}, + [I(221,240)] = {64,0}, + [I(222,240)] = {64,0}, + [I(223,240)] = {64,0}, + [I(224,240)] = {64,0}, + [I(225,240)] = {64,0}, + [I(226,240)] = {64,0}, + [I(227,240)] = {64,0}, + [I(228,240)] = {64,0}, + [I(229,240)] = {64,0}, + [I(230,240)] = {64,0}, + [I(231,240)] = {64,0}, + [I(232,240)] = {64,0}, + [I(233,240)] = {64,0}, + [I(234,240)] = {64,0}, + [I(235,240)] = {64,0}, + [I(236,240)] = {64,0}, + [I(237,240)] = {64,0}, + [I(238,240)] = {64,0}, + [I(239,240)] = {64,0}, + [I(240,240)] = {64,0}, + [I(241,240)] = {64,0}, + [I(242,240)] = {64,0}, + [I(243,240)] = {64,0}, + [I(244,240)] = {64,0}, + [I(245,240)] = {64,0}, + [I(246,240)] = {64,0}, + [I(247,240)] = {64,0}, + [I(248,240)] = {64,0}, + [I(249,240)] = {64,0}, + [I(250,240)] = {64,0}, + [I(251,240)] = {64,0}, + [I(252,240)] = {64,0}, + [I(253,240)] = {64,0}, + [I(254,240)] = {64,0}, + [I(255,240)] = {64,0}, + [I(0,241)] = {64,0}, + [I(1,241)] = {64,0}, + [I(2,241)] = {64,0}, + [I(3,241)] = {64,0}, + [I(4,241)] = {64,0}, + [I(5,241)] = {64,0}, + [I(6,241)] = {64,0}, + [I(7,241)] = {64,0}, + [I(8,241)] = {64,0}, + [I(9,241)] = {64,0}, + [I(10,241)] = {64,0}, + [I(11,241)] = {64,0}, + [I(12,241)] = {64,0}, + [I(13,241)] = {64,0}, + [I(14,241)] = {64,0}, + [I(15,241)] = {64,0}, + [I(16,241)] = {64,0}, + [I(17,241)] = {64,0}, + [I(18,241)] = {64,0}, + [I(19,241)] = {64,0}, + [I(20,241)] = {64,0}, + [I(21,241)] = {64,0}, + [I(22,241)] = {64,0}, + [I(23,241)] = {64,0}, + [I(24,241)] = {64,0}, + [I(25,241)] = {64,0}, + [I(26,241)] = {64,0}, + [I(27,241)] = {64,0}, + [I(28,241)] = {64,0}, + [I(29,241)] = {64,0}, + [I(30,241)] = {64,0}, + [I(31,241)] = {64,0}, + [I(32,241)] = {64,0}, + [I(33,241)] = {64,0}, + [I(34,241)] = {64,0}, + [I(35,241)] = {64,0}, + [I(36,241)] = {64,0}, + [I(37,241)] = {64,0}, + [I(38,241)] = {64,0}, + [I(39,241)] = {64,0}, + [I(40,241)] = {64,0}, + [I(41,241)] = {64,0}, + [I(42,241)] = {64,0}, + [I(43,241)] = {64,0}, + [I(44,241)] = {64,0}, + [I(45,241)] = {64,0}, + [I(46,241)] = {64,0}, + [I(47,241)] = {64,0}, + [I(48,241)] = {X32,0x7FFFFE6}, + [I(49,241)] = {X32,0xFFFFFE6}, + [I(50,241)] = {X32,0x17FFFFE6}, + [I(51,241)] = {64,0}, + [I(52,241)] = {64,0}, + [I(53,241)] = {64,0}, + [I(54,241)] = {64,0}, + [I(55,241)] = {64,0}, + [I(56,241)] = {64,0}, + [I(57,241)] = {64,0}, + [I(58,241)] = {64,0}, + [I(59,241)] = {64,0}, + [I(60,241)] = {64,0}, + [I(61,241)] = {64,0}, + [I(62,241)] = {64,0}, + [I(63,241)] = {64,0}, + [I(64,241)] = {64,0}, + [I(65,241)] = {64,0}, + [I(66,241)] = {64,0}, + [I(67,241)] = {64,0}, + [I(68,241)] = {64,0}, + [I(69,241)] = {64,0}, + [I(70,241)] = {64,0}, + [I(71,241)] = {64,0}, + [I(72,241)] = {64,0}, + [I(73,241)] = {64,0}, + [I(74,241)] = {64,0}, + [I(75,241)] = {64,0}, + [I(76,241)] = {64,0}, + [I(77,241)] = {64,0}, + [I(78,241)] = {64,0}, + [I(79,241)] = {64,0}, + [I(80,241)] = {64,0}, + [I(81,241)] = {64,0}, + [I(82,241)] = {64,0}, + [I(83,241)] = {64,0}, + [I(84,241)] = {64,0}, + [I(85,241)] = {64,0}, + [I(86,241)] = {64,0}, + [I(87,241)] = {64,0}, + [I(88,241)] = {64,0}, + [I(89,241)] = {64,0}, + [I(90,241)] = {64,0}, + [I(91,241)] = {64,0}, + [I(92,241)] = {64,0}, + [I(93,241)] = {64,0}, + [I(94,241)] = {64,0}, + [I(95,241)] = {64,0}, + [I(96,241)] = {64,0}, + [I(97,241)] = {X32,0x1FFFFFE6}, + [I(98,241)] = {64,0}, + [I(99,241)] = {X32,0x27FFFFE6}, + [I(100,241)] = {64,0}, + [I(101,241)] = {X32,0x2FFFFFE6}, + [I(102,241)] = {64,0}, + [I(103,241)] = {64,0}, + [I(104,241)] = {64,0}, + [I(105,241)] = {X32,0x37FFFFE6}, + [I(106,241)] = {64,0}, + [I(107,241)] = {64,0}, + [I(108,241)] = {64,0}, + [I(109,241)] = {64,0}, + [I(110,241)] = {64,0}, + [I(111,241)] = {X32,0x3FFFFFE6}, + [I(112,241)] = {64,0}, + [I(113,241)] = {64,0}, + [I(114,241)] = {64,0}, + [I(115,241)] = {X32,0x47FFFFE6}, + [I(116,241)] = {X32,0x4FFFFFE6}, + [I(117,241)] = {64,0}, + [I(118,241)] = {64,0}, + [I(119,241)] = {64,0}, + [I(120,241)] = {64,0}, + [I(121,241)] = {64,0}, + [I(122,241)] = {64,0}, + [I(123,241)] = {64,0}, + [I(124,241)] = {64,0}, + [I(125,241)] = {64,0}, + [I(126,241)] = {64,0}, + [I(127,241)] = {64,0}, + [I(128,241)] = {64,0}, + [I(129,241)] = {64,0}, + [I(130,241)] = {64,0}, + [I(131,241)] = {64,0}, + [I(132,241)] = {64,0}, + [I(133,241)] = {64,0}, + [I(134,241)] = {64,0}, + [I(135,241)] = {64,0}, + [I(136,241)] = {64,0}, + [I(137,241)] = {64,0}, + [I(138,241)] = {64,0}, + [I(139,241)] = {64,0}, + [I(140,241)] = {64,0}, + [I(141,241)] = {64,0}, + [I(142,241)] = {64,0}, + [I(143,241)] = {64,0}, + [I(144,241)] = {64,0}, + [I(145,241)] = {64,0}, + [I(146,241)] = {64,0}, + [I(147,241)] = {64,0}, + [I(148,241)] = {64,0}, + [I(149,241)] = {64,0}, + [I(150,241)] = {64,0}, + [I(151,241)] = {64,0}, + [I(152,241)] = {64,0}, + [I(153,241)] = {64,0}, + [I(154,241)] = {64,0}, + [I(155,241)] = {64,0}, + [I(156,241)] = {64,0}, + [I(157,241)] = {64,0}, + [I(158,241)] = {64,0}, + [I(159,241)] = {64,0}, + [I(160,241)] = {64,0}, + [I(161,241)] = {64,0}, + [I(162,241)] = {64,0}, + [I(163,241)] = {64,0}, + [I(164,241)] = {64,0}, + [I(165,241)] = {64,0}, + [I(166,241)] = {64,0}, + [I(167,241)] = {64,0}, + [I(168,241)] = {64,0}, + [I(169,241)] = {64,0}, + [I(170,241)] = {64,0}, + [I(171,241)] = {64,0}, + [I(172,241)] = {64,0}, + [I(173,241)] = {64,0}, + [I(174,241)] = {64,0}, + [I(175,241)] = {64,0}, + [I(176,241)] = {64,0}, + [I(177,241)] = {64,0}, + [I(178,241)] = {64,0}, + [I(179,241)] = {64,0}, + [I(180,241)] = {64,0}, + [I(181,241)] = {64,0}, + [I(182,241)] = {64,0}, + [I(183,241)] = {64,0}, + [I(184,241)] = {64,0}, + [I(185,241)] = {64,0}, + [I(186,241)] = {64,0}, + [I(187,241)] = {64,0}, + [I(188,241)] = {64,0}, + [I(189,241)] = {64,0}, + [I(190,241)] = {64,0}, + [I(191,241)] = {64,0}, + [I(192,241)] = {64,0}, + [I(193,241)] = {64,0}, + [I(194,241)] = {64,0}, + [I(195,241)] = {64,0}, + [I(196,241)] = {64,0}, + [I(197,241)] = {64,0}, + [I(198,241)] = {64,0}, + [I(199,241)] = {64,0}, + [I(200,241)] = {64,0}, + [I(201,241)] = {64,0}, + [I(202,241)] = {64,0}, + [I(203,241)] = {64,0}, + [I(204,241)] = {64,0}, + [I(205,241)] = {64,0}, + [I(206,241)] = {64,0}, + [I(207,241)] = {64,0}, + [I(208,241)] = {64,0}, + [I(209,241)] = {64,0}, + [I(210,241)] = {64,0}, + [I(211,241)] = {64,0}, + [I(212,241)] = {64,0}, + [I(213,241)] = {64,0}, + [I(214,241)] = {64,0}, + [I(215,241)] = {64,0}, + [I(216,241)] = {64,0}, + [I(217,241)] = {64,0}, + [I(218,241)] = {64,0}, + [I(219,241)] = {64,0}, + [I(220,241)] = {64,0}, + [I(221,241)] = {64,0}, + [I(222,241)] = {64,0}, + [I(223,241)] = {64,0}, + [I(224,241)] = {64,0}, + [I(225,241)] = {64,0}, + [I(226,241)] = {64,0}, + [I(227,241)] = {64,0}, + [I(228,241)] = {64,0}, + [I(229,241)] = {64,0}, + [I(230,241)] = {64,0}, + [I(231,241)] = {64,0}, + [I(232,241)] = {64,0}, + [I(233,241)] = {64,0}, + [I(234,241)] = {64,0}, + [I(235,241)] = {64,0}, + [I(236,241)] = {64,0}, + [I(237,241)] = {64,0}, + [I(238,241)] = {64,0}, + [I(239,241)] = {64,0}, + [I(240,241)] = {64,0}, + [I(241,241)] = {64,0}, + [I(242,241)] = {64,0}, + [I(243,241)] = {64,0}, + [I(244,241)] = {64,0}, + [I(245,241)] = {64,0}, + [I(246,241)] = {64,0}, + [I(247,241)] = {64,0}, + [I(248,241)] = {64,0}, + [I(249,241)] = {64,0}, + [I(250,241)] = {64,0}, + [I(251,241)] = {64,0}, + [I(252,241)] = {64,0}, + [I(253,241)] = {64,0}, + [I(254,241)] = {64,0}, + [I(255,241)] = {64,0}, + [I(0,242)] = {64,0}, + [I(1,242)] = {64,0}, + [I(2,242)] = {64,0}, + [I(3,242)] = {64,0}, + [I(4,242)] = {64,0}, + [I(5,242)] = {64,0}, + [I(6,242)] = {64,0}, + [I(7,242)] = {64,0}, + [I(8,242)] = {64,0}, + [I(9,242)] = {64,0}, + [I(10,242)] = {64,0}, + [I(11,242)] = {64,0}, + [I(12,242)] = {64,0}, + [I(13,242)] = {64,0}, + [I(14,242)] = {64,0}, + [I(15,242)] = {64,0}, + [I(16,242)] = {64,0}, + [I(17,242)] = {64,0}, + [I(18,242)] = {64,0}, + [I(19,242)] = {64,0}, + [I(20,242)] = {64,0}, + [I(21,242)] = {64,0}, + [I(22,242)] = {64,0}, + [I(23,242)] = {64,0}, + [I(24,242)] = {64,0}, + [I(25,242)] = {64,0}, + [I(26,242)] = {64,0}, + [I(27,242)] = {64,0}, + [I(28,242)] = {64,0}, + [I(29,242)] = {64,0}, + [I(30,242)] = {64,0}, + [I(31,242)] = {64,0}, + [I(32,242)] = {X32,0x53FFFFEC}, + [I(33,242)] = {64,0}, + [I(34,242)] = {64,0}, + [I(35,242)] = {64,0}, + [I(36,242)] = {64,0}, + [I(37,242)] = {X32,0x57FFFFEC}, + [I(38,242)] = {64,0}, + [I(39,242)] = {64,0}, + [I(40,242)] = {64,0}, + [I(41,242)] = {64,0}, + [I(42,242)] = {64,0}, + [I(43,242)] = {64,0}, + [I(44,242)] = {64,0}, + [I(45,242)] = {X32,0x5BFFFFEC}, + [I(46,242)] = {X32,0x5FFFFFEC}, + [I(47,242)] = {X32,0x63FFFFEC}, + [I(48,242)] = {31,0x3FFFFEC}, + [I(49,242)] = {31,0x7FFFFEC}, + [I(50,242)] = {31,0xBFFFFEC}, + [I(51,242)] = {X32,0x67FFFFEC}, + [I(52,242)] = {X32,0x6BFFFFEC}, + [I(53,242)] = {X32,0x6FFFFFEC}, + [I(54,242)] = {X32,0x73FFFFEC}, + [I(55,242)] = {X32,0x77FFFFEC}, + [I(56,242)] = {X32,0x7BFFFFEC}, + [I(57,242)] = {X32,0x7FFFFFEC}, + [I(58,242)] = {64,0}, + [I(59,242)] = {64,0}, + [I(60,242)] = {64,0}, + [I(61,242)] = {X32,0x83FFFFEC}, + [I(62,242)] = {64,0}, + [I(63,242)] = {64,0}, + [I(64,242)] = {64,0}, + [I(65,242)] = {X32,0x87FFFFEC}, + [I(66,242)] = {64,0}, + [I(67,242)] = {64,0}, + [I(68,242)] = {64,0}, + [I(69,242)] = {64,0}, + [I(70,242)] = {64,0}, + [I(71,242)] = {64,0}, + [I(72,242)] = {64,0}, + [I(73,242)] = {64,0}, + [I(74,242)] = {64,0}, + [I(75,242)] = {64,0}, + [I(76,242)] = {64,0}, + [I(77,242)] = {64,0}, + [I(78,242)] = {64,0}, + [I(79,242)] = {64,0}, + [I(80,242)] = {64,0}, + [I(81,242)] = {64,0}, + [I(82,242)] = {64,0}, + [I(83,242)] = {64,0}, + [I(84,242)] = {64,0}, + [I(85,242)] = {64,0}, + [I(86,242)] = {64,0}, + [I(87,242)] = {64,0}, + [I(88,242)] = {64,0}, + [I(89,242)] = {64,0}, + [I(90,242)] = {64,0}, + [I(91,242)] = {64,0}, + [I(92,242)] = {64,0}, + [I(93,242)] = {64,0}, + [I(94,242)] = {64,0}, + [I(95,242)] = {X32,0x8BFFFFEC}, + [I(96,242)] = {64,0}, + [I(97,242)] = {31,0xFFFFFEC}, + [I(98,242)] = {X32,0x8FFFFFEC}, + [I(99,242)] = {31,0x13FFFFEC}, + [I(100,242)] = {X32,0x93FFFFEC}, + [I(101,242)] = {31,0x17FFFFEC}, + [I(102,242)] = {X32,0x97FFFFEC}, + [I(103,242)] = {X32,0x9BFFFFEC}, + [I(104,242)] = {X32,0x9FFFFFEC}, + [I(105,242)] = {31,0x1BFFFFEC}, + [I(106,242)] = {64,0}, + [I(107,242)] = {64,0}, + [I(108,242)] = {X32,0xA3FFFFEC}, + [I(109,242)] = {X32,0xA7FFFFEC}, + [I(110,242)] = {X32,0xABFFFFEC}, + [I(111,242)] = {31,0x1FFFFFEC}, + [I(112,242)] = {X32,0xAFFFFFEC}, + [I(113,242)] = {64,0}, + [I(114,242)] = {X32,0xB3FFFFEC}, + [I(115,242)] = {31,0x23FFFFEC}, + [I(116,242)] = {31,0x27FFFFEC}, + [I(117,242)] = {X32,0xB7FFFFEC}, + [I(118,242)] = {64,0}, + [I(119,242)] = {64,0}, + [I(120,242)] = {64,0}, + [I(121,242)] = {64,0}, + [I(122,242)] = {64,0}, + [I(123,242)] = {64,0}, + [I(124,242)] = {64,0}, + [I(125,242)] = {64,0}, + [I(126,242)] = {64,0}, + [I(127,242)] = {64,0}, + [I(128,242)] = {64,0}, + [I(129,242)] = {64,0}, + [I(130,242)] = {64,0}, + [I(131,242)] = {64,0}, + [I(132,242)] = {64,0}, + [I(133,242)] = {64,0}, + [I(134,242)] = {64,0}, + [I(135,242)] = {64,0}, + [I(136,242)] = {64,0}, + [I(137,242)] = {64,0}, + [I(138,242)] = {64,0}, + [I(139,242)] = {64,0}, + [I(140,242)] = {64,0}, + [I(141,242)] = {64,0}, + [I(142,242)] = {64,0}, + [I(143,242)] = {64,0}, + [I(144,242)] = {64,0}, + [I(145,242)] = {64,0}, + [I(146,242)] = {64,0}, + [I(147,242)] = {64,0}, + [I(148,242)] = {64,0}, + [I(149,242)] = {64,0}, + [I(150,242)] = {64,0}, + [I(151,242)] = {64,0}, + [I(152,242)] = {64,0}, + [I(153,242)] = {64,0}, + [I(154,242)] = {64,0}, + [I(155,242)] = {64,0}, + [I(156,242)] = {64,0}, + [I(157,242)] = {64,0}, + [I(158,242)] = {64,0}, + [I(159,242)] = {64,0}, + [I(160,242)] = {64,0}, + [I(161,242)] = {64,0}, + [I(162,242)] = {64,0}, + [I(163,242)] = {64,0}, + [I(164,242)] = {64,0}, + [I(165,242)] = {64,0}, + [I(166,242)] = {64,0}, + [I(167,242)] = {64,0}, + [I(168,242)] = {64,0}, + [I(169,242)] = {64,0}, + [I(170,242)] = {64,0}, + [I(171,242)] = {64,0}, + [I(172,242)] = {64,0}, + [I(173,242)] = {64,0}, + [I(174,242)] = {64,0}, + [I(175,242)] = {64,0}, + [I(176,242)] = {64,0}, + [I(177,242)] = {64,0}, + [I(178,242)] = {64,0}, + [I(179,242)] = {64,0}, + [I(180,242)] = {64,0}, + [I(181,242)] = {64,0}, + [I(182,242)] = {64,0}, + [I(183,242)] = {64,0}, + [I(184,242)] = {64,0}, + [I(185,242)] = {64,0}, + [I(186,242)] = {64,0}, + [I(187,242)] = {64,0}, + [I(188,242)] = {64,0}, + [I(189,242)] = {64,0}, + [I(190,242)] = {64,0}, + [I(191,242)] = {64,0}, + [I(192,242)] = {64,0}, + [I(193,242)] = {64,0}, + [I(194,242)] = {64,0}, + [I(195,242)] = {64,0}, + [I(196,242)] = {64,0}, + [I(197,242)] = {64,0}, + [I(198,242)] = {64,0}, + [I(199,242)] = {64,0}, + [I(200,242)] = {64,0}, + [I(201,242)] = {64,0}, + [I(202,242)] = {64,0}, + [I(203,242)] = {64,0}, + [I(204,242)] = {64,0}, + [I(205,242)] = {64,0}, + [I(206,242)] = {64,0}, + [I(207,242)] = {64,0}, + [I(208,242)] = {64,0}, + [I(209,242)] = {64,0}, + [I(210,242)] = {64,0}, + [I(211,242)] = {64,0}, + [I(212,242)] = {64,0}, + [I(213,242)] = {64,0}, + [I(214,242)] = {64,0}, + [I(215,242)] = {64,0}, + [I(216,242)] = {64,0}, + [I(217,242)] = {64,0}, + [I(218,242)] = {64,0}, + [I(219,242)] = {64,0}, + [I(220,242)] = {64,0}, + [I(221,242)] = {64,0}, + [I(222,242)] = {64,0}, + [I(223,242)] = {64,0}, + [I(224,242)] = {64,0}, + [I(225,242)] = {64,0}, + [I(226,242)] = {64,0}, + [I(227,242)] = {64,0}, + [I(228,242)] = {64,0}, + [I(229,242)] = {64,0}, + [I(230,242)] = {64,0}, + [I(231,242)] = {64,0}, + [I(232,242)] = {64,0}, + [I(233,242)] = {64,0}, + [I(234,242)] = {64,0}, + [I(235,242)] = {64,0}, + [I(236,242)] = {64,0}, + [I(237,242)] = {64,0}, + [I(238,242)] = {64,0}, + [I(239,242)] = {64,0}, + [I(240,242)] = {64,0}, + [I(241,242)] = {64,0}, + [I(242,242)] = {64,0}, + [I(243,242)] = {64,0}, + [I(244,242)] = {64,0}, + [I(245,242)] = {64,0}, + [I(246,242)] = {64,0}, + [I(247,242)] = {64,0}, + [I(248,242)] = {64,0}, + [I(249,242)] = {64,0}, + [I(250,242)] = {64,0}, + [I(251,242)] = {64,0}, + [I(252,242)] = {64,0}, + [I(253,242)] = {64,0}, + [I(254,242)] = {64,0}, + [I(255,242)] = {64,0}, + [I(0,243)] = {64,0}, + [I(1,243)] = {64,0}, + [I(2,243)] = {64,0}, + [I(3,243)] = {64,0}, + [I(4,243)] = {64,0}, + [I(5,243)] = {64,0}, + [I(6,243)] = {64,0}, + [I(7,243)] = {64,0}, + [I(8,243)] = {64,0}, + [I(9,243)] = {64,0}, + [I(10,243)] = {64,0}, + [I(11,243)] = {64,0}, + [I(12,243)] = {64,0}, + [I(13,243)] = {64,0}, + [I(14,243)] = {64,0}, + [I(15,243)] = {64,0}, + [I(16,243)] = {64,0}, + [I(17,243)] = {64,0}, + [I(18,243)] = {64,0}, + [I(19,243)] = {64,0}, + [I(20,243)] = {64,0}, + [I(21,243)] = {64,0}, + [I(22,243)] = {64,0}, + [I(23,243)] = {64,0}, + [I(24,243)] = {64,0}, + [I(25,243)] = {64,0}, + [I(26,243)] = {64,0}, + [I(27,243)] = {64,0}, + [I(28,243)] = {64,0}, + [I(29,243)] = {64,0}, + [I(30,243)] = {64,0}, + [I(31,243)] = {64,0}, + [I(32,243)] = {X32,0x53FFFFED}, + [I(33,243)] = {64,0}, + [I(34,243)] = {64,0}, + [I(35,243)] = {64,0}, + [I(36,243)] = {64,0}, + [I(37,243)] = {X32,0x57FFFFED}, + [I(38,243)] = {64,0}, + [I(39,243)] = {64,0}, + [I(40,243)] = {64,0}, + [I(41,243)] = {64,0}, + [I(42,243)] = {64,0}, + [I(43,243)] = {64,0}, + [I(44,243)] = {64,0}, + [I(45,243)] = {X32,0x5BFFFFED}, + [I(46,243)] = {X32,0x5FFFFFED}, + [I(47,243)] = {X32,0x63FFFFED}, + [I(48,243)] = {31,0x3FFFFED}, + [I(49,243)] = {31,0x7FFFFED}, + [I(50,243)] = {31,0xBFFFFED}, + [I(51,243)] = {X32,0x67FFFFED}, + [I(52,243)] = {X32,0x6BFFFFED}, + [I(53,243)] = {X32,0x6FFFFFED}, + [I(54,243)] = {X32,0x73FFFFED}, + [I(55,243)] = {X32,0x77FFFFED}, + [I(56,243)] = {X32,0x7BFFFFED}, + [I(57,243)] = {X32,0x7FFFFFED}, + [I(58,243)] = {64,0}, + [I(59,243)] = {64,0}, + [I(60,243)] = {64,0}, + [I(61,243)] = {X32,0x83FFFFED}, + [I(62,243)] = {64,0}, + [I(63,243)] = {64,0}, + [I(64,243)] = {64,0}, + [I(65,243)] = {X32,0x87FFFFED}, + [I(66,243)] = {64,0}, + [I(67,243)] = {64,0}, + [I(68,243)] = {64,0}, + [I(69,243)] = {64,0}, + [I(70,243)] = {64,0}, + [I(71,243)] = {64,0}, + [I(72,243)] = {64,0}, + [I(73,243)] = {64,0}, + [I(74,243)] = {64,0}, + [I(75,243)] = {64,0}, + [I(76,243)] = {64,0}, + [I(77,243)] = {64,0}, + [I(78,243)] = {64,0}, + [I(79,243)] = {64,0}, + [I(80,243)] = {64,0}, + [I(81,243)] = {64,0}, + [I(82,243)] = {64,0}, + [I(83,243)] = {64,0}, + [I(84,243)] = {64,0}, + [I(85,243)] = {64,0}, + [I(86,243)] = {64,0}, + [I(87,243)] = {64,0}, + [I(88,243)] = {64,0}, + [I(89,243)] = {64,0}, + [I(90,243)] = {64,0}, + [I(91,243)] = {64,0}, + [I(92,243)] = {64,0}, + [I(93,243)] = {64,0}, + [I(94,243)] = {64,0}, + [I(95,243)] = {X32,0x8BFFFFED}, + [I(96,243)] = {64,0}, + [I(97,243)] = {31,0xFFFFFED}, + [I(98,243)] = {X32,0x8FFFFFED}, + [I(99,243)] = {31,0x13FFFFED}, + [I(100,243)] = {X32,0x93FFFFED}, + [I(101,243)] = {31,0x17FFFFED}, + [I(102,243)] = {X32,0x97FFFFED}, + [I(103,243)] = {X32,0x9BFFFFED}, + [I(104,243)] = {X32,0x9FFFFFED}, + [I(105,243)] = {31,0x1BFFFFED}, + [I(106,243)] = {64,0}, + [I(107,243)] = {64,0}, + [I(108,243)] = {X32,0xA3FFFFED}, + [I(109,243)] = {X32,0xA7FFFFED}, + [I(110,243)] = {X32,0xABFFFFED}, + [I(111,243)] = {31,0x1FFFFFED}, + [I(112,243)] = {X32,0xAFFFFFED}, + [I(113,243)] = {64,0}, + [I(114,243)] = {X32,0xB3FFFFED}, + [I(115,243)] = {31,0x23FFFFED}, + [I(116,243)] = {31,0x27FFFFED}, + [I(117,243)] = {X32,0xB7FFFFED}, + [I(118,243)] = {64,0}, + [I(119,243)] = {64,0}, + [I(120,243)] = {64,0}, + [I(121,243)] = {64,0}, + [I(122,243)] = {64,0}, + [I(123,243)] = {64,0}, + [I(124,243)] = {64,0}, + [I(125,243)] = {64,0}, + [I(126,243)] = {64,0}, + [I(127,243)] = {64,0}, + [I(128,243)] = {64,0}, + [I(129,243)] = {64,0}, + [I(130,243)] = {64,0}, + [I(131,243)] = {64,0}, + [I(132,243)] = {64,0}, + [I(133,243)] = {64,0}, + [I(134,243)] = {64,0}, + [I(135,243)] = {64,0}, + [I(136,243)] = {64,0}, + [I(137,243)] = {64,0}, + [I(138,243)] = {64,0}, + [I(139,243)] = {64,0}, + [I(140,243)] = {64,0}, + [I(141,243)] = {64,0}, + [I(142,243)] = {64,0}, + [I(143,243)] = {64,0}, + [I(144,243)] = {64,0}, + [I(145,243)] = {64,0}, + [I(146,243)] = {64,0}, + [I(147,243)] = {64,0}, + [I(148,243)] = {64,0}, + [I(149,243)] = {64,0}, + [I(150,243)] = {64,0}, + [I(151,243)] = {64,0}, + [I(152,243)] = {64,0}, + [I(153,243)] = {64,0}, + [I(154,243)] = {64,0}, + [I(155,243)] = {64,0}, + [I(156,243)] = {64,0}, + [I(157,243)] = {64,0}, + [I(158,243)] = {64,0}, + [I(159,243)] = {64,0}, + [I(160,243)] = {64,0}, + [I(161,243)] = {64,0}, + [I(162,243)] = {64,0}, + [I(163,243)] = {64,0}, + [I(164,243)] = {64,0}, + [I(165,243)] = {64,0}, + [I(166,243)] = {64,0}, + [I(167,243)] = {64,0}, + [I(168,243)] = {64,0}, + [I(169,243)] = {64,0}, + [I(170,243)] = {64,0}, + [I(171,243)] = {64,0}, + [I(172,243)] = {64,0}, + [I(173,243)] = {64,0}, + [I(174,243)] = {64,0}, + [I(175,243)] = {64,0}, + [I(176,243)] = {64,0}, + [I(177,243)] = {64,0}, + [I(178,243)] = {64,0}, + [I(179,243)] = {64,0}, + [I(180,243)] = {64,0}, + [I(181,243)] = {64,0}, + [I(182,243)] = {64,0}, + [I(183,243)] = {64,0}, + [I(184,243)] = {64,0}, + [I(185,243)] = {64,0}, + [I(186,243)] = {64,0}, + [I(187,243)] = {64,0}, + [I(188,243)] = {64,0}, + [I(189,243)] = {64,0}, + [I(190,243)] = {64,0}, + [I(191,243)] = {64,0}, + [I(192,243)] = {64,0}, + [I(193,243)] = {64,0}, + [I(194,243)] = {64,0}, + [I(195,243)] = {64,0}, + [I(196,243)] = {64,0}, + [I(197,243)] = {64,0}, + [I(198,243)] = {64,0}, + [I(199,243)] = {64,0}, + [I(200,243)] = {64,0}, + [I(201,243)] = {64,0}, + [I(202,243)] = {64,0}, + [I(203,243)] = {64,0}, + [I(204,243)] = {64,0}, + [I(205,243)] = {64,0}, + [I(206,243)] = {64,0}, + [I(207,243)] = {64,0}, + [I(208,243)] = {64,0}, + [I(209,243)] = {64,0}, + [I(210,243)] = {64,0}, + [I(211,243)] = {64,0}, + [I(212,243)] = {64,0}, + [I(213,243)] = {64,0}, + [I(214,243)] = {64,0}, + [I(215,243)] = {64,0}, + [I(216,243)] = {64,0}, + [I(217,243)] = {64,0}, + [I(218,243)] = {64,0}, + [I(219,243)] = {64,0}, + [I(220,243)] = {64,0}, + [I(221,243)] = {64,0}, + [I(222,243)] = {64,0}, + [I(223,243)] = {64,0}, + [I(224,243)] = {64,0}, + [I(225,243)] = {64,0}, + [I(226,243)] = {64,0}, + [I(227,243)] = {64,0}, + [I(228,243)] = {64,0}, + [I(229,243)] = {64,0}, + [I(230,243)] = {64,0}, + [I(231,243)] = {64,0}, + [I(232,243)] = {64,0}, + [I(233,243)] = {64,0}, + [I(234,243)] = {64,0}, + [I(235,243)] = {64,0}, + [I(236,243)] = {64,0}, + [I(237,243)] = {64,0}, + [I(238,243)] = {64,0}, + [I(239,243)] = {64,0}, + [I(240,243)] = {64,0}, + [I(241,243)] = {64,0}, + [I(242,243)] = {64,0}, + [I(243,243)] = {64,0}, + [I(244,243)] = {64,0}, + [I(245,243)] = {64,0}, + [I(246,243)] = {64,0}, + [I(247,243)] = {64,0}, + [I(248,243)] = {64,0}, + [I(249,243)] = {64,0}, + [I(250,243)] = {64,0}, + [I(251,243)] = {64,0}, + [I(252,243)] = {64,0}, + [I(253,243)] = {64,0}, + [I(254,243)] = {64,0}, + [I(255,243)] = {64,0}, + [I(0,244)] = {64,0}, + [I(1,244)] = {64,0}, + [I(2,244)] = {64,0}, + [I(3,244)] = {64,0}, + [I(4,244)] = {64,0}, + [I(5,244)] = {64,0}, + [I(6,244)] = {64,0}, + [I(7,244)] = {64,0}, + [I(8,244)] = {64,0}, + [I(9,244)] = {64,0}, + [I(10,244)] = {64,0}, + [I(11,244)] = {64,0}, + [I(12,244)] = {64,0}, + [I(13,244)] = {64,0}, + [I(14,244)] = {64,0}, + [I(15,244)] = {64,0}, + [I(16,244)] = {64,0}, + [I(17,244)] = {64,0}, + [I(18,244)] = {64,0}, + [I(19,244)] = {64,0}, + [I(20,244)] = {64,0}, + [I(21,244)] = {64,0}, + [I(22,244)] = {64,0}, + [I(23,244)] = {64,0}, + [I(24,244)] = {64,0}, + [I(25,244)] = {64,0}, + [I(26,244)] = {64,0}, + [I(27,244)] = {64,0}, + [I(28,244)] = {64,0}, + [I(29,244)] = {64,0}, + [I(30,244)] = {64,0}, + [I(31,244)] = {64,0}, + [I(32,244)] = {64,0}, + [I(33,244)] = {64,0}, + [I(34,244)] = {64,0}, + [I(35,244)] = {64,0}, + [I(36,244)] = {64,0}, + [I(37,244)] = {64,0}, + [I(38,244)] = {64,0}, + [I(39,244)] = {64,0}, + [I(40,244)] = {64,0}, + [I(41,244)] = {64,0}, + [I(42,244)] = {64,0}, + [I(43,244)] = {64,0}, + [I(44,244)] = {64,0}, + [I(45,244)] = {64,0}, + [I(46,244)] = {64,0}, + [I(47,244)] = {64,0}, + [I(48,244)] = {X32,0x7FFFFE7}, + [I(49,244)] = {X32,0xFFFFFE7}, + [I(50,244)] = {X32,0x17FFFFE7}, + [I(51,244)] = {64,0}, + [I(52,244)] = {64,0}, + [I(53,244)] = {64,0}, + [I(54,244)] = {64,0}, + [I(55,244)] = {64,0}, + [I(56,244)] = {64,0}, + [I(57,244)] = {64,0}, + [I(58,244)] = {64,0}, + [I(59,244)] = {64,0}, + [I(60,244)] = {64,0}, + [I(61,244)] = {64,0}, + [I(62,244)] = {64,0}, + [I(63,244)] = {64,0}, + [I(64,244)] = {64,0}, + [I(65,244)] = {64,0}, + [I(66,244)] = {64,0}, + [I(67,244)] = {64,0}, + [I(68,244)] = {64,0}, + [I(69,244)] = {64,0}, + [I(70,244)] = {64,0}, + [I(71,244)] = {64,0}, + [I(72,244)] = {64,0}, + [I(73,244)] = {64,0}, + [I(74,244)] = {64,0}, + [I(75,244)] = {64,0}, + [I(76,244)] = {64,0}, + [I(77,244)] = {64,0}, + [I(78,244)] = {64,0}, + [I(79,244)] = {64,0}, + [I(80,244)] = {64,0}, + [I(81,244)] = {64,0}, + [I(82,244)] = {64,0}, + [I(83,244)] = {64,0}, + [I(84,244)] = {64,0}, + [I(85,244)] = {64,0}, + [I(86,244)] = {64,0}, + [I(87,244)] = {64,0}, + [I(88,244)] = {64,0}, + [I(89,244)] = {64,0}, + [I(90,244)] = {64,0}, + [I(91,244)] = {64,0}, + [I(92,244)] = {64,0}, + [I(93,244)] = {64,0}, + [I(94,244)] = {64,0}, + [I(95,244)] = {64,0}, + [I(96,244)] = {64,0}, + [I(97,244)] = {X32,0x1FFFFFE7}, + [I(98,244)] = {64,0}, + [I(99,244)] = {X32,0x27FFFFE7}, + [I(100,244)] = {64,0}, + [I(101,244)] = {X32,0x2FFFFFE7}, + [I(102,244)] = {64,0}, + [I(103,244)] = {64,0}, + [I(104,244)] = {64,0}, + [I(105,244)] = {X32,0x37FFFFE7}, + [I(106,244)] = {64,0}, + [I(107,244)] = {64,0}, + [I(108,244)] = {64,0}, + [I(109,244)] = {64,0}, + [I(110,244)] = {64,0}, + [I(111,244)] = {X32,0x3FFFFFE7}, + [I(112,244)] = {64,0}, + [I(113,244)] = {64,0}, + [I(114,244)] = {64,0}, + [I(115,244)] = {X32,0x47FFFFE7}, + [I(116,244)] = {X32,0x4FFFFFE7}, + [I(117,244)] = {64,0}, + [I(118,244)] = {64,0}, + [I(119,244)] = {64,0}, + [I(120,244)] = {64,0}, + [I(121,244)] = {64,0}, + [I(122,244)] = {64,0}, + [I(123,244)] = {64,0}, + [I(124,244)] = {64,0}, + [I(125,244)] = {64,0}, + [I(126,244)] = {64,0}, + [I(127,244)] = {64,0}, + [I(128,244)] = {64,0}, + [I(129,244)] = {64,0}, + [I(130,244)] = {64,0}, + [I(131,244)] = {64,0}, + [I(132,244)] = {64,0}, + [I(133,244)] = {64,0}, + [I(134,244)] = {64,0}, + [I(135,244)] = {64,0}, + [I(136,244)] = {64,0}, + [I(137,244)] = {64,0}, + [I(138,244)] = {64,0}, + [I(139,244)] = {64,0}, + [I(140,244)] = {64,0}, + [I(141,244)] = {64,0}, + [I(142,244)] = {64,0}, + [I(143,244)] = {64,0}, + [I(144,244)] = {64,0}, + [I(145,244)] = {64,0}, + [I(146,244)] = {64,0}, + [I(147,244)] = {64,0}, + [I(148,244)] = {64,0}, + [I(149,244)] = {64,0}, + [I(150,244)] = {64,0}, + [I(151,244)] = {64,0}, + [I(152,244)] = {64,0}, + [I(153,244)] = {64,0}, + [I(154,244)] = {64,0}, + [I(155,244)] = {64,0}, + [I(156,244)] = {64,0}, + [I(157,244)] = {64,0}, + [I(158,244)] = {64,0}, + [I(159,244)] = {64,0}, + [I(160,244)] = {64,0}, + [I(161,244)] = {64,0}, + [I(162,244)] = {64,0}, + [I(163,244)] = {64,0}, + [I(164,244)] = {64,0}, + [I(165,244)] = {64,0}, + [I(166,244)] = {64,0}, + [I(167,244)] = {64,0}, + [I(168,244)] = {64,0}, + [I(169,244)] = {64,0}, + [I(170,244)] = {64,0}, + [I(171,244)] = {64,0}, + [I(172,244)] = {64,0}, + [I(173,244)] = {64,0}, + [I(174,244)] = {64,0}, + [I(175,244)] = {64,0}, + [I(176,244)] = {64,0}, + [I(177,244)] = {64,0}, + [I(178,244)] = {64,0}, + [I(179,244)] = {64,0}, + [I(180,244)] = {64,0}, + [I(181,244)] = {64,0}, + [I(182,244)] = {64,0}, + [I(183,244)] = {64,0}, + [I(184,244)] = {64,0}, + [I(185,244)] = {64,0}, + [I(186,244)] = {64,0}, + [I(187,244)] = {64,0}, + [I(188,244)] = {64,0}, + [I(189,244)] = {64,0}, + [I(190,244)] = {64,0}, + [I(191,244)] = {64,0}, + [I(192,244)] = {64,0}, + [I(193,244)] = {64,0}, + [I(194,244)] = {64,0}, + [I(195,244)] = {64,0}, + [I(196,244)] = {64,0}, + [I(197,244)] = {64,0}, + [I(198,244)] = {64,0}, + [I(199,244)] = {64,0}, + [I(200,244)] = {64,0}, + [I(201,244)] = {64,0}, + [I(202,244)] = {64,0}, + [I(203,244)] = {64,0}, + [I(204,244)] = {64,0}, + [I(205,244)] = {64,0}, + [I(206,244)] = {64,0}, + [I(207,244)] = {64,0}, + [I(208,244)] = {64,0}, + [I(209,244)] = {64,0}, + [I(210,244)] = {64,0}, + [I(211,244)] = {64,0}, + [I(212,244)] = {64,0}, + [I(213,244)] = {64,0}, + [I(214,244)] = {64,0}, + [I(215,244)] = {64,0}, + [I(216,244)] = {64,0}, + [I(217,244)] = {64,0}, + [I(218,244)] = {64,0}, + [I(219,244)] = {64,0}, + [I(220,244)] = {64,0}, + [I(221,244)] = {64,0}, + [I(222,244)] = {64,0}, + [I(223,244)] = {64,0}, + [I(224,244)] = {64,0}, + [I(225,244)] = {64,0}, + [I(226,244)] = {64,0}, + [I(227,244)] = {64,0}, + [I(228,244)] = {64,0}, + [I(229,244)] = {64,0}, + [I(230,244)] = {64,0}, + [I(231,244)] = {64,0}, + [I(232,244)] = {64,0}, + [I(233,244)] = {64,0}, + [I(234,244)] = {64,0}, + [I(235,244)] = {64,0}, + [I(236,244)] = {64,0}, + [I(237,244)] = {64,0}, + [I(238,244)] = {64,0}, + [I(239,244)] = {64,0}, + [I(240,244)] = {64,0}, + [I(241,244)] = {64,0}, + [I(242,244)] = {64,0}, + [I(243,244)] = {64,0}, + [I(244,244)] = {64,0}, + [I(245,244)] = {64,0}, + [I(246,244)] = {64,0}, + [I(247,244)] = {64,0}, + [I(248,244)] = {64,0}, + [I(249,244)] = {64,0}, + [I(250,244)] = {64,0}, + [I(251,244)] = {64,0}, + [I(252,244)] = {64,0}, + [I(253,244)] = {64,0}, + [I(254,244)] = {64,0}, + [I(255,244)] = {64,0}, + [I(0,245)] = {64,0}, + [I(1,245)] = {64,0}, + [I(2,245)] = {64,0}, + [I(3,245)] = {64,0}, + [I(4,245)] = {64,0}, + [I(5,245)] = {64,0}, + [I(6,245)] = {64,0}, + [I(7,245)] = {64,0}, + [I(8,245)] = {64,0}, + [I(9,245)] = {64,0}, + [I(10,245)] = {64,0}, + [I(11,245)] = {64,0}, + [I(12,245)] = {64,0}, + [I(13,245)] = {64,0}, + [I(14,245)] = {64,0}, + [I(15,245)] = {64,0}, + [I(16,245)] = {64,0}, + [I(17,245)] = {64,0}, + [I(18,245)] = {64,0}, + [I(19,245)] = {64,0}, + [I(20,245)] = {64,0}, + [I(21,245)] = {64,0}, + [I(22,245)] = {64,0}, + [I(23,245)] = {64,0}, + [I(24,245)] = {64,0}, + [I(25,245)] = {64,0}, + [I(26,245)] = {64,0}, + [I(27,245)] = {64,0}, + [I(28,245)] = {64,0}, + [I(29,245)] = {64,0}, + [I(30,245)] = {64,0}, + [I(31,245)] = {64,0}, + [I(32,245)] = {64,0}, + [I(33,245)] = {64,0}, + [I(34,245)] = {64,0}, + [I(35,245)] = {64,0}, + [I(36,245)] = {64,0}, + [I(37,245)] = {64,0}, + [I(38,245)] = {64,0}, + [I(39,245)] = {64,0}, + [I(40,245)] = {64,0}, + [I(41,245)] = {64,0}, + [I(42,245)] = {64,0}, + [I(43,245)] = {64,0}, + [I(44,245)] = {64,0}, + [I(45,245)] = {64,0}, + [I(46,245)] = {64,0}, + [I(47,245)] = {64,0}, + [I(48,245)] = {X32,0x7FFFFE8}, + [I(49,245)] = {X32,0xFFFFFE8}, + [I(50,245)] = {X32,0x17FFFFE8}, + [I(51,245)] = {64,0}, + [I(52,245)] = {64,0}, + [I(53,245)] = {64,0}, + [I(54,245)] = {64,0}, + [I(55,245)] = {64,0}, + [I(56,245)] = {64,0}, + [I(57,245)] = {64,0}, + [I(58,245)] = {64,0}, + [I(59,245)] = {64,0}, + [I(60,245)] = {64,0}, + [I(61,245)] = {64,0}, + [I(62,245)] = {64,0}, + [I(63,245)] = {64,0}, + [I(64,245)] = {64,0}, + [I(65,245)] = {64,0}, + [I(66,245)] = {64,0}, + [I(67,245)] = {64,0}, + [I(68,245)] = {64,0}, + [I(69,245)] = {64,0}, + [I(70,245)] = {64,0}, + [I(71,245)] = {64,0}, + [I(72,245)] = {64,0}, + [I(73,245)] = {64,0}, + [I(74,245)] = {64,0}, + [I(75,245)] = {64,0}, + [I(76,245)] = {64,0}, + [I(77,245)] = {64,0}, + [I(78,245)] = {64,0}, + [I(79,245)] = {64,0}, + [I(80,245)] = {64,0}, + [I(81,245)] = {64,0}, + [I(82,245)] = {64,0}, + [I(83,245)] = {64,0}, + [I(84,245)] = {64,0}, + [I(85,245)] = {64,0}, + [I(86,245)] = {64,0}, + [I(87,245)] = {64,0}, + [I(88,245)] = {64,0}, + [I(89,245)] = {64,0}, + [I(90,245)] = {64,0}, + [I(91,245)] = {64,0}, + [I(92,245)] = {64,0}, + [I(93,245)] = {64,0}, + [I(94,245)] = {64,0}, + [I(95,245)] = {64,0}, + [I(96,245)] = {64,0}, + [I(97,245)] = {X32,0x1FFFFFE8}, + [I(98,245)] = {64,0}, + [I(99,245)] = {X32,0x27FFFFE8}, + [I(100,245)] = {64,0}, + [I(101,245)] = {X32,0x2FFFFFE8}, + [I(102,245)] = {64,0}, + [I(103,245)] = {64,0}, + [I(104,245)] = {64,0}, + [I(105,245)] = {X32,0x37FFFFE8}, + [I(106,245)] = {64,0}, + [I(107,245)] = {64,0}, + [I(108,245)] = {64,0}, + [I(109,245)] = {64,0}, + [I(110,245)] = {64,0}, + [I(111,245)] = {X32,0x3FFFFFE8}, + [I(112,245)] = {64,0}, + [I(113,245)] = {64,0}, + [I(114,245)] = {64,0}, + [I(115,245)] = {X32,0x47FFFFE8}, + [I(116,245)] = {X32,0x4FFFFFE8}, + [I(117,245)] = {64,0}, + [I(118,245)] = {64,0}, + [I(119,245)] = {64,0}, + [I(120,245)] = {64,0}, + [I(121,245)] = {64,0}, + [I(122,245)] = {64,0}, + [I(123,245)] = {64,0}, + [I(124,245)] = {64,0}, + [I(125,245)] = {64,0}, + [I(126,245)] = {64,0}, + [I(127,245)] = {64,0}, + [I(128,245)] = {64,0}, + [I(129,245)] = {64,0}, + [I(130,245)] = {64,0}, + [I(131,245)] = {64,0}, + [I(132,245)] = {64,0}, + [I(133,245)] = {64,0}, + [I(134,245)] = {64,0}, + [I(135,245)] = {64,0}, + [I(136,245)] = {64,0}, + [I(137,245)] = {64,0}, + [I(138,245)] = {64,0}, + [I(139,245)] = {64,0}, + [I(140,245)] = {64,0}, + [I(141,245)] = {64,0}, + [I(142,245)] = {64,0}, + [I(143,245)] = {64,0}, + [I(144,245)] = {64,0}, + [I(145,245)] = {64,0}, + [I(146,245)] = {64,0}, + [I(147,245)] = {64,0}, + [I(148,245)] = {64,0}, + [I(149,245)] = {64,0}, + [I(150,245)] = {64,0}, + [I(151,245)] = {64,0}, + [I(152,245)] = {64,0}, + [I(153,245)] = {64,0}, + [I(154,245)] = {64,0}, + [I(155,245)] = {64,0}, + [I(156,245)] = {64,0}, + [I(157,245)] = {64,0}, + [I(158,245)] = {64,0}, + [I(159,245)] = {64,0}, + [I(160,245)] = {64,0}, + [I(161,245)] = {64,0}, + [I(162,245)] = {64,0}, + [I(163,245)] = {64,0}, + [I(164,245)] = {64,0}, + [I(165,245)] = {64,0}, + [I(166,245)] = {64,0}, + [I(167,245)] = {64,0}, + [I(168,245)] = {64,0}, + [I(169,245)] = {64,0}, + [I(170,245)] = {64,0}, + [I(171,245)] = {64,0}, + [I(172,245)] = {64,0}, + [I(173,245)] = {64,0}, + [I(174,245)] = {64,0}, + [I(175,245)] = {64,0}, + [I(176,245)] = {64,0}, + [I(177,245)] = {64,0}, + [I(178,245)] = {64,0}, + [I(179,245)] = {64,0}, + [I(180,245)] = {64,0}, + [I(181,245)] = {64,0}, + [I(182,245)] = {64,0}, + [I(183,245)] = {64,0}, + [I(184,245)] = {64,0}, + [I(185,245)] = {64,0}, + [I(186,245)] = {64,0}, + [I(187,245)] = {64,0}, + [I(188,245)] = {64,0}, + [I(189,245)] = {64,0}, + [I(190,245)] = {64,0}, + [I(191,245)] = {64,0}, + [I(192,245)] = {64,0}, + [I(193,245)] = {64,0}, + [I(194,245)] = {64,0}, + [I(195,245)] = {64,0}, + [I(196,245)] = {64,0}, + [I(197,245)] = {64,0}, + [I(198,245)] = {64,0}, + [I(199,245)] = {64,0}, + [I(200,245)] = {64,0}, + [I(201,245)] = {64,0}, + [I(202,245)] = {64,0}, + [I(203,245)] = {64,0}, + [I(204,245)] = {64,0}, + [I(205,245)] = {64,0}, + [I(206,245)] = {64,0}, + [I(207,245)] = {64,0}, + [I(208,245)] = {64,0}, + [I(209,245)] = {64,0}, + [I(210,245)] = {64,0}, + [I(211,245)] = {64,0}, + [I(212,245)] = {64,0}, + [I(213,245)] = {64,0}, + [I(214,245)] = {64,0}, + [I(215,245)] = {64,0}, + [I(216,245)] = {64,0}, + [I(217,245)] = {64,0}, + [I(218,245)] = {64,0}, + [I(219,245)] = {64,0}, + [I(220,245)] = {64,0}, + [I(221,245)] = {64,0}, + [I(222,245)] = {64,0}, + [I(223,245)] = {64,0}, + [I(224,245)] = {64,0}, + [I(225,245)] = {64,0}, + [I(226,245)] = {64,0}, + [I(227,245)] = {64,0}, + [I(228,245)] = {64,0}, + [I(229,245)] = {64,0}, + [I(230,245)] = {64,0}, + [I(231,245)] = {64,0}, + [I(232,245)] = {64,0}, + [I(233,245)] = {64,0}, + [I(234,245)] = {64,0}, + [I(235,245)] = {64,0}, + [I(236,245)] = {64,0}, + [I(237,245)] = {64,0}, + [I(238,245)] = {64,0}, + [I(239,245)] = {64,0}, + [I(240,245)] = {64,0}, + [I(241,245)] = {64,0}, + [I(242,245)] = {64,0}, + [I(243,245)] = {64,0}, + [I(244,245)] = {64,0}, + [I(245,245)] = {64,0}, + [I(246,245)] = {64,0}, + [I(247,245)] = {64,0}, + [I(248,245)] = {64,0}, + [I(249,245)] = {64,0}, + [I(250,245)] = {64,0}, + [I(251,245)] = {64,0}, + [I(252,245)] = {64,0}, + [I(253,245)] = {64,0}, + [I(254,245)] = {64,0}, + [I(255,245)] = {64,0}, + [I(0,246)] = {64,0}, + [I(1,246)] = {64,0}, + [I(2,246)] = {64,0}, + [I(3,246)] = {64,0}, + [I(4,246)] = {64,0}, + [I(5,246)] = {64,0}, + [I(6,246)] = {64,0}, + [I(7,246)] = {64,0}, + [I(8,246)] = {64,0}, + [I(9,246)] = {64,0}, + [I(10,246)] = {64,0}, + [I(11,246)] = {64,0}, + [I(12,246)] = {64,0}, + [I(13,246)] = {64,0}, + [I(14,246)] = {64,0}, + [I(15,246)] = {64,0}, + [I(16,246)] = {64,0}, + [I(17,246)] = {64,0}, + [I(18,246)] = {64,0}, + [I(19,246)] = {64,0}, + [I(20,246)] = {64,0}, + [I(21,246)] = {64,0}, + [I(22,246)] = {64,0}, + [I(23,246)] = {64,0}, + [I(24,246)] = {64,0}, + [I(25,246)] = {64,0}, + [I(26,246)] = {64,0}, + [I(27,246)] = {64,0}, + [I(28,246)] = {64,0}, + [I(29,246)] = {64,0}, + [I(30,246)] = {64,0}, + [I(31,246)] = {64,0}, + [I(32,246)] = {64,0}, + [I(33,246)] = {64,0}, + [I(34,246)] = {64,0}, + [I(35,246)] = {64,0}, + [I(36,246)] = {64,0}, + [I(37,246)] = {64,0}, + [I(38,246)] = {64,0}, + [I(39,246)] = {64,0}, + [I(40,246)] = {64,0}, + [I(41,246)] = {64,0}, + [I(42,246)] = {64,0}, + [I(43,246)] = {64,0}, + [I(44,246)] = {64,0}, + [I(45,246)] = {64,0}, + [I(46,246)] = {64,0}, + [I(47,246)] = {64,0}, + [I(48,246)] = {X32,0x7FFFFE9}, + [I(49,246)] = {X32,0xFFFFFE9}, + [I(50,246)] = {X32,0x17FFFFE9}, + [I(51,246)] = {64,0}, + [I(52,246)] = {64,0}, + [I(53,246)] = {64,0}, + [I(54,246)] = {64,0}, + [I(55,246)] = {64,0}, + [I(56,246)] = {64,0}, + [I(57,246)] = {64,0}, + [I(58,246)] = {64,0}, + [I(59,246)] = {64,0}, + [I(60,246)] = {64,0}, + [I(61,246)] = {64,0}, + [I(62,246)] = {64,0}, + [I(63,246)] = {64,0}, + [I(64,246)] = {64,0}, + [I(65,246)] = {64,0}, + [I(66,246)] = {64,0}, + [I(67,246)] = {64,0}, + [I(68,246)] = {64,0}, + [I(69,246)] = {64,0}, + [I(70,246)] = {64,0}, + [I(71,246)] = {64,0}, + [I(72,246)] = {64,0}, + [I(73,246)] = {64,0}, + [I(74,246)] = {64,0}, + [I(75,246)] = {64,0}, + [I(76,246)] = {64,0}, + [I(77,246)] = {64,0}, + [I(78,246)] = {64,0}, + [I(79,246)] = {64,0}, + [I(80,246)] = {64,0}, + [I(81,246)] = {64,0}, + [I(82,246)] = {64,0}, + [I(83,246)] = {64,0}, + [I(84,246)] = {64,0}, + [I(85,246)] = {64,0}, + [I(86,246)] = {64,0}, + [I(87,246)] = {64,0}, + [I(88,246)] = {64,0}, + [I(89,246)] = {64,0}, + [I(90,246)] = {64,0}, + [I(91,246)] = {64,0}, + [I(92,246)] = {64,0}, + [I(93,246)] = {64,0}, + [I(94,246)] = {64,0}, + [I(95,246)] = {64,0}, + [I(96,246)] = {64,0}, + [I(97,246)] = {X32,0x1FFFFFE9}, + [I(98,246)] = {64,0}, + [I(99,246)] = {X32,0x27FFFFE9}, + [I(100,246)] = {64,0}, + [I(101,246)] = {X32,0x2FFFFFE9}, + [I(102,246)] = {64,0}, + [I(103,246)] = {64,0}, + [I(104,246)] = {64,0}, + [I(105,246)] = {X32,0x37FFFFE9}, + [I(106,246)] = {64,0}, + [I(107,246)] = {64,0}, + [I(108,246)] = {64,0}, + [I(109,246)] = {64,0}, + [I(110,246)] = {64,0}, + [I(111,246)] = {X32,0x3FFFFFE9}, + [I(112,246)] = {64,0}, + [I(113,246)] = {64,0}, + [I(114,246)] = {64,0}, + [I(115,246)] = {X32,0x47FFFFE9}, + [I(116,246)] = {X32,0x4FFFFFE9}, + [I(117,246)] = {64,0}, + [I(118,246)] = {64,0}, + [I(119,246)] = {64,0}, + [I(120,246)] = {64,0}, + [I(121,246)] = {64,0}, + [I(122,246)] = {64,0}, + [I(123,246)] = {64,0}, + [I(124,246)] = {64,0}, + [I(125,246)] = {64,0}, + [I(126,246)] = {64,0}, + [I(127,246)] = {64,0}, + [I(128,246)] = {64,0}, + [I(129,246)] = {64,0}, + [I(130,246)] = {64,0}, + [I(131,246)] = {64,0}, + [I(132,246)] = {64,0}, + [I(133,246)] = {64,0}, + [I(134,246)] = {64,0}, + [I(135,246)] = {64,0}, + [I(136,246)] = {64,0}, + [I(137,246)] = {64,0}, + [I(138,246)] = {64,0}, + [I(139,246)] = {64,0}, + [I(140,246)] = {64,0}, + [I(141,246)] = {64,0}, + [I(142,246)] = {64,0}, + [I(143,246)] = {64,0}, + [I(144,246)] = {64,0}, + [I(145,246)] = {64,0}, + [I(146,246)] = {64,0}, + [I(147,246)] = {64,0}, + [I(148,246)] = {64,0}, + [I(149,246)] = {64,0}, + [I(150,246)] = {64,0}, + [I(151,246)] = {64,0}, + [I(152,246)] = {64,0}, + [I(153,246)] = {64,0}, + [I(154,246)] = {64,0}, + [I(155,246)] = {64,0}, + [I(156,246)] = {64,0}, + [I(157,246)] = {64,0}, + [I(158,246)] = {64,0}, + [I(159,246)] = {64,0}, + [I(160,246)] = {64,0}, + [I(161,246)] = {64,0}, + [I(162,246)] = {64,0}, + [I(163,246)] = {64,0}, + [I(164,246)] = {64,0}, + [I(165,246)] = {64,0}, + [I(166,246)] = {64,0}, + [I(167,246)] = {64,0}, + [I(168,246)] = {64,0}, + [I(169,246)] = {64,0}, + [I(170,246)] = {64,0}, + [I(171,246)] = {64,0}, + [I(172,246)] = {64,0}, + [I(173,246)] = {64,0}, + [I(174,246)] = {64,0}, + [I(175,246)] = {64,0}, + [I(176,246)] = {64,0}, + [I(177,246)] = {64,0}, + [I(178,246)] = {64,0}, + [I(179,246)] = {64,0}, + [I(180,246)] = {64,0}, + [I(181,246)] = {64,0}, + [I(182,246)] = {64,0}, + [I(183,246)] = {64,0}, + [I(184,246)] = {64,0}, + [I(185,246)] = {64,0}, + [I(186,246)] = {64,0}, + [I(187,246)] = {64,0}, + [I(188,246)] = {64,0}, + [I(189,246)] = {64,0}, + [I(190,246)] = {64,0}, + [I(191,246)] = {64,0}, + [I(192,246)] = {64,0}, + [I(193,246)] = {64,0}, + [I(194,246)] = {64,0}, + [I(195,246)] = {64,0}, + [I(196,246)] = {64,0}, + [I(197,246)] = {64,0}, + [I(198,246)] = {64,0}, + [I(199,246)] = {64,0}, + [I(200,246)] = {64,0}, + [I(201,246)] = {64,0}, + [I(202,246)] = {64,0}, + [I(203,246)] = {64,0}, + [I(204,246)] = {64,0}, + [I(205,246)] = {64,0}, + [I(206,246)] = {64,0}, + [I(207,246)] = {64,0}, + [I(208,246)] = {64,0}, + [I(209,246)] = {64,0}, + [I(210,246)] = {64,0}, + [I(211,246)] = {64,0}, + [I(212,246)] = {64,0}, + [I(213,246)] = {64,0}, + [I(214,246)] = {64,0}, + [I(215,246)] = {64,0}, + [I(216,246)] = {64,0}, + [I(217,246)] = {64,0}, + [I(218,246)] = {64,0}, + [I(219,246)] = {64,0}, + [I(220,246)] = {64,0}, + [I(221,246)] = {64,0}, + [I(222,246)] = {64,0}, + [I(223,246)] = {64,0}, + [I(224,246)] = {64,0}, + [I(225,246)] = {64,0}, + [I(226,246)] = {64,0}, + [I(227,246)] = {64,0}, + [I(228,246)] = {64,0}, + [I(229,246)] = {64,0}, + [I(230,246)] = {64,0}, + [I(231,246)] = {64,0}, + [I(232,246)] = {64,0}, + [I(233,246)] = {64,0}, + [I(234,246)] = {64,0}, + [I(235,246)] = {64,0}, + [I(236,246)] = {64,0}, + [I(237,246)] = {64,0}, + [I(238,246)] = {64,0}, + [I(239,246)] = {64,0}, + [I(240,246)] = {64,0}, + [I(241,246)] = {64,0}, + [I(242,246)] = {64,0}, + [I(243,246)] = {64,0}, + [I(244,246)] = {64,0}, + [I(245,246)] = {64,0}, + [I(246,246)] = {64,0}, + [I(247,246)] = {64,0}, + [I(248,246)] = {64,0}, + [I(249,246)] = {64,0}, + [I(250,246)] = {64,0}, + [I(251,246)] = {64,0}, + [I(252,246)] = {64,0}, + [I(253,246)] = {64,0}, + [I(254,246)] = {64,0}, + [I(255,246)] = {64,0}, + [I(0,247)] = {64,0}, + [I(1,247)] = {64,0}, + [I(2,247)] = {64,0}, + [I(3,247)] = {64,0}, + [I(4,247)] = {64,0}, + [I(5,247)] = {64,0}, + [I(6,247)] = {64,0}, + [I(7,247)] = {64,0}, + [I(8,247)] = {64,0}, + [I(9,247)] = {64,0}, + [I(10,247)] = {64,0}, + [I(11,247)] = {64,0}, + [I(12,247)] = {64,0}, + [I(13,247)] = {64,0}, + [I(14,247)] = {64,0}, + [I(15,247)] = {64,0}, + [I(16,247)] = {64,0}, + [I(17,247)] = {64,0}, + [I(18,247)] = {64,0}, + [I(19,247)] = {64,0}, + [I(20,247)] = {64,0}, + [I(21,247)] = {64,0}, + [I(22,247)] = {64,0}, + [I(23,247)] = {64,0}, + [I(24,247)] = {64,0}, + [I(25,247)] = {64,0}, + [I(26,247)] = {64,0}, + [I(27,247)] = {64,0}, + [I(28,247)] = {64,0}, + [I(29,247)] = {64,0}, + [I(30,247)] = {64,0}, + [I(31,247)] = {64,0}, + [I(32,247)] = {64,0}, + [I(33,247)] = {64,0}, + [I(34,247)] = {64,0}, + [I(35,247)] = {64,0}, + [I(36,247)] = {64,0}, + [I(37,247)] = {64,0}, + [I(38,247)] = {64,0}, + [I(39,247)] = {64,0}, + [I(40,247)] = {64,0}, + [I(41,247)] = {64,0}, + [I(42,247)] = {64,0}, + [I(43,247)] = {64,0}, + [I(44,247)] = {64,0}, + [I(45,247)] = {64,0}, + [I(46,247)] = {64,0}, + [I(47,247)] = {64,0}, + [I(48,247)] = {X32,0x7FFFFEA}, + [I(49,247)] = {X32,0xFFFFFEA}, + [I(50,247)] = {X32,0x17FFFFEA}, + [I(51,247)] = {64,0}, + [I(52,247)] = {64,0}, + [I(53,247)] = {64,0}, + [I(54,247)] = {64,0}, + [I(55,247)] = {64,0}, + [I(56,247)] = {64,0}, + [I(57,247)] = {64,0}, + [I(58,247)] = {64,0}, + [I(59,247)] = {64,0}, + [I(60,247)] = {64,0}, + [I(61,247)] = {64,0}, + [I(62,247)] = {64,0}, + [I(63,247)] = {64,0}, + [I(64,247)] = {64,0}, + [I(65,247)] = {64,0}, + [I(66,247)] = {64,0}, + [I(67,247)] = {64,0}, + [I(68,247)] = {64,0}, + [I(69,247)] = {64,0}, + [I(70,247)] = {64,0}, + [I(71,247)] = {64,0}, + [I(72,247)] = {64,0}, + [I(73,247)] = {64,0}, + [I(74,247)] = {64,0}, + [I(75,247)] = {64,0}, + [I(76,247)] = {64,0}, + [I(77,247)] = {64,0}, + [I(78,247)] = {64,0}, + [I(79,247)] = {64,0}, + [I(80,247)] = {64,0}, + [I(81,247)] = {64,0}, + [I(82,247)] = {64,0}, + [I(83,247)] = {64,0}, + [I(84,247)] = {64,0}, + [I(85,247)] = {64,0}, + [I(86,247)] = {64,0}, + [I(87,247)] = {64,0}, + [I(88,247)] = {64,0}, + [I(89,247)] = {64,0}, + [I(90,247)] = {64,0}, + [I(91,247)] = {64,0}, + [I(92,247)] = {64,0}, + [I(93,247)] = {64,0}, + [I(94,247)] = {64,0}, + [I(95,247)] = {64,0}, + [I(96,247)] = {64,0}, + [I(97,247)] = {X32,0x1FFFFFEA}, + [I(98,247)] = {64,0}, + [I(99,247)] = {X32,0x27FFFFEA}, + [I(100,247)] = {64,0}, + [I(101,247)] = {X32,0x2FFFFFEA}, + [I(102,247)] = {64,0}, + [I(103,247)] = {64,0}, + [I(104,247)] = {64,0}, + [I(105,247)] = {X32,0x37FFFFEA}, + [I(106,247)] = {64,0}, + [I(107,247)] = {64,0}, + [I(108,247)] = {64,0}, + [I(109,247)] = {64,0}, + [I(110,247)] = {64,0}, + [I(111,247)] = {X32,0x3FFFFFEA}, + [I(112,247)] = {64,0}, + [I(113,247)] = {64,0}, + [I(114,247)] = {64,0}, + [I(115,247)] = {X32,0x47FFFFEA}, + [I(116,247)] = {X32,0x4FFFFFEA}, + [I(117,247)] = {64,0}, + [I(118,247)] = {64,0}, + [I(119,247)] = {64,0}, + [I(120,247)] = {64,0}, + [I(121,247)] = {64,0}, + [I(122,247)] = {64,0}, + [I(123,247)] = {64,0}, + [I(124,247)] = {64,0}, + [I(125,247)] = {64,0}, + [I(126,247)] = {64,0}, + [I(127,247)] = {64,0}, + [I(128,247)] = {64,0}, + [I(129,247)] = {64,0}, + [I(130,247)] = {64,0}, + [I(131,247)] = {64,0}, + [I(132,247)] = {64,0}, + [I(133,247)] = {64,0}, + [I(134,247)] = {64,0}, + [I(135,247)] = {64,0}, + [I(136,247)] = {64,0}, + [I(137,247)] = {64,0}, + [I(138,247)] = {64,0}, + [I(139,247)] = {64,0}, + [I(140,247)] = {64,0}, + [I(141,247)] = {64,0}, + [I(142,247)] = {64,0}, + [I(143,247)] = {64,0}, + [I(144,247)] = {64,0}, + [I(145,247)] = {64,0}, + [I(146,247)] = {64,0}, + [I(147,247)] = {64,0}, + [I(148,247)] = {64,0}, + [I(149,247)] = {64,0}, + [I(150,247)] = {64,0}, + [I(151,247)] = {64,0}, + [I(152,247)] = {64,0}, + [I(153,247)] = {64,0}, + [I(154,247)] = {64,0}, + [I(155,247)] = {64,0}, + [I(156,247)] = {64,0}, + [I(157,247)] = {64,0}, + [I(158,247)] = {64,0}, + [I(159,247)] = {64,0}, + [I(160,247)] = {64,0}, + [I(161,247)] = {64,0}, + [I(162,247)] = {64,0}, + [I(163,247)] = {64,0}, + [I(164,247)] = {64,0}, + [I(165,247)] = {64,0}, + [I(166,247)] = {64,0}, + [I(167,247)] = {64,0}, + [I(168,247)] = {64,0}, + [I(169,247)] = {64,0}, + [I(170,247)] = {64,0}, + [I(171,247)] = {64,0}, + [I(172,247)] = {64,0}, + [I(173,247)] = {64,0}, + [I(174,247)] = {64,0}, + [I(175,247)] = {64,0}, + [I(176,247)] = {64,0}, + [I(177,247)] = {64,0}, + [I(178,247)] = {64,0}, + [I(179,247)] = {64,0}, + [I(180,247)] = {64,0}, + [I(181,247)] = {64,0}, + [I(182,247)] = {64,0}, + [I(183,247)] = {64,0}, + [I(184,247)] = {64,0}, + [I(185,247)] = {64,0}, + [I(186,247)] = {64,0}, + [I(187,247)] = {64,0}, + [I(188,247)] = {64,0}, + [I(189,247)] = {64,0}, + [I(190,247)] = {64,0}, + [I(191,247)] = {64,0}, + [I(192,247)] = {64,0}, + [I(193,247)] = {64,0}, + [I(194,247)] = {64,0}, + [I(195,247)] = {64,0}, + [I(196,247)] = {64,0}, + [I(197,247)] = {64,0}, + [I(198,247)] = {64,0}, + [I(199,247)] = {64,0}, + [I(200,247)] = {64,0}, + [I(201,247)] = {64,0}, + [I(202,247)] = {64,0}, + [I(203,247)] = {64,0}, + [I(204,247)] = {64,0}, + [I(205,247)] = {64,0}, + [I(206,247)] = {64,0}, + [I(207,247)] = {64,0}, + [I(208,247)] = {64,0}, + [I(209,247)] = {64,0}, + [I(210,247)] = {64,0}, + [I(211,247)] = {64,0}, + [I(212,247)] = {64,0}, + [I(213,247)] = {64,0}, + [I(214,247)] = {64,0}, + [I(215,247)] = {64,0}, + [I(216,247)] = {64,0}, + [I(217,247)] = {64,0}, + [I(218,247)] = {64,0}, + [I(219,247)] = {64,0}, + [I(220,247)] = {64,0}, + [I(221,247)] = {64,0}, + [I(222,247)] = {64,0}, + [I(223,247)] = {64,0}, + [I(224,247)] = {64,0}, + [I(225,247)] = {64,0}, + [I(226,247)] = {64,0}, + [I(227,247)] = {64,0}, + [I(228,247)] = {64,0}, + [I(229,247)] = {64,0}, + [I(230,247)] = {64,0}, + [I(231,247)] = {64,0}, + [I(232,247)] = {64,0}, + [I(233,247)] = {64,0}, + [I(234,247)] = {64,0}, + [I(235,247)] = {64,0}, + [I(236,247)] = {64,0}, + [I(237,247)] = {64,0}, + [I(238,247)] = {64,0}, + [I(239,247)] = {64,0}, + [I(240,247)] = {64,0}, + [I(241,247)] = {64,0}, + [I(242,247)] = {64,0}, + [I(243,247)] = {64,0}, + [I(244,247)] = {64,0}, + [I(245,247)] = {64,0}, + [I(246,247)] = {64,0}, + [I(247,247)] = {64,0}, + [I(248,247)] = {64,0}, + [I(249,247)] = {64,0}, + [I(250,247)] = {64,0}, + [I(251,247)] = {64,0}, + [I(252,247)] = {64,0}, + [I(253,247)] = {64,0}, + [I(254,247)] = {64,0}, + [I(255,247)] = {64,0}, + [I(0,248)] = {64,0}, + [I(1,248)] = {64,0}, + [I(2,248)] = {64,0}, + [I(3,248)] = {64,0}, + [I(4,248)] = {64,0}, + [I(5,248)] = {64,0}, + [I(6,248)] = {64,0}, + [I(7,248)] = {64,0}, + [I(8,248)] = {64,0}, + [I(9,248)] = {64,0}, + [I(10,248)] = {64,0}, + [I(11,248)] = {64,0}, + [I(12,248)] = {64,0}, + [I(13,248)] = {64,0}, + [I(14,248)] = {64,0}, + [I(15,248)] = {64,0}, + [I(16,248)] = {64,0}, + [I(17,248)] = {64,0}, + [I(18,248)] = {64,0}, + [I(19,248)] = {64,0}, + [I(20,248)] = {64,0}, + [I(21,248)] = {64,0}, + [I(22,248)] = {64,0}, + [I(23,248)] = {64,0}, + [I(24,248)] = {64,0}, + [I(25,248)] = {64,0}, + [I(26,248)] = {64,0}, + [I(27,248)] = {64,0}, + [I(28,248)] = {64,0}, + [I(29,248)] = {64,0}, + [I(30,248)] = {64,0}, + [I(31,248)] = {64,0}, + [I(32,248)] = {64,0}, + [I(33,248)] = {64,0}, + [I(34,248)] = {64,0}, + [I(35,248)] = {64,0}, + [I(36,248)] = {64,0}, + [I(37,248)] = {64,0}, + [I(38,248)] = {64,0}, + [I(39,248)] = {64,0}, + [I(40,248)] = {64,0}, + [I(41,248)] = {64,0}, + [I(42,248)] = {64,0}, + [I(43,248)] = {64,0}, + [I(44,248)] = {64,0}, + [I(45,248)] = {64,0}, + [I(46,248)] = {64,0}, + [I(47,248)] = {64,0}, + [I(48,248)] = {X32,0x7FFFFEB}, + [I(49,248)] = {X32,0xFFFFFEB}, + [I(50,248)] = {X32,0x17FFFFEB}, + [I(51,248)] = {64,0}, + [I(52,248)] = {64,0}, + [I(53,248)] = {64,0}, + [I(54,248)] = {64,0}, + [I(55,248)] = {64,0}, + [I(56,248)] = {64,0}, + [I(57,248)] = {64,0}, + [I(58,248)] = {64,0}, + [I(59,248)] = {64,0}, + [I(60,248)] = {64,0}, + [I(61,248)] = {64,0}, + [I(62,248)] = {64,0}, + [I(63,248)] = {64,0}, + [I(64,248)] = {64,0}, + [I(65,248)] = {64,0}, + [I(66,248)] = {64,0}, + [I(67,248)] = {64,0}, + [I(68,248)] = {64,0}, + [I(69,248)] = {64,0}, + [I(70,248)] = {64,0}, + [I(71,248)] = {64,0}, + [I(72,248)] = {64,0}, + [I(73,248)] = {64,0}, + [I(74,248)] = {64,0}, + [I(75,248)] = {64,0}, + [I(76,248)] = {64,0}, + [I(77,248)] = {64,0}, + [I(78,248)] = {64,0}, + [I(79,248)] = {64,0}, + [I(80,248)] = {64,0}, + [I(81,248)] = {64,0}, + [I(82,248)] = {64,0}, + [I(83,248)] = {64,0}, + [I(84,248)] = {64,0}, + [I(85,248)] = {64,0}, + [I(86,248)] = {64,0}, + [I(87,248)] = {64,0}, + [I(88,248)] = {64,0}, + [I(89,248)] = {64,0}, + [I(90,248)] = {64,0}, + [I(91,248)] = {64,0}, + [I(92,248)] = {64,0}, + [I(93,248)] = {64,0}, + [I(94,248)] = {64,0}, + [I(95,248)] = {64,0}, + [I(96,248)] = {64,0}, + [I(97,248)] = {X32,0x1FFFFFEB}, + [I(98,248)] = {64,0}, + [I(99,248)] = {X32,0x27FFFFEB}, + [I(100,248)] = {64,0}, + [I(101,248)] = {X32,0x2FFFFFEB}, + [I(102,248)] = {64,0}, + [I(103,248)] = {64,0}, + [I(104,248)] = {64,0}, + [I(105,248)] = {X32,0x37FFFFEB}, + [I(106,248)] = {64,0}, + [I(107,248)] = {64,0}, + [I(108,248)] = {64,0}, + [I(109,248)] = {64,0}, + [I(110,248)] = {64,0}, + [I(111,248)] = {X32,0x3FFFFFEB}, + [I(112,248)] = {64,0}, + [I(113,248)] = {64,0}, + [I(114,248)] = {64,0}, + [I(115,248)] = {X32,0x47FFFFEB}, + [I(116,248)] = {X32,0x4FFFFFEB}, + [I(117,248)] = {64,0}, + [I(118,248)] = {64,0}, + [I(119,248)] = {64,0}, + [I(120,248)] = {64,0}, + [I(121,248)] = {64,0}, + [I(122,248)] = {64,0}, + [I(123,248)] = {64,0}, + [I(124,248)] = {64,0}, + [I(125,248)] = {64,0}, + [I(126,248)] = {64,0}, + [I(127,248)] = {64,0}, + [I(128,248)] = {64,0}, + [I(129,248)] = {64,0}, + [I(130,248)] = {64,0}, + [I(131,248)] = {64,0}, + [I(132,248)] = {64,0}, + [I(133,248)] = {64,0}, + [I(134,248)] = {64,0}, + [I(135,248)] = {64,0}, + [I(136,248)] = {64,0}, + [I(137,248)] = {64,0}, + [I(138,248)] = {64,0}, + [I(139,248)] = {64,0}, + [I(140,248)] = {64,0}, + [I(141,248)] = {64,0}, + [I(142,248)] = {64,0}, + [I(143,248)] = {64,0}, + [I(144,248)] = {64,0}, + [I(145,248)] = {64,0}, + [I(146,248)] = {64,0}, + [I(147,248)] = {64,0}, + [I(148,248)] = {64,0}, + [I(149,248)] = {64,0}, + [I(150,248)] = {64,0}, + [I(151,248)] = {64,0}, + [I(152,248)] = {64,0}, + [I(153,248)] = {64,0}, + [I(154,248)] = {64,0}, + [I(155,248)] = {64,0}, + [I(156,248)] = {64,0}, + [I(157,248)] = {64,0}, + [I(158,248)] = {64,0}, + [I(159,248)] = {64,0}, + [I(160,248)] = {64,0}, + [I(161,248)] = {64,0}, + [I(162,248)] = {64,0}, + [I(163,248)] = {64,0}, + [I(164,248)] = {64,0}, + [I(165,248)] = {64,0}, + [I(166,248)] = {64,0}, + [I(167,248)] = {64,0}, + [I(168,248)] = {64,0}, + [I(169,248)] = {64,0}, + [I(170,248)] = {64,0}, + [I(171,248)] = {64,0}, + [I(172,248)] = {64,0}, + [I(173,248)] = {64,0}, + [I(174,248)] = {64,0}, + [I(175,248)] = {64,0}, + [I(176,248)] = {64,0}, + [I(177,248)] = {64,0}, + [I(178,248)] = {64,0}, + [I(179,248)] = {64,0}, + [I(180,248)] = {64,0}, + [I(181,248)] = {64,0}, + [I(182,248)] = {64,0}, + [I(183,248)] = {64,0}, + [I(184,248)] = {64,0}, + [I(185,248)] = {64,0}, + [I(186,248)] = {64,0}, + [I(187,248)] = {64,0}, + [I(188,248)] = {64,0}, + [I(189,248)] = {64,0}, + [I(190,248)] = {64,0}, + [I(191,248)] = {64,0}, + [I(192,248)] = {64,0}, + [I(193,248)] = {64,0}, + [I(194,248)] = {64,0}, + [I(195,248)] = {64,0}, + [I(196,248)] = {64,0}, + [I(197,248)] = {64,0}, + [I(198,248)] = {64,0}, + [I(199,248)] = {64,0}, + [I(200,248)] = {64,0}, + [I(201,248)] = {64,0}, + [I(202,248)] = {64,0}, + [I(203,248)] = {64,0}, + [I(204,248)] = {64,0}, + [I(205,248)] = {64,0}, + [I(206,248)] = {64,0}, + [I(207,248)] = {64,0}, + [I(208,248)] = {64,0}, + [I(209,248)] = {64,0}, + [I(210,248)] = {64,0}, + [I(211,248)] = {64,0}, + [I(212,248)] = {64,0}, + [I(213,248)] = {64,0}, + [I(214,248)] = {64,0}, + [I(215,248)] = {64,0}, + [I(216,248)] = {64,0}, + [I(217,248)] = {64,0}, + [I(218,248)] = {64,0}, + [I(219,248)] = {64,0}, + [I(220,248)] = {64,0}, + [I(221,248)] = {64,0}, + [I(222,248)] = {64,0}, + [I(223,248)] = {64,0}, + [I(224,248)] = {64,0}, + [I(225,248)] = {64,0}, + [I(226,248)] = {64,0}, + [I(227,248)] = {64,0}, + [I(228,248)] = {64,0}, + [I(229,248)] = {64,0}, + [I(230,248)] = {64,0}, + [I(231,248)] = {64,0}, + [I(232,248)] = {64,0}, + [I(233,248)] = {64,0}, + [I(234,248)] = {64,0}, + [I(235,248)] = {64,0}, + [I(236,248)] = {64,0}, + [I(237,248)] = {64,0}, + [I(238,248)] = {64,0}, + [I(239,248)] = {64,0}, + [I(240,248)] = {64,0}, + [I(241,248)] = {64,0}, + [I(242,248)] = {64,0}, + [I(243,248)] = {64,0}, + [I(244,248)] = {64,0}, + [I(245,248)] = {64,0}, + [I(246,248)] = {64,0}, + [I(247,248)] = {64,0}, + [I(248,248)] = {64,0}, + [I(249,248)] = {64,0}, + [I(250,248)] = {64,0}, + [I(251,248)] = {64,0}, + [I(252,248)] = {64,0}, + [I(253,248)] = {64,0}, + [I(254,248)] = {64,0}, + [I(255,248)] = {64,0}, + [I(0,249)] = {64,0}, + [I(1,249)] = {64,0}, + [I(2,249)] = {64,0}, + [I(3,249)] = {64,0}, + [I(4,249)] = {64,0}, + [I(5,249)] = {64,0}, + [I(6,249)] = {64,0}, + [I(7,249)] = {64,0}, + [I(8,249)] = {64,0}, + [I(9,249)] = {64,0}, + [I(10,249)] = {64,0}, + [I(11,249)] = {64,0}, + [I(12,249)] = {64,0}, + [I(13,249)] = {64,0}, + [I(14,249)] = {64,0}, + [I(15,249)] = {64,0}, + [I(16,249)] = {64,0}, + [I(17,249)] = {64,0}, + [I(18,249)] = {64,0}, + [I(19,249)] = {64,0}, + [I(20,249)] = {64,0}, + [I(21,249)] = {64,0}, + [I(22,249)] = {64,0}, + [I(23,249)] = {64,0}, + [I(24,249)] = {64,0}, + [I(25,249)] = {64,0}, + [I(26,249)] = {64,0}, + [I(27,249)] = {64,0}, + [I(28,249)] = {64,0}, + [I(29,249)] = {64,0}, + [I(30,249)] = {64,0}, + [I(31,249)] = {64,0}, + [I(32,249)] = {64,0}, + [I(33,249)] = {64,0}, + [I(34,249)] = {64,0}, + [I(35,249)] = {64,0}, + [I(36,249)] = {64,0}, + [I(37,249)] = {64,0}, + [I(38,249)] = {64,0}, + [I(39,249)] = {64,0}, + [I(40,249)] = {64,0}, + [I(41,249)] = {64,0}, + [I(42,249)] = {64,0}, + [I(43,249)] = {64,0}, + [I(44,249)] = {64,0}, + [I(45,249)] = {64,0}, + [I(46,249)] = {64,0}, + [I(47,249)] = {64,0}, + [I(48,249)] = {64,0}, + [I(49,249)] = {64,0}, + [I(50,249)] = {64,0}, + [I(51,249)] = {64,0}, + [I(52,249)] = {64,0}, + [I(53,249)] = {64,0}, + [I(54,249)] = {64,0}, + [I(55,249)] = {64,0}, + [I(56,249)] = {64,0}, + [I(57,249)] = {64,0}, + [I(58,249)] = {64,0}, + [I(59,249)] = {64,0}, + [I(60,249)] = {64,0}, + [I(61,249)] = {64,0}, + [I(62,249)] = {64,0}, + [I(63,249)] = {64,0}, + [I(64,249)] = {64,0}, + [I(65,249)] = {64,0}, + [I(66,249)] = {64,0}, + [I(67,249)] = {64,0}, + [I(68,249)] = {64,0}, + [I(69,249)] = {64,0}, + [I(70,249)] = {64,0}, + [I(71,249)] = {64,0}, + [I(72,249)] = {64,0}, + [I(73,249)] = {64,0}, + [I(74,249)] = {64,0}, + [I(75,249)] = {64,0}, + [I(76,249)] = {64,0}, + [I(77,249)] = {64,0}, + [I(78,249)] = {64,0}, + [I(79,249)] = {64,0}, + [I(80,249)] = {64,0}, + [I(81,249)] = {64,0}, + [I(82,249)] = {64,0}, + [I(83,249)] = {64,0}, + [I(84,249)] = {64,0}, + [I(85,249)] = {64,0}, + [I(86,249)] = {64,0}, + [I(87,249)] = {64,0}, + [I(88,249)] = {64,0}, + [I(89,249)] = {64,0}, + [I(90,249)] = {64,0}, + [I(91,249)] = {64,0}, + [I(92,249)] = {64,0}, + [I(93,249)] = {64,0}, + [I(94,249)] = {64,0}, + [I(95,249)] = {64,0}, + [I(96,249)] = {64,0}, + [I(97,249)] = {64,0}, + [I(98,249)] = {64,0}, + [I(99,249)] = {64,0}, + [I(100,249)] = {64,0}, + [I(101,249)] = {64,0}, + [I(102,249)] = {64,0}, + [I(103,249)] = {64,0}, + [I(104,249)] = {64,0}, + [I(105,249)] = {64,0}, + [I(106,249)] = {64,0}, + [I(107,249)] = {64,0}, + [I(108,249)] = {64,0}, + [I(109,249)] = {64,0}, + [I(110,249)] = {64,0}, + [I(111,249)] = {64,0}, + [I(112,249)] = {64,0}, + [I(113,249)] = {64,0}, + [I(114,249)] = {64,0}, + [I(115,249)] = {64,0}, + [I(116,249)] = {64,0}, + [I(117,249)] = {64,0}, + [I(118,249)] = {64,0}, + [I(119,249)] = {64,0}, + [I(120,249)] = {64,0}, + [I(121,249)] = {64,0}, + [I(122,249)] = {64,0}, + [I(123,249)] = {64,0}, + [I(124,249)] = {64,0}, + [I(125,249)] = {64,0}, + [I(126,249)] = {64,0}, + [I(127,249)] = {64,0}, + [I(128,249)] = {64,0}, + [I(129,249)] = {64,0}, + [I(130,249)] = {64,0}, + [I(131,249)] = {64,0}, + [I(132,249)] = {64,0}, + [I(133,249)] = {64,0}, + [I(134,249)] = {64,0}, + [I(135,249)] = {64,0}, + [I(136,249)] = {64,0}, + [I(137,249)] = {64,0}, + [I(138,249)] = {64,0}, + [I(139,249)] = {64,0}, + [I(140,249)] = {64,0}, + [I(141,249)] = {64,0}, + [I(142,249)] = {64,0}, + [I(143,249)] = {64,0}, + [I(144,249)] = {64,0}, + [I(145,249)] = {64,0}, + [I(146,249)] = {64,0}, + [I(147,249)] = {64,0}, + [I(148,249)] = {64,0}, + [I(149,249)] = {64,0}, + [I(150,249)] = {64,0}, + [I(151,249)] = {64,0}, + [I(152,249)] = {64,0}, + [I(153,249)] = {64,0}, + [I(154,249)] = {64,0}, + [I(155,249)] = {64,0}, + [I(156,249)] = {64,0}, + [I(157,249)] = {64,0}, + [I(158,249)] = {64,0}, + [I(159,249)] = {64,0}, + [I(160,249)] = {64,0}, + [I(161,249)] = {64,0}, + [I(162,249)] = {64,0}, + [I(163,249)] = {64,0}, + [I(164,249)] = {64,0}, + [I(165,249)] = {64,0}, + [I(166,249)] = {64,0}, + [I(167,249)] = {64,0}, + [I(168,249)] = {64,0}, + [I(169,249)] = {64,0}, + [I(170,249)] = {64,0}, + [I(171,249)] = {64,0}, + [I(172,249)] = {64,0}, + [I(173,249)] = {64,0}, + [I(174,249)] = {64,0}, + [I(175,249)] = {64,0}, + [I(176,249)] = {64,0}, + [I(177,249)] = {64,0}, + [I(178,249)] = {64,0}, + [I(179,249)] = {64,0}, + [I(180,249)] = {64,0}, + [I(181,249)] = {64,0}, + [I(182,249)] = {64,0}, + [I(183,249)] = {64,0}, + [I(184,249)] = {64,0}, + [I(185,249)] = {64,0}, + [I(186,249)] = {64,0}, + [I(187,249)] = {64,0}, + [I(188,249)] = {64,0}, + [I(189,249)] = {64,0}, + [I(190,249)] = {64,0}, + [I(191,249)] = {64,0}, + [I(192,249)] = {64,0}, + [I(193,249)] = {64,0}, + [I(194,249)] = {64,0}, + [I(195,249)] = {64,0}, + [I(196,249)] = {64,0}, + [I(197,249)] = {64,0}, + [I(198,249)] = {64,0}, + [I(199,249)] = {64,0}, + [I(200,249)] = {64,0}, + [I(201,249)] = {64,0}, + [I(202,249)] = {64,0}, + [I(203,249)] = {64,0}, + [I(204,249)] = {64,0}, + [I(205,249)] = {64,0}, + [I(206,249)] = {64,0}, + [I(207,249)] = {64,0}, + [I(208,249)] = {64,0}, + [I(209,249)] = {64,0}, + [I(210,249)] = {64,0}, + [I(211,249)] = {64,0}, + [I(212,249)] = {64,0}, + [I(213,249)] = {64,0}, + [I(214,249)] = {64,0}, + [I(215,249)] = {64,0}, + [I(216,249)] = {64,0}, + [I(217,249)] = {64,0}, + [I(218,249)] = {64,0}, + [I(219,249)] = {64,0}, + [I(220,249)] = {64,0}, + [I(221,249)] = {64,0}, + [I(222,249)] = {64,0}, + [I(223,249)] = {64,0}, + [I(224,249)] = {64,0}, + [I(225,249)] = {64,0}, + [I(226,249)] = {64,0}, + [I(227,249)] = {64,0}, + [I(228,249)] = {64,0}, + [I(229,249)] = {64,0}, + [I(230,249)] = {64,0}, + [I(231,249)] = {64,0}, + [I(232,249)] = {64,0}, + [I(233,249)] = {64,0}, + [I(234,249)] = {64,0}, + [I(235,249)] = {64,0}, + [I(236,249)] = {64,0}, + [I(237,249)] = {64,0}, + [I(238,249)] = {64,0}, + [I(239,249)] = {64,0}, + [I(240,249)] = {64,0}, + [I(241,249)] = {64,0}, + [I(242,249)] = {64,0}, + [I(243,249)] = {64,0}, + [I(244,249)] = {64,0}, + [I(245,249)] = {64,0}, + [I(246,249)] = {64,0}, + [I(247,249)] = {64,0}, + [I(248,249)] = {64,0}, + [I(249,249)] = {64,0}, + [I(250,249)] = {64,0}, + [I(251,249)] = {64,0}, + [I(252,249)] = {64,0}, + [I(253,249)] = {64,0}, + [I(254,249)] = {64,0}, + [I(255,249)] = {64,0}, + [I(0,250)] = {64,0}, + [I(1,250)] = {64,0}, + [I(2,250)] = {64,0}, + [I(3,250)] = {64,0}, + [I(4,250)] = {64,0}, + [I(5,250)] = {64,0}, + [I(6,250)] = {64,0}, + [I(7,250)] = {64,0}, + [I(8,250)] = {64,0}, + [I(9,250)] = {64,0}, + [I(10,250)] = {64,0}, + [I(11,250)] = {64,0}, + [I(12,250)] = {64,0}, + [I(13,250)] = {64,0}, + [I(14,250)] = {64,0}, + [I(15,250)] = {64,0}, + [I(16,250)] = {64,0}, + [I(17,250)] = {64,0}, + [I(18,250)] = {64,0}, + [I(19,250)] = {64,0}, + [I(20,250)] = {64,0}, + [I(21,250)] = {64,0}, + [I(22,250)] = {64,0}, + [I(23,250)] = {64,0}, + [I(24,250)] = {64,0}, + [I(25,250)] = {64,0}, + [I(26,250)] = {64,0}, + [I(27,250)] = {64,0}, + [I(28,250)] = {64,0}, + [I(29,250)] = {64,0}, + [I(30,250)] = {64,0}, + [I(31,250)] = {64,0}, + [I(32,250)] = {64,0}, + [I(33,250)] = {64,0}, + [I(34,250)] = {64,0}, + [I(35,250)] = {64,0}, + [I(36,250)] = {64,0}, + [I(37,250)] = {64,0}, + [I(38,250)] = {64,0}, + [I(39,250)] = {64,0}, + [I(40,250)] = {64,0}, + [I(41,250)] = {64,0}, + [I(42,250)] = {64,0}, + [I(43,250)] = {64,0}, + [I(44,250)] = {64,0}, + [I(45,250)] = {64,0}, + [I(46,250)] = {64,0}, + [I(47,250)] = {64,0}, + [I(48,250)] = {X32,0x7FFFFEC}, + [I(49,250)] = {X32,0xFFFFFEC}, + [I(50,250)] = {X32,0x17FFFFEC}, + [I(51,250)] = {64,0}, + [I(52,250)] = {64,0}, + [I(53,250)] = {64,0}, + [I(54,250)] = {64,0}, + [I(55,250)] = {64,0}, + [I(56,250)] = {64,0}, + [I(57,250)] = {64,0}, + [I(58,250)] = {64,0}, + [I(59,250)] = {64,0}, + [I(60,250)] = {64,0}, + [I(61,250)] = {64,0}, + [I(62,250)] = {64,0}, + [I(63,250)] = {64,0}, + [I(64,250)] = {64,0}, + [I(65,250)] = {64,0}, + [I(66,250)] = {64,0}, + [I(67,250)] = {64,0}, + [I(68,250)] = {64,0}, + [I(69,250)] = {64,0}, + [I(70,250)] = {64,0}, + [I(71,250)] = {64,0}, + [I(72,250)] = {64,0}, + [I(73,250)] = {64,0}, + [I(74,250)] = {64,0}, + [I(75,250)] = {64,0}, + [I(76,250)] = {64,0}, + [I(77,250)] = {64,0}, + [I(78,250)] = {64,0}, + [I(79,250)] = {64,0}, + [I(80,250)] = {64,0}, + [I(81,250)] = {64,0}, + [I(82,250)] = {64,0}, + [I(83,250)] = {64,0}, + [I(84,250)] = {64,0}, + [I(85,250)] = {64,0}, + [I(86,250)] = {64,0}, + [I(87,250)] = {64,0}, + [I(88,250)] = {64,0}, + [I(89,250)] = {64,0}, + [I(90,250)] = {64,0}, + [I(91,250)] = {64,0}, + [I(92,250)] = {64,0}, + [I(93,250)] = {64,0}, + [I(94,250)] = {64,0}, + [I(95,250)] = {64,0}, + [I(96,250)] = {64,0}, + [I(97,250)] = {X32,0x1FFFFFEC}, + [I(98,250)] = {64,0}, + [I(99,250)] = {X32,0x27FFFFEC}, + [I(100,250)] = {64,0}, + [I(101,250)] = {X32,0x2FFFFFEC}, + [I(102,250)] = {64,0}, + [I(103,250)] = {64,0}, + [I(104,250)] = {64,0}, + [I(105,250)] = {X32,0x37FFFFEC}, + [I(106,250)] = {64,0}, + [I(107,250)] = {64,0}, + [I(108,250)] = {64,0}, + [I(109,250)] = {64,0}, + [I(110,250)] = {64,0}, + [I(111,250)] = {X32,0x3FFFFFEC}, + [I(112,250)] = {64,0}, + [I(113,250)] = {64,0}, + [I(114,250)] = {64,0}, + [I(115,250)] = {X32,0x47FFFFEC}, + [I(116,250)] = {X32,0x4FFFFFEC}, + [I(117,250)] = {64,0}, + [I(118,250)] = {64,0}, + [I(119,250)] = {64,0}, + [I(120,250)] = {64,0}, + [I(121,250)] = {64,0}, + [I(122,250)] = {64,0}, + [I(123,250)] = {64,0}, + [I(124,250)] = {64,0}, + [I(125,250)] = {64,0}, + [I(126,250)] = {64,0}, + [I(127,250)] = {64,0}, + [I(128,250)] = {64,0}, + [I(129,250)] = {64,0}, + [I(130,250)] = {64,0}, + [I(131,250)] = {64,0}, + [I(132,250)] = {64,0}, + [I(133,250)] = {64,0}, + [I(134,250)] = {64,0}, + [I(135,250)] = {64,0}, + [I(136,250)] = {64,0}, + [I(137,250)] = {64,0}, + [I(138,250)] = {64,0}, + [I(139,250)] = {64,0}, + [I(140,250)] = {64,0}, + [I(141,250)] = {64,0}, + [I(142,250)] = {64,0}, + [I(143,250)] = {64,0}, + [I(144,250)] = {64,0}, + [I(145,250)] = {64,0}, + [I(146,250)] = {64,0}, + [I(147,250)] = {64,0}, + [I(148,250)] = {64,0}, + [I(149,250)] = {64,0}, + [I(150,250)] = {64,0}, + [I(151,250)] = {64,0}, + [I(152,250)] = {64,0}, + [I(153,250)] = {64,0}, + [I(154,250)] = {64,0}, + [I(155,250)] = {64,0}, + [I(156,250)] = {64,0}, + [I(157,250)] = {64,0}, + [I(158,250)] = {64,0}, + [I(159,250)] = {64,0}, + [I(160,250)] = {64,0}, + [I(161,250)] = {64,0}, + [I(162,250)] = {64,0}, + [I(163,250)] = {64,0}, + [I(164,250)] = {64,0}, + [I(165,250)] = {64,0}, + [I(166,250)] = {64,0}, + [I(167,250)] = {64,0}, + [I(168,250)] = {64,0}, + [I(169,250)] = {64,0}, + [I(170,250)] = {64,0}, + [I(171,250)] = {64,0}, + [I(172,250)] = {64,0}, + [I(173,250)] = {64,0}, + [I(174,250)] = {64,0}, + [I(175,250)] = {64,0}, + [I(176,250)] = {64,0}, + [I(177,250)] = {64,0}, + [I(178,250)] = {64,0}, + [I(179,250)] = {64,0}, + [I(180,250)] = {64,0}, + [I(181,250)] = {64,0}, + [I(182,250)] = {64,0}, + [I(183,250)] = {64,0}, + [I(184,250)] = {64,0}, + [I(185,250)] = {64,0}, + [I(186,250)] = {64,0}, + [I(187,250)] = {64,0}, + [I(188,250)] = {64,0}, + [I(189,250)] = {64,0}, + [I(190,250)] = {64,0}, + [I(191,250)] = {64,0}, + [I(192,250)] = {64,0}, + [I(193,250)] = {64,0}, + [I(194,250)] = {64,0}, + [I(195,250)] = {64,0}, + [I(196,250)] = {64,0}, + [I(197,250)] = {64,0}, + [I(198,250)] = {64,0}, + [I(199,250)] = {64,0}, + [I(200,250)] = {64,0}, + [I(201,250)] = {64,0}, + [I(202,250)] = {64,0}, + [I(203,250)] = {64,0}, + [I(204,250)] = {64,0}, + [I(205,250)] = {64,0}, + [I(206,250)] = {64,0}, + [I(207,250)] = {64,0}, + [I(208,250)] = {64,0}, + [I(209,250)] = {64,0}, + [I(210,250)] = {64,0}, + [I(211,250)] = {64,0}, + [I(212,250)] = {64,0}, + [I(213,250)] = {64,0}, + [I(214,250)] = {64,0}, + [I(215,250)] = {64,0}, + [I(216,250)] = {64,0}, + [I(217,250)] = {64,0}, + [I(218,250)] = {64,0}, + [I(219,250)] = {64,0}, + [I(220,250)] = {64,0}, + [I(221,250)] = {64,0}, + [I(222,250)] = {64,0}, + [I(223,250)] = {64,0}, + [I(224,250)] = {64,0}, + [I(225,250)] = {64,0}, + [I(226,250)] = {64,0}, + [I(227,250)] = {64,0}, + [I(228,250)] = {64,0}, + [I(229,250)] = {64,0}, + [I(230,250)] = {64,0}, + [I(231,250)] = {64,0}, + [I(232,250)] = {64,0}, + [I(233,250)] = {64,0}, + [I(234,250)] = {64,0}, + [I(235,250)] = {64,0}, + [I(236,250)] = {64,0}, + [I(237,250)] = {64,0}, + [I(238,250)] = {64,0}, + [I(239,250)] = {64,0}, + [I(240,250)] = {64,0}, + [I(241,250)] = {64,0}, + [I(242,250)] = {64,0}, + [I(243,250)] = {64,0}, + [I(244,250)] = {64,0}, + [I(245,250)] = {64,0}, + [I(246,250)] = {64,0}, + [I(247,250)] = {64,0}, + [I(248,250)] = {64,0}, + [I(249,250)] = {64,0}, + [I(250,250)] = {64,0}, + [I(251,250)] = {64,0}, + [I(252,250)] = {64,0}, + [I(253,250)] = {64,0}, + [I(254,250)] = {64,0}, + [I(255,250)] = {64,0}, + [I(0,251)] = {64,0}, + [I(1,251)] = {64,0}, + [I(2,251)] = {64,0}, + [I(3,251)] = {64,0}, + [I(4,251)] = {64,0}, + [I(5,251)] = {64,0}, + [I(6,251)] = {64,0}, + [I(7,251)] = {64,0}, + [I(8,251)] = {64,0}, + [I(9,251)] = {64,0}, + [I(10,251)] = {64,0}, + [I(11,251)] = {64,0}, + [I(12,251)] = {64,0}, + [I(13,251)] = {64,0}, + [I(14,251)] = {64,0}, + [I(15,251)] = {64,0}, + [I(16,251)] = {64,0}, + [I(17,251)] = {64,0}, + [I(18,251)] = {64,0}, + [I(19,251)] = {64,0}, + [I(20,251)] = {64,0}, + [I(21,251)] = {64,0}, + [I(22,251)] = {64,0}, + [I(23,251)] = {64,0}, + [I(24,251)] = {64,0}, + [I(25,251)] = {64,0}, + [I(26,251)] = {64,0}, + [I(27,251)] = {64,0}, + [I(28,251)] = {64,0}, + [I(29,251)] = {64,0}, + [I(30,251)] = {64,0}, + [I(31,251)] = {64,0}, + [I(32,251)] = {64,0}, + [I(33,251)] = {64,0}, + [I(34,251)] = {64,0}, + [I(35,251)] = {64,0}, + [I(36,251)] = {64,0}, + [I(37,251)] = {64,0}, + [I(38,251)] = {64,0}, + [I(39,251)] = {64,0}, + [I(40,251)] = {64,0}, + [I(41,251)] = {64,0}, + [I(42,251)] = {64,0}, + [I(43,251)] = {64,0}, + [I(44,251)] = {64,0}, + [I(45,251)] = {64,0}, + [I(46,251)] = {64,0}, + [I(47,251)] = {64,0}, + [I(48,251)] = {X32,0x7FFFFED}, + [I(49,251)] = {X32,0xFFFFFED}, + [I(50,251)] = {X32,0x17FFFFED}, + [I(51,251)] = {64,0}, + [I(52,251)] = {64,0}, + [I(53,251)] = {64,0}, + [I(54,251)] = {64,0}, + [I(55,251)] = {64,0}, + [I(56,251)] = {64,0}, + [I(57,251)] = {64,0}, + [I(58,251)] = {64,0}, + [I(59,251)] = {64,0}, + [I(60,251)] = {64,0}, + [I(61,251)] = {64,0}, + [I(62,251)] = {64,0}, + [I(63,251)] = {64,0}, + [I(64,251)] = {64,0}, + [I(65,251)] = {64,0}, + [I(66,251)] = {64,0}, + [I(67,251)] = {64,0}, + [I(68,251)] = {64,0}, + [I(69,251)] = {64,0}, + [I(70,251)] = {64,0}, + [I(71,251)] = {64,0}, + [I(72,251)] = {64,0}, + [I(73,251)] = {64,0}, + [I(74,251)] = {64,0}, + [I(75,251)] = {64,0}, + [I(76,251)] = {64,0}, + [I(77,251)] = {64,0}, + [I(78,251)] = {64,0}, + [I(79,251)] = {64,0}, + [I(80,251)] = {64,0}, + [I(81,251)] = {64,0}, + [I(82,251)] = {64,0}, + [I(83,251)] = {64,0}, + [I(84,251)] = {64,0}, + [I(85,251)] = {64,0}, + [I(86,251)] = {64,0}, + [I(87,251)] = {64,0}, + [I(88,251)] = {64,0}, + [I(89,251)] = {64,0}, + [I(90,251)] = {64,0}, + [I(91,251)] = {64,0}, + [I(92,251)] = {64,0}, + [I(93,251)] = {64,0}, + [I(94,251)] = {64,0}, + [I(95,251)] = {64,0}, + [I(96,251)] = {64,0}, + [I(97,251)] = {X32,0x1FFFFFED}, + [I(98,251)] = {64,0}, + [I(99,251)] = {X32,0x27FFFFED}, + [I(100,251)] = {64,0}, + [I(101,251)] = {X32,0x2FFFFFED}, + [I(102,251)] = {64,0}, + [I(103,251)] = {64,0}, + [I(104,251)] = {64,0}, + [I(105,251)] = {X32,0x37FFFFED}, + [I(106,251)] = {64,0}, + [I(107,251)] = {64,0}, + [I(108,251)] = {64,0}, + [I(109,251)] = {64,0}, + [I(110,251)] = {64,0}, + [I(111,251)] = {X32,0x3FFFFFED}, + [I(112,251)] = {64,0}, + [I(113,251)] = {64,0}, + [I(114,251)] = {64,0}, + [I(115,251)] = {X32,0x47FFFFED}, + [I(116,251)] = {X32,0x4FFFFFED}, + [I(117,251)] = {64,0}, + [I(118,251)] = {64,0}, + [I(119,251)] = {64,0}, + [I(120,251)] = {64,0}, + [I(121,251)] = {64,0}, + [I(122,251)] = {64,0}, + [I(123,251)] = {64,0}, + [I(124,251)] = {64,0}, + [I(125,251)] = {64,0}, + [I(126,251)] = {64,0}, + [I(127,251)] = {64,0}, + [I(128,251)] = {64,0}, + [I(129,251)] = {64,0}, + [I(130,251)] = {64,0}, + [I(131,251)] = {64,0}, + [I(132,251)] = {64,0}, + [I(133,251)] = {64,0}, + [I(134,251)] = {64,0}, + [I(135,251)] = {64,0}, + [I(136,251)] = {64,0}, + [I(137,251)] = {64,0}, + [I(138,251)] = {64,0}, + [I(139,251)] = {64,0}, + [I(140,251)] = {64,0}, + [I(141,251)] = {64,0}, + [I(142,251)] = {64,0}, + [I(143,251)] = {64,0}, + [I(144,251)] = {64,0}, + [I(145,251)] = {64,0}, + [I(146,251)] = {64,0}, + [I(147,251)] = {64,0}, + [I(148,251)] = {64,0}, + [I(149,251)] = {64,0}, + [I(150,251)] = {64,0}, + [I(151,251)] = {64,0}, + [I(152,251)] = {64,0}, + [I(153,251)] = {64,0}, + [I(154,251)] = {64,0}, + [I(155,251)] = {64,0}, + [I(156,251)] = {64,0}, + [I(157,251)] = {64,0}, + [I(158,251)] = {64,0}, + [I(159,251)] = {64,0}, + [I(160,251)] = {64,0}, + [I(161,251)] = {64,0}, + [I(162,251)] = {64,0}, + [I(163,251)] = {64,0}, + [I(164,251)] = {64,0}, + [I(165,251)] = {64,0}, + [I(166,251)] = {64,0}, + [I(167,251)] = {64,0}, + [I(168,251)] = {64,0}, + [I(169,251)] = {64,0}, + [I(170,251)] = {64,0}, + [I(171,251)] = {64,0}, + [I(172,251)] = {64,0}, + [I(173,251)] = {64,0}, + [I(174,251)] = {64,0}, + [I(175,251)] = {64,0}, + [I(176,251)] = {64,0}, + [I(177,251)] = {64,0}, + [I(178,251)] = {64,0}, + [I(179,251)] = {64,0}, + [I(180,251)] = {64,0}, + [I(181,251)] = {64,0}, + [I(182,251)] = {64,0}, + [I(183,251)] = {64,0}, + [I(184,251)] = {64,0}, + [I(185,251)] = {64,0}, + [I(186,251)] = {64,0}, + [I(187,251)] = {64,0}, + [I(188,251)] = {64,0}, + [I(189,251)] = {64,0}, + [I(190,251)] = {64,0}, + [I(191,251)] = {64,0}, + [I(192,251)] = {64,0}, + [I(193,251)] = {64,0}, + [I(194,251)] = {64,0}, + [I(195,251)] = {64,0}, + [I(196,251)] = {64,0}, + [I(197,251)] = {64,0}, + [I(198,251)] = {64,0}, + [I(199,251)] = {64,0}, + [I(200,251)] = {64,0}, + [I(201,251)] = {64,0}, + [I(202,251)] = {64,0}, + [I(203,251)] = {64,0}, + [I(204,251)] = {64,0}, + [I(205,251)] = {64,0}, + [I(206,251)] = {64,0}, + [I(207,251)] = {64,0}, + [I(208,251)] = {64,0}, + [I(209,251)] = {64,0}, + [I(210,251)] = {64,0}, + [I(211,251)] = {64,0}, + [I(212,251)] = {64,0}, + [I(213,251)] = {64,0}, + [I(214,251)] = {64,0}, + [I(215,251)] = {64,0}, + [I(216,251)] = {64,0}, + [I(217,251)] = {64,0}, + [I(218,251)] = {64,0}, + [I(219,251)] = {64,0}, + [I(220,251)] = {64,0}, + [I(221,251)] = {64,0}, + [I(222,251)] = {64,0}, + [I(223,251)] = {64,0}, + [I(224,251)] = {64,0}, + [I(225,251)] = {64,0}, + [I(226,251)] = {64,0}, + [I(227,251)] = {64,0}, + [I(228,251)] = {64,0}, + [I(229,251)] = {64,0}, + [I(230,251)] = {64,0}, + [I(231,251)] = {64,0}, + [I(232,251)] = {64,0}, + [I(233,251)] = {64,0}, + [I(234,251)] = {64,0}, + [I(235,251)] = {64,0}, + [I(236,251)] = {64,0}, + [I(237,251)] = {64,0}, + [I(238,251)] = {64,0}, + [I(239,251)] = {64,0}, + [I(240,251)] = {64,0}, + [I(241,251)] = {64,0}, + [I(242,251)] = {64,0}, + [I(243,251)] = {64,0}, + [I(244,251)] = {64,0}, + [I(245,251)] = {64,0}, + [I(246,251)] = {64,0}, + [I(247,251)] = {64,0}, + [I(248,251)] = {64,0}, + [I(249,251)] = {64,0}, + [I(250,251)] = {64,0}, + [I(251,251)] = {64,0}, + [I(252,251)] = {64,0}, + [I(253,251)] = {64,0}, + [I(254,251)] = {64,0}, + [I(255,251)] = {64,0}, + [I(0,252)] = {64,0}, + [I(1,252)] = {64,0}, + [I(2,252)] = {64,0}, + [I(3,252)] = {64,0}, + [I(4,252)] = {64,0}, + [I(5,252)] = {64,0}, + [I(6,252)] = {64,0}, + [I(7,252)] = {64,0}, + [I(8,252)] = {64,0}, + [I(9,252)] = {64,0}, + [I(10,252)] = {64,0}, + [I(11,252)] = {64,0}, + [I(12,252)] = {64,0}, + [I(13,252)] = {64,0}, + [I(14,252)] = {64,0}, + [I(15,252)] = {64,0}, + [I(16,252)] = {64,0}, + [I(17,252)] = {64,0}, + [I(18,252)] = {64,0}, + [I(19,252)] = {64,0}, + [I(20,252)] = {64,0}, + [I(21,252)] = {64,0}, + [I(22,252)] = {64,0}, + [I(23,252)] = {64,0}, + [I(24,252)] = {64,0}, + [I(25,252)] = {64,0}, + [I(26,252)] = {64,0}, + [I(27,252)] = {64,0}, + [I(28,252)] = {64,0}, + [I(29,252)] = {64,0}, + [I(30,252)] = {64,0}, + [I(31,252)] = {64,0}, + [I(32,252)] = {64,0}, + [I(33,252)] = {64,0}, + [I(34,252)] = {64,0}, + [I(35,252)] = {64,0}, + [I(36,252)] = {64,0}, + [I(37,252)] = {64,0}, + [I(38,252)] = {64,0}, + [I(39,252)] = {64,0}, + [I(40,252)] = {64,0}, + [I(41,252)] = {64,0}, + [I(42,252)] = {64,0}, + [I(43,252)] = {64,0}, + [I(44,252)] = {64,0}, + [I(45,252)] = {64,0}, + [I(46,252)] = {64,0}, + [I(47,252)] = {64,0}, + [I(48,252)] = {X32,0x7FFFFEE}, + [I(49,252)] = {X32,0xFFFFFEE}, + [I(50,252)] = {X32,0x17FFFFEE}, + [I(51,252)] = {64,0}, + [I(52,252)] = {64,0}, + [I(53,252)] = {64,0}, + [I(54,252)] = {64,0}, + [I(55,252)] = {64,0}, + [I(56,252)] = {64,0}, + [I(57,252)] = {64,0}, + [I(58,252)] = {64,0}, + [I(59,252)] = {64,0}, + [I(60,252)] = {64,0}, + [I(61,252)] = {64,0}, + [I(62,252)] = {64,0}, + [I(63,252)] = {64,0}, + [I(64,252)] = {64,0}, + [I(65,252)] = {64,0}, + [I(66,252)] = {64,0}, + [I(67,252)] = {64,0}, + [I(68,252)] = {64,0}, + [I(69,252)] = {64,0}, + [I(70,252)] = {64,0}, + [I(71,252)] = {64,0}, + [I(72,252)] = {64,0}, + [I(73,252)] = {64,0}, + [I(74,252)] = {64,0}, + [I(75,252)] = {64,0}, + [I(76,252)] = {64,0}, + [I(77,252)] = {64,0}, + [I(78,252)] = {64,0}, + [I(79,252)] = {64,0}, + [I(80,252)] = {64,0}, + [I(81,252)] = {64,0}, + [I(82,252)] = {64,0}, + [I(83,252)] = {64,0}, + [I(84,252)] = {64,0}, + [I(85,252)] = {64,0}, + [I(86,252)] = {64,0}, + [I(87,252)] = {64,0}, + [I(88,252)] = {64,0}, + [I(89,252)] = {64,0}, + [I(90,252)] = {64,0}, + [I(91,252)] = {64,0}, + [I(92,252)] = {64,0}, + [I(93,252)] = {64,0}, + [I(94,252)] = {64,0}, + [I(95,252)] = {64,0}, + [I(96,252)] = {64,0}, + [I(97,252)] = {X32,0x1FFFFFEE}, + [I(98,252)] = {64,0}, + [I(99,252)] = {X32,0x27FFFFEE}, + [I(100,252)] = {64,0}, + [I(101,252)] = {X32,0x2FFFFFEE}, + [I(102,252)] = {64,0}, + [I(103,252)] = {64,0}, + [I(104,252)] = {64,0}, + [I(105,252)] = {X32,0x37FFFFEE}, + [I(106,252)] = {64,0}, + [I(107,252)] = {64,0}, + [I(108,252)] = {64,0}, + [I(109,252)] = {64,0}, + [I(110,252)] = {64,0}, + [I(111,252)] = {X32,0x3FFFFFEE}, + [I(112,252)] = {64,0}, + [I(113,252)] = {64,0}, + [I(114,252)] = {64,0}, + [I(115,252)] = {X32,0x47FFFFEE}, + [I(116,252)] = {X32,0x4FFFFFEE}, + [I(117,252)] = {64,0}, + [I(118,252)] = {64,0}, + [I(119,252)] = {64,0}, + [I(120,252)] = {64,0}, + [I(121,252)] = {64,0}, + [I(122,252)] = {64,0}, + [I(123,252)] = {64,0}, + [I(124,252)] = {64,0}, + [I(125,252)] = {64,0}, + [I(126,252)] = {64,0}, + [I(127,252)] = {64,0}, + [I(128,252)] = {64,0}, + [I(129,252)] = {64,0}, + [I(130,252)] = {64,0}, + [I(131,252)] = {64,0}, + [I(132,252)] = {64,0}, + [I(133,252)] = {64,0}, + [I(134,252)] = {64,0}, + [I(135,252)] = {64,0}, + [I(136,252)] = {64,0}, + [I(137,252)] = {64,0}, + [I(138,252)] = {64,0}, + [I(139,252)] = {64,0}, + [I(140,252)] = {64,0}, + [I(141,252)] = {64,0}, + [I(142,252)] = {64,0}, + [I(143,252)] = {64,0}, + [I(144,252)] = {64,0}, + [I(145,252)] = {64,0}, + [I(146,252)] = {64,0}, + [I(147,252)] = {64,0}, + [I(148,252)] = {64,0}, + [I(149,252)] = {64,0}, + [I(150,252)] = {64,0}, + [I(151,252)] = {64,0}, + [I(152,252)] = {64,0}, + [I(153,252)] = {64,0}, + [I(154,252)] = {64,0}, + [I(155,252)] = {64,0}, + [I(156,252)] = {64,0}, + [I(157,252)] = {64,0}, + [I(158,252)] = {64,0}, + [I(159,252)] = {64,0}, + [I(160,252)] = {64,0}, + [I(161,252)] = {64,0}, + [I(162,252)] = {64,0}, + [I(163,252)] = {64,0}, + [I(164,252)] = {64,0}, + [I(165,252)] = {64,0}, + [I(166,252)] = {64,0}, + [I(167,252)] = {64,0}, + [I(168,252)] = {64,0}, + [I(169,252)] = {64,0}, + [I(170,252)] = {64,0}, + [I(171,252)] = {64,0}, + [I(172,252)] = {64,0}, + [I(173,252)] = {64,0}, + [I(174,252)] = {64,0}, + [I(175,252)] = {64,0}, + [I(176,252)] = {64,0}, + [I(177,252)] = {64,0}, + [I(178,252)] = {64,0}, + [I(179,252)] = {64,0}, + [I(180,252)] = {64,0}, + [I(181,252)] = {64,0}, + [I(182,252)] = {64,0}, + [I(183,252)] = {64,0}, + [I(184,252)] = {64,0}, + [I(185,252)] = {64,0}, + [I(186,252)] = {64,0}, + [I(187,252)] = {64,0}, + [I(188,252)] = {64,0}, + [I(189,252)] = {64,0}, + [I(190,252)] = {64,0}, + [I(191,252)] = {64,0}, + [I(192,252)] = {64,0}, + [I(193,252)] = {64,0}, + [I(194,252)] = {64,0}, + [I(195,252)] = {64,0}, + [I(196,252)] = {64,0}, + [I(197,252)] = {64,0}, + [I(198,252)] = {64,0}, + [I(199,252)] = {64,0}, + [I(200,252)] = {64,0}, + [I(201,252)] = {64,0}, + [I(202,252)] = {64,0}, + [I(203,252)] = {64,0}, + [I(204,252)] = {64,0}, + [I(205,252)] = {64,0}, + [I(206,252)] = {64,0}, + [I(207,252)] = {64,0}, + [I(208,252)] = {64,0}, + [I(209,252)] = {64,0}, + [I(210,252)] = {64,0}, + [I(211,252)] = {64,0}, + [I(212,252)] = {64,0}, + [I(213,252)] = {64,0}, + [I(214,252)] = {64,0}, + [I(215,252)] = {64,0}, + [I(216,252)] = {64,0}, + [I(217,252)] = {64,0}, + [I(218,252)] = {64,0}, + [I(219,252)] = {64,0}, + [I(220,252)] = {64,0}, + [I(221,252)] = {64,0}, + [I(222,252)] = {64,0}, + [I(223,252)] = {64,0}, + [I(224,252)] = {64,0}, + [I(225,252)] = {64,0}, + [I(226,252)] = {64,0}, + [I(227,252)] = {64,0}, + [I(228,252)] = {64,0}, + [I(229,252)] = {64,0}, + [I(230,252)] = {64,0}, + [I(231,252)] = {64,0}, + [I(232,252)] = {64,0}, + [I(233,252)] = {64,0}, + [I(234,252)] = {64,0}, + [I(235,252)] = {64,0}, + [I(236,252)] = {64,0}, + [I(237,252)] = {64,0}, + [I(238,252)] = {64,0}, + [I(239,252)] = {64,0}, + [I(240,252)] = {64,0}, + [I(241,252)] = {64,0}, + [I(242,252)] = {64,0}, + [I(243,252)] = {64,0}, + [I(244,252)] = {64,0}, + [I(245,252)] = {64,0}, + [I(246,252)] = {64,0}, + [I(247,252)] = {64,0}, + [I(248,252)] = {64,0}, + [I(249,252)] = {64,0}, + [I(250,252)] = {64,0}, + [I(251,252)] = {64,0}, + [I(252,252)] = {64,0}, + [I(253,252)] = {64,0}, + [I(254,252)] = {64,0}, + [I(255,252)] = {64,0}, + [I(0,253)] = {64,0}, + [I(1,253)] = {64,0}, + [I(2,253)] = {64,0}, + [I(3,253)] = {64,0}, + [I(4,253)] = {64,0}, + [I(5,253)] = {64,0}, + [I(6,253)] = {64,0}, + [I(7,253)] = {64,0}, + [I(8,253)] = {64,0}, + [I(9,253)] = {64,0}, + [I(10,253)] = {64,0}, + [I(11,253)] = {64,0}, + [I(12,253)] = {64,0}, + [I(13,253)] = {64,0}, + [I(14,253)] = {64,0}, + [I(15,253)] = {64,0}, + [I(16,253)] = {64,0}, + [I(17,253)] = {64,0}, + [I(18,253)] = {64,0}, + [I(19,253)] = {64,0}, + [I(20,253)] = {64,0}, + [I(21,253)] = {64,0}, + [I(22,253)] = {64,0}, + [I(23,253)] = {64,0}, + [I(24,253)] = {64,0}, + [I(25,253)] = {64,0}, + [I(26,253)] = {64,0}, + [I(27,253)] = {64,0}, + [I(28,253)] = {64,0}, + [I(29,253)] = {64,0}, + [I(30,253)] = {64,0}, + [I(31,253)] = {64,0}, + [I(32,253)] = {64,0}, + [I(33,253)] = {64,0}, + [I(34,253)] = {64,0}, + [I(35,253)] = {64,0}, + [I(36,253)] = {64,0}, + [I(37,253)] = {64,0}, + [I(38,253)] = {64,0}, + [I(39,253)] = {64,0}, + [I(40,253)] = {64,0}, + [I(41,253)] = {64,0}, + [I(42,253)] = {64,0}, + [I(43,253)] = {64,0}, + [I(44,253)] = {64,0}, + [I(45,253)] = {64,0}, + [I(46,253)] = {64,0}, + [I(47,253)] = {64,0}, + [I(48,253)] = {X32,0x7FFFFEF}, + [I(49,253)] = {X32,0xFFFFFEF}, + [I(50,253)] = {X32,0x17FFFFEF}, + [I(51,253)] = {64,0}, + [I(52,253)] = {64,0}, + [I(53,253)] = {64,0}, + [I(54,253)] = {64,0}, + [I(55,253)] = {64,0}, + [I(56,253)] = {64,0}, + [I(57,253)] = {64,0}, + [I(58,253)] = {64,0}, + [I(59,253)] = {64,0}, + [I(60,253)] = {64,0}, + [I(61,253)] = {64,0}, + [I(62,253)] = {64,0}, + [I(63,253)] = {64,0}, + [I(64,253)] = {64,0}, + [I(65,253)] = {64,0}, + [I(66,253)] = {64,0}, + [I(67,253)] = {64,0}, + [I(68,253)] = {64,0}, + [I(69,253)] = {64,0}, + [I(70,253)] = {64,0}, + [I(71,253)] = {64,0}, + [I(72,253)] = {64,0}, + [I(73,253)] = {64,0}, + [I(74,253)] = {64,0}, + [I(75,253)] = {64,0}, + [I(76,253)] = {64,0}, + [I(77,253)] = {64,0}, + [I(78,253)] = {64,0}, + [I(79,253)] = {64,0}, + [I(80,253)] = {64,0}, + [I(81,253)] = {64,0}, + [I(82,253)] = {64,0}, + [I(83,253)] = {64,0}, + [I(84,253)] = {64,0}, + [I(85,253)] = {64,0}, + [I(86,253)] = {64,0}, + [I(87,253)] = {64,0}, + [I(88,253)] = {64,0}, + [I(89,253)] = {64,0}, + [I(90,253)] = {64,0}, + [I(91,253)] = {64,0}, + [I(92,253)] = {64,0}, + [I(93,253)] = {64,0}, + [I(94,253)] = {64,0}, + [I(95,253)] = {64,0}, + [I(96,253)] = {64,0}, + [I(97,253)] = {X32,0x1FFFFFEF}, + [I(98,253)] = {64,0}, + [I(99,253)] = {X32,0x27FFFFEF}, + [I(100,253)] = {64,0}, + [I(101,253)] = {X32,0x2FFFFFEF}, + [I(102,253)] = {64,0}, + [I(103,253)] = {64,0}, + [I(104,253)] = {64,0}, + [I(105,253)] = {X32,0x37FFFFEF}, + [I(106,253)] = {64,0}, + [I(107,253)] = {64,0}, + [I(108,253)] = {64,0}, + [I(109,253)] = {64,0}, + [I(110,253)] = {64,0}, + [I(111,253)] = {X32,0x3FFFFFEF}, + [I(112,253)] = {64,0}, + [I(113,253)] = {64,0}, + [I(114,253)] = {64,0}, + [I(115,253)] = {X32,0x47FFFFEF}, + [I(116,253)] = {X32,0x4FFFFFEF}, + [I(117,253)] = {64,0}, + [I(118,253)] = {64,0}, + [I(119,253)] = {64,0}, + [I(120,253)] = {64,0}, + [I(121,253)] = {64,0}, + [I(122,253)] = {64,0}, + [I(123,253)] = {64,0}, + [I(124,253)] = {64,0}, + [I(125,253)] = {64,0}, + [I(126,253)] = {64,0}, + [I(127,253)] = {64,0}, + [I(128,253)] = {64,0}, + [I(129,253)] = {64,0}, + [I(130,253)] = {64,0}, + [I(131,253)] = {64,0}, + [I(132,253)] = {64,0}, + [I(133,253)] = {64,0}, + [I(134,253)] = {64,0}, + [I(135,253)] = {64,0}, + [I(136,253)] = {64,0}, + [I(137,253)] = {64,0}, + [I(138,253)] = {64,0}, + [I(139,253)] = {64,0}, + [I(140,253)] = {64,0}, + [I(141,253)] = {64,0}, + [I(142,253)] = {64,0}, + [I(143,253)] = {64,0}, + [I(144,253)] = {64,0}, + [I(145,253)] = {64,0}, + [I(146,253)] = {64,0}, + [I(147,253)] = {64,0}, + [I(148,253)] = {64,0}, + [I(149,253)] = {64,0}, + [I(150,253)] = {64,0}, + [I(151,253)] = {64,0}, + [I(152,253)] = {64,0}, + [I(153,253)] = {64,0}, + [I(154,253)] = {64,0}, + [I(155,253)] = {64,0}, + [I(156,253)] = {64,0}, + [I(157,253)] = {64,0}, + [I(158,253)] = {64,0}, + [I(159,253)] = {64,0}, + [I(160,253)] = {64,0}, + [I(161,253)] = {64,0}, + [I(162,253)] = {64,0}, + [I(163,253)] = {64,0}, + [I(164,253)] = {64,0}, + [I(165,253)] = {64,0}, + [I(166,253)] = {64,0}, + [I(167,253)] = {64,0}, + [I(168,253)] = {64,0}, + [I(169,253)] = {64,0}, + [I(170,253)] = {64,0}, + [I(171,253)] = {64,0}, + [I(172,253)] = {64,0}, + [I(173,253)] = {64,0}, + [I(174,253)] = {64,0}, + [I(175,253)] = {64,0}, + [I(176,253)] = {64,0}, + [I(177,253)] = {64,0}, + [I(178,253)] = {64,0}, + [I(179,253)] = {64,0}, + [I(180,253)] = {64,0}, + [I(181,253)] = {64,0}, + [I(182,253)] = {64,0}, + [I(183,253)] = {64,0}, + [I(184,253)] = {64,0}, + [I(185,253)] = {64,0}, + [I(186,253)] = {64,0}, + [I(187,253)] = {64,0}, + [I(188,253)] = {64,0}, + [I(189,253)] = {64,0}, + [I(190,253)] = {64,0}, + [I(191,253)] = {64,0}, + [I(192,253)] = {64,0}, + [I(193,253)] = {64,0}, + [I(194,253)] = {64,0}, + [I(195,253)] = {64,0}, + [I(196,253)] = {64,0}, + [I(197,253)] = {64,0}, + [I(198,253)] = {64,0}, + [I(199,253)] = {64,0}, + [I(200,253)] = {64,0}, + [I(201,253)] = {64,0}, + [I(202,253)] = {64,0}, + [I(203,253)] = {64,0}, + [I(204,253)] = {64,0}, + [I(205,253)] = {64,0}, + [I(206,253)] = {64,0}, + [I(207,253)] = {64,0}, + [I(208,253)] = {64,0}, + [I(209,253)] = {64,0}, + [I(210,253)] = {64,0}, + [I(211,253)] = {64,0}, + [I(212,253)] = {64,0}, + [I(213,253)] = {64,0}, + [I(214,253)] = {64,0}, + [I(215,253)] = {64,0}, + [I(216,253)] = {64,0}, + [I(217,253)] = {64,0}, + [I(218,253)] = {64,0}, + [I(219,253)] = {64,0}, + [I(220,253)] = {64,0}, + [I(221,253)] = {64,0}, + [I(222,253)] = {64,0}, + [I(223,253)] = {64,0}, + [I(224,253)] = {64,0}, + [I(225,253)] = {64,0}, + [I(226,253)] = {64,0}, + [I(227,253)] = {64,0}, + [I(228,253)] = {64,0}, + [I(229,253)] = {64,0}, + [I(230,253)] = {64,0}, + [I(231,253)] = {64,0}, + [I(232,253)] = {64,0}, + [I(233,253)] = {64,0}, + [I(234,253)] = {64,0}, + [I(235,253)] = {64,0}, + [I(236,253)] = {64,0}, + [I(237,253)] = {64,0}, + [I(238,253)] = {64,0}, + [I(239,253)] = {64,0}, + [I(240,253)] = {64,0}, + [I(241,253)] = {64,0}, + [I(242,253)] = {64,0}, + [I(243,253)] = {64,0}, + [I(244,253)] = {64,0}, + [I(245,253)] = {64,0}, + [I(246,253)] = {64,0}, + [I(247,253)] = {64,0}, + [I(248,253)] = {64,0}, + [I(249,253)] = {64,0}, + [I(250,253)] = {64,0}, + [I(251,253)] = {64,0}, + [I(252,253)] = {64,0}, + [I(253,253)] = {64,0}, + [I(254,253)] = {64,0}, + [I(255,253)] = {64,0}, + [I(0,254)] = {64,0}, + [I(1,254)] = {64,0}, + [I(2,254)] = {64,0}, + [I(3,254)] = {64,0}, + [I(4,254)] = {64,0}, + [I(5,254)] = {64,0}, + [I(6,254)] = {64,0}, + [I(7,254)] = {64,0}, + [I(8,254)] = {64,0}, + [I(9,254)] = {64,0}, + [I(10,254)] = {64,0}, + [I(11,254)] = {64,0}, + [I(12,254)] = {64,0}, + [I(13,254)] = {64,0}, + [I(14,254)] = {64,0}, + [I(15,254)] = {64,0}, + [I(16,254)] = {64,0}, + [I(17,254)] = {64,0}, + [I(18,254)] = {64,0}, + [I(19,254)] = {64,0}, + [I(20,254)] = {64,0}, + [I(21,254)] = {64,0}, + [I(22,254)] = {64,0}, + [I(23,254)] = {64,0}, + [I(24,254)] = {64,0}, + [I(25,254)] = {64,0}, + [I(26,254)] = {64,0}, + [I(27,254)] = {64,0}, + [I(28,254)] = {64,0}, + [I(29,254)] = {64,0}, + [I(30,254)] = {64,0}, + [I(31,254)] = {64,0}, + [I(32,254)] = {64,0}, + [I(33,254)] = {64,0}, + [I(34,254)] = {64,0}, + [I(35,254)] = {64,0}, + [I(36,254)] = {64,0}, + [I(37,254)] = {64,0}, + [I(38,254)] = {64,0}, + [I(39,254)] = {64,0}, + [I(40,254)] = {64,0}, + [I(41,254)] = {64,0}, + [I(42,254)] = {64,0}, + [I(43,254)] = {64,0}, + [I(44,254)] = {64,0}, + [I(45,254)] = {64,0}, + [I(46,254)] = {64,0}, + [I(47,254)] = {64,0}, + [I(48,254)] = {X32,0x7FFFFF0}, + [I(49,254)] = {X32,0xFFFFFF0}, + [I(50,254)] = {X32,0x17FFFFF0}, + [I(51,254)] = {64,0}, + [I(52,254)] = {64,0}, + [I(53,254)] = {64,0}, + [I(54,254)] = {64,0}, + [I(55,254)] = {64,0}, + [I(56,254)] = {64,0}, + [I(57,254)] = {64,0}, + [I(58,254)] = {64,0}, + [I(59,254)] = {64,0}, + [I(60,254)] = {64,0}, + [I(61,254)] = {64,0}, + [I(62,254)] = {64,0}, + [I(63,254)] = {64,0}, + [I(64,254)] = {64,0}, + [I(65,254)] = {64,0}, + [I(66,254)] = {64,0}, + [I(67,254)] = {64,0}, + [I(68,254)] = {64,0}, + [I(69,254)] = {64,0}, + [I(70,254)] = {64,0}, + [I(71,254)] = {64,0}, + [I(72,254)] = {64,0}, + [I(73,254)] = {64,0}, + [I(74,254)] = {64,0}, + [I(75,254)] = {64,0}, + [I(76,254)] = {64,0}, + [I(77,254)] = {64,0}, + [I(78,254)] = {64,0}, + [I(79,254)] = {64,0}, + [I(80,254)] = {64,0}, + [I(81,254)] = {64,0}, + [I(82,254)] = {64,0}, + [I(83,254)] = {64,0}, + [I(84,254)] = {64,0}, + [I(85,254)] = {64,0}, + [I(86,254)] = {64,0}, + [I(87,254)] = {64,0}, + [I(88,254)] = {64,0}, + [I(89,254)] = {64,0}, + [I(90,254)] = {64,0}, + [I(91,254)] = {64,0}, + [I(92,254)] = {64,0}, + [I(93,254)] = {64,0}, + [I(94,254)] = {64,0}, + [I(95,254)] = {64,0}, + [I(96,254)] = {64,0}, + [I(97,254)] = {X32,0x1FFFFFF0}, + [I(98,254)] = {64,0}, + [I(99,254)] = {X32,0x27FFFFF0}, + [I(100,254)] = {64,0}, + [I(101,254)] = {X32,0x2FFFFFF0}, + [I(102,254)] = {64,0}, + [I(103,254)] = {64,0}, + [I(104,254)] = {64,0}, + [I(105,254)] = {X32,0x37FFFFF0}, + [I(106,254)] = {64,0}, + [I(107,254)] = {64,0}, + [I(108,254)] = {64,0}, + [I(109,254)] = {64,0}, + [I(110,254)] = {64,0}, + [I(111,254)] = {X32,0x3FFFFFF0}, + [I(112,254)] = {64,0}, + [I(113,254)] = {64,0}, + [I(114,254)] = {64,0}, + [I(115,254)] = {X32,0x47FFFFF0}, + [I(116,254)] = {X32,0x4FFFFFF0}, + [I(117,254)] = {64,0}, + [I(118,254)] = {64,0}, + [I(119,254)] = {64,0}, + [I(120,254)] = {64,0}, + [I(121,254)] = {64,0}, + [I(122,254)] = {64,0}, + [I(123,254)] = {64,0}, + [I(124,254)] = {64,0}, + [I(125,254)] = {64,0}, + [I(126,254)] = {64,0}, + [I(127,254)] = {64,0}, + [I(128,254)] = {64,0}, + [I(129,254)] = {64,0}, + [I(130,254)] = {64,0}, + [I(131,254)] = {64,0}, + [I(132,254)] = {64,0}, + [I(133,254)] = {64,0}, + [I(134,254)] = {64,0}, + [I(135,254)] = {64,0}, + [I(136,254)] = {64,0}, + [I(137,254)] = {64,0}, + [I(138,254)] = {64,0}, + [I(139,254)] = {64,0}, + [I(140,254)] = {64,0}, + [I(141,254)] = {64,0}, + [I(142,254)] = {64,0}, + [I(143,254)] = {64,0}, + [I(144,254)] = {64,0}, + [I(145,254)] = {64,0}, + [I(146,254)] = {64,0}, + [I(147,254)] = {64,0}, + [I(148,254)] = {64,0}, + [I(149,254)] = {64,0}, + [I(150,254)] = {64,0}, + [I(151,254)] = {64,0}, + [I(152,254)] = {64,0}, + [I(153,254)] = {64,0}, + [I(154,254)] = {64,0}, + [I(155,254)] = {64,0}, + [I(156,254)] = {64,0}, + [I(157,254)] = {64,0}, + [I(158,254)] = {64,0}, + [I(159,254)] = {64,0}, + [I(160,254)] = {64,0}, + [I(161,254)] = {64,0}, + [I(162,254)] = {64,0}, + [I(163,254)] = {64,0}, + [I(164,254)] = {64,0}, + [I(165,254)] = {64,0}, + [I(166,254)] = {64,0}, + [I(167,254)] = {64,0}, + [I(168,254)] = {64,0}, + [I(169,254)] = {64,0}, + [I(170,254)] = {64,0}, + [I(171,254)] = {64,0}, + [I(172,254)] = {64,0}, + [I(173,254)] = {64,0}, + [I(174,254)] = {64,0}, + [I(175,254)] = {64,0}, + [I(176,254)] = {64,0}, + [I(177,254)] = {64,0}, + [I(178,254)] = {64,0}, + [I(179,254)] = {64,0}, + [I(180,254)] = {64,0}, + [I(181,254)] = {64,0}, + [I(182,254)] = {64,0}, + [I(183,254)] = {64,0}, + [I(184,254)] = {64,0}, + [I(185,254)] = {64,0}, + [I(186,254)] = {64,0}, + [I(187,254)] = {64,0}, + [I(188,254)] = {64,0}, + [I(189,254)] = {64,0}, + [I(190,254)] = {64,0}, + [I(191,254)] = {64,0}, + [I(192,254)] = {64,0}, + [I(193,254)] = {64,0}, + [I(194,254)] = {64,0}, + [I(195,254)] = {64,0}, + [I(196,254)] = {64,0}, + [I(197,254)] = {64,0}, + [I(198,254)] = {64,0}, + [I(199,254)] = {64,0}, + [I(200,254)] = {64,0}, + [I(201,254)] = {64,0}, + [I(202,254)] = {64,0}, + [I(203,254)] = {64,0}, + [I(204,254)] = {64,0}, + [I(205,254)] = {64,0}, + [I(206,254)] = {64,0}, + [I(207,254)] = {64,0}, + [I(208,254)] = {64,0}, + [I(209,254)] = {64,0}, + [I(210,254)] = {64,0}, + [I(211,254)] = {64,0}, + [I(212,254)] = {64,0}, + [I(213,254)] = {64,0}, + [I(214,254)] = {64,0}, + [I(215,254)] = {64,0}, + [I(216,254)] = {64,0}, + [I(217,254)] = {64,0}, + [I(218,254)] = {64,0}, + [I(219,254)] = {64,0}, + [I(220,254)] = {64,0}, + [I(221,254)] = {64,0}, + [I(222,254)] = {64,0}, + [I(223,254)] = {64,0}, + [I(224,254)] = {64,0}, + [I(225,254)] = {64,0}, + [I(226,254)] = {64,0}, + [I(227,254)] = {64,0}, + [I(228,254)] = {64,0}, + [I(229,254)] = {64,0}, + [I(230,254)] = {64,0}, + [I(231,254)] = {64,0}, + [I(232,254)] = {64,0}, + [I(233,254)] = {64,0}, + [I(234,254)] = {64,0}, + [I(235,254)] = {64,0}, + [I(236,254)] = {64,0}, + [I(237,254)] = {64,0}, + [I(238,254)] = {64,0}, + [I(239,254)] = {64,0}, + [I(240,254)] = {64,0}, + [I(241,254)] = {64,0}, + [I(242,254)] = {64,0}, + [I(243,254)] = {64,0}, + [I(244,254)] = {64,0}, + [I(245,254)] = {64,0}, + [I(246,254)] = {64,0}, + [I(247,254)] = {64,0}, + [I(248,254)] = {64,0}, + [I(249,254)] = {64,0}, + [I(250,254)] = {64,0}, + [I(251,254)] = {64,0}, + [I(252,254)] = {64,0}, + [I(253,254)] = {64,0}, + [I(254,254)] = {64,0}, + [I(255,254)] = {64,0}, + [I(0,255)] = {64,0}, + [I(1,255)] = {64,0}, + [I(2,255)] = {64,0}, + [I(3,255)] = {64,0}, + [I(4,255)] = {64,0}, + [I(5,255)] = {64,0}, + [I(6,255)] = {64,0}, + [I(7,255)] = {64,0}, + [I(8,255)] = {64,0}, + [I(9,255)] = {64,0}, + [I(10,255)] = {64,0}, + [I(11,255)] = {64,0}, + [I(12,255)] = {64,0}, + [I(13,255)] = {64,0}, + [I(14,255)] = {64,0}, + [I(15,255)] = {64,0}, + [I(16,255)] = {64,0}, + [I(17,255)] = {64,0}, + [I(18,255)] = {64,0}, + [I(19,255)] = {64,0}, + [I(20,255)] = {64,0}, + [I(21,255)] = {64,0}, + [I(22,255)] = {64,0}, + [I(23,255)] = {64,0}, + [I(24,255)] = {64,0}, + [I(25,255)] = {64,0}, + [I(26,255)] = {64,0}, + [I(27,255)] = {64,0}, + [I(28,255)] = {64,0}, + [I(29,255)] = {64,0}, + [I(30,255)] = {64,0}, + [I(31,255)] = {64,0}, + [I(32,255)] = {X32,0x53FFFFEE}, + [I(33,255)] = {64,0}, + [I(34,255)] = {64,0}, + [I(35,255)] = {64,0}, + [I(36,255)] = {64,0}, + [I(37,255)] = {X32,0x57FFFFEE}, + [I(38,255)] = {64,0}, + [I(39,255)] = {64,0}, + [I(40,255)] = {64,0}, + [I(41,255)] = {64,0}, + [I(42,255)] = {64,0}, + [I(43,255)] = {64,0}, + [I(44,255)] = {64,0}, + [I(45,255)] = {X32,0x5BFFFFEE}, + [I(46,255)] = {X32,0x5FFFFFEE}, + [I(47,255)] = {X32,0x63FFFFEE}, + [I(48,255)] = {31,0x3FFFFEE}, + [I(49,255)] = {31,0x7FFFFEE}, + [I(50,255)] = {31,0xBFFFFEE}, + [I(51,255)] = {X32,0x67FFFFEE}, + [I(52,255)] = {X32,0x6BFFFFEE}, + [I(53,255)] = {X32,0x6FFFFFEE}, + [I(54,255)] = {X32,0x73FFFFEE}, + [I(55,255)] = {X32,0x77FFFFEE}, + [I(56,255)] = {X32,0x7BFFFFEE}, + [I(57,255)] = {X32,0x7FFFFFEE}, + [I(58,255)] = {64,0}, + [I(59,255)] = {64,0}, + [I(60,255)] = {64,0}, + [I(61,255)] = {X32,0x83FFFFEE}, + [I(62,255)] = {64,0}, + [I(63,255)] = {64,0}, + [I(64,255)] = {64,0}, + [I(65,255)] = {X32,0x87FFFFEE}, + [I(66,255)] = {64,0}, + [I(67,255)] = {64,0}, + [I(68,255)] = {64,0}, + [I(69,255)] = {64,0}, + [I(70,255)] = {64,0}, + [I(71,255)] = {64,0}, + [I(72,255)] = {64,0}, + [I(73,255)] = {64,0}, + [I(74,255)] = {64,0}, + [I(75,255)] = {64,0}, + [I(76,255)] = {64,0}, + [I(77,255)] = {64,0}, + [I(78,255)] = {64,0}, + [I(79,255)] = {64,0}, + [I(80,255)] = {64,0}, + [I(81,255)] = {64,0}, + [I(82,255)] = {64,0}, + [I(83,255)] = {64,0}, + [I(84,255)] = {64,0}, + [I(85,255)] = {64,0}, + [I(86,255)] = {64,0}, + [I(87,255)] = {64,0}, + [I(88,255)] = {64,0}, + [I(89,255)] = {64,0}, + [I(90,255)] = {64,0}, + [I(91,255)] = {64,0}, + [I(92,255)] = {64,0}, + [I(93,255)] = {64,0}, + [I(94,255)] = {64,0}, + [I(95,255)] = {X32,0x8BFFFFEE}, + [I(96,255)] = {64,0}, + [I(97,255)] = {31,0xFFFFFEE}, + [I(98,255)] = {X32,0x8FFFFFEE}, + [I(99,255)] = {31,0x13FFFFEE}, + [I(100,255)] = {X32,0x93FFFFEE}, + [I(101,255)] = {31,0x17FFFFEE}, + [I(102,255)] = {X32,0x97FFFFEE}, + [I(103,255)] = {X32,0x9BFFFFEE}, + [I(104,255)] = {X32,0x9FFFFFEE}, + [I(105,255)] = {31,0x1BFFFFEE}, + [I(106,255)] = {64,0}, + [I(107,255)] = {64,0}, + [I(108,255)] = {X32,0xA3FFFFEE}, + [I(109,255)] = {X32,0xA7FFFFEE}, + [I(110,255)] = {X32,0xABFFFFEE}, + [I(111,255)] = {31,0x1FFFFFEE}, + [I(112,255)] = {X32,0xAFFFFFEE}, + [I(113,255)] = {64,0}, + [I(114,255)] = {X32,0xB3FFFFEE}, + [I(115,255)] = {31,0x23FFFFEE}, + [I(116,255)] = {31,0x27FFFFEE}, + [I(117,255)] = {X32,0xB7FFFFEE}, + [I(118,255)] = {64,0}, + [I(119,255)] = {64,0}, + [I(120,255)] = {64,0}, + [I(121,255)] = {64,0}, + [I(122,255)] = {64,0}, + [I(123,255)] = {64,0}, + [I(124,255)] = {64,0}, + [I(125,255)] = {64,0}, + [I(126,255)] = {64,0}, + [I(127,255)] = {64,0}, + [I(128,255)] = {64,0}, + [I(129,255)] = {64,0}, + [I(130,255)] = {64,0}, + [I(131,255)] = {64,0}, + [I(132,255)] = {64,0}, + [I(133,255)] = {64,0}, + [I(134,255)] = {64,0}, + [I(135,255)] = {64,0}, + [I(136,255)] = {64,0}, + [I(137,255)] = {64,0}, + [I(138,255)] = {64,0}, + [I(139,255)] = {64,0}, + [I(140,255)] = {64,0}, + [I(141,255)] = {64,0}, + [I(142,255)] = {64,0}, + [I(143,255)] = {64,0}, + [I(144,255)] = {64,0}, + [I(145,255)] = {64,0}, + [I(146,255)] = {64,0}, + [I(147,255)] = {64,0}, + [I(148,255)] = {64,0}, + [I(149,255)] = {64,0}, + [I(150,255)] = {64,0}, + [I(151,255)] = {64,0}, + [I(152,255)] = {64,0}, + [I(153,255)] = {64,0}, + [I(154,255)] = {64,0}, + [I(155,255)] = {64,0}, + [I(156,255)] = {64,0}, + [I(157,255)] = {64,0}, + [I(158,255)] = {64,0}, + [I(159,255)] = {64,0}, + [I(160,255)] = {64,0}, + [I(161,255)] = {64,0}, + [I(162,255)] = {64,0}, + [I(163,255)] = {64,0}, + [I(164,255)] = {64,0}, + [I(165,255)] = {64,0}, + [I(166,255)] = {64,0}, + [I(167,255)] = {64,0}, + [I(168,255)] = {64,0}, + [I(169,255)] = {64,0}, + [I(170,255)] = {64,0}, + [I(171,255)] = {64,0}, + [I(172,255)] = {64,0}, + [I(173,255)] = {64,0}, + [I(174,255)] = {64,0}, + [I(175,255)] = {64,0}, + [I(176,255)] = {64,0}, + [I(177,255)] = {64,0}, + [I(178,255)] = {64,0}, + [I(179,255)] = {64,0}, + [I(180,255)] = {64,0}, + [I(181,255)] = {64,0}, + [I(182,255)] = {64,0}, + [I(183,255)] = {64,0}, + [I(184,255)] = {64,0}, + [I(185,255)] = {64,0}, + [I(186,255)] = {64,0}, + [I(187,255)] = {64,0}, + [I(188,255)] = {64,0}, + [I(189,255)] = {64,0}, + [I(190,255)] = {64,0}, + [I(191,255)] = {64,0}, + [I(192,255)] = {64,0}, + [I(193,255)] = {64,0}, + [I(194,255)] = {64,0}, + [I(195,255)] = {64,0}, + [I(196,255)] = {64,0}, + [I(197,255)] = {64,0}, + [I(198,255)] = {64,0}, + [I(199,255)] = {64,0}, + [I(200,255)] = {64,0}, + [I(201,255)] = {64,0}, + [I(202,255)] = {64,0}, + [I(203,255)] = {64,0}, + [I(204,255)] = {64,0}, + [I(205,255)] = {64,0}, + [I(206,255)] = {64,0}, + [I(207,255)] = {64,0}, + [I(208,255)] = {64,0}, + [I(209,255)] = {64,0}, + [I(210,255)] = {64,0}, + [I(211,255)] = {64,0}, + [I(212,255)] = {64,0}, + [I(213,255)] = {64,0}, + [I(214,255)] = {64,0}, + [I(215,255)] = {64,0}, + [I(216,255)] = {64,0}, + [I(217,255)] = {64,0}, + [I(218,255)] = {64,0}, + [I(219,255)] = {64,0}, + [I(220,255)] = {64,0}, + [I(221,255)] = {64,0}, + [I(222,255)] = {64,0}, + [I(223,255)] = {64,0}, + [I(224,255)] = {64,0}, + [I(225,255)] = {64,0}, + [I(226,255)] = {64,0}, + [I(227,255)] = {64,0}, + [I(228,255)] = {64,0}, + [I(229,255)] = {64,0}, + [I(230,255)] = {64,0}, + [I(231,255)] = {64,0}, + [I(232,255)] = {64,0}, + [I(233,255)] = {64,0}, + [I(234,255)] = {64,0}, + [I(235,255)] = {64,0}, + [I(236,255)] = {64,0}, + [I(237,255)] = {64,0}, + [I(238,255)] = {64,0}, + [I(239,255)] = {64,0}, + [I(240,255)] = {64,0}, + [I(241,255)] = {64,0}, + [I(242,255)] = {64,0}, + [I(243,255)] = {64,0}, + [I(244,255)] = {64,0}, + [I(245,255)] = {64,0}, + [I(246,255)] = {64,0}, + [I(247,255)] = {64,0}, + [I(248,255)] = {64,0}, + [I(249,255)] = {64,0}, + [I(250,255)] = {64,0}, + [I(251,255)] = {64,0}, + [I(252,255)] = {64,0}, + [I(253,255)] = {64,0}, + [I(254,255)] = {64,0}, + [I(255,255)] = {64,0}, +}; +#undef X32 +#undef I +#endif + + +struct decode_el +{ + uint8_t state; + uint8_t flags; + uint8_t sym; +}; + +static const struct decode_el decode_tables[256][16] = +{ + /* 0 */ + { + { 4, 0x00, 0 }, + { 5, 0x00, 0 }, + { 7, 0x00, 0 }, + { 8, 0x00, 0 }, + { 11, 0x00, 0 }, + { 12, 0x00, 0 }, + { 16, 0x00, 0 }, + { 19, 0x00, 0 }, + { 25, 0x00, 0 }, + { 28, 0x00, 0 }, + { 32, 0x00, 0 }, + { 35, 0x00, 0 }, + { 42, 0x00, 0 }, + { 49, 0x00, 0 }, + { 57, 0x00, 0 }, + { 64, 0x01, 0 }, + }, + /* 1 */ + { + { 0, 0x03, 48 }, + { 0, 0x03, 49 }, + { 0, 0x03, 50 }, + { 0, 0x03, 97 }, + { 0, 0x03, 99 }, + { 0, 0x03, 101 }, + { 0, 0x03, 105 }, + { 0, 0x03, 111 }, + { 0, 0x03, 115 }, + { 0, 0x03, 116 }, + { 13, 0x00, 0 }, + { 14, 0x00, 0 }, + { 17, 0x00, 0 }, + { 18, 0x00, 0 }, + { 20, 0x00, 0 }, + { 21, 0x00, 0 }, + }, + /* 2 */ + { + { 1, 0x02, 48 }, + { 22, 0x03, 48 }, + { 1, 0x02, 49 }, + { 22, 0x03, 49 }, + { 1, 0x02, 50 }, + { 22, 0x03, 50 }, + { 1, 0x02, 97 }, + { 22, 0x03, 97 }, + { 1, 0x02, 99 }, + { 22, 0x03, 99 }, + { 1, 0x02, 101 }, + { 22, 0x03, 101 }, + { 1, 0x02, 105 }, + { 22, 0x03, 105 }, + { 1, 0x02, 111 }, + { 22, 0x03, 111 }, + }, + /* 3 */ + { + { 2, 0x02, 48 }, + { 9, 0x02, 48 }, + { 23, 0x02, 48 }, + { 40, 0x03, 48 }, + { 2, 0x02, 49 }, + { 9, 0x02, 49 }, + { 23, 0x02, 49 }, + { 40, 0x03, 49 }, + { 2, 0x02, 50 }, + { 9, 0x02, 50 }, + { 23, 0x02, 50 }, + { 40, 0x03, 50 }, + { 2, 0x02, 97 }, + { 9, 0x02, 97 }, + { 23, 0x02, 97 }, + { 40, 0x03, 97 }, + }, + /* 4 */ + { + { 3, 0x02, 48 }, + { 6, 0x02, 48 }, + { 10, 0x02, 48 }, + { 15, 0x02, 48 }, + { 24, 0x02, 48 }, + { 31, 0x02, 48 }, + { 41, 0x02, 48 }, + { 56, 0x03, 48 }, + { 3, 0x02, 49 }, + { 6, 0x02, 49 }, + { 10, 0x02, 49 }, + { 15, 0x02, 49 }, + { 24, 0x02, 49 }, + { 31, 0x02, 49 }, + { 41, 0x02, 49 }, + { 56, 0x03, 49 }, + }, + /* 5 */ + { + { 3, 0x02, 50 }, + { 6, 0x02, 50 }, + { 10, 0x02, 50 }, + { 15, 0x02, 50 }, + { 24, 0x02, 50 }, + { 31, 0x02, 50 }, + { 41, 0x02, 50 }, + { 56, 0x03, 50 }, + { 3, 0x02, 97 }, + { 6, 0x02, 97 }, + { 10, 0x02, 97 }, + { 15, 0x02, 97 }, + { 24, 0x02, 97 }, + { 31, 0x02, 97 }, + { 41, 0x02, 97 }, + { 56, 0x03, 97 }, + }, + /* 6 */ + { + { 2, 0x02, 99 }, + { 9, 0x02, 99 }, + { 23, 0x02, 99 }, + { 40, 0x03, 99 }, + { 2, 0x02, 101 }, + { 9, 0x02, 101 }, + { 23, 0x02, 101 }, + { 40, 0x03, 101 }, + { 2, 0x02, 105 }, + { 9, 0x02, 105 }, + { 23, 0x02, 105 }, + { 40, 0x03, 105 }, + { 2, 0x02, 111 }, + { 9, 0x02, 111 }, + { 23, 0x02, 111 }, + { 40, 0x03, 111 }, + }, + /* 7 */ + { + { 3, 0x02, 99 }, + { 6, 0x02, 99 }, + { 10, 0x02, 99 }, + { 15, 0x02, 99 }, + { 24, 0x02, 99 }, + { 31, 0x02, 99 }, + { 41, 0x02, 99 }, + { 56, 0x03, 99 }, + { 3, 0x02, 101 }, + { 6, 0x02, 101 }, + { 10, 0x02, 101 }, + { 15, 0x02, 101 }, + { 24, 0x02, 101 }, + { 31, 0x02, 101 }, + { 41, 0x02, 101 }, + { 56, 0x03, 101 }, + }, + /* 8 */ + { + { 3, 0x02, 105 }, + { 6, 0x02, 105 }, + { 10, 0x02, 105 }, + { 15, 0x02, 105 }, + { 24, 0x02, 105 }, + { 31, 0x02, 105 }, + { 41, 0x02, 105 }, + { 56, 0x03, 105 }, + { 3, 0x02, 111 }, + { 6, 0x02, 111 }, + { 10, 0x02, 111 }, + { 15, 0x02, 111 }, + { 24, 0x02, 111 }, + { 31, 0x02, 111 }, + { 41, 0x02, 111 }, + { 56, 0x03, 111 }, + }, + /* 9 */ + { + { 1, 0x02, 115 }, + { 22, 0x03, 115 }, + { 1, 0x02, 116 }, + { 22, 0x03, 116 }, + { 0, 0x03, 32 }, + { 0, 0x03, 37 }, + { 0, 0x03, 45 }, + { 0, 0x03, 46 }, + { 0, 0x03, 47 }, + { 0, 0x03, 51 }, + { 0, 0x03, 52 }, + { 0, 0x03, 53 }, + { 0, 0x03, 54 }, + { 0, 0x03, 55 }, + { 0, 0x03, 56 }, + { 0, 0x03, 57 }, + }, + /* 10 */ + { + { 2, 0x02, 115 }, + { 9, 0x02, 115 }, + { 23, 0x02, 115 }, + { 40, 0x03, 115 }, + { 2, 0x02, 116 }, + { 9, 0x02, 116 }, + { 23, 0x02, 116 }, + { 40, 0x03, 116 }, + { 1, 0x02, 32 }, + { 22, 0x03, 32 }, + { 1, 0x02, 37 }, + { 22, 0x03, 37 }, + { 1, 0x02, 45 }, + { 22, 0x03, 45 }, + { 1, 0x02, 46 }, + { 22, 0x03, 46 }, + }, + /* 11 */ + { + { 3, 0x02, 115 }, + { 6, 0x02, 115 }, + { 10, 0x02, 115 }, + { 15, 0x02, 115 }, + { 24, 0x02, 115 }, + { 31, 0x02, 115 }, + { 41, 0x02, 115 }, + { 56, 0x03, 115 }, + { 3, 0x02, 116 }, + { 6, 0x02, 116 }, + { 10, 0x02, 116 }, + { 15, 0x02, 116 }, + { 24, 0x02, 116 }, + { 31, 0x02, 116 }, + { 41, 0x02, 116 }, + { 56, 0x03, 116 }, + }, + /* 12 */ + { + { 2, 0x02, 32 }, + { 9, 0x02, 32 }, + { 23, 0x02, 32 }, + { 40, 0x03, 32 }, + { 2, 0x02, 37 }, + { 9, 0x02, 37 }, + { 23, 0x02, 37 }, + { 40, 0x03, 37 }, + { 2, 0x02, 45 }, + { 9, 0x02, 45 }, + { 23, 0x02, 45 }, + { 40, 0x03, 45 }, + { 2, 0x02, 46 }, + { 9, 0x02, 46 }, + { 23, 0x02, 46 }, + { 40, 0x03, 46 }, + }, + /* 13 */ + { + { 3, 0x02, 32 }, + { 6, 0x02, 32 }, + { 10, 0x02, 32 }, + { 15, 0x02, 32 }, + { 24, 0x02, 32 }, + { 31, 0x02, 32 }, + { 41, 0x02, 32 }, + { 56, 0x03, 32 }, + { 3, 0x02, 37 }, + { 6, 0x02, 37 }, + { 10, 0x02, 37 }, + { 15, 0x02, 37 }, + { 24, 0x02, 37 }, + { 31, 0x02, 37 }, + { 41, 0x02, 37 }, + { 56, 0x03, 37 }, + }, + /* 14 */ + { + { 3, 0x02, 45 }, + { 6, 0x02, 45 }, + { 10, 0x02, 45 }, + { 15, 0x02, 45 }, + { 24, 0x02, 45 }, + { 31, 0x02, 45 }, + { 41, 0x02, 45 }, + { 56, 0x03, 45 }, + { 3, 0x02, 46 }, + { 6, 0x02, 46 }, + { 10, 0x02, 46 }, + { 15, 0x02, 46 }, + { 24, 0x02, 46 }, + { 31, 0x02, 46 }, + { 41, 0x02, 46 }, + { 56, 0x03, 46 }, + }, + /* 15 */ + { + { 1, 0x02, 47 }, + { 22, 0x03, 47 }, + { 1, 0x02, 51 }, + { 22, 0x03, 51 }, + { 1, 0x02, 52 }, + { 22, 0x03, 52 }, + { 1, 0x02, 53 }, + { 22, 0x03, 53 }, + { 1, 0x02, 54 }, + { 22, 0x03, 54 }, + { 1, 0x02, 55 }, + { 22, 0x03, 55 }, + { 1, 0x02, 56 }, + { 22, 0x03, 56 }, + { 1, 0x02, 57 }, + { 22, 0x03, 57 }, + }, + /* 16 */ + { + { 2, 0x02, 47 }, + { 9, 0x02, 47 }, + { 23, 0x02, 47 }, + { 40, 0x03, 47 }, + { 2, 0x02, 51 }, + { 9, 0x02, 51 }, + { 23, 0x02, 51 }, + { 40, 0x03, 51 }, + { 2, 0x02, 52 }, + { 9, 0x02, 52 }, + { 23, 0x02, 52 }, + { 40, 0x03, 52 }, + { 2, 0x02, 53 }, + { 9, 0x02, 53 }, + { 23, 0x02, 53 }, + { 40, 0x03, 53 }, + }, + /* 17 */ + { + { 3, 0x02, 47 }, + { 6, 0x02, 47 }, + { 10, 0x02, 47 }, + { 15, 0x02, 47 }, + { 24, 0x02, 47 }, + { 31, 0x02, 47 }, + { 41, 0x02, 47 }, + { 56, 0x03, 47 }, + { 3, 0x02, 51 }, + { 6, 0x02, 51 }, + { 10, 0x02, 51 }, + { 15, 0x02, 51 }, + { 24, 0x02, 51 }, + { 31, 0x02, 51 }, + { 41, 0x02, 51 }, + { 56, 0x03, 51 }, + }, + /* 18 */ + { + { 3, 0x02, 52 }, + { 6, 0x02, 52 }, + { 10, 0x02, 52 }, + { 15, 0x02, 52 }, + { 24, 0x02, 52 }, + { 31, 0x02, 52 }, + { 41, 0x02, 52 }, + { 56, 0x03, 52 }, + { 3, 0x02, 53 }, + { 6, 0x02, 53 }, + { 10, 0x02, 53 }, + { 15, 0x02, 53 }, + { 24, 0x02, 53 }, + { 31, 0x02, 53 }, + { 41, 0x02, 53 }, + { 56, 0x03, 53 }, + }, + /* 19 */ + { + { 2, 0x02, 54 }, + { 9, 0x02, 54 }, + { 23, 0x02, 54 }, + { 40, 0x03, 54 }, + { 2, 0x02, 55 }, + { 9, 0x02, 55 }, + { 23, 0x02, 55 }, + { 40, 0x03, 55 }, + { 2, 0x02, 56 }, + { 9, 0x02, 56 }, + { 23, 0x02, 56 }, + { 40, 0x03, 56 }, + { 2, 0x02, 57 }, + { 9, 0x02, 57 }, + { 23, 0x02, 57 }, + { 40, 0x03, 57 }, + }, + /* 20 */ + { + { 3, 0x02, 54 }, + { 6, 0x02, 54 }, + { 10, 0x02, 54 }, + { 15, 0x02, 54 }, + { 24, 0x02, 54 }, + { 31, 0x02, 54 }, + { 41, 0x02, 54 }, + { 56, 0x03, 54 }, + { 3, 0x02, 55 }, + { 6, 0x02, 55 }, + { 10, 0x02, 55 }, + { 15, 0x02, 55 }, + { 24, 0x02, 55 }, + { 31, 0x02, 55 }, + { 41, 0x02, 55 }, + { 56, 0x03, 55 }, + }, + /* 21 */ + { + { 3, 0x02, 56 }, + { 6, 0x02, 56 }, + { 10, 0x02, 56 }, + { 15, 0x02, 56 }, + { 24, 0x02, 56 }, + { 31, 0x02, 56 }, + { 41, 0x02, 56 }, + { 56, 0x03, 56 }, + { 3, 0x02, 57 }, + { 6, 0x02, 57 }, + { 10, 0x02, 57 }, + { 15, 0x02, 57 }, + { 24, 0x02, 57 }, + { 31, 0x02, 57 }, + { 41, 0x02, 57 }, + { 56, 0x03, 57 }, + }, + /* 22 */ + { + { 26, 0x00, 0 }, + { 27, 0x00, 0 }, + { 29, 0x00, 0 }, + { 30, 0x00, 0 }, + { 33, 0x00, 0 }, + { 34, 0x00, 0 }, + { 36, 0x00, 0 }, + { 37, 0x00, 0 }, + { 43, 0x00, 0 }, + { 46, 0x00, 0 }, + { 50, 0x00, 0 }, + { 53, 0x00, 0 }, + { 58, 0x00, 0 }, + { 61, 0x00, 0 }, + { 65, 0x00, 0 }, + { 68, 0x01, 0 }, + }, + /* 23 */ + { + { 0, 0x03, 61 }, + { 0, 0x03, 65 }, + { 0, 0x03, 95 }, + { 0, 0x03, 98 }, + { 0, 0x03, 100 }, + { 0, 0x03, 102 }, + { 0, 0x03, 103 }, + { 0, 0x03, 104 }, + { 0, 0x03, 108 }, + { 0, 0x03, 109 }, + { 0, 0x03, 110 }, + { 0, 0x03, 112 }, + { 0, 0x03, 114 }, + { 0, 0x03, 117 }, + { 38, 0x00, 0 }, + { 39, 0x00, 0 }, + }, + /* 24 */ + { + { 1, 0x02, 61 }, + { 22, 0x03, 61 }, + { 1, 0x02, 65 }, + { 22, 0x03, 65 }, + { 1, 0x02, 95 }, + { 22, 0x03, 95 }, + { 1, 0x02, 98 }, + { 22, 0x03, 98 }, + { 1, 0x02, 100 }, + { 22, 0x03, 100 }, + { 1, 0x02, 102 }, + { 22, 0x03, 102 }, + { 1, 0x02, 103 }, + { 22, 0x03, 103 }, + { 1, 0x02, 104 }, + { 22, 0x03, 104 }, + }, + /* 25 */ + { + { 2, 0x02, 61 }, + { 9, 0x02, 61 }, + { 23, 0x02, 61 }, + { 40, 0x03, 61 }, + { 2, 0x02, 65 }, + { 9, 0x02, 65 }, + { 23, 0x02, 65 }, + { 40, 0x03, 65 }, + { 2, 0x02, 95 }, + { 9, 0x02, 95 }, + { 23, 0x02, 95 }, + { 40, 0x03, 95 }, + { 2, 0x02, 98 }, + { 9, 0x02, 98 }, + { 23, 0x02, 98 }, + { 40, 0x03, 98 }, + }, + /* 26 */ + { + { 3, 0x02, 61 }, + { 6, 0x02, 61 }, + { 10, 0x02, 61 }, + { 15, 0x02, 61 }, + { 24, 0x02, 61 }, + { 31, 0x02, 61 }, + { 41, 0x02, 61 }, + { 56, 0x03, 61 }, + { 3, 0x02, 65 }, + { 6, 0x02, 65 }, + { 10, 0x02, 65 }, + { 15, 0x02, 65 }, + { 24, 0x02, 65 }, + { 31, 0x02, 65 }, + { 41, 0x02, 65 }, + { 56, 0x03, 65 }, + }, + /* 27 */ + { + { 3, 0x02, 95 }, + { 6, 0x02, 95 }, + { 10, 0x02, 95 }, + { 15, 0x02, 95 }, + { 24, 0x02, 95 }, + { 31, 0x02, 95 }, + { 41, 0x02, 95 }, + { 56, 0x03, 95 }, + { 3, 0x02, 98 }, + { 6, 0x02, 98 }, + { 10, 0x02, 98 }, + { 15, 0x02, 98 }, + { 24, 0x02, 98 }, + { 31, 0x02, 98 }, + { 41, 0x02, 98 }, + { 56, 0x03, 98 }, + }, + /* 28 */ + { + { 2, 0x02, 100 }, + { 9, 0x02, 100 }, + { 23, 0x02, 100 }, + { 40, 0x03, 100 }, + { 2, 0x02, 102 }, + { 9, 0x02, 102 }, + { 23, 0x02, 102 }, + { 40, 0x03, 102 }, + { 2, 0x02, 103 }, + { 9, 0x02, 103 }, + { 23, 0x02, 103 }, + { 40, 0x03, 103 }, + { 2, 0x02, 104 }, + { 9, 0x02, 104 }, + { 23, 0x02, 104 }, + { 40, 0x03, 104 }, + }, + /* 29 */ + { + { 3, 0x02, 100 }, + { 6, 0x02, 100 }, + { 10, 0x02, 100 }, + { 15, 0x02, 100 }, + { 24, 0x02, 100 }, + { 31, 0x02, 100 }, + { 41, 0x02, 100 }, + { 56, 0x03, 100 }, + { 3, 0x02, 102 }, + { 6, 0x02, 102 }, + { 10, 0x02, 102 }, + { 15, 0x02, 102 }, + { 24, 0x02, 102 }, + { 31, 0x02, 102 }, + { 41, 0x02, 102 }, + { 56, 0x03, 102 }, + }, + /* 30 */ + { + { 3, 0x02, 103 }, + { 6, 0x02, 103 }, + { 10, 0x02, 103 }, + { 15, 0x02, 103 }, + { 24, 0x02, 103 }, + { 31, 0x02, 103 }, + { 41, 0x02, 103 }, + { 56, 0x03, 103 }, + { 3, 0x02, 104 }, + { 6, 0x02, 104 }, + { 10, 0x02, 104 }, + { 15, 0x02, 104 }, + { 24, 0x02, 104 }, + { 31, 0x02, 104 }, + { 41, 0x02, 104 }, + { 56, 0x03, 104 }, + }, + /* 31 */ + { + { 1, 0x02, 108 }, + { 22, 0x03, 108 }, + { 1, 0x02, 109 }, + { 22, 0x03, 109 }, + { 1, 0x02, 110 }, + { 22, 0x03, 110 }, + { 1, 0x02, 112 }, + { 22, 0x03, 112 }, + { 1, 0x02, 114 }, + { 22, 0x03, 114 }, + { 1, 0x02, 117 }, + { 22, 0x03, 117 }, + { 0, 0x03, 58 }, + { 0, 0x03, 66 }, + { 0, 0x03, 67 }, + { 0, 0x03, 68 }, + }, + /* 32 */ + { + { 2, 0x02, 108 }, + { 9, 0x02, 108 }, + { 23, 0x02, 108 }, + { 40, 0x03, 108 }, + { 2, 0x02, 109 }, + { 9, 0x02, 109 }, + { 23, 0x02, 109 }, + { 40, 0x03, 109 }, + { 2, 0x02, 110 }, + { 9, 0x02, 110 }, + { 23, 0x02, 110 }, + { 40, 0x03, 110 }, + { 2, 0x02, 112 }, + { 9, 0x02, 112 }, + { 23, 0x02, 112 }, + { 40, 0x03, 112 }, + }, + /* 33 */ + { + { 3, 0x02, 108 }, + { 6, 0x02, 108 }, + { 10, 0x02, 108 }, + { 15, 0x02, 108 }, + { 24, 0x02, 108 }, + { 31, 0x02, 108 }, + { 41, 0x02, 108 }, + { 56, 0x03, 108 }, + { 3, 0x02, 109 }, + { 6, 0x02, 109 }, + { 10, 0x02, 109 }, + { 15, 0x02, 109 }, + { 24, 0x02, 109 }, + { 31, 0x02, 109 }, + { 41, 0x02, 109 }, + { 56, 0x03, 109 }, + }, + /* 34 */ + { + { 3, 0x02, 110 }, + { 6, 0x02, 110 }, + { 10, 0x02, 110 }, + { 15, 0x02, 110 }, + { 24, 0x02, 110 }, + { 31, 0x02, 110 }, + { 41, 0x02, 110 }, + { 56, 0x03, 110 }, + { 3, 0x02, 112 }, + { 6, 0x02, 112 }, + { 10, 0x02, 112 }, + { 15, 0x02, 112 }, + { 24, 0x02, 112 }, + { 31, 0x02, 112 }, + { 41, 0x02, 112 }, + { 56, 0x03, 112 }, + }, + /* 35 */ + { + { 2, 0x02, 114 }, + { 9, 0x02, 114 }, + { 23, 0x02, 114 }, + { 40, 0x03, 114 }, + { 2, 0x02, 117 }, + { 9, 0x02, 117 }, + { 23, 0x02, 117 }, + { 40, 0x03, 117 }, + { 1, 0x02, 58 }, + { 22, 0x03, 58 }, + { 1, 0x02, 66 }, + { 22, 0x03, 66 }, + { 1, 0x02, 67 }, + { 22, 0x03, 67 }, + { 1, 0x02, 68 }, + { 22, 0x03, 68 }, + }, + /* 36 */ + { + { 3, 0x02, 114 }, + { 6, 0x02, 114 }, + { 10, 0x02, 114 }, + { 15, 0x02, 114 }, + { 24, 0x02, 114 }, + { 31, 0x02, 114 }, + { 41, 0x02, 114 }, + { 56, 0x03, 114 }, + { 3, 0x02, 117 }, + { 6, 0x02, 117 }, + { 10, 0x02, 117 }, + { 15, 0x02, 117 }, + { 24, 0x02, 117 }, + { 31, 0x02, 117 }, + { 41, 0x02, 117 }, + { 56, 0x03, 117 }, + }, + /* 37 */ + { + { 2, 0x02, 58 }, + { 9, 0x02, 58 }, + { 23, 0x02, 58 }, + { 40, 0x03, 58 }, + { 2, 0x02, 66 }, + { 9, 0x02, 66 }, + { 23, 0x02, 66 }, + { 40, 0x03, 66 }, + { 2, 0x02, 67 }, + { 9, 0x02, 67 }, + { 23, 0x02, 67 }, + { 40, 0x03, 67 }, + { 2, 0x02, 68 }, + { 9, 0x02, 68 }, + { 23, 0x02, 68 }, + { 40, 0x03, 68 }, + }, + /* 38 */ + { + { 3, 0x02, 58 }, + { 6, 0x02, 58 }, + { 10, 0x02, 58 }, + { 15, 0x02, 58 }, + { 24, 0x02, 58 }, + { 31, 0x02, 58 }, + { 41, 0x02, 58 }, + { 56, 0x03, 58 }, + { 3, 0x02, 66 }, + { 6, 0x02, 66 }, + { 10, 0x02, 66 }, + { 15, 0x02, 66 }, + { 24, 0x02, 66 }, + { 31, 0x02, 66 }, + { 41, 0x02, 66 }, + { 56, 0x03, 66 }, + }, + /* 39 */ + { + { 3, 0x02, 67 }, + { 6, 0x02, 67 }, + { 10, 0x02, 67 }, + { 15, 0x02, 67 }, + { 24, 0x02, 67 }, + { 31, 0x02, 67 }, + { 41, 0x02, 67 }, + { 56, 0x03, 67 }, + { 3, 0x02, 68 }, + { 6, 0x02, 68 }, + { 10, 0x02, 68 }, + { 15, 0x02, 68 }, + { 24, 0x02, 68 }, + { 31, 0x02, 68 }, + { 41, 0x02, 68 }, + { 56, 0x03, 68 }, + }, + /* 40 */ + { + { 44, 0x00, 0 }, + { 45, 0x00, 0 }, + { 47, 0x00, 0 }, + { 48, 0x00, 0 }, + { 51, 0x00, 0 }, + { 52, 0x00, 0 }, + { 54, 0x00, 0 }, + { 55, 0x00, 0 }, + { 59, 0x00, 0 }, + { 60, 0x00, 0 }, + { 62, 0x00, 0 }, + { 63, 0x00, 0 }, + { 66, 0x00, 0 }, + { 67, 0x00, 0 }, + { 69, 0x00, 0 }, + { 72, 0x01, 0 }, + }, + /* 41 */ + { + { 0, 0x03, 69 }, + { 0, 0x03, 70 }, + { 0, 0x03, 71 }, + { 0, 0x03, 72 }, + { 0, 0x03, 73 }, + { 0, 0x03, 74 }, + { 0, 0x03, 75 }, + { 0, 0x03, 76 }, + { 0, 0x03, 77 }, + { 0, 0x03, 78 }, + { 0, 0x03, 79 }, + { 0, 0x03, 80 }, + { 0, 0x03, 81 }, + { 0, 0x03, 82 }, + { 0, 0x03, 83 }, + { 0, 0x03, 84 }, + }, + /* 42 */ + { + { 1, 0x02, 69 }, + { 22, 0x03, 69 }, + { 1, 0x02, 70 }, + { 22, 0x03, 70 }, + { 1, 0x02, 71 }, + { 22, 0x03, 71 }, + { 1, 0x02, 72 }, + { 22, 0x03, 72 }, + { 1, 0x02, 73 }, + { 22, 0x03, 73 }, + { 1, 0x02, 74 }, + { 22, 0x03, 74 }, + { 1, 0x02, 75 }, + { 22, 0x03, 75 }, + { 1, 0x02, 76 }, + { 22, 0x03, 76 }, + }, + /* 43 */ + { + { 2, 0x02, 69 }, + { 9, 0x02, 69 }, + { 23, 0x02, 69 }, + { 40, 0x03, 69 }, + { 2, 0x02, 70 }, + { 9, 0x02, 70 }, + { 23, 0x02, 70 }, + { 40, 0x03, 70 }, + { 2, 0x02, 71 }, + { 9, 0x02, 71 }, + { 23, 0x02, 71 }, + { 40, 0x03, 71 }, + { 2, 0x02, 72 }, + { 9, 0x02, 72 }, + { 23, 0x02, 72 }, + { 40, 0x03, 72 }, + }, + /* 44 */ + { + { 3, 0x02, 69 }, + { 6, 0x02, 69 }, + { 10, 0x02, 69 }, + { 15, 0x02, 69 }, + { 24, 0x02, 69 }, + { 31, 0x02, 69 }, + { 41, 0x02, 69 }, + { 56, 0x03, 69 }, + { 3, 0x02, 70 }, + { 6, 0x02, 70 }, + { 10, 0x02, 70 }, + { 15, 0x02, 70 }, + { 24, 0x02, 70 }, + { 31, 0x02, 70 }, + { 41, 0x02, 70 }, + { 56, 0x03, 70 }, + }, + /* 45 */ + { + { 3, 0x02, 71 }, + { 6, 0x02, 71 }, + { 10, 0x02, 71 }, + { 15, 0x02, 71 }, + { 24, 0x02, 71 }, + { 31, 0x02, 71 }, + { 41, 0x02, 71 }, + { 56, 0x03, 71 }, + { 3, 0x02, 72 }, + { 6, 0x02, 72 }, + { 10, 0x02, 72 }, + { 15, 0x02, 72 }, + { 24, 0x02, 72 }, + { 31, 0x02, 72 }, + { 41, 0x02, 72 }, + { 56, 0x03, 72 }, + }, + /* 46 */ + { + { 2, 0x02, 73 }, + { 9, 0x02, 73 }, + { 23, 0x02, 73 }, + { 40, 0x03, 73 }, + { 2, 0x02, 74 }, + { 9, 0x02, 74 }, + { 23, 0x02, 74 }, + { 40, 0x03, 74 }, + { 2, 0x02, 75 }, + { 9, 0x02, 75 }, + { 23, 0x02, 75 }, + { 40, 0x03, 75 }, + { 2, 0x02, 76 }, + { 9, 0x02, 76 }, + { 23, 0x02, 76 }, + { 40, 0x03, 76 }, + }, + /* 47 */ + { + { 3, 0x02, 73 }, + { 6, 0x02, 73 }, + { 10, 0x02, 73 }, + { 15, 0x02, 73 }, + { 24, 0x02, 73 }, + { 31, 0x02, 73 }, + { 41, 0x02, 73 }, + { 56, 0x03, 73 }, + { 3, 0x02, 74 }, + { 6, 0x02, 74 }, + { 10, 0x02, 74 }, + { 15, 0x02, 74 }, + { 24, 0x02, 74 }, + { 31, 0x02, 74 }, + { 41, 0x02, 74 }, + { 56, 0x03, 74 }, + }, + /* 48 */ + { + { 3, 0x02, 75 }, + { 6, 0x02, 75 }, + { 10, 0x02, 75 }, + { 15, 0x02, 75 }, + { 24, 0x02, 75 }, + { 31, 0x02, 75 }, + { 41, 0x02, 75 }, + { 56, 0x03, 75 }, + { 3, 0x02, 76 }, + { 6, 0x02, 76 }, + { 10, 0x02, 76 }, + { 15, 0x02, 76 }, + { 24, 0x02, 76 }, + { 31, 0x02, 76 }, + { 41, 0x02, 76 }, + { 56, 0x03, 76 }, + }, + /* 49 */ + { + { 1, 0x02, 77 }, + { 22, 0x03, 77 }, + { 1, 0x02, 78 }, + { 22, 0x03, 78 }, + { 1, 0x02, 79 }, + { 22, 0x03, 79 }, + { 1, 0x02, 80 }, + { 22, 0x03, 80 }, + { 1, 0x02, 81 }, + { 22, 0x03, 81 }, + { 1, 0x02, 82 }, + { 22, 0x03, 82 }, + { 1, 0x02, 83 }, + { 22, 0x03, 83 }, + { 1, 0x02, 84 }, + { 22, 0x03, 84 }, + }, + /* 50 */ + { + { 2, 0x02, 77 }, + { 9, 0x02, 77 }, + { 23, 0x02, 77 }, + { 40, 0x03, 77 }, + { 2, 0x02, 78 }, + { 9, 0x02, 78 }, + { 23, 0x02, 78 }, + { 40, 0x03, 78 }, + { 2, 0x02, 79 }, + { 9, 0x02, 79 }, + { 23, 0x02, 79 }, + { 40, 0x03, 79 }, + { 2, 0x02, 80 }, + { 9, 0x02, 80 }, + { 23, 0x02, 80 }, + { 40, 0x03, 80 }, + }, + /* 51 */ + { + { 3, 0x02, 77 }, + { 6, 0x02, 77 }, + { 10, 0x02, 77 }, + { 15, 0x02, 77 }, + { 24, 0x02, 77 }, + { 31, 0x02, 77 }, + { 41, 0x02, 77 }, + { 56, 0x03, 77 }, + { 3, 0x02, 78 }, + { 6, 0x02, 78 }, + { 10, 0x02, 78 }, + { 15, 0x02, 78 }, + { 24, 0x02, 78 }, + { 31, 0x02, 78 }, + { 41, 0x02, 78 }, + { 56, 0x03, 78 }, + }, + /* 52 */ + { + { 3, 0x02, 79 }, + { 6, 0x02, 79 }, + { 10, 0x02, 79 }, + { 15, 0x02, 79 }, + { 24, 0x02, 79 }, + { 31, 0x02, 79 }, + { 41, 0x02, 79 }, + { 56, 0x03, 79 }, + { 3, 0x02, 80 }, + { 6, 0x02, 80 }, + { 10, 0x02, 80 }, + { 15, 0x02, 80 }, + { 24, 0x02, 80 }, + { 31, 0x02, 80 }, + { 41, 0x02, 80 }, + { 56, 0x03, 80 }, + }, + /* 53 */ + { + { 2, 0x02, 81 }, + { 9, 0x02, 81 }, + { 23, 0x02, 81 }, + { 40, 0x03, 81 }, + { 2, 0x02, 82 }, + { 9, 0x02, 82 }, + { 23, 0x02, 82 }, + { 40, 0x03, 82 }, + { 2, 0x02, 83 }, + { 9, 0x02, 83 }, + { 23, 0x02, 83 }, + { 40, 0x03, 83 }, + { 2, 0x02, 84 }, + { 9, 0x02, 84 }, + { 23, 0x02, 84 }, + { 40, 0x03, 84 }, + }, + /* 54 */ + { + { 3, 0x02, 81 }, + { 6, 0x02, 81 }, + { 10, 0x02, 81 }, + { 15, 0x02, 81 }, + { 24, 0x02, 81 }, + { 31, 0x02, 81 }, + { 41, 0x02, 81 }, + { 56, 0x03, 81 }, + { 3, 0x02, 82 }, + { 6, 0x02, 82 }, + { 10, 0x02, 82 }, + { 15, 0x02, 82 }, + { 24, 0x02, 82 }, + { 31, 0x02, 82 }, + { 41, 0x02, 82 }, + { 56, 0x03, 82 }, + }, + /* 55 */ + { + { 3, 0x02, 83 }, + { 6, 0x02, 83 }, + { 10, 0x02, 83 }, + { 15, 0x02, 83 }, + { 24, 0x02, 83 }, + { 31, 0x02, 83 }, + { 41, 0x02, 83 }, + { 56, 0x03, 83 }, + { 3, 0x02, 84 }, + { 6, 0x02, 84 }, + { 10, 0x02, 84 }, + { 15, 0x02, 84 }, + { 24, 0x02, 84 }, + { 31, 0x02, 84 }, + { 41, 0x02, 84 }, + { 56, 0x03, 84 }, + }, + /* 56 */ + { + { 0, 0x03, 85 }, + { 0, 0x03, 86 }, + { 0, 0x03, 87 }, + { 0, 0x03, 89 }, + { 0, 0x03, 106 }, + { 0, 0x03, 107 }, + { 0, 0x03, 113 }, + { 0, 0x03, 118 }, + { 0, 0x03, 119 }, + { 0, 0x03, 120 }, + { 0, 0x03, 121 }, + { 0, 0x03, 122 }, + { 70, 0x00, 0 }, + { 71, 0x00, 0 }, + { 73, 0x00, 0 }, + { 74, 0x01, 0 }, + }, + /* 57 */ + { + { 1, 0x02, 85 }, + { 22, 0x03, 85 }, + { 1, 0x02, 86 }, + { 22, 0x03, 86 }, + { 1, 0x02, 87 }, + { 22, 0x03, 87 }, + { 1, 0x02, 89 }, + { 22, 0x03, 89 }, + { 1, 0x02, 106 }, + { 22, 0x03, 106 }, + { 1, 0x02, 107 }, + { 22, 0x03, 107 }, + { 1, 0x02, 113 }, + { 22, 0x03, 113 }, + { 1, 0x02, 118 }, + { 22, 0x03, 118 }, + }, + /* 58 */ + { + { 2, 0x02, 85 }, + { 9, 0x02, 85 }, + { 23, 0x02, 85 }, + { 40, 0x03, 85 }, + { 2, 0x02, 86 }, + { 9, 0x02, 86 }, + { 23, 0x02, 86 }, + { 40, 0x03, 86 }, + { 2, 0x02, 87 }, + { 9, 0x02, 87 }, + { 23, 0x02, 87 }, + { 40, 0x03, 87 }, + { 2, 0x02, 89 }, + { 9, 0x02, 89 }, + { 23, 0x02, 89 }, + { 40, 0x03, 89 }, + }, + /* 59 */ + { + { 3, 0x02, 85 }, + { 6, 0x02, 85 }, + { 10, 0x02, 85 }, + { 15, 0x02, 85 }, + { 24, 0x02, 85 }, + { 31, 0x02, 85 }, + { 41, 0x02, 85 }, + { 56, 0x03, 85 }, + { 3, 0x02, 86 }, + { 6, 0x02, 86 }, + { 10, 0x02, 86 }, + { 15, 0x02, 86 }, + { 24, 0x02, 86 }, + { 31, 0x02, 86 }, + { 41, 0x02, 86 }, + { 56, 0x03, 86 }, + }, + /* 60 */ + { + { 3, 0x02, 87 }, + { 6, 0x02, 87 }, + { 10, 0x02, 87 }, + { 15, 0x02, 87 }, + { 24, 0x02, 87 }, + { 31, 0x02, 87 }, + { 41, 0x02, 87 }, + { 56, 0x03, 87 }, + { 3, 0x02, 89 }, + { 6, 0x02, 89 }, + { 10, 0x02, 89 }, + { 15, 0x02, 89 }, + { 24, 0x02, 89 }, + { 31, 0x02, 89 }, + { 41, 0x02, 89 }, + { 56, 0x03, 89 }, + }, + /* 61 */ + { + { 2, 0x02, 106 }, + { 9, 0x02, 106 }, + { 23, 0x02, 106 }, + { 40, 0x03, 106 }, + { 2, 0x02, 107 }, + { 9, 0x02, 107 }, + { 23, 0x02, 107 }, + { 40, 0x03, 107 }, + { 2, 0x02, 113 }, + { 9, 0x02, 113 }, + { 23, 0x02, 113 }, + { 40, 0x03, 113 }, + { 2, 0x02, 118 }, + { 9, 0x02, 118 }, + { 23, 0x02, 118 }, + { 40, 0x03, 118 }, + }, + /* 62 */ + { + { 3, 0x02, 106 }, + { 6, 0x02, 106 }, + { 10, 0x02, 106 }, + { 15, 0x02, 106 }, + { 24, 0x02, 106 }, + { 31, 0x02, 106 }, + { 41, 0x02, 106 }, + { 56, 0x03, 106 }, + { 3, 0x02, 107 }, + { 6, 0x02, 107 }, + { 10, 0x02, 107 }, + { 15, 0x02, 107 }, + { 24, 0x02, 107 }, + { 31, 0x02, 107 }, + { 41, 0x02, 107 }, + { 56, 0x03, 107 }, + }, + /* 63 */ + { + { 3, 0x02, 113 }, + { 6, 0x02, 113 }, + { 10, 0x02, 113 }, + { 15, 0x02, 113 }, + { 24, 0x02, 113 }, + { 31, 0x02, 113 }, + { 41, 0x02, 113 }, + { 56, 0x03, 113 }, + { 3, 0x02, 118 }, + { 6, 0x02, 118 }, + { 10, 0x02, 118 }, + { 15, 0x02, 118 }, + { 24, 0x02, 118 }, + { 31, 0x02, 118 }, + { 41, 0x02, 118 }, + { 56, 0x03, 118 }, + }, + /* 64 */ + { + { 1, 0x02, 119 }, + { 22, 0x03, 119 }, + { 1, 0x02, 120 }, + { 22, 0x03, 120 }, + { 1, 0x02, 121 }, + { 22, 0x03, 121 }, + { 1, 0x02, 122 }, + { 22, 0x03, 122 }, + { 0, 0x03, 38 }, + { 0, 0x03, 42 }, + { 0, 0x03, 44 }, + { 0, 0x03, 59 }, + { 0, 0x03, 88 }, + { 0, 0x03, 90 }, + { 75, 0x00, 0 }, + { 78, 0x00, 0 }, + }, + /* 65 */ + { + { 2, 0x02, 119 }, + { 9, 0x02, 119 }, + { 23, 0x02, 119 }, + { 40, 0x03, 119 }, + { 2, 0x02, 120 }, + { 9, 0x02, 120 }, + { 23, 0x02, 120 }, + { 40, 0x03, 120 }, + { 2, 0x02, 121 }, + { 9, 0x02, 121 }, + { 23, 0x02, 121 }, + { 40, 0x03, 121 }, + { 2, 0x02, 122 }, + { 9, 0x02, 122 }, + { 23, 0x02, 122 }, + { 40, 0x03, 122 }, + }, + /* 66 */ + { + { 3, 0x02, 119 }, + { 6, 0x02, 119 }, + { 10, 0x02, 119 }, + { 15, 0x02, 119 }, + { 24, 0x02, 119 }, + { 31, 0x02, 119 }, + { 41, 0x02, 119 }, + { 56, 0x03, 119 }, + { 3, 0x02, 120 }, + { 6, 0x02, 120 }, + { 10, 0x02, 120 }, + { 15, 0x02, 120 }, + { 24, 0x02, 120 }, + { 31, 0x02, 120 }, + { 41, 0x02, 120 }, + { 56, 0x03, 120 }, + }, + /* 67 */ + { + { 3, 0x02, 121 }, + { 6, 0x02, 121 }, + { 10, 0x02, 121 }, + { 15, 0x02, 121 }, + { 24, 0x02, 121 }, + { 31, 0x02, 121 }, + { 41, 0x02, 121 }, + { 56, 0x03, 121 }, + { 3, 0x02, 122 }, + { 6, 0x02, 122 }, + { 10, 0x02, 122 }, + { 15, 0x02, 122 }, + { 24, 0x02, 122 }, + { 31, 0x02, 122 }, + { 41, 0x02, 122 }, + { 56, 0x03, 122 }, + }, + /* 68 */ + { + { 1, 0x02, 38 }, + { 22, 0x03, 38 }, + { 1, 0x02, 42 }, + { 22, 0x03, 42 }, + { 1, 0x02, 44 }, + { 22, 0x03, 44 }, + { 1, 0x02, 59 }, + { 22, 0x03, 59 }, + { 1, 0x02, 88 }, + { 22, 0x03, 88 }, + { 1, 0x02, 90 }, + { 22, 0x03, 90 }, + { 76, 0x00, 0 }, + { 77, 0x00, 0 }, + { 79, 0x00, 0 }, + { 81, 0x00, 0 }, + }, + /* 69 */ + { + { 2, 0x02, 38 }, + { 9, 0x02, 38 }, + { 23, 0x02, 38 }, + { 40, 0x03, 38 }, + { 2, 0x02, 42 }, + { 9, 0x02, 42 }, + { 23, 0x02, 42 }, + { 40, 0x03, 42 }, + { 2, 0x02, 44 }, + { 9, 0x02, 44 }, + { 23, 0x02, 44 }, + { 40, 0x03, 44 }, + { 2, 0x02, 59 }, + { 9, 0x02, 59 }, + { 23, 0x02, 59 }, + { 40, 0x03, 59 }, + }, + /* 70 */ + { + { 3, 0x02, 38 }, + { 6, 0x02, 38 }, + { 10, 0x02, 38 }, + { 15, 0x02, 38 }, + { 24, 0x02, 38 }, + { 31, 0x02, 38 }, + { 41, 0x02, 38 }, + { 56, 0x03, 38 }, + { 3, 0x02, 42 }, + { 6, 0x02, 42 }, + { 10, 0x02, 42 }, + { 15, 0x02, 42 }, + { 24, 0x02, 42 }, + { 31, 0x02, 42 }, + { 41, 0x02, 42 }, + { 56, 0x03, 42 }, + }, + /* 71 */ + { + { 3, 0x02, 44 }, + { 6, 0x02, 44 }, + { 10, 0x02, 44 }, + { 15, 0x02, 44 }, + { 24, 0x02, 44 }, + { 31, 0x02, 44 }, + { 41, 0x02, 44 }, + { 56, 0x03, 44 }, + { 3, 0x02, 59 }, + { 6, 0x02, 59 }, + { 10, 0x02, 59 }, + { 15, 0x02, 59 }, + { 24, 0x02, 59 }, + { 31, 0x02, 59 }, + { 41, 0x02, 59 }, + { 56, 0x03, 59 }, + }, + /* 72 */ + { + { 2, 0x02, 88 }, + { 9, 0x02, 88 }, + { 23, 0x02, 88 }, + { 40, 0x03, 88 }, + { 2, 0x02, 90 }, + { 9, 0x02, 90 }, + { 23, 0x02, 90 }, + { 40, 0x03, 90 }, + { 0, 0x03, 33 }, + { 0, 0x03, 34 }, + { 0, 0x03, 40 }, + { 0, 0x03, 41 }, + { 0, 0x03, 63 }, + { 80, 0x00, 0 }, + { 82, 0x00, 0 }, + { 84, 0x00, 0 }, + }, + /* 73 */ + { + { 3, 0x02, 88 }, + { 6, 0x02, 88 }, + { 10, 0x02, 88 }, + { 15, 0x02, 88 }, + { 24, 0x02, 88 }, + { 31, 0x02, 88 }, + { 41, 0x02, 88 }, + { 56, 0x03, 88 }, + { 3, 0x02, 90 }, + { 6, 0x02, 90 }, + { 10, 0x02, 90 }, + { 15, 0x02, 90 }, + { 24, 0x02, 90 }, + { 31, 0x02, 90 }, + { 41, 0x02, 90 }, + { 56, 0x03, 90 }, + }, + /* 74 */ + { + { 1, 0x02, 33 }, + { 22, 0x03, 33 }, + { 1, 0x02, 34 }, + { 22, 0x03, 34 }, + { 1, 0x02, 40 }, + { 22, 0x03, 40 }, + { 1, 0x02, 41 }, + { 22, 0x03, 41 }, + { 1, 0x02, 63 }, + { 22, 0x03, 63 }, + { 0, 0x03, 39 }, + { 0, 0x03, 43 }, + { 0, 0x03, 124 }, + { 83, 0x00, 0 }, + { 85, 0x00, 0 }, + { 88, 0x00, 0 }, + }, + /* 75 */ + { + { 2, 0x02, 33 }, + { 9, 0x02, 33 }, + { 23, 0x02, 33 }, + { 40, 0x03, 33 }, + { 2, 0x02, 34 }, + { 9, 0x02, 34 }, + { 23, 0x02, 34 }, + { 40, 0x03, 34 }, + { 2, 0x02, 40 }, + { 9, 0x02, 40 }, + { 23, 0x02, 40 }, + { 40, 0x03, 40 }, + { 2, 0x02, 41 }, + { 9, 0x02, 41 }, + { 23, 0x02, 41 }, + { 40, 0x03, 41 }, + }, + /* 76 */ + { + { 3, 0x02, 33 }, + { 6, 0x02, 33 }, + { 10, 0x02, 33 }, + { 15, 0x02, 33 }, + { 24, 0x02, 33 }, + { 31, 0x02, 33 }, + { 41, 0x02, 33 }, + { 56, 0x03, 33 }, + { 3, 0x02, 34 }, + { 6, 0x02, 34 }, + { 10, 0x02, 34 }, + { 15, 0x02, 34 }, + { 24, 0x02, 34 }, + { 31, 0x02, 34 }, + { 41, 0x02, 34 }, + { 56, 0x03, 34 }, + }, + /* 77 */ + { + { 3, 0x02, 40 }, + { 6, 0x02, 40 }, + { 10, 0x02, 40 }, + { 15, 0x02, 40 }, + { 24, 0x02, 40 }, + { 31, 0x02, 40 }, + { 41, 0x02, 40 }, + { 56, 0x03, 40 }, + { 3, 0x02, 41 }, + { 6, 0x02, 41 }, + { 10, 0x02, 41 }, + { 15, 0x02, 41 }, + { 24, 0x02, 41 }, + { 31, 0x02, 41 }, + { 41, 0x02, 41 }, + { 56, 0x03, 41 }, + }, + /* 78 */ + { + { 2, 0x02, 63 }, + { 9, 0x02, 63 }, + { 23, 0x02, 63 }, + { 40, 0x03, 63 }, + { 1, 0x02, 39 }, + { 22, 0x03, 39 }, + { 1, 0x02, 43 }, + { 22, 0x03, 43 }, + { 1, 0x02, 124 }, + { 22, 0x03, 124 }, + { 0, 0x03, 35 }, + { 0, 0x03, 62 }, + { 86, 0x00, 0 }, + { 87, 0x00, 0 }, + { 89, 0x00, 0 }, + { 90, 0x00, 0 }, + }, + /* 79 */ + { + { 3, 0x02, 63 }, + { 6, 0x02, 63 }, + { 10, 0x02, 63 }, + { 15, 0x02, 63 }, + { 24, 0x02, 63 }, + { 31, 0x02, 63 }, + { 41, 0x02, 63 }, + { 56, 0x03, 63 }, + { 2, 0x02, 39 }, + { 9, 0x02, 39 }, + { 23, 0x02, 39 }, + { 40, 0x03, 39 }, + { 2, 0x02, 43 }, + { 9, 0x02, 43 }, + { 23, 0x02, 43 }, + { 40, 0x03, 43 }, + }, + /* 80 */ + { + { 3, 0x02, 39 }, + { 6, 0x02, 39 }, + { 10, 0x02, 39 }, + { 15, 0x02, 39 }, + { 24, 0x02, 39 }, + { 31, 0x02, 39 }, + { 41, 0x02, 39 }, + { 56, 0x03, 39 }, + { 3, 0x02, 43 }, + { 6, 0x02, 43 }, + { 10, 0x02, 43 }, + { 15, 0x02, 43 }, + { 24, 0x02, 43 }, + { 31, 0x02, 43 }, + { 41, 0x02, 43 }, + { 56, 0x03, 43 }, + }, + /* 81 */ + { + { 2, 0x02, 124 }, + { 9, 0x02, 124 }, + { 23, 0x02, 124 }, + { 40, 0x03, 124 }, + { 1, 0x02, 35 }, + { 22, 0x03, 35 }, + { 1, 0x02, 62 }, + { 22, 0x03, 62 }, + { 0, 0x03, 0 }, + { 0, 0x03, 36 }, + { 0, 0x03, 64 }, + { 0, 0x03, 91 }, + { 0, 0x03, 93 }, + { 0, 0x03, 126 }, + { 91, 0x00, 0 }, + { 92, 0x00, 0 }, + }, + /* 82 */ + { + { 3, 0x02, 124 }, + { 6, 0x02, 124 }, + { 10, 0x02, 124 }, + { 15, 0x02, 124 }, + { 24, 0x02, 124 }, + { 31, 0x02, 124 }, + { 41, 0x02, 124 }, + { 56, 0x03, 124 }, + { 2, 0x02, 35 }, + { 9, 0x02, 35 }, + { 23, 0x02, 35 }, + { 40, 0x03, 35 }, + { 2, 0x02, 62 }, + { 9, 0x02, 62 }, + { 23, 0x02, 62 }, + { 40, 0x03, 62 }, + }, + /* 83 */ + { + { 3, 0x02, 35 }, + { 6, 0x02, 35 }, + { 10, 0x02, 35 }, + { 15, 0x02, 35 }, + { 24, 0x02, 35 }, + { 31, 0x02, 35 }, + { 41, 0x02, 35 }, + { 56, 0x03, 35 }, + { 3, 0x02, 62 }, + { 6, 0x02, 62 }, + { 10, 0x02, 62 }, + { 15, 0x02, 62 }, + { 24, 0x02, 62 }, + { 31, 0x02, 62 }, + { 41, 0x02, 62 }, + { 56, 0x03, 62 }, + }, + /* 84 */ + { + { 1, 0x02, 0 }, + { 22, 0x03, 0 }, + { 1, 0x02, 36 }, + { 22, 0x03, 36 }, + { 1, 0x02, 64 }, + { 22, 0x03, 64 }, + { 1, 0x02, 91 }, + { 22, 0x03, 91 }, + { 1, 0x02, 93 }, + { 22, 0x03, 93 }, + { 1, 0x02, 126 }, + { 22, 0x03, 126 }, + { 0, 0x03, 94 }, + { 0, 0x03, 125 }, + { 93, 0x00, 0 }, + { 94, 0x00, 0 }, + }, + /* 85 */ + { + { 2, 0x02, 0 }, + { 9, 0x02, 0 }, + { 23, 0x02, 0 }, + { 40, 0x03, 0 }, + { 2, 0x02, 36 }, + { 9, 0x02, 36 }, + { 23, 0x02, 36 }, + { 40, 0x03, 36 }, + { 2, 0x02, 64 }, + { 9, 0x02, 64 }, + { 23, 0x02, 64 }, + { 40, 0x03, 64 }, + { 2, 0x02, 91 }, + { 9, 0x02, 91 }, + { 23, 0x02, 91 }, + { 40, 0x03, 91 }, + }, + /* 86 */ + { + { 3, 0x02, 0 }, + { 6, 0x02, 0 }, + { 10, 0x02, 0 }, + { 15, 0x02, 0 }, + { 24, 0x02, 0 }, + { 31, 0x02, 0 }, + { 41, 0x02, 0 }, + { 56, 0x03, 0 }, + { 3, 0x02, 36 }, + { 6, 0x02, 36 }, + { 10, 0x02, 36 }, + { 15, 0x02, 36 }, + { 24, 0x02, 36 }, + { 31, 0x02, 36 }, + { 41, 0x02, 36 }, + { 56, 0x03, 36 }, + }, + /* 87 */ + { + { 3, 0x02, 64 }, + { 6, 0x02, 64 }, + { 10, 0x02, 64 }, + { 15, 0x02, 64 }, + { 24, 0x02, 64 }, + { 31, 0x02, 64 }, + { 41, 0x02, 64 }, + { 56, 0x03, 64 }, + { 3, 0x02, 91 }, + { 6, 0x02, 91 }, + { 10, 0x02, 91 }, + { 15, 0x02, 91 }, + { 24, 0x02, 91 }, + { 31, 0x02, 91 }, + { 41, 0x02, 91 }, + { 56, 0x03, 91 }, + }, + /* 88 */ + { + { 2, 0x02, 93 }, + { 9, 0x02, 93 }, + { 23, 0x02, 93 }, + { 40, 0x03, 93 }, + { 2, 0x02, 126 }, + { 9, 0x02, 126 }, + { 23, 0x02, 126 }, + { 40, 0x03, 126 }, + { 1, 0x02, 94 }, + { 22, 0x03, 94 }, + { 1, 0x02, 125 }, + { 22, 0x03, 125 }, + { 0, 0x03, 60 }, + { 0, 0x03, 96 }, + { 0, 0x03, 123 }, + { 95, 0x00, 0 }, + }, + /* 89 */ + { + { 3, 0x02, 93 }, + { 6, 0x02, 93 }, + { 10, 0x02, 93 }, + { 15, 0x02, 93 }, + { 24, 0x02, 93 }, + { 31, 0x02, 93 }, + { 41, 0x02, 93 }, + { 56, 0x03, 93 }, + { 3, 0x02, 126 }, + { 6, 0x02, 126 }, + { 10, 0x02, 126 }, + { 15, 0x02, 126 }, + { 24, 0x02, 126 }, + { 31, 0x02, 126 }, + { 41, 0x02, 126 }, + { 56, 0x03, 126 }, + }, + /* 90 */ + { + { 2, 0x02, 94 }, + { 9, 0x02, 94 }, + { 23, 0x02, 94 }, + { 40, 0x03, 94 }, + { 2, 0x02, 125 }, + { 9, 0x02, 125 }, + { 23, 0x02, 125 }, + { 40, 0x03, 125 }, + { 1, 0x02, 60 }, + { 22, 0x03, 60 }, + { 1, 0x02, 96 }, + { 22, 0x03, 96 }, + { 1, 0x02, 123 }, + { 22, 0x03, 123 }, + { 96, 0x00, 0 }, + { 110, 0x00, 0 }, + }, + /* 91 */ + { + { 3, 0x02, 94 }, + { 6, 0x02, 94 }, + { 10, 0x02, 94 }, + { 15, 0x02, 94 }, + { 24, 0x02, 94 }, + { 31, 0x02, 94 }, + { 41, 0x02, 94 }, + { 56, 0x03, 94 }, + { 3, 0x02, 125 }, + { 6, 0x02, 125 }, + { 10, 0x02, 125 }, + { 15, 0x02, 125 }, + { 24, 0x02, 125 }, + { 31, 0x02, 125 }, + { 41, 0x02, 125 }, + { 56, 0x03, 125 }, + }, + /* 92 */ + { + { 2, 0x02, 60 }, + { 9, 0x02, 60 }, + { 23, 0x02, 60 }, + { 40, 0x03, 60 }, + { 2, 0x02, 96 }, + { 9, 0x02, 96 }, + { 23, 0x02, 96 }, + { 40, 0x03, 96 }, + { 2, 0x02, 123 }, + { 9, 0x02, 123 }, + { 23, 0x02, 123 }, + { 40, 0x03, 123 }, + { 97, 0x00, 0 }, + { 101, 0x00, 0 }, + { 111, 0x00, 0 }, + { 133, 0x00, 0 }, + }, + /* 93 */ + { + { 3, 0x02, 60 }, + { 6, 0x02, 60 }, + { 10, 0x02, 60 }, + { 15, 0x02, 60 }, + { 24, 0x02, 60 }, + { 31, 0x02, 60 }, + { 41, 0x02, 60 }, + { 56, 0x03, 60 }, + { 3, 0x02, 96 }, + { 6, 0x02, 96 }, + { 10, 0x02, 96 }, + { 15, 0x02, 96 }, + { 24, 0x02, 96 }, + { 31, 0x02, 96 }, + { 41, 0x02, 96 }, + { 56, 0x03, 96 }, + }, + /* 94 */ + { + { 3, 0x02, 123 }, + { 6, 0x02, 123 }, + { 10, 0x02, 123 }, + { 15, 0x02, 123 }, + { 24, 0x02, 123 }, + { 31, 0x02, 123 }, + { 41, 0x02, 123 }, + { 56, 0x03, 123 }, + { 98, 0x00, 0 }, + { 99, 0x00, 0 }, + { 102, 0x00, 0 }, + { 105, 0x00, 0 }, + { 112, 0x00, 0 }, + { 119, 0x00, 0 }, + { 134, 0x00, 0 }, + { 153, 0x00, 0 }, + }, + /* 95 */ + { + { 0, 0x03, 92 }, + { 0, 0x03, 195 }, + { 0, 0x03, 208 }, + { 100, 0x00, 0 }, + { 103, 0x00, 0 }, + { 104, 0x00, 0 }, + { 106, 0x00, 0 }, + { 107, 0x00, 0 }, + { 113, 0x00, 0 }, + { 116, 0x00, 0 }, + { 120, 0x00, 0 }, + { 126, 0x00, 0 }, + { 135, 0x00, 0 }, + { 142, 0x00, 0 }, + { 154, 0x00, 0 }, + { 169, 0x00, 0 }, + }, + /* 96 */ + { + { 1, 0x02, 92 }, + { 22, 0x03, 92 }, + { 1, 0x02, 195 }, + { 22, 0x03, 195 }, + { 1, 0x02, 208 }, + { 22, 0x03, 208 }, + { 0, 0x03, 128 }, + { 0, 0x03, 130 }, + { 0, 0x03, 131 }, + { 0, 0x03, 162 }, + { 0, 0x03, 184 }, + { 0, 0x03, 194 }, + { 0, 0x03, 224 }, + { 0, 0x03, 226 }, + { 108, 0x00, 0 }, + { 109, 0x00, 0 }, + }, + /* 97 */ + { + { 2, 0x02, 92 }, + { 9, 0x02, 92 }, + { 23, 0x02, 92 }, + { 40, 0x03, 92 }, + { 2, 0x02, 195 }, + { 9, 0x02, 195 }, + { 23, 0x02, 195 }, + { 40, 0x03, 195 }, + { 2, 0x02, 208 }, + { 9, 0x02, 208 }, + { 23, 0x02, 208 }, + { 40, 0x03, 208 }, + { 1, 0x02, 128 }, + { 22, 0x03, 128 }, + { 1, 0x02, 130 }, + { 22, 0x03, 130 }, + }, + /* 98 */ + { + { 3, 0x02, 92 }, + { 6, 0x02, 92 }, + { 10, 0x02, 92 }, + { 15, 0x02, 92 }, + { 24, 0x02, 92 }, + { 31, 0x02, 92 }, + { 41, 0x02, 92 }, + { 56, 0x03, 92 }, + { 3, 0x02, 195 }, + { 6, 0x02, 195 }, + { 10, 0x02, 195 }, + { 15, 0x02, 195 }, + { 24, 0x02, 195 }, + { 31, 0x02, 195 }, + { 41, 0x02, 195 }, + { 56, 0x03, 195 }, + }, + /* 99 */ + { + { 3, 0x02, 208 }, + { 6, 0x02, 208 }, + { 10, 0x02, 208 }, + { 15, 0x02, 208 }, + { 24, 0x02, 208 }, + { 31, 0x02, 208 }, + { 41, 0x02, 208 }, + { 56, 0x03, 208 }, + { 2, 0x02, 128 }, + { 9, 0x02, 128 }, + { 23, 0x02, 128 }, + { 40, 0x03, 128 }, + { 2, 0x02, 130 }, + { 9, 0x02, 130 }, + { 23, 0x02, 130 }, + { 40, 0x03, 130 }, + }, + /* 100 */ + { + { 3, 0x02, 128 }, + { 6, 0x02, 128 }, + { 10, 0x02, 128 }, + { 15, 0x02, 128 }, + { 24, 0x02, 128 }, + { 31, 0x02, 128 }, + { 41, 0x02, 128 }, + { 56, 0x03, 128 }, + { 3, 0x02, 130 }, + { 6, 0x02, 130 }, + { 10, 0x02, 130 }, + { 15, 0x02, 130 }, + { 24, 0x02, 130 }, + { 31, 0x02, 130 }, + { 41, 0x02, 130 }, + { 56, 0x03, 130 }, + }, + /* 101 */ + { + { 1, 0x02, 131 }, + { 22, 0x03, 131 }, + { 1, 0x02, 162 }, + { 22, 0x03, 162 }, + { 1, 0x02, 184 }, + { 22, 0x03, 184 }, + { 1, 0x02, 194 }, + { 22, 0x03, 194 }, + { 1, 0x02, 224 }, + { 22, 0x03, 224 }, + { 1, 0x02, 226 }, + { 22, 0x03, 226 }, + { 0, 0x03, 153 }, + { 0, 0x03, 161 }, + { 0, 0x03, 167 }, + { 0, 0x03, 172 }, + }, + /* 102 */ + { + { 2, 0x02, 131 }, + { 9, 0x02, 131 }, + { 23, 0x02, 131 }, + { 40, 0x03, 131 }, + { 2, 0x02, 162 }, + { 9, 0x02, 162 }, + { 23, 0x02, 162 }, + { 40, 0x03, 162 }, + { 2, 0x02, 184 }, + { 9, 0x02, 184 }, + { 23, 0x02, 184 }, + { 40, 0x03, 184 }, + { 2, 0x02, 194 }, + { 9, 0x02, 194 }, + { 23, 0x02, 194 }, + { 40, 0x03, 194 }, + }, + /* 103 */ + { + { 3, 0x02, 131 }, + { 6, 0x02, 131 }, + { 10, 0x02, 131 }, + { 15, 0x02, 131 }, + { 24, 0x02, 131 }, + { 31, 0x02, 131 }, + { 41, 0x02, 131 }, + { 56, 0x03, 131 }, + { 3, 0x02, 162 }, + { 6, 0x02, 162 }, + { 10, 0x02, 162 }, + { 15, 0x02, 162 }, + { 24, 0x02, 162 }, + { 31, 0x02, 162 }, + { 41, 0x02, 162 }, + { 56, 0x03, 162 }, + }, + /* 104 */ + { + { 3, 0x02, 184 }, + { 6, 0x02, 184 }, + { 10, 0x02, 184 }, + { 15, 0x02, 184 }, + { 24, 0x02, 184 }, + { 31, 0x02, 184 }, + { 41, 0x02, 184 }, + { 56, 0x03, 184 }, + { 3, 0x02, 194 }, + { 6, 0x02, 194 }, + { 10, 0x02, 194 }, + { 15, 0x02, 194 }, + { 24, 0x02, 194 }, + { 31, 0x02, 194 }, + { 41, 0x02, 194 }, + { 56, 0x03, 194 }, + }, + /* 105 */ + { + { 2, 0x02, 224 }, + { 9, 0x02, 224 }, + { 23, 0x02, 224 }, + { 40, 0x03, 224 }, + { 2, 0x02, 226 }, + { 9, 0x02, 226 }, + { 23, 0x02, 226 }, + { 40, 0x03, 226 }, + { 1, 0x02, 153 }, + { 22, 0x03, 153 }, + { 1, 0x02, 161 }, + { 22, 0x03, 161 }, + { 1, 0x02, 167 }, + { 22, 0x03, 167 }, + { 1, 0x02, 172 }, + { 22, 0x03, 172 }, + }, + /* 106 */ + { + { 3, 0x02, 224 }, + { 6, 0x02, 224 }, + { 10, 0x02, 224 }, + { 15, 0x02, 224 }, + { 24, 0x02, 224 }, + { 31, 0x02, 224 }, + { 41, 0x02, 224 }, + { 56, 0x03, 224 }, + { 3, 0x02, 226 }, + { 6, 0x02, 226 }, + { 10, 0x02, 226 }, + { 15, 0x02, 226 }, + { 24, 0x02, 226 }, + { 31, 0x02, 226 }, + { 41, 0x02, 226 }, + { 56, 0x03, 226 }, + }, + /* 107 */ + { + { 2, 0x02, 153 }, + { 9, 0x02, 153 }, + { 23, 0x02, 153 }, + { 40, 0x03, 153 }, + { 2, 0x02, 161 }, + { 9, 0x02, 161 }, + { 23, 0x02, 161 }, + { 40, 0x03, 161 }, + { 2, 0x02, 167 }, + { 9, 0x02, 167 }, + { 23, 0x02, 167 }, + { 40, 0x03, 167 }, + { 2, 0x02, 172 }, + { 9, 0x02, 172 }, + { 23, 0x02, 172 }, + { 40, 0x03, 172 }, + }, + /* 108 */ + { + { 3, 0x02, 153 }, + { 6, 0x02, 153 }, + { 10, 0x02, 153 }, + { 15, 0x02, 153 }, + { 24, 0x02, 153 }, + { 31, 0x02, 153 }, + { 41, 0x02, 153 }, + { 56, 0x03, 153 }, + { 3, 0x02, 161 }, + { 6, 0x02, 161 }, + { 10, 0x02, 161 }, + { 15, 0x02, 161 }, + { 24, 0x02, 161 }, + { 31, 0x02, 161 }, + { 41, 0x02, 161 }, + { 56, 0x03, 161 }, + }, + /* 109 */ + { + { 3, 0x02, 167 }, + { 6, 0x02, 167 }, + { 10, 0x02, 167 }, + { 15, 0x02, 167 }, + { 24, 0x02, 167 }, + { 31, 0x02, 167 }, + { 41, 0x02, 167 }, + { 56, 0x03, 167 }, + { 3, 0x02, 172 }, + { 6, 0x02, 172 }, + { 10, 0x02, 172 }, + { 15, 0x02, 172 }, + { 24, 0x02, 172 }, + { 31, 0x02, 172 }, + { 41, 0x02, 172 }, + { 56, 0x03, 172 }, + }, + /* 110 */ + { + { 114, 0x00, 0 }, + { 115, 0x00, 0 }, + { 117, 0x00, 0 }, + { 118, 0x00, 0 }, + { 121, 0x00, 0 }, + { 123, 0x00, 0 }, + { 127, 0x00, 0 }, + { 130, 0x00, 0 }, + { 136, 0x00, 0 }, + { 139, 0x00, 0 }, + { 143, 0x00, 0 }, + { 146, 0x00, 0 }, + { 155, 0x00, 0 }, + { 162, 0x00, 0 }, + { 170, 0x00, 0 }, + { 180, 0x00, 0 }, + }, + /* 111 */ + { + { 0, 0x03, 176 }, + { 0, 0x03, 177 }, + { 0, 0x03, 179 }, + { 0, 0x03, 209 }, + { 0, 0x03, 216 }, + { 0, 0x03, 217 }, + { 0, 0x03, 227 }, + { 0, 0x03, 229 }, + { 0, 0x03, 230 }, + { 122, 0x00, 0 }, + { 124, 0x00, 0 }, + { 125, 0x00, 0 }, + { 128, 0x00, 0 }, + { 129, 0x00, 0 }, + { 131, 0x00, 0 }, + { 132, 0x00, 0 }, + }, + /* 112 */ + { + { 1, 0x02, 176 }, + { 22, 0x03, 176 }, + { 1, 0x02, 177 }, + { 22, 0x03, 177 }, + { 1, 0x02, 179 }, + { 22, 0x03, 179 }, + { 1, 0x02, 209 }, + { 22, 0x03, 209 }, + { 1, 0x02, 216 }, + { 22, 0x03, 216 }, + { 1, 0x02, 217 }, + { 22, 0x03, 217 }, + { 1, 0x02, 227 }, + { 22, 0x03, 227 }, + { 1, 0x02, 229 }, + { 22, 0x03, 229 }, + }, + /* 113 */ + { + { 2, 0x02, 176 }, + { 9, 0x02, 176 }, + { 23, 0x02, 176 }, + { 40, 0x03, 176 }, + { 2, 0x02, 177 }, + { 9, 0x02, 177 }, + { 23, 0x02, 177 }, + { 40, 0x03, 177 }, + { 2, 0x02, 179 }, + { 9, 0x02, 179 }, + { 23, 0x02, 179 }, + { 40, 0x03, 179 }, + { 2, 0x02, 209 }, + { 9, 0x02, 209 }, + { 23, 0x02, 209 }, + { 40, 0x03, 209 }, + }, + /* 114 */ + { + { 3, 0x02, 176 }, + { 6, 0x02, 176 }, + { 10, 0x02, 176 }, + { 15, 0x02, 176 }, + { 24, 0x02, 176 }, + { 31, 0x02, 176 }, + { 41, 0x02, 176 }, + { 56, 0x03, 176 }, + { 3, 0x02, 177 }, + { 6, 0x02, 177 }, + { 10, 0x02, 177 }, + { 15, 0x02, 177 }, + { 24, 0x02, 177 }, + { 31, 0x02, 177 }, + { 41, 0x02, 177 }, + { 56, 0x03, 177 }, + }, + /* 115 */ + { + { 3, 0x02, 179 }, + { 6, 0x02, 179 }, + { 10, 0x02, 179 }, + { 15, 0x02, 179 }, + { 24, 0x02, 179 }, + { 31, 0x02, 179 }, + { 41, 0x02, 179 }, + { 56, 0x03, 179 }, + { 3, 0x02, 209 }, + { 6, 0x02, 209 }, + { 10, 0x02, 209 }, + { 15, 0x02, 209 }, + { 24, 0x02, 209 }, + { 31, 0x02, 209 }, + { 41, 0x02, 209 }, + { 56, 0x03, 209 }, + }, + /* 116 */ + { + { 2, 0x02, 216 }, + { 9, 0x02, 216 }, + { 23, 0x02, 216 }, + { 40, 0x03, 216 }, + { 2, 0x02, 217 }, + { 9, 0x02, 217 }, + { 23, 0x02, 217 }, + { 40, 0x03, 217 }, + { 2, 0x02, 227 }, + { 9, 0x02, 227 }, + { 23, 0x02, 227 }, + { 40, 0x03, 227 }, + { 2, 0x02, 229 }, + { 9, 0x02, 229 }, + { 23, 0x02, 229 }, + { 40, 0x03, 229 }, + }, + /* 117 */ + { + { 3, 0x02, 216 }, + { 6, 0x02, 216 }, + { 10, 0x02, 216 }, + { 15, 0x02, 216 }, + { 24, 0x02, 216 }, + { 31, 0x02, 216 }, + { 41, 0x02, 216 }, + { 56, 0x03, 216 }, + { 3, 0x02, 217 }, + { 6, 0x02, 217 }, + { 10, 0x02, 217 }, + { 15, 0x02, 217 }, + { 24, 0x02, 217 }, + { 31, 0x02, 217 }, + { 41, 0x02, 217 }, + { 56, 0x03, 217 }, + }, + /* 118 */ + { + { 3, 0x02, 227 }, + { 6, 0x02, 227 }, + { 10, 0x02, 227 }, + { 15, 0x02, 227 }, + { 24, 0x02, 227 }, + { 31, 0x02, 227 }, + { 41, 0x02, 227 }, + { 56, 0x03, 227 }, + { 3, 0x02, 229 }, + { 6, 0x02, 229 }, + { 10, 0x02, 229 }, + { 15, 0x02, 229 }, + { 24, 0x02, 229 }, + { 31, 0x02, 229 }, + { 41, 0x02, 229 }, + { 56, 0x03, 229 }, + }, + /* 119 */ + { + { 1, 0x02, 230 }, + { 22, 0x03, 230 }, + { 0, 0x03, 129 }, + { 0, 0x03, 132 }, + { 0, 0x03, 133 }, + { 0, 0x03, 134 }, + { 0, 0x03, 136 }, + { 0, 0x03, 146 }, + { 0, 0x03, 154 }, + { 0, 0x03, 156 }, + { 0, 0x03, 160 }, + { 0, 0x03, 163 }, + { 0, 0x03, 164 }, + { 0, 0x03, 169 }, + { 0, 0x03, 170 }, + { 0, 0x03, 173 }, + }, + /* 120 */ + { + { 2, 0x02, 230 }, + { 9, 0x02, 230 }, + { 23, 0x02, 230 }, + { 40, 0x03, 230 }, + { 1, 0x02, 129 }, + { 22, 0x03, 129 }, + { 1, 0x02, 132 }, + { 22, 0x03, 132 }, + { 1, 0x02, 133 }, + { 22, 0x03, 133 }, + { 1, 0x02, 134 }, + { 22, 0x03, 134 }, + { 1, 0x02, 136 }, + { 22, 0x03, 136 }, + { 1, 0x02, 146 }, + { 22, 0x03, 146 }, + }, + /* 121 */ + { + { 3, 0x02, 230 }, + { 6, 0x02, 230 }, + { 10, 0x02, 230 }, + { 15, 0x02, 230 }, + { 24, 0x02, 230 }, + { 31, 0x02, 230 }, + { 41, 0x02, 230 }, + { 56, 0x03, 230 }, + { 2, 0x02, 129 }, + { 9, 0x02, 129 }, + { 23, 0x02, 129 }, + { 40, 0x03, 129 }, + { 2, 0x02, 132 }, + { 9, 0x02, 132 }, + { 23, 0x02, 132 }, + { 40, 0x03, 132 }, + }, + /* 122 */ + { + { 3, 0x02, 129 }, + { 6, 0x02, 129 }, + { 10, 0x02, 129 }, + { 15, 0x02, 129 }, + { 24, 0x02, 129 }, + { 31, 0x02, 129 }, + { 41, 0x02, 129 }, + { 56, 0x03, 129 }, + { 3, 0x02, 132 }, + { 6, 0x02, 132 }, + { 10, 0x02, 132 }, + { 15, 0x02, 132 }, + { 24, 0x02, 132 }, + { 31, 0x02, 132 }, + { 41, 0x02, 132 }, + { 56, 0x03, 132 }, + }, + /* 123 */ + { + { 2, 0x02, 133 }, + { 9, 0x02, 133 }, + { 23, 0x02, 133 }, + { 40, 0x03, 133 }, + { 2, 0x02, 134 }, + { 9, 0x02, 134 }, + { 23, 0x02, 134 }, + { 40, 0x03, 134 }, + { 2, 0x02, 136 }, + { 9, 0x02, 136 }, + { 23, 0x02, 136 }, + { 40, 0x03, 136 }, + { 2, 0x02, 146 }, + { 9, 0x02, 146 }, + { 23, 0x02, 146 }, + { 40, 0x03, 146 }, + }, + /* 124 */ + { + { 3, 0x02, 133 }, + { 6, 0x02, 133 }, + { 10, 0x02, 133 }, + { 15, 0x02, 133 }, + { 24, 0x02, 133 }, + { 31, 0x02, 133 }, + { 41, 0x02, 133 }, + { 56, 0x03, 133 }, + { 3, 0x02, 134 }, + { 6, 0x02, 134 }, + { 10, 0x02, 134 }, + { 15, 0x02, 134 }, + { 24, 0x02, 134 }, + { 31, 0x02, 134 }, + { 41, 0x02, 134 }, + { 56, 0x03, 134 }, + }, + /* 125 */ + { + { 3, 0x02, 136 }, + { 6, 0x02, 136 }, + { 10, 0x02, 136 }, + { 15, 0x02, 136 }, + { 24, 0x02, 136 }, + { 31, 0x02, 136 }, + { 41, 0x02, 136 }, + { 56, 0x03, 136 }, + { 3, 0x02, 146 }, + { 6, 0x02, 146 }, + { 10, 0x02, 146 }, + { 15, 0x02, 146 }, + { 24, 0x02, 146 }, + { 31, 0x02, 146 }, + { 41, 0x02, 146 }, + { 56, 0x03, 146 }, + }, + /* 126 */ + { + { 1, 0x02, 154 }, + { 22, 0x03, 154 }, + { 1, 0x02, 156 }, + { 22, 0x03, 156 }, + { 1, 0x02, 160 }, + { 22, 0x03, 160 }, + { 1, 0x02, 163 }, + { 22, 0x03, 163 }, + { 1, 0x02, 164 }, + { 22, 0x03, 164 }, + { 1, 0x02, 169 }, + { 22, 0x03, 169 }, + { 1, 0x02, 170 }, + { 22, 0x03, 170 }, + { 1, 0x02, 173 }, + { 22, 0x03, 173 }, + }, + /* 127 */ + { + { 2, 0x02, 154 }, + { 9, 0x02, 154 }, + { 23, 0x02, 154 }, + { 40, 0x03, 154 }, + { 2, 0x02, 156 }, + { 9, 0x02, 156 }, + { 23, 0x02, 156 }, + { 40, 0x03, 156 }, + { 2, 0x02, 160 }, + { 9, 0x02, 160 }, + { 23, 0x02, 160 }, + { 40, 0x03, 160 }, + { 2, 0x02, 163 }, + { 9, 0x02, 163 }, + { 23, 0x02, 163 }, + { 40, 0x03, 163 }, + }, + /* 128 */ + { + { 3, 0x02, 154 }, + { 6, 0x02, 154 }, + { 10, 0x02, 154 }, + { 15, 0x02, 154 }, + { 24, 0x02, 154 }, + { 31, 0x02, 154 }, + { 41, 0x02, 154 }, + { 56, 0x03, 154 }, + { 3, 0x02, 156 }, + { 6, 0x02, 156 }, + { 10, 0x02, 156 }, + { 15, 0x02, 156 }, + { 24, 0x02, 156 }, + { 31, 0x02, 156 }, + { 41, 0x02, 156 }, + { 56, 0x03, 156 }, + }, + /* 129 */ + { + { 3, 0x02, 160 }, + { 6, 0x02, 160 }, + { 10, 0x02, 160 }, + { 15, 0x02, 160 }, + { 24, 0x02, 160 }, + { 31, 0x02, 160 }, + { 41, 0x02, 160 }, + { 56, 0x03, 160 }, + { 3, 0x02, 163 }, + { 6, 0x02, 163 }, + { 10, 0x02, 163 }, + { 15, 0x02, 163 }, + { 24, 0x02, 163 }, + { 31, 0x02, 163 }, + { 41, 0x02, 163 }, + { 56, 0x03, 163 }, + }, + /* 130 */ + { + { 2, 0x02, 164 }, + { 9, 0x02, 164 }, + { 23, 0x02, 164 }, + { 40, 0x03, 164 }, + { 2, 0x02, 169 }, + { 9, 0x02, 169 }, + { 23, 0x02, 169 }, + { 40, 0x03, 169 }, + { 2, 0x02, 170 }, + { 9, 0x02, 170 }, + { 23, 0x02, 170 }, + { 40, 0x03, 170 }, + { 2, 0x02, 173 }, + { 9, 0x02, 173 }, + { 23, 0x02, 173 }, + { 40, 0x03, 173 }, + }, + /* 131 */ + { + { 3, 0x02, 164 }, + { 6, 0x02, 164 }, + { 10, 0x02, 164 }, + { 15, 0x02, 164 }, + { 24, 0x02, 164 }, + { 31, 0x02, 164 }, + { 41, 0x02, 164 }, + { 56, 0x03, 164 }, + { 3, 0x02, 169 }, + { 6, 0x02, 169 }, + { 10, 0x02, 169 }, + { 15, 0x02, 169 }, + { 24, 0x02, 169 }, + { 31, 0x02, 169 }, + { 41, 0x02, 169 }, + { 56, 0x03, 169 }, + }, + /* 132 */ + { + { 3, 0x02, 170 }, + { 6, 0x02, 170 }, + { 10, 0x02, 170 }, + { 15, 0x02, 170 }, + { 24, 0x02, 170 }, + { 31, 0x02, 170 }, + { 41, 0x02, 170 }, + { 56, 0x03, 170 }, + { 3, 0x02, 173 }, + { 6, 0x02, 173 }, + { 10, 0x02, 173 }, + { 15, 0x02, 173 }, + { 24, 0x02, 173 }, + { 31, 0x02, 173 }, + { 41, 0x02, 173 }, + { 56, 0x03, 173 }, + }, + /* 133 */ + { + { 137, 0x00, 0 }, + { 138, 0x00, 0 }, + { 140, 0x00, 0 }, + { 141, 0x00, 0 }, + { 144, 0x00, 0 }, + { 145, 0x00, 0 }, + { 147, 0x00, 0 }, + { 150, 0x00, 0 }, + { 156, 0x00, 0 }, + { 159, 0x00, 0 }, + { 163, 0x00, 0 }, + { 166, 0x00, 0 }, + { 171, 0x00, 0 }, + { 174, 0x00, 0 }, + { 181, 0x00, 0 }, + { 190, 0x00, 0 }, + }, + /* 134 */ + { + { 0, 0x03, 178 }, + { 0, 0x03, 181 }, + { 0, 0x03, 185 }, + { 0, 0x03, 186 }, + { 0, 0x03, 187 }, + { 0, 0x03, 189 }, + { 0, 0x03, 190 }, + { 0, 0x03, 196 }, + { 0, 0x03, 198 }, + { 0, 0x03, 228 }, + { 0, 0x03, 232 }, + { 0, 0x03, 233 }, + { 148, 0x00, 0 }, + { 149, 0x00, 0 }, + { 151, 0x00, 0 }, + { 152, 0x00, 0 }, + }, + /* 135 */ + { + { 1, 0x02, 178 }, + { 22, 0x03, 178 }, + { 1, 0x02, 181 }, + { 22, 0x03, 181 }, + { 1, 0x02, 185 }, + { 22, 0x03, 185 }, + { 1, 0x02, 186 }, + { 22, 0x03, 186 }, + { 1, 0x02, 187 }, + { 22, 0x03, 187 }, + { 1, 0x02, 189 }, + { 22, 0x03, 189 }, + { 1, 0x02, 190 }, + { 22, 0x03, 190 }, + { 1, 0x02, 196 }, + { 22, 0x03, 196 }, + }, + /* 136 */ + { + { 2, 0x02, 178 }, + { 9, 0x02, 178 }, + { 23, 0x02, 178 }, + { 40, 0x03, 178 }, + { 2, 0x02, 181 }, + { 9, 0x02, 181 }, + { 23, 0x02, 181 }, + { 40, 0x03, 181 }, + { 2, 0x02, 185 }, + { 9, 0x02, 185 }, + { 23, 0x02, 185 }, + { 40, 0x03, 185 }, + { 2, 0x02, 186 }, + { 9, 0x02, 186 }, + { 23, 0x02, 186 }, + { 40, 0x03, 186 }, + }, + /* 137 */ + { + { 3, 0x02, 178 }, + { 6, 0x02, 178 }, + { 10, 0x02, 178 }, + { 15, 0x02, 178 }, + { 24, 0x02, 178 }, + { 31, 0x02, 178 }, + { 41, 0x02, 178 }, + { 56, 0x03, 178 }, + { 3, 0x02, 181 }, + { 6, 0x02, 181 }, + { 10, 0x02, 181 }, + { 15, 0x02, 181 }, + { 24, 0x02, 181 }, + { 31, 0x02, 181 }, + { 41, 0x02, 181 }, + { 56, 0x03, 181 }, + }, + /* 138 */ + { + { 3, 0x02, 185 }, + { 6, 0x02, 185 }, + { 10, 0x02, 185 }, + { 15, 0x02, 185 }, + { 24, 0x02, 185 }, + { 31, 0x02, 185 }, + { 41, 0x02, 185 }, + { 56, 0x03, 185 }, + { 3, 0x02, 186 }, + { 6, 0x02, 186 }, + { 10, 0x02, 186 }, + { 15, 0x02, 186 }, + { 24, 0x02, 186 }, + { 31, 0x02, 186 }, + { 41, 0x02, 186 }, + { 56, 0x03, 186 }, + }, + /* 139 */ + { + { 2, 0x02, 187 }, + { 9, 0x02, 187 }, + { 23, 0x02, 187 }, + { 40, 0x03, 187 }, + { 2, 0x02, 189 }, + { 9, 0x02, 189 }, + { 23, 0x02, 189 }, + { 40, 0x03, 189 }, + { 2, 0x02, 190 }, + { 9, 0x02, 190 }, + { 23, 0x02, 190 }, + { 40, 0x03, 190 }, + { 2, 0x02, 196 }, + { 9, 0x02, 196 }, + { 23, 0x02, 196 }, + { 40, 0x03, 196 }, + }, + /* 140 */ + { + { 3, 0x02, 187 }, + { 6, 0x02, 187 }, + { 10, 0x02, 187 }, + { 15, 0x02, 187 }, + { 24, 0x02, 187 }, + { 31, 0x02, 187 }, + { 41, 0x02, 187 }, + { 56, 0x03, 187 }, + { 3, 0x02, 189 }, + { 6, 0x02, 189 }, + { 10, 0x02, 189 }, + { 15, 0x02, 189 }, + { 24, 0x02, 189 }, + { 31, 0x02, 189 }, + { 41, 0x02, 189 }, + { 56, 0x03, 189 }, + }, + /* 141 */ + { + { 3, 0x02, 190 }, + { 6, 0x02, 190 }, + { 10, 0x02, 190 }, + { 15, 0x02, 190 }, + { 24, 0x02, 190 }, + { 31, 0x02, 190 }, + { 41, 0x02, 190 }, + { 56, 0x03, 190 }, + { 3, 0x02, 196 }, + { 6, 0x02, 196 }, + { 10, 0x02, 196 }, + { 15, 0x02, 196 }, + { 24, 0x02, 196 }, + { 31, 0x02, 196 }, + { 41, 0x02, 196 }, + { 56, 0x03, 196 }, + }, + /* 142 */ + { + { 1, 0x02, 198 }, + { 22, 0x03, 198 }, + { 1, 0x02, 228 }, + { 22, 0x03, 228 }, + { 1, 0x02, 232 }, + { 22, 0x03, 232 }, + { 1, 0x02, 233 }, + { 22, 0x03, 233 }, + { 0, 0x03, 1 }, + { 0, 0x03, 135 }, + { 0, 0x03, 137 }, + { 0, 0x03, 138 }, + { 0, 0x03, 139 }, + { 0, 0x03, 140 }, + { 0, 0x03, 141 }, + { 0, 0x03, 143 }, + }, + /* 143 */ + { + { 2, 0x02, 198 }, + { 9, 0x02, 198 }, + { 23, 0x02, 198 }, + { 40, 0x03, 198 }, + { 2, 0x02, 228 }, + { 9, 0x02, 228 }, + { 23, 0x02, 228 }, + { 40, 0x03, 228 }, + { 2, 0x02, 232 }, + { 9, 0x02, 232 }, + { 23, 0x02, 232 }, + { 40, 0x03, 232 }, + { 2, 0x02, 233 }, + { 9, 0x02, 233 }, + { 23, 0x02, 233 }, + { 40, 0x03, 233 }, + }, + /* 144 */ + { + { 3, 0x02, 198 }, + { 6, 0x02, 198 }, + { 10, 0x02, 198 }, + { 15, 0x02, 198 }, + { 24, 0x02, 198 }, + { 31, 0x02, 198 }, + { 41, 0x02, 198 }, + { 56, 0x03, 198 }, + { 3, 0x02, 228 }, + { 6, 0x02, 228 }, + { 10, 0x02, 228 }, + { 15, 0x02, 228 }, + { 24, 0x02, 228 }, + { 31, 0x02, 228 }, + { 41, 0x02, 228 }, + { 56, 0x03, 228 }, + }, + /* 145 */ + { + { 3, 0x02, 232 }, + { 6, 0x02, 232 }, + { 10, 0x02, 232 }, + { 15, 0x02, 232 }, + { 24, 0x02, 232 }, + { 31, 0x02, 232 }, + { 41, 0x02, 232 }, + { 56, 0x03, 232 }, + { 3, 0x02, 233 }, + { 6, 0x02, 233 }, + { 10, 0x02, 233 }, + { 15, 0x02, 233 }, + { 24, 0x02, 233 }, + { 31, 0x02, 233 }, + { 41, 0x02, 233 }, + { 56, 0x03, 233 }, + }, + /* 146 */ + { + { 1, 0x02, 1 }, + { 22, 0x03, 1 }, + { 1, 0x02, 135 }, + { 22, 0x03, 135 }, + { 1, 0x02, 137 }, + { 22, 0x03, 137 }, + { 1, 0x02, 138 }, + { 22, 0x03, 138 }, + { 1, 0x02, 139 }, + { 22, 0x03, 139 }, + { 1, 0x02, 140 }, + { 22, 0x03, 140 }, + { 1, 0x02, 141 }, + { 22, 0x03, 141 }, + { 1, 0x02, 143 }, + { 22, 0x03, 143 }, + }, + /* 147 */ + { + { 2, 0x02, 1 }, + { 9, 0x02, 1 }, + { 23, 0x02, 1 }, + { 40, 0x03, 1 }, + { 2, 0x02, 135 }, + { 9, 0x02, 135 }, + { 23, 0x02, 135 }, + { 40, 0x03, 135 }, + { 2, 0x02, 137 }, + { 9, 0x02, 137 }, + { 23, 0x02, 137 }, + { 40, 0x03, 137 }, + { 2, 0x02, 138 }, + { 9, 0x02, 138 }, + { 23, 0x02, 138 }, + { 40, 0x03, 138 }, + }, + /* 148 */ + { + { 3, 0x02, 1 }, + { 6, 0x02, 1 }, + { 10, 0x02, 1 }, + { 15, 0x02, 1 }, + { 24, 0x02, 1 }, + { 31, 0x02, 1 }, + { 41, 0x02, 1 }, + { 56, 0x03, 1 }, + { 3, 0x02, 135 }, + { 6, 0x02, 135 }, + { 10, 0x02, 135 }, + { 15, 0x02, 135 }, + { 24, 0x02, 135 }, + { 31, 0x02, 135 }, + { 41, 0x02, 135 }, + { 56, 0x03, 135 }, + }, + /* 149 */ + { + { 3, 0x02, 137 }, + { 6, 0x02, 137 }, + { 10, 0x02, 137 }, + { 15, 0x02, 137 }, + { 24, 0x02, 137 }, + { 31, 0x02, 137 }, + { 41, 0x02, 137 }, + { 56, 0x03, 137 }, + { 3, 0x02, 138 }, + { 6, 0x02, 138 }, + { 10, 0x02, 138 }, + { 15, 0x02, 138 }, + { 24, 0x02, 138 }, + { 31, 0x02, 138 }, + { 41, 0x02, 138 }, + { 56, 0x03, 138 }, + }, + /* 150 */ + { + { 2, 0x02, 139 }, + { 9, 0x02, 139 }, + { 23, 0x02, 139 }, + { 40, 0x03, 139 }, + { 2, 0x02, 140 }, + { 9, 0x02, 140 }, + { 23, 0x02, 140 }, + { 40, 0x03, 140 }, + { 2, 0x02, 141 }, + { 9, 0x02, 141 }, + { 23, 0x02, 141 }, + { 40, 0x03, 141 }, + { 2, 0x02, 143 }, + { 9, 0x02, 143 }, + { 23, 0x02, 143 }, + { 40, 0x03, 143 }, + }, + /* 151 */ + { + { 3, 0x02, 139 }, + { 6, 0x02, 139 }, + { 10, 0x02, 139 }, + { 15, 0x02, 139 }, + { 24, 0x02, 139 }, + { 31, 0x02, 139 }, + { 41, 0x02, 139 }, + { 56, 0x03, 139 }, + { 3, 0x02, 140 }, + { 6, 0x02, 140 }, + { 10, 0x02, 140 }, + { 15, 0x02, 140 }, + { 24, 0x02, 140 }, + { 31, 0x02, 140 }, + { 41, 0x02, 140 }, + { 56, 0x03, 140 }, + }, + /* 152 */ + { + { 3, 0x02, 141 }, + { 6, 0x02, 141 }, + { 10, 0x02, 141 }, + { 15, 0x02, 141 }, + { 24, 0x02, 141 }, + { 31, 0x02, 141 }, + { 41, 0x02, 141 }, + { 56, 0x03, 141 }, + { 3, 0x02, 143 }, + { 6, 0x02, 143 }, + { 10, 0x02, 143 }, + { 15, 0x02, 143 }, + { 24, 0x02, 143 }, + { 31, 0x02, 143 }, + { 41, 0x02, 143 }, + { 56, 0x03, 143 }, + }, + /* 153 */ + { + { 157, 0x00, 0 }, + { 158, 0x00, 0 }, + { 160, 0x00, 0 }, + { 161, 0x00, 0 }, + { 164, 0x00, 0 }, + { 165, 0x00, 0 }, + { 167, 0x00, 0 }, + { 168, 0x00, 0 }, + { 172, 0x00, 0 }, + { 173, 0x00, 0 }, + { 175, 0x00, 0 }, + { 177, 0x00, 0 }, + { 182, 0x00, 0 }, + { 185, 0x00, 0 }, + { 191, 0x00, 0 }, + { 207, 0x00, 0 }, + }, + /* 154 */ + { + { 0, 0x03, 147 }, + { 0, 0x03, 149 }, + { 0, 0x03, 150 }, + { 0, 0x03, 151 }, + { 0, 0x03, 152 }, + { 0, 0x03, 155 }, + { 0, 0x03, 157 }, + { 0, 0x03, 158 }, + { 0, 0x03, 165 }, + { 0, 0x03, 166 }, + { 0, 0x03, 168 }, + { 0, 0x03, 174 }, + { 0, 0x03, 175 }, + { 0, 0x03, 180 }, + { 0, 0x03, 182 }, + { 0, 0x03, 183 }, + }, + /* 155 */ + { + { 1, 0x02, 147 }, + { 22, 0x03, 147 }, + { 1, 0x02, 149 }, + { 22, 0x03, 149 }, + { 1, 0x02, 150 }, + { 22, 0x03, 150 }, + { 1, 0x02, 151 }, + { 22, 0x03, 151 }, + { 1, 0x02, 152 }, + { 22, 0x03, 152 }, + { 1, 0x02, 155 }, + { 22, 0x03, 155 }, + { 1, 0x02, 157 }, + { 22, 0x03, 157 }, + { 1, 0x02, 158 }, + { 22, 0x03, 158 }, + }, + /* 156 */ + { + { 2, 0x02, 147 }, + { 9, 0x02, 147 }, + { 23, 0x02, 147 }, + { 40, 0x03, 147 }, + { 2, 0x02, 149 }, + { 9, 0x02, 149 }, + { 23, 0x02, 149 }, + { 40, 0x03, 149 }, + { 2, 0x02, 150 }, + { 9, 0x02, 150 }, + { 23, 0x02, 150 }, + { 40, 0x03, 150 }, + { 2, 0x02, 151 }, + { 9, 0x02, 151 }, + { 23, 0x02, 151 }, + { 40, 0x03, 151 }, + }, + /* 157 */ + { + { 3, 0x02, 147 }, + { 6, 0x02, 147 }, + { 10, 0x02, 147 }, + { 15, 0x02, 147 }, + { 24, 0x02, 147 }, + { 31, 0x02, 147 }, + { 41, 0x02, 147 }, + { 56, 0x03, 147 }, + { 3, 0x02, 149 }, + { 6, 0x02, 149 }, + { 10, 0x02, 149 }, + { 15, 0x02, 149 }, + { 24, 0x02, 149 }, + { 31, 0x02, 149 }, + { 41, 0x02, 149 }, + { 56, 0x03, 149 }, + }, + /* 158 */ + { + { 3, 0x02, 150 }, + { 6, 0x02, 150 }, + { 10, 0x02, 150 }, + { 15, 0x02, 150 }, + { 24, 0x02, 150 }, + { 31, 0x02, 150 }, + { 41, 0x02, 150 }, + { 56, 0x03, 150 }, + { 3, 0x02, 151 }, + { 6, 0x02, 151 }, + { 10, 0x02, 151 }, + { 15, 0x02, 151 }, + { 24, 0x02, 151 }, + { 31, 0x02, 151 }, + { 41, 0x02, 151 }, + { 56, 0x03, 151 }, + }, + /* 159 */ + { + { 2, 0x02, 152 }, + { 9, 0x02, 152 }, + { 23, 0x02, 152 }, + { 40, 0x03, 152 }, + { 2, 0x02, 155 }, + { 9, 0x02, 155 }, + { 23, 0x02, 155 }, + { 40, 0x03, 155 }, + { 2, 0x02, 157 }, + { 9, 0x02, 157 }, + { 23, 0x02, 157 }, + { 40, 0x03, 157 }, + { 2, 0x02, 158 }, + { 9, 0x02, 158 }, + { 23, 0x02, 158 }, + { 40, 0x03, 158 }, + }, + /* 160 */ + { + { 3, 0x02, 152 }, + { 6, 0x02, 152 }, + { 10, 0x02, 152 }, + { 15, 0x02, 152 }, + { 24, 0x02, 152 }, + { 31, 0x02, 152 }, + { 41, 0x02, 152 }, + { 56, 0x03, 152 }, + { 3, 0x02, 155 }, + { 6, 0x02, 155 }, + { 10, 0x02, 155 }, + { 15, 0x02, 155 }, + { 24, 0x02, 155 }, + { 31, 0x02, 155 }, + { 41, 0x02, 155 }, + { 56, 0x03, 155 }, + }, + /* 161 */ + { + { 3, 0x02, 157 }, + { 6, 0x02, 157 }, + { 10, 0x02, 157 }, + { 15, 0x02, 157 }, + { 24, 0x02, 157 }, + { 31, 0x02, 157 }, + { 41, 0x02, 157 }, + { 56, 0x03, 157 }, + { 3, 0x02, 158 }, + { 6, 0x02, 158 }, + { 10, 0x02, 158 }, + { 15, 0x02, 158 }, + { 24, 0x02, 158 }, + { 31, 0x02, 158 }, + { 41, 0x02, 158 }, + { 56, 0x03, 158 }, + }, + /* 162 */ + { + { 1, 0x02, 165 }, + { 22, 0x03, 165 }, + { 1, 0x02, 166 }, + { 22, 0x03, 166 }, + { 1, 0x02, 168 }, + { 22, 0x03, 168 }, + { 1, 0x02, 174 }, + { 22, 0x03, 174 }, + { 1, 0x02, 175 }, + { 22, 0x03, 175 }, + { 1, 0x02, 180 }, + { 22, 0x03, 180 }, + { 1, 0x02, 182 }, + { 22, 0x03, 182 }, + { 1, 0x02, 183 }, + { 22, 0x03, 183 }, + }, + /* 163 */ + { + { 2, 0x02, 165 }, + { 9, 0x02, 165 }, + { 23, 0x02, 165 }, + { 40, 0x03, 165 }, + { 2, 0x02, 166 }, + { 9, 0x02, 166 }, + { 23, 0x02, 166 }, + { 40, 0x03, 166 }, + { 2, 0x02, 168 }, + { 9, 0x02, 168 }, + { 23, 0x02, 168 }, + { 40, 0x03, 168 }, + { 2, 0x02, 174 }, + { 9, 0x02, 174 }, + { 23, 0x02, 174 }, + { 40, 0x03, 174 }, + }, + /* 164 */ + { + { 3, 0x02, 165 }, + { 6, 0x02, 165 }, + { 10, 0x02, 165 }, + { 15, 0x02, 165 }, + { 24, 0x02, 165 }, + { 31, 0x02, 165 }, + { 41, 0x02, 165 }, + { 56, 0x03, 165 }, + { 3, 0x02, 166 }, + { 6, 0x02, 166 }, + { 10, 0x02, 166 }, + { 15, 0x02, 166 }, + { 24, 0x02, 166 }, + { 31, 0x02, 166 }, + { 41, 0x02, 166 }, + { 56, 0x03, 166 }, + }, + /* 165 */ + { + { 3, 0x02, 168 }, + { 6, 0x02, 168 }, + { 10, 0x02, 168 }, + { 15, 0x02, 168 }, + { 24, 0x02, 168 }, + { 31, 0x02, 168 }, + { 41, 0x02, 168 }, + { 56, 0x03, 168 }, + { 3, 0x02, 174 }, + { 6, 0x02, 174 }, + { 10, 0x02, 174 }, + { 15, 0x02, 174 }, + { 24, 0x02, 174 }, + { 31, 0x02, 174 }, + { 41, 0x02, 174 }, + { 56, 0x03, 174 }, + }, + /* 166 */ + { + { 2, 0x02, 175 }, + { 9, 0x02, 175 }, + { 23, 0x02, 175 }, + { 40, 0x03, 175 }, + { 2, 0x02, 180 }, + { 9, 0x02, 180 }, + { 23, 0x02, 180 }, + { 40, 0x03, 180 }, + { 2, 0x02, 182 }, + { 9, 0x02, 182 }, + { 23, 0x02, 182 }, + { 40, 0x03, 182 }, + { 2, 0x02, 183 }, + { 9, 0x02, 183 }, + { 23, 0x02, 183 }, + { 40, 0x03, 183 }, + }, + /* 167 */ + { + { 3, 0x02, 175 }, + { 6, 0x02, 175 }, + { 10, 0x02, 175 }, + { 15, 0x02, 175 }, + { 24, 0x02, 175 }, + { 31, 0x02, 175 }, + { 41, 0x02, 175 }, + { 56, 0x03, 175 }, + { 3, 0x02, 180 }, + { 6, 0x02, 180 }, + { 10, 0x02, 180 }, + { 15, 0x02, 180 }, + { 24, 0x02, 180 }, + { 31, 0x02, 180 }, + { 41, 0x02, 180 }, + { 56, 0x03, 180 }, + }, + /* 168 */ + { + { 3, 0x02, 182 }, + { 6, 0x02, 182 }, + { 10, 0x02, 182 }, + { 15, 0x02, 182 }, + { 24, 0x02, 182 }, + { 31, 0x02, 182 }, + { 41, 0x02, 182 }, + { 56, 0x03, 182 }, + { 3, 0x02, 183 }, + { 6, 0x02, 183 }, + { 10, 0x02, 183 }, + { 15, 0x02, 183 }, + { 24, 0x02, 183 }, + { 31, 0x02, 183 }, + { 41, 0x02, 183 }, + { 56, 0x03, 183 }, + }, + /* 169 */ + { + { 0, 0x03, 188 }, + { 0, 0x03, 191 }, + { 0, 0x03, 197 }, + { 0, 0x03, 231 }, + { 0, 0x03, 239 }, + { 176, 0x00, 0 }, + { 178, 0x00, 0 }, + { 179, 0x00, 0 }, + { 183, 0x00, 0 }, + { 184, 0x00, 0 }, + { 186, 0x00, 0 }, + { 187, 0x00, 0 }, + { 192, 0x00, 0 }, + { 199, 0x00, 0 }, + { 208, 0x00, 0 }, + { 223, 0x00, 0 }, + }, + /* 170 */ + { + { 1, 0x02, 188 }, + { 22, 0x03, 188 }, + { 1, 0x02, 191 }, + { 22, 0x03, 191 }, + { 1, 0x02, 197 }, + { 22, 0x03, 197 }, + { 1, 0x02, 231 }, + { 22, 0x03, 231 }, + { 1, 0x02, 239 }, + { 22, 0x03, 239 }, + { 0, 0x03, 9 }, + { 0, 0x03, 142 }, + { 0, 0x03, 144 }, + { 0, 0x03, 145 }, + { 0, 0x03, 148 }, + { 0, 0x03, 159 }, + }, + /* 171 */ + { + { 2, 0x02, 188 }, + { 9, 0x02, 188 }, + { 23, 0x02, 188 }, + { 40, 0x03, 188 }, + { 2, 0x02, 191 }, + { 9, 0x02, 191 }, + { 23, 0x02, 191 }, + { 40, 0x03, 191 }, + { 2, 0x02, 197 }, + { 9, 0x02, 197 }, + { 23, 0x02, 197 }, + { 40, 0x03, 197 }, + { 2, 0x02, 231 }, + { 9, 0x02, 231 }, + { 23, 0x02, 231 }, + { 40, 0x03, 231 }, + }, + /* 172 */ + { + { 3, 0x02, 188 }, + { 6, 0x02, 188 }, + { 10, 0x02, 188 }, + { 15, 0x02, 188 }, + { 24, 0x02, 188 }, + { 31, 0x02, 188 }, + { 41, 0x02, 188 }, + { 56, 0x03, 188 }, + { 3, 0x02, 191 }, + { 6, 0x02, 191 }, + { 10, 0x02, 191 }, + { 15, 0x02, 191 }, + { 24, 0x02, 191 }, + { 31, 0x02, 191 }, + { 41, 0x02, 191 }, + { 56, 0x03, 191 }, + }, + /* 173 */ + { + { 3, 0x02, 197 }, + { 6, 0x02, 197 }, + { 10, 0x02, 197 }, + { 15, 0x02, 197 }, + { 24, 0x02, 197 }, + { 31, 0x02, 197 }, + { 41, 0x02, 197 }, + { 56, 0x03, 197 }, + { 3, 0x02, 231 }, + { 6, 0x02, 231 }, + { 10, 0x02, 231 }, + { 15, 0x02, 231 }, + { 24, 0x02, 231 }, + { 31, 0x02, 231 }, + { 41, 0x02, 231 }, + { 56, 0x03, 231 }, + }, + /* 174 */ + { + { 2, 0x02, 239 }, + { 9, 0x02, 239 }, + { 23, 0x02, 239 }, + { 40, 0x03, 239 }, + { 1, 0x02, 9 }, + { 22, 0x03, 9 }, + { 1, 0x02, 142 }, + { 22, 0x03, 142 }, + { 1, 0x02, 144 }, + { 22, 0x03, 144 }, + { 1, 0x02, 145 }, + { 22, 0x03, 145 }, + { 1, 0x02, 148 }, + { 22, 0x03, 148 }, + { 1, 0x02, 159 }, + { 22, 0x03, 159 }, + }, + /* 175 */ + { + { 3, 0x02, 239 }, + { 6, 0x02, 239 }, + { 10, 0x02, 239 }, + { 15, 0x02, 239 }, + { 24, 0x02, 239 }, + { 31, 0x02, 239 }, + { 41, 0x02, 239 }, + { 56, 0x03, 239 }, + { 2, 0x02, 9 }, + { 9, 0x02, 9 }, + { 23, 0x02, 9 }, + { 40, 0x03, 9 }, + { 2, 0x02, 142 }, + { 9, 0x02, 142 }, + { 23, 0x02, 142 }, + { 40, 0x03, 142 }, + }, + /* 176 */ + { + { 3, 0x02, 9 }, + { 6, 0x02, 9 }, + { 10, 0x02, 9 }, + { 15, 0x02, 9 }, + { 24, 0x02, 9 }, + { 31, 0x02, 9 }, + { 41, 0x02, 9 }, + { 56, 0x03, 9 }, + { 3, 0x02, 142 }, + { 6, 0x02, 142 }, + { 10, 0x02, 142 }, + { 15, 0x02, 142 }, + { 24, 0x02, 142 }, + { 31, 0x02, 142 }, + { 41, 0x02, 142 }, + { 56, 0x03, 142 }, + }, + /* 177 */ + { + { 2, 0x02, 144 }, + { 9, 0x02, 144 }, + { 23, 0x02, 144 }, + { 40, 0x03, 144 }, + { 2, 0x02, 145 }, + { 9, 0x02, 145 }, + { 23, 0x02, 145 }, + { 40, 0x03, 145 }, + { 2, 0x02, 148 }, + { 9, 0x02, 148 }, + { 23, 0x02, 148 }, + { 40, 0x03, 148 }, + { 2, 0x02, 159 }, + { 9, 0x02, 159 }, + { 23, 0x02, 159 }, + { 40, 0x03, 159 }, + }, + /* 178 */ + { + { 3, 0x02, 144 }, + { 6, 0x02, 144 }, + { 10, 0x02, 144 }, + { 15, 0x02, 144 }, + { 24, 0x02, 144 }, + { 31, 0x02, 144 }, + { 41, 0x02, 144 }, + { 56, 0x03, 144 }, + { 3, 0x02, 145 }, + { 6, 0x02, 145 }, + { 10, 0x02, 145 }, + { 15, 0x02, 145 }, + { 24, 0x02, 145 }, + { 31, 0x02, 145 }, + { 41, 0x02, 145 }, + { 56, 0x03, 145 }, + }, + /* 179 */ + { + { 3, 0x02, 148 }, + { 6, 0x02, 148 }, + { 10, 0x02, 148 }, + { 15, 0x02, 148 }, + { 24, 0x02, 148 }, + { 31, 0x02, 148 }, + { 41, 0x02, 148 }, + { 56, 0x03, 148 }, + { 3, 0x02, 159 }, + { 6, 0x02, 159 }, + { 10, 0x02, 159 }, + { 15, 0x02, 159 }, + { 24, 0x02, 159 }, + { 31, 0x02, 159 }, + { 41, 0x02, 159 }, + { 56, 0x03, 159 }, + }, + /* 180 */ + { + { 0, 0x03, 171 }, + { 0, 0x03, 206 }, + { 0, 0x03, 215 }, + { 0, 0x03, 225 }, + { 0, 0x03, 236 }, + { 0, 0x03, 237 }, + { 188, 0x00, 0 }, + { 189, 0x00, 0 }, + { 193, 0x00, 0 }, + { 196, 0x00, 0 }, + { 200, 0x00, 0 }, + { 203, 0x00, 0 }, + { 209, 0x00, 0 }, + { 216, 0x00, 0 }, + { 224, 0x00, 0 }, + { 238, 0x00, 0 }, + }, + /* 181 */ + { + { 1, 0x02, 171 }, + { 22, 0x03, 171 }, + { 1, 0x02, 206 }, + { 22, 0x03, 206 }, + { 1, 0x02, 215 }, + { 22, 0x03, 215 }, + { 1, 0x02, 225 }, + { 22, 0x03, 225 }, + { 1, 0x02, 236 }, + { 22, 0x03, 236 }, + { 1, 0x02, 237 }, + { 22, 0x03, 237 }, + { 0, 0x03, 199 }, + { 0, 0x03, 207 }, + { 0, 0x03, 234 }, + { 0, 0x03, 235 }, + }, + /* 182 */ + { + { 2, 0x02, 171 }, + { 9, 0x02, 171 }, + { 23, 0x02, 171 }, + { 40, 0x03, 171 }, + { 2, 0x02, 206 }, + { 9, 0x02, 206 }, + { 23, 0x02, 206 }, + { 40, 0x03, 206 }, + { 2, 0x02, 215 }, + { 9, 0x02, 215 }, + { 23, 0x02, 215 }, + { 40, 0x03, 215 }, + { 2, 0x02, 225 }, + { 9, 0x02, 225 }, + { 23, 0x02, 225 }, + { 40, 0x03, 225 }, + }, + /* 183 */ + { + { 3, 0x02, 171 }, + { 6, 0x02, 171 }, + { 10, 0x02, 171 }, + { 15, 0x02, 171 }, + { 24, 0x02, 171 }, + { 31, 0x02, 171 }, + { 41, 0x02, 171 }, + { 56, 0x03, 171 }, + { 3, 0x02, 206 }, + { 6, 0x02, 206 }, + { 10, 0x02, 206 }, + { 15, 0x02, 206 }, + { 24, 0x02, 206 }, + { 31, 0x02, 206 }, + { 41, 0x02, 206 }, + { 56, 0x03, 206 }, + }, + /* 184 */ + { + { 3, 0x02, 215 }, + { 6, 0x02, 215 }, + { 10, 0x02, 215 }, + { 15, 0x02, 215 }, + { 24, 0x02, 215 }, + { 31, 0x02, 215 }, + { 41, 0x02, 215 }, + { 56, 0x03, 215 }, + { 3, 0x02, 225 }, + { 6, 0x02, 225 }, + { 10, 0x02, 225 }, + { 15, 0x02, 225 }, + { 24, 0x02, 225 }, + { 31, 0x02, 225 }, + { 41, 0x02, 225 }, + { 56, 0x03, 225 }, + }, + /* 185 */ + { + { 2, 0x02, 236 }, + { 9, 0x02, 236 }, + { 23, 0x02, 236 }, + { 40, 0x03, 236 }, + { 2, 0x02, 237 }, + { 9, 0x02, 237 }, + { 23, 0x02, 237 }, + { 40, 0x03, 237 }, + { 1, 0x02, 199 }, + { 22, 0x03, 199 }, + { 1, 0x02, 207 }, + { 22, 0x03, 207 }, + { 1, 0x02, 234 }, + { 22, 0x03, 234 }, + { 1, 0x02, 235 }, + { 22, 0x03, 235 }, + }, + /* 186 */ + { + { 3, 0x02, 236 }, + { 6, 0x02, 236 }, + { 10, 0x02, 236 }, + { 15, 0x02, 236 }, + { 24, 0x02, 236 }, + { 31, 0x02, 236 }, + { 41, 0x02, 236 }, + { 56, 0x03, 236 }, + { 3, 0x02, 237 }, + { 6, 0x02, 237 }, + { 10, 0x02, 237 }, + { 15, 0x02, 237 }, + { 24, 0x02, 237 }, + { 31, 0x02, 237 }, + { 41, 0x02, 237 }, + { 56, 0x03, 237 }, + }, + /* 187 */ + { + { 2, 0x02, 199 }, + { 9, 0x02, 199 }, + { 23, 0x02, 199 }, + { 40, 0x03, 199 }, + { 2, 0x02, 207 }, + { 9, 0x02, 207 }, + { 23, 0x02, 207 }, + { 40, 0x03, 207 }, + { 2, 0x02, 234 }, + { 9, 0x02, 234 }, + { 23, 0x02, 234 }, + { 40, 0x03, 234 }, + { 2, 0x02, 235 }, + { 9, 0x02, 235 }, + { 23, 0x02, 235 }, + { 40, 0x03, 235 }, + }, + /* 188 */ + { + { 3, 0x02, 199 }, + { 6, 0x02, 199 }, + { 10, 0x02, 199 }, + { 15, 0x02, 199 }, + { 24, 0x02, 199 }, + { 31, 0x02, 199 }, + { 41, 0x02, 199 }, + { 56, 0x03, 199 }, + { 3, 0x02, 207 }, + { 6, 0x02, 207 }, + { 10, 0x02, 207 }, + { 15, 0x02, 207 }, + { 24, 0x02, 207 }, + { 31, 0x02, 207 }, + { 41, 0x02, 207 }, + { 56, 0x03, 207 }, + }, + /* 189 */ + { + { 3, 0x02, 234 }, + { 6, 0x02, 234 }, + { 10, 0x02, 234 }, + { 15, 0x02, 234 }, + { 24, 0x02, 234 }, + { 31, 0x02, 234 }, + { 41, 0x02, 234 }, + { 56, 0x03, 234 }, + { 3, 0x02, 235 }, + { 6, 0x02, 235 }, + { 10, 0x02, 235 }, + { 15, 0x02, 235 }, + { 24, 0x02, 235 }, + { 31, 0x02, 235 }, + { 41, 0x02, 235 }, + { 56, 0x03, 235 }, + }, + /* 190 */ + { + { 194, 0x00, 0 }, + { 195, 0x00, 0 }, + { 197, 0x00, 0 }, + { 198, 0x00, 0 }, + { 201, 0x00, 0 }, + { 202, 0x00, 0 }, + { 204, 0x00, 0 }, + { 205, 0x00, 0 }, + { 210, 0x00, 0 }, + { 213, 0x00, 0 }, + { 217, 0x00, 0 }, + { 220, 0x00, 0 }, + { 225, 0x00, 0 }, + { 231, 0x00, 0 }, + { 239, 0x00, 0 }, + { 246, 0x00, 0 }, + }, + /* 191 */ + { + { 0, 0x03, 192 }, + { 0, 0x03, 193 }, + { 0, 0x03, 200 }, + { 0, 0x03, 201 }, + { 0, 0x03, 202 }, + { 0, 0x03, 205 }, + { 0, 0x03, 210 }, + { 0, 0x03, 213 }, + { 0, 0x03, 218 }, + { 0, 0x03, 219 }, + { 0, 0x03, 238 }, + { 0, 0x03, 240 }, + { 0, 0x03, 242 }, + { 0, 0x03, 243 }, + { 0, 0x03, 255 }, + { 206, 0x00, 0 }, + }, + /* 192 */ + { + { 1, 0x02, 192 }, + { 22, 0x03, 192 }, + { 1, 0x02, 193 }, + { 22, 0x03, 193 }, + { 1, 0x02, 200 }, + { 22, 0x03, 200 }, + { 1, 0x02, 201 }, + { 22, 0x03, 201 }, + { 1, 0x02, 202 }, + { 22, 0x03, 202 }, + { 1, 0x02, 205 }, + { 22, 0x03, 205 }, + { 1, 0x02, 210 }, + { 22, 0x03, 210 }, + { 1, 0x02, 213 }, + { 22, 0x03, 213 }, + }, + /* 193 */ + { + { 2, 0x02, 192 }, + { 9, 0x02, 192 }, + { 23, 0x02, 192 }, + { 40, 0x03, 192 }, + { 2, 0x02, 193 }, + { 9, 0x02, 193 }, + { 23, 0x02, 193 }, + { 40, 0x03, 193 }, + { 2, 0x02, 200 }, + { 9, 0x02, 200 }, + { 23, 0x02, 200 }, + { 40, 0x03, 200 }, + { 2, 0x02, 201 }, + { 9, 0x02, 201 }, + { 23, 0x02, 201 }, + { 40, 0x03, 201 }, + }, + /* 194 */ + { + { 3, 0x02, 192 }, + { 6, 0x02, 192 }, + { 10, 0x02, 192 }, + { 15, 0x02, 192 }, + { 24, 0x02, 192 }, + { 31, 0x02, 192 }, + { 41, 0x02, 192 }, + { 56, 0x03, 192 }, + { 3, 0x02, 193 }, + { 6, 0x02, 193 }, + { 10, 0x02, 193 }, + { 15, 0x02, 193 }, + { 24, 0x02, 193 }, + { 31, 0x02, 193 }, + { 41, 0x02, 193 }, + { 56, 0x03, 193 }, + }, + /* 195 */ + { + { 3, 0x02, 200 }, + { 6, 0x02, 200 }, + { 10, 0x02, 200 }, + { 15, 0x02, 200 }, + { 24, 0x02, 200 }, + { 31, 0x02, 200 }, + { 41, 0x02, 200 }, + { 56, 0x03, 200 }, + { 3, 0x02, 201 }, + { 6, 0x02, 201 }, + { 10, 0x02, 201 }, + { 15, 0x02, 201 }, + { 24, 0x02, 201 }, + { 31, 0x02, 201 }, + { 41, 0x02, 201 }, + { 56, 0x03, 201 }, + }, + /* 196 */ + { + { 2, 0x02, 202 }, + { 9, 0x02, 202 }, + { 23, 0x02, 202 }, + { 40, 0x03, 202 }, + { 2, 0x02, 205 }, + { 9, 0x02, 205 }, + { 23, 0x02, 205 }, + { 40, 0x03, 205 }, + { 2, 0x02, 210 }, + { 9, 0x02, 210 }, + { 23, 0x02, 210 }, + { 40, 0x03, 210 }, + { 2, 0x02, 213 }, + { 9, 0x02, 213 }, + { 23, 0x02, 213 }, + { 40, 0x03, 213 }, + }, + /* 197 */ + { + { 3, 0x02, 202 }, + { 6, 0x02, 202 }, + { 10, 0x02, 202 }, + { 15, 0x02, 202 }, + { 24, 0x02, 202 }, + { 31, 0x02, 202 }, + { 41, 0x02, 202 }, + { 56, 0x03, 202 }, + { 3, 0x02, 205 }, + { 6, 0x02, 205 }, + { 10, 0x02, 205 }, + { 15, 0x02, 205 }, + { 24, 0x02, 205 }, + { 31, 0x02, 205 }, + { 41, 0x02, 205 }, + { 56, 0x03, 205 }, + }, + /* 198 */ + { + { 3, 0x02, 210 }, + { 6, 0x02, 210 }, + { 10, 0x02, 210 }, + { 15, 0x02, 210 }, + { 24, 0x02, 210 }, + { 31, 0x02, 210 }, + { 41, 0x02, 210 }, + { 56, 0x03, 210 }, + { 3, 0x02, 213 }, + { 6, 0x02, 213 }, + { 10, 0x02, 213 }, + { 15, 0x02, 213 }, + { 24, 0x02, 213 }, + { 31, 0x02, 213 }, + { 41, 0x02, 213 }, + { 56, 0x03, 213 }, + }, + /* 199 */ + { + { 1, 0x02, 218 }, + { 22, 0x03, 218 }, + { 1, 0x02, 219 }, + { 22, 0x03, 219 }, + { 1, 0x02, 238 }, + { 22, 0x03, 238 }, + { 1, 0x02, 240 }, + { 22, 0x03, 240 }, + { 1, 0x02, 242 }, + { 22, 0x03, 242 }, + { 1, 0x02, 243 }, + { 22, 0x03, 243 }, + { 1, 0x02, 255 }, + { 22, 0x03, 255 }, + { 0, 0x03, 203 }, + { 0, 0x03, 204 }, + }, + /* 200 */ + { + { 2, 0x02, 218 }, + { 9, 0x02, 218 }, + { 23, 0x02, 218 }, + { 40, 0x03, 218 }, + { 2, 0x02, 219 }, + { 9, 0x02, 219 }, + { 23, 0x02, 219 }, + { 40, 0x03, 219 }, + { 2, 0x02, 238 }, + { 9, 0x02, 238 }, + { 23, 0x02, 238 }, + { 40, 0x03, 238 }, + { 2, 0x02, 240 }, + { 9, 0x02, 240 }, + { 23, 0x02, 240 }, + { 40, 0x03, 240 }, + }, + /* 201 */ + { + { 3, 0x02, 218 }, + { 6, 0x02, 218 }, + { 10, 0x02, 218 }, + { 15, 0x02, 218 }, + { 24, 0x02, 218 }, + { 31, 0x02, 218 }, + { 41, 0x02, 218 }, + { 56, 0x03, 218 }, + { 3, 0x02, 219 }, + { 6, 0x02, 219 }, + { 10, 0x02, 219 }, + { 15, 0x02, 219 }, + { 24, 0x02, 219 }, + { 31, 0x02, 219 }, + { 41, 0x02, 219 }, + { 56, 0x03, 219 }, + }, + /* 202 */ + { + { 3, 0x02, 238 }, + { 6, 0x02, 238 }, + { 10, 0x02, 238 }, + { 15, 0x02, 238 }, + { 24, 0x02, 238 }, + { 31, 0x02, 238 }, + { 41, 0x02, 238 }, + { 56, 0x03, 238 }, + { 3, 0x02, 240 }, + { 6, 0x02, 240 }, + { 10, 0x02, 240 }, + { 15, 0x02, 240 }, + { 24, 0x02, 240 }, + { 31, 0x02, 240 }, + { 41, 0x02, 240 }, + { 56, 0x03, 240 }, + }, + /* 203 */ + { + { 2, 0x02, 242 }, + { 9, 0x02, 242 }, + { 23, 0x02, 242 }, + { 40, 0x03, 242 }, + { 2, 0x02, 243 }, + { 9, 0x02, 243 }, + { 23, 0x02, 243 }, + { 40, 0x03, 243 }, + { 2, 0x02, 255 }, + { 9, 0x02, 255 }, + { 23, 0x02, 255 }, + { 40, 0x03, 255 }, + { 1, 0x02, 203 }, + { 22, 0x03, 203 }, + { 1, 0x02, 204 }, + { 22, 0x03, 204 }, + }, + /* 204 */ + { + { 3, 0x02, 242 }, + { 6, 0x02, 242 }, + { 10, 0x02, 242 }, + { 15, 0x02, 242 }, + { 24, 0x02, 242 }, + { 31, 0x02, 242 }, + { 41, 0x02, 242 }, + { 56, 0x03, 242 }, + { 3, 0x02, 243 }, + { 6, 0x02, 243 }, + { 10, 0x02, 243 }, + { 15, 0x02, 243 }, + { 24, 0x02, 243 }, + { 31, 0x02, 243 }, + { 41, 0x02, 243 }, + { 56, 0x03, 243 }, + }, + /* 205 */ + { + { 3, 0x02, 255 }, + { 6, 0x02, 255 }, + { 10, 0x02, 255 }, + { 15, 0x02, 255 }, + { 24, 0x02, 255 }, + { 31, 0x02, 255 }, + { 41, 0x02, 255 }, + { 56, 0x03, 255 }, + { 2, 0x02, 203 }, + { 9, 0x02, 203 }, + { 23, 0x02, 203 }, + { 40, 0x03, 203 }, + { 2, 0x02, 204 }, + { 9, 0x02, 204 }, + { 23, 0x02, 204 }, + { 40, 0x03, 204 }, + }, + /* 206 */ + { + { 3, 0x02, 203 }, + { 6, 0x02, 203 }, + { 10, 0x02, 203 }, + { 15, 0x02, 203 }, + { 24, 0x02, 203 }, + { 31, 0x02, 203 }, + { 41, 0x02, 203 }, + { 56, 0x03, 203 }, + { 3, 0x02, 204 }, + { 6, 0x02, 204 }, + { 10, 0x02, 204 }, + { 15, 0x02, 204 }, + { 24, 0x02, 204 }, + { 31, 0x02, 204 }, + { 41, 0x02, 204 }, + { 56, 0x03, 204 }, + }, + /* 207 */ + { + { 211, 0x00, 0 }, + { 212, 0x00, 0 }, + { 214, 0x00, 0 }, + { 215, 0x00, 0 }, + { 218, 0x00, 0 }, + { 219, 0x00, 0 }, + { 221, 0x00, 0 }, + { 222, 0x00, 0 }, + { 226, 0x00, 0 }, + { 228, 0x00, 0 }, + { 232, 0x00, 0 }, + { 235, 0x00, 0 }, + { 240, 0x00, 0 }, + { 243, 0x00, 0 }, + { 247, 0x00, 0 }, + { 250, 0x00, 0 }, + }, + /* 208 */ + { + { 0, 0x03, 211 }, + { 0, 0x03, 212 }, + { 0, 0x03, 214 }, + { 0, 0x03, 221 }, + { 0, 0x03, 222 }, + { 0, 0x03, 223 }, + { 0, 0x03, 241 }, + { 0, 0x03, 244 }, + { 0, 0x03, 245 }, + { 0, 0x03, 246 }, + { 0, 0x03, 247 }, + { 0, 0x03, 248 }, + { 0, 0x03, 250 }, + { 0, 0x03, 251 }, + { 0, 0x03, 252 }, + { 0, 0x03, 253 }, + }, + /* 209 */ + { + { 1, 0x02, 211 }, + { 22, 0x03, 211 }, + { 1, 0x02, 212 }, + { 22, 0x03, 212 }, + { 1, 0x02, 214 }, + { 22, 0x03, 214 }, + { 1, 0x02, 221 }, + { 22, 0x03, 221 }, + { 1, 0x02, 222 }, + { 22, 0x03, 222 }, + { 1, 0x02, 223 }, + { 22, 0x03, 223 }, + { 1, 0x02, 241 }, + { 22, 0x03, 241 }, + { 1, 0x02, 244 }, + { 22, 0x03, 244 }, + }, + /* 210 */ + { + { 2, 0x02, 211 }, + { 9, 0x02, 211 }, + { 23, 0x02, 211 }, + { 40, 0x03, 211 }, + { 2, 0x02, 212 }, + { 9, 0x02, 212 }, + { 23, 0x02, 212 }, + { 40, 0x03, 212 }, + { 2, 0x02, 214 }, + { 9, 0x02, 214 }, + { 23, 0x02, 214 }, + { 40, 0x03, 214 }, + { 2, 0x02, 221 }, + { 9, 0x02, 221 }, + { 23, 0x02, 221 }, + { 40, 0x03, 221 }, + }, + /* 211 */ + { + { 3, 0x02, 211 }, + { 6, 0x02, 211 }, + { 10, 0x02, 211 }, + { 15, 0x02, 211 }, + { 24, 0x02, 211 }, + { 31, 0x02, 211 }, + { 41, 0x02, 211 }, + { 56, 0x03, 211 }, + { 3, 0x02, 212 }, + { 6, 0x02, 212 }, + { 10, 0x02, 212 }, + { 15, 0x02, 212 }, + { 24, 0x02, 212 }, + { 31, 0x02, 212 }, + { 41, 0x02, 212 }, + { 56, 0x03, 212 }, + }, + /* 212 */ + { + { 3, 0x02, 214 }, + { 6, 0x02, 214 }, + { 10, 0x02, 214 }, + { 15, 0x02, 214 }, + { 24, 0x02, 214 }, + { 31, 0x02, 214 }, + { 41, 0x02, 214 }, + { 56, 0x03, 214 }, + { 3, 0x02, 221 }, + { 6, 0x02, 221 }, + { 10, 0x02, 221 }, + { 15, 0x02, 221 }, + { 24, 0x02, 221 }, + { 31, 0x02, 221 }, + { 41, 0x02, 221 }, + { 56, 0x03, 221 }, + }, + /* 213 */ + { + { 2, 0x02, 222 }, + { 9, 0x02, 222 }, + { 23, 0x02, 222 }, + { 40, 0x03, 222 }, + { 2, 0x02, 223 }, + { 9, 0x02, 223 }, + { 23, 0x02, 223 }, + { 40, 0x03, 223 }, + { 2, 0x02, 241 }, + { 9, 0x02, 241 }, + { 23, 0x02, 241 }, + { 40, 0x03, 241 }, + { 2, 0x02, 244 }, + { 9, 0x02, 244 }, + { 23, 0x02, 244 }, + { 40, 0x03, 244 }, + }, + /* 214 */ + { + { 3, 0x02, 222 }, + { 6, 0x02, 222 }, + { 10, 0x02, 222 }, + { 15, 0x02, 222 }, + { 24, 0x02, 222 }, + { 31, 0x02, 222 }, + { 41, 0x02, 222 }, + { 56, 0x03, 222 }, + { 3, 0x02, 223 }, + { 6, 0x02, 223 }, + { 10, 0x02, 223 }, + { 15, 0x02, 223 }, + { 24, 0x02, 223 }, + { 31, 0x02, 223 }, + { 41, 0x02, 223 }, + { 56, 0x03, 223 }, + }, + /* 215 */ + { + { 3, 0x02, 241 }, + { 6, 0x02, 241 }, + { 10, 0x02, 241 }, + { 15, 0x02, 241 }, + { 24, 0x02, 241 }, + { 31, 0x02, 241 }, + { 41, 0x02, 241 }, + { 56, 0x03, 241 }, + { 3, 0x02, 244 }, + { 6, 0x02, 244 }, + { 10, 0x02, 244 }, + { 15, 0x02, 244 }, + { 24, 0x02, 244 }, + { 31, 0x02, 244 }, + { 41, 0x02, 244 }, + { 56, 0x03, 244 }, + }, + /* 216 */ + { + { 1, 0x02, 245 }, + { 22, 0x03, 245 }, + { 1, 0x02, 246 }, + { 22, 0x03, 246 }, + { 1, 0x02, 247 }, + { 22, 0x03, 247 }, + { 1, 0x02, 248 }, + { 22, 0x03, 248 }, + { 1, 0x02, 250 }, + { 22, 0x03, 250 }, + { 1, 0x02, 251 }, + { 22, 0x03, 251 }, + { 1, 0x02, 252 }, + { 22, 0x03, 252 }, + { 1, 0x02, 253 }, + { 22, 0x03, 253 }, + }, + /* 217 */ + { + { 2, 0x02, 245 }, + { 9, 0x02, 245 }, + { 23, 0x02, 245 }, + { 40, 0x03, 245 }, + { 2, 0x02, 246 }, + { 9, 0x02, 246 }, + { 23, 0x02, 246 }, + { 40, 0x03, 246 }, + { 2, 0x02, 247 }, + { 9, 0x02, 247 }, + { 23, 0x02, 247 }, + { 40, 0x03, 247 }, + { 2, 0x02, 248 }, + { 9, 0x02, 248 }, + { 23, 0x02, 248 }, + { 40, 0x03, 248 }, + }, + /* 218 */ + { + { 3, 0x02, 245 }, + { 6, 0x02, 245 }, + { 10, 0x02, 245 }, + { 15, 0x02, 245 }, + { 24, 0x02, 245 }, + { 31, 0x02, 245 }, + { 41, 0x02, 245 }, + { 56, 0x03, 245 }, + { 3, 0x02, 246 }, + { 6, 0x02, 246 }, + { 10, 0x02, 246 }, + { 15, 0x02, 246 }, + { 24, 0x02, 246 }, + { 31, 0x02, 246 }, + { 41, 0x02, 246 }, + { 56, 0x03, 246 }, + }, + /* 219 */ + { + { 3, 0x02, 247 }, + { 6, 0x02, 247 }, + { 10, 0x02, 247 }, + { 15, 0x02, 247 }, + { 24, 0x02, 247 }, + { 31, 0x02, 247 }, + { 41, 0x02, 247 }, + { 56, 0x03, 247 }, + { 3, 0x02, 248 }, + { 6, 0x02, 248 }, + { 10, 0x02, 248 }, + { 15, 0x02, 248 }, + { 24, 0x02, 248 }, + { 31, 0x02, 248 }, + { 41, 0x02, 248 }, + { 56, 0x03, 248 }, + }, + /* 220 */ + { + { 2, 0x02, 250 }, + { 9, 0x02, 250 }, + { 23, 0x02, 250 }, + { 40, 0x03, 250 }, + { 2, 0x02, 251 }, + { 9, 0x02, 251 }, + { 23, 0x02, 251 }, + { 40, 0x03, 251 }, + { 2, 0x02, 252 }, + { 9, 0x02, 252 }, + { 23, 0x02, 252 }, + { 40, 0x03, 252 }, + { 2, 0x02, 253 }, + { 9, 0x02, 253 }, + { 23, 0x02, 253 }, + { 40, 0x03, 253 }, + }, + /* 221 */ + { + { 3, 0x02, 250 }, + { 6, 0x02, 250 }, + { 10, 0x02, 250 }, + { 15, 0x02, 250 }, + { 24, 0x02, 250 }, + { 31, 0x02, 250 }, + { 41, 0x02, 250 }, + { 56, 0x03, 250 }, + { 3, 0x02, 251 }, + { 6, 0x02, 251 }, + { 10, 0x02, 251 }, + { 15, 0x02, 251 }, + { 24, 0x02, 251 }, + { 31, 0x02, 251 }, + { 41, 0x02, 251 }, + { 56, 0x03, 251 }, + }, + /* 222 */ + { + { 3, 0x02, 252 }, + { 6, 0x02, 252 }, + { 10, 0x02, 252 }, + { 15, 0x02, 252 }, + { 24, 0x02, 252 }, + { 31, 0x02, 252 }, + { 41, 0x02, 252 }, + { 56, 0x03, 252 }, + { 3, 0x02, 253 }, + { 6, 0x02, 253 }, + { 10, 0x02, 253 }, + { 15, 0x02, 253 }, + { 24, 0x02, 253 }, + { 31, 0x02, 253 }, + { 41, 0x02, 253 }, + { 56, 0x03, 253 }, + }, + /* 223 */ + { + { 0, 0x03, 254 }, + { 227, 0x00, 0 }, + { 229, 0x00, 0 }, + { 230, 0x00, 0 }, + { 233, 0x00, 0 }, + { 234, 0x00, 0 }, + { 236, 0x00, 0 }, + { 237, 0x00, 0 }, + { 241, 0x00, 0 }, + { 242, 0x00, 0 }, + { 244, 0x00, 0 }, + { 245, 0x00, 0 }, + { 248, 0x00, 0 }, + { 249, 0x00, 0 }, + { 251, 0x00, 0 }, + { 252, 0x00, 0 }, + }, + /* 224 */ + { + { 1, 0x02, 254 }, + { 22, 0x03, 254 }, + { 0, 0x03, 2 }, + { 0, 0x03, 3 }, + { 0, 0x03, 4 }, + { 0, 0x03, 5 }, + { 0, 0x03, 6 }, + { 0, 0x03, 7 }, + { 0, 0x03, 8 }, + { 0, 0x03, 11 }, + { 0, 0x03, 12 }, + { 0, 0x03, 14 }, + { 0, 0x03, 15 }, + { 0, 0x03, 16 }, + { 0, 0x03, 17 }, + { 0, 0x03, 18 }, + }, + /* 225 */ + { + { 2, 0x02, 254 }, + { 9, 0x02, 254 }, + { 23, 0x02, 254 }, + { 40, 0x03, 254 }, + { 1, 0x02, 2 }, + { 22, 0x03, 2 }, + { 1, 0x02, 3 }, + { 22, 0x03, 3 }, + { 1, 0x02, 4 }, + { 22, 0x03, 4 }, + { 1, 0x02, 5 }, + { 22, 0x03, 5 }, + { 1, 0x02, 6 }, + { 22, 0x03, 6 }, + { 1, 0x02, 7 }, + { 22, 0x03, 7 }, + }, + /* 226 */ + { + { 3, 0x02, 254 }, + { 6, 0x02, 254 }, + { 10, 0x02, 254 }, + { 15, 0x02, 254 }, + { 24, 0x02, 254 }, + { 31, 0x02, 254 }, + { 41, 0x02, 254 }, + { 56, 0x03, 254 }, + { 2, 0x02, 2 }, + { 9, 0x02, 2 }, + { 23, 0x02, 2 }, + { 40, 0x03, 2 }, + { 2, 0x02, 3 }, + { 9, 0x02, 3 }, + { 23, 0x02, 3 }, + { 40, 0x03, 3 }, + }, + /* 227 */ + { + { 3, 0x02, 2 }, + { 6, 0x02, 2 }, + { 10, 0x02, 2 }, + { 15, 0x02, 2 }, + { 24, 0x02, 2 }, + { 31, 0x02, 2 }, + { 41, 0x02, 2 }, + { 56, 0x03, 2 }, + { 3, 0x02, 3 }, + { 6, 0x02, 3 }, + { 10, 0x02, 3 }, + { 15, 0x02, 3 }, + { 24, 0x02, 3 }, + { 31, 0x02, 3 }, + { 41, 0x02, 3 }, + { 56, 0x03, 3 }, + }, + /* 228 */ + { + { 2, 0x02, 4 }, + { 9, 0x02, 4 }, + { 23, 0x02, 4 }, + { 40, 0x03, 4 }, + { 2, 0x02, 5 }, + { 9, 0x02, 5 }, + { 23, 0x02, 5 }, + { 40, 0x03, 5 }, + { 2, 0x02, 6 }, + { 9, 0x02, 6 }, + { 23, 0x02, 6 }, + { 40, 0x03, 6 }, + { 2, 0x02, 7 }, + { 9, 0x02, 7 }, + { 23, 0x02, 7 }, + { 40, 0x03, 7 }, + }, + /* 229 */ + { + { 3, 0x02, 4 }, + { 6, 0x02, 4 }, + { 10, 0x02, 4 }, + { 15, 0x02, 4 }, + { 24, 0x02, 4 }, + { 31, 0x02, 4 }, + { 41, 0x02, 4 }, + { 56, 0x03, 4 }, + { 3, 0x02, 5 }, + { 6, 0x02, 5 }, + { 10, 0x02, 5 }, + { 15, 0x02, 5 }, + { 24, 0x02, 5 }, + { 31, 0x02, 5 }, + { 41, 0x02, 5 }, + { 56, 0x03, 5 }, + }, + /* 230 */ + { + { 3, 0x02, 6 }, + { 6, 0x02, 6 }, + { 10, 0x02, 6 }, + { 15, 0x02, 6 }, + { 24, 0x02, 6 }, + { 31, 0x02, 6 }, + { 41, 0x02, 6 }, + { 56, 0x03, 6 }, + { 3, 0x02, 7 }, + { 6, 0x02, 7 }, + { 10, 0x02, 7 }, + { 15, 0x02, 7 }, + { 24, 0x02, 7 }, + { 31, 0x02, 7 }, + { 41, 0x02, 7 }, + { 56, 0x03, 7 }, + }, + /* 231 */ + { + { 1, 0x02, 8 }, + { 22, 0x03, 8 }, + { 1, 0x02, 11 }, + { 22, 0x03, 11 }, + { 1, 0x02, 12 }, + { 22, 0x03, 12 }, + { 1, 0x02, 14 }, + { 22, 0x03, 14 }, + { 1, 0x02, 15 }, + { 22, 0x03, 15 }, + { 1, 0x02, 16 }, + { 22, 0x03, 16 }, + { 1, 0x02, 17 }, + { 22, 0x03, 17 }, + { 1, 0x02, 18 }, + { 22, 0x03, 18 }, + }, + /* 232 */ + { + { 2, 0x02, 8 }, + { 9, 0x02, 8 }, + { 23, 0x02, 8 }, + { 40, 0x03, 8 }, + { 2, 0x02, 11 }, + { 9, 0x02, 11 }, + { 23, 0x02, 11 }, + { 40, 0x03, 11 }, + { 2, 0x02, 12 }, + { 9, 0x02, 12 }, + { 23, 0x02, 12 }, + { 40, 0x03, 12 }, + { 2, 0x02, 14 }, + { 9, 0x02, 14 }, + { 23, 0x02, 14 }, + { 40, 0x03, 14 }, + }, + /* 233 */ + { + { 3, 0x02, 8 }, + { 6, 0x02, 8 }, + { 10, 0x02, 8 }, + { 15, 0x02, 8 }, + { 24, 0x02, 8 }, + { 31, 0x02, 8 }, + { 41, 0x02, 8 }, + { 56, 0x03, 8 }, + { 3, 0x02, 11 }, + { 6, 0x02, 11 }, + { 10, 0x02, 11 }, + { 15, 0x02, 11 }, + { 24, 0x02, 11 }, + { 31, 0x02, 11 }, + { 41, 0x02, 11 }, + { 56, 0x03, 11 }, + }, + /* 234 */ + { + { 3, 0x02, 12 }, + { 6, 0x02, 12 }, + { 10, 0x02, 12 }, + { 15, 0x02, 12 }, + { 24, 0x02, 12 }, + { 31, 0x02, 12 }, + { 41, 0x02, 12 }, + { 56, 0x03, 12 }, + { 3, 0x02, 14 }, + { 6, 0x02, 14 }, + { 10, 0x02, 14 }, + { 15, 0x02, 14 }, + { 24, 0x02, 14 }, + { 31, 0x02, 14 }, + { 41, 0x02, 14 }, + { 56, 0x03, 14 }, + }, + /* 235 */ + { + { 2, 0x02, 15 }, + { 9, 0x02, 15 }, + { 23, 0x02, 15 }, + { 40, 0x03, 15 }, + { 2, 0x02, 16 }, + { 9, 0x02, 16 }, + { 23, 0x02, 16 }, + { 40, 0x03, 16 }, + { 2, 0x02, 17 }, + { 9, 0x02, 17 }, + { 23, 0x02, 17 }, + { 40, 0x03, 17 }, + { 2, 0x02, 18 }, + { 9, 0x02, 18 }, + { 23, 0x02, 18 }, + { 40, 0x03, 18 }, + }, + /* 236 */ + { + { 3, 0x02, 15 }, + { 6, 0x02, 15 }, + { 10, 0x02, 15 }, + { 15, 0x02, 15 }, + { 24, 0x02, 15 }, + { 31, 0x02, 15 }, + { 41, 0x02, 15 }, + { 56, 0x03, 15 }, + { 3, 0x02, 16 }, + { 6, 0x02, 16 }, + { 10, 0x02, 16 }, + { 15, 0x02, 16 }, + { 24, 0x02, 16 }, + { 31, 0x02, 16 }, + { 41, 0x02, 16 }, + { 56, 0x03, 16 }, + }, + /* 237 */ + { + { 3, 0x02, 17 }, + { 6, 0x02, 17 }, + { 10, 0x02, 17 }, + { 15, 0x02, 17 }, + { 24, 0x02, 17 }, + { 31, 0x02, 17 }, + { 41, 0x02, 17 }, + { 56, 0x03, 17 }, + { 3, 0x02, 18 }, + { 6, 0x02, 18 }, + { 10, 0x02, 18 }, + { 15, 0x02, 18 }, + { 24, 0x02, 18 }, + { 31, 0x02, 18 }, + { 41, 0x02, 18 }, + { 56, 0x03, 18 }, + }, + /* 238 */ + { + { 0, 0x03, 19 }, + { 0, 0x03, 20 }, + { 0, 0x03, 21 }, + { 0, 0x03, 23 }, + { 0, 0x03, 24 }, + { 0, 0x03, 25 }, + { 0, 0x03, 26 }, + { 0, 0x03, 27 }, + { 0, 0x03, 28 }, + { 0, 0x03, 29 }, + { 0, 0x03, 30 }, + { 0, 0x03, 31 }, + { 0, 0x03, 127 }, + { 0, 0x03, 220 }, + { 0, 0x03, 249 }, + { 253, 0x00, 0 }, + }, + /* 239 */ + { + { 1, 0x02, 19 }, + { 22, 0x03, 19 }, + { 1, 0x02, 20 }, + { 22, 0x03, 20 }, + { 1, 0x02, 21 }, + { 22, 0x03, 21 }, + { 1, 0x02, 23 }, + { 22, 0x03, 23 }, + { 1, 0x02, 24 }, + { 22, 0x03, 24 }, + { 1, 0x02, 25 }, + { 22, 0x03, 25 }, + { 1, 0x02, 26 }, + { 22, 0x03, 26 }, + { 1, 0x02, 27 }, + { 22, 0x03, 27 }, + }, + /* 240 */ + { + { 2, 0x02, 19 }, + { 9, 0x02, 19 }, + { 23, 0x02, 19 }, + { 40, 0x03, 19 }, + { 2, 0x02, 20 }, + { 9, 0x02, 20 }, + { 23, 0x02, 20 }, + { 40, 0x03, 20 }, + { 2, 0x02, 21 }, + { 9, 0x02, 21 }, + { 23, 0x02, 21 }, + { 40, 0x03, 21 }, + { 2, 0x02, 23 }, + { 9, 0x02, 23 }, + { 23, 0x02, 23 }, + { 40, 0x03, 23 }, + }, + /* 241 */ + { + { 3, 0x02, 19 }, + { 6, 0x02, 19 }, + { 10, 0x02, 19 }, + { 15, 0x02, 19 }, + { 24, 0x02, 19 }, + { 31, 0x02, 19 }, + { 41, 0x02, 19 }, + { 56, 0x03, 19 }, + { 3, 0x02, 20 }, + { 6, 0x02, 20 }, + { 10, 0x02, 20 }, + { 15, 0x02, 20 }, + { 24, 0x02, 20 }, + { 31, 0x02, 20 }, + { 41, 0x02, 20 }, + { 56, 0x03, 20 }, + }, + /* 242 */ + { + { 3, 0x02, 21 }, + { 6, 0x02, 21 }, + { 10, 0x02, 21 }, + { 15, 0x02, 21 }, + { 24, 0x02, 21 }, + { 31, 0x02, 21 }, + { 41, 0x02, 21 }, + { 56, 0x03, 21 }, + { 3, 0x02, 23 }, + { 6, 0x02, 23 }, + { 10, 0x02, 23 }, + { 15, 0x02, 23 }, + { 24, 0x02, 23 }, + { 31, 0x02, 23 }, + { 41, 0x02, 23 }, + { 56, 0x03, 23 }, + }, + /* 243 */ + { + { 2, 0x02, 24 }, + { 9, 0x02, 24 }, + { 23, 0x02, 24 }, + { 40, 0x03, 24 }, + { 2, 0x02, 25 }, + { 9, 0x02, 25 }, + { 23, 0x02, 25 }, + { 40, 0x03, 25 }, + { 2, 0x02, 26 }, + { 9, 0x02, 26 }, + { 23, 0x02, 26 }, + { 40, 0x03, 26 }, + { 2, 0x02, 27 }, + { 9, 0x02, 27 }, + { 23, 0x02, 27 }, + { 40, 0x03, 27 }, + }, + /* 244 */ + { + { 3, 0x02, 24 }, + { 6, 0x02, 24 }, + { 10, 0x02, 24 }, + { 15, 0x02, 24 }, + { 24, 0x02, 24 }, + { 31, 0x02, 24 }, + { 41, 0x02, 24 }, + { 56, 0x03, 24 }, + { 3, 0x02, 25 }, + { 6, 0x02, 25 }, + { 10, 0x02, 25 }, + { 15, 0x02, 25 }, + { 24, 0x02, 25 }, + { 31, 0x02, 25 }, + { 41, 0x02, 25 }, + { 56, 0x03, 25 }, + }, + /* 245 */ + { + { 3, 0x02, 26 }, + { 6, 0x02, 26 }, + { 10, 0x02, 26 }, + { 15, 0x02, 26 }, + { 24, 0x02, 26 }, + { 31, 0x02, 26 }, + { 41, 0x02, 26 }, + { 56, 0x03, 26 }, + { 3, 0x02, 27 }, + { 6, 0x02, 27 }, + { 10, 0x02, 27 }, + { 15, 0x02, 27 }, + { 24, 0x02, 27 }, + { 31, 0x02, 27 }, + { 41, 0x02, 27 }, + { 56, 0x03, 27 }, + }, + /* 246 */ + { + { 1, 0x02, 28 }, + { 22, 0x03, 28 }, + { 1, 0x02, 29 }, + { 22, 0x03, 29 }, + { 1, 0x02, 30 }, + { 22, 0x03, 30 }, + { 1, 0x02, 31 }, + { 22, 0x03, 31 }, + { 1, 0x02, 127 }, + { 22, 0x03, 127 }, + { 1, 0x02, 220 }, + { 22, 0x03, 220 }, + { 1, 0x02, 249 }, + { 22, 0x03, 249 }, + { 254, 0x00, 0 }, + { 255, 0x00, 0 }, + }, + /* 247 */ + { + { 2, 0x02, 28 }, + { 9, 0x02, 28 }, + { 23, 0x02, 28 }, + { 40, 0x03, 28 }, + { 2, 0x02, 29 }, + { 9, 0x02, 29 }, + { 23, 0x02, 29 }, + { 40, 0x03, 29 }, + { 2, 0x02, 30 }, + { 9, 0x02, 30 }, + { 23, 0x02, 30 }, + { 40, 0x03, 30 }, + { 2, 0x02, 31 }, + { 9, 0x02, 31 }, + { 23, 0x02, 31 }, + { 40, 0x03, 31 }, + }, + /* 248 */ + { + { 3, 0x02, 28 }, + { 6, 0x02, 28 }, + { 10, 0x02, 28 }, + { 15, 0x02, 28 }, + { 24, 0x02, 28 }, + { 31, 0x02, 28 }, + { 41, 0x02, 28 }, + { 56, 0x03, 28 }, + { 3, 0x02, 29 }, + { 6, 0x02, 29 }, + { 10, 0x02, 29 }, + { 15, 0x02, 29 }, + { 24, 0x02, 29 }, + { 31, 0x02, 29 }, + { 41, 0x02, 29 }, + { 56, 0x03, 29 }, + }, + /* 249 */ + { + { 3, 0x02, 30 }, + { 6, 0x02, 30 }, + { 10, 0x02, 30 }, + { 15, 0x02, 30 }, + { 24, 0x02, 30 }, + { 31, 0x02, 30 }, + { 41, 0x02, 30 }, + { 56, 0x03, 30 }, + { 3, 0x02, 31 }, + { 6, 0x02, 31 }, + { 10, 0x02, 31 }, + { 15, 0x02, 31 }, + { 24, 0x02, 31 }, + { 31, 0x02, 31 }, + { 41, 0x02, 31 }, + { 56, 0x03, 31 }, + }, + /* 250 */ + { + { 2, 0x02, 127 }, + { 9, 0x02, 127 }, + { 23, 0x02, 127 }, + { 40, 0x03, 127 }, + { 2, 0x02, 220 }, + { 9, 0x02, 220 }, + { 23, 0x02, 220 }, + { 40, 0x03, 220 }, + { 2, 0x02, 249 }, + { 9, 0x02, 249 }, + { 23, 0x02, 249 }, + { 40, 0x03, 249 }, + { 0, 0x03, 10 }, + { 0, 0x03, 13 }, + { 0, 0x03, 22 }, + { 0, 0x04, 0 }, + }, + /* 251 */ + { + { 3, 0x02, 127 }, + { 6, 0x02, 127 }, + { 10, 0x02, 127 }, + { 15, 0x02, 127 }, + { 24, 0x02, 127 }, + { 31, 0x02, 127 }, + { 41, 0x02, 127 }, + { 56, 0x03, 127 }, + { 3, 0x02, 220 }, + { 6, 0x02, 220 }, + { 10, 0x02, 220 }, + { 15, 0x02, 220 }, + { 24, 0x02, 220 }, + { 31, 0x02, 220 }, + { 41, 0x02, 220 }, + { 56, 0x03, 220 }, + }, + /* 252 */ + { + { 3, 0x02, 249 }, + { 6, 0x02, 249 }, + { 10, 0x02, 249 }, + { 15, 0x02, 249 }, + { 24, 0x02, 249 }, + { 31, 0x02, 249 }, + { 41, 0x02, 249 }, + { 56, 0x03, 249 }, + { 1, 0x02, 10 }, + { 22, 0x03, 10 }, + { 1, 0x02, 13 }, + { 22, 0x03, 13 }, + { 1, 0x02, 22 }, + { 22, 0x03, 22 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + }, + /* 253 */ + { + { 2, 0x02, 10 }, + { 9, 0x02, 10 }, + { 23, 0x02, 10 }, + { 40, 0x03, 10 }, + { 2, 0x02, 13 }, + { 9, 0x02, 13 }, + { 23, 0x02, 13 }, + { 40, 0x03, 13 }, + { 2, 0x02, 22 }, + { 9, 0x02, 22 }, + { 23, 0x02, 22 }, + { 40, 0x03, 22 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + }, + /* 254 */ + { + { 3, 0x02, 10 }, + { 6, 0x02, 10 }, + { 10, 0x02, 10 }, + { 15, 0x02, 10 }, + { 24, 0x02, 10 }, + { 31, 0x02, 10 }, + { 41, 0x02, 10 }, + { 56, 0x03, 10 }, + { 3, 0x02, 13 }, + { 6, 0x02, 13 }, + { 10, 0x02, 13 }, + { 15, 0x02, 13 }, + { 24, 0x02, 13 }, + { 31, 0x02, 13 }, + { 41, 0x02, 13 }, + { 56, 0x03, 13 }, + }, + /* 255 */ + { + { 3, 0x02, 22 }, + { 6, 0x02, 22 }, + { 10, 0x02, 22 }, + { 15, 0x02, 22 }, + { 24, 0x02, 22 }, + { 31, 0x02, 22 }, + { 41, 0x02, 22 }, + { 56, 0x03, 22 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + { 0, 0x04, 0 }, + }, +}; + + +#if LS_HPACK_USE_LARGE_TABLES +static const struct hdec { uint8_t lens; uint8_t out[3]; } hdecs[] = +{ +/* + ,------------- Number of bits consumed by the index + | ,------ Number of bytes in output; 0 means long or invalid code + | | ,--- Output, aligned to the left + V V V */ +/* 0 */ {(15<<2)|3,{48,48,48}}, +/* 1 */ {(15<<2)|3,{48,48,48}}, +/* 2 */ {(15<<2)|3,{48,48,49}}, +/* 3 */ {(15<<2)|3,{48,48,49}}, +/* 4 */ {(15<<2)|3,{48,48,50}}, +/* 5 */ {(15<<2)|3,{48,48,50}}, +/* 6 */ {(15<<2)|3,{48,48,97}}, +/* 7 */ {(15<<2)|3,{48,48,97}}, +/* 8 */ {(15<<2)|3,{48,48,99}}, +/* 9 */ {(15<<2)|3,{48,48,99}}, +/* 10 */ {(15<<2)|3,{48,48,101}}, +/* 11 */ {(15<<2)|3,{48,48,101}}, +/* 12 */ {(15<<2)|3,{48,48,105}}, +/* 13 */ {(15<<2)|3,{48,48,105}}, +/* 14 */ {(15<<2)|3,{48,48,111}}, +/* 15 */ {(15<<2)|3,{48,48,111}}, +/* 16 */ {(15<<2)|3,{48,48,115}}, +/* 17 */ {(15<<2)|3,{48,48,115}}, +/* 18 */ {(15<<2)|3,{48,48,116}}, +/* 19 */ {(15<<2)|3,{48,48,116}}, +/* 20 */ {(16<<2)|3,{48,48,32}}, +/* 21 */ {(16<<2)|3,{48,48,37}}, +/* 22 */ {(16<<2)|3,{48,48,45}}, +/* 23 */ {(16<<2)|3,{48,48,46}}, +/* 24 */ {(16<<2)|3,{48,48,47}}, +/* 25 */ {(16<<2)|3,{48,48,51}}, +/* 26 */ {(16<<2)|3,{48,48,52}}, +/* 27 */ {(16<<2)|3,{48,48,53}}, +/* 28 */ {(16<<2)|3,{48,48,54}}, +/* 29 */ {(16<<2)|3,{48,48,55}}, +/* 30 */ {(16<<2)|3,{48,48,56}}, +/* 31 */ {(16<<2)|3,{48,48,57}}, +/* 32 */ {(16<<2)|3,{48,48,61}}, +/* 33 */ {(16<<2)|3,{48,48,65}}, +/* 34 */ {(16<<2)|3,{48,48,95}}, +/* 35 */ {(16<<2)|3,{48,48,98}}, +/* 36 */ {(16<<2)|3,{48,48,100}}, +/* 37 */ {(16<<2)|3,{48,48,102}}, +/* 38 */ {(16<<2)|3,{48,48,103}}, +/* 39 */ {(16<<2)|3,{48,48,104}}, +/* 40 */ {(16<<2)|3,{48,48,108}}, +/* 41 */ {(16<<2)|3,{48,48,109}}, +/* 42 */ {(16<<2)|3,{48,48,110}}, +/* 43 */ {(16<<2)|3,{48,48,112}}, +/* 44 */ {(16<<2)|3,{48,48,114}}, +/* 45 */ {(16<<2)|3,{48,48,117}}, +/* 46 */ {(10<<2)|2,{48,48,0}}, +/* 47 */ {(10<<2)|2,{48,48,0}}, +/* 48 */ {(10<<2)|2,{48,48,0}}, +/* 49 */ {(10<<2)|2,{48,48,0}}, +/* 50 */ {(10<<2)|2,{48,48,0}}, +/* 51 */ {(10<<2)|2,{48,48,0}}, +/* 52 */ {(10<<2)|2,{48,48,0}}, +/* 53 */ {(10<<2)|2,{48,48,0}}, +/* 54 */ {(10<<2)|2,{48,48,0}}, +/* 55 */ {(10<<2)|2,{48,48,0}}, +/* 56 */ {(10<<2)|2,{48,48,0}}, +/* 57 */ {(10<<2)|2,{48,48,0}}, +/* 58 */ {(10<<2)|2,{48,48,0}}, +/* 59 */ {(10<<2)|2,{48,48,0}}, +/* 60 */ {(10<<2)|2,{48,48,0}}, +/* 61 */ {(10<<2)|2,{48,48,0}}, +/* 62 */ {(10<<2)|2,{48,48,0}}, +/* 63 */ {(10<<2)|2,{48,48,0}}, +/* 64 */ {(15<<2)|3,{48,49,48}}, +/* 65 */ {(15<<2)|3,{48,49,48}}, +/* 66 */ {(15<<2)|3,{48,49,49}}, +/* 67 */ {(15<<2)|3,{48,49,49}}, +/* 68 */ {(15<<2)|3,{48,49,50}}, +/* 69 */ {(15<<2)|3,{48,49,50}}, +/* 70 */ {(15<<2)|3,{48,49,97}}, +/* 71 */ {(15<<2)|3,{48,49,97}}, +/* 72 */ {(15<<2)|3,{48,49,99}}, +/* 73 */ {(15<<2)|3,{48,49,99}}, +/* 74 */ {(15<<2)|3,{48,49,101}}, +/* 75 */ {(15<<2)|3,{48,49,101}}, +/* 76 */ {(15<<2)|3,{48,49,105}}, +/* 77 */ {(15<<2)|3,{48,49,105}}, +/* 78 */ {(15<<2)|3,{48,49,111}}, +/* 79 */ {(15<<2)|3,{48,49,111}}, +/* 80 */ {(15<<2)|3,{48,49,115}}, +/* 81 */ {(15<<2)|3,{48,49,115}}, +/* 82 */ {(15<<2)|3,{48,49,116}}, +/* 83 */ {(15<<2)|3,{48,49,116}}, +/* 84 */ {(16<<2)|3,{48,49,32}}, +/* 85 */ {(16<<2)|3,{48,49,37}}, +/* 86 */ {(16<<2)|3,{48,49,45}}, +/* 87 */ {(16<<2)|3,{48,49,46}}, +/* 88 */ {(16<<2)|3,{48,49,47}}, +/* 89 */ {(16<<2)|3,{48,49,51}}, +/* 90 */ {(16<<2)|3,{48,49,52}}, +/* 91 */ {(16<<2)|3,{48,49,53}}, +/* 92 */ {(16<<2)|3,{48,49,54}}, +/* 93 */ {(16<<2)|3,{48,49,55}}, +/* 94 */ {(16<<2)|3,{48,49,56}}, +/* 95 */ {(16<<2)|3,{48,49,57}}, +/* 96 */ {(16<<2)|3,{48,49,61}}, +/* 97 */ {(16<<2)|3,{48,49,65}}, +/* 98 */ {(16<<2)|3,{48,49,95}}, +/* 99 */ {(16<<2)|3,{48,49,98}}, +/* 100 */ {(16<<2)|3,{48,49,100}}, +/* 101 */ {(16<<2)|3,{48,49,102}}, +/* 102 */ {(16<<2)|3,{48,49,103}}, +/* 103 */ {(16<<2)|3,{48,49,104}}, +/* 104 */ {(16<<2)|3,{48,49,108}}, +/* 105 */ {(16<<2)|3,{48,49,109}}, +/* 106 */ {(16<<2)|3,{48,49,110}}, +/* 107 */ {(16<<2)|3,{48,49,112}}, +/* 108 */ {(16<<2)|3,{48,49,114}}, +/* 109 */ {(16<<2)|3,{48,49,117}}, +/* 110 */ {(10<<2)|2,{48,49,0}}, +/* 111 */ {(10<<2)|2,{48,49,0}}, +/* 112 */ {(10<<2)|2,{48,49,0}}, +/* 113 */ {(10<<2)|2,{48,49,0}}, +/* 114 */ {(10<<2)|2,{48,49,0}}, +/* 115 */ {(10<<2)|2,{48,49,0}}, +/* 116 */ {(10<<2)|2,{48,49,0}}, +/* 117 */ {(10<<2)|2,{48,49,0}}, +/* 118 */ {(10<<2)|2,{48,49,0}}, +/* 119 */ {(10<<2)|2,{48,49,0}}, +/* 120 */ {(10<<2)|2,{48,49,0}}, +/* 121 */ {(10<<2)|2,{48,49,0}}, +/* 122 */ {(10<<2)|2,{48,49,0}}, +/* 123 */ {(10<<2)|2,{48,49,0}}, +/* 124 */ {(10<<2)|2,{48,49,0}}, +/* 125 */ {(10<<2)|2,{48,49,0}}, +/* 126 */ {(10<<2)|2,{48,49,0}}, +/* 127 */ {(10<<2)|2,{48,49,0}}, +/* 128 */ {(15<<2)|3,{48,50,48}}, +/* 129 */ {(15<<2)|3,{48,50,48}}, +/* 130 */ {(15<<2)|3,{48,50,49}}, +/* 131 */ {(15<<2)|3,{48,50,49}}, +/* 132 */ {(15<<2)|3,{48,50,50}}, +/* 133 */ {(15<<2)|3,{48,50,50}}, +/* 134 */ {(15<<2)|3,{48,50,97}}, +/* 135 */ {(15<<2)|3,{48,50,97}}, +/* 136 */ {(15<<2)|3,{48,50,99}}, +/* 137 */ {(15<<2)|3,{48,50,99}}, +/* 138 */ {(15<<2)|3,{48,50,101}}, +/* 139 */ {(15<<2)|3,{48,50,101}}, +/* 140 */ {(15<<2)|3,{48,50,105}}, +/* 141 */ {(15<<2)|3,{48,50,105}}, +/* 142 */ {(15<<2)|3,{48,50,111}}, +/* 143 */ {(15<<2)|3,{48,50,111}}, +/* 144 */ {(15<<2)|3,{48,50,115}}, +/* 145 */ {(15<<2)|3,{48,50,115}}, +/* 146 */ {(15<<2)|3,{48,50,116}}, +/* 147 */ {(15<<2)|3,{48,50,116}}, +/* 148 */ {(16<<2)|3,{48,50,32}}, +/* 149 */ {(16<<2)|3,{48,50,37}}, +/* 150 */ {(16<<2)|3,{48,50,45}}, +/* 151 */ {(16<<2)|3,{48,50,46}}, +/* 152 */ {(16<<2)|3,{48,50,47}}, +/* 153 */ {(16<<2)|3,{48,50,51}}, +/* 154 */ {(16<<2)|3,{48,50,52}}, +/* 155 */ {(16<<2)|3,{48,50,53}}, +/* 156 */ {(16<<2)|3,{48,50,54}}, +/* 157 */ {(16<<2)|3,{48,50,55}}, +/* 158 */ {(16<<2)|3,{48,50,56}}, +/* 159 */ {(16<<2)|3,{48,50,57}}, +/* 160 */ {(16<<2)|3,{48,50,61}}, +/* 161 */ {(16<<2)|3,{48,50,65}}, +/* 162 */ {(16<<2)|3,{48,50,95}}, +/* 163 */ {(16<<2)|3,{48,50,98}}, +/* 164 */ {(16<<2)|3,{48,50,100}}, +/* 165 */ {(16<<2)|3,{48,50,102}}, +/* 166 */ {(16<<2)|3,{48,50,103}}, +/* 167 */ {(16<<2)|3,{48,50,104}}, +/* 168 */ {(16<<2)|3,{48,50,108}}, +/* 169 */ {(16<<2)|3,{48,50,109}}, +/* 170 */ {(16<<2)|3,{48,50,110}}, +/* 171 */ {(16<<2)|3,{48,50,112}}, +/* 172 */ {(16<<2)|3,{48,50,114}}, +/* 173 */ {(16<<2)|3,{48,50,117}}, +/* 174 */ {(10<<2)|2,{48,50,0}}, +/* 175 */ {(10<<2)|2,{48,50,0}}, +/* 176 */ {(10<<2)|2,{48,50,0}}, +/* 177 */ {(10<<2)|2,{48,50,0}}, +/* 178 */ {(10<<2)|2,{48,50,0}}, +/* 179 */ {(10<<2)|2,{48,50,0}}, +/* 180 */ {(10<<2)|2,{48,50,0}}, +/* 181 */ {(10<<2)|2,{48,50,0}}, +/* 182 */ {(10<<2)|2,{48,50,0}}, +/* 183 */ {(10<<2)|2,{48,50,0}}, +/* 184 */ {(10<<2)|2,{48,50,0}}, +/* 185 */ {(10<<2)|2,{48,50,0}}, +/* 186 */ {(10<<2)|2,{48,50,0}}, +/* 187 */ {(10<<2)|2,{48,50,0}}, +/* 188 */ {(10<<2)|2,{48,50,0}}, +/* 189 */ {(10<<2)|2,{48,50,0}}, +/* 190 */ {(10<<2)|2,{48,50,0}}, +/* 191 */ {(10<<2)|2,{48,50,0}}, +/* 192 */ {(15<<2)|3,{48,97,48}}, +/* 193 */ {(15<<2)|3,{48,97,48}}, +/* 194 */ {(15<<2)|3,{48,97,49}}, +/* 195 */ {(15<<2)|3,{48,97,49}}, +/* 196 */ {(15<<2)|3,{48,97,50}}, +/* 197 */ {(15<<2)|3,{48,97,50}}, +/* 198 */ {(15<<2)|3,{48,97,97}}, +/* 199 */ {(15<<2)|3,{48,97,97}}, +/* 200 */ {(15<<2)|3,{48,97,99}}, +/* 201 */ {(15<<2)|3,{48,97,99}}, +/* 202 */ {(15<<2)|3,{48,97,101}}, +/* 203 */ {(15<<2)|3,{48,97,101}}, +/* 204 */ {(15<<2)|3,{48,97,105}}, +/* 205 */ {(15<<2)|3,{48,97,105}}, +/* 206 */ {(15<<2)|3,{48,97,111}}, +/* 207 */ {(15<<2)|3,{48,97,111}}, +/* 208 */ {(15<<2)|3,{48,97,115}}, +/* 209 */ {(15<<2)|3,{48,97,115}}, +/* 210 */ {(15<<2)|3,{48,97,116}}, +/* 211 */ {(15<<2)|3,{48,97,116}}, +/* 212 */ {(16<<2)|3,{48,97,32}}, +/* 213 */ {(16<<2)|3,{48,97,37}}, +/* 214 */ {(16<<2)|3,{48,97,45}}, +/* 215 */ {(16<<2)|3,{48,97,46}}, +/* 216 */ {(16<<2)|3,{48,97,47}}, +/* 217 */ {(16<<2)|3,{48,97,51}}, +/* 218 */ {(16<<2)|3,{48,97,52}}, +/* 219 */ {(16<<2)|3,{48,97,53}}, +/* 220 */ {(16<<2)|3,{48,97,54}}, +/* 221 */ {(16<<2)|3,{48,97,55}}, +/* 222 */ {(16<<2)|3,{48,97,56}}, +/* 223 */ {(16<<2)|3,{48,97,57}}, +/* 224 */ {(16<<2)|3,{48,97,61}}, +/* 225 */ {(16<<2)|3,{48,97,65}}, +/* 226 */ {(16<<2)|3,{48,97,95}}, +/* 227 */ {(16<<2)|3,{48,97,98}}, +/* 228 */ {(16<<2)|3,{48,97,100}}, +/* 229 */ {(16<<2)|3,{48,97,102}}, +/* 230 */ {(16<<2)|3,{48,97,103}}, +/* 231 */ {(16<<2)|3,{48,97,104}}, +/* 232 */ {(16<<2)|3,{48,97,108}}, +/* 233 */ {(16<<2)|3,{48,97,109}}, +/* 234 */ {(16<<2)|3,{48,97,110}}, +/* 235 */ {(16<<2)|3,{48,97,112}}, +/* 236 */ {(16<<2)|3,{48,97,114}}, +/* 237 */ {(16<<2)|3,{48,97,117}}, +/* 238 */ {(10<<2)|2,{48,97,0}}, +/* 239 */ {(10<<2)|2,{48,97,0}}, +/* 240 */ {(10<<2)|2,{48,97,0}}, +/* 241 */ {(10<<2)|2,{48,97,0}}, +/* 242 */ {(10<<2)|2,{48,97,0}}, +/* 243 */ {(10<<2)|2,{48,97,0}}, +/* 244 */ {(10<<2)|2,{48,97,0}}, +/* 245 */ {(10<<2)|2,{48,97,0}}, +/* 246 */ {(10<<2)|2,{48,97,0}}, +/* 247 */ {(10<<2)|2,{48,97,0}}, +/* 248 */ {(10<<2)|2,{48,97,0}}, +/* 249 */ {(10<<2)|2,{48,97,0}}, +/* 250 */ {(10<<2)|2,{48,97,0}}, +/* 251 */ {(10<<2)|2,{48,97,0}}, +/* 252 */ {(10<<2)|2,{48,97,0}}, +/* 253 */ {(10<<2)|2,{48,97,0}}, +/* 254 */ {(10<<2)|2,{48,97,0}}, +/* 255 */ {(10<<2)|2,{48,97,0}}, +/* 256 */ {(15<<2)|3,{48,99,48}}, +/* 257 */ {(15<<2)|3,{48,99,48}}, +/* 258 */ {(15<<2)|3,{48,99,49}}, +/* 259 */ {(15<<2)|3,{48,99,49}}, +/* 260 */ {(15<<2)|3,{48,99,50}}, +/* 261 */ {(15<<2)|3,{48,99,50}}, +/* 262 */ {(15<<2)|3,{48,99,97}}, +/* 263 */ {(15<<2)|3,{48,99,97}}, +/* 264 */ {(15<<2)|3,{48,99,99}}, +/* 265 */ {(15<<2)|3,{48,99,99}}, +/* 266 */ {(15<<2)|3,{48,99,101}}, +/* 267 */ {(15<<2)|3,{48,99,101}}, +/* 268 */ {(15<<2)|3,{48,99,105}}, +/* 269 */ {(15<<2)|3,{48,99,105}}, +/* 270 */ {(15<<2)|3,{48,99,111}}, +/* 271 */ {(15<<2)|3,{48,99,111}}, +/* 272 */ {(15<<2)|3,{48,99,115}}, +/* 273 */ {(15<<2)|3,{48,99,115}}, +/* 274 */ {(15<<2)|3,{48,99,116}}, +/* 275 */ {(15<<2)|3,{48,99,116}}, +/* 276 */ {(16<<2)|3,{48,99,32}}, +/* 277 */ {(16<<2)|3,{48,99,37}}, +/* 278 */ {(16<<2)|3,{48,99,45}}, +/* 279 */ {(16<<2)|3,{48,99,46}}, +/* 280 */ {(16<<2)|3,{48,99,47}}, +/* 281 */ {(16<<2)|3,{48,99,51}}, +/* 282 */ {(16<<2)|3,{48,99,52}}, +/* 283 */ {(16<<2)|3,{48,99,53}}, +/* 284 */ {(16<<2)|3,{48,99,54}}, +/* 285 */ {(16<<2)|3,{48,99,55}}, +/* 286 */ {(16<<2)|3,{48,99,56}}, +/* 287 */ {(16<<2)|3,{48,99,57}}, +/* 288 */ {(16<<2)|3,{48,99,61}}, +/* 289 */ {(16<<2)|3,{48,99,65}}, +/* 290 */ {(16<<2)|3,{48,99,95}}, +/* 291 */ {(16<<2)|3,{48,99,98}}, +/* 292 */ {(16<<2)|3,{48,99,100}}, +/* 293 */ {(16<<2)|3,{48,99,102}}, +/* 294 */ {(16<<2)|3,{48,99,103}}, +/* 295 */ {(16<<2)|3,{48,99,104}}, +/* 296 */ {(16<<2)|3,{48,99,108}}, +/* 297 */ {(16<<2)|3,{48,99,109}}, +/* 298 */ {(16<<2)|3,{48,99,110}}, +/* 299 */ {(16<<2)|3,{48,99,112}}, +/* 300 */ {(16<<2)|3,{48,99,114}}, +/* 301 */ {(16<<2)|3,{48,99,117}}, +/* 302 */ {(10<<2)|2,{48,99,0}}, +/* 303 */ {(10<<2)|2,{48,99,0}}, +/* 304 */ {(10<<2)|2,{48,99,0}}, +/* 305 */ {(10<<2)|2,{48,99,0}}, +/* 306 */ {(10<<2)|2,{48,99,0}}, +/* 307 */ {(10<<2)|2,{48,99,0}}, +/* 308 */ {(10<<2)|2,{48,99,0}}, +/* 309 */ {(10<<2)|2,{48,99,0}}, +/* 310 */ {(10<<2)|2,{48,99,0}}, +/* 311 */ {(10<<2)|2,{48,99,0}}, +/* 312 */ {(10<<2)|2,{48,99,0}}, +/* 313 */ {(10<<2)|2,{48,99,0}}, +/* 314 */ {(10<<2)|2,{48,99,0}}, +/* 315 */ {(10<<2)|2,{48,99,0}}, +/* 316 */ {(10<<2)|2,{48,99,0}}, +/* 317 */ {(10<<2)|2,{48,99,0}}, +/* 318 */ {(10<<2)|2,{48,99,0}}, +/* 319 */ {(10<<2)|2,{48,99,0}}, +/* 320 */ {(15<<2)|3,{48,101,48}}, +/* 321 */ {(15<<2)|3,{48,101,48}}, +/* 322 */ {(15<<2)|3,{48,101,49}}, +/* 323 */ {(15<<2)|3,{48,101,49}}, +/* 324 */ {(15<<2)|3,{48,101,50}}, +/* 325 */ {(15<<2)|3,{48,101,50}}, +/* 326 */ {(15<<2)|3,{48,101,97}}, +/* 327 */ {(15<<2)|3,{48,101,97}}, +/* 328 */ {(15<<2)|3,{48,101,99}}, +/* 329 */ {(15<<2)|3,{48,101,99}}, +/* 330 */ {(15<<2)|3,{48,101,101}}, +/* 331 */ {(15<<2)|3,{48,101,101}}, +/* 332 */ {(15<<2)|3,{48,101,105}}, +/* 333 */ {(15<<2)|3,{48,101,105}}, +/* 334 */ {(15<<2)|3,{48,101,111}}, +/* 335 */ {(15<<2)|3,{48,101,111}}, +/* 336 */ {(15<<2)|3,{48,101,115}}, +/* 337 */ {(15<<2)|3,{48,101,115}}, +/* 338 */ {(15<<2)|3,{48,101,116}}, +/* 339 */ {(15<<2)|3,{48,101,116}}, +/* 340 */ {(16<<2)|3,{48,101,32}}, +/* 341 */ {(16<<2)|3,{48,101,37}}, +/* 342 */ {(16<<2)|3,{48,101,45}}, +/* 343 */ {(16<<2)|3,{48,101,46}}, +/* 344 */ {(16<<2)|3,{48,101,47}}, +/* 345 */ {(16<<2)|3,{48,101,51}}, +/* 346 */ {(16<<2)|3,{48,101,52}}, +/* 347 */ {(16<<2)|3,{48,101,53}}, +/* 348 */ {(16<<2)|3,{48,101,54}}, +/* 349 */ {(16<<2)|3,{48,101,55}}, +/* 350 */ {(16<<2)|3,{48,101,56}}, +/* 351 */ {(16<<2)|3,{48,101,57}}, +/* 352 */ {(16<<2)|3,{48,101,61}}, +/* 353 */ {(16<<2)|3,{48,101,65}}, +/* 354 */ {(16<<2)|3,{48,101,95}}, +/* 355 */ {(16<<2)|3,{48,101,98}}, +/* 356 */ {(16<<2)|3,{48,101,100}}, +/* 357 */ {(16<<2)|3,{48,101,102}}, +/* 358 */ {(16<<2)|3,{48,101,103}}, +/* 359 */ {(16<<2)|3,{48,101,104}}, +/* 360 */ {(16<<2)|3,{48,101,108}}, +/* 361 */ {(16<<2)|3,{48,101,109}}, +/* 362 */ {(16<<2)|3,{48,101,110}}, +/* 363 */ {(16<<2)|3,{48,101,112}}, +/* 364 */ {(16<<2)|3,{48,101,114}}, +/* 365 */ {(16<<2)|3,{48,101,117}}, +/* 366 */ {(10<<2)|2,{48,101,0}}, +/* 367 */ {(10<<2)|2,{48,101,0}}, +/* 368 */ {(10<<2)|2,{48,101,0}}, +/* 369 */ {(10<<2)|2,{48,101,0}}, +/* 370 */ {(10<<2)|2,{48,101,0}}, +/* 371 */ {(10<<2)|2,{48,101,0}}, +/* 372 */ {(10<<2)|2,{48,101,0}}, +/* 373 */ {(10<<2)|2,{48,101,0}}, +/* 374 */ {(10<<2)|2,{48,101,0}}, +/* 375 */ {(10<<2)|2,{48,101,0}}, +/* 376 */ {(10<<2)|2,{48,101,0}}, +/* 377 */ {(10<<2)|2,{48,101,0}}, +/* 378 */ {(10<<2)|2,{48,101,0}}, +/* 379 */ {(10<<2)|2,{48,101,0}}, +/* 380 */ {(10<<2)|2,{48,101,0}}, +/* 381 */ {(10<<2)|2,{48,101,0}}, +/* 382 */ {(10<<2)|2,{48,101,0}}, +/* 383 */ {(10<<2)|2,{48,101,0}}, +/* 384 */ {(15<<2)|3,{48,105,48}}, +/* 385 */ {(15<<2)|3,{48,105,48}}, +/* 386 */ {(15<<2)|3,{48,105,49}}, +/* 387 */ {(15<<2)|3,{48,105,49}}, +/* 388 */ {(15<<2)|3,{48,105,50}}, +/* 389 */ {(15<<2)|3,{48,105,50}}, +/* 390 */ {(15<<2)|3,{48,105,97}}, +/* 391 */ {(15<<2)|3,{48,105,97}}, +/* 392 */ {(15<<2)|3,{48,105,99}}, +/* 393 */ {(15<<2)|3,{48,105,99}}, +/* 394 */ {(15<<2)|3,{48,105,101}}, +/* 395 */ {(15<<2)|3,{48,105,101}}, +/* 396 */ {(15<<2)|3,{48,105,105}}, +/* 397 */ {(15<<2)|3,{48,105,105}}, +/* 398 */ {(15<<2)|3,{48,105,111}}, +/* 399 */ {(15<<2)|3,{48,105,111}}, +/* 400 */ {(15<<2)|3,{48,105,115}}, +/* 401 */ {(15<<2)|3,{48,105,115}}, +/* 402 */ {(15<<2)|3,{48,105,116}}, +/* 403 */ {(15<<2)|3,{48,105,116}}, +/* 404 */ {(16<<2)|3,{48,105,32}}, +/* 405 */ {(16<<2)|3,{48,105,37}}, +/* 406 */ {(16<<2)|3,{48,105,45}}, +/* 407 */ {(16<<2)|3,{48,105,46}}, +/* 408 */ {(16<<2)|3,{48,105,47}}, +/* 409 */ {(16<<2)|3,{48,105,51}}, +/* 410 */ {(16<<2)|3,{48,105,52}}, +/* 411 */ {(16<<2)|3,{48,105,53}}, +/* 412 */ {(16<<2)|3,{48,105,54}}, +/* 413 */ {(16<<2)|3,{48,105,55}}, +/* 414 */ {(16<<2)|3,{48,105,56}}, +/* 415 */ {(16<<2)|3,{48,105,57}}, +/* 416 */ {(16<<2)|3,{48,105,61}}, +/* 417 */ {(16<<2)|3,{48,105,65}}, +/* 418 */ {(16<<2)|3,{48,105,95}}, +/* 419 */ {(16<<2)|3,{48,105,98}}, +/* 420 */ {(16<<2)|3,{48,105,100}}, +/* 421 */ {(16<<2)|3,{48,105,102}}, +/* 422 */ {(16<<2)|3,{48,105,103}}, +/* 423 */ {(16<<2)|3,{48,105,104}}, +/* 424 */ {(16<<2)|3,{48,105,108}}, +/* 425 */ {(16<<2)|3,{48,105,109}}, +/* 426 */ {(16<<2)|3,{48,105,110}}, +/* 427 */ {(16<<2)|3,{48,105,112}}, +/* 428 */ {(16<<2)|3,{48,105,114}}, +/* 429 */ {(16<<2)|3,{48,105,117}}, +/* 430 */ {(10<<2)|2,{48,105,0}}, +/* 431 */ {(10<<2)|2,{48,105,0}}, +/* 432 */ {(10<<2)|2,{48,105,0}}, +/* 433 */ {(10<<2)|2,{48,105,0}}, +/* 434 */ {(10<<2)|2,{48,105,0}}, +/* 435 */ {(10<<2)|2,{48,105,0}}, +/* 436 */ {(10<<2)|2,{48,105,0}}, +/* 437 */ {(10<<2)|2,{48,105,0}}, +/* 438 */ {(10<<2)|2,{48,105,0}}, +/* 439 */ {(10<<2)|2,{48,105,0}}, +/* 440 */ {(10<<2)|2,{48,105,0}}, +/* 441 */ {(10<<2)|2,{48,105,0}}, +/* 442 */ {(10<<2)|2,{48,105,0}}, +/* 443 */ {(10<<2)|2,{48,105,0}}, +/* 444 */ {(10<<2)|2,{48,105,0}}, +/* 445 */ {(10<<2)|2,{48,105,0}}, +/* 446 */ {(10<<2)|2,{48,105,0}}, +/* 447 */ {(10<<2)|2,{48,105,0}}, +/* 448 */ {(15<<2)|3,{48,111,48}}, +/* 449 */ {(15<<2)|3,{48,111,48}}, +/* 450 */ {(15<<2)|3,{48,111,49}}, +/* 451 */ {(15<<2)|3,{48,111,49}}, +/* 452 */ {(15<<2)|3,{48,111,50}}, +/* 453 */ {(15<<2)|3,{48,111,50}}, +/* 454 */ {(15<<2)|3,{48,111,97}}, +/* 455 */ {(15<<2)|3,{48,111,97}}, +/* 456 */ {(15<<2)|3,{48,111,99}}, +/* 457 */ {(15<<2)|3,{48,111,99}}, +/* 458 */ {(15<<2)|3,{48,111,101}}, +/* 459 */ {(15<<2)|3,{48,111,101}}, +/* 460 */ {(15<<2)|3,{48,111,105}}, +/* 461 */ {(15<<2)|3,{48,111,105}}, +/* 462 */ {(15<<2)|3,{48,111,111}}, +/* 463 */ {(15<<2)|3,{48,111,111}}, +/* 464 */ {(15<<2)|3,{48,111,115}}, +/* 465 */ {(15<<2)|3,{48,111,115}}, +/* 466 */ {(15<<2)|3,{48,111,116}}, +/* 467 */ {(15<<2)|3,{48,111,116}}, +/* 468 */ {(16<<2)|3,{48,111,32}}, +/* 469 */ {(16<<2)|3,{48,111,37}}, +/* 470 */ {(16<<2)|3,{48,111,45}}, +/* 471 */ {(16<<2)|3,{48,111,46}}, +/* 472 */ {(16<<2)|3,{48,111,47}}, +/* 473 */ {(16<<2)|3,{48,111,51}}, +/* 474 */ {(16<<2)|3,{48,111,52}}, +/* 475 */ {(16<<2)|3,{48,111,53}}, +/* 476 */ {(16<<2)|3,{48,111,54}}, +/* 477 */ {(16<<2)|3,{48,111,55}}, +/* 478 */ {(16<<2)|3,{48,111,56}}, +/* 479 */ {(16<<2)|3,{48,111,57}}, +/* 480 */ {(16<<2)|3,{48,111,61}}, +/* 481 */ {(16<<2)|3,{48,111,65}}, +/* 482 */ {(16<<2)|3,{48,111,95}}, +/* 483 */ {(16<<2)|3,{48,111,98}}, +/* 484 */ {(16<<2)|3,{48,111,100}}, +/* 485 */ {(16<<2)|3,{48,111,102}}, +/* 486 */ {(16<<2)|3,{48,111,103}}, +/* 487 */ {(16<<2)|3,{48,111,104}}, +/* 488 */ {(16<<2)|3,{48,111,108}}, +/* 489 */ {(16<<2)|3,{48,111,109}}, +/* 490 */ {(16<<2)|3,{48,111,110}}, +/* 491 */ {(16<<2)|3,{48,111,112}}, +/* 492 */ {(16<<2)|3,{48,111,114}}, +/* 493 */ {(16<<2)|3,{48,111,117}}, +/* 494 */ {(10<<2)|2,{48,111,0}}, +/* 495 */ {(10<<2)|2,{48,111,0}}, +/* 496 */ {(10<<2)|2,{48,111,0}}, +/* 497 */ {(10<<2)|2,{48,111,0}}, +/* 498 */ {(10<<2)|2,{48,111,0}}, +/* 499 */ {(10<<2)|2,{48,111,0}}, +/* 500 */ {(10<<2)|2,{48,111,0}}, +/* 501 */ {(10<<2)|2,{48,111,0}}, +/* 502 */ {(10<<2)|2,{48,111,0}}, +/* 503 */ {(10<<2)|2,{48,111,0}}, +/* 504 */ {(10<<2)|2,{48,111,0}}, +/* 505 */ {(10<<2)|2,{48,111,0}}, +/* 506 */ {(10<<2)|2,{48,111,0}}, +/* 507 */ {(10<<2)|2,{48,111,0}}, +/* 508 */ {(10<<2)|2,{48,111,0}}, +/* 509 */ {(10<<2)|2,{48,111,0}}, +/* 510 */ {(10<<2)|2,{48,111,0}}, +/* 511 */ {(10<<2)|2,{48,111,0}}, +/* 512 */ {(15<<2)|3,{48,115,48}}, +/* 513 */ {(15<<2)|3,{48,115,48}}, +/* 514 */ {(15<<2)|3,{48,115,49}}, +/* 515 */ {(15<<2)|3,{48,115,49}}, +/* 516 */ {(15<<2)|3,{48,115,50}}, +/* 517 */ {(15<<2)|3,{48,115,50}}, +/* 518 */ {(15<<2)|3,{48,115,97}}, +/* 519 */ {(15<<2)|3,{48,115,97}}, +/* 520 */ {(15<<2)|3,{48,115,99}}, +/* 521 */ {(15<<2)|3,{48,115,99}}, +/* 522 */ {(15<<2)|3,{48,115,101}}, +/* 523 */ {(15<<2)|3,{48,115,101}}, +/* 524 */ {(15<<2)|3,{48,115,105}}, +/* 525 */ {(15<<2)|3,{48,115,105}}, +/* 526 */ {(15<<2)|3,{48,115,111}}, +/* 527 */ {(15<<2)|3,{48,115,111}}, +/* 528 */ {(15<<2)|3,{48,115,115}}, +/* 529 */ {(15<<2)|3,{48,115,115}}, +/* 530 */ {(15<<2)|3,{48,115,116}}, +/* 531 */ {(15<<2)|3,{48,115,116}}, +/* 532 */ {(16<<2)|3,{48,115,32}}, +/* 533 */ {(16<<2)|3,{48,115,37}}, +/* 534 */ {(16<<2)|3,{48,115,45}}, +/* 535 */ {(16<<2)|3,{48,115,46}}, +/* 536 */ {(16<<2)|3,{48,115,47}}, +/* 537 */ {(16<<2)|3,{48,115,51}}, +/* 538 */ {(16<<2)|3,{48,115,52}}, +/* 539 */ {(16<<2)|3,{48,115,53}}, +/* 540 */ {(16<<2)|3,{48,115,54}}, +/* 541 */ {(16<<2)|3,{48,115,55}}, +/* 542 */ {(16<<2)|3,{48,115,56}}, +/* 543 */ {(16<<2)|3,{48,115,57}}, +/* 544 */ {(16<<2)|3,{48,115,61}}, +/* 545 */ {(16<<2)|3,{48,115,65}}, +/* 546 */ {(16<<2)|3,{48,115,95}}, +/* 547 */ {(16<<2)|3,{48,115,98}}, +/* 548 */ {(16<<2)|3,{48,115,100}}, +/* 549 */ {(16<<2)|3,{48,115,102}}, +/* 550 */ {(16<<2)|3,{48,115,103}}, +/* 551 */ {(16<<2)|3,{48,115,104}}, +/* 552 */ {(16<<2)|3,{48,115,108}}, +/* 553 */ {(16<<2)|3,{48,115,109}}, +/* 554 */ {(16<<2)|3,{48,115,110}}, +/* 555 */ {(16<<2)|3,{48,115,112}}, +/* 556 */ {(16<<2)|3,{48,115,114}}, +/* 557 */ {(16<<2)|3,{48,115,117}}, +/* 558 */ {(10<<2)|2,{48,115,0}}, +/* 559 */ {(10<<2)|2,{48,115,0}}, +/* 560 */ {(10<<2)|2,{48,115,0}}, +/* 561 */ {(10<<2)|2,{48,115,0}}, +/* 562 */ {(10<<2)|2,{48,115,0}}, +/* 563 */ {(10<<2)|2,{48,115,0}}, +/* 564 */ {(10<<2)|2,{48,115,0}}, +/* 565 */ {(10<<2)|2,{48,115,0}}, +/* 566 */ {(10<<2)|2,{48,115,0}}, +/* 567 */ {(10<<2)|2,{48,115,0}}, +/* 568 */ {(10<<2)|2,{48,115,0}}, +/* 569 */ {(10<<2)|2,{48,115,0}}, +/* 570 */ {(10<<2)|2,{48,115,0}}, +/* 571 */ {(10<<2)|2,{48,115,0}}, +/* 572 */ {(10<<2)|2,{48,115,0}}, +/* 573 */ {(10<<2)|2,{48,115,0}}, +/* 574 */ {(10<<2)|2,{48,115,0}}, +/* 575 */ {(10<<2)|2,{48,115,0}}, +/* 576 */ {(15<<2)|3,{48,116,48}}, +/* 577 */ {(15<<2)|3,{48,116,48}}, +/* 578 */ {(15<<2)|3,{48,116,49}}, +/* 579 */ {(15<<2)|3,{48,116,49}}, +/* 580 */ {(15<<2)|3,{48,116,50}}, +/* 581 */ {(15<<2)|3,{48,116,50}}, +/* 582 */ {(15<<2)|3,{48,116,97}}, +/* 583 */ {(15<<2)|3,{48,116,97}}, +/* 584 */ {(15<<2)|3,{48,116,99}}, +/* 585 */ {(15<<2)|3,{48,116,99}}, +/* 586 */ {(15<<2)|3,{48,116,101}}, +/* 587 */ {(15<<2)|3,{48,116,101}}, +/* 588 */ {(15<<2)|3,{48,116,105}}, +/* 589 */ {(15<<2)|3,{48,116,105}}, +/* 590 */ {(15<<2)|3,{48,116,111}}, +/* 591 */ {(15<<2)|3,{48,116,111}}, +/* 592 */ {(15<<2)|3,{48,116,115}}, +/* 593 */ {(15<<2)|3,{48,116,115}}, +/* 594 */ {(15<<2)|3,{48,116,116}}, +/* 595 */ {(15<<2)|3,{48,116,116}}, +/* 596 */ {(16<<2)|3,{48,116,32}}, +/* 597 */ {(16<<2)|3,{48,116,37}}, +/* 598 */ {(16<<2)|3,{48,116,45}}, +/* 599 */ {(16<<2)|3,{48,116,46}}, +/* 600 */ {(16<<2)|3,{48,116,47}}, +/* 601 */ {(16<<2)|3,{48,116,51}}, +/* 602 */ {(16<<2)|3,{48,116,52}}, +/* 603 */ {(16<<2)|3,{48,116,53}}, +/* 604 */ {(16<<2)|3,{48,116,54}}, +/* 605 */ {(16<<2)|3,{48,116,55}}, +/* 606 */ {(16<<2)|3,{48,116,56}}, +/* 607 */ {(16<<2)|3,{48,116,57}}, +/* 608 */ {(16<<2)|3,{48,116,61}}, +/* 609 */ {(16<<2)|3,{48,116,65}}, +/* 610 */ {(16<<2)|3,{48,116,95}}, +/* 611 */ {(16<<2)|3,{48,116,98}}, +/* 612 */ {(16<<2)|3,{48,116,100}}, +/* 613 */ {(16<<2)|3,{48,116,102}}, +/* 614 */ {(16<<2)|3,{48,116,103}}, +/* 615 */ {(16<<2)|3,{48,116,104}}, +/* 616 */ {(16<<2)|3,{48,116,108}}, +/* 617 */ {(16<<2)|3,{48,116,109}}, +/* 618 */ {(16<<2)|3,{48,116,110}}, +/* 619 */ {(16<<2)|3,{48,116,112}}, +/* 620 */ {(16<<2)|3,{48,116,114}}, +/* 621 */ {(16<<2)|3,{48,116,117}}, +/* 622 */ {(10<<2)|2,{48,116,0}}, +/* 623 */ {(10<<2)|2,{48,116,0}}, +/* 624 */ {(10<<2)|2,{48,116,0}}, +/* 625 */ {(10<<2)|2,{48,116,0}}, +/* 626 */ {(10<<2)|2,{48,116,0}}, +/* 627 */ {(10<<2)|2,{48,116,0}}, +/* 628 */ {(10<<2)|2,{48,116,0}}, +/* 629 */ {(10<<2)|2,{48,116,0}}, +/* 630 */ {(10<<2)|2,{48,116,0}}, +/* 631 */ {(10<<2)|2,{48,116,0}}, +/* 632 */ {(10<<2)|2,{48,116,0}}, +/* 633 */ {(10<<2)|2,{48,116,0}}, +/* 634 */ {(10<<2)|2,{48,116,0}}, +/* 635 */ {(10<<2)|2,{48,116,0}}, +/* 636 */ {(10<<2)|2,{48,116,0}}, +/* 637 */ {(10<<2)|2,{48,116,0}}, +/* 638 */ {(10<<2)|2,{48,116,0}}, +/* 639 */ {(10<<2)|2,{48,116,0}}, +/* 640 */ {(16<<2)|3,{48,32,48}}, +/* 641 */ {(16<<2)|3,{48,32,49}}, +/* 642 */ {(16<<2)|3,{48,32,50}}, +/* 643 */ {(16<<2)|3,{48,32,97}}, +/* 644 */ {(16<<2)|3,{48,32,99}}, +/* 645 */ {(16<<2)|3,{48,32,101}}, +/* 646 */ {(16<<2)|3,{48,32,105}}, +/* 647 */ {(16<<2)|3,{48,32,111}}, +/* 648 */ {(16<<2)|3,{48,32,115}}, +/* 649 */ {(16<<2)|3,{48,32,116}}, +/* 650 */ {(11<<2)|2,{48,32,0}}, +/* 651 */ {(11<<2)|2,{48,32,0}}, +/* 652 */ {(11<<2)|2,{48,32,0}}, +/* 653 */ {(11<<2)|2,{48,32,0}}, +/* 654 */ {(11<<2)|2,{48,32,0}}, +/* 655 */ {(11<<2)|2,{48,32,0}}, +/* 656 */ {(11<<2)|2,{48,32,0}}, +/* 657 */ {(11<<2)|2,{48,32,0}}, +/* 658 */ {(11<<2)|2,{48,32,0}}, +/* 659 */ {(11<<2)|2,{48,32,0}}, +/* 660 */ {(11<<2)|2,{48,32,0}}, +/* 661 */ {(11<<2)|2,{48,32,0}}, +/* 662 */ {(11<<2)|2,{48,32,0}}, +/* 663 */ {(11<<2)|2,{48,32,0}}, +/* 664 */ {(11<<2)|2,{48,32,0}}, +/* 665 */ {(11<<2)|2,{48,32,0}}, +/* 666 */ {(11<<2)|2,{48,32,0}}, +/* 667 */ {(11<<2)|2,{48,32,0}}, +/* 668 */ {(11<<2)|2,{48,32,0}}, +/* 669 */ {(11<<2)|2,{48,32,0}}, +/* 670 */ {(11<<2)|2,{48,32,0}}, +/* 671 */ {(11<<2)|2,{48,32,0}}, +/* 672 */ {(16<<2)|3,{48,37,48}}, +/* 673 */ {(16<<2)|3,{48,37,49}}, +/* 674 */ {(16<<2)|3,{48,37,50}}, +/* 675 */ {(16<<2)|3,{48,37,97}}, +/* 676 */ {(16<<2)|3,{48,37,99}}, +/* 677 */ {(16<<2)|3,{48,37,101}}, +/* 678 */ {(16<<2)|3,{48,37,105}}, +/* 679 */ {(16<<2)|3,{48,37,111}}, +/* 680 */ {(16<<2)|3,{48,37,115}}, +/* 681 */ {(16<<2)|3,{48,37,116}}, +/* 682 */ {(11<<2)|2,{48,37,0}}, +/* 683 */ {(11<<2)|2,{48,37,0}}, +/* 684 */ {(11<<2)|2,{48,37,0}}, +/* 685 */ {(11<<2)|2,{48,37,0}}, +/* 686 */ {(11<<2)|2,{48,37,0}}, +/* 687 */ {(11<<2)|2,{48,37,0}}, +/* 688 */ {(11<<2)|2,{48,37,0}}, +/* 689 */ {(11<<2)|2,{48,37,0}}, +/* 690 */ {(11<<2)|2,{48,37,0}}, +/* 691 */ {(11<<2)|2,{48,37,0}}, +/* 692 */ {(11<<2)|2,{48,37,0}}, +/* 693 */ {(11<<2)|2,{48,37,0}}, +/* 694 */ {(11<<2)|2,{48,37,0}}, +/* 695 */ {(11<<2)|2,{48,37,0}}, +/* 696 */ {(11<<2)|2,{48,37,0}}, +/* 697 */ {(11<<2)|2,{48,37,0}}, +/* 698 */ {(11<<2)|2,{48,37,0}}, +/* 699 */ {(11<<2)|2,{48,37,0}}, +/* 700 */ {(11<<2)|2,{48,37,0}}, +/* 701 */ {(11<<2)|2,{48,37,0}}, +/* 702 */ {(11<<2)|2,{48,37,0}}, +/* 703 */ {(11<<2)|2,{48,37,0}}, +/* 704 */ {(16<<2)|3,{48,45,48}}, +/* 705 */ {(16<<2)|3,{48,45,49}}, +/* 706 */ {(16<<2)|3,{48,45,50}}, +/* 707 */ {(16<<2)|3,{48,45,97}}, +/* 708 */ {(16<<2)|3,{48,45,99}}, +/* 709 */ {(16<<2)|3,{48,45,101}}, +/* 710 */ {(16<<2)|3,{48,45,105}}, +/* 711 */ {(16<<2)|3,{48,45,111}}, +/* 712 */ {(16<<2)|3,{48,45,115}}, +/* 713 */ {(16<<2)|3,{48,45,116}}, +/* 714 */ {(11<<2)|2,{48,45,0}}, +/* 715 */ {(11<<2)|2,{48,45,0}}, +/* 716 */ {(11<<2)|2,{48,45,0}}, +/* 717 */ {(11<<2)|2,{48,45,0}}, +/* 718 */ {(11<<2)|2,{48,45,0}}, +/* 719 */ {(11<<2)|2,{48,45,0}}, +/* 720 */ {(11<<2)|2,{48,45,0}}, +/* 721 */ {(11<<2)|2,{48,45,0}}, +/* 722 */ {(11<<2)|2,{48,45,0}}, +/* 723 */ {(11<<2)|2,{48,45,0}}, +/* 724 */ {(11<<2)|2,{48,45,0}}, +/* 725 */ {(11<<2)|2,{48,45,0}}, +/* 726 */ {(11<<2)|2,{48,45,0}}, +/* 727 */ {(11<<2)|2,{48,45,0}}, +/* 728 */ {(11<<2)|2,{48,45,0}}, +/* 729 */ {(11<<2)|2,{48,45,0}}, +/* 730 */ {(11<<2)|2,{48,45,0}}, +/* 731 */ {(11<<2)|2,{48,45,0}}, +/* 732 */ {(11<<2)|2,{48,45,0}}, +/* 733 */ {(11<<2)|2,{48,45,0}}, +/* 734 */ {(11<<2)|2,{48,45,0}}, +/* 735 */ {(11<<2)|2,{48,45,0}}, +/* 736 */ {(16<<2)|3,{48,46,48}}, +/* 737 */ {(16<<2)|3,{48,46,49}}, +/* 738 */ {(16<<2)|3,{48,46,50}}, +/* 739 */ {(16<<2)|3,{48,46,97}}, +/* 740 */ {(16<<2)|3,{48,46,99}}, +/* 741 */ {(16<<2)|3,{48,46,101}}, +/* 742 */ {(16<<2)|3,{48,46,105}}, +/* 743 */ {(16<<2)|3,{48,46,111}}, +/* 744 */ {(16<<2)|3,{48,46,115}}, +/* 745 */ {(16<<2)|3,{48,46,116}}, +/* 746 */ {(11<<2)|2,{48,46,0}}, +/* 747 */ {(11<<2)|2,{48,46,0}}, +/* 748 */ {(11<<2)|2,{48,46,0}}, +/* 749 */ {(11<<2)|2,{48,46,0}}, +/* 750 */ {(11<<2)|2,{48,46,0}}, +/* 751 */ {(11<<2)|2,{48,46,0}}, +/* 752 */ {(11<<2)|2,{48,46,0}}, +/* 753 */ {(11<<2)|2,{48,46,0}}, +/* 754 */ {(11<<2)|2,{48,46,0}}, +/* 755 */ {(11<<2)|2,{48,46,0}}, +/* 756 */ {(11<<2)|2,{48,46,0}}, +/* 757 */ {(11<<2)|2,{48,46,0}}, +/* 758 */ {(11<<2)|2,{48,46,0}}, +/* 759 */ {(11<<2)|2,{48,46,0}}, +/* 760 */ {(11<<2)|2,{48,46,0}}, +/* 761 */ {(11<<2)|2,{48,46,0}}, +/* 762 */ {(11<<2)|2,{48,46,0}}, +/* 763 */ {(11<<2)|2,{48,46,0}}, +/* 764 */ {(11<<2)|2,{48,46,0}}, +/* 765 */ {(11<<2)|2,{48,46,0}}, +/* 766 */ {(11<<2)|2,{48,46,0}}, +/* 767 */ {(11<<2)|2,{48,46,0}}, +/* 768 */ {(16<<2)|3,{48,47,48}}, +/* 769 */ {(16<<2)|3,{48,47,49}}, +/* 770 */ {(16<<2)|3,{48,47,50}}, +/* 771 */ {(16<<2)|3,{48,47,97}}, +/* 772 */ {(16<<2)|3,{48,47,99}}, +/* 773 */ {(16<<2)|3,{48,47,101}}, +/* 774 */ {(16<<2)|3,{48,47,105}}, +/* 775 */ {(16<<2)|3,{48,47,111}}, +/* 776 */ {(16<<2)|3,{48,47,115}}, +/* 777 */ {(16<<2)|3,{48,47,116}}, +/* 778 */ {(11<<2)|2,{48,47,0}}, +/* 779 */ {(11<<2)|2,{48,47,0}}, +/* 780 */ {(11<<2)|2,{48,47,0}}, +/* 781 */ {(11<<2)|2,{48,47,0}}, +/* 782 */ {(11<<2)|2,{48,47,0}}, +/* 783 */ {(11<<2)|2,{48,47,0}}, +/* 784 */ {(11<<2)|2,{48,47,0}}, +/* 785 */ {(11<<2)|2,{48,47,0}}, +/* 786 */ {(11<<2)|2,{48,47,0}}, +/* 787 */ {(11<<2)|2,{48,47,0}}, +/* 788 */ {(11<<2)|2,{48,47,0}}, +/* 789 */ {(11<<2)|2,{48,47,0}}, +/* 790 */ {(11<<2)|2,{48,47,0}}, +/* 791 */ {(11<<2)|2,{48,47,0}}, +/* 792 */ {(11<<2)|2,{48,47,0}}, +/* 793 */ {(11<<2)|2,{48,47,0}}, +/* 794 */ {(11<<2)|2,{48,47,0}}, +/* 795 */ {(11<<2)|2,{48,47,0}}, +/* 796 */ {(11<<2)|2,{48,47,0}}, +/* 797 */ {(11<<2)|2,{48,47,0}}, +/* 798 */ {(11<<2)|2,{48,47,0}}, +/* 799 */ {(11<<2)|2,{48,47,0}}, +/* 800 */ {(16<<2)|3,{48,51,48}}, +/* 801 */ {(16<<2)|3,{48,51,49}}, +/* 802 */ {(16<<2)|3,{48,51,50}}, +/* 803 */ {(16<<2)|3,{48,51,97}}, +/* 804 */ {(16<<2)|3,{48,51,99}}, +/* 805 */ {(16<<2)|3,{48,51,101}}, +/* 806 */ {(16<<2)|3,{48,51,105}}, +/* 807 */ {(16<<2)|3,{48,51,111}}, +/* 808 */ {(16<<2)|3,{48,51,115}}, +/* 809 */ {(16<<2)|3,{48,51,116}}, +/* 810 */ {(11<<2)|2,{48,51,0}}, +/* 811 */ {(11<<2)|2,{48,51,0}}, +/* 812 */ {(11<<2)|2,{48,51,0}}, +/* 813 */ {(11<<2)|2,{48,51,0}}, +/* 814 */ {(11<<2)|2,{48,51,0}}, +/* 815 */ {(11<<2)|2,{48,51,0}}, +/* 816 */ {(11<<2)|2,{48,51,0}}, +/* 817 */ {(11<<2)|2,{48,51,0}}, +/* 818 */ {(11<<2)|2,{48,51,0}}, +/* 819 */ {(11<<2)|2,{48,51,0}}, +/* 820 */ {(11<<2)|2,{48,51,0}}, +/* 821 */ {(11<<2)|2,{48,51,0}}, +/* 822 */ {(11<<2)|2,{48,51,0}}, +/* 823 */ {(11<<2)|2,{48,51,0}}, +/* 824 */ {(11<<2)|2,{48,51,0}}, +/* 825 */ {(11<<2)|2,{48,51,0}}, +/* 826 */ {(11<<2)|2,{48,51,0}}, +/* 827 */ {(11<<2)|2,{48,51,0}}, +/* 828 */ {(11<<2)|2,{48,51,0}}, +/* 829 */ {(11<<2)|2,{48,51,0}}, +/* 830 */ {(11<<2)|2,{48,51,0}}, +/* 831 */ {(11<<2)|2,{48,51,0}}, +/* 832 */ {(16<<2)|3,{48,52,48}}, +/* 833 */ {(16<<2)|3,{48,52,49}}, +/* 834 */ {(16<<2)|3,{48,52,50}}, +/* 835 */ {(16<<2)|3,{48,52,97}}, +/* 836 */ {(16<<2)|3,{48,52,99}}, +/* 837 */ {(16<<2)|3,{48,52,101}}, +/* 838 */ {(16<<2)|3,{48,52,105}}, +/* 839 */ {(16<<2)|3,{48,52,111}}, +/* 840 */ {(16<<2)|3,{48,52,115}}, +/* 841 */ {(16<<2)|3,{48,52,116}}, +/* 842 */ {(11<<2)|2,{48,52,0}}, +/* 843 */ {(11<<2)|2,{48,52,0}}, +/* 844 */ {(11<<2)|2,{48,52,0}}, +/* 845 */ {(11<<2)|2,{48,52,0}}, +/* 846 */ {(11<<2)|2,{48,52,0}}, +/* 847 */ {(11<<2)|2,{48,52,0}}, +/* 848 */ {(11<<2)|2,{48,52,0}}, +/* 849 */ {(11<<2)|2,{48,52,0}}, +/* 850 */ {(11<<2)|2,{48,52,0}}, +/* 851 */ {(11<<2)|2,{48,52,0}}, +/* 852 */ {(11<<2)|2,{48,52,0}}, +/* 853 */ {(11<<2)|2,{48,52,0}}, +/* 854 */ {(11<<2)|2,{48,52,0}}, +/* 855 */ {(11<<2)|2,{48,52,0}}, +/* 856 */ {(11<<2)|2,{48,52,0}}, +/* 857 */ {(11<<2)|2,{48,52,0}}, +/* 858 */ {(11<<2)|2,{48,52,0}}, +/* 859 */ {(11<<2)|2,{48,52,0}}, +/* 860 */ {(11<<2)|2,{48,52,0}}, +/* 861 */ {(11<<2)|2,{48,52,0}}, +/* 862 */ {(11<<2)|2,{48,52,0}}, +/* 863 */ {(11<<2)|2,{48,52,0}}, +/* 864 */ {(16<<2)|3,{48,53,48}}, +/* 865 */ {(16<<2)|3,{48,53,49}}, +/* 866 */ {(16<<2)|3,{48,53,50}}, +/* 867 */ {(16<<2)|3,{48,53,97}}, +/* 868 */ {(16<<2)|3,{48,53,99}}, +/* 869 */ {(16<<2)|3,{48,53,101}}, +/* 870 */ {(16<<2)|3,{48,53,105}}, +/* 871 */ {(16<<2)|3,{48,53,111}}, +/* 872 */ {(16<<2)|3,{48,53,115}}, +/* 873 */ {(16<<2)|3,{48,53,116}}, +/* 874 */ {(11<<2)|2,{48,53,0}}, +/* 875 */ {(11<<2)|2,{48,53,0}}, +/* 876 */ {(11<<2)|2,{48,53,0}}, +/* 877 */ {(11<<2)|2,{48,53,0}}, +/* 878 */ {(11<<2)|2,{48,53,0}}, +/* 879 */ {(11<<2)|2,{48,53,0}}, +/* 880 */ {(11<<2)|2,{48,53,0}}, +/* 881 */ {(11<<2)|2,{48,53,0}}, +/* 882 */ {(11<<2)|2,{48,53,0}}, +/* 883 */ {(11<<2)|2,{48,53,0}}, +/* 884 */ {(11<<2)|2,{48,53,0}}, +/* 885 */ {(11<<2)|2,{48,53,0}}, +/* 886 */ {(11<<2)|2,{48,53,0}}, +/* 887 */ {(11<<2)|2,{48,53,0}}, +/* 888 */ {(11<<2)|2,{48,53,0}}, +/* 889 */ {(11<<2)|2,{48,53,0}}, +/* 890 */ {(11<<2)|2,{48,53,0}}, +/* 891 */ {(11<<2)|2,{48,53,0}}, +/* 892 */ {(11<<2)|2,{48,53,0}}, +/* 893 */ {(11<<2)|2,{48,53,0}}, +/* 894 */ {(11<<2)|2,{48,53,0}}, +/* 895 */ {(11<<2)|2,{48,53,0}}, +/* 896 */ {(16<<2)|3,{48,54,48}}, +/* 897 */ {(16<<2)|3,{48,54,49}}, +/* 898 */ {(16<<2)|3,{48,54,50}}, +/* 899 */ {(16<<2)|3,{48,54,97}}, +/* 900 */ {(16<<2)|3,{48,54,99}}, +/* 901 */ {(16<<2)|3,{48,54,101}}, +/* 902 */ {(16<<2)|3,{48,54,105}}, +/* 903 */ {(16<<2)|3,{48,54,111}}, +/* 904 */ {(16<<2)|3,{48,54,115}}, +/* 905 */ {(16<<2)|3,{48,54,116}}, +/* 906 */ {(11<<2)|2,{48,54,0}}, +/* 907 */ {(11<<2)|2,{48,54,0}}, +/* 908 */ {(11<<2)|2,{48,54,0}}, +/* 909 */ {(11<<2)|2,{48,54,0}}, +/* 910 */ {(11<<2)|2,{48,54,0}}, +/* 911 */ {(11<<2)|2,{48,54,0}}, +/* 912 */ {(11<<2)|2,{48,54,0}}, +/* 913 */ {(11<<2)|2,{48,54,0}}, +/* 914 */ {(11<<2)|2,{48,54,0}}, +/* 915 */ {(11<<2)|2,{48,54,0}}, +/* 916 */ {(11<<2)|2,{48,54,0}}, +/* 917 */ {(11<<2)|2,{48,54,0}}, +/* 918 */ {(11<<2)|2,{48,54,0}}, +/* 919 */ {(11<<2)|2,{48,54,0}}, +/* 920 */ {(11<<2)|2,{48,54,0}}, +/* 921 */ {(11<<2)|2,{48,54,0}}, +/* 922 */ {(11<<2)|2,{48,54,0}}, +/* 923 */ {(11<<2)|2,{48,54,0}}, +/* 924 */ {(11<<2)|2,{48,54,0}}, +/* 925 */ {(11<<2)|2,{48,54,0}}, +/* 926 */ {(11<<2)|2,{48,54,0}}, +/* 927 */ {(11<<2)|2,{48,54,0}}, +/* 928 */ {(16<<2)|3,{48,55,48}}, +/* 929 */ {(16<<2)|3,{48,55,49}}, +/* 930 */ {(16<<2)|3,{48,55,50}}, +/* 931 */ {(16<<2)|3,{48,55,97}}, +/* 932 */ {(16<<2)|3,{48,55,99}}, +/* 933 */ {(16<<2)|3,{48,55,101}}, +/* 934 */ {(16<<2)|3,{48,55,105}}, +/* 935 */ {(16<<2)|3,{48,55,111}}, +/* 936 */ {(16<<2)|3,{48,55,115}}, +/* 937 */ {(16<<2)|3,{48,55,116}}, +/* 938 */ {(11<<2)|2,{48,55,0}}, +/* 939 */ {(11<<2)|2,{48,55,0}}, +/* 940 */ {(11<<2)|2,{48,55,0}}, +/* 941 */ {(11<<2)|2,{48,55,0}}, +/* 942 */ {(11<<2)|2,{48,55,0}}, +/* 943 */ {(11<<2)|2,{48,55,0}}, +/* 944 */ {(11<<2)|2,{48,55,0}}, +/* 945 */ {(11<<2)|2,{48,55,0}}, +/* 946 */ {(11<<2)|2,{48,55,0}}, +/* 947 */ {(11<<2)|2,{48,55,0}}, +/* 948 */ {(11<<2)|2,{48,55,0}}, +/* 949 */ {(11<<2)|2,{48,55,0}}, +/* 950 */ {(11<<2)|2,{48,55,0}}, +/* 951 */ {(11<<2)|2,{48,55,0}}, +/* 952 */ {(11<<2)|2,{48,55,0}}, +/* 953 */ {(11<<2)|2,{48,55,0}}, +/* 954 */ {(11<<2)|2,{48,55,0}}, +/* 955 */ {(11<<2)|2,{48,55,0}}, +/* 956 */ {(11<<2)|2,{48,55,0}}, +/* 957 */ {(11<<2)|2,{48,55,0}}, +/* 958 */ {(11<<2)|2,{48,55,0}}, +/* 959 */ {(11<<2)|2,{48,55,0}}, +/* 960 */ {(16<<2)|3,{48,56,48}}, +/* 961 */ {(16<<2)|3,{48,56,49}}, +/* 962 */ {(16<<2)|3,{48,56,50}}, +/* 963 */ {(16<<2)|3,{48,56,97}}, +/* 964 */ {(16<<2)|3,{48,56,99}}, +/* 965 */ {(16<<2)|3,{48,56,101}}, +/* 966 */ {(16<<2)|3,{48,56,105}}, +/* 967 */ {(16<<2)|3,{48,56,111}}, +/* 968 */ {(16<<2)|3,{48,56,115}}, +/* 969 */ {(16<<2)|3,{48,56,116}}, +/* 970 */ {(11<<2)|2,{48,56,0}}, +/* 971 */ {(11<<2)|2,{48,56,0}}, +/* 972 */ {(11<<2)|2,{48,56,0}}, +/* 973 */ {(11<<2)|2,{48,56,0}}, +/* 974 */ {(11<<2)|2,{48,56,0}}, +/* 975 */ {(11<<2)|2,{48,56,0}}, +/* 976 */ {(11<<2)|2,{48,56,0}}, +/* 977 */ {(11<<2)|2,{48,56,0}}, +/* 978 */ {(11<<2)|2,{48,56,0}}, +/* 979 */ {(11<<2)|2,{48,56,0}}, +/* 980 */ {(11<<2)|2,{48,56,0}}, +/* 981 */ {(11<<2)|2,{48,56,0}}, +/* 982 */ {(11<<2)|2,{48,56,0}}, +/* 983 */ {(11<<2)|2,{48,56,0}}, +/* 984 */ {(11<<2)|2,{48,56,0}}, +/* 985 */ {(11<<2)|2,{48,56,0}}, +/* 986 */ {(11<<2)|2,{48,56,0}}, +/* 987 */ {(11<<2)|2,{48,56,0}}, +/* 988 */ {(11<<2)|2,{48,56,0}}, +/* 989 */ {(11<<2)|2,{48,56,0}}, +/* 990 */ {(11<<2)|2,{48,56,0}}, +/* 991 */ {(11<<2)|2,{48,56,0}}, +/* 992 */ {(16<<2)|3,{48,57,48}}, +/* 993 */ {(16<<2)|3,{48,57,49}}, +/* 994 */ {(16<<2)|3,{48,57,50}}, +/* 995 */ {(16<<2)|3,{48,57,97}}, +/* 996 */ {(16<<2)|3,{48,57,99}}, +/* 997 */ {(16<<2)|3,{48,57,101}}, +/* 998 */ {(16<<2)|3,{48,57,105}}, +/* 999 */ {(16<<2)|3,{48,57,111}}, +/* 1000 */ {(16<<2)|3,{48,57,115}}, +/* 1001 */ {(16<<2)|3,{48,57,116}}, +/* 1002 */ {(11<<2)|2,{48,57,0}}, +/* 1003 */ {(11<<2)|2,{48,57,0}}, +/* 1004 */ {(11<<2)|2,{48,57,0}}, +/* 1005 */ {(11<<2)|2,{48,57,0}}, +/* 1006 */ {(11<<2)|2,{48,57,0}}, +/* 1007 */ {(11<<2)|2,{48,57,0}}, +/* 1008 */ {(11<<2)|2,{48,57,0}}, +/* 1009 */ {(11<<2)|2,{48,57,0}}, +/* 1010 */ {(11<<2)|2,{48,57,0}}, +/* 1011 */ {(11<<2)|2,{48,57,0}}, +/* 1012 */ {(11<<2)|2,{48,57,0}}, +/* 1013 */ {(11<<2)|2,{48,57,0}}, +/* 1014 */ {(11<<2)|2,{48,57,0}}, +/* 1015 */ {(11<<2)|2,{48,57,0}}, +/* 1016 */ {(11<<2)|2,{48,57,0}}, +/* 1017 */ {(11<<2)|2,{48,57,0}}, +/* 1018 */ {(11<<2)|2,{48,57,0}}, +/* 1019 */ {(11<<2)|2,{48,57,0}}, +/* 1020 */ {(11<<2)|2,{48,57,0}}, +/* 1021 */ {(11<<2)|2,{48,57,0}}, +/* 1022 */ {(11<<2)|2,{48,57,0}}, +/* 1023 */ {(11<<2)|2,{48,57,0}}, +/* 1024 */ {(16<<2)|3,{48,61,48}}, +/* 1025 */ {(16<<2)|3,{48,61,49}}, +/* 1026 */ {(16<<2)|3,{48,61,50}}, +/* 1027 */ {(16<<2)|3,{48,61,97}}, +/* 1028 */ {(16<<2)|3,{48,61,99}}, +/* 1029 */ {(16<<2)|3,{48,61,101}}, +/* 1030 */ {(16<<2)|3,{48,61,105}}, +/* 1031 */ {(16<<2)|3,{48,61,111}}, +/* 1032 */ {(16<<2)|3,{48,61,115}}, +/* 1033 */ {(16<<2)|3,{48,61,116}}, +/* 1034 */ {(11<<2)|2,{48,61,0}}, +/* 1035 */ {(11<<2)|2,{48,61,0}}, +/* 1036 */ {(11<<2)|2,{48,61,0}}, +/* 1037 */ {(11<<2)|2,{48,61,0}}, +/* 1038 */ {(11<<2)|2,{48,61,0}}, +/* 1039 */ {(11<<2)|2,{48,61,0}}, +/* 1040 */ {(11<<2)|2,{48,61,0}}, +/* 1041 */ {(11<<2)|2,{48,61,0}}, +/* 1042 */ {(11<<2)|2,{48,61,0}}, +/* 1043 */ {(11<<2)|2,{48,61,0}}, +/* 1044 */ {(11<<2)|2,{48,61,0}}, +/* 1045 */ {(11<<2)|2,{48,61,0}}, +/* 1046 */ {(11<<2)|2,{48,61,0}}, +/* 1047 */ {(11<<2)|2,{48,61,0}}, +/* 1048 */ {(11<<2)|2,{48,61,0}}, +/* 1049 */ {(11<<2)|2,{48,61,0}}, +/* 1050 */ {(11<<2)|2,{48,61,0}}, +/* 1051 */ {(11<<2)|2,{48,61,0}}, +/* 1052 */ {(11<<2)|2,{48,61,0}}, +/* 1053 */ {(11<<2)|2,{48,61,0}}, +/* 1054 */ {(11<<2)|2,{48,61,0}}, +/* 1055 */ {(11<<2)|2,{48,61,0}}, +/* 1056 */ {(16<<2)|3,{48,65,48}}, +/* 1057 */ {(16<<2)|3,{48,65,49}}, +/* 1058 */ {(16<<2)|3,{48,65,50}}, +/* 1059 */ {(16<<2)|3,{48,65,97}}, +/* 1060 */ {(16<<2)|3,{48,65,99}}, +/* 1061 */ {(16<<2)|3,{48,65,101}}, +/* 1062 */ {(16<<2)|3,{48,65,105}}, +/* 1063 */ {(16<<2)|3,{48,65,111}}, +/* 1064 */ {(16<<2)|3,{48,65,115}}, +/* 1065 */ {(16<<2)|3,{48,65,116}}, +/* 1066 */ {(11<<2)|2,{48,65,0}}, +/* 1067 */ {(11<<2)|2,{48,65,0}}, +/* 1068 */ {(11<<2)|2,{48,65,0}}, +/* 1069 */ {(11<<2)|2,{48,65,0}}, +/* 1070 */ {(11<<2)|2,{48,65,0}}, +/* 1071 */ {(11<<2)|2,{48,65,0}}, +/* 1072 */ {(11<<2)|2,{48,65,0}}, +/* 1073 */ {(11<<2)|2,{48,65,0}}, +/* 1074 */ {(11<<2)|2,{48,65,0}}, +/* 1075 */ {(11<<2)|2,{48,65,0}}, +/* 1076 */ {(11<<2)|2,{48,65,0}}, +/* 1077 */ {(11<<2)|2,{48,65,0}}, +/* 1078 */ {(11<<2)|2,{48,65,0}}, +/* 1079 */ {(11<<2)|2,{48,65,0}}, +/* 1080 */ {(11<<2)|2,{48,65,0}}, +/* 1081 */ {(11<<2)|2,{48,65,0}}, +/* 1082 */ {(11<<2)|2,{48,65,0}}, +/* 1083 */ {(11<<2)|2,{48,65,0}}, +/* 1084 */ {(11<<2)|2,{48,65,0}}, +/* 1085 */ {(11<<2)|2,{48,65,0}}, +/* 1086 */ {(11<<2)|2,{48,65,0}}, +/* 1087 */ {(11<<2)|2,{48,65,0}}, +/* 1088 */ {(16<<2)|3,{48,95,48}}, +/* 1089 */ {(16<<2)|3,{48,95,49}}, +/* 1090 */ {(16<<2)|3,{48,95,50}}, +/* 1091 */ {(16<<2)|3,{48,95,97}}, +/* 1092 */ {(16<<2)|3,{48,95,99}}, +/* 1093 */ {(16<<2)|3,{48,95,101}}, +/* 1094 */ {(16<<2)|3,{48,95,105}}, +/* 1095 */ {(16<<2)|3,{48,95,111}}, +/* 1096 */ {(16<<2)|3,{48,95,115}}, +/* 1097 */ {(16<<2)|3,{48,95,116}}, +/* 1098 */ {(11<<2)|2,{48,95,0}}, +/* 1099 */ {(11<<2)|2,{48,95,0}}, +/* 1100 */ {(11<<2)|2,{48,95,0}}, +/* 1101 */ {(11<<2)|2,{48,95,0}}, +/* 1102 */ {(11<<2)|2,{48,95,0}}, +/* 1103 */ {(11<<2)|2,{48,95,0}}, +/* 1104 */ {(11<<2)|2,{48,95,0}}, +/* 1105 */ {(11<<2)|2,{48,95,0}}, +/* 1106 */ {(11<<2)|2,{48,95,0}}, +/* 1107 */ {(11<<2)|2,{48,95,0}}, +/* 1108 */ {(11<<2)|2,{48,95,0}}, +/* 1109 */ {(11<<2)|2,{48,95,0}}, +/* 1110 */ {(11<<2)|2,{48,95,0}}, +/* 1111 */ {(11<<2)|2,{48,95,0}}, +/* 1112 */ {(11<<2)|2,{48,95,0}}, +/* 1113 */ {(11<<2)|2,{48,95,0}}, +/* 1114 */ {(11<<2)|2,{48,95,0}}, +/* 1115 */ {(11<<2)|2,{48,95,0}}, +/* 1116 */ {(11<<2)|2,{48,95,0}}, +/* 1117 */ {(11<<2)|2,{48,95,0}}, +/* 1118 */ {(11<<2)|2,{48,95,0}}, +/* 1119 */ {(11<<2)|2,{48,95,0}}, +/* 1120 */ {(16<<2)|3,{48,98,48}}, +/* 1121 */ {(16<<2)|3,{48,98,49}}, +/* 1122 */ {(16<<2)|3,{48,98,50}}, +/* 1123 */ {(16<<2)|3,{48,98,97}}, +/* 1124 */ {(16<<2)|3,{48,98,99}}, +/* 1125 */ {(16<<2)|3,{48,98,101}}, +/* 1126 */ {(16<<2)|3,{48,98,105}}, +/* 1127 */ {(16<<2)|3,{48,98,111}}, +/* 1128 */ {(16<<2)|3,{48,98,115}}, +/* 1129 */ {(16<<2)|3,{48,98,116}}, +/* 1130 */ {(11<<2)|2,{48,98,0}}, +/* 1131 */ {(11<<2)|2,{48,98,0}}, +/* 1132 */ {(11<<2)|2,{48,98,0}}, +/* 1133 */ {(11<<2)|2,{48,98,0}}, +/* 1134 */ {(11<<2)|2,{48,98,0}}, +/* 1135 */ {(11<<2)|2,{48,98,0}}, +/* 1136 */ {(11<<2)|2,{48,98,0}}, +/* 1137 */ {(11<<2)|2,{48,98,0}}, +/* 1138 */ {(11<<2)|2,{48,98,0}}, +/* 1139 */ {(11<<2)|2,{48,98,0}}, +/* 1140 */ {(11<<2)|2,{48,98,0}}, +/* 1141 */ {(11<<2)|2,{48,98,0}}, +/* 1142 */ {(11<<2)|2,{48,98,0}}, +/* 1143 */ {(11<<2)|2,{48,98,0}}, +/* 1144 */ {(11<<2)|2,{48,98,0}}, +/* 1145 */ {(11<<2)|2,{48,98,0}}, +/* 1146 */ {(11<<2)|2,{48,98,0}}, +/* 1147 */ {(11<<2)|2,{48,98,0}}, +/* 1148 */ {(11<<2)|2,{48,98,0}}, +/* 1149 */ {(11<<2)|2,{48,98,0}}, +/* 1150 */ {(11<<2)|2,{48,98,0}}, +/* 1151 */ {(11<<2)|2,{48,98,0}}, +/* 1152 */ {(16<<2)|3,{48,100,48}}, +/* 1153 */ {(16<<2)|3,{48,100,49}}, +/* 1154 */ {(16<<2)|3,{48,100,50}}, +/* 1155 */ {(16<<2)|3,{48,100,97}}, +/* 1156 */ {(16<<2)|3,{48,100,99}}, +/* 1157 */ {(16<<2)|3,{48,100,101}}, +/* 1158 */ {(16<<2)|3,{48,100,105}}, +/* 1159 */ {(16<<2)|3,{48,100,111}}, +/* 1160 */ {(16<<2)|3,{48,100,115}}, +/* 1161 */ {(16<<2)|3,{48,100,116}}, +/* 1162 */ {(11<<2)|2,{48,100,0}}, +/* 1163 */ {(11<<2)|2,{48,100,0}}, +/* 1164 */ {(11<<2)|2,{48,100,0}}, +/* 1165 */ {(11<<2)|2,{48,100,0}}, +/* 1166 */ {(11<<2)|2,{48,100,0}}, +/* 1167 */ {(11<<2)|2,{48,100,0}}, +/* 1168 */ {(11<<2)|2,{48,100,0}}, +/* 1169 */ {(11<<2)|2,{48,100,0}}, +/* 1170 */ {(11<<2)|2,{48,100,0}}, +/* 1171 */ {(11<<2)|2,{48,100,0}}, +/* 1172 */ {(11<<2)|2,{48,100,0}}, +/* 1173 */ {(11<<2)|2,{48,100,0}}, +/* 1174 */ {(11<<2)|2,{48,100,0}}, +/* 1175 */ {(11<<2)|2,{48,100,0}}, +/* 1176 */ {(11<<2)|2,{48,100,0}}, +/* 1177 */ {(11<<2)|2,{48,100,0}}, +/* 1178 */ {(11<<2)|2,{48,100,0}}, +/* 1179 */ {(11<<2)|2,{48,100,0}}, +/* 1180 */ {(11<<2)|2,{48,100,0}}, +/* 1181 */ {(11<<2)|2,{48,100,0}}, +/* 1182 */ {(11<<2)|2,{48,100,0}}, +/* 1183 */ {(11<<2)|2,{48,100,0}}, +/* 1184 */ {(16<<2)|3,{48,102,48}}, +/* 1185 */ {(16<<2)|3,{48,102,49}}, +/* 1186 */ {(16<<2)|3,{48,102,50}}, +/* 1187 */ {(16<<2)|3,{48,102,97}}, +/* 1188 */ {(16<<2)|3,{48,102,99}}, +/* 1189 */ {(16<<2)|3,{48,102,101}}, +/* 1190 */ {(16<<2)|3,{48,102,105}}, +/* 1191 */ {(16<<2)|3,{48,102,111}}, +/* 1192 */ {(16<<2)|3,{48,102,115}}, +/* 1193 */ {(16<<2)|3,{48,102,116}}, +/* 1194 */ {(11<<2)|2,{48,102,0}}, +/* 1195 */ {(11<<2)|2,{48,102,0}}, +/* 1196 */ {(11<<2)|2,{48,102,0}}, +/* 1197 */ {(11<<2)|2,{48,102,0}}, +/* 1198 */ {(11<<2)|2,{48,102,0}}, +/* 1199 */ {(11<<2)|2,{48,102,0}}, +/* 1200 */ {(11<<2)|2,{48,102,0}}, +/* 1201 */ {(11<<2)|2,{48,102,0}}, +/* 1202 */ {(11<<2)|2,{48,102,0}}, +/* 1203 */ {(11<<2)|2,{48,102,0}}, +/* 1204 */ {(11<<2)|2,{48,102,0}}, +/* 1205 */ {(11<<2)|2,{48,102,0}}, +/* 1206 */ {(11<<2)|2,{48,102,0}}, +/* 1207 */ {(11<<2)|2,{48,102,0}}, +/* 1208 */ {(11<<2)|2,{48,102,0}}, +/* 1209 */ {(11<<2)|2,{48,102,0}}, +/* 1210 */ {(11<<2)|2,{48,102,0}}, +/* 1211 */ {(11<<2)|2,{48,102,0}}, +/* 1212 */ {(11<<2)|2,{48,102,0}}, +/* 1213 */ {(11<<2)|2,{48,102,0}}, +/* 1214 */ {(11<<2)|2,{48,102,0}}, +/* 1215 */ {(11<<2)|2,{48,102,0}}, +/* 1216 */ {(16<<2)|3,{48,103,48}}, +/* 1217 */ {(16<<2)|3,{48,103,49}}, +/* 1218 */ {(16<<2)|3,{48,103,50}}, +/* 1219 */ {(16<<2)|3,{48,103,97}}, +/* 1220 */ {(16<<2)|3,{48,103,99}}, +/* 1221 */ {(16<<2)|3,{48,103,101}}, +/* 1222 */ {(16<<2)|3,{48,103,105}}, +/* 1223 */ {(16<<2)|3,{48,103,111}}, +/* 1224 */ {(16<<2)|3,{48,103,115}}, +/* 1225 */ {(16<<2)|3,{48,103,116}}, +/* 1226 */ {(11<<2)|2,{48,103,0}}, +/* 1227 */ {(11<<2)|2,{48,103,0}}, +/* 1228 */ {(11<<2)|2,{48,103,0}}, +/* 1229 */ {(11<<2)|2,{48,103,0}}, +/* 1230 */ {(11<<2)|2,{48,103,0}}, +/* 1231 */ {(11<<2)|2,{48,103,0}}, +/* 1232 */ {(11<<2)|2,{48,103,0}}, +/* 1233 */ {(11<<2)|2,{48,103,0}}, +/* 1234 */ {(11<<2)|2,{48,103,0}}, +/* 1235 */ {(11<<2)|2,{48,103,0}}, +/* 1236 */ {(11<<2)|2,{48,103,0}}, +/* 1237 */ {(11<<2)|2,{48,103,0}}, +/* 1238 */ {(11<<2)|2,{48,103,0}}, +/* 1239 */ {(11<<2)|2,{48,103,0}}, +/* 1240 */ {(11<<2)|2,{48,103,0}}, +/* 1241 */ {(11<<2)|2,{48,103,0}}, +/* 1242 */ {(11<<2)|2,{48,103,0}}, +/* 1243 */ {(11<<2)|2,{48,103,0}}, +/* 1244 */ {(11<<2)|2,{48,103,0}}, +/* 1245 */ {(11<<2)|2,{48,103,0}}, +/* 1246 */ {(11<<2)|2,{48,103,0}}, +/* 1247 */ {(11<<2)|2,{48,103,0}}, +/* 1248 */ {(16<<2)|3,{48,104,48}}, +/* 1249 */ {(16<<2)|3,{48,104,49}}, +/* 1250 */ {(16<<2)|3,{48,104,50}}, +/* 1251 */ {(16<<2)|3,{48,104,97}}, +/* 1252 */ {(16<<2)|3,{48,104,99}}, +/* 1253 */ {(16<<2)|3,{48,104,101}}, +/* 1254 */ {(16<<2)|3,{48,104,105}}, +/* 1255 */ {(16<<2)|3,{48,104,111}}, +/* 1256 */ {(16<<2)|3,{48,104,115}}, +/* 1257 */ {(16<<2)|3,{48,104,116}}, +/* 1258 */ {(11<<2)|2,{48,104,0}}, +/* 1259 */ {(11<<2)|2,{48,104,0}}, +/* 1260 */ {(11<<2)|2,{48,104,0}}, +/* 1261 */ {(11<<2)|2,{48,104,0}}, +/* 1262 */ {(11<<2)|2,{48,104,0}}, +/* 1263 */ {(11<<2)|2,{48,104,0}}, +/* 1264 */ {(11<<2)|2,{48,104,0}}, +/* 1265 */ {(11<<2)|2,{48,104,0}}, +/* 1266 */ {(11<<2)|2,{48,104,0}}, +/* 1267 */ {(11<<2)|2,{48,104,0}}, +/* 1268 */ {(11<<2)|2,{48,104,0}}, +/* 1269 */ {(11<<2)|2,{48,104,0}}, +/* 1270 */ {(11<<2)|2,{48,104,0}}, +/* 1271 */ {(11<<2)|2,{48,104,0}}, +/* 1272 */ {(11<<2)|2,{48,104,0}}, +/* 1273 */ {(11<<2)|2,{48,104,0}}, +/* 1274 */ {(11<<2)|2,{48,104,0}}, +/* 1275 */ {(11<<2)|2,{48,104,0}}, +/* 1276 */ {(11<<2)|2,{48,104,0}}, +/* 1277 */ {(11<<2)|2,{48,104,0}}, +/* 1278 */ {(11<<2)|2,{48,104,0}}, +/* 1279 */ {(11<<2)|2,{48,104,0}}, +/* 1280 */ {(16<<2)|3,{48,108,48}}, +/* 1281 */ {(16<<2)|3,{48,108,49}}, +/* 1282 */ {(16<<2)|3,{48,108,50}}, +/* 1283 */ {(16<<2)|3,{48,108,97}}, +/* 1284 */ {(16<<2)|3,{48,108,99}}, +/* 1285 */ {(16<<2)|3,{48,108,101}}, +/* 1286 */ {(16<<2)|3,{48,108,105}}, +/* 1287 */ {(16<<2)|3,{48,108,111}}, +/* 1288 */ {(16<<2)|3,{48,108,115}}, +/* 1289 */ {(16<<2)|3,{48,108,116}}, +/* 1290 */ {(11<<2)|2,{48,108,0}}, +/* 1291 */ {(11<<2)|2,{48,108,0}}, +/* 1292 */ {(11<<2)|2,{48,108,0}}, +/* 1293 */ {(11<<2)|2,{48,108,0}}, +/* 1294 */ {(11<<2)|2,{48,108,0}}, +/* 1295 */ {(11<<2)|2,{48,108,0}}, +/* 1296 */ {(11<<2)|2,{48,108,0}}, +/* 1297 */ {(11<<2)|2,{48,108,0}}, +/* 1298 */ {(11<<2)|2,{48,108,0}}, +/* 1299 */ {(11<<2)|2,{48,108,0}}, +/* 1300 */ {(11<<2)|2,{48,108,0}}, +/* 1301 */ {(11<<2)|2,{48,108,0}}, +/* 1302 */ {(11<<2)|2,{48,108,0}}, +/* 1303 */ {(11<<2)|2,{48,108,0}}, +/* 1304 */ {(11<<2)|2,{48,108,0}}, +/* 1305 */ {(11<<2)|2,{48,108,0}}, +/* 1306 */ {(11<<2)|2,{48,108,0}}, +/* 1307 */ {(11<<2)|2,{48,108,0}}, +/* 1308 */ {(11<<2)|2,{48,108,0}}, +/* 1309 */ {(11<<2)|2,{48,108,0}}, +/* 1310 */ {(11<<2)|2,{48,108,0}}, +/* 1311 */ {(11<<2)|2,{48,108,0}}, +/* 1312 */ {(16<<2)|3,{48,109,48}}, +/* 1313 */ {(16<<2)|3,{48,109,49}}, +/* 1314 */ {(16<<2)|3,{48,109,50}}, +/* 1315 */ {(16<<2)|3,{48,109,97}}, +/* 1316 */ {(16<<2)|3,{48,109,99}}, +/* 1317 */ {(16<<2)|3,{48,109,101}}, +/* 1318 */ {(16<<2)|3,{48,109,105}}, +/* 1319 */ {(16<<2)|3,{48,109,111}}, +/* 1320 */ {(16<<2)|3,{48,109,115}}, +/* 1321 */ {(16<<2)|3,{48,109,116}}, +/* 1322 */ {(11<<2)|2,{48,109,0}}, +/* 1323 */ {(11<<2)|2,{48,109,0}}, +/* 1324 */ {(11<<2)|2,{48,109,0}}, +/* 1325 */ {(11<<2)|2,{48,109,0}}, +/* 1326 */ {(11<<2)|2,{48,109,0}}, +/* 1327 */ {(11<<2)|2,{48,109,0}}, +/* 1328 */ {(11<<2)|2,{48,109,0}}, +/* 1329 */ {(11<<2)|2,{48,109,0}}, +/* 1330 */ {(11<<2)|2,{48,109,0}}, +/* 1331 */ {(11<<2)|2,{48,109,0}}, +/* 1332 */ {(11<<2)|2,{48,109,0}}, +/* 1333 */ {(11<<2)|2,{48,109,0}}, +/* 1334 */ {(11<<2)|2,{48,109,0}}, +/* 1335 */ {(11<<2)|2,{48,109,0}}, +/* 1336 */ {(11<<2)|2,{48,109,0}}, +/* 1337 */ {(11<<2)|2,{48,109,0}}, +/* 1338 */ {(11<<2)|2,{48,109,0}}, +/* 1339 */ {(11<<2)|2,{48,109,0}}, +/* 1340 */ {(11<<2)|2,{48,109,0}}, +/* 1341 */ {(11<<2)|2,{48,109,0}}, +/* 1342 */ {(11<<2)|2,{48,109,0}}, +/* 1343 */ {(11<<2)|2,{48,109,0}}, +/* 1344 */ {(16<<2)|3,{48,110,48}}, +/* 1345 */ {(16<<2)|3,{48,110,49}}, +/* 1346 */ {(16<<2)|3,{48,110,50}}, +/* 1347 */ {(16<<2)|3,{48,110,97}}, +/* 1348 */ {(16<<2)|3,{48,110,99}}, +/* 1349 */ {(16<<2)|3,{48,110,101}}, +/* 1350 */ {(16<<2)|3,{48,110,105}}, +/* 1351 */ {(16<<2)|3,{48,110,111}}, +/* 1352 */ {(16<<2)|3,{48,110,115}}, +/* 1353 */ {(16<<2)|3,{48,110,116}}, +/* 1354 */ {(11<<2)|2,{48,110,0}}, +/* 1355 */ {(11<<2)|2,{48,110,0}}, +/* 1356 */ {(11<<2)|2,{48,110,0}}, +/* 1357 */ {(11<<2)|2,{48,110,0}}, +/* 1358 */ {(11<<2)|2,{48,110,0}}, +/* 1359 */ {(11<<2)|2,{48,110,0}}, +/* 1360 */ {(11<<2)|2,{48,110,0}}, +/* 1361 */ {(11<<2)|2,{48,110,0}}, +/* 1362 */ {(11<<2)|2,{48,110,0}}, +/* 1363 */ {(11<<2)|2,{48,110,0}}, +/* 1364 */ {(11<<2)|2,{48,110,0}}, +/* 1365 */ {(11<<2)|2,{48,110,0}}, +/* 1366 */ {(11<<2)|2,{48,110,0}}, +/* 1367 */ {(11<<2)|2,{48,110,0}}, +/* 1368 */ {(11<<2)|2,{48,110,0}}, +/* 1369 */ {(11<<2)|2,{48,110,0}}, +/* 1370 */ {(11<<2)|2,{48,110,0}}, +/* 1371 */ {(11<<2)|2,{48,110,0}}, +/* 1372 */ {(11<<2)|2,{48,110,0}}, +/* 1373 */ {(11<<2)|2,{48,110,0}}, +/* 1374 */ {(11<<2)|2,{48,110,0}}, +/* 1375 */ {(11<<2)|2,{48,110,0}}, +/* 1376 */ {(16<<2)|3,{48,112,48}}, +/* 1377 */ {(16<<2)|3,{48,112,49}}, +/* 1378 */ {(16<<2)|3,{48,112,50}}, +/* 1379 */ {(16<<2)|3,{48,112,97}}, +/* 1380 */ {(16<<2)|3,{48,112,99}}, +/* 1381 */ {(16<<2)|3,{48,112,101}}, +/* 1382 */ {(16<<2)|3,{48,112,105}}, +/* 1383 */ {(16<<2)|3,{48,112,111}}, +/* 1384 */ {(16<<2)|3,{48,112,115}}, +/* 1385 */ {(16<<2)|3,{48,112,116}}, +/* 1386 */ {(11<<2)|2,{48,112,0}}, +/* 1387 */ {(11<<2)|2,{48,112,0}}, +/* 1388 */ {(11<<2)|2,{48,112,0}}, +/* 1389 */ {(11<<2)|2,{48,112,0}}, +/* 1390 */ {(11<<2)|2,{48,112,0}}, +/* 1391 */ {(11<<2)|2,{48,112,0}}, +/* 1392 */ {(11<<2)|2,{48,112,0}}, +/* 1393 */ {(11<<2)|2,{48,112,0}}, +/* 1394 */ {(11<<2)|2,{48,112,0}}, +/* 1395 */ {(11<<2)|2,{48,112,0}}, +/* 1396 */ {(11<<2)|2,{48,112,0}}, +/* 1397 */ {(11<<2)|2,{48,112,0}}, +/* 1398 */ {(11<<2)|2,{48,112,0}}, +/* 1399 */ {(11<<2)|2,{48,112,0}}, +/* 1400 */ {(11<<2)|2,{48,112,0}}, +/* 1401 */ {(11<<2)|2,{48,112,0}}, +/* 1402 */ {(11<<2)|2,{48,112,0}}, +/* 1403 */ {(11<<2)|2,{48,112,0}}, +/* 1404 */ {(11<<2)|2,{48,112,0}}, +/* 1405 */ {(11<<2)|2,{48,112,0}}, +/* 1406 */ {(11<<2)|2,{48,112,0}}, +/* 1407 */ {(11<<2)|2,{48,112,0}}, +/* 1408 */ {(16<<2)|3,{48,114,48}}, +/* 1409 */ {(16<<2)|3,{48,114,49}}, +/* 1410 */ {(16<<2)|3,{48,114,50}}, +/* 1411 */ {(16<<2)|3,{48,114,97}}, +/* 1412 */ {(16<<2)|3,{48,114,99}}, +/* 1413 */ {(16<<2)|3,{48,114,101}}, +/* 1414 */ {(16<<2)|3,{48,114,105}}, +/* 1415 */ {(16<<2)|3,{48,114,111}}, +/* 1416 */ {(16<<2)|3,{48,114,115}}, +/* 1417 */ {(16<<2)|3,{48,114,116}}, +/* 1418 */ {(11<<2)|2,{48,114,0}}, +/* 1419 */ {(11<<2)|2,{48,114,0}}, +/* 1420 */ {(11<<2)|2,{48,114,0}}, +/* 1421 */ {(11<<2)|2,{48,114,0}}, +/* 1422 */ {(11<<2)|2,{48,114,0}}, +/* 1423 */ {(11<<2)|2,{48,114,0}}, +/* 1424 */ {(11<<2)|2,{48,114,0}}, +/* 1425 */ {(11<<2)|2,{48,114,0}}, +/* 1426 */ {(11<<2)|2,{48,114,0}}, +/* 1427 */ {(11<<2)|2,{48,114,0}}, +/* 1428 */ {(11<<2)|2,{48,114,0}}, +/* 1429 */ {(11<<2)|2,{48,114,0}}, +/* 1430 */ {(11<<2)|2,{48,114,0}}, +/* 1431 */ {(11<<2)|2,{48,114,0}}, +/* 1432 */ {(11<<2)|2,{48,114,0}}, +/* 1433 */ {(11<<2)|2,{48,114,0}}, +/* 1434 */ {(11<<2)|2,{48,114,0}}, +/* 1435 */ {(11<<2)|2,{48,114,0}}, +/* 1436 */ {(11<<2)|2,{48,114,0}}, +/* 1437 */ {(11<<2)|2,{48,114,0}}, +/* 1438 */ {(11<<2)|2,{48,114,0}}, +/* 1439 */ {(11<<2)|2,{48,114,0}}, +/* 1440 */ {(16<<2)|3,{48,117,48}}, +/* 1441 */ {(16<<2)|3,{48,117,49}}, +/* 1442 */ {(16<<2)|3,{48,117,50}}, +/* 1443 */ {(16<<2)|3,{48,117,97}}, +/* 1444 */ {(16<<2)|3,{48,117,99}}, +/* 1445 */ {(16<<2)|3,{48,117,101}}, +/* 1446 */ {(16<<2)|3,{48,117,105}}, +/* 1447 */ {(16<<2)|3,{48,117,111}}, +/* 1448 */ {(16<<2)|3,{48,117,115}}, +/* 1449 */ {(16<<2)|3,{48,117,116}}, +/* 1450 */ {(11<<2)|2,{48,117,0}}, +/* 1451 */ {(11<<2)|2,{48,117,0}}, +/* 1452 */ {(11<<2)|2,{48,117,0}}, +/* 1453 */ {(11<<2)|2,{48,117,0}}, +/* 1454 */ {(11<<2)|2,{48,117,0}}, +/* 1455 */ {(11<<2)|2,{48,117,0}}, +/* 1456 */ {(11<<2)|2,{48,117,0}}, +/* 1457 */ {(11<<2)|2,{48,117,0}}, +/* 1458 */ {(11<<2)|2,{48,117,0}}, +/* 1459 */ {(11<<2)|2,{48,117,0}}, +/* 1460 */ {(11<<2)|2,{48,117,0}}, +/* 1461 */ {(11<<2)|2,{48,117,0}}, +/* 1462 */ {(11<<2)|2,{48,117,0}}, +/* 1463 */ {(11<<2)|2,{48,117,0}}, +/* 1464 */ {(11<<2)|2,{48,117,0}}, +/* 1465 */ {(11<<2)|2,{48,117,0}}, +/* 1466 */ {(11<<2)|2,{48,117,0}}, +/* 1467 */ {(11<<2)|2,{48,117,0}}, +/* 1468 */ {(11<<2)|2,{48,117,0}}, +/* 1469 */ {(11<<2)|2,{48,117,0}}, +/* 1470 */ {(11<<2)|2,{48,117,0}}, +/* 1471 */ {(11<<2)|2,{48,117,0}}, +/* 1472 */ {(12<<2)|2,{48,58,0}}, +/* 1473 */ {(12<<2)|2,{48,58,0}}, +/* 1474 */ {(12<<2)|2,{48,58,0}}, +/* 1475 */ {(12<<2)|2,{48,58,0}}, +/* 1476 */ {(12<<2)|2,{48,58,0}}, +/* 1477 */ {(12<<2)|2,{48,58,0}}, +/* 1478 */ {(12<<2)|2,{48,58,0}}, +/* 1479 */ {(12<<2)|2,{48,58,0}}, +/* 1480 */ {(12<<2)|2,{48,58,0}}, +/* 1481 */ {(12<<2)|2,{48,58,0}}, +/* 1482 */ {(12<<2)|2,{48,58,0}}, +/* 1483 */ {(12<<2)|2,{48,58,0}}, +/* 1484 */ {(12<<2)|2,{48,58,0}}, +/* 1485 */ {(12<<2)|2,{48,58,0}}, +/* 1486 */ {(12<<2)|2,{48,58,0}}, +/* 1487 */ {(12<<2)|2,{48,58,0}}, +/* 1488 */ {(12<<2)|2,{48,66,0}}, +/* 1489 */ {(12<<2)|2,{48,66,0}}, +/* 1490 */ {(12<<2)|2,{48,66,0}}, +/* 1491 */ {(12<<2)|2,{48,66,0}}, +/* 1492 */ {(12<<2)|2,{48,66,0}}, +/* 1493 */ {(12<<2)|2,{48,66,0}}, +/* 1494 */ {(12<<2)|2,{48,66,0}}, +/* 1495 */ {(12<<2)|2,{48,66,0}}, +/* 1496 */ {(12<<2)|2,{48,66,0}}, +/* 1497 */ {(12<<2)|2,{48,66,0}}, +/* 1498 */ {(12<<2)|2,{48,66,0}}, +/* 1499 */ {(12<<2)|2,{48,66,0}}, +/* 1500 */ {(12<<2)|2,{48,66,0}}, +/* 1501 */ {(12<<2)|2,{48,66,0}}, +/* 1502 */ {(12<<2)|2,{48,66,0}}, +/* 1503 */ {(12<<2)|2,{48,66,0}}, +/* 1504 */ {(12<<2)|2,{48,67,0}}, +/* 1505 */ {(12<<2)|2,{48,67,0}}, +/* 1506 */ {(12<<2)|2,{48,67,0}}, +/* 1507 */ {(12<<2)|2,{48,67,0}}, +/* 1508 */ {(12<<2)|2,{48,67,0}}, +/* 1509 */ {(12<<2)|2,{48,67,0}}, +/* 1510 */ {(12<<2)|2,{48,67,0}}, +/* 1511 */ {(12<<2)|2,{48,67,0}}, +/* 1512 */ {(12<<2)|2,{48,67,0}}, +/* 1513 */ {(12<<2)|2,{48,67,0}}, +/* 1514 */ {(12<<2)|2,{48,67,0}}, +/* 1515 */ {(12<<2)|2,{48,67,0}}, +/* 1516 */ {(12<<2)|2,{48,67,0}}, +/* 1517 */ {(12<<2)|2,{48,67,0}}, +/* 1518 */ {(12<<2)|2,{48,67,0}}, +/* 1519 */ {(12<<2)|2,{48,67,0}}, +/* 1520 */ {(12<<2)|2,{48,68,0}}, +/* 1521 */ {(12<<2)|2,{48,68,0}}, +/* 1522 */ {(12<<2)|2,{48,68,0}}, +/* 1523 */ {(12<<2)|2,{48,68,0}}, +/* 1524 */ {(12<<2)|2,{48,68,0}}, +/* 1525 */ {(12<<2)|2,{48,68,0}}, +/* 1526 */ {(12<<2)|2,{48,68,0}}, +/* 1527 */ {(12<<2)|2,{48,68,0}}, +/* 1528 */ {(12<<2)|2,{48,68,0}}, +/* 1529 */ {(12<<2)|2,{48,68,0}}, +/* 1530 */ {(12<<2)|2,{48,68,0}}, +/* 1531 */ {(12<<2)|2,{48,68,0}}, +/* 1532 */ {(12<<2)|2,{48,68,0}}, +/* 1533 */ {(12<<2)|2,{48,68,0}}, +/* 1534 */ {(12<<2)|2,{48,68,0}}, +/* 1535 */ {(12<<2)|2,{48,68,0}}, +/* 1536 */ {(12<<2)|2,{48,69,0}}, +/* 1537 */ {(12<<2)|2,{48,69,0}}, +/* 1538 */ {(12<<2)|2,{48,69,0}}, +/* 1539 */ {(12<<2)|2,{48,69,0}}, +/* 1540 */ {(12<<2)|2,{48,69,0}}, +/* 1541 */ {(12<<2)|2,{48,69,0}}, +/* 1542 */ {(12<<2)|2,{48,69,0}}, +/* 1543 */ {(12<<2)|2,{48,69,0}}, +/* 1544 */ {(12<<2)|2,{48,69,0}}, +/* 1545 */ {(12<<2)|2,{48,69,0}}, +/* 1546 */ {(12<<2)|2,{48,69,0}}, +/* 1547 */ {(12<<2)|2,{48,69,0}}, +/* 1548 */ {(12<<2)|2,{48,69,0}}, +/* 1549 */ {(12<<2)|2,{48,69,0}}, +/* 1550 */ {(12<<2)|2,{48,69,0}}, +/* 1551 */ {(12<<2)|2,{48,69,0}}, +/* 1552 */ {(12<<2)|2,{48,70,0}}, +/* 1553 */ {(12<<2)|2,{48,70,0}}, +/* 1554 */ {(12<<2)|2,{48,70,0}}, +/* 1555 */ {(12<<2)|2,{48,70,0}}, +/* 1556 */ {(12<<2)|2,{48,70,0}}, +/* 1557 */ {(12<<2)|2,{48,70,0}}, +/* 1558 */ {(12<<2)|2,{48,70,0}}, +/* 1559 */ {(12<<2)|2,{48,70,0}}, +/* 1560 */ {(12<<2)|2,{48,70,0}}, +/* 1561 */ {(12<<2)|2,{48,70,0}}, +/* 1562 */ {(12<<2)|2,{48,70,0}}, +/* 1563 */ {(12<<2)|2,{48,70,0}}, +/* 1564 */ {(12<<2)|2,{48,70,0}}, +/* 1565 */ {(12<<2)|2,{48,70,0}}, +/* 1566 */ {(12<<2)|2,{48,70,0}}, +/* 1567 */ {(12<<2)|2,{48,70,0}}, +/* 1568 */ {(12<<2)|2,{48,71,0}}, +/* 1569 */ {(12<<2)|2,{48,71,0}}, +/* 1570 */ {(12<<2)|2,{48,71,0}}, +/* 1571 */ {(12<<2)|2,{48,71,0}}, +/* 1572 */ {(12<<2)|2,{48,71,0}}, +/* 1573 */ {(12<<2)|2,{48,71,0}}, +/* 1574 */ {(12<<2)|2,{48,71,0}}, +/* 1575 */ {(12<<2)|2,{48,71,0}}, +/* 1576 */ {(12<<2)|2,{48,71,0}}, +/* 1577 */ {(12<<2)|2,{48,71,0}}, +/* 1578 */ {(12<<2)|2,{48,71,0}}, +/* 1579 */ {(12<<2)|2,{48,71,0}}, +/* 1580 */ {(12<<2)|2,{48,71,0}}, +/* 1581 */ {(12<<2)|2,{48,71,0}}, +/* 1582 */ {(12<<2)|2,{48,71,0}}, +/* 1583 */ {(12<<2)|2,{48,71,0}}, +/* 1584 */ {(12<<2)|2,{48,72,0}}, +/* 1585 */ {(12<<2)|2,{48,72,0}}, +/* 1586 */ {(12<<2)|2,{48,72,0}}, +/* 1587 */ {(12<<2)|2,{48,72,0}}, +/* 1588 */ {(12<<2)|2,{48,72,0}}, +/* 1589 */ {(12<<2)|2,{48,72,0}}, +/* 1590 */ {(12<<2)|2,{48,72,0}}, +/* 1591 */ {(12<<2)|2,{48,72,0}}, +/* 1592 */ {(12<<2)|2,{48,72,0}}, +/* 1593 */ {(12<<2)|2,{48,72,0}}, +/* 1594 */ {(12<<2)|2,{48,72,0}}, +/* 1595 */ {(12<<2)|2,{48,72,0}}, +/* 1596 */ {(12<<2)|2,{48,72,0}}, +/* 1597 */ {(12<<2)|2,{48,72,0}}, +/* 1598 */ {(12<<2)|2,{48,72,0}}, +/* 1599 */ {(12<<2)|2,{48,72,0}}, +/* 1600 */ {(12<<2)|2,{48,73,0}}, +/* 1601 */ {(12<<2)|2,{48,73,0}}, +/* 1602 */ {(12<<2)|2,{48,73,0}}, +/* 1603 */ {(12<<2)|2,{48,73,0}}, +/* 1604 */ {(12<<2)|2,{48,73,0}}, +/* 1605 */ {(12<<2)|2,{48,73,0}}, +/* 1606 */ {(12<<2)|2,{48,73,0}}, +/* 1607 */ {(12<<2)|2,{48,73,0}}, +/* 1608 */ {(12<<2)|2,{48,73,0}}, +/* 1609 */ {(12<<2)|2,{48,73,0}}, +/* 1610 */ {(12<<2)|2,{48,73,0}}, +/* 1611 */ {(12<<2)|2,{48,73,0}}, +/* 1612 */ {(12<<2)|2,{48,73,0}}, +/* 1613 */ {(12<<2)|2,{48,73,0}}, +/* 1614 */ {(12<<2)|2,{48,73,0}}, +/* 1615 */ {(12<<2)|2,{48,73,0}}, +/* 1616 */ {(12<<2)|2,{48,74,0}}, +/* 1617 */ {(12<<2)|2,{48,74,0}}, +/* 1618 */ {(12<<2)|2,{48,74,0}}, +/* 1619 */ {(12<<2)|2,{48,74,0}}, +/* 1620 */ {(12<<2)|2,{48,74,0}}, +/* 1621 */ {(12<<2)|2,{48,74,0}}, +/* 1622 */ {(12<<2)|2,{48,74,0}}, +/* 1623 */ {(12<<2)|2,{48,74,0}}, +/* 1624 */ {(12<<2)|2,{48,74,0}}, +/* 1625 */ {(12<<2)|2,{48,74,0}}, +/* 1626 */ {(12<<2)|2,{48,74,0}}, +/* 1627 */ {(12<<2)|2,{48,74,0}}, +/* 1628 */ {(12<<2)|2,{48,74,0}}, +/* 1629 */ {(12<<2)|2,{48,74,0}}, +/* 1630 */ {(12<<2)|2,{48,74,0}}, +/* 1631 */ {(12<<2)|2,{48,74,0}}, +/* 1632 */ {(12<<2)|2,{48,75,0}}, +/* 1633 */ {(12<<2)|2,{48,75,0}}, +/* 1634 */ {(12<<2)|2,{48,75,0}}, +/* 1635 */ {(12<<2)|2,{48,75,0}}, +/* 1636 */ {(12<<2)|2,{48,75,0}}, +/* 1637 */ {(12<<2)|2,{48,75,0}}, +/* 1638 */ {(12<<2)|2,{48,75,0}}, +/* 1639 */ {(12<<2)|2,{48,75,0}}, +/* 1640 */ {(12<<2)|2,{48,75,0}}, +/* 1641 */ {(12<<2)|2,{48,75,0}}, +/* 1642 */ {(12<<2)|2,{48,75,0}}, +/* 1643 */ {(12<<2)|2,{48,75,0}}, +/* 1644 */ {(12<<2)|2,{48,75,0}}, +/* 1645 */ {(12<<2)|2,{48,75,0}}, +/* 1646 */ {(12<<2)|2,{48,75,0}}, +/* 1647 */ {(12<<2)|2,{48,75,0}}, +/* 1648 */ {(12<<2)|2,{48,76,0}}, +/* 1649 */ {(12<<2)|2,{48,76,0}}, +/* 1650 */ {(12<<2)|2,{48,76,0}}, +/* 1651 */ {(12<<2)|2,{48,76,0}}, +/* 1652 */ {(12<<2)|2,{48,76,0}}, +/* 1653 */ {(12<<2)|2,{48,76,0}}, +/* 1654 */ {(12<<2)|2,{48,76,0}}, +/* 1655 */ {(12<<2)|2,{48,76,0}}, +/* 1656 */ {(12<<2)|2,{48,76,0}}, +/* 1657 */ {(12<<2)|2,{48,76,0}}, +/* 1658 */ {(12<<2)|2,{48,76,0}}, +/* 1659 */ {(12<<2)|2,{48,76,0}}, +/* 1660 */ {(12<<2)|2,{48,76,0}}, +/* 1661 */ {(12<<2)|2,{48,76,0}}, +/* 1662 */ {(12<<2)|2,{48,76,0}}, +/* 1663 */ {(12<<2)|2,{48,76,0}}, +/* 1664 */ {(12<<2)|2,{48,77,0}}, +/* 1665 */ {(12<<2)|2,{48,77,0}}, +/* 1666 */ {(12<<2)|2,{48,77,0}}, +/* 1667 */ {(12<<2)|2,{48,77,0}}, +/* 1668 */ {(12<<2)|2,{48,77,0}}, +/* 1669 */ {(12<<2)|2,{48,77,0}}, +/* 1670 */ {(12<<2)|2,{48,77,0}}, +/* 1671 */ {(12<<2)|2,{48,77,0}}, +/* 1672 */ {(12<<2)|2,{48,77,0}}, +/* 1673 */ {(12<<2)|2,{48,77,0}}, +/* 1674 */ {(12<<2)|2,{48,77,0}}, +/* 1675 */ {(12<<2)|2,{48,77,0}}, +/* 1676 */ {(12<<2)|2,{48,77,0}}, +/* 1677 */ {(12<<2)|2,{48,77,0}}, +/* 1678 */ {(12<<2)|2,{48,77,0}}, +/* 1679 */ {(12<<2)|2,{48,77,0}}, +/* 1680 */ {(12<<2)|2,{48,78,0}}, +/* 1681 */ {(12<<2)|2,{48,78,0}}, +/* 1682 */ {(12<<2)|2,{48,78,0}}, +/* 1683 */ {(12<<2)|2,{48,78,0}}, +/* 1684 */ {(12<<2)|2,{48,78,0}}, +/* 1685 */ {(12<<2)|2,{48,78,0}}, +/* 1686 */ {(12<<2)|2,{48,78,0}}, +/* 1687 */ {(12<<2)|2,{48,78,0}}, +/* 1688 */ {(12<<2)|2,{48,78,0}}, +/* 1689 */ {(12<<2)|2,{48,78,0}}, +/* 1690 */ {(12<<2)|2,{48,78,0}}, +/* 1691 */ {(12<<2)|2,{48,78,0}}, +/* 1692 */ {(12<<2)|2,{48,78,0}}, +/* 1693 */ {(12<<2)|2,{48,78,0}}, +/* 1694 */ {(12<<2)|2,{48,78,0}}, +/* 1695 */ {(12<<2)|2,{48,78,0}}, +/* 1696 */ {(12<<2)|2,{48,79,0}}, +/* 1697 */ {(12<<2)|2,{48,79,0}}, +/* 1698 */ {(12<<2)|2,{48,79,0}}, +/* 1699 */ {(12<<2)|2,{48,79,0}}, +/* 1700 */ {(12<<2)|2,{48,79,0}}, +/* 1701 */ {(12<<2)|2,{48,79,0}}, +/* 1702 */ {(12<<2)|2,{48,79,0}}, +/* 1703 */ {(12<<2)|2,{48,79,0}}, +/* 1704 */ {(12<<2)|2,{48,79,0}}, +/* 1705 */ {(12<<2)|2,{48,79,0}}, +/* 1706 */ {(12<<2)|2,{48,79,0}}, +/* 1707 */ {(12<<2)|2,{48,79,0}}, +/* 1708 */ {(12<<2)|2,{48,79,0}}, +/* 1709 */ {(12<<2)|2,{48,79,0}}, +/* 1710 */ {(12<<2)|2,{48,79,0}}, +/* 1711 */ {(12<<2)|2,{48,79,0}}, +/* 1712 */ {(12<<2)|2,{48,80,0}}, +/* 1713 */ {(12<<2)|2,{48,80,0}}, +/* 1714 */ {(12<<2)|2,{48,80,0}}, +/* 1715 */ {(12<<2)|2,{48,80,0}}, +/* 1716 */ {(12<<2)|2,{48,80,0}}, +/* 1717 */ {(12<<2)|2,{48,80,0}}, +/* 1718 */ {(12<<2)|2,{48,80,0}}, +/* 1719 */ {(12<<2)|2,{48,80,0}}, +/* 1720 */ {(12<<2)|2,{48,80,0}}, +/* 1721 */ {(12<<2)|2,{48,80,0}}, +/* 1722 */ {(12<<2)|2,{48,80,0}}, +/* 1723 */ {(12<<2)|2,{48,80,0}}, +/* 1724 */ {(12<<2)|2,{48,80,0}}, +/* 1725 */ {(12<<2)|2,{48,80,0}}, +/* 1726 */ {(12<<2)|2,{48,80,0}}, +/* 1727 */ {(12<<2)|2,{48,80,0}}, +/* 1728 */ {(12<<2)|2,{48,81,0}}, +/* 1729 */ {(12<<2)|2,{48,81,0}}, +/* 1730 */ {(12<<2)|2,{48,81,0}}, +/* 1731 */ {(12<<2)|2,{48,81,0}}, +/* 1732 */ {(12<<2)|2,{48,81,0}}, +/* 1733 */ {(12<<2)|2,{48,81,0}}, +/* 1734 */ {(12<<2)|2,{48,81,0}}, +/* 1735 */ {(12<<2)|2,{48,81,0}}, +/* 1736 */ {(12<<2)|2,{48,81,0}}, +/* 1737 */ {(12<<2)|2,{48,81,0}}, +/* 1738 */ {(12<<2)|2,{48,81,0}}, +/* 1739 */ {(12<<2)|2,{48,81,0}}, +/* 1740 */ {(12<<2)|2,{48,81,0}}, +/* 1741 */ {(12<<2)|2,{48,81,0}}, +/* 1742 */ {(12<<2)|2,{48,81,0}}, +/* 1743 */ {(12<<2)|2,{48,81,0}}, +/* 1744 */ {(12<<2)|2,{48,82,0}}, +/* 1745 */ {(12<<2)|2,{48,82,0}}, +/* 1746 */ {(12<<2)|2,{48,82,0}}, +/* 1747 */ {(12<<2)|2,{48,82,0}}, +/* 1748 */ {(12<<2)|2,{48,82,0}}, +/* 1749 */ {(12<<2)|2,{48,82,0}}, +/* 1750 */ {(12<<2)|2,{48,82,0}}, +/* 1751 */ {(12<<2)|2,{48,82,0}}, +/* 1752 */ {(12<<2)|2,{48,82,0}}, +/* 1753 */ {(12<<2)|2,{48,82,0}}, +/* 1754 */ {(12<<2)|2,{48,82,0}}, +/* 1755 */ {(12<<2)|2,{48,82,0}}, +/* 1756 */ {(12<<2)|2,{48,82,0}}, +/* 1757 */ {(12<<2)|2,{48,82,0}}, +/* 1758 */ {(12<<2)|2,{48,82,0}}, +/* 1759 */ {(12<<2)|2,{48,82,0}}, +/* 1760 */ {(12<<2)|2,{48,83,0}}, +/* 1761 */ {(12<<2)|2,{48,83,0}}, +/* 1762 */ {(12<<2)|2,{48,83,0}}, +/* 1763 */ {(12<<2)|2,{48,83,0}}, +/* 1764 */ {(12<<2)|2,{48,83,0}}, +/* 1765 */ {(12<<2)|2,{48,83,0}}, +/* 1766 */ {(12<<2)|2,{48,83,0}}, +/* 1767 */ {(12<<2)|2,{48,83,0}}, +/* 1768 */ {(12<<2)|2,{48,83,0}}, +/* 1769 */ {(12<<2)|2,{48,83,0}}, +/* 1770 */ {(12<<2)|2,{48,83,0}}, +/* 1771 */ {(12<<2)|2,{48,83,0}}, +/* 1772 */ {(12<<2)|2,{48,83,0}}, +/* 1773 */ {(12<<2)|2,{48,83,0}}, +/* 1774 */ {(12<<2)|2,{48,83,0}}, +/* 1775 */ {(12<<2)|2,{48,83,0}}, +/* 1776 */ {(12<<2)|2,{48,84,0}}, +/* 1777 */ {(12<<2)|2,{48,84,0}}, +/* 1778 */ {(12<<2)|2,{48,84,0}}, +/* 1779 */ {(12<<2)|2,{48,84,0}}, +/* 1780 */ {(12<<2)|2,{48,84,0}}, +/* 1781 */ {(12<<2)|2,{48,84,0}}, +/* 1782 */ {(12<<2)|2,{48,84,0}}, +/* 1783 */ {(12<<2)|2,{48,84,0}}, +/* 1784 */ {(12<<2)|2,{48,84,0}}, +/* 1785 */ {(12<<2)|2,{48,84,0}}, +/* 1786 */ {(12<<2)|2,{48,84,0}}, +/* 1787 */ {(12<<2)|2,{48,84,0}}, +/* 1788 */ {(12<<2)|2,{48,84,0}}, +/* 1789 */ {(12<<2)|2,{48,84,0}}, +/* 1790 */ {(12<<2)|2,{48,84,0}}, +/* 1791 */ {(12<<2)|2,{48,84,0}}, +/* 1792 */ {(12<<2)|2,{48,85,0}}, +/* 1793 */ {(12<<2)|2,{48,85,0}}, +/* 1794 */ {(12<<2)|2,{48,85,0}}, +/* 1795 */ {(12<<2)|2,{48,85,0}}, +/* 1796 */ {(12<<2)|2,{48,85,0}}, +/* 1797 */ {(12<<2)|2,{48,85,0}}, +/* 1798 */ {(12<<2)|2,{48,85,0}}, +/* 1799 */ {(12<<2)|2,{48,85,0}}, +/* 1800 */ {(12<<2)|2,{48,85,0}}, +/* 1801 */ {(12<<2)|2,{48,85,0}}, +/* 1802 */ {(12<<2)|2,{48,85,0}}, +/* 1803 */ {(12<<2)|2,{48,85,0}}, +/* 1804 */ {(12<<2)|2,{48,85,0}}, +/* 1805 */ {(12<<2)|2,{48,85,0}}, +/* 1806 */ {(12<<2)|2,{48,85,0}}, +/* 1807 */ {(12<<2)|2,{48,85,0}}, +/* 1808 */ {(12<<2)|2,{48,86,0}}, +/* 1809 */ {(12<<2)|2,{48,86,0}}, +/* 1810 */ {(12<<2)|2,{48,86,0}}, +/* 1811 */ {(12<<2)|2,{48,86,0}}, +/* 1812 */ {(12<<2)|2,{48,86,0}}, +/* 1813 */ {(12<<2)|2,{48,86,0}}, +/* 1814 */ {(12<<2)|2,{48,86,0}}, +/* 1815 */ {(12<<2)|2,{48,86,0}}, +/* 1816 */ {(12<<2)|2,{48,86,0}}, +/* 1817 */ {(12<<2)|2,{48,86,0}}, +/* 1818 */ {(12<<2)|2,{48,86,0}}, +/* 1819 */ {(12<<2)|2,{48,86,0}}, +/* 1820 */ {(12<<2)|2,{48,86,0}}, +/* 1821 */ {(12<<2)|2,{48,86,0}}, +/* 1822 */ {(12<<2)|2,{48,86,0}}, +/* 1823 */ {(12<<2)|2,{48,86,0}}, +/* 1824 */ {(12<<2)|2,{48,87,0}}, +/* 1825 */ {(12<<2)|2,{48,87,0}}, +/* 1826 */ {(12<<2)|2,{48,87,0}}, +/* 1827 */ {(12<<2)|2,{48,87,0}}, +/* 1828 */ {(12<<2)|2,{48,87,0}}, +/* 1829 */ {(12<<2)|2,{48,87,0}}, +/* 1830 */ {(12<<2)|2,{48,87,0}}, +/* 1831 */ {(12<<2)|2,{48,87,0}}, +/* 1832 */ {(12<<2)|2,{48,87,0}}, +/* 1833 */ {(12<<2)|2,{48,87,0}}, +/* 1834 */ {(12<<2)|2,{48,87,0}}, +/* 1835 */ {(12<<2)|2,{48,87,0}}, +/* 1836 */ {(12<<2)|2,{48,87,0}}, +/* 1837 */ {(12<<2)|2,{48,87,0}}, +/* 1838 */ {(12<<2)|2,{48,87,0}}, +/* 1839 */ {(12<<2)|2,{48,87,0}}, +/* 1840 */ {(12<<2)|2,{48,89,0}}, +/* 1841 */ {(12<<2)|2,{48,89,0}}, +/* 1842 */ {(12<<2)|2,{48,89,0}}, +/* 1843 */ {(12<<2)|2,{48,89,0}}, +/* 1844 */ {(12<<2)|2,{48,89,0}}, +/* 1845 */ {(12<<2)|2,{48,89,0}}, +/* 1846 */ {(12<<2)|2,{48,89,0}}, +/* 1847 */ {(12<<2)|2,{48,89,0}}, +/* 1848 */ {(12<<2)|2,{48,89,0}}, +/* 1849 */ {(12<<2)|2,{48,89,0}}, +/* 1850 */ {(12<<2)|2,{48,89,0}}, +/* 1851 */ {(12<<2)|2,{48,89,0}}, +/* 1852 */ {(12<<2)|2,{48,89,0}}, +/* 1853 */ {(12<<2)|2,{48,89,0}}, +/* 1854 */ {(12<<2)|2,{48,89,0}}, +/* 1855 */ {(12<<2)|2,{48,89,0}}, +/* 1856 */ {(12<<2)|2,{48,106,0}}, +/* 1857 */ {(12<<2)|2,{48,106,0}}, +/* 1858 */ {(12<<2)|2,{48,106,0}}, +/* 1859 */ {(12<<2)|2,{48,106,0}}, +/* 1860 */ {(12<<2)|2,{48,106,0}}, +/* 1861 */ {(12<<2)|2,{48,106,0}}, +/* 1862 */ {(12<<2)|2,{48,106,0}}, +/* 1863 */ {(12<<2)|2,{48,106,0}}, +/* 1864 */ {(12<<2)|2,{48,106,0}}, +/* 1865 */ {(12<<2)|2,{48,106,0}}, +/* 1866 */ {(12<<2)|2,{48,106,0}}, +/* 1867 */ {(12<<2)|2,{48,106,0}}, +/* 1868 */ {(12<<2)|2,{48,106,0}}, +/* 1869 */ {(12<<2)|2,{48,106,0}}, +/* 1870 */ {(12<<2)|2,{48,106,0}}, +/* 1871 */ {(12<<2)|2,{48,106,0}}, +/* 1872 */ {(12<<2)|2,{48,107,0}}, +/* 1873 */ {(12<<2)|2,{48,107,0}}, +/* 1874 */ {(12<<2)|2,{48,107,0}}, +/* 1875 */ {(12<<2)|2,{48,107,0}}, +/* 1876 */ {(12<<2)|2,{48,107,0}}, +/* 1877 */ {(12<<2)|2,{48,107,0}}, +/* 1878 */ {(12<<2)|2,{48,107,0}}, +/* 1879 */ {(12<<2)|2,{48,107,0}}, +/* 1880 */ {(12<<2)|2,{48,107,0}}, +/* 1881 */ {(12<<2)|2,{48,107,0}}, +/* 1882 */ {(12<<2)|2,{48,107,0}}, +/* 1883 */ {(12<<2)|2,{48,107,0}}, +/* 1884 */ {(12<<2)|2,{48,107,0}}, +/* 1885 */ {(12<<2)|2,{48,107,0}}, +/* 1886 */ {(12<<2)|2,{48,107,0}}, +/* 1887 */ {(12<<2)|2,{48,107,0}}, +/* 1888 */ {(12<<2)|2,{48,113,0}}, +/* 1889 */ {(12<<2)|2,{48,113,0}}, +/* 1890 */ {(12<<2)|2,{48,113,0}}, +/* 1891 */ {(12<<2)|2,{48,113,0}}, +/* 1892 */ {(12<<2)|2,{48,113,0}}, +/* 1893 */ {(12<<2)|2,{48,113,0}}, +/* 1894 */ {(12<<2)|2,{48,113,0}}, +/* 1895 */ {(12<<2)|2,{48,113,0}}, +/* 1896 */ {(12<<2)|2,{48,113,0}}, +/* 1897 */ {(12<<2)|2,{48,113,0}}, +/* 1898 */ {(12<<2)|2,{48,113,0}}, +/* 1899 */ {(12<<2)|2,{48,113,0}}, +/* 1900 */ {(12<<2)|2,{48,113,0}}, +/* 1901 */ {(12<<2)|2,{48,113,0}}, +/* 1902 */ {(12<<2)|2,{48,113,0}}, +/* 1903 */ {(12<<2)|2,{48,113,0}}, +/* 1904 */ {(12<<2)|2,{48,118,0}}, +/* 1905 */ {(12<<2)|2,{48,118,0}}, +/* 1906 */ {(12<<2)|2,{48,118,0}}, +/* 1907 */ {(12<<2)|2,{48,118,0}}, +/* 1908 */ {(12<<2)|2,{48,118,0}}, +/* 1909 */ {(12<<2)|2,{48,118,0}}, +/* 1910 */ {(12<<2)|2,{48,118,0}}, +/* 1911 */ {(12<<2)|2,{48,118,0}}, +/* 1912 */ {(12<<2)|2,{48,118,0}}, +/* 1913 */ {(12<<2)|2,{48,118,0}}, +/* 1914 */ {(12<<2)|2,{48,118,0}}, +/* 1915 */ {(12<<2)|2,{48,118,0}}, +/* 1916 */ {(12<<2)|2,{48,118,0}}, +/* 1917 */ {(12<<2)|2,{48,118,0}}, +/* 1918 */ {(12<<2)|2,{48,118,0}}, +/* 1919 */ {(12<<2)|2,{48,118,0}}, +/* 1920 */ {(12<<2)|2,{48,119,0}}, +/* 1921 */ {(12<<2)|2,{48,119,0}}, +/* 1922 */ {(12<<2)|2,{48,119,0}}, +/* 1923 */ {(12<<2)|2,{48,119,0}}, +/* 1924 */ {(12<<2)|2,{48,119,0}}, +/* 1925 */ {(12<<2)|2,{48,119,0}}, +/* 1926 */ {(12<<2)|2,{48,119,0}}, +/* 1927 */ {(12<<2)|2,{48,119,0}}, +/* 1928 */ {(12<<2)|2,{48,119,0}}, +/* 1929 */ {(12<<2)|2,{48,119,0}}, +/* 1930 */ {(12<<2)|2,{48,119,0}}, +/* 1931 */ {(12<<2)|2,{48,119,0}}, +/* 1932 */ {(12<<2)|2,{48,119,0}}, +/* 1933 */ {(12<<2)|2,{48,119,0}}, +/* 1934 */ {(12<<2)|2,{48,119,0}}, +/* 1935 */ {(12<<2)|2,{48,119,0}}, +/* 1936 */ {(12<<2)|2,{48,120,0}}, +/* 1937 */ {(12<<2)|2,{48,120,0}}, +/* 1938 */ {(12<<2)|2,{48,120,0}}, +/* 1939 */ {(12<<2)|2,{48,120,0}}, +/* 1940 */ {(12<<2)|2,{48,120,0}}, +/* 1941 */ {(12<<2)|2,{48,120,0}}, +/* 1942 */ {(12<<2)|2,{48,120,0}}, +/* 1943 */ {(12<<2)|2,{48,120,0}}, +/* 1944 */ {(12<<2)|2,{48,120,0}}, +/* 1945 */ {(12<<2)|2,{48,120,0}}, +/* 1946 */ {(12<<2)|2,{48,120,0}}, +/* 1947 */ {(12<<2)|2,{48,120,0}}, +/* 1948 */ {(12<<2)|2,{48,120,0}}, +/* 1949 */ {(12<<2)|2,{48,120,0}}, +/* 1950 */ {(12<<2)|2,{48,120,0}}, +/* 1951 */ {(12<<2)|2,{48,120,0}}, +/* 1952 */ {(12<<2)|2,{48,121,0}}, +/* 1953 */ {(12<<2)|2,{48,121,0}}, +/* 1954 */ {(12<<2)|2,{48,121,0}}, +/* 1955 */ {(12<<2)|2,{48,121,0}}, +/* 1956 */ {(12<<2)|2,{48,121,0}}, +/* 1957 */ {(12<<2)|2,{48,121,0}}, +/* 1958 */ {(12<<2)|2,{48,121,0}}, +/* 1959 */ {(12<<2)|2,{48,121,0}}, +/* 1960 */ {(12<<2)|2,{48,121,0}}, +/* 1961 */ {(12<<2)|2,{48,121,0}}, +/* 1962 */ {(12<<2)|2,{48,121,0}}, +/* 1963 */ {(12<<2)|2,{48,121,0}}, +/* 1964 */ {(12<<2)|2,{48,121,0}}, +/* 1965 */ {(12<<2)|2,{48,121,0}}, +/* 1966 */ {(12<<2)|2,{48,121,0}}, +/* 1967 */ {(12<<2)|2,{48,121,0}}, +/* 1968 */ {(12<<2)|2,{48,122,0}}, +/* 1969 */ {(12<<2)|2,{48,122,0}}, +/* 1970 */ {(12<<2)|2,{48,122,0}}, +/* 1971 */ {(12<<2)|2,{48,122,0}}, +/* 1972 */ {(12<<2)|2,{48,122,0}}, +/* 1973 */ {(12<<2)|2,{48,122,0}}, +/* 1974 */ {(12<<2)|2,{48,122,0}}, +/* 1975 */ {(12<<2)|2,{48,122,0}}, +/* 1976 */ {(12<<2)|2,{48,122,0}}, +/* 1977 */ {(12<<2)|2,{48,122,0}}, +/* 1978 */ {(12<<2)|2,{48,122,0}}, +/* 1979 */ {(12<<2)|2,{48,122,0}}, +/* 1980 */ {(12<<2)|2,{48,122,0}}, +/* 1981 */ {(12<<2)|2,{48,122,0}}, +/* 1982 */ {(12<<2)|2,{48,122,0}}, +/* 1983 */ {(12<<2)|2,{48,122,0}}, +/* 1984 */ {(13<<2)|2,{48,38,0}}, +/* 1985 */ {(13<<2)|2,{48,38,0}}, +/* 1986 */ {(13<<2)|2,{48,38,0}}, +/* 1987 */ {(13<<2)|2,{48,38,0}}, +/* 1988 */ {(13<<2)|2,{48,38,0}}, +/* 1989 */ {(13<<2)|2,{48,38,0}}, +/* 1990 */ {(13<<2)|2,{48,38,0}}, +/* 1991 */ {(13<<2)|2,{48,38,0}}, +/* 1992 */ {(13<<2)|2,{48,42,0}}, +/* 1993 */ {(13<<2)|2,{48,42,0}}, +/* 1994 */ {(13<<2)|2,{48,42,0}}, +/* 1995 */ {(13<<2)|2,{48,42,0}}, +/* 1996 */ {(13<<2)|2,{48,42,0}}, +/* 1997 */ {(13<<2)|2,{48,42,0}}, +/* 1998 */ {(13<<2)|2,{48,42,0}}, +/* 1999 */ {(13<<2)|2,{48,42,0}}, +/* 2000 */ {(13<<2)|2,{48,44,0}}, +/* 2001 */ {(13<<2)|2,{48,44,0}}, +/* 2002 */ {(13<<2)|2,{48,44,0}}, +/* 2003 */ {(13<<2)|2,{48,44,0}}, +/* 2004 */ {(13<<2)|2,{48,44,0}}, +/* 2005 */ {(13<<2)|2,{48,44,0}}, +/* 2006 */ {(13<<2)|2,{48,44,0}}, +/* 2007 */ {(13<<2)|2,{48,44,0}}, +/* 2008 */ {(13<<2)|2,{48,59,0}}, +/* 2009 */ {(13<<2)|2,{48,59,0}}, +/* 2010 */ {(13<<2)|2,{48,59,0}}, +/* 2011 */ {(13<<2)|2,{48,59,0}}, +/* 2012 */ {(13<<2)|2,{48,59,0}}, +/* 2013 */ {(13<<2)|2,{48,59,0}}, +/* 2014 */ {(13<<2)|2,{48,59,0}}, +/* 2015 */ {(13<<2)|2,{48,59,0}}, +/* 2016 */ {(13<<2)|2,{48,88,0}}, +/* 2017 */ {(13<<2)|2,{48,88,0}}, +/* 2018 */ {(13<<2)|2,{48,88,0}}, +/* 2019 */ {(13<<2)|2,{48,88,0}}, +/* 2020 */ {(13<<2)|2,{48,88,0}}, +/* 2021 */ {(13<<2)|2,{48,88,0}}, +/* 2022 */ {(13<<2)|2,{48,88,0}}, +/* 2023 */ {(13<<2)|2,{48,88,0}}, +/* 2024 */ {(13<<2)|2,{48,90,0}}, +/* 2025 */ {(13<<2)|2,{48,90,0}}, +/* 2026 */ {(13<<2)|2,{48,90,0}}, +/* 2027 */ {(13<<2)|2,{48,90,0}}, +/* 2028 */ {(13<<2)|2,{48,90,0}}, +/* 2029 */ {(13<<2)|2,{48,90,0}}, +/* 2030 */ {(13<<2)|2,{48,90,0}}, +/* 2031 */ {(13<<2)|2,{48,90,0}}, +/* 2032 */ {(15<<2)|2,{48,33,0}}, +/* 2033 */ {(15<<2)|2,{48,33,0}}, +/* 2034 */ {(15<<2)|2,{48,34,0}}, +/* 2035 */ {(15<<2)|2,{48,34,0}}, +/* 2036 */ {(15<<2)|2,{48,40,0}}, +/* 2037 */ {(15<<2)|2,{48,40,0}}, +/* 2038 */ {(15<<2)|2,{48,41,0}}, +/* 2039 */ {(15<<2)|2,{48,41,0}}, +/* 2040 */ {(15<<2)|2,{48,63,0}}, +/* 2041 */ {(15<<2)|2,{48,63,0}}, +/* 2042 */ {(16<<2)|2,{48,39,0}}, +/* 2043 */ {(16<<2)|2,{48,43,0}}, +/* 2044 */ {(16<<2)|2,{48,124,0}}, +/* 2045 */ {(5<<2)|1,{48,0,0}}, +/* 2046 */ {(5<<2)|1,{48,0,0}}, +/* 2047 */ {(5<<2)|1,{48,0,0}}, +/* 2048 */ {(15<<2)|3,{49,48,48}}, +/* 2049 */ {(15<<2)|3,{49,48,48}}, +/* 2050 */ {(15<<2)|3,{49,48,49}}, +/* 2051 */ {(15<<2)|3,{49,48,49}}, +/* 2052 */ {(15<<2)|3,{49,48,50}}, +/* 2053 */ {(15<<2)|3,{49,48,50}}, +/* 2054 */ {(15<<2)|3,{49,48,97}}, +/* 2055 */ {(15<<2)|3,{49,48,97}}, +/* 2056 */ {(15<<2)|3,{49,48,99}}, +/* 2057 */ {(15<<2)|3,{49,48,99}}, +/* 2058 */ {(15<<2)|3,{49,48,101}}, +/* 2059 */ {(15<<2)|3,{49,48,101}}, +/* 2060 */ {(15<<2)|3,{49,48,105}}, +/* 2061 */ {(15<<2)|3,{49,48,105}}, +/* 2062 */ {(15<<2)|3,{49,48,111}}, +/* 2063 */ {(15<<2)|3,{49,48,111}}, +/* 2064 */ {(15<<2)|3,{49,48,115}}, +/* 2065 */ {(15<<2)|3,{49,48,115}}, +/* 2066 */ {(15<<2)|3,{49,48,116}}, +/* 2067 */ {(15<<2)|3,{49,48,116}}, +/* 2068 */ {(16<<2)|3,{49,48,32}}, +/* 2069 */ {(16<<2)|3,{49,48,37}}, +/* 2070 */ {(16<<2)|3,{49,48,45}}, +/* 2071 */ {(16<<2)|3,{49,48,46}}, +/* 2072 */ {(16<<2)|3,{49,48,47}}, +/* 2073 */ {(16<<2)|3,{49,48,51}}, +/* 2074 */ {(16<<2)|3,{49,48,52}}, +/* 2075 */ {(16<<2)|3,{49,48,53}}, +/* 2076 */ {(16<<2)|3,{49,48,54}}, +/* 2077 */ {(16<<2)|3,{49,48,55}}, +/* 2078 */ {(16<<2)|3,{49,48,56}}, +/* 2079 */ {(16<<2)|3,{49,48,57}}, +/* 2080 */ {(16<<2)|3,{49,48,61}}, +/* 2081 */ {(16<<2)|3,{49,48,65}}, +/* 2082 */ {(16<<2)|3,{49,48,95}}, +/* 2083 */ {(16<<2)|3,{49,48,98}}, +/* 2084 */ {(16<<2)|3,{49,48,100}}, +/* 2085 */ {(16<<2)|3,{49,48,102}}, +/* 2086 */ {(16<<2)|3,{49,48,103}}, +/* 2087 */ {(16<<2)|3,{49,48,104}}, +/* 2088 */ {(16<<2)|3,{49,48,108}}, +/* 2089 */ {(16<<2)|3,{49,48,109}}, +/* 2090 */ {(16<<2)|3,{49,48,110}}, +/* 2091 */ {(16<<2)|3,{49,48,112}}, +/* 2092 */ {(16<<2)|3,{49,48,114}}, +/* 2093 */ {(16<<2)|3,{49,48,117}}, +/* 2094 */ {(10<<2)|2,{49,48,0}}, +/* 2095 */ {(10<<2)|2,{49,48,0}}, +/* 2096 */ {(10<<2)|2,{49,48,0}}, +/* 2097 */ {(10<<2)|2,{49,48,0}}, +/* 2098 */ {(10<<2)|2,{49,48,0}}, +/* 2099 */ {(10<<2)|2,{49,48,0}}, +/* 2100 */ {(10<<2)|2,{49,48,0}}, +/* 2101 */ {(10<<2)|2,{49,48,0}}, +/* 2102 */ {(10<<2)|2,{49,48,0}}, +/* 2103 */ {(10<<2)|2,{49,48,0}}, +/* 2104 */ {(10<<2)|2,{49,48,0}}, +/* 2105 */ {(10<<2)|2,{49,48,0}}, +/* 2106 */ {(10<<2)|2,{49,48,0}}, +/* 2107 */ {(10<<2)|2,{49,48,0}}, +/* 2108 */ {(10<<2)|2,{49,48,0}}, +/* 2109 */ {(10<<2)|2,{49,48,0}}, +/* 2110 */ {(10<<2)|2,{49,48,0}}, +/* 2111 */ {(10<<2)|2,{49,48,0}}, +/* 2112 */ {(15<<2)|3,{49,49,48}}, +/* 2113 */ {(15<<2)|3,{49,49,48}}, +/* 2114 */ {(15<<2)|3,{49,49,49}}, +/* 2115 */ {(15<<2)|3,{49,49,49}}, +/* 2116 */ {(15<<2)|3,{49,49,50}}, +/* 2117 */ {(15<<2)|3,{49,49,50}}, +/* 2118 */ {(15<<2)|3,{49,49,97}}, +/* 2119 */ {(15<<2)|3,{49,49,97}}, +/* 2120 */ {(15<<2)|3,{49,49,99}}, +/* 2121 */ {(15<<2)|3,{49,49,99}}, +/* 2122 */ {(15<<2)|3,{49,49,101}}, +/* 2123 */ {(15<<2)|3,{49,49,101}}, +/* 2124 */ {(15<<2)|3,{49,49,105}}, +/* 2125 */ {(15<<2)|3,{49,49,105}}, +/* 2126 */ {(15<<2)|3,{49,49,111}}, +/* 2127 */ {(15<<2)|3,{49,49,111}}, +/* 2128 */ {(15<<2)|3,{49,49,115}}, +/* 2129 */ {(15<<2)|3,{49,49,115}}, +/* 2130 */ {(15<<2)|3,{49,49,116}}, +/* 2131 */ {(15<<2)|3,{49,49,116}}, +/* 2132 */ {(16<<2)|3,{49,49,32}}, +/* 2133 */ {(16<<2)|3,{49,49,37}}, +/* 2134 */ {(16<<2)|3,{49,49,45}}, +/* 2135 */ {(16<<2)|3,{49,49,46}}, +/* 2136 */ {(16<<2)|3,{49,49,47}}, +/* 2137 */ {(16<<2)|3,{49,49,51}}, +/* 2138 */ {(16<<2)|3,{49,49,52}}, +/* 2139 */ {(16<<2)|3,{49,49,53}}, +/* 2140 */ {(16<<2)|3,{49,49,54}}, +/* 2141 */ {(16<<2)|3,{49,49,55}}, +/* 2142 */ {(16<<2)|3,{49,49,56}}, +/* 2143 */ {(16<<2)|3,{49,49,57}}, +/* 2144 */ {(16<<2)|3,{49,49,61}}, +/* 2145 */ {(16<<2)|3,{49,49,65}}, +/* 2146 */ {(16<<2)|3,{49,49,95}}, +/* 2147 */ {(16<<2)|3,{49,49,98}}, +/* 2148 */ {(16<<2)|3,{49,49,100}}, +/* 2149 */ {(16<<2)|3,{49,49,102}}, +/* 2150 */ {(16<<2)|3,{49,49,103}}, +/* 2151 */ {(16<<2)|3,{49,49,104}}, +/* 2152 */ {(16<<2)|3,{49,49,108}}, +/* 2153 */ {(16<<2)|3,{49,49,109}}, +/* 2154 */ {(16<<2)|3,{49,49,110}}, +/* 2155 */ {(16<<2)|3,{49,49,112}}, +/* 2156 */ {(16<<2)|3,{49,49,114}}, +/* 2157 */ {(16<<2)|3,{49,49,117}}, +/* 2158 */ {(10<<2)|2,{49,49,0}}, +/* 2159 */ {(10<<2)|2,{49,49,0}}, +/* 2160 */ {(10<<2)|2,{49,49,0}}, +/* 2161 */ {(10<<2)|2,{49,49,0}}, +/* 2162 */ {(10<<2)|2,{49,49,0}}, +/* 2163 */ {(10<<2)|2,{49,49,0}}, +/* 2164 */ {(10<<2)|2,{49,49,0}}, +/* 2165 */ {(10<<2)|2,{49,49,0}}, +/* 2166 */ {(10<<2)|2,{49,49,0}}, +/* 2167 */ {(10<<2)|2,{49,49,0}}, +/* 2168 */ {(10<<2)|2,{49,49,0}}, +/* 2169 */ {(10<<2)|2,{49,49,0}}, +/* 2170 */ {(10<<2)|2,{49,49,0}}, +/* 2171 */ {(10<<2)|2,{49,49,0}}, +/* 2172 */ {(10<<2)|2,{49,49,0}}, +/* 2173 */ {(10<<2)|2,{49,49,0}}, +/* 2174 */ {(10<<2)|2,{49,49,0}}, +/* 2175 */ {(10<<2)|2,{49,49,0}}, +/* 2176 */ {(15<<2)|3,{49,50,48}}, +/* 2177 */ {(15<<2)|3,{49,50,48}}, +/* 2178 */ {(15<<2)|3,{49,50,49}}, +/* 2179 */ {(15<<2)|3,{49,50,49}}, +/* 2180 */ {(15<<2)|3,{49,50,50}}, +/* 2181 */ {(15<<2)|3,{49,50,50}}, +/* 2182 */ {(15<<2)|3,{49,50,97}}, +/* 2183 */ {(15<<2)|3,{49,50,97}}, +/* 2184 */ {(15<<2)|3,{49,50,99}}, +/* 2185 */ {(15<<2)|3,{49,50,99}}, +/* 2186 */ {(15<<2)|3,{49,50,101}}, +/* 2187 */ {(15<<2)|3,{49,50,101}}, +/* 2188 */ {(15<<2)|3,{49,50,105}}, +/* 2189 */ {(15<<2)|3,{49,50,105}}, +/* 2190 */ {(15<<2)|3,{49,50,111}}, +/* 2191 */ {(15<<2)|3,{49,50,111}}, +/* 2192 */ {(15<<2)|3,{49,50,115}}, +/* 2193 */ {(15<<2)|3,{49,50,115}}, +/* 2194 */ {(15<<2)|3,{49,50,116}}, +/* 2195 */ {(15<<2)|3,{49,50,116}}, +/* 2196 */ {(16<<2)|3,{49,50,32}}, +/* 2197 */ {(16<<2)|3,{49,50,37}}, +/* 2198 */ {(16<<2)|3,{49,50,45}}, +/* 2199 */ {(16<<2)|3,{49,50,46}}, +/* 2200 */ {(16<<2)|3,{49,50,47}}, +/* 2201 */ {(16<<2)|3,{49,50,51}}, +/* 2202 */ {(16<<2)|3,{49,50,52}}, +/* 2203 */ {(16<<2)|3,{49,50,53}}, +/* 2204 */ {(16<<2)|3,{49,50,54}}, +/* 2205 */ {(16<<2)|3,{49,50,55}}, +/* 2206 */ {(16<<2)|3,{49,50,56}}, +/* 2207 */ {(16<<2)|3,{49,50,57}}, +/* 2208 */ {(16<<2)|3,{49,50,61}}, +/* 2209 */ {(16<<2)|3,{49,50,65}}, +/* 2210 */ {(16<<2)|3,{49,50,95}}, +/* 2211 */ {(16<<2)|3,{49,50,98}}, +/* 2212 */ {(16<<2)|3,{49,50,100}}, +/* 2213 */ {(16<<2)|3,{49,50,102}}, +/* 2214 */ {(16<<2)|3,{49,50,103}}, +/* 2215 */ {(16<<2)|3,{49,50,104}}, +/* 2216 */ {(16<<2)|3,{49,50,108}}, +/* 2217 */ {(16<<2)|3,{49,50,109}}, +/* 2218 */ {(16<<2)|3,{49,50,110}}, +/* 2219 */ {(16<<2)|3,{49,50,112}}, +/* 2220 */ {(16<<2)|3,{49,50,114}}, +/* 2221 */ {(16<<2)|3,{49,50,117}}, +/* 2222 */ {(10<<2)|2,{49,50,0}}, +/* 2223 */ {(10<<2)|2,{49,50,0}}, +/* 2224 */ {(10<<2)|2,{49,50,0}}, +/* 2225 */ {(10<<2)|2,{49,50,0}}, +/* 2226 */ {(10<<2)|2,{49,50,0}}, +/* 2227 */ {(10<<2)|2,{49,50,0}}, +/* 2228 */ {(10<<2)|2,{49,50,0}}, +/* 2229 */ {(10<<2)|2,{49,50,0}}, +/* 2230 */ {(10<<2)|2,{49,50,0}}, +/* 2231 */ {(10<<2)|2,{49,50,0}}, +/* 2232 */ {(10<<2)|2,{49,50,0}}, +/* 2233 */ {(10<<2)|2,{49,50,0}}, +/* 2234 */ {(10<<2)|2,{49,50,0}}, +/* 2235 */ {(10<<2)|2,{49,50,0}}, +/* 2236 */ {(10<<2)|2,{49,50,0}}, +/* 2237 */ {(10<<2)|2,{49,50,0}}, +/* 2238 */ {(10<<2)|2,{49,50,0}}, +/* 2239 */ {(10<<2)|2,{49,50,0}}, +/* 2240 */ {(15<<2)|3,{49,97,48}}, +/* 2241 */ {(15<<2)|3,{49,97,48}}, +/* 2242 */ {(15<<2)|3,{49,97,49}}, +/* 2243 */ {(15<<2)|3,{49,97,49}}, +/* 2244 */ {(15<<2)|3,{49,97,50}}, +/* 2245 */ {(15<<2)|3,{49,97,50}}, +/* 2246 */ {(15<<2)|3,{49,97,97}}, +/* 2247 */ {(15<<2)|3,{49,97,97}}, +/* 2248 */ {(15<<2)|3,{49,97,99}}, +/* 2249 */ {(15<<2)|3,{49,97,99}}, +/* 2250 */ {(15<<2)|3,{49,97,101}}, +/* 2251 */ {(15<<2)|3,{49,97,101}}, +/* 2252 */ {(15<<2)|3,{49,97,105}}, +/* 2253 */ {(15<<2)|3,{49,97,105}}, +/* 2254 */ {(15<<2)|3,{49,97,111}}, +/* 2255 */ {(15<<2)|3,{49,97,111}}, +/* 2256 */ {(15<<2)|3,{49,97,115}}, +/* 2257 */ {(15<<2)|3,{49,97,115}}, +/* 2258 */ {(15<<2)|3,{49,97,116}}, +/* 2259 */ {(15<<2)|3,{49,97,116}}, +/* 2260 */ {(16<<2)|3,{49,97,32}}, +/* 2261 */ {(16<<2)|3,{49,97,37}}, +/* 2262 */ {(16<<2)|3,{49,97,45}}, +/* 2263 */ {(16<<2)|3,{49,97,46}}, +/* 2264 */ {(16<<2)|3,{49,97,47}}, +/* 2265 */ {(16<<2)|3,{49,97,51}}, +/* 2266 */ {(16<<2)|3,{49,97,52}}, +/* 2267 */ {(16<<2)|3,{49,97,53}}, +/* 2268 */ {(16<<2)|3,{49,97,54}}, +/* 2269 */ {(16<<2)|3,{49,97,55}}, +/* 2270 */ {(16<<2)|3,{49,97,56}}, +/* 2271 */ {(16<<2)|3,{49,97,57}}, +/* 2272 */ {(16<<2)|3,{49,97,61}}, +/* 2273 */ {(16<<2)|3,{49,97,65}}, +/* 2274 */ {(16<<2)|3,{49,97,95}}, +/* 2275 */ {(16<<2)|3,{49,97,98}}, +/* 2276 */ {(16<<2)|3,{49,97,100}}, +/* 2277 */ {(16<<2)|3,{49,97,102}}, +/* 2278 */ {(16<<2)|3,{49,97,103}}, +/* 2279 */ {(16<<2)|3,{49,97,104}}, +/* 2280 */ {(16<<2)|3,{49,97,108}}, +/* 2281 */ {(16<<2)|3,{49,97,109}}, +/* 2282 */ {(16<<2)|3,{49,97,110}}, +/* 2283 */ {(16<<2)|3,{49,97,112}}, +/* 2284 */ {(16<<2)|3,{49,97,114}}, +/* 2285 */ {(16<<2)|3,{49,97,117}}, +/* 2286 */ {(10<<2)|2,{49,97,0}}, +/* 2287 */ {(10<<2)|2,{49,97,0}}, +/* 2288 */ {(10<<2)|2,{49,97,0}}, +/* 2289 */ {(10<<2)|2,{49,97,0}}, +/* 2290 */ {(10<<2)|2,{49,97,0}}, +/* 2291 */ {(10<<2)|2,{49,97,0}}, +/* 2292 */ {(10<<2)|2,{49,97,0}}, +/* 2293 */ {(10<<2)|2,{49,97,0}}, +/* 2294 */ {(10<<2)|2,{49,97,0}}, +/* 2295 */ {(10<<2)|2,{49,97,0}}, +/* 2296 */ {(10<<2)|2,{49,97,0}}, +/* 2297 */ {(10<<2)|2,{49,97,0}}, +/* 2298 */ {(10<<2)|2,{49,97,0}}, +/* 2299 */ {(10<<2)|2,{49,97,0}}, +/* 2300 */ {(10<<2)|2,{49,97,0}}, +/* 2301 */ {(10<<2)|2,{49,97,0}}, +/* 2302 */ {(10<<2)|2,{49,97,0}}, +/* 2303 */ {(10<<2)|2,{49,97,0}}, +/* 2304 */ {(15<<2)|3,{49,99,48}}, +/* 2305 */ {(15<<2)|3,{49,99,48}}, +/* 2306 */ {(15<<2)|3,{49,99,49}}, +/* 2307 */ {(15<<2)|3,{49,99,49}}, +/* 2308 */ {(15<<2)|3,{49,99,50}}, +/* 2309 */ {(15<<2)|3,{49,99,50}}, +/* 2310 */ {(15<<2)|3,{49,99,97}}, +/* 2311 */ {(15<<2)|3,{49,99,97}}, +/* 2312 */ {(15<<2)|3,{49,99,99}}, +/* 2313 */ {(15<<2)|3,{49,99,99}}, +/* 2314 */ {(15<<2)|3,{49,99,101}}, +/* 2315 */ {(15<<2)|3,{49,99,101}}, +/* 2316 */ {(15<<2)|3,{49,99,105}}, +/* 2317 */ {(15<<2)|3,{49,99,105}}, +/* 2318 */ {(15<<2)|3,{49,99,111}}, +/* 2319 */ {(15<<2)|3,{49,99,111}}, +/* 2320 */ {(15<<2)|3,{49,99,115}}, +/* 2321 */ {(15<<2)|3,{49,99,115}}, +/* 2322 */ {(15<<2)|3,{49,99,116}}, +/* 2323 */ {(15<<2)|3,{49,99,116}}, +/* 2324 */ {(16<<2)|3,{49,99,32}}, +/* 2325 */ {(16<<2)|3,{49,99,37}}, +/* 2326 */ {(16<<2)|3,{49,99,45}}, +/* 2327 */ {(16<<2)|3,{49,99,46}}, +/* 2328 */ {(16<<2)|3,{49,99,47}}, +/* 2329 */ {(16<<2)|3,{49,99,51}}, +/* 2330 */ {(16<<2)|3,{49,99,52}}, +/* 2331 */ {(16<<2)|3,{49,99,53}}, +/* 2332 */ {(16<<2)|3,{49,99,54}}, +/* 2333 */ {(16<<2)|3,{49,99,55}}, +/* 2334 */ {(16<<2)|3,{49,99,56}}, +/* 2335 */ {(16<<2)|3,{49,99,57}}, +/* 2336 */ {(16<<2)|3,{49,99,61}}, +/* 2337 */ {(16<<2)|3,{49,99,65}}, +/* 2338 */ {(16<<2)|3,{49,99,95}}, +/* 2339 */ {(16<<2)|3,{49,99,98}}, +/* 2340 */ {(16<<2)|3,{49,99,100}}, +/* 2341 */ {(16<<2)|3,{49,99,102}}, +/* 2342 */ {(16<<2)|3,{49,99,103}}, +/* 2343 */ {(16<<2)|3,{49,99,104}}, +/* 2344 */ {(16<<2)|3,{49,99,108}}, +/* 2345 */ {(16<<2)|3,{49,99,109}}, +/* 2346 */ {(16<<2)|3,{49,99,110}}, +/* 2347 */ {(16<<2)|3,{49,99,112}}, +/* 2348 */ {(16<<2)|3,{49,99,114}}, +/* 2349 */ {(16<<2)|3,{49,99,117}}, +/* 2350 */ {(10<<2)|2,{49,99,0}}, +/* 2351 */ {(10<<2)|2,{49,99,0}}, +/* 2352 */ {(10<<2)|2,{49,99,0}}, +/* 2353 */ {(10<<2)|2,{49,99,0}}, +/* 2354 */ {(10<<2)|2,{49,99,0}}, +/* 2355 */ {(10<<2)|2,{49,99,0}}, +/* 2356 */ {(10<<2)|2,{49,99,0}}, +/* 2357 */ {(10<<2)|2,{49,99,0}}, +/* 2358 */ {(10<<2)|2,{49,99,0}}, +/* 2359 */ {(10<<2)|2,{49,99,0}}, +/* 2360 */ {(10<<2)|2,{49,99,0}}, +/* 2361 */ {(10<<2)|2,{49,99,0}}, +/* 2362 */ {(10<<2)|2,{49,99,0}}, +/* 2363 */ {(10<<2)|2,{49,99,0}}, +/* 2364 */ {(10<<2)|2,{49,99,0}}, +/* 2365 */ {(10<<2)|2,{49,99,0}}, +/* 2366 */ {(10<<2)|2,{49,99,0}}, +/* 2367 */ {(10<<2)|2,{49,99,0}}, +/* 2368 */ {(15<<2)|3,{49,101,48}}, +/* 2369 */ {(15<<2)|3,{49,101,48}}, +/* 2370 */ {(15<<2)|3,{49,101,49}}, +/* 2371 */ {(15<<2)|3,{49,101,49}}, +/* 2372 */ {(15<<2)|3,{49,101,50}}, +/* 2373 */ {(15<<2)|3,{49,101,50}}, +/* 2374 */ {(15<<2)|3,{49,101,97}}, +/* 2375 */ {(15<<2)|3,{49,101,97}}, +/* 2376 */ {(15<<2)|3,{49,101,99}}, +/* 2377 */ {(15<<2)|3,{49,101,99}}, +/* 2378 */ {(15<<2)|3,{49,101,101}}, +/* 2379 */ {(15<<2)|3,{49,101,101}}, +/* 2380 */ {(15<<2)|3,{49,101,105}}, +/* 2381 */ {(15<<2)|3,{49,101,105}}, +/* 2382 */ {(15<<2)|3,{49,101,111}}, +/* 2383 */ {(15<<2)|3,{49,101,111}}, +/* 2384 */ {(15<<2)|3,{49,101,115}}, +/* 2385 */ {(15<<2)|3,{49,101,115}}, +/* 2386 */ {(15<<2)|3,{49,101,116}}, +/* 2387 */ {(15<<2)|3,{49,101,116}}, +/* 2388 */ {(16<<2)|3,{49,101,32}}, +/* 2389 */ {(16<<2)|3,{49,101,37}}, +/* 2390 */ {(16<<2)|3,{49,101,45}}, +/* 2391 */ {(16<<2)|3,{49,101,46}}, +/* 2392 */ {(16<<2)|3,{49,101,47}}, +/* 2393 */ {(16<<2)|3,{49,101,51}}, +/* 2394 */ {(16<<2)|3,{49,101,52}}, +/* 2395 */ {(16<<2)|3,{49,101,53}}, +/* 2396 */ {(16<<2)|3,{49,101,54}}, +/* 2397 */ {(16<<2)|3,{49,101,55}}, +/* 2398 */ {(16<<2)|3,{49,101,56}}, +/* 2399 */ {(16<<2)|3,{49,101,57}}, +/* 2400 */ {(16<<2)|3,{49,101,61}}, +/* 2401 */ {(16<<2)|3,{49,101,65}}, +/* 2402 */ {(16<<2)|3,{49,101,95}}, +/* 2403 */ {(16<<2)|3,{49,101,98}}, +/* 2404 */ {(16<<2)|3,{49,101,100}}, +/* 2405 */ {(16<<2)|3,{49,101,102}}, +/* 2406 */ {(16<<2)|3,{49,101,103}}, +/* 2407 */ {(16<<2)|3,{49,101,104}}, +/* 2408 */ {(16<<2)|3,{49,101,108}}, +/* 2409 */ {(16<<2)|3,{49,101,109}}, +/* 2410 */ {(16<<2)|3,{49,101,110}}, +/* 2411 */ {(16<<2)|3,{49,101,112}}, +/* 2412 */ {(16<<2)|3,{49,101,114}}, +/* 2413 */ {(16<<2)|3,{49,101,117}}, +/* 2414 */ {(10<<2)|2,{49,101,0}}, +/* 2415 */ {(10<<2)|2,{49,101,0}}, +/* 2416 */ {(10<<2)|2,{49,101,0}}, +/* 2417 */ {(10<<2)|2,{49,101,0}}, +/* 2418 */ {(10<<2)|2,{49,101,0}}, +/* 2419 */ {(10<<2)|2,{49,101,0}}, +/* 2420 */ {(10<<2)|2,{49,101,0}}, +/* 2421 */ {(10<<2)|2,{49,101,0}}, +/* 2422 */ {(10<<2)|2,{49,101,0}}, +/* 2423 */ {(10<<2)|2,{49,101,0}}, +/* 2424 */ {(10<<2)|2,{49,101,0}}, +/* 2425 */ {(10<<2)|2,{49,101,0}}, +/* 2426 */ {(10<<2)|2,{49,101,0}}, +/* 2427 */ {(10<<2)|2,{49,101,0}}, +/* 2428 */ {(10<<2)|2,{49,101,0}}, +/* 2429 */ {(10<<2)|2,{49,101,0}}, +/* 2430 */ {(10<<2)|2,{49,101,0}}, +/* 2431 */ {(10<<2)|2,{49,101,0}}, +/* 2432 */ {(15<<2)|3,{49,105,48}}, +/* 2433 */ {(15<<2)|3,{49,105,48}}, +/* 2434 */ {(15<<2)|3,{49,105,49}}, +/* 2435 */ {(15<<2)|3,{49,105,49}}, +/* 2436 */ {(15<<2)|3,{49,105,50}}, +/* 2437 */ {(15<<2)|3,{49,105,50}}, +/* 2438 */ {(15<<2)|3,{49,105,97}}, +/* 2439 */ {(15<<2)|3,{49,105,97}}, +/* 2440 */ {(15<<2)|3,{49,105,99}}, +/* 2441 */ {(15<<2)|3,{49,105,99}}, +/* 2442 */ {(15<<2)|3,{49,105,101}}, +/* 2443 */ {(15<<2)|3,{49,105,101}}, +/* 2444 */ {(15<<2)|3,{49,105,105}}, +/* 2445 */ {(15<<2)|3,{49,105,105}}, +/* 2446 */ {(15<<2)|3,{49,105,111}}, +/* 2447 */ {(15<<2)|3,{49,105,111}}, +/* 2448 */ {(15<<2)|3,{49,105,115}}, +/* 2449 */ {(15<<2)|3,{49,105,115}}, +/* 2450 */ {(15<<2)|3,{49,105,116}}, +/* 2451 */ {(15<<2)|3,{49,105,116}}, +/* 2452 */ {(16<<2)|3,{49,105,32}}, +/* 2453 */ {(16<<2)|3,{49,105,37}}, +/* 2454 */ {(16<<2)|3,{49,105,45}}, +/* 2455 */ {(16<<2)|3,{49,105,46}}, +/* 2456 */ {(16<<2)|3,{49,105,47}}, +/* 2457 */ {(16<<2)|3,{49,105,51}}, +/* 2458 */ {(16<<2)|3,{49,105,52}}, +/* 2459 */ {(16<<2)|3,{49,105,53}}, +/* 2460 */ {(16<<2)|3,{49,105,54}}, +/* 2461 */ {(16<<2)|3,{49,105,55}}, +/* 2462 */ {(16<<2)|3,{49,105,56}}, +/* 2463 */ {(16<<2)|3,{49,105,57}}, +/* 2464 */ {(16<<2)|3,{49,105,61}}, +/* 2465 */ {(16<<2)|3,{49,105,65}}, +/* 2466 */ {(16<<2)|3,{49,105,95}}, +/* 2467 */ {(16<<2)|3,{49,105,98}}, +/* 2468 */ {(16<<2)|3,{49,105,100}}, +/* 2469 */ {(16<<2)|3,{49,105,102}}, +/* 2470 */ {(16<<2)|3,{49,105,103}}, +/* 2471 */ {(16<<2)|3,{49,105,104}}, +/* 2472 */ {(16<<2)|3,{49,105,108}}, +/* 2473 */ {(16<<2)|3,{49,105,109}}, +/* 2474 */ {(16<<2)|3,{49,105,110}}, +/* 2475 */ {(16<<2)|3,{49,105,112}}, +/* 2476 */ {(16<<2)|3,{49,105,114}}, +/* 2477 */ {(16<<2)|3,{49,105,117}}, +/* 2478 */ {(10<<2)|2,{49,105,0}}, +/* 2479 */ {(10<<2)|2,{49,105,0}}, +/* 2480 */ {(10<<2)|2,{49,105,0}}, +/* 2481 */ {(10<<2)|2,{49,105,0}}, +/* 2482 */ {(10<<2)|2,{49,105,0}}, +/* 2483 */ {(10<<2)|2,{49,105,0}}, +/* 2484 */ {(10<<2)|2,{49,105,0}}, +/* 2485 */ {(10<<2)|2,{49,105,0}}, +/* 2486 */ {(10<<2)|2,{49,105,0}}, +/* 2487 */ {(10<<2)|2,{49,105,0}}, +/* 2488 */ {(10<<2)|2,{49,105,0}}, +/* 2489 */ {(10<<2)|2,{49,105,0}}, +/* 2490 */ {(10<<2)|2,{49,105,0}}, +/* 2491 */ {(10<<2)|2,{49,105,0}}, +/* 2492 */ {(10<<2)|2,{49,105,0}}, +/* 2493 */ {(10<<2)|2,{49,105,0}}, +/* 2494 */ {(10<<2)|2,{49,105,0}}, +/* 2495 */ {(10<<2)|2,{49,105,0}}, +/* 2496 */ {(15<<2)|3,{49,111,48}}, +/* 2497 */ {(15<<2)|3,{49,111,48}}, +/* 2498 */ {(15<<2)|3,{49,111,49}}, +/* 2499 */ {(15<<2)|3,{49,111,49}}, +/* 2500 */ {(15<<2)|3,{49,111,50}}, +/* 2501 */ {(15<<2)|3,{49,111,50}}, +/* 2502 */ {(15<<2)|3,{49,111,97}}, +/* 2503 */ {(15<<2)|3,{49,111,97}}, +/* 2504 */ {(15<<2)|3,{49,111,99}}, +/* 2505 */ {(15<<2)|3,{49,111,99}}, +/* 2506 */ {(15<<2)|3,{49,111,101}}, +/* 2507 */ {(15<<2)|3,{49,111,101}}, +/* 2508 */ {(15<<2)|3,{49,111,105}}, +/* 2509 */ {(15<<2)|3,{49,111,105}}, +/* 2510 */ {(15<<2)|3,{49,111,111}}, +/* 2511 */ {(15<<2)|3,{49,111,111}}, +/* 2512 */ {(15<<2)|3,{49,111,115}}, +/* 2513 */ {(15<<2)|3,{49,111,115}}, +/* 2514 */ {(15<<2)|3,{49,111,116}}, +/* 2515 */ {(15<<2)|3,{49,111,116}}, +/* 2516 */ {(16<<2)|3,{49,111,32}}, +/* 2517 */ {(16<<2)|3,{49,111,37}}, +/* 2518 */ {(16<<2)|3,{49,111,45}}, +/* 2519 */ {(16<<2)|3,{49,111,46}}, +/* 2520 */ {(16<<2)|3,{49,111,47}}, +/* 2521 */ {(16<<2)|3,{49,111,51}}, +/* 2522 */ {(16<<2)|3,{49,111,52}}, +/* 2523 */ {(16<<2)|3,{49,111,53}}, +/* 2524 */ {(16<<2)|3,{49,111,54}}, +/* 2525 */ {(16<<2)|3,{49,111,55}}, +/* 2526 */ {(16<<2)|3,{49,111,56}}, +/* 2527 */ {(16<<2)|3,{49,111,57}}, +/* 2528 */ {(16<<2)|3,{49,111,61}}, +/* 2529 */ {(16<<2)|3,{49,111,65}}, +/* 2530 */ {(16<<2)|3,{49,111,95}}, +/* 2531 */ {(16<<2)|3,{49,111,98}}, +/* 2532 */ {(16<<2)|3,{49,111,100}}, +/* 2533 */ {(16<<2)|3,{49,111,102}}, +/* 2534 */ {(16<<2)|3,{49,111,103}}, +/* 2535 */ {(16<<2)|3,{49,111,104}}, +/* 2536 */ {(16<<2)|3,{49,111,108}}, +/* 2537 */ {(16<<2)|3,{49,111,109}}, +/* 2538 */ {(16<<2)|3,{49,111,110}}, +/* 2539 */ {(16<<2)|3,{49,111,112}}, +/* 2540 */ {(16<<2)|3,{49,111,114}}, +/* 2541 */ {(16<<2)|3,{49,111,117}}, +/* 2542 */ {(10<<2)|2,{49,111,0}}, +/* 2543 */ {(10<<2)|2,{49,111,0}}, +/* 2544 */ {(10<<2)|2,{49,111,0}}, +/* 2545 */ {(10<<2)|2,{49,111,0}}, +/* 2546 */ {(10<<2)|2,{49,111,0}}, +/* 2547 */ {(10<<2)|2,{49,111,0}}, +/* 2548 */ {(10<<2)|2,{49,111,0}}, +/* 2549 */ {(10<<2)|2,{49,111,0}}, +/* 2550 */ {(10<<2)|2,{49,111,0}}, +/* 2551 */ {(10<<2)|2,{49,111,0}}, +/* 2552 */ {(10<<2)|2,{49,111,0}}, +/* 2553 */ {(10<<2)|2,{49,111,0}}, +/* 2554 */ {(10<<2)|2,{49,111,0}}, +/* 2555 */ {(10<<2)|2,{49,111,0}}, +/* 2556 */ {(10<<2)|2,{49,111,0}}, +/* 2557 */ {(10<<2)|2,{49,111,0}}, +/* 2558 */ {(10<<2)|2,{49,111,0}}, +/* 2559 */ {(10<<2)|2,{49,111,0}}, +/* 2560 */ {(15<<2)|3,{49,115,48}}, +/* 2561 */ {(15<<2)|3,{49,115,48}}, +/* 2562 */ {(15<<2)|3,{49,115,49}}, +/* 2563 */ {(15<<2)|3,{49,115,49}}, +/* 2564 */ {(15<<2)|3,{49,115,50}}, +/* 2565 */ {(15<<2)|3,{49,115,50}}, +/* 2566 */ {(15<<2)|3,{49,115,97}}, +/* 2567 */ {(15<<2)|3,{49,115,97}}, +/* 2568 */ {(15<<2)|3,{49,115,99}}, +/* 2569 */ {(15<<2)|3,{49,115,99}}, +/* 2570 */ {(15<<2)|3,{49,115,101}}, +/* 2571 */ {(15<<2)|3,{49,115,101}}, +/* 2572 */ {(15<<2)|3,{49,115,105}}, +/* 2573 */ {(15<<2)|3,{49,115,105}}, +/* 2574 */ {(15<<2)|3,{49,115,111}}, +/* 2575 */ {(15<<2)|3,{49,115,111}}, +/* 2576 */ {(15<<2)|3,{49,115,115}}, +/* 2577 */ {(15<<2)|3,{49,115,115}}, +/* 2578 */ {(15<<2)|3,{49,115,116}}, +/* 2579 */ {(15<<2)|3,{49,115,116}}, +/* 2580 */ {(16<<2)|3,{49,115,32}}, +/* 2581 */ {(16<<2)|3,{49,115,37}}, +/* 2582 */ {(16<<2)|3,{49,115,45}}, +/* 2583 */ {(16<<2)|3,{49,115,46}}, +/* 2584 */ {(16<<2)|3,{49,115,47}}, +/* 2585 */ {(16<<2)|3,{49,115,51}}, +/* 2586 */ {(16<<2)|3,{49,115,52}}, +/* 2587 */ {(16<<2)|3,{49,115,53}}, +/* 2588 */ {(16<<2)|3,{49,115,54}}, +/* 2589 */ {(16<<2)|3,{49,115,55}}, +/* 2590 */ {(16<<2)|3,{49,115,56}}, +/* 2591 */ {(16<<2)|3,{49,115,57}}, +/* 2592 */ {(16<<2)|3,{49,115,61}}, +/* 2593 */ {(16<<2)|3,{49,115,65}}, +/* 2594 */ {(16<<2)|3,{49,115,95}}, +/* 2595 */ {(16<<2)|3,{49,115,98}}, +/* 2596 */ {(16<<2)|3,{49,115,100}}, +/* 2597 */ {(16<<2)|3,{49,115,102}}, +/* 2598 */ {(16<<2)|3,{49,115,103}}, +/* 2599 */ {(16<<2)|3,{49,115,104}}, +/* 2600 */ {(16<<2)|3,{49,115,108}}, +/* 2601 */ {(16<<2)|3,{49,115,109}}, +/* 2602 */ {(16<<2)|3,{49,115,110}}, +/* 2603 */ {(16<<2)|3,{49,115,112}}, +/* 2604 */ {(16<<2)|3,{49,115,114}}, +/* 2605 */ {(16<<2)|3,{49,115,117}}, +/* 2606 */ {(10<<2)|2,{49,115,0}}, +/* 2607 */ {(10<<2)|2,{49,115,0}}, +/* 2608 */ {(10<<2)|2,{49,115,0}}, +/* 2609 */ {(10<<2)|2,{49,115,0}}, +/* 2610 */ {(10<<2)|2,{49,115,0}}, +/* 2611 */ {(10<<2)|2,{49,115,0}}, +/* 2612 */ {(10<<2)|2,{49,115,0}}, +/* 2613 */ {(10<<2)|2,{49,115,0}}, +/* 2614 */ {(10<<2)|2,{49,115,0}}, +/* 2615 */ {(10<<2)|2,{49,115,0}}, +/* 2616 */ {(10<<2)|2,{49,115,0}}, +/* 2617 */ {(10<<2)|2,{49,115,0}}, +/* 2618 */ {(10<<2)|2,{49,115,0}}, +/* 2619 */ {(10<<2)|2,{49,115,0}}, +/* 2620 */ {(10<<2)|2,{49,115,0}}, +/* 2621 */ {(10<<2)|2,{49,115,0}}, +/* 2622 */ {(10<<2)|2,{49,115,0}}, +/* 2623 */ {(10<<2)|2,{49,115,0}}, +/* 2624 */ {(15<<2)|3,{49,116,48}}, +/* 2625 */ {(15<<2)|3,{49,116,48}}, +/* 2626 */ {(15<<2)|3,{49,116,49}}, +/* 2627 */ {(15<<2)|3,{49,116,49}}, +/* 2628 */ {(15<<2)|3,{49,116,50}}, +/* 2629 */ {(15<<2)|3,{49,116,50}}, +/* 2630 */ {(15<<2)|3,{49,116,97}}, +/* 2631 */ {(15<<2)|3,{49,116,97}}, +/* 2632 */ {(15<<2)|3,{49,116,99}}, +/* 2633 */ {(15<<2)|3,{49,116,99}}, +/* 2634 */ {(15<<2)|3,{49,116,101}}, +/* 2635 */ {(15<<2)|3,{49,116,101}}, +/* 2636 */ {(15<<2)|3,{49,116,105}}, +/* 2637 */ {(15<<2)|3,{49,116,105}}, +/* 2638 */ {(15<<2)|3,{49,116,111}}, +/* 2639 */ {(15<<2)|3,{49,116,111}}, +/* 2640 */ {(15<<2)|3,{49,116,115}}, +/* 2641 */ {(15<<2)|3,{49,116,115}}, +/* 2642 */ {(15<<2)|3,{49,116,116}}, +/* 2643 */ {(15<<2)|3,{49,116,116}}, +/* 2644 */ {(16<<2)|3,{49,116,32}}, +/* 2645 */ {(16<<2)|3,{49,116,37}}, +/* 2646 */ {(16<<2)|3,{49,116,45}}, +/* 2647 */ {(16<<2)|3,{49,116,46}}, +/* 2648 */ {(16<<2)|3,{49,116,47}}, +/* 2649 */ {(16<<2)|3,{49,116,51}}, +/* 2650 */ {(16<<2)|3,{49,116,52}}, +/* 2651 */ {(16<<2)|3,{49,116,53}}, +/* 2652 */ {(16<<2)|3,{49,116,54}}, +/* 2653 */ {(16<<2)|3,{49,116,55}}, +/* 2654 */ {(16<<2)|3,{49,116,56}}, +/* 2655 */ {(16<<2)|3,{49,116,57}}, +/* 2656 */ {(16<<2)|3,{49,116,61}}, +/* 2657 */ {(16<<2)|3,{49,116,65}}, +/* 2658 */ {(16<<2)|3,{49,116,95}}, +/* 2659 */ {(16<<2)|3,{49,116,98}}, +/* 2660 */ {(16<<2)|3,{49,116,100}}, +/* 2661 */ {(16<<2)|3,{49,116,102}}, +/* 2662 */ {(16<<2)|3,{49,116,103}}, +/* 2663 */ {(16<<2)|3,{49,116,104}}, +/* 2664 */ {(16<<2)|3,{49,116,108}}, +/* 2665 */ {(16<<2)|3,{49,116,109}}, +/* 2666 */ {(16<<2)|3,{49,116,110}}, +/* 2667 */ {(16<<2)|3,{49,116,112}}, +/* 2668 */ {(16<<2)|3,{49,116,114}}, +/* 2669 */ {(16<<2)|3,{49,116,117}}, +/* 2670 */ {(10<<2)|2,{49,116,0}}, +/* 2671 */ {(10<<2)|2,{49,116,0}}, +/* 2672 */ {(10<<2)|2,{49,116,0}}, +/* 2673 */ {(10<<2)|2,{49,116,0}}, +/* 2674 */ {(10<<2)|2,{49,116,0}}, +/* 2675 */ {(10<<2)|2,{49,116,0}}, +/* 2676 */ {(10<<2)|2,{49,116,0}}, +/* 2677 */ {(10<<2)|2,{49,116,0}}, +/* 2678 */ {(10<<2)|2,{49,116,0}}, +/* 2679 */ {(10<<2)|2,{49,116,0}}, +/* 2680 */ {(10<<2)|2,{49,116,0}}, +/* 2681 */ {(10<<2)|2,{49,116,0}}, +/* 2682 */ {(10<<2)|2,{49,116,0}}, +/* 2683 */ {(10<<2)|2,{49,116,0}}, +/* 2684 */ {(10<<2)|2,{49,116,0}}, +/* 2685 */ {(10<<2)|2,{49,116,0}}, +/* 2686 */ {(10<<2)|2,{49,116,0}}, +/* 2687 */ {(10<<2)|2,{49,116,0}}, +/* 2688 */ {(16<<2)|3,{49,32,48}}, +/* 2689 */ {(16<<2)|3,{49,32,49}}, +/* 2690 */ {(16<<2)|3,{49,32,50}}, +/* 2691 */ {(16<<2)|3,{49,32,97}}, +/* 2692 */ {(16<<2)|3,{49,32,99}}, +/* 2693 */ {(16<<2)|3,{49,32,101}}, +/* 2694 */ {(16<<2)|3,{49,32,105}}, +/* 2695 */ {(16<<2)|3,{49,32,111}}, +/* 2696 */ {(16<<2)|3,{49,32,115}}, +/* 2697 */ {(16<<2)|3,{49,32,116}}, +/* 2698 */ {(11<<2)|2,{49,32,0}}, +/* 2699 */ {(11<<2)|2,{49,32,0}}, +/* 2700 */ {(11<<2)|2,{49,32,0}}, +/* 2701 */ {(11<<2)|2,{49,32,0}}, +/* 2702 */ {(11<<2)|2,{49,32,0}}, +/* 2703 */ {(11<<2)|2,{49,32,0}}, +/* 2704 */ {(11<<2)|2,{49,32,0}}, +/* 2705 */ {(11<<2)|2,{49,32,0}}, +/* 2706 */ {(11<<2)|2,{49,32,0}}, +/* 2707 */ {(11<<2)|2,{49,32,0}}, +/* 2708 */ {(11<<2)|2,{49,32,0}}, +/* 2709 */ {(11<<2)|2,{49,32,0}}, +/* 2710 */ {(11<<2)|2,{49,32,0}}, +/* 2711 */ {(11<<2)|2,{49,32,0}}, +/* 2712 */ {(11<<2)|2,{49,32,0}}, +/* 2713 */ {(11<<2)|2,{49,32,0}}, +/* 2714 */ {(11<<2)|2,{49,32,0}}, +/* 2715 */ {(11<<2)|2,{49,32,0}}, +/* 2716 */ {(11<<2)|2,{49,32,0}}, +/* 2717 */ {(11<<2)|2,{49,32,0}}, +/* 2718 */ {(11<<2)|2,{49,32,0}}, +/* 2719 */ {(11<<2)|2,{49,32,0}}, +/* 2720 */ {(16<<2)|3,{49,37,48}}, +/* 2721 */ {(16<<2)|3,{49,37,49}}, +/* 2722 */ {(16<<2)|3,{49,37,50}}, +/* 2723 */ {(16<<2)|3,{49,37,97}}, +/* 2724 */ {(16<<2)|3,{49,37,99}}, +/* 2725 */ {(16<<2)|3,{49,37,101}}, +/* 2726 */ {(16<<2)|3,{49,37,105}}, +/* 2727 */ {(16<<2)|3,{49,37,111}}, +/* 2728 */ {(16<<2)|3,{49,37,115}}, +/* 2729 */ {(16<<2)|3,{49,37,116}}, +/* 2730 */ {(11<<2)|2,{49,37,0}}, +/* 2731 */ {(11<<2)|2,{49,37,0}}, +/* 2732 */ {(11<<2)|2,{49,37,0}}, +/* 2733 */ {(11<<2)|2,{49,37,0}}, +/* 2734 */ {(11<<2)|2,{49,37,0}}, +/* 2735 */ {(11<<2)|2,{49,37,0}}, +/* 2736 */ {(11<<2)|2,{49,37,0}}, +/* 2737 */ {(11<<2)|2,{49,37,0}}, +/* 2738 */ {(11<<2)|2,{49,37,0}}, +/* 2739 */ {(11<<2)|2,{49,37,0}}, +/* 2740 */ {(11<<2)|2,{49,37,0}}, +/* 2741 */ {(11<<2)|2,{49,37,0}}, +/* 2742 */ {(11<<2)|2,{49,37,0}}, +/* 2743 */ {(11<<2)|2,{49,37,0}}, +/* 2744 */ {(11<<2)|2,{49,37,0}}, +/* 2745 */ {(11<<2)|2,{49,37,0}}, +/* 2746 */ {(11<<2)|2,{49,37,0}}, +/* 2747 */ {(11<<2)|2,{49,37,0}}, +/* 2748 */ {(11<<2)|2,{49,37,0}}, +/* 2749 */ {(11<<2)|2,{49,37,0}}, +/* 2750 */ {(11<<2)|2,{49,37,0}}, +/* 2751 */ {(11<<2)|2,{49,37,0}}, +/* 2752 */ {(16<<2)|3,{49,45,48}}, +/* 2753 */ {(16<<2)|3,{49,45,49}}, +/* 2754 */ {(16<<2)|3,{49,45,50}}, +/* 2755 */ {(16<<2)|3,{49,45,97}}, +/* 2756 */ {(16<<2)|3,{49,45,99}}, +/* 2757 */ {(16<<2)|3,{49,45,101}}, +/* 2758 */ {(16<<2)|3,{49,45,105}}, +/* 2759 */ {(16<<2)|3,{49,45,111}}, +/* 2760 */ {(16<<2)|3,{49,45,115}}, +/* 2761 */ {(16<<2)|3,{49,45,116}}, +/* 2762 */ {(11<<2)|2,{49,45,0}}, +/* 2763 */ {(11<<2)|2,{49,45,0}}, +/* 2764 */ {(11<<2)|2,{49,45,0}}, +/* 2765 */ {(11<<2)|2,{49,45,0}}, +/* 2766 */ {(11<<2)|2,{49,45,0}}, +/* 2767 */ {(11<<2)|2,{49,45,0}}, +/* 2768 */ {(11<<2)|2,{49,45,0}}, +/* 2769 */ {(11<<2)|2,{49,45,0}}, +/* 2770 */ {(11<<2)|2,{49,45,0}}, +/* 2771 */ {(11<<2)|2,{49,45,0}}, +/* 2772 */ {(11<<2)|2,{49,45,0}}, +/* 2773 */ {(11<<2)|2,{49,45,0}}, +/* 2774 */ {(11<<2)|2,{49,45,0}}, +/* 2775 */ {(11<<2)|2,{49,45,0}}, +/* 2776 */ {(11<<2)|2,{49,45,0}}, +/* 2777 */ {(11<<2)|2,{49,45,0}}, +/* 2778 */ {(11<<2)|2,{49,45,0}}, +/* 2779 */ {(11<<2)|2,{49,45,0}}, +/* 2780 */ {(11<<2)|2,{49,45,0}}, +/* 2781 */ {(11<<2)|2,{49,45,0}}, +/* 2782 */ {(11<<2)|2,{49,45,0}}, +/* 2783 */ {(11<<2)|2,{49,45,0}}, +/* 2784 */ {(16<<2)|3,{49,46,48}}, +/* 2785 */ {(16<<2)|3,{49,46,49}}, +/* 2786 */ {(16<<2)|3,{49,46,50}}, +/* 2787 */ {(16<<2)|3,{49,46,97}}, +/* 2788 */ {(16<<2)|3,{49,46,99}}, +/* 2789 */ {(16<<2)|3,{49,46,101}}, +/* 2790 */ {(16<<2)|3,{49,46,105}}, +/* 2791 */ {(16<<2)|3,{49,46,111}}, +/* 2792 */ {(16<<2)|3,{49,46,115}}, +/* 2793 */ {(16<<2)|3,{49,46,116}}, +/* 2794 */ {(11<<2)|2,{49,46,0}}, +/* 2795 */ {(11<<2)|2,{49,46,0}}, +/* 2796 */ {(11<<2)|2,{49,46,0}}, +/* 2797 */ {(11<<2)|2,{49,46,0}}, +/* 2798 */ {(11<<2)|2,{49,46,0}}, +/* 2799 */ {(11<<2)|2,{49,46,0}}, +/* 2800 */ {(11<<2)|2,{49,46,0}}, +/* 2801 */ {(11<<2)|2,{49,46,0}}, +/* 2802 */ {(11<<2)|2,{49,46,0}}, +/* 2803 */ {(11<<2)|2,{49,46,0}}, +/* 2804 */ {(11<<2)|2,{49,46,0}}, +/* 2805 */ {(11<<2)|2,{49,46,0}}, +/* 2806 */ {(11<<2)|2,{49,46,0}}, +/* 2807 */ {(11<<2)|2,{49,46,0}}, +/* 2808 */ {(11<<2)|2,{49,46,0}}, +/* 2809 */ {(11<<2)|2,{49,46,0}}, +/* 2810 */ {(11<<2)|2,{49,46,0}}, +/* 2811 */ {(11<<2)|2,{49,46,0}}, +/* 2812 */ {(11<<2)|2,{49,46,0}}, +/* 2813 */ {(11<<2)|2,{49,46,0}}, +/* 2814 */ {(11<<2)|2,{49,46,0}}, +/* 2815 */ {(11<<2)|2,{49,46,0}}, +/* 2816 */ {(16<<2)|3,{49,47,48}}, +/* 2817 */ {(16<<2)|3,{49,47,49}}, +/* 2818 */ {(16<<2)|3,{49,47,50}}, +/* 2819 */ {(16<<2)|3,{49,47,97}}, +/* 2820 */ {(16<<2)|3,{49,47,99}}, +/* 2821 */ {(16<<2)|3,{49,47,101}}, +/* 2822 */ {(16<<2)|3,{49,47,105}}, +/* 2823 */ {(16<<2)|3,{49,47,111}}, +/* 2824 */ {(16<<2)|3,{49,47,115}}, +/* 2825 */ {(16<<2)|3,{49,47,116}}, +/* 2826 */ {(11<<2)|2,{49,47,0}}, +/* 2827 */ {(11<<2)|2,{49,47,0}}, +/* 2828 */ {(11<<2)|2,{49,47,0}}, +/* 2829 */ {(11<<2)|2,{49,47,0}}, +/* 2830 */ {(11<<2)|2,{49,47,0}}, +/* 2831 */ {(11<<2)|2,{49,47,0}}, +/* 2832 */ {(11<<2)|2,{49,47,0}}, +/* 2833 */ {(11<<2)|2,{49,47,0}}, +/* 2834 */ {(11<<2)|2,{49,47,0}}, +/* 2835 */ {(11<<2)|2,{49,47,0}}, +/* 2836 */ {(11<<2)|2,{49,47,0}}, +/* 2837 */ {(11<<2)|2,{49,47,0}}, +/* 2838 */ {(11<<2)|2,{49,47,0}}, +/* 2839 */ {(11<<2)|2,{49,47,0}}, +/* 2840 */ {(11<<2)|2,{49,47,0}}, +/* 2841 */ {(11<<2)|2,{49,47,0}}, +/* 2842 */ {(11<<2)|2,{49,47,0}}, +/* 2843 */ {(11<<2)|2,{49,47,0}}, +/* 2844 */ {(11<<2)|2,{49,47,0}}, +/* 2845 */ {(11<<2)|2,{49,47,0}}, +/* 2846 */ {(11<<2)|2,{49,47,0}}, +/* 2847 */ {(11<<2)|2,{49,47,0}}, +/* 2848 */ {(16<<2)|3,{49,51,48}}, +/* 2849 */ {(16<<2)|3,{49,51,49}}, +/* 2850 */ {(16<<2)|3,{49,51,50}}, +/* 2851 */ {(16<<2)|3,{49,51,97}}, +/* 2852 */ {(16<<2)|3,{49,51,99}}, +/* 2853 */ {(16<<2)|3,{49,51,101}}, +/* 2854 */ {(16<<2)|3,{49,51,105}}, +/* 2855 */ {(16<<2)|3,{49,51,111}}, +/* 2856 */ {(16<<2)|3,{49,51,115}}, +/* 2857 */ {(16<<2)|3,{49,51,116}}, +/* 2858 */ {(11<<2)|2,{49,51,0}}, +/* 2859 */ {(11<<2)|2,{49,51,0}}, +/* 2860 */ {(11<<2)|2,{49,51,0}}, +/* 2861 */ {(11<<2)|2,{49,51,0}}, +/* 2862 */ {(11<<2)|2,{49,51,0}}, +/* 2863 */ {(11<<2)|2,{49,51,0}}, +/* 2864 */ {(11<<2)|2,{49,51,0}}, +/* 2865 */ {(11<<2)|2,{49,51,0}}, +/* 2866 */ {(11<<2)|2,{49,51,0}}, +/* 2867 */ {(11<<2)|2,{49,51,0}}, +/* 2868 */ {(11<<2)|2,{49,51,0}}, +/* 2869 */ {(11<<2)|2,{49,51,0}}, +/* 2870 */ {(11<<2)|2,{49,51,0}}, +/* 2871 */ {(11<<2)|2,{49,51,0}}, +/* 2872 */ {(11<<2)|2,{49,51,0}}, +/* 2873 */ {(11<<2)|2,{49,51,0}}, +/* 2874 */ {(11<<2)|2,{49,51,0}}, +/* 2875 */ {(11<<2)|2,{49,51,0}}, +/* 2876 */ {(11<<2)|2,{49,51,0}}, +/* 2877 */ {(11<<2)|2,{49,51,0}}, +/* 2878 */ {(11<<2)|2,{49,51,0}}, +/* 2879 */ {(11<<2)|2,{49,51,0}}, +/* 2880 */ {(16<<2)|3,{49,52,48}}, +/* 2881 */ {(16<<2)|3,{49,52,49}}, +/* 2882 */ {(16<<2)|3,{49,52,50}}, +/* 2883 */ {(16<<2)|3,{49,52,97}}, +/* 2884 */ {(16<<2)|3,{49,52,99}}, +/* 2885 */ {(16<<2)|3,{49,52,101}}, +/* 2886 */ {(16<<2)|3,{49,52,105}}, +/* 2887 */ {(16<<2)|3,{49,52,111}}, +/* 2888 */ {(16<<2)|3,{49,52,115}}, +/* 2889 */ {(16<<2)|3,{49,52,116}}, +/* 2890 */ {(11<<2)|2,{49,52,0}}, +/* 2891 */ {(11<<2)|2,{49,52,0}}, +/* 2892 */ {(11<<2)|2,{49,52,0}}, +/* 2893 */ {(11<<2)|2,{49,52,0}}, +/* 2894 */ {(11<<2)|2,{49,52,0}}, +/* 2895 */ {(11<<2)|2,{49,52,0}}, +/* 2896 */ {(11<<2)|2,{49,52,0}}, +/* 2897 */ {(11<<2)|2,{49,52,0}}, +/* 2898 */ {(11<<2)|2,{49,52,0}}, +/* 2899 */ {(11<<2)|2,{49,52,0}}, +/* 2900 */ {(11<<2)|2,{49,52,0}}, +/* 2901 */ {(11<<2)|2,{49,52,0}}, +/* 2902 */ {(11<<2)|2,{49,52,0}}, +/* 2903 */ {(11<<2)|2,{49,52,0}}, +/* 2904 */ {(11<<2)|2,{49,52,0}}, +/* 2905 */ {(11<<2)|2,{49,52,0}}, +/* 2906 */ {(11<<2)|2,{49,52,0}}, +/* 2907 */ {(11<<2)|2,{49,52,0}}, +/* 2908 */ {(11<<2)|2,{49,52,0}}, +/* 2909 */ {(11<<2)|2,{49,52,0}}, +/* 2910 */ {(11<<2)|2,{49,52,0}}, +/* 2911 */ {(11<<2)|2,{49,52,0}}, +/* 2912 */ {(16<<2)|3,{49,53,48}}, +/* 2913 */ {(16<<2)|3,{49,53,49}}, +/* 2914 */ {(16<<2)|3,{49,53,50}}, +/* 2915 */ {(16<<2)|3,{49,53,97}}, +/* 2916 */ {(16<<2)|3,{49,53,99}}, +/* 2917 */ {(16<<2)|3,{49,53,101}}, +/* 2918 */ {(16<<2)|3,{49,53,105}}, +/* 2919 */ {(16<<2)|3,{49,53,111}}, +/* 2920 */ {(16<<2)|3,{49,53,115}}, +/* 2921 */ {(16<<2)|3,{49,53,116}}, +/* 2922 */ {(11<<2)|2,{49,53,0}}, +/* 2923 */ {(11<<2)|2,{49,53,0}}, +/* 2924 */ {(11<<2)|2,{49,53,0}}, +/* 2925 */ {(11<<2)|2,{49,53,0}}, +/* 2926 */ {(11<<2)|2,{49,53,0}}, +/* 2927 */ {(11<<2)|2,{49,53,0}}, +/* 2928 */ {(11<<2)|2,{49,53,0}}, +/* 2929 */ {(11<<2)|2,{49,53,0}}, +/* 2930 */ {(11<<2)|2,{49,53,0}}, +/* 2931 */ {(11<<2)|2,{49,53,0}}, +/* 2932 */ {(11<<2)|2,{49,53,0}}, +/* 2933 */ {(11<<2)|2,{49,53,0}}, +/* 2934 */ {(11<<2)|2,{49,53,0}}, +/* 2935 */ {(11<<2)|2,{49,53,0}}, +/* 2936 */ {(11<<2)|2,{49,53,0}}, +/* 2937 */ {(11<<2)|2,{49,53,0}}, +/* 2938 */ {(11<<2)|2,{49,53,0}}, +/* 2939 */ {(11<<2)|2,{49,53,0}}, +/* 2940 */ {(11<<2)|2,{49,53,0}}, +/* 2941 */ {(11<<2)|2,{49,53,0}}, +/* 2942 */ {(11<<2)|2,{49,53,0}}, +/* 2943 */ {(11<<2)|2,{49,53,0}}, +/* 2944 */ {(16<<2)|3,{49,54,48}}, +/* 2945 */ {(16<<2)|3,{49,54,49}}, +/* 2946 */ {(16<<2)|3,{49,54,50}}, +/* 2947 */ {(16<<2)|3,{49,54,97}}, +/* 2948 */ {(16<<2)|3,{49,54,99}}, +/* 2949 */ {(16<<2)|3,{49,54,101}}, +/* 2950 */ {(16<<2)|3,{49,54,105}}, +/* 2951 */ {(16<<2)|3,{49,54,111}}, +/* 2952 */ {(16<<2)|3,{49,54,115}}, +/* 2953 */ {(16<<2)|3,{49,54,116}}, +/* 2954 */ {(11<<2)|2,{49,54,0}}, +/* 2955 */ {(11<<2)|2,{49,54,0}}, +/* 2956 */ {(11<<2)|2,{49,54,0}}, +/* 2957 */ {(11<<2)|2,{49,54,0}}, +/* 2958 */ {(11<<2)|2,{49,54,0}}, +/* 2959 */ {(11<<2)|2,{49,54,0}}, +/* 2960 */ {(11<<2)|2,{49,54,0}}, +/* 2961 */ {(11<<2)|2,{49,54,0}}, +/* 2962 */ {(11<<2)|2,{49,54,0}}, +/* 2963 */ {(11<<2)|2,{49,54,0}}, +/* 2964 */ {(11<<2)|2,{49,54,0}}, +/* 2965 */ {(11<<2)|2,{49,54,0}}, +/* 2966 */ {(11<<2)|2,{49,54,0}}, +/* 2967 */ {(11<<2)|2,{49,54,0}}, +/* 2968 */ {(11<<2)|2,{49,54,0}}, +/* 2969 */ {(11<<2)|2,{49,54,0}}, +/* 2970 */ {(11<<2)|2,{49,54,0}}, +/* 2971 */ {(11<<2)|2,{49,54,0}}, +/* 2972 */ {(11<<2)|2,{49,54,0}}, +/* 2973 */ {(11<<2)|2,{49,54,0}}, +/* 2974 */ {(11<<2)|2,{49,54,0}}, +/* 2975 */ {(11<<2)|2,{49,54,0}}, +/* 2976 */ {(16<<2)|3,{49,55,48}}, +/* 2977 */ {(16<<2)|3,{49,55,49}}, +/* 2978 */ {(16<<2)|3,{49,55,50}}, +/* 2979 */ {(16<<2)|3,{49,55,97}}, +/* 2980 */ {(16<<2)|3,{49,55,99}}, +/* 2981 */ {(16<<2)|3,{49,55,101}}, +/* 2982 */ {(16<<2)|3,{49,55,105}}, +/* 2983 */ {(16<<2)|3,{49,55,111}}, +/* 2984 */ {(16<<2)|3,{49,55,115}}, +/* 2985 */ {(16<<2)|3,{49,55,116}}, +/* 2986 */ {(11<<2)|2,{49,55,0}}, +/* 2987 */ {(11<<2)|2,{49,55,0}}, +/* 2988 */ {(11<<2)|2,{49,55,0}}, +/* 2989 */ {(11<<2)|2,{49,55,0}}, +/* 2990 */ {(11<<2)|2,{49,55,0}}, +/* 2991 */ {(11<<2)|2,{49,55,0}}, +/* 2992 */ {(11<<2)|2,{49,55,0}}, +/* 2993 */ {(11<<2)|2,{49,55,0}}, +/* 2994 */ {(11<<2)|2,{49,55,0}}, +/* 2995 */ {(11<<2)|2,{49,55,0}}, +/* 2996 */ {(11<<2)|2,{49,55,0}}, +/* 2997 */ {(11<<2)|2,{49,55,0}}, +/* 2998 */ {(11<<2)|2,{49,55,0}}, +/* 2999 */ {(11<<2)|2,{49,55,0}}, +/* 3000 */ {(11<<2)|2,{49,55,0}}, +/* 3001 */ {(11<<2)|2,{49,55,0}}, +/* 3002 */ {(11<<2)|2,{49,55,0}}, +/* 3003 */ {(11<<2)|2,{49,55,0}}, +/* 3004 */ {(11<<2)|2,{49,55,0}}, +/* 3005 */ {(11<<2)|2,{49,55,0}}, +/* 3006 */ {(11<<2)|2,{49,55,0}}, +/* 3007 */ {(11<<2)|2,{49,55,0}}, +/* 3008 */ {(16<<2)|3,{49,56,48}}, +/* 3009 */ {(16<<2)|3,{49,56,49}}, +/* 3010 */ {(16<<2)|3,{49,56,50}}, +/* 3011 */ {(16<<2)|3,{49,56,97}}, +/* 3012 */ {(16<<2)|3,{49,56,99}}, +/* 3013 */ {(16<<2)|3,{49,56,101}}, +/* 3014 */ {(16<<2)|3,{49,56,105}}, +/* 3015 */ {(16<<2)|3,{49,56,111}}, +/* 3016 */ {(16<<2)|3,{49,56,115}}, +/* 3017 */ {(16<<2)|3,{49,56,116}}, +/* 3018 */ {(11<<2)|2,{49,56,0}}, +/* 3019 */ {(11<<2)|2,{49,56,0}}, +/* 3020 */ {(11<<2)|2,{49,56,0}}, +/* 3021 */ {(11<<2)|2,{49,56,0}}, +/* 3022 */ {(11<<2)|2,{49,56,0}}, +/* 3023 */ {(11<<2)|2,{49,56,0}}, +/* 3024 */ {(11<<2)|2,{49,56,0}}, +/* 3025 */ {(11<<2)|2,{49,56,0}}, +/* 3026 */ {(11<<2)|2,{49,56,0}}, +/* 3027 */ {(11<<2)|2,{49,56,0}}, +/* 3028 */ {(11<<2)|2,{49,56,0}}, +/* 3029 */ {(11<<2)|2,{49,56,0}}, +/* 3030 */ {(11<<2)|2,{49,56,0}}, +/* 3031 */ {(11<<2)|2,{49,56,0}}, +/* 3032 */ {(11<<2)|2,{49,56,0}}, +/* 3033 */ {(11<<2)|2,{49,56,0}}, +/* 3034 */ {(11<<2)|2,{49,56,0}}, +/* 3035 */ {(11<<2)|2,{49,56,0}}, +/* 3036 */ {(11<<2)|2,{49,56,0}}, +/* 3037 */ {(11<<2)|2,{49,56,0}}, +/* 3038 */ {(11<<2)|2,{49,56,0}}, +/* 3039 */ {(11<<2)|2,{49,56,0}}, +/* 3040 */ {(16<<2)|3,{49,57,48}}, +/* 3041 */ {(16<<2)|3,{49,57,49}}, +/* 3042 */ {(16<<2)|3,{49,57,50}}, +/* 3043 */ {(16<<2)|3,{49,57,97}}, +/* 3044 */ {(16<<2)|3,{49,57,99}}, +/* 3045 */ {(16<<2)|3,{49,57,101}}, +/* 3046 */ {(16<<2)|3,{49,57,105}}, +/* 3047 */ {(16<<2)|3,{49,57,111}}, +/* 3048 */ {(16<<2)|3,{49,57,115}}, +/* 3049 */ {(16<<2)|3,{49,57,116}}, +/* 3050 */ {(11<<2)|2,{49,57,0}}, +/* 3051 */ {(11<<2)|2,{49,57,0}}, +/* 3052 */ {(11<<2)|2,{49,57,0}}, +/* 3053 */ {(11<<2)|2,{49,57,0}}, +/* 3054 */ {(11<<2)|2,{49,57,0}}, +/* 3055 */ {(11<<2)|2,{49,57,0}}, +/* 3056 */ {(11<<2)|2,{49,57,0}}, +/* 3057 */ {(11<<2)|2,{49,57,0}}, +/* 3058 */ {(11<<2)|2,{49,57,0}}, +/* 3059 */ {(11<<2)|2,{49,57,0}}, +/* 3060 */ {(11<<2)|2,{49,57,0}}, +/* 3061 */ {(11<<2)|2,{49,57,0}}, +/* 3062 */ {(11<<2)|2,{49,57,0}}, +/* 3063 */ {(11<<2)|2,{49,57,0}}, +/* 3064 */ {(11<<2)|2,{49,57,0}}, +/* 3065 */ {(11<<2)|2,{49,57,0}}, +/* 3066 */ {(11<<2)|2,{49,57,0}}, +/* 3067 */ {(11<<2)|2,{49,57,0}}, +/* 3068 */ {(11<<2)|2,{49,57,0}}, +/* 3069 */ {(11<<2)|2,{49,57,0}}, +/* 3070 */ {(11<<2)|2,{49,57,0}}, +/* 3071 */ {(11<<2)|2,{49,57,0}}, +/* 3072 */ {(16<<2)|3,{49,61,48}}, +/* 3073 */ {(16<<2)|3,{49,61,49}}, +/* 3074 */ {(16<<2)|3,{49,61,50}}, +/* 3075 */ {(16<<2)|3,{49,61,97}}, +/* 3076 */ {(16<<2)|3,{49,61,99}}, +/* 3077 */ {(16<<2)|3,{49,61,101}}, +/* 3078 */ {(16<<2)|3,{49,61,105}}, +/* 3079 */ {(16<<2)|3,{49,61,111}}, +/* 3080 */ {(16<<2)|3,{49,61,115}}, +/* 3081 */ {(16<<2)|3,{49,61,116}}, +/* 3082 */ {(11<<2)|2,{49,61,0}}, +/* 3083 */ {(11<<2)|2,{49,61,0}}, +/* 3084 */ {(11<<2)|2,{49,61,0}}, +/* 3085 */ {(11<<2)|2,{49,61,0}}, +/* 3086 */ {(11<<2)|2,{49,61,0}}, +/* 3087 */ {(11<<2)|2,{49,61,0}}, +/* 3088 */ {(11<<2)|2,{49,61,0}}, +/* 3089 */ {(11<<2)|2,{49,61,0}}, +/* 3090 */ {(11<<2)|2,{49,61,0}}, +/* 3091 */ {(11<<2)|2,{49,61,0}}, +/* 3092 */ {(11<<2)|2,{49,61,0}}, +/* 3093 */ {(11<<2)|2,{49,61,0}}, +/* 3094 */ {(11<<2)|2,{49,61,0}}, +/* 3095 */ {(11<<2)|2,{49,61,0}}, +/* 3096 */ {(11<<2)|2,{49,61,0}}, +/* 3097 */ {(11<<2)|2,{49,61,0}}, +/* 3098 */ {(11<<2)|2,{49,61,0}}, +/* 3099 */ {(11<<2)|2,{49,61,0}}, +/* 3100 */ {(11<<2)|2,{49,61,0}}, +/* 3101 */ {(11<<2)|2,{49,61,0}}, +/* 3102 */ {(11<<2)|2,{49,61,0}}, +/* 3103 */ {(11<<2)|2,{49,61,0}}, +/* 3104 */ {(16<<2)|3,{49,65,48}}, +/* 3105 */ {(16<<2)|3,{49,65,49}}, +/* 3106 */ {(16<<2)|3,{49,65,50}}, +/* 3107 */ {(16<<2)|3,{49,65,97}}, +/* 3108 */ {(16<<2)|3,{49,65,99}}, +/* 3109 */ {(16<<2)|3,{49,65,101}}, +/* 3110 */ {(16<<2)|3,{49,65,105}}, +/* 3111 */ {(16<<2)|3,{49,65,111}}, +/* 3112 */ {(16<<2)|3,{49,65,115}}, +/* 3113 */ {(16<<2)|3,{49,65,116}}, +/* 3114 */ {(11<<2)|2,{49,65,0}}, +/* 3115 */ {(11<<2)|2,{49,65,0}}, +/* 3116 */ {(11<<2)|2,{49,65,0}}, +/* 3117 */ {(11<<2)|2,{49,65,0}}, +/* 3118 */ {(11<<2)|2,{49,65,0}}, +/* 3119 */ {(11<<2)|2,{49,65,0}}, +/* 3120 */ {(11<<2)|2,{49,65,0}}, +/* 3121 */ {(11<<2)|2,{49,65,0}}, +/* 3122 */ {(11<<2)|2,{49,65,0}}, +/* 3123 */ {(11<<2)|2,{49,65,0}}, +/* 3124 */ {(11<<2)|2,{49,65,0}}, +/* 3125 */ {(11<<2)|2,{49,65,0}}, +/* 3126 */ {(11<<2)|2,{49,65,0}}, +/* 3127 */ {(11<<2)|2,{49,65,0}}, +/* 3128 */ {(11<<2)|2,{49,65,0}}, +/* 3129 */ {(11<<2)|2,{49,65,0}}, +/* 3130 */ {(11<<2)|2,{49,65,0}}, +/* 3131 */ {(11<<2)|2,{49,65,0}}, +/* 3132 */ {(11<<2)|2,{49,65,0}}, +/* 3133 */ {(11<<2)|2,{49,65,0}}, +/* 3134 */ {(11<<2)|2,{49,65,0}}, +/* 3135 */ {(11<<2)|2,{49,65,0}}, +/* 3136 */ {(16<<2)|3,{49,95,48}}, +/* 3137 */ {(16<<2)|3,{49,95,49}}, +/* 3138 */ {(16<<2)|3,{49,95,50}}, +/* 3139 */ {(16<<2)|3,{49,95,97}}, +/* 3140 */ {(16<<2)|3,{49,95,99}}, +/* 3141 */ {(16<<2)|3,{49,95,101}}, +/* 3142 */ {(16<<2)|3,{49,95,105}}, +/* 3143 */ {(16<<2)|3,{49,95,111}}, +/* 3144 */ {(16<<2)|3,{49,95,115}}, +/* 3145 */ {(16<<2)|3,{49,95,116}}, +/* 3146 */ {(11<<2)|2,{49,95,0}}, +/* 3147 */ {(11<<2)|2,{49,95,0}}, +/* 3148 */ {(11<<2)|2,{49,95,0}}, +/* 3149 */ {(11<<2)|2,{49,95,0}}, +/* 3150 */ {(11<<2)|2,{49,95,0}}, +/* 3151 */ {(11<<2)|2,{49,95,0}}, +/* 3152 */ {(11<<2)|2,{49,95,0}}, +/* 3153 */ {(11<<2)|2,{49,95,0}}, +/* 3154 */ {(11<<2)|2,{49,95,0}}, +/* 3155 */ {(11<<2)|2,{49,95,0}}, +/* 3156 */ {(11<<2)|2,{49,95,0}}, +/* 3157 */ {(11<<2)|2,{49,95,0}}, +/* 3158 */ {(11<<2)|2,{49,95,0}}, +/* 3159 */ {(11<<2)|2,{49,95,0}}, +/* 3160 */ {(11<<2)|2,{49,95,0}}, +/* 3161 */ {(11<<2)|2,{49,95,0}}, +/* 3162 */ {(11<<2)|2,{49,95,0}}, +/* 3163 */ {(11<<2)|2,{49,95,0}}, +/* 3164 */ {(11<<2)|2,{49,95,0}}, +/* 3165 */ {(11<<2)|2,{49,95,0}}, +/* 3166 */ {(11<<2)|2,{49,95,0}}, +/* 3167 */ {(11<<2)|2,{49,95,0}}, +/* 3168 */ {(16<<2)|3,{49,98,48}}, +/* 3169 */ {(16<<2)|3,{49,98,49}}, +/* 3170 */ {(16<<2)|3,{49,98,50}}, +/* 3171 */ {(16<<2)|3,{49,98,97}}, +/* 3172 */ {(16<<2)|3,{49,98,99}}, +/* 3173 */ {(16<<2)|3,{49,98,101}}, +/* 3174 */ {(16<<2)|3,{49,98,105}}, +/* 3175 */ {(16<<2)|3,{49,98,111}}, +/* 3176 */ {(16<<2)|3,{49,98,115}}, +/* 3177 */ {(16<<2)|3,{49,98,116}}, +/* 3178 */ {(11<<2)|2,{49,98,0}}, +/* 3179 */ {(11<<2)|2,{49,98,0}}, +/* 3180 */ {(11<<2)|2,{49,98,0}}, +/* 3181 */ {(11<<2)|2,{49,98,0}}, +/* 3182 */ {(11<<2)|2,{49,98,0}}, +/* 3183 */ {(11<<2)|2,{49,98,0}}, +/* 3184 */ {(11<<2)|2,{49,98,0}}, +/* 3185 */ {(11<<2)|2,{49,98,0}}, +/* 3186 */ {(11<<2)|2,{49,98,0}}, +/* 3187 */ {(11<<2)|2,{49,98,0}}, +/* 3188 */ {(11<<2)|2,{49,98,0}}, +/* 3189 */ {(11<<2)|2,{49,98,0}}, +/* 3190 */ {(11<<2)|2,{49,98,0}}, +/* 3191 */ {(11<<2)|2,{49,98,0}}, +/* 3192 */ {(11<<2)|2,{49,98,0}}, +/* 3193 */ {(11<<2)|2,{49,98,0}}, +/* 3194 */ {(11<<2)|2,{49,98,0}}, +/* 3195 */ {(11<<2)|2,{49,98,0}}, +/* 3196 */ {(11<<2)|2,{49,98,0}}, +/* 3197 */ {(11<<2)|2,{49,98,0}}, +/* 3198 */ {(11<<2)|2,{49,98,0}}, +/* 3199 */ {(11<<2)|2,{49,98,0}}, +/* 3200 */ {(16<<2)|3,{49,100,48}}, +/* 3201 */ {(16<<2)|3,{49,100,49}}, +/* 3202 */ {(16<<2)|3,{49,100,50}}, +/* 3203 */ {(16<<2)|3,{49,100,97}}, +/* 3204 */ {(16<<2)|3,{49,100,99}}, +/* 3205 */ {(16<<2)|3,{49,100,101}}, +/* 3206 */ {(16<<2)|3,{49,100,105}}, +/* 3207 */ {(16<<2)|3,{49,100,111}}, +/* 3208 */ {(16<<2)|3,{49,100,115}}, +/* 3209 */ {(16<<2)|3,{49,100,116}}, +/* 3210 */ {(11<<2)|2,{49,100,0}}, +/* 3211 */ {(11<<2)|2,{49,100,0}}, +/* 3212 */ {(11<<2)|2,{49,100,0}}, +/* 3213 */ {(11<<2)|2,{49,100,0}}, +/* 3214 */ {(11<<2)|2,{49,100,0}}, +/* 3215 */ {(11<<2)|2,{49,100,0}}, +/* 3216 */ {(11<<2)|2,{49,100,0}}, +/* 3217 */ {(11<<2)|2,{49,100,0}}, +/* 3218 */ {(11<<2)|2,{49,100,0}}, +/* 3219 */ {(11<<2)|2,{49,100,0}}, +/* 3220 */ {(11<<2)|2,{49,100,0}}, +/* 3221 */ {(11<<2)|2,{49,100,0}}, +/* 3222 */ {(11<<2)|2,{49,100,0}}, +/* 3223 */ {(11<<2)|2,{49,100,0}}, +/* 3224 */ {(11<<2)|2,{49,100,0}}, +/* 3225 */ {(11<<2)|2,{49,100,0}}, +/* 3226 */ {(11<<2)|2,{49,100,0}}, +/* 3227 */ {(11<<2)|2,{49,100,0}}, +/* 3228 */ {(11<<2)|2,{49,100,0}}, +/* 3229 */ {(11<<2)|2,{49,100,0}}, +/* 3230 */ {(11<<2)|2,{49,100,0}}, +/* 3231 */ {(11<<2)|2,{49,100,0}}, +/* 3232 */ {(16<<2)|3,{49,102,48}}, +/* 3233 */ {(16<<2)|3,{49,102,49}}, +/* 3234 */ {(16<<2)|3,{49,102,50}}, +/* 3235 */ {(16<<2)|3,{49,102,97}}, +/* 3236 */ {(16<<2)|3,{49,102,99}}, +/* 3237 */ {(16<<2)|3,{49,102,101}}, +/* 3238 */ {(16<<2)|3,{49,102,105}}, +/* 3239 */ {(16<<2)|3,{49,102,111}}, +/* 3240 */ {(16<<2)|3,{49,102,115}}, +/* 3241 */ {(16<<2)|3,{49,102,116}}, +/* 3242 */ {(11<<2)|2,{49,102,0}}, +/* 3243 */ {(11<<2)|2,{49,102,0}}, +/* 3244 */ {(11<<2)|2,{49,102,0}}, +/* 3245 */ {(11<<2)|2,{49,102,0}}, +/* 3246 */ {(11<<2)|2,{49,102,0}}, +/* 3247 */ {(11<<2)|2,{49,102,0}}, +/* 3248 */ {(11<<2)|2,{49,102,0}}, +/* 3249 */ {(11<<2)|2,{49,102,0}}, +/* 3250 */ {(11<<2)|2,{49,102,0}}, +/* 3251 */ {(11<<2)|2,{49,102,0}}, +/* 3252 */ {(11<<2)|2,{49,102,0}}, +/* 3253 */ {(11<<2)|2,{49,102,0}}, +/* 3254 */ {(11<<2)|2,{49,102,0}}, +/* 3255 */ {(11<<2)|2,{49,102,0}}, +/* 3256 */ {(11<<2)|2,{49,102,0}}, +/* 3257 */ {(11<<2)|2,{49,102,0}}, +/* 3258 */ {(11<<2)|2,{49,102,0}}, +/* 3259 */ {(11<<2)|2,{49,102,0}}, +/* 3260 */ {(11<<2)|2,{49,102,0}}, +/* 3261 */ {(11<<2)|2,{49,102,0}}, +/* 3262 */ {(11<<2)|2,{49,102,0}}, +/* 3263 */ {(11<<2)|2,{49,102,0}}, +/* 3264 */ {(16<<2)|3,{49,103,48}}, +/* 3265 */ {(16<<2)|3,{49,103,49}}, +/* 3266 */ {(16<<2)|3,{49,103,50}}, +/* 3267 */ {(16<<2)|3,{49,103,97}}, +/* 3268 */ {(16<<2)|3,{49,103,99}}, +/* 3269 */ {(16<<2)|3,{49,103,101}}, +/* 3270 */ {(16<<2)|3,{49,103,105}}, +/* 3271 */ {(16<<2)|3,{49,103,111}}, +/* 3272 */ {(16<<2)|3,{49,103,115}}, +/* 3273 */ {(16<<2)|3,{49,103,116}}, +/* 3274 */ {(11<<2)|2,{49,103,0}}, +/* 3275 */ {(11<<2)|2,{49,103,0}}, +/* 3276 */ {(11<<2)|2,{49,103,0}}, +/* 3277 */ {(11<<2)|2,{49,103,0}}, +/* 3278 */ {(11<<2)|2,{49,103,0}}, +/* 3279 */ {(11<<2)|2,{49,103,0}}, +/* 3280 */ {(11<<2)|2,{49,103,0}}, +/* 3281 */ {(11<<2)|2,{49,103,0}}, +/* 3282 */ {(11<<2)|2,{49,103,0}}, +/* 3283 */ {(11<<2)|2,{49,103,0}}, +/* 3284 */ {(11<<2)|2,{49,103,0}}, +/* 3285 */ {(11<<2)|2,{49,103,0}}, +/* 3286 */ {(11<<2)|2,{49,103,0}}, +/* 3287 */ {(11<<2)|2,{49,103,0}}, +/* 3288 */ {(11<<2)|2,{49,103,0}}, +/* 3289 */ {(11<<2)|2,{49,103,0}}, +/* 3290 */ {(11<<2)|2,{49,103,0}}, +/* 3291 */ {(11<<2)|2,{49,103,0}}, +/* 3292 */ {(11<<2)|2,{49,103,0}}, +/* 3293 */ {(11<<2)|2,{49,103,0}}, +/* 3294 */ {(11<<2)|2,{49,103,0}}, +/* 3295 */ {(11<<2)|2,{49,103,0}}, +/* 3296 */ {(16<<2)|3,{49,104,48}}, +/* 3297 */ {(16<<2)|3,{49,104,49}}, +/* 3298 */ {(16<<2)|3,{49,104,50}}, +/* 3299 */ {(16<<2)|3,{49,104,97}}, +/* 3300 */ {(16<<2)|3,{49,104,99}}, +/* 3301 */ {(16<<2)|3,{49,104,101}}, +/* 3302 */ {(16<<2)|3,{49,104,105}}, +/* 3303 */ {(16<<2)|3,{49,104,111}}, +/* 3304 */ {(16<<2)|3,{49,104,115}}, +/* 3305 */ {(16<<2)|3,{49,104,116}}, +/* 3306 */ {(11<<2)|2,{49,104,0}}, +/* 3307 */ {(11<<2)|2,{49,104,0}}, +/* 3308 */ {(11<<2)|2,{49,104,0}}, +/* 3309 */ {(11<<2)|2,{49,104,0}}, +/* 3310 */ {(11<<2)|2,{49,104,0}}, +/* 3311 */ {(11<<2)|2,{49,104,0}}, +/* 3312 */ {(11<<2)|2,{49,104,0}}, +/* 3313 */ {(11<<2)|2,{49,104,0}}, +/* 3314 */ {(11<<2)|2,{49,104,0}}, +/* 3315 */ {(11<<2)|2,{49,104,0}}, +/* 3316 */ {(11<<2)|2,{49,104,0}}, +/* 3317 */ {(11<<2)|2,{49,104,0}}, +/* 3318 */ {(11<<2)|2,{49,104,0}}, +/* 3319 */ {(11<<2)|2,{49,104,0}}, +/* 3320 */ {(11<<2)|2,{49,104,0}}, +/* 3321 */ {(11<<2)|2,{49,104,0}}, +/* 3322 */ {(11<<2)|2,{49,104,0}}, +/* 3323 */ {(11<<2)|2,{49,104,0}}, +/* 3324 */ {(11<<2)|2,{49,104,0}}, +/* 3325 */ {(11<<2)|2,{49,104,0}}, +/* 3326 */ {(11<<2)|2,{49,104,0}}, +/* 3327 */ {(11<<2)|2,{49,104,0}}, +/* 3328 */ {(16<<2)|3,{49,108,48}}, +/* 3329 */ {(16<<2)|3,{49,108,49}}, +/* 3330 */ {(16<<2)|3,{49,108,50}}, +/* 3331 */ {(16<<2)|3,{49,108,97}}, +/* 3332 */ {(16<<2)|3,{49,108,99}}, +/* 3333 */ {(16<<2)|3,{49,108,101}}, +/* 3334 */ {(16<<2)|3,{49,108,105}}, +/* 3335 */ {(16<<2)|3,{49,108,111}}, +/* 3336 */ {(16<<2)|3,{49,108,115}}, +/* 3337 */ {(16<<2)|3,{49,108,116}}, +/* 3338 */ {(11<<2)|2,{49,108,0}}, +/* 3339 */ {(11<<2)|2,{49,108,0}}, +/* 3340 */ {(11<<2)|2,{49,108,0}}, +/* 3341 */ {(11<<2)|2,{49,108,0}}, +/* 3342 */ {(11<<2)|2,{49,108,0}}, +/* 3343 */ {(11<<2)|2,{49,108,0}}, +/* 3344 */ {(11<<2)|2,{49,108,0}}, +/* 3345 */ {(11<<2)|2,{49,108,0}}, +/* 3346 */ {(11<<2)|2,{49,108,0}}, +/* 3347 */ {(11<<2)|2,{49,108,0}}, +/* 3348 */ {(11<<2)|2,{49,108,0}}, +/* 3349 */ {(11<<2)|2,{49,108,0}}, +/* 3350 */ {(11<<2)|2,{49,108,0}}, +/* 3351 */ {(11<<2)|2,{49,108,0}}, +/* 3352 */ {(11<<2)|2,{49,108,0}}, +/* 3353 */ {(11<<2)|2,{49,108,0}}, +/* 3354 */ {(11<<2)|2,{49,108,0}}, +/* 3355 */ {(11<<2)|2,{49,108,0}}, +/* 3356 */ {(11<<2)|2,{49,108,0}}, +/* 3357 */ {(11<<2)|2,{49,108,0}}, +/* 3358 */ {(11<<2)|2,{49,108,0}}, +/* 3359 */ {(11<<2)|2,{49,108,0}}, +/* 3360 */ {(16<<2)|3,{49,109,48}}, +/* 3361 */ {(16<<2)|3,{49,109,49}}, +/* 3362 */ {(16<<2)|3,{49,109,50}}, +/* 3363 */ {(16<<2)|3,{49,109,97}}, +/* 3364 */ {(16<<2)|3,{49,109,99}}, +/* 3365 */ {(16<<2)|3,{49,109,101}}, +/* 3366 */ {(16<<2)|3,{49,109,105}}, +/* 3367 */ {(16<<2)|3,{49,109,111}}, +/* 3368 */ {(16<<2)|3,{49,109,115}}, +/* 3369 */ {(16<<2)|3,{49,109,116}}, +/* 3370 */ {(11<<2)|2,{49,109,0}}, +/* 3371 */ {(11<<2)|2,{49,109,0}}, +/* 3372 */ {(11<<2)|2,{49,109,0}}, +/* 3373 */ {(11<<2)|2,{49,109,0}}, +/* 3374 */ {(11<<2)|2,{49,109,0}}, +/* 3375 */ {(11<<2)|2,{49,109,0}}, +/* 3376 */ {(11<<2)|2,{49,109,0}}, +/* 3377 */ {(11<<2)|2,{49,109,0}}, +/* 3378 */ {(11<<2)|2,{49,109,0}}, +/* 3379 */ {(11<<2)|2,{49,109,0}}, +/* 3380 */ {(11<<2)|2,{49,109,0}}, +/* 3381 */ {(11<<2)|2,{49,109,0}}, +/* 3382 */ {(11<<2)|2,{49,109,0}}, +/* 3383 */ {(11<<2)|2,{49,109,0}}, +/* 3384 */ {(11<<2)|2,{49,109,0}}, +/* 3385 */ {(11<<2)|2,{49,109,0}}, +/* 3386 */ {(11<<2)|2,{49,109,0}}, +/* 3387 */ {(11<<2)|2,{49,109,0}}, +/* 3388 */ {(11<<2)|2,{49,109,0}}, +/* 3389 */ {(11<<2)|2,{49,109,0}}, +/* 3390 */ {(11<<2)|2,{49,109,0}}, +/* 3391 */ {(11<<2)|2,{49,109,0}}, +/* 3392 */ {(16<<2)|3,{49,110,48}}, +/* 3393 */ {(16<<2)|3,{49,110,49}}, +/* 3394 */ {(16<<2)|3,{49,110,50}}, +/* 3395 */ {(16<<2)|3,{49,110,97}}, +/* 3396 */ {(16<<2)|3,{49,110,99}}, +/* 3397 */ {(16<<2)|3,{49,110,101}}, +/* 3398 */ {(16<<2)|3,{49,110,105}}, +/* 3399 */ {(16<<2)|3,{49,110,111}}, +/* 3400 */ {(16<<2)|3,{49,110,115}}, +/* 3401 */ {(16<<2)|3,{49,110,116}}, +/* 3402 */ {(11<<2)|2,{49,110,0}}, +/* 3403 */ {(11<<2)|2,{49,110,0}}, +/* 3404 */ {(11<<2)|2,{49,110,0}}, +/* 3405 */ {(11<<2)|2,{49,110,0}}, +/* 3406 */ {(11<<2)|2,{49,110,0}}, +/* 3407 */ {(11<<2)|2,{49,110,0}}, +/* 3408 */ {(11<<2)|2,{49,110,0}}, +/* 3409 */ {(11<<2)|2,{49,110,0}}, +/* 3410 */ {(11<<2)|2,{49,110,0}}, +/* 3411 */ {(11<<2)|2,{49,110,0}}, +/* 3412 */ {(11<<2)|2,{49,110,0}}, +/* 3413 */ {(11<<2)|2,{49,110,0}}, +/* 3414 */ {(11<<2)|2,{49,110,0}}, +/* 3415 */ {(11<<2)|2,{49,110,0}}, +/* 3416 */ {(11<<2)|2,{49,110,0}}, +/* 3417 */ {(11<<2)|2,{49,110,0}}, +/* 3418 */ {(11<<2)|2,{49,110,0}}, +/* 3419 */ {(11<<2)|2,{49,110,0}}, +/* 3420 */ {(11<<2)|2,{49,110,0}}, +/* 3421 */ {(11<<2)|2,{49,110,0}}, +/* 3422 */ {(11<<2)|2,{49,110,0}}, +/* 3423 */ {(11<<2)|2,{49,110,0}}, +/* 3424 */ {(16<<2)|3,{49,112,48}}, +/* 3425 */ {(16<<2)|3,{49,112,49}}, +/* 3426 */ {(16<<2)|3,{49,112,50}}, +/* 3427 */ {(16<<2)|3,{49,112,97}}, +/* 3428 */ {(16<<2)|3,{49,112,99}}, +/* 3429 */ {(16<<2)|3,{49,112,101}}, +/* 3430 */ {(16<<2)|3,{49,112,105}}, +/* 3431 */ {(16<<2)|3,{49,112,111}}, +/* 3432 */ {(16<<2)|3,{49,112,115}}, +/* 3433 */ {(16<<2)|3,{49,112,116}}, +/* 3434 */ {(11<<2)|2,{49,112,0}}, +/* 3435 */ {(11<<2)|2,{49,112,0}}, +/* 3436 */ {(11<<2)|2,{49,112,0}}, +/* 3437 */ {(11<<2)|2,{49,112,0}}, +/* 3438 */ {(11<<2)|2,{49,112,0}}, +/* 3439 */ {(11<<2)|2,{49,112,0}}, +/* 3440 */ {(11<<2)|2,{49,112,0}}, +/* 3441 */ {(11<<2)|2,{49,112,0}}, +/* 3442 */ {(11<<2)|2,{49,112,0}}, +/* 3443 */ {(11<<2)|2,{49,112,0}}, +/* 3444 */ {(11<<2)|2,{49,112,0}}, +/* 3445 */ {(11<<2)|2,{49,112,0}}, +/* 3446 */ {(11<<2)|2,{49,112,0}}, +/* 3447 */ {(11<<2)|2,{49,112,0}}, +/* 3448 */ {(11<<2)|2,{49,112,0}}, +/* 3449 */ {(11<<2)|2,{49,112,0}}, +/* 3450 */ {(11<<2)|2,{49,112,0}}, +/* 3451 */ {(11<<2)|2,{49,112,0}}, +/* 3452 */ {(11<<2)|2,{49,112,0}}, +/* 3453 */ {(11<<2)|2,{49,112,0}}, +/* 3454 */ {(11<<2)|2,{49,112,0}}, +/* 3455 */ {(11<<2)|2,{49,112,0}}, +/* 3456 */ {(16<<2)|3,{49,114,48}}, +/* 3457 */ {(16<<2)|3,{49,114,49}}, +/* 3458 */ {(16<<2)|3,{49,114,50}}, +/* 3459 */ {(16<<2)|3,{49,114,97}}, +/* 3460 */ {(16<<2)|3,{49,114,99}}, +/* 3461 */ {(16<<2)|3,{49,114,101}}, +/* 3462 */ {(16<<2)|3,{49,114,105}}, +/* 3463 */ {(16<<2)|3,{49,114,111}}, +/* 3464 */ {(16<<2)|3,{49,114,115}}, +/* 3465 */ {(16<<2)|3,{49,114,116}}, +/* 3466 */ {(11<<2)|2,{49,114,0}}, +/* 3467 */ {(11<<2)|2,{49,114,0}}, +/* 3468 */ {(11<<2)|2,{49,114,0}}, +/* 3469 */ {(11<<2)|2,{49,114,0}}, +/* 3470 */ {(11<<2)|2,{49,114,0}}, +/* 3471 */ {(11<<2)|2,{49,114,0}}, +/* 3472 */ {(11<<2)|2,{49,114,0}}, +/* 3473 */ {(11<<2)|2,{49,114,0}}, +/* 3474 */ {(11<<2)|2,{49,114,0}}, +/* 3475 */ {(11<<2)|2,{49,114,0}}, +/* 3476 */ {(11<<2)|2,{49,114,0}}, +/* 3477 */ {(11<<2)|2,{49,114,0}}, +/* 3478 */ {(11<<2)|2,{49,114,0}}, +/* 3479 */ {(11<<2)|2,{49,114,0}}, +/* 3480 */ {(11<<2)|2,{49,114,0}}, +/* 3481 */ {(11<<2)|2,{49,114,0}}, +/* 3482 */ {(11<<2)|2,{49,114,0}}, +/* 3483 */ {(11<<2)|2,{49,114,0}}, +/* 3484 */ {(11<<2)|2,{49,114,0}}, +/* 3485 */ {(11<<2)|2,{49,114,0}}, +/* 3486 */ {(11<<2)|2,{49,114,0}}, +/* 3487 */ {(11<<2)|2,{49,114,0}}, +/* 3488 */ {(16<<2)|3,{49,117,48}}, +/* 3489 */ {(16<<2)|3,{49,117,49}}, +/* 3490 */ {(16<<2)|3,{49,117,50}}, +/* 3491 */ {(16<<2)|3,{49,117,97}}, +/* 3492 */ {(16<<2)|3,{49,117,99}}, +/* 3493 */ {(16<<2)|3,{49,117,101}}, +/* 3494 */ {(16<<2)|3,{49,117,105}}, +/* 3495 */ {(16<<2)|3,{49,117,111}}, +/* 3496 */ {(16<<2)|3,{49,117,115}}, +/* 3497 */ {(16<<2)|3,{49,117,116}}, +/* 3498 */ {(11<<2)|2,{49,117,0}}, +/* 3499 */ {(11<<2)|2,{49,117,0}}, +/* 3500 */ {(11<<2)|2,{49,117,0}}, +/* 3501 */ {(11<<2)|2,{49,117,0}}, +/* 3502 */ {(11<<2)|2,{49,117,0}}, +/* 3503 */ {(11<<2)|2,{49,117,0}}, +/* 3504 */ {(11<<2)|2,{49,117,0}}, +/* 3505 */ {(11<<2)|2,{49,117,0}}, +/* 3506 */ {(11<<2)|2,{49,117,0}}, +/* 3507 */ {(11<<2)|2,{49,117,0}}, +/* 3508 */ {(11<<2)|2,{49,117,0}}, +/* 3509 */ {(11<<2)|2,{49,117,0}}, +/* 3510 */ {(11<<2)|2,{49,117,0}}, +/* 3511 */ {(11<<2)|2,{49,117,0}}, +/* 3512 */ {(11<<2)|2,{49,117,0}}, +/* 3513 */ {(11<<2)|2,{49,117,0}}, +/* 3514 */ {(11<<2)|2,{49,117,0}}, +/* 3515 */ {(11<<2)|2,{49,117,0}}, +/* 3516 */ {(11<<2)|2,{49,117,0}}, +/* 3517 */ {(11<<2)|2,{49,117,0}}, +/* 3518 */ {(11<<2)|2,{49,117,0}}, +/* 3519 */ {(11<<2)|2,{49,117,0}}, +/* 3520 */ {(12<<2)|2,{49,58,0}}, +/* 3521 */ {(12<<2)|2,{49,58,0}}, +/* 3522 */ {(12<<2)|2,{49,58,0}}, +/* 3523 */ {(12<<2)|2,{49,58,0}}, +/* 3524 */ {(12<<2)|2,{49,58,0}}, +/* 3525 */ {(12<<2)|2,{49,58,0}}, +/* 3526 */ {(12<<2)|2,{49,58,0}}, +/* 3527 */ {(12<<2)|2,{49,58,0}}, +/* 3528 */ {(12<<2)|2,{49,58,0}}, +/* 3529 */ {(12<<2)|2,{49,58,0}}, +/* 3530 */ {(12<<2)|2,{49,58,0}}, +/* 3531 */ {(12<<2)|2,{49,58,0}}, +/* 3532 */ {(12<<2)|2,{49,58,0}}, +/* 3533 */ {(12<<2)|2,{49,58,0}}, +/* 3534 */ {(12<<2)|2,{49,58,0}}, +/* 3535 */ {(12<<2)|2,{49,58,0}}, +/* 3536 */ {(12<<2)|2,{49,66,0}}, +/* 3537 */ {(12<<2)|2,{49,66,0}}, +/* 3538 */ {(12<<2)|2,{49,66,0}}, +/* 3539 */ {(12<<2)|2,{49,66,0}}, +/* 3540 */ {(12<<2)|2,{49,66,0}}, +/* 3541 */ {(12<<2)|2,{49,66,0}}, +/* 3542 */ {(12<<2)|2,{49,66,0}}, +/* 3543 */ {(12<<2)|2,{49,66,0}}, +/* 3544 */ {(12<<2)|2,{49,66,0}}, +/* 3545 */ {(12<<2)|2,{49,66,0}}, +/* 3546 */ {(12<<2)|2,{49,66,0}}, +/* 3547 */ {(12<<2)|2,{49,66,0}}, +/* 3548 */ {(12<<2)|2,{49,66,0}}, +/* 3549 */ {(12<<2)|2,{49,66,0}}, +/* 3550 */ {(12<<2)|2,{49,66,0}}, +/* 3551 */ {(12<<2)|2,{49,66,0}}, +/* 3552 */ {(12<<2)|2,{49,67,0}}, +/* 3553 */ {(12<<2)|2,{49,67,0}}, +/* 3554 */ {(12<<2)|2,{49,67,0}}, +/* 3555 */ {(12<<2)|2,{49,67,0}}, +/* 3556 */ {(12<<2)|2,{49,67,0}}, +/* 3557 */ {(12<<2)|2,{49,67,0}}, +/* 3558 */ {(12<<2)|2,{49,67,0}}, +/* 3559 */ {(12<<2)|2,{49,67,0}}, +/* 3560 */ {(12<<2)|2,{49,67,0}}, +/* 3561 */ {(12<<2)|2,{49,67,0}}, +/* 3562 */ {(12<<2)|2,{49,67,0}}, +/* 3563 */ {(12<<2)|2,{49,67,0}}, +/* 3564 */ {(12<<2)|2,{49,67,0}}, +/* 3565 */ {(12<<2)|2,{49,67,0}}, +/* 3566 */ {(12<<2)|2,{49,67,0}}, +/* 3567 */ {(12<<2)|2,{49,67,0}}, +/* 3568 */ {(12<<2)|2,{49,68,0}}, +/* 3569 */ {(12<<2)|2,{49,68,0}}, +/* 3570 */ {(12<<2)|2,{49,68,0}}, +/* 3571 */ {(12<<2)|2,{49,68,0}}, +/* 3572 */ {(12<<2)|2,{49,68,0}}, +/* 3573 */ {(12<<2)|2,{49,68,0}}, +/* 3574 */ {(12<<2)|2,{49,68,0}}, +/* 3575 */ {(12<<2)|2,{49,68,0}}, +/* 3576 */ {(12<<2)|2,{49,68,0}}, +/* 3577 */ {(12<<2)|2,{49,68,0}}, +/* 3578 */ {(12<<2)|2,{49,68,0}}, +/* 3579 */ {(12<<2)|2,{49,68,0}}, +/* 3580 */ {(12<<2)|2,{49,68,0}}, +/* 3581 */ {(12<<2)|2,{49,68,0}}, +/* 3582 */ {(12<<2)|2,{49,68,0}}, +/* 3583 */ {(12<<2)|2,{49,68,0}}, +/* 3584 */ {(12<<2)|2,{49,69,0}}, +/* 3585 */ {(12<<2)|2,{49,69,0}}, +/* 3586 */ {(12<<2)|2,{49,69,0}}, +/* 3587 */ {(12<<2)|2,{49,69,0}}, +/* 3588 */ {(12<<2)|2,{49,69,0}}, +/* 3589 */ {(12<<2)|2,{49,69,0}}, +/* 3590 */ {(12<<2)|2,{49,69,0}}, +/* 3591 */ {(12<<2)|2,{49,69,0}}, +/* 3592 */ {(12<<2)|2,{49,69,0}}, +/* 3593 */ {(12<<2)|2,{49,69,0}}, +/* 3594 */ {(12<<2)|2,{49,69,0}}, +/* 3595 */ {(12<<2)|2,{49,69,0}}, +/* 3596 */ {(12<<2)|2,{49,69,0}}, +/* 3597 */ {(12<<2)|2,{49,69,0}}, +/* 3598 */ {(12<<2)|2,{49,69,0}}, +/* 3599 */ {(12<<2)|2,{49,69,0}}, +/* 3600 */ {(12<<2)|2,{49,70,0}}, +/* 3601 */ {(12<<2)|2,{49,70,0}}, +/* 3602 */ {(12<<2)|2,{49,70,0}}, +/* 3603 */ {(12<<2)|2,{49,70,0}}, +/* 3604 */ {(12<<2)|2,{49,70,0}}, +/* 3605 */ {(12<<2)|2,{49,70,0}}, +/* 3606 */ {(12<<2)|2,{49,70,0}}, +/* 3607 */ {(12<<2)|2,{49,70,0}}, +/* 3608 */ {(12<<2)|2,{49,70,0}}, +/* 3609 */ {(12<<2)|2,{49,70,0}}, +/* 3610 */ {(12<<2)|2,{49,70,0}}, +/* 3611 */ {(12<<2)|2,{49,70,0}}, +/* 3612 */ {(12<<2)|2,{49,70,0}}, +/* 3613 */ {(12<<2)|2,{49,70,0}}, +/* 3614 */ {(12<<2)|2,{49,70,0}}, +/* 3615 */ {(12<<2)|2,{49,70,0}}, +/* 3616 */ {(12<<2)|2,{49,71,0}}, +/* 3617 */ {(12<<2)|2,{49,71,0}}, +/* 3618 */ {(12<<2)|2,{49,71,0}}, +/* 3619 */ {(12<<2)|2,{49,71,0}}, +/* 3620 */ {(12<<2)|2,{49,71,0}}, +/* 3621 */ {(12<<2)|2,{49,71,0}}, +/* 3622 */ {(12<<2)|2,{49,71,0}}, +/* 3623 */ {(12<<2)|2,{49,71,0}}, +/* 3624 */ {(12<<2)|2,{49,71,0}}, +/* 3625 */ {(12<<2)|2,{49,71,0}}, +/* 3626 */ {(12<<2)|2,{49,71,0}}, +/* 3627 */ {(12<<2)|2,{49,71,0}}, +/* 3628 */ {(12<<2)|2,{49,71,0}}, +/* 3629 */ {(12<<2)|2,{49,71,0}}, +/* 3630 */ {(12<<2)|2,{49,71,0}}, +/* 3631 */ {(12<<2)|2,{49,71,0}}, +/* 3632 */ {(12<<2)|2,{49,72,0}}, +/* 3633 */ {(12<<2)|2,{49,72,0}}, +/* 3634 */ {(12<<2)|2,{49,72,0}}, +/* 3635 */ {(12<<2)|2,{49,72,0}}, +/* 3636 */ {(12<<2)|2,{49,72,0}}, +/* 3637 */ {(12<<2)|2,{49,72,0}}, +/* 3638 */ {(12<<2)|2,{49,72,0}}, +/* 3639 */ {(12<<2)|2,{49,72,0}}, +/* 3640 */ {(12<<2)|2,{49,72,0}}, +/* 3641 */ {(12<<2)|2,{49,72,0}}, +/* 3642 */ {(12<<2)|2,{49,72,0}}, +/* 3643 */ {(12<<2)|2,{49,72,0}}, +/* 3644 */ {(12<<2)|2,{49,72,0}}, +/* 3645 */ {(12<<2)|2,{49,72,0}}, +/* 3646 */ {(12<<2)|2,{49,72,0}}, +/* 3647 */ {(12<<2)|2,{49,72,0}}, +/* 3648 */ {(12<<2)|2,{49,73,0}}, +/* 3649 */ {(12<<2)|2,{49,73,0}}, +/* 3650 */ {(12<<2)|2,{49,73,0}}, +/* 3651 */ {(12<<2)|2,{49,73,0}}, +/* 3652 */ {(12<<2)|2,{49,73,0}}, +/* 3653 */ {(12<<2)|2,{49,73,0}}, +/* 3654 */ {(12<<2)|2,{49,73,0}}, +/* 3655 */ {(12<<2)|2,{49,73,0}}, +/* 3656 */ {(12<<2)|2,{49,73,0}}, +/* 3657 */ {(12<<2)|2,{49,73,0}}, +/* 3658 */ {(12<<2)|2,{49,73,0}}, +/* 3659 */ {(12<<2)|2,{49,73,0}}, +/* 3660 */ {(12<<2)|2,{49,73,0}}, +/* 3661 */ {(12<<2)|2,{49,73,0}}, +/* 3662 */ {(12<<2)|2,{49,73,0}}, +/* 3663 */ {(12<<2)|2,{49,73,0}}, +/* 3664 */ {(12<<2)|2,{49,74,0}}, +/* 3665 */ {(12<<2)|2,{49,74,0}}, +/* 3666 */ {(12<<2)|2,{49,74,0}}, +/* 3667 */ {(12<<2)|2,{49,74,0}}, +/* 3668 */ {(12<<2)|2,{49,74,0}}, +/* 3669 */ {(12<<2)|2,{49,74,0}}, +/* 3670 */ {(12<<2)|2,{49,74,0}}, +/* 3671 */ {(12<<2)|2,{49,74,0}}, +/* 3672 */ {(12<<2)|2,{49,74,0}}, +/* 3673 */ {(12<<2)|2,{49,74,0}}, +/* 3674 */ {(12<<2)|2,{49,74,0}}, +/* 3675 */ {(12<<2)|2,{49,74,0}}, +/* 3676 */ {(12<<2)|2,{49,74,0}}, +/* 3677 */ {(12<<2)|2,{49,74,0}}, +/* 3678 */ {(12<<2)|2,{49,74,0}}, +/* 3679 */ {(12<<2)|2,{49,74,0}}, +/* 3680 */ {(12<<2)|2,{49,75,0}}, +/* 3681 */ {(12<<2)|2,{49,75,0}}, +/* 3682 */ {(12<<2)|2,{49,75,0}}, +/* 3683 */ {(12<<2)|2,{49,75,0}}, +/* 3684 */ {(12<<2)|2,{49,75,0}}, +/* 3685 */ {(12<<2)|2,{49,75,0}}, +/* 3686 */ {(12<<2)|2,{49,75,0}}, +/* 3687 */ {(12<<2)|2,{49,75,0}}, +/* 3688 */ {(12<<2)|2,{49,75,0}}, +/* 3689 */ {(12<<2)|2,{49,75,0}}, +/* 3690 */ {(12<<2)|2,{49,75,0}}, +/* 3691 */ {(12<<2)|2,{49,75,0}}, +/* 3692 */ {(12<<2)|2,{49,75,0}}, +/* 3693 */ {(12<<2)|2,{49,75,0}}, +/* 3694 */ {(12<<2)|2,{49,75,0}}, +/* 3695 */ {(12<<2)|2,{49,75,0}}, +/* 3696 */ {(12<<2)|2,{49,76,0}}, +/* 3697 */ {(12<<2)|2,{49,76,0}}, +/* 3698 */ {(12<<2)|2,{49,76,0}}, +/* 3699 */ {(12<<2)|2,{49,76,0}}, +/* 3700 */ {(12<<2)|2,{49,76,0}}, +/* 3701 */ {(12<<2)|2,{49,76,0}}, +/* 3702 */ {(12<<2)|2,{49,76,0}}, +/* 3703 */ {(12<<2)|2,{49,76,0}}, +/* 3704 */ {(12<<2)|2,{49,76,0}}, +/* 3705 */ {(12<<2)|2,{49,76,0}}, +/* 3706 */ {(12<<2)|2,{49,76,0}}, +/* 3707 */ {(12<<2)|2,{49,76,0}}, +/* 3708 */ {(12<<2)|2,{49,76,0}}, +/* 3709 */ {(12<<2)|2,{49,76,0}}, +/* 3710 */ {(12<<2)|2,{49,76,0}}, +/* 3711 */ {(12<<2)|2,{49,76,0}}, +/* 3712 */ {(12<<2)|2,{49,77,0}}, +/* 3713 */ {(12<<2)|2,{49,77,0}}, +/* 3714 */ {(12<<2)|2,{49,77,0}}, +/* 3715 */ {(12<<2)|2,{49,77,0}}, +/* 3716 */ {(12<<2)|2,{49,77,0}}, +/* 3717 */ {(12<<2)|2,{49,77,0}}, +/* 3718 */ {(12<<2)|2,{49,77,0}}, +/* 3719 */ {(12<<2)|2,{49,77,0}}, +/* 3720 */ {(12<<2)|2,{49,77,0}}, +/* 3721 */ {(12<<2)|2,{49,77,0}}, +/* 3722 */ {(12<<2)|2,{49,77,0}}, +/* 3723 */ {(12<<2)|2,{49,77,0}}, +/* 3724 */ {(12<<2)|2,{49,77,0}}, +/* 3725 */ {(12<<2)|2,{49,77,0}}, +/* 3726 */ {(12<<2)|2,{49,77,0}}, +/* 3727 */ {(12<<2)|2,{49,77,0}}, +/* 3728 */ {(12<<2)|2,{49,78,0}}, +/* 3729 */ {(12<<2)|2,{49,78,0}}, +/* 3730 */ {(12<<2)|2,{49,78,0}}, +/* 3731 */ {(12<<2)|2,{49,78,0}}, +/* 3732 */ {(12<<2)|2,{49,78,0}}, +/* 3733 */ {(12<<2)|2,{49,78,0}}, +/* 3734 */ {(12<<2)|2,{49,78,0}}, +/* 3735 */ {(12<<2)|2,{49,78,0}}, +/* 3736 */ {(12<<2)|2,{49,78,0}}, +/* 3737 */ {(12<<2)|2,{49,78,0}}, +/* 3738 */ {(12<<2)|2,{49,78,0}}, +/* 3739 */ {(12<<2)|2,{49,78,0}}, +/* 3740 */ {(12<<2)|2,{49,78,0}}, +/* 3741 */ {(12<<2)|2,{49,78,0}}, +/* 3742 */ {(12<<2)|2,{49,78,0}}, +/* 3743 */ {(12<<2)|2,{49,78,0}}, +/* 3744 */ {(12<<2)|2,{49,79,0}}, +/* 3745 */ {(12<<2)|2,{49,79,0}}, +/* 3746 */ {(12<<2)|2,{49,79,0}}, +/* 3747 */ {(12<<2)|2,{49,79,0}}, +/* 3748 */ {(12<<2)|2,{49,79,0}}, +/* 3749 */ {(12<<2)|2,{49,79,0}}, +/* 3750 */ {(12<<2)|2,{49,79,0}}, +/* 3751 */ {(12<<2)|2,{49,79,0}}, +/* 3752 */ {(12<<2)|2,{49,79,0}}, +/* 3753 */ {(12<<2)|2,{49,79,0}}, +/* 3754 */ {(12<<2)|2,{49,79,0}}, +/* 3755 */ {(12<<2)|2,{49,79,0}}, +/* 3756 */ {(12<<2)|2,{49,79,0}}, +/* 3757 */ {(12<<2)|2,{49,79,0}}, +/* 3758 */ {(12<<2)|2,{49,79,0}}, +/* 3759 */ {(12<<2)|2,{49,79,0}}, +/* 3760 */ {(12<<2)|2,{49,80,0}}, +/* 3761 */ {(12<<2)|2,{49,80,0}}, +/* 3762 */ {(12<<2)|2,{49,80,0}}, +/* 3763 */ {(12<<2)|2,{49,80,0}}, +/* 3764 */ {(12<<2)|2,{49,80,0}}, +/* 3765 */ {(12<<2)|2,{49,80,0}}, +/* 3766 */ {(12<<2)|2,{49,80,0}}, +/* 3767 */ {(12<<2)|2,{49,80,0}}, +/* 3768 */ {(12<<2)|2,{49,80,0}}, +/* 3769 */ {(12<<2)|2,{49,80,0}}, +/* 3770 */ {(12<<2)|2,{49,80,0}}, +/* 3771 */ {(12<<2)|2,{49,80,0}}, +/* 3772 */ {(12<<2)|2,{49,80,0}}, +/* 3773 */ {(12<<2)|2,{49,80,0}}, +/* 3774 */ {(12<<2)|2,{49,80,0}}, +/* 3775 */ {(12<<2)|2,{49,80,0}}, +/* 3776 */ {(12<<2)|2,{49,81,0}}, +/* 3777 */ {(12<<2)|2,{49,81,0}}, +/* 3778 */ {(12<<2)|2,{49,81,0}}, +/* 3779 */ {(12<<2)|2,{49,81,0}}, +/* 3780 */ {(12<<2)|2,{49,81,0}}, +/* 3781 */ {(12<<2)|2,{49,81,0}}, +/* 3782 */ {(12<<2)|2,{49,81,0}}, +/* 3783 */ {(12<<2)|2,{49,81,0}}, +/* 3784 */ {(12<<2)|2,{49,81,0}}, +/* 3785 */ {(12<<2)|2,{49,81,0}}, +/* 3786 */ {(12<<2)|2,{49,81,0}}, +/* 3787 */ {(12<<2)|2,{49,81,0}}, +/* 3788 */ {(12<<2)|2,{49,81,0}}, +/* 3789 */ {(12<<2)|2,{49,81,0}}, +/* 3790 */ {(12<<2)|2,{49,81,0}}, +/* 3791 */ {(12<<2)|2,{49,81,0}}, +/* 3792 */ {(12<<2)|2,{49,82,0}}, +/* 3793 */ {(12<<2)|2,{49,82,0}}, +/* 3794 */ {(12<<2)|2,{49,82,0}}, +/* 3795 */ {(12<<2)|2,{49,82,0}}, +/* 3796 */ {(12<<2)|2,{49,82,0}}, +/* 3797 */ {(12<<2)|2,{49,82,0}}, +/* 3798 */ {(12<<2)|2,{49,82,0}}, +/* 3799 */ {(12<<2)|2,{49,82,0}}, +/* 3800 */ {(12<<2)|2,{49,82,0}}, +/* 3801 */ {(12<<2)|2,{49,82,0}}, +/* 3802 */ {(12<<2)|2,{49,82,0}}, +/* 3803 */ {(12<<2)|2,{49,82,0}}, +/* 3804 */ {(12<<2)|2,{49,82,0}}, +/* 3805 */ {(12<<2)|2,{49,82,0}}, +/* 3806 */ {(12<<2)|2,{49,82,0}}, +/* 3807 */ {(12<<2)|2,{49,82,0}}, +/* 3808 */ {(12<<2)|2,{49,83,0}}, +/* 3809 */ {(12<<2)|2,{49,83,0}}, +/* 3810 */ {(12<<2)|2,{49,83,0}}, +/* 3811 */ {(12<<2)|2,{49,83,0}}, +/* 3812 */ {(12<<2)|2,{49,83,0}}, +/* 3813 */ {(12<<2)|2,{49,83,0}}, +/* 3814 */ {(12<<2)|2,{49,83,0}}, +/* 3815 */ {(12<<2)|2,{49,83,0}}, +/* 3816 */ {(12<<2)|2,{49,83,0}}, +/* 3817 */ {(12<<2)|2,{49,83,0}}, +/* 3818 */ {(12<<2)|2,{49,83,0}}, +/* 3819 */ {(12<<2)|2,{49,83,0}}, +/* 3820 */ {(12<<2)|2,{49,83,0}}, +/* 3821 */ {(12<<2)|2,{49,83,0}}, +/* 3822 */ {(12<<2)|2,{49,83,0}}, +/* 3823 */ {(12<<2)|2,{49,83,0}}, +/* 3824 */ {(12<<2)|2,{49,84,0}}, +/* 3825 */ {(12<<2)|2,{49,84,0}}, +/* 3826 */ {(12<<2)|2,{49,84,0}}, +/* 3827 */ {(12<<2)|2,{49,84,0}}, +/* 3828 */ {(12<<2)|2,{49,84,0}}, +/* 3829 */ {(12<<2)|2,{49,84,0}}, +/* 3830 */ {(12<<2)|2,{49,84,0}}, +/* 3831 */ {(12<<2)|2,{49,84,0}}, +/* 3832 */ {(12<<2)|2,{49,84,0}}, +/* 3833 */ {(12<<2)|2,{49,84,0}}, +/* 3834 */ {(12<<2)|2,{49,84,0}}, +/* 3835 */ {(12<<2)|2,{49,84,0}}, +/* 3836 */ {(12<<2)|2,{49,84,0}}, +/* 3837 */ {(12<<2)|2,{49,84,0}}, +/* 3838 */ {(12<<2)|2,{49,84,0}}, +/* 3839 */ {(12<<2)|2,{49,84,0}}, +/* 3840 */ {(12<<2)|2,{49,85,0}}, +/* 3841 */ {(12<<2)|2,{49,85,0}}, +/* 3842 */ {(12<<2)|2,{49,85,0}}, +/* 3843 */ {(12<<2)|2,{49,85,0}}, +/* 3844 */ {(12<<2)|2,{49,85,0}}, +/* 3845 */ {(12<<2)|2,{49,85,0}}, +/* 3846 */ {(12<<2)|2,{49,85,0}}, +/* 3847 */ {(12<<2)|2,{49,85,0}}, +/* 3848 */ {(12<<2)|2,{49,85,0}}, +/* 3849 */ {(12<<2)|2,{49,85,0}}, +/* 3850 */ {(12<<2)|2,{49,85,0}}, +/* 3851 */ {(12<<2)|2,{49,85,0}}, +/* 3852 */ {(12<<2)|2,{49,85,0}}, +/* 3853 */ {(12<<2)|2,{49,85,0}}, +/* 3854 */ {(12<<2)|2,{49,85,0}}, +/* 3855 */ {(12<<2)|2,{49,85,0}}, +/* 3856 */ {(12<<2)|2,{49,86,0}}, +/* 3857 */ {(12<<2)|2,{49,86,0}}, +/* 3858 */ {(12<<2)|2,{49,86,0}}, +/* 3859 */ {(12<<2)|2,{49,86,0}}, +/* 3860 */ {(12<<2)|2,{49,86,0}}, +/* 3861 */ {(12<<2)|2,{49,86,0}}, +/* 3862 */ {(12<<2)|2,{49,86,0}}, +/* 3863 */ {(12<<2)|2,{49,86,0}}, +/* 3864 */ {(12<<2)|2,{49,86,0}}, +/* 3865 */ {(12<<2)|2,{49,86,0}}, +/* 3866 */ {(12<<2)|2,{49,86,0}}, +/* 3867 */ {(12<<2)|2,{49,86,0}}, +/* 3868 */ {(12<<2)|2,{49,86,0}}, +/* 3869 */ {(12<<2)|2,{49,86,0}}, +/* 3870 */ {(12<<2)|2,{49,86,0}}, +/* 3871 */ {(12<<2)|2,{49,86,0}}, +/* 3872 */ {(12<<2)|2,{49,87,0}}, +/* 3873 */ {(12<<2)|2,{49,87,0}}, +/* 3874 */ {(12<<2)|2,{49,87,0}}, +/* 3875 */ {(12<<2)|2,{49,87,0}}, +/* 3876 */ {(12<<2)|2,{49,87,0}}, +/* 3877 */ {(12<<2)|2,{49,87,0}}, +/* 3878 */ {(12<<2)|2,{49,87,0}}, +/* 3879 */ {(12<<2)|2,{49,87,0}}, +/* 3880 */ {(12<<2)|2,{49,87,0}}, +/* 3881 */ {(12<<2)|2,{49,87,0}}, +/* 3882 */ {(12<<2)|2,{49,87,0}}, +/* 3883 */ {(12<<2)|2,{49,87,0}}, +/* 3884 */ {(12<<2)|2,{49,87,0}}, +/* 3885 */ {(12<<2)|2,{49,87,0}}, +/* 3886 */ {(12<<2)|2,{49,87,0}}, +/* 3887 */ {(12<<2)|2,{49,87,0}}, +/* 3888 */ {(12<<2)|2,{49,89,0}}, +/* 3889 */ {(12<<2)|2,{49,89,0}}, +/* 3890 */ {(12<<2)|2,{49,89,0}}, +/* 3891 */ {(12<<2)|2,{49,89,0}}, +/* 3892 */ {(12<<2)|2,{49,89,0}}, +/* 3893 */ {(12<<2)|2,{49,89,0}}, +/* 3894 */ {(12<<2)|2,{49,89,0}}, +/* 3895 */ {(12<<2)|2,{49,89,0}}, +/* 3896 */ {(12<<2)|2,{49,89,0}}, +/* 3897 */ {(12<<2)|2,{49,89,0}}, +/* 3898 */ {(12<<2)|2,{49,89,0}}, +/* 3899 */ {(12<<2)|2,{49,89,0}}, +/* 3900 */ {(12<<2)|2,{49,89,0}}, +/* 3901 */ {(12<<2)|2,{49,89,0}}, +/* 3902 */ {(12<<2)|2,{49,89,0}}, +/* 3903 */ {(12<<2)|2,{49,89,0}}, +/* 3904 */ {(12<<2)|2,{49,106,0}}, +/* 3905 */ {(12<<2)|2,{49,106,0}}, +/* 3906 */ {(12<<2)|2,{49,106,0}}, +/* 3907 */ {(12<<2)|2,{49,106,0}}, +/* 3908 */ {(12<<2)|2,{49,106,0}}, +/* 3909 */ {(12<<2)|2,{49,106,0}}, +/* 3910 */ {(12<<2)|2,{49,106,0}}, +/* 3911 */ {(12<<2)|2,{49,106,0}}, +/* 3912 */ {(12<<2)|2,{49,106,0}}, +/* 3913 */ {(12<<2)|2,{49,106,0}}, +/* 3914 */ {(12<<2)|2,{49,106,0}}, +/* 3915 */ {(12<<2)|2,{49,106,0}}, +/* 3916 */ {(12<<2)|2,{49,106,0}}, +/* 3917 */ {(12<<2)|2,{49,106,0}}, +/* 3918 */ {(12<<2)|2,{49,106,0}}, +/* 3919 */ {(12<<2)|2,{49,106,0}}, +/* 3920 */ {(12<<2)|2,{49,107,0}}, +/* 3921 */ {(12<<2)|2,{49,107,0}}, +/* 3922 */ {(12<<2)|2,{49,107,0}}, +/* 3923 */ {(12<<2)|2,{49,107,0}}, +/* 3924 */ {(12<<2)|2,{49,107,0}}, +/* 3925 */ {(12<<2)|2,{49,107,0}}, +/* 3926 */ {(12<<2)|2,{49,107,0}}, +/* 3927 */ {(12<<2)|2,{49,107,0}}, +/* 3928 */ {(12<<2)|2,{49,107,0}}, +/* 3929 */ {(12<<2)|2,{49,107,0}}, +/* 3930 */ {(12<<2)|2,{49,107,0}}, +/* 3931 */ {(12<<2)|2,{49,107,0}}, +/* 3932 */ {(12<<2)|2,{49,107,0}}, +/* 3933 */ {(12<<2)|2,{49,107,0}}, +/* 3934 */ {(12<<2)|2,{49,107,0}}, +/* 3935 */ {(12<<2)|2,{49,107,0}}, +/* 3936 */ {(12<<2)|2,{49,113,0}}, +/* 3937 */ {(12<<2)|2,{49,113,0}}, +/* 3938 */ {(12<<2)|2,{49,113,0}}, +/* 3939 */ {(12<<2)|2,{49,113,0}}, +/* 3940 */ {(12<<2)|2,{49,113,0}}, +/* 3941 */ {(12<<2)|2,{49,113,0}}, +/* 3942 */ {(12<<2)|2,{49,113,0}}, +/* 3943 */ {(12<<2)|2,{49,113,0}}, +/* 3944 */ {(12<<2)|2,{49,113,0}}, +/* 3945 */ {(12<<2)|2,{49,113,0}}, +/* 3946 */ {(12<<2)|2,{49,113,0}}, +/* 3947 */ {(12<<2)|2,{49,113,0}}, +/* 3948 */ {(12<<2)|2,{49,113,0}}, +/* 3949 */ {(12<<2)|2,{49,113,0}}, +/* 3950 */ {(12<<2)|2,{49,113,0}}, +/* 3951 */ {(12<<2)|2,{49,113,0}}, +/* 3952 */ {(12<<2)|2,{49,118,0}}, +/* 3953 */ {(12<<2)|2,{49,118,0}}, +/* 3954 */ {(12<<2)|2,{49,118,0}}, +/* 3955 */ {(12<<2)|2,{49,118,0}}, +/* 3956 */ {(12<<2)|2,{49,118,0}}, +/* 3957 */ {(12<<2)|2,{49,118,0}}, +/* 3958 */ {(12<<2)|2,{49,118,0}}, +/* 3959 */ {(12<<2)|2,{49,118,0}}, +/* 3960 */ {(12<<2)|2,{49,118,0}}, +/* 3961 */ {(12<<2)|2,{49,118,0}}, +/* 3962 */ {(12<<2)|2,{49,118,0}}, +/* 3963 */ {(12<<2)|2,{49,118,0}}, +/* 3964 */ {(12<<2)|2,{49,118,0}}, +/* 3965 */ {(12<<2)|2,{49,118,0}}, +/* 3966 */ {(12<<2)|2,{49,118,0}}, +/* 3967 */ {(12<<2)|2,{49,118,0}}, +/* 3968 */ {(12<<2)|2,{49,119,0}}, +/* 3969 */ {(12<<2)|2,{49,119,0}}, +/* 3970 */ {(12<<2)|2,{49,119,0}}, +/* 3971 */ {(12<<2)|2,{49,119,0}}, +/* 3972 */ {(12<<2)|2,{49,119,0}}, +/* 3973 */ {(12<<2)|2,{49,119,0}}, +/* 3974 */ {(12<<2)|2,{49,119,0}}, +/* 3975 */ {(12<<2)|2,{49,119,0}}, +/* 3976 */ {(12<<2)|2,{49,119,0}}, +/* 3977 */ {(12<<2)|2,{49,119,0}}, +/* 3978 */ {(12<<2)|2,{49,119,0}}, +/* 3979 */ {(12<<2)|2,{49,119,0}}, +/* 3980 */ {(12<<2)|2,{49,119,0}}, +/* 3981 */ {(12<<2)|2,{49,119,0}}, +/* 3982 */ {(12<<2)|2,{49,119,0}}, +/* 3983 */ {(12<<2)|2,{49,119,0}}, +/* 3984 */ {(12<<2)|2,{49,120,0}}, +/* 3985 */ {(12<<2)|2,{49,120,0}}, +/* 3986 */ {(12<<2)|2,{49,120,0}}, +/* 3987 */ {(12<<2)|2,{49,120,0}}, +/* 3988 */ {(12<<2)|2,{49,120,0}}, +/* 3989 */ {(12<<2)|2,{49,120,0}}, +/* 3990 */ {(12<<2)|2,{49,120,0}}, +/* 3991 */ {(12<<2)|2,{49,120,0}}, +/* 3992 */ {(12<<2)|2,{49,120,0}}, +/* 3993 */ {(12<<2)|2,{49,120,0}}, +/* 3994 */ {(12<<2)|2,{49,120,0}}, +/* 3995 */ {(12<<2)|2,{49,120,0}}, +/* 3996 */ {(12<<2)|2,{49,120,0}}, +/* 3997 */ {(12<<2)|2,{49,120,0}}, +/* 3998 */ {(12<<2)|2,{49,120,0}}, +/* 3999 */ {(12<<2)|2,{49,120,0}}, +/* 4000 */ {(12<<2)|2,{49,121,0}}, +/* 4001 */ {(12<<2)|2,{49,121,0}}, +/* 4002 */ {(12<<2)|2,{49,121,0}}, +/* 4003 */ {(12<<2)|2,{49,121,0}}, +/* 4004 */ {(12<<2)|2,{49,121,0}}, +/* 4005 */ {(12<<2)|2,{49,121,0}}, +/* 4006 */ {(12<<2)|2,{49,121,0}}, +/* 4007 */ {(12<<2)|2,{49,121,0}}, +/* 4008 */ {(12<<2)|2,{49,121,0}}, +/* 4009 */ {(12<<2)|2,{49,121,0}}, +/* 4010 */ {(12<<2)|2,{49,121,0}}, +/* 4011 */ {(12<<2)|2,{49,121,0}}, +/* 4012 */ {(12<<2)|2,{49,121,0}}, +/* 4013 */ {(12<<2)|2,{49,121,0}}, +/* 4014 */ {(12<<2)|2,{49,121,0}}, +/* 4015 */ {(12<<2)|2,{49,121,0}}, +/* 4016 */ {(12<<2)|2,{49,122,0}}, +/* 4017 */ {(12<<2)|2,{49,122,0}}, +/* 4018 */ {(12<<2)|2,{49,122,0}}, +/* 4019 */ {(12<<2)|2,{49,122,0}}, +/* 4020 */ {(12<<2)|2,{49,122,0}}, +/* 4021 */ {(12<<2)|2,{49,122,0}}, +/* 4022 */ {(12<<2)|2,{49,122,0}}, +/* 4023 */ {(12<<2)|2,{49,122,0}}, +/* 4024 */ {(12<<2)|2,{49,122,0}}, +/* 4025 */ {(12<<2)|2,{49,122,0}}, +/* 4026 */ {(12<<2)|2,{49,122,0}}, +/* 4027 */ {(12<<2)|2,{49,122,0}}, +/* 4028 */ {(12<<2)|2,{49,122,0}}, +/* 4029 */ {(12<<2)|2,{49,122,0}}, +/* 4030 */ {(12<<2)|2,{49,122,0}}, +/* 4031 */ {(12<<2)|2,{49,122,0}}, +/* 4032 */ {(13<<2)|2,{49,38,0}}, +/* 4033 */ {(13<<2)|2,{49,38,0}}, +/* 4034 */ {(13<<2)|2,{49,38,0}}, +/* 4035 */ {(13<<2)|2,{49,38,0}}, +/* 4036 */ {(13<<2)|2,{49,38,0}}, +/* 4037 */ {(13<<2)|2,{49,38,0}}, +/* 4038 */ {(13<<2)|2,{49,38,0}}, +/* 4039 */ {(13<<2)|2,{49,38,0}}, +/* 4040 */ {(13<<2)|2,{49,42,0}}, +/* 4041 */ {(13<<2)|2,{49,42,0}}, +/* 4042 */ {(13<<2)|2,{49,42,0}}, +/* 4043 */ {(13<<2)|2,{49,42,0}}, +/* 4044 */ {(13<<2)|2,{49,42,0}}, +/* 4045 */ {(13<<2)|2,{49,42,0}}, +/* 4046 */ {(13<<2)|2,{49,42,0}}, +/* 4047 */ {(13<<2)|2,{49,42,0}}, +/* 4048 */ {(13<<2)|2,{49,44,0}}, +/* 4049 */ {(13<<2)|2,{49,44,0}}, +/* 4050 */ {(13<<2)|2,{49,44,0}}, +/* 4051 */ {(13<<2)|2,{49,44,0}}, +/* 4052 */ {(13<<2)|2,{49,44,0}}, +/* 4053 */ {(13<<2)|2,{49,44,0}}, +/* 4054 */ {(13<<2)|2,{49,44,0}}, +/* 4055 */ {(13<<2)|2,{49,44,0}}, +/* 4056 */ {(13<<2)|2,{49,59,0}}, +/* 4057 */ {(13<<2)|2,{49,59,0}}, +/* 4058 */ {(13<<2)|2,{49,59,0}}, +/* 4059 */ {(13<<2)|2,{49,59,0}}, +/* 4060 */ {(13<<2)|2,{49,59,0}}, +/* 4061 */ {(13<<2)|2,{49,59,0}}, +/* 4062 */ {(13<<2)|2,{49,59,0}}, +/* 4063 */ {(13<<2)|2,{49,59,0}}, +/* 4064 */ {(13<<2)|2,{49,88,0}}, +/* 4065 */ {(13<<2)|2,{49,88,0}}, +/* 4066 */ {(13<<2)|2,{49,88,0}}, +/* 4067 */ {(13<<2)|2,{49,88,0}}, +/* 4068 */ {(13<<2)|2,{49,88,0}}, +/* 4069 */ {(13<<2)|2,{49,88,0}}, +/* 4070 */ {(13<<2)|2,{49,88,0}}, +/* 4071 */ {(13<<2)|2,{49,88,0}}, +/* 4072 */ {(13<<2)|2,{49,90,0}}, +/* 4073 */ {(13<<2)|2,{49,90,0}}, +/* 4074 */ {(13<<2)|2,{49,90,0}}, +/* 4075 */ {(13<<2)|2,{49,90,0}}, +/* 4076 */ {(13<<2)|2,{49,90,0}}, +/* 4077 */ {(13<<2)|2,{49,90,0}}, +/* 4078 */ {(13<<2)|2,{49,90,0}}, +/* 4079 */ {(13<<2)|2,{49,90,0}}, +/* 4080 */ {(15<<2)|2,{49,33,0}}, +/* 4081 */ {(15<<2)|2,{49,33,0}}, +/* 4082 */ {(15<<2)|2,{49,34,0}}, +/* 4083 */ {(15<<2)|2,{49,34,0}}, +/* 4084 */ {(15<<2)|2,{49,40,0}}, +/* 4085 */ {(15<<2)|2,{49,40,0}}, +/* 4086 */ {(15<<2)|2,{49,41,0}}, +/* 4087 */ {(15<<2)|2,{49,41,0}}, +/* 4088 */ {(15<<2)|2,{49,63,0}}, +/* 4089 */ {(15<<2)|2,{49,63,0}}, +/* 4090 */ {(16<<2)|2,{49,39,0}}, +/* 4091 */ {(16<<2)|2,{49,43,0}}, +/* 4092 */ {(16<<2)|2,{49,124,0}}, +/* 4093 */ {(5<<2)|1,{49,0,0}}, +/* 4094 */ {(5<<2)|1,{49,0,0}}, +/* 4095 */ {(5<<2)|1,{49,0,0}}, +/* 4096 */ {(15<<2)|3,{50,48,48}}, +/* 4097 */ {(15<<2)|3,{50,48,48}}, +/* 4098 */ {(15<<2)|3,{50,48,49}}, +/* 4099 */ {(15<<2)|3,{50,48,49}}, +/* 4100 */ {(15<<2)|3,{50,48,50}}, +/* 4101 */ {(15<<2)|3,{50,48,50}}, +/* 4102 */ {(15<<2)|3,{50,48,97}}, +/* 4103 */ {(15<<2)|3,{50,48,97}}, +/* 4104 */ {(15<<2)|3,{50,48,99}}, +/* 4105 */ {(15<<2)|3,{50,48,99}}, +/* 4106 */ {(15<<2)|3,{50,48,101}}, +/* 4107 */ {(15<<2)|3,{50,48,101}}, +/* 4108 */ {(15<<2)|3,{50,48,105}}, +/* 4109 */ {(15<<2)|3,{50,48,105}}, +/* 4110 */ {(15<<2)|3,{50,48,111}}, +/* 4111 */ {(15<<2)|3,{50,48,111}}, +/* 4112 */ {(15<<2)|3,{50,48,115}}, +/* 4113 */ {(15<<2)|3,{50,48,115}}, +/* 4114 */ {(15<<2)|3,{50,48,116}}, +/* 4115 */ {(15<<2)|3,{50,48,116}}, +/* 4116 */ {(16<<2)|3,{50,48,32}}, +/* 4117 */ {(16<<2)|3,{50,48,37}}, +/* 4118 */ {(16<<2)|3,{50,48,45}}, +/* 4119 */ {(16<<2)|3,{50,48,46}}, +/* 4120 */ {(16<<2)|3,{50,48,47}}, +/* 4121 */ {(16<<2)|3,{50,48,51}}, +/* 4122 */ {(16<<2)|3,{50,48,52}}, +/* 4123 */ {(16<<2)|3,{50,48,53}}, +/* 4124 */ {(16<<2)|3,{50,48,54}}, +/* 4125 */ {(16<<2)|3,{50,48,55}}, +/* 4126 */ {(16<<2)|3,{50,48,56}}, +/* 4127 */ {(16<<2)|3,{50,48,57}}, +/* 4128 */ {(16<<2)|3,{50,48,61}}, +/* 4129 */ {(16<<2)|3,{50,48,65}}, +/* 4130 */ {(16<<2)|3,{50,48,95}}, +/* 4131 */ {(16<<2)|3,{50,48,98}}, +/* 4132 */ {(16<<2)|3,{50,48,100}}, +/* 4133 */ {(16<<2)|3,{50,48,102}}, +/* 4134 */ {(16<<2)|3,{50,48,103}}, +/* 4135 */ {(16<<2)|3,{50,48,104}}, +/* 4136 */ {(16<<2)|3,{50,48,108}}, +/* 4137 */ {(16<<2)|3,{50,48,109}}, +/* 4138 */ {(16<<2)|3,{50,48,110}}, +/* 4139 */ {(16<<2)|3,{50,48,112}}, +/* 4140 */ {(16<<2)|3,{50,48,114}}, +/* 4141 */ {(16<<2)|3,{50,48,117}}, +/* 4142 */ {(10<<2)|2,{50,48,0}}, +/* 4143 */ {(10<<2)|2,{50,48,0}}, +/* 4144 */ {(10<<2)|2,{50,48,0}}, +/* 4145 */ {(10<<2)|2,{50,48,0}}, +/* 4146 */ {(10<<2)|2,{50,48,0}}, +/* 4147 */ {(10<<2)|2,{50,48,0}}, +/* 4148 */ {(10<<2)|2,{50,48,0}}, +/* 4149 */ {(10<<2)|2,{50,48,0}}, +/* 4150 */ {(10<<2)|2,{50,48,0}}, +/* 4151 */ {(10<<2)|2,{50,48,0}}, +/* 4152 */ {(10<<2)|2,{50,48,0}}, +/* 4153 */ {(10<<2)|2,{50,48,0}}, +/* 4154 */ {(10<<2)|2,{50,48,0}}, +/* 4155 */ {(10<<2)|2,{50,48,0}}, +/* 4156 */ {(10<<2)|2,{50,48,0}}, +/* 4157 */ {(10<<2)|2,{50,48,0}}, +/* 4158 */ {(10<<2)|2,{50,48,0}}, +/* 4159 */ {(10<<2)|2,{50,48,0}}, +/* 4160 */ {(15<<2)|3,{50,49,48}}, +/* 4161 */ {(15<<2)|3,{50,49,48}}, +/* 4162 */ {(15<<2)|3,{50,49,49}}, +/* 4163 */ {(15<<2)|3,{50,49,49}}, +/* 4164 */ {(15<<2)|3,{50,49,50}}, +/* 4165 */ {(15<<2)|3,{50,49,50}}, +/* 4166 */ {(15<<2)|3,{50,49,97}}, +/* 4167 */ {(15<<2)|3,{50,49,97}}, +/* 4168 */ {(15<<2)|3,{50,49,99}}, +/* 4169 */ {(15<<2)|3,{50,49,99}}, +/* 4170 */ {(15<<2)|3,{50,49,101}}, +/* 4171 */ {(15<<2)|3,{50,49,101}}, +/* 4172 */ {(15<<2)|3,{50,49,105}}, +/* 4173 */ {(15<<2)|3,{50,49,105}}, +/* 4174 */ {(15<<2)|3,{50,49,111}}, +/* 4175 */ {(15<<2)|3,{50,49,111}}, +/* 4176 */ {(15<<2)|3,{50,49,115}}, +/* 4177 */ {(15<<2)|3,{50,49,115}}, +/* 4178 */ {(15<<2)|3,{50,49,116}}, +/* 4179 */ {(15<<2)|3,{50,49,116}}, +/* 4180 */ {(16<<2)|3,{50,49,32}}, +/* 4181 */ {(16<<2)|3,{50,49,37}}, +/* 4182 */ {(16<<2)|3,{50,49,45}}, +/* 4183 */ {(16<<2)|3,{50,49,46}}, +/* 4184 */ {(16<<2)|3,{50,49,47}}, +/* 4185 */ {(16<<2)|3,{50,49,51}}, +/* 4186 */ {(16<<2)|3,{50,49,52}}, +/* 4187 */ {(16<<2)|3,{50,49,53}}, +/* 4188 */ {(16<<2)|3,{50,49,54}}, +/* 4189 */ {(16<<2)|3,{50,49,55}}, +/* 4190 */ {(16<<2)|3,{50,49,56}}, +/* 4191 */ {(16<<2)|3,{50,49,57}}, +/* 4192 */ {(16<<2)|3,{50,49,61}}, +/* 4193 */ {(16<<2)|3,{50,49,65}}, +/* 4194 */ {(16<<2)|3,{50,49,95}}, +/* 4195 */ {(16<<2)|3,{50,49,98}}, +/* 4196 */ {(16<<2)|3,{50,49,100}}, +/* 4197 */ {(16<<2)|3,{50,49,102}}, +/* 4198 */ {(16<<2)|3,{50,49,103}}, +/* 4199 */ {(16<<2)|3,{50,49,104}}, +/* 4200 */ {(16<<2)|3,{50,49,108}}, +/* 4201 */ {(16<<2)|3,{50,49,109}}, +/* 4202 */ {(16<<2)|3,{50,49,110}}, +/* 4203 */ {(16<<2)|3,{50,49,112}}, +/* 4204 */ {(16<<2)|3,{50,49,114}}, +/* 4205 */ {(16<<2)|3,{50,49,117}}, +/* 4206 */ {(10<<2)|2,{50,49,0}}, +/* 4207 */ {(10<<2)|2,{50,49,0}}, +/* 4208 */ {(10<<2)|2,{50,49,0}}, +/* 4209 */ {(10<<2)|2,{50,49,0}}, +/* 4210 */ {(10<<2)|2,{50,49,0}}, +/* 4211 */ {(10<<2)|2,{50,49,0}}, +/* 4212 */ {(10<<2)|2,{50,49,0}}, +/* 4213 */ {(10<<2)|2,{50,49,0}}, +/* 4214 */ {(10<<2)|2,{50,49,0}}, +/* 4215 */ {(10<<2)|2,{50,49,0}}, +/* 4216 */ {(10<<2)|2,{50,49,0}}, +/* 4217 */ {(10<<2)|2,{50,49,0}}, +/* 4218 */ {(10<<2)|2,{50,49,0}}, +/* 4219 */ {(10<<2)|2,{50,49,0}}, +/* 4220 */ {(10<<2)|2,{50,49,0}}, +/* 4221 */ {(10<<2)|2,{50,49,0}}, +/* 4222 */ {(10<<2)|2,{50,49,0}}, +/* 4223 */ {(10<<2)|2,{50,49,0}}, +/* 4224 */ {(15<<2)|3,{50,50,48}}, +/* 4225 */ {(15<<2)|3,{50,50,48}}, +/* 4226 */ {(15<<2)|3,{50,50,49}}, +/* 4227 */ {(15<<2)|3,{50,50,49}}, +/* 4228 */ {(15<<2)|3,{50,50,50}}, +/* 4229 */ {(15<<2)|3,{50,50,50}}, +/* 4230 */ {(15<<2)|3,{50,50,97}}, +/* 4231 */ {(15<<2)|3,{50,50,97}}, +/* 4232 */ {(15<<2)|3,{50,50,99}}, +/* 4233 */ {(15<<2)|3,{50,50,99}}, +/* 4234 */ {(15<<2)|3,{50,50,101}}, +/* 4235 */ {(15<<2)|3,{50,50,101}}, +/* 4236 */ {(15<<2)|3,{50,50,105}}, +/* 4237 */ {(15<<2)|3,{50,50,105}}, +/* 4238 */ {(15<<2)|3,{50,50,111}}, +/* 4239 */ {(15<<2)|3,{50,50,111}}, +/* 4240 */ {(15<<2)|3,{50,50,115}}, +/* 4241 */ {(15<<2)|3,{50,50,115}}, +/* 4242 */ {(15<<2)|3,{50,50,116}}, +/* 4243 */ {(15<<2)|3,{50,50,116}}, +/* 4244 */ {(16<<2)|3,{50,50,32}}, +/* 4245 */ {(16<<2)|3,{50,50,37}}, +/* 4246 */ {(16<<2)|3,{50,50,45}}, +/* 4247 */ {(16<<2)|3,{50,50,46}}, +/* 4248 */ {(16<<2)|3,{50,50,47}}, +/* 4249 */ {(16<<2)|3,{50,50,51}}, +/* 4250 */ {(16<<2)|3,{50,50,52}}, +/* 4251 */ {(16<<2)|3,{50,50,53}}, +/* 4252 */ {(16<<2)|3,{50,50,54}}, +/* 4253 */ {(16<<2)|3,{50,50,55}}, +/* 4254 */ {(16<<2)|3,{50,50,56}}, +/* 4255 */ {(16<<2)|3,{50,50,57}}, +/* 4256 */ {(16<<2)|3,{50,50,61}}, +/* 4257 */ {(16<<2)|3,{50,50,65}}, +/* 4258 */ {(16<<2)|3,{50,50,95}}, +/* 4259 */ {(16<<2)|3,{50,50,98}}, +/* 4260 */ {(16<<2)|3,{50,50,100}}, +/* 4261 */ {(16<<2)|3,{50,50,102}}, +/* 4262 */ {(16<<2)|3,{50,50,103}}, +/* 4263 */ {(16<<2)|3,{50,50,104}}, +/* 4264 */ {(16<<2)|3,{50,50,108}}, +/* 4265 */ {(16<<2)|3,{50,50,109}}, +/* 4266 */ {(16<<2)|3,{50,50,110}}, +/* 4267 */ {(16<<2)|3,{50,50,112}}, +/* 4268 */ {(16<<2)|3,{50,50,114}}, +/* 4269 */ {(16<<2)|3,{50,50,117}}, +/* 4270 */ {(10<<2)|2,{50,50,0}}, +/* 4271 */ {(10<<2)|2,{50,50,0}}, +/* 4272 */ {(10<<2)|2,{50,50,0}}, +/* 4273 */ {(10<<2)|2,{50,50,0}}, +/* 4274 */ {(10<<2)|2,{50,50,0}}, +/* 4275 */ {(10<<2)|2,{50,50,0}}, +/* 4276 */ {(10<<2)|2,{50,50,0}}, +/* 4277 */ {(10<<2)|2,{50,50,0}}, +/* 4278 */ {(10<<2)|2,{50,50,0}}, +/* 4279 */ {(10<<2)|2,{50,50,0}}, +/* 4280 */ {(10<<2)|2,{50,50,0}}, +/* 4281 */ {(10<<2)|2,{50,50,0}}, +/* 4282 */ {(10<<2)|2,{50,50,0}}, +/* 4283 */ {(10<<2)|2,{50,50,0}}, +/* 4284 */ {(10<<2)|2,{50,50,0}}, +/* 4285 */ {(10<<2)|2,{50,50,0}}, +/* 4286 */ {(10<<2)|2,{50,50,0}}, +/* 4287 */ {(10<<2)|2,{50,50,0}}, +/* 4288 */ {(15<<2)|3,{50,97,48}}, +/* 4289 */ {(15<<2)|3,{50,97,48}}, +/* 4290 */ {(15<<2)|3,{50,97,49}}, +/* 4291 */ {(15<<2)|3,{50,97,49}}, +/* 4292 */ {(15<<2)|3,{50,97,50}}, +/* 4293 */ {(15<<2)|3,{50,97,50}}, +/* 4294 */ {(15<<2)|3,{50,97,97}}, +/* 4295 */ {(15<<2)|3,{50,97,97}}, +/* 4296 */ {(15<<2)|3,{50,97,99}}, +/* 4297 */ {(15<<2)|3,{50,97,99}}, +/* 4298 */ {(15<<2)|3,{50,97,101}}, +/* 4299 */ {(15<<2)|3,{50,97,101}}, +/* 4300 */ {(15<<2)|3,{50,97,105}}, +/* 4301 */ {(15<<2)|3,{50,97,105}}, +/* 4302 */ {(15<<2)|3,{50,97,111}}, +/* 4303 */ {(15<<2)|3,{50,97,111}}, +/* 4304 */ {(15<<2)|3,{50,97,115}}, +/* 4305 */ {(15<<2)|3,{50,97,115}}, +/* 4306 */ {(15<<2)|3,{50,97,116}}, +/* 4307 */ {(15<<2)|3,{50,97,116}}, +/* 4308 */ {(16<<2)|3,{50,97,32}}, +/* 4309 */ {(16<<2)|3,{50,97,37}}, +/* 4310 */ {(16<<2)|3,{50,97,45}}, +/* 4311 */ {(16<<2)|3,{50,97,46}}, +/* 4312 */ {(16<<2)|3,{50,97,47}}, +/* 4313 */ {(16<<2)|3,{50,97,51}}, +/* 4314 */ {(16<<2)|3,{50,97,52}}, +/* 4315 */ {(16<<2)|3,{50,97,53}}, +/* 4316 */ {(16<<2)|3,{50,97,54}}, +/* 4317 */ {(16<<2)|3,{50,97,55}}, +/* 4318 */ {(16<<2)|3,{50,97,56}}, +/* 4319 */ {(16<<2)|3,{50,97,57}}, +/* 4320 */ {(16<<2)|3,{50,97,61}}, +/* 4321 */ {(16<<2)|3,{50,97,65}}, +/* 4322 */ {(16<<2)|3,{50,97,95}}, +/* 4323 */ {(16<<2)|3,{50,97,98}}, +/* 4324 */ {(16<<2)|3,{50,97,100}}, +/* 4325 */ {(16<<2)|3,{50,97,102}}, +/* 4326 */ {(16<<2)|3,{50,97,103}}, +/* 4327 */ {(16<<2)|3,{50,97,104}}, +/* 4328 */ {(16<<2)|3,{50,97,108}}, +/* 4329 */ {(16<<2)|3,{50,97,109}}, +/* 4330 */ {(16<<2)|3,{50,97,110}}, +/* 4331 */ {(16<<2)|3,{50,97,112}}, +/* 4332 */ {(16<<2)|3,{50,97,114}}, +/* 4333 */ {(16<<2)|3,{50,97,117}}, +/* 4334 */ {(10<<2)|2,{50,97,0}}, +/* 4335 */ {(10<<2)|2,{50,97,0}}, +/* 4336 */ {(10<<2)|2,{50,97,0}}, +/* 4337 */ {(10<<2)|2,{50,97,0}}, +/* 4338 */ {(10<<2)|2,{50,97,0}}, +/* 4339 */ {(10<<2)|2,{50,97,0}}, +/* 4340 */ {(10<<2)|2,{50,97,0}}, +/* 4341 */ {(10<<2)|2,{50,97,0}}, +/* 4342 */ {(10<<2)|2,{50,97,0}}, +/* 4343 */ {(10<<2)|2,{50,97,0}}, +/* 4344 */ {(10<<2)|2,{50,97,0}}, +/* 4345 */ {(10<<2)|2,{50,97,0}}, +/* 4346 */ {(10<<2)|2,{50,97,0}}, +/* 4347 */ {(10<<2)|2,{50,97,0}}, +/* 4348 */ {(10<<2)|2,{50,97,0}}, +/* 4349 */ {(10<<2)|2,{50,97,0}}, +/* 4350 */ {(10<<2)|2,{50,97,0}}, +/* 4351 */ {(10<<2)|2,{50,97,0}}, +/* 4352 */ {(15<<2)|3,{50,99,48}}, +/* 4353 */ {(15<<2)|3,{50,99,48}}, +/* 4354 */ {(15<<2)|3,{50,99,49}}, +/* 4355 */ {(15<<2)|3,{50,99,49}}, +/* 4356 */ {(15<<2)|3,{50,99,50}}, +/* 4357 */ {(15<<2)|3,{50,99,50}}, +/* 4358 */ {(15<<2)|3,{50,99,97}}, +/* 4359 */ {(15<<2)|3,{50,99,97}}, +/* 4360 */ {(15<<2)|3,{50,99,99}}, +/* 4361 */ {(15<<2)|3,{50,99,99}}, +/* 4362 */ {(15<<2)|3,{50,99,101}}, +/* 4363 */ {(15<<2)|3,{50,99,101}}, +/* 4364 */ {(15<<2)|3,{50,99,105}}, +/* 4365 */ {(15<<2)|3,{50,99,105}}, +/* 4366 */ {(15<<2)|3,{50,99,111}}, +/* 4367 */ {(15<<2)|3,{50,99,111}}, +/* 4368 */ {(15<<2)|3,{50,99,115}}, +/* 4369 */ {(15<<2)|3,{50,99,115}}, +/* 4370 */ {(15<<2)|3,{50,99,116}}, +/* 4371 */ {(15<<2)|3,{50,99,116}}, +/* 4372 */ {(16<<2)|3,{50,99,32}}, +/* 4373 */ {(16<<2)|3,{50,99,37}}, +/* 4374 */ {(16<<2)|3,{50,99,45}}, +/* 4375 */ {(16<<2)|3,{50,99,46}}, +/* 4376 */ {(16<<2)|3,{50,99,47}}, +/* 4377 */ {(16<<2)|3,{50,99,51}}, +/* 4378 */ {(16<<2)|3,{50,99,52}}, +/* 4379 */ {(16<<2)|3,{50,99,53}}, +/* 4380 */ {(16<<2)|3,{50,99,54}}, +/* 4381 */ {(16<<2)|3,{50,99,55}}, +/* 4382 */ {(16<<2)|3,{50,99,56}}, +/* 4383 */ {(16<<2)|3,{50,99,57}}, +/* 4384 */ {(16<<2)|3,{50,99,61}}, +/* 4385 */ {(16<<2)|3,{50,99,65}}, +/* 4386 */ {(16<<2)|3,{50,99,95}}, +/* 4387 */ {(16<<2)|3,{50,99,98}}, +/* 4388 */ {(16<<2)|3,{50,99,100}}, +/* 4389 */ {(16<<2)|3,{50,99,102}}, +/* 4390 */ {(16<<2)|3,{50,99,103}}, +/* 4391 */ {(16<<2)|3,{50,99,104}}, +/* 4392 */ {(16<<2)|3,{50,99,108}}, +/* 4393 */ {(16<<2)|3,{50,99,109}}, +/* 4394 */ {(16<<2)|3,{50,99,110}}, +/* 4395 */ {(16<<2)|3,{50,99,112}}, +/* 4396 */ {(16<<2)|3,{50,99,114}}, +/* 4397 */ {(16<<2)|3,{50,99,117}}, +/* 4398 */ {(10<<2)|2,{50,99,0}}, +/* 4399 */ {(10<<2)|2,{50,99,0}}, +/* 4400 */ {(10<<2)|2,{50,99,0}}, +/* 4401 */ {(10<<2)|2,{50,99,0}}, +/* 4402 */ {(10<<2)|2,{50,99,0}}, +/* 4403 */ {(10<<2)|2,{50,99,0}}, +/* 4404 */ {(10<<2)|2,{50,99,0}}, +/* 4405 */ {(10<<2)|2,{50,99,0}}, +/* 4406 */ {(10<<2)|2,{50,99,0}}, +/* 4407 */ {(10<<2)|2,{50,99,0}}, +/* 4408 */ {(10<<2)|2,{50,99,0}}, +/* 4409 */ {(10<<2)|2,{50,99,0}}, +/* 4410 */ {(10<<2)|2,{50,99,0}}, +/* 4411 */ {(10<<2)|2,{50,99,0}}, +/* 4412 */ {(10<<2)|2,{50,99,0}}, +/* 4413 */ {(10<<2)|2,{50,99,0}}, +/* 4414 */ {(10<<2)|2,{50,99,0}}, +/* 4415 */ {(10<<2)|2,{50,99,0}}, +/* 4416 */ {(15<<2)|3,{50,101,48}}, +/* 4417 */ {(15<<2)|3,{50,101,48}}, +/* 4418 */ {(15<<2)|3,{50,101,49}}, +/* 4419 */ {(15<<2)|3,{50,101,49}}, +/* 4420 */ {(15<<2)|3,{50,101,50}}, +/* 4421 */ {(15<<2)|3,{50,101,50}}, +/* 4422 */ {(15<<2)|3,{50,101,97}}, +/* 4423 */ {(15<<2)|3,{50,101,97}}, +/* 4424 */ {(15<<2)|3,{50,101,99}}, +/* 4425 */ {(15<<2)|3,{50,101,99}}, +/* 4426 */ {(15<<2)|3,{50,101,101}}, +/* 4427 */ {(15<<2)|3,{50,101,101}}, +/* 4428 */ {(15<<2)|3,{50,101,105}}, +/* 4429 */ {(15<<2)|3,{50,101,105}}, +/* 4430 */ {(15<<2)|3,{50,101,111}}, +/* 4431 */ {(15<<2)|3,{50,101,111}}, +/* 4432 */ {(15<<2)|3,{50,101,115}}, +/* 4433 */ {(15<<2)|3,{50,101,115}}, +/* 4434 */ {(15<<2)|3,{50,101,116}}, +/* 4435 */ {(15<<2)|3,{50,101,116}}, +/* 4436 */ {(16<<2)|3,{50,101,32}}, +/* 4437 */ {(16<<2)|3,{50,101,37}}, +/* 4438 */ {(16<<2)|3,{50,101,45}}, +/* 4439 */ {(16<<2)|3,{50,101,46}}, +/* 4440 */ {(16<<2)|3,{50,101,47}}, +/* 4441 */ {(16<<2)|3,{50,101,51}}, +/* 4442 */ {(16<<2)|3,{50,101,52}}, +/* 4443 */ {(16<<2)|3,{50,101,53}}, +/* 4444 */ {(16<<2)|3,{50,101,54}}, +/* 4445 */ {(16<<2)|3,{50,101,55}}, +/* 4446 */ {(16<<2)|3,{50,101,56}}, +/* 4447 */ {(16<<2)|3,{50,101,57}}, +/* 4448 */ {(16<<2)|3,{50,101,61}}, +/* 4449 */ {(16<<2)|3,{50,101,65}}, +/* 4450 */ {(16<<2)|3,{50,101,95}}, +/* 4451 */ {(16<<2)|3,{50,101,98}}, +/* 4452 */ {(16<<2)|3,{50,101,100}}, +/* 4453 */ {(16<<2)|3,{50,101,102}}, +/* 4454 */ {(16<<2)|3,{50,101,103}}, +/* 4455 */ {(16<<2)|3,{50,101,104}}, +/* 4456 */ {(16<<2)|3,{50,101,108}}, +/* 4457 */ {(16<<2)|3,{50,101,109}}, +/* 4458 */ {(16<<2)|3,{50,101,110}}, +/* 4459 */ {(16<<2)|3,{50,101,112}}, +/* 4460 */ {(16<<2)|3,{50,101,114}}, +/* 4461 */ {(16<<2)|3,{50,101,117}}, +/* 4462 */ {(10<<2)|2,{50,101,0}}, +/* 4463 */ {(10<<2)|2,{50,101,0}}, +/* 4464 */ {(10<<2)|2,{50,101,0}}, +/* 4465 */ {(10<<2)|2,{50,101,0}}, +/* 4466 */ {(10<<2)|2,{50,101,0}}, +/* 4467 */ {(10<<2)|2,{50,101,0}}, +/* 4468 */ {(10<<2)|2,{50,101,0}}, +/* 4469 */ {(10<<2)|2,{50,101,0}}, +/* 4470 */ {(10<<2)|2,{50,101,0}}, +/* 4471 */ {(10<<2)|2,{50,101,0}}, +/* 4472 */ {(10<<2)|2,{50,101,0}}, +/* 4473 */ {(10<<2)|2,{50,101,0}}, +/* 4474 */ {(10<<2)|2,{50,101,0}}, +/* 4475 */ {(10<<2)|2,{50,101,0}}, +/* 4476 */ {(10<<2)|2,{50,101,0}}, +/* 4477 */ {(10<<2)|2,{50,101,0}}, +/* 4478 */ {(10<<2)|2,{50,101,0}}, +/* 4479 */ {(10<<2)|2,{50,101,0}}, +/* 4480 */ {(15<<2)|3,{50,105,48}}, +/* 4481 */ {(15<<2)|3,{50,105,48}}, +/* 4482 */ {(15<<2)|3,{50,105,49}}, +/* 4483 */ {(15<<2)|3,{50,105,49}}, +/* 4484 */ {(15<<2)|3,{50,105,50}}, +/* 4485 */ {(15<<2)|3,{50,105,50}}, +/* 4486 */ {(15<<2)|3,{50,105,97}}, +/* 4487 */ {(15<<2)|3,{50,105,97}}, +/* 4488 */ {(15<<2)|3,{50,105,99}}, +/* 4489 */ {(15<<2)|3,{50,105,99}}, +/* 4490 */ {(15<<2)|3,{50,105,101}}, +/* 4491 */ {(15<<2)|3,{50,105,101}}, +/* 4492 */ {(15<<2)|3,{50,105,105}}, +/* 4493 */ {(15<<2)|3,{50,105,105}}, +/* 4494 */ {(15<<2)|3,{50,105,111}}, +/* 4495 */ {(15<<2)|3,{50,105,111}}, +/* 4496 */ {(15<<2)|3,{50,105,115}}, +/* 4497 */ {(15<<2)|3,{50,105,115}}, +/* 4498 */ {(15<<2)|3,{50,105,116}}, +/* 4499 */ {(15<<2)|3,{50,105,116}}, +/* 4500 */ {(16<<2)|3,{50,105,32}}, +/* 4501 */ {(16<<2)|3,{50,105,37}}, +/* 4502 */ {(16<<2)|3,{50,105,45}}, +/* 4503 */ {(16<<2)|3,{50,105,46}}, +/* 4504 */ {(16<<2)|3,{50,105,47}}, +/* 4505 */ {(16<<2)|3,{50,105,51}}, +/* 4506 */ {(16<<2)|3,{50,105,52}}, +/* 4507 */ {(16<<2)|3,{50,105,53}}, +/* 4508 */ {(16<<2)|3,{50,105,54}}, +/* 4509 */ {(16<<2)|3,{50,105,55}}, +/* 4510 */ {(16<<2)|3,{50,105,56}}, +/* 4511 */ {(16<<2)|3,{50,105,57}}, +/* 4512 */ {(16<<2)|3,{50,105,61}}, +/* 4513 */ {(16<<2)|3,{50,105,65}}, +/* 4514 */ {(16<<2)|3,{50,105,95}}, +/* 4515 */ {(16<<2)|3,{50,105,98}}, +/* 4516 */ {(16<<2)|3,{50,105,100}}, +/* 4517 */ {(16<<2)|3,{50,105,102}}, +/* 4518 */ {(16<<2)|3,{50,105,103}}, +/* 4519 */ {(16<<2)|3,{50,105,104}}, +/* 4520 */ {(16<<2)|3,{50,105,108}}, +/* 4521 */ {(16<<2)|3,{50,105,109}}, +/* 4522 */ {(16<<2)|3,{50,105,110}}, +/* 4523 */ {(16<<2)|3,{50,105,112}}, +/* 4524 */ {(16<<2)|3,{50,105,114}}, +/* 4525 */ {(16<<2)|3,{50,105,117}}, +/* 4526 */ {(10<<2)|2,{50,105,0}}, +/* 4527 */ {(10<<2)|2,{50,105,0}}, +/* 4528 */ {(10<<2)|2,{50,105,0}}, +/* 4529 */ {(10<<2)|2,{50,105,0}}, +/* 4530 */ {(10<<2)|2,{50,105,0}}, +/* 4531 */ {(10<<2)|2,{50,105,0}}, +/* 4532 */ {(10<<2)|2,{50,105,0}}, +/* 4533 */ {(10<<2)|2,{50,105,0}}, +/* 4534 */ {(10<<2)|2,{50,105,0}}, +/* 4535 */ {(10<<2)|2,{50,105,0}}, +/* 4536 */ {(10<<2)|2,{50,105,0}}, +/* 4537 */ {(10<<2)|2,{50,105,0}}, +/* 4538 */ {(10<<2)|2,{50,105,0}}, +/* 4539 */ {(10<<2)|2,{50,105,0}}, +/* 4540 */ {(10<<2)|2,{50,105,0}}, +/* 4541 */ {(10<<2)|2,{50,105,0}}, +/* 4542 */ {(10<<2)|2,{50,105,0}}, +/* 4543 */ {(10<<2)|2,{50,105,0}}, +/* 4544 */ {(15<<2)|3,{50,111,48}}, +/* 4545 */ {(15<<2)|3,{50,111,48}}, +/* 4546 */ {(15<<2)|3,{50,111,49}}, +/* 4547 */ {(15<<2)|3,{50,111,49}}, +/* 4548 */ {(15<<2)|3,{50,111,50}}, +/* 4549 */ {(15<<2)|3,{50,111,50}}, +/* 4550 */ {(15<<2)|3,{50,111,97}}, +/* 4551 */ {(15<<2)|3,{50,111,97}}, +/* 4552 */ {(15<<2)|3,{50,111,99}}, +/* 4553 */ {(15<<2)|3,{50,111,99}}, +/* 4554 */ {(15<<2)|3,{50,111,101}}, +/* 4555 */ {(15<<2)|3,{50,111,101}}, +/* 4556 */ {(15<<2)|3,{50,111,105}}, +/* 4557 */ {(15<<2)|3,{50,111,105}}, +/* 4558 */ {(15<<2)|3,{50,111,111}}, +/* 4559 */ {(15<<2)|3,{50,111,111}}, +/* 4560 */ {(15<<2)|3,{50,111,115}}, +/* 4561 */ {(15<<2)|3,{50,111,115}}, +/* 4562 */ {(15<<2)|3,{50,111,116}}, +/* 4563 */ {(15<<2)|3,{50,111,116}}, +/* 4564 */ {(16<<2)|3,{50,111,32}}, +/* 4565 */ {(16<<2)|3,{50,111,37}}, +/* 4566 */ {(16<<2)|3,{50,111,45}}, +/* 4567 */ {(16<<2)|3,{50,111,46}}, +/* 4568 */ {(16<<2)|3,{50,111,47}}, +/* 4569 */ {(16<<2)|3,{50,111,51}}, +/* 4570 */ {(16<<2)|3,{50,111,52}}, +/* 4571 */ {(16<<2)|3,{50,111,53}}, +/* 4572 */ {(16<<2)|3,{50,111,54}}, +/* 4573 */ {(16<<2)|3,{50,111,55}}, +/* 4574 */ {(16<<2)|3,{50,111,56}}, +/* 4575 */ {(16<<2)|3,{50,111,57}}, +/* 4576 */ {(16<<2)|3,{50,111,61}}, +/* 4577 */ {(16<<2)|3,{50,111,65}}, +/* 4578 */ {(16<<2)|3,{50,111,95}}, +/* 4579 */ {(16<<2)|3,{50,111,98}}, +/* 4580 */ {(16<<2)|3,{50,111,100}}, +/* 4581 */ {(16<<2)|3,{50,111,102}}, +/* 4582 */ {(16<<2)|3,{50,111,103}}, +/* 4583 */ {(16<<2)|3,{50,111,104}}, +/* 4584 */ {(16<<2)|3,{50,111,108}}, +/* 4585 */ {(16<<2)|3,{50,111,109}}, +/* 4586 */ {(16<<2)|3,{50,111,110}}, +/* 4587 */ {(16<<2)|3,{50,111,112}}, +/* 4588 */ {(16<<2)|3,{50,111,114}}, +/* 4589 */ {(16<<2)|3,{50,111,117}}, +/* 4590 */ {(10<<2)|2,{50,111,0}}, +/* 4591 */ {(10<<2)|2,{50,111,0}}, +/* 4592 */ {(10<<2)|2,{50,111,0}}, +/* 4593 */ {(10<<2)|2,{50,111,0}}, +/* 4594 */ {(10<<2)|2,{50,111,0}}, +/* 4595 */ {(10<<2)|2,{50,111,0}}, +/* 4596 */ {(10<<2)|2,{50,111,0}}, +/* 4597 */ {(10<<2)|2,{50,111,0}}, +/* 4598 */ {(10<<2)|2,{50,111,0}}, +/* 4599 */ {(10<<2)|2,{50,111,0}}, +/* 4600 */ {(10<<2)|2,{50,111,0}}, +/* 4601 */ {(10<<2)|2,{50,111,0}}, +/* 4602 */ {(10<<2)|2,{50,111,0}}, +/* 4603 */ {(10<<2)|2,{50,111,0}}, +/* 4604 */ {(10<<2)|2,{50,111,0}}, +/* 4605 */ {(10<<2)|2,{50,111,0}}, +/* 4606 */ {(10<<2)|2,{50,111,0}}, +/* 4607 */ {(10<<2)|2,{50,111,0}}, +/* 4608 */ {(15<<2)|3,{50,115,48}}, +/* 4609 */ {(15<<2)|3,{50,115,48}}, +/* 4610 */ {(15<<2)|3,{50,115,49}}, +/* 4611 */ {(15<<2)|3,{50,115,49}}, +/* 4612 */ {(15<<2)|3,{50,115,50}}, +/* 4613 */ {(15<<2)|3,{50,115,50}}, +/* 4614 */ {(15<<2)|3,{50,115,97}}, +/* 4615 */ {(15<<2)|3,{50,115,97}}, +/* 4616 */ {(15<<2)|3,{50,115,99}}, +/* 4617 */ {(15<<2)|3,{50,115,99}}, +/* 4618 */ {(15<<2)|3,{50,115,101}}, +/* 4619 */ {(15<<2)|3,{50,115,101}}, +/* 4620 */ {(15<<2)|3,{50,115,105}}, +/* 4621 */ {(15<<2)|3,{50,115,105}}, +/* 4622 */ {(15<<2)|3,{50,115,111}}, +/* 4623 */ {(15<<2)|3,{50,115,111}}, +/* 4624 */ {(15<<2)|3,{50,115,115}}, +/* 4625 */ {(15<<2)|3,{50,115,115}}, +/* 4626 */ {(15<<2)|3,{50,115,116}}, +/* 4627 */ {(15<<2)|3,{50,115,116}}, +/* 4628 */ {(16<<2)|3,{50,115,32}}, +/* 4629 */ {(16<<2)|3,{50,115,37}}, +/* 4630 */ {(16<<2)|3,{50,115,45}}, +/* 4631 */ {(16<<2)|3,{50,115,46}}, +/* 4632 */ {(16<<2)|3,{50,115,47}}, +/* 4633 */ {(16<<2)|3,{50,115,51}}, +/* 4634 */ {(16<<2)|3,{50,115,52}}, +/* 4635 */ {(16<<2)|3,{50,115,53}}, +/* 4636 */ {(16<<2)|3,{50,115,54}}, +/* 4637 */ {(16<<2)|3,{50,115,55}}, +/* 4638 */ {(16<<2)|3,{50,115,56}}, +/* 4639 */ {(16<<2)|3,{50,115,57}}, +/* 4640 */ {(16<<2)|3,{50,115,61}}, +/* 4641 */ {(16<<2)|3,{50,115,65}}, +/* 4642 */ {(16<<2)|3,{50,115,95}}, +/* 4643 */ {(16<<2)|3,{50,115,98}}, +/* 4644 */ {(16<<2)|3,{50,115,100}}, +/* 4645 */ {(16<<2)|3,{50,115,102}}, +/* 4646 */ {(16<<2)|3,{50,115,103}}, +/* 4647 */ {(16<<2)|3,{50,115,104}}, +/* 4648 */ {(16<<2)|3,{50,115,108}}, +/* 4649 */ {(16<<2)|3,{50,115,109}}, +/* 4650 */ {(16<<2)|3,{50,115,110}}, +/* 4651 */ {(16<<2)|3,{50,115,112}}, +/* 4652 */ {(16<<2)|3,{50,115,114}}, +/* 4653 */ {(16<<2)|3,{50,115,117}}, +/* 4654 */ {(10<<2)|2,{50,115,0}}, +/* 4655 */ {(10<<2)|2,{50,115,0}}, +/* 4656 */ {(10<<2)|2,{50,115,0}}, +/* 4657 */ {(10<<2)|2,{50,115,0}}, +/* 4658 */ {(10<<2)|2,{50,115,0}}, +/* 4659 */ {(10<<2)|2,{50,115,0}}, +/* 4660 */ {(10<<2)|2,{50,115,0}}, +/* 4661 */ {(10<<2)|2,{50,115,0}}, +/* 4662 */ {(10<<2)|2,{50,115,0}}, +/* 4663 */ {(10<<2)|2,{50,115,0}}, +/* 4664 */ {(10<<2)|2,{50,115,0}}, +/* 4665 */ {(10<<2)|2,{50,115,0}}, +/* 4666 */ {(10<<2)|2,{50,115,0}}, +/* 4667 */ {(10<<2)|2,{50,115,0}}, +/* 4668 */ {(10<<2)|2,{50,115,0}}, +/* 4669 */ {(10<<2)|2,{50,115,0}}, +/* 4670 */ {(10<<2)|2,{50,115,0}}, +/* 4671 */ {(10<<2)|2,{50,115,0}}, +/* 4672 */ {(15<<2)|3,{50,116,48}}, +/* 4673 */ {(15<<2)|3,{50,116,48}}, +/* 4674 */ {(15<<2)|3,{50,116,49}}, +/* 4675 */ {(15<<2)|3,{50,116,49}}, +/* 4676 */ {(15<<2)|3,{50,116,50}}, +/* 4677 */ {(15<<2)|3,{50,116,50}}, +/* 4678 */ {(15<<2)|3,{50,116,97}}, +/* 4679 */ {(15<<2)|3,{50,116,97}}, +/* 4680 */ {(15<<2)|3,{50,116,99}}, +/* 4681 */ {(15<<2)|3,{50,116,99}}, +/* 4682 */ {(15<<2)|3,{50,116,101}}, +/* 4683 */ {(15<<2)|3,{50,116,101}}, +/* 4684 */ {(15<<2)|3,{50,116,105}}, +/* 4685 */ {(15<<2)|3,{50,116,105}}, +/* 4686 */ {(15<<2)|3,{50,116,111}}, +/* 4687 */ {(15<<2)|3,{50,116,111}}, +/* 4688 */ {(15<<2)|3,{50,116,115}}, +/* 4689 */ {(15<<2)|3,{50,116,115}}, +/* 4690 */ {(15<<2)|3,{50,116,116}}, +/* 4691 */ {(15<<2)|3,{50,116,116}}, +/* 4692 */ {(16<<2)|3,{50,116,32}}, +/* 4693 */ {(16<<2)|3,{50,116,37}}, +/* 4694 */ {(16<<2)|3,{50,116,45}}, +/* 4695 */ {(16<<2)|3,{50,116,46}}, +/* 4696 */ {(16<<2)|3,{50,116,47}}, +/* 4697 */ {(16<<2)|3,{50,116,51}}, +/* 4698 */ {(16<<2)|3,{50,116,52}}, +/* 4699 */ {(16<<2)|3,{50,116,53}}, +/* 4700 */ {(16<<2)|3,{50,116,54}}, +/* 4701 */ {(16<<2)|3,{50,116,55}}, +/* 4702 */ {(16<<2)|3,{50,116,56}}, +/* 4703 */ {(16<<2)|3,{50,116,57}}, +/* 4704 */ {(16<<2)|3,{50,116,61}}, +/* 4705 */ {(16<<2)|3,{50,116,65}}, +/* 4706 */ {(16<<2)|3,{50,116,95}}, +/* 4707 */ {(16<<2)|3,{50,116,98}}, +/* 4708 */ {(16<<2)|3,{50,116,100}}, +/* 4709 */ {(16<<2)|3,{50,116,102}}, +/* 4710 */ {(16<<2)|3,{50,116,103}}, +/* 4711 */ {(16<<2)|3,{50,116,104}}, +/* 4712 */ {(16<<2)|3,{50,116,108}}, +/* 4713 */ {(16<<2)|3,{50,116,109}}, +/* 4714 */ {(16<<2)|3,{50,116,110}}, +/* 4715 */ {(16<<2)|3,{50,116,112}}, +/* 4716 */ {(16<<2)|3,{50,116,114}}, +/* 4717 */ {(16<<2)|3,{50,116,117}}, +/* 4718 */ {(10<<2)|2,{50,116,0}}, +/* 4719 */ {(10<<2)|2,{50,116,0}}, +/* 4720 */ {(10<<2)|2,{50,116,0}}, +/* 4721 */ {(10<<2)|2,{50,116,0}}, +/* 4722 */ {(10<<2)|2,{50,116,0}}, +/* 4723 */ {(10<<2)|2,{50,116,0}}, +/* 4724 */ {(10<<2)|2,{50,116,0}}, +/* 4725 */ {(10<<2)|2,{50,116,0}}, +/* 4726 */ {(10<<2)|2,{50,116,0}}, +/* 4727 */ {(10<<2)|2,{50,116,0}}, +/* 4728 */ {(10<<2)|2,{50,116,0}}, +/* 4729 */ {(10<<2)|2,{50,116,0}}, +/* 4730 */ {(10<<2)|2,{50,116,0}}, +/* 4731 */ {(10<<2)|2,{50,116,0}}, +/* 4732 */ {(10<<2)|2,{50,116,0}}, +/* 4733 */ {(10<<2)|2,{50,116,0}}, +/* 4734 */ {(10<<2)|2,{50,116,0}}, +/* 4735 */ {(10<<2)|2,{50,116,0}}, +/* 4736 */ {(16<<2)|3,{50,32,48}}, +/* 4737 */ {(16<<2)|3,{50,32,49}}, +/* 4738 */ {(16<<2)|3,{50,32,50}}, +/* 4739 */ {(16<<2)|3,{50,32,97}}, +/* 4740 */ {(16<<2)|3,{50,32,99}}, +/* 4741 */ {(16<<2)|3,{50,32,101}}, +/* 4742 */ {(16<<2)|3,{50,32,105}}, +/* 4743 */ {(16<<2)|3,{50,32,111}}, +/* 4744 */ {(16<<2)|3,{50,32,115}}, +/* 4745 */ {(16<<2)|3,{50,32,116}}, +/* 4746 */ {(11<<2)|2,{50,32,0}}, +/* 4747 */ {(11<<2)|2,{50,32,0}}, +/* 4748 */ {(11<<2)|2,{50,32,0}}, +/* 4749 */ {(11<<2)|2,{50,32,0}}, +/* 4750 */ {(11<<2)|2,{50,32,0}}, +/* 4751 */ {(11<<2)|2,{50,32,0}}, +/* 4752 */ {(11<<2)|2,{50,32,0}}, +/* 4753 */ {(11<<2)|2,{50,32,0}}, +/* 4754 */ {(11<<2)|2,{50,32,0}}, +/* 4755 */ {(11<<2)|2,{50,32,0}}, +/* 4756 */ {(11<<2)|2,{50,32,0}}, +/* 4757 */ {(11<<2)|2,{50,32,0}}, +/* 4758 */ {(11<<2)|2,{50,32,0}}, +/* 4759 */ {(11<<2)|2,{50,32,0}}, +/* 4760 */ {(11<<2)|2,{50,32,0}}, +/* 4761 */ {(11<<2)|2,{50,32,0}}, +/* 4762 */ {(11<<2)|2,{50,32,0}}, +/* 4763 */ {(11<<2)|2,{50,32,0}}, +/* 4764 */ {(11<<2)|2,{50,32,0}}, +/* 4765 */ {(11<<2)|2,{50,32,0}}, +/* 4766 */ {(11<<2)|2,{50,32,0}}, +/* 4767 */ {(11<<2)|2,{50,32,0}}, +/* 4768 */ {(16<<2)|3,{50,37,48}}, +/* 4769 */ {(16<<2)|3,{50,37,49}}, +/* 4770 */ {(16<<2)|3,{50,37,50}}, +/* 4771 */ {(16<<2)|3,{50,37,97}}, +/* 4772 */ {(16<<2)|3,{50,37,99}}, +/* 4773 */ {(16<<2)|3,{50,37,101}}, +/* 4774 */ {(16<<2)|3,{50,37,105}}, +/* 4775 */ {(16<<2)|3,{50,37,111}}, +/* 4776 */ {(16<<2)|3,{50,37,115}}, +/* 4777 */ {(16<<2)|3,{50,37,116}}, +/* 4778 */ {(11<<2)|2,{50,37,0}}, +/* 4779 */ {(11<<2)|2,{50,37,0}}, +/* 4780 */ {(11<<2)|2,{50,37,0}}, +/* 4781 */ {(11<<2)|2,{50,37,0}}, +/* 4782 */ {(11<<2)|2,{50,37,0}}, +/* 4783 */ {(11<<2)|2,{50,37,0}}, +/* 4784 */ {(11<<2)|2,{50,37,0}}, +/* 4785 */ {(11<<2)|2,{50,37,0}}, +/* 4786 */ {(11<<2)|2,{50,37,0}}, +/* 4787 */ {(11<<2)|2,{50,37,0}}, +/* 4788 */ {(11<<2)|2,{50,37,0}}, +/* 4789 */ {(11<<2)|2,{50,37,0}}, +/* 4790 */ {(11<<2)|2,{50,37,0}}, +/* 4791 */ {(11<<2)|2,{50,37,0}}, +/* 4792 */ {(11<<2)|2,{50,37,0}}, +/* 4793 */ {(11<<2)|2,{50,37,0}}, +/* 4794 */ {(11<<2)|2,{50,37,0}}, +/* 4795 */ {(11<<2)|2,{50,37,0}}, +/* 4796 */ {(11<<2)|2,{50,37,0}}, +/* 4797 */ {(11<<2)|2,{50,37,0}}, +/* 4798 */ {(11<<2)|2,{50,37,0}}, +/* 4799 */ {(11<<2)|2,{50,37,0}}, +/* 4800 */ {(16<<2)|3,{50,45,48}}, +/* 4801 */ {(16<<2)|3,{50,45,49}}, +/* 4802 */ {(16<<2)|3,{50,45,50}}, +/* 4803 */ {(16<<2)|3,{50,45,97}}, +/* 4804 */ {(16<<2)|3,{50,45,99}}, +/* 4805 */ {(16<<2)|3,{50,45,101}}, +/* 4806 */ {(16<<2)|3,{50,45,105}}, +/* 4807 */ {(16<<2)|3,{50,45,111}}, +/* 4808 */ {(16<<2)|3,{50,45,115}}, +/* 4809 */ {(16<<2)|3,{50,45,116}}, +/* 4810 */ {(11<<2)|2,{50,45,0}}, +/* 4811 */ {(11<<2)|2,{50,45,0}}, +/* 4812 */ {(11<<2)|2,{50,45,0}}, +/* 4813 */ {(11<<2)|2,{50,45,0}}, +/* 4814 */ {(11<<2)|2,{50,45,0}}, +/* 4815 */ {(11<<2)|2,{50,45,0}}, +/* 4816 */ {(11<<2)|2,{50,45,0}}, +/* 4817 */ {(11<<2)|2,{50,45,0}}, +/* 4818 */ {(11<<2)|2,{50,45,0}}, +/* 4819 */ {(11<<2)|2,{50,45,0}}, +/* 4820 */ {(11<<2)|2,{50,45,0}}, +/* 4821 */ {(11<<2)|2,{50,45,0}}, +/* 4822 */ {(11<<2)|2,{50,45,0}}, +/* 4823 */ {(11<<2)|2,{50,45,0}}, +/* 4824 */ {(11<<2)|2,{50,45,0}}, +/* 4825 */ {(11<<2)|2,{50,45,0}}, +/* 4826 */ {(11<<2)|2,{50,45,0}}, +/* 4827 */ {(11<<2)|2,{50,45,0}}, +/* 4828 */ {(11<<2)|2,{50,45,0}}, +/* 4829 */ {(11<<2)|2,{50,45,0}}, +/* 4830 */ {(11<<2)|2,{50,45,0}}, +/* 4831 */ {(11<<2)|2,{50,45,0}}, +/* 4832 */ {(16<<2)|3,{50,46,48}}, +/* 4833 */ {(16<<2)|3,{50,46,49}}, +/* 4834 */ {(16<<2)|3,{50,46,50}}, +/* 4835 */ {(16<<2)|3,{50,46,97}}, +/* 4836 */ {(16<<2)|3,{50,46,99}}, +/* 4837 */ {(16<<2)|3,{50,46,101}}, +/* 4838 */ {(16<<2)|3,{50,46,105}}, +/* 4839 */ {(16<<2)|3,{50,46,111}}, +/* 4840 */ {(16<<2)|3,{50,46,115}}, +/* 4841 */ {(16<<2)|3,{50,46,116}}, +/* 4842 */ {(11<<2)|2,{50,46,0}}, +/* 4843 */ {(11<<2)|2,{50,46,0}}, +/* 4844 */ {(11<<2)|2,{50,46,0}}, +/* 4845 */ {(11<<2)|2,{50,46,0}}, +/* 4846 */ {(11<<2)|2,{50,46,0}}, +/* 4847 */ {(11<<2)|2,{50,46,0}}, +/* 4848 */ {(11<<2)|2,{50,46,0}}, +/* 4849 */ {(11<<2)|2,{50,46,0}}, +/* 4850 */ {(11<<2)|2,{50,46,0}}, +/* 4851 */ {(11<<2)|2,{50,46,0}}, +/* 4852 */ {(11<<2)|2,{50,46,0}}, +/* 4853 */ {(11<<2)|2,{50,46,0}}, +/* 4854 */ {(11<<2)|2,{50,46,0}}, +/* 4855 */ {(11<<2)|2,{50,46,0}}, +/* 4856 */ {(11<<2)|2,{50,46,0}}, +/* 4857 */ {(11<<2)|2,{50,46,0}}, +/* 4858 */ {(11<<2)|2,{50,46,0}}, +/* 4859 */ {(11<<2)|2,{50,46,0}}, +/* 4860 */ {(11<<2)|2,{50,46,0}}, +/* 4861 */ {(11<<2)|2,{50,46,0}}, +/* 4862 */ {(11<<2)|2,{50,46,0}}, +/* 4863 */ {(11<<2)|2,{50,46,0}}, +/* 4864 */ {(16<<2)|3,{50,47,48}}, +/* 4865 */ {(16<<2)|3,{50,47,49}}, +/* 4866 */ {(16<<2)|3,{50,47,50}}, +/* 4867 */ {(16<<2)|3,{50,47,97}}, +/* 4868 */ {(16<<2)|3,{50,47,99}}, +/* 4869 */ {(16<<2)|3,{50,47,101}}, +/* 4870 */ {(16<<2)|3,{50,47,105}}, +/* 4871 */ {(16<<2)|3,{50,47,111}}, +/* 4872 */ {(16<<2)|3,{50,47,115}}, +/* 4873 */ {(16<<2)|3,{50,47,116}}, +/* 4874 */ {(11<<2)|2,{50,47,0}}, +/* 4875 */ {(11<<2)|2,{50,47,0}}, +/* 4876 */ {(11<<2)|2,{50,47,0}}, +/* 4877 */ {(11<<2)|2,{50,47,0}}, +/* 4878 */ {(11<<2)|2,{50,47,0}}, +/* 4879 */ {(11<<2)|2,{50,47,0}}, +/* 4880 */ {(11<<2)|2,{50,47,0}}, +/* 4881 */ {(11<<2)|2,{50,47,0}}, +/* 4882 */ {(11<<2)|2,{50,47,0}}, +/* 4883 */ {(11<<2)|2,{50,47,0}}, +/* 4884 */ {(11<<2)|2,{50,47,0}}, +/* 4885 */ {(11<<2)|2,{50,47,0}}, +/* 4886 */ {(11<<2)|2,{50,47,0}}, +/* 4887 */ {(11<<2)|2,{50,47,0}}, +/* 4888 */ {(11<<2)|2,{50,47,0}}, +/* 4889 */ {(11<<2)|2,{50,47,0}}, +/* 4890 */ {(11<<2)|2,{50,47,0}}, +/* 4891 */ {(11<<2)|2,{50,47,0}}, +/* 4892 */ {(11<<2)|2,{50,47,0}}, +/* 4893 */ {(11<<2)|2,{50,47,0}}, +/* 4894 */ {(11<<2)|2,{50,47,0}}, +/* 4895 */ {(11<<2)|2,{50,47,0}}, +/* 4896 */ {(16<<2)|3,{50,51,48}}, +/* 4897 */ {(16<<2)|3,{50,51,49}}, +/* 4898 */ {(16<<2)|3,{50,51,50}}, +/* 4899 */ {(16<<2)|3,{50,51,97}}, +/* 4900 */ {(16<<2)|3,{50,51,99}}, +/* 4901 */ {(16<<2)|3,{50,51,101}}, +/* 4902 */ {(16<<2)|3,{50,51,105}}, +/* 4903 */ {(16<<2)|3,{50,51,111}}, +/* 4904 */ {(16<<2)|3,{50,51,115}}, +/* 4905 */ {(16<<2)|3,{50,51,116}}, +/* 4906 */ {(11<<2)|2,{50,51,0}}, +/* 4907 */ {(11<<2)|2,{50,51,0}}, +/* 4908 */ {(11<<2)|2,{50,51,0}}, +/* 4909 */ {(11<<2)|2,{50,51,0}}, +/* 4910 */ {(11<<2)|2,{50,51,0}}, +/* 4911 */ {(11<<2)|2,{50,51,0}}, +/* 4912 */ {(11<<2)|2,{50,51,0}}, +/* 4913 */ {(11<<2)|2,{50,51,0}}, +/* 4914 */ {(11<<2)|2,{50,51,0}}, +/* 4915 */ {(11<<2)|2,{50,51,0}}, +/* 4916 */ {(11<<2)|2,{50,51,0}}, +/* 4917 */ {(11<<2)|2,{50,51,0}}, +/* 4918 */ {(11<<2)|2,{50,51,0}}, +/* 4919 */ {(11<<2)|2,{50,51,0}}, +/* 4920 */ {(11<<2)|2,{50,51,0}}, +/* 4921 */ {(11<<2)|2,{50,51,0}}, +/* 4922 */ {(11<<2)|2,{50,51,0}}, +/* 4923 */ {(11<<2)|2,{50,51,0}}, +/* 4924 */ {(11<<2)|2,{50,51,0}}, +/* 4925 */ {(11<<2)|2,{50,51,0}}, +/* 4926 */ {(11<<2)|2,{50,51,0}}, +/* 4927 */ {(11<<2)|2,{50,51,0}}, +/* 4928 */ {(16<<2)|3,{50,52,48}}, +/* 4929 */ {(16<<2)|3,{50,52,49}}, +/* 4930 */ {(16<<2)|3,{50,52,50}}, +/* 4931 */ {(16<<2)|3,{50,52,97}}, +/* 4932 */ {(16<<2)|3,{50,52,99}}, +/* 4933 */ {(16<<2)|3,{50,52,101}}, +/* 4934 */ {(16<<2)|3,{50,52,105}}, +/* 4935 */ {(16<<2)|3,{50,52,111}}, +/* 4936 */ {(16<<2)|3,{50,52,115}}, +/* 4937 */ {(16<<2)|3,{50,52,116}}, +/* 4938 */ {(11<<2)|2,{50,52,0}}, +/* 4939 */ {(11<<2)|2,{50,52,0}}, +/* 4940 */ {(11<<2)|2,{50,52,0}}, +/* 4941 */ {(11<<2)|2,{50,52,0}}, +/* 4942 */ {(11<<2)|2,{50,52,0}}, +/* 4943 */ {(11<<2)|2,{50,52,0}}, +/* 4944 */ {(11<<2)|2,{50,52,0}}, +/* 4945 */ {(11<<2)|2,{50,52,0}}, +/* 4946 */ {(11<<2)|2,{50,52,0}}, +/* 4947 */ {(11<<2)|2,{50,52,0}}, +/* 4948 */ {(11<<2)|2,{50,52,0}}, +/* 4949 */ {(11<<2)|2,{50,52,0}}, +/* 4950 */ {(11<<2)|2,{50,52,0}}, +/* 4951 */ {(11<<2)|2,{50,52,0}}, +/* 4952 */ {(11<<2)|2,{50,52,0}}, +/* 4953 */ {(11<<2)|2,{50,52,0}}, +/* 4954 */ {(11<<2)|2,{50,52,0}}, +/* 4955 */ {(11<<2)|2,{50,52,0}}, +/* 4956 */ {(11<<2)|2,{50,52,0}}, +/* 4957 */ {(11<<2)|2,{50,52,0}}, +/* 4958 */ {(11<<2)|2,{50,52,0}}, +/* 4959 */ {(11<<2)|2,{50,52,0}}, +/* 4960 */ {(16<<2)|3,{50,53,48}}, +/* 4961 */ {(16<<2)|3,{50,53,49}}, +/* 4962 */ {(16<<2)|3,{50,53,50}}, +/* 4963 */ {(16<<2)|3,{50,53,97}}, +/* 4964 */ {(16<<2)|3,{50,53,99}}, +/* 4965 */ {(16<<2)|3,{50,53,101}}, +/* 4966 */ {(16<<2)|3,{50,53,105}}, +/* 4967 */ {(16<<2)|3,{50,53,111}}, +/* 4968 */ {(16<<2)|3,{50,53,115}}, +/* 4969 */ {(16<<2)|3,{50,53,116}}, +/* 4970 */ {(11<<2)|2,{50,53,0}}, +/* 4971 */ {(11<<2)|2,{50,53,0}}, +/* 4972 */ {(11<<2)|2,{50,53,0}}, +/* 4973 */ {(11<<2)|2,{50,53,0}}, +/* 4974 */ {(11<<2)|2,{50,53,0}}, +/* 4975 */ {(11<<2)|2,{50,53,0}}, +/* 4976 */ {(11<<2)|2,{50,53,0}}, +/* 4977 */ {(11<<2)|2,{50,53,0}}, +/* 4978 */ {(11<<2)|2,{50,53,0}}, +/* 4979 */ {(11<<2)|2,{50,53,0}}, +/* 4980 */ {(11<<2)|2,{50,53,0}}, +/* 4981 */ {(11<<2)|2,{50,53,0}}, +/* 4982 */ {(11<<2)|2,{50,53,0}}, +/* 4983 */ {(11<<2)|2,{50,53,0}}, +/* 4984 */ {(11<<2)|2,{50,53,0}}, +/* 4985 */ {(11<<2)|2,{50,53,0}}, +/* 4986 */ {(11<<2)|2,{50,53,0}}, +/* 4987 */ {(11<<2)|2,{50,53,0}}, +/* 4988 */ {(11<<2)|2,{50,53,0}}, +/* 4989 */ {(11<<2)|2,{50,53,0}}, +/* 4990 */ {(11<<2)|2,{50,53,0}}, +/* 4991 */ {(11<<2)|2,{50,53,0}}, +/* 4992 */ {(16<<2)|3,{50,54,48}}, +/* 4993 */ {(16<<2)|3,{50,54,49}}, +/* 4994 */ {(16<<2)|3,{50,54,50}}, +/* 4995 */ {(16<<2)|3,{50,54,97}}, +/* 4996 */ {(16<<2)|3,{50,54,99}}, +/* 4997 */ {(16<<2)|3,{50,54,101}}, +/* 4998 */ {(16<<2)|3,{50,54,105}}, +/* 4999 */ {(16<<2)|3,{50,54,111}}, +/* 5000 */ {(16<<2)|3,{50,54,115}}, +/* 5001 */ {(16<<2)|3,{50,54,116}}, +/* 5002 */ {(11<<2)|2,{50,54,0}}, +/* 5003 */ {(11<<2)|2,{50,54,0}}, +/* 5004 */ {(11<<2)|2,{50,54,0}}, +/* 5005 */ {(11<<2)|2,{50,54,0}}, +/* 5006 */ {(11<<2)|2,{50,54,0}}, +/* 5007 */ {(11<<2)|2,{50,54,0}}, +/* 5008 */ {(11<<2)|2,{50,54,0}}, +/* 5009 */ {(11<<2)|2,{50,54,0}}, +/* 5010 */ {(11<<2)|2,{50,54,0}}, +/* 5011 */ {(11<<2)|2,{50,54,0}}, +/* 5012 */ {(11<<2)|2,{50,54,0}}, +/* 5013 */ {(11<<2)|2,{50,54,0}}, +/* 5014 */ {(11<<2)|2,{50,54,0}}, +/* 5015 */ {(11<<2)|2,{50,54,0}}, +/* 5016 */ {(11<<2)|2,{50,54,0}}, +/* 5017 */ {(11<<2)|2,{50,54,0}}, +/* 5018 */ {(11<<2)|2,{50,54,0}}, +/* 5019 */ {(11<<2)|2,{50,54,0}}, +/* 5020 */ {(11<<2)|2,{50,54,0}}, +/* 5021 */ {(11<<2)|2,{50,54,0}}, +/* 5022 */ {(11<<2)|2,{50,54,0}}, +/* 5023 */ {(11<<2)|2,{50,54,0}}, +/* 5024 */ {(16<<2)|3,{50,55,48}}, +/* 5025 */ {(16<<2)|3,{50,55,49}}, +/* 5026 */ {(16<<2)|3,{50,55,50}}, +/* 5027 */ {(16<<2)|3,{50,55,97}}, +/* 5028 */ {(16<<2)|3,{50,55,99}}, +/* 5029 */ {(16<<2)|3,{50,55,101}}, +/* 5030 */ {(16<<2)|3,{50,55,105}}, +/* 5031 */ {(16<<2)|3,{50,55,111}}, +/* 5032 */ {(16<<2)|3,{50,55,115}}, +/* 5033 */ {(16<<2)|3,{50,55,116}}, +/* 5034 */ {(11<<2)|2,{50,55,0}}, +/* 5035 */ {(11<<2)|2,{50,55,0}}, +/* 5036 */ {(11<<2)|2,{50,55,0}}, +/* 5037 */ {(11<<2)|2,{50,55,0}}, +/* 5038 */ {(11<<2)|2,{50,55,0}}, +/* 5039 */ {(11<<2)|2,{50,55,0}}, +/* 5040 */ {(11<<2)|2,{50,55,0}}, +/* 5041 */ {(11<<2)|2,{50,55,0}}, +/* 5042 */ {(11<<2)|2,{50,55,0}}, +/* 5043 */ {(11<<2)|2,{50,55,0}}, +/* 5044 */ {(11<<2)|2,{50,55,0}}, +/* 5045 */ {(11<<2)|2,{50,55,0}}, +/* 5046 */ {(11<<2)|2,{50,55,0}}, +/* 5047 */ {(11<<2)|2,{50,55,0}}, +/* 5048 */ {(11<<2)|2,{50,55,0}}, +/* 5049 */ {(11<<2)|2,{50,55,0}}, +/* 5050 */ {(11<<2)|2,{50,55,0}}, +/* 5051 */ {(11<<2)|2,{50,55,0}}, +/* 5052 */ {(11<<2)|2,{50,55,0}}, +/* 5053 */ {(11<<2)|2,{50,55,0}}, +/* 5054 */ {(11<<2)|2,{50,55,0}}, +/* 5055 */ {(11<<2)|2,{50,55,0}}, +/* 5056 */ {(16<<2)|3,{50,56,48}}, +/* 5057 */ {(16<<2)|3,{50,56,49}}, +/* 5058 */ {(16<<2)|3,{50,56,50}}, +/* 5059 */ {(16<<2)|3,{50,56,97}}, +/* 5060 */ {(16<<2)|3,{50,56,99}}, +/* 5061 */ {(16<<2)|3,{50,56,101}}, +/* 5062 */ {(16<<2)|3,{50,56,105}}, +/* 5063 */ {(16<<2)|3,{50,56,111}}, +/* 5064 */ {(16<<2)|3,{50,56,115}}, +/* 5065 */ {(16<<2)|3,{50,56,116}}, +/* 5066 */ {(11<<2)|2,{50,56,0}}, +/* 5067 */ {(11<<2)|2,{50,56,0}}, +/* 5068 */ {(11<<2)|2,{50,56,0}}, +/* 5069 */ {(11<<2)|2,{50,56,0}}, +/* 5070 */ {(11<<2)|2,{50,56,0}}, +/* 5071 */ {(11<<2)|2,{50,56,0}}, +/* 5072 */ {(11<<2)|2,{50,56,0}}, +/* 5073 */ {(11<<2)|2,{50,56,0}}, +/* 5074 */ {(11<<2)|2,{50,56,0}}, +/* 5075 */ {(11<<2)|2,{50,56,0}}, +/* 5076 */ {(11<<2)|2,{50,56,0}}, +/* 5077 */ {(11<<2)|2,{50,56,0}}, +/* 5078 */ {(11<<2)|2,{50,56,0}}, +/* 5079 */ {(11<<2)|2,{50,56,0}}, +/* 5080 */ {(11<<2)|2,{50,56,0}}, +/* 5081 */ {(11<<2)|2,{50,56,0}}, +/* 5082 */ {(11<<2)|2,{50,56,0}}, +/* 5083 */ {(11<<2)|2,{50,56,0}}, +/* 5084 */ {(11<<2)|2,{50,56,0}}, +/* 5085 */ {(11<<2)|2,{50,56,0}}, +/* 5086 */ {(11<<2)|2,{50,56,0}}, +/* 5087 */ {(11<<2)|2,{50,56,0}}, +/* 5088 */ {(16<<2)|3,{50,57,48}}, +/* 5089 */ {(16<<2)|3,{50,57,49}}, +/* 5090 */ {(16<<2)|3,{50,57,50}}, +/* 5091 */ {(16<<2)|3,{50,57,97}}, +/* 5092 */ {(16<<2)|3,{50,57,99}}, +/* 5093 */ {(16<<2)|3,{50,57,101}}, +/* 5094 */ {(16<<2)|3,{50,57,105}}, +/* 5095 */ {(16<<2)|3,{50,57,111}}, +/* 5096 */ {(16<<2)|3,{50,57,115}}, +/* 5097 */ {(16<<2)|3,{50,57,116}}, +/* 5098 */ {(11<<2)|2,{50,57,0}}, +/* 5099 */ {(11<<2)|2,{50,57,0}}, +/* 5100 */ {(11<<2)|2,{50,57,0}}, +/* 5101 */ {(11<<2)|2,{50,57,0}}, +/* 5102 */ {(11<<2)|2,{50,57,0}}, +/* 5103 */ {(11<<2)|2,{50,57,0}}, +/* 5104 */ {(11<<2)|2,{50,57,0}}, +/* 5105 */ {(11<<2)|2,{50,57,0}}, +/* 5106 */ {(11<<2)|2,{50,57,0}}, +/* 5107 */ {(11<<2)|2,{50,57,0}}, +/* 5108 */ {(11<<2)|2,{50,57,0}}, +/* 5109 */ {(11<<2)|2,{50,57,0}}, +/* 5110 */ {(11<<2)|2,{50,57,0}}, +/* 5111 */ {(11<<2)|2,{50,57,0}}, +/* 5112 */ {(11<<2)|2,{50,57,0}}, +/* 5113 */ {(11<<2)|2,{50,57,0}}, +/* 5114 */ {(11<<2)|2,{50,57,0}}, +/* 5115 */ {(11<<2)|2,{50,57,0}}, +/* 5116 */ {(11<<2)|2,{50,57,0}}, +/* 5117 */ {(11<<2)|2,{50,57,0}}, +/* 5118 */ {(11<<2)|2,{50,57,0}}, +/* 5119 */ {(11<<2)|2,{50,57,0}}, +/* 5120 */ {(16<<2)|3,{50,61,48}}, +/* 5121 */ {(16<<2)|3,{50,61,49}}, +/* 5122 */ {(16<<2)|3,{50,61,50}}, +/* 5123 */ {(16<<2)|3,{50,61,97}}, +/* 5124 */ {(16<<2)|3,{50,61,99}}, +/* 5125 */ {(16<<2)|3,{50,61,101}}, +/* 5126 */ {(16<<2)|3,{50,61,105}}, +/* 5127 */ {(16<<2)|3,{50,61,111}}, +/* 5128 */ {(16<<2)|3,{50,61,115}}, +/* 5129 */ {(16<<2)|3,{50,61,116}}, +/* 5130 */ {(11<<2)|2,{50,61,0}}, +/* 5131 */ {(11<<2)|2,{50,61,0}}, +/* 5132 */ {(11<<2)|2,{50,61,0}}, +/* 5133 */ {(11<<2)|2,{50,61,0}}, +/* 5134 */ {(11<<2)|2,{50,61,0}}, +/* 5135 */ {(11<<2)|2,{50,61,0}}, +/* 5136 */ {(11<<2)|2,{50,61,0}}, +/* 5137 */ {(11<<2)|2,{50,61,0}}, +/* 5138 */ {(11<<2)|2,{50,61,0}}, +/* 5139 */ {(11<<2)|2,{50,61,0}}, +/* 5140 */ {(11<<2)|2,{50,61,0}}, +/* 5141 */ {(11<<2)|2,{50,61,0}}, +/* 5142 */ {(11<<2)|2,{50,61,0}}, +/* 5143 */ {(11<<2)|2,{50,61,0}}, +/* 5144 */ {(11<<2)|2,{50,61,0}}, +/* 5145 */ {(11<<2)|2,{50,61,0}}, +/* 5146 */ {(11<<2)|2,{50,61,0}}, +/* 5147 */ {(11<<2)|2,{50,61,0}}, +/* 5148 */ {(11<<2)|2,{50,61,0}}, +/* 5149 */ {(11<<2)|2,{50,61,0}}, +/* 5150 */ {(11<<2)|2,{50,61,0}}, +/* 5151 */ {(11<<2)|2,{50,61,0}}, +/* 5152 */ {(16<<2)|3,{50,65,48}}, +/* 5153 */ {(16<<2)|3,{50,65,49}}, +/* 5154 */ {(16<<2)|3,{50,65,50}}, +/* 5155 */ {(16<<2)|3,{50,65,97}}, +/* 5156 */ {(16<<2)|3,{50,65,99}}, +/* 5157 */ {(16<<2)|3,{50,65,101}}, +/* 5158 */ {(16<<2)|3,{50,65,105}}, +/* 5159 */ {(16<<2)|3,{50,65,111}}, +/* 5160 */ {(16<<2)|3,{50,65,115}}, +/* 5161 */ {(16<<2)|3,{50,65,116}}, +/* 5162 */ {(11<<2)|2,{50,65,0}}, +/* 5163 */ {(11<<2)|2,{50,65,0}}, +/* 5164 */ {(11<<2)|2,{50,65,0}}, +/* 5165 */ {(11<<2)|2,{50,65,0}}, +/* 5166 */ {(11<<2)|2,{50,65,0}}, +/* 5167 */ {(11<<2)|2,{50,65,0}}, +/* 5168 */ {(11<<2)|2,{50,65,0}}, +/* 5169 */ {(11<<2)|2,{50,65,0}}, +/* 5170 */ {(11<<2)|2,{50,65,0}}, +/* 5171 */ {(11<<2)|2,{50,65,0}}, +/* 5172 */ {(11<<2)|2,{50,65,0}}, +/* 5173 */ {(11<<2)|2,{50,65,0}}, +/* 5174 */ {(11<<2)|2,{50,65,0}}, +/* 5175 */ {(11<<2)|2,{50,65,0}}, +/* 5176 */ {(11<<2)|2,{50,65,0}}, +/* 5177 */ {(11<<2)|2,{50,65,0}}, +/* 5178 */ {(11<<2)|2,{50,65,0}}, +/* 5179 */ {(11<<2)|2,{50,65,0}}, +/* 5180 */ {(11<<2)|2,{50,65,0}}, +/* 5181 */ {(11<<2)|2,{50,65,0}}, +/* 5182 */ {(11<<2)|2,{50,65,0}}, +/* 5183 */ {(11<<2)|2,{50,65,0}}, +/* 5184 */ {(16<<2)|3,{50,95,48}}, +/* 5185 */ {(16<<2)|3,{50,95,49}}, +/* 5186 */ {(16<<2)|3,{50,95,50}}, +/* 5187 */ {(16<<2)|3,{50,95,97}}, +/* 5188 */ {(16<<2)|3,{50,95,99}}, +/* 5189 */ {(16<<2)|3,{50,95,101}}, +/* 5190 */ {(16<<2)|3,{50,95,105}}, +/* 5191 */ {(16<<2)|3,{50,95,111}}, +/* 5192 */ {(16<<2)|3,{50,95,115}}, +/* 5193 */ {(16<<2)|3,{50,95,116}}, +/* 5194 */ {(11<<2)|2,{50,95,0}}, +/* 5195 */ {(11<<2)|2,{50,95,0}}, +/* 5196 */ {(11<<2)|2,{50,95,0}}, +/* 5197 */ {(11<<2)|2,{50,95,0}}, +/* 5198 */ {(11<<2)|2,{50,95,0}}, +/* 5199 */ {(11<<2)|2,{50,95,0}}, +/* 5200 */ {(11<<2)|2,{50,95,0}}, +/* 5201 */ {(11<<2)|2,{50,95,0}}, +/* 5202 */ {(11<<2)|2,{50,95,0}}, +/* 5203 */ {(11<<2)|2,{50,95,0}}, +/* 5204 */ {(11<<2)|2,{50,95,0}}, +/* 5205 */ {(11<<2)|2,{50,95,0}}, +/* 5206 */ {(11<<2)|2,{50,95,0}}, +/* 5207 */ {(11<<2)|2,{50,95,0}}, +/* 5208 */ {(11<<2)|2,{50,95,0}}, +/* 5209 */ {(11<<2)|2,{50,95,0}}, +/* 5210 */ {(11<<2)|2,{50,95,0}}, +/* 5211 */ {(11<<2)|2,{50,95,0}}, +/* 5212 */ {(11<<2)|2,{50,95,0}}, +/* 5213 */ {(11<<2)|2,{50,95,0}}, +/* 5214 */ {(11<<2)|2,{50,95,0}}, +/* 5215 */ {(11<<2)|2,{50,95,0}}, +/* 5216 */ {(16<<2)|3,{50,98,48}}, +/* 5217 */ {(16<<2)|3,{50,98,49}}, +/* 5218 */ {(16<<2)|3,{50,98,50}}, +/* 5219 */ {(16<<2)|3,{50,98,97}}, +/* 5220 */ {(16<<2)|3,{50,98,99}}, +/* 5221 */ {(16<<2)|3,{50,98,101}}, +/* 5222 */ {(16<<2)|3,{50,98,105}}, +/* 5223 */ {(16<<2)|3,{50,98,111}}, +/* 5224 */ {(16<<2)|3,{50,98,115}}, +/* 5225 */ {(16<<2)|3,{50,98,116}}, +/* 5226 */ {(11<<2)|2,{50,98,0}}, +/* 5227 */ {(11<<2)|2,{50,98,0}}, +/* 5228 */ {(11<<2)|2,{50,98,0}}, +/* 5229 */ {(11<<2)|2,{50,98,0}}, +/* 5230 */ {(11<<2)|2,{50,98,0}}, +/* 5231 */ {(11<<2)|2,{50,98,0}}, +/* 5232 */ {(11<<2)|2,{50,98,0}}, +/* 5233 */ {(11<<2)|2,{50,98,0}}, +/* 5234 */ {(11<<2)|2,{50,98,0}}, +/* 5235 */ {(11<<2)|2,{50,98,0}}, +/* 5236 */ {(11<<2)|2,{50,98,0}}, +/* 5237 */ {(11<<2)|2,{50,98,0}}, +/* 5238 */ {(11<<2)|2,{50,98,0}}, +/* 5239 */ {(11<<2)|2,{50,98,0}}, +/* 5240 */ {(11<<2)|2,{50,98,0}}, +/* 5241 */ {(11<<2)|2,{50,98,0}}, +/* 5242 */ {(11<<2)|2,{50,98,0}}, +/* 5243 */ {(11<<2)|2,{50,98,0}}, +/* 5244 */ {(11<<2)|2,{50,98,0}}, +/* 5245 */ {(11<<2)|2,{50,98,0}}, +/* 5246 */ {(11<<2)|2,{50,98,0}}, +/* 5247 */ {(11<<2)|2,{50,98,0}}, +/* 5248 */ {(16<<2)|3,{50,100,48}}, +/* 5249 */ {(16<<2)|3,{50,100,49}}, +/* 5250 */ {(16<<2)|3,{50,100,50}}, +/* 5251 */ {(16<<2)|3,{50,100,97}}, +/* 5252 */ {(16<<2)|3,{50,100,99}}, +/* 5253 */ {(16<<2)|3,{50,100,101}}, +/* 5254 */ {(16<<2)|3,{50,100,105}}, +/* 5255 */ {(16<<2)|3,{50,100,111}}, +/* 5256 */ {(16<<2)|3,{50,100,115}}, +/* 5257 */ {(16<<2)|3,{50,100,116}}, +/* 5258 */ {(11<<2)|2,{50,100,0}}, +/* 5259 */ {(11<<2)|2,{50,100,0}}, +/* 5260 */ {(11<<2)|2,{50,100,0}}, +/* 5261 */ {(11<<2)|2,{50,100,0}}, +/* 5262 */ {(11<<2)|2,{50,100,0}}, +/* 5263 */ {(11<<2)|2,{50,100,0}}, +/* 5264 */ {(11<<2)|2,{50,100,0}}, +/* 5265 */ {(11<<2)|2,{50,100,0}}, +/* 5266 */ {(11<<2)|2,{50,100,0}}, +/* 5267 */ {(11<<2)|2,{50,100,0}}, +/* 5268 */ {(11<<2)|2,{50,100,0}}, +/* 5269 */ {(11<<2)|2,{50,100,0}}, +/* 5270 */ {(11<<2)|2,{50,100,0}}, +/* 5271 */ {(11<<2)|2,{50,100,0}}, +/* 5272 */ {(11<<2)|2,{50,100,0}}, +/* 5273 */ {(11<<2)|2,{50,100,0}}, +/* 5274 */ {(11<<2)|2,{50,100,0}}, +/* 5275 */ {(11<<2)|2,{50,100,0}}, +/* 5276 */ {(11<<2)|2,{50,100,0}}, +/* 5277 */ {(11<<2)|2,{50,100,0}}, +/* 5278 */ {(11<<2)|2,{50,100,0}}, +/* 5279 */ {(11<<2)|2,{50,100,0}}, +/* 5280 */ {(16<<2)|3,{50,102,48}}, +/* 5281 */ {(16<<2)|3,{50,102,49}}, +/* 5282 */ {(16<<2)|3,{50,102,50}}, +/* 5283 */ {(16<<2)|3,{50,102,97}}, +/* 5284 */ {(16<<2)|3,{50,102,99}}, +/* 5285 */ {(16<<2)|3,{50,102,101}}, +/* 5286 */ {(16<<2)|3,{50,102,105}}, +/* 5287 */ {(16<<2)|3,{50,102,111}}, +/* 5288 */ {(16<<2)|3,{50,102,115}}, +/* 5289 */ {(16<<2)|3,{50,102,116}}, +/* 5290 */ {(11<<2)|2,{50,102,0}}, +/* 5291 */ {(11<<2)|2,{50,102,0}}, +/* 5292 */ {(11<<2)|2,{50,102,0}}, +/* 5293 */ {(11<<2)|2,{50,102,0}}, +/* 5294 */ {(11<<2)|2,{50,102,0}}, +/* 5295 */ {(11<<2)|2,{50,102,0}}, +/* 5296 */ {(11<<2)|2,{50,102,0}}, +/* 5297 */ {(11<<2)|2,{50,102,0}}, +/* 5298 */ {(11<<2)|2,{50,102,0}}, +/* 5299 */ {(11<<2)|2,{50,102,0}}, +/* 5300 */ {(11<<2)|2,{50,102,0}}, +/* 5301 */ {(11<<2)|2,{50,102,0}}, +/* 5302 */ {(11<<2)|2,{50,102,0}}, +/* 5303 */ {(11<<2)|2,{50,102,0}}, +/* 5304 */ {(11<<2)|2,{50,102,0}}, +/* 5305 */ {(11<<2)|2,{50,102,0}}, +/* 5306 */ {(11<<2)|2,{50,102,0}}, +/* 5307 */ {(11<<2)|2,{50,102,0}}, +/* 5308 */ {(11<<2)|2,{50,102,0}}, +/* 5309 */ {(11<<2)|2,{50,102,0}}, +/* 5310 */ {(11<<2)|2,{50,102,0}}, +/* 5311 */ {(11<<2)|2,{50,102,0}}, +/* 5312 */ {(16<<2)|3,{50,103,48}}, +/* 5313 */ {(16<<2)|3,{50,103,49}}, +/* 5314 */ {(16<<2)|3,{50,103,50}}, +/* 5315 */ {(16<<2)|3,{50,103,97}}, +/* 5316 */ {(16<<2)|3,{50,103,99}}, +/* 5317 */ {(16<<2)|3,{50,103,101}}, +/* 5318 */ {(16<<2)|3,{50,103,105}}, +/* 5319 */ {(16<<2)|3,{50,103,111}}, +/* 5320 */ {(16<<2)|3,{50,103,115}}, +/* 5321 */ {(16<<2)|3,{50,103,116}}, +/* 5322 */ {(11<<2)|2,{50,103,0}}, +/* 5323 */ {(11<<2)|2,{50,103,0}}, +/* 5324 */ {(11<<2)|2,{50,103,0}}, +/* 5325 */ {(11<<2)|2,{50,103,0}}, +/* 5326 */ {(11<<2)|2,{50,103,0}}, +/* 5327 */ {(11<<2)|2,{50,103,0}}, +/* 5328 */ {(11<<2)|2,{50,103,0}}, +/* 5329 */ {(11<<2)|2,{50,103,0}}, +/* 5330 */ {(11<<2)|2,{50,103,0}}, +/* 5331 */ {(11<<2)|2,{50,103,0}}, +/* 5332 */ {(11<<2)|2,{50,103,0}}, +/* 5333 */ {(11<<2)|2,{50,103,0}}, +/* 5334 */ {(11<<2)|2,{50,103,0}}, +/* 5335 */ {(11<<2)|2,{50,103,0}}, +/* 5336 */ {(11<<2)|2,{50,103,0}}, +/* 5337 */ {(11<<2)|2,{50,103,0}}, +/* 5338 */ {(11<<2)|2,{50,103,0}}, +/* 5339 */ {(11<<2)|2,{50,103,0}}, +/* 5340 */ {(11<<2)|2,{50,103,0}}, +/* 5341 */ {(11<<2)|2,{50,103,0}}, +/* 5342 */ {(11<<2)|2,{50,103,0}}, +/* 5343 */ {(11<<2)|2,{50,103,0}}, +/* 5344 */ {(16<<2)|3,{50,104,48}}, +/* 5345 */ {(16<<2)|3,{50,104,49}}, +/* 5346 */ {(16<<2)|3,{50,104,50}}, +/* 5347 */ {(16<<2)|3,{50,104,97}}, +/* 5348 */ {(16<<2)|3,{50,104,99}}, +/* 5349 */ {(16<<2)|3,{50,104,101}}, +/* 5350 */ {(16<<2)|3,{50,104,105}}, +/* 5351 */ {(16<<2)|3,{50,104,111}}, +/* 5352 */ {(16<<2)|3,{50,104,115}}, +/* 5353 */ {(16<<2)|3,{50,104,116}}, +/* 5354 */ {(11<<2)|2,{50,104,0}}, +/* 5355 */ {(11<<2)|2,{50,104,0}}, +/* 5356 */ {(11<<2)|2,{50,104,0}}, +/* 5357 */ {(11<<2)|2,{50,104,0}}, +/* 5358 */ {(11<<2)|2,{50,104,0}}, +/* 5359 */ {(11<<2)|2,{50,104,0}}, +/* 5360 */ {(11<<2)|2,{50,104,0}}, +/* 5361 */ {(11<<2)|2,{50,104,0}}, +/* 5362 */ {(11<<2)|2,{50,104,0}}, +/* 5363 */ {(11<<2)|2,{50,104,0}}, +/* 5364 */ {(11<<2)|2,{50,104,0}}, +/* 5365 */ {(11<<2)|2,{50,104,0}}, +/* 5366 */ {(11<<2)|2,{50,104,0}}, +/* 5367 */ {(11<<2)|2,{50,104,0}}, +/* 5368 */ {(11<<2)|2,{50,104,0}}, +/* 5369 */ {(11<<2)|2,{50,104,0}}, +/* 5370 */ {(11<<2)|2,{50,104,0}}, +/* 5371 */ {(11<<2)|2,{50,104,0}}, +/* 5372 */ {(11<<2)|2,{50,104,0}}, +/* 5373 */ {(11<<2)|2,{50,104,0}}, +/* 5374 */ {(11<<2)|2,{50,104,0}}, +/* 5375 */ {(11<<2)|2,{50,104,0}}, +/* 5376 */ {(16<<2)|3,{50,108,48}}, +/* 5377 */ {(16<<2)|3,{50,108,49}}, +/* 5378 */ {(16<<2)|3,{50,108,50}}, +/* 5379 */ {(16<<2)|3,{50,108,97}}, +/* 5380 */ {(16<<2)|3,{50,108,99}}, +/* 5381 */ {(16<<2)|3,{50,108,101}}, +/* 5382 */ {(16<<2)|3,{50,108,105}}, +/* 5383 */ {(16<<2)|3,{50,108,111}}, +/* 5384 */ {(16<<2)|3,{50,108,115}}, +/* 5385 */ {(16<<2)|3,{50,108,116}}, +/* 5386 */ {(11<<2)|2,{50,108,0}}, +/* 5387 */ {(11<<2)|2,{50,108,0}}, +/* 5388 */ {(11<<2)|2,{50,108,0}}, +/* 5389 */ {(11<<2)|2,{50,108,0}}, +/* 5390 */ {(11<<2)|2,{50,108,0}}, +/* 5391 */ {(11<<2)|2,{50,108,0}}, +/* 5392 */ {(11<<2)|2,{50,108,0}}, +/* 5393 */ {(11<<2)|2,{50,108,0}}, +/* 5394 */ {(11<<2)|2,{50,108,0}}, +/* 5395 */ {(11<<2)|2,{50,108,0}}, +/* 5396 */ {(11<<2)|2,{50,108,0}}, +/* 5397 */ {(11<<2)|2,{50,108,0}}, +/* 5398 */ {(11<<2)|2,{50,108,0}}, +/* 5399 */ {(11<<2)|2,{50,108,0}}, +/* 5400 */ {(11<<2)|2,{50,108,0}}, +/* 5401 */ {(11<<2)|2,{50,108,0}}, +/* 5402 */ {(11<<2)|2,{50,108,0}}, +/* 5403 */ {(11<<2)|2,{50,108,0}}, +/* 5404 */ {(11<<2)|2,{50,108,0}}, +/* 5405 */ {(11<<2)|2,{50,108,0}}, +/* 5406 */ {(11<<2)|2,{50,108,0}}, +/* 5407 */ {(11<<2)|2,{50,108,0}}, +/* 5408 */ {(16<<2)|3,{50,109,48}}, +/* 5409 */ {(16<<2)|3,{50,109,49}}, +/* 5410 */ {(16<<2)|3,{50,109,50}}, +/* 5411 */ {(16<<2)|3,{50,109,97}}, +/* 5412 */ {(16<<2)|3,{50,109,99}}, +/* 5413 */ {(16<<2)|3,{50,109,101}}, +/* 5414 */ {(16<<2)|3,{50,109,105}}, +/* 5415 */ {(16<<2)|3,{50,109,111}}, +/* 5416 */ {(16<<2)|3,{50,109,115}}, +/* 5417 */ {(16<<2)|3,{50,109,116}}, +/* 5418 */ {(11<<2)|2,{50,109,0}}, +/* 5419 */ {(11<<2)|2,{50,109,0}}, +/* 5420 */ {(11<<2)|2,{50,109,0}}, +/* 5421 */ {(11<<2)|2,{50,109,0}}, +/* 5422 */ {(11<<2)|2,{50,109,0}}, +/* 5423 */ {(11<<2)|2,{50,109,0}}, +/* 5424 */ {(11<<2)|2,{50,109,0}}, +/* 5425 */ {(11<<2)|2,{50,109,0}}, +/* 5426 */ {(11<<2)|2,{50,109,0}}, +/* 5427 */ {(11<<2)|2,{50,109,0}}, +/* 5428 */ {(11<<2)|2,{50,109,0}}, +/* 5429 */ {(11<<2)|2,{50,109,0}}, +/* 5430 */ {(11<<2)|2,{50,109,0}}, +/* 5431 */ {(11<<2)|2,{50,109,0}}, +/* 5432 */ {(11<<2)|2,{50,109,0}}, +/* 5433 */ {(11<<2)|2,{50,109,0}}, +/* 5434 */ {(11<<2)|2,{50,109,0}}, +/* 5435 */ {(11<<2)|2,{50,109,0}}, +/* 5436 */ {(11<<2)|2,{50,109,0}}, +/* 5437 */ {(11<<2)|2,{50,109,0}}, +/* 5438 */ {(11<<2)|2,{50,109,0}}, +/* 5439 */ {(11<<2)|2,{50,109,0}}, +/* 5440 */ {(16<<2)|3,{50,110,48}}, +/* 5441 */ {(16<<2)|3,{50,110,49}}, +/* 5442 */ {(16<<2)|3,{50,110,50}}, +/* 5443 */ {(16<<2)|3,{50,110,97}}, +/* 5444 */ {(16<<2)|3,{50,110,99}}, +/* 5445 */ {(16<<2)|3,{50,110,101}}, +/* 5446 */ {(16<<2)|3,{50,110,105}}, +/* 5447 */ {(16<<2)|3,{50,110,111}}, +/* 5448 */ {(16<<2)|3,{50,110,115}}, +/* 5449 */ {(16<<2)|3,{50,110,116}}, +/* 5450 */ {(11<<2)|2,{50,110,0}}, +/* 5451 */ {(11<<2)|2,{50,110,0}}, +/* 5452 */ {(11<<2)|2,{50,110,0}}, +/* 5453 */ {(11<<2)|2,{50,110,0}}, +/* 5454 */ {(11<<2)|2,{50,110,0}}, +/* 5455 */ {(11<<2)|2,{50,110,0}}, +/* 5456 */ {(11<<2)|2,{50,110,0}}, +/* 5457 */ {(11<<2)|2,{50,110,0}}, +/* 5458 */ {(11<<2)|2,{50,110,0}}, +/* 5459 */ {(11<<2)|2,{50,110,0}}, +/* 5460 */ {(11<<2)|2,{50,110,0}}, +/* 5461 */ {(11<<2)|2,{50,110,0}}, +/* 5462 */ {(11<<2)|2,{50,110,0}}, +/* 5463 */ {(11<<2)|2,{50,110,0}}, +/* 5464 */ {(11<<2)|2,{50,110,0}}, +/* 5465 */ {(11<<2)|2,{50,110,0}}, +/* 5466 */ {(11<<2)|2,{50,110,0}}, +/* 5467 */ {(11<<2)|2,{50,110,0}}, +/* 5468 */ {(11<<2)|2,{50,110,0}}, +/* 5469 */ {(11<<2)|2,{50,110,0}}, +/* 5470 */ {(11<<2)|2,{50,110,0}}, +/* 5471 */ {(11<<2)|2,{50,110,0}}, +/* 5472 */ {(16<<2)|3,{50,112,48}}, +/* 5473 */ {(16<<2)|3,{50,112,49}}, +/* 5474 */ {(16<<2)|3,{50,112,50}}, +/* 5475 */ {(16<<2)|3,{50,112,97}}, +/* 5476 */ {(16<<2)|3,{50,112,99}}, +/* 5477 */ {(16<<2)|3,{50,112,101}}, +/* 5478 */ {(16<<2)|3,{50,112,105}}, +/* 5479 */ {(16<<2)|3,{50,112,111}}, +/* 5480 */ {(16<<2)|3,{50,112,115}}, +/* 5481 */ {(16<<2)|3,{50,112,116}}, +/* 5482 */ {(11<<2)|2,{50,112,0}}, +/* 5483 */ {(11<<2)|2,{50,112,0}}, +/* 5484 */ {(11<<2)|2,{50,112,0}}, +/* 5485 */ {(11<<2)|2,{50,112,0}}, +/* 5486 */ {(11<<2)|2,{50,112,0}}, +/* 5487 */ {(11<<2)|2,{50,112,0}}, +/* 5488 */ {(11<<2)|2,{50,112,0}}, +/* 5489 */ {(11<<2)|2,{50,112,0}}, +/* 5490 */ {(11<<2)|2,{50,112,0}}, +/* 5491 */ {(11<<2)|2,{50,112,0}}, +/* 5492 */ {(11<<2)|2,{50,112,0}}, +/* 5493 */ {(11<<2)|2,{50,112,0}}, +/* 5494 */ {(11<<2)|2,{50,112,0}}, +/* 5495 */ {(11<<2)|2,{50,112,0}}, +/* 5496 */ {(11<<2)|2,{50,112,0}}, +/* 5497 */ {(11<<2)|2,{50,112,0}}, +/* 5498 */ {(11<<2)|2,{50,112,0}}, +/* 5499 */ {(11<<2)|2,{50,112,0}}, +/* 5500 */ {(11<<2)|2,{50,112,0}}, +/* 5501 */ {(11<<2)|2,{50,112,0}}, +/* 5502 */ {(11<<2)|2,{50,112,0}}, +/* 5503 */ {(11<<2)|2,{50,112,0}}, +/* 5504 */ {(16<<2)|3,{50,114,48}}, +/* 5505 */ {(16<<2)|3,{50,114,49}}, +/* 5506 */ {(16<<2)|3,{50,114,50}}, +/* 5507 */ {(16<<2)|3,{50,114,97}}, +/* 5508 */ {(16<<2)|3,{50,114,99}}, +/* 5509 */ {(16<<2)|3,{50,114,101}}, +/* 5510 */ {(16<<2)|3,{50,114,105}}, +/* 5511 */ {(16<<2)|3,{50,114,111}}, +/* 5512 */ {(16<<2)|3,{50,114,115}}, +/* 5513 */ {(16<<2)|3,{50,114,116}}, +/* 5514 */ {(11<<2)|2,{50,114,0}}, +/* 5515 */ {(11<<2)|2,{50,114,0}}, +/* 5516 */ {(11<<2)|2,{50,114,0}}, +/* 5517 */ {(11<<2)|2,{50,114,0}}, +/* 5518 */ {(11<<2)|2,{50,114,0}}, +/* 5519 */ {(11<<2)|2,{50,114,0}}, +/* 5520 */ {(11<<2)|2,{50,114,0}}, +/* 5521 */ {(11<<2)|2,{50,114,0}}, +/* 5522 */ {(11<<2)|2,{50,114,0}}, +/* 5523 */ {(11<<2)|2,{50,114,0}}, +/* 5524 */ {(11<<2)|2,{50,114,0}}, +/* 5525 */ {(11<<2)|2,{50,114,0}}, +/* 5526 */ {(11<<2)|2,{50,114,0}}, +/* 5527 */ {(11<<2)|2,{50,114,0}}, +/* 5528 */ {(11<<2)|2,{50,114,0}}, +/* 5529 */ {(11<<2)|2,{50,114,0}}, +/* 5530 */ {(11<<2)|2,{50,114,0}}, +/* 5531 */ {(11<<2)|2,{50,114,0}}, +/* 5532 */ {(11<<2)|2,{50,114,0}}, +/* 5533 */ {(11<<2)|2,{50,114,0}}, +/* 5534 */ {(11<<2)|2,{50,114,0}}, +/* 5535 */ {(11<<2)|2,{50,114,0}}, +/* 5536 */ {(16<<2)|3,{50,117,48}}, +/* 5537 */ {(16<<2)|3,{50,117,49}}, +/* 5538 */ {(16<<2)|3,{50,117,50}}, +/* 5539 */ {(16<<2)|3,{50,117,97}}, +/* 5540 */ {(16<<2)|3,{50,117,99}}, +/* 5541 */ {(16<<2)|3,{50,117,101}}, +/* 5542 */ {(16<<2)|3,{50,117,105}}, +/* 5543 */ {(16<<2)|3,{50,117,111}}, +/* 5544 */ {(16<<2)|3,{50,117,115}}, +/* 5545 */ {(16<<2)|3,{50,117,116}}, +/* 5546 */ {(11<<2)|2,{50,117,0}}, +/* 5547 */ {(11<<2)|2,{50,117,0}}, +/* 5548 */ {(11<<2)|2,{50,117,0}}, +/* 5549 */ {(11<<2)|2,{50,117,0}}, +/* 5550 */ {(11<<2)|2,{50,117,0}}, +/* 5551 */ {(11<<2)|2,{50,117,0}}, +/* 5552 */ {(11<<2)|2,{50,117,0}}, +/* 5553 */ {(11<<2)|2,{50,117,0}}, +/* 5554 */ {(11<<2)|2,{50,117,0}}, +/* 5555 */ {(11<<2)|2,{50,117,0}}, +/* 5556 */ {(11<<2)|2,{50,117,0}}, +/* 5557 */ {(11<<2)|2,{50,117,0}}, +/* 5558 */ {(11<<2)|2,{50,117,0}}, +/* 5559 */ {(11<<2)|2,{50,117,0}}, +/* 5560 */ {(11<<2)|2,{50,117,0}}, +/* 5561 */ {(11<<2)|2,{50,117,0}}, +/* 5562 */ {(11<<2)|2,{50,117,0}}, +/* 5563 */ {(11<<2)|2,{50,117,0}}, +/* 5564 */ {(11<<2)|2,{50,117,0}}, +/* 5565 */ {(11<<2)|2,{50,117,0}}, +/* 5566 */ {(11<<2)|2,{50,117,0}}, +/* 5567 */ {(11<<2)|2,{50,117,0}}, +/* 5568 */ {(12<<2)|2,{50,58,0}}, +/* 5569 */ {(12<<2)|2,{50,58,0}}, +/* 5570 */ {(12<<2)|2,{50,58,0}}, +/* 5571 */ {(12<<2)|2,{50,58,0}}, +/* 5572 */ {(12<<2)|2,{50,58,0}}, +/* 5573 */ {(12<<2)|2,{50,58,0}}, +/* 5574 */ {(12<<2)|2,{50,58,0}}, +/* 5575 */ {(12<<2)|2,{50,58,0}}, +/* 5576 */ {(12<<2)|2,{50,58,0}}, +/* 5577 */ {(12<<2)|2,{50,58,0}}, +/* 5578 */ {(12<<2)|2,{50,58,0}}, +/* 5579 */ {(12<<2)|2,{50,58,0}}, +/* 5580 */ {(12<<2)|2,{50,58,0}}, +/* 5581 */ {(12<<2)|2,{50,58,0}}, +/* 5582 */ {(12<<2)|2,{50,58,0}}, +/* 5583 */ {(12<<2)|2,{50,58,0}}, +/* 5584 */ {(12<<2)|2,{50,66,0}}, +/* 5585 */ {(12<<2)|2,{50,66,0}}, +/* 5586 */ {(12<<2)|2,{50,66,0}}, +/* 5587 */ {(12<<2)|2,{50,66,0}}, +/* 5588 */ {(12<<2)|2,{50,66,0}}, +/* 5589 */ {(12<<2)|2,{50,66,0}}, +/* 5590 */ {(12<<2)|2,{50,66,0}}, +/* 5591 */ {(12<<2)|2,{50,66,0}}, +/* 5592 */ {(12<<2)|2,{50,66,0}}, +/* 5593 */ {(12<<2)|2,{50,66,0}}, +/* 5594 */ {(12<<2)|2,{50,66,0}}, +/* 5595 */ {(12<<2)|2,{50,66,0}}, +/* 5596 */ {(12<<2)|2,{50,66,0}}, +/* 5597 */ {(12<<2)|2,{50,66,0}}, +/* 5598 */ {(12<<2)|2,{50,66,0}}, +/* 5599 */ {(12<<2)|2,{50,66,0}}, +/* 5600 */ {(12<<2)|2,{50,67,0}}, +/* 5601 */ {(12<<2)|2,{50,67,0}}, +/* 5602 */ {(12<<2)|2,{50,67,0}}, +/* 5603 */ {(12<<2)|2,{50,67,0}}, +/* 5604 */ {(12<<2)|2,{50,67,0}}, +/* 5605 */ {(12<<2)|2,{50,67,0}}, +/* 5606 */ {(12<<2)|2,{50,67,0}}, +/* 5607 */ {(12<<2)|2,{50,67,0}}, +/* 5608 */ {(12<<2)|2,{50,67,0}}, +/* 5609 */ {(12<<2)|2,{50,67,0}}, +/* 5610 */ {(12<<2)|2,{50,67,0}}, +/* 5611 */ {(12<<2)|2,{50,67,0}}, +/* 5612 */ {(12<<2)|2,{50,67,0}}, +/* 5613 */ {(12<<2)|2,{50,67,0}}, +/* 5614 */ {(12<<2)|2,{50,67,0}}, +/* 5615 */ {(12<<2)|2,{50,67,0}}, +/* 5616 */ {(12<<2)|2,{50,68,0}}, +/* 5617 */ {(12<<2)|2,{50,68,0}}, +/* 5618 */ {(12<<2)|2,{50,68,0}}, +/* 5619 */ {(12<<2)|2,{50,68,0}}, +/* 5620 */ {(12<<2)|2,{50,68,0}}, +/* 5621 */ {(12<<2)|2,{50,68,0}}, +/* 5622 */ {(12<<2)|2,{50,68,0}}, +/* 5623 */ {(12<<2)|2,{50,68,0}}, +/* 5624 */ {(12<<2)|2,{50,68,0}}, +/* 5625 */ {(12<<2)|2,{50,68,0}}, +/* 5626 */ {(12<<2)|2,{50,68,0}}, +/* 5627 */ {(12<<2)|2,{50,68,0}}, +/* 5628 */ {(12<<2)|2,{50,68,0}}, +/* 5629 */ {(12<<2)|2,{50,68,0}}, +/* 5630 */ {(12<<2)|2,{50,68,0}}, +/* 5631 */ {(12<<2)|2,{50,68,0}}, +/* 5632 */ {(12<<2)|2,{50,69,0}}, +/* 5633 */ {(12<<2)|2,{50,69,0}}, +/* 5634 */ {(12<<2)|2,{50,69,0}}, +/* 5635 */ {(12<<2)|2,{50,69,0}}, +/* 5636 */ {(12<<2)|2,{50,69,0}}, +/* 5637 */ {(12<<2)|2,{50,69,0}}, +/* 5638 */ {(12<<2)|2,{50,69,0}}, +/* 5639 */ {(12<<2)|2,{50,69,0}}, +/* 5640 */ {(12<<2)|2,{50,69,0}}, +/* 5641 */ {(12<<2)|2,{50,69,0}}, +/* 5642 */ {(12<<2)|2,{50,69,0}}, +/* 5643 */ {(12<<2)|2,{50,69,0}}, +/* 5644 */ {(12<<2)|2,{50,69,0}}, +/* 5645 */ {(12<<2)|2,{50,69,0}}, +/* 5646 */ {(12<<2)|2,{50,69,0}}, +/* 5647 */ {(12<<2)|2,{50,69,0}}, +/* 5648 */ {(12<<2)|2,{50,70,0}}, +/* 5649 */ {(12<<2)|2,{50,70,0}}, +/* 5650 */ {(12<<2)|2,{50,70,0}}, +/* 5651 */ {(12<<2)|2,{50,70,0}}, +/* 5652 */ {(12<<2)|2,{50,70,0}}, +/* 5653 */ {(12<<2)|2,{50,70,0}}, +/* 5654 */ {(12<<2)|2,{50,70,0}}, +/* 5655 */ {(12<<2)|2,{50,70,0}}, +/* 5656 */ {(12<<2)|2,{50,70,0}}, +/* 5657 */ {(12<<2)|2,{50,70,0}}, +/* 5658 */ {(12<<2)|2,{50,70,0}}, +/* 5659 */ {(12<<2)|2,{50,70,0}}, +/* 5660 */ {(12<<2)|2,{50,70,0}}, +/* 5661 */ {(12<<2)|2,{50,70,0}}, +/* 5662 */ {(12<<2)|2,{50,70,0}}, +/* 5663 */ {(12<<2)|2,{50,70,0}}, +/* 5664 */ {(12<<2)|2,{50,71,0}}, +/* 5665 */ {(12<<2)|2,{50,71,0}}, +/* 5666 */ {(12<<2)|2,{50,71,0}}, +/* 5667 */ {(12<<2)|2,{50,71,0}}, +/* 5668 */ {(12<<2)|2,{50,71,0}}, +/* 5669 */ {(12<<2)|2,{50,71,0}}, +/* 5670 */ {(12<<2)|2,{50,71,0}}, +/* 5671 */ {(12<<2)|2,{50,71,0}}, +/* 5672 */ {(12<<2)|2,{50,71,0}}, +/* 5673 */ {(12<<2)|2,{50,71,0}}, +/* 5674 */ {(12<<2)|2,{50,71,0}}, +/* 5675 */ {(12<<2)|2,{50,71,0}}, +/* 5676 */ {(12<<2)|2,{50,71,0}}, +/* 5677 */ {(12<<2)|2,{50,71,0}}, +/* 5678 */ {(12<<2)|2,{50,71,0}}, +/* 5679 */ {(12<<2)|2,{50,71,0}}, +/* 5680 */ {(12<<2)|2,{50,72,0}}, +/* 5681 */ {(12<<2)|2,{50,72,0}}, +/* 5682 */ {(12<<2)|2,{50,72,0}}, +/* 5683 */ {(12<<2)|2,{50,72,0}}, +/* 5684 */ {(12<<2)|2,{50,72,0}}, +/* 5685 */ {(12<<2)|2,{50,72,0}}, +/* 5686 */ {(12<<2)|2,{50,72,0}}, +/* 5687 */ {(12<<2)|2,{50,72,0}}, +/* 5688 */ {(12<<2)|2,{50,72,0}}, +/* 5689 */ {(12<<2)|2,{50,72,0}}, +/* 5690 */ {(12<<2)|2,{50,72,0}}, +/* 5691 */ {(12<<2)|2,{50,72,0}}, +/* 5692 */ {(12<<2)|2,{50,72,0}}, +/* 5693 */ {(12<<2)|2,{50,72,0}}, +/* 5694 */ {(12<<2)|2,{50,72,0}}, +/* 5695 */ {(12<<2)|2,{50,72,0}}, +/* 5696 */ {(12<<2)|2,{50,73,0}}, +/* 5697 */ {(12<<2)|2,{50,73,0}}, +/* 5698 */ {(12<<2)|2,{50,73,0}}, +/* 5699 */ {(12<<2)|2,{50,73,0}}, +/* 5700 */ {(12<<2)|2,{50,73,0}}, +/* 5701 */ {(12<<2)|2,{50,73,0}}, +/* 5702 */ {(12<<2)|2,{50,73,0}}, +/* 5703 */ {(12<<2)|2,{50,73,0}}, +/* 5704 */ {(12<<2)|2,{50,73,0}}, +/* 5705 */ {(12<<2)|2,{50,73,0}}, +/* 5706 */ {(12<<2)|2,{50,73,0}}, +/* 5707 */ {(12<<2)|2,{50,73,0}}, +/* 5708 */ {(12<<2)|2,{50,73,0}}, +/* 5709 */ {(12<<2)|2,{50,73,0}}, +/* 5710 */ {(12<<2)|2,{50,73,0}}, +/* 5711 */ {(12<<2)|2,{50,73,0}}, +/* 5712 */ {(12<<2)|2,{50,74,0}}, +/* 5713 */ {(12<<2)|2,{50,74,0}}, +/* 5714 */ {(12<<2)|2,{50,74,0}}, +/* 5715 */ {(12<<2)|2,{50,74,0}}, +/* 5716 */ {(12<<2)|2,{50,74,0}}, +/* 5717 */ {(12<<2)|2,{50,74,0}}, +/* 5718 */ {(12<<2)|2,{50,74,0}}, +/* 5719 */ {(12<<2)|2,{50,74,0}}, +/* 5720 */ {(12<<2)|2,{50,74,0}}, +/* 5721 */ {(12<<2)|2,{50,74,0}}, +/* 5722 */ {(12<<2)|2,{50,74,0}}, +/* 5723 */ {(12<<2)|2,{50,74,0}}, +/* 5724 */ {(12<<2)|2,{50,74,0}}, +/* 5725 */ {(12<<2)|2,{50,74,0}}, +/* 5726 */ {(12<<2)|2,{50,74,0}}, +/* 5727 */ {(12<<2)|2,{50,74,0}}, +/* 5728 */ {(12<<2)|2,{50,75,0}}, +/* 5729 */ {(12<<2)|2,{50,75,0}}, +/* 5730 */ {(12<<2)|2,{50,75,0}}, +/* 5731 */ {(12<<2)|2,{50,75,0}}, +/* 5732 */ {(12<<2)|2,{50,75,0}}, +/* 5733 */ {(12<<2)|2,{50,75,0}}, +/* 5734 */ {(12<<2)|2,{50,75,0}}, +/* 5735 */ {(12<<2)|2,{50,75,0}}, +/* 5736 */ {(12<<2)|2,{50,75,0}}, +/* 5737 */ {(12<<2)|2,{50,75,0}}, +/* 5738 */ {(12<<2)|2,{50,75,0}}, +/* 5739 */ {(12<<2)|2,{50,75,0}}, +/* 5740 */ {(12<<2)|2,{50,75,0}}, +/* 5741 */ {(12<<2)|2,{50,75,0}}, +/* 5742 */ {(12<<2)|2,{50,75,0}}, +/* 5743 */ {(12<<2)|2,{50,75,0}}, +/* 5744 */ {(12<<2)|2,{50,76,0}}, +/* 5745 */ {(12<<2)|2,{50,76,0}}, +/* 5746 */ {(12<<2)|2,{50,76,0}}, +/* 5747 */ {(12<<2)|2,{50,76,0}}, +/* 5748 */ {(12<<2)|2,{50,76,0}}, +/* 5749 */ {(12<<2)|2,{50,76,0}}, +/* 5750 */ {(12<<2)|2,{50,76,0}}, +/* 5751 */ {(12<<2)|2,{50,76,0}}, +/* 5752 */ {(12<<2)|2,{50,76,0}}, +/* 5753 */ {(12<<2)|2,{50,76,0}}, +/* 5754 */ {(12<<2)|2,{50,76,0}}, +/* 5755 */ {(12<<2)|2,{50,76,0}}, +/* 5756 */ {(12<<2)|2,{50,76,0}}, +/* 5757 */ {(12<<2)|2,{50,76,0}}, +/* 5758 */ {(12<<2)|2,{50,76,0}}, +/* 5759 */ {(12<<2)|2,{50,76,0}}, +/* 5760 */ {(12<<2)|2,{50,77,0}}, +/* 5761 */ {(12<<2)|2,{50,77,0}}, +/* 5762 */ {(12<<2)|2,{50,77,0}}, +/* 5763 */ {(12<<2)|2,{50,77,0}}, +/* 5764 */ {(12<<2)|2,{50,77,0}}, +/* 5765 */ {(12<<2)|2,{50,77,0}}, +/* 5766 */ {(12<<2)|2,{50,77,0}}, +/* 5767 */ {(12<<2)|2,{50,77,0}}, +/* 5768 */ {(12<<2)|2,{50,77,0}}, +/* 5769 */ {(12<<2)|2,{50,77,0}}, +/* 5770 */ {(12<<2)|2,{50,77,0}}, +/* 5771 */ {(12<<2)|2,{50,77,0}}, +/* 5772 */ {(12<<2)|2,{50,77,0}}, +/* 5773 */ {(12<<2)|2,{50,77,0}}, +/* 5774 */ {(12<<2)|2,{50,77,0}}, +/* 5775 */ {(12<<2)|2,{50,77,0}}, +/* 5776 */ {(12<<2)|2,{50,78,0}}, +/* 5777 */ {(12<<2)|2,{50,78,0}}, +/* 5778 */ {(12<<2)|2,{50,78,0}}, +/* 5779 */ {(12<<2)|2,{50,78,0}}, +/* 5780 */ {(12<<2)|2,{50,78,0}}, +/* 5781 */ {(12<<2)|2,{50,78,0}}, +/* 5782 */ {(12<<2)|2,{50,78,0}}, +/* 5783 */ {(12<<2)|2,{50,78,0}}, +/* 5784 */ {(12<<2)|2,{50,78,0}}, +/* 5785 */ {(12<<2)|2,{50,78,0}}, +/* 5786 */ {(12<<2)|2,{50,78,0}}, +/* 5787 */ {(12<<2)|2,{50,78,0}}, +/* 5788 */ {(12<<2)|2,{50,78,0}}, +/* 5789 */ {(12<<2)|2,{50,78,0}}, +/* 5790 */ {(12<<2)|2,{50,78,0}}, +/* 5791 */ {(12<<2)|2,{50,78,0}}, +/* 5792 */ {(12<<2)|2,{50,79,0}}, +/* 5793 */ {(12<<2)|2,{50,79,0}}, +/* 5794 */ {(12<<2)|2,{50,79,0}}, +/* 5795 */ {(12<<2)|2,{50,79,0}}, +/* 5796 */ {(12<<2)|2,{50,79,0}}, +/* 5797 */ {(12<<2)|2,{50,79,0}}, +/* 5798 */ {(12<<2)|2,{50,79,0}}, +/* 5799 */ {(12<<2)|2,{50,79,0}}, +/* 5800 */ {(12<<2)|2,{50,79,0}}, +/* 5801 */ {(12<<2)|2,{50,79,0}}, +/* 5802 */ {(12<<2)|2,{50,79,0}}, +/* 5803 */ {(12<<2)|2,{50,79,0}}, +/* 5804 */ {(12<<2)|2,{50,79,0}}, +/* 5805 */ {(12<<2)|2,{50,79,0}}, +/* 5806 */ {(12<<2)|2,{50,79,0}}, +/* 5807 */ {(12<<2)|2,{50,79,0}}, +/* 5808 */ {(12<<2)|2,{50,80,0}}, +/* 5809 */ {(12<<2)|2,{50,80,0}}, +/* 5810 */ {(12<<2)|2,{50,80,0}}, +/* 5811 */ {(12<<2)|2,{50,80,0}}, +/* 5812 */ {(12<<2)|2,{50,80,0}}, +/* 5813 */ {(12<<2)|2,{50,80,0}}, +/* 5814 */ {(12<<2)|2,{50,80,0}}, +/* 5815 */ {(12<<2)|2,{50,80,0}}, +/* 5816 */ {(12<<2)|2,{50,80,0}}, +/* 5817 */ {(12<<2)|2,{50,80,0}}, +/* 5818 */ {(12<<2)|2,{50,80,0}}, +/* 5819 */ {(12<<2)|2,{50,80,0}}, +/* 5820 */ {(12<<2)|2,{50,80,0}}, +/* 5821 */ {(12<<2)|2,{50,80,0}}, +/* 5822 */ {(12<<2)|2,{50,80,0}}, +/* 5823 */ {(12<<2)|2,{50,80,0}}, +/* 5824 */ {(12<<2)|2,{50,81,0}}, +/* 5825 */ {(12<<2)|2,{50,81,0}}, +/* 5826 */ {(12<<2)|2,{50,81,0}}, +/* 5827 */ {(12<<2)|2,{50,81,0}}, +/* 5828 */ {(12<<2)|2,{50,81,0}}, +/* 5829 */ {(12<<2)|2,{50,81,0}}, +/* 5830 */ {(12<<2)|2,{50,81,0}}, +/* 5831 */ {(12<<2)|2,{50,81,0}}, +/* 5832 */ {(12<<2)|2,{50,81,0}}, +/* 5833 */ {(12<<2)|2,{50,81,0}}, +/* 5834 */ {(12<<2)|2,{50,81,0}}, +/* 5835 */ {(12<<2)|2,{50,81,0}}, +/* 5836 */ {(12<<2)|2,{50,81,0}}, +/* 5837 */ {(12<<2)|2,{50,81,0}}, +/* 5838 */ {(12<<2)|2,{50,81,0}}, +/* 5839 */ {(12<<2)|2,{50,81,0}}, +/* 5840 */ {(12<<2)|2,{50,82,0}}, +/* 5841 */ {(12<<2)|2,{50,82,0}}, +/* 5842 */ {(12<<2)|2,{50,82,0}}, +/* 5843 */ {(12<<2)|2,{50,82,0}}, +/* 5844 */ {(12<<2)|2,{50,82,0}}, +/* 5845 */ {(12<<2)|2,{50,82,0}}, +/* 5846 */ {(12<<2)|2,{50,82,0}}, +/* 5847 */ {(12<<2)|2,{50,82,0}}, +/* 5848 */ {(12<<2)|2,{50,82,0}}, +/* 5849 */ {(12<<2)|2,{50,82,0}}, +/* 5850 */ {(12<<2)|2,{50,82,0}}, +/* 5851 */ {(12<<2)|2,{50,82,0}}, +/* 5852 */ {(12<<2)|2,{50,82,0}}, +/* 5853 */ {(12<<2)|2,{50,82,0}}, +/* 5854 */ {(12<<2)|2,{50,82,0}}, +/* 5855 */ {(12<<2)|2,{50,82,0}}, +/* 5856 */ {(12<<2)|2,{50,83,0}}, +/* 5857 */ {(12<<2)|2,{50,83,0}}, +/* 5858 */ {(12<<2)|2,{50,83,0}}, +/* 5859 */ {(12<<2)|2,{50,83,0}}, +/* 5860 */ {(12<<2)|2,{50,83,0}}, +/* 5861 */ {(12<<2)|2,{50,83,0}}, +/* 5862 */ {(12<<2)|2,{50,83,0}}, +/* 5863 */ {(12<<2)|2,{50,83,0}}, +/* 5864 */ {(12<<2)|2,{50,83,0}}, +/* 5865 */ {(12<<2)|2,{50,83,0}}, +/* 5866 */ {(12<<2)|2,{50,83,0}}, +/* 5867 */ {(12<<2)|2,{50,83,0}}, +/* 5868 */ {(12<<2)|2,{50,83,0}}, +/* 5869 */ {(12<<2)|2,{50,83,0}}, +/* 5870 */ {(12<<2)|2,{50,83,0}}, +/* 5871 */ {(12<<2)|2,{50,83,0}}, +/* 5872 */ {(12<<2)|2,{50,84,0}}, +/* 5873 */ {(12<<2)|2,{50,84,0}}, +/* 5874 */ {(12<<2)|2,{50,84,0}}, +/* 5875 */ {(12<<2)|2,{50,84,0}}, +/* 5876 */ {(12<<2)|2,{50,84,0}}, +/* 5877 */ {(12<<2)|2,{50,84,0}}, +/* 5878 */ {(12<<2)|2,{50,84,0}}, +/* 5879 */ {(12<<2)|2,{50,84,0}}, +/* 5880 */ {(12<<2)|2,{50,84,0}}, +/* 5881 */ {(12<<2)|2,{50,84,0}}, +/* 5882 */ {(12<<2)|2,{50,84,0}}, +/* 5883 */ {(12<<2)|2,{50,84,0}}, +/* 5884 */ {(12<<2)|2,{50,84,0}}, +/* 5885 */ {(12<<2)|2,{50,84,0}}, +/* 5886 */ {(12<<2)|2,{50,84,0}}, +/* 5887 */ {(12<<2)|2,{50,84,0}}, +/* 5888 */ {(12<<2)|2,{50,85,0}}, +/* 5889 */ {(12<<2)|2,{50,85,0}}, +/* 5890 */ {(12<<2)|2,{50,85,0}}, +/* 5891 */ {(12<<2)|2,{50,85,0}}, +/* 5892 */ {(12<<2)|2,{50,85,0}}, +/* 5893 */ {(12<<2)|2,{50,85,0}}, +/* 5894 */ {(12<<2)|2,{50,85,0}}, +/* 5895 */ {(12<<2)|2,{50,85,0}}, +/* 5896 */ {(12<<2)|2,{50,85,0}}, +/* 5897 */ {(12<<2)|2,{50,85,0}}, +/* 5898 */ {(12<<2)|2,{50,85,0}}, +/* 5899 */ {(12<<2)|2,{50,85,0}}, +/* 5900 */ {(12<<2)|2,{50,85,0}}, +/* 5901 */ {(12<<2)|2,{50,85,0}}, +/* 5902 */ {(12<<2)|2,{50,85,0}}, +/* 5903 */ {(12<<2)|2,{50,85,0}}, +/* 5904 */ {(12<<2)|2,{50,86,0}}, +/* 5905 */ {(12<<2)|2,{50,86,0}}, +/* 5906 */ {(12<<2)|2,{50,86,0}}, +/* 5907 */ {(12<<2)|2,{50,86,0}}, +/* 5908 */ {(12<<2)|2,{50,86,0}}, +/* 5909 */ {(12<<2)|2,{50,86,0}}, +/* 5910 */ {(12<<2)|2,{50,86,0}}, +/* 5911 */ {(12<<2)|2,{50,86,0}}, +/* 5912 */ {(12<<2)|2,{50,86,0}}, +/* 5913 */ {(12<<2)|2,{50,86,0}}, +/* 5914 */ {(12<<2)|2,{50,86,0}}, +/* 5915 */ {(12<<2)|2,{50,86,0}}, +/* 5916 */ {(12<<2)|2,{50,86,0}}, +/* 5917 */ {(12<<2)|2,{50,86,0}}, +/* 5918 */ {(12<<2)|2,{50,86,0}}, +/* 5919 */ {(12<<2)|2,{50,86,0}}, +/* 5920 */ {(12<<2)|2,{50,87,0}}, +/* 5921 */ {(12<<2)|2,{50,87,0}}, +/* 5922 */ {(12<<2)|2,{50,87,0}}, +/* 5923 */ {(12<<2)|2,{50,87,0}}, +/* 5924 */ {(12<<2)|2,{50,87,0}}, +/* 5925 */ {(12<<2)|2,{50,87,0}}, +/* 5926 */ {(12<<2)|2,{50,87,0}}, +/* 5927 */ {(12<<2)|2,{50,87,0}}, +/* 5928 */ {(12<<2)|2,{50,87,0}}, +/* 5929 */ {(12<<2)|2,{50,87,0}}, +/* 5930 */ {(12<<2)|2,{50,87,0}}, +/* 5931 */ {(12<<2)|2,{50,87,0}}, +/* 5932 */ {(12<<2)|2,{50,87,0}}, +/* 5933 */ {(12<<2)|2,{50,87,0}}, +/* 5934 */ {(12<<2)|2,{50,87,0}}, +/* 5935 */ {(12<<2)|2,{50,87,0}}, +/* 5936 */ {(12<<2)|2,{50,89,0}}, +/* 5937 */ {(12<<2)|2,{50,89,0}}, +/* 5938 */ {(12<<2)|2,{50,89,0}}, +/* 5939 */ {(12<<2)|2,{50,89,0}}, +/* 5940 */ {(12<<2)|2,{50,89,0}}, +/* 5941 */ {(12<<2)|2,{50,89,0}}, +/* 5942 */ {(12<<2)|2,{50,89,0}}, +/* 5943 */ {(12<<2)|2,{50,89,0}}, +/* 5944 */ {(12<<2)|2,{50,89,0}}, +/* 5945 */ {(12<<2)|2,{50,89,0}}, +/* 5946 */ {(12<<2)|2,{50,89,0}}, +/* 5947 */ {(12<<2)|2,{50,89,0}}, +/* 5948 */ {(12<<2)|2,{50,89,0}}, +/* 5949 */ {(12<<2)|2,{50,89,0}}, +/* 5950 */ {(12<<2)|2,{50,89,0}}, +/* 5951 */ {(12<<2)|2,{50,89,0}}, +/* 5952 */ {(12<<2)|2,{50,106,0}}, +/* 5953 */ {(12<<2)|2,{50,106,0}}, +/* 5954 */ {(12<<2)|2,{50,106,0}}, +/* 5955 */ {(12<<2)|2,{50,106,0}}, +/* 5956 */ {(12<<2)|2,{50,106,0}}, +/* 5957 */ {(12<<2)|2,{50,106,0}}, +/* 5958 */ {(12<<2)|2,{50,106,0}}, +/* 5959 */ {(12<<2)|2,{50,106,0}}, +/* 5960 */ {(12<<2)|2,{50,106,0}}, +/* 5961 */ {(12<<2)|2,{50,106,0}}, +/* 5962 */ {(12<<2)|2,{50,106,0}}, +/* 5963 */ {(12<<2)|2,{50,106,0}}, +/* 5964 */ {(12<<2)|2,{50,106,0}}, +/* 5965 */ {(12<<2)|2,{50,106,0}}, +/* 5966 */ {(12<<2)|2,{50,106,0}}, +/* 5967 */ {(12<<2)|2,{50,106,0}}, +/* 5968 */ {(12<<2)|2,{50,107,0}}, +/* 5969 */ {(12<<2)|2,{50,107,0}}, +/* 5970 */ {(12<<2)|2,{50,107,0}}, +/* 5971 */ {(12<<2)|2,{50,107,0}}, +/* 5972 */ {(12<<2)|2,{50,107,0}}, +/* 5973 */ {(12<<2)|2,{50,107,0}}, +/* 5974 */ {(12<<2)|2,{50,107,0}}, +/* 5975 */ {(12<<2)|2,{50,107,0}}, +/* 5976 */ {(12<<2)|2,{50,107,0}}, +/* 5977 */ {(12<<2)|2,{50,107,0}}, +/* 5978 */ {(12<<2)|2,{50,107,0}}, +/* 5979 */ {(12<<2)|2,{50,107,0}}, +/* 5980 */ {(12<<2)|2,{50,107,0}}, +/* 5981 */ {(12<<2)|2,{50,107,0}}, +/* 5982 */ {(12<<2)|2,{50,107,0}}, +/* 5983 */ {(12<<2)|2,{50,107,0}}, +/* 5984 */ {(12<<2)|2,{50,113,0}}, +/* 5985 */ {(12<<2)|2,{50,113,0}}, +/* 5986 */ {(12<<2)|2,{50,113,0}}, +/* 5987 */ {(12<<2)|2,{50,113,0}}, +/* 5988 */ {(12<<2)|2,{50,113,0}}, +/* 5989 */ {(12<<2)|2,{50,113,0}}, +/* 5990 */ {(12<<2)|2,{50,113,0}}, +/* 5991 */ {(12<<2)|2,{50,113,0}}, +/* 5992 */ {(12<<2)|2,{50,113,0}}, +/* 5993 */ {(12<<2)|2,{50,113,0}}, +/* 5994 */ {(12<<2)|2,{50,113,0}}, +/* 5995 */ {(12<<2)|2,{50,113,0}}, +/* 5996 */ {(12<<2)|2,{50,113,0}}, +/* 5997 */ {(12<<2)|2,{50,113,0}}, +/* 5998 */ {(12<<2)|2,{50,113,0}}, +/* 5999 */ {(12<<2)|2,{50,113,0}}, +/* 6000 */ {(12<<2)|2,{50,118,0}}, +/* 6001 */ {(12<<2)|2,{50,118,0}}, +/* 6002 */ {(12<<2)|2,{50,118,0}}, +/* 6003 */ {(12<<2)|2,{50,118,0}}, +/* 6004 */ {(12<<2)|2,{50,118,0}}, +/* 6005 */ {(12<<2)|2,{50,118,0}}, +/* 6006 */ {(12<<2)|2,{50,118,0}}, +/* 6007 */ {(12<<2)|2,{50,118,0}}, +/* 6008 */ {(12<<2)|2,{50,118,0}}, +/* 6009 */ {(12<<2)|2,{50,118,0}}, +/* 6010 */ {(12<<2)|2,{50,118,0}}, +/* 6011 */ {(12<<2)|2,{50,118,0}}, +/* 6012 */ {(12<<2)|2,{50,118,0}}, +/* 6013 */ {(12<<2)|2,{50,118,0}}, +/* 6014 */ {(12<<2)|2,{50,118,0}}, +/* 6015 */ {(12<<2)|2,{50,118,0}}, +/* 6016 */ {(12<<2)|2,{50,119,0}}, +/* 6017 */ {(12<<2)|2,{50,119,0}}, +/* 6018 */ {(12<<2)|2,{50,119,0}}, +/* 6019 */ {(12<<2)|2,{50,119,0}}, +/* 6020 */ {(12<<2)|2,{50,119,0}}, +/* 6021 */ {(12<<2)|2,{50,119,0}}, +/* 6022 */ {(12<<2)|2,{50,119,0}}, +/* 6023 */ {(12<<2)|2,{50,119,0}}, +/* 6024 */ {(12<<2)|2,{50,119,0}}, +/* 6025 */ {(12<<2)|2,{50,119,0}}, +/* 6026 */ {(12<<2)|2,{50,119,0}}, +/* 6027 */ {(12<<2)|2,{50,119,0}}, +/* 6028 */ {(12<<2)|2,{50,119,0}}, +/* 6029 */ {(12<<2)|2,{50,119,0}}, +/* 6030 */ {(12<<2)|2,{50,119,0}}, +/* 6031 */ {(12<<2)|2,{50,119,0}}, +/* 6032 */ {(12<<2)|2,{50,120,0}}, +/* 6033 */ {(12<<2)|2,{50,120,0}}, +/* 6034 */ {(12<<2)|2,{50,120,0}}, +/* 6035 */ {(12<<2)|2,{50,120,0}}, +/* 6036 */ {(12<<2)|2,{50,120,0}}, +/* 6037 */ {(12<<2)|2,{50,120,0}}, +/* 6038 */ {(12<<2)|2,{50,120,0}}, +/* 6039 */ {(12<<2)|2,{50,120,0}}, +/* 6040 */ {(12<<2)|2,{50,120,0}}, +/* 6041 */ {(12<<2)|2,{50,120,0}}, +/* 6042 */ {(12<<2)|2,{50,120,0}}, +/* 6043 */ {(12<<2)|2,{50,120,0}}, +/* 6044 */ {(12<<2)|2,{50,120,0}}, +/* 6045 */ {(12<<2)|2,{50,120,0}}, +/* 6046 */ {(12<<2)|2,{50,120,0}}, +/* 6047 */ {(12<<2)|2,{50,120,0}}, +/* 6048 */ {(12<<2)|2,{50,121,0}}, +/* 6049 */ {(12<<2)|2,{50,121,0}}, +/* 6050 */ {(12<<2)|2,{50,121,0}}, +/* 6051 */ {(12<<2)|2,{50,121,0}}, +/* 6052 */ {(12<<2)|2,{50,121,0}}, +/* 6053 */ {(12<<2)|2,{50,121,0}}, +/* 6054 */ {(12<<2)|2,{50,121,0}}, +/* 6055 */ {(12<<2)|2,{50,121,0}}, +/* 6056 */ {(12<<2)|2,{50,121,0}}, +/* 6057 */ {(12<<2)|2,{50,121,0}}, +/* 6058 */ {(12<<2)|2,{50,121,0}}, +/* 6059 */ {(12<<2)|2,{50,121,0}}, +/* 6060 */ {(12<<2)|2,{50,121,0}}, +/* 6061 */ {(12<<2)|2,{50,121,0}}, +/* 6062 */ {(12<<2)|2,{50,121,0}}, +/* 6063 */ {(12<<2)|2,{50,121,0}}, +/* 6064 */ {(12<<2)|2,{50,122,0}}, +/* 6065 */ {(12<<2)|2,{50,122,0}}, +/* 6066 */ {(12<<2)|2,{50,122,0}}, +/* 6067 */ {(12<<2)|2,{50,122,0}}, +/* 6068 */ {(12<<2)|2,{50,122,0}}, +/* 6069 */ {(12<<2)|2,{50,122,0}}, +/* 6070 */ {(12<<2)|2,{50,122,0}}, +/* 6071 */ {(12<<2)|2,{50,122,0}}, +/* 6072 */ {(12<<2)|2,{50,122,0}}, +/* 6073 */ {(12<<2)|2,{50,122,0}}, +/* 6074 */ {(12<<2)|2,{50,122,0}}, +/* 6075 */ {(12<<2)|2,{50,122,0}}, +/* 6076 */ {(12<<2)|2,{50,122,0}}, +/* 6077 */ {(12<<2)|2,{50,122,0}}, +/* 6078 */ {(12<<2)|2,{50,122,0}}, +/* 6079 */ {(12<<2)|2,{50,122,0}}, +/* 6080 */ {(13<<2)|2,{50,38,0}}, +/* 6081 */ {(13<<2)|2,{50,38,0}}, +/* 6082 */ {(13<<2)|2,{50,38,0}}, +/* 6083 */ {(13<<2)|2,{50,38,0}}, +/* 6084 */ {(13<<2)|2,{50,38,0}}, +/* 6085 */ {(13<<2)|2,{50,38,0}}, +/* 6086 */ {(13<<2)|2,{50,38,0}}, +/* 6087 */ {(13<<2)|2,{50,38,0}}, +/* 6088 */ {(13<<2)|2,{50,42,0}}, +/* 6089 */ {(13<<2)|2,{50,42,0}}, +/* 6090 */ {(13<<2)|2,{50,42,0}}, +/* 6091 */ {(13<<2)|2,{50,42,0}}, +/* 6092 */ {(13<<2)|2,{50,42,0}}, +/* 6093 */ {(13<<2)|2,{50,42,0}}, +/* 6094 */ {(13<<2)|2,{50,42,0}}, +/* 6095 */ {(13<<2)|2,{50,42,0}}, +/* 6096 */ {(13<<2)|2,{50,44,0}}, +/* 6097 */ {(13<<2)|2,{50,44,0}}, +/* 6098 */ {(13<<2)|2,{50,44,0}}, +/* 6099 */ {(13<<2)|2,{50,44,0}}, +/* 6100 */ {(13<<2)|2,{50,44,0}}, +/* 6101 */ {(13<<2)|2,{50,44,0}}, +/* 6102 */ {(13<<2)|2,{50,44,0}}, +/* 6103 */ {(13<<2)|2,{50,44,0}}, +/* 6104 */ {(13<<2)|2,{50,59,0}}, +/* 6105 */ {(13<<2)|2,{50,59,0}}, +/* 6106 */ {(13<<2)|2,{50,59,0}}, +/* 6107 */ {(13<<2)|2,{50,59,0}}, +/* 6108 */ {(13<<2)|2,{50,59,0}}, +/* 6109 */ {(13<<2)|2,{50,59,0}}, +/* 6110 */ {(13<<2)|2,{50,59,0}}, +/* 6111 */ {(13<<2)|2,{50,59,0}}, +/* 6112 */ {(13<<2)|2,{50,88,0}}, +/* 6113 */ {(13<<2)|2,{50,88,0}}, +/* 6114 */ {(13<<2)|2,{50,88,0}}, +/* 6115 */ {(13<<2)|2,{50,88,0}}, +/* 6116 */ {(13<<2)|2,{50,88,0}}, +/* 6117 */ {(13<<2)|2,{50,88,0}}, +/* 6118 */ {(13<<2)|2,{50,88,0}}, +/* 6119 */ {(13<<2)|2,{50,88,0}}, +/* 6120 */ {(13<<2)|2,{50,90,0}}, +/* 6121 */ {(13<<2)|2,{50,90,0}}, +/* 6122 */ {(13<<2)|2,{50,90,0}}, +/* 6123 */ {(13<<2)|2,{50,90,0}}, +/* 6124 */ {(13<<2)|2,{50,90,0}}, +/* 6125 */ {(13<<2)|2,{50,90,0}}, +/* 6126 */ {(13<<2)|2,{50,90,0}}, +/* 6127 */ {(13<<2)|2,{50,90,0}}, +/* 6128 */ {(15<<2)|2,{50,33,0}}, +/* 6129 */ {(15<<2)|2,{50,33,0}}, +/* 6130 */ {(15<<2)|2,{50,34,0}}, +/* 6131 */ {(15<<2)|2,{50,34,0}}, +/* 6132 */ {(15<<2)|2,{50,40,0}}, +/* 6133 */ {(15<<2)|2,{50,40,0}}, +/* 6134 */ {(15<<2)|2,{50,41,0}}, +/* 6135 */ {(15<<2)|2,{50,41,0}}, +/* 6136 */ {(15<<2)|2,{50,63,0}}, +/* 6137 */ {(15<<2)|2,{50,63,0}}, +/* 6138 */ {(16<<2)|2,{50,39,0}}, +/* 6139 */ {(16<<2)|2,{50,43,0}}, +/* 6140 */ {(16<<2)|2,{50,124,0}}, +/* 6141 */ {(5<<2)|1,{50,0,0}}, +/* 6142 */ {(5<<2)|1,{50,0,0}}, +/* 6143 */ {(5<<2)|1,{50,0,0}}, +/* 6144 */ {(15<<2)|3,{97,48,48}}, +/* 6145 */ {(15<<2)|3,{97,48,48}}, +/* 6146 */ {(15<<2)|3,{97,48,49}}, +/* 6147 */ {(15<<2)|3,{97,48,49}}, +/* 6148 */ {(15<<2)|3,{97,48,50}}, +/* 6149 */ {(15<<2)|3,{97,48,50}}, +/* 6150 */ {(15<<2)|3,{97,48,97}}, +/* 6151 */ {(15<<2)|3,{97,48,97}}, +/* 6152 */ {(15<<2)|3,{97,48,99}}, +/* 6153 */ {(15<<2)|3,{97,48,99}}, +/* 6154 */ {(15<<2)|3,{97,48,101}}, +/* 6155 */ {(15<<2)|3,{97,48,101}}, +/* 6156 */ {(15<<2)|3,{97,48,105}}, +/* 6157 */ {(15<<2)|3,{97,48,105}}, +/* 6158 */ {(15<<2)|3,{97,48,111}}, +/* 6159 */ {(15<<2)|3,{97,48,111}}, +/* 6160 */ {(15<<2)|3,{97,48,115}}, +/* 6161 */ {(15<<2)|3,{97,48,115}}, +/* 6162 */ {(15<<2)|3,{97,48,116}}, +/* 6163 */ {(15<<2)|3,{97,48,116}}, +/* 6164 */ {(16<<2)|3,{97,48,32}}, +/* 6165 */ {(16<<2)|3,{97,48,37}}, +/* 6166 */ {(16<<2)|3,{97,48,45}}, +/* 6167 */ {(16<<2)|3,{97,48,46}}, +/* 6168 */ {(16<<2)|3,{97,48,47}}, +/* 6169 */ {(16<<2)|3,{97,48,51}}, +/* 6170 */ {(16<<2)|3,{97,48,52}}, +/* 6171 */ {(16<<2)|3,{97,48,53}}, +/* 6172 */ {(16<<2)|3,{97,48,54}}, +/* 6173 */ {(16<<2)|3,{97,48,55}}, +/* 6174 */ {(16<<2)|3,{97,48,56}}, +/* 6175 */ {(16<<2)|3,{97,48,57}}, +/* 6176 */ {(16<<2)|3,{97,48,61}}, +/* 6177 */ {(16<<2)|3,{97,48,65}}, +/* 6178 */ {(16<<2)|3,{97,48,95}}, +/* 6179 */ {(16<<2)|3,{97,48,98}}, +/* 6180 */ {(16<<2)|3,{97,48,100}}, +/* 6181 */ {(16<<2)|3,{97,48,102}}, +/* 6182 */ {(16<<2)|3,{97,48,103}}, +/* 6183 */ {(16<<2)|3,{97,48,104}}, +/* 6184 */ {(16<<2)|3,{97,48,108}}, +/* 6185 */ {(16<<2)|3,{97,48,109}}, +/* 6186 */ {(16<<2)|3,{97,48,110}}, +/* 6187 */ {(16<<2)|3,{97,48,112}}, +/* 6188 */ {(16<<2)|3,{97,48,114}}, +/* 6189 */ {(16<<2)|3,{97,48,117}}, +/* 6190 */ {(10<<2)|2,{97,48,0}}, +/* 6191 */ {(10<<2)|2,{97,48,0}}, +/* 6192 */ {(10<<2)|2,{97,48,0}}, +/* 6193 */ {(10<<2)|2,{97,48,0}}, +/* 6194 */ {(10<<2)|2,{97,48,0}}, +/* 6195 */ {(10<<2)|2,{97,48,0}}, +/* 6196 */ {(10<<2)|2,{97,48,0}}, +/* 6197 */ {(10<<2)|2,{97,48,0}}, +/* 6198 */ {(10<<2)|2,{97,48,0}}, +/* 6199 */ {(10<<2)|2,{97,48,0}}, +/* 6200 */ {(10<<2)|2,{97,48,0}}, +/* 6201 */ {(10<<2)|2,{97,48,0}}, +/* 6202 */ {(10<<2)|2,{97,48,0}}, +/* 6203 */ {(10<<2)|2,{97,48,0}}, +/* 6204 */ {(10<<2)|2,{97,48,0}}, +/* 6205 */ {(10<<2)|2,{97,48,0}}, +/* 6206 */ {(10<<2)|2,{97,48,0}}, +/* 6207 */ {(10<<2)|2,{97,48,0}}, +/* 6208 */ {(15<<2)|3,{97,49,48}}, +/* 6209 */ {(15<<2)|3,{97,49,48}}, +/* 6210 */ {(15<<2)|3,{97,49,49}}, +/* 6211 */ {(15<<2)|3,{97,49,49}}, +/* 6212 */ {(15<<2)|3,{97,49,50}}, +/* 6213 */ {(15<<2)|3,{97,49,50}}, +/* 6214 */ {(15<<2)|3,{97,49,97}}, +/* 6215 */ {(15<<2)|3,{97,49,97}}, +/* 6216 */ {(15<<2)|3,{97,49,99}}, +/* 6217 */ {(15<<2)|3,{97,49,99}}, +/* 6218 */ {(15<<2)|3,{97,49,101}}, +/* 6219 */ {(15<<2)|3,{97,49,101}}, +/* 6220 */ {(15<<2)|3,{97,49,105}}, +/* 6221 */ {(15<<2)|3,{97,49,105}}, +/* 6222 */ {(15<<2)|3,{97,49,111}}, +/* 6223 */ {(15<<2)|3,{97,49,111}}, +/* 6224 */ {(15<<2)|3,{97,49,115}}, +/* 6225 */ {(15<<2)|3,{97,49,115}}, +/* 6226 */ {(15<<2)|3,{97,49,116}}, +/* 6227 */ {(15<<2)|3,{97,49,116}}, +/* 6228 */ {(16<<2)|3,{97,49,32}}, +/* 6229 */ {(16<<2)|3,{97,49,37}}, +/* 6230 */ {(16<<2)|3,{97,49,45}}, +/* 6231 */ {(16<<2)|3,{97,49,46}}, +/* 6232 */ {(16<<2)|3,{97,49,47}}, +/* 6233 */ {(16<<2)|3,{97,49,51}}, +/* 6234 */ {(16<<2)|3,{97,49,52}}, +/* 6235 */ {(16<<2)|3,{97,49,53}}, +/* 6236 */ {(16<<2)|3,{97,49,54}}, +/* 6237 */ {(16<<2)|3,{97,49,55}}, +/* 6238 */ {(16<<2)|3,{97,49,56}}, +/* 6239 */ {(16<<2)|3,{97,49,57}}, +/* 6240 */ {(16<<2)|3,{97,49,61}}, +/* 6241 */ {(16<<2)|3,{97,49,65}}, +/* 6242 */ {(16<<2)|3,{97,49,95}}, +/* 6243 */ {(16<<2)|3,{97,49,98}}, +/* 6244 */ {(16<<2)|3,{97,49,100}}, +/* 6245 */ {(16<<2)|3,{97,49,102}}, +/* 6246 */ {(16<<2)|3,{97,49,103}}, +/* 6247 */ {(16<<2)|3,{97,49,104}}, +/* 6248 */ {(16<<2)|3,{97,49,108}}, +/* 6249 */ {(16<<2)|3,{97,49,109}}, +/* 6250 */ {(16<<2)|3,{97,49,110}}, +/* 6251 */ {(16<<2)|3,{97,49,112}}, +/* 6252 */ {(16<<2)|3,{97,49,114}}, +/* 6253 */ {(16<<2)|3,{97,49,117}}, +/* 6254 */ {(10<<2)|2,{97,49,0}}, +/* 6255 */ {(10<<2)|2,{97,49,0}}, +/* 6256 */ {(10<<2)|2,{97,49,0}}, +/* 6257 */ {(10<<2)|2,{97,49,0}}, +/* 6258 */ {(10<<2)|2,{97,49,0}}, +/* 6259 */ {(10<<2)|2,{97,49,0}}, +/* 6260 */ {(10<<2)|2,{97,49,0}}, +/* 6261 */ {(10<<2)|2,{97,49,0}}, +/* 6262 */ {(10<<2)|2,{97,49,0}}, +/* 6263 */ {(10<<2)|2,{97,49,0}}, +/* 6264 */ {(10<<2)|2,{97,49,0}}, +/* 6265 */ {(10<<2)|2,{97,49,0}}, +/* 6266 */ {(10<<2)|2,{97,49,0}}, +/* 6267 */ {(10<<2)|2,{97,49,0}}, +/* 6268 */ {(10<<2)|2,{97,49,0}}, +/* 6269 */ {(10<<2)|2,{97,49,0}}, +/* 6270 */ {(10<<2)|2,{97,49,0}}, +/* 6271 */ {(10<<2)|2,{97,49,0}}, +/* 6272 */ {(15<<2)|3,{97,50,48}}, +/* 6273 */ {(15<<2)|3,{97,50,48}}, +/* 6274 */ {(15<<2)|3,{97,50,49}}, +/* 6275 */ {(15<<2)|3,{97,50,49}}, +/* 6276 */ {(15<<2)|3,{97,50,50}}, +/* 6277 */ {(15<<2)|3,{97,50,50}}, +/* 6278 */ {(15<<2)|3,{97,50,97}}, +/* 6279 */ {(15<<2)|3,{97,50,97}}, +/* 6280 */ {(15<<2)|3,{97,50,99}}, +/* 6281 */ {(15<<2)|3,{97,50,99}}, +/* 6282 */ {(15<<2)|3,{97,50,101}}, +/* 6283 */ {(15<<2)|3,{97,50,101}}, +/* 6284 */ {(15<<2)|3,{97,50,105}}, +/* 6285 */ {(15<<2)|3,{97,50,105}}, +/* 6286 */ {(15<<2)|3,{97,50,111}}, +/* 6287 */ {(15<<2)|3,{97,50,111}}, +/* 6288 */ {(15<<2)|3,{97,50,115}}, +/* 6289 */ {(15<<2)|3,{97,50,115}}, +/* 6290 */ {(15<<2)|3,{97,50,116}}, +/* 6291 */ {(15<<2)|3,{97,50,116}}, +/* 6292 */ {(16<<2)|3,{97,50,32}}, +/* 6293 */ {(16<<2)|3,{97,50,37}}, +/* 6294 */ {(16<<2)|3,{97,50,45}}, +/* 6295 */ {(16<<2)|3,{97,50,46}}, +/* 6296 */ {(16<<2)|3,{97,50,47}}, +/* 6297 */ {(16<<2)|3,{97,50,51}}, +/* 6298 */ {(16<<2)|3,{97,50,52}}, +/* 6299 */ {(16<<2)|3,{97,50,53}}, +/* 6300 */ {(16<<2)|3,{97,50,54}}, +/* 6301 */ {(16<<2)|3,{97,50,55}}, +/* 6302 */ {(16<<2)|3,{97,50,56}}, +/* 6303 */ {(16<<2)|3,{97,50,57}}, +/* 6304 */ {(16<<2)|3,{97,50,61}}, +/* 6305 */ {(16<<2)|3,{97,50,65}}, +/* 6306 */ {(16<<2)|3,{97,50,95}}, +/* 6307 */ {(16<<2)|3,{97,50,98}}, +/* 6308 */ {(16<<2)|3,{97,50,100}}, +/* 6309 */ {(16<<2)|3,{97,50,102}}, +/* 6310 */ {(16<<2)|3,{97,50,103}}, +/* 6311 */ {(16<<2)|3,{97,50,104}}, +/* 6312 */ {(16<<2)|3,{97,50,108}}, +/* 6313 */ {(16<<2)|3,{97,50,109}}, +/* 6314 */ {(16<<2)|3,{97,50,110}}, +/* 6315 */ {(16<<2)|3,{97,50,112}}, +/* 6316 */ {(16<<2)|3,{97,50,114}}, +/* 6317 */ {(16<<2)|3,{97,50,117}}, +/* 6318 */ {(10<<2)|2,{97,50,0}}, +/* 6319 */ {(10<<2)|2,{97,50,0}}, +/* 6320 */ {(10<<2)|2,{97,50,0}}, +/* 6321 */ {(10<<2)|2,{97,50,0}}, +/* 6322 */ {(10<<2)|2,{97,50,0}}, +/* 6323 */ {(10<<2)|2,{97,50,0}}, +/* 6324 */ {(10<<2)|2,{97,50,0}}, +/* 6325 */ {(10<<2)|2,{97,50,0}}, +/* 6326 */ {(10<<2)|2,{97,50,0}}, +/* 6327 */ {(10<<2)|2,{97,50,0}}, +/* 6328 */ {(10<<2)|2,{97,50,0}}, +/* 6329 */ {(10<<2)|2,{97,50,0}}, +/* 6330 */ {(10<<2)|2,{97,50,0}}, +/* 6331 */ {(10<<2)|2,{97,50,0}}, +/* 6332 */ {(10<<2)|2,{97,50,0}}, +/* 6333 */ {(10<<2)|2,{97,50,0}}, +/* 6334 */ {(10<<2)|2,{97,50,0}}, +/* 6335 */ {(10<<2)|2,{97,50,0}}, +/* 6336 */ {(15<<2)|3,{97,97,48}}, +/* 6337 */ {(15<<2)|3,{97,97,48}}, +/* 6338 */ {(15<<2)|3,{97,97,49}}, +/* 6339 */ {(15<<2)|3,{97,97,49}}, +/* 6340 */ {(15<<2)|3,{97,97,50}}, +/* 6341 */ {(15<<2)|3,{97,97,50}}, +/* 6342 */ {(15<<2)|3,{97,97,97}}, +/* 6343 */ {(15<<2)|3,{97,97,97}}, +/* 6344 */ {(15<<2)|3,{97,97,99}}, +/* 6345 */ {(15<<2)|3,{97,97,99}}, +/* 6346 */ {(15<<2)|3,{97,97,101}}, +/* 6347 */ {(15<<2)|3,{97,97,101}}, +/* 6348 */ {(15<<2)|3,{97,97,105}}, +/* 6349 */ {(15<<2)|3,{97,97,105}}, +/* 6350 */ {(15<<2)|3,{97,97,111}}, +/* 6351 */ {(15<<2)|3,{97,97,111}}, +/* 6352 */ {(15<<2)|3,{97,97,115}}, +/* 6353 */ {(15<<2)|3,{97,97,115}}, +/* 6354 */ {(15<<2)|3,{97,97,116}}, +/* 6355 */ {(15<<2)|3,{97,97,116}}, +/* 6356 */ {(16<<2)|3,{97,97,32}}, +/* 6357 */ {(16<<2)|3,{97,97,37}}, +/* 6358 */ {(16<<2)|3,{97,97,45}}, +/* 6359 */ {(16<<2)|3,{97,97,46}}, +/* 6360 */ {(16<<2)|3,{97,97,47}}, +/* 6361 */ {(16<<2)|3,{97,97,51}}, +/* 6362 */ {(16<<2)|3,{97,97,52}}, +/* 6363 */ {(16<<2)|3,{97,97,53}}, +/* 6364 */ {(16<<2)|3,{97,97,54}}, +/* 6365 */ {(16<<2)|3,{97,97,55}}, +/* 6366 */ {(16<<2)|3,{97,97,56}}, +/* 6367 */ {(16<<2)|3,{97,97,57}}, +/* 6368 */ {(16<<2)|3,{97,97,61}}, +/* 6369 */ {(16<<2)|3,{97,97,65}}, +/* 6370 */ {(16<<2)|3,{97,97,95}}, +/* 6371 */ {(16<<2)|3,{97,97,98}}, +/* 6372 */ {(16<<2)|3,{97,97,100}}, +/* 6373 */ {(16<<2)|3,{97,97,102}}, +/* 6374 */ {(16<<2)|3,{97,97,103}}, +/* 6375 */ {(16<<2)|3,{97,97,104}}, +/* 6376 */ {(16<<2)|3,{97,97,108}}, +/* 6377 */ {(16<<2)|3,{97,97,109}}, +/* 6378 */ {(16<<2)|3,{97,97,110}}, +/* 6379 */ {(16<<2)|3,{97,97,112}}, +/* 6380 */ {(16<<2)|3,{97,97,114}}, +/* 6381 */ {(16<<2)|3,{97,97,117}}, +/* 6382 */ {(10<<2)|2,{97,97,0}}, +/* 6383 */ {(10<<2)|2,{97,97,0}}, +/* 6384 */ {(10<<2)|2,{97,97,0}}, +/* 6385 */ {(10<<2)|2,{97,97,0}}, +/* 6386 */ {(10<<2)|2,{97,97,0}}, +/* 6387 */ {(10<<2)|2,{97,97,0}}, +/* 6388 */ {(10<<2)|2,{97,97,0}}, +/* 6389 */ {(10<<2)|2,{97,97,0}}, +/* 6390 */ {(10<<2)|2,{97,97,0}}, +/* 6391 */ {(10<<2)|2,{97,97,0}}, +/* 6392 */ {(10<<2)|2,{97,97,0}}, +/* 6393 */ {(10<<2)|2,{97,97,0}}, +/* 6394 */ {(10<<2)|2,{97,97,0}}, +/* 6395 */ {(10<<2)|2,{97,97,0}}, +/* 6396 */ {(10<<2)|2,{97,97,0}}, +/* 6397 */ {(10<<2)|2,{97,97,0}}, +/* 6398 */ {(10<<2)|2,{97,97,0}}, +/* 6399 */ {(10<<2)|2,{97,97,0}}, +/* 6400 */ {(15<<2)|3,{97,99,48}}, +/* 6401 */ {(15<<2)|3,{97,99,48}}, +/* 6402 */ {(15<<2)|3,{97,99,49}}, +/* 6403 */ {(15<<2)|3,{97,99,49}}, +/* 6404 */ {(15<<2)|3,{97,99,50}}, +/* 6405 */ {(15<<2)|3,{97,99,50}}, +/* 6406 */ {(15<<2)|3,{97,99,97}}, +/* 6407 */ {(15<<2)|3,{97,99,97}}, +/* 6408 */ {(15<<2)|3,{97,99,99}}, +/* 6409 */ {(15<<2)|3,{97,99,99}}, +/* 6410 */ {(15<<2)|3,{97,99,101}}, +/* 6411 */ {(15<<2)|3,{97,99,101}}, +/* 6412 */ {(15<<2)|3,{97,99,105}}, +/* 6413 */ {(15<<2)|3,{97,99,105}}, +/* 6414 */ {(15<<2)|3,{97,99,111}}, +/* 6415 */ {(15<<2)|3,{97,99,111}}, +/* 6416 */ {(15<<2)|3,{97,99,115}}, +/* 6417 */ {(15<<2)|3,{97,99,115}}, +/* 6418 */ {(15<<2)|3,{97,99,116}}, +/* 6419 */ {(15<<2)|3,{97,99,116}}, +/* 6420 */ {(16<<2)|3,{97,99,32}}, +/* 6421 */ {(16<<2)|3,{97,99,37}}, +/* 6422 */ {(16<<2)|3,{97,99,45}}, +/* 6423 */ {(16<<2)|3,{97,99,46}}, +/* 6424 */ {(16<<2)|3,{97,99,47}}, +/* 6425 */ {(16<<2)|3,{97,99,51}}, +/* 6426 */ {(16<<2)|3,{97,99,52}}, +/* 6427 */ {(16<<2)|3,{97,99,53}}, +/* 6428 */ {(16<<2)|3,{97,99,54}}, +/* 6429 */ {(16<<2)|3,{97,99,55}}, +/* 6430 */ {(16<<2)|3,{97,99,56}}, +/* 6431 */ {(16<<2)|3,{97,99,57}}, +/* 6432 */ {(16<<2)|3,{97,99,61}}, +/* 6433 */ {(16<<2)|3,{97,99,65}}, +/* 6434 */ {(16<<2)|3,{97,99,95}}, +/* 6435 */ {(16<<2)|3,{97,99,98}}, +/* 6436 */ {(16<<2)|3,{97,99,100}}, +/* 6437 */ {(16<<2)|3,{97,99,102}}, +/* 6438 */ {(16<<2)|3,{97,99,103}}, +/* 6439 */ {(16<<2)|3,{97,99,104}}, +/* 6440 */ {(16<<2)|3,{97,99,108}}, +/* 6441 */ {(16<<2)|3,{97,99,109}}, +/* 6442 */ {(16<<2)|3,{97,99,110}}, +/* 6443 */ {(16<<2)|3,{97,99,112}}, +/* 6444 */ {(16<<2)|3,{97,99,114}}, +/* 6445 */ {(16<<2)|3,{97,99,117}}, +/* 6446 */ {(10<<2)|2,{97,99,0}}, +/* 6447 */ {(10<<2)|2,{97,99,0}}, +/* 6448 */ {(10<<2)|2,{97,99,0}}, +/* 6449 */ {(10<<2)|2,{97,99,0}}, +/* 6450 */ {(10<<2)|2,{97,99,0}}, +/* 6451 */ {(10<<2)|2,{97,99,0}}, +/* 6452 */ {(10<<2)|2,{97,99,0}}, +/* 6453 */ {(10<<2)|2,{97,99,0}}, +/* 6454 */ {(10<<2)|2,{97,99,0}}, +/* 6455 */ {(10<<2)|2,{97,99,0}}, +/* 6456 */ {(10<<2)|2,{97,99,0}}, +/* 6457 */ {(10<<2)|2,{97,99,0}}, +/* 6458 */ {(10<<2)|2,{97,99,0}}, +/* 6459 */ {(10<<2)|2,{97,99,0}}, +/* 6460 */ {(10<<2)|2,{97,99,0}}, +/* 6461 */ {(10<<2)|2,{97,99,0}}, +/* 6462 */ {(10<<2)|2,{97,99,0}}, +/* 6463 */ {(10<<2)|2,{97,99,0}}, +/* 6464 */ {(15<<2)|3,{97,101,48}}, +/* 6465 */ {(15<<2)|3,{97,101,48}}, +/* 6466 */ {(15<<2)|3,{97,101,49}}, +/* 6467 */ {(15<<2)|3,{97,101,49}}, +/* 6468 */ {(15<<2)|3,{97,101,50}}, +/* 6469 */ {(15<<2)|3,{97,101,50}}, +/* 6470 */ {(15<<2)|3,{97,101,97}}, +/* 6471 */ {(15<<2)|3,{97,101,97}}, +/* 6472 */ {(15<<2)|3,{97,101,99}}, +/* 6473 */ {(15<<2)|3,{97,101,99}}, +/* 6474 */ {(15<<2)|3,{97,101,101}}, +/* 6475 */ {(15<<2)|3,{97,101,101}}, +/* 6476 */ {(15<<2)|3,{97,101,105}}, +/* 6477 */ {(15<<2)|3,{97,101,105}}, +/* 6478 */ {(15<<2)|3,{97,101,111}}, +/* 6479 */ {(15<<2)|3,{97,101,111}}, +/* 6480 */ {(15<<2)|3,{97,101,115}}, +/* 6481 */ {(15<<2)|3,{97,101,115}}, +/* 6482 */ {(15<<2)|3,{97,101,116}}, +/* 6483 */ {(15<<2)|3,{97,101,116}}, +/* 6484 */ {(16<<2)|3,{97,101,32}}, +/* 6485 */ {(16<<2)|3,{97,101,37}}, +/* 6486 */ {(16<<2)|3,{97,101,45}}, +/* 6487 */ {(16<<2)|3,{97,101,46}}, +/* 6488 */ {(16<<2)|3,{97,101,47}}, +/* 6489 */ {(16<<2)|3,{97,101,51}}, +/* 6490 */ {(16<<2)|3,{97,101,52}}, +/* 6491 */ {(16<<2)|3,{97,101,53}}, +/* 6492 */ {(16<<2)|3,{97,101,54}}, +/* 6493 */ {(16<<2)|3,{97,101,55}}, +/* 6494 */ {(16<<2)|3,{97,101,56}}, +/* 6495 */ {(16<<2)|3,{97,101,57}}, +/* 6496 */ {(16<<2)|3,{97,101,61}}, +/* 6497 */ {(16<<2)|3,{97,101,65}}, +/* 6498 */ {(16<<2)|3,{97,101,95}}, +/* 6499 */ {(16<<2)|3,{97,101,98}}, +/* 6500 */ {(16<<2)|3,{97,101,100}}, +/* 6501 */ {(16<<2)|3,{97,101,102}}, +/* 6502 */ {(16<<2)|3,{97,101,103}}, +/* 6503 */ {(16<<2)|3,{97,101,104}}, +/* 6504 */ {(16<<2)|3,{97,101,108}}, +/* 6505 */ {(16<<2)|3,{97,101,109}}, +/* 6506 */ {(16<<2)|3,{97,101,110}}, +/* 6507 */ {(16<<2)|3,{97,101,112}}, +/* 6508 */ {(16<<2)|3,{97,101,114}}, +/* 6509 */ {(16<<2)|3,{97,101,117}}, +/* 6510 */ {(10<<2)|2,{97,101,0}}, +/* 6511 */ {(10<<2)|2,{97,101,0}}, +/* 6512 */ {(10<<2)|2,{97,101,0}}, +/* 6513 */ {(10<<2)|2,{97,101,0}}, +/* 6514 */ {(10<<2)|2,{97,101,0}}, +/* 6515 */ {(10<<2)|2,{97,101,0}}, +/* 6516 */ {(10<<2)|2,{97,101,0}}, +/* 6517 */ {(10<<2)|2,{97,101,0}}, +/* 6518 */ {(10<<2)|2,{97,101,0}}, +/* 6519 */ {(10<<2)|2,{97,101,0}}, +/* 6520 */ {(10<<2)|2,{97,101,0}}, +/* 6521 */ {(10<<2)|2,{97,101,0}}, +/* 6522 */ {(10<<2)|2,{97,101,0}}, +/* 6523 */ {(10<<2)|2,{97,101,0}}, +/* 6524 */ {(10<<2)|2,{97,101,0}}, +/* 6525 */ {(10<<2)|2,{97,101,0}}, +/* 6526 */ {(10<<2)|2,{97,101,0}}, +/* 6527 */ {(10<<2)|2,{97,101,0}}, +/* 6528 */ {(15<<2)|3,{97,105,48}}, +/* 6529 */ {(15<<2)|3,{97,105,48}}, +/* 6530 */ {(15<<2)|3,{97,105,49}}, +/* 6531 */ {(15<<2)|3,{97,105,49}}, +/* 6532 */ {(15<<2)|3,{97,105,50}}, +/* 6533 */ {(15<<2)|3,{97,105,50}}, +/* 6534 */ {(15<<2)|3,{97,105,97}}, +/* 6535 */ {(15<<2)|3,{97,105,97}}, +/* 6536 */ {(15<<2)|3,{97,105,99}}, +/* 6537 */ {(15<<2)|3,{97,105,99}}, +/* 6538 */ {(15<<2)|3,{97,105,101}}, +/* 6539 */ {(15<<2)|3,{97,105,101}}, +/* 6540 */ {(15<<2)|3,{97,105,105}}, +/* 6541 */ {(15<<2)|3,{97,105,105}}, +/* 6542 */ {(15<<2)|3,{97,105,111}}, +/* 6543 */ {(15<<2)|3,{97,105,111}}, +/* 6544 */ {(15<<2)|3,{97,105,115}}, +/* 6545 */ {(15<<2)|3,{97,105,115}}, +/* 6546 */ {(15<<2)|3,{97,105,116}}, +/* 6547 */ {(15<<2)|3,{97,105,116}}, +/* 6548 */ {(16<<2)|3,{97,105,32}}, +/* 6549 */ {(16<<2)|3,{97,105,37}}, +/* 6550 */ {(16<<2)|3,{97,105,45}}, +/* 6551 */ {(16<<2)|3,{97,105,46}}, +/* 6552 */ {(16<<2)|3,{97,105,47}}, +/* 6553 */ {(16<<2)|3,{97,105,51}}, +/* 6554 */ {(16<<2)|3,{97,105,52}}, +/* 6555 */ {(16<<2)|3,{97,105,53}}, +/* 6556 */ {(16<<2)|3,{97,105,54}}, +/* 6557 */ {(16<<2)|3,{97,105,55}}, +/* 6558 */ {(16<<2)|3,{97,105,56}}, +/* 6559 */ {(16<<2)|3,{97,105,57}}, +/* 6560 */ {(16<<2)|3,{97,105,61}}, +/* 6561 */ {(16<<2)|3,{97,105,65}}, +/* 6562 */ {(16<<2)|3,{97,105,95}}, +/* 6563 */ {(16<<2)|3,{97,105,98}}, +/* 6564 */ {(16<<2)|3,{97,105,100}}, +/* 6565 */ {(16<<2)|3,{97,105,102}}, +/* 6566 */ {(16<<2)|3,{97,105,103}}, +/* 6567 */ {(16<<2)|3,{97,105,104}}, +/* 6568 */ {(16<<2)|3,{97,105,108}}, +/* 6569 */ {(16<<2)|3,{97,105,109}}, +/* 6570 */ {(16<<2)|3,{97,105,110}}, +/* 6571 */ {(16<<2)|3,{97,105,112}}, +/* 6572 */ {(16<<2)|3,{97,105,114}}, +/* 6573 */ {(16<<2)|3,{97,105,117}}, +/* 6574 */ {(10<<2)|2,{97,105,0}}, +/* 6575 */ {(10<<2)|2,{97,105,0}}, +/* 6576 */ {(10<<2)|2,{97,105,0}}, +/* 6577 */ {(10<<2)|2,{97,105,0}}, +/* 6578 */ {(10<<2)|2,{97,105,0}}, +/* 6579 */ {(10<<2)|2,{97,105,0}}, +/* 6580 */ {(10<<2)|2,{97,105,0}}, +/* 6581 */ {(10<<2)|2,{97,105,0}}, +/* 6582 */ {(10<<2)|2,{97,105,0}}, +/* 6583 */ {(10<<2)|2,{97,105,0}}, +/* 6584 */ {(10<<2)|2,{97,105,0}}, +/* 6585 */ {(10<<2)|2,{97,105,0}}, +/* 6586 */ {(10<<2)|2,{97,105,0}}, +/* 6587 */ {(10<<2)|2,{97,105,0}}, +/* 6588 */ {(10<<2)|2,{97,105,0}}, +/* 6589 */ {(10<<2)|2,{97,105,0}}, +/* 6590 */ {(10<<2)|2,{97,105,0}}, +/* 6591 */ {(10<<2)|2,{97,105,0}}, +/* 6592 */ {(15<<2)|3,{97,111,48}}, +/* 6593 */ {(15<<2)|3,{97,111,48}}, +/* 6594 */ {(15<<2)|3,{97,111,49}}, +/* 6595 */ {(15<<2)|3,{97,111,49}}, +/* 6596 */ {(15<<2)|3,{97,111,50}}, +/* 6597 */ {(15<<2)|3,{97,111,50}}, +/* 6598 */ {(15<<2)|3,{97,111,97}}, +/* 6599 */ {(15<<2)|3,{97,111,97}}, +/* 6600 */ {(15<<2)|3,{97,111,99}}, +/* 6601 */ {(15<<2)|3,{97,111,99}}, +/* 6602 */ {(15<<2)|3,{97,111,101}}, +/* 6603 */ {(15<<2)|3,{97,111,101}}, +/* 6604 */ {(15<<2)|3,{97,111,105}}, +/* 6605 */ {(15<<2)|3,{97,111,105}}, +/* 6606 */ {(15<<2)|3,{97,111,111}}, +/* 6607 */ {(15<<2)|3,{97,111,111}}, +/* 6608 */ {(15<<2)|3,{97,111,115}}, +/* 6609 */ {(15<<2)|3,{97,111,115}}, +/* 6610 */ {(15<<2)|3,{97,111,116}}, +/* 6611 */ {(15<<2)|3,{97,111,116}}, +/* 6612 */ {(16<<2)|3,{97,111,32}}, +/* 6613 */ {(16<<2)|3,{97,111,37}}, +/* 6614 */ {(16<<2)|3,{97,111,45}}, +/* 6615 */ {(16<<2)|3,{97,111,46}}, +/* 6616 */ {(16<<2)|3,{97,111,47}}, +/* 6617 */ {(16<<2)|3,{97,111,51}}, +/* 6618 */ {(16<<2)|3,{97,111,52}}, +/* 6619 */ {(16<<2)|3,{97,111,53}}, +/* 6620 */ {(16<<2)|3,{97,111,54}}, +/* 6621 */ {(16<<2)|3,{97,111,55}}, +/* 6622 */ {(16<<2)|3,{97,111,56}}, +/* 6623 */ {(16<<2)|3,{97,111,57}}, +/* 6624 */ {(16<<2)|3,{97,111,61}}, +/* 6625 */ {(16<<2)|3,{97,111,65}}, +/* 6626 */ {(16<<2)|3,{97,111,95}}, +/* 6627 */ {(16<<2)|3,{97,111,98}}, +/* 6628 */ {(16<<2)|3,{97,111,100}}, +/* 6629 */ {(16<<2)|3,{97,111,102}}, +/* 6630 */ {(16<<2)|3,{97,111,103}}, +/* 6631 */ {(16<<2)|3,{97,111,104}}, +/* 6632 */ {(16<<2)|3,{97,111,108}}, +/* 6633 */ {(16<<2)|3,{97,111,109}}, +/* 6634 */ {(16<<2)|3,{97,111,110}}, +/* 6635 */ {(16<<2)|3,{97,111,112}}, +/* 6636 */ {(16<<2)|3,{97,111,114}}, +/* 6637 */ {(16<<2)|3,{97,111,117}}, +/* 6638 */ {(10<<2)|2,{97,111,0}}, +/* 6639 */ {(10<<2)|2,{97,111,0}}, +/* 6640 */ {(10<<2)|2,{97,111,0}}, +/* 6641 */ {(10<<2)|2,{97,111,0}}, +/* 6642 */ {(10<<2)|2,{97,111,0}}, +/* 6643 */ {(10<<2)|2,{97,111,0}}, +/* 6644 */ {(10<<2)|2,{97,111,0}}, +/* 6645 */ {(10<<2)|2,{97,111,0}}, +/* 6646 */ {(10<<2)|2,{97,111,0}}, +/* 6647 */ {(10<<2)|2,{97,111,0}}, +/* 6648 */ {(10<<2)|2,{97,111,0}}, +/* 6649 */ {(10<<2)|2,{97,111,0}}, +/* 6650 */ {(10<<2)|2,{97,111,0}}, +/* 6651 */ {(10<<2)|2,{97,111,0}}, +/* 6652 */ {(10<<2)|2,{97,111,0}}, +/* 6653 */ {(10<<2)|2,{97,111,0}}, +/* 6654 */ {(10<<2)|2,{97,111,0}}, +/* 6655 */ {(10<<2)|2,{97,111,0}}, +/* 6656 */ {(15<<2)|3,{97,115,48}}, +/* 6657 */ {(15<<2)|3,{97,115,48}}, +/* 6658 */ {(15<<2)|3,{97,115,49}}, +/* 6659 */ {(15<<2)|3,{97,115,49}}, +/* 6660 */ {(15<<2)|3,{97,115,50}}, +/* 6661 */ {(15<<2)|3,{97,115,50}}, +/* 6662 */ {(15<<2)|3,{97,115,97}}, +/* 6663 */ {(15<<2)|3,{97,115,97}}, +/* 6664 */ {(15<<2)|3,{97,115,99}}, +/* 6665 */ {(15<<2)|3,{97,115,99}}, +/* 6666 */ {(15<<2)|3,{97,115,101}}, +/* 6667 */ {(15<<2)|3,{97,115,101}}, +/* 6668 */ {(15<<2)|3,{97,115,105}}, +/* 6669 */ {(15<<2)|3,{97,115,105}}, +/* 6670 */ {(15<<2)|3,{97,115,111}}, +/* 6671 */ {(15<<2)|3,{97,115,111}}, +/* 6672 */ {(15<<2)|3,{97,115,115}}, +/* 6673 */ {(15<<2)|3,{97,115,115}}, +/* 6674 */ {(15<<2)|3,{97,115,116}}, +/* 6675 */ {(15<<2)|3,{97,115,116}}, +/* 6676 */ {(16<<2)|3,{97,115,32}}, +/* 6677 */ {(16<<2)|3,{97,115,37}}, +/* 6678 */ {(16<<2)|3,{97,115,45}}, +/* 6679 */ {(16<<2)|3,{97,115,46}}, +/* 6680 */ {(16<<2)|3,{97,115,47}}, +/* 6681 */ {(16<<2)|3,{97,115,51}}, +/* 6682 */ {(16<<2)|3,{97,115,52}}, +/* 6683 */ {(16<<2)|3,{97,115,53}}, +/* 6684 */ {(16<<2)|3,{97,115,54}}, +/* 6685 */ {(16<<2)|3,{97,115,55}}, +/* 6686 */ {(16<<2)|3,{97,115,56}}, +/* 6687 */ {(16<<2)|3,{97,115,57}}, +/* 6688 */ {(16<<2)|3,{97,115,61}}, +/* 6689 */ {(16<<2)|3,{97,115,65}}, +/* 6690 */ {(16<<2)|3,{97,115,95}}, +/* 6691 */ {(16<<2)|3,{97,115,98}}, +/* 6692 */ {(16<<2)|3,{97,115,100}}, +/* 6693 */ {(16<<2)|3,{97,115,102}}, +/* 6694 */ {(16<<2)|3,{97,115,103}}, +/* 6695 */ {(16<<2)|3,{97,115,104}}, +/* 6696 */ {(16<<2)|3,{97,115,108}}, +/* 6697 */ {(16<<2)|3,{97,115,109}}, +/* 6698 */ {(16<<2)|3,{97,115,110}}, +/* 6699 */ {(16<<2)|3,{97,115,112}}, +/* 6700 */ {(16<<2)|3,{97,115,114}}, +/* 6701 */ {(16<<2)|3,{97,115,117}}, +/* 6702 */ {(10<<2)|2,{97,115,0}}, +/* 6703 */ {(10<<2)|2,{97,115,0}}, +/* 6704 */ {(10<<2)|2,{97,115,0}}, +/* 6705 */ {(10<<2)|2,{97,115,0}}, +/* 6706 */ {(10<<2)|2,{97,115,0}}, +/* 6707 */ {(10<<2)|2,{97,115,0}}, +/* 6708 */ {(10<<2)|2,{97,115,0}}, +/* 6709 */ {(10<<2)|2,{97,115,0}}, +/* 6710 */ {(10<<2)|2,{97,115,0}}, +/* 6711 */ {(10<<2)|2,{97,115,0}}, +/* 6712 */ {(10<<2)|2,{97,115,0}}, +/* 6713 */ {(10<<2)|2,{97,115,0}}, +/* 6714 */ {(10<<2)|2,{97,115,0}}, +/* 6715 */ {(10<<2)|2,{97,115,0}}, +/* 6716 */ {(10<<2)|2,{97,115,0}}, +/* 6717 */ {(10<<2)|2,{97,115,0}}, +/* 6718 */ {(10<<2)|2,{97,115,0}}, +/* 6719 */ {(10<<2)|2,{97,115,0}}, +/* 6720 */ {(15<<2)|3,{97,116,48}}, +/* 6721 */ {(15<<2)|3,{97,116,48}}, +/* 6722 */ {(15<<2)|3,{97,116,49}}, +/* 6723 */ {(15<<2)|3,{97,116,49}}, +/* 6724 */ {(15<<2)|3,{97,116,50}}, +/* 6725 */ {(15<<2)|3,{97,116,50}}, +/* 6726 */ {(15<<2)|3,{97,116,97}}, +/* 6727 */ {(15<<2)|3,{97,116,97}}, +/* 6728 */ {(15<<2)|3,{97,116,99}}, +/* 6729 */ {(15<<2)|3,{97,116,99}}, +/* 6730 */ {(15<<2)|3,{97,116,101}}, +/* 6731 */ {(15<<2)|3,{97,116,101}}, +/* 6732 */ {(15<<2)|3,{97,116,105}}, +/* 6733 */ {(15<<2)|3,{97,116,105}}, +/* 6734 */ {(15<<2)|3,{97,116,111}}, +/* 6735 */ {(15<<2)|3,{97,116,111}}, +/* 6736 */ {(15<<2)|3,{97,116,115}}, +/* 6737 */ {(15<<2)|3,{97,116,115}}, +/* 6738 */ {(15<<2)|3,{97,116,116}}, +/* 6739 */ {(15<<2)|3,{97,116,116}}, +/* 6740 */ {(16<<2)|3,{97,116,32}}, +/* 6741 */ {(16<<2)|3,{97,116,37}}, +/* 6742 */ {(16<<2)|3,{97,116,45}}, +/* 6743 */ {(16<<2)|3,{97,116,46}}, +/* 6744 */ {(16<<2)|3,{97,116,47}}, +/* 6745 */ {(16<<2)|3,{97,116,51}}, +/* 6746 */ {(16<<2)|3,{97,116,52}}, +/* 6747 */ {(16<<2)|3,{97,116,53}}, +/* 6748 */ {(16<<2)|3,{97,116,54}}, +/* 6749 */ {(16<<2)|3,{97,116,55}}, +/* 6750 */ {(16<<2)|3,{97,116,56}}, +/* 6751 */ {(16<<2)|3,{97,116,57}}, +/* 6752 */ {(16<<2)|3,{97,116,61}}, +/* 6753 */ {(16<<2)|3,{97,116,65}}, +/* 6754 */ {(16<<2)|3,{97,116,95}}, +/* 6755 */ {(16<<2)|3,{97,116,98}}, +/* 6756 */ {(16<<2)|3,{97,116,100}}, +/* 6757 */ {(16<<2)|3,{97,116,102}}, +/* 6758 */ {(16<<2)|3,{97,116,103}}, +/* 6759 */ {(16<<2)|3,{97,116,104}}, +/* 6760 */ {(16<<2)|3,{97,116,108}}, +/* 6761 */ {(16<<2)|3,{97,116,109}}, +/* 6762 */ {(16<<2)|3,{97,116,110}}, +/* 6763 */ {(16<<2)|3,{97,116,112}}, +/* 6764 */ {(16<<2)|3,{97,116,114}}, +/* 6765 */ {(16<<2)|3,{97,116,117}}, +/* 6766 */ {(10<<2)|2,{97,116,0}}, +/* 6767 */ {(10<<2)|2,{97,116,0}}, +/* 6768 */ {(10<<2)|2,{97,116,0}}, +/* 6769 */ {(10<<2)|2,{97,116,0}}, +/* 6770 */ {(10<<2)|2,{97,116,0}}, +/* 6771 */ {(10<<2)|2,{97,116,0}}, +/* 6772 */ {(10<<2)|2,{97,116,0}}, +/* 6773 */ {(10<<2)|2,{97,116,0}}, +/* 6774 */ {(10<<2)|2,{97,116,0}}, +/* 6775 */ {(10<<2)|2,{97,116,0}}, +/* 6776 */ {(10<<2)|2,{97,116,0}}, +/* 6777 */ {(10<<2)|2,{97,116,0}}, +/* 6778 */ {(10<<2)|2,{97,116,0}}, +/* 6779 */ {(10<<2)|2,{97,116,0}}, +/* 6780 */ {(10<<2)|2,{97,116,0}}, +/* 6781 */ {(10<<2)|2,{97,116,0}}, +/* 6782 */ {(10<<2)|2,{97,116,0}}, +/* 6783 */ {(10<<2)|2,{97,116,0}}, +/* 6784 */ {(16<<2)|3,{97,32,48}}, +/* 6785 */ {(16<<2)|3,{97,32,49}}, +/* 6786 */ {(16<<2)|3,{97,32,50}}, +/* 6787 */ {(16<<2)|3,{97,32,97}}, +/* 6788 */ {(16<<2)|3,{97,32,99}}, +/* 6789 */ {(16<<2)|3,{97,32,101}}, +/* 6790 */ {(16<<2)|3,{97,32,105}}, +/* 6791 */ {(16<<2)|3,{97,32,111}}, +/* 6792 */ {(16<<2)|3,{97,32,115}}, +/* 6793 */ {(16<<2)|3,{97,32,116}}, +/* 6794 */ {(11<<2)|2,{97,32,0}}, +/* 6795 */ {(11<<2)|2,{97,32,0}}, +/* 6796 */ {(11<<2)|2,{97,32,0}}, +/* 6797 */ {(11<<2)|2,{97,32,0}}, +/* 6798 */ {(11<<2)|2,{97,32,0}}, +/* 6799 */ {(11<<2)|2,{97,32,0}}, +/* 6800 */ {(11<<2)|2,{97,32,0}}, +/* 6801 */ {(11<<2)|2,{97,32,0}}, +/* 6802 */ {(11<<2)|2,{97,32,0}}, +/* 6803 */ {(11<<2)|2,{97,32,0}}, +/* 6804 */ {(11<<2)|2,{97,32,0}}, +/* 6805 */ {(11<<2)|2,{97,32,0}}, +/* 6806 */ {(11<<2)|2,{97,32,0}}, +/* 6807 */ {(11<<2)|2,{97,32,0}}, +/* 6808 */ {(11<<2)|2,{97,32,0}}, +/* 6809 */ {(11<<2)|2,{97,32,0}}, +/* 6810 */ {(11<<2)|2,{97,32,0}}, +/* 6811 */ {(11<<2)|2,{97,32,0}}, +/* 6812 */ {(11<<2)|2,{97,32,0}}, +/* 6813 */ {(11<<2)|2,{97,32,0}}, +/* 6814 */ {(11<<2)|2,{97,32,0}}, +/* 6815 */ {(11<<2)|2,{97,32,0}}, +/* 6816 */ {(16<<2)|3,{97,37,48}}, +/* 6817 */ {(16<<2)|3,{97,37,49}}, +/* 6818 */ {(16<<2)|3,{97,37,50}}, +/* 6819 */ {(16<<2)|3,{97,37,97}}, +/* 6820 */ {(16<<2)|3,{97,37,99}}, +/* 6821 */ {(16<<2)|3,{97,37,101}}, +/* 6822 */ {(16<<2)|3,{97,37,105}}, +/* 6823 */ {(16<<2)|3,{97,37,111}}, +/* 6824 */ {(16<<2)|3,{97,37,115}}, +/* 6825 */ {(16<<2)|3,{97,37,116}}, +/* 6826 */ {(11<<2)|2,{97,37,0}}, +/* 6827 */ {(11<<2)|2,{97,37,0}}, +/* 6828 */ {(11<<2)|2,{97,37,0}}, +/* 6829 */ {(11<<2)|2,{97,37,0}}, +/* 6830 */ {(11<<2)|2,{97,37,0}}, +/* 6831 */ {(11<<2)|2,{97,37,0}}, +/* 6832 */ {(11<<2)|2,{97,37,0}}, +/* 6833 */ {(11<<2)|2,{97,37,0}}, +/* 6834 */ {(11<<2)|2,{97,37,0}}, +/* 6835 */ {(11<<2)|2,{97,37,0}}, +/* 6836 */ {(11<<2)|2,{97,37,0}}, +/* 6837 */ {(11<<2)|2,{97,37,0}}, +/* 6838 */ {(11<<2)|2,{97,37,0}}, +/* 6839 */ {(11<<2)|2,{97,37,0}}, +/* 6840 */ {(11<<2)|2,{97,37,0}}, +/* 6841 */ {(11<<2)|2,{97,37,0}}, +/* 6842 */ {(11<<2)|2,{97,37,0}}, +/* 6843 */ {(11<<2)|2,{97,37,0}}, +/* 6844 */ {(11<<2)|2,{97,37,0}}, +/* 6845 */ {(11<<2)|2,{97,37,0}}, +/* 6846 */ {(11<<2)|2,{97,37,0}}, +/* 6847 */ {(11<<2)|2,{97,37,0}}, +/* 6848 */ {(16<<2)|3,{97,45,48}}, +/* 6849 */ {(16<<2)|3,{97,45,49}}, +/* 6850 */ {(16<<2)|3,{97,45,50}}, +/* 6851 */ {(16<<2)|3,{97,45,97}}, +/* 6852 */ {(16<<2)|3,{97,45,99}}, +/* 6853 */ {(16<<2)|3,{97,45,101}}, +/* 6854 */ {(16<<2)|3,{97,45,105}}, +/* 6855 */ {(16<<2)|3,{97,45,111}}, +/* 6856 */ {(16<<2)|3,{97,45,115}}, +/* 6857 */ {(16<<2)|3,{97,45,116}}, +/* 6858 */ {(11<<2)|2,{97,45,0}}, +/* 6859 */ {(11<<2)|2,{97,45,0}}, +/* 6860 */ {(11<<2)|2,{97,45,0}}, +/* 6861 */ {(11<<2)|2,{97,45,0}}, +/* 6862 */ {(11<<2)|2,{97,45,0}}, +/* 6863 */ {(11<<2)|2,{97,45,0}}, +/* 6864 */ {(11<<2)|2,{97,45,0}}, +/* 6865 */ {(11<<2)|2,{97,45,0}}, +/* 6866 */ {(11<<2)|2,{97,45,0}}, +/* 6867 */ {(11<<2)|2,{97,45,0}}, +/* 6868 */ {(11<<2)|2,{97,45,0}}, +/* 6869 */ {(11<<2)|2,{97,45,0}}, +/* 6870 */ {(11<<2)|2,{97,45,0}}, +/* 6871 */ {(11<<2)|2,{97,45,0}}, +/* 6872 */ {(11<<2)|2,{97,45,0}}, +/* 6873 */ {(11<<2)|2,{97,45,0}}, +/* 6874 */ {(11<<2)|2,{97,45,0}}, +/* 6875 */ {(11<<2)|2,{97,45,0}}, +/* 6876 */ {(11<<2)|2,{97,45,0}}, +/* 6877 */ {(11<<2)|2,{97,45,0}}, +/* 6878 */ {(11<<2)|2,{97,45,0}}, +/* 6879 */ {(11<<2)|2,{97,45,0}}, +/* 6880 */ {(16<<2)|3,{97,46,48}}, +/* 6881 */ {(16<<2)|3,{97,46,49}}, +/* 6882 */ {(16<<2)|3,{97,46,50}}, +/* 6883 */ {(16<<2)|3,{97,46,97}}, +/* 6884 */ {(16<<2)|3,{97,46,99}}, +/* 6885 */ {(16<<2)|3,{97,46,101}}, +/* 6886 */ {(16<<2)|3,{97,46,105}}, +/* 6887 */ {(16<<2)|3,{97,46,111}}, +/* 6888 */ {(16<<2)|3,{97,46,115}}, +/* 6889 */ {(16<<2)|3,{97,46,116}}, +/* 6890 */ {(11<<2)|2,{97,46,0}}, +/* 6891 */ {(11<<2)|2,{97,46,0}}, +/* 6892 */ {(11<<2)|2,{97,46,0}}, +/* 6893 */ {(11<<2)|2,{97,46,0}}, +/* 6894 */ {(11<<2)|2,{97,46,0}}, +/* 6895 */ {(11<<2)|2,{97,46,0}}, +/* 6896 */ {(11<<2)|2,{97,46,0}}, +/* 6897 */ {(11<<2)|2,{97,46,0}}, +/* 6898 */ {(11<<2)|2,{97,46,0}}, +/* 6899 */ {(11<<2)|2,{97,46,0}}, +/* 6900 */ {(11<<2)|2,{97,46,0}}, +/* 6901 */ {(11<<2)|2,{97,46,0}}, +/* 6902 */ {(11<<2)|2,{97,46,0}}, +/* 6903 */ {(11<<2)|2,{97,46,0}}, +/* 6904 */ {(11<<2)|2,{97,46,0}}, +/* 6905 */ {(11<<2)|2,{97,46,0}}, +/* 6906 */ {(11<<2)|2,{97,46,0}}, +/* 6907 */ {(11<<2)|2,{97,46,0}}, +/* 6908 */ {(11<<2)|2,{97,46,0}}, +/* 6909 */ {(11<<2)|2,{97,46,0}}, +/* 6910 */ {(11<<2)|2,{97,46,0}}, +/* 6911 */ {(11<<2)|2,{97,46,0}}, +/* 6912 */ {(16<<2)|3,{97,47,48}}, +/* 6913 */ {(16<<2)|3,{97,47,49}}, +/* 6914 */ {(16<<2)|3,{97,47,50}}, +/* 6915 */ {(16<<2)|3,{97,47,97}}, +/* 6916 */ {(16<<2)|3,{97,47,99}}, +/* 6917 */ {(16<<2)|3,{97,47,101}}, +/* 6918 */ {(16<<2)|3,{97,47,105}}, +/* 6919 */ {(16<<2)|3,{97,47,111}}, +/* 6920 */ {(16<<2)|3,{97,47,115}}, +/* 6921 */ {(16<<2)|3,{97,47,116}}, +/* 6922 */ {(11<<2)|2,{97,47,0}}, +/* 6923 */ {(11<<2)|2,{97,47,0}}, +/* 6924 */ {(11<<2)|2,{97,47,0}}, +/* 6925 */ {(11<<2)|2,{97,47,0}}, +/* 6926 */ {(11<<2)|2,{97,47,0}}, +/* 6927 */ {(11<<2)|2,{97,47,0}}, +/* 6928 */ {(11<<2)|2,{97,47,0}}, +/* 6929 */ {(11<<2)|2,{97,47,0}}, +/* 6930 */ {(11<<2)|2,{97,47,0}}, +/* 6931 */ {(11<<2)|2,{97,47,0}}, +/* 6932 */ {(11<<2)|2,{97,47,0}}, +/* 6933 */ {(11<<2)|2,{97,47,0}}, +/* 6934 */ {(11<<2)|2,{97,47,0}}, +/* 6935 */ {(11<<2)|2,{97,47,0}}, +/* 6936 */ {(11<<2)|2,{97,47,0}}, +/* 6937 */ {(11<<2)|2,{97,47,0}}, +/* 6938 */ {(11<<2)|2,{97,47,0}}, +/* 6939 */ {(11<<2)|2,{97,47,0}}, +/* 6940 */ {(11<<2)|2,{97,47,0}}, +/* 6941 */ {(11<<2)|2,{97,47,0}}, +/* 6942 */ {(11<<2)|2,{97,47,0}}, +/* 6943 */ {(11<<2)|2,{97,47,0}}, +/* 6944 */ {(16<<2)|3,{97,51,48}}, +/* 6945 */ {(16<<2)|3,{97,51,49}}, +/* 6946 */ {(16<<2)|3,{97,51,50}}, +/* 6947 */ {(16<<2)|3,{97,51,97}}, +/* 6948 */ {(16<<2)|3,{97,51,99}}, +/* 6949 */ {(16<<2)|3,{97,51,101}}, +/* 6950 */ {(16<<2)|3,{97,51,105}}, +/* 6951 */ {(16<<2)|3,{97,51,111}}, +/* 6952 */ {(16<<2)|3,{97,51,115}}, +/* 6953 */ {(16<<2)|3,{97,51,116}}, +/* 6954 */ {(11<<2)|2,{97,51,0}}, +/* 6955 */ {(11<<2)|2,{97,51,0}}, +/* 6956 */ {(11<<2)|2,{97,51,0}}, +/* 6957 */ {(11<<2)|2,{97,51,0}}, +/* 6958 */ {(11<<2)|2,{97,51,0}}, +/* 6959 */ {(11<<2)|2,{97,51,0}}, +/* 6960 */ {(11<<2)|2,{97,51,0}}, +/* 6961 */ {(11<<2)|2,{97,51,0}}, +/* 6962 */ {(11<<2)|2,{97,51,0}}, +/* 6963 */ {(11<<2)|2,{97,51,0}}, +/* 6964 */ {(11<<2)|2,{97,51,0}}, +/* 6965 */ {(11<<2)|2,{97,51,0}}, +/* 6966 */ {(11<<2)|2,{97,51,0}}, +/* 6967 */ {(11<<2)|2,{97,51,0}}, +/* 6968 */ {(11<<2)|2,{97,51,0}}, +/* 6969 */ {(11<<2)|2,{97,51,0}}, +/* 6970 */ {(11<<2)|2,{97,51,0}}, +/* 6971 */ {(11<<2)|2,{97,51,0}}, +/* 6972 */ {(11<<2)|2,{97,51,0}}, +/* 6973 */ {(11<<2)|2,{97,51,0}}, +/* 6974 */ {(11<<2)|2,{97,51,0}}, +/* 6975 */ {(11<<2)|2,{97,51,0}}, +/* 6976 */ {(16<<2)|3,{97,52,48}}, +/* 6977 */ {(16<<2)|3,{97,52,49}}, +/* 6978 */ {(16<<2)|3,{97,52,50}}, +/* 6979 */ {(16<<2)|3,{97,52,97}}, +/* 6980 */ {(16<<2)|3,{97,52,99}}, +/* 6981 */ {(16<<2)|3,{97,52,101}}, +/* 6982 */ {(16<<2)|3,{97,52,105}}, +/* 6983 */ {(16<<2)|3,{97,52,111}}, +/* 6984 */ {(16<<2)|3,{97,52,115}}, +/* 6985 */ {(16<<2)|3,{97,52,116}}, +/* 6986 */ {(11<<2)|2,{97,52,0}}, +/* 6987 */ {(11<<2)|2,{97,52,0}}, +/* 6988 */ {(11<<2)|2,{97,52,0}}, +/* 6989 */ {(11<<2)|2,{97,52,0}}, +/* 6990 */ {(11<<2)|2,{97,52,0}}, +/* 6991 */ {(11<<2)|2,{97,52,0}}, +/* 6992 */ {(11<<2)|2,{97,52,0}}, +/* 6993 */ {(11<<2)|2,{97,52,0}}, +/* 6994 */ {(11<<2)|2,{97,52,0}}, +/* 6995 */ {(11<<2)|2,{97,52,0}}, +/* 6996 */ {(11<<2)|2,{97,52,0}}, +/* 6997 */ {(11<<2)|2,{97,52,0}}, +/* 6998 */ {(11<<2)|2,{97,52,0}}, +/* 6999 */ {(11<<2)|2,{97,52,0}}, +/* 7000 */ {(11<<2)|2,{97,52,0}}, +/* 7001 */ {(11<<2)|2,{97,52,0}}, +/* 7002 */ {(11<<2)|2,{97,52,0}}, +/* 7003 */ {(11<<2)|2,{97,52,0}}, +/* 7004 */ {(11<<2)|2,{97,52,0}}, +/* 7005 */ {(11<<2)|2,{97,52,0}}, +/* 7006 */ {(11<<2)|2,{97,52,0}}, +/* 7007 */ {(11<<2)|2,{97,52,0}}, +/* 7008 */ {(16<<2)|3,{97,53,48}}, +/* 7009 */ {(16<<2)|3,{97,53,49}}, +/* 7010 */ {(16<<2)|3,{97,53,50}}, +/* 7011 */ {(16<<2)|3,{97,53,97}}, +/* 7012 */ {(16<<2)|3,{97,53,99}}, +/* 7013 */ {(16<<2)|3,{97,53,101}}, +/* 7014 */ {(16<<2)|3,{97,53,105}}, +/* 7015 */ {(16<<2)|3,{97,53,111}}, +/* 7016 */ {(16<<2)|3,{97,53,115}}, +/* 7017 */ {(16<<2)|3,{97,53,116}}, +/* 7018 */ {(11<<2)|2,{97,53,0}}, +/* 7019 */ {(11<<2)|2,{97,53,0}}, +/* 7020 */ {(11<<2)|2,{97,53,0}}, +/* 7021 */ {(11<<2)|2,{97,53,0}}, +/* 7022 */ {(11<<2)|2,{97,53,0}}, +/* 7023 */ {(11<<2)|2,{97,53,0}}, +/* 7024 */ {(11<<2)|2,{97,53,0}}, +/* 7025 */ {(11<<2)|2,{97,53,0}}, +/* 7026 */ {(11<<2)|2,{97,53,0}}, +/* 7027 */ {(11<<2)|2,{97,53,0}}, +/* 7028 */ {(11<<2)|2,{97,53,0}}, +/* 7029 */ {(11<<2)|2,{97,53,0}}, +/* 7030 */ {(11<<2)|2,{97,53,0}}, +/* 7031 */ {(11<<2)|2,{97,53,0}}, +/* 7032 */ {(11<<2)|2,{97,53,0}}, +/* 7033 */ {(11<<2)|2,{97,53,0}}, +/* 7034 */ {(11<<2)|2,{97,53,0}}, +/* 7035 */ {(11<<2)|2,{97,53,0}}, +/* 7036 */ {(11<<2)|2,{97,53,0}}, +/* 7037 */ {(11<<2)|2,{97,53,0}}, +/* 7038 */ {(11<<2)|2,{97,53,0}}, +/* 7039 */ {(11<<2)|2,{97,53,0}}, +/* 7040 */ {(16<<2)|3,{97,54,48}}, +/* 7041 */ {(16<<2)|3,{97,54,49}}, +/* 7042 */ {(16<<2)|3,{97,54,50}}, +/* 7043 */ {(16<<2)|3,{97,54,97}}, +/* 7044 */ {(16<<2)|3,{97,54,99}}, +/* 7045 */ {(16<<2)|3,{97,54,101}}, +/* 7046 */ {(16<<2)|3,{97,54,105}}, +/* 7047 */ {(16<<2)|3,{97,54,111}}, +/* 7048 */ {(16<<2)|3,{97,54,115}}, +/* 7049 */ {(16<<2)|3,{97,54,116}}, +/* 7050 */ {(11<<2)|2,{97,54,0}}, +/* 7051 */ {(11<<2)|2,{97,54,0}}, +/* 7052 */ {(11<<2)|2,{97,54,0}}, +/* 7053 */ {(11<<2)|2,{97,54,0}}, +/* 7054 */ {(11<<2)|2,{97,54,0}}, +/* 7055 */ {(11<<2)|2,{97,54,0}}, +/* 7056 */ {(11<<2)|2,{97,54,0}}, +/* 7057 */ {(11<<2)|2,{97,54,0}}, +/* 7058 */ {(11<<2)|2,{97,54,0}}, +/* 7059 */ {(11<<2)|2,{97,54,0}}, +/* 7060 */ {(11<<2)|2,{97,54,0}}, +/* 7061 */ {(11<<2)|2,{97,54,0}}, +/* 7062 */ {(11<<2)|2,{97,54,0}}, +/* 7063 */ {(11<<2)|2,{97,54,0}}, +/* 7064 */ {(11<<2)|2,{97,54,0}}, +/* 7065 */ {(11<<2)|2,{97,54,0}}, +/* 7066 */ {(11<<2)|2,{97,54,0}}, +/* 7067 */ {(11<<2)|2,{97,54,0}}, +/* 7068 */ {(11<<2)|2,{97,54,0}}, +/* 7069 */ {(11<<2)|2,{97,54,0}}, +/* 7070 */ {(11<<2)|2,{97,54,0}}, +/* 7071 */ {(11<<2)|2,{97,54,0}}, +/* 7072 */ {(16<<2)|3,{97,55,48}}, +/* 7073 */ {(16<<2)|3,{97,55,49}}, +/* 7074 */ {(16<<2)|3,{97,55,50}}, +/* 7075 */ {(16<<2)|3,{97,55,97}}, +/* 7076 */ {(16<<2)|3,{97,55,99}}, +/* 7077 */ {(16<<2)|3,{97,55,101}}, +/* 7078 */ {(16<<2)|3,{97,55,105}}, +/* 7079 */ {(16<<2)|3,{97,55,111}}, +/* 7080 */ {(16<<2)|3,{97,55,115}}, +/* 7081 */ {(16<<2)|3,{97,55,116}}, +/* 7082 */ {(11<<2)|2,{97,55,0}}, +/* 7083 */ {(11<<2)|2,{97,55,0}}, +/* 7084 */ {(11<<2)|2,{97,55,0}}, +/* 7085 */ {(11<<2)|2,{97,55,0}}, +/* 7086 */ {(11<<2)|2,{97,55,0}}, +/* 7087 */ {(11<<2)|2,{97,55,0}}, +/* 7088 */ {(11<<2)|2,{97,55,0}}, +/* 7089 */ {(11<<2)|2,{97,55,0}}, +/* 7090 */ {(11<<2)|2,{97,55,0}}, +/* 7091 */ {(11<<2)|2,{97,55,0}}, +/* 7092 */ {(11<<2)|2,{97,55,0}}, +/* 7093 */ {(11<<2)|2,{97,55,0}}, +/* 7094 */ {(11<<2)|2,{97,55,0}}, +/* 7095 */ {(11<<2)|2,{97,55,0}}, +/* 7096 */ {(11<<2)|2,{97,55,0}}, +/* 7097 */ {(11<<2)|2,{97,55,0}}, +/* 7098 */ {(11<<2)|2,{97,55,0}}, +/* 7099 */ {(11<<2)|2,{97,55,0}}, +/* 7100 */ {(11<<2)|2,{97,55,0}}, +/* 7101 */ {(11<<2)|2,{97,55,0}}, +/* 7102 */ {(11<<2)|2,{97,55,0}}, +/* 7103 */ {(11<<2)|2,{97,55,0}}, +/* 7104 */ {(16<<2)|3,{97,56,48}}, +/* 7105 */ {(16<<2)|3,{97,56,49}}, +/* 7106 */ {(16<<2)|3,{97,56,50}}, +/* 7107 */ {(16<<2)|3,{97,56,97}}, +/* 7108 */ {(16<<2)|3,{97,56,99}}, +/* 7109 */ {(16<<2)|3,{97,56,101}}, +/* 7110 */ {(16<<2)|3,{97,56,105}}, +/* 7111 */ {(16<<2)|3,{97,56,111}}, +/* 7112 */ {(16<<2)|3,{97,56,115}}, +/* 7113 */ {(16<<2)|3,{97,56,116}}, +/* 7114 */ {(11<<2)|2,{97,56,0}}, +/* 7115 */ {(11<<2)|2,{97,56,0}}, +/* 7116 */ {(11<<2)|2,{97,56,0}}, +/* 7117 */ {(11<<2)|2,{97,56,0}}, +/* 7118 */ {(11<<2)|2,{97,56,0}}, +/* 7119 */ {(11<<2)|2,{97,56,0}}, +/* 7120 */ {(11<<2)|2,{97,56,0}}, +/* 7121 */ {(11<<2)|2,{97,56,0}}, +/* 7122 */ {(11<<2)|2,{97,56,0}}, +/* 7123 */ {(11<<2)|2,{97,56,0}}, +/* 7124 */ {(11<<2)|2,{97,56,0}}, +/* 7125 */ {(11<<2)|2,{97,56,0}}, +/* 7126 */ {(11<<2)|2,{97,56,0}}, +/* 7127 */ {(11<<2)|2,{97,56,0}}, +/* 7128 */ {(11<<2)|2,{97,56,0}}, +/* 7129 */ {(11<<2)|2,{97,56,0}}, +/* 7130 */ {(11<<2)|2,{97,56,0}}, +/* 7131 */ {(11<<2)|2,{97,56,0}}, +/* 7132 */ {(11<<2)|2,{97,56,0}}, +/* 7133 */ {(11<<2)|2,{97,56,0}}, +/* 7134 */ {(11<<2)|2,{97,56,0}}, +/* 7135 */ {(11<<2)|2,{97,56,0}}, +/* 7136 */ {(16<<2)|3,{97,57,48}}, +/* 7137 */ {(16<<2)|3,{97,57,49}}, +/* 7138 */ {(16<<2)|3,{97,57,50}}, +/* 7139 */ {(16<<2)|3,{97,57,97}}, +/* 7140 */ {(16<<2)|3,{97,57,99}}, +/* 7141 */ {(16<<2)|3,{97,57,101}}, +/* 7142 */ {(16<<2)|3,{97,57,105}}, +/* 7143 */ {(16<<2)|3,{97,57,111}}, +/* 7144 */ {(16<<2)|3,{97,57,115}}, +/* 7145 */ {(16<<2)|3,{97,57,116}}, +/* 7146 */ {(11<<2)|2,{97,57,0}}, +/* 7147 */ {(11<<2)|2,{97,57,0}}, +/* 7148 */ {(11<<2)|2,{97,57,0}}, +/* 7149 */ {(11<<2)|2,{97,57,0}}, +/* 7150 */ {(11<<2)|2,{97,57,0}}, +/* 7151 */ {(11<<2)|2,{97,57,0}}, +/* 7152 */ {(11<<2)|2,{97,57,0}}, +/* 7153 */ {(11<<2)|2,{97,57,0}}, +/* 7154 */ {(11<<2)|2,{97,57,0}}, +/* 7155 */ {(11<<2)|2,{97,57,0}}, +/* 7156 */ {(11<<2)|2,{97,57,0}}, +/* 7157 */ {(11<<2)|2,{97,57,0}}, +/* 7158 */ {(11<<2)|2,{97,57,0}}, +/* 7159 */ {(11<<2)|2,{97,57,0}}, +/* 7160 */ {(11<<2)|2,{97,57,0}}, +/* 7161 */ {(11<<2)|2,{97,57,0}}, +/* 7162 */ {(11<<2)|2,{97,57,0}}, +/* 7163 */ {(11<<2)|2,{97,57,0}}, +/* 7164 */ {(11<<2)|2,{97,57,0}}, +/* 7165 */ {(11<<2)|2,{97,57,0}}, +/* 7166 */ {(11<<2)|2,{97,57,0}}, +/* 7167 */ {(11<<2)|2,{97,57,0}}, +/* 7168 */ {(16<<2)|3,{97,61,48}}, +/* 7169 */ {(16<<2)|3,{97,61,49}}, +/* 7170 */ {(16<<2)|3,{97,61,50}}, +/* 7171 */ {(16<<2)|3,{97,61,97}}, +/* 7172 */ {(16<<2)|3,{97,61,99}}, +/* 7173 */ {(16<<2)|3,{97,61,101}}, +/* 7174 */ {(16<<2)|3,{97,61,105}}, +/* 7175 */ {(16<<2)|3,{97,61,111}}, +/* 7176 */ {(16<<2)|3,{97,61,115}}, +/* 7177 */ {(16<<2)|3,{97,61,116}}, +/* 7178 */ {(11<<2)|2,{97,61,0}}, +/* 7179 */ {(11<<2)|2,{97,61,0}}, +/* 7180 */ {(11<<2)|2,{97,61,0}}, +/* 7181 */ {(11<<2)|2,{97,61,0}}, +/* 7182 */ {(11<<2)|2,{97,61,0}}, +/* 7183 */ {(11<<2)|2,{97,61,0}}, +/* 7184 */ {(11<<2)|2,{97,61,0}}, +/* 7185 */ {(11<<2)|2,{97,61,0}}, +/* 7186 */ {(11<<2)|2,{97,61,0}}, +/* 7187 */ {(11<<2)|2,{97,61,0}}, +/* 7188 */ {(11<<2)|2,{97,61,0}}, +/* 7189 */ {(11<<2)|2,{97,61,0}}, +/* 7190 */ {(11<<2)|2,{97,61,0}}, +/* 7191 */ {(11<<2)|2,{97,61,0}}, +/* 7192 */ {(11<<2)|2,{97,61,0}}, +/* 7193 */ {(11<<2)|2,{97,61,0}}, +/* 7194 */ {(11<<2)|2,{97,61,0}}, +/* 7195 */ {(11<<2)|2,{97,61,0}}, +/* 7196 */ {(11<<2)|2,{97,61,0}}, +/* 7197 */ {(11<<2)|2,{97,61,0}}, +/* 7198 */ {(11<<2)|2,{97,61,0}}, +/* 7199 */ {(11<<2)|2,{97,61,0}}, +/* 7200 */ {(16<<2)|3,{97,65,48}}, +/* 7201 */ {(16<<2)|3,{97,65,49}}, +/* 7202 */ {(16<<2)|3,{97,65,50}}, +/* 7203 */ {(16<<2)|3,{97,65,97}}, +/* 7204 */ {(16<<2)|3,{97,65,99}}, +/* 7205 */ {(16<<2)|3,{97,65,101}}, +/* 7206 */ {(16<<2)|3,{97,65,105}}, +/* 7207 */ {(16<<2)|3,{97,65,111}}, +/* 7208 */ {(16<<2)|3,{97,65,115}}, +/* 7209 */ {(16<<2)|3,{97,65,116}}, +/* 7210 */ {(11<<2)|2,{97,65,0}}, +/* 7211 */ {(11<<2)|2,{97,65,0}}, +/* 7212 */ {(11<<2)|2,{97,65,0}}, +/* 7213 */ {(11<<2)|2,{97,65,0}}, +/* 7214 */ {(11<<2)|2,{97,65,0}}, +/* 7215 */ {(11<<2)|2,{97,65,0}}, +/* 7216 */ {(11<<2)|2,{97,65,0}}, +/* 7217 */ {(11<<2)|2,{97,65,0}}, +/* 7218 */ {(11<<2)|2,{97,65,0}}, +/* 7219 */ {(11<<2)|2,{97,65,0}}, +/* 7220 */ {(11<<2)|2,{97,65,0}}, +/* 7221 */ {(11<<2)|2,{97,65,0}}, +/* 7222 */ {(11<<2)|2,{97,65,0}}, +/* 7223 */ {(11<<2)|2,{97,65,0}}, +/* 7224 */ {(11<<2)|2,{97,65,0}}, +/* 7225 */ {(11<<2)|2,{97,65,0}}, +/* 7226 */ {(11<<2)|2,{97,65,0}}, +/* 7227 */ {(11<<2)|2,{97,65,0}}, +/* 7228 */ {(11<<2)|2,{97,65,0}}, +/* 7229 */ {(11<<2)|2,{97,65,0}}, +/* 7230 */ {(11<<2)|2,{97,65,0}}, +/* 7231 */ {(11<<2)|2,{97,65,0}}, +/* 7232 */ {(16<<2)|3,{97,95,48}}, +/* 7233 */ {(16<<2)|3,{97,95,49}}, +/* 7234 */ {(16<<2)|3,{97,95,50}}, +/* 7235 */ {(16<<2)|3,{97,95,97}}, +/* 7236 */ {(16<<2)|3,{97,95,99}}, +/* 7237 */ {(16<<2)|3,{97,95,101}}, +/* 7238 */ {(16<<2)|3,{97,95,105}}, +/* 7239 */ {(16<<2)|3,{97,95,111}}, +/* 7240 */ {(16<<2)|3,{97,95,115}}, +/* 7241 */ {(16<<2)|3,{97,95,116}}, +/* 7242 */ {(11<<2)|2,{97,95,0}}, +/* 7243 */ {(11<<2)|2,{97,95,0}}, +/* 7244 */ {(11<<2)|2,{97,95,0}}, +/* 7245 */ {(11<<2)|2,{97,95,0}}, +/* 7246 */ {(11<<2)|2,{97,95,0}}, +/* 7247 */ {(11<<2)|2,{97,95,0}}, +/* 7248 */ {(11<<2)|2,{97,95,0}}, +/* 7249 */ {(11<<2)|2,{97,95,0}}, +/* 7250 */ {(11<<2)|2,{97,95,0}}, +/* 7251 */ {(11<<2)|2,{97,95,0}}, +/* 7252 */ {(11<<2)|2,{97,95,0}}, +/* 7253 */ {(11<<2)|2,{97,95,0}}, +/* 7254 */ {(11<<2)|2,{97,95,0}}, +/* 7255 */ {(11<<2)|2,{97,95,0}}, +/* 7256 */ {(11<<2)|2,{97,95,0}}, +/* 7257 */ {(11<<2)|2,{97,95,0}}, +/* 7258 */ {(11<<2)|2,{97,95,0}}, +/* 7259 */ {(11<<2)|2,{97,95,0}}, +/* 7260 */ {(11<<2)|2,{97,95,0}}, +/* 7261 */ {(11<<2)|2,{97,95,0}}, +/* 7262 */ {(11<<2)|2,{97,95,0}}, +/* 7263 */ {(11<<2)|2,{97,95,0}}, +/* 7264 */ {(16<<2)|3,{97,98,48}}, +/* 7265 */ {(16<<2)|3,{97,98,49}}, +/* 7266 */ {(16<<2)|3,{97,98,50}}, +/* 7267 */ {(16<<2)|3,{97,98,97}}, +/* 7268 */ {(16<<2)|3,{97,98,99}}, +/* 7269 */ {(16<<2)|3,{97,98,101}}, +/* 7270 */ {(16<<2)|3,{97,98,105}}, +/* 7271 */ {(16<<2)|3,{97,98,111}}, +/* 7272 */ {(16<<2)|3,{97,98,115}}, +/* 7273 */ {(16<<2)|3,{97,98,116}}, +/* 7274 */ {(11<<2)|2,{97,98,0}}, +/* 7275 */ {(11<<2)|2,{97,98,0}}, +/* 7276 */ {(11<<2)|2,{97,98,0}}, +/* 7277 */ {(11<<2)|2,{97,98,0}}, +/* 7278 */ {(11<<2)|2,{97,98,0}}, +/* 7279 */ {(11<<2)|2,{97,98,0}}, +/* 7280 */ {(11<<2)|2,{97,98,0}}, +/* 7281 */ {(11<<2)|2,{97,98,0}}, +/* 7282 */ {(11<<2)|2,{97,98,0}}, +/* 7283 */ {(11<<2)|2,{97,98,0}}, +/* 7284 */ {(11<<2)|2,{97,98,0}}, +/* 7285 */ {(11<<2)|2,{97,98,0}}, +/* 7286 */ {(11<<2)|2,{97,98,0}}, +/* 7287 */ {(11<<2)|2,{97,98,0}}, +/* 7288 */ {(11<<2)|2,{97,98,0}}, +/* 7289 */ {(11<<2)|2,{97,98,0}}, +/* 7290 */ {(11<<2)|2,{97,98,0}}, +/* 7291 */ {(11<<2)|2,{97,98,0}}, +/* 7292 */ {(11<<2)|2,{97,98,0}}, +/* 7293 */ {(11<<2)|2,{97,98,0}}, +/* 7294 */ {(11<<2)|2,{97,98,0}}, +/* 7295 */ {(11<<2)|2,{97,98,0}}, +/* 7296 */ {(16<<2)|3,{97,100,48}}, +/* 7297 */ {(16<<2)|3,{97,100,49}}, +/* 7298 */ {(16<<2)|3,{97,100,50}}, +/* 7299 */ {(16<<2)|3,{97,100,97}}, +/* 7300 */ {(16<<2)|3,{97,100,99}}, +/* 7301 */ {(16<<2)|3,{97,100,101}}, +/* 7302 */ {(16<<2)|3,{97,100,105}}, +/* 7303 */ {(16<<2)|3,{97,100,111}}, +/* 7304 */ {(16<<2)|3,{97,100,115}}, +/* 7305 */ {(16<<2)|3,{97,100,116}}, +/* 7306 */ {(11<<2)|2,{97,100,0}}, +/* 7307 */ {(11<<2)|2,{97,100,0}}, +/* 7308 */ {(11<<2)|2,{97,100,0}}, +/* 7309 */ {(11<<2)|2,{97,100,0}}, +/* 7310 */ {(11<<2)|2,{97,100,0}}, +/* 7311 */ {(11<<2)|2,{97,100,0}}, +/* 7312 */ {(11<<2)|2,{97,100,0}}, +/* 7313 */ {(11<<2)|2,{97,100,0}}, +/* 7314 */ {(11<<2)|2,{97,100,0}}, +/* 7315 */ {(11<<2)|2,{97,100,0}}, +/* 7316 */ {(11<<2)|2,{97,100,0}}, +/* 7317 */ {(11<<2)|2,{97,100,0}}, +/* 7318 */ {(11<<2)|2,{97,100,0}}, +/* 7319 */ {(11<<2)|2,{97,100,0}}, +/* 7320 */ {(11<<2)|2,{97,100,0}}, +/* 7321 */ {(11<<2)|2,{97,100,0}}, +/* 7322 */ {(11<<2)|2,{97,100,0}}, +/* 7323 */ {(11<<2)|2,{97,100,0}}, +/* 7324 */ {(11<<2)|2,{97,100,0}}, +/* 7325 */ {(11<<2)|2,{97,100,0}}, +/* 7326 */ {(11<<2)|2,{97,100,0}}, +/* 7327 */ {(11<<2)|2,{97,100,0}}, +/* 7328 */ {(16<<2)|3,{97,102,48}}, +/* 7329 */ {(16<<2)|3,{97,102,49}}, +/* 7330 */ {(16<<2)|3,{97,102,50}}, +/* 7331 */ {(16<<2)|3,{97,102,97}}, +/* 7332 */ {(16<<2)|3,{97,102,99}}, +/* 7333 */ {(16<<2)|3,{97,102,101}}, +/* 7334 */ {(16<<2)|3,{97,102,105}}, +/* 7335 */ {(16<<2)|3,{97,102,111}}, +/* 7336 */ {(16<<2)|3,{97,102,115}}, +/* 7337 */ {(16<<2)|3,{97,102,116}}, +/* 7338 */ {(11<<2)|2,{97,102,0}}, +/* 7339 */ {(11<<2)|2,{97,102,0}}, +/* 7340 */ {(11<<2)|2,{97,102,0}}, +/* 7341 */ {(11<<2)|2,{97,102,0}}, +/* 7342 */ {(11<<2)|2,{97,102,0}}, +/* 7343 */ {(11<<2)|2,{97,102,0}}, +/* 7344 */ {(11<<2)|2,{97,102,0}}, +/* 7345 */ {(11<<2)|2,{97,102,0}}, +/* 7346 */ {(11<<2)|2,{97,102,0}}, +/* 7347 */ {(11<<2)|2,{97,102,0}}, +/* 7348 */ {(11<<2)|2,{97,102,0}}, +/* 7349 */ {(11<<2)|2,{97,102,0}}, +/* 7350 */ {(11<<2)|2,{97,102,0}}, +/* 7351 */ {(11<<2)|2,{97,102,0}}, +/* 7352 */ {(11<<2)|2,{97,102,0}}, +/* 7353 */ {(11<<2)|2,{97,102,0}}, +/* 7354 */ {(11<<2)|2,{97,102,0}}, +/* 7355 */ {(11<<2)|2,{97,102,0}}, +/* 7356 */ {(11<<2)|2,{97,102,0}}, +/* 7357 */ {(11<<2)|2,{97,102,0}}, +/* 7358 */ {(11<<2)|2,{97,102,0}}, +/* 7359 */ {(11<<2)|2,{97,102,0}}, +/* 7360 */ {(16<<2)|3,{97,103,48}}, +/* 7361 */ {(16<<2)|3,{97,103,49}}, +/* 7362 */ {(16<<2)|3,{97,103,50}}, +/* 7363 */ {(16<<2)|3,{97,103,97}}, +/* 7364 */ {(16<<2)|3,{97,103,99}}, +/* 7365 */ {(16<<2)|3,{97,103,101}}, +/* 7366 */ {(16<<2)|3,{97,103,105}}, +/* 7367 */ {(16<<2)|3,{97,103,111}}, +/* 7368 */ {(16<<2)|3,{97,103,115}}, +/* 7369 */ {(16<<2)|3,{97,103,116}}, +/* 7370 */ {(11<<2)|2,{97,103,0}}, +/* 7371 */ {(11<<2)|2,{97,103,0}}, +/* 7372 */ {(11<<2)|2,{97,103,0}}, +/* 7373 */ {(11<<2)|2,{97,103,0}}, +/* 7374 */ {(11<<2)|2,{97,103,0}}, +/* 7375 */ {(11<<2)|2,{97,103,0}}, +/* 7376 */ {(11<<2)|2,{97,103,0}}, +/* 7377 */ {(11<<2)|2,{97,103,0}}, +/* 7378 */ {(11<<2)|2,{97,103,0}}, +/* 7379 */ {(11<<2)|2,{97,103,0}}, +/* 7380 */ {(11<<2)|2,{97,103,0}}, +/* 7381 */ {(11<<2)|2,{97,103,0}}, +/* 7382 */ {(11<<2)|2,{97,103,0}}, +/* 7383 */ {(11<<2)|2,{97,103,0}}, +/* 7384 */ {(11<<2)|2,{97,103,0}}, +/* 7385 */ {(11<<2)|2,{97,103,0}}, +/* 7386 */ {(11<<2)|2,{97,103,0}}, +/* 7387 */ {(11<<2)|2,{97,103,0}}, +/* 7388 */ {(11<<2)|2,{97,103,0}}, +/* 7389 */ {(11<<2)|2,{97,103,0}}, +/* 7390 */ {(11<<2)|2,{97,103,0}}, +/* 7391 */ {(11<<2)|2,{97,103,0}}, +/* 7392 */ {(16<<2)|3,{97,104,48}}, +/* 7393 */ {(16<<2)|3,{97,104,49}}, +/* 7394 */ {(16<<2)|3,{97,104,50}}, +/* 7395 */ {(16<<2)|3,{97,104,97}}, +/* 7396 */ {(16<<2)|3,{97,104,99}}, +/* 7397 */ {(16<<2)|3,{97,104,101}}, +/* 7398 */ {(16<<2)|3,{97,104,105}}, +/* 7399 */ {(16<<2)|3,{97,104,111}}, +/* 7400 */ {(16<<2)|3,{97,104,115}}, +/* 7401 */ {(16<<2)|3,{97,104,116}}, +/* 7402 */ {(11<<2)|2,{97,104,0}}, +/* 7403 */ {(11<<2)|2,{97,104,0}}, +/* 7404 */ {(11<<2)|2,{97,104,0}}, +/* 7405 */ {(11<<2)|2,{97,104,0}}, +/* 7406 */ {(11<<2)|2,{97,104,0}}, +/* 7407 */ {(11<<2)|2,{97,104,0}}, +/* 7408 */ {(11<<2)|2,{97,104,0}}, +/* 7409 */ {(11<<2)|2,{97,104,0}}, +/* 7410 */ {(11<<2)|2,{97,104,0}}, +/* 7411 */ {(11<<2)|2,{97,104,0}}, +/* 7412 */ {(11<<2)|2,{97,104,0}}, +/* 7413 */ {(11<<2)|2,{97,104,0}}, +/* 7414 */ {(11<<2)|2,{97,104,0}}, +/* 7415 */ {(11<<2)|2,{97,104,0}}, +/* 7416 */ {(11<<2)|2,{97,104,0}}, +/* 7417 */ {(11<<2)|2,{97,104,0}}, +/* 7418 */ {(11<<2)|2,{97,104,0}}, +/* 7419 */ {(11<<2)|2,{97,104,0}}, +/* 7420 */ {(11<<2)|2,{97,104,0}}, +/* 7421 */ {(11<<2)|2,{97,104,0}}, +/* 7422 */ {(11<<2)|2,{97,104,0}}, +/* 7423 */ {(11<<2)|2,{97,104,0}}, +/* 7424 */ {(16<<2)|3,{97,108,48}}, +/* 7425 */ {(16<<2)|3,{97,108,49}}, +/* 7426 */ {(16<<2)|3,{97,108,50}}, +/* 7427 */ {(16<<2)|3,{97,108,97}}, +/* 7428 */ {(16<<2)|3,{97,108,99}}, +/* 7429 */ {(16<<2)|3,{97,108,101}}, +/* 7430 */ {(16<<2)|3,{97,108,105}}, +/* 7431 */ {(16<<2)|3,{97,108,111}}, +/* 7432 */ {(16<<2)|3,{97,108,115}}, +/* 7433 */ {(16<<2)|3,{97,108,116}}, +/* 7434 */ {(11<<2)|2,{97,108,0}}, +/* 7435 */ {(11<<2)|2,{97,108,0}}, +/* 7436 */ {(11<<2)|2,{97,108,0}}, +/* 7437 */ {(11<<2)|2,{97,108,0}}, +/* 7438 */ {(11<<2)|2,{97,108,0}}, +/* 7439 */ {(11<<2)|2,{97,108,0}}, +/* 7440 */ {(11<<2)|2,{97,108,0}}, +/* 7441 */ {(11<<2)|2,{97,108,0}}, +/* 7442 */ {(11<<2)|2,{97,108,0}}, +/* 7443 */ {(11<<2)|2,{97,108,0}}, +/* 7444 */ {(11<<2)|2,{97,108,0}}, +/* 7445 */ {(11<<2)|2,{97,108,0}}, +/* 7446 */ {(11<<2)|2,{97,108,0}}, +/* 7447 */ {(11<<2)|2,{97,108,0}}, +/* 7448 */ {(11<<2)|2,{97,108,0}}, +/* 7449 */ {(11<<2)|2,{97,108,0}}, +/* 7450 */ {(11<<2)|2,{97,108,0}}, +/* 7451 */ {(11<<2)|2,{97,108,0}}, +/* 7452 */ {(11<<2)|2,{97,108,0}}, +/* 7453 */ {(11<<2)|2,{97,108,0}}, +/* 7454 */ {(11<<2)|2,{97,108,0}}, +/* 7455 */ {(11<<2)|2,{97,108,0}}, +/* 7456 */ {(16<<2)|3,{97,109,48}}, +/* 7457 */ {(16<<2)|3,{97,109,49}}, +/* 7458 */ {(16<<2)|3,{97,109,50}}, +/* 7459 */ {(16<<2)|3,{97,109,97}}, +/* 7460 */ {(16<<2)|3,{97,109,99}}, +/* 7461 */ {(16<<2)|3,{97,109,101}}, +/* 7462 */ {(16<<2)|3,{97,109,105}}, +/* 7463 */ {(16<<2)|3,{97,109,111}}, +/* 7464 */ {(16<<2)|3,{97,109,115}}, +/* 7465 */ {(16<<2)|3,{97,109,116}}, +/* 7466 */ {(11<<2)|2,{97,109,0}}, +/* 7467 */ {(11<<2)|2,{97,109,0}}, +/* 7468 */ {(11<<2)|2,{97,109,0}}, +/* 7469 */ {(11<<2)|2,{97,109,0}}, +/* 7470 */ {(11<<2)|2,{97,109,0}}, +/* 7471 */ {(11<<2)|2,{97,109,0}}, +/* 7472 */ {(11<<2)|2,{97,109,0}}, +/* 7473 */ {(11<<2)|2,{97,109,0}}, +/* 7474 */ {(11<<2)|2,{97,109,0}}, +/* 7475 */ {(11<<2)|2,{97,109,0}}, +/* 7476 */ {(11<<2)|2,{97,109,0}}, +/* 7477 */ {(11<<2)|2,{97,109,0}}, +/* 7478 */ {(11<<2)|2,{97,109,0}}, +/* 7479 */ {(11<<2)|2,{97,109,0}}, +/* 7480 */ {(11<<2)|2,{97,109,0}}, +/* 7481 */ {(11<<2)|2,{97,109,0}}, +/* 7482 */ {(11<<2)|2,{97,109,0}}, +/* 7483 */ {(11<<2)|2,{97,109,0}}, +/* 7484 */ {(11<<2)|2,{97,109,0}}, +/* 7485 */ {(11<<2)|2,{97,109,0}}, +/* 7486 */ {(11<<2)|2,{97,109,0}}, +/* 7487 */ {(11<<2)|2,{97,109,0}}, +/* 7488 */ {(16<<2)|3,{97,110,48}}, +/* 7489 */ {(16<<2)|3,{97,110,49}}, +/* 7490 */ {(16<<2)|3,{97,110,50}}, +/* 7491 */ {(16<<2)|3,{97,110,97}}, +/* 7492 */ {(16<<2)|3,{97,110,99}}, +/* 7493 */ {(16<<2)|3,{97,110,101}}, +/* 7494 */ {(16<<2)|3,{97,110,105}}, +/* 7495 */ {(16<<2)|3,{97,110,111}}, +/* 7496 */ {(16<<2)|3,{97,110,115}}, +/* 7497 */ {(16<<2)|3,{97,110,116}}, +/* 7498 */ {(11<<2)|2,{97,110,0}}, +/* 7499 */ {(11<<2)|2,{97,110,0}}, +/* 7500 */ {(11<<2)|2,{97,110,0}}, +/* 7501 */ {(11<<2)|2,{97,110,0}}, +/* 7502 */ {(11<<2)|2,{97,110,0}}, +/* 7503 */ {(11<<2)|2,{97,110,0}}, +/* 7504 */ {(11<<2)|2,{97,110,0}}, +/* 7505 */ {(11<<2)|2,{97,110,0}}, +/* 7506 */ {(11<<2)|2,{97,110,0}}, +/* 7507 */ {(11<<2)|2,{97,110,0}}, +/* 7508 */ {(11<<2)|2,{97,110,0}}, +/* 7509 */ {(11<<2)|2,{97,110,0}}, +/* 7510 */ {(11<<2)|2,{97,110,0}}, +/* 7511 */ {(11<<2)|2,{97,110,0}}, +/* 7512 */ {(11<<2)|2,{97,110,0}}, +/* 7513 */ {(11<<2)|2,{97,110,0}}, +/* 7514 */ {(11<<2)|2,{97,110,0}}, +/* 7515 */ {(11<<2)|2,{97,110,0}}, +/* 7516 */ {(11<<2)|2,{97,110,0}}, +/* 7517 */ {(11<<2)|2,{97,110,0}}, +/* 7518 */ {(11<<2)|2,{97,110,0}}, +/* 7519 */ {(11<<2)|2,{97,110,0}}, +/* 7520 */ {(16<<2)|3,{97,112,48}}, +/* 7521 */ {(16<<2)|3,{97,112,49}}, +/* 7522 */ {(16<<2)|3,{97,112,50}}, +/* 7523 */ {(16<<2)|3,{97,112,97}}, +/* 7524 */ {(16<<2)|3,{97,112,99}}, +/* 7525 */ {(16<<2)|3,{97,112,101}}, +/* 7526 */ {(16<<2)|3,{97,112,105}}, +/* 7527 */ {(16<<2)|3,{97,112,111}}, +/* 7528 */ {(16<<2)|3,{97,112,115}}, +/* 7529 */ {(16<<2)|3,{97,112,116}}, +/* 7530 */ {(11<<2)|2,{97,112,0}}, +/* 7531 */ {(11<<2)|2,{97,112,0}}, +/* 7532 */ {(11<<2)|2,{97,112,0}}, +/* 7533 */ {(11<<2)|2,{97,112,0}}, +/* 7534 */ {(11<<2)|2,{97,112,0}}, +/* 7535 */ {(11<<2)|2,{97,112,0}}, +/* 7536 */ {(11<<2)|2,{97,112,0}}, +/* 7537 */ {(11<<2)|2,{97,112,0}}, +/* 7538 */ {(11<<2)|2,{97,112,0}}, +/* 7539 */ {(11<<2)|2,{97,112,0}}, +/* 7540 */ {(11<<2)|2,{97,112,0}}, +/* 7541 */ {(11<<2)|2,{97,112,0}}, +/* 7542 */ {(11<<2)|2,{97,112,0}}, +/* 7543 */ {(11<<2)|2,{97,112,0}}, +/* 7544 */ {(11<<2)|2,{97,112,0}}, +/* 7545 */ {(11<<2)|2,{97,112,0}}, +/* 7546 */ {(11<<2)|2,{97,112,0}}, +/* 7547 */ {(11<<2)|2,{97,112,0}}, +/* 7548 */ {(11<<2)|2,{97,112,0}}, +/* 7549 */ {(11<<2)|2,{97,112,0}}, +/* 7550 */ {(11<<2)|2,{97,112,0}}, +/* 7551 */ {(11<<2)|2,{97,112,0}}, +/* 7552 */ {(16<<2)|3,{97,114,48}}, +/* 7553 */ {(16<<2)|3,{97,114,49}}, +/* 7554 */ {(16<<2)|3,{97,114,50}}, +/* 7555 */ {(16<<2)|3,{97,114,97}}, +/* 7556 */ {(16<<2)|3,{97,114,99}}, +/* 7557 */ {(16<<2)|3,{97,114,101}}, +/* 7558 */ {(16<<2)|3,{97,114,105}}, +/* 7559 */ {(16<<2)|3,{97,114,111}}, +/* 7560 */ {(16<<2)|3,{97,114,115}}, +/* 7561 */ {(16<<2)|3,{97,114,116}}, +/* 7562 */ {(11<<2)|2,{97,114,0}}, +/* 7563 */ {(11<<2)|2,{97,114,0}}, +/* 7564 */ {(11<<2)|2,{97,114,0}}, +/* 7565 */ {(11<<2)|2,{97,114,0}}, +/* 7566 */ {(11<<2)|2,{97,114,0}}, +/* 7567 */ {(11<<2)|2,{97,114,0}}, +/* 7568 */ {(11<<2)|2,{97,114,0}}, +/* 7569 */ {(11<<2)|2,{97,114,0}}, +/* 7570 */ {(11<<2)|2,{97,114,0}}, +/* 7571 */ {(11<<2)|2,{97,114,0}}, +/* 7572 */ {(11<<2)|2,{97,114,0}}, +/* 7573 */ {(11<<2)|2,{97,114,0}}, +/* 7574 */ {(11<<2)|2,{97,114,0}}, +/* 7575 */ {(11<<2)|2,{97,114,0}}, +/* 7576 */ {(11<<2)|2,{97,114,0}}, +/* 7577 */ {(11<<2)|2,{97,114,0}}, +/* 7578 */ {(11<<2)|2,{97,114,0}}, +/* 7579 */ {(11<<2)|2,{97,114,0}}, +/* 7580 */ {(11<<2)|2,{97,114,0}}, +/* 7581 */ {(11<<2)|2,{97,114,0}}, +/* 7582 */ {(11<<2)|2,{97,114,0}}, +/* 7583 */ {(11<<2)|2,{97,114,0}}, +/* 7584 */ {(16<<2)|3,{97,117,48}}, +/* 7585 */ {(16<<2)|3,{97,117,49}}, +/* 7586 */ {(16<<2)|3,{97,117,50}}, +/* 7587 */ {(16<<2)|3,{97,117,97}}, +/* 7588 */ {(16<<2)|3,{97,117,99}}, +/* 7589 */ {(16<<2)|3,{97,117,101}}, +/* 7590 */ {(16<<2)|3,{97,117,105}}, +/* 7591 */ {(16<<2)|3,{97,117,111}}, +/* 7592 */ {(16<<2)|3,{97,117,115}}, +/* 7593 */ {(16<<2)|3,{97,117,116}}, +/* 7594 */ {(11<<2)|2,{97,117,0}}, +/* 7595 */ {(11<<2)|2,{97,117,0}}, +/* 7596 */ {(11<<2)|2,{97,117,0}}, +/* 7597 */ {(11<<2)|2,{97,117,0}}, +/* 7598 */ {(11<<2)|2,{97,117,0}}, +/* 7599 */ {(11<<2)|2,{97,117,0}}, +/* 7600 */ {(11<<2)|2,{97,117,0}}, +/* 7601 */ {(11<<2)|2,{97,117,0}}, +/* 7602 */ {(11<<2)|2,{97,117,0}}, +/* 7603 */ {(11<<2)|2,{97,117,0}}, +/* 7604 */ {(11<<2)|2,{97,117,0}}, +/* 7605 */ {(11<<2)|2,{97,117,0}}, +/* 7606 */ {(11<<2)|2,{97,117,0}}, +/* 7607 */ {(11<<2)|2,{97,117,0}}, +/* 7608 */ {(11<<2)|2,{97,117,0}}, +/* 7609 */ {(11<<2)|2,{97,117,0}}, +/* 7610 */ {(11<<2)|2,{97,117,0}}, +/* 7611 */ {(11<<2)|2,{97,117,0}}, +/* 7612 */ {(11<<2)|2,{97,117,0}}, +/* 7613 */ {(11<<2)|2,{97,117,0}}, +/* 7614 */ {(11<<2)|2,{97,117,0}}, +/* 7615 */ {(11<<2)|2,{97,117,0}}, +/* 7616 */ {(12<<2)|2,{97,58,0}}, +/* 7617 */ {(12<<2)|2,{97,58,0}}, +/* 7618 */ {(12<<2)|2,{97,58,0}}, +/* 7619 */ {(12<<2)|2,{97,58,0}}, +/* 7620 */ {(12<<2)|2,{97,58,0}}, +/* 7621 */ {(12<<2)|2,{97,58,0}}, +/* 7622 */ {(12<<2)|2,{97,58,0}}, +/* 7623 */ {(12<<2)|2,{97,58,0}}, +/* 7624 */ {(12<<2)|2,{97,58,0}}, +/* 7625 */ {(12<<2)|2,{97,58,0}}, +/* 7626 */ {(12<<2)|2,{97,58,0}}, +/* 7627 */ {(12<<2)|2,{97,58,0}}, +/* 7628 */ {(12<<2)|2,{97,58,0}}, +/* 7629 */ {(12<<2)|2,{97,58,0}}, +/* 7630 */ {(12<<2)|2,{97,58,0}}, +/* 7631 */ {(12<<2)|2,{97,58,0}}, +/* 7632 */ {(12<<2)|2,{97,66,0}}, +/* 7633 */ {(12<<2)|2,{97,66,0}}, +/* 7634 */ {(12<<2)|2,{97,66,0}}, +/* 7635 */ {(12<<2)|2,{97,66,0}}, +/* 7636 */ {(12<<2)|2,{97,66,0}}, +/* 7637 */ {(12<<2)|2,{97,66,0}}, +/* 7638 */ {(12<<2)|2,{97,66,0}}, +/* 7639 */ {(12<<2)|2,{97,66,0}}, +/* 7640 */ {(12<<2)|2,{97,66,0}}, +/* 7641 */ {(12<<2)|2,{97,66,0}}, +/* 7642 */ {(12<<2)|2,{97,66,0}}, +/* 7643 */ {(12<<2)|2,{97,66,0}}, +/* 7644 */ {(12<<2)|2,{97,66,0}}, +/* 7645 */ {(12<<2)|2,{97,66,0}}, +/* 7646 */ {(12<<2)|2,{97,66,0}}, +/* 7647 */ {(12<<2)|2,{97,66,0}}, +/* 7648 */ {(12<<2)|2,{97,67,0}}, +/* 7649 */ {(12<<2)|2,{97,67,0}}, +/* 7650 */ {(12<<2)|2,{97,67,0}}, +/* 7651 */ {(12<<2)|2,{97,67,0}}, +/* 7652 */ {(12<<2)|2,{97,67,0}}, +/* 7653 */ {(12<<2)|2,{97,67,0}}, +/* 7654 */ {(12<<2)|2,{97,67,0}}, +/* 7655 */ {(12<<2)|2,{97,67,0}}, +/* 7656 */ {(12<<2)|2,{97,67,0}}, +/* 7657 */ {(12<<2)|2,{97,67,0}}, +/* 7658 */ {(12<<2)|2,{97,67,0}}, +/* 7659 */ {(12<<2)|2,{97,67,0}}, +/* 7660 */ {(12<<2)|2,{97,67,0}}, +/* 7661 */ {(12<<2)|2,{97,67,0}}, +/* 7662 */ {(12<<2)|2,{97,67,0}}, +/* 7663 */ {(12<<2)|2,{97,67,0}}, +/* 7664 */ {(12<<2)|2,{97,68,0}}, +/* 7665 */ {(12<<2)|2,{97,68,0}}, +/* 7666 */ {(12<<2)|2,{97,68,0}}, +/* 7667 */ {(12<<2)|2,{97,68,0}}, +/* 7668 */ {(12<<2)|2,{97,68,0}}, +/* 7669 */ {(12<<2)|2,{97,68,0}}, +/* 7670 */ {(12<<2)|2,{97,68,0}}, +/* 7671 */ {(12<<2)|2,{97,68,0}}, +/* 7672 */ {(12<<2)|2,{97,68,0}}, +/* 7673 */ {(12<<2)|2,{97,68,0}}, +/* 7674 */ {(12<<2)|2,{97,68,0}}, +/* 7675 */ {(12<<2)|2,{97,68,0}}, +/* 7676 */ {(12<<2)|2,{97,68,0}}, +/* 7677 */ {(12<<2)|2,{97,68,0}}, +/* 7678 */ {(12<<2)|2,{97,68,0}}, +/* 7679 */ {(12<<2)|2,{97,68,0}}, +/* 7680 */ {(12<<2)|2,{97,69,0}}, +/* 7681 */ {(12<<2)|2,{97,69,0}}, +/* 7682 */ {(12<<2)|2,{97,69,0}}, +/* 7683 */ {(12<<2)|2,{97,69,0}}, +/* 7684 */ {(12<<2)|2,{97,69,0}}, +/* 7685 */ {(12<<2)|2,{97,69,0}}, +/* 7686 */ {(12<<2)|2,{97,69,0}}, +/* 7687 */ {(12<<2)|2,{97,69,0}}, +/* 7688 */ {(12<<2)|2,{97,69,0}}, +/* 7689 */ {(12<<2)|2,{97,69,0}}, +/* 7690 */ {(12<<2)|2,{97,69,0}}, +/* 7691 */ {(12<<2)|2,{97,69,0}}, +/* 7692 */ {(12<<2)|2,{97,69,0}}, +/* 7693 */ {(12<<2)|2,{97,69,0}}, +/* 7694 */ {(12<<2)|2,{97,69,0}}, +/* 7695 */ {(12<<2)|2,{97,69,0}}, +/* 7696 */ {(12<<2)|2,{97,70,0}}, +/* 7697 */ {(12<<2)|2,{97,70,0}}, +/* 7698 */ {(12<<2)|2,{97,70,0}}, +/* 7699 */ {(12<<2)|2,{97,70,0}}, +/* 7700 */ {(12<<2)|2,{97,70,0}}, +/* 7701 */ {(12<<2)|2,{97,70,0}}, +/* 7702 */ {(12<<2)|2,{97,70,0}}, +/* 7703 */ {(12<<2)|2,{97,70,0}}, +/* 7704 */ {(12<<2)|2,{97,70,0}}, +/* 7705 */ {(12<<2)|2,{97,70,0}}, +/* 7706 */ {(12<<2)|2,{97,70,0}}, +/* 7707 */ {(12<<2)|2,{97,70,0}}, +/* 7708 */ {(12<<2)|2,{97,70,0}}, +/* 7709 */ {(12<<2)|2,{97,70,0}}, +/* 7710 */ {(12<<2)|2,{97,70,0}}, +/* 7711 */ {(12<<2)|2,{97,70,0}}, +/* 7712 */ {(12<<2)|2,{97,71,0}}, +/* 7713 */ {(12<<2)|2,{97,71,0}}, +/* 7714 */ {(12<<2)|2,{97,71,0}}, +/* 7715 */ {(12<<2)|2,{97,71,0}}, +/* 7716 */ {(12<<2)|2,{97,71,0}}, +/* 7717 */ {(12<<2)|2,{97,71,0}}, +/* 7718 */ {(12<<2)|2,{97,71,0}}, +/* 7719 */ {(12<<2)|2,{97,71,0}}, +/* 7720 */ {(12<<2)|2,{97,71,0}}, +/* 7721 */ {(12<<2)|2,{97,71,0}}, +/* 7722 */ {(12<<2)|2,{97,71,0}}, +/* 7723 */ {(12<<2)|2,{97,71,0}}, +/* 7724 */ {(12<<2)|2,{97,71,0}}, +/* 7725 */ {(12<<2)|2,{97,71,0}}, +/* 7726 */ {(12<<2)|2,{97,71,0}}, +/* 7727 */ {(12<<2)|2,{97,71,0}}, +/* 7728 */ {(12<<2)|2,{97,72,0}}, +/* 7729 */ {(12<<2)|2,{97,72,0}}, +/* 7730 */ {(12<<2)|2,{97,72,0}}, +/* 7731 */ {(12<<2)|2,{97,72,0}}, +/* 7732 */ {(12<<2)|2,{97,72,0}}, +/* 7733 */ {(12<<2)|2,{97,72,0}}, +/* 7734 */ {(12<<2)|2,{97,72,0}}, +/* 7735 */ {(12<<2)|2,{97,72,0}}, +/* 7736 */ {(12<<2)|2,{97,72,0}}, +/* 7737 */ {(12<<2)|2,{97,72,0}}, +/* 7738 */ {(12<<2)|2,{97,72,0}}, +/* 7739 */ {(12<<2)|2,{97,72,0}}, +/* 7740 */ {(12<<2)|2,{97,72,0}}, +/* 7741 */ {(12<<2)|2,{97,72,0}}, +/* 7742 */ {(12<<2)|2,{97,72,0}}, +/* 7743 */ {(12<<2)|2,{97,72,0}}, +/* 7744 */ {(12<<2)|2,{97,73,0}}, +/* 7745 */ {(12<<2)|2,{97,73,0}}, +/* 7746 */ {(12<<2)|2,{97,73,0}}, +/* 7747 */ {(12<<2)|2,{97,73,0}}, +/* 7748 */ {(12<<2)|2,{97,73,0}}, +/* 7749 */ {(12<<2)|2,{97,73,0}}, +/* 7750 */ {(12<<2)|2,{97,73,0}}, +/* 7751 */ {(12<<2)|2,{97,73,0}}, +/* 7752 */ {(12<<2)|2,{97,73,0}}, +/* 7753 */ {(12<<2)|2,{97,73,0}}, +/* 7754 */ {(12<<2)|2,{97,73,0}}, +/* 7755 */ {(12<<2)|2,{97,73,0}}, +/* 7756 */ {(12<<2)|2,{97,73,0}}, +/* 7757 */ {(12<<2)|2,{97,73,0}}, +/* 7758 */ {(12<<2)|2,{97,73,0}}, +/* 7759 */ {(12<<2)|2,{97,73,0}}, +/* 7760 */ {(12<<2)|2,{97,74,0}}, +/* 7761 */ {(12<<2)|2,{97,74,0}}, +/* 7762 */ {(12<<2)|2,{97,74,0}}, +/* 7763 */ {(12<<2)|2,{97,74,0}}, +/* 7764 */ {(12<<2)|2,{97,74,0}}, +/* 7765 */ {(12<<2)|2,{97,74,0}}, +/* 7766 */ {(12<<2)|2,{97,74,0}}, +/* 7767 */ {(12<<2)|2,{97,74,0}}, +/* 7768 */ {(12<<2)|2,{97,74,0}}, +/* 7769 */ {(12<<2)|2,{97,74,0}}, +/* 7770 */ {(12<<2)|2,{97,74,0}}, +/* 7771 */ {(12<<2)|2,{97,74,0}}, +/* 7772 */ {(12<<2)|2,{97,74,0}}, +/* 7773 */ {(12<<2)|2,{97,74,0}}, +/* 7774 */ {(12<<2)|2,{97,74,0}}, +/* 7775 */ {(12<<2)|2,{97,74,0}}, +/* 7776 */ {(12<<2)|2,{97,75,0}}, +/* 7777 */ {(12<<2)|2,{97,75,0}}, +/* 7778 */ {(12<<2)|2,{97,75,0}}, +/* 7779 */ {(12<<2)|2,{97,75,0}}, +/* 7780 */ {(12<<2)|2,{97,75,0}}, +/* 7781 */ {(12<<2)|2,{97,75,0}}, +/* 7782 */ {(12<<2)|2,{97,75,0}}, +/* 7783 */ {(12<<2)|2,{97,75,0}}, +/* 7784 */ {(12<<2)|2,{97,75,0}}, +/* 7785 */ {(12<<2)|2,{97,75,0}}, +/* 7786 */ {(12<<2)|2,{97,75,0}}, +/* 7787 */ {(12<<2)|2,{97,75,0}}, +/* 7788 */ {(12<<2)|2,{97,75,0}}, +/* 7789 */ {(12<<2)|2,{97,75,0}}, +/* 7790 */ {(12<<2)|2,{97,75,0}}, +/* 7791 */ {(12<<2)|2,{97,75,0}}, +/* 7792 */ {(12<<2)|2,{97,76,0}}, +/* 7793 */ {(12<<2)|2,{97,76,0}}, +/* 7794 */ {(12<<2)|2,{97,76,0}}, +/* 7795 */ {(12<<2)|2,{97,76,0}}, +/* 7796 */ {(12<<2)|2,{97,76,0}}, +/* 7797 */ {(12<<2)|2,{97,76,0}}, +/* 7798 */ {(12<<2)|2,{97,76,0}}, +/* 7799 */ {(12<<2)|2,{97,76,0}}, +/* 7800 */ {(12<<2)|2,{97,76,0}}, +/* 7801 */ {(12<<2)|2,{97,76,0}}, +/* 7802 */ {(12<<2)|2,{97,76,0}}, +/* 7803 */ {(12<<2)|2,{97,76,0}}, +/* 7804 */ {(12<<2)|2,{97,76,0}}, +/* 7805 */ {(12<<2)|2,{97,76,0}}, +/* 7806 */ {(12<<2)|2,{97,76,0}}, +/* 7807 */ {(12<<2)|2,{97,76,0}}, +/* 7808 */ {(12<<2)|2,{97,77,0}}, +/* 7809 */ {(12<<2)|2,{97,77,0}}, +/* 7810 */ {(12<<2)|2,{97,77,0}}, +/* 7811 */ {(12<<2)|2,{97,77,0}}, +/* 7812 */ {(12<<2)|2,{97,77,0}}, +/* 7813 */ {(12<<2)|2,{97,77,0}}, +/* 7814 */ {(12<<2)|2,{97,77,0}}, +/* 7815 */ {(12<<2)|2,{97,77,0}}, +/* 7816 */ {(12<<2)|2,{97,77,0}}, +/* 7817 */ {(12<<2)|2,{97,77,0}}, +/* 7818 */ {(12<<2)|2,{97,77,0}}, +/* 7819 */ {(12<<2)|2,{97,77,0}}, +/* 7820 */ {(12<<2)|2,{97,77,0}}, +/* 7821 */ {(12<<2)|2,{97,77,0}}, +/* 7822 */ {(12<<2)|2,{97,77,0}}, +/* 7823 */ {(12<<2)|2,{97,77,0}}, +/* 7824 */ {(12<<2)|2,{97,78,0}}, +/* 7825 */ {(12<<2)|2,{97,78,0}}, +/* 7826 */ {(12<<2)|2,{97,78,0}}, +/* 7827 */ {(12<<2)|2,{97,78,0}}, +/* 7828 */ {(12<<2)|2,{97,78,0}}, +/* 7829 */ {(12<<2)|2,{97,78,0}}, +/* 7830 */ {(12<<2)|2,{97,78,0}}, +/* 7831 */ {(12<<2)|2,{97,78,0}}, +/* 7832 */ {(12<<2)|2,{97,78,0}}, +/* 7833 */ {(12<<2)|2,{97,78,0}}, +/* 7834 */ {(12<<2)|2,{97,78,0}}, +/* 7835 */ {(12<<2)|2,{97,78,0}}, +/* 7836 */ {(12<<2)|2,{97,78,0}}, +/* 7837 */ {(12<<2)|2,{97,78,0}}, +/* 7838 */ {(12<<2)|2,{97,78,0}}, +/* 7839 */ {(12<<2)|2,{97,78,0}}, +/* 7840 */ {(12<<2)|2,{97,79,0}}, +/* 7841 */ {(12<<2)|2,{97,79,0}}, +/* 7842 */ {(12<<2)|2,{97,79,0}}, +/* 7843 */ {(12<<2)|2,{97,79,0}}, +/* 7844 */ {(12<<2)|2,{97,79,0}}, +/* 7845 */ {(12<<2)|2,{97,79,0}}, +/* 7846 */ {(12<<2)|2,{97,79,0}}, +/* 7847 */ {(12<<2)|2,{97,79,0}}, +/* 7848 */ {(12<<2)|2,{97,79,0}}, +/* 7849 */ {(12<<2)|2,{97,79,0}}, +/* 7850 */ {(12<<2)|2,{97,79,0}}, +/* 7851 */ {(12<<2)|2,{97,79,0}}, +/* 7852 */ {(12<<2)|2,{97,79,0}}, +/* 7853 */ {(12<<2)|2,{97,79,0}}, +/* 7854 */ {(12<<2)|2,{97,79,0}}, +/* 7855 */ {(12<<2)|2,{97,79,0}}, +/* 7856 */ {(12<<2)|2,{97,80,0}}, +/* 7857 */ {(12<<2)|2,{97,80,0}}, +/* 7858 */ {(12<<2)|2,{97,80,0}}, +/* 7859 */ {(12<<2)|2,{97,80,0}}, +/* 7860 */ {(12<<2)|2,{97,80,0}}, +/* 7861 */ {(12<<2)|2,{97,80,0}}, +/* 7862 */ {(12<<2)|2,{97,80,0}}, +/* 7863 */ {(12<<2)|2,{97,80,0}}, +/* 7864 */ {(12<<2)|2,{97,80,0}}, +/* 7865 */ {(12<<2)|2,{97,80,0}}, +/* 7866 */ {(12<<2)|2,{97,80,0}}, +/* 7867 */ {(12<<2)|2,{97,80,0}}, +/* 7868 */ {(12<<2)|2,{97,80,0}}, +/* 7869 */ {(12<<2)|2,{97,80,0}}, +/* 7870 */ {(12<<2)|2,{97,80,0}}, +/* 7871 */ {(12<<2)|2,{97,80,0}}, +/* 7872 */ {(12<<2)|2,{97,81,0}}, +/* 7873 */ {(12<<2)|2,{97,81,0}}, +/* 7874 */ {(12<<2)|2,{97,81,0}}, +/* 7875 */ {(12<<2)|2,{97,81,0}}, +/* 7876 */ {(12<<2)|2,{97,81,0}}, +/* 7877 */ {(12<<2)|2,{97,81,0}}, +/* 7878 */ {(12<<2)|2,{97,81,0}}, +/* 7879 */ {(12<<2)|2,{97,81,0}}, +/* 7880 */ {(12<<2)|2,{97,81,0}}, +/* 7881 */ {(12<<2)|2,{97,81,0}}, +/* 7882 */ {(12<<2)|2,{97,81,0}}, +/* 7883 */ {(12<<2)|2,{97,81,0}}, +/* 7884 */ {(12<<2)|2,{97,81,0}}, +/* 7885 */ {(12<<2)|2,{97,81,0}}, +/* 7886 */ {(12<<2)|2,{97,81,0}}, +/* 7887 */ {(12<<2)|2,{97,81,0}}, +/* 7888 */ {(12<<2)|2,{97,82,0}}, +/* 7889 */ {(12<<2)|2,{97,82,0}}, +/* 7890 */ {(12<<2)|2,{97,82,0}}, +/* 7891 */ {(12<<2)|2,{97,82,0}}, +/* 7892 */ {(12<<2)|2,{97,82,0}}, +/* 7893 */ {(12<<2)|2,{97,82,0}}, +/* 7894 */ {(12<<2)|2,{97,82,0}}, +/* 7895 */ {(12<<2)|2,{97,82,0}}, +/* 7896 */ {(12<<2)|2,{97,82,0}}, +/* 7897 */ {(12<<2)|2,{97,82,0}}, +/* 7898 */ {(12<<2)|2,{97,82,0}}, +/* 7899 */ {(12<<2)|2,{97,82,0}}, +/* 7900 */ {(12<<2)|2,{97,82,0}}, +/* 7901 */ {(12<<2)|2,{97,82,0}}, +/* 7902 */ {(12<<2)|2,{97,82,0}}, +/* 7903 */ {(12<<2)|2,{97,82,0}}, +/* 7904 */ {(12<<2)|2,{97,83,0}}, +/* 7905 */ {(12<<2)|2,{97,83,0}}, +/* 7906 */ {(12<<2)|2,{97,83,0}}, +/* 7907 */ {(12<<2)|2,{97,83,0}}, +/* 7908 */ {(12<<2)|2,{97,83,0}}, +/* 7909 */ {(12<<2)|2,{97,83,0}}, +/* 7910 */ {(12<<2)|2,{97,83,0}}, +/* 7911 */ {(12<<2)|2,{97,83,0}}, +/* 7912 */ {(12<<2)|2,{97,83,0}}, +/* 7913 */ {(12<<2)|2,{97,83,0}}, +/* 7914 */ {(12<<2)|2,{97,83,0}}, +/* 7915 */ {(12<<2)|2,{97,83,0}}, +/* 7916 */ {(12<<2)|2,{97,83,0}}, +/* 7917 */ {(12<<2)|2,{97,83,0}}, +/* 7918 */ {(12<<2)|2,{97,83,0}}, +/* 7919 */ {(12<<2)|2,{97,83,0}}, +/* 7920 */ {(12<<2)|2,{97,84,0}}, +/* 7921 */ {(12<<2)|2,{97,84,0}}, +/* 7922 */ {(12<<2)|2,{97,84,0}}, +/* 7923 */ {(12<<2)|2,{97,84,0}}, +/* 7924 */ {(12<<2)|2,{97,84,0}}, +/* 7925 */ {(12<<2)|2,{97,84,0}}, +/* 7926 */ {(12<<2)|2,{97,84,0}}, +/* 7927 */ {(12<<2)|2,{97,84,0}}, +/* 7928 */ {(12<<2)|2,{97,84,0}}, +/* 7929 */ {(12<<2)|2,{97,84,0}}, +/* 7930 */ {(12<<2)|2,{97,84,0}}, +/* 7931 */ {(12<<2)|2,{97,84,0}}, +/* 7932 */ {(12<<2)|2,{97,84,0}}, +/* 7933 */ {(12<<2)|2,{97,84,0}}, +/* 7934 */ {(12<<2)|2,{97,84,0}}, +/* 7935 */ {(12<<2)|2,{97,84,0}}, +/* 7936 */ {(12<<2)|2,{97,85,0}}, +/* 7937 */ {(12<<2)|2,{97,85,0}}, +/* 7938 */ {(12<<2)|2,{97,85,0}}, +/* 7939 */ {(12<<2)|2,{97,85,0}}, +/* 7940 */ {(12<<2)|2,{97,85,0}}, +/* 7941 */ {(12<<2)|2,{97,85,0}}, +/* 7942 */ {(12<<2)|2,{97,85,0}}, +/* 7943 */ {(12<<2)|2,{97,85,0}}, +/* 7944 */ {(12<<2)|2,{97,85,0}}, +/* 7945 */ {(12<<2)|2,{97,85,0}}, +/* 7946 */ {(12<<2)|2,{97,85,0}}, +/* 7947 */ {(12<<2)|2,{97,85,0}}, +/* 7948 */ {(12<<2)|2,{97,85,0}}, +/* 7949 */ {(12<<2)|2,{97,85,0}}, +/* 7950 */ {(12<<2)|2,{97,85,0}}, +/* 7951 */ {(12<<2)|2,{97,85,0}}, +/* 7952 */ {(12<<2)|2,{97,86,0}}, +/* 7953 */ {(12<<2)|2,{97,86,0}}, +/* 7954 */ {(12<<2)|2,{97,86,0}}, +/* 7955 */ {(12<<2)|2,{97,86,0}}, +/* 7956 */ {(12<<2)|2,{97,86,0}}, +/* 7957 */ {(12<<2)|2,{97,86,0}}, +/* 7958 */ {(12<<2)|2,{97,86,0}}, +/* 7959 */ {(12<<2)|2,{97,86,0}}, +/* 7960 */ {(12<<2)|2,{97,86,0}}, +/* 7961 */ {(12<<2)|2,{97,86,0}}, +/* 7962 */ {(12<<2)|2,{97,86,0}}, +/* 7963 */ {(12<<2)|2,{97,86,0}}, +/* 7964 */ {(12<<2)|2,{97,86,0}}, +/* 7965 */ {(12<<2)|2,{97,86,0}}, +/* 7966 */ {(12<<2)|2,{97,86,0}}, +/* 7967 */ {(12<<2)|2,{97,86,0}}, +/* 7968 */ {(12<<2)|2,{97,87,0}}, +/* 7969 */ {(12<<2)|2,{97,87,0}}, +/* 7970 */ {(12<<2)|2,{97,87,0}}, +/* 7971 */ {(12<<2)|2,{97,87,0}}, +/* 7972 */ {(12<<2)|2,{97,87,0}}, +/* 7973 */ {(12<<2)|2,{97,87,0}}, +/* 7974 */ {(12<<2)|2,{97,87,0}}, +/* 7975 */ {(12<<2)|2,{97,87,0}}, +/* 7976 */ {(12<<2)|2,{97,87,0}}, +/* 7977 */ {(12<<2)|2,{97,87,0}}, +/* 7978 */ {(12<<2)|2,{97,87,0}}, +/* 7979 */ {(12<<2)|2,{97,87,0}}, +/* 7980 */ {(12<<2)|2,{97,87,0}}, +/* 7981 */ {(12<<2)|2,{97,87,0}}, +/* 7982 */ {(12<<2)|2,{97,87,0}}, +/* 7983 */ {(12<<2)|2,{97,87,0}}, +/* 7984 */ {(12<<2)|2,{97,89,0}}, +/* 7985 */ {(12<<2)|2,{97,89,0}}, +/* 7986 */ {(12<<2)|2,{97,89,0}}, +/* 7987 */ {(12<<2)|2,{97,89,0}}, +/* 7988 */ {(12<<2)|2,{97,89,0}}, +/* 7989 */ {(12<<2)|2,{97,89,0}}, +/* 7990 */ {(12<<2)|2,{97,89,0}}, +/* 7991 */ {(12<<2)|2,{97,89,0}}, +/* 7992 */ {(12<<2)|2,{97,89,0}}, +/* 7993 */ {(12<<2)|2,{97,89,0}}, +/* 7994 */ {(12<<2)|2,{97,89,0}}, +/* 7995 */ {(12<<2)|2,{97,89,0}}, +/* 7996 */ {(12<<2)|2,{97,89,0}}, +/* 7997 */ {(12<<2)|2,{97,89,0}}, +/* 7998 */ {(12<<2)|2,{97,89,0}}, +/* 7999 */ {(12<<2)|2,{97,89,0}}, +/* 8000 */ {(12<<2)|2,{97,106,0}}, +/* 8001 */ {(12<<2)|2,{97,106,0}}, +/* 8002 */ {(12<<2)|2,{97,106,0}}, +/* 8003 */ {(12<<2)|2,{97,106,0}}, +/* 8004 */ {(12<<2)|2,{97,106,0}}, +/* 8005 */ {(12<<2)|2,{97,106,0}}, +/* 8006 */ {(12<<2)|2,{97,106,0}}, +/* 8007 */ {(12<<2)|2,{97,106,0}}, +/* 8008 */ {(12<<2)|2,{97,106,0}}, +/* 8009 */ {(12<<2)|2,{97,106,0}}, +/* 8010 */ {(12<<2)|2,{97,106,0}}, +/* 8011 */ {(12<<2)|2,{97,106,0}}, +/* 8012 */ {(12<<2)|2,{97,106,0}}, +/* 8013 */ {(12<<2)|2,{97,106,0}}, +/* 8014 */ {(12<<2)|2,{97,106,0}}, +/* 8015 */ {(12<<2)|2,{97,106,0}}, +/* 8016 */ {(12<<2)|2,{97,107,0}}, +/* 8017 */ {(12<<2)|2,{97,107,0}}, +/* 8018 */ {(12<<2)|2,{97,107,0}}, +/* 8019 */ {(12<<2)|2,{97,107,0}}, +/* 8020 */ {(12<<2)|2,{97,107,0}}, +/* 8021 */ {(12<<2)|2,{97,107,0}}, +/* 8022 */ {(12<<2)|2,{97,107,0}}, +/* 8023 */ {(12<<2)|2,{97,107,0}}, +/* 8024 */ {(12<<2)|2,{97,107,0}}, +/* 8025 */ {(12<<2)|2,{97,107,0}}, +/* 8026 */ {(12<<2)|2,{97,107,0}}, +/* 8027 */ {(12<<2)|2,{97,107,0}}, +/* 8028 */ {(12<<2)|2,{97,107,0}}, +/* 8029 */ {(12<<2)|2,{97,107,0}}, +/* 8030 */ {(12<<2)|2,{97,107,0}}, +/* 8031 */ {(12<<2)|2,{97,107,0}}, +/* 8032 */ {(12<<2)|2,{97,113,0}}, +/* 8033 */ {(12<<2)|2,{97,113,0}}, +/* 8034 */ {(12<<2)|2,{97,113,0}}, +/* 8035 */ {(12<<2)|2,{97,113,0}}, +/* 8036 */ {(12<<2)|2,{97,113,0}}, +/* 8037 */ {(12<<2)|2,{97,113,0}}, +/* 8038 */ {(12<<2)|2,{97,113,0}}, +/* 8039 */ {(12<<2)|2,{97,113,0}}, +/* 8040 */ {(12<<2)|2,{97,113,0}}, +/* 8041 */ {(12<<2)|2,{97,113,0}}, +/* 8042 */ {(12<<2)|2,{97,113,0}}, +/* 8043 */ {(12<<2)|2,{97,113,0}}, +/* 8044 */ {(12<<2)|2,{97,113,0}}, +/* 8045 */ {(12<<2)|2,{97,113,0}}, +/* 8046 */ {(12<<2)|2,{97,113,0}}, +/* 8047 */ {(12<<2)|2,{97,113,0}}, +/* 8048 */ {(12<<2)|2,{97,118,0}}, +/* 8049 */ {(12<<2)|2,{97,118,0}}, +/* 8050 */ {(12<<2)|2,{97,118,0}}, +/* 8051 */ {(12<<2)|2,{97,118,0}}, +/* 8052 */ {(12<<2)|2,{97,118,0}}, +/* 8053 */ {(12<<2)|2,{97,118,0}}, +/* 8054 */ {(12<<2)|2,{97,118,0}}, +/* 8055 */ {(12<<2)|2,{97,118,0}}, +/* 8056 */ {(12<<2)|2,{97,118,0}}, +/* 8057 */ {(12<<2)|2,{97,118,0}}, +/* 8058 */ {(12<<2)|2,{97,118,0}}, +/* 8059 */ {(12<<2)|2,{97,118,0}}, +/* 8060 */ {(12<<2)|2,{97,118,0}}, +/* 8061 */ {(12<<2)|2,{97,118,0}}, +/* 8062 */ {(12<<2)|2,{97,118,0}}, +/* 8063 */ {(12<<2)|2,{97,118,0}}, +/* 8064 */ {(12<<2)|2,{97,119,0}}, +/* 8065 */ {(12<<2)|2,{97,119,0}}, +/* 8066 */ {(12<<2)|2,{97,119,0}}, +/* 8067 */ {(12<<2)|2,{97,119,0}}, +/* 8068 */ {(12<<2)|2,{97,119,0}}, +/* 8069 */ {(12<<2)|2,{97,119,0}}, +/* 8070 */ {(12<<2)|2,{97,119,0}}, +/* 8071 */ {(12<<2)|2,{97,119,0}}, +/* 8072 */ {(12<<2)|2,{97,119,0}}, +/* 8073 */ {(12<<2)|2,{97,119,0}}, +/* 8074 */ {(12<<2)|2,{97,119,0}}, +/* 8075 */ {(12<<2)|2,{97,119,0}}, +/* 8076 */ {(12<<2)|2,{97,119,0}}, +/* 8077 */ {(12<<2)|2,{97,119,0}}, +/* 8078 */ {(12<<2)|2,{97,119,0}}, +/* 8079 */ {(12<<2)|2,{97,119,0}}, +/* 8080 */ {(12<<2)|2,{97,120,0}}, +/* 8081 */ {(12<<2)|2,{97,120,0}}, +/* 8082 */ {(12<<2)|2,{97,120,0}}, +/* 8083 */ {(12<<2)|2,{97,120,0}}, +/* 8084 */ {(12<<2)|2,{97,120,0}}, +/* 8085 */ {(12<<2)|2,{97,120,0}}, +/* 8086 */ {(12<<2)|2,{97,120,0}}, +/* 8087 */ {(12<<2)|2,{97,120,0}}, +/* 8088 */ {(12<<2)|2,{97,120,0}}, +/* 8089 */ {(12<<2)|2,{97,120,0}}, +/* 8090 */ {(12<<2)|2,{97,120,0}}, +/* 8091 */ {(12<<2)|2,{97,120,0}}, +/* 8092 */ {(12<<2)|2,{97,120,0}}, +/* 8093 */ {(12<<2)|2,{97,120,0}}, +/* 8094 */ {(12<<2)|2,{97,120,0}}, +/* 8095 */ {(12<<2)|2,{97,120,0}}, +/* 8096 */ {(12<<2)|2,{97,121,0}}, +/* 8097 */ {(12<<2)|2,{97,121,0}}, +/* 8098 */ {(12<<2)|2,{97,121,0}}, +/* 8099 */ {(12<<2)|2,{97,121,0}}, +/* 8100 */ {(12<<2)|2,{97,121,0}}, +/* 8101 */ {(12<<2)|2,{97,121,0}}, +/* 8102 */ {(12<<2)|2,{97,121,0}}, +/* 8103 */ {(12<<2)|2,{97,121,0}}, +/* 8104 */ {(12<<2)|2,{97,121,0}}, +/* 8105 */ {(12<<2)|2,{97,121,0}}, +/* 8106 */ {(12<<2)|2,{97,121,0}}, +/* 8107 */ {(12<<2)|2,{97,121,0}}, +/* 8108 */ {(12<<2)|2,{97,121,0}}, +/* 8109 */ {(12<<2)|2,{97,121,0}}, +/* 8110 */ {(12<<2)|2,{97,121,0}}, +/* 8111 */ {(12<<2)|2,{97,121,0}}, +/* 8112 */ {(12<<2)|2,{97,122,0}}, +/* 8113 */ {(12<<2)|2,{97,122,0}}, +/* 8114 */ {(12<<2)|2,{97,122,0}}, +/* 8115 */ {(12<<2)|2,{97,122,0}}, +/* 8116 */ {(12<<2)|2,{97,122,0}}, +/* 8117 */ {(12<<2)|2,{97,122,0}}, +/* 8118 */ {(12<<2)|2,{97,122,0}}, +/* 8119 */ {(12<<2)|2,{97,122,0}}, +/* 8120 */ {(12<<2)|2,{97,122,0}}, +/* 8121 */ {(12<<2)|2,{97,122,0}}, +/* 8122 */ {(12<<2)|2,{97,122,0}}, +/* 8123 */ {(12<<2)|2,{97,122,0}}, +/* 8124 */ {(12<<2)|2,{97,122,0}}, +/* 8125 */ {(12<<2)|2,{97,122,0}}, +/* 8126 */ {(12<<2)|2,{97,122,0}}, +/* 8127 */ {(12<<2)|2,{97,122,0}}, +/* 8128 */ {(13<<2)|2,{97,38,0}}, +/* 8129 */ {(13<<2)|2,{97,38,0}}, +/* 8130 */ {(13<<2)|2,{97,38,0}}, +/* 8131 */ {(13<<2)|2,{97,38,0}}, +/* 8132 */ {(13<<2)|2,{97,38,0}}, +/* 8133 */ {(13<<2)|2,{97,38,0}}, +/* 8134 */ {(13<<2)|2,{97,38,0}}, +/* 8135 */ {(13<<2)|2,{97,38,0}}, +/* 8136 */ {(13<<2)|2,{97,42,0}}, +/* 8137 */ {(13<<2)|2,{97,42,0}}, +/* 8138 */ {(13<<2)|2,{97,42,0}}, +/* 8139 */ {(13<<2)|2,{97,42,0}}, +/* 8140 */ {(13<<2)|2,{97,42,0}}, +/* 8141 */ {(13<<2)|2,{97,42,0}}, +/* 8142 */ {(13<<2)|2,{97,42,0}}, +/* 8143 */ {(13<<2)|2,{97,42,0}}, +/* 8144 */ {(13<<2)|2,{97,44,0}}, +/* 8145 */ {(13<<2)|2,{97,44,0}}, +/* 8146 */ {(13<<2)|2,{97,44,0}}, +/* 8147 */ {(13<<2)|2,{97,44,0}}, +/* 8148 */ {(13<<2)|2,{97,44,0}}, +/* 8149 */ {(13<<2)|2,{97,44,0}}, +/* 8150 */ {(13<<2)|2,{97,44,0}}, +/* 8151 */ {(13<<2)|2,{97,44,0}}, +/* 8152 */ {(13<<2)|2,{97,59,0}}, +/* 8153 */ {(13<<2)|2,{97,59,0}}, +/* 8154 */ {(13<<2)|2,{97,59,0}}, +/* 8155 */ {(13<<2)|2,{97,59,0}}, +/* 8156 */ {(13<<2)|2,{97,59,0}}, +/* 8157 */ {(13<<2)|2,{97,59,0}}, +/* 8158 */ {(13<<2)|2,{97,59,0}}, +/* 8159 */ {(13<<2)|2,{97,59,0}}, +/* 8160 */ {(13<<2)|2,{97,88,0}}, +/* 8161 */ {(13<<2)|2,{97,88,0}}, +/* 8162 */ {(13<<2)|2,{97,88,0}}, +/* 8163 */ {(13<<2)|2,{97,88,0}}, +/* 8164 */ {(13<<2)|2,{97,88,0}}, +/* 8165 */ {(13<<2)|2,{97,88,0}}, +/* 8166 */ {(13<<2)|2,{97,88,0}}, +/* 8167 */ {(13<<2)|2,{97,88,0}}, +/* 8168 */ {(13<<2)|2,{97,90,0}}, +/* 8169 */ {(13<<2)|2,{97,90,0}}, +/* 8170 */ {(13<<2)|2,{97,90,0}}, +/* 8171 */ {(13<<2)|2,{97,90,0}}, +/* 8172 */ {(13<<2)|2,{97,90,0}}, +/* 8173 */ {(13<<2)|2,{97,90,0}}, +/* 8174 */ {(13<<2)|2,{97,90,0}}, +/* 8175 */ {(13<<2)|2,{97,90,0}}, +/* 8176 */ {(15<<2)|2,{97,33,0}}, +/* 8177 */ {(15<<2)|2,{97,33,0}}, +/* 8178 */ {(15<<2)|2,{97,34,0}}, +/* 8179 */ {(15<<2)|2,{97,34,0}}, +/* 8180 */ {(15<<2)|2,{97,40,0}}, +/* 8181 */ {(15<<2)|2,{97,40,0}}, +/* 8182 */ {(15<<2)|2,{97,41,0}}, +/* 8183 */ {(15<<2)|2,{97,41,0}}, +/* 8184 */ {(15<<2)|2,{97,63,0}}, +/* 8185 */ {(15<<2)|2,{97,63,0}}, +/* 8186 */ {(16<<2)|2,{97,39,0}}, +/* 8187 */ {(16<<2)|2,{97,43,0}}, +/* 8188 */ {(16<<2)|2,{97,124,0}}, +/* 8189 */ {(5<<2)|1,{97,0,0}}, +/* 8190 */ {(5<<2)|1,{97,0,0}}, +/* 8191 */ {(5<<2)|1,{97,0,0}}, +/* 8192 */ {(15<<2)|3,{99,48,48}}, +/* 8193 */ {(15<<2)|3,{99,48,48}}, +/* 8194 */ {(15<<2)|3,{99,48,49}}, +/* 8195 */ {(15<<2)|3,{99,48,49}}, +/* 8196 */ {(15<<2)|3,{99,48,50}}, +/* 8197 */ {(15<<2)|3,{99,48,50}}, +/* 8198 */ {(15<<2)|3,{99,48,97}}, +/* 8199 */ {(15<<2)|3,{99,48,97}}, +/* 8200 */ {(15<<2)|3,{99,48,99}}, +/* 8201 */ {(15<<2)|3,{99,48,99}}, +/* 8202 */ {(15<<2)|3,{99,48,101}}, +/* 8203 */ {(15<<2)|3,{99,48,101}}, +/* 8204 */ {(15<<2)|3,{99,48,105}}, +/* 8205 */ {(15<<2)|3,{99,48,105}}, +/* 8206 */ {(15<<2)|3,{99,48,111}}, +/* 8207 */ {(15<<2)|3,{99,48,111}}, +/* 8208 */ {(15<<2)|3,{99,48,115}}, +/* 8209 */ {(15<<2)|3,{99,48,115}}, +/* 8210 */ {(15<<2)|3,{99,48,116}}, +/* 8211 */ {(15<<2)|3,{99,48,116}}, +/* 8212 */ {(16<<2)|3,{99,48,32}}, +/* 8213 */ {(16<<2)|3,{99,48,37}}, +/* 8214 */ {(16<<2)|3,{99,48,45}}, +/* 8215 */ {(16<<2)|3,{99,48,46}}, +/* 8216 */ {(16<<2)|3,{99,48,47}}, +/* 8217 */ {(16<<2)|3,{99,48,51}}, +/* 8218 */ {(16<<2)|3,{99,48,52}}, +/* 8219 */ {(16<<2)|3,{99,48,53}}, +/* 8220 */ {(16<<2)|3,{99,48,54}}, +/* 8221 */ {(16<<2)|3,{99,48,55}}, +/* 8222 */ {(16<<2)|3,{99,48,56}}, +/* 8223 */ {(16<<2)|3,{99,48,57}}, +/* 8224 */ {(16<<2)|3,{99,48,61}}, +/* 8225 */ {(16<<2)|3,{99,48,65}}, +/* 8226 */ {(16<<2)|3,{99,48,95}}, +/* 8227 */ {(16<<2)|3,{99,48,98}}, +/* 8228 */ {(16<<2)|3,{99,48,100}}, +/* 8229 */ {(16<<2)|3,{99,48,102}}, +/* 8230 */ {(16<<2)|3,{99,48,103}}, +/* 8231 */ {(16<<2)|3,{99,48,104}}, +/* 8232 */ {(16<<2)|3,{99,48,108}}, +/* 8233 */ {(16<<2)|3,{99,48,109}}, +/* 8234 */ {(16<<2)|3,{99,48,110}}, +/* 8235 */ {(16<<2)|3,{99,48,112}}, +/* 8236 */ {(16<<2)|3,{99,48,114}}, +/* 8237 */ {(16<<2)|3,{99,48,117}}, +/* 8238 */ {(10<<2)|2,{99,48,0}}, +/* 8239 */ {(10<<2)|2,{99,48,0}}, +/* 8240 */ {(10<<2)|2,{99,48,0}}, +/* 8241 */ {(10<<2)|2,{99,48,0}}, +/* 8242 */ {(10<<2)|2,{99,48,0}}, +/* 8243 */ {(10<<2)|2,{99,48,0}}, +/* 8244 */ {(10<<2)|2,{99,48,0}}, +/* 8245 */ {(10<<2)|2,{99,48,0}}, +/* 8246 */ {(10<<2)|2,{99,48,0}}, +/* 8247 */ {(10<<2)|2,{99,48,0}}, +/* 8248 */ {(10<<2)|2,{99,48,0}}, +/* 8249 */ {(10<<2)|2,{99,48,0}}, +/* 8250 */ {(10<<2)|2,{99,48,0}}, +/* 8251 */ {(10<<2)|2,{99,48,0}}, +/* 8252 */ {(10<<2)|2,{99,48,0}}, +/* 8253 */ {(10<<2)|2,{99,48,0}}, +/* 8254 */ {(10<<2)|2,{99,48,0}}, +/* 8255 */ {(10<<2)|2,{99,48,0}}, +/* 8256 */ {(15<<2)|3,{99,49,48}}, +/* 8257 */ {(15<<2)|3,{99,49,48}}, +/* 8258 */ {(15<<2)|3,{99,49,49}}, +/* 8259 */ {(15<<2)|3,{99,49,49}}, +/* 8260 */ {(15<<2)|3,{99,49,50}}, +/* 8261 */ {(15<<2)|3,{99,49,50}}, +/* 8262 */ {(15<<2)|3,{99,49,97}}, +/* 8263 */ {(15<<2)|3,{99,49,97}}, +/* 8264 */ {(15<<2)|3,{99,49,99}}, +/* 8265 */ {(15<<2)|3,{99,49,99}}, +/* 8266 */ {(15<<2)|3,{99,49,101}}, +/* 8267 */ {(15<<2)|3,{99,49,101}}, +/* 8268 */ {(15<<2)|3,{99,49,105}}, +/* 8269 */ {(15<<2)|3,{99,49,105}}, +/* 8270 */ {(15<<2)|3,{99,49,111}}, +/* 8271 */ {(15<<2)|3,{99,49,111}}, +/* 8272 */ {(15<<2)|3,{99,49,115}}, +/* 8273 */ {(15<<2)|3,{99,49,115}}, +/* 8274 */ {(15<<2)|3,{99,49,116}}, +/* 8275 */ {(15<<2)|3,{99,49,116}}, +/* 8276 */ {(16<<2)|3,{99,49,32}}, +/* 8277 */ {(16<<2)|3,{99,49,37}}, +/* 8278 */ {(16<<2)|3,{99,49,45}}, +/* 8279 */ {(16<<2)|3,{99,49,46}}, +/* 8280 */ {(16<<2)|3,{99,49,47}}, +/* 8281 */ {(16<<2)|3,{99,49,51}}, +/* 8282 */ {(16<<2)|3,{99,49,52}}, +/* 8283 */ {(16<<2)|3,{99,49,53}}, +/* 8284 */ {(16<<2)|3,{99,49,54}}, +/* 8285 */ {(16<<2)|3,{99,49,55}}, +/* 8286 */ {(16<<2)|3,{99,49,56}}, +/* 8287 */ {(16<<2)|3,{99,49,57}}, +/* 8288 */ {(16<<2)|3,{99,49,61}}, +/* 8289 */ {(16<<2)|3,{99,49,65}}, +/* 8290 */ {(16<<2)|3,{99,49,95}}, +/* 8291 */ {(16<<2)|3,{99,49,98}}, +/* 8292 */ {(16<<2)|3,{99,49,100}}, +/* 8293 */ {(16<<2)|3,{99,49,102}}, +/* 8294 */ {(16<<2)|3,{99,49,103}}, +/* 8295 */ {(16<<2)|3,{99,49,104}}, +/* 8296 */ {(16<<2)|3,{99,49,108}}, +/* 8297 */ {(16<<2)|3,{99,49,109}}, +/* 8298 */ {(16<<2)|3,{99,49,110}}, +/* 8299 */ {(16<<2)|3,{99,49,112}}, +/* 8300 */ {(16<<2)|3,{99,49,114}}, +/* 8301 */ {(16<<2)|3,{99,49,117}}, +/* 8302 */ {(10<<2)|2,{99,49,0}}, +/* 8303 */ {(10<<2)|2,{99,49,0}}, +/* 8304 */ {(10<<2)|2,{99,49,0}}, +/* 8305 */ {(10<<2)|2,{99,49,0}}, +/* 8306 */ {(10<<2)|2,{99,49,0}}, +/* 8307 */ {(10<<2)|2,{99,49,0}}, +/* 8308 */ {(10<<2)|2,{99,49,0}}, +/* 8309 */ {(10<<2)|2,{99,49,0}}, +/* 8310 */ {(10<<2)|2,{99,49,0}}, +/* 8311 */ {(10<<2)|2,{99,49,0}}, +/* 8312 */ {(10<<2)|2,{99,49,0}}, +/* 8313 */ {(10<<2)|2,{99,49,0}}, +/* 8314 */ {(10<<2)|2,{99,49,0}}, +/* 8315 */ {(10<<2)|2,{99,49,0}}, +/* 8316 */ {(10<<2)|2,{99,49,0}}, +/* 8317 */ {(10<<2)|2,{99,49,0}}, +/* 8318 */ {(10<<2)|2,{99,49,0}}, +/* 8319 */ {(10<<2)|2,{99,49,0}}, +/* 8320 */ {(15<<2)|3,{99,50,48}}, +/* 8321 */ {(15<<2)|3,{99,50,48}}, +/* 8322 */ {(15<<2)|3,{99,50,49}}, +/* 8323 */ {(15<<2)|3,{99,50,49}}, +/* 8324 */ {(15<<2)|3,{99,50,50}}, +/* 8325 */ {(15<<2)|3,{99,50,50}}, +/* 8326 */ {(15<<2)|3,{99,50,97}}, +/* 8327 */ {(15<<2)|3,{99,50,97}}, +/* 8328 */ {(15<<2)|3,{99,50,99}}, +/* 8329 */ {(15<<2)|3,{99,50,99}}, +/* 8330 */ {(15<<2)|3,{99,50,101}}, +/* 8331 */ {(15<<2)|3,{99,50,101}}, +/* 8332 */ {(15<<2)|3,{99,50,105}}, +/* 8333 */ {(15<<2)|3,{99,50,105}}, +/* 8334 */ {(15<<2)|3,{99,50,111}}, +/* 8335 */ {(15<<2)|3,{99,50,111}}, +/* 8336 */ {(15<<2)|3,{99,50,115}}, +/* 8337 */ {(15<<2)|3,{99,50,115}}, +/* 8338 */ {(15<<2)|3,{99,50,116}}, +/* 8339 */ {(15<<2)|3,{99,50,116}}, +/* 8340 */ {(16<<2)|3,{99,50,32}}, +/* 8341 */ {(16<<2)|3,{99,50,37}}, +/* 8342 */ {(16<<2)|3,{99,50,45}}, +/* 8343 */ {(16<<2)|3,{99,50,46}}, +/* 8344 */ {(16<<2)|3,{99,50,47}}, +/* 8345 */ {(16<<2)|3,{99,50,51}}, +/* 8346 */ {(16<<2)|3,{99,50,52}}, +/* 8347 */ {(16<<2)|3,{99,50,53}}, +/* 8348 */ {(16<<2)|3,{99,50,54}}, +/* 8349 */ {(16<<2)|3,{99,50,55}}, +/* 8350 */ {(16<<2)|3,{99,50,56}}, +/* 8351 */ {(16<<2)|3,{99,50,57}}, +/* 8352 */ {(16<<2)|3,{99,50,61}}, +/* 8353 */ {(16<<2)|3,{99,50,65}}, +/* 8354 */ {(16<<2)|3,{99,50,95}}, +/* 8355 */ {(16<<2)|3,{99,50,98}}, +/* 8356 */ {(16<<2)|3,{99,50,100}}, +/* 8357 */ {(16<<2)|3,{99,50,102}}, +/* 8358 */ {(16<<2)|3,{99,50,103}}, +/* 8359 */ {(16<<2)|3,{99,50,104}}, +/* 8360 */ {(16<<2)|3,{99,50,108}}, +/* 8361 */ {(16<<2)|3,{99,50,109}}, +/* 8362 */ {(16<<2)|3,{99,50,110}}, +/* 8363 */ {(16<<2)|3,{99,50,112}}, +/* 8364 */ {(16<<2)|3,{99,50,114}}, +/* 8365 */ {(16<<2)|3,{99,50,117}}, +/* 8366 */ {(10<<2)|2,{99,50,0}}, +/* 8367 */ {(10<<2)|2,{99,50,0}}, +/* 8368 */ {(10<<2)|2,{99,50,0}}, +/* 8369 */ {(10<<2)|2,{99,50,0}}, +/* 8370 */ {(10<<2)|2,{99,50,0}}, +/* 8371 */ {(10<<2)|2,{99,50,0}}, +/* 8372 */ {(10<<2)|2,{99,50,0}}, +/* 8373 */ {(10<<2)|2,{99,50,0}}, +/* 8374 */ {(10<<2)|2,{99,50,0}}, +/* 8375 */ {(10<<2)|2,{99,50,0}}, +/* 8376 */ {(10<<2)|2,{99,50,0}}, +/* 8377 */ {(10<<2)|2,{99,50,0}}, +/* 8378 */ {(10<<2)|2,{99,50,0}}, +/* 8379 */ {(10<<2)|2,{99,50,0}}, +/* 8380 */ {(10<<2)|2,{99,50,0}}, +/* 8381 */ {(10<<2)|2,{99,50,0}}, +/* 8382 */ {(10<<2)|2,{99,50,0}}, +/* 8383 */ {(10<<2)|2,{99,50,0}}, +/* 8384 */ {(15<<2)|3,{99,97,48}}, +/* 8385 */ {(15<<2)|3,{99,97,48}}, +/* 8386 */ {(15<<2)|3,{99,97,49}}, +/* 8387 */ {(15<<2)|3,{99,97,49}}, +/* 8388 */ {(15<<2)|3,{99,97,50}}, +/* 8389 */ {(15<<2)|3,{99,97,50}}, +/* 8390 */ {(15<<2)|3,{99,97,97}}, +/* 8391 */ {(15<<2)|3,{99,97,97}}, +/* 8392 */ {(15<<2)|3,{99,97,99}}, +/* 8393 */ {(15<<2)|3,{99,97,99}}, +/* 8394 */ {(15<<2)|3,{99,97,101}}, +/* 8395 */ {(15<<2)|3,{99,97,101}}, +/* 8396 */ {(15<<2)|3,{99,97,105}}, +/* 8397 */ {(15<<2)|3,{99,97,105}}, +/* 8398 */ {(15<<2)|3,{99,97,111}}, +/* 8399 */ {(15<<2)|3,{99,97,111}}, +/* 8400 */ {(15<<2)|3,{99,97,115}}, +/* 8401 */ {(15<<2)|3,{99,97,115}}, +/* 8402 */ {(15<<2)|3,{99,97,116}}, +/* 8403 */ {(15<<2)|3,{99,97,116}}, +/* 8404 */ {(16<<2)|3,{99,97,32}}, +/* 8405 */ {(16<<2)|3,{99,97,37}}, +/* 8406 */ {(16<<2)|3,{99,97,45}}, +/* 8407 */ {(16<<2)|3,{99,97,46}}, +/* 8408 */ {(16<<2)|3,{99,97,47}}, +/* 8409 */ {(16<<2)|3,{99,97,51}}, +/* 8410 */ {(16<<2)|3,{99,97,52}}, +/* 8411 */ {(16<<2)|3,{99,97,53}}, +/* 8412 */ {(16<<2)|3,{99,97,54}}, +/* 8413 */ {(16<<2)|3,{99,97,55}}, +/* 8414 */ {(16<<2)|3,{99,97,56}}, +/* 8415 */ {(16<<2)|3,{99,97,57}}, +/* 8416 */ {(16<<2)|3,{99,97,61}}, +/* 8417 */ {(16<<2)|3,{99,97,65}}, +/* 8418 */ {(16<<2)|3,{99,97,95}}, +/* 8419 */ {(16<<2)|3,{99,97,98}}, +/* 8420 */ {(16<<2)|3,{99,97,100}}, +/* 8421 */ {(16<<2)|3,{99,97,102}}, +/* 8422 */ {(16<<2)|3,{99,97,103}}, +/* 8423 */ {(16<<2)|3,{99,97,104}}, +/* 8424 */ {(16<<2)|3,{99,97,108}}, +/* 8425 */ {(16<<2)|3,{99,97,109}}, +/* 8426 */ {(16<<2)|3,{99,97,110}}, +/* 8427 */ {(16<<2)|3,{99,97,112}}, +/* 8428 */ {(16<<2)|3,{99,97,114}}, +/* 8429 */ {(16<<2)|3,{99,97,117}}, +/* 8430 */ {(10<<2)|2,{99,97,0}}, +/* 8431 */ {(10<<2)|2,{99,97,0}}, +/* 8432 */ {(10<<2)|2,{99,97,0}}, +/* 8433 */ {(10<<2)|2,{99,97,0}}, +/* 8434 */ {(10<<2)|2,{99,97,0}}, +/* 8435 */ {(10<<2)|2,{99,97,0}}, +/* 8436 */ {(10<<2)|2,{99,97,0}}, +/* 8437 */ {(10<<2)|2,{99,97,0}}, +/* 8438 */ {(10<<2)|2,{99,97,0}}, +/* 8439 */ {(10<<2)|2,{99,97,0}}, +/* 8440 */ {(10<<2)|2,{99,97,0}}, +/* 8441 */ {(10<<2)|2,{99,97,0}}, +/* 8442 */ {(10<<2)|2,{99,97,0}}, +/* 8443 */ {(10<<2)|2,{99,97,0}}, +/* 8444 */ {(10<<2)|2,{99,97,0}}, +/* 8445 */ {(10<<2)|2,{99,97,0}}, +/* 8446 */ {(10<<2)|2,{99,97,0}}, +/* 8447 */ {(10<<2)|2,{99,97,0}}, +/* 8448 */ {(15<<2)|3,{99,99,48}}, +/* 8449 */ {(15<<2)|3,{99,99,48}}, +/* 8450 */ {(15<<2)|3,{99,99,49}}, +/* 8451 */ {(15<<2)|3,{99,99,49}}, +/* 8452 */ {(15<<2)|3,{99,99,50}}, +/* 8453 */ {(15<<2)|3,{99,99,50}}, +/* 8454 */ {(15<<2)|3,{99,99,97}}, +/* 8455 */ {(15<<2)|3,{99,99,97}}, +/* 8456 */ {(15<<2)|3,{99,99,99}}, +/* 8457 */ {(15<<2)|3,{99,99,99}}, +/* 8458 */ {(15<<2)|3,{99,99,101}}, +/* 8459 */ {(15<<2)|3,{99,99,101}}, +/* 8460 */ {(15<<2)|3,{99,99,105}}, +/* 8461 */ {(15<<2)|3,{99,99,105}}, +/* 8462 */ {(15<<2)|3,{99,99,111}}, +/* 8463 */ {(15<<2)|3,{99,99,111}}, +/* 8464 */ {(15<<2)|3,{99,99,115}}, +/* 8465 */ {(15<<2)|3,{99,99,115}}, +/* 8466 */ {(15<<2)|3,{99,99,116}}, +/* 8467 */ {(15<<2)|3,{99,99,116}}, +/* 8468 */ {(16<<2)|3,{99,99,32}}, +/* 8469 */ {(16<<2)|3,{99,99,37}}, +/* 8470 */ {(16<<2)|3,{99,99,45}}, +/* 8471 */ {(16<<2)|3,{99,99,46}}, +/* 8472 */ {(16<<2)|3,{99,99,47}}, +/* 8473 */ {(16<<2)|3,{99,99,51}}, +/* 8474 */ {(16<<2)|3,{99,99,52}}, +/* 8475 */ {(16<<2)|3,{99,99,53}}, +/* 8476 */ {(16<<2)|3,{99,99,54}}, +/* 8477 */ {(16<<2)|3,{99,99,55}}, +/* 8478 */ {(16<<2)|3,{99,99,56}}, +/* 8479 */ {(16<<2)|3,{99,99,57}}, +/* 8480 */ {(16<<2)|3,{99,99,61}}, +/* 8481 */ {(16<<2)|3,{99,99,65}}, +/* 8482 */ {(16<<2)|3,{99,99,95}}, +/* 8483 */ {(16<<2)|3,{99,99,98}}, +/* 8484 */ {(16<<2)|3,{99,99,100}}, +/* 8485 */ {(16<<2)|3,{99,99,102}}, +/* 8486 */ {(16<<2)|3,{99,99,103}}, +/* 8487 */ {(16<<2)|3,{99,99,104}}, +/* 8488 */ {(16<<2)|3,{99,99,108}}, +/* 8489 */ {(16<<2)|3,{99,99,109}}, +/* 8490 */ {(16<<2)|3,{99,99,110}}, +/* 8491 */ {(16<<2)|3,{99,99,112}}, +/* 8492 */ {(16<<2)|3,{99,99,114}}, +/* 8493 */ {(16<<2)|3,{99,99,117}}, +/* 8494 */ {(10<<2)|2,{99,99,0}}, +/* 8495 */ {(10<<2)|2,{99,99,0}}, +/* 8496 */ {(10<<2)|2,{99,99,0}}, +/* 8497 */ {(10<<2)|2,{99,99,0}}, +/* 8498 */ {(10<<2)|2,{99,99,0}}, +/* 8499 */ {(10<<2)|2,{99,99,0}}, +/* 8500 */ {(10<<2)|2,{99,99,0}}, +/* 8501 */ {(10<<2)|2,{99,99,0}}, +/* 8502 */ {(10<<2)|2,{99,99,0}}, +/* 8503 */ {(10<<2)|2,{99,99,0}}, +/* 8504 */ {(10<<2)|2,{99,99,0}}, +/* 8505 */ {(10<<2)|2,{99,99,0}}, +/* 8506 */ {(10<<2)|2,{99,99,0}}, +/* 8507 */ {(10<<2)|2,{99,99,0}}, +/* 8508 */ {(10<<2)|2,{99,99,0}}, +/* 8509 */ {(10<<2)|2,{99,99,0}}, +/* 8510 */ {(10<<2)|2,{99,99,0}}, +/* 8511 */ {(10<<2)|2,{99,99,0}}, +/* 8512 */ {(15<<2)|3,{99,101,48}}, +/* 8513 */ {(15<<2)|3,{99,101,48}}, +/* 8514 */ {(15<<2)|3,{99,101,49}}, +/* 8515 */ {(15<<2)|3,{99,101,49}}, +/* 8516 */ {(15<<2)|3,{99,101,50}}, +/* 8517 */ {(15<<2)|3,{99,101,50}}, +/* 8518 */ {(15<<2)|3,{99,101,97}}, +/* 8519 */ {(15<<2)|3,{99,101,97}}, +/* 8520 */ {(15<<2)|3,{99,101,99}}, +/* 8521 */ {(15<<2)|3,{99,101,99}}, +/* 8522 */ {(15<<2)|3,{99,101,101}}, +/* 8523 */ {(15<<2)|3,{99,101,101}}, +/* 8524 */ {(15<<2)|3,{99,101,105}}, +/* 8525 */ {(15<<2)|3,{99,101,105}}, +/* 8526 */ {(15<<2)|3,{99,101,111}}, +/* 8527 */ {(15<<2)|3,{99,101,111}}, +/* 8528 */ {(15<<2)|3,{99,101,115}}, +/* 8529 */ {(15<<2)|3,{99,101,115}}, +/* 8530 */ {(15<<2)|3,{99,101,116}}, +/* 8531 */ {(15<<2)|3,{99,101,116}}, +/* 8532 */ {(16<<2)|3,{99,101,32}}, +/* 8533 */ {(16<<2)|3,{99,101,37}}, +/* 8534 */ {(16<<2)|3,{99,101,45}}, +/* 8535 */ {(16<<2)|3,{99,101,46}}, +/* 8536 */ {(16<<2)|3,{99,101,47}}, +/* 8537 */ {(16<<2)|3,{99,101,51}}, +/* 8538 */ {(16<<2)|3,{99,101,52}}, +/* 8539 */ {(16<<2)|3,{99,101,53}}, +/* 8540 */ {(16<<2)|3,{99,101,54}}, +/* 8541 */ {(16<<2)|3,{99,101,55}}, +/* 8542 */ {(16<<2)|3,{99,101,56}}, +/* 8543 */ {(16<<2)|3,{99,101,57}}, +/* 8544 */ {(16<<2)|3,{99,101,61}}, +/* 8545 */ {(16<<2)|3,{99,101,65}}, +/* 8546 */ {(16<<2)|3,{99,101,95}}, +/* 8547 */ {(16<<2)|3,{99,101,98}}, +/* 8548 */ {(16<<2)|3,{99,101,100}}, +/* 8549 */ {(16<<2)|3,{99,101,102}}, +/* 8550 */ {(16<<2)|3,{99,101,103}}, +/* 8551 */ {(16<<2)|3,{99,101,104}}, +/* 8552 */ {(16<<2)|3,{99,101,108}}, +/* 8553 */ {(16<<2)|3,{99,101,109}}, +/* 8554 */ {(16<<2)|3,{99,101,110}}, +/* 8555 */ {(16<<2)|3,{99,101,112}}, +/* 8556 */ {(16<<2)|3,{99,101,114}}, +/* 8557 */ {(16<<2)|3,{99,101,117}}, +/* 8558 */ {(10<<2)|2,{99,101,0}}, +/* 8559 */ {(10<<2)|2,{99,101,0}}, +/* 8560 */ {(10<<2)|2,{99,101,0}}, +/* 8561 */ {(10<<2)|2,{99,101,0}}, +/* 8562 */ {(10<<2)|2,{99,101,0}}, +/* 8563 */ {(10<<2)|2,{99,101,0}}, +/* 8564 */ {(10<<2)|2,{99,101,0}}, +/* 8565 */ {(10<<2)|2,{99,101,0}}, +/* 8566 */ {(10<<2)|2,{99,101,0}}, +/* 8567 */ {(10<<2)|2,{99,101,0}}, +/* 8568 */ {(10<<2)|2,{99,101,0}}, +/* 8569 */ {(10<<2)|2,{99,101,0}}, +/* 8570 */ {(10<<2)|2,{99,101,0}}, +/* 8571 */ {(10<<2)|2,{99,101,0}}, +/* 8572 */ {(10<<2)|2,{99,101,0}}, +/* 8573 */ {(10<<2)|2,{99,101,0}}, +/* 8574 */ {(10<<2)|2,{99,101,0}}, +/* 8575 */ {(10<<2)|2,{99,101,0}}, +/* 8576 */ {(15<<2)|3,{99,105,48}}, +/* 8577 */ {(15<<2)|3,{99,105,48}}, +/* 8578 */ {(15<<2)|3,{99,105,49}}, +/* 8579 */ {(15<<2)|3,{99,105,49}}, +/* 8580 */ {(15<<2)|3,{99,105,50}}, +/* 8581 */ {(15<<2)|3,{99,105,50}}, +/* 8582 */ {(15<<2)|3,{99,105,97}}, +/* 8583 */ {(15<<2)|3,{99,105,97}}, +/* 8584 */ {(15<<2)|3,{99,105,99}}, +/* 8585 */ {(15<<2)|3,{99,105,99}}, +/* 8586 */ {(15<<2)|3,{99,105,101}}, +/* 8587 */ {(15<<2)|3,{99,105,101}}, +/* 8588 */ {(15<<2)|3,{99,105,105}}, +/* 8589 */ {(15<<2)|3,{99,105,105}}, +/* 8590 */ {(15<<2)|3,{99,105,111}}, +/* 8591 */ {(15<<2)|3,{99,105,111}}, +/* 8592 */ {(15<<2)|3,{99,105,115}}, +/* 8593 */ {(15<<2)|3,{99,105,115}}, +/* 8594 */ {(15<<2)|3,{99,105,116}}, +/* 8595 */ {(15<<2)|3,{99,105,116}}, +/* 8596 */ {(16<<2)|3,{99,105,32}}, +/* 8597 */ {(16<<2)|3,{99,105,37}}, +/* 8598 */ {(16<<2)|3,{99,105,45}}, +/* 8599 */ {(16<<2)|3,{99,105,46}}, +/* 8600 */ {(16<<2)|3,{99,105,47}}, +/* 8601 */ {(16<<2)|3,{99,105,51}}, +/* 8602 */ {(16<<2)|3,{99,105,52}}, +/* 8603 */ {(16<<2)|3,{99,105,53}}, +/* 8604 */ {(16<<2)|3,{99,105,54}}, +/* 8605 */ {(16<<2)|3,{99,105,55}}, +/* 8606 */ {(16<<2)|3,{99,105,56}}, +/* 8607 */ {(16<<2)|3,{99,105,57}}, +/* 8608 */ {(16<<2)|3,{99,105,61}}, +/* 8609 */ {(16<<2)|3,{99,105,65}}, +/* 8610 */ {(16<<2)|3,{99,105,95}}, +/* 8611 */ {(16<<2)|3,{99,105,98}}, +/* 8612 */ {(16<<2)|3,{99,105,100}}, +/* 8613 */ {(16<<2)|3,{99,105,102}}, +/* 8614 */ {(16<<2)|3,{99,105,103}}, +/* 8615 */ {(16<<2)|3,{99,105,104}}, +/* 8616 */ {(16<<2)|3,{99,105,108}}, +/* 8617 */ {(16<<2)|3,{99,105,109}}, +/* 8618 */ {(16<<2)|3,{99,105,110}}, +/* 8619 */ {(16<<2)|3,{99,105,112}}, +/* 8620 */ {(16<<2)|3,{99,105,114}}, +/* 8621 */ {(16<<2)|3,{99,105,117}}, +/* 8622 */ {(10<<2)|2,{99,105,0}}, +/* 8623 */ {(10<<2)|2,{99,105,0}}, +/* 8624 */ {(10<<2)|2,{99,105,0}}, +/* 8625 */ {(10<<2)|2,{99,105,0}}, +/* 8626 */ {(10<<2)|2,{99,105,0}}, +/* 8627 */ {(10<<2)|2,{99,105,0}}, +/* 8628 */ {(10<<2)|2,{99,105,0}}, +/* 8629 */ {(10<<2)|2,{99,105,0}}, +/* 8630 */ {(10<<2)|2,{99,105,0}}, +/* 8631 */ {(10<<2)|2,{99,105,0}}, +/* 8632 */ {(10<<2)|2,{99,105,0}}, +/* 8633 */ {(10<<2)|2,{99,105,0}}, +/* 8634 */ {(10<<2)|2,{99,105,0}}, +/* 8635 */ {(10<<2)|2,{99,105,0}}, +/* 8636 */ {(10<<2)|2,{99,105,0}}, +/* 8637 */ {(10<<2)|2,{99,105,0}}, +/* 8638 */ {(10<<2)|2,{99,105,0}}, +/* 8639 */ {(10<<2)|2,{99,105,0}}, +/* 8640 */ {(15<<2)|3,{99,111,48}}, +/* 8641 */ {(15<<2)|3,{99,111,48}}, +/* 8642 */ {(15<<2)|3,{99,111,49}}, +/* 8643 */ {(15<<2)|3,{99,111,49}}, +/* 8644 */ {(15<<2)|3,{99,111,50}}, +/* 8645 */ {(15<<2)|3,{99,111,50}}, +/* 8646 */ {(15<<2)|3,{99,111,97}}, +/* 8647 */ {(15<<2)|3,{99,111,97}}, +/* 8648 */ {(15<<2)|3,{99,111,99}}, +/* 8649 */ {(15<<2)|3,{99,111,99}}, +/* 8650 */ {(15<<2)|3,{99,111,101}}, +/* 8651 */ {(15<<2)|3,{99,111,101}}, +/* 8652 */ {(15<<2)|3,{99,111,105}}, +/* 8653 */ {(15<<2)|3,{99,111,105}}, +/* 8654 */ {(15<<2)|3,{99,111,111}}, +/* 8655 */ {(15<<2)|3,{99,111,111}}, +/* 8656 */ {(15<<2)|3,{99,111,115}}, +/* 8657 */ {(15<<2)|3,{99,111,115}}, +/* 8658 */ {(15<<2)|3,{99,111,116}}, +/* 8659 */ {(15<<2)|3,{99,111,116}}, +/* 8660 */ {(16<<2)|3,{99,111,32}}, +/* 8661 */ {(16<<2)|3,{99,111,37}}, +/* 8662 */ {(16<<2)|3,{99,111,45}}, +/* 8663 */ {(16<<2)|3,{99,111,46}}, +/* 8664 */ {(16<<2)|3,{99,111,47}}, +/* 8665 */ {(16<<2)|3,{99,111,51}}, +/* 8666 */ {(16<<2)|3,{99,111,52}}, +/* 8667 */ {(16<<2)|3,{99,111,53}}, +/* 8668 */ {(16<<2)|3,{99,111,54}}, +/* 8669 */ {(16<<2)|3,{99,111,55}}, +/* 8670 */ {(16<<2)|3,{99,111,56}}, +/* 8671 */ {(16<<2)|3,{99,111,57}}, +/* 8672 */ {(16<<2)|3,{99,111,61}}, +/* 8673 */ {(16<<2)|3,{99,111,65}}, +/* 8674 */ {(16<<2)|3,{99,111,95}}, +/* 8675 */ {(16<<2)|3,{99,111,98}}, +/* 8676 */ {(16<<2)|3,{99,111,100}}, +/* 8677 */ {(16<<2)|3,{99,111,102}}, +/* 8678 */ {(16<<2)|3,{99,111,103}}, +/* 8679 */ {(16<<2)|3,{99,111,104}}, +/* 8680 */ {(16<<2)|3,{99,111,108}}, +/* 8681 */ {(16<<2)|3,{99,111,109}}, +/* 8682 */ {(16<<2)|3,{99,111,110}}, +/* 8683 */ {(16<<2)|3,{99,111,112}}, +/* 8684 */ {(16<<2)|3,{99,111,114}}, +/* 8685 */ {(16<<2)|3,{99,111,117}}, +/* 8686 */ {(10<<2)|2,{99,111,0}}, +/* 8687 */ {(10<<2)|2,{99,111,0}}, +/* 8688 */ {(10<<2)|2,{99,111,0}}, +/* 8689 */ {(10<<2)|2,{99,111,0}}, +/* 8690 */ {(10<<2)|2,{99,111,0}}, +/* 8691 */ {(10<<2)|2,{99,111,0}}, +/* 8692 */ {(10<<2)|2,{99,111,0}}, +/* 8693 */ {(10<<2)|2,{99,111,0}}, +/* 8694 */ {(10<<2)|2,{99,111,0}}, +/* 8695 */ {(10<<2)|2,{99,111,0}}, +/* 8696 */ {(10<<2)|2,{99,111,0}}, +/* 8697 */ {(10<<2)|2,{99,111,0}}, +/* 8698 */ {(10<<2)|2,{99,111,0}}, +/* 8699 */ {(10<<2)|2,{99,111,0}}, +/* 8700 */ {(10<<2)|2,{99,111,0}}, +/* 8701 */ {(10<<2)|2,{99,111,0}}, +/* 8702 */ {(10<<2)|2,{99,111,0}}, +/* 8703 */ {(10<<2)|2,{99,111,0}}, +/* 8704 */ {(15<<2)|3,{99,115,48}}, +/* 8705 */ {(15<<2)|3,{99,115,48}}, +/* 8706 */ {(15<<2)|3,{99,115,49}}, +/* 8707 */ {(15<<2)|3,{99,115,49}}, +/* 8708 */ {(15<<2)|3,{99,115,50}}, +/* 8709 */ {(15<<2)|3,{99,115,50}}, +/* 8710 */ {(15<<2)|3,{99,115,97}}, +/* 8711 */ {(15<<2)|3,{99,115,97}}, +/* 8712 */ {(15<<2)|3,{99,115,99}}, +/* 8713 */ {(15<<2)|3,{99,115,99}}, +/* 8714 */ {(15<<2)|3,{99,115,101}}, +/* 8715 */ {(15<<2)|3,{99,115,101}}, +/* 8716 */ {(15<<2)|3,{99,115,105}}, +/* 8717 */ {(15<<2)|3,{99,115,105}}, +/* 8718 */ {(15<<2)|3,{99,115,111}}, +/* 8719 */ {(15<<2)|3,{99,115,111}}, +/* 8720 */ {(15<<2)|3,{99,115,115}}, +/* 8721 */ {(15<<2)|3,{99,115,115}}, +/* 8722 */ {(15<<2)|3,{99,115,116}}, +/* 8723 */ {(15<<2)|3,{99,115,116}}, +/* 8724 */ {(16<<2)|3,{99,115,32}}, +/* 8725 */ {(16<<2)|3,{99,115,37}}, +/* 8726 */ {(16<<2)|3,{99,115,45}}, +/* 8727 */ {(16<<2)|3,{99,115,46}}, +/* 8728 */ {(16<<2)|3,{99,115,47}}, +/* 8729 */ {(16<<2)|3,{99,115,51}}, +/* 8730 */ {(16<<2)|3,{99,115,52}}, +/* 8731 */ {(16<<2)|3,{99,115,53}}, +/* 8732 */ {(16<<2)|3,{99,115,54}}, +/* 8733 */ {(16<<2)|3,{99,115,55}}, +/* 8734 */ {(16<<2)|3,{99,115,56}}, +/* 8735 */ {(16<<2)|3,{99,115,57}}, +/* 8736 */ {(16<<2)|3,{99,115,61}}, +/* 8737 */ {(16<<2)|3,{99,115,65}}, +/* 8738 */ {(16<<2)|3,{99,115,95}}, +/* 8739 */ {(16<<2)|3,{99,115,98}}, +/* 8740 */ {(16<<2)|3,{99,115,100}}, +/* 8741 */ {(16<<2)|3,{99,115,102}}, +/* 8742 */ {(16<<2)|3,{99,115,103}}, +/* 8743 */ {(16<<2)|3,{99,115,104}}, +/* 8744 */ {(16<<2)|3,{99,115,108}}, +/* 8745 */ {(16<<2)|3,{99,115,109}}, +/* 8746 */ {(16<<2)|3,{99,115,110}}, +/* 8747 */ {(16<<2)|3,{99,115,112}}, +/* 8748 */ {(16<<2)|3,{99,115,114}}, +/* 8749 */ {(16<<2)|3,{99,115,117}}, +/* 8750 */ {(10<<2)|2,{99,115,0}}, +/* 8751 */ {(10<<2)|2,{99,115,0}}, +/* 8752 */ {(10<<2)|2,{99,115,0}}, +/* 8753 */ {(10<<2)|2,{99,115,0}}, +/* 8754 */ {(10<<2)|2,{99,115,0}}, +/* 8755 */ {(10<<2)|2,{99,115,0}}, +/* 8756 */ {(10<<2)|2,{99,115,0}}, +/* 8757 */ {(10<<2)|2,{99,115,0}}, +/* 8758 */ {(10<<2)|2,{99,115,0}}, +/* 8759 */ {(10<<2)|2,{99,115,0}}, +/* 8760 */ {(10<<2)|2,{99,115,0}}, +/* 8761 */ {(10<<2)|2,{99,115,0}}, +/* 8762 */ {(10<<2)|2,{99,115,0}}, +/* 8763 */ {(10<<2)|2,{99,115,0}}, +/* 8764 */ {(10<<2)|2,{99,115,0}}, +/* 8765 */ {(10<<2)|2,{99,115,0}}, +/* 8766 */ {(10<<2)|2,{99,115,0}}, +/* 8767 */ {(10<<2)|2,{99,115,0}}, +/* 8768 */ {(15<<2)|3,{99,116,48}}, +/* 8769 */ {(15<<2)|3,{99,116,48}}, +/* 8770 */ {(15<<2)|3,{99,116,49}}, +/* 8771 */ {(15<<2)|3,{99,116,49}}, +/* 8772 */ {(15<<2)|3,{99,116,50}}, +/* 8773 */ {(15<<2)|3,{99,116,50}}, +/* 8774 */ {(15<<2)|3,{99,116,97}}, +/* 8775 */ {(15<<2)|3,{99,116,97}}, +/* 8776 */ {(15<<2)|3,{99,116,99}}, +/* 8777 */ {(15<<2)|3,{99,116,99}}, +/* 8778 */ {(15<<2)|3,{99,116,101}}, +/* 8779 */ {(15<<2)|3,{99,116,101}}, +/* 8780 */ {(15<<2)|3,{99,116,105}}, +/* 8781 */ {(15<<2)|3,{99,116,105}}, +/* 8782 */ {(15<<2)|3,{99,116,111}}, +/* 8783 */ {(15<<2)|3,{99,116,111}}, +/* 8784 */ {(15<<2)|3,{99,116,115}}, +/* 8785 */ {(15<<2)|3,{99,116,115}}, +/* 8786 */ {(15<<2)|3,{99,116,116}}, +/* 8787 */ {(15<<2)|3,{99,116,116}}, +/* 8788 */ {(16<<2)|3,{99,116,32}}, +/* 8789 */ {(16<<2)|3,{99,116,37}}, +/* 8790 */ {(16<<2)|3,{99,116,45}}, +/* 8791 */ {(16<<2)|3,{99,116,46}}, +/* 8792 */ {(16<<2)|3,{99,116,47}}, +/* 8793 */ {(16<<2)|3,{99,116,51}}, +/* 8794 */ {(16<<2)|3,{99,116,52}}, +/* 8795 */ {(16<<2)|3,{99,116,53}}, +/* 8796 */ {(16<<2)|3,{99,116,54}}, +/* 8797 */ {(16<<2)|3,{99,116,55}}, +/* 8798 */ {(16<<2)|3,{99,116,56}}, +/* 8799 */ {(16<<2)|3,{99,116,57}}, +/* 8800 */ {(16<<2)|3,{99,116,61}}, +/* 8801 */ {(16<<2)|3,{99,116,65}}, +/* 8802 */ {(16<<2)|3,{99,116,95}}, +/* 8803 */ {(16<<2)|3,{99,116,98}}, +/* 8804 */ {(16<<2)|3,{99,116,100}}, +/* 8805 */ {(16<<2)|3,{99,116,102}}, +/* 8806 */ {(16<<2)|3,{99,116,103}}, +/* 8807 */ {(16<<2)|3,{99,116,104}}, +/* 8808 */ {(16<<2)|3,{99,116,108}}, +/* 8809 */ {(16<<2)|3,{99,116,109}}, +/* 8810 */ {(16<<2)|3,{99,116,110}}, +/* 8811 */ {(16<<2)|3,{99,116,112}}, +/* 8812 */ {(16<<2)|3,{99,116,114}}, +/* 8813 */ {(16<<2)|3,{99,116,117}}, +/* 8814 */ {(10<<2)|2,{99,116,0}}, +/* 8815 */ {(10<<2)|2,{99,116,0}}, +/* 8816 */ {(10<<2)|2,{99,116,0}}, +/* 8817 */ {(10<<2)|2,{99,116,0}}, +/* 8818 */ {(10<<2)|2,{99,116,0}}, +/* 8819 */ {(10<<2)|2,{99,116,0}}, +/* 8820 */ {(10<<2)|2,{99,116,0}}, +/* 8821 */ {(10<<2)|2,{99,116,0}}, +/* 8822 */ {(10<<2)|2,{99,116,0}}, +/* 8823 */ {(10<<2)|2,{99,116,0}}, +/* 8824 */ {(10<<2)|2,{99,116,0}}, +/* 8825 */ {(10<<2)|2,{99,116,0}}, +/* 8826 */ {(10<<2)|2,{99,116,0}}, +/* 8827 */ {(10<<2)|2,{99,116,0}}, +/* 8828 */ {(10<<2)|2,{99,116,0}}, +/* 8829 */ {(10<<2)|2,{99,116,0}}, +/* 8830 */ {(10<<2)|2,{99,116,0}}, +/* 8831 */ {(10<<2)|2,{99,116,0}}, +/* 8832 */ {(16<<2)|3,{99,32,48}}, +/* 8833 */ {(16<<2)|3,{99,32,49}}, +/* 8834 */ {(16<<2)|3,{99,32,50}}, +/* 8835 */ {(16<<2)|3,{99,32,97}}, +/* 8836 */ {(16<<2)|3,{99,32,99}}, +/* 8837 */ {(16<<2)|3,{99,32,101}}, +/* 8838 */ {(16<<2)|3,{99,32,105}}, +/* 8839 */ {(16<<2)|3,{99,32,111}}, +/* 8840 */ {(16<<2)|3,{99,32,115}}, +/* 8841 */ {(16<<2)|3,{99,32,116}}, +/* 8842 */ {(11<<2)|2,{99,32,0}}, +/* 8843 */ {(11<<2)|2,{99,32,0}}, +/* 8844 */ {(11<<2)|2,{99,32,0}}, +/* 8845 */ {(11<<2)|2,{99,32,0}}, +/* 8846 */ {(11<<2)|2,{99,32,0}}, +/* 8847 */ {(11<<2)|2,{99,32,0}}, +/* 8848 */ {(11<<2)|2,{99,32,0}}, +/* 8849 */ {(11<<2)|2,{99,32,0}}, +/* 8850 */ {(11<<2)|2,{99,32,0}}, +/* 8851 */ {(11<<2)|2,{99,32,0}}, +/* 8852 */ {(11<<2)|2,{99,32,0}}, +/* 8853 */ {(11<<2)|2,{99,32,0}}, +/* 8854 */ {(11<<2)|2,{99,32,0}}, +/* 8855 */ {(11<<2)|2,{99,32,0}}, +/* 8856 */ {(11<<2)|2,{99,32,0}}, +/* 8857 */ {(11<<2)|2,{99,32,0}}, +/* 8858 */ {(11<<2)|2,{99,32,0}}, +/* 8859 */ {(11<<2)|2,{99,32,0}}, +/* 8860 */ {(11<<2)|2,{99,32,0}}, +/* 8861 */ {(11<<2)|2,{99,32,0}}, +/* 8862 */ {(11<<2)|2,{99,32,0}}, +/* 8863 */ {(11<<2)|2,{99,32,0}}, +/* 8864 */ {(16<<2)|3,{99,37,48}}, +/* 8865 */ {(16<<2)|3,{99,37,49}}, +/* 8866 */ {(16<<2)|3,{99,37,50}}, +/* 8867 */ {(16<<2)|3,{99,37,97}}, +/* 8868 */ {(16<<2)|3,{99,37,99}}, +/* 8869 */ {(16<<2)|3,{99,37,101}}, +/* 8870 */ {(16<<2)|3,{99,37,105}}, +/* 8871 */ {(16<<2)|3,{99,37,111}}, +/* 8872 */ {(16<<2)|3,{99,37,115}}, +/* 8873 */ {(16<<2)|3,{99,37,116}}, +/* 8874 */ {(11<<2)|2,{99,37,0}}, +/* 8875 */ {(11<<2)|2,{99,37,0}}, +/* 8876 */ {(11<<2)|2,{99,37,0}}, +/* 8877 */ {(11<<2)|2,{99,37,0}}, +/* 8878 */ {(11<<2)|2,{99,37,0}}, +/* 8879 */ {(11<<2)|2,{99,37,0}}, +/* 8880 */ {(11<<2)|2,{99,37,0}}, +/* 8881 */ {(11<<2)|2,{99,37,0}}, +/* 8882 */ {(11<<2)|2,{99,37,0}}, +/* 8883 */ {(11<<2)|2,{99,37,0}}, +/* 8884 */ {(11<<2)|2,{99,37,0}}, +/* 8885 */ {(11<<2)|2,{99,37,0}}, +/* 8886 */ {(11<<2)|2,{99,37,0}}, +/* 8887 */ {(11<<2)|2,{99,37,0}}, +/* 8888 */ {(11<<2)|2,{99,37,0}}, +/* 8889 */ {(11<<2)|2,{99,37,0}}, +/* 8890 */ {(11<<2)|2,{99,37,0}}, +/* 8891 */ {(11<<2)|2,{99,37,0}}, +/* 8892 */ {(11<<2)|2,{99,37,0}}, +/* 8893 */ {(11<<2)|2,{99,37,0}}, +/* 8894 */ {(11<<2)|2,{99,37,0}}, +/* 8895 */ {(11<<2)|2,{99,37,0}}, +/* 8896 */ {(16<<2)|3,{99,45,48}}, +/* 8897 */ {(16<<2)|3,{99,45,49}}, +/* 8898 */ {(16<<2)|3,{99,45,50}}, +/* 8899 */ {(16<<2)|3,{99,45,97}}, +/* 8900 */ {(16<<2)|3,{99,45,99}}, +/* 8901 */ {(16<<2)|3,{99,45,101}}, +/* 8902 */ {(16<<2)|3,{99,45,105}}, +/* 8903 */ {(16<<2)|3,{99,45,111}}, +/* 8904 */ {(16<<2)|3,{99,45,115}}, +/* 8905 */ {(16<<2)|3,{99,45,116}}, +/* 8906 */ {(11<<2)|2,{99,45,0}}, +/* 8907 */ {(11<<2)|2,{99,45,0}}, +/* 8908 */ {(11<<2)|2,{99,45,0}}, +/* 8909 */ {(11<<2)|2,{99,45,0}}, +/* 8910 */ {(11<<2)|2,{99,45,0}}, +/* 8911 */ {(11<<2)|2,{99,45,0}}, +/* 8912 */ {(11<<2)|2,{99,45,0}}, +/* 8913 */ {(11<<2)|2,{99,45,0}}, +/* 8914 */ {(11<<2)|2,{99,45,0}}, +/* 8915 */ {(11<<2)|2,{99,45,0}}, +/* 8916 */ {(11<<2)|2,{99,45,0}}, +/* 8917 */ {(11<<2)|2,{99,45,0}}, +/* 8918 */ {(11<<2)|2,{99,45,0}}, +/* 8919 */ {(11<<2)|2,{99,45,0}}, +/* 8920 */ {(11<<2)|2,{99,45,0}}, +/* 8921 */ {(11<<2)|2,{99,45,0}}, +/* 8922 */ {(11<<2)|2,{99,45,0}}, +/* 8923 */ {(11<<2)|2,{99,45,0}}, +/* 8924 */ {(11<<2)|2,{99,45,0}}, +/* 8925 */ {(11<<2)|2,{99,45,0}}, +/* 8926 */ {(11<<2)|2,{99,45,0}}, +/* 8927 */ {(11<<2)|2,{99,45,0}}, +/* 8928 */ {(16<<2)|3,{99,46,48}}, +/* 8929 */ {(16<<2)|3,{99,46,49}}, +/* 8930 */ {(16<<2)|3,{99,46,50}}, +/* 8931 */ {(16<<2)|3,{99,46,97}}, +/* 8932 */ {(16<<2)|3,{99,46,99}}, +/* 8933 */ {(16<<2)|3,{99,46,101}}, +/* 8934 */ {(16<<2)|3,{99,46,105}}, +/* 8935 */ {(16<<2)|3,{99,46,111}}, +/* 8936 */ {(16<<2)|3,{99,46,115}}, +/* 8937 */ {(16<<2)|3,{99,46,116}}, +/* 8938 */ {(11<<2)|2,{99,46,0}}, +/* 8939 */ {(11<<2)|2,{99,46,0}}, +/* 8940 */ {(11<<2)|2,{99,46,0}}, +/* 8941 */ {(11<<2)|2,{99,46,0}}, +/* 8942 */ {(11<<2)|2,{99,46,0}}, +/* 8943 */ {(11<<2)|2,{99,46,0}}, +/* 8944 */ {(11<<2)|2,{99,46,0}}, +/* 8945 */ {(11<<2)|2,{99,46,0}}, +/* 8946 */ {(11<<2)|2,{99,46,0}}, +/* 8947 */ {(11<<2)|2,{99,46,0}}, +/* 8948 */ {(11<<2)|2,{99,46,0}}, +/* 8949 */ {(11<<2)|2,{99,46,0}}, +/* 8950 */ {(11<<2)|2,{99,46,0}}, +/* 8951 */ {(11<<2)|2,{99,46,0}}, +/* 8952 */ {(11<<2)|2,{99,46,0}}, +/* 8953 */ {(11<<2)|2,{99,46,0}}, +/* 8954 */ {(11<<2)|2,{99,46,0}}, +/* 8955 */ {(11<<2)|2,{99,46,0}}, +/* 8956 */ {(11<<2)|2,{99,46,0}}, +/* 8957 */ {(11<<2)|2,{99,46,0}}, +/* 8958 */ {(11<<2)|2,{99,46,0}}, +/* 8959 */ {(11<<2)|2,{99,46,0}}, +/* 8960 */ {(16<<2)|3,{99,47,48}}, +/* 8961 */ {(16<<2)|3,{99,47,49}}, +/* 8962 */ {(16<<2)|3,{99,47,50}}, +/* 8963 */ {(16<<2)|3,{99,47,97}}, +/* 8964 */ {(16<<2)|3,{99,47,99}}, +/* 8965 */ {(16<<2)|3,{99,47,101}}, +/* 8966 */ {(16<<2)|3,{99,47,105}}, +/* 8967 */ {(16<<2)|3,{99,47,111}}, +/* 8968 */ {(16<<2)|3,{99,47,115}}, +/* 8969 */ {(16<<2)|3,{99,47,116}}, +/* 8970 */ {(11<<2)|2,{99,47,0}}, +/* 8971 */ {(11<<2)|2,{99,47,0}}, +/* 8972 */ {(11<<2)|2,{99,47,0}}, +/* 8973 */ {(11<<2)|2,{99,47,0}}, +/* 8974 */ {(11<<2)|2,{99,47,0}}, +/* 8975 */ {(11<<2)|2,{99,47,0}}, +/* 8976 */ {(11<<2)|2,{99,47,0}}, +/* 8977 */ {(11<<2)|2,{99,47,0}}, +/* 8978 */ {(11<<2)|2,{99,47,0}}, +/* 8979 */ {(11<<2)|2,{99,47,0}}, +/* 8980 */ {(11<<2)|2,{99,47,0}}, +/* 8981 */ {(11<<2)|2,{99,47,0}}, +/* 8982 */ {(11<<2)|2,{99,47,0}}, +/* 8983 */ {(11<<2)|2,{99,47,0}}, +/* 8984 */ {(11<<2)|2,{99,47,0}}, +/* 8985 */ {(11<<2)|2,{99,47,0}}, +/* 8986 */ {(11<<2)|2,{99,47,0}}, +/* 8987 */ {(11<<2)|2,{99,47,0}}, +/* 8988 */ {(11<<2)|2,{99,47,0}}, +/* 8989 */ {(11<<2)|2,{99,47,0}}, +/* 8990 */ {(11<<2)|2,{99,47,0}}, +/* 8991 */ {(11<<2)|2,{99,47,0}}, +/* 8992 */ {(16<<2)|3,{99,51,48}}, +/* 8993 */ {(16<<2)|3,{99,51,49}}, +/* 8994 */ {(16<<2)|3,{99,51,50}}, +/* 8995 */ {(16<<2)|3,{99,51,97}}, +/* 8996 */ {(16<<2)|3,{99,51,99}}, +/* 8997 */ {(16<<2)|3,{99,51,101}}, +/* 8998 */ {(16<<2)|3,{99,51,105}}, +/* 8999 */ {(16<<2)|3,{99,51,111}}, +/* 9000 */ {(16<<2)|3,{99,51,115}}, +/* 9001 */ {(16<<2)|3,{99,51,116}}, +/* 9002 */ {(11<<2)|2,{99,51,0}}, +/* 9003 */ {(11<<2)|2,{99,51,0}}, +/* 9004 */ {(11<<2)|2,{99,51,0}}, +/* 9005 */ {(11<<2)|2,{99,51,0}}, +/* 9006 */ {(11<<2)|2,{99,51,0}}, +/* 9007 */ {(11<<2)|2,{99,51,0}}, +/* 9008 */ {(11<<2)|2,{99,51,0}}, +/* 9009 */ {(11<<2)|2,{99,51,0}}, +/* 9010 */ {(11<<2)|2,{99,51,0}}, +/* 9011 */ {(11<<2)|2,{99,51,0}}, +/* 9012 */ {(11<<2)|2,{99,51,0}}, +/* 9013 */ {(11<<2)|2,{99,51,0}}, +/* 9014 */ {(11<<2)|2,{99,51,0}}, +/* 9015 */ {(11<<2)|2,{99,51,0}}, +/* 9016 */ {(11<<2)|2,{99,51,0}}, +/* 9017 */ {(11<<2)|2,{99,51,0}}, +/* 9018 */ {(11<<2)|2,{99,51,0}}, +/* 9019 */ {(11<<2)|2,{99,51,0}}, +/* 9020 */ {(11<<2)|2,{99,51,0}}, +/* 9021 */ {(11<<2)|2,{99,51,0}}, +/* 9022 */ {(11<<2)|2,{99,51,0}}, +/* 9023 */ {(11<<2)|2,{99,51,0}}, +/* 9024 */ {(16<<2)|3,{99,52,48}}, +/* 9025 */ {(16<<2)|3,{99,52,49}}, +/* 9026 */ {(16<<2)|3,{99,52,50}}, +/* 9027 */ {(16<<2)|3,{99,52,97}}, +/* 9028 */ {(16<<2)|3,{99,52,99}}, +/* 9029 */ {(16<<2)|3,{99,52,101}}, +/* 9030 */ {(16<<2)|3,{99,52,105}}, +/* 9031 */ {(16<<2)|3,{99,52,111}}, +/* 9032 */ {(16<<2)|3,{99,52,115}}, +/* 9033 */ {(16<<2)|3,{99,52,116}}, +/* 9034 */ {(11<<2)|2,{99,52,0}}, +/* 9035 */ {(11<<2)|2,{99,52,0}}, +/* 9036 */ {(11<<2)|2,{99,52,0}}, +/* 9037 */ {(11<<2)|2,{99,52,0}}, +/* 9038 */ {(11<<2)|2,{99,52,0}}, +/* 9039 */ {(11<<2)|2,{99,52,0}}, +/* 9040 */ {(11<<2)|2,{99,52,0}}, +/* 9041 */ {(11<<2)|2,{99,52,0}}, +/* 9042 */ {(11<<2)|2,{99,52,0}}, +/* 9043 */ {(11<<2)|2,{99,52,0}}, +/* 9044 */ {(11<<2)|2,{99,52,0}}, +/* 9045 */ {(11<<2)|2,{99,52,0}}, +/* 9046 */ {(11<<2)|2,{99,52,0}}, +/* 9047 */ {(11<<2)|2,{99,52,0}}, +/* 9048 */ {(11<<2)|2,{99,52,0}}, +/* 9049 */ {(11<<2)|2,{99,52,0}}, +/* 9050 */ {(11<<2)|2,{99,52,0}}, +/* 9051 */ {(11<<2)|2,{99,52,0}}, +/* 9052 */ {(11<<2)|2,{99,52,0}}, +/* 9053 */ {(11<<2)|2,{99,52,0}}, +/* 9054 */ {(11<<2)|2,{99,52,0}}, +/* 9055 */ {(11<<2)|2,{99,52,0}}, +/* 9056 */ {(16<<2)|3,{99,53,48}}, +/* 9057 */ {(16<<2)|3,{99,53,49}}, +/* 9058 */ {(16<<2)|3,{99,53,50}}, +/* 9059 */ {(16<<2)|3,{99,53,97}}, +/* 9060 */ {(16<<2)|3,{99,53,99}}, +/* 9061 */ {(16<<2)|3,{99,53,101}}, +/* 9062 */ {(16<<2)|3,{99,53,105}}, +/* 9063 */ {(16<<2)|3,{99,53,111}}, +/* 9064 */ {(16<<2)|3,{99,53,115}}, +/* 9065 */ {(16<<2)|3,{99,53,116}}, +/* 9066 */ {(11<<2)|2,{99,53,0}}, +/* 9067 */ {(11<<2)|2,{99,53,0}}, +/* 9068 */ {(11<<2)|2,{99,53,0}}, +/* 9069 */ {(11<<2)|2,{99,53,0}}, +/* 9070 */ {(11<<2)|2,{99,53,0}}, +/* 9071 */ {(11<<2)|2,{99,53,0}}, +/* 9072 */ {(11<<2)|2,{99,53,0}}, +/* 9073 */ {(11<<2)|2,{99,53,0}}, +/* 9074 */ {(11<<2)|2,{99,53,0}}, +/* 9075 */ {(11<<2)|2,{99,53,0}}, +/* 9076 */ {(11<<2)|2,{99,53,0}}, +/* 9077 */ {(11<<2)|2,{99,53,0}}, +/* 9078 */ {(11<<2)|2,{99,53,0}}, +/* 9079 */ {(11<<2)|2,{99,53,0}}, +/* 9080 */ {(11<<2)|2,{99,53,0}}, +/* 9081 */ {(11<<2)|2,{99,53,0}}, +/* 9082 */ {(11<<2)|2,{99,53,0}}, +/* 9083 */ {(11<<2)|2,{99,53,0}}, +/* 9084 */ {(11<<2)|2,{99,53,0}}, +/* 9085 */ {(11<<2)|2,{99,53,0}}, +/* 9086 */ {(11<<2)|2,{99,53,0}}, +/* 9087 */ {(11<<2)|2,{99,53,0}}, +/* 9088 */ {(16<<2)|3,{99,54,48}}, +/* 9089 */ {(16<<2)|3,{99,54,49}}, +/* 9090 */ {(16<<2)|3,{99,54,50}}, +/* 9091 */ {(16<<2)|3,{99,54,97}}, +/* 9092 */ {(16<<2)|3,{99,54,99}}, +/* 9093 */ {(16<<2)|3,{99,54,101}}, +/* 9094 */ {(16<<2)|3,{99,54,105}}, +/* 9095 */ {(16<<2)|3,{99,54,111}}, +/* 9096 */ {(16<<2)|3,{99,54,115}}, +/* 9097 */ {(16<<2)|3,{99,54,116}}, +/* 9098 */ {(11<<2)|2,{99,54,0}}, +/* 9099 */ {(11<<2)|2,{99,54,0}}, +/* 9100 */ {(11<<2)|2,{99,54,0}}, +/* 9101 */ {(11<<2)|2,{99,54,0}}, +/* 9102 */ {(11<<2)|2,{99,54,0}}, +/* 9103 */ {(11<<2)|2,{99,54,0}}, +/* 9104 */ {(11<<2)|2,{99,54,0}}, +/* 9105 */ {(11<<2)|2,{99,54,0}}, +/* 9106 */ {(11<<2)|2,{99,54,0}}, +/* 9107 */ {(11<<2)|2,{99,54,0}}, +/* 9108 */ {(11<<2)|2,{99,54,0}}, +/* 9109 */ {(11<<2)|2,{99,54,0}}, +/* 9110 */ {(11<<2)|2,{99,54,0}}, +/* 9111 */ {(11<<2)|2,{99,54,0}}, +/* 9112 */ {(11<<2)|2,{99,54,0}}, +/* 9113 */ {(11<<2)|2,{99,54,0}}, +/* 9114 */ {(11<<2)|2,{99,54,0}}, +/* 9115 */ {(11<<2)|2,{99,54,0}}, +/* 9116 */ {(11<<2)|2,{99,54,0}}, +/* 9117 */ {(11<<2)|2,{99,54,0}}, +/* 9118 */ {(11<<2)|2,{99,54,0}}, +/* 9119 */ {(11<<2)|2,{99,54,0}}, +/* 9120 */ {(16<<2)|3,{99,55,48}}, +/* 9121 */ {(16<<2)|3,{99,55,49}}, +/* 9122 */ {(16<<2)|3,{99,55,50}}, +/* 9123 */ {(16<<2)|3,{99,55,97}}, +/* 9124 */ {(16<<2)|3,{99,55,99}}, +/* 9125 */ {(16<<2)|3,{99,55,101}}, +/* 9126 */ {(16<<2)|3,{99,55,105}}, +/* 9127 */ {(16<<2)|3,{99,55,111}}, +/* 9128 */ {(16<<2)|3,{99,55,115}}, +/* 9129 */ {(16<<2)|3,{99,55,116}}, +/* 9130 */ {(11<<2)|2,{99,55,0}}, +/* 9131 */ {(11<<2)|2,{99,55,0}}, +/* 9132 */ {(11<<2)|2,{99,55,0}}, +/* 9133 */ {(11<<2)|2,{99,55,0}}, +/* 9134 */ {(11<<2)|2,{99,55,0}}, +/* 9135 */ {(11<<2)|2,{99,55,0}}, +/* 9136 */ {(11<<2)|2,{99,55,0}}, +/* 9137 */ {(11<<2)|2,{99,55,0}}, +/* 9138 */ {(11<<2)|2,{99,55,0}}, +/* 9139 */ {(11<<2)|2,{99,55,0}}, +/* 9140 */ {(11<<2)|2,{99,55,0}}, +/* 9141 */ {(11<<2)|2,{99,55,0}}, +/* 9142 */ {(11<<2)|2,{99,55,0}}, +/* 9143 */ {(11<<2)|2,{99,55,0}}, +/* 9144 */ {(11<<2)|2,{99,55,0}}, +/* 9145 */ {(11<<2)|2,{99,55,0}}, +/* 9146 */ {(11<<2)|2,{99,55,0}}, +/* 9147 */ {(11<<2)|2,{99,55,0}}, +/* 9148 */ {(11<<2)|2,{99,55,0}}, +/* 9149 */ {(11<<2)|2,{99,55,0}}, +/* 9150 */ {(11<<2)|2,{99,55,0}}, +/* 9151 */ {(11<<2)|2,{99,55,0}}, +/* 9152 */ {(16<<2)|3,{99,56,48}}, +/* 9153 */ {(16<<2)|3,{99,56,49}}, +/* 9154 */ {(16<<2)|3,{99,56,50}}, +/* 9155 */ {(16<<2)|3,{99,56,97}}, +/* 9156 */ {(16<<2)|3,{99,56,99}}, +/* 9157 */ {(16<<2)|3,{99,56,101}}, +/* 9158 */ {(16<<2)|3,{99,56,105}}, +/* 9159 */ {(16<<2)|3,{99,56,111}}, +/* 9160 */ {(16<<2)|3,{99,56,115}}, +/* 9161 */ {(16<<2)|3,{99,56,116}}, +/* 9162 */ {(11<<2)|2,{99,56,0}}, +/* 9163 */ {(11<<2)|2,{99,56,0}}, +/* 9164 */ {(11<<2)|2,{99,56,0}}, +/* 9165 */ {(11<<2)|2,{99,56,0}}, +/* 9166 */ {(11<<2)|2,{99,56,0}}, +/* 9167 */ {(11<<2)|2,{99,56,0}}, +/* 9168 */ {(11<<2)|2,{99,56,0}}, +/* 9169 */ {(11<<2)|2,{99,56,0}}, +/* 9170 */ {(11<<2)|2,{99,56,0}}, +/* 9171 */ {(11<<2)|2,{99,56,0}}, +/* 9172 */ {(11<<2)|2,{99,56,0}}, +/* 9173 */ {(11<<2)|2,{99,56,0}}, +/* 9174 */ {(11<<2)|2,{99,56,0}}, +/* 9175 */ {(11<<2)|2,{99,56,0}}, +/* 9176 */ {(11<<2)|2,{99,56,0}}, +/* 9177 */ {(11<<2)|2,{99,56,0}}, +/* 9178 */ {(11<<2)|2,{99,56,0}}, +/* 9179 */ {(11<<2)|2,{99,56,0}}, +/* 9180 */ {(11<<2)|2,{99,56,0}}, +/* 9181 */ {(11<<2)|2,{99,56,0}}, +/* 9182 */ {(11<<2)|2,{99,56,0}}, +/* 9183 */ {(11<<2)|2,{99,56,0}}, +/* 9184 */ {(16<<2)|3,{99,57,48}}, +/* 9185 */ {(16<<2)|3,{99,57,49}}, +/* 9186 */ {(16<<2)|3,{99,57,50}}, +/* 9187 */ {(16<<2)|3,{99,57,97}}, +/* 9188 */ {(16<<2)|3,{99,57,99}}, +/* 9189 */ {(16<<2)|3,{99,57,101}}, +/* 9190 */ {(16<<2)|3,{99,57,105}}, +/* 9191 */ {(16<<2)|3,{99,57,111}}, +/* 9192 */ {(16<<2)|3,{99,57,115}}, +/* 9193 */ {(16<<2)|3,{99,57,116}}, +/* 9194 */ {(11<<2)|2,{99,57,0}}, +/* 9195 */ {(11<<2)|2,{99,57,0}}, +/* 9196 */ {(11<<2)|2,{99,57,0}}, +/* 9197 */ {(11<<2)|2,{99,57,0}}, +/* 9198 */ {(11<<2)|2,{99,57,0}}, +/* 9199 */ {(11<<2)|2,{99,57,0}}, +/* 9200 */ {(11<<2)|2,{99,57,0}}, +/* 9201 */ {(11<<2)|2,{99,57,0}}, +/* 9202 */ {(11<<2)|2,{99,57,0}}, +/* 9203 */ {(11<<2)|2,{99,57,0}}, +/* 9204 */ {(11<<2)|2,{99,57,0}}, +/* 9205 */ {(11<<2)|2,{99,57,0}}, +/* 9206 */ {(11<<2)|2,{99,57,0}}, +/* 9207 */ {(11<<2)|2,{99,57,0}}, +/* 9208 */ {(11<<2)|2,{99,57,0}}, +/* 9209 */ {(11<<2)|2,{99,57,0}}, +/* 9210 */ {(11<<2)|2,{99,57,0}}, +/* 9211 */ {(11<<2)|2,{99,57,0}}, +/* 9212 */ {(11<<2)|2,{99,57,0}}, +/* 9213 */ {(11<<2)|2,{99,57,0}}, +/* 9214 */ {(11<<2)|2,{99,57,0}}, +/* 9215 */ {(11<<2)|2,{99,57,0}}, +/* 9216 */ {(16<<2)|3,{99,61,48}}, +/* 9217 */ {(16<<2)|3,{99,61,49}}, +/* 9218 */ {(16<<2)|3,{99,61,50}}, +/* 9219 */ {(16<<2)|3,{99,61,97}}, +/* 9220 */ {(16<<2)|3,{99,61,99}}, +/* 9221 */ {(16<<2)|3,{99,61,101}}, +/* 9222 */ {(16<<2)|3,{99,61,105}}, +/* 9223 */ {(16<<2)|3,{99,61,111}}, +/* 9224 */ {(16<<2)|3,{99,61,115}}, +/* 9225 */ {(16<<2)|3,{99,61,116}}, +/* 9226 */ {(11<<2)|2,{99,61,0}}, +/* 9227 */ {(11<<2)|2,{99,61,0}}, +/* 9228 */ {(11<<2)|2,{99,61,0}}, +/* 9229 */ {(11<<2)|2,{99,61,0}}, +/* 9230 */ {(11<<2)|2,{99,61,0}}, +/* 9231 */ {(11<<2)|2,{99,61,0}}, +/* 9232 */ {(11<<2)|2,{99,61,0}}, +/* 9233 */ {(11<<2)|2,{99,61,0}}, +/* 9234 */ {(11<<2)|2,{99,61,0}}, +/* 9235 */ {(11<<2)|2,{99,61,0}}, +/* 9236 */ {(11<<2)|2,{99,61,0}}, +/* 9237 */ {(11<<2)|2,{99,61,0}}, +/* 9238 */ {(11<<2)|2,{99,61,0}}, +/* 9239 */ {(11<<2)|2,{99,61,0}}, +/* 9240 */ {(11<<2)|2,{99,61,0}}, +/* 9241 */ {(11<<2)|2,{99,61,0}}, +/* 9242 */ {(11<<2)|2,{99,61,0}}, +/* 9243 */ {(11<<2)|2,{99,61,0}}, +/* 9244 */ {(11<<2)|2,{99,61,0}}, +/* 9245 */ {(11<<2)|2,{99,61,0}}, +/* 9246 */ {(11<<2)|2,{99,61,0}}, +/* 9247 */ {(11<<2)|2,{99,61,0}}, +/* 9248 */ {(16<<2)|3,{99,65,48}}, +/* 9249 */ {(16<<2)|3,{99,65,49}}, +/* 9250 */ {(16<<2)|3,{99,65,50}}, +/* 9251 */ {(16<<2)|3,{99,65,97}}, +/* 9252 */ {(16<<2)|3,{99,65,99}}, +/* 9253 */ {(16<<2)|3,{99,65,101}}, +/* 9254 */ {(16<<2)|3,{99,65,105}}, +/* 9255 */ {(16<<2)|3,{99,65,111}}, +/* 9256 */ {(16<<2)|3,{99,65,115}}, +/* 9257 */ {(16<<2)|3,{99,65,116}}, +/* 9258 */ {(11<<2)|2,{99,65,0}}, +/* 9259 */ {(11<<2)|2,{99,65,0}}, +/* 9260 */ {(11<<2)|2,{99,65,0}}, +/* 9261 */ {(11<<2)|2,{99,65,0}}, +/* 9262 */ {(11<<2)|2,{99,65,0}}, +/* 9263 */ {(11<<2)|2,{99,65,0}}, +/* 9264 */ {(11<<2)|2,{99,65,0}}, +/* 9265 */ {(11<<2)|2,{99,65,0}}, +/* 9266 */ {(11<<2)|2,{99,65,0}}, +/* 9267 */ {(11<<2)|2,{99,65,0}}, +/* 9268 */ {(11<<2)|2,{99,65,0}}, +/* 9269 */ {(11<<2)|2,{99,65,0}}, +/* 9270 */ {(11<<2)|2,{99,65,0}}, +/* 9271 */ {(11<<2)|2,{99,65,0}}, +/* 9272 */ {(11<<2)|2,{99,65,0}}, +/* 9273 */ {(11<<2)|2,{99,65,0}}, +/* 9274 */ {(11<<2)|2,{99,65,0}}, +/* 9275 */ {(11<<2)|2,{99,65,0}}, +/* 9276 */ {(11<<2)|2,{99,65,0}}, +/* 9277 */ {(11<<2)|2,{99,65,0}}, +/* 9278 */ {(11<<2)|2,{99,65,0}}, +/* 9279 */ {(11<<2)|2,{99,65,0}}, +/* 9280 */ {(16<<2)|3,{99,95,48}}, +/* 9281 */ {(16<<2)|3,{99,95,49}}, +/* 9282 */ {(16<<2)|3,{99,95,50}}, +/* 9283 */ {(16<<2)|3,{99,95,97}}, +/* 9284 */ {(16<<2)|3,{99,95,99}}, +/* 9285 */ {(16<<2)|3,{99,95,101}}, +/* 9286 */ {(16<<2)|3,{99,95,105}}, +/* 9287 */ {(16<<2)|3,{99,95,111}}, +/* 9288 */ {(16<<2)|3,{99,95,115}}, +/* 9289 */ {(16<<2)|3,{99,95,116}}, +/* 9290 */ {(11<<2)|2,{99,95,0}}, +/* 9291 */ {(11<<2)|2,{99,95,0}}, +/* 9292 */ {(11<<2)|2,{99,95,0}}, +/* 9293 */ {(11<<2)|2,{99,95,0}}, +/* 9294 */ {(11<<2)|2,{99,95,0}}, +/* 9295 */ {(11<<2)|2,{99,95,0}}, +/* 9296 */ {(11<<2)|2,{99,95,0}}, +/* 9297 */ {(11<<2)|2,{99,95,0}}, +/* 9298 */ {(11<<2)|2,{99,95,0}}, +/* 9299 */ {(11<<2)|2,{99,95,0}}, +/* 9300 */ {(11<<2)|2,{99,95,0}}, +/* 9301 */ {(11<<2)|2,{99,95,0}}, +/* 9302 */ {(11<<2)|2,{99,95,0}}, +/* 9303 */ {(11<<2)|2,{99,95,0}}, +/* 9304 */ {(11<<2)|2,{99,95,0}}, +/* 9305 */ {(11<<2)|2,{99,95,0}}, +/* 9306 */ {(11<<2)|2,{99,95,0}}, +/* 9307 */ {(11<<2)|2,{99,95,0}}, +/* 9308 */ {(11<<2)|2,{99,95,0}}, +/* 9309 */ {(11<<2)|2,{99,95,0}}, +/* 9310 */ {(11<<2)|2,{99,95,0}}, +/* 9311 */ {(11<<2)|2,{99,95,0}}, +/* 9312 */ {(16<<2)|3,{99,98,48}}, +/* 9313 */ {(16<<2)|3,{99,98,49}}, +/* 9314 */ {(16<<2)|3,{99,98,50}}, +/* 9315 */ {(16<<2)|3,{99,98,97}}, +/* 9316 */ {(16<<2)|3,{99,98,99}}, +/* 9317 */ {(16<<2)|3,{99,98,101}}, +/* 9318 */ {(16<<2)|3,{99,98,105}}, +/* 9319 */ {(16<<2)|3,{99,98,111}}, +/* 9320 */ {(16<<2)|3,{99,98,115}}, +/* 9321 */ {(16<<2)|3,{99,98,116}}, +/* 9322 */ {(11<<2)|2,{99,98,0}}, +/* 9323 */ {(11<<2)|2,{99,98,0}}, +/* 9324 */ {(11<<2)|2,{99,98,0}}, +/* 9325 */ {(11<<2)|2,{99,98,0}}, +/* 9326 */ {(11<<2)|2,{99,98,0}}, +/* 9327 */ {(11<<2)|2,{99,98,0}}, +/* 9328 */ {(11<<2)|2,{99,98,0}}, +/* 9329 */ {(11<<2)|2,{99,98,0}}, +/* 9330 */ {(11<<2)|2,{99,98,0}}, +/* 9331 */ {(11<<2)|2,{99,98,0}}, +/* 9332 */ {(11<<2)|2,{99,98,0}}, +/* 9333 */ {(11<<2)|2,{99,98,0}}, +/* 9334 */ {(11<<2)|2,{99,98,0}}, +/* 9335 */ {(11<<2)|2,{99,98,0}}, +/* 9336 */ {(11<<2)|2,{99,98,0}}, +/* 9337 */ {(11<<2)|2,{99,98,0}}, +/* 9338 */ {(11<<2)|2,{99,98,0}}, +/* 9339 */ {(11<<2)|2,{99,98,0}}, +/* 9340 */ {(11<<2)|2,{99,98,0}}, +/* 9341 */ {(11<<2)|2,{99,98,0}}, +/* 9342 */ {(11<<2)|2,{99,98,0}}, +/* 9343 */ {(11<<2)|2,{99,98,0}}, +/* 9344 */ {(16<<2)|3,{99,100,48}}, +/* 9345 */ {(16<<2)|3,{99,100,49}}, +/* 9346 */ {(16<<2)|3,{99,100,50}}, +/* 9347 */ {(16<<2)|3,{99,100,97}}, +/* 9348 */ {(16<<2)|3,{99,100,99}}, +/* 9349 */ {(16<<2)|3,{99,100,101}}, +/* 9350 */ {(16<<2)|3,{99,100,105}}, +/* 9351 */ {(16<<2)|3,{99,100,111}}, +/* 9352 */ {(16<<2)|3,{99,100,115}}, +/* 9353 */ {(16<<2)|3,{99,100,116}}, +/* 9354 */ {(11<<2)|2,{99,100,0}}, +/* 9355 */ {(11<<2)|2,{99,100,0}}, +/* 9356 */ {(11<<2)|2,{99,100,0}}, +/* 9357 */ {(11<<2)|2,{99,100,0}}, +/* 9358 */ {(11<<2)|2,{99,100,0}}, +/* 9359 */ {(11<<2)|2,{99,100,0}}, +/* 9360 */ {(11<<2)|2,{99,100,0}}, +/* 9361 */ {(11<<2)|2,{99,100,0}}, +/* 9362 */ {(11<<2)|2,{99,100,0}}, +/* 9363 */ {(11<<2)|2,{99,100,0}}, +/* 9364 */ {(11<<2)|2,{99,100,0}}, +/* 9365 */ {(11<<2)|2,{99,100,0}}, +/* 9366 */ {(11<<2)|2,{99,100,0}}, +/* 9367 */ {(11<<2)|2,{99,100,0}}, +/* 9368 */ {(11<<2)|2,{99,100,0}}, +/* 9369 */ {(11<<2)|2,{99,100,0}}, +/* 9370 */ {(11<<2)|2,{99,100,0}}, +/* 9371 */ {(11<<2)|2,{99,100,0}}, +/* 9372 */ {(11<<2)|2,{99,100,0}}, +/* 9373 */ {(11<<2)|2,{99,100,0}}, +/* 9374 */ {(11<<2)|2,{99,100,0}}, +/* 9375 */ {(11<<2)|2,{99,100,0}}, +/* 9376 */ {(16<<2)|3,{99,102,48}}, +/* 9377 */ {(16<<2)|3,{99,102,49}}, +/* 9378 */ {(16<<2)|3,{99,102,50}}, +/* 9379 */ {(16<<2)|3,{99,102,97}}, +/* 9380 */ {(16<<2)|3,{99,102,99}}, +/* 9381 */ {(16<<2)|3,{99,102,101}}, +/* 9382 */ {(16<<2)|3,{99,102,105}}, +/* 9383 */ {(16<<2)|3,{99,102,111}}, +/* 9384 */ {(16<<2)|3,{99,102,115}}, +/* 9385 */ {(16<<2)|3,{99,102,116}}, +/* 9386 */ {(11<<2)|2,{99,102,0}}, +/* 9387 */ {(11<<2)|2,{99,102,0}}, +/* 9388 */ {(11<<2)|2,{99,102,0}}, +/* 9389 */ {(11<<2)|2,{99,102,0}}, +/* 9390 */ {(11<<2)|2,{99,102,0}}, +/* 9391 */ {(11<<2)|2,{99,102,0}}, +/* 9392 */ {(11<<2)|2,{99,102,0}}, +/* 9393 */ {(11<<2)|2,{99,102,0}}, +/* 9394 */ {(11<<2)|2,{99,102,0}}, +/* 9395 */ {(11<<2)|2,{99,102,0}}, +/* 9396 */ {(11<<2)|2,{99,102,0}}, +/* 9397 */ {(11<<2)|2,{99,102,0}}, +/* 9398 */ {(11<<2)|2,{99,102,0}}, +/* 9399 */ {(11<<2)|2,{99,102,0}}, +/* 9400 */ {(11<<2)|2,{99,102,0}}, +/* 9401 */ {(11<<2)|2,{99,102,0}}, +/* 9402 */ {(11<<2)|2,{99,102,0}}, +/* 9403 */ {(11<<2)|2,{99,102,0}}, +/* 9404 */ {(11<<2)|2,{99,102,0}}, +/* 9405 */ {(11<<2)|2,{99,102,0}}, +/* 9406 */ {(11<<2)|2,{99,102,0}}, +/* 9407 */ {(11<<2)|2,{99,102,0}}, +/* 9408 */ {(16<<2)|3,{99,103,48}}, +/* 9409 */ {(16<<2)|3,{99,103,49}}, +/* 9410 */ {(16<<2)|3,{99,103,50}}, +/* 9411 */ {(16<<2)|3,{99,103,97}}, +/* 9412 */ {(16<<2)|3,{99,103,99}}, +/* 9413 */ {(16<<2)|3,{99,103,101}}, +/* 9414 */ {(16<<2)|3,{99,103,105}}, +/* 9415 */ {(16<<2)|3,{99,103,111}}, +/* 9416 */ {(16<<2)|3,{99,103,115}}, +/* 9417 */ {(16<<2)|3,{99,103,116}}, +/* 9418 */ {(11<<2)|2,{99,103,0}}, +/* 9419 */ {(11<<2)|2,{99,103,0}}, +/* 9420 */ {(11<<2)|2,{99,103,0}}, +/* 9421 */ {(11<<2)|2,{99,103,0}}, +/* 9422 */ {(11<<2)|2,{99,103,0}}, +/* 9423 */ {(11<<2)|2,{99,103,0}}, +/* 9424 */ {(11<<2)|2,{99,103,0}}, +/* 9425 */ {(11<<2)|2,{99,103,0}}, +/* 9426 */ {(11<<2)|2,{99,103,0}}, +/* 9427 */ {(11<<2)|2,{99,103,0}}, +/* 9428 */ {(11<<2)|2,{99,103,0}}, +/* 9429 */ {(11<<2)|2,{99,103,0}}, +/* 9430 */ {(11<<2)|2,{99,103,0}}, +/* 9431 */ {(11<<2)|2,{99,103,0}}, +/* 9432 */ {(11<<2)|2,{99,103,0}}, +/* 9433 */ {(11<<2)|2,{99,103,0}}, +/* 9434 */ {(11<<2)|2,{99,103,0}}, +/* 9435 */ {(11<<2)|2,{99,103,0}}, +/* 9436 */ {(11<<2)|2,{99,103,0}}, +/* 9437 */ {(11<<2)|2,{99,103,0}}, +/* 9438 */ {(11<<2)|2,{99,103,0}}, +/* 9439 */ {(11<<2)|2,{99,103,0}}, +/* 9440 */ {(16<<2)|3,{99,104,48}}, +/* 9441 */ {(16<<2)|3,{99,104,49}}, +/* 9442 */ {(16<<2)|3,{99,104,50}}, +/* 9443 */ {(16<<2)|3,{99,104,97}}, +/* 9444 */ {(16<<2)|3,{99,104,99}}, +/* 9445 */ {(16<<2)|3,{99,104,101}}, +/* 9446 */ {(16<<2)|3,{99,104,105}}, +/* 9447 */ {(16<<2)|3,{99,104,111}}, +/* 9448 */ {(16<<2)|3,{99,104,115}}, +/* 9449 */ {(16<<2)|3,{99,104,116}}, +/* 9450 */ {(11<<2)|2,{99,104,0}}, +/* 9451 */ {(11<<2)|2,{99,104,0}}, +/* 9452 */ {(11<<2)|2,{99,104,0}}, +/* 9453 */ {(11<<2)|2,{99,104,0}}, +/* 9454 */ {(11<<2)|2,{99,104,0}}, +/* 9455 */ {(11<<2)|2,{99,104,0}}, +/* 9456 */ {(11<<2)|2,{99,104,0}}, +/* 9457 */ {(11<<2)|2,{99,104,0}}, +/* 9458 */ {(11<<2)|2,{99,104,0}}, +/* 9459 */ {(11<<2)|2,{99,104,0}}, +/* 9460 */ {(11<<2)|2,{99,104,0}}, +/* 9461 */ {(11<<2)|2,{99,104,0}}, +/* 9462 */ {(11<<2)|2,{99,104,0}}, +/* 9463 */ {(11<<2)|2,{99,104,0}}, +/* 9464 */ {(11<<2)|2,{99,104,0}}, +/* 9465 */ {(11<<2)|2,{99,104,0}}, +/* 9466 */ {(11<<2)|2,{99,104,0}}, +/* 9467 */ {(11<<2)|2,{99,104,0}}, +/* 9468 */ {(11<<2)|2,{99,104,0}}, +/* 9469 */ {(11<<2)|2,{99,104,0}}, +/* 9470 */ {(11<<2)|2,{99,104,0}}, +/* 9471 */ {(11<<2)|2,{99,104,0}}, +/* 9472 */ {(16<<2)|3,{99,108,48}}, +/* 9473 */ {(16<<2)|3,{99,108,49}}, +/* 9474 */ {(16<<2)|3,{99,108,50}}, +/* 9475 */ {(16<<2)|3,{99,108,97}}, +/* 9476 */ {(16<<2)|3,{99,108,99}}, +/* 9477 */ {(16<<2)|3,{99,108,101}}, +/* 9478 */ {(16<<2)|3,{99,108,105}}, +/* 9479 */ {(16<<2)|3,{99,108,111}}, +/* 9480 */ {(16<<2)|3,{99,108,115}}, +/* 9481 */ {(16<<2)|3,{99,108,116}}, +/* 9482 */ {(11<<2)|2,{99,108,0}}, +/* 9483 */ {(11<<2)|2,{99,108,0}}, +/* 9484 */ {(11<<2)|2,{99,108,0}}, +/* 9485 */ {(11<<2)|2,{99,108,0}}, +/* 9486 */ {(11<<2)|2,{99,108,0}}, +/* 9487 */ {(11<<2)|2,{99,108,0}}, +/* 9488 */ {(11<<2)|2,{99,108,0}}, +/* 9489 */ {(11<<2)|2,{99,108,0}}, +/* 9490 */ {(11<<2)|2,{99,108,0}}, +/* 9491 */ {(11<<2)|2,{99,108,0}}, +/* 9492 */ {(11<<2)|2,{99,108,0}}, +/* 9493 */ {(11<<2)|2,{99,108,0}}, +/* 9494 */ {(11<<2)|2,{99,108,0}}, +/* 9495 */ {(11<<2)|2,{99,108,0}}, +/* 9496 */ {(11<<2)|2,{99,108,0}}, +/* 9497 */ {(11<<2)|2,{99,108,0}}, +/* 9498 */ {(11<<2)|2,{99,108,0}}, +/* 9499 */ {(11<<2)|2,{99,108,0}}, +/* 9500 */ {(11<<2)|2,{99,108,0}}, +/* 9501 */ {(11<<2)|2,{99,108,0}}, +/* 9502 */ {(11<<2)|2,{99,108,0}}, +/* 9503 */ {(11<<2)|2,{99,108,0}}, +/* 9504 */ {(16<<2)|3,{99,109,48}}, +/* 9505 */ {(16<<2)|3,{99,109,49}}, +/* 9506 */ {(16<<2)|3,{99,109,50}}, +/* 9507 */ {(16<<2)|3,{99,109,97}}, +/* 9508 */ {(16<<2)|3,{99,109,99}}, +/* 9509 */ {(16<<2)|3,{99,109,101}}, +/* 9510 */ {(16<<2)|3,{99,109,105}}, +/* 9511 */ {(16<<2)|3,{99,109,111}}, +/* 9512 */ {(16<<2)|3,{99,109,115}}, +/* 9513 */ {(16<<2)|3,{99,109,116}}, +/* 9514 */ {(11<<2)|2,{99,109,0}}, +/* 9515 */ {(11<<2)|2,{99,109,0}}, +/* 9516 */ {(11<<2)|2,{99,109,0}}, +/* 9517 */ {(11<<2)|2,{99,109,0}}, +/* 9518 */ {(11<<2)|2,{99,109,0}}, +/* 9519 */ {(11<<2)|2,{99,109,0}}, +/* 9520 */ {(11<<2)|2,{99,109,0}}, +/* 9521 */ {(11<<2)|2,{99,109,0}}, +/* 9522 */ {(11<<2)|2,{99,109,0}}, +/* 9523 */ {(11<<2)|2,{99,109,0}}, +/* 9524 */ {(11<<2)|2,{99,109,0}}, +/* 9525 */ {(11<<2)|2,{99,109,0}}, +/* 9526 */ {(11<<2)|2,{99,109,0}}, +/* 9527 */ {(11<<2)|2,{99,109,0}}, +/* 9528 */ {(11<<2)|2,{99,109,0}}, +/* 9529 */ {(11<<2)|2,{99,109,0}}, +/* 9530 */ {(11<<2)|2,{99,109,0}}, +/* 9531 */ {(11<<2)|2,{99,109,0}}, +/* 9532 */ {(11<<2)|2,{99,109,0}}, +/* 9533 */ {(11<<2)|2,{99,109,0}}, +/* 9534 */ {(11<<2)|2,{99,109,0}}, +/* 9535 */ {(11<<2)|2,{99,109,0}}, +/* 9536 */ {(16<<2)|3,{99,110,48}}, +/* 9537 */ {(16<<2)|3,{99,110,49}}, +/* 9538 */ {(16<<2)|3,{99,110,50}}, +/* 9539 */ {(16<<2)|3,{99,110,97}}, +/* 9540 */ {(16<<2)|3,{99,110,99}}, +/* 9541 */ {(16<<2)|3,{99,110,101}}, +/* 9542 */ {(16<<2)|3,{99,110,105}}, +/* 9543 */ {(16<<2)|3,{99,110,111}}, +/* 9544 */ {(16<<2)|3,{99,110,115}}, +/* 9545 */ {(16<<2)|3,{99,110,116}}, +/* 9546 */ {(11<<2)|2,{99,110,0}}, +/* 9547 */ {(11<<2)|2,{99,110,0}}, +/* 9548 */ {(11<<2)|2,{99,110,0}}, +/* 9549 */ {(11<<2)|2,{99,110,0}}, +/* 9550 */ {(11<<2)|2,{99,110,0}}, +/* 9551 */ {(11<<2)|2,{99,110,0}}, +/* 9552 */ {(11<<2)|2,{99,110,0}}, +/* 9553 */ {(11<<2)|2,{99,110,0}}, +/* 9554 */ {(11<<2)|2,{99,110,0}}, +/* 9555 */ {(11<<2)|2,{99,110,0}}, +/* 9556 */ {(11<<2)|2,{99,110,0}}, +/* 9557 */ {(11<<2)|2,{99,110,0}}, +/* 9558 */ {(11<<2)|2,{99,110,0}}, +/* 9559 */ {(11<<2)|2,{99,110,0}}, +/* 9560 */ {(11<<2)|2,{99,110,0}}, +/* 9561 */ {(11<<2)|2,{99,110,0}}, +/* 9562 */ {(11<<2)|2,{99,110,0}}, +/* 9563 */ {(11<<2)|2,{99,110,0}}, +/* 9564 */ {(11<<2)|2,{99,110,0}}, +/* 9565 */ {(11<<2)|2,{99,110,0}}, +/* 9566 */ {(11<<2)|2,{99,110,0}}, +/* 9567 */ {(11<<2)|2,{99,110,0}}, +/* 9568 */ {(16<<2)|3,{99,112,48}}, +/* 9569 */ {(16<<2)|3,{99,112,49}}, +/* 9570 */ {(16<<2)|3,{99,112,50}}, +/* 9571 */ {(16<<2)|3,{99,112,97}}, +/* 9572 */ {(16<<2)|3,{99,112,99}}, +/* 9573 */ {(16<<2)|3,{99,112,101}}, +/* 9574 */ {(16<<2)|3,{99,112,105}}, +/* 9575 */ {(16<<2)|3,{99,112,111}}, +/* 9576 */ {(16<<2)|3,{99,112,115}}, +/* 9577 */ {(16<<2)|3,{99,112,116}}, +/* 9578 */ {(11<<2)|2,{99,112,0}}, +/* 9579 */ {(11<<2)|2,{99,112,0}}, +/* 9580 */ {(11<<2)|2,{99,112,0}}, +/* 9581 */ {(11<<2)|2,{99,112,0}}, +/* 9582 */ {(11<<2)|2,{99,112,0}}, +/* 9583 */ {(11<<2)|2,{99,112,0}}, +/* 9584 */ {(11<<2)|2,{99,112,0}}, +/* 9585 */ {(11<<2)|2,{99,112,0}}, +/* 9586 */ {(11<<2)|2,{99,112,0}}, +/* 9587 */ {(11<<2)|2,{99,112,0}}, +/* 9588 */ {(11<<2)|2,{99,112,0}}, +/* 9589 */ {(11<<2)|2,{99,112,0}}, +/* 9590 */ {(11<<2)|2,{99,112,0}}, +/* 9591 */ {(11<<2)|2,{99,112,0}}, +/* 9592 */ {(11<<2)|2,{99,112,0}}, +/* 9593 */ {(11<<2)|2,{99,112,0}}, +/* 9594 */ {(11<<2)|2,{99,112,0}}, +/* 9595 */ {(11<<2)|2,{99,112,0}}, +/* 9596 */ {(11<<2)|2,{99,112,0}}, +/* 9597 */ {(11<<2)|2,{99,112,0}}, +/* 9598 */ {(11<<2)|2,{99,112,0}}, +/* 9599 */ {(11<<2)|2,{99,112,0}}, +/* 9600 */ {(16<<2)|3,{99,114,48}}, +/* 9601 */ {(16<<2)|3,{99,114,49}}, +/* 9602 */ {(16<<2)|3,{99,114,50}}, +/* 9603 */ {(16<<2)|3,{99,114,97}}, +/* 9604 */ {(16<<2)|3,{99,114,99}}, +/* 9605 */ {(16<<2)|3,{99,114,101}}, +/* 9606 */ {(16<<2)|3,{99,114,105}}, +/* 9607 */ {(16<<2)|3,{99,114,111}}, +/* 9608 */ {(16<<2)|3,{99,114,115}}, +/* 9609 */ {(16<<2)|3,{99,114,116}}, +/* 9610 */ {(11<<2)|2,{99,114,0}}, +/* 9611 */ {(11<<2)|2,{99,114,0}}, +/* 9612 */ {(11<<2)|2,{99,114,0}}, +/* 9613 */ {(11<<2)|2,{99,114,0}}, +/* 9614 */ {(11<<2)|2,{99,114,0}}, +/* 9615 */ {(11<<2)|2,{99,114,0}}, +/* 9616 */ {(11<<2)|2,{99,114,0}}, +/* 9617 */ {(11<<2)|2,{99,114,0}}, +/* 9618 */ {(11<<2)|2,{99,114,0}}, +/* 9619 */ {(11<<2)|2,{99,114,0}}, +/* 9620 */ {(11<<2)|2,{99,114,0}}, +/* 9621 */ {(11<<2)|2,{99,114,0}}, +/* 9622 */ {(11<<2)|2,{99,114,0}}, +/* 9623 */ {(11<<2)|2,{99,114,0}}, +/* 9624 */ {(11<<2)|2,{99,114,0}}, +/* 9625 */ {(11<<2)|2,{99,114,0}}, +/* 9626 */ {(11<<2)|2,{99,114,0}}, +/* 9627 */ {(11<<2)|2,{99,114,0}}, +/* 9628 */ {(11<<2)|2,{99,114,0}}, +/* 9629 */ {(11<<2)|2,{99,114,0}}, +/* 9630 */ {(11<<2)|2,{99,114,0}}, +/* 9631 */ {(11<<2)|2,{99,114,0}}, +/* 9632 */ {(16<<2)|3,{99,117,48}}, +/* 9633 */ {(16<<2)|3,{99,117,49}}, +/* 9634 */ {(16<<2)|3,{99,117,50}}, +/* 9635 */ {(16<<2)|3,{99,117,97}}, +/* 9636 */ {(16<<2)|3,{99,117,99}}, +/* 9637 */ {(16<<2)|3,{99,117,101}}, +/* 9638 */ {(16<<2)|3,{99,117,105}}, +/* 9639 */ {(16<<2)|3,{99,117,111}}, +/* 9640 */ {(16<<2)|3,{99,117,115}}, +/* 9641 */ {(16<<2)|3,{99,117,116}}, +/* 9642 */ {(11<<2)|2,{99,117,0}}, +/* 9643 */ {(11<<2)|2,{99,117,0}}, +/* 9644 */ {(11<<2)|2,{99,117,0}}, +/* 9645 */ {(11<<2)|2,{99,117,0}}, +/* 9646 */ {(11<<2)|2,{99,117,0}}, +/* 9647 */ {(11<<2)|2,{99,117,0}}, +/* 9648 */ {(11<<2)|2,{99,117,0}}, +/* 9649 */ {(11<<2)|2,{99,117,0}}, +/* 9650 */ {(11<<2)|2,{99,117,0}}, +/* 9651 */ {(11<<2)|2,{99,117,0}}, +/* 9652 */ {(11<<2)|2,{99,117,0}}, +/* 9653 */ {(11<<2)|2,{99,117,0}}, +/* 9654 */ {(11<<2)|2,{99,117,0}}, +/* 9655 */ {(11<<2)|2,{99,117,0}}, +/* 9656 */ {(11<<2)|2,{99,117,0}}, +/* 9657 */ {(11<<2)|2,{99,117,0}}, +/* 9658 */ {(11<<2)|2,{99,117,0}}, +/* 9659 */ {(11<<2)|2,{99,117,0}}, +/* 9660 */ {(11<<2)|2,{99,117,0}}, +/* 9661 */ {(11<<2)|2,{99,117,0}}, +/* 9662 */ {(11<<2)|2,{99,117,0}}, +/* 9663 */ {(11<<2)|2,{99,117,0}}, +/* 9664 */ {(12<<2)|2,{99,58,0}}, +/* 9665 */ {(12<<2)|2,{99,58,0}}, +/* 9666 */ {(12<<2)|2,{99,58,0}}, +/* 9667 */ {(12<<2)|2,{99,58,0}}, +/* 9668 */ {(12<<2)|2,{99,58,0}}, +/* 9669 */ {(12<<2)|2,{99,58,0}}, +/* 9670 */ {(12<<2)|2,{99,58,0}}, +/* 9671 */ {(12<<2)|2,{99,58,0}}, +/* 9672 */ {(12<<2)|2,{99,58,0}}, +/* 9673 */ {(12<<2)|2,{99,58,0}}, +/* 9674 */ {(12<<2)|2,{99,58,0}}, +/* 9675 */ {(12<<2)|2,{99,58,0}}, +/* 9676 */ {(12<<2)|2,{99,58,0}}, +/* 9677 */ {(12<<2)|2,{99,58,0}}, +/* 9678 */ {(12<<2)|2,{99,58,0}}, +/* 9679 */ {(12<<2)|2,{99,58,0}}, +/* 9680 */ {(12<<2)|2,{99,66,0}}, +/* 9681 */ {(12<<2)|2,{99,66,0}}, +/* 9682 */ {(12<<2)|2,{99,66,0}}, +/* 9683 */ {(12<<2)|2,{99,66,0}}, +/* 9684 */ {(12<<2)|2,{99,66,0}}, +/* 9685 */ {(12<<2)|2,{99,66,0}}, +/* 9686 */ {(12<<2)|2,{99,66,0}}, +/* 9687 */ {(12<<2)|2,{99,66,0}}, +/* 9688 */ {(12<<2)|2,{99,66,0}}, +/* 9689 */ {(12<<2)|2,{99,66,0}}, +/* 9690 */ {(12<<2)|2,{99,66,0}}, +/* 9691 */ {(12<<2)|2,{99,66,0}}, +/* 9692 */ {(12<<2)|2,{99,66,0}}, +/* 9693 */ {(12<<2)|2,{99,66,0}}, +/* 9694 */ {(12<<2)|2,{99,66,0}}, +/* 9695 */ {(12<<2)|2,{99,66,0}}, +/* 9696 */ {(12<<2)|2,{99,67,0}}, +/* 9697 */ {(12<<2)|2,{99,67,0}}, +/* 9698 */ {(12<<2)|2,{99,67,0}}, +/* 9699 */ {(12<<2)|2,{99,67,0}}, +/* 9700 */ {(12<<2)|2,{99,67,0}}, +/* 9701 */ {(12<<2)|2,{99,67,0}}, +/* 9702 */ {(12<<2)|2,{99,67,0}}, +/* 9703 */ {(12<<2)|2,{99,67,0}}, +/* 9704 */ {(12<<2)|2,{99,67,0}}, +/* 9705 */ {(12<<2)|2,{99,67,0}}, +/* 9706 */ {(12<<2)|2,{99,67,0}}, +/* 9707 */ {(12<<2)|2,{99,67,0}}, +/* 9708 */ {(12<<2)|2,{99,67,0}}, +/* 9709 */ {(12<<2)|2,{99,67,0}}, +/* 9710 */ {(12<<2)|2,{99,67,0}}, +/* 9711 */ {(12<<2)|2,{99,67,0}}, +/* 9712 */ {(12<<2)|2,{99,68,0}}, +/* 9713 */ {(12<<2)|2,{99,68,0}}, +/* 9714 */ {(12<<2)|2,{99,68,0}}, +/* 9715 */ {(12<<2)|2,{99,68,0}}, +/* 9716 */ {(12<<2)|2,{99,68,0}}, +/* 9717 */ {(12<<2)|2,{99,68,0}}, +/* 9718 */ {(12<<2)|2,{99,68,0}}, +/* 9719 */ {(12<<2)|2,{99,68,0}}, +/* 9720 */ {(12<<2)|2,{99,68,0}}, +/* 9721 */ {(12<<2)|2,{99,68,0}}, +/* 9722 */ {(12<<2)|2,{99,68,0}}, +/* 9723 */ {(12<<2)|2,{99,68,0}}, +/* 9724 */ {(12<<2)|2,{99,68,0}}, +/* 9725 */ {(12<<2)|2,{99,68,0}}, +/* 9726 */ {(12<<2)|2,{99,68,0}}, +/* 9727 */ {(12<<2)|2,{99,68,0}}, +/* 9728 */ {(12<<2)|2,{99,69,0}}, +/* 9729 */ {(12<<2)|2,{99,69,0}}, +/* 9730 */ {(12<<2)|2,{99,69,0}}, +/* 9731 */ {(12<<2)|2,{99,69,0}}, +/* 9732 */ {(12<<2)|2,{99,69,0}}, +/* 9733 */ {(12<<2)|2,{99,69,0}}, +/* 9734 */ {(12<<2)|2,{99,69,0}}, +/* 9735 */ {(12<<2)|2,{99,69,0}}, +/* 9736 */ {(12<<2)|2,{99,69,0}}, +/* 9737 */ {(12<<2)|2,{99,69,0}}, +/* 9738 */ {(12<<2)|2,{99,69,0}}, +/* 9739 */ {(12<<2)|2,{99,69,0}}, +/* 9740 */ {(12<<2)|2,{99,69,0}}, +/* 9741 */ {(12<<2)|2,{99,69,0}}, +/* 9742 */ {(12<<2)|2,{99,69,0}}, +/* 9743 */ {(12<<2)|2,{99,69,0}}, +/* 9744 */ {(12<<2)|2,{99,70,0}}, +/* 9745 */ {(12<<2)|2,{99,70,0}}, +/* 9746 */ {(12<<2)|2,{99,70,0}}, +/* 9747 */ {(12<<2)|2,{99,70,0}}, +/* 9748 */ {(12<<2)|2,{99,70,0}}, +/* 9749 */ {(12<<2)|2,{99,70,0}}, +/* 9750 */ {(12<<2)|2,{99,70,0}}, +/* 9751 */ {(12<<2)|2,{99,70,0}}, +/* 9752 */ {(12<<2)|2,{99,70,0}}, +/* 9753 */ {(12<<2)|2,{99,70,0}}, +/* 9754 */ {(12<<2)|2,{99,70,0}}, +/* 9755 */ {(12<<2)|2,{99,70,0}}, +/* 9756 */ {(12<<2)|2,{99,70,0}}, +/* 9757 */ {(12<<2)|2,{99,70,0}}, +/* 9758 */ {(12<<2)|2,{99,70,0}}, +/* 9759 */ {(12<<2)|2,{99,70,0}}, +/* 9760 */ {(12<<2)|2,{99,71,0}}, +/* 9761 */ {(12<<2)|2,{99,71,0}}, +/* 9762 */ {(12<<2)|2,{99,71,0}}, +/* 9763 */ {(12<<2)|2,{99,71,0}}, +/* 9764 */ {(12<<2)|2,{99,71,0}}, +/* 9765 */ {(12<<2)|2,{99,71,0}}, +/* 9766 */ {(12<<2)|2,{99,71,0}}, +/* 9767 */ {(12<<2)|2,{99,71,0}}, +/* 9768 */ {(12<<2)|2,{99,71,0}}, +/* 9769 */ {(12<<2)|2,{99,71,0}}, +/* 9770 */ {(12<<2)|2,{99,71,0}}, +/* 9771 */ {(12<<2)|2,{99,71,0}}, +/* 9772 */ {(12<<2)|2,{99,71,0}}, +/* 9773 */ {(12<<2)|2,{99,71,0}}, +/* 9774 */ {(12<<2)|2,{99,71,0}}, +/* 9775 */ {(12<<2)|2,{99,71,0}}, +/* 9776 */ {(12<<2)|2,{99,72,0}}, +/* 9777 */ {(12<<2)|2,{99,72,0}}, +/* 9778 */ {(12<<2)|2,{99,72,0}}, +/* 9779 */ {(12<<2)|2,{99,72,0}}, +/* 9780 */ {(12<<2)|2,{99,72,0}}, +/* 9781 */ {(12<<2)|2,{99,72,0}}, +/* 9782 */ {(12<<2)|2,{99,72,0}}, +/* 9783 */ {(12<<2)|2,{99,72,0}}, +/* 9784 */ {(12<<2)|2,{99,72,0}}, +/* 9785 */ {(12<<2)|2,{99,72,0}}, +/* 9786 */ {(12<<2)|2,{99,72,0}}, +/* 9787 */ {(12<<2)|2,{99,72,0}}, +/* 9788 */ {(12<<2)|2,{99,72,0}}, +/* 9789 */ {(12<<2)|2,{99,72,0}}, +/* 9790 */ {(12<<2)|2,{99,72,0}}, +/* 9791 */ {(12<<2)|2,{99,72,0}}, +/* 9792 */ {(12<<2)|2,{99,73,0}}, +/* 9793 */ {(12<<2)|2,{99,73,0}}, +/* 9794 */ {(12<<2)|2,{99,73,0}}, +/* 9795 */ {(12<<2)|2,{99,73,0}}, +/* 9796 */ {(12<<2)|2,{99,73,0}}, +/* 9797 */ {(12<<2)|2,{99,73,0}}, +/* 9798 */ {(12<<2)|2,{99,73,0}}, +/* 9799 */ {(12<<2)|2,{99,73,0}}, +/* 9800 */ {(12<<2)|2,{99,73,0}}, +/* 9801 */ {(12<<2)|2,{99,73,0}}, +/* 9802 */ {(12<<2)|2,{99,73,0}}, +/* 9803 */ {(12<<2)|2,{99,73,0}}, +/* 9804 */ {(12<<2)|2,{99,73,0}}, +/* 9805 */ {(12<<2)|2,{99,73,0}}, +/* 9806 */ {(12<<2)|2,{99,73,0}}, +/* 9807 */ {(12<<2)|2,{99,73,0}}, +/* 9808 */ {(12<<2)|2,{99,74,0}}, +/* 9809 */ {(12<<2)|2,{99,74,0}}, +/* 9810 */ {(12<<2)|2,{99,74,0}}, +/* 9811 */ {(12<<2)|2,{99,74,0}}, +/* 9812 */ {(12<<2)|2,{99,74,0}}, +/* 9813 */ {(12<<2)|2,{99,74,0}}, +/* 9814 */ {(12<<2)|2,{99,74,0}}, +/* 9815 */ {(12<<2)|2,{99,74,0}}, +/* 9816 */ {(12<<2)|2,{99,74,0}}, +/* 9817 */ {(12<<2)|2,{99,74,0}}, +/* 9818 */ {(12<<2)|2,{99,74,0}}, +/* 9819 */ {(12<<2)|2,{99,74,0}}, +/* 9820 */ {(12<<2)|2,{99,74,0}}, +/* 9821 */ {(12<<2)|2,{99,74,0}}, +/* 9822 */ {(12<<2)|2,{99,74,0}}, +/* 9823 */ {(12<<2)|2,{99,74,0}}, +/* 9824 */ {(12<<2)|2,{99,75,0}}, +/* 9825 */ {(12<<2)|2,{99,75,0}}, +/* 9826 */ {(12<<2)|2,{99,75,0}}, +/* 9827 */ {(12<<2)|2,{99,75,0}}, +/* 9828 */ {(12<<2)|2,{99,75,0}}, +/* 9829 */ {(12<<2)|2,{99,75,0}}, +/* 9830 */ {(12<<2)|2,{99,75,0}}, +/* 9831 */ {(12<<2)|2,{99,75,0}}, +/* 9832 */ {(12<<2)|2,{99,75,0}}, +/* 9833 */ {(12<<2)|2,{99,75,0}}, +/* 9834 */ {(12<<2)|2,{99,75,0}}, +/* 9835 */ {(12<<2)|2,{99,75,0}}, +/* 9836 */ {(12<<2)|2,{99,75,0}}, +/* 9837 */ {(12<<2)|2,{99,75,0}}, +/* 9838 */ {(12<<2)|2,{99,75,0}}, +/* 9839 */ {(12<<2)|2,{99,75,0}}, +/* 9840 */ {(12<<2)|2,{99,76,0}}, +/* 9841 */ {(12<<2)|2,{99,76,0}}, +/* 9842 */ {(12<<2)|2,{99,76,0}}, +/* 9843 */ {(12<<2)|2,{99,76,0}}, +/* 9844 */ {(12<<2)|2,{99,76,0}}, +/* 9845 */ {(12<<2)|2,{99,76,0}}, +/* 9846 */ {(12<<2)|2,{99,76,0}}, +/* 9847 */ {(12<<2)|2,{99,76,0}}, +/* 9848 */ {(12<<2)|2,{99,76,0}}, +/* 9849 */ {(12<<2)|2,{99,76,0}}, +/* 9850 */ {(12<<2)|2,{99,76,0}}, +/* 9851 */ {(12<<2)|2,{99,76,0}}, +/* 9852 */ {(12<<2)|2,{99,76,0}}, +/* 9853 */ {(12<<2)|2,{99,76,0}}, +/* 9854 */ {(12<<2)|2,{99,76,0}}, +/* 9855 */ {(12<<2)|2,{99,76,0}}, +/* 9856 */ {(12<<2)|2,{99,77,0}}, +/* 9857 */ {(12<<2)|2,{99,77,0}}, +/* 9858 */ {(12<<2)|2,{99,77,0}}, +/* 9859 */ {(12<<2)|2,{99,77,0}}, +/* 9860 */ {(12<<2)|2,{99,77,0}}, +/* 9861 */ {(12<<2)|2,{99,77,0}}, +/* 9862 */ {(12<<2)|2,{99,77,0}}, +/* 9863 */ {(12<<2)|2,{99,77,0}}, +/* 9864 */ {(12<<2)|2,{99,77,0}}, +/* 9865 */ {(12<<2)|2,{99,77,0}}, +/* 9866 */ {(12<<2)|2,{99,77,0}}, +/* 9867 */ {(12<<2)|2,{99,77,0}}, +/* 9868 */ {(12<<2)|2,{99,77,0}}, +/* 9869 */ {(12<<2)|2,{99,77,0}}, +/* 9870 */ {(12<<2)|2,{99,77,0}}, +/* 9871 */ {(12<<2)|2,{99,77,0}}, +/* 9872 */ {(12<<2)|2,{99,78,0}}, +/* 9873 */ {(12<<2)|2,{99,78,0}}, +/* 9874 */ {(12<<2)|2,{99,78,0}}, +/* 9875 */ {(12<<2)|2,{99,78,0}}, +/* 9876 */ {(12<<2)|2,{99,78,0}}, +/* 9877 */ {(12<<2)|2,{99,78,0}}, +/* 9878 */ {(12<<2)|2,{99,78,0}}, +/* 9879 */ {(12<<2)|2,{99,78,0}}, +/* 9880 */ {(12<<2)|2,{99,78,0}}, +/* 9881 */ {(12<<2)|2,{99,78,0}}, +/* 9882 */ {(12<<2)|2,{99,78,0}}, +/* 9883 */ {(12<<2)|2,{99,78,0}}, +/* 9884 */ {(12<<2)|2,{99,78,0}}, +/* 9885 */ {(12<<2)|2,{99,78,0}}, +/* 9886 */ {(12<<2)|2,{99,78,0}}, +/* 9887 */ {(12<<2)|2,{99,78,0}}, +/* 9888 */ {(12<<2)|2,{99,79,0}}, +/* 9889 */ {(12<<2)|2,{99,79,0}}, +/* 9890 */ {(12<<2)|2,{99,79,0}}, +/* 9891 */ {(12<<2)|2,{99,79,0}}, +/* 9892 */ {(12<<2)|2,{99,79,0}}, +/* 9893 */ {(12<<2)|2,{99,79,0}}, +/* 9894 */ {(12<<2)|2,{99,79,0}}, +/* 9895 */ {(12<<2)|2,{99,79,0}}, +/* 9896 */ {(12<<2)|2,{99,79,0}}, +/* 9897 */ {(12<<2)|2,{99,79,0}}, +/* 9898 */ {(12<<2)|2,{99,79,0}}, +/* 9899 */ {(12<<2)|2,{99,79,0}}, +/* 9900 */ {(12<<2)|2,{99,79,0}}, +/* 9901 */ {(12<<2)|2,{99,79,0}}, +/* 9902 */ {(12<<2)|2,{99,79,0}}, +/* 9903 */ {(12<<2)|2,{99,79,0}}, +/* 9904 */ {(12<<2)|2,{99,80,0}}, +/* 9905 */ {(12<<2)|2,{99,80,0}}, +/* 9906 */ {(12<<2)|2,{99,80,0}}, +/* 9907 */ {(12<<2)|2,{99,80,0}}, +/* 9908 */ {(12<<2)|2,{99,80,0}}, +/* 9909 */ {(12<<2)|2,{99,80,0}}, +/* 9910 */ {(12<<2)|2,{99,80,0}}, +/* 9911 */ {(12<<2)|2,{99,80,0}}, +/* 9912 */ {(12<<2)|2,{99,80,0}}, +/* 9913 */ {(12<<2)|2,{99,80,0}}, +/* 9914 */ {(12<<2)|2,{99,80,0}}, +/* 9915 */ {(12<<2)|2,{99,80,0}}, +/* 9916 */ {(12<<2)|2,{99,80,0}}, +/* 9917 */ {(12<<2)|2,{99,80,0}}, +/* 9918 */ {(12<<2)|2,{99,80,0}}, +/* 9919 */ {(12<<2)|2,{99,80,0}}, +/* 9920 */ {(12<<2)|2,{99,81,0}}, +/* 9921 */ {(12<<2)|2,{99,81,0}}, +/* 9922 */ {(12<<2)|2,{99,81,0}}, +/* 9923 */ {(12<<2)|2,{99,81,0}}, +/* 9924 */ {(12<<2)|2,{99,81,0}}, +/* 9925 */ {(12<<2)|2,{99,81,0}}, +/* 9926 */ {(12<<2)|2,{99,81,0}}, +/* 9927 */ {(12<<2)|2,{99,81,0}}, +/* 9928 */ {(12<<2)|2,{99,81,0}}, +/* 9929 */ {(12<<2)|2,{99,81,0}}, +/* 9930 */ {(12<<2)|2,{99,81,0}}, +/* 9931 */ {(12<<2)|2,{99,81,0}}, +/* 9932 */ {(12<<2)|2,{99,81,0}}, +/* 9933 */ {(12<<2)|2,{99,81,0}}, +/* 9934 */ {(12<<2)|2,{99,81,0}}, +/* 9935 */ {(12<<2)|2,{99,81,0}}, +/* 9936 */ {(12<<2)|2,{99,82,0}}, +/* 9937 */ {(12<<2)|2,{99,82,0}}, +/* 9938 */ {(12<<2)|2,{99,82,0}}, +/* 9939 */ {(12<<2)|2,{99,82,0}}, +/* 9940 */ {(12<<2)|2,{99,82,0}}, +/* 9941 */ {(12<<2)|2,{99,82,0}}, +/* 9942 */ {(12<<2)|2,{99,82,0}}, +/* 9943 */ {(12<<2)|2,{99,82,0}}, +/* 9944 */ {(12<<2)|2,{99,82,0}}, +/* 9945 */ {(12<<2)|2,{99,82,0}}, +/* 9946 */ {(12<<2)|2,{99,82,0}}, +/* 9947 */ {(12<<2)|2,{99,82,0}}, +/* 9948 */ {(12<<2)|2,{99,82,0}}, +/* 9949 */ {(12<<2)|2,{99,82,0}}, +/* 9950 */ {(12<<2)|2,{99,82,0}}, +/* 9951 */ {(12<<2)|2,{99,82,0}}, +/* 9952 */ {(12<<2)|2,{99,83,0}}, +/* 9953 */ {(12<<2)|2,{99,83,0}}, +/* 9954 */ {(12<<2)|2,{99,83,0}}, +/* 9955 */ {(12<<2)|2,{99,83,0}}, +/* 9956 */ {(12<<2)|2,{99,83,0}}, +/* 9957 */ {(12<<2)|2,{99,83,0}}, +/* 9958 */ {(12<<2)|2,{99,83,0}}, +/* 9959 */ {(12<<2)|2,{99,83,0}}, +/* 9960 */ {(12<<2)|2,{99,83,0}}, +/* 9961 */ {(12<<2)|2,{99,83,0}}, +/* 9962 */ {(12<<2)|2,{99,83,0}}, +/* 9963 */ {(12<<2)|2,{99,83,0}}, +/* 9964 */ {(12<<2)|2,{99,83,0}}, +/* 9965 */ {(12<<2)|2,{99,83,0}}, +/* 9966 */ {(12<<2)|2,{99,83,0}}, +/* 9967 */ {(12<<2)|2,{99,83,0}}, +/* 9968 */ {(12<<2)|2,{99,84,0}}, +/* 9969 */ {(12<<2)|2,{99,84,0}}, +/* 9970 */ {(12<<2)|2,{99,84,0}}, +/* 9971 */ {(12<<2)|2,{99,84,0}}, +/* 9972 */ {(12<<2)|2,{99,84,0}}, +/* 9973 */ {(12<<2)|2,{99,84,0}}, +/* 9974 */ {(12<<2)|2,{99,84,0}}, +/* 9975 */ {(12<<2)|2,{99,84,0}}, +/* 9976 */ {(12<<2)|2,{99,84,0}}, +/* 9977 */ {(12<<2)|2,{99,84,0}}, +/* 9978 */ {(12<<2)|2,{99,84,0}}, +/* 9979 */ {(12<<2)|2,{99,84,0}}, +/* 9980 */ {(12<<2)|2,{99,84,0}}, +/* 9981 */ {(12<<2)|2,{99,84,0}}, +/* 9982 */ {(12<<2)|2,{99,84,0}}, +/* 9983 */ {(12<<2)|2,{99,84,0}}, +/* 9984 */ {(12<<2)|2,{99,85,0}}, +/* 9985 */ {(12<<2)|2,{99,85,0}}, +/* 9986 */ {(12<<2)|2,{99,85,0}}, +/* 9987 */ {(12<<2)|2,{99,85,0}}, +/* 9988 */ {(12<<2)|2,{99,85,0}}, +/* 9989 */ {(12<<2)|2,{99,85,0}}, +/* 9990 */ {(12<<2)|2,{99,85,0}}, +/* 9991 */ {(12<<2)|2,{99,85,0}}, +/* 9992 */ {(12<<2)|2,{99,85,0}}, +/* 9993 */ {(12<<2)|2,{99,85,0}}, +/* 9994 */ {(12<<2)|2,{99,85,0}}, +/* 9995 */ {(12<<2)|2,{99,85,0}}, +/* 9996 */ {(12<<2)|2,{99,85,0}}, +/* 9997 */ {(12<<2)|2,{99,85,0}}, +/* 9998 */ {(12<<2)|2,{99,85,0}}, +/* 9999 */ {(12<<2)|2,{99,85,0}}, +/* 10000 */ {(12<<2)|2,{99,86,0}}, +/* 10001 */ {(12<<2)|2,{99,86,0}}, +/* 10002 */ {(12<<2)|2,{99,86,0}}, +/* 10003 */ {(12<<2)|2,{99,86,0}}, +/* 10004 */ {(12<<2)|2,{99,86,0}}, +/* 10005 */ {(12<<2)|2,{99,86,0}}, +/* 10006 */ {(12<<2)|2,{99,86,0}}, +/* 10007 */ {(12<<2)|2,{99,86,0}}, +/* 10008 */ {(12<<2)|2,{99,86,0}}, +/* 10009 */ {(12<<2)|2,{99,86,0}}, +/* 10010 */ {(12<<2)|2,{99,86,0}}, +/* 10011 */ {(12<<2)|2,{99,86,0}}, +/* 10012 */ {(12<<2)|2,{99,86,0}}, +/* 10013 */ {(12<<2)|2,{99,86,0}}, +/* 10014 */ {(12<<2)|2,{99,86,0}}, +/* 10015 */ {(12<<2)|2,{99,86,0}}, +/* 10016 */ {(12<<2)|2,{99,87,0}}, +/* 10017 */ {(12<<2)|2,{99,87,0}}, +/* 10018 */ {(12<<2)|2,{99,87,0}}, +/* 10019 */ {(12<<2)|2,{99,87,0}}, +/* 10020 */ {(12<<2)|2,{99,87,0}}, +/* 10021 */ {(12<<2)|2,{99,87,0}}, +/* 10022 */ {(12<<2)|2,{99,87,0}}, +/* 10023 */ {(12<<2)|2,{99,87,0}}, +/* 10024 */ {(12<<2)|2,{99,87,0}}, +/* 10025 */ {(12<<2)|2,{99,87,0}}, +/* 10026 */ {(12<<2)|2,{99,87,0}}, +/* 10027 */ {(12<<2)|2,{99,87,0}}, +/* 10028 */ {(12<<2)|2,{99,87,0}}, +/* 10029 */ {(12<<2)|2,{99,87,0}}, +/* 10030 */ {(12<<2)|2,{99,87,0}}, +/* 10031 */ {(12<<2)|2,{99,87,0}}, +/* 10032 */ {(12<<2)|2,{99,89,0}}, +/* 10033 */ {(12<<2)|2,{99,89,0}}, +/* 10034 */ {(12<<2)|2,{99,89,0}}, +/* 10035 */ {(12<<2)|2,{99,89,0}}, +/* 10036 */ {(12<<2)|2,{99,89,0}}, +/* 10037 */ {(12<<2)|2,{99,89,0}}, +/* 10038 */ {(12<<2)|2,{99,89,0}}, +/* 10039 */ {(12<<2)|2,{99,89,0}}, +/* 10040 */ {(12<<2)|2,{99,89,0}}, +/* 10041 */ {(12<<2)|2,{99,89,0}}, +/* 10042 */ {(12<<2)|2,{99,89,0}}, +/* 10043 */ {(12<<2)|2,{99,89,0}}, +/* 10044 */ {(12<<2)|2,{99,89,0}}, +/* 10045 */ {(12<<2)|2,{99,89,0}}, +/* 10046 */ {(12<<2)|2,{99,89,0}}, +/* 10047 */ {(12<<2)|2,{99,89,0}}, +/* 10048 */ {(12<<2)|2,{99,106,0}}, +/* 10049 */ {(12<<2)|2,{99,106,0}}, +/* 10050 */ {(12<<2)|2,{99,106,0}}, +/* 10051 */ {(12<<2)|2,{99,106,0}}, +/* 10052 */ {(12<<2)|2,{99,106,0}}, +/* 10053 */ {(12<<2)|2,{99,106,0}}, +/* 10054 */ {(12<<2)|2,{99,106,0}}, +/* 10055 */ {(12<<2)|2,{99,106,0}}, +/* 10056 */ {(12<<2)|2,{99,106,0}}, +/* 10057 */ {(12<<2)|2,{99,106,0}}, +/* 10058 */ {(12<<2)|2,{99,106,0}}, +/* 10059 */ {(12<<2)|2,{99,106,0}}, +/* 10060 */ {(12<<2)|2,{99,106,0}}, +/* 10061 */ {(12<<2)|2,{99,106,0}}, +/* 10062 */ {(12<<2)|2,{99,106,0}}, +/* 10063 */ {(12<<2)|2,{99,106,0}}, +/* 10064 */ {(12<<2)|2,{99,107,0}}, +/* 10065 */ {(12<<2)|2,{99,107,0}}, +/* 10066 */ {(12<<2)|2,{99,107,0}}, +/* 10067 */ {(12<<2)|2,{99,107,0}}, +/* 10068 */ {(12<<2)|2,{99,107,0}}, +/* 10069 */ {(12<<2)|2,{99,107,0}}, +/* 10070 */ {(12<<2)|2,{99,107,0}}, +/* 10071 */ {(12<<2)|2,{99,107,0}}, +/* 10072 */ {(12<<2)|2,{99,107,0}}, +/* 10073 */ {(12<<2)|2,{99,107,0}}, +/* 10074 */ {(12<<2)|2,{99,107,0}}, +/* 10075 */ {(12<<2)|2,{99,107,0}}, +/* 10076 */ {(12<<2)|2,{99,107,0}}, +/* 10077 */ {(12<<2)|2,{99,107,0}}, +/* 10078 */ {(12<<2)|2,{99,107,0}}, +/* 10079 */ {(12<<2)|2,{99,107,0}}, +/* 10080 */ {(12<<2)|2,{99,113,0}}, +/* 10081 */ {(12<<2)|2,{99,113,0}}, +/* 10082 */ {(12<<2)|2,{99,113,0}}, +/* 10083 */ {(12<<2)|2,{99,113,0}}, +/* 10084 */ {(12<<2)|2,{99,113,0}}, +/* 10085 */ {(12<<2)|2,{99,113,0}}, +/* 10086 */ {(12<<2)|2,{99,113,0}}, +/* 10087 */ {(12<<2)|2,{99,113,0}}, +/* 10088 */ {(12<<2)|2,{99,113,0}}, +/* 10089 */ {(12<<2)|2,{99,113,0}}, +/* 10090 */ {(12<<2)|2,{99,113,0}}, +/* 10091 */ {(12<<2)|2,{99,113,0}}, +/* 10092 */ {(12<<2)|2,{99,113,0}}, +/* 10093 */ {(12<<2)|2,{99,113,0}}, +/* 10094 */ {(12<<2)|2,{99,113,0}}, +/* 10095 */ {(12<<2)|2,{99,113,0}}, +/* 10096 */ {(12<<2)|2,{99,118,0}}, +/* 10097 */ {(12<<2)|2,{99,118,0}}, +/* 10098 */ {(12<<2)|2,{99,118,0}}, +/* 10099 */ {(12<<2)|2,{99,118,0}}, +/* 10100 */ {(12<<2)|2,{99,118,0}}, +/* 10101 */ {(12<<2)|2,{99,118,0}}, +/* 10102 */ {(12<<2)|2,{99,118,0}}, +/* 10103 */ {(12<<2)|2,{99,118,0}}, +/* 10104 */ {(12<<2)|2,{99,118,0}}, +/* 10105 */ {(12<<2)|2,{99,118,0}}, +/* 10106 */ {(12<<2)|2,{99,118,0}}, +/* 10107 */ {(12<<2)|2,{99,118,0}}, +/* 10108 */ {(12<<2)|2,{99,118,0}}, +/* 10109 */ {(12<<2)|2,{99,118,0}}, +/* 10110 */ {(12<<2)|2,{99,118,0}}, +/* 10111 */ {(12<<2)|2,{99,118,0}}, +/* 10112 */ {(12<<2)|2,{99,119,0}}, +/* 10113 */ {(12<<2)|2,{99,119,0}}, +/* 10114 */ {(12<<2)|2,{99,119,0}}, +/* 10115 */ {(12<<2)|2,{99,119,0}}, +/* 10116 */ {(12<<2)|2,{99,119,0}}, +/* 10117 */ {(12<<2)|2,{99,119,0}}, +/* 10118 */ {(12<<2)|2,{99,119,0}}, +/* 10119 */ {(12<<2)|2,{99,119,0}}, +/* 10120 */ {(12<<2)|2,{99,119,0}}, +/* 10121 */ {(12<<2)|2,{99,119,0}}, +/* 10122 */ {(12<<2)|2,{99,119,0}}, +/* 10123 */ {(12<<2)|2,{99,119,0}}, +/* 10124 */ {(12<<2)|2,{99,119,0}}, +/* 10125 */ {(12<<2)|2,{99,119,0}}, +/* 10126 */ {(12<<2)|2,{99,119,0}}, +/* 10127 */ {(12<<2)|2,{99,119,0}}, +/* 10128 */ {(12<<2)|2,{99,120,0}}, +/* 10129 */ {(12<<2)|2,{99,120,0}}, +/* 10130 */ {(12<<2)|2,{99,120,0}}, +/* 10131 */ {(12<<2)|2,{99,120,0}}, +/* 10132 */ {(12<<2)|2,{99,120,0}}, +/* 10133 */ {(12<<2)|2,{99,120,0}}, +/* 10134 */ {(12<<2)|2,{99,120,0}}, +/* 10135 */ {(12<<2)|2,{99,120,0}}, +/* 10136 */ {(12<<2)|2,{99,120,0}}, +/* 10137 */ {(12<<2)|2,{99,120,0}}, +/* 10138 */ {(12<<2)|2,{99,120,0}}, +/* 10139 */ {(12<<2)|2,{99,120,0}}, +/* 10140 */ {(12<<2)|2,{99,120,0}}, +/* 10141 */ {(12<<2)|2,{99,120,0}}, +/* 10142 */ {(12<<2)|2,{99,120,0}}, +/* 10143 */ {(12<<2)|2,{99,120,0}}, +/* 10144 */ {(12<<2)|2,{99,121,0}}, +/* 10145 */ {(12<<2)|2,{99,121,0}}, +/* 10146 */ {(12<<2)|2,{99,121,0}}, +/* 10147 */ {(12<<2)|2,{99,121,0}}, +/* 10148 */ {(12<<2)|2,{99,121,0}}, +/* 10149 */ {(12<<2)|2,{99,121,0}}, +/* 10150 */ {(12<<2)|2,{99,121,0}}, +/* 10151 */ {(12<<2)|2,{99,121,0}}, +/* 10152 */ {(12<<2)|2,{99,121,0}}, +/* 10153 */ {(12<<2)|2,{99,121,0}}, +/* 10154 */ {(12<<2)|2,{99,121,0}}, +/* 10155 */ {(12<<2)|2,{99,121,0}}, +/* 10156 */ {(12<<2)|2,{99,121,0}}, +/* 10157 */ {(12<<2)|2,{99,121,0}}, +/* 10158 */ {(12<<2)|2,{99,121,0}}, +/* 10159 */ {(12<<2)|2,{99,121,0}}, +/* 10160 */ {(12<<2)|2,{99,122,0}}, +/* 10161 */ {(12<<2)|2,{99,122,0}}, +/* 10162 */ {(12<<2)|2,{99,122,0}}, +/* 10163 */ {(12<<2)|2,{99,122,0}}, +/* 10164 */ {(12<<2)|2,{99,122,0}}, +/* 10165 */ {(12<<2)|2,{99,122,0}}, +/* 10166 */ {(12<<2)|2,{99,122,0}}, +/* 10167 */ {(12<<2)|2,{99,122,0}}, +/* 10168 */ {(12<<2)|2,{99,122,0}}, +/* 10169 */ {(12<<2)|2,{99,122,0}}, +/* 10170 */ {(12<<2)|2,{99,122,0}}, +/* 10171 */ {(12<<2)|2,{99,122,0}}, +/* 10172 */ {(12<<2)|2,{99,122,0}}, +/* 10173 */ {(12<<2)|2,{99,122,0}}, +/* 10174 */ {(12<<2)|2,{99,122,0}}, +/* 10175 */ {(12<<2)|2,{99,122,0}}, +/* 10176 */ {(13<<2)|2,{99,38,0}}, +/* 10177 */ {(13<<2)|2,{99,38,0}}, +/* 10178 */ {(13<<2)|2,{99,38,0}}, +/* 10179 */ {(13<<2)|2,{99,38,0}}, +/* 10180 */ {(13<<2)|2,{99,38,0}}, +/* 10181 */ {(13<<2)|2,{99,38,0}}, +/* 10182 */ {(13<<2)|2,{99,38,0}}, +/* 10183 */ {(13<<2)|2,{99,38,0}}, +/* 10184 */ {(13<<2)|2,{99,42,0}}, +/* 10185 */ {(13<<2)|2,{99,42,0}}, +/* 10186 */ {(13<<2)|2,{99,42,0}}, +/* 10187 */ {(13<<2)|2,{99,42,0}}, +/* 10188 */ {(13<<2)|2,{99,42,0}}, +/* 10189 */ {(13<<2)|2,{99,42,0}}, +/* 10190 */ {(13<<2)|2,{99,42,0}}, +/* 10191 */ {(13<<2)|2,{99,42,0}}, +/* 10192 */ {(13<<2)|2,{99,44,0}}, +/* 10193 */ {(13<<2)|2,{99,44,0}}, +/* 10194 */ {(13<<2)|2,{99,44,0}}, +/* 10195 */ {(13<<2)|2,{99,44,0}}, +/* 10196 */ {(13<<2)|2,{99,44,0}}, +/* 10197 */ {(13<<2)|2,{99,44,0}}, +/* 10198 */ {(13<<2)|2,{99,44,0}}, +/* 10199 */ {(13<<2)|2,{99,44,0}}, +/* 10200 */ {(13<<2)|2,{99,59,0}}, +/* 10201 */ {(13<<2)|2,{99,59,0}}, +/* 10202 */ {(13<<2)|2,{99,59,0}}, +/* 10203 */ {(13<<2)|2,{99,59,0}}, +/* 10204 */ {(13<<2)|2,{99,59,0}}, +/* 10205 */ {(13<<2)|2,{99,59,0}}, +/* 10206 */ {(13<<2)|2,{99,59,0}}, +/* 10207 */ {(13<<2)|2,{99,59,0}}, +/* 10208 */ {(13<<2)|2,{99,88,0}}, +/* 10209 */ {(13<<2)|2,{99,88,0}}, +/* 10210 */ {(13<<2)|2,{99,88,0}}, +/* 10211 */ {(13<<2)|2,{99,88,0}}, +/* 10212 */ {(13<<2)|2,{99,88,0}}, +/* 10213 */ {(13<<2)|2,{99,88,0}}, +/* 10214 */ {(13<<2)|2,{99,88,0}}, +/* 10215 */ {(13<<2)|2,{99,88,0}}, +/* 10216 */ {(13<<2)|2,{99,90,0}}, +/* 10217 */ {(13<<2)|2,{99,90,0}}, +/* 10218 */ {(13<<2)|2,{99,90,0}}, +/* 10219 */ {(13<<2)|2,{99,90,0}}, +/* 10220 */ {(13<<2)|2,{99,90,0}}, +/* 10221 */ {(13<<2)|2,{99,90,0}}, +/* 10222 */ {(13<<2)|2,{99,90,0}}, +/* 10223 */ {(13<<2)|2,{99,90,0}}, +/* 10224 */ {(15<<2)|2,{99,33,0}}, +/* 10225 */ {(15<<2)|2,{99,33,0}}, +/* 10226 */ {(15<<2)|2,{99,34,0}}, +/* 10227 */ {(15<<2)|2,{99,34,0}}, +/* 10228 */ {(15<<2)|2,{99,40,0}}, +/* 10229 */ {(15<<2)|2,{99,40,0}}, +/* 10230 */ {(15<<2)|2,{99,41,0}}, +/* 10231 */ {(15<<2)|2,{99,41,0}}, +/* 10232 */ {(15<<2)|2,{99,63,0}}, +/* 10233 */ {(15<<2)|2,{99,63,0}}, +/* 10234 */ {(16<<2)|2,{99,39,0}}, +/* 10235 */ {(16<<2)|2,{99,43,0}}, +/* 10236 */ {(16<<2)|2,{99,124,0}}, +/* 10237 */ {(5<<2)|1,{99,0,0}}, +/* 10238 */ {(5<<2)|1,{99,0,0}}, +/* 10239 */ {(5<<2)|1,{99,0,0}}, +/* 10240 */ {(15<<2)|3,{101,48,48}}, +/* 10241 */ {(15<<2)|3,{101,48,48}}, +/* 10242 */ {(15<<2)|3,{101,48,49}}, +/* 10243 */ {(15<<2)|3,{101,48,49}}, +/* 10244 */ {(15<<2)|3,{101,48,50}}, +/* 10245 */ {(15<<2)|3,{101,48,50}}, +/* 10246 */ {(15<<2)|3,{101,48,97}}, +/* 10247 */ {(15<<2)|3,{101,48,97}}, +/* 10248 */ {(15<<2)|3,{101,48,99}}, +/* 10249 */ {(15<<2)|3,{101,48,99}}, +/* 10250 */ {(15<<2)|3,{101,48,101}}, +/* 10251 */ {(15<<2)|3,{101,48,101}}, +/* 10252 */ {(15<<2)|3,{101,48,105}}, +/* 10253 */ {(15<<2)|3,{101,48,105}}, +/* 10254 */ {(15<<2)|3,{101,48,111}}, +/* 10255 */ {(15<<2)|3,{101,48,111}}, +/* 10256 */ {(15<<2)|3,{101,48,115}}, +/* 10257 */ {(15<<2)|3,{101,48,115}}, +/* 10258 */ {(15<<2)|3,{101,48,116}}, +/* 10259 */ {(15<<2)|3,{101,48,116}}, +/* 10260 */ {(16<<2)|3,{101,48,32}}, +/* 10261 */ {(16<<2)|3,{101,48,37}}, +/* 10262 */ {(16<<2)|3,{101,48,45}}, +/* 10263 */ {(16<<2)|3,{101,48,46}}, +/* 10264 */ {(16<<2)|3,{101,48,47}}, +/* 10265 */ {(16<<2)|3,{101,48,51}}, +/* 10266 */ {(16<<2)|3,{101,48,52}}, +/* 10267 */ {(16<<2)|3,{101,48,53}}, +/* 10268 */ {(16<<2)|3,{101,48,54}}, +/* 10269 */ {(16<<2)|3,{101,48,55}}, +/* 10270 */ {(16<<2)|3,{101,48,56}}, +/* 10271 */ {(16<<2)|3,{101,48,57}}, +/* 10272 */ {(16<<2)|3,{101,48,61}}, +/* 10273 */ {(16<<2)|3,{101,48,65}}, +/* 10274 */ {(16<<2)|3,{101,48,95}}, +/* 10275 */ {(16<<2)|3,{101,48,98}}, +/* 10276 */ {(16<<2)|3,{101,48,100}}, +/* 10277 */ {(16<<2)|3,{101,48,102}}, +/* 10278 */ {(16<<2)|3,{101,48,103}}, +/* 10279 */ {(16<<2)|3,{101,48,104}}, +/* 10280 */ {(16<<2)|3,{101,48,108}}, +/* 10281 */ {(16<<2)|3,{101,48,109}}, +/* 10282 */ {(16<<2)|3,{101,48,110}}, +/* 10283 */ {(16<<2)|3,{101,48,112}}, +/* 10284 */ {(16<<2)|3,{101,48,114}}, +/* 10285 */ {(16<<2)|3,{101,48,117}}, +/* 10286 */ {(10<<2)|2,{101,48,0}}, +/* 10287 */ {(10<<2)|2,{101,48,0}}, +/* 10288 */ {(10<<2)|2,{101,48,0}}, +/* 10289 */ {(10<<2)|2,{101,48,0}}, +/* 10290 */ {(10<<2)|2,{101,48,0}}, +/* 10291 */ {(10<<2)|2,{101,48,0}}, +/* 10292 */ {(10<<2)|2,{101,48,0}}, +/* 10293 */ {(10<<2)|2,{101,48,0}}, +/* 10294 */ {(10<<2)|2,{101,48,0}}, +/* 10295 */ {(10<<2)|2,{101,48,0}}, +/* 10296 */ {(10<<2)|2,{101,48,0}}, +/* 10297 */ {(10<<2)|2,{101,48,0}}, +/* 10298 */ {(10<<2)|2,{101,48,0}}, +/* 10299 */ {(10<<2)|2,{101,48,0}}, +/* 10300 */ {(10<<2)|2,{101,48,0}}, +/* 10301 */ {(10<<2)|2,{101,48,0}}, +/* 10302 */ {(10<<2)|2,{101,48,0}}, +/* 10303 */ {(10<<2)|2,{101,48,0}}, +/* 10304 */ {(15<<2)|3,{101,49,48}}, +/* 10305 */ {(15<<2)|3,{101,49,48}}, +/* 10306 */ {(15<<2)|3,{101,49,49}}, +/* 10307 */ {(15<<2)|3,{101,49,49}}, +/* 10308 */ {(15<<2)|3,{101,49,50}}, +/* 10309 */ {(15<<2)|3,{101,49,50}}, +/* 10310 */ {(15<<2)|3,{101,49,97}}, +/* 10311 */ {(15<<2)|3,{101,49,97}}, +/* 10312 */ {(15<<2)|3,{101,49,99}}, +/* 10313 */ {(15<<2)|3,{101,49,99}}, +/* 10314 */ {(15<<2)|3,{101,49,101}}, +/* 10315 */ {(15<<2)|3,{101,49,101}}, +/* 10316 */ {(15<<2)|3,{101,49,105}}, +/* 10317 */ {(15<<2)|3,{101,49,105}}, +/* 10318 */ {(15<<2)|3,{101,49,111}}, +/* 10319 */ {(15<<2)|3,{101,49,111}}, +/* 10320 */ {(15<<2)|3,{101,49,115}}, +/* 10321 */ {(15<<2)|3,{101,49,115}}, +/* 10322 */ {(15<<2)|3,{101,49,116}}, +/* 10323 */ {(15<<2)|3,{101,49,116}}, +/* 10324 */ {(16<<2)|3,{101,49,32}}, +/* 10325 */ {(16<<2)|3,{101,49,37}}, +/* 10326 */ {(16<<2)|3,{101,49,45}}, +/* 10327 */ {(16<<2)|3,{101,49,46}}, +/* 10328 */ {(16<<2)|3,{101,49,47}}, +/* 10329 */ {(16<<2)|3,{101,49,51}}, +/* 10330 */ {(16<<2)|3,{101,49,52}}, +/* 10331 */ {(16<<2)|3,{101,49,53}}, +/* 10332 */ {(16<<2)|3,{101,49,54}}, +/* 10333 */ {(16<<2)|3,{101,49,55}}, +/* 10334 */ {(16<<2)|3,{101,49,56}}, +/* 10335 */ {(16<<2)|3,{101,49,57}}, +/* 10336 */ {(16<<2)|3,{101,49,61}}, +/* 10337 */ {(16<<2)|3,{101,49,65}}, +/* 10338 */ {(16<<2)|3,{101,49,95}}, +/* 10339 */ {(16<<2)|3,{101,49,98}}, +/* 10340 */ {(16<<2)|3,{101,49,100}}, +/* 10341 */ {(16<<2)|3,{101,49,102}}, +/* 10342 */ {(16<<2)|3,{101,49,103}}, +/* 10343 */ {(16<<2)|3,{101,49,104}}, +/* 10344 */ {(16<<2)|3,{101,49,108}}, +/* 10345 */ {(16<<2)|3,{101,49,109}}, +/* 10346 */ {(16<<2)|3,{101,49,110}}, +/* 10347 */ {(16<<2)|3,{101,49,112}}, +/* 10348 */ {(16<<2)|3,{101,49,114}}, +/* 10349 */ {(16<<2)|3,{101,49,117}}, +/* 10350 */ {(10<<2)|2,{101,49,0}}, +/* 10351 */ {(10<<2)|2,{101,49,0}}, +/* 10352 */ {(10<<2)|2,{101,49,0}}, +/* 10353 */ {(10<<2)|2,{101,49,0}}, +/* 10354 */ {(10<<2)|2,{101,49,0}}, +/* 10355 */ {(10<<2)|2,{101,49,0}}, +/* 10356 */ {(10<<2)|2,{101,49,0}}, +/* 10357 */ {(10<<2)|2,{101,49,0}}, +/* 10358 */ {(10<<2)|2,{101,49,0}}, +/* 10359 */ {(10<<2)|2,{101,49,0}}, +/* 10360 */ {(10<<2)|2,{101,49,0}}, +/* 10361 */ {(10<<2)|2,{101,49,0}}, +/* 10362 */ {(10<<2)|2,{101,49,0}}, +/* 10363 */ {(10<<2)|2,{101,49,0}}, +/* 10364 */ {(10<<2)|2,{101,49,0}}, +/* 10365 */ {(10<<2)|2,{101,49,0}}, +/* 10366 */ {(10<<2)|2,{101,49,0}}, +/* 10367 */ {(10<<2)|2,{101,49,0}}, +/* 10368 */ {(15<<2)|3,{101,50,48}}, +/* 10369 */ {(15<<2)|3,{101,50,48}}, +/* 10370 */ {(15<<2)|3,{101,50,49}}, +/* 10371 */ {(15<<2)|3,{101,50,49}}, +/* 10372 */ {(15<<2)|3,{101,50,50}}, +/* 10373 */ {(15<<2)|3,{101,50,50}}, +/* 10374 */ {(15<<2)|3,{101,50,97}}, +/* 10375 */ {(15<<2)|3,{101,50,97}}, +/* 10376 */ {(15<<2)|3,{101,50,99}}, +/* 10377 */ {(15<<2)|3,{101,50,99}}, +/* 10378 */ {(15<<2)|3,{101,50,101}}, +/* 10379 */ {(15<<2)|3,{101,50,101}}, +/* 10380 */ {(15<<2)|3,{101,50,105}}, +/* 10381 */ {(15<<2)|3,{101,50,105}}, +/* 10382 */ {(15<<2)|3,{101,50,111}}, +/* 10383 */ {(15<<2)|3,{101,50,111}}, +/* 10384 */ {(15<<2)|3,{101,50,115}}, +/* 10385 */ {(15<<2)|3,{101,50,115}}, +/* 10386 */ {(15<<2)|3,{101,50,116}}, +/* 10387 */ {(15<<2)|3,{101,50,116}}, +/* 10388 */ {(16<<2)|3,{101,50,32}}, +/* 10389 */ {(16<<2)|3,{101,50,37}}, +/* 10390 */ {(16<<2)|3,{101,50,45}}, +/* 10391 */ {(16<<2)|3,{101,50,46}}, +/* 10392 */ {(16<<2)|3,{101,50,47}}, +/* 10393 */ {(16<<2)|3,{101,50,51}}, +/* 10394 */ {(16<<2)|3,{101,50,52}}, +/* 10395 */ {(16<<2)|3,{101,50,53}}, +/* 10396 */ {(16<<2)|3,{101,50,54}}, +/* 10397 */ {(16<<2)|3,{101,50,55}}, +/* 10398 */ {(16<<2)|3,{101,50,56}}, +/* 10399 */ {(16<<2)|3,{101,50,57}}, +/* 10400 */ {(16<<2)|3,{101,50,61}}, +/* 10401 */ {(16<<2)|3,{101,50,65}}, +/* 10402 */ {(16<<2)|3,{101,50,95}}, +/* 10403 */ {(16<<2)|3,{101,50,98}}, +/* 10404 */ {(16<<2)|3,{101,50,100}}, +/* 10405 */ {(16<<2)|3,{101,50,102}}, +/* 10406 */ {(16<<2)|3,{101,50,103}}, +/* 10407 */ {(16<<2)|3,{101,50,104}}, +/* 10408 */ {(16<<2)|3,{101,50,108}}, +/* 10409 */ {(16<<2)|3,{101,50,109}}, +/* 10410 */ {(16<<2)|3,{101,50,110}}, +/* 10411 */ {(16<<2)|3,{101,50,112}}, +/* 10412 */ {(16<<2)|3,{101,50,114}}, +/* 10413 */ {(16<<2)|3,{101,50,117}}, +/* 10414 */ {(10<<2)|2,{101,50,0}}, +/* 10415 */ {(10<<2)|2,{101,50,0}}, +/* 10416 */ {(10<<2)|2,{101,50,0}}, +/* 10417 */ {(10<<2)|2,{101,50,0}}, +/* 10418 */ {(10<<2)|2,{101,50,0}}, +/* 10419 */ {(10<<2)|2,{101,50,0}}, +/* 10420 */ {(10<<2)|2,{101,50,0}}, +/* 10421 */ {(10<<2)|2,{101,50,0}}, +/* 10422 */ {(10<<2)|2,{101,50,0}}, +/* 10423 */ {(10<<2)|2,{101,50,0}}, +/* 10424 */ {(10<<2)|2,{101,50,0}}, +/* 10425 */ {(10<<2)|2,{101,50,0}}, +/* 10426 */ {(10<<2)|2,{101,50,0}}, +/* 10427 */ {(10<<2)|2,{101,50,0}}, +/* 10428 */ {(10<<2)|2,{101,50,0}}, +/* 10429 */ {(10<<2)|2,{101,50,0}}, +/* 10430 */ {(10<<2)|2,{101,50,0}}, +/* 10431 */ {(10<<2)|2,{101,50,0}}, +/* 10432 */ {(15<<2)|3,{101,97,48}}, +/* 10433 */ {(15<<2)|3,{101,97,48}}, +/* 10434 */ {(15<<2)|3,{101,97,49}}, +/* 10435 */ {(15<<2)|3,{101,97,49}}, +/* 10436 */ {(15<<2)|3,{101,97,50}}, +/* 10437 */ {(15<<2)|3,{101,97,50}}, +/* 10438 */ {(15<<2)|3,{101,97,97}}, +/* 10439 */ {(15<<2)|3,{101,97,97}}, +/* 10440 */ {(15<<2)|3,{101,97,99}}, +/* 10441 */ {(15<<2)|3,{101,97,99}}, +/* 10442 */ {(15<<2)|3,{101,97,101}}, +/* 10443 */ {(15<<2)|3,{101,97,101}}, +/* 10444 */ {(15<<2)|3,{101,97,105}}, +/* 10445 */ {(15<<2)|3,{101,97,105}}, +/* 10446 */ {(15<<2)|3,{101,97,111}}, +/* 10447 */ {(15<<2)|3,{101,97,111}}, +/* 10448 */ {(15<<2)|3,{101,97,115}}, +/* 10449 */ {(15<<2)|3,{101,97,115}}, +/* 10450 */ {(15<<2)|3,{101,97,116}}, +/* 10451 */ {(15<<2)|3,{101,97,116}}, +/* 10452 */ {(16<<2)|3,{101,97,32}}, +/* 10453 */ {(16<<2)|3,{101,97,37}}, +/* 10454 */ {(16<<2)|3,{101,97,45}}, +/* 10455 */ {(16<<2)|3,{101,97,46}}, +/* 10456 */ {(16<<2)|3,{101,97,47}}, +/* 10457 */ {(16<<2)|3,{101,97,51}}, +/* 10458 */ {(16<<2)|3,{101,97,52}}, +/* 10459 */ {(16<<2)|3,{101,97,53}}, +/* 10460 */ {(16<<2)|3,{101,97,54}}, +/* 10461 */ {(16<<2)|3,{101,97,55}}, +/* 10462 */ {(16<<2)|3,{101,97,56}}, +/* 10463 */ {(16<<2)|3,{101,97,57}}, +/* 10464 */ {(16<<2)|3,{101,97,61}}, +/* 10465 */ {(16<<2)|3,{101,97,65}}, +/* 10466 */ {(16<<2)|3,{101,97,95}}, +/* 10467 */ {(16<<2)|3,{101,97,98}}, +/* 10468 */ {(16<<2)|3,{101,97,100}}, +/* 10469 */ {(16<<2)|3,{101,97,102}}, +/* 10470 */ {(16<<2)|3,{101,97,103}}, +/* 10471 */ {(16<<2)|3,{101,97,104}}, +/* 10472 */ {(16<<2)|3,{101,97,108}}, +/* 10473 */ {(16<<2)|3,{101,97,109}}, +/* 10474 */ {(16<<2)|3,{101,97,110}}, +/* 10475 */ {(16<<2)|3,{101,97,112}}, +/* 10476 */ {(16<<2)|3,{101,97,114}}, +/* 10477 */ {(16<<2)|3,{101,97,117}}, +/* 10478 */ {(10<<2)|2,{101,97,0}}, +/* 10479 */ {(10<<2)|2,{101,97,0}}, +/* 10480 */ {(10<<2)|2,{101,97,0}}, +/* 10481 */ {(10<<2)|2,{101,97,0}}, +/* 10482 */ {(10<<2)|2,{101,97,0}}, +/* 10483 */ {(10<<2)|2,{101,97,0}}, +/* 10484 */ {(10<<2)|2,{101,97,0}}, +/* 10485 */ {(10<<2)|2,{101,97,0}}, +/* 10486 */ {(10<<2)|2,{101,97,0}}, +/* 10487 */ {(10<<2)|2,{101,97,0}}, +/* 10488 */ {(10<<2)|2,{101,97,0}}, +/* 10489 */ {(10<<2)|2,{101,97,0}}, +/* 10490 */ {(10<<2)|2,{101,97,0}}, +/* 10491 */ {(10<<2)|2,{101,97,0}}, +/* 10492 */ {(10<<2)|2,{101,97,0}}, +/* 10493 */ {(10<<2)|2,{101,97,0}}, +/* 10494 */ {(10<<2)|2,{101,97,0}}, +/* 10495 */ {(10<<2)|2,{101,97,0}}, +/* 10496 */ {(15<<2)|3,{101,99,48}}, +/* 10497 */ {(15<<2)|3,{101,99,48}}, +/* 10498 */ {(15<<2)|3,{101,99,49}}, +/* 10499 */ {(15<<2)|3,{101,99,49}}, +/* 10500 */ {(15<<2)|3,{101,99,50}}, +/* 10501 */ {(15<<2)|3,{101,99,50}}, +/* 10502 */ {(15<<2)|3,{101,99,97}}, +/* 10503 */ {(15<<2)|3,{101,99,97}}, +/* 10504 */ {(15<<2)|3,{101,99,99}}, +/* 10505 */ {(15<<2)|3,{101,99,99}}, +/* 10506 */ {(15<<2)|3,{101,99,101}}, +/* 10507 */ {(15<<2)|3,{101,99,101}}, +/* 10508 */ {(15<<2)|3,{101,99,105}}, +/* 10509 */ {(15<<2)|3,{101,99,105}}, +/* 10510 */ {(15<<2)|3,{101,99,111}}, +/* 10511 */ {(15<<2)|3,{101,99,111}}, +/* 10512 */ {(15<<2)|3,{101,99,115}}, +/* 10513 */ {(15<<2)|3,{101,99,115}}, +/* 10514 */ {(15<<2)|3,{101,99,116}}, +/* 10515 */ {(15<<2)|3,{101,99,116}}, +/* 10516 */ {(16<<2)|3,{101,99,32}}, +/* 10517 */ {(16<<2)|3,{101,99,37}}, +/* 10518 */ {(16<<2)|3,{101,99,45}}, +/* 10519 */ {(16<<2)|3,{101,99,46}}, +/* 10520 */ {(16<<2)|3,{101,99,47}}, +/* 10521 */ {(16<<2)|3,{101,99,51}}, +/* 10522 */ {(16<<2)|3,{101,99,52}}, +/* 10523 */ {(16<<2)|3,{101,99,53}}, +/* 10524 */ {(16<<2)|3,{101,99,54}}, +/* 10525 */ {(16<<2)|3,{101,99,55}}, +/* 10526 */ {(16<<2)|3,{101,99,56}}, +/* 10527 */ {(16<<2)|3,{101,99,57}}, +/* 10528 */ {(16<<2)|3,{101,99,61}}, +/* 10529 */ {(16<<2)|3,{101,99,65}}, +/* 10530 */ {(16<<2)|3,{101,99,95}}, +/* 10531 */ {(16<<2)|3,{101,99,98}}, +/* 10532 */ {(16<<2)|3,{101,99,100}}, +/* 10533 */ {(16<<2)|3,{101,99,102}}, +/* 10534 */ {(16<<2)|3,{101,99,103}}, +/* 10535 */ {(16<<2)|3,{101,99,104}}, +/* 10536 */ {(16<<2)|3,{101,99,108}}, +/* 10537 */ {(16<<2)|3,{101,99,109}}, +/* 10538 */ {(16<<2)|3,{101,99,110}}, +/* 10539 */ {(16<<2)|3,{101,99,112}}, +/* 10540 */ {(16<<2)|3,{101,99,114}}, +/* 10541 */ {(16<<2)|3,{101,99,117}}, +/* 10542 */ {(10<<2)|2,{101,99,0}}, +/* 10543 */ {(10<<2)|2,{101,99,0}}, +/* 10544 */ {(10<<2)|2,{101,99,0}}, +/* 10545 */ {(10<<2)|2,{101,99,0}}, +/* 10546 */ {(10<<2)|2,{101,99,0}}, +/* 10547 */ {(10<<2)|2,{101,99,0}}, +/* 10548 */ {(10<<2)|2,{101,99,0}}, +/* 10549 */ {(10<<2)|2,{101,99,0}}, +/* 10550 */ {(10<<2)|2,{101,99,0}}, +/* 10551 */ {(10<<2)|2,{101,99,0}}, +/* 10552 */ {(10<<2)|2,{101,99,0}}, +/* 10553 */ {(10<<2)|2,{101,99,0}}, +/* 10554 */ {(10<<2)|2,{101,99,0}}, +/* 10555 */ {(10<<2)|2,{101,99,0}}, +/* 10556 */ {(10<<2)|2,{101,99,0}}, +/* 10557 */ {(10<<2)|2,{101,99,0}}, +/* 10558 */ {(10<<2)|2,{101,99,0}}, +/* 10559 */ {(10<<2)|2,{101,99,0}}, +/* 10560 */ {(15<<2)|3,{101,101,48}}, +/* 10561 */ {(15<<2)|3,{101,101,48}}, +/* 10562 */ {(15<<2)|3,{101,101,49}}, +/* 10563 */ {(15<<2)|3,{101,101,49}}, +/* 10564 */ {(15<<2)|3,{101,101,50}}, +/* 10565 */ {(15<<2)|3,{101,101,50}}, +/* 10566 */ {(15<<2)|3,{101,101,97}}, +/* 10567 */ {(15<<2)|3,{101,101,97}}, +/* 10568 */ {(15<<2)|3,{101,101,99}}, +/* 10569 */ {(15<<2)|3,{101,101,99}}, +/* 10570 */ {(15<<2)|3,{101,101,101}}, +/* 10571 */ {(15<<2)|3,{101,101,101}}, +/* 10572 */ {(15<<2)|3,{101,101,105}}, +/* 10573 */ {(15<<2)|3,{101,101,105}}, +/* 10574 */ {(15<<2)|3,{101,101,111}}, +/* 10575 */ {(15<<2)|3,{101,101,111}}, +/* 10576 */ {(15<<2)|3,{101,101,115}}, +/* 10577 */ {(15<<2)|3,{101,101,115}}, +/* 10578 */ {(15<<2)|3,{101,101,116}}, +/* 10579 */ {(15<<2)|3,{101,101,116}}, +/* 10580 */ {(16<<2)|3,{101,101,32}}, +/* 10581 */ {(16<<2)|3,{101,101,37}}, +/* 10582 */ {(16<<2)|3,{101,101,45}}, +/* 10583 */ {(16<<2)|3,{101,101,46}}, +/* 10584 */ {(16<<2)|3,{101,101,47}}, +/* 10585 */ {(16<<2)|3,{101,101,51}}, +/* 10586 */ {(16<<2)|3,{101,101,52}}, +/* 10587 */ {(16<<2)|3,{101,101,53}}, +/* 10588 */ {(16<<2)|3,{101,101,54}}, +/* 10589 */ {(16<<2)|3,{101,101,55}}, +/* 10590 */ {(16<<2)|3,{101,101,56}}, +/* 10591 */ {(16<<2)|3,{101,101,57}}, +/* 10592 */ {(16<<2)|3,{101,101,61}}, +/* 10593 */ {(16<<2)|3,{101,101,65}}, +/* 10594 */ {(16<<2)|3,{101,101,95}}, +/* 10595 */ {(16<<2)|3,{101,101,98}}, +/* 10596 */ {(16<<2)|3,{101,101,100}}, +/* 10597 */ {(16<<2)|3,{101,101,102}}, +/* 10598 */ {(16<<2)|3,{101,101,103}}, +/* 10599 */ {(16<<2)|3,{101,101,104}}, +/* 10600 */ {(16<<2)|3,{101,101,108}}, +/* 10601 */ {(16<<2)|3,{101,101,109}}, +/* 10602 */ {(16<<2)|3,{101,101,110}}, +/* 10603 */ {(16<<2)|3,{101,101,112}}, +/* 10604 */ {(16<<2)|3,{101,101,114}}, +/* 10605 */ {(16<<2)|3,{101,101,117}}, +/* 10606 */ {(10<<2)|2,{101,101,0}}, +/* 10607 */ {(10<<2)|2,{101,101,0}}, +/* 10608 */ {(10<<2)|2,{101,101,0}}, +/* 10609 */ {(10<<2)|2,{101,101,0}}, +/* 10610 */ {(10<<2)|2,{101,101,0}}, +/* 10611 */ {(10<<2)|2,{101,101,0}}, +/* 10612 */ {(10<<2)|2,{101,101,0}}, +/* 10613 */ {(10<<2)|2,{101,101,0}}, +/* 10614 */ {(10<<2)|2,{101,101,0}}, +/* 10615 */ {(10<<2)|2,{101,101,0}}, +/* 10616 */ {(10<<2)|2,{101,101,0}}, +/* 10617 */ {(10<<2)|2,{101,101,0}}, +/* 10618 */ {(10<<2)|2,{101,101,0}}, +/* 10619 */ {(10<<2)|2,{101,101,0}}, +/* 10620 */ {(10<<2)|2,{101,101,0}}, +/* 10621 */ {(10<<2)|2,{101,101,0}}, +/* 10622 */ {(10<<2)|2,{101,101,0}}, +/* 10623 */ {(10<<2)|2,{101,101,0}}, +/* 10624 */ {(15<<2)|3,{101,105,48}}, +/* 10625 */ {(15<<2)|3,{101,105,48}}, +/* 10626 */ {(15<<2)|3,{101,105,49}}, +/* 10627 */ {(15<<2)|3,{101,105,49}}, +/* 10628 */ {(15<<2)|3,{101,105,50}}, +/* 10629 */ {(15<<2)|3,{101,105,50}}, +/* 10630 */ {(15<<2)|3,{101,105,97}}, +/* 10631 */ {(15<<2)|3,{101,105,97}}, +/* 10632 */ {(15<<2)|3,{101,105,99}}, +/* 10633 */ {(15<<2)|3,{101,105,99}}, +/* 10634 */ {(15<<2)|3,{101,105,101}}, +/* 10635 */ {(15<<2)|3,{101,105,101}}, +/* 10636 */ {(15<<2)|3,{101,105,105}}, +/* 10637 */ {(15<<2)|3,{101,105,105}}, +/* 10638 */ {(15<<2)|3,{101,105,111}}, +/* 10639 */ {(15<<2)|3,{101,105,111}}, +/* 10640 */ {(15<<2)|3,{101,105,115}}, +/* 10641 */ {(15<<2)|3,{101,105,115}}, +/* 10642 */ {(15<<2)|3,{101,105,116}}, +/* 10643 */ {(15<<2)|3,{101,105,116}}, +/* 10644 */ {(16<<2)|3,{101,105,32}}, +/* 10645 */ {(16<<2)|3,{101,105,37}}, +/* 10646 */ {(16<<2)|3,{101,105,45}}, +/* 10647 */ {(16<<2)|3,{101,105,46}}, +/* 10648 */ {(16<<2)|3,{101,105,47}}, +/* 10649 */ {(16<<2)|3,{101,105,51}}, +/* 10650 */ {(16<<2)|3,{101,105,52}}, +/* 10651 */ {(16<<2)|3,{101,105,53}}, +/* 10652 */ {(16<<2)|3,{101,105,54}}, +/* 10653 */ {(16<<2)|3,{101,105,55}}, +/* 10654 */ {(16<<2)|3,{101,105,56}}, +/* 10655 */ {(16<<2)|3,{101,105,57}}, +/* 10656 */ {(16<<2)|3,{101,105,61}}, +/* 10657 */ {(16<<2)|3,{101,105,65}}, +/* 10658 */ {(16<<2)|3,{101,105,95}}, +/* 10659 */ {(16<<2)|3,{101,105,98}}, +/* 10660 */ {(16<<2)|3,{101,105,100}}, +/* 10661 */ {(16<<2)|3,{101,105,102}}, +/* 10662 */ {(16<<2)|3,{101,105,103}}, +/* 10663 */ {(16<<2)|3,{101,105,104}}, +/* 10664 */ {(16<<2)|3,{101,105,108}}, +/* 10665 */ {(16<<2)|3,{101,105,109}}, +/* 10666 */ {(16<<2)|3,{101,105,110}}, +/* 10667 */ {(16<<2)|3,{101,105,112}}, +/* 10668 */ {(16<<2)|3,{101,105,114}}, +/* 10669 */ {(16<<2)|3,{101,105,117}}, +/* 10670 */ {(10<<2)|2,{101,105,0}}, +/* 10671 */ {(10<<2)|2,{101,105,0}}, +/* 10672 */ {(10<<2)|2,{101,105,0}}, +/* 10673 */ {(10<<2)|2,{101,105,0}}, +/* 10674 */ {(10<<2)|2,{101,105,0}}, +/* 10675 */ {(10<<2)|2,{101,105,0}}, +/* 10676 */ {(10<<2)|2,{101,105,0}}, +/* 10677 */ {(10<<2)|2,{101,105,0}}, +/* 10678 */ {(10<<2)|2,{101,105,0}}, +/* 10679 */ {(10<<2)|2,{101,105,0}}, +/* 10680 */ {(10<<2)|2,{101,105,0}}, +/* 10681 */ {(10<<2)|2,{101,105,0}}, +/* 10682 */ {(10<<2)|2,{101,105,0}}, +/* 10683 */ {(10<<2)|2,{101,105,0}}, +/* 10684 */ {(10<<2)|2,{101,105,0}}, +/* 10685 */ {(10<<2)|2,{101,105,0}}, +/* 10686 */ {(10<<2)|2,{101,105,0}}, +/* 10687 */ {(10<<2)|2,{101,105,0}}, +/* 10688 */ {(15<<2)|3,{101,111,48}}, +/* 10689 */ {(15<<2)|3,{101,111,48}}, +/* 10690 */ {(15<<2)|3,{101,111,49}}, +/* 10691 */ {(15<<2)|3,{101,111,49}}, +/* 10692 */ {(15<<2)|3,{101,111,50}}, +/* 10693 */ {(15<<2)|3,{101,111,50}}, +/* 10694 */ {(15<<2)|3,{101,111,97}}, +/* 10695 */ {(15<<2)|3,{101,111,97}}, +/* 10696 */ {(15<<2)|3,{101,111,99}}, +/* 10697 */ {(15<<2)|3,{101,111,99}}, +/* 10698 */ {(15<<2)|3,{101,111,101}}, +/* 10699 */ {(15<<2)|3,{101,111,101}}, +/* 10700 */ {(15<<2)|3,{101,111,105}}, +/* 10701 */ {(15<<2)|3,{101,111,105}}, +/* 10702 */ {(15<<2)|3,{101,111,111}}, +/* 10703 */ {(15<<2)|3,{101,111,111}}, +/* 10704 */ {(15<<2)|3,{101,111,115}}, +/* 10705 */ {(15<<2)|3,{101,111,115}}, +/* 10706 */ {(15<<2)|3,{101,111,116}}, +/* 10707 */ {(15<<2)|3,{101,111,116}}, +/* 10708 */ {(16<<2)|3,{101,111,32}}, +/* 10709 */ {(16<<2)|3,{101,111,37}}, +/* 10710 */ {(16<<2)|3,{101,111,45}}, +/* 10711 */ {(16<<2)|3,{101,111,46}}, +/* 10712 */ {(16<<2)|3,{101,111,47}}, +/* 10713 */ {(16<<2)|3,{101,111,51}}, +/* 10714 */ {(16<<2)|3,{101,111,52}}, +/* 10715 */ {(16<<2)|3,{101,111,53}}, +/* 10716 */ {(16<<2)|3,{101,111,54}}, +/* 10717 */ {(16<<2)|3,{101,111,55}}, +/* 10718 */ {(16<<2)|3,{101,111,56}}, +/* 10719 */ {(16<<2)|3,{101,111,57}}, +/* 10720 */ {(16<<2)|3,{101,111,61}}, +/* 10721 */ {(16<<2)|3,{101,111,65}}, +/* 10722 */ {(16<<2)|3,{101,111,95}}, +/* 10723 */ {(16<<2)|3,{101,111,98}}, +/* 10724 */ {(16<<2)|3,{101,111,100}}, +/* 10725 */ {(16<<2)|3,{101,111,102}}, +/* 10726 */ {(16<<2)|3,{101,111,103}}, +/* 10727 */ {(16<<2)|3,{101,111,104}}, +/* 10728 */ {(16<<2)|3,{101,111,108}}, +/* 10729 */ {(16<<2)|3,{101,111,109}}, +/* 10730 */ {(16<<2)|3,{101,111,110}}, +/* 10731 */ {(16<<2)|3,{101,111,112}}, +/* 10732 */ {(16<<2)|3,{101,111,114}}, +/* 10733 */ {(16<<2)|3,{101,111,117}}, +/* 10734 */ {(10<<2)|2,{101,111,0}}, +/* 10735 */ {(10<<2)|2,{101,111,0}}, +/* 10736 */ {(10<<2)|2,{101,111,0}}, +/* 10737 */ {(10<<2)|2,{101,111,0}}, +/* 10738 */ {(10<<2)|2,{101,111,0}}, +/* 10739 */ {(10<<2)|2,{101,111,0}}, +/* 10740 */ {(10<<2)|2,{101,111,0}}, +/* 10741 */ {(10<<2)|2,{101,111,0}}, +/* 10742 */ {(10<<2)|2,{101,111,0}}, +/* 10743 */ {(10<<2)|2,{101,111,0}}, +/* 10744 */ {(10<<2)|2,{101,111,0}}, +/* 10745 */ {(10<<2)|2,{101,111,0}}, +/* 10746 */ {(10<<2)|2,{101,111,0}}, +/* 10747 */ {(10<<2)|2,{101,111,0}}, +/* 10748 */ {(10<<2)|2,{101,111,0}}, +/* 10749 */ {(10<<2)|2,{101,111,0}}, +/* 10750 */ {(10<<2)|2,{101,111,0}}, +/* 10751 */ {(10<<2)|2,{101,111,0}}, +/* 10752 */ {(15<<2)|3,{101,115,48}}, +/* 10753 */ {(15<<2)|3,{101,115,48}}, +/* 10754 */ {(15<<2)|3,{101,115,49}}, +/* 10755 */ {(15<<2)|3,{101,115,49}}, +/* 10756 */ {(15<<2)|3,{101,115,50}}, +/* 10757 */ {(15<<2)|3,{101,115,50}}, +/* 10758 */ {(15<<2)|3,{101,115,97}}, +/* 10759 */ {(15<<2)|3,{101,115,97}}, +/* 10760 */ {(15<<2)|3,{101,115,99}}, +/* 10761 */ {(15<<2)|3,{101,115,99}}, +/* 10762 */ {(15<<2)|3,{101,115,101}}, +/* 10763 */ {(15<<2)|3,{101,115,101}}, +/* 10764 */ {(15<<2)|3,{101,115,105}}, +/* 10765 */ {(15<<2)|3,{101,115,105}}, +/* 10766 */ {(15<<2)|3,{101,115,111}}, +/* 10767 */ {(15<<2)|3,{101,115,111}}, +/* 10768 */ {(15<<2)|3,{101,115,115}}, +/* 10769 */ {(15<<2)|3,{101,115,115}}, +/* 10770 */ {(15<<2)|3,{101,115,116}}, +/* 10771 */ {(15<<2)|3,{101,115,116}}, +/* 10772 */ {(16<<2)|3,{101,115,32}}, +/* 10773 */ {(16<<2)|3,{101,115,37}}, +/* 10774 */ {(16<<2)|3,{101,115,45}}, +/* 10775 */ {(16<<2)|3,{101,115,46}}, +/* 10776 */ {(16<<2)|3,{101,115,47}}, +/* 10777 */ {(16<<2)|3,{101,115,51}}, +/* 10778 */ {(16<<2)|3,{101,115,52}}, +/* 10779 */ {(16<<2)|3,{101,115,53}}, +/* 10780 */ {(16<<2)|3,{101,115,54}}, +/* 10781 */ {(16<<2)|3,{101,115,55}}, +/* 10782 */ {(16<<2)|3,{101,115,56}}, +/* 10783 */ {(16<<2)|3,{101,115,57}}, +/* 10784 */ {(16<<2)|3,{101,115,61}}, +/* 10785 */ {(16<<2)|3,{101,115,65}}, +/* 10786 */ {(16<<2)|3,{101,115,95}}, +/* 10787 */ {(16<<2)|3,{101,115,98}}, +/* 10788 */ {(16<<2)|3,{101,115,100}}, +/* 10789 */ {(16<<2)|3,{101,115,102}}, +/* 10790 */ {(16<<2)|3,{101,115,103}}, +/* 10791 */ {(16<<2)|3,{101,115,104}}, +/* 10792 */ {(16<<2)|3,{101,115,108}}, +/* 10793 */ {(16<<2)|3,{101,115,109}}, +/* 10794 */ {(16<<2)|3,{101,115,110}}, +/* 10795 */ {(16<<2)|3,{101,115,112}}, +/* 10796 */ {(16<<2)|3,{101,115,114}}, +/* 10797 */ {(16<<2)|3,{101,115,117}}, +/* 10798 */ {(10<<2)|2,{101,115,0}}, +/* 10799 */ {(10<<2)|2,{101,115,0}}, +/* 10800 */ {(10<<2)|2,{101,115,0}}, +/* 10801 */ {(10<<2)|2,{101,115,0}}, +/* 10802 */ {(10<<2)|2,{101,115,0}}, +/* 10803 */ {(10<<2)|2,{101,115,0}}, +/* 10804 */ {(10<<2)|2,{101,115,0}}, +/* 10805 */ {(10<<2)|2,{101,115,0}}, +/* 10806 */ {(10<<2)|2,{101,115,0}}, +/* 10807 */ {(10<<2)|2,{101,115,0}}, +/* 10808 */ {(10<<2)|2,{101,115,0}}, +/* 10809 */ {(10<<2)|2,{101,115,0}}, +/* 10810 */ {(10<<2)|2,{101,115,0}}, +/* 10811 */ {(10<<2)|2,{101,115,0}}, +/* 10812 */ {(10<<2)|2,{101,115,0}}, +/* 10813 */ {(10<<2)|2,{101,115,0}}, +/* 10814 */ {(10<<2)|2,{101,115,0}}, +/* 10815 */ {(10<<2)|2,{101,115,0}}, +/* 10816 */ {(15<<2)|3,{101,116,48}}, +/* 10817 */ {(15<<2)|3,{101,116,48}}, +/* 10818 */ {(15<<2)|3,{101,116,49}}, +/* 10819 */ {(15<<2)|3,{101,116,49}}, +/* 10820 */ {(15<<2)|3,{101,116,50}}, +/* 10821 */ {(15<<2)|3,{101,116,50}}, +/* 10822 */ {(15<<2)|3,{101,116,97}}, +/* 10823 */ {(15<<2)|3,{101,116,97}}, +/* 10824 */ {(15<<2)|3,{101,116,99}}, +/* 10825 */ {(15<<2)|3,{101,116,99}}, +/* 10826 */ {(15<<2)|3,{101,116,101}}, +/* 10827 */ {(15<<2)|3,{101,116,101}}, +/* 10828 */ {(15<<2)|3,{101,116,105}}, +/* 10829 */ {(15<<2)|3,{101,116,105}}, +/* 10830 */ {(15<<2)|3,{101,116,111}}, +/* 10831 */ {(15<<2)|3,{101,116,111}}, +/* 10832 */ {(15<<2)|3,{101,116,115}}, +/* 10833 */ {(15<<2)|3,{101,116,115}}, +/* 10834 */ {(15<<2)|3,{101,116,116}}, +/* 10835 */ {(15<<2)|3,{101,116,116}}, +/* 10836 */ {(16<<2)|3,{101,116,32}}, +/* 10837 */ {(16<<2)|3,{101,116,37}}, +/* 10838 */ {(16<<2)|3,{101,116,45}}, +/* 10839 */ {(16<<2)|3,{101,116,46}}, +/* 10840 */ {(16<<2)|3,{101,116,47}}, +/* 10841 */ {(16<<2)|3,{101,116,51}}, +/* 10842 */ {(16<<2)|3,{101,116,52}}, +/* 10843 */ {(16<<2)|3,{101,116,53}}, +/* 10844 */ {(16<<2)|3,{101,116,54}}, +/* 10845 */ {(16<<2)|3,{101,116,55}}, +/* 10846 */ {(16<<2)|3,{101,116,56}}, +/* 10847 */ {(16<<2)|3,{101,116,57}}, +/* 10848 */ {(16<<2)|3,{101,116,61}}, +/* 10849 */ {(16<<2)|3,{101,116,65}}, +/* 10850 */ {(16<<2)|3,{101,116,95}}, +/* 10851 */ {(16<<2)|3,{101,116,98}}, +/* 10852 */ {(16<<2)|3,{101,116,100}}, +/* 10853 */ {(16<<2)|3,{101,116,102}}, +/* 10854 */ {(16<<2)|3,{101,116,103}}, +/* 10855 */ {(16<<2)|3,{101,116,104}}, +/* 10856 */ {(16<<2)|3,{101,116,108}}, +/* 10857 */ {(16<<2)|3,{101,116,109}}, +/* 10858 */ {(16<<2)|3,{101,116,110}}, +/* 10859 */ {(16<<2)|3,{101,116,112}}, +/* 10860 */ {(16<<2)|3,{101,116,114}}, +/* 10861 */ {(16<<2)|3,{101,116,117}}, +/* 10862 */ {(10<<2)|2,{101,116,0}}, +/* 10863 */ {(10<<2)|2,{101,116,0}}, +/* 10864 */ {(10<<2)|2,{101,116,0}}, +/* 10865 */ {(10<<2)|2,{101,116,0}}, +/* 10866 */ {(10<<2)|2,{101,116,0}}, +/* 10867 */ {(10<<2)|2,{101,116,0}}, +/* 10868 */ {(10<<2)|2,{101,116,0}}, +/* 10869 */ {(10<<2)|2,{101,116,0}}, +/* 10870 */ {(10<<2)|2,{101,116,0}}, +/* 10871 */ {(10<<2)|2,{101,116,0}}, +/* 10872 */ {(10<<2)|2,{101,116,0}}, +/* 10873 */ {(10<<2)|2,{101,116,0}}, +/* 10874 */ {(10<<2)|2,{101,116,0}}, +/* 10875 */ {(10<<2)|2,{101,116,0}}, +/* 10876 */ {(10<<2)|2,{101,116,0}}, +/* 10877 */ {(10<<2)|2,{101,116,0}}, +/* 10878 */ {(10<<2)|2,{101,116,0}}, +/* 10879 */ {(10<<2)|2,{101,116,0}}, +/* 10880 */ {(16<<2)|3,{101,32,48}}, +/* 10881 */ {(16<<2)|3,{101,32,49}}, +/* 10882 */ {(16<<2)|3,{101,32,50}}, +/* 10883 */ {(16<<2)|3,{101,32,97}}, +/* 10884 */ {(16<<2)|3,{101,32,99}}, +/* 10885 */ {(16<<2)|3,{101,32,101}}, +/* 10886 */ {(16<<2)|3,{101,32,105}}, +/* 10887 */ {(16<<2)|3,{101,32,111}}, +/* 10888 */ {(16<<2)|3,{101,32,115}}, +/* 10889 */ {(16<<2)|3,{101,32,116}}, +/* 10890 */ {(11<<2)|2,{101,32,0}}, +/* 10891 */ {(11<<2)|2,{101,32,0}}, +/* 10892 */ {(11<<2)|2,{101,32,0}}, +/* 10893 */ {(11<<2)|2,{101,32,0}}, +/* 10894 */ {(11<<2)|2,{101,32,0}}, +/* 10895 */ {(11<<2)|2,{101,32,0}}, +/* 10896 */ {(11<<2)|2,{101,32,0}}, +/* 10897 */ {(11<<2)|2,{101,32,0}}, +/* 10898 */ {(11<<2)|2,{101,32,0}}, +/* 10899 */ {(11<<2)|2,{101,32,0}}, +/* 10900 */ {(11<<2)|2,{101,32,0}}, +/* 10901 */ {(11<<2)|2,{101,32,0}}, +/* 10902 */ {(11<<2)|2,{101,32,0}}, +/* 10903 */ {(11<<2)|2,{101,32,0}}, +/* 10904 */ {(11<<2)|2,{101,32,0}}, +/* 10905 */ {(11<<2)|2,{101,32,0}}, +/* 10906 */ {(11<<2)|2,{101,32,0}}, +/* 10907 */ {(11<<2)|2,{101,32,0}}, +/* 10908 */ {(11<<2)|2,{101,32,0}}, +/* 10909 */ {(11<<2)|2,{101,32,0}}, +/* 10910 */ {(11<<2)|2,{101,32,0}}, +/* 10911 */ {(11<<2)|2,{101,32,0}}, +/* 10912 */ {(16<<2)|3,{101,37,48}}, +/* 10913 */ {(16<<2)|3,{101,37,49}}, +/* 10914 */ {(16<<2)|3,{101,37,50}}, +/* 10915 */ {(16<<2)|3,{101,37,97}}, +/* 10916 */ {(16<<2)|3,{101,37,99}}, +/* 10917 */ {(16<<2)|3,{101,37,101}}, +/* 10918 */ {(16<<2)|3,{101,37,105}}, +/* 10919 */ {(16<<2)|3,{101,37,111}}, +/* 10920 */ {(16<<2)|3,{101,37,115}}, +/* 10921 */ {(16<<2)|3,{101,37,116}}, +/* 10922 */ {(11<<2)|2,{101,37,0}}, +/* 10923 */ {(11<<2)|2,{101,37,0}}, +/* 10924 */ {(11<<2)|2,{101,37,0}}, +/* 10925 */ {(11<<2)|2,{101,37,0}}, +/* 10926 */ {(11<<2)|2,{101,37,0}}, +/* 10927 */ {(11<<2)|2,{101,37,0}}, +/* 10928 */ {(11<<2)|2,{101,37,0}}, +/* 10929 */ {(11<<2)|2,{101,37,0}}, +/* 10930 */ {(11<<2)|2,{101,37,0}}, +/* 10931 */ {(11<<2)|2,{101,37,0}}, +/* 10932 */ {(11<<2)|2,{101,37,0}}, +/* 10933 */ {(11<<2)|2,{101,37,0}}, +/* 10934 */ {(11<<2)|2,{101,37,0}}, +/* 10935 */ {(11<<2)|2,{101,37,0}}, +/* 10936 */ {(11<<2)|2,{101,37,0}}, +/* 10937 */ {(11<<2)|2,{101,37,0}}, +/* 10938 */ {(11<<2)|2,{101,37,0}}, +/* 10939 */ {(11<<2)|2,{101,37,0}}, +/* 10940 */ {(11<<2)|2,{101,37,0}}, +/* 10941 */ {(11<<2)|2,{101,37,0}}, +/* 10942 */ {(11<<2)|2,{101,37,0}}, +/* 10943 */ {(11<<2)|2,{101,37,0}}, +/* 10944 */ {(16<<2)|3,{101,45,48}}, +/* 10945 */ {(16<<2)|3,{101,45,49}}, +/* 10946 */ {(16<<2)|3,{101,45,50}}, +/* 10947 */ {(16<<2)|3,{101,45,97}}, +/* 10948 */ {(16<<2)|3,{101,45,99}}, +/* 10949 */ {(16<<2)|3,{101,45,101}}, +/* 10950 */ {(16<<2)|3,{101,45,105}}, +/* 10951 */ {(16<<2)|3,{101,45,111}}, +/* 10952 */ {(16<<2)|3,{101,45,115}}, +/* 10953 */ {(16<<2)|3,{101,45,116}}, +/* 10954 */ {(11<<2)|2,{101,45,0}}, +/* 10955 */ {(11<<2)|2,{101,45,0}}, +/* 10956 */ {(11<<2)|2,{101,45,0}}, +/* 10957 */ {(11<<2)|2,{101,45,0}}, +/* 10958 */ {(11<<2)|2,{101,45,0}}, +/* 10959 */ {(11<<2)|2,{101,45,0}}, +/* 10960 */ {(11<<2)|2,{101,45,0}}, +/* 10961 */ {(11<<2)|2,{101,45,0}}, +/* 10962 */ {(11<<2)|2,{101,45,0}}, +/* 10963 */ {(11<<2)|2,{101,45,0}}, +/* 10964 */ {(11<<2)|2,{101,45,0}}, +/* 10965 */ {(11<<2)|2,{101,45,0}}, +/* 10966 */ {(11<<2)|2,{101,45,0}}, +/* 10967 */ {(11<<2)|2,{101,45,0}}, +/* 10968 */ {(11<<2)|2,{101,45,0}}, +/* 10969 */ {(11<<2)|2,{101,45,0}}, +/* 10970 */ {(11<<2)|2,{101,45,0}}, +/* 10971 */ {(11<<2)|2,{101,45,0}}, +/* 10972 */ {(11<<2)|2,{101,45,0}}, +/* 10973 */ {(11<<2)|2,{101,45,0}}, +/* 10974 */ {(11<<2)|2,{101,45,0}}, +/* 10975 */ {(11<<2)|2,{101,45,0}}, +/* 10976 */ {(16<<2)|3,{101,46,48}}, +/* 10977 */ {(16<<2)|3,{101,46,49}}, +/* 10978 */ {(16<<2)|3,{101,46,50}}, +/* 10979 */ {(16<<2)|3,{101,46,97}}, +/* 10980 */ {(16<<2)|3,{101,46,99}}, +/* 10981 */ {(16<<2)|3,{101,46,101}}, +/* 10982 */ {(16<<2)|3,{101,46,105}}, +/* 10983 */ {(16<<2)|3,{101,46,111}}, +/* 10984 */ {(16<<2)|3,{101,46,115}}, +/* 10985 */ {(16<<2)|3,{101,46,116}}, +/* 10986 */ {(11<<2)|2,{101,46,0}}, +/* 10987 */ {(11<<2)|2,{101,46,0}}, +/* 10988 */ {(11<<2)|2,{101,46,0}}, +/* 10989 */ {(11<<2)|2,{101,46,0}}, +/* 10990 */ {(11<<2)|2,{101,46,0}}, +/* 10991 */ {(11<<2)|2,{101,46,0}}, +/* 10992 */ {(11<<2)|2,{101,46,0}}, +/* 10993 */ {(11<<2)|2,{101,46,0}}, +/* 10994 */ {(11<<2)|2,{101,46,0}}, +/* 10995 */ {(11<<2)|2,{101,46,0}}, +/* 10996 */ {(11<<2)|2,{101,46,0}}, +/* 10997 */ {(11<<2)|2,{101,46,0}}, +/* 10998 */ {(11<<2)|2,{101,46,0}}, +/* 10999 */ {(11<<2)|2,{101,46,0}}, +/* 11000 */ {(11<<2)|2,{101,46,0}}, +/* 11001 */ {(11<<2)|2,{101,46,0}}, +/* 11002 */ {(11<<2)|2,{101,46,0}}, +/* 11003 */ {(11<<2)|2,{101,46,0}}, +/* 11004 */ {(11<<2)|2,{101,46,0}}, +/* 11005 */ {(11<<2)|2,{101,46,0}}, +/* 11006 */ {(11<<2)|2,{101,46,0}}, +/* 11007 */ {(11<<2)|2,{101,46,0}}, +/* 11008 */ {(16<<2)|3,{101,47,48}}, +/* 11009 */ {(16<<2)|3,{101,47,49}}, +/* 11010 */ {(16<<2)|3,{101,47,50}}, +/* 11011 */ {(16<<2)|3,{101,47,97}}, +/* 11012 */ {(16<<2)|3,{101,47,99}}, +/* 11013 */ {(16<<2)|3,{101,47,101}}, +/* 11014 */ {(16<<2)|3,{101,47,105}}, +/* 11015 */ {(16<<2)|3,{101,47,111}}, +/* 11016 */ {(16<<2)|3,{101,47,115}}, +/* 11017 */ {(16<<2)|3,{101,47,116}}, +/* 11018 */ {(11<<2)|2,{101,47,0}}, +/* 11019 */ {(11<<2)|2,{101,47,0}}, +/* 11020 */ {(11<<2)|2,{101,47,0}}, +/* 11021 */ {(11<<2)|2,{101,47,0}}, +/* 11022 */ {(11<<2)|2,{101,47,0}}, +/* 11023 */ {(11<<2)|2,{101,47,0}}, +/* 11024 */ {(11<<2)|2,{101,47,0}}, +/* 11025 */ {(11<<2)|2,{101,47,0}}, +/* 11026 */ {(11<<2)|2,{101,47,0}}, +/* 11027 */ {(11<<2)|2,{101,47,0}}, +/* 11028 */ {(11<<2)|2,{101,47,0}}, +/* 11029 */ {(11<<2)|2,{101,47,0}}, +/* 11030 */ {(11<<2)|2,{101,47,0}}, +/* 11031 */ {(11<<2)|2,{101,47,0}}, +/* 11032 */ {(11<<2)|2,{101,47,0}}, +/* 11033 */ {(11<<2)|2,{101,47,0}}, +/* 11034 */ {(11<<2)|2,{101,47,0}}, +/* 11035 */ {(11<<2)|2,{101,47,0}}, +/* 11036 */ {(11<<2)|2,{101,47,0}}, +/* 11037 */ {(11<<2)|2,{101,47,0}}, +/* 11038 */ {(11<<2)|2,{101,47,0}}, +/* 11039 */ {(11<<2)|2,{101,47,0}}, +/* 11040 */ {(16<<2)|3,{101,51,48}}, +/* 11041 */ {(16<<2)|3,{101,51,49}}, +/* 11042 */ {(16<<2)|3,{101,51,50}}, +/* 11043 */ {(16<<2)|3,{101,51,97}}, +/* 11044 */ {(16<<2)|3,{101,51,99}}, +/* 11045 */ {(16<<2)|3,{101,51,101}}, +/* 11046 */ {(16<<2)|3,{101,51,105}}, +/* 11047 */ {(16<<2)|3,{101,51,111}}, +/* 11048 */ {(16<<2)|3,{101,51,115}}, +/* 11049 */ {(16<<2)|3,{101,51,116}}, +/* 11050 */ {(11<<2)|2,{101,51,0}}, +/* 11051 */ {(11<<2)|2,{101,51,0}}, +/* 11052 */ {(11<<2)|2,{101,51,0}}, +/* 11053 */ {(11<<2)|2,{101,51,0}}, +/* 11054 */ {(11<<2)|2,{101,51,0}}, +/* 11055 */ {(11<<2)|2,{101,51,0}}, +/* 11056 */ {(11<<2)|2,{101,51,0}}, +/* 11057 */ {(11<<2)|2,{101,51,0}}, +/* 11058 */ {(11<<2)|2,{101,51,0}}, +/* 11059 */ {(11<<2)|2,{101,51,0}}, +/* 11060 */ {(11<<2)|2,{101,51,0}}, +/* 11061 */ {(11<<2)|2,{101,51,0}}, +/* 11062 */ {(11<<2)|2,{101,51,0}}, +/* 11063 */ {(11<<2)|2,{101,51,0}}, +/* 11064 */ {(11<<2)|2,{101,51,0}}, +/* 11065 */ {(11<<2)|2,{101,51,0}}, +/* 11066 */ {(11<<2)|2,{101,51,0}}, +/* 11067 */ {(11<<2)|2,{101,51,0}}, +/* 11068 */ {(11<<2)|2,{101,51,0}}, +/* 11069 */ {(11<<2)|2,{101,51,0}}, +/* 11070 */ {(11<<2)|2,{101,51,0}}, +/* 11071 */ {(11<<2)|2,{101,51,0}}, +/* 11072 */ {(16<<2)|3,{101,52,48}}, +/* 11073 */ {(16<<2)|3,{101,52,49}}, +/* 11074 */ {(16<<2)|3,{101,52,50}}, +/* 11075 */ {(16<<2)|3,{101,52,97}}, +/* 11076 */ {(16<<2)|3,{101,52,99}}, +/* 11077 */ {(16<<2)|3,{101,52,101}}, +/* 11078 */ {(16<<2)|3,{101,52,105}}, +/* 11079 */ {(16<<2)|3,{101,52,111}}, +/* 11080 */ {(16<<2)|3,{101,52,115}}, +/* 11081 */ {(16<<2)|3,{101,52,116}}, +/* 11082 */ {(11<<2)|2,{101,52,0}}, +/* 11083 */ {(11<<2)|2,{101,52,0}}, +/* 11084 */ {(11<<2)|2,{101,52,0}}, +/* 11085 */ {(11<<2)|2,{101,52,0}}, +/* 11086 */ {(11<<2)|2,{101,52,0}}, +/* 11087 */ {(11<<2)|2,{101,52,0}}, +/* 11088 */ {(11<<2)|2,{101,52,0}}, +/* 11089 */ {(11<<2)|2,{101,52,0}}, +/* 11090 */ {(11<<2)|2,{101,52,0}}, +/* 11091 */ {(11<<2)|2,{101,52,0}}, +/* 11092 */ {(11<<2)|2,{101,52,0}}, +/* 11093 */ {(11<<2)|2,{101,52,0}}, +/* 11094 */ {(11<<2)|2,{101,52,0}}, +/* 11095 */ {(11<<2)|2,{101,52,0}}, +/* 11096 */ {(11<<2)|2,{101,52,0}}, +/* 11097 */ {(11<<2)|2,{101,52,0}}, +/* 11098 */ {(11<<2)|2,{101,52,0}}, +/* 11099 */ {(11<<2)|2,{101,52,0}}, +/* 11100 */ {(11<<2)|2,{101,52,0}}, +/* 11101 */ {(11<<2)|2,{101,52,0}}, +/* 11102 */ {(11<<2)|2,{101,52,0}}, +/* 11103 */ {(11<<2)|2,{101,52,0}}, +/* 11104 */ {(16<<2)|3,{101,53,48}}, +/* 11105 */ {(16<<2)|3,{101,53,49}}, +/* 11106 */ {(16<<2)|3,{101,53,50}}, +/* 11107 */ {(16<<2)|3,{101,53,97}}, +/* 11108 */ {(16<<2)|3,{101,53,99}}, +/* 11109 */ {(16<<2)|3,{101,53,101}}, +/* 11110 */ {(16<<2)|3,{101,53,105}}, +/* 11111 */ {(16<<2)|3,{101,53,111}}, +/* 11112 */ {(16<<2)|3,{101,53,115}}, +/* 11113 */ {(16<<2)|3,{101,53,116}}, +/* 11114 */ {(11<<2)|2,{101,53,0}}, +/* 11115 */ {(11<<2)|2,{101,53,0}}, +/* 11116 */ {(11<<2)|2,{101,53,0}}, +/* 11117 */ {(11<<2)|2,{101,53,0}}, +/* 11118 */ {(11<<2)|2,{101,53,0}}, +/* 11119 */ {(11<<2)|2,{101,53,0}}, +/* 11120 */ {(11<<2)|2,{101,53,0}}, +/* 11121 */ {(11<<2)|2,{101,53,0}}, +/* 11122 */ {(11<<2)|2,{101,53,0}}, +/* 11123 */ {(11<<2)|2,{101,53,0}}, +/* 11124 */ {(11<<2)|2,{101,53,0}}, +/* 11125 */ {(11<<2)|2,{101,53,0}}, +/* 11126 */ {(11<<2)|2,{101,53,0}}, +/* 11127 */ {(11<<2)|2,{101,53,0}}, +/* 11128 */ {(11<<2)|2,{101,53,0}}, +/* 11129 */ {(11<<2)|2,{101,53,0}}, +/* 11130 */ {(11<<2)|2,{101,53,0}}, +/* 11131 */ {(11<<2)|2,{101,53,0}}, +/* 11132 */ {(11<<2)|2,{101,53,0}}, +/* 11133 */ {(11<<2)|2,{101,53,0}}, +/* 11134 */ {(11<<2)|2,{101,53,0}}, +/* 11135 */ {(11<<2)|2,{101,53,0}}, +/* 11136 */ {(16<<2)|3,{101,54,48}}, +/* 11137 */ {(16<<2)|3,{101,54,49}}, +/* 11138 */ {(16<<2)|3,{101,54,50}}, +/* 11139 */ {(16<<2)|3,{101,54,97}}, +/* 11140 */ {(16<<2)|3,{101,54,99}}, +/* 11141 */ {(16<<2)|3,{101,54,101}}, +/* 11142 */ {(16<<2)|3,{101,54,105}}, +/* 11143 */ {(16<<2)|3,{101,54,111}}, +/* 11144 */ {(16<<2)|3,{101,54,115}}, +/* 11145 */ {(16<<2)|3,{101,54,116}}, +/* 11146 */ {(11<<2)|2,{101,54,0}}, +/* 11147 */ {(11<<2)|2,{101,54,0}}, +/* 11148 */ {(11<<2)|2,{101,54,0}}, +/* 11149 */ {(11<<2)|2,{101,54,0}}, +/* 11150 */ {(11<<2)|2,{101,54,0}}, +/* 11151 */ {(11<<2)|2,{101,54,0}}, +/* 11152 */ {(11<<2)|2,{101,54,0}}, +/* 11153 */ {(11<<2)|2,{101,54,0}}, +/* 11154 */ {(11<<2)|2,{101,54,0}}, +/* 11155 */ {(11<<2)|2,{101,54,0}}, +/* 11156 */ {(11<<2)|2,{101,54,0}}, +/* 11157 */ {(11<<2)|2,{101,54,0}}, +/* 11158 */ {(11<<2)|2,{101,54,0}}, +/* 11159 */ {(11<<2)|2,{101,54,0}}, +/* 11160 */ {(11<<2)|2,{101,54,0}}, +/* 11161 */ {(11<<2)|2,{101,54,0}}, +/* 11162 */ {(11<<2)|2,{101,54,0}}, +/* 11163 */ {(11<<2)|2,{101,54,0}}, +/* 11164 */ {(11<<2)|2,{101,54,0}}, +/* 11165 */ {(11<<2)|2,{101,54,0}}, +/* 11166 */ {(11<<2)|2,{101,54,0}}, +/* 11167 */ {(11<<2)|2,{101,54,0}}, +/* 11168 */ {(16<<2)|3,{101,55,48}}, +/* 11169 */ {(16<<2)|3,{101,55,49}}, +/* 11170 */ {(16<<2)|3,{101,55,50}}, +/* 11171 */ {(16<<2)|3,{101,55,97}}, +/* 11172 */ {(16<<2)|3,{101,55,99}}, +/* 11173 */ {(16<<2)|3,{101,55,101}}, +/* 11174 */ {(16<<2)|3,{101,55,105}}, +/* 11175 */ {(16<<2)|3,{101,55,111}}, +/* 11176 */ {(16<<2)|3,{101,55,115}}, +/* 11177 */ {(16<<2)|3,{101,55,116}}, +/* 11178 */ {(11<<2)|2,{101,55,0}}, +/* 11179 */ {(11<<2)|2,{101,55,0}}, +/* 11180 */ {(11<<2)|2,{101,55,0}}, +/* 11181 */ {(11<<2)|2,{101,55,0}}, +/* 11182 */ {(11<<2)|2,{101,55,0}}, +/* 11183 */ {(11<<2)|2,{101,55,0}}, +/* 11184 */ {(11<<2)|2,{101,55,0}}, +/* 11185 */ {(11<<2)|2,{101,55,0}}, +/* 11186 */ {(11<<2)|2,{101,55,0}}, +/* 11187 */ {(11<<2)|2,{101,55,0}}, +/* 11188 */ {(11<<2)|2,{101,55,0}}, +/* 11189 */ {(11<<2)|2,{101,55,0}}, +/* 11190 */ {(11<<2)|2,{101,55,0}}, +/* 11191 */ {(11<<2)|2,{101,55,0}}, +/* 11192 */ {(11<<2)|2,{101,55,0}}, +/* 11193 */ {(11<<2)|2,{101,55,0}}, +/* 11194 */ {(11<<2)|2,{101,55,0}}, +/* 11195 */ {(11<<2)|2,{101,55,0}}, +/* 11196 */ {(11<<2)|2,{101,55,0}}, +/* 11197 */ {(11<<2)|2,{101,55,0}}, +/* 11198 */ {(11<<2)|2,{101,55,0}}, +/* 11199 */ {(11<<2)|2,{101,55,0}}, +/* 11200 */ {(16<<2)|3,{101,56,48}}, +/* 11201 */ {(16<<2)|3,{101,56,49}}, +/* 11202 */ {(16<<2)|3,{101,56,50}}, +/* 11203 */ {(16<<2)|3,{101,56,97}}, +/* 11204 */ {(16<<2)|3,{101,56,99}}, +/* 11205 */ {(16<<2)|3,{101,56,101}}, +/* 11206 */ {(16<<2)|3,{101,56,105}}, +/* 11207 */ {(16<<2)|3,{101,56,111}}, +/* 11208 */ {(16<<2)|3,{101,56,115}}, +/* 11209 */ {(16<<2)|3,{101,56,116}}, +/* 11210 */ {(11<<2)|2,{101,56,0}}, +/* 11211 */ {(11<<2)|2,{101,56,0}}, +/* 11212 */ {(11<<2)|2,{101,56,0}}, +/* 11213 */ {(11<<2)|2,{101,56,0}}, +/* 11214 */ {(11<<2)|2,{101,56,0}}, +/* 11215 */ {(11<<2)|2,{101,56,0}}, +/* 11216 */ {(11<<2)|2,{101,56,0}}, +/* 11217 */ {(11<<2)|2,{101,56,0}}, +/* 11218 */ {(11<<2)|2,{101,56,0}}, +/* 11219 */ {(11<<2)|2,{101,56,0}}, +/* 11220 */ {(11<<2)|2,{101,56,0}}, +/* 11221 */ {(11<<2)|2,{101,56,0}}, +/* 11222 */ {(11<<2)|2,{101,56,0}}, +/* 11223 */ {(11<<2)|2,{101,56,0}}, +/* 11224 */ {(11<<2)|2,{101,56,0}}, +/* 11225 */ {(11<<2)|2,{101,56,0}}, +/* 11226 */ {(11<<2)|2,{101,56,0}}, +/* 11227 */ {(11<<2)|2,{101,56,0}}, +/* 11228 */ {(11<<2)|2,{101,56,0}}, +/* 11229 */ {(11<<2)|2,{101,56,0}}, +/* 11230 */ {(11<<2)|2,{101,56,0}}, +/* 11231 */ {(11<<2)|2,{101,56,0}}, +/* 11232 */ {(16<<2)|3,{101,57,48}}, +/* 11233 */ {(16<<2)|3,{101,57,49}}, +/* 11234 */ {(16<<2)|3,{101,57,50}}, +/* 11235 */ {(16<<2)|3,{101,57,97}}, +/* 11236 */ {(16<<2)|3,{101,57,99}}, +/* 11237 */ {(16<<2)|3,{101,57,101}}, +/* 11238 */ {(16<<2)|3,{101,57,105}}, +/* 11239 */ {(16<<2)|3,{101,57,111}}, +/* 11240 */ {(16<<2)|3,{101,57,115}}, +/* 11241 */ {(16<<2)|3,{101,57,116}}, +/* 11242 */ {(11<<2)|2,{101,57,0}}, +/* 11243 */ {(11<<2)|2,{101,57,0}}, +/* 11244 */ {(11<<2)|2,{101,57,0}}, +/* 11245 */ {(11<<2)|2,{101,57,0}}, +/* 11246 */ {(11<<2)|2,{101,57,0}}, +/* 11247 */ {(11<<2)|2,{101,57,0}}, +/* 11248 */ {(11<<2)|2,{101,57,0}}, +/* 11249 */ {(11<<2)|2,{101,57,0}}, +/* 11250 */ {(11<<2)|2,{101,57,0}}, +/* 11251 */ {(11<<2)|2,{101,57,0}}, +/* 11252 */ {(11<<2)|2,{101,57,0}}, +/* 11253 */ {(11<<2)|2,{101,57,0}}, +/* 11254 */ {(11<<2)|2,{101,57,0}}, +/* 11255 */ {(11<<2)|2,{101,57,0}}, +/* 11256 */ {(11<<2)|2,{101,57,0}}, +/* 11257 */ {(11<<2)|2,{101,57,0}}, +/* 11258 */ {(11<<2)|2,{101,57,0}}, +/* 11259 */ {(11<<2)|2,{101,57,0}}, +/* 11260 */ {(11<<2)|2,{101,57,0}}, +/* 11261 */ {(11<<2)|2,{101,57,0}}, +/* 11262 */ {(11<<2)|2,{101,57,0}}, +/* 11263 */ {(11<<2)|2,{101,57,0}}, +/* 11264 */ {(16<<2)|3,{101,61,48}}, +/* 11265 */ {(16<<2)|3,{101,61,49}}, +/* 11266 */ {(16<<2)|3,{101,61,50}}, +/* 11267 */ {(16<<2)|3,{101,61,97}}, +/* 11268 */ {(16<<2)|3,{101,61,99}}, +/* 11269 */ {(16<<2)|3,{101,61,101}}, +/* 11270 */ {(16<<2)|3,{101,61,105}}, +/* 11271 */ {(16<<2)|3,{101,61,111}}, +/* 11272 */ {(16<<2)|3,{101,61,115}}, +/* 11273 */ {(16<<2)|3,{101,61,116}}, +/* 11274 */ {(11<<2)|2,{101,61,0}}, +/* 11275 */ {(11<<2)|2,{101,61,0}}, +/* 11276 */ {(11<<2)|2,{101,61,0}}, +/* 11277 */ {(11<<2)|2,{101,61,0}}, +/* 11278 */ {(11<<2)|2,{101,61,0}}, +/* 11279 */ {(11<<2)|2,{101,61,0}}, +/* 11280 */ {(11<<2)|2,{101,61,0}}, +/* 11281 */ {(11<<2)|2,{101,61,0}}, +/* 11282 */ {(11<<2)|2,{101,61,0}}, +/* 11283 */ {(11<<2)|2,{101,61,0}}, +/* 11284 */ {(11<<2)|2,{101,61,0}}, +/* 11285 */ {(11<<2)|2,{101,61,0}}, +/* 11286 */ {(11<<2)|2,{101,61,0}}, +/* 11287 */ {(11<<2)|2,{101,61,0}}, +/* 11288 */ {(11<<2)|2,{101,61,0}}, +/* 11289 */ {(11<<2)|2,{101,61,0}}, +/* 11290 */ {(11<<2)|2,{101,61,0}}, +/* 11291 */ {(11<<2)|2,{101,61,0}}, +/* 11292 */ {(11<<2)|2,{101,61,0}}, +/* 11293 */ {(11<<2)|2,{101,61,0}}, +/* 11294 */ {(11<<2)|2,{101,61,0}}, +/* 11295 */ {(11<<2)|2,{101,61,0}}, +/* 11296 */ {(16<<2)|3,{101,65,48}}, +/* 11297 */ {(16<<2)|3,{101,65,49}}, +/* 11298 */ {(16<<2)|3,{101,65,50}}, +/* 11299 */ {(16<<2)|3,{101,65,97}}, +/* 11300 */ {(16<<2)|3,{101,65,99}}, +/* 11301 */ {(16<<2)|3,{101,65,101}}, +/* 11302 */ {(16<<2)|3,{101,65,105}}, +/* 11303 */ {(16<<2)|3,{101,65,111}}, +/* 11304 */ {(16<<2)|3,{101,65,115}}, +/* 11305 */ {(16<<2)|3,{101,65,116}}, +/* 11306 */ {(11<<2)|2,{101,65,0}}, +/* 11307 */ {(11<<2)|2,{101,65,0}}, +/* 11308 */ {(11<<2)|2,{101,65,0}}, +/* 11309 */ {(11<<2)|2,{101,65,0}}, +/* 11310 */ {(11<<2)|2,{101,65,0}}, +/* 11311 */ {(11<<2)|2,{101,65,0}}, +/* 11312 */ {(11<<2)|2,{101,65,0}}, +/* 11313 */ {(11<<2)|2,{101,65,0}}, +/* 11314 */ {(11<<2)|2,{101,65,0}}, +/* 11315 */ {(11<<2)|2,{101,65,0}}, +/* 11316 */ {(11<<2)|2,{101,65,0}}, +/* 11317 */ {(11<<2)|2,{101,65,0}}, +/* 11318 */ {(11<<2)|2,{101,65,0}}, +/* 11319 */ {(11<<2)|2,{101,65,0}}, +/* 11320 */ {(11<<2)|2,{101,65,0}}, +/* 11321 */ {(11<<2)|2,{101,65,0}}, +/* 11322 */ {(11<<2)|2,{101,65,0}}, +/* 11323 */ {(11<<2)|2,{101,65,0}}, +/* 11324 */ {(11<<2)|2,{101,65,0}}, +/* 11325 */ {(11<<2)|2,{101,65,0}}, +/* 11326 */ {(11<<2)|2,{101,65,0}}, +/* 11327 */ {(11<<2)|2,{101,65,0}}, +/* 11328 */ {(16<<2)|3,{101,95,48}}, +/* 11329 */ {(16<<2)|3,{101,95,49}}, +/* 11330 */ {(16<<2)|3,{101,95,50}}, +/* 11331 */ {(16<<2)|3,{101,95,97}}, +/* 11332 */ {(16<<2)|3,{101,95,99}}, +/* 11333 */ {(16<<2)|3,{101,95,101}}, +/* 11334 */ {(16<<2)|3,{101,95,105}}, +/* 11335 */ {(16<<2)|3,{101,95,111}}, +/* 11336 */ {(16<<2)|3,{101,95,115}}, +/* 11337 */ {(16<<2)|3,{101,95,116}}, +/* 11338 */ {(11<<2)|2,{101,95,0}}, +/* 11339 */ {(11<<2)|2,{101,95,0}}, +/* 11340 */ {(11<<2)|2,{101,95,0}}, +/* 11341 */ {(11<<2)|2,{101,95,0}}, +/* 11342 */ {(11<<2)|2,{101,95,0}}, +/* 11343 */ {(11<<2)|2,{101,95,0}}, +/* 11344 */ {(11<<2)|2,{101,95,0}}, +/* 11345 */ {(11<<2)|2,{101,95,0}}, +/* 11346 */ {(11<<2)|2,{101,95,0}}, +/* 11347 */ {(11<<2)|2,{101,95,0}}, +/* 11348 */ {(11<<2)|2,{101,95,0}}, +/* 11349 */ {(11<<2)|2,{101,95,0}}, +/* 11350 */ {(11<<2)|2,{101,95,0}}, +/* 11351 */ {(11<<2)|2,{101,95,0}}, +/* 11352 */ {(11<<2)|2,{101,95,0}}, +/* 11353 */ {(11<<2)|2,{101,95,0}}, +/* 11354 */ {(11<<2)|2,{101,95,0}}, +/* 11355 */ {(11<<2)|2,{101,95,0}}, +/* 11356 */ {(11<<2)|2,{101,95,0}}, +/* 11357 */ {(11<<2)|2,{101,95,0}}, +/* 11358 */ {(11<<2)|2,{101,95,0}}, +/* 11359 */ {(11<<2)|2,{101,95,0}}, +/* 11360 */ {(16<<2)|3,{101,98,48}}, +/* 11361 */ {(16<<2)|3,{101,98,49}}, +/* 11362 */ {(16<<2)|3,{101,98,50}}, +/* 11363 */ {(16<<2)|3,{101,98,97}}, +/* 11364 */ {(16<<2)|3,{101,98,99}}, +/* 11365 */ {(16<<2)|3,{101,98,101}}, +/* 11366 */ {(16<<2)|3,{101,98,105}}, +/* 11367 */ {(16<<2)|3,{101,98,111}}, +/* 11368 */ {(16<<2)|3,{101,98,115}}, +/* 11369 */ {(16<<2)|3,{101,98,116}}, +/* 11370 */ {(11<<2)|2,{101,98,0}}, +/* 11371 */ {(11<<2)|2,{101,98,0}}, +/* 11372 */ {(11<<2)|2,{101,98,0}}, +/* 11373 */ {(11<<2)|2,{101,98,0}}, +/* 11374 */ {(11<<2)|2,{101,98,0}}, +/* 11375 */ {(11<<2)|2,{101,98,0}}, +/* 11376 */ {(11<<2)|2,{101,98,0}}, +/* 11377 */ {(11<<2)|2,{101,98,0}}, +/* 11378 */ {(11<<2)|2,{101,98,0}}, +/* 11379 */ {(11<<2)|2,{101,98,0}}, +/* 11380 */ {(11<<2)|2,{101,98,0}}, +/* 11381 */ {(11<<2)|2,{101,98,0}}, +/* 11382 */ {(11<<2)|2,{101,98,0}}, +/* 11383 */ {(11<<2)|2,{101,98,0}}, +/* 11384 */ {(11<<2)|2,{101,98,0}}, +/* 11385 */ {(11<<2)|2,{101,98,0}}, +/* 11386 */ {(11<<2)|2,{101,98,0}}, +/* 11387 */ {(11<<2)|2,{101,98,0}}, +/* 11388 */ {(11<<2)|2,{101,98,0}}, +/* 11389 */ {(11<<2)|2,{101,98,0}}, +/* 11390 */ {(11<<2)|2,{101,98,0}}, +/* 11391 */ {(11<<2)|2,{101,98,0}}, +/* 11392 */ {(16<<2)|3,{101,100,48}}, +/* 11393 */ {(16<<2)|3,{101,100,49}}, +/* 11394 */ {(16<<2)|3,{101,100,50}}, +/* 11395 */ {(16<<2)|3,{101,100,97}}, +/* 11396 */ {(16<<2)|3,{101,100,99}}, +/* 11397 */ {(16<<2)|3,{101,100,101}}, +/* 11398 */ {(16<<2)|3,{101,100,105}}, +/* 11399 */ {(16<<2)|3,{101,100,111}}, +/* 11400 */ {(16<<2)|3,{101,100,115}}, +/* 11401 */ {(16<<2)|3,{101,100,116}}, +/* 11402 */ {(11<<2)|2,{101,100,0}}, +/* 11403 */ {(11<<2)|2,{101,100,0}}, +/* 11404 */ {(11<<2)|2,{101,100,0}}, +/* 11405 */ {(11<<2)|2,{101,100,0}}, +/* 11406 */ {(11<<2)|2,{101,100,0}}, +/* 11407 */ {(11<<2)|2,{101,100,0}}, +/* 11408 */ {(11<<2)|2,{101,100,0}}, +/* 11409 */ {(11<<2)|2,{101,100,0}}, +/* 11410 */ {(11<<2)|2,{101,100,0}}, +/* 11411 */ {(11<<2)|2,{101,100,0}}, +/* 11412 */ {(11<<2)|2,{101,100,0}}, +/* 11413 */ {(11<<2)|2,{101,100,0}}, +/* 11414 */ {(11<<2)|2,{101,100,0}}, +/* 11415 */ {(11<<2)|2,{101,100,0}}, +/* 11416 */ {(11<<2)|2,{101,100,0}}, +/* 11417 */ {(11<<2)|2,{101,100,0}}, +/* 11418 */ {(11<<2)|2,{101,100,0}}, +/* 11419 */ {(11<<2)|2,{101,100,0}}, +/* 11420 */ {(11<<2)|2,{101,100,0}}, +/* 11421 */ {(11<<2)|2,{101,100,0}}, +/* 11422 */ {(11<<2)|2,{101,100,0}}, +/* 11423 */ {(11<<2)|2,{101,100,0}}, +/* 11424 */ {(16<<2)|3,{101,102,48}}, +/* 11425 */ {(16<<2)|3,{101,102,49}}, +/* 11426 */ {(16<<2)|3,{101,102,50}}, +/* 11427 */ {(16<<2)|3,{101,102,97}}, +/* 11428 */ {(16<<2)|3,{101,102,99}}, +/* 11429 */ {(16<<2)|3,{101,102,101}}, +/* 11430 */ {(16<<2)|3,{101,102,105}}, +/* 11431 */ {(16<<2)|3,{101,102,111}}, +/* 11432 */ {(16<<2)|3,{101,102,115}}, +/* 11433 */ {(16<<2)|3,{101,102,116}}, +/* 11434 */ {(11<<2)|2,{101,102,0}}, +/* 11435 */ {(11<<2)|2,{101,102,0}}, +/* 11436 */ {(11<<2)|2,{101,102,0}}, +/* 11437 */ {(11<<2)|2,{101,102,0}}, +/* 11438 */ {(11<<2)|2,{101,102,0}}, +/* 11439 */ {(11<<2)|2,{101,102,0}}, +/* 11440 */ {(11<<2)|2,{101,102,0}}, +/* 11441 */ {(11<<2)|2,{101,102,0}}, +/* 11442 */ {(11<<2)|2,{101,102,0}}, +/* 11443 */ {(11<<2)|2,{101,102,0}}, +/* 11444 */ {(11<<2)|2,{101,102,0}}, +/* 11445 */ {(11<<2)|2,{101,102,0}}, +/* 11446 */ {(11<<2)|2,{101,102,0}}, +/* 11447 */ {(11<<2)|2,{101,102,0}}, +/* 11448 */ {(11<<2)|2,{101,102,0}}, +/* 11449 */ {(11<<2)|2,{101,102,0}}, +/* 11450 */ {(11<<2)|2,{101,102,0}}, +/* 11451 */ {(11<<2)|2,{101,102,0}}, +/* 11452 */ {(11<<2)|2,{101,102,0}}, +/* 11453 */ {(11<<2)|2,{101,102,0}}, +/* 11454 */ {(11<<2)|2,{101,102,0}}, +/* 11455 */ {(11<<2)|2,{101,102,0}}, +/* 11456 */ {(16<<2)|3,{101,103,48}}, +/* 11457 */ {(16<<2)|3,{101,103,49}}, +/* 11458 */ {(16<<2)|3,{101,103,50}}, +/* 11459 */ {(16<<2)|3,{101,103,97}}, +/* 11460 */ {(16<<2)|3,{101,103,99}}, +/* 11461 */ {(16<<2)|3,{101,103,101}}, +/* 11462 */ {(16<<2)|3,{101,103,105}}, +/* 11463 */ {(16<<2)|3,{101,103,111}}, +/* 11464 */ {(16<<2)|3,{101,103,115}}, +/* 11465 */ {(16<<2)|3,{101,103,116}}, +/* 11466 */ {(11<<2)|2,{101,103,0}}, +/* 11467 */ {(11<<2)|2,{101,103,0}}, +/* 11468 */ {(11<<2)|2,{101,103,0}}, +/* 11469 */ {(11<<2)|2,{101,103,0}}, +/* 11470 */ {(11<<2)|2,{101,103,0}}, +/* 11471 */ {(11<<2)|2,{101,103,0}}, +/* 11472 */ {(11<<2)|2,{101,103,0}}, +/* 11473 */ {(11<<2)|2,{101,103,0}}, +/* 11474 */ {(11<<2)|2,{101,103,0}}, +/* 11475 */ {(11<<2)|2,{101,103,0}}, +/* 11476 */ {(11<<2)|2,{101,103,0}}, +/* 11477 */ {(11<<2)|2,{101,103,0}}, +/* 11478 */ {(11<<2)|2,{101,103,0}}, +/* 11479 */ {(11<<2)|2,{101,103,0}}, +/* 11480 */ {(11<<2)|2,{101,103,0}}, +/* 11481 */ {(11<<2)|2,{101,103,0}}, +/* 11482 */ {(11<<2)|2,{101,103,0}}, +/* 11483 */ {(11<<2)|2,{101,103,0}}, +/* 11484 */ {(11<<2)|2,{101,103,0}}, +/* 11485 */ {(11<<2)|2,{101,103,0}}, +/* 11486 */ {(11<<2)|2,{101,103,0}}, +/* 11487 */ {(11<<2)|2,{101,103,0}}, +/* 11488 */ {(16<<2)|3,{101,104,48}}, +/* 11489 */ {(16<<2)|3,{101,104,49}}, +/* 11490 */ {(16<<2)|3,{101,104,50}}, +/* 11491 */ {(16<<2)|3,{101,104,97}}, +/* 11492 */ {(16<<2)|3,{101,104,99}}, +/* 11493 */ {(16<<2)|3,{101,104,101}}, +/* 11494 */ {(16<<2)|3,{101,104,105}}, +/* 11495 */ {(16<<2)|3,{101,104,111}}, +/* 11496 */ {(16<<2)|3,{101,104,115}}, +/* 11497 */ {(16<<2)|3,{101,104,116}}, +/* 11498 */ {(11<<2)|2,{101,104,0}}, +/* 11499 */ {(11<<2)|2,{101,104,0}}, +/* 11500 */ {(11<<2)|2,{101,104,0}}, +/* 11501 */ {(11<<2)|2,{101,104,0}}, +/* 11502 */ {(11<<2)|2,{101,104,0}}, +/* 11503 */ {(11<<2)|2,{101,104,0}}, +/* 11504 */ {(11<<2)|2,{101,104,0}}, +/* 11505 */ {(11<<2)|2,{101,104,0}}, +/* 11506 */ {(11<<2)|2,{101,104,0}}, +/* 11507 */ {(11<<2)|2,{101,104,0}}, +/* 11508 */ {(11<<2)|2,{101,104,0}}, +/* 11509 */ {(11<<2)|2,{101,104,0}}, +/* 11510 */ {(11<<2)|2,{101,104,0}}, +/* 11511 */ {(11<<2)|2,{101,104,0}}, +/* 11512 */ {(11<<2)|2,{101,104,0}}, +/* 11513 */ {(11<<2)|2,{101,104,0}}, +/* 11514 */ {(11<<2)|2,{101,104,0}}, +/* 11515 */ {(11<<2)|2,{101,104,0}}, +/* 11516 */ {(11<<2)|2,{101,104,0}}, +/* 11517 */ {(11<<2)|2,{101,104,0}}, +/* 11518 */ {(11<<2)|2,{101,104,0}}, +/* 11519 */ {(11<<2)|2,{101,104,0}}, +/* 11520 */ {(16<<2)|3,{101,108,48}}, +/* 11521 */ {(16<<2)|3,{101,108,49}}, +/* 11522 */ {(16<<2)|3,{101,108,50}}, +/* 11523 */ {(16<<2)|3,{101,108,97}}, +/* 11524 */ {(16<<2)|3,{101,108,99}}, +/* 11525 */ {(16<<2)|3,{101,108,101}}, +/* 11526 */ {(16<<2)|3,{101,108,105}}, +/* 11527 */ {(16<<2)|3,{101,108,111}}, +/* 11528 */ {(16<<2)|3,{101,108,115}}, +/* 11529 */ {(16<<2)|3,{101,108,116}}, +/* 11530 */ {(11<<2)|2,{101,108,0}}, +/* 11531 */ {(11<<2)|2,{101,108,0}}, +/* 11532 */ {(11<<2)|2,{101,108,0}}, +/* 11533 */ {(11<<2)|2,{101,108,0}}, +/* 11534 */ {(11<<2)|2,{101,108,0}}, +/* 11535 */ {(11<<2)|2,{101,108,0}}, +/* 11536 */ {(11<<2)|2,{101,108,0}}, +/* 11537 */ {(11<<2)|2,{101,108,0}}, +/* 11538 */ {(11<<2)|2,{101,108,0}}, +/* 11539 */ {(11<<2)|2,{101,108,0}}, +/* 11540 */ {(11<<2)|2,{101,108,0}}, +/* 11541 */ {(11<<2)|2,{101,108,0}}, +/* 11542 */ {(11<<2)|2,{101,108,0}}, +/* 11543 */ {(11<<2)|2,{101,108,0}}, +/* 11544 */ {(11<<2)|2,{101,108,0}}, +/* 11545 */ {(11<<2)|2,{101,108,0}}, +/* 11546 */ {(11<<2)|2,{101,108,0}}, +/* 11547 */ {(11<<2)|2,{101,108,0}}, +/* 11548 */ {(11<<2)|2,{101,108,0}}, +/* 11549 */ {(11<<2)|2,{101,108,0}}, +/* 11550 */ {(11<<2)|2,{101,108,0}}, +/* 11551 */ {(11<<2)|2,{101,108,0}}, +/* 11552 */ {(16<<2)|3,{101,109,48}}, +/* 11553 */ {(16<<2)|3,{101,109,49}}, +/* 11554 */ {(16<<2)|3,{101,109,50}}, +/* 11555 */ {(16<<2)|3,{101,109,97}}, +/* 11556 */ {(16<<2)|3,{101,109,99}}, +/* 11557 */ {(16<<2)|3,{101,109,101}}, +/* 11558 */ {(16<<2)|3,{101,109,105}}, +/* 11559 */ {(16<<2)|3,{101,109,111}}, +/* 11560 */ {(16<<2)|3,{101,109,115}}, +/* 11561 */ {(16<<2)|3,{101,109,116}}, +/* 11562 */ {(11<<2)|2,{101,109,0}}, +/* 11563 */ {(11<<2)|2,{101,109,0}}, +/* 11564 */ {(11<<2)|2,{101,109,0}}, +/* 11565 */ {(11<<2)|2,{101,109,0}}, +/* 11566 */ {(11<<2)|2,{101,109,0}}, +/* 11567 */ {(11<<2)|2,{101,109,0}}, +/* 11568 */ {(11<<2)|2,{101,109,0}}, +/* 11569 */ {(11<<2)|2,{101,109,0}}, +/* 11570 */ {(11<<2)|2,{101,109,0}}, +/* 11571 */ {(11<<2)|2,{101,109,0}}, +/* 11572 */ {(11<<2)|2,{101,109,0}}, +/* 11573 */ {(11<<2)|2,{101,109,0}}, +/* 11574 */ {(11<<2)|2,{101,109,0}}, +/* 11575 */ {(11<<2)|2,{101,109,0}}, +/* 11576 */ {(11<<2)|2,{101,109,0}}, +/* 11577 */ {(11<<2)|2,{101,109,0}}, +/* 11578 */ {(11<<2)|2,{101,109,0}}, +/* 11579 */ {(11<<2)|2,{101,109,0}}, +/* 11580 */ {(11<<2)|2,{101,109,0}}, +/* 11581 */ {(11<<2)|2,{101,109,0}}, +/* 11582 */ {(11<<2)|2,{101,109,0}}, +/* 11583 */ {(11<<2)|2,{101,109,0}}, +/* 11584 */ {(16<<2)|3,{101,110,48}}, +/* 11585 */ {(16<<2)|3,{101,110,49}}, +/* 11586 */ {(16<<2)|3,{101,110,50}}, +/* 11587 */ {(16<<2)|3,{101,110,97}}, +/* 11588 */ {(16<<2)|3,{101,110,99}}, +/* 11589 */ {(16<<2)|3,{101,110,101}}, +/* 11590 */ {(16<<2)|3,{101,110,105}}, +/* 11591 */ {(16<<2)|3,{101,110,111}}, +/* 11592 */ {(16<<2)|3,{101,110,115}}, +/* 11593 */ {(16<<2)|3,{101,110,116}}, +/* 11594 */ {(11<<2)|2,{101,110,0}}, +/* 11595 */ {(11<<2)|2,{101,110,0}}, +/* 11596 */ {(11<<2)|2,{101,110,0}}, +/* 11597 */ {(11<<2)|2,{101,110,0}}, +/* 11598 */ {(11<<2)|2,{101,110,0}}, +/* 11599 */ {(11<<2)|2,{101,110,0}}, +/* 11600 */ {(11<<2)|2,{101,110,0}}, +/* 11601 */ {(11<<2)|2,{101,110,0}}, +/* 11602 */ {(11<<2)|2,{101,110,0}}, +/* 11603 */ {(11<<2)|2,{101,110,0}}, +/* 11604 */ {(11<<2)|2,{101,110,0}}, +/* 11605 */ {(11<<2)|2,{101,110,0}}, +/* 11606 */ {(11<<2)|2,{101,110,0}}, +/* 11607 */ {(11<<2)|2,{101,110,0}}, +/* 11608 */ {(11<<2)|2,{101,110,0}}, +/* 11609 */ {(11<<2)|2,{101,110,0}}, +/* 11610 */ {(11<<2)|2,{101,110,0}}, +/* 11611 */ {(11<<2)|2,{101,110,0}}, +/* 11612 */ {(11<<2)|2,{101,110,0}}, +/* 11613 */ {(11<<2)|2,{101,110,0}}, +/* 11614 */ {(11<<2)|2,{101,110,0}}, +/* 11615 */ {(11<<2)|2,{101,110,0}}, +/* 11616 */ {(16<<2)|3,{101,112,48}}, +/* 11617 */ {(16<<2)|3,{101,112,49}}, +/* 11618 */ {(16<<2)|3,{101,112,50}}, +/* 11619 */ {(16<<2)|3,{101,112,97}}, +/* 11620 */ {(16<<2)|3,{101,112,99}}, +/* 11621 */ {(16<<2)|3,{101,112,101}}, +/* 11622 */ {(16<<2)|3,{101,112,105}}, +/* 11623 */ {(16<<2)|3,{101,112,111}}, +/* 11624 */ {(16<<2)|3,{101,112,115}}, +/* 11625 */ {(16<<2)|3,{101,112,116}}, +/* 11626 */ {(11<<2)|2,{101,112,0}}, +/* 11627 */ {(11<<2)|2,{101,112,0}}, +/* 11628 */ {(11<<2)|2,{101,112,0}}, +/* 11629 */ {(11<<2)|2,{101,112,0}}, +/* 11630 */ {(11<<2)|2,{101,112,0}}, +/* 11631 */ {(11<<2)|2,{101,112,0}}, +/* 11632 */ {(11<<2)|2,{101,112,0}}, +/* 11633 */ {(11<<2)|2,{101,112,0}}, +/* 11634 */ {(11<<2)|2,{101,112,0}}, +/* 11635 */ {(11<<2)|2,{101,112,0}}, +/* 11636 */ {(11<<2)|2,{101,112,0}}, +/* 11637 */ {(11<<2)|2,{101,112,0}}, +/* 11638 */ {(11<<2)|2,{101,112,0}}, +/* 11639 */ {(11<<2)|2,{101,112,0}}, +/* 11640 */ {(11<<2)|2,{101,112,0}}, +/* 11641 */ {(11<<2)|2,{101,112,0}}, +/* 11642 */ {(11<<2)|2,{101,112,0}}, +/* 11643 */ {(11<<2)|2,{101,112,0}}, +/* 11644 */ {(11<<2)|2,{101,112,0}}, +/* 11645 */ {(11<<2)|2,{101,112,0}}, +/* 11646 */ {(11<<2)|2,{101,112,0}}, +/* 11647 */ {(11<<2)|2,{101,112,0}}, +/* 11648 */ {(16<<2)|3,{101,114,48}}, +/* 11649 */ {(16<<2)|3,{101,114,49}}, +/* 11650 */ {(16<<2)|3,{101,114,50}}, +/* 11651 */ {(16<<2)|3,{101,114,97}}, +/* 11652 */ {(16<<2)|3,{101,114,99}}, +/* 11653 */ {(16<<2)|3,{101,114,101}}, +/* 11654 */ {(16<<2)|3,{101,114,105}}, +/* 11655 */ {(16<<2)|3,{101,114,111}}, +/* 11656 */ {(16<<2)|3,{101,114,115}}, +/* 11657 */ {(16<<2)|3,{101,114,116}}, +/* 11658 */ {(11<<2)|2,{101,114,0}}, +/* 11659 */ {(11<<2)|2,{101,114,0}}, +/* 11660 */ {(11<<2)|2,{101,114,0}}, +/* 11661 */ {(11<<2)|2,{101,114,0}}, +/* 11662 */ {(11<<2)|2,{101,114,0}}, +/* 11663 */ {(11<<2)|2,{101,114,0}}, +/* 11664 */ {(11<<2)|2,{101,114,0}}, +/* 11665 */ {(11<<2)|2,{101,114,0}}, +/* 11666 */ {(11<<2)|2,{101,114,0}}, +/* 11667 */ {(11<<2)|2,{101,114,0}}, +/* 11668 */ {(11<<2)|2,{101,114,0}}, +/* 11669 */ {(11<<2)|2,{101,114,0}}, +/* 11670 */ {(11<<2)|2,{101,114,0}}, +/* 11671 */ {(11<<2)|2,{101,114,0}}, +/* 11672 */ {(11<<2)|2,{101,114,0}}, +/* 11673 */ {(11<<2)|2,{101,114,0}}, +/* 11674 */ {(11<<2)|2,{101,114,0}}, +/* 11675 */ {(11<<2)|2,{101,114,0}}, +/* 11676 */ {(11<<2)|2,{101,114,0}}, +/* 11677 */ {(11<<2)|2,{101,114,0}}, +/* 11678 */ {(11<<2)|2,{101,114,0}}, +/* 11679 */ {(11<<2)|2,{101,114,0}}, +/* 11680 */ {(16<<2)|3,{101,117,48}}, +/* 11681 */ {(16<<2)|3,{101,117,49}}, +/* 11682 */ {(16<<2)|3,{101,117,50}}, +/* 11683 */ {(16<<2)|3,{101,117,97}}, +/* 11684 */ {(16<<2)|3,{101,117,99}}, +/* 11685 */ {(16<<2)|3,{101,117,101}}, +/* 11686 */ {(16<<2)|3,{101,117,105}}, +/* 11687 */ {(16<<2)|3,{101,117,111}}, +/* 11688 */ {(16<<2)|3,{101,117,115}}, +/* 11689 */ {(16<<2)|3,{101,117,116}}, +/* 11690 */ {(11<<2)|2,{101,117,0}}, +/* 11691 */ {(11<<2)|2,{101,117,0}}, +/* 11692 */ {(11<<2)|2,{101,117,0}}, +/* 11693 */ {(11<<2)|2,{101,117,0}}, +/* 11694 */ {(11<<2)|2,{101,117,0}}, +/* 11695 */ {(11<<2)|2,{101,117,0}}, +/* 11696 */ {(11<<2)|2,{101,117,0}}, +/* 11697 */ {(11<<2)|2,{101,117,0}}, +/* 11698 */ {(11<<2)|2,{101,117,0}}, +/* 11699 */ {(11<<2)|2,{101,117,0}}, +/* 11700 */ {(11<<2)|2,{101,117,0}}, +/* 11701 */ {(11<<2)|2,{101,117,0}}, +/* 11702 */ {(11<<2)|2,{101,117,0}}, +/* 11703 */ {(11<<2)|2,{101,117,0}}, +/* 11704 */ {(11<<2)|2,{101,117,0}}, +/* 11705 */ {(11<<2)|2,{101,117,0}}, +/* 11706 */ {(11<<2)|2,{101,117,0}}, +/* 11707 */ {(11<<2)|2,{101,117,0}}, +/* 11708 */ {(11<<2)|2,{101,117,0}}, +/* 11709 */ {(11<<2)|2,{101,117,0}}, +/* 11710 */ {(11<<2)|2,{101,117,0}}, +/* 11711 */ {(11<<2)|2,{101,117,0}}, +/* 11712 */ {(12<<2)|2,{101,58,0}}, +/* 11713 */ {(12<<2)|2,{101,58,0}}, +/* 11714 */ {(12<<2)|2,{101,58,0}}, +/* 11715 */ {(12<<2)|2,{101,58,0}}, +/* 11716 */ {(12<<2)|2,{101,58,0}}, +/* 11717 */ {(12<<2)|2,{101,58,0}}, +/* 11718 */ {(12<<2)|2,{101,58,0}}, +/* 11719 */ {(12<<2)|2,{101,58,0}}, +/* 11720 */ {(12<<2)|2,{101,58,0}}, +/* 11721 */ {(12<<2)|2,{101,58,0}}, +/* 11722 */ {(12<<2)|2,{101,58,0}}, +/* 11723 */ {(12<<2)|2,{101,58,0}}, +/* 11724 */ {(12<<2)|2,{101,58,0}}, +/* 11725 */ {(12<<2)|2,{101,58,0}}, +/* 11726 */ {(12<<2)|2,{101,58,0}}, +/* 11727 */ {(12<<2)|2,{101,58,0}}, +/* 11728 */ {(12<<2)|2,{101,66,0}}, +/* 11729 */ {(12<<2)|2,{101,66,0}}, +/* 11730 */ {(12<<2)|2,{101,66,0}}, +/* 11731 */ {(12<<2)|2,{101,66,0}}, +/* 11732 */ {(12<<2)|2,{101,66,0}}, +/* 11733 */ {(12<<2)|2,{101,66,0}}, +/* 11734 */ {(12<<2)|2,{101,66,0}}, +/* 11735 */ {(12<<2)|2,{101,66,0}}, +/* 11736 */ {(12<<2)|2,{101,66,0}}, +/* 11737 */ {(12<<2)|2,{101,66,0}}, +/* 11738 */ {(12<<2)|2,{101,66,0}}, +/* 11739 */ {(12<<2)|2,{101,66,0}}, +/* 11740 */ {(12<<2)|2,{101,66,0}}, +/* 11741 */ {(12<<2)|2,{101,66,0}}, +/* 11742 */ {(12<<2)|2,{101,66,0}}, +/* 11743 */ {(12<<2)|2,{101,66,0}}, +/* 11744 */ {(12<<2)|2,{101,67,0}}, +/* 11745 */ {(12<<2)|2,{101,67,0}}, +/* 11746 */ {(12<<2)|2,{101,67,0}}, +/* 11747 */ {(12<<2)|2,{101,67,0}}, +/* 11748 */ {(12<<2)|2,{101,67,0}}, +/* 11749 */ {(12<<2)|2,{101,67,0}}, +/* 11750 */ {(12<<2)|2,{101,67,0}}, +/* 11751 */ {(12<<2)|2,{101,67,0}}, +/* 11752 */ {(12<<2)|2,{101,67,0}}, +/* 11753 */ {(12<<2)|2,{101,67,0}}, +/* 11754 */ {(12<<2)|2,{101,67,0}}, +/* 11755 */ {(12<<2)|2,{101,67,0}}, +/* 11756 */ {(12<<2)|2,{101,67,0}}, +/* 11757 */ {(12<<2)|2,{101,67,0}}, +/* 11758 */ {(12<<2)|2,{101,67,0}}, +/* 11759 */ {(12<<2)|2,{101,67,0}}, +/* 11760 */ {(12<<2)|2,{101,68,0}}, +/* 11761 */ {(12<<2)|2,{101,68,0}}, +/* 11762 */ {(12<<2)|2,{101,68,0}}, +/* 11763 */ {(12<<2)|2,{101,68,0}}, +/* 11764 */ {(12<<2)|2,{101,68,0}}, +/* 11765 */ {(12<<2)|2,{101,68,0}}, +/* 11766 */ {(12<<2)|2,{101,68,0}}, +/* 11767 */ {(12<<2)|2,{101,68,0}}, +/* 11768 */ {(12<<2)|2,{101,68,0}}, +/* 11769 */ {(12<<2)|2,{101,68,0}}, +/* 11770 */ {(12<<2)|2,{101,68,0}}, +/* 11771 */ {(12<<2)|2,{101,68,0}}, +/* 11772 */ {(12<<2)|2,{101,68,0}}, +/* 11773 */ {(12<<2)|2,{101,68,0}}, +/* 11774 */ {(12<<2)|2,{101,68,0}}, +/* 11775 */ {(12<<2)|2,{101,68,0}}, +/* 11776 */ {(12<<2)|2,{101,69,0}}, +/* 11777 */ {(12<<2)|2,{101,69,0}}, +/* 11778 */ {(12<<2)|2,{101,69,0}}, +/* 11779 */ {(12<<2)|2,{101,69,0}}, +/* 11780 */ {(12<<2)|2,{101,69,0}}, +/* 11781 */ {(12<<2)|2,{101,69,0}}, +/* 11782 */ {(12<<2)|2,{101,69,0}}, +/* 11783 */ {(12<<2)|2,{101,69,0}}, +/* 11784 */ {(12<<2)|2,{101,69,0}}, +/* 11785 */ {(12<<2)|2,{101,69,0}}, +/* 11786 */ {(12<<2)|2,{101,69,0}}, +/* 11787 */ {(12<<2)|2,{101,69,0}}, +/* 11788 */ {(12<<2)|2,{101,69,0}}, +/* 11789 */ {(12<<2)|2,{101,69,0}}, +/* 11790 */ {(12<<2)|2,{101,69,0}}, +/* 11791 */ {(12<<2)|2,{101,69,0}}, +/* 11792 */ {(12<<2)|2,{101,70,0}}, +/* 11793 */ {(12<<2)|2,{101,70,0}}, +/* 11794 */ {(12<<2)|2,{101,70,0}}, +/* 11795 */ {(12<<2)|2,{101,70,0}}, +/* 11796 */ {(12<<2)|2,{101,70,0}}, +/* 11797 */ {(12<<2)|2,{101,70,0}}, +/* 11798 */ {(12<<2)|2,{101,70,0}}, +/* 11799 */ {(12<<2)|2,{101,70,0}}, +/* 11800 */ {(12<<2)|2,{101,70,0}}, +/* 11801 */ {(12<<2)|2,{101,70,0}}, +/* 11802 */ {(12<<2)|2,{101,70,0}}, +/* 11803 */ {(12<<2)|2,{101,70,0}}, +/* 11804 */ {(12<<2)|2,{101,70,0}}, +/* 11805 */ {(12<<2)|2,{101,70,0}}, +/* 11806 */ {(12<<2)|2,{101,70,0}}, +/* 11807 */ {(12<<2)|2,{101,70,0}}, +/* 11808 */ {(12<<2)|2,{101,71,0}}, +/* 11809 */ {(12<<2)|2,{101,71,0}}, +/* 11810 */ {(12<<2)|2,{101,71,0}}, +/* 11811 */ {(12<<2)|2,{101,71,0}}, +/* 11812 */ {(12<<2)|2,{101,71,0}}, +/* 11813 */ {(12<<2)|2,{101,71,0}}, +/* 11814 */ {(12<<2)|2,{101,71,0}}, +/* 11815 */ {(12<<2)|2,{101,71,0}}, +/* 11816 */ {(12<<2)|2,{101,71,0}}, +/* 11817 */ {(12<<2)|2,{101,71,0}}, +/* 11818 */ {(12<<2)|2,{101,71,0}}, +/* 11819 */ {(12<<2)|2,{101,71,0}}, +/* 11820 */ {(12<<2)|2,{101,71,0}}, +/* 11821 */ {(12<<2)|2,{101,71,0}}, +/* 11822 */ {(12<<2)|2,{101,71,0}}, +/* 11823 */ {(12<<2)|2,{101,71,0}}, +/* 11824 */ {(12<<2)|2,{101,72,0}}, +/* 11825 */ {(12<<2)|2,{101,72,0}}, +/* 11826 */ {(12<<2)|2,{101,72,0}}, +/* 11827 */ {(12<<2)|2,{101,72,0}}, +/* 11828 */ {(12<<2)|2,{101,72,0}}, +/* 11829 */ {(12<<2)|2,{101,72,0}}, +/* 11830 */ {(12<<2)|2,{101,72,0}}, +/* 11831 */ {(12<<2)|2,{101,72,0}}, +/* 11832 */ {(12<<2)|2,{101,72,0}}, +/* 11833 */ {(12<<2)|2,{101,72,0}}, +/* 11834 */ {(12<<2)|2,{101,72,0}}, +/* 11835 */ {(12<<2)|2,{101,72,0}}, +/* 11836 */ {(12<<2)|2,{101,72,0}}, +/* 11837 */ {(12<<2)|2,{101,72,0}}, +/* 11838 */ {(12<<2)|2,{101,72,0}}, +/* 11839 */ {(12<<2)|2,{101,72,0}}, +/* 11840 */ {(12<<2)|2,{101,73,0}}, +/* 11841 */ {(12<<2)|2,{101,73,0}}, +/* 11842 */ {(12<<2)|2,{101,73,0}}, +/* 11843 */ {(12<<2)|2,{101,73,0}}, +/* 11844 */ {(12<<2)|2,{101,73,0}}, +/* 11845 */ {(12<<2)|2,{101,73,0}}, +/* 11846 */ {(12<<2)|2,{101,73,0}}, +/* 11847 */ {(12<<2)|2,{101,73,0}}, +/* 11848 */ {(12<<2)|2,{101,73,0}}, +/* 11849 */ {(12<<2)|2,{101,73,0}}, +/* 11850 */ {(12<<2)|2,{101,73,0}}, +/* 11851 */ {(12<<2)|2,{101,73,0}}, +/* 11852 */ {(12<<2)|2,{101,73,0}}, +/* 11853 */ {(12<<2)|2,{101,73,0}}, +/* 11854 */ {(12<<2)|2,{101,73,0}}, +/* 11855 */ {(12<<2)|2,{101,73,0}}, +/* 11856 */ {(12<<2)|2,{101,74,0}}, +/* 11857 */ {(12<<2)|2,{101,74,0}}, +/* 11858 */ {(12<<2)|2,{101,74,0}}, +/* 11859 */ {(12<<2)|2,{101,74,0}}, +/* 11860 */ {(12<<2)|2,{101,74,0}}, +/* 11861 */ {(12<<2)|2,{101,74,0}}, +/* 11862 */ {(12<<2)|2,{101,74,0}}, +/* 11863 */ {(12<<2)|2,{101,74,0}}, +/* 11864 */ {(12<<2)|2,{101,74,0}}, +/* 11865 */ {(12<<2)|2,{101,74,0}}, +/* 11866 */ {(12<<2)|2,{101,74,0}}, +/* 11867 */ {(12<<2)|2,{101,74,0}}, +/* 11868 */ {(12<<2)|2,{101,74,0}}, +/* 11869 */ {(12<<2)|2,{101,74,0}}, +/* 11870 */ {(12<<2)|2,{101,74,0}}, +/* 11871 */ {(12<<2)|2,{101,74,0}}, +/* 11872 */ {(12<<2)|2,{101,75,0}}, +/* 11873 */ {(12<<2)|2,{101,75,0}}, +/* 11874 */ {(12<<2)|2,{101,75,0}}, +/* 11875 */ {(12<<2)|2,{101,75,0}}, +/* 11876 */ {(12<<2)|2,{101,75,0}}, +/* 11877 */ {(12<<2)|2,{101,75,0}}, +/* 11878 */ {(12<<2)|2,{101,75,0}}, +/* 11879 */ {(12<<2)|2,{101,75,0}}, +/* 11880 */ {(12<<2)|2,{101,75,0}}, +/* 11881 */ {(12<<2)|2,{101,75,0}}, +/* 11882 */ {(12<<2)|2,{101,75,0}}, +/* 11883 */ {(12<<2)|2,{101,75,0}}, +/* 11884 */ {(12<<2)|2,{101,75,0}}, +/* 11885 */ {(12<<2)|2,{101,75,0}}, +/* 11886 */ {(12<<2)|2,{101,75,0}}, +/* 11887 */ {(12<<2)|2,{101,75,0}}, +/* 11888 */ {(12<<2)|2,{101,76,0}}, +/* 11889 */ {(12<<2)|2,{101,76,0}}, +/* 11890 */ {(12<<2)|2,{101,76,0}}, +/* 11891 */ {(12<<2)|2,{101,76,0}}, +/* 11892 */ {(12<<2)|2,{101,76,0}}, +/* 11893 */ {(12<<2)|2,{101,76,0}}, +/* 11894 */ {(12<<2)|2,{101,76,0}}, +/* 11895 */ {(12<<2)|2,{101,76,0}}, +/* 11896 */ {(12<<2)|2,{101,76,0}}, +/* 11897 */ {(12<<2)|2,{101,76,0}}, +/* 11898 */ {(12<<2)|2,{101,76,0}}, +/* 11899 */ {(12<<2)|2,{101,76,0}}, +/* 11900 */ {(12<<2)|2,{101,76,0}}, +/* 11901 */ {(12<<2)|2,{101,76,0}}, +/* 11902 */ {(12<<2)|2,{101,76,0}}, +/* 11903 */ {(12<<2)|2,{101,76,0}}, +/* 11904 */ {(12<<2)|2,{101,77,0}}, +/* 11905 */ {(12<<2)|2,{101,77,0}}, +/* 11906 */ {(12<<2)|2,{101,77,0}}, +/* 11907 */ {(12<<2)|2,{101,77,0}}, +/* 11908 */ {(12<<2)|2,{101,77,0}}, +/* 11909 */ {(12<<2)|2,{101,77,0}}, +/* 11910 */ {(12<<2)|2,{101,77,0}}, +/* 11911 */ {(12<<2)|2,{101,77,0}}, +/* 11912 */ {(12<<2)|2,{101,77,0}}, +/* 11913 */ {(12<<2)|2,{101,77,0}}, +/* 11914 */ {(12<<2)|2,{101,77,0}}, +/* 11915 */ {(12<<2)|2,{101,77,0}}, +/* 11916 */ {(12<<2)|2,{101,77,0}}, +/* 11917 */ {(12<<2)|2,{101,77,0}}, +/* 11918 */ {(12<<2)|2,{101,77,0}}, +/* 11919 */ {(12<<2)|2,{101,77,0}}, +/* 11920 */ {(12<<2)|2,{101,78,0}}, +/* 11921 */ {(12<<2)|2,{101,78,0}}, +/* 11922 */ {(12<<2)|2,{101,78,0}}, +/* 11923 */ {(12<<2)|2,{101,78,0}}, +/* 11924 */ {(12<<2)|2,{101,78,0}}, +/* 11925 */ {(12<<2)|2,{101,78,0}}, +/* 11926 */ {(12<<2)|2,{101,78,0}}, +/* 11927 */ {(12<<2)|2,{101,78,0}}, +/* 11928 */ {(12<<2)|2,{101,78,0}}, +/* 11929 */ {(12<<2)|2,{101,78,0}}, +/* 11930 */ {(12<<2)|2,{101,78,0}}, +/* 11931 */ {(12<<2)|2,{101,78,0}}, +/* 11932 */ {(12<<2)|2,{101,78,0}}, +/* 11933 */ {(12<<2)|2,{101,78,0}}, +/* 11934 */ {(12<<2)|2,{101,78,0}}, +/* 11935 */ {(12<<2)|2,{101,78,0}}, +/* 11936 */ {(12<<2)|2,{101,79,0}}, +/* 11937 */ {(12<<2)|2,{101,79,0}}, +/* 11938 */ {(12<<2)|2,{101,79,0}}, +/* 11939 */ {(12<<2)|2,{101,79,0}}, +/* 11940 */ {(12<<2)|2,{101,79,0}}, +/* 11941 */ {(12<<2)|2,{101,79,0}}, +/* 11942 */ {(12<<2)|2,{101,79,0}}, +/* 11943 */ {(12<<2)|2,{101,79,0}}, +/* 11944 */ {(12<<2)|2,{101,79,0}}, +/* 11945 */ {(12<<2)|2,{101,79,0}}, +/* 11946 */ {(12<<2)|2,{101,79,0}}, +/* 11947 */ {(12<<2)|2,{101,79,0}}, +/* 11948 */ {(12<<2)|2,{101,79,0}}, +/* 11949 */ {(12<<2)|2,{101,79,0}}, +/* 11950 */ {(12<<2)|2,{101,79,0}}, +/* 11951 */ {(12<<2)|2,{101,79,0}}, +/* 11952 */ {(12<<2)|2,{101,80,0}}, +/* 11953 */ {(12<<2)|2,{101,80,0}}, +/* 11954 */ {(12<<2)|2,{101,80,0}}, +/* 11955 */ {(12<<2)|2,{101,80,0}}, +/* 11956 */ {(12<<2)|2,{101,80,0}}, +/* 11957 */ {(12<<2)|2,{101,80,0}}, +/* 11958 */ {(12<<2)|2,{101,80,0}}, +/* 11959 */ {(12<<2)|2,{101,80,0}}, +/* 11960 */ {(12<<2)|2,{101,80,0}}, +/* 11961 */ {(12<<2)|2,{101,80,0}}, +/* 11962 */ {(12<<2)|2,{101,80,0}}, +/* 11963 */ {(12<<2)|2,{101,80,0}}, +/* 11964 */ {(12<<2)|2,{101,80,0}}, +/* 11965 */ {(12<<2)|2,{101,80,0}}, +/* 11966 */ {(12<<2)|2,{101,80,0}}, +/* 11967 */ {(12<<2)|2,{101,80,0}}, +/* 11968 */ {(12<<2)|2,{101,81,0}}, +/* 11969 */ {(12<<2)|2,{101,81,0}}, +/* 11970 */ {(12<<2)|2,{101,81,0}}, +/* 11971 */ {(12<<2)|2,{101,81,0}}, +/* 11972 */ {(12<<2)|2,{101,81,0}}, +/* 11973 */ {(12<<2)|2,{101,81,0}}, +/* 11974 */ {(12<<2)|2,{101,81,0}}, +/* 11975 */ {(12<<2)|2,{101,81,0}}, +/* 11976 */ {(12<<2)|2,{101,81,0}}, +/* 11977 */ {(12<<2)|2,{101,81,0}}, +/* 11978 */ {(12<<2)|2,{101,81,0}}, +/* 11979 */ {(12<<2)|2,{101,81,0}}, +/* 11980 */ {(12<<2)|2,{101,81,0}}, +/* 11981 */ {(12<<2)|2,{101,81,0}}, +/* 11982 */ {(12<<2)|2,{101,81,0}}, +/* 11983 */ {(12<<2)|2,{101,81,0}}, +/* 11984 */ {(12<<2)|2,{101,82,0}}, +/* 11985 */ {(12<<2)|2,{101,82,0}}, +/* 11986 */ {(12<<2)|2,{101,82,0}}, +/* 11987 */ {(12<<2)|2,{101,82,0}}, +/* 11988 */ {(12<<2)|2,{101,82,0}}, +/* 11989 */ {(12<<2)|2,{101,82,0}}, +/* 11990 */ {(12<<2)|2,{101,82,0}}, +/* 11991 */ {(12<<2)|2,{101,82,0}}, +/* 11992 */ {(12<<2)|2,{101,82,0}}, +/* 11993 */ {(12<<2)|2,{101,82,0}}, +/* 11994 */ {(12<<2)|2,{101,82,0}}, +/* 11995 */ {(12<<2)|2,{101,82,0}}, +/* 11996 */ {(12<<2)|2,{101,82,0}}, +/* 11997 */ {(12<<2)|2,{101,82,0}}, +/* 11998 */ {(12<<2)|2,{101,82,0}}, +/* 11999 */ {(12<<2)|2,{101,82,0}}, +/* 12000 */ {(12<<2)|2,{101,83,0}}, +/* 12001 */ {(12<<2)|2,{101,83,0}}, +/* 12002 */ {(12<<2)|2,{101,83,0}}, +/* 12003 */ {(12<<2)|2,{101,83,0}}, +/* 12004 */ {(12<<2)|2,{101,83,0}}, +/* 12005 */ {(12<<2)|2,{101,83,0}}, +/* 12006 */ {(12<<2)|2,{101,83,0}}, +/* 12007 */ {(12<<2)|2,{101,83,0}}, +/* 12008 */ {(12<<2)|2,{101,83,0}}, +/* 12009 */ {(12<<2)|2,{101,83,0}}, +/* 12010 */ {(12<<2)|2,{101,83,0}}, +/* 12011 */ {(12<<2)|2,{101,83,0}}, +/* 12012 */ {(12<<2)|2,{101,83,0}}, +/* 12013 */ {(12<<2)|2,{101,83,0}}, +/* 12014 */ {(12<<2)|2,{101,83,0}}, +/* 12015 */ {(12<<2)|2,{101,83,0}}, +/* 12016 */ {(12<<2)|2,{101,84,0}}, +/* 12017 */ {(12<<2)|2,{101,84,0}}, +/* 12018 */ {(12<<2)|2,{101,84,0}}, +/* 12019 */ {(12<<2)|2,{101,84,0}}, +/* 12020 */ {(12<<2)|2,{101,84,0}}, +/* 12021 */ {(12<<2)|2,{101,84,0}}, +/* 12022 */ {(12<<2)|2,{101,84,0}}, +/* 12023 */ {(12<<2)|2,{101,84,0}}, +/* 12024 */ {(12<<2)|2,{101,84,0}}, +/* 12025 */ {(12<<2)|2,{101,84,0}}, +/* 12026 */ {(12<<2)|2,{101,84,0}}, +/* 12027 */ {(12<<2)|2,{101,84,0}}, +/* 12028 */ {(12<<2)|2,{101,84,0}}, +/* 12029 */ {(12<<2)|2,{101,84,0}}, +/* 12030 */ {(12<<2)|2,{101,84,0}}, +/* 12031 */ {(12<<2)|2,{101,84,0}}, +/* 12032 */ {(12<<2)|2,{101,85,0}}, +/* 12033 */ {(12<<2)|2,{101,85,0}}, +/* 12034 */ {(12<<2)|2,{101,85,0}}, +/* 12035 */ {(12<<2)|2,{101,85,0}}, +/* 12036 */ {(12<<2)|2,{101,85,0}}, +/* 12037 */ {(12<<2)|2,{101,85,0}}, +/* 12038 */ {(12<<2)|2,{101,85,0}}, +/* 12039 */ {(12<<2)|2,{101,85,0}}, +/* 12040 */ {(12<<2)|2,{101,85,0}}, +/* 12041 */ {(12<<2)|2,{101,85,0}}, +/* 12042 */ {(12<<2)|2,{101,85,0}}, +/* 12043 */ {(12<<2)|2,{101,85,0}}, +/* 12044 */ {(12<<2)|2,{101,85,0}}, +/* 12045 */ {(12<<2)|2,{101,85,0}}, +/* 12046 */ {(12<<2)|2,{101,85,0}}, +/* 12047 */ {(12<<2)|2,{101,85,0}}, +/* 12048 */ {(12<<2)|2,{101,86,0}}, +/* 12049 */ {(12<<2)|2,{101,86,0}}, +/* 12050 */ {(12<<2)|2,{101,86,0}}, +/* 12051 */ {(12<<2)|2,{101,86,0}}, +/* 12052 */ {(12<<2)|2,{101,86,0}}, +/* 12053 */ {(12<<2)|2,{101,86,0}}, +/* 12054 */ {(12<<2)|2,{101,86,0}}, +/* 12055 */ {(12<<2)|2,{101,86,0}}, +/* 12056 */ {(12<<2)|2,{101,86,0}}, +/* 12057 */ {(12<<2)|2,{101,86,0}}, +/* 12058 */ {(12<<2)|2,{101,86,0}}, +/* 12059 */ {(12<<2)|2,{101,86,0}}, +/* 12060 */ {(12<<2)|2,{101,86,0}}, +/* 12061 */ {(12<<2)|2,{101,86,0}}, +/* 12062 */ {(12<<2)|2,{101,86,0}}, +/* 12063 */ {(12<<2)|2,{101,86,0}}, +/* 12064 */ {(12<<2)|2,{101,87,0}}, +/* 12065 */ {(12<<2)|2,{101,87,0}}, +/* 12066 */ {(12<<2)|2,{101,87,0}}, +/* 12067 */ {(12<<2)|2,{101,87,0}}, +/* 12068 */ {(12<<2)|2,{101,87,0}}, +/* 12069 */ {(12<<2)|2,{101,87,0}}, +/* 12070 */ {(12<<2)|2,{101,87,0}}, +/* 12071 */ {(12<<2)|2,{101,87,0}}, +/* 12072 */ {(12<<2)|2,{101,87,0}}, +/* 12073 */ {(12<<2)|2,{101,87,0}}, +/* 12074 */ {(12<<2)|2,{101,87,0}}, +/* 12075 */ {(12<<2)|2,{101,87,0}}, +/* 12076 */ {(12<<2)|2,{101,87,0}}, +/* 12077 */ {(12<<2)|2,{101,87,0}}, +/* 12078 */ {(12<<2)|2,{101,87,0}}, +/* 12079 */ {(12<<2)|2,{101,87,0}}, +/* 12080 */ {(12<<2)|2,{101,89,0}}, +/* 12081 */ {(12<<2)|2,{101,89,0}}, +/* 12082 */ {(12<<2)|2,{101,89,0}}, +/* 12083 */ {(12<<2)|2,{101,89,0}}, +/* 12084 */ {(12<<2)|2,{101,89,0}}, +/* 12085 */ {(12<<2)|2,{101,89,0}}, +/* 12086 */ {(12<<2)|2,{101,89,0}}, +/* 12087 */ {(12<<2)|2,{101,89,0}}, +/* 12088 */ {(12<<2)|2,{101,89,0}}, +/* 12089 */ {(12<<2)|2,{101,89,0}}, +/* 12090 */ {(12<<2)|2,{101,89,0}}, +/* 12091 */ {(12<<2)|2,{101,89,0}}, +/* 12092 */ {(12<<2)|2,{101,89,0}}, +/* 12093 */ {(12<<2)|2,{101,89,0}}, +/* 12094 */ {(12<<2)|2,{101,89,0}}, +/* 12095 */ {(12<<2)|2,{101,89,0}}, +/* 12096 */ {(12<<2)|2,{101,106,0}}, +/* 12097 */ {(12<<2)|2,{101,106,0}}, +/* 12098 */ {(12<<2)|2,{101,106,0}}, +/* 12099 */ {(12<<2)|2,{101,106,0}}, +/* 12100 */ {(12<<2)|2,{101,106,0}}, +/* 12101 */ {(12<<2)|2,{101,106,0}}, +/* 12102 */ {(12<<2)|2,{101,106,0}}, +/* 12103 */ {(12<<2)|2,{101,106,0}}, +/* 12104 */ {(12<<2)|2,{101,106,0}}, +/* 12105 */ {(12<<2)|2,{101,106,0}}, +/* 12106 */ {(12<<2)|2,{101,106,0}}, +/* 12107 */ {(12<<2)|2,{101,106,0}}, +/* 12108 */ {(12<<2)|2,{101,106,0}}, +/* 12109 */ {(12<<2)|2,{101,106,0}}, +/* 12110 */ {(12<<2)|2,{101,106,0}}, +/* 12111 */ {(12<<2)|2,{101,106,0}}, +/* 12112 */ {(12<<2)|2,{101,107,0}}, +/* 12113 */ {(12<<2)|2,{101,107,0}}, +/* 12114 */ {(12<<2)|2,{101,107,0}}, +/* 12115 */ {(12<<2)|2,{101,107,0}}, +/* 12116 */ {(12<<2)|2,{101,107,0}}, +/* 12117 */ {(12<<2)|2,{101,107,0}}, +/* 12118 */ {(12<<2)|2,{101,107,0}}, +/* 12119 */ {(12<<2)|2,{101,107,0}}, +/* 12120 */ {(12<<2)|2,{101,107,0}}, +/* 12121 */ {(12<<2)|2,{101,107,0}}, +/* 12122 */ {(12<<2)|2,{101,107,0}}, +/* 12123 */ {(12<<2)|2,{101,107,0}}, +/* 12124 */ {(12<<2)|2,{101,107,0}}, +/* 12125 */ {(12<<2)|2,{101,107,0}}, +/* 12126 */ {(12<<2)|2,{101,107,0}}, +/* 12127 */ {(12<<2)|2,{101,107,0}}, +/* 12128 */ {(12<<2)|2,{101,113,0}}, +/* 12129 */ {(12<<2)|2,{101,113,0}}, +/* 12130 */ {(12<<2)|2,{101,113,0}}, +/* 12131 */ {(12<<2)|2,{101,113,0}}, +/* 12132 */ {(12<<2)|2,{101,113,0}}, +/* 12133 */ {(12<<2)|2,{101,113,0}}, +/* 12134 */ {(12<<2)|2,{101,113,0}}, +/* 12135 */ {(12<<2)|2,{101,113,0}}, +/* 12136 */ {(12<<2)|2,{101,113,0}}, +/* 12137 */ {(12<<2)|2,{101,113,0}}, +/* 12138 */ {(12<<2)|2,{101,113,0}}, +/* 12139 */ {(12<<2)|2,{101,113,0}}, +/* 12140 */ {(12<<2)|2,{101,113,0}}, +/* 12141 */ {(12<<2)|2,{101,113,0}}, +/* 12142 */ {(12<<2)|2,{101,113,0}}, +/* 12143 */ {(12<<2)|2,{101,113,0}}, +/* 12144 */ {(12<<2)|2,{101,118,0}}, +/* 12145 */ {(12<<2)|2,{101,118,0}}, +/* 12146 */ {(12<<2)|2,{101,118,0}}, +/* 12147 */ {(12<<2)|2,{101,118,0}}, +/* 12148 */ {(12<<2)|2,{101,118,0}}, +/* 12149 */ {(12<<2)|2,{101,118,0}}, +/* 12150 */ {(12<<2)|2,{101,118,0}}, +/* 12151 */ {(12<<2)|2,{101,118,0}}, +/* 12152 */ {(12<<2)|2,{101,118,0}}, +/* 12153 */ {(12<<2)|2,{101,118,0}}, +/* 12154 */ {(12<<2)|2,{101,118,0}}, +/* 12155 */ {(12<<2)|2,{101,118,0}}, +/* 12156 */ {(12<<2)|2,{101,118,0}}, +/* 12157 */ {(12<<2)|2,{101,118,0}}, +/* 12158 */ {(12<<2)|2,{101,118,0}}, +/* 12159 */ {(12<<2)|2,{101,118,0}}, +/* 12160 */ {(12<<2)|2,{101,119,0}}, +/* 12161 */ {(12<<2)|2,{101,119,0}}, +/* 12162 */ {(12<<2)|2,{101,119,0}}, +/* 12163 */ {(12<<2)|2,{101,119,0}}, +/* 12164 */ {(12<<2)|2,{101,119,0}}, +/* 12165 */ {(12<<2)|2,{101,119,0}}, +/* 12166 */ {(12<<2)|2,{101,119,0}}, +/* 12167 */ {(12<<2)|2,{101,119,0}}, +/* 12168 */ {(12<<2)|2,{101,119,0}}, +/* 12169 */ {(12<<2)|2,{101,119,0}}, +/* 12170 */ {(12<<2)|2,{101,119,0}}, +/* 12171 */ {(12<<2)|2,{101,119,0}}, +/* 12172 */ {(12<<2)|2,{101,119,0}}, +/* 12173 */ {(12<<2)|2,{101,119,0}}, +/* 12174 */ {(12<<2)|2,{101,119,0}}, +/* 12175 */ {(12<<2)|2,{101,119,0}}, +/* 12176 */ {(12<<2)|2,{101,120,0}}, +/* 12177 */ {(12<<2)|2,{101,120,0}}, +/* 12178 */ {(12<<2)|2,{101,120,0}}, +/* 12179 */ {(12<<2)|2,{101,120,0}}, +/* 12180 */ {(12<<2)|2,{101,120,0}}, +/* 12181 */ {(12<<2)|2,{101,120,0}}, +/* 12182 */ {(12<<2)|2,{101,120,0}}, +/* 12183 */ {(12<<2)|2,{101,120,0}}, +/* 12184 */ {(12<<2)|2,{101,120,0}}, +/* 12185 */ {(12<<2)|2,{101,120,0}}, +/* 12186 */ {(12<<2)|2,{101,120,0}}, +/* 12187 */ {(12<<2)|2,{101,120,0}}, +/* 12188 */ {(12<<2)|2,{101,120,0}}, +/* 12189 */ {(12<<2)|2,{101,120,0}}, +/* 12190 */ {(12<<2)|2,{101,120,0}}, +/* 12191 */ {(12<<2)|2,{101,120,0}}, +/* 12192 */ {(12<<2)|2,{101,121,0}}, +/* 12193 */ {(12<<2)|2,{101,121,0}}, +/* 12194 */ {(12<<2)|2,{101,121,0}}, +/* 12195 */ {(12<<2)|2,{101,121,0}}, +/* 12196 */ {(12<<2)|2,{101,121,0}}, +/* 12197 */ {(12<<2)|2,{101,121,0}}, +/* 12198 */ {(12<<2)|2,{101,121,0}}, +/* 12199 */ {(12<<2)|2,{101,121,0}}, +/* 12200 */ {(12<<2)|2,{101,121,0}}, +/* 12201 */ {(12<<2)|2,{101,121,0}}, +/* 12202 */ {(12<<2)|2,{101,121,0}}, +/* 12203 */ {(12<<2)|2,{101,121,0}}, +/* 12204 */ {(12<<2)|2,{101,121,0}}, +/* 12205 */ {(12<<2)|2,{101,121,0}}, +/* 12206 */ {(12<<2)|2,{101,121,0}}, +/* 12207 */ {(12<<2)|2,{101,121,0}}, +/* 12208 */ {(12<<2)|2,{101,122,0}}, +/* 12209 */ {(12<<2)|2,{101,122,0}}, +/* 12210 */ {(12<<2)|2,{101,122,0}}, +/* 12211 */ {(12<<2)|2,{101,122,0}}, +/* 12212 */ {(12<<2)|2,{101,122,0}}, +/* 12213 */ {(12<<2)|2,{101,122,0}}, +/* 12214 */ {(12<<2)|2,{101,122,0}}, +/* 12215 */ {(12<<2)|2,{101,122,0}}, +/* 12216 */ {(12<<2)|2,{101,122,0}}, +/* 12217 */ {(12<<2)|2,{101,122,0}}, +/* 12218 */ {(12<<2)|2,{101,122,0}}, +/* 12219 */ {(12<<2)|2,{101,122,0}}, +/* 12220 */ {(12<<2)|2,{101,122,0}}, +/* 12221 */ {(12<<2)|2,{101,122,0}}, +/* 12222 */ {(12<<2)|2,{101,122,0}}, +/* 12223 */ {(12<<2)|2,{101,122,0}}, +/* 12224 */ {(13<<2)|2,{101,38,0}}, +/* 12225 */ {(13<<2)|2,{101,38,0}}, +/* 12226 */ {(13<<2)|2,{101,38,0}}, +/* 12227 */ {(13<<2)|2,{101,38,0}}, +/* 12228 */ {(13<<2)|2,{101,38,0}}, +/* 12229 */ {(13<<2)|2,{101,38,0}}, +/* 12230 */ {(13<<2)|2,{101,38,0}}, +/* 12231 */ {(13<<2)|2,{101,38,0}}, +/* 12232 */ {(13<<2)|2,{101,42,0}}, +/* 12233 */ {(13<<2)|2,{101,42,0}}, +/* 12234 */ {(13<<2)|2,{101,42,0}}, +/* 12235 */ {(13<<2)|2,{101,42,0}}, +/* 12236 */ {(13<<2)|2,{101,42,0}}, +/* 12237 */ {(13<<2)|2,{101,42,0}}, +/* 12238 */ {(13<<2)|2,{101,42,0}}, +/* 12239 */ {(13<<2)|2,{101,42,0}}, +/* 12240 */ {(13<<2)|2,{101,44,0}}, +/* 12241 */ {(13<<2)|2,{101,44,0}}, +/* 12242 */ {(13<<2)|2,{101,44,0}}, +/* 12243 */ {(13<<2)|2,{101,44,0}}, +/* 12244 */ {(13<<2)|2,{101,44,0}}, +/* 12245 */ {(13<<2)|2,{101,44,0}}, +/* 12246 */ {(13<<2)|2,{101,44,0}}, +/* 12247 */ {(13<<2)|2,{101,44,0}}, +/* 12248 */ {(13<<2)|2,{101,59,0}}, +/* 12249 */ {(13<<2)|2,{101,59,0}}, +/* 12250 */ {(13<<2)|2,{101,59,0}}, +/* 12251 */ {(13<<2)|2,{101,59,0}}, +/* 12252 */ {(13<<2)|2,{101,59,0}}, +/* 12253 */ {(13<<2)|2,{101,59,0}}, +/* 12254 */ {(13<<2)|2,{101,59,0}}, +/* 12255 */ {(13<<2)|2,{101,59,0}}, +/* 12256 */ {(13<<2)|2,{101,88,0}}, +/* 12257 */ {(13<<2)|2,{101,88,0}}, +/* 12258 */ {(13<<2)|2,{101,88,0}}, +/* 12259 */ {(13<<2)|2,{101,88,0}}, +/* 12260 */ {(13<<2)|2,{101,88,0}}, +/* 12261 */ {(13<<2)|2,{101,88,0}}, +/* 12262 */ {(13<<2)|2,{101,88,0}}, +/* 12263 */ {(13<<2)|2,{101,88,0}}, +/* 12264 */ {(13<<2)|2,{101,90,0}}, +/* 12265 */ {(13<<2)|2,{101,90,0}}, +/* 12266 */ {(13<<2)|2,{101,90,0}}, +/* 12267 */ {(13<<2)|2,{101,90,0}}, +/* 12268 */ {(13<<2)|2,{101,90,0}}, +/* 12269 */ {(13<<2)|2,{101,90,0}}, +/* 12270 */ {(13<<2)|2,{101,90,0}}, +/* 12271 */ {(13<<2)|2,{101,90,0}}, +/* 12272 */ {(15<<2)|2,{101,33,0}}, +/* 12273 */ {(15<<2)|2,{101,33,0}}, +/* 12274 */ {(15<<2)|2,{101,34,0}}, +/* 12275 */ {(15<<2)|2,{101,34,0}}, +/* 12276 */ {(15<<2)|2,{101,40,0}}, +/* 12277 */ {(15<<2)|2,{101,40,0}}, +/* 12278 */ {(15<<2)|2,{101,41,0}}, +/* 12279 */ {(15<<2)|2,{101,41,0}}, +/* 12280 */ {(15<<2)|2,{101,63,0}}, +/* 12281 */ {(15<<2)|2,{101,63,0}}, +/* 12282 */ {(16<<2)|2,{101,39,0}}, +/* 12283 */ {(16<<2)|2,{101,43,0}}, +/* 12284 */ {(16<<2)|2,{101,124,0}}, +/* 12285 */ {(5<<2)|1,{101,0,0}}, +/* 12286 */ {(5<<2)|1,{101,0,0}}, +/* 12287 */ {(5<<2)|1,{101,0,0}}, +/* 12288 */ {(15<<2)|3,{105,48,48}}, +/* 12289 */ {(15<<2)|3,{105,48,48}}, +/* 12290 */ {(15<<2)|3,{105,48,49}}, +/* 12291 */ {(15<<2)|3,{105,48,49}}, +/* 12292 */ {(15<<2)|3,{105,48,50}}, +/* 12293 */ {(15<<2)|3,{105,48,50}}, +/* 12294 */ {(15<<2)|3,{105,48,97}}, +/* 12295 */ {(15<<2)|3,{105,48,97}}, +/* 12296 */ {(15<<2)|3,{105,48,99}}, +/* 12297 */ {(15<<2)|3,{105,48,99}}, +/* 12298 */ {(15<<2)|3,{105,48,101}}, +/* 12299 */ {(15<<2)|3,{105,48,101}}, +/* 12300 */ {(15<<2)|3,{105,48,105}}, +/* 12301 */ {(15<<2)|3,{105,48,105}}, +/* 12302 */ {(15<<2)|3,{105,48,111}}, +/* 12303 */ {(15<<2)|3,{105,48,111}}, +/* 12304 */ {(15<<2)|3,{105,48,115}}, +/* 12305 */ {(15<<2)|3,{105,48,115}}, +/* 12306 */ {(15<<2)|3,{105,48,116}}, +/* 12307 */ {(15<<2)|3,{105,48,116}}, +/* 12308 */ {(16<<2)|3,{105,48,32}}, +/* 12309 */ {(16<<2)|3,{105,48,37}}, +/* 12310 */ {(16<<2)|3,{105,48,45}}, +/* 12311 */ {(16<<2)|3,{105,48,46}}, +/* 12312 */ {(16<<2)|3,{105,48,47}}, +/* 12313 */ {(16<<2)|3,{105,48,51}}, +/* 12314 */ {(16<<2)|3,{105,48,52}}, +/* 12315 */ {(16<<2)|3,{105,48,53}}, +/* 12316 */ {(16<<2)|3,{105,48,54}}, +/* 12317 */ {(16<<2)|3,{105,48,55}}, +/* 12318 */ {(16<<2)|3,{105,48,56}}, +/* 12319 */ {(16<<2)|3,{105,48,57}}, +/* 12320 */ {(16<<2)|3,{105,48,61}}, +/* 12321 */ {(16<<2)|3,{105,48,65}}, +/* 12322 */ {(16<<2)|3,{105,48,95}}, +/* 12323 */ {(16<<2)|3,{105,48,98}}, +/* 12324 */ {(16<<2)|3,{105,48,100}}, +/* 12325 */ {(16<<2)|3,{105,48,102}}, +/* 12326 */ {(16<<2)|3,{105,48,103}}, +/* 12327 */ {(16<<2)|3,{105,48,104}}, +/* 12328 */ {(16<<2)|3,{105,48,108}}, +/* 12329 */ {(16<<2)|3,{105,48,109}}, +/* 12330 */ {(16<<2)|3,{105,48,110}}, +/* 12331 */ {(16<<2)|3,{105,48,112}}, +/* 12332 */ {(16<<2)|3,{105,48,114}}, +/* 12333 */ {(16<<2)|3,{105,48,117}}, +/* 12334 */ {(10<<2)|2,{105,48,0}}, +/* 12335 */ {(10<<2)|2,{105,48,0}}, +/* 12336 */ {(10<<2)|2,{105,48,0}}, +/* 12337 */ {(10<<2)|2,{105,48,0}}, +/* 12338 */ {(10<<2)|2,{105,48,0}}, +/* 12339 */ {(10<<2)|2,{105,48,0}}, +/* 12340 */ {(10<<2)|2,{105,48,0}}, +/* 12341 */ {(10<<2)|2,{105,48,0}}, +/* 12342 */ {(10<<2)|2,{105,48,0}}, +/* 12343 */ {(10<<2)|2,{105,48,0}}, +/* 12344 */ {(10<<2)|2,{105,48,0}}, +/* 12345 */ {(10<<2)|2,{105,48,0}}, +/* 12346 */ {(10<<2)|2,{105,48,0}}, +/* 12347 */ {(10<<2)|2,{105,48,0}}, +/* 12348 */ {(10<<2)|2,{105,48,0}}, +/* 12349 */ {(10<<2)|2,{105,48,0}}, +/* 12350 */ {(10<<2)|2,{105,48,0}}, +/* 12351 */ {(10<<2)|2,{105,48,0}}, +/* 12352 */ {(15<<2)|3,{105,49,48}}, +/* 12353 */ {(15<<2)|3,{105,49,48}}, +/* 12354 */ {(15<<2)|3,{105,49,49}}, +/* 12355 */ {(15<<2)|3,{105,49,49}}, +/* 12356 */ {(15<<2)|3,{105,49,50}}, +/* 12357 */ {(15<<2)|3,{105,49,50}}, +/* 12358 */ {(15<<2)|3,{105,49,97}}, +/* 12359 */ {(15<<2)|3,{105,49,97}}, +/* 12360 */ {(15<<2)|3,{105,49,99}}, +/* 12361 */ {(15<<2)|3,{105,49,99}}, +/* 12362 */ {(15<<2)|3,{105,49,101}}, +/* 12363 */ {(15<<2)|3,{105,49,101}}, +/* 12364 */ {(15<<2)|3,{105,49,105}}, +/* 12365 */ {(15<<2)|3,{105,49,105}}, +/* 12366 */ {(15<<2)|3,{105,49,111}}, +/* 12367 */ {(15<<2)|3,{105,49,111}}, +/* 12368 */ {(15<<2)|3,{105,49,115}}, +/* 12369 */ {(15<<2)|3,{105,49,115}}, +/* 12370 */ {(15<<2)|3,{105,49,116}}, +/* 12371 */ {(15<<2)|3,{105,49,116}}, +/* 12372 */ {(16<<2)|3,{105,49,32}}, +/* 12373 */ {(16<<2)|3,{105,49,37}}, +/* 12374 */ {(16<<2)|3,{105,49,45}}, +/* 12375 */ {(16<<2)|3,{105,49,46}}, +/* 12376 */ {(16<<2)|3,{105,49,47}}, +/* 12377 */ {(16<<2)|3,{105,49,51}}, +/* 12378 */ {(16<<2)|3,{105,49,52}}, +/* 12379 */ {(16<<2)|3,{105,49,53}}, +/* 12380 */ {(16<<2)|3,{105,49,54}}, +/* 12381 */ {(16<<2)|3,{105,49,55}}, +/* 12382 */ {(16<<2)|3,{105,49,56}}, +/* 12383 */ {(16<<2)|3,{105,49,57}}, +/* 12384 */ {(16<<2)|3,{105,49,61}}, +/* 12385 */ {(16<<2)|3,{105,49,65}}, +/* 12386 */ {(16<<2)|3,{105,49,95}}, +/* 12387 */ {(16<<2)|3,{105,49,98}}, +/* 12388 */ {(16<<2)|3,{105,49,100}}, +/* 12389 */ {(16<<2)|3,{105,49,102}}, +/* 12390 */ {(16<<2)|3,{105,49,103}}, +/* 12391 */ {(16<<2)|3,{105,49,104}}, +/* 12392 */ {(16<<2)|3,{105,49,108}}, +/* 12393 */ {(16<<2)|3,{105,49,109}}, +/* 12394 */ {(16<<2)|3,{105,49,110}}, +/* 12395 */ {(16<<2)|3,{105,49,112}}, +/* 12396 */ {(16<<2)|3,{105,49,114}}, +/* 12397 */ {(16<<2)|3,{105,49,117}}, +/* 12398 */ {(10<<2)|2,{105,49,0}}, +/* 12399 */ {(10<<2)|2,{105,49,0}}, +/* 12400 */ {(10<<2)|2,{105,49,0}}, +/* 12401 */ {(10<<2)|2,{105,49,0}}, +/* 12402 */ {(10<<2)|2,{105,49,0}}, +/* 12403 */ {(10<<2)|2,{105,49,0}}, +/* 12404 */ {(10<<2)|2,{105,49,0}}, +/* 12405 */ {(10<<2)|2,{105,49,0}}, +/* 12406 */ {(10<<2)|2,{105,49,0}}, +/* 12407 */ {(10<<2)|2,{105,49,0}}, +/* 12408 */ {(10<<2)|2,{105,49,0}}, +/* 12409 */ {(10<<2)|2,{105,49,0}}, +/* 12410 */ {(10<<2)|2,{105,49,0}}, +/* 12411 */ {(10<<2)|2,{105,49,0}}, +/* 12412 */ {(10<<2)|2,{105,49,0}}, +/* 12413 */ {(10<<2)|2,{105,49,0}}, +/* 12414 */ {(10<<2)|2,{105,49,0}}, +/* 12415 */ {(10<<2)|2,{105,49,0}}, +/* 12416 */ {(15<<2)|3,{105,50,48}}, +/* 12417 */ {(15<<2)|3,{105,50,48}}, +/* 12418 */ {(15<<2)|3,{105,50,49}}, +/* 12419 */ {(15<<2)|3,{105,50,49}}, +/* 12420 */ {(15<<2)|3,{105,50,50}}, +/* 12421 */ {(15<<2)|3,{105,50,50}}, +/* 12422 */ {(15<<2)|3,{105,50,97}}, +/* 12423 */ {(15<<2)|3,{105,50,97}}, +/* 12424 */ {(15<<2)|3,{105,50,99}}, +/* 12425 */ {(15<<2)|3,{105,50,99}}, +/* 12426 */ {(15<<2)|3,{105,50,101}}, +/* 12427 */ {(15<<2)|3,{105,50,101}}, +/* 12428 */ {(15<<2)|3,{105,50,105}}, +/* 12429 */ {(15<<2)|3,{105,50,105}}, +/* 12430 */ {(15<<2)|3,{105,50,111}}, +/* 12431 */ {(15<<2)|3,{105,50,111}}, +/* 12432 */ {(15<<2)|3,{105,50,115}}, +/* 12433 */ {(15<<2)|3,{105,50,115}}, +/* 12434 */ {(15<<2)|3,{105,50,116}}, +/* 12435 */ {(15<<2)|3,{105,50,116}}, +/* 12436 */ {(16<<2)|3,{105,50,32}}, +/* 12437 */ {(16<<2)|3,{105,50,37}}, +/* 12438 */ {(16<<2)|3,{105,50,45}}, +/* 12439 */ {(16<<2)|3,{105,50,46}}, +/* 12440 */ {(16<<2)|3,{105,50,47}}, +/* 12441 */ {(16<<2)|3,{105,50,51}}, +/* 12442 */ {(16<<2)|3,{105,50,52}}, +/* 12443 */ {(16<<2)|3,{105,50,53}}, +/* 12444 */ {(16<<2)|3,{105,50,54}}, +/* 12445 */ {(16<<2)|3,{105,50,55}}, +/* 12446 */ {(16<<2)|3,{105,50,56}}, +/* 12447 */ {(16<<2)|3,{105,50,57}}, +/* 12448 */ {(16<<2)|3,{105,50,61}}, +/* 12449 */ {(16<<2)|3,{105,50,65}}, +/* 12450 */ {(16<<2)|3,{105,50,95}}, +/* 12451 */ {(16<<2)|3,{105,50,98}}, +/* 12452 */ {(16<<2)|3,{105,50,100}}, +/* 12453 */ {(16<<2)|3,{105,50,102}}, +/* 12454 */ {(16<<2)|3,{105,50,103}}, +/* 12455 */ {(16<<2)|3,{105,50,104}}, +/* 12456 */ {(16<<2)|3,{105,50,108}}, +/* 12457 */ {(16<<2)|3,{105,50,109}}, +/* 12458 */ {(16<<2)|3,{105,50,110}}, +/* 12459 */ {(16<<2)|3,{105,50,112}}, +/* 12460 */ {(16<<2)|3,{105,50,114}}, +/* 12461 */ {(16<<2)|3,{105,50,117}}, +/* 12462 */ {(10<<2)|2,{105,50,0}}, +/* 12463 */ {(10<<2)|2,{105,50,0}}, +/* 12464 */ {(10<<2)|2,{105,50,0}}, +/* 12465 */ {(10<<2)|2,{105,50,0}}, +/* 12466 */ {(10<<2)|2,{105,50,0}}, +/* 12467 */ {(10<<2)|2,{105,50,0}}, +/* 12468 */ {(10<<2)|2,{105,50,0}}, +/* 12469 */ {(10<<2)|2,{105,50,0}}, +/* 12470 */ {(10<<2)|2,{105,50,0}}, +/* 12471 */ {(10<<2)|2,{105,50,0}}, +/* 12472 */ {(10<<2)|2,{105,50,0}}, +/* 12473 */ {(10<<2)|2,{105,50,0}}, +/* 12474 */ {(10<<2)|2,{105,50,0}}, +/* 12475 */ {(10<<2)|2,{105,50,0}}, +/* 12476 */ {(10<<2)|2,{105,50,0}}, +/* 12477 */ {(10<<2)|2,{105,50,0}}, +/* 12478 */ {(10<<2)|2,{105,50,0}}, +/* 12479 */ {(10<<2)|2,{105,50,0}}, +/* 12480 */ {(15<<2)|3,{105,97,48}}, +/* 12481 */ {(15<<2)|3,{105,97,48}}, +/* 12482 */ {(15<<2)|3,{105,97,49}}, +/* 12483 */ {(15<<2)|3,{105,97,49}}, +/* 12484 */ {(15<<2)|3,{105,97,50}}, +/* 12485 */ {(15<<2)|3,{105,97,50}}, +/* 12486 */ {(15<<2)|3,{105,97,97}}, +/* 12487 */ {(15<<2)|3,{105,97,97}}, +/* 12488 */ {(15<<2)|3,{105,97,99}}, +/* 12489 */ {(15<<2)|3,{105,97,99}}, +/* 12490 */ {(15<<2)|3,{105,97,101}}, +/* 12491 */ {(15<<2)|3,{105,97,101}}, +/* 12492 */ {(15<<2)|3,{105,97,105}}, +/* 12493 */ {(15<<2)|3,{105,97,105}}, +/* 12494 */ {(15<<2)|3,{105,97,111}}, +/* 12495 */ {(15<<2)|3,{105,97,111}}, +/* 12496 */ {(15<<2)|3,{105,97,115}}, +/* 12497 */ {(15<<2)|3,{105,97,115}}, +/* 12498 */ {(15<<2)|3,{105,97,116}}, +/* 12499 */ {(15<<2)|3,{105,97,116}}, +/* 12500 */ {(16<<2)|3,{105,97,32}}, +/* 12501 */ {(16<<2)|3,{105,97,37}}, +/* 12502 */ {(16<<2)|3,{105,97,45}}, +/* 12503 */ {(16<<2)|3,{105,97,46}}, +/* 12504 */ {(16<<2)|3,{105,97,47}}, +/* 12505 */ {(16<<2)|3,{105,97,51}}, +/* 12506 */ {(16<<2)|3,{105,97,52}}, +/* 12507 */ {(16<<2)|3,{105,97,53}}, +/* 12508 */ {(16<<2)|3,{105,97,54}}, +/* 12509 */ {(16<<2)|3,{105,97,55}}, +/* 12510 */ {(16<<2)|3,{105,97,56}}, +/* 12511 */ {(16<<2)|3,{105,97,57}}, +/* 12512 */ {(16<<2)|3,{105,97,61}}, +/* 12513 */ {(16<<2)|3,{105,97,65}}, +/* 12514 */ {(16<<2)|3,{105,97,95}}, +/* 12515 */ {(16<<2)|3,{105,97,98}}, +/* 12516 */ {(16<<2)|3,{105,97,100}}, +/* 12517 */ {(16<<2)|3,{105,97,102}}, +/* 12518 */ {(16<<2)|3,{105,97,103}}, +/* 12519 */ {(16<<2)|3,{105,97,104}}, +/* 12520 */ {(16<<2)|3,{105,97,108}}, +/* 12521 */ {(16<<2)|3,{105,97,109}}, +/* 12522 */ {(16<<2)|3,{105,97,110}}, +/* 12523 */ {(16<<2)|3,{105,97,112}}, +/* 12524 */ {(16<<2)|3,{105,97,114}}, +/* 12525 */ {(16<<2)|3,{105,97,117}}, +/* 12526 */ {(10<<2)|2,{105,97,0}}, +/* 12527 */ {(10<<2)|2,{105,97,0}}, +/* 12528 */ {(10<<2)|2,{105,97,0}}, +/* 12529 */ {(10<<2)|2,{105,97,0}}, +/* 12530 */ {(10<<2)|2,{105,97,0}}, +/* 12531 */ {(10<<2)|2,{105,97,0}}, +/* 12532 */ {(10<<2)|2,{105,97,0}}, +/* 12533 */ {(10<<2)|2,{105,97,0}}, +/* 12534 */ {(10<<2)|2,{105,97,0}}, +/* 12535 */ {(10<<2)|2,{105,97,0}}, +/* 12536 */ {(10<<2)|2,{105,97,0}}, +/* 12537 */ {(10<<2)|2,{105,97,0}}, +/* 12538 */ {(10<<2)|2,{105,97,0}}, +/* 12539 */ {(10<<2)|2,{105,97,0}}, +/* 12540 */ {(10<<2)|2,{105,97,0}}, +/* 12541 */ {(10<<2)|2,{105,97,0}}, +/* 12542 */ {(10<<2)|2,{105,97,0}}, +/* 12543 */ {(10<<2)|2,{105,97,0}}, +/* 12544 */ {(15<<2)|3,{105,99,48}}, +/* 12545 */ {(15<<2)|3,{105,99,48}}, +/* 12546 */ {(15<<2)|3,{105,99,49}}, +/* 12547 */ {(15<<2)|3,{105,99,49}}, +/* 12548 */ {(15<<2)|3,{105,99,50}}, +/* 12549 */ {(15<<2)|3,{105,99,50}}, +/* 12550 */ {(15<<2)|3,{105,99,97}}, +/* 12551 */ {(15<<2)|3,{105,99,97}}, +/* 12552 */ {(15<<2)|3,{105,99,99}}, +/* 12553 */ {(15<<2)|3,{105,99,99}}, +/* 12554 */ {(15<<2)|3,{105,99,101}}, +/* 12555 */ {(15<<2)|3,{105,99,101}}, +/* 12556 */ {(15<<2)|3,{105,99,105}}, +/* 12557 */ {(15<<2)|3,{105,99,105}}, +/* 12558 */ {(15<<2)|3,{105,99,111}}, +/* 12559 */ {(15<<2)|3,{105,99,111}}, +/* 12560 */ {(15<<2)|3,{105,99,115}}, +/* 12561 */ {(15<<2)|3,{105,99,115}}, +/* 12562 */ {(15<<2)|3,{105,99,116}}, +/* 12563 */ {(15<<2)|3,{105,99,116}}, +/* 12564 */ {(16<<2)|3,{105,99,32}}, +/* 12565 */ {(16<<2)|3,{105,99,37}}, +/* 12566 */ {(16<<2)|3,{105,99,45}}, +/* 12567 */ {(16<<2)|3,{105,99,46}}, +/* 12568 */ {(16<<2)|3,{105,99,47}}, +/* 12569 */ {(16<<2)|3,{105,99,51}}, +/* 12570 */ {(16<<2)|3,{105,99,52}}, +/* 12571 */ {(16<<2)|3,{105,99,53}}, +/* 12572 */ {(16<<2)|3,{105,99,54}}, +/* 12573 */ {(16<<2)|3,{105,99,55}}, +/* 12574 */ {(16<<2)|3,{105,99,56}}, +/* 12575 */ {(16<<2)|3,{105,99,57}}, +/* 12576 */ {(16<<2)|3,{105,99,61}}, +/* 12577 */ {(16<<2)|3,{105,99,65}}, +/* 12578 */ {(16<<2)|3,{105,99,95}}, +/* 12579 */ {(16<<2)|3,{105,99,98}}, +/* 12580 */ {(16<<2)|3,{105,99,100}}, +/* 12581 */ {(16<<2)|3,{105,99,102}}, +/* 12582 */ {(16<<2)|3,{105,99,103}}, +/* 12583 */ {(16<<2)|3,{105,99,104}}, +/* 12584 */ {(16<<2)|3,{105,99,108}}, +/* 12585 */ {(16<<2)|3,{105,99,109}}, +/* 12586 */ {(16<<2)|3,{105,99,110}}, +/* 12587 */ {(16<<2)|3,{105,99,112}}, +/* 12588 */ {(16<<2)|3,{105,99,114}}, +/* 12589 */ {(16<<2)|3,{105,99,117}}, +/* 12590 */ {(10<<2)|2,{105,99,0}}, +/* 12591 */ {(10<<2)|2,{105,99,0}}, +/* 12592 */ {(10<<2)|2,{105,99,0}}, +/* 12593 */ {(10<<2)|2,{105,99,0}}, +/* 12594 */ {(10<<2)|2,{105,99,0}}, +/* 12595 */ {(10<<2)|2,{105,99,0}}, +/* 12596 */ {(10<<2)|2,{105,99,0}}, +/* 12597 */ {(10<<2)|2,{105,99,0}}, +/* 12598 */ {(10<<2)|2,{105,99,0}}, +/* 12599 */ {(10<<2)|2,{105,99,0}}, +/* 12600 */ {(10<<2)|2,{105,99,0}}, +/* 12601 */ {(10<<2)|2,{105,99,0}}, +/* 12602 */ {(10<<2)|2,{105,99,0}}, +/* 12603 */ {(10<<2)|2,{105,99,0}}, +/* 12604 */ {(10<<2)|2,{105,99,0}}, +/* 12605 */ {(10<<2)|2,{105,99,0}}, +/* 12606 */ {(10<<2)|2,{105,99,0}}, +/* 12607 */ {(10<<2)|2,{105,99,0}}, +/* 12608 */ {(15<<2)|3,{105,101,48}}, +/* 12609 */ {(15<<2)|3,{105,101,48}}, +/* 12610 */ {(15<<2)|3,{105,101,49}}, +/* 12611 */ {(15<<2)|3,{105,101,49}}, +/* 12612 */ {(15<<2)|3,{105,101,50}}, +/* 12613 */ {(15<<2)|3,{105,101,50}}, +/* 12614 */ {(15<<2)|3,{105,101,97}}, +/* 12615 */ {(15<<2)|3,{105,101,97}}, +/* 12616 */ {(15<<2)|3,{105,101,99}}, +/* 12617 */ {(15<<2)|3,{105,101,99}}, +/* 12618 */ {(15<<2)|3,{105,101,101}}, +/* 12619 */ {(15<<2)|3,{105,101,101}}, +/* 12620 */ {(15<<2)|3,{105,101,105}}, +/* 12621 */ {(15<<2)|3,{105,101,105}}, +/* 12622 */ {(15<<2)|3,{105,101,111}}, +/* 12623 */ {(15<<2)|3,{105,101,111}}, +/* 12624 */ {(15<<2)|3,{105,101,115}}, +/* 12625 */ {(15<<2)|3,{105,101,115}}, +/* 12626 */ {(15<<2)|3,{105,101,116}}, +/* 12627 */ {(15<<2)|3,{105,101,116}}, +/* 12628 */ {(16<<2)|3,{105,101,32}}, +/* 12629 */ {(16<<2)|3,{105,101,37}}, +/* 12630 */ {(16<<2)|3,{105,101,45}}, +/* 12631 */ {(16<<2)|3,{105,101,46}}, +/* 12632 */ {(16<<2)|3,{105,101,47}}, +/* 12633 */ {(16<<2)|3,{105,101,51}}, +/* 12634 */ {(16<<2)|3,{105,101,52}}, +/* 12635 */ {(16<<2)|3,{105,101,53}}, +/* 12636 */ {(16<<2)|3,{105,101,54}}, +/* 12637 */ {(16<<2)|3,{105,101,55}}, +/* 12638 */ {(16<<2)|3,{105,101,56}}, +/* 12639 */ {(16<<2)|3,{105,101,57}}, +/* 12640 */ {(16<<2)|3,{105,101,61}}, +/* 12641 */ {(16<<2)|3,{105,101,65}}, +/* 12642 */ {(16<<2)|3,{105,101,95}}, +/* 12643 */ {(16<<2)|3,{105,101,98}}, +/* 12644 */ {(16<<2)|3,{105,101,100}}, +/* 12645 */ {(16<<2)|3,{105,101,102}}, +/* 12646 */ {(16<<2)|3,{105,101,103}}, +/* 12647 */ {(16<<2)|3,{105,101,104}}, +/* 12648 */ {(16<<2)|3,{105,101,108}}, +/* 12649 */ {(16<<2)|3,{105,101,109}}, +/* 12650 */ {(16<<2)|3,{105,101,110}}, +/* 12651 */ {(16<<2)|3,{105,101,112}}, +/* 12652 */ {(16<<2)|3,{105,101,114}}, +/* 12653 */ {(16<<2)|3,{105,101,117}}, +/* 12654 */ {(10<<2)|2,{105,101,0}}, +/* 12655 */ {(10<<2)|2,{105,101,0}}, +/* 12656 */ {(10<<2)|2,{105,101,0}}, +/* 12657 */ {(10<<2)|2,{105,101,0}}, +/* 12658 */ {(10<<2)|2,{105,101,0}}, +/* 12659 */ {(10<<2)|2,{105,101,0}}, +/* 12660 */ {(10<<2)|2,{105,101,0}}, +/* 12661 */ {(10<<2)|2,{105,101,0}}, +/* 12662 */ {(10<<2)|2,{105,101,0}}, +/* 12663 */ {(10<<2)|2,{105,101,0}}, +/* 12664 */ {(10<<2)|2,{105,101,0}}, +/* 12665 */ {(10<<2)|2,{105,101,0}}, +/* 12666 */ {(10<<2)|2,{105,101,0}}, +/* 12667 */ {(10<<2)|2,{105,101,0}}, +/* 12668 */ {(10<<2)|2,{105,101,0}}, +/* 12669 */ {(10<<2)|2,{105,101,0}}, +/* 12670 */ {(10<<2)|2,{105,101,0}}, +/* 12671 */ {(10<<2)|2,{105,101,0}}, +/* 12672 */ {(15<<2)|3,{105,105,48}}, +/* 12673 */ {(15<<2)|3,{105,105,48}}, +/* 12674 */ {(15<<2)|3,{105,105,49}}, +/* 12675 */ {(15<<2)|3,{105,105,49}}, +/* 12676 */ {(15<<2)|3,{105,105,50}}, +/* 12677 */ {(15<<2)|3,{105,105,50}}, +/* 12678 */ {(15<<2)|3,{105,105,97}}, +/* 12679 */ {(15<<2)|3,{105,105,97}}, +/* 12680 */ {(15<<2)|3,{105,105,99}}, +/* 12681 */ {(15<<2)|3,{105,105,99}}, +/* 12682 */ {(15<<2)|3,{105,105,101}}, +/* 12683 */ {(15<<2)|3,{105,105,101}}, +/* 12684 */ {(15<<2)|3,{105,105,105}}, +/* 12685 */ {(15<<2)|3,{105,105,105}}, +/* 12686 */ {(15<<2)|3,{105,105,111}}, +/* 12687 */ {(15<<2)|3,{105,105,111}}, +/* 12688 */ {(15<<2)|3,{105,105,115}}, +/* 12689 */ {(15<<2)|3,{105,105,115}}, +/* 12690 */ {(15<<2)|3,{105,105,116}}, +/* 12691 */ {(15<<2)|3,{105,105,116}}, +/* 12692 */ {(16<<2)|3,{105,105,32}}, +/* 12693 */ {(16<<2)|3,{105,105,37}}, +/* 12694 */ {(16<<2)|3,{105,105,45}}, +/* 12695 */ {(16<<2)|3,{105,105,46}}, +/* 12696 */ {(16<<2)|3,{105,105,47}}, +/* 12697 */ {(16<<2)|3,{105,105,51}}, +/* 12698 */ {(16<<2)|3,{105,105,52}}, +/* 12699 */ {(16<<2)|3,{105,105,53}}, +/* 12700 */ {(16<<2)|3,{105,105,54}}, +/* 12701 */ {(16<<2)|3,{105,105,55}}, +/* 12702 */ {(16<<2)|3,{105,105,56}}, +/* 12703 */ {(16<<2)|3,{105,105,57}}, +/* 12704 */ {(16<<2)|3,{105,105,61}}, +/* 12705 */ {(16<<2)|3,{105,105,65}}, +/* 12706 */ {(16<<2)|3,{105,105,95}}, +/* 12707 */ {(16<<2)|3,{105,105,98}}, +/* 12708 */ {(16<<2)|3,{105,105,100}}, +/* 12709 */ {(16<<2)|3,{105,105,102}}, +/* 12710 */ {(16<<2)|3,{105,105,103}}, +/* 12711 */ {(16<<2)|3,{105,105,104}}, +/* 12712 */ {(16<<2)|3,{105,105,108}}, +/* 12713 */ {(16<<2)|3,{105,105,109}}, +/* 12714 */ {(16<<2)|3,{105,105,110}}, +/* 12715 */ {(16<<2)|3,{105,105,112}}, +/* 12716 */ {(16<<2)|3,{105,105,114}}, +/* 12717 */ {(16<<2)|3,{105,105,117}}, +/* 12718 */ {(10<<2)|2,{105,105,0}}, +/* 12719 */ {(10<<2)|2,{105,105,0}}, +/* 12720 */ {(10<<2)|2,{105,105,0}}, +/* 12721 */ {(10<<2)|2,{105,105,0}}, +/* 12722 */ {(10<<2)|2,{105,105,0}}, +/* 12723 */ {(10<<2)|2,{105,105,0}}, +/* 12724 */ {(10<<2)|2,{105,105,0}}, +/* 12725 */ {(10<<2)|2,{105,105,0}}, +/* 12726 */ {(10<<2)|2,{105,105,0}}, +/* 12727 */ {(10<<2)|2,{105,105,0}}, +/* 12728 */ {(10<<2)|2,{105,105,0}}, +/* 12729 */ {(10<<2)|2,{105,105,0}}, +/* 12730 */ {(10<<2)|2,{105,105,0}}, +/* 12731 */ {(10<<2)|2,{105,105,0}}, +/* 12732 */ {(10<<2)|2,{105,105,0}}, +/* 12733 */ {(10<<2)|2,{105,105,0}}, +/* 12734 */ {(10<<2)|2,{105,105,0}}, +/* 12735 */ {(10<<2)|2,{105,105,0}}, +/* 12736 */ {(15<<2)|3,{105,111,48}}, +/* 12737 */ {(15<<2)|3,{105,111,48}}, +/* 12738 */ {(15<<2)|3,{105,111,49}}, +/* 12739 */ {(15<<2)|3,{105,111,49}}, +/* 12740 */ {(15<<2)|3,{105,111,50}}, +/* 12741 */ {(15<<2)|3,{105,111,50}}, +/* 12742 */ {(15<<2)|3,{105,111,97}}, +/* 12743 */ {(15<<2)|3,{105,111,97}}, +/* 12744 */ {(15<<2)|3,{105,111,99}}, +/* 12745 */ {(15<<2)|3,{105,111,99}}, +/* 12746 */ {(15<<2)|3,{105,111,101}}, +/* 12747 */ {(15<<2)|3,{105,111,101}}, +/* 12748 */ {(15<<2)|3,{105,111,105}}, +/* 12749 */ {(15<<2)|3,{105,111,105}}, +/* 12750 */ {(15<<2)|3,{105,111,111}}, +/* 12751 */ {(15<<2)|3,{105,111,111}}, +/* 12752 */ {(15<<2)|3,{105,111,115}}, +/* 12753 */ {(15<<2)|3,{105,111,115}}, +/* 12754 */ {(15<<2)|3,{105,111,116}}, +/* 12755 */ {(15<<2)|3,{105,111,116}}, +/* 12756 */ {(16<<2)|3,{105,111,32}}, +/* 12757 */ {(16<<2)|3,{105,111,37}}, +/* 12758 */ {(16<<2)|3,{105,111,45}}, +/* 12759 */ {(16<<2)|3,{105,111,46}}, +/* 12760 */ {(16<<2)|3,{105,111,47}}, +/* 12761 */ {(16<<2)|3,{105,111,51}}, +/* 12762 */ {(16<<2)|3,{105,111,52}}, +/* 12763 */ {(16<<2)|3,{105,111,53}}, +/* 12764 */ {(16<<2)|3,{105,111,54}}, +/* 12765 */ {(16<<2)|3,{105,111,55}}, +/* 12766 */ {(16<<2)|3,{105,111,56}}, +/* 12767 */ {(16<<2)|3,{105,111,57}}, +/* 12768 */ {(16<<2)|3,{105,111,61}}, +/* 12769 */ {(16<<2)|3,{105,111,65}}, +/* 12770 */ {(16<<2)|3,{105,111,95}}, +/* 12771 */ {(16<<2)|3,{105,111,98}}, +/* 12772 */ {(16<<2)|3,{105,111,100}}, +/* 12773 */ {(16<<2)|3,{105,111,102}}, +/* 12774 */ {(16<<2)|3,{105,111,103}}, +/* 12775 */ {(16<<2)|3,{105,111,104}}, +/* 12776 */ {(16<<2)|3,{105,111,108}}, +/* 12777 */ {(16<<2)|3,{105,111,109}}, +/* 12778 */ {(16<<2)|3,{105,111,110}}, +/* 12779 */ {(16<<2)|3,{105,111,112}}, +/* 12780 */ {(16<<2)|3,{105,111,114}}, +/* 12781 */ {(16<<2)|3,{105,111,117}}, +/* 12782 */ {(10<<2)|2,{105,111,0}}, +/* 12783 */ {(10<<2)|2,{105,111,0}}, +/* 12784 */ {(10<<2)|2,{105,111,0}}, +/* 12785 */ {(10<<2)|2,{105,111,0}}, +/* 12786 */ {(10<<2)|2,{105,111,0}}, +/* 12787 */ {(10<<2)|2,{105,111,0}}, +/* 12788 */ {(10<<2)|2,{105,111,0}}, +/* 12789 */ {(10<<2)|2,{105,111,0}}, +/* 12790 */ {(10<<2)|2,{105,111,0}}, +/* 12791 */ {(10<<2)|2,{105,111,0}}, +/* 12792 */ {(10<<2)|2,{105,111,0}}, +/* 12793 */ {(10<<2)|2,{105,111,0}}, +/* 12794 */ {(10<<2)|2,{105,111,0}}, +/* 12795 */ {(10<<2)|2,{105,111,0}}, +/* 12796 */ {(10<<2)|2,{105,111,0}}, +/* 12797 */ {(10<<2)|2,{105,111,0}}, +/* 12798 */ {(10<<2)|2,{105,111,0}}, +/* 12799 */ {(10<<2)|2,{105,111,0}}, +/* 12800 */ {(15<<2)|3,{105,115,48}}, +/* 12801 */ {(15<<2)|3,{105,115,48}}, +/* 12802 */ {(15<<2)|3,{105,115,49}}, +/* 12803 */ {(15<<2)|3,{105,115,49}}, +/* 12804 */ {(15<<2)|3,{105,115,50}}, +/* 12805 */ {(15<<2)|3,{105,115,50}}, +/* 12806 */ {(15<<2)|3,{105,115,97}}, +/* 12807 */ {(15<<2)|3,{105,115,97}}, +/* 12808 */ {(15<<2)|3,{105,115,99}}, +/* 12809 */ {(15<<2)|3,{105,115,99}}, +/* 12810 */ {(15<<2)|3,{105,115,101}}, +/* 12811 */ {(15<<2)|3,{105,115,101}}, +/* 12812 */ {(15<<2)|3,{105,115,105}}, +/* 12813 */ {(15<<2)|3,{105,115,105}}, +/* 12814 */ {(15<<2)|3,{105,115,111}}, +/* 12815 */ {(15<<2)|3,{105,115,111}}, +/* 12816 */ {(15<<2)|3,{105,115,115}}, +/* 12817 */ {(15<<2)|3,{105,115,115}}, +/* 12818 */ {(15<<2)|3,{105,115,116}}, +/* 12819 */ {(15<<2)|3,{105,115,116}}, +/* 12820 */ {(16<<2)|3,{105,115,32}}, +/* 12821 */ {(16<<2)|3,{105,115,37}}, +/* 12822 */ {(16<<2)|3,{105,115,45}}, +/* 12823 */ {(16<<2)|3,{105,115,46}}, +/* 12824 */ {(16<<2)|3,{105,115,47}}, +/* 12825 */ {(16<<2)|3,{105,115,51}}, +/* 12826 */ {(16<<2)|3,{105,115,52}}, +/* 12827 */ {(16<<2)|3,{105,115,53}}, +/* 12828 */ {(16<<2)|3,{105,115,54}}, +/* 12829 */ {(16<<2)|3,{105,115,55}}, +/* 12830 */ {(16<<2)|3,{105,115,56}}, +/* 12831 */ {(16<<2)|3,{105,115,57}}, +/* 12832 */ {(16<<2)|3,{105,115,61}}, +/* 12833 */ {(16<<2)|3,{105,115,65}}, +/* 12834 */ {(16<<2)|3,{105,115,95}}, +/* 12835 */ {(16<<2)|3,{105,115,98}}, +/* 12836 */ {(16<<2)|3,{105,115,100}}, +/* 12837 */ {(16<<2)|3,{105,115,102}}, +/* 12838 */ {(16<<2)|3,{105,115,103}}, +/* 12839 */ {(16<<2)|3,{105,115,104}}, +/* 12840 */ {(16<<2)|3,{105,115,108}}, +/* 12841 */ {(16<<2)|3,{105,115,109}}, +/* 12842 */ {(16<<2)|3,{105,115,110}}, +/* 12843 */ {(16<<2)|3,{105,115,112}}, +/* 12844 */ {(16<<2)|3,{105,115,114}}, +/* 12845 */ {(16<<2)|3,{105,115,117}}, +/* 12846 */ {(10<<2)|2,{105,115,0}}, +/* 12847 */ {(10<<2)|2,{105,115,0}}, +/* 12848 */ {(10<<2)|2,{105,115,0}}, +/* 12849 */ {(10<<2)|2,{105,115,0}}, +/* 12850 */ {(10<<2)|2,{105,115,0}}, +/* 12851 */ {(10<<2)|2,{105,115,0}}, +/* 12852 */ {(10<<2)|2,{105,115,0}}, +/* 12853 */ {(10<<2)|2,{105,115,0}}, +/* 12854 */ {(10<<2)|2,{105,115,0}}, +/* 12855 */ {(10<<2)|2,{105,115,0}}, +/* 12856 */ {(10<<2)|2,{105,115,0}}, +/* 12857 */ {(10<<2)|2,{105,115,0}}, +/* 12858 */ {(10<<2)|2,{105,115,0}}, +/* 12859 */ {(10<<2)|2,{105,115,0}}, +/* 12860 */ {(10<<2)|2,{105,115,0}}, +/* 12861 */ {(10<<2)|2,{105,115,0}}, +/* 12862 */ {(10<<2)|2,{105,115,0}}, +/* 12863 */ {(10<<2)|2,{105,115,0}}, +/* 12864 */ {(15<<2)|3,{105,116,48}}, +/* 12865 */ {(15<<2)|3,{105,116,48}}, +/* 12866 */ {(15<<2)|3,{105,116,49}}, +/* 12867 */ {(15<<2)|3,{105,116,49}}, +/* 12868 */ {(15<<2)|3,{105,116,50}}, +/* 12869 */ {(15<<2)|3,{105,116,50}}, +/* 12870 */ {(15<<2)|3,{105,116,97}}, +/* 12871 */ {(15<<2)|3,{105,116,97}}, +/* 12872 */ {(15<<2)|3,{105,116,99}}, +/* 12873 */ {(15<<2)|3,{105,116,99}}, +/* 12874 */ {(15<<2)|3,{105,116,101}}, +/* 12875 */ {(15<<2)|3,{105,116,101}}, +/* 12876 */ {(15<<2)|3,{105,116,105}}, +/* 12877 */ {(15<<2)|3,{105,116,105}}, +/* 12878 */ {(15<<2)|3,{105,116,111}}, +/* 12879 */ {(15<<2)|3,{105,116,111}}, +/* 12880 */ {(15<<2)|3,{105,116,115}}, +/* 12881 */ {(15<<2)|3,{105,116,115}}, +/* 12882 */ {(15<<2)|3,{105,116,116}}, +/* 12883 */ {(15<<2)|3,{105,116,116}}, +/* 12884 */ {(16<<2)|3,{105,116,32}}, +/* 12885 */ {(16<<2)|3,{105,116,37}}, +/* 12886 */ {(16<<2)|3,{105,116,45}}, +/* 12887 */ {(16<<2)|3,{105,116,46}}, +/* 12888 */ {(16<<2)|3,{105,116,47}}, +/* 12889 */ {(16<<2)|3,{105,116,51}}, +/* 12890 */ {(16<<2)|3,{105,116,52}}, +/* 12891 */ {(16<<2)|3,{105,116,53}}, +/* 12892 */ {(16<<2)|3,{105,116,54}}, +/* 12893 */ {(16<<2)|3,{105,116,55}}, +/* 12894 */ {(16<<2)|3,{105,116,56}}, +/* 12895 */ {(16<<2)|3,{105,116,57}}, +/* 12896 */ {(16<<2)|3,{105,116,61}}, +/* 12897 */ {(16<<2)|3,{105,116,65}}, +/* 12898 */ {(16<<2)|3,{105,116,95}}, +/* 12899 */ {(16<<2)|3,{105,116,98}}, +/* 12900 */ {(16<<2)|3,{105,116,100}}, +/* 12901 */ {(16<<2)|3,{105,116,102}}, +/* 12902 */ {(16<<2)|3,{105,116,103}}, +/* 12903 */ {(16<<2)|3,{105,116,104}}, +/* 12904 */ {(16<<2)|3,{105,116,108}}, +/* 12905 */ {(16<<2)|3,{105,116,109}}, +/* 12906 */ {(16<<2)|3,{105,116,110}}, +/* 12907 */ {(16<<2)|3,{105,116,112}}, +/* 12908 */ {(16<<2)|3,{105,116,114}}, +/* 12909 */ {(16<<2)|3,{105,116,117}}, +/* 12910 */ {(10<<2)|2,{105,116,0}}, +/* 12911 */ {(10<<2)|2,{105,116,0}}, +/* 12912 */ {(10<<2)|2,{105,116,0}}, +/* 12913 */ {(10<<2)|2,{105,116,0}}, +/* 12914 */ {(10<<2)|2,{105,116,0}}, +/* 12915 */ {(10<<2)|2,{105,116,0}}, +/* 12916 */ {(10<<2)|2,{105,116,0}}, +/* 12917 */ {(10<<2)|2,{105,116,0}}, +/* 12918 */ {(10<<2)|2,{105,116,0}}, +/* 12919 */ {(10<<2)|2,{105,116,0}}, +/* 12920 */ {(10<<2)|2,{105,116,0}}, +/* 12921 */ {(10<<2)|2,{105,116,0}}, +/* 12922 */ {(10<<2)|2,{105,116,0}}, +/* 12923 */ {(10<<2)|2,{105,116,0}}, +/* 12924 */ {(10<<2)|2,{105,116,0}}, +/* 12925 */ {(10<<2)|2,{105,116,0}}, +/* 12926 */ {(10<<2)|2,{105,116,0}}, +/* 12927 */ {(10<<2)|2,{105,116,0}}, +/* 12928 */ {(16<<2)|3,{105,32,48}}, +/* 12929 */ {(16<<2)|3,{105,32,49}}, +/* 12930 */ {(16<<2)|3,{105,32,50}}, +/* 12931 */ {(16<<2)|3,{105,32,97}}, +/* 12932 */ {(16<<2)|3,{105,32,99}}, +/* 12933 */ {(16<<2)|3,{105,32,101}}, +/* 12934 */ {(16<<2)|3,{105,32,105}}, +/* 12935 */ {(16<<2)|3,{105,32,111}}, +/* 12936 */ {(16<<2)|3,{105,32,115}}, +/* 12937 */ {(16<<2)|3,{105,32,116}}, +/* 12938 */ {(11<<2)|2,{105,32,0}}, +/* 12939 */ {(11<<2)|2,{105,32,0}}, +/* 12940 */ {(11<<2)|2,{105,32,0}}, +/* 12941 */ {(11<<2)|2,{105,32,0}}, +/* 12942 */ {(11<<2)|2,{105,32,0}}, +/* 12943 */ {(11<<2)|2,{105,32,0}}, +/* 12944 */ {(11<<2)|2,{105,32,0}}, +/* 12945 */ {(11<<2)|2,{105,32,0}}, +/* 12946 */ {(11<<2)|2,{105,32,0}}, +/* 12947 */ {(11<<2)|2,{105,32,0}}, +/* 12948 */ {(11<<2)|2,{105,32,0}}, +/* 12949 */ {(11<<2)|2,{105,32,0}}, +/* 12950 */ {(11<<2)|2,{105,32,0}}, +/* 12951 */ {(11<<2)|2,{105,32,0}}, +/* 12952 */ {(11<<2)|2,{105,32,0}}, +/* 12953 */ {(11<<2)|2,{105,32,0}}, +/* 12954 */ {(11<<2)|2,{105,32,0}}, +/* 12955 */ {(11<<2)|2,{105,32,0}}, +/* 12956 */ {(11<<2)|2,{105,32,0}}, +/* 12957 */ {(11<<2)|2,{105,32,0}}, +/* 12958 */ {(11<<2)|2,{105,32,0}}, +/* 12959 */ {(11<<2)|2,{105,32,0}}, +/* 12960 */ {(16<<2)|3,{105,37,48}}, +/* 12961 */ {(16<<2)|3,{105,37,49}}, +/* 12962 */ {(16<<2)|3,{105,37,50}}, +/* 12963 */ {(16<<2)|3,{105,37,97}}, +/* 12964 */ {(16<<2)|3,{105,37,99}}, +/* 12965 */ {(16<<2)|3,{105,37,101}}, +/* 12966 */ {(16<<2)|3,{105,37,105}}, +/* 12967 */ {(16<<2)|3,{105,37,111}}, +/* 12968 */ {(16<<2)|3,{105,37,115}}, +/* 12969 */ {(16<<2)|3,{105,37,116}}, +/* 12970 */ {(11<<2)|2,{105,37,0}}, +/* 12971 */ {(11<<2)|2,{105,37,0}}, +/* 12972 */ {(11<<2)|2,{105,37,0}}, +/* 12973 */ {(11<<2)|2,{105,37,0}}, +/* 12974 */ {(11<<2)|2,{105,37,0}}, +/* 12975 */ {(11<<2)|2,{105,37,0}}, +/* 12976 */ {(11<<2)|2,{105,37,0}}, +/* 12977 */ {(11<<2)|2,{105,37,0}}, +/* 12978 */ {(11<<2)|2,{105,37,0}}, +/* 12979 */ {(11<<2)|2,{105,37,0}}, +/* 12980 */ {(11<<2)|2,{105,37,0}}, +/* 12981 */ {(11<<2)|2,{105,37,0}}, +/* 12982 */ {(11<<2)|2,{105,37,0}}, +/* 12983 */ {(11<<2)|2,{105,37,0}}, +/* 12984 */ {(11<<2)|2,{105,37,0}}, +/* 12985 */ {(11<<2)|2,{105,37,0}}, +/* 12986 */ {(11<<2)|2,{105,37,0}}, +/* 12987 */ {(11<<2)|2,{105,37,0}}, +/* 12988 */ {(11<<2)|2,{105,37,0}}, +/* 12989 */ {(11<<2)|2,{105,37,0}}, +/* 12990 */ {(11<<2)|2,{105,37,0}}, +/* 12991 */ {(11<<2)|2,{105,37,0}}, +/* 12992 */ {(16<<2)|3,{105,45,48}}, +/* 12993 */ {(16<<2)|3,{105,45,49}}, +/* 12994 */ {(16<<2)|3,{105,45,50}}, +/* 12995 */ {(16<<2)|3,{105,45,97}}, +/* 12996 */ {(16<<2)|3,{105,45,99}}, +/* 12997 */ {(16<<2)|3,{105,45,101}}, +/* 12998 */ {(16<<2)|3,{105,45,105}}, +/* 12999 */ {(16<<2)|3,{105,45,111}}, +/* 13000 */ {(16<<2)|3,{105,45,115}}, +/* 13001 */ {(16<<2)|3,{105,45,116}}, +/* 13002 */ {(11<<2)|2,{105,45,0}}, +/* 13003 */ {(11<<2)|2,{105,45,0}}, +/* 13004 */ {(11<<2)|2,{105,45,0}}, +/* 13005 */ {(11<<2)|2,{105,45,0}}, +/* 13006 */ {(11<<2)|2,{105,45,0}}, +/* 13007 */ {(11<<2)|2,{105,45,0}}, +/* 13008 */ {(11<<2)|2,{105,45,0}}, +/* 13009 */ {(11<<2)|2,{105,45,0}}, +/* 13010 */ {(11<<2)|2,{105,45,0}}, +/* 13011 */ {(11<<2)|2,{105,45,0}}, +/* 13012 */ {(11<<2)|2,{105,45,0}}, +/* 13013 */ {(11<<2)|2,{105,45,0}}, +/* 13014 */ {(11<<2)|2,{105,45,0}}, +/* 13015 */ {(11<<2)|2,{105,45,0}}, +/* 13016 */ {(11<<2)|2,{105,45,0}}, +/* 13017 */ {(11<<2)|2,{105,45,0}}, +/* 13018 */ {(11<<2)|2,{105,45,0}}, +/* 13019 */ {(11<<2)|2,{105,45,0}}, +/* 13020 */ {(11<<2)|2,{105,45,0}}, +/* 13021 */ {(11<<2)|2,{105,45,0}}, +/* 13022 */ {(11<<2)|2,{105,45,0}}, +/* 13023 */ {(11<<2)|2,{105,45,0}}, +/* 13024 */ {(16<<2)|3,{105,46,48}}, +/* 13025 */ {(16<<2)|3,{105,46,49}}, +/* 13026 */ {(16<<2)|3,{105,46,50}}, +/* 13027 */ {(16<<2)|3,{105,46,97}}, +/* 13028 */ {(16<<2)|3,{105,46,99}}, +/* 13029 */ {(16<<2)|3,{105,46,101}}, +/* 13030 */ {(16<<2)|3,{105,46,105}}, +/* 13031 */ {(16<<2)|3,{105,46,111}}, +/* 13032 */ {(16<<2)|3,{105,46,115}}, +/* 13033 */ {(16<<2)|3,{105,46,116}}, +/* 13034 */ {(11<<2)|2,{105,46,0}}, +/* 13035 */ {(11<<2)|2,{105,46,0}}, +/* 13036 */ {(11<<2)|2,{105,46,0}}, +/* 13037 */ {(11<<2)|2,{105,46,0}}, +/* 13038 */ {(11<<2)|2,{105,46,0}}, +/* 13039 */ {(11<<2)|2,{105,46,0}}, +/* 13040 */ {(11<<2)|2,{105,46,0}}, +/* 13041 */ {(11<<2)|2,{105,46,0}}, +/* 13042 */ {(11<<2)|2,{105,46,0}}, +/* 13043 */ {(11<<2)|2,{105,46,0}}, +/* 13044 */ {(11<<2)|2,{105,46,0}}, +/* 13045 */ {(11<<2)|2,{105,46,0}}, +/* 13046 */ {(11<<2)|2,{105,46,0}}, +/* 13047 */ {(11<<2)|2,{105,46,0}}, +/* 13048 */ {(11<<2)|2,{105,46,0}}, +/* 13049 */ {(11<<2)|2,{105,46,0}}, +/* 13050 */ {(11<<2)|2,{105,46,0}}, +/* 13051 */ {(11<<2)|2,{105,46,0}}, +/* 13052 */ {(11<<2)|2,{105,46,0}}, +/* 13053 */ {(11<<2)|2,{105,46,0}}, +/* 13054 */ {(11<<2)|2,{105,46,0}}, +/* 13055 */ {(11<<2)|2,{105,46,0}}, +/* 13056 */ {(16<<2)|3,{105,47,48}}, +/* 13057 */ {(16<<2)|3,{105,47,49}}, +/* 13058 */ {(16<<2)|3,{105,47,50}}, +/* 13059 */ {(16<<2)|3,{105,47,97}}, +/* 13060 */ {(16<<2)|3,{105,47,99}}, +/* 13061 */ {(16<<2)|3,{105,47,101}}, +/* 13062 */ {(16<<2)|3,{105,47,105}}, +/* 13063 */ {(16<<2)|3,{105,47,111}}, +/* 13064 */ {(16<<2)|3,{105,47,115}}, +/* 13065 */ {(16<<2)|3,{105,47,116}}, +/* 13066 */ {(11<<2)|2,{105,47,0}}, +/* 13067 */ {(11<<2)|2,{105,47,0}}, +/* 13068 */ {(11<<2)|2,{105,47,0}}, +/* 13069 */ {(11<<2)|2,{105,47,0}}, +/* 13070 */ {(11<<2)|2,{105,47,0}}, +/* 13071 */ {(11<<2)|2,{105,47,0}}, +/* 13072 */ {(11<<2)|2,{105,47,0}}, +/* 13073 */ {(11<<2)|2,{105,47,0}}, +/* 13074 */ {(11<<2)|2,{105,47,0}}, +/* 13075 */ {(11<<2)|2,{105,47,0}}, +/* 13076 */ {(11<<2)|2,{105,47,0}}, +/* 13077 */ {(11<<2)|2,{105,47,0}}, +/* 13078 */ {(11<<2)|2,{105,47,0}}, +/* 13079 */ {(11<<2)|2,{105,47,0}}, +/* 13080 */ {(11<<2)|2,{105,47,0}}, +/* 13081 */ {(11<<2)|2,{105,47,0}}, +/* 13082 */ {(11<<2)|2,{105,47,0}}, +/* 13083 */ {(11<<2)|2,{105,47,0}}, +/* 13084 */ {(11<<2)|2,{105,47,0}}, +/* 13085 */ {(11<<2)|2,{105,47,0}}, +/* 13086 */ {(11<<2)|2,{105,47,0}}, +/* 13087 */ {(11<<2)|2,{105,47,0}}, +/* 13088 */ {(16<<2)|3,{105,51,48}}, +/* 13089 */ {(16<<2)|3,{105,51,49}}, +/* 13090 */ {(16<<2)|3,{105,51,50}}, +/* 13091 */ {(16<<2)|3,{105,51,97}}, +/* 13092 */ {(16<<2)|3,{105,51,99}}, +/* 13093 */ {(16<<2)|3,{105,51,101}}, +/* 13094 */ {(16<<2)|3,{105,51,105}}, +/* 13095 */ {(16<<2)|3,{105,51,111}}, +/* 13096 */ {(16<<2)|3,{105,51,115}}, +/* 13097 */ {(16<<2)|3,{105,51,116}}, +/* 13098 */ {(11<<2)|2,{105,51,0}}, +/* 13099 */ {(11<<2)|2,{105,51,0}}, +/* 13100 */ {(11<<2)|2,{105,51,0}}, +/* 13101 */ {(11<<2)|2,{105,51,0}}, +/* 13102 */ {(11<<2)|2,{105,51,0}}, +/* 13103 */ {(11<<2)|2,{105,51,0}}, +/* 13104 */ {(11<<2)|2,{105,51,0}}, +/* 13105 */ {(11<<2)|2,{105,51,0}}, +/* 13106 */ {(11<<2)|2,{105,51,0}}, +/* 13107 */ {(11<<2)|2,{105,51,0}}, +/* 13108 */ {(11<<2)|2,{105,51,0}}, +/* 13109 */ {(11<<2)|2,{105,51,0}}, +/* 13110 */ {(11<<2)|2,{105,51,0}}, +/* 13111 */ {(11<<2)|2,{105,51,0}}, +/* 13112 */ {(11<<2)|2,{105,51,0}}, +/* 13113 */ {(11<<2)|2,{105,51,0}}, +/* 13114 */ {(11<<2)|2,{105,51,0}}, +/* 13115 */ {(11<<2)|2,{105,51,0}}, +/* 13116 */ {(11<<2)|2,{105,51,0}}, +/* 13117 */ {(11<<2)|2,{105,51,0}}, +/* 13118 */ {(11<<2)|2,{105,51,0}}, +/* 13119 */ {(11<<2)|2,{105,51,0}}, +/* 13120 */ {(16<<2)|3,{105,52,48}}, +/* 13121 */ {(16<<2)|3,{105,52,49}}, +/* 13122 */ {(16<<2)|3,{105,52,50}}, +/* 13123 */ {(16<<2)|3,{105,52,97}}, +/* 13124 */ {(16<<2)|3,{105,52,99}}, +/* 13125 */ {(16<<2)|3,{105,52,101}}, +/* 13126 */ {(16<<2)|3,{105,52,105}}, +/* 13127 */ {(16<<2)|3,{105,52,111}}, +/* 13128 */ {(16<<2)|3,{105,52,115}}, +/* 13129 */ {(16<<2)|3,{105,52,116}}, +/* 13130 */ {(11<<2)|2,{105,52,0}}, +/* 13131 */ {(11<<2)|2,{105,52,0}}, +/* 13132 */ {(11<<2)|2,{105,52,0}}, +/* 13133 */ {(11<<2)|2,{105,52,0}}, +/* 13134 */ {(11<<2)|2,{105,52,0}}, +/* 13135 */ {(11<<2)|2,{105,52,0}}, +/* 13136 */ {(11<<2)|2,{105,52,0}}, +/* 13137 */ {(11<<2)|2,{105,52,0}}, +/* 13138 */ {(11<<2)|2,{105,52,0}}, +/* 13139 */ {(11<<2)|2,{105,52,0}}, +/* 13140 */ {(11<<2)|2,{105,52,0}}, +/* 13141 */ {(11<<2)|2,{105,52,0}}, +/* 13142 */ {(11<<2)|2,{105,52,0}}, +/* 13143 */ {(11<<2)|2,{105,52,0}}, +/* 13144 */ {(11<<2)|2,{105,52,0}}, +/* 13145 */ {(11<<2)|2,{105,52,0}}, +/* 13146 */ {(11<<2)|2,{105,52,0}}, +/* 13147 */ {(11<<2)|2,{105,52,0}}, +/* 13148 */ {(11<<2)|2,{105,52,0}}, +/* 13149 */ {(11<<2)|2,{105,52,0}}, +/* 13150 */ {(11<<2)|2,{105,52,0}}, +/* 13151 */ {(11<<2)|2,{105,52,0}}, +/* 13152 */ {(16<<2)|3,{105,53,48}}, +/* 13153 */ {(16<<2)|3,{105,53,49}}, +/* 13154 */ {(16<<2)|3,{105,53,50}}, +/* 13155 */ {(16<<2)|3,{105,53,97}}, +/* 13156 */ {(16<<2)|3,{105,53,99}}, +/* 13157 */ {(16<<2)|3,{105,53,101}}, +/* 13158 */ {(16<<2)|3,{105,53,105}}, +/* 13159 */ {(16<<2)|3,{105,53,111}}, +/* 13160 */ {(16<<2)|3,{105,53,115}}, +/* 13161 */ {(16<<2)|3,{105,53,116}}, +/* 13162 */ {(11<<2)|2,{105,53,0}}, +/* 13163 */ {(11<<2)|2,{105,53,0}}, +/* 13164 */ {(11<<2)|2,{105,53,0}}, +/* 13165 */ {(11<<2)|2,{105,53,0}}, +/* 13166 */ {(11<<2)|2,{105,53,0}}, +/* 13167 */ {(11<<2)|2,{105,53,0}}, +/* 13168 */ {(11<<2)|2,{105,53,0}}, +/* 13169 */ {(11<<2)|2,{105,53,0}}, +/* 13170 */ {(11<<2)|2,{105,53,0}}, +/* 13171 */ {(11<<2)|2,{105,53,0}}, +/* 13172 */ {(11<<2)|2,{105,53,0}}, +/* 13173 */ {(11<<2)|2,{105,53,0}}, +/* 13174 */ {(11<<2)|2,{105,53,0}}, +/* 13175 */ {(11<<2)|2,{105,53,0}}, +/* 13176 */ {(11<<2)|2,{105,53,0}}, +/* 13177 */ {(11<<2)|2,{105,53,0}}, +/* 13178 */ {(11<<2)|2,{105,53,0}}, +/* 13179 */ {(11<<2)|2,{105,53,0}}, +/* 13180 */ {(11<<2)|2,{105,53,0}}, +/* 13181 */ {(11<<2)|2,{105,53,0}}, +/* 13182 */ {(11<<2)|2,{105,53,0}}, +/* 13183 */ {(11<<2)|2,{105,53,0}}, +/* 13184 */ {(16<<2)|3,{105,54,48}}, +/* 13185 */ {(16<<2)|3,{105,54,49}}, +/* 13186 */ {(16<<2)|3,{105,54,50}}, +/* 13187 */ {(16<<2)|3,{105,54,97}}, +/* 13188 */ {(16<<2)|3,{105,54,99}}, +/* 13189 */ {(16<<2)|3,{105,54,101}}, +/* 13190 */ {(16<<2)|3,{105,54,105}}, +/* 13191 */ {(16<<2)|3,{105,54,111}}, +/* 13192 */ {(16<<2)|3,{105,54,115}}, +/* 13193 */ {(16<<2)|3,{105,54,116}}, +/* 13194 */ {(11<<2)|2,{105,54,0}}, +/* 13195 */ {(11<<2)|2,{105,54,0}}, +/* 13196 */ {(11<<2)|2,{105,54,0}}, +/* 13197 */ {(11<<2)|2,{105,54,0}}, +/* 13198 */ {(11<<2)|2,{105,54,0}}, +/* 13199 */ {(11<<2)|2,{105,54,0}}, +/* 13200 */ {(11<<2)|2,{105,54,0}}, +/* 13201 */ {(11<<2)|2,{105,54,0}}, +/* 13202 */ {(11<<2)|2,{105,54,0}}, +/* 13203 */ {(11<<2)|2,{105,54,0}}, +/* 13204 */ {(11<<2)|2,{105,54,0}}, +/* 13205 */ {(11<<2)|2,{105,54,0}}, +/* 13206 */ {(11<<2)|2,{105,54,0}}, +/* 13207 */ {(11<<2)|2,{105,54,0}}, +/* 13208 */ {(11<<2)|2,{105,54,0}}, +/* 13209 */ {(11<<2)|2,{105,54,0}}, +/* 13210 */ {(11<<2)|2,{105,54,0}}, +/* 13211 */ {(11<<2)|2,{105,54,0}}, +/* 13212 */ {(11<<2)|2,{105,54,0}}, +/* 13213 */ {(11<<2)|2,{105,54,0}}, +/* 13214 */ {(11<<2)|2,{105,54,0}}, +/* 13215 */ {(11<<2)|2,{105,54,0}}, +/* 13216 */ {(16<<2)|3,{105,55,48}}, +/* 13217 */ {(16<<2)|3,{105,55,49}}, +/* 13218 */ {(16<<2)|3,{105,55,50}}, +/* 13219 */ {(16<<2)|3,{105,55,97}}, +/* 13220 */ {(16<<2)|3,{105,55,99}}, +/* 13221 */ {(16<<2)|3,{105,55,101}}, +/* 13222 */ {(16<<2)|3,{105,55,105}}, +/* 13223 */ {(16<<2)|3,{105,55,111}}, +/* 13224 */ {(16<<2)|3,{105,55,115}}, +/* 13225 */ {(16<<2)|3,{105,55,116}}, +/* 13226 */ {(11<<2)|2,{105,55,0}}, +/* 13227 */ {(11<<2)|2,{105,55,0}}, +/* 13228 */ {(11<<2)|2,{105,55,0}}, +/* 13229 */ {(11<<2)|2,{105,55,0}}, +/* 13230 */ {(11<<2)|2,{105,55,0}}, +/* 13231 */ {(11<<2)|2,{105,55,0}}, +/* 13232 */ {(11<<2)|2,{105,55,0}}, +/* 13233 */ {(11<<2)|2,{105,55,0}}, +/* 13234 */ {(11<<2)|2,{105,55,0}}, +/* 13235 */ {(11<<2)|2,{105,55,0}}, +/* 13236 */ {(11<<2)|2,{105,55,0}}, +/* 13237 */ {(11<<2)|2,{105,55,0}}, +/* 13238 */ {(11<<2)|2,{105,55,0}}, +/* 13239 */ {(11<<2)|2,{105,55,0}}, +/* 13240 */ {(11<<2)|2,{105,55,0}}, +/* 13241 */ {(11<<2)|2,{105,55,0}}, +/* 13242 */ {(11<<2)|2,{105,55,0}}, +/* 13243 */ {(11<<2)|2,{105,55,0}}, +/* 13244 */ {(11<<2)|2,{105,55,0}}, +/* 13245 */ {(11<<2)|2,{105,55,0}}, +/* 13246 */ {(11<<2)|2,{105,55,0}}, +/* 13247 */ {(11<<2)|2,{105,55,0}}, +/* 13248 */ {(16<<2)|3,{105,56,48}}, +/* 13249 */ {(16<<2)|3,{105,56,49}}, +/* 13250 */ {(16<<2)|3,{105,56,50}}, +/* 13251 */ {(16<<2)|3,{105,56,97}}, +/* 13252 */ {(16<<2)|3,{105,56,99}}, +/* 13253 */ {(16<<2)|3,{105,56,101}}, +/* 13254 */ {(16<<2)|3,{105,56,105}}, +/* 13255 */ {(16<<2)|3,{105,56,111}}, +/* 13256 */ {(16<<2)|3,{105,56,115}}, +/* 13257 */ {(16<<2)|3,{105,56,116}}, +/* 13258 */ {(11<<2)|2,{105,56,0}}, +/* 13259 */ {(11<<2)|2,{105,56,0}}, +/* 13260 */ {(11<<2)|2,{105,56,0}}, +/* 13261 */ {(11<<2)|2,{105,56,0}}, +/* 13262 */ {(11<<2)|2,{105,56,0}}, +/* 13263 */ {(11<<2)|2,{105,56,0}}, +/* 13264 */ {(11<<2)|2,{105,56,0}}, +/* 13265 */ {(11<<2)|2,{105,56,0}}, +/* 13266 */ {(11<<2)|2,{105,56,0}}, +/* 13267 */ {(11<<2)|2,{105,56,0}}, +/* 13268 */ {(11<<2)|2,{105,56,0}}, +/* 13269 */ {(11<<2)|2,{105,56,0}}, +/* 13270 */ {(11<<2)|2,{105,56,0}}, +/* 13271 */ {(11<<2)|2,{105,56,0}}, +/* 13272 */ {(11<<2)|2,{105,56,0}}, +/* 13273 */ {(11<<2)|2,{105,56,0}}, +/* 13274 */ {(11<<2)|2,{105,56,0}}, +/* 13275 */ {(11<<2)|2,{105,56,0}}, +/* 13276 */ {(11<<2)|2,{105,56,0}}, +/* 13277 */ {(11<<2)|2,{105,56,0}}, +/* 13278 */ {(11<<2)|2,{105,56,0}}, +/* 13279 */ {(11<<2)|2,{105,56,0}}, +/* 13280 */ {(16<<2)|3,{105,57,48}}, +/* 13281 */ {(16<<2)|3,{105,57,49}}, +/* 13282 */ {(16<<2)|3,{105,57,50}}, +/* 13283 */ {(16<<2)|3,{105,57,97}}, +/* 13284 */ {(16<<2)|3,{105,57,99}}, +/* 13285 */ {(16<<2)|3,{105,57,101}}, +/* 13286 */ {(16<<2)|3,{105,57,105}}, +/* 13287 */ {(16<<2)|3,{105,57,111}}, +/* 13288 */ {(16<<2)|3,{105,57,115}}, +/* 13289 */ {(16<<2)|3,{105,57,116}}, +/* 13290 */ {(11<<2)|2,{105,57,0}}, +/* 13291 */ {(11<<2)|2,{105,57,0}}, +/* 13292 */ {(11<<2)|2,{105,57,0}}, +/* 13293 */ {(11<<2)|2,{105,57,0}}, +/* 13294 */ {(11<<2)|2,{105,57,0}}, +/* 13295 */ {(11<<2)|2,{105,57,0}}, +/* 13296 */ {(11<<2)|2,{105,57,0}}, +/* 13297 */ {(11<<2)|2,{105,57,0}}, +/* 13298 */ {(11<<2)|2,{105,57,0}}, +/* 13299 */ {(11<<2)|2,{105,57,0}}, +/* 13300 */ {(11<<2)|2,{105,57,0}}, +/* 13301 */ {(11<<2)|2,{105,57,0}}, +/* 13302 */ {(11<<2)|2,{105,57,0}}, +/* 13303 */ {(11<<2)|2,{105,57,0}}, +/* 13304 */ {(11<<2)|2,{105,57,0}}, +/* 13305 */ {(11<<2)|2,{105,57,0}}, +/* 13306 */ {(11<<2)|2,{105,57,0}}, +/* 13307 */ {(11<<2)|2,{105,57,0}}, +/* 13308 */ {(11<<2)|2,{105,57,0}}, +/* 13309 */ {(11<<2)|2,{105,57,0}}, +/* 13310 */ {(11<<2)|2,{105,57,0}}, +/* 13311 */ {(11<<2)|2,{105,57,0}}, +/* 13312 */ {(16<<2)|3,{105,61,48}}, +/* 13313 */ {(16<<2)|3,{105,61,49}}, +/* 13314 */ {(16<<2)|3,{105,61,50}}, +/* 13315 */ {(16<<2)|3,{105,61,97}}, +/* 13316 */ {(16<<2)|3,{105,61,99}}, +/* 13317 */ {(16<<2)|3,{105,61,101}}, +/* 13318 */ {(16<<2)|3,{105,61,105}}, +/* 13319 */ {(16<<2)|3,{105,61,111}}, +/* 13320 */ {(16<<2)|3,{105,61,115}}, +/* 13321 */ {(16<<2)|3,{105,61,116}}, +/* 13322 */ {(11<<2)|2,{105,61,0}}, +/* 13323 */ {(11<<2)|2,{105,61,0}}, +/* 13324 */ {(11<<2)|2,{105,61,0}}, +/* 13325 */ {(11<<2)|2,{105,61,0}}, +/* 13326 */ {(11<<2)|2,{105,61,0}}, +/* 13327 */ {(11<<2)|2,{105,61,0}}, +/* 13328 */ {(11<<2)|2,{105,61,0}}, +/* 13329 */ {(11<<2)|2,{105,61,0}}, +/* 13330 */ {(11<<2)|2,{105,61,0}}, +/* 13331 */ {(11<<2)|2,{105,61,0}}, +/* 13332 */ {(11<<2)|2,{105,61,0}}, +/* 13333 */ {(11<<2)|2,{105,61,0}}, +/* 13334 */ {(11<<2)|2,{105,61,0}}, +/* 13335 */ {(11<<2)|2,{105,61,0}}, +/* 13336 */ {(11<<2)|2,{105,61,0}}, +/* 13337 */ {(11<<2)|2,{105,61,0}}, +/* 13338 */ {(11<<2)|2,{105,61,0}}, +/* 13339 */ {(11<<2)|2,{105,61,0}}, +/* 13340 */ {(11<<2)|2,{105,61,0}}, +/* 13341 */ {(11<<2)|2,{105,61,0}}, +/* 13342 */ {(11<<2)|2,{105,61,0}}, +/* 13343 */ {(11<<2)|2,{105,61,0}}, +/* 13344 */ {(16<<2)|3,{105,65,48}}, +/* 13345 */ {(16<<2)|3,{105,65,49}}, +/* 13346 */ {(16<<2)|3,{105,65,50}}, +/* 13347 */ {(16<<2)|3,{105,65,97}}, +/* 13348 */ {(16<<2)|3,{105,65,99}}, +/* 13349 */ {(16<<2)|3,{105,65,101}}, +/* 13350 */ {(16<<2)|3,{105,65,105}}, +/* 13351 */ {(16<<2)|3,{105,65,111}}, +/* 13352 */ {(16<<2)|3,{105,65,115}}, +/* 13353 */ {(16<<2)|3,{105,65,116}}, +/* 13354 */ {(11<<2)|2,{105,65,0}}, +/* 13355 */ {(11<<2)|2,{105,65,0}}, +/* 13356 */ {(11<<2)|2,{105,65,0}}, +/* 13357 */ {(11<<2)|2,{105,65,0}}, +/* 13358 */ {(11<<2)|2,{105,65,0}}, +/* 13359 */ {(11<<2)|2,{105,65,0}}, +/* 13360 */ {(11<<2)|2,{105,65,0}}, +/* 13361 */ {(11<<2)|2,{105,65,0}}, +/* 13362 */ {(11<<2)|2,{105,65,0}}, +/* 13363 */ {(11<<2)|2,{105,65,0}}, +/* 13364 */ {(11<<2)|2,{105,65,0}}, +/* 13365 */ {(11<<2)|2,{105,65,0}}, +/* 13366 */ {(11<<2)|2,{105,65,0}}, +/* 13367 */ {(11<<2)|2,{105,65,0}}, +/* 13368 */ {(11<<2)|2,{105,65,0}}, +/* 13369 */ {(11<<2)|2,{105,65,0}}, +/* 13370 */ {(11<<2)|2,{105,65,0}}, +/* 13371 */ {(11<<2)|2,{105,65,0}}, +/* 13372 */ {(11<<2)|2,{105,65,0}}, +/* 13373 */ {(11<<2)|2,{105,65,0}}, +/* 13374 */ {(11<<2)|2,{105,65,0}}, +/* 13375 */ {(11<<2)|2,{105,65,0}}, +/* 13376 */ {(16<<2)|3,{105,95,48}}, +/* 13377 */ {(16<<2)|3,{105,95,49}}, +/* 13378 */ {(16<<2)|3,{105,95,50}}, +/* 13379 */ {(16<<2)|3,{105,95,97}}, +/* 13380 */ {(16<<2)|3,{105,95,99}}, +/* 13381 */ {(16<<2)|3,{105,95,101}}, +/* 13382 */ {(16<<2)|3,{105,95,105}}, +/* 13383 */ {(16<<2)|3,{105,95,111}}, +/* 13384 */ {(16<<2)|3,{105,95,115}}, +/* 13385 */ {(16<<2)|3,{105,95,116}}, +/* 13386 */ {(11<<2)|2,{105,95,0}}, +/* 13387 */ {(11<<2)|2,{105,95,0}}, +/* 13388 */ {(11<<2)|2,{105,95,0}}, +/* 13389 */ {(11<<2)|2,{105,95,0}}, +/* 13390 */ {(11<<2)|2,{105,95,0}}, +/* 13391 */ {(11<<2)|2,{105,95,0}}, +/* 13392 */ {(11<<2)|2,{105,95,0}}, +/* 13393 */ {(11<<2)|2,{105,95,0}}, +/* 13394 */ {(11<<2)|2,{105,95,0}}, +/* 13395 */ {(11<<2)|2,{105,95,0}}, +/* 13396 */ {(11<<2)|2,{105,95,0}}, +/* 13397 */ {(11<<2)|2,{105,95,0}}, +/* 13398 */ {(11<<2)|2,{105,95,0}}, +/* 13399 */ {(11<<2)|2,{105,95,0}}, +/* 13400 */ {(11<<2)|2,{105,95,0}}, +/* 13401 */ {(11<<2)|2,{105,95,0}}, +/* 13402 */ {(11<<2)|2,{105,95,0}}, +/* 13403 */ {(11<<2)|2,{105,95,0}}, +/* 13404 */ {(11<<2)|2,{105,95,0}}, +/* 13405 */ {(11<<2)|2,{105,95,0}}, +/* 13406 */ {(11<<2)|2,{105,95,0}}, +/* 13407 */ {(11<<2)|2,{105,95,0}}, +/* 13408 */ {(16<<2)|3,{105,98,48}}, +/* 13409 */ {(16<<2)|3,{105,98,49}}, +/* 13410 */ {(16<<2)|3,{105,98,50}}, +/* 13411 */ {(16<<2)|3,{105,98,97}}, +/* 13412 */ {(16<<2)|3,{105,98,99}}, +/* 13413 */ {(16<<2)|3,{105,98,101}}, +/* 13414 */ {(16<<2)|3,{105,98,105}}, +/* 13415 */ {(16<<2)|3,{105,98,111}}, +/* 13416 */ {(16<<2)|3,{105,98,115}}, +/* 13417 */ {(16<<2)|3,{105,98,116}}, +/* 13418 */ {(11<<2)|2,{105,98,0}}, +/* 13419 */ {(11<<2)|2,{105,98,0}}, +/* 13420 */ {(11<<2)|2,{105,98,0}}, +/* 13421 */ {(11<<2)|2,{105,98,0}}, +/* 13422 */ {(11<<2)|2,{105,98,0}}, +/* 13423 */ {(11<<2)|2,{105,98,0}}, +/* 13424 */ {(11<<2)|2,{105,98,0}}, +/* 13425 */ {(11<<2)|2,{105,98,0}}, +/* 13426 */ {(11<<2)|2,{105,98,0}}, +/* 13427 */ {(11<<2)|2,{105,98,0}}, +/* 13428 */ {(11<<2)|2,{105,98,0}}, +/* 13429 */ {(11<<2)|2,{105,98,0}}, +/* 13430 */ {(11<<2)|2,{105,98,0}}, +/* 13431 */ {(11<<2)|2,{105,98,0}}, +/* 13432 */ {(11<<2)|2,{105,98,0}}, +/* 13433 */ {(11<<2)|2,{105,98,0}}, +/* 13434 */ {(11<<2)|2,{105,98,0}}, +/* 13435 */ {(11<<2)|2,{105,98,0}}, +/* 13436 */ {(11<<2)|2,{105,98,0}}, +/* 13437 */ {(11<<2)|2,{105,98,0}}, +/* 13438 */ {(11<<2)|2,{105,98,0}}, +/* 13439 */ {(11<<2)|2,{105,98,0}}, +/* 13440 */ {(16<<2)|3,{105,100,48}}, +/* 13441 */ {(16<<2)|3,{105,100,49}}, +/* 13442 */ {(16<<2)|3,{105,100,50}}, +/* 13443 */ {(16<<2)|3,{105,100,97}}, +/* 13444 */ {(16<<2)|3,{105,100,99}}, +/* 13445 */ {(16<<2)|3,{105,100,101}}, +/* 13446 */ {(16<<2)|3,{105,100,105}}, +/* 13447 */ {(16<<2)|3,{105,100,111}}, +/* 13448 */ {(16<<2)|3,{105,100,115}}, +/* 13449 */ {(16<<2)|3,{105,100,116}}, +/* 13450 */ {(11<<2)|2,{105,100,0}}, +/* 13451 */ {(11<<2)|2,{105,100,0}}, +/* 13452 */ {(11<<2)|2,{105,100,0}}, +/* 13453 */ {(11<<2)|2,{105,100,0}}, +/* 13454 */ {(11<<2)|2,{105,100,0}}, +/* 13455 */ {(11<<2)|2,{105,100,0}}, +/* 13456 */ {(11<<2)|2,{105,100,0}}, +/* 13457 */ {(11<<2)|2,{105,100,0}}, +/* 13458 */ {(11<<2)|2,{105,100,0}}, +/* 13459 */ {(11<<2)|2,{105,100,0}}, +/* 13460 */ {(11<<2)|2,{105,100,0}}, +/* 13461 */ {(11<<2)|2,{105,100,0}}, +/* 13462 */ {(11<<2)|2,{105,100,0}}, +/* 13463 */ {(11<<2)|2,{105,100,0}}, +/* 13464 */ {(11<<2)|2,{105,100,0}}, +/* 13465 */ {(11<<2)|2,{105,100,0}}, +/* 13466 */ {(11<<2)|2,{105,100,0}}, +/* 13467 */ {(11<<2)|2,{105,100,0}}, +/* 13468 */ {(11<<2)|2,{105,100,0}}, +/* 13469 */ {(11<<2)|2,{105,100,0}}, +/* 13470 */ {(11<<2)|2,{105,100,0}}, +/* 13471 */ {(11<<2)|2,{105,100,0}}, +/* 13472 */ {(16<<2)|3,{105,102,48}}, +/* 13473 */ {(16<<2)|3,{105,102,49}}, +/* 13474 */ {(16<<2)|3,{105,102,50}}, +/* 13475 */ {(16<<2)|3,{105,102,97}}, +/* 13476 */ {(16<<2)|3,{105,102,99}}, +/* 13477 */ {(16<<2)|3,{105,102,101}}, +/* 13478 */ {(16<<2)|3,{105,102,105}}, +/* 13479 */ {(16<<2)|3,{105,102,111}}, +/* 13480 */ {(16<<2)|3,{105,102,115}}, +/* 13481 */ {(16<<2)|3,{105,102,116}}, +/* 13482 */ {(11<<2)|2,{105,102,0}}, +/* 13483 */ {(11<<2)|2,{105,102,0}}, +/* 13484 */ {(11<<2)|2,{105,102,0}}, +/* 13485 */ {(11<<2)|2,{105,102,0}}, +/* 13486 */ {(11<<2)|2,{105,102,0}}, +/* 13487 */ {(11<<2)|2,{105,102,0}}, +/* 13488 */ {(11<<2)|2,{105,102,0}}, +/* 13489 */ {(11<<2)|2,{105,102,0}}, +/* 13490 */ {(11<<2)|2,{105,102,0}}, +/* 13491 */ {(11<<2)|2,{105,102,0}}, +/* 13492 */ {(11<<2)|2,{105,102,0}}, +/* 13493 */ {(11<<2)|2,{105,102,0}}, +/* 13494 */ {(11<<2)|2,{105,102,0}}, +/* 13495 */ {(11<<2)|2,{105,102,0}}, +/* 13496 */ {(11<<2)|2,{105,102,0}}, +/* 13497 */ {(11<<2)|2,{105,102,0}}, +/* 13498 */ {(11<<2)|2,{105,102,0}}, +/* 13499 */ {(11<<2)|2,{105,102,0}}, +/* 13500 */ {(11<<2)|2,{105,102,0}}, +/* 13501 */ {(11<<2)|2,{105,102,0}}, +/* 13502 */ {(11<<2)|2,{105,102,0}}, +/* 13503 */ {(11<<2)|2,{105,102,0}}, +/* 13504 */ {(16<<2)|3,{105,103,48}}, +/* 13505 */ {(16<<2)|3,{105,103,49}}, +/* 13506 */ {(16<<2)|3,{105,103,50}}, +/* 13507 */ {(16<<2)|3,{105,103,97}}, +/* 13508 */ {(16<<2)|3,{105,103,99}}, +/* 13509 */ {(16<<2)|3,{105,103,101}}, +/* 13510 */ {(16<<2)|3,{105,103,105}}, +/* 13511 */ {(16<<2)|3,{105,103,111}}, +/* 13512 */ {(16<<2)|3,{105,103,115}}, +/* 13513 */ {(16<<2)|3,{105,103,116}}, +/* 13514 */ {(11<<2)|2,{105,103,0}}, +/* 13515 */ {(11<<2)|2,{105,103,0}}, +/* 13516 */ {(11<<2)|2,{105,103,0}}, +/* 13517 */ {(11<<2)|2,{105,103,0}}, +/* 13518 */ {(11<<2)|2,{105,103,0}}, +/* 13519 */ {(11<<2)|2,{105,103,0}}, +/* 13520 */ {(11<<2)|2,{105,103,0}}, +/* 13521 */ {(11<<2)|2,{105,103,0}}, +/* 13522 */ {(11<<2)|2,{105,103,0}}, +/* 13523 */ {(11<<2)|2,{105,103,0}}, +/* 13524 */ {(11<<2)|2,{105,103,0}}, +/* 13525 */ {(11<<2)|2,{105,103,0}}, +/* 13526 */ {(11<<2)|2,{105,103,0}}, +/* 13527 */ {(11<<2)|2,{105,103,0}}, +/* 13528 */ {(11<<2)|2,{105,103,0}}, +/* 13529 */ {(11<<2)|2,{105,103,0}}, +/* 13530 */ {(11<<2)|2,{105,103,0}}, +/* 13531 */ {(11<<2)|2,{105,103,0}}, +/* 13532 */ {(11<<2)|2,{105,103,0}}, +/* 13533 */ {(11<<2)|2,{105,103,0}}, +/* 13534 */ {(11<<2)|2,{105,103,0}}, +/* 13535 */ {(11<<2)|2,{105,103,0}}, +/* 13536 */ {(16<<2)|3,{105,104,48}}, +/* 13537 */ {(16<<2)|3,{105,104,49}}, +/* 13538 */ {(16<<2)|3,{105,104,50}}, +/* 13539 */ {(16<<2)|3,{105,104,97}}, +/* 13540 */ {(16<<2)|3,{105,104,99}}, +/* 13541 */ {(16<<2)|3,{105,104,101}}, +/* 13542 */ {(16<<2)|3,{105,104,105}}, +/* 13543 */ {(16<<2)|3,{105,104,111}}, +/* 13544 */ {(16<<2)|3,{105,104,115}}, +/* 13545 */ {(16<<2)|3,{105,104,116}}, +/* 13546 */ {(11<<2)|2,{105,104,0}}, +/* 13547 */ {(11<<2)|2,{105,104,0}}, +/* 13548 */ {(11<<2)|2,{105,104,0}}, +/* 13549 */ {(11<<2)|2,{105,104,0}}, +/* 13550 */ {(11<<2)|2,{105,104,0}}, +/* 13551 */ {(11<<2)|2,{105,104,0}}, +/* 13552 */ {(11<<2)|2,{105,104,0}}, +/* 13553 */ {(11<<2)|2,{105,104,0}}, +/* 13554 */ {(11<<2)|2,{105,104,0}}, +/* 13555 */ {(11<<2)|2,{105,104,0}}, +/* 13556 */ {(11<<2)|2,{105,104,0}}, +/* 13557 */ {(11<<2)|2,{105,104,0}}, +/* 13558 */ {(11<<2)|2,{105,104,0}}, +/* 13559 */ {(11<<2)|2,{105,104,0}}, +/* 13560 */ {(11<<2)|2,{105,104,0}}, +/* 13561 */ {(11<<2)|2,{105,104,0}}, +/* 13562 */ {(11<<2)|2,{105,104,0}}, +/* 13563 */ {(11<<2)|2,{105,104,0}}, +/* 13564 */ {(11<<2)|2,{105,104,0}}, +/* 13565 */ {(11<<2)|2,{105,104,0}}, +/* 13566 */ {(11<<2)|2,{105,104,0}}, +/* 13567 */ {(11<<2)|2,{105,104,0}}, +/* 13568 */ {(16<<2)|3,{105,108,48}}, +/* 13569 */ {(16<<2)|3,{105,108,49}}, +/* 13570 */ {(16<<2)|3,{105,108,50}}, +/* 13571 */ {(16<<2)|3,{105,108,97}}, +/* 13572 */ {(16<<2)|3,{105,108,99}}, +/* 13573 */ {(16<<2)|3,{105,108,101}}, +/* 13574 */ {(16<<2)|3,{105,108,105}}, +/* 13575 */ {(16<<2)|3,{105,108,111}}, +/* 13576 */ {(16<<2)|3,{105,108,115}}, +/* 13577 */ {(16<<2)|3,{105,108,116}}, +/* 13578 */ {(11<<2)|2,{105,108,0}}, +/* 13579 */ {(11<<2)|2,{105,108,0}}, +/* 13580 */ {(11<<2)|2,{105,108,0}}, +/* 13581 */ {(11<<2)|2,{105,108,0}}, +/* 13582 */ {(11<<2)|2,{105,108,0}}, +/* 13583 */ {(11<<2)|2,{105,108,0}}, +/* 13584 */ {(11<<2)|2,{105,108,0}}, +/* 13585 */ {(11<<2)|2,{105,108,0}}, +/* 13586 */ {(11<<2)|2,{105,108,0}}, +/* 13587 */ {(11<<2)|2,{105,108,0}}, +/* 13588 */ {(11<<2)|2,{105,108,0}}, +/* 13589 */ {(11<<2)|2,{105,108,0}}, +/* 13590 */ {(11<<2)|2,{105,108,0}}, +/* 13591 */ {(11<<2)|2,{105,108,0}}, +/* 13592 */ {(11<<2)|2,{105,108,0}}, +/* 13593 */ {(11<<2)|2,{105,108,0}}, +/* 13594 */ {(11<<2)|2,{105,108,0}}, +/* 13595 */ {(11<<2)|2,{105,108,0}}, +/* 13596 */ {(11<<2)|2,{105,108,0}}, +/* 13597 */ {(11<<2)|2,{105,108,0}}, +/* 13598 */ {(11<<2)|2,{105,108,0}}, +/* 13599 */ {(11<<2)|2,{105,108,0}}, +/* 13600 */ {(16<<2)|3,{105,109,48}}, +/* 13601 */ {(16<<2)|3,{105,109,49}}, +/* 13602 */ {(16<<2)|3,{105,109,50}}, +/* 13603 */ {(16<<2)|3,{105,109,97}}, +/* 13604 */ {(16<<2)|3,{105,109,99}}, +/* 13605 */ {(16<<2)|3,{105,109,101}}, +/* 13606 */ {(16<<2)|3,{105,109,105}}, +/* 13607 */ {(16<<2)|3,{105,109,111}}, +/* 13608 */ {(16<<2)|3,{105,109,115}}, +/* 13609 */ {(16<<2)|3,{105,109,116}}, +/* 13610 */ {(11<<2)|2,{105,109,0}}, +/* 13611 */ {(11<<2)|2,{105,109,0}}, +/* 13612 */ {(11<<2)|2,{105,109,0}}, +/* 13613 */ {(11<<2)|2,{105,109,0}}, +/* 13614 */ {(11<<2)|2,{105,109,0}}, +/* 13615 */ {(11<<2)|2,{105,109,0}}, +/* 13616 */ {(11<<2)|2,{105,109,0}}, +/* 13617 */ {(11<<2)|2,{105,109,0}}, +/* 13618 */ {(11<<2)|2,{105,109,0}}, +/* 13619 */ {(11<<2)|2,{105,109,0}}, +/* 13620 */ {(11<<2)|2,{105,109,0}}, +/* 13621 */ {(11<<2)|2,{105,109,0}}, +/* 13622 */ {(11<<2)|2,{105,109,0}}, +/* 13623 */ {(11<<2)|2,{105,109,0}}, +/* 13624 */ {(11<<2)|2,{105,109,0}}, +/* 13625 */ {(11<<2)|2,{105,109,0}}, +/* 13626 */ {(11<<2)|2,{105,109,0}}, +/* 13627 */ {(11<<2)|2,{105,109,0}}, +/* 13628 */ {(11<<2)|2,{105,109,0}}, +/* 13629 */ {(11<<2)|2,{105,109,0}}, +/* 13630 */ {(11<<2)|2,{105,109,0}}, +/* 13631 */ {(11<<2)|2,{105,109,0}}, +/* 13632 */ {(16<<2)|3,{105,110,48}}, +/* 13633 */ {(16<<2)|3,{105,110,49}}, +/* 13634 */ {(16<<2)|3,{105,110,50}}, +/* 13635 */ {(16<<2)|3,{105,110,97}}, +/* 13636 */ {(16<<2)|3,{105,110,99}}, +/* 13637 */ {(16<<2)|3,{105,110,101}}, +/* 13638 */ {(16<<2)|3,{105,110,105}}, +/* 13639 */ {(16<<2)|3,{105,110,111}}, +/* 13640 */ {(16<<2)|3,{105,110,115}}, +/* 13641 */ {(16<<2)|3,{105,110,116}}, +/* 13642 */ {(11<<2)|2,{105,110,0}}, +/* 13643 */ {(11<<2)|2,{105,110,0}}, +/* 13644 */ {(11<<2)|2,{105,110,0}}, +/* 13645 */ {(11<<2)|2,{105,110,0}}, +/* 13646 */ {(11<<2)|2,{105,110,0}}, +/* 13647 */ {(11<<2)|2,{105,110,0}}, +/* 13648 */ {(11<<2)|2,{105,110,0}}, +/* 13649 */ {(11<<2)|2,{105,110,0}}, +/* 13650 */ {(11<<2)|2,{105,110,0}}, +/* 13651 */ {(11<<2)|2,{105,110,0}}, +/* 13652 */ {(11<<2)|2,{105,110,0}}, +/* 13653 */ {(11<<2)|2,{105,110,0}}, +/* 13654 */ {(11<<2)|2,{105,110,0}}, +/* 13655 */ {(11<<2)|2,{105,110,0}}, +/* 13656 */ {(11<<2)|2,{105,110,0}}, +/* 13657 */ {(11<<2)|2,{105,110,0}}, +/* 13658 */ {(11<<2)|2,{105,110,0}}, +/* 13659 */ {(11<<2)|2,{105,110,0}}, +/* 13660 */ {(11<<2)|2,{105,110,0}}, +/* 13661 */ {(11<<2)|2,{105,110,0}}, +/* 13662 */ {(11<<2)|2,{105,110,0}}, +/* 13663 */ {(11<<2)|2,{105,110,0}}, +/* 13664 */ {(16<<2)|3,{105,112,48}}, +/* 13665 */ {(16<<2)|3,{105,112,49}}, +/* 13666 */ {(16<<2)|3,{105,112,50}}, +/* 13667 */ {(16<<2)|3,{105,112,97}}, +/* 13668 */ {(16<<2)|3,{105,112,99}}, +/* 13669 */ {(16<<2)|3,{105,112,101}}, +/* 13670 */ {(16<<2)|3,{105,112,105}}, +/* 13671 */ {(16<<2)|3,{105,112,111}}, +/* 13672 */ {(16<<2)|3,{105,112,115}}, +/* 13673 */ {(16<<2)|3,{105,112,116}}, +/* 13674 */ {(11<<2)|2,{105,112,0}}, +/* 13675 */ {(11<<2)|2,{105,112,0}}, +/* 13676 */ {(11<<2)|2,{105,112,0}}, +/* 13677 */ {(11<<2)|2,{105,112,0}}, +/* 13678 */ {(11<<2)|2,{105,112,0}}, +/* 13679 */ {(11<<2)|2,{105,112,0}}, +/* 13680 */ {(11<<2)|2,{105,112,0}}, +/* 13681 */ {(11<<2)|2,{105,112,0}}, +/* 13682 */ {(11<<2)|2,{105,112,0}}, +/* 13683 */ {(11<<2)|2,{105,112,0}}, +/* 13684 */ {(11<<2)|2,{105,112,0}}, +/* 13685 */ {(11<<2)|2,{105,112,0}}, +/* 13686 */ {(11<<2)|2,{105,112,0}}, +/* 13687 */ {(11<<2)|2,{105,112,0}}, +/* 13688 */ {(11<<2)|2,{105,112,0}}, +/* 13689 */ {(11<<2)|2,{105,112,0}}, +/* 13690 */ {(11<<2)|2,{105,112,0}}, +/* 13691 */ {(11<<2)|2,{105,112,0}}, +/* 13692 */ {(11<<2)|2,{105,112,0}}, +/* 13693 */ {(11<<2)|2,{105,112,0}}, +/* 13694 */ {(11<<2)|2,{105,112,0}}, +/* 13695 */ {(11<<2)|2,{105,112,0}}, +/* 13696 */ {(16<<2)|3,{105,114,48}}, +/* 13697 */ {(16<<2)|3,{105,114,49}}, +/* 13698 */ {(16<<2)|3,{105,114,50}}, +/* 13699 */ {(16<<2)|3,{105,114,97}}, +/* 13700 */ {(16<<2)|3,{105,114,99}}, +/* 13701 */ {(16<<2)|3,{105,114,101}}, +/* 13702 */ {(16<<2)|3,{105,114,105}}, +/* 13703 */ {(16<<2)|3,{105,114,111}}, +/* 13704 */ {(16<<2)|3,{105,114,115}}, +/* 13705 */ {(16<<2)|3,{105,114,116}}, +/* 13706 */ {(11<<2)|2,{105,114,0}}, +/* 13707 */ {(11<<2)|2,{105,114,0}}, +/* 13708 */ {(11<<2)|2,{105,114,0}}, +/* 13709 */ {(11<<2)|2,{105,114,0}}, +/* 13710 */ {(11<<2)|2,{105,114,0}}, +/* 13711 */ {(11<<2)|2,{105,114,0}}, +/* 13712 */ {(11<<2)|2,{105,114,0}}, +/* 13713 */ {(11<<2)|2,{105,114,0}}, +/* 13714 */ {(11<<2)|2,{105,114,0}}, +/* 13715 */ {(11<<2)|2,{105,114,0}}, +/* 13716 */ {(11<<2)|2,{105,114,0}}, +/* 13717 */ {(11<<2)|2,{105,114,0}}, +/* 13718 */ {(11<<2)|2,{105,114,0}}, +/* 13719 */ {(11<<2)|2,{105,114,0}}, +/* 13720 */ {(11<<2)|2,{105,114,0}}, +/* 13721 */ {(11<<2)|2,{105,114,0}}, +/* 13722 */ {(11<<2)|2,{105,114,0}}, +/* 13723 */ {(11<<2)|2,{105,114,0}}, +/* 13724 */ {(11<<2)|2,{105,114,0}}, +/* 13725 */ {(11<<2)|2,{105,114,0}}, +/* 13726 */ {(11<<2)|2,{105,114,0}}, +/* 13727 */ {(11<<2)|2,{105,114,0}}, +/* 13728 */ {(16<<2)|3,{105,117,48}}, +/* 13729 */ {(16<<2)|3,{105,117,49}}, +/* 13730 */ {(16<<2)|3,{105,117,50}}, +/* 13731 */ {(16<<2)|3,{105,117,97}}, +/* 13732 */ {(16<<2)|3,{105,117,99}}, +/* 13733 */ {(16<<2)|3,{105,117,101}}, +/* 13734 */ {(16<<2)|3,{105,117,105}}, +/* 13735 */ {(16<<2)|3,{105,117,111}}, +/* 13736 */ {(16<<2)|3,{105,117,115}}, +/* 13737 */ {(16<<2)|3,{105,117,116}}, +/* 13738 */ {(11<<2)|2,{105,117,0}}, +/* 13739 */ {(11<<2)|2,{105,117,0}}, +/* 13740 */ {(11<<2)|2,{105,117,0}}, +/* 13741 */ {(11<<2)|2,{105,117,0}}, +/* 13742 */ {(11<<2)|2,{105,117,0}}, +/* 13743 */ {(11<<2)|2,{105,117,0}}, +/* 13744 */ {(11<<2)|2,{105,117,0}}, +/* 13745 */ {(11<<2)|2,{105,117,0}}, +/* 13746 */ {(11<<2)|2,{105,117,0}}, +/* 13747 */ {(11<<2)|2,{105,117,0}}, +/* 13748 */ {(11<<2)|2,{105,117,0}}, +/* 13749 */ {(11<<2)|2,{105,117,0}}, +/* 13750 */ {(11<<2)|2,{105,117,0}}, +/* 13751 */ {(11<<2)|2,{105,117,0}}, +/* 13752 */ {(11<<2)|2,{105,117,0}}, +/* 13753 */ {(11<<2)|2,{105,117,0}}, +/* 13754 */ {(11<<2)|2,{105,117,0}}, +/* 13755 */ {(11<<2)|2,{105,117,0}}, +/* 13756 */ {(11<<2)|2,{105,117,0}}, +/* 13757 */ {(11<<2)|2,{105,117,0}}, +/* 13758 */ {(11<<2)|2,{105,117,0}}, +/* 13759 */ {(11<<2)|2,{105,117,0}}, +/* 13760 */ {(12<<2)|2,{105,58,0}}, +/* 13761 */ {(12<<2)|2,{105,58,0}}, +/* 13762 */ {(12<<2)|2,{105,58,0}}, +/* 13763 */ {(12<<2)|2,{105,58,0}}, +/* 13764 */ {(12<<2)|2,{105,58,0}}, +/* 13765 */ {(12<<2)|2,{105,58,0}}, +/* 13766 */ {(12<<2)|2,{105,58,0}}, +/* 13767 */ {(12<<2)|2,{105,58,0}}, +/* 13768 */ {(12<<2)|2,{105,58,0}}, +/* 13769 */ {(12<<2)|2,{105,58,0}}, +/* 13770 */ {(12<<2)|2,{105,58,0}}, +/* 13771 */ {(12<<2)|2,{105,58,0}}, +/* 13772 */ {(12<<2)|2,{105,58,0}}, +/* 13773 */ {(12<<2)|2,{105,58,0}}, +/* 13774 */ {(12<<2)|2,{105,58,0}}, +/* 13775 */ {(12<<2)|2,{105,58,0}}, +/* 13776 */ {(12<<2)|2,{105,66,0}}, +/* 13777 */ {(12<<2)|2,{105,66,0}}, +/* 13778 */ {(12<<2)|2,{105,66,0}}, +/* 13779 */ {(12<<2)|2,{105,66,0}}, +/* 13780 */ {(12<<2)|2,{105,66,0}}, +/* 13781 */ {(12<<2)|2,{105,66,0}}, +/* 13782 */ {(12<<2)|2,{105,66,0}}, +/* 13783 */ {(12<<2)|2,{105,66,0}}, +/* 13784 */ {(12<<2)|2,{105,66,0}}, +/* 13785 */ {(12<<2)|2,{105,66,0}}, +/* 13786 */ {(12<<2)|2,{105,66,0}}, +/* 13787 */ {(12<<2)|2,{105,66,0}}, +/* 13788 */ {(12<<2)|2,{105,66,0}}, +/* 13789 */ {(12<<2)|2,{105,66,0}}, +/* 13790 */ {(12<<2)|2,{105,66,0}}, +/* 13791 */ {(12<<2)|2,{105,66,0}}, +/* 13792 */ {(12<<2)|2,{105,67,0}}, +/* 13793 */ {(12<<2)|2,{105,67,0}}, +/* 13794 */ {(12<<2)|2,{105,67,0}}, +/* 13795 */ {(12<<2)|2,{105,67,0}}, +/* 13796 */ {(12<<2)|2,{105,67,0}}, +/* 13797 */ {(12<<2)|2,{105,67,0}}, +/* 13798 */ {(12<<2)|2,{105,67,0}}, +/* 13799 */ {(12<<2)|2,{105,67,0}}, +/* 13800 */ {(12<<2)|2,{105,67,0}}, +/* 13801 */ {(12<<2)|2,{105,67,0}}, +/* 13802 */ {(12<<2)|2,{105,67,0}}, +/* 13803 */ {(12<<2)|2,{105,67,0}}, +/* 13804 */ {(12<<2)|2,{105,67,0}}, +/* 13805 */ {(12<<2)|2,{105,67,0}}, +/* 13806 */ {(12<<2)|2,{105,67,0}}, +/* 13807 */ {(12<<2)|2,{105,67,0}}, +/* 13808 */ {(12<<2)|2,{105,68,0}}, +/* 13809 */ {(12<<2)|2,{105,68,0}}, +/* 13810 */ {(12<<2)|2,{105,68,0}}, +/* 13811 */ {(12<<2)|2,{105,68,0}}, +/* 13812 */ {(12<<2)|2,{105,68,0}}, +/* 13813 */ {(12<<2)|2,{105,68,0}}, +/* 13814 */ {(12<<2)|2,{105,68,0}}, +/* 13815 */ {(12<<2)|2,{105,68,0}}, +/* 13816 */ {(12<<2)|2,{105,68,0}}, +/* 13817 */ {(12<<2)|2,{105,68,0}}, +/* 13818 */ {(12<<2)|2,{105,68,0}}, +/* 13819 */ {(12<<2)|2,{105,68,0}}, +/* 13820 */ {(12<<2)|2,{105,68,0}}, +/* 13821 */ {(12<<2)|2,{105,68,0}}, +/* 13822 */ {(12<<2)|2,{105,68,0}}, +/* 13823 */ {(12<<2)|2,{105,68,0}}, +/* 13824 */ {(12<<2)|2,{105,69,0}}, +/* 13825 */ {(12<<2)|2,{105,69,0}}, +/* 13826 */ {(12<<2)|2,{105,69,0}}, +/* 13827 */ {(12<<2)|2,{105,69,0}}, +/* 13828 */ {(12<<2)|2,{105,69,0}}, +/* 13829 */ {(12<<2)|2,{105,69,0}}, +/* 13830 */ {(12<<2)|2,{105,69,0}}, +/* 13831 */ {(12<<2)|2,{105,69,0}}, +/* 13832 */ {(12<<2)|2,{105,69,0}}, +/* 13833 */ {(12<<2)|2,{105,69,0}}, +/* 13834 */ {(12<<2)|2,{105,69,0}}, +/* 13835 */ {(12<<2)|2,{105,69,0}}, +/* 13836 */ {(12<<2)|2,{105,69,0}}, +/* 13837 */ {(12<<2)|2,{105,69,0}}, +/* 13838 */ {(12<<2)|2,{105,69,0}}, +/* 13839 */ {(12<<2)|2,{105,69,0}}, +/* 13840 */ {(12<<2)|2,{105,70,0}}, +/* 13841 */ {(12<<2)|2,{105,70,0}}, +/* 13842 */ {(12<<2)|2,{105,70,0}}, +/* 13843 */ {(12<<2)|2,{105,70,0}}, +/* 13844 */ {(12<<2)|2,{105,70,0}}, +/* 13845 */ {(12<<2)|2,{105,70,0}}, +/* 13846 */ {(12<<2)|2,{105,70,0}}, +/* 13847 */ {(12<<2)|2,{105,70,0}}, +/* 13848 */ {(12<<2)|2,{105,70,0}}, +/* 13849 */ {(12<<2)|2,{105,70,0}}, +/* 13850 */ {(12<<2)|2,{105,70,0}}, +/* 13851 */ {(12<<2)|2,{105,70,0}}, +/* 13852 */ {(12<<2)|2,{105,70,0}}, +/* 13853 */ {(12<<2)|2,{105,70,0}}, +/* 13854 */ {(12<<2)|2,{105,70,0}}, +/* 13855 */ {(12<<2)|2,{105,70,0}}, +/* 13856 */ {(12<<2)|2,{105,71,0}}, +/* 13857 */ {(12<<2)|2,{105,71,0}}, +/* 13858 */ {(12<<2)|2,{105,71,0}}, +/* 13859 */ {(12<<2)|2,{105,71,0}}, +/* 13860 */ {(12<<2)|2,{105,71,0}}, +/* 13861 */ {(12<<2)|2,{105,71,0}}, +/* 13862 */ {(12<<2)|2,{105,71,0}}, +/* 13863 */ {(12<<2)|2,{105,71,0}}, +/* 13864 */ {(12<<2)|2,{105,71,0}}, +/* 13865 */ {(12<<2)|2,{105,71,0}}, +/* 13866 */ {(12<<2)|2,{105,71,0}}, +/* 13867 */ {(12<<2)|2,{105,71,0}}, +/* 13868 */ {(12<<2)|2,{105,71,0}}, +/* 13869 */ {(12<<2)|2,{105,71,0}}, +/* 13870 */ {(12<<2)|2,{105,71,0}}, +/* 13871 */ {(12<<2)|2,{105,71,0}}, +/* 13872 */ {(12<<2)|2,{105,72,0}}, +/* 13873 */ {(12<<2)|2,{105,72,0}}, +/* 13874 */ {(12<<2)|2,{105,72,0}}, +/* 13875 */ {(12<<2)|2,{105,72,0}}, +/* 13876 */ {(12<<2)|2,{105,72,0}}, +/* 13877 */ {(12<<2)|2,{105,72,0}}, +/* 13878 */ {(12<<2)|2,{105,72,0}}, +/* 13879 */ {(12<<2)|2,{105,72,0}}, +/* 13880 */ {(12<<2)|2,{105,72,0}}, +/* 13881 */ {(12<<2)|2,{105,72,0}}, +/* 13882 */ {(12<<2)|2,{105,72,0}}, +/* 13883 */ {(12<<2)|2,{105,72,0}}, +/* 13884 */ {(12<<2)|2,{105,72,0}}, +/* 13885 */ {(12<<2)|2,{105,72,0}}, +/* 13886 */ {(12<<2)|2,{105,72,0}}, +/* 13887 */ {(12<<2)|2,{105,72,0}}, +/* 13888 */ {(12<<2)|2,{105,73,0}}, +/* 13889 */ {(12<<2)|2,{105,73,0}}, +/* 13890 */ {(12<<2)|2,{105,73,0}}, +/* 13891 */ {(12<<2)|2,{105,73,0}}, +/* 13892 */ {(12<<2)|2,{105,73,0}}, +/* 13893 */ {(12<<2)|2,{105,73,0}}, +/* 13894 */ {(12<<2)|2,{105,73,0}}, +/* 13895 */ {(12<<2)|2,{105,73,0}}, +/* 13896 */ {(12<<2)|2,{105,73,0}}, +/* 13897 */ {(12<<2)|2,{105,73,0}}, +/* 13898 */ {(12<<2)|2,{105,73,0}}, +/* 13899 */ {(12<<2)|2,{105,73,0}}, +/* 13900 */ {(12<<2)|2,{105,73,0}}, +/* 13901 */ {(12<<2)|2,{105,73,0}}, +/* 13902 */ {(12<<2)|2,{105,73,0}}, +/* 13903 */ {(12<<2)|2,{105,73,0}}, +/* 13904 */ {(12<<2)|2,{105,74,0}}, +/* 13905 */ {(12<<2)|2,{105,74,0}}, +/* 13906 */ {(12<<2)|2,{105,74,0}}, +/* 13907 */ {(12<<2)|2,{105,74,0}}, +/* 13908 */ {(12<<2)|2,{105,74,0}}, +/* 13909 */ {(12<<2)|2,{105,74,0}}, +/* 13910 */ {(12<<2)|2,{105,74,0}}, +/* 13911 */ {(12<<2)|2,{105,74,0}}, +/* 13912 */ {(12<<2)|2,{105,74,0}}, +/* 13913 */ {(12<<2)|2,{105,74,0}}, +/* 13914 */ {(12<<2)|2,{105,74,0}}, +/* 13915 */ {(12<<2)|2,{105,74,0}}, +/* 13916 */ {(12<<2)|2,{105,74,0}}, +/* 13917 */ {(12<<2)|2,{105,74,0}}, +/* 13918 */ {(12<<2)|2,{105,74,0}}, +/* 13919 */ {(12<<2)|2,{105,74,0}}, +/* 13920 */ {(12<<2)|2,{105,75,0}}, +/* 13921 */ {(12<<2)|2,{105,75,0}}, +/* 13922 */ {(12<<2)|2,{105,75,0}}, +/* 13923 */ {(12<<2)|2,{105,75,0}}, +/* 13924 */ {(12<<2)|2,{105,75,0}}, +/* 13925 */ {(12<<2)|2,{105,75,0}}, +/* 13926 */ {(12<<2)|2,{105,75,0}}, +/* 13927 */ {(12<<2)|2,{105,75,0}}, +/* 13928 */ {(12<<2)|2,{105,75,0}}, +/* 13929 */ {(12<<2)|2,{105,75,0}}, +/* 13930 */ {(12<<2)|2,{105,75,0}}, +/* 13931 */ {(12<<2)|2,{105,75,0}}, +/* 13932 */ {(12<<2)|2,{105,75,0}}, +/* 13933 */ {(12<<2)|2,{105,75,0}}, +/* 13934 */ {(12<<2)|2,{105,75,0}}, +/* 13935 */ {(12<<2)|2,{105,75,0}}, +/* 13936 */ {(12<<2)|2,{105,76,0}}, +/* 13937 */ {(12<<2)|2,{105,76,0}}, +/* 13938 */ {(12<<2)|2,{105,76,0}}, +/* 13939 */ {(12<<2)|2,{105,76,0}}, +/* 13940 */ {(12<<2)|2,{105,76,0}}, +/* 13941 */ {(12<<2)|2,{105,76,0}}, +/* 13942 */ {(12<<2)|2,{105,76,0}}, +/* 13943 */ {(12<<2)|2,{105,76,0}}, +/* 13944 */ {(12<<2)|2,{105,76,0}}, +/* 13945 */ {(12<<2)|2,{105,76,0}}, +/* 13946 */ {(12<<2)|2,{105,76,0}}, +/* 13947 */ {(12<<2)|2,{105,76,0}}, +/* 13948 */ {(12<<2)|2,{105,76,0}}, +/* 13949 */ {(12<<2)|2,{105,76,0}}, +/* 13950 */ {(12<<2)|2,{105,76,0}}, +/* 13951 */ {(12<<2)|2,{105,76,0}}, +/* 13952 */ {(12<<2)|2,{105,77,0}}, +/* 13953 */ {(12<<2)|2,{105,77,0}}, +/* 13954 */ {(12<<2)|2,{105,77,0}}, +/* 13955 */ {(12<<2)|2,{105,77,0}}, +/* 13956 */ {(12<<2)|2,{105,77,0}}, +/* 13957 */ {(12<<2)|2,{105,77,0}}, +/* 13958 */ {(12<<2)|2,{105,77,0}}, +/* 13959 */ {(12<<2)|2,{105,77,0}}, +/* 13960 */ {(12<<2)|2,{105,77,0}}, +/* 13961 */ {(12<<2)|2,{105,77,0}}, +/* 13962 */ {(12<<2)|2,{105,77,0}}, +/* 13963 */ {(12<<2)|2,{105,77,0}}, +/* 13964 */ {(12<<2)|2,{105,77,0}}, +/* 13965 */ {(12<<2)|2,{105,77,0}}, +/* 13966 */ {(12<<2)|2,{105,77,0}}, +/* 13967 */ {(12<<2)|2,{105,77,0}}, +/* 13968 */ {(12<<2)|2,{105,78,0}}, +/* 13969 */ {(12<<2)|2,{105,78,0}}, +/* 13970 */ {(12<<2)|2,{105,78,0}}, +/* 13971 */ {(12<<2)|2,{105,78,0}}, +/* 13972 */ {(12<<2)|2,{105,78,0}}, +/* 13973 */ {(12<<2)|2,{105,78,0}}, +/* 13974 */ {(12<<2)|2,{105,78,0}}, +/* 13975 */ {(12<<2)|2,{105,78,0}}, +/* 13976 */ {(12<<2)|2,{105,78,0}}, +/* 13977 */ {(12<<2)|2,{105,78,0}}, +/* 13978 */ {(12<<2)|2,{105,78,0}}, +/* 13979 */ {(12<<2)|2,{105,78,0}}, +/* 13980 */ {(12<<2)|2,{105,78,0}}, +/* 13981 */ {(12<<2)|2,{105,78,0}}, +/* 13982 */ {(12<<2)|2,{105,78,0}}, +/* 13983 */ {(12<<2)|2,{105,78,0}}, +/* 13984 */ {(12<<2)|2,{105,79,0}}, +/* 13985 */ {(12<<2)|2,{105,79,0}}, +/* 13986 */ {(12<<2)|2,{105,79,0}}, +/* 13987 */ {(12<<2)|2,{105,79,0}}, +/* 13988 */ {(12<<2)|2,{105,79,0}}, +/* 13989 */ {(12<<2)|2,{105,79,0}}, +/* 13990 */ {(12<<2)|2,{105,79,0}}, +/* 13991 */ {(12<<2)|2,{105,79,0}}, +/* 13992 */ {(12<<2)|2,{105,79,0}}, +/* 13993 */ {(12<<2)|2,{105,79,0}}, +/* 13994 */ {(12<<2)|2,{105,79,0}}, +/* 13995 */ {(12<<2)|2,{105,79,0}}, +/* 13996 */ {(12<<2)|2,{105,79,0}}, +/* 13997 */ {(12<<2)|2,{105,79,0}}, +/* 13998 */ {(12<<2)|2,{105,79,0}}, +/* 13999 */ {(12<<2)|2,{105,79,0}}, +/* 14000 */ {(12<<2)|2,{105,80,0}}, +/* 14001 */ {(12<<2)|2,{105,80,0}}, +/* 14002 */ {(12<<2)|2,{105,80,0}}, +/* 14003 */ {(12<<2)|2,{105,80,0}}, +/* 14004 */ {(12<<2)|2,{105,80,0}}, +/* 14005 */ {(12<<2)|2,{105,80,0}}, +/* 14006 */ {(12<<2)|2,{105,80,0}}, +/* 14007 */ {(12<<2)|2,{105,80,0}}, +/* 14008 */ {(12<<2)|2,{105,80,0}}, +/* 14009 */ {(12<<2)|2,{105,80,0}}, +/* 14010 */ {(12<<2)|2,{105,80,0}}, +/* 14011 */ {(12<<2)|2,{105,80,0}}, +/* 14012 */ {(12<<2)|2,{105,80,0}}, +/* 14013 */ {(12<<2)|2,{105,80,0}}, +/* 14014 */ {(12<<2)|2,{105,80,0}}, +/* 14015 */ {(12<<2)|2,{105,80,0}}, +/* 14016 */ {(12<<2)|2,{105,81,0}}, +/* 14017 */ {(12<<2)|2,{105,81,0}}, +/* 14018 */ {(12<<2)|2,{105,81,0}}, +/* 14019 */ {(12<<2)|2,{105,81,0}}, +/* 14020 */ {(12<<2)|2,{105,81,0}}, +/* 14021 */ {(12<<2)|2,{105,81,0}}, +/* 14022 */ {(12<<2)|2,{105,81,0}}, +/* 14023 */ {(12<<2)|2,{105,81,0}}, +/* 14024 */ {(12<<2)|2,{105,81,0}}, +/* 14025 */ {(12<<2)|2,{105,81,0}}, +/* 14026 */ {(12<<2)|2,{105,81,0}}, +/* 14027 */ {(12<<2)|2,{105,81,0}}, +/* 14028 */ {(12<<2)|2,{105,81,0}}, +/* 14029 */ {(12<<2)|2,{105,81,0}}, +/* 14030 */ {(12<<2)|2,{105,81,0}}, +/* 14031 */ {(12<<2)|2,{105,81,0}}, +/* 14032 */ {(12<<2)|2,{105,82,0}}, +/* 14033 */ {(12<<2)|2,{105,82,0}}, +/* 14034 */ {(12<<2)|2,{105,82,0}}, +/* 14035 */ {(12<<2)|2,{105,82,0}}, +/* 14036 */ {(12<<2)|2,{105,82,0}}, +/* 14037 */ {(12<<2)|2,{105,82,0}}, +/* 14038 */ {(12<<2)|2,{105,82,0}}, +/* 14039 */ {(12<<2)|2,{105,82,0}}, +/* 14040 */ {(12<<2)|2,{105,82,0}}, +/* 14041 */ {(12<<2)|2,{105,82,0}}, +/* 14042 */ {(12<<2)|2,{105,82,0}}, +/* 14043 */ {(12<<2)|2,{105,82,0}}, +/* 14044 */ {(12<<2)|2,{105,82,0}}, +/* 14045 */ {(12<<2)|2,{105,82,0}}, +/* 14046 */ {(12<<2)|2,{105,82,0}}, +/* 14047 */ {(12<<2)|2,{105,82,0}}, +/* 14048 */ {(12<<2)|2,{105,83,0}}, +/* 14049 */ {(12<<2)|2,{105,83,0}}, +/* 14050 */ {(12<<2)|2,{105,83,0}}, +/* 14051 */ {(12<<2)|2,{105,83,0}}, +/* 14052 */ {(12<<2)|2,{105,83,0}}, +/* 14053 */ {(12<<2)|2,{105,83,0}}, +/* 14054 */ {(12<<2)|2,{105,83,0}}, +/* 14055 */ {(12<<2)|2,{105,83,0}}, +/* 14056 */ {(12<<2)|2,{105,83,0}}, +/* 14057 */ {(12<<2)|2,{105,83,0}}, +/* 14058 */ {(12<<2)|2,{105,83,0}}, +/* 14059 */ {(12<<2)|2,{105,83,0}}, +/* 14060 */ {(12<<2)|2,{105,83,0}}, +/* 14061 */ {(12<<2)|2,{105,83,0}}, +/* 14062 */ {(12<<2)|2,{105,83,0}}, +/* 14063 */ {(12<<2)|2,{105,83,0}}, +/* 14064 */ {(12<<2)|2,{105,84,0}}, +/* 14065 */ {(12<<2)|2,{105,84,0}}, +/* 14066 */ {(12<<2)|2,{105,84,0}}, +/* 14067 */ {(12<<2)|2,{105,84,0}}, +/* 14068 */ {(12<<2)|2,{105,84,0}}, +/* 14069 */ {(12<<2)|2,{105,84,0}}, +/* 14070 */ {(12<<2)|2,{105,84,0}}, +/* 14071 */ {(12<<2)|2,{105,84,0}}, +/* 14072 */ {(12<<2)|2,{105,84,0}}, +/* 14073 */ {(12<<2)|2,{105,84,0}}, +/* 14074 */ {(12<<2)|2,{105,84,0}}, +/* 14075 */ {(12<<2)|2,{105,84,0}}, +/* 14076 */ {(12<<2)|2,{105,84,0}}, +/* 14077 */ {(12<<2)|2,{105,84,0}}, +/* 14078 */ {(12<<2)|2,{105,84,0}}, +/* 14079 */ {(12<<2)|2,{105,84,0}}, +/* 14080 */ {(12<<2)|2,{105,85,0}}, +/* 14081 */ {(12<<2)|2,{105,85,0}}, +/* 14082 */ {(12<<2)|2,{105,85,0}}, +/* 14083 */ {(12<<2)|2,{105,85,0}}, +/* 14084 */ {(12<<2)|2,{105,85,0}}, +/* 14085 */ {(12<<2)|2,{105,85,0}}, +/* 14086 */ {(12<<2)|2,{105,85,0}}, +/* 14087 */ {(12<<2)|2,{105,85,0}}, +/* 14088 */ {(12<<2)|2,{105,85,0}}, +/* 14089 */ {(12<<2)|2,{105,85,0}}, +/* 14090 */ {(12<<2)|2,{105,85,0}}, +/* 14091 */ {(12<<2)|2,{105,85,0}}, +/* 14092 */ {(12<<2)|2,{105,85,0}}, +/* 14093 */ {(12<<2)|2,{105,85,0}}, +/* 14094 */ {(12<<2)|2,{105,85,0}}, +/* 14095 */ {(12<<2)|2,{105,85,0}}, +/* 14096 */ {(12<<2)|2,{105,86,0}}, +/* 14097 */ {(12<<2)|2,{105,86,0}}, +/* 14098 */ {(12<<2)|2,{105,86,0}}, +/* 14099 */ {(12<<2)|2,{105,86,0}}, +/* 14100 */ {(12<<2)|2,{105,86,0}}, +/* 14101 */ {(12<<2)|2,{105,86,0}}, +/* 14102 */ {(12<<2)|2,{105,86,0}}, +/* 14103 */ {(12<<2)|2,{105,86,0}}, +/* 14104 */ {(12<<2)|2,{105,86,0}}, +/* 14105 */ {(12<<2)|2,{105,86,0}}, +/* 14106 */ {(12<<2)|2,{105,86,0}}, +/* 14107 */ {(12<<2)|2,{105,86,0}}, +/* 14108 */ {(12<<2)|2,{105,86,0}}, +/* 14109 */ {(12<<2)|2,{105,86,0}}, +/* 14110 */ {(12<<2)|2,{105,86,0}}, +/* 14111 */ {(12<<2)|2,{105,86,0}}, +/* 14112 */ {(12<<2)|2,{105,87,0}}, +/* 14113 */ {(12<<2)|2,{105,87,0}}, +/* 14114 */ {(12<<2)|2,{105,87,0}}, +/* 14115 */ {(12<<2)|2,{105,87,0}}, +/* 14116 */ {(12<<2)|2,{105,87,0}}, +/* 14117 */ {(12<<2)|2,{105,87,0}}, +/* 14118 */ {(12<<2)|2,{105,87,0}}, +/* 14119 */ {(12<<2)|2,{105,87,0}}, +/* 14120 */ {(12<<2)|2,{105,87,0}}, +/* 14121 */ {(12<<2)|2,{105,87,0}}, +/* 14122 */ {(12<<2)|2,{105,87,0}}, +/* 14123 */ {(12<<2)|2,{105,87,0}}, +/* 14124 */ {(12<<2)|2,{105,87,0}}, +/* 14125 */ {(12<<2)|2,{105,87,0}}, +/* 14126 */ {(12<<2)|2,{105,87,0}}, +/* 14127 */ {(12<<2)|2,{105,87,0}}, +/* 14128 */ {(12<<2)|2,{105,89,0}}, +/* 14129 */ {(12<<2)|2,{105,89,0}}, +/* 14130 */ {(12<<2)|2,{105,89,0}}, +/* 14131 */ {(12<<2)|2,{105,89,0}}, +/* 14132 */ {(12<<2)|2,{105,89,0}}, +/* 14133 */ {(12<<2)|2,{105,89,0}}, +/* 14134 */ {(12<<2)|2,{105,89,0}}, +/* 14135 */ {(12<<2)|2,{105,89,0}}, +/* 14136 */ {(12<<2)|2,{105,89,0}}, +/* 14137 */ {(12<<2)|2,{105,89,0}}, +/* 14138 */ {(12<<2)|2,{105,89,0}}, +/* 14139 */ {(12<<2)|2,{105,89,0}}, +/* 14140 */ {(12<<2)|2,{105,89,0}}, +/* 14141 */ {(12<<2)|2,{105,89,0}}, +/* 14142 */ {(12<<2)|2,{105,89,0}}, +/* 14143 */ {(12<<2)|2,{105,89,0}}, +/* 14144 */ {(12<<2)|2,{105,106,0}}, +/* 14145 */ {(12<<2)|2,{105,106,0}}, +/* 14146 */ {(12<<2)|2,{105,106,0}}, +/* 14147 */ {(12<<2)|2,{105,106,0}}, +/* 14148 */ {(12<<2)|2,{105,106,0}}, +/* 14149 */ {(12<<2)|2,{105,106,0}}, +/* 14150 */ {(12<<2)|2,{105,106,0}}, +/* 14151 */ {(12<<2)|2,{105,106,0}}, +/* 14152 */ {(12<<2)|2,{105,106,0}}, +/* 14153 */ {(12<<2)|2,{105,106,0}}, +/* 14154 */ {(12<<2)|2,{105,106,0}}, +/* 14155 */ {(12<<2)|2,{105,106,0}}, +/* 14156 */ {(12<<2)|2,{105,106,0}}, +/* 14157 */ {(12<<2)|2,{105,106,0}}, +/* 14158 */ {(12<<2)|2,{105,106,0}}, +/* 14159 */ {(12<<2)|2,{105,106,0}}, +/* 14160 */ {(12<<2)|2,{105,107,0}}, +/* 14161 */ {(12<<2)|2,{105,107,0}}, +/* 14162 */ {(12<<2)|2,{105,107,0}}, +/* 14163 */ {(12<<2)|2,{105,107,0}}, +/* 14164 */ {(12<<2)|2,{105,107,0}}, +/* 14165 */ {(12<<2)|2,{105,107,0}}, +/* 14166 */ {(12<<2)|2,{105,107,0}}, +/* 14167 */ {(12<<2)|2,{105,107,0}}, +/* 14168 */ {(12<<2)|2,{105,107,0}}, +/* 14169 */ {(12<<2)|2,{105,107,0}}, +/* 14170 */ {(12<<2)|2,{105,107,0}}, +/* 14171 */ {(12<<2)|2,{105,107,0}}, +/* 14172 */ {(12<<2)|2,{105,107,0}}, +/* 14173 */ {(12<<2)|2,{105,107,0}}, +/* 14174 */ {(12<<2)|2,{105,107,0}}, +/* 14175 */ {(12<<2)|2,{105,107,0}}, +/* 14176 */ {(12<<2)|2,{105,113,0}}, +/* 14177 */ {(12<<2)|2,{105,113,0}}, +/* 14178 */ {(12<<2)|2,{105,113,0}}, +/* 14179 */ {(12<<2)|2,{105,113,0}}, +/* 14180 */ {(12<<2)|2,{105,113,0}}, +/* 14181 */ {(12<<2)|2,{105,113,0}}, +/* 14182 */ {(12<<2)|2,{105,113,0}}, +/* 14183 */ {(12<<2)|2,{105,113,0}}, +/* 14184 */ {(12<<2)|2,{105,113,0}}, +/* 14185 */ {(12<<2)|2,{105,113,0}}, +/* 14186 */ {(12<<2)|2,{105,113,0}}, +/* 14187 */ {(12<<2)|2,{105,113,0}}, +/* 14188 */ {(12<<2)|2,{105,113,0}}, +/* 14189 */ {(12<<2)|2,{105,113,0}}, +/* 14190 */ {(12<<2)|2,{105,113,0}}, +/* 14191 */ {(12<<2)|2,{105,113,0}}, +/* 14192 */ {(12<<2)|2,{105,118,0}}, +/* 14193 */ {(12<<2)|2,{105,118,0}}, +/* 14194 */ {(12<<2)|2,{105,118,0}}, +/* 14195 */ {(12<<2)|2,{105,118,0}}, +/* 14196 */ {(12<<2)|2,{105,118,0}}, +/* 14197 */ {(12<<2)|2,{105,118,0}}, +/* 14198 */ {(12<<2)|2,{105,118,0}}, +/* 14199 */ {(12<<2)|2,{105,118,0}}, +/* 14200 */ {(12<<2)|2,{105,118,0}}, +/* 14201 */ {(12<<2)|2,{105,118,0}}, +/* 14202 */ {(12<<2)|2,{105,118,0}}, +/* 14203 */ {(12<<2)|2,{105,118,0}}, +/* 14204 */ {(12<<2)|2,{105,118,0}}, +/* 14205 */ {(12<<2)|2,{105,118,0}}, +/* 14206 */ {(12<<2)|2,{105,118,0}}, +/* 14207 */ {(12<<2)|2,{105,118,0}}, +/* 14208 */ {(12<<2)|2,{105,119,0}}, +/* 14209 */ {(12<<2)|2,{105,119,0}}, +/* 14210 */ {(12<<2)|2,{105,119,0}}, +/* 14211 */ {(12<<2)|2,{105,119,0}}, +/* 14212 */ {(12<<2)|2,{105,119,0}}, +/* 14213 */ {(12<<2)|2,{105,119,0}}, +/* 14214 */ {(12<<2)|2,{105,119,0}}, +/* 14215 */ {(12<<2)|2,{105,119,0}}, +/* 14216 */ {(12<<2)|2,{105,119,0}}, +/* 14217 */ {(12<<2)|2,{105,119,0}}, +/* 14218 */ {(12<<2)|2,{105,119,0}}, +/* 14219 */ {(12<<2)|2,{105,119,0}}, +/* 14220 */ {(12<<2)|2,{105,119,0}}, +/* 14221 */ {(12<<2)|2,{105,119,0}}, +/* 14222 */ {(12<<2)|2,{105,119,0}}, +/* 14223 */ {(12<<2)|2,{105,119,0}}, +/* 14224 */ {(12<<2)|2,{105,120,0}}, +/* 14225 */ {(12<<2)|2,{105,120,0}}, +/* 14226 */ {(12<<2)|2,{105,120,0}}, +/* 14227 */ {(12<<2)|2,{105,120,0}}, +/* 14228 */ {(12<<2)|2,{105,120,0}}, +/* 14229 */ {(12<<2)|2,{105,120,0}}, +/* 14230 */ {(12<<2)|2,{105,120,0}}, +/* 14231 */ {(12<<2)|2,{105,120,0}}, +/* 14232 */ {(12<<2)|2,{105,120,0}}, +/* 14233 */ {(12<<2)|2,{105,120,0}}, +/* 14234 */ {(12<<2)|2,{105,120,0}}, +/* 14235 */ {(12<<2)|2,{105,120,0}}, +/* 14236 */ {(12<<2)|2,{105,120,0}}, +/* 14237 */ {(12<<2)|2,{105,120,0}}, +/* 14238 */ {(12<<2)|2,{105,120,0}}, +/* 14239 */ {(12<<2)|2,{105,120,0}}, +/* 14240 */ {(12<<2)|2,{105,121,0}}, +/* 14241 */ {(12<<2)|2,{105,121,0}}, +/* 14242 */ {(12<<2)|2,{105,121,0}}, +/* 14243 */ {(12<<2)|2,{105,121,0}}, +/* 14244 */ {(12<<2)|2,{105,121,0}}, +/* 14245 */ {(12<<2)|2,{105,121,0}}, +/* 14246 */ {(12<<2)|2,{105,121,0}}, +/* 14247 */ {(12<<2)|2,{105,121,0}}, +/* 14248 */ {(12<<2)|2,{105,121,0}}, +/* 14249 */ {(12<<2)|2,{105,121,0}}, +/* 14250 */ {(12<<2)|2,{105,121,0}}, +/* 14251 */ {(12<<2)|2,{105,121,0}}, +/* 14252 */ {(12<<2)|2,{105,121,0}}, +/* 14253 */ {(12<<2)|2,{105,121,0}}, +/* 14254 */ {(12<<2)|2,{105,121,0}}, +/* 14255 */ {(12<<2)|2,{105,121,0}}, +/* 14256 */ {(12<<2)|2,{105,122,0}}, +/* 14257 */ {(12<<2)|2,{105,122,0}}, +/* 14258 */ {(12<<2)|2,{105,122,0}}, +/* 14259 */ {(12<<2)|2,{105,122,0}}, +/* 14260 */ {(12<<2)|2,{105,122,0}}, +/* 14261 */ {(12<<2)|2,{105,122,0}}, +/* 14262 */ {(12<<2)|2,{105,122,0}}, +/* 14263 */ {(12<<2)|2,{105,122,0}}, +/* 14264 */ {(12<<2)|2,{105,122,0}}, +/* 14265 */ {(12<<2)|2,{105,122,0}}, +/* 14266 */ {(12<<2)|2,{105,122,0}}, +/* 14267 */ {(12<<2)|2,{105,122,0}}, +/* 14268 */ {(12<<2)|2,{105,122,0}}, +/* 14269 */ {(12<<2)|2,{105,122,0}}, +/* 14270 */ {(12<<2)|2,{105,122,0}}, +/* 14271 */ {(12<<2)|2,{105,122,0}}, +/* 14272 */ {(13<<2)|2,{105,38,0}}, +/* 14273 */ {(13<<2)|2,{105,38,0}}, +/* 14274 */ {(13<<2)|2,{105,38,0}}, +/* 14275 */ {(13<<2)|2,{105,38,0}}, +/* 14276 */ {(13<<2)|2,{105,38,0}}, +/* 14277 */ {(13<<2)|2,{105,38,0}}, +/* 14278 */ {(13<<2)|2,{105,38,0}}, +/* 14279 */ {(13<<2)|2,{105,38,0}}, +/* 14280 */ {(13<<2)|2,{105,42,0}}, +/* 14281 */ {(13<<2)|2,{105,42,0}}, +/* 14282 */ {(13<<2)|2,{105,42,0}}, +/* 14283 */ {(13<<2)|2,{105,42,0}}, +/* 14284 */ {(13<<2)|2,{105,42,0}}, +/* 14285 */ {(13<<2)|2,{105,42,0}}, +/* 14286 */ {(13<<2)|2,{105,42,0}}, +/* 14287 */ {(13<<2)|2,{105,42,0}}, +/* 14288 */ {(13<<2)|2,{105,44,0}}, +/* 14289 */ {(13<<2)|2,{105,44,0}}, +/* 14290 */ {(13<<2)|2,{105,44,0}}, +/* 14291 */ {(13<<2)|2,{105,44,0}}, +/* 14292 */ {(13<<2)|2,{105,44,0}}, +/* 14293 */ {(13<<2)|2,{105,44,0}}, +/* 14294 */ {(13<<2)|2,{105,44,0}}, +/* 14295 */ {(13<<2)|2,{105,44,0}}, +/* 14296 */ {(13<<2)|2,{105,59,0}}, +/* 14297 */ {(13<<2)|2,{105,59,0}}, +/* 14298 */ {(13<<2)|2,{105,59,0}}, +/* 14299 */ {(13<<2)|2,{105,59,0}}, +/* 14300 */ {(13<<2)|2,{105,59,0}}, +/* 14301 */ {(13<<2)|2,{105,59,0}}, +/* 14302 */ {(13<<2)|2,{105,59,0}}, +/* 14303 */ {(13<<2)|2,{105,59,0}}, +/* 14304 */ {(13<<2)|2,{105,88,0}}, +/* 14305 */ {(13<<2)|2,{105,88,0}}, +/* 14306 */ {(13<<2)|2,{105,88,0}}, +/* 14307 */ {(13<<2)|2,{105,88,0}}, +/* 14308 */ {(13<<2)|2,{105,88,0}}, +/* 14309 */ {(13<<2)|2,{105,88,0}}, +/* 14310 */ {(13<<2)|2,{105,88,0}}, +/* 14311 */ {(13<<2)|2,{105,88,0}}, +/* 14312 */ {(13<<2)|2,{105,90,0}}, +/* 14313 */ {(13<<2)|2,{105,90,0}}, +/* 14314 */ {(13<<2)|2,{105,90,0}}, +/* 14315 */ {(13<<2)|2,{105,90,0}}, +/* 14316 */ {(13<<2)|2,{105,90,0}}, +/* 14317 */ {(13<<2)|2,{105,90,0}}, +/* 14318 */ {(13<<2)|2,{105,90,0}}, +/* 14319 */ {(13<<2)|2,{105,90,0}}, +/* 14320 */ {(15<<2)|2,{105,33,0}}, +/* 14321 */ {(15<<2)|2,{105,33,0}}, +/* 14322 */ {(15<<2)|2,{105,34,0}}, +/* 14323 */ {(15<<2)|2,{105,34,0}}, +/* 14324 */ {(15<<2)|2,{105,40,0}}, +/* 14325 */ {(15<<2)|2,{105,40,0}}, +/* 14326 */ {(15<<2)|2,{105,41,0}}, +/* 14327 */ {(15<<2)|2,{105,41,0}}, +/* 14328 */ {(15<<2)|2,{105,63,0}}, +/* 14329 */ {(15<<2)|2,{105,63,0}}, +/* 14330 */ {(16<<2)|2,{105,39,0}}, +/* 14331 */ {(16<<2)|2,{105,43,0}}, +/* 14332 */ {(16<<2)|2,{105,124,0}}, +/* 14333 */ {(5<<2)|1,{105,0,0}}, +/* 14334 */ {(5<<2)|1,{105,0,0}}, +/* 14335 */ {(5<<2)|1,{105,0,0}}, +/* 14336 */ {(15<<2)|3,{111,48,48}}, +/* 14337 */ {(15<<2)|3,{111,48,48}}, +/* 14338 */ {(15<<2)|3,{111,48,49}}, +/* 14339 */ {(15<<2)|3,{111,48,49}}, +/* 14340 */ {(15<<2)|3,{111,48,50}}, +/* 14341 */ {(15<<2)|3,{111,48,50}}, +/* 14342 */ {(15<<2)|3,{111,48,97}}, +/* 14343 */ {(15<<2)|3,{111,48,97}}, +/* 14344 */ {(15<<2)|3,{111,48,99}}, +/* 14345 */ {(15<<2)|3,{111,48,99}}, +/* 14346 */ {(15<<2)|3,{111,48,101}}, +/* 14347 */ {(15<<2)|3,{111,48,101}}, +/* 14348 */ {(15<<2)|3,{111,48,105}}, +/* 14349 */ {(15<<2)|3,{111,48,105}}, +/* 14350 */ {(15<<2)|3,{111,48,111}}, +/* 14351 */ {(15<<2)|3,{111,48,111}}, +/* 14352 */ {(15<<2)|3,{111,48,115}}, +/* 14353 */ {(15<<2)|3,{111,48,115}}, +/* 14354 */ {(15<<2)|3,{111,48,116}}, +/* 14355 */ {(15<<2)|3,{111,48,116}}, +/* 14356 */ {(16<<2)|3,{111,48,32}}, +/* 14357 */ {(16<<2)|3,{111,48,37}}, +/* 14358 */ {(16<<2)|3,{111,48,45}}, +/* 14359 */ {(16<<2)|3,{111,48,46}}, +/* 14360 */ {(16<<2)|3,{111,48,47}}, +/* 14361 */ {(16<<2)|3,{111,48,51}}, +/* 14362 */ {(16<<2)|3,{111,48,52}}, +/* 14363 */ {(16<<2)|3,{111,48,53}}, +/* 14364 */ {(16<<2)|3,{111,48,54}}, +/* 14365 */ {(16<<2)|3,{111,48,55}}, +/* 14366 */ {(16<<2)|3,{111,48,56}}, +/* 14367 */ {(16<<2)|3,{111,48,57}}, +/* 14368 */ {(16<<2)|3,{111,48,61}}, +/* 14369 */ {(16<<2)|3,{111,48,65}}, +/* 14370 */ {(16<<2)|3,{111,48,95}}, +/* 14371 */ {(16<<2)|3,{111,48,98}}, +/* 14372 */ {(16<<2)|3,{111,48,100}}, +/* 14373 */ {(16<<2)|3,{111,48,102}}, +/* 14374 */ {(16<<2)|3,{111,48,103}}, +/* 14375 */ {(16<<2)|3,{111,48,104}}, +/* 14376 */ {(16<<2)|3,{111,48,108}}, +/* 14377 */ {(16<<2)|3,{111,48,109}}, +/* 14378 */ {(16<<2)|3,{111,48,110}}, +/* 14379 */ {(16<<2)|3,{111,48,112}}, +/* 14380 */ {(16<<2)|3,{111,48,114}}, +/* 14381 */ {(16<<2)|3,{111,48,117}}, +/* 14382 */ {(10<<2)|2,{111,48,0}}, +/* 14383 */ {(10<<2)|2,{111,48,0}}, +/* 14384 */ {(10<<2)|2,{111,48,0}}, +/* 14385 */ {(10<<2)|2,{111,48,0}}, +/* 14386 */ {(10<<2)|2,{111,48,0}}, +/* 14387 */ {(10<<2)|2,{111,48,0}}, +/* 14388 */ {(10<<2)|2,{111,48,0}}, +/* 14389 */ {(10<<2)|2,{111,48,0}}, +/* 14390 */ {(10<<2)|2,{111,48,0}}, +/* 14391 */ {(10<<2)|2,{111,48,0}}, +/* 14392 */ {(10<<2)|2,{111,48,0}}, +/* 14393 */ {(10<<2)|2,{111,48,0}}, +/* 14394 */ {(10<<2)|2,{111,48,0}}, +/* 14395 */ {(10<<2)|2,{111,48,0}}, +/* 14396 */ {(10<<2)|2,{111,48,0}}, +/* 14397 */ {(10<<2)|2,{111,48,0}}, +/* 14398 */ {(10<<2)|2,{111,48,0}}, +/* 14399 */ {(10<<2)|2,{111,48,0}}, +/* 14400 */ {(15<<2)|3,{111,49,48}}, +/* 14401 */ {(15<<2)|3,{111,49,48}}, +/* 14402 */ {(15<<2)|3,{111,49,49}}, +/* 14403 */ {(15<<2)|3,{111,49,49}}, +/* 14404 */ {(15<<2)|3,{111,49,50}}, +/* 14405 */ {(15<<2)|3,{111,49,50}}, +/* 14406 */ {(15<<2)|3,{111,49,97}}, +/* 14407 */ {(15<<2)|3,{111,49,97}}, +/* 14408 */ {(15<<2)|3,{111,49,99}}, +/* 14409 */ {(15<<2)|3,{111,49,99}}, +/* 14410 */ {(15<<2)|3,{111,49,101}}, +/* 14411 */ {(15<<2)|3,{111,49,101}}, +/* 14412 */ {(15<<2)|3,{111,49,105}}, +/* 14413 */ {(15<<2)|3,{111,49,105}}, +/* 14414 */ {(15<<2)|3,{111,49,111}}, +/* 14415 */ {(15<<2)|3,{111,49,111}}, +/* 14416 */ {(15<<2)|3,{111,49,115}}, +/* 14417 */ {(15<<2)|3,{111,49,115}}, +/* 14418 */ {(15<<2)|3,{111,49,116}}, +/* 14419 */ {(15<<2)|3,{111,49,116}}, +/* 14420 */ {(16<<2)|3,{111,49,32}}, +/* 14421 */ {(16<<2)|3,{111,49,37}}, +/* 14422 */ {(16<<2)|3,{111,49,45}}, +/* 14423 */ {(16<<2)|3,{111,49,46}}, +/* 14424 */ {(16<<2)|3,{111,49,47}}, +/* 14425 */ {(16<<2)|3,{111,49,51}}, +/* 14426 */ {(16<<2)|3,{111,49,52}}, +/* 14427 */ {(16<<2)|3,{111,49,53}}, +/* 14428 */ {(16<<2)|3,{111,49,54}}, +/* 14429 */ {(16<<2)|3,{111,49,55}}, +/* 14430 */ {(16<<2)|3,{111,49,56}}, +/* 14431 */ {(16<<2)|3,{111,49,57}}, +/* 14432 */ {(16<<2)|3,{111,49,61}}, +/* 14433 */ {(16<<2)|3,{111,49,65}}, +/* 14434 */ {(16<<2)|3,{111,49,95}}, +/* 14435 */ {(16<<2)|3,{111,49,98}}, +/* 14436 */ {(16<<2)|3,{111,49,100}}, +/* 14437 */ {(16<<2)|3,{111,49,102}}, +/* 14438 */ {(16<<2)|3,{111,49,103}}, +/* 14439 */ {(16<<2)|3,{111,49,104}}, +/* 14440 */ {(16<<2)|3,{111,49,108}}, +/* 14441 */ {(16<<2)|3,{111,49,109}}, +/* 14442 */ {(16<<2)|3,{111,49,110}}, +/* 14443 */ {(16<<2)|3,{111,49,112}}, +/* 14444 */ {(16<<2)|3,{111,49,114}}, +/* 14445 */ {(16<<2)|3,{111,49,117}}, +/* 14446 */ {(10<<2)|2,{111,49,0}}, +/* 14447 */ {(10<<2)|2,{111,49,0}}, +/* 14448 */ {(10<<2)|2,{111,49,0}}, +/* 14449 */ {(10<<2)|2,{111,49,0}}, +/* 14450 */ {(10<<2)|2,{111,49,0}}, +/* 14451 */ {(10<<2)|2,{111,49,0}}, +/* 14452 */ {(10<<2)|2,{111,49,0}}, +/* 14453 */ {(10<<2)|2,{111,49,0}}, +/* 14454 */ {(10<<2)|2,{111,49,0}}, +/* 14455 */ {(10<<2)|2,{111,49,0}}, +/* 14456 */ {(10<<2)|2,{111,49,0}}, +/* 14457 */ {(10<<2)|2,{111,49,0}}, +/* 14458 */ {(10<<2)|2,{111,49,0}}, +/* 14459 */ {(10<<2)|2,{111,49,0}}, +/* 14460 */ {(10<<2)|2,{111,49,0}}, +/* 14461 */ {(10<<2)|2,{111,49,0}}, +/* 14462 */ {(10<<2)|2,{111,49,0}}, +/* 14463 */ {(10<<2)|2,{111,49,0}}, +/* 14464 */ {(15<<2)|3,{111,50,48}}, +/* 14465 */ {(15<<2)|3,{111,50,48}}, +/* 14466 */ {(15<<2)|3,{111,50,49}}, +/* 14467 */ {(15<<2)|3,{111,50,49}}, +/* 14468 */ {(15<<2)|3,{111,50,50}}, +/* 14469 */ {(15<<2)|3,{111,50,50}}, +/* 14470 */ {(15<<2)|3,{111,50,97}}, +/* 14471 */ {(15<<2)|3,{111,50,97}}, +/* 14472 */ {(15<<2)|3,{111,50,99}}, +/* 14473 */ {(15<<2)|3,{111,50,99}}, +/* 14474 */ {(15<<2)|3,{111,50,101}}, +/* 14475 */ {(15<<2)|3,{111,50,101}}, +/* 14476 */ {(15<<2)|3,{111,50,105}}, +/* 14477 */ {(15<<2)|3,{111,50,105}}, +/* 14478 */ {(15<<2)|3,{111,50,111}}, +/* 14479 */ {(15<<2)|3,{111,50,111}}, +/* 14480 */ {(15<<2)|3,{111,50,115}}, +/* 14481 */ {(15<<2)|3,{111,50,115}}, +/* 14482 */ {(15<<2)|3,{111,50,116}}, +/* 14483 */ {(15<<2)|3,{111,50,116}}, +/* 14484 */ {(16<<2)|3,{111,50,32}}, +/* 14485 */ {(16<<2)|3,{111,50,37}}, +/* 14486 */ {(16<<2)|3,{111,50,45}}, +/* 14487 */ {(16<<2)|3,{111,50,46}}, +/* 14488 */ {(16<<2)|3,{111,50,47}}, +/* 14489 */ {(16<<2)|3,{111,50,51}}, +/* 14490 */ {(16<<2)|3,{111,50,52}}, +/* 14491 */ {(16<<2)|3,{111,50,53}}, +/* 14492 */ {(16<<2)|3,{111,50,54}}, +/* 14493 */ {(16<<2)|3,{111,50,55}}, +/* 14494 */ {(16<<2)|3,{111,50,56}}, +/* 14495 */ {(16<<2)|3,{111,50,57}}, +/* 14496 */ {(16<<2)|3,{111,50,61}}, +/* 14497 */ {(16<<2)|3,{111,50,65}}, +/* 14498 */ {(16<<2)|3,{111,50,95}}, +/* 14499 */ {(16<<2)|3,{111,50,98}}, +/* 14500 */ {(16<<2)|3,{111,50,100}}, +/* 14501 */ {(16<<2)|3,{111,50,102}}, +/* 14502 */ {(16<<2)|3,{111,50,103}}, +/* 14503 */ {(16<<2)|3,{111,50,104}}, +/* 14504 */ {(16<<2)|3,{111,50,108}}, +/* 14505 */ {(16<<2)|3,{111,50,109}}, +/* 14506 */ {(16<<2)|3,{111,50,110}}, +/* 14507 */ {(16<<2)|3,{111,50,112}}, +/* 14508 */ {(16<<2)|3,{111,50,114}}, +/* 14509 */ {(16<<2)|3,{111,50,117}}, +/* 14510 */ {(10<<2)|2,{111,50,0}}, +/* 14511 */ {(10<<2)|2,{111,50,0}}, +/* 14512 */ {(10<<2)|2,{111,50,0}}, +/* 14513 */ {(10<<2)|2,{111,50,0}}, +/* 14514 */ {(10<<2)|2,{111,50,0}}, +/* 14515 */ {(10<<2)|2,{111,50,0}}, +/* 14516 */ {(10<<2)|2,{111,50,0}}, +/* 14517 */ {(10<<2)|2,{111,50,0}}, +/* 14518 */ {(10<<2)|2,{111,50,0}}, +/* 14519 */ {(10<<2)|2,{111,50,0}}, +/* 14520 */ {(10<<2)|2,{111,50,0}}, +/* 14521 */ {(10<<2)|2,{111,50,0}}, +/* 14522 */ {(10<<2)|2,{111,50,0}}, +/* 14523 */ {(10<<2)|2,{111,50,0}}, +/* 14524 */ {(10<<2)|2,{111,50,0}}, +/* 14525 */ {(10<<2)|2,{111,50,0}}, +/* 14526 */ {(10<<2)|2,{111,50,0}}, +/* 14527 */ {(10<<2)|2,{111,50,0}}, +/* 14528 */ {(15<<2)|3,{111,97,48}}, +/* 14529 */ {(15<<2)|3,{111,97,48}}, +/* 14530 */ {(15<<2)|3,{111,97,49}}, +/* 14531 */ {(15<<2)|3,{111,97,49}}, +/* 14532 */ {(15<<2)|3,{111,97,50}}, +/* 14533 */ {(15<<2)|3,{111,97,50}}, +/* 14534 */ {(15<<2)|3,{111,97,97}}, +/* 14535 */ {(15<<2)|3,{111,97,97}}, +/* 14536 */ {(15<<2)|3,{111,97,99}}, +/* 14537 */ {(15<<2)|3,{111,97,99}}, +/* 14538 */ {(15<<2)|3,{111,97,101}}, +/* 14539 */ {(15<<2)|3,{111,97,101}}, +/* 14540 */ {(15<<2)|3,{111,97,105}}, +/* 14541 */ {(15<<2)|3,{111,97,105}}, +/* 14542 */ {(15<<2)|3,{111,97,111}}, +/* 14543 */ {(15<<2)|3,{111,97,111}}, +/* 14544 */ {(15<<2)|3,{111,97,115}}, +/* 14545 */ {(15<<2)|3,{111,97,115}}, +/* 14546 */ {(15<<2)|3,{111,97,116}}, +/* 14547 */ {(15<<2)|3,{111,97,116}}, +/* 14548 */ {(16<<2)|3,{111,97,32}}, +/* 14549 */ {(16<<2)|3,{111,97,37}}, +/* 14550 */ {(16<<2)|3,{111,97,45}}, +/* 14551 */ {(16<<2)|3,{111,97,46}}, +/* 14552 */ {(16<<2)|3,{111,97,47}}, +/* 14553 */ {(16<<2)|3,{111,97,51}}, +/* 14554 */ {(16<<2)|3,{111,97,52}}, +/* 14555 */ {(16<<2)|3,{111,97,53}}, +/* 14556 */ {(16<<2)|3,{111,97,54}}, +/* 14557 */ {(16<<2)|3,{111,97,55}}, +/* 14558 */ {(16<<2)|3,{111,97,56}}, +/* 14559 */ {(16<<2)|3,{111,97,57}}, +/* 14560 */ {(16<<2)|3,{111,97,61}}, +/* 14561 */ {(16<<2)|3,{111,97,65}}, +/* 14562 */ {(16<<2)|3,{111,97,95}}, +/* 14563 */ {(16<<2)|3,{111,97,98}}, +/* 14564 */ {(16<<2)|3,{111,97,100}}, +/* 14565 */ {(16<<2)|3,{111,97,102}}, +/* 14566 */ {(16<<2)|3,{111,97,103}}, +/* 14567 */ {(16<<2)|3,{111,97,104}}, +/* 14568 */ {(16<<2)|3,{111,97,108}}, +/* 14569 */ {(16<<2)|3,{111,97,109}}, +/* 14570 */ {(16<<2)|3,{111,97,110}}, +/* 14571 */ {(16<<2)|3,{111,97,112}}, +/* 14572 */ {(16<<2)|3,{111,97,114}}, +/* 14573 */ {(16<<2)|3,{111,97,117}}, +/* 14574 */ {(10<<2)|2,{111,97,0}}, +/* 14575 */ {(10<<2)|2,{111,97,0}}, +/* 14576 */ {(10<<2)|2,{111,97,0}}, +/* 14577 */ {(10<<2)|2,{111,97,0}}, +/* 14578 */ {(10<<2)|2,{111,97,0}}, +/* 14579 */ {(10<<2)|2,{111,97,0}}, +/* 14580 */ {(10<<2)|2,{111,97,0}}, +/* 14581 */ {(10<<2)|2,{111,97,0}}, +/* 14582 */ {(10<<2)|2,{111,97,0}}, +/* 14583 */ {(10<<2)|2,{111,97,0}}, +/* 14584 */ {(10<<2)|2,{111,97,0}}, +/* 14585 */ {(10<<2)|2,{111,97,0}}, +/* 14586 */ {(10<<2)|2,{111,97,0}}, +/* 14587 */ {(10<<2)|2,{111,97,0}}, +/* 14588 */ {(10<<2)|2,{111,97,0}}, +/* 14589 */ {(10<<2)|2,{111,97,0}}, +/* 14590 */ {(10<<2)|2,{111,97,0}}, +/* 14591 */ {(10<<2)|2,{111,97,0}}, +/* 14592 */ {(15<<2)|3,{111,99,48}}, +/* 14593 */ {(15<<2)|3,{111,99,48}}, +/* 14594 */ {(15<<2)|3,{111,99,49}}, +/* 14595 */ {(15<<2)|3,{111,99,49}}, +/* 14596 */ {(15<<2)|3,{111,99,50}}, +/* 14597 */ {(15<<2)|3,{111,99,50}}, +/* 14598 */ {(15<<2)|3,{111,99,97}}, +/* 14599 */ {(15<<2)|3,{111,99,97}}, +/* 14600 */ {(15<<2)|3,{111,99,99}}, +/* 14601 */ {(15<<2)|3,{111,99,99}}, +/* 14602 */ {(15<<2)|3,{111,99,101}}, +/* 14603 */ {(15<<2)|3,{111,99,101}}, +/* 14604 */ {(15<<2)|3,{111,99,105}}, +/* 14605 */ {(15<<2)|3,{111,99,105}}, +/* 14606 */ {(15<<2)|3,{111,99,111}}, +/* 14607 */ {(15<<2)|3,{111,99,111}}, +/* 14608 */ {(15<<2)|3,{111,99,115}}, +/* 14609 */ {(15<<2)|3,{111,99,115}}, +/* 14610 */ {(15<<2)|3,{111,99,116}}, +/* 14611 */ {(15<<2)|3,{111,99,116}}, +/* 14612 */ {(16<<2)|3,{111,99,32}}, +/* 14613 */ {(16<<2)|3,{111,99,37}}, +/* 14614 */ {(16<<2)|3,{111,99,45}}, +/* 14615 */ {(16<<2)|3,{111,99,46}}, +/* 14616 */ {(16<<2)|3,{111,99,47}}, +/* 14617 */ {(16<<2)|3,{111,99,51}}, +/* 14618 */ {(16<<2)|3,{111,99,52}}, +/* 14619 */ {(16<<2)|3,{111,99,53}}, +/* 14620 */ {(16<<2)|3,{111,99,54}}, +/* 14621 */ {(16<<2)|3,{111,99,55}}, +/* 14622 */ {(16<<2)|3,{111,99,56}}, +/* 14623 */ {(16<<2)|3,{111,99,57}}, +/* 14624 */ {(16<<2)|3,{111,99,61}}, +/* 14625 */ {(16<<2)|3,{111,99,65}}, +/* 14626 */ {(16<<2)|3,{111,99,95}}, +/* 14627 */ {(16<<2)|3,{111,99,98}}, +/* 14628 */ {(16<<2)|3,{111,99,100}}, +/* 14629 */ {(16<<2)|3,{111,99,102}}, +/* 14630 */ {(16<<2)|3,{111,99,103}}, +/* 14631 */ {(16<<2)|3,{111,99,104}}, +/* 14632 */ {(16<<2)|3,{111,99,108}}, +/* 14633 */ {(16<<2)|3,{111,99,109}}, +/* 14634 */ {(16<<2)|3,{111,99,110}}, +/* 14635 */ {(16<<2)|3,{111,99,112}}, +/* 14636 */ {(16<<2)|3,{111,99,114}}, +/* 14637 */ {(16<<2)|3,{111,99,117}}, +/* 14638 */ {(10<<2)|2,{111,99,0}}, +/* 14639 */ {(10<<2)|2,{111,99,0}}, +/* 14640 */ {(10<<2)|2,{111,99,0}}, +/* 14641 */ {(10<<2)|2,{111,99,0}}, +/* 14642 */ {(10<<2)|2,{111,99,0}}, +/* 14643 */ {(10<<2)|2,{111,99,0}}, +/* 14644 */ {(10<<2)|2,{111,99,0}}, +/* 14645 */ {(10<<2)|2,{111,99,0}}, +/* 14646 */ {(10<<2)|2,{111,99,0}}, +/* 14647 */ {(10<<2)|2,{111,99,0}}, +/* 14648 */ {(10<<2)|2,{111,99,0}}, +/* 14649 */ {(10<<2)|2,{111,99,0}}, +/* 14650 */ {(10<<2)|2,{111,99,0}}, +/* 14651 */ {(10<<2)|2,{111,99,0}}, +/* 14652 */ {(10<<2)|2,{111,99,0}}, +/* 14653 */ {(10<<2)|2,{111,99,0}}, +/* 14654 */ {(10<<2)|2,{111,99,0}}, +/* 14655 */ {(10<<2)|2,{111,99,0}}, +/* 14656 */ {(15<<2)|3,{111,101,48}}, +/* 14657 */ {(15<<2)|3,{111,101,48}}, +/* 14658 */ {(15<<2)|3,{111,101,49}}, +/* 14659 */ {(15<<2)|3,{111,101,49}}, +/* 14660 */ {(15<<2)|3,{111,101,50}}, +/* 14661 */ {(15<<2)|3,{111,101,50}}, +/* 14662 */ {(15<<2)|3,{111,101,97}}, +/* 14663 */ {(15<<2)|3,{111,101,97}}, +/* 14664 */ {(15<<2)|3,{111,101,99}}, +/* 14665 */ {(15<<2)|3,{111,101,99}}, +/* 14666 */ {(15<<2)|3,{111,101,101}}, +/* 14667 */ {(15<<2)|3,{111,101,101}}, +/* 14668 */ {(15<<2)|3,{111,101,105}}, +/* 14669 */ {(15<<2)|3,{111,101,105}}, +/* 14670 */ {(15<<2)|3,{111,101,111}}, +/* 14671 */ {(15<<2)|3,{111,101,111}}, +/* 14672 */ {(15<<2)|3,{111,101,115}}, +/* 14673 */ {(15<<2)|3,{111,101,115}}, +/* 14674 */ {(15<<2)|3,{111,101,116}}, +/* 14675 */ {(15<<2)|3,{111,101,116}}, +/* 14676 */ {(16<<2)|3,{111,101,32}}, +/* 14677 */ {(16<<2)|3,{111,101,37}}, +/* 14678 */ {(16<<2)|3,{111,101,45}}, +/* 14679 */ {(16<<2)|3,{111,101,46}}, +/* 14680 */ {(16<<2)|3,{111,101,47}}, +/* 14681 */ {(16<<2)|3,{111,101,51}}, +/* 14682 */ {(16<<2)|3,{111,101,52}}, +/* 14683 */ {(16<<2)|3,{111,101,53}}, +/* 14684 */ {(16<<2)|3,{111,101,54}}, +/* 14685 */ {(16<<2)|3,{111,101,55}}, +/* 14686 */ {(16<<2)|3,{111,101,56}}, +/* 14687 */ {(16<<2)|3,{111,101,57}}, +/* 14688 */ {(16<<2)|3,{111,101,61}}, +/* 14689 */ {(16<<2)|3,{111,101,65}}, +/* 14690 */ {(16<<2)|3,{111,101,95}}, +/* 14691 */ {(16<<2)|3,{111,101,98}}, +/* 14692 */ {(16<<2)|3,{111,101,100}}, +/* 14693 */ {(16<<2)|3,{111,101,102}}, +/* 14694 */ {(16<<2)|3,{111,101,103}}, +/* 14695 */ {(16<<2)|3,{111,101,104}}, +/* 14696 */ {(16<<2)|3,{111,101,108}}, +/* 14697 */ {(16<<2)|3,{111,101,109}}, +/* 14698 */ {(16<<2)|3,{111,101,110}}, +/* 14699 */ {(16<<2)|3,{111,101,112}}, +/* 14700 */ {(16<<2)|3,{111,101,114}}, +/* 14701 */ {(16<<2)|3,{111,101,117}}, +/* 14702 */ {(10<<2)|2,{111,101,0}}, +/* 14703 */ {(10<<2)|2,{111,101,0}}, +/* 14704 */ {(10<<2)|2,{111,101,0}}, +/* 14705 */ {(10<<2)|2,{111,101,0}}, +/* 14706 */ {(10<<2)|2,{111,101,0}}, +/* 14707 */ {(10<<2)|2,{111,101,0}}, +/* 14708 */ {(10<<2)|2,{111,101,0}}, +/* 14709 */ {(10<<2)|2,{111,101,0}}, +/* 14710 */ {(10<<2)|2,{111,101,0}}, +/* 14711 */ {(10<<2)|2,{111,101,0}}, +/* 14712 */ {(10<<2)|2,{111,101,0}}, +/* 14713 */ {(10<<2)|2,{111,101,0}}, +/* 14714 */ {(10<<2)|2,{111,101,0}}, +/* 14715 */ {(10<<2)|2,{111,101,0}}, +/* 14716 */ {(10<<2)|2,{111,101,0}}, +/* 14717 */ {(10<<2)|2,{111,101,0}}, +/* 14718 */ {(10<<2)|2,{111,101,0}}, +/* 14719 */ {(10<<2)|2,{111,101,0}}, +/* 14720 */ {(15<<2)|3,{111,105,48}}, +/* 14721 */ {(15<<2)|3,{111,105,48}}, +/* 14722 */ {(15<<2)|3,{111,105,49}}, +/* 14723 */ {(15<<2)|3,{111,105,49}}, +/* 14724 */ {(15<<2)|3,{111,105,50}}, +/* 14725 */ {(15<<2)|3,{111,105,50}}, +/* 14726 */ {(15<<2)|3,{111,105,97}}, +/* 14727 */ {(15<<2)|3,{111,105,97}}, +/* 14728 */ {(15<<2)|3,{111,105,99}}, +/* 14729 */ {(15<<2)|3,{111,105,99}}, +/* 14730 */ {(15<<2)|3,{111,105,101}}, +/* 14731 */ {(15<<2)|3,{111,105,101}}, +/* 14732 */ {(15<<2)|3,{111,105,105}}, +/* 14733 */ {(15<<2)|3,{111,105,105}}, +/* 14734 */ {(15<<2)|3,{111,105,111}}, +/* 14735 */ {(15<<2)|3,{111,105,111}}, +/* 14736 */ {(15<<2)|3,{111,105,115}}, +/* 14737 */ {(15<<2)|3,{111,105,115}}, +/* 14738 */ {(15<<2)|3,{111,105,116}}, +/* 14739 */ {(15<<2)|3,{111,105,116}}, +/* 14740 */ {(16<<2)|3,{111,105,32}}, +/* 14741 */ {(16<<2)|3,{111,105,37}}, +/* 14742 */ {(16<<2)|3,{111,105,45}}, +/* 14743 */ {(16<<2)|3,{111,105,46}}, +/* 14744 */ {(16<<2)|3,{111,105,47}}, +/* 14745 */ {(16<<2)|3,{111,105,51}}, +/* 14746 */ {(16<<2)|3,{111,105,52}}, +/* 14747 */ {(16<<2)|3,{111,105,53}}, +/* 14748 */ {(16<<2)|3,{111,105,54}}, +/* 14749 */ {(16<<2)|3,{111,105,55}}, +/* 14750 */ {(16<<2)|3,{111,105,56}}, +/* 14751 */ {(16<<2)|3,{111,105,57}}, +/* 14752 */ {(16<<2)|3,{111,105,61}}, +/* 14753 */ {(16<<2)|3,{111,105,65}}, +/* 14754 */ {(16<<2)|3,{111,105,95}}, +/* 14755 */ {(16<<2)|3,{111,105,98}}, +/* 14756 */ {(16<<2)|3,{111,105,100}}, +/* 14757 */ {(16<<2)|3,{111,105,102}}, +/* 14758 */ {(16<<2)|3,{111,105,103}}, +/* 14759 */ {(16<<2)|3,{111,105,104}}, +/* 14760 */ {(16<<2)|3,{111,105,108}}, +/* 14761 */ {(16<<2)|3,{111,105,109}}, +/* 14762 */ {(16<<2)|3,{111,105,110}}, +/* 14763 */ {(16<<2)|3,{111,105,112}}, +/* 14764 */ {(16<<2)|3,{111,105,114}}, +/* 14765 */ {(16<<2)|3,{111,105,117}}, +/* 14766 */ {(10<<2)|2,{111,105,0}}, +/* 14767 */ {(10<<2)|2,{111,105,0}}, +/* 14768 */ {(10<<2)|2,{111,105,0}}, +/* 14769 */ {(10<<2)|2,{111,105,0}}, +/* 14770 */ {(10<<2)|2,{111,105,0}}, +/* 14771 */ {(10<<2)|2,{111,105,0}}, +/* 14772 */ {(10<<2)|2,{111,105,0}}, +/* 14773 */ {(10<<2)|2,{111,105,0}}, +/* 14774 */ {(10<<2)|2,{111,105,0}}, +/* 14775 */ {(10<<2)|2,{111,105,0}}, +/* 14776 */ {(10<<2)|2,{111,105,0}}, +/* 14777 */ {(10<<2)|2,{111,105,0}}, +/* 14778 */ {(10<<2)|2,{111,105,0}}, +/* 14779 */ {(10<<2)|2,{111,105,0}}, +/* 14780 */ {(10<<2)|2,{111,105,0}}, +/* 14781 */ {(10<<2)|2,{111,105,0}}, +/* 14782 */ {(10<<2)|2,{111,105,0}}, +/* 14783 */ {(10<<2)|2,{111,105,0}}, +/* 14784 */ {(15<<2)|3,{111,111,48}}, +/* 14785 */ {(15<<2)|3,{111,111,48}}, +/* 14786 */ {(15<<2)|3,{111,111,49}}, +/* 14787 */ {(15<<2)|3,{111,111,49}}, +/* 14788 */ {(15<<2)|3,{111,111,50}}, +/* 14789 */ {(15<<2)|3,{111,111,50}}, +/* 14790 */ {(15<<2)|3,{111,111,97}}, +/* 14791 */ {(15<<2)|3,{111,111,97}}, +/* 14792 */ {(15<<2)|3,{111,111,99}}, +/* 14793 */ {(15<<2)|3,{111,111,99}}, +/* 14794 */ {(15<<2)|3,{111,111,101}}, +/* 14795 */ {(15<<2)|3,{111,111,101}}, +/* 14796 */ {(15<<2)|3,{111,111,105}}, +/* 14797 */ {(15<<2)|3,{111,111,105}}, +/* 14798 */ {(15<<2)|3,{111,111,111}}, +/* 14799 */ {(15<<2)|3,{111,111,111}}, +/* 14800 */ {(15<<2)|3,{111,111,115}}, +/* 14801 */ {(15<<2)|3,{111,111,115}}, +/* 14802 */ {(15<<2)|3,{111,111,116}}, +/* 14803 */ {(15<<2)|3,{111,111,116}}, +/* 14804 */ {(16<<2)|3,{111,111,32}}, +/* 14805 */ {(16<<2)|3,{111,111,37}}, +/* 14806 */ {(16<<2)|3,{111,111,45}}, +/* 14807 */ {(16<<2)|3,{111,111,46}}, +/* 14808 */ {(16<<2)|3,{111,111,47}}, +/* 14809 */ {(16<<2)|3,{111,111,51}}, +/* 14810 */ {(16<<2)|3,{111,111,52}}, +/* 14811 */ {(16<<2)|3,{111,111,53}}, +/* 14812 */ {(16<<2)|3,{111,111,54}}, +/* 14813 */ {(16<<2)|3,{111,111,55}}, +/* 14814 */ {(16<<2)|3,{111,111,56}}, +/* 14815 */ {(16<<2)|3,{111,111,57}}, +/* 14816 */ {(16<<2)|3,{111,111,61}}, +/* 14817 */ {(16<<2)|3,{111,111,65}}, +/* 14818 */ {(16<<2)|3,{111,111,95}}, +/* 14819 */ {(16<<2)|3,{111,111,98}}, +/* 14820 */ {(16<<2)|3,{111,111,100}}, +/* 14821 */ {(16<<2)|3,{111,111,102}}, +/* 14822 */ {(16<<2)|3,{111,111,103}}, +/* 14823 */ {(16<<2)|3,{111,111,104}}, +/* 14824 */ {(16<<2)|3,{111,111,108}}, +/* 14825 */ {(16<<2)|3,{111,111,109}}, +/* 14826 */ {(16<<2)|3,{111,111,110}}, +/* 14827 */ {(16<<2)|3,{111,111,112}}, +/* 14828 */ {(16<<2)|3,{111,111,114}}, +/* 14829 */ {(16<<2)|3,{111,111,117}}, +/* 14830 */ {(10<<2)|2,{111,111,0}}, +/* 14831 */ {(10<<2)|2,{111,111,0}}, +/* 14832 */ {(10<<2)|2,{111,111,0}}, +/* 14833 */ {(10<<2)|2,{111,111,0}}, +/* 14834 */ {(10<<2)|2,{111,111,0}}, +/* 14835 */ {(10<<2)|2,{111,111,0}}, +/* 14836 */ {(10<<2)|2,{111,111,0}}, +/* 14837 */ {(10<<2)|2,{111,111,0}}, +/* 14838 */ {(10<<2)|2,{111,111,0}}, +/* 14839 */ {(10<<2)|2,{111,111,0}}, +/* 14840 */ {(10<<2)|2,{111,111,0}}, +/* 14841 */ {(10<<2)|2,{111,111,0}}, +/* 14842 */ {(10<<2)|2,{111,111,0}}, +/* 14843 */ {(10<<2)|2,{111,111,0}}, +/* 14844 */ {(10<<2)|2,{111,111,0}}, +/* 14845 */ {(10<<2)|2,{111,111,0}}, +/* 14846 */ {(10<<2)|2,{111,111,0}}, +/* 14847 */ {(10<<2)|2,{111,111,0}}, +/* 14848 */ {(15<<2)|3,{111,115,48}}, +/* 14849 */ {(15<<2)|3,{111,115,48}}, +/* 14850 */ {(15<<2)|3,{111,115,49}}, +/* 14851 */ {(15<<2)|3,{111,115,49}}, +/* 14852 */ {(15<<2)|3,{111,115,50}}, +/* 14853 */ {(15<<2)|3,{111,115,50}}, +/* 14854 */ {(15<<2)|3,{111,115,97}}, +/* 14855 */ {(15<<2)|3,{111,115,97}}, +/* 14856 */ {(15<<2)|3,{111,115,99}}, +/* 14857 */ {(15<<2)|3,{111,115,99}}, +/* 14858 */ {(15<<2)|3,{111,115,101}}, +/* 14859 */ {(15<<2)|3,{111,115,101}}, +/* 14860 */ {(15<<2)|3,{111,115,105}}, +/* 14861 */ {(15<<2)|3,{111,115,105}}, +/* 14862 */ {(15<<2)|3,{111,115,111}}, +/* 14863 */ {(15<<2)|3,{111,115,111}}, +/* 14864 */ {(15<<2)|3,{111,115,115}}, +/* 14865 */ {(15<<2)|3,{111,115,115}}, +/* 14866 */ {(15<<2)|3,{111,115,116}}, +/* 14867 */ {(15<<2)|3,{111,115,116}}, +/* 14868 */ {(16<<2)|3,{111,115,32}}, +/* 14869 */ {(16<<2)|3,{111,115,37}}, +/* 14870 */ {(16<<2)|3,{111,115,45}}, +/* 14871 */ {(16<<2)|3,{111,115,46}}, +/* 14872 */ {(16<<2)|3,{111,115,47}}, +/* 14873 */ {(16<<2)|3,{111,115,51}}, +/* 14874 */ {(16<<2)|3,{111,115,52}}, +/* 14875 */ {(16<<2)|3,{111,115,53}}, +/* 14876 */ {(16<<2)|3,{111,115,54}}, +/* 14877 */ {(16<<2)|3,{111,115,55}}, +/* 14878 */ {(16<<2)|3,{111,115,56}}, +/* 14879 */ {(16<<2)|3,{111,115,57}}, +/* 14880 */ {(16<<2)|3,{111,115,61}}, +/* 14881 */ {(16<<2)|3,{111,115,65}}, +/* 14882 */ {(16<<2)|3,{111,115,95}}, +/* 14883 */ {(16<<2)|3,{111,115,98}}, +/* 14884 */ {(16<<2)|3,{111,115,100}}, +/* 14885 */ {(16<<2)|3,{111,115,102}}, +/* 14886 */ {(16<<2)|3,{111,115,103}}, +/* 14887 */ {(16<<2)|3,{111,115,104}}, +/* 14888 */ {(16<<2)|3,{111,115,108}}, +/* 14889 */ {(16<<2)|3,{111,115,109}}, +/* 14890 */ {(16<<2)|3,{111,115,110}}, +/* 14891 */ {(16<<2)|3,{111,115,112}}, +/* 14892 */ {(16<<2)|3,{111,115,114}}, +/* 14893 */ {(16<<2)|3,{111,115,117}}, +/* 14894 */ {(10<<2)|2,{111,115,0}}, +/* 14895 */ {(10<<2)|2,{111,115,0}}, +/* 14896 */ {(10<<2)|2,{111,115,0}}, +/* 14897 */ {(10<<2)|2,{111,115,0}}, +/* 14898 */ {(10<<2)|2,{111,115,0}}, +/* 14899 */ {(10<<2)|2,{111,115,0}}, +/* 14900 */ {(10<<2)|2,{111,115,0}}, +/* 14901 */ {(10<<2)|2,{111,115,0}}, +/* 14902 */ {(10<<2)|2,{111,115,0}}, +/* 14903 */ {(10<<2)|2,{111,115,0}}, +/* 14904 */ {(10<<2)|2,{111,115,0}}, +/* 14905 */ {(10<<2)|2,{111,115,0}}, +/* 14906 */ {(10<<2)|2,{111,115,0}}, +/* 14907 */ {(10<<2)|2,{111,115,0}}, +/* 14908 */ {(10<<2)|2,{111,115,0}}, +/* 14909 */ {(10<<2)|2,{111,115,0}}, +/* 14910 */ {(10<<2)|2,{111,115,0}}, +/* 14911 */ {(10<<2)|2,{111,115,0}}, +/* 14912 */ {(15<<2)|3,{111,116,48}}, +/* 14913 */ {(15<<2)|3,{111,116,48}}, +/* 14914 */ {(15<<2)|3,{111,116,49}}, +/* 14915 */ {(15<<2)|3,{111,116,49}}, +/* 14916 */ {(15<<2)|3,{111,116,50}}, +/* 14917 */ {(15<<2)|3,{111,116,50}}, +/* 14918 */ {(15<<2)|3,{111,116,97}}, +/* 14919 */ {(15<<2)|3,{111,116,97}}, +/* 14920 */ {(15<<2)|3,{111,116,99}}, +/* 14921 */ {(15<<2)|3,{111,116,99}}, +/* 14922 */ {(15<<2)|3,{111,116,101}}, +/* 14923 */ {(15<<2)|3,{111,116,101}}, +/* 14924 */ {(15<<2)|3,{111,116,105}}, +/* 14925 */ {(15<<2)|3,{111,116,105}}, +/* 14926 */ {(15<<2)|3,{111,116,111}}, +/* 14927 */ {(15<<2)|3,{111,116,111}}, +/* 14928 */ {(15<<2)|3,{111,116,115}}, +/* 14929 */ {(15<<2)|3,{111,116,115}}, +/* 14930 */ {(15<<2)|3,{111,116,116}}, +/* 14931 */ {(15<<2)|3,{111,116,116}}, +/* 14932 */ {(16<<2)|3,{111,116,32}}, +/* 14933 */ {(16<<2)|3,{111,116,37}}, +/* 14934 */ {(16<<2)|3,{111,116,45}}, +/* 14935 */ {(16<<2)|3,{111,116,46}}, +/* 14936 */ {(16<<2)|3,{111,116,47}}, +/* 14937 */ {(16<<2)|3,{111,116,51}}, +/* 14938 */ {(16<<2)|3,{111,116,52}}, +/* 14939 */ {(16<<2)|3,{111,116,53}}, +/* 14940 */ {(16<<2)|3,{111,116,54}}, +/* 14941 */ {(16<<2)|3,{111,116,55}}, +/* 14942 */ {(16<<2)|3,{111,116,56}}, +/* 14943 */ {(16<<2)|3,{111,116,57}}, +/* 14944 */ {(16<<2)|3,{111,116,61}}, +/* 14945 */ {(16<<2)|3,{111,116,65}}, +/* 14946 */ {(16<<2)|3,{111,116,95}}, +/* 14947 */ {(16<<2)|3,{111,116,98}}, +/* 14948 */ {(16<<2)|3,{111,116,100}}, +/* 14949 */ {(16<<2)|3,{111,116,102}}, +/* 14950 */ {(16<<2)|3,{111,116,103}}, +/* 14951 */ {(16<<2)|3,{111,116,104}}, +/* 14952 */ {(16<<2)|3,{111,116,108}}, +/* 14953 */ {(16<<2)|3,{111,116,109}}, +/* 14954 */ {(16<<2)|3,{111,116,110}}, +/* 14955 */ {(16<<2)|3,{111,116,112}}, +/* 14956 */ {(16<<2)|3,{111,116,114}}, +/* 14957 */ {(16<<2)|3,{111,116,117}}, +/* 14958 */ {(10<<2)|2,{111,116,0}}, +/* 14959 */ {(10<<2)|2,{111,116,0}}, +/* 14960 */ {(10<<2)|2,{111,116,0}}, +/* 14961 */ {(10<<2)|2,{111,116,0}}, +/* 14962 */ {(10<<2)|2,{111,116,0}}, +/* 14963 */ {(10<<2)|2,{111,116,0}}, +/* 14964 */ {(10<<2)|2,{111,116,0}}, +/* 14965 */ {(10<<2)|2,{111,116,0}}, +/* 14966 */ {(10<<2)|2,{111,116,0}}, +/* 14967 */ {(10<<2)|2,{111,116,0}}, +/* 14968 */ {(10<<2)|2,{111,116,0}}, +/* 14969 */ {(10<<2)|2,{111,116,0}}, +/* 14970 */ {(10<<2)|2,{111,116,0}}, +/* 14971 */ {(10<<2)|2,{111,116,0}}, +/* 14972 */ {(10<<2)|2,{111,116,0}}, +/* 14973 */ {(10<<2)|2,{111,116,0}}, +/* 14974 */ {(10<<2)|2,{111,116,0}}, +/* 14975 */ {(10<<2)|2,{111,116,0}}, +/* 14976 */ {(16<<2)|3,{111,32,48}}, +/* 14977 */ {(16<<2)|3,{111,32,49}}, +/* 14978 */ {(16<<2)|3,{111,32,50}}, +/* 14979 */ {(16<<2)|3,{111,32,97}}, +/* 14980 */ {(16<<2)|3,{111,32,99}}, +/* 14981 */ {(16<<2)|3,{111,32,101}}, +/* 14982 */ {(16<<2)|3,{111,32,105}}, +/* 14983 */ {(16<<2)|3,{111,32,111}}, +/* 14984 */ {(16<<2)|3,{111,32,115}}, +/* 14985 */ {(16<<2)|3,{111,32,116}}, +/* 14986 */ {(11<<2)|2,{111,32,0}}, +/* 14987 */ {(11<<2)|2,{111,32,0}}, +/* 14988 */ {(11<<2)|2,{111,32,0}}, +/* 14989 */ {(11<<2)|2,{111,32,0}}, +/* 14990 */ {(11<<2)|2,{111,32,0}}, +/* 14991 */ {(11<<2)|2,{111,32,0}}, +/* 14992 */ {(11<<2)|2,{111,32,0}}, +/* 14993 */ {(11<<2)|2,{111,32,0}}, +/* 14994 */ {(11<<2)|2,{111,32,0}}, +/* 14995 */ {(11<<2)|2,{111,32,0}}, +/* 14996 */ {(11<<2)|2,{111,32,0}}, +/* 14997 */ {(11<<2)|2,{111,32,0}}, +/* 14998 */ {(11<<2)|2,{111,32,0}}, +/* 14999 */ {(11<<2)|2,{111,32,0}}, +/* 15000 */ {(11<<2)|2,{111,32,0}}, +/* 15001 */ {(11<<2)|2,{111,32,0}}, +/* 15002 */ {(11<<2)|2,{111,32,0}}, +/* 15003 */ {(11<<2)|2,{111,32,0}}, +/* 15004 */ {(11<<2)|2,{111,32,0}}, +/* 15005 */ {(11<<2)|2,{111,32,0}}, +/* 15006 */ {(11<<2)|2,{111,32,0}}, +/* 15007 */ {(11<<2)|2,{111,32,0}}, +/* 15008 */ {(16<<2)|3,{111,37,48}}, +/* 15009 */ {(16<<2)|3,{111,37,49}}, +/* 15010 */ {(16<<2)|3,{111,37,50}}, +/* 15011 */ {(16<<2)|3,{111,37,97}}, +/* 15012 */ {(16<<2)|3,{111,37,99}}, +/* 15013 */ {(16<<2)|3,{111,37,101}}, +/* 15014 */ {(16<<2)|3,{111,37,105}}, +/* 15015 */ {(16<<2)|3,{111,37,111}}, +/* 15016 */ {(16<<2)|3,{111,37,115}}, +/* 15017 */ {(16<<2)|3,{111,37,116}}, +/* 15018 */ {(11<<2)|2,{111,37,0}}, +/* 15019 */ {(11<<2)|2,{111,37,0}}, +/* 15020 */ {(11<<2)|2,{111,37,0}}, +/* 15021 */ {(11<<2)|2,{111,37,0}}, +/* 15022 */ {(11<<2)|2,{111,37,0}}, +/* 15023 */ {(11<<2)|2,{111,37,0}}, +/* 15024 */ {(11<<2)|2,{111,37,0}}, +/* 15025 */ {(11<<2)|2,{111,37,0}}, +/* 15026 */ {(11<<2)|2,{111,37,0}}, +/* 15027 */ {(11<<2)|2,{111,37,0}}, +/* 15028 */ {(11<<2)|2,{111,37,0}}, +/* 15029 */ {(11<<2)|2,{111,37,0}}, +/* 15030 */ {(11<<2)|2,{111,37,0}}, +/* 15031 */ {(11<<2)|2,{111,37,0}}, +/* 15032 */ {(11<<2)|2,{111,37,0}}, +/* 15033 */ {(11<<2)|2,{111,37,0}}, +/* 15034 */ {(11<<2)|2,{111,37,0}}, +/* 15035 */ {(11<<2)|2,{111,37,0}}, +/* 15036 */ {(11<<2)|2,{111,37,0}}, +/* 15037 */ {(11<<2)|2,{111,37,0}}, +/* 15038 */ {(11<<2)|2,{111,37,0}}, +/* 15039 */ {(11<<2)|2,{111,37,0}}, +/* 15040 */ {(16<<2)|3,{111,45,48}}, +/* 15041 */ {(16<<2)|3,{111,45,49}}, +/* 15042 */ {(16<<2)|3,{111,45,50}}, +/* 15043 */ {(16<<2)|3,{111,45,97}}, +/* 15044 */ {(16<<2)|3,{111,45,99}}, +/* 15045 */ {(16<<2)|3,{111,45,101}}, +/* 15046 */ {(16<<2)|3,{111,45,105}}, +/* 15047 */ {(16<<2)|3,{111,45,111}}, +/* 15048 */ {(16<<2)|3,{111,45,115}}, +/* 15049 */ {(16<<2)|3,{111,45,116}}, +/* 15050 */ {(11<<2)|2,{111,45,0}}, +/* 15051 */ {(11<<2)|2,{111,45,0}}, +/* 15052 */ {(11<<2)|2,{111,45,0}}, +/* 15053 */ {(11<<2)|2,{111,45,0}}, +/* 15054 */ {(11<<2)|2,{111,45,0}}, +/* 15055 */ {(11<<2)|2,{111,45,0}}, +/* 15056 */ {(11<<2)|2,{111,45,0}}, +/* 15057 */ {(11<<2)|2,{111,45,0}}, +/* 15058 */ {(11<<2)|2,{111,45,0}}, +/* 15059 */ {(11<<2)|2,{111,45,0}}, +/* 15060 */ {(11<<2)|2,{111,45,0}}, +/* 15061 */ {(11<<2)|2,{111,45,0}}, +/* 15062 */ {(11<<2)|2,{111,45,0}}, +/* 15063 */ {(11<<2)|2,{111,45,0}}, +/* 15064 */ {(11<<2)|2,{111,45,0}}, +/* 15065 */ {(11<<2)|2,{111,45,0}}, +/* 15066 */ {(11<<2)|2,{111,45,0}}, +/* 15067 */ {(11<<2)|2,{111,45,0}}, +/* 15068 */ {(11<<2)|2,{111,45,0}}, +/* 15069 */ {(11<<2)|2,{111,45,0}}, +/* 15070 */ {(11<<2)|2,{111,45,0}}, +/* 15071 */ {(11<<2)|2,{111,45,0}}, +/* 15072 */ {(16<<2)|3,{111,46,48}}, +/* 15073 */ {(16<<2)|3,{111,46,49}}, +/* 15074 */ {(16<<2)|3,{111,46,50}}, +/* 15075 */ {(16<<2)|3,{111,46,97}}, +/* 15076 */ {(16<<2)|3,{111,46,99}}, +/* 15077 */ {(16<<2)|3,{111,46,101}}, +/* 15078 */ {(16<<2)|3,{111,46,105}}, +/* 15079 */ {(16<<2)|3,{111,46,111}}, +/* 15080 */ {(16<<2)|3,{111,46,115}}, +/* 15081 */ {(16<<2)|3,{111,46,116}}, +/* 15082 */ {(11<<2)|2,{111,46,0}}, +/* 15083 */ {(11<<2)|2,{111,46,0}}, +/* 15084 */ {(11<<2)|2,{111,46,0}}, +/* 15085 */ {(11<<2)|2,{111,46,0}}, +/* 15086 */ {(11<<2)|2,{111,46,0}}, +/* 15087 */ {(11<<2)|2,{111,46,0}}, +/* 15088 */ {(11<<2)|2,{111,46,0}}, +/* 15089 */ {(11<<2)|2,{111,46,0}}, +/* 15090 */ {(11<<2)|2,{111,46,0}}, +/* 15091 */ {(11<<2)|2,{111,46,0}}, +/* 15092 */ {(11<<2)|2,{111,46,0}}, +/* 15093 */ {(11<<2)|2,{111,46,0}}, +/* 15094 */ {(11<<2)|2,{111,46,0}}, +/* 15095 */ {(11<<2)|2,{111,46,0}}, +/* 15096 */ {(11<<2)|2,{111,46,0}}, +/* 15097 */ {(11<<2)|2,{111,46,0}}, +/* 15098 */ {(11<<2)|2,{111,46,0}}, +/* 15099 */ {(11<<2)|2,{111,46,0}}, +/* 15100 */ {(11<<2)|2,{111,46,0}}, +/* 15101 */ {(11<<2)|2,{111,46,0}}, +/* 15102 */ {(11<<2)|2,{111,46,0}}, +/* 15103 */ {(11<<2)|2,{111,46,0}}, +/* 15104 */ {(16<<2)|3,{111,47,48}}, +/* 15105 */ {(16<<2)|3,{111,47,49}}, +/* 15106 */ {(16<<2)|3,{111,47,50}}, +/* 15107 */ {(16<<2)|3,{111,47,97}}, +/* 15108 */ {(16<<2)|3,{111,47,99}}, +/* 15109 */ {(16<<2)|3,{111,47,101}}, +/* 15110 */ {(16<<2)|3,{111,47,105}}, +/* 15111 */ {(16<<2)|3,{111,47,111}}, +/* 15112 */ {(16<<2)|3,{111,47,115}}, +/* 15113 */ {(16<<2)|3,{111,47,116}}, +/* 15114 */ {(11<<2)|2,{111,47,0}}, +/* 15115 */ {(11<<2)|2,{111,47,0}}, +/* 15116 */ {(11<<2)|2,{111,47,0}}, +/* 15117 */ {(11<<2)|2,{111,47,0}}, +/* 15118 */ {(11<<2)|2,{111,47,0}}, +/* 15119 */ {(11<<2)|2,{111,47,0}}, +/* 15120 */ {(11<<2)|2,{111,47,0}}, +/* 15121 */ {(11<<2)|2,{111,47,0}}, +/* 15122 */ {(11<<2)|2,{111,47,0}}, +/* 15123 */ {(11<<2)|2,{111,47,0}}, +/* 15124 */ {(11<<2)|2,{111,47,0}}, +/* 15125 */ {(11<<2)|2,{111,47,0}}, +/* 15126 */ {(11<<2)|2,{111,47,0}}, +/* 15127 */ {(11<<2)|2,{111,47,0}}, +/* 15128 */ {(11<<2)|2,{111,47,0}}, +/* 15129 */ {(11<<2)|2,{111,47,0}}, +/* 15130 */ {(11<<2)|2,{111,47,0}}, +/* 15131 */ {(11<<2)|2,{111,47,0}}, +/* 15132 */ {(11<<2)|2,{111,47,0}}, +/* 15133 */ {(11<<2)|2,{111,47,0}}, +/* 15134 */ {(11<<2)|2,{111,47,0}}, +/* 15135 */ {(11<<2)|2,{111,47,0}}, +/* 15136 */ {(16<<2)|3,{111,51,48}}, +/* 15137 */ {(16<<2)|3,{111,51,49}}, +/* 15138 */ {(16<<2)|3,{111,51,50}}, +/* 15139 */ {(16<<2)|3,{111,51,97}}, +/* 15140 */ {(16<<2)|3,{111,51,99}}, +/* 15141 */ {(16<<2)|3,{111,51,101}}, +/* 15142 */ {(16<<2)|3,{111,51,105}}, +/* 15143 */ {(16<<2)|3,{111,51,111}}, +/* 15144 */ {(16<<2)|3,{111,51,115}}, +/* 15145 */ {(16<<2)|3,{111,51,116}}, +/* 15146 */ {(11<<2)|2,{111,51,0}}, +/* 15147 */ {(11<<2)|2,{111,51,0}}, +/* 15148 */ {(11<<2)|2,{111,51,0}}, +/* 15149 */ {(11<<2)|2,{111,51,0}}, +/* 15150 */ {(11<<2)|2,{111,51,0}}, +/* 15151 */ {(11<<2)|2,{111,51,0}}, +/* 15152 */ {(11<<2)|2,{111,51,0}}, +/* 15153 */ {(11<<2)|2,{111,51,0}}, +/* 15154 */ {(11<<2)|2,{111,51,0}}, +/* 15155 */ {(11<<2)|2,{111,51,0}}, +/* 15156 */ {(11<<2)|2,{111,51,0}}, +/* 15157 */ {(11<<2)|2,{111,51,0}}, +/* 15158 */ {(11<<2)|2,{111,51,0}}, +/* 15159 */ {(11<<2)|2,{111,51,0}}, +/* 15160 */ {(11<<2)|2,{111,51,0}}, +/* 15161 */ {(11<<2)|2,{111,51,0}}, +/* 15162 */ {(11<<2)|2,{111,51,0}}, +/* 15163 */ {(11<<2)|2,{111,51,0}}, +/* 15164 */ {(11<<2)|2,{111,51,0}}, +/* 15165 */ {(11<<2)|2,{111,51,0}}, +/* 15166 */ {(11<<2)|2,{111,51,0}}, +/* 15167 */ {(11<<2)|2,{111,51,0}}, +/* 15168 */ {(16<<2)|3,{111,52,48}}, +/* 15169 */ {(16<<2)|3,{111,52,49}}, +/* 15170 */ {(16<<2)|3,{111,52,50}}, +/* 15171 */ {(16<<2)|3,{111,52,97}}, +/* 15172 */ {(16<<2)|3,{111,52,99}}, +/* 15173 */ {(16<<2)|3,{111,52,101}}, +/* 15174 */ {(16<<2)|3,{111,52,105}}, +/* 15175 */ {(16<<2)|3,{111,52,111}}, +/* 15176 */ {(16<<2)|3,{111,52,115}}, +/* 15177 */ {(16<<2)|3,{111,52,116}}, +/* 15178 */ {(11<<2)|2,{111,52,0}}, +/* 15179 */ {(11<<2)|2,{111,52,0}}, +/* 15180 */ {(11<<2)|2,{111,52,0}}, +/* 15181 */ {(11<<2)|2,{111,52,0}}, +/* 15182 */ {(11<<2)|2,{111,52,0}}, +/* 15183 */ {(11<<2)|2,{111,52,0}}, +/* 15184 */ {(11<<2)|2,{111,52,0}}, +/* 15185 */ {(11<<2)|2,{111,52,0}}, +/* 15186 */ {(11<<2)|2,{111,52,0}}, +/* 15187 */ {(11<<2)|2,{111,52,0}}, +/* 15188 */ {(11<<2)|2,{111,52,0}}, +/* 15189 */ {(11<<2)|2,{111,52,0}}, +/* 15190 */ {(11<<2)|2,{111,52,0}}, +/* 15191 */ {(11<<2)|2,{111,52,0}}, +/* 15192 */ {(11<<2)|2,{111,52,0}}, +/* 15193 */ {(11<<2)|2,{111,52,0}}, +/* 15194 */ {(11<<2)|2,{111,52,0}}, +/* 15195 */ {(11<<2)|2,{111,52,0}}, +/* 15196 */ {(11<<2)|2,{111,52,0}}, +/* 15197 */ {(11<<2)|2,{111,52,0}}, +/* 15198 */ {(11<<2)|2,{111,52,0}}, +/* 15199 */ {(11<<2)|2,{111,52,0}}, +/* 15200 */ {(16<<2)|3,{111,53,48}}, +/* 15201 */ {(16<<2)|3,{111,53,49}}, +/* 15202 */ {(16<<2)|3,{111,53,50}}, +/* 15203 */ {(16<<2)|3,{111,53,97}}, +/* 15204 */ {(16<<2)|3,{111,53,99}}, +/* 15205 */ {(16<<2)|3,{111,53,101}}, +/* 15206 */ {(16<<2)|3,{111,53,105}}, +/* 15207 */ {(16<<2)|3,{111,53,111}}, +/* 15208 */ {(16<<2)|3,{111,53,115}}, +/* 15209 */ {(16<<2)|3,{111,53,116}}, +/* 15210 */ {(11<<2)|2,{111,53,0}}, +/* 15211 */ {(11<<2)|2,{111,53,0}}, +/* 15212 */ {(11<<2)|2,{111,53,0}}, +/* 15213 */ {(11<<2)|2,{111,53,0}}, +/* 15214 */ {(11<<2)|2,{111,53,0}}, +/* 15215 */ {(11<<2)|2,{111,53,0}}, +/* 15216 */ {(11<<2)|2,{111,53,0}}, +/* 15217 */ {(11<<2)|2,{111,53,0}}, +/* 15218 */ {(11<<2)|2,{111,53,0}}, +/* 15219 */ {(11<<2)|2,{111,53,0}}, +/* 15220 */ {(11<<2)|2,{111,53,0}}, +/* 15221 */ {(11<<2)|2,{111,53,0}}, +/* 15222 */ {(11<<2)|2,{111,53,0}}, +/* 15223 */ {(11<<2)|2,{111,53,0}}, +/* 15224 */ {(11<<2)|2,{111,53,0}}, +/* 15225 */ {(11<<2)|2,{111,53,0}}, +/* 15226 */ {(11<<2)|2,{111,53,0}}, +/* 15227 */ {(11<<2)|2,{111,53,0}}, +/* 15228 */ {(11<<2)|2,{111,53,0}}, +/* 15229 */ {(11<<2)|2,{111,53,0}}, +/* 15230 */ {(11<<2)|2,{111,53,0}}, +/* 15231 */ {(11<<2)|2,{111,53,0}}, +/* 15232 */ {(16<<2)|3,{111,54,48}}, +/* 15233 */ {(16<<2)|3,{111,54,49}}, +/* 15234 */ {(16<<2)|3,{111,54,50}}, +/* 15235 */ {(16<<2)|3,{111,54,97}}, +/* 15236 */ {(16<<2)|3,{111,54,99}}, +/* 15237 */ {(16<<2)|3,{111,54,101}}, +/* 15238 */ {(16<<2)|3,{111,54,105}}, +/* 15239 */ {(16<<2)|3,{111,54,111}}, +/* 15240 */ {(16<<2)|3,{111,54,115}}, +/* 15241 */ {(16<<2)|3,{111,54,116}}, +/* 15242 */ {(11<<2)|2,{111,54,0}}, +/* 15243 */ {(11<<2)|2,{111,54,0}}, +/* 15244 */ {(11<<2)|2,{111,54,0}}, +/* 15245 */ {(11<<2)|2,{111,54,0}}, +/* 15246 */ {(11<<2)|2,{111,54,0}}, +/* 15247 */ {(11<<2)|2,{111,54,0}}, +/* 15248 */ {(11<<2)|2,{111,54,0}}, +/* 15249 */ {(11<<2)|2,{111,54,0}}, +/* 15250 */ {(11<<2)|2,{111,54,0}}, +/* 15251 */ {(11<<2)|2,{111,54,0}}, +/* 15252 */ {(11<<2)|2,{111,54,0}}, +/* 15253 */ {(11<<2)|2,{111,54,0}}, +/* 15254 */ {(11<<2)|2,{111,54,0}}, +/* 15255 */ {(11<<2)|2,{111,54,0}}, +/* 15256 */ {(11<<2)|2,{111,54,0}}, +/* 15257 */ {(11<<2)|2,{111,54,0}}, +/* 15258 */ {(11<<2)|2,{111,54,0}}, +/* 15259 */ {(11<<2)|2,{111,54,0}}, +/* 15260 */ {(11<<2)|2,{111,54,0}}, +/* 15261 */ {(11<<2)|2,{111,54,0}}, +/* 15262 */ {(11<<2)|2,{111,54,0}}, +/* 15263 */ {(11<<2)|2,{111,54,0}}, +/* 15264 */ {(16<<2)|3,{111,55,48}}, +/* 15265 */ {(16<<2)|3,{111,55,49}}, +/* 15266 */ {(16<<2)|3,{111,55,50}}, +/* 15267 */ {(16<<2)|3,{111,55,97}}, +/* 15268 */ {(16<<2)|3,{111,55,99}}, +/* 15269 */ {(16<<2)|3,{111,55,101}}, +/* 15270 */ {(16<<2)|3,{111,55,105}}, +/* 15271 */ {(16<<2)|3,{111,55,111}}, +/* 15272 */ {(16<<2)|3,{111,55,115}}, +/* 15273 */ {(16<<2)|3,{111,55,116}}, +/* 15274 */ {(11<<2)|2,{111,55,0}}, +/* 15275 */ {(11<<2)|2,{111,55,0}}, +/* 15276 */ {(11<<2)|2,{111,55,0}}, +/* 15277 */ {(11<<2)|2,{111,55,0}}, +/* 15278 */ {(11<<2)|2,{111,55,0}}, +/* 15279 */ {(11<<2)|2,{111,55,0}}, +/* 15280 */ {(11<<2)|2,{111,55,0}}, +/* 15281 */ {(11<<2)|2,{111,55,0}}, +/* 15282 */ {(11<<2)|2,{111,55,0}}, +/* 15283 */ {(11<<2)|2,{111,55,0}}, +/* 15284 */ {(11<<2)|2,{111,55,0}}, +/* 15285 */ {(11<<2)|2,{111,55,0}}, +/* 15286 */ {(11<<2)|2,{111,55,0}}, +/* 15287 */ {(11<<2)|2,{111,55,0}}, +/* 15288 */ {(11<<2)|2,{111,55,0}}, +/* 15289 */ {(11<<2)|2,{111,55,0}}, +/* 15290 */ {(11<<2)|2,{111,55,0}}, +/* 15291 */ {(11<<2)|2,{111,55,0}}, +/* 15292 */ {(11<<2)|2,{111,55,0}}, +/* 15293 */ {(11<<2)|2,{111,55,0}}, +/* 15294 */ {(11<<2)|2,{111,55,0}}, +/* 15295 */ {(11<<2)|2,{111,55,0}}, +/* 15296 */ {(16<<2)|3,{111,56,48}}, +/* 15297 */ {(16<<2)|3,{111,56,49}}, +/* 15298 */ {(16<<2)|3,{111,56,50}}, +/* 15299 */ {(16<<2)|3,{111,56,97}}, +/* 15300 */ {(16<<2)|3,{111,56,99}}, +/* 15301 */ {(16<<2)|3,{111,56,101}}, +/* 15302 */ {(16<<2)|3,{111,56,105}}, +/* 15303 */ {(16<<2)|3,{111,56,111}}, +/* 15304 */ {(16<<2)|3,{111,56,115}}, +/* 15305 */ {(16<<2)|3,{111,56,116}}, +/* 15306 */ {(11<<2)|2,{111,56,0}}, +/* 15307 */ {(11<<2)|2,{111,56,0}}, +/* 15308 */ {(11<<2)|2,{111,56,0}}, +/* 15309 */ {(11<<2)|2,{111,56,0}}, +/* 15310 */ {(11<<2)|2,{111,56,0}}, +/* 15311 */ {(11<<2)|2,{111,56,0}}, +/* 15312 */ {(11<<2)|2,{111,56,0}}, +/* 15313 */ {(11<<2)|2,{111,56,0}}, +/* 15314 */ {(11<<2)|2,{111,56,0}}, +/* 15315 */ {(11<<2)|2,{111,56,0}}, +/* 15316 */ {(11<<2)|2,{111,56,0}}, +/* 15317 */ {(11<<2)|2,{111,56,0}}, +/* 15318 */ {(11<<2)|2,{111,56,0}}, +/* 15319 */ {(11<<2)|2,{111,56,0}}, +/* 15320 */ {(11<<2)|2,{111,56,0}}, +/* 15321 */ {(11<<2)|2,{111,56,0}}, +/* 15322 */ {(11<<2)|2,{111,56,0}}, +/* 15323 */ {(11<<2)|2,{111,56,0}}, +/* 15324 */ {(11<<2)|2,{111,56,0}}, +/* 15325 */ {(11<<2)|2,{111,56,0}}, +/* 15326 */ {(11<<2)|2,{111,56,0}}, +/* 15327 */ {(11<<2)|2,{111,56,0}}, +/* 15328 */ {(16<<2)|3,{111,57,48}}, +/* 15329 */ {(16<<2)|3,{111,57,49}}, +/* 15330 */ {(16<<2)|3,{111,57,50}}, +/* 15331 */ {(16<<2)|3,{111,57,97}}, +/* 15332 */ {(16<<2)|3,{111,57,99}}, +/* 15333 */ {(16<<2)|3,{111,57,101}}, +/* 15334 */ {(16<<2)|3,{111,57,105}}, +/* 15335 */ {(16<<2)|3,{111,57,111}}, +/* 15336 */ {(16<<2)|3,{111,57,115}}, +/* 15337 */ {(16<<2)|3,{111,57,116}}, +/* 15338 */ {(11<<2)|2,{111,57,0}}, +/* 15339 */ {(11<<2)|2,{111,57,0}}, +/* 15340 */ {(11<<2)|2,{111,57,0}}, +/* 15341 */ {(11<<2)|2,{111,57,0}}, +/* 15342 */ {(11<<2)|2,{111,57,0}}, +/* 15343 */ {(11<<2)|2,{111,57,0}}, +/* 15344 */ {(11<<2)|2,{111,57,0}}, +/* 15345 */ {(11<<2)|2,{111,57,0}}, +/* 15346 */ {(11<<2)|2,{111,57,0}}, +/* 15347 */ {(11<<2)|2,{111,57,0}}, +/* 15348 */ {(11<<2)|2,{111,57,0}}, +/* 15349 */ {(11<<2)|2,{111,57,0}}, +/* 15350 */ {(11<<2)|2,{111,57,0}}, +/* 15351 */ {(11<<2)|2,{111,57,0}}, +/* 15352 */ {(11<<2)|2,{111,57,0}}, +/* 15353 */ {(11<<2)|2,{111,57,0}}, +/* 15354 */ {(11<<2)|2,{111,57,0}}, +/* 15355 */ {(11<<2)|2,{111,57,0}}, +/* 15356 */ {(11<<2)|2,{111,57,0}}, +/* 15357 */ {(11<<2)|2,{111,57,0}}, +/* 15358 */ {(11<<2)|2,{111,57,0}}, +/* 15359 */ {(11<<2)|2,{111,57,0}}, +/* 15360 */ {(16<<2)|3,{111,61,48}}, +/* 15361 */ {(16<<2)|3,{111,61,49}}, +/* 15362 */ {(16<<2)|3,{111,61,50}}, +/* 15363 */ {(16<<2)|3,{111,61,97}}, +/* 15364 */ {(16<<2)|3,{111,61,99}}, +/* 15365 */ {(16<<2)|3,{111,61,101}}, +/* 15366 */ {(16<<2)|3,{111,61,105}}, +/* 15367 */ {(16<<2)|3,{111,61,111}}, +/* 15368 */ {(16<<2)|3,{111,61,115}}, +/* 15369 */ {(16<<2)|3,{111,61,116}}, +/* 15370 */ {(11<<2)|2,{111,61,0}}, +/* 15371 */ {(11<<2)|2,{111,61,0}}, +/* 15372 */ {(11<<2)|2,{111,61,0}}, +/* 15373 */ {(11<<2)|2,{111,61,0}}, +/* 15374 */ {(11<<2)|2,{111,61,0}}, +/* 15375 */ {(11<<2)|2,{111,61,0}}, +/* 15376 */ {(11<<2)|2,{111,61,0}}, +/* 15377 */ {(11<<2)|2,{111,61,0}}, +/* 15378 */ {(11<<2)|2,{111,61,0}}, +/* 15379 */ {(11<<2)|2,{111,61,0}}, +/* 15380 */ {(11<<2)|2,{111,61,0}}, +/* 15381 */ {(11<<2)|2,{111,61,0}}, +/* 15382 */ {(11<<2)|2,{111,61,0}}, +/* 15383 */ {(11<<2)|2,{111,61,0}}, +/* 15384 */ {(11<<2)|2,{111,61,0}}, +/* 15385 */ {(11<<2)|2,{111,61,0}}, +/* 15386 */ {(11<<2)|2,{111,61,0}}, +/* 15387 */ {(11<<2)|2,{111,61,0}}, +/* 15388 */ {(11<<2)|2,{111,61,0}}, +/* 15389 */ {(11<<2)|2,{111,61,0}}, +/* 15390 */ {(11<<2)|2,{111,61,0}}, +/* 15391 */ {(11<<2)|2,{111,61,0}}, +/* 15392 */ {(16<<2)|3,{111,65,48}}, +/* 15393 */ {(16<<2)|3,{111,65,49}}, +/* 15394 */ {(16<<2)|3,{111,65,50}}, +/* 15395 */ {(16<<2)|3,{111,65,97}}, +/* 15396 */ {(16<<2)|3,{111,65,99}}, +/* 15397 */ {(16<<2)|3,{111,65,101}}, +/* 15398 */ {(16<<2)|3,{111,65,105}}, +/* 15399 */ {(16<<2)|3,{111,65,111}}, +/* 15400 */ {(16<<2)|3,{111,65,115}}, +/* 15401 */ {(16<<2)|3,{111,65,116}}, +/* 15402 */ {(11<<2)|2,{111,65,0}}, +/* 15403 */ {(11<<2)|2,{111,65,0}}, +/* 15404 */ {(11<<2)|2,{111,65,0}}, +/* 15405 */ {(11<<2)|2,{111,65,0}}, +/* 15406 */ {(11<<2)|2,{111,65,0}}, +/* 15407 */ {(11<<2)|2,{111,65,0}}, +/* 15408 */ {(11<<2)|2,{111,65,0}}, +/* 15409 */ {(11<<2)|2,{111,65,0}}, +/* 15410 */ {(11<<2)|2,{111,65,0}}, +/* 15411 */ {(11<<2)|2,{111,65,0}}, +/* 15412 */ {(11<<2)|2,{111,65,0}}, +/* 15413 */ {(11<<2)|2,{111,65,0}}, +/* 15414 */ {(11<<2)|2,{111,65,0}}, +/* 15415 */ {(11<<2)|2,{111,65,0}}, +/* 15416 */ {(11<<2)|2,{111,65,0}}, +/* 15417 */ {(11<<2)|2,{111,65,0}}, +/* 15418 */ {(11<<2)|2,{111,65,0}}, +/* 15419 */ {(11<<2)|2,{111,65,0}}, +/* 15420 */ {(11<<2)|2,{111,65,0}}, +/* 15421 */ {(11<<2)|2,{111,65,0}}, +/* 15422 */ {(11<<2)|2,{111,65,0}}, +/* 15423 */ {(11<<2)|2,{111,65,0}}, +/* 15424 */ {(16<<2)|3,{111,95,48}}, +/* 15425 */ {(16<<2)|3,{111,95,49}}, +/* 15426 */ {(16<<2)|3,{111,95,50}}, +/* 15427 */ {(16<<2)|3,{111,95,97}}, +/* 15428 */ {(16<<2)|3,{111,95,99}}, +/* 15429 */ {(16<<2)|3,{111,95,101}}, +/* 15430 */ {(16<<2)|3,{111,95,105}}, +/* 15431 */ {(16<<2)|3,{111,95,111}}, +/* 15432 */ {(16<<2)|3,{111,95,115}}, +/* 15433 */ {(16<<2)|3,{111,95,116}}, +/* 15434 */ {(11<<2)|2,{111,95,0}}, +/* 15435 */ {(11<<2)|2,{111,95,0}}, +/* 15436 */ {(11<<2)|2,{111,95,0}}, +/* 15437 */ {(11<<2)|2,{111,95,0}}, +/* 15438 */ {(11<<2)|2,{111,95,0}}, +/* 15439 */ {(11<<2)|2,{111,95,0}}, +/* 15440 */ {(11<<2)|2,{111,95,0}}, +/* 15441 */ {(11<<2)|2,{111,95,0}}, +/* 15442 */ {(11<<2)|2,{111,95,0}}, +/* 15443 */ {(11<<2)|2,{111,95,0}}, +/* 15444 */ {(11<<2)|2,{111,95,0}}, +/* 15445 */ {(11<<2)|2,{111,95,0}}, +/* 15446 */ {(11<<2)|2,{111,95,0}}, +/* 15447 */ {(11<<2)|2,{111,95,0}}, +/* 15448 */ {(11<<2)|2,{111,95,0}}, +/* 15449 */ {(11<<2)|2,{111,95,0}}, +/* 15450 */ {(11<<2)|2,{111,95,0}}, +/* 15451 */ {(11<<2)|2,{111,95,0}}, +/* 15452 */ {(11<<2)|2,{111,95,0}}, +/* 15453 */ {(11<<2)|2,{111,95,0}}, +/* 15454 */ {(11<<2)|2,{111,95,0}}, +/* 15455 */ {(11<<2)|2,{111,95,0}}, +/* 15456 */ {(16<<2)|3,{111,98,48}}, +/* 15457 */ {(16<<2)|3,{111,98,49}}, +/* 15458 */ {(16<<2)|3,{111,98,50}}, +/* 15459 */ {(16<<2)|3,{111,98,97}}, +/* 15460 */ {(16<<2)|3,{111,98,99}}, +/* 15461 */ {(16<<2)|3,{111,98,101}}, +/* 15462 */ {(16<<2)|3,{111,98,105}}, +/* 15463 */ {(16<<2)|3,{111,98,111}}, +/* 15464 */ {(16<<2)|3,{111,98,115}}, +/* 15465 */ {(16<<2)|3,{111,98,116}}, +/* 15466 */ {(11<<2)|2,{111,98,0}}, +/* 15467 */ {(11<<2)|2,{111,98,0}}, +/* 15468 */ {(11<<2)|2,{111,98,0}}, +/* 15469 */ {(11<<2)|2,{111,98,0}}, +/* 15470 */ {(11<<2)|2,{111,98,0}}, +/* 15471 */ {(11<<2)|2,{111,98,0}}, +/* 15472 */ {(11<<2)|2,{111,98,0}}, +/* 15473 */ {(11<<2)|2,{111,98,0}}, +/* 15474 */ {(11<<2)|2,{111,98,0}}, +/* 15475 */ {(11<<2)|2,{111,98,0}}, +/* 15476 */ {(11<<2)|2,{111,98,0}}, +/* 15477 */ {(11<<2)|2,{111,98,0}}, +/* 15478 */ {(11<<2)|2,{111,98,0}}, +/* 15479 */ {(11<<2)|2,{111,98,0}}, +/* 15480 */ {(11<<2)|2,{111,98,0}}, +/* 15481 */ {(11<<2)|2,{111,98,0}}, +/* 15482 */ {(11<<2)|2,{111,98,0}}, +/* 15483 */ {(11<<2)|2,{111,98,0}}, +/* 15484 */ {(11<<2)|2,{111,98,0}}, +/* 15485 */ {(11<<2)|2,{111,98,0}}, +/* 15486 */ {(11<<2)|2,{111,98,0}}, +/* 15487 */ {(11<<2)|2,{111,98,0}}, +/* 15488 */ {(16<<2)|3,{111,100,48}}, +/* 15489 */ {(16<<2)|3,{111,100,49}}, +/* 15490 */ {(16<<2)|3,{111,100,50}}, +/* 15491 */ {(16<<2)|3,{111,100,97}}, +/* 15492 */ {(16<<2)|3,{111,100,99}}, +/* 15493 */ {(16<<2)|3,{111,100,101}}, +/* 15494 */ {(16<<2)|3,{111,100,105}}, +/* 15495 */ {(16<<2)|3,{111,100,111}}, +/* 15496 */ {(16<<2)|3,{111,100,115}}, +/* 15497 */ {(16<<2)|3,{111,100,116}}, +/* 15498 */ {(11<<2)|2,{111,100,0}}, +/* 15499 */ {(11<<2)|2,{111,100,0}}, +/* 15500 */ {(11<<2)|2,{111,100,0}}, +/* 15501 */ {(11<<2)|2,{111,100,0}}, +/* 15502 */ {(11<<2)|2,{111,100,0}}, +/* 15503 */ {(11<<2)|2,{111,100,0}}, +/* 15504 */ {(11<<2)|2,{111,100,0}}, +/* 15505 */ {(11<<2)|2,{111,100,0}}, +/* 15506 */ {(11<<2)|2,{111,100,0}}, +/* 15507 */ {(11<<2)|2,{111,100,0}}, +/* 15508 */ {(11<<2)|2,{111,100,0}}, +/* 15509 */ {(11<<2)|2,{111,100,0}}, +/* 15510 */ {(11<<2)|2,{111,100,0}}, +/* 15511 */ {(11<<2)|2,{111,100,0}}, +/* 15512 */ {(11<<2)|2,{111,100,0}}, +/* 15513 */ {(11<<2)|2,{111,100,0}}, +/* 15514 */ {(11<<2)|2,{111,100,0}}, +/* 15515 */ {(11<<2)|2,{111,100,0}}, +/* 15516 */ {(11<<2)|2,{111,100,0}}, +/* 15517 */ {(11<<2)|2,{111,100,0}}, +/* 15518 */ {(11<<2)|2,{111,100,0}}, +/* 15519 */ {(11<<2)|2,{111,100,0}}, +/* 15520 */ {(16<<2)|3,{111,102,48}}, +/* 15521 */ {(16<<2)|3,{111,102,49}}, +/* 15522 */ {(16<<2)|3,{111,102,50}}, +/* 15523 */ {(16<<2)|3,{111,102,97}}, +/* 15524 */ {(16<<2)|3,{111,102,99}}, +/* 15525 */ {(16<<2)|3,{111,102,101}}, +/* 15526 */ {(16<<2)|3,{111,102,105}}, +/* 15527 */ {(16<<2)|3,{111,102,111}}, +/* 15528 */ {(16<<2)|3,{111,102,115}}, +/* 15529 */ {(16<<2)|3,{111,102,116}}, +/* 15530 */ {(11<<2)|2,{111,102,0}}, +/* 15531 */ {(11<<2)|2,{111,102,0}}, +/* 15532 */ {(11<<2)|2,{111,102,0}}, +/* 15533 */ {(11<<2)|2,{111,102,0}}, +/* 15534 */ {(11<<2)|2,{111,102,0}}, +/* 15535 */ {(11<<2)|2,{111,102,0}}, +/* 15536 */ {(11<<2)|2,{111,102,0}}, +/* 15537 */ {(11<<2)|2,{111,102,0}}, +/* 15538 */ {(11<<2)|2,{111,102,0}}, +/* 15539 */ {(11<<2)|2,{111,102,0}}, +/* 15540 */ {(11<<2)|2,{111,102,0}}, +/* 15541 */ {(11<<2)|2,{111,102,0}}, +/* 15542 */ {(11<<2)|2,{111,102,0}}, +/* 15543 */ {(11<<2)|2,{111,102,0}}, +/* 15544 */ {(11<<2)|2,{111,102,0}}, +/* 15545 */ {(11<<2)|2,{111,102,0}}, +/* 15546 */ {(11<<2)|2,{111,102,0}}, +/* 15547 */ {(11<<2)|2,{111,102,0}}, +/* 15548 */ {(11<<2)|2,{111,102,0}}, +/* 15549 */ {(11<<2)|2,{111,102,0}}, +/* 15550 */ {(11<<2)|2,{111,102,0}}, +/* 15551 */ {(11<<2)|2,{111,102,0}}, +/* 15552 */ {(16<<2)|3,{111,103,48}}, +/* 15553 */ {(16<<2)|3,{111,103,49}}, +/* 15554 */ {(16<<2)|3,{111,103,50}}, +/* 15555 */ {(16<<2)|3,{111,103,97}}, +/* 15556 */ {(16<<2)|3,{111,103,99}}, +/* 15557 */ {(16<<2)|3,{111,103,101}}, +/* 15558 */ {(16<<2)|3,{111,103,105}}, +/* 15559 */ {(16<<2)|3,{111,103,111}}, +/* 15560 */ {(16<<2)|3,{111,103,115}}, +/* 15561 */ {(16<<2)|3,{111,103,116}}, +/* 15562 */ {(11<<2)|2,{111,103,0}}, +/* 15563 */ {(11<<2)|2,{111,103,0}}, +/* 15564 */ {(11<<2)|2,{111,103,0}}, +/* 15565 */ {(11<<2)|2,{111,103,0}}, +/* 15566 */ {(11<<2)|2,{111,103,0}}, +/* 15567 */ {(11<<2)|2,{111,103,0}}, +/* 15568 */ {(11<<2)|2,{111,103,0}}, +/* 15569 */ {(11<<2)|2,{111,103,0}}, +/* 15570 */ {(11<<2)|2,{111,103,0}}, +/* 15571 */ {(11<<2)|2,{111,103,0}}, +/* 15572 */ {(11<<2)|2,{111,103,0}}, +/* 15573 */ {(11<<2)|2,{111,103,0}}, +/* 15574 */ {(11<<2)|2,{111,103,0}}, +/* 15575 */ {(11<<2)|2,{111,103,0}}, +/* 15576 */ {(11<<2)|2,{111,103,0}}, +/* 15577 */ {(11<<2)|2,{111,103,0}}, +/* 15578 */ {(11<<2)|2,{111,103,0}}, +/* 15579 */ {(11<<2)|2,{111,103,0}}, +/* 15580 */ {(11<<2)|2,{111,103,0}}, +/* 15581 */ {(11<<2)|2,{111,103,0}}, +/* 15582 */ {(11<<2)|2,{111,103,0}}, +/* 15583 */ {(11<<2)|2,{111,103,0}}, +/* 15584 */ {(16<<2)|3,{111,104,48}}, +/* 15585 */ {(16<<2)|3,{111,104,49}}, +/* 15586 */ {(16<<2)|3,{111,104,50}}, +/* 15587 */ {(16<<2)|3,{111,104,97}}, +/* 15588 */ {(16<<2)|3,{111,104,99}}, +/* 15589 */ {(16<<2)|3,{111,104,101}}, +/* 15590 */ {(16<<2)|3,{111,104,105}}, +/* 15591 */ {(16<<2)|3,{111,104,111}}, +/* 15592 */ {(16<<2)|3,{111,104,115}}, +/* 15593 */ {(16<<2)|3,{111,104,116}}, +/* 15594 */ {(11<<2)|2,{111,104,0}}, +/* 15595 */ {(11<<2)|2,{111,104,0}}, +/* 15596 */ {(11<<2)|2,{111,104,0}}, +/* 15597 */ {(11<<2)|2,{111,104,0}}, +/* 15598 */ {(11<<2)|2,{111,104,0}}, +/* 15599 */ {(11<<2)|2,{111,104,0}}, +/* 15600 */ {(11<<2)|2,{111,104,0}}, +/* 15601 */ {(11<<2)|2,{111,104,0}}, +/* 15602 */ {(11<<2)|2,{111,104,0}}, +/* 15603 */ {(11<<2)|2,{111,104,0}}, +/* 15604 */ {(11<<2)|2,{111,104,0}}, +/* 15605 */ {(11<<2)|2,{111,104,0}}, +/* 15606 */ {(11<<2)|2,{111,104,0}}, +/* 15607 */ {(11<<2)|2,{111,104,0}}, +/* 15608 */ {(11<<2)|2,{111,104,0}}, +/* 15609 */ {(11<<2)|2,{111,104,0}}, +/* 15610 */ {(11<<2)|2,{111,104,0}}, +/* 15611 */ {(11<<2)|2,{111,104,0}}, +/* 15612 */ {(11<<2)|2,{111,104,0}}, +/* 15613 */ {(11<<2)|2,{111,104,0}}, +/* 15614 */ {(11<<2)|2,{111,104,0}}, +/* 15615 */ {(11<<2)|2,{111,104,0}}, +/* 15616 */ {(16<<2)|3,{111,108,48}}, +/* 15617 */ {(16<<2)|3,{111,108,49}}, +/* 15618 */ {(16<<2)|3,{111,108,50}}, +/* 15619 */ {(16<<2)|3,{111,108,97}}, +/* 15620 */ {(16<<2)|3,{111,108,99}}, +/* 15621 */ {(16<<2)|3,{111,108,101}}, +/* 15622 */ {(16<<2)|3,{111,108,105}}, +/* 15623 */ {(16<<2)|3,{111,108,111}}, +/* 15624 */ {(16<<2)|3,{111,108,115}}, +/* 15625 */ {(16<<2)|3,{111,108,116}}, +/* 15626 */ {(11<<2)|2,{111,108,0}}, +/* 15627 */ {(11<<2)|2,{111,108,0}}, +/* 15628 */ {(11<<2)|2,{111,108,0}}, +/* 15629 */ {(11<<2)|2,{111,108,0}}, +/* 15630 */ {(11<<2)|2,{111,108,0}}, +/* 15631 */ {(11<<2)|2,{111,108,0}}, +/* 15632 */ {(11<<2)|2,{111,108,0}}, +/* 15633 */ {(11<<2)|2,{111,108,0}}, +/* 15634 */ {(11<<2)|2,{111,108,0}}, +/* 15635 */ {(11<<2)|2,{111,108,0}}, +/* 15636 */ {(11<<2)|2,{111,108,0}}, +/* 15637 */ {(11<<2)|2,{111,108,0}}, +/* 15638 */ {(11<<2)|2,{111,108,0}}, +/* 15639 */ {(11<<2)|2,{111,108,0}}, +/* 15640 */ {(11<<2)|2,{111,108,0}}, +/* 15641 */ {(11<<2)|2,{111,108,0}}, +/* 15642 */ {(11<<2)|2,{111,108,0}}, +/* 15643 */ {(11<<2)|2,{111,108,0}}, +/* 15644 */ {(11<<2)|2,{111,108,0}}, +/* 15645 */ {(11<<2)|2,{111,108,0}}, +/* 15646 */ {(11<<2)|2,{111,108,0}}, +/* 15647 */ {(11<<2)|2,{111,108,0}}, +/* 15648 */ {(16<<2)|3,{111,109,48}}, +/* 15649 */ {(16<<2)|3,{111,109,49}}, +/* 15650 */ {(16<<2)|3,{111,109,50}}, +/* 15651 */ {(16<<2)|3,{111,109,97}}, +/* 15652 */ {(16<<2)|3,{111,109,99}}, +/* 15653 */ {(16<<2)|3,{111,109,101}}, +/* 15654 */ {(16<<2)|3,{111,109,105}}, +/* 15655 */ {(16<<2)|3,{111,109,111}}, +/* 15656 */ {(16<<2)|3,{111,109,115}}, +/* 15657 */ {(16<<2)|3,{111,109,116}}, +/* 15658 */ {(11<<2)|2,{111,109,0}}, +/* 15659 */ {(11<<2)|2,{111,109,0}}, +/* 15660 */ {(11<<2)|2,{111,109,0}}, +/* 15661 */ {(11<<2)|2,{111,109,0}}, +/* 15662 */ {(11<<2)|2,{111,109,0}}, +/* 15663 */ {(11<<2)|2,{111,109,0}}, +/* 15664 */ {(11<<2)|2,{111,109,0}}, +/* 15665 */ {(11<<2)|2,{111,109,0}}, +/* 15666 */ {(11<<2)|2,{111,109,0}}, +/* 15667 */ {(11<<2)|2,{111,109,0}}, +/* 15668 */ {(11<<2)|2,{111,109,0}}, +/* 15669 */ {(11<<2)|2,{111,109,0}}, +/* 15670 */ {(11<<2)|2,{111,109,0}}, +/* 15671 */ {(11<<2)|2,{111,109,0}}, +/* 15672 */ {(11<<2)|2,{111,109,0}}, +/* 15673 */ {(11<<2)|2,{111,109,0}}, +/* 15674 */ {(11<<2)|2,{111,109,0}}, +/* 15675 */ {(11<<2)|2,{111,109,0}}, +/* 15676 */ {(11<<2)|2,{111,109,0}}, +/* 15677 */ {(11<<2)|2,{111,109,0}}, +/* 15678 */ {(11<<2)|2,{111,109,0}}, +/* 15679 */ {(11<<2)|2,{111,109,0}}, +/* 15680 */ {(16<<2)|3,{111,110,48}}, +/* 15681 */ {(16<<2)|3,{111,110,49}}, +/* 15682 */ {(16<<2)|3,{111,110,50}}, +/* 15683 */ {(16<<2)|3,{111,110,97}}, +/* 15684 */ {(16<<2)|3,{111,110,99}}, +/* 15685 */ {(16<<2)|3,{111,110,101}}, +/* 15686 */ {(16<<2)|3,{111,110,105}}, +/* 15687 */ {(16<<2)|3,{111,110,111}}, +/* 15688 */ {(16<<2)|3,{111,110,115}}, +/* 15689 */ {(16<<2)|3,{111,110,116}}, +/* 15690 */ {(11<<2)|2,{111,110,0}}, +/* 15691 */ {(11<<2)|2,{111,110,0}}, +/* 15692 */ {(11<<2)|2,{111,110,0}}, +/* 15693 */ {(11<<2)|2,{111,110,0}}, +/* 15694 */ {(11<<2)|2,{111,110,0}}, +/* 15695 */ {(11<<2)|2,{111,110,0}}, +/* 15696 */ {(11<<2)|2,{111,110,0}}, +/* 15697 */ {(11<<2)|2,{111,110,0}}, +/* 15698 */ {(11<<2)|2,{111,110,0}}, +/* 15699 */ {(11<<2)|2,{111,110,0}}, +/* 15700 */ {(11<<2)|2,{111,110,0}}, +/* 15701 */ {(11<<2)|2,{111,110,0}}, +/* 15702 */ {(11<<2)|2,{111,110,0}}, +/* 15703 */ {(11<<2)|2,{111,110,0}}, +/* 15704 */ {(11<<2)|2,{111,110,0}}, +/* 15705 */ {(11<<2)|2,{111,110,0}}, +/* 15706 */ {(11<<2)|2,{111,110,0}}, +/* 15707 */ {(11<<2)|2,{111,110,0}}, +/* 15708 */ {(11<<2)|2,{111,110,0}}, +/* 15709 */ {(11<<2)|2,{111,110,0}}, +/* 15710 */ {(11<<2)|2,{111,110,0}}, +/* 15711 */ {(11<<2)|2,{111,110,0}}, +/* 15712 */ {(16<<2)|3,{111,112,48}}, +/* 15713 */ {(16<<2)|3,{111,112,49}}, +/* 15714 */ {(16<<2)|3,{111,112,50}}, +/* 15715 */ {(16<<2)|3,{111,112,97}}, +/* 15716 */ {(16<<2)|3,{111,112,99}}, +/* 15717 */ {(16<<2)|3,{111,112,101}}, +/* 15718 */ {(16<<2)|3,{111,112,105}}, +/* 15719 */ {(16<<2)|3,{111,112,111}}, +/* 15720 */ {(16<<2)|3,{111,112,115}}, +/* 15721 */ {(16<<2)|3,{111,112,116}}, +/* 15722 */ {(11<<2)|2,{111,112,0}}, +/* 15723 */ {(11<<2)|2,{111,112,0}}, +/* 15724 */ {(11<<2)|2,{111,112,0}}, +/* 15725 */ {(11<<2)|2,{111,112,0}}, +/* 15726 */ {(11<<2)|2,{111,112,0}}, +/* 15727 */ {(11<<2)|2,{111,112,0}}, +/* 15728 */ {(11<<2)|2,{111,112,0}}, +/* 15729 */ {(11<<2)|2,{111,112,0}}, +/* 15730 */ {(11<<2)|2,{111,112,0}}, +/* 15731 */ {(11<<2)|2,{111,112,0}}, +/* 15732 */ {(11<<2)|2,{111,112,0}}, +/* 15733 */ {(11<<2)|2,{111,112,0}}, +/* 15734 */ {(11<<2)|2,{111,112,0}}, +/* 15735 */ {(11<<2)|2,{111,112,0}}, +/* 15736 */ {(11<<2)|2,{111,112,0}}, +/* 15737 */ {(11<<2)|2,{111,112,0}}, +/* 15738 */ {(11<<2)|2,{111,112,0}}, +/* 15739 */ {(11<<2)|2,{111,112,0}}, +/* 15740 */ {(11<<2)|2,{111,112,0}}, +/* 15741 */ {(11<<2)|2,{111,112,0}}, +/* 15742 */ {(11<<2)|2,{111,112,0}}, +/* 15743 */ {(11<<2)|2,{111,112,0}}, +/* 15744 */ {(16<<2)|3,{111,114,48}}, +/* 15745 */ {(16<<2)|3,{111,114,49}}, +/* 15746 */ {(16<<2)|3,{111,114,50}}, +/* 15747 */ {(16<<2)|3,{111,114,97}}, +/* 15748 */ {(16<<2)|3,{111,114,99}}, +/* 15749 */ {(16<<2)|3,{111,114,101}}, +/* 15750 */ {(16<<2)|3,{111,114,105}}, +/* 15751 */ {(16<<2)|3,{111,114,111}}, +/* 15752 */ {(16<<2)|3,{111,114,115}}, +/* 15753 */ {(16<<2)|3,{111,114,116}}, +/* 15754 */ {(11<<2)|2,{111,114,0}}, +/* 15755 */ {(11<<2)|2,{111,114,0}}, +/* 15756 */ {(11<<2)|2,{111,114,0}}, +/* 15757 */ {(11<<2)|2,{111,114,0}}, +/* 15758 */ {(11<<2)|2,{111,114,0}}, +/* 15759 */ {(11<<2)|2,{111,114,0}}, +/* 15760 */ {(11<<2)|2,{111,114,0}}, +/* 15761 */ {(11<<2)|2,{111,114,0}}, +/* 15762 */ {(11<<2)|2,{111,114,0}}, +/* 15763 */ {(11<<2)|2,{111,114,0}}, +/* 15764 */ {(11<<2)|2,{111,114,0}}, +/* 15765 */ {(11<<2)|2,{111,114,0}}, +/* 15766 */ {(11<<2)|2,{111,114,0}}, +/* 15767 */ {(11<<2)|2,{111,114,0}}, +/* 15768 */ {(11<<2)|2,{111,114,0}}, +/* 15769 */ {(11<<2)|2,{111,114,0}}, +/* 15770 */ {(11<<2)|2,{111,114,0}}, +/* 15771 */ {(11<<2)|2,{111,114,0}}, +/* 15772 */ {(11<<2)|2,{111,114,0}}, +/* 15773 */ {(11<<2)|2,{111,114,0}}, +/* 15774 */ {(11<<2)|2,{111,114,0}}, +/* 15775 */ {(11<<2)|2,{111,114,0}}, +/* 15776 */ {(16<<2)|3,{111,117,48}}, +/* 15777 */ {(16<<2)|3,{111,117,49}}, +/* 15778 */ {(16<<2)|3,{111,117,50}}, +/* 15779 */ {(16<<2)|3,{111,117,97}}, +/* 15780 */ {(16<<2)|3,{111,117,99}}, +/* 15781 */ {(16<<2)|3,{111,117,101}}, +/* 15782 */ {(16<<2)|3,{111,117,105}}, +/* 15783 */ {(16<<2)|3,{111,117,111}}, +/* 15784 */ {(16<<2)|3,{111,117,115}}, +/* 15785 */ {(16<<2)|3,{111,117,116}}, +/* 15786 */ {(11<<2)|2,{111,117,0}}, +/* 15787 */ {(11<<2)|2,{111,117,0}}, +/* 15788 */ {(11<<2)|2,{111,117,0}}, +/* 15789 */ {(11<<2)|2,{111,117,0}}, +/* 15790 */ {(11<<2)|2,{111,117,0}}, +/* 15791 */ {(11<<2)|2,{111,117,0}}, +/* 15792 */ {(11<<2)|2,{111,117,0}}, +/* 15793 */ {(11<<2)|2,{111,117,0}}, +/* 15794 */ {(11<<2)|2,{111,117,0}}, +/* 15795 */ {(11<<2)|2,{111,117,0}}, +/* 15796 */ {(11<<2)|2,{111,117,0}}, +/* 15797 */ {(11<<2)|2,{111,117,0}}, +/* 15798 */ {(11<<2)|2,{111,117,0}}, +/* 15799 */ {(11<<2)|2,{111,117,0}}, +/* 15800 */ {(11<<2)|2,{111,117,0}}, +/* 15801 */ {(11<<2)|2,{111,117,0}}, +/* 15802 */ {(11<<2)|2,{111,117,0}}, +/* 15803 */ {(11<<2)|2,{111,117,0}}, +/* 15804 */ {(11<<2)|2,{111,117,0}}, +/* 15805 */ {(11<<2)|2,{111,117,0}}, +/* 15806 */ {(11<<2)|2,{111,117,0}}, +/* 15807 */ {(11<<2)|2,{111,117,0}}, +/* 15808 */ {(12<<2)|2,{111,58,0}}, +/* 15809 */ {(12<<2)|2,{111,58,0}}, +/* 15810 */ {(12<<2)|2,{111,58,0}}, +/* 15811 */ {(12<<2)|2,{111,58,0}}, +/* 15812 */ {(12<<2)|2,{111,58,0}}, +/* 15813 */ {(12<<2)|2,{111,58,0}}, +/* 15814 */ {(12<<2)|2,{111,58,0}}, +/* 15815 */ {(12<<2)|2,{111,58,0}}, +/* 15816 */ {(12<<2)|2,{111,58,0}}, +/* 15817 */ {(12<<2)|2,{111,58,0}}, +/* 15818 */ {(12<<2)|2,{111,58,0}}, +/* 15819 */ {(12<<2)|2,{111,58,0}}, +/* 15820 */ {(12<<2)|2,{111,58,0}}, +/* 15821 */ {(12<<2)|2,{111,58,0}}, +/* 15822 */ {(12<<2)|2,{111,58,0}}, +/* 15823 */ {(12<<2)|2,{111,58,0}}, +/* 15824 */ {(12<<2)|2,{111,66,0}}, +/* 15825 */ {(12<<2)|2,{111,66,0}}, +/* 15826 */ {(12<<2)|2,{111,66,0}}, +/* 15827 */ {(12<<2)|2,{111,66,0}}, +/* 15828 */ {(12<<2)|2,{111,66,0}}, +/* 15829 */ {(12<<2)|2,{111,66,0}}, +/* 15830 */ {(12<<2)|2,{111,66,0}}, +/* 15831 */ {(12<<2)|2,{111,66,0}}, +/* 15832 */ {(12<<2)|2,{111,66,0}}, +/* 15833 */ {(12<<2)|2,{111,66,0}}, +/* 15834 */ {(12<<2)|2,{111,66,0}}, +/* 15835 */ {(12<<2)|2,{111,66,0}}, +/* 15836 */ {(12<<2)|2,{111,66,0}}, +/* 15837 */ {(12<<2)|2,{111,66,0}}, +/* 15838 */ {(12<<2)|2,{111,66,0}}, +/* 15839 */ {(12<<2)|2,{111,66,0}}, +/* 15840 */ {(12<<2)|2,{111,67,0}}, +/* 15841 */ {(12<<2)|2,{111,67,0}}, +/* 15842 */ {(12<<2)|2,{111,67,0}}, +/* 15843 */ {(12<<2)|2,{111,67,0}}, +/* 15844 */ {(12<<2)|2,{111,67,0}}, +/* 15845 */ {(12<<2)|2,{111,67,0}}, +/* 15846 */ {(12<<2)|2,{111,67,0}}, +/* 15847 */ {(12<<2)|2,{111,67,0}}, +/* 15848 */ {(12<<2)|2,{111,67,0}}, +/* 15849 */ {(12<<2)|2,{111,67,0}}, +/* 15850 */ {(12<<2)|2,{111,67,0}}, +/* 15851 */ {(12<<2)|2,{111,67,0}}, +/* 15852 */ {(12<<2)|2,{111,67,0}}, +/* 15853 */ {(12<<2)|2,{111,67,0}}, +/* 15854 */ {(12<<2)|2,{111,67,0}}, +/* 15855 */ {(12<<2)|2,{111,67,0}}, +/* 15856 */ {(12<<2)|2,{111,68,0}}, +/* 15857 */ {(12<<2)|2,{111,68,0}}, +/* 15858 */ {(12<<2)|2,{111,68,0}}, +/* 15859 */ {(12<<2)|2,{111,68,0}}, +/* 15860 */ {(12<<2)|2,{111,68,0}}, +/* 15861 */ {(12<<2)|2,{111,68,0}}, +/* 15862 */ {(12<<2)|2,{111,68,0}}, +/* 15863 */ {(12<<2)|2,{111,68,0}}, +/* 15864 */ {(12<<2)|2,{111,68,0}}, +/* 15865 */ {(12<<2)|2,{111,68,0}}, +/* 15866 */ {(12<<2)|2,{111,68,0}}, +/* 15867 */ {(12<<2)|2,{111,68,0}}, +/* 15868 */ {(12<<2)|2,{111,68,0}}, +/* 15869 */ {(12<<2)|2,{111,68,0}}, +/* 15870 */ {(12<<2)|2,{111,68,0}}, +/* 15871 */ {(12<<2)|2,{111,68,0}}, +/* 15872 */ {(12<<2)|2,{111,69,0}}, +/* 15873 */ {(12<<2)|2,{111,69,0}}, +/* 15874 */ {(12<<2)|2,{111,69,0}}, +/* 15875 */ {(12<<2)|2,{111,69,0}}, +/* 15876 */ {(12<<2)|2,{111,69,0}}, +/* 15877 */ {(12<<2)|2,{111,69,0}}, +/* 15878 */ {(12<<2)|2,{111,69,0}}, +/* 15879 */ {(12<<2)|2,{111,69,0}}, +/* 15880 */ {(12<<2)|2,{111,69,0}}, +/* 15881 */ {(12<<2)|2,{111,69,0}}, +/* 15882 */ {(12<<2)|2,{111,69,0}}, +/* 15883 */ {(12<<2)|2,{111,69,0}}, +/* 15884 */ {(12<<2)|2,{111,69,0}}, +/* 15885 */ {(12<<2)|2,{111,69,0}}, +/* 15886 */ {(12<<2)|2,{111,69,0}}, +/* 15887 */ {(12<<2)|2,{111,69,0}}, +/* 15888 */ {(12<<2)|2,{111,70,0}}, +/* 15889 */ {(12<<2)|2,{111,70,0}}, +/* 15890 */ {(12<<2)|2,{111,70,0}}, +/* 15891 */ {(12<<2)|2,{111,70,0}}, +/* 15892 */ {(12<<2)|2,{111,70,0}}, +/* 15893 */ {(12<<2)|2,{111,70,0}}, +/* 15894 */ {(12<<2)|2,{111,70,0}}, +/* 15895 */ {(12<<2)|2,{111,70,0}}, +/* 15896 */ {(12<<2)|2,{111,70,0}}, +/* 15897 */ {(12<<2)|2,{111,70,0}}, +/* 15898 */ {(12<<2)|2,{111,70,0}}, +/* 15899 */ {(12<<2)|2,{111,70,0}}, +/* 15900 */ {(12<<2)|2,{111,70,0}}, +/* 15901 */ {(12<<2)|2,{111,70,0}}, +/* 15902 */ {(12<<2)|2,{111,70,0}}, +/* 15903 */ {(12<<2)|2,{111,70,0}}, +/* 15904 */ {(12<<2)|2,{111,71,0}}, +/* 15905 */ {(12<<2)|2,{111,71,0}}, +/* 15906 */ {(12<<2)|2,{111,71,0}}, +/* 15907 */ {(12<<2)|2,{111,71,0}}, +/* 15908 */ {(12<<2)|2,{111,71,0}}, +/* 15909 */ {(12<<2)|2,{111,71,0}}, +/* 15910 */ {(12<<2)|2,{111,71,0}}, +/* 15911 */ {(12<<2)|2,{111,71,0}}, +/* 15912 */ {(12<<2)|2,{111,71,0}}, +/* 15913 */ {(12<<2)|2,{111,71,0}}, +/* 15914 */ {(12<<2)|2,{111,71,0}}, +/* 15915 */ {(12<<2)|2,{111,71,0}}, +/* 15916 */ {(12<<2)|2,{111,71,0}}, +/* 15917 */ {(12<<2)|2,{111,71,0}}, +/* 15918 */ {(12<<2)|2,{111,71,0}}, +/* 15919 */ {(12<<2)|2,{111,71,0}}, +/* 15920 */ {(12<<2)|2,{111,72,0}}, +/* 15921 */ {(12<<2)|2,{111,72,0}}, +/* 15922 */ {(12<<2)|2,{111,72,0}}, +/* 15923 */ {(12<<2)|2,{111,72,0}}, +/* 15924 */ {(12<<2)|2,{111,72,0}}, +/* 15925 */ {(12<<2)|2,{111,72,0}}, +/* 15926 */ {(12<<2)|2,{111,72,0}}, +/* 15927 */ {(12<<2)|2,{111,72,0}}, +/* 15928 */ {(12<<2)|2,{111,72,0}}, +/* 15929 */ {(12<<2)|2,{111,72,0}}, +/* 15930 */ {(12<<2)|2,{111,72,0}}, +/* 15931 */ {(12<<2)|2,{111,72,0}}, +/* 15932 */ {(12<<2)|2,{111,72,0}}, +/* 15933 */ {(12<<2)|2,{111,72,0}}, +/* 15934 */ {(12<<2)|2,{111,72,0}}, +/* 15935 */ {(12<<2)|2,{111,72,0}}, +/* 15936 */ {(12<<2)|2,{111,73,0}}, +/* 15937 */ {(12<<2)|2,{111,73,0}}, +/* 15938 */ {(12<<2)|2,{111,73,0}}, +/* 15939 */ {(12<<2)|2,{111,73,0}}, +/* 15940 */ {(12<<2)|2,{111,73,0}}, +/* 15941 */ {(12<<2)|2,{111,73,0}}, +/* 15942 */ {(12<<2)|2,{111,73,0}}, +/* 15943 */ {(12<<2)|2,{111,73,0}}, +/* 15944 */ {(12<<2)|2,{111,73,0}}, +/* 15945 */ {(12<<2)|2,{111,73,0}}, +/* 15946 */ {(12<<2)|2,{111,73,0}}, +/* 15947 */ {(12<<2)|2,{111,73,0}}, +/* 15948 */ {(12<<2)|2,{111,73,0}}, +/* 15949 */ {(12<<2)|2,{111,73,0}}, +/* 15950 */ {(12<<2)|2,{111,73,0}}, +/* 15951 */ {(12<<2)|2,{111,73,0}}, +/* 15952 */ {(12<<2)|2,{111,74,0}}, +/* 15953 */ {(12<<2)|2,{111,74,0}}, +/* 15954 */ {(12<<2)|2,{111,74,0}}, +/* 15955 */ {(12<<2)|2,{111,74,0}}, +/* 15956 */ {(12<<2)|2,{111,74,0}}, +/* 15957 */ {(12<<2)|2,{111,74,0}}, +/* 15958 */ {(12<<2)|2,{111,74,0}}, +/* 15959 */ {(12<<2)|2,{111,74,0}}, +/* 15960 */ {(12<<2)|2,{111,74,0}}, +/* 15961 */ {(12<<2)|2,{111,74,0}}, +/* 15962 */ {(12<<2)|2,{111,74,0}}, +/* 15963 */ {(12<<2)|2,{111,74,0}}, +/* 15964 */ {(12<<2)|2,{111,74,0}}, +/* 15965 */ {(12<<2)|2,{111,74,0}}, +/* 15966 */ {(12<<2)|2,{111,74,0}}, +/* 15967 */ {(12<<2)|2,{111,74,0}}, +/* 15968 */ {(12<<2)|2,{111,75,0}}, +/* 15969 */ {(12<<2)|2,{111,75,0}}, +/* 15970 */ {(12<<2)|2,{111,75,0}}, +/* 15971 */ {(12<<2)|2,{111,75,0}}, +/* 15972 */ {(12<<2)|2,{111,75,0}}, +/* 15973 */ {(12<<2)|2,{111,75,0}}, +/* 15974 */ {(12<<2)|2,{111,75,0}}, +/* 15975 */ {(12<<2)|2,{111,75,0}}, +/* 15976 */ {(12<<2)|2,{111,75,0}}, +/* 15977 */ {(12<<2)|2,{111,75,0}}, +/* 15978 */ {(12<<2)|2,{111,75,0}}, +/* 15979 */ {(12<<2)|2,{111,75,0}}, +/* 15980 */ {(12<<2)|2,{111,75,0}}, +/* 15981 */ {(12<<2)|2,{111,75,0}}, +/* 15982 */ {(12<<2)|2,{111,75,0}}, +/* 15983 */ {(12<<2)|2,{111,75,0}}, +/* 15984 */ {(12<<2)|2,{111,76,0}}, +/* 15985 */ {(12<<2)|2,{111,76,0}}, +/* 15986 */ {(12<<2)|2,{111,76,0}}, +/* 15987 */ {(12<<2)|2,{111,76,0}}, +/* 15988 */ {(12<<2)|2,{111,76,0}}, +/* 15989 */ {(12<<2)|2,{111,76,0}}, +/* 15990 */ {(12<<2)|2,{111,76,0}}, +/* 15991 */ {(12<<2)|2,{111,76,0}}, +/* 15992 */ {(12<<2)|2,{111,76,0}}, +/* 15993 */ {(12<<2)|2,{111,76,0}}, +/* 15994 */ {(12<<2)|2,{111,76,0}}, +/* 15995 */ {(12<<2)|2,{111,76,0}}, +/* 15996 */ {(12<<2)|2,{111,76,0}}, +/* 15997 */ {(12<<2)|2,{111,76,0}}, +/* 15998 */ {(12<<2)|2,{111,76,0}}, +/* 15999 */ {(12<<2)|2,{111,76,0}}, +/* 16000 */ {(12<<2)|2,{111,77,0}}, +/* 16001 */ {(12<<2)|2,{111,77,0}}, +/* 16002 */ {(12<<2)|2,{111,77,0}}, +/* 16003 */ {(12<<2)|2,{111,77,0}}, +/* 16004 */ {(12<<2)|2,{111,77,0}}, +/* 16005 */ {(12<<2)|2,{111,77,0}}, +/* 16006 */ {(12<<2)|2,{111,77,0}}, +/* 16007 */ {(12<<2)|2,{111,77,0}}, +/* 16008 */ {(12<<2)|2,{111,77,0}}, +/* 16009 */ {(12<<2)|2,{111,77,0}}, +/* 16010 */ {(12<<2)|2,{111,77,0}}, +/* 16011 */ {(12<<2)|2,{111,77,0}}, +/* 16012 */ {(12<<2)|2,{111,77,0}}, +/* 16013 */ {(12<<2)|2,{111,77,0}}, +/* 16014 */ {(12<<2)|2,{111,77,0}}, +/* 16015 */ {(12<<2)|2,{111,77,0}}, +/* 16016 */ {(12<<2)|2,{111,78,0}}, +/* 16017 */ {(12<<2)|2,{111,78,0}}, +/* 16018 */ {(12<<2)|2,{111,78,0}}, +/* 16019 */ {(12<<2)|2,{111,78,0}}, +/* 16020 */ {(12<<2)|2,{111,78,0}}, +/* 16021 */ {(12<<2)|2,{111,78,0}}, +/* 16022 */ {(12<<2)|2,{111,78,0}}, +/* 16023 */ {(12<<2)|2,{111,78,0}}, +/* 16024 */ {(12<<2)|2,{111,78,0}}, +/* 16025 */ {(12<<2)|2,{111,78,0}}, +/* 16026 */ {(12<<2)|2,{111,78,0}}, +/* 16027 */ {(12<<2)|2,{111,78,0}}, +/* 16028 */ {(12<<2)|2,{111,78,0}}, +/* 16029 */ {(12<<2)|2,{111,78,0}}, +/* 16030 */ {(12<<2)|2,{111,78,0}}, +/* 16031 */ {(12<<2)|2,{111,78,0}}, +/* 16032 */ {(12<<2)|2,{111,79,0}}, +/* 16033 */ {(12<<2)|2,{111,79,0}}, +/* 16034 */ {(12<<2)|2,{111,79,0}}, +/* 16035 */ {(12<<2)|2,{111,79,0}}, +/* 16036 */ {(12<<2)|2,{111,79,0}}, +/* 16037 */ {(12<<2)|2,{111,79,0}}, +/* 16038 */ {(12<<2)|2,{111,79,0}}, +/* 16039 */ {(12<<2)|2,{111,79,0}}, +/* 16040 */ {(12<<2)|2,{111,79,0}}, +/* 16041 */ {(12<<2)|2,{111,79,0}}, +/* 16042 */ {(12<<2)|2,{111,79,0}}, +/* 16043 */ {(12<<2)|2,{111,79,0}}, +/* 16044 */ {(12<<2)|2,{111,79,0}}, +/* 16045 */ {(12<<2)|2,{111,79,0}}, +/* 16046 */ {(12<<2)|2,{111,79,0}}, +/* 16047 */ {(12<<2)|2,{111,79,0}}, +/* 16048 */ {(12<<2)|2,{111,80,0}}, +/* 16049 */ {(12<<2)|2,{111,80,0}}, +/* 16050 */ {(12<<2)|2,{111,80,0}}, +/* 16051 */ {(12<<2)|2,{111,80,0}}, +/* 16052 */ {(12<<2)|2,{111,80,0}}, +/* 16053 */ {(12<<2)|2,{111,80,0}}, +/* 16054 */ {(12<<2)|2,{111,80,0}}, +/* 16055 */ {(12<<2)|2,{111,80,0}}, +/* 16056 */ {(12<<2)|2,{111,80,0}}, +/* 16057 */ {(12<<2)|2,{111,80,0}}, +/* 16058 */ {(12<<2)|2,{111,80,0}}, +/* 16059 */ {(12<<2)|2,{111,80,0}}, +/* 16060 */ {(12<<2)|2,{111,80,0}}, +/* 16061 */ {(12<<2)|2,{111,80,0}}, +/* 16062 */ {(12<<2)|2,{111,80,0}}, +/* 16063 */ {(12<<2)|2,{111,80,0}}, +/* 16064 */ {(12<<2)|2,{111,81,0}}, +/* 16065 */ {(12<<2)|2,{111,81,0}}, +/* 16066 */ {(12<<2)|2,{111,81,0}}, +/* 16067 */ {(12<<2)|2,{111,81,0}}, +/* 16068 */ {(12<<2)|2,{111,81,0}}, +/* 16069 */ {(12<<2)|2,{111,81,0}}, +/* 16070 */ {(12<<2)|2,{111,81,0}}, +/* 16071 */ {(12<<2)|2,{111,81,0}}, +/* 16072 */ {(12<<2)|2,{111,81,0}}, +/* 16073 */ {(12<<2)|2,{111,81,0}}, +/* 16074 */ {(12<<2)|2,{111,81,0}}, +/* 16075 */ {(12<<2)|2,{111,81,0}}, +/* 16076 */ {(12<<2)|2,{111,81,0}}, +/* 16077 */ {(12<<2)|2,{111,81,0}}, +/* 16078 */ {(12<<2)|2,{111,81,0}}, +/* 16079 */ {(12<<2)|2,{111,81,0}}, +/* 16080 */ {(12<<2)|2,{111,82,0}}, +/* 16081 */ {(12<<2)|2,{111,82,0}}, +/* 16082 */ {(12<<2)|2,{111,82,0}}, +/* 16083 */ {(12<<2)|2,{111,82,0}}, +/* 16084 */ {(12<<2)|2,{111,82,0}}, +/* 16085 */ {(12<<2)|2,{111,82,0}}, +/* 16086 */ {(12<<2)|2,{111,82,0}}, +/* 16087 */ {(12<<2)|2,{111,82,0}}, +/* 16088 */ {(12<<2)|2,{111,82,0}}, +/* 16089 */ {(12<<2)|2,{111,82,0}}, +/* 16090 */ {(12<<2)|2,{111,82,0}}, +/* 16091 */ {(12<<2)|2,{111,82,0}}, +/* 16092 */ {(12<<2)|2,{111,82,0}}, +/* 16093 */ {(12<<2)|2,{111,82,0}}, +/* 16094 */ {(12<<2)|2,{111,82,0}}, +/* 16095 */ {(12<<2)|2,{111,82,0}}, +/* 16096 */ {(12<<2)|2,{111,83,0}}, +/* 16097 */ {(12<<2)|2,{111,83,0}}, +/* 16098 */ {(12<<2)|2,{111,83,0}}, +/* 16099 */ {(12<<2)|2,{111,83,0}}, +/* 16100 */ {(12<<2)|2,{111,83,0}}, +/* 16101 */ {(12<<2)|2,{111,83,0}}, +/* 16102 */ {(12<<2)|2,{111,83,0}}, +/* 16103 */ {(12<<2)|2,{111,83,0}}, +/* 16104 */ {(12<<2)|2,{111,83,0}}, +/* 16105 */ {(12<<2)|2,{111,83,0}}, +/* 16106 */ {(12<<2)|2,{111,83,0}}, +/* 16107 */ {(12<<2)|2,{111,83,0}}, +/* 16108 */ {(12<<2)|2,{111,83,0}}, +/* 16109 */ {(12<<2)|2,{111,83,0}}, +/* 16110 */ {(12<<2)|2,{111,83,0}}, +/* 16111 */ {(12<<2)|2,{111,83,0}}, +/* 16112 */ {(12<<2)|2,{111,84,0}}, +/* 16113 */ {(12<<2)|2,{111,84,0}}, +/* 16114 */ {(12<<2)|2,{111,84,0}}, +/* 16115 */ {(12<<2)|2,{111,84,0}}, +/* 16116 */ {(12<<2)|2,{111,84,0}}, +/* 16117 */ {(12<<2)|2,{111,84,0}}, +/* 16118 */ {(12<<2)|2,{111,84,0}}, +/* 16119 */ {(12<<2)|2,{111,84,0}}, +/* 16120 */ {(12<<2)|2,{111,84,0}}, +/* 16121 */ {(12<<2)|2,{111,84,0}}, +/* 16122 */ {(12<<2)|2,{111,84,0}}, +/* 16123 */ {(12<<2)|2,{111,84,0}}, +/* 16124 */ {(12<<2)|2,{111,84,0}}, +/* 16125 */ {(12<<2)|2,{111,84,0}}, +/* 16126 */ {(12<<2)|2,{111,84,0}}, +/* 16127 */ {(12<<2)|2,{111,84,0}}, +/* 16128 */ {(12<<2)|2,{111,85,0}}, +/* 16129 */ {(12<<2)|2,{111,85,0}}, +/* 16130 */ {(12<<2)|2,{111,85,0}}, +/* 16131 */ {(12<<2)|2,{111,85,0}}, +/* 16132 */ {(12<<2)|2,{111,85,0}}, +/* 16133 */ {(12<<2)|2,{111,85,0}}, +/* 16134 */ {(12<<2)|2,{111,85,0}}, +/* 16135 */ {(12<<2)|2,{111,85,0}}, +/* 16136 */ {(12<<2)|2,{111,85,0}}, +/* 16137 */ {(12<<2)|2,{111,85,0}}, +/* 16138 */ {(12<<2)|2,{111,85,0}}, +/* 16139 */ {(12<<2)|2,{111,85,0}}, +/* 16140 */ {(12<<2)|2,{111,85,0}}, +/* 16141 */ {(12<<2)|2,{111,85,0}}, +/* 16142 */ {(12<<2)|2,{111,85,0}}, +/* 16143 */ {(12<<2)|2,{111,85,0}}, +/* 16144 */ {(12<<2)|2,{111,86,0}}, +/* 16145 */ {(12<<2)|2,{111,86,0}}, +/* 16146 */ {(12<<2)|2,{111,86,0}}, +/* 16147 */ {(12<<2)|2,{111,86,0}}, +/* 16148 */ {(12<<2)|2,{111,86,0}}, +/* 16149 */ {(12<<2)|2,{111,86,0}}, +/* 16150 */ {(12<<2)|2,{111,86,0}}, +/* 16151 */ {(12<<2)|2,{111,86,0}}, +/* 16152 */ {(12<<2)|2,{111,86,0}}, +/* 16153 */ {(12<<2)|2,{111,86,0}}, +/* 16154 */ {(12<<2)|2,{111,86,0}}, +/* 16155 */ {(12<<2)|2,{111,86,0}}, +/* 16156 */ {(12<<2)|2,{111,86,0}}, +/* 16157 */ {(12<<2)|2,{111,86,0}}, +/* 16158 */ {(12<<2)|2,{111,86,0}}, +/* 16159 */ {(12<<2)|2,{111,86,0}}, +/* 16160 */ {(12<<2)|2,{111,87,0}}, +/* 16161 */ {(12<<2)|2,{111,87,0}}, +/* 16162 */ {(12<<2)|2,{111,87,0}}, +/* 16163 */ {(12<<2)|2,{111,87,0}}, +/* 16164 */ {(12<<2)|2,{111,87,0}}, +/* 16165 */ {(12<<2)|2,{111,87,0}}, +/* 16166 */ {(12<<2)|2,{111,87,0}}, +/* 16167 */ {(12<<2)|2,{111,87,0}}, +/* 16168 */ {(12<<2)|2,{111,87,0}}, +/* 16169 */ {(12<<2)|2,{111,87,0}}, +/* 16170 */ {(12<<2)|2,{111,87,0}}, +/* 16171 */ {(12<<2)|2,{111,87,0}}, +/* 16172 */ {(12<<2)|2,{111,87,0}}, +/* 16173 */ {(12<<2)|2,{111,87,0}}, +/* 16174 */ {(12<<2)|2,{111,87,0}}, +/* 16175 */ {(12<<2)|2,{111,87,0}}, +/* 16176 */ {(12<<2)|2,{111,89,0}}, +/* 16177 */ {(12<<2)|2,{111,89,0}}, +/* 16178 */ {(12<<2)|2,{111,89,0}}, +/* 16179 */ {(12<<2)|2,{111,89,0}}, +/* 16180 */ {(12<<2)|2,{111,89,0}}, +/* 16181 */ {(12<<2)|2,{111,89,0}}, +/* 16182 */ {(12<<2)|2,{111,89,0}}, +/* 16183 */ {(12<<2)|2,{111,89,0}}, +/* 16184 */ {(12<<2)|2,{111,89,0}}, +/* 16185 */ {(12<<2)|2,{111,89,0}}, +/* 16186 */ {(12<<2)|2,{111,89,0}}, +/* 16187 */ {(12<<2)|2,{111,89,0}}, +/* 16188 */ {(12<<2)|2,{111,89,0}}, +/* 16189 */ {(12<<2)|2,{111,89,0}}, +/* 16190 */ {(12<<2)|2,{111,89,0}}, +/* 16191 */ {(12<<2)|2,{111,89,0}}, +/* 16192 */ {(12<<2)|2,{111,106,0}}, +/* 16193 */ {(12<<2)|2,{111,106,0}}, +/* 16194 */ {(12<<2)|2,{111,106,0}}, +/* 16195 */ {(12<<2)|2,{111,106,0}}, +/* 16196 */ {(12<<2)|2,{111,106,0}}, +/* 16197 */ {(12<<2)|2,{111,106,0}}, +/* 16198 */ {(12<<2)|2,{111,106,0}}, +/* 16199 */ {(12<<2)|2,{111,106,0}}, +/* 16200 */ {(12<<2)|2,{111,106,0}}, +/* 16201 */ {(12<<2)|2,{111,106,0}}, +/* 16202 */ {(12<<2)|2,{111,106,0}}, +/* 16203 */ {(12<<2)|2,{111,106,0}}, +/* 16204 */ {(12<<2)|2,{111,106,0}}, +/* 16205 */ {(12<<2)|2,{111,106,0}}, +/* 16206 */ {(12<<2)|2,{111,106,0}}, +/* 16207 */ {(12<<2)|2,{111,106,0}}, +/* 16208 */ {(12<<2)|2,{111,107,0}}, +/* 16209 */ {(12<<2)|2,{111,107,0}}, +/* 16210 */ {(12<<2)|2,{111,107,0}}, +/* 16211 */ {(12<<2)|2,{111,107,0}}, +/* 16212 */ {(12<<2)|2,{111,107,0}}, +/* 16213 */ {(12<<2)|2,{111,107,0}}, +/* 16214 */ {(12<<2)|2,{111,107,0}}, +/* 16215 */ {(12<<2)|2,{111,107,0}}, +/* 16216 */ {(12<<2)|2,{111,107,0}}, +/* 16217 */ {(12<<2)|2,{111,107,0}}, +/* 16218 */ {(12<<2)|2,{111,107,0}}, +/* 16219 */ {(12<<2)|2,{111,107,0}}, +/* 16220 */ {(12<<2)|2,{111,107,0}}, +/* 16221 */ {(12<<2)|2,{111,107,0}}, +/* 16222 */ {(12<<2)|2,{111,107,0}}, +/* 16223 */ {(12<<2)|2,{111,107,0}}, +/* 16224 */ {(12<<2)|2,{111,113,0}}, +/* 16225 */ {(12<<2)|2,{111,113,0}}, +/* 16226 */ {(12<<2)|2,{111,113,0}}, +/* 16227 */ {(12<<2)|2,{111,113,0}}, +/* 16228 */ {(12<<2)|2,{111,113,0}}, +/* 16229 */ {(12<<2)|2,{111,113,0}}, +/* 16230 */ {(12<<2)|2,{111,113,0}}, +/* 16231 */ {(12<<2)|2,{111,113,0}}, +/* 16232 */ {(12<<2)|2,{111,113,0}}, +/* 16233 */ {(12<<2)|2,{111,113,0}}, +/* 16234 */ {(12<<2)|2,{111,113,0}}, +/* 16235 */ {(12<<2)|2,{111,113,0}}, +/* 16236 */ {(12<<2)|2,{111,113,0}}, +/* 16237 */ {(12<<2)|2,{111,113,0}}, +/* 16238 */ {(12<<2)|2,{111,113,0}}, +/* 16239 */ {(12<<2)|2,{111,113,0}}, +/* 16240 */ {(12<<2)|2,{111,118,0}}, +/* 16241 */ {(12<<2)|2,{111,118,0}}, +/* 16242 */ {(12<<2)|2,{111,118,0}}, +/* 16243 */ {(12<<2)|2,{111,118,0}}, +/* 16244 */ {(12<<2)|2,{111,118,0}}, +/* 16245 */ {(12<<2)|2,{111,118,0}}, +/* 16246 */ {(12<<2)|2,{111,118,0}}, +/* 16247 */ {(12<<2)|2,{111,118,0}}, +/* 16248 */ {(12<<2)|2,{111,118,0}}, +/* 16249 */ {(12<<2)|2,{111,118,0}}, +/* 16250 */ {(12<<2)|2,{111,118,0}}, +/* 16251 */ {(12<<2)|2,{111,118,0}}, +/* 16252 */ {(12<<2)|2,{111,118,0}}, +/* 16253 */ {(12<<2)|2,{111,118,0}}, +/* 16254 */ {(12<<2)|2,{111,118,0}}, +/* 16255 */ {(12<<2)|2,{111,118,0}}, +/* 16256 */ {(12<<2)|2,{111,119,0}}, +/* 16257 */ {(12<<2)|2,{111,119,0}}, +/* 16258 */ {(12<<2)|2,{111,119,0}}, +/* 16259 */ {(12<<2)|2,{111,119,0}}, +/* 16260 */ {(12<<2)|2,{111,119,0}}, +/* 16261 */ {(12<<2)|2,{111,119,0}}, +/* 16262 */ {(12<<2)|2,{111,119,0}}, +/* 16263 */ {(12<<2)|2,{111,119,0}}, +/* 16264 */ {(12<<2)|2,{111,119,0}}, +/* 16265 */ {(12<<2)|2,{111,119,0}}, +/* 16266 */ {(12<<2)|2,{111,119,0}}, +/* 16267 */ {(12<<2)|2,{111,119,0}}, +/* 16268 */ {(12<<2)|2,{111,119,0}}, +/* 16269 */ {(12<<2)|2,{111,119,0}}, +/* 16270 */ {(12<<2)|2,{111,119,0}}, +/* 16271 */ {(12<<2)|2,{111,119,0}}, +/* 16272 */ {(12<<2)|2,{111,120,0}}, +/* 16273 */ {(12<<2)|2,{111,120,0}}, +/* 16274 */ {(12<<2)|2,{111,120,0}}, +/* 16275 */ {(12<<2)|2,{111,120,0}}, +/* 16276 */ {(12<<2)|2,{111,120,0}}, +/* 16277 */ {(12<<2)|2,{111,120,0}}, +/* 16278 */ {(12<<2)|2,{111,120,0}}, +/* 16279 */ {(12<<2)|2,{111,120,0}}, +/* 16280 */ {(12<<2)|2,{111,120,0}}, +/* 16281 */ {(12<<2)|2,{111,120,0}}, +/* 16282 */ {(12<<2)|2,{111,120,0}}, +/* 16283 */ {(12<<2)|2,{111,120,0}}, +/* 16284 */ {(12<<2)|2,{111,120,0}}, +/* 16285 */ {(12<<2)|2,{111,120,0}}, +/* 16286 */ {(12<<2)|2,{111,120,0}}, +/* 16287 */ {(12<<2)|2,{111,120,0}}, +/* 16288 */ {(12<<2)|2,{111,121,0}}, +/* 16289 */ {(12<<2)|2,{111,121,0}}, +/* 16290 */ {(12<<2)|2,{111,121,0}}, +/* 16291 */ {(12<<2)|2,{111,121,0}}, +/* 16292 */ {(12<<2)|2,{111,121,0}}, +/* 16293 */ {(12<<2)|2,{111,121,0}}, +/* 16294 */ {(12<<2)|2,{111,121,0}}, +/* 16295 */ {(12<<2)|2,{111,121,0}}, +/* 16296 */ {(12<<2)|2,{111,121,0}}, +/* 16297 */ {(12<<2)|2,{111,121,0}}, +/* 16298 */ {(12<<2)|2,{111,121,0}}, +/* 16299 */ {(12<<2)|2,{111,121,0}}, +/* 16300 */ {(12<<2)|2,{111,121,0}}, +/* 16301 */ {(12<<2)|2,{111,121,0}}, +/* 16302 */ {(12<<2)|2,{111,121,0}}, +/* 16303 */ {(12<<2)|2,{111,121,0}}, +/* 16304 */ {(12<<2)|2,{111,122,0}}, +/* 16305 */ {(12<<2)|2,{111,122,0}}, +/* 16306 */ {(12<<2)|2,{111,122,0}}, +/* 16307 */ {(12<<2)|2,{111,122,0}}, +/* 16308 */ {(12<<2)|2,{111,122,0}}, +/* 16309 */ {(12<<2)|2,{111,122,0}}, +/* 16310 */ {(12<<2)|2,{111,122,0}}, +/* 16311 */ {(12<<2)|2,{111,122,0}}, +/* 16312 */ {(12<<2)|2,{111,122,0}}, +/* 16313 */ {(12<<2)|2,{111,122,0}}, +/* 16314 */ {(12<<2)|2,{111,122,0}}, +/* 16315 */ {(12<<2)|2,{111,122,0}}, +/* 16316 */ {(12<<2)|2,{111,122,0}}, +/* 16317 */ {(12<<2)|2,{111,122,0}}, +/* 16318 */ {(12<<2)|2,{111,122,0}}, +/* 16319 */ {(12<<2)|2,{111,122,0}}, +/* 16320 */ {(13<<2)|2,{111,38,0}}, +/* 16321 */ {(13<<2)|2,{111,38,0}}, +/* 16322 */ {(13<<2)|2,{111,38,0}}, +/* 16323 */ {(13<<2)|2,{111,38,0}}, +/* 16324 */ {(13<<2)|2,{111,38,0}}, +/* 16325 */ {(13<<2)|2,{111,38,0}}, +/* 16326 */ {(13<<2)|2,{111,38,0}}, +/* 16327 */ {(13<<2)|2,{111,38,0}}, +/* 16328 */ {(13<<2)|2,{111,42,0}}, +/* 16329 */ {(13<<2)|2,{111,42,0}}, +/* 16330 */ {(13<<2)|2,{111,42,0}}, +/* 16331 */ {(13<<2)|2,{111,42,0}}, +/* 16332 */ {(13<<2)|2,{111,42,0}}, +/* 16333 */ {(13<<2)|2,{111,42,0}}, +/* 16334 */ {(13<<2)|2,{111,42,0}}, +/* 16335 */ {(13<<2)|2,{111,42,0}}, +/* 16336 */ {(13<<2)|2,{111,44,0}}, +/* 16337 */ {(13<<2)|2,{111,44,0}}, +/* 16338 */ {(13<<2)|2,{111,44,0}}, +/* 16339 */ {(13<<2)|2,{111,44,0}}, +/* 16340 */ {(13<<2)|2,{111,44,0}}, +/* 16341 */ {(13<<2)|2,{111,44,0}}, +/* 16342 */ {(13<<2)|2,{111,44,0}}, +/* 16343 */ {(13<<2)|2,{111,44,0}}, +/* 16344 */ {(13<<2)|2,{111,59,0}}, +/* 16345 */ {(13<<2)|2,{111,59,0}}, +/* 16346 */ {(13<<2)|2,{111,59,0}}, +/* 16347 */ {(13<<2)|2,{111,59,0}}, +/* 16348 */ {(13<<2)|2,{111,59,0}}, +/* 16349 */ {(13<<2)|2,{111,59,0}}, +/* 16350 */ {(13<<2)|2,{111,59,0}}, +/* 16351 */ {(13<<2)|2,{111,59,0}}, +/* 16352 */ {(13<<2)|2,{111,88,0}}, +/* 16353 */ {(13<<2)|2,{111,88,0}}, +/* 16354 */ {(13<<2)|2,{111,88,0}}, +/* 16355 */ {(13<<2)|2,{111,88,0}}, +/* 16356 */ {(13<<2)|2,{111,88,0}}, +/* 16357 */ {(13<<2)|2,{111,88,0}}, +/* 16358 */ {(13<<2)|2,{111,88,0}}, +/* 16359 */ {(13<<2)|2,{111,88,0}}, +/* 16360 */ {(13<<2)|2,{111,90,0}}, +/* 16361 */ {(13<<2)|2,{111,90,0}}, +/* 16362 */ {(13<<2)|2,{111,90,0}}, +/* 16363 */ {(13<<2)|2,{111,90,0}}, +/* 16364 */ {(13<<2)|2,{111,90,0}}, +/* 16365 */ {(13<<2)|2,{111,90,0}}, +/* 16366 */ {(13<<2)|2,{111,90,0}}, +/* 16367 */ {(13<<2)|2,{111,90,0}}, +/* 16368 */ {(15<<2)|2,{111,33,0}}, +/* 16369 */ {(15<<2)|2,{111,33,0}}, +/* 16370 */ {(15<<2)|2,{111,34,0}}, +/* 16371 */ {(15<<2)|2,{111,34,0}}, +/* 16372 */ {(15<<2)|2,{111,40,0}}, +/* 16373 */ {(15<<2)|2,{111,40,0}}, +/* 16374 */ {(15<<2)|2,{111,41,0}}, +/* 16375 */ {(15<<2)|2,{111,41,0}}, +/* 16376 */ {(15<<2)|2,{111,63,0}}, +/* 16377 */ {(15<<2)|2,{111,63,0}}, +/* 16378 */ {(16<<2)|2,{111,39,0}}, +/* 16379 */ {(16<<2)|2,{111,43,0}}, +/* 16380 */ {(16<<2)|2,{111,124,0}}, +/* 16381 */ {(5<<2)|1,{111,0,0}}, +/* 16382 */ {(5<<2)|1,{111,0,0}}, +/* 16383 */ {(5<<2)|1,{111,0,0}}, +/* 16384 */ {(15<<2)|3,{115,48,48}}, +/* 16385 */ {(15<<2)|3,{115,48,48}}, +/* 16386 */ {(15<<2)|3,{115,48,49}}, +/* 16387 */ {(15<<2)|3,{115,48,49}}, +/* 16388 */ {(15<<2)|3,{115,48,50}}, +/* 16389 */ {(15<<2)|3,{115,48,50}}, +/* 16390 */ {(15<<2)|3,{115,48,97}}, +/* 16391 */ {(15<<2)|3,{115,48,97}}, +/* 16392 */ {(15<<2)|3,{115,48,99}}, +/* 16393 */ {(15<<2)|3,{115,48,99}}, +/* 16394 */ {(15<<2)|3,{115,48,101}}, +/* 16395 */ {(15<<2)|3,{115,48,101}}, +/* 16396 */ {(15<<2)|3,{115,48,105}}, +/* 16397 */ {(15<<2)|3,{115,48,105}}, +/* 16398 */ {(15<<2)|3,{115,48,111}}, +/* 16399 */ {(15<<2)|3,{115,48,111}}, +/* 16400 */ {(15<<2)|3,{115,48,115}}, +/* 16401 */ {(15<<2)|3,{115,48,115}}, +/* 16402 */ {(15<<2)|3,{115,48,116}}, +/* 16403 */ {(15<<2)|3,{115,48,116}}, +/* 16404 */ {(16<<2)|3,{115,48,32}}, +/* 16405 */ {(16<<2)|3,{115,48,37}}, +/* 16406 */ {(16<<2)|3,{115,48,45}}, +/* 16407 */ {(16<<2)|3,{115,48,46}}, +/* 16408 */ {(16<<2)|3,{115,48,47}}, +/* 16409 */ {(16<<2)|3,{115,48,51}}, +/* 16410 */ {(16<<2)|3,{115,48,52}}, +/* 16411 */ {(16<<2)|3,{115,48,53}}, +/* 16412 */ {(16<<2)|3,{115,48,54}}, +/* 16413 */ {(16<<2)|3,{115,48,55}}, +/* 16414 */ {(16<<2)|3,{115,48,56}}, +/* 16415 */ {(16<<2)|3,{115,48,57}}, +/* 16416 */ {(16<<2)|3,{115,48,61}}, +/* 16417 */ {(16<<2)|3,{115,48,65}}, +/* 16418 */ {(16<<2)|3,{115,48,95}}, +/* 16419 */ {(16<<2)|3,{115,48,98}}, +/* 16420 */ {(16<<2)|3,{115,48,100}}, +/* 16421 */ {(16<<2)|3,{115,48,102}}, +/* 16422 */ {(16<<2)|3,{115,48,103}}, +/* 16423 */ {(16<<2)|3,{115,48,104}}, +/* 16424 */ {(16<<2)|3,{115,48,108}}, +/* 16425 */ {(16<<2)|3,{115,48,109}}, +/* 16426 */ {(16<<2)|3,{115,48,110}}, +/* 16427 */ {(16<<2)|3,{115,48,112}}, +/* 16428 */ {(16<<2)|3,{115,48,114}}, +/* 16429 */ {(16<<2)|3,{115,48,117}}, +/* 16430 */ {(10<<2)|2,{115,48,0}}, +/* 16431 */ {(10<<2)|2,{115,48,0}}, +/* 16432 */ {(10<<2)|2,{115,48,0}}, +/* 16433 */ {(10<<2)|2,{115,48,0}}, +/* 16434 */ {(10<<2)|2,{115,48,0}}, +/* 16435 */ {(10<<2)|2,{115,48,0}}, +/* 16436 */ {(10<<2)|2,{115,48,0}}, +/* 16437 */ {(10<<2)|2,{115,48,0}}, +/* 16438 */ {(10<<2)|2,{115,48,0}}, +/* 16439 */ {(10<<2)|2,{115,48,0}}, +/* 16440 */ {(10<<2)|2,{115,48,0}}, +/* 16441 */ {(10<<2)|2,{115,48,0}}, +/* 16442 */ {(10<<2)|2,{115,48,0}}, +/* 16443 */ {(10<<2)|2,{115,48,0}}, +/* 16444 */ {(10<<2)|2,{115,48,0}}, +/* 16445 */ {(10<<2)|2,{115,48,0}}, +/* 16446 */ {(10<<2)|2,{115,48,0}}, +/* 16447 */ {(10<<2)|2,{115,48,0}}, +/* 16448 */ {(15<<2)|3,{115,49,48}}, +/* 16449 */ {(15<<2)|3,{115,49,48}}, +/* 16450 */ {(15<<2)|3,{115,49,49}}, +/* 16451 */ {(15<<2)|3,{115,49,49}}, +/* 16452 */ {(15<<2)|3,{115,49,50}}, +/* 16453 */ {(15<<2)|3,{115,49,50}}, +/* 16454 */ {(15<<2)|3,{115,49,97}}, +/* 16455 */ {(15<<2)|3,{115,49,97}}, +/* 16456 */ {(15<<2)|3,{115,49,99}}, +/* 16457 */ {(15<<2)|3,{115,49,99}}, +/* 16458 */ {(15<<2)|3,{115,49,101}}, +/* 16459 */ {(15<<2)|3,{115,49,101}}, +/* 16460 */ {(15<<2)|3,{115,49,105}}, +/* 16461 */ {(15<<2)|3,{115,49,105}}, +/* 16462 */ {(15<<2)|3,{115,49,111}}, +/* 16463 */ {(15<<2)|3,{115,49,111}}, +/* 16464 */ {(15<<2)|3,{115,49,115}}, +/* 16465 */ {(15<<2)|3,{115,49,115}}, +/* 16466 */ {(15<<2)|3,{115,49,116}}, +/* 16467 */ {(15<<2)|3,{115,49,116}}, +/* 16468 */ {(16<<2)|3,{115,49,32}}, +/* 16469 */ {(16<<2)|3,{115,49,37}}, +/* 16470 */ {(16<<2)|3,{115,49,45}}, +/* 16471 */ {(16<<2)|3,{115,49,46}}, +/* 16472 */ {(16<<2)|3,{115,49,47}}, +/* 16473 */ {(16<<2)|3,{115,49,51}}, +/* 16474 */ {(16<<2)|3,{115,49,52}}, +/* 16475 */ {(16<<2)|3,{115,49,53}}, +/* 16476 */ {(16<<2)|3,{115,49,54}}, +/* 16477 */ {(16<<2)|3,{115,49,55}}, +/* 16478 */ {(16<<2)|3,{115,49,56}}, +/* 16479 */ {(16<<2)|3,{115,49,57}}, +/* 16480 */ {(16<<2)|3,{115,49,61}}, +/* 16481 */ {(16<<2)|3,{115,49,65}}, +/* 16482 */ {(16<<2)|3,{115,49,95}}, +/* 16483 */ {(16<<2)|3,{115,49,98}}, +/* 16484 */ {(16<<2)|3,{115,49,100}}, +/* 16485 */ {(16<<2)|3,{115,49,102}}, +/* 16486 */ {(16<<2)|3,{115,49,103}}, +/* 16487 */ {(16<<2)|3,{115,49,104}}, +/* 16488 */ {(16<<2)|3,{115,49,108}}, +/* 16489 */ {(16<<2)|3,{115,49,109}}, +/* 16490 */ {(16<<2)|3,{115,49,110}}, +/* 16491 */ {(16<<2)|3,{115,49,112}}, +/* 16492 */ {(16<<2)|3,{115,49,114}}, +/* 16493 */ {(16<<2)|3,{115,49,117}}, +/* 16494 */ {(10<<2)|2,{115,49,0}}, +/* 16495 */ {(10<<2)|2,{115,49,0}}, +/* 16496 */ {(10<<2)|2,{115,49,0}}, +/* 16497 */ {(10<<2)|2,{115,49,0}}, +/* 16498 */ {(10<<2)|2,{115,49,0}}, +/* 16499 */ {(10<<2)|2,{115,49,0}}, +/* 16500 */ {(10<<2)|2,{115,49,0}}, +/* 16501 */ {(10<<2)|2,{115,49,0}}, +/* 16502 */ {(10<<2)|2,{115,49,0}}, +/* 16503 */ {(10<<2)|2,{115,49,0}}, +/* 16504 */ {(10<<2)|2,{115,49,0}}, +/* 16505 */ {(10<<2)|2,{115,49,0}}, +/* 16506 */ {(10<<2)|2,{115,49,0}}, +/* 16507 */ {(10<<2)|2,{115,49,0}}, +/* 16508 */ {(10<<2)|2,{115,49,0}}, +/* 16509 */ {(10<<2)|2,{115,49,0}}, +/* 16510 */ {(10<<2)|2,{115,49,0}}, +/* 16511 */ {(10<<2)|2,{115,49,0}}, +/* 16512 */ {(15<<2)|3,{115,50,48}}, +/* 16513 */ {(15<<2)|3,{115,50,48}}, +/* 16514 */ {(15<<2)|3,{115,50,49}}, +/* 16515 */ {(15<<2)|3,{115,50,49}}, +/* 16516 */ {(15<<2)|3,{115,50,50}}, +/* 16517 */ {(15<<2)|3,{115,50,50}}, +/* 16518 */ {(15<<2)|3,{115,50,97}}, +/* 16519 */ {(15<<2)|3,{115,50,97}}, +/* 16520 */ {(15<<2)|3,{115,50,99}}, +/* 16521 */ {(15<<2)|3,{115,50,99}}, +/* 16522 */ {(15<<2)|3,{115,50,101}}, +/* 16523 */ {(15<<2)|3,{115,50,101}}, +/* 16524 */ {(15<<2)|3,{115,50,105}}, +/* 16525 */ {(15<<2)|3,{115,50,105}}, +/* 16526 */ {(15<<2)|3,{115,50,111}}, +/* 16527 */ {(15<<2)|3,{115,50,111}}, +/* 16528 */ {(15<<2)|3,{115,50,115}}, +/* 16529 */ {(15<<2)|3,{115,50,115}}, +/* 16530 */ {(15<<2)|3,{115,50,116}}, +/* 16531 */ {(15<<2)|3,{115,50,116}}, +/* 16532 */ {(16<<2)|3,{115,50,32}}, +/* 16533 */ {(16<<2)|3,{115,50,37}}, +/* 16534 */ {(16<<2)|3,{115,50,45}}, +/* 16535 */ {(16<<2)|3,{115,50,46}}, +/* 16536 */ {(16<<2)|3,{115,50,47}}, +/* 16537 */ {(16<<2)|3,{115,50,51}}, +/* 16538 */ {(16<<2)|3,{115,50,52}}, +/* 16539 */ {(16<<2)|3,{115,50,53}}, +/* 16540 */ {(16<<2)|3,{115,50,54}}, +/* 16541 */ {(16<<2)|3,{115,50,55}}, +/* 16542 */ {(16<<2)|3,{115,50,56}}, +/* 16543 */ {(16<<2)|3,{115,50,57}}, +/* 16544 */ {(16<<2)|3,{115,50,61}}, +/* 16545 */ {(16<<2)|3,{115,50,65}}, +/* 16546 */ {(16<<2)|3,{115,50,95}}, +/* 16547 */ {(16<<2)|3,{115,50,98}}, +/* 16548 */ {(16<<2)|3,{115,50,100}}, +/* 16549 */ {(16<<2)|3,{115,50,102}}, +/* 16550 */ {(16<<2)|3,{115,50,103}}, +/* 16551 */ {(16<<2)|3,{115,50,104}}, +/* 16552 */ {(16<<2)|3,{115,50,108}}, +/* 16553 */ {(16<<2)|3,{115,50,109}}, +/* 16554 */ {(16<<2)|3,{115,50,110}}, +/* 16555 */ {(16<<2)|3,{115,50,112}}, +/* 16556 */ {(16<<2)|3,{115,50,114}}, +/* 16557 */ {(16<<2)|3,{115,50,117}}, +/* 16558 */ {(10<<2)|2,{115,50,0}}, +/* 16559 */ {(10<<2)|2,{115,50,0}}, +/* 16560 */ {(10<<2)|2,{115,50,0}}, +/* 16561 */ {(10<<2)|2,{115,50,0}}, +/* 16562 */ {(10<<2)|2,{115,50,0}}, +/* 16563 */ {(10<<2)|2,{115,50,0}}, +/* 16564 */ {(10<<2)|2,{115,50,0}}, +/* 16565 */ {(10<<2)|2,{115,50,0}}, +/* 16566 */ {(10<<2)|2,{115,50,0}}, +/* 16567 */ {(10<<2)|2,{115,50,0}}, +/* 16568 */ {(10<<2)|2,{115,50,0}}, +/* 16569 */ {(10<<2)|2,{115,50,0}}, +/* 16570 */ {(10<<2)|2,{115,50,0}}, +/* 16571 */ {(10<<2)|2,{115,50,0}}, +/* 16572 */ {(10<<2)|2,{115,50,0}}, +/* 16573 */ {(10<<2)|2,{115,50,0}}, +/* 16574 */ {(10<<2)|2,{115,50,0}}, +/* 16575 */ {(10<<2)|2,{115,50,0}}, +/* 16576 */ {(15<<2)|3,{115,97,48}}, +/* 16577 */ {(15<<2)|3,{115,97,48}}, +/* 16578 */ {(15<<2)|3,{115,97,49}}, +/* 16579 */ {(15<<2)|3,{115,97,49}}, +/* 16580 */ {(15<<2)|3,{115,97,50}}, +/* 16581 */ {(15<<2)|3,{115,97,50}}, +/* 16582 */ {(15<<2)|3,{115,97,97}}, +/* 16583 */ {(15<<2)|3,{115,97,97}}, +/* 16584 */ {(15<<2)|3,{115,97,99}}, +/* 16585 */ {(15<<2)|3,{115,97,99}}, +/* 16586 */ {(15<<2)|3,{115,97,101}}, +/* 16587 */ {(15<<2)|3,{115,97,101}}, +/* 16588 */ {(15<<2)|3,{115,97,105}}, +/* 16589 */ {(15<<2)|3,{115,97,105}}, +/* 16590 */ {(15<<2)|3,{115,97,111}}, +/* 16591 */ {(15<<2)|3,{115,97,111}}, +/* 16592 */ {(15<<2)|3,{115,97,115}}, +/* 16593 */ {(15<<2)|3,{115,97,115}}, +/* 16594 */ {(15<<2)|3,{115,97,116}}, +/* 16595 */ {(15<<2)|3,{115,97,116}}, +/* 16596 */ {(16<<2)|3,{115,97,32}}, +/* 16597 */ {(16<<2)|3,{115,97,37}}, +/* 16598 */ {(16<<2)|3,{115,97,45}}, +/* 16599 */ {(16<<2)|3,{115,97,46}}, +/* 16600 */ {(16<<2)|3,{115,97,47}}, +/* 16601 */ {(16<<2)|3,{115,97,51}}, +/* 16602 */ {(16<<2)|3,{115,97,52}}, +/* 16603 */ {(16<<2)|3,{115,97,53}}, +/* 16604 */ {(16<<2)|3,{115,97,54}}, +/* 16605 */ {(16<<2)|3,{115,97,55}}, +/* 16606 */ {(16<<2)|3,{115,97,56}}, +/* 16607 */ {(16<<2)|3,{115,97,57}}, +/* 16608 */ {(16<<2)|3,{115,97,61}}, +/* 16609 */ {(16<<2)|3,{115,97,65}}, +/* 16610 */ {(16<<2)|3,{115,97,95}}, +/* 16611 */ {(16<<2)|3,{115,97,98}}, +/* 16612 */ {(16<<2)|3,{115,97,100}}, +/* 16613 */ {(16<<2)|3,{115,97,102}}, +/* 16614 */ {(16<<2)|3,{115,97,103}}, +/* 16615 */ {(16<<2)|3,{115,97,104}}, +/* 16616 */ {(16<<2)|3,{115,97,108}}, +/* 16617 */ {(16<<2)|3,{115,97,109}}, +/* 16618 */ {(16<<2)|3,{115,97,110}}, +/* 16619 */ {(16<<2)|3,{115,97,112}}, +/* 16620 */ {(16<<2)|3,{115,97,114}}, +/* 16621 */ {(16<<2)|3,{115,97,117}}, +/* 16622 */ {(10<<2)|2,{115,97,0}}, +/* 16623 */ {(10<<2)|2,{115,97,0}}, +/* 16624 */ {(10<<2)|2,{115,97,0}}, +/* 16625 */ {(10<<2)|2,{115,97,0}}, +/* 16626 */ {(10<<2)|2,{115,97,0}}, +/* 16627 */ {(10<<2)|2,{115,97,0}}, +/* 16628 */ {(10<<2)|2,{115,97,0}}, +/* 16629 */ {(10<<2)|2,{115,97,0}}, +/* 16630 */ {(10<<2)|2,{115,97,0}}, +/* 16631 */ {(10<<2)|2,{115,97,0}}, +/* 16632 */ {(10<<2)|2,{115,97,0}}, +/* 16633 */ {(10<<2)|2,{115,97,0}}, +/* 16634 */ {(10<<2)|2,{115,97,0}}, +/* 16635 */ {(10<<2)|2,{115,97,0}}, +/* 16636 */ {(10<<2)|2,{115,97,0}}, +/* 16637 */ {(10<<2)|2,{115,97,0}}, +/* 16638 */ {(10<<2)|2,{115,97,0}}, +/* 16639 */ {(10<<2)|2,{115,97,0}}, +/* 16640 */ {(15<<2)|3,{115,99,48}}, +/* 16641 */ {(15<<2)|3,{115,99,48}}, +/* 16642 */ {(15<<2)|3,{115,99,49}}, +/* 16643 */ {(15<<2)|3,{115,99,49}}, +/* 16644 */ {(15<<2)|3,{115,99,50}}, +/* 16645 */ {(15<<2)|3,{115,99,50}}, +/* 16646 */ {(15<<2)|3,{115,99,97}}, +/* 16647 */ {(15<<2)|3,{115,99,97}}, +/* 16648 */ {(15<<2)|3,{115,99,99}}, +/* 16649 */ {(15<<2)|3,{115,99,99}}, +/* 16650 */ {(15<<2)|3,{115,99,101}}, +/* 16651 */ {(15<<2)|3,{115,99,101}}, +/* 16652 */ {(15<<2)|3,{115,99,105}}, +/* 16653 */ {(15<<2)|3,{115,99,105}}, +/* 16654 */ {(15<<2)|3,{115,99,111}}, +/* 16655 */ {(15<<2)|3,{115,99,111}}, +/* 16656 */ {(15<<2)|3,{115,99,115}}, +/* 16657 */ {(15<<2)|3,{115,99,115}}, +/* 16658 */ {(15<<2)|3,{115,99,116}}, +/* 16659 */ {(15<<2)|3,{115,99,116}}, +/* 16660 */ {(16<<2)|3,{115,99,32}}, +/* 16661 */ {(16<<2)|3,{115,99,37}}, +/* 16662 */ {(16<<2)|3,{115,99,45}}, +/* 16663 */ {(16<<2)|3,{115,99,46}}, +/* 16664 */ {(16<<2)|3,{115,99,47}}, +/* 16665 */ {(16<<2)|3,{115,99,51}}, +/* 16666 */ {(16<<2)|3,{115,99,52}}, +/* 16667 */ {(16<<2)|3,{115,99,53}}, +/* 16668 */ {(16<<2)|3,{115,99,54}}, +/* 16669 */ {(16<<2)|3,{115,99,55}}, +/* 16670 */ {(16<<2)|3,{115,99,56}}, +/* 16671 */ {(16<<2)|3,{115,99,57}}, +/* 16672 */ {(16<<2)|3,{115,99,61}}, +/* 16673 */ {(16<<2)|3,{115,99,65}}, +/* 16674 */ {(16<<2)|3,{115,99,95}}, +/* 16675 */ {(16<<2)|3,{115,99,98}}, +/* 16676 */ {(16<<2)|3,{115,99,100}}, +/* 16677 */ {(16<<2)|3,{115,99,102}}, +/* 16678 */ {(16<<2)|3,{115,99,103}}, +/* 16679 */ {(16<<2)|3,{115,99,104}}, +/* 16680 */ {(16<<2)|3,{115,99,108}}, +/* 16681 */ {(16<<2)|3,{115,99,109}}, +/* 16682 */ {(16<<2)|3,{115,99,110}}, +/* 16683 */ {(16<<2)|3,{115,99,112}}, +/* 16684 */ {(16<<2)|3,{115,99,114}}, +/* 16685 */ {(16<<2)|3,{115,99,117}}, +/* 16686 */ {(10<<2)|2,{115,99,0}}, +/* 16687 */ {(10<<2)|2,{115,99,0}}, +/* 16688 */ {(10<<2)|2,{115,99,0}}, +/* 16689 */ {(10<<2)|2,{115,99,0}}, +/* 16690 */ {(10<<2)|2,{115,99,0}}, +/* 16691 */ {(10<<2)|2,{115,99,0}}, +/* 16692 */ {(10<<2)|2,{115,99,0}}, +/* 16693 */ {(10<<2)|2,{115,99,0}}, +/* 16694 */ {(10<<2)|2,{115,99,0}}, +/* 16695 */ {(10<<2)|2,{115,99,0}}, +/* 16696 */ {(10<<2)|2,{115,99,0}}, +/* 16697 */ {(10<<2)|2,{115,99,0}}, +/* 16698 */ {(10<<2)|2,{115,99,0}}, +/* 16699 */ {(10<<2)|2,{115,99,0}}, +/* 16700 */ {(10<<2)|2,{115,99,0}}, +/* 16701 */ {(10<<2)|2,{115,99,0}}, +/* 16702 */ {(10<<2)|2,{115,99,0}}, +/* 16703 */ {(10<<2)|2,{115,99,0}}, +/* 16704 */ {(15<<2)|3,{115,101,48}}, +/* 16705 */ {(15<<2)|3,{115,101,48}}, +/* 16706 */ {(15<<2)|3,{115,101,49}}, +/* 16707 */ {(15<<2)|3,{115,101,49}}, +/* 16708 */ {(15<<2)|3,{115,101,50}}, +/* 16709 */ {(15<<2)|3,{115,101,50}}, +/* 16710 */ {(15<<2)|3,{115,101,97}}, +/* 16711 */ {(15<<2)|3,{115,101,97}}, +/* 16712 */ {(15<<2)|3,{115,101,99}}, +/* 16713 */ {(15<<2)|3,{115,101,99}}, +/* 16714 */ {(15<<2)|3,{115,101,101}}, +/* 16715 */ {(15<<2)|3,{115,101,101}}, +/* 16716 */ {(15<<2)|3,{115,101,105}}, +/* 16717 */ {(15<<2)|3,{115,101,105}}, +/* 16718 */ {(15<<2)|3,{115,101,111}}, +/* 16719 */ {(15<<2)|3,{115,101,111}}, +/* 16720 */ {(15<<2)|3,{115,101,115}}, +/* 16721 */ {(15<<2)|3,{115,101,115}}, +/* 16722 */ {(15<<2)|3,{115,101,116}}, +/* 16723 */ {(15<<2)|3,{115,101,116}}, +/* 16724 */ {(16<<2)|3,{115,101,32}}, +/* 16725 */ {(16<<2)|3,{115,101,37}}, +/* 16726 */ {(16<<2)|3,{115,101,45}}, +/* 16727 */ {(16<<2)|3,{115,101,46}}, +/* 16728 */ {(16<<2)|3,{115,101,47}}, +/* 16729 */ {(16<<2)|3,{115,101,51}}, +/* 16730 */ {(16<<2)|3,{115,101,52}}, +/* 16731 */ {(16<<2)|3,{115,101,53}}, +/* 16732 */ {(16<<2)|3,{115,101,54}}, +/* 16733 */ {(16<<2)|3,{115,101,55}}, +/* 16734 */ {(16<<2)|3,{115,101,56}}, +/* 16735 */ {(16<<2)|3,{115,101,57}}, +/* 16736 */ {(16<<2)|3,{115,101,61}}, +/* 16737 */ {(16<<2)|3,{115,101,65}}, +/* 16738 */ {(16<<2)|3,{115,101,95}}, +/* 16739 */ {(16<<2)|3,{115,101,98}}, +/* 16740 */ {(16<<2)|3,{115,101,100}}, +/* 16741 */ {(16<<2)|3,{115,101,102}}, +/* 16742 */ {(16<<2)|3,{115,101,103}}, +/* 16743 */ {(16<<2)|3,{115,101,104}}, +/* 16744 */ {(16<<2)|3,{115,101,108}}, +/* 16745 */ {(16<<2)|3,{115,101,109}}, +/* 16746 */ {(16<<2)|3,{115,101,110}}, +/* 16747 */ {(16<<2)|3,{115,101,112}}, +/* 16748 */ {(16<<2)|3,{115,101,114}}, +/* 16749 */ {(16<<2)|3,{115,101,117}}, +/* 16750 */ {(10<<2)|2,{115,101,0}}, +/* 16751 */ {(10<<2)|2,{115,101,0}}, +/* 16752 */ {(10<<2)|2,{115,101,0}}, +/* 16753 */ {(10<<2)|2,{115,101,0}}, +/* 16754 */ {(10<<2)|2,{115,101,0}}, +/* 16755 */ {(10<<2)|2,{115,101,0}}, +/* 16756 */ {(10<<2)|2,{115,101,0}}, +/* 16757 */ {(10<<2)|2,{115,101,0}}, +/* 16758 */ {(10<<2)|2,{115,101,0}}, +/* 16759 */ {(10<<2)|2,{115,101,0}}, +/* 16760 */ {(10<<2)|2,{115,101,0}}, +/* 16761 */ {(10<<2)|2,{115,101,0}}, +/* 16762 */ {(10<<2)|2,{115,101,0}}, +/* 16763 */ {(10<<2)|2,{115,101,0}}, +/* 16764 */ {(10<<2)|2,{115,101,0}}, +/* 16765 */ {(10<<2)|2,{115,101,0}}, +/* 16766 */ {(10<<2)|2,{115,101,0}}, +/* 16767 */ {(10<<2)|2,{115,101,0}}, +/* 16768 */ {(15<<2)|3,{115,105,48}}, +/* 16769 */ {(15<<2)|3,{115,105,48}}, +/* 16770 */ {(15<<2)|3,{115,105,49}}, +/* 16771 */ {(15<<2)|3,{115,105,49}}, +/* 16772 */ {(15<<2)|3,{115,105,50}}, +/* 16773 */ {(15<<2)|3,{115,105,50}}, +/* 16774 */ {(15<<2)|3,{115,105,97}}, +/* 16775 */ {(15<<2)|3,{115,105,97}}, +/* 16776 */ {(15<<2)|3,{115,105,99}}, +/* 16777 */ {(15<<2)|3,{115,105,99}}, +/* 16778 */ {(15<<2)|3,{115,105,101}}, +/* 16779 */ {(15<<2)|3,{115,105,101}}, +/* 16780 */ {(15<<2)|3,{115,105,105}}, +/* 16781 */ {(15<<2)|3,{115,105,105}}, +/* 16782 */ {(15<<2)|3,{115,105,111}}, +/* 16783 */ {(15<<2)|3,{115,105,111}}, +/* 16784 */ {(15<<2)|3,{115,105,115}}, +/* 16785 */ {(15<<2)|3,{115,105,115}}, +/* 16786 */ {(15<<2)|3,{115,105,116}}, +/* 16787 */ {(15<<2)|3,{115,105,116}}, +/* 16788 */ {(16<<2)|3,{115,105,32}}, +/* 16789 */ {(16<<2)|3,{115,105,37}}, +/* 16790 */ {(16<<2)|3,{115,105,45}}, +/* 16791 */ {(16<<2)|3,{115,105,46}}, +/* 16792 */ {(16<<2)|3,{115,105,47}}, +/* 16793 */ {(16<<2)|3,{115,105,51}}, +/* 16794 */ {(16<<2)|3,{115,105,52}}, +/* 16795 */ {(16<<2)|3,{115,105,53}}, +/* 16796 */ {(16<<2)|3,{115,105,54}}, +/* 16797 */ {(16<<2)|3,{115,105,55}}, +/* 16798 */ {(16<<2)|3,{115,105,56}}, +/* 16799 */ {(16<<2)|3,{115,105,57}}, +/* 16800 */ {(16<<2)|3,{115,105,61}}, +/* 16801 */ {(16<<2)|3,{115,105,65}}, +/* 16802 */ {(16<<2)|3,{115,105,95}}, +/* 16803 */ {(16<<2)|3,{115,105,98}}, +/* 16804 */ {(16<<2)|3,{115,105,100}}, +/* 16805 */ {(16<<2)|3,{115,105,102}}, +/* 16806 */ {(16<<2)|3,{115,105,103}}, +/* 16807 */ {(16<<2)|3,{115,105,104}}, +/* 16808 */ {(16<<2)|3,{115,105,108}}, +/* 16809 */ {(16<<2)|3,{115,105,109}}, +/* 16810 */ {(16<<2)|3,{115,105,110}}, +/* 16811 */ {(16<<2)|3,{115,105,112}}, +/* 16812 */ {(16<<2)|3,{115,105,114}}, +/* 16813 */ {(16<<2)|3,{115,105,117}}, +/* 16814 */ {(10<<2)|2,{115,105,0}}, +/* 16815 */ {(10<<2)|2,{115,105,0}}, +/* 16816 */ {(10<<2)|2,{115,105,0}}, +/* 16817 */ {(10<<2)|2,{115,105,0}}, +/* 16818 */ {(10<<2)|2,{115,105,0}}, +/* 16819 */ {(10<<2)|2,{115,105,0}}, +/* 16820 */ {(10<<2)|2,{115,105,0}}, +/* 16821 */ {(10<<2)|2,{115,105,0}}, +/* 16822 */ {(10<<2)|2,{115,105,0}}, +/* 16823 */ {(10<<2)|2,{115,105,0}}, +/* 16824 */ {(10<<2)|2,{115,105,0}}, +/* 16825 */ {(10<<2)|2,{115,105,0}}, +/* 16826 */ {(10<<2)|2,{115,105,0}}, +/* 16827 */ {(10<<2)|2,{115,105,0}}, +/* 16828 */ {(10<<2)|2,{115,105,0}}, +/* 16829 */ {(10<<2)|2,{115,105,0}}, +/* 16830 */ {(10<<2)|2,{115,105,0}}, +/* 16831 */ {(10<<2)|2,{115,105,0}}, +/* 16832 */ {(15<<2)|3,{115,111,48}}, +/* 16833 */ {(15<<2)|3,{115,111,48}}, +/* 16834 */ {(15<<2)|3,{115,111,49}}, +/* 16835 */ {(15<<2)|3,{115,111,49}}, +/* 16836 */ {(15<<2)|3,{115,111,50}}, +/* 16837 */ {(15<<2)|3,{115,111,50}}, +/* 16838 */ {(15<<2)|3,{115,111,97}}, +/* 16839 */ {(15<<2)|3,{115,111,97}}, +/* 16840 */ {(15<<2)|3,{115,111,99}}, +/* 16841 */ {(15<<2)|3,{115,111,99}}, +/* 16842 */ {(15<<2)|3,{115,111,101}}, +/* 16843 */ {(15<<2)|3,{115,111,101}}, +/* 16844 */ {(15<<2)|3,{115,111,105}}, +/* 16845 */ {(15<<2)|3,{115,111,105}}, +/* 16846 */ {(15<<2)|3,{115,111,111}}, +/* 16847 */ {(15<<2)|3,{115,111,111}}, +/* 16848 */ {(15<<2)|3,{115,111,115}}, +/* 16849 */ {(15<<2)|3,{115,111,115}}, +/* 16850 */ {(15<<2)|3,{115,111,116}}, +/* 16851 */ {(15<<2)|3,{115,111,116}}, +/* 16852 */ {(16<<2)|3,{115,111,32}}, +/* 16853 */ {(16<<2)|3,{115,111,37}}, +/* 16854 */ {(16<<2)|3,{115,111,45}}, +/* 16855 */ {(16<<2)|3,{115,111,46}}, +/* 16856 */ {(16<<2)|3,{115,111,47}}, +/* 16857 */ {(16<<2)|3,{115,111,51}}, +/* 16858 */ {(16<<2)|3,{115,111,52}}, +/* 16859 */ {(16<<2)|3,{115,111,53}}, +/* 16860 */ {(16<<2)|3,{115,111,54}}, +/* 16861 */ {(16<<2)|3,{115,111,55}}, +/* 16862 */ {(16<<2)|3,{115,111,56}}, +/* 16863 */ {(16<<2)|3,{115,111,57}}, +/* 16864 */ {(16<<2)|3,{115,111,61}}, +/* 16865 */ {(16<<2)|3,{115,111,65}}, +/* 16866 */ {(16<<2)|3,{115,111,95}}, +/* 16867 */ {(16<<2)|3,{115,111,98}}, +/* 16868 */ {(16<<2)|3,{115,111,100}}, +/* 16869 */ {(16<<2)|3,{115,111,102}}, +/* 16870 */ {(16<<2)|3,{115,111,103}}, +/* 16871 */ {(16<<2)|3,{115,111,104}}, +/* 16872 */ {(16<<2)|3,{115,111,108}}, +/* 16873 */ {(16<<2)|3,{115,111,109}}, +/* 16874 */ {(16<<2)|3,{115,111,110}}, +/* 16875 */ {(16<<2)|3,{115,111,112}}, +/* 16876 */ {(16<<2)|3,{115,111,114}}, +/* 16877 */ {(16<<2)|3,{115,111,117}}, +/* 16878 */ {(10<<2)|2,{115,111,0}}, +/* 16879 */ {(10<<2)|2,{115,111,0}}, +/* 16880 */ {(10<<2)|2,{115,111,0}}, +/* 16881 */ {(10<<2)|2,{115,111,0}}, +/* 16882 */ {(10<<2)|2,{115,111,0}}, +/* 16883 */ {(10<<2)|2,{115,111,0}}, +/* 16884 */ {(10<<2)|2,{115,111,0}}, +/* 16885 */ {(10<<2)|2,{115,111,0}}, +/* 16886 */ {(10<<2)|2,{115,111,0}}, +/* 16887 */ {(10<<2)|2,{115,111,0}}, +/* 16888 */ {(10<<2)|2,{115,111,0}}, +/* 16889 */ {(10<<2)|2,{115,111,0}}, +/* 16890 */ {(10<<2)|2,{115,111,0}}, +/* 16891 */ {(10<<2)|2,{115,111,0}}, +/* 16892 */ {(10<<2)|2,{115,111,0}}, +/* 16893 */ {(10<<2)|2,{115,111,0}}, +/* 16894 */ {(10<<2)|2,{115,111,0}}, +/* 16895 */ {(10<<2)|2,{115,111,0}}, +/* 16896 */ {(15<<2)|3,{115,115,48}}, +/* 16897 */ {(15<<2)|3,{115,115,48}}, +/* 16898 */ {(15<<2)|3,{115,115,49}}, +/* 16899 */ {(15<<2)|3,{115,115,49}}, +/* 16900 */ {(15<<2)|3,{115,115,50}}, +/* 16901 */ {(15<<2)|3,{115,115,50}}, +/* 16902 */ {(15<<2)|3,{115,115,97}}, +/* 16903 */ {(15<<2)|3,{115,115,97}}, +/* 16904 */ {(15<<2)|3,{115,115,99}}, +/* 16905 */ {(15<<2)|3,{115,115,99}}, +/* 16906 */ {(15<<2)|3,{115,115,101}}, +/* 16907 */ {(15<<2)|3,{115,115,101}}, +/* 16908 */ {(15<<2)|3,{115,115,105}}, +/* 16909 */ {(15<<2)|3,{115,115,105}}, +/* 16910 */ {(15<<2)|3,{115,115,111}}, +/* 16911 */ {(15<<2)|3,{115,115,111}}, +/* 16912 */ {(15<<2)|3,{115,115,115}}, +/* 16913 */ {(15<<2)|3,{115,115,115}}, +/* 16914 */ {(15<<2)|3,{115,115,116}}, +/* 16915 */ {(15<<2)|3,{115,115,116}}, +/* 16916 */ {(16<<2)|3,{115,115,32}}, +/* 16917 */ {(16<<2)|3,{115,115,37}}, +/* 16918 */ {(16<<2)|3,{115,115,45}}, +/* 16919 */ {(16<<2)|3,{115,115,46}}, +/* 16920 */ {(16<<2)|3,{115,115,47}}, +/* 16921 */ {(16<<2)|3,{115,115,51}}, +/* 16922 */ {(16<<2)|3,{115,115,52}}, +/* 16923 */ {(16<<2)|3,{115,115,53}}, +/* 16924 */ {(16<<2)|3,{115,115,54}}, +/* 16925 */ {(16<<2)|3,{115,115,55}}, +/* 16926 */ {(16<<2)|3,{115,115,56}}, +/* 16927 */ {(16<<2)|3,{115,115,57}}, +/* 16928 */ {(16<<2)|3,{115,115,61}}, +/* 16929 */ {(16<<2)|3,{115,115,65}}, +/* 16930 */ {(16<<2)|3,{115,115,95}}, +/* 16931 */ {(16<<2)|3,{115,115,98}}, +/* 16932 */ {(16<<2)|3,{115,115,100}}, +/* 16933 */ {(16<<2)|3,{115,115,102}}, +/* 16934 */ {(16<<2)|3,{115,115,103}}, +/* 16935 */ {(16<<2)|3,{115,115,104}}, +/* 16936 */ {(16<<2)|3,{115,115,108}}, +/* 16937 */ {(16<<2)|3,{115,115,109}}, +/* 16938 */ {(16<<2)|3,{115,115,110}}, +/* 16939 */ {(16<<2)|3,{115,115,112}}, +/* 16940 */ {(16<<2)|3,{115,115,114}}, +/* 16941 */ {(16<<2)|3,{115,115,117}}, +/* 16942 */ {(10<<2)|2,{115,115,0}}, +/* 16943 */ {(10<<2)|2,{115,115,0}}, +/* 16944 */ {(10<<2)|2,{115,115,0}}, +/* 16945 */ {(10<<2)|2,{115,115,0}}, +/* 16946 */ {(10<<2)|2,{115,115,0}}, +/* 16947 */ {(10<<2)|2,{115,115,0}}, +/* 16948 */ {(10<<2)|2,{115,115,0}}, +/* 16949 */ {(10<<2)|2,{115,115,0}}, +/* 16950 */ {(10<<2)|2,{115,115,0}}, +/* 16951 */ {(10<<2)|2,{115,115,0}}, +/* 16952 */ {(10<<2)|2,{115,115,0}}, +/* 16953 */ {(10<<2)|2,{115,115,0}}, +/* 16954 */ {(10<<2)|2,{115,115,0}}, +/* 16955 */ {(10<<2)|2,{115,115,0}}, +/* 16956 */ {(10<<2)|2,{115,115,0}}, +/* 16957 */ {(10<<2)|2,{115,115,0}}, +/* 16958 */ {(10<<2)|2,{115,115,0}}, +/* 16959 */ {(10<<2)|2,{115,115,0}}, +/* 16960 */ {(15<<2)|3,{115,116,48}}, +/* 16961 */ {(15<<2)|3,{115,116,48}}, +/* 16962 */ {(15<<2)|3,{115,116,49}}, +/* 16963 */ {(15<<2)|3,{115,116,49}}, +/* 16964 */ {(15<<2)|3,{115,116,50}}, +/* 16965 */ {(15<<2)|3,{115,116,50}}, +/* 16966 */ {(15<<2)|3,{115,116,97}}, +/* 16967 */ {(15<<2)|3,{115,116,97}}, +/* 16968 */ {(15<<2)|3,{115,116,99}}, +/* 16969 */ {(15<<2)|3,{115,116,99}}, +/* 16970 */ {(15<<2)|3,{115,116,101}}, +/* 16971 */ {(15<<2)|3,{115,116,101}}, +/* 16972 */ {(15<<2)|3,{115,116,105}}, +/* 16973 */ {(15<<2)|3,{115,116,105}}, +/* 16974 */ {(15<<2)|3,{115,116,111}}, +/* 16975 */ {(15<<2)|3,{115,116,111}}, +/* 16976 */ {(15<<2)|3,{115,116,115}}, +/* 16977 */ {(15<<2)|3,{115,116,115}}, +/* 16978 */ {(15<<2)|3,{115,116,116}}, +/* 16979 */ {(15<<2)|3,{115,116,116}}, +/* 16980 */ {(16<<2)|3,{115,116,32}}, +/* 16981 */ {(16<<2)|3,{115,116,37}}, +/* 16982 */ {(16<<2)|3,{115,116,45}}, +/* 16983 */ {(16<<2)|3,{115,116,46}}, +/* 16984 */ {(16<<2)|3,{115,116,47}}, +/* 16985 */ {(16<<2)|3,{115,116,51}}, +/* 16986 */ {(16<<2)|3,{115,116,52}}, +/* 16987 */ {(16<<2)|3,{115,116,53}}, +/* 16988 */ {(16<<2)|3,{115,116,54}}, +/* 16989 */ {(16<<2)|3,{115,116,55}}, +/* 16990 */ {(16<<2)|3,{115,116,56}}, +/* 16991 */ {(16<<2)|3,{115,116,57}}, +/* 16992 */ {(16<<2)|3,{115,116,61}}, +/* 16993 */ {(16<<2)|3,{115,116,65}}, +/* 16994 */ {(16<<2)|3,{115,116,95}}, +/* 16995 */ {(16<<2)|3,{115,116,98}}, +/* 16996 */ {(16<<2)|3,{115,116,100}}, +/* 16997 */ {(16<<2)|3,{115,116,102}}, +/* 16998 */ {(16<<2)|3,{115,116,103}}, +/* 16999 */ {(16<<2)|3,{115,116,104}}, +/* 17000 */ {(16<<2)|3,{115,116,108}}, +/* 17001 */ {(16<<2)|3,{115,116,109}}, +/* 17002 */ {(16<<2)|3,{115,116,110}}, +/* 17003 */ {(16<<2)|3,{115,116,112}}, +/* 17004 */ {(16<<2)|3,{115,116,114}}, +/* 17005 */ {(16<<2)|3,{115,116,117}}, +/* 17006 */ {(10<<2)|2,{115,116,0}}, +/* 17007 */ {(10<<2)|2,{115,116,0}}, +/* 17008 */ {(10<<2)|2,{115,116,0}}, +/* 17009 */ {(10<<2)|2,{115,116,0}}, +/* 17010 */ {(10<<2)|2,{115,116,0}}, +/* 17011 */ {(10<<2)|2,{115,116,0}}, +/* 17012 */ {(10<<2)|2,{115,116,0}}, +/* 17013 */ {(10<<2)|2,{115,116,0}}, +/* 17014 */ {(10<<2)|2,{115,116,0}}, +/* 17015 */ {(10<<2)|2,{115,116,0}}, +/* 17016 */ {(10<<2)|2,{115,116,0}}, +/* 17017 */ {(10<<2)|2,{115,116,0}}, +/* 17018 */ {(10<<2)|2,{115,116,0}}, +/* 17019 */ {(10<<2)|2,{115,116,0}}, +/* 17020 */ {(10<<2)|2,{115,116,0}}, +/* 17021 */ {(10<<2)|2,{115,116,0}}, +/* 17022 */ {(10<<2)|2,{115,116,0}}, +/* 17023 */ {(10<<2)|2,{115,116,0}}, +/* 17024 */ {(16<<2)|3,{115,32,48}}, +/* 17025 */ {(16<<2)|3,{115,32,49}}, +/* 17026 */ {(16<<2)|3,{115,32,50}}, +/* 17027 */ {(16<<2)|3,{115,32,97}}, +/* 17028 */ {(16<<2)|3,{115,32,99}}, +/* 17029 */ {(16<<2)|3,{115,32,101}}, +/* 17030 */ {(16<<2)|3,{115,32,105}}, +/* 17031 */ {(16<<2)|3,{115,32,111}}, +/* 17032 */ {(16<<2)|3,{115,32,115}}, +/* 17033 */ {(16<<2)|3,{115,32,116}}, +/* 17034 */ {(11<<2)|2,{115,32,0}}, +/* 17035 */ {(11<<2)|2,{115,32,0}}, +/* 17036 */ {(11<<2)|2,{115,32,0}}, +/* 17037 */ {(11<<2)|2,{115,32,0}}, +/* 17038 */ {(11<<2)|2,{115,32,0}}, +/* 17039 */ {(11<<2)|2,{115,32,0}}, +/* 17040 */ {(11<<2)|2,{115,32,0}}, +/* 17041 */ {(11<<2)|2,{115,32,0}}, +/* 17042 */ {(11<<2)|2,{115,32,0}}, +/* 17043 */ {(11<<2)|2,{115,32,0}}, +/* 17044 */ {(11<<2)|2,{115,32,0}}, +/* 17045 */ {(11<<2)|2,{115,32,0}}, +/* 17046 */ {(11<<2)|2,{115,32,0}}, +/* 17047 */ {(11<<2)|2,{115,32,0}}, +/* 17048 */ {(11<<2)|2,{115,32,0}}, +/* 17049 */ {(11<<2)|2,{115,32,0}}, +/* 17050 */ {(11<<2)|2,{115,32,0}}, +/* 17051 */ {(11<<2)|2,{115,32,0}}, +/* 17052 */ {(11<<2)|2,{115,32,0}}, +/* 17053 */ {(11<<2)|2,{115,32,0}}, +/* 17054 */ {(11<<2)|2,{115,32,0}}, +/* 17055 */ {(11<<2)|2,{115,32,0}}, +/* 17056 */ {(16<<2)|3,{115,37,48}}, +/* 17057 */ {(16<<2)|3,{115,37,49}}, +/* 17058 */ {(16<<2)|3,{115,37,50}}, +/* 17059 */ {(16<<2)|3,{115,37,97}}, +/* 17060 */ {(16<<2)|3,{115,37,99}}, +/* 17061 */ {(16<<2)|3,{115,37,101}}, +/* 17062 */ {(16<<2)|3,{115,37,105}}, +/* 17063 */ {(16<<2)|3,{115,37,111}}, +/* 17064 */ {(16<<2)|3,{115,37,115}}, +/* 17065 */ {(16<<2)|3,{115,37,116}}, +/* 17066 */ {(11<<2)|2,{115,37,0}}, +/* 17067 */ {(11<<2)|2,{115,37,0}}, +/* 17068 */ {(11<<2)|2,{115,37,0}}, +/* 17069 */ {(11<<2)|2,{115,37,0}}, +/* 17070 */ {(11<<2)|2,{115,37,0}}, +/* 17071 */ {(11<<2)|2,{115,37,0}}, +/* 17072 */ {(11<<2)|2,{115,37,0}}, +/* 17073 */ {(11<<2)|2,{115,37,0}}, +/* 17074 */ {(11<<2)|2,{115,37,0}}, +/* 17075 */ {(11<<2)|2,{115,37,0}}, +/* 17076 */ {(11<<2)|2,{115,37,0}}, +/* 17077 */ {(11<<2)|2,{115,37,0}}, +/* 17078 */ {(11<<2)|2,{115,37,0}}, +/* 17079 */ {(11<<2)|2,{115,37,0}}, +/* 17080 */ {(11<<2)|2,{115,37,0}}, +/* 17081 */ {(11<<2)|2,{115,37,0}}, +/* 17082 */ {(11<<2)|2,{115,37,0}}, +/* 17083 */ {(11<<2)|2,{115,37,0}}, +/* 17084 */ {(11<<2)|2,{115,37,0}}, +/* 17085 */ {(11<<2)|2,{115,37,0}}, +/* 17086 */ {(11<<2)|2,{115,37,0}}, +/* 17087 */ {(11<<2)|2,{115,37,0}}, +/* 17088 */ {(16<<2)|3,{115,45,48}}, +/* 17089 */ {(16<<2)|3,{115,45,49}}, +/* 17090 */ {(16<<2)|3,{115,45,50}}, +/* 17091 */ {(16<<2)|3,{115,45,97}}, +/* 17092 */ {(16<<2)|3,{115,45,99}}, +/* 17093 */ {(16<<2)|3,{115,45,101}}, +/* 17094 */ {(16<<2)|3,{115,45,105}}, +/* 17095 */ {(16<<2)|3,{115,45,111}}, +/* 17096 */ {(16<<2)|3,{115,45,115}}, +/* 17097 */ {(16<<2)|3,{115,45,116}}, +/* 17098 */ {(11<<2)|2,{115,45,0}}, +/* 17099 */ {(11<<2)|2,{115,45,0}}, +/* 17100 */ {(11<<2)|2,{115,45,0}}, +/* 17101 */ {(11<<2)|2,{115,45,0}}, +/* 17102 */ {(11<<2)|2,{115,45,0}}, +/* 17103 */ {(11<<2)|2,{115,45,0}}, +/* 17104 */ {(11<<2)|2,{115,45,0}}, +/* 17105 */ {(11<<2)|2,{115,45,0}}, +/* 17106 */ {(11<<2)|2,{115,45,0}}, +/* 17107 */ {(11<<2)|2,{115,45,0}}, +/* 17108 */ {(11<<2)|2,{115,45,0}}, +/* 17109 */ {(11<<2)|2,{115,45,0}}, +/* 17110 */ {(11<<2)|2,{115,45,0}}, +/* 17111 */ {(11<<2)|2,{115,45,0}}, +/* 17112 */ {(11<<2)|2,{115,45,0}}, +/* 17113 */ {(11<<2)|2,{115,45,0}}, +/* 17114 */ {(11<<2)|2,{115,45,0}}, +/* 17115 */ {(11<<2)|2,{115,45,0}}, +/* 17116 */ {(11<<2)|2,{115,45,0}}, +/* 17117 */ {(11<<2)|2,{115,45,0}}, +/* 17118 */ {(11<<2)|2,{115,45,0}}, +/* 17119 */ {(11<<2)|2,{115,45,0}}, +/* 17120 */ {(16<<2)|3,{115,46,48}}, +/* 17121 */ {(16<<2)|3,{115,46,49}}, +/* 17122 */ {(16<<2)|3,{115,46,50}}, +/* 17123 */ {(16<<2)|3,{115,46,97}}, +/* 17124 */ {(16<<2)|3,{115,46,99}}, +/* 17125 */ {(16<<2)|3,{115,46,101}}, +/* 17126 */ {(16<<2)|3,{115,46,105}}, +/* 17127 */ {(16<<2)|3,{115,46,111}}, +/* 17128 */ {(16<<2)|3,{115,46,115}}, +/* 17129 */ {(16<<2)|3,{115,46,116}}, +/* 17130 */ {(11<<2)|2,{115,46,0}}, +/* 17131 */ {(11<<2)|2,{115,46,0}}, +/* 17132 */ {(11<<2)|2,{115,46,0}}, +/* 17133 */ {(11<<2)|2,{115,46,0}}, +/* 17134 */ {(11<<2)|2,{115,46,0}}, +/* 17135 */ {(11<<2)|2,{115,46,0}}, +/* 17136 */ {(11<<2)|2,{115,46,0}}, +/* 17137 */ {(11<<2)|2,{115,46,0}}, +/* 17138 */ {(11<<2)|2,{115,46,0}}, +/* 17139 */ {(11<<2)|2,{115,46,0}}, +/* 17140 */ {(11<<2)|2,{115,46,0}}, +/* 17141 */ {(11<<2)|2,{115,46,0}}, +/* 17142 */ {(11<<2)|2,{115,46,0}}, +/* 17143 */ {(11<<2)|2,{115,46,0}}, +/* 17144 */ {(11<<2)|2,{115,46,0}}, +/* 17145 */ {(11<<2)|2,{115,46,0}}, +/* 17146 */ {(11<<2)|2,{115,46,0}}, +/* 17147 */ {(11<<2)|2,{115,46,0}}, +/* 17148 */ {(11<<2)|2,{115,46,0}}, +/* 17149 */ {(11<<2)|2,{115,46,0}}, +/* 17150 */ {(11<<2)|2,{115,46,0}}, +/* 17151 */ {(11<<2)|2,{115,46,0}}, +/* 17152 */ {(16<<2)|3,{115,47,48}}, +/* 17153 */ {(16<<2)|3,{115,47,49}}, +/* 17154 */ {(16<<2)|3,{115,47,50}}, +/* 17155 */ {(16<<2)|3,{115,47,97}}, +/* 17156 */ {(16<<2)|3,{115,47,99}}, +/* 17157 */ {(16<<2)|3,{115,47,101}}, +/* 17158 */ {(16<<2)|3,{115,47,105}}, +/* 17159 */ {(16<<2)|3,{115,47,111}}, +/* 17160 */ {(16<<2)|3,{115,47,115}}, +/* 17161 */ {(16<<2)|3,{115,47,116}}, +/* 17162 */ {(11<<2)|2,{115,47,0}}, +/* 17163 */ {(11<<2)|2,{115,47,0}}, +/* 17164 */ {(11<<2)|2,{115,47,0}}, +/* 17165 */ {(11<<2)|2,{115,47,0}}, +/* 17166 */ {(11<<2)|2,{115,47,0}}, +/* 17167 */ {(11<<2)|2,{115,47,0}}, +/* 17168 */ {(11<<2)|2,{115,47,0}}, +/* 17169 */ {(11<<2)|2,{115,47,0}}, +/* 17170 */ {(11<<2)|2,{115,47,0}}, +/* 17171 */ {(11<<2)|2,{115,47,0}}, +/* 17172 */ {(11<<2)|2,{115,47,0}}, +/* 17173 */ {(11<<2)|2,{115,47,0}}, +/* 17174 */ {(11<<2)|2,{115,47,0}}, +/* 17175 */ {(11<<2)|2,{115,47,0}}, +/* 17176 */ {(11<<2)|2,{115,47,0}}, +/* 17177 */ {(11<<2)|2,{115,47,0}}, +/* 17178 */ {(11<<2)|2,{115,47,0}}, +/* 17179 */ {(11<<2)|2,{115,47,0}}, +/* 17180 */ {(11<<2)|2,{115,47,0}}, +/* 17181 */ {(11<<2)|2,{115,47,0}}, +/* 17182 */ {(11<<2)|2,{115,47,0}}, +/* 17183 */ {(11<<2)|2,{115,47,0}}, +/* 17184 */ {(16<<2)|3,{115,51,48}}, +/* 17185 */ {(16<<2)|3,{115,51,49}}, +/* 17186 */ {(16<<2)|3,{115,51,50}}, +/* 17187 */ {(16<<2)|3,{115,51,97}}, +/* 17188 */ {(16<<2)|3,{115,51,99}}, +/* 17189 */ {(16<<2)|3,{115,51,101}}, +/* 17190 */ {(16<<2)|3,{115,51,105}}, +/* 17191 */ {(16<<2)|3,{115,51,111}}, +/* 17192 */ {(16<<2)|3,{115,51,115}}, +/* 17193 */ {(16<<2)|3,{115,51,116}}, +/* 17194 */ {(11<<2)|2,{115,51,0}}, +/* 17195 */ {(11<<2)|2,{115,51,0}}, +/* 17196 */ {(11<<2)|2,{115,51,0}}, +/* 17197 */ {(11<<2)|2,{115,51,0}}, +/* 17198 */ {(11<<2)|2,{115,51,0}}, +/* 17199 */ {(11<<2)|2,{115,51,0}}, +/* 17200 */ {(11<<2)|2,{115,51,0}}, +/* 17201 */ {(11<<2)|2,{115,51,0}}, +/* 17202 */ {(11<<2)|2,{115,51,0}}, +/* 17203 */ {(11<<2)|2,{115,51,0}}, +/* 17204 */ {(11<<2)|2,{115,51,0}}, +/* 17205 */ {(11<<2)|2,{115,51,0}}, +/* 17206 */ {(11<<2)|2,{115,51,0}}, +/* 17207 */ {(11<<2)|2,{115,51,0}}, +/* 17208 */ {(11<<2)|2,{115,51,0}}, +/* 17209 */ {(11<<2)|2,{115,51,0}}, +/* 17210 */ {(11<<2)|2,{115,51,0}}, +/* 17211 */ {(11<<2)|2,{115,51,0}}, +/* 17212 */ {(11<<2)|2,{115,51,0}}, +/* 17213 */ {(11<<2)|2,{115,51,0}}, +/* 17214 */ {(11<<2)|2,{115,51,0}}, +/* 17215 */ {(11<<2)|2,{115,51,0}}, +/* 17216 */ {(16<<2)|3,{115,52,48}}, +/* 17217 */ {(16<<2)|3,{115,52,49}}, +/* 17218 */ {(16<<2)|3,{115,52,50}}, +/* 17219 */ {(16<<2)|3,{115,52,97}}, +/* 17220 */ {(16<<2)|3,{115,52,99}}, +/* 17221 */ {(16<<2)|3,{115,52,101}}, +/* 17222 */ {(16<<2)|3,{115,52,105}}, +/* 17223 */ {(16<<2)|3,{115,52,111}}, +/* 17224 */ {(16<<2)|3,{115,52,115}}, +/* 17225 */ {(16<<2)|3,{115,52,116}}, +/* 17226 */ {(11<<2)|2,{115,52,0}}, +/* 17227 */ {(11<<2)|2,{115,52,0}}, +/* 17228 */ {(11<<2)|2,{115,52,0}}, +/* 17229 */ {(11<<2)|2,{115,52,0}}, +/* 17230 */ {(11<<2)|2,{115,52,0}}, +/* 17231 */ {(11<<2)|2,{115,52,0}}, +/* 17232 */ {(11<<2)|2,{115,52,0}}, +/* 17233 */ {(11<<2)|2,{115,52,0}}, +/* 17234 */ {(11<<2)|2,{115,52,0}}, +/* 17235 */ {(11<<2)|2,{115,52,0}}, +/* 17236 */ {(11<<2)|2,{115,52,0}}, +/* 17237 */ {(11<<2)|2,{115,52,0}}, +/* 17238 */ {(11<<2)|2,{115,52,0}}, +/* 17239 */ {(11<<2)|2,{115,52,0}}, +/* 17240 */ {(11<<2)|2,{115,52,0}}, +/* 17241 */ {(11<<2)|2,{115,52,0}}, +/* 17242 */ {(11<<2)|2,{115,52,0}}, +/* 17243 */ {(11<<2)|2,{115,52,0}}, +/* 17244 */ {(11<<2)|2,{115,52,0}}, +/* 17245 */ {(11<<2)|2,{115,52,0}}, +/* 17246 */ {(11<<2)|2,{115,52,0}}, +/* 17247 */ {(11<<2)|2,{115,52,0}}, +/* 17248 */ {(16<<2)|3,{115,53,48}}, +/* 17249 */ {(16<<2)|3,{115,53,49}}, +/* 17250 */ {(16<<2)|3,{115,53,50}}, +/* 17251 */ {(16<<2)|3,{115,53,97}}, +/* 17252 */ {(16<<2)|3,{115,53,99}}, +/* 17253 */ {(16<<2)|3,{115,53,101}}, +/* 17254 */ {(16<<2)|3,{115,53,105}}, +/* 17255 */ {(16<<2)|3,{115,53,111}}, +/* 17256 */ {(16<<2)|3,{115,53,115}}, +/* 17257 */ {(16<<2)|3,{115,53,116}}, +/* 17258 */ {(11<<2)|2,{115,53,0}}, +/* 17259 */ {(11<<2)|2,{115,53,0}}, +/* 17260 */ {(11<<2)|2,{115,53,0}}, +/* 17261 */ {(11<<2)|2,{115,53,0}}, +/* 17262 */ {(11<<2)|2,{115,53,0}}, +/* 17263 */ {(11<<2)|2,{115,53,0}}, +/* 17264 */ {(11<<2)|2,{115,53,0}}, +/* 17265 */ {(11<<2)|2,{115,53,0}}, +/* 17266 */ {(11<<2)|2,{115,53,0}}, +/* 17267 */ {(11<<2)|2,{115,53,0}}, +/* 17268 */ {(11<<2)|2,{115,53,0}}, +/* 17269 */ {(11<<2)|2,{115,53,0}}, +/* 17270 */ {(11<<2)|2,{115,53,0}}, +/* 17271 */ {(11<<2)|2,{115,53,0}}, +/* 17272 */ {(11<<2)|2,{115,53,0}}, +/* 17273 */ {(11<<2)|2,{115,53,0}}, +/* 17274 */ {(11<<2)|2,{115,53,0}}, +/* 17275 */ {(11<<2)|2,{115,53,0}}, +/* 17276 */ {(11<<2)|2,{115,53,0}}, +/* 17277 */ {(11<<2)|2,{115,53,0}}, +/* 17278 */ {(11<<2)|2,{115,53,0}}, +/* 17279 */ {(11<<2)|2,{115,53,0}}, +/* 17280 */ {(16<<2)|3,{115,54,48}}, +/* 17281 */ {(16<<2)|3,{115,54,49}}, +/* 17282 */ {(16<<2)|3,{115,54,50}}, +/* 17283 */ {(16<<2)|3,{115,54,97}}, +/* 17284 */ {(16<<2)|3,{115,54,99}}, +/* 17285 */ {(16<<2)|3,{115,54,101}}, +/* 17286 */ {(16<<2)|3,{115,54,105}}, +/* 17287 */ {(16<<2)|3,{115,54,111}}, +/* 17288 */ {(16<<2)|3,{115,54,115}}, +/* 17289 */ {(16<<2)|3,{115,54,116}}, +/* 17290 */ {(11<<2)|2,{115,54,0}}, +/* 17291 */ {(11<<2)|2,{115,54,0}}, +/* 17292 */ {(11<<2)|2,{115,54,0}}, +/* 17293 */ {(11<<2)|2,{115,54,0}}, +/* 17294 */ {(11<<2)|2,{115,54,0}}, +/* 17295 */ {(11<<2)|2,{115,54,0}}, +/* 17296 */ {(11<<2)|2,{115,54,0}}, +/* 17297 */ {(11<<2)|2,{115,54,0}}, +/* 17298 */ {(11<<2)|2,{115,54,0}}, +/* 17299 */ {(11<<2)|2,{115,54,0}}, +/* 17300 */ {(11<<2)|2,{115,54,0}}, +/* 17301 */ {(11<<2)|2,{115,54,0}}, +/* 17302 */ {(11<<2)|2,{115,54,0}}, +/* 17303 */ {(11<<2)|2,{115,54,0}}, +/* 17304 */ {(11<<2)|2,{115,54,0}}, +/* 17305 */ {(11<<2)|2,{115,54,0}}, +/* 17306 */ {(11<<2)|2,{115,54,0}}, +/* 17307 */ {(11<<2)|2,{115,54,0}}, +/* 17308 */ {(11<<2)|2,{115,54,0}}, +/* 17309 */ {(11<<2)|2,{115,54,0}}, +/* 17310 */ {(11<<2)|2,{115,54,0}}, +/* 17311 */ {(11<<2)|2,{115,54,0}}, +/* 17312 */ {(16<<2)|3,{115,55,48}}, +/* 17313 */ {(16<<2)|3,{115,55,49}}, +/* 17314 */ {(16<<2)|3,{115,55,50}}, +/* 17315 */ {(16<<2)|3,{115,55,97}}, +/* 17316 */ {(16<<2)|3,{115,55,99}}, +/* 17317 */ {(16<<2)|3,{115,55,101}}, +/* 17318 */ {(16<<2)|3,{115,55,105}}, +/* 17319 */ {(16<<2)|3,{115,55,111}}, +/* 17320 */ {(16<<2)|3,{115,55,115}}, +/* 17321 */ {(16<<2)|3,{115,55,116}}, +/* 17322 */ {(11<<2)|2,{115,55,0}}, +/* 17323 */ {(11<<2)|2,{115,55,0}}, +/* 17324 */ {(11<<2)|2,{115,55,0}}, +/* 17325 */ {(11<<2)|2,{115,55,0}}, +/* 17326 */ {(11<<2)|2,{115,55,0}}, +/* 17327 */ {(11<<2)|2,{115,55,0}}, +/* 17328 */ {(11<<2)|2,{115,55,0}}, +/* 17329 */ {(11<<2)|2,{115,55,0}}, +/* 17330 */ {(11<<2)|2,{115,55,0}}, +/* 17331 */ {(11<<2)|2,{115,55,0}}, +/* 17332 */ {(11<<2)|2,{115,55,0}}, +/* 17333 */ {(11<<2)|2,{115,55,0}}, +/* 17334 */ {(11<<2)|2,{115,55,0}}, +/* 17335 */ {(11<<2)|2,{115,55,0}}, +/* 17336 */ {(11<<2)|2,{115,55,0}}, +/* 17337 */ {(11<<2)|2,{115,55,0}}, +/* 17338 */ {(11<<2)|2,{115,55,0}}, +/* 17339 */ {(11<<2)|2,{115,55,0}}, +/* 17340 */ {(11<<2)|2,{115,55,0}}, +/* 17341 */ {(11<<2)|2,{115,55,0}}, +/* 17342 */ {(11<<2)|2,{115,55,0}}, +/* 17343 */ {(11<<2)|2,{115,55,0}}, +/* 17344 */ {(16<<2)|3,{115,56,48}}, +/* 17345 */ {(16<<2)|3,{115,56,49}}, +/* 17346 */ {(16<<2)|3,{115,56,50}}, +/* 17347 */ {(16<<2)|3,{115,56,97}}, +/* 17348 */ {(16<<2)|3,{115,56,99}}, +/* 17349 */ {(16<<2)|3,{115,56,101}}, +/* 17350 */ {(16<<2)|3,{115,56,105}}, +/* 17351 */ {(16<<2)|3,{115,56,111}}, +/* 17352 */ {(16<<2)|3,{115,56,115}}, +/* 17353 */ {(16<<2)|3,{115,56,116}}, +/* 17354 */ {(11<<2)|2,{115,56,0}}, +/* 17355 */ {(11<<2)|2,{115,56,0}}, +/* 17356 */ {(11<<2)|2,{115,56,0}}, +/* 17357 */ {(11<<2)|2,{115,56,0}}, +/* 17358 */ {(11<<2)|2,{115,56,0}}, +/* 17359 */ {(11<<2)|2,{115,56,0}}, +/* 17360 */ {(11<<2)|2,{115,56,0}}, +/* 17361 */ {(11<<2)|2,{115,56,0}}, +/* 17362 */ {(11<<2)|2,{115,56,0}}, +/* 17363 */ {(11<<2)|2,{115,56,0}}, +/* 17364 */ {(11<<2)|2,{115,56,0}}, +/* 17365 */ {(11<<2)|2,{115,56,0}}, +/* 17366 */ {(11<<2)|2,{115,56,0}}, +/* 17367 */ {(11<<2)|2,{115,56,0}}, +/* 17368 */ {(11<<2)|2,{115,56,0}}, +/* 17369 */ {(11<<2)|2,{115,56,0}}, +/* 17370 */ {(11<<2)|2,{115,56,0}}, +/* 17371 */ {(11<<2)|2,{115,56,0}}, +/* 17372 */ {(11<<2)|2,{115,56,0}}, +/* 17373 */ {(11<<2)|2,{115,56,0}}, +/* 17374 */ {(11<<2)|2,{115,56,0}}, +/* 17375 */ {(11<<2)|2,{115,56,0}}, +/* 17376 */ {(16<<2)|3,{115,57,48}}, +/* 17377 */ {(16<<2)|3,{115,57,49}}, +/* 17378 */ {(16<<2)|3,{115,57,50}}, +/* 17379 */ {(16<<2)|3,{115,57,97}}, +/* 17380 */ {(16<<2)|3,{115,57,99}}, +/* 17381 */ {(16<<2)|3,{115,57,101}}, +/* 17382 */ {(16<<2)|3,{115,57,105}}, +/* 17383 */ {(16<<2)|3,{115,57,111}}, +/* 17384 */ {(16<<2)|3,{115,57,115}}, +/* 17385 */ {(16<<2)|3,{115,57,116}}, +/* 17386 */ {(11<<2)|2,{115,57,0}}, +/* 17387 */ {(11<<2)|2,{115,57,0}}, +/* 17388 */ {(11<<2)|2,{115,57,0}}, +/* 17389 */ {(11<<2)|2,{115,57,0}}, +/* 17390 */ {(11<<2)|2,{115,57,0}}, +/* 17391 */ {(11<<2)|2,{115,57,0}}, +/* 17392 */ {(11<<2)|2,{115,57,0}}, +/* 17393 */ {(11<<2)|2,{115,57,0}}, +/* 17394 */ {(11<<2)|2,{115,57,0}}, +/* 17395 */ {(11<<2)|2,{115,57,0}}, +/* 17396 */ {(11<<2)|2,{115,57,0}}, +/* 17397 */ {(11<<2)|2,{115,57,0}}, +/* 17398 */ {(11<<2)|2,{115,57,0}}, +/* 17399 */ {(11<<2)|2,{115,57,0}}, +/* 17400 */ {(11<<2)|2,{115,57,0}}, +/* 17401 */ {(11<<2)|2,{115,57,0}}, +/* 17402 */ {(11<<2)|2,{115,57,0}}, +/* 17403 */ {(11<<2)|2,{115,57,0}}, +/* 17404 */ {(11<<2)|2,{115,57,0}}, +/* 17405 */ {(11<<2)|2,{115,57,0}}, +/* 17406 */ {(11<<2)|2,{115,57,0}}, +/* 17407 */ {(11<<2)|2,{115,57,0}}, +/* 17408 */ {(16<<2)|3,{115,61,48}}, +/* 17409 */ {(16<<2)|3,{115,61,49}}, +/* 17410 */ {(16<<2)|3,{115,61,50}}, +/* 17411 */ {(16<<2)|3,{115,61,97}}, +/* 17412 */ {(16<<2)|3,{115,61,99}}, +/* 17413 */ {(16<<2)|3,{115,61,101}}, +/* 17414 */ {(16<<2)|3,{115,61,105}}, +/* 17415 */ {(16<<2)|3,{115,61,111}}, +/* 17416 */ {(16<<2)|3,{115,61,115}}, +/* 17417 */ {(16<<2)|3,{115,61,116}}, +/* 17418 */ {(11<<2)|2,{115,61,0}}, +/* 17419 */ {(11<<2)|2,{115,61,0}}, +/* 17420 */ {(11<<2)|2,{115,61,0}}, +/* 17421 */ {(11<<2)|2,{115,61,0}}, +/* 17422 */ {(11<<2)|2,{115,61,0}}, +/* 17423 */ {(11<<2)|2,{115,61,0}}, +/* 17424 */ {(11<<2)|2,{115,61,0}}, +/* 17425 */ {(11<<2)|2,{115,61,0}}, +/* 17426 */ {(11<<2)|2,{115,61,0}}, +/* 17427 */ {(11<<2)|2,{115,61,0}}, +/* 17428 */ {(11<<2)|2,{115,61,0}}, +/* 17429 */ {(11<<2)|2,{115,61,0}}, +/* 17430 */ {(11<<2)|2,{115,61,0}}, +/* 17431 */ {(11<<2)|2,{115,61,0}}, +/* 17432 */ {(11<<2)|2,{115,61,0}}, +/* 17433 */ {(11<<2)|2,{115,61,0}}, +/* 17434 */ {(11<<2)|2,{115,61,0}}, +/* 17435 */ {(11<<2)|2,{115,61,0}}, +/* 17436 */ {(11<<2)|2,{115,61,0}}, +/* 17437 */ {(11<<2)|2,{115,61,0}}, +/* 17438 */ {(11<<2)|2,{115,61,0}}, +/* 17439 */ {(11<<2)|2,{115,61,0}}, +/* 17440 */ {(16<<2)|3,{115,65,48}}, +/* 17441 */ {(16<<2)|3,{115,65,49}}, +/* 17442 */ {(16<<2)|3,{115,65,50}}, +/* 17443 */ {(16<<2)|3,{115,65,97}}, +/* 17444 */ {(16<<2)|3,{115,65,99}}, +/* 17445 */ {(16<<2)|3,{115,65,101}}, +/* 17446 */ {(16<<2)|3,{115,65,105}}, +/* 17447 */ {(16<<2)|3,{115,65,111}}, +/* 17448 */ {(16<<2)|3,{115,65,115}}, +/* 17449 */ {(16<<2)|3,{115,65,116}}, +/* 17450 */ {(11<<2)|2,{115,65,0}}, +/* 17451 */ {(11<<2)|2,{115,65,0}}, +/* 17452 */ {(11<<2)|2,{115,65,0}}, +/* 17453 */ {(11<<2)|2,{115,65,0}}, +/* 17454 */ {(11<<2)|2,{115,65,0}}, +/* 17455 */ {(11<<2)|2,{115,65,0}}, +/* 17456 */ {(11<<2)|2,{115,65,0}}, +/* 17457 */ {(11<<2)|2,{115,65,0}}, +/* 17458 */ {(11<<2)|2,{115,65,0}}, +/* 17459 */ {(11<<2)|2,{115,65,0}}, +/* 17460 */ {(11<<2)|2,{115,65,0}}, +/* 17461 */ {(11<<2)|2,{115,65,0}}, +/* 17462 */ {(11<<2)|2,{115,65,0}}, +/* 17463 */ {(11<<2)|2,{115,65,0}}, +/* 17464 */ {(11<<2)|2,{115,65,0}}, +/* 17465 */ {(11<<2)|2,{115,65,0}}, +/* 17466 */ {(11<<2)|2,{115,65,0}}, +/* 17467 */ {(11<<2)|2,{115,65,0}}, +/* 17468 */ {(11<<2)|2,{115,65,0}}, +/* 17469 */ {(11<<2)|2,{115,65,0}}, +/* 17470 */ {(11<<2)|2,{115,65,0}}, +/* 17471 */ {(11<<2)|2,{115,65,0}}, +/* 17472 */ {(16<<2)|3,{115,95,48}}, +/* 17473 */ {(16<<2)|3,{115,95,49}}, +/* 17474 */ {(16<<2)|3,{115,95,50}}, +/* 17475 */ {(16<<2)|3,{115,95,97}}, +/* 17476 */ {(16<<2)|3,{115,95,99}}, +/* 17477 */ {(16<<2)|3,{115,95,101}}, +/* 17478 */ {(16<<2)|3,{115,95,105}}, +/* 17479 */ {(16<<2)|3,{115,95,111}}, +/* 17480 */ {(16<<2)|3,{115,95,115}}, +/* 17481 */ {(16<<2)|3,{115,95,116}}, +/* 17482 */ {(11<<2)|2,{115,95,0}}, +/* 17483 */ {(11<<2)|2,{115,95,0}}, +/* 17484 */ {(11<<2)|2,{115,95,0}}, +/* 17485 */ {(11<<2)|2,{115,95,0}}, +/* 17486 */ {(11<<2)|2,{115,95,0}}, +/* 17487 */ {(11<<2)|2,{115,95,0}}, +/* 17488 */ {(11<<2)|2,{115,95,0}}, +/* 17489 */ {(11<<2)|2,{115,95,0}}, +/* 17490 */ {(11<<2)|2,{115,95,0}}, +/* 17491 */ {(11<<2)|2,{115,95,0}}, +/* 17492 */ {(11<<2)|2,{115,95,0}}, +/* 17493 */ {(11<<2)|2,{115,95,0}}, +/* 17494 */ {(11<<2)|2,{115,95,0}}, +/* 17495 */ {(11<<2)|2,{115,95,0}}, +/* 17496 */ {(11<<2)|2,{115,95,0}}, +/* 17497 */ {(11<<2)|2,{115,95,0}}, +/* 17498 */ {(11<<2)|2,{115,95,0}}, +/* 17499 */ {(11<<2)|2,{115,95,0}}, +/* 17500 */ {(11<<2)|2,{115,95,0}}, +/* 17501 */ {(11<<2)|2,{115,95,0}}, +/* 17502 */ {(11<<2)|2,{115,95,0}}, +/* 17503 */ {(11<<2)|2,{115,95,0}}, +/* 17504 */ {(16<<2)|3,{115,98,48}}, +/* 17505 */ {(16<<2)|3,{115,98,49}}, +/* 17506 */ {(16<<2)|3,{115,98,50}}, +/* 17507 */ {(16<<2)|3,{115,98,97}}, +/* 17508 */ {(16<<2)|3,{115,98,99}}, +/* 17509 */ {(16<<2)|3,{115,98,101}}, +/* 17510 */ {(16<<2)|3,{115,98,105}}, +/* 17511 */ {(16<<2)|3,{115,98,111}}, +/* 17512 */ {(16<<2)|3,{115,98,115}}, +/* 17513 */ {(16<<2)|3,{115,98,116}}, +/* 17514 */ {(11<<2)|2,{115,98,0}}, +/* 17515 */ {(11<<2)|2,{115,98,0}}, +/* 17516 */ {(11<<2)|2,{115,98,0}}, +/* 17517 */ {(11<<2)|2,{115,98,0}}, +/* 17518 */ {(11<<2)|2,{115,98,0}}, +/* 17519 */ {(11<<2)|2,{115,98,0}}, +/* 17520 */ {(11<<2)|2,{115,98,0}}, +/* 17521 */ {(11<<2)|2,{115,98,0}}, +/* 17522 */ {(11<<2)|2,{115,98,0}}, +/* 17523 */ {(11<<2)|2,{115,98,0}}, +/* 17524 */ {(11<<2)|2,{115,98,0}}, +/* 17525 */ {(11<<2)|2,{115,98,0}}, +/* 17526 */ {(11<<2)|2,{115,98,0}}, +/* 17527 */ {(11<<2)|2,{115,98,0}}, +/* 17528 */ {(11<<2)|2,{115,98,0}}, +/* 17529 */ {(11<<2)|2,{115,98,0}}, +/* 17530 */ {(11<<2)|2,{115,98,0}}, +/* 17531 */ {(11<<2)|2,{115,98,0}}, +/* 17532 */ {(11<<2)|2,{115,98,0}}, +/* 17533 */ {(11<<2)|2,{115,98,0}}, +/* 17534 */ {(11<<2)|2,{115,98,0}}, +/* 17535 */ {(11<<2)|2,{115,98,0}}, +/* 17536 */ {(16<<2)|3,{115,100,48}}, +/* 17537 */ {(16<<2)|3,{115,100,49}}, +/* 17538 */ {(16<<2)|3,{115,100,50}}, +/* 17539 */ {(16<<2)|3,{115,100,97}}, +/* 17540 */ {(16<<2)|3,{115,100,99}}, +/* 17541 */ {(16<<2)|3,{115,100,101}}, +/* 17542 */ {(16<<2)|3,{115,100,105}}, +/* 17543 */ {(16<<2)|3,{115,100,111}}, +/* 17544 */ {(16<<2)|3,{115,100,115}}, +/* 17545 */ {(16<<2)|3,{115,100,116}}, +/* 17546 */ {(11<<2)|2,{115,100,0}}, +/* 17547 */ {(11<<2)|2,{115,100,0}}, +/* 17548 */ {(11<<2)|2,{115,100,0}}, +/* 17549 */ {(11<<2)|2,{115,100,0}}, +/* 17550 */ {(11<<2)|2,{115,100,0}}, +/* 17551 */ {(11<<2)|2,{115,100,0}}, +/* 17552 */ {(11<<2)|2,{115,100,0}}, +/* 17553 */ {(11<<2)|2,{115,100,0}}, +/* 17554 */ {(11<<2)|2,{115,100,0}}, +/* 17555 */ {(11<<2)|2,{115,100,0}}, +/* 17556 */ {(11<<2)|2,{115,100,0}}, +/* 17557 */ {(11<<2)|2,{115,100,0}}, +/* 17558 */ {(11<<2)|2,{115,100,0}}, +/* 17559 */ {(11<<2)|2,{115,100,0}}, +/* 17560 */ {(11<<2)|2,{115,100,0}}, +/* 17561 */ {(11<<2)|2,{115,100,0}}, +/* 17562 */ {(11<<2)|2,{115,100,0}}, +/* 17563 */ {(11<<2)|2,{115,100,0}}, +/* 17564 */ {(11<<2)|2,{115,100,0}}, +/* 17565 */ {(11<<2)|2,{115,100,0}}, +/* 17566 */ {(11<<2)|2,{115,100,0}}, +/* 17567 */ {(11<<2)|2,{115,100,0}}, +/* 17568 */ {(16<<2)|3,{115,102,48}}, +/* 17569 */ {(16<<2)|3,{115,102,49}}, +/* 17570 */ {(16<<2)|3,{115,102,50}}, +/* 17571 */ {(16<<2)|3,{115,102,97}}, +/* 17572 */ {(16<<2)|3,{115,102,99}}, +/* 17573 */ {(16<<2)|3,{115,102,101}}, +/* 17574 */ {(16<<2)|3,{115,102,105}}, +/* 17575 */ {(16<<2)|3,{115,102,111}}, +/* 17576 */ {(16<<2)|3,{115,102,115}}, +/* 17577 */ {(16<<2)|3,{115,102,116}}, +/* 17578 */ {(11<<2)|2,{115,102,0}}, +/* 17579 */ {(11<<2)|2,{115,102,0}}, +/* 17580 */ {(11<<2)|2,{115,102,0}}, +/* 17581 */ {(11<<2)|2,{115,102,0}}, +/* 17582 */ {(11<<2)|2,{115,102,0}}, +/* 17583 */ {(11<<2)|2,{115,102,0}}, +/* 17584 */ {(11<<2)|2,{115,102,0}}, +/* 17585 */ {(11<<2)|2,{115,102,0}}, +/* 17586 */ {(11<<2)|2,{115,102,0}}, +/* 17587 */ {(11<<2)|2,{115,102,0}}, +/* 17588 */ {(11<<2)|2,{115,102,0}}, +/* 17589 */ {(11<<2)|2,{115,102,0}}, +/* 17590 */ {(11<<2)|2,{115,102,0}}, +/* 17591 */ {(11<<2)|2,{115,102,0}}, +/* 17592 */ {(11<<2)|2,{115,102,0}}, +/* 17593 */ {(11<<2)|2,{115,102,0}}, +/* 17594 */ {(11<<2)|2,{115,102,0}}, +/* 17595 */ {(11<<2)|2,{115,102,0}}, +/* 17596 */ {(11<<2)|2,{115,102,0}}, +/* 17597 */ {(11<<2)|2,{115,102,0}}, +/* 17598 */ {(11<<2)|2,{115,102,0}}, +/* 17599 */ {(11<<2)|2,{115,102,0}}, +/* 17600 */ {(16<<2)|3,{115,103,48}}, +/* 17601 */ {(16<<2)|3,{115,103,49}}, +/* 17602 */ {(16<<2)|3,{115,103,50}}, +/* 17603 */ {(16<<2)|3,{115,103,97}}, +/* 17604 */ {(16<<2)|3,{115,103,99}}, +/* 17605 */ {(16<<2)|3,{115,103,101}}, +/* 17606 */ {(16<<2)|3,{115,103,105}}, +/* 17607 */ {(16<<2)|3,{115,103,111}}, +/* 17608 */ {(16<<2)|3,{115,103,115}}, +/* 17609 */ {(16<<2)|3,{115,103,116}}, +/* 17610 */ {(11<<2)|2,{115,103,0}}, +/* 17611 */ {(11<<2)|2,{115,103,0}}, +/* 17612 */ {(11<<2)|2,{115,103,0}}, +/* 17613 */ {(11<<2)|2,{115,103,0}}, +/* 17614 */ {(11<<2)|2,{115,103,0}}, +/* 17615 */ {(11<<2)|2,{115,103,0}}, +/* 17616 */ {(11<<2)|2,{115,103,0}}, +/* 17617 */ {(11<<2)|2,{115,103,0}}, +/* 17618 */ {(11<<2)|2,{115,103,0}}, +/* 17619 */ {(11<<2)|2,{115,103,0}}, +/* 17620 */ {(11<<2)|2,{115,103,0}}, +/* 17621 */ {(11<<2)|2,{115,103,0}}, +/* 17622 */ {(11<<2)|2,{115,103,0}}, +/* 17623 */ {(11<<2)|2,{115,103,0}}, +/* 17624 */ {(11<<2)|2,{115,103,0}}, +/* 17625 */ {(11<<2)|2,{115,103,0}}, +/* 17626 */ {(11<<2)|2,{115,103,0}}, +/* 17627 */ {(11<<2)|2,{115,103,0}}, +/* 17628 */ {(11<<2)|2,{115,103,0}}, +/* 17629 */ {(11<<2)|2,{115,103,0}}, +/* 17630 */ {(11<<2)|2,{115,103,0}}, +/* 17631 */ {(11<<2)|2,{115,103,0}}, +/* 17632 */ {(16<<2)|3,{115,104,48}}, +/* 17633 */ {(16<<2)|3,{115,104,49}}, +/* 17634 */ {(16<<2)|3,{115,104,50}}, +/* 17635 */ {(16<<2)|3,{115,104,97}}, +/* 17636 */ {(16<<2)|3,{115,104,99}}, +/* 17637 */ {(16<<2)|3,{115,104,101}}, +/* 17638 */ {(16<<2)|3,{115,104,105}}, +/* 17639 */ {(16<<2)|3,{115,104,111}}, +/* 17640 */ {(16<<2)|3,{115,104,115}}, +/* 17641 */ {(16<<2)|3,{115,104,116}}, +/* 17642 */ {(11<<2)|2,{115,104,0}}, +/* 17643 */ {(11<<2)|2,{115,104,0}}, +/* 17644 */ {(11<<2)|2,{115,104,0}}, +/* 17645 */ {(11<<2)|2,{115,104,0}}, +/* 17646 */ {(11<<2)|2,{115,104,0}}, +/* 17647 */ {(11<<2)|2,{115,104,0}}, +/* 17648 */ {(11<<2)|2,{115,104,0}}, +/* 17649 */ {(11<<2)|2,{115,104,0}}, +/* 17650 */ {(11<<2)|2,{115,104,0}}, +/* 17651 */ {(11<<2)|2,{115,104,0}}, +/* 17652 */ {(11<<2)|2,{115,104,0}}, +/* 17653 */ {(11<<2)|2,{115,104,0}}, +/* 17654 */ {(11<<2)|2,{115,104,0}}, +/* 17655 */ {(11<<2)|2,{115,104,0}}, +/* 17656 */ {(11<<2)|2,{115,104,0}}, +/* 17657 */ {(11<<2)|2,{115,104,0}}, +/* 17658 */ {(11<<2)|2,{115,104,0}}, +/* 17659 */ {(11<<2)|2,{115,104,0}}, +/* 17660 */ {(11<<2)|2,{115,104,0}}, +/* 17661 */ {(11<<2)|2,{115,104,0}}, +/* 17662 */ {(11<<2)|2,{115,104,0}}, +/* 17663 */ {(11<<2)|2,{115,104,0}}, +/* 17664 */ {(16<<2)|3,{115,108,48}}, +/* 17665 */ {(16<<2)|3,{115,108,49}}, +/* 17666 */ {(16<<2)|3,{115,108,50}}, +/* 17667 */ {(16<<2)|3,{115,108,97}}, +/* 17668 */ {(16<<2)|3,{115,108,99}}, +/* 17669 */ {(16<<2)|3,{115,108,101}}, +/* 17670 */ {(16<<2)|3,{115,108,105}}, +/* 17671 */ {(16<<2)|3,{115,108,111}}, +/* 17672 */ {(16<<2)|3,{115,108,115}}, +/* 17673 */ {(16<<2)|3,{115,108,116}}, +/* 17674 */ {(11<<2)|2,{115,108,0}}, +/* 17675 */ {(11<<2)|2,{115,108,0}}, +/* 17676 */ {(11<<2)|2,{115,108,0}}, +/* 17677 */ {(11<<2)|2,{115,108,0}}, +/* 17678 */ {(11<<2)|2,{115,108,0}}, +/* 17679 */ {(11<<2)|2,{115,108,0}}, +/* 17680 */ {(11<<2)|2,{115,108,0}}, +/* 17681 */ {(11<<2)|2,{115,108,0}}, +/* 17682 */ {(11<<2)|2,{115,108,0}}, +/* 17683 */ {(11<<2)|2,{115,108,0}}, +/* 17684 */ {(11<<2)|2,{115,108,0}}, +/* 17685 */ {(11<<2)|2,{115,108,0}}, +/* 17686 */ {(11<<2)|2,{115,108,0}}, +/* 17687 */ {(11<<2)|2,{115,108,0}}, +/* 17688 */ {(11<<2)|2,{115,108,0}}, +/* 17689 */ {(11<<2)|2,{115,108,0}}, +/* 17690 */ {(11<<2)|2,{115,108,0}}, +/* 17691 */ {(11<<2)|2,{115,108,0}}, +/* 17692 */ {(11<<2)|2,{115,108,0}}, +/* 17693 */ {(11<<2)|2,{115,108,0}}, +/* 17694 */ {(11<<2)|2,{115,108,0}}, +/* 17695 */ {(11<<2)|2,{115,108,0}}, +/* 17696 */ {(16<<2)|3,{115,109,48}}, +/* 17697 */ {(16<<2)|3,{115,109,49}}, +/* 17698 */ {(16<<2)|3,{115,109,50}}, +/* 17699 */ {(16<<2)|3,{115,109,97}}, +/* 17700 */ {(16<<2)|3,{115,109,99}}, +/* 17701 */ {(16<<2)|3,{115,109,101}}, +/* 17702 */ {(16<<2)|3,{115,109,105}}, +/* 17703 */ {(16<<2)|3,{115,109,111}}, +/* 17704 */ {(16<<2)|3,{115,109,115}}, +/* 17705 */ {(16<<2)|3,{115,109,116}}, +/* 17706 */ {(11<<2)|2,{115,109,0}}, +/* 17707 */ {(11<<2)|2,{115,109,0}}, +/* 17708 */ {(11<<2)|2,{115,109,0}}, +/* 17709 */ {(11<<2)|2,{115,109,0}}, +/* 17710 */ {(11<<2)|2,{115,109,0}}, +/* 17711 */ {(11<<2)|2,{115,109,0}}, +/* 17712 */ {(11<<2)|2,{115,109,0}}, +/* 17713 */ {(11<<2)|2,{115,109,0}}, +/* 17714 */ {(11<<2)|2,{115,109,0}}, +/* 17715 */ {(11<<2)|2,{115,109,0}}, +/* 17716 */ {(11<<2)|2,{115,109,0}}, +/* 17717 */ {(11<<2)|2,{115,109,0}}, +/* 17718 */ {(11<<2)|2,{115,109,0}}, +/* 17719 */ {(11<<2)|2,{115,109,0}}, +/* 17720 */ {(11<<2)|2,{115,109,0}}, +/* 17721 */ {(11<<2)|2,{115,109,0}}, +/* 17722 */ {(11<<2)|2,{115,109,0}}, +/* 17723 */ {(11<<2)|2,{115,109,0}}, +/* 17724 */ {(11<<2)|2,{115,109,0}}, +/* 17725 */ {(11<<2)|2,{115,109,0}}, +/* 17726 */ {(11<<2)|2,{115,109,0}}, +/* 17727 */ {(11<<2)|2,{115,109,0}}, +/* 17728 */ {(16<<2)|3,{115,110,48}}, +/* 17729 */ {(16<<2)|3,{115,110,49}}, +/* 17730 */ {(16<<2)|3,{115,110,50}}, +/* 17731 */ {(16<<2)|3,{115,110,97}}, +/* 17732 */ {(16<<2)|3,{115,110,99}}, +/* 17733 */ {(16<<2)|3,{115,110,101}}, +/* 17734 */ {(16<<2)|3,{115,110,105}}, +/* 17735 */ {(16<<2)|3,{115,110,111}}, +/* 17736 */ {(16<<2)|3,{115,110,115}}, +/* 17737 */ {(16<<2)|3,{115,110,116}}, +/* 17738 */ {(11<<2)|2,{115,110,0}}, +/* 17739 */ {(11<<2)|2,{115,110,0}}, +/* 17740 */ {(11<<2)|2,{115,110,0}}, +/* 17741 */ {(11<<2)|2,{115,110,0}}, +/* 17742 */ {(11<<2)|2,{115,110,0}}, +/* 17743 */ {(11<<2)|2,{115,110,0}}, +/* 17744 */ {(11<<2)|2,{115,110,0}}, +/* 17745 */ {(11<<2)|2,{115,110,0}}, +/* 17746 */ {(11<<2)|2,{115,110,0}}, +/* 17747 */ {(11<<2)|2,{115,110,0}}, +/* 17748 */ {(11<<2)|2,{115,110,0}}, +/* 17749 */ {(11<<2)|2,{115,110,0}}, +/* 17750 */ {(11<<2)|2,{115,110,0}}, +/* 17751 */ {(11<<2)|2,{115,110,0}}, +/* 17752 */ {(11<<2)|2,{115,110,0}}, +/* 17753 */ {(11<<2)|2,{115,110,0}}, +/* 17754 */ {(11<<2)|2,{115,110,0}}, +/* 17755 */ {(11<<2)|2,{115,110,0}}, +/* 17756 */ {(11<<2)|2,{115,110,0}}, +/* 17757 */ {(11<<2)|2,{115,110,0}}, +/* 17758 */ {(11<<2)|2,{115,110,0}}, +/* 17759 */ {(11<<2)|2,{115,110,0}}, +/* 17760 */ {(16<<2)|3,{115,112,48}}, +/* 17761 */ {(16<<2)|3,{115,112,49}}, +/* 17762 */ {(16<<2)|3,{115,112,50}}, +/* 17763 */ {(16<<2)|3,{115,112,97}}, +/* 17764 */ {(16<<2)|3,{115,112,99}}, +/* 17765 */ {(16<<2)|3,{115,112,101}}, +/* 17766 */ {(16<<2)|3,{115,112,105}}, +/* 17767 */ {(16<<2)|3,{115,112,111}}, +/* 17768 */ {(16<<2)|3,{115,112,115}}, +/* 17769 */ {(16<<2)|3,{115,112,116}}, +/* 17770 */ {(11<<2)|2,{115,112,0}}, +/* 17771 */ {(11<<2)|2,{115,112,0}}, +/* 17772 */ {(11<<2)|2,{115,112,0}}, +/* 17773 */ {(11<<2)|2,{115,112,0}}, +/* 17774 */ {(11<<2)|2,{115,112,0}}, +/* 17775 */ {(11<<2)|2,{115,112,0}}, +/* 17776 */ {(11<<2)|2,{115,112,0}}, +/* 17777 */ {(11<<2)|2,{115,112,0}}, +/* 17778 */ {(11<<2)|2,{115,112,0}}, +/* 17779 */ {(11<<2)|2,{115,112,0}}, +/* 17780 */ {(11<<2)|2,{115,112,0}}, +/* 17781 */ {(11<<2)|2,{115,112,0}}, +/* 17782 */ {(11<<2)|2,{115,112,0}}, +/* 17783 */ {(11<<2)|2,{115,112,0}}, +/* 17784 */ {(11<<2)|2,{115,112,0}}, +/* 17785 */ {(11<<2)|2,{115,112,0}}, +/* 17786 */ {(11<<2)|2,{115,112,0}}, +/* 17787 */ {(11<<2)|2,{115,112,0}}, +/* 17788 */ {(11<<2)|2,{115,112,0}}, +/* 17789 */ {(11<<2)|2,{115,112,0}}, +/* 17790 */ {(11<<2)|2,{115,112,0}}, +/* 17791 */ {(11<<2)|2,{115,112,0}}, +/* 17792 */ {(16<<2)|3,{115,114,48}}, +/* 17793 */ {(16<<2)|3,{115,114,49}}, +/* 17794 */ {(16<<2)|3,{115,114,50}}, +/* 17795 */ {(16<<2)|3,{115,114,97}}, +/* 17796 */ {(16<<2)|3,{115,114,99}}, +/* 17797 */ {(16<<2)|3,{115,114,101}}, +/* 17798 */ {(16<<2)|3,{115,114,105}}, +/* 17799 */ {(16<<2)|3,{115,114,111}}, +/* 17800 */ {(16<<2)|3,{115,114,115}}, +/* 17801 */ {(16<<2)|3,{115,114,116}}, +/* 17802 */ {(11<<2)|2,{115,114,0}}, +/* 17803 */ {(11<<2)|2,{115,114,0}}, +/* 17804 */ {(11<<2)|2,{115,114,0}}, +/* 17805 */ {(11<<2)|2,{115,114,0}}, +/* 17806 */ {(11<<2)|2,{115,114,0}}, +/* 17807 */ {(11<<2)|2,{115,114,0}}, +/* 17808 */ {(11<<2)|2,{115,114,0}}, +/* 17809 */ {(11<<2)|2,{115,114,0}}, +/* 17810 */ {(11<<2)|2,{115,114,0}}, +/* 17811 */ {(11<<2)|2,{115,114,0}}, +/* 17812 */ {(11<<2)|2,{115,114,0}}, +/* 17813 */ {(11<<2)|2,{115,114,0}}, +/* 17814 */ {(11<<2)|2,{115,114,0}}, +/* 17815 */ {(11<<2)|2,{115,114,0}}, +/* 17816 */ {(11<<2)|2,{115,114,0}}, +/* 17817 */ {(11<<2)|2,{115,114,0}}, +/* 17818 */ {(11<<2)|2,{115,114,0}}, +/* 17819 */ {(11<<2)|2,{115,114,0}}, +/* 17820 */ {(11<<2)|2,{115,114,0}}, +/* 17821 */ {(11<<2)|2,{115,114,0}}, +/* 17822 */ {(11<<2)|2,{115,114,0}}, +/* 17823 */ {(11<<2)|2,{115,114,0}}, +/* 17824 */ {(16<<2)|3,{115,117,48}}, +/* 17825 */ {(16<<2)|3,{115,117,49}}, +/* 17826 */ {(16<<2)|3,{115,117,50}}, +/* 17827 */ {(16<<2)|3,{115,117,97}}, +/* 17828 */ {(16<<2)|3,{115,117,99}}, +/* 17829 */ {(16<<2)|3,{115,117,101}}, +/* 17830 */ {(16<<2)|3,{115,117,105}}, +/* 17831 */ {(16<<2)|3,{115,117,111}}, +/* 17832 */ {(16<<2)|3,{115,117,115}}, +/* 17833 */ {(16<<2)|3,{115,117,116}}, +/* 17834 */ {(11<<2)|2,{115,117,0}}, +/* 17835 */ {(11<<2)|2,{115,117,0}}, +/* 17836 */ {(11<<2)|2,{115,117,0}}, +/* 17837 */ {(11<<2)|2,{115,117,0}}, +/* 17838 */ {(11<<2)|2,{115,117,0}}, +/* 17839 */ {(11<<2)|2,{115,117,0}}, +/* 17840 */ {(11<<2)|2,{115,117,0}}, +/* 17841 */ {(11<<2)|2,{115,117,0}}, +/* 17842 */ {(11<<2)|2,{115,117,0}}, +/* 17843 */ {(11<<2)|2,{115,117,0}}, +/* 17844 */ {(11<<2)|2,{115,117,0}}, +/* 17845 */ {(11<<2)|2,{115,117,0}}, +/* 17846 */ {(11<<2)|2,{115,117,0}}, +/* 17847 */ {(11<<2)|2,{115,117,0}}, +/* 17848 */ {(11<<2)|2,{115,117,0}}, +/* 17849 */ {(11<<2)|2,{115,117,0}}, +/* 17850 */ {(11<<2)|2,{115,117,0}}, +/* 17851 */ {(11<<2)|2,{115,117,0}}, +/* 17852 */ {(11<<2)|2,{115,117,0}}, +/* 17853 */ {(11<<2)|2,{115,117,0}}, +/* 17854 */ {(11<<2)|2,{115,117,0}}, +/* 17855 */ {(11<<2)|2,{115,117,0}}, +/* 17856 */ {(12<<2)|2,{115,58,0}}, +/* 17857 */ {(12<<2)|2,{115,58,0}}, +/* 17858 */ {(12<<2)|2,{115,58,0}}, +/* 17859 */ {(12<<2)|2,{115,58,0}}, +/* 17860 */ {(12<<2)|2,{115,58,0}}, +/* 17861 */ {(12<<2)|2,{115,58,0}}, +/* 17862 */ {(12<<2)|2,{115,58,0}}, +/* 17863 */ {(12<<2)|2,{115,58,0}}, +/* 17864 */ {(12<<2)|2,{115,58,0}}, +/* 17865 */ {(12<<2)|2,{115,58,0}}, +/* 17866 */ {(12<<2)|2,{115,58,0}}, +/* 17867 */ {(12<<2)|2,{115,58,0}}, +/* 17868 */ {(12<<2)|2,{115,58,0}}, +/* 17869 */ {(12<<2)|2,{115,58,0}}, +/* 17870 */ {(12<<2)|2,{115,58,0}}, +/* 17871 */ {(12<<2)|2,{115,58,0}}, +/* 17872 */ {(12<<2)|2,{115,66,0}}, +/* 17873 */ {(12<<2)|2,{115,66,0}}, +/* 17874 */ {(12<<2)|2,{115,66,0}}, +/* 17875 */ {(12<<2)|2,{115,66,0}}, +/* 17876 */ {(12<<2)|2,{115,66,0}}, +/* 17877 */ {(12<<2)|2,{115,66,0}}, +/* 17878 */ {(12<<2)|2,{115,66,0}}, +/* 17879 */ {(12<<2)|2,{115,66,0}}, +/* 17880 */ {(12<<2)|2,{115,66,0}}, +/* 17881 */ {(12<<2)|2,{115,66,0}}, +/* 17882 */ {(12<<2)|2,{115,66,0}}, +/* 17883 */ {(12<<2)|2,{115,66,0}}, +/* 17884 */ {(12<<2)|2,{115,66,0}}, +/* 17885 */ {(12<<2)|2,{115,66,0}}, +/* 17886 */ {(12<<2)|2,{115,66,0}}, +/* 17887 */ {(12<<2)|2,{115,66,0}}, +/* 17888 */ {(12<<2)|2,{115,67,0}}, +/* 17889 */ {(12<<2)|2,{115,67,0}}, +/* 17890 */ {(12<<2)|2,{115,67,0}}, +/* 17891 */ {(12<<2)|2,{115,67,0}}, +/* 17892 */ {(12<<2)|2,{115,67,0}}, +/* 17893 */ {(12<<2)|2,{115,67,0}}, +/* 17894 */ {(12<<2)|2,{115,67,0}}, +/* 17895 */ {(12<<2)|2,{115,67,0}}, +/* 17896 */ {(12<<2)|2,{115,67,0}}, +/* 17897 */ {(12<<2)|2,{115,67,0}}, +/* 17898 */ {(12<<2)|2,{115,67,0}}, +/* 17899 */ {(12<<2)|2,{115,67,0}}, +/* 17900 */ {(12<<2)|2,{115,67,0}}, +/* 17901 */ {(12<<2)|2,{115,67,0}}, +/* 17902 */ {(12<<2)|2,{115,67,0}}, +/* 17903 */ {(12<<2)|2,{115,67,0}}, +/* 17904 */ {(12<<2)|2,{115,68,0}}, +/* 17905 */ {(12<<2)|2,{115,68,0}}, +/* 17906 */ {(12<<2)|2,{115,68,0}}, +/* 17907 */ {(12<<2)|2,{115,68,0}}, +/* 17908 */ {(12<<2)|2,{115,68,0}}, +/* 17909 */ {(12<<2)|2,{115,68,0}}, +/* 17910 */ {(12<<2)|2,{115,68,0}}, +/* 17911 */ {(12<<2)|2,{115,68,0}}, +/* 17912 */ {(12<<2)|2,{115,68,0}}, +/* 17913 */ {(12<<2)|2,{115,68,0}}, +/* 17914 */ {(12<<2)|2,{115,68,0}}, +/* 17915 */ {(12<<2)|2,{115,68,0}}, +/* 17916 */ {(12<<2)|2,{115,68,0}}, +/* 17917 */ {(12<<2)|2,{115,68,0}}, +/* 17918 */ {(12<<2)|2,{115,68,0}}, +/* 17919 */ {(12<<2)|2,{115,68,0}}, +/* 17920 */ {(12<<2)|2,{115,69,0}}, +/* 17921 */ {(12<<2)|2,{115,69,0}}, +/* 17922 */ {(12<<2)|2,{115,69,0}}, +/* 17923 */ {(12<<2)|2,{115,69,0}}, +/* 17924 */ {(12<<2)|2,{115,69,0}}, +/* 17925 */ {(12<<2)|2,{115,69,0}}, +/* 17926 */ {(12<<2)|2,{115,69,0}}, +/* 17927 */ {(12<<2)|2,{115,69,0}}, +/* 17928 */ {(12<<2)|2,{115,69,0}}, +/* 17929 */ {(12<<2)|2,{115,69,0}}, +/* 17930 */ {(12<<2)|2,{115,69,0}}, +/* 17931 */ {(12<<2)|2,{115,69,0}}, +/* 17932 */ {(12<<2)|2,{115,69,0}}, +/* 17933 */ {(12<<2)|2,{115,69,0}}, +/* 17934 */ {(12<<2)|2,{115,69,0}}, +/* 17935 */ {(12<<2)|2,{115,69,0}}, +/* 17936 */ {(12<<2)|2,{115,70,0}}, +/* 17937 */ {(12<<2)|2,{115,70,0}}, +/* 17938 */ {(12<<2)|2,{115,70,0}}, +/* 17939 */ {(12<<2)|2,{115,70,0}}, +/* 17940 */ {(12<<2)|2,{115,70,0}}, +/* 17941 */ {(12<<2)|2,{115,70,0}}, +/* 17942 */ {(12<<2)|2,{115,70,0}}, +/* 17943 */ {(12<<2)|2,{115,70,0}}, +/* 17944 */ {(12<<2)|2,{115,70,0}}, +/* 17945 */ {(12<<2)|2,{115,70,0}}, +/* 17946 */ {(12<<2)|2,{115,70,0}}, +/* 17947 */ {(12<<2)|2,{115,70,0}}, +/* 17948 */ {(12<<2)|2,{115,70,0}}, +/* 17949 */ {(12<<2)|2,{115,70,0}}, +/* 17950 */ {(12<<2)|2,{115,70,0}}, +/* 17951 */ {(12<<2)|2,{115,70,0}}, +/* 17952 */ {(12<<2)|2,{115,71,0}}, +/* 17953 */ {(12<<2)|2,{115,71,0}}, +/* 17954 */ {(12<<2)|2,{115,71,0}}, +/* 17955 */ {(12<<2)|2,{115,71,0}}, +/* 17956 */ {(12<<2)|2,{115,71,0}}, +/* 17957 */ {(12<<2)|2,{115,71,0}}, +/* 17958 */ {(12<<2)|2,{115,71,0}}, +/* 17959 */ {(12<<2)|2,{115,71,0}}, +/* 17960 */ {(12<<2)|2,{115,71,0}}, +/* 17961 */ {(12<<2)|2,{115,71,0}}, +/* 17962 */ {(12<<2)|2,{115,71,0}}, +/* 17963 */ {(12<<2)|2,{115,71,0}}, +/* 17964 */ {(12<<2)|2,{115,71,0}}, +/* 17965 */ {(12<<2)|2,{115,71,0}}, +/* 17966 */ {(12<<2)|2,{115,71,0}}, +/* 17967 */ {(12<<2)|2,{115,71,0}}, +/* 17968 */ {(12<<2)|2,{115,72,0}}, +/* 17969 */ {(12<<2)|2,{115,72,0}}, +/* 17970 */ {(12<<2)|2,{115,72,0}}, +/* 17971 */ {(12<<2)|2,{115,72,0}}, +/* 17972 */ {(12<<2)|2,{115,72,0}}, +/* 17973 */ {(12<<2)|2,{115,72,0}}, +/* 17974 */ {(12<<2)|2,{115,72,0}}, +/* 17975 */ {(12<<2)|2,{115,72,0}}, +/* 17976 */ {(12<<2)|2,{115,72,0}}, +/* 17977 */ {(12<<2)|2,{115,72,0}}, +/* 17978 */ {(12<<2)|2,{115,72,0}}, +/* 17979 */ {(12<<2)|2,{115,72,0}}, +/* 17980 */ {(12<<2)|2,{115,72,0}}, +/* 17981 */ {(12<<2)|2,{115,72,0}}, +/* 17982 */ {(12<<2)|2,{115,72,0}}, +/* 17983 */ {(12<<2)|2,{115,72,0}}, +/* 17984 */ {(12<<2)|2,{115,73,0}}, +/* 17985 */ {(12<<2)|2,{115,73,0}}, +/* 17986 */ {(12<<2)|2,{115,73,0}}, +/* 17987 */ {(12<<2)|2,{115,73,0}}, +/* 17988 */ {(12<<2)|2,{115,73,0}}, +/* 17989 */ {(12<<2)|2,{115,73,0}}, +/* 17990 */ {(12<<2)|2,{115,73,0}}, +/* 17991 */ {(12<<2)|2,{115,73,0}}, +/* 17992 */ {(12<<2)|2,{115,73,0}}, +/* 17993 */ {(12<<2)|2,{115,73,0}}, +/* 17994 */ {(12<<2)|2,{115,73,0}}, +/* 17995 */ {(12<<2)|2,{115,73,0}}, +/* 17996 */ {(12<<2)|2,{115,73,0}}, +/* 17997 */ {(12<<2)|2,{115,73,0}}, +/* 17998 */ {(12<<2)|2,{115,73,0}}, +/* 17999 */ {(12<<2)|2,{115,73,0}}, +/* 18000 */ {(12<<2)|2,{115,74,0}}, +/* 18001 */ {(12<<2)|2,{115,74,0}}, +/* 18002 */ {(12<<2)|2,{115,74,0}}, +/* 18003 */ {(12<<2)|2,{115,74,0}}, +/* 18004 */ {(12<<2)|2,{115,74,0}}, +/* 18005 */ {(12<<2)|2,{115,74,0}}, +/* 18006 */ {(12<<2)|2,{115,74,0}}, +/* 18007 */ {(12<<2)|2,{115,74,0}}, +/* 18008 */ {(12<<2)|2,{115,74,0}}, +/* 18009 */ {(12<<2)|2,{115,74,0}}, +/* 18010 */ {(12<<2)|2,{115,74,0}}, +/* 18011 */ {(12<<2)|2,{115,74,0}}, +/* 18012 */ {(12<<2)|2,{115,74,0}}, +/* 18013 */ {(12<<2)|2,{115,74,0}}, +/* 18014 */ {(12<<2)|2,{115,74,0}}, +/* 18015 */ {(12<<2)|2,{115,74,0}}, +/* 18016 */ {(12<<2)|2,{115,75,0}}, +/* 18017 */ {(12<<2)|2,{115,75,0}}, +/* 18018 */ {(12<<2)|2,{115,75,0}}, +/* 18019 */ {(12<<2)|2,{115,75,0}}, +/* 18020 */ {(12<<2)|2,{115,75,0}}, +/* 18021 */ {(12<<2)|2,{115,75,0}}, +/* 18022 */ {(12<<2)|2,{115,75,0}}, +/* 18023 */ {(12<<2)|2,{115,75,0}}, +/* 18024 */ {(12<<2)|2,{115,75,0}}, +/* 18025 */ {(12<<2)|2,{115,75,0}}, +/* 18026 */ {(12<<2)|2,{115,75,0}}, +/* 18027 */ {(12<<2)|2,{115,75,0}}, +/* 18028 */ {(12<<2)|2,{115,75,0}}, +/* 18029 */ {(12<<2)|2,{115,75,0}}, +/* 18030 */ {(12<<2)|2,{115,75,0}}, +/* 18031 */ {(12<<2)|2,{115,75,0}}, +/* 18032 */ {(12<<2)|2,{115,76,0}}, +/* 18033 */ {(12<<2)|2,{115,76,0}}, +/* 18034 */ {(12<<2)|2,{115,76,0}}, +/* 18035 */ {(12<<2)|2,{115,76,0}}, +/* 18036 */ {(12<<2)|2,{115,76,0}}, +/* 18037 */ {(12<<2)|2,{115,76,0}}, +/* 18038 */ {(12<<2)|2,{115,76,0}}, +/* 18039 */ {(12<<2)|2,{115,76,0}}, +/* 18040 */ {(12<<2)|2,{115,76,0}}, +/* 18041 */ {(12<<2)|2,{115,76,0}}, +/* 18042 */ {(12<<2)|2,{115,76,0}}, +/* 18043 */ {(12<<2)|2,{115,76,0}}, +/* 18044 */ {(12<<2)|2,{115,76,0}}, +/* 18045 */ {(12<<2)|2,{115,76,0}}, +/* 18046 */ {(12<<2)|2,{115,76,0}}, +/* 18047 */ {(12<<2)|2,{115,76,0}}, +/* 18048 */ {(12<<2)|2,{115,77,0}}, +/* 18049 */ {(12<<2)|2,{115,77,0}}, +/* 18050 */ {(12<<2)|2,{115,77,0}}, +/* 18051 */ {(12<<2)|2,{115,77,0}}, +/* 18052 */ {(12<<2)|2,{115,77,0}}, +/* 18053 */ {(12<<2)|2,{115,77,0}}, +/* 18054 */ {(12<<2)|2,{115,77,0}}, +/* 18055 */ {(12<<2)|2,{115,77,0}}, +/* 18056 */ {(12<<2)|2,{115,77,0}}, +/* 18057 */ {(12<<2)|2,{115,77,0}}, +/* 18058 */ {(12<<2)|2,{115,77,0}}, +/* 18059 */ {(12<<2)|2,{115,77,0}}, +/* 18060 */ {(12<<2)|2,{115,77,0}}, +/* 18061 */ {(12<<2)|2,{115,77,0}}, +/* 18062 */ {(12<<2)|2,{115,77,0}}, +/* 18063 */ {(12<<2)|2,{115,77,0}}, +/* 18064 */ {(12<<2)|2,{115,78,0}}, +/* 18065 */ {(12<<2)|2,{115,78,0}}, +/* 18066 */ {(12<<2)|2,{115,78,0}}, +/* 18067 */ {(12<<2)|2,{115,78,0}}, +/* 18068 */ {(12<<2)|2,{115,78,0}}, +/* 18069 */ {(12<<2)|2,{115,78,0}}, +/* 18070 */ {(12<<2)|2,{115,78,0}}, +/* 18071 */ {(12<<2)|2,{115,78,0}}, +/* 18072 */ {(12<<2)|2,{115,78,0}}, +/* 18073 */ {(12<<2)|2,{115,78,0}}, +/* 18074 */ {(12<<2)|2,{115,78,0}}, +/* 18075 */ {(12<<2)|2,{115,78,0}}, +/* 18076 */ {(12<<2)|2,{115,78,0}}, +/* 18077 */ {(12<<2)|2,{115,78,0}}, +/* 18078 */ {(12<<2)|2,{115,78,0}}, +/* 18079 */ {(12<<2)|2,{115,78,0}}, +/* 18080 */ {(12<<2)|2,{115,79,0}}, +/* 18081 */ {(12<<2)|2,{115,79,0}}, +/* 18082 */ {(12<<2)|2,{115,79,0}}, +/* 18083 */ {(12<<2)|2,{115,79,0}}, +/* 18084 */ {(12<<2)|2,{115,79,0}}, +/* 18085 */ {(12<<2)|2,{115,79,0}}, +/* 18086 */ {(12<<2)|2,{115,79,0}}, +/* 18087 */ {(12<<2)|2,{115,79,0}}, +/* 18088 */ {(12<<2)|2,{115,79,0}}, +/* 18089 */ {(12<<2)|2,{115,79,0}}, +/* 18090 */ {(12<<2)|2,{115,79,0}}, +/* 18091 */ {(12<<2)|2,{115,79,0}}, +/* 18092 */ {(12<<2)|2,{115,79,0}}, +/* 18093 */ {(12<<2)|2,{115,79,0}}, +/* 18094 */ {(12<<2)|2,{115,79,0}}, +/* 18095 */ {(12<<2)|2,{115,79,0}}, +/* 18096 */ {(12<<2)|2,{115,80,0}}, +/* 18097 */ {(12<<2)|2,{115,80,0}}, +/* 18098 */ {(12<<2)|2,{115,80,0}}, +/* 18099 */ {(12<<2)|2,{115,80,0}}, +/* 18100 */ {(12<<2)|2,{115,80,0}}, +/* 18101 */ {(12<<2)|2,{115,80,0}}, +/* 18102 */ {(12<<2)|2,{115,80,0}}, +/* 18103 */ {(12<<2)|2,{115,80,0}}, +/* 18104 */ {(12<<2)|2,{115,80,0}}, +/* 18105 */ {(12<<2)|2,{115,80,0}}, +/* 18106 */ {(12<<2)|2,{115,80,0}}, +/* 18107 */ {(12<<2)|2,{115,80,0}}, +/* 18108 */ {(12<<2)|2,{115,80,0}}, +/* 18109 */ {(12<<2)|2,{115,80,0}}, +/* 18110 */ {(12<<2)|2,{115,80,0}}, +/* 18111 */ {(12<<2)|2,{115,80,0}}, +/* 18112 */ {(12<<2)|2,{115,81,0}}, +/* 18113 */ {(12<<2)|2,{115,81,0}}, +/* 18114 */ {(12<<2)|2,{115,81,0}}, +/* 18115 */ {(12<<2)|2,{115,81,0}}, +/* 18116 */ {(12<<2)|2,{115,81,0}}, +/* 18117 */ {(12<<2)|2,{115,81,0}}, +/* 18118 */ {(12<<2)|2,{115,81,0}}, +/* 18119 */ {(12<<2)|2,{115,81,0}}, +/* 18120 */ {(12<<2)|2,{115,81,0}}, +/* 18121 */ {(12<<2)|2,{115,81,0}}, +/* 18122 */ {(12<<2)|2,{115,81,0}}, +/* 18123 */ {(12<<2)|2,{115,81,0}}, +/* 18124 */ {(12<<2)|2,{115,81,0}}, +/* 18125 */ {(12<<2)|2,{115,81,0}}, +/* 18126 */ {(12<<2)|2,{115,81,0}}, +/* 18127 */ {(12<<2)|2,{115,81,0}}, +/* 18128 */ {(12<<2)|2,{115,82,0}}, +/* 18129 */ {(12<<2)|2,{115,82,0}}, +/* 18130 */ {(12<<2)|2,{115,82,0}}, +/* 18131 */ {(12<<2)|2,{115,82,0}}, +/* 18132 */ {(12<<2)|2,{115,82,0}}, +/* 18133 */ {(12<<2)|2,{115,82,0}}, +/* 18134 */ {(12<<2)|2,{115,82,0}}, +/* 18135 */ {(12<<2)|2,{115,82,0}}, +/* 18136 */ {(12<<2)|2,{115,82,0}}, +/* 18137 */ {(12<<2)|2,{115,82,0}}, +/* 18138 */ {(12<<2)|2,{115,82,0}}, +/* 18139 */ {(12<<2)|2,{115,82,0}}, +/* 18140 */ {(12<<2)|2,{115,82,0}}, +/* 18141 */ {(12<<2)|2,{115,82,0}}, +/* 18142 */ {(12<<2)|2,{115,82,0}}, +/* 18143 */ {(12<<2)|2,{115,82,0}}, +/* 18144 */ {(12<<2)|2,{115,83,0}}, +/* 18145 */ {(12<<2)|2,{115,83,0}}, +/* 18146 */ {(12<<2)|2,{115,83,0}}, +/* 18147 */ {(12<<2)|2,{115,83,0}}, +/* 18148 */ {(12<<2)|2,{115,83,0}}, +/* 18149 */ {(12<<2)|2,{115,83,0}}, +/* 18150 */ {(12<<2)|2,{115,83,0}}, +/* 18151 */ {(12<<2)|2,{115,83,0}}, +/* 18152 */ {(12<<2)|2,{115,83,0}}, +/* 18153 */ {(12<<2)|2,{115,83,0}}, +/* 18154 */ {(12<<2)|2,{115,83,0}}, +/* 18155 */ {(12<<2)|2,{115,83,0}}, +/* 18156 */ {(12<<2)|2,{115,83,0}}, +/* 18157 */ {(12<<2)|2,{115,83,0}}, +/* 18158 */ {(12<<2)|2,{115,83,0}}, +/* 18159 */ {(12<<2)|2,{115,83,0}}, +/* 18160 */ {(12<<2)|2,{115,84,0}}, +/* 18161 */ {(12<<2)|2,{115,84,0}}, +/* 18162 */ {(12<<2)|2,{115,84,0}}, +/* 18163 */ {(12<<2)|2,{115,84,0}}, +/* 18164 */ {(12<<2)|2,{115,84,0}}, +/* 18165 */ {(12<<2)|2,{115,84,0}}, +/* 18166 */ {(12<<2)|2,{115,84,0}}, +/* 18167 */ {(12<<2)|2,{115,84,0}}, +/* 18168 */ {(12<<2)|2,{115,84,0}}, +/* 18169 */ {(12<<2)|2,{115,84,0}}, +/* 18170 */ {(12<<2)|2,{115,84,0}}, +/* 18171 */ {(12<<2)|2,{115,84,0}}, +/* 18172 */ {(12<<2)|2,{115,84,0}}, +/* 18173 */ {(12<<2)|2,{115,84,0}}, +/* 18174 */ {(12<<2)|2,{115,84,0}}, +/* 18175 */ {(12<<2)|2,{115,84,0}}, +/* 18176 */ {(12<<2)|2,{115,85,0}}, +/* 18177 */ {(12<<2)|2,{115,85,0}}, +/* 18178 */ {(12<<2)|2,{115,85,0}}, +/* 18179 */ {(12<<2)|2,{115,85,0}}, +/* 18180 */ {(12<<2)|2,{115,85,0}}, +/* 18181 */ {(12<<2)|2,{115,85,0}}, +/* 18182 */ {(12<<2)|2,{115,85,0}}, +/* 18183 */ {(12<<2)|2,{115,85,0}}, +/* 18184 */ {(12<<2)|2,{115,85,0}}, +/* 18185 */ {(12<<2)|2,{115,85,0}}, +/* 18186 */ {(12<<2)|2,{115,85,0}}, +/* 18187 */ {(12<<2)|2,{115,85,0}}, +/* 18188 */ {(12<<2)|2,{115,85,0}}, +/* 18189 */ {(12<<2)|2,{115,85,0}}, +/* 18190 */ {(12<<2)|2,{115,85,0}}, +/* 18191 */ {(12<<2)|2,{115,85,0}}, +/* 18192 */ {(12<<2)|2,{115,86,0}}, +/* 18193 */ {(12<<2)|2,{115,86,0}}, +/* 18194 */ {(12<<2)|2,{115,86,0}}, +/* 18195 */ {(12<<2)|2,{115,86,0}}, +/* 18196 */ {(12<<2)|2,{115,86,0}}, +/* 18197 */ {(12<<2)|2,{115,86,0}}, +/* 18198 */ {(12<<2)|2,{115,86,0}}, +/* 18199 */ {(12<<2)|2,{115,86,0}}, +/* 18200 */ {(12<<2)|2,{115,86,0}}, +/* 18201 */ {(12<<2)|2,{115,86,0}}, +/* 18202 */ {(12<<2)|2,{115,86,0}}, +/* 18203 */ {(12<<2)|2,{115,86,0}}, +/* 18204 */ {(12<<2)|2,{115,86,0}}, +/* 18205 */ {(12<<2)|2,{115,86,0}}, +/* 18206 */ {(12<<2)|2,{115,86,0}}, +/* 18207 */ {(12<<2)|2,{115,86,0}}, +/* 18208 */ {(12<<2)|2,{115,87,0}}, +/* 18209 */ {(12<<2)|2,{115,87,0}}, +/* 18210 */ {(12<<2)|2,{115,87,0}}, +/* 18211 */ {(12<<2)|2,{115,87,0}}, +/* 18212 */ {(12<<2)|2,{115,87,0}}, +/* 18213 */ {(12<<2)|2,{115,87,0}}, +/* 18214 */ {(12<<2)|2,{115,87,0}}, +/* 18215 */ {(12<<2)|2,{115,87,0}}, +/* 18216 */ {(12<<2)|2,{115,87,0}}, +/* 18217 */ {(12<<2)|2,{115,87,0}}, +/* 18218 */ {(12<<2)|2,{115,87,0}}, +/* 18219 */ {(12<<2)|2,{115,87,0}}, +/* 18220 */ {(12<<2)|2,{115,87,0}}, +/* 18221 */ {(12<<2)|2,{115,87,0}}, +/* 18222 */ {(12<<2)|2,{115,87,0}}, +/* 18223 */ {(12<<2)|2,{115,87,0}}, +/* 18224 */ {(12<<2)|2,{115,89,0}}, +/* 18225 */ {(12<<2)|2,{115,89,0}}, +/* 18226 */ {(12<<2)|2,{115,89,0}}, +/* 18227 */ {(12<<2)|2,{115,89,0}}, +/* 18228 */ {(12<<2)|2,{115,89,0}}, +/* 18229 */ {(12<<2)|2,{115,89,0}}, +/* 18230 */ {(12<<2)|2,{115,89,0}}, +/* 18231 */ {(12<<2)|2,{115,89,0}}, +/* 18232 */ {(12<<2)|2,{115,89,0}}, +/* 18233 */ {(12<<2)|2,{115,89,0}}, +/* 18234 */ {(12<<2)|2,{115,89,0}}, +/* 18235 */ {(12<<2)|2,{115,89,0}}, +/* 18236 */ {(12<<2)|2,{115,89,0}}, +/* 18237 */ {(12<<2)|2,{115,89,0}}, +/* 18238 */ {(12<<2)|2,{115,89,0}}, +/* 18239 */ {(12<<2)|2,{115,89,0}}, +/* 18240 */ {(12<<2)|2,{115,106,0}}, +/* 18241 */ {(12<<2)|2,{115,106,0}}, +/* 18242 */ {(12<<2)|2,{115,106,0}}, +/* 18243 */ {(12<<2)|2,{115,106,0}}, +/* 18244 */ {(12<<2)|2,{115,106,0}}, +/* 18245 */ {(12<<2)|2,{115,106,0}}, +/* 18246 */ {(12<<2)|2,{115,106,0}}, +/* 18247 */ {(12<<2)|2,{115,106,0}}, +/* 18248 */ {(12<<2)|2,{115,106,0}}, +/* 18249 */ {(12<<2)|2,{115,106,0}}, +/* 18250 */ {(12<<2)|2,{115,106,0}}, +/* 18251 */ {(12<<2)|2,{115,106,0}}, +/* 18252 */ {(12<<2)|2,{115,106,0}}, +/* 18253 */ {(12<<2)|2,{115,106,0}}, +/* 18254 */ {(12<<2)|2,{115,106,0}}, +/* 18255 */ {(12<<2)|2,{115,106,0}}, +/* 18256 */ {(12<<2)|2,{115,107,0}}, +/* 18257 */ {(12<<2)|2,{115,107,0}}, +/* 18258 */ {(12<<2)|2,{115,107,0}}, +/* 18259 */ {(12<<2)|2,{115,107,0}}, +/* 18260 */ {(12<<2)|2,{115,107,0}}, +/* 18261 */ {(12<<2)|2,{115,107,0}}, +/* 18262 */ {(12<<2)|2,{115,107,0}}, +/* 18263 */ {(12<<2)|2,{115,107,0}}, +/* 18264 */ {(12<<2)|2,{115,107,0}}, +/* 18265 */ {(12<<2)|2,{115,107,0}}, +/* 18266 */ {(12<<2)|2,{115,107,0}}, +/* 18267 */ {(12<<2)|2,{115,107,0}}, +/* 18268 */ {(12<<2)|2,{115,107,0}}, +/* 18269 */ {(12<<2)|2,{115,107,0}}, +/* 18270 */ {(12<<2)|2,{115,107,0}}, +/* 18271 */ {(12<<2)|2,{115,107,0}}, +/* 18272 */ {(12<<2)|2,{115,113,0}}, +/* 18273 */ {(12<<2)|2,{115,113,0}}, +/* 18274 */ {(12<<2)|2,{115,113,0}}, +/* 18275 */ {(12<<2)|2,{115,113,0}}, +/* 18276 */ {(12<<2)|2,{115,113,0}}, +/* 18277 */ {(12<<2)|2,{115,113,0}}, +/* 18278 */ {(12<<2)|2,{115,113,0}}, +/* 18279 */ {(12<<2)|2,{115,113,0}}, +/* 18280 */ {(12<<2)|2,{115,113,0}}, +/* 18281 */ {(12<<2)|2,{115,113,0}}, +/* 18282 */ {(12<<2)|2,{115,113,0}}, +/* 18283 */ {(12<<2)|2,{115,113,0}}, +/* 18284 */ {(12<<2)|2,{115,113,0}}, +/* 18285 */ {(12<<2)|2,{115,113,0}}, +/* 18286 */ {(12<<2)|2,{115,113,0}}, +/* 18287 */ {(12<<2)|2,{115,113,0}}, +/* 18288 */ {(12<<2)|2,{115,118,0}}, +/* 18289 */ {(12<<2)|2,{115,118,0}}, +/* 18290 */ {(12<<2)|2,{115,118,0}}, +/* 18291 */ {(12<<2)|2,{115,118,0}}, +/* 18292 */ {(12<<2)|2,{115,118,0}}, +/* 18293 */ {(12<<2)|2,{115,118,0}}, +/* 18294 */ {(12<<2)|2,{115,118,0}}, +/* 18295 */ {(12<<2)|2,{115,118,0}}, +/* 18296 */ {(12<<2)|2,{115,118,0}}, +/* 18297 */ {(12<<2)|2,{115,118,0}}, +/* 18298 */ {(12<<2)|2,{115,118,0}}, +/* 18299 */ {(12<<2)|2,{115,118,0}}, +/* 18300 */ {(12<<2)|2,{115,118,0}}, +/* 18301 */ {(12<<2)|2,{115,118,0}}, +/* 18302 */ {(12<<2)|2,{115,118,0}}, +/* 18303 */ {(12<<2)|2,{115,118,0}}, +/* 18304 */ {(12<<2)|2,{115,119,0}}, +/* 18305 */ {(12<<2)|2,{115,119,0}}, +/* 18306 */ {(12<<2)|2,{115,119,0}}, +/* 18307 */ {(12<<2)|2,{115,119,0}}, +/* 18308 */ {(12<<2)|2,{115,119,0}}, +/* 18309 */ {(12<<2)|2,{115,119,0}}, +/* 18310 */ {(12<<2)|2,{115,119,0}}, +/* 18311 */ {(12<<2)|2,{115,119,0}}, +/* 18312 */ {(12<<2)|2,{115,119,0}}, +/* 18313 */ {(12<<2)|2,{115,119,0}}, +/* 18314 */ {(12<<2)|2,{115,119,0}}, +/* 18315 */ {(12<<2)|2,{115,119,0}}, +/* 18316 */ {(12<<2)|2,{115,119,0}}, +/* 18317 */ {(12<<2)|2,{115,119,0}}, +/* 18318 */ {(12<<2)|2,{115,119,0}}, +/* 18319 */ {(12<<2)|2,{115,119,0}}, +/* 18320 */ {(12<<2)|2,{115,120,0}}, +/* 18321 */ {(12<<2)|2,{115,120,0}}, +/* 18322 */ {(12<<2)|2,{115,120,0}}, +/* 18323 */ {(12<<2)|2,{115,120,0}}, +/* 18324 */ {(12<<2)|2,{115,120,0}}, +/* 18325 */ {(12<<2)|2,{115,120,0}}, +/* 18326 */ {(12<<2)|2,{115,120,0}}, +/* 18327 */ {(12<<2)|2,{115,120,0}}, +/* 18328 */ {(12<<2)|2,{115,120,0}}, +/* 18329 */ {(12<<2)|2,{115,120,0}}, +/* 18330 */ {(12<<2)|2,{115,120,0}}, +/* 18331 */ {(12<<2)|2,{115,120,0}}, +/* 18332 */ {(12<<2)|2,{115,120,0}}, +/* 18333 */ {(12<<2)|2,{115,120,0}}, +/* 18334 */ {(12<<2)|2,{115,120,0}}, +/* 18335 */ {(12<<2)|2,{115,120,0}}, +/* 18336 */ {(12<<2)|2,{115,121,0}}, +/* 18337 */ {(12<<2)|2,{115,121,0}}, +/* 18338 */ {(12<<2)|2,{115,121,0}}, +/* 18339 */ {(12<<2)|2,{115,121,0}}, +/* 18340 */ {(12<<2)|2,{115,121,0}}, +/* 18341 */ {(12<<2)|2,{115,121,0}}, +/* 18342 */ {(12<<2)|2,{115,121,0}}, +/* 18343 */ {(12<<2)|2,{115,121,0}}, +/* 18344 */ {(12<<2)|2,{115,121,0}}, +/* 18345 */ {(12<<2)|2,{115,121,0}}, +/* 18346 */ {(12<<2)|2,{115,121,0}}, +/* 18347 */ {(12<<2)|2,{115,121,0}}, +/* 18348 */ {(12<<2)|2,{115,121,0}}, +/* 18349 */ {(12<<2)|2,{115,121,0}}, +/* 18350 */ {(12<<2)|2,{115,121,0}}, +/* 18351 */ {(12<<2)|2,{115,121,0}}, +/* 18352 */ {(12<<2)|2,{115,122,0}}, +/* 18353 */ {(12<<2)|2,{115,122,0}}, +/* 18354 */ {(12<<2)|2,{115,122,0}}, +/* 18355 */ {(12<<2)|2,{115,122,0}}, +/* 18356 */ {(12<<2)|2,{115,122,0}}, +/* 18357 */ {(12<<2)|2,{115,122,0}}, +/* 18358 */ {(12<<2)|2,{115,122,0}}, +/* 18359 */ {(12<<2)|2,{115,122,0}}, +/* 18360 */ {(12<<2)|2,{115,122,0}}, +/* 18361 */ {(12<<2)|2,{115,122,0}}, +/* 18362 */ {(12<<2)|2,{115,122,0}}, +/* 18363 */ {(12<<2)|2,{115,122,0}}, +/* 18364 */ {(12<<2)|2,{115,122,0}}, +/* 18365 */ {(12<<2)|2,{115,122,0}}, +/* 18366 */ {(12<<2)|2,{115,122,0}}, +/* 18367 */ {(12<<2)|2,{115,122,0}}, +/* 18368 */ {(13<<2)|2,{115,38,0}}, +/* 18369 */ {(13<<2)|2,{115,38,0}}, +/* 18370 */ {(13<<2)|2,{115,38,0}}, +/* 18371 */ {(13<<2)|2,{115,38,0}}, +/* 18372 */ {(13<<2)|2,{115,38,0}}, +/* 18373 */ {(13<<2)|2,{115,38,0}}, +/* 18374 */ {(13<<2)|2,{115,38,0}}, +/* 18375 */ {(13<<2)|2,{115,38,0}}, +/* 18376 */ {(13<<2)|2,{115,42,0}}, +/* 18377 */ {(13<<2)|2,{115,42,0}}, +/* 18378 */ {(13<<2)|2,{115,42,0}}, +/* 18379 */ {(13<<2)|2,{115,42,0}}, +/* 18380 */ {(13<<2)|2,{115,42,0}}, +/* 18381 */ {(13<<2)|2,{115,42,0}}, +/* 18382 */ {(13<<2)|2,{115,42,0}}, +/* 18383 */ {(13<<2)|2,{115,42,0}}, +/* 18384 */ {(13<<2)|2,{115,44,0}}, +/* 18385 */ {(13<<2)|2,{115,44,0}}, +/* 18386 */ {(13<<2)|2,{115,44,0}}, +/* 18387 */ {(13<<2)|2,{115,44,0}}, +/* 18388 */ {(13<<2)|2,{115,44,0}}, +/* 18389 */ {(13<<2)|2,{115,44,0}}, +/* 18390 */ {(13<<2)|2,{115,44,0}}, +/* 18391 */ {(13<<2)|2,{115,44,0}}, +/* 18392 */ {(13<<2)|2,{115,59,0}}, +/* 18393 */ {(13<<2)|2,{115,59,0}}, +/* 18394 */ {(13<<2)|2,{115,59,0}}, +/* 18395 */ {(13<<2)|2,{115,59,0}}, +/* 18396 */ {(13<<2)|2,{115,59,0}}, +/* 18397 */ {(13<<2)|2,{115,59,0}}, +/* 18398 */ {(13<<2)|2,{115,59,0}}, +/* 18399 */ {(13<<2)|2,{115,59,0}}, +/* 18400 */ {(13<<2)|2,{115,88,0}}, +/* 18401 */ {(13<<2)|2,{115,88,0}}, +/* 18402 */ {(13<<2)|2,{115,88,0}}, +/* 18403 */ {(13<<2)|2,{115,88,0}}, +/* 18404 */ {(13<<2)|2,{115,88,0}}, +/* 18405 */ {(13<<2)|2,{115,88,0}}, +/* 18406 */ {(13<<2)|2,{115,88,0}}, +/* 18407 */ {(13<<2)|2,{115,88,0}}, +/* 18408 */ {(13<<2)|2,{115,90,0}}, +/* 18409 */ {(13<<2)|2,{115,90,0}}, +/* 18410 */ {(13<<2)|2,{115,90,0}}, +/* 18411 */ {(13<<2)|2,{115,90,0}}, +/* 18412 */ {(13<<2)|2,{115,90,0}}, +/* 18413 */ {(13<<2)|2,{115,90,0}}, +/* 18414 */ {(13<<2)|2,{115,90,0}}, +/* 18415 */ {(13<<2)|2,{115,90,0}}, +/* 18416 */ {(15<<2)|2,{115,33,0}}, +/* 18417 */ {(15<<2)|2,{115,33,0}}, +/* 18418 */ {(15<<2)|2,{115,34,0}}, +/* 18419 */ {(15<<2)|2,{115,34,0}}, +/* 18420 */ {(15<<2)|2,{115,40,0}}, +/* 18421 */ {(15<<2)|2,{115,40,0}}, +/* 18422 */ {(15<<2)|2,{115,41,0}}, +/* 18423 */ {(15<<2)|2,{115,41,0}}, +/* 18424 */ {(15<<2)|2,{115,63,0}}, +/* 18425 */ {(15<<2)|2,{115,63,0}}, +/* 18426 */ {(16<<2)|2,{115,39,0}}, +/* 18427 */ {(16<<2)|2,{115,43,0}}, +/* 18428 */ {(16<<2)|2,{115,124,0}}, +/* 18429 */ {(5<<2)|1,{115,0,0}}, +/* 18430 */ {(5<<2)|1,{115,0,0}}, +/* 18431 */ {(5<<2)|1,{115,0,0}}, +/* 18432 */ {(15<<2)|3,{116,48,48}}, +/* 18433 */ {(15<<2)|3,{116,48,48}}, +/* 18434 */ {(15<<2)|3,{116,48,49}}, +/* 18435 */ {(15<<2)|3,{116,48,49}}, +/* 18436 */ {(15<<2)|3,{116,48,50}}, +/* 18437 */ {(15<<2)|3,{116,48,50}}, +/* 18438 */ {(15<<2)|3,{116,48,97}}, +/* 18439 */ {(15<<2)|3,{116,48,97}}, +/* 18440 */ {(15<<2)|3,{116,48,99}}, +/* 18441 */ {(15<<2)|3,{116,48,99}}, +/* 18442 */ {(15<<2)|3,{116,48,101}}, +/* 18443 */ {(15<<2)|3,{116,48,101}}, +/* 18444 */ {(15<<2)|3,{116,48,105}}, +/* 18445 */ {(15<<2)|3,{116,48,105}}, +/* 18446 */ {(15<<2)|3,{116,48,111}}, +/* 18447 */ {(15<<2)|3,{116,48,111}}, +/* 18448 */ {(15<<2)|3,{116,48,115}}, +/* 18449 */ {(15<<2)|3,{116,48,115}}, +/* 18450 */ {(15<<2)|3,{116,48,116}}, +/* 18451 */ {(15<<2)|3,{116,48,116}}, +/* 18452 */ {(16<<2)|3,{116,48,32}}, +/* 18453 */ {(16<<2)|3,{116,48,37}}, +/* 18454 */ {(16<<2)|3,{116,48,45}}, +/* 18455 */ {(16<<2)|3,{116,48,46}}, +/* 18456 */ {(16<<2)|3,{116,48,47}}, +/* 18457 */ {(16<<2)|3,{116,48,51}}, +/* 18458 */ {(16<<2)|3,{116,48,52}}, +/* 18459 */ {(16<<2)|3,{116,48,53}}, +/* 18460 */ {(16<<2)|3,{116,48,54}}, +/* 18461 */ {(16<<2)|3,{116,48,55}}, +/* 18462 */ {(16<<2)|3,{116,48,56}}, +/* 18463 */ {(16<<2)|3,{116,48,57}}, +/* 18464 */ {(16<<2)|3,{116,48,61}}, +/* 18465 */ {(16<<2)|3,{116,48,65}}, +/* 18466 */ {(16<<2)|3,{116,48,95}}, +/* 18467 */ {(16<<2)|3,{116,48,98}}, +/* 18468 */ {(16<<2)|3,{116,48,100}}, +/* 18469 */ {(16<<2)|3,{116,48,102}}, +/* 18470 */ {(16<<2)|3,{116,48,103}}, +/* 18471 */ {(16<<2)|3,{116,48,104}}, +/* 18472 */ {(16<<2)|3,{116,48,108}}, +/* 18473 */ {(16<<2)|3,{116,48,109}}, +/* 18474 */ {(16<<2)|3,{116,48,110}}, +/* 18475 */ {(16<<2)|3,{116,48,112}}, +/* 18476 */ {(16<<2)|3,{116,48,114}}, +/* 18477 */ {(16<<2)|3,{116,48,117}}, +/* 18478 */ {(10<<2)|2,{116,48,0}}, +/* 18479 */ {(10<<2)|2,{116,48,0}}, +/* 18480 */ {(10<<2)|2,{116,48,0}}, +/* 18481 */ {(10<<2)|2,{116,48,0}}, +/* 18482 */ {(10<<2)|2,{116,48,0}}, +/* 18483 */ {(10<<2)|2,{116,48,0}}, +/* 18484 */ {(10<<2)|2,{116,48,0}}, +/* 18485 */ {(10<<2)|2,{116,48,0}}, +/* 18486 */ {(10<<2)|2,{116,48,0}}, +/* 18487 */ {(10<<2)|2,{116,48,0}}, +/* 18488 */ {(10<<2)|2,{116,48,0}}, +/* 18489 */ {(10<<2)|2,{116,48,0}}, +/* 18490 */ {(10<<2)|2,{116,48,0}}, +/* 18491 */ {(10<<2)|2,{116,48,0}}, +/* 18492 */ {(10<<2)|2,{116,48,0}}, +/* 18493 */ {(10<<2)|2,{116,48,0}}, +/* 18494 */ {(10<<2)|2,{116,48,0}}, +/* 18495 */ {(10<<2)|2,{116,48,0}}, +/* 18496 */ {(15<<2)|3,{116,49,48}}, +/* 18497 */ {(15<<2)|3,{116,49,48}}, +/* 18498 */ {(15<<2)|3,{116,49,49}}, +/* 18499 */ {(15<<2)|3,{116,49,49}}, +/* 18500 */ {(15<<2)|3,{116,49,50}}, +/* 18501 */ {(15<<2)|3,{116,49,50}}, +/* 18502 */ {(15<<2)|3,{116,49,97}}, +/* 18503 */ {(15<<2)|3,{116,49,97}}, +/* 18504 */ {(15<<2)|3,{116,49,99}}, +/* 18505 */ {(15<<2)|3,{116,49,99}}, +/* 18506 */ {(15<<2)|3,{116,49,101}}, +/* 18507 */ {(15<<2)|3,{116,49,101}}, +/* 18508 */ {(15<<2)|3,{116,49,105}}, +/* 18509 */ {(15<<2)|3,{116,49,105}}, +/* 18510 */ {(15<<2)|3,{116,49,111}}, +/* 18511 */ {(15<<2)|3,{116,49,111}}, +/* 18512 */ {(15<<2)|3,{116,49,115}}, +/* 18513 */ {(15<<2)|3,{116,49,115}}, +/* 18514 */ {(15<<2)|3,{116,49,116}}, +/* 18515 */ {(15<<2)|3,{116,49,116}}, +/* 18516 */ {(16<<2)|3,{116,49,32}}, +/* 18517 */ {(16<<2)|3,{116,49,37}}, +/* 18518 */ {(16<<2)|3,{116,49,45}}, +/* 18519 */ {(16<<2)|3,{116,49,46}}, +/* 18520 */ {(16<<2)|3,{116,49,47}}, +/* 18521 */ {(16<<2)|3,{116,49,51}}, +/* 18522 */ {(16<<2)|3,{116,49,52}}, +/* 18523 */ {(16<<2)|3,{116,49,53}}, +/* 18524 */ {(16<<2)|3,{116,49,54}}, +/* 18525 */ {(16<<2)|3,{116,49,55}}, +/* 18526 */ {(16<<2)|3,{116,49,56}}, +/* 18527 */ {(16<<2)|3,{116,49,57}}, +/* 18528 */ {(16<<2)|3,{116,49,61}}, +/* 18529 */ {(16<<2)|3,{116,49,65}}, +/* 18530 */ {(16<<2)|3,{116,49,95}}, +/* 18531 */ {(16<<2)|3,{116,49,98}}, +/* 18532 */ {(16<<2)|3,{116,49,100}}, +/* 18533 */ {(16<<2)|3,{116,49,102}}, +/* 18534 */ {(16<<2)|3,{116,49,103}}, +/* 18535 */ {(16<<2)|3,{116,49,104}}, +/* 18536 */ {(16<<2)|3,{116,49,108}}, +/* 18537 */ {(16<<2)|3,{116,49,109}}, +/* 18538 */ {(16<<2)|3,{116,49,110}}, +/* 18539 */ {(16<<2)|3,{116,49,112}}, +/* 18540 */ {(16<<2)|3,{116,49,114}}, +/* 18541 */ {(16<<2)|3,{116,49,117}}, +/* 18542 */ {(10<<2)|2,{116,49,0}}, +/* 18543 */ {(10<<2)|2,{116,49,0}}, +/* 18544 */ {(10<<2)|2,{116,49,0}}, +/* 18545 */ {(10<<2)|2,{116,49,0}}, +/* 18546 */ {(10<<2)|2,{116,49,0}}, +/* 18547 */ {(10<<2)|2,{116,49,0}}, +/* 18548 */ {(10<<2)|2,{116,49,0}}, +/* 18549 */ {(10<<2)|2,{116,49,0}}, +/* 18550 */ {(10<<2)|2,{116,49,0}}, +/* 18551 */ {(10<<2)|2,{116,49,0}}, +/* 18552 */ {(10<<2)|2,{116,49,0}}, +/* 18553 */ {(10<<2)|2,{116,49,0}}, +/* 18554 */ {(10<<2)|2,{116,49,0}}, +/* 18555 */ {(10<<2)|2,{116,49,0}}, +/* 18556 */ {(10<<2)|2,{116,49,0}}, +/* 18557 */ {(10<<2)|2,{116,49,0}}, +/* 18558 */ {(10<<2)|2,{116,49,0}}, +/* 18559 */ {(10<<2)|2,{116,49,0}}, +/* 18560 */ {(15<<2)|3,{116,50,48}}, +/* 18561 */ {(15<<2)|3,{116,50,48}}, +/* 18562 */ {(15<<2)|3,{116,50,49}}, +/* 18563 */ {(15<<2)|3,{116,50,49}}, +/* 18564 */ {(15<<2)|3,{116,50,50}}, +/* 18565 */ {(15<<2)|3,{116,50,50}}, +/* 18566 */ {(15<<2)|3,{116,50,97}}, +/* 18567 */ {(15<<2)|3,{116,50,97}}, +/* 18568 */ {(15<<2)|3,{116,50,99}}, +/* 18569 */ {(15<<2)|3,{116,50,99}}, +/* 18570 */ {(15<<2)|3,{116,50,101}}, +/* 18571 */ {(15<<2)|3,{116,50,101}}, +/* 18572 */ {(15<<2)|3,{116,50,105}}, +/* 18573 */ {(15<<2)|3,{116,50,105}}, +/* 18574 */ {(15<<2)|3,{116,50,111}}, +/* 18575 */ {(15<<2)|3,{116,50,111}}, +/* 18576 */ {(15<<2)|3,{116,50,115}}, +/* 18577 */ {(15<<2)|3,{116,50,115}}, +/* 18578 */ {(15<<2)|3,{116,50,116}}, +/* 18579 */ {(15<<2)|3,{116,50,116}}, +/* 18580 */ {(16<<2)|3,{116,50,32}}, +/* 18581 */ {(16<<2)|3,{116,50,37}}, +/* 18582 */ {(16<<2)|3,{116,50,45}}, +/* 18583 */ {(16<<2)|3,{116,50,46}}, +/* 18584 */ {(16<<2)|3,{116,50,47}}, +/* 18585 */ {(16<<2)|3,{116,50,51}}, +/* 18586 */ {(16<<2)|3,{116,50,52}}, +/* 18587 */ {(16<<2)|3,{116,50,53}}, +/* 18588 */ {(16<<2)|3,{116,50,54}}, +/* 18589 */ {(16<<2)|3,{116,50,55}}, +/* 18590 */ {(16<<2)|3,{116,50,56}}, +/* 18591 */ {(16<<2)|3,{116,50,57}}, +/* 18592 */ {(16<<2)|3,{116,50,61}}, +/* 18593 */ {(16<<2)|3,{116,50,65}}, +/* 18594 */ {(16<<2)|3,{116,50,95}}, +/* 18595 */ {(16<<2)|3,{116,50,98}}, +/* 18596 */ {(16<<2)|3,{116,50,100}}, +/* 18597 */ {(16<<2)|3,{116,50,102}}, +/* 18598 */ {(16<<2)|3,{116,50,103}}, +/* 18599 */ {(16<<2)|3,{116,50,104}}, +/* 18600 */ {(16<<2)|3,{116,50,108}}, +/* 18601 */ {(16<<2)|3,{116,50,109}}, +/* 18602 */ {(16<<2)|3,{116,50,110}}, +/* 18603 */ {(16<<2)|3,{116,50,112}}, +/* 18604 */ {(16<<2)|3,{116,50,114}}, +/* 18605 */ {(16<<2)|3,{116,50,117}}, +/* 18606 */ {(10<<2)|2,{116,50,0}}, +/* 18607 */ {(10<<2)|2,{116,50,0}}, +/* 18608 */ {(10<<2)|2,{116,50,0}}, +/* 18609 */ {(10<<2)|2,{116,50,0}}, +/* 18610 */ {(10<<2)|2,{116,50,0}}, +/* 18611 */ {(10<<2)|2,{116,50,0}}, +/* 18612 */ {(10<<2)|2,{116,50,0}}, +/* 18613 */ {(10<<2)|2,{116,50,0}}, +/* 18614 */ {(10<<2)|2,{116,50,0}}, +/* 18615 */ {(10<<2)|2,{116,50,0}}, +/* 18616 */ {(10<<2)|2,{116,50,0}}, +/* 18617 */ {(10<<2)|2,{116,50,0}}, +/* 18618 */ {(10<<2)|2,{116,50,0}}, +/* 18619 */ {(10<<2)|2,{116,50,0}}, +/* 18620 */ {(10<<2)|2,{116,50,0}}, +/* 18621 */ {(10<<2)|2,{116,50,0}}, +/* 18622 */ {(10<<2)|2,{116,50,0}}, +/* 18623 */ {(10<<2)|2,{116,50,0}}, +/* 18624 */ {(15<<2)|3,{116,97,48}}, +/* 18625 */ {(15<<2)|3,{116,97,48}}, +/* 18626 */ {(15<<2)|3,{116,97,49}}, +/* 18627 */ {(15<<2)|3,{116,97,49}}, +/* 18628 */ {(15<<2)|3,{116,97,50}}, +/* 18629 */ {(15<<2)|3,{116,97,50}}, +/* 18630 */ {(15<<2)|3,{116,97,97}}, +/* 18631 */ {(15<<2)|3,{116,97,97}}, +/* 18632 */ {(15<<2)|3,{116,97,99}}, +/* 18633 */ {(15<<2)|3,{116,97,99}}, +/* 18634 */ {(15<<2)|3,{116,97,101}}, +/* 18635 */ {(15<<2)|3,{116,97,101}}, +/* 18636 */ {(15<<2)|3,{116,97,105}}, +/* 18637 */ {(15<<2)|3,{116,97,105}}, +/* 18638 */ {(15<<2)|3,{116,97,111}}, +/* 18639 */ {(15<<2)|3,{116,97,111}}, +/* 18640 */ {(15<<2)|3,{116,97,115}}, +/* 18641 */ {(15<<2)|3,{116,97,115}}, +/* 18642 */ {(15<<2)|3,{116,97,116}}, +/* 18643 */ {(15<<2)|3,{116,97,116}}, +/* 18644 */ {(16<<2)|3,{116,97,32}}, +/* 18645 */ {(16<<2)|3,{116,97,37}}, +/* 18646 */ {(16<<2)|3,{116,97,45}}, +/* 18647 */ {(16<<2)|3,{116,97,46}}, +/* 18648 */ {(16<<2)|3,{116,97,47}}, +/* 18649 */ {(16<<2)|3,{116,97,51}}, +/* 18650 */ {(16<<2)|3,{116,97,52}}, +/* 18651 */ {(16<<2)|3,{116,97,53}}, +/* 18652 */ {(16<<2)|3,{116,97,54}}, +/* 18653 */ {(16<<2)|3,{116,97,55}}, +/* 18654 */ {(16<<2)|3,{116,97,56}}, +/* 18655 */ {(16<<2)|3,{116,97,57}}, +/* 18656 */ {(16<<2)|3,{116,97,61}}, +/* 18657 */ {(16<<2)|3,{116,97,65}}, +/* 18658 */ {(16<<2)|3,{116,97,95}}, +/* 18659 */ {(16<<2)|3,{116,97,98}}, +/* 18660 */ {(16<<2)|3,{116,97,100}}, +/* 18661 */ {(16<<2)|3,{116,97,102}}, +/* 18662 */ {(16<<2)|3,{116,97,103}}, +/* 18663 */ {(16<<2)|3,{116,97,104}}, +/* 18664 */ {(16<<2)|3,{116,97,108}}, +/* 18665 */ {(16<<2)|3,{116,97,109}}, +/* 18666 */ {(16<<2)|3,{116,97,110}}, +/* 18667 */ {(16<<2)|3,{116,97,112}}, +/* 18668 */ {(16<<2)|3,{116,97,114}}, +/* 18669 */ {(16<<2)|3,{116,97,117}}, +/* 18670 */ {(10<<2)|2,{116,97,0}}, +/* 18671 */ {(10<<2)|2,{116,97,0}}, +/* 18672 */ {(10<<2)|2,{116,97,0}}, +/* 18673 */ {(10<<2)|2,{116,97,0}}, +/* 18674 */ {(10<<2)|2,{116,97,0}}, +/* 18675 */ {(10<<2)|2,{116,97,0}}, +/* 18676 */ {(10<<2)|2,{116,97,0}}, +/* 18677 */ {(10<<2)|2,{116,97,0}}, +/* 18678 */ {(10<<2)|2,{116,97,0}}, +/* 18679 */ {(10<<2)|2,{116,97,0}}, +/* 18680 */ {(10<<2)|2,{116,97,0}}, +/* 18681 */ {(10<<2)|2,{116,97,0}}, +/* 18682 */ {(10<<2)|2,{116,97,0}}, +/* 18683 */ {(10<<2)|2,{116,97,0}}, +/* 18684 */ {(10<<2)|2,{116,97,0}}, +/* 18685 */ {(10<<2)|2,{116,97,0}}, +/* 18686 */ {(10<<2)|2,{116,97,0}}, +/* 18687 */ {(10<<2)|2,{116,97,0}}, +/* 18688 */ {(15<<2)|3,{116,99,48}}, +/* 18689 */ {(15<<2)|3,{116,99,48}}, +/* 18690 */ {(15<<2)|3,{116,99,49}}, +/* 18691 */ {(15<<2)|3,{116,99,49}}, +/* 18692 */ {(15<<2)|3,{116,99,50}}, +/* 18693 */ {(15<<2)|3,{116,99,50}}, +/* 18694 */ {(15<<2)|3,{116,99,97}}, +/* 18695 */ {(15<<2)|3,{116,99,97}}, +/* 18696 */ {(15<<2)|3,{116,99,99}}, +/* 18697 */ {(15<<2)|3,{116,99,99}}, +/* 18698 */ {(15<<2)|3,{116,99,101}}, +/* 18699 */ {(15<<2)|3,{116,99,101}}, +/* 18700 */ {(15<<2)|3,{116,99,105}}, +/* 18701 */ {(15<<2)|3,{116,99,105}}, +/* 18702 */ {(15<<2)|3,{116,99,111}}, +/* 18703 */ {(15<<2)|3,{116,99,111}}, +/* 18704 */ {(15<<2)|3,{116,99,115}}, +/* 18705 */ {(15<<2)|3,{116,99,115}}, +/* 18706 */ {(15<<2)|3,{116,99,116}}, +/* 18707 */ {(15<<2)|3,{116,99,116}}, +/* 18708 */ {(16<<2)|3,{116,99,32}}, +/* 18709 */ {(16<<2)|3,{116,99,37}}, +/* 18710 */ {(16<<2)|3,{116,99,45}}, +/* 18711 */ {(16<<2)|3,{116,99,46}}, +/* 18712 */ {(16<<2)|3,{116,99,47}}, +/* 18713 */ {(16<<2)|3,{116,99,51}}, +/* 18714 */ {(16<<2)|3,{116,99,52}}, +/* 18715 */ {(16<<2)|3,{116,99,53}}, +/* 18716 */ {(16<<2)|3,{116,99,54}}, +/* 18717 */ {(16<<2)|3,{116,99,55}}, +/* 18718 */ {(16<<2)|3,{116,99,56}}, +/* 18719 */ {(16<<2)|3,{116,99,57}}, +/* 18720 */ {(16<<2)|3,{116,99,61}}, +/* 18721 */ {(16<<2)|3,{116,99,65}}, +/* 18722 */ {(16<<2)|3,{116,99,95}}, +/* 18723 */ {(16<<2)|3,{116,99,98}}, +/* 18724 */ {(16<<2)|3,{116,99,100}}, +/* 18725 */ {(16<<2)|3,{116,99,102}}, +/* 18726 */ {(16<<2)|3,{116,99,103}}, +/* 18727 */ {(16<<2)|3,{116,99,104}}, +/* 18728 */ {(16<<2)|3,{116,99,108}}, +/* 18729 */ {(16<<2)|3,{116,99,109}}, +/* 18730 */ {(16<<2)|3,{116,99,110}}, +/* 18731 */ {(16<<2)|3,{116,99,112}}, +/* 18732 */ {(16<<2)|3,{116,99,114}}, +/* 18733 */ {(16<<2)|3,{116,99,117}}, +/* 18734 */ {(10<<2)|2,{116,99,0}}, +/* 18735 */ {(10<<2)|2,{116,99,0}}, +/* 18736 */ {(10<<2)|2,{116,99,0}}, +/* 18737 */ {(10<<2)|2,{116,99,0}}, +/* 18738 */ {(10<<2)|2,{116,99,0}}, +/* 18739 */ {(10<<2)|2,{116,99,0}}, +/* 18740 */ {(10<<2)|2,{116,99,0}}, +/* 18741 */ {(10<<2)|2,{116,99,0}}, +/* 18742 */ {(10<<2)|2,{116,99,0}}, +/* 18743 */ {(10<<2)|2,{116,99,0}}, +/* 18744 */ {(10<<2)|2,{116,99,0}}, +/* 18745 */ {(10<<2)|2,{116,99,0}}, +/* 18746 */ {(10<<2)|2,{116,99,0}}, +/* 18747 */ {(10<<2)|2,{116,99,0}}, +/* 18748 */ {(10<<2)|2,{116,99,0}}, +/* 18749 */ {(10<<2)|2,{116,99,0}}, +/* 18750 */ {(10<<2)|2,{116,99,0}}, +/* 18751 */ {(10<<2)|2,{116,99,0}}, +/* 18752 */ {(15<<2)|3,{116,101,48}}, +/* 18753 */ {(15<<2)|3,{116,101,48}}, +/* 18754 */ {(15<<2)|3,{116,101,49}}, +/* 18755 */ {(15<<2)|3,{116,101,49}}, +/* 18756 */ {(15<<2)|3,{116,101,50}}, +/* 18757 */ {(15<<2)|3,{116,101,50}}, +/* 18758 */ {(15<<2)|3,{116,101,97}}, +/* 18759 */ {(15<<2)|3,{116,101,97}}, +/* 18760 */ {(15<<2)|3,{116,101,99}}, +/* 18761 */ {(15<<2)|3,{116,101,99}}, +/* 18762 */ {(15<<2)|3,{116,101,101}}, +/* 18763 */ {(15<<2)|3,{116,101,101}}, +/* 18764 */ {(15<<2)|3,{116,101,105}}, +/* 18765 */ {(15<<2)|3,{116,101,105}}, +/* 18766 */ {(15<<2)|3,{116,101,111}}, +/* 18767 */ {(15<<2)|3,{116,101,111}}, +/* 18768 */ {(15<<2)|3,{116,101,115}}, +/* 18769 */ {(15<<2)|3,{116,101,115}}, +/* 18770 */ {(15<<2)|3,{116,101,116}}, +/* 18771 */ {(15<<2)|3,{116,101,116}}, +/* 18772 */ {(16<<2)|3,{116,101,32}}, +/* 18773 */ {(16<<2)|3,{116,101,37}}, +/* 18774 */ {(16<<2)|3,{116,101,45}}, +/* 18775 */ {(16<<2)|3,{116,101,46}}, +/* 18776 */ {(16<<2)|3,{116,101,47}}, +/* 18777 */ {(16<<2)|3,{116,101,51}}, +/* 18778 */ {(16<<2)|3,{116,101,52}}, +/* 18779 */ {(16<<2)|3,{116,101,53}}, +/* 18780 */ {(16<<2)|3,{116,101,54}}, +/* 18781 */ {(16<<2)|3,{116,101,55}}, +/* 18782 */ {(16<<2)|3,{116,101,56}}, +/* 18783 */ {(16<<2)|3,{116,101,57}}, +/* 18784 */ {(16<<2)|3,{116,101,61}}, +/* 18785 */ {(16<<2)|3,{116,101,65}}, +/* 18786 */ {(16<<2)|3,{116,101,95}}, +/* 18787 */ {(16<<2)|3,{116,101,98}}, +/* 18788 */ {(16<<2)|3,{116,101,100}}, +/* 18789 */ {(16<<2)|3,{116,101,102}}, +/* 18790 */ {(16<<2)|3,{116,101,103}}, +/* 18791 */ {(16<<2)|3,{116,101,104}}, +/* 18792 */ {(16<<2)|3,{116,101,108}}, +/* 18793 */ {(16<<2)|3,{116,101,109}}, +/* 18794 */ {(16<<2)|3,{116,101,110}}, +/* 18795 */ {(16<<2)|3,{116,101,112}}, +/* 18796 */ {(16<<2)|3,{116,101,114}}, +/* 18797 */ {(16<<2)|3,{116,101,117}}, +/* 18798 */ {(10<<2)|2,{116,101,0}}, +/* 18799 */ {(10<<2)|2,{116,101,0}}, +/* 18800 */ {(10<<2)|2,{116,101,0}}, +/* 18801 */ {(10<<2)|2,{116,101,0}}, +/* 18802 */ {(10<<2)|2,{116,101,0}}, +/* 18803 */ {(10<<2)|2,{116,101,0}}, +/* 18804 */ {(10<<2)|2,{116,101,0}}, +/* 18805 */ {(10<<2)|2,{116,101,0}}, +/* 18806 */ {(10<<2)|2,{116,101,0}}, +/* 18807 */ {(10<<2)|2,{116,101,0}}, +/* 18808 */ {(10<<2)|2,{116,101,0}}, +/* 18809 */ {(10<<2)|2,{116,101,0}}, +/* 18810 */ {(10<<2)|2,{116,101,0}}, +/* 18811 */ {(10<<2)|2,{116,101,0}}, +/* 18812 */ {(10<<2)|2,{116,101,0}}, +/* 18813 */ {(10<<2)|2,{116,101,0}}, +/* 18814 */ {(10<<2)|2,{116,101,0}}, +/* 18815 */ {(10<<2)|2,{116,101,0}}, +/* 18816 */ {(15<<2)|3,{116,105,48}}, +/* 18817 */ {(15<<2)|3,{116,105,48}}, +/* 18818 */ {(15<<2)|3,{116,105,49}}, +/* 18819 */ {(15<<2)|3,{116,105,49}}, +/* 18820 */ {(15<<2)|3,{116,105,50}}, +/* 18821 */ {(15<<2)|3,{116,105,50}}, +/* 18822 */ {(15<<2)|3,{116,105,97}}, +/* 18823 */ {(15<<2)|3,{116,105,97}}, +/* 18824 */ {(15<<2)|3,{116,105,99}}, +/* 18825 */ {(15<<2)|3,{116,105,99}}, +/* 18826 */ {(15<<2)|3,{116,105,101}}, +/* 18827 */ {(15<<2)|3,{116,105,101}}, +/* 18828 */ {(15<<2)|3,{116,105,105}}, +/* 18829 */ {(15<<2)|3,{116,105,105}}, +/* 18830 */ {(15<<2)|3,{116,105,111}}, +/* 18831 */ {(15<<2)|3,{116,105,111}}, +/* 18832 */ {(15<<2)|3,{116,105,115}}, +/* 18833 */ {(15<<2)|3,{116,105,115}}, +/* 18834 */ {(15<<2)|3,{116,105,116}}, +/* 18835 */ {(15<<2)|3,{116,105,116}}, +/* 18836 */ {(16<<2)|3,{116,105,32}}, +/* 18837 */ {(16<<2)|3,{116,105,37}}, +/* 18838 */ {(16<<2)|3,{116,105,45}}, +/* 18839 */ {(16<<2)|3,{116,105,46}}, +/* 18840 */ {(16<<2)|3,{116,105,47}}, +/* 18841 */ {(16<<2)|3,{116,105,51}}, +/* 18842 */ {(16<<2)|3,{116,105,52}}, +/* 18843 */ {(16<<2)|3,{116,105,53}}, +/* 18844 */ {(16<<2)|3,{116,105,54}}, +/* 18845 */ {(16<<2)|3,{116,105,55}}, +/* 18846 */ {(16<<2)|3,{116,105,56}}, +/* 18847 */ {(16<<2)|3,{116,105,57}}, +/* 18848 */ {(16<<2)|3,{116,105,61}}, +/* 18849 */ {(16<<2)|3,{116,105,65}}, +/* 18850 */ {(16<<2)|3,{116,105,95}}, +/* 18851 */ {(16<<2)|3,{116,105,98}}, +/* 18852 */ {(16<<2)|3,{116,105,100}}, +/* 18853 */ {(16<<2)|3,{116,105,102}}, +/* 18854 */ {(16<<2)|3,{116,105,103}}, +/* 18855 */ {(16<<2)|3,{116,105,104}}, +/* 18856 */ {(16<<2)|3,{116,105,108}}, +/* 18857 */ {(16<<2)|3,{116,105,109}}, +/* 18858 */ {(16<<2)|3,{116,105,110}}, +/* 18859 */ {(16<<2)|3,{116,105,112}}, +/* 18860 */ {(16<<2)|3,{116,105,114}}, +/* 18861 */ {(16<<2)|3,{116,105,117}}, +/* 18862 */ {(10<<2)|2,{116,105,0}}, +/* 18863 */ {(10<<2)|2,{116,105,0}}, +/* 18864 */ {(10<<2)|2,{116,105,0}}, +/* 18865 */ {(10<<2)|2,{116,105,0}}, +/* 18866 */ {(10<<2)|2,{116,105,0}}, +/* 18867 */ {(10<<2)|2,{116,105,0}}, +/* 18868 */ {(10<<2)|2,{116,105,0}}, +/* 18869 */ {(10<<2)|2,{116,105,0}}, +/* 18870 */ {(10<<2)|2,{116,105,0}}, +/* 18871 */ {(10<<2)|2,{116,105,0}}, +/* 18872 */ {(10<<2)|2,{116,105,0}}, +/* 18873 */ {(10<<2)|2,{116,105,0}}, +/* 18874 */ {(10<<2)|2,{116,105,0}}, +/* 18875 */ {(10<<2)|2,{116,105,0}}, +/* 18876 */ {(10<<2)|2,{116,105,0}}, +/* 18877 */ {(10<<2)|2,{116,105,0}}, +/* 18878 */ {(10<<2)|2,{116,105,0}}, +/* 18879 */ {(10<<2)|2,{116,105,0}}, +/* 18880 */ {(15<<2)|3,{116,111,48}}, +/* 18881 */ {(15<<2)|3,{116,111,48}}, +/* 18882 */ {(15<<2)|3,{116,111,49}}, +/* 18883 */ {(15<<2)|3,{116,111,49}}, +/* 18884 */ {(15<<2)|3,{116,111,50}}, +/* 18885 */ {(15<<2)|3,{116,111,50}}, +/* 18886 */ {(15<<2)|3,{116,111,97}}, +/* 18887 */ {(15<<2)|3,{116,111,97}}, +/* 18888 */ {(15<<2)|3,{116,111,99}}, +/* 18889 */ {(15<<2)|3,{116,111,99}}, +/* 18890 */ {(15<<2)|3,{116,111,101}}, +/* 18891 */ {(15<<2)|3,{116,111,101}}, +/* 18892 */ {(15<<2)|3,{116,111,105}}, +/* 18893 */ {(15<<2)|3,{116,111,105}}, +/* 18894 */ {(15<<2)|3,{116,111,111}}, +/* 18895 */ {(15<<2)|3,{116,111,111}}, +/* 18896 */ {(15<<2)|3,{116,111,115}}, +/* 18897 */ {(15<<2)|3,{116,111,115}}, +/* 18898 */ {(15<<2)|3,{116,111,116}}, +/* 18899 */ {(15<<2)|3,{116,111,116}}, +/* 18900 */ {(16<<2)|3,{116,111,32}}, +/* 18901 */ {(16<<2)|3,{116,111,37}}, +/* 18902 */ {(16<<2)|3,{116,111,45}}, +/* 18903 */ {(16<<2)|3,{116,111,46}}, +/* 18904 */ {(16<<2)|3,{116,111,47}}, +/* 18905 */ {(16<<2)|3,{116,111,51}}, +/* 18906 */ {(16<<2)|3,{116,111,52}}, +/* 18907 */ {(16<<2)|3,{116,111,53}}, +/* 18908 */ {(16<<2)|3,{116,111,54}}, +/* 18909 */ {(16<<2)|3,{116,111,55}}, +/* 18910 */ {(16<<2)|3,{116,111,56}}, +/* 18911 */ {(16<<2)|3,{116,111,57}}, +/* 18912 */ {(16<<2)|3,{116,111,61}}, +/* 18913 */ {(16<<2)|3,{116,111,65}}, +/* 18914 */ {(16<<2)|3,{116,111,95}}, +/* 18915 */ {(16<<2)|3,{116,111,98}}, +/* 18916 */ {(16<<2)|3,{116,111,100}}, +/* 18917 */ {(16<<2)|3,{116,111,102}}, +/* 18918 */ {(16<<2)|3,{116,111,103}}, +/* 18919 */ {(16<<2)|3,{116,111,104}}, +/* 18920 */ {(16<<2)|3,{116,111,108}}, +/* 18921 */ {(16<<2)|3,{116,111,109}}, +/* 18922 */ {(16<<2)|3,{116,111,110}}, +/* 18923 */ {(16<<2)|3,{116,111,112}}, +/* 18924 */ {(16<<2)|3,{116,111,114}}, +/* 18925 */ {(16<<2)|3,{116,111,117}}, +/* 18926 */ {(10<<2)|2,{116,111,0}}, +/* 18927 */ {(10<<2)|2,{116,111,0}}, +/* 18928 */ {(10<<2)|2,{116,111,0}}, +/* 18929 */ {(10<<2)|2,{116,111,0}}, +/* 18930 */ {(10<<2)|2,{116,111,0}}, +/* 18931 */ {(10<<2)|2,{116,111,0}}, +/* 18932 */ {(10<<2)|2,{116,111,0}}, +/* 18933 */ {(10<<2)|2,{116,111,0}}, +/* 18934 */ {(10<<2)|2,{116,111,0}}, +/* 18935 */ {(10<<2)|2,{116,111,0}}, +/* 18936 */ {(10<<2)|2,{116,111,0}}, +/* 18937 */ {(10<<2)|2,{116,111,0}}, +/* 18938 */ {(10<<2)|2,{116,111,0}}, +/* 18939 */ {(10<<2)|2,{116,111,0}}, +/* 18940 */ {(10<<2)|2,{116,111,0}}, +/* 18941 */ {(10<<2)|2,{116,111,0}}, +/* 18942 */ {(10<<2)|2,{116,111,0}}, +/* 18943 */ {(10<<2)|2,{116,111,0}}, +/* 18944 */ {(15<<2)|3,{116,115,48}}, +/* 18945 */ {(15<<2)|3,{116,115,48}}, +/* 18946 */ {(15<<2)|3,{116,115,49}}, +/* 18947 */ {(15<<2)|3,{116,115,49}}, +/* 18948 */ {(15<<2)|3,{116,115,50}}, +/* 18949 */ {(15<<2)|3,{116,115,50}}, +/* 18950 */ {(15<<2)|3,{116,115,97}}, +/* 18951 */ {(15<<2)|3,{116,115,97}}, +/* 18952 */ {(15<<2)|3,{116,115,99}}, +/* 18953 */ {(15<<2)|3,{116,115,99}}, +/* 18954 */ {(15<<2)|3,{116,115,101}}, +/* 18955 */ {(15<<2)|3,{116,115,101}}, +/* 18956 */ {(15<<2)|3,{116,115,105}}, +/* 18957 */ {(15<<2)|3,{116,115,105}}, +/* 18958 */ {(15<<2)|3,{116,115,111}}, +/* 18959 */ {(15<<2)|3,{116,115,111}}, +/* 18960 */ {(15<<2)|3,{116,115,115}}, +/* 18961 */ {(15<<2)|3,{116,115,115}}, +/* 18962 */ {(15<<2)|3,{116,115,116}}, +/* 18963 */ {(15<<2)|3,{116,115,116}}, +/* 18964 */ {(16<<2)|3,{116,115,32}}, +/* 18965 */ {(16<<2)|3,{116,115,37}}, +/* 18966 */ {(16<<2)|3,{116,115,45}}, +/* 18967 */ {(16<<2)|3,{116,115,46}}, +/* 18968 */ {(16<<2)|3,{116,115,47}}, +/* 18969 */ {(16<<2)|3,{116,115,51}}, +/* 18970 */ {(16<<2)|3,{116,115,52}}, +/* 18971 */ {(16<<2)|3,{116,115,53}}, +/* 18972 */ {(16<<2)|3,{116,115,54}}, +/* 18973 */ {(16<<2)|3,{116,115,55}}, +/* 18974 */ {(16<<2)|3,{116,115,56}}, +/* 18975 */ {(16<<2)|3,{116,115,57}}, +/* 18976 */ {(16<<2)|3,{116,115,61}}, +/* 18977 */ {(16<<2)|3,{116,115,65}}, +/* 18978 */ {(16<<2)|3,{116,115,95}}, +/* 18979 */ {(16<<2)|3,{116,115,98}}, +/* 18980 */ {(16<<2)|3,{116,115,100}}, +/* 18981 */ {(16<<2)|3,{116,115,102}}, +/* 18982 */ {(16<<2)|3,{116,115,103}}, +/* 18983 */ {(16<<2)|3,{116,115,104}}, +/* 18984 */ {(16<<2)|3,{116,115,108}}, +/* 18985 */ {(16<<2)|3,{116,115,109}}, +/* 18986 */ {(16<<2)|3,{116,115,110}}, +/* 18987 */ {(16<<2)|3,{116,115,112}}, +/* 18988 */ {(16<<2)|3,{116,115,114}}, +/* 18989 */ {(16<<2)|3,{116,115,117}}, +/* 18990 */ {(10<<2)|2,{116,115,0}}, +/* 18991 */ {(10<<2)|2,{116,115,0}}, +/* 18992 */ {(10<<2)|2,{116,115,0}}, +/* 18993 */ {(10<<2)|2,{116,115,0}}, +/* 18994 */ {(10<<2)|2,{116,115,0}}, +/* 18995 */ {(10<<2)|2,{116,115,0}}, +/* 18996 */ {(10<<2)|2,{116,115,0}}, +/* 18997 */ {(10<<2)|2,{116,115,0}}, +/* 18998 */ {(10<<2)|2,{116,115,0}}, +/* 18999 */ {(10<<2)|2,{116,115,0}}, +/* 19000 */ {(10<<2)|2,{116,115,0}}, +/* 19001 */ {(10<<2)|2,{116,115,0}}, +/* 19002 */ {(10<<2)|2,{116,115,0}}, +/* 19003 */ {(10<<2)|2,{116,115,0}}, +/* 19004 */ {(10<<2)|2,{116,115,0}}, +/* 19005 */ {(10<<2)|2,{116,115,0}}, +/* 19006 */ {(10<<2)|2,{116,115,0}}, +/* 19007 */ {(10<<2)|2,{116,115,0}}, +/* 19008 */ {(15<<2)|3,{116,116,48}}, +/* 19009 */ {(15<<2)|3,{116,116,48}}, +/* 19010 */ {(15<<2)|3,{116,116,49}}, +/* 19011 */ {(15<<2)|3,{116,116,49}}, +/* 19012 */ {(15<<2)|3,{116,116,50}}, +/* 19013 */ {(15<<2)|3,{116,116,50}}, +/* 19014 */ {(15<<2)|3,{116,116,97}}, +/* 19015 */ {(15<<2)|3,{116,116,97}}, +/* 19016 */ {(15<<2)|3,{116,116,99}}, +/* 19017 */ {(15<<2)|3,{116,116,99}}, +/* 19018 */ {(15<<2)|3,{116,116,101}}, +/* 19019 */ {(15<<2)|3,{116,116,101}}, +/* 19020 */ {(15<<2)|3,{116,116,105}}, +/* 19021 */ {(15<<2)|3,{116,116,105}}, +/* 19022 */ {(15<<2)|3,{116,116,111}}, +/* 19023 */ {(15<<2)|3,{116,116,111}}, +/* 19024 */ {(15<<2)|3,{116,116,115}}, +/* 19025 */ {(15<<2)|3,{116,116,115}}, +/* 19026 */ {(15<<2)|3,{116,116,116}}, +/* 19027 */ {(15<<2)|3,{116,116,116}}, +/* 19028 */ {(16<<2)|3,{116,116,32}}, +/* 19029 */ {(16<<2)|3,{116,116,37}}, +/* 19030 */ {(16<<2)|3,{116,116,45}}, +/* 19031 */ {(16<<2)|3,{116,116,46}}, +/* 19032 */ {(16<<2)|3,{116,116,47}}, +/* 19033 */ {(16<<2)|3,{116,116,51}}, +/* 19034 */ {(16<<2)|3,{116,116,52}}, +/* 19035 */ {(16<<2)|3,{116,116,53}}, +/* 19036 */ {(16<<2)|3,{116,116,54}}, +/* 19037 */ {(16<<2)|3,{116,116,55}}, +/* 19038 */ {(16<<2)|3,{116,116,56}}, +/* 19039 */ {(16<<2)|3,{116,116,57}}, +/* 19040 */ {(16<<2)|3,{116,116,61}}, +/* 19041 */ {(16<<2)|3,{116,116,65}}, +/* 19042 */ {(16<<2)|3,{116,116,95}}, +/* 19043 */ {(16<<2)|3,{116,116,98}}, +/* 19044 */ {(16<<2)|3,{116,116,100}}, +/* 19045 */ {(16<<2)|3,{116,116,102}}, +/* 19046 */ {(16<<2)|3,{116,116,103}}, +/* 19047 */ {(16<<2)|3,{116,116,104}}, +/* 19048 */ {(16<<2)|3,{116,116,108}}, +/* 19049 */ {(16<<2)|3,{116,116,109}}, +/* 19050 */ {(16<<2)|3,{116,116,110}}, +/* 19051 */ {(16<<2)|3,{116,116,112}}, +/* 19052 */ {(16<<2)|3,{116,116,114}}, +/* 19053 */ {(16<<2)|3,{116,116,117}}, +/* 19054 */ {(10<<2)|2,{116,116,0}}, +/* 19055 */ {(10<<2)|2,{116,116,0}}, +/* 19056 */ {(10<<2)|2,{116,116,0}}, +/* 19057 */ {(10<<2)|2,{116,116,0}}, +/* 19058 */ {(10<<2)|2,{116,116,0}}, +/* 19059 */ {(10<<2)|2,{116,116,0}}, +/* 19060 */ {(10<<2)|2,{116,116,0}}, +/* 19061 */ {(10<<2)|2,{116,116,0}}, +/* 19062 */ {(10<<2)|2,{116,116,0}}, +/* 19063 */ {(10<<2)|2,{116,116,0}}, +/* 19064 */ {(10<<2)|2,{116,116,0}}, +/* 19065 */ {(10<<2)|2,{116,116,0}}, +/* 19066 */ {(10<<2)|2,{116,116,0}}, +/* 19067 */ {(10<<2)|2,{116,116,0}}, +/* 19068 */ {(10<<2)|2,{116,116,0}}, +/* 19069 */ {(10<<2)|2,{116,116,0}}, +/* 19070 */ {(10<<2)|2,{116,116,0}}, +/* 19071 */ {(10<<2)|2,{116,116,0}}, +/* 19072 */ {(16<<2)|3,{116,32,48}}, +/* 19073 */ {(16<<2)|3,{116,32,49}}, +/* 19074 */ {(16<<2)|3,{116,32,50}}, +/* 19075 */ {(16<<2)|3,{116,32,97}}, +/* 19076 */ {(16<<2)|3,{116,32,99}}, +/* 19077 */ {(16<<2)|3,{116,32,101}}, +/* 19078 */ {(16<<2)|3,{116,32,105}}, +/* 19079 */ {(16<<2)|3,{116,32,111}}, +/* 19080 */ {(16<<2)|3,{116,32,115}}, +/* 19081 */ {(16<<2)|3,{116,32,116}}, +/* 19082 */ {(11<<2)|2,{116,32,0}}, +/* 19083 */ {(11<<2)|2,{116,32,0}}, +/* 19084 */ {(11<<2)|2,{116,32,0}}, +/* 19085 */ {(11<<2)|2,{116,32,0}}, +/* 19086 */ {(11<<2)|2,{116,32,0}}, +/* 19087 */ {(11<<2)|2,{116,32,0}}, +/* 19088 */ {(11<<2)|2,{116,32,0}}, +/* 19089 */ {(11<<2)|2,{116,32,0}}, +/* 19090 */ {(11<<2)|2,{116,32,0}}, +/* 19091 */ {(11<<2)|2,{116,32,0}}, +/* 19092 */ {(11<<2)|2,{116,32,0}}, +/* 19093 */ {(11<<2)|2,{116,32,0}}, +/* 19094 */ {(11<<2)|2,{116,32,0}}, +/* 19095 */ {(11<<2)|2,{116,32,0}}, +/* 19096 */ {(11<<2)|2,{116,32,0}}, +/* 19097 */ {(11<<2)|2,{116,32,0}}, +/* 19098 */ {(11<<2)|2,{116,32,0}}, +/* 19099 */ {(11<<2)|2,{116,32,0}}, +/* 19100 */ {(11<<2)|2,{116,32,0}}, +/* 19101 */ {(11<<2)|2,{116,32,0}}, +/* 19102 */ {(11<<2)|2,{116,32,0}}, +/* 19103 */ {(11<<2)|2,{116,32,0}}, +/* 19104 */ {(16<<2)|3,{116,37,48}}, +/* 19105 */ {(16<<2)|3,{116,37,49}}, +/* 19106 */ {(16<<2)|3,{116,37,50}}, +/* 19107 */ {(16<<2)|3,{116,37,97}}, +/* 19108 */ {(16<<2)|3,{116,37,99}}, +/* 19109 */ {(16<<2)|3,{116,37,101}}, +/* 19110 */ {(16<<2)|3,{116,37,105}}, +/* 19111 */ {(16<<2)|3,{116,37,111}}, +/* 19112 */ {(16<<2)|3,{116,37,115}}, +/* 19113 */ {(16<<2)|3,{116,37,116}}, +/* 19114 */ {(11<<2)|2,{116,37,0}}, +/* 19115 */ {(11<<2)|2,{116,37,0}}, +/* 19116 */ {(11<<2)|2,{116,37,0}}, +/* 19117 */ {(11<<2)|2,{116,37,0}}, +/* 19118 */ {(11<<2)|2,{116,37,0}}, +/* 19119 */ {(11<<2)|2,{116,37,0}}, +/* 19120 */ {(11<<2)|2,{116,37,0}}, +/* 19121 */ {(11<<2)|2,{116,37,0}}, +/* 19122 */ {(11<<2)|2,{116,37,0}}, +/* 19123 */ {(11<<2)|2,{116,37,0}}, +/* 19124 */ {(11<<2)|2,{116,37,0}}, +/* 19125 */ {(11<<2)|2,{116,37,0}}, +/* 19126 */ {(11<<2)|2,{116,37,0}}, +/* 19127 */ {(11<<2)|2,{116,37,0}}, +/* 19128 */ {(11<<2)|2,{116,37,0}}, +/* 19129 */ {(11<<2)|2,{116,37,0}}, +/* 19130 */ {(11<<2)|2,{116,37,0}}, +/* 19131 */ {(11<<2)|2,{116,37,0}}, +/* 19132 */ {(11<<2)|2,{116,37,0}}, +/* 19133 */ {(11<<2)|2,{116,37,0}}, +/* 19134 */ {(11<<2)|2,{116,37,0}}, +/* 19135 */ {(11<<2)|2,{116,37,0}}, +/* 19136 */ {(16<<2)|3,{116,45,48}}, +/* 19137 */ {(16<<2)|3,{116,45,49}}, +/* 19138 */ {(16<<2)|3,{116,45,50}}, +/* 19139 */ {(16<<2)|3,{116,45,97}}, +/* 19140 */ {(16<<2)|3,{116,45,99}}, +/* 19141 */ {(16<<2)|3,{116,45,101}}, +/* 19142 */ {(16<<2)|3,{116,45,105}}, +/* 19143 */ {(16<<2)|3,{116,45,111}}, +/* 19144 */ {(16<<2)|3,{116,45,115}}, +/* 19145 */ {(16<<2)|3,{116,45,116}}, +/* 19146 */ {(11<<2)|2,{116,45,0}}, +/* 19147 */ {(11<<2)|2,{116,45,0}}, +/* 19148 */ {(11<<2)|2,{116,45,0}}, +/* 19149 */ {(11<<2)|2,{116,45,0}}, +/* 19150 */ {(11<<2)|2,{116,45,0}}, +/* 19151 */ {(11<<2)|2,{116,45,0}}, +/* 19152 */ {(11<<2)|2,{116,45,0}}, +/* 19153 */ {(11<<2)|2,{116,45,0}}, +/* 19154 */ {(11<<2)|2,{116,45,0}}, +/* 19155 */ {(11<<2)|2,{116,45,0}}, +/* 19156 */ {(11<<2)|2,{116,45,0}}, +/* 19157 */ {(11<<2)|2,{116,45,0}}, +/* 19158 */ {(11<<2)|2,{116,45,0}}, +/* 19159 */ {(11<<2)|2,{116,45,0}}, +/* 19160 */ {(11<<2)|2,{116,45,0}}, +/* 19161 */ {(11<<2)|2,{116,45,0}}, +/* 19162 */ {(11<<2)|2,{116,45,0}}, +/* 19163 */ {(11<<2)|2,{116,45,0}}, +/* 19164 */ {(11<<2)|2,{116,45,0}}, +/* 19165 */ {(11<<2)|2,{116,45,0}}, +/* 19166 */ {(11<<2)|2,{116,45,0}}, +/* 19167 */ {(11<<2)|2,{116,45,0}}, +/* 19168 */ {(16<<2)|3,{116,46,48}}, +/* 19169 */ {(16<<2)|3,{116,46,49}}, +/* 19170 */ {(16<<2)|3,{116,46,50}}, +/* 19171 */ {(16<<2)|3,{116,46,97}}, +/* 19172 */ {(16<<2)|3,{116,46,99}}, +/* 19173 */ {(16<<2)|3,{116,46,101}}, +/* 19174 */ {(16<<2)|3,{116,46,105}}, +/* 19175 */ {(16<<2)|3,{116,46,111}}, +/* 19176 */ {(16<<2)|3,{116,46,115}}, +/* 19177 */ {(16<<2)|3,{116,46,116}}, +/* 19178 */ {(11<<2)|2,{116,46,0}}, +/* 19179 */ {(11<<2)|2,{116,46,0}}, +/* 19180 */ {(11<<2)|2,{116,46,0}}, +/* 19181 */ {(11<<2)|2,{116,46,0}}, +/* 19182 */ {(11<<2)|2,{116,46,0}}, +/* 19183 */ {(11<<2)|2,{116,46,0}}, +/* 19184 */ {(11<<2)|2,{116,46,0}}, +/* 19185 */ {(11<<2)|2,{116,46,0}}, +/* 19186 */ {(11<<2)|2,{116,46,0}}, +/* 19187 */ {(11<<2)|2,{116,46,0}}, +/* 19188 */ {(11<<2)|2,{116,46,0}}, +/* 19189 */ {(11<<2)|2,{116,46,0}}, +/* 19190 */ {(11<<2)|2,{116,46,0}}, +/* 19191 */ {(11<<2)|2,{116,46,0}}, +/* 19192 */ {(11<<2)|2,{116,46,0}}, +/* 19193 */ {(11<<2)|2,{116,46,0}}, +/* 19194 */ {(11<<2)|2,{116,46,0}}, +/* 19195 */ {(11<<2)|2,{116,46,0}}, +/* 19196 */ {(11<<2)|2,{116,46,0}}, +/* 19197 */ {(11<<2)|2,{116,46,0}}, +/* 19198 */ {(11<<2)|2,{116,46,0}}, +/* 19199 */ {(11<<2)|2,{116,46,0}}, +/* 19200 */ {(16<<2)|3,{116,47,48}}, +/* 19201 */ {(16<<2)|3,{116,47,49}}, +/* 19202 */ {(16<<2)|3,{116,47,50}}, +/* 19203 */ {(16<<2)|3,{116,47,97}}, +/* 19204 */ {(16<<2)|3,{116,47,99}}, +/* 19205 */ {(16<<2)|3,{116,47,101}}, +/* 19206 */ {(16<<2)|3,{116,47,105}}, +/* 19207 */ {(16<<2)|3,{116,47,111}}, +/* 19208 */ {(16<<2)|3,{116,47,115}}, +/* 19209 */ {(16<<2)|3,{116,47,116}}, +/* 19210 */ {(11<<2)|2,{116,47,0}}, +/* 19211 */ {(11<<2)|2,{116,47,0}}, +/* 19212 */ {(11<<2)|2,{116,47,0}}, +/* 19213 */ {(11<<2)|2,{116,47,0}}, +/* 19214 */ {(11<<2)|2,{116,47,0}}, +/* 19215 */ {(11<<2)|2,{116,47,0}}, +/* 19216 */ {(11<<2)|2,{116,47,0}}, +/* 19217 */ {(11<<2)|2,{116,47,0}}, +/* 19218 */ {(11<<2)|2,{116,47,0}}, +/* 19219 */ {(11<<2)|2,{116,47,0}}, +/* 19220 */ {(11<<2)|2,{116,47,0}}, +/* 19221 */ {(11<<2)|2,{116,47,0}}, +/* 19222 */ {(11<<2)|2,{116,47,0}}, +/* 19223 */ {(11<<2)|2,{116,47,0}}, +/* 19224 */ {(11<<2)|2,{116,47,0}}, +/* 19225 */ {(11<<2)|2,{116,47,0}}, +/* 19226 */ {(11<<2)|2,{116,47,0}}, +/* 19227 */ {(11<<2)|2,{116,47,0}}, +/* 19228 */ {(11<<2)|2,{116,47,0}}, +/* 19229 */ {(11<<2)|2,{116,47,0}}, +/* 19230 */ {(11<<2)|2,{116,47,0}}, +/* 19231 */ {(11<<2)|2,{116,47,0}}, +/* 19232 */ {(16<<2)|3,{116,51,48}}, +/* 19233 */ {(16<<2)|3,{116,51,49}}, +/* 19234 */ {(16<<2)|3,{116,51,50}}, +/* 19235 */ {(16<<2)|3,{116,51,97}}, +/* 19236 */ {(16<<2)|3,{116,51,99}}, +/* 19237 */ {(16<<2)|3,{116,51,101}}, +/* 19238 */ {(16<<2)|3,{116,51,105}}, +/* 19239 */ {(16<<2)|3,{116,51,111}}, +/* 19240 */ {(16<<2)|3,{116,51,115}}, +/* 19241 */ {(16<<2)|3,{116,51,116}}, +/* 19242 */ {(11<<2)|2,{116,51,0}}, +/* 19243 */ {(11<<2)|2,{116,51,0}}, +/* 19244 */ {(11<<2)|2,{116,51,0}}, +/* 19245 */ {(11<<2)|2,{116,51,0}}, +/* 19246 */ {(11<<2)|2,{116,51,0}}, +/* 19247 */ {(11<<2)|2,{116,51,0}}, +/* 19248 */ {(11<<2)|2,{116,51,0}}, +/* 19249 */ {(11<<2)|2,{116,51,0}}, +/* 19250 */ {(11<<2)|2,{116,51,0}}, +/* 19251 */ {(11<<2)|2,{116,51,0}}, +/* 19252 */ {(11<<2)|2,{116,51,0}}, +/* 19253 */ {(11<<2)|2,{116,51,0}}, +/* 19254 */ {(11<<2)|2,{116,51,0}}, +/* 19255 */ {(11<<2)|2,{116,51,0}}, +/* 19256 */ {(11<<2)|2,{116,51,0}}, +/* 19257 */ {(11<<2)|2,{116,51,0}}, +/* 19258 */ {(11<<2)|2,{116,51,0}}, +/* 19259 */ {(11<<2)|2,{116,51,0}}, +/* 19260 */ {(11<<2)|2,{116,51,0}}, +/* 19261 */ {(11<<2)|2,{116,51,0}}, +/* 19262 */ {(11<<2)|2,{116,51,0}}, +/* 19263 */ {(11<<2)|2,{116,51,0}}, +/* 19264 */ {(16<<2)|3,{116,52,48}}, +/* 19265 */ {(16<<2)|3,{116,52,49}}, +/* 19266 */ {(16<<2)|3,{116,52,50}}, +/* 19267 */ {(16<<2)|3,{116,52,97}}, +/* 19268 */ {(16<<2)|3,{116,52,99}}, +/* 19269 */ {(16<<2)|3,{116,52,101}}, +/* 19270 */ {(16<<2)|3,{116,52,105}}, +/* 19271 */ {(16<<2)|3,{116,52,111}}, +/* 19272 */ {(16<<2)|3,{116,52,115}}, +/* 19273 */ {(16<<2)|3,{116,52,116}}, +/* 19274 */ {(11<<2)|2,{116,52,0}}, +/* 19275 */ {(11<<2)|2,{116,52,0}}, +/* 19276 */ {(11<<2)|2,{116,52,0}}, +/* 19277 */ {(11<<2)|2,{116,52,0}}, +/* 19278 */ {(11<<2)|2,{116,52,0}}, +/* 19279 */ {(11<<2)|2,{116,52,0}}, +/* 19280 */ {(11<<2)|2,{116,52,0}}, +/* 19281 */ {(11<<2)|2,{116,52,0}}, +/* 19282 */ {(11<<2)|2,{116,52,0}}, +/* 19283 */ {(11<<2)|2,{116,52,0}}, +/* 19284 */ {(11<<2)|2,{116,52,0}}, +/* 19285 */ {(11<<2)|2,{116,52,0}}, +/* 19286 */ {(11<<2)|2,{116,52,0}}, +/* 19287 */ {(11<<2)|2,{116,52,0}}, +/* 19288 */ {(11<<2)|2,{116,52,0}}, +/* 19289 */ {(11<<2)|2,{116,52,0}}, +/* 19290 */ {(11<<2)|2,{116,52,0}}, +/* 19291 */ {(11<<2)|2,{116,52,0}}, +/* 19292 */ {(11<<2)|2,{116,52,0}}, +/* 19293 */ {(11<<2)|2,{116,52,0}}, +/* 19294 */ {(11<<2)|2,{116,52,0}}, +/* 19295 */ {(11<<2)|2,{116,52,0}}, +/* 19296 */ {(16<<2)|3,{116,53,48}}, +/* 19297 */ {(16<<2)|3,{116,53,49}}, +/* 19298 */ {(16<<2)|3,{116,53,50}}, +/* 19299 */ {(16<<2)|3,{116,53,97}}, +/* 19300 */ {(16<<2)|3,{116,53,99}}, +/* 19301 */ {(16<<2)|3,{116,53,101}}, +/* 19302 */ {(16<<2)|3,{116,53,105}}, +/* 19303 */ {(16<<2)|3,{116,53,111}}, +/* 19304 */ {(16<<2)|3,{116,53,115}}, +/* 19305 */ {(16<<2)|3,{116,53,116}}, +/* 19306 */ {(11<<2)|2,{116,53,0}}, +/* 19307 */ {(11<<2)|2,{116,53,0}}, +/* 19308 */ {(11<<2)|2,{116,53,0}}, +/* 19309 */ {(11<<2)|2,{116,53,0}}, +/* 19310 */ {(11<<2)|2,{116,53,0}}, +/* 19311 */ {(11<<2)|2,{116,53,0}}, +/* 19312 */ {(11<<2)|2,{116,53,0}}, +/* 19313 */ {(11<<2)|2,{116,53,0}}, +/* 19314 */ {(11<<2)|2,{116,53,0}}, +/* 19315 */ {(11<<2)|2,{116,53,0}}, +/* 19316 */ {(11<<2)|2,{116,53,0}}, +/* 19317 */ {(11<<2)|2,{116,53,0}}, +/* 19318 */ {(11<<2)|2,{116,53,0}}, +/* 19319 */ {(11<<2)|2,{116,53,0}}, +/* 19320 */ {(11<<2)|2,{116,53,0}}, +/* 19321 */ {(11<<2)|2,{116,53,0}}, +/* 19322 */ {(11<<2)|2,{116,53,0}}, +/* 19323 */ {(11<<2)|2,{116,53,0}}, +/* 19324 */ {(11<<2)|2,{116,53,0}}, +/* 19325 */ {(11<<2)|2,{116,53,0}}, +/* 19326 */ {(11<<2)|2,{116,53,0}}, +/* 19327 */ {(11<<2)|2,{116,53,0}}, +/* 19328 */ {(16<<2)|3,{116,54,48}}, +/* 19329 */ {(16<<2)|3,{116,54,49}}, +/* 19330 */ {(16<<2)|3,{116,54,50}}, +/* 19331 */ {(16<<2)|3,{116,54,97}}, +/* 19332 */ {(16<<2)|3,{116,54,99}}, +/* 19333 */ {(16<<2)|3,{116,54,101}}, +/* 19334 */ {(16<<2)|3,{116,54,105}}, +/* 19335 */ {(16<<2)|3,{116,54,111}}, +/* 19336 */ {(16<<2)|3,{116,54,115}}, +/* 19337 */ {(16<<2)|3,{116,54,116}}, +/* 19338 */ {(11<<2)|2,{116,54,0}}, +/* 19339 */ {(11<<2)|2,{116,54,0}}, +/* 19340 */ {(11<<2)|2,{116,54,0}}, +/* 19341 */ {(11<<2)|2,{116,54,0}}, +/* 19342 */ {(11<<2)|2,{116,54,0}}, +/* 19343 */ {(11<<2)|2,{116,54,0}}, +/* 19344 */ {(11<<2)|2,{116,54,0}}, +/* 19345 */ {(11<<2)|2,{116,54,0}}, +/* 19346 */ {(11<<2)|2,{116,54,0}}, +/* 19347 */ {(11<<2)|2,{116,54,0}}, +/* 19348 */ {(11<<2)|2,{116,54,0}}, +/* 19349 */ {(11<<2)|2,{116,54,0}}, +/* 19350 */ {(11<<2)|2,{116,54,0}}, +/* 19351 */ {(11<<2)|2,{116,54,0}}, +/* 19352 */ {(11<<2)|2,{116,54,0}}, +/* 19353 */ {(11<<2)|2,{116,54,0}}, +/* 19354 */ {(11<<2)|2,{116,54,0}}, +/* 19355 */ {(11<<2)|2,{116,54,0}}, +/* 19356 */ {(11<<2)|2,{116,54,0}}, +/* 19357 */ {(11<<2)|2,{116,54,0}}, +/* 19358 */ {(11<<2)|2,{116,54,0}}, +/* 19359 */ {(11<<2)|2,{116,54,0}}, +/* 19360 */ {(16<<2)|3,{116,55,48}}, +/* 19361 */ {(16<<2)|3,{116,55,49}}, +/* 19362 */ {(16<<2)|3,{116,55,50}}, +/* 19363 */ {(16<<2)|3,{116,55,97}}, +/* 19364 */ {(16<<2)|3,{116,55,99}}, +/* 19365 */ {(16<<2)|3,{116,55,101}}, +/* 19366 */ {(16<<2)|3,{116,55,105}}, +/* 19367 */ {(16<<2)|3,{116,55,111}}, +/* 19368 */ {(16<<2)|3,{116,55,115}}, +/* 19369 */ {(16<<2)|3,{116,55,116}}, +/* 19370 */ {(11<<2)|2,{116,55,0}}, +/* 19371 */ {(11<<2)|2,{116,55,0}}, +/* 19372 */ {(11<<2)|2,{116,55,0}}, +/* 19373 */ {(11<<2)|2,{116,55,0}}, +/* 19374 */ {(11<<2)|2,{116,55,0}}, +/* 19375 */ {(11<<2)|2,{116,55,0}}, +/* 19376 */ {(11<<2)|2,{116,55,0}}, +/* 19377 */ {(11<<2)|2,{116,55,0}}, +/* 19378 */ {(11<<2)|2,{116,55,0}}, +/* 19379 */ {(11<<2)|2,{116,55,0}}, +/* 19380 */ {(11<<2)|2,{116,55,0}}, +/* 19381 */ {(11<<2)|2,{116,55,0}}, +/* 19382 */ {(11<<2)|2,{116,55,0}}, +/* 19383 */ {(11<<2)|2,{116,55,0}}, +/* 19384 */ {(11<<2)|2,{116,55,0}}, +/* 19385 */ {(11<<2)|2,{116,55,0}}, +/* 19386 */ {(11<<2)|2,{116,55,0}}, +/* 19387 */ {(11<<2)|2,{116,55,0}}, +/* 19388 */ {(11<<2)|2,{116,55,0}}, +/* 19389 */ {(11<<2)|2,{116,55,0}}, +/* 19390 */ {(11<<2)|2,{116,55,0}}, +/* 19391 */ {(11<<2)|2,{116,55,0}}, +/* 19392 */ {(16<<2)|3,{116,56,48}}, +/* 19393 */ {(16<<2)|3,{116,56,49}}, +/* 19394 */ {(16<<2)|3,{116,56,50}}, +/* 19395 */ {(16<<2)|3,{116,56,97}}, +/* 19396 */ {(16<<2)|3,{116,56,99}}, +/* 19397 */ {(16<<2)|3,{116,56,101}}, +/* 19398 */ {(16<<2)|3,{116,56,105}}, +/* 19399 */ {(16<<2)|3,{116,56,111}}, +/* 19400 */ {(16<<2)|3,{116,56,115}}, +/* 19401 */ {(16<<2)|3,{116,56,116}}, +/* 19402 */ {(11<<2)|2,{116,56,0}}, +/* 19403 */ {(11<<2)|2,{116,56,0}}, +/* 19404 */ {(11<<2)|2,{116,56,0}}, +/* 19405 */ {(11<<2)|2,{116,56,0}}, +/* 19406 */ {(11<<2)|2,{116,56,0}}, +/* 19407 */ {(11<<2)|2,{116,56,0}}, +/* 19408 */ {(11<<2)|2,{116,56,0}}, +/* 19409 */ {(11<<2)|2,{116,56,0}}, +/* 19410 */ {(11<<2)|2,{116,56,0}}, +/* 19411 */ {(11<<2)|2,{116,56,0}}, +/* 19412 */ {(11<<2)|2,{116,56,0}}, +/* 19413 */ {(11<<2)|2,{116,56,0}}, +/* 19414 */ {(11<<2)|2,{116,56,0}}, +/* 19415 */ {(11<<2)|2,{116,56,0}}, +/* 19416 */ {(11<<2)|2,{116,56,0}}, +/* 19417 */ {(11<<2)|2,{116,56,0}}, +/* 19418 */ {(11<<2)|2,{116,56,0}}, +/* 19419 */ {(11<<2)|2,{116,56,0}}, +/* 19420 */ {(11<<2)|2,{116,56,0}}, +/* 19421 */ {(11<<2)|2,{116,56,0}}, +/* 19422 */ {(11<<2)|2,{116,56,0}}, +/* 19423 */ {(11<<2)|2,{116,56,0}}, +/* 19424 */ {(16<<2)|3,{116,57,48}}, +/* 19425 */ {(16<<2)|3,{116,57,49}}, +/* 19426 */ {(16<<2)|3,{116,57,50}}, +/* 19427 */ {(16<<2)|3,{116,57,97}}, +/* 19428 */ {(16<<2)|3,{116,57,99}}, +/* 19429 */ {(16<<2)|3,{116,57,101}}, +/* 19430 */ {(16<<2)|3,{116,57,105}}, +/* 19431 */ {(16<<2)|3,{116,57,111}}, +/* 19432 */ {(16<<2)|3,{116,57,115}}, +/* 19433 */ {(16<<2)|3,{116,57,116}}, +/* 19434 */ {(11<<2)|2,{116,57,0}}, +/* 19435 */ {(11<<2)|2,{116,57,0}}, +/* 19436 */ {(11<<2)|2,{116,57,0}}, +/* 19437 */ {(11<<2)|2,{116,57,0}}, +/* 19438 */ {(11<<2)|2,{116,57,0}}, +/* 19439 */ {(11<<2)|2,{116,57,0}}, +/* 19440 */ {(11<<2)|2,{116,57,0}}, +/* 19441 */ {(11<<2)|2,{116,57,0}}, +/* 19442 */ {(11<<2)|2,{116,57,0}}, +/* 19443 */ {(11<<2)|2,{116,57,0}}, +/* 19444 */ {(11<<2)|2,{116,57,0}}, +/* 19445 */ {(11<<2)|2,{116,57,0}}, +/* 19446 */ {(11<<2)|2,{116,57,0}}, +/* 19447 */ {(11<<2)|2,{116,57,0}}, +/* 19448 */ {(11<<2)|2,{116,57,0}}, +/* 19449 */ {(11<<2)|2,{116,57,0}}, +/* 19450 */ {(11<<2)|2,{116,57,0}}, +/* 19451 */ {(11<<2)|2,{116,57,0}}, +/* 19452 */ {(11<<2)|2,{116,57,0}}, +/* 19453 */ {(11<<2)|2,{116,57,0}}, +/* 19454 */ {(11<<2)|2,{116,57,0}}, +/* 19455 */ {(11<<2)|2,{116,57,0}}, +/* 19456 */ {(16<<2)|3,{116,61,48}}, +/* 19457 */ {(16<<2)|3,{116,61,49}}, +/* 19458 */ {(16<<2)|3,{116,61,50}}, +/* 19459 */ {(16<<2)|3,{116,61,97}}, +/* 19460 */ {(16<<2)|3,{116,61,99}}, +/* 19461 */ {(16<<2)|3,{116,61,101}}, +/* 19462 */ {(16<<2)|3,{116,61,105}}, +/* 19463 */ {(16<<2)|3,{116,61,111}}, +/* 19464 */ {(16<<2)|3,{116,61,115}}, +/* 19465 */ {(16<<2)|3,{116,61,116}}, +/* 19466 */ {(11<<2)|2,{116,61,0}}, +/* 19467 */ {(11<<2)|2,{116,61,0}}, +/* 19468 */ {(11<<2)|2,{116,61,0}}, +/* 19469 */ {(11<<2)|2,{116,61,0}}, +/* 19470 */ {(11<<2)|2,{116,61,0}}, +/* 19471 */ {(11<<2)|2,{116,61,0}}, +/* 19472 */ {(11<<2)|2,{116,61,0}}, +/* 19473 */ {(11<<2)|2,{116,61,0}}, +/* 19474 */ {(11<<2)|2,{116,61,0}}, +/* 19475 */ {(11<<2)|2,{116,61,0}}, +/* 19476 */ {(11<<2)|2,{116,61,0}}, +/* 19477 */ {(11<<2)|2,{116,61,0}}, +/* 19478 */ {(11<<2)|2,{116,61,0}}, +/* 19479 */ {(11<<2)|2,{116,61,0}}, +/* 19480 */ {(11<<2)|2,{116,61,0}}, +/* 19481 */ {(11<<2)|2,{116,61,0}}, +/* 19482 */ {(11<<2)|2,{116,61,0}}, +/* 19483 */ {(11<<2)|2,{116,61,0}}, +/* 19484 */ {(11<<2)|2,{116,61,0}}, +/* 19485 */ {(11<<2)|2,{116,61,0}}, +/* 19486 */ {(11<<2)|2,{116,61,0}}, +/* 19487 */ {(11<<2)|2,{116,61,0}}, +/* 19488 */ {(16<<2)|3,{116,65,48}}, +/* 19489 */ {(16<<2)|3,{116,65,49}}, +/* 19490 */ {(16<<2)|3,{116,65,50}}, +/* 19491 */ {(16<<2)|3,{116,65,97}}, +/* 19492 */ {(16<<2)|3,{116,65,99}}, +/* 19493 */ {(16<<2)|3,{116,65,101}}, +/* 19494 */ {(16<<2)|3,{116,65,105}}, +/* 19495 */ {(16<<2)|3,{116,65,111}}, +/* 19496 */ {(16<<2)|3,{116,65,115}}, +/* 19497 */ {(16<<2)|3,{116,65,116}}, +/* 19498 */ {(11<<2)|2,{116,65,0}}, +/* 19499 */ {(11<<2)|2,{116,65,0}}, +/* 19500 */ {(11<<2)|2,{116,65,0}}, +/* 19501 */ {(11<<2)|2,{116,65,0}}, +/* 19502 */ {(11<<2)|2,{116,65,0}}, +/* 19503 */ {(11<<2)|2,{116,65,0}}, +/* 19504 */ {(11<<2)|2,{116,65,0}}, +/* 19505 */ {(11<<2)|2,{116,65,0}}, +/* 19506 */ {(11<<2)|2,{116,65,0}}, +/* 19507 */ {(11<<2)|2,{116,65,0}}, +/* 19508 */ {(11<<2)|2,{116,65,0}}, +/* 19509 */ {(11<<2)|2,{116,65,0}}, +/* 19510 */ {(11<<2)|2,{116,65,0}}, +/* 19511 */ {(11<<2)|2,{116,65,0}}, +/* 19512 */ {(11<<2)|2,{116,65,0}}, +/* 19513 */ {(11<<2)|2,{116,65,0}}, +/* 19514 */ {(11<<2)|2,{116,65,0}}, +/* 19515 */ {(11<<2)|2,{116,65,0}}, +/* 19516 */ {(11<<2)|2,{116,65,0}}, +/* 19517 */ {(11<<2)|2,{116,65,0}}, +/* 19518 */ {(11<<2)|2,{116,65,0}}, +/* 19519 */ {(11<<2)|2,{116,65,0}}, +/* 19520 */ {(16<<2)|3,{116,95,48}}, +/* 19521 */ {(16<<2)|3,{116,95,49}}, +/* 19522 */ {(16<<2)|3,{116,95,50}}, +/* 19523 */ {(16<<2)|3,{116,95,97}}, +/* 19524 */ {(16<<2)|3,{116,95,99}}, +/* 19525 */ {(16<<2)|3,{116,95,101}}, +/* 19526 */ {(16<<2)|3,{116,95,105}}, +/* 19527 */ {(16<<2)|3,{116,95,111}}, +/* 19528 */ {(16<<2)|3,{116,95,115}}, +/* 19529 */ {(16<<2)|3,{116,95,116}}, +/* 19530 */ {(11<<2)|2,{116,95,0}}, +/* 19531 */ {(11<<2)|2,{116,95,0}}, +/* 19532 */ {(11<<2)|2,{116,95,0}}, +/* 19533 */ {(11<<2)|2,{116,95,0}}, +/* 19534 */ {(11<<2)|2,{116,95,0}}, +/* 19535 */ {(11<<2)|2,{116,95,0}}, +/* 19536 */ {(11<<2)|2,{116,95,0}}, +/* 19537 */ {(11<<2)|2,{116,95,0}}, +/* 19538 */ {(11<<2)|2,{116,95,0}}, +/* 19539 */ {(11<<2)|2,{116,95,0}}, +/* 19540 */ {(11<<2)|2,{116,95,0}}, +/* 19541 */ {(11<<2)|2,{116,95,0}}, +/* 19542 */ {(11<<2)|2,{116,95,0}}, +/* 19543 */ {(11<<2)|2,{116,95,0}}, +/* 19544 */ {(11<<2)|2,{116,95,0}}, +/* 19545 */ {(11<<2)|2,{116,95,0}}, +/* 19546 */ {(11<<2)|2,{116,95,0}}, +/* 19547 */ {(11<<2)|2,{116,95,0}}, +/* 19548 */ {(11<<2)|2,{116,95,0}}, +/* 19549 */ {(11<<2)|2,{116,95,0}}, +/* 19550 */ {(11<<2)|2,{116,95,0}}, +/* 19551 */ {(11<<2)|2,{116,95,0}}, +/* 19552 */ {(16<<2)|3,{116,98,48}}, +/* 19553 */ {(16<<2)|3,{116,98,49}}, +/* 19554 */ {(16<<2)|3,{116,98,50}}, +/* 19555 */ {(16<<2)|3,{116,98,97}}, +/* 19556 */ {(16<<2)|3,{116,98,99}}, +/* 19557 */ {(16<<2)|3,{116,98,101}}, +/* 19558 */ {(16<<2)|3,{116,98,105}}, +/* 19559 */ {(16<<2)|3,{116,98,111}}, +/* 19560 */ {(16<<2)|3,{116,98,115}}, +/* 19561 */ {(16<<2)|3,{116,98,116}}, +/* 19562 */ {(11<<2)|2,{116,98,0}}, +/* 19563 */ {(11<<2)|2,{116,98,0}}, +/* 19564 */ {(11<<2)|2,{116,98,0}}, +/* 19565 */ {(11<<2)|2,{116,98,0}}, +/* 19566 */ {(11<<2)|2,{116,98,0}}, +/* 19567 */ {(11<<2)|2,{116,98,0}}, +/* 19568 */ {(11<<2)|2,{116,98,0}}, +/* 19569 */ {(11<<2)|2,{116,98,0}}, +/* 19570 */ {(11<<2)|2,{116,98,0}}, +/* 19571 */ {(11<<2)|2,{116,98,0}}, +/* 19572 */ {(11<<2)|2,{116,98,0}}, +/* 19573 */ {(11<<2)|2,{116,98,0}}, +/* 19574 */ {(11<<2)|2,{116,98,0}}, +/* 19575 */ {(11<<2)|2,{116,98,0}}, +/* 19576 */ {(11<<2)|2,{116,98,0}}, +/* 19577 */ {(11<<2)|2,{116,98,0}}, +/* 19578 */ {(11<<2)|2,{116,98,0}}, +/* 19579 */ {(11<<2)|2,{116,98,0}}, +/* 19580 */ {(11<<2)|2,{116,98,0}}, +/* 19581 */ {(11<<2)|2,{116,98,0}}, +/* 19582 */ {(11<<2)|2,{116,98,0}}, +/* 19583 */ {(11<<2)|2,{116,98,0}}, +/* 19584 */ {(16<<2)|3,{116,100,48}}, +/* 19585 */ {(16<<2)|3,{116,100,49}}, +/* 19586 */ {(16<<2)|3,{116,100,50}}, +/* 19587 */ {(16<<2)|3,{116,100,97}}, +/* 19588 */ {(16<<2)|3,{116,100,99}}, +/* 19589 */ {(16<<2)|3,{116,100,101}}, +/* 19590 */ {(16<<2)|3,{116,100,105}}, +/* 19591 */ {(16<<2)|3,{116,100,111}}, +/* 19592 */ {(16<<2)|3,{116,100,115}}, +/* 19593 */ {(16<<2)|3,{116,100,116}}, +/* 19594 */ {(11<<2)|2,{116,100,0}}, +/* 19595 */ {(11<<2)|2,{116,100,0}}, +/* 19596 */ {(11<<2)|2,{116,100,0}}, +/* 19597 */ {(11<<2)|2,{116,100,0}}, +/* 19598 */ {(11<<2)|2,{116,100,0}}, +/* 19599 */ {(11<<2)|2,{116,100,0}}, +/* 19600 */ {(11<<2)|2,{116,100,0}}, +/* 19601 */ {(11<<2)|2,{116,100,0}}, +/* 19602 */ {(11<<2)|2,{116,100,0}}, +/* 19603 */ {(11<<2)|2,{116,100,0}}, +/* 19604 */ {(11<<2)|2,{116,100,0}}, +/* 19605 */ {(11<<2)|2,{116,100,0}}, +/* 19606 */ {(11<<2)|2,{116,100,0}}, +/* 19607 */ {(11<<2)|2,{116,100,0}}, +/* 19608 */ {(11<<2)|2,{116,100,0}}, +/* 19609 */ {(11<<2)|2,{116,100,0}}, +/* 19610 */ {(11<<2)|2,{116,100,0}}, +/* 19611 */ {(11<<2)|2,{116,100,0}}, +/* 19612 */ {(11<<2)|2,{116,100,0}}, +/* 19613 */ {(11<<2)|2,{116,100,0}}, +/* 19614 */ {(11<<2)|2,{116,100,0}}, +/* 19615 */ {(11<<2)|2,{116,100,0}}, +/* 19616 */ {(16<<2)|3,{116,102,48}}, +/* 19617 */ {(16<<2)|3,{116,102,49}}, +/* 19618 */ {(16<<2)|3,{116,102,50}}, +/* 19619 */ {(16<<2)|3,{116,102,97}}, +/* 19620 */ {(16<<2)|3,{116,102,99}}, +/* 19621 */ {(16<<2)|3,{116,102,101}}, +/* 19622 */ {(16<<2)|3,{116,102,105}}, +/* 19623 */ {(16<<2)|3,{116,102,111}}, +/* 19624 */ {(16<<2)|3,{116,102,115}}, +/* 19625 */ {(16<<2)|3,{116,102,116}}, +/* 19626 */ {(11<<2)|2,{116,102,0}}, +/* 19627 */ {(11<<2)|2,{116,102,0}}, +/* 19628 */ {(11<<2)|2,{116,102,0}}, +/* 19629 */ {(11<<2)|2,{116,102,0}}, +/* 19630 */ {(11<<2)|2,{116,102,0}}, +/* 19631 */ {(11<<2)|2,{116,102,0}}, +/* 19632 */ {(11<<2)|2,{116,102,0}}, +/* 19633 */ {(11<<2)|2,{116,102,0}}, +/* 19634 */ {(11<<2)|2,{116,102,0}}, +/* 19635 */ {(11<<2)|2,{116,102,0}}, +/* 19636 */ {(11<<2)|2,{116,102,0}}, +/* 19637 */ {(11<<2)|2,{116,102,0}}, +/* 19638 */ {(11<<2)|2,{116,102,0}}, +/* 19639 */ {(11<<2)|2,{116,102,0}}, +/* 19640 */ {(11<<2)|2,{116,102,0}}, +/* 19641 */ {(11<<2)|2,{116,102,0}}, +/* 19642 */ {(11<<2)|2,{116,102,0}}, +/* 19643 */ {(11<<2)|2,{116,102,0}}, +/* 19644 */ {(11<<2)|2,{116,102,0}}, +/* 19645 */ {(11<<2)|2,{116,102,0}}, +/* 19646 */ {(11<<2)|2,{116,102,0}}, +/* 19647 */ {(11<<2)|2,{116,102,0}}, +/* 19648 */ {(16<<2)|3,{116,103,48}}, +/* 19649 */ {(16<<2)|3,{116,103,49}}, +/* 19650 */ {(16<<2)|3,{116,103,50}}, +/* 19651 */ {(16<<2)|3,{116,103,97}}, +/* 19652 */ {(16<<2)|3,{116,103,99}}, +/* 19653 */ {(16<<2)|3,{116,103,101}}, +/* 19654 */ {(16<<2)|3,{116,103,105}}, +/* 19655 */ {(16<<2)|3,{116,103,111}}, +/* 19656 */ {(16<<2)|3,{116,103,115}}, +/* 19657 */ {(16<<2)|3,{116,103,116}}, +/* 19658 */ {(11<<2)|2,{116,103,0}}, +/* 19659 */ {(11<<2)|2,{116,103,0}}, +/* 19660 */ {(11<<2)|2,{116,103,0}}, +/* 19661 */ {(11<<2)|2,{116,103,0}}, +/* 19662 */ {(11<<2)|2,{116,103,0}}, +/* 19663 */ {(11<<2)|2,{116,103,0}}, +/* 19664 */ {(11<<2)|2,{116,103,0}}, +/* 19665 */ {(11<<2)|2,{116,103,0}}, +/* 19666 */ {(11<<2)|2,{116,103,0}}, +/* 19667 */ {(11<<2)|2,{116,103,0}}, +/* 19668 */ {(11<<2)|2,{116,103,0}}, +/* 19669 */ {(11<<2)|2,{116,103,0}}, +/* 19670 */ {(11<<2)|2,{116,103,0}}, +/* 19671 */ {(11<<2)|2,{116,103,0}}, +/* 19672 */ {(11<<2)|2,{116,103,0}}, +/* 19673 */ {(11<<2)|2,{116,103,0}}, +/* 19674 */ {(11<<2)|2,{116,103,0}}, +/* 19675 */ {(11<<2)|2,{116,103,0}}, +/* 19676 */ {(11<<2)|2,{116,103,0}}, +/* 19677 */ {(11<<2)|2,{116,103,0}}, +/* 19678 */ {(11<<2)|2,{116,103,0}}, +/* 19679 */ {(11<<2)|2,{116,103,0}}, +/* 19680 */ {(16<<2)|3,{116,104,48}}, +/* 19681 */ {(16<<2)|3,{116,104,49}}, +/* 19682 */ {(16<<2)|3,{116,104,50}}, +/* 19683 */ {(16<<2)|3,{116,104,97}}, +/* 19684 */ {(16<<2)|3,{116,104,99}}, +/* 19685 */ {(16<<2)|3,{116,104,101}}, +/* 19686 */ {(16<<2)|3,{116,104,105}}, +/* 19687 */ {(16<<2)|3,{116,104,111}}, +/* 19688 */ {(16<<2)|3,{116,104,115}}, +/* 19689 */ {(16<<2)|3,{116,104,116}}, +/* 19690 */ {(11<<2)|2,{116,104,0}}, +/* 19691 */ {(11<<2)|2,{116,104,0}}, +/* 19692 */ {(11<<2)|2,{116,104,0}}, +/* 19693 */ {(11<<2)|2,{116,104,0}}, +/* 19694 */ {(11<<2)|2,{116,104,0}}, +/* 19695 */ {(11<<2)|2,{116,104,0}}, +/* 19696 */ {(11<<2)|2,{116,104,0}}, +/* 19697 */ {(11<<2)|2,{116,104,0}}, +/* 19698 */ {(11<<2)|2,{116,104,0}}, +/* 19699 */ {(11<<2)|2,{116,104,0}}, +/* 19700 */ {(11<<2)|2,{116,104,0}}, +/* 19701 */ {(11<<2)|2,{116,104,0}}, +/* 19702 */ {(11<<2)|2,{116,104,0}}, +/* 19703 */ {(11<<2)|2,{116,104,0}}, +/* 19704 */ {(11<<2)|2,{116,104,0}}, +/* 19705 */ {(11<<2)|2,{116,104,0}}, +/* 19706 */ {(11<<2)|2,{116,104,0}}, +/* 19707 */ {(11<<2)|2,{116,104,0}}, +/* 19708 */ {(11<<2)|2,{116,104,0}}, +/* 19709 */ {(11<<2)|2,{116,104,0}}, +/* 19710 */ {(11<<2)|2,{116,104,0}}, +/* 19711 */ {(11<<2)|2,{116,104,0}}, +/* 19712 */ {(16<<2)|3,{116,108,48}}, +/* 19713 */ {(16<<2)|3,{116,108,49}}, +/* 19714 */ {(16<<2)|3,{116,108,50}}, +/* 19715 */ {(16<<2)|3,{116,108,97}}, +/* 19716 */ {(16<<2)|3,{116,108,99}}, +/* 19717 */ {(16<<2)|3,{116,108,101}}, +/* 19718 */ {(16<<2)|3,{116,108,105}}, +/* 19719 */ {(16<<2)|3,{116,108,111}}, +/* 19720 */ {(16<<2)|3,{116,108,115}}, +/* 19721 */ {(16<<2)|3,{116,108,116}}, +/* 19722 */ {(11<<2)|2,{116,108,0}}, +/* 19723 */ {(11<<2)|2,{116,108,0}}, +/* 19724 */ {(11<<2)|2,{116,108,0}}, +/* 19725 */ {(11<<2)|2,{116,108,0}}, +/* 19726 */ {(11<<2)|2,{116,108,0}}, +/* 19727 */ {(11<<2)|2,{116,108,0}}, +/* 19728 */ {(11<<2)|2,{116,108,0}}, +/* 19729 */ {(11<<2)|2,{116,108,0}}, +/* 19730 */ {(11<<2)|2,{116,108,0}}, +/* 19731 */ {(11<<2)|2,{116,108,0}}, +/* 19732 */ {(11<<2)|2,{116,108,0}}, +/* 19733 */ {(11<<2)|2,{116,108,0}}, +/* 19734 */ {(11<<2)|2,{116,108,0}}, +/* 19735 */ {(11<<2)|2,{116,108,0}}, +/* 19736 */ {(11<<2)|2,{116,108,0}}, +/* 19737 */ {(11<<2)|2,{116,108,0}}, +/* 19738 */ {(11<<2)|2,{116,108,0}}, +/* 19739 */ {(11<<2)|2,{116,108,0}}, +/* 19740 */ {(11<<2)|2,{116,108,0}}, +/* 19741 */ {(11<<2)|2,{116,108,0}}, +/* 19742 */ {(11<<2)|2,{116,108,0}}, +/* 19743 */ {(11<<2)|2,{116,108,0}}, +/* 19744 */ {(16<<2)|3,{116,109,48}}, +/* 19745 */ {(16<<2)|3,{116,109,49}}, +/* 19746 */ {(16<<2)|3,{116,109,50}}, +/* 19747 */ {(16<<2)|3,{116,109,97}}, +/* 19748 */ {(16<<2)|3,{116,109,99}}, +/* 19749 */ {(16<<2)|3,{116,109,101}}, +/* 19750 */ {(16<<2)|3,{116,109,105}}, +/* 19751 */ {(16<<2)|3,{116,109,111}}, +/* 19752 */ {(16<<2)|3,{116,109,115}}, +/* 19753 */ {(16<<2)|3,{116,109,116}}, +/* 19754 */ {(11<<2)|2,{116,109,0}}, +/* 19755 */ {(11<<2)|2,{116,109,0}}, +/* 19756 */ {(11<<2)|2,{116,109,0}}, +/* 19757 */ {(11<<2)|2,{116,109,0}}, +/* 19758 */ {(11<<2)|2,{116,109,0}}, +/* 19759 */ {(11<<2)|2,{116,109,0}}, +/* 19760 */ {(11<<2)|2,{116,109,0}}, +/* 19761 */ {(11<<2)|2,{116,109,0}}, +/* 19762 */ {(11<<2)|2,{116,109,0}}, +/* 19763 */ {(11<<2)|2,{116,109,0}}, +/* 19764 */ {(11<<2)|2,{116,109,0}}, +/* 19765 */ {(11<<2)|2,{116,109,0}}, +/* 19766 */ {(11<<2)|2,{116,109,0}}, +/* 19767 */ {(11<<2)|2,{116,109,0}}, +/* 19768 */ {(11<<2)|2,{116,109,0}}, +/* 19769 */ {(11<<2)|2,{116,109,0}}, +/* 19770 */ {(11<<2)|2,{116,109,0}}, +/* 19771 */ {(11<<2)|2,{116,109,0}}, +/* 19772 */ {(11<<2)|2,{116,109,0}}, +/* 19773 */ {(11<<2)|2,{116,109,0}}, +/* 19774 */ {(11<<2)|2,{116,109,0}}, +/* 19775 */ {(11<<2)|2,{116,109,0}}, +/* 19776 */ {(16<<2)|3,{116,110,48}}, +/* 19777 */ {(16<<2)|3,{116,110,49}}, +/* 19778 */ {(16<<2)|3,{116,110,50}}, +/* 19779 */ {(16<<2)|3,{116,110,97}}, +/* 19780 */ {(16<<2)|3,{116,110,99}}, +/* 19781 */ {(16<<2)|3,{116,110,101}}, +/* 19782 */ {(16<<2)|3,{116,110,105}}, +/* 19783 */ {(16<<2)|3,{116,110,111}}, +/* 19784 */ {(16<<2)|3,{116,110,115}}, +/* 19785 */ {(16<<2)|3,{116,110,116}}, +/* 19786 */ {(11<<2)|2,{116,110,0}}, +/* 19787 */ {(11<<2)|2,{116,110,0}}, +/* 19788 */ {(11<<2)|2,{116,110,0}}, +/* 19789 */ {(11<<2)|2,{116,110,0}}, +/* 19790 */ {(11<<2)|2,{116,110,0}}, +/* 19791 */ {(11<<2)|2,{116,110,0}}, +/* 19792 */ {(11<<2)|2,{116,110,0}}, +/* 19793 */ {(11<<2)|2,{116,110,0}}, +/* 19794 */ {(11<<2)|2,{116,110,0}}, +/* 19795 */ {(11<<2)|2,{116,110,0}}, +/* 19796 */ {(11<<2)|2,{116,110,0}}, +/* 19797 */ {(11<<2)|2,{116,110,0}}, +/* 19798 */ {(11<<2)|2,{116,110,0}}, +/* 19799 */ {(11<<2)|2,{116,110,0}}, +/* 19800 */ {(11<<2)|2,{116,110,0}}, +/* 19801 */ {(11<<2)|2,{116,110,0}}, +/* 19802 */ {(11<<2)|2,{116,110,0}}, +/* 19803 */ {(11<<2)|2,{116,110,0}}, +/* 19804 */ {(11<<2)|2,{116,110,0}}, +/* 19805 */ {(11<<2)|2,{116,110,0}}, +/* 19806 */ {(11<<2)|2,{116,110,0}}, +/* 19807 */ {(11<<2)|2,{116,110,0}}, +/* 19808 */ {(16<<2)|3,{116,112,48}}, +/* 19809 */ {(16<<2)|3,{116,112,49}}, +/* 19810 */ {(16<<2)|3,{116,112,50}}, +/* 19811 */ {(16<<2)|3,{116,112,97}}, +/* 19812 */ {(16<<2)|3,{116,112,99}}, +/* 19813 */ {(16<<2)|3,{116,112,101}}, +/* 19814 */ {(16<<2)|3,{116,112,105}}, +/* 19815 */ {(16<<2)|3,{116,112,111}}, +/* 19816 */ {(16<<2)|3,{116,112,115}}, +/* 19817 */ {(16<<2)|3,{116,112,116}}, +/* 19818 */ {(11<<2)|2,{116,112,0}}, +/* 19819 */ {(11<<2)|2,{116,112,0}}, +/* 19820 */ {(11<<2)|2,{116,112,0}}, +/* 19821 */ {(11<<2)|2,{116,112,0}}, +/* 19822 */ {(11<<2)|2,{116,112,0}}, +/* 19823 */ {(11<<2)|2,{116,112,0}}, +/* 19824 */ {(11<<2)|2,{116,112,0}}, +/* 19825 */ {(11<<2)|2,{116,112,0}}, +/* 19826 */ {(11<<2)|2,{116,112,0}}, +/* 19827 */ {(11<<2)|2,{116,112,0}}, +/* 19828 */ {(11<<2)|2,{116,112,0}}, +/* 19829 */ {(11<<2)|2,{116,112,0}}, +/* 19830 */ {(11<<2)|2,{116,112,0}}, +/* 19831 */ {(11<<2)|2,{116,112,0}}, +/* 19832 */ {(11<<2)|2,{116,112,0}}, +/* 19833 */ {(11<<2)|2,{116,112,0}}, +/* 19834 */ {(11<<2)|2,{116,112,0}}, +/* 19835 */ {(11<<2)|2,{116,112,0}}, +/* 19836 */ {(11<<2)|2,{116,112,0}}, +/* 19837 */ {(11<<2)|2,{116,112,0}}, +/* 19838 */ {(11<<2)|2,{116,112,0}}, +/* 19839 */ {(11<<2)|2,{116,112,0}}, +/* 19840 */ {(16<<2)|3,{116,114,48}}, +/* 19841 */ {(16<<2)|3,{116,114,49}}, +/* 19842 */ {(16<<2)|3,{116,114,50}}, +/* 19843 */ {(16<<2)|3,{116,114,97}}, +/* 19844 */ {(16<<2)|3,{116,114,99}}, +/* 19845 */ {(16<<2)|3,{116,114,101}}, +/* 19846 */ {(16<<2)|3,{116,114,105}}, +/* 19847 */ {(16<<2)|3,{116,114,111}}, +/* 19848 */ {(16<<2)|3,{116,114,115}}, +/* 19849 */ {(16<<2)|3,{116,114,116}}, +/* 19850 */ {(11<<2)|2,{116,114,0}}, +/* 19851 */ {(11<<2)|2,{116,114,0}}, +/* 19852 */ {(11<<2)|2,{116,114,0}}, +/* 19853 */ {(11<<2)|2,{116,114,0}}, +/* 19854 */ {(11<<2)|2,{116,114,0}}, +/* 19855 */ {(11<<2)|2,{116,114,0}}, +/* 19856 */ {(11<<2)|2,{116,114,0}}, +/* 19857 */ {(11<<2)|2,{116,114,0}}, +/* 19858 */ {(11<<2)|2,{116,114,0}}, +/* 19859 */ {(11<<2)|2,{116,114,0}}, +/* 19860 */ {(11<<2)|2,{116,114,0}}, +/* 19861 */ {(11<<2)|2,{116,114,0}}, +/* 19862 */ {(11<<2)|2,{116,114,0}}, +/* 19863 */ {(11<<2)|2,{116,114,0}}, +/* 19864 */ {(11<<2)|2,{116,114,0}}, +/* 19865 */ {(11<<2)|2,{116,114,0}}, +/* 19866 */ {(11<<2)|2,{116,114,0}}, +/* 19867 */ {(11<<2)|2,{116,114,0}}, +/* 19868 */ {(11<<2)|2,{116,114,0}}, +/* 19869 */ {(11<<2)|2,{116,114,0}}, +/* 19870 */ {(11<<2)|2,{116,114,0}}, +/* 19871 */ {(11<<2)|2,{116,114,0}}, +/* 19872 */ {(16<<2)|3,{116,117,48}}, +/* 19873 */ {(16<<2)|3,{116,117,49}}, +/* 19874 */ {(16<<2)|3,{116,117,50}}, +/* 19875 */ {(16<<2)|3,{116,117,97}}, +/* 19876 */ {(16<<2)|3,{116,117,99}}, +/* 19877 */ {(16<<2)|3,{116,117,101}}, +/* 19878 */ {(16<<2)|3,{116,117,105}}, +/* 19879 */ {(16<<2)|3,{116,117,111}}, +/* 19880 */ {(16<<2)|3,{116,117,115}}, +/* 19881 */ {(16<<2)|3,{116,117,116}}, +/* 19882 */ {(11<<2)|2,{116,117,0}}, +/* 19883 */ {(11<<2)|2,{116,117,0}}, +/* 19884 */ {(11<<2)|2,{116,117,0}}, +/* 19885 */ {(11<<2)|2,{116,117,0}}, +/* 19886 */ {(11<<2)|2,{116,117,0}}, +/* 19887 */ {(11<<2)|2,{116,117,0}}, +/* 19888 */ {(11<<2)|2,{116,117,0}}, +/* 19889 */ {(11<<2)|2,{116,117,0}}, +/* 19890 */ {(11<<2)|2,{116,117,0}}, +/* 19891 */ {(11<<2)|2,{116,117,0}}, +/* 19892 */ {(11<<2)|2,{116,117,0}}, +/* 19893 */ {(11<<2)|2,{116,117,0}}, +/* 19894 */ {(11<<2)|2,{116,117,0}}, +/* 19895 */ {(11<<2)|2,{116,117,0}}, +/* 19896 */ {(11<<2)|2,{116,117,0}}, +/* 19897 */ {(11<<2)|2,{116,117,0}}, +/* 19898 */ {(11<<2)|2,{116,117,0}}, +/* 19899 */ {(11<<2)|2,{116,117,0}}, +/* 19900 */ {(11<<2)|2,{116,117,0}}, +/* 19901 */ {(11<<2)|2,{116,117,0}}, +/* 19902 */ {(11<<2)|2,{116,117,0}}, +/* 19903 */ {(11<<2)|2,{116,117,0}}, +/* 19904 */ {(12<<2)|2,{116,58,0}}, +/* 19905 */ {(12<<2)|2,{116,58,0}}, +/* 19906 */ {(12<<2)|2,{116,58,0}}, +/* 19907 */ {(12<<2)|2,{116,58,0}}, +/* 19908 */ {(12<<2)|2,{116,58,0}}, +/* 19909 */ {(12<<2)|2,{116,58,0}}, +/* 19910 */ {(12<<2)|2,{116,58,0}}, +/* 19911 */ {(12<<2)|2,{116,58,0}}, +/* 19912 */ {(12<<2)|2,{116,58,0}}, +/* 19913 */ {(12<<2)|2,{116,58,0}}, +/* 19914 */ {(12<<2)|2,{116,58,0}}, +/* 19915 */ {(12<<2)|2,{116,58,0}}, +/* 19916 */ {(12<<2)|2,{116,58,0}}, +/* 19917 */ {(12<<2)|2,{116,58,0}}, +/* 19918 */ {(12<<2)|2,{116,58,0}}, +/* 19919 */ {(12<<2)|2,{116,58,0}}, +/* 19920 */ {(12<<2)|2,{116,66,0}}, +/* 19921 */ {(12<<2)|2,{116,66,0}}, +/* 19922 */ {(12<<2)|2,{116,66,0}}, +/* 19923 */ {(12<<2)|2,{116,66,0}}, +/* 19924 */ {(12<<2)|2,{116,66,0}}, +/* 19925 */ {(12<<2)|2,{116,66,0}}, +/* 19926 */ {(12<<2)|2,{116,66,0}}, +/* 19927 */ {(12<<2)|2,{116,66,0}}, +/* 19928 */ {(12<<2)|2,{116,66,0}}, +/* 19929 */ {(12<<2)|2,{116,66,0}}, +/* 19930 */ {(12<<2)|2,{116,66,0}}, +/* 19931 */ {(12<<2)|2,{116,66,0}}, +/* 19932 */ {(12<<2)|2,{116,66,0}}, +/* 19933 */ {(12<<2)|2,{116,66,0}}, +/* 19934 */ {(12<<2)|2,{116,66,0}}, +/* 19935 */ {(12<<2)|2,{116,66,0}}, +/* 19936 */ {(12<<2)|2,{116,67,0}}, +/* 19937 */ {(12<<2)|2,{116,67,0}}, +/* 19938 */ {(12<<2)|2,{116,67,0}}, +/* 19939 */ {(12<<2)|2,{116,67,0}}, +/* 19940 */ {(12<<2)|2,{116,67,0}}, +/* 19941 */ {(12<<2)|2,{116,67,0}}, +/* 19942 */ {(12<<2)|2,{116,67,0}}, +/* 19943 */ {(12<<2)|2,{116,67,0}}, +/* 19944 */ {(12<<2)|2,{116,67,0}}, +/* 19945 */ {(12<<2)|2,{116,67,0}}, +/* 19946 */ {(12<<2)|2,{116,67,0}}, +/* 19947 */ {(12<<2)|2,{116,67,0}}, +/* 19948 */ {(12<<2)|2,{116,67,0}}, +/* 19949 */ {(12<<2)|2,{116,67,0}}, +/* 19950 */ {(12<<2)|2,{116,67,0}}, +/* 19951 */ {(12<<2)|2,{116,67,0}}, +/* 19952 */ {(12<<2)|2,{116,68,0}}, +/* 19953 */ {(12<<2)|2,{116,68,0}}, +/* 19954 */ {(12<<2)|2,{116,68,0}}, +/* 19955 */ {(12<<2)|2,{116,68,0}}, +/* 19956 */ {(12<<2)|2,{116,68,0}}, +/* 19957 */ {(12<<2)|2,{116,68,0}}, +/* 19958 */ {(12<<2)|2,{116,68,0}}, +/* 19959 */ {(12<<2)|2,{116,68,0}}, +/* 19960 */ {(12<<2)|2,{116,68,0}}, +/* 19961 */ {(12<<2)|2,{116,68,0}}, +/* 19962 */ {(12<<2)|2,{116,68,0}}, +/* 19963 */ {(12<<2)|2,{116,68,0}}, +/* 19964 */ {(12<<2)|2,{116,68,0}}, +/* 19965 */ {(12<<2)|2,{116,68,0}}, +/* 19966 */ {(12<<2)|2,{116,68,0}}, +/* 19967 */ {(12<<2)|2,{116,68,0}}, +/* 19968 */ {(12<<2)|2,{116,69,0}}, +/* 19969 */ {(12<<2)|2,{116,69,0}}, +/* 19970 */ {(12<<2)|2,{116,69,0}}, +/* 19971 */ {(12<<2)|2,{116,69,0}}, +/* 19972 */ {(12<<2)|2,{116,69,0}}, +/* 19973 */ {(12<<2)|2,{116,69,0}}, +/* 19974 */ {(12<<2)|2,{116,69,0}}, +/* 19975 */ {(12<<2)|2,{116,69,0}}, +/* 19976 */ {(12<<2)|2,{116,69,0}}, +/* 19977 */ {(12<<2)|2,{116,69,0}}, +/* 19978 */ {(12<<2)|2,{116,69,0}}, +/* 19979 */ {(12<<2)|2,{116,69,0}}, +/* 19980 */ {(12<<2)|2,{116,69,0}}, +/* 19981 */ {(12<<2)|2,{116,69,0}}, +/* 19982 */ {(12<<2)|2,{116,69,0}}, +/* 19983 */ {(12<<2)|2,{116,69,0}}, +/* 19984 */ {(12<<2)|2,{116,70,0}}, +/* 19985 */ {(12<<2)|2,{116,70,0}}, +/* 19986 */ {(12<<2)|2,{116,70,0}}, +/* 19987 */ {(12<<2)|2,{116,70,0}}, +/* 19988 */ {(12<<2)|2,{116,70,0}}, +/* 19989 */ {(12<<2)|2,{116,70,0}}, +/* 19990 */ {(12<<2)|2,{116,70,0}}, +/* 19991 */ {(12<<2)|2,{116,70,0}}, +/* 19992 */ {(12<<2)|2,{116,70,0}}, +/* 19993 */ {(12<<2)|2,{116,70,0}}, +/* 19994 */ {(12<<2)|2,{116,70,0}}, +/* 19995 */ {(12<<2)|2,{116,70,0}}, +/* 19996 */ {(12<<2)|2,{116,70,0}}, +/* 19997 */ {(12<<2)|2,{116,70,0}}, +/* 19998 */ {(12<<2)|2,{116,70,0}}, +/* 19999 */ {(12<<2)|2,{116,70,0}}, +/* 20000 */ {(12<<2)|2,{116,71,0}}, +/* 20001 */ {(12<<2)|2,{116,71,0}}, +/* 20002 */ {(12<<2)|2,{116,71,0}}, +/* 20003 */ {(12<<2)|2,{116,71,0}}, +/* 20004 */ {(12<<2)|2,{116,71,0}}, +/* 20005 */ {(12<<2)|2,{116,71,0}}, +/* 20006 */ {(12<<2)|2,{116,71,0}}, +/* 20007 */ {(12<<2)|2,{116,71,0}}, +/* 20008 */ {(12<<2)|2,{116,71,0}}, +/* 20009 */ {(12<<2)|2,{116,71,0}}, +/* 20010 */ {(12<<2)|2,{116,71,0}}, +/* 20011 */ {(12<<2)|2,{116,71,0}}, +/* 20012 */ {(12<<2)|2,{116,71,0}}, +/* 20013 */ {(12<<2)|2,{116,71,0}}, +/* 20014 */ {(12<<2)|2,{116,71,0}}, +/* 20015 */ {(12<<2)|2,{116,71,0}}, +/* 20016 */ {(12<<2)|2,{116,72,0}}, +/* 20017 */ {(12<<2)|2,{116,72,0}}, +/* 20018 */ {(12<<2)|2,{116,72,0}}, +/* 20019 */ {(12<<2)|2,{116,72,0}}, +/* 20020 */ {(12<<2)|2,{116,72,0}}, +/* 20021 */ {(12<<2)|2,{116,72,0}}, +/* 20022 */ {(12<<2)|2,{116,72,0}}, +/* 20023 */ {(12<<2)|2,{116,72,0}}, +/* 20024 */ {(12<<2)|2,{116,72,0}}, +/* 20025 */ {(12<<2)|2,{116,72,0}}, +/* 20026 */ {(12<<2)|2,{116,72,0}}, +/* 20027 */ {(12<<2)|2,{116,72,0}}, +/* 20028 */ {(12<<2)|2,{116,72,0}}, +/* 20029 */ {(12<<2)|2,{116,72,0}}, +/* 20030 */ {(12<<2)|2,{116,72,0}}, +/* 20031 */ {(12<<2)|2,{116,72,0}}, +/* 20032 */ {(12<<2)|2,{116,73,0}}, +/* 20033 */ {(12<<2)|2,{116,73,0}}, +/* 20034 */ {(12<<2)|2,{116,73,0}}, +/* 20035 */ {(12<<2)|2,{116,73,0}}, +/* 20036 */ {(12<<2)|2,{116,73,0}}, +/* 20037 */ {(12<<2)|2,{116,73,0}}, +/* 20038 */ {(12<<2)|2,{116,73,0}}, +/* 20039 */ {(12<<2)|2,{116,73,0}}, +/* 20040 */ {(12<<2)|2,{116,73,0}}, +/* 20041 */ {(12<<2)|2,{116,73,0}}, +/* 20042 */ {(12<<2)|2,{116,73,0}}, +/* 20043 */ {(12<<2)|2,{116,73,0}}, +/* 20044 */ {(12<<2)|2,{116,73,0}}, +/* 20045 */ {(12<<2)|2,{116,73,0}}, +/* 20046 */ {(12<<2)|2,{116,73,0}}, +/* 20047 */ {(12<<2)|2,{116,73,0}}, +/* 20048 */ {(12<<2)|2,{116,74,0}}, +/* 20049 */ {(12<<2)|2,{116,74,0}}, +/* 20050 */ {(12<<2)|2,{116,74,0}}, +/* 20051 */ {(12<<2)|2,{116,74,0}}, +/* 20052 */ {(12<<2)|2,{116,74,0}}, +/* 20053 */ {(12<<2)|2,{116,74,0}}, +/* 20054 */ {(12<<2)|2,{116,74,0}}, +/* 20055 */ {(12<<2)|2,{116,74,0}}, +/* 20056 */ {(12<<2)|2,{116,74,0}}, +/* 20057 */ {(12<<2)|2,{116,74,0}}, +/* 20058 */ {(12<<2)|2,{116,74,0}}, +/* 20059 */ {(12<<2)|2,{116,74,0}}, +/* 20060 */ {(12<<2)|2,{116,74,0}}, +/* 20061 */ {(12<<2)|2,{116,74,0}}, +/* 20062 */ {(12<<2)|2,{116,74,0}}, +/* 20063 */ {(12<<2)|2,{116,74,0}}, +/* 20064 */ {(12<<2)|2,{116,75,0}}, +/* 20065 */ {(12<<2)|2,{116,75,0}}, +/* 20066 */ {(12<<2)|2,{116,75,0}}, +/* 20067 */ {(12<<2)|2,{116,75,0}}, +/* 20068 */ {(12<<2)|2,{116,75,0}}, +/* 20069 */ {(12<<2)|2,{116,75,0}}, +/* 20070 */ {(12<<2)|2,{116,75,0}}, +/* 20071 */ {(12<<2)|2,{116,75,0}}, +/* 20072 */ {(12<<2)|2,{116,75,0}}, +/* 20073 */ {(12<<2)|2,{116,75,0}}, +/* 20074 */ {(12<<2)|2,{116,75,0}}, +/* 20075 */ {(12<<2)|2,{116,75,0}}, +/* 20076 */ {(12<<2)|2,{116,75,0}}, +/* 20077 */ {(12<<2)|2,{116,75,0}}, +/* 20078 */ {(12<<2)|2,{116,75,0}}, +/* 20079 */ {(12<<2)|2,{116,75,0}}, +/* 20080 */ {(12<<2)|2,{116,76,0}}, +/* 20081 */ {(12<<2)|2,{116,76,0}}, +/* 20082 */ {(12<<2)|2,{116,76,0}}, +/* 20083 */ {(12<<2)|2,{116,76,0}}, +/* 20084 */ {(12<<2)|2,{116,76,0}}, +/* 20085 */ {(12<<2)|2,{116,76,0}}, +/* 20086 */ {(12<<2)|2,{116,76,0}}, +/* 20087 */ {(12<<2)|2,{116,76,0}}, +/* 20088 */ {(12<<2)|2,{116,76,0}}, +/* 20089 */ {(12<<2)|2,{116,76,0}}, +/* 20090 */ {(12<<2)|2,{116,76,0}}, +/* 20091 */ {(12<<2)|2,{116,76,0}}, +/* 20092 */ {(12<<2)|2,{116,76,0}}, +/* 20093 */ {(12<<2)|2,{116,76,0}}, +/* 20094 */ {(12<<2)|2,{116,76,0}}, +/* 20095 */ {(12<<2)|2,{116,76,0}}, +/* 20096 */ {(12<<2)|2,{116,77,0}}, +/* 20097 */ {(12<<2)|2,{116,77,0}}, +/* 20098 */ {(12<<2)|2,{116,77,0}}, +/* 20099 */ {(12<<2)|2,{116,77,0}}, +/* 20100 */ {(12<<2)|2,{116,77,0}}, +/* 20101 */ {(12<<2)|2,{116,77,0}}, +/* 20102 */ {(12<<2)|2,{116,77,0}}, +/* 20103 */ {(12<<2)|2,{116,77,0}}, +/* 20104 */ {(12<<2)|2,{116,77,0}}, +/* 20105 */ {(12<<2)|2,{116,77,0}}, +/* 20106 */ {(12<<2)|2,{116,77,0}}, +/* 20107 */ {(12<<2)|2,{116,77,0}}, +/* 20108 */ {(12<<2)|2,{116,77,0}}, +/* 20109 */ {(12<<2)|2,{116,77,0}}, +/* 20110 */ {(12<<2)|2,{116,77,0}}, +/* 20111 */ {(12<<2)|2,{116,77,0}}, +/* 20112 */ {(12<<2)|2,{116,78,0}}, +/* 20113 */ {(12<<2)|2,{116,78,0}}, +/* 20114 */ {(12<<2)|2,{116,78,0}}, +/* 20115 */ {(12<<2)|2,{116,78,0}}, +/* 20116 */ {(12<<2)|2,{116,78,0}}, +/* 20117 */ {(12<<2)|2,{116,78,0}}, +/* 20118 */ {(12<<2)|2,{116,78,0}}, +/* 20119 */ {(12<<2)|2,{116,78,0}}, +/* 20120 */ {(12<<2)|2,{116,78,0}}, +/* 20121 */ {(12<<2)|2,{116,78,0}}, +/* 20122 */ {(12<<2)|2,{116,78,0}}, +/* 20123 */ {(12<<2)|2,{116,78,0}}, +/* 20124 */ {(12<<2)|2,{116,78,0}}, +/* 20125 */ {(12<<2)|2,{116,78,0}}, +/* 20126 */ {(12<<2)|2,{116,78,0}}, +/* 20127 */ {(12<<2)|2,{116,78,0}}, +/* 20128 */ {(12<<2)|2,{116,79,0}}, +/* 20129 */ {(12<<2)|2,{116,79,0}}, +/* 20130 */ {(12<<2)|2,{116,79,0}}, +/* 20131 */ {(12<<2)|2,{116,79,0}}, +/* 20132 */ {(12<<2)|2,{116,79,0}}, +/* 20133 */ {(12<<2)|2,{116,79,0}}, +/* 20134 */ {(12<<2)|2,{116,79,0}}, +/* 20135 */ {(12<<2)|2,{116,79,0}}, +/* 20136 */ {(12<<2)|2,{116,79,0}}, +/* 20137 */ {(12<<2)|2,{116,79,0}}, +/* 20138 */ {(12<<2)|2,{116,79,0}}, +/* 20139 */ {(12<<2)|2,{116,79,0}}, +/* 20140 */ {(12<<2)|2,{116,79,0}}, +/* 20141 */ {(12<<2)|2,{116,79,0}}, +/* 20142 */ {(12<<2)|2,{116,79,0}}, +/* 20143 */ {(12<<2)|2,{116,79,0}}, +/* 20144 */ {(12<<2)|2,{116,80,0}}, +/* 20145 */ {(12<<2)|2,{116,80,0}}, +/* 20146 */ {(12<<2)|2,{116,80,0}}, +/* 20147 */ {(12<<2)|2,{116,80,0}}, +/* 20148 */ {(12<<2)|2,{116,80,0}}, +/* 20149 */ {(12<<2)|2,{116,80,0}}, +/* 20150 */ {(12<<2)|2,{116,80,0}}, +/* 20151 */ {(12<<2)|2,{116,80,0}}, +/* 20152 */ {(12<<2)|2,{116,80,0}}, +/* 20153 */ {(12<<2)|2,{116,80,0}}, +/* 20154 */ {(12<<2)|2,{116,80,0}}, +/* 20155 */ {(12<<2)|2,{116,80,0}}, +/* 20156 */ {(12<<2)|2,{116,80,0}}, +/* 20157 */ {(12<<2)|2,{116,80,0}}, +/* 20158 */ {(12<<2)|2,{116,80,0}}, +/* 20159 */ {(12<<2)|2,{116,80,0}}, +/* 20160 */ {(12<<2)|2,{116,81,0}}, +/* 20161 */ {(12<<2)|2,{116,81,0}}, +/* 20162 */ {(12<<2)|2,{116,81,0}}, +/* 20163 */ {(12<<2)|2,{116,81,0}}, +/* 20164 */ {(12<<2)|2,{116,81,0}}, +/* 20165 */ {(12<<2)|2,{116,81,0}}, +/* 20166 */ {(12<<2)|2,{116,81,0}}, +/* 20167 */ {(12<<2)|2,{116,81,0}}, +/* 20168 */ {(12<<2)|2,{116,81,0}}, +/* 20169 */ {(12<<2)|2,{116,81,0}}, +/* 20170 */ {(12<<2)|2,{116,81,0}}, +/* 20171 */ {(12<<2)|2,{116,81,0}}, +/* 20172 */ {(12<<2)|2,{116,81,0}}, +/* 20173 */ {(12<<2)|2,{116,81,0}}, +/* 20174 */ {(12<<2)|2,{116,81,0}}, +/* 20175 */ {(12<<2)|2,{116,81,0}}, +/* 20176 */ {(12<<2)|2,{116,82,0}}, +/* 20177 */ {(12<<2)|2,{116,82,0}}, +/* 20178 */ {(12<<2)|2,{116,82,0}}, +/* 20179 */ {(12<<2)|2,{116,82,0}}, +/* 20180 */ {(12<<2)|2,{116,82,0}}, +/* 20181 */ {(12<<2)|2,{116,82,0}}, +/* 20182 */ {(12<<2)|2,{116,82,0}}, +/* 20183 */ {(12<<2)|2,{116,82,0}}, +/* 20184 */ {(12<<2)|2,{116,82,0}}, +/* 20185 */ {(12<<2)|2,{116,82,0}}, +/* 20186 */ {(12<<2)|2,{116,82,0}}, +/* 20187 */ {(12<<2)|2,{116,82,0}}, +/* 20188 */ {(12<<2)|2,{116,82,0}}, +/* 20189 */ {(12<<2)|2,{116,82,0}}, +/* 20190 */ {(12<<2)|2,{116,82,0}}, +/* 20191 */ {(12<<2)|2,{116,82,0}}, +/* 20192 */ {(12<<2)|2,{116,83,0}}, +/* 20193 */ {(12<<2)|2,{116,83,0}}, +/* 20194 */ {(12<<2)|2,{116,83,0}}, +/* 20195 */ {(12<<2)|2,{116,83,0}}, +/* 20196 */ {(12<<2)|2,{116,83,0}}, +/* 20197 */ {(12<<2)|2,{116,83,0}}, +/* 20198 */ {(12<<2)|2,{116,83,0}}, +/* 20199 */ {(12<<2)|2,{116,83,0}}, +/* 20200 */ {(12<<2)|2,{116,83,0}}, +/* 20201 */ {(12<<2)|2,{116,83,0}}, +/* 20202 */ {(12<<2)|2,{116,83,0}}, +/* 20203 */ {(12<<2)|2,{116,83,0}}, +/* 20204 */ {(12<<2)|2,{116,83,0}}, +/* 20205 */ {(12<<2)|2,{116,83,0}}, +/* 20206 */ {(12<<2)|2,{116,83,0}}, +/* 20207 */ {(12<<2)|2,{116,83,0}}, +/* 20208 */ {(12<<2)|2,{116,84,0}}, +/* 20209 */ {(12<<2)|2,{116,84,0}}, +/* 20210 */ {(12<<2)|2,{116,84,0}}, +/* 20211 */ {(12<<2)|2,{116,84,0}}, +/* 20212 */ {(12<<2)|2,{116,84,0}}, +/* 20213 */ {(12<<2)|2,{116,84,0}}, +/* 20214 */ {(12<<2)|2,{116,84,0}}, +/* 20215 */ {(12<<2)|2,{116,84,0}}, +/* 20216 */ {(12<<2)|2,{116,84,0}}, +/* 20217 */ {(12<<2)|2,{116,84,0}}, +/* 20218 */ {(12<<2)|2,{116,84,0}}, +/* 20219 */ {(12<<2)|2,{116,84,0}}, +/* 20220 */ {(12<<2)|2,{116,84,0}}, +/* 20221 */ {(12<<2)|2,{116,84,0}}, +/* 20222 */ {(12<<2)|2,{116,84,0}}, +/* 20223 */ {(12<<2)|2,{116,84,0}}, +/* 20224 */ {(12<<2)|2,{116,85,0}}, +/* 20225 */ {(12<<2)|2,{116,85,0}}, +/* 20226 */ {(12<<2)|2,{116,85,0}}, +/* 20227 */ {(12<<2)|2,{116,85,0}}, +/* 20228 */ {(12<<2)|2,{116,85,0}}, +/* 20229 */ {(12<<2)|2,{116,85,0}}, +/* 20230 */ {(12<<2)|2,{116,85,0}}, +/* 20231 */ {(12<<2)|2,{116,85,0}}, +/* 20232 */ {(12<<2)|2,{116,85,0}}, +/* 20233 */ {(12<<2)|2,{116,85,0}}, +/* 20234 */ {(12<<2)|2,{116,85,0}}, +/* 20235 */ {(12<<2)|2,{116,85,0}}, +/* 20236 */ {(12<<2)|2,{116,85,0}}, +/* 20237 */ {(12<<2)|2,{116,85,0}}, +/* 20238 */ {(12<<2)|2,{116,85,0}}, +/* 20239 */ {(12<<2)|2,{116,85,0}}, +/* 20240 */ {(12<<2)|2,{116,86,0}}, +/* 20241 */ {(12<<2)|2,{116,86,0}}, +/* 20242 */ {(12<<2)|2,{116,86,0}}, +/* 20243 */ {(12<<2)|2,{116,86,0}}, +/* 20244 */ {(12<<2)|2,{116,86,0}}, +/* 20245 */ {(12<<2)|2,{116,86,0}}, +/* 20246 */ {(12<<2)|2,{116,86,0}}, +/* 20247 */ {(12<<2)|2,{116,86,0}}, +/* 20248 */ {(12<<2)|2,{116,86,0}}, +/* 20249 */ {(12<<2)|2,{116,86,0}}, +/* 20250 */ {(12<<2)|2,{116,86,0}}, +/* 20251 */ {(12<<2)|2,{116,86,0}}, +/* 20252 */ {(12<<2)|2,{116,86,0}}, +/* 20253 */ {(12<<2)|2,{116,86,0}}, +/* 20254 */ {(12<<2)|2,{116,86,0}}, +/* 20255 */ {(12<<2)|2,{116,86,0}}, +/* 20256 */ {(12<<2)|2,{116,87,0}}, +/* 20257 */ {(12<<2)|2,{116,87,0}}, +/* 20258 */ {(12<<2)|2,{116,87,0}}, +/* 20259 */ {(12<<2)|2,{116,87,0}}, +/* 20260 */ {(12<<2)|2,{116,87,0}}, +/* 20261 */ {(12<<2)|2,{116,87,0}}, +/* 20262 */ {(12<<2)|2,{116,87,0}}, +/* 20263 */ {(12<<2)|2,{116,87,0}}, +/* 20264 */ {(12<<2)|2,{116,87,0}}, +/* 20265 */ {(12<<2)|2,{116,87,0}}, +/* 20266 */ {(12<<2)|2,{116,87,0}}, +/* 20267 */ {(12<<2)|2,{116,87,0}}, +/* 20268 */ {(12<<2)|2,{116,87,0}}, +/* 20269 */ {(12<<2)|2,{116,87,0}}, +/* 20270 */ {(12<<2)|2,{116,87,0}}, +/* 20271 */ {(12<<2)|2,{116,87,0}}, +/* 20272 */ {(12<<2)|2,{116,89,0}}, +/* 20273 */ {(12<<2)|2,{116,89,0}}, +/* 20274 */ {(12<<2)|2,{116,89,0}}, +/* 20275 */ {(12<<2)|2,{116,89,0}}, +/* 20276 */ {(12<<2)|2,{116,89,0}}, +/* 20277 */ {(12<<2)|2,{116,89,0}}, +/* 20278 */ {(12<<2)|2,{116,89,0}}, +/* 20279 */ {(12<<2)|2,{116,89,0}}, +/* 20280 */ {(12<<2)|2,{116,89,0}}, +/* 20281 */ {(12<<2)|2,{116,89,0}}, +/* 20282 */ {(12<<2)|2,{116,89,0}}, +/* 20283 */ {(12<<2)|2,{116,89,0}}, +/* 20284 */ {(12<<2)|2,{116,89,0}}, +/* 20285 */ {(12<<2)|2,{116,89,0}}, +/* 20286 */ {(12<<2)|2,{116,89,0}}, +/* 20287 */ {(12<<2)|2,{116,89,0}}, +/* 20288 */ {(12<<2)|2,{116,106,0}}, +/* 20289 */ {(12<<2)|2,{116,106,0}}, +/* 20290 */ {(12<<2)|2,{116,106,0}}, +/* 20291 */ {(12<<2)|2,{116,106,0}}, +/* 20292 */ {(12<<2)|2,{116,106,0}}, +/* 20293 */ {(12<<2)|2,{116,106,0}}, +/* 20294 */ {(12<<2)|2,{116,106,0}}, +/* 20295 */ {(12<<2)|2,{116,106,0}}, +/* 20296 */ {(12<<2)|2,{116,106,0}}, +/* 20297 */ {(12<<2)|2,{116,106,0}}, +/* 20298 */ {(12<<2)|2,{116,106,0}}, +/* 20299 */ {(12<<2)|2,{116,106,0}}, +/* 20300 */ {(12<<2)|2,{116,106,0}}, +/* 20301 */ {(12<<2)|2,{116,106,0}}, +/* 20302 */ {(12<<2)|2,{116,106,0}}, +/* 20303 */ {(12<<2)|2,{116,106,0}}, +/* 20304 */ {(12<<2)|2,{116,107,0}}, +/* 20305 */ {(12<<2)|2,{116,107,0}}, +/* 20306 */ {(12<<2)|2,{116,107,0}}, +/* 20307 */ {(12<<2)|2,{116,107,0}}, +/* 20308 */ {(12<<2)|2,{116,107,0}}, +/* 20309 */ {(12<<2)|2,{116,107,0}}, +/* 20310 */ {(12<<2)|2,{116,107,0}}, +/* 20311 */ {(12<<2)|2,{116,107,0}}, +/* 20312 */ {(12<<2)|2,{116,107,0}}, +/* 20313 */ {(12<<2)|2,{116,107,0}}, +/* 20314 */ {(12<<2)|2,{116,107,0}}, +/* 20315 */ {(12<<2)|2,{116,107,0}}, +/* 20316 */ {(12<<2)|2,{116,107,0}}, +/* 20317 */ {(12<<2)|2,{116,107,0}}, +/* 20318 */ {(12<<2)|2,{116,107,0}}, +/* 20319 */ {(12<<2)|2,{116,107,0}}, +/* 20320 */ {(12<<2)|2,{116,113,0}}, +/* 20321 */ {(12<<2)|2,{116,113,0}}, +/* 20322 */ {(12<<2)|2,{116,113,0}}, +/* 20323 */ {(12<<2)|2,{116,113,0}}, +/* 20324 */ {(12<<2)|2,{116,113,0}}, +/* 20325 */ {(12<<2)|2,{116,113,0}}, +/* 20326 */ {(12<<2)|2,{116,113,0}}, +/* 20327 */ {(12<<2)|2,{116,113,0}}, +/* 20328 */ {(12<<2)|2,{116,113,0}}, +/* 20329 */ {(12<<2)|2,{116,113,0}}, +/* 20330 */ {(12<<2)|2,{116,113,0}}, +/* 20331 */ {(12<<2)|2,{116,113,0}}, +/* 20332 */ {(12<<2)|2,{116,113,0}}, +/* 20333 */ {(12<<2)|2,{116,113,0}}, +/* 20334 */ {(12<<2)|2,{116,113,0}}, +/* 20335 */ {(12<<2)|2,{116,113,0}}, +/* 20336 */ {(12<<2)|2,{116,118,0}}, +/* 20337 */ {(12<<2)|2,{116,118,0}}, +/* 20338 */ {(12<<2)|2,{116,118,0}}, +/* 20339 */ {(12<<2)|2,{116,118,0}}, +/* 20340 */ {(12<<2)|2,{116,118,0}}, +/* 20341 */ {(12<<2)|2,{116,118,0}}, +/* 20342 */ {(12<<2)|2,{116,118,0}}, +/* 20343 */ {(12<<2)|2,{116,118,0}}, +/* 20344 */ {(12<<2)|2,{116,118,0}}, +/* 20345 */ {(12<<2)|2,{116,118,0}}, +/* 20346 */ {(12<<2)|2,{116,118,0}}, +/* 20347 */ {(12<<2)|2,{116,118,0}}, +/* 20348 */ {(12<<2)|2,{116,118,0}}, +/* 20349 */ {(12<<2)|2,{116,118,0}}, +/* 20350 */ {(12<<2)|2,{116,118,0}}, +/* 20351 */ {(12<<2)|2,{116,118,0}}, +/* 20352 */ {(12<<2)|2,{116,119,0}}, +/* 20353 */ {(12<<2)|2,{116,119,0}}, +/* 20354 */ {(12<<2)|2,{116,119,0}}, +/* 20355 */ {(12<<2)|2,{116,119,0}}, +/* 20356 */ {(12<<2)|2,{116,119,0}}, +/* 20357 */ {(12<<2)|2,{116,119,0}}, +/* 20358 */ {(12<<2)|2,{116,119,0}}, +/* 20359 */ {(12<<2)|2,{116,119,0}}, +/* 20360 */ {(12<<2)|2,{116,119,0}}, +/* 20361 */ {(12<<2)|2,{116,119,0}}, +/* 20362 */ {(12<<2)|2,{116,119,0}}, +/* 20363 */ {(12<<2)|2,{116,119,0}}, +/* 20364 */ {(12<<2)|2,{116,119,0}}, +/* 20365 */ {(12<<2)|2,{116,119,0}}, +/* 20366 */ {(12<<2)|2,{116,119,0}}, +/* 20367 */ {(12<<2)|2,{116,119,0}}, +/* 20368 */ {(12<<2)|2,{116,120,0}}, +/* 20369 */ {(12<<2)|2,{116,120,0}}, +/* 20370 */ {(12<<2)|2,{116,120,0}}, +/* 20371 */ {(12<<2)|2,{116,120,0}}, +/* 20372 */ {(12<<2)|2,{116,120,0}}, +/* 20373 */ {(12<<2)|2,{116,120,0}}, +/* 20374 */ {(12<<2)|2,{116,120,0}}, +/* 20375 */ {(12<<2)|2,{116,120,0}}, +/* 20376 */ {(12<<2)|2,{116,120,0}}, +/* 20377 */ {(12<<2)|2,{116,120,0}}, +/* 20378 */ {(12<<2)|2,{116,120,0}}, +/* 20379 */ {(12<<2)|2,{116,120,0}}, +/* 20380 */ {(12<<2)|2,{116,120,0}}, +/* 20381 */ {(12<<2)|2,{116,120,0}}, +/* 20382 */ {(12<<2)|2,{116,120,0}}, +/* 20383 */ {(12<<2)|2,{116,120,0}}, +/* 20384 */ {(12<<2)|2,{116,121,0}}, +/* 20385 */ {(12<<2)|2,{116,121,0}}, +/* 20386 */ {(12<<2)|2,{116,121,0}}, +/* 20387 */ {(12<<2)|2,{116,121,0}}, +/* 20388 */ {(12<<2)|2,{116,121,0}}, +/* 20389 */ {(12<<2)|2,{116,121,0}}, +/* 20390 */ {(12<<2)|2,{116,121,0}}, +/* 20391 */ {(12<<2)|2,{116,121,0}}, +/* 20392 */ {(12<<2)|2,{116,121,0}}, +/* 20393 */ {(12<<2)|2,{116,121,0}}, +/* 20394 */ {(12<<2)|2,{116,121,0}}, +/* 20395 */ {(12<<2)|2,{116,121,0}}, +/* 20396 */ {(12<<2)|2,{116,121,0}}, +/* 20397 */ {(12<<2)|2,{116,121,0}}, +/* 20398 */ {(12<<2)|2,{116,121,0}}, +/* 20399 */ {(12<<2)|2,{116,121,0}}, +/* 20400 */ {(12<<2)|2,{116,122,0}}, +/* 20401 */ {(12<<2)|2,{116,122,0}}, +/* 20402 */ {(12<<2)|2,{116,122,0}}, +/* 20403 */ {(12<<2)|2,{116,122,0}}, +/* 20404 */ {(12<<2)|2,{116,122,0}}, +/* 20405 */ {(12<<2)|2,{116,122,0}}, +/* 20406 */ {(12<<2)|2,{116,122,0}}, +/* 20407 */ {(12<<2)|2,{116,122,0}}, +/* 20408 */ {(12<<2)|2,{116,122,0}}, +/* 20409 */ {(12<<2)|2,{116,122,0}}, +/* 20410 */ {(12<<2)|2,{116,122,0}}, +/* 20411 */ {(12<<2)|2,{116,122,0}}, +/* 20412 */ {(12<<2)|2,{116,122,0}}, +/* 20413 */ {(12<<2)|2,{116,122,0}}, +/* 20414 */ {(12<<2)|2,{116,122,0}}, +/* 20415 */ {(12<<2)|2,{116,122,0}}, +/* 20416 */ {(13<<2)|2,{116,38,0}}, +/* 20417 */ {(13<<2)|2,{116,38,0}}, +/* 20418 */ {(13<<2)|2,{116,38,0}}, +/* 20419 */ {(13<<2)|2,{116,38,0}}, +/* 20420 */ {(13<<2)|2,{116,38,0}}, +/* 20421 */ {(13<<2)|2,{116,38,0}}, +/* 20422 */ {(13<<2)|2,{116,38,0}}, +/* 20423 */ {(13<<2)|2,{116,38,0}}, +/* 20424 */ {(13<<2)|2,{116,42,0}}, +/* 20425 */ {(13<<2)|2,{116,42,0}}, +/* 20426 */ {(13<<2)|2,{116,42,0}}, +/* 20427 */ {(13<<2)|2,{116,42,0}}, +/* 20428 */ {(13<<2)|2,{116,42,0}}, +/* 20429 */ {(13<<2)|2,{116,42,0}}, +/* 20430 */ {(13<<2)|2,{116,42,0}}, +/* 20431 */ {(13<<2)|2,{116,42,0}}, +/* 20432 */ {(13<<2)|2,{116,44,0}}, +/* 20433 */ {(13<<2)|2,{116,44,0}}, +/* 20434 */ {(13<<2)|2,{116,44,0}}, +/* 20435 */ {(13<<2)|2,{116,44,0}}, +/* 20436 */ {(13<<2)|2,{116,44,0}}, +/* 20437 */ {(13<<2)|2,{116,44,0}}, +/* 20438 */ {(13<<2)|2,{116,44,0}}, +/* 20439 */ {(13<<2)|2,{116,44,0}}, +/* 20440 */ {(13<<2)|2,{116,59,0}}, +/* 20441 */ {(13<<2)|2,{116,59,0}}, +/* 20442 */ {(13<<2)|2,{116,59,0}}, +/* 20443 */ {(13<<2)|2,{116,59,0}}, +/* 20444 */ {(13<<2)|2,{116,59,0}}, +/* 20445 */ {(13<<2)|2,{116,59,0}}, +/* 20446 */ {(13<<2)|2,{116,59,0}}, +/* 20447 */ {(13<<2)|2,{116,59,0}}, +/* 20448 */ {(13<<2)|2,{116,88,0}}, +/* 20449 */ {(13<<2)|2,{116,88,0}}, +/* 20450 */ {(13<<2)|2,{116,88,0}}, +/* 20451 */ {(13<<2)|2,{116,88,0}}, +/* 20452 */ {(13<<2)|2,{116,88,0}}, +/* 20453 */ {(13<<2)|2,{116,88,0}}, +/* 20454 */ {(13<<2)|2,{116,88,0}}, +/* 20455 */ {(13<<2)|2,{116,88,0}}, +/* 20456 */ {(13<<2)|2,{116,90,0}}, +/* 20457 */ {(13<<2)|2,{116,90,0}}, +/* 20458 */ {(13<<2)|2,{116,90,0}}, +/* 20459 */ {(13<<2)|2,{116,90,0}}, +/* 20460 */ {(13<<2)|2,{116,90,0}}, +/* 20461 */ {(13<<2)|2,{116,90,0}}, +/* 20462 */ {(13<<2)|2,{116,90,0}}, +/* 20463 */ {(13<<2)|2,{116,90,0}}, +/* 20464 */ {(15<<2)|2,{116,33,0}}, +/* 20465 */ {(15<<2)|2,{116,33,0}}, +/* 20466 */ {(15<<2)|2,{116,34,0}}, +/* 20467 */ {(15<<2)|2,{116,34,0}}, +/* 20468 */ {(15<<2)|2,{116,40,0}}, +/* 20469 */ {(15<<2)|2,{116,40,0}}, +/* 20470 */ {(15<<2)|2,{116,41,0}}, +/* 20471 */ {(15<<2)|2,{116,41,0}}, +/* 20472 */ {(15<<2)|2,{116,63,0}}, +/* 20473 */ {(15<<2)|2,{116,63,0}}, +/* 20474 */ {(16<<2)|2,{116,39,0}}, +/* 20475 */ {(16<<2)|2,{116,43,0}}, +/* 20476 */ {(16<<2)|2,{116,124,0}}, +/* 20477 */ {(5<<2)|1,{116,0,0}}, +/* 20478 */ {(5<<2)|1,{116,0,0}}, +/* 20479 */ {(5<<2)|1,{116,0,0}}, +/* 20480 */ {(16<<2)|3,{32,48,48}}, +/* 20481 */ {(16<<2)|3,{32,48,49}}, +/* 20482 */ {(16<<2)|3,{32,48,50}}, +/* 20483 */ {(16<<2)|3,{32,48,97}}, +/* 20484 */ {(16<<2)|3,{32,48,99}}, +/* 20485 */ {(16<<2)|3,{32,48,101}}, +/* 20486 */ {(16<<2)|3,{32,48,105}}, +/* 20487 */ {(16<<2)|3,{32,48,111}}, +/* 20488 */ {(16<<2)|3,{32,48,115}}, +/* 20489 */ {(16<<2)|3,{32,48,116}}, +/* 20490 */ {(11<<2)|2,{32,48,0}}, +/* 20491 */ {(11<<2)|2,{32,48,0}}, +/* 20492 */ {(11<<2)|2,{32,48,0}}, +/* 20493 */ {(11<<2)|2,{32,48,0}}, +/* 20494 */ {(11<<2)|2,{32,48,0}}, +/* 20495 */ {(11<<2)|2,{32,48,0}}, +/* 20496 */ {(11<<2)|2,{32,48,0}}, +/* 20497 */ {(11<<2)|2,{32,48,0}}, +/* 20498 */ {(11<<2)|2,{32,48,0}}, +/* 20499 */ {(11<<2)|2,{32,48,0}}, +/* 20500 */ {(11<<2)|2,{32,48,0}}, +/* 20501 */ {(11<<2)|2,{32,48,0}}, +/* 20502 */ {(11<<2)|2,{32,48,0}}, +/* 20503 */ {(11<<2)|2,{32,48,0}}, +/* 20504 */ {(11<<2)|2,{32,48,0}}, +/* 20505 */ {(11<<2)|2,{32,48,0}}, +/* 20506 */ {(11<<2)|2,{32,48,0}}, +/* 20507 */ {(11<<2)|2,{32,48,0}}, +/* 20508 */ {(11<<2)|2,{32,48,0}}, +/* 20509 */ {(11<<2)|2,{32,48,0}}, +/* 20510 */ {(11<<2)|2,{32,48,0}}, +/* 20511 */ {(11<<2)|2,{32,48,0}}, +/* 20512 */ {(16<<2)|3,{32,49,48}}, +/* 20513 */ {(16<<2)|3,{32,49,49}}, +/* 20514 */ {(16<<2)|3,{32,49,50}}, +/* 20515 */ {(16<<2)|3,{32,49,97}}, +/* 20516 */ {(16<<2)|3,{32,49,99}}, +/* 20517 */ {(16<<2)|3,{32,49,101}}, +/* 20518 */ {(16<<2)|3,{32,49,105}}, +/* 20519 */ {(16<<2)|3,{32,49,111}}, +/* 20520 */ {(16<<2)|3,{32,49,115}}, +/* 20521 */ {(16<<2)|3,{32,49,116}}, +/* 20522 */ {(11<<2)|2,{32,49,0}}, +/* 20523 */ {(11<<2)|2,{32,49,0}}, +/* 20524 */ {(11<<2)|2,{32,49,0}}, +/* 20525 */ {(11<<2)|2,{32,49,0}}, +/* 20526 */ {(11<<2)|2,{32,49,0}}, +/* 20527 */ {(11<<2)|2,{32,49,0}}, +/* 20528 */ {(11<<2)|2,{32,49,0}}, +/* 20529 */ {(11<<2)|2,{32,49,0}}, +/* 20530 */ {(11<<2)|2,{32,49,0}}, +/* 20531 */ {(11<<2)|2,{32,49,0}}, +/* 20532 */ {(11<<2)|2,{32,49,0}}, +/* 20533 */ {(11<<2)|2,{32,49,0}}, +/* 20534 */ {(11<<2)|2,{32,49,0}}, +/* 20535 */ {(11<<2)|2,{32,49,0}}, +/* 20536 */ {(11<<2)|2,{32,49,0}}, +/* 20537 */ {(11<<2)|2,{32,49,0}}, +/* 20538 */ {(11<<2)|2,{32,49,0}}, +/* 20539 */ {(11<<2)|2,{32,49,0}}, +/* 20540 */ {(11<<2)|2,{32,49,0}}, +/* 20541 */ {(11<<2)|2,{32,49,0}}, +/* 20542 */ {(11<<2)|2,{32,49,0}}, +/* 20543 */ {(11<<2)|2,{32,49,0}}, +/* 20544 */ {(16<<2)|3,{32,50,48}}, +/* 20545 */ {(16<<2)|3,{32,50,49}}, +/* 20546 */ {(16<<2)|3,{32,50,50}}, +/* 20547 */ {(16<<2)|3,{32,50,97}}, +/* 20548 */ {(16<<2)|3,{32,50,99}}, +/* 20549 */ {(16<<2)|3,{32,50,101}}, +/* 20550 */ {(16<<2)|3,{32,50,105}}, +/* 20551 */ {(16<<2)|3,{32,50,111}}, +/* 20552 */ {(16<<2)|3,{32,50,115}}, +/* 20553 */ {(16<<2)|3,{32,50,116}}, +/* 20554 */ {(11<<2)|2,{32,50,0}}, +/* 20555 */ {(11<<2)|2,{32,50,0}}, +/* 20556 */ {(11<<2)|2,{32,50,0}}, +/* 20557 */ {(11<<2)|2,{32,50,0}}, +/* 20558 */ {(11<<2)|2,{32,50,0}}, +/* 20559 */ {(11<<2)|2,{32,50,0}}, +/* 20560 */ {(11<<2)|2,{32,50,0}}, +/* 20561 */ {(11<<2)|2,{32,50,0}}, +/* 20562 */ {(11<<2)|2,{32,50,0}}, +/* 20563 */ {(11<<2)|2,{32,50,0}}, +/* 20564 */ {(11<<2)|2,{32,50,0}}, +/* 20565 */ {(11<<2)|2,{32,50,0}}, +/* 20566 */ {(11<<2)|2,{32,50,0}}, +/* 20567 */ {(11<<2)|2,{32,50,0}}, +/* 20568 */ {(11<<2)|2,{32,50,0}}, +/* 20569 */ {(11<<2)|2,{32,50,0}}, +/* 20570 */ {(11<<2)|2,{32,50,0}}, +/* 20571 */ {(11<<2)|2,{32,50,0}}, +/* 20572 */ {(11<<2)|2,{32,50,0}}, +/* 20573 */ {(11<<2)|2,{32,50,0}}, +/* 20574 */ {(11<<2)|2,{32,50,0}}, +/* 20575 */ {(11<<2)|2,{32,50,0}}, +/* 20576 */ {(16<<2)|3,{32,97,48}}, +/* 20577 */ {(16<<2)|3,{32,97,49}}, +/* 20578 */ {(16<<2)|3,{32,97,50}}, +/* 20579 */ {(16<<2)|3,{32,97,97}}, +/* 20580 */ {(16<<2)|3,{32,97,99}}, +/* 20581 */ {(16<<2)|3,{32,97,101}}, +/* 20582 */ {(16<<2)|3,{32,97,105}}, +/* 20583 */ {(16<<2)|3,{32,97,111}}, +/* 20584 */ {(16<<2)|3,{32,97,115}}, +/* 20585 */ {(16<<2)|3,{32,97,116}}, +/* 20586 */ {(11<<2)|2,{32,97,0}}, +/* 20587 */ {(11<<2)|2,{32,97,0}}, +/* 20588 */ {(11<<2)|2,{32,97,0}}, +/* 20589 */ {(11<<2)|2,{32,97,0}}, +/* 20590 */ {(11<<2)|2,{32,97,0}}, +/* 20591 */ {(11<<2)|2,{32,97,0}}, +/* 20592 */ {(11<<2)|2,{32,97,0}}, +/* 20593 */ {(11<<2)|2,{32,97,0}}, +/* 20594 */ {(11<<2)|2,{32,97,0}}, +/* 20595 */ {(11<<2)|2,{32,97,0}}, +/* 20596 */ {(11<<2)|2,{32,97,0}}, +/* 20597 */ {(11<<2)|2,{32,97,0}}, +/* 20598 */ {(11<<2)|2,{32,97,0}}, +/* 20599 */ {(11<<2)|2,{32,97,0}}, +/* 20600 */ {(11<<2)|2,{32,97,0}}, +/* 20601 */ {(11<<2)|2,{32,97,0}}, +/* 20602 */ {(11<<2)|2,{32,97,0}}, +/* 20603 */ {(11<<2)|2,{32,97,0}}, +/* 20604 */ {(11<<2)|2,{32,97,0}}, +/* 20605 */ {(11<<2)|2,{32,97,0}}, +/* 20606 */ {(11<<2)|2,{32,97,0}}, +/* 20607 */ {(11<<2)|2,{32,97,0}}, +/* 20608 */ {(16<<2)|3,{32,99,48}}, +/* 20609 */ {(16<<2)|3,{32,99,49}}, +/* 20610 */ {(16<<2)|3,{32,99,50}}, +/* 20611 */ {(16<<2)|3,{32,99,97}}, +/* 20612 */ {(16<<2)|3,{32,99,99}}, +/* 20613 */ {(16<<2)|3,{32,99,101}}, +/* 20614 */ {(16<<2)|3,{32,99,105}}, +/* 20615 */ {(16<<2)|3,{32,99,111}}, +/* 20616 */ {(16<<2)|3,{32,99,115}}, +/* 20617 */ {(16<<2)|3,{32,99,116}}, +/* 20618 */ {(11<<2)|2,{32,99,0}}, +/* 20619 */ {(11<<2)|2,{32,99,0}}, +/* 20620 */ {(11<<2)|2,{32,99,0}}, +/* 20621 */ {(11<<2)|2,{32,99,0}}, +/* 20622 */ {(11<<2)|2,{32,99,0}}, +/* 20623 */ {(11<<2)|2,{32,99,0}}, +/* 20624 */ {(11<<2)|2,{32,99,0}}, +/* 20625 */ {(11<<2)|2,{32,99,0}}, +/* 20626 */ {(11<<2)|2,{32,99,0}}, +/* 20627 */ {(11<<2)|2,{32,99,0}}, +/* 20628 */ {(11<<2)|2,{32,99,0}}, +/* 20629 */ {(11<<2)|2,{32,99,0}}, +/* 20630 */ {(11<<2)|2,{32,99,0}}, +/* 20631 */ {(11<<2)|2,{32,99,0}}, +/* 20632 */ {(11<<2)|2,{32,99,0}}, +/* 20633 */ {(11<<2)|2,{32,99,0}}, +/* 20634 */ {(11<<2)|2,{32,99,0}}, +/* 20635 */ {(11<<2)|2,{32,99,0}}, +/* 20636 */ {(11<<2)|2,{32,99,0}}, +/* 20637 */ {(11<<2)|2,{32,99,0}}, +/* 20638 */ {(11<<2)|2,{32,99,0}}, +/* 20639 */ {(11<<2)|2,{32,99,0}}, +/* 20640 */ {(16<<2)|3,{32,101,48}}, +/* 20641 */ {(16<<2)|3,{32,101,49}}, +/* 20642 */ {(16<<2)|3,{32,101,50}}, +/* 20643 */ {(16<<2)|3,{32,101,97}}, +/* 20644 */ {(16<<2)|3,{32,101,99}}, +/* 20645 */ {(16<<2)|3,{32,101,101}}, +/* 20646 */ {(16<<2)|3,{32,101,105}}, +/* 20647 */ {(16<<2)|3,{32,101,111}}, +/* 20648 */ {(16<<2)|3,{32,101,115}}, +/* 20649 */ {(16<<2)|3,{32,101,116}}, +/* 20650 */ {(11<<2)|2,{32,101,0}}, +/* 20651 */ {(11<<2)|2,{32,101,0}}, +/* 20652 */ {(11<<2)|2,{32,101,0}}, +/* 20653 */ {(11<<2)|2,{32,101,0}}, +/* 20654 */ {(11<<2)|2,{32,101,0}}, +/* 20655 */ {(11<<2)|2,{32,101,0}}, +/* 20656 */ {(11<<2)|2,{32,101,0}}, +/* 20657 */ {(11<<2)|2,{32,101,0}}, +/* 20658 */ {(11<<2)|2,{32,101,0}}, +/* 20659 */ {(11<<2)|2,{32,101,0}}, +/* 20660 */ {(11<<2)|2,{32,101,0}}, +/* 20661 */ {(11<<2)|2,{32,101,0}}, +/* 20662 */ {(11<<2)|2,{32,101,0}}, +/* 20663 */ {(11<<2)|2,{32,101,0}}, +/* 20664 */ {(11<<2)|2,{32,101,0}}, +/* 20665 */ {(11<<2)|2,{32,101,0}}, +/* 20666 */ {(11<<2)|2,{32,101,0}}, +/* 20667 */ {(11<<2)|2,{32,101,0}}, +/* 20668 */ {(11<<2)|2,{32,101,0}}, +/* 20669 */ {(11<<2)|2,{32,101,0}}, +/* 20670 */ {(11<<2)|2,{32,101,0}}, +/* 20671 */ {(11<<2)|2,{32,101,0}}, +/* 20672 */ {(16<<2)|3,{32,105,48}}, +/* 20673 */ {(16<<2)|3,{32,105,49}}, +/* 20674 */ {(16<<2)|3,{32,105,50}}, +/* 20675 */ {(16<<2)|3,{32,105,97}}, +/* 20676 */ {(16<<2)|3,{32,105,99}}, +/* 20677 */ {(16<<2)|3,{32,105,101}}, +/* 20678 */ {(16<<2)|3,{32,105,105}}, +/* 20679 */ {(16<<2)|3,{32,105,111}}, +/* 20680 */ {(16<<2)|3,{32,105,115}}, +/* 20681 */ {(16<<2)|3,{32,105,116}}, +/* 20682 */ {(11<<2)|2,{32,105,0}}, +/* 20683 */ {(11<<2)|2,{32,105,0}}, +/* 20684 */ {(11<<2)|2,{32,105,0}}, +/* 20685 */ {(11<<2)|2,{32,105,0}}, +/* 20686 */ {(11<<2)|2,{32,105,0}}, +/* 20687 */ {(11<<2)|2,{32,105,0}}, +/* 20688 */ {(11<<2)|2,{32,105,0}}, +/* 20689 */ {(11<<2)|2,{32,105,0}}, +/* 20690 */ {(11<<2)|2,{32,105,0}}, +/* 20691 */ {(11<<2)|2,{32,105,0}}, +/* 20692 */ {(11<<2)|2,{32,105,0}}, +/* 20693 */ {(11<<2)|2,{32,105,0}}, +/* 20694 */ {(11<<2)|2,{32,105,0}}, +/* 20695 */ {(11<<2)|2,{32,105,0}}, +/* 20696 */ {(11<<2)|2,{32,105,0}}, +/* 20697 */ {(11<<2)|2,{32,105,0}}, +/* 20698 */ {(11<<2)|2,{32,105,0}}, +/* 20699 */ {(11<<2)|2,{32,105,0}}, +/* 20700 */ {(11<<2)|2,{32,105,0}}, +/* 20701 */ {(11<<2)|2,{32,105,0}}, +/* 20702 */ {(11<<2)|2,{32,105,0}}, +/* 20703 */ {(11<<2)|2,{32,105,0}}, +/* 20704 */ {(16<<2)|3,{32,111,48}}, +/* 20705 */ {(16<<2)|3,{32,111,49}}, +/* 20706 */ {(16<<2)|3,{32,111,50}}, +/* 20707 */ {(16<<2)|3,{32,111,97}}, +/* 20708 */ {(16<<2)|3,{32,111,99}}, +/* 20709 */ {(16<<2)|3,{32,111,101}}, +/* 20710 */ {(16<<2)|3,{32,111,105}}, +/* 20711 */ {(16<<2)|3,{32,111,111}}, +/* 20712 */ {(16<<2)|3,{32,111,115}}, +/* 20713 */ {(16<<2)|3,{32,111,116}}, +/* 20714 */ {(11<<2)|2,{32,111,0}}, +/* 20715 */ {(11<<2)|2,{32,111,0}}, +/* 20716 */ {(11<<2)|2,{32,111,0}}, +/* 20717 */ {(11<<2)|2,{32,111,0}}, +/* 20718 */ {(11<<2)|2,{32,111,0}}, +/* 20719 */ {(11<<2)|2,{32,111,0}}, +/* 20720 */ {(11<<2)|2,{32,111,0}}, +/* 20721 */ {(11<<2)|2,{32,111,0}}, +/* 20722 */ {(11<<2)|2,{32,111,0}}, +/* 20723 */ {(11<<2)|2,{32,111,0}}, +/* 20724 */ {(11<<2)|2,{32,111,0}}, +/* 20725 */ {(11<<2)|2,{32,111,0}}, +/* 20726 */ {(11<<2)|2,{32,111,0}}, +/* 20727 */ {(11<<2)|2,{32,111,0}}, +/* 20728 */ {(11<<2)|2,{32,111,0}}, +/* 20729 */ {(11<<2)|2,{32,111,0}}, +/* 20730 */ {(11<<2)|2,{32,111,0}}, +/* 20731 */ {(11<<2)|2,{32,111,0}}, +/* 20732 */ {(11<<2)|2,{32,111,0}}, +/* 20733 */ {(11<<2)|2,{32,111,0}}, +/* 20734 */ {(11<<2)|2,{32,111,0}}, +/* 20735 */ {(11<<2)|2,{32,111,0}}, +/* 20736 */ {(16<<2)|3,{32,115,48}}, +/* 20737 */ {(16<<2)|3,{32,115,49}}, +/* 20738 */ {(16<<2)|3,{32,115,50}}, +/* 20739 */ {(16<<2)|3,{32,115,97}}, +/* 20740 */ {(16<<2)|3,{32,115,99}}, +/* 20741 */ {(16<<2)|3,{32,115,101}}, +/* 20742 */ {(16<<2)|3,{32,115,105}}, +/* 20743 */ {(16<<2)|3,{32,115,111}}, +/* 20744 */ {(16<<2)|3,{32,115,115}}, +/* 20745 */ {(16<<2)|3,{32,115,116}}, +/* 20746 */ {(11<<2)|2,{32,115,0}}, +/* 20747 */ {(11<<2)|2,{32,115,0}}, +/* 20748 */ {(11<<2)|2,{32,115,0}}, +/* 20749 */ {(11<<2)|2,{32,115,0}}, +/* 20750 */ {(11<<2)|2,{32,115,0}}, +/* 20751 */ {(11<<2)|2,{32,115,0}}, +/* 20752 */ {(11<<2)|2,{32,115,0}}, +/* 20753 */ {(11<<2)|2,{32,115,0}}, +/* 20754 */ {(11<<2)|2,{32,115,0}}, +/* 20755 */ {(11<<2)|2,{32,115,0}}, +/* 20756 */ {(11<<2)|2,{32,115,0}}, +/* 20757 */ {(11<<2)|2,{32,115,0}}, +/* 20758 */ {(11<<2)|2,{32,115,0}}, +/* 20759 */ {(11<<2)|2,{32,115,0}}, +/* 20760 */ {(11<<2)|2,{32,115,0}}, +/* 20761 */ {(11<<2)|2,{32,115,0}}, +/* 20762 */ {(11<<2)|2,{32,115,0}}, +/* 20763 */ {(11<<2)|2,{32,115,0}}, +/* 20764 */ {(11<<2)|2,{32,115,0}}, +/* 20765 */ {(11<<2)|2,{32,115,0}}, +/* 20766 */ {(11<<2)|2,{32,115,0}}, +/* 20767 */ {(11<<2)|2,{32,115,0}}, +/* 20768 */ {(16<<2)|3,{32,116,48}}, +/* 20769 */ {(16<<2)|3,{32,116,49}}, +/* 20770 */ {(16<<2)|3,{32,116,50}}, +/* 20771 */ {(16<<2)|3,{32,116,97}}, +/* 20772 */ {(16<<2)|3,{32,116,99}}, +/* 20773 */ {(16<<2)|3,{32,116,101}}, +/* 20774 */ {(16<<2)|3,{32,116,105}}, +/* 20775 */ {(16<<2)|3,{32,116,111}}, +/* 20776 */ {(16<<2)|3,{32,116,115}}, +/* 20777 */ {(16<<2)|3,{32,116,116}}, +/* 20778 */ {(11<<2)|2,{32,116,0}}, +/* 20779 */ {(11<<2)|2,{32,116,0}}, +/* 20780 */ {(11<<2)|2,{32,116,0}}, +/* 20781 */ {(11<<2)|2,{32,116,0}}, +/* 20782 */ {(11<<2)|2,{32,116,0}}, +/* 20783 */ {(11<<2)|2,{32,116,0}}, +/* 20784 */ {(11<<2)|2,{32,116,0}}, +/* 20785 */ {(11<<2)|2,{32,116,0}}, +/* 20786 */ {(11<<2)|2,{32,116,0}}, +/* 20787 */ {(11<<2)|2,{32,116,0}}, +/* 20788 */ {(11<<2)|2,{32,116,0}}, +/* 20789 */ {(11<<2)|2,{32,116,0}}, +/* 20790 */ {(11<<2)|2,{32,116,0}}, +/* 20791 */ {(11<<2)|2,{32,116,0}}, +/* 20792 */ {(11<<2)|2,{32,116,0}}, +/* 20793 */ {(11<<2)|2,{32,116,0}}, +/* 20794 */ {(11<<2)|2,{32,116,0}}, +/* 20795 */ {(11<<2)|2,{32,116,0}}, +/* 20796 */ {(11<<2)|2,{32,116,0}}, +/* 20797 */ {(11<<2)|2,{32,116,0}}, +/* 20798 */ {(11<<2)|2,{32,116,0}}, +/* 20799 */ {(11<<2)|2,{32,116,0}}, +/* 20800 */ {(12<<2)|2,{32,32,0}}, +/* 20801 */ {(12<<2)|2,{32,32,0}}, +/* 20802 */ {(12<<2)|2,{32,32,0}}, +/* 20803 */ {(12<<2)|2,{32,32,0}}, +/* 20804 */ {(12<<2)|2,{32,32,0}}, +/* 20805 */ {(12<<2)|2,{32,32,0}}, +/* 20806 */ {(12<<2)|2,{32,32,0}}, +/* 20807 */ {(12<<2)|2,{32,32,0}}, +/* 20808 */ {(12<<2)|2,{32,32,0}}, +/* 20809 */ {(12<<2)|2,{32,32,0}}, +/* 20810 */ {(12<<2)|2,{32,32,0}}, +/* 20811 */ {(12<<2)|2,{32,32,0}}, +/* 20812 */ {(12<<2)|2,{32,32,0}}, +/* 20813 */ {(12<<2)|2,{32,32,0}}, +/* 20814 */ {(12<<2)|2,{32,32,0}}, +/* 20815 */ {(12<<2)|2,{32,32,0}}, +/* 20816 */ {(12<<2)|2,{32,37,0}}, +/* 20817 */ {(12<<2)|2,{32,37,0}}, +/* 20818 */ {(12<<2)|2,{32,37,0}}, +/* 20819 */ {(12<<2)|2,{32,37,0}}, +/* 20820 */ {(12<<2)|2,{32,37,0}}, +/* 20821 */ {(12<<2)|2,{32,37,0}}, +/* 20822 */ {(12<<2)|2,{32,37,0}}, +/* 20823 */ {(12<<2)|2,{32,37,0}}, +/* 20824 */ {(12<<2)|2,{32,37,0}}, +/* 20825 */ {(12<<2)|2,{32,37,0}}, +/* 20826 */ {(12<<2)|2,{32,37,0}}, +/* 20827 */ {(12<<2)|2,{32,37,0}}, +/* 20828 */ {(12<<2)|2,{32,37,0}}, +/* 20829 */ {(12<<2)|2,{32,37,0}}, +/* 20830 */ {(12<<2)|2,{32,37,0}}, +/* 20831 */ {(12<<2)|2,{32,37,0}}, +/* 20832 */ {(12<<2)|2,{32,45,0}}, +/* 20833 */ {(12<<2)|2,{32,45,0}}, +/* 20834 */ {(12<<2)|2,{32,45,0}}, +/* 20835 */ {(12<<2)|2,{32,45,0}}, +/* 20836 */ {(12<<2)|2,{32,45,0}}, +/* 20837 */ {(12<<2)|2,{32,45,0}}, +/* 20838 */ {(12<<2)|2,{32,45,0}}, +/* 20839 */ {(12<<2)|2,{32,45,0}}, +/* 20840 */ {(12<<2)|2,{32,45,0}}, +/* 20841 */ {(12<<2)|2,{32,45,0}}, +/* 20842 */ {(12<<2)|2,{32,45,0}}, +/* 20843 */ {(12<<2)|2,{32,45,0}}, +/* 20844 */ {(12<<2)|2,{32,45,0}}, +/* 20845 */ {(12<<2)|2,{32,45,0}}, +/* 20846 */ {(12<<2)|2,{32,45,0}}, +/* 20847 */ {(12<<2)|2,{32,45,0}}, +/* 20848 */ {(12<<2)|2,{32,46,0}}, +/* 20849 */ {(12<<2)|2,{32,46,0}}, +/* 20850 */ {(12<<2)|2,{32,46,0}}, +/* 20851 */ {(12<<2)|2,{32,46,0}}, +/* 20852 */ {(12<<2)|2,{32,46,0}}, +/* 20853 */ {(12<<2)|2,{32,46,0}}, +/* 20854 */ {(12<<2)|2,{32,46,0}}, +/* 20855 */ {(12<<2)|2,{32,46,0}}, +/* 20856 */ {(12<<2)|2,{32,46,0}}, +/* 20857 */ {(12<<2)|2,{32,46,0}}, +/* 20858 */ {(12<<2)|2,{32,46,0}}, +/* 20859 */ {(12<<2)|2,{32,46,0}}, +/* 20860 */ {(12<<2)|2,{32,46,0}}, +/* 20861 */ {(12<<2)|2,{32,46,0}}, +/* 20862 */ {(12<<2)|2,{32,46,0}}, +/* 20863 */ {(12<<2)|2,{32,46,0}}, +/* 20864 */ {(12<<2)|2,{32,47,0}}, +/* 20865 */ {(12<<2)|2,{32,47,0}}, +/* 20866 */ {(12<<2)|2,{32,47,0}}, +/* 20867 */ {(12<<2)|2,{32,47,0}}, +/* 20868 */ {(12<<2)|2,{32,47,0}}, +/* 20869 */ {(12<<2)|2,{32,47,0}}, +/* 20870 */ {(12<<2)|2,{32,47,0}}, +/* 20871 */ {(12<<2)|2,{32,47,0}}, +/* 20872 */ {(12<<2)|2,{32,47,0}}, +/* 20873 */ {(12<<2)|2,{32,47,0}}, +/* 20874 */ {(12<<2)|2,{32,47,0}}, +/* 20875 */ {(12<<2)|2,{32,47,0}}, +/* 20876 */ {(12<<2)|2,{32,47,0}}, +/* 20877 */ {(12<<2)|2,{32,47,0}}, +/* 20878 */ {(12<<2)|2,{32,47,0}}, +/* 20879 */ {(12<<2)|2,{32,47,0}}, +/* 20880 */ {(12<<2)|2,{32,51,0}}, +/* 20881 */ {(12<<2)|2,{32,51,0}}, +/* 20882 */ {(12<<2)|2,{32,51,0}}, +/* 20883 */ {(12<<2)|2,{32,51,0}}, +/* 20884 */ {(12<<2)|2,{32,51,0}}, +/* 20885 */ {(12<<2)|2,{32,51,0}}, +/* 20886 */ {(12<<2)|2,{32,51,0}}, +/* 20887 */ {(12<<2)|2,{32,51,0}}, +/* 20888 */ {(12<<2)|2,{32,51,0}}, +/* 20889 */ {(12<<2)|2,{32,51,0}}, +/* 20890 */ {(12<<2)|2,{32,51,0}}, +/* 20891 */ {(12<<2)|2,{32,51,0}}, +/* 20892 */ {(12<<2)|2,{32,51,0}}, +/* 20893 */ {(12<<2)|2,{32,51,0}}, +/* 20894 */ {(12<<2)|2,{32,51,0}}, +/* 20895 */ {(12<<2)|2,{32,51,0}}, +/* 20896 */ {(12<<2)|2,{32,52,0}}, +/* 20897 */ {(12<<2)|2,{32,52,0}}, +/* 20898 */ {(12<<2)|2,{32,52,0}}, +/* 20899 */ {(12<<2)|2,{32,52,0}}, +/* 20900 */ {(12<<2)|2,{32,52,0}}, +/* 20901 */ {(12<<2)|2,{32,52,0}}, +/* 20902 */ {(12<<2)|2,{32,52,0}}, +/* 20903 */ {(12<<2)|2,{32,52,0}}, +/* 20904 */ {(12<<2)|2,{32,52,0}}, +/* 20905 */ {(12<<2)|2,{32,52,0}}, +/* 20906 */ {(12<<2)|2,{32,52,0}}, +/* 20907 */ {(12<<2)|2,{32,52,0}}, +/* 20908 */ {(12<<2)|2,{32,52,0}}, +/* 20909 */ {(12<<2)|2,{32,52,0}}, +/* 20910 */ {(12<<2)|2,{32,52,0}}, +/* 20911 */ {(12<<2)|2,{32,52,0}}, +/* 20912 */ {(12<<2)|2,{32,53,0}}, +/* 20913 */ {(12<<2)|2,{32,53,0}}, +/* 20914 */ {(12<<2)|2,{32,53,0}}, +/* 20915 */ {(12<<2)|2,{32,53,0}}, +/* 20916 */ {(12<<2)|2,{32,53,0}}, +/* 20917 */ {(12<<2)|2,{32,53,0}}, +/* 20918 */ {(12<<2)|2,{32,53,0}}, +/* 20919 */ {(12<<2)|2,{32,53,0}}, +/* 20920 */ {(12<<2)|2,{32,53,0}}, +/* 20921 */ {(12<<2)|2,{32,53,0}}, +/* 20922 */ {(12<<2)|2,{32,53,0}}, +/* 20923 */ {(12<<2)|2,{32,53,0}}, +/* 20924 */ {(12<<2)|2,{32,53,0}}, +/* 20925 */ {(12<<2)|2,{32,53,0}}, +/* 20926 */ {(12<<2)|2,{32,53,0}}, +/* 20927 */ {(12<<2)|2,{32,53,0}}, +/* 20928 */ {(12<<2)|2,{32,54,0}}, +/* 20929 */ {(12<<2)|2,{32,54,0}}, +/* 20930 */ {(12<<2)|2,{32,54,0}}, +/* 20931 */ {(12<<2)|2,{32,54,0}}, +/* 20932 */ {(12<<2)|2,{32,54,0}}, +/* 20933 */ {(12<<2)|2,{32,54,0}}, +/* 20934 */ {(12<<2)|2,{32,54,0}}, +/* 20935 */ {(12<<2)|2,{32,54,0}}, +/* 20936 */ {(12<<2)|2,{32,54,0}}, +/* 20937 */ {(12<<2)|2,{32,54,0}}, +/* 20938 */ {(12<<2)|2,{32,54,0}}, +/* 20939 */ {(12<<2)|2,{32,54,0}}, +/* 20940 */ {(12<<2)|2,{32,54,0}}, +/* 20941 */ {(12<<2)|2,{32,54,0}}, +/* 20942 */ {(12<<2)|2,{32,54,0}}, +/* 20943 */ {(12<<2)|2,{32,54,0}}, +/* 20944 */ {(12<<2)|2,{32,55,0}}, +/* 20945 */ {(12<<2)|2,{32,55,0}}, +/* 20946 */ {(12<<2)|2,{32,55,0}}, +/* 20947 */ {(12<<2)|2,{32,55,0}}, +/* 20948 */ {(12<<2)|2,{32,55,0}}, +/* 20949 */ {(12<<2)|2,{32,55,0}}, +/* 20950 */ {(12<<2)|2,{32,55,0}}, +/* 20951 */ {(12<<2)|2,{32,55,0}}, +/* 20952 */ {(12<<2)|2,{32,55,0}}, +/* 20953 */ {(12<<2)|2,{32,55,0}}, +/* 20954 */ {(12<<2)|2,{32,55,0}}, +/* 20955 */ {(12<<2)|2,{32,55,0}}, +/* 20956 */ {(12<<2)|2,{32,55,0}}, +/* 20957 */ {(12<<2)|2,{32,55,0}}, +/* 20958 */ {(12<<2)|2,{32,55,0}}, +/* 20959 */ {(12<<2)|2,{32,55,0}}, +/* 20960 */ {(12<<2)|2,{32,56,0}}, +/* 20961 */ {(12<<2)|2,{32,56,0}}, +/* 20962 */ {(12<<2)|2,{32,56,0}}, +/* 20963 */ {(12<<2)|2,{32,56,0}}, +/* 20964 */ {(12<<2)|2,{32,56,0}}, +/* 20965 */ {(12<<2)|2,{32,56,0}}, +/* 20966 */ {(12<<2)|2,{32,56,0}}, +/* 20967 */ {(12<<2)|2,{32,56,0}}, +/* 20968 */ {(12<<2)|2,{32,56,0}}, +/* 20969 */ {(12<<2)|2,{32,56,0}}, +/* 20970 */ {(12<<2)|2,{32,56,0}}, +/* 20971 */ {(12<<2)|2,{32,56,0}}, +/* 20972 */ {(12<<2)|2,{32,56,0}}, +/* 20973 */ {(12<<2)|2,{32,56,0}}, +/* 20974 */ {(12<<2)|2,{32,56,0}}, +/* 20975 */ {(12<<2)|2,{32,56,0}}, +/* 20976 */ {(12<<2)|2,{32,57,0}}, +/* 20977 */ {(12<<2)|2,{32,57,0}}, +/* 20978 */ {(12<<2)|2,{32,57,0}}, +/* 20979 */ {(12<<2)|2,{32,57,0}}, +/* 20980 */ {(12<<2)|2,{32,57,0}}, +/* 20981 */ {(12<<2)|2,{32,57,0}}, +/* 20982 */ {(12<<2)|2,{32,57,0}}, +/* 20983 */ {(12<<2)|2,{32,57,0}}, +/* 20984 */ {(12<<2)|2,{32,57,0}}, +/* 20985 */ {(12<<2)|2,{32,57,0}}, +/* 20986 */ {(12<<2)|2,{32,57,0}}, +/* 20987 */ {(12<<2)|2,{32,57,0}}, +/* 20988 */ {(12<<2)|2,{32,57,0}}, +/* 20989 */ {(12<<2)|2,{32,57,0}}, +/* 20990 */ {(12<<2)|2,{32,57,0}}, +/* 20991 */ {(12<<2)|2,{32,57,0}}, +/* 20992 */ {(12<<2)|2,{32,61,0}}, +/* 20993 */ {(12<<2)|2,{32,61,0}}, +/* 20994 */ {(12<<2)|2,{32,61,0}}, +/* 20995 */ {(12<<2)|2,{32,61,0}}, +/* 20996 */ {(12<<2)|2,{32,61,0}}, +/* 20997 */ {(12<<2)|2,{32,61,0}}, +/* 20998 */ {(12<<2)|2,{32,61,0}}, +/* 20999 */ {(12<<2)|2,{32,61,0}}, +/* 21000 */ {(12<<2)|2,{32,61,0}}, +/* 21001 */ {(12<<2)|2,{32,61,0}}, +/* 21002 */ {(12<<2)|2,{32,61,0}}, +/* 21003 */ {(12<<2)|2,{32,61,0}}, +/* 21004 */ {(12<<2)|2,{32,61,0}}, +/* 21005 */ {(12<<2)|2,{32,61,0}}, +/* 21006 */ {(12<<2)|2,{32,61,0}}, +/* 21007 */ {(12<<2)|2,{32,61,0}}, +/* 21008 */ {(12<<2)|2,{32,65,0}}, +/* 21009 */ {(12<<2)|2,{32,65,0}}, +/* 21010 */ {(12<<2)|2,{32,65,0}}, +/* 21011 */ {(12<<2)|2,{32,65,0}}, +/* 21012 */ {(12<<2)|2,{32,65,0}}, +/* 21013 */ {(12<<2)|2,{32,65,0}}, +/* 21014 */ {(12<<2)|2,{32,65,0}}, +/* 21015 */ {(12<<2)|2,{32,65,0}}, +/* 21016 */ {(12<<2)|2,{32,65,0}}, +/* 21017 */ {(12<<2)|2,{32,65,0}}, +/* 21018 */ {(12<<2)|2,{32,65,0}}, +/* 21019 */ {(12<<2)|2,{32,65,0}}, +/* 21020 */ {(12<<2)|2,{32,65,0}}, +/* 21021 */ {(12<<2)|2,{32,65,0}}, +/* 21022 */ {(12<<2)|2,{32,65,0}}, +/* 21023 */ {(12<<2)|2,{32,65,0}}, +/* 21024 */ {(12<<2)|2,{32,95,0}}, +/* 21025 */ {(12<<2)|2,{32,95,0}}, +/* 21026 */ {(12<<2)|2,{32,95,0}}, +/* 21027 */ {(12<<2)|2,{32,95,0}}, +/* 21028 */ {(12<<2)|2,{32,95,0}}, +/* 21029 */ {(12<<2)|2,{32,95,0}}, +/* 21030 */ {(12<<2)|2,{32,95,0}}, +/* 21031 */ {(12<<2)|2,{32,95,0}}, +/* 21032 */ {(12<<2)|2,{32,95,0}}, +/* 21033 */ {(12<<2)|2,{32,95,0}}, +/* 21034 */ {(12<<2)|2,{32,95,0}}, +/* 21035 */ {(12<<2)|2,{32,95,0}}, +/* 21036 */ {(12<<2)|2,{32,95,0}}, +/* 21037 */ {(12<<2)|2,{32,95,0}}, +/* 21038 */ {(12<<2)|2,{32,95,0}}, +/* 21039 */ {(12<<2)|2,{32,95,0}}, +/* 21040 */ {(12<<2)|2,{32,98,0}}, +/* 21041 */ {(12<<2)|2,{32,98,0}}, +/* 21042 */ {(12<<2)|2,{32,98,0}}, +/* 21043 */ {(12<<2)|2,{32,98,0}}, +/* 21044 */ {(12<<2)|2,{32,98,0}}, +/* 21045 */ {(12<<2)|2,{32,98,0}}, +/* 21046 */ {(12<<2)|2,{32,98,0}}, +/* 21047 */ {(12<<2)|2,{32,98,0}}, +/* 21048 */ {(12<<2)|2,{32,98,0}}, +/* 21049 */ {(12<<2)|2,{32,98,0}}, +/* 21050 */ {(12<<2)|2,{32,98,0}}, +/* 21051 */ {(12<<2)|2,{32,98,0}}, +/* 21052 */ {(12<<2)|2,{32,98,0}}, +/* 21053 */ {(12<<2)|2,{32,98,0}}, +/* 21054 */ {(12<<2)|2,{32,98,0}}, +/* 21055 */ {(12<<2)|2,{32,98,0}}, +/* 21056 */ {(12<<2)|2,{32,100,0}}, +/* 21057 */ {(12<<2)|2,{32,100,0}}, +/* 21058 */ {(12<<2)|2,{32,100,0}}, +/* 21059 */ {(12<<2)|2,{32,100,0}}, +/* 21060 */ {(12<<2)|2,{32,100,0}}, +/* 21061 */ {(12<<2)|2,{32,100,0}}, +/* 21062 */ {(12<<2)|2,{32,100,0}}, +/* 21063 */ {(12<<2)|2,{32,100,0}}, +/* 21064 */ {(12<<2)|2,{32,100,0}}, +/* 21065 */ {(12<<2)|2,{32,100,0}}, +/* 21066 */ {(12<<2)|2,{32,100,0}}, +/* 21067 */ {(12<<2)|2,{32,100,0}}, +/* 21068 */ {(12<<2)|2,{32,100,0}}, +/* 21069 */ {(12<<2)|2,{32,100,0}}, +/* 21070 */ {(12<<2)|2,{32,100,0}}, +/* 21071 */ {(12<<2)|2,{32,100,0}}, +/* 21072 */ {(12<<2)|2,{32,102,0}}, +/* 21073 */ {(12<<2)|2,{32,102,0}}, +/* 21074 */ {(12<<2)|2,{32,102,0}}, +/* 21075 */ {(12<<2)|2,{32,102,0}}, +/* 21076 */ {(12<<2)|2,{32,102,0}}, +/* 21077 */ {(12<<2)|2,{32,102,0}}, +/* 21078 */ {(12<<2)|2,{32,102,0}}, +/* 21079 */ {(12<<2)|2,{32,102,0}}, +/* 21080 */ {(12<<2)|2,{32,102,0}}, +/* 21081 */ {(12<<2)|2,{32,102,0}}, +/* 21082 */ {(12<<2)|2,{32,102,0}}, +/* 21083 */ {(12<<2)|2,{32,102,0}}, +/* 21084 */ {(12<<2)|2,{32,102,0}}, +/* 21085 */ {(12<<2)|2,{32,102,0}}, +/* 21086 */ {(12<<2)|2,{32,102,0}}, +/* 21087 */ {(12<<2)|2,{32,102,0}}, +/* 21088 */ {(12<<2)|2,{32,103,0}}, +/* 21089 */ {(12<<2)|2,{32,103,0}}, +/* 21090 */ {(12<<2)|2,{32,103,0}}, +/* 21091 */ {(12<<2)|2,{32,103,0}}, +/* 21092 */ {(12<<2)|2,{32,103,0}}, +/* 21093 */ {(12<<2)|2,{32,103,0}}, +/* 21094 */ {(12<<2)|2,{32,103,0}}, +/* 21095 */ {(12<<2)|2,{32,103,0}}, +/* 21096 */ {(12<<2)|2,{32,103,0}}, +/* 21097 */ {(12<<2)|2,{32,103,0}}, +/* 21098 */ {(12<<2)|2,{32,103,0}}, +/* 21099 */ {(12<<2)|2,{32,103,0}}, +/* 21100 */ {(12<<2)|2,{32,103,0}}, +/* 21101 */ {(12<<2)|2,{32,103,0}}, +/* 21102 */ {(12<<2)|2,{32,103,0}}, +/* 21103 */ {(12<<2)|2,{32,103,0}}, +/* 21104 */ {(12<<2)|2,{32,104,0}}, +/* 21105 */ {(12<<2)|2,{32,104,0}}, +/* 21106 */ {(12<<2)|2,{32,104,0}}, +/* 21107 */ {(12<<2)|2,{32,104,0}}, +/* 21108 */ {(12<<2)|2,{32,104,0}}, +/* 21109 */ {(12<<2)|2,{32,104,0}}, +/* 21110 */ {(12<<2)|2,{32,104,0}}, +/* 21111 */ {(12<<2)|2,{32,104,0}}, +/* 21112 */ {(12<<2)|2,{32,104,0}}, +/* 21113 */ {(12<<2)|2,{32,104,0}}, +/* 21114 */ {(12<<2)|2,{32,104,0}}, +/* 21115 */ {(12<<2)|2,{32,104,0}}, +/* 21116 */ {(12<<2)|2,{32,104,0}}, +/* 21117 */ {(12<<2)|2,{32,104,0}}, +/* 21118 */ {(12<<2)|2,{32,104,0}}, +/* 21119 */ {(12<<2)|2,{32,104,0}}, +/* 21120 */ {(12<<2)|2,{32,108,0}}, +/* 21121 */ {(12<<2)|2,{32,108,0}}, +/* 21122 */ {(12<<2)|2,{32,108,0}}, +/* 21123 */ {(12<<2)|2,{32,108,0}}, +/* 21124 */ {(12<<2)|2,{32,108,0}}, +/* 21125 */ {(12<<2)|2,{32,108,0}}, +/* 21126 */ {(12<<2)|2,{32,108,0}}, +/* 21127 */ {(12<<2)|2,{32,108,0}}, +/* 21128 */ {(12<<2)|2,{32,108,0}}, +/* 21129 */ {(12<<2)|2,{32,108,0}}, +/* 21130 */ {(12<<2)|2,{32,108,0}}, +/* 21131 */ {(12<<2)|2,{32,108,0}}, +/* 21132 */ {(12<<2)|2,{32,108,0}}, +/* 21133 */ {(12<<2)|2,{32,108,0}}, +/* 21134 */ {(12<<2)|2,{32,108,0}}, +/* 21135 */ {(12<<2)|2,{32,108,0}}, +/* 21136 */ {(12<<2)|2,{32,109,0}}, +/* 21137 */ {(12<<2)|2,{32,109,0}}, +/* 21138 */ {(12<<2)|2,{32,109,0}}, +/* 21139 */ {(12<<2)|2,{32,109,0}}, +/* 21140 */ {(12<<2)|2,{32,109,0}}, +/* 21141 */ {(12<<2)|2,{32,109,0}}, +/* 21142 */ {(12<<2)|2,{32,109,0}}, +/* 21143 */ {(12<<2)|2,{32,109,0}}, +/* 21144 */ {(12<<2)|2,{32,109,0}}, +/* 21145 */ {(12<<2)|2,{32,109,0}}, +/* 21146 */ {(12<<2)|2,{32,109,0}}, +/* 21147 */ {(12<<2)|2,{32,109,0}}, +/* 21148 */ {(12<<2)|2,{32,109,0}}, +/* 21149 */ {(12<<2)|2,{32,109,0}}, +/* 21150 */ {(12<<2)|2,{32,109,0}}, +/* 21151 */ {(12<<2)|2,{32,109,0}}, +/* 21152 */ {(12<<2)|2,{32,110,0}}, +/* 21153 */ {(12<<2)|2,{32,110,0}}, +/* 21154 */ {(12<<2)|2,{32,110,0}}, +/* 21155 */ {(12<<2)|2,{32,110,0}}, +/* 21156 */ {(12<<2)|2,{32,110,0}}, +/* 21157 */ {(12<<2)|2,{32,110,0}}, +/* 21158 */ {(12<<2)|2,{32,110,0}}, +/* 21159 */ {(12<<2)|2,{32,110,0}}, +/* 21160 */ {(12<<2)|2,{32,110,0}}, +/* 21161 */ {(12<<2)|2,{32,110,0}}, +/* 21162 */ {(12<<2)|2,{32,110,0}}, +/* 21163 */ {(12<<2)|2,{32,110,0}}, +/* 21164 */ {(12<<2)|2,{32,110,0}}, +/* 21165 */ {(12<<2)|2,{32,110,0}}, +/* 21166 */ {(12<<2)|2,{32,110,0}}, +/* 21167 */ {(12<<2)|2,{32,110,0}}, +/* 21168 */ {(12<<2)|2,{32,112,0}}, +/* 21169 */ {(12<<2)|2,{32,112,0}}, +/* 21170 */ {(12<<2)|2,{32,112,0}}, +/* 21171 */ {(12<<2)|2,{32,112,0}}, +/* 21172 */ {(12<<2)|2,{32,112,0}}, +/* 21173 */ {(12<<2)|2,{32,112,0}}, +/* 21174 */ {(12<<2)|2,{32,112,0}}, +/* 21175 */ {(12<<2)|2,{32,112,0}}, +/* 21176 */ {(12<<2)|2,{32,112,0}}, +/* 21177 */ {(12<<2)|2,{32,112,0}}, +/* 21178 */ {(12<<2)|2,{32,112,0}}, +/* 21179 */ {(12<<2)|2,{32,112,0}}, +/* 21180 */ {(12<<2)|2,{32,112,0}}, +/* 21181 */ {(12<<2)|2,{32,112,0}}, +/* 21182 */ {(12<<2)|2,{32,112,0}}, +/* 21183 */ {(12<<2)|2,{32,112,0}}, +/* 21184 */ {(12<<2)|2,{32,114,0}}, +/* 21185 */ {(12<<2)|2,{32,114,0}}, +/* 21186 */ {(12<<2)|2,{32,114,0}}, +/* 21187 */ {(12<<2)|2,{32,114,0}}, +/* 21188 */ {(12<<2)|2,{32,114,0}}, +/* 21189 */ {(12<<2)|2,{32,114,0}}, +/* 21190 */ {(12<<2)|2,{32,114,0}}, +/* 21191 */ {(12<<2)|2,{32,114,0}}, +/* 21192 */ {(12<<2)|2,{32,114,0}}, +/* 21193 */ {(12<<2)|2,{32,114,0}}, +/* 21194 */ {(12<<2)|2,{32,114,0}}, +/* 21195 */ {(12<<2)|2,{32,114,0}}, +/* 21196 */ {(12<<2)|2,{32,114,0}}, +/* 21197 */ {(12<<2)|2,{32,114,0}}, +/* 21198 */ {(12<<2)|2,{32,114,0}}, +/* 21199 */ {(12<<2)|2,{32,114,0}}, +/* 21200 */ {(12<<2)|2,{32,117,0}}, +/* 21201 */ {(12<<2)|2,{32,117,0}}, +/* 21202 */ {(12<<2)|2,{32,117,0}}, +/* 21203 */ {(12<<2)|2,{32,117,0}}, +/* 21204 */ {(12<<2)|2,{32,117,0}}, +/* 21205 */ {(12<<2)|2,{32,117,0}}, +/* 21206 */ {(12<<2)|2,{32,117,0}}, +/* 21207 */ {(12<<2)|2,{32,117,0}}, +/* 21208 */ {(12<<2)|2,{32,117,0}}, +/* 21209 */ {(12<<2)|2,{32,117,0}}, +/* 21210 */ {(12<<2)|2,{32,117,0}}, +/* 21211 */ {(12<<2)|2,{32,117,0}}, +/* 21212 */ {(12<<2)|2,{32,117,0}}, +/* 21213 */ {(12<<2)|2,{32,117,0}}, +/* 21214 */ {(12<<2)|2,{32,117,0}}, +/* 21215 */ {(12<<2)|2,{32,117,0}}, +/* 21216 */ {(13<<2)|2,{32,58,0}}, +/* 21217 */ {(13<<2)|2,{32,58,0}}, +/* 21218 */ {(13<<2)|2,{32,58,0}}, +/* 21219 */ {(13<<2)|2,{32,58,0}}, +/* 21220 */ {(13<<2)|2,{32,58,0}}, +/* 21221 */ {(13<<2)|2,{32,58,0}}, +/* 21222 */ {(13<<2)|2,{32,58,0}}, +/* 21223 */ {(13<<2)|2,{32,58,0}}, +/* 21224 */ {(13<<2)|2,{32,66,0}}, +/* 21225 */ {(13<<2)|2,{32,66,0}}, +/* 21226 */ {(13<<2)|2,{32,66,0}}, +/* 21227 */ {(13<<2)|2,{32,66,0}}, +/* 21228 */ {(13<<2)|2,{32,66,0}}, +/* 21229 */ {(13<<2)|2,{32,66,0}}, +/* 21230 */ {(13<<2)|2,{32,66,0}}, +/* 21231 */ {(13<<2)|2,{32,66,0}}, +/* 21232 */ {(13<<2)|2,{32,67,0}}, +/* 21233 */ {(13<<2)|2,{32,67,0}}, +/* 21234 */ {(13<<2)|2,{32,67,0}}, +/* 21235 */ {(13<<2)|2,{32,67,0}}, +/* 21236 */ {(13<<2)|2,{32,67,0}}, +/* 21237 */ {(13<<2)|2,{32,67,0}}, +/* 21238 */ {(13<<2)|2,{32,67,0}}, +/* 21239 */ {(13<<2)|2,{32,67,0}}, +/* 21240 */ {(13<<2)|2,{32,68,0}}, +/* 21241 */ {(13<<2)|2,{32,68,0}}, +/* 21242 */ {(13<<2)|2,{32,68,0}}, +/* 21243 */ {(13<<2)|2,{32,68,0}}, +/* 21244 */ {(13<<2)|2,{32,68,0}}, +/* 21245 */ {(13<<2)|2,{32,68,0}}, +/* 21246 */ {(13<<2)|2,{32,68,0}}, +/* 21247 */ {(13<<2)|2,{32,68,0}}, +/* 21248 */ {(13<<2)|2,{32,69,0}}, +/* 21249 */ {(13<<2)|2,{32,69,0}}, +/* 21250 */ {(13<<2)|2,{32,69,0}}, +/* 21251 */ {(13<<2)|2,{32,69,0}}, +/* 21252 */ {(13<<2)|2,{32,69,0}}, +/* 21253 */ {(13<<2)|2,{32,69,0}}, +/* 21254 */ {(13<<2)|2,{32,69,0}}, +/* 21255 */ {(13<<2)|2,{32,69,0}}, +/* 21256 */ {(13<<2)|2,{32,70,0}}, +/* 21257 */ {(13<<2)|2,{32,70,0}}, +/* 21258 */ {(13<<2)|2,{32,70,0}}, +/* 21259 */ {(13<<2)|2,{32,70,0}}, +/* 21260 */ {(13<<2)|2,{32,70,0}}, +/* 21261 */ {(13<<2)|2,{32,70,0}}, +/* 21262 */ {(13<<2)|2,{32,70,0}}, +/* 21263 */ {(13<<2)|2,{32,70,0}}, +/* 21264 */ {(13<<2)|2,{32,71,0}}, +/* 21265 */ {(13<<2)|2,{32,71,0}}, +/* 21266 */ {(13<<2)|2,{32,71,0}}, +/* 21267 */ {(13<<2)|2,{32,71,0}}, +/* 21268 */ {(13<<2)|2,{32,71,0}}, +/* 21269 */ {(13<<2)|2,{32,71,0}}, +/* 21270 */ {(13<<2)|2,{32,71,0}}, +/* 21271 */ {(13<<2)|2,{32,71,0}}, +/* 21272 */ {(13<<2)|2,{32,72,0}}, +/* 21273 */ {(13<<2)|2,{32,72,0}}, +/* 21274 */ {(13<<2)|2,{32,72,0}}, +/* 21275 */ {(13<<2)|2,{32,72,0}}, +/* 21276 */ {(13<<2)|2,{32,72,0}}, +/* 21277 */ {(13<<2)|2,{32,72,0}}, +/* 21278 */ {(13<<2)|2,{32,72,0}}, +/* 21279 */ {(13<<2)|2,{32,72,0}}, +/* 21280 */ {(13<<2)|2,{32,73,0}}, +/* 21281 */ {(13<<2)|2,{32,73,0}}, +/* 21282 */ {(13<<2)|2,{32,73,0}}, +/* 21283 */ {(13<<2)|2,{32,73,0}}, +/* 21284 */ {(13<<2)|2,{32,73,0}}, +/* 21285 */ {(13<<2)|2,{32,73,0}}, +/* 21286 */ {(13<<2)|2,{32,73,0}}, +/* 21287 */ {(13<<2)|2,{32,73,0}}, +/* 21288 */ {(13<<2)|2,{32,74,0}}, +/* 21289 */ {(13<<2)|2,{32,74,0}}, +/* 21290 */ {(13<<2)|2,{32,74,0}}, +/* 21291 */ {(13<<2)|2,{32,74,0}}, +/* 21292 */ {(13<<2)|2,{32,74,0}}, +/* 21293 */ {(13<<2)|2,{32,74,0}}, +/* 21294 */ {(13<<2)|2,{32,74,0}}, +/* 21295 */ {(13<<2)|2,{32,74,0}}, +/* 21296 */ {(13<<2)|2,{32,75,0}}, +/* 21297 */ {(13<<2)|2,{32,75,0}}, +/* 21298 */ {(13<<2)|2,{32,75,0}}, +/* 21299 */ {(13<<2)|2,{32,75,0}}, +/* 21300 */ {(13<<2)|2,{32,75,0}}, +/* 21301 */ {(13<<2)|2,{32,75,0}}, +/* 21302 */ {(13<<2)|2,{32,75,0}}, +/* 21303 */ {(13<<2)|2,{32,75,0}}, +/* 21304 */ {(13<<2)|2,{32,76,0}}, +/* 21305 */ {(13<<2)|2,{32,76,0}}, +/* 21306 */ {(13<<2)|2,{32,76,0}}, +/* 21307 */ {(13<<2)|2,{32,76,0}}, +/* 21308 */ {(13<<2)|2,{32,76,0}}, +/* 21309 */ {(13<<2)|2,{32,76,0}}, +/* 21310 */ {(13<<2)|2,{32,76,0}}, +/* 21311 */ {(13<<2)|2,{32,76,0}}, +/* 21312 */ {(13<<2)|2,{32,77,0}}, +/* 21313 */ {(13<<2)|2,{32,77,0}}, +/* 21314 */ {(13<<2)|2,{32,77,0}}, +/* 21315 */ {(13<<2)|2,{32,77,0}}, +/* 21316 */ {(13<<2)|2,{32,77,0}}, +/* 21317 */ {(13<<2)|2,{32,77,0}}, +/* 21318 */ {(13<<2)|2,{32,77,0}}, +/* 21319 */ {(13<<2)|2,{32,77,0}}, +/* 21320 */ {(13<<2)|2,{32,78,0}}, +/* 21321 */ {(13<<2)|2,{32,78,0}}, +/* 21322 */ {(13<<2)|2,{32,78,0}}, +/* 21323 */ {(13<<2)|2,{32,78,0}}, +/* 21324 */ {(13<<2)|2,{32,78,0}}, +/* 21325 */ {(13<<2)|2,{32,78,0}}, +/* 21326 */ {(13<<2)|2,{32,78,0}}, +/* 21327 */ {(13<<2)|2,{32,78,0}}, +/* 21328 */ {(13<<2)|2,{32,79,0}}, +/* 21329 */ {(13<<2)|2,{32,79,0}}, +/* 21330 */ {(13<<2)|2,{32,79,0}}, +/* 21331 */ {(13<<2)|2,{32,79,0}}, +/* 21332 */ {(13<<2)|2,{32,79,0}}, +/* 21333 */ {(13<<2)|2,{32,79,0}}, +/* 21334 */ {(13<<2)|2,{32,79,0}}, +/* 21335 */ {(13<<2)|2,{32,79,0}}, +/* 21336 */ {(13<<2)|2,{32,80,0}}, +/* 21337 */ {(13<<2)|2,{32,80,0}}, +/* 21338 */ {(13<<2)|2,{32,80,0}}, +/* 21339 */ {(13<<2)|2,{32,80,0}}, +/* 21340 */ {(13<<2)|2,{32,80,0}}, +/* 21341 */ {(13<<2)|2,{32,80,0}}, +/* 21342 */ {(13<<2)|2,{32,80,0}}, +/* 21343 */ {(13<<2)|2,{32,80,0}}, +/* 21344 */ {(13<<2)|2,{32,81,0}}, +/* 21345 */ {(13<<2)|2,{32,81,0}}, +/* 21346 */ {(13<<2)|2,{32,81,0}}, +/* 21347 */ {(13<<2)|2,{32,81,0}}, +/* 21348 */ {(13<<2)|2,{32,81,0}}, +/* 21349 */ {(13<<2)|2,{32,81,0}}, +/* 21350 */ {(13<<2)|2,{32,81,0}}, +/* 21351 */ {(13<<2)|2,{32,81,0}}, +/* 21352 */ {(13<<2)|2,{32,82,0}}, +/* 21353 */ {(13<<2)|2,{32,82,0}}, +/* 21354 */ {(13<<2)|2,{32,82,0}}, +/* 21355 */ {(13<<2)|2,{32,82,0}}, +/* 21356 */ {(13<<2)|2,{32,82,0}}, +/* 21357 */ {(13<<2)|2,{32,82,0}}, +/* 21358 */ {(13<<2)|2,{32,82,0}}, +/* 21359 */ {(13<<2)|2,{32,82,0}}, +/* 21360 */ {(13<<2)|2,{32,83,0}}, +/* 21361 */ {(13<<2)|2,{32,83,0}}, +/* 21362 */ {(13<<2)|2,{32,83,0}}, +/* 21363 */ {(13<<2)|2,{32,83,0}}, +/* 21364 */ {(13<<2)|2,{32,83,0}}, +/* 21365 */ {(13<<2)|2,{32,83,0}}, +/* 21366 */ {(13<<2)|2,{32,83,0}}, +/* 21367 */ {(13<<2)|2,{32,83,0}}, +/* 21368 */ {(13<<2)|2,{32,84,0}}, +/* 21369 */ {(13<<2)|2,{32,84,0}}, +/* 21370 */ {(13<<2)|2,{32,84,0}}, +/* 21371 */ {(13<<2)|2,{32,84,0}}, +/* 21372 */ {(13<<2)|2,{32,84,0}}, +/* 21373 */ {(13<<2)|2,{32,84,0}}, +/* 21374 */ {(13<<2)|2,{32,84,0}}, +/* 21375 */ {(13<<2)|2,{32,84,0}}, +/* 21376 */ {(13<<2)|2,{32,85,0}}, +/* 21377 */ {(13<<2)|2,{32,85,0}}, +/* 21378 */ {(13<<2)|2,{32,85,0}}, +/* 21379 */ {(13<<2)|2,{32,85,0}}, +/* 21380 */ {(13<<2)|2,{32,85,0}}, +/* 21381 */ {(13<<2)|2,{32,85,0}}, +/* 21382 */ {(13<<2)|2,{32,85,0}}, +/* 21383 */ {(13<<2)|2,{32,85,0}}, +/* 21384 */ {(13<<2)|2,{32,86,0}}, +/* 21385 */ {(13<<2)|2,{32,86,0}}, +/* 21386 */ {(13<<2)|2,{32,86,0}}, +/* 21387 */ {(13<<2)|2,{32,86,0}}, +/* 21388 */ {(13<<2)|2,{32,86,0}}, +/* 21389 */ {(13<<2)|2,{32,86,0}}, +/* 21390 */ {(13<<2)|2,{32,86,0}}, +/* 21391 */ {(13<<2)|2,{32,86,0}}, +/* 21392 */ {(13<<2)|2,{32,87,0}}, +/* 21393 */ {(13<<2)|2,{32,87,0}}, +/* 21394 */ {(13<<2)|2,{32,87,0}}, +/* 21395 */ {(13<<2)|2,{32,87,0}}, +/* 21396 */ {(13<<2)|2,{32,87,0}}, +/* 21397 */ {(13<<2)|2,{32,87,0}}, +/* 21398 */ {(13<<2)|2,{32,87,0}}, +/* 21399 */ {(13<<2)|2,{32,87,0}}, +/* 21400 */ {(13<<2)|2,{32,89,0}}, +/* 21401 */ {(13<<2)|2,{32,89,0}}, +/* 21402 */ {(13<<2)|2,{32,89,0}}, +/* 21403 */ {(13<<2)|2,{32,89,0}}, +/* 21404 */ {(13<<2)|2,{32,89,0}}, +/* 21405 */ {(13<<2)|2,{32,89,0}}, +/* 21406 */ {(13<<2)|2,{32,89,0}}, +/* 21407 */ {(13<<2)|2,{32,89,0}}, +/* 21408 */ {(13<<2)|2,{32,106,0}}, +/* 21409 */ {(13<<2)|2,{32,106,0}}, +/* 21410 */ {(13<<2)|2,{32,106,0}}, +/* 21411 */ {(13<<2)|2,{32,106,0}}, +/* 21412 */ {(13<<2)|2,{32,106,0}}, +/* 21413 */ {(13<<2)|2,{32,106,0}}, +/* 21414 */ {(13<<2)|2,{32,106,0}}, +/* 21415 */ {(13<<2)|2,{32,106,0}}, +/* 21416 */ {(13<<2)|2,{32,107,0}}, +/* 21417 */ {(13<<2)|2,{32,107,0}}, +/* 21418 */ {(13<<2)|2,{32,107,0}}, +/* 21419 */ {(13<<2)|2,{32,107,0}}, +/* 21420 */ {(13<<2)|2,{32,107,0}}, +/* 21421 */ {(13<<2)|2,{32,107,0}}, +/* 21422 */ {(13<<2)|2,{32,107,0}}, +/* 21423 */ {(13<<2)|2,{32,107,0}}, +/* 21424 */ {(13<<2)|2,{32,113,0}}, +/* 21425 */ {(13<<2)|2,{32,113,0}}, +/* 21426 */ {(13<<2)|2,{32,113,0}}, +/* 21427 */ {(13<<2)|2,{32,113,0}}, +/* 21428 */ {(13<<2)|2,{32,113,0}}, +/* 21429 */ {(13<<2)|2,{32,113,0}}, +/* 21430 */ {(13<<2)|2,{32,113,0}}, +/* 21431 */ {(13<<2)|2,{32,113,0}}, +/* 21432 */ {(13<<2)|2,{32,118,0}}, +/* 21433 */ {(13<<2)|2,{32,118,0}}, +/* 21434 */ {(13<<2)|2,{32,118,0}}, +/* 21435 */ {(13<<2)|2,{32,118,0}}, +/* 21436 */ {(13<<2)|2,{32,118,0}}, +/* 21437 */ {(13<<2)|2,{32,118,0}}, +/* 21438 */ {(13<<2)|2,{32,118,0}}, +/* 21439 */ {(13<<2)|2,{32,118,0}}, +/* 21440 */ {(13<<2)|2,{32,119,0}}, +/* 21441 */ {(13<<2)|2,{32,119,0}}, +/* 21442 */ {(13<<2)|2,{32,119,0}}, +/* 21443 */ {(13<<2)|2,{32,119,0}}, +/* 21444 */ {(13<<2)|2,{32,119,0}}, +/* 21445 */ {(13<<2)|2,{32,119,0}}, +/* 21446 */ {(13<<2)|2,{32,119,0}}, +/* 21447 */ {(13<<2)|2,{32,119,0}}, +/* 21448 */ {(13<<2)|2,{32,120,0}}, +/* 21449 */ {(13<<2)|2,{32,120,0}}, +/* 21450 */ {(13<<2)|2,{32,120,0}}, +/* 21451 */ {(13<<2)|2,{32,120,0}}, +/* 21452 */ {(13<<2)|2,{32,120,0}}, +/* 21453 */ {(13<<2)|2,{32,120,0}}, +/* 21454 */ {(13<<2)|2,{32,120,0}}, +/* 21455 */ {(13<<2)|2,{32,120,0}}, +/* 21456 */ {(13<<2)|2,{32,121,0}}, +/* 21457 */ {(13<<2)|2,{32,121,0}}, +/* 21458 */ {(13<<2)|2,{32,121,0}}, +/* 21459 */ {(13<<2)|2,{32,121,0}}, +/* 21460 */ {(13<<2)|2,{32,121,0}}, +/* 21461 */ {(13<<2)|2,{32,121,0}}, +/* 21462 */ {(13<<2)|2,{32,121,0}}, +/* 21463 */ {(13<<2)|2,{32,121,0}}, +/* 21464 */ {(13<<2)|2,{32,122,0}}, +/* 21465 */ {(13<<2)|2,{32,122,0}}, +/* 21466 */ {(13<<2)|2,{32,122,0}}, +/* 21467 */ {(13<<2)|2,{32,122,0}}, +/* 21468 */ {(13<<2)|2,{32,122,0}}, +/* 21469 */ {(13<<2)|2,{32,122,0}}, +/* 21470 */ {(13<<2)|2,{32,122,0}}, +/* 21471 */ {(13<<2)|2,{32,122,0}}, +/* 21472 */ {(14<<2)|2,{32,38,0}}, +/* 21473 */ {(14<<2)|2,{32,38,0}}, +/* 21474 */ {(14<<2)|2,{32,38,0}}, +/* 21475 */ {(14<<2)|2,{32,38,0}}, +/* 21476 */ {(14<<2)|2,{32,42,0}}, +/* 21477 */ {(14<<2)|2,{32,42,0}}, +/* 21478 */ {(14<<2)|2,{32,42,0}}, +/* 21479 */ {(14<<2)|2,{32,42,0}}, +/* 21480 */ {(14<<2)|2,{32,44,0}}, +/* 21481 */ {(14<<2)|2,{32,44,0}}, +/* 21482 */ {(14<<2)|2,{32,44,0}}, +/* 21483 */ {(14<<2)|2,{32,44,0}}, +/* 21484 */ {(14<<2)|2,{32,59,0}}, +/* 21485 */ {(14<<2)|2,{32,59,0}}, +/* 21486 */ {(14<<2)|2,{32,59,0}}, +/* 21487 */ {(14<<2)|2,{32,59,0}}, +/* 21488 */ {(14<<2)|2,{32,88,0}}, +/* 21489 */ {(14<<2)|2,{32,88,0}}, +/* 21490 */ {(14<<2)|2,{32,88,0}}, +/* 21491 */ {(14<<2)|2,{32,88,0}}, +/* 21492 */ {(14<<2)|2,{32,90,0}}, +/* 21493 */ {(14<<2)|2,{32,90,0}}, +/* 21494 */ {(14<<2)|2,{32,90,0}}, +/* 21495 */ {(14<<2)|2,{32,90,0}}, +/* 21496 */ {(16<<2)|2,{32,33,0}}, +/* 21497 */ {(16<<2)|2,{32,34,0}}, +/* 21498 */ {(16<<2)|2,{32,40,0}}, +/* 21499 */ {(16<<2)|2,{32,41,0}}, +/* 21500 */ {(16<<2)|2,{32,63,0}}, +/* 21501 */ {(6<<2)|1,{32,0,0}}, +/* 21502 */ {(6<<2)|1,{32,0,0}}, +/* 21503 */ {(6<<2)|1,{32,0,0}}, +/* 21504 */ {(16<<2)|3,{37,48,48}}, +/* 21505 */ {(16<<2)|3,{37,48,49}}, +/* 21506 */ {(16<<2)|3,{37,48,50}}, +/* 21507 */ {(16<<2)|3,{37,48,97}}, +/* 21508 */ {(16<<2)|3,{37,48,99}}, +/* 21509 */ {(16<<2)|3,{37,48,101}}, +/* 21510 */ {(16<<2)|3,{37,48,105}}, +/* 21511 */ {(16<<2)|3,{37,48,111}}, +/* 21512 */ {(16<<2)|3,{37,48,115}}, +/* 21513 */ {(16<<2)|3,{37,48,116}}, +/* 21514 */ {(11<<2)|2,{37,48,0}}, +/* 21515 */ {(11<<2)|2,{37,48,0}}, +/* 21516 */ {(11<<2)|2,{37,48,0}}, +/* 21517 */ {(11<<2)|2,{37,48,0}}, +/* 21518 */ {(11<<2)|2,{37,48,0}}, +/* 21519 */ {(11<<2)|2,{37,48,0}}, +/* 21520 */ {(11<<2)|2,{37,48,0}}, +/* 21521 */ {(11<<2)|2,{37,48,0}}, +/* 21522 */ {(11<<2)|2,{37,48,0}}, +/* 21523 */ {(11<<2)|2,{37,48,0}}, +/* 21524 */ {(11<<2)|2,{37,48,0}}, +/* 21525 */ {(11<<2)|2,{37,48,0}}, +/* 21526 */ {(11<<2)|2,{37,48,0}}, +/* 21527 */ {(11<<2)|2,{37,48,0}}, +/* 21528 */ {(11<<2)|2,{37,48,0}}, +/* 21529 */ {(11<<2)|2,{37,48,0}}, +/* 21530 */ {(11<<2)|2,{37,48,0}}, +/* 21531 */ {(11<<2)|2,{37,48,0}}, +/* 21532 */ {(11<<2)|2,{37,48,0}}, +/* 21533 */ {(11<<2)|2,{37,48,0}}, +/* 21534 */ {(11<<2)|2,{37,48,0}}, +/* 21535 */ {(11<<2)|2,{37,48,0}}, +/* 21536 */ {(16<<2)|3,{37,49,48}}, +/* 21537 */ {(16<<2)|3,{37,49,49}}, +/* 21538 */ {(16<<2)|3,{37,49,50}}, +/* 21539 */ {(16<<2)|3,{37,49,97}}, +/* 21540 */ {(16<<2)|3,{37,49,99}}, +/* 21541 */ {(16<<2)|3,{37,49,101}}, +/* 21542 */ {(16<<2)|3,{37,49,105}}, +/* 21543 */ {(16<<2)|3,{37,49,111}}, +/* 21544 */ {(16<<2)|3,{37,49,115}}, +/* 21545 */ {(16<<2)|3,{37,49,116}}, +/* 21546 */ {(11<<2)|2,{37,49,0}}, +/* 21547 */ {(11<<2)|2,{37,49,0}}, +/* 21548 */ {(11<<2)|2,{37,49,0}}, +/* 21549 */ {(11<<2)|2,{37,49,0}}, +/* 21550 */ {(11<<2)|2,{37,49,0}}, +/* 21551 */ {(11<<2)|2,{37,49,0}}, +/* 21552 */ {(11<<2)|2,{37,49,0}}, +/* 21553 */ {(11<<2)|2,{37,49,0}}, +/* 21554 */ {(11<<2)|2,{37,49,0}}, +/* 21555 */ {(11<<2)|2,{37,49,0}}, +/* 21556 */ {(11<<2)|2,{37,49,0}}, +/* 21557 */ {(11<<2)|2,{37,49,0}}, +/* 21558 */ {(11<<2)|2,{37,49,0}}, +/* 21559 */ {(11<<2)|2,{37,49,0}}, +/* 21560 */ {(11<<2)|2,{37,49,0}}, +/* 21561 */ {(11<<2)|2,{37,49,0}}, +/* 21562 */ {(11<<2)|2,{37,49,0}}, +/* 21563 */ {(11<<2)|2,{37,49,0}}, +/* 21564 */ {(11<<2)|2,{37,49,0}}, +/* 21565 */ {(11<<2)|2,{37,49,0}}, +/* 21566 */ {(11<<2)|2,{37,49,0}}, +/* 21567 */ {(11<<2)|2,{37,49,0}}, +/* 21568 */ {(16<<2)|3,{37,50,48}}, +/* 21569 */ {(16<<2)|3,{37,50,49}}, +/* 21570 */ {(16<<2)|3,{37,50,50}}, +/* 21571 */ {(16<<2)|3,{37,50,97}}, +/* 21572 */ {(16<<2)|3,{37,50,99}}, +/* 21573 */ {(16<<2)|3,{37,50,101}}, +/* 21574 */ {(16<<2)|3,{37,50,105}}, +/* 21575 */ {(16<<2)|3,{37,50,111}}, +/* 21576 */ {(16<<2)|3,{37,50,115}}, +/* 21577 */ {(16<<2)|3,{37,50,116}}, +/* 21578 */ {(11<<2)|2,{37,50,0}}, +/* 21579 */ {(11<<2)|2,{37,50,0}}, +/* 21580 */ {(11<<2)|2,{37,50,0}}, +/* 21581 */ {(11<<2)|2,{37,50,0}}, +/* 21582 */ {(11<<2)|2,{37,50,0}}, +/* 21583 */ {(11<<2)|2,{37,50,0}}, +/* 21584 */ {(11<<2)|2,{37,50,0}}, +/* 21585 */ {(11<<2)|2,{37,50,0}}, +/* 21586 */ {(11<<2)|2,{37,50,0}}, +/* 21587 */ {(11<<2)|2,{37,50,0}}, +/* 21588 */ {(11<<2)|2,{37,50,0}}, +/* 21589 */ {(11<<2)|2,{37,50,0}}, +/* 21590 */ {(11<<2)|2,{37,50,0}}, +/* 21591 */ {(11<<2)|2,{37,50,0}}, +/* 21592 */ {(11<<2)|2,{37,50,0}}, +/* 21593 */ {(11<<2)|2,{37,50,0}}, +/* 21594 */ {(11<<2)|2,{37,50,0}}, +/* 21595 */ {(11<<2)|2,{37,50,0}}, +/* 21596 */ {(11<<2)|2,{37,50,0}}, +/* 21597 */ {(11<<2)|2,{37,50,0}}, +/* 21598 */ {(11<<2)|2,{37,50,0}}, +/* 21599 */ {(11<<2)|2,{37,50,0}}, +/* 21600 */ {(16<<2)|3,{37,97,48}}, +/* 21601 */ {(16<<2)|3,{37,97,49}}, +/* 21602 */ {(16<<2)|3,{37,97,50}}, +/* 21603 */ {(16<<2)|3,{37,97,97}}, +/* 21604 */ {(16<<2)|3,{37,97,99}}, +/* 21605 */ {(16<<2)|3,{37,97,101}}, +/* 21606 */ {(16<<2)|3,{37,97,105}}, +/* 21607 */ {(16<<2)|3,{37,97,111}}, +/* 21608 */ {(16<<2)|3,{37,97,115}}, +/* 21609 */ {(16<<2)|3,{37,97,116}}, +/* 21610 */ {(11<<2)|2,{37,97,0}}, +/* 21611 */ {(11<<2)|2,{37,97,0}}, +/* 21612 */ {(11<<2)|2,{37,97,0}}, +/* 21613 */ {(11<<2)|2,{37,97,0}}, +/* 21614 */ {(11<<2)|2,{37,97,0}}, +/* 21615 */ {(11<<2)|2,{37,97,0}}, +/* 21616 */ {(11<<2)|2,{37,97,0}}, +/* 21617 */ {(11<<2)|2,{37,97,0}}, +/* 21618 */ {(11<<2)|2,{37,97,0}}, +/* 21619 */ {(11<<2)|2,{37,97,0}}, +/* 21620 */ {(11<<2)|2,{37,97,0}}, +/* 21621 */ {(11<<2)|2,{37,97,0}}, +/* 21622 */ {(11<<2)|2,{37,97,0}}, +/* 21623 */ {(11<<2)|2,{37,97,0}}, +/* 21624 */ {(11<<2)|2,{37,97,0}}, +/* 21625 */ {(11<<2)|2,{37,97,0}}, +/* 21626 */ {(11<<2)|2,{37,97,0}}, +/* 21627 */ {(11<<2)|2,{37,97,0}}, +/* 21628 */ {(11<<2)|2,{37,97,0}}, +/* 21629 */ {(11<<2)|2,{37,97,0}}, +/* 21630 */ {(11<<2)|2,{37,97,0}}, +/* 21631 */ {(11<<2)|2,{37,97,0}}, +/* 21632 */ {(16<<2)|3,{37,99,48}}, +/* 21633 */ {(16<<2)|3,{37,99,49}}, +/* 21634 */ {(16<<2)|3,{37,99,50}}, +/* 21635 */ {(16<<2)|3,{37,99,97}}, +/* 21636 */ {(16<<2)|3,{37,99,99}}, +/* 21637 */ {(16<<2)|3,{37,99,101}}, +/* 21638 */ {(16<<2)|3,{37,99,105}}, +/* 21639 */ {(16<<2)|3,{37,99,111}}, +/* 21640 */ {(16<<2)|3,{37,99,115}}, +/* 21641 */ {(16<<2)|3,{37,99,116}}, +/* 21642 */ {(11<<2)|2,{37,99,0}}, +/* 21643 */ {(11<<2)|2,{37,99,0}}, +/* 21644 */ {(11<<2)|2,{37,99,0}}, +/* 21645 */ {(11<<2)|2,{37,99,0}}, +/* 21646 */ {(11<<2)|2,{37,99,0}}, +/* 21647 */ {(11<<2)|2,{37,99,0}}, +/* 21648 */ {(11<<2)|2,{37,99,0}}, +/* 21649 */ {(11<<2)|2,{37,99,0}}, +/* 21650 */ {(11<<2)|2,{37,99,0}}, +/* 21651 */ {(11<<2)|2,{37,99,0}}, +/* 21652 */ {(11<<2)|2,{37,99,0}}, +/* 21653 */ {(11<<2)|2,{37,99,0}}, +/* 21654 */ {(11<<2)|2,{37,99,0}}, +/* 21655 */ {(11<<2)|2,{37,99,0}}, +/* 21656 */ {(11<<2)|2,{37,99,0}}, +/* 21657 */ {(11<<2)|2,{37,99,0}}, +/* 21658 */ {(11<<2)|2,{37,99,0}}, +/* 21659 */ {(11<<2)|2,{37,99,0}}, +/* 21660 */ {(11<<2)|2,{37,99,0}}, +/* 21661 */ {(11<<2)|2,{37,99,0}}, +/* 21662 */ {(11<<2)|2,{37,99,0}}, +/* 21663 */ {(11<<2)|2,{37,99,0}}, +/* 21664 */ {(16<<2)|3,{37,101,48}}, +/* 21665 */ {(16<<2)|3,{37,101,49}}, +/* 21666 */ {(16<<2)|3,{37,101,50}}, +/* 21667 */ {(16<<2)|3,{37,101,97}}, +/* 21668 */ {(16<<2)|3,{37,101,99}}, +/* 21669 */ {(16<<2)|3,{37,101,101}}, +/* 21670 */ {(16<<2)|3,{37,101,105}}, +/* 21671 */ {(16<<2)|3,{37,101,111}}, +/* 21672 */ {(16<<2)|3,{37,101,115}}, +/* 21673 */ {(16<<2)|3,{37,101,116}}, +/* 21674 */ {(11<<2)|2,{37,101,0}}, +/* 21675 */ {(11<<2)|2,{37,101,0}}, +/* 21676 */ {(11<<2)|2,{37,101,0}}, +/* 21677 */ {(11<<2)|2,{37,101,0}}, +/* 21678 */ {(11<<2)|2,{37,101,0}}, +/* 21679 */ {(11<<2)|2,{37,101,0}}, +/* 21680 */ {(11<<2)|2,{37,101,0}}, +/* 21681 */ {(11<<2)|2,{37,101,0}}, +/* 21682 */ {(11<<2)|2,{37,101,0}}, +/* 21683 */ {(11<<2)|2,{37,101,0}}, +/* 21684 */ {(11<<2)|2,{37,101,0}}, +/* 21685 */ {(11<<2)|2,{37,101,0}}, +/* 21686 */ {(11<<2)|2,{37,101,0}}, +/* 21687 */ {(11<<2)|2,{37,101,0}}, +/* 21688 */ {(11<<2)|2,{37,101,0}}, +/* 21689 */ {(11<<2)|2,{37,101,0}}, +/* 21690 */ {(11<<2)|2,{37,101,0}}, +/* 21691 */ {(11<<2)|2,{37,101,0}}, +/* 21692 */ {(11<<2)|2,{37,101,0}}, +/* 21693 */ {(11<<2)|2,{37,101,0}}, +/* 21694 */ {(11<<2)|2,{37,101,0}}, +/* 21695 */ {(11<<2)|2,{37,101,0}}, +/* 21696 */ {(16<<2)|3,{37,105,48}}, +/* 21697 */ {(16<<2)|3,{37,105,49}}, +/* 21698 */ {(16<<2)|3,{37,105,50}}, +/* 21699 */ {(16<<2)|3,{37,105,97}}, +/* 21700 */ {(16<<2)|3,{37,105,99}}, +/* 21701 */ {(16<<2)|3,{37,105,101}}, +/* 21702 */ {(16<<2)|3,{37,105,105}}, +/* 21703 */ {(16<<2)|3,{37,105,111}}, +/* 21704 */ {(16<<2)|3,{37,105,115}}, +/* 21705 */ {(16<<2)|3,{37,105,116}}, +/* 21706 */ {(11<<2)|2,{37,105,0}}, +/* 21707 */ {(11<<2)|2,{37,105,0}}, +/* 21708 */ {(11<<2)|2,{37,105,0}}, +/* 21709 */ {(11<<2)|2,{37,105,0}}, +/* 21710 */ {(11<<2)|2,{37,105,0}}, +/* 21711 */ {(11<<2)|2,{37,105,0}}, +/* 21712 */ {(11<<2)|2,{37,105,0}}, +/* 21713 */ {(11<<2)|2,{37,105,0}}, +/* 21714 */ {(11<<2)|2,{37,105,0}}, +/* 21715 */ {(11<<2)|2,{37,105,0}}, +/* 21716 */ {(11<<2)|2,{37,105,0}}, +/* 21717 */ {(11<<2)|2,{37,105,0}}, +/* 21718 */ {(11<<2)|2,{37,105,0}}, +/* 21719 */ {(11<<2)|2,{37,105,0}}, +/* 21720 */ {(11<<2)|2,{37,105,0}}, +/* 21721 */ {(11<<2)|2,{37,105,0}}, +/* 21722 */ {(11<<2)|2,{37,105,0}}, +/* 21723 */ {(11<<2)|2,{37,105,0}}, +/* 21724 */ {(11<<2)|2,{37,105,0}}, +/* 21725 */ {(11<<2)|2,{37,105,0}}, +/* 21726 */ {(11<<2)|2,{37,105,0}}, +/* 21727 */ {(11<<2)|2,{37,105,0}}, +/* 21728 */ {(16<<2)|3,{37,111,48}}, +/* 21729 */ {(16<<2)|3,{37,111,49}}, +/* 21730 */ {(16<<2)|3,{37,111,50}}, +/* 21731 */ {(16<<2)|3,{37,111,97}}, +/* 21732 */ {(16<<2)|3,{37,111,99}}, +/* 21733 */ {(16<<2)|3,{37,111,101}}, +/* 21734 */ {(16<<2)|3,{37,111,105}}, +/* 21735 */ {(16<<2)|3,{37,111,111}}, +/* 21736 */ {(16<<2)|3,{37,111,115}}, +/* 21737 */ {(16<<2)|3,{37,111,116}}, +/* 21738 */ {(11<<2)|2,{37,111,0}}, +/* 21739 */ {(11<<2)|2,{37,111,0}}, +/* 21740 */ {(11<<2)|2,{37,111,0}}, +/* 21741 */ {(11<<2)|2,{37,111,0}}, +/* 21742 */ {(11<<2)|2,{37,111,0}}, +/* 21743 */ {(11<<2)|2,{37,111,0}}, +/* 21744 */ {(11<<2)|2,{37,111,0}}, +/* 21745 */ {(11<<2)|2,{37,111,0}}, +/* 21746 */ {(11<<2)|2,{37,111,0}}, +/* 21747 */ {(11<<2)|2,{37,111,0}}, +/* 21748 */ {(11<<2)|2,{37,111,0}}, +/* 21749 */ {(11<<2)|2,{37,111,0}}, +/* 21750 */ {(11<<2)|2,{37,111,0}}, +/* 21751 */ {(11<<2)|2,{37,111,0}}, +/* 21752 */ {(11<<2)|2,{37,111,0}}, +/* 21753 */ {(11<<2)|2,{37,111,0}}, +/* 21754 */ {(11<<2)|2,{37,111,0}}, +/* 21755 */ {(11<<2)|2,{37,111,0}}, +/* 21756 */ {(11<<2)|2,{37,111,0}}, +/* 21757 */ {(11<<2)|2,{37,111,0}}, +/* 21758 */ {(11<<2)|2,{37,111,0}}, +/* 21759 */ {(11<<2)|2,{37,111,0}}, +/* 21760 */ {(16<<2)|3,{37,115,48}}, +/* 21761 */ {(16<<2)|3,{37,115,49}}, +/* 21762 */ {(16<<2)|3,{37,115,50}}, +/* 21763 */ {(16<<2)|3,{37,115,97}}, +/* 21764 */ {(16<<2)|3,{37,115,99}}, +/* 21765 */ {(16<<2)|3,{37,115,101}}, +/* 21766 */ {(16<<2)|3,{37,115,105}}, +/* 21767 */ {(16<<2)|3,{37,115,111}}, +/* 21768 */ {(16<<2)|3,{37,115,115}}, +/* 21769 */ {(16<<2)|3,{37,115,116}}, +/* 21770 */ {(11<<2)|2,{37,115,0}}, +/* 21771 */ {(11<<2)|2,{37,115,0}}, +/* 21772 */ {(11<<2)|2,{37,115,0}}, +/* 21773 */ {(11<<2)|2,{37,115,0}}, +/* 21774 */ {(11<<2)|2,{37,115,0}}, +/* 21775 */ {(11<<2)|2,{37,115,0}}, +/* 21776 */ {(11<<2)|2,{37,115,0}}, +/* 21777 */ {(11<<2)|2,{37,115,0}}, +/* 21778 */ {(11<<2)|2,{37,115,0}}, +/* 21779 */ {(11<<2)|2,{37,115,0}}, +/* 21780 */ {(11<<2)|2,{37,115,0}}, +/* 21781 */ {(11<<2)|2,{37,115,0}}, +/* 21782 */ {(11<<2)|2,{37,115,0}}, +/* 21783 */ {(11<<2)|2,{37,115,0}}, +/* 21784 */ {(11<<2)|2,{37,115,0}}, +/* 21785 */ {(11<<2)|2,{37,115,0}}, +/* 21786 */ {(11<<2)|2,{37,115,0}}, +/* 21787 */ {(11<<2)|2,{37,115,0}}, +/* 21788 */ {(11<<2)|2,{37,115,0}}, +/* 21789 */ {(11<<2)|2,{37,115,0}}, +/* 21790 */ {(11<<2)|2,{37,115,0}}, +/* 21791 */ {(11<<2)|2,{37,115,0}}, +/* 21792 */ {(16<<2)|3,{37,116,48}}, +/* 21793 */ {(16<<2)|3,{37,116,49}}, +/* 21794 */ {(16<<2)|3,{37,116,50}}, +/* 21795 */ {(16<<2)|3,{37,116,97}}, +/* 21796 */ {(16<<2)|3,{37,116,99}}, +/* 21797 */ {(16<<2)|3,{37,116,101}}, +/* 21798 */ {(16<<2)|3,{37,116,105}}, +/* 21799 */ {(16<<2)|3,{37,116,111}}, +/* 21800 */ {(16<<2)|3,{37,116,115}}, +/* 21801 */ {(16<<2)|3,{37,116,116}}, +/* 21802 */ {(11<<2)|2,{37,116,0}}, +/* 21803 */ {(11<<2)|2,{37,116,0}}, +/* 21804 */ {(11<<2)|2,{37,116,0}}, +/* 21805 */ {(11<<2)|2,{37,116,0}}, +/* 21806 */ {(11<<2)|2,{37,116,0}}, +/* 21807 */ {(11<<2)|2,{37,116,0}}, +/* 21808 */ {(11<<2)|2,{37,116,0}}, +/* 21809 */ {(11<<2)|2,{37,116,0}}, +/* 21810 */ {(11<<2)|2,{37,116,0}}, +/* 21811 */ {(11<<2)|2,{37,116,0}}, +/* 21812 */ {(11<<2)|2,{37,116,0}}, +/* 21813 */ {(11<<2)|2,{37,116,0}}, +/* 21814 */ {(11<<2)|2,{37,116,0}}, +/* 21815 */ {(11<<2)|2,{37,116,0}}, +/* 21816 */ {(11<<2)|2,{37,116,0}}, +/* 21817 */ {(11<<2)|2,{37,116,0}}, +/* 21818 */ {(11<<2)|2,{37,116,0}}, +/* 21819 */ {(11<<2)|2,{37,116,0}}, +/* 21820 */ {(11<<2)|2,{37,116,0}}, +/* 21821 */ {(11<<2)|2,{37,116,0}}, +/* 21822 */ {(11<<2)|2,{37,116,0}}, +/* 21823 */ {(11<<2)|2,{37,116,0}}, +/* 21824 */ {(12<<2)|2,{37,32,0}}, +/* 21825 */ {(12<<2)|2,{37,32,0}}, +/* 21826 */ {(12<<2)|2,{37,32,0}}, +/* 21827 */ {(12<<2)|2,{37,32,0}}, +/* 21828 */ {(12<<2)|2,{37,32,0}}, +/* 21829 */ {(12<<2)|2,{37,32,0}}, +/* 21830 */ {(12<<2)|2,{37,32,0}}, +/* 21831 */ {(12<<2)|2,{37,32,0}}, +/* 21832 */ {(12<<2)|2,{37,32,0}}, +/* 21833 */ {(12<<2)|2,{37,32,0}}, +/* 21834 */ {(12<<2)|2,{37,32,0}}, +/* 21835 */ {(12<<2)|2,{37,32,0}}, +/* 21836 */ {(12<<2)|2,{37,32,0}}, +/* 21837 */ {(12<<2)|2,{37,32,0}}, +/* 21838 */ {(12<<2)|2,{37,32,0}}, +/* 21839 */ {(12<<2)|2,{37,32,0}}, +/* 21840 */ {(12<<2)|2,{37,37,0}}, +/* 21841 */ {(12<<2)|2,{37,37,0}}, +/* 21842 */ {(12<<2)|2,{37,37,0}}, +/* 21843 */ {(12<<2)|2,{37,37,0}}, +/* 21844 */ {(12<<2)|2,{37,37,0}}, +/* 21845 */ {(12<<2)|2,{37,37,0}}, +/* 21846 */ {(12<<2)|2,{37,37,0}}, +/* 21847 */ {(12<<2)|2,{37,37,0}}, +/* 21848 */ {(12<<2)|2,{37,37,0}}, +/* 21849 */ {(12<<2)|2,{37,37,0}}, +/* 21850 */ {(12<<2)|2,{37,37,0}}, +/* 21851 */ {(12<<2)|2,{37,37,0}}, +/* 21852 */ {(12<<2)|2,{37,37,0}}, +/* 21853 */ {(12<<2)|2,{37,37,0}}, +/* 21854 */ {(12<<2)|2,{37,37,0}}, +/* 21855 */ {(12<<2)|2,{37,37,0}}, +/* 21856 */ {(12<<2)|2,{37,45,0}}, +/* 21857 */ {(12<<2)|2,{37,45,0}}, +/* 21858 */ {(12<<2)|2,{37,45,0}}, +/* 21859 */ {(12<<2)|2,{37,45,0}}, +/* 21860 */ {(12<<2)|2,{37,45,0}}, +/* 21861 */ {(12<<2)|2,{37,45,0}}, +/* 21862 */ {(12<<2)|2,{37,45,0}}, +/* 21863 */ {(12<<2)|2,{37,45,0}}, +/* 21864 */ {(12<<2)|2,{37,45,0}}, +/* 21865 */ {(12<<2)|2,{37,45,0}}, +/* 21866 */ {(12<<2)|2,{37,45,0}}, +/* 21867 */ {(12<<2)|2,{37,45,0}}, +/* 21868 */ {(12<<2)|2,{37,45,0}}, +/* 21869 */ {(12<<2)|2,{37,45,0}}, +/* 21870 */ {(12<<2)|2,{37,45,0}}, +/* 21871 */ {(12<<2)|2,{37,45,0}}, +/* 21872 */ {(12<<2)|2,{37,46,0}}, +/* 21873 */ {(12<<2)|2,{37,46,0}}, +/* 21874 */ {(12<<2)|2,{37,46,0}}, +/* 21875 */ {(12<<2)|2,{37,46,0}}, +/* 21876 */ {(12<<2)|2,{37,46,0}}, +/* 21877 */ {(12<<2)|2,{37,46,0}}, +/* 21878 */ {(12<<2)|2,{37,46,0}}, +/* 21879 */ {(12<<2)|2,{37,46,0}}, +/* 21880 */ {(12<<2)|2,{37,46,0}}, +/* 21881 */ {(12<<2)|2,{37,46,0}}, +/* 21882 */ {(12<<2)|2,{37,46,0}}, +/* 21883 */ {(12<<2)|2,{37,46,0}}, +/* 21884 */ {(12<<2)|2,{37,46,0}}, +/* 21885 */ {(12<<2)|2,{37,46,0}}, +/* 21886 */ {(12<<2)|2,{37,46,0}}, +/* 21887 */ {(12<<2)|2,{37,46,0}}, +/* 21888 */ {(12<<2)|2,{37,47,0}}, +/* 21889 */ {(12<<2)|2,{37,47,0}}, +/* 21890 */ {(12<<2)|2,{37,47,0}}, +/* 21891 */ {(12<<2)|2,{37,47,0}}, +/* 21892 */ {(12<<2)|2,{37,47,0}}, +/* 21893 */ {(12<<2)|2,{37,47,0}}, +/* 21894 */ {(12<<2)|2,{37,47,0}}, +/* 21895 */ {(12<<2)|2,{37,47,0}}, +/* 21896 */ {(12<<2)|2,{37,47,0}}, +/* 21897 */ {(12<<2)|2,{37,47,0}}, +/* 21898 */ {(12<<2)|2,{37,47,0}}, +/* 21899 */ {(12<<2)|2,{37,47,0}}, +/* 21900 */ {(12<<2)|2,{37,47,0}}, +/* 21901 */ {(12<<2)|2,{37,47,0}}, +/* 21902 */ {(12<<2)|2,{37,47,0}}, +/* 21903 */ {(12<<2)|2,{37,47,0}}, +/* 21904 */ {(12<<2)|2,{37,51,0}}, +/* 21905 */ {(12<<2)|2,{37,51,0}}, +/* 21906 */ {(12<<2)|2,{37,51,0}}, +/* 21907 */ {(12<<2)|2,{37,51,0}}, +/* 21908 */ {(12<<2)|2,{37,51,0}}, +/* 21909 */ {(12<<2)|2,{37,51,0}}, +/* 21910 */ {(12<<2)|2,{37,51,0}}, +/* 21911 */ {(12<<2)|2,{37,51,0}}, +/* 21912 */ {(12<<2)|2,{37,51,0}}, +/* 21913 */ {(12<<2)|2,{37,51,0}}, +/* 21914 */ {(12<<2)|2,{37,51,0}}, +/* 21915 */ {(12<<2)|2,{37,51,0}}, +/* 21916 */ {(12<<2)|2,{37,51,0}}, +/* 21917 */ {(12<<2)|2,{37,51,0}}, +/* 21918 */ {(12<<2)|2,{37,51,0}}, +/* 21919 */ {(12<<2)|2,{37,51,0}}, +/* 21920 */ {(12<<2)|2,{37,52,0}}, +/* 21921 */ {(12<<2)|2,{37,52,0}}, +/* 21922 */ {(12<<2)|2,{37,52,0}}, +/* 21923 */ {(12<<2)|2,{37,52,0}}, +/* 21924 */ {(12<<2)|2,{37,52,0}}, +/* 21925 */ {(12<<2)|2,{37,52,0}}, +/* 21926 */ {(12<<2)|2,{37,52,0}}, +/* 21927 */ {(12<<2)|2,{37,52,0}}, +/* 21928 */ {(12<<2)|2,{37,52,0}}, +/* 21929 */ {(12<<2)|2,{37,52,0}}, +/* 21930 */ {(12<<2)|2,{37,52,0}}, +/* 21931 */ {(12<<2)|2,{37,52,0}}, +/* 21932 */ {(12<<2)|2,{37,52,0}}, +/* 21933 */ {(12<<2)|2,{37,52,0}}, +/* 21934 */ {(12<<2)|2,{37,52,0}}, +/* 21935 */ {(12<<2)|2,{37,52,0}}, +/* 21936 */ {(12<<2)|2,{37,53,0}}, +/* 21937 */ {(12<<2)|2,{37,53,0}}, +/* 21938 */ {(12<<2)|2,{37,53,0}}, +/* 21939 */ {(12<<2)|2,{37,53,0}}, +/* 21940 */ {(12<<2)|2,{37,53,0}}, +/* 21941 */ {(12<<2)|2,{37,53,0}}, +/* 21942 */ {(12<<2)|2,{37,53,0}}, +/* 21943 */ {(12<<2)|2,{37,53,0}}, +/* 21944 */ {(12<<2)|2,{37,53,0}}, +/* 21945 */ {(12<<2)|2,{37,53,0}}, +/* 21946 */ {(12<<2)|2,{37,53,0}}, +/* 21947 */ {(12<<2)|2,{37,53,0}}, +/* 21948 */ {(12<<2)|2,{37,53,0}}, +/* 21949 */ {(12<<2)|2,{37,53,0}}, +/* 21950 */ {(12<<2)|2,{37,53,0}}, +/* 21951 */ {(12<<2)|2,{37,53,0}}, +/* 21952 */ {(12<<2)|2,{37,54,0}}, +/* 21953 */ {(12<<2)|2,{37,54,0}}, +/* 21954 */ {(12<<2)|2,{37,54,0}}, +/* 21955 */ {(12<<2)|2,{37,54,0}}, +/* 21956 */ {(12<<2)|2,{37,54,0}}, +/* 21957 */ {(12<<2)|2,{37,54,0}}, +/* 21958 */ {(12<<2)|2,{37,54,0}}, +/* 21959 */ {(12<<2)|2,{37,54,0}}, +/* 21960 */ {(12<<2)|2,{37,54,0}}, +/* 21961 */ {(12<<2)|2,{37,54,0}}, +/* 21962 */ {(12<<2)|2,{37,54,0}}, +/* 21963 */ {(12<<2)|2,{37,54,0}}, +/* 21964 */ {(12<<2)|2,{37,54,0}}, +/* 21965 */ {(12<<2)|2,{37,54,0}}, +/* 21966 */ {(12<<2)|2,{37,54,0}}, +/* 21967 */ {(12<<2)|2,{37,54,0}}, +/* 21968 */ {(12<<2)|2,{37,55,0}}, +/* 21969 */ {(12<<2)|2,{37,55,0}}, +/* 21970 */ {(12<<2)|2,{37,55,0}}, +/* 21971 */ {(12<<2)|2,{37,55,0}}, +/* 21972 */ {(12<<2)|2,{37,55,0}}, +/* 21973 */ {(12<<2)|2,{37,55,0}}, +/* 21974 */ {(12<<2)|2,{37,55,0}}, +/* 21975 */ {(12<<2)|2,{37,55,0}}, +/* 21976 */ {(12<<2)|2,{37,55,0}}, +/* 21977 */ {(12<<2)|2,{37,55,0}}, +/* 21978 */ {(12<<2)|2,{37,55,0}}, +/* 21979 */ {(12<<2)|2,{37,55,0}}, +/* 21980 */ {(12<<2)|2,{37,55,0}}, +/* 21981 */ {(12<<2)|2,{37,55,0}}, +/* 21982 */ {(12<<2)|2,{37,55,0}}, +/* 21983 */ {(12<<2)|2,{37,55,0}}, +/* 21984 */ {(12<<2)|2,{37,56,0}}, +/* 21985 */ {(12<<2)|2,{37,56,0}}, +/* 21986 */ {(12<<2)|2,{37,56,0}}, +/* 21987 */ {(12<<2)|2,{37,56,0}}, +/* 21988 */ {(12<<2)|2,{37,56,0}}, +/* 21989 */ {(12<<2)|2,{37,56,0}}, +/* 21990 */ {(12<<2)|2,{37,56,0}}, +/* 21991 */ {(12<<2)|2,{37,56,0}}, +/* 21992 */ {(12<<2)|2,{37,56,0}}, +/* 21993 */ {(12<<2)|2,{37,56,0}}, +/* 21994 */ {(12<<2)|2,{37,56,0}}, +/* 21995 */ {(12<<2)|2,{37,56,0}}, +/* 21996 */ {(12<<2)|2,{37,56,0}}, +/* 21997 */ {(12<<2)|2,{37,56,0}}, +/* 21998 */ {(12<<2)|2,{37,56,0}}, +/* 21999 */ {(12<<2)|2,{37,56,0}}, +/* 22000 */ {(12<<2)|2,{37,57,0}}, +/* 22001 */ {(12<<2)|2,{37,57,0}}, +/* 22002 */ {(12<<2)|2,{37,57,0}}, +/* 22003 */ {(12<<2)|2,{37,57,0}}, +/* 22004 */ {(12<<2)|2,{37,57,0}}, +/* 22005 */ {(12<<2)|2,{37,57,0}}, +/* 22006 */ {(12<<2)|2,{37,57,0}}, +/* 22007 */ {(12<<2)|2,{37,57,0}}, +/* 22008 */ {(12<<2)|2,{37,57,0}}, +/* 22009 */ {(12<<2)|2,{37,57,0}}, +/* 22010 */ {(12<<2)|2,{37,57,0}}, +/* 22011 */ {(12<<2)|2,{37,57,0}}, +/* 22012 */ {(12<<2)|2,{37,57,0}}, +/* 22013 */ {(12<<2)|2,{37,57,0}}, +/* 22014 */ {(12<<2)|2,{37,57,0}}, +/* 22015 */ {(12<<2)|2,{37,57,0}}, +/* 22016 */ {(12<<2)|2,{37,61,0}}, +/* 22017 */ {(12<<2)|2,{37,61,0}}, +/* 22018 */ {(12<<2)|2,{37,61,0}}, +/* 22019 */ {(12<<2)|2,{37,61,0}}, +/* 22020 */ {(12<<2)|2,{37,61,0}}, +/* 22021 */ {(12<<2)|2,{37,61,0}}, +/* 22022 */ {(12<<2)|2,{37,61,0}}, +/* 22023 */ {(12<<2)|2,{37,61,0}}, +/* 22024 */ {(12<<2)|2,{37,61,0}}, +/* 22025 */ {(12<<2)|2,{37,61,0}}, +/* 22026 */ {(12<<2)|2,{37,61,0}}, +/* 22027 */ {(12<<2)|2,{37,61,0}}, +/* 22028 */ {(12<<2)|2,{37,61,0}}, +/* 22029 */ {(12<<2)|2,{37,61,0}}, +/* 22030 */ {(12<<2)|2,{37,61,0}}, +/* 22031 */ {(12<<2)|2,{37,61,0}}, +/* 22032 */ {(12<<2)|2,{37,65,0}}, +/* 22033 */ {(12<<2)|2,{37,65,0}}, +/* 22034 */ {(12<<2)|2,{37,65,0}}, +/* 22035 */ {(12<<2)|2,{37,65,0}}, +/* 22036 */ {(12<<2)|2,{37,65,0}}, +/* 22037 */ {(12<<2)|2,{37,65,0}}, +/* 22038 */ {(12<<2)|2,{37,65,0}}, +/* 22039 */ {(12<<2)|2,{37,65,0}}, +/* 22040 */ {(12<<2)|2,{37,65,0}}, +/* 22041 */ {(12<<2)|2,{37,65,0}}, +/* 22042 */ {(12<<2)|2,{37,65,0}}, +/* 22043 */ {(12<<2)|2,{37,65,0}}, +/* 22044 */ {(12<<2)|2,{37,65,0}}, +/* 22045 */ {(12<<2)|2,{37,65,0}}, +/* 22046 */ {(12<<2)|2,{37,65,0}}, +/* 22047 */ {(12<<2)|2,{37,65,0}}, +/* 22048 */ {(12<<2)|2,{37,95,0}}, +/* 22049 */ {(12<<2)|2,{37,95,0}}, +/* 22050 */ {(12<<2)|2,{37,95,0}}, +/* 22051 */ {(12<<2)|2,{37,95,0}}, +/* 22052 */ {(12<<2)|2,{37,95,0}}, +/* 22053 */ {(12<<2)|2,{37,95,0}}, +/* 22054 */ {(12<<2)|2,{37,95,0}}, +/* 22055 */ {(12<<2)|2,{37,95,0}}, +/* 22056 */ {(12<<2)|2,{37,95,0}}, +/* 22057 */ {(12<<2)|2,{37,95,0}}, +/* 22058 */ {(12<<2)|2,{37,95,0}}, +/* 22059 */ {(12<<2)|2,{37,95,0}}, +/* 22060 */ {(12<<2)|2,{37,95,0}}, +/* 22061 */ {(12<<2)|2,{37,95,0}}, +/* 22062 */ {(12<<2)|2,{37,95,0}}, +/* 22063 */ {(12<<2)|2,{37,95,0}}, +/* 22064 */ {(12<<2)|2,{37,98,0}}, +/* 22065 */ {(12<<2)|2,{37,98,0}}, +/* 22066 */ {(12<<2)|2,{37,98,0}}, +/* 22067 */ {(12<<2)|2,{37,98,0}}, +/* 22068 */ {(12<<2)|2,{37,98,0}}, +/* 22069 */ {(12<<2)|2,{37,98,0}}, +/* 22070 */ {(12<<2)|2,{37,98,0}}, +/* 22071 */ {(12<<2)|2,{37,98,0}}, +/* 22072 */ {(12<<2)|2,{37,98,0}}, +/* 22073 */ {(12<<2)|2,{37,98,0}}, +/* 22074 */ {(12<<2)|2,{37,98,0}}, +/* 22075 */ {(12<<2)|2,{37,98,0}}, +/* 22076 */ {(12<<2)|2,{37,98,0}}, +/* 22077 */ {(12<<2)|2,{37,98,0}}, +/* 22078 */ {(12<<2)|2,{37,98,0}}, +/* 22079 */ {(12<<2)|2,{37,98,0}}, +/* 22080 */ {(12<<2)|2,{37,100,0}}, +/* 22081 */ {(12<<2)|2,{37,100,0}}, +/* 22082 */ {(12<<2)|2,{37,100,0}}, +/* 22083 */ {(12<<2)|2,{37,100,0}}, +/* 22084 */ {(12<<2)|2,{37,100,0}}, +/* 22085 */ {(12<<2)|2,{37,100,0}}, +/* 22086 */ {(12<<2)|2,{37,100,0}}, +/* 22087 */ {(12<<2)|2,{37,100,0}}, +/* 22088 */ {(12<<2)|2,{37,100,0}}, +/* 22089 */ {(12<<2)|2,{37,100,0}}, +/* 22090 */ {(12<<2)|2,{37,100,0}}, +/* 22091 */ {(12<<2)|2,{37,100,0}}, +/* 22092 */ {(12<<2)|2,{37,100,0}}, +/* 22093 */ {(12<<2)|2,{37,100,0}}, +/* 22094 */ {(12<<2)|2,{37,100,0}}, +/* 22095 */ {(12<<2)|2,{37,100,0}}, +/* 22096 */ {(12<<2)|2,{37,102,0}}, +/* 22097 */ {(12<<2)|2,{37,102,0}}, +/* 22098 */ {(12<<2)|2,{37,102,0}}, +/* 22099 */ {(12<<2)|2,{37,102,0}}, +/* 22100 */ {(12<<2)|2,{37,102,0}}, +/* 22101 */ {(12<<2)|2,{37,102,0}}, +/* 22102 */ {(12<<2)|2,{37,102,0}}, +/* 22103 */ {(12<<2)|2,{37,102,0}}, +/* 22104 */ {(12<<2)|2,{37,102,0}}, +/* 22105 */ {(12<<2)|2,{37,102,0}}, +/* 22106 */ {(12<<2)|2,{37,102,0}}, +/* 22107 */ {(12<<2)|2,{37,102,0}}, +/* 22108 */ {(12<<2)|2,{37,102,0}}, +/* 22109 */ {(12<<2)|2,{37,102,0}}, +/* 22110 */ {(12<<2)|2,{37,102,0}}, +/* 22111 */ {(12<<2)|2,{37,102,0}}, +/* 22112 */ {(12<<2)|2,{37,103,0}}, +/* 22113 */ {(12<<2)|2,{37,103,0}}, +/* 22114 */ {(12<<2)|2,{37,103,0}}, +/* 22115 */ {(12<<2)|2,{37,103,0}}, +/* 22116 */ {(12<<2)|2,{37,103,0}}, +/* 22117 */ {(12<<2)|2,{37,103,0}}, +/* 22118 */ {(12<<2)|2,{37,103,0}}, +/* 22119 */ {(12<<2)|2,{37,103,0}}, +/* 22120 */ {(12<<2)|2,{37,103,0}}, +/* 22121 */ {(12<<2)|2,{37,103,0}}, +/* 22122 */ {(12<<2)|2,{37,103,0}}, +/* 22123 */ {(12<<2)|2,{37,103,0}}, +/* 22124 */ {(12<<2)|2,{37,103,0}}, +/* 22125 */ {(12<<2)|2,{37,103,0}}, +/* 22126 */ {(12<<2)|2,{37,103,0}}, +/* 22127 */ {(12<<2)|2,{37,103,0}}, +/* 22128 */ {(12<<2)|2,{37,104,0}}, +/* 22129 */ {(12<<2)|2,{37,104,0}}, +/* 22130 */ {(12<<2)|2,{37,104,0}}, +/* 22131 */ {(12<<2)|2,{37,104,0}}, +/* 22132 */ {(12<<2)|2,{37,104,0}}, +/* 22133 */ {(12<<2)|2,{37,104,0}}, +/* 22134 */ {(12<<2)|2,{37,104,0}}, +/* 22135 */ {(12<<2)|2,{37,104,0}}, +/* 22136 */ {(12<<2)|2,{37,104,0}}, +/* 22137 */ {(12<<2)|2,{37,104,0}}, +/* 22138 */ {(12<<2)|2,{37,104,0}}, +/* 22139 */ {(12<<2)|2,{37,104,0}}, +/* 22140 */ {(12<<2)|2,{37,104,0}}, +/* 22141 */ {(12<<2)|2,{37,104,0}}, +/* 22142 */ {(12<<2)|2,{37,104,0}}, +/* 22143 */ {(12<<2)|2,{37,104,0}}, +/* 22144 */ {(12<<2)|2,{37,108,0}}, +/* 22145 */ {(12<<2)|2,{37,108,0}}, +/* 22146 */ {(12<<2)|2,{37,108,0}}, +/* 22147 */ {(12<<2)|2,{37,108,0}}, +/* 22148 */ {(12<<2)|2,{37,108,0}}, +/* 22149 */ {(12<<2)|2,{37,108,0}}, +/* 22150 */ {(12<<2)|2,{37,108,0}}, +/* 22151 */ {(12<<2)|2,{37,108,0}}, +/* 22152 */ {(12<<2)|2,{37,108,0}}, +/* 22153 */ {(12<<2)|2,{37,108,0}}, +/* 22154 */ {(12<<2)|2,{37,108,0}}, +/* 22155 */ {(12<<2)|2,{37,108,0}}, +/* 22156 */ {(12<<2)|2,{37,108,0}}, +/* 22157 */ {(12<<2)|2,{37,108,0}}, +/* 22158 */ {(12<<2)|2,{37,108,0}}, +/* 22159 */ {(12<<2)|2,{37,108,0}}, +/* 22160 */ {(12<<2)|2,{37,109,0}}, +/* 22161 */ {(12<<2)|2,{37,109,0}}, +/* 22162 */ {(12<<2)|2,{37,109,0}}, +/* 22163 */ {(12<<2)|2,{37,109,0}}, +/* 22164 */ {(12<<2)|2,{37,109,0}}, +/* 22165 */ {(12<<2)|2,{37,109,0}}, +/* 22166 */ {(12<<2)|2,{37,109,0}}, +/* 22167 */ {(12<<2)|2,{37,109,0}}, +/* 22168 */ {(12<<2)|2,{37,109,0}}, +/* 22169 */ {(12<<2)|2,{37,109,0}}, +/* 22170 */ {(12<<2)|2,{37,109,0}}, +/* 22171 */ {(12<<2)|2,{37,109,0}}, +/* 22172 */ {(12<<2)|2,{37,109,0}}, +/* 22173 */ {(12<<2)|2,{37,109,0}}, +/* 22174 */ {(12<<2)|2,{37,109,0}}, +/* 22175 */ {(12<<2)|2,{37,109,0}}, +/* 22176 */ {(12<<2)|2,{37,110,0}}, +/* 22177 */ {(12<<2)|2,{37,110,0}}, +/* 22178 */ {(12<<2)|2,{37,110,0}}, +/* 22179 */ {(12<<2)|2,{37,110,0}}, +/* 22180 */ {(12<<2)|2,{37,110,0}}, +/* 22181 */ {(12<<2)|2,{37,110,0}}, +/* 22182 */ {(12<<2)|2,{37,110,0}}, +/* 22183 */ {(12<<2)|2,{37,110,0}}, +/* 22184 */ {(12<<2)|2,{37,110,0}}, +/* 22185 */ {(12<<2)|2,{37,110,0}}, +/* 22186 */ {(12<<2)|2,{37,110,0}}, +/* 22187 */ {(12<<2)|2,{37,110,0}}, +/* 22188 */ {(12<<2)|2,{37,110,0}}, +/* 22189 */ {(12<<2)|2,{37,110,0}}, +/* 22190 */ {(12<<2)|2,{37,110,0}}, +/* 22191 */ {(12<<2)|2,{37,110,0}}, +/* 22192 */ {(12<<2)|2,{37,112,0}}, +/* 22193 */ {(12<<2)|2,{37,112,0}}, +/* 22194 */ {(12<<2)|2,{37,112,0}}, +/* 22195 */ {(12<<2)|2,{37,112,0}}, +/* 22196 */ {(12<<2)|2,{37,112,0}}, +/* 22197 */ {(12<<2)|2,{37,112,0}}, +/* 22198 */ {(12<<2)|2,{37,112,0}}, +/* 22199 */ {(12<<2)|2,{37,112,0}}, +/* 22200 */ {(12<<2)|2,{37,112,0}}, +/* 22201 */ {(12<<2)|2,{37,112,0}}, +/* 22202 */ {(12<<2)|2,{37,112,0}}, +/* 22203 */ {(12<<2)|2,{37,112,0}}, +/* 22204 */ {(12<<2)|2,{37,112,0}}, +/* 22205 */ {(12<<2)|2,{37,112,0}}, +/* 22206 */ {(12<<2)|2,{37,112,0}}, +/* 22207 */ {(12<<2)|2,{37,112,0}}, +/* 22208 */ {(12<<2)|2,{37,114,0}}, +/* 22209 */ {(12<<2)|2,{37,114,0}}, +/* 22210 */ {(12<<2)|2,{37,114,0}}, +/* 22211 */ {(12<<2)|2,{37,114,0}}, +/* 22212 */ {(12<<2)|2,{37,114,0}}, +/* 22213 */ {(12<<2)|2,{37,114,0}}, +/* 22214 */ {(12<<2)|2,{37,114,0}}, +/* 22215 */ {(12<<2)|2,{37,114,0}}, +/* 22216 */ {(12<<2)|2,{37,114,0}}, +/* 22217 */ {(12<<2)|2,{37,114,0}}, +/* 22218 */ {(12<<2)|2,{37,114,0}}, +/* 22219 */ {(12<<2)|2,{37,114,0}}, +/* 22220 */ {(12<<2)|2,{37,114,0}}, +/* 22221 */ {(12<<2)|2,{37,114,0}}, +/* 22222 */ {(12<<2)|2,{37,114,0}}, +/* 22223 */ {(12<<2)|2,{37,114,0}}, +/* 22224 */ {(12<<2)|2,{37,117,0}}, +/* 22225 */ {(12<<2)|2,{37,117,0}}, +/* 22226 */ {(12<<2)|2,{37,117,0}}, +/* 22227 */ {(12<<2)|2,{37,117,0}}, +/* 22228 */ {(12<<2)|2,{37,117,0}}, +/* 22229 */ {(12<<2)|2,{37,117,0}}, +/* 22230 */ {(12<<2)|2,{37,117,0}}, +/* 22231 */ {(12<<2)|2,{37,117,0}}, +/* 22232 */ {(12<<2)|2,{37,117,0}}, +/* 22233 */ {(12<<2)|2,{37,117,0}}, +/* 22234 */ {(12<<2)|2,{37,117,0}}, +/* 22235 */ {(12<<2)|2,{37,117,0}}, +/* 22236 */ {(12<<2)|2,{37,117,0}}, +/* 22237 */ {(12<<2)|2,{37,117,0}}, +/* 22238 */ {(12<<2)|2,{37,117,0}}, +/* 22239 */ {(12<<2)|2,{37,117,0}}, +/* 22240 */ {(13<<2)|2,{37,58,0}}, +/* 22241 */ {(13<<2)|2,{37,58,0}}, +/* 22242 */ {(13<<2)|2,{37,58,0}}, +/* 22243 */ {(13<<2)|2,{37,58,0}}, +/* 22244 */ {(13<<2)|2,{37,58,0}}, +/* 22245 */ {(13<<2)|2,{37,58,0}}, +/* 22246 */ {(13<<2)|2,{37,58,0}}, +/* 22247 */ {(13<<2)|2,{37,58,0}}, +/* 22248 */ {(13<<2)|2,{37,66,0}}, +/* 22249 */ {(13<<2)|2,{37,66,0}}, +/* 22250 */ {(13<<2)|2,{37,66,0}}, +/* 22251 */ {(13<<2)|2,{37,66,0}}, +/* 22252 */ {(13<<2)|2,{37,66,0}}, +/* 22253 */ {(13<<2)|2,{37,66,0}}, +/* 22254 */ {(13<<2)|2,{37,66,0}}, +/* 22255 */ {(13<<2)|2,{37,66,0}}, +/* 22256 */ {(13<<2)|2,{37,67,0}}, +/* 22257 */ {(13<<2)|2,{37,67,0}}, +/* 22258 */ {(13<<2)|2,{37,67,0}}, +/* 22259 */ {(13<<2)|2,{37,67,0}}, +/* 22260 */ {(13<<2)|2,{37,67,0}}, +/* 22261 */ {(13<<2)|2,{37,67,0}}, +/* 22262 */ {(13<<2)|2,{37,67,0}}, +/* 22263 */ {(13<<2)|2,{37,67,0}}, +/* 22264 */ {(13<<2)|2,{37,68,0}}, +/* 22265 */ {(13<<2)|2,{37,68,0}}, +/* 22266 */ {(13<<2)|2,{37,68,0}}, +/* 22267 */ {(13<<2)|2,{37,68,0}}, +/* 22268 */ {(13<<2)|2,{37,68,0}}, +/* 22269 */ {(13<<2)|2,{37,68,0}}, +/* 22270 */ {(13<<2)|2,{37,68,0}}, +/* 22271 */ {(13<<2)|2,{37,68,0}}, +/* 22272 */ {(13<<2)|2,{37,69,0}}, +/* 22273 */ {(13<<2)|2,{37,69,0}}, +/* 22274 */ {(13<<2)|2,{37,69,0}}, +/* 22275 */ {(13<<2)|2,{37,69,0}}, +/* 22276 */ {(13<<2)|2,{37,69,0}}, +/* 22277 */ {(13<<2)|2,{37,69,0}}, +/* 22278 */ {(13<<2)|2,{37,69,0}}, +/* 22279 */ {(13<<2)|2,{37,69,0}}, +/* 22280 */ {(13<<2)|2,{37,70,0}}, +/* 22281 */ {(13<<2)|2,{37,70,0}}, +/* 22282 */ {(13<<2)|2,{37,70,0}}, +/* 22283 */ {(13<<2)|2,{37,70,0}}, +/* 22284 */ {(13<<2)|2,{37,70,0}}, +/* 22285 */ {(13<<2)|2,{37,70,0}}, +/* 22286 */ {(13<<2)|2,{37,70,0}}, +/* 22287 */ {(13<<2)|2,{37,70,0}}, +/* 22288 */ {(13<<2)|2,{37,71,0}}, +/* 22289 */ {(13<<2)|2,{37,71,0}}, +/* 22290 */ {(13<<2)|2,{37,71,0}}, +/* 22291 */ {(13<<2)|2,{37,71,0}}, +/* 22292 */ {(13<<2)|2,{37,71,0}}, +/* 22293 */ {(13<<2)|2,{37,71,0}}, +/* 22294 */ {(13<<2)|2,{37,71,0}}, +/* 22295 */ {(13<<2)|2,{37,71,0}}, +/* 22296 */ {(13<<2)|2,{37,72,0}}, +/* 22297 */ {(13<<2)|2,{37,72,0}}, +/* 22298 */ {(13<<2)|2,{37,72,0}}, +/* 22299 */ {(13<<2)|2,{37,72,0}}, +/* 22300 */ {(13<<2)|2,{37,72,0}}, +/* 22301 */ {(13<<2)|2,{37,72,0}}, +/* 22302 */ {(13<<2)|2,{37,72,0}}, +/* 22303 */ {(13<<2)|2,{37,72,0}}, +/* 22304 */ {(13<<2)|2,{37,73,0}}, +/* 22305 */ {(13<<2)|2,{37,73,0}}, +/* 22306 */ {(13<<2)|2,{37,73,0}}, +/* 22307 */ {(13<<2)|2,{37,73,0}}, +/* 22308 */ {(13<<2)|2,{37,73,0}}, +/* 22309 */ {(13<<2)|2,{37,73,0}}, +/* 22310 */ {(13<<2)|2,{37,73,0}}, +/* 22311 */ {(13<<2)|2,{37,73,0}}, +/* 22312 */ {(13<<2)|2,{37,74,0}}, +/* 22313 */ {(13<<2)|2,{37,74,0}}, +/* 22314 */ {(13<<2)|2,{37,74,0}}, +/* 22315 */ {(13<<2)|2,{37,74,0}}, +/* 22316 */ {(13<<2)|2,{37,74,0}}, +/* 22317 */ {(13<<2)|2,{37,74,0}}, +/* 22318 */ {(13<<2)|2,{37,74,0}}, +/* 22319 */ {(13<<2)|2,{37,74,0}}, +/* 22320 */ {(13<<2)|2,{37,75,0}}, +/* 22321 */ {(13<<2)|2,{37,75,0}}, +/* 22322 */ {(13<<2)|2,{37,75,0}}, +/* 22323 */ {(13<<2)|2,{37,75,0}}, +/* 22324 */ {(13<<2)|2,{37,75,0}}, +/* 22325 */ {(13<<2)|2,{37,75,0}}, +/* 22326 */ {(13<<2)|2,{37,75,0}}, +/* 22327 */ {(13<<2)|2,{37,75,0}}, +/* 22328 */ {(13<<2)|2,{37,76,0}}, +/* 22329 */ {(13<<2)|2,{37,76,0}}, +/* 22330 */ {(13<<2)|2,{37,76,0}}, +/* 22331 */ {(13<<2)|2,{37,76,0}}, +/* 22332 */ {(13<<2)|2,{37,76,0}}, +/* 22333 */ {(13<<2)|2,{37,76,0}}, +/* 22334 */ {(13<<2)|2,{37,76,0}}, +/* 22335 */ {(13<<2)|2,{37,76,0}}, +/* 22336 */ {(13<<2)|2,{37,77,0}}, +/* 22337 */ {(13<<2)|2,{37,77,0}}, +/* 22338 */ {(13<<2)|2,{37,77,0}}, +/* 22339 */ {(13<<2)|2,{37,77,0}}, +/* 22340 */ {(13<<2)|2,{37,77,0}}, +/* 22341 */ {(13<<2)|2,{37,77,0}}, +/* 22342 */ {(13<<2)|2,{37,77,0}}, +/* 22343 */ {(13<<2)|2,{37,77,0}}, +/* 22344 */ {(13<<2)|2,{37,78,0}}, +/* 22345 */ {(13<<2)|2,{37,78,0}}, +/* 22346 */ {(13<<2)|2,{37,78,0}}, +/* 22347 */ {(13<<2)|2,{37,78,0}}, +/* 22348 */ {(13<<2)|2,{37,78,0}}, +/* 22349 */ {(13<<2)|2,{37,78,0}}, +/* 22350 */ {(13<<2)|2,{37,78,0}}, +/* 22351 */ {(13<<2)|2,{37,78,0}}, +/* 22352 */ {(13<<2)|2,{37,79,0}}, +/* 22353 */ {(13<<2)|2,{37,79,0}}, +/* 22354 */ {(13<<2)|2,{37,79,0}}, +/* 22355 */ {(13<<2)|2,{37,79,0}}, +/* 22356 */ {(13<<2)|2,{37,79,0}}, +/* 22357 */ {(13<<2)|2,{37,79,0}}, +/* 22358 */ {(13<<2)|2,{37,79,0}}, +/* 22359 */ {(13<<2)|2,{37,79,0}}, +/* 22360 */ {(13<<2)|2,{37,80,0}}, +/* 22361 */ {(13<<2)|2,{37,80,0}}, +/* 22362 */ {(13<<2)|2,{37,80,0}}, +/* 22363 */ {(13<<2)|2,{37,80,0}}, +/* 22364 */ {(13<<2)|2,{37,80,0}}, +/* 22365 */ {(13<<2)|2,{37,80,0}}, +/* 22366 */ {(13<<2)|2,{37,80,0}}, +/* 22367 */ {(13<<2)|2,{37,80,0}}, +/* 22368 */ {(13<<2)|2,{37,81,0}}, +/* 22369 */ {(13<<2)|2,{37,81,0}}, +/* 22370 */ {(13<<2)|2,{37,81,0}}, +/* 22371 */ {(13<<2)|2,{37,81,0}}, +/* 22372 */ {(13<<2)|2,{37,81,0}}, +/* 22373 */ {(13<<2)|2,{37,81,0}}, +/* 22374 */ {(13<<2)|2,{37,81,0}}, +/* 22375 */ {(13<<2)|2,{37,81,0}}, +/* 22376 */ {(13<<2)|2,{37,82,0}}, +/* 22377 */ {(13<<2)|2,{37,82,0}}, +/* 22378 */ {(13<<2)|2,{37,82,0}}, +/* 22379 */ {(13<<2)|2,{37,82,0}}, +/* 22380 */ {(13<<2)|2,{37,82,0}}, +/* 22381 */ {(13<<2)|2,{37,82,0}}, +/* 22382 */ {(13<<2)|2,{37,82,0}}, +/* 22383 */ {(13<<2)|2,{37,82,0}}, +/* 22384 */ {(13<<2)|2,{37,83,0}}, +/* 22385 */ {(13<<2)|2,{37,83,0}}, +/* 22386 */ {(13<<2)|2,{37,83,0}}, +/* 22387 */ {(13<<2)|2,{37,83,0}}, +/* 22388 */ {(13<<2)|2,{37,83,0}}, +/* 22389 */ {(13<<2)|2,{37,83,0}}, +/* 22390 */ {(13<<2)|2,{37,83,0}}, +/* 22391 */ {(13<<2)|2,{37,83,0}}, +/* 22392 */ {(13<<2)|2,{37,84,0}}, +/* 22393 */ {(13<<2)|2,{37,84,0}}, +/* 22394 */ {(13<<2)|2,{37,84,0}}, +/* 22395 */ {(13<<2)|2,{37,84,0}}, +/* 22396 */ {(13<<2)|2,{37,84,0}}, +/* 22397 */ {(13<<2)|2,{37,84,0}}, +/* 22398 */ {(13<<2)|2,{37,84,0}}, +/* 22399 */ {(13<<2)|2,{37,84,0}}, +/* 22400 */ {(13<<2)|2,{37,85,0}}, +/* 22401 */ {(13<<2)|2,{37,85,0}}, +/* 22402 */ {(13<<2)|2,{37,85,0}}, +/* 22403 */ {(13<<2)|2,{37,85,0}}, +/* 22404 */ {(13<<2)|2,{37,85,0}}, +/* 22405 */ {(13<<2)|2,{37,85,0}}, +/* 22406 */ {(13<<2)|2,{37,85,0}}, +/* 22407 */ {(13<<2)|2,{37,85,0}}, +/* 22408 */ {(13<<2)|2,{37,86,0}}, +/* 22409 */ {(13<<2)|2,{37,86,0}}, +/* 22410 */ {(13<<2)|2,{37,86,0}}, +/* 22411 */ {(13<<2)|2,{37,86,0}}, +/* 22412 */ {(13<<2)|2,{37,86,0}}, +/* 22413 */ {(13<<2)|2,{37,86,0}}, +/* 22414 */ {(13<<2)|2,{37,86,0}}, +/* 22415 */ {(13<<2)|2,{37,86,0}}, +/* 22416 */ {(13<<2)|2,{37,87,0}}, +/* 22417 */ {(13<<2)|2,{37,87,0}}, +/* 22418 */ {(13<<2)|2,{37,87,0}}, +/* 22419 */ {(13<<2)|2,{37,87,0}}, +/* 22420 */ {(13<<2)|2,{37,87,0}}, +/* 22421 */ {(13<<2)|2,{37,87,0}}, +/* 22422 */ {(13<<2)|2,{37,87,0}}, +/* 22423 */ {(13<<2)|2,{37,87,0}}, +/* 22424 */ {(13<<2)|2,{37,89,0}}, +/* 22425 */ {(13<<2)|2,{37,89,0}}, +/* 22426 */ {(13<<2)|2,{37,89,0}}, +/* 22427 */ {(13<<2)|2,{37,89,0}}, +/* 22428 */ {(13<<2)|2,{37,89,0}}, +/* 22429 */ {(13<<2)|2,{37,89,0}}, +/* 22430 */ {(13<<2)|2,{37,89,0}}, +/* 22431 */ {(13<<2)|2,{37,89,0}}, +/* 22432 */ {(13<<2)|2,{37,106,0}}, +/* 22433 */ {(13<<2)|2,{37,106,0}}, +/* 22434 */ {(13<<2)|2,{37,106,0}}, +/* 22435 */ {(13<<2)|2,{37,106,0}}, +/* 22436 */ {(13<<2)|2,{37,106,0}}, +/* 22437 */ {(13<<2)|2,{37,106,0}}, +/* 22438 */ {(13<<2)|2,{37,106,0}}, +/* 22439 */ {(13<<2)|2,{37,106,0}}, +/* 22440 */ {(13<<2)|2,{37,107,0}}, +/* 22441 */ {(13<<2)|2,{37,107,0}}, +/* 22442 */ {(13<<2)|2,{37,107,0}}, +/* 22443 */ {(13<<2)|2,{37,107,0}}, +/* 22444 */ {(13<<2)|2,{37,107,0}}, +/* 22445 */ {(13<<2)|2,{37,107,0}}, +/* 22446 */ {(13<<2)|2,{37,107,0}}, +/* 22447 */ {(13<<2)|2,{37,107,0}}, +/* 22448 */ {(13<<2)|2,{37,113,0}}, +/* 22449 */ {(13<<2)|2,{37,113,0}}, +/* 22450 */ {(13<<2)|2,{37,113,0}}, +/* 22451 */ {(13<<2)|2,{37,113,0}}, +/* 22452 */ {(13<<2)|2,{37,113,0}}, +/* 22453 */ {(13<<2)|2,{37,113,0}}, +/* 22454 */ {(13<<2)|2,{37,113,0}}, +/* 22455 */ {(13<<2)|2,{37,113,0}}, +/* 22456 */ {(13<<2)|2,{37,118,0}}, +/* 22457 */ {(13<<2)|2,{37,118,0}}, +/* 22458 */ {(13<<2)|2,{37,118,0}}, +/* 22459 */ {(13<<2)|2,{37,118,0}}, +/* 22460 */ {(13<<2)|2,{37,118,0}}, +/* 22461 */ {(13<<2)|2,{37,118,0}}, +/* 22462 */ {(13<<2)|2,{37,118,0}}, +/* 22463 */ {(13<<2)|2,{37,118,0}}, +/* 22464 */ {(13<<2)|2,{37,119,0}}, +/* 22465 */ {(13<<2)|2,{37,119,0}}, +/* 22466 */ {(13<<2)|2,{37,119,0}}, +/* 22467 */ {(13<<2)|2,{37,119,0}}, +/* 22468 */ {(13<<2)|2,{37,119,0}}, +/* 22469 */ {(13<<2)|2,{37,119,0}}, +/* 22470 */ {(13<<2)|2,{37,119,0}}, +/* 22471 */ {(13<<2)|2,{37,119,0}}, +/* 22472 */ {(13<<2)|2,{37,120,0}}, +/* 22473 */ {(13<<2)|2,{37,120,0}}, +/* 22474 */ {(13<<2)|2,{37,120,0}}, +/* 22475 */ {(13<<2)|2,{37,120,0}}, +/* 22476 */ {(13<<2)|2,{37,120,0}}, +/* 22477 */ {(13<<2)|2,{37,120,0}}, +/* 22478 */ {(13<<2)|2,{37,120,0}}, +/* 22479 */ {(13<<2)|2,{37,120,0}}, +/* 22480 */ {(13<<2)|2,{37,121,0}}, +/* 22481 */ {(13<<2)|2,{37,121,0}}, +/* 22482 */ {(13<<2)|2,{37,121,0}}, +/* 22483 */ {(13<<2)|2,{37,121,0}}, +/* 22484 */ {(13<<2)|2,{37,121,0}}, +/* 22485 */ {(13<<2)|2,{37,121,0}}, +/* 22486 */ {(13<<2)|2,{37,121,0}}, +/* 22487 */ {(13<<2)|2,{37,121,0}}, +/* 22488 */ {(13<<2)|2,{37,122,0}}, +/* 22489 */ {(13<<2)|2,{37,122,0}}, +/* 22490 */ {(13<<2)|2,{37,122,0}}, +/* 22491 */ {(13<<2)|2,{37,122,0}}, +/* 22492 */ {(13<<2)|2,{37,122,0}}, +/* 22493 */ {(13<<2)|2,{37,122,0}}, +/* 22494 */ {(13<<2)|2,{37,122,0}}, +/* 22495 */ {(13<<2)|2,{37,122,0}}, +/* 22496 */ {(14<<2)|2,{37,38,0}}, +/* 22497 */ {(14<<2)|2,{37,38,0}}, +/* 22498 */ {(14<<2)|2,{37,38,0}}, +/* 22499 */ {(14<<2)|2,{37,38,0}}, +/* 22500 */ {(14<<2)|2,{37,42,0}}, +/* 22501 */ {(14<<2)|2,{37,42,0}}, +/* 22502 */ {(14<<2)|2,{37,42,0}}, +/* 22503 */ {(14<<2)|2,{37,42,0}}, +/* 22504 */ {(14<<2)|2,{37,44,0}}, +/* 22505 */ {(14<<2)|2,{37,44,0}}, +/* 22506 */ {(14<<2)|2,{37,44,0}}, +/* 22507 */ {(14<<2)|2,{37,44,0}}, +/* 22508 */ {(14<<2)|2,{37,59,0}}, +/* 22509 */ {(14<<2)|2,{37,59,0}}, +/* 22510 */ {(14<<2)|2,{37,59,0}}, +/* 22511 */ {(14<<2)|2,{37,59,0}}, +/* 22512 */ {(14<<2)|2,{37,88,0}}, +/* 22513 */ {(14<<2)|2,{37,88,0}}, +/* 22514 */ {(14<<2)|2,{37,88,0}}, +/* 22515 */ {(14<<2)|2,{37,88,0}}, +/* 22516 */ {(14<<2)|2,{37,90,0}}, +/* 22517 */ {(14<<2)|2,{37,90,0}}, +/* 22518 */ {(14<<2)|2,{37,90,0}}, +/* 22519 */ {(14<<2)|2,{37,90,0}}, +/* 22520 */ {(16<<2)|2,{37,33,0}}, +/* 22521 */ {(16<<2)|2,{37,34,0}}, +/* 22522 */ {(16<<2)|2,{37,40,0}}, +/* 22523 */ {(16<<2)|2,{37,41,0}}, +/* 22524 */ {(16<<2)|2,{37,63,0}}, +/* 22525 */ {(6<<2)|1,{37,0,0}}, +/* 22526 */ {(6<<2)|1,{37,0,0}}, +/* 22527 */ {(6<<2)|1,{37,0,0}}, +/* 22528 */ {(16<<2)|3,{45,48,48}}, +/* 22529 */ {(16<<2)|3,{45,48,49}}, +/* 22530 */ {(16<<2)|3,{45,48,50}}, +/* 22531 */ {(16<<2)|3,{45,48,97}}, +/* 22532 */ {(16<<2)|3,{45,48,99}}, +/* 22533 */ {(16<<2)|3,{45,48,101}}, +/* 22534 */ {(16<<2)|3,{45,48,105}}, +/* 22535 */ {(16<<2)|3,{45,48,111}}, +/* 22536 */ {(16<<2)|3,{45,48,115}}, +/* 22537 */ {(16<<2)|3,{45,48,116}}, +/* 22538 */ {(11<<2)|2,{45,48,0}}, +/* 22539 */ {(11<<2)|2,{45,48,0}}, +/* 22540 */ {(11<<2)|2,{45,48,0}}, +/* 22541 */ {(11<<2)|2,{45,48,0}}, +/* 22542 */ {(11<<2)|2,{45,48,0}}, +/* 22543 */ {(11<<2)|2,{45,48,0}}, +/* 22544 */ {(11<<2)|2,{45,48,0}}, +/* 22545 */ {(11<<2)|2,{45,48,0}}, +/* 22546 */ {(11<<2)|2,{45,48,0}}, +/* 22547 */ {(11<<2)|2,{45,48,0}}, +/* 22548 */ {(11<<2)|2,{45,48,0}}, +/* 22549 */ {(11<<2)|2,{45,48,0}}, +/* 22550 */ {(11<<2)|2,{45,48,0}}, +/* 22551 */ {(11<<2)|2,{45,48,0}}, +/* 22552 */ {(11<<2)|2,{45,48,0}}, +/* 22553 */ {(11<<2)|2,{45,48,0}}, +/* 22554 */ {(11<<2)|2,{45,48,0}}, +/* 22555 */ {(11<<2)|2,{45,48,0}}, +/* 22556 */ {(11<<2)|2,{45,48,0}}, +/* 22557 */ {(11<<2)|2,{45,48,0}}, +/* 22558 */ {(11<<2)|2,{45,48,0}}, +/* 22559 */ {(11<<2)|2,{45,48,0}}, +/* 22560 */ {(16<<2)|3,{45,49,48}}, +/* 22561 */ {(16<<2)|3,{45,49,49}}, +/* 22562 */ {(16<<2)|3,{45,49,50}}, +/* 22563 */ {(16<<2)|3,{45,49,97}}, +/* 22564 */ {(16<<2)|3,{45,49,99}}, +/* 22565 */ {(16<<2)|3,{45,49,101}}, +/* 22566 */ {(16<<2)|3,{45,49,105}}, +/* 22567 */ {(16<<2)|3,{45,49,111}}, +/* 22568 */ {(16<<2)|3,{45,49,115}}, +/* 22569 */ {(16<<2)|3,{45,49,116}}, +/* 22570 */ {(11<<2)|2,{45,49,0}}, +/* 22571 */ {(11<<2)|2,{45,49,0}}, +/* 22572 */ {(11<<2)|2,{45,49,0}}, +/* 22573 */ {(11<<2)|2,{45,49,0}}, +/* 22574 */ {(11<<2)|2,{45,49,0}}, +/* 22575 */ {(11<<2)|2,{45,49,0}}, +/* 22576 */ {(11<<2)|2,{45,49,0}}, +/* 22577 */ {(11<<2)|2,{45,49,0}}, +/* 22578 */ {(11<<2)|2,{45,49,0}}, +/* 22579 */ {(11<<2)|2,{45,49,0}}, +/* 22580 */ {(11<<2)|2,{45,49,0}}, +/* 22581 */ {(11<<2)|2,{45,49,0}}, +/* 22582 */ {(11<<2)|2,{45,49,0}}, +/* 22583 */ {(11<<2)|2,{45,49,0}}, +/* 22584 */ {(11<<2)|2,{45,49,0}}, +/* 22585 */ {(11<<2)|2,{45,49,0}}, +/* 22586 */ {(11<<2)|2,{45,49,0}}, +/* 22587 */ {(11<<2)|2,{45,49,0}}, +/* 22588 */ {(11<<2)|2,{45,49,0}}, +/* 22589 */ {(11<<2)|2,{45,49,0}}, +/* 22590 */ {(11<<2)|2,{45,49,0}}, +/* 22591 */ {(11<<2)|2,{45,49,0}}, +/* 22592 */ {(16<<2)|3,{45,50,48}}, +/* 22593 */ {(16<<2)|3,{45,50,49}}, +/* 22594 */ {(16<<2)|3,{45,50,50}}, +/* 22595 */ {(16<<2)|3,{45,50,97}}, +/* 22596 */ {(16<<2)|3,{45,50,99}}, +/* 22597 */ {(16<<2)|3,{45,50,101}}, +/* 22598 */ {(16<<2)|3,{45,50,105}}, +/* 22599 */ {(16<<2)|3,{45,50,111}}, +/* 22600 */ {(16<<2)|3,{45,50,115}}, +/* 22601 */ {(16<<2)|3,{45,50,116}}, +/* 22602 */ {(11<<2)|2,{45,50,0}}, +/* 22603 */ {(11<<2)|2,{45,50,0}}, +/* 22604 */ {(11<<2)|2,{45,50,0}}, +/* 22605 */ {(11<<2)|2,{45,50,0}}, +/* 22606 */ {(11<<2)|2,{45,50,0}}, +/* 22607 */ {(11<<2)|2,{45,50,0}}, +/* 22608 */ {(11<<2)|2,{45,50,0}}, +/* 22609 */ {(11<<2)|2,{45,50,0}}, +/* 22610 */ {(11<<2)|2,{45,50,0}}, +/* 22611 */ {(11<<2)|2,{45,50,0}}, +/* 22612 */ {(11<<2)|2,{45,50,0}}, +/* 22613 */ {(11<<2)|2,{45,50,0}}, +/* 22614 */ {(11<<2)|2,{45,50,0}}, +/* 22615 */ {(11<<2)|2,{45,50,0}}, +/* 22616 */ {(11<<2)|2,{45,50,0}}, +/* 22617 */ {(11<<2)|2,{45,50,0}}, +/* 22618 */ {(11<<2)|2,{45,50,0}}, +/* 22619 */ {(11<<2)|2,{45,50,0}}, +/* 22620 */ {(11<<2)|2,{45,50,0}}, +/* 22621 */ {(11<<2)|2,{45,50,0}}, +/* 22622 */ {(11<<2)|2,{45,50,0}}, +/* 22623 */ {(11<<2)|2,{45,50,0}}, +/* 22624 */ {(16<<2)|3,{45,97,48}}, +/* 22625 */ {(16<<2)|3,{45,97,49}}, +/* 22626 */ {(16<<2)|3,{45,97,50}}, +/* 22627 */ {(16<<2)|3,{45,97,97}}, +/* 22628 */ {(16<<2)|3,{45,97,99}}, +/* 22629 */ {(16<<2)|3,{45,97,101}}, +/* 22630 */ {(16<<2)|3,{45,97,105}}, +/* 22631 */ {(16<<2)|3,{45,97,111}}, +/* 22632 */ {(16<<2)|3,{45,97,115}}, +/* 22633 */ {(16<<2)|3,{45,97,116}}, +/* 22634 */ {(11<<2)|2,{45,97,0}}, +/* 22635 */ {(11<<2)|2,{45,97,0}}, +/* 22636 */ {(11<<2)|2,{45,97,0}}, +/* 22637 */ {(11<<2)|2,{45,97,0}}, +/* 22638 */ {(11<<2)|2,{45,97,0}}, +/* 22639 */ {(11<<2)|2,{45,97,0}}, +/* 22640 */ {(11<<2)|2,{45,97,0}}, +/* 22641 */ {(11<<2)|2,{45,97,0}}, +/* 22642 */ {(11<<2)|2,{45,97,0}}, +/* 22643 */ {(11<<2)|2,{45,97,0}}, +/* 22644 */ {(11<<2)|2,{45,97,0}}, +/* 22645 */ {(11<<2)|2,{45,97,0}}, +/* 22646 */ {(11<<2)|2,{45,97,0}}, +/* 22647 */ {(11<<2)|2,{45,97,0}}, +/* 22648 */ {(11<<2)|2,{45,97,0}}, +/* 22649 */ {(11<<2)|2,{45,97,0}}, +/* 22650 */ {(11<<2)|2,{45,97,0}}, +/* 22651 */ {(11<<2)|2,{45,97,0}}, +/* 22652 */ {(11<<2)|2,{45,97,0}}, +/* 22653 */ {(11<<2)|2,{45,97,0}}, +/* 22654 */ {(11<<2)|2,{45,97,0}}, +/* 22655 */ {(11<<2)|2,{45,97,0}}, +/* 22656 */ {(16<<2)|3,{45,99,48}}, +/* 22657 */ {(16<<2)|3,{45,99,49}}, +/* 22658 */ {(16<<2)|3,{45,99,50}}, +/* 22659 */ {(16<<2)|3,{45,99,97}}, +/* 22660 */ {(16<<2)|3,{45,99,99}}, +/* 22661 */ {(16<<2)|3,{45,99,101}}, +/* 22662 */ {(16<<2)|3,{45,99,105}}, +/* 22663 */ {(16<<2)|3,{45,99,111}}, +/* 22664 */ {(16<<2)|3,{45,99,115}}, +/* 22665 */ {(16<<2)|3,{45,99,116}}, +/* 22666 */ {(11<<2)|2,{45,99,0}}, +/* 22667 */ {(11<<2)|2,{45,99,0}}, +/* 22668 */ {(11<<2)|2,{45,99,0}}, +/* 22669 */ {(11<<2)|2,{45,99,0}}, +/* 22670 */ {(11<<2)|2,{45,99,0}}, +/* 22671 */ {(11<<2)|2,{45,99,0}}, +/* 22672 */ {(11<<2)|2,{45,99,0}}, +/* 22673 */ {(11<<2)|2,{45,99,0}}, +/* 22674 */ {(11<<2)|2,{45,99,0}}, +/* 22675 */ {(11<<2)|2,{45,99,0}}, +/* 22676 */ {(11<<2)|2,{45,99,0}}, +/* 22677 */ {(11<<2)|2,{45,99,0}}, +/* 22678 */ {(11<<2)|2,{45,99,0}}, +/* 22679 */ {(11<<2)|2,{45,99,0}}, +/* 22680 */ {(11<<2)|2,{45,99,0}}, +/* 22681 */ {(11<<2)|2,{45,99,0}}, +/* 22682 */ {(11<<2)|2,{45,99,0}}, +/* 22683 */ {(11<<2)|2,{45,99,0}}, +/* 22684 */ {(11<<2)|2,{45,99,0}}, +/* 22685 */ {(11<<2)|2,{45,99,0}}, +/* 22686 */ {(11<<2)|2,{45,99,0}}, +/* 22687 */ {(11<<2)|2,{45,99,0}}, +/* 22688 */ {(16<<2)|3,{45,101,48}}, +/* 22689 */ {(16<<2)|3,{45,101,49}}, +/* 22690 */ {(16<<2)|3,{45,101,50}}, +/* 22691 */ {(16<<2)|3,{45,101,97}}, +/* 22692 */ {(16<<2)|3,{45,101,99}}, +/* 22693 */ {(16<<2)|3,{45,101,101}}, +/* 22694 */ {(16<<2)|3,{45,101,105}}, +/* 22695 */ {(16<<2)|3,{45,101,111}}, +/* 22696 */ {(16<<2)|3,{45,101,115}}, +/* 22697 */ {(16<<2)|3,{45,101,116}}, +/* 22698 */ {(11<<2)|2,{45,101,0}}, +/* 22699 */ {(11<<2)|2,{45,101,0}}, +/* 22700 */ {(11<<2)|2,{45,101,0}}, +/* 22701 */ {(11<<2)|2,{45,101,0}}, +/* 22702 */ {(11<<2)|2,{45,101,0}}, +/* 22703 */ {(11<<2)|2,{45,101,0}}, +/* 22704 */ {(11<<2)|2,{45,101,0}}, +/* 22705 */ {(11<<2)|2,{45,101,0}}, +/* 22706 */ {(11<<2)|2,{45,101,0}}, +/* 22707 */ {(11<<2)|2,{45,101,0}}, +/* 22708 */ {(11<<2)|2,{45,101,0}}, +/* 22709 */ {(11<<2)|2,{45,101,0}}, +/* 22710 */ {(11<<2)|2,{45,101,0}}, +/* 22711 */ {(11<<2)|2,{45,101,0}}, +/* 22712 */ {(11<<2)|2,{45,101,0}}, +/* 22713 */ {(11<<2)|2,{45,101,0}}, +/* 22714 */ {(11<<2)|2,{45,101,0}}, +/* 22715 */ {(11<<2)|2,{45,101,0}}, +/* 22716 */ {(11<<2)|2,{45,101,0}}, +/* 22717 */ {(11<<2)|2,{45,101,0}}, +/* 22718 */ {(11<<2)|2,{45,101,0}}, +/* 22719 */ {(11<<2)|2,{45,101,0}}, +/* 22720 */ {(16<<2)|3,{45,105,48}}, +/* 22721 */ {(16<<2)|3,{45,105,49}}, +/* 22722 */ {(16<<2)|3,{45,105,50}}, +/* 22723 */ {(16<<2)|3,{45,105,97}}, +/* 22724 */ {(16<<2)|3,{45,105,99}}, +/* 22725 */ {(16<<2)|3,{45,105,101}}, +/* 22726 */ {(16<<2)|3,{45,105,105}}, +/* 22727 */ {(16<<2)|3,{45,105,111}}, +/* 22728 */ {(16<<2)|3,{45,105,115}}, +/* 22729 */ {(16<<2)|3,{45,105,116}}, +/* 22730 */ {(11<<2)|2,{45,105,0}}, +/* 22731 */ {(11<<2)|2,{45,105,0}}, +/* 22732 */ {(11<<2)|2,{45,105,0}}, +/* 22733 */ {(11<<2)|2,{45,105,0}}, +/* 22734 */ {(11<<2)|2,{45,105,0}}, +/* 22735 */ {(11<<2)|2,{45,105,0}}, +/* 22736 */ {(11<<2)|2,{45,105,0}}, +/* 22737 */ {(11<<2)|2,{45,105,0}}, +/* 22738 */ {(11<<2)|2,{45,105,0}}, +/* 22739 */ {(11<<2)|2,{45,105,0}}, +/* 22740 */ {(11<<2)|2,{45,105,0}}, +/* 22741 */ {(11<<2)|2,{45,105,0}}, +/* 22742 */ {(11<<2)|2,{45,105,0}}, +/* 22743 */ {(11<<2)|2,{45,105,0}}, +/* 22744 */ {(11<<2)|2,{45,105,0}}, +/* 22745 */ {(11<<2)|2,{45,105,0}}, +/* 22746 */ {(11<<2)|2,{45,105,0}}, +/* 22747 */ {(11<<2)|2,{45,105,0}}, +/* 22748 */ {(11<<2)|2,{45,105,0}}, +/* 22749 */ {(11<<2)|2,{45,105,0}}, +/* 22750 */ {(11<<2)|2,{45,105,0}}, +/* 22751 */ {(11<<2)|2,{45,105,0}}, +/* 22752 */ {(16<<2)|3,{45,111,48}}, +/* 22753 */ {(16<<2)|3,{45,111,49}}, +/* 22754 */ {(16<<2)|3,{45,111,50}}, +/* 22755 */ {(16<<2)|3,{45,111,97}}, +/* 22756 */ {(16<<2)|3,{45,111,99}}, +/* 22757 */ {(16<<2)|3,{45,111,101}}, +/* 22758 */ {(16<<2)|3,{45,111,105}}, +/* 22759 */ {(16<<2)|3,{45,111,111}}, +/* 22760 */ {(16<<2)|3,{45,111,115}}, +/* 22761 */ {(16<<2)|3,{45,111,116}}, +/* 22762 */ {(11<<2)|2,{45,111,0}}, +/* 22763 */ {(11<<2)|2,{45,111,0}}, +/* 22764 */ {(11<<2)|2,{45,111,0}}, +/* 22765 */ {(11<<2)|2,{45,111,0}}, +/* 22766 */ {(11<<2)|2,{45,111,0}}, +/* 22767 */ {(11<<2)|2,{45,111,0}}, +/* 22768 */ {(11<<2)|2,{45,111,0}}, +/* 22769 */ {(11<<2)|2,{45,111,0}}, +/* 22770 */ {(11<<2)|2,{45,111,0}}, +/* 22771 */ {(11<<2)|2,{45,111,0}}, +/* 22772 */ {(11<<2)|2,{45,111,0}}, +/* 22773 */ {(11<<2)|2,{45,111,0}}, +/* 22774 */ {(11<<2)|2,{45,111,0}}, +/* 22775 */ {(11<<2)|2,{45,111,0}}, +/* 22776 */ {(11<<2)|2,{45,111,0}}, +/* 22777 */ {(11<<2)|2,{45,111,0}}, +/* 22778 */ {(11<<2)|2,{45,111,0}}, +/* 22779 */ {(11<<2)|2,{45,111,0}}, +/* 22780 */ {(11<<2)|2,{45,111,0}}, +/* 22781 */ {(11<<2)|2,{45,111,0}}, +/* 22782 */ {(11<<2)|2,{45,111,0}}, +/* 22783 */ {(11<<2)|2,{45,111,0}}, +/* 22784 */ {(16<<2)|3,{45,115,48}}, +/* 22785 */ {(16<<2)|3,{45,115,49}}, +/* 22786 */ {(16<<2)|3,{45,115,50}}, +/* 22787 */ {(16<<2)|3,{45,115,97}}, +/* 22788 */ {(16<<2)|3,{45,115,99}}, +/* 22789 */ {(16<<2)|3,{45,115,101}}, +/* 22790 */ {(16<<2)|3,{45,115,105}}, +/* 22791 */ {(16<<2)|3,{45,115,111}}, +/* 22792 */ {(16<<2)|3,{45,115,115}}, +/* 22793 */ {(16<<2)|3,{45,115,116}}, +/* 22794 */ {(11<<2)|2,{45,115,0}}, +/* 22795 */ {(11<<2)|2,{45,115,0}}, +/* 22796 */ {(11<<2)|2,{45,115,0}}, +/* 22797 */ {(11<<2)|2,{45,115,0}}, +/* 22798 */ {(11<<2)|2,{45,115,0}}, +/* 22799 */ {(11<<2)|2,{45,115,0}}, +/* 22800 */ {(11<<2)|2,{45,115,0}}, +/* 22801 */ {(11<<2)|2,{45,115,0}}, +/* 22802 */ {(11<<2)|2,{45,115,0}}, +/* 22803 */ {(11<<2)|2,{45,115,0}}, +/* 22804 */ {(11<<2)|2,{45,115,0}}, +/* 22805 */ {(11<<2)|2,{45,115,0}}, +/* 22806 */ {(11<<2)|2,{45,115,0}}, +/* 22807 */ {(11<<2)|2,{45,115,0}}, +/* 22808 */ {(11<<2)|2,{45,115,0}}, +/* 22809 */ {(11<<2)|2,{45,115,0}}, +/* 22810 */ {(11<<2)|2,{45,115,0}}, +/* 22811 */ {(11<<2)|2,{45,115,0}}, +/* 22812 */ {(11<<2)|2,{45,115,0}}, +/* 22813 */ {(11<<2)|2,{45,115,0}}, +/* 22814 */ {(11<<2)|2,{45,115,0}}, +/* 22815 */ {(11<<2)|2,{45,115,0}}, +/* 22816 */ {(16<<2)|3,{45,116,48}}, +/* 22817 */ {(16<<2)|3,{45,116,49}}, +/* 22818 */ {(16<<2)|3,{45,116,50}}, +/* 22819 */ {(16<<2)|3,{45,116,97}}, +/* 22820 */ {(16<<2)|3,{45,116,99}}, +/* 22821 */ {(16<<2)|3,{45,116,101}}, +/* 22822 */ {(16<<2)|3,{45,116,105}}, +/* 22823 */ {(16<<2)|3,{45,116,111}}, +/* 22824 */ {(16<<2)|3,{45,116,115}}, +/* 22825 */ {(16<<2)|3,{45,116,116}}, +/* 22826 */ {(11<<2)|2,{45,116,0}}, +/* 22827 */ {(11<<2)|2,{45,116,0}}, +/* 22828 */ {(11<<2)|2,{45,116,0}}, +/* 22829 */ {(11<<2)|2,{45,116,0}}, +/* 22830 */ {(11<<2)|2,{45,116,0}}, +/* 22831 */ {(11<<2)|2,{45,116,0}}, +/* 22832 */ {(11<<2)|2,{45,116,0}}, +/* 22833 */ {(11<<2)|2,{45,116,0}}, +/* 22834 */ {(11<<2)|2,{45,116,0}}, +/* 22835 */ {(11<<2)|2,{45,116,0}}, +/* 22836 */ {(11<<2)|2,{45,116,0}}, +/* 22837 */ {(11<<2)|2,{45,116,0}}, +/* 22838 */ {(11<<2)|2,{45,116,0}}, +/* 22839 */ {(11<<2)|2,{45,116,0}}, +/* 22840 */ {(11<<2)|2,{45,116,0}}, +/* 22841 */ {(11<<2)|2,{45,116,0}}, +/* 22842 */ {(11<<2)|2,{45,116,0}}, +/* 22843 */ {(11<<2)|2,{45,116,0}}, +/* 22844 */ {(11<<2)|2,{45,116,0}}, +/* 22845 */ {(11<<2)|2,{45,116,0}}, +/* 22846 */ {(11<<2)|2,{45,116,0}}, +/* 22847 */ {(11<<2)|2,{45,116,0}}, +/* 22848 */ {(12<<2)|2,{45,32,0}}, +/* 22849 */ {(12<<2)|2,{45,32,0}}, +/* 22850 */ {(12<<2)|2,{45,32,0}}, +/* 22851 */ {(12<<2)|2,{45,32,0}}, +/* 22852 */ {(12<<2)|2,{45,32,0}}, +/* 22853 */ {(12<<2)|2,{45,32,0}}, +/* 22854 */ {(12<<2)|2,{45,32,0}}, +/* 22855 */ {(12<<2)|2,{45,32,0}}, +/* 22856 */ {(12<<2)|2,{45,32,0}}, +/* 22857 */ {(12<<2)|2,{45,32,0}}, +/* 22858 */ {(12<<2)|2,{45,32,0}}, +/* 22859 */ {(12<<2)|2,{45,32,0}}, +/* 22860 */ {(12<<2)|2,{45,32,0}}, +/* 22861 */ {(12<<2)|2,{45,32,0}}, +/* 22862 */ {(12<<2)|2,{45,32,0}}, +/* 22863 */ {(12<<2)|2,{45,32,0}}, +/* 22864 */ {(12<<2)|2,{45,37,0}}, +/* 22865 */ {(12<<2)|2,{45,37,0}}, +/* 22866 */ {(12<<2)|2,{45,37,0}}, +/* 22867 */ {(12<<2)|2,{45,37,0}}, +/* 22868 */ {(12<<2)|2,{45,37,0}}, +/* 22869 */ {(12<<2)|2,{45,37,0}}, +/* 22870 */ {(12<<2)|2,{45,37,0}}, +/* 22871 */ {(12<<2)|2,{45,37,0}}, +/* 22872 */ {(12<<2)|2,{45,37,0}}, +/* 22873 */ {(12<<2)|2,{45,37,0}}, +/* 22874 */ {(12<<2)|2,{45,37,0}}, +/* 22875 */ {(12<<2)|2,{45,37,0}}, +/* 22876 */ {(12<<2)|2,{45,37,0}}, +/* 22877 */ {(12<<2)|2,{45,37,0}}, +/* 22878 */ {(12<<2)|2,{45,37,0}}, +/* 22879 */ {(12<<2)|2,{45,37,0}}, +/* 22880 */ {(12<<2)|2,{45,45,0}}, +/* 22881 */ {(12<<2)|2,{45,45,0}}, +/* 22882 */ {(12<<2)|2,{45,45,0}}, +/* 22883 */ {(12<<2)|2,{45,45,0}}, +/* 22884 */ {(12<<2)|2,{45,45,0}}, +/* 22885 */ {(12<<2)|2,{45,45,0}}, +/* 22886 */ {(12<<2)|2,{45,45,0}}, +/* 22887 */ {(12<<2)|2,{45,45,0}}, +/* 22888 */ {(12<<2)|2,{45,45,0}}, +/* 22889 */ {(12<<2)|2,{45,45,0}}, +/* 22890 */ {(12<<2)|2,{45,45,0}}, +/* 22891 */ {(12<<2)|2,{45,45,0}}, +/* 22892 */ {(12<<2)|2,{45,45,0}}, +/* 22893 */ {(12<<2)|2,{45,45,0}}, +/* 22894 */ {(12<<2)|2,{45,45,0}}, +/* 22895 */ {(12<<2)|2,{45,45,0}}, +/* 22896 */ {(12<<2)|2,{45,46,0}}, +/* 22897 */ {(12<<2)|2,{45,46,0}}, +/* 22898 */ {(12<<2)|2,{45,46,0}}, +/* 22899 */ {(12<<2)|2,{45,46,0}}, +/* 22900 */ {(12<<2)|2,{45,46,0}}, +/* 22901 */ {(12<<2)|2,{45,46,0}}, +/* 22902 */ {(12<<2)|2,{45,46,0}}, +/* 22903 */ {(12<<2)|2,{45,46,0}}, +/* 22904 */ {(12<<2)|2,{45,46,0}}, +/* 22905 */ {(12<<2)|2,{45,46,0}}, +/* 22906 */ {(12<<2)|2,{45,46,0}}, +/* 22907 */ {(12<<2)|2,{45,46,0}}, +/* 22908 */ {(12<<2)|2,{45,46,0}}, +/* 22909 */ {(12<<2)|2,{45,46,0}}, +/* 22910 */ {(12<<2)|2,{45,46,0}}, +/* 22911 */ {(12<<2)|2,{45,46,0}}, +/* 22912 */ {(12<<2)|2,{45,47,0}}, +/* 22913 */ {(12<<2)|2,{45,47,0}}, +/* 22914 */ {(12<<2)|2,{45,47,0}}, +/* 22915 */ {(12<<2)|2,{45,47,0}}, +/* 22916 */ {(12<<2)|2,{45,47,0}}, +/* 22917 */ {(12<<2)|2,{45,47,0}}, +/* 22918 */ {(12<<2)|2,{45,47,0}}, +/* 22919 */ {(12<<2)|2,{45,47,0}}, +/* 22920 */ {(12<<2)|2,{45,47,0}}, +/* 22921 */ {(12<<2)|2,{45,47,0}}, +/* 22922 */ {(12<<2)|2,{45,47,0}}, +/* 22923 */ {(12<<2)|2,{45,47,0}}, +/* 22924 */ {(12<<2)|2,{45,47,0}}, +/* 22925 */ {(12<<2)|2,{45,47,0}}, +/* 22926 */ {(12<<2)|2,{45,47,0}}, +/* 22927 */ {(12<<2)|2,{45,47,0}}, +/* 22928 */ {(12<<2)|2,{45,51,0}}, +/* 22929 */ {(12<<2)|2,{45,51,0}}, +/* 22930 */ {(12<<2)|2,{45,51,0}}, +/* 22931 */ {(12<<2)|2,{45,51,0}}, +/* 22932 */ {(12<<2)|2,{45,51,0}}, +/* 22933 */ {(12<<2)|2,{45,51,0}}, +/* 22934 */ {(12<<2)|2,{45,51,0}}, +/* 22935 */ {(12<<2)|2,{45,51,0}}, +/* 22936 */ {(12<<2)|2,{45,51,0}}, +/* 22937 */ {(12<<2)|2,{45,51,0}}, +/* 22938 */ {(12<<2)|2,{45,51,0}}, +/* 22939 */ {(12<<2)|2,{45,51,0}}, +/* 22940 */ {(12<<2)|2,{45,51,0}}, +/* 22941 */ {(12<<2)|2,{45,51,0}}, +/* 22942 */ {(12<<2)|2,{45,51,0}}, +/* 22943 */ {(12<<2)|2,{45,51,0}}, +/* 22944 */ {(12<<2)|2,{45,52,0}}, +/* 22945 */ {(12<<2)|2,{45,52,0}}, +/* 22946 */ {(12<<2)|2,{45,52,0}}, +/* 22947 */ {(12<<2)|2,{45,52,0}}, +/* 22948 */ {(12<<2)|2,{45,52,0}}, +/* 22949 */ {(12<<2)|2,{45,52,0}}, +/* 22950 */ {(12<<2)|2,{45,52,0}}, +/* 22951 */ {(12<<2)|2,{45,52,0}}, +/* 22952 */ {(12<<2)|2,{45,52,0}}, +/* 22953 */ {(12<<2)|2,{45,52,0}}, +/* 22954 */ {(12<<2)|2,{45,52,0}}, +/* 22955 */ {(12<<2)|2,{45,52,0}}, +/* 22956 */ {(12<<2)|2,{45,52,0}}, +/* 22957 */ {(12<<2)|2,{45,52,0}}, +/* 22958 */ {(12<<2)|2,{45,52,0}}, +/* 22959 */ {(12<<2)|2,{45,52,0}}, +/* 22960 */ {(12<<2)|2,{45,53,0}}, +/* 22961 */ {(12<<2)|2,{45,53,0}}, +/* 22962 */ {(12<<2)|2,{45,53,0}}, +/* 22963 */ {(12<<2)|2,{45,53,0}}, +/* 22964 */ {(12<<2)|2,{45,53,0}}, +/* 22965 */ {(12<<2)|2,{45,53,0}}, +/* 22966 */ {(12<<2)|2,{45,53,0}}, +/* 22967 */ {(12<<2)|2,{45,53,0}}, +/* 22968 */ {(12<<2)|2,{45,53,0}}, +/* 22969 */ {(12<<2)|2,{45,53,0}}, +/* 22970 */ {(12<<2)|2,{45,53,0}}, +/* 22971 */ {(12<<2)|2,{45,53,0}}, +/* 22972 */ {(12<<2)|2,{45,53,0}}, +/* 22973 */ {(12<<2)|2,{45,53,0}}, +/* 22974 */ {(12<<2)|2,{45,53,0}}, +/* 22975 */ {(12<<2)|2,{45,53,0}}, +/* 22976 */ {(12<<2)|2,{45,54,0}}, +/* 22977 */ {(12<<2)|2,{45,54,0}}, +/* 22978 */ {(12<<2)|2,{45,54,0}}, +/* 22979 */ {(12<<2)|2,{45,54,0}}, +/* 22980 */ {(12<<2)|2,{45,54,0}}, +/* 22981 */ {(12<<2)|2,{45,54,0}}, +/* 22982 */ {(12<<2)|2,{45,54,0}}, +/* 22983 */ {(12<<2)|2,{45,54,0}}, +/* 22984 */ {(12<<2)|2,{45,54,0}}, +/* 22985 */ {(12<<2)|2,{45,54,0}}, +/* 22986 */ {(12<<2)|2,{45,54,0}}, +/* 22987 */ {(12<<2)|2,{45,54,0}}, +/* 22988 */ {(12<<2)|2,{45,54,0}}, +/* 22989 */ {(12<<2)|2,{45,54,0}}, +/* 22990 */ {(12<<2)|2,{45,54,0}}, +/* 22991 */ {(12<<2)|2,{45,54,0}}, +/* 22992 */ {(12<<2)|2,{45,55,0}}, +/* 22993 */ {(12<<2)|2,{45,55,0}}, +/* 22994 */ {(12<<2)|2,{45,55,0}}, +/* 22995 */ {(12<<2)|2,{45,55,0}}, +/* 22996 */ {(12<<2)|2,{45,55,0}}, +/* 22997 */ {(12<<2)|2,{45,55,0}}, +/* 22998 */ {(12<<2)|2,{45,55,0}}, +/* 22999 */ {(12<<2)|2,{45,55,0}}, +/* 23000 */ {(12<<2)|2,{45,55,0}}, +/* 23001 */ {(12<<2)|2,{45,55,0}}, +/* 23002 */ {(12<<2)|2,{45,55,0}}, +/* 23003 */ {(12<<2)|2,{45,55,0}}, +/* 23004 */ {(12<<2)|2,{45,55,0}}, +/* 23005 */ {(12<<2)|2,{45,55,0}}, +/* 23006 */ {(12<<2)|2,{45,55,0}}, +/* 23007 */ {(12<<2)|2,{45,55,0}}, +/* 23008 */ {(12<<2)|2,{45,56,0}}, +/* 23009 */ {(12<<2)|2,{45,56,0}}, +/* 23010 */ {(12<<2)|2,{45,56,0}}, +/* 23011 */ {(12<<2)|2,{45,56,0}}, +/* 23012 */ {(12<<2)|2,{45,56,0}}, +/* 23013 */ {(12<<2)|2,{45,56,0}}, +/* 23014 */ {(12<<2)|2,{45,56,0}}, +/* 23015 */ {(12<<2)|2,{45,56,0}}, +/* 23016 */ {(12<<2)|2,{45,56,0}}, +/* 23017 */ {(12<<2)|2,{45,56,0}}, +/* 23018 */ {(12<<2)|2,{45,56,0}}, +/* 23019 */ {(12<<2)|2,{45,56,0}}, +/* 23020 */ {(12<<2)|2,{45,56,0}}, +/* 23021 */ {(12<<2)|2,{45,56,0}}, +/* 23022 */ {(12<<2)|2,{45,56,0}}, +/* 23023 */ {(12<<2)|2,{45,56,0}}, +/* 23024 */ {(12<<2)|2,{45,57,0}}, +/* 23025 */ {(12<<2)|2,{45,57,0}}, +/* 23026 */ {(12<<2)|2,{45,57,0}}, +/* 23027 */ {(12<<2)|2,{45,57,0}}, +/* 23028 */ {(12<<2)|2,{45,57,0}}, +/* 23029 */ {(12<<2)|2,{45,57,0}}, +/* 23030 */ {(12<<2)|2,{45,57,0}}, +/* 23031 */ {(12<<2)|2,{45,57,0}}, +/* 23032 */ {(12<<2)|2,{45,57,0}}, +/* 23033 */ {(12<<2)|2,{45,57,0}}, +/* 23034 */ {(12<<2)|2,{45,57,0}}, +/* 23035 */ {(12<<2)|2,{45,57,0}}, +/* 23036 */ {(12<<2)|2,{45,57,0}}, +/* 23037 */ {(12<<2)|2,{45,57,0}}, +/* 23038 */ {(12<<2)|2,{45,57,0}}, +/* 23039 */ {(12<<2)|2,{45,57,0}}, +/* 23040 */ {(12<<2)|2,{45,61,0}}, +/* 23041 */ {(12<<2)|2,{45,61,0}}, +/* 23042 */ {(12<<2)|2,{45,61,0}}, +/* 23043 */ {(12<<2)|2,{45,61,0}}, +/* 23044 */ {(12<<2)|2,{45,61,0}}, +/* 23045 */ {(12<<2)|2,{45,61,0}}, +/* 23046 */ {(12<<2)|2,{45,61,0}}, +/* 23047 */ {(12<<2)|2,{45,61,0}}, +/* 23048 */ {(12<<2)|2,{45,61,0}}, +/* 23049 */ {(12<<2)|2,{45,61,0}}, +/* 23050 */ {(12<<2)|2,{45,61,0}}, +/* 23051 */ {(12<<2)|2,{45,61,0}}, +/* 23052 */ {(12<<2)|2,{45,61,0}}, +/* 23053 */ {(12<<2)|2,{45,61,0}}, +/* 23054 */ {(12<<2)|2,{45,61,0}}, +/* 23055 */ {(12<<2)|2,{45,61,0}}, +/* 23056 */ {(12<<2)|2,{45,65,0}}, +/* 23057 */ {(12<<2)|2,{45,65,0}}, +/* 23058 */ {(12<<2)|2,{45,65,0}}, +/* 23059 */ {(12<<2)|2,{45,65,0}}, +/* 23060 */ {(12<<2)|2,{45,65,0}}, +/* 23061 */ {(12<<2)|2,{45,65,0}}, +/* 23062 */ {(12<<2)|2,{45,65,0}}, +/* 23063 */ {(12<<2)|2,{45,65,0}}, +/* 23064 */ {(12<<2)|2,{45,65,0}}, +/* 23065 */ {(12<<2)|2,{45,65,0}}, +/* 23066 */ {(12<<2)|2,{45,65,0}}, +/* 23067 */ {(12<<2)|2,{45,65,0}}, +/* 23068 */ {(12<<2)|2,{45,65,0}}, +/* 23069 */ {(12<<2)|2,{45,65,0}}, +/* 23070 */ {(12<<2)|2,{45,65,0}}, +/* 23071 */ {(12<<2)|2,{45,65,0}}, +/* 23072 */ {(12<<2)|2,{45,95,0}}, +/* 23073 */ {(12<<2)|2,{45,95,0}}, +/* 23074 */ {(12<<2)|2,{45,95,0}}, +/* 23075 */ {(12<<2)|2,{45,95,0}}, +/* 23076 */ {(12<<2)|2,{45,95,0}}, +/* 23077 */ {(12<<2)|2,{45,95,0}}, +/* 23078 */ {(12<<2)|2,{45,95,0}}, +/* 23079 */ {(12<<2)|2,{45,95,0}}, +/* 23080 */ {(12<<2)|2,{45,95,0}}, +/* 23081 */ {(12<<2)|2,{45,95,0}}, +/* 23082 */ {(12<<2)|2,{45,95,0}}, +/* 23083 */ {(12<<2)|2,{45,95,0}}, +/* 23084 */ {(12<<2)|2,{45,95,0}}, +/* 23085 */ {(12<<2)|2,{45,95,0}}, +/* 23086 */ {(12<<2)|2,{45,95,0}}, +/* 23087 */ {(12<<2)|2,{45,95,0}}, +/* 23088 */ {(12<<2)|2,{45,98,0}}, +/* 23089 */ {(12<<2)|2,{45,98,0}}, +/* 23090 */ {(12<<2)|2,{45,98,0}}, +/* 23091 */ {(12<<2)|2,{45,98,0}}, +/* 23092 */ {(12<<2)|2,{45,98,0}}, +/* 23093 */ {(12<<2)|2,{45,98,0}}, +/* 23094 */ {(12<<2)|2,{45,98,0}}, +/* 23095 */ {(12<<2)|2,{45,98,0}}, +/* 23096 */ {(12<<2)|2,{45,98,0}}, +/* 23097 */ {(12<<2)|2,{45,98,0}}, +/* 23098 */ {(12<<2)|2,{45,98,0}}, +/* 23099 */ {(12<<2)|2,{45,98,0}}, +/* 23100 */ {(12<<2)|2,{45,98,0}}, +/* 23101 */ {(12<<2)|2,{45,98,0}}, +/* 23102 */ {(12<<2)|2,{45,98,0}}, +/* 23103 */ {(12<<2)|2,{45,98,0}}, +/* 23104 */ {(12<<2)|2,{45,100,0}}, +/* 23105 */ {(12<<2)|2,{45,100,0}}, +/* 23106 */ {(12<<2)|2,{45,100,0}}, +/* 23107 */ {(12<<2)|2,{45,100,0}}, +/* 23108 */ {(12<<2)|2,{45,100,0}}, +/* 23109 */ {(12<<2)|2,{45,100,0}}, +/* 23110 */ {(12<<2)|2,{45,100,0}}, +/* 23111 */ {(12<<2)|2,{45,100,0}}, +/* 23112 */ {(12<<2)|2,{45,100,0}}, +/* 23113 */ {(12<<2)|2,{45,100,0}}, +/* 23114 */ {(12<<2)|2,{45,100,0}}, +/* 23115 */ {(12<<2)|2,{45,100,0}}, +/* 23116 */ {(12<<2)|2,{45,100,0}}, +/* 23117 */ {(12<<2)|2,{45,100,0}}, +/* 23118 */ {(12<<2)|2,{45,100,0}}, +/* 23119 */ {(12<<2)|2,{45,100,0}}, +/* 23120 */ {(12<<2)|2,{45,102,0}}, +/* 23121 */ {(12<<2)|2,{45,102,0}}, +/* 23122 */ {(12<<2)|2,{45,102,0}}, +/* 23123 */ {(12<<2)|2,{45,102,0}}, +/* 23124 */ {(12<<2)|2,{45,102,0}}, +/* 23125 */ {(12<<2)|2,{45,102,0}}, +/* 23126 */ {(12<<2)|2,{45,102,0}}, +/* 23127 */ {(12<<2)|2,{45,102,0}}, +/* 23128 */ {(12<<2)|2,{45,102,0}}, +/* 23129 */ {(12<<2)|2,{45,102,0}}, +/* 23130 */ {(12<<2)|2,{45,102,0}}, +/* 23131 */ {(12<<2)|2,{45,102,0}}, +/* 23132 */ {(12<<2)|2,{45,102,0}}, +/* 23133 */ {(12<<2)|2,{45,102,0}}, +/* 23134 */ {(12<<2)|2,{45,102,0}}, +/* 23135 */ {(12<<2)|2,{45,102,0}}, +/* 23136 */ {(12<<2)|2,{45,103,0}}, +/* 23137 */ {(12<<2)|2,{45,103,0}}, +/* 23138 */ {(12<<2)|2,{45,103,0}}, +/* 23139 */ {(12<<2)|2,{45,103,0}}, +/* 23140 */ {(12<<2)|2,{45,103,0}}, +/* 23141 */ {(12<<2)|2,{45,103,0}}, +/* 23142 */ {(12<<2)|2,{45,103,0}}, +/* 23143 */ {(12<<2)|2,{45,103,0}}, +/* 23144 */ {(12<<2)|2,{45,103,0}}, +/* 23145 */ {(12<<2)|2,{45,103,0}}, +/* 23146 */ {(12<<2)|2,{45,103,0}}, +/* 23147 */ {(12<<2)|2,{45,103,0}}, +/* 23148 */ {(12<<2)|2,{45,103,0}}, +/* 23149 */ {(12<<2)|2,{45,103,0}}, +/* 23150 */ {(12<<2)|2,{45,103,0}}, +/* 23151 */ {(12<<2)|2,{45,103,0}}, +/* 23152 */ {(12<<2)|2,{45,104,0}}, +/* 23153 */ {(12<<2)|2,{45,104,0}}, +/* 23154 */ {(12<<2)|2,{45,104,0}}, +/* 23155 */ {(12<<2)|2,{45,104,0}}, +/* 23156 */ {(12<<2)|2,{45,104,0}}, +/* 23157 */ {(12<<2)|2,{45,104,0}}, +/* 23158 */ {(12<<2)|2,{45,104,0}}, +/* 23159 */ {(12<<2)|2,{45,104,0}}, +/* 23160 */ {(12<<2)|2,{45,104,0}}, +/* 23161 */ {(12<<2)|2,{45,104,0}}, +/* 23162 */ {(12<<2)|2,{45,104,0}}, +/* 23163 */ {(12<<2)|2,{45,104,0}}, +/* 23164 */ {(12<<2)|2,{45,104,0}}, +/* 23165 */ {(12<<2)|2,{45,104,0}}, +/* 23166 */ {(12<<2)|2,{45,104,0}}, +/* 23167 */ {(12<<2)|2,{45,104,0}}, +/* 23168 */ {(12<<2)|2,{45,108,0}}, +/* 23169 */ {(12<<2)|2,{45,108,0}}, +/* 23170 */ {(12<<2)|2,{45,108,0}}, +/* 23171 */ {(12<<2)|2,{45,108,0}}, +/* 23172 */ {(12<<2)|2,{45,108,0}}, +/* 23173 */ {(12<<2)|2,{45,108,0}}, +/* 23174 */ {(12<<2)|2,{45,108,0}}, +/* 23175 */ {(12<<2)|2,{45,108,0}}, +/* 23176 */ {(12<<2)|2,{45,108,0}}, +/* 23177 */ {(12<<2)|2,{45,108,0}}, +/* 23178 */ {(12<<2)|2,{45,108,0}}, +/* 23179 */ {(12<<2)|2,{45,108,0}}, +/* 23180 */ {(12<<2)|2,{45,108,0}}, +/* 23181 */ {(12<<2)|2,{45,108,0}}, +/* 23182 */ {(12<<2)|2,{45,108,0}}, +/* 23183 */ {(12<<2)|2,{45,108,0}}, +/* 23184 */ {(12<<2)|2,{45,109,0}}, +/* 23185 */ {(12<<2)|2,{45,109,0}}, +/* 23186 */ {(12<<2)|2,{45,109,0}}, +/* 23187 */ {(12<<2)|2,{45,109,0}}, +/* 23188 */ {(12<<2)|2,{45,109,0}}, +/* 23189 */ {(12<<2)|2,{45,109,0}}, +/* 23190 */ {(12<<2)|2,{45,109,0}}, +/* 23191 */ {(12<<2)|2,{45,109,0}}, +/* 23192 */ {(12<<2)|2,{45,109,0}}, +/* 23193 */ {(12<<2)|2,{45,109,0}}, +/* 23194 */ {(12<<2)|2,{45,109,0}}, +/* 23195 */ {(12<<2)|2,{45,109,0}}, +/* 23196 */ {(12<<2)|2,{45,109,0}}, +/* 23197 */ {(12<<2)|2,{45,109,0}}, +/* 23198 */ {(12<<2)|2,{45,109,0}}, +/* 23199 */ {(12<<2)|2,{45,109,0}}, +/* 23200 */ {(12<<2)|2,{45,110,0}}, +/* 23201 */ {(12<<2)|2,{45,110,0}}, +/* 23202 */ {(12<<2)|2,{45,110,0}}, +/* 23203 */ {(12<<2)|2,{45,110,0}}, +/* 23204 */ {(12<<2)|2,{45,110,0}}, +/* 23205 */ {(12<<2)|2,{45,110,0}}, +/* 23206 */ {(12<<2)|2,{45,110,0}}, +/* 23207 */ {(12<<2)|2,{45,110,0}}, +/* 23208 */ {(12<<2)|2,{45,110,0}}, +/* 23209 */ {(12<<2)|2,{45,110,0}}, +/* 23210 */ {(12<<2)|2,{45,110,0}}, +/* 23211 */ {(12<<2)|2,{45,110,0}}, +/* 23212 */ {(12<<2)|2,{45,110,0}}, +/* 23213 */ {(12<<2)|2,{45,110,0}}, +/* 23214 */ {(12<<2)|2,{45,110,0}}, +/* 23215 */ {(12<<2)|2,{45,110,0}}, +/* 23216 */ {(12<<2)|2,{45,112,0}}, +/* 23217 */ {(12<<2)|2,{45,112,0}}, +/* 23218 */ {(12<<2)|2,{45,112,0}}, +/* 23219 */ {(12<<2)|2,{45,112,0}}, +/* 23220 */ {(12<<2)|2,{45,112,0}}, +/* 23221 */ {(12<<2)|2,{45,112,0}}, +/* 23222 */ {(12<<2)|2,{45,112,0}}, +/* 23223 */ {(12<<2)|2,{45,112,0}}, +/* 23224 */ {(12<<2)|2,{45,112,0}}, +/* 23225 */ {(12<<2)|2,{45,112,0}}, +/* 23226 */ {(12<<2)|2,{45,112,0}}, +/* 23227 */ {(12<<2)|2,{45,112,0}}, +/* 23228 */ {(12<<2)|2,{45,112,0}}, +/* 23229 */ {(12<<2)|2,{45,112,0}}, +/* 23230 */ {(12<<2)|2,{45,112,0}}, +/* 23231 */ {(12<<2)|2,{45,112,0}}, +/* 23232 */ {(12<<2)|2,{45,114,0}}, +/* 23233 */ {(12<<2)|2,{45,114,0}}, +/* 23234 */ {(12<<2)|2,{45,114,0}}, +/* 23235 */ {(12<<2)|2,{45,114,0}}, +/* 23236 */ {(12<<2)|2,{45,114,0}}, +/* 23237 */ {(12<<2)|2,{45,114,0}}, +/* 23238 */ {(12<<2)|2,{45,114,0}}, +/* 23239 */ {(12<<2)|2,{45,114,0}}, +/* 23240 */ {(12<<2)|2,{45,114,0}}, +/* 23241 */ {(12<<2)|2,{45,114,0}}, +/* 23242 */ {(12<<2)|2,{45,114,0}}, +/* 23243 */ {(12<<2)|2,{45,114,0}}, +/* 23244 */ {(12<<2)|2,{45,114,0}}, +/* 23245 */ {(12<<2)|2,{45,114,0}}, +/* 23246 */ {(12<<2)|2,{45,114,0}}, +/* 23247 */ {(12<<2)|2,{45,114,0}}, +/* 23248 */ {(12<<2)|2,{45,117,0}}, +/* 23249 */ {(12<<2)|2,{45,117,0}}, +/* 23250 */ {(12<<2)|2,{45,117,0}}, +/* 23251 */ {(12<<2)|2,{45,117,0}}, +/* 23252 */ {(12<<2)|2,{45,117,0}}, +/* 23253 */ {(12<<2)|2,{45,117,0}}, +/* 23254 */ {(12<<2)|2,{45,117,0}}, +/* 23255 */ {(12<<2)|2,{45,117,0}}, +/* 23256 */ {(12<<2)|2,{45,117,0}}, +/* 23257 */ {(12<<2)|2,{45,117,0}}, +/* 23258 */ {(12<<2)|2,{45,117,0}}, +/* 23259 */ {(12<<2)|2,{45,117,0}}, +/* 23260 */ {(12<<2)|2,{45,117,0}}, +/* 23261 */ {(12<<2)|2,{45,117,0}}, +/* 23262 */ {(12<<2)|2,{45,117,0}}, +/* 23263 */ {(12<<2)|2,{45,117,0}}, +/* 23264 */ {(13<<2)|2,{45,58,0}}, +/* 23265 */ {(13<<2)|2,{45,58,0}}, +/* 23266 */ {(13<<2)|2,{45,58,0}}, +/* 23267 */ {(13<<2)|2,{45,58,0}}, +/* 23268 */ {(13<<2)|2,{45,58,0}}, +/* 23269 */ {(13<<2)|2,{45,58,0}}, +/* 23270 */ {(13<<2)|2,{45,58,0}}, +/* 23271 */ {(13<<2)|2,{45,58,0}}, +/* 23272 */ {(13<<2)|2,{45,66,0}}, +/* 23273 */ {(13<<2)|2,{45,66,0}}, +/* 23274 */ {(13<<2)|2,{45,66,0}}, +/* 23275 */ {(13<<2)|2,{45,66,0}}, +/* 23276 */ {(13<<2)|2,{45,66,0}}, +/* 23277 */ {(13<<2)|2,{45,66,0}}, +/* 23278 */ {(13<<2)|2,{45,66,0}}, +/* 23279 */ {(13<<2)|2,{45,66,0}}, +/* 23280 */ {(13<<2)|2,{45,67,0}}, +/* 23281 */ {(13<<2)|2,{45,67,0}}, +/* 23282 */ {(13<<2)|2,{45,67,0}}, +/* 23283 */ {(13<<2)|2,{45,67,0}}, +/* 23284 */ {(13<<2)|2,{45,67,0}}, +/* 23285 */ {(13<<2)|2,{45,67,0}}, +/* 23286 */ {(13<<2)|2,{45,67,0}}, +/* 23287 */ {(13<<2)|2,{45,67,0}}, +/* 23288 */ {(13<<2)|2,{45,68,0}}, +/* 23289 */ {(13<<2)|2,{45,68,0}}, +/* 23290 */ {(13<<2)|2,{45,68,0}}, +/* 23291 */ {(13<<2)|2,{45,68,0}}, +/* 23292 */ {(13<<2)|2,{45,68,0}}, +/* 23293 */ {(13<<2)|2,{45,68,0}}, +/* 23294 */ {(13<<2)|2,{45,68,0}}, +/* 23295 */ {(13<<2)|2,{45,68,0}}, +/* 23296 */ {(13<<2)|2,{45,69,0}}, +/* 23297 */ {(13<<2)|2,{45,69,0}}, +/* 23298 */ {(13<<2)|2,{45,69,0}}, +/* 23299 */ {(13<<2)|2,{45,69,0}}, +/* 23300 */ {(13<<2)|2,{45,69,0}}, +/* 23301 */ {(13<<2)|2,{45,69,0}}, +/* 23302 */ {(13<<2)|2,{45,69,0}}, +/* 23303 */ {(13<<2)|2,{45,69,0}}, +/* 23304 */ {(13<<2)|2,{45,70,0}}, +/* 23305 */ {(13<<2)|2,{45,70,0}}, +/* 23306 */ {(13<<2)|2,{45,70,0}}, +/* 23307 */ {(13<<2)|2,{45,70,0}}, +/* 23308 */ {(13<<2)|2,{45,70,0}}, +/* 23309 */ {(13<<2)|2,{45,70,0}}, +/* 23310 */ {(13<<2)|2,{45,70,0}}, +/* 23311 */ {(13<<2)|2,{45,70,0}}, +/* 23312 */ {(13<<2)|2,{45,71,0}}, +/* 23313 */ {(13<<2)|2,{45,71,0}}, +/* 23314 */ {(13<<2)|2,{45,71,0}}, +/* 23315 */ {(13<<2)|2,{45,71,0}}, +/* 23316 */ {(13<<2)|2,{45,71,0}}, +/* 23317 */ {(13<<2)|2,{45,71,0}}, +/* 23318 */ {(13<<2)|2,{45,71,0}}, +/* 23319 */ {(13<<2)|2,{45,71,0}}, +/* 23320 */ {(13<<2)|2,{45,72,0}}, +/* 23321 */ {(13<<2)|2,{45,72,0}}, +/* 23322 */ {(13<<2)|2,{45,72,0}}, +/* 23323 */ {(13<<2)|2,{45,72,0}}, +/* 23324 */ {(13<<2)|2,{45,72,0}}, +/* 23325 */ {(13<<2)|2,{45,72,0}}, +/* 23326 */ {(13<<2)|2,{45,72,0}}, +/* 23327 */ {(13<<2)|2,{45,72,0}}, +/* 23328 */ {(13<<2)|2,{45,73,0}}, +/* 23329 */ {(13<<2)|2,{45,73,0}}, +/* 23330 */ {(13<<2)|2,{45,73,0}}, +/* 23331 */ {(13<<2)|2,{45,73,0}}, +/* 23332 */ {(13<<2)|2,{45,73,0}}, +/* 23333 */ {(13<<2)|2,{45,73,0}}, +/* 23334 */ {(13<<2)|2,{45,73,0}}, +/* 23335 */ {(13<<2)|2,{45,73,0}}, +/* 23336 */ {(13<<2)|2,{45,74,0}}, +/* 23337 */ {(13<<2)|2,{45,74,0}}, +/* 23338 */ {(13<<2)|2,{45,74,0}}, +/* 23339 */ {(13<<2)|2,{45,74,0}}, +/* 23340 */ {(13<<2)|2,{45,74,0}}, +/* 23341 */ {(13<<2)|2,{45,74,0}}, +/* 23342 */ {(13<<2)|2,{45,74,0}}, +/* 23343 */ {(13<<2)|2,{45,74,0}}, +/* 23344 */ {(13<<2)|2,{45,75,0}}, +/* 23345 */ {(13<<2)|2,{45,75,0}}, +/* 23346 */ {(13<<2)|2,{45,75,0}}, +/* 23347 */ {(13<<2)|2,{45,75,0}}, +/* 23348 */ {(13<<2)|2,{45,75,0}}, +/* 23349 */ {(13<<2)|2,{45,75,0}}, +/* 23350 */ {(13<<2)|2,{45,75,0}}, +/* 23351 */ {(13<<2)|2,{45,75,0}}, +/* 23352 */ {(13<<2)|2,{45,76,0}}, +/* 23353 */ {(13<<2)|2,{45,76,0}}, +/* 23354 */ {(13<<2)|2,{45,76,0}}, +/* 23355 */ {(13<<2)|2,{45,76,0}}, +/* 23356 */ {(13<<2)|2,{45,76,0}}, +/* 23357 */ {(13<<2)|2,{45,76,0}}, +/* 23358 */ {(13<<2)|2,{45,76,0}}, +/* 23359 */ {(13<<2)|2,{45,76,0}}, +/* 23360 */ {(13<<2)|2,{45,77,0}}, +/* 23361 */ {(13<<2)|2,{45,77,0}}, +/* 23362 */ {(13<<2)|2,{45,77,0}}, +/* 23363 */ {(13<<2)|2,{45,77,0}}, +/* 23364 */ {(13<<2)|2,{45,77,0}}, +/* 23365 */ {(13<<2)|2,{45,77,0}}, +/* 23366 */ {(13<<2)|2,{45,77,0}}, +/* 23367 */ {(13<<2)|2,{45,77,0}}, +/* 23368 */ {(13<<2)|2,{45,78,0}}, +/* 23369 */ {(13<<2)|2,{45,78,0}}, +/* 23370 */ {(13<<2)|2,{45,78,0}}, +/* 23371 */ {(13<<2)|2,{45,78,0}}, +/* 23372 */ {(13<<2)|2,{45,78,0}}, +/* 23373 */ {(13<<2)|2,{45,78,0}}, +/* 23374 */ {(13<<2)|2,{45,78,0}}, +/* 23375 */ {(13<<2)|2,{45,78,0}}, +/* 23376 */ {(13<<2)|2,{45,79,0}}, +/* 23377 */ {(13<<2)|2,{45,79,0}}, +/* 23378 */ {(13<<2)|2,{45,79,0}}, +/* 23379 */ {(13<<2)|2,{45,79,0}}, +/* 23380 */ {(13<<2)|2,{45,79,0}}, +/* 23381 */ {(13<<2)|2,{45,79,0}}, +/* 23382 */ {(13<<2)|2,{45,79,0}}, +/* 23383 */ {(13<<2)|2,{45,79,0}}, +/* 23384 */ {(13<<2)|2,{45,80,0}}, +/* 23385 */ {(13<<2)|2,{45,80,0}}, +/* 23386 */ {(13<<2)|2,{45,80,0}}, +/* 23387 */ {(13<<2)|2,{45,80,0}}, +/* 23388 */ {(13<<2)|2,{45,80,0}}, +/* 23389 */ {(13<<2)|2,{45,80,0}}, +/* 23390 */ {(13<<2)|2,{45,80,0}}, +/* 23391 */ {(13<<2)|2,{45,80,0}}, +/* 23392 */ {(13<<2)|2,{45,81,0}}, +/* 23393 */ {(13<<2)|2,{45,81,0}}, +/* 23394 */ {(13<<2)|2,{45,81,0}}, +/* 23395 */ {(13<<2)|2,{45,81,0}}, +/* 23396 */ {(13<<2)|2,{45,81,0}}, +/* 23397 */ {(13<<2)|2,{45,81,0}}, +/* 23398 */ {(13<<2)|2,{45,81,0}}, +/* 23399 */ {(13<<2)|2,{45,81,0}}, +/* 23400 */ {(13<<2)|2,{45,82,0}}, +/* 23401 */ {(13<<2)|2,{45,82,0}}, +/* 23402 */ {(13<<2)|2,{45,82,0}}, +/* 23403 */ {(13<<2)|2,{45,82,0}}, +/* 23404 */ {(13<<2)|2,{45,82,0}}, +/* 23405 */ {(13<<2)|2,{45,82,0}}, +/* 23406 */ {(13<<2)|2,{45,82,0}}, +/* 23407 */ {(13<<2)|2,{45,82,0}}, +/* 23408 */ {(13<<2)|2,{45,83,0}}, +/* 23409 */ {(13<<2)|2,{45,83,0}}, +/* 23410 */ {(13<<2)|2,{45,83,0}}, +/* 23411 */ {(13<<2)|2,{45,83,0}}, +/* 23412 */ {(13<<2)|2,{45,83,0}}, +/* 23413 */ {(13<<2)|2,{45,83,0}}, +/* 23414 */ {(13<<2)|2,{45,83,0}}, +/* 23415 */ {(13<<2)|2,{45,83,0}}, +/* 23416 */ {(13<<2)|2,{45,84,0}}, +/* 23417 */ {(13<<2)|2,{45,84,0}}, +/* 23418 */ {(13<<2)|2,{45,84,0}}, +/* 23419 */ {(13<<2)|2,{45,84,0}}, +/* 23420 */ {(13<<2)|2,{45,84,0}}, +/* 23421 */ {(13<<2)|2,{45,84,0}}, +/* 23422 */ {(13<<2)|2,{45,84,0}}, +/* 23423 */ {(13<<2)|2,{45,84,0}}, +/* 23424 */ {(13<<2)|2,{45,85,0}}, +/* 23425 */ {(13<<2)|2,{45,85,0}}, +/* 23426 */ {(13<<2)|2,{45,85,0}}, +/* 23427 */ {(13<<2)|2,{45,85,0}}, +/* 23428 */ {(13<<2)|2,{45,85,0}}, +/* 23429 */ {(13<<2)|2,{45,85,0}}, +/* 23430 */ {(13<<2)|2,{45,85,0}}, +/* 23431 */ {(13<<2)|2,{45,85,0}}, +/* 23432 */ {(13<<2)|2,{45,86,0}}, +/* 23433 */ {(13<<2)|2,{45,86,0}}, +/* 23434 */ {(13<<2)|2,{45,86,0}}, +/* 23435 */ {(13<<2)|2,{45,86,0}}, +/* 23436 */ {(13<<2)|2,{45,86,0}}, +/* 23437 */ {(13<<2)|2,{45,86,0}}, +/* 23438 */ {(13<<2)|2,{45,86,0}}, +/* 23439 */ {(13<<2)|2,{45,86,0}}, +/* 23440 */ {(13<<2)|2,{45,87,0}}, +/* 23441 */ {(13<<2)|2,{45,87,0}}, +/* 23442 */ {(13<<2)|2,{45,87,0}}, +/* 23443 */ {(13<<2)|2,{45,87,0}}, +/* 23444 */ {(13<<2)|2,{45,87,0}}, +/* 23445 */ {(13<<2)|2,{45,87,0}}, +/* 23446 */ {(13<<2)|2,{45,87,0}}, +/* 23447 */ {(13<<2)|2,{45,87,0}}, +/* 23448 */ {(13<<2)|2,{45,89,0}}, +/* 23449 */ {(13<<2)|2,{45,89,0}}, +/* 23450 */ {(13<<2)|2,{45,89,0}}, +/* 23451 */ {(13<<2)|2,{45,89,0}}, +/* 23452 */ {(13<<2)|2,{45,89,0}}, +/* 23453 */ {(13<<2)|2,{45,89,0}}, +/* 23454 */ {(13<<2)|2,{45,89,0}}, +/* 23455 */ {(13<<2)|2,{45,89,0}}, +/* 23456 */ {(13<<2)|2,{45,106,0}}, +/* 23457 */ {(13<<2)|2,{45,106,0}}, +/* 23458 */ {(13<<2)|2,{45,106,0}}, +/* 23459 */ {(13<<2)|2,{45,106,0}}, +/* 23460 */ {(13<<2)|2,{45,106,0}}, +/* 23461 */ {(13<<2)|2,{45,106,0}}, +/* 23462 */ {(13<<2)|2,{45,106,0}}, +/* 23463 */ {(13<<2)|2,{45,106,0}}, +/* 23464 */ {(13<<2)|2,{45,107,0}}, +/* 23465 */ {(13<<2)|2,{45,107,0}}, +/* 23466 */ {(13<<2)|2,{45,107,0}}, +/* 23467 */ {(13<<2)|2,{45,107,0}}, +/* 23468 */ {(13<<2)|2,{45,107,0}}, +/* 23469 */ {(13<<2)|2,{45,107,0}}, +/* 23470 */ {(13<<2)|2,{45,107,0}}, +/* 23471 */ {(13<<2)|2,{45,107,0}}, +/* 23472 */ {(13<<2)|2,{45,113,0}}, +/* 23473 */ {(13<<2)|2,{45,113,0}}, +/* 23474 */ {(13<<2)|2,{45,113,0}}, +/* 23475 */ {(13<<2)|2,{45,113,0}}, +/* 23476 */ {(13<<2)|2,{45,113,0}}, +/* 23477 */ {(13<<2)|2,{45,113,0}}, +/* 23478 */ {(13<<2)|2,{45,113,0}}, +/* 23479 */ {(13<<2)|2,{45,113,0}}, +/* 23480 */ {(13<<2)|2,{45,118,0}}, +/* 23481 */ {(13<<2)|2,{45,118,0}}, +/* 23482 */ {(13<<2)|2,{45,118,0}}, +/* 23483 */ {(13<<2)|2,{45,118,0}}, +/* 23484 */ {(13<<2)|2,{45,118,0}}, +/* 23485 */ {(13<<2)|2,{45,118,0}}, +/* 23486 */ {(13<<2)|2,{45,118,0}}, +/* 23487 */ {(13<<2)|2,{45,118,0}}, +/* 23488 */ {(13<<2)|2,{45,119,0}}, +/* 23489 */ {(13<<2)|2,{45,119,0}}, +/* 23490 */ {(13<<2)|2,{45,119,0}}, +/* 23491 */ {(13<<2)|2,{45,119,0}}, +/* 23492 */ {(13<<2)|2,{45,119,0}}, +/* 23493 */ {(13<<2)|2,{45,119,0}}, +/* 23494 */ {(13<<2)|2,{45,119,0}}, +/* 23495 */ {(13<<2)|2,{45,119,0}}, +/* 23496 */ {(13<<2)|2,{45,120,0}}, +/* 23497 */ {(13<<2)|2,{45,120,0}}, +/* 23498 */ {(13<<2)|2,{45,120,0}}, +/* 23499 */ {(13<<2)|2,{45,120,0}}, +/* 23500 */ {(13<<2)|2,{45,120,0}}, +/* 23501 */ {(13<<2)|2,{45,120,0}}, +/* 23502 */ {(13<<2)|2,{45,120,0}}, +/* 23503 */ {(13<<2)|2,{45,120,0}}, +/* 23504 */ {(13<<2)|2,{45,121,0}}, +/* 23505 */ {(13<<2)|2,{45,121,0}}, +/* 23506 */ {(13<<2)|2,{45,121,0}}, +/* 23507 */ {(13<<2)|2,{45,121,0}}, +/* 23508 */ {(13<<2)|2,{45,121,0}}, +/* 23509 */ {(13<<2)|2,{45,121,0}}, +/* 23510 */ {(13<<2)|2,{45,121,0}}, +/* 23511 */ {(13<<2)|2,{45,121,0}}, +/* 23512 */ {(13<<2)|2,{45,122,0}}, +/* 23513 */ {(13<<2)|2,{45,122,0}}, +/* 23514 */ {(13<<2)|2,{45,122,0}}, +/* 23515 */ {(13<<2)|2,{45,122,0}}, +/* 23516 */ {(13<<2)|2,{45,122,0}}, +/* 23517 */ {(13<<2)|2,{45,122,0}}, +/* 23518 */ {(13<<2)|2,{45,122,0}}, +/* 23519 */ {(13<<2)|2,{45,122,0}}, +/* 23520 */ {(14<<2)|2,{45,38,0}}, +/* 23521 */ {(14<<2)|2,{45,38,0}}, +/* 23522 */ {(14<<2)|2,{45,38,0}}, +/* 23523 */ {(14<<2)|2,{45,38,0}}, +/* 23524 */ {(14<<2)|2,{45,42,0}}, +/* 23525 */ {(14<<2)|2,{45,42,0}}, +/* 23526 */ {(14<<2)|2,{45,42,0}}, +/* 23527 */ {(14<<2)|2,{45,42,0}}, +/* 23528 */ {(14<<2)|2,{45,44,0}}, +/* 23529 */ {(14<<2)|2,{45,44,0}}, +/* 23530 */ {(14<<2)|2,{45,44,0}}, +/* 23531 */ {(14<<2)|2,{45,44,0}}, +/* 23532 */ {(14<<2)|2,{45,59,0}}, +/* 23533 */ {(14<<2)|2,{45,59,0}}, +/* 23534 */ {(14<<2)|2,{45,59,0}}, +/* 23535 */ {(14<<2)|2,{45,59,0}}, +/* 23536 */ {(14<<2)|2,{45,88,0}}, +/* 23537 */ {(14<<2)|2,{45,88,0}}, +/* 23538 */ {(14<<2)|2,{45,88,0}}, +/* 23539 */ {(14<<2)|2,{45,88,0}}, +/* 23540 */ {(14<<2)|2,{45,90,0}}, +/* 23541 */ {(14<<2)|2,{45,90,0}}, +/* 23542 */ {(14<<2)|2,{45,90,0}}, +/* 23543 */ {(14<<2)|2,{45,90,0}}, +/* 23544 */ {(16<<2)|2,{45,33,0}}, +/* 23545 */ {(16<<2)|2,{45,34,0}}, +/* 23546 */ {(16<<2)|2,{45,40,0}}, +/* 23547 */ {(16<<2)|2,{45,41,0}}, +/* 23548 */ {(16<<2)|2,{45,63,0}}, +/* 23549 */ {(6<<2)|1,{45,0,0}}, +/* 23550 */ {(6<<2)|1,{45,0,0}}, +/* 23551 */ {(6<<2)|1,{45,0,0}}, +/* 23552 */ {(16<<2)|3,{46,48,48}}, +/* 23553 */ {(16<<2)|3,{46,48,49}}, +/* 23554 */ {(16<<2)|3,{46,48,50}}, +/* 23555 */ {(16<<2)|3,{46,48,97}}, +/* 23556 */ {(16<<2)|3,{46,48,99}}, +/* 23557 */ {(16<<2)|3,{46,48,101}}, +/* 23558 */ {(16<<2)|3,{46,48,105}}, +/* 23559 */ {(16<<2)|3,{46,48,111}}, +/* 23560 */ {(16<<2)|3,{46,48,115}}, +/* 23561 */ {(16<<2)|3,{46,48,116}}, +/* 23562 */ {(11<<2)|2,{46,48,0}}, +/* 23563 */ {(11<<2)|2,{46,48,0}}, +/* 23564 */ {(11<<2)|2,{46,48,0}}, +/* 23565 */ {(11<<2)|2,{46,48,0}}, +/* 23566 */ {(11<<2)|2,{46,48,0}}, +/* 23567 */ {(11<<2)|2,{46,48,0}}, +/* 23568 */ {(11<<2)|2,{46,48,0}}, +/* 23569 */ {(11<<2)|2,{46,48,0}}, +/* 23570 */ {(11<<2)|2,{46,48,0}}, +/* 23571 */ {(11<<2)|2,{46,48,0}}, +/* 23572 */ {(11<<2)|2,{46,48,0}}, +/* 23573 */ {(11<<2)|2,{46,48,0}}, +/* 23574 */ {(11<<2)|2,{46,48,0}}, +/* 23575 */ {(11<<2)|2,{46,48,0}}, +/* 23576 */ {(11<<2)|2,{46,48,0}}, +/* 23577 */ {(11<<2)|2,{46,48,0}}, +/* 23578 */ {(11<<2)|2,{46,48,0}}, +/* 23579 */ {(11<<2)|2,{46,48,0}}, +/* 23580 */ {(11<<2)|2,{46,48,0}}, +/* 23581 */ {(11<<2)|2,{46,48,0}}, +/* 23582 */ {(11<<2)|2,{46,48,0}}, +/* 23583 */ {(11<<2)|2,{46,48,0}}, +/* 23584 */ {(16<<2)|3,{46,49,48}}, +/* 23585 */ {(16<<2)|3,{46,49,49}}, +/* 23586 */ {(16<<2)|3,{46,49,50}}, +/* 23587 */ {(16<<2)|3,{46,49,97}}, +/* 23588 */ {(16<<2)|3,{46,49,99}}, +/* 23589 */ {(16<<2)|3,{46,49,101}}, +/* 23590 */ {(16<<2)|3,{46,49,105}}, +/* 23591 */ {(16<<2)|3,{46,49,111}}, +/* 23592 */ {(16<<2)|3,{46,49,115}}, +/* 23593 */ {(16<<2)|3,{46,49,116}}, +/* 23594 */ {(11<<2)|2,{46,49,0}}, +/* 23595 */ {(11<<2)|2,{46,49,0}}, +/* 23596 */ {(11<<2)|2,{46,49,0}}, +/* 23597 */ {(11<<2)|2,{46,49,0}}, +/* 23598 */ {(11<<2)|2,{46,49,0}}, +/* 23599 */ {(11<<2)|2,{46,49,0}}, +/* 23600 */ {(11<<2)|2,{46,49,0}}, +/* 23601 */ {(11<<2)|2,{46,49,0}}, +/* 23602 */ {(11<<2)|2,{46,49,0}}, +/* 23603 */ {(11<<2)|2,{46,49,0}}, +/* 23604 */ {(11<<2)|2,{46,49,0}}, +/* 23605 */ {(11<<2)|2,{46,49,0}}, +/* 23606 */ {(11<<2)|2,{46,49,0}}, +/* 23607 */ {(11<<2)|2,{46,49,0}}, +/* 23608 */ {(11<<2)|2,{46,49,0}}, +/* 23609 */ {(11<<2)|2,{46,49,0}}, +/* 23610 */ {(11<<2)|2,{46,49,0}}, +/* 23611 */ {(11<<2)|2,{46,49,0}}, +/* 23612 */ {(11<<2)|2,{46,49,0}}, +/* 23613 */ {(11<<2)|2,{46,49,0}}, +/* 23614 */ {(11<<2)|2,{46,49,0}}, +/* 23615 */ {(11<<2)|2,{46,49,0}}, +/* 23616 */ {(16<<2)|3,{46,50,48}}, +/* 23617 */ {(16<<2)|3,{46,50,49}}, +/* 23618 */ {(16<<2)|3,{46,50,50}}, +/* 23619 */ {(16<<2)|3,{46,50,97}}, +/* 23620 */ {(16<<2)|3,{46,50,99}}, +/* 23621 */ {(16<<2)|3,{46,50,101}}, +/* 23622 */ {(16<<2)|3,{46,50,105}}, +/* 23623 */ {(16<<2)|3,{46,50,111}}, +/* 23624 */ {(16<<2)|3,{46,50,115}}, +/* 23625 */ {(16<<2)|3,{46,50,116}}, +/* 23626 */ {(11<<2)|2,{46,50,0}}, +/* 23627 */ {(11<<2)|2,{46,50,0}}, +/* 23628 */ {(11<<2)|2,{46,50,0}}, +/* 23629 */ {(11<<2)|2,{46,50,0}}, +/* 23630 */ {(11<<2)|2,{46,50,0}}, +/* 23631 */ {(11<<2)|2,{46,50,0}}, +/* 23632 */ {(11<<2)|2,{46,50,0}}, +/* 23633 */ {(11<<2)|2,{46,50,0}}, +/* 23634 */ {(11<<2)|2,{46,50,0}}, +/* 23635 */ {(11<<2)|2,{46,50,0}}, +/* 23636 */ {(11<<2)|2,{46,50,0}}, +/* 23637 */ {(11<<2)|2,{46,50,0}}, +/* 23638 */ {(11<<2)|2,{46,50,0}}, +/* 23639 */ {(11<<2)|2,{46,50,0}}, +/* 23640 */ {(11<<2)|2,{46,50,0}}, +/* 23641 */ {(11<<2)|2,{46,50,0}}, +/* 23642 */ {(11<<2)|2,{46,50,0}}, +/* 23643 */ {(11<<2)|2,{46,50,0}}, +/* 23644 */ {(11<<2)|2,{46,50,0}}, +/* 23645 */ {(11<<2)|2,{46,50,0}}, +/* 23646 */ {(11<<2)|2,{46,50,0}}, +/* 23647 */ {(11<<2)|2,{46,50,0}}, +/* 23648 */ {(16<<2)|3,{46,97,48}}, +/* 23649 */ {(16<<2)|3,{46,97,49}}, +/* 23650 */ {(16<<2)|3,{46,97,50}}, +/* 23651 */ {(16<<2)|3,{46,97,97}}, +/* 23652 */ {(16<<2)|3,{46,97,99}}, +/* 23653 */ {(16<<2)|3,{46,97,101}}, +/* 23654 */ {(16<<2)|3,{46,97,105}}, +/* 23655 */ {(16<<2)|3,{46,97,111}}, +/* 23656 */ {(16<<2)|3,{46,97,115}}, +/* 23657 */ {(16<<2)|3,{46,97,116}}, +/* 23658 */ {(11<<2)|2,{46,97,0}}, +/* 23659 */ {(11<<2)|2,{46,97,0}}, +/* 23660 */ {(11<<2)|2,{46,97,0}}, +/* 23661 */ {(11<<2)|2,{46,97,0}}, +/* 23662 */ {(11<<2)|2,{46,97,0}}, +/* 23663 */ {(11<<2)|2,{46,97,0}}, +/* 23664 */ {(11<<2)|2,{46,97,0}}, +/* 23665 */ {(11<<2)|2,{46,97,0}}, +/* 23666 */ {(11<<2)|2,{46,97,0}}, +/* 23667 */ {(11<<2)|2,{46,97,0}}, +/* 23668 */ {(11<<2)|2,{46,97,0}}, +/* 23669 */ {(11<<2)|2,{46,97,0}}, +/* 23670 */ {(11<<2)|2,{46,97,0}}, +/* 23671 */ {(11<<2)|2,{46,97,0}}, +/* 23672 */ {(11<<2)|2,{46,97,0}}, +/* 23673 */ {(11<<2)|2,{46,97,0}}, +/* 23674 */ {(11<<2)|2,{46,97,0}}, +/* 23675 */ {(11<<2)|2,{46,97,0}}, +/* 23676 */ {(11<<2)|2,{46,97,0}}, +/* 23677 */ {(11<<2)|2,{46,97,0}}, +/* 23678 */ {(11<<2)|2,{46,97,0}}, +/* 23679 */ {(11<<2)|2,{46,97,0}}, +/* 23680 */ {(16<<2)|3,{46,99,48}}, +/* 23681 */ {(16<<2)|3,{46,99,49}}, +/* 23682 */ {(16<<2)|3,{46,99,50}}, +/* 23683 */ {(16<<2)|3,{46,99,97}}, +/* 23684 */ {(16<<2)|3,{46,99,99}}, +/* 23685 */ {(16<<2)|3,{46,99,101}}, +/* 23686 */ {(16<<2)|3,{46,99,105}}, +/* 23687 */ {(16<<2)|3,{46,99,111}}, +/* 23688 */ {(16<<2)|3,{46,99,115}}, +/* 23689 */ {(16<<2)|3,{46,99,116}}, +/* 23690 */ {(11<<2)|2,{46,99,0}}, +/* 23691 */ {(11<<2)|2,{46,99,0}}, +/* 23692 */ {(11<<2)|2,{46,99,0}}, +/* 23693 */ {(11<<2)|2,{46,99,0}}, +/* 23694 */ {(11<<2)|2,{46,99,0}}, +/* 23695 */ {(11<<2)|2,{46,99,0}}, +/* 23696 */ {(11<<2)|2,{46,99,0}}, +/* 23697 */ {(11<<2)|2,{46,99,0}}, +/* 23698 */ {(11<<2)|2,{46,99,0}}, +/* 23699 */ {(11<<2)|2,{46,99,0}}, +/* 23700 */ {(11<<2)|2,{46,99,0}}, +/* 23701 */ {(11<<2)|2,{46,99,0}}, +/* 23702 */ {(11<<2)|2,{46,99,0}}, +/* 23703 */ {(11<<2)|2,{46,99,0}}, +/* 23704 */ {(11<<2)|2,{46,99,0}}, +/* 23705 */ {(11<<2)|2,{46,99,0}}, +/* 23706 */ {(11<<2)|2,{46,99,0}}, +/* 23707 */ {(11<<2)|2,{46,99,0}}, +/* 23708 */ {(11<<2)|2,{46,99,0}}, +/* 23709 */ {(11<<2)|2,{46,99,0}}, +/* 23710 */ {(11<<2)|2,{46,99,0}}, +/* 23711 */ {(11<<2)|2,{46,99,0}}, +/* 23712 */ {(16<<2)|3,{46,101,48}}, +/* 23713 */ {(16<<2)|3,{46,101,49}}, +/* 23714 */ {(16<<2)|3,{46,101,50}}, +/* 23715 */ {(16<<2)|3,{46,101,97}}, +/* 23716 */ {(16<<2)|3,{46,101,99}}, +/* 23717 */ {(16<<2)|3,{46,101,101}}, +/* 23718 */ {(16<<2)|3,{46,101,105}}, +/* 23719 */ {(16<<2)|3,{46,101,111}}, +/* 23720 */ {(16<<2)|3,{46,101,115}}, +/* 23721 */ {(16<<2)|3,{46,101,116}}, +/* 23722 */ {(11<<2)|2,{46,101,0}}, +/* 23723 */ {(11<<2)|2,{46,101,0}}, +/* 23724 */ {(11<<2)|2,{46,101,0}}, +/* 23725 */ {(11<<2)|2,{46,101,0}}, +/* 23726 */ {(11<<2)|2,{46,101,0}}, +/* 23727 */ {(11<<2)|2,{46,101,0}}, +/* 23728 */ {(11<<2)|2,{46,101,0}}, +/* 23729 */ {(11<<2)|2,{46,101,0}}, +/* 23730 */ {(11<<2)|2,{46,101,0}}, +/* 23731 */ {(11<<2)|2,{46,101,0}}, +/* 23732 */ {(11<<2)|2,{46,101,0}}, +/* 23733 */ {(11<<2)|2,{46,101,0}}, +/* 23734 */ {(11<<2)|2,{46,101,0}}, +/* 23735 */ {(11<<2)|2,{46,101,0}}, +/* 23736 */ {(11<<2)|2,{46,101,0}}, +/* 23737 */ {(11<<2)|2,{46,101,0}}, +/* 23738 */ {(11<<2)|2,{46,101,0}}, +/* 23739 */ {(11<<2)|2,{46,101,0}}, +/* 23740 */ {(11<<2)|2,{46,101,0}}, +/* 23741 */ {(11<<2)|2,{46,101,0}}, +/* 23742 */ {(11<<2)|2,{46,101,0}}, +/* 23743 */ {(11<<2)|2,{46,101,0}}, +/* 23744 */ {(16<<2)|3,{46,105,48}}, +/* 23745 */ {(16<<2)|3,{46,105,49}}, +/* 23746 */ {(16<<2)|3,{46,105,50}}, +/* 23747 */ {(16<<2)|3,{46,105,97}}, +/* 23748 */ {(16<<2)|3,{46,105,99}}, +/* 23749 */ {(16<<2)|3,{46,105,101}}, +/* 23750 */ {(16<<2)|3,{46,105,105}}, +/* 23751 */ {(16<<2)|3,{46,105,111}}, +/* 23752 */ {(16<<2)|3,{46,105,115}}, +/* 23753 */ {(16<<2)|3,{46,105,116}}, +/* 23754 */ {(11<<2)|2,{46,105,0}}, +/* 23755 */ {(11<<2)|2,{46,105,0}}, +/* 23756 */ {(11<<2)|2,{46,105,0}}, +/* 23757 */ {(11<<2)|2,{46,105,0}}, +/* 23758 */ {(11<<2)|2,{46,105,0}}, +/* 23759 */ {(11<<2)|2,{46,105,0}}, +/* 23760 */ {(11<<2)|2,{46,105,0}}, +/* 23761 */ {(11<<2)|2,{46,105,0}}, +/* 23762 */ {(11<<2)|2,{46,105,0}}, +/* 23763 */ {(11<<2)|2,{46,105,0}}, +/* 23764 */ {(11<<2)|2,{46,105,0}}, +/* 23765 */ {(11<<2)|2,{46,105,0}}, +/* 23766 */ {(11<<2)|2,{46,105,0}}, +/* 23767 */ {(11<<2)|2,{46,105,0}}, +/* 23768 */ {(11<<2)|2,{46,105,0}}, +/* 23769 */ {(11<<2)|2,{46,105,0}}, +/* 23770 */ {(11<<2)|2,{46,105,0}}, +/* 23771 */ {(11<<2)|2,{46,105,0}}, +/* 23772 */ {(11<<2)|2,{46,105,0}}, +/* 23773 */ {(11<<2)|2,{46,105,0}}, +/* 23774 */ {(11<<2)|2,{46,105,0}}, +/* 23775 */ {(11<<2)|2,{46,105,0}}, +/* 23776 */ {(16<<2)|3,{46,111,48}}, +/* 23777 */ {(16<<2)|3,{46,111,49}}, +/* 23778 */ {(16<<2)|3,{46,111,50}}, +/* 23779 */ {(16<<2)|3,{46,111,97}}, +/* 23780 */ {(16<<2)|3,{46,111,99}}, +/* 23781 */ {(16<<2)|3,{46,111,101}}, +/* 23782 */ {(16<<2)|3,{46,111,105}}, +/* 23783 */ {(16<<2)|3,{46,111,111}}, +/* 23784 */ {(16<<2)|3,{46,111,115}}, +/* 23785 */ {(16<<2)|3,{46,111,116}}, +/* 23786 */ {(11<<2)|2,{46,111,0}}, +/* 23787 */ {(11<<2)|2,{46,111,0}}, +/* 23788 */ {(11<<2)|2,{46,111,0}}, +/* 23789 */ {(11<<2)|2,{46,111,0}}, +/* 23790 */ {(11<<2)|2,{46,111,0}}, +/* 23791 */ {(11<<2)|2,{46,111,0}}, +/* 23792 */ {(11<<2)|2,{46,111,0}}, +/* 23793 */ {(11<<2)|2,{46,111,0}}, +/* 23794 */ {(11<<2)|2,{46,111,0}}, +/* 23795 */ {(11<<2)|2,{46,111,0}}, +/* 23796 */ {(11<<2)|2,{46,111,0}}, +/* 23797 */ {(11<<2)|2,{46,111,0}}, +/* 23798 */ {(11<<2)|2,{46,111,0}}, +/* 23799 */ {(11<<2)|2,{46,111,0}}, +/* 23800 */ {(11<<2)|2,{46,111,0}}, +/* 23801 */ {(11<<2)|2,{46,111,0}}, +/* 23802 */ {(11<<2)|2,{46,111,0}}, +/* 23803 */ {(11<<2)|2,{46,111,0}}, +/* 23804 */ {(11<<2)|2,{46,111,0}}, +/* 23805 */ {(11<<2)|2,{46,111,0}}, +/* 23806 */ {(11<<2)|2,{46,111,0}}, +/* 23807 */ {(11<<2)|2,{46,111,0}}, +/* 23808 */ {(16<<2)|3,{46,115,48}}, +/* 23809 */ {(16<<2)|3,{46,115,49}}, +/* 23810 */ {(16<<2)|3,{46,115,50}}, +/* 23811 */ {(16<<2)|3,{46,115,97}}, +/* 23812 */ {(16<<2)|3,{46,115,99}}, +/* 23813 */ {(16<<2)|3,{46,115,101}}, +/* 23814 */ {(16<<2)|3,{46,115,105}}, +/* 23815 */ {(16<<2)|3,{46,115,111}}, +/* 23816 */ {(16<<2)|3,{46,115,115}}, +/* 23817 */ {(16<<2)|3,{46,115,116}}, +/* 23818 */ {(11<<2)|2,{46,115,0}}, +/* 23819 */ {(11<<2)|2,{46,115,0}}, +/* 23820 */ {(11<<2)|2,{46,115,0}}, +/* 23821 */ {(11<<2)|2,{46,115,0}}, +/* 23822 */ {(11<<2)|2,{46,115,0}}, +/* 23823 */ {(11<<2)|2,{46,115,0}}, +/* 23824 */ {(11<<2)|2,{46,115,0}}, +/* 23825 */ {(11<<2)|2,{46,115,0}}, +/* 23826 */ {(11<<2)|2,{46,115,0}}, +/* 23827 */ {(11<<2)|2,{46,115,0}}, +/* 23828 */ {(11<<2)|2,{46,115,0}}, +/* 23829 */ {(11<<2)|2,{46,115,0}}, +/* 23830 */ {(11<<2)|2,{46,115,0}}, +/* 23831 */ {(11<<2)|2,{46,115,0}}, +/* 23832 */ {(11<<2)|2,{46,115,0}}, +/* 23833 */ {(11<<2)|2,{46,115,0}}, +/* 23834 */ {(11<<2)|2,{46,115,0}}, +/* 23835 */ {(11<<2)|2,{46,115,0}}, +/* 23836 */ {(11<<2)|2,{46,115,0}}, +/* 23837 */ {(11<<2)|2,{46,115,0}}, +/* 23838 */ {(11<<2)|2,{46,115,0}}, +/* 23839 */ {(11<<2)|2,{46,115,0}}, +/* 23840 */ {(16<<2)|3,{46,116,48}}, +/* 23841 */ {(16<<2)|3,{46,116,49}}, +/* 23842 */ {(16<<2)|3,{46,116,50}}, +/* 23843 */ {(16<<2)|3,{46,116,97}}, +/* 23844 */ {(16<<2)|3,{46,116,99}}, +/* 23845 */ {(16<<2)|3,{46,116,101}}, +/* 23846 */ {(16<<2)|3,{46,116,105}}, +/* 23847 */ {(16<<2)|3,{46,116,111}}, +/* 23848 */ {(16<<2)|3,{46,116,115}}, +/* 23849 */ {(16<<2)|3,{46,116,116}}, +/* 23850 */ {(11<<2)|2,{46,116,0}}, +/* 23851 */ {(11<<2)|2,{46,116,0}}, +/* 23852 */ {(11<<2)|2,{46,116,0}}, +/* 23853 */ {(11<<2)|2,{46,116,0}}, +/* 23854 */ {(11<<2)|2,{46,116,0}}, +/* 23855 */ {(11<<2)|2,{46,116,0}}, +/* 23856 */ {(11<<2)|2,{46,116,0}}, +/* 23857 */ {(11<<2)|2,{46,116,0}}, +/* 23858 */ {(11<<2)|2,{46,116,0}}, +/* 23859 */ {(11<<2)|2,{46,116,0}}, +/* 23860 */ {(11<<2)|2,{46,116,0}}, +/* 23861 */ {(11<<2)|2,{46,116,0}}, +/* 23862 */ {(11<<2)|2,{46,116,0}}, +/* 23863 */ {(11<<2)|2,{46,116,0}}, +/* 23864 */ {(11<<2)|2,{46,116,0}}, +/* 23865 */ {(11<<2)|2,{46,116,0}}, +/* 23866 */ {(11<<2)|2,{46,116,0}}, +/* 23867 */ {(11<<2)|2,{46,116,0}}, +/* 23868 */ {(11<<2)|2,{46,116,0}}, +/* 23869 */ {(11<<2)|2,{46,116,0}}, +/* 23870 */ {(11<<2)|2,{46,116,0}}, +/* 23871 */ {(11<<2)|2,{46,116,0}}, +/* 23872 */ {(12<<2)|2,{46,32,0}}, +/* 23873 */ {(12<<2)|2,{46,32,0}}, +/* 23874 */ {(12<<2)|2,{46,32,0}}, +/* 23875 */ {(12<<2)|2,{46,32,0}}, +/* 23876 */ {(12<<2)|2,{46,32,0}}, +/* 23877 */ {(12<<2)|2,{46,32,0}}, +/* 23878 */ {(12<<2)|2,{46,32,0}}, +/* 23879 */ {(12<<2)|2,{46,32,0}}, +/* 23880 */ {(12<<2)|2,{46,32,0}}, +/* 23881 */ {(12<<2)|2,{46,32,0}}, +/* 23882 */ {(12<<2)|2,{46,32,0}}, +/* 23883 */ {(12<<2)|2,{46,32,0}}, +/* 23884 */ {(12<<2)|2,{46,32,0}}, +/* 23885 */ {(12<<2)|2,{46,32,0}}, +/* 23886 */ {(12<<2)|2,{46,32,0}}, +/* 23887 */ {(12<<2)|2,{46,32,0}}, +/* 23888 */ {(12<<2)|2,{46,37,0}}, +/* 23889 */ {(12<<2)|2,{46,37,0}}, +/* 23890 */ {(12<<2)|2,{46,37,0}}, +/* 23891 */ {(12<<2)|2,{46,37,0}}, +/* 23892 */ {(12<<2)|2,{46,37,0}}, +/* 23893 */ {(12<<2)|2,{46,37,0}}, +/* 23894 */ {(12<<2)|2,{46,37,0}}, +/* 23895 */ {(12<<2)|2,{46,37,0}}, +/* 23896 */ {(12<<2)|2,{46,37,0}}, +/* 23897 */ {(12<<2)|2,{46,37,0}}, +/* 23898 */ {(12<<2)|2,{46,37,0}}, +/* 23899 */ {(12<<2)|2,{46,37,0}}, +/* 23900 */ {(12<<2)|2,{46,37,0}}, +/* 23901 */ {(12<<2)|2,{46,37,0}}, +/* 23902 */ {(12<<2)|2,{46,37,0}}, +/* 23903 */ {(12<<2)|2,{46,37,0}}, +/* 23904 */ {(12<<2)|2,{46,45,0}}, +/* 23905 */ {(12<<2)|2,{46,45,0}}, +/* 23906 */ {(12<<2)|2,{46,45,0}}, +/* 23907 */ {(12<<2)|2,{46,45,0}}, +/* 23908 */ {(12<<2)|2,{46,45,0}}, +/* 23909 */ {(12<<2)|2,{46,45,0}}, +/* 23910 */ {(12<<2)|2,{46,45,0}}, +/* 23911 */ {(12<<2)|2,{46,45,0}}, +/* 23912 */ {(12<<2)|2,{46,45,0}}, +/* 23913 */ {(12<<2)|2,{46,45,0}}, +/* 23914 */ {(12<<2)|2,{46,45,0}}, +/* 23915 */ {(12<<2)|2,{46,45,0}}, +/* 23916 */ {(12<<2)|2,{46,45,0}}, +/* 23917 */ {(12<<2)|2,{46,45,0}}, +/* 23918 */ {(12<<2)|2,{46,45,0}}, +/* 23919 */ {(12<<2)|2,{46,45,0}}, +/* 23920 */ {(12<<2)|2,{46,46,0}}, +/* 23921 */ {(12<<2)|2,{46,46,0}}, +/* 23922 */ {(12<<2)|2,{46,46,0}}, +/* 23923 */ {(12<<2)|2,{46,46,0}}, +/* 23924 */ {(12<<2)|2,{46,46,0}}, +/* 23925 */ {(12<<2)|2,{46,46,0}}, +/* 23926 */ {(12<<2)|2,{46,46,0}}, +/* 23927 */ {(12<<2)|2,{46,46,0}}, +/* 23928 */ {(12<<2)|2,{46,46,0}}, +/* 23929 */ {(12<<2)|2,{46,46,0}}, +/* 23930 */ {(12<<2)|2,{46,46,0}}, +/* 23931 */ {(12<<2)|2,{46,46,0}}, +/* 23932 */ {(12<<2)|2,{46,46,0}}, +/* 23933 */ {(12<<2)|2,{46,46,0}}, +/* 23934 */ {(12<<2)|2,{46,46,0}}, +/* 23935 */ {(12<<2)|2,{46,46,0}}, +/* 23936 */ {(12<<2)|2,{46,47,0}}, +/* 23937 */ {(12<<2)|2,{46,47,0}}, +/* 23938 */ {(12<<2)|2,{46,47,0}}, +/* 23939 */ {(12<<2)|2,{46,47,0}}, +/* 23940 */ {(12<<2)|2,{46,47,0}}, +/* 23941 */ {(12<<2)|2,{46,47,0}}, +/* 23942 */ {(12<<2)|2,{46,47,0}}, +/* 23943 */ {(12<<2)|2,{46,47,0}}, +/* 23944 */ {(12<<2)|2,{46,47,0}}, +/* 23945 */ {(12<<2)|2,{46,47,0}}, +/* 23946 */ {(12<<2)|2,{46,47,0}}, +/* 23947 */ {(12<<2)|2,{46,47,0}}, +/* 23948 */ {(12<<2)|2,{46,47,0}}, +/* 23949 */ {(12<<2)|2,{46,47,0}}, +/* 23950 */ {(12<<2)|2,{46,47,0}}, +/* 23951 */ {(12<<2)|2,{46,47,0}}, +/* 23952 */ {(12<<2)|2,{46,51,0}}, +/* 23953 */ {(12<<2)|2,{46,51,0}}, +/* 23954 */ {(12<<2)|2,{46,51,0}}, +/* 23955 */ {(12<<2)|2,{46,51,0}}, +/* 23956 */ {(12<<2)|2,{46,51,0}}, +/* 23957 */ {(12<<2)|2,{46,51,0}}, +/* 23958 */ {(12<<2)|2,{46,51,0}}, +/* 23959 */ {(12<<2)|2,{46,51,0}}, +/* 23960 */ {(12<<2)|2,{46,51,0}}, +/* 23961 */ {(12<<2)|2,{46,51,0}}, +/* 23962 */ {(12<<2)|2,{46,51,0}}, +/* 23963 */ {(12<<2)|2,{46,51,0}}, +/* 23964 */ {(12<<2)|2,{46,51,0}}, +/* 23965 */ {(12<<2)|2,{46,51,0}}, +/* 23966 */ {(12<<2)|2,{46,51,0}}, +/* 23967 */ {(12<<2)|2,{46,51,0}}, +/* 23968 */ {(12<<2)|2,{46,52,0}}, +/* 23969 */ {(12<<2)|2,{46,52,0}}, +/* 23970 */ {(12<<2)|2,{46,52,0}}, +/* 23971 */ {(12<<2)|2,{46,52,0}}, +/* 23972 */ {(12<<2)|2,{46,52,0}}, +/* 23973 */ {(12<<2)|2,{46,52,0}}, +/* 23974 */ {(12<<2)|2,{46,52,0}}, +/* 23975 */ {(12<<2)|2,{46,52,0}}, +/* 23976 */ {(12<<2)|2,{46,52,0}}, +/* 23977 */ {(12<<2)|2,{46,52,0}}, +/* 23978 */ {(12<<2)|2,{46,52,0}}, +/* 23979 */ {(12<<2)|2,{46,52,0}}, +/* 23980 */ {(12<<2)|2,{46,52,0}}, +/* 23981 */ {(12<<2)|2,{46,52,0}}, +/* 23982 */ {(12<<2)|2,{46,52,0}}, +/* 23983 */ {(12<<2)|2,{46,52,0}}, +/* 23984 */ {(12<<2)|2,{46,53,0}}, +/* 23985 */ {(12<<2)|2,{46,53,0}}, +/* 23986 */ {(12<<2)|2,{46,53,0}}, +/* 23987 */ {(12<<2)|2,{46,53,0}}, +/* 23988 */ {(12<<2)|2,{46,53,0}}, +/* 23989 */ {(12<<2)|2,{46,53,0}}, +/* 23990 */ {(12<<2)|2,{46,53,0}}, +/* 23991 */ {(12<<2)|2,{46,53,0}}, +/* 23992 */ {(12<<2)|2,{46,53,0}}, +/* 23993 */ {(12<<2)|2,{46,53,0}}, +/* 23994 */ {(12<<2)|2,{46,53,0}}, +/* 23995 */ {(12<<2)|2,{46,53,0}}, +/* 23996 */ {(12<<2)|2,{46,53,0}}, +/* 23997 */ {(12<<2)|2,{46,53,0}}, +/* 23998 */ {(12<<2)|2,{46,53,0}}, +/* 23999 */ {(12<<2)|2,{46,53,0}}, +/* 24000 */ {(12<<2)|2,{46,54,0}}, +/* 24001 */ {(12<<2)|2,{46,54,0}}, +/* 24002 */ {(12<<2)|2,{46,54,0}}, +/* 24003 */ {(12<<2)|2,{46,54,0}}, +/* 24004 */ {(12<<2)|2,{46,54,0}}, +/* 24005 */ {(12<<2)|2,{46,54,0}}, +/* 24006 */ {(12<<2)|2,{46,54,0}}, +/* 24007 */ {(12<<2)|2,{46,54,0}}, +/* 24008 */ {(12<<2)|2,{46,54,0}}, +/* 24009 */ {(12<<2)|2,{46,54,0}}, +/* 24010 */ {(12<<2)|2,{46,54,0}}, +/* 24011 */ {(12<<2)|2,{46,54,0}}, +/* 24012 */ {(12<<2)|2,{46,54,0}}, +/* 24013 */ {(12<<2)|2,{46,54,0}}, +/* 24014 */ {(12<<2)|2,{46,54,0}}, +/* 24015 */ {(12<<2)|2,{46,54,0}}, +/* 24016 */ {(12<<2)|2,{46,55,0}}, +/* 24017 */ {(12<<2)|2,{46,55,0}}, +/* 24018 */ {(12<<2)|2,{46,55,0}}, +/* 24019 */ {(12<<2)|2,{46,55,0}}, +/* 24020 */ {(12<<2)|2,{46,55,0}}, +/* 24021 */ {(12<<2)|2,{46,55,0}}, +/* 24022 */ {(12<<2)|2,{46,55,0}}, +/* 24023 */ {(12<<2)|2,{46,55,0}}, +/* 24024 */ {(12<<2)|2,{46,55,0}}, +/* 24025 */ {(12<<2)|2,{46,55,0}}, +/* 24026 */ {(12<<2)|2,{46,55,0}}, +/* 24027 */ {(12<<2)|2,{46,55,0}}, +/* 24028 */ {(12<<2)|2,{46,55,0}}, +/* 24029 */ {(12<<2)|2,{46,55,0}}, +/* 24030 */ {(12<<2)|2,{46,55,0}}, +/* 24031 */ {(12<<2)|2,{46,55,0}}, +/* 24032 */ {(12<<2)|2,{46,56,0}}, +/* 24033 */ {(12<<2)|2,{46,56,0}}, +/* 24034 */ {(12<<2)|2,{46,56,0}}, +/* 24035 */ {(12<<2)|2,{46,56,0}}, +/* 24036 */ {(12<<2)|2,{46,56,0}}, +/* 24037 */ {(12<<2)|2,{46,56,0}}, +/* 24038 */ {(12<<2)|2,{46,56,0}}, +/* 24039 */ {(12<<2)|2,{46,56,0}}, +/* 24040 */ {(12<<2)|2,{46,56,0}}, +/* 24041 */ {(12<<2)|2,{46,56,0}}, +/* 24042 */ {(12<<2)|2,{46,56,0}}, +/* 24043 */ {(12<<2)|2,{46,56,0}}, +/* 24044 */ {(12<<2)|2,{46,56,0}}, +/* 24045 */ {(12<<2)|2,{46,56,0}}, +/* 24046 */ {(12<<2)|2,{46,56,0}}, +/* 24047 */ {(12<<2)|2,{46,56,0}}, +/* 24048 */ {(12<<2)|2,{46,57,0}}, +/* 24049 */ {(12<<2)|2,{46,57,0}}, +/* 24050 */ {(12<<2)|2,{46,57,0}}, +/* 24051 */ {(12<<2)|2,{46,57,0}}, +/* 24052 */ {(12<<2)|2,{46,57,0}}, +/* 24053 */ {(12<<2)|2,{46,57,0}}, +/* 24054 */ {(12<<2)|2,{46,57,0}}, +/* 24055 */ {(12<<2)|2,{46,57,0}}, +/* 24056 */ {(12<<2)|2,{46,57,0}}, +/* 24057 */ {(12<<2)|2,{46,57,0}}, +/* 24058 */ {(12<<2)|2,{46,57,0}}, +/* 24059 */ {(12<<2)|2,{46,57,0}}, +/* 24060 */ {(12<<2)|2,{46,57,0}}, +/* 24061 */ {(12<<2)|2,{46,57,0}}, +/* 24062 */ {(12<<2)|2,{46,57,0}}, +/* 24063 */ {(12<<2)|2,{46,57,0}}, +/* 24064 */ {(12<<2)|2,{46,61,0}}, +/* 24065 */ {(12<<2)|2,{46,61,0}}, +/* 24066 */ {(12<<2)|2,{46,61,0}}, +/* 24067 */ {(12<<2)|2,{46,61,0}}, +/* 24068 */ {(12<<2)|2,{46,61,0}}, +/* 24069 */ {(12<<2)|2,{46,61,0}}, +/* 24070 */ {(12<<2)|2,{46,61,0}}, +/* 24071 */ {(12<<2)|2,{46,61,0}}, +/* 24072 */ {(12<<2)|2,{46,61,0}}, +/* 24073 */ {(12<<2)|2,{46,61,0}}, +/* 24074 */ {(12<<2)|2,{46,61,0}}, +/* 24075 */ {(12<<2)|2,{46,61,0}}, +/* 24076 */ {(12<<2)|2,{46,61,0}}, +/* 24077 */ {(12<<2)|2,{46,61,0}}, +/* 24078 */ {(12<<2)|2,{46,61,0}}, +/* 24079 */ {(12<<2)|2,{46,61,0}}, +/* 24080 */ {(12<<2)|2,{46,65,0}}, +/* 24081 */ {(12<<2)|2,{46,65,0}}, +/* 24082 */ {(12<<2)|2,{46,65,0}}, +/* 24083 */ {(12<<2)|2,{46,65,0}}, +/* 24084 */ {(12<<2)|2,{46,65,0}}, +/* 24085 */ {(12<<2)|2,{46,65,0}}, +/* 24086 */ {(12<<2)|2,{46,65,0}}, +/* 24087 */ {(12<<2)|2,{46,65,0}}, +/* 24088 */ {(12<<2)|2,{46,65,0}}, +/* 24089 */ {(12<<2)|2,{46,65,0}}, +/* 24090 */ {(12<<2)|2,{46,65,0}}, +/* 24091 */ {(12<<2)|2,{46,65,0}}, +/* 24092 */ {(12<<2)|2,{46,65,0}}, +/* 24093 */ {(12<<2)|2,{46,65,0}}, +/* 24094 */ {(12<<2)|2,{46,65,0}}, +/* 24095 */ {(12<<2)|2,{46,65,0}}, +/* 24096 */ {(12<<2)|2,{46,95,0}}, +/* 24097 */ {(12<<2)|2,{46,95,0}}, +/* 24098 */ {(12<<2)|2,{46,95,0}}, +/* 24099 */ {(12<<2)|2,{46,95,0}}, +/* 24100 */ {(12<<2)|2,{46,95,0}}, +/* 24101 */ {(12<<2)|2,{46,95,0}}, +/* 24102 */ {(12<<2)|2,{46,95,0}}, +/* 24103 */ {(12<<2)|2,{46,95,0}}, +/* 24104 */ {(12<<2)|2,{46,95,0}}, +/* 24105 */ {(12<<2)|2,{46,95,0}}, +/* 24106 */ {(12<<2)|2,{46,95,0}}, +/* 24107 */ {(12<<2)|2,{46,95,0}}, +/* 24108 */ {(12<<2)|2,{46,95,0}}, +/* 24109 */ {(12<<2)|2,{46,95,0}}, +/* 24110 */ {(12<<2)|2,{46,95,0}}, +/* 24111 */ {(12<<2)|2,{46,95,0}}, +/* 24112 */ {(12<<2)|2,{46,98,0}}, +/* 24113 */ {(12<<2)|2,{46,98,0}}, +/* 24114 */ {(12<<2)|2,{46,98,0}}, +/* 24115 */ {(12<<2)|2,{46,98,0}}, +/* 24116 */ {(12<<2)|2,{46,98,0}}, +/* 24117 */ {(12<<2)|2,{46,98,0}}, +/* 24118 */ {(12<<2)|2,{46,98,0}}, +/* 24119 */ {(12<<2)|2,{46,98,0}}, +/* 24120 */ {(12<<2)|2,{46,98,0}}, +/* 24121 */ {(12<<2)|2,{46,98,0}}, +/* 24122 */ {(12<<2)|2,{46,98,0}}, +/* 24123 */ {(12<<2)|2,{46,98,0}}, +/* 24124 */ {(12<<2)|2,{46,98,0}}, +/* 24125 */ {(12<<2)|2,{46,98,0}}, +/* 24126 */ {(12<<2)|2,{46,98,0}}, +/* 24127 */ {(12<<2)|2,{46,98,0}}, +/* 24128 */ {(12<<2)|2,{46,100,0}}, +/* 24129 */ {(12<<2)|2,{46,100,0}}, +/* 24130 */ {(12<<2)|2,{46,100,0}}, +/* 24131 */ {(12<<2)|2,{46,100,0}}, +/* 24132 */ {(12<<2)|2,{46,100,0}}, +/* 24133 */ {(12<<2)|2,{46,100,0}}, +/* 24134 */ {(12<<2)|2,{46,100,0}}, +/* 24135 */ {(12<<2)|2,{46,100,0}}, +/* 24136 */ {(12<<2)|2,{46,100,0}}, +/* 24137 */ {(12<<2)|2,{46,100,0}}, +/* 24138 */ {(12<<2)|2,{46,100,0}}, +/* 24139 */ {(12<<2)|2,{46,100,0}}, +/* 24140 */ {(12<<2)|2,{46,100,0}}, +/* 24141 */ {(12<<2)|2,{46,100,0}}, +/* 24142 */ {(12<<2)|2,{46,100,0}}, +/* 24143 */ {(12<<2)|2,{46,100,0}}, +/* 24144 */ {(12<<2)|2,{46,102,0}}, +/* 24145 */ {(12<<2)|2,{46,102,0}}, +/* 24146 */ {(12<<2)|2,{46,102,0}}, +/* 24147 */ {(12<<2)|2,{46,102,0}}, +/* 24148 */ {(12<<2)|2,{46,102,0}}, +/* 24149 */ {(12<<2)|2,{46,102,0}}, +/* 24150 */ {(12<<2)|2,{46,102,0}}, +/* 24151 */ {(12<<2)|2,{46,102,0}}, +/* 24152 */ {(12<<2)|2,{46,102,0}}, +/* 24153 */ {(12<<2)|2,{46,102,0}}, +/* 24154 */ {(12<<2)|2,{46,102,0}}, +/* 24155 */ {(12<<2)|2,{46,102,0}}, +/* 24156 */ {(12<<2)|2,{46,102,0}}, +/* 24157 */ {(12<<2)|2,{46,102,0}}, +/* 24158 */ {(12<<2)|2,{46,102,0}}, +/* 24159 */ {(12<<2)|2,{46,102,0}}, +/* 24160 */ {(12<<2)|2,{46,103,0}}, +/* 24161 */ {(12<<2)|2,{46,103,0}}, +/* 24162 */ {(12<<2)|2,{46,103,0}}, +/* 24163 */ {(12<<2)|2,{46,103,0}}, +/* 24164 */ {(12<<2)|2,{46,103,0}}, +/* 24165 */ {(12<<2)|2,{46,103,0}}, +/* 24166 */ {(12<<2)|2,{46,103,0}}, +/* 24167 */ {(12<<2)|2,{46,103,0}}, +/* 24168 */ {(12<<2)|2,{46,103,0}}, +/* 24169 */ {(12<<2)|2,{46,103,0}}, +/* 24170 */ {(12<<2)|2,{46,103,0}}, +/* 24171 */ {(12<<2)|2,{46,103,0}}, +/* 24172 */ {(12<<2)|2,{46,103,0}}, +/* 24173 */ {(12<<2)|2,{46,103,0}}, +/* 24174 */ {(12<<2)|2,{46,103,0}}, +/* 24175 */ {(12<<2)|2,{46,103,0}}, +/* 24176 */ {(12<<2)|2,{46,104,0}}, +/* 24177 */ {(12<<2)|2,{46,104,0}}, +/* 24178 */ {(12<<2)|2,{46,104,0}}, +/* 24179 */ {(12<<2)|2,{46,104,0}}, +/* 24180 */ {(12<<2)|2,{46,104,0}}, +/* 24181 */ {(12<<2)|2,{46,104,0}}, +/* 24182 */ {(12<<2)|2,{46,104,0}}, +/* 24183 */ {(12<<2)|2,{46,104,0}}, +/* 24184 */ {(12<<2)|2,{46,104,0}}, +/* 24185 */ {(12<<2)|2,{46,104,0}}, +/* 24186 */ {(12<<2)|2,{46,104,0}}, +/* 24187 */ {(12<<2)|2,{46,104,0}}, +/* 24188 */ {(12<<2)|2,{46,104,0}}, +/* 24189 */ {(12<<2)|2,{46,104,0}}, +/* 24190 */ {(12<<2)|2,{46,104,0}}, +/* 24191 */ {(12<<2)|2,{46,104,0}}, +/* 24192 */ {(12<<2)|2,{46,108,0}}, +/* 24193 */ {(12<<2)|2,{46,108,0}}, +/* 24194 */ {(12<<2)|2,{46,108,0}}, +/* 24195 */ {(12<<2)|2,{46,108,0}}, +/* 24196 */ {(12<<2)|2,{46,108,0}}, +/* 24197 */ {(12<<2)|2,{46,108,0}}, +/* 24198 */ {(12<<2)|2,{46,108,0}}, +/* 24199 */ {(12<<2)|2,{46,108,0}}, +/* 24200 */ {(12<<2)|2,{46,108,0}}, +/* 24201 */ {(12<<2)|2,{46,108,0}}, +/* 24202 */ {(12<<2)|2,{46,108,0}}, +/* 24203 */ {(12<<2)|2,{46,108,0}}, +/* 24204 */ {(12<<2)|2,{46,108,0}}, +/* 24205 */ {(12<<2)|2,{46,108,0}}, +/* 24206 */ {(12<<2)|2,{46,108,0}}, +/* 24207 */ {(12<<2)|2,{46,108,0}}, +/* 24208 */ {(12<<2)|2,{46,109,0}}, +/* 24209 */ {(12<<2)|2,{46,109,0}}, +/* 24210 */ {(12<<2)|2,{46,109,0}}, +/* 24211 */ {(12<<2)|2,{46,109,0}}, +/* 24212 */ {(12<<2)|2,{46,109,0}}, +/* 24213 */ {(12<<2)|2,{46,109,0}}, +/* 24214 */ {(12<<2)|2,{46,109,0}}, +/* 24215 */ {(12<<2)|2,{46,109,0}}, +/* 24216 */ {(12<<2)|2,{46,109,0}}, +/* 24217 */ {(12<<2)|2,{46,109,0}}, +/* 24218 */ {(12<<2)|2,{46,109,0}}, +/* 24219 */ {(12<<2)|2,{46,109,0}}, +/* 24220 */ {(12<<2)|2,{46,109,0}}, +/* 24221 */ {(12<<2)|2,{46,109,0}}, +/* 24222 */ {(12<<2)|2,{46,109,0}}, +/* 24223 */ {(12<<2)|2,{46,109,0}}, +/* 24224 */ {(12<<2)|2,{46,110,0}}, +/* 24225 */ {(12<<2)|2,{46,110,0}}, +/* 24226 */ {(12<<2)|2,{46,110,0}}, +/* 24227 */ {(12<<2)|2,{46,110,0}}, +/* 24228 */ {(12<<2)|2,{46,110,0}}, +/* 24229 */ {(12<<2)|2,{46,110,0}}, +/* 24230 */ {(12<<2)|2,{46,110,0}}, +/* 24231 */ {(12<<2)|2,{46,110,0}}, +/* 24232 */ {(12<<2)|2,{46,110,0}}, +/* 24233 */ {(12<<2)|2,{46,110,0}}, +/* 24234 */ {(12<<2)|2,{46,110,0}}, +/* 24235 */ {(12<<2)|2,{46,110,0}}, +/* 24236 */ {(12<<2)|2,{46,110,0}}, +/* 24237 */ {(12<<2)|2,{46,110,0}}, +/* 24238 */ {(12<<2)|2,{46,110,0}}, +/* 24239 */ {(12<<2)|2,{46,110,0}}, +/* 24240 */ {(12<<2)|2,{46,112,0}}, +/* 24241 */ {(12<<2)|2,{46,112,0}}, +/* 24242 */ {(12<<2)|2,{46,112,0}}, +/* 24243 */ {(12<<2)|2,{46,112,0}}, +/* 24244 */ {(12<<2)|2,{46,112,0}}, +/* 24245 */ {(12<<2)|2,{46,112,0}}, +/* 24246 */ {(12<<2)|2,{46,112,0}}, +/* 24247 */ {(12<<2)|2,{46,112,0}}, +/* 24248 */ {(12<<2)|2,{46,112,0}}, +/* 24249 */ {(12<<2)|2,{46,112,0}}, +/* 24250 */ {(12<<2)|2,{46,112,0}}, +/* 24251 */ {(12<<2)|2,{46,112,0}}, +/* 24252 */ {(12<<2)|2,{46,112,0}}, +/* 24253 */ {(12<<2)|2,{46,112,0}}, +/* 24254 */ {(12<<2)|2,{46,112,0}}, +/* 24255 */ {(12<<2)|2,{46,112,0}}, +/* 24256 */ {(12<<2)|2,{46,114,0}}, +/* 24257 */ {(12<<2)|2,{46,114,0}}, +/* 24258 */ {(12<<2)|2,{46,114,0}}, +/* 24259 */ {(12<<2)|2,{46,114,0}}, +/* 24260 */ {(12<<2)|2,{46,114,0}}, +/* 24261 */ {(12<<2)|2,{46,114,0}}, +/* 24262 */ {(12<<2)|2,{46,114,0}}, +/* 24263 */ {(12<<2)|2,{46,114,0}}, +/* 24264 */ {(12<<2)|2,{46,114,0}}, +/* 24265 */ {(12<<2)|2,{46,114,0}}, +/* 24266 */ {(12<<2)|2,{46,114,0}}, +/* 24267 */ {(12<<2)|2,{46,114,0}}, +/* 24268 */ {(12<<2)|2,{46,114,0}}, +/* 24269 */ {(12<<2)|2,{46,114,0}}, +/* 24270 */ {(12<<2)|2,{46,114,0}}, +/* 24271 */ {(12<<2)|2,{46,114,0}}, +/* 24272 */ {(12<<2)|2,{46,117,0}}, +/* 24273 */ {(12<<2)|2,{46,117,0}}, +/* 24274 */ {(12<<2)|2,{46,117,0}}, +/* 24275 */ {(12<<2)|2,{46,117,0}}, +/* 24276 */ {(12<<2)|2,{46,117,0}}, +/* 24277 */ {(12<<2)|2,{46,117,0}}, +/* 24278 */ {(12<<2)|2,{46,117,0}}, +/* 24279 */ {(12<<2)|2,{46,117,0}}, +/* 24280 */ {(12<<2)|2,{46,117,0}}, +/* 24281 */ {(12<<2)|2,{46,117,0}}, +/* 24282 */ {(12<<2)|2,{46,117,0}}, +/* 24283 */ {(12<<2)|2,{46,117,0}}, +/* 24284 */ {(12<<2)|2,{46,117,0}}, +/* 24285 */ {(12<<2)|2,{46,117,0}}, +/* 24286 */ {(12<<2)|2,{46,117,0}}, +/* 24287 */ {(12<<2)|2,{46,117,0}}, +/* 24288 */ {(13<<2)|2,{46,58,0}}, +/* 24289 */ {(13<<2)|2,{46,58,0}}, +/* 24290 */ {(13<<2)|2,{46,58,0}}, +/* 24291 */ {(13<<2)|2,{46,58,0}}, +/* 24292 */ {(13<<2)|2,{46,58,0}}, +/* 24293 */ {(13<<2)|2,{46,58,0}}, +/* 24294 */ {(13<<2)|2,{46,58,0}}, +/* 24295 */ {(13<<2)|2,{46,58,0}}, +/* 24296 */ {(13<<2)|2,{46,66,0}}, +/* 24297 */ {(13<<2)|2,{46,66,0}}, +/* 24298 */ {(13<<2)|2,{46,66,0}}, +/* 24299 */ {(13<<2)|2,{46,66,0}}, +/* 24300 */ {(13<<2)|2,{46,66,0}}, +/* 24301 */ {(13<<2)|2,{46,66,0}}, +/* 24302 */ {(13<<2)|2,{46,66,0}}, +/* 24303 */ {(13<<2)|2,{46,66,0}}, +/* 24304 */ {(13<<2)|2,{46,67,0}}, +/* 24305 */ {(13<<2)|2,{46,67,0}}, +/* 24306 */ {(13<<2)|2,{46,67,0}}, +/* 24307 */ {(13<<2)|2,{46,67,0}}, +/* 24308 */ {(13<<2)|2,{46,67,0}}, +/* 24309 */ {(13<<2)|2,{46,67,0}}, +/* 24310 */ {(13<<2)|2,{46,67,0}}, +/* 24311 */ {(13<<2)|2,{46,67,0}}, +/* 24312 */ {(13<<2)|2,{46,68,0}}, +/* 24313 */ {(13<<2)|2,{46,68,0}}, +/* 24314 */ {(13<<2)|2,{46,68,0}}, +/* 24315 */ {(13<<2)|2,{46,68,0}}, +/* 24316 */ {(13<<2)|2,{46,68,0}}, +/* 24317 */ {(13<<2)|2,{46,68,0}}, +/* 24318 */ {(13<<2)|2,{46,68,0}}, +/* 24319 */ {(13<<2)|2,{46,68,0}}, +/* 24320 */ {(13<<2)|2,{46,69,0}}, +/* 24321 */ {(13<<2)|2,{46,69,0}}, +/* 24322 */ {(13<<2)|2,{46,69,0}}, +/* 24323 */ {(13<<2)|2,{46,69,0}}, +/* 24324 */ {(13<<2)|2,{46,69,0}}, +/* 24325 */ {(13<<2)|2,{46,69,0}}, +/* 24326 */ {(13<<2)|2,{46,69,0}}, +/* 24327 */ {(13<<2)|2,{46,69,0}}, +/* 24328 */ {(13<<2)|2,{46,70,0}}, +/* 24329 */ {(13<<2)|2,{46,70,0}}, +/* 24330 */ {(13<<2)|2,{46,70,0}}, +/* 24331 */ {(13<<2)|2,{46,70,0}}, +/* 24332 */ {(13<<2)|2,{46,70,0}}, +/* 24333 */ {(13<<2)|2,{46,70,0}}, +/* 24334 */ {(13<<2)|2,{46,70,0}}, +/* 24335 */ {(13<<2)|2,{46,70,0}}, +/* 24336 */ {(13<<2)|2,{46,71,0}}, +/* 24337 */ {(13<<2)|2,{46,71,0}}, +/* 24338 */ {(13<<2)|2,{46,71,0}}, +/* 24339 */ {(13<<2)|2,{46,71,0}}, +/* 24340 */ {(13<<2)|2,{46,71,0}}, +/* 24341 */ {(13<<2)|2,{46,71,0}}, +/* 24342 */ {(13<<2)|2,{46,71,0}}, +/* 24343 */ {(13<<2)|2,{46,71,0}}, +/* 24344 */ {(13<<2)|2,{46,72,0}}, +/* 24345 */ {(13<<2)|2,{46,72,0}}, +/* 24346 */ {(13<<2)|2,{46,72,0}}, +/* 24347 */ {(13<<2)|2,{46,72,0}}, +/* 24348 */ {(13<<2)|2,{46,72,0}}, +/* 24349 */ {(13<<2)|2,{46,72,0}}, +/* 24350 */ {(13<<2)|2,{46,72,0}}, +/* 24351 */ {(13<<2)|2,{46,72,0}}, +/* 24352 */ {(13<<2)|2,{46,73,0}}, +/* 24353 */ {(13<<2)|2,{46,73,0}}, +/* 24354 */ {(13<<2)|2,{46,73,0}}, +/* 24355 */ {(13<<2)|2,{46,73,0}}, +/* 24356 */ {(13<<2)|2,{46,73,0}}, +/* 24357 */ {(13<<2)|2,{46,73,0}}, +/* 24358 */ {(13<<2)|2,{46,73,0}}, +/* 24359 */ {(13<<2)|2,{46,73,0}}, +/* 24360 */ {(13<<2)|2,{46,74,0}}, +/* 24361 */ {(13<<2)|2,{46,74,0}}, +/* 24362 */ {(13<<2)|2,{46,74,0}}, +/* 24363 */ {(13<<2)|2,{46,74,0}}, +/* 24364 */ {(13<<2)|2,{46,74,0}}, +/* 24365 */ {(13<<2)|2,{46,74,0}}, +/* 24366 */ {(13<<2)|2,{46,74,0}}, +/* 24367 */ {(13<<2)|2,{46,74,0}}, +/* 24368 */ {(13<<2)|2,{46,75,0}}, +/* 24369 */ {(13<<2)|2,{46,75,0}}, +/* 24370 */ {(13<<2)|2,{46,75,0}}, +/* 24371 */ {(13<<2)|2,{46,75,0}}, +/* 24372 */ {(13<<2)|2,{46,75,0}}, +/* 24373 */ {(13<<2)|2,{46,75,0}}, +/* 24374 */ {(13<<2)|2,{46,75,0}}, +/* 24375 */ {(13<<2)|2,{46,75,0}}, +/* 24376 */ {(13<<2)|2,{46,76,0}}, +/* 24377 */ {(13<<2)|2,{46,76,0}}, +/* 24378 */ {(13<<2)|2,{46,76,0}}, +/* 24379 */ {(13<<2)|2,{46,76,0}}, +/* 24380 */ {(13<<2)|2,{46,76,0}}, +/* 24381 */ {(13<<2)|2,{46,76,0}}, +/* 24382 */ {(13<<2)|2,{46,76,0}}, +/* 24383 */ {(13<<2)|2,{46,76,0}}, +/* 24384 */ {(13<<2)|2,{46,77,0}}, +/* 24385 */ {(13<<2)|2,{46,77,0}}, +/* 24386 */ {(13<<2)|2,{46,77,0}}, +/* 24387 */ {(13<<2)|2,{46,77,0}}, +/* 24388 */ {(13<<2)|2,{46,77,0}}, +/* 24389 */ {(13<<2)|2,{46,77,0}}, +/* 24390 */ {(13<<2)|2,{46,77,0}}, +/* 24391 */ {(13<<2)|2,{46,77,0}}, +/* 24392 */ {(13<<2)|2,{46,78,0}}, +/* 24393 */ {(13<<2)|2,{46,78,0}}, +/* 24394 */ {(13<<2)|2,{46,78,0}}, +/* 24395 */ {(13<<2)|2,{46,78,0}}, +/* 24396 */ {(13<<2)|2,{46,78,0}}, +/* 24397 */ {(13<<2)|2,{46,78,0}}, +/* 24398 */ {(13<<2)|2,{46,78,0}}, +/* 24399 */ {(13<<2)|2,{46,78,0}}, +/* 24400 */ {(13<<2)|2,{46,79,0}}, +/* 24401 */ {(13<<2)|2,{46,79,0}}, +/* 24402 */ {(13<<2)|2,{46,79,0}}, +/* 24403 */ {(13<<2)|2,{46,79,0}}, +/* 24404 */ {(13<<2)|2,{46,79,0}}, +/* 24405 */ {(13<<2)|2,{46,79,0}}, +/* 24406 */ {(13<<2)|2,{46,79,0}}, +/* 24407 */ {(13<<2)|2,{46,79,0}}, +/* 24408 */ {(13<<2)|2,{46,80,0}}, +/* 24409 */ {(13<<2)|2,{46,80,0}}, +/* 24410 */ {(13<<2)|2,{46,80,0}}, +/* 24411 */ {(13<<2)|2,{46,80,0}}, +/* 24412 */ {(13<<2)|2,{46,80,0}}, +/* 24413 */ {(13<<2)|2,{46,80,0}}, +/* 24414 */ {(13<<2)|2,{46,80,0}}, +/* 24415 */ {(13<<2)|2,{46,80,0}}, +/* 24416 */ {(13<<2)|2,{46,81,0}}, +/* 24417 */ {(13<<2)|2,{46,81,0}}, +/* 24418 */ {(13<<2)|2,{46,81,0}}, +/* 24419 */ {(13<<2)|2,{46,81,0}}, +/* 24420 */ {(13<<2)|2,{46,81,0}}, +/* 24421 */ {(13<<2)|2,{46,81,0}}, +/* 24422 */ {(13<<2)|2,{46,81,0}}, +/* 24423 */ {(13<<2)|2,{46,81,0}}, +/* 24424 */ {(13<<2)|2,{46,82,0}}, +/* 24425 */ {(13<<2)|2,{46,82,0}}, +/* 24426 */ {(13<<2)|2,{46,82,0}}, +/* 24427 */ {(13<<2)|2,{46,82,0}}, +/* 24428 */ {(13<<2)|2,{46,82,0}}, +/* 24429 */ {(13<<2)|2,{46,82,0}}, +/* 24430 */ {(13<<2)|2,{46,82,0}}, +/* 24431 */ {(13<<2)|2,{46,82,0}}, +/* 24432 */ {(13<<2)|2,{46,83,0}}, +/* 24433 */ {(13<<2)|2,{46,83,0}}, +/* 24434 */ {(13<<2)|2,{46,83,0}}, +/* 24435 */ {(13<<2)|2,{46,83,0}}, +/* 24436 */ {(13<<2)|2,{46,83,0}}, +/* 24437 */ {(13<<2)|2,{46,83,0}}, +/* 24438 */ {(13<<2)|2,{46,83,0}}, +/* 24439 */ {(13<<2)|2,{46,83,0}}, +/* 24440 */ {(13<<2)|2,{46,84,0}}, +/* 24441 */ {(13<<2)|2,{46,84,0}}, +/* 24442 */ {(13<<2)|2,{46,84,0}}, +/* 24443 */ {(13<<2)|2,{46,84,0}}, +/* 24444 */ {(13<<2)|2,{46,84,0}}, +/* 24445 */ {(13<<2)|2,{46,84,0}}, +/* 24446 */ {(13<<2)|2,{46,84,0}}, +/* 24447 */ {(13<<2)|2,{46,84,0}}, +/* 24448 */ {(13<<2)|2,{46,85,0}}, +/* 24449 */ {(13<<2)|2,{46,85,0}}, +/* 24450 */ {(13<<2)|2,{46,85,0}}, +/* 24451 */ {(13<<2)|2,{46,85,0}}, +/* 24452 */ {(13<<2)|2,{46,85,0}}, +/* 24453 */ {(13<<2)|2,{46,85,0}}, +/* 24454 */ {(13<<2)|2,{46,85,0}}, +/* 24455 */ {(13<<2)|2,{46,85,0}}, +/* 24456 */ {(13<<2)|2,{46,86,0}}, +/* 24457 */ {(13<<2)|2,{46,86,0}}, +/* 24458 */ {(13<<2)|2,{46,86,0}}, +/* 24459 */ {(13<<2)|2,{46,86,0}}, +/* 24460 */ {(13<<2)|2,{46,86,0}}, +/* 24461 */ {(13<<2)|2,{46,86,0}}, +/* 24462 */ {(13<<2)|2,{46,86,0}}, +/* 24463 */ {(13<<2)|2,{46,86,0}}, +/* 24464 */ {(13<<2)|2,{46,87,0}}, +/* 24465 */ {(13<<2)|2,{46,87,0}}, +/* 24466 */ {(13<<2)|2,{46,87,0}}, +/* 24467 */ {(13<<2)|2,{46,87,0}}, +/* 24468 */ {(13<<2)|2,{46,87,0}}, +/* 24469 */ {(13<<2)|2,{46,87,0}}, +/* 24470 */ {(13<<2)|2,{46,87,0}}, +/* 24471 */ {(13<<2)|2,{46,87,0}}, +/* 24472 */ {(13<<2)|2,{46,89,0}}, +/* 24473 */ {(13<<2)|2,{46,89,0}}, +/* 24474 */ {(13<<2)|2,{46,89,0}}, +/* 24475 */ {(13<<2)|2,{46,89,0}}, +/* 24476 */ {(13<<2)|2,{46,89,0}}, +/* 24477 */ {(13<<2)|2,{46,89,0}}, +/* 24478 */ {(13<<2)|2,{46,89,0}}, +/* 24479 */ {(13<<2)|2,{46,89,0}}, +/* 24480 */ {(13<<2)|2,{46,106,0}}, +/* 24481 */ {(13<<2)|2,{46,106,0}}, +/* 24482 */ {(13<<2)|2,{46,106,0}}, +/* 24483 */ {(13<<2)|2,{46,106,0}}, +/* 24484 */ {(13<<2)|2,{46,106,0}}, +/* 24485 */ {(13<<2)|2,{46,106,0}}, +/* 24486 */ {(13<<2)|2,{46,106,0}}, +/* 24487 */ {(13<<2)|2,{46,106,0}}, +/* 24488 */ {(13<<2)|2,{46,107,0}}, +/* 24489 */ {(13<<2)|2,{46,107,0}}, +/* 24490 */ {(13<<2)|2,{46,107,0}}, +/* 24491 */ {(13<<2)|2,{46,107,0}}, +/* 24492 */ {(13<<2)|2,{46,107,0}}, +/* 24493 */ {(13<<2)|2,{46,107,0}}, +/* 24494 */ {(13<<2)|2,{46,107,0}}, +/* 24495 */ {(13<<2)|2,{46,107,0}}, +/* 24496 */ {(13<<2)|2,{46,113,0}}, +/* 24497 */ {(13<<2)|2,{46,113,0}}, +/* 24498 */ {(13<<2)|2,{46,113,0}}, +/* 24499 */ {(13<<2)|2,{46,113,0}}, +/* 24500 */ {(13<<2)|2,{46,113,0}}, +/* 24501 */ {(13<<2)|2,{46,113,0}}, +/* 24502 */ {(13<<2)|2,{46,113,0}}, +/* 24503 */ {(13<<2)|2,{46,113,0}}, +/* 24504 */ {(13<<2)|2,{46,118,0}}, +/* 24505 */ {(13<<2)|2,{46,118,0}}, +/* 24506 */ {(13<<2)|2,{46,118,0}}, +/* 24507 */ {(13<<2)|2,{46,118,0}}, +/* 24508 */ {(13<<2)|2,{46,118,0}}, +/* 24509 */ {(13<<2)|2,{46,118,0}}, +/* 24510 */ {(13<<2)|2,{46,118,0}}, +/* 24511 */ {(13<<2)|2,{46,118,0}}, +/* 24512 */ {(13<<2)|2,{46,119,0}}, +/* 24513 */ {(13<<2)|2,{46,119,0}}, +/* 24514 */ {(13<<2)|2,{46,119,0}}, +/* 24515 */ {(13<<2)|2,{46,119,0}}, +/* 24516 */ {(13<<2)|2,{46,119,0}}, +/* 24517 */ {(13<<2)|2,{46,119,0}}, +/* 24518 */ {(13<<2)|2,{46,119,0}}, +/* 24519 */ {(13<<2)|2,{46,119,0}}, +/* 24520 */ {(13<<2)|2,{46,120,0}}, +/* 24521 */ {(13<<2)|2,{46,120,0}}, +/* 24522 */ {(13<<2)|2,{46,120,0}}, +/* 24523 */ {(13<<2)|2,{46,120,0}}, +/* 24524 */ {(13<<2)|2,{46,120,0}}, +/* 24525 */ {(13<<2)|2,{46,120,0}}, +/* 24526 */ {(13<<2)|2,{46,120,0}}, +/* 24527 */ {(13<<2)|2,{46,120,0}}, +/* 24528 */ {(13<<2)|2,{46,121,0}}, +/* 24529 */ {(13<<2)|2,{46,121,0}}, +/* 24530 */ {(13<<2)|2,{46,121,0}}, +/* 24531 */ {(13<<2)|2,{46,121,0}}, +/* 24532 */ {(13<<2)|2,{46,121,0}}, +/* 24533 */ {(13<<2)|2,{46,121,0}}, +/* 24534 */ {(13<<2)|2,{46,121,0}}, +/* 24535 */ {(13<<2)|2,{46,121,0}}, +/* 24536 */ {(13<<2)|2,{46,122,0}}, +/* 24537 */ {(13<<2)|2,{46,122,0}}, +/* 24538 */ {(13<<2)|2,{46,122,0}}, +/* 24539 */ {(13<<2)|2,{46,122,0}}, +/* 24540 */ {(13<<2)|2,{46,122,0}}, +/* 24541 */ {(13<<2)|2,{46,122,0}}, +/* 24542 */ {(13<<2)|2,{46,122,0}}, +/* 24543 */ {(13<<2)|2,{46,122,0}}, +/* 24544 */ {(14<<2)|2,{46,38,0}}, +/* 24545 */ {(14<<2)|2,{46,38,0}}, +/* 24546 */ {(14<<2)|2,{46,38,0}}, +/* 24547 */ {(14<<2)|2,{46,38,0}}, +/* 24548 */ {(14<<2)|2,{46,42,0}}, +/* 24549 */ {(14<<2)|2,{46,42,0}}, +/* 24550 */ {(14<<2)|2,{46,42,0}}, +/* 24551 */ {(14<<2)|2,{46,42,0}}, +/* 24552 */ {(14<<2)|2,{46,44,0}}, +/* 24553 */ {(14<<2)|2,{46,44,0}}, +/* 24554 */ {(14<<2)|2,{46,44,0}}, +/* 24555 */ {(14<<2)|2,{46,44,0}}, +/* 24556 */ {(14<<2)|2,{46,59,0}}, +/* 24557 */ {(14<<2)|2,{46,59,0}}, +/* 24558 */ {(14<<2)|2,{46,59,0}}, +/* 24559 */ {(14<<2)|2,{46,59,0}}, +/* 24560 */ {(14<<2)|2,{46,88,0}}, +/* 24561 */ {(14<<2)|2,{46,88,0}}, +/* 24562 */ {(14<<2)|2,{46,88,0}}, +/* 24563 */ {(14<<2)|2,{46,88,0}}, +/* 24564 */ {(14<<2)|2,{46,90,0}}, +/* 24565 */ {(14<<2)|2,{46,90,0}}, +/* 24566 */ {(14<<2)|2,{46,90,0}}, +/* 24567 */ {(14<<2)|2,{46,90,0}}, +/* 24568 */ {(16<<2)|2,{46,33,0}}, +/* 24569 */ {(16<<2)|2,{46,34,0}}, +/* 24570 */ {(16<<2)|2,{46,40,0}}, +/* 24571 */ {(16<<2)|2,{46,41,0}}, +/* 24572 */ {(16<<2)|2,{46,63,0}}, +/* 24573 */ {(6<<2)|1,{46,0,0}}, +/* 24574 */ {(6<<2)|1,{46,0,0}}, +/* 24575 */ {(6<<2)|1,{46,0,0}}, +/* 24576 */ {(16<<2)|3,{47,48,48}}, +/* 24577 */ {(16<<2)|3,{47,48,49}}, +/* 24578 */ {(16<<2)|3,{47,48,50}}, +/* 24579 */ {(16<<2)|3,{47,48,97}}, +/* 24580 */ {(16<<2)|3,{47,48,99}}, +/* 24581 */ {(16<<2)|3,{47,48,101}}, +/* 24582 */ {(16<<2)|3,{47,48,105}}, +/* 24583 */ {(16<<2)|3,{47,48,111}}, +/* 24584 */ {(16<<2)|3,{47,48,115}}, +/* 24585 */ {(16<<2)|3,{47,48,116}}, +/* 24586 */ {(11<<2)|2,{47,48,0}}, +/* 24587 */ {(11<<2)|2,{47,48,0}}, +/* 24588 */ {(11<<2)|2,{47,48,0}}, +/* 24589 */ {(11<<2)|2,{47,48,0}}, +/* 24590 */ {(11<<2)|2,{47,48,0}}, +/* 24591 */ {(11<<2)|2,{47,48,0}}, +/* 24592 */ {(11<<2)|2,{47,48,0}}, +/* 24593 */ {(11<<2)|2,{47,48,0}}, +/* 24594 */ {(11<<2)|2,{47,48,0}}, +/* 24595 */ {(11<<2)|2,{47,48,0}}, +/* 24596 */ {(11<<2)|2,{47,48,0}}, +/* 24597 */ {(11<<2)|2,{47,48,0}}, +/* 24598 */ {(11<<2)|2,{47,48,0}}, +/* 24599 */ {(11<<2)|2,{47,48,0}}, +/* 24600 */ {(11<<2)|2,{47,48,0}}, +/* 24601 */ {(11<<2)|2,{47,48,0}}, +/* 24602 */ {(11<<2)|2,{47,48,0}}, +/* 24603 */ {(11<<2)|2,{47,48,0}}, +/* 24604 */ {(11<<2)|2,{47,48,0}}, +/* 24605 */ {(11<<2)|2,{47,48,0}}, +/* 24606 */ {(11<<2)|2,{47,48,0}}, +/* 24607 */ {(11<<2)|2,{47,48,0}}, +/* 24608 */ {(16<<2)|3,{47,49,48}}, +/* 24609 */ {(16<<2)|3,{47,49,49}}, +/* 24610 */ {(16<<2)|3,{47,49,50}}, +/* 24611 */ {(16<<2)|3,{47,49,97}}, +/* 24612 */ {(16<<2)|3,{47,49,99}}, +/* 24613 */ {(16<<2)|3,{47,49,101}}, +/* 24614 */ {(16<<2)|3,{47,49,105}}, +/* 24615 */ {(16<<2)|3,{47,49,111}}, +/* 24616 */ {(16<<2)|3,{47,49,115}}, +/* 24617 */ {(16<<2)|3,{47,49,116}}, +/* 24618 */ {(11<<2)|2,{47,49,0}}, +/* 24619 */ {(11<<2)|2,{47,49,0}}, +/* 24620 */ {(11<<2)|2,{47,49,0}}, +/* 24621 */ {(11<<2)|2,{47,49,0}}, +/* 24622 */ {(11<<2)|2,{47,49,0}}, +/* 24623 */ {(11<<2)|2,{47,49,0}}, +/* 24624 */ {(11<<2)|2,{47,49,0}}, +/* 24625 */ {(11<<2)|2,{47,49,0}}, +/* 24626 */ {(11<<2)|2,{47,49,0}}, +/* 24627 */ {(11<<2)|2,{47,49,0}}, +/* 24628 */ {(11<<2)|2,{47,49,0}}, +/* 24629 */ {(11<<2)|2,{47,49,0}}, +/* 24630 */ {(11<<2)|2,{47,49,0}}, +/* 24631 */ {(11<<2)|2,{47,49,0}}, +/* 24632 */ {(11<<2)|2,{47,49,0}}, +/* 24633 */ {(11<<2)|2,{47,49,0}}, +/* 24634 */ {(11<<2)|2,{47,49,0}}, +/* 24635 */ {(11<<2)|2,{47,49,0}}, +/* 24636 */ {(11<<2)|2,{47,49,0}}, +/* 24637 */ {(11<<2)|2,{47,49,0}}, +/* 24638 */ {(11<<2)|2,{47,49,0}}, +/* 24639 */ {(11<<2)|2,{47,49,0}}, +/* 24640 */ {(16<<2)|3,{47,50,48}}, +/* 24641 */ {(16<<2)|3,{47,50,49}}, +/* 24642 */ {(16<<2)|3,{47,50,50}}, +/* 24643 */ {(16<<2)|3,{47,50,97}}, +/* 24644 */ {(16<<2)|3,{47,50,99}}, +/* 24645 */ {(16<<2)|3,{47,50,101}}, +/* 24646 */ {(16<<2)|3,{47,50,105}}, +/* 24647 */ {(16<<2)|3,{47,50,111}}, +/* 24648 */ {(16<<2)|3,{47,50,115}}, +/* 24649 */ {(16<<2)|3,{47,50,116}}, +/* 24650 */ {(11<<2)|2,{47,50,0}}, +/* 24651 */ {(11<<2)|2,{47,50,0}}, +/* 24652 */ {(11<<2)|2,{47,50,0}}, +/* 24653 */ {(11<<2)|2,{47,50,0}}, +/* 24654 */ {(11<<2)|2,{47,50,0}}, +/* 24655 */ {(11<<2)|2,{47,50,0}}, +/* 24656 */ {(11<<2)|2,{47,50,0}}, +/* 24657 */ {(11<<2)|2,{47,50,0}}, +/* 24658 */ {(11<<2)|2,{47,50,0}}, +/* 24659 */ {(11<<2)|2,{47,50,0}}, +/* 24660 */ {(11<<2)|2,{47,50,0}}, +/* 24661 */ {(11<<2)|2,{47,50,0}}, +/* 24662 */ {(11<<2)|2,{47,50,0}}, +/* 24663 */ {(11<<2)|2,{47,50,0}}, +/* 24664 */ {(11<<2)|2,{47,50,0}}, +/* 24665 */ {(11<<2)|2,{47,50,0}}, +/* 24666 */ {(11<<2)|2,{47,50,0}}, +/* 24667 */ {(11<<2)|2,{47,50,0}}, +/* 24668 */ {(11<<2)|2,{47,50,0}}, +/* 24669 */ {(11<<2)|2,{47,50,0}}, +/* 24670 */ {(11<<2)|2,{47,50,0}}, +/* 24671 */ {(11<<2)|2,{47,50,0}}, +/* 24672 */ {(16<<2)|3,{47,97,48}}, +/* 24673 */ {(16<<2)|3,{47,97,49}}, +/* 24674 */ {(16<<2)|3,{47,97,50}}, +/* 24675 */ {(16<<2)|3,{47,97,97}}, +/* 24676 */ {(16<<2)|3,{47,97,99}}, +/* 24677 */ {(16<<2)|3,{47,97,101}}, +/* 24678 */ {(16<<2)|3,{47,97,105}}, +/* 24679 */ {(16<<2)|3,{47,97,111}}, +/* 24680 */ {(16<<2)|3,{47,97,115}}, +/* 24681 */ {(16<<2)|3,{47,97,116}}, +/* 24682 */ {(11<<2)|2,{47,97,0}}, +/* 24683 */ {(11<<2)|2,{47,97,0}}, +/* 24684 */ {(11<<2)|2,{47,97,0}}, +/* 24685 */ {(11<<2)|2,{47,97,0}}, +/* 24686 */ {(11<<2)|2,{47,97,0}}, +/* 24687 */ {(11<<2)|2,{47,97,0}}, +/* 24688 */ {(11<<2)|2,{47,97,0}}, +/* 24689 */ {(11<<2)|2,{47,97,0}}, +/* 24690 */ {(11<<2)|2,{47,97,0}}, +/* 24691 */ {(11<<2)|2,{47,97,0}}, +/* 24692 */ {(11<<2)|2,{47,97,0}}, +/* 24693 */ {(11<<2)|2,{47,97,0}}, +/* 24694 */ {(11<<2)|2,{47,97,0}}, +/* 24695 */ {(11<<2)|2,{47,97,0}}, +/* 24696 */ {(11<<2)|2,{47,97,0}}, +/* 24697 */ {(11<<2)|2,{47,97,0}}, +/* 24698 */ {(11<<2)|2,{47,97,0}}, +/* 24699 */ {(11<<2)|2,{47,97,0}}, +/* 24700 */ {(11<<2)|2,{47,97,0}}, +/* 24701 */ {(11<<2)|2,{47,97,0}}, +/* 24702 */ {(11<<2)|2,{47,97,0}}, +/* 24703 */ {(11<<2)|2,{47,97,0}}, +/* 24704 */ {(16<<2)|3,{47,99,48}}, +/* 24705 */ {(16<<2)|3,{47,99,49}}, +/* 24706 */ {(16<<2)|3,{47,99,50}}, +/* 24707 */ {(16<<2)|3,{47,99,97}}, +/* 24708 */ {(16<<2)|3,{47,99,99}}, +/* 24709 */ {(16<<2)|3,{47,99,101}}, +/* 24710 */ {(16<<2)|3,{47,99,105}}, +/* 24711 */ {(16<<2)|3,{47,99,111}}, +/* 24712 */ {(16<<2)|3,{47,99,115}}, +/* 24713 */ {(16<<2)|3,{47,99,116}}, +/* 24714 */ {(11<<2)|2,{47,99,0}}, +/* 24715 */ {(11<<2)|2,{47,99,0}}, +/* 24716 */ {(11<<2)|2,{47,99,0}}, +/* 24717 */ {(11<<2)|2,{47,99,0}}, +/* 24718 */ {(11<<2)|2,{47,99,0}}, +/* 24719 */ {(11<<2)|2,{47,99,0}}, +/* 24720 */ {(11<<2)|2,{47,99,0}}, +/* 24721 */ {(11<<2)|2,{47,99,0}}, +/* 24722 */ {(11<<2)|2,{47,99,0}}, +/* 24723 */ {(11<<2)|2,{47,99,0}}, +/* 24724 */ {(11<<2)|2,{47,99,0}}, +/* 24725 */ {(11<<2)|2,{47,99,0}}, +/* 24726 */ {(11<<2)|2,{47,99,0}}, +/* 24727 */ {(11<<2)|2,{47,99,0}}, +/* 24728 */ {(11<<2)|2,{47,99,0}}, +/* 24729 */ {(11<<2)|2,{47,99,0}}, +/* 24730 */ {(11<<2)|2,{47,99,0}}, +/* 24731 */ {(11<<2)|2,{47,99,0}}, +/* 24732 */ {(11<<2)|2,{47,99,0}}, +/* 24733 */ {(11<<2)|2,{47,99,0}}, +/* 24734 */ {(11<<2)|2,{47,99,0}}, +/* 24735 */ {(11<<2)|2,{47,99,0}}, +/* 24736 */ {(16<<2)|3,{47,101,48}}, +/* 24737 */ {(16<<2)|3,{47,101,49}}, +/* 24738 */ {(16<<2)|3,{47,101,50}}, +/* 24739 */ {(16<<2)|3,{47,101,97}}, +/* 24740 */ {(16<<2)|3,{47,101,99}}, +/* 24741 */ {(16<<2)|3,{47,101,101}}, +/* 24742 */ {(16<<2)|3,{47,101,105}}, +/* 24743 */ {(16<<2)|3,{47,101,111}}, +/* 24744 */ {(16<<2)|3,{47,101,115}}, +/* 24745 */ {(16<<2)|3,{47,101,116}}, +/* 24746 */ {(11<<2)|2,{47,101,0}}, +/* 24747 */ {(11<<2)|2,{47,101,0}}, +/* 24748 */ {(11<<2)|2,{47,101,0}}, +/* 24749 */ {(11<<2)|2,{47,101,0}}, +/* 24750 */ {(11<<2)|2,{47,101,0}}, +/* 24751 */ {(11<<2)|2,{47,101,0}}, +/* 24752 */ {(11<<2)|2,{47,101,0}}, +/* 24753 */ {(11<<2)|2,{47,101,0}}, +/* 24754 */ {(11<<2)|2,{47,101,0}}, +/* 24755 */ {(11<<2)|2,{47,101,0}}, +/* 24756 */ {(11<<2)|2,{47,101,0}}, +/* 24757 */ {(11<<2)|2,{47,101,0}}, +/* 24758 */ {(11<<2)|2,{47,101,0}}, +/* 24759 */ {(11<<2)|2,{47,101,0}}, +/* 24760 */ {(11<<2)|2,{47,101,0}}, +/* 24761 */ {(11<<2)|2,{47,101,0}}, +/* 24762 */ {(11<<2)|2,{47,101,0}}, +/* 24763 */ {(11<<2)|2,{47,101,0}}, +/* 24764 */ {(11<<2)|2,{47,101,0}}, +/* 24765 */ {(11<<2)|2,{47,101,0}}, +/* 24766 */ {(11<<2)|2,{47,101,0}}, +/* 24767 */ {(11<<2)|2,{47,101,0}}, +/* 24768 */ {(16<<2)|3,{47,105,48}}, +/* 24769 */ {(16<<2)|3,{47,105,49}}, +/* 24770 */ {(16<<2)|3,{47,105,50}}, +/* 24771 */ {(16<<2)|3,{47,105,97}}, +/* 24772 */ {(16<<2)|3,{47,105,99}}, +/* 24773 */ {(16<<2)|3,{47,105,101}}, +/* 24774 */ {(16<<2)|3,{47,105,105}}, +/* 24775 */ {(16<<2)|3,{47,105,111}}, +/* 24776 */ {(16<<2)|3,{47,105,115}}, +/* 24777 */ {(16<<2)|3,{47,105,116}}, +/* 24778 */ {(11<<2)|2,{47,105,0}}, +/* 24779 */ {(11<<2)|2,{47,105,0}}, +/* 24780 */ {(11<<2)|2,{47,105,0}}, +/* 24781 */ {(11<<2)|2,{47,105,0}}, +/* 24782 */ {(11<<2)|2,{47,105,0}}, +/* 24783 */ {(11<<2)|2,{47,105,0}}, +/* 24784 */ {(11<<2)|2,{47,105,0}}, +/* 24785 */ {(11<<2)|2,{47,105,0}}, +/* 24786 */ {(11<<2)|2,{47,105,0}}, +/* 24787 */ {(11<<2)|2,{47,105,0}}, +/* 24788 */ {(11<<2)|2,{47,105,0}}, +/* 24789 */ {(11<<2)|2,{47,105,0}}, +/* 24790 */ {(11<<2)|2,{47,105,0}}, +/* 24791 */ {(11<<2)|2,{47,105,0}}, +/* 24792 */ {(11<<2)|2,{47,105,0}}, +/* 24793 */ {(11<<2)|2,{47,105,0}}, +/* 24794 */ {(11<<2)|2,{47,105,0}}, +/* 24795 */ {(11<<2)|2,{47,105,0}}, +/* 24796 */ {(11<<2)|2,{47,105,0}}, +/* 24797 */ {(11<<2)|2,{47,105,0}}, +/* 24798 */ {(11<<2)|2,{47,105,0}}, +/* 24799 */ {(11<<2)|2,{47,105,0}}, +/* 24800 */ {(16<<2)|3,{47,111,48}}, +/* 24801 */ {(16<<2)|3,{47,111,49}}, +/* 24802 */ {(16<<2)|3,{47,111,50}}, +/* 24803 */ {(16<<2)|3,{47,111,97}}, +/* 24804 */ {(16<<2)|3,{47,111,99}}, +/* 24805 */ {(16<<2)|3,{47,111,101}}, +/* 24806 */ {(16<<2)|3,{47,111,105}}, +/* 24807 */ {(16<<2)|3,{47,111,111}}, +/* 24808 */ {(16<<2)|3,{47,111,115}}, +/* 24809 */ {(16<<2)|3,{47,111,116}}, +/* 24810 */ {(11<<2)|2,{47,111,0}}, +/* 24811 */ {(11<<2)|2,{47,111,0}}, +/* 24812 */ {(11<<2)|2,{47,111,0}}, +/* 24813 */ {(11<<2)|2,{47,111,0}}, +/* 24814 */ {(11<<2)|2,{47,111,0}}, +/* 24815 */ {(11<<2)|2,{47,111,0}}, +/* 24816 */ {(11<<2)|2,{47,111,0}}, +/* 24817 */ {(11<<2)|2,{47,111,0}}, +/* 24818 */ {(11<<2)|2,{47,111,0}}, +/* 24819 */ {(11<<2)|2,{47,111,0}}, +/* 24820 */ {(11<<2)|2,{47,111,0}}, +/* 24821 */ {(11<<2)|2,{47,111,0}}, +/* 24822 */ {(11<<2)|2,{47,111,0}}, +/* 24823 */ {(11<<2)|2,{47,111,0}}, +/* 24824 */ {(11<<2)|2,{47,111,0}}, +/* 24825 */ {(11<<2)|2,{47,111,0}}, +/* 24826 */ {(11<<2)|2,{47,111,0}}, +/* 24827 */ {(11<<2)|2,{47,111,0}}, +/* 24828 */ {(11<<2)|2,{47,111,0}}, +/* 24829 */ {(11<<2)|2,{47,111,0}}, +/* 24830 */ {(11<<2)|2,{47,111,0}}, +/* 24831 */ {(11<<2)|2,{47,111,0}}, +/* 24832 */ {(16<<2)|3,{47,115,48}}, +/* 24833 */ {(16<<2)|3,{47,115,49}}, +/* 24834 */ {(16<<2)|3,{47,115,50}}, +/* 24835 */ {(16<<2)|3,{47,115,97}}, +/* 24836 */ {(16<<2)|3,{47,115,99}}, +/* 24837 */ {(16<<2)|3,{47,115,101}}, +/* 24838 */ {(16<<2)|3,{47,115,105}}, +/* 24839 */ {(16<<2)|3,{47,115,111}}, +/* 24840 */ {(16<<2)|3,{47,115,115}}, +/* 24841 */ {(16<<2)|3,{47,115,116}}, +/* 24842 */ {(11<<2)|2,{47,115,0}}, +/* 24843 */ {(11<<2)|2,{47,115,0}}, +/* 24844 */ {(11<<2)|2,{47,115,0}}, +/* 24845 */ {(11<<2)|2,{47,115,0}}, +/* 24846 */ {(11<<2)|2,{47,115,0}}, +/* 24847 */ {(11<<2)|2,{47,115,0}}, +/* 24848 */ {(11<<2)|2,{47,115,0}}, +/* 24849 */ {(11<<2)|2,{47,115,0}}, +/* 24850 */ {(11<<2)|2,{47,115,0}}, +/* 24851 */ {(11<<2)|2,{47,115,0}}, +/* 24852 */ {(11<<2)|2,{47,115,0}}, +/* 24853 */ {(11<<2)|2,{47,115,0}}, +/* 24854 */ {(11<<2)|2,{47,115,0}}, +/* 24855 */ {(11<<2)|2,{47,115,0}}, +/* 24856 */ {(11<<2)|2,{47,115,0}}, +/* 24857 */ {(11<<2)|2,{47,115,0}}, +/* 24858 */ {(11<<2)|2,{47,115,0}}, +/* 24859 */ {(11<<2)|2,{47,115,0}}, +/* 24860 */ {(11<<2)|2,{47,115,0}}, +/* 24861 */ {(11<<2)|2,{47,115,0}}, +/* 24862 */ {(11<<2)|2,{47,115,0}}, +/* 24863 */ {(11<<2)|2,{47,115,0}}, +/* 24864 */ {(16<<2)|3,{47,116,48}}, +/* 24865 */ {(16<<2)|3,{47,116,49}}, +/* 24866 */ {(16<<2)|3,{47,116,50}}, +/* 24867 */ {(16<<2)|3,{47,116,97}}, +/* 24868 */ {(16<<2)|3,{47,116,99}}, +/* 24869 */ {(16<<2)|3,{47,116,101}}, +/* 24870 */ {(16<<2)|3,{47,116,105}}, +/* 24871 */ {(16<<2)|3,{47,116,111}}, +/* 24872 */ {(16<<2)|3,{47,116,115}}, +/* 24873 */ {(16<<2)|3,{47,116,116}}, +/* 24874 */ {(11<<2)|2,{47,116,0}}, +/* 24875 */ {(11<<2)|2,{47,116,0}}, +/* 24876 */ {(11<<2)|2,{47,116,0}}, +/* 24877 */ {(11<<2)|2,{47,116,0}}, +/* 24878 */ {(11<<2)|2,{47,116,0}}, +/* 24879 */ {(11<<2)|2,{47,116,0}}, +/* 24880 */ {(11<<2)|2,{47,116,0}}, +/* 24881 */ {(11<<2)|2,{47,116,0}}, +/* 24882 */ {(11<<2)|2,{47,116,0}}, +/* 24883 */ {(11<<2)|2,{47,116,0}}, +/* 24884 */ {(11<<2)|2,{47,116,0}}, +/* 24885 */ {(11<<2)|2,{47,116,0}}, +/* 24886 */ {(11<<2)|2,{47,116,0}}, +/* 24887 */ {(11<<2)|2,{47,116,0}}, +/* 24888 */ {(11<<2)|2,{47,116,0}}, +/* 24889 */ {(11<<2)|2,{47,116,0}}, +/* 24890 */ {(11<<2)|2,{47,116,0}}, +/* 24891 */ {(11<<2)|2,{47,116,0}}, +/* 24892 */ {(11<<2)|2,{47,116,0}}, +/* 24893 */ {(11<<2)|2,{47,116,0}}, +/* 24894 */ {(11<<2)|2,{47,116,0}}, +/* 24895 */ {(11<<2)|2,{47,116,0}}, +/* 24896 */ {(12<<2)|2,{47,32,0}}, +/* 24897 */ {(12<<2)|2,{47,32,0}}, +/* 24898 */ {(12<<2)|2,{47,32,0}}, +/* 24899 */ {(12<<2)|2,{47,32,0}}, +/* 24900 */ {(12<<2)|2,{47,32,0}}, +/* 24901 */ {(12<<2)|2,{47,32,0}}, +/* 24902 */ {(12<<2)|2,{47,32,0}}, +/* 24903 */ {(12<<2)|2,{47,32,0}}, +/* 24904 */ {(12<<2)|2,{47,32,0}}, +/* 24905 */ {(12<<2)|2,{47,32,0}}, +/* 24906 */ {(12<<2)|2,{47,32,0}}, +/* 24907 */ {(12<<2)|2,{47,32,0}}, +/* 24908 */ {(12<<2)|2,{47,32,0}}, +/* 24909 */ {(12<<2)|2,{47,32,0}}, +/* 24910 */ {(12<<2)|2,{47,32,0}}, +/* 24911 */ {(12<<2)|2,{47,32,0}}, +/* 24912 */ {(12<<2)|2,{47,37,0}}, +/* 24913 */ {(12<<2)|2,{47,37,0}}, +/* 24914 */ {(12<<2)|2,{47,37,0}}, +/* 24915 */ {(12<<2)|2,{47,37,0}}, +/* 24916 */ {(12<<2)|2,{47,37,0}}, +/* 24917 */ {(12<<2)|2,{47,37,0}}, +/* 24918 */ {(12<<2)|2,{47,37,0}}, +/* 24919 */ {(12<<2)|2,{47,37,0}}, +/* 24920 */ {(12<<2)|2,{47,37,0}}, +/* 24921 */ {(12<<2)|2,{47,37,0}}, +/* 24922 */ {(12<<2)|2,{47,37,0}}, +/* 24923 */ {(12<<2)|2,{47,37,0}}, +/* 24924 */ {(12<<2)|2,{47,37,0}}, +/* 24925 */ {(12<<2)|2,{47,37,0}}, +/* 24926 */ {(12<<2)|2,{47,37,0}}, +/* 24927 */ {(12<<2)|2,{47,37,0}}, +/* 24928 */ {(12<<2)|2,{47,45,0}}, +/* 24929 */ {(12<<2)|2,{47,45,0}}, +/* 24930 */ {(12<<2)|2,{47,45,0}}, +/* 24931 */ {(12<<2)|2,{47,45,0}}, +/* 24932 */ {(12<<2)|2,{47,45,0}}, +/* 24933 */ {(12<<2)|2,{47,45,0}}, +/* 24934 */ {(12<<2)|2,{47,45,0}}, +/* 24935 */ {(12<<2)|2,{47,45,0}}, +/* 24936 */ {(12<<2)|2,{47,45,0}}, +/* 24937 */ {(12<<2)|2,{47,45,0}}, +/* 24938 */ {(12<<2)|2,{47,45,0}}, +/* 24939 */ {(12<<2)|2,{47,45,0}}, +/* 24940 */ {(12<<2)|2,{47,45,0}}, +/* 24941 */ {(12<<2)|2,{47,45,0}}, +/* 24942 */ {(12<<2)|2,{47,45,0}}, +/* 24943 */ {(12<<2)|2,{47,45,0}}, +/* 24944 */ {(12<<2)|2,{47,46,0}}, +/* 24945 */ {(12<<2)|2,{47,46,0}}, +/* 24946 */ {(12<<2)|2,{47,46,0}}, +/* 24947 */ {(12<<2)|2,{47,46,0}}, +/* 24948 */ {(12<<2)|2,{47,46,0}}, +/* 24949 */ {(12<<2)|2,{47,46,0}}, +/* 24950 */ {(12<<2)|2,{47,46,0}}, +/* 24951 */ {(12<<2)|2,{47,46,0}}, +/* 24952 */ {(12<<2)|2,{47,46,0}}, +/* 24953 */ {(12<<2)|2,{47,46,0}}, +/* 24954 */ {(12<<2)|2,{47,46,0}}, +/* 24955 */ {(12<<2)|2,{47,46,0}}, +/* 24956 */ {(12<<2)|2,{47,46,0}}, +/* 24957 */ {(12<<2)|2,{47,46,0}}, +/* 24958 */ {(12<<2)|2,{47,46,0}}, +/* 24959 */ {(12<<2)|2,{47,46,0}}, +/* 24960 */ {(12<<2)|2,{47,47,0}}, +/* 24961 */ {(12<<2)|2,{47,47,0}}, +/* 24962 */ {(12<<2)|2,{47,47,0}}, +/* 24963 */ {(12<<2)|2,{47,47,0}}, +/* 24964 */ {(12<<2)|2,{47,47,0}}, +/* 24965 */ {(12<<2)|2,{47,47,0}}, +/* 24966 */ {(12<<2)|2,{47,47,0}}, +/* 24967 */ {(12<<2)|2,{47,47,0}}, +/* 24968 */ {(12<<2)|2,{47,47,0}}, +/* 24969 */ {(12<<2)|2,{47,47,0}}, +/* 24970 */ {(12<<2)|2,{47,47,0}}, +/* 24971 */ {(12<<2)|2,{47,47,0}}, +/* 24972 */ {(12<<2)|2,{47,47,0}}, +/* 24973 */ {(12<<2)|2,{47,47,0}}, +/* 24974 */ {(12<<2)|2,{47,47,0}}, +/* 24975 */ {(12<<2)|2,{47,47,0}}, +/* 24976 */ {(12<<2)|2,{47,51,0}}, +/* 24977 */ {(12<<2)|2,{47,51,0}}, +/* 24978 */ {(12<<2)|2,{47,51,0}}, +/* 24979 */ {(12<<2)|2,{47,51,0}}, +/* 24980 */ {(12<<2)|2,{47,51,0}}, +/* 24981 */ {(12<<2)|2,{47,51,0}}, +/* 24982 */ {(12<<2)|2,{47,51,0}}, +/* 24983 */ {(12<<2)|2,{47,51,0}}, +/* 24984 */ {(12<<2)|2,{47,51,0}}, +/* 24985 */ {(12<<2)|2,{47,51,0}}, +/* 24986 */ {(12<<2)|2,{47,51,0}}, +/* 24987 */ {(12<<2)|2,{47,51,0}}, +/* 24988 */ {(12<<2)|2,{47,51,0}}, +/* 24989 */ {(12<<2)|2,{47,51,0}}, +/* 24990 */ {(12<<2)|2,{47,51,0}}, +/* 24991 */ {(12<<2)|2,{47,51,0}}, +/* 24992 */ {(12<<2)|2,{47,52,0}}, +/* 24993 */ {(12<<2)|2,{47,52,0}}, +/* 24994 */ {(12<<2)|2,{47,52,0}}, +/* 24995 */ {(12<<2)|2,{47,52,0}}, +/* 24996 */ {(12<<2)|2,{47,52,0}}, +/* 24997 */ {(12<<2)|2,{47,52,0}}, +/* 24998 */ {(12<<2)|2,{47,52,0}}, +/* 24999 */ {(12<<2)|2,{47,52,0}}, +/* 25000 */ {(12<<2)|2,{47,52,0}}, +/* 25001 */ {(12<<2)|2,{47,52,0}}, +/* 25002 */ {(12<<2)|2,{47,52,0}}, +/* 25003 */ {(12<<2)|2,{47,52,0}}, +/* 25004 */ {(12<<2)|2,{47,52,0}}, +/* 25005 */ {(12<<2)|2,{47,52,0}}, +/* 25006 */ {(12<<2)|2,{47,52,0}}, +/* 25007 */ {(12<<2)|2,{47,52,0}}, +/* 25008 */ {(12<<2)|2,{47,53,0}}, +/* 25009 */ {(12<<2)|2,{47,53,0}}, +/* 25010 */ {(12<<2)|2,{47,53,0}}, +/* 25011 */ {(12<<2)|2,{47,53,0}}, +/* 25012 */ {(12<<2)|2,{47,53,0}}, +/* 25013 */ {(12<<2)|2,{47,53,0}}, +/* 25014 */ {(12<<2)|2,{47,53,0}}, +/* 25015 */ {(12<<2)|2,{47,53,0}}, +/* 25016 */ {(12<<2)|2,{47,53,0}}, +/* 25017 */ {(12<<2)|2,{47,53,0}}, +/* 25018 */ {(12<<2)|2,{47,53,0}}, +/* 25019 */ {(12<<2)|2,{47,53,0}}, +/* 25020 */ {(12<<2)|2,{47,53,0}}, +/* 25021 */ {(12<<2)|2,{47,53,0}}, +/* 25022 */ {(12<<2)|2,{47,53,0}}, +/* 25023 */ {(12<<2)|2,{47,53,0}}, +/* 25024 */ {(12<<2)|2,{47,54,0}}, +/* 25025 */ {(12<<2)|2,{47,54,0}}, +/* 25026 */ {(12<<2)|2,{47,54,0}}, +/* 25027 */ {(12<<2)|2,{47,54,0}}, +/* 25028 */ {(12<<2)|2,{47,54,0}}, +/* 25029 */ {(12<<2)|2,{47,54,0}}, +/* 25030 */ {(12<<2)|2,{47,54,0}}, +/* 25031 */ {(12<<2)|2,{47,54,0}}, +/* 25032 */ {(12<<2)|2,{47,54,0}}, +/* 25033 */ {(12<<2)|2,{47,54,0}}, +/* 25034 */ {(12<<2)|2,{47,54,0}}, +/* 25035 */ {(12<<2)|2,{47,54,0}}, +/* 25036 */ {(12<<2)|2,{47,54,0}}, +/* 25037 */ {(12<<2)|2,{47,54,0}}, +/* 25038 */ {(12<<2)|2,{47,54,0}}, +/* 25039 */ {(12<<2)|2,{47,54,0}}, +/* 25040 */ {(12<<2)|2,{47,55,0}}, +/* 25041 */ {(12<<2)|2,{47,55,0}}, +/* 25042 */ {(12<<2)|2,{47,55,0}}, +/* 25043 */ {(12<<2)|2,{47,55,0}}, +/* 25044 */ {(12<<2)|2,{47,55,0}}, +/* 25045 */ {(12<<2)|2,{47,55,0}}, +/* 25046 */ {(12<<2)|2,{47,55,0}}, +/* 25047 */ {(12<<2)|2,{47,55,0}}, +/* 25048 */ {(12<<2)|2,{47,55,0}}, +/* 25049 */ {(12<<2)|2,{47,55,0}}, +/* 25050 */ {(12<<2)|2,{47,55,0}}, +/* 25051 */ {(12<<2)|2,{47,55,0}}, +/* 25052 */ {(12<<2)|2,{47,55,0}}, +/* 25053 */ {(12<<2)|2,{47,55,0}}, +/* 25054 */ {(12<<2)|2,{47,55,0}}, +/* 25055 */ {(12<<2)|2,{47,55,0}}, +/* 25056 */ {(12<<2)|2,{47,56,0}}, +/* 25057 */ {(12<<2)|2,{47,56,0}}, +/* 25058 */ {(12<<2)|2,{47,56,0}}, +/* 25059 */ {(12<<2)|2,{47,56,0}}, +/* 25060 */ {(12<<2)|2,{47,56,0}}, +/* 25061 */ {(12<<2)|2,{47,56,0}}, +/* 25062 */ {(12<<2)|2,{47,56,0}}, +/* 25063 */ {(12<<2)|2,{47,56,0}}, +/* 25064 */ {(12<<2)|2,{47,56,0}}, +/* 25065 */ {(12<<2)|2,{47,56,0}}, +/* 25066 */ {(12<<2)|2,{47,56,0}}, +/* 25067 */ {(12<<2)|2,{47,56,0}}, +/* 25068 */ {(12<<2)|2,{47,56,0}}, +/* 25069 */ {(12<<2)|2,{47,56,0}}, +/* 25070 */ {(12<<2)|2,{47,56,0}}, +/* 25071 */ {(12<<2)|2,{47,56,0}}, +/* 25072 */ {(12<<2)|2,{47,57,0}}, +/* 25073 */ {(12<<2)|2,{47,57,0}}, +/* 25074 */ {(12<<2)|2,{47,57,0}}, +/* 25075 */ {(12<<2)|2,{47,57,0}}, +/* 25076 */ {(12<<2)|2,{47,57,0}}, +/* 25077 */ {(12<<2)|2,{47,57,0}}, +/* 25078 */ {(12<<2)|2,{47,57,0}}, +/* 25079 */ {(12<<2)|2,{47,57,0}}, +/* 25080 */ {(12<<2)|2,{47,57,0}}, +/* 25081 */ {(12<<2)|2,{47,57,0}}, +/* 25082 */ {(12<<2)|2,{47,57,0}}, +/* 25083 */ {(12<<2)|2,{47,57,0}}, +/* 25084 */ {(12<<2)|2,{47,57,0}}, +/* 25085 */ {(12<<2)|2,{47,57,0}}, +/* 25086 */ {(12<<2)|2,{47,57,0}}, +/* 25087 */ {(12<<2)|2,{47,57,0}}, +/* 25088 */ {(12<<2)|2,{47,61,0}}, +/* 25089 */ {(12<<2)|2,{47,61,0}}, +/* 25090 */ {(12<<2)|2,{47,61,0}}, +/* 25091 */ {(12<<2)|2,{47,61,0}}, +/* 25092 */ {(12<<2)|2,{47,61,0}}, +/* 25093 */ {(12<<2)|2,{47,61,0}}, +/* 25094 */ {(12<<2)|2,{47,61,0}}, +/* 25095 */ {(12<<2)|2,{47,61,0}}, +/* 25096 */ {(12<<2)|2,{47,61,0}}, +/* 25097 */ {(12<<2)|2,{47,61,0}}, +/* 25098 */ {(12<<2)|2,{47,61,0}}, +/* 25099 */ {(12<<2)|2,{47,61,0}}, +/* 25100 */ {(12<<2)|2,{47,61,0}}, +/* 25101 */ {(12<<2)|2,{47,61,0}}, +/* 25102 */ {(12<<2)|2,{47,61,0}}, +/* 25103 */ {(12<<2)|2,{47,61,0}}, +/* 25104 */ {(12<<2)|2,{47,65,0}}, +/* 25105 */ {(12<<2)|2,{47,65,0}}, +/* 25106 */ {(12<<2)|2,{47,65,0}}, +/* 25107 */ {(12<<2)|2,{47,65,0}}, +/* 25108 */ {(12<<2)|2,{47,65,0}}, +/* 25109 */ {(12<<2)|2,{47,65,0}}, +/* 25110 */ {(12<<2)|2,{47,65,0}}, +/* 25111 */ {(12<<2)|2,{47,65,0}}, +/* 25112 */ {(12<<2)|2,{47,65,0}}, +/* 25113 */ {(12<<2)|2,{47,65,0}}, +/* 25114 */ {(12<<2)|2,{47,65,0}}, +/* 25115 */ {(12<<2)|2,{47,65,0}}, +/* 25116 */ {(12<<2)|2,{47,65,0}}, +/* 25117 */ {(12<<2)|2,{47,65,0}}, +/* 25118 */ {(12<<2)|2,{47,65,0}}, +/* 25119 */ {(12<<2)|2,{47,65,0}}, +/* 25120 */ {(12<<2)|2,{47,95,0}}, +/* 25121 */ {(12<<2)|2,{47,95,0}}, +/* 25122 */ {(12<<2)|2,{47,95,0}}, +/* 25123 */ {(12<<2)|2,{47,95,0}}, +/* 25124 */ {(12<<2)|2,{47,95,0}}, +/* 25125 */ {(12<<2)|2,{47,95,0}}, +/* 25126 */ {(12<<2)|2,{47,95,0}}, +/* 25127 */ {(12<<2)|2,{47,95,0}}, +/* 25128 */ {(12<<2)|2,{47,95,0}}, +/* 25129 */ {(12<<2)|2,{47,95,0}}, +/* 25130 */ {(12<<2)|2,{47,95,0}}, +/* 25131 */ {(12<<2)|2,{47,95,0}}, +/* 25132 */ {(12<<2)|2,{47,95,0}}, +/* 25133 */ {(12<<2)|2,{47,95,0}}, +/* 25134 */ {(12<<2)|2,{47,95,0}}, +/* 25135 */ {(12<<2)|2,{47,95,0}}, +/* 25136 */ {(12<<2)|2,{47,98,0}}, +/* 25137 */ {(12<<2)|2,{47,98,0}}, +/* 25138 */ {(12<<2)|2,{47,98,0}}, +/* 25139 */ {(12<<2)|2,{47,98,0}}, +/* 25140 */ {(12<<2)|2,{47,98,0}}, +/* 25141 */ {(12<<2)|2,{47,98,0}}, +/* 25142 */ {(12<<2)|2,{47,98,0}}, +/* 25143 */ {(12<<2)|2,{47,98,0}}, +/* 25144 */ {(12<<2)|2,{47,98,0}}, +/* 25145 */ {(12<<2)|2,{47,98,0}}, +/* 25146 */ {(12<<2)|2,{47,98,0}}, +/* 25147 */ {(12<<2)|2,{47,98,0}}, +/* 25148 */ {(12<<2)|2,{47,98,0}}, +/* 25149 */ {(12<<2)|2,{47,98,0}}, +/* 25150 */ {(12<<2)|2,{47,98,0}}, +/* 25151 */ {(12<<2)|2,{47,98,0}}, +/* 25152 */ {(12<<2)|2,{47,100,0}}, +/* 25153 */ {(12<<2)|2,{47,100,0}}, +/* 25154 */ {(12<<2)|2,{47,100,0}}, +/* 25155 */ {(12<<2)|2,{47,100,0}}, +/* 25156 */ {(12<<2)|2,{47,100,0}}, +/* 25157 */ {(12<<2)|2,{47,100,0}}, +/* 25158 */ {(12<<2)|2,{47,100,0}}, +/* 25159 */ {(12<<2)|2,{47,100,0}}, +/* 25160 */ {(12<<2)|2,{47,100,0}}, +/* 25161 */ {(12<<2)|2,{47,100,0}}, +/* 25162 */ {(12<<2)|2,{47,100,0}}, +/* 25163 */ {(12<<2)|2,{47,100,0}}, +/* 25164 */ {(12<<2)|2,{47,100,0}}, +/* 25165 */ {(12<<2)|2,{47,100,0}}, +/* 25166 */ {(12<<2)|2,{47,100,0}}, +/* 25167 */ {(12<<2)|2,{47,100,0}}, +/* 25168 */ {(12<<2)|2,{47,102,0}}, +/* 25169 */ {(12<<2)|2,{47,102,0}}, +/* 25170 */ {(12<<2)|2,{47,102,0}}, +/* 25171 */ {(12<<2)|2,{47,102,0}}, +/* 25172 */ {(12<<2)|2,{47,102,0}}, +/* 25173 */ {(12<<2)|2,{47,102,0}}, +/* 25174 */ {(12<<2)|2,{47,102,0}}, +/* 25175 */ {(12<<2)|2,{47,102,0}}, +/* 25176 */ {(12<<2)|2,{47,102,0}}, +/* 25177 */ {(12<<2)|2,{47,102,0}}, +/* 25178 */ {(12<<2)|2,{47,102,0}}, +/* 25179 */ {(12<<2)|2,{47,102,0}}, +/* 25180 */ {(12<<2)|2,{47,102,0}}, +/* 25181 */ {(12<<2)|2,{47,102,0}}, +/* 25182 */ {(12<<2)|2,{47,102,0}}, +/* 25183 */ {(12<<2)|2,{47,102,0}}, +/* 25184 */ {(12<<2)|2,{47,103,0}}, +/* 25185 */ {(12<<2)|2,{47,103,0}}, +/* 25186 */ {(12<<2)|2,{47,103,0}}, +/* 25187 */ {(12<<2)|2,{47,103,0}}, +/* 25188 */ {(12<<2)|2,{47,103,0}}, +/* 25189 */ {(12<<2)|2,{47,103,0}}, +/* 25190 */ {(12<<2)|2,{47,103,0}}, +/* 25191 */ {(12<<2)|2,{47,103,0}}, +/* 25192 */ {(12<<2)|2,{47,103,0}}, +/* 25193 */ {(12<<2)|2,{47,103,0}}, +/* 25194 */ {(12<<2)|2,{47,103,0}}, +/* 25195 */ {(12<<2)|2,{47,103,0}}, +/* 25196 */ {(12<<2)|2,{47,103,0}}, +/* 25197 */ {(12<<2)|2,{47,103,0}}, +/* 25198 */ {(12<<2)|2,{47,103,0}}, +/* 25199 */ {(12<<2)|2,{47,103,0}}, +/* 25200 */ {(12<<2)|2,{47,104,0}}, +/* 25201 */ {(12<<2)|2,{47,104,0}}, +/* 25202 */ {(12<<2)|2,{47,104,0}}, +/* 25203 */ {(12<<2)|2,{47,104,0}}, +/* 25204 */ {(12<<2)|2,{47,104,0}}, +/* 25205 */ {(12<<2)|2,{47,104,0}}, +/* 25206 */ {(12<<2)|2,{47,104,0}}, +/* 25207 */ {(12<<2)|2,{47,104,0}}, +/* 25208 */ {(12<<2)|2,{47,104,0}}, +/* 25209 */ {(12<<2)|2,{47,104,0}}, +/* 25210 */ {(12<<2)|2,{47,104,0}}, +/* 25211 */ {(12<<2)|2,{47,104,0}}, +/* 25212 */ {(12<<2)|2,{47,104,0}}, +/* 25213 */ {(12<<2)|2,{47,104,0}}, +/* 25214 */ {(12<<2)|2,{47,104,0}}, +/* 25215 */ {(12<<2)|2,{47,104,0}}, +/* 25216 */ {(12<<2)|2,{47,108,0}}, +/* 25217 */ {(12<<2)|2,{47,108,0}}, +/* 25218 */ {(12<<2)|2,{47,108,0}}, +/* 25219 */ {(12<<2)|2,{47,108,0}}, +/* 25220 */ {(12<<2)|2,{47,108,0}}, +/* 25221 */ {(12<<2)|2,{47,108,0}}, +/* 25222 */ {(12<<2)|2,{47,108,0}}, +/* 25223 */ {(12<<2)|2,{47,108,0}}, +/* 25224 */ {(12<<2)|2,{47,108,0}}, +/* 25225 */ {(12<<2)|2,{47,108,0}}, +/* 25226 */ {(12<<2)|2,{47,108,0}}, +/* 25227 */ {(12<<2)|2,{47,108,0}}, +/* 25228 */ {(12<<2)|2,{47,108,0}}, +/* 25229 */ {(12<<2)|2,{47,108,0}}, +/* 25230 */ {(12<<2)|2,{47,108,0}}, +/* 25231 */ {(12<<2)|2,{47,108,0}}, +/* 25232 */ {(12<<2)|2,{47,109,0}}, +/* 25233 */ {(12<<2)|2,{47,109,0}}, +/* 25234 */ {(12<<2)|2,{47,109,0}}, +/* 25235 */ {(12<<2)|2,{47,109,0}}, +/* 25236 */ {(12<<2)|2,{47,109,0}}, +/* 25237 */ {(12<<2)|2,{47,109,0}}, +/* 25238 */ {(12<<2)|2,{47,109,0}}, +/* 25239 */ {(12<<2)|2,{47,109,0}}, +/* 25240 */ {(12<<2)|2,{47,109,0}}, +/* 25241 */ {(12<<2)|2,{47,109,0}}, +/* 25242 */ {(12<<2)|2,{47,109,0}}, +/* 25243 */ {(12<<2)|2,{47,109,0}}, +/* 25244 */ {(12<<2)|2,{47,109,0}}, +/* 25245 */ {(12<<2)|2,{47,109,0}}, +/* 25246 */ {(12<<2)|2,{47,109,0}}, +/* 25247 */ {(12<<2)|2,{47,109,0}}, +/* 25248 */ {(12<<2)|2,{47,110,0}}, +/* 25249 */ {(12<<2)|2,{47,110,0}}, +/* 25250 */ {(12<<2)|2,{47,110,0}}, +/* 25251 */ {(12<<2)|2,{47,110,0}}, +/* 25252 */ {(12<<2)|2,{47,110,0}}, +/* 25253 */ {(12<<2)|2,{47,110,0}}, +/* 25254 */ {(12<<2)|2,{47,110,0}}, +/* 25255 */ {(12<<2)|2,{47,110,0}}, +/* 25256 */ {(12<<2)|2,{47,110,0}}, +/* 25257 */ {(12<<2)|2,{47,110,0}}, +/* 25258 */ {(12<<2)|2,{47,110,0}}, +/* 25259 */ {(12<<2)|2,{47,110,0}}, +/* 25260 */ {(12<<2)|2,{47,110,0}}, +/* 25261 */ {(12<<2)|2,{47,110,0}}, +/* 25262 */ {(12<<2)|2,{47,110,0}}, +/* 25263 */ {(12<<2)|2,{47,110,0}}, +/* 25264 */ {(12<<2)|2,{47,112,0}}, +/* 25265 */ {(12<<2)|2,{47,112,0}}, +/* 25266 */ {(12<<2)|2,{47,112,0}}, +/* 25267 */ {(12<<2)|2,{47,112,0}}, +/* 25268 */ {(12<<2)|2,{47,112,0}}, +/* 25269 */ {(12<<2)|2,{47,112,0}}, +/* 25270 */ {(12<<2)|2,{47,112,0}}, +/* 25271 */ {(12<<2)|2,{47,112,0}}, +/* 25272 */ {(12<<2)|2,{47,112,0}}, +/* 25273 */ {(12<<2)|2,{47,112,0}}, +/* 25274 */ {(12<<2)|2,{47,112,0}}, +/* 25275 */ {(12<<2)|2,{47,112,0}}, +/* 25276 */ {(12<<2)|2,{47,112,0}}, +/* 25277 */ {(12<<2)|2,{47,112,0}}, +/* 25278 */ {(12<<2)|2,{47,112,0}}, +/* 25279 */ {(12<<2)|2,{47,112,0}}, +/* 25280 */ {(12<<2)|2,{47,114,0}}, +/* 25281 */ {(12<<2)|2,{47,114,0}}, +/* 25282 */ {(12<<2)|2,{47,114,0}}, +/* 25283 */ {(12<<2)|2,{47,114,0}}, +/* 25284 */ {(12<<2)|2,{47,114,0}}, +/* 25285 */ {(12<<2)|2,{47,114,0}}, +/* 25286 */ {(12<<2)|2,{47,114,0}}, +/* 25287 */ {(12<<2)|2,{47,114,0}}, +/* 25288 */ {(12<<2)|2,{47,114,0}}, +/* 25289 */ {(12<<2)|2,{47,114,0}}, +/* 25290 */ {(12<<2)|2,{47,114,0}}, +/* 25291 */ {(12<<2)|2,{47,114,0}}, +/* 25292 */ {(12<<2)|2,{47,114,0}}, +/* 25293 */ {(12<<2)|2,{47,114,0}}, +/* 25294 */ {(12<<2)|2,{47,114,0}}, +/* 25295 */ {(12<<2)|2,{47,114,0}}, +/* 25296 */ {(12<<2)|2,{47,117,0}}, +/* 25297 */ {(12<<2)|2,{47,117,0}}, +/* 25298 */ {(12<<2)|2,{47,117,0}}, +/* 25299 */ {(12<<2)|2,{47,117,0}}, +/* 25300 */ {(12<<2)|2,{47,117,0}}, +/* 25301 */ {(12<<2)|2,{47,117,0}}, +/* 25302 */ {(12<<2)|2,{47,117,0}}, +/* 25303 */ {(12<<2)|2,{47,117,0}}, +/* 25304 */ {(12<<2)|2,{47,117,0}}, +/* 25305 */ {(12<<2)|2,{47,117,0}}, +/* 25306 */ {(12<<2)|2,{47,117,0}}, +/* 25307 */ {(12<<2)|2,{47,117,0}}, +/* 25308 */ {(12<<2)|2,{47,117,0}}, +/* 25309 */ {(12<<2)|2,{47,117,0}}, +/* 25310 */ {(12<<2)|2,{47,117,0}}, +/* 25311 */ {(12<<2)|2,{47,117,0}}, +/* 25312 */ {(13<<2)|2,{47,58,0}}, +/* 25313 */ {(13<<2)|2,{47,58,0}}, +/* 25314 */ {(13<<2)|2,{47,58,0}}, +/* 25315 */ {(13<<2)|2,{47,58,0}}, +/* 25316 */ {(13<<2)|2,{47,58,0}}, +/* 25317 */ {(13<<2)|2,{47,58,0}}, +/* 25318 */ {(13<<2)|2,{47,58,0}}, +/* 25319 */ {(13<<2)|2,{47,58,0}}, +/* 25320 */ {(13<<2)|2,{47,66,0}}, +/* 25321 */ {(13<<2)|2,{47,66,0}}, +/* 25322 */ {(13<<2)|2,{47,66,0}}, +/* 25323 */ {(13<<2)|2,{47,66,0}}, +/* 25324 */ {(13<<2)|2,{47,66,0}}, +/* 25325 */ {(13<<2)|2,{47,66,0}}, +/* 25326 */ {(13<<2)|2,{47,66,0}}, +/* 25327 */ {(13<<2)|2,{47,66,0}}, +/* 25328 */ {(13<<2)|2,{47,67,0}}, +/* 25329 */ {(13<<2)|2,{47,67,0}}, +/* 25330 */ {(13<<2)|2,{47,67,0}}, +/* 25331 */ {(13<<2)|2,{47,67,0}}, +/* 25332 */ {(13<<2)|2,{47,67,0}}, +/* 25333 */ {(13<<2)|2,{47,67,0}}, +/* 25334 */ {(13<<2)|2,{47,67,0}}, +/* 25335 */ {(13<<2)|2,{47,67,0}}, +/* 25336 */ {(13<<2)|2,{47,68,0}}, +/* 25337 */ {(13<<2)|2,{47,68,0}}, +/* 25338 */ {(13<<2)|2,{47,68,0}}, +/* 25339 */ {(13<<2)|2,{47,68,0}}, +/* 25340 */ {(13<<2)|2,{47,68,0}}, +/* 25341 */ {(13<<2)|2,{47,68,0}}, +/* 25342 */ {(13<<2)|2,{47,68,0}}, +/* 25343 */ {(13<<2)|2,{47,68,0}}, +/* 25344 */ {(13<<2)|2,{47,69,0}}, +/* 25345 */ {(13<<2)|2,{47,69,0}}, +/* 25346 */ {(13<<2)|2,{47,69,0}}, +/* 25347 */ {(13<<2)|2,{47,69,0}}, +/* 25348 */ {(13<<2)|2,{47,69,0}}, +/* 25349 */ {(13<<2)|2,{47,69,0}}, +/* 25350 */ {(13<<2)|2,{47,69,0}}, +/* 25351 */ {(13<<2)|2,{47,69,0}}, +/* 25352 */ {(13<<2)|2,{47,70,0}}, +/* 25353 */ {(13<<2)|2,{47,70,0}}, +/* 25354 */ {(13<<2)|2,{47,70,0}}, +/* 25355 */ {(13<<2)|2,{47,70,0}}, +/* 25356 */ {(13<<2)|2,{47,70,0}}, +/* 25357 */ {(13<<2)|2,{47,70,0}}, +/* 25358 */ {(13<<2)|2,{47,70,0}}, +/* 25359 */ {(13<<2)|2,{47,70,0}}, +/* 25360 */ {(13<<2)|2,{47,71,0}}, +/* 25361 */ {(13<<2)|2,{47,71,0}}, +/* 25362 */ {(13<<2)|2,{47,71,0}}, +/* 25363 */ {(13<<2)|2,{47,71,0}}, +/* 25364 */ {(13<<2)|2,{47,71,0}}, +/* 25365 */ {(13<<2)|2,{47,71,0}}, +/* 25366 */ {(13<<2)|2,{47,71,0}}, +/* 25367 */ {(13<<2)|2,{47,71,0}}, +/* 25368 */ {(13<<2)|2,{47,72,0}}, +/* 25369 */ {(13<<2)|2,{47,72,0}}, +/* 25370 */ {(13<<2)|2,{47,72,0}}, +/* 25371 */ {(13<<2)|2,{47,72,0}}, +/* 25372 */ {(13<<2)|2,{47,72,0}}, +/* 25373 */ {(13<<2)|2,{47,72,0}}, +/* 25374 */ {(13<<2)|2,{47,72,0}}, +/* 25375 */ {(13<<2)|2,{47,72,0}}, +/* 25376 */ {(13<<2)|2,{47,73,0}}, +/* 25377 */ {(13<<2)|2,{47,73,0}}, +/* 25378 */ {(13<<2)|2,{47,73,0}}, +/* 25379 */ {(13<<2)|2,{47,73,0}}, +/* 25380 */ {(13<<2)|2,{47,73,0}}, +/* 25381 */ {(13<<2)|2,{47,73,0}}, +/* 25382 */ {(13<<2)|2,{47,73,0}}, +/* 25383 */ {(13<<2)|2,{47,73,0}}, +/* 25384 */ {(13<<2)|2,{47,74,0}}, +/* 25385 */ {(13<<2)|2,{47,74,0}}, +/* 25386 */ {(13<<2)|2,{47,74,0}}, +/* 25387 */ {(13<<2)|2,{47,74,0}}, +/* 25388 */ {(13<<2)|2,{47,74,0}}, +/* 25389 */ {(13<<2)|2,{47,74,0}}, +/* 25390 */ {(13<<2)|2,{47,74,0}}, +/* 25391 */ {(13<<2)|2,{47,74,0}}, +/* 25392 */ {(13<<2)|2,{47,75,0}}, +/* 25393 */ {(13<<2)|2,{47,75,0}}, +/* 25394 */ {(13<<2)|2,{47,75,0}}, +/* 25395 */ {(13<<2)|2,{47,75,0}}, +/* 25396 */ {(13<<2)|2,{47,75,0}}, +/* 25397 */ {(13<<2)|2,{47,75,0}}, +/* 25398 */ {(13<<2)|2,{47,75,0}}, +/* 25399 */ {(13<<2)|2,{47,75,0}}, +/* 25400 */ {(13<<2)|2,{47,76,0}}, +/* 25401 */ {(13<<2)|2,{47,76,0}}, +/* 25402 */ {(13<<2)|2,{47,76,0}}, +/* 25403 */ {(13<<2)|2,{47,76,0}}, +/* 25404 */ {(13<<2)|2,{47,76,0}}, +/* 25405 */ {(13<<2)|2,{47,76,0}}, +/* 25406 */ {(13<<2)|2,{47,76,0}}, +/* 25407 */ {(13<<2)|2,{47,76,0}}, +/* 25408 */ {(13<<2)|2,{47,77,0}}, +/* 25409 */ {(13<<2)|2,{47,77,0}}, +/* 25410 */ {(13<<2)|2,{47,77,0}}, +/* 25411 */ {(13<<2)|2,{47,77,0}}, +/* 25412 */ {(13<<2)|2,{47,77,0}}, +/* 25413 */ {(13<<2)|2,{47,77,0}}, +/* 25414 */ {(13<<2)|2,{47,77,0}}, +/* 25415 */ {(13<<2)|2,{47,77,0}}, +/* 25416 */ {(13<<2)|2,{47,78,0}}, +/* 25417 */ {(13<<2)|2,{47,78,0}}, +/* 25418 */ {(13<<2)|2,{47,78,0}}, +/* 25419 */ {(13<<2)|2,{47,78,0}}, +/* 25420 */ {(13<<2)|2,{47,78,0}}, +/* 25421 */ {(13<<2)|2,{47,78,0}}, +/* 25422 */ {(13<<2)|2,{47,78,0}}, +/* 25423 */ {(13<<2)|2,{47,78,0}}, +/* 25424 */ {(13<<2)|2,{47,79,0}}, +/* 25425 */ {(13<<2)|2,{47,79,0}}, +/* 25426 */ {(13<<2)|2,{47,79,0}}, +/* 25427 */ {(13<<2)|2,{47,79,0}}, +/* 25428 */ {(13<<2)|2,{47,79,0}}, +/* 25429 */ {(13<<2)|2,{47,79,0}}, +/* 25430 */ {(13<<2)|2,{47,79,0}}, +/* 25431 */ {(13<<2)|2,{47,79,0}}, +/* 25432 */ {(13<<2)|2,{47,80,0}}, +/* 25433 */ {(13<<2)|2,{47,80,0}}, +/* 25434 */ {(13<<2)|2,{47,80,0}}, +/* 25435 */ {(13<<2)|2,{47,80,0}}, +/* 25436 */ {(13<<2)|2,{47,80,0}}, +/* 25437 */ {(13<<2)|2,{47,80,0}}, +/* 25438 */ {(13<<2)|2,{47,80,0}}, +/* 25439 */ {(13<<2)|2,{47,80,0}}, +/* 25440 */ {(13<<2)|2,{47,81,0}}, +/* 25441 */ {(13<<2)|2,{47,81,0}}, +/* 25442 */ {(13<<2)|2,{47,81,0}}, +/* 25443 */ {(13<<2)|2,{47,81,0}}, +/* 25444 */ {(13<<2)|2,{47,81,0}}, +/* 25445 */ {(13<<2)|2,{47,81,0}}, +/* 25446 */ {(13<<2)|2,{47,81,0}}, +/* 25447 */ {(13<<2)|2,{47,81,0}}, +/* 25448 */ {(13<<2)|2,{47,82,0}}, +/* 25449 */ {(13<<2)|2,{47,82,0}}, +/* 25450 */ {(13<<2)|2,{47,82,0}}, +/* 25451 */ {(13<<2)|2,{47,82,0}}, +/* 25452 */ {(13<<2)|2,{47,82,0}}, +/* 25453 */ {(13<<2)|2,{47,82,0}}, +/* 25454 */ {(13<<2)|2,{47,82,0}}, +/* 25455 */ {(13<<2)|2,{47,82,0}}, +/* 25456 */ {(13<<2)|2,{47,83,0}}, +/* 25457 */ {(13<<2)|2,{47,83,0}}, +/* 25458 */ {(13<<2)|2,{47,83,0}}, +/* 25459 */ {(13<<2)|2,{47,83,0}}, +/* 25460 */ {(13<<2)|2,{47,83,0}}, +/* 25461 */ {(13<<2)|2,{47,83,0}}, +/* 25462 */ {(13<<2)|2,{47,83,0}}, +/* 25463 */ {(13<<2)|2,{47,83,0}}, +/* 25464 */ {(13<<2)|2,{47,84,0}}, +/* 25465 */ {(13<<2)|2,{47,84,0}}, +/* 25466 */ {(13<<2)|2,{47,84,0}}, +/* 25467 */ {(13<<2)|2,{47,84,0}}, +/* 25468 */ {(13<<2)|2,{47,84,0}}, +/* 25469 */ {(13<<2)|2,{47,84,0}}, +/* 25470 */ {(13<<2)|2,{47,84,0}}, +/* 25471 */ {(13<<2)|2,{47,84,0}}, +/* 25472 */ {(13<<2)|2,{47,85,0}}, +/* 25473 */ {(13<<2)|2,{47,85,0}}, +/* 25474 */ {(13<<2)|2,{47,85,0}}, +/* 25475 */ {(13<<2)|2,{47,85,0}}, +/* 25476 */ {(13<<2)|2,{47,85,0}}, +/* 25477 */ {(13<<2)|2,{47,85,0}}, +/* 25478 */ {(13<<2)|2,{47,85,0}}, +/* 25479 */ {(13<<2)|2,{47,85,0}}, +/* 25480 */ {(13<<2)|2,{47,86,0}}, +/* 25481 */ {(13<<2)|2,{47,86,0}}, +/* 25482 */ {(13<<2)|2,{47,86,0}}, +/* 25483 */ {(13<<2)|2,{47,86,0}}, +/* 25484 */ {(13<<2)|2,{47,86,0}}, +/* 25485 */ {(13<<2)|2,{47,86,0}}, +/* 25486 */ {(13<<2)|2,{47,86,0}}, +/* 25487 */ {(13<<2)|2,{47,86,0}}, +/* 25488 */ {(13<<2)|2,{47,87,0}}, +/* 25489 */ {(13<<2)|2,{47,87,0}}, +/* 25490 */ {(13<<2)|2,{47,87,0}}, +/* 25491 */ {(13<<2)|2,{47,87,0}}, +/* 25492 */ {(13<<2)|2,{47,87,0}}, +/* 25493 */ {(13<<2)|2,{47,87,0}}, +/* 25494 */ {(13<<2)|2,{47,87,0}}, +/* 25495 */ {(13<<2)|2,{47,87,0}}, +/* 25496 */ {(13<<2)|2,{47,89,0}}, +/* 25497 */ {(13<<2)|2,{47,89,0}}, +/* 25498 */ {(13<<2)|2,{47,89,0}}, +/* 25499 */ {(13<<2)|2,{47,89,0}}, +/* 25500 */ {(13<<2)|2,{47,89,0}}, +/* 25501 */ {(13<<2)|2,{47,89,0}}, +/* 25502 */ {(13<<2)|2,{47,89,0}}, +/* 25503 */ {(13<<2)|2,{47,89,0}}, +/* 25504 */ {(13<<2)|2,{47,106,0}}, +/* 25505 */ {(13<<2)|2,{47,106,0}}, +/* 25506 */ {(13<<2)|2,{47,106,0}}, +/* 25507 */ {(13<<2)|2,{47,106,0}}, +/* 25508 */ {(13<<2)|2,{47,106,0}}, +/* 25509 */ {(13<<2)|2,{47,106,0}}, +/* 25510 */ {(13<<2)|2,{47,106,0}}, +/* 25511 */ {(13<<2)|2,{47,106,0}}, +/* 25512 */ {(13<<2)|2,{47,107,0}}, +/* 25513 */ {(13<<2)|2,{47,107,0}}, +/* 25514 */ {(13<<2)|2,{47,107,0}}, +/* 25515 */ {(13<<2)|2,{47,107,0}}, +/* 25516 */ {(13<<2)|2,{47,107,0}}, +/* 25517 */ {(13<<2)|2,{47,107,0}}, +/* 25518 */ {(13<<2)|2,{47,107,0}}, +/* 25519 */ {(13<<2)|2,{47,107,0}}, +/* 25520 */ {(13<<2)|2,{47,113,0}}, +/* 25521 */ {(13<<2)|2,{47,113,0}}, +/* 25522 */ {(13<<2)|2,{47,113,0}}, +/* 25523 */ {(13<<2)|2,{47,113,0}}, +/* 25524 */ {(13<<2)|2,{47,113,0}}, +/* 25525 */ {(13<<2)|2,{47,113,0}}, +/* 25526 */ {(13<<2)|2,{47,113,0}}, +/* 25527 */ {(13<<2)|2,{47,113,0}}, +/* 25528 */ {(13<<2)|2,{47,118,0}}, +/* 25529 */ {(13<<2)|2,{47,118,0}}, +/* 25530 */ {(13<<2)|2,{47,118,0}}, +/* 25531 */ {(13<<2)|2,{47,118,0}}, +/* 25532 */ {(13<<2)|2,{47,118,0}}, +/* 25533 */ {(13<<2)|2,{47,118,0}}, +/* 25534 */ {(13<<2)|2,{47,118,0}}, +/* 25535 */ {(13<<2)|2,{47,118,0}}, +/* 25536 */ {(13<<2)|2,{47,119,0}}, +/* 25537 */ {(13<<2)|2,{47,119,0}}, +/* 25538 */ {(13<<2)|2,{47,119,0}}, +/* 25539 */ {(13<<2)|2,{47,119,0}}, +/* 25540 */ {(13<<2)|2,{47,119,0}}, +/* 25541 */ {(13<<2)|2,{47,119,0}}, +/* 25542 */ {(13<<2)|2,{47,119,0}}, +/* 25543 */ {(13<<2)|2,{47,119,0}}, +/* 25544 */ {(13<<2)|2,{47,120,0}}, +/* 25545 */ {(13<<2)|2,{47,120,0}}, +/* 25546 */ {(13<<2)|2,{47,120,0}}, +/* 25547 */ {(13<<2)|2,{47,120,0}}, +/* 25548 */ {(13<<2)|2,{47,120,0}}, +/* 25549 */ {(13<<2)|2,{47,120,0}}, +/* 25550 */ {(13<<2)|2,{47,120,0}}, +/* 25551 */ {(13<<2)|2,{47,120,0}}, +/* 25552 */ {(13<<2)|2,{47,121,0}}, +/* 25553 */ {(13<<2)|2,{47,121,0}}, +/* 25554 */ {(13<<2)|2,{47,121,0}}, +/* 25555 */ {(13<<2)|2,{47,121,0}}, +/* 25556 */ {(13<<2)|2,{47,121,0}}, +/* 25557 */ {(13<<2)|2,{47,121,0}}, +/* 25558 */ {(13<<2)|2,{47,121,0}}, +/* 25559 */ {(13<<2)|2,{47,121,0}}, +/* 25560 */ {(13<<2)|2,{47,122,0}}, +/* 25561 */ {(13<<2)|2,{47,122,0}}, +/* 25562 */ {(13<<2)|2,{47,122,0}}, +/* 25563 */ {(13<<2)|2,{47,122,0}}, +/* 25564 */ {(13<<2)|2,{47,122,0}}, +/* 25565 */ {(13<<2)|2,{47,122,0}}, +/* 25566 */ {(13<<2)|2,{47,122,0}}, +/* 25567 */ {(13<<2)|2,{47,122,0}}, +/* 25568 */ {(14<<2)|2,{47,38,0}}, +/* 25569 */ {(14<<2)|2,{47,38,0}}, +/* 25570 */ {(14<<2)|2,{47,38,0}}, +/* 25571 */ {(14<<2)|2,{47,38,0}}, +/* 25572 */ {(14<<2)|2,{47,42,0}}, +/* 25573 */ {(14<<2)|2,{47,42,0}}, +/* 25574 */ {(14<<2)|2,{47,42,0}}, +/* 25575 */ {(14<<2)|2,{47,42,0}}, +/* 25576 */ {(14<<2)|2,{47,44,0}}, +/* 25577 */ {(14<<2)|2,{47,44,0}}, +/* 25578 */ {(14<<2)|2,{47,44,0}}, +/* 25579 */ {(14<<2)|2,{47,44,0}}, +/* 25580 */ {(14<<2)|2,{47,59,0}}, +/* 25581 */ {(14<<2)|2,{47,59,0}}, +/* 25582 */ {(14<<2)|2,{47,59,0}}, +/* 25583 */ {(14<<2)|2,{47,59,0}}, +/* 25584 */ {(14<<2)|2,{47,88,0}}, +/* 25585 */ {(14<<2)|2,{47,88,0}}, +/* 25586 */ {(14<<2)|2,{47,88,0}}, +/* 25587 */ {(14<<2)|2,{47,88,0}}, +/* 25588 */ {(14<<2)|2,{47,90,0}}, +/* 25589 */ {(14<<2)|2,{47,90,0}}, +/* 25590 */ {(14<<2)|2,{47,90,0}}, +/* 25591 */ {(14<<2)|2,{47,90,0}}, +/* 25592 */ {(16<<2)|2,{47,33,0}}, +/* 25593 */ {(16<<2)|2,{47,34,0}}, +/* 25594 */ {(16<<2)|2,{47,40,0}}, +/* 25595 */ {(16<<2)|2,{47,41,0}}, +/* 25596 */ {(16<<2)|2,{47,63,0}}, +/* 25597 */ {(6<<2)|1,{47,0,0}}, +/* 25598 */ {(6<<2)|1,{47,0,0}}, +/* 25599 */ {(6<<2)|1,{47,0,0}}, +/* 25600 */ {(16<<2)|3,{51,48,48}}, +/* 25601 */ {(16<<2)|3,{51,48,49}}, +/* 25602 */ {(16<<2)|3,{51,48,50}}, +/* 25603 */ {(16<<2)|3,{51,48,97}}, +/* 25604 */ {(16<<2)|3,{51,48,99}}, +/* 25605 */ {(16<<2)|3,{51,48,101}}, +/* 25606 */ {(16<<2)|3,{51,48,105}}, +/* 25607 */ {(16<<2)|3,{51,48,111}}, +/* 25608 */ {(16<<2)|3,{51,48,115}}, +/* 25609 */ {(16<<2)|3,{51,48,116}}, +/* 25610 */ {(11<<2)|2,{51,48,0}}, +/* 25611 */ {(11<<2)|2,{51,48,0}}, +/* 25612 */ {(11<<2)|2,{51,48,0}}, +/* 25613 */ {(11<<2)|2,{51,48,0}}, +/* 25614 */ {(11<<2)|2,{51,48,0}}, +/* 25615 */ {(11<<2)|2,{51,48,0}}, +/* 25616 */ {(11<<2)|2,{51,48,0}}, +/* 25617 */ {(11<<2)|2,{51,48,0}}, +/* 25618 */ {(11<<2)|2,{51,48,0}}, +/* 25619 */ {(11<<2)|2,{51,48,0}}, +/* 25620 */ {(11<<2)|2,{51,48,0}}, +/* 25621 */ {(11<<2)|2,{51,48,0}}, +/* 25622 */ {(11<<2)|2,{51,48,0}}, +/* 25623 */ {(11<<2)|2,{51,48,0}}, +/* 25624 */ {(11<<2)|2,{51,48,0}}, +/* 25625 */ {(11<<2)|2,{51,48,0}}, +/* 25626 */ {(11<<2)|2,{51,48,0}}, +/* 25627 */ {(11<<2)|2,{51,48,0}}, +/* 25628 */ {(11<<2)|2,{51,48,0}}, +/* 25629 */ {(11<<2)|2,{51,48,0}}, +/* 25630 */ {(11<<2)|2,{51,48,0}}, +/* 25631 */ {(11<<2)|2,{51,48,0}}, +/* 25632 */ {(16<<2)|3,{51,49,48}}, +/* 25633 */ {(16<<2)|3,{51,49,49}}, +/* 25634 */ {(16<<2)|3,{51,49,50}}, +/* 25635 */ {(16<<2)|3,{51,49,97}}, +/* 25636 */ {(16<<2)|3,{51,49,99}}, +/* 25637 */ {(16<<2)|3,{51,49,101}}, +/* 25638 */ {(16<<2)|3,{51,49,105}}, +/* 25639 */ {(16<<2)|3,{51,49,111}}, +/* 25640 */ {(16<<2)|3,{51,49,115}}, +/* 25641 */ {(16<<2)|3,{51,49,116}}, +/* 25642 */ {(11<<2)|2,{51,49,0}}, +/* 25643 */ {(11<<2)|2,{51,49,0}}, +/* 25644 */ {(11<<2)|2,{51,49,0}}, +/* 25645 */ {(11<<2)|2,{51,49,0}}, +/* 25646 */ {(11<<2)|2,{51,49,0}}, +/* 25647 */ {(11<<2)|2,{51,49,0}}, +/* 25648 */ {(11<<2)|2,{51,49,0}}, +/* 25649 */ {(11<<2)|2,{51,49,0}}, +/* 25650 */ {(11<<2)|2,{51,49,0}}, +/* 25651 */ {(11<<2)|2,{51,49,0}}, +/* 25652 */ {(11<<2)|2,{51,49,0}}, +/* 25653 */ {(11<<2)|2,{51,49,0}}, +/* 25654 */ {(11<<2)|2,{51,49,0}}, +/* 25655 */ {(11<<2)|2,{51,49,0}}, +/* 25656 */ {(11<<2)|2,{51,49,0}}, +/* 25657 */ {(11<<2)|2,{51,49,0}}, +/* 25658 */ {(11<<2)|2,{51,49,0}}, +/* 25659 */ {(11<<2)|2,{51,49,0}}, +/* 25660 */ {(11<<2)|2,{51,49,0}}, +/* 25661 */ {(11<<2)|2,{51,49,0}}, +/* 25662 */ {(11<<2)|2,{51,49,0}}, +/* 25663 */ {(11<<2)|2,{51,49,0}}, +/* 25664 */ {(16<<2)|3,{51,50,48}}, +/* 25665 */ {(16<<2)|3,{51,50,49}}, +/* 25666 */ {(16<<2)|3,{51,50,50}}, +/* 25667 */ {(16<<2)|3,{51,50,97}}, +/* 25668 */ {(16<<2)|3,{51,50,99}}, +/* 25669 */ {(16<<2)|3,{51,50,101}}, +/* 25670 */ {(16<<2)|3,{51,50,105}}, +/* 25671 */ {(16<<2)|3,{51,50,111}}, +/* 25672 */ {(16<<2)|3,{51,50,115}}, +/* 25673 */ {(16<<2)|3,{51,50,116}}, +/* 25674 */ {(11<<2)|2,{51,50,0}}, +/* 25675 */ {(11<<2)|2,{51,50,0}}, +/* 25676 */ {(11<<2)|2,{51,50,0}}, +/* 25677 */ {(11<<2)|2,{51,50,0}}, +/* 25678 */ {(11<<2)|2,{51,50,0}}, +/* 25679 */ {(11<<2)|2,{51,50,0}}, +/* 25680 */ {(11<<2)|2,{51,50,0}}, +/* 25681 */ {(11<<2)|2,{51,50,0}}, +/* 25682 */ {(11<<2)|2,{51,50,0}}, +/* 25683 */ {(11<<2)|2,{51,50,0}}, +/* 25684 */ {(11<<2)|2,{51,50,0}}, +/* 25685 */ {(11<<2)|2,{51,50,0}}, +/* 25686 */ {(11<<2)|2,{51,50,0}}, +/* 25687 */ {(11<<2)|2,{51,50,0}}, +/* 25688 */ {(11<<2)|2,{51,50,0}}, +/* 25689 */ {(11<<2)|2,{51,50,0}}, +/* 25690 */ {(11<<2)|2,{51,50,0}}, +/* 25691 */ {(11<<2)|2,{51,50,0}}, +/* 25692 */ {(11<<2)|2,{51,50,0}}, +/* 25693 */ {(11<<2)|2,{51,50,0}}, +/* 25694 */ {(11<<2)|2,{51,50,0}}, +/* 25695 */ {(11<<2)|2,{51,50,0}}, +/* 25696 */ {(16<<2)|3,{51,97,48}}, +/* 25697 */ {(16<<2)|3,{51,97,49}}, +/* 25698 */ {(16<<2)|3,{51,97,50}}, +/* 25699 */ {(16<<2)|3,{51,97,97}}, +/* 25700 */ {(16<<2)|3,{51,97,99}}, +/* 25701 */ {(16<<2)|3,{51,97,101}}, +/* 25702 */ {(16<<2)|3,{51,97,105}}, +/* 25703 */ {(16<<2)|3,{51,97,111}}, +/* 25704 */ {(16<<2)|3,{51,97,115}}, +/* 25705 */ {(16<<2)|3,{51,97,116}}, +/* 25706 */ {(11<<2)|2,{51,97,0}}, +/* 25707 */ {(11<<2)|2,{51,97,0}}, +/* 25708 */ {(11<<2)|2,{51,97,0}}, +/* 25709 */ {(11<<2)|2,{51,97,0}}, +/* 25710 */ {(11<<2)|2,{51,97,0}}, +/* 25711 */ {(11<<2)|2,{51,97,0}}, +/* 25712 */ {(11<<2)|2,{51,97,0}}, +/* 25713 */ {(11<<2)|2,{51,97,0}}, +/* 25714 */ {(11<<2)|2,{51,97,0}}, +/* 25715 */ {(11<<2)|2,{51,97,0}}, +/* 25716 */ {(11<<2)|2,{51,97,0}}, +/* 25717 */ {(11<<2)|2,{51,97,0}}, +/* 25718 */ {(11<<2)|2,{51,97,0}}, +/* 25719 */ {(11<<2)|2,{51,97,0}}, +/* 25720 */ {(11<<2)|2,{51,97,0}}, +/* 25721 */ {(11<<2)|2,{51,97,0}}, +/* 25722 */ {(11<<2)|2,{51,97,0}}, +/* 25723 */ {(11<<2)|2,{51,97,0}}, +/* 25724 */ {(11<<2)|2,{51,97,0}}, +/* 25725 */ {(11<<2)|2,{51,97,0}}, +/* 25726 */ {(11<<2)|2,{51,97,0}}, +/* 25727 */ {(11<<2)|2,{51,97,0}}, +/* 25728 */ {(16<<2)|3,{51,99,48}}, +/* 25729 */ {(16<<2)|3,{51,99,49}}, +/* 25730 */ {(16<<2)|3,{51,99,50}}, +/* 25731 */ {(16<<2)|3,{51,99,97}}, +/* 25732 */ {(16<<2)|3,{51,99,99}}, +/* 25733 */ {(16<<2)|3,{51,99,101}}, +/* 25734 */ {(16<<2)|3,{51,99,105}}, +/* 25735 */ {(16<<2)|3,{51,99,111}}, +/* 25736 */ {(16<<2)|3,{51,99,115}}, +/* 25737 */ {(16<<2)|3,{51,99,116}}, +/* 25738 */ {(11<<2)|2,{51,99,0}}, +/* 25739 */ {(11<<2)|2,{51,99,0}}, +/* 25740 */ {(11<<2)|2,{51,99,0}}, +/* 25741 */ {(11<<2)|2,{51,99,0}}, +/* 25742 */ {(11<<2)|2,{51,99,0}}, +/* 25743 */ {(11<<2)|2,{51,99,0}}, +/* 25744 */ {(11<<2)|2,{51,99,0}}, +/* 25745 */ {(11<<2)|2,{51,99,0}}, +/* 25746 */ {(11<<2)|2,{51,99,0}}, +/* 25747 */ {(11<<2)|2,{51,99,0}}, +/* 25748 */ {(11<<2)|2,{51,99,0}}, +/* 25749 */ {(11<<2)|2,{51,99,0}}, +/* 25750 */ {(11<<2)|2,{51,99,0}}, +/* 25751 */ {(11<<2)|2,{51,99,0}}, +/* 25752 */ {(11<<2)|2,{51,99,0}}, +/* 25753 */ {(11<<2)|2,{51,99,0}}, +/* 25754 */ {(11<<2)|2,{51,99,0}}, +/* 25755 */ {(11<<2)|2,{51,99,0}}, +/* 25756 */ {(11<<2)|2,{51,99,0}}, +/* 25757 */ {(11<<2)|2,{51,99,0}}, +/* 25758 */ {(11<<2)|2,{51,99,0}}, +/* 25759 */ {(11<<2)|2,{51,99,0}}, +/* 25760 */ {(16<<2)|3,{51,101,48}}, +/* 25761 */ {(16<<2)|3,{51,101,49}}, +/* 25762 */ {(16<<2)|3,{51,101,50}}, +/* 25763 */ {(16<<2)|3,{51,101,97}}, +/* 25764 */ {(16<<2)|3,{51,101,99}}, +/* 25765 */ {(16<<2)|3,{51,101,101}}, +/* 25766 */ {(16<<2)|3,{51,101,105}}, +/* 25767 */ {(16<<2)|3,{51,101,111}}, +/* 25768 */ {(16<<2)|3,{51,101,115}}, +/* 25769 */ {(16<<2)|3,{51,101,116}}, +/* 25770 */ {(11<<2)|2,{51,101,0}}, +/* 25771 */ {(11<<2)|2,{51,101,0}}, +/* 25772 */ {(11<<2)|2,{51,101,0}}, +/* 25773 */ {(11<<2)|2,{51,101,0}}, +/* 25774 */ {(11<<2)|2,{51,101,0}}, +/* 25775 */ {(11<<2)|2,{51,101,0}}, +/* 25776 */ {(11<<2)|2,{51,101,0}}, +/* 25777 */ {(11<<2)|2,{51,101,0}}, +/* 25778 */ {(11<<2)|2,{51,101,0}}, +/* 25779 */ {(11<<2)|2,{51,101,0}}, +/* 25780 */ {(11<<2)|2,{51,101,0}}, +/* 25781 */ {(11<<2)|2,{51,101,0}}, +/* 25782 */ {(11<<2)|2,{51,101,0}}, +/* 25783 */ {(11<<2)|2,{51,101,0}}, +/* 25784 */ {(11<<2)|2,{51,101,0}}, +/* 25785 */ {(11<<2)|2,{51,101,0}}, +/* 25786 */ {(11<<2)|2,{51,101,0}}, +/* 25787 */ {(11<<2)|2,{51,101,0}}, +/* 25788 */ {(11<<2)|2,{51,101,0}}, +/* 25789 */ {(11<<2)|2,{51,101,0}}, +/* 25790 */ {(11<<2)|2,{51,101,0}}, +/* 25791 */ {(11<<2)|2,{51,101,0}}, +/* 25792 */ {(16<<2)|3,{51,105,48}}, +/* 25793 */ {(16<<2)|3,{51,105,49}}, +/* 25794 */ {(16<<2)|3,{51,105,50}}, +/* 25795 */ {(16<<2)|3,{51,105,97}}, +/* 25796 */ {(16<<2)|3,{51,105,99}}, +/* 25797 */ {(16<<2)|3,{51,105,101}}, +/* 25798 */ {(16<<2)|3,{51,105,105}}, +/* 25799 */ {(16<<2)|3,{51,105,111}}, +/* 25800 */ {(16<<2)|3,{51,105,115}}, +/* 25801 */ {(16<<2)|3,{51,105,116}}, +/* 25802 */ {(11<<2)|2,{51,105,0}}, +/* 25803 */ {(11<<2)|2,{51,105,0}}, +/* 25804 */ {(11<<2)|2,{51,105,0}}, +/* 25805 */ {(11<<2)|2,{51,105,0}}, +/* 25806 */ {(11<<2)|2,{51,105,0}}, +/* 25807 */ {(11<<2)|2,{51,105,0}}, +/* 25808 */ {(11<<2)|2,{51,105,0}}, +/* 25809 */ {(11<<2)|2,{51,105,0}}, +/* 25810 */ {(11<<2)|2,{51,105,0}}, +/* 25811 */ {(11<<2)|2,{51,105,0}}, +/* 25812 */ {(11<<2)|2,{51,105,0}}, +/* 25813 */ {(11<<2)|2,{51,105,0}}, +/* 25814 */ {(11<<2)|2,{51,105,0}}, +/* 25815 */ {(11<<2)|2,{51,105,0}}, +/* 25816 */ {(11<<2)|2,{51,105,0}}, +/* 25817 */ {(11<<2)|2,{51,105,0}}, +/* 25818 */ {(11<<2)|2,{51,105,0}}, +/* 25819 */ {(11<<2)|2,{51,105,0}}, +/* 25820 */ {(11<<2)|2,{51,105,0}}, +/* 25821 */ {(11<<2)|2,{51,105,0}}, +/* 25822 */ {(11<<2)|2,{51,105,0}}, +/* 25823 */ {(11<<2)|2,{51,105,0}}, +/* 25824 */ {(16<<2)|3,{51,111,48}}, +/* 25825 */ {(16<<2)|3,{51,111,49}}, +/* 25826 */ {(16<<2)|3,{51,111,50}}, +/* 25827 */ {(16<<2)|3,{51,111,97}}, +/* 25828 */ {(16<<2)|3,{51,111,99}}, +/* 25829 */ {(16<<2)|3,{51,111,101}}, +/* 25830 */ {(16<<2)|3,{51,111,105}}, +/* 25831 */ {(16<<2)|3,{51,111,111}}, +/* 25832 */ {(16<<2)|3,{51,111,115}}, +/* 25833 */ {(16<<2)|3,{51,111,116}}, +/* 25834 */ {(11<<2)|2,{51,111,0}}, +/* 25835 */ {(11<<2)|2,{51,111,0}}, +/* 25836 */ {(11<<2)|2,{51,111,0}}, +/* 25837 */ {(11<<2)|2,{51,111,0}}, +/* 25838 */ {(11<<2)|2,{51,111,0}}, +/* 25839 */ {(11<<2)|2,{51,111,0}}, +/* 25840 */ {(11<<2)|2,{51,111,0}}, +/* 25841 */ {(11<<2)|2,{51,111,0}}, +/* 25842 */ {(11<<2)|2,{51,111,0}}, +/* 25843 */ {(11<<2)|2,{51,111,0}}, +/* 25844 */ {(11<<2)|2,{51,111,0}}, +/* 25845 */ {(11<<2)|2,{51,111,0}}, +/* 25846 */ {(11<<2)|2,{51,111,0}}, +/* 25847 */ {(11<<2)|2,{51,111,0}}, +/* 25848 */ {(11<<2)|2,{51,111,0}}, +/* 25849 */ {(11<<2)|2,{51,111,0}}, +/* 25850 */ {(11<<2)|2,{51,111,0}}, +/* 25851 */ {(11<<2)|2,{51,111,0}}, +/* 25852 */ {(11<<2)|2,{51,111,0}}, +/* 25853 */ {(11<<2)|2,{51,111,0}}, +/* 25854 */ {(11<<2)|2,{51,111,0}}, +/* 25855 */ {(11<<2)|2,{51,111,0}}, +/* 25856 */ {(16<<2)|3,{51,115,48}}, +/* 25857 */ {(16<<2)|3,{51,115,49}}, +/* 25858 */ {(16<<2)|3,{51,115,50}}, +/* 25859 */ {(16<<2)|3,{51,115,97}}, +/* 25860 */ {(16<<2)|3,{51,115,99}}, +/* 25861 */ {(16<<2)|3,{51,115,101}}, +/* 25862 */ {(16<<2)|3,{51,115,105}}, +/* 25863 */ {(16<<2)|3,{51,115,111}}, +/* 25864 */ {(16<<2)|3,{51,115,115}}, +/* 25865 */ {(16<<2)|3,{51,115,116}}, +/* 25866 */ {(11<<2)|2,{51,115,0}}, +/* 25867 */ {(11<<2)|2,{51,115,0}}, +/* 25868 */ {(11<<2)|2,{51,115,0}}, +/* 25869 */ {(11<<2)|2,{51,115,0}}, +/* 25870 */ {(11<<2)|2,{51,115,0}}, +/* 25871 */ {(11<<2)|2,{51,115,0}}, +/* 25872 */ {(11<<2)|2,{51,115,0}}, +/* 25873 */ {(11<<2)|2,{51,115,0}}, +/* 25874 */ {(11<<2)|2,{51,115,0}}, +/* 25875 */ {(11<<2)|2,{51,115,0}}, +/* 25876 */ {(11<<2)|2,{51,115,0}}, +/* 25877 */ {(11<<2)|2,{51,115,0}}, +/* 25878 */ {(11<<2)|2,{51,115,0}}, +/* 25879 */ {(11<<2)|2,{51,115,0}}, +/* 25880 */ {(11<<2)|2,{51,115,0}}, +/* 25881 */ {(11<<2)|2,{51,115,0}}, +/* 25882 */ {(11<<2)|2,{51,115,0}}, +/* 25883 */ {(11<<2)|2,{51,115,0}}, +/* 25884 */ {(11<<2)|2,{51,115,0}}, +/* 25885 */ {(11<<2)|2,{51,115,0}}, +/* 25886 */ {(11<<2)|2,{51,115,0}}, +/* 25887 */ {(11<<2)|2,{51,115,0}}, +/* 25888 */ {(16<<2)|3,{51,116,48}}, +/* 25889 */ {(16<<2)|3,{51,116,49}}, +/* 25890 */ {(16<<2)|3,{51,116,50}}, +/* 25891 */ {(16<<2)|3,{51,116,97}}, +/* 25892 */ {(16<<2)|3,{51,116,99}}, +/* 25893 */ {(16<<2)|3,{51,116,101}}, +/* 25894 */ {(16<<2)|3,{51,116,105}}, +/* 25895 */ {(16<<2)|3,{51,116,111}}, +/* 25896 */ {(16<<2)|3,{51,116,115}}, +/* 25897 */ {(16<<2)|3,{51,116,116}}, +/* 25898 */ {(11<<2)|2,{51,116,0}}, +/* 25899 */ {(11<<2)|2,{51,116,0}}, +/* 25900 */ {(11<<2)|2,{51,116,0}}, +/* 25901 */ {(11<<2)|2,{51,116,0}}, +/* 25902 */ {(11<<2)|2,{51,116,0}}, +/* 25903 */ {(11<<2)|2,{51,116,0}}, +/* 25904 */ {(11<<2)|2,{51,116,0}}, +/* 25905 */ {(11<<2)|2,{51,116,0}}, +/* 25906 */ {(11<<2)|2,{51,116,0}}, +/* 25907 */ {(11<<2)|2,{51,116,0}}, +/* 25908 */ {(11<<2)|2,{51,116,0}}, +/* 25909 */ {(11<<2)|2,{51,116,0}}, +/* 25910 */ {(11<<2)|2,{51,116,0}}, +/* 25911 */ {(11<<2)|2,{51,116,0}}, +/* 25912 */ {(11<<2)|2,{51,116,0}}, +/* 25913 */ {(11<<2)|2,{51,116,0}}, +/* 25914 */ {(11<<2)|2,{51,116,0}}, +/* 25915 */ {(11<<2)|2,{51,116,0}}, +/* 25916 */ {(11<<2)|2,{51,116,0}}, +/* 25917 */ {(11<<2)|2,{51,116,0}}, +/* 25918 */ {(11<<2)|2,{51,116,0}}, +/* 25919 */ {(11<<2)|2,{51,116,0}}, +/* 25920 */ {(12<<2)|2,{51,32,0}}, +/* 25921 */ {(12<<2)|2,{51,32,0}}, +/* 25922 */ {(12<<2)|2,{51,32,0}}, +/* 25923 */ {(12<<2)|2,{51,32,0}}, +/* 25924 */ {(12<<2)|2,{51,32,0}}, +/* 25925 */ {(12<<2)|2,{51,32,0}}, +/* 25926 */ {(12<<2)|2,{51,32,0}}, +/* 25927 */ {(12<<2)|2,{51,32,0}}, +/* 25928 */ {(12<<2)|2,{51,32,0}}, +/* 25929 */ {(12<<2)|2,{51,32,0}}, +/* 25930 */ {(12<<2)|2,{51,32,0}}, +/* 25931 */ {(12<<2)|2,{51,32,0}}, +/* 25932 */ {(12<<2)|2,{51,32,0}}, +/* 25933 */ {(12<<2)|2,{51,32,0}}, +/* 25934 */ {(12<<2)|2,{51,32,0}}, +/* 25935 */ {(12<<2)|2,{51,32,0}}, +/* 25936 */ {(12<<2)|2,{51,37,0}}, +/* 25937 */ {(12<<2)|2,{51,37,0}}, +/* 25938 */ {(12<<2)|2,{51,37,0}}, +/* 25939 */ {(12<<2)|2,{51,37,0}}, +/* 25940 */ {(12<<2)|2,{51,37,0}}, +/* 25941 */ {(12<<2)|2,{51,37,0}}, +/* 25942 */ {(12<<2)|2,{51,37,0}}, +/* 25943 */ {(12<<2)|2,{51,37,0}}, +/* 25944 */ {(12<<2)|2,{51,37,0}}, +/* 25945 */ {(12<<2)|2,{51,37,0}}, +/* 25946 */ {(12<<2)|2,{51,37,0}}, +/* 25947 */ {(12<<2)|2,{51,37,0}}, +/* 25948 */ {(12<<2)|2,{51,37,0}}, +/* 25949 */ {(12<<2)|2,{51,37,0}}, +/* 25950 */ {(12<<2)|2,{51,37,0}}, +/* 25951 */ {(12<<2)|2,{51,37,0}}, +/* 25952 */ {(12<<2)|2,{51,45,0}}, +/* 25953 */ {(12<<2)|2,{51,45,0}}, +/* 25954 */ {(12<<2)|2,{51,45,0}}, +/* 25955 */ {(12<<2)|2,{51,45,0}}, +/* 25956 */ {(12<<2)|2,{51,45,0}}, +/* 25957 */ {(12<<2)|2,{51,45,0}}, +/* 25958 */ {(12<<2)|2,{51,45,0}}, +/* 25959 */ {(12<<2)|2,{51,45,0}}, +/* 25960 */ {(12<<2)|2,{51,45,0}}, +/* 25961 */ {(12<<2)|2,{51,45,0}}, +/* 25962 */ {(12<<2)|2,{51,45,0}}, +/* 25963 */ {(12<<2)|2,{51,45,0}}, +/* 25964 */ {(12<<2)|2,{51,45,0}}, +/* 25965 */ {(12<<2)|2,{51,45,0}}, +/* 25966 */ {(12<<2)|2,{51,45,0}}, +/* 25967 */ {(12<<2)|2,{51,45,0}}, +/* 25968 */ {(12<<2)|2,{51,46,0}}, +/* 25969 */ {(12<<2)|2,{51,46,0}}, +/* 25970 */ {(12<<2)|2,{51,46,0}}, +/* 25971 */ {(12<<2)|2,{51,46,0}}, +/* 25972 */ {(12<<2)|2,{51,46,0}}, +/* 25973 */ {(12<<2)|2,{51,46,0}}, +/* 25974 */ {(12<<2)|2,{51,46,0}}, +/* 25975 */ {(12<<2)|2,{51,46,0}}, +/* 25976 */ {(12<<2)|2,{51,46,0}}, +/* 25977 */ {(12<<2)|2,{51,46,0}}, +/* 25978 */ {(12<<2)|2,{51,46,0}}, +/* 25979 */ {(12<<2)|2,{51,46,0}}, +/* 25980 */ {(12<<2)|2,{51,46,0}}, +/* 25981 */ {(12<<2)|2,{51,46,0}}, +/* 25982 */ {(12<<2)|2,{51,46,0}}, +/* 25983 */ {(12<<2)|2,{51,46,0}}, +/* 25984 */ {(12<<2)|2,{51,47,0}}, +/* 25985 */ {(12<<2)|2,{51,47,0}}, +/* 25986 */ {(12<<2)|2,{51,47,0}}, +/* 25987 */ {(12<<2)|2,{51,47,0}}, +/* 25988 */ {(12<<2)|2,{51,47,0}}, +/* 25989 */ {(12<<2)|2,{51,47,0}}, +/* 25990 */ {(12<<2)|2,{51,47,0}}, +/* 25991 */ {(12<<2)|2,{51,47,0}}, +/* 25992 */ {(12<<2)|2,{51,47,0}}, +/* 25993 */ {(12<<2)|2,{51,47,0}}, +/* 25994 */ {(12<<2)|2,{51,47,0}}, +/* 25995 */ {(12<<2)|2,{51,47,0}}, +/* 25996 */ {(12<<2)|2,{51,47,0}}, +/* 25997 */ {(12<<2)|2,{51,47,0}}, +/* 25998 */ {(12<<2)|2,{51,47,0}}, +/* 25999 */ {(12<<2)|2,{51,47,0}}, +/* 26000 */ {(12<<2)|2,{51,51,0}}, +/* 26001 */ {(12<<2)|2,{51,51,0}}, +/* 26002 */ {(12<<2)|2,{51,51,0}}, +/* 26003 */ {(12<<2)|2,{51,51,0}}, +/* 26004 */ {(12<<2)|2,{51,51,0}}, +/* 26005 */ {(12<<2)|2,{51,51,0}}, +/* 26006 */ {(12<<2)|2,{51,51,0}}, +/* 26007 */ {(12<<2)|2,{51,51,0}}, +/* 26008 */ {(12<<2)|2,{51,51,0}}, +/* 26009 */ {(12<<2)|2,{51,51,0}}, +/* 26010 */ {(12<<2)|2,{51,51,0}}, +/* 26011 */ {(12<<2)|2,{51,51,0}}, +/* 26012 */ {(12<<2)|2,{51,51,0}}, +/* 26013 */ {(12<<2)|2,{51,51,0}}, +/* 26014 */ {(12<<2)|2,{51,51,0}}, +/* 26015 */ {(12<<2)|2,{51,51,0}}, +/* 26016 */ {(12<<2)|2,{51,52,0}}, +/* 26017 */ {(12<<2)|2,{51,52,0}}, +/* 26018 */ {(12<<2)|2,{51,52,0}}, +/* 26019 */ {(12<<2)|2,{51,52,0}}, +/* 26020 */ {(12<<2)|2,{51,52,0}}, +/* 26021 */ {(12<<2)|2,{51,52,0}}, +/* 26022 */ {(12<<2)|2,{51,52,0}}, +/* 26023 */ {(12<<2)|2,{51,52,0}}, +/* 26024 */ {(12<<2)|2,{51,52,0}}, +/* 26025 */ {(12<<2)|2,{51,52,0}}, +/* 26026 */ {(12<<2)|2,{51,52,0}}, +/* 26027 */ {(12<<2)|2,{51,52,0}}, +/* 26028 */ {(12<<2)|2,{51,52,0}}, +/* 26029 */ {(12<<2)|2,{51,52,0}}, +/* 26030 */ {(12<<2)|2,{51,52,0}}, +/* 26031 */ {(12<<2)|2,{51,52,0}}, +/* 26032 */ {(12<<2)|2,{51,53,0}}, +/* 26033 */ {(12<<2)|2,{51,53,0}}, +/* 26034 */ {(12<<2)|2,{51,53,0}}, +/* 26035 */ {(12<<2)|2,{51,53,0}}, +/* 26036 */ {(12<<2)|2,{51,53,0}}, +/* 26037 */ {(12<<2)|2,{51,53,0}}, +/* 26038 */ {(12<<2)|2,{51,53,0}}, +/* 26039 */ {(12<<2)|2,{51,53,0}}, +/* 26040 */ {(12<<2)|2,{51,53,0}}, +/* 26041 */ {(12<<2)|2,{51,53,0}}, +/* 26042 */ {(12<<2)|2,{51,53,0}}, +/* 26043 */ {(12<<2)|2,{51,53,0}}, +/* 26044 */ {(12<<2)|2,{51,53,0}}, +/* 26045 */ {(12<<2)|2,{51,53,0}}, +/* 26046 */ {(12<<2)|2,{51,53,0}}, +/* 26047 */ {(12<<2)|2,{51,53,0}}, +/* 26048 */ {(12<<2)|2,{51,54,0}}, +/* 26049 */ {(12<<2)|2,{51,54,0}}, +/* 26050 */ {(12<<2)|2,{51,54,0}}, +/* 26051 */ {(12<<2)|2,{51,54,0}}, +/* 26052 */ {(12<<2)|2,{51,54,0}}, +/* 26053 */ {(12<<2)|2,{51,54,0}}, +/* 26054 */ {(12<<2)|2,{51,54,0}}, +/* 26055 */ {(12<<2)|2,{51,54,0}}, +/* 26056 */ {(12<<2)|2,{51,54,0}}, +/* 26057 */ {(12<<2)|2,{51,54,0}}, +/* 26058 */ {(12<<2)|2,{51,54,0}}, +/* 26059 */ {(12<<2)|2,{51,54,0}}, +/* 26060 */ {(12<<2)|2,{51,54,0}}, +/* 26061 */ {(12<<2)|2,{51,54,0}}, +/* 26062 */ {(12<<2)|2,{51,54,0}}, +/* 26063 */ {(12<<2)|2,{51,54,0}}, +/* 26064 */ {(12<<2)|2,{51,55,0}}, +/* 26065 */ {(12<<2)|2,{51,55,0}}, +/* 26066 */ {(12<<2)|2,{51,55,0}}, +/* 26067 */ {(12<<2)|2,{51,55,0}}, +/* 26068 */ {(12<<2)|2,{51,55,0}}, +/* 26069 */ {(12<<2)|2,{51,55,0}}, +/* 26070 */ {(12<<2)|2,{51,55,0}}, +/* 26071 */ {(12<<2)|2,{51,55,0}}, +/* 26072 */ {(12<<2)|2,{51,55,0}}, +/* 26073 */ {(12<<2)|2,{51,55,0}}, +/* 26074 */ {(12<<2)|2,{51,55,0}}, +/* 26075 */ {(12<<2)|2,{51,55,0}}, +/* 26076 */ {(12<<2)|2,{51,55,0}}, +/* 26077 */ {(12<<2)|2,{51,55,0}}, +/* 26078 */ {(12<<2)|2,{51,55,0}}, +/* 26079 */ {(12<<2)|2,{51,55,0}}, +/* 26080 */ {(12<<2)|2,{51,56,0}}, +/* 26081 */ {(12<<2)|2,{51,56,0}}, +/* 26082 */ {(12<<2)|2,{51,56,0}}, +/* 26083 */ {(12<<2)|2,{51,56,0}}, +/* 26084 */ {(12<<2)|2,{51,56,0}}, +/* 26085 */ {(12<<2)|2,{51,56,0}}, +/* 26086 */ {(12<<2)|2,{51,56,0}}, +/* 26087 */ {(12<<2)|2,{51,56,0}}, +/* 26088 */ {(12<<2)|2,{51,56,0}}, +/* 26089 */ {(12<<2)|2,{51,56,0}}, +/* 26090 */ {(12<<2)|2,{51,56,0}}, +/* 26091 */ {(12<<2)|2,{51,56,0}}, +/* 26092 */ {(12<<2)|2,{51,56,0}}, +/* 26093 */ {(12<<2)|2,{51,56,0}}, +/* 26094 */ {(12<<2)|2,{51,56,0}}, +/* 26095 */ {(12<<2)|2,{51,56,0}}, +/* 26096 */ {(12<<2)|2,{51,57,0}}, +/* 26097 */ {(12<<2)|2,{51,57,0}}, +/* 26098 */ {(12<<2)|2,{51,57,0}}, +/* 26099 */ {(12<<2)|2,{51,57,0}}, +/* 26100 */ {(12<<2)|2,{51,57,0}}, +/* 26101 */ {(12<<2)|2,{51,57,0}}, +/* 26102 */ {(12<<2)|2,{51,57,0}}, +/* 26103 */ {(12<<2)|2,{51,57,0}}, +/* 26104 */ {(12<<2)|2,{51,57,0}}, +/* 26105 */ {(12<<2)|2,{51,57,0}}, +/* 26106 */ {(12<<2)|2,{51,57,0}}, +/* 26107 */ {(12<<2)|2,{51,57,0}}, +/* 26108 */ {(12<<2)|2,{51,57,0}}, +/* 26109 */ {(12<<2)|2,{51,57,0}}, +/* 26110 */ {(12<<2)|2,{51,57,0}}, +/* 26111 */ {(12<<2)|2,{51,57,0}}, +/* 26112 */ {(12<<2)|2,{51,61,0}}, +/* 26113 */ {(12<<2)|2,{51,61,0}}, +/* 26114 */ {(12<<2)|2,{51,61,0}}, +/* 26115 */ {(12<<2)|2,{51,61,0}}, +/* 26116 */ {(12<<2)|2,{51,61,0}}, +/* 26117 */ {(12<<2)|2,{51,61,0}}, +/* 26118 */ {(12<<2)|2,{51,61,0}}, +/* 26119 */ {(12<<2)|2,{51,61,0}}, +/* 26120 */ {(12<<2)|2,{51,61,0}}, +/* 26121 */ {(12<<2)|2,{51,61,0}}, +/* 26122 */ {(12<<2)|2,{51,61,0}}, +/* 26123 */ {(12<<2)|2,{51,61,0}}, +/* 26124 */ {(12<<2)|2,{51,61,0}}, +/* 26125 */ {(12<<2)|2,{51,61,0}}, +/* 26126 */ {(12<<2)|2,{51,61,0}}, +/* 26127 */ {(12<<2)|2,{51,61,0}}, +/* 26128 */ {(12<<2)|2,{51,65,0}}, +/* 26129 */ {(12<<2)|2,{51,65,0}}, +/* 26130 */ {(12<<2)|2,{51,65,0}}, +/* 26131 */ {(12<<2)|2,{51,65,0}}, +/* 26132 */ {(12<<2)|2,{51,65,0}}, +/* 26133 */ {(12<<2)|2,{51,65,0}}, +/* 26134 */ {(12<<2)|2,{51,65,0}}, +/* 26135 */ {(12<<2)|2,{51,65,0}}, +/* 26136 */ {(12<<2)|2,{51,65,0}}, +/* 26137 */ {(12<<2)|2,{51,65,0}}, +/* 26138 */ {(12<<2)|2,{51,65,0}}, +/* 26139 */ {(12<<2)|2,{51,65,0}}, +/* 26140 */ {(12<<2)|2,{51,65,0}}, +/* 26141 */ {(12<<2)|2,{51,65,0}}, +/* 26142 */ {(12<<2)|2,{51,65,0}}, +/* 26143 */ {(12<<2)|2,{51,65,0}}, +/* 26144 */ {(12<<2)|2,{51,95,0}}, +/* 26145 */ {(12<<2)|2,{51,95,0}}, +/* 26146 */ {(12<<2)|2,{51,95,0}}, +/* 26147 */ {(12<<2)|2,{51,95,0}}, +/* 26148 */ {(12<<2)|2,{51,95,0}}, +/* 26149 */ {(12<<2)|2,{51,95,0}}, +/* 26150 */ {(12<<2)|2,{51,95,0}}, +/* 26151 */ {(12<<2)|2,{51,95,0}}, +/* 26152 */ {(12<<2)|2,{51,95,0}}, +/* 26153 */ {(12<<2)|2,{51,95,0}}, +/* 26154 */ {(12<<2)|2,{51,95,0}}, +/* 26155 */ {(12<<2)|2,{51,95,0}}, +/* 26156 */ {(12<<2)|2,{51,95,0}}, +/* 26157 */ {(12<<2)|2,{51,95,0}}, +/* 26158 */ {(12<<2)|2,{51,95,0}}, +/* 26159 */ {(12<<2)|2,{51,95,0}}, +/* 26160 */ {(12<<2)|2,{51,98,0}}, +/* 26161 */ {(12<<2)|2,{51,98,0}}, +/* 26162 */ {(12<<2)|2,{51,98,0}}, +/* 26163 */ {(12<<2)|2,{51,98,0}}, +/* 26164 */ {(12<<2)|2,{51,98,0}}, +/* 26165 */ {(12<<2)|2,{51,98,0}}, +/* 26166 */ {(12<<2)|2,{51,98,0}}, +/* 26167 */ {(12<<2)|2,{51,98,0}}, +/* 26168 */ {(12<<2)|2,{51,98,0}}, +/* 26169 */ {(12<<2)|2,{51,98,0}}, +/* 26170 */ {(12<<2)|2,{51,98,0}}, +/* 26171 */ {(12<<2)|2,{51,98,0}}, +/* 26172 */ {(12<<2)|2,{51,98,0}}, +/* 26173 */ {(12<<2)|2,{51,98,0}}, +/* 26174 */ {(12<<2)|2,{51,98,0}}, +/* 26175 */ {(12<<2)|2,{51,98,0}}, +/* 26176 */ {(12<<2)|2,{51,100,0}}, +/* 26177 */ {(12<<2)|2,{51,100,0}}, +/* 26178 */ {(12<<2)|2,{51,100,0}}, +/* 26179 */ {(12<<2)|2,{51,100,0}}, +/* 26180 */ {(12<<2)|2,{51,100,0}}, +/* 26181 */ {(12<<2)|2,{51,100,0}}, +/* 26182 */ {(12<<2)|2,{51,100,0}}, +/* 26183 */ {(12<<2)|2,{51,100,0}}, +/* 26184 */ {(12<<2)|2,{51,100,0}}, +/* 26185 */ {(12<<2)|2,{51,100,0}}, +/* 26186 */ {(12<<2)|2,{51,100,0}}, +/* 26187 */ {(12<<2)|2,{51,100,0}}, +/* 26188 */ {(12<<2)|2,{51,100,0}}, +/* 26189 */ {(12<<2)|2,{51,100,0}}, +/* 26190 */ {(12<<2)|2,{51,100,0}}, +/* 26191 */ {(12<<2)|2,{51,100,0}}, +/* 26192 */ {(12<<2)|2,{51,102,0}}, +/* 26193 */ {(12<<2)|2,{51,102,0}}, +/* 26194 */ {(12<<2)|2,{51,102,0}}, +/* 26195 */ {(12<<2)|2,{51,102,0}}, +/* 26196 */ {(12<<2)|2,{51,102,0}}, +/* 26197 */ {(12<<2)|2,{51,102,0}}, +/* 26198 */ {(12<<2)|2,{51,102,0}}, +/* 26199 */ {(12<<2)|2,{51,102,0}}, +/* 26200 */ {(12<<2)|2,{51,102,0}}, +/* 26201 */ {(12<<2)|2,{51,102,0}}, +/* 26202 */ {(12<<2)|2,{51,102,0}}, +/* 26203 */ {(12<<2)|2,{51,102,0}}, +/* 26204 */ {(12<<2)|2,{51,102,0}}, +/* 26205 */ {(12<<2)|2,{51,102,0}}, +/* 26206 */ {(12<<2)|2,{51,102,0}}, +/* 26207 */ {(12<<2)|2,{51,102,0}}, +/* 26208 */ {(12<<2)|2,{51,103,0}}, +/* 26209 */ {(12<<2)|2,{51,103,0}}, +/* 26210 */ {(12<<2)|2,{51,103,0}}, +/* 26211 */ {(12<<2)|2,{51,103,0}}, +/* 26212 */ {(12<<2)|2,{51,103,0}}, +/* 26213 */ {(12<<2)|2,{51,103,0}}, +/* 26214 */ {(12<<2)|2,{51,103,0}}, +/* 26215 */ {(12<<2)|2,{51,103,0}}, +/* 26216 */ {(12<<2)|2,{51,103,0}}, +/* 26217 */ {(12<<2)|2,{51,103,0}}, +/* 26218 */ {(12<<2)|2,{51,103,0}}, +/* 26219 */ {(12<<2)|2,{51,103,0}}, +/* 26220 */ {(12<<2)|2,{51,103,0}}, +/* 26221 */ {(12<<2)|2,{51,103,0}}, +/* 26222 */ {(12<<2)|2,{51,103,0}}, +/* 26223 */ {(12<<2)|2,{51,103,0}}, +/* 26224 */ {(12<<2)|2,{51,104,0}}, +/* 26225 */ {(12<<2)|2,{51,104,0}}, +/* 26226 */ {(12<<2)|2,{51,104,0}}, +/* 26227 */ {(12<<2)|2,{51,104,0}}, +/* 26228 */ {(12<<2)|2,{51,104,0}}, +/* 26229 */ {(12<<2)|2,{51,104,0}}, +/* 26230 */ {(12<<2)|2,{51,104,0}}, +/* 26231 */ {(12<<2)|2,{51,104,0}}, +/* 26232 */ {(12<<2)|2,{51,104,0}}, +/* 26233 */ {(12<<2)|2,{51,104,0}}, +/* 26234 */ {(12<<2)|2,{51,104,0}}, +/* 26235 */ {(12<<2)|2,{51,104,0}}, +/* 26236 */ {(12<<2)|2,{51,104,0}}, +/* 26237 */ {(12<<2)|2,{51,104,0}}, +/* 26238 */ {(12<<2)|2,{51,104,0}}, +/* 26239 */ {(12<<2)|2,{51,104,0}}, +/* 26240 */ {(12<<2)|2,{51,108,0}}, +/* 26241 */ {(12<<2)|2,{51,108,0}}, +/* 26242 */ {(12<<2)|2,{51,108,0}}, +/* 26243 */ {(12<<2)|2,{51,108,0}}, +/* 26244 */ {(12<<2)|2,{51,108,0}}, +/* 26245 */ {(12<<2)|2,{51,108,0}}, +/* 26246 */ {(12<<2)|2,{51,108,0}}, +/* 26247 */ {(12<<2)|2,{51,108,0}}, +/* 26248 */ {(12<<2)|2,{51,108,0}}, +/* 26249 */ {(12<<2)|2,{51,108,0}}, +/* 26250 */ {(12<<2)|2,{51,108,0}}, +/* 26251 */ {(12<<2)|2,{51,108,0}}, +/* 26252 */ {(12<<2)|2,{51,108,0}}, +/* 26253 */ {(12<<2)|2,{51,108,0}}, +/* 26254 */ {(12<<2)|2,{51,108,0}}, +/* 26255 */ {(12<<2)|2,{51,108,0}}, +/* 26256 */ {(12<<2)|2,{51,109,0}}, +/* 26257 */ {(12<<2)|2,{51,109,0}}, +/* 26258 */ {(12<<2)|2,{51,109,0}}, +/* 26259 */ {(12<<2)|2,{51,109,0}}, +/* 26260 */ {(12<<2)|2,{51,109,0}}, +/* 26261 */ {(12<<2)|2,{51,109,0}}, +/* 26262 */ {(12<<2)|2,{51,109,0}}, +/* 26263 */ {(12<<2)|2,{51,109,0}}, +/* 26264 */ {(12<<2)|2,{51,109,0}}, +/* 26265 */ {(12<<2)|2,{51,109,0}}, +/* 26266 */ {(12<<2)|2,{51,109,0}}, +/* 26267 */ {(12<<2)|2,{51,109,0}}, +/* 26268 */ {(12<<2)|2,{51,109,0}}, +/* 26269 */ {(12<<2)|2,{51,109,0}}, +/* 26270 */ {(12<<2)|2,{51,109,0}}, +/* 26271 */ {(12<<2)|2,{51,109,0}}, +/* 26272 */ {(12<<2)|2,{51,110,0}}, +/* 26273 */ {(12<<2)|2,{51,110,0}}, +/* 26274 */ {(12<<2)|2,{51,110,0}}, +/* 26275 */ {(12<<2)|2,{51,110,0}}, +/* 26276 */ {(12<<2)|2,{51,110,0}}, +/* 26277 */ {(12<<2)|2,{51,110,0}}, +/* 26278 */ {(12<<2)|2,{51,110,0}}, +/* 26279 */ {(12<<2)|2,{51,110,0}}, +/* 26280 */ {(12<<2)|2,{51,110,0}}, +/* 26281 */ {(12<<2)|2,{51,110,0}}, +/* 26282 */ {(12<<2)|2,{51,110,0}}, +/* 26283 */ {(12<<2)|2,{51,110,0}}, +/* 26284 */ {(12<<2)|2,{51,110,0}}, +/* 26285 */ {(12<<2)|2,{51,110,0}}, +/* 26286 */ {(12<<2)|2,{51,110,0}}, +/* 26287 */ {(12<<2)|2,{51,110,0}}, +/* 26288 */ {(12<<2)|2,{51,112,0}}, +/* 26289 */ {(12<<2)|2,{51,112,0}}, +/* 26290 */ {(12<<2)|2,{51,112,0}}, +/* 26291 */ {(12<<2)|2,{51,112,0}}, +/* 26292 */ {(12<<2)|2,{51,112,0}}, +/* 26293 */ {(12<<2)|2,{51,112,0}}, +/* 26294 */ {(12<<2)|2,{51,112,0}}, +/* 26295 */ {(12<<2)|2,{51,112,0}}, +/* 26296 */ {(12<<2)|2,{51,112,0}}, +/* 26297 */ {(12<<2)|2,{51,112,0}}, +/* 26298 */ {(12<<2)|2,{51,112,0}}, +/* 26299 */ {(12<<2)|2,{51,112,0}}, +/* 26300 */ {(12<<2)|2,{51,112,0}}, +/* 26301 */ {(12<<2)|2,{51,112,0}}, +/* 26302 */ {(12<<2)|2,{51,112,0}}, +/* 26303 */ {(12<<2)|2,{51,112,0}}, +/* 26304 */ {(12<<2)|2,{51,114,0}}, +/* 26305 */ {(12<<2)|2,{51,114,0}}, +/* 26306 */ {(12<<2)|2,{51,114,0}}, +/* 26307 */ {(12<<2)|2,{51,114,0}}, +/* 26308 */ {(12<<2)|2,{51,114,0}}, +/* 26309 */ {(12<<2)|2,{51,114,0}}, +/* 26310 */ {(12<<2)|2,{51,114,0}}, +/* 26311 */ {(12<<2)|2,{51,114,0}}, +/* 26312 */ {(12<<2)|2,{51,114,0}}, +/* 26313 */ {(12<<2)|2,{51,114,0}}, +/* 26314 */ {(12<<2)|2,{51,114,0}}, +/* 26315 */ {(12<<2)|2,{51,114,0}}, +/* 26316 */ {(12<<2)|2,{51,114,0}}, +/* 26317 */ {(12<<2)|2,{51,114,0}}, +/* 26318 */ {(12<<2)|2,{51,114,0}}, +/* 26319 */ {(12<<2)|2,{51,114,0}}, +/* 26320 */ {(12<<2)|2,{51,117,0}}, +/* 26321 */ {(12<<2)|2,{51,117,0}}, +/* 26322 */ {(12<<2)|2,{51,117,0}}, +/* 26323 */ {(12<<2)|2,{51,117,0}}, +/* 26324 */ {(12<<2)|2,{51,117,0}}, +/* 26325 */ {(12<<2)|2,{51,117,0}}, +/* 26326 */ {(12<<2)|2,{51,117,0}}, +/* 26327 */ {(12<<2)|2,{51,117,0}}, +/* 26328 */ {(12<<2)|2,{51,117,0}}, +/* 26329 */ {(12<<2)|2,{51,117,0}}, +/* 26330 */ {(12<<2)|2,{51,117,0}}, +/* 26331 */ {(12<<2)|2,{51,117,0}}, +/* 26332 */ {(12<<2)|2,{51,117,0}}, +/* 26333 */ {(12<<2)|2,{51,117,0}}, +/* 26334 */ {(12<<2)|2,{51,117,0}}, +/* 26335 */ {(12<<2)|2,{51,117,0}}, +/* 26336 */ {(13<<2)|2,{51,58,0}}, +/* 26337 */ {(13<<2)|2,{51,58,0}}, +/* 26338 */ {(13<<2)|2,{51,58,0}}, +/* 26339 */ {(13<<2)|2,{51,58,0}}, +/* 26340 */ {(13<<2)|2,{51,58,0}}, +/* 26341 */ {(13<<2)|2,{51,58,0}}, +/* 26342 */ {(13<<2)|2,{51,58,0}}, +/* 26343 */ {(13<<2)|2,{51,58,0}}, +/* 26344 */ {(13<<2)|2,{51,66,0}}, +/* 26345 */ {(13<<2)|2,{51,66,0}}, +/* 26346 */ {(13<<2)|2,{51,66,0}}, +/* 26347 */ {(13<<2)|2,{51,66,0}}, +/* 26348 */ {(13<<2)|2,{51,66,0}}, +/* 26349 */ {(13<<2)|2,{51,66,0}}, +/* 26350 */ {(13<<2)|2,{51,66,0}}, +/* 26351 */ {(13<<2)|2,{51,66,0}}, +/* 26352 */ {(13<<2)|2,{51,67,0}}, +/* 26353 */ {(13<<2)|2,{51,67,0}}, +/* 26354 */ {(13<<2)|2,{51,67,0}}, +/* 26355 */ {(13<<2)|2,{51,67,0}}, +/* 26356 */ {(13<<2)|2,{51,67,0}}, +/* 26357 */ {(13<<2)|2,{51,67,0}}, +/* 26358 */ {(13<<2)|2,{51,67,0}}, +/* 26359 */ {(13<<2)|2,{51,67,0}}, +/* 26360 */ {(13<<2)|2,{51,68,0}}, +/* 26361 */ {(13<<2)|2,{51,68,0}}, +/* 26362 */ {(13<<2)|2,{51,68,0}}, +/* 26363 */ {(13<<2)|2,{51,68,0}}, +/* 26364 */ {(13<<2)|2,{51,68,0}}, +/* 26365 */ {(13<<2)|2,{51,68,0}}, +/* 26366 */ {(13<<2)|2,{51,68,0}}, +/* 26367 */ {(13<<2)|2,{51,68,0}}, +/* 26368 */ {(13<<2)|2,{51,69,0}}, +/* 26369 */ {(13<<2)|2,{51,69,0}}, +/* 26370 */ {(13<<2)|2,{51,69,0}}, +/* 26371 */ {(13<<2)|2,{51,69,0}}, +/* 26372 */ {(13<<2)|2,{51,69,0}}, +/* 26373 */ {(13<<2)|2,{51,69,0}}, +/* 26374 */ {(13<<2)|2,{51,69,0}}, +/* 26375 */ {(13<<2)|2,{51,69,0}}, +/* 26376 */ {(13<<2)|2,{51,70,0}}, +/* 26377 */ {(13<<2)|2,{51,70,0}}, +/* 26378 */ {(13<<2)|2,{51,70,0}}, +/* 26379 */ {(13<<2)|2,{51,70,0}}, +/* 26380 */ {(13<<2)|2,{51,70,0}}, +/* 26381 */ {(13<<2)|2,{51,70,0}}, +/* 26382 */ {(13<<2)|2,{51,70,0}}, +/* 26383 */ {(13<<2)|2,{51,70,0}}, +/* 26384 */ {(13<<2)|2,{51,71,0}}, +/* 26385 */ {(13<<2)|2,{51,71,0}}, +/* 26386 */ {(13<<2)|2,{51,71,0}}, +/* 26387 */ {(13<<2)|2,{51,71,0}}, +/* 26388 */ {(13<<2)|2,{51,71,0}}, +/* 26389 */ {(13<<2)|2,{51,71,0}}, +/* 26390 */ {(13<<2)|2,{51,71,0}}, +/* 26391 */ {(13<<2)|2,{51,71,0}}, +/* 26392 */ {(13<<2)|2,{51,72,0}}, +/* 26393 */ {(13<<2)|2,{51,72,0}}, +/* 26394 */ {(13<<2)|2,{51,72,0}}, +/* 26395 */ {(13<<2)|2,{51,72,0}}, +/* 26396 */ {(13<<2)|2,{51,72,0}}, +/* 26397 */ {(13<<2)|2,{51,72,0}}, +/* 26398 */ {(13<<2)|2,{51,72,0}}, +/* 26399 */ {(13<<2)|2,{51,72,0}}, +/* 26400 */ {(13<<2)|2,{51,73,0}}, +/* 26401 */ {(13<<2)|2,{51,73,0}}, +/* 26402 */ {(13<<2)|2,{51,73,0}}, +/* 26403 */ {(13<<2)|2,{51,73,0}}, +/* 26404 */ {(13<<2)|2,{51,73,0}}, +/* 26405 */ {(13<<2)|2,{51,73,0}}, +/* 26406 */ {(13<<2)|2,{51,73,0}}, +/* 26407 */ {(13<<2)|2,{51,73,0}}, +/* 26408 */ {(13<<2)|2,{51,74,0}}, +/* 26409 */ {(13<<2)|2,{51,74,0}}, +/* 26410 */ {(13<<2)|2,{51,74,0}}, +/* 26411 */ {(13<<2)|2,{51,74,0}}, +/* 26412 */ {(13<<2)|2,{51,74,0}}, +/* 26413 */ {(13<<2)|2,{51,74,0}}, +/* 26414 */ {(13<<2)|2,{51,74,0}}, +/* 26415 */ {(13<<2)|2,{51,74,0}}, +/* 26416 */ {(13<<2)|2,{51,75,0}}, +/* 26417 */ {(13<<2)|2,{51,75,0}}, +/* 26418 */ {(13<<2)|2,{51,75,0}}, +/* 26419 */ {(13<<2)|2,{51,75,0}}, +/* 26420 */ {(13<<2)|2,{51,75,0}}, +/* 26421 */ {(13<<2)|2,{51,75,0}}, +/* 26422 */ {(13<<2)|2,{51,75,0}}, +/* 26423 */ {(13<<2)|2,{51,75,0}}, +/* 26424 */ {(13<<2)|2,{51,76,0}}, +/* 26425 */ {(13<<2)|2,{51,76,0}}, +/* 26426 */ {(13<<2)|2,{51,76,0}}, +/* 26427 */ {(13<<2)|2,{51,76,0}}, +/* 26428 */ {(13<<2)|2,{51,76,0}}, +/* 26429 */ {(13<<2)|2,{51,76,0}}, +/* 26430 */ {(13<<2)|2,{51,76,0}}, +/* 26431 */ {(13<<2)|2,{51,76,0}}, +/* 26432 */ {(13<<2)|2,{51,77,0}}, +/* 26433 */ {(13<<2)|2,{51,77,0}}, +/* 26434 */ {(13<<2)|2,{51,77,0}}, +/* 26435 */ {(13<<2)|2,{51,77,0}}, +/* 26436 */ {(13<<2)|2,{51,77,0}}, +/* 26437 */ {(13<<2)|2,{51,77,0}}, +/* 26438 */ {(13<<2)|2,{51,77,0}}, +/* 26439 */ {(13<<2)|2,{51,77,0}}, +/* 26440 */ {(13<<2)|2,{51,78,0}}, +/* 26441 */ {(13<<2)|2,{51,78,0}}, +/* 26442 */ {(13<<2)|2,{51,78,0}}, +/* 26443 */ {(13<<2)|2,{51,78,0}}, +/* 26444 */ {(13<<2)|2,{51,78,0}}, +/* 26445 */ {(13<<2)|2,{51,78,0}}, +/* 26446 */ {(13<<2)|2,{51,78,0}}, +/* 26447 */ {(13<<2)|2,{51,78,0}}, +/* 26448 */ {(13<<2)|2,{51,79,0}}, +/* 26449 */ {(13<<2)|2,{51,79,0}}, +/* 26450 */ {(13<<2)|2,{51,79,0}}, +/* 26451 */ {(13<<2)|2,{51,79,0}}, +/* 26452 */ {(13<<2)|2,{51,79,0}}, +/* 26453 */ {(13<<2)|2,{51,79,0}}, +/* 26454 */ {(13<<2)|2,{51,79,0}}, +/* 26455 */ {(13<<2)|2,{51,79,0}}, +/* 26456 */ {(13<<2)|2,{51,80,0}}, +/* 26457 */ {(13<<2)|2,{51,80,0}}, +/* 26458 */ {(13<<2)|2,{51,80,0}}, +/* 26459 */ {(13<<2)|2,{51,80,0}}, +/* 26460 */ {(13<<2)|2,{51,80,0}}, +/* 26461 */ {(13<<2)|2,{51,80,0}}, +/* 26462 */ {(13<<2)|2,{51,80,0}}, +/* 26463 */ {(13<<2)|2,{51,80,0}}, +/* 26464 */ {(13<<2)|2,{51,81,0}}, +/* 26465 */ {(13<<2)|2,{51,81,0}}, +/* 26466 */ {(13<<2)|2,{51,81,0}}, +/* 26467 */ {(13<<2)|2,{51,81,0}}, +/* 26468 */ {(13<<2)|2,{51,81,0}}, +/* 26469 */ {(13<<2)|2,{51,81,0}}, +/* 26470 */ {(13<<2)|2,{51,81,0}}, +/* 26471 */ {(13<<2)|2,{51,81,0}}, +/* 26472 */ {(13<<2)|2,{51,82,0}}, +/* 26473 */ {(13<<2)|2,{51,82,0}}, +/* 26474 */ {(13<<2)|2,{51,82,0}}, +/* 26475 */ {(13<<2)|2,{51,82,0}}, +/* 26476 */ {(13<<2)|2,{51,82,0}}, +/* 26477 */ {(13<<2)|2,{51,82,0}}, +/* 26478 */ {(13<<2)|2,{51,82,0}}, +/* 26479 */ {(13<<2)|2,{51,82,0}}, +/* 26480 */ {(13<<2)|2,{51,83,0}}, +/* 26481 */ {(13<<2)|2,{51,83,0}}, +/* 26482 */ {(13<<2)|2,{51,83,0}}, +/* 26483 */ {(13<<2)|2,{51,83,0}}, +/* 26484 */ {(13<<2)|2,{51,83,0}}, +/* 26485 */ {(13<<2)|2,{51,83,0}}, +/* 26486 */ {(13<<2)|2,{51,83,0}}, +/* 26487 */ {(13<<2)|2,{51,83,0}}, +/* 26488 */ {(13<<2)|2,{51,84,0}}, +/* 26489 */ {(13<<2)|2,{51,84,0}}, +/* 26490 */ {(13<<2)|2,{51,84,0}}, +/* 26491 */ {(13<<2)|2,{51,84,0}}, +/* 26492 */ {(13<<2)|2,{51,84,0}}, +/* 26493 */ {(13<<2)|2,{51,84,0}}, +/* 26494 */ {(13<<2)|2,{51,84,0}}, +/* 26495 */ {(13<<2)|2,{51,84,0}}, +/* 26496 */ {(13<<2)|2,{51,85,0}}, +/* 26497 */ {(13<<2)|2,{51,85,0}}, +/* 26498 */ {(13<<2)|2,{51,85,0}}, +/* 26499 */ {(13<<2)|2,{51,85,0}}, +/* 26500 */ {(13<<2)|2,{51,85,0}}, +/* 26501 */ {(13<<2)|2,{51,85,0}}, +/* 26502 */ {(13<<2)|2,{51,85,0}}, +/* 26503 */ {(13<<2)|2,{51,85,0}}, +/* 26504 */ {(13<<2)|2,{51,86,0}}, +/* 26505 */ {(13<<2)|2,{51,86,0}}, +/* 26506 */ {(13<<2)|2,{51,86,0}}, +/* 26507 */ {(13<<2)|2,{51,86,0}}, +/* 26508 */ {(13<<2)|2,{51,86,0}}, +/* 26509 */ {(13<<2)|2,{51,86,0}}, +/* 26510 */ {(13<<2)|2,{51,86,0}}, +/* 26511 */ {(13<<2)|2,{51,86,0}}, +/* 26512 */ {(13<<2)|2,{51,87,0}}, +/* 26513 */ {(13<<2)|2,{51,87,0}}, +/* 26514 */ {(13<<2)|2,{51,87,0}}, +/* 26515 */ {(13<<2)|2,{51,87,0}}, +/* 26516 */ {(13<<2)|2,{51,87,0}}, +/* 26517 */ {(13<<2)|2,{51,87,0}}, +/* 26518 */ {(13<<2)|2,{51,87,0}}, +/* 26519 */ {(13<<2)|2,{51,87,0}}, +/* 26520 */ {(13<<2)|2,{51,89,0}}, +/* 26521 */ {(13<<2)|2,{51,89,0}}, +/* 26522 */ {(13<<2)|2,{51,89,0}}, +/* 26523 */ {(13<<2)|2,{51,89,0}}, +/* 26524 */ {(13<<2)|2,{51,89,0}}, +/* 26525 */ {(13<<2)|2,{51,89,0}}, +/* 26526 */ {(13<<2)|2,{51,89,0}}, +/* 26527 */ {(13<<2)|2,{51,89,0}}, +/* 26528 */ {(13<<2)|2,{51,106,0}}, +/* 26529 */ {(13<<2)|2,{51,106,0}}, +/* 26530 */ {(13<<2)|2,{51,106,0}}, +/* 26531 */ {(13<<2)|2,{51,106,0}}, +/* 26532 */ {(13<<2)|2,{51,106,0}}, +/* 26533 */ {(13<<2)|2,{51,106,0}}, +/* 26534 */ {(13<<2)|2,{51,106,0}}, +/* 26535 */ {(13<<2)|2,{51,106,0}}, +/* 26536 */ {(13<<2)|2,{51,107,0}}, +/* 26537 */ {(13<<2)|2,{51,107,0}}, +/* 26538 */ {(13<<2)|2,{51,107,0}}, +/* 26539 */ {(13<<2)|2,{51,107,0}}, +/* 26540 */ {(13<<2)|2,{51,107,0}}, +/* 26541 */ {(13<<2)|2,{51,107,0}}, +/* 26542 */ {(13<<2)|2,{51,107,0}}, +/* 26543 */ {(13<<2)|2,{51,107,0}}, +/* 26544 */ {(13<<2)|2,{51,113,0}}, +/* 26545 */ {(13<<2)|2,{51,113,0}}, +/* 26546 */ {(13<<2)|2,{51,113,0}}, +/* 26547 */ {(13<<2)|2,{51,113,0}}, +/* 26548 */ {(13<<2)|2,{51,113,0}}, +/* 26549 */ {(13<<2)|2,{51,113,0}}, +/* 26550 */ {(13<<2)|2,{51,113,0}}, +/* 26551 */ {(13<<2)|2,{51,113,0}}, +/* 26552 */ {(13<<2)|2,{51,118,0}}, +/* 26553 */ {(13<<2)|2,{51,118,0}}, +/* 26554 */ {(13<<2)|2,{51,118,0}}, +/* 26555 */ {(13<<2)|2,{51,118,0}}, +/* 26556 */ {(13<<2)|2,{51,118,0}}, +/* 26557 */ {(13<<2)|2,{51,118,0}}, +/* 26558 */ {(13<<2)|2,{51,118,0}}, +/* 26559 */ {(13<<2)|2,{51,118,0}}, +/* 26560 */ {(13<<2)|2,{51,119,0}}, +/* 26561 */ {(13<<2)|2,{51,119,0}}, +/* 26562 */ {(13<<2)|2,{51,119,0}}, +/* 26563 */ {(13<<2)|2,{51,119,0}}, +/* 26564 */ {(13<<2)|2,{51,119,0}}, +/* 26565 */ {(13<<2)|2,{51,119,0}}, +/* 26566 */ {(13<<2)|2,{51,119,0}}, +/* 26567 */ {(13<<2)|2,{51,119,0}}, +/* 26568 */ {(13<<2)|2,{51,120,0}}, +/* 26569 */ {(13<<2)|2,{51,120,0}}, +/* 26570 */ {(13<<2)|2,{51,120,0}}, +/* 26571 */ {(13<<2)|2,{51,120,0}}, +/* 26572 */ {(13<<2)|2,{51,120,0}}, +/* 26573 */ {(13<<2)|2,{51,120,0}}, +/* 26574 */ {(13<<2)|2,{51,120,0}}, +/* 26575 */ {(13<<2)|2,{51,120,0}}, +/* 26576 */ {(13<<2)|2,{51,121,0}}, +/* 26577 */ {(13<<2)|2,{51,121,0}}, +/* 26578 */ {(13<<2)|2,{51,121,0}}, +/* 26579 */ {(13<<2)|2,{51,121,0}}, +/* 26580 */ {(13<<2)|2,{51,121,0}}, +/* 26581 */ {(13<<2)|2,{51,121,0}}, +/* 26582 */ {(13<<2)|2,{51,121,0}}, +/* 26583 */ {(13<<2)|2,{51,121,0}}, +/* 26584 */ {(13<<2)|2,{51,122,0}}, +/* 26585 */ {(13<<2)|2,{51,122,0}}, +/* 26586 */ {(13<<2)|2,{51,122,0}}, +/* 26587 */ {(13<<2)|2,{51,122,0}}, +/* 26588 */ {(13<<2)|2,{51,122,0}}, +/* 26589 */ {(13<<2)|2,{51,122,0}}, +/* 26590 */ {(13<<2)|2,{51,122,0}}, +/* 26591 */ {(13<<2)|2,{51,122,0}}, +/* 26592 */ {(14<<2)|2,{51,38,0}}, +/* 26593 */ {(14<<2)|2,{51,38,0}}, +/* 26594 */ {(14<<2)|2,{51,38,0}}, +/* 26595 */ {(14<<2)|2,{51,38,0}}, +/* 26596 */ {(14<<2)|2,{51,42,0}}, +/* 26597 */ {(14<<2)|2,{51,42,0}}, +/* 26598 */ {(14<<2)|2,{51,42,0}}, +/* 26599 */ {(14<<2)|2,{51,42,0}}, +/* 26600 */ {(14<<2)|2,{51,44,0}}, +/* 26601 */ {(14<<2)|2,{51,44,0}}, +/* 26602 */ {(14<<2)|2,{51,44,0}}, +/* 26603 */ {(14<<2)|2,{51,44,0}}, +/* 26604 */ {(14<<2)|2,{51,59,0}}, +/* 26605 */ {(14<<2)|2,{51,59,0}}, +/* 26606 */ {(14<<2)|2,{51,59,0}}, +/* 26607 */ {(14<<2)|2,{51,59,0}}, +/* 26608 */ {(14<<2)|2,{51,88,0}}, +/* 26609 */ {(14<<2)|2,{51,88,0}}, +/* 26610 */ {(14<<2)|2,{51,88,0}}, +/* 26611 */ {(14<<2)|2,{51,88,0}}, +/* 26612 */ {(14<<2)|2,{51,90,0}}, +/* 26613 */ {(14<<2)|2,{51,90,0}}, +/* 26614 */ {(14<<2)|2,{51,90,0}}, +/* 26615 */ {(14<<2)|2,{51,90,0}}, +/* 26616 */ {(16<<2)|2,{51,33,0}}, +/* 26617 */ {(16<<2)|2,{51,34,0}}, +/* 26618 */ {(16<<2)|2,{51,40,0}}, +/* 26619 */ {(16<<2)|2,{51,41,0}}, +/* 26620 */ {(16<<2)|2,{51,63,0}}, +/* 26621 */ {(6<<2)|1,{51,0,0}}, +/* 26622 */ {(6<<2)|1,{51,0,0}}, +/* 26623 */ {(6<<2)|1,{51,0,0}}, +/* 26624 */ {(16<<2)|3,{52,48,48}}, +/* 26625 */ {(16<<2)|3,{52,48,49}}, +/* 26626 */ {(16<<2)|3,{52,48,50}}, +/* 26627 */ {(16<<2)|3,{52,48,97}}, +/* 26628 */ {(16<<2)|3,{52,48,99}}, +/* 26629 */ {(16<<2)|3,{52,48,101}}, +/* 26630 */ {(16<<2)|3,{52,48,105}}, +/* 26631 */ {(16<<2)|3,{52,48,111}}, +/* 26632 */ {(16<<2)|3,{52,48,115}}, +/* 26633 */ {(16<<2)|3,{52,48,116}}, +/* 26634 */ {(11<<2)|2,{52,48,0}}, +/* 26635 */ {(11<<2)|2,{52,48,0}}, +/* 26636 */ {(11<<2)|2,{52,48,0}}, +/* 26637 */ {(11<<2)|2,{52,48,0}}, +/* 26638 */ {(11<<2)|2,{52,48,0}}, +/* 26639 */ {(11<<2)|2,{52,48,0}}, +/* 26640 */ {(11<<2)|2,{52,48,0}}, +/* 26641 */ {(11<<2)|2,{52,48,0}}, +/* 26642 */ {(11<<2)|2,{52,48,0}}, +/* 26643 */ {(11<<2)|2,{52,48,0}}, +/* 26644 */ {(11<<2)|2,{52,48,0}}, +/* 26645 */ {(11<<2)|2,{52,48,0}}, +/* 26646 */ {(11<<2)|2,{52,48,0}}, +/* 26647 */ {(11<<2)|2,{52,48,0}}, +/* 26648 */ {(11<<2)|2,{52,48,0}}, +/* 26649 */ {(11<<2)|2,{52,48,0}}, +/* 26650 */ {(11<<2)|2,{52,48,0}}, +/* 26651 */ {(11<<2)|2,{52,48,0}}, +/* 26652 */ {(11<<2)|2,{52,48,0}}, +/* 26653 */ {(11<<2)|2,{52,48,0}}, +/* 26654 */ {(11<<2)|2,{52,48,0}}, +/* 26655 */ {(11<<2)|2,{52,48,0}}, +/* 26656 */ {(16<<2)|3,{52,49,48}}, +/* 26657 */ {(16<<2)|3,{52,49,49}}, +/* 26658 */ {(16<<2)|3,{52,49,50}}, +/* 26659 */ {(16<<2)|3,{52,49,97}}, +/* 26660 */ {(16<<2)|3,{52,49,99}}, +/* 26661 */ {(16<<2)|3,{52,49,101}}, +/* 26662 */ {(16<<2)|3,{52,49,105}}, +/* 26663 */ {(16<<2)|3,{52,49,111}}, +/* 26664 */ {(16<<2)|3,{52,49,115}}, +/* 26665 */ {(16<<2)|3,{52,49,116}}, +/* 26666 */ {(11<<2)|2,{52,49,0}}, +/* 26667 */ {(11<<2)|2,{52,49,0}}, +/* 26668 */ {(11<<2)|2,{52,49,0}}, +/* 26669 */ {(11<<2)|2,{52,49,0}}, +/* 26670 */ {(11<<2)|2,{52,49,0}}, +/* 26671 */ {(11<<2)|2,{52,49,0}}, +/* 26672 */ {(11<<2)|2,{52,49,0}}, +/* 26673 */ {(11<<2)|2,{52,49,0}}, +/* 26674 */ {(11<<2)|2,{52,49,0}}, +/* 26675 */ {(11<<2)|2,{52,49,0}}, +/* 26676 */ {(11<<2)|2,{52,49,0}}, +/* 26677 */ {(11<<2)|2,{52,49,0}}, +/* 26678 */ {(11<<2)|2,{52,49,0}}, +/* 26679 */ {(11<<2)|2,{52,49,0}}, +/* 26680 */ {(11<<2)|2,{52,49,0}}, +/* 26681 */ {(11<<2)|2,{52,49,0}}, +/* 26682 */ {(11<<2)|2,{52,49,0}}, +/* 26683 */ {(11<<2)|2,{52,49,0}}, +/* 26684 */ {(11<<2)|2,{52,49,0}}, +/* 26685 */ {(11<<2)|2,{52,49,0}}, +/* 26686 */ {(11<<2)|2,{52,49,0}}, +/* 26687 */ {(11<<2)|2,{52,49,0}}, +/* 26688 */ {(16<<2)|3,{52,50,48}}, +/* 26689 */ {(16<<2)|3,{52,50,49}}, +/* 26690 */ {(16<<2)|3,{52,50,50}}, +/* 26691 */ {(16<<2)|3,{52,50,97}}, +/* 26692 */ {(16<<2)|3,{52,50,99}}, +/* 26693 */ {(16<<2)|3,{52,50,101}}, +/* 26694 */ {(16<<2)|3,{52,50,105}}, +/* 26695 */ {(16<<2)|3,{52,50,111}}, +/* 26696 */ {(16<<2)|3,{52,50,115}}, +/* 26697 */ {(16<<2)|3,{52,50,116}}, +/* 26698 */ {(11<<2)|2,{52,50,0}}, +/* 26699 */ {(11<<2)|2,{52,50,0}}, +/* 26700 */ {(11<<2)|2,{52,50,0}}, +/* 26701 */ {(11<<2)|2,{52,50,0}}, +/* 26702 */ {(11<<2)|2,{52,50,0}}, +/* 26703 */ {(11<<2)|2,{52,50,0}}, +/* 26704 */ {(11<<2)|2,{52,50,0}}, +/* 26705 */ {(11<<2)|2,{52,50,0}}, +/* 26706 */ {(11<<2)|2,{52,50,0}}, +/* 26707 */ {(11<<2)|2,{52,50,0}}, +/* 26708 */ {(11<<2)|2,{52,50,0}}, +/* 26709 */ {(11<<2)|2,{52,50,0}}, +/* 26710 */ {(11<<2)|2,{52,50,0}}, +/* 26711 */ {(11<<2)|2,{52,50,0}}, +/* 26712 */ {(11<<2)|2,{52,50,0}}, +/* 26713 */ {(11<<2)|2,{52,50,0}}, +/* 26714 */ {(11<<2)|2,{52,50,0}}, +/* 26715 */ {(11<<2)|2,{52,50,0}}, +/* 26716 */ {(11<<2)|2,{52,50,0}}, +/* 26717 */ {(11<<2)|2,{52,50,0}}, +/* 26718 */ {(11<<2)|2,{52,50,0}}, +/* 26719 */ {(11<<2)|2,{52,50,0}}, +/* 26720 */ {(16<<2)|3,{52,97,48}}, +/* 26721 */ {(16<<2)|3,{52,97,49}}, +/* 26722 */ {(16<<2)|3,{52,97,50}}, +/* 26723 */ {(16<<2)|3,{52,97,97}}, +/* 26724 */ {(16<<2)|3,{52,97,99}}, +/* 26725 */ {(16<<2)|3,{52,97,101}}, +/* 26726 */ {(16<<2)|3,{52,97,105}}, +/* 26727 */ {(16<<2)|3,{52,97,111}}, +/* 26728 */ {(16<<2)|3,{52,97,115}}, +/* 26729 */ {(16<<2)|3,{52,97,116}}, +/* 26730 */ {(11<<2)|2,{52,97,0}}, +/* 26731 */ {(11<<2)|2,{52,97,0}}, +/* 26732 */ {(11<<2)|2,{52,97,0}}, +/* 26733 */ {(11<<2)|2,{52,97,0}}, +/* 26734 */ {(11<<2)|2,{52,97,0}}, +/* 26735 */ {(11<<2)|2,{52,97,0}}, +/* 26736 */ {(11<<2)|2,{52,97,0}}, +/* 26737 */ {(11<<2)|2,{52,97,0}}, +/* 26738 */ {(11<<2)|2,{52,97,0}}, +/* 26739 */ {(11<<2)|2,{52,97,0}}, +/* 26740 */ {(11<<2)|2,{52,97,0}}, +/* 26741 */ {(11<<2)|2,{52,97,0}}, +/* 26742 */ {(11<<2)|2,{52,97,0}}, +/* 26743 */ {(11<<2)|2,{52,97,0}}, +/* 26744 */ {(11<<2)|2,{52,97,0}}, +/* 26745 */ {(11<<2)|2,{52,97,0}}, +/* 26746 */ {(11<<2)|2,{52,97,0}}, +/* 26747 */ {(11<<2)|2,{52,97,0}}, +/* 26748 */ {(11<<2)|2,{52,97,0}}, +/* 26749 */ {(11<<2)|2,{52,97,0}}, +/* 26750 */ {(11<<2)|2,{52,97,0}}, +/* 26751 */ {(11<<2)|2,{52,97,0}}, +/* 26752 */ {(16<<2)|3,{52,99,48}}, +/* 26753 */ {(16<<2)|3,{52,99,49}}, +/* 26754 */ {(16<<2)|3,{52,99,50}}, +/* 26755 */ {(16<<2)|3,{52,99,97}}, +/* 26756 */ {(16<<2)|3,{52,99,99}}, +/* 26757 */ {(16<<2)|3,{52,99,101}}, +/* 26758 */ {(16<<2)|3,{52,99,105}}, +/* 26759 */ {(16<<2)|3,{52,99,111}}, +/* 26760 */ {(16<<2)|3,{52,99,115}}, +/* 26761 */ {(16<<2)|3,{52,99,116}}, +/* 26762 */ {(11<<2)|2,{52,99,0}}, +/* 26763 */ {(11<<2)|2,{52,99,0}}, +/* 26764 */ {(11<<2)|2,{52,99,0}}, +/* 26765 */ {(11<<2)|2,{52,99,0}}, +/* 26766 */ {(11<<2)|2,{52,99,0}}, +/* 26767 */ {(11<<2)|2,{52,99,0}}, +/* 26768 */ {(11<<2)|2,{52,99,0}}, +/* 26769 */ {(11<<2)|2,{52,99,0}}, +/* 26770 */ {(11<<2)|2,{52,99,0}}, +/* 26771 */ {(11<<2)|2,{52,99,0}}, +/* 26772 */ {(11<<2)|2,{52,99,0}}, +/* 26773 */ {(11<<2)|2,{52,99,0}}, +/* 26774 */ {(11<<2)|2,{52,99,0}}, +/* 26775 */ {(11<<2)|2,{52,99,0}}, +/* 26776 */ {(11<<2)|2,{52,99,0}}, +/* 26777 */ {(11<<2)|2,{52,99,0}}, +/* 26778 */ {(11<<2)|2,{52,99,0}}, +/* 26779 */ {(11<<2)|2,{52,99,0}}, +/* 26780 */ {(11<<2)|2,{52,99,0}}, +/* 26781 */ {(11<<2)|2,{52,99,0}}, +/* 26782 */ {(11<<2)|2,{52,99,0}}, +/* 26783 */ {(11<<2)|2,{52,99,0}}, +/* 26784 */ {(16<<2)|3,{52,101,48}}, +/* 26785 */ {(16<<2)|3,{52,101,49}}, +/* 26786 */ {(16<<2)|3,{52,101,50}}, +/* 26787 */ {(16<<2)|3,{52,101,97}}, +/* 26788 */ {(16<<2)|3,{52,101,99}}, +/* 26789 */ {(16<<2)|3,{52,101,101}}, +/* 26790 */ {(16<<2)|3,{52,101,105}}, +/* 26791 */ {(16<<2)|3,{52,101,111}}, +/* 26792 */ {(16<<2)|3,{52,101,115}}, +/* 26793 */ {(16<<2)|3,{52,101,116}}, +/* 26794 */ {(11<<2)|2,{52,101,0}}, +/* 26795 */ {(11<<2)|2,{52,101,0}}, +/* 26796 */ {(11<<2)|2,{52,101,0}}, +/* 26797 */ {(11<<2)|2,{52,101,0}}, +/* 26798 */ {(11<<2)|2,{52,101,0}}, +/* 26799 */ {(11<<2)|2,{52,101,0}}, +/* 26800 */ {(11<<2)|2,{52,101,0}}, +/* 26801 */ {(11<<2)|2,{52,101,0}}, +/* 26802 */ {(11<<2)|2,{52,101,0}}, +/* 26803 */ {(11<<2)|2,{52,101,0}}, +/* 26804 */ {(11<<2)|2,{52,101,0}}, +/* 26805 */ {(11<<2)|2,{52,101,0}}, +/* 26806 */ {(11<<2)|2,{52,101,0}}, +/* 26807 */ {(11<<2)|2,{52,101,0}}, +/* 26808 */ {(11<<2)|2,{52,101,0}}, +/* 26809 */ {(11<<2)|2,{52,101,0}}, +/* 26810 */ {(11<<2)|2,{52,101,0}}, +/* 26811 */ {(11<<2)|2,{52,101,0}}, +/* 26812 */ {(11<<2)|2,{52,101,0}}, +/* 26813 */ {(11<<2)|2,{52,101,0}}, +/* 26814 */ {(11<<2)|2,{52,101,0}}, +/* 26815 */ {(11<<2)|2,{52,101,0}}, +/* 26816 */ {(16<<2)|3,{52,105,48}}, +/* 26817 */ {(16<<2)|3,{52,105,49}}, +/* 26818 */ {(16<<2)|3,{52,105,50}}, +/* 26819 */ {(16<<2)|3,{52,105,97}}, +/* 26820 */ {(16<<2)|3,{52,105,99}}, +/* 26821 */ {(16<<2)|3,{52,105,101}}, +/* 26822 */ {(16<<2)|3,{52,105,105}}, +/* 26823 */ {(16<<2)|3,{52,105,111}}, +/* 26824 */ {(16<<2)|3,{52,105,115}}, +/* 26825 */ {(16<<2)|3,{52,105,116}}, +/* 26826 */ {(11<<2)|2,{52,105,0}}, +/* 26827 */ {(11<<2)|2,{52,105,0}}, +/* 26828 */ {(11<<2)|2,{52,105,0}}, +/* 26829 */ {(11<<2)|2,{52,105,0}}, +/* 26830 */ {(11<<2)|2,{52,105,0}}, +/* 26831 */ {(11<<2)|2,{52,105,0}}, +/* 26832 */ {(11<<2)|2,{52,105,0}}, +/* 26833 */ {(11<<2)|2,{52,105,0}}, +/* 26834 */ {(11<<2)|2,{52,105,0}}, +/* 26835 */ {(11<<2)|2,{52,105,0}}, +/* 26836 */ {(11<<2)|2,{52,105,0}}, +/* 26837 */ {(11<<2)|2,{52,105,0}}, +/* 26838 */ {(11<<2)|2,{52,105,0}}, +/* 26839 */ {(11<<2)|2,{52,105,0}}, +/* 26840 */ {(11<<2)|2,{52,105,0}}, +/* 26841 */ {(11<<2)|2,{52,105,0}}, +/* 26842 */ {(11<<2)|2,{52,105,0}}, +/* 26843 */ {(11<<2)|2,{52,105,0}}, +/* 26844 */ {(11<<2)|2,{52,105,0}}, +/* 26845 */ {(11<<2)|2,{52,105,0}}, +/* 26846 */ {(11<<2)|2,{52,105,0}}, +/* 26847 */ {(11<<2)|2,{52,105,0}}, +/* 26848 */ {(16<<2)|3,{52,111,48}}, +/* 26849 */ {(16<<2)|3,{52,111,49}}, +/* 26850 */ {(16<<2)|3,{52,111,50}}, +/* 26851 */ {(16<<2)|3,{52,111,97}}, +/* 26852 */ {(16<<2)|3,{52,111,99}}, +/* 26853 */ {(16<<2)|3,{52,111,101}}, +/* 26854 */ {(16<<2)|3,{52,111,105}}, +/* 26855 */ {(16<<2)|3,{52,111,111}}, +/* 26856 */ {(16<<2)|3,{52,111,115}}, +/* 26857 */ {(16<<2)|3,{52,111,116}}, +/* 26858 */ {(11<<2)|2,{52,111,0}}, +/* 26859 */ {(11<<2)|2,{52,111,0}}, +/* 26860 */ {(11<<2)|2,{52,111,0}}, +/* 26861 */ {(11<<2)|2,{52,111,0}}, +/* 26862 */ {(11<<2)|2,{52,111,0}}, +/* 26863 */ {(11<<2)|2,{52,111,0}}, +/* 26864 */ {(11<<2)|2,{52,111,0}}, +/* 26865 */ {(11<<2)|2,{52,111,0}}, +/* 26866 */ {(11<<2)|2,{52,111,0}}, +/* 26867 */ {(11<<2)|2,{52,111,0}}, +/* 26868 */ {(11<<2)|2,{52,111,0}}, +/* 26869 */ {(11<<2)|2,{52,111,0}}, +/* 26870 */ {(11<<2)|2,{52,111,0}}, +/* 26871 */ {(11<<2)|2,{52,111,0}}, +/* 26872 */ {(11<<2)|2,{52,111,0}}, +/* 26873 */ {(11<<2)|2,{52,111,0}}, +/* 26874 */ {(11<<2)|2,{52,111,0}}, +/* 26875 */ {(11<<2)|2,{52,111,0}}, +/* 26876 */ {(11<<2)|2,{52,111,0}}, +/* 26877 */ {(11<<2)|2,{52,111,0}}, +/* 26878 */ {(11<<2)|2,{52,111,0}}, +/* 26879 */ {(11<<2)|2,{52,111,0}}, +/* 26880 */ {(16<<2)|3,{52,115,48}}, +/* 26881 */ {(16<<2)|3,{52,115,49}}, +/* 26882 */ {(16<<2)|3,{52,115,50}}, +/* 26883 */ {(16<<2)|3,{52,115,97}}, +/* 26884 */ {(16<<2)|3,{52,115,99}}, +/* 26885 */ {(16<<2)|3,{52,115,101}}, +/* 26886 */ {(16<<2)|3,{52,115,105}}, +/* 26887 */ {(16<<2)|3,{52,115,111}}, +/* 26888 */ {(16<<2)|3,{52,115,115}}, +/* 26889 */ {(16<<2)|3,{52,115,116}}, +/* 26890 */ {(11<<2)|2,{52,115,0}}, +/* 26891 */ {(11<<2)|2,{52,115,0}}, +/* 26892 */ {(11<<2)|2,{52,115,0}}, +/* 26893 */ {(11<<2)|2,{52,115,0}}, +/* 26894 */ {(11<<2)|2,{52,115,0}}, +/* 26895 */ {(11<<2)|2,{52,115,0}}, +/* 26896 */ {(11<<2)|2,{52,115,0}}, +/* 26897 */ {(11<<2)|2,{52,115,0}}, +/* 26898 */ {(11<<2)|2,{52,115,0}}, +/* 26899 */ {(11<<2)|2,{52,115,0}}, +/* 26900 */ {(11<<2)|2,{52,115,0}}, +/* 26901 */ {(11<<2)|2,{52,115,0}}, +/* 26902 */ {(11<<2)|2,{52,115,0}}, +/* 26903 */ {(11<<2)|2,{52,115,0}}, +/* 26904 */ {(11<<2)|2,{52,115,0}}, +/* 26905 */ {(11<<2)|2,{52,115,0}}, +/* 26906 */ {(11<<2)|2,{52,115,0}}, +/* 26907 */ {(11<<2)|2,{52,115,0}}, +/* 26908 */ {(11<<2)|2,{52,115,0}}, +/* 26909 */ {(11<<2)|2,{52,115,0}}, +/* 26910 */ {(11<<2)|2,{52,115,0}}, +/* 26911 */ {(11<<2)|2,{52,115,0}}, +/* 26912 */ {(16<<2)|3,{52,116,48}}, +/* 26913 */ {(16<<2)|3,{52,116,49}}, +/* 26914 */ {(16<<2)|3,{52,116,50}}, +/* 26915 */ {(16<<2)|3,{52,116,97}}, +/* 26916 */ {(16<<2)|3,{52,116,99}}, +/* 26917 */ {(16<<2)|3,{52,116,101}}, +/* 26918 */ {(16<<2)|3,{52,116,105}}, +/* 26919 */ {(16<<2)|3,{52,116,111}}, +/* 26920 */ {(16<<2)|3,{52,116,115}}, +/* 26921 */ {(16<<2)|3,{52,116,116}}, +/* 26922 */ {(11<<2)|2,{52,116,0}}, +/* 26923 */ {(11<<2)|2,{52,116,0}}, +/* 26924 */ {(11<<2)|2,{52,116,0}}, +/* 26925 */ {(11<<2)|2,{52,116,0}}, +/* 26926 */ {(11<<2)|2,{52,116,0}}, +/* 26927 */ {(11<<2)|2,{52,116,0}}, +/* 26928 */ {(11<<2)|2,{52,116,0}}, +/* 26929 */ {(11<<2)|2,{52,116,0}}, +/* 26930 */ {(11<<2)|2,{52,116,0}}, +/* 26931 */ {(11<<2)|2,{52,116,0}}, +/* 26932 */ {(11<<2)|2,{52,116,0}}, +/* 26933 */ {(11<<2)|2,{52,116,0}}, +/* 26934 */ {(11<<2)|2,{52,116,0}}, +/* 26935 */ {(11<<2)|2,{52,116,0}}, +/* 26936 */ {(11<<2)|2,{52,116,0}}, +/* 26937 */ {(11<<2)|2,{52,116,0}}, +/* 26938 */ {(11<<2)|2,{52,116,0}}, +/* 26939 */ {(11<<2)|2,{52,116,0}}, +/* 26940 */ {(11<<2)|2,{52,116,0}}, +/* 26941 */ {(11<<2)|2,{52,116,0}}, +/* 26942 */ {(11<<2)|2,{52,116,0}}, +/* 26943 */ {(11<<2)|2,{52,116,0}}, +/* 26944 */ {(12<<2)|2,{52,32,0}}, +/* 26945 */ {(12<<2)|2,{52,32,0}}, +/* 26946 */ {(12<<2)|2,{52,32,0}}, +/* 26947 */ {(12<<2)|2,{52,32,0}}, +/* 26948 */ {(12<<2)|2,{52,32,0}}, +/* 26949 */ {(12<<2)|2,{52,32,0}}, +/* 26950 */ {(12<<2)|2,{52,32,0}}, +/* 26951 */ {(12<<2)|2,{52,32,0}}, +/* 26952 */ {(12<<2)|2,{52,32,0}}, +/* 26953 */ {(12<<2)|2,{52,32,0}}, +/* 26954 */ {(12<<2)|2,{52,32,0}}, +/* 26955 */ {(12<<2)|2,{52,32,0}}, +/* 26956 */ {(12<<2)|2,{52,32,0}}, +/* 26957 */ {(12<<2)|2,{52,32,0}}, +/* 26958 */ {(12<<2)|2,{52,32,0}}, +/* 26959 */ {(12<<2)|2,{52,32,0}}, +/* 26960 */ {(12<<2)|2,{52,37,0}}, +/* 26961 */ {(12<<2)|2,{52,37,0}}, +/* 26962 */ {(12<<2)|2,{52,37,0}}, +/* 26963 */ {(12<<2)|2,{52,37,0}}, +/* 26964 */ {(12<<2)|2,{52,37,0}}, +/* 26965 */ {(12<<2)|2,{52,37,0}}, +/* 26966 */ {(12<<2)|2,{52,37,0}}, +/* 26967 */ {(12<<2)|2,{52,37,0}}, +/* 26968 */ {(12<<2)|2,{52,37,0}}, +/* 26969 */ {(12<<2)|2,{52,37,0}}, +/* 26970 */ {(12<<2)|2,{52,37,0}}, +/* 26971 */ {(12<<2)|2,{52,37,0}}, +/* 26972 */ {(12<<2)|2,{52,37,0}}, +/* 26973 */ {(12<<2)|2,{52,37,0}}, +/* 26974 */ {(12<<2)|2,{52,37,0}}, +/* 26975 */ {(12<<2)|2,{52,37,0}}, +/* 26976 */ {(12<<2)|2,{52,45,0}}, +/* 26977 */ {(12<<2)|2,{52,45,0}}, +/* 26978 */ {(12<<2)|2,{52,45,0}}, +/* 26979 */ {(12<<2)|2,{52,45,0}}, +/* 26980 */ {(12<<2)|2,{52,45,0}}, +/* 26981 */ {(12<<2)|2,{52,45,0}}, +/* 26982 */ {(12<<2)|2,{52,45,0}}, +/* 26983 */ {(12<<2)|2,{52,45,0}}, +/* 26984 */ {(12<<2)|2,{52,45,0}}, +/* 26985 */ {(12<<2)|2,{52,45,0}}, +/* 26986 */ {(12<<2)|2,{52,45,0}}, +/* 26987 */ {(12<<2)|2,{52,45,0}}, +/* 26988 */ {(12<<2)|2,{52,45,0}}, +/* 26989 */ {(12<<2)|2,{52,45,0}}, +/* 26990 */ {(12<<2)|2,{52,45,0}}, +/* 26991 */ {(12<<2)|2,{52,45,0}}, +/* 26992 */ {(12<<2)|2,{52,46,0}}, +/* 26993 */ {(12<<2)|2,{52,46,0}}, +/* 26994 */ {(12<<2)|2,{52,46,0}}, +/* 26995 */ {(12<<2)|2,{52,46,0}}, +/* 26996 */ {(12<<2)|2,{52,46,0}}, +/* 26997 */ {(12<<2)|2,{52,46,0}}, +/* 26998 */ {(12<<2)|2,{52,46,0}}, +/* 26999 */ {(12<<2)|2,{52,46,0}}, +/* 27000 */ {(12<<2)|2,{52,46,0}}, +/* 27001 */ {(12<<2)|2,{52,46,0}}, +/* 27002 */ {(12<<2)|2,{52,46,0}}, +/* 27003 */ {(12<<2)|2,{52,46,0}}, +/* 27004 */ {(12<<2)|2,{52,46,0}}, +/* 27005 */ {(12<<2)|2,{52,46,0}}, +/* 27006 */ {(12<<2)|2,{52,46,0}}, +/* 27007 */ {(12<<2)|2,{52,46,0}}, +/* 27008 */ {(12<<2)|2,{52,47,0}}, +/* 27009 */ {(12<<2)|2,{52,47,0}}, +/* 27010 */ {(12<<2)|2,{52,47,0}}, +/* 27011 */ {(12<<2)|2,{52,47,0}}, +/* 27012 */ {(12<<2)|2,{52,47,0}}, +/* 27013 */ {(12<<2)|2,{52,47,0}}, +/* 27014 */ {(12<<2)|2,{52,47,0}}, +/* 27015 */ {(12<<2)|2,{52,47,0}}, +/* 27016 */ {(12<<2)|2,{52,47,0}}, +/* 27017 */ {(12<<2)|2,{52,47,0}}, +/* 27018 */ {(12<<2)|2,{52,47,0}}, +/* 27019 */ {(12<<2)|2,{52,47,0}}, +/* 27020 */ {(12<<2)|2,{52,47,0}}, +/* 27021 */ {(12<<2)|2,{52,47,0}}, +/* 27022 */ {(12<<2)|2,{52,47,0}}, +/* 27023 */ {(12<<2)|2,{52,47,0}}, +/* 27024 */ {(12<<2)|2,{52,51,0}}, +/* 27025 */ {(12<<2)|2,{52,51,0}}, +/* 27026 */ {(12<<2)|2,{52,51,0}}, +/* 27027 */ {(12<<2)|2,{52,51,0}}, +/* 27028 */ {(12<<2)|2,{52,51,0}}, +/* 27029 */ {(12<<2)|2,{52,51,0}}, +/* 27030 */ {(12<<2)|2,{52,51,0}}, +/* 27031 */ {(12<<2)|2,{52,51,0}}, +/* 27032 */ {(12<<2)|2,{52,51,0}}, +/* 27033 */ {(12<<2)|2,{52,51,0}}, +/* 27034 */ {(12<<2)|2,{52,51,0}}, +/* 27035 */ {(12<<2)|2,{52,51,0}}, +/* 27036 */ {(12<<2)|2,{52,51,0}}, +/* 27037 */ {(12<<2)|2,{52,51,0}}, +/* 27038 */ {(12<<2)|2,{52,51,0}}, +/* 27039 */ {(12<<2)|2,{52,51,0}}, +/* 27040 */ {(12<<2)|2,{52,52,0}}, +/* 27041 */ {(12<<2)|2,{52,52,0}}, +/* 27042 */ {(12<<2)|2,{52,52,0}}, +/* 27043 */ {(12<<2)|2,{52,52,0}}, +/* 27044 */ {(12<<2)|2,{52,52,0}}, +/* 27045 */ {(12<<2)|2,{52,52,0}}, +/* 27046 */ {(12<<2)|2,{52,52,0}}, +/* 27047 */ {(12<<2)|2,{52,52,0}}, +/* 27048 */ {(12<<2)|2,{52,52,0}}, +/* 27049 */ {(12<<2)|2,{52,52,0}}, +/* 27050 */ {(12<<2)|2,{52,52,0}}, +/* 27051 */ {(12<<2)|2,{52,52,0}}, +/* 27052 */ {(12<<2)|2,{52,52,0}}, +/* 27053 */ {(12<<2)|2,{52,52,0}}, +/* 27054 */ {(12<<2)|2,{52,52,0}}, +/* 27055 */ {(12<<2)|2,{52,52,0}}, +/* 27056 */ {(12<<2)|2,{52,53,0}}, +/* 27057 */ {(12<<2)|2,{52,53,0}}, +/* 27058 */ {(12<<2)|2,{52,53,0}}, +/* 27059 */ {(12<<2)|2,{52,53,0}}, +/* 27060 */ {(12<<2)|2,{52,53,0}}, +/* 27061 */ {(12<<2)|2,{52,53,0}}, +/* 27062 */ {(12<<2)|2,{52,53,0}}, +/* 27063 */ {(12<<2)|2,{52,53,0}}, +/* 27064 */ {(12<<2)|2,{52,53,0}}, +/* 27065 */ {(12<<2)|2,{52,53,0}}, +/* 27066 */ {(12<<2)|2,{52,53,0}}, +/* 27067 */ {(12<<2)|2,{52,53,0}}, +/* 27068 */ {(12<<2)|2,{52,53,0}}, +/* 27069 */ {(12<<2)|2,{52,53,0}}, +/* 27070 */ {(12<<2)|2,{52,53,0}}, +/* 27071 */ {(12<<2)|2,{52,53,0}}, +/* 27072 */ {(12<<2)|2,{52,54,0}}, +/* 27073 */ {(12<<2)|2,{52,54,0}}, +/* 27074 */ {(12<<2)|2,{52,54,0}}, +/* 27075 */ {(12<<2)|2,{52,54,0}}, +/* 27076 */ {(12<<2)|2,{52,54,0}}, +/* 27077 */ {(12<<2)|2,{52,54,0}}, +/* 27078 */ {(12<<2)|2,{52,54,0}}, +/* 27079 */ {(12<<2)|2,{52,54,0}}, +/* 27080 */ {(12<<2)|2,{52,54,0}}, +/* 27081 */ {(12<<2)|2,{52,54,0}}, +/* 27082 */ {(12<<2)|2,{52,54,0}}, +/* 27083 */ {(12<<2)|2,{52,54,0}}, +/* 27084 */ {(12<<2)|2,{52,54,0}}, +/* 27085 */ {(12<<2)|2,{52,54,0}}, +/* 27086 */ {(12<<2)|2,{52,54,0}}, +/* 27087 */ {(12<<2)|2,{52,54,0}}, +/* 27088 */ {(12<<2)|2,{52,55,0}}, +/* 27089 */ {(12<<2)|2,{52,55,0}}, +/* 27090 */ {(12<<2)|2,{52,55,0}}, +/* 27091 */ {(12<<2)|2,{52,55,0}}, +/* 27092 */ {(12<<2)|2,{52,55,0}}, +/* 27093 */ {(12<<2)|2,{52,55,0}}, +/* 27094 */ {(12<<2)|2,{52,55,0}}, +/* 27095 */ {(12<<2)|2,{52,55,0}}, +/* 27096 */ {(12<<2)|2,{52,55,0}}, +/* 27097 */ {(12<<2)|2,{52,55,0}}, +/* 27098 */ {(12<<2)|2,{52,55,0}}, +/* 27099 */ {(12<<2)|2,{52,55,0}}, +/* 27100 */ {(12<<2)|2,{52,55,0}}, +/* 27101 */ {(12<<2)|2,{52,55,0}}, +/* 27102 */ {(12<<2)|2,{52,55,0}}, +/* 27103 */ {(12<<2)|2,{52,55,0}}, +/* 27104 */ {(12<<2)|2,{52,56,0}}, +/* 27105 */ {(12<<2)|2,{52,56,0}}, +/* 27106 */ {(12<<2)|2,{52,56,0}}, +/* 27107 */ {(12<<2)|2,{52,56,0}}, +/* 27108 */ {(12<<2)|2,{52,56,0}}, +/* 27109 */ {(12<<2)|2,{52,56,0}}, +/* 27110 */ {(12<<2)|2,{52,56,0}}, +/* 27111 */ {(12<<2)|2,{52,56,0}}, +/* 27112 */ {(12<<2)|2,{52,56,0}}, +/* 27113 */ {(12<<2)|2,{52,56,0}}, +/* 27114 */ {(12<<2)|2,{52,56,0}}, +/* 27115 */ {(12<<2)|2,{52,56,0}}, +/* 27116 */ {(12<<2)|2,{52,56,0}}, +/* 27117 */ {(12<<2)|2,{52,56,0}}, +/* 27118 */ {(12<<2)|2,{52,56,0}}, +/* 27119 */ {(12<<2)|2,{52,56,0}}, +/* 27120 */ {(12<<2)|2,{52,57,0}}, +/* 27121 */ {(12<<2)|2,{52,57,0}}, +/* 27122 */ {(12<<2)|2,{52,57,0}}, +/* 27123 */ {(12<<2)|2,{52,57,0}}, +/* 27124 */ {(12<<2)|2,{52,57,0}}, +/* 27125 */ {(12<<2)|2,{52,57,0}}, +/* 27126 */ {(12<<2)|2,{52,57,0}}, +/* 27127 */ {(12<<2)|2,{52,57,0}}, +/* 27128 */ {(12<<2)|2,{52,57,0}}, +/* 27129 */ {(12<<2)|2,{52,57,0}}, +/* 27130 */ {(12<<2)|2,{52,57,0}}, +/* 27131 */ {(12<<2)|2,{52,57,0}}, +/* 27132 */ {(12<<2)|2,{52,57,0}}, +/* 27133 */ {(12<<2)|2,{52,57,0}}, +/* 27134 */ {(12<<2)|2,{52,57,0}}, +/* 27135 */ {(12<<2)|2,{52,57,0}}, +/* 27136 */ {(12<<2)|2,{52,61,0}}, +/* 27137 */ {(12<<2)|2,{52,61,0}}, +/* 27138 */ {(12<<2)|2,{52,61,0}}, +/* 27139 */ {(12<<2)|2,{52,61,0}}, +/* 27140 */ {(12<<2)|2,{52,61,0}}, +/* 27141 */ {(12<<2)|2,{52,61,0}}, +/* 27142 */ {(12<<2)|2,{52,61,0}}, +/* 27143 */ {(12<<2)|2,{52,61,0}}, +/* 27144 */ {(12<<2)|2,{52,61,0}}, +/* 27145 */ {(12<<2)|2,{52,61,0}}, +/* 27146 */ {(12<<2)|2,{52,61,0}}, +/* 27147 */ {(12<<2)|2,{52,61,0}}, +/* 27148 */ {(12<<2)|2,{52,61,0}}, +/* 27149 */ {(12<<2)|2,{52,61,0}}, +/* 27150 */ {(12<<2)|2,{52,61,0}}, +/* 27151 */ {(12<<2)|2,{52,61,0}}, +/* 27152 */ {(12<<2)|2,{52,65,0}}, +/* 27153 */ {(12<<2)|2,{52,65,0}}, +/* 27154 */ {(12<<2)|2,{52,65,0}}, +/* 27155 */ {(12<<2)|2,{52,65,0}}, +/* 27156 */ {(12<<2)|2,{52,65,0}}, +/* 27157 */ {(12<<2)|2,{52,65,0}}, +/* 27158 */ {(12<<2)|2,{52,65,0}}, +/* 27159 */ {(12<<2)|2,{52,65,0}}, +/* 27160 */ {(12<<2)|2,{52,65,0}}, +/* 27161 */ {(12<<2)|2,{52,65,0}}, +/* 27162 */ {(12<<2)|2,{52,65,0}}, +/* 27163 */ {(12<<2)|2,{52,65,0}}, +/* 27164 */ {(12<<2)|2,{52,65,0}}, +/* 27165 */ {(12<<2)|2,{52,65,0}}, +/* 27166 */ {(12<<2)|2,{52,65,0}}, +/* 27167 */ {(12<<2)|2,{52,65,0}}, +/* 27168 */ {(12<<2)|2,{52,95,0}}, +/* 27169 */ {(12<<2)|2,{52,95,0}}, +/* 27170 */ {(12<<2)|2,{52,95,0}}, +/* 27171 */ {(12<<2)|2,{52,95,0}}, +/* 27172 */ {(12<<2)|2,{52,95,0}}, +/* 27173 */ {(12<<2)|2,{52,95,0}}, +/* 27174 */ {(12<<2)|2,{52,95,0}}, +/* 27175 */ {(12<<2)|2,{52,95,0}}, +/* 27176 */ {(12<<2)|2,{52,95,0}}, +/* 27177 */ {(12<<2)|2,{52,95,0}}, +/* 27178 */ {(12<<2)|2,{52,95,0}}, +/* 27179 */ {(12<<2)|2,{52,95,0}}, +/* 27180 */ {(12<<2)|2,{52,95,0}}, +/* 27181 */ {(12<<2)|2,{52,95,0}}, +/* 27182 */ {(12<<2)|2,{52,95,0}}, +/* 27183 */ {(12<<2)|2,{52,95,0}}, +/* 27184 */ {(12<<2)|2,{52,98,0}}, +/* 27185 */ {(12<<2)|2,{52,98,0}}, +/* 27186 */ {(12<<2)|2,{52,98,0}}, +/* 27187 */ {(12<<2)|2,{52,98,0}}, +/* 27188 */ {(12<<2)|2,{52,98,0}}, +/* 27189 */ {(12<<2)|2,{52,98,0}}, +/* 27190 */ {(12<<2)|2,{52,98,0}}, +/* 27191 */ {(12<<2)|2,{52,98,0}}, +/* 27192 */ {(12<<2)|2,{52,98,0}}, +/* 27193 */ {(12<<2)|2,{52,98,0}}, +/* 27194 */ {(12<<2)|2,{52,98,0}}, +/* 27195 */ {(12<<2)|2,{52,98,0}}, +/* 27196 */ {(12<<2)|2,{52,98,0}}, +/* 27197 */ {(12<<2)|2,{52,98,0}}, +/* 27198 */ {(12<<2)|2,{52,98,0}}, +/* 27199 */ {(12<<2)|2,{52,98,0}}, +/* 27200 */ {(12<<2)|2,{52,100,0}}, +/* 27201 */ {(12<<2)|2,{52,100,0}}, +/* 27202 */ {(12<<2)|2,{52,100,0}}, +/* 27203 */ {(12<<2)|2,{52,100,0}}, +/* 27204 */ {(12<<2)|2,{52,100,0}}, +/* 27205 */ {(12<<2)|2,{52,100,0}}, +/* 27206 */ {(12<<2)|2,{52,100,0}}, +/* 27207 */ {(12<<2)|2,{52,100,0}}, +/* 27208 */ {(12<<2)|2,{52,100,0}}, +/* 27209 */ {(12<<2)|2,{52,100,0}}, +/* 27210 */ {(12<<2)|2,{52,100,0}}, +/* 27211 */ {(12<<2)|2,{52,100,0}}, +/* 27212 */ {(12<<2)|2,{52,100,0}}, +/* 27213 */ {(12<<2)|2,{52,100,0}}, +/* 27214 */ {(12<<2)|2,{52,100,0}}, +/* 27215 */ {(12<<2)|2,{52,100,0}}, +/* 27216 */ {(12<<2)|2,{52,102,0}}, +/* 27217 */ {(12<<2)|2,{52,102,0}}, +/* 27218 */ {(12<<2)|2,{52,102,0}}, +/* 27219 */ {(12<<2)|2,{52,102,0}}, +/* 27220 */ {(12<<2)|2,{52,102,0}}, +/* 27221 */ {(12<<2)|2,{52,102,0}}, +/* 27222 */ {(12<<2)|2,{52,102,0}}, +/* 27223 */ {(12<<2)|2,{52,102,0}}, +/* 27224 */ {(12<<2)|2,{52,102,0}}, +/* 27225 */ {(12<<2)|2,{52,102,0}}, +/* 27226 */ {(12<<2)|2,{52,102,0}}, +/* 27227 */ {(12<<2)|2,{52,102,0}}, +/* 27228 */ {(12<<2)|2,{52,102,0}}, +/* 27229 */ {(12<<2)|2,{52,102,0}}, +/* 27230 */ {(12<<2)|2,{52,102,0}}, +/* 27231 */ {(12<<2)|2,{52,102,0}}, +/* 27232 */ {(12<<2)|2,{52,103,0}}, +/* 27233 */ {(12<<2)|2,{52,103,0}}, +/* 27234 */ {(12<<2)|2,{52,103,0}}, +/* 27235 */ {(12<<2)|2,{52,103,0}}, +/* 27236 */ {(12<<2)|2,{52,103,0}}, +/* 27237 */ {(12<<2)|2,{52,103,0}}, +/* 27238 */ {(12<<2)|2,{52,103,0}}, +/* 27239 */ {(12<<2)|2,{52,103,0}}, +/* 27240 */ {(12<<2)|2,{52,103,0}}, +/* 27241 */ {(12<<2)|2,{52,103,0}}, +/* 27242 */ {(12<<2)|2,{52,103,0}}, +/* 27243 */ {(12<<2)|2,{52,103,0}}, +/* 27244 */ {(12<<2)|2,{52,103,0}}, +/* 27245 */ {(12<<2)|2,{52,103,0}}, +/* 27246 */ {(12<<2)|2,{52,103,0}}, +/* 27247 */ {(12<<2)|2,{52,103,0}}, +/* 27248 */ {(12<<2)|2,{52,104,0}}, +/* 27249 */ {(12<<2)|2,{52,104,0}}, +/* 27250 */ {(12<<2)|2,{52,104,0}}, +/* 27251 */ {(12<<2)|2,{52,104,0}}, +/* 27252 */ {(12<<2)|2,{52,104,0}}, +/* 27253 */ {(12<<2)|2,{52,104,0}}, +/* 27254 */ {(12<<2)|2,{52,104,0}}, +/* 27255 */ {(12<<2)|2,{52,104,0}}, +/* 27256 */ {(12<<2)|2,{52,104,0}}, +/* 27257 */ {(12<<2)|2,{52,104,0}}, +/* 27258 */ {(12<<2)|2,{52,104,0}}, +/* 27259 */ {(12<<2)|2,{52,104,0}}, +/* 27260 */ {(12<<2)|2,{52,104,0}}, +/* 27261 */ {(12<<2)|2,{52,104,0}}, +/* 27262 */ {(12<<2)|2,{52,104,0}}, +/* 27263 */ {(12<<2)|2,{52,104,0}}, +/* 27264 */ {(12<<2)|2,{52,108,0}}, +/* 27265 */ {(12<<2)|2,{52,108,0}}, +/* 27266 */ {(12<<2)|2,{52,108,0}}, +/* 27267 */ {(12<<2)|2,{52,108,0}}, +/* 27268 */ {(12<<2)|2,{52,108,0}}, +/* 27269 */ {(12<<2)|2,{52,108,0}}, +/* 27270 */ {(12<<2)|2,{52,108,0}}, +/* 27271 */ {(12<<2)|2,{52,108,0}}, +/* 27272 */ {(12<<2)|2,{52,108,0}}, +/* 27273 */ {(12<<2)|2,{52,108,0}}, +/* 27274 */ {(12<<2)|2,{52,108,0}}, +/* 27275 */ {(12<<2)|2,{52,108,0}}, +/* 27276 */ {(12<<2)|2,{52,108,0}}, +/* 27277 */ {(12<<2)|2,{52,108,0}}, +/* 27278 */ {(12<<2)|2,{52,108,0}}, +/* 27279 */ {(12<<2)|2,{52,108,0}}, +/* 27280 */ {(12<<2)|2,{52,109,0}}, +/* 27281 */ {(12<<2)|2,{52,109,0}}, +/* 27282 */ {(12<<2)|2,{52,109,0}}, +/* 27283 */ {(12<<2)|2,{52,109,0}}, +/* 27284 */ {(12<<2)|2,{52,109,0}}, +/* 27285 */ {(12<<2)|2,{52,109,0}}, +/* 27286 */ {(12<<2)|2,{52,109,0}}, +/* 27287 */ {(12<<2)|2,{52,109,0}}, +/* 27288 */ {(12<<2)|2,{52,109,0}}, +/* 27289 */ {(12<<2)|2,{52,109,0}}, +/* 27290 */ {(12<<2)|2,{52,109,0}}, +/* 27291 */ {(12<<2)|2,{52,109,0}}, +/* 27292 */ {(12<<2)|2,{52,109,0}}, +/* 27293 */ {(12<<2)|2,{52,109,0}}, +/* 27294 */ {(12<<2)|2,{52,109,0}}, +/* 27295 */ {(12<<2)|2,{52,109,0}}, +/* 27296 */ {(12<<2)|2,{52,110,0}}, +/* 27297 */ {(12<<2)|2,{52,110,0}}, +/* 27298 */ {(12<<2)|2,{52,110,0}}, +/* 27299 */ {(12<<2)|2,{52,110,0}}, +/* 27300 */ {(12<<2)|2,{52,110,0}}, +/* 27301 */ {(12<<2)|2,{52,110,0}}, +/* 27302 */ {(12<<2)|2,{52,110,0}}, +/* 27303 */ {(12<<2)|2,{52,110,0}}, +/* 27304 */ {(12<<2)|2,{52,110,0}}, +/* 27305 */ {(12<<2)|2,{52,110,0}}, +/* 27306 */ {(12<<2)|2,{52,110,0}}, +/* 27307 */ {(12<<2)|2,{52,110,0}}, +/* 27308 */ {(12<<2)|2,{52,110,0}}, +/* 27309 */ {(12<<2)|2,{52,110,0}}, +/* 27310 */ {(12<<2)|2,{52,110,0}}, +/* 27311 */ {(12<<2)|2,{52,110,0}}, +/* 27312 */ {(12<<2)|2,{52,112,0}}, +/* 27313 */ {(12<<2)|2,{52,112,0}}, +/* 27314 */ {(12<<2)|2,{52,112,0}}, +/* 27315 */ {(12<<2)|2,{52,112,0}}, +/* 27316 */ {(12<<2)|2,{52,112,0}}, +/* 27317 */ {(12<<2)|2,{52,112,0}}, +/* 27318 */ {(12<<2)|2,{52,112,0}}, +/* 27319 */ {(12<<2)|2,{52,112,0}}, +/* 27320 */ {(12<<2)|2,{52,112,0}}, +/* 27321 */ {(12<<2)|2,{52,112,0}}, +/* 27322 */ {(12<<2)|2,{52,112,0}}, +/* 27323 */ {(12<<2)|2,{52,112,0}}, +/* 27324 */ {(12<<2)|2,{52,112,0}}, +/* 27325 */ {(12<<2)|2,{52,112,0}}, +/* 27326 */ {(12<<2)|2,{52,112,0}}, +/* 27327 */ {(12<<2)|2,{52,112,0}}, +/* 27328 */ {(12<<2)|2,{52,114,0}}, +/* 27329 */ {(12<<2)|2,{52,114,0}}, +/* 27330 */ {(12<<2)|2,{52,114,0}}, +/* 27331 */ {(12<<2)|2,{52,114,0}}, +/* 27332 */ {(12<<2)|2,{52,114,0}}, +/* 27333 */ {(12<<2)|2,{52,114,0}}, +/* 27334 */ {(12<<2)|2,{52,114,0}}, +/* 27335 */ {(12<<2)|2,{52,114,0}}, +/* 27336 */ {(12<<2)|2,{52,114,0}}, +/* 27337 */ {(12<<2)|2,{52,114,0}}, +/* 27338 */ {(12<<2)|2,{52,114,0}}, +/* 27339 */ {(12<<2)|2,{52,114,0}}, +/* 27340 */ {(12<<2)|2,{52,114,0}}, +/* 27341 */ {(12<<2)|2,{52,114,0}}, +/* 27342 */ {(12<<2)|2,{52,114,0}}, +/* 27343 */ {(12<<2)|2,{52,114,0}}, +/* 27344 */ {(12<<2)|2,{52,117,0}}, +/* 27345 */ {(12<<2)|2,{52,117,0}}, +/* 27346 */ {(12<<2)|2,{52,117,0}}, +/* 27347 */ {(12<<2)|2,{52,117,0}}, +/* 27348 */ {(12<<2)|2,{52,117,0}}, +/* 27349 */ {(12<<2)|2,{52,117,0}}, +/* 27350 */ {(12<<2)|2,{52,117,0}}, +/* 27351 */ {(12<<2)|2,{52,117,0}}, +/* 27352 */ {(12<<2)|2,{52,117,0}}, +/* 27353 */ {(12<<2)|2,{52,117,0}}, +/* 27354 */ {(12<<2)|2,{52,117,0}}, +/* 27355 */ {(12<<2)|2,{52,117,0}}, +/* 27356 */ {(12<<2)|2,{52,117,0}}, +/* 27357 */ {(12<<2)|2,{52,117,0}}, +/* 27358 */ {(12<<2)|2,{52,117,0}}, +/* 27359 */ {(12<<2)|2,{52,117,0}}, +/* 27360 */ {(13<<2)|2,{52,58,0}}, +/* 27361 */ {(13<<2)|2,{52,58,0}}, +/* 27362 */ {(13<<2)|2,{52,58,0}}, +/* 27363 */ {(13<<2)|2,{52,58,0}}, +/* 27364 */ {(13<<2)|2,{52,58,0}}, +/* 27365 */ {(13<<2)|2,{52,58,0}}, +/* 27366 */ {(13<<2)|2,{52,58,0}}, +/* 27367 */ {(13<<2)|2,{52,58,0}}, +/* 27368 */ {(13<<2)|2,{52,66,0}}, +/* 27369 */ {(13<<2)|2,{52,66,0}}, +/* 27370 */ {(13<<2)|2,{52,66,0}}, +/* 27371 */ {(13<<2)|2,{52,66,0}}, +/* 27372 */ {(13<<2)|2,{52,66,0}}, +/* 27373 */ {(13<<2)|2,{52,66,0}}, +/* 27374 */ {(13<<2)|2,{52,66,0}}, +/* 27375 */ {(13<<2)|2,{52,66,0}}, +/* 27376 */ {(13<<2)|2,{52,67,0}}, +/* 27377 */ {(13<<2)|2,{52,67,0}}, +/* 27378 */ {(13<<2)|2,{52,67,0}}, +/* 27379 */ {(13<<2)|2,{52,67,0}}, +/* 27380 */ {(13<<2)|2,{52,67,0}}, +/* 27381 */ {(13<<2)|2,{52,67,0}}, +/* 27382 */ {(13<<2)|2,{52,67,0}}, +/* 27383 */ {(13<<2)|2,{52,67,0}}, +/* 27384 */ {(13<<2)|2,{52,68,0}}, +/* 27385 */ {(13<<2)|2,{52,68,0}}, +/* 27386 */ {(13<<2)|2,{52,68,0}}, +/* 27387 */ {(13<<2)|2,{52,68,0}}, +/* 27388 */ {(13<<2)|2,{52,68,0}}, +/* 27389 */ {(13<<2)|2,{52,68,0}}, +/* 27390 */ {(13<<2)|2,{52,68,0}}, +/* 27391 */ {(13<<2)|2,{52,68,0}}, +/* 27392 */ {(13<<2)|2,{52,69,0}}, +/* 27393 */ {(13<<2)|2,{52,69,0}}, +/* 27394 */ {(13<<2)|2,{52,69,0}}, +/* 27395 */ {(13<<2)|2,{52,69,0}}, +/* 27396 */ {(13<<2)|2,{52,69,0}}, +/* 27397 */ {(13<<2)|2,{52,69,0}}, +/* 27398 */ {(13<<2)|2,{52,69,0}}, +/* 27399 */ {(13<<2)|2,{52,69,0}}, +/* 27400 */ {(13<<2)|2,{52,70,0}}, +/* 27401 */ {(13<<2)|2,{52,70,0}}, +/* 27402 */ {(13<<2)|2,{52,70,0}}, +/* 27403 */ {(13<<2)|2,{52,70,0}}, +/* 27404 */ {(13<<2)|2,{52,70,0}}, +/* 27405 */ {(13<<2)|2,{52,70,0}}, +/* 27406 */ {(13<<2)|2,{52,70,0}}, +/* 27407 */ {(13<<2)|2,{52,70,0}}, +/* 27408 */ {(13<<2)|2,{52,71,0}}, +/* 27409 */ {(13<<2)|2,{52,71,0}}, +/* 27410 */ {(13<<2)|2,{52,71,0}}, +/* 27411 */ {(13<<2)|2,{52,71,0}}, +/* 27412 */ {(13<<2)|2,{52,71,0}}, +/* 27413 */ {(13<<2)|2,{52,71,0}}, +/* 27414 */ {(13<<2)|2,{52,71,0}}, +/* 27415 */ {(13<<2)|2,{52,71,0}}, +/* 27416 */ {(13<<2)|2,{52,72,0}}, +/* 27417 */ {(13<<2)|2,{52,72,0}}, +/* 27418 */ {(13<<2)|2,{52,72,0}}, +/* 27419 */ {(13<<2)|2,{52,72,0}}, +/* 27420 */ {(13<<2)|2,{52,72,0}}, +/* 27421 */ {(13<<2)|2,{52,72,0}}, +/* 27422 */ {(13<<2)|2,{52,72,0}}, +/* 27423 */ {(13<<2)|2,{52,72,0}}, +/* 27424 */ {(13<<2)|2,{52,73,0}}, +/* 27425 */ {(13<<2)|2,{52,73,0}}, +/* 27426 */ {(13<<2)|2,{52,73,0}}, +/* 27427 */ {(13<<2)|2,{52,73,0}}, +/* 27428 */ {(13<<2)|2,{52,73,0}}, +/* 27429 */ {(13<<2)|2,{52,73,0}}, +/* 27430 */ {(13<<2)|2,{52,73,0}}, +/* 27431 */ {(13<<2)|2,{52,73,0}}, +/* 27432 */ {(13<<2)|2,{52,74,0}}, +/* 27433 */ {(13<<2)|2,{52,74,0}}, +/* 27434 */ {(13<<2)|2,{52,74,0}}, +/* 27435 */ {(13<<2)|2,{52,74,0}}, +/* 27436 */ {(13<<2)|2,{52,74,0}}, +/* 27437 */ {(13<<2)|2,{52,74,0}}, +/* 27438 */ {(13<<2)|2,{52,74,0}}, +/* 27439 */ {(13<<2)|2,{52,74,0}}, +/* 27440 */ {(13<<2)|2,{52,75,0}}, +/* 27441 */ {(13<<2)|2,{52,75,0}}, +/* 27442 */ {(13<<2)|2,{52,75,0}}, +/* 27443 */ {(13<<2)|2,{52,75,0}}, +/* 27444 */ {(13<<2)|2,{52,75,0}}, +/* 27445 */ {(13<<2)|2,{52,75,0}}, +/* 27446 */ {(13<<2)|2,{52,75,0}}, +/* 27447 */ {(13<<2)|2,{52,75,0}}, +/* 27448 */ {(13<<2)|2,{52,76,0}}, +/* 27449 */ {(13<<2)|2,{52,76,0}}, +/* 27450 */ {(13<<2)|2,{52,76,0}}, +/* 27451 */ {(13<<2)|2,{52,76,0}}, +/* 27452 */ {(13<<2)|2,{52,76,0}}, +/* 27453 */ {(13<<2)|2,{52,76,0}}, +/* 27454 */ {(13<<2)|2,{52,76,0}}, +/* 27455 */ {(13<<2)|2,{52,76,0}}, +/* 27456 */ {(13<<2)|2,{52,77,0}}, +/* 27457 */ {(13<<2)|2,{52,77,0}}, +/* 27458 */ {(13<<2)|2,{52,77,0}}, +/* 27459 */ {(13<<2)|2,{52,77,0}}, +/* 27460 */ {(13<<2)|2,{52,77,0}}, +/* 27461 */ {(13<<2)|2,{52,77,0}}, +/* 27462 */ {(13<<2)|2,{52,77,0}}, +/* 27463 */ {(13<<2)|2,{52,77,0}}, +/* 27464 */ {(13<<2)|2,{52,78,0}}, +/* 27465 */ {(13<<2)|2,{52,78,0}}, +/* 27466 */ {(13<<2)|2,{52,78,0}}, +/* 27467 */ {(13<<2)|2,{52,78,0}}, +/* 27468 */ {(13<<2)|2,{52,78,0}}, +/* 27469 */ {(13<<2)|2,{52,78,0}}, +/* 27470 */ {(13<<2)|2,{52,78,0}}, +/* 27471 */ {(13<<2)|2,{52,78,0}}, +/* 27472 */ {(13<<2)|2,{52,79,0}}, +/* 27473 */ {(13<<2)|2,{52,79,0}}, +/* 27474 */ {(13<<2)|2,{52,79,0}}, +/* 27475 */ {(13<<2)|2,{52,79,0}}, +/* 27476 */ {(13<<2)|2,{52,79,0}}, +/* 27477 */ {(13<<2)|2,{52,79,0}}, +/* 27478 */ {(13<<2)|2,{52,79,0}}, +/* 27479 */ {(13<<2)|2,{52,79,0}}, +/* 27480 */ {(13<<2)|2,{52,80,0}}, +/* 27481 */ {(13<<2)|2,{52,80,0}}, +/* 27482 */ {(13<<2)|2,{52,80,0}}, +/* 27483 */ {(13<<2)|2,{52,80,0}}, +/* 27484 */ {(13<<2)|2,{52,80,0}}, +/* 27485 */ {(13<<2)|2,{52,80,0}}, +/* 27486 */ {(13<<2)|2,{52,80,0}}, +/* 27487 */ {(13<<2)|2,{52,80,0}}, +/* 27488 */ {(13<<2)|2,{52,81,0}}, +/* 27489 */ {(13<<2)|2,{52,81,0}}, +/* 27490 */ {(13<<2)|2,{52,81,0}}, +/* 27491 */ {(13<<2)|2,{52,81,0}}, +/* 27492 */ {(13<<2)|2,{52,81,0}}, +/* 27493 */ {(13<<2)|2,{52,81,0}}, +/* 27494 */ {(13<<2)|2,{52,81,0}}, +/* 27495 */ {(13<<2)|2,{52,81,0}}, +/* 27496 */ {(13<<2)|2,{52,82,0}}, +/* 27497 */ {(13<<2)|2,{52,82,0}}, +/* 27498 */ {(13<<2)|2,{52,82,0}}, +/* 27499 */ {(13<<2)|2,{52,82,0}}, +/* 27500 */ {(13<<2)|2,{52,82,0}}, +/* 27501 */ {(13<<2)|2,{52,82,0}}, +/* 27502 */ {(13<<2)|2,{52,82,0}}, +/* 27503 */ {(13<<2)|2,{52,82,0}}, +/* 27504 */ {(13<<2)|2,{52,83,0}}, +/* 27505 */ {(13<<2)|2,{52,83,0}}, +/* 27506 */ {(13<<2)|2,{52,83,0}}, +/* 27507 */ {(13<<2)|2,{52,83,0}}, +/* 27508 */ {(13<<2)|2,{52,83,0}}, +/* 27509 */ {(13<<2)|2,{52,83,0}}, +/* 27510 */ {(13<<2)|2,{52,83,0}}, +/* 27511 */ {(13<<2)|2,{52,83,0}}, +/* 27512 */ {(13<<2)|2,{52,84,0}}, +/* 27513 */ {(13<<2)|2,{52,84,0}}, +/* 27514 */ {(13<<2)|2,{52,84,0}}, +/* 27515 */ {(13<<2)|2,{52,84,0}}, +/* 27516 */ {(13<<2)|2,{52,84,0}}, +/* 27517 */ {(13<<2)|2,{52,84,0}}, +/* 27518 */ {(13<<2)|2,{52,84,0}}, +/* 27519 */ {(13<<2)|2,{52,84,0}}, +/* 27520 */ {(13<<2)|2,{52,85,0}}, +/* 27521 */ {(13<<2)|2,{52,85,0}}, +/* 27522 */ {(13<<2)|2,{52,85,0}}, +/* 27523 */ {(13<<2)|2,{52,85,0}}, +/* 27524 */ {(13<<2)|2,{52,85,0}}, +/* 27525 */ {(13<<2)|2,{52,85,0}}, +/* 27526 */ {(13<<2)|2,{52,85,0}}, +/* 27527 */ {(13<<2)|2,{52,85,0}}, +/* 27528 */ {(13<<2)|2,{52,86,0}}, +/* 27529 */ {(13<<2)|2,{52,86,0}}, +/* 27530 */ {(13<<2)|2,{52,86,0}}, +/* 27531 */ {(13<<2)|2,{52,86,0}}, +/* 27532 */ {(13<<2)|2,{52,86,0}}, +/* 27533 */ {(13<<2)|2,{52,86,0}}, +/* 27534 */ {(13<<2)|2,{52,86,0}}, +/* 27535 */ {(13<<2)|2,{52,86,0}}, +/* 27536 */ {(13<<2)|2,{52,87,0}}, +/* 27537 */ {(13<<2)|2,{52,87,0}}, +/* 27538 */ {(13<<2)|2,{52,87,0}}, +/* 27539 */ {(13<<2)|2,{52,87,0}}, +/* 27540 */ {(13<<2)|2,{52,87,0}}, +/* 27541 */ {(13<<2)|2,{52,87,0}}, +/* 27542 */ {(13<<2)|2,{52,87,0}}, +/* 27543 */ {(13<<2)|2,{52,87,0}}, +/* 27544 */ {(13<<2)|2,{52,89,0}}, +/* 27545 */ {(13<<2)|2,{52,89,0}}, +/* 27546 */ {(13<<2)|2,{52,89,0}}, +/* 27547 */ {(13<<2)|2,{52,89,0}}, +/* 27548 */ {(13<<2)|2,{52,89,0}}, +/* 27549 */ {(13<<2)|2,{52,89,0}}, +/* 27550 */ {(13<<2)|2,{52,89,0}}, +/* 27551 */ {(13<<2)|2,{52,89,0}}, +/* 27552 */ {(13<<2)|2,{52,106,0}}, +/* 27553 */ {(13<<2)|2,{52,106,0}}, +/* 27554 */ {(13<<2)|2,{52,106,0}}, +/* 27555 */ {(13<<2)|2,{52,106,0}}, +/* 27556 */ {(13<<2)|2,{52,106,0}}, +/* 27557 */ {(13<<2)|2,{52,106,0}}, +/* 27558 */ {(13<<2)|2,{52,106,0}}, +/* 27559 */ {(13<<2)|2,{52,106,0}}, +/* 27560 */ {(13<<2)|2,{52,107,0}}, +/* 27561 */ {(13<<2)|2,{52,107,0}}, +/* 27562 */ {(13<<2)|2,{52,107,0}}, +/* 27563 */ {(13<<2)|2,{52,107,0}}, +/* 27564 */ {(13<<2)|2,{52,107,0}}, +/* 27565 */ {(13<<2)|2,{52,107,0}}, +/* 27566 */ {(13<<2)|2,{52,107,0}}, +/* 27567 */ {(13<<2)|2,{52,107,0}}, +/* 27568 */ {(13<<2)|2,{52,113,0}}, +/* 27569 */ {(13<<2)|2,{52,113,0}}, +/* 27570 */ {(13<<2)|2,{52,113,0}}, +/* 27571 */ {(13<<2)|2,{52,113,0}}, +/* 27572 */ {(13<<2)|2,{52,113,0}}, +/* 27573 */ {(13<<2)|2,{52,113,0}}, +/* 27574 */ {(13<<2)|2,{52,113,0}}, +/* 27575 */ {(13<<2)|2,{52,113,0}}, +/* 27576 */ {(13<<2)|2,{52,118,0}}, +/* 27577 */ {(13<<2)|2,{52,118,0}}, +/* 27578 */ {(13<<2)|2,{52,118,0}}, +/* 27579 */ {(13<<2)|2,{52,118,0}}, +/* 27580 */ {(13<<2)|2,{52,118,0}}, +/* 27581 */ {(13<<2)|2,{52,118,0}}, +/* 27582 */ {(13<<2)|2,{52,118,0}}, +/* 27583 */ {(13<<2)|2,{52,118,0}}, +/* 27584 */ {(13<<2)|2,{52,119,0}}, +/* 27585 */ {(13<<2)|2,{52,119,0}}, +/* 27586 */ {(13<<2)|2,{52,119,0}}, +/* 27587 */ {(13<<2)|2,{52,119,0}}, +/* 27588 */ {(13<<2)|2,{52,119,0}}, +/* 27589 */ {(13<<2)|2,{52,119,0}}, +/* 27590 */ {(13<<2)|2,{52,119,0}}, +/* 27591 */ {(13<<2)|2,{52,119,0}}, +/* 27592 */ {(13<<2)|2,{52,120,0}}, +/* 27593 */ {(13<<2)|2,{52,120,0}}, +/* 27594 */ {(13<<2)|2,{52,120,0}}, +/* 27595 */ {(13<<2)|2,{52,120,0}}, +/* 27596 */ {(13<<2)|2,{52,120,0}}, +/* 27597 */ {(13<<2)|2,{52,120,0}}, +/* 27598 */ {(13<<2)|2,{52,120,0}}, +/* 27599 */ {(13<<2)|2,{52,120,0}}, +/* 27600 */ {(13<<2)|2,{52,121,0}}, +/* 27601 */ {(13<<2)|2,{52,121,0}}, +/* 27602 */ {(13<<2)|2,{52,121,0}}, +/* 27603 */ {(13<<2)|2,{52,121,0}}, +/* 27604 */ {(13<<2)|2,{52,121,0}}, +/* 27605 */ {(13<<2)|2,{52,121,0}}, +/* 27606 */ {(13<<2)|2,{52,121,0}}, +/* 27607 */ {(13<<2)|2,{52,121,0}}, +/* 27608 */ {(13<<2)|2,{52,122,0}}, +/* 27609 */ {(13<<2)|2,{52,122,0}}, +/* 27610 */ {(13<<2)|2,{52,122,0}}, +/* 27611 */ {(13<<2)|2,{52,122,0}}, +/* 27612 */ {(13<<2)|2,{52,122,0}}, +/* 27613 */ {(13<<2)|2,{52,122,0}}, +/* 27614 */ {(13<<2)|2,{52,122,0}}, +/* 27615 */ {(13<<2)|2,{52,122,0}}, +/* 27616 */ {(14<<2)|2,{52,38,0}}, +/* 27617 */ {(14<<2)|2,{52,38,0}}, +/* 27618 */ {(14<<2)|2,{52,38,0}}, +/* 27619 */ {(14<<2)|2,{52,38,0}}, +/* 27620 */ {(14<<2)|2,{52,42,0}}, +/* 27621 */ {(14<<2)|2,{52,42,0}}, +/* 27622 */ {(14<<2)|2,{52,42,0}}, +/* 27623 */ {(14<<2)|2,{52,42,0}}, +/* 27624 */ {(14<<2)|2,{52,44,0}}, +/* 27625 */ {(14<<2)|2,{52,44,0}}, +/* 27626 */ {(14<<2)|2,{52,44,0}}, +/* 27627 */ {(14<<2)|2,{52,44,0}}, +/* 27628 */ {(14<<2)|2,{52,59,0}}, +/* 27629 */ {(14<<2)|2,{52,59,0}}, +/* 27630 */ {(14<<2)|2,{52,59,0}}, +/* 27631 */ {(14<<2)|2,{52,59,0}}, +/* 27632 */ {(14<<2)|2,{52,88,0}}, +/* 27633 */ {(14<<2)|2,{52,88,0}}, +/* 27634 */ {(14<<2)|2,{52,88,0}}, +/* 27635 */ {(14<<2)|2,{52,88,0}}, +/* 27636 */ {(14<<2)|2,{52,90,0}}, +/* 27637 */ {(14<<2)|2,{52,90,0}}, +/* 27638 */ {(14<<2)|2,{52,90,0}}, +/* 27639 */ {(14<<2)|2,{52,90,0}}, +/* 27640 */ {(16<<2)|2,{52,33,0}}, +/* 27641 */ {(16<<2)|2,{52,34,0}}, +/* 27642 */ {(16<<2)|2,{52,40,0}}, +/* 27643 */ {(16<<2)|2,{52,41,0}}, +/* 27644 */ {(16<<2)|2,{52,63,0}}, +/* 27645 */ {(6<<2)|1,{52,0,0}}, +/* 27646 */ {(6<<2)|1,{52,0,0}}, +/* 27647 */ {(6<<2)|1,{52,0,0}}, +/* 27648 */ {(16<<2)|3,{53,48,48}}, +/* 27649 */ {(16<<2)|3,{53,48,49}}, +/* 27650 */ {(16<<2)|3,{53,48,50}}, +/* 27651 */ {(16<<2)|3,{53,48,97}}, +/* 27652 */ {(16<<2)|3,{53,48,99}}, +/* 27653 */ {(16<<2)|3,{53,48,101}}, +/* 27654 */ {(16<<2)|3,{53,48,105}}, +/* 27655 */ {(16<<2)|3,{53,48,111}}, +/* 27656 */ {(16<<2)|3,{53,48,115}}, +/* 27657 */ {(16<<2)|3,{53,48,116}}, +/* 27658 */ {(11<<2)|2,{53,48,0}}, +/* 27659 */ {(11<<2)|2,{53,48,0}}, +/* 27660 */ {(11<<2)|2,{53,48,0}}, +/* 27661 */ {(11<<2)|2,{53,48,0}}, +/* 27662 */ {(11<<2)|2,{53,48,0}}, +/* 27663 */ {(11<<2)|2,{53,48,0}}, +/* 27664 */ {(11<<2)|2,{53,48,0}}, +/* 27665 */ {(11<<2)|2,{53,48,0}}, +/* 27666 */ {(11<<2)|2,{53,48,0}}, +/* 27667 */ {(11<<2)|2,{53,48,0}}, +/* 27668 */ {(11<<2)|2,{53,48,0}}, +/* 27669 */ {(11<<2)|2,{53,48,0}}, +/* 27670 */ {(11<<2)|2,{53,48,0}}, +/* 27671 */ {(11<<2)|2,{53,48,0}}, +/* 27672 */ {(11<<2)|2,{53,48,0}}, +/* 27673 */ {(11<<2)|2,{53,48,0}}, +/* 27674 */ {(11<<2)|2,{53,48,0}}, +/* 27675 */ {(11<<2)|2,{53,48,0}}, +/* 27676 */ {(11<<2)|2,{53,48,0}}, +/* 27677 */ {(11<<2)|2,{53,48,0}}, +/* 27678 */ {(11<<2)|2,{53,48,0}}, +/* 27679 */ {(11<<2)|2,{53,48,0}}, +/* 27680 */ {(16<<2)|3,{53,49,48}}, +/* 27681 */ {(16<<2)|3,{53,49,49}}, +/* 27682 */ {(16<<2)|3,{53,49,50}}, +/* 27683 */ {(16<<2)|3,{53,49,97}}, +/* 27684 */ {(16<<2)|3,{53,49,99}}, +/* 27685 */ {(16<<2)|3,{53,49,101}}, +/* 27686 */ {(16<<2)|3,{53,49,105}}, +/* 27687 */ {(16<<2)|3,{53,49,111}}, +/* 27688 */ {(16<<2)|3,{53,49,115}}, +/* 27689 */ {(16<<2)|3,{53,49,116}}, +/* 27690 */ {(11<<2)|2,{53,49,0}}, +/* 27691 */ {(11<<2)|2,{53,49,0}}, +/* 27692 */ {(11<<2)|2,{53,49,0}}, +/* 27693 */ {(11<<2)|2,{53,49,0}}, +/* 27694 */ {(11<<2)|2,{53,49,0}}, +/* 27695 */ {(11<<2)|2,{53,49,0}}, +/* 27696 */ {(11<<2)|2,{53,49,0}}, +/* 27697 */ {(11<<2)|2,{53,49,0}}, +/* 27698 */ {(11<<2)|2,{53,49,0}}, +/* 27699 */ {(11<<2)|2,{53,49,0}}, +/* 27700 */ {(11<<2)|2,{53,49,0}}, +/* 27701 */ {(11<<2)|2,{53,49,0}}, +/* 27702 */ {(11<<2)|2,{53,49,0}}, +/* 27703 */ {(11<<2)|2,{53,49,0}}, +/* 27704 */ {(11<<2)|2,{53,49,0}}, +/* 27705 */ {(11<<2)|2,{53,49,0}}, +/* 27706 */ {(11<<2)|2,{53,49,0}}, +/* 27707 */ {(11<<2)|2,{53,49,0}}, +/* 27708 */ {(11<<2)|2,{53,49,0}}, +/* 27709 */ {(11<<2)|2,{53,49,0}}, +/* 27710 */ {(11<<2)|2,{53,49,0}}, +/* 27711 */ {(11<<2)|2,{53,49,0}}, +/* 27712 */ {(16<<2)|3,{53,50,48}}, +/* 27713 */ {(16<<2)|3,{53,50,49}}, +/* 27714 */ {(16<<2)|3,{53,50,50}}, +/* 27715 */ {(16<<2)|3,{53,50,97}}, +/* 27716 */ {(16<<2)|3,{53,50,99}}, +/* 27717 */ {(16<<2)|3,{53,50,101}}, +/* 27718 */ {(16<<2)|3,{53,50,105}}, +/* 27719 */ {(16<<2)|3,{53,50,111}}, +/* 27720 */ {(16<<2)|3,{53,50,115}}, +/* 27721 */ {(16<<2)|3,{53,50,116}}, +/* 27722 */ {(11<<2)|2,{53,50,0}}, +/* 27723 */ {(11<<2)|2,{53,50,0}}, +/* 27724 */ {(11<<2)|2,{53,50,0}}, +/* 27725 */ {(11<<2)|2,{53,50,0}}, +/* 27726 */ {(11<<2)|2,{53,50,0}}, +/* 27727 */ {(11<<2)|2,{53,50,0}}, +/* 27728 */ {(11<<2)|2,{53,50,0}}, +/* 27729 */ {(11<<2)|2,{53,50,0}}, +/* 27730 */ {(11<<2)|2,{53,50,0}}, +/* 27731 */ {(11<<2)|2,{53,50,0}}, +/* 27732 */ {(11<<2)|2,{53,50,0}}, +/* 27733 */ {(11<<2)|2,{53,50,0}}, +/* 27734 */ {(11<<2)|2,{53,50,0}}, +/* 27735 */ {(11<<2)|2,{53,50,0}}, +/* 27736 */ {(11<<2)|2,{53,50,0}}, +/* 27737 */ {(11<<2)|2,{53,50,0}}, +/* 27738 */ {(11<<2)|2,{53,50,0}}, +/* 27739 */ {(11<<2)|2,{53,50,0}}, +/* 27740 */ {(11<<2)|2,{53,50,0}}, +/* 27741 */ {(11<<2)|2,{53,50,0}}, +/* 27742 */ {(11<<2)|2,{53,50,0}}, +/* 27743 */ {(11<<2)|2,{53,50,0}}, +/* 27744 */ {(16<<2)|3,{53,97,48}}, +/* 27745 */ {(16<<2)|3,{53,97,49}}, +/* 27746 */ {(16<<2)|3,{53,97,50}}, +/* 27747 */ {(16<<2)|3,{53,97,97}}, +/* 27748 */ {(16<<2)|3,{53,97,99}}, +/* 27749 */ {(16<<2)|3,{53,97,101}}, +/* 27750 */ {(16<<2)|3,{53,97,105}}, +/* 27751 */ {(16<<2)|3,{53,97,111}}, +/* 27752 */ {(16<<2)|3,{53,97,115}}, +/* 27753 */ {(16<<2)|3,{53,97,116}}, +/* 27754 */ {(11<<2)|2,{53,97,0}}, +/* 27755 */ {(11<<2)|2,{53,97,0}}, +/* 27756 */ {(11<<2)|2,{53,97,0}}, +/* 27757 */ {(11<<2)|2,{53,97,0}}, +/* 27758 */ {(11<<2)|2,{53,97,0}}, +/* 27759 */ {(11<<2)|2,{53,97,0}}, +/* 27760 */ {(11<<2)|2,{53,97,0}}, +/* 27761 */ {(11<<2)|2,{53,97,0}}, +/* 27762 */ {(11<<2)|2,{53,97,0}}, +/* 27763 */ {(11<<2)|2,{53,97,0}}, +/* 27764 */ {(11<<2)|2,{53,97,0}}, +/* 27765 */ {(11<<2)|2,{53,97,0}}, +/* 27766 */ {(11<<2)|2,{53,97,0}}, +/* 27767 */ {(11<<2)|2,{53,97,0}}, +/* 27768 */ {(11<<2)|2,{53,97,0}}, +/* 27769 */ {(11<<2)|2,{53,97,0}}, +/* 27770 */ {(11<<2)|2,{53,97,0}}, +/* 27771 */ {(11<<2)|2,{53,97,0}}, +/* 27772 */ {(11<<2)|2,{53,97,0}}, +/* 27773 */ {(11<<2)|2,{53,97,0}}, +/* 27774 */ {(11<<2)|2,{53,97,0}}, +/* 27775 */ {(11<<2)|2,{53,97,0}}, +/* 27776 */ {(16<<2)|3,{53,99,48}}, +/* 27777 */ {(16<<2)|3,{53,99,49}}, +/* 27778 */ {(16<<2)|3,{53,99,50}}, +/* 27779 */ {(16<<2)|3,{53,99,97}}, +/* 27780 */ {(16<<2)|3,{53,99,99}}, +/* 27781 */ {(16<<2)|3,{53,99,101}}, +/* 27782 */ {(16<<2)|3,{53,99,105}}, +/* 27783 */ {(16<<2)|3,{53,99,111}}, +/* 27784 */ {(16<<2)|3,{53,99,115}}, +/* 27785 */ {(16<<2)|3,{53,99,116}}, +/* 27786 */ {(11<<2)|2,{53,99,0}}, +/* 27787 */ {(11<<2)|2,{53,99,0}}, +/* 27788 */ {(11<<2)|2,{53,99,0}}, +/* 27789 */ {(11<<2)|2,{53,99,0}}, +/* 27790 */ {(11<<2)|2,{53,99,0}}, +/* 27791 */ {(11<<2)|2,{53,99,0}}, +/* 27792 */ {(11<<2)|2,{53,99,0}}, +/* 27793 */ {(11<<2)|2,{53,99,0}}, +/* 27794 */ {(11<<2)|2,{53,99,0}}, +/* 27795 */ {(11<<2)|2,{53,99,0}}, +/* 27796 */ {(11<<2)|2,{53,99,0}}, +/* 27797 */ {(11<<2)|2,{53,99,0}}, +/* 27798 */ {(11<<2)|2,{53,99,0}}, +/* 27799 */ {(11<<2)|2,{53,99,0}}, +/* 27800 */ {(11<<2)|2,{53,99,0}}, +/* 27801 */ {(11<<2)|2,{53,99,0}}, +/* 27802 */ {(11<<2)|2,{53,99,0}}, +/* 27803 */ {(11<<2)|2,{53,99,0}}, +/* 27804 */ {(11<<2)|2,{53,99,0}}, +/* 27805 */ {(11<<2)|2,{53,99,0}}, +/* 27806 */ {(11<<2)|2,{53,99,0}}, +/* 27807 */ {(11<<2)|2,{53,99,0}}, +/* 27808 */ {(16<<2)|3,{53,101,48}}, +/* 27809 */ {(16<<2)|3,{53,101,49}}, +/* 27810 */ {(16<<2)|3,{53,101,50}}, +/* 27811 */ {(16<<2)|3,{53,101,97}}, +/* 27812 */ {(16<<2)|3,{53,101,99}}, +/* 27813 */ {(16<<2)|3,{53,101,101}}, +/* 27814 */ {(16<<2)|3,{53,101,105}}, +/* 27815 */ {(16<<2)|3,{53,101,111}}, +/* 27816 */ {(16<<2)|3,{53,101,115}}, +/* 27817 */ {(16<<2)|3,{53,101,116}}, +/* 27818 */ {(11<<2)|2,{53,101,0}}, +/* 27819 */ {(11<<2)|2,{53,101,0}}, +/* 27820 */ {(11<<2)|2,{53,101,0}}, +/* 27821 */ {(11<<2)|2,{53,101,0}}, +/* 27822 */ {(11<<2)|2,{53,101,0}}, +/* 27823 */ {(11<<2)|2,{53,101,0}}, +/* 27824 */ {(11<<2)|2,{53,101,0}}, +/* 27825 */ {(11<<2)|2,{53,101,0}}, +/* 27826 */ {(11<<2)|2,{53,101,0}}, +/* 27827 */ {(11<<2)|2,{53,101,0}}, +/* 27828 */ {(11<<2)|2,{53,101,0}}, +/* 27829 */ {(11<<2)|2,{53,101,0}}, +/* 27830 */ {(11<<2)|2,{53,101,0}}, +/* 27831 */ {(11<<2)|2,{53,101,0}}, +/* 27832 */ {(11<<2)|2,{53,101,0}}, +/* 27833 */ {(11<<2)|2,{53,101,0}}, +/* 27834 */ {(11<<2)|2,{53,101,0}}, +/* 27835 */ {(11<<2)|2,{53,101,0}}, +/* 27836 */ {(11<<2)|2,{53,101,0}}, +/* 27837 */ {(11<<2)|2,{53,101,0}}, +/* 27838 */ {(11<<2)|2,{53,101,0}}, +/* 27839 */ {(11<<2)|2,{53,101,0}}, +/* 27840 */ {(16<<2)|3,{53,105,48}}, +/* 27841 */ {(16<<2)|3,{53,105,49}}, +/* 27842 */ {(16<<2)|3,{53,105,50}}, +/* 27843 */ {(16<<2)|3,{53,105,97}}, +/* 27844 */ {(16<<2)|3,{53,105,99}}, +/* 27845 */ {(16<<2)|3,{53,105,101}}, +/* 27846 */ {(16<<2)|3,{53,105,105}}, +/* 27847 */ {(16<<2)|3,{53,105,111}}, +/* 27848 */ {(16<<2)|3,{53,105,115}}, +/* 27849 */ {(16<<2)|3,{53,105,116}}, +/* 27850 */ {(11<<2)|2,{53,105,0}}, +/* 27851 */ {(11<<2)|2,{53,105,0}}, +/* 27852 */ {(11<<2)|2,{53,105,0}}, +/* 27853 */ {(11<<2)|2,{53,105,0}}, +/* 27854 */ {(11<<2)|2,{53,105,0}}, +/* 27855 */ {(11<<2)|2,{53,105,0}}, +/* 27856 */ {(11<<2)|2,{53,105,0}}, +/* 27857 */ {(11<<2)|2,{53,105,0}}, +/* 27858 */ {(11<<2)|2,{53,105,0}}, +/* 27859 */ {(11<<2)|2,{53,105,0}}, +/* 27860 */ {(11<<2)|2,{53,105,0}}, +/* 27861 */ {(11<<2)|2,{53,105,0}}, +/* 27862 */ {(11<<2)|2,{53,105,0}}, +/* 27863 */ {(11<<2)|2,{53,105,0}}, +/* 27864 */ {(11<<2)|2,{53,105,0}}, +/* 27865 */ {(11<<2)|2,{53,105,0}}, +/* 27866 */ {(11<<2)|2,{53,105,0}}, +/* 27867 */ {(11<<2)|2,{53,105,0}}, +/* 27868 */ {(11<<2)|2,{53,105,0}}, +/* 27869 */ {(11<<2)|2,{53,105,0}}, +/* 27870 */ {(11<<2)|2,{53,105,0}}, +/* 27871 */ {(11<<2)|2,{53,105,0}}, +/* 27872 */ {(16<<2)|3,{53,111,48}}, +/* 27873 */ {(16<<2)|3,{53,111,49}}, +/* 27874 */ {(16<<2)|3,{53,111,50}}, +/* 27875 */ {(16<<2)|3,{53,111,97}}, +/* 27876 */ {(16<<2)|3,{53,111,99}}, +/* 27877 */ {(16<<2)|3,{53,111,101}}, +/* 27878 */ {(16<<2)|3,{53,111,105}}, +/* 27879 */ {(16<<2)|3,{53,111,111}}, +/* 27880 */ {(16<<2)|3,{53,111,115}}, +/* 27881 */ {(16<<2)|3,{53,111,116}}, +/* 27882 */ {(11<<2)|2,{53,111,0}}, +/* 27883 */ {(11<<2)|2,{53,111,0}}, +/* 27884 */ {(11<<2)|2,{53,111,0}}, +/* 27885 */ {(11<<2)|2,{53,111,0}}, +/* 27886 */ {(11<<2)|2,{53,111,0}}, +/* 27887 */ {(11<<2)|2,{53,111,0}}, +/* 27888 */ {(11<<2)|2,{53,111,0}}, +/* 27889 */ {(11<<2)|2,{53,111,0}}, +/* 27890 */ {(11<<2)|2,{53,111,0}}, +/* 27891 */ {(11<<2)|2,{53,111,0}}, +/* 27892 */ {(11<<2)|2,{53,111,0}}, +/* 27893 */ {(11<<2)|2,{53,111,0}}, +/* 27894 */ {(11<<2)|2,{53,111,0}}, +/* 27895 */ {(11<<2)|2,{53,111,0}}, +/* 27896 */ {(11<<2)|2,{53,111,0}}, +/* 27897 */ {(11<<2)|2,{53,111,0}}, +/* 27898 */ {(11<<2)|2,{53,111,0}}, +/* 27899 */ {(11<<2)|2,{53,111,0}}, +/* 27900 */ {(11<<2)|2,{53,111,0}}, +/* 27901 */ {(11<<2)|2,{53,111,0}}, +/* 27902 */ {(11<<2)|2,{53,111,0}}, +/* 27903 */ {(11<<2)|2,{53,111,0}}, +/* 27904 */ {(16<<2)|3,{53,115,48}}, +/* 27905 */ {(16<<2)|3,{53,115,49}}, +/* 27906 */ {(16<<2)|3,{53,115,50}}, +/* 27907 */ {(16<<2)|3,{53,115,97}}, +/* 27908 */ {(16<<2)|3,{53,115,99}}, +/* 27909 */ {(16<<2)|3,{53,115,101}}, +/* 27910 */ {(16<<2)|3,{53,115,105}}, +/* 27911 */ {(16<<2)|3,{53,115,111}}, +/* 27912 */ {(16<<2)|3,{53,115,115}}, +/* 27913 */ {(16<<2)|3,{53,115,116}}, +/* 27914 */ {(11<<2)|2,{53,115,0}}, +/* 27915 */ {(11<<2)|2,{53,115,0}}, +/* 27916 */ {(11<<2)|2,{53,115,0}}, +/* 27917 */ {(11<<2)|2,{53,115,0}}, +/* 27918 */ {(11<<2)|2,{53,115,0}}, +/* 27919 */ {(11<<2)|2,{53,115,0}}, +/* 27920 */ {(11<<2)|2,{53,115,0}}, +/* 27921 */ {(11<<2)|2,{53,115,0}}, +/* 27922 */ {(11<<2)|2,{53,115,0}}, +/* 27923 */ {(11<<2)|2,{53,115,0}}, +/* 27924 */ {(11<<2)|2,{53,115,0}}, +/* 27925 */ {(11<<2)|2,{53,115,0}}, +/* 27926 */ {(11<<2)|2,{53,115,0}}, +/* 27927 */ {(11<<2)|2,{53,115,0}}, +/* 27928 */ {(11<<2)|2,{53,115,0}}, +/* 27929 */ {(11<<2)|2,{53,115,0}}, +/* 27930 */ {(11<<2)|2,{53,115,0}}, +/* 27931 */ {(11<<2)|2,{53,115,0}}, +/* 27932 */ {(11<<2)|2,{53,115,0}}, +/* 27933 */ {(11<<2)|2,{53,115,0}}, +/* 27934 */ {(11<<2)|2,{53,115,0}}, +/* 27935 */ {(11<<2)|2,{53,115,0}}, +/* 27936 */ {(16<<2)|3,{53,116,48}}, +/* 27937 */ {(16<<2)|3,{53,116,49}}, +/* 27938 */ {(16<<2)|3,{53,116,50}}, +/* 27939 */ {(16<<2)|3,{53,116,97}}, +/* 27940 */ {(16<<2)|3,{53,116,99}}, +/* 27941 */ {(16<<2)|3,{53,116,101}}, +/* 27942 */ {(16<<2)|3,{53,116,105}}, +/* 27943 */ {(16<<2)|3,{53,116,111}}, +/* 27944 */ {(16<<2)|3,{53,116,115}}, +/* 27945 */ {(16<<2)|3,{53,116,116}}, +/* 27946 */ {(11<<2)|2,{53,116,0}}, +/* 27947 */ {(11<<2)|2,{53,116,0}}, +/* 27948 */ {(11<<2)|2,{53,116,0}}, +/* 27949 */ {(11<<2)|2,{53,116,0}}, +/* 27950 */ {(11<<2)|2,{53,116,0}}, +/* 27951 */ {(11<<2)|2,{53,116,0}}, +/* 27952 */ {(11<<2)|2,{53,116,0}}, +/* 27953 */ {(11<<2)|2,{53,116,0}}, +/* 27954 */ {(11<<2)|2,{53,116,0}}, +/* 27955 */ {(11<<2)|2,{53,116,0}}, +/* 27956 */ {(11<<2)|2,{53,116,0}}, +/* 27957 */ {(11<<2)|2,{53,116,0}}, +/* 27958 */ {(11<<2)|2,{53,116,0}}, +/* 27959 */ {(11<<2)|2,{53,116,0}}, +/* 27960 */ {(11<<2)|2,{53,116,0}}, +/* 27961 */ {(11<<2)|2,{53,116,0}}, +/* 27962 */ {(11<<2)|2,{53,116,0}}, +/* 27963 */ {(11<<2)|2,{53,116,0}}, +/* 27964 */ {(11<<2)|2,{53,116,0}}, +/* 27965 */ {(11<<2)|2,{53,116,0}}, +/* 27966 */ {(11<<2)|2,{53,116,0}}, +/* 27967 */ {(11<<2)|2,{53,116,0}}, +/* 27968 */ {(12<<2)|2,{53,32,0}}, +/* 27969 */ {(12<<2)|2,{53,32,0}}, +/* 27970 */ {(12<<2)|2,{53,32,0}}, +/* 27971 */ {(12<<2)|2,{53,32,0}}, +/* 27972 */ {(12<<2)|2,{53,32,0}}, +/* 27973 */ {(12<<2)|2,{53,32,0}}, +/* 27974 */ {(12<<2)|2,{53,32,0}}, +/* 27975 */ {(12<<2)|2,{53,32,0}}, +/* 27976 */ {(12<<2)|2,{53,32,0}}, +/* 27977 */ {(12<<2)|2,{53,32,0}}, +/* 27978 */ {(12<<2)|2,{53,32,0}}, +/* 27979 */ {(12<<2)|2,{53,32,0}}, +/* 27980 */ {(12<<2)|2,{53,32,0}}, +/* 27981 */ {(12<<2)|2,{53,32,0}}, +/* 27982 */ {(12<<2)|2,{53,32,0}}, +/* 27983 */ {(12<<2)|2,{53,32,0}}, +/* 27984 */ {(12<<2)|2,{53,37,0}}, +/* 27985 */ {(12<<2)|2,{53,37,0}}, +/* 27986 */ {(12<<2)|2,{53,37,0}}, +/* 27987 */ {(12<<2)|2,{53,37,0}}, +/* 27988 */ {(12<<2)|2,{53,37,0}}, +/* 27989 */ {(12<<2)|2,{53,37,0}}, +/* 27990 */ {(12<<2)|2,{53,37,0}}, +/* 27991 */ {(12<<2)|2,{53,37,0}}, +/* 27992 */ {(12<<2)|2,{53,37,0}}, +/* 27993 */ {(12<<2)|2,{53,37,0}}, +/* 27994 */ {(12<<2)|2,{53,37,0}}, +/* 27995 */ {(12<<2)|2,{53,37,0}}, +/* 27996 */ {(12<<2)|2,{53,37,0}}, +/* 27997 */ {(12<<2)|2,{53,37,0}}, +/* 27998 */ {(12<<2)|2,{53,37,0}}, +/* 27999 */ {(12<<2)|2,{53,37,0}}, +/* 28000 */ {(12<<2)|2,{53,45,0}}, +/* 28001 */ {(12<<2)|2,{53,45,0}}, +/* 28002 */ {(12<<2)|2,{53,45,0}}, +/* 28003 */ {(12<<2)|2,{53,45,0}}, +/* 28004 */ {(12<<2)|2,{53,45,0}}, +/* 28005 */ {(12<<2)|2,{53,45,0}}, +/* 28006 */ {(12<<2)|2,{53,45,0}}, +/* 28007 */ {(12<<2)|2,{53,45,0}}, +/* 28008 */ {(12<<2)|2,{53,45,0}}, +/* 28009 */ {(12<<2)|2,{53,45,0}}, +/* 28010 */ {(12<<2)|2,{53,45,0}}, +/* 28011 */ {(12<<2)|2,{53,45,0}}, +/* 28012 */ {(12<<2)|2,{53,45,0}}, +/* 28013 */ {(12<<2)|2,{53,45,0}}, +/* 28014 */ {(12<<2)|2,{53,45,0}}, +/* 28015 */ {(12<<2)|2,{53,45,0}}, +/* 28016 */ {(12<<2)|2,{53,46,0}}, +/* 28017 */ {(12<<2)|2,{53,46,0}}, +/* 28018 */ {(12<<2)|2,{53,46,0}}, +/* 28019 */ {(12<<2)|2,{53,46,0}}, +/* 28020 */ {(12<<2)|2,{53,46,0}}, +/* 28021 */ {(12<<2)|2,{53,46,0}}, +/* 28022 */ {(12<<2)|2,{53,46,0}}, +/* 28023 */ {(12<<2)|2,{53,46,0}}, +/* 28024 */ {(12<<2)|2,{53,46,0}}, +/* 28025 */ {(12<<2)|2,{53,46,0}}, +/* 28026 */ {(12<<2)|2,{53,46,0}}, +/* 28027 */ {(12<<2)|2,{53,46,0}}, +/* 28028 */ {(12<<2)|2,{53,46,0}}, +/* 28029 */ {(12<<2)|2,{53,46,0}}, +/* 28030 */ {(12<<2)|2,{53,46,0}}, +/* 28031 */ {(12<<2)|2,{53,46,0}}, +/* 28032 */ {(12<<2)|2,{53,47,0}}, +/* 28033 */ {(12<<2)|2,{53,47,0}}, +/* 28034 */ {(12<<2)|2,{53,47,0}}, +/* 28035 */ {(12<<2)|2,{53,47,0}}, +/* 28036 */ {(12<<2)|2,{53,47,0}}, +/* 28037 */ {(12<<2)|2,{53,47,0}}, +/* 28038 */ {(12<<2)|2,{53,47,0}}, +/* 28039 */ {(12<<2)|2,{53,47,0}}, +/* 28040 */ {(12<<2)|2,{53,47,0}}, +/* 28041 */ {(12<<2)|2,{53,47,0}}, +/* 28042 */ {(12<<2)|2,{53,47,0}}, +/* 28043 */ {(12<<2)|2,{53,47,0}}, +/* 28044 */ {(12<<2)|2,{53,47,0}}, +/* 28045 */ {(12<<2)|2,{53,47,0}}, +/* 28046 */ {(12<<2)|2,{53,47,0}}, +/* 28047 */ {(12<<2)|2,{53,47,0}}, +/* 28048 */ {(12<<2)|2,{53,51,0}}, +/* 28049 */ {(12<<2)|2,{53,51,0}}, +/* 28050 */ {(12<<2)|2,{53,51,0}}, +/* 28051 */ {(12<<2)|2,{53,51,0}}, +/* 28052 */ {(12<<2)|2,{53,51,0}}, +/* 28053 */ {(12<<2)|2,{53,51,0}}, +/* 28054 */ {(12<<2)|2,{53,51,0}}, +/* 28055 */ {(12<<2)|2,{53,51,0}}, +/* 28056 */ {(12<<2)|2,{53,51,0}}, +/* 28057 */ {(12<<2)|2,{53,51,0}}, +/* 28058 */ {(12<<2)|2,{53,51,0}}, +/* 28059 */ {(12<<2)|2,{53,51,0}}, +/* 28060 */ {(12<<2)|2,{53,51,0}}, +/* 28061 */ {(12<<2)|2,{53,51,0}}, +/* 28062 */ {(12<<2)|2,{53,51,0}}, +/* 28063 */ {(12<<2)|2,{53,51,0}}, +/* 28064 */ {(12<<2)|2,{53,52,0}}, +/* 28065 */ {(12<<2)|2,{53,52,0}}, +/* 28066 */ {(12<<2)|2,{53,52,0}}, +/* 28067 */ {(12<<2)|2,{53,52,0}}, +/* 28068 */ {(12<<2)|2,{53,52,0}}, +/* 28069 */ {(12<<2)|2,{53,52,0}}, +/* 28070 */ {(12<<2)|2,{53,52,0}}, +/* 28071 */ {(12<<2)|2,{53,52,0}}, +/* 28072 */ {(12<<2)|2,{53,52,0}}, +/* 28073 */ {(12<<2)|2,{53,52,0}}, +/* 28074 */ {(12<<2)|2,{53,52,0}}, +/* 28075 */ {(12<<2)|2,{53,52,0}}, +/* 28076 */ {(12<<2)|2,{53,52,0}}, +/* 28077 */ {(12<<2)|2,{53,52,0}}, +/* 28078 */ {(12<<2)|2,{53,52,0}}, +/* 28079 */ {(12<<2)|2,{53,52,0}}, +/* 28080 */ {(12<<2)|2,{53,53,0}}, +/* 28081 */ {(12<<2)|2,{53,53,0}}, +/* 28082 */ {(12<<2)|2,{53,53,0}}, +/* 28083 */ {(12<<2)|2,{53,53,0}}, +/* 28084 */ {(12<<2)|2,{53,53,0}}, +/* 28085 */ {(12<<2)|2,{53,53,0}}, +/* 28086 */ {(12<<2)|2,{53,53,0}}, +/* 28087 */ {(12<<2)|2,{53,53,0}}, +/* 28088 */ {(12<<2)|2,{53,53,0}}, +/* 28089 */ {(12<<2)|2,{53,53,0}}, +/* 28090 */ {(12<<2)|2,{53,53,0}}, +/* 28091 */ {(12<<2)|2,{53,53,0}}, +/* 28092 */ {(12<<2)|2,{53,53,0}}, +/* 28093 */ {(12<<2)|2,{53,53,0}}, +/* 28094 */ {(12<<2)|2,{53,53,0}}, +/* 28095 */ {(12<<2)|2,{53,53,0}}, +/* 28096 */ {(12<<2)|2,{53,54,0}}, +/* 28097 */ {(12<<2)|2,{53,54,0}}, +/* 28098 */ {(12<<2)|2,{53,54,0}}, +/* 28099 */ {(12<<2)|2,{53,54,0}}, +/* 28100 */ {(12<<2)|2,{53,54,0}}, +/* 28101 */ {(12<<2)|2,{53,54,0}}, +/* 28102 */ {(12<<2)|2,{53,54,0}}, +/* 28103 */ {(12<<2)|2,{53,54,0}}, +/* 28104 */ {(12<<2)|2,{53,54,0}}, +/* 28105 */ {(12<<2)|2,{53,54,0}}, +/* 28106 */ {(12<<2)|2,{53,54,0}}, +/* 28107 */ {(12<<2)|2,{53,54,0}}, +/* 28108 */ {(12<<2)|2,{53,54,0}}, +/* 28109 */ {(12<<2)|2,{53,54,0}}, +/* 28110 */ {(12<<2)|2,{53,54,0}}, +/* 28111 */ {(12<<2)|2,{53,54,0}}, +/* 28112 */ {(12<<2)|2,{53,55,0}}, +/* 28113 */ {(12<<2)|2,{53,55,0}}, +/* 28114 */ {(12<<2)|2,{53,55,0}}, +/* 28115 */ {(12<<2)|2,{53,55,0}}, +/* 28116 */ {(12<<2)|2,{53,55,0}}, +/* 28117 */ {(12<<2)|2,{53,55,0}}, +/* 28118 */ {(12<<2)|2,{53,55,0}}, +/* 28119 */ {(12<<2)|2,{53,55,0}}, +/* 28120 */ {(12<<2)|2,{53,55,0}}, +/* 28121 */ {(12<<2)|2,{53,55,0}}, +/* 28122 */ {(12<<2)|2,{53,55,0}}, +/* 28123 */ {(12<<2)|2,{53,55,0}}, +/* 28124 */ {(12<<2)|2,{53,55,0}}, +/* 28125 */ {(12<<2)|2,{53,55,0}}, +/* 28126 */ {(12<<2)|2,{53,55,0}}, +/* 28127 */ {(12<<2)|2,{53,55,0}}, +/* 28128 */ {(12<<2)|2,{53,56,0}}, +/* 28129 */ {(12<<2)|2,{53,56,0}}, +/* 28130 */ {(12<<2)|2,{53,56,0}}, +/* 28131 */ {(12<<2)|2,{53,56,0}}, +/* 28132 */ {(12<<2)|2,{53,56,0}}, +/* 28133 */ {(12<<2)|2,{53,56,0}}, +/* 28134 */ {(12<<2)|2,{53,56,0}}, +/* 28135 */ {(12<<2)|2,{53,56,0}}, +/* 28136 */ {(12<<2)|2,{53,56,0}}, +/* 28137 */ {(12<<2)|2,{53,56,0}}, +/* 28138 */ {(12<<2)|2,{53,56,0}}, +/* 28139 */ {(12<<2)|2,{53,56,0}}, +/* 28140 */ {(12<<2)|2,{53,56,0}}, +/* 28141 */ {(12<<2)|2,{53,56,0}}, +/* 28142 */ {(12<<2)|2,{53,56,0}}, +/* 28143 */ {(12<<2)|2,{53,56,0}}, +/* 28144 */ {(12<<2)|2,{53,57,0}}, +/* 28145 */ {(12<<2)|2,{53,57,0}}, +/* 28146 */ {(12<<2)|2,{53,57,0}}, +/* 28147 */ {(12<<2)|2,{53,57,0}}, +/* 28148 */ {(12<<2)|2,{53,57,0}}, +/* 28149 */ {(12<<2)|2,{53,57,0}}, +/* 28150 */ {(12<<2)|2,{53,57,0}}, +/* 28151 */ {(12<<2)|2,{53,57,0}}, +/* 28152 */ {(12<<2)|2,{53,57,0}}, +/* 28153 */ {(12<<2)|2,{53,57,0}}, +/* 28154 */ {(12<<2)|2,{53,57,0}}, +/* 28155 */ {(12<<2)|2,{53,57,0}}, +/* 28156 */ {(12<<2)|2,{53,57,0}}, +/* 28157 */ {(12<<2)|2,{53,57,0}}, +/* 28158 */ {(12<<2)|2,{53,57,0}}, +/* 28159 */ {(12<<2)|2,{53,57,0}}, +/* 28160 */ {(12<<2)|2,{53,61,0}}, +/* 28161 */ {(12<<2)|2,{53,61,0}}, +/* 28162 */ {(12<<2)|2,{53,61,0}}, +/* 28163 */ {(12<<2)|2,{53,61,0}}, +/* 28164 */ {(12<<2)|2,{53,61,0}}, +/* 28165 */ {(12<<2)|2,{53,61,0}}, +/* 28166 */ {(12<<2)|2,{53,61,0}}, +/* 28167 */ {(12<<2)|2,{53,61,0}}, +/* 28168 */ {(12<<2)|2,{53,61,0}}, +/* 28169 */ {(12<<2)|2,{53,61,0}}, +/* 28170 */ {(12<<2)|2,{53,61,0}}, +/* 28171 */ {(12<<2)|2,{53,61,0}}, +/* 28172 */ {(12<<2)|2,{53,61,0}}, +/* 28173 */ {(12<<2)|2,{53,61,0}}, +/* 28174 */ {(12<<2)|2,{53,61,0}}, +/* 28175 */ {(12<<2)|2,{53,61,0}}, +/* 28176 */ {(12<<2)|2,{53,65,0}}, +/* 28177 */ {(12<<2)|2,{53,65,0}}, +/* 28178 */ {(12<<2)|2,{53,65,0}}, +/* 28179 */ {(12<<2)|2,{53,65,0}}, +/* 28180 */ {(12<<2)|2,{53,65,0}}, +/* 28181 */ {(12<<2)|2,{53,65,0}}, +/* 28182 */ {(12<<2)|2,{53,65,0}}, +/* 28183 */ {(12<<2)|2,{53,65,0}}, +/* 28184 */ {(12<<2)|2,{53,65,0}}, +/* 28185 */ {(12<<2)|2,{53,65,0}}, +/* 28186 */ {(12<<2)|2,{53,65,0}}, +/* 28187 */ {(12<<2)|2,{53,65,0}}, +/* 28188 */ {(12<<2)|2,{53,65,0}}, +/* 28189 */ {(12<<2)|2,{53,65,0}}, +/* 28190 */ {(12<<2)|2,{53,65,0}}, +/* 28191 */ {(12<<2)|2,{53,65,0}}, +/* 28192 */ {(12<<2)|2,{53,95,0}}, +/* 28193 */ {(12<<2)|2,{53,95,0}}, +/* 28194 */ {(12<<2)|2,{53,95,0}}, +/* 28195 */ {(12<<2)|2,{53,95,0}}, +/* 28196 */ {(12<<2)|2,{53,95,0}}, +/* 28197 */ {(12<<2)|2,{53,95,0}}, +/* 28198 */ {(12<<2)|2,{53,95,0}}, +/* 28199 */ {(12<<2)|2,{53,95,0}}, +/* 28200 */ {(12<<2)|2,{53,95,0}}, +/* 28201 */ {(12<<2)|2,{53,95,0}}, +/* 28202 */ {(12<<2)|2,{53,95,0}}, +/* 28203 */ {(12<<2)|2,{53,95,0}}, +/* 28204 */ {(12<<2)|2,{53,95,0}}, +/* 28205 */ {(12<<2)|2,{53,95,0}}, +/* 28206 */ {(12<<2)|2,{53,95,0}}, +/* 28207 */ {(12<<2)|2,{53,95,0}}, +/* 28208 */ {(12<<2)|2,{53,98,0}}, +/* 28209 */ {(12<<2)|2,{53,98,0}}, +/* 28210 */ {(12<<2)|2,{53,98,0}}, +/* 28211 */ {(12<<2)|2,{53,98,0}}, +/* 28212 */ {(12<<2)|2,{53,98,0}}, +/* 28213 */ {(12<<2)|2,{53,98,0}}, +/* 28214 */ {(12<<2)|2,{53,98,0}}, +/* 28215 */ {(12<<2)|2,{53,98,0}}, +/* 28216 */ {(12<<2)|2,{53,98,0}}, +/* 28217 */ {(12<<2)|2,{53,98,0}}, +/* 28218 */ {(12<<2)|2,{53,98,0}}, +/* 28219 */ {(12<<2)|2,{53,98,0}}, +/* 28220 */ {(12<<2)|2,{53,98,0}}, +/* 28221 */ {(12<<2)|2,{53,98,0}}, +/* 28222 */ {(12<<2)|2,{53,98,0}}, +/* 28223 */ {(12<<2)|2,{53,98,0}}, +/* 28224 */ {(12<<2)|2,{53,100,0}}, +/* 28225 */ {(12<<2)|2,{53,100,0}}, +/* 28226 */ {(12<<2)|2,{53,100,0}}, +/* 28227 */ {(12<<2)|2,{53,100,0}}, +/* 28228 */ {(12<<2)|2,{53,100,0}}, +/* 28229 */ {(12<<2)|2,{53,100,0}}, +/* 28230 */ {(12<<2)|2,{53,100,0}}, +/* 28231 */ {(12<<2)|2,{53,100,0}}, +/* 28232 */ {(12<<2)|2,{53,100,0}}, +/* 28233 */ {(12<<2)|2,{53,100,0}}, +/* 28234 */ {(12<<2)|2,{53,100,0}}, +/* 28235 */ {(12<<2)|2,{53,100,0}}, +/* 28236 */ {(12<<2)|2,{53,100,0}}, +/* 28237 */ {(12<<2)|2,{53,100,0}}, +/* 28238 */ {(12<<2)|2,{53,100,0}}, +/* 28239 */ {(12<<2)|2,{53,100,0}}, +/* 28240 */ {(12<<2)|2,{53,102,0}}, +/* 28241 */ {(12<<2)|2,{53,102,0}}, +/* 28242 */ {(12<<2)|2,{53,102,0}}, +/* 28243 */ {(12<<2)|2,{53,102,0}}, +/* 28244 */ {(12<<2)|2,{53,102,0}}, +/* 28245 */ {(12<<2)|2,{53,102,0}}, +/* 28246 */ {(12<<2)|2,{53,102,0}}, +/* 28247 */ {(12<<2)|2,{53,102,0}}, +/* 28248 */ {(12<<2)|2,{53,102,0}}, +/* 28249 */ {(12<<2)|2,{53,102,0}}, +/* 28250 */ {(12<<2)|2,{53,102,0}}, +/* 28251 */ {(12<<2)|2,{53,102,0}}, +/* 28252 */ {(12<<2)|2,{53,102,0}}, +/* 28253 */ {(12<<2)|2,{53,102,0}}, +/* 28254 */ {(12<<2)|2,{53,102,0}}, +/* 28255 */ {(12<<2)|2,{53,102,0}}, +/* 28256 */ {(12<<2)|2,{53,103,0}}, +/* 28257 */ {(12<<2)|2,{53,103,0}}, +/* 28258 */ {(12<<2)|2,{53,103,0}}, +/* 28259 */ {(12<<2)|2,{53,103,0}}, +/* 28260 */ {(12<<2)|2,{53,103,0}}, +/* 28261 */ {(12<<2)|2,{53,103,0}}, +/* 28262 */ {(12<<2)|2,{53,103,0}}, +/* 28263 */ {(12<<2)|2,{53,103,0}}, +/* 28264 */ {(12<<2)|2,{53,103,0}}, +/* 28265 */ {(12<<2)|2,{53,103,0}}, +/* 28266 */ {(12<<2)|2,{53,103,0}}, +/* 28267 */ {(12<<2)|2,{53,103,0}}, +/* 28268 */ {(12<<2)|2,{53,103,0}}, +/* 28269 */ {(12<<2)|2,{53,103,0}}, +/* 28270 */ {(12<<2)|2,{53,103,0}}, +/* 28271 */ {(12<<2)|2,{53,103,0}}, +/* 28272 */ {(12<<2)|2,{53,104,0}}, +/* 28273 */ {(12<<2)|2,{53,104,0}}, +/* 28274 */ {(12<<2)|2,{53,104,0}}, +/* 28275 */ {(12<<2)|2,{53,104,0}}, +/* 28276 */ {(12<<2)|2,{53,104,0}}, +/* 28277 */ {(12<<2)|2,{53,104,0}}, +/* 28278 */ {(12<<2)|2,{53,104,0}}, +/* 28279 */ {(12<<2)|2,{53,104,0}}, +/* 28280 */ {(12<<2)|2,{53,104,0}}, +/* 28281 */ {(12<<2)|2,{53,104,0}}, +/* 28282 */ {(12<<2)|2,{53,104,0}}, +/* 28283 */ {(12<<2)|2,{53,104,0}}, +/* 28284 */ {(12<<2)|2,{53,104,0}}, +/* 28285 */ {(12<<2)|2,{53,104,0}}, +/* 28286 */ {(12<<2)|2,{53,104,0}}, +/* 28287 */ {(12<<2)|2,{53,104,0}}, +/* 28288 */ {(12<<2)|2,{53,108,0}}, +/* 28289 */ {(12<<2)|2,{53,108,0}}, +/* 28290 */ {(12<<2)|2,{53,108,0}}, +/* 28291 */ {(12<<2)|2,{53,108,0}}, +/* 28292 */ {(12<<2)|2,{53,108,0}}, +/* 28293 */ {(12<<2)|2,{53,108,0}}, +/* 28294 */ {(12<<2)|2,{53,108,0}}, +/* 28295 */ {(12<<2)|2,{53,108,0}}, +/* 28296 */ {(12<<2)|2,{53,108,0}}, +/* 28297 */ {(12<<2)|2,{53,108,0}}, +/* 28298 */ {(12<<2)|2,{53,108,0}}, +/* 28299 */ {(12<<2)|2,{53,108,0}}, +/* 28300 */ {(12<<2)|2,{53,108,0}}, +/* 28301 */ {(12<<2)|2,{53,108,0}}, +/* 28302 */ {(12<<2)|2,{53,108,0}}, +/* 28303 */ {(12<<2)|2,{53,108,0}}, +/* 28304 */ {(12<<2)|2,{53,109,0}}, +/* 28305 */ {(12<<2)|2,{53,109,0}}, +/* 28306 */ {(12<<2)|2,{53,109,0}}, +/* 28307 */ {(12<<2)|2,{53,109,0}}, +/* 28308 */ {(12<<2)|2,{53,109,0}}, +/* 28309 */ {(12<<2)|2,{53,109,0}}, +/* 28310 */ {(12<<2)|2,{53,109,0}}, +/* 28311 */ {(12<<2)|2,{53,109,0}}, +/* 28312 */ {(12<<2)|2,{53,109,0}}, +/* 28313 */ {(12<<2)|2,{53,109,0}}, +/* 28314 */ {(12<<2)|2,{53,109,0}}, +/* 28315 */ {(12<<2)|2,{53,109,0}}, +/* 28316 */ {(12<<2)|2,{53,109,0}}, +/* 28317 */ {(12<<2)|2,{53,109,0}}, +/* 28318 */ {(12<<2)|2,{53,109,0}}, +/* 28319 */ {(12<<2)|2,{53,109,0}}, +/* 28320 */ {(12<<2)|2,{53,110,0}}, +/* 28321 */ {(12<<2)|2,{53,110,0}}, +/* 28322 */ {(12<<2)|2,{53,110,0}}, +/* 28323 */ {(12<<2)|2,{53,110,0}}, +/* 28324 */ {(12<<2)|2,{53,110,0}}, +/* 28325 */ {(12<<2)|2,{53,110,0}}, +/* 28326 */ {(12<<2)|2,{53,110,0}}, +/* 28327 */ {(12<<2)|2,{53,110,0}}, +/* 28328 */ {(12<<2)|2,{53,110,0}}, +/* 28329 */ {(12<<2)|2,{53,110,0}}, +/* 28330 */ {(12<<2)|2,{53,110,0}}, +/* 28331 */ {(12<<2)|2,{53,110,0}}, +/* 28332 */ {(12<<2)|2,{53,110,0}}, +/* 28333 */ {(12<<2)|2,{53,110,0}}, +/* 28334 */ {(12<<2)|2,{53,110,0}}, +/* 28335 */ {(12<<2)|2,{53,110,0}}, +/* 28336 */ {(12<<2)|2,{53,112,0}}, +/* 28337 */ {(12<<2)|2,{53,112,0}}, +/* 28338 */ {(12<<2)|2,{53,112,0}}, +/* 28339 */ {(12<<2)|2,{53,112,0}}, +/* 28340 */ {(12<<2)|2,{53,112,0}}, +/* 28341 */ {(12<<2)|2,{53,112,0}}, +/* 28342 */ {(12<<2)|2,{53,112,0}}, +/* 28343 */ {(12<<2)|2,{53,112,0}}, +/* 28344 */ {(12<<2)|2,{53,112,0}}, +/* 28345 */ {(12<<2)|2,{53,112,0}}, +/* 28346 */ {(12<<2)|2,{53,112,0}}, +/* 28347 */ {(12<<2)|2,{53,112,0}}, +/* 28348 */ {(12<<2)|2,{53,112,0}}, +/* 28349 */ {(12<<2)|2,{53,112,0}}, +/* 28350 */ {(12<<2)|2,{53,112,0}}, +/* 28351 */ {(12<<2)|2,{53,112,0}}, +/* 28352 */ {(12<<2)|2,{53,114,0}}, +/* 28353 */ {(12<<2)|2,{53,114,0}}, +/* 28354 */ {(12<<2)|2,{53,114,0}}, +/* 28355 */ {(12<<2)|2,{53,114,0}}, +/* 28356 */ {(12<<2)|2,{53,114,0}}, +/* 28357 */ {(12<<2)|2,{53,114,0}}, +/* 28358 */ {(12<<2)|2,{53,114,0}}, +/* 28359 */ {(12<<2)|2,{53,114,0}}, +/* 28360 */ {(12<<2)|2,{53,114,0}}, +/* 28361 */ {(12<<2)|2,{53,114,0}}, +/* 28362 */ {(12<<2)|2,{53,114,0}}, +/* 28363 */ {(12<<2)|2,{53,114,0}}, +/* 28364 */ {(12<<2)|2,{53,114,0}}, +/* 28365 */ {(12<<2)|2,{53,114,0}}, +/* 28366 */ {(12<<2)|2,{53,114,0}}, +/* 28367 */ {(12<<2)|2,{53,114,0}}, +/* 28368 */ {(12<<2)|2,{53,117,0}}, +/* 28369 */ {(12<<2)|2,{53,117,0}}, +/* 28370 */ {(12<<2)|2,{53,117,0}}, +/* 28371 */ {(12<<2)|2,{53,117,0}}, +/* 28372 */ {(12<<2)|2,{53,117,0}}, +/* 28373 */ {(12<<2)|2,{53,117,0}}, +/* 28374 */ {(12<<2)|2,{53,117,0}}, +/* 28375 */ {(12<<2)|2,{53,117,0}}, +/* 28376 */ {(12<<2)|2,{53,117,0}}, +/* 28377 */ {(12<<2)|2,{53,117,0}}, +/* 28378 */ {(12<<2)|2,{53,117,0}}, +/* 28379 */ {(12<<2)|2,{53,117,0}}, +/* 28380 */ {(12<<2)|2,{53,117,0}}, +/* 28381 */ {(12<<2)|2,{53,117,0}}, +/* 28382 */ {(12<<2)|2,{53,117,0}}, +/* 28383 */ {(12<<2)|2,{53,117,0}}, +/* 28384 */ {(13<<2)|2,{53,58,0}}, +/* 28385 */ {(13<<2)|2,{53,58,0}}, +/* 28386 */ {(13<<2)|2,{53,58,0}}, +/* 28387 */ {(13<<2)|2,{53,58,0}}, +/* 28388 */ {(13<<2)|2,{53,58,0}}, +/* 28389 */ {(13<<2)|2,{53,58,0}}, +/* 28390 */ {(13<<2)|2,{53,58,0}}, +/* 28391 */ {(13<<2)|2,{53,58,0}}, +/* 28392 */ {(13<<2)|2,{53,66,0}}, +/* 28393 */ {(13<<2)|2,{53,66,0}}, +/* 28394 */ {(13<<2)|2,{53,66,0}}, +/* 28395 */ {(13<<2)|2,{53,66,0}}, +/* 28396 */ {(13<<2)|2,{53,66,0}}, +/* 28397 */ {(13<<2)|2,{53,66,0}}, +/* 28398 */ {(13<<2)|2,{53,66,0}}, +/* 28399 */ {(13<<2)|2,{53,66,0}}, +/* 28400 */ {(13<<2)|2,{53,67,0}}, +/* 28401 */ {(13<<2)|2,{53,67,0}}, +/* 28402 */ {(13<<2)|2,{53,67,0}}, +/* 28403 */ {(13<<2)|2,{53,67,0}}, +/* 28404 */ {(13<<2)|2,{53,67,0}}, +/* 28405 */ {(13<<2)|2,{53,67,0}}, +/* 28406 */ {(13<<2)|2,{53,67,0}}, +/* 28407 */ {(13<<2)|2,{53,67,0}}, +/* 28408 */ {(13<<2)|2,{53,68,0}}, +/* 28409 */ {(13<<2)|2,{53,68,0}}, +/* 28410 */ {(13<<2)|2,{53,68,0}}, +/* 28411 */ {(13<<2)|2,{53,68,0}}, +/* 28412 */ {(13<<2)|2,{53,68,0}}, +/* 28413 */ {(13<<2)|2,{53,68,0}}, +/* 28414 */ {(13<<2)|2,{53,68,0}}, +/* 28415 */ {(13<<2)|2,{53,68,0}}, +/* 28416 */ {(13<<2)|2,{53,69,0}}, +/* 28417 */ {(13<<2)|2,{53,69,0}}, +/* 28418 */ {(13<<2)|2,{53,69,0}}, +/* 28419 */ {(13<<2)|2,{53,69,0}}, +/* 28420 */ {(13<<2)|2,{53,69,0}}, +/* 28421 */ {(13<<2)|2,{53,69,0}}, +/* 28422 */ {(13<<2)|2,{53,69,0}}, +/* 28423 */ {(13<<2)|2,{53,69,0}}, +/* 28424 */ {(13<<2)|2,{53,70,0}}, +/* 28425 */ {(13<<2)|2,{53,70,0}}, +/* 28426 */ {(13<<2)|2,{53,70,0}}, +/* 28427 */ {(13<<2)|2,{53,70,0}}, +/* 28428 */ {(13<<2)|2,{53,70,0}}, +/* 28429 */ {(13<<2)|2,{53,70,0}}, +/* 28430 */ {(13<<2)|2,{53,70,0}}, +/* 28431 */ {(13<<2)|2,{53,70,0}}, +/* 28432 */ {(13<<2)|2,{53,71,0}}, +/* 28433 */ {(13<<2)|2,{53,71,0}}, +/* 28434 */ {(13<<2)|2,{53,71,0}}, +/* 28435 */ {(13<<2)|2,{53,71,0}}, +/* 28436 */ {(13<<2)|2,{53,71,0}}, +/* 28437 */ {(13<<2)|2,{53,71,0}}, +/* 28438 */ {(13<<2)|2,{53,71,0}}, +/* 28439 */ {(13<<2)|2,{53,71,0}}, +/* 28440 */ {(13<<2)|2,{53,72,0}}, +/* 28441 */ {(13<<2)|2,{53,72,0}}, +/* 28442 */ {(13<<2)|2,{53,72,0}}, +/* 28443 */ {(13<<2)|2,{53,72,0}}, +/* 28444 */ {(13<<2)|2,{53,72,0}}, +/* 28445 */ {(13<<2)|2,{53,72,0}}, +/* 28446 */ {(13<<2)|2,{53,72,0}}, +/* 28447 */ {(13<<2)|2,{53,72,0}}, +/* 28448 */ {(13<<2)|2,{53,73,0}}, +/* 28449 */ {(13<<2)|2,{53,73,0}}, +/* 28450 */ {(13<<2)|2,{53,73,0}}, +/* 28451 */ {(13<<2)|2,{53,73,0}}, +/* 28452 */ {(13<<2)|2,{53,73,0}}, +/* 28453 */ {(13<<2)|2,{53,73,0}}, +/* 28454 */ {(13<<2)|2,{53,73,0}}, +/* 28455 */ {(13<<2)|2,{53,73,0}}, +/* 28456 */ {(13<<2)|2,{53,74,0}}, +/* 28457 */ {(13<<2)|2,{53,74,0}}, +/* 28458 */ {(13<<2)|2,{53,74,0}}, +/* 28459 */ {(13<<2)|2,{53,74,0}}, +/* 28460 */ {(13<<2)|2,{53,74,0}}, +/* 28461 */ {(13<<2)|2,{53,74,0}}, +/* 28462 */ {(13<<2)|2,{53,74,0}}, +/* 28463 */ {(13<<2)|2,{53,74,0}}, +/* 28464 */ {(13<<2)|2,{53,75,0}}, +/* 28465 */ {(13<<2)|2,{53,75,0}}, +/* 28466 */ {(13<<2)|2,{53,75,0}}, +/* 28467 */ {(13<<2)|2,{53,75,0}}, +/* 28468 */ {(13<<2)|2,{53,75,0}}, +/* 28469 */ {(13<<2)|2,{53,75,0}}, +/* 28470 */ {(13<<2)|2,{53,75,0}}, +/* 28471 */ {(13<<2)|2,{53,75,0}}, +/* 28472 */ {(13<<2)|2,{53,76,0}}, +/* 28473 */ {(13<<2)|2,{53,76,0}}, +/* 28474 */ {(13<<2)|2,{53,76,0}}, +/* 28475 */ {(13<<2)|2,{53,76,0}}, +/* 28476 */ {(13<<2)|2,{53,76,0}}, +/* 28477 */ {(13<<2)|2,{53,76,0}}, +/* 28478 */ {(13<<2)|2,{53,76,0}}, +/* 28479 */ {(13<<2)|2,{53,76,0}}, +/* 28480 */ {(13<<2)|2,{53,77,0}}, +/* 28481 */ {(13<<2)|2,{53,77,0}}, +/* 28482 */ {(13<<2)|2,{53,77,0}}, +/* 28483 */ {(13<<2)|2,{53,77,0}}, +/* 28484 */ {(13<<2)|2,{53,77,0}}, +/* 28485 */ {(13<<2)|2,{53,77,0}}, +/* 28486 */ {(13<<2)|2,{53,77,0}}, +/* 28487 */ {(13<<2)|2,{53,77,0}}, +/* 28488 */ {(13<<2)|2,{53,78,0}}, +/* 28489 */ {(13<<2)|2,{53,78,0}}, +/* 28490 */ {(13<<2)|2,{53,78,0}}, +/* 28491 */ {(13<<2)|2,{53,78,0}}, +/* 28492 */ {(13<<2)|2,{53,78,0}}, +/* 28493 */ {(13<<2)|2,{53,78,0}}, +/* 28494 */ {(13<<2)|2,{53,78,0}}, +/* 28495 */ {(13<<2)|2,{53,78,0}}, +/* 28496 */ {(13<<2)|2,{53,79,0}}, +/* 28497 */ {(13<<2)|2,{53,79,0}}, +/* 28498 */ {(13<<2)|2,{53,79,0}}, +/* 28499 */ {(13<<2)|2,{53,79,0}}, +/* 28500 */ {(13<<2)|2,{53,79,0}}, +/* 28501 */ {(13<<2)|2,{53,79,0}}, +/* 28502 */ {(13<<2)|2,{53,79,0}}, +/* 28503 */ {(13<<2)|2,{53,79,0}}, +/* 28504 */ {(13<<2)|2,{53,80,0}}, +/* 28505 */ {(13<<2)|2,{53,80,0}}, +/* 28506 */ {(13<<2)|2,{53,80,0}}, +/* 28507 */ {(13<<2)|2,{53,80,0}}, +/* 28508 */ {(13<<2)|2,{53,80,0}}, +/* 28509 */ {(13<<2)|2,{53,80,0}}, +/* 28510 */ {(13<<2)|2,{53,80,0}}, +/* 28511 */ {(13<<2)|2,{53,80,0}}, +/* 28512 */ {(13<<2)|2,{53,81,0}}, +/* 28513 */ {(13<<2)|2,{53,81,0}}, +/* 28514 */ {(13<<2)|2,{53,81,0}}, +/* 28515 */ {(13<<2)|2,{53,81,0}}, +/* 28516 */ {(13<<2)|2,{53,81,0}}, +/* 28517 */ {(13<<2)|2,{53,81,0}}, +/* 28518 */ {(13<<2)|2,{53,81,0}}, +/* 28519 */ {(13<<2)|2,{53,81,0}}, +/* 28520 */ {(13<<2)|2,{53,82,0}}, +/* 28521 */ {(13<<2)|2,{53,82,0}}, +/* 28522 */ {(13<<2)|2,{53,82,0}}, +/* 28523 */ {(13<<2)|2,{53,82,0}}, +/* 28524 */ {(13<<2)|2,{53,82,0}}, +/* 28525 */ {(13<<2)|2,{53,82,0}}, +/* 28526 */ {(13<<2)|2,{53,82,0}}, +/* 28527 */ {(13<<2)|2,{53,82,0}}, +/* 28528 */ {(13<<2)|2,{53,83,0}}, +/* 28529 */ {(13<<2)|2,{53,83,0}}, +/* 28530 */ {(13<<2)|2,{53,83,0}}, +/* 28531 */ {(13<<2)|2,{53,83,0}}, +/* 28532 */ {(13<<2)|2,{53,83,0}}, +/* 28533 */ {(13<<2)|2,{53,83,0}}, +/* 28534 */ {(13<<2)|2,{53,83,0}}, +/* 28535 */ {(13<<2)|2,{53,83,0}}, +/* 28536 */ {(13<<2)|2,{53,84,0}}, +/* 28537 */ {(13<<2)|2,{53,84,0}}, +/* 28538 */ {(13<<2)|2,{53,84,0}}, +/* 28539 */ {(13<<2)|2,{53,84,0}}, +/* 28540 */ {(13<<2)|2,{53,84,0}}, +/* 28541 */ {(13<<2)|2,{53,84,0}}, +/* 28542 */ {(13<<2)|2,{53,84,0}}, +/* 28543 */ {(13<<2)|2,{53,84,0}}, +/* 28544 */ {(13<<2)|2,{53,85,0}}, +/* 28545 */ {(13<<2)|2,{53,85,0}}, +/* 28546 */ {(13<<2)|2,{53,85,0}}, +/* 28547 */ {(13<<2)|2,{53,85,0}}, +/* 28548 */ {(13<<2)|2,{53,85,0}}, +/* 28549 */ {(13<<2)|2,{53,85,0}}, +/* 28550 */ {(13<<2)|2,{53,85,0}}, +/* 28551 */ {(13<<2)|2,{53,85,0}}, +/* 28552 */ {(13<<2)|2,{53,86,0}}, +/* 28553 */ {(13<<2)|2,{53,86,0}}, +/* 28554 */ {(13<<2)|2,{53,86,0}}, +/* 28555 */ {(13<<2)|2,{53,86,0}}, +/* 28556 */ {(13<<2)|2,{53,86,0}}, +/* 28557 */ {(13<<2)|2,{53,86,0}}, +/* 28558 */ {(13<<2)|2,{53,86,0}}, +/* 28559 */ {(13<<2)|2,{53,86,0}}, +/* 28560 */ {(13<<2)|2,{53,87,0}}, +/* 28561 */ {(13<<2)|2,{53,87,0}}, +/* 28562 */ {(13<<2)|2,{53,87,0}}, +/* 28563 */ {(13<<2)|2,{53,87,0}}, +/* 28564 */ {(13<<2)|2,{53,87,0}}, +/* 28565 */ {(13<<2)|2,{53,87,0}}, +/* 28566 */ {(13<<2)|2,{53,87,0}}, +/* 28567 */ {(13<<2)|2,{53,87,0}}, +/* 28568 */ {(13<<2)|2,{53,89,0}}, +/* 28569 */ {(13<<2)|2,{53,89,0}}, +/* 28570 */ {(13<<2)|2,{53,89,0}}, +/* 28571 */ {(13<<2)|2,{53,89,0}}, +/* 28572 */ {(13<<2)|2,{53,89,0}}, +/* 28573 */ {(13<<2)|2,{53,89,0}}, +/* 28574 */ {(13<<2)|2,{53,89,0}}, +/* 28575 */ {(13<<2)|2,{53,89,0}}, +/* 28576 */ {(13<<2)|2,{53,106,0}}, +/* 28577 */ {(13<<2)|2,{53,106,0}}, +/* 28578 */ {(13<<2)|2,{53,106,0}}, +/* 28579 */ {(13<<2)|2,{53,106,0}}, +/* 28580 */ {(13<<2)|2,{53,106,0}}, +/* 28581 */ {(13<<2)|2,{53,106,0}}, +/* 28582 */ {(13<<2)|2,{53,106,0}}, +/* 28583 */ {(13<<2)|2,{53,106,0}}, +/* 28584 */ {(13<<2)|2,{53,107,0}}, +/* 28585 */ {(13<<2)|2,{53,107,0}}, +/* 28586 */ {(13<<2)|2,{53,107,0}}, +/* 28587 */ {(13<<2)|2,{53,107,0}}, +/* 28588 */ {(13<<2)|2,{53,107,0}}, +/* 28589 */ {(13<<2)|2,{53,107,0}}, +/* 28590 */ {(13<<2)|2,{53,107,0}}, +/* 28591 */ {(13<<2)|2,{53,107,0}}, +/* 28592 */ {(13<<2)|2,{53,113,0}}, +/* 28593 */ {(13<<2)|2,{53,113,0}}, +/* 28594 */ {(13<<2)|2,{53,113,0}}, +/* 28595 */ {(13<<2)|2,{53,113,0}}, +/* 28596 */ {(13<<2)|2,{53,113,0}}, +/* 28597 */ {(13<<2)|2,{53,113,0}}, +/* 28598 */ {(13<<2)|2,{53,113,0}}, +/* 28599 */ {(13<<2)|2,{53,113,0}}, +/* 28600 */ {(13<<2)|2,{53,118,0}}, +/* 28601 */ {(13<<2)|2,{53,118,0}}, +/* 28602 */ {(13<<2)|2,{53,118,0}}, +/* 28603 */ {(13<<2)|2,{53,118,0}}, +/* 28604 */ {(13<<2)|2,{53,118,0}}, +/* 28605 */ {(13<<2)|2,{53,118,0}}, +/* 28606 */ {(13<<2)|2,{53,118,0}}, +/* 28607 */ {(13<<2)|2,{53,118,0}}, +/* 28608 */ {(13<<2)|2,{53,119,0}}, +/* 28609 */ {(13<<2)|2,{53,119,0}}, +/* 28610 */ {(13<<2)|2,{53,119,0}}, +/* 28611 */ {(13<<2)|2,{53,119,0}}, +/* 28612 */ {(13<<2)|2,{53,119,0}}, +/* 28613 */ {(13<<2)|2,{53,119,0}}, +/* 28614 */ {(13<<2)|2,{53,119,0}}, +/* 28615 */ {(13<<2)|2,{53,119,0}}, +/* 28616 */ {(13<<2)|2,{53,120,0}}, +/* 28617 */ {(13<<2)|2,{53,120,0}}, +/* 28618 */ {(13<<2)|2,{53,120,0}}, +/* 28619 */ {(13<<2)|2,{53,120,0}}, +/* 28620 */ {(13<<2)|2,{53,120,0}}, +/* 28621 */ {(13<<2)|2,{53,120,0}}, +/* 28622 */ {(13<<2)|2,{53,120,0}}, +/* 28623 */ {(13<<2)|2,{53,120,0}}, +/* 28624 */ {(13<<2)|2,{53,121,0}}, +/* 28625 */ {(13<<2)|2,{53,121,0}}, +/* 28626 */ {(13<<2)|2,{53,121,0}}, +/* 28627 */ {(13<<2)|2,{53,121,0}}, +/* 28628 */ {(13<<2)|2,{53,121,0}}, +/* 28629 */ {(13<<2)|2,{53,121,0}}, +/* 28630 */ {(13<<2)|2,{53,121,0}}, +/* 28631 */ {(13<<2)|2,{53,121,0}}, +/* 28632 */ {(13<<2)|2,{53,122,0}}, +/* 28633 */ {(13<<2)|2,{53,122,0}}, +/* 28634 */ {(13<<2)|2,{53,122,0}}, +/* 28635 */ {(13<<2)|2,{53,122,0}}, +/* 28636 */ {(13<<2)|2,{53,122,0}}, +/* 28637 */ {(13<<2)|2,{53,122,0}}, +/* 28638 */ {(13<<2)|2,{53,122,0}}, +/* 28639 */ {(13<<2)|2,{53,122,0}}, +/* 28640 */ {(14<<2)|2,{53,38,0}}, +/* 28641 */ {(14<<2)|2,{53,38,0}}, +/* 28642 */ {(14<<2)|2,{53,38,0}}, +/* 28643 */ {(14<<2)|2,{53,38,0}}, +/* 28644 */ {(14<<2)|2,{53,42,0}}, +/* 28645 */ {(14<<2)|2,{53,42,0}}, +/* 28646 */ {(14<<2)|2,{53,42,0}}, +/* 28647 */ {(14<<2)|2,{53,42,0}}, +/* 28648 */ {(14<<2)|2,{53,44,0}}, +/* 28649 */ {(14<<2)|2,{53,44,0}}, +/* 28650 */ {(14<<2)|2,{53,44,0}}, +/* 28651 */ {(14<<2)|2,{53,44,0}}, +/* 28652 */ {(14<<2)|2,{53,59,0}}, +/* 28653 */ {(14<<2)|2,{53,59,0}}, +/* 28654 */ {(14<<2)|2,{53,59,0}}, +/* 28655 */ {(14<<2)|2,{53,59,0}}, +/* 28656 */ {(14<<2)|2,{53,88,0}}, +/* 28657 */ {(14<<2)|2,{53,88,0}}, +/* 28658 */ {(14<<2)|2,{53,88,0}}, +/* 28659 */ {(14<<2)|2,{53,88,0}}, +/* 28660 */ {(14<<2)|2,{53,90,0}}, +/* 28661 */ {(14<<2)|2,{53,90,0}}, +/* 28662 */ {(14<<2)|2,{53,90,0}}, +/* 28663 */ {(14<<2)|2,{53,90,0}}, +/* 28664 */ {(16<<2)|2,{53,33,0}}, +/* 28665 */ {(16<<2)|2,{53,34,0}}, +/* 28666 */ {(16<<2)|2,{53,40,0}}, +/* 28667 */ {(16<<2)|2,{53,41,0}}, +/* 28668 */ {(16<<2)|2,{53,63,0}}, +/* 28669 */ {(6<<2)|1,{53,0,0}}, +/* 28670 */ {(6<<2)|1,{53,0,0}}, +/* 28671 */ {(6<<2)|1,{53,0,0}}, +/* 28672 */ {(16<<2)|3,{54,48,48}}, +/* 28673 */ {(16<<2)|3,{54,48,49}}, +/* 28674 */ {(16<<2)|3,{54,48,50}}, +/* 28675 */ {(16<<2)|3,{54,48,97}}, +/* 28676 */ {(16<<2)|3,{54,48,99}}, +/* 28677 */ {(16<<2)|3,{54,48,101}}, +/* 28678 */ {(16<<2)|3,{54,48,105}}, +/* 28679 */ {(16<<2)|3,{54,48,111}}, +/* 28680 */ {(16<<2)|3,{54,48,115}}, +/* 28681 */ {(16<<2)|3,{54,48,116}}, +/* 28682 */ {(11<<2)|2,{54,48,0}}, +/* 28683 */ {(11<<2)|2,{54,48,0}}, +/* 28684 */ {(11<<2)|2,{54,48,0}}, +/* 28685 */ {(11<<2)|2,{54,48,0}}, +/* 28686 */ {(11<<2)|2,{54,48,0}}, +/* 28687 */ {(11<<2)|2,{54,48,0}}, +/* 28688 */ {(11<<2)|2,{54,48,0}}, +/* 28689 */ {(11<<2)|2,{54,48,0}}, +/* 28690 */ {(11<<2)|2,{54,48,0}}, +/* 28691 */ {(11<<2)|2,{54,48,0}}, +/* 28692 */ {(11<<2)|2,{54,48,0}}, +/* 28693 */ {(11<<2)|2,{54,48,0}}, +/* 28694 */ {(11<<2)|2,{54,48,0}}, +/* 28695 */ {(11<<2)|2,{54,48,0}}, +/* 28696 */ {(11<<2)|2,{54,48,0}}, +/* 28697 */ {(11<<2)|2,{54,48,0}}, +/* 28698 */ {(11<<2)|2,{54,48,0}}, +/* 28699 */ {(11<<2)|2,{54,48,0}}, +/* 28700 */ {(11<<2)|2,{54,48,0}}, +/* 28701 */ {(11<<2)|2,{54,48,0}}, +/* 28702 */ {(11<<2)|2,{54,48,0}}, +/* 28703 */ {(11<<2)|2,{54,48,0}}, +/* 28704 */ {(16<<2)|3,{54,49,48}}, +/* 28705 */ {(16<<2)|3,{54,49,49}}, +/* 28706 */ {(16<<2)|3,{54,49,50}}, +/* 28707 */ {(16<<2)|3,{54,49,97}}, +/* 28708 */ {(16<<2)|3,{54,49,99}}, +/* 28709 */ {(16<<2)|3,{54,49,101}}, +/* 28710 */ {(16<<2)|3,{54,49,105}}, +/* 28711 */ {(16<<2)|3,{54,49,111}}, +/* 28712 */ {(16<<2)|3,{54,49,115}}, +/* 28713 */ {(16<<2)|3,{54,49,116}}, +/* 28714 */ {(11<<2)|2,{54,49,0}}, +/* 28715 */ {(11<<2)|2,{54,49,0}}, +/* 28716 */ {(11<<2)|2,{54,49,0}}, +/* 28717 */ {(11<<2)|2,{54,49,0}}, +/* 28718 */ {(11<<2)|2,{54,49,0}}, +/* 28719 */ {(11<<2)|2,{54,49,0}}, +/* 28720 */ {(11<<2)|2,{54,49,0}}, +/* 28721 */ {(11<<2)|2,{54,49,0}}, +/* 28722 */ {(11<<2)|2,{54,49,0}}, +/* 28723 */ {(11<<2)|2,{54,49,0}}, +/* 28724 */ {(11<<2)|2,{54,49,0}}, +/* 28725 */ {(11<<2)|2,{54,49,0}}, +/* 28726 */ {(11<<2)|2,{54,49,0}}, +/* 28727 */ {(11<<2)|2,{54,49,0}}, +/* 28728 */ {(11<<2)|2,{54,49,0}}, +/* 28729 */ {(11<<2)|2,{54,49,0}}, +/* 28730 */ {(11<<2)|2,{54,49,0}}, +/* 28731 */ {(11<<2)|2,{54,49,0}}, +/* 28732 */ {(11<<2)|2,{54,49,0}}, +/* 28733 */ {(11<<2)|2,{54,49,0}}, +/* 28734 */ {(11<<2)|2,{54,49,0}}, +/* 28735 */ {(11<<2)|2,{54,49,0}}, +/* 28736 */ {(16<<2)|3,{54,50,48}}, +/* 28737 */ {(16<<2)|3,{54,50,49}}, +/* 28738 */ {(16<<2)|3,{54,50,50}}, +/* 28739 */ {(16<<2)|3,{54,50,97}}, +/* 28740 */ {(16<<2)|3,{54,50,99}}, +/* 28741 */ {(16<<2)|3,{54,50,101}}, +/* 28742 */ {(16<<2)|3,{54,50,105}}, +/* 28743 */ {(16<<2)|3,{54,50,111}}, +/* 28744 */ {(16<<2)|3,{54,50,115}}, +/* 28745 */ {(16<<2)|3,{54,50,116}}, +/* 28746 */ {(11<<2)|2,{54,50,0}}, +/* 28747 */ {(11<<2)|2,{54,50,0}}, +/* 28748 */ {(11<<2)|2,{54,50,0}}, +/* 28749 */ {(11<<2)|2,{54,50,0}}, +/* 28750 */ {(11<<2)|2,{54,50,0}}, +/* 28751 */ {(11<<2)|2,{54,50,0}}, +/* 28752 */ {(11<<2)|2,{54,50,0}}, +/* 28753 */ {(11<<2)|2,{54,50,0}}, +/* 28754 */ {(11<<2)|2,{54,50,0}}, +/* 28755 */ {(11<<2)|2,{54,50,0}}, +/* 28756 */ {(11<<2)|2,{54,50,0}}, +/* 28757 */ {(11<<2)|2,{54,50,0}}, +/* 28758 */ {(11<<2)|2,{54,50,0}}, +/* 28759 */ {(11<<2)|2,{54,50,0}}, +/* 28760 */ {(11<<2)|2,{54,50,0}}, +/* 28761 */ {(11<<2)|2,{54,50,0}}, +/* 28762 */ {(11<<2)|2,{54,50,0}}, +/* 28763 */ {(11<<2)|2,{54,50,0}}, +/* 28764 */ {(11<<2)|2,{54,50,0}}, +/* 28765 */ {(11<<2)|2,{54,50,0}}, +/* 28766 */ {(11<<2)|2,{54,50,0}}, +/* 28767 */ {(11<<2)|2,{54,50,0}}, +/* 28768 */ {(16<<2)|3,{54,97,48}}, +/* 28769 */ {(16<<2)|3,{54,97,49}}, +/* 28770 */ {(16<<2)|3,{54,97,50}}, +/* 28771 */ {(16<<2)|3,{54,97,97}}, +/* 28772 */ {(16<<2)|3,{54,97,99}}, +/* 28773 */ {(16<<2)|3,{54,97,101}}, +/* 28774 */ {(16<<2)|3,{54,97,105}}, +/* 28775 */ {(16<<2)|3,{54,97,111}}, +/* 28776 */ {(16<<2)|3,{54,97,115}}, +/* 28777 */ {(16<<2)|3,{54,97,116}}, +/* 28778 */ {(11<<2)|2,{54,97,0}}, +/* 28779 */ {(11<<2)|2,{54,97,0}}, +/* 28780 */ {(11<<2)|2,{54,97,0}}, +/* 28781 */ {(11<<2)|2,{54,97,0}}, +/* 28782 */ {(11<<2)|2,{54,97,0}}, +/* 28783 */ {(11<<2)|2,{54,97,0}}, +/* 28784 */ {(11<<2)|2,{54,97,0}}, +/* 28785 */ {(11<<2)|2,{54,97,0}}, +/* 28786 */ {(11<<2)|2,{54,97,0}}, +/* 28787 */ {(11<<2)|2,{54,97,0}}, +/* 28788 */ {(11<<2)|2,{54,97,0}}, +/* 28789 */ {(11<<2)|2,{54,97,0}}, +/* 28790 */ {(11<<2)|2,{54,97,0}}, +/* 28791 */ {(11<<2)|2,{54,97,0}}, +/* 28792 */ {(11<<2)|2,{54,97,0}}, +/* 28793 */ {(11<<2)|2,{54,97,0}}, +/* 28794 */ {(11<<2)|2,{54,97,0}}, +/* 28795 */ {(11<<2)|2,{54,97,0}}, +/* 28796 */ {(11<<2)|2,{54,97,0}}, +/* 28797 */ {(11<<2)|2,{54,97,0}}, +/* 28798 */ {(11<<2)|2,{54,97,0}}, +/* 28799 */ {(11<<2)|2,{54,97,0}}, +/* 28800 */ {(16<<2)|3,{54,99,48}}, +/* 28801 */ {(16<<2)|3,{54,99,49}}, +/* 28802 */ {(16<<2)|3,{54,99,50}}, +/* 28803 */ {(16<<2)|3,{54,99,97}}, +/* 28804 */ {(16<<2)|3,{54,99,99}}, +/* 28805 */ {(16<<2)|3,{54,99,101}}, +/* 28806 */ {(16<<2)|3,{54,99,105}}, +/* 28807 */ {(16<<2)|3,{54,99,111}}, +/* 28808 */ {(16<<2)|3,{54,99,115}}, +/* 28809 */ {(16<<2)|3,{54,99,116}}, +/* 28810 */ {(11<<2)|2,{54,99,0}}, +/* 28811 */ {(11<<2)|2,{54,99,0}}, +/* 28812 */ {(11<<2)|2,{54,99,0}}, +/* 28813 */ {(11<<2)|2,{54,99,0}}, +/* 28814 */ {(11<<2)|2,{54,99,0}}, +/* 28815 */ {(11<<2)|2,{54,99,0}}, +/* 28816 */ {(11<<2)|2,{54,99,0}}, +/* 28817 */ {(11<<2)|2,{54,99,0}}, +/* 28818 */ {(11<<2)|2,{54,99,0}}, +/* 28819 */ {(11<<2)|2,{54,99,0}}, +/* 28820 */ {(11<<2)|2,{54,99,0}}, +/* 28821 */ {(11<<2)|2,{54,99,0}}, +/* 28822 */ {(11<<2)|2,{54,99,0}}, +/* 28823 */ {(11<<2)|2,{54,99,0}}, +/* 28824 */ {(11<<2)|2,{54,99,0}}, +/* 28825 */ {(11<<2)|2,{54,99,0}}, +/* 28826 */ {(11<<2)|2,{54,99,0}}, +/* 28827 */ {(11<<2)|2,{54,99,0}}, +/* 28828 */ {(11<<2)|2,{54,99,0}}, +/* 28829 */ {(11<<2)|2,{54,99,0}}, +/* 28830 */ {(11<<2)|2,{54,99,0}}, +/* 28831 */ {(11<<2)|2,{54,99,0}}, +/* 28832 */ {(16<<2)|3,{54,101,48}}, +/* 28833 */ {(16<<2)|3,{54,101,49}}, +/* 28834 */ {(16<<2)|3,{54,101,50}}, +/* 28835 */ {(16<<2)|3,{54,101,97}}, +/* 28836 */ {(16<<2)|3,{54,101,99}}, +/* 28837 */ {(16<<2)|3,{54,101,101}}, +/* 28838 */ {(16<<2)|3,{54,101,105}}, +/* 28839 */ {(16<<2)|3,{54,101,111}}, +/* 28840 */ {(16<<2)|3,{54,101,115}}, +/* 28841 */ {(16<<2)|3,{54,101,116}}, +/* 28842 */ {(11<<2)|2,{54,101,0}}, +/* 28843 */ {(11<<2)|2,{54,101,0}}, +/* 28844 */ {(11<<2)|2,{54,101,0}}, +/* 28845 */ {(11<<2)|2,{54,101,0}}, +/* 28846 */ {(11<<2)|2,{54,101,0}}, +/* 28847 */ {(11<<2)|2,{54,101,0}}, +/* 28848 */ {(11<<2)|2,{54,101,0}}, +/* 28849 */ {(11<<2)|2,{54,101,0}}, +/* 28850 */ {(11<<2)|2,{54,101,0}}, +/* 28851 */ {(11<<2)|2,{54,101,0}}, +/* 28852 */ {(11<<2)|2,{54,101,0}}, +/* 28853 */ {(11<<2)|2,{54,101,0}}, +/* 28854 */ {(11<<2)|2,{54,101,0}}, +/* 28855 */ {(11<<2)|2,{54,101,0}}, +/* 28856 */ {(11<<2)|2,{54,101,0}}, +/* 28857 */ {(11<<2)|2,{54,101,0}}, +/* 28858 */ {(11<<2)|2,{54,101,0}}, +/* 28859 */ {(11<<2)|2,{54,101,0}}, +/* 28860 */ {(11<<2)|2,{54,101,0}}, +/* 28861 */ {(11<<2)|2,{54,101,0}}, +/* 28862 */ {(11<<2)|2,{54,101,0}}, +/* 28863 */ {(11<<2)|2,{54,101,0}}, +/* 28864 */ {(16<<2)|3,{54,105,48}}, +/* 28865 */ {(16<<2)|3,{54,105,49}}, +/* 28866 */ {(16<<2)|3,{54,105,50}}, +/* 28867 */ {(16<<2)|3,{54,105,97}}, +/* 28868 */ {(16<<2)|3,{54,105,99}}, +/* 28869 */ {(16<<2)|3,{54,105,101}}, +/* 28870 */ {(16<<2)|3,{54,105,105}}, +/* 28871 */ {(16<<2)|3,{54,105,111}}, +/* 28872 */ {(16<<2)|3,{54,105,115}}, +/* 28873 */ {(16<<2)|3,{54,105,116}}, +/* 28874 */ {(11<<2)|2,{54,105,0}}, +/* 28875 */ {(11<<2)|2,{54,105,0}}, +/* 28876 */ {(11<<2)|2,{54,105,0}}, +/* 28877 */ {(11<<2)|2,{54,105,0}}, +/* 28878 */ {(11<<2)|2,{54,105,0}}, +/* 28879 */ {(11<<2)|2,{54,105,0}}, +/* 28880 */ {(11<<2)|2,{54,105,0}}, +/* 28881 */ {(11<<2)|2,{54,105,0}}, +/* 28882 */ {(11<<2)|2,{54,105,0}}, +/* 28883 */ {(11<<2)|2,{54,105,0}}, +/* 28884 */ {(11<<2)|2,{54,105,0}}, +/* 28885 */ {(11<<2)|2,{54,105,0}}, +/* 28886 */ {(11<<2)|2,{54,105,0}}, +/* 28887 */ {(11<<2)|2,{54,105,0}}, +/* 28888 */ {(11<<2)|2,{54,105,0}}, +/* 28889 */ {(11<<2)|2,{54,105,0}}, +/* 28890 */ {(11<<2)|2,{54,105,0}}, +/* 28891 */ {(11<<2)|2,{54,105,0}}, +/* 28892 */ {(11<<2)|2,{54,105,0}}, +/* 28893 */ {(11<<2)|2,{54,105,0}}, +/* 28894 */ {(11<<2)|2,{54,105,0}}, +/* 28895 */ {(11<<2)|2,{54,105,0}}, +/* 28896 */ {(16<<2)|3,{54,111,48}}, +/* 28897 */ {(16<<2)|3,{54,111,49}}, +/* 28898 */ {(16<<2)|3,{54,111,50}}, +/* 28899 */ {(16<<2)|3,{54,111,97}}, +/* 28900 */ {(16<<2)|3,{54,111,99}}, +/* 28901 */ {(16<<2)|3,{54,111,101}}, +/* 28902 */ {(16<<2)|3,{54,111,105}}, +/* 28903 */ {(16<<2)|3,{54,111,111}}, +/* 28904 */ {(16<<2)|3,{54,111,115}}, +/* 28905 */ {(16<<2)|3,{54,111,116}}, +/* 28906 */ {(11<<2)|2,{54,111,0}}, +/* 28907 */ {(11<<2)|2,{54,111,0}}, +/* 28908 */ {(11<<2)|2,{54,111,0}}, +/* 28909 */ {(11<<2)|2,{54,111,0}}, +/* 28910 */ {(11<<2)|2,{54,111,0}}, +/* 28911 */ {(11<<2)|2,{54,111,0}}, +/* 28912 */ {(11<<2)|2,{54,111,0}}, +/* 28913 */ {(11<<2)|2,{54,111,0}}, +/* 28914 */ {(11<<2)|2,{54,111,0}}, +/* 28915 */ {(11<<2)|2,{54,111,0}}, +/* 28916 */ {(11<<2)|2,{54,111,0}}, +/* 28917 */ {(11<<2)|2,{54,111,0}}, +/* 28918 */ {(11<<2)|2,{54,111,0}}, +/* 28919 */ {(11<<2)|2,{54,111,0}}, +/* 28920 */ {(11<<2)|2,{54,111,0}}, +/* 28921 */ {(11<<2)|2,{54,111,0}}, +/* 28922 */ {(11<<2)|2,{54,111,0}}, +/* 28923 */ {(11<<2)|2,{54,111,0}}, +/* 28924 */ {(11<<2)|2,{54,111,0}}, +/* 28925 */ {(11<<2)|2,{54,111,0}}, +/* 28926 */ {(11<<2)|2,{54,111,0}}, +/* 28927 */ {(11<<2)|2,{54,111,0}}, +/* 28928 */ {(16<<2)|3,{54,115,48}}, +/* 28929 */ {(16<<2)|3,{54,115,49}}, +/* 28930 */ {(16<<2)|3,{54,115,50}}, +/* 28931 */ {(16<<2)|3,{54,115,97}}, +/* 28932 */ {(16<<2)|3,{54,115,99}}, +/* 28933 */ {(16<<2)|3,{54,115,101}}, +/* 28934 */ {(16<<2)|3,{54,115,105}}, +/* 28935 */ {(16<<2)|3,{54,115,111}}, +/* 28936 */ {(16<<2)|3,{54,115,115}}, +/* 28937 */ {(16<<2)|3,{54,115,116}}, +/* 28938 */ {(11<<2)|2,{54,115,0}}, +/* 28939 */ {(11<<2)|2,{54,115,0}}, +/* 28940 */ {(11<<2)|2,{54,115,0}}, +/* 28941 */ {(11<<2)|2,{54,115,0}}, +/* 28942 */ {(11<<2)|2,{54,115,0}}, +/* 28943 */ {(11<<2)|2,{54,115,0}}, +/* 28944 */ {(11<<2)|2,{54,115,0}}, +/* 28945 */ {(11<<2)|2,{54,115,0}}, +/* 28946 */ {(11<<2)|2,{54,115,0}}, +/* 28947 */ {(11<<2)|2,{54,115,0}}, +/* 28948 */ {(11<<2)|2,{54,115,0}}, +/* 28949 */ {(11<<2)|2,{54,115,0}}, +/* 28950 */ {(11<<2)|2,{54,115,0}}, +/* 28951 */ {(11<<2)|2,{54,115,0}}, +/* 28952 */ {(11<<2)|2,{54,115,0}}, +/* 28953 */ {(11<<2)|2,{54,115,0}}, +/* 28954 */ {(11<<2)|2,{54,115,0}}, +/* 28955 */ {(11<<2)|2,{54,115,0}}, +/* 28956 */ {(11<<2)|2,{54,115,0}}, +/* 28957 */ {(11<<2)|2,{54,115,0}}, +/* 28958 */ {(11<<2)|2,{54,115,0}}, +/* 28959 */ {(11<<2)|2,{54,115,0}}, +/* 28960 */ {(16<<2)|3,{54,116,48}}, +/* 28961 */ {(16<<2)|3,{54,116,49}}, +/* 28962 */ {(16<<2)|3,{54,116,50}}, +/* 28963 */ {(16<<2)|3,{54,116,97}}, +/* 28964 */ {(16<<2)|3,{54,116,99}}, +/* 28965 */ {(16<<2)|3,{54,116,101}}, +/* 28966 */ {(16<<2)|3,{54,116,105}}, +/* 28967 */ {(16<<2)|3,{54,116,111}}, +/* 28968 */ {(16<<2)|3,{54,116,115}}, +/* 28969 */ {(16<<2)|3,{54,116,116}}, +/* 28970 */ {(11<<2)|2,{54,116,0}}, +/* 28971 */ {(11<<2)|2,{54,116,0}}, +/* 28972 */ {(11<<2)|2,{54,116,0}}, +/* 28973 */ {(11<<2)|2,{54,116,0}}, +/* 28974 */ {(11<<2)|2,{54,116,0}}, +/* 28975 */ {(11<<2)|2,{54,116,0}}, +/* 28976 */ {(11<<2)|2,{54,116,0}}, +/* 28977 */ {(11<<2)|2,{54,116,0}}, +/* 28978 */ {(11<<2)|2,{54,116,0}}, +/* 28979 */ {(11<<2)|2,{54,116,0}}, +/* 28980 */ {(11<<2)|2,{54,116,0}}, +/* 28981 */ {(11<<2)|2,{54,116,0}}, +/* 28982 */ {(11<<2)|2,{54,116,0}}, +/* 28983 */ {(11<<2)|2,{54,116,0}}, +/* 28984 */ {(11<<2)|2,{54,116,0}}, +/* 28985 */ {(11<<2)|2,{54,116,0}}, +/* 28986 */ {(11<<2)|2,{54,116,0}}, +/* 28987 */ {(11<<2)|2,{54,116,0}}, +/* 28988 */ {(11<<2)|2,{54,116,0}}, +/* 28989 */ {(11<<2)|2,{54,116,0}}, +/* 28990 */ {(11<<2)|2,{54,116,0}}, +/* 28991 */ {(11<<2)|2,{54,116,0}}, +/* 28992 */ {(12<<2)|2,{54,32,0}}, +/* 28993 */ {(12<<2)|2,{54,32,0}}, +/* 28994 */ {(12<<2)|2,{54,32,0}}, +/* 28995 */ {(12<<2)|2,{54,32,0}}, +/* 28996 */ {(12<<2)|2,{54,32,0}}, +/* 28997 */ {(12<<2)|2,{54,32,0}}, +/* 28998 */ {(12<<2)|2,{54,32,0}}, +/* 28999 */ {(12<<2)|2,{54,32,0}}, +/* 29000 */ {(12<<2)|2,{54,32,0}}, +/* 29001 */ {(12<<2)|2,{54,32,0}}, +/* 29002 */ {(12<<2)|2,{54,32,0}}, +/* 29003 */ {(12<<2)|2,{54,32,0}}, +/* 29004 */ {(12<<2)|2,{54,32,0}}, +/* 29005 */ {(12<<2)|2,{54,32,0}}, +/* 29006 */ {(12<<2)|2,{54,32,0}}, +/* 29007 */ {(12<<2)|2,{54,32,0}}, +/* 29008 */ {(12<<2)|2,{54,37,0}}, +/* 29009 */ {(12<<2)|2,{54,37,0}}, +/* 29010 */ {(12<<2)|2,{54,37,0}}, +/* 29011 */ {(12<<2)|2,{54,37,0}}, +/* 29012 */ {(12<<2)|2,{54,37,0}}, +/* 29013 */ {(12<<2)|2,{54,37,0}}, +/* 29014 */ {(12<<2)|2,{54,37,0}}, +/* 29015 */ {(12<<2)|2,{54,37,0}}, +/* 29016 */ {(12<<2)|2,{54,37,0}}, +/* 29017 */ {(12<<2)|2,{54,37,0}}, +/* 29018 */ {(12<<2)|2,{54,37,0}}, +/* 29019 */ {(12<<2)|2,{54,37,0}}, +/* 29020 */ {(12<<2)|2,{54,37,0}}, +/* 29021 */ {(12<<2)|2,{54,37,0}}, +/* 29022 */ {(12<<2)|2,{54,37,0}}, +/* 29023 */ {(12<<2)|2,{54,37,0}}, +/* 29024 */ {(12<<2)|2,{54,45,0}}, +/* 29025 */ {(12<<2)|2,{54,45,0}}, +/* 29026 */ {(12<<2)|2,{54,45,0}}, +/* 29027 */ {(12<<2)|2,{54,45,0}}, +/* 29028 */ {(12<<2)|2,{54,45,0}}, +/* 29029 */ {(12<<2)|2,{54,45,0}}, +/* 29030 */ {(12<<2)|2,{54,45,0}}, +/* 29031 */ {(12<<2)|2,{54,45,0}}, +/* 29032 */ {(12<<2)|2,{54,45,0}}, +/* 29033 */ {(12<<2)|2,{54,45,0}}, +/* 29034 */ {(12<<2)|2,{54,45,0}}, +/* 29035 */ {(12<<2)|2,{54,45,0}}, +/* 29036 */ {(12<<2)|2,{54,45,0}}, +/* 29037 */ {(12<<2)|2,{54,45,0}}, +/* 29038 */ {(12<<2)|2,{54,45,0}}, +/* 29039 */ {(12<<2)|2,{54,45,0}}, +/* 29040 */ {(12<<2)|2,{54,46,0}}, +/* 29041 */ {(12<<2)|2,{54,46,0}}, +/* 29042 */ {(12<<2)|2,{54,46,0}}, +/* 29043 */ {(12<<2)|2,{54,46,0}}, +/* 29044 */ {(12<<2)|2,{54,46,0}}, +/* 29045 */ {(12<<2)|2,{54,46,0}}, +/* 29046 */ {(12<<2)|2,{54,46,0}}, +/* 29047 */ {(12<<2)|2,{54,46,0}}, +/* 29048 */ {(12<<2)|2,{54,46,0}}, +/* 29049 */ {(12<<2)|2,{54,46,0}}, +/* 29050 */ {(12<<2)|2,{54,46,0}}, +/* 29051 */ {(12<<2)|2,{54,46,0}}, +/* 29052 */ {(12<<2)|2,{54,46,0}}, +/* 29053 */ {(12<<2)|2,{54,46,0}}, +/* 29054 */ {(12<<2)|2,{54,46,0}}, +/* 29055 */ {(12<<2)|2,{54,46,0}}, +/* 29056 */ {(12<<2)|2,{54,47,0}}, +/* 29057 */ {(12<<2)|2,{54,47,0}}, +/* 29058 */ {(12<<2)|2,{54,47,0}}, +/* 29059 */ {(12<<2)|2,{54,47,0}}, +/* 29060 */ {(12<<2)|2,{54,47,0}}, +/* 29061 */ {(12<<2)|2,{54,47,0}}, +/* 29062 */ {(12<<2)|2,{54,47,0}}, +/* 29063 */ {(12<<2)|2,{54,47,0}}, +/* 29064 */ {(12<<2)|2,{54,47,0}}, +/* 29065 */ {(12<<2)|2,{54,47,0}}, +/* 29066 */ {(12<<2)|2,{54,47,0}}, +/* 29067 */ {(12<<2)|2,{54,47,0}}, +/* 29068 */ {(12<<2)|2,{54,47,0}}, +/* 29069 */ {(12<<2)|2,{54,47,0}}, +/* 29070 */ {(12<<2)|2,{54,47,0}}, +/* 29071 */ {(12<<2)|2,{54,47,0}}, +/* 29072 */ {(12<<2)|2,{54,51,0}}, +/* 29073 */ {(12<<2)|2,{54,51,0}}, +/* 29074 */ {(12<<2)|2,{54,51,0}}, +/* 29075 */ {(12<<2)|2,{54,51,0}}, +/* 29076 */ {(12<<2)|2,{54,51,0}}, +/* 29077 */ {(12<<2)|2,{54,51,0}}, +/* 29078 */ {(12<<2)|2,{54,51,0}}, +/* 29079 */ {(12<<2)|2,{54,51,0}}, +/* 29080 */ {(12<<2)|2,{54,51,0}}, +/* 29081 */ {(12<<2)|2,{54,51,0}}, +/* 29082 */ {(12<<2)|2,{54,51,0}}, +/* 29083 */ {(12<<2)|2,{54,51,0}}, +/* 29084 */ {(12<<2)|2,{54,51,0}}, +/* 29085 */ {(12<<2)|2,{54,51,0}}, +/* 29086 */ {(12<<2)|2,{54,51,0}}, +/* 29087 */ {(12<<2)|2,{54,51,0}}, +/* 29088 */ {(12<<2)|2,{54,52,0}}, +/* 29089 */ {(12<<2)|2,{54,52,0}}, +/* 29090 */ {(12<<2)|2,{54,52,0}}, +/* 29091 */ {(12<<2)|2,{54,52,0}}, +/* 29092 */ {(12<<2)|2,{54,52,0}}, +/* 29093 */ {(12<<2)|2,{54,52,0}}, +/* 29094 */ {(12<<2)|2,{54,52,0}}, +/* 29095 */ {(12<<2)|2,{54,52,0}}, +/* 29096 */ {(12<<2)|2,{54,52,0}}, +/* 29097 */ {(12<<2)|2,{54,52,0}}, +/* 29098 */ {(12<<2)|2,{54,52,0}}, +/* 29099 */ {(12<<2)|2,{54,52,0}}, +/* 29100 */ {(12<<2)|2,{54,52,0}}, +/* 29101 */ {(12<<2)|2,{54,52,0}}, +/* 29102 */ {(12<<2)|2,{54,52,0}}, +/* 29103 */ {(12<<2)|2,{54,52,0}}, +/* 29104 */ {(12<<2)|2,{54,53,0}}, +/* 29105 */ {(12<<2)|2,{54,53,0}}, +/* 29106 */ {(12<<2)|2,{54,53,0}}, +/* 29107 */ {(12<<2)|2,{54,53,0}}, +/* 29108 */ {(12<<2)|2,{54,53,0}}, +/* 29109 */ {(12<<2)|2,{54,53,0}}, +/* 29110 */ {(12<<2)|2,{54,53,0}}, +/* 29111 */ {(12<<2)|2,{54,53,0}}, +/* 29112 */ {(12<<2)|2,{54,53,0}}, +/* 29113 */ {(12<<2)|2,{54,53,0}}, +/* 29114 */ {(12<<2)|2,{54,53,0}}, +/* 29115 */ {(12<<2)|2,{54,53,0}}, +/* 29116 */ {(12<<2)|2,{54,53,0}}, +/* 29117 */ {(12<<2)|2,{54,53,0}}, +/* 29118 */ {(12<<2)|2,{54,53,0}}, +/* 29119 */ {(12<<2)|2,{54,53,0}}, +/* 29120 */ {(12<<2)|2,{54,54,0}}, +/* 29121 */ {(12<<2)|2,{54,54,0}}, +/* 29122 */ {(12<<2)|2,{54,54,0}}, +/* 29123 */ {(12<<2)|2,{54,54,0}}, +/* 29124 */ {(12<<2)|2,{54,54,0}}, +/* 29125 */ {(12<<2)|2,{54,54,0}}, +/* 29126 */ {(12<<2)|2,{54,54,0}}, +/* 29127 */ {(12<<2)|2,{54,54,0}}, +/* 29128 */ {(12<<2)|2,{54,54,0}}, +/* 29129 */ {(12<<2)|2,{54,54,0}}, +/* 29130 */ {(12<<2)|2,{54,54,0}}, +/* 29131 */ {(12<<2)|2,{54,54,0}}, +/* 29132 */ {(12<<2)|2,{54,54,0}}, +/* 29133 */ {(12<<2)|2,{54,54,0}}, +/* 29134 */ {(12<<2)|2,{54,54,0}}, +/* 29135 */ {(12<<2)|2,{54,54,0}}, +/* 29136 */ {(12<<2)|2,{54,55,0}}, +/* 29137 */ {(12<<2)|2,{54,55,0}}, +/* 29138 */ {(12<<2)|2,{54,55,0}}, +/* 29139 */ {(12<<2)|2,{54,55,0}}, +/* 29140 */ {(12<<2)|2,{54,55,0}}, +/* 29141 */ {(12<<2)|2,{54,55,0}}, +/* 29142 */ {(12<<2)|2,{54,55,0}}, +/* 29143 */ {(12<<2)|2,{54,55,0}}, +/* 29144 */ {(12<<2)|2,{54,55,0}}, +/* 29145 */ {(12<<2)|2,{54,55,0}}, +/* 29146 */ {(12<<2)|2,{54,55,0}}, +/* 29147 */ {(12<<2)|2,{54,55,0}}, +/* 29148 */ {(12<<2)|2,{54,55,0}}, +/* 29149 */ {(12<<2)|2,{54,55,0}}, +/* 29150 */ {(12<<2)|2,{54,55,0}}, +/* 29151 */ {(12<<2)|2,{54,55,0}}, +/* 29152 */ {(12<<2)|2,{54,56,0}}, +/* 29153 */ {(12<<2)|2,{54,56,0}}, +/* 29154 */ {(12<<2)|2,{54,56,0}}, +/* 29155 */ {(12<<2)|2,{54,56,0}}, +/* 29156 */ {(12<<2)|2,{54,56,0}}, +/* 29157 */ {(12<<2)|2,{54,56,0}}, +/* 29158 */ {(12<<2)|2,{54,56,0}}, +/* 29159 */ {(12<<2)|2,{54,56,0}}, +/* 29160 */ {(12<<2)|2,{54,56,0}}, +/* 29161 */ {(12<<2)|2,{54,56,0}}, +/* 29162 */ {(12<<2)|2,{54,56,0}}, +/* 29163 */ {(12<<2)|2,{54,56,0}}, +/* 29164 */ {(12<<2)|2,{54,56,0}}, +/* 29165 */ {(12<<2)|2,{54,56,0}}, +/* 29166 */ {(12<<2)|2,{54,56,0}}, +/* 29167 */ {(12<<2)|2,{54,56,0}}, +/* 29168 */ {(12<<2)|2,{54,57,0}}, +/* 29169 */ {(12<<2)|2,{54,57,0}}, +/* 29170 */ {(12<<2)|2,{54,57,0}}, +/* 29171 */ {(12<<2)|2,{54,57,0}}, +/* 29172 */ {(12<<2)|2,{54,57,0}}, +/* 29173 */ {(12<<2)|2,{54,57,0}}, +/* 29174 */ {(12<<2)|2,{54,57,0}}, +/* 29175 */ {(12<<2)|2,{54,57,0}}, +/* 29176 */ {(12<<2)|2,{54,57,0}}, +/* 29177 */ {(12<<2)|2,{54,57,0}}, +/* 29178 */ {(12<<2)|2,{54,57,0}}, +/* 29179 */ {(12<<2)|2,{54,57,0}}, +/* 29180 */ {(12<<2)|2,{54,57,0}}, +/* 29181 */ {(12<<2)|2,{54,57,0}}, +/* 29182 */ {(12<<2)|2,{54,57,0}}, +/* 29183 */ {(12<<2)|2,{54,57,0}}, +/* 29184 */ {(12<<2)|2,{54,61,0}}, +/* 29185 */ {(12<<2)|2,{54,61,0}}, +/* 29186 */ {(12<<2)|2,{54,61,0}}, +/* 29187 */ {(12<<2)|2,{54,61,0}}, +/* 29188 */ {(12<<2)|2,{54,61,0}}, +/* 29189 */ {(12<<2)|2,{54,61,0}}, +/* 29190 */ {(12<<2)|2,{54,61,0}}, +/* 29191 */ {(12<<2)|2,{54,61,0}}, +/* 29192 */ {(12<<2)|2,{54,61,0}}, +/* 29193 */ {(12<<2)|2,{54,61,0}}, +/* 29194 */ {(12<<2)|2,{54,61,0}}, +/* 29195 */ {(12<<2)|2,{54,61,0}}, +/* 29196 */ {(12<<2)|2,{54,61,0}}, +/* 29197 */ {(12<<2)|2,{54,61,0}}, +/* 29198 */ {(12<<2)|2,{54,61,0}}, +/* 29199 */ {(12<<2)|2,{54,61,0}}, +/* 29200 */ {(12<<2)|2,{54,65,0}}, +/* 29201 */ {(12<<2)|2,{54,65,0}}, +/* 29202 */ {(12<<2)|2,{54,65,0}}, +/* 29203 */ {(12<<2)|2,{54,65,0}}, +/* 29204 */ {(12<<2)|2,{54,65,0}}, +/* 29205 */ {(12<<2)|2,{54,65,0}}, +/* 29206 */ {(12<<2)|2,{54,65,0}}, +/* 29207 */ {(12<<2)|2,{54,65,0}}, +/* 29208 */ {(12<<2)|2,{54,65,0}}, +/* 29209 */ {(12<<2)|2,{54,65,0}}, +/* 29210 */ {(12<<2)|2,{54,65,0}}, +/* 29211 */ {(12<<2)|2,{54,65,0}}, +/* 29212 */ {(12<<2)|2,{54,65,0}}, +/* 29213 */ {(12<<2)|2,{54,65,0}}, +/* 29214 */ {(12<<2)|2,{54,65,0}}, +/* 29215 */ {(12<<2)|2,{54,65,0}}, +/* 29216 */ {(12<<2)|2,{54,95,0}}, +/* 29217 */ {(12<<2)|2,{54,95,0}}, +/* 29218 */ {(12<<2)|2,{54,95,0}}, +/* 29219 */ {(12<<2)|2,{54,95,0}}, +/* 29220 */ {(12<<2)|2,{54,95,0}}, +/* 29221 */ {(12<<2)|2,{54,95,0}}, +/* 29222 */ {(12<<2)|2,{54,95,0}}, +/* 29223 */ {(12<<2)|2,{54,95,0}}, +/* 29224 */ {(12<<2)|2,{54,95,0}}, +/* 29225 */ {(12<<2)|2,{54,95,0}}, +/* 29226 */ {(12<<2)|2,{54,95,0}}, +/* 29227 */ {(12<<2)|2,{54,95,0}}, +/* 29228 */ {(12<<2)|2,{54,95,0}}, +/* 29229 */ {(12<<2)|2,{54,95,0}}, +/* 29230 */ {(12<<2)|2,{54,95,0}}, +/* 29231 */ {(12<<2)|2,{54,95,0}}, +/* 29232 */ {(12<<2)|2,{54,98,0}}, +/* 29233 */ {(12<<2)|2,{54,98,0}}, +/* 29234 */ {(12<<2)|2,{54,98,0}}, +/* 29235 */ {(12<<2)|2,{54,98,0}}, +/* 29236 */ {(12<<2)|2,{54,98,0}}, +/* 29237 */ {(12<<2)|2,{54,98,0}}, +/* 29238 */ {(12<<2)|2,{54,98,0}}, +/* 29239 */ {(12<<2)|2,{54,98,0}}, +/* 29240 */ {(12<<2)|2,{54,98,0}}, +/* 29241 */ {(12<<2)|2,{54,98,0}}, +/* 29242 */ {(12<<2)|2,{54,98,0}}, +/* 29243 */ {(12<<2)|2,{54,98,0}}, +/* 29244 */ {(12<<2)|2,{54,98,0}}, +/* 29245 */ {(12<<2)|2,{54,98,0}}, +/* 29246 */ {(12<<2)|2,{54,98,0}}, +/* 29247 */ {(12<<2)|2,{54,98,0}}, +/* 29248 */ {(12<<2)|2,{54,100,0}}, +/* 29249 */ {(12<<2)|2,{54,100,0}}, +/* 29250 */ {(12<<2)|2,{54,100,0}}, +/* 29251 */ {(12<<2)|2,{54,100,0}}, +/* 29252 */ {(12<<2)|2,{54,100,0}}, +/* 29253 */ {(12<<2)|2,{54,100,0}}, +/* 29254 */ {(12<<2)|2,{54,100,0}}, +/* 29255 */ {(12<<2)|2,{54,100,0}}, +/* 29256 */ {(12<<2)|2,{54,100,0}}, +/* 29257 */ {(12<<2)|2,{54,100,0}}, +/* 29258 */ {(12<<2)|2,{54,100,0}}, +/* 29259 */ {(12<<2)|2,{54,100,0}}, +/* 29260 */ {(12<<2)|2,{54,100,0}}, +/* 29261 */ {(12<<2)|2,{54,100,0}}, +/* 29262 */ {(12<<2)|2,{54,100,0}}, +/* 29263 */ {(12<<2)|2,{54,100,0}}, +/* 29264 */ {(12<<2)|2,{54,102,0}}, +/* 29265 */ {(12<<2)|2,{54,102,0}}, +/* 29266 */ {(12<<2)|2,{54,102,0}}, +/* 29267 */ {(12<<2)|2,{54,102,0}}, +/* 29268 */ {(12<<2)|2,{54,102,0}}, +/* 29269 */ {(12<<2)|2,{54,102,0}}, +/* 29270 */ {(12<<2)|2,{54,102,0}}, +/* 29271 */ {(12<<2)|2,{54,102,0}}, +/* 29272 */ {(12<<2)|2,{54,102,0}}, +/* 29273 */ {(12<<2)|2,{54,102,0}}, +/* 29274 */ {(12<<2)|2,{54,102,0}}, +/* 29275 */ {(12<<2)|2,{54,102,0}}, +/* 29276 */ {(12<<2)|2,{54,102,0}}, +/* 29277 */ {(12<<2)|2,{54,102,0}}, +/* 29278 */ {(12<<2)|2,{54,102,0}}, +/* 29279 */ {(12<<2)|2,{54,102,0}}, +/* 29280 */ {(12<<2)|2,{54,103,0}}, +/* 29281 */ {(12<<2)|2,{54,103,0}}, +/* 29282 */ {(12<<2)|2,{54,103,0}}, +/* 29283 */ {(12<<2)|2,{54,103,0}}, +/* 29284 */ {(12<<2)|2,{54,103,0}}, +/* 29285 */ {(12<<2)|2,{54,103,0}}, +/* 29286 */ {(12<<2)|2,{54,103,0}}, +/* 29287 */ {(12<<2)|2,{54,103,0}}, +/* 29288 */ {(12<<2)|2,{54,103,0}}, +/* 29289 */ {(12<<2)|2,{54,103,0}}, +/* 29290 */ {(12<<2)|2,{54,103,0}}, +/* 29291 */ {(12<<2)|2,{54,103,0}}, +/* 29292 */ {(12<<2)|2,{54,103,0}}, +/* 29293 */ {(12<<2)|2,{54,103,0}}, +/* 29294 */ {(12<<2)|2,{54,103,0}}, +/* 29295 */ {(12<<2)|2,{54,103,0}}, +/* 29296 */ {(12<<2)|2,{54,104,0}}, +/* 29297 */ {(12<<2)|2,{54,104,0}}, +/* 29298 */ {(12<<2)|2,{54,104,0}}, +/* 29299 */ {(12<<2)|2,{54,104,0}}, +/* 29300 */ {(12<<2)|2,{54,104,0}}, +/* 29301 */ {(12<<2)|2,{54,104,0}}, +/* 29302 */ {(12<<2)|2,{54,104,0}}, +/* 29303 */ {(12<<2)|2,{54,104,0}}, +/* 29304 */ {(12<<2)|2,{54,104,0}}, +/* 29305 */ {(12<<2)|2,{54,104,0}}, +/* 29306 */ {(12<<2)|2,{54,104,0}}, +/* 29307 */ {(12<<2)|2,{54,104,0}}, +/* 29308 */ {(12<<2)|2,{54,104,0}}, +/* 29309 */ {(12<<2)|2,{54,104,0}}, +/* 29310 */ {(12<<2)|2,{54,104,0}}, +/* 29311 */ {(12<<2)|2,{54,104,0}}, +/* 29312 */ {(12<<2)|2,{54,108,0}}, +/* 29313 */ {(12<<2)|2,{54,108,0}}, +/* 29314 */ {(12<<2)|2,{54,108,0}}, +/* 29315 */ {(12<<2)|2,{54,108,0}}, +/* 29316 */ {(12<<2)|2,{54,108,0}}, +/* 29317 */ {(12<<2)|2,{54,108,0}}, +/* 29318 */ {(12<<2)|2,{54,108,0}}, +/* 29319 */ {(12<<2)|2,{54,108,0}}, +/* 29320 */ {(12<<2)|2,{54,108,0}}, +/* 29321 */ {(12<<2)|2,{54,108,0}}, +/* 29322 */ {(12<<2)|2,{54,108,0}}, +/* 29323 */ {(12<<2)|2,{54,108,0}}, +/* 29324 */ {(12<<2)|2,{54,108,0}}, +/* 29325 */ {(12<<2)|2,{54,108,0}}, +/* 29326 */ {(12<<2)|2,{54,108,0}}, +/* 29327 */ {(12<<2)|2,{54,108,0}}, +/* 29328 */ {(12<<2)|2,{54,109,0}}, +/* 29329 */ {(12<<2)|2,{54,109,0}}, +/* 29330 */ {(12<<2)|2,{54,109,0}}, +/* 29331 */ {(12<<2)|2,{54,109,0}}, +/* 29332 */ {(12<<2)|2,{54,109,0}}, +/* 29333 */ {(12<<2)|2,{54,109,0}}, +/* 29334 */ {(12<<2)|2,{54,109,0}}, +/* 29335 */ {(12<<2)|2,{54,109,0}}, +/* 29336 */ {(12<<2)|2,{54,109,0}}, +/* 29337 */ {(12<<2)|2,{54,109,0}}, +/* 29338 */ {(12<<2)|2,{54,109,0}}, +/* 29339 */ {(12<<2)|2,{54,109,0}}, +/* 29340 */ {(12<<2)|2,{54,109,0}}, +/* 29341 */ {(12<<2)|2,{54,109,0}}, +/* 29342 */ {(12<<2)|2,{54,109,0}}, +/* 29343 */ {(12<<2)|2,{54,109,0}}, +/* 29344 */ {(12<<2)|2,{54,110,0}}, +/* 29345 */ {(12<<2)|2,{54,110,0}}, +/* 29346 */ {(12<<2)|2,{54,110,0}}, +/* 29347 */ {(12<<2)|2,{54,110,0}}, +/* 29348 */ {(12<<2)|2,{54,110,0}}, +/* 29349 */ {(12<<2)|2,{54,110,0}}, +/* 29350 */ {(12<<2)|2,{54,110,0}}, +/* 29351 */ {(12<<2)|2,{54,110,0}}, +/* 29352 */ {(12<<2)|2,{54,110,0}}, +/* 29353 */ {(12<<2)|2,{54,110,0}}, +/* 29354 */ {(12<<2)|2,{54,110,0}}, +/* 29355 */ {(12<<2)|2,{54,110,0}}, +/* 29356 */ {(12<<2)|2,{54,110,0}}, +/* 29357 */ {(12<<2)|2,{54,110,0}}, +/* 29358 */ {(12<<2)|2,{54,110,0}}, +/* 29359 */ {(12<<2)|2,{54,110,0}}, +/* 29360 */ {(12<<2)|2,{54,112,0}}, +/* 29361 */ {(12<<2)|2,{54,112,0}}, +/* 29362 */ {(12<<2)|2,{54,112,0}}, +/* 29363 */ {(12<<2)|2,{54,112,0}}, +/* 29364 */ {(12<<2)|2,{54,112,0}}, +/* 29365 */ {(12<<2)|2,{54,112,0}}, +/* 29366 */ {(12<<2)|2,{54,112,0}}, +/* 29367 */ {(12<<2)|2,{54,112,0}}, +/* 29368 */ {(12<<2)|2,{54,112,0}}, +/* 29369 */ {(12<<2)|2,{54,112,0}}, +/* 29370 */ {(12<<2)|2,{54,112,0}}, +/* 29371 */ {(12<<2)|2,{54,112,0}}, +/* 29372 */ {(12<<2)|2,{54,112,0}}, +/* 29373 */ {(12<<2)|2,{54,112,0}}, +/* 29374 */ {(12<<2)|2,{54,112,0}}, +/* 29375 */ {(12<<2)|2,{54,112,0}}, +/* 29376 */ {(12<<2)|2,{54,114,0}}, +/* 29377 */ {(12<<2)|2,{54,114,0}}, +/* 29378 */ {(12<<2)|2,{54,114,0}}, +/* 29379 */ {(12<<2)|2,{54,114,0}}, +/* 29380 */ {(12<<2)|2,{54,114,0}}, +/* 29381 */ {(12<<2)|2,{54,114,0}}, +/* 29382 */ {(12<<2)|2,{54,114,0}}, +/* 29383 */ {(12<<2)|2,{54,114,0}}, +/* 29384 */ {(12<<2)|2,{54,114,0}}, +/* 29385 */ {(12<<2)|2,{54,114,0}}, +/* 29386 */ {(12<<2)|2,{54,114,0}}, +/* 29387 */ {(12<<2)|2,{54,114,0}}, +/* 29388 */ {(12<<2)|2,{54,114,0}}, +/* 29389 */ {(12<<2)|2,{54,114,0}}, +/* 29390 */ {(12<<2)|2,{54,114,0}}, +/* 29391 */ {(12<<2)|2,{54,114,0}}, +/* 29392 */ {(12<<2)|2,{54,117,0}}, +/* 29393 */ {(12<<2)|2,{54,117,0}}, +/* 29394 */ {(12<<2)|2,{54,117,0}}, +/* 29395 */ {(12<<2)|2,{54,117,0}}, +/* 29396 */ {(12<<2)|2,{54,117,0}}, +/* 29397 */ {(12<<2)|2,{54,117,0}}, +/* 29398 */ {(12<<2)|2,{54,117,0}}, +/* 29399 */ {(12<<2)|2,{54,117,0}}, +/* 29400 */ {(12<<2)|2,{54,117,0}}, +/* 29401 */ {(12<<2)|2,{54,117,0}}, +/* 29402 */ {(12<<2)|2,{54,117,0}}, +/* 29403 */ {(12<<2)|2,{54,117,0}}, +/* 29404 */ {(12<<2)|2,{54,117,0}}, +/* 29405 */ {(12<<2)|2,{54,117,0}}, +/* 29406 */ {(12<<2)|2,{54,117,0}}, +/* 29407 */ {(12<<2)|2,{54,117,0}}, +/* 29408 */ {(13<<2)|2,{54,58,0}}, +/* 29409 */ {(13<<2)|2,{54,58,0}}, +/* 29410 */ {(13<<2)|2,{54,58,0}}, +/* 29411 */ {(13<<2)|2,{54,58,0}}, +/* 29412 */ {(13<<2)|2,{54,58,0}}, +/* 29413 */ {(13<<2)|2,{54,58,0}}, +/* 29414 */ {(13<<2)|2,{54,58,0}}, +/* 29415 */ {(13<<2)|2,{54,58,0}}, +/* 29416 */ {(13<<2)|2,{54,66,0}}, +/* 29417 */ {(13<<2)|2,{54,66,0}}, +/* 29418 */ {(13<<2)|2,{54,66,0}}, +/* 29419 */ {(13<<2)|2,{54,66,0}}, +/* 29420 */ {(13<<2)|2,{54,66,0}}, +/* 29421 */ {(13<<2)|2,{54,66,0}}, +/* 29422 */ {(13<<2)|2,{54,66,0}}, +/* 29423 */ {(13<<2)|2,{54,66,0}}, +/* 29424 */ {(13<<2)|2,{54,67,0}}, +/* 29425 */ {(13<<2)|2,{54,67,0}}, +/* 29426 */ {(13<<2)|2,{54,67,0}}, +/* 29427 */ {(13<<2)|2,{54,67,0}}, +/* 29428 */ {(13<<2)|2,{54,67,0}}, +/* 29429 */ {(13<<2)|2,{54,67,0}}, +/* 29430 */ {(13<<2)|2,{54,67,0}}, +/* 29431 */ {(13<<2)|2,{54,67,0}}, +/* 29432 */ {(13<<2)|2,{54,68,0}}, +/* 29433 */ {(13<<2)|2,{54,68,0}}, +/* 29434 */ {(13<<2)|2,{54,68,0}}, +/* 29435 */ {(13<<2)|2,{54,68,0}}, +/* 29436 */ {(13<<2)|2,{54,68,0}}, +/* 29437 */ {(13<<2)|2,{54,68,0}}, +/* 29438 */ {(13<<2)|2,{54,68,0}}, +/* 29439 */ {(13<<2)|2,{54,68,0}}, +/* 29440 */ {(13<<2)|2,{54,69,0}}, +/* 29441 */ {(13<<2)|2,{54,69,0}}, +/* 29442 */ {(13<<2)|2,{54,69,0}}, +/* 29443 */ {(13<<2)|2,{54,69,0}}, +/* 29444 */ {(13<<2)|2,{54,69,0}}, +/* 29445 */ {(13<<2)|2,{54,69,0}}, +/* 29446 */ {(13<<2)|2,{54,69,0}}, +/* 29447 */ {(13<<2)|2,{54,69,0}}, +/* 29448 */ {(13<<2)|2,{54,70,0}}, +/* 29449 */ {(13<<2)|2,{54,70,0}}, +/* 29450 */ {(13<<2)|2,{54,70,0}}, +/* 29451 */ {(13<<2)|2,{54,70,0}}, +/* 29452 */ {(13<<2)|2,{54,70,0}}, +/* 29453 */ {(13<<2)|2,{54,70,0}}, +/* 29454 */ {(13<<2)|2,{54,70,0}}, +/* 29455 */ {(13<<2)|2,{54,70,0}}, +/* 29456 */ {(13<<2)|2,{54,71,0}}, +/* 29457 */ {(13<<2)|2,{54,71,0}}, +/* 29458 */ {(13<<2)|2,{54,71,0}}, +/* 29459 */ {(13<<2)|2,{54,71,0}}, +/* 29460 */ {(13<<2)|2,{54,71,0}}, +/* 29461 */ {(13<<2)|2,{54,71,0}}, +/* 29462 */ {(13<<2)|2,{54,71,0}}, +/* 29463 */ {(13<<2)|2,{54,71,0}}, +/* 29464 */ {(13<<2)|2,{54,72,0}}, +/* 29465 */ {(13<<2)|2,{54,72,0}}, +/* 29466 */ {(13<<2)|2,{54,72,0}}, +/* 29467 */ {(13<<2)|2,{54,72,0}}, +/* 29468 */ {(13<<2)|2,{54,72,0}}, +/* 29469 */ {(13<<2)|2,{54,72,0}}, +/* 29470 */ {(13<<2)|2,{54,72,0}}, +/* 29471 */ {(13<<2)|2,{54,72,0}}, +/* 29472 */ {(13<<2)|2,{54,73,0}}, +/* 29473 */ {(13<<2)|2,{54,73,0}}, +/* 29474 */ {(13<<2)|2,{54,73,0}}, +/* 29475 */ {(13<<2)|2,{54,73,0}}, +/* 29476 */ {(13<<2)|2,{54,73,0}}, +/* 29477 */ {(13<<2)|2,{54,73,0}}, +/* 29478 */ {(13<<2)|2,{54,73,0}}, +/* 29479 */ {(13<<2)|2,{54,73,0}}, +/* 29480 */ {(13<<2)|2,{54,74,0}}, +/* 29481 */ {(13<<2)|2,{54,74,0}}, +/* 29482 */ {(13<<2)|2,{54,74,0}}, +/* 29483 */ {(13<<2)|2,{54,74,0}}, +/* 29484 */ {(13<<2)|2,{54,74,0}}, +/* 29485 */ {(13<<2)|2,{54,74,0}}, +/* 29486 */ {(13<<2)|2,{54,74,0}}, +/* 29487 */ {(13<<2)|2,{54,74,0}}, +/* 29488 */ {(13<<2)|2,{54,75,0}}, +/* 29489 */ {(13<<2)|2,{54,75,0}}, +/* 29490 */ {(13<<2)|2,{54,75,0}}, +/* 29491 */ {(13<<2)|2,{54,75,0}}, +/* 29492 */ {(13<<2)|2,{54,75,0}}, +/* 29493 */ {(13<<2)|2,{54,75,0}}, +/* 29494 */ {(13<<2)|2,{54,75,0}}, +/* 29495 */ {(13<<2)|2,{54,75,0}}, +/* 29496 */ {(13<<2)|2,{54,76,0}}, +/* 29497 */ {(13<<2)|2,{54,76,0}}, +/* 29498 */ {(13<<2)|2,{54,76,0}}, +/* 29499 */ {(13<<2)|2,{54,76,0}}, +/* 29500 */ {(13<<2)|2,{54,76,0}}, +/* 29501 */ {(13<<2)|2,{54,76,0}}, +/* 29502 */ {(13<<2)|2,{54,76,0}}, +/* 29503 */ {(13<<2)|2,{54,76,0}}, +/* 29504 */ {(13<<2)|2,{54,77,0}}, +/* 29505 */ {(13<<2)|2,{54,77,0}}, +/* 29506 */ {(13<<2)|2,{54,77,0}}, +/* 29507 */ {(13<<2)|2,{54,77,0}}, +/* 29508 */ {(13<<2)|2,{54,77,0}}, +/* 29509 */ {(13<<2)|2,{54,77,0}}, +/* 29510 */ {(13<<2)|2,{54,77,0}}, +/* 29511 */ {(13<<2)|2,{54,77,0}}, +/* 29512 */ {(13<<2)|2,{54,78,0}}, +/* 29513 */ {(13<<2)|2,{54,78,0}}, +/* 29514 */ {(13<<2)|2,{54,78,0}}, +/* 29515 */ {(13<<2)|2,{54,78,0}}, +/* 29516 */ {(13<<2)|2,{54,78,0}}, +/* 29517 */ {(13<<2)|2,{54,78,0}}, +/* 29518 */ {(13<<2)|2,{54,78,0}}, +/* 29519 */ {(13<<2)|2,{54,78,0}}, +/* 29520 */ {(13<<2)|2,{54,79,0}}, +/* 29521 */ {(13<<2)|2,{54,79,0}}, +/* 29522 */ {(13<<2)|2,{54,79,0}}, +/* 29523 */ {(13<<2)|2,{54,79,0}}, +/* 29524 */ {(13<<2)|2,{54,79,0}}, +/* 29525 */ {(13<<2)|2,{54,79,0}}, +/* 29526 */ {(13<<2)|2,{54,79,0}}, +/* 29527 */ {(13<<2)|2,{54,79,0}}, +/* 29528 */ {(13<<2)|2,{54,80,0}}, +/* 29529 */ {(13<<2)|2,{54,80,0}}, +/* 29530 */ {(13<<2)|2,{54,80,0}}, +/* 29531 */ {(13<<2)|2,{54,80,0}}, +/* 29532 */ {(13<<2)|2,{54,80,0}}, +/* 29533 */ {(13<<2)|2,{54,80,0}}, +/* 29534 */ {(13<<2)|2,{54,80,0}}, +/* 29535 */ {(13<<2)|2,{54,80,0}}, +/* 29536 */ {(13<<2)|2,{54,81,0}}, +/* 29537 */ {(13<<2)|2,{54,81,0}}, +/* 29538 */ {(13<<2)|2,{54,81,0}}, +/* 29539 */ {(13<<2)|2,{54,81,0}}, +/* 29540 */ {(13<<2)|2,{54,81,0}}, +/* 29541 */ {(13<<2)|2,{54,81,0}}, +/* 29542 */ {(13<<2)|2,{54,81,0}}, +/* 29543 */ {(13<<2)|2,{54,81,0}}, +/* 29544 */ {(13<<2)|2,{54,82,0}}, +/* 29545 */ {(13<<2)|2,{54,82,0}}, +/* 29546 */ {(13<<2)|2,{54,82,0}}, +/* 29547 */ {(13<<2)|2,{54,82,0}}, +/* 29548 */ {(13<<2)|2,{54,82,0}}, +/* 29549 */ {(13<<2)|2,{54,82,0}}, +/* 29550 */ {(13<<2)|2,{54,82,0}}, +/* 29551 */ {(13<<2)|2,{54,82,0}}, +/* 29552 */ {(13<<2)|2,{54,83,0}}, +/* 29553 */ {(13<<2)|2,{54,83,0}}, +/* 29554 */ {(13<<2)|2,{54,83,0}}, +/* 29555 */ {(13<<2)|2,{54,83,0}}, +/* 29556 */ {(13<<2)|2,{54,83,0}}, +/* 29557 */ {(13<<2)|2,{54,83,0}}, +/* 29558 */ {(13<<2)|2,{54,83,0}}, +/* 29559 */ {(13<<2)|2,{54,83,0}}, +/* 29560 */ {(13<<2)|2,{54,84,0}}, +/* 29561 */ {(13<<2)|2,{54,84,0}}, +/* 29562 */ {(13<<2)|2,{54,84,0}}, +/* 29563 */ {(13<<2)|2,{54,84,0}}, +/* 29564 */ {(13<<2)|2,{54,84,0}}, +/* 29565 */ {(13<<2)|2,{54,84,0}}, +/* 29566 */ {(13<<2)|2,{54,84,0}}, +/* 29567 */ {(13<<2)|2,{54,84,0}}, +/* 29568 */ {(13<<2)|2,{54,85,0}}, +/* 29569 */ {(13<<2)|2,{54,85,0}}, +/* 29570 */ {(13<<2)|2,{54,85,0}}, +/* 29571 */ {(13<<2)|2,{54,85,0}}, +/* 29572 */ {(13<<2)|2,{54,85,0}}, +/* 29573 */ {(13<<2)|2,{54,85,0}}, +/* 29574 */ {(13<<2)|2,{54,85,0}}, +/* 29575 */ {(13<<2)|2,{54,85,0}}, +/* 29576 */ {(13<<2)|2,{54,86,0}}, +/* 29577 */ {(13<<2)|2,{54,86,0}}, +/* 29578 */ {(13<<2)|2,{54,86,0}}, +/* 29579 */ {(13<<2)|2,{54,86,0}}, +/* 29580 */ {(13<<2)|2,{54,86,0}}, +/* 29581 */ {(13<<2)|2,{54,86,0}}, +/* 29582 */ {(13<<2)|2,{54,86,0}}, +/* 29583 */ {(13<<2)|2,{54,86,0}}, +/* 29584 */ {(13<<2)|2,{54,87,0}}, +/* 29585 */ {(13<<2)|2,{54,87,0}}, +/* 29586 */ {(13<<2)|2,{54,87,0}}, +/* 29587 */ {(13<<2)|2,{54,87,0}}, +/* 29588 */ {(13<<2)|2,{54,87,0}}, +/* 29589 */ {(13<<2)|2,{54,87,0}}, +/* 29590 */ {(13<<2)|2,{54,87,0}}, +/* 29591 */ {(13<<2)|2,{54,87,0}}, +/* 29592 */ {(13<<2)|2,{54,89,0}}, +/* 29593 */ {(13<<2)|2,{54,89,0}}, +/* 29594 */ {(13<<2)|2,{54,89,0}}, +/* 29595 */ {(13<<2)|2,{54,89,0}}, +/* 29596 */ {(13<<2)|2,{54,89,0}}, +/* 29597 */ {(13<<2)|2,{54,89,0}}, +/* 29598 */ {(13<<2)|2,{54,89,0}}, +/* 29599 */ {(13<<2)|2,{54,89,0}}, +/* 29600 */ {(13<<2)|2,{54,106,0}}, +/* 29601 */ {(13<<2)|2,{54,106,0}}, +/* 29602 */ {(13<<2)|2,{54,106,0}}, +/* 29603 */ {(13<<2)|2,{54,106,0}}, +/* 29604 */ {(13<<2)|2,{54,106,0}}, +/* 29605 */ {(13<<2)|2,{54,106,0}}, +/* 29606 */ {(13<<2)|2,{54,106,0}}, +/* 29607 */ {(13<<2)|2,{54,106,0}}, +/* 29608 */ {(13<<2)|2,{54,107,0}}, +/* 29609 */ {(13<<2)|2,{54,107,0}}, +/* 29610 */ {(13<<2)|2,{54,107,0}}, +/* 29611 */ {(13<<2)|2,{54,107,0}}, +/* 29612 */ {(13<<2)|2,{54,107,0}}, +/* 29613 */ {(13<<2)|2,{54,107,0}}, +/* 29614 */ {(13<<2)|2,{54,107,0}}, +/* 29615 */ {(13<<2)|2,{54,107,0}}, +/* 29616 */ {(13<<2)|2,{54,113,0}}, +/* 29617 */ {(13<<2)|2,{54,113,0}}, +/* 29618 */ {(13<<2)|2,{54,113,0}}, +/* 29619 */ {(13<<2)|2,{54,113,0}}, +/* 29620 */ {(13<<2)|2,{54,113,0}}, +/* 29621 */ {(13<<2)|2,{54,113,0}}, +/* 29622 */ {(13<<2)|2,{54,113,0}}, +/* 29623 */ {(13<<2)|2,{54,113,0}}, +/* 29624 */ {(13<<2)|2,{54,118,0}}, +/* 29625 */ {(13<<2)|2,{54,118,0}}, +/* 29626 */ {(13<<2)|2,{54,118,0}}, +/* 29627 */ {(13<<2)|2,{54,118,0}}, +/* 29628 */ {(13<<2)|2,{54,118,0}}, +/* 29629 */ {(13<<2)|2,{54,118,0}}, +/* 29630 */ {(13<<2)|2,{54,118,0}}, +/* 29631 */ {(13<<2)|2,{54,118,0}}, +/* 29632 */ {(13<<2)|2,{54,119,0}}, +/* 29633 */ {(13<<2)|2,{54,119,0}}, +/* 29634 */ {(13<<2)|2,{54,119,0}}, +/* 29635 */ {(13<<2)|2,{54,119,0}}, +/* 29636 */ {(13<<2)|2,{54,119,0}}, +/* 29637 */ {(13<<2)|2,{54,119,0}}, +/* 29638 */ {(13<<2)|2,{54,119,0}}, +/* 29639 */ {(13<<2)|2,{54,119,0}}, +/* 29640 */ {(13<<2)|2,{54,120,0}}, +/* 29641 */ {(13<<2)|2,{54,120,0}}, +/* 29642 */ {(13<<2)|2,{54,120,0}}, +/* 29643 */ {(13<<2)|2,{54,120,0}}, +/* 29644 */ {(13<<2)|2,{54,120,0}}, +/* 29645 */ {(13<<2)|2,{54,120,0}}, +/* 29646 */ {(13<<2)|2,{54,120,0}}, +/* 29647 */ {(13<<2)|2,{54,120,0}}, +/* 29648 */ {(13<<2)|2,{54,121,0}}, +/* 29649 */ {(13<<2)|2,{54,121,0}}, +/* 29650 */ {(13<<2)|2,{54,121,0}}, +/* 29651 */ {(13<<2)|2,{54,121,0}}, +/* 29652 */ {(13<<2)|2,{54,121,0}}, +/* 29653 */ {(13<<2)|2,{54,121,0}}, +/* 29654 */ {(13<<2)|2,{54,121,0}}, +/* 29655 */ {(13<<2)|2,{54,121,0}}, +/* 29656 */ {(13<<2)|2,{54,122,0}}, +/* 29657 */ {(13<<2)|2,{54,122,0}}, +/* 29658 */ {(13<<2)|2,{54,122,0}}, +/* 29659 */ {(13<<2)|2,{54,122,0}}, +/* 29660 */ {(13<<2)|2,{54,122,0}}, +/* 29661 */ {(13<<2)|2,{54,122,0}}, +/* 29662 */ {(13<<2)|2,{54,122,0}}, +/* 29663 */ {(13<<2)|2,{54,122,0}}, +/* 29664 */ {(14<<2)|2,{54,38,0}}, +/* 29665 */ {(14<<2)|2,{54,38,0}}, +/* 29666 */ {(14<<2)|2,{54,38,0}}, +/* 29667 */ {(14<<2)|2,{54,38,0}}, +/* 29668 */ {(14<<2)|2,{54,42,0}}, +/* 29669 */ {(14<<2)|2,{54,42,0}}, +/* 29670 */ {(14<<2)|2,{54,42,0}}, +/* 29671 */ {(14<<2)|2,{54,42,0}}, +/* 29672 */ {(14<<2)|2,{54,44,0}}, +/* 29673 */ {(14<<2)|2,{54,44,0}}, +/* 29674 */ {(14<<2)|2,{54,44,0}}, +/* 29675 */ {(14<<2)|2,{54,44,0}}, +/* 29676 */ {(14<<2)|2,{54,59,0}}, +/* 29677 */ {(14<<2)|2,{54,59,0}}, +/* 29678 */ {(14<<2)|2,{54,59,0}}, +/* 29679 */ {(14<<2)|2,{54,59,0}}, +/* 29680 */ {(14<<2)|2,{54,88,0}}, +/* 29681 */ {(14<<2)|2,{54,88,0}}, +/* 29682 */ {(14<<2)|2,{54,88,0}}, +/* 29683 */ {(14<<2)|2,{54,88,0}}, +/* 29684 */ {(14<<2)|2,{54,90,0}}, +/* 29685 */ {(14<<2)|2,{54,90,0}}, +/* 29686 */ {(14<<2)|2,{54,90,0}}, +/* 29687 */ {(14<<2)|2,{54,90,0}}, +/* 29688 */ {(16<<2)|2,{54,33,0}}, +/* 29689 */ {(16<<2)|2,{54,34,0}}, +/* 29690 */ {(16<<2)|2,{54,40,0}}, +/* 29691 */ {(16<<2)|2,{54,41,0}}, +/* 29692 */ {(16<<2)|2,{54,63,0}}, +/* 29693 */ {(6<<2)|1,{54,0,0}}, +/* 29694 */ {(6<<2)|1,{54,0,0}}, +/* 29695 */ {(6<<2)|1,{54,0,0}}, +/* 29696 */ {(16<<2)|3,{55,48,48}}, +/* 29697 */ {(16<<2)|3,{55,48,49}}, +/* 29698 */ {(16<<2)|3,{55,48,50}}, +/* 29699 */ {(16<<2)|3,{55,48,97}}, +/* 29700 */ {(16<<2)|3,{55,48,99}}, +/* 29701 */ {(16<<2)|3,{55,48,101}}, +/* 29702 */ {(16<<2)|3,{55,48,105}}, +/* 29703 */ {(16<<2)|3,{55,48,111}}, +/* 29704 */ {(16<<2)|3,{55,48,115}}, +/* 29705 */ {(16<<2)|3,{55,48,116}}, +/* 29706 */ {(11<<2)|2,{55,48,0}}, +/* 29707 */ {(11<<2)|2,{55,48,0}}, +/* 29708 */ {(11<<2)|2,{55,48,0}}, +/* 29709 */ {(11<<2)|2,{55,48,0}}, +/* 29710 */ {(11<<2)|2,{55,48,0}}, +/* 29711 */ {(11<<2)|2,{55,48,0}}, +/* 29712 */ {(11<<2)|2,{55,48,0}}, +/* 29713 */ {(11<<2)|2,{55,48,0}}, +/* 29714 */ {(11<<2)|2,{55,48,0}}, +/* 29715 */ {(11<<2)|2,{55,48,0}}, +/* 29716 */ {(11<<2)|2,{55,48,0}}, +/* 29717 */ {(11<<2)|2,{55,48,0}}, +/* 29718 */ {(11<<2)|2,{55,48,0}}, +/* 29719 */ {(11<<2)|2,{55,48,0}}, +/* 29720 */ {(11<<2)|2,{55,48,0}}, +/* 29721 */ {(11<<2)|2,{55,48,0}}, +/* 29722 */ {(11<<2)|2,{55,48,0}}, +/* 29723 */ {(11<<2)|2,{55,48,0}}, +/* 29724 */ {(11<<2)|2,{55,48,0}}, +/* 29725 */ {(11<<2)|2,{55,48,0}}, +/* 29726 */ {(11<<2)|2,{55,48,0}}, +/* 29727 */ {(11<<2)|2,{55,48,0}}, +/* 29728 */ {(16<<2)|3,{55,49,48}}, +/* 29729 */ {(16<<2)|3,{55,49,49}}, +/* 29730 */ {(16<<2)|3,{55,49,50}}, +/* 29731 */ {(16<<2)|3,{55,49,97}}, +/* 29732 */ {(16<<2)|3,{55,49,99}}, +/* 29733 */ {(16<<2)|3,{55,49,101}}, +/* 29734 */ {(16<<2)|3,{55,49,105}}, +/* 29735 */ {(16<<2)|3,{55,49,111}}, +/* 29736 */ {(16<<2)|3,{55,49,115}}, +/* 29737 */ {(16<<2)|3,{55,49,116}}, +/* 29738 */ {(11<<2)|2,{55,49,0}}, +/* 29739 */ {(11<<2)|2,{55,49,0}}, +/* 29740 */ {(11<<2)|2,{55,49,0}}, +/* 29741 */ {(11<<2)|2,{55,49,0}}, +/* 29742 */ {(11<<2)|2,{55,49,0}}, +/* 29743 */ {(11<<2)|2,{55,49,0}}, +/* 29744 */ {(11<<2)|2,{55,49,0}}, +/* 29745 */ {(11<<2)|2,{55,49,0}}, +/* 29746 */ {(11<<2)|2,{55,49,0}}, +/* 29747 */ {(11<<2)|2,{55,49,0}}, +/* 29748 */ {(11<<2)|2,{55,49,0}}, +/* 29749 */ {(11<<2)|2,{55,49,0}}, +/* 29750 */ {(11<<2)|2,{55,49,0}}, +/* 29751 */ {(11<<2)|2,{55,49,0}}, +/* 29752 */ {(11<<2)|2,{55,49,0}}, +/* 29753 */ {(11<<2)|2,{55,49,0}}, +/* 29754 */ {(11<<2)|2,{55,49,0}}, +/* 29755 */ {(11<<2)|2,{55,49,0}}, +/* 29756 */ {(11<<2)|2,{55,49,0}}, +/* 29757 */ {(11<<2)|2,{55,49,0}}, +/* 29758 */ {(11<<2)|2,{55,49,0}}, +/* 29759 */ {(11<<2)|2,{55,49,0}}, +/* 29760 */ {(16<<2)|3,{55,50,48}}, +/* 29761 */ {(16<<2)|3,{55,50,49}}, +/* 29762 */ {(16<<2)|3,{55,50,50}}, +/* 29763 */ {(16<<2)|3,{55,50,97}}, +/* 29764 */ {(16<<2)|3,{55,50,99}}, +/* 29765 */ {(16<<2)|3,{55,50,101}}, +/* 29766 */ {(16<<2)|3,{55,50,105}}, +/* 29767 */ {(16<<2)|3,{55,50,111}}, +/* 29768 */ {(16<<2)|3,{55,50,115}}, +/* 29769 */ {(16<<2)|3,{55,50,116}}, +/* 29770 */ {(11<<2)|2,{55,50,0}}, +/* 29771 */ {(11<<2)|2,{55,50,0}}, +/* 29772 */ {(11<<2)|2,{55,50,0}}, +/* 29773 */ {(11<<2)|2,{55,50,0}}, +/* 29774 */ {(11<<2)|2,{55,50,0}}, +/* 29775 */ {(11<<2)|2,{55,50,0}}, +/* 29776 */ {(11<<2)|2,{55,50,0}}, +/* 29777 */ {(11<<2)|2,{55,50,0}}, +/* 29778 */ {(11<<2)|2,{55,50,0}}, +/* 29779 */ {(11<<2)|2,{55,50,0}}, +/* 29780 */ {(11<<2)|2,{55,50,0}}, +/* 29781 */ {(11<<2)|2,{55,50,0}}, +/* 29782 */ {(11<<2)|2,{55,50,0}}, +/* 29783 */ {(11<<2)|2,{55,50,0}}, +/* 29784 */ {(11<<2)|2,{55,50,0}}, +/* 29785 */ {(11<<2)|2,{55,50,0}}, +/* 29786 */ {(11<<2)|2,{55,50,0}}, +/* 29787 */ {(11<<2)|2,{55,50,0}}, +/* 29788 */ {(11<<2)|2,{55,50,0}}, +/* 29789 */ {(11<<2)|2,{55,50,0}}, +/* 29790 */ {(11<<2)|2,{55,50,0}}, +/* 29791 */ {(11<<2)|2,{55,50,0}}, +/* 29792 */ {(16<<2)|3,{55,97,48}}, +/* 29793 */ {(16<<2)|3,{55,97,49}}, +/* 29794 */ {(16<<2)|3,{55,97,50}}, +/* 29795 */ {(16<<2)|3,{55,97,97}}, +/* 29796 */ {(16<<2)|3,{55,97,99}}, +/* 29797 */ {(16<<2)|3,{55,97,101}}, +/* 29798 */ {(16<<2)|3,{55,97,105}}, +/* 29799 */ {(16<<2)|3,{55,97,111}}, +/* 29800 */ {(16<<2)|3,{55,97,115}}, +/* 29801 */ {(16<<2)|3,{55,97,116}}, +/* 29802 */ {(11<<2)|2,{55,97,0}}, +/* 29803 */ {(11<<2)|2,{55,97,0}}, +/* 29804 */ {(11<<2)|2,{55,97,0}}, +/* 29805 */ {(11<<2)|2,{55,97,0}}, +/* 29806 */ {(11<<2)|2,{55,97,0}}, +/* 29807 */ {(11<<2)|2,{55,97,0}}, +/* 29808 */ {(11<<2)|2,{55,97,0}}, +/* 29809 */ {(11<<2)|2,{55,97,0}}, +/* 29810 */ {(11<<2)|2,{55,97,0}}, +/* 29811 */ {(11<<2)|2,{55,97,0}}, +/* 29812 */ {(11<<2)|2,{55,97,0}}, +/* 29813 */ {(11<<2)|2,{55,97,0}}, +/* 29814 */ {(11<<2)|2,{55,97,0}}, +/* 29815 */ {(11<<2)|2,{55,97,0}}, +/* 29816 */ {(11<<2)|2,{55,97,0}}, +/* 29817 */ {(11<<2)|2,{55,97,0}}, +/* 29818 */ {(11<<2)|2,{55,97,0}}, +/* 29819 */ {(11<<2)|2,{55,97,0}}, +/* 29820 */ {(11<<2)|2,{55,97,0}}, +/* 29821 */ {(11<<2)|2,{55,97,0}}, +/* 29822 */ {(11<<2)|2,{55,97,0}}, +/* 29823 */ {(11<<2)|2,{55,97,0}}, +/* 29824 */ {(16<<2)|3,{55,99,48}}, +/* 29825 */ {(16<<2)|3,{55,99,49}}, +/* 29826 */ {(16<<2)|3,{55,99,50}}, +/* 29827 */ {(16<<2)|3,{55,99,97}}, +/* 29828 */ {(16<<2)|3,{55,99,99}}, +/* 29829 */ {(16<<2)|3,{55,99,101}}, +/* 29830 */ {(16<<2)|3,{55,99,105}}, +/* 29831 */ {(16<<2)|3,{55,99,111}}, +/* 29832 */ {(16<<2)|3,{55,99,115}}, +/* 29833 */ {(16<<2)|3,{55,99,116}}, +/* 29834 */ {(11<<2)|2,{55,99,0}}, +/* 29835 */ {(11<<2)|2,{55,99,0}}, +/* 29836 */ {(11<<2)|2,{55,99,0}}, +/* 29837 */ {(11<<2)|2,{55,99,0}}, +/* 29838 */ {(11<<2)|2,{55,99,0}}, +/* 29839 */ {(11<<2)|2,{55,99,0}}, +/* 29840 */ {(11<<2)|2,{55,99,0}}, +/* 29841 */ {(11<<2)|2,{55,99,0}}, +/* 29842 */ {(11<<2)|2,{55,99,0}}, +/* 29843 */ {(11<<2)|2,{55,99,0}}, +/* 29844 */ {(11<<2)|2,{55,99,0}}, +/* 29845 */ {(11<<2)|2,{55,99,0}}, +/* 29846 */ {(11<<2)|2,{55,99,0}}, +/* 29847 */ {(11<<2)|2,{55,99,0}}, +/* 29848 */ {(11<<2)|2,{55,99,0}}, +/* 29849 */ {(11<<2)|2,{55,99,0}}, +/* 29850 */ {(11<<2)|2,{55,99,0}}, +/* 29851 */ {(11<<2)|2,{55,99,0}}, +/* 29852 */ {(11<<2)|2,{55,99,0}}, +/* 29853 */ {(11<<2)|2,{55,99,0}}, +/* 29854 */ {(11<<2)|2,{55,99,0}}, +/* 29855 */ {(11<<2)|2,{55,99,0}}, +/* 29856 */ {(16<<2)|3,{55,101,48}}, +/* 29857 */ {(16<<2)|3,{55,101,49}}, +/* 29858 */ {(16<<2)|3,{55,101,50}}, +/* 29859 */ {(16<<2)|3,{55,101,97}}, +/* 29860 */ {(16<<2)|3,{55,101,99}}, +/* 29861 */ {(16<<2)|3,{55,101,101}}, +/* 29862 */ {(16<<2)|3,{55,101,105}}, +/* 29863 */ {(16<<2)|3,{55,101,111}}, +/* 29864 */ {(16<<2)|3,{55,101,115}}, +/* 29865 */ {(16<<2)|3,{55,101,116}}, +/* 29866 */ {(11<<2)|2,{55,101,0}}, +/* 29867 */ {(11<<2)|2,{55,101,0}}, +/* 29868 */ {(11<<2)|2,{55,101,0}}, +/* 29869 */ {(11<<2)|2,{55,101,0}}, +/* 29870 */ {(11<<2)|2,{55,101,0}}, +/* 29871 */ {(11<<2)|2,{55,101,0}}, +/* 29872 */ {(11<<2)|2,{55,101,0}}, +/* 29873 */ {(11<<2)|2,{55,101,0}}, +/* 29874 */ {(11<<2)|2,{55,101,0}}, +/* 29875 */ {(11<<2)|2,{55,101,0}}, +/* 29876 */ {(11<<2)|2,{55,101,0}}, +/* 29877 */ {(11<<2)|2,{55,101,0}}, +/* 29878 */ {(11<<2)|2,{55,101,0}}, +/* 29879 */ {(11<<2)|2,{55,101,0}}, +/* 29880 */ {(11<<2)|2,{55,101,0}}, +/* 29881 */ {(11<<2)|2,{55,101,0}}, +/* 29882 */ {(11<<2)|2,{55,101,0}}, +/* 29883 */ {(11<<2)|2,{55,101,0}}, +/* 29884 */ {(11<<2)|2,{55,101,0}}, +/* 29885 */ {(11<<2)|2,{55,101,0}}, +/* 29886 */ {(11<<2)|2,{55,101,0}}, +/* 29887 */ {(11<<2)|2,{55,101,0}}, +/* 29888 */ {(16<<2)|3,{55,105,48}}, +/* 29889 */ {(16<<2)|3,{55,105,49}}, +/* 29890 */ {(16<<2)|3,{55,105,50}}, +/* 29891 */ {(16<<2)|3,{55,105,97}}, +/* 29892 */ {(16<<2)|3,{55,105,99}}, +/* 29893 */ {(16<<2)|3,{55,105,101}}, +/* 29894 */ {(16<<2)|3,{55,105,105}}, +/* 29895 */ {(16<<2)|3,{55,105,111}}, +/* 29896 */ {(16<<2)|3,{55,105,115}}, +/* 29897 */ {(16<<2)|3,{55,105,116}}, +/* 29898 */ {(11<<2)|2,{55,105,0}}, +/* 29899 */ {(11<<2)|2,{55,105,0}}, +/* 29900 */ {(11<<2)|2,{55,105,0}}, +/* 29901 */ {(11<<2)|2,{55,105,0}}, +/* 29902 */ {(11<<2)|2,{55,105,0}}, +/* 29903 */ {(11<<2)|2,{55,105,0}}, +/* 29904 */ {(11<<2)|2,{55,105,0}}, +/* 29905 */ {(11<<2)|2,{55,105,0}}, +/* 29906 */ {(11<<2)|2,{55,105,0}}, +/* 29907 */ {(11<<2)|2,{55,105,0}}, +/* 29908 */ {(11<<2)|2,{55,105,0}}, +/* 29909 */ {(11<<2)|2,{55,105,0}}, +/* 29910 */ {(11<<2)|2,{55,105,0}}, +/* 29911 */ {(11<<2)|2,{55,105,0}}, +/* 29912 */ {(11<<2)|2,{55,105,0}}, +/* 29913 */ {(11<<2)|2,{55,105,0}}, +/* 29914 */ {(11<<2)|2,{55,105,0}}, +/* 29915 */ {(11<<2)|2,{55,105,0}}, +/* 29916 */ {(11<<2)|2,{55,105,0}}, +/* 29917 */ {(11<<2)|2,{55,105,0}}, +/* 29918 */ {(11<<2)|2,{55,105,0}}, +/* 29919 */ {(11<<2)|2,{55,105,0}}, +/* 29920 */ {(16<<2)|3,{55,111,48}}, +/* 29921 */ {(16<<2)|3,{55,111,49}}, +/* 29922 */ {(16<<2)|3,{55,111,50}}, +/* 29923 */ {(16<<2)|3,{55,111,97}}, +/* 29924 */ {(16<<2)|3,{55,111,99}}, +/* 29925 */ {(16<<2)|3,{55,111,101}}, +/* 29926 */ {(16<<2)|3,{55,111,105}}, +/* 29927 */ {(16<<2)|3,{55,111,111}}, +/* 29928 */ {(16<<2)|3,{55,111,115}}, +/* 29929 */ {(16<<2)|3,{55,111,116}}, +/* 29930 */ {(11<<2)|2,{55,111,0}}, +/* 29931 */ {(11<<2)|2,{55,111,0}}, +/* 29932 */ {(11<<2)|2,{55,111,0}}, +/* 29933 */ {(11<<2)|2,{55,111,0}}, +/* 29934 */ {(11<<2)|2,{55,111,0}}, +/* 29935 */ {(11<<2)|2,{55,111,0}}, +/* 29936 */ {(11<<2)|2,{55,111,0}}, +/* 29937 */ {(11<<2)|2,{55,111,0}}, +/* 29938 */ {(11<<2)|2,{55,111,0}}, +/* 29939 */ {(11<<2)|2,{55,111,0}}, +/* 29940 */ {(11<<2)|2,{55,111,0}}, +/* 29941 */ {(11<<2)|2,{55,111,0}}, +/* 29942 */ {(11<<2)|2,{55,111,0}}, +/* 29943 */ {(11<<2)|2,{55,111,0}}, +/* 29944 */ {(11<<2)|2,{55,111,0}}, +/* 29945 */ {(11<<2)|2,{55,111,0}}, +/* 29946 */ {(11<<2)|2,{55,111,0}}, +/* 29947 */ {(11<<2)|2,{55,111,0}}, +/* 29948 */ {(11<<2)|2,{55,111,0}}, +/* 29949 */ {(11<<2)|2,{55,111,0}}, +/* 29950 */ {(11<<2)|2,{55,111,0}}, +/* 29951 */ {(11<<2)|2,{55,111,0}}, +/* 29952 */ {(16<<2)|3,{55,115,48}}, +/* 29953 */ {(16<<2)|3,{55,115,49}}, +/* 29954 */ {(16<<2)|3,{55,115,50}}, +/* 29955 */ {(16<<2)|3,{55,115,97}}, +/* 29956 */ {(16<<2)|3,{55,115,99}}, +/* 29957 */ {(16<<2)|3,{55,115,101}}, +/* 29958 */ {(16<<2)|3,{55,115,105}}, +/* 29959 */ {(16<<2)|3,{55,115,111}}, +/* 29960 */ {(16<<2)|3,{55,115,115}}, +/* 29961 */ {(16<<2)|3,{55,115,116}}, +/* 29962 */ {(11<<2)|2,{55,115,0}}, +/* 29963 */ {(11<<2)|2,{55,115,0}}, +/* 29964 */ {(11<<2)|2,{55,115,0}}, +/* 29965 */ {(11<<2)|2,{55,115,0}}, +/* 29966 */ {(11<<2)|2,{55,115,0}}, +/* 29967 */ {(11<<2)|2,{55,115,0}}, +/* 29968 */ {(11<<2)|2,{55,115,0}}, +/* 29969 */ {(11<<2)|2,{55,115,0}}, +/* 29970 */ {(11<<2)|2,{55,115,0}}, +/* 29971 */ {(11<<2)|2,{55,115,0}}, +/* 29972 */ {(11<<2)|2,{55,115,0}}, +/* 29973 */ {(11<<2)|2,{55,115,0}}, +/* 29974 */ {(11<<2)|2,{55,115,0}}, +/* 29975 */ {(11<<2)|2,{55,115,0}}, +/* 29976 */ {(11<<2)|2,{55,115,0}}, +/* 29977 */ {(11<<2)|2,{55,115,0}}, +/* 29978 */ {(11<<2)|2,{55,115,0}}, +/* 29979 */ {(11<<2)|2,{55,115,0}}, +/* 29980 */ {(11<<2)|2,{55,115,0}}, +/* 29981 */ {(11<<2)|2,{55,115,0}}, +/* 29982 */ {(11<<2)|2,{55,115,0}}, +/* 29983 */ {(11<<2)|2,{55,115,0}}, +/* 29984 */ {(16<<2)|3,{55,116,48}}, +/* 29985 */ {(16<<2)|3,{55,116,49}}, +/* 29986 */ {(16<<2)|3,{55,116,50}}, +/* 29987 */ {(16<<2)|3,{55,116,97}}, +/* 29988 */ {(16<<2)|3,{55,116,99}}, +/* 29989 */ {(16<<2)|3,{55,116,101}}, +/* 29990 */ {(16<<2)|3,{55,116,105}}, +/* 29991 */ {(16<<2)|3,{55,116,111}}, +/* 29992 */ {(16<<2)|3,{55,116,115}}, +/* 29993 */ {(16<<2)|3,{55,116,116}}, +/* 29994 */ {(11<<2)|2,{55,116,0}}, +/* 29995 */ {(11<<2)|2,{55,116,0}}, +/* 29996 */ {(11<<2)|2,{55,116,0}}, +/* 29997 */ {(11<<2)|2,{55,116,0}}, +/* 29998 */ {(11<<2)|2,{55,116,0}}, +/* 29999 */ {(11<<2)|2,{55,116,0}}, +/* 30000 */ {(11<<2)|2,{55,116,0}}, +/* 30001 */ {(11<<2)|2,{55,116,0}}, +/* 30002 */ {(11<<2)|2,{55,116,0}}, +/* 30003 */ {(11<<2)|2,{55,116,0}}, +/* 30004 */ {(11<<2)|2,{55,116,0}}, +/* 30005 */ {(11<<2)|2,{55,116,0}}, +/* 30006 */ {(11<<2)|2,{55,116,0}}, +/* 30007 */ {(11<<2)|2,{55,116,0}}, +/* 30008 */ {(11<<2)|2,{55,116,0}}, +/* 30009 */ {(11<<2)|2,{55,116,0}}, +/* 30010 */ {(11<<2)|2,{55,116,0}}, +/* 30011 */ {(11<<2)|2,{55,116,0}}, +/* 30012 */ {(11<<2)|2,{55,116,0}}, +/* 30013 */ {(11<<2)|2,{55,116,0}}, +/* 30014 */ {(11<<2)|2,{55,116,0}}, +/* 30015 */ {(11<<2)|2,{55,116,0}}, +/* 30016 */ {(12<<2)|2,{55,32,0}}, +/* 30017 */ {(12<<2)|2,{55,32,0}}, +/* 30018 */ {(12<<2)|2,{55,32,0}}, +/* 30019 */ {(12<<2)|2,{55,32,0}}, +/* 30020 */ {(12<<2)|2,{55,32,0}}, +/* 30021 */ {(12<<2)|2,{55,32,0}}, +/* 30022 */ {(12<<2)|2,{55,32,0}}, +/* 30023 */ {(12<<2)|2,{55,32,0}}, +/* 30024 */ {(12<<2)|2,{55,32,0}}, +/* 30025 */ {(12<<2)|2,{55,32,0}}, +/* 30026 */ {(12<<2)|2,{55,32,0}}, +/* 30027 */ {(12<<2)|2,{55,32,0}}, +/* 30028 */ {(12<<2)|2,{55,32,0}}, +/* 30029 */ {(12<<2)|2,{55,32,0}}, +/* 30030 */ {(12<<2)|2,{55,32,0}}, +/* 30031 */ {(12<<2)|2,{55,32,0}}, +/* 30032 */ {(12<<2)|2,{55,37,0}}, +/* 30033 */ {(12<<2)|2,{55,37,0}}, +/* 30034 */ {(12<<2)|2,{55,37,0}}, +/* 30035 */ {(12<<2)|2,{55,37,0}}, +/* 30036 */ {(12<<2)|2,{55,37,0}}, +/* 30037 */ {(12<<2)|2,{55,37,0}}, +/* 30038 */ {(12<<2)|2,{55,37,0}}, +/* 30039 */ {(12<<2)|2,{55,37,0}}, +/* 30040 */ {(12<<2)|2,{55,37,0}}, +/* 30041 */ {(12<<2)|2,{55,37,0}}, +/* 30042 */ {(12<<2)|2,{55,37,0}}, +/* 30043 */ {(12<<2)|2,{55,37,0}}, +/* 30044 */ {(12<<2)|2,{55,37,0}}, +/* 30045 */ {(12<<2)|2,{55,37,0}}, +/* 30046 */ {(12<<2)|2,{55,37,0}}, +/* 30047 */ {(12<<2)|2,{55,37,0}}, +/* 30048 */ {(12<<2)|2,{55,45,0}}, +/* 30049 */ {(12<<2)|2,{55,45,0}}, +/* 30050 */ {(12<<2)|2,{55,45,0}}, +/* 30051 */ {(12<<2)|2,{55,45,0}}, +/* 30052 */ {(12<<2)|2,{55,45,0}}, +/* 30053 */ {(12<<2)|2,{55,45,0}}, +/* 30054 */ {(12<<2)|2,{55,45,0}}, +/* 30055 */ {(12<<2)|2,{55,45,0}}, +/* 30056 */ {(12<<2)|2,{55,45,0}}, +/* 30057 */ {(12<<2)|2,{55,45,0}}, +/* 30058 */ {(12<<2)|2,{55,45,0}}, +/* 30059 */ {(12<<2)|2,{55,45,0}}, +/* 30060 */ {(12<<2)|2,{55,45,0}}, +/* 30061 */ {(12<<2)|2,{55,45,0}}, +/* 30062 */ {(12<<2)|2,{55,45,0}}, +/* 30063 */ {(12<<2)|2,{55,45,0}}, +/* 30064 */ {(12<<2)|2,{55,46,0}}, +/* 30065 */ {(12<<2)|2,{55,46,0}}, +/* 30066 */ {(12<<2)|2,{55,46,0}}, +/* 30067 */ {(12<<2)|2,{55,46,0}}, +/* 30068 */ {(12<<2)|2,{55,46,0}}, +/* 30069 */ {(12<<2)|2,{55,46,0}}, +/* 30070 */ {(12<<2)|2,{55,46,0}}, +/* 30071 */ {(12<<2)|2,{55,46,0}}, +/* 30072 */ {(12<<2)|2,{55,46,0}}, +/* 30073 */ {(12<<2)|2,{55,46,0}}, +/* 30074 */ {(12<<2)|2,{55,46,0}}, +/* 30075 */ {(12<<2)|2,{55,46,0}}, +/* 30076 */ {(12<<2)|2,{55,46,0}}, +/* 30077 */ {(12<<2)|2,{55,46,0}}, +/* 30078 */ {(12<<2)|2,{55,46,0}}, +/* 30079 */ {(12<<2)|2,{55,46,0}}, +/* 30080 */ {(12<<2)|2,{55,47,0}}, +/* 30081 */ {(12<<2)|2,{55,47,0}}, +/* 30082 */ {(12<<2)|2,{55,47,0}}, +/* 30083 */ {(12<<2)|2,{55,47,0}}, +/* 30084 */ {(12<<2)|2,{55,47,0}}, +/* 30085 */ {(12<<2)|2,{55,47,0}}, +/* 30086 */ {(12<<2)|2,{55,47,0}}, +/* 30087 */ {(12<<2)|2,{55,47,0}}, +/* 30088 */ {(12<<2)|2,{55,47,0}}, +/* 30089 */ {(12<<2)|2,{55,47,0}}, +/* 30090 */ {(12<<2)|2,{55,47,0}}, +/* 30091 */ {(12<<2)|2,{55,47,0}}, +/* 30092 */ {(12<<2)|2,{55,47,0}}, +/* 30093 */ {(12<<2)|2,{55,47,0}}, +/* 30094 */ {(12<<2)|2,{55,47,0}}, +/* 30095 */ {(12<<2)|2,{55,47,0}}, +/* 30096 */ {(12<<2)|2,{55,51,0}}, +/* 30097 */ {(12<<2)|2,{55,51,0}}, +/* 30098 */ {(12<<2)|2,{55,51,0}}, +/* 30099 */ {(12<<2)|2,{55,51,0}}, +/* 30100 */ {(12<<2)|2,{55,51,0}}, +/* 30101 */ {(12<<2)|2,{55,51,0}}, +/* 30102 */ {(12<<2)|2,{55,51,0}}, +/* 30103 */ {(12<<2)|2,{55,51,0}}, +/* 30104 */ {(12<<2)|2,{55,51,0}}, +/* 30105 */ {(12<<2)|2,{55,51,0}}, +/* 30106 */ {(12<<2)|2,{55,51,0}}, +/* 30107 */ {(12<<2)|2,{55,51,0}}, +/* 30108 */ {(12<<2)|2,{55,51,0}}, +/* 30109 */ {(12<<2)|2,{55,51,0}}, +/* 30110 */ {(12<<2)|2,{55,51,0}}, +/* 30111 */ {(12<<2)|2,{55,51,0}}, +/* 30112 */ {(12<<2)|2,{55,52,0}}, +/* 30113 */ {(12<<2)|2,{55,52,0}}, +/* 30114 */ {(12<<2)|2,{55,52,0}}, +/* 30115 */ {(12<<2)|2,{55,52,0}}, +/* 30116 */ {(12<<2)|2,{55,52,0}}, +/* 30117 */ {(12<<2)|2,{55,52,0}}, +/* 30118 */ {(12<<2)|2,{55,52,0}}, +/* 30119 */ {(12<<2)|2,{55,52,0}}, +/* 30120 */ {(12<<2)|2,{55,52,0}}, +/* 30121 */ {(12<<2)|2,{55,52,0}}, +/* 30122 */ {(12<<2)|2,{55,52,0}}, +/* 30123 */ {(12<<2)|2,{55,52,0}}, +/* 30124 */ {(12<<2)|2,{55,52,0}}, +/* 30125 */ {(12<<2)|2,{55,52,0}}, +/* 30126 */ {(12<<2)|2,{55,52,0}}, +/* 30127 */ {(12<<2)|2,{55,52,0}}, +/* 30128 */ {(12<<2)|2,{55,53,0}}, +/* 30129 */ {(12<<2)|2,{55,53,0}}, +/* 30130 */ {(12<<2)|2,{55,53,0}}, +/* 30131 */ {(12<<2)|2,{55,53,0}}, +/* 30132 */ {(12<<2)|2,{55,53,0}}, +/* 30133 */ {(12<<2)|2,{55,53,0}}, +/* 30134 */ {(12<<2)|2,{55,53,0}}, +/* 30135 */ {(12<<2)|2,{55,53,0}}, +/* 30136 */ {(12<<2)|2,{55,53,0}}, +/* 30137 */ {(12<<2)|2,{55,53,0}}, +/* 30138 */ {(12<<2)|2,{55,53,0}}, +/* 30139 */ {(12<<2)|2,{55,53,0}}, +/* 30140 */ {(12<<2)|2,{55,53,0}}, +/* 30141 */ {(12<<2)|2,{55,53,0}}, +/* 30142 */ {(12<<2)|2,{55,53,0}}, +/* 30143 */ {(12<<2)|2,{55,53,0}}, +/* 30144 */ {(12<<2)|2,{55,54,0}}, +/* 30145 */ {(12<<2)|2,{55,54,0}}, +/* 30146 */ {(12<<2)|2,{55,54,0}}, +/* 30147 */ {(12<<2)|2,{55,54,0}}, +/* 30148 */ {(12<<2)|2,{55,54,0}}, +/* 30149 */ {(12<<2)|2,{55,54,0}}, +/* 30150 */ {(12<<2)|2,{55,54,0}}, +/* 30151 */ {(12<<2)|2,{55,54,0}}, +/* 30152 */ {(12<<2)|2,{55,54,0}}, +/* 30153 */ {(12<<2)|2,{55,54,0}}, +/* 30154 */ {(12<<2)|2,{55,54,0}}, +/* 30155 */ {(12<<2)|2,{55,54,0}}, +/* 30156 */ {(12<<2)|2,{55,54,0}}, +/* 30157 */ {(12<<2)|2,{55,54,0}}, +/* 30158 */ {(12<<2)|2,{55,54,0}}, +/* 30159 */ {(12<<2)|2,{55,54,0}}, +/* 30160 */ {(12<<2)|2,{55,55,0}}, +/* 30161 */ {(12<<2)|2,{55,55,0}}, +/* 30162 */ {(12<<2)|2,{55,55,0}}, +/* 30163 */ {(12<<2)|2,{55,55,0}}, +/* 30164 */ {(12<<2)|2,{55,55,0}}, +/* 30165 */ {(12<<2)|2,{55,55,0}}, +/* 30166 */ {(12<<2)|2,{55,55,0}}, +/* 30167 */ {(12<<2)|2,{55,55,0}}, +/* 30168 */ {(12<<2)|2,{55,55,0}}, +/* 30169 */ {(12<<2)|2,{55,55,0}}, +/* 30170 */ {(12<<2)|2,{55,55,0}}, +/* 30171 */ {(12<<2)|2,{55,55,0}}, +/* 30172 */ {(12<<2)|2,{55,55,0}}, +/* 30173 */ {(12<<2)|2,{55,55,0}}, +/* 30174 */ {(12<<2)|2,{55,55,0}}, +/* 30175 */ {(12<<2)|2,{55,55,0}}, +/* 30176 */ {(12<<2)|2,{55,56,0}}, +/* 30177 */ {(12<<2)|2,{55,56,0}}, +/* 30178 */ {(12<<2)|2,{55,56,0}}, +/* 30179 */ {(12<<2)|2,{55,56,0}}, +/* 30180 */ {(12<<2)|2,{55,56,0}}, +/* 30181 */ {(12<<2)|2,{55,56,0}}, +/* 30182 */ {(12<<2)|2,{55,56,0}}, +/* 30183 */ {(12<<2)|2,{55,56,0}}, +/* 30184 */ {(12<<2)|2,{55,56,0}}, +/* 30185 */ {(12<<2)|2,{55,56,0}}, +/* 30186 */ {(12<<2)|2,{55,56,0}}, +/* 30187 */ {(12<<2)|2,{55,56,0}}, +/* 30188 */ {(12<<2)|2,{55,56,0}}, +/* 30189 */ {(12<<2)|2,{55,56,0}}, +/* 30190 */ {(12<<2)|2,{55,56,0}}, +/* 30191 */ {(12<<2)|2,{55,56,0}}, +/* 30192 */ {(12<<2)|2,{55,57,0}}, +/* 30193 */ {(12<<2)|2,{55,57,0}}, +/* 30194 */ {(12<<2)|2,{55,57,0}}, +/* 30195 */ {(12<<2)|2,{55,57,0}}, +/* 30196 */ {(12<<2)|2,{55,57,0}}, +/* 30197 */ {(12<<2)|2,{55,57,0}}, +/* 30198 */ {(12<<2)|2,{55,57,0}}, +/* 30199 */ {(12<<2)|2,{55,57,0}}, +/* 30200 */ {(12<<2)|2,{55,57,0}}, +/* 30201 */ {(12<<2)|2,{55,57,0}}, +/* 30202 */ {(12<<2)|2,{55,57,0}}, +/* 30203 */ {(12<<2)|2,{55,57,0}}, +/* 30204 */ {(12<<2)|2,{55,57,0}}, +/* 30205 */ {(12<<2)|2,{55,57,0}}, +/* 30206 */ {(12<<2)|2,{55,57,0}}, +/* 30207 */ {(12<<2)|2,{55,57,0}}, +/* 30208 */ {(12<<2)|2,{55,61,0}}, +/* 30209 */ {(12<<2)|2,{55,61,0}}, +/* 30210 */ {(12<<2)|2,{55,61,0}}, +/* 30211 */ {(12<<2)|2,{55,61,0}}, +/* 30212 */ {(12<<2)|2,{55,61,0}}, +/* 30213 */ {(12<<2)|2,{55,61,0}}, +/* 30214 */ {(12<<2)|2,{55,61,0}}, +/* 30215 */ {(12<<2)|2,{55,61,0}}, +/* 30216 */ {(12<<2)|2,{55,61,0}}, +/* 30217 */ {(12<<2)|2,{55,61,0}}, +/* 30218 */ {(12<<2)|2,{55,61,0}}, +/* 30219 */ {(12<<2)|2,{55,61,0}}, +/* 30220 */ {(12<<2)|2,{55,61,0}}, +/* 30221 */ {(12<<2)|2,{55,61,0}}, +/* 30222 */ {(12<<2)|2,{55,61,0}}, +/* 30223 */ {(12<<2)|2,{55,61,0}}, +/* 30224 */ {(12<<2)|2,{55,65,0}}, +/* 30225 */ {(12<<2)|2,{55,65,0}}, +/* 30226 */ {(12<<2)|2,{55,65,0}}, +/* 30227 */ {(12<<2)|2,{55,65,0}}, +/* 30228 */ {(12<<2)|2,{55,65,0}}, +/* 30229 */ {(12<<2)|2,{55,65,0}}, +/* 30230 */ {(12<<2)|2,{55,65,0}}, +/* 30231 */ {(12<<2)|2,{55,65,0}}, +/* 30232 */ {(12<<2)|2,{55,65,0}}, +/* 30233 */ {(12<<2)|2,{55,65,0}}, +/* 30234 */ {(12<<2)|2,{55,65,0}}, +/* 30235 */ {(12<<2)|2,{55,65,0}}, +/* 30236 */ {(12<<2)|2,{55,65,0}}, +/* 30237 */ {(12<<2)|2,{55,65,0}}, +/* 30238 */ {(12<<2)|2,{55,65,0}}, +/* 30239 */ {(12<<2)|2,{55,65,0}}, +/* 30240 */ {(12<<2)|2,{55,95,0}}, +/* 30241 */ {(12<<2)|2,{55,95,0}}, +/* 30242 */ {(12<<2)|2,{55,95,0}}, +/* 30243 */ {(12<<2)|2,{55,95,0}}, +/* 30244 */ {(12<<2)|2,{55,95,0}}, +/* 30245 */ {(12<<2)|2,{55,95,0}}, +/* 30246 */ {(12<<2)|2,{55,95,0}}, +/* 30247 */ {(12<<2)|2,{55,95,0}}, +/* 30248 */ {(12<<2)|2,{55,95,0}}, +/* 30249 */ {(12<<2)|2,{55,95,0}}, +/* 30250 */ {(12<<2)|2,{55,95,0}}, +/* 30251 */ {(12<<2)|2,{55,95,0}}, +/* 30252 */ {(12<<2)|2,{55,95,0}}, +/* 30253 */ {(12<<2)|2,{55,95,0}}, +/* 30254 */ {(12<<2)|2,{55,95,0}}, +/* 30255 */ {(12<<2)|2,{55,95,0}}, +/* 30256 */ {(12<<2)|2,{55,98,0}}, +/* 30257 */ {(12<<2)|2,{55,98,0}}, +/* 30258 */ {(12<<2)|2,{55,98,0}}, +/* 30259 */ {(12<<2)|2,{55,98,0}}, +/* 30260 */ {(12<<2)|2,{55,98,0}}, +/* 30261 */ {(12<<2)|2,{55,98,0}}, +/* 30262 */ {(12<<2)|2,{55,98,0}}, +/* 30263 */ {(12<<2)|2,{55,98,0}}, +/* 30264 */ {(12<<2)|2,{55,98,0}}, +/* 30265 */ {(12<<2)|2,{55,98,0}}, +/* 30266 */ {(12<<2)|2,{55,98,0}}, +/* 30267 */ {(12<<2)|2,{55,98,0}}, +/* 30268 */ {(12<<2)|2,{55,98,0}}, +/* 30269 */ {(12<<2)|2,{55,98,0}}, +/* 30270 */ {(12<<2)|2,{55,98,0}}, +/* 30271 */ {(12<<2)|2,{55,98,0}}, +/* 30272 */ {(12<<2)|2,{55,100,0}}, +/* 30273 */ {(12<<2)|2,{55,100,0}}, +/* 30274 */ {(12<<2)|2,{55,100,0}}, +/* 30275 */ {(12<<2)|2,{55,100,0}}, +/* 30276 */ {(12<<2)|2,{55,100,0}}, +/* 30277 */ {(12<<2)|2,{55,100,0}}, +/* 30278 */ {(12<<2)|2,{55,100,0}}, +/* 30279 */ {(12<<2)|2,{55,100,0}}, +/* 30280 */ {(12<<2)|2,{55,100,0}}, +/* 30281 */ {(12<<2)|2,{55,100,0}}, +/* 30282 */ {(12<<2)|2,{55,100,0}}, +/* 30283 */ {(12<<2)|2,{55,100,0}}, +/* 30284 */ {(12<<2)|2,{55,100,0}}, +/* 30285 */ {(12<<2)|2,{55,100,0}}, +/* 30286 */ {(12<<2)|2,{55,100,0}}, +/* 30287 */ {(12<<2)|2,{55,100,0}}, +/* 30288 */ {(12<<2)|2,{55,102,0}}, +/* 30289 */ {(12<<2)|2,{55,102,0}}, +/* 30290 */ {(12<<2)|2,{55,102,0}}, +/* 30291 */ {(12<<2)|2,{55,102,0}}, +/* 30292 */ {(12<<2)|2,{55,102,0}}, +/* 30293 */ {(12<<2)|2,{55,102,0}}, +/* 30294 */ {(12<<2)|2,{55,102,0}}, +/* 30295 */ {(12<<2)|2,{55,102,0}}, +/* 30296 */ {(12<<2)|2,{55,102,0}}, +/* 30297 */ {(12<<2)|2,{55,102,0}}, +/* 30298 */ {(12<<2)|2,{55,102,0}}, +/* 30299 */ {(12<<2)|2,{55,102,0}}, +/* 30300 */ {(12<<2)|2,{55,102,0}}, +/* 30301 */ {(12<<2)|2,{55,102,0}}, +/* 30302 */ {(12<<2)|2,{55,102,0}}, +/* 30303 */ {(12<<2)|2,{55,102,0}}, +/* 30304 */ {(12<<2)|2,{55,103,0}}, +/* 30305 */ {(12<<2)|2,{55,103,0}}, +/* 30306 */ {(12<<2)|2,{55,103,0}}, +/* 30307 */ {(12<<2)|2,{55,103,0}}, +/* 30308 */ {(12<<2)|2,{55,103,0}}, +/* 30309 */ {(12<<2)|2,{55,103,0}}, +/* 30310 */ {(12<<2)|2,{55,103,0}}, +/* 30311 */ {(12<<2)|2,{55,103,0}}, +/* 30312 */ {(12<<2)|2,{55,103,0}}, +/* 30313 */ {(12<<2)|2,{55,103,0}}, +/* 30314 */ {(12<<2)|2,{55,103,0}}, +/* 30315 */ {(12<<2)|2,{55,103,0}}, +/* 30316 */ {(12<<2)|2,{55,103,0}}, +/* 30317 */ {(12<<2)|2,{55,103,0}}, +/* 30318 */ {(12<<2)|2,{55,103,0}}, +/* 30319 */ {(12<<2)|2,{55,103,0}}, +/* 30320 */ {(12<<2)|2,{55,104,0}}, +/* 30321 */ {(12<<2)|2,{55,104,0}}, +/* 30322 */ {(12<<2)|2,{55,104,0}}, +/* 30323 */ {(12<<2)|2,{55,104,0}}, +/* 30324 */ {(12<<2)|2,{55,104,0}}, +/* 30325 */ {(12<<2)|2,{55,104,0}}, +/* 30326 */ {(12<<2)|2,{55,104,0}}, +/* 30327 */ {(12<<2)|2,{55,104,0}}, +/* 30328 */ {(12<<2)|2,{55,104,0}}, +/* 30329 */ {(12<<2)|2,{55,104,0}}, +/* 30330 */ {(12<<2)|2,{55,104,0}}, +/* 30331 */ {(12<<2)|2,{55,104,0}}, +/* 30332 */ {(12<<2)|2,{55,104,0}}, +/* 30333 */ {(12<<2)|2,{55,104,0}}, +/* 30334 */ {(12<<2)|2,{55,104,0}}, +/* 30335 */ {(12<<2)|2,{55,104,0}}, +/* 30336 */ {(12<<2)|2,{55,108,0}}, +/* 30337 */ {(12<<2)|2,{55,108,0}}, +/* 30338 */ {(12<<2)|2,{55,108,0}}, +/* 30339 */ {(12<<2)|2,{55,108,0}}, +/* 30340 */ {(12<<2)|2,{55,108,0}}, +/* 30341 */ {(12<<2)|2,{55,108,0}}, +/* 30342 */ {(12<<2)|2,{55,108,0}}, +/* 30343 */ {(12<<2)|2,{55,108,0}}, +/* 30344 */ {(12<<2)|2,{55,108,0}}, +/* 30345 */ {(12<<2)|2,{55,108,0}}, +/* 30346 */ {(12<<2)|2,{55,108,0}}, +/* 30347 */ {(12<<2)|2,{55,108,0}}, +/* 30348 */ {(12<<2)|2,{55,108,0}}, +/* 30349 */ {(12<<2)|2,{55,108,0}}, +/* 30350 */ {(12<<2)|2,{55,108,0}}, +/* 30351 */ {(12<<2)|2,{55,108,0}}, +/* 30352 */ {(12<<2)|2,{55,109,0}}, +/* 30353 */ {(12<<2)|2,{55,109,0}}, +/* 30354 */ {(12<<2)|2,{55,109,0}}, +/* 30355 */ {(12<<2)|2,{55,109,0}}, +/* 30356 */ {(12<<2)|2,{55,109,0}}, +/* 30357 */ {(12<<2)|2,{55,109,0}}, +/* 30358 */ {(12<<2)|2,{55,109,0}}, +/* 30359 */ {(12<<2)|2,{55,109,0}}, +/* 30360 */ {(12<<2)|2,{55,109,0}}, +/* 30361 */ {(12<<2)|2,{55,109,0}}, +/* 30362 */ {(12<<2)|2,{55,109,0}}, +/* 30363 */ {(12<<2)|2,{55,109,0}}, +/* 30364 */ {(12<<2)|2,{55,109,0}}, +/* 30365 */ {(12<<2)|2,{55,109,0}}, +/* 30366 */ {(12<<2)|2,{55,109,0}}, +/* 30367 */ {(12<<2)|2,{55,109,0}}, +/* 30368 */ {(12<<2)|2,{55,110,0}}, +/* 30369 */ {(12<<2)|2,{55,110,0}}, +/* 30370 */ {(12<<2)|2,{55,110,0}}, +/* 30371 */ {(12<<2)|2,{55,110,0}}, +/* 30372 */ {(12<<2)|2,{55,110,0}}, +/* 30373 */ {(12<<2)|2,{55,110,0}}, +/* 30374 */ {(12<<2)|2,{55,110,0}}, +/* 30375 */ {(12<<2)|2,{55,110,0}}, +/* 30376 */ {(12<<2)|2,{55,110,0}}, +/* 30377 */ {(12<<2)|2,{55,110,0}}, +/* 30378 */ {(12<<2)|2,{55,110,0}}, +/* 30379 */ {(12<<2)|2,{55,110,0}}, +/* 30380 */ {(12<<2)|2,{55,110,0}}, +/* 30381 */ {(12<<2)|2,{55,110,0}}, +/* 30382 */ {(12<<2)|2,{55,110,0}}, +/* 30383 */ {(12<<2)|2,{55,110,0}}, +/* 30384 */ {(12<<2)|2,{55,112,0}}, +/* 30385 */ {(12<<2)|2,{55,112,0}}, +/* 30386 */ {(12<<2)|2,{55,112,0}}, +/* 30387 */ {(12<<2)|2,{55,112,0}}, +/* 30388 */ {(12<<2)|2,{55,112,0}}, +/* 30389 */ {(12<<2)|2,{55,112,0}}, +/* 30390 */ {(12<<2)|2,{55,112,0}}, +/* 30391 */ {(12<<2)|2,{55,112,0}}, +/* 30392 */ {(12<<2)|2,{55,112,0}}, +/* 30393 */ {(12<<2)|2,{55,112,0}}, +/* 30394 */ {(12<<2)|2,{55,112,0}}, +/* 30395 */ {(12<<2)|2,{55,112,0}}, +/* 30396 */ {(12<<2)|2,{55,112,0}}, +/* 30397 */ {(12<<2)|2,{55,112,0}}, +/* 30398 */ {(12<<2)|2,{55,112,0}}, +/* 30399 */ {(12<<2)|2,{55,112,0}}, +/* 30400 */ {(12<<2)|2,{55,114,0}}, +/* 30401 */ {(12<<2)|2,{55,114,0}}, +/* 30402 */ {(12<<2)|2,{55,114,0}}, +/* 30403 */ {(12<<2)|2,{55,114,0}}, +/* 30404 */ {(12<<2)|2,{55,114,0}}, +/* 30405 */ {(12<<2)|2,{55,114,0}}, +/* 30406 */ {(12<<2)|2,{55,114,0}}, +/* 30407 */ {(12<<2)|2,{55,114,0}}, +/* 30408 */ {(12<<2)|2,{55,114,0}}, +/* 30409 */ {(12<<2)|2,{55,114,0}}, +/* 30410 */ {(12<<2)|2,{55,114,0}}, +/* 30411 */ {(12<<2)|2,{55,114,0}}, +/* 30412 */ {(12<<2)|2,{55,114,0}}, +/* 30413 */ {(12<<2)|2,{55,114,0}}, +/* 30414 */ {(12<<2)|2,{55,114,0}}, +/* 30415 */ {(12<<2)|2,{55,114,0}}, +/* 30416 */ {(12<<2)|2,{55,117,0}}, +/* 30417 */ {(12<<2)|2,{55,117,0}}, +/* 30418 */ {(12<<2)|2,{55,117,0}}, +/* 30419 */ {(12<<2)|2,{55,117,0}}, +/* 30420 */ {(12<<2)|2,{55,117,0}}, +/* 30421 */ {(12<<2)|2,{55,117,0}}, +/* 30422 */ {(12<<2)|2,{55,117,0}}, +/* 30423 */ {(12<<2)|2,{55,117,0}}, +/* 30424 */ {(12<<2)|2,{55,117,0}}, +/* 30425 */ {(12<<2)|2,{55,117,0}}, +/* 30426 */ {(12<<2)|2,{55,117,0}}, +/* 30427 */ {(12<<2)|2,{55,117,0}}, +/* 30428 */ {(12<<2)|2,{55,117,0}}, +/* 30429 */ {(12<<2)|2,{55,117,0}}, +/* 30430 */ {(12<<2)|2,{55,117,0}}, +/* 30431 */ {(12<<2)|2,{55,117,0}}, +/* 30432 */ {(13<<2)|2,{55,58,0}}, +/* 30433 */ {(13<<2)|2,{55,58,0}}, +/* 30434 */ {(13<<2)|2,{55,58,0}}, +/* 30435 */ {(13<<2)|2,{55,58,0}}, +/* 30436 */ {(13<<2)|2,{55,58,0}}, +/* 30437 */ {(13<<2)|2,{55,58,0}}, +/* 30438 */ {(13<<2)|2,{55,58,0}}, +/* 30439 */ {(13<<2)|2,{55,58,0}}, +/* 30440 */ {(13<<2)|2,{55,66,0}}, +/* 30441 */ {(13<<2)|2,{55,66,0}}, +/* 30442 */ {(13<<2)|2,{55,66,0}}, +/* 30443 */ {(13<<2)|2,{55,66,0}}, +/* 30444 */ {(13<<2)|2,{55,66,0}}, +/* 30445 */ {(13<<2)|2,{55,66,0}}, +/* 30446 */ {(13<<2)|2,{55,66,0}}, +/* 30447 */ {(13<<2)|2,{55,66,0}}, +/* 30448 */ {(13<<2)|2,{55,67,0}}, +/* 30449 */ {(13<<2)|2,{55,67,0}}, +/* 30450 */ {(13<<2)|2,{55,67,0}}, +/* 30451 */ {(13<<2)|2,{55,67,0}}, +/* 30452 */ {(13<<2)|2,{55,67,0}}, +/* 30453 */ {(13<<2)|2,{55,67,0}}, +/* 30454 */ {(13<<2)|2,{55,67,0}}, +/* 30455 */ {(13<<2)|2,{55,67,0}}, +/* 30456 */ {(13<<2)|2,{55,68,0}}, +/* 30457 */ {(13<<2)|2,{55,68,0}}, +/* 30458 */ {(13<<2)|2,{55,68,0}}, +/* 30459 */ {(13<<2)|2,{55,68,0}}, +/* 30460 */ {(13<<2)|2,{55,68,0}}, +/* 30461 */ {(13<<2)|2,{55,68,0}}, +/* 30462 */ {(13<<2)|2,{55,68,0}}, +/* 30463 */ {(13<<2)|2,{55,68,0}}, +/* 30464 */ {(13<<2)|2,{55,69,0}}, +/* 30465 */ {(13<<2)|2,{55,69,0}}, +/* 30466 */ {(13<<2)|2,{55,69,0}}, +/* 30467 */ {(13<<2)|2,{55,69,0}}, +/* 30468 */ {(13<<2)|2,{55,69,0}}, +/* 30469 */ {(13<<2)|2,{55,69,0}}, +/* 30470 */ {(13<<2)|2,{55,69,0}}, +/* 30471 */ {(13<<2)|2,{55,69,0}}, +/* 30472 */ {(13<<2)|2,{55,70,0}}, +/* 30473 */ {(13<<2)|2,{55,70,0}}, +/* 30474 */ {(13<<2)|2,{55,70,0}}, +/* 30475 */ {(13<<2)|2,{55,70,0}}, +/* 30476 */ {(13<<2)|2,{55,70,0}}, +/* 30477 */ {(13<<2)|2,{55,70,0}}, +/* 30478 */ {(13<<2)|2,{55,70,0}}, +/* 30479 */ {(13<<2)|2,{55,70,0}}, +/* 30480 */ {(13<<2)|2,{55,71,0}}, +/* 30481 */ {(13<<2)|2,{55,71,0}}, +/* 30482 */ {(13<<2)|2,{55,71,0}}, +/* 30483 */ {(13<<2)|2,{55,71,0}}, +/* 30484 */ {(13<<2)|2,{55,71,0}}, +/* 30485 */ {(13<<2)|2,{55,71,0}}, +/* 30486 */ {(13<<2)|2,{55,71,0}}, +/* 30487 */ {(13<<2)|2,{55,71,0}}, +/* 30488 */ {(13<<2)|2,{55,72,0}}, +/* 30489 */ {(13<<2)|2,{55,72,0}}, +/* 30490 */ {(13<<2)|2,{55,72,0}}, +/* 30491 */ {(13<<2)|2,{55,72,0}}, +/* 30492 */ {(13<<2)|2,{55,72,0}}, +/* 30493 */ {(13<<2)|2,{55,72,0}}, +/* 30494 */ {(13<<2)|2,{55,72,0}}, +/* 30495 */ {(13<<2)|2,{55,72,0}}, +/* 30496 */ {(13<<2)|2,{55,73,0}}, +/* 30497 */ {(13<<2)|2,{55,73,0}}, +/* 30498 */ {(13<<2)|2,{55,73,0}}, +/* 30499 */ {(13<<2)|2,{55,73,0}}, +/* 30500 */ {(13<<2)|2,{55,73,0}}, +/* 30501 */ {(13<<2)|2,{55,73,0}}, +/* 30502 */ {(13<<2)|2,{55,73,0}}, +/* 30503 */ {(13<<2)|2,{55,73,0}}, +/* 30504 */ {(13<<2)|2,{55,74,0}}, +/* 30505 */ {(13<<2)|2,{55,74,0}}, +/* 30506 */ {(13<<2)|2,{55,74,0}}, +/* 30507 */ {(13<<2)|2,{55,74,0}}, +/* 30508 */ {(13<<2)|2,{55,74,0}}, +/* 30509 */ {(13<<2)|2,{55,74,0}}, +/* 30510 */ {(13<<2)|2,{55,74,0}}, +/* 30511 */ {(13<<2)|2,{55,74,0}}, +/* 30512 */ {(13<<2)|2,{55,75,0}}, +/* 30513 */ {(13<<2)|2,{55,75,0}}, +/* 30514 */ {(13<<2)|2,{55,75,0}}, +/* 30515 */ {(13<<2)|2,{55,75,0}}, +/* 30516 */ {(13<<2)|2,{55,75,0}}, +/* 30517 */ {(13<<2)|2,{55,75,0}}, +/* 30518 */ {(13<<2)|2,{55,75,0}}, +/* 30519 */ {(13<<2)|2,{55,75,0}}, +/* 30520 */ {(13<<2)|2,{55,76,0}}, +/* 30521 */ {(13<<2)|2,{55,76,0}}, +/* 30522 */ {(13<<2)|2,{55,76,0}}, +/* 30523 */ {(13<<2)|2,{55,76,0}}, +/* 30524 */ {(13<<2)|2,{55,76,0}}, +/* 30525 */ {(13<<2)|2,{55,76,0}}, +/* 30526 */ {(13<<2)|2,{55,76,0}}, +/* 30527 */ {(13<<2)|2,{55,76,0}}, +/* 30528 */ {(13<<2)|2,{55,77,0}}, +/* 30529 */ {(13<<2)|2,{55,77,0}}, +/* 30530 */ {(13<<2)|2,{55,77,0}}, +/* 30531 */ {(13<<2)|2,{55,77,0}}, +/* 30532 */ {(13<<2)|2,{55,77,0}}, +/* 30533 */ {(13<<2)|2,{55,77,0}}, +/* 30534 */ {(13<<2)|2,{55,77,0}}, +/* 30535 */ {(13<<2)|2,{55,77,0}}, +/* 30536 */ {(13<<2)|2,{55,78,0}}, +/* 30537 */ {(13<<2)|2,{55,78,0}}, +/* 30538 */ {(13<<2)|2,{55,78,0}}, +/* 30539 */ {(13<<2)|2,{55,78,0}}, +/* 30540 */ {(13<<2)|2,{55,78,0}}, +/* 30541 */ {(13<<2)|2,{55,78,0}}, +/* 30542 */ {(13<<2)|2,{55,78,0}}, +/* 30543 */ {(13<<2)|2,{55,78,0}}, +/* 30544 */ {(13<<2)|2,{55,79,0}}, +/* 30545 */ {(13<<2)|2,{55,79,0}}, +/* 30546 */ {(13<<2)|2,{55,79,0}}, +/* 30547 */ {(13<<2)|2,{55,79,0}}, +/* 30548 */ {(13<<2)|2,{55,79,0}}, +/* 30549 */ {(13<<2)|2,{55,79,0}}, +/* 30550 */ {(13<<2)|2,{55,79,0}}, +/* 30551 */ {(13<<2)|2,{55,79,0}}, +/* 30552 */ {(13<<2)|2,{55,80,0}}, +/* 30553 */ {(13<<2)|2,{55,80,0}}, +/* 30554 */ {(13<<2)|2,{55,80,0}}, +/* 30555 */ {(13<<2)|2,{55,80,0}}, +/* 30556 */ {(13<<2)|2,{55,80,0}}, +/* 30557 */ {(13<<2)|2,{55,80,0}}, +/* 30558 */ {(13<<2)|2,{55,80,0}}, +/* 30559 */ {(13<<2)|2,{55,80,0}}, +/* 30560 */ {(13<<2)|2,{55,81,0}}, +/* 30561 */ {(13<<2)|2,{55,81,0}}, +/* 30562 */ {(13<<2)|2,{55,81,0}}, +/* 30563 */ {(13<<2)|2,{55,81,0}}, +/* 30564 */ {(13<<2)|2,{55,81,0}}, +/* 30565 */ {(13<<2)|2,{55,81,0}}, +/* 30566 */ {(13<<2)|2,{55,81,0}}, +/* 30567 */ {(13<<2)|2,{55,81,0}}, +/* 30568 */ {(13<<2)|2,{55,82,0}}, +/* 30569 */ {(13<<2)|2,{55,82,0}}, +/* 30570 */ {(13<<2)|2,{55,82,0}}, +/* 30571 */ {(13<<2)|2,{55,82,0}}, +/* 30572 */ {(13<<2)|2,{55,82,0}}, +/* 30573 */ {(13<<2)|2,{55,82,0}}, +/* 30574 */ {(13<<2)|2,{55,82,0}}, +/* 30575 */ {(13<<2)|2,{55,82,0}}, +/* 30576 */ {(13<<2)|2,{55,83,0}}, +/* 30577 */ {(13<<2)|2,{55,83,0}}, +/* 30578 */ {(13<<2)|2,{55,83,0}}, +/* 30579 */ {(13<<2)|2,{55,83,0}}, +/* 30580 */ {(13<<2)|2,{55,83,0}}, +/* 30581 */ {(13<<2)|2,{55,83,0}}, +/* 30582 */ {(13<<2)|2,{55,83,0}}, +/* 30583 */ {(13<<2)|2,{55,83,0}}, +/* 30584 */ {(13<<2)|2,{55,84,0}}, +/* 30585 */ {(13<<2)|2,{55,84,0}}, +/* 30586 */ {(13<<2)|2,{55,84,0}}, +/* 30587 */ {(13<<2)|2,{55,84,0}}, +/* 30588 */ {(13<<2)|2,{55,84,0}}, +/* 30589 */ {(13<<2)|2,{55,84,0}}, +/* 30590 */ {(13<<2)|2,{55,84,0}}, +/* 30591 */ {(13<<2)|2,{55,84,0}}, +/* 30592 */ {(13<<2)|2,{55,85,0}}, +/* 30593 */ {(13<<2)|2,{55,85,0}}, +/* 30594 */ {(13<<2)|2,{55,85,0}}, +/* 30595 */ {(13<<2)|2,{55,85,0}}, +/* 30596 */ {(13<<2)|2,{55,85,0}}, +/* 30597 */ {(13<<2)|2,{55,85,0}}, +/* 30598 */ {(13<<2)|2,{55,85,0}}, +/* 30599 */ {(13<<2)|2,{55,85,0}}, +/* 30600 */ {(13<<2)|2,{55,86,0}}, +/* 30601 */ {(13<<2)|2,{55,86,0}}, +/* 30602 */ {(13<<2)|2,{55,86,0}}, +/* 30603 */ {(13<<2)|2,{55,86,0}}, +/* 30604 */ {(13<<2)|2,{55,86,0}}, +/* 30605 */ {(13<<2)|2,{55,86,0}}, +/* 30606 */ {(13<<2)|2,{55,86,0}}, +/* 30607 */ {(13<<2)|2,{55,86,0}}, +/* 30608 */ {(13<<2)|2,{55,87,0}}, +/* 30609 */ {(13<<2)|2,{55,87,0}}, +/* 30610 */ {(13<<2)|2,{55,87,0}}, +/* 30611 */ {(13<<2)|2,{55,87,0}}, +/* 30612 */ {(13<<2)|2,{55,87,0}}, +/* 30613 */ {(13<<2)|2,{55,87,0}}, +/* 30614 */ {(13<<2)|2,{55,87,0}}, +/* 30615 */ {(13<<2)|2,{55,87,0}}, +/* 30616 */ {(13<<2)|2,{55,89,0}}, +/* 30617 */ {(13<<2)|2,{55,89,0}}, +/* 30618 */ {(13<<2)|2,{55,89,0}}, +/* 30619 */ {(13<<2)|2,{55,89,0}}, +/* 30620 */ {(13<<2)|2,{55,89,0}}, +/* 30621 */ {(13<<2)|2,{55,89,0}}, +/* 30622 */ {(13<<2)|2,{55,89,0}}, +/* 30623 */ {(13<<2)|2,{55,89,0}}, +/* 30624 */ {(13<<2)|2,{55,106,0}}, +/* 30625 */ {(13<<2)|2,{55,106,0}}, +/* 30626 */ {(13<<2)|2,{55,106,0}}, +/* 30627 */ {(13<<2)|2,{55,106,0}}, +/* 30628 */ {(13<<2)|2,{55,106,0}}, +/* 30629 */ {(13<<2)|2,{55,106,0}}, +/* 30630 */ {(13<<2)|2,{55,106,0}}, +/* 30631 */ {(13<<2)|2,{55,106,0}}, +/* 30632 */ {(13<<2)|2,{55,107,0}}, +/* 30633 */ {(13<<2)|2,{55,107,0}}, +/* 30634 */ {(13<<2)|2,{55,107,0}}, +/* 30635 */ {(13<<2)|2,{55,107,0}}, +/* 30636 */ {(13<<2)|2,{55,107,0}}, +/* 30637 */ {(13<<2)|2,{55,107,0}}, +/* 30638 */ {(13<<2)|2,{55,107,0}}, +/* 30639 */ {(13<<2)|2,{55,107,0}}, +/* 30640 */ {(13<<2)|2,{55,113,0}}, +/* 30641 */ {(13<<2)|2,{55,113,0}}, +/* 30642 */ {(13<<2)|2,{55,113,0}}, +/* 30643 */ {(13<<2)|2,{55,113,0}}, +/* 30644 */ {(13<<2)|2,{55,113,0}}, +/* 30645 */ {(13<<2)|2,{55,113,0}}, +/* 30646 */ {(13<<2)|2,{55,113,0}}, +/* 30647 */ {(13<<2)|2,{55,113,0}}, +/* 30648 */ {(13<<2)|2,{55,118,0}}, +/* 30649 */ {(13<<2)|2,{55,118,0}}, +/* 30650 */ {(13<<2)|2,{55,118,0}}, +/* 30651 */ {(13<<2)|2,{55,118,0}}, +/* 30652 */ {(13<<2)|2,{55,118,0}}, +/* 30653 */ {(13<<2)|2,{55,118,0}}, +/* 30654 */ {(13<<2)|2,{55,118,0}}, +/* 30655 */ {(13<<2)|2,{55,118,0}}, +/* 30656 */ {(13<<2)|2,{55,119,0}}, +/* 30657 */ {(13<<2)|2,{55,119,0}}, +/* 30658 */ {(13<<2)|2,{55,119,0}}, +/* 30659 */ {(13<<2)|2,{55,119,0}}, +/* 30660 */ {(13<<2)|2,{55,119,0}}, +/* 30661 */ {(13<<2)|2,{55,119,0}}, +/* 30662 */ {(13<<2)|2,{55,119,0}}, +/* 30663 */ {(13<<2)|2,{55,119,0}}, +/* 30664 */ {(13<<2)|2,{55,120,0}}, +/* 30665 */ {(13<<2)|2,{55,120,0}}, +/* 30666 */ {(13<<2)|2,{55,120,0}}, +/* 30667 */ {(13<<2)|2,{55,120,0}}, +/* 30668 */ {(13<<2)|2,{55,120,0}}, +/* 30669 */ {(13<<2)|2,{55,120,0}}, +/* 30670 */ {(13<<2)|2,{55,120,0}}, +/* 30671 */ {(13<<2)|2,{55,120,0}}, +/* 30672 */ {(13<<2)|2,{55,121,0}}, +/* 30673 */ {(13<<2)|2,{55,121,0}}, +/* 30674 */ {(13<<2)|2,{55,121,0}}, +/* 30675 */ {(13<<2)|2,{55,121,0}}, +/* 30676 */ {(13<<2)|2,{55,121,0}}, +/* 30677 */ {(13<<2)|2,{55,121,0}}, +/* 30678 */ {(13<<2)|2,{55,121,0}}, +/* 30679 */ {(13<<2)|2,{55,121,0}}, +/* 30680 */ {(13<<2)|2,{55,122,0}}, +/* 30681 */ {(13<<2)|2,{55,122,0}}, +/* 30682 */ {(13<<2)|2,{55,122,0}}, +/* 30683 */ {(13<<2)|2,{55,122,0}}, +/* 30684 */ {(13<<2)|2,{55,122,0}}, +/* 30685 */ {(13<<2)|2,{55,122,0}}, +/* 30686 */ {(13<<2)|2,{55,122,0}}, +/* 30687 */ {(13<<2)|2,{55,122,0}}, +/* 30688 */ {(14<<2)|2,{55,38,0}}, +/* 30689 */ {(14<<2)|2,{55,38,0}}, +/* 30690 */ {(14<<2)|2,{55,38,0}}, +/* 30691 */ {(14<<2)|2,{55,38,0}}, +/* 30692 */ {(14<<2)|2,{55,42,0}}, +/* 30693 */ {(14<<2)|2,{55,42,0}}, +/* 30694 */ {(14<<2)|2,{55,42,0}}, +/* 30695 */ {(14<<2)|2,{55,42,0}}, +/* 30696 */ {(14<<2)|2,{55,44,0}}, +/* 30697 */ {(14<<2)|2,{55,44,0}}, +/* 30698 */ {(14<<2)|2,{55,44,0}}, +/* 30699 */ {(14<<2)|2,{55,44,0}}, +/* 30700 */ {(14<<2)|2,{55,59,0}}, +/* 30701 */ {(14<<2)|2,{55,59,0}}, +/* 30702 */ {(14<<2)|2,{55,59,0}}, +/* 30703 */ {(14<<2)|2,{55,59,0}}, +/* 30704 */ {(14<<2)|2,{55,88,0}}, +/* 30705 */ {(14<<2)|2,{55,88,0}}, +/* 30706 */ {(14<<2)|2,{55,88,0}}, +/* 30707 */ {(14<<2)|2,{55,88,0}}, +/* 30708 */ {(14<<2)|2,{55,90,0}}, +/* 30709 */ {(14<<2)|2,{55,90,0}}, +/* 30710 */ {(14<<2)|2,{55,90,0}}, +/* 30711 */ {(14<<2)|2,{55,90,0}}, +/* 30712 */ {(16<<2)|2,{55,33,0}}, +/* 30713 */ {(16<<2)|2,{55,34,0}}, +/* 30714 */ {(16<<2)|2,{55,40,0}}, +/* 30715 */ {(16<<2)|2,{55,41,0}}, +/* 30716 */ {(16<<2)|2,{55,63,0}}, +/* 30717 */ {(6<<2)|1,{55,0,0}}, +/* 30718 */ {(6<<2)|1,{55,0,0}}, +/* 30719 */ {(6<<2)|1,{55,0,0}}, +/* 30720 */ {(16<<2)|3,{56,48,48}}, +/* 30721 */ {(16<<2)|3,{56,48,49}}, +/* 30722 */ {(16<<2)|3,{56,48,50}}, +/* 30723 */ {(16<<2)|3,{56,48,97}}, +/* 30724 */ {(16<<2)|3,{56,48,99}}, +/* 30725 */ {(16<<2)|3,{56,48,101}}, +/* 30726 */ {(16<<2)|3,{56,48,105}}, +/* 30727 */ {(16<<2)|3,{56,48,111}}, +/* 30728 */ {(16<<2)|3,{56,48,115}}, +/* 30729 */ {(16<<2)|3,{56,48,116}}, +/* 30730 */ {(11<<2)|2,{56,48,0}}, +/* 30731 */ {(11<<2)|2,{56,48,0}}, +/* 30732 */ {(11<<2)|2,{56,48,0}}, +/* 30733 */ {(11<<2)|2,{56,48,0}}, +/* 30734 */ {(11<<2)|2,{56,48,0}}, +/* 30735 */ {(11<<2)|2,{56,48,0}}, +/* 30736 */ {(11<<2)|2,{56,48,0}}, +/* 30737 */ {(11<<2)|2,{56,48,0}}, +/* 30738 */ {(11<<2)|2,{56,48,0}}, +/* 30739 */ {(11<<2)|2,{56,48,0}}, +/* 30740 */ {(11<<2)|2,{56,48,0}}, +/* 30741 */ {(11<<2)|2,{56,48,0}}, +/* 30742 */ {(11<<2)|2,{56,48,0}}, +/* 30743 */ {(11<<2)|2,{56,48,0}}, +/* 30744 */ {(11<<2)|2,{56,48,0}}, +/* 30745 */ {(11<<2)|2,{56,48,0}}, +/* 30746 */ {(11<<2)|2,{56,48,0}}, +/* 30747 */ {(11<<2)|2,{56,48,0}}, +/* 30748 */ {(11<<2)|2,{56,48,0}}, +/* 30749 */ {(11<<2)|2,{56,48,0}}, +/* 30750 */ {(11<<2)|2,{56,48,0}}, +/* 30751 */ {(11<<2)|2,{56,48,0}}, +/* 30752 */ {(16<<2)|3,{56,49,48}}, +/* 30753 */ {(16<<2)|3,{56,49,49}}, +/* 30754 */ {(16<<2)|3,{56,49,50}}, +/* 30755 */ {(16<<2)|3,{56,49,97}}, +/* 30756 */ {(16<<2)|3,{56,49,99}}, +/* 30757 */ {(16<<2)|3,{56,49,101}}, +/* 30758 */ {(16<<2)|3,{56,49,105}}, +/* 30759 */ {(16<<2)|3,{56,49,111}}, +/* 30760 */ {(16<<2)|3,{56,49,115}}, +/* 30761 */ {(16<<2)|3,{56,49,116}}, +/* 30762 */ {(11<<2)|2,{56,49,0}}, +/* 30763 */ {(11<<2)|2,{56,49,0}}, +/* 30764 */ {(11<<2)|2,{56,49,0}}, +/* 30765 */ {(11<<2)|2,{56,49,0}}, +/* 30766 */ {(11<<2)|2,{56,49,0}}, +/* 30767 */ {(11<<2)|2,{56,49,0}}, +/* 30768 */ {(11<<2)|2,{56,49,0}}, +/* 30769 */ {(11<<2)|2,{56,49,0}}, +/* 30770 */ {(11<<2)|2,{56,49,0}}, +/* 30771 */ {(11<<2)|2,{56,49,0}}, +/* 30772 */ {(11<<2)|2,{56,49,0}}, +/* 30773 */ {(11<<2)|2,{56,49,0}}, +/* 30774 */ {(11<<2)|2,{56,49,0}}, +/* 30775 */ {(11<<2)|2,{56,49,0}}, +/* 30776 */ {(11<<2)|2,{56,49,0}}, +/* 30777 */ {(11<<2)|2,{56,49,0}}, +/* 30778 */ {(11<<2)|2,{56,49,0}}, +/* 30779 */ {(11<<2)|2,{56,49,0}}, +/* 30780 */ {(11<<2)|2,{56,49,0}}, +/* 30781 */ {(11<<2)|2,{56,49,0}}, +/* 30782 */ {(11<<2)|2,{56,49,0}}, +/* 30783 */ {(11<<2)|2,{56,49,0}}, +/* 30784 */ {(16<<2)|3,{56,50,48}}, +/* 30785 */ {(16<<2)|3,{56,50,49}}, +/* 30786 */ {(16<<2)|3,{56,50,50}}, +/* 30787 */ {(16<<2)|3,{56,50,97}}, +/* 30788 */ {(16<<2)|3,{56,50,99}}, +/* 30789 */ {(16<<2)|3,{56,50,101}}, +/* 30790 */ {(16<<2)|3,{56,50,105}}, +/* 30791 */ {(16<<2)|3,{56,50,111}}, +/* 30792 */ {(16<<2)|3,{56,50,115}}, +/* 30793 */ {(16<<2)|3,{56,50,116}}, +/* 30794 */ {(11<<2)|2,{56,50,0}}, +/* 30795 */ {(11<<2)|2,{56,50,0}}, +/* 30796 */ {(11<<2)|2,{56,50,0}}, +/* 30797 */ {(11<<2)|2,{56,50,0}}, +/* 30798 */ {(11<<2)|2,{56,50,0}}, +/* 30799 */ {(11<<2)|2,{56,50,0}}, +/* 30800 */ {(11<<2)|2,{56,50,0}}, +/* 30801 */ {(11<<2)|2,{56,50,0}}, +/* 30802 */ {(11<<2)|2,{56,50,0}}, +/* 30803 */ {(11<<2)|2,{56,50,0}}, +/* 30804 */ {(11<<2)|2,{56,50,0}}, +/* 30805 */ {(11<<2)|2,{56,50,0}}, +/* 30806 */ {(11<<2)|2,{56,50,0}}, +/* 30807 */ {(11<<2)|2,{56,50,0}}, +/* 30808 */ {(11<<2)|2,{56,50,0}}, +/* 30809 */ {(11<<2)|2,{56,50,0}}, +/* 30810 */ {(11<<2)|2,{56,50,0}}, +/* 30811 */ {(11<<2)|2,{56,50,0}}, +/* 30812 */ {(11<<2)|2,{56,50,0}}, +/* 30813 */ {(11<<2)|2,{56,50,0}}, +/* 30814 */ {(11<<2)|2,{56,50,0}}, +/* 30815 */ {(11<<2)|2,{56,50,0}}, +/* 30816 */ {(16<<2)|3,{56,97,48}}, +/* 30817 */ {(16<<2)|3,{56,97,49}}, +/* 30818 */ {(16<<2)|3,{56,97,50}}, +/* 30819 */ {(16<<2)|3,{56,97,97}}, +/* 30820 */ {(16<<2)|3,{56,97,99}}, +/* 30821 */ {(16<<2)|3,{56,97,101}}, +/* 30822 */ {(16<<2)|3,{56,97,105}}, +/* 30823 */ {(16<<2)|3,{56,97,111}}, +/* 30824 */ {(16<<2)|3,{56,97,115}}, +/* 30825 */ {(16<<2)|3,{56,97,116}}, +/* 30826 */ {(11<<2)|2,{56,97,0}}, +/* 30827 */ {(11<<2)|2,{56,97,0}}, +/* 30828 */ {(11<<2)|2,{56,97,0}}, +/* 30829 */ {(11<<2)|2,{56,97,0}}, +/* 30830 */ {(11<<2)|2,{56,97,0}}, +/* 30831 */ {(11<<2)|2,{56,97,0}}, +/* 30832 */ {(11<<2)|2,{56,97,0}}, +/* 30833 */ {(11<<2)|2,{56,97,0}}, +/* 30834 */ {(11<<2)|2,{56,97,0}}, +/* 30835 */ {(11<<2)|2,{56,97,0}}, +/* 30836 */ {(11<<2)|2,{56,97,0}}, +/* 30837 */ {(11<<2)|2,{56,97,0}}, +/* 30838 */ {(11<<2)|2,{56,97,0}}, +/* 30839 */ {(11<<2)|2,{56,97,0}}, +/* 30840 */ {(11<<2)|2,{56,97,0}}, +/* 30841 */ {(11<<2)|2,{56,97,0}}, +/* 30842 */ {(11<<2)|2,{56,97,0}}, +/* 30843 */ {(11<<2)|2,{56,97,0}}, +/* 30844 */ {(11<<2)|2,{56,97,0}}, +/* 30845 */ {(11<<2)|2,{56,97,0}}, +/* 30846 */ {(11<<2)|2,{56,97,0}}, +/* 30847 */ {(11<<2)|2,{56,97,0}}, +/* 30848 */ {(16<<2)|3,{56,99,48}}, +/* 30849 */ {(16<<2)|3,{56,99,49}}, +/* 30850 */ {(16<<2)|3,{56,99,50}}, +/* 30851 */ {(16<<2)|3,{56,99,97}}, +/* 30852 */ {(16<<2)|3,{56,99,99}}, +/* 30853 */ {(16<<2)|3,{56,99,101}}, +/* 30854 */ {(16<<2)|3,{56,99,105}}, +/* 30855 */ {(16<<2)|3,{56,99,111}}, +/* 30856 */ {(16<<2)|3,{56,99,115}}, +/* 30857 */ {(16<<2)|3,{56,99,116}}, +/* 30858 */ {(11<<2)|2,{56,99,0}}, +/* 30859 */ {(11<<2)|2,{56,99,0}}, +/* 30860 */ {(11<<2)|2,{56,99,0}}, +/* 30861 */ {(11<<2)|2,{56,99,0}}, +/* 30862 */ {(11<<2)|2,{56,99,0}}, +/* 30863 */ {(11<<2)|2,{56,99,0}}, +/* 30864 */ {(11<<2)|2,{56,99,0}}, +/* 30865 */ {(11<<2)|2,{56,99,0}}, +/* 30866 */ {(11<<2)|2,{56,99,0}}, +/* 30867 */ {(11<<2)|2,{56,99,0}}, +/* 30868 */ {(11<<2)|2,{56,99,0}}, +/* 30869 */ {(11<<2)|2,{56,99,0}}, +/* 30870 */ {(11<<2)|2,{56,99,0}}, +/* 30871 */ {(11<<2)|2,{56,99,0}}, +/* 30872 */ {(11<<2)|2,{56,99,0}}, +/* 30873 */ {(11<<2)|2,{56,99,0}}, +/* 30874 */ {(11<<2)|2,{56,99,0}}, +/* 30875 */ {(11<<2)|2,{56,99,0}}, +/* 30876 */ {(11<<2)|2,{56,99,0}}, +/* 30877 */ {(11<<2)|2,{56,99,0}}, +/* 30878 */ {(11<<2)|2,{56,99,0}}, +/* 30879 */ {(11<<2)|2,{56,99,0}}, +/* 30880 */ {(16<<2)|3,{56,101,48}}, +/* 30881 */ {(16<<2)|3,{56,101,49}}, +/* 30882 */ {(16<<2)|3,{56,101,50}}, +/* 30883 */ {(16<<2)|3,{56,101,97}}, +/* 30884 */ {(16<<2)|3,{56,101,99}}, +/* 30885 */ {(16<<2)|3,{56,101,101}}, +/* 30886 */ {(16<<2)|3,{56,101,105}}, +/* 30887 */ {(16<<2)|3,{56,101,111}}, +/* 30888 */ {(16<<2)|3,{56,101,115}}, +/* 30889 */ {(16<<2)|3,{56,101,116}}, +/* 30890 */ {(11<<2)|2,{56,101,0}}, +/* 30891 */ {(11<<2)|2,{56,101,0}}, +/* 30892 */ {(11<<2)|2,{56,101,0}}, +/* 30893 */ {(11<<2)|2,{56,101,0}}, +/* 30894 */ {(11<<2)|2,{56,101,0}}, +/* 30895 */ {(11<<2)|2,{56,101,0}}, +/* 30896 */ {(11<<2)|2,{56,101,0}}, +/* 30897 */ {(11<<2)|2,{56,101,0}}, +/* 30898 */ {(11<<2)|2,{56,101,0}}, +/* 30899 */ {(11<<2)|2,{56,101,0}}, +/* 30900 */ {(11<<2)|2,{56,101,0}}, +/* 30901 */ {(11<<2)|2,{56,101,0}}, +/* 30902 */ {(11<<2)|2,{56,101,0}}, +/* 30903 */ {(11<<2)|2,{56,101,0}}, +/* 30904 */ {(11<<2)|2,{56,101,0}}, +/* 30905 */ {(11<<2)|2,{56,101,0}}, +/* 30906 */ {(11<<2)|2,{56,101,0}}, +/* 30907 */ {(11<<2)|2,{56,101,0}}, +/* 30908 */ {(11<<2)|2,{56,101,0}}, +/* 30909 */ {(11<<2)|2,{56,101,0}}, +/* 30910 */ {(11<<2)|2,{56,101,0}}, +/* 30911 */ {(11<<2)|2,{56,101,0}}, +/* 30912 */ {(16<<2)|3,{56,105,48}}, +/* 30913 */ {(16<<2)|3,{56,105,49}}, +/* 30914 */ {(16<<2)|3,{56,105,50}}, +/* 30915 */ {(16<<2)|3,{56,105,97}}, +/* 30916 */ {(16<<2)|3,{56,105,99}}, +/* 30917 */ {(16<<2)|3,{56,105,101}}, +/* 30918 */ {(16<<2)|3,{56,105,105}}, +/* 30919 */ {(16<<2)|3,{56,105,111}}, +/* 30920 */ {(16<<2)|3,{56,105,115}}, +/* 30921 */ {(16<<2)|3,{56,105,116}}, +/* 30922 */ {(11<<2)|2,{56,105,0}}, +/* 30923 */ {(11<<2)|2,{56,105,0}}, +/* 30924 */ {(11<<2)|2,{56,105,0}}, +/* 30925 */ {(11<<2)|2,{56,105,0}}, +/* 30926 */ {(11<<2)|2,{56,105,0}}, +/* 30927 */ {(11<<2)|2,{56,105,0}}, +/* 30928 */ {(11<<2)|2,{56,105,0}}, +/* 30929 */ {(11<<2)|2,{56,105,0}}, +/* 30930 */ {(11<<2)|2,{56,105,0}}, +/* 30931 */ {(11<<2)|2,{56,105,0}}, +/* 30932 */ {(11<<2)|2,{56,105,0}}, +/* 30933 */ {(11<<2)|2,{56,105,0}}, +/* 30934 */ {(11<<2)|2,{56,105,0}}, +/* 30935 */ {(11<<2)|2,{56,105,0}}, +/* 30936 */ {(11<<2)|2,{56,105,0}}, +/* 30937 */ {(11<<2)|2,{56,105,0}}, +/* 30938 */ {(11<<2)|2,{56,105,0}}, +/* 30939 */ {(11<<2)|2,{56,105,0}}, +/* 30940 */ {(11<<2)|2,{56,105,0}}, +/* 30941 */ {(11<<2)|2,{56,105,0}}, +/* 30942 */ {(11<<2)|2,{56,105,0}}, +/* 30943 */ {(11<<2)|2,{56,105,0}}, +/* 30944 */ {(16<<2)|3,{56,111,48}}, +/* 30945 */ {(16<<2)|3,{56,111,49}}, +/* 30946 */ {(16<<2)|3,{56,111,50}}, +/* 30947 */ {(16<<2)|3,{56,111,97}}, +/* 30948 */ {(16<<2)|3,{56,111,99}}, +/* 30949 */ {(16<<2)|3,{56,111,101}}, +/* 30950 */ {(16<<2)|3,{56,111,105}}, +/* 30951 */ {(16<<2)|3,{56,111,111}}, +/* 30952 */ {(16<<2)|3,{56,111,115}}, +/* 30953 */ {(16<<2)|3,{56,111,116}}, +/* 30954 */ {(11<<2)|2,{56,111,0}}, +/* 30955 */ {(11<<2)|2,{56,111,0}}, +/* 30956 */ {(11<<2)|2,{56,111,0}}, +/* 30957 */ {(11<<2)|2,{56,111,0}}, +/* 30958 */ {(11<<2)|2,{56,111,0}}, +/* 30959 */ {(11<<2)|2,{56,111,0}}, +/* 30960 */ {(11<<2)|2,{56,111,0}}, +/* 30961 */ {(11<<2)|2,{56,111,0}}, +/* 30962 */ {(11<<2)|2,{56,111,0}}, +/* 30963 */ {(11<<2)|2,{56,111,0}}, +/* 30964 */ {(11<<2)|2,{56,111,0}}, +/* 30965 */ {(11<<2)|2,{56,111,0}}, +/* 30966 */ {(11<<2)|2,{56,111,0}}, +/* 30967 */ {(11<<2)|2,{56,111,0}}, +/* 30968 */ {(11<<2)|2,{56,111,0}}, +/* 30969 */ {(11<<2)|2,{56,111,0}}, +/* 30970 */ {(11<<2)|2,{56,111,0}}, +/* 30971 */ {(11<<2)|2,{56,111,0}}, +/* 30972 */ {(11<<2)|2,{56,111,0}}, +/* 30973 */ {(11<<2)|2,{56,111,0}}, +/* 30974 */ {(11<<2)|2,{56,111,0}}, +/* 30975 */ {(11<<2)|2,{56,111,0}}, +/* 30976 */ {(16<<2)|3,{56,115,48}}, +/* 30977 */ {(16<<2)|3,{56,115,49}}, +/* 30978 */ {(16<<2)|3,{56,115,50}}, +/* 30979 */ {(16<<2)|3,{56,115,97}}, +/* 30980 */ {(16<<2)|3,{56,115,99}}, +/* 30981 */ {(16<<2)|3,{56,115,101}}, +/* 30982 */ {(16<<2)|3,{56,115,105}}, +/* 30983 */ {(16<<2)|3,{56,115,111}}, +/* 30984 */ {(16<<2)|3,{56,115,115}}, +/* 30985 */ {(16<<2)|3,{56,115,116}}, +/* 30986 */ {(11<<2)|2,{56,115,0}}, +/* 30987 */ {(11<<2)|2,{56,115,0}}, +/* 30988 */ {(11<<2)|2,{56,115,0}}, +/* 30989 */ {(11<<2)|2,{56,115,0}}, +/* 30990 */ {(11<<2)|2,{56,115,0}}, +/* 30991 */ {(11<<2)|2,{56,115,0}}, +/* 30992 */ {(11<<2)|2,{56,115,0}}, +/* 30993 */ {(11<<2)|2,{56,115,0}}, +/* 30994 */ {(11<<2)|2,{56,115,0}}, +/* 30995 */ {(11<<2)|2,{56,115,0}}, +/* 30996 */ {(11<<2)|2,{56,115,0}}, +/* 30997 */ {(11<<2)|2,{56,115,0}}, +/* 30998 */ {(11<<2)|2,{56,115,0}}, +/* 30999 */ {(11<<2)|2,{56,115,0}}, +/* 31000 */ {(11<<2)|2,{56,115,0}}, +/* 31001 */ {(11<<2)|2,{56,115,0}}, +/* 31002 */ {(11<<2)|2,{56,115,0}}, +/* 31003 */ {(11<<2)|2,{56,115,0}}, +/* 31004 */ {(11<<2)|2,{56,115,0}}, +/* 31005 */ {(11<<2)|2,{56,115,0}}, +/* 31006 */ {(11<<2)|2,{56,115,0}}, +/* 31007 */ {(11<<2)|2,{56,115,0}}, +/* 31008 */ {(16<<2)|3,{56,116,48}}, +/* 31009 */ {(16<<2)|3,{56,116,49}}, +/* 31010 */ {(16<<2)|3,{56,116,50}}, +/* 31011 */ {(16<<2)|3,{56,116,97}}, +/* 31012 */ {(16<<2)|3,{56,116,99}}, +/* 31013 */ {(16<<2)|3,{56,116,101}}, +/* 31014 */ {(16<<2)|3,{56,116,105}}, +/* 31015 */ {(16<<2)|3,{56,116,111}}, +/* 31016 */ {(16<<2)|3,{56,116,115}}, +/* 31017 */ {(16<<2)|3,{56,116,116}}, +/* 31018 */ {(11<<2)|2,{56,116,0}}, +/* 31019 */ {(11<<2)|2,{56,116,0}}, +/* 31020 */ {(11<<2)|2,{56,116,0}}, +/* 31021 */ {(11<<2)|2,{56,116,0}}, +/* 31022 */ {(11<<2)|2,{56,116,0}}, +/* 31023 */ {(11<<2)|2,{56,116,0}}, +/* 31024 */ {(11<<2)|2,{56,116,0}}, +/* 31025 */ {(11<<2)|2,{56,116,0}}, +/* 31026 */ {(11<<2)|2,{56,116,0}}, +/* 31027 */ {(11<<2)|2,{56,116,0}}, +/* 31028 */ {(11<<2)|2,{56,116,0}}, +/* 31029 */ {(11<<2)|2,{56,116,0}}, +/* 31030 */ {(11<<2)|2,{56,116,0}}, +/* 31031 */ {(11<<2)|2,{56,116,0}}, +/* 31032 */ {(11<<2)|2,{56,116,0}}, +/* 31033 */ {(11<<2)|2,{56,116,0}}, +/* 31034 */ {(11<<2)|2,{56,116,0}}, +/* 31035 */ {(11<<2)|2,{56,116,0}}, +/* 31036 */ {(11<<2)|2,{56,116,0}}, +/* 31037 */ {(11<<2)|2,{56,116,0}}, +/* 31038 */ {(11<<2)|2,{56,116,0}}, +/* 31039 */ {(11<<2)|2,{56,116,0}}, +/* 31040 */ {(12<<2)|2,{56,32,0}}, +/* 31041 */ {(12<<2)|2,{56,32,0}}, +/* 31042 */ {(12<<2)|2,{56,32,0}}, +/* 31043 */ {(12<<2)|2,{56,32,0}}, +/* 31044 */ {(12<<2)|2,{56,32,0}}, +/* 31045 */ {(12<<2)|2,{56,32,0}}, +/* 31046 */ {(12<<2)|2,{56,32,0}}, +/* 31047 */ {(12<<2)|2,{56,32,0}}, +/* 31048 */ {(12<<2)|2,{56,32,0}}, +/* 31049 */ {(12<<2)|2,{56,32,0}}, +/* 31050 */ {(12<<2)|2,{56,32,0}}, +/* 31051 */ {(12<<2)|2,{56,32,0}}, +/* 31052 */ {(12<<2)|2,{56,32,0}}, +/* 31053 */ {(12<<2)|2,{56,32,0}}, +/* 31054 */ {(12<<2)|2,{56,32,0}}, +/* 31055 */ {(12<<2)|2,{56,32,0}}, +/* 31056 */ {(12<<2)|2,{56,37,0}}, +/* 31057 */ {(12<<2)|2,{56,37,0}}, +/* 31058 */ {(12<<2)|2,{56,37,0}}, +/* 31059 */ {(12<<2)|2,{56,37,0}}, +/* 31060 */ {(12<<2)|2,{56,37,0}}, +/* 31061 */ {(12<<2)|2,{56,37,0}}, +/* 31062 */ {(12<<2)|2,{56,37,0}}, +/* 31063 */ {(12<<2)|2,{56,37,0}}, +/* 31064 */ {(12<<2)|2,{56,37,0}}, +/* 31065 */ {(12<<2)|2,{56,37,0}}, +/* 31066 */ {(12<<2)|2,{56,37,0}}, +/* 31067 */ {(12<<2)|2,{56,37,0}}, +/* 31068 */ {(12<<2)|2,{56,37,0}}, +/* 31069 */ {(12<<2)|2,{56,37,0}}, +/* 31070 */ {(12<<2)|2,{56,37,0}}, +/* 31071 */ {(12<<2)|2,{56,37,0}}, +/* 31072 */ {(12<<2)|2,{56,45,0}}, +/* 31073 */ {(12<<2)|2,{56,45,0}}, +/* 31074 */ {(12<<2)|2,{56,45,0}}, +/* 31075 */ {(12<<2)|2,{56,45,0}}, +/* 31076 */ {(12<<2)|2,{56,45,0}}, +/* 31077 */ {(12<<2)|2,{56,45,0}}, +/* 31078 */ {(12<<2)|2,{56,45,0}}, +/* 31079 */ {(12<<2)|2,{56,45,0}}, +/* 31080 */ {(12<<2)|2,{56,45,0}}, +/* 31081 */ {(12<<2)|2,{56,45,0}}, +/* 31082 */ {(12<<2)|2,{56,45,0}}, +/* 31083 */ {(12<<2)|2,{56,45,0}}, +/* 31084 */ {(12<<2)|2,{56,45,0}}, +/* 31085 */ {(12<<2)|2,{56,45,0}}, +/* 31086 */ {(12<<2)|2,{56,45,0}}, +/* 31087 */ {(12<<2)|2,{56,45,0}}, +/* 31088 */ {(12<<2)|2,{56,46,0}}, +/* 31089 */ {(12<<2)|2,{56,46,0}}, +/* 31090 */ {(12<<2)|2,{56,46,0}}, +/* 31091 */ {(12<<2)|2,{56,46,0}}, +/* 31092 */ {(12<<2)|2,{56,46,0}}, +/* 31093 */ {(12<<2)|2,{56,46,0}}, +/* 31094 */ {(12<<2)|2,{56,46,0}}, +/* 31095 */ {(12<<2)|2,{56,46,0}}, +/* 31096 */ {(12<<2)|2,{56,46,0}}, +/* 31097 */ {(12<<2)|2,{56,46,0}}, +/* 31098 */ {(12<<2)|2,{56,46,0}}, +/* 31099 */ {(12<<2)|2,{56,46,0}}, +/* 31100 */ {(12<<2)|2,{56,46,0}}, +/* 31101 */ {(12<<2)|2,{56,46,0}}, +/* 31102 */ {(12<<2)|2,{56,46,0}}, +/* 31103 */ {(12<<2)|2,{56,46,0}}, +/* 31104 */ {(12<<2)|2,{56,47,0}}, +/* 31105 */ {(12<<2)|2,{56,47,0}}, +/* 31106 */ {(12<<2)|2,{56,47,0}}, +/* 31107 */ {(12<<2)|2,{56,47,0}}, +/* 31108 */ {(12<<2)|2,{56,47,0}}, +/* 31109 */ {(12<<2)|2,{56,47,0}}, +/* 31110 */ {(12<<2)|2,{56,47,0}}, +/* 31111 */ {(12<<2)|2,{56,47,0}}, +/* 31112 */ {(12<<2)|2,{56,47,0}}, +/* 31113 */ {(12<<2)|2,{56,47,0}}, +/* 31114 */ {(12<<2)|2,{56,47,0}}, +/* 31115 */ {(12<<2)|2,{56,47,0}}, +/* 31116 */ {(12<<2)|2,{56,47,0}}, +/* 31117 */ {(12<<2)|2,{56,47,0}}, +/* 31118 */ {(12<<2)|2,{56,47,0}}, +/* 31119 */ {(12<<2)|2,{56,47,0}}, +/* 31120 */ {(12<<2)|2,{56,51,0}}, +/* 31121 */ {(12<<2)|2,{56,51,0}}, +/* 31122 */ {(12<<2)|2,{56,51,0}}, +/* 31123 */ {(12<<2)|2,{56,51,0}}, +/* 31124 */ {(12<<2)|2,{56,51,0}}, +/* 31125 */ {(12<<2)|2,{56,51,0}}, +/* 31126 */ {(12<<2)|2,{56,51,0}}, +/* 31127 */ {(12<<2)|2,{56,51,0}}, +/* 31128 */ {(12<<2)|2,{56,51,0}}, +/* 31129 */ {(12<<2)|2,{56,51,0}}, +/* 31130 */ {(12<<2)|2,{56,51,0}}, +/* 31131 */ {(12<<2)|2,{56,51,0}}, +/* 31132 */ {(12<<2)|2,{56,51,0}}, +/* 31133 */ {(12<<2)|2,{56,51,0}}, +/* 31134 */ {(12<<2)|2,{56,51,0}}, +/* 31135 */ {(12<<2)|2,{56,51,0}}, +/* 31136 */ {(12<<2)|2,{56,52,0}}, +/* 31137 */ {(12<<2)|2,{56,52,0}}, +/* 31138 */ {(12<<2)|2,{56,52,0}}, +/* 31139 */ {(12<<2)|2,{56,52,0}}, +/* 31140 */ {(12<<2)|2,{56,52,0}}, +/* 31141 */ {(12<<2)|2,{56,52,0}}, +/* 31142 */ {(12<<2)|2,{56,52,0}}, +/* 31143 */ {(12<<2)|2,{56,52,0}}, +/* 31144 */ {(12<<2)|2,{56,52,0}}, +/* 31145 */ {(12<<2)|2,{56,52,0}}, +/* 31146 */ {(12<<2)|2,{56,52,0}}, +/* 31147 */ {(12<<2)|2,{56,52,0}}, +/* 31148 */ {(12<<2)|2,{56,52,0}}, +/* 31149 */ {(12<<2)|2,{56,52,0}}, +/* 31150 */ {(12<<2)|2,{56,52,0}}, +/* 31151 */ {(12<<2)|2,{56,52,0}}, +/* 31152 */ {(12<<2)|2,{56,53,0}}, +/* 31153 */ {(12<<2)|2,{56,53,0}}, +/* 31154 */ {(12<<2)|2,{56,53,0}}, +/* 31155 */ {(12<<2)|2,{56,53,0}}, +/* 31156 */ {(12<<2)|2,{56,53,0}}, +/* 31157 */ {(12<<2)|2,{56,53,0}}, +/* 31158 */ {(12<<2)|2,{56,53,0}}, +/* 31159 */ {(12<<2)|2,{56,53,0}}, +/* 31160 */ {(12<<2)|2,{56,53,0}}, +/* 31161 */ {(12<<2)|2,{56,53,0}}, +/* 31162 */ {(12<<2)|2,{56,53,0}}, +/* 31163 */ {(12<<2)|2,{56,53,0}}, +/* 31164 */ {(12<<2)|2,{56,53,0}}, +/* 31165 */ {(12<<2)|2,{56,53,0}}, +/* 31166 */ {(12<<2)|2,{56,53,0}}, +/* 31167 */ {(12<<2)|2,{56,53,0}}, +/* 31168 */ {(12<<2)|2,{56,54,0}}, +/* 31169 */ {(12<<2)|2,{56,54,0}}, +/* 31170 */ {(12<<2)|2,{56,54,0}}, +/* 31171 */ {(12<<2)|2,{56,54,0}}, +/* 31172 */ {(12<<2)|2,{56,54,0}}, +/* 31173 */ {(12<<2)|2,{56,54,0}}, +/* 31174 */ {(12<<2)|2,{56,54,0}}, +/* 31175 */ {(12<<2)|2,{56,54,0}}, +/* 31176 */ {(12<<2)|2,{56,54,0}}, +/* 31177 */ {(12<<2)|2,{56,54,0}}, +/* 31178 */ {(12<<2)|2,{56,54,0}}, +/* 31179 */ {(12<<2)|2,{56,54,0}}, +/* 31180 */ {(12<<2)|2,{56,54,0}}, +/* 31181 */ {(12<<2)|2,{56,54,0}}, +/* 31182 */ {(12<<2)|2,{56,54,0}}, +/* 31183 */ {(12<<2)|2,{56,54,0}}, +/* 31184 */ {(12<<2)|2,{56,55,0}}, +/* 31185 */ {(12<<2)|2,{56,55,0}}, +/* 31186 */ {(12<<2)|2,{56,55,0}}, +/* 31187 */ {(12<<2)|2,{56,55,0}}, +/* 31188 */ {(12<<2)|2,{56,55,0}}, +/* 31189 */ {(12<<2)|2,{56,55,0}}, +/* 31190 */ {(12<<2)|2,{56,55,0}}, +/* 31191 */ {(12<<2)|2,{56,55,0}}, +/* 31192 */ {(12<<2)|2,{56,55,0}}, +/* 31193 */ {(12<<2)|2,{56,55,0}}, +/* 31194 */ {(12<<2)|2,{56,55,0}}, +/* 31195 */ {(12<<2)|2,{56,55,0}}, +/* 31196 */ {(12<<2)|2,{56,55,0}}, +/* 31197 */ {(12<<2)|2,{56,55,0}}, +/* 31198 */ {(12<<2)|2,{56,55,0}}, +/* 31199 */ {(12<<2)|2,{56,55,0}}, +/* 31200 */ {(12<<2)|2,{56,56,0}}, +/* 31201 */ {(12<<2)|2,{56,56,0}}, +/* 31202 */ {(12<<2)|2,{56,56,0}}, +/* 31203 */ {(12<<2)|2,{56,56,0}}, +/* 31204 */ {(12<<2)|2,{56,56,0}}, +/* 31205 */ {(12<<2)|2,{56,56,0}}, +/* 31206 */ {(12<<2)|2,{56,56,0}}, +/* 31207 */ {(12<<2)|2,{56,56,0}}, +/* 31208 */ {(12<<2)|2,{56,56,0}}, +/* 31209 */ {(12<<2)|2,{56,56,0}}, +/* 31210 */ {(12<<2)|2,{56,56,0}}, +/* 31211 */ {(12<<2)|2,{56,56,0}}, +/* 31212 */ {(12<<2)|2,{56,56,0}}, +/* 31213 */ {(12<<2)|2,{56,56,0}}, +/* 31214 */ {(12<<2)|2,{56,56,0}}, +/* 31215 */ {(12<<2)|2,{56,56,0}}, +/* 31216 */ {(12<<2)|2,{56,57,0}}, +/* 31217 */ {(12<<2)|2,{56,57,0}}, +/* 31218 */ {(12<<2)|2,{56,57,0}}, +/* 31219 */ {(12<<2)|2,{56,57,0}}, +/* 31220 */ {(12<<2)|2,{56,57,0}}, +/* 31221 */ {(12<<2)|2,{56,57,0}}, +/* 31222 */ {(12<<2)|2,{56,57,0}}, +/* 31223 */ {(12<<2)|2,{56,57,0}}, +/* 31224 */ {(12<<2)|2,{56,57,0}}, +/* 31225 */ {(12<<2)|2,{56,57,0}}, +/* 31226 */ {(12<<2)|2,{56,57,0}}, +/* 31227 */ {(12<<2)|2,{56,57,0}}, +/* 31228 */ {(12<<2)|2,{56,57,0}}, +/* 31229 */ {(12<<2)|2,{56,57,0}}, +/* 31230 */ {(12<<2)|2,{56,57,0}}, +/* 31231 */ {(12<<2)|2,{56,57,0}}, +/* 31232 */ {(12<<2)|2,{56,61,0}}, +/* 31233 */ {(12<<2)|2,{56,61,0}}, +/* 31234 */ {(12<<2)|2,{56,61,0}}, +/* 31235 */ {(12<<2)|2,{56,61,0}}, +/* 31236 */ {(12<<2)|2,{56,61,0}}, +/* 31237 */ {(12<<2)|2,{56,61,0}}, +/* 31238 */ {(12<<2)|2,{56,61,0}}, +/* 31239 */ {(12<<2)|2,{56,61,0}}, +/* 31240 */ {(12<<2)|2,{56,61,0}}, +/* 31241 */ {(12<<2)|2,{56,61,0}}, +/* 31242 */ {(12<<2)|2,{56,61,0}}, +/* 31243 */ {(12<<2)|2,{56,61,0}}, +/* 31244 */ {(12<<2)|2,{56,61,0}}, +/* 31245 */ {(12<<2)|2,{56,61,0}}, +/* 31246 */ {(12<<2)|2,{56,61,0}}, +/* 31247 */ {(12<<2)|2,{56,61,0}}, +/* 31248 */ {(12<<2)|2,{56,65,0}}, +/* 31249 */ {(12<<2)|2,{56,65,0}}, +/* 31250 */ {(12<<2)|2,{56,65,0}}, +/* 31251 */ {(12<<2)|2,{56,65,0}}, +/* 31252 */ {(12<<2)|2,{56,65,0}}, +/* 31253 */ {(12<<2)|2,{56,65,0}}, +/* 31254 */ {(12<<2)|2,{56,65,0}}, +/* 31255 */ {(12<<2)|2,{56,65,0}}, +/* 31256 */ {(12<<2)|2,{56,65,0}}, +/* 31257 */ {(12<<2)|2,{56,65,0}}, +/* 31258 */ {(12<<2)|2,{56,65,0}}, +/* 31259 */ {(12<<2)|2,{56,65,0}}, +/* 31260 */ {(12<<2)|2,{56,65,0}}, +/* 31261 */ {(12<<2)|2,{56,65,0}}, +/* 31262 */ {(12<<2)|2,{56,65,0}}, +/* 31263 */ {(12<<2)|2,{56,65,0}}, +/* 31264 */ {(12<<2)|2,{56,95,0}}, +/* 31265 */ {(12<<2)|2,{56,95,0}}, +/* 31266 */ {(12<<2)|2,{56,95,0}}, +/* 31267 */ {(12<<2)|2,{56,95,0}}, +/* 31268 */ {(12<<2)|2,{56,95,0}}, +/* 31269 */ {(12<<2)|2,{56,95,0}}, +/* 31270 */ {(12<<2)|2,{56,95,0}}, +/* 31271 */ {(12<<2)|2,{56,95,0}}, +/* 31272 */ {(12<<2)|2,{56,95,0}}, +/* 31273 */ {(12<<2)|2,{56,95,0}}, +/* 31274 */ {(12<<2)|2,{56,95,0}}, +/* 31275 */ {(12<<2)|2,{56,95,0}}, +/* 31276 */ {(12<<2)|2,{56,95,0}}, +/* 31277 */ {(12<<2)|2,{56,95,0}}, +/* 31278 */ {(12<<2)|2,{56,95,0}}, +/* 31279 */ {(12<<2)|2,{56,95,0}}, +/* 31280 */ {(12<<2)|2,{56,98,0}}, +/* 31281 */ {(12<<2)|2,{56,98,0}}, +/* 31282 */ {(12<<2)|2,{56,98,0}}, +/* 31283 */ {(12<<2)|2,{56,98,0}}, +/* 31284 */ {(12<<2)|2,{56,98,0}}, +/* 31285 */ {(12<<2)|2,{56,98,0}}, +/* 31286 */ {(12<<2)|2,{56,98,0}}, +/* 31287 */ {(12<<2)|2,{56,98,0}}, +/* 31288 */ {(12<<2)|2,{56,98,0}}, +/* 31289 */ {(12<<2)|2,{56,98,0}}, +/* 31290 */ {(12<<2)|2,{56,98,0}}, +/* 31291 */ {(12<<2)|2,{56,98,0}}, +/* 31292 */ {(12<<2)|2,{56,98,0}}, +/* 31293 */ {(12<<2)|2,{56,98,0}}, +/* 31294 */ {(12<<2)|2,{56,98,0}}, +/* 31295 */ {(12<<2)|2,{56,98,0}}, +/* 31296 */ {(12<<2)|2,{56,100,0}}, +/* 31297 */ {(12<<2)|2,{56,100,0}}, +/* 31298 */ {(12<<2)|2,{56,100,0}}, +/* 31299 */ {(12<<2)|2,{56,100,0}}, +/* 31300 */ {(12<<2)|2,{56,100,0}}, +/* 31301 */ {(12<<2)|2,{56,100,0}}, +/* 31302 */ {(12<<2)|2,{56,100,0}}, +/* 31303 */ {(12<<2)|2,{56,100,0}}, +/* 31304 */ {(12<<2)|2,{56,100,0}}, +/* 31305 */ {(12<<2)|2,{56,100,0}}, +/* 31306 */ {(12<<2)|2,{56,100,0}}, +/* 31307 */ {(12<<2)|2,{56,100,0}}, +/* 31308 */ {(12<<2)|2,{56,100,0}}, +/* 31309 */ {(12<<2)|2,{56,100,0}}, +/* 31310 */ {(12<<2)|2,{56,100,0}}, +/* 31311 */ {(12<<2)|2,{56,100,0}}, +/* 31312 */ {(12<<2)|2,{56,102,0}}, +/* 31313 */ {(12<<2)|2,{56,102,0}}, +/* 31314 */ {(12<<2)|2,{56,102,0}}, +/* 31315 */ {(12<<2)|2,{56,102,0}}, +/* 31316 */ {(12<<2)|2,{56,102,0}}, +/* 31317 */ {(12<<2)|2,{56,102,0}}, +/* 31318 */ {(12<<2)|2,{56,102,0}}, +/* 31319 */ {(12<<2)|2,{56,102,0}}, +/* 31320 */ {(12<<2)|2,{56,102,0}}, +/* 31321 */ {(12<<2)|2,{56,102,0}}, +/* 31322 */ {(12<<2)|2,{56,102,0}}, +/* 31323 */ {(12<<2)|2,{56,102,0}}, +/* 31324 */ {(12<<2)|2,{56,102,0}}, +/* 31325 */ {(12<<2)|2,{56,102,0}}, +/* 31326 */ {(12<<2)|2,{56,102,0}}, +/* 31327 */ {(12<<2)|2,{56,102,0}}, +/* 31328 */ {(12<<2)|2,{56,103,0}}, +/* 31329 */ {(12<<2)|2,{56,103,0}}, +/* 31330 */ {(12<<2)|2,{56,103,0}}, +/* 31331 */ {(12<<2)|2,{56,103,0}}, +/* 31332 */ {(12<<2)|2,{56,103,0}}, +/* 31333 */ {(12<<2)|2,{56,103,0}}, +/* 31334 */ {(12<<2)|2,{56,103,0}}, +/* 31335 */ {(12<<2)|2,{56,103,0}}, +/* 31336 */ {(12<<2)|2,{56,103,0}}, +/* 31337 */ {(12<<2)|2,{56,103,0}}, +/* 31338 */ {(12<<2)|2,{56,103,0}}, +/* 31339 */ {(12<<2)|2,{56,103,0}}, +/* 31340 */ {(12<<2)|2,{56,103,0}}, +/* 31341 */ {(12<<2)|2,{56,103,0}}, +/* 31342 */ {(12<<2)|2,{56,103,0}}, +/* 31343 */ {(12<<2)|2,{56,103,0}}, +/* 31344 */ {(12<<2)|2,{56,104,0}}, +/* 31345 */ {(12<<2)|2,{56,104,0}}, +/* 31346 */ {(12<<2)|2,{56,104,0}}, +/* 31347 */ {(12<<2)|2,{56,104,0}}, +/* 31348 */ {(12<<2)|2,{56,104,0}}, +/* 31349 */ {(12<<2)|2,{56,104,0}}, +/* 31350 */ {(12<<2)|2,{56,104,0}}, +/* 31351 */ {(12<<2)|2,{56,104,0}}, +/* 31352 */ {(12<<2)|2,{56,104,0}}, +/* 31353 */ {(12<<2)|2,{56,104,0}}, +/* 31354 */ {(12<<2)|2,{56,104,0}}, +/* 31355 */ {(12<<2)|2,{56,104,0}}, +/* 31356 */ {(12<<2)|2,{56,104,0}}, +/* 31357 */ {(12<<2)|2,{56,104,0}}, +/* 31358 */ {(12<<2)|2,{56,104,0}}, +/* 31359 */ {(12<<2)|2,{56,104,0}}, +/* 31360 */ {(12<<2)|2,{56,108,0}}, +/* 31361 */ {(12<<2)|2,{56,108,0}}, +/* 31362 */ {(12<<2)|2,{56,108,0}}, +/* 31363 */ {(12<<2)|2,{56,108,0}}, +/* 31364 */ {(12<<2)|2,{56,108,0}}, +/* 31365 */ {(12<<2)|2,{56,108,0}}, +/* 31366 */ {(12<<2)|2,{56,108,0}}, +/* 31367 */ {(12<<2)|2,{56,108,0}}, +/* 31368 */ {(12<<2)|2,{56,108,0}}, +/* 31369 */ {(12<<2)|2,{56,108,0}}, +/* 31370 */ {(12<<2)|2,{56,108,0}}, +/* 31371 */ {(12<<2)|2,{56,108,0}}, +/* 31372 */ {(12<<2)|2,{56,108,0}}, +/* 31373 */ {(12<<2)|2,{56,108,0}}, +/* 31374 */ {(12<<2)|2,{56,108,0}}, +/* 31375 */ {(12<<2)|2,{56,108,0}}, +/* 31376 */ {(12<<2)|2,{56,109,0}}, +/* 31377 */ {(12<<2)|2,{56,109,0}}, +/* 31378 */ {(12<<2)|2,{56,109,0}}, +/* 31379 */ {(12<<2)|2,{56,109,0}}, +/* 31380 */ {(12<<2)|2,{56,109,0}}, +/* 31381 */ {(12<<2)|2,{56,109,0}}, +/* 31382 */ {(12<<2)|2,{56,109,0}}, +/* 31383 */ {(12<<2)|2,{56,109,0}}, +/* 31384 */ {(12<<2)|2,{56,109,0}}, +/* 31385 */ {(12<<2)|2,{56,109,0}}, +/* 31386 */ {(12<<2)|2,{56,109,0}}, +/* 31387 */ {(12<<2)|2,{56,109,0}}, +/* 31388 */ {(12<<2)|2,{56,109,0}}, +/* 31389 */ {(12<<2)|2,{56,109,0}}, +/* 31390 */ {(12<<2)|2,{56,109,0}}, +/* 31391 */ {(12<<2)|2,{56,109,0}}, +/* 31392 */ {(12<<2)|2,{56,110,0}}, +/* 31393 */ {(12<<2)|2,{56,110,0}}, +/* 31394 */ {(12<<2)|2,{56,110,0}}, +/* 31395 */ {(12<<2)|2,{56,110,0}}, +/* 31396 */ {(12<<2)|2,{56,110,0}}, +/* 31397 */ {(12<<2)|2,{56,110,0}}, +/* 31398 */ {(12<<2)|2,{56,110,0}}, +/* 31399 */ {(12<<2)|2,{56,110,0}}, +/* 31400 */ {(12<<2)|2,{56,110,0}}, +/* 31401 */ {(12<<2)|2,{56,110,0}}, +/* 31402 */ {(12<<2)|2,{56,110,0}}, +/* 31403 */ {(12<<2)|2,{56,110,0}}, +/* 31404 */ {(12<<2)|2,{56,110,0}}, +/* 31405 */ {(12<<2)|2,{56,110,0}}, +/* 31406 */ {(12<<2)|2,{56,110,0}}, +/* 31407 */ {(12<<2)|2,{56,110,0}}, +/* 31408 */ {(12<<2)|2,{56,112,0}}, +/* 31409 */ {(12<<2)|2,{56,112,0}}, +/* 31410 */ {(12<<2)|2,{56,112,0}}, +/* 31411 */ {(12<<2)|2,{56,112,0}}, +/* 31412 */ {(12<<2)|2,{56,112,0}}, +/* 31413 */ {(12<<2)|2,{56,112,0}}, +/* 31414 */ {(12<<2)|2,{56,112,0}}, +/* 31415 */ {(12<<2)|2,{56,112,0}}, +/* 31416 */ {(12<<2)|2,{56,112,0}}, +/* 31417 */ {(12<<2)|2,{56,112,0}}, +/* 31418 */ {(12<<2)|2,{56,112,0}}, +/* 31419 */ {(12<<2)|2,{56,112,0}}, +/* 31420 */ {(12<<2)|2,{56,112,0}}, +/* 31421 */ {(12<<2)|2,{56,112,0}}, +/* 31422 */ {(12<<2)|2,{56,112,0}}, +/* 31423 */ {(12<<2)|2,{56,112,0}}, +/* 31424 */ {(12<<2)|2,{56,114,0}}, +/* 31425 */ {(12<<2)|2,{56,114,0}}, +/* 31426 */ {(12<<2)|2,{56,114,0}}, +/* 31427 */ {(12<<2)|2,{56,114,0}}, +/* 31428 */ {(12<<2)|2,{56,114,0}}, +/* 31429 */ {(12<<2)|2,{56,114,0}}, +/* 31430 */ {(12<<2)|2,{56,114,0}}, +/* 31431 */ {(12<<2)|2,{56,114,0}}, +/* 31432 */ {(12<<2)|2,{56,114,0}}, +/* 31433 */ {(12<<2)|2,{56,114,0}}, +/* 31434 */ {(12<<2)|2,{56,114,0}}, +/* 31435 */ {(12<<2)|2,{56,114,0}}, +/* 31436 */ {(12<<2)|2,{56,114,0}}, +/* 31437 */ {(12<<2)|2,{56,114,0}}, +/* 31438 */ {(12<<2)|2,{56,114,0}}, +/* 31439 */ {(12<<2)|2,{56,114,0}}, +/* 31440 */ {(12<<2)|2,{56,117,0}}, +/* 31441 */ {(12<<2)|2,{56,117,0}}, +/* 31442 */ {(12<<2)|2,{56,117,0}}, +/* 31443 */ {(12<<2)|2,{56,117,0}}, +/* 31444 */ {(12<<2)|2,{56,117,0}}, +/* 31445 */ {(12<<2)|2,{56,117,0}}, +/* 31446 */ {(12<<2)|2,{56,117,0}}, +/* 31447 */ {(12<<2)|2,{56,117,0}}, +/* 31448 */ {(12<<2)|2,{56,117,0}}, +/* 31449 */ {(12<<2)|2,{56,117,0}}, +/* 31450 */ {(12<<2)|2,{56,117,0}}, +/* 31451 */ {(12<<2)|2,{56,117,0}}, +/* 31452 */ {(12<<2)|2,{56,117,0}}, +/* 31453 */ {(12<<2)|2,{56,117,0}}, +/* 31454 */ {(12<<2)|2,{56,117,0}}, +/* 31455 */ {(12<<2)|2,{56,117,0}}, +/* 31456 */ {(13<<2)|2,{56,58,0}}, +/* 31457 */ {(13<<2)|2,{56,58,0}}, +/* 31458 */ {(13<<2)|2,{56,58,0}}, +/* 31459 */ {(13<<2)|2,{56,58,0}}, +/* 31460 */ {(13<<2)|2,{56,58,0}}, +/* 31461 */ {(13<<2)|2,{56,58,0}}, +/* 31462 */ {(13<<2)|2,{56,58,0}}, +/* 31463 */ {(13<<2)|2,{56,58,0}}, +/* 31464 */ {(13<<2)|2,{56,66,0}}, +/* 31465 */ {(13<<2)|2,{56,66,0}}, +/* 31466 */ {(13<<2)|2,{56,66,0}}, +/* 31467 */ {(13<<2)|2,{56,66,0}}, +/* 31468 */ {(13<<2)|2,{56,66,0}}, +/* 31469 */ {(13<<2)|2,{56,66,0}}, +/* 31470 */ {(13<<2)|2,{56,66,0}}, +/* 31471 */ {(13<<2)|2,{56,66,0}}, +/* 31472 */ {(13<<2)|2,{56,67,0}}, +/* 31473 */ {(13<<2)|2,{56,67,0}}, +/* 31474 */ {(13<<2)|2,{56,67,0}}, +/* 31475 */ {(13<<2)|2,{56,67,0}}, +/* 31476 */ {(13<<2)|2,{56,67,0}}, +/* 31477 */ {(13<<2)|2,{56,67,0}}, +/* 31478 */ {(13<<2)|2,{56,67,0}}, +/* 31479 */ {(13<<2)|2,{56,67,0}}, +/* 31480 */ {(13<<2)|2,{56,68,0}}, +/* 31481 */ {(13<<2)|2,{56,68,0}}, +/* 31482 */ {(13<<2)|2,{56,68,0}}, +/* 31483 */ {(13<<2)|2,{56,68,0}}, +/* 31484 */ {(13<<2)|2,{56,68,0}}, +/* 31485 */ {(13<<2)|2,{56,68,0}}, +/* 31486 */ {(13<<2)|2,{56,68,0}}, +/* 31487 */ {(13<<2)|2,{56,68,0}}, +/* 31488 */ {(13<<2)|2,{56,69,0}}, +/* 31489 */ {(13<<2)|2,{56,69,0}}, +/* 31490 */ {(13<<2)|2,{56,69,0}}, +/* 31491 */ {(13<<2)|2,{56,69,0}}, +/* 31492 */ {(13<<2)|2,{56,69,0}}, +/* 31493 */ {(13<<2)|2,{56,69,0}}, +/* 31494 */ {(13<<2)|2,{56,69,0}}, +/* 31495 */ {(13<<2)|2,{56,69,0}}, +/* 31496 */ {(13<<2)|2,{56,70,0}}, +/* 31497 */ {(13<<2)|2,{56,70,0}}, +/* 31498 */ {(13<<2)|2,{56,70,0}}, +/* 31499 */ {(13<<2)|2,{56,70,0}}, +/* 31500 */ {(13<<2)|2,{56,70,0}}, +/* 31501 */ {(13<<2)|2,{56,70,0}}, +/* 31502 */ {(13<<2)|2,{56,70,0}}, +/* 31503 */ {(13<<2)|2,{56,70,0}}, +/* 31504 */ {(13<<2)|2,{56,71,0}}, +/* 31505 */ {(13<<2)|2,{56,71,0}}, +/* 31506 */ {(13<<2)|2,{56,71,0}}, +/* 31507 */ {(13<<2)|2,{56,71,0}}, +/* 31508 */ {(13<<2)|2,{56,71,0}}, +/* 31509 */ {(13<<2)|2,{56,71,0}}, +/* 31510 */ {(13<<2)|2,{56,71,0}}, +/* 31511 */ {(13<<2)|2,{56,71,0}}, +/* 31512 */ {(13<<2)|2,{56,72,0}}, +/* 31513 */ {(13<<2)|2,{56,72,0}}, +/* 31514 */ {(13<<2)|2,{56,72,0}}, +/* 31515 */ {(13<<2)|2,{56,72,0}}, +/* 31516 */ {(13<<2)|2,{56,72,0}}, +/* 31517 */ {(13<<2)|2,{56,72,0}}, +/* 31518 */ {(13<<2)|2,{56,72,0}}, +/* 31519 */ {(13<<2)|2,{56,72,0}}, +/* 31520 */ {(13<<2)|2,{56,73,0}}, +/* 31521 */ {(13<<2)|2,{56,73,0}}, +/* 31522 */ {(13<<2)|2,{56,73,0}}, +/* 31523 */ {(13<<2)|2,{56,73,0}}, +/* 31524 */ {(13<<2)|2,{56,73,0}}, +/* 31525 */ {(13<<2)|2,{56,73,0}}, +/* 31526 */ {(13<<2)|2,{56,73,0}}, +/* 31527 */ {(13<<2)|2,{56,73,0}}, +/* 31528 */ {(13<<2)|2,{56,74,0}}, +/* 31529 */ {(13<<2)|2,{56,74,0}}, +/* 31530 */ {(13<<2)|2,{56,74,0}}, +/* 31531 */ {(13<<2)|2,{56,74,0}}, +/* 31532 */ {(13<<2)|2,{56,74,0}}, +/* 31533 */ {(13<<2)|2,{56,74,0}}, +/* 31534 */ {(13<<2)|2,{56,74,0}}, +/* 31535 */ {(13<<2)|2,{56,74,0}}, +/* 31536 */ {(13<<2)|2,{56,75,0}}, +/* 31537 */ {(13<<2)|2,{56,75,0}}, +/* 31538 */ {(13<<2)|2,{56,75,0}}, +/* 31539 */ {(13<<2)|2,{56,75,0}}, +/* 31540 */ {(13<<2)|2,{56,75,0}}, +/* 31541 */ {(13<<2)|2,{56,75,0}}, +/* 31542 */ {(13<<2)|2,{56,75,0}}, +/* 31543 */ {(13<<2)|2,{56,75,0}}, +/* 31544 */ {(13<<2)|2,{56,76,0}}, +/* 31545 */ {(13<<2)|2,{56,76,0}}, +/* 31546 */ {(13<<2)|2,{56,76,0}}, +/* 31547 */ {(13<<2)|2,{56,76,0}}, +/* 31548 */ {(13<<2)|2,{56,76,0}}, +/* 31549 */ {(13<<2)|2,{56,76,0}}, +/* 31550 */ {(13<<2)|2,{56,76,0}}, +/* 31551 */ {(13<<2)|2,{56,76,0}}, +/* 31552 */ {(13<<2)|2,{56,77,0}}, +/* 31553 */ {(13<<2)|2,{56,77,0}}, +/* 31554 */ {(13<<2)|2,{56,77,0}}, +/* 31555 */ {(13<<2)|2,{56,77,0}}, +/* 31556 */ {(13<<2)|2,{56,77,0}}, +/* 31557 */ {(13<<2)|2,{56,77,0}}, +/* 31558 */ {(13<<2)|2,{56,77,0}}, +/* 31559 */ {(13<<2)|2,{56,77,0}}, +/* 31560 */ {(13<<2)|2,{56,78,0}}, +/* 31561 */ {(13<<2)|2,{56,78,0}}, +/* 31562 */ {(13<<2)|2,{56,78,0}}, +/* 31563 */ {(13<<2)|2,{56,78,0}}, +/* 31564 */ {(13<<2)|2,{56,78,0}}, +/* 31565 */ {(13<<2)|2,{56,78,0}}, +/* 31566 */ {(13<<2)|2,{56,78,0}}, +/* 31567 */ {(13<<2)|2,{56,78,0}}, +/* 31568 */ {(13<<2)|2,{56,79,0}}, +/* 31569 */ {(13<<2)|2,{56,79,0}}, +/* 31570 */ {(13<<2)|2,{56,79,0}}, +/* 31571 */ {(13<<2)|2,{56,79,0}}, +/* 31572 */ {(13<<2)|2,{56,79,0}}, +/* 31573 */ {(13<<2)|2,{56,79,0}}, +/* 31574 */ {(13<<2)|2,{56,79,0}}, +/* 31575 */ {(13<<2)|2,{56,79,0}}, +/* 31576 */ {(13<<2)|2,{56,80,0}}, +/* 31577 */ {(13<<2)|2,{56,80,0}}, +/* 31578 */ {(13<<2)|2,{56,80,0}}, +/* 31579 */ {(13<<2)|2,{56,80,0}}, +/* 31580 */ {(13<<2)|2,{56,80,0}}, +/* 31581 */ {(13<<2)|2,{56,80,0}}, +/* 31582 */ {(13<<2)|2,{56,80,0}}, +/* 31583 */ {(13<<2)|2,{56,80,0}}, +/* 31584 */ {(13<<2)|2,{56,81,0}}, +/* 31585 */ {(13<<2)|2,{56,81,0}}, +/* 31586 */ {(13<<2)|2,{56,81,0}}, +/* 31587 */ {(13<<2)|2,{56,81,0}}, +/* 31588 */ {(13<<2)|2,{56,81,0}}, +/* 31589 */ {(13<<2)|2,{56,81,0}}, +/* 31590 */ {(13<<2)|2,{56,81,0}}, +/* 31591 */ {(13<<2)|2,{56,81,0}}, +/* 31592 */ {(13<<2)|2,{56,82,0}}, +/* 31593 */ {(13<<2)|2,{56,82,0}}, +/* 31594 */ {(13<<2)|2,{56,82,0}}, +/* 31595 */ {(13<<2)|2,{56,82,0}}, +/* 31596 */ {(13<<2)|2,{56,82,0}}, +/* 31597 */ {(13<<2)|2,{56,82,0}}, +/* 31598 */ {(13<<2)|2,{56,82,0}}, +/* 31599 */ {(13<<2)|2,{56,82,0}}, +/* 31600 */ {(13<<2)|2,{56,83,0}}, +/* 31601 */ {(13<<2)|2,{56,83,0}}, +/* 31602 */ {(13<<2)|2,{56,83,0}}, +/* 31603 */ {(13<<2)|2,{56,83,0}}, +/* 31604 */ {(13<<2)|2,{56,83,0}}, +/* 31605 */ {(13<<2)|2,{56,83,0}}, +/* 31606 */ {(13<<2)|2,{56,83,0}}, +/* 31607 */ {(13<<2)|2,{56,83,0}}, +/* 31608 */ {(13<<2)|2,{56,84,0}}, +/* 31609 */ {(13<<2)|2,{56,84,0}}, +/* 31610 */ {(13<<2)|2,{56,84,0}}, +/* 31611 */ {(13<<2)|2,{56,84,0}}, +/* 31612 */ {(13<<2)|2,{56,84,0}}, +/* 31613 */ {(13<<2)|2,{56,84,0}}, +/* 31614 */ {(13<<2)|2,{56,84,0}}, +/* 31615 */ {(13<<2)|2,{56,84,0}}, +/* 31616 */ {(13<<2)|2,{56,85,0}}, +/* 31617 */ {(13<<2)|2,{56,85,0}}, +/* 31618 */ {(13<<2)|2,{56,85,0}}, +/* 31619 */ {(13<<2)|2,{56,85,0}}, +/* 31620 */ {(13<<2)|2,{56,85,0}}, +/* 31621 */ {(13<<2)|2,{56,85,0}}, +/* 31622 */ {(13<<2)|2,{56,85,0}}, +/* 31623 */ {(13<<2)|2,{56,85,0}}, +/* 31624 */ {(13<<2)|2,{56,86,0}}, +/* 31625 */ {(13<<2)|2,{56,86,0}}, +/* 31626 */ {(13<<2)|2,{56,86,0}}, +/* 31627 */ {(13<<2)|2,{56,86,0}}, +/* 31628 */ {(13<<2)|2,{56,86,0}}, +/* 31629 */ {(13<<2)|2,{56,86,0}}, +/* 31630 */ {(13<<2)|2,{56,86,0}}, +/* 31631 */ {(13<<2)|2,{56,86,0}}, +/* 31632 */ {(13<<2)|2,{56,87,0}}, +/* 31633 */ {(13<<2)|2,{56,87,0}}, +/* 31634 */ {(13<<2)|2,{56,87,0}}, +/* 31635 */ {(13<<2)|2,{56,87,0}}, +/* 31636 */ {(13<<2)|2,{56,87,0}}, +/* 31637 */ {(13<<2)|2,{56,87,0}}, +/* 31638 */ {(13<<2)|2,{56,87,0}}, +/* 31639 */ {(13<<2)|2,{56,87,0}}, +/* 31640 */ {(13<<2)|2,{56,89,0}}, +/* 31641 */ {(13<<2)|2,{56,89,0}}, +/* 31642 */ {(13<<2)|2,{56,89,0}}, +/* 31643 */ {(13<<2)|2,{56,89,0}}, +/* 31644 */ {(13<<2)|2,{56,89,0}}, +/* 31645 */ {(13<<2)|2,{56,89,0}}, +/* 31646 */ {(13<<2)|2,{56,89,0}}, +/* 31647 */ {(13<<2)|2,{56,89,0}}, +/* 31648 */ {(13<<2)|2,{56,106,0}}, +/* 31649 */ {(13<<2)|2,{56,106,0}}, +/* 31650 */ {(13<<2)|2,{56,106,0}}, +/* 31651 */ {(13<<2)|2,{56,106,0}}, +/* 31652 */ {(13<<2)|2,{56,106,0}}, +/* 31653 */ {(13<<2)|2,{56,106,0}}, +/* 31654 */ {(13<<2)|2,{56,106,0}}, +/* 31655 */ {(13<<2)|2,{56,106,0}}, +/* 31656 */ {(13<<2)|2,{56,107,0}}, +/* 31657 */ {(13<<2)|2,{56,107,0}}, +/* 31658 */ {(13<<2)|2,{56,107,0}}, +/* 31659 */ {(13<<2)|2,{56,107,0}}, +/* 31660 */ {(13<<2)|2,{56,107,0}}, +/* 31661 */ {(13<<2)|2,{56,107,0}}, +/* 31662 */ {(13<<2)|2,{56,107,0}}, +/* 31663 */ {(13<<2)|2,{56,107,0}}, +/* 31664 */ {(13<<2)|2,{56,113,0}}, +/* 31665 */ {(13<<2)|2,{56,113,0}}, +/* 31666 */ {(13<<2)|2,{56,113,0}}, +/* 31667 */ {(13<<2)|2,{56,113,0}}, +/* 31668 */ {(13<<2)|2,{56,113,0}}, +/* 31669 */ {(13<<2)|2,{56,113,0}}, +/* 31670 */ {(13<<2)|2,{56,113,0}}, +/* 31671 */ {(13<<2)|2,{56,113,0}}, +/* 31672 */ {(13<<2)|2,{56,118,0}}, +/* 31673 */ {(13<<2)|2,{56,118,0}}, +/* 31674 */ {(13<<2)|2,{56,118,0}}, +/* 31675 */ {(13<<2)|2,{56,118,0}}, +/* 31676 */ {(13<<2)|2,{56,118,0}}, +/* 31677 */ {(13<<2)|2,{56,118,0}}, +/* 31678 */ {(13<<2)|2,{56,118,0}}, +/* 31679 */ {(13<<2)|2,{56,118,0}}, +/* 31680 */ {(13<<2)|2,{56,119,0}}, +/* 31681 */ {(13<<2)|2,{56,119,0}}, +/* 31682 */ {(13<<2)|2,{56,119,0}}, +/* 31683 */ {(13<<2)|2,{56,119,0}}, +/* 31684 */ {(13<<2)|2,{56,119,0}}, +/* 31685 */ {(13<<2)|2,{56,119,0}}, +/* 31686 */ {(13<<2)|2,{56,119,0}}, +/* 31687 */ {(13<<2)|2,{56,119,0}}, +/* 31688 */ {(13<<2)|2,{56,120,0}}, +/* 31689 */ {(13<<2)|2,{56,120,0}}, +/* 31690 */ {(13<<2)|2,{56,120,0}}, +/* 31691 */ {(13<<2)|2,{56,120,0}}, +/* 31692 */ {(13<<2)|2,{56,120,0}}, +/* 31693 */ {(13<<2)|2,{56,120,0}}, +/* 31694 */ {(13<<2)|2,{56,120,0}}, +/* 31695 */ {(13<<2)|2,{56,120,0}}, +/* 31696 */ {(13<<2)|2,{56,121,0}}, +/* 31697 */ {(13<<2)|2,{56,121,0}}, +/* 31698 */ {(13<<2)|2,{56,121,0}}, +/* 31699 */ {(13<<2)|2,{56,121,0}}, +/* 31700 */ {(13<<2)|2,{56,121,0}}, +/* 31701 */ {(13<<2)|2,{56,121,0}}, +/* 31702 */ {(13<<2)|2,{56,121,0}}, +/* 31703 */ {(13<<2)|2,{56,121,0}}, +/* 31704 */ {(13<<2)|2,{56,122,0}}, +/* 31705 */ {(13<<2)|2,{56,122,0}}, +/* 31706 */ {(13<<2)|2,{56,122,0}}, +/* 31707 */ {(13<<2)|2,{56,122,0}}, +/* 31708 */ {(13<<2)|2,{56,122,0}}, +/* 31709 */ {(13<<2)|2,{56,122,0}}, +/* 31710 */ {(13<<2)|2,{56,122,0}}, +/* 31711 */ {(13<<2)|2,{56,122,0}}, +/* 31712 */ {(14<<2)|2,{56,38,0}}, +/* 31713 */ {(14<<2)|2,{56,38,0}}, +/* 31714 */ {(14<<2)|2,{56,38,0}}, +/* 31715 */ {(14<<2)|2,{56,38,0}}, +/* 31716 */ {(14<<2)|2,{56,42,0}}, +/* 31717 */ {(14<<2)|2,{56,42,0}}, +/* 31718 */ {(14<<2)|2,{56,42,0}}, +/* 31719 */ {(14<<2)|2,{56,42,0}}, +/* 31720 */ {(14<<2)|2,{56,44,0}}, +/* 31721 */ {(14<<2)|2,{56,44,0}}, +/* 31722 */ {(14<<2)|2,{56,44,0}}, +/* 31723 */ {(14<<2)|2,{56,44,0}}, +/* 31724 */ {(14<<2)|2,{56,59,0}}, +/* 31725 */ {(14<<2)|2,{56,59,0}}, +/* 31726 */ {(14<<2)|2,{56,59,0}}, +/* 31727 */ {(14<<2)|2,{56,59,0}}, +/* 31728 */ {(14<<2)|2,{56,88,0}}, +/* 31729 */ {(14<<2)|2,{56,88,0}}, +/* 31730 */ {(14<<2)|2,{56,88,0}}, +/* 31731 */ {(14<<2)|2,{56,88,0}}, +/* 31732 */ {(14<<2)|2,{56,90,0}}, +/* 31733 */ {(14<<2)|2,{56,90,0}}, +/* 31734 */ {(14<<2)|2,{56,90,0}}, +/* 31735 */ {(14<<2)|2,{56,90,0}}, +/* 31736 */ {(16<<2)|2,{56,33,0}}, +/* 31737 */ {(16<<2)|2,{56,34,0}}, +/* 31738 */ {(16<<2)|2,{56,40,0}}, +/* 31739 */ {(16<<2)|2,{56,41,0}}, +/* 31740 */ {(16<<2)|2,{56,63,0}}, +/* 31741 */ {(6<<2)|1,{56,0,0}}, +/* 31742 */ {(6<<2)|1,{56,0,0}}, +/* 31743 */ {(6<<2)|1,{56,0,0}}, +/* 31744 */ {(16<<2)|3,{57,48,48}}, +/* 31745 */ {(16<<2)|3,{57,48,49}}, +/* 31746 */ {(16<<2)|3,{57,48,50}}, +/* 31747 */ {(16<<2)|3,{57,48,97}}, +/* 31748 */ {(16<<2)|3,{57,48,99}}, +/* 31749 */ {(16<<2)|3,{57,48,101}}, +/* 31750 */ {(16<<2)|3,{57,48,105}}, +/* 31751 */ {(16<<2)|3,{57,48,111}}, +/* 31752 */ {(16<<2)|3,{57,48,115}}, +/* 31753 */ {(16<<2)|3,{57,48,116}}, +/* 31754 */ {(11<<2)|2,{57,48,0}}, +/* 31755 */ {(11<<2)|2,{57,48,0}}, +/* 31756 */ {(11<<2)|2,{57,48,0}}, +/* 31757 */ {(11<<2)|2,{57,48,0}}, +/* 31758 */ {(11<<2)|2,{57,48,0}}, +/* 31759 */ {(11<<2)|2,{57,48,0}}, +/* 31760 */ {(11<<2)|2,{57,48,0}}, +/* 31761 */ {(11<<2)|2,{57,48,0}}, +/* 31762 */ {(11<<2)|2,{57,48,0}}, +/* 31763 */ {(11<<2)|2,{57,48,0}}, +/* 31764 */ {(11<<2)|2,{57,48,0}}, +/* 31765 */ {(11<<2)|2,{57,48,0}}, +/* 31766 */ {(11<<2)|2,{57,48,0}}, +/* 31767 */ {(11<<2)|2,{57,48,0}}, +/* 31768 */ {(11<<2)|2,{57,48,0}}, +/* 31769 */ {(11<<2)|2,{57,48,0}}, +/* 31770 */ {(11<<2)|2,{57,48,0}}, +/* 31771 */ {(11<<2)|2,{57,48,0}}, +/* 31772 */ {(11<<2)|2,{57,48,0}}, +/* 31773 */ {(11<<2)|2,{57,48,0}}, +/* 31774 */ {(11<<2)|2,{57,48,0}}, +/* 31775 */ {(11<<2)|2,{57,48,0}}, +/* 31776 */ {(16<<2)|3,{57,49,48}}, +/* 31777 */ {(16<<2)|3,{57,49,49}}, +/* 31778 */ {(16<<2)|3,{57,49,50}}, +/* 31779 */ {(16<<2)|3,{57,49,97}}, +/* 31780 */ {(16<<2)|3,{57,49,99}}, +/* 31781 */ {(16<<2)|3,{57,49,101}}, +/* 31782 */ {(16<<2)|3,{57,49,105}}, +/* 31783 */ {(16<<2)|3,{57,49,111}}, +/* 31784 */ {(16<<2)|3,{57,49,115}}, +/* 31785 */ {(16<<2)|3,{57,49,116}}, +/* 31786 */ {(11<<2)|2,{57,49,0}}, +/* 31787 */ {(11<<2)|2,{57,49,0}}, +/* 31788 */ {(11<<2)|2,{57,49,0}}, +/* 31789 */ {(11<<2)|2,{57,49,0}}, +/* 31790 */ {(11<<2)|2,{57,49,0}}, +/* 31791 */ {(11<<2)|2,{57,49,0}}, +/* 31792 */ {(11<<2)|2,{57,49,0}}, +/* 31793 */ {(11<<2)|2,{57,49,0}}, +/* 31794 */ {(11<<2)|2,{57,49,0}}, +/* 31795 */ {(11<<2)|2,{57,49,0}}, +/* 31796 */ {(11<<2)|2,{57,49,0}}, +/* 31797 */ {(11<<2)|2,{57,49,0}}, +/* 31798 */ {(11<<2)|2,{57,49,0}}, +/* 31799 */ {(11<<2)|2,{57,49,0}}, +/* 31800 */ {(11<<2)|2,{57,49,0}}, +/* 31801 */ {(11<<2)|2,{57,49,0}}, +/* 31802 */ {(11<<2)|2,{57,49,0}}, +/* 31803 */ {(11<<2)|2,{57,49,0}}, +/* 31804 */ {(11<<2)|2,{57,49,0}}, +/* 31805 */ {(11<<2)|2,{57,49,0}}, +/* 31806 */ {(11<<2)|2,{57,49,0}}, +/* 31807 */ {(11<<2)|2,{57,49,0}}, +/* 31808 */ {(16<<2)|3,{57,50,48}}, +/* 31809 */ {(16<<2)|3,{57,50,49}}, +/* 31810 */ {(16<<2)|3,{57,50,50}}, +/* 31811 */ {(16<<2)|3,{57,50,97}}, +/* 31812 */ {(16<<2)|3,{57,50,99}}, +/* 31813 */ {(16<<2)|3,{57,50,101}}, +/* 31814 */ {(16<<2)|3,{57,50,105}}, +/* 31815 */ {(16<<2)|3,{57,50,111}}, +/* 31816 */ {(16<<2)|3,{57,50,115}}, +/* 31817 */ {(16<<2)|3,{57,50,116}}, +/* 31818 */ {(11<<2)|2,{57,50,0}}, +/* 31819 */ {(11<<2)|2,{57,50,0}}, +/* 31820 */ {(11<<2)|2,{57,50,0}}, +/* 31821 */ {(11<<2)|2,{57,50,0}}, +/* 31822 */ {(11<<2)|2,{57,50,0}}, +/* 31823 */ {(11<<2)|2,{57,50,0}}, +/* 31824 */ {(11<<2)|2,{57,50,0}}, +/* 31825 */ {(11<<2)|2,{57,50,0}}, +/* 31826 */ {(11<<2)|2,{57,50,0}}, +/* 31827 */ {(11<<2)|2,{57,50,0}}, +/* 31828 */ {(11<<2)|2,{57,50,0}}, +/* 31829 */ {(11<<2)|2,{57,50,0}}, +/* 31830 */ {(11<<2)|2,{57,50,0}}, +/* 31831 */ {(11<<2)|2,{57,50,0}}, +/* 31832 */ {(11<<2)|2,{57,50,0}}, +/* 31833 */ {(11<<2)|2,{57,50,0}}, +/* 31834 */ {(11<<2)|2,{57,50,0}}, +/* 31835 */ {(11<<2)|2,{57,50,0}}, +/* 31836 */ {(11<<2)|2,{57,50,0}}, +/* 31837 */ {(11<<2)|2,{57,50,0}}, +/* 31838 */ {(11<<2)|2,{57,50,0}}, +/* 31839 */ {(11<<2)|2,{57,50,0}}, +/* 31840 */ {(16<<2)|3,{57,97,48}}, +/* 31841 */ {(16<<2)|3,{57,97,49}}, +/* 31842 */ {(16<<2)|3,{57,97,50}}, +/* 31843 */ {(16<<2)|3,{57,97,97}}, +/* 31844 */ {(16<<2)|3,{57,97,99}}, +/* 31845 */ {(16<<2)|3,{57,97,101}}, +/* 31846 */ {(16<<2)|3,{57,97,105}}, +/* 31847 */ {(16<<2)|3,{57,97,111}}, +/* 31848 */ {(16<<2)|3,{57,97,115}}, +/* 31849 */ {(16<<2)|3,{57,97,116}}, +/* 31850 */ {(11<<2)|2,{57,97,0}}, +/* 31851 */ {(11<<2)|2,{57,97,0}}, +/* 31852 */ {(11<<2)|2,{57,97,0}}, +/* 31853 */ {(11<<2)|2,{57,97,0}}, +/* 31854 */ {(11<<2)|2,{57,97,0}}, +/* 31855 */ {(11<<2)|2,{57,97,0}}, +/* 31856 */ {(11<<2)|2,{57,97,0}}, +/* 31857 */ {(11<<2)|2,{57,97,0}}, +/* 31858 */ {(11<<2)|2,{57,97,0}}, +/* 31859 */ {(11<<2)|2,{57,97,0}}, +/* 31860 */ {(11<<2)|2,{57,97,0}}, +/* 31861 */ {(11<<2)|2,{57,97,0}}, +/* 31862 */ {(11<<2)|2,{57,97,0}}, +/* 31863 */ {(11<<2)|2,{57,97,0}}, +/* 31864 */ {(11<<2)|2,{57,97,0}}, +/* 31865 */ {(11<<2)|2,{57,97,0}}, +/* 31866 */ {(11<<2)|2,{57,97,0}}, +/* 31867 */ {(11<<2)|2,{57,97,0}}, +/* 31868 */ {(11<<2)|2,{57,97,0}}, +/* 31869 */ {(11<<2)|2,{57,97,0}}, +/* 31870 */ {(11<<2)|2,{57,97,0}}, +/* 31871 */ {(11<<2)|2,{57,97,0}}, +/* 31872 */ {(16<<2)|3,{57,99,48}}, +/* 31873 */ {(16<<2)|3,{57,99,49}}, +/* 31874 */ {(16<<2)|3,{57,99,50}}, +/* 31875 */ {(16<<2)|3,{57,99,97}}, +/* 31876 */ {(16<<2)|3,{57,99,99}}, +/* 31877 */ {(16<<2)|3,{57,99,101}}, +/* 31878 */ {(16<<2)|3,{57,99,105}}, +/* 31879 */ {(16<<2)|3,{57,99,111}}, +/* 31880 */ {(16<<2)|3,{57,99,115}}, +/* 31881 */ {(16<<2)|3,{57,99,116}}, +/* 31882 */ {(11<<2)|2,{57,99,0}}, +/* 31883 */ {(11<<2)|2,{57,99,0}}, +/* 31884 */ {(11<<2)|2,{57,99,0}}, +/* 31885 */ {(11<<2)|2,{57,99,0}}, +/* 31886 */ {(11<<2)|2,{57,99,0}}, +/* 31887 */ {(11<<2)|2,{57,99,0}}, +/* 31888 */ {(11<<2)|2,{57,99,0}}, +/* 31889 */ {(11<<2)|2,{57,99,0}}, +/* 31890 */ {(11<<2)|2,{57,99,0}}, +/* 31891 */ {(11<<2)|2,{57,99,0}}, +/* 31892 */ {(11<<2)|2,{57,99,0}}, +/* 31893 */ {(11<<2)|2,{57,99,0}}, +/* 31894 */ {(11<<2)|2,{57,99,0}}, +/* 31895 */ {(11<<2)|2,{57,99,0}}, +/* 31896 */ {(11<<2)|2,{57,99,0}}, +/* 31897 */ {(11<<2)|2,{57,99,0}}, +/* 31898 */ {(11<<2)|2,{57,99,0}}, +/* 31899 */ {(11<<2)|2,{57,99,0}}, +/* 31900 */ {(11<<2)|2,{57,99,0}}, +/* 31901 */ {(11<<2)|2,{57,99,0}}, +/* 31902 */ {(11<<2)|2,{57,99,0}}, +/* 31903 */ {(11<<2)|2,{57,99,0}}, +/* 31904 */ {(16<<2)|3,{57,101,48}}, +/* 31905 */ {(16<<2)|3,{57,101,49}}, +/* 31906 */ {(16<<2)|3,{57,101,50}}, +/* 31907 */ {(16<<2)|3,{57,101,97}}, +/* 31908 */ {(16<<2)|3,{57,101,99}}, +/* 31909 */ {(16<<2)|3,{57,101,101}}, +/* 31910 */ {(16<<2)|3,{57,101,105}}, +/* 31911 */ {(16<<2)|3,{57,101,111}}, +/* 31912 */ {(16<<2)|3,{57,101,115}}, +/* 31913 */ {(16<<2)|3,{57,101,116}}, +/* 31914 */ {(11<<2)|2,{57,101,0}}, +/* 31915 */ {(11<<2)|2,{57,101,0}}, +/* 31916 */ {(11<<2)|2,{57,101,0}}, +/* 31917 */ {(11<<2)|2,{57,101,0}}, +/* 31918 */ {(11<<2)|2,{57,101,0}}, +/* 31919 */ {(11<<2)|2,{57,101,0}}, +/* 31920 */ {(11<<2)|2,{57,101,0}}, +/* 31921 */ {(11<<2)|2,{57,101,0}}, +/* 31922 */ {(11<<2)|2,{57,101,0}}, +/* 31923 */ {(11<<2)|2,{57,101,0}}, +/* 31924 */ {(11<<2)|2,{57,101,0}}, +/* 31925 */ {(11<<2)|2,{57,101,0}}, +/* 31926 */ {(11<<2)|2,{57,101,0}}, +/* 31927 */ {(11<<2)|2,{57,101,0}}, +/* 31928 */ {(11<<2)|2,{57,101,0}}, +/* 31929 */ {(11<<2)|2,{57,101,0}}, +/* 31930 */ {(11<<2)|2,{57,101,0}}, +/* 31931 */ {(11<<2)|2,{57,101,0}}, +/* 31932 */ {(11<<2)|2,{57,101,0}}, +/* 31933 */ {(11<<2)|2,{57,101,0}}, +/* 31934 */ {(11<<2)|2,{57,101,0}}, +/* 31935 */ {(11<<2)|2,{57,101,0}}, +/* 31936 */ {(16<<2)|3,{57,105,48}}, +/* 31937 */ {(16<<2)|3,{57,105,49}}, +/* 31938 */ {(16<<2)|3,{57,105,50}}, +/* 31939 */ {(16<<2)|3,{57,105,97}}, +/* 31940 */ {(16<<2)|3,{57,105,99}}, +/* 31941 */ {(16<<2)|3,{57,105,101}}, +/* 31942 */ {(16<<2)|3,{57,105,105}}, +/* 31943 */ {(16<<2)|3,{57,105,111}}, +/* 31944 */ {(16<<2)|3,{57,105,115}}, +/* 31945 */ {(16<<2)|3,{57,105,116}}, +/* 31946 */ {(11<<2)|2,{57,105,0}}, +/* 31947 */ {(11<<2)|2,{57,105,0}}, +/* 31948 */ {(11<<2)|2,{57,105,0}}, +/* 31949 */ {(11<<2)|2,{57,105,0}}, +/* 31950 */ {(11<<2)|2,{57,105,0}}, +/* 31951 */ {(11<<2)|2,{57,105,0}}, +/* 31952 */ {(11<<2)|2,{57,105,0}}, +/* 31953 */ {(11<<2)|2,{57,105,0}}, +/* 31954 */ {(11<<2)|2,{57,105,0}}, +/* 31955 */ {(11<<2)|2,{57,105,0}}, +/* 31956 */ {(11<<2)|2,{57,105,0}}, +/* 31957 */ {(11<<2)|2,{57,105,0}}, +/* 31958 */ {(11<<2)|2,{57,105,0}}, +/* 31959 */ {(11<<2)|2,{57,105,0}}, +/* 31960 */ {(11<<2)|2,{57,105,0}}, +/* 31961 */ {(11<<2)|2,{57,105,0}}, +/* 31962 */ {(11<<2)|2,{57,105,0}}, +/* 31963 */ {(11<<2)|2,{57,105,0}}, +/* 31964 */ {(11<<2)|2,{57,105,0}}, +/* 31965 */ {(11<<2)|2,{57,105,0}}, +/* 31966 */ {(11<<2)|2,{57,105,0}}, +/* 31967 */ {(11<<2)|2,{57,105,0}}, +/* 31968 */ {(16<<2)|3,{57,111,48}}, +/* 31969 */ {(16<<2)|3,{57,111,49}}, +/* 31970 */ {(16<<2)|3,{57,111,50}}, +/* 31971 */ {(16<<2)|3,{57,111,97}}, +/* 31972 */ {(16<<2)|3,{57,111,99}}, +/* 31973 */ {(16<<2)|3,{57,111,101}}, +/* 31974 */ {(16<<2)|3,{57,111,105}}, +/* 31975 */ {(16<<2)|3,{57,111,111}}, +/* 31976 */ {(16<<2)|3,{57,111,115}}, +/* 31977 */ {(16<<2)|3,{57,111,116}}, +/* 31978 */ {(11<<2)|2,{57,111,0}}, +/* 31979 */ {(11<<2)|2,{57,111,0}}, +/* 31980 */ {(11<<2)|2,{57,111,0}}, +/* 31981 */ {(11<<2)|2,{57,111,0}}, +/* 31982 */ {(11<<2)|2,{57,111,0}}, +/* 31983 */ {(11<<2)|2,{57,111,0}}, +/* 31984 */ {(11<<2)|2,{57,111,0}}, +/* 31985 */ {(11<<2)|2,{57,111,0}}, +/* 31986 */ {(11<<2)|2,{57,111,0}}, +/* 31987 */ {(11<<2)|2,{57,111,0}}, +/* 31988 */ {(11<<2)|2,{57,111,0}}, +/* 31989 */ {(11<<2)|2,{57,111,0}}, +/* 31990 */ {(11<<2)|2,{57,111,0}}, +/* 31991 */ {(11<<2)|2,{57,111,0}}, +/* 31992 */ {(11<<2)|2,{57,111,0}}, +/* 31993 */ {(11<<2)|2,{57,111,0}}, +/* 31994 */ {(11<<2)|2,{57,111,0}}, +/* 31995 */ {(11<<2)|2,{57,111,0}}, +/* 31996 */ {(11<<2)|2,{57,111,0}}, +/* 31997 */ {(11<<2)|2,{57,111,0}}, +/* 31998 */ {(11<<2)|2,{57,111,0}}, +/* 31999 */ {(11<<2)|2,{57,111,0}}, +/* 32000 */ {(16<<2)|3,{57,115,48}}, +/* 32001 */ {(16<<2)|3,{57,115,49}}, +/* 32002 */ {(16<<2)|3,{57,115,50}}, +/* 32003 */ {(16<<2)|3,{57,115,97}}, +/* 32004 */ {(16<<2)|3,{57,115,99}}, +/* 32005 */ {(16<<2)|3,{57,115,101}}, +/* 32006 */ {(16<<2)|3,{57,115,105}}, +/* 32007 */ {(16<<2)|3,{57,115,111}}, +/* 32008 */ {(16<<2)|3,{57,115,115}}, +/* 32009 */ {(16<<2)|3,{57,115,116}}, +/* 32010 */ {(11<<2)|2,{57,115,0}}, +/* 32011 */ {(11<<2)|2,{57,115,0}}, +/* 32012 */ {(11<<2)|2,{57,115,0}}, +/* 32013 */ {(11<<2)|2,{57,115,0}}, +/* 32014 */ {(11<<2)|2,{57,115,0}}, +/* 32015 */ {(11<<2)|2,{57,115,0}}, +/* 32016 */ {(11<<2)|2,{57,115,0}}, +/* 32017 */ {(11<<2)|2,{57,115,0}}, +/* 32018 */ {(11<<2)|2,{57,115,0}}, +/* 32019 */ {(11<<2)|2,{57,115,0}}, +/* 32020 */ {(11<<2)|2,{57,115,0}}, +/* 32021 */ {(11<<2)|2,{57,115,0}}, +/* 32022 */ {(11<<2)|2,{57,115,0}}, +/* 32023 */ {(11<<2)|2,{57,115,0}}, +/* 32024 */ {(11<<2)|2,{57,115,0}}, +/* 32025 */ {(11<<2)|2,{57,115,0}}, +/* 32026 */ {(11<<2)|2,{57,115,0}}, +/* 32027 */ {(11<<2)|2,{57,115,0}}, +/* 32028 */ {(11<<2)|2,{57,115,0}}, +/* 32029 */ {(11<<2)|2,{57,115,0}}, +/* 32030 */ {(11<<2)|2,{57,115,0}}, +/* 32031 */ {(11<<2)|2,{57,115,0}}, +/* 32032 */ {(16<<2)|3,{57,116,48}}, +/* 32033 */ {(16<<2)|3,{57,116,49}}, +/* 32034 */ {(16<<2)|3,{57,116,50}}, +/* 32035 */ {(16<<2)|3,{57,116,97}}, +/* 32036 */ {(16<<2)|3,{57,116,99}}, +/* 32037 */ {(16<<2)|3,{57,116,101}}, +/* 32038 */ {(16<<2)|3,{57,116,105}}, +/* 32039 */ {(16<<2)|3,{57,116,111}}, +/* 32040 */ {(16<<2)|3,{57,116,115}}, +/* 32041 */ {(16<<2)|3,{57,116,116}}, +/* 32042 */ {(11<<2)|2,{57,116,0}}, +/* 32043 */ {(11<<2)|2,{57,116,0}}, +/* 32044 */ {(11<<2)|2,{57,116,0}}, +/* 32045 */ {(11<<2)|2,{57,116,0}}, +/* 32046 */ {(11<<2)|2,{57,116,0}}, +/* 32047 */ {(11<<2)|2,{57,116,0}}, +/* 32048 */ {(11<<2)|2,{57,116,0}}, +/* 32049 */ {(11<<2)|2,{57,116,0}}, +/* 32050 */ {(11<<2)|2,{57,116,0}}, +/* 32051 */ {(11<<2)|2,{57,116,0}}, +/* 32052 */ {(11<<2)|2,{57,116,0}}, +/* 32053 */ {(11<<2)|2,{57,116,0}}, +/* 32054 */ {(11<<2)|2,{57,116,0}}, +/* 32055 */ {(11<<2)|2,{57,116,0}}, +/* 32056 */ {(11<<2)|2,{57,116,0}}, +/* 32057 */ {(11<<2)|2,{57,116,0}}, +/* 32058 */ {(11<<2)|2,{57,116,0}}, +/* 32059 */ {(11<<2)|2,{57,116,0}}, +/* 32060 */ {(11<<2)|2,{57,116,0}}, +/* 32061 */ {(11<<2)|2,{57,116,0}}, +/* 32062 */ {(11<<2)|2,{57,116,0}}, +/* 32063 */ {(11<<2)|2,{57,116,0}}, +/* 32064 */ {(12<<2)|2,{57,32,0}}, +/* 32065 */ {(12<<2)|2,{57,32,0}}, +/* 32066 */ {(12<<2)|2,{57,32,0}}, +/* 32067 */ {(12<<2)|2,{57,32,0}}, +/* 32068 */ {(12<<2)|2,{57,32,0}}, +/* 32069 */ {(12<<2)|2,{57,32,0}}, +/* 32070 */ {(12<<2)|2,{57,32,0}}, +/* 32071 */ {(12<<2)|2,{57,32,0}}, +/* 32072 */ {(12<<2)|2,{57,32,0}}, +/* 32073 */ {(12<<2)|2,{57,32,0}}, +/* 32074 */ {(12<<2)|2,{57,32,0}}, +/* 32075 */ {(12<<2)|2,{57,32,0}}, +/* 32076 */ {(12<<2)|2,{57,32,0}}, +/* 32077 */ {(12<<2)|2,{57,32,0}}, +/* 32078 */ {(12<<2)|2,{57,32,0}}, +/* 32079 */ {(12<<2)|2,{57,32,0}}, +/* 32080 */ {(12<<2)|2,{57,37,0}}, +/* 32081 */ {(12<<2)|2,{57,37,0}}, +/* 32082 */ {(12<<2)|2,{57,37,0}}, +/* 32083 */ {(12<<2)|2,{57,37,0}}, +/* 32084 */ {(12<<2)|2,{57,37,0}}, +/* 32085 */ {(12<<2)|2,{57,37,0}}, +/* 32086 */ {(12<<2)|2,{57,37,0}}, +/* 32087 */ {(12<<2)|2,{57,37,0}}, +/* 32088 */ {(12<<2)|2,{57,37,0}}, +/* 32089 */ {(12<<2)|2,{57,37,0}}, +/* 32090 */ {(12<<2)|2,{57,37,0}}, +/* 32091 */ {(12<<2)|2,{57,37,0}}, +/* 32092 */ {(12<<2)|2,{57,37,0}}, +/* 32093 */ {(12<<2)|2,{57,37,0}}, +/* 32094 */ {(12<<2)|2,{57,37,0}}, +/* 32095 */ {(12<<2)|2,{57,37,0}}, +/* 32096 */ {(12<<2)|2,{57,45,0}}, +/* 32097 */ {(12<<2)|2,{57,45,0}}, +/* 32098 */ {(12<<2)|2,{57,45,0}}, +/* 32099 */ {(12<<2)|2,{57,45,0}}, +/* 32100 */ {(12<<2)|2,{57,45,0}}, +/* 32101 */ {(12<<2)|2,{57,45,0}}, +/* 32102 */ {(12<<2)|2,{57,45,0}}, +/* 32103 */ {(12<<2)|2,{57,45,0}}, +/* 32104 */ {(12<<2)|2,{57,45,0}}, +/* 32105 */ {(12<<2)|2,{57,45,0}}, +/* 32106 */ {(12<<2)|2,{57,45,0}}, +/* 32107 */ {(12<<2)|2,{57,45,0}}, +/* 32108 */ {(12<<2)|2,{57,45,0}}, +/* 32109 */ {(12<<2)|2,{57,45,0}}, +/* 32110 */ {(12<<2)|2,{57,45,0}}, +/* 32111 */ {(12<<2)|2,{57,45,0}}, +/* 32112 */ {(12<<2)|2,{57,46,0}}, +/* 32113 */ {(12<<2)|2,{57,46,0}}, +/* 32114 */ {(12<<2)|2,{57,46,0}}, +/* 32115 */ {(12<<2)|2,{57,46,0}}, +/* 32116 */ {(12<<2)|2,{57,46,0}}, +/* 32117 */ {(12<<2)|2,{57,46,0}}, +/* 32118 */ {(12<<2)|2,{57,46,0}}, +/* 32119 */ {(12<<2)|2,{57,46,0}}, +/* 32120 */ {(12<<2)|2,{57,46,0}}, +/* 32121 */ {(12<<2)|2,{57,46,0}}, +/* 32122 */ {(12<<2)|2,{57,46,0}}, +/* 32123 */ {(12<<2)|2,{57,46,0}}, +/* 32124 */ {(12<<2)|2,{57,46,0}}, +/* 32125 */ {(12<<2)|2,{57,46,0}}, +/* 32126 */ {(12<<2)|2,{57,46,0}}, +/* 32127 */ {(12<<2)|2,{57,46,0}}, +/* 32128 */ {(12<<2)|2,{57,47,0}}, +/* 32129 */ {(12<<2)|2,{57,47,0}}, +/* 32130 */ {(12<<2)|2,{57,47,0}}, +/* 32131 */ {(12<<2)|2,{57,47,0}}, +/* 32132 */ {(12<<2)|2,{57,47,0}}, +/* 32133 */ {(12<<2)|2,{57,47,0}}, +/* 32134 */ {(12<<2)|2,{57,47,0}}, +/* 32135 */ {(12<<2)|2,{57,47,0}}, +/* 32136 */ {(12<<2)|2,{57,47,0}}, +/* 32137 */ {(12<<2)|2,{57,47,0}}, +/* 32138 */ {(12<<2)|2,{57,47,0}}, +/* 32139 */ {(12<<2)|2,{57,47,0}}, +/* 32140 */ {(12<<2)|2,{57,47,0}}, +/* 32141 */ {(12<<2)|2,{57,47,0}}, +/* 32142 */ {(12<<2)|2,{57,47,0}}, +/* 32143 */ {(12<<2)|2,{57,47,0}}, +/* 32144 */ {(12<<2)|2,{57,51,0}}, +/* 32145 */ {(12<<2)|2,{57,51,0}}, +/* 32146 */ {(12<<2)|2,{57,51,0}}, +/* 32147 */ {(12<<2)|2,{57,51,0}}, +/* 32148 */ {(12<<2)|2,{57,51,0}}, +/* 32149 */ {(12<<2)|2,{57,51,0}}, +/* 32150 */ {(12<<2)|2,{57,51,0}}, +/* 32151 */ {(12<<2)|2,{57,51,0}}, +/* 32152 */ {(12<<2)|2,{57,51,0}}, +/* 32153 */ {(12<<2)|2,{57,51,0}}, +/* 32154 */ {(12<<2)|2,{57,51,0}}, +/* 32155 */ {(12<<2)|2,{57,51,0}}, +/* 32156 */ {(12<<2)|2,{57,51,0}}, +/* 32157 */ {(12<<2)|2,{57,51,0}}, +/* 32158 */ {(12<<2)|2,{57,51,0}}, +/* 32159 */ {(12<<2)|2,{57,51,0}}, +/* 32160 */ {(12<<2)|2,{57,52,0}}, +/* 32161 */ {(12<<2)|2,{57,52,0}}, +/* 32162 */ {(12<<2)|2,{57,52,0}}, +/* 32163 */ {(12<<2)|2,{57,52,0}}, +/* 32164 */ {(12<<2)|2,{57,52,0}}, +/* 32165 */ {(12<<2)|2,{57,52,0}}, +/* 32166 */ {(12<<2)|2,{57,52,0}}, +/* 32167 */ {(12<<2)|2,{57,52,0}}, +/* 32168 */ {(12<<2)|2,{57,52,0}}, +/* 32169 */ {(12<<2)|2,{57,52,0}}, +/* 32170 */ {(12<<2)|2,{57,52,0}}, +/* 32171 */ {(12<<2)|2,{57,52,0}}, +/* 32172 */ {(12<<2)|2,{57,52,0}}, +/* 32173 */ {(12<<2)|2,{57,52,0}}, +/* 32174 */ {(12<<2)|2,{57,52,0}}, +/* 32175 */ {(12<<2)|2,{57,52,0}}, +/* 32176 */ {(12<<2)|2,{57,53,0}}, +/* 32177 */ {(12<<2)|2,{57,53,0}}, +/* 32178 */ {(12<<2)|2,{57,53,0}}, +/* 32179 */ {(12<<2)|2,{57,53,0}}, +/* 32180 */ {(12<<2)|2,{57,53,0}}, +/* 32181 */ {(12<<2)|2,{57,53,0}}, +/* 32182 */ {(12<<2)|2,{57,53,0}}, +/* 32183 */ {(12<<2)|2,{57,53,0}}, +/* 32184 */ {(12<<2)|2,{57,53,0}}, +/* 32185 */ {(12<<2)|2,{57,53,0}}, +/* 32186 */ {(12<<2)|2,{57,53,0}}, +/* 32187 */ {(12<<2)|2,{57,53,0}}, +/* 32188 */ {(12<<2)|2,{57,53,0}}, +/* 32189 */ {(12<<2)|2,{57,53,0}}, +/* 32190 */ {(12<<2)|2,{57,53,0}}, +/* 32191 */ {(12<<2)|2,{57,53,0}}, +/* 32192 */ {(12<<2)|2,{57,54,0}}, +/* 32193 */ {(12<<2)|2,{57,54,0}}, +/* 32194 */ {(12<<2)|2,{57,54,0}}, +/* 32195 */ {(12<<2)|2,{57,54,0}}, +/* 32196 */ {(12<<2)|2,{57,54,0}}, +/* 32197 */ {(12<<2)|2,{57,54,0}}, +/* 32198 */ {(12<<2)|2,{57,54,0}}, +/* 32199 */ {(12<<2)|2,{57,54,0}}, +/* 32200 */ {(12<<2)|2,{57,54,0}}, +/* 32201 */ {(12<<2)|2,{57,54,0}}, +/* 32202 */ {(12<<2)|2,{57,54,0}}, +/* 32203 */ {(12<<2)|2,{57,54,0}}, +/* 32204 */ {(12<<2)|2,{57,54,0}}, +/* 32205 */ {(12<<2)|2,{57,54,0}}, +/* 32206 */ {(12<<2)|2,{57,54,0}}, +/* 32207 */ {(12<<2)|2,{57,54,0}}, +/* 32208 */ {(12<<2)|2,{57,55,0}}, +/* 32209 */ {(12<<2)|2,{57,55,0}}, +/* 32210 */ {(12<<2)|2,{57,55,0}}, +/* 32211 */ {(12<<2)|2,{57,55,0}}, +/* 32212 */ {(12<<2)|2,{57,55,0}}, +/* 32213 */ {(12<<2)|2,{57,55,0}}, +/* 32214 */ {(12<<2)|2,{57,55,0}}, +/* 32215 */ {(12<<2)|2,{57,55,0}}, +/* 32216 */ {(12<<2)|2,{57,55,0}}, +/* 32217 */ {(12<<2)|2,{57,55,0}}, +/* 32218 */ {(12<<2)|2,{57,55,0}}, +/* 32219 */ {(12<<2)|2,{57,55,0}}, +/* 32220 */ {(12<<2)|2,{57,55,0}}, +/* 32221 */ {(12<<2)|2,{57,55,0}}, +/* 32222 */ {(12<<2)|2,{57,55,0}}, +/* 32223 */ {(12<<2)|2,{57,55,0}}, +/* 32224 */ {(12<<2)|2,{57,56,0}}, +/* 32225 */ {(12<<2)|2,{57,56,0}}, +/* 32226 */ {(12<<2)|2,{57,56,0}}, +/* 32227 */ {(12<<2)|2,{57,56,0}}, +/* 32228 */ {(12<<2)|2,{57,56,0}}, +/* 32229 */ {(12<<2)|2,{57,56,0}}, +/* 32230 */ {(12<<2)|2,{57,56,0}}, +/* 32231 */ {(12<<2)|2,{57,56,0}}, +/* 32232 */ {(12<<2)|2,{57,56,0}}, +/* 32233 */ {(12<<2)|2,{57,56,0}}, +/* 32234 */ {(12<<2)|2,{57,56,0}}, +/* 32235 */ {(12<<2)|2,{57,56,0}}, +/* 32236 */ {(12<<2)|2,{57,56,0}}, +/* 32237 */ {(12<<2)|2,{57,56,0}}, +/* 32238 */ {(12<<2)|2,{57,56,0}}, +/* 32239 */ {(12<<2)|2,{57,56,0}}, +/* 32240 */ {(12<<2)|2,{57,57,0}}, +/* 32241 */ {(12<<2)|2,{57,57,0}}, +/* 32242 */ {(12<<2)|2,{57,57,0}}, +/* 32243 */ {(12<<2)|2,{57,57,0}}, +/* 32244 */ {(12<<2)|2,{57,57,0}}, +/* 32245 */ {(12<<2)|2,{57,57,0}}, +/* 32246 */ {(12<<2)|2,{57,57,0}}, +/* 32247 */ {(12<<2)|2,{57,57,0}}, +/* 32248 */ {(12<<2)|2,{57,57,0}}, +/* 32249 */ {(12<<2)|2,{57,57,0}}, +/* 32250 */ {(12<<2)|2,{57,57,0}}, +/* 32251 */ {(12<<2)|2,{57,57,0}}, +/* 32252 */ {(12<<2)|2,{57,57,0}}, +/* 32253 */ {(12<<2)|2,{57,57,0}}, +/* 32254 */ {(12<<2)|2,{57,57,0}}, +/* 32255 */ {(12<<2)|2,{57,57,0}}, +/* 32256 */ {(12<<2)|2,{57,61,0}}, +/* 32257 */ {(12<<2)|2,{57,61,0}}, +/* 32258 */ {(12<<2)|2,{57,61,0}}, +/* 32259 */ {(12<<2)|2,{57,61,0}}, +/* 32260 */ {(12<<2)|2,{57,61,0}}, +/* 32261 */ {(12<<2)|2,{57,61,0}}, +/* 32262 */ {(12<<2)|2,{57,61,0}}, +/* 32263 */ {(12<<2)|2,{57,61,0}}, +/* 32264 */ {(12<<2)|2,{57,61,0}}, +/* 32265 */ {(12<<2)|2,{57,61,0}}, +/* 32266 */ {(12<<2)|2,{57,61,0}}, +/* 32267 */ {(12<<2)|2,{57,61,0}}, +/* 32268 */ {(12<<2)|2,{57,61,0}}, +/* 32269 */ {(12<<2)|2,{57,61,0}}, +/* 32270 */ {(12<<2)|2,{57,61,0}}, +/* 32271 */ {(12<<2)|2,{57,61,0}}, +/* 32272 */ {(12<<2)|2,{57,65,0}}, +/* 32273 */ {(12<<2)|2,{57,65,0}}, +/* 32274 */ {(12<<2)|2,{57,65,0}}, +/* 32275 */ {(12<<2)|2,{57,65,0}}, +/* 32276 */ {(12<<2)|2,{57,65,0}}, +/* 32277 */ {(12<<2)|2,{57,65,0}}, +/* 32278 */ {(12<<2)|2,{57,65,0}}, +/* 32279 */ {(12<<2)|2,{57,65,0}}, +/* 32280 */ {(12<<2)|2,{57,65,0}}, +/* 32281 */ {(12<<2)|2,{57,65,0}}, +/* 32282 */ {(12<<2)|2,{57,65,0}}, +/* 32283 */ {(12<<2)|2,{57,65,0}}, +/* 32284 */ {(12<<2)|2,{57,65,0}}, +/* 32285 */ {(12<<2)|2,{57,65,0}}, +/* 32286 */ {(12<<2)|2,{57,65,0}}, +/* 32287 */ {(12<<2)|2,{57,65,0}}, +/* 32288 */ {(12<<2)|2,{57,95,0}}, +/* 32289 */ {(12<<2)|2,{57,95,0}}, +/* 32290 */ {(12<<2)|2,{57,95,0}}, +/* 32291 */ {(12<<2)|2,{57,95,0}}, +/* 32292 */ {(12<<2)|2,{57,95,0}}, +/* 32293 */ {(12<<2)|2,{57,95,0}}, +/* 32294 */ {(12<<2)|2,{57,95,0}}, +/* 32295 */ {(12<<2)|2,{57,95,0}}, +/* 32296 */ {(12<<2)|2,{57,95,0}}, +/* 32297 */ {(12<<2)|2,{57,95,0}}, +/* 32298 */ {(12<<2)|2,{57,95,0}}, +/* 32299 */ {(12<<2)|2,{57,95,0}}, +/* 32300 */ {(12<<2)|2,{57,95,0}}, +/* 32301 */ {(12<<2)|2,{57,95,0}}, +/* 32302 */ {(12<<2)|2,{57,95,0}}, +/* 32303 */ {(12<<2)|2,{57,95,0}}, +/* 32304 */ {(12<<2)|2,{57,98,0}}, +/* 32305 */ {(12<<2)|2,{57,98,0}}, +/* 32306 */ {(12<<2)|2,{57,98,0}}, +/* 32307 */ {(12<<2)|2,{57,98,0}}, +/* 32308 */ {(12<<2)|2,{57,98,0}}, +/* 32309 */ {(12<<2)|2,{57,98,0}}, +/* 32310 */ {(12<<2)|2,{57,98,0}}, +/* 32311 */ {(12<<2)|2,{57,98,0}}, +/* 32312 */ {(12<<2)|2,{57,98,0}}, +/* 32313 */ {(12<<2)|2,{57,98,0}}, +/* 32314 */ {(12<<2)|2,{57,98,0}}, +/* 32315 */ {(12<<2)|2,{57,98,0}}, +/* 32316 */ {(12<<2)|2,{57,98,0}}, +/* 32317 */ {(12<<2)|2,{57,98,0}}, +/* 32318 */ {(12<<2)|2,{57,98,0}}, +/* 32319 */ {(12<<2)|2,{57,98,0}}, +/* 32320 */ {(12<<2)|2,{57,100,0}}, +/* 32321 */ {(12<<2)|2,{57,100,0}}, +/* 32322 */ {(12<<2)|2,{57,100,0}}, +/* 32323 */ {(12<<2)|2,{57,100,0}}, +/* 32324 */ {(12<<2)|2,{57,100,0}}, +/* 32325 */ {(12<<2)|2,{57,100,0}}, +/* 32326 */ {(12<<2)|2,{57,100,0}}, +/* 32327 */ {(12<<2)|2,{57,100,0}}, +/* 32328 */ {(12<<2)|2,{57,100,0}}, +/* 32329 */ {(12<<2)|2,{57,100,0}}, +/* 32330 */ {(12<<2)|2,{57,100,0}}, +/* 32331 */ {(12<<2)|2,{57,100,0}}, +/* 32332 */ {(12<<2)|2,{57,100,0}}, +/* 32333 */ {(12<<2)|2,{57,100,0}}, +/* 32334 */ {(12<<2)|2,{57,100,0}}, +/* 32335 */ {(12<<2)|2,{57,100,0}}, +/* 32336 */ {(12<<2)|2,{57,102,0}}, +/* 32337 */ {(12<<2)|2,{57,102,0}}, +/* 32338 */ {(12<<2)|2,{57,102,0}}, +/* 32339 */ {(12<<2)|2,{57,102,0}}, +/* 32340 */ {(12<<2)|2,{57,102,0}}, +/* 32341 */ {(12<<2)|2,{57,102,0}}, +/* 32342 */ {(12<<2)|2,{57,102,0}}, +/* 32343 */ {(12<<2)|2,{57,102,0}}, +/* 32344 */ {(12<<2)|2,{57,102,0}}, +/* 32345 */ {(12<<2)|2,{57,102,0}}, +/* 32346 */ {(12<<2)|2,{57,102,0}}, +/* 32347 */ {(12<<2)|2,{57,102,0}}, +/* 32348 */ {(12<<2)|2,{57,102,0}}, +/* 32349 */ {(12<<2)|2,{57,102,0}}, +/* 32350 */ {(12<<2)|2,{57,102,0}}, +/* 32351 */ {(12<<2)|2,{57,102,0}}, +/* 32352 */ {(12<<2)|2,{57,103,0}}, +/* 32353 */ {(12<<2)|2,{57,103,0}}, +/* 32354 */ {(12<<2)|2,{57,103,0}}, +/* 32355 */ {(12<<2)|2,{57,103,0}}, +/* 32356 */ {(12<<2)|2,{57,103,0}}, +/* 32357 */ {(12<<2)|2,{57,103,0}}, +/* 32358 */ {(12<<2)|2,{57,103,0}}, +/* 32359 */ {(12<<2)|2,{57,103,0}}, +/* 32360 */ {(12<<2)|2,{57,103,0}}, +/* 32361 */ {(12<<2)|2,{57,103,0}}, +/* 32362 */ {(12<<2)|2,{57,103,0}}, +/* 32363 */ {(12<<2)|2,{57,103,0}}, +/* 32364 */ {(12<<2)|2,{57,103,0}}, +/* 32365 */ {(12<<2)|2,{57,103,0}}, +/* 32366 */ {(12<<2)|2,{57,103,0}}, +/* 32367 */ {(12<<2)|2,{57,103,0}}, +/* 32368 */ {(12<<2)|2,{57,104,0}}, +/* 32369 */ {(12<<2)|2,{57,104,0}}, +/* 32370 */ {(12<<2)|2,{57,104,0}}, +/* 32371 */ {(12<<2)|2,{57,104,0}}, +/* 32372 */ {(12<<2)|2,{57,104,0}}, +/* 32373 */ {(12<<2)|2,{57,104,0}}, +/* 32374 */ {(12<<2)|2,{57,104,0}}, +/* 32375 */ {(12<<2)|2,{57,104,0}}, +/* 32376 */ {(12<<2)|2,{57,104,0}}, +/* 32377 */ {(12<<2)|2,{57,104,0}}, +/* 32378 */ {(12<<2)|2,{57,104,0}}, +/* 32379 */ {(12<<2)|2,{57,104,0}}, +/* 32380 */ {(12<<2)|2,{57,104,0}}, +/* 32381 */ {(12<<2)|2,{57,104,0}}, +/* 32382 */ {(12<<2)|2,{57,104,0}}, +/* 32383 */ {(12<<2)|2,{57,104,0}}, +/* 32384 */ {(12<<2)|2,{57,108,0}}, +/* 32385 */ {(12<<2)|2,{57,108,0}}, +/* 32386 */ {(12<<2)|2,{57,108,0}}, +/* 32387 */ {(12<<2)|2,{57,108,0}}, +/* 32388 */ {(12<<2)|2,{57,108,0}}, +/* 32389 */ {(12<<2)|2,{57,108,0}}, +/* 32390 */ {(12<<2)|2,{57,108,0}}, +/* 32391 */ {(12<<2)|2,{57,108,0}}, +/* 32392 */ {(12<<2)|2,{57,108,0}}, +/* 32393 */ {(12<<2)|2,{57,108,0}}, +/* 32394 */ {(12<<2)|2,{57,108,0}}, +/* 32395 */ {(12<<2)|2,{57,108,0}}, +/* 32396 */ {(12<<2)|2,{57,108,0}}, +/* 32397 */ {(12<<2)|2,{57,108,0}}, +/* 32398 */ {(12<<2)|2,{57,108,0}}, +/* 32399 */ {(12<<2)|2,{57,108,0}}, +/* 32400 */ {(12<<2)|2,{57,109,0}}, +/* 32401 */ {(12<<2)|2,{57,109,0}}, +/* 32402 */ {(12<<2)|2,{57,109,0}}, +/* 32403 */ {(12<<2)|2,{57,109,0}}, +/* 32404 */ {(12<<2)|2,{57,109,0}}, +/* 32405 */ {(12<<2)|2,{57,109,0}}, +/* 32406 */ {(12<<2)|2,{57,109,0}}, +/* 32407 */ {(12<<2)|2,{57,109,0}}, +/* 32408 */ {(12<<2)|2,{57,109,0}}, +/* 32409 */ {(12<<2)|2,{57,109,0}}, +/* 32410 */ {(12<<2)|2,{57,109,0}}, +/* 32411 */ {(12<<2)|2,{57,109,0}}, +/* 32412 */ {(12<<2)|2,{57,109,0}}, +/* 32413 */ {(12<<2)|2,{57,109,0}}, +/* 32414 */ {(12<<2)|2,{57,109,0}}, +/* 32415 */ {(12<<2)|2,{57,109,0}}, +/* 32416 */ {(12<<2)|2,{57,110,0}}, +/* 32417 */ {(12<<2)|2,{57,110,0}}, +/* 32418 */ {(12<<2)|2,{57,110,0}}, +/* 32419 */ {(12<<2)|2,{57,110,0}}, +/* 32420 */ {(12<<2)|2,{57,110,0}}, +/* 32421 */ {(12<<2)|2,{57,110,0}}, +/* 32422 */ {(12<<2)|2,{57,110,0}}, +/* 32423 */ {(12<<2)|2,{57,110,0}}, +/* 32424 */ {(12<<2)|2,{57,110,0}}, +/* 32425 */ {(12<<2)|2,{57,110,0}}, +/* 32426 */ {(12<<2)|2,{57,110,0}}, +/* 32427 */ {(12<<2)|2,{57,110,0}}, +/* 32428 */ {(12<<2)|2,{57,110,0}}, +/* 32429 */ {(12<<2)|2,{57,110,0}}, +/* 32430 */ {(12<<2)|2,{57,110,0}}, +/* 32431 */ {(12<<2)|2,{57,110,0}}, +/* 32432 */ {(12<<2)|2,{57,112,0}}, +/* 32433 */ {(12<<2)|2,{57,112,0}}, +/* 32434 */ {(12<<2)|2,{57,112,0}}, +/* 32435 */ {(12<<2)|2,{57,112,0}}, +/* 32436 */ {(12<<2)|2,{57,112,0}}, +/* 32437 */ {(12<<2)|2,{57,112,0}}, +/* 32438 */ {(12<<2)|2,{57,112,0}}, +/* 32439 */ {(12<<2)|2,{57,112,0}}, +/* 32440 */ {(12<<2)|2,{57,112,0}}, +/* 32441 */ {(12<<2)|2,{57,112,0}}, +/* 32442 */ {(12<<2)|2,{57,112,0}}, +/* 32443 */ {(12<<2)|2,{57,112,0}}, +/* 32444 */ {(12<<2)|2,{57,112,0}}, +/* 32445 */ {(12<<2)|2,{57,112,0}}, +/* 32446 */ {(12<<2)|2,{57,112,0}}, +/* 32447 */ {(12<<2)|2,{57,112,0}}, +/* 32448 */ {(12<<2)|2,{57,114,0}}, +/* 32449 */ {(12<<2)|2,{57,114,0}}, +/* 32450 */ {(12<<2)|2,{57,114,0}}, +/* 32451 */ {(12<<2)|2,{57,114,0}}, +/* 32452 */ {(12<<2)|2,{57,114,0}}, +/* 32453 */ {(12<<2)|2,{57,114,0}}, +/* 32454 */ {(12<<2)|2,{57,114,0}}, +/* 32455 */ {(12<<2)|2,{57,114,0}}, +/* 32456 */ {(12<<2)|2,{57,114,0}}, +/* 32457 */ {(12<<2)|2,{57,114,0}}, +/* 32458 */ {(12<<2)|2,{57,114,0}}, +/* 32459 */ {(12<<2)|2,{57,114,0}}, +/* 32460 */ {(12<<2)|2,{57,114,0}}, +/* 32461 */ {(12<<2)|2,{57,114,0}}, +/* 32462 */ {(12<<2)|2,{57,114,0}}, +/* 32463 */ {(12<<2)|2,{57,114,0}}, +/* 32464 */ {(12<<2)|2,{57,117,0}}, +/* 32465 */ {(12<<2)|2,{57,117,0}}, +/* 32466 */ {(12<<2)|2,{57,117,0}}, +/* 32467 */ {(12<<2)|2,{57,117,0}}, +/* 32468 */ {(12<<2)|2,{57,117,0}}, +/* 32469 */ {(12<<2)|2,{57,117,0}}, +/* 32470 */ {(12<<2)|2,{57,117,0}}, +/* 32471 */ {(12<<2)|2,{57,117,0}}, +/* 32472 */ {(12<<2)|2,{57,117,0}}, +/* 32473 */ {(12<<2)|2,{57,117,0}}, +/* 32474 */ {(12<<2)|2,{57,117,0}}, +/* 32475 */ {(12<<2)|2,{57,117,0}}, +/* 32476 */ {(12<<2)|2,{57,117,0}}, +/* 32477 */ {(12<<2)|2,{57,117,0}}, +/* 32478 */ {(12<<2)|2,{57,117,0}}, +/* 32479 */ {(12<<2)|2,{57,117,0}}, +/* 32480 */ {(13<<2)|2,{57,58,0}}, +/* 32481 */ {(13<<2)|2,{57,58,0}}, +/* 32482 */ {(13<<2)|2,{57,58,0}}, +/* 32483 */ {(13<<2)|2,{57,58,0}}, +/* 32484 */ {(13<<2)|2,{57,58,0}}, +/* 32485 */ {(13<<2)|2,{57,58,0}}, +/* 32486 */ {(13<<2)|2,{57,58,0}}, +/* 32487 */ {(13<<2)|2,{57,58,0}}, +/* 32488 */ {(13<<2)|2,{57,66,0}}, +/* 32489 */ {(13<<2)|2,{57,66,0}}, +/* 32490 */ {(13<<2)|2,{57,66,0}}, +/* 32491 */ {(13<<2)|2,{57,66,0}}, +/* 32492 */ {(13<<2)|2,{57,66,0}}, +/* 32493 */ {(13<<2)|2,{57,66,0}}, +/* 32494 */ {(13<<2)|2,{57,66,0}}, +/* 32495 */ {(13<<2)|2,{57,66,0}}, +/* 32496 */ {(13<<2)|2,{57,67,0}}, +/* 32497 */ {(13<<2)|2,{57,67,0}}, +/* 32498 */ {(13<<2)|2,{57,67,0}}, +/* 32499 */ {(13<<2)|2,{57,67,0}}, +/* 32500 */ {(13<<2)|2,{57,67,0}}, +/* 32501 */ {(13<<2)|2,{57,67,0}}, +/* 32502 */ {(13<<2)|2,{57,67,0}}, +/* 32503 */ {(13<<2)|2,{57,67,0}}, +/* 32504 */ {(13<<2)|2,{57,68,0}}, +/* 32505 */ {(13<<2)|2,{57,68,0}}, +/* 32506 */ {(13<<2)|2,{57,68,0}}, +/* 32507 */ {(13<<2)|2,{57,68,0}}, +/* 32508 */ {(13<<2)|2,{57,68,0}}, +/* 32509 */ {(13<<2)|2,{57,68,0}}, +/* 32510 */ {(13<<2)|2,{57,68,0}}, +/* 32511 */ {(13<<2)|2,{57,68,0}}, +/* 32512 */ {(13<<2)|2,{57,69,0}}, +/* 32513 */ {(13<<2)|2,{57,69,0}}, +/* 32514 */ {(13<<2)|2,{57,69,0}}, +/* 32515 */ {(13<<2)|2,{57,69,0}}, +/* 32516 */ {(13<<2)|2,{57,69,0}}, +/* 32517 */ {(13<<2)|2,{57,69,0}}, +/* 32518 */ {(13<<2)|2,{57,69,0}}, +/* 32519 */ {(13<<2)|2,{57,69,0}}, +/* 32520 */ {(13<<2)|2,{57,70,0}}, +/* 32521 */ {(13<<2)|2,{57,70,0}}, +/* 32522 */ {(13<<2)|2,{57,70,0}}, +/* 32523 */ {(13<<2)|2,{57,70,0}}, +/* 32524 */ {(13<<2)|2,{57,70,0}}, +/* 32525 */ {(13<<2)|2,{57,70,0}}, +/* 32526 */ {(13<<2)|2,{57,70,0}}, +/* 32527 */ {(13<<2)|2,{57,70,0}}, +/* 32528 */ {(13<<2)|2,{57,71,0}}, +/* 32529 */ {(13<<2)|2,{57,71,0}}, +/* 32530 */ {(13<<2)|2,{57,71,0}}, +/* 32531 */ {(13<<2)|2,{57,71,0}}, +/* 32532 */ {(13<<2)|2,{57,71,0}}, +/* 32533 */ {(13<<2)|2,{57,71,0}}, +/* 32534 */ {(13<<2)|2,{57,71,0}}, +/* 32535 */ {(13<<2)|2,{57,71,0}}, +/* 32536 */ {(13<<2)|2,{57,72,0}}, +/* 32537 */ {(13<<2)|2,{57,72,0}}, +/* 32538 */ {(13<<2)|2,{57,72,0}}, +/* 32539 */ {(13<<2)|2,{57,72,0}}, +/* 32540 */ {(13<<2)|2,{57,72,0}}, +/* 32541 */ {(13<<2)|2,{57,72,0}}, +/* 32542 */ {(13<<2)|2,{57,72,0}}, +/* 32543 */ {(13<<2)|2,{57,72,0}}, +/* 32544 */ {(13<<2)|2,{57,73,0}}, +/* 32545 */ {(13<<2)|2,{57,73,0}}, +/* 32546 */ {(13<<2)|2,{57,73,0}}, +/* 32547 */ {(13<<2)|2,{57,73,0}}, +/* 32548 */ {(13<<2)|2,{57,73,0}}, +/* 32549 */ {(13<<2)|2,{57,73,0}}, +/* 32550 */ {(13<<2)|2,{57,73,0}}, +/* 32551 */ {(13<<2)|2,{57,73,0}}, +/* 32552 */ {(13<<2)|2,{57,74,0}}, +/* 32553 */ {(13<<2)|2,{57,74,0}}, +/* 32554 */ {(13<<2)|2,{57,74,0}}, +/* 32555 */ {(13<<2)|2,{57,74,0}}, +/* 32556 */ {(13<<2)|2,{57,74,0}}, +/* 32557 */ {(13<<2)|2,{57,74,0}}, +/* 32558 */ {(13<<2)|2,{57,74,0}}, +/* 32559 */ {(13<<2)|2,{57,74,0}}, +/* 32560 */ {(13<<2)|2,{57,75,0}}, +/* 32561 */ {(13<<2)|2,{57,75,0}}, +/* 32562 */ {(13<<2)|2,{57,75,0}}, +/* 32563 */ {(13<<2)|2,{57,75,0}}, +/* 32564 */ {(13<<2)|2,{57,75,0}}, +/* 32565 */ {(13<<2)|2,{57,75,0}}, +/* 32566 */ {(13<<2)|2,{57,75,0}}, +/* 32567 */ {(13<<2)|2,{57,75,0}}, +/* 32568 */ {(13<<2)|2,{57,76,0}}, +/* 32569 */ {(13<<2)|2,{57,76,0}}, +/* 32570 */ {(13<<2)|2,{57,76,0}}, +/* 32571 */ {(13<<2)|2,{57,76,0}}, +/* 32572 */ {(13<<2)|2,{57,76,0}}, +/* 32573 */ {(13<<2)|2,{57,76,0}}, +/* 32574 */ {(13<<2)|2,{57,76,0}}, +/* 32575 */ {(13<<2)|2,{57,76,0}}, +/* 32576 */ {(13<<2)|2,{57,77,0}}, +/* 32577 */ {(13<<2)|2,{57,77,0}}, +/* 32578 */ {(13<<2)|2,{57,77,0}}, +/* 32579 */ {(13<<2)|2,{57,77,0}}, +/* 32580 */ {(13<<2)|2,{57,77,0}}, +/* 32581 */ {(13<<2)|2,{57,77,0}}, +/* 32582 */ {(13<<2)|2,{57,77,0}}, +/* 32583 */ {(13<<2)|2,{57,77,0}}, +/* 32584 */ {(13<<2)|2,{57,78,0}}, +/* 32585 */ {(13<<2)|2,{57,78,0}}, +/* 32586 */ {(13<<2)|2,{57,78,0}}, +/* 32587 */ {(13<<2)|2,{57,78,0}}, +/* 32588 */ {(13<<2)|2,{57,78,0}}, +/* 32589 */ {(13<<2)|2,{57,78,0}}, +/* 32590 */ {(13<<2)|2,{57,78,0}}, +/* 32591 */ {(13<<2)|2,{57,78,0}}, +/* 32592 */ {(13<<2)|2,{57,79,0}}, +/* 32593 */ {(13<<2)|2,{57,79,0}}, +/* 32594 */ {(13<<2)|2,{57,79,0}}, +/* 32595 */ {(13<<2)|2,{57,79,0}}, +/* 32596 */ {(13<<2)|2,{57,79,0}}, +/* 32597 */ {(13<<2)|2,{57,79,0}}, +/* 32598 */ {(13<<2)|2,{57,79,0}}, +/* 32599 */ {(13<<2)|2,{57,79,0}}, +/* 32600 */ {(13<<2)|2,{57,80,0}}, +/* 32601 */ {(13<<2)|2,{57,80,0}}, +/* 32602 */ {(13<<2)|2,{57,80,0}}, +/* 32603 */ {(13<<2)|2,{57,80,0}}, +/* 32604 */ {(13<<2)|2,{57,80,0}}, +/* 32605 */ {(13<<2)|2,{57,80,0}}, +/* 32606 */ {(13<<2)|2,{57,80,0}}, +/* 32607 */ {(13<<2)|2,{57,80,0}}, +/* 32608 */ {(13<<2)|2,{57,81,0}}, +/* 32609 */ {(13<<2)|2,{57,81,0}}, +/* 32610 */ {(13<<2)|2,{57,81,0}}, +/* 32611 */ {(13<<2)|2,{57,81,0}}, +/* 32612 */ {(13<<2)|2,{57,81,0}}, +/* 32613 */ {(13<<2)|2,{57,81,0}}, +/* 32614 */ {(13<<2)|2,{57,81,0}}, +/* 32615 */ {(13<<2)|2,{57,81,0}}, +/* 32616 */ {(13<<2)|2,{57,82,0}}, +/* 32617 */ {(13<<2)|2,{57,82,0}}, +/* 32618 */ {(13<<2)|2,{57,82,0}}, +/* 32619 */ {(13<<2)|2,{57,82,0}}, +/* 32620 */ {(13<<2)|2,{57,82,0}}, +/* 32621 */ {(13<<2)|2,{57,82,0}}, +/* 32622 */ {(13<<2)|2,{57,82,0}}, +/* 32623 */ {(13<<2)|2,{57,82,0}}, +/* 32624 */ {(13<<2)|2,{57,83,0}}, +/* 32625 */ {(13<<2)|2,{57,83,0}}, +/* 32626 */ {(13<<2)|2,{57,83,0}}, +/* 32627 */ {(13<<2)|2,{57,83,0}}, +/* 32628 */ {(13<<2)|2,{57,83,0}}, +/* 32629 */ {(13<<2)|2,{57,83,0}}, +/* 32630 */ {(13<<2)|2,{57,83,0}}, +/* 32631 */ {(13<<2)|2,{57,83,0}}, +/* 32632 */ {(13<<2)|2,{57,84,0}}, +/* 32633 */ {(13<<2)|2,{57,84,0}}, +/* 32634 */ {(13<<2)|2,{57,84,0}}, +/* 32635 */ {(13<<2)|2,{57,84,0}}, +/* 32636 */ {(13<<2)|2,{57,84,0}}, +/* 32637 */ {(13<<2)|2,{57,84,0}}, +/* 32638 */ {(13<<2)|2,{57,84,0}}, +/* 32639 */ {(13<<2)|2,{57,84,0}}, +/* 32640 */ {(13<<2)|2,{57,85,0}}, +/* 32641 */ {(13<<2)|2,{57,85,0}}, +/* 32642 */ {(13<<2)|2,{57,85,0}}, +/* 32643 */ {(13<<2)|2,{57,85,0}}, +/* 32644 */ {(13<<2)|2,{57,85,0}}, +/* 32645 */ {(13<<2)|2,{57,85,0}}, +/* 32646 */ {(13<<2)|2,{57,85,0}}, +/* 32647 */ {(13<<2)|2,{57,85,0}}, +/* 32648 */ {(13<<2)|2,{57,86,0}}, +/* 32649 */ {(13<<2)|2,{57,86,0}}, +/* 32650 */ {(13<<2)|2,{57,86,0}}, +/* 32651 */ {(13<<2)|2,{57,86,0}}, +/* 32652 */ {(13<<2)|2,{57,86,0}}, +/* 32653 */ {(13<<2)|2,{57,86,0}}, +/* 32654 */ {(13<<2)|2,{57,86,0}}, +/* 32655 */ {(13<<2)|2,{57,86,0}}, +/* 32656 */ {(13<<2)|2,{57,87,0}}, +/* 32657 */ {(13<<2)|2,{57,87,0}}, +/* 32658 */ {(13<<2)|2,{57,87,0}}, +/* 32659 */ {(13<<2)|2,{57,87,0}}, +/* 32660 */ {(13<<2)|2,{57,87,0}}, +/* 32661 */ {(13<<2)|2,{57,87,0}}, +/* 32662 */ {(13<<2)|2,{57,87,0}}, +/* 32663 */ {(13<<2)|2,{57,87,0}}, +/* 32664 */ {(13<<2)|2,{57,89,0}}, +/* 32665 */ {(13<<2)|2,{57,89,0}}, +/* 32666 */ {(13<<2)|2,{57,89,0}}, +/* 32667 */ {(13<<2)|2,{57,89,0}}, +/* 32668 */ {(13<<2)|2,{57,89,0}}, +/* 32669 */ {(13<<2)|2,{57,89,0}}, +/* 32670 */ {(13<<2)|2,{57,89,0}}, +/* 32671 */ {(13<<2)|2,{57,89,0}}, +/* 32672 */ {(13<<2)|2,{57,106,0}}, +/* 32673 */ {(13<<2)|2,{57,106,0}}, +/* 32674 */ {(13<<2)|2,{57,106,0}}, +/* 32675 */ {(13<<2)|2,{57,106,0}}, +/* 32676 */ {(13<<2)|2,{57,106,0}}, +/* 32677 */ {(13<<2)|2,{57,106,0}}, +/* 32678 */ {(13<<2)|2,{57,106,0}}, +/* 32679 */ {(13<<2)|2,{57,106,0}}, +/* 32680 */ {(13<<2)|2,{57,107,0}}, +/* 32681 */ {(13<<2)|2,{57,107,0}}, +/* 32682 */ {(13<<2)|2,{57,107,0}}, +/* 32683 */ {(13<<2)|2,{57,107,0}}, +/* 32684 */ {(13<<2)|2,{57,107,0}}, +/* 32685 */ {(13<<2)|2,{57,107,0}}, +/* 32686 */ {(13<<2)|2,{57,107,0}}, +/* 32687 */ {(13<<2)|2,{57,107,0}}, +/* 32688 */ {(13<<2)|2,{57,113,0}}, +/* 32689 */ {(13<<2)|2,{57,113,0}}, +/* 32690 */ {(13<<2)|2,{57,113,0}}, +/* 32691 */ {(13<<2)|2,{57,113,0}}, +/* 32692 */ {(13<<2)|2,{57,113,0}}, +/* 32693 */ {(13<<2)|2,{57,113,0}}, +/* 32694 */ {(13<<2)|2,{57,113,0}}, +/* 32695 */ {(13<<2)|2,{57,113,0}}, +/* 32696 */ {(13<<2)|2,{57,118,0}}, +/* 32697 */ {(13<<2)|2,{57,118,0}}, +/* 32698 */ {(13<<2)|2,{57,118,0}}, +/* 32699 */ {(13<<2)|2,{57,118,0}}, +/* 32700 */ {(13<<2)|2,{57,118,0}}, +/* 32701 */ {(13<<2)|2,{57,118,0}}, +/* 32702 */ {(13<<2)|2,{57,118,0}}, +/* 32703 */ {(13<<2)|2,{57,118,0}}, +/* 32704 */ {(13<<2)|2,{57,119,0}}, +/* 32705 */ {(13<<2)|2,{57,119,0}}, +/* 32706 */ {(13<<2)|2,{57,119,0}}, +/* 32707 */ {(13<<2)|2,{57,119,0}}, +/* 32708 */ {(13<<2)|2,{57,119,0}}, +/* 32709 */ {(13<<2)|2,{57,119,0}}, +/* 32710 */ {(13<<2)|2,{57,119,0}}, +/* 32711 */ {(13<<2)|2,{57,119,0}}, +/* 32712 */ {(13<<2)|2,{57,120,0}}, +/* 32713 */ {(13<<2)|2,{57,120,0}}, +/* 32714 */ {(13<<2)|2,{57,120,0}}, +/* 32715 */ {(13<<2)|2,{57,120,0}}, +/* 32716 */ {(13<<2)|2,{57,120,0}}, +/* 32717 */ {(13<<2)|2,{57,120,0}}, +/* 32718 */ {(13<<2)|2,{57,120,0}}, +/* 32719 */ {(13<<2)|2,{57,120,0}}, +/* 32720 */ {(13<<2)|2,{57,121,0}}, +/* 32721 */ {(13<<2)|2,{57,121,0}}, +/* 32722 */ {(13<<2)|2,{57,121,0}}, +/* 32723 */ {(13<<2)|2,{57,121,0}}, +/* 32724 */ {(13<<2)|2,{57,121,0}}, +/* 32725 */ {(13<<2)|2,{57,121,0}}, +/* 32726 */ {(13<<2)|2,{57,121,0}}, +/* 32727 */ {(13<<2)|2,{57,121,0}}, +/* 32728 */ {(13<<2)|2,{57,122,0}}, +/* 32729 */ {(13<<2)|2,{57,122,0}}, +/* 32730 */ {(13<<2)|2,{57,122,0}}, +/* 32731 */ {(13<<2)|2,{57,122,0}}, +/* 32732 */ {(13<<2)|2,{57,122,0}}, +/* 32733 */ {(13<<2)|2,{57,122,0}}, +/* 32734 */ {(13<<2)|2,{57,122,0}}, +/* 32735 */ {(13<<2)|2,{57,122,0}}, +/* 32736 */ {(14<<2)|2,{57,38,0}}, +/* 32737 */ {(14<<2)|2,{57,38,0}}, +/* 32738 */ {(14<<2)|2,{57,38,0}}, +/* 32739 */ {(14<<2)|2,{57,38,0}}, +/* 32740 */ {(14<<2)|2,{57,42,0}}, +/* 32741 */ {(14<<2)|2,{57,42,0}}, +/* 32742 */ {(14<<2)|2,{57,42,0}}, +/* 32743 */ {(14<<2)|2,{57,42,0}}, +/* 32744 */ {(14<<2)|2,{57,44,0}}, +/* 32745 */ {(14<<2)|2,{57,44,0}}, +/* 32746 */ {(14<<2)|2,{57,44,0}}, +/* 32747 */ {(14<<2)|2,{57,44,0}}, +/* 32748 */ {(14<<2)|2,{57,59,0}}, +/* 32749 */ {(14<<2)|2,{57,59,0}}, +/* 32750 */ {(14<<2)|2,{57,59,0}}, +/* 32751 */ {(14<<2)|2,{57,59,0}}, +/* 32752 */ {(14<<2)|2,{57,88,0}}, +/* 32753 */ {(14<<2)|2,{57,88,0}}, +/* 32754 */ {(14<<2)|2,{57,88,0}}, +/* 32755 */ {(14<<2)|2,{57,88,0}}, +/* 32756 */ {(14<<2)|2,{57,90,0}}, +/* 32757 */ {(14<<2)|2,{57,90,0}}, +/* 32758 */ {(14<<2)|2,{57,90,0}}, +/* 32759 */ {(14<<2)|2,{57,90,0}}, +/* 32760 */ {(16<<2)|2,{57,33,0}}, +/* 32761 */ {(16<<2)|2,{57,34,0}}, +/* 32762 */ {(16<<2)|2,{57,40,0}}, +/* 32763 */ {(16<<2)|2,{57,41,0}}, +/* 32764 */ {(16<<2)|2,{57,63,0}}, +/* 32765 */ {(6<<2)|1,{57,0,0}}, +/* 32766 */ {(6<<2)|1,{57,0,0}}, +/* 32767 */ {(6<<2)|1,{57,0,0}}, +/* 32768 */ {(16<<2)|3,{61,48,48}}, +/* 32769 */ {(16<<2)|3,{61,48,49}}, +/* 32770 */ {(16<<2)|3,{61,48,50}}, +/* 32771 */ {(16<<2)|3,{61,48,97}}, +/* 32772 */ {(16<<2)|3,{61,48,99}}, +/* 32773 */ {(16<<2)|3,{61,48,101}}, +/* 32774 */ {(16<<2)|3,{61,48,105}}, +/* 32775 */ {(16<<2)|3,{61,48,111}}, +/* 32776 */ {(16<<2)|3,{61,48,115}}, +/* 32777 */ {(16<<2)|3,{61,48,116}}, +/* 32778 */ {(11<<2)|2,{61,48,0}}, +/* 32779 */ {(11<<2)|2,{61,48,0}}, +/* 32780 */ {(11<<2)|2,{61,48,0}}, +/* 32781 */ {(11<<2)|2,{61,48,0}}, +/* 32782 */ {(11<<2)|2,{61,48,0}}, +/* 32783 */ {(11<<2)|2,{61,48,0}}, +/* 32784 */ {(11<<2)|2,{61,48,0}}, +/* 32785 */ {(11<<2)|2,{61,48,0}}, +/* 32786 */ {(11<<2)|2,{61,48,0}}, +/* 32787 */ {(11<<2)|2,{61,48,0}}, +/* 32788 */ {(11<<2)|2,{61,48,0}}, +/* 32789 */ {(11<<2)|2,{61,48,0}}, +/* 32790 */ {(11<<2)|2,{61,48,0}}, +/* 32791 */ {(11<<2)|2,{61,48,0}}, +/* 32792 */ {(11<<2)|2,{61,48,0}}, +/* 32793 */ {(11<<2)|2,{61,48,0}}, +/* 32794 */ {(11<<2)|2,{61,48,0}}, +/* 32795 */ {(11<<2)|2,{61,48,0}}, +/* 32796 */ {(11<<2)|2,{61,48,0}}, +/* 32797 */ {(11<<2)|2,{61,48,0}}, +/* 32798 */ {(11<<2)|2,{61,48,0}}, +/* 32799 */ {(11<<2)|2,{61,48,0}}, +/* 32800 */ {(16<<2)|3,{61,49,48}}, +/* 32801 */ {(16<<2)|3,{61,49,49}}, +/* 32802 */ {(16<<2)|3,{61,49,50}}, +/* 32803 */ {(16<<2)|3,{61,49,97}}, +/* 32804 */ {(16<<2)|3,{61,49,99}}, +/* 32805 */ {(16<<2)|3,{61,49,101}}, +/* 32806 */ {(16<<2)|3,{61,49,105}}, +/* 32807 */ {(16<<2)|3,{61,49,111}}, +/* 32808 */ {(16<<2)|3,{61,49,115}}, +/* 32809 */ {(16<<2)|3,{61,49,116}}, +/* 32810 */ {(11<<2)|2,{61,49,0}}, +/* 32811 */ {(11<<2)|2,{61,49,0}}, +/* 32812 */ {(11<<2)|2,{61,49,0}}, +/* 32813 */ {(11<<2)|2,{61,49,0}}, +/* 32814 */ {(11<<2)|2,{61,49,0}}, +/* 32815 */ {(11<<2)|2,{61,49,0}}, +/* 32816 */ {(11<<2)|2,{61,49,0}}, +/* 32817 */ {(11<<2)|2,{61,49,0}}, +/* 32818 */ {(11<<2)|2,{61,49,0}}, +/* 32819 */ {(11<<2)|2,{61,49,0}}, +/* 32820 */ {(11<<2)|2,{61,49,0}}, +/* 32821 */ {(11<<2)|2,{61,49,0}}, +/* 32822 */ {(11<<2)|2,{61,49,0}}, +/* 32823 */ {(11<<2)|2,{61,49,0}}, +/* 32824 */ {(11<<2)|2,{61,49,0}}, +/* 32825 */ {(11<<2)|2,{61,49,0}}, +/* 32826 */ {(11<<2)|2,{61,49,0}}, +/* 32827 */ {(11<<2)|2,{61,49,0}}, +/* 32828 */ {(11<<2)|2,{61,49,0}}, +/* 32829 */ {(11<<2)|2,{61,49,0}}, +/* 32830 */ {(11<<2)|2,{61,49,0}}, +/* 32831 */ {(11<<2)|2,{61,49,0}}, +/* 32832 */ {(16<<2)|3,{61,50,48}}, +/* 32833 */ {(16<<2)|3,{61,50,49}}, +/* 32834 */ {(16<<2)|3,{61,50,50}}, +/* 32835 */ {(16<<2)|3,{61,50,97}}, +/* 32836 */ {(16<<2)|3,{61,50,99}}, +/* 32837 */ {(16<<2)|3,{61,50,101}}, +/* 32838 */ {(16<<2)|3,{61,50,105}}, +/* 32839 */ {(16<<2)|3,{61,50,111}}, +/* 32840 */ {(16<<2)|3,{61,50,115}}, +/* 32841 */ {(16<<2)|3,{61,50,116}}, +/* 32842 */ {(11<<2)|2,{61,50,0}}, +/* 32843 */ {(11<<2)|2,{61,50,0}}, +/* 32844 */ {(11<<2)|2,{61,50,0}}, +/* 32845 */ {(11<<2)|2,{61,50,0}}, +/* 32846 */ {(11<<2)|2,{61,50,0}}, +/* 32847 */ {(11<<2)|2,{61,50,0}}, +/* 32848 */ {(11<<2)|2,{61,50,0}}, +/* 32849 */ {(11<<2)|2,{61,50,0}}, +/* 32850 */ {(11<<2)|2,{61,50,0}}, +/* 32851 */ {(11<<2)|2,{61,50,0}}, +/* 32852 */ {(11<<2)|2,{61,50,0}}, +/* 32853 */ {(11<<2)|2,{61,50,0}}, +/* 32854 */ {(11<<2)|2,{61,50,0}}, +/* 32855 */ {(11<<2)|2,{61,50,0}}, +/* 32856 */ {(11<<2)|2,{61,50,0}}, +/* 32857 */ {(11<<2)|2,{61,50,0}}, +/* 32858 */ {(11<<2)|2,{61,50,0}}, +/* 32859 */ {(11<<2)|2,{61,50,0}}, +/* 32860 */ {(11<<2)|2,{61,50,0}}, +/* 32861 */ {(11<<2)|2,{61,50,0}}, +/* 32862 */ {(11<<2)|2,{61,50,0}}, +/* 32863 */ {(11<<2)|2,{61,50,0}}, +/* 32864 */ {(16<<2)|3,{61,97,48}}, +/* 32865 */ {(16<<2)|3,{61,97,49}}, +/* 32866 */ {(16<<2)|3,{61,97,50}}, +/* 32867 */ {(16<<2)|3,{61,97,97}}, +/* 32868 */ {(16<<2)|3,{61,97,99}}, +/* 32869 */ {(16<<2)|3,{61,97,101}}, +/* 32870 */ {(16<<2)|3,{61,97,105}}, +/* 32871 */ {(16<<2)|3,{61,97,111}}, +/* 32872 */ {(16<<2)|3,{61,97,115}}, +/* 32873 */ {(16<<2)|3,{61,97,116}}, +/* 32874 */ {(11<<2)|2,{61,97,0}}, +/* 32875 */ {(11<<2)|2,{61,97,0}}, +/* 32876 */ {(11<<2)|2,{61,97,0}}, +/* 32877 */ {(11<<2)|2,{61,97,0}}, +/* 32878 */ {(11<<2)|2,{61,97,0}}, +/* 32879 */ {(11<<2)|2,{61,97,0}}, +/* 32880 */ {(11<<2)|2,{61,97,0}}, +/* 32881 */ {(11<<2)|2,{61,97,0}}, +/* 32882 */ {(11<<2)|2,{61,97,0}}, +/* 32883 */ {(11<<2)|2,{61,97,0}}, +/* 32884 */ {(11<<2)|2,{61,97,0}}, +/* 32885 */ {(11<<2)|2,{61,97,0}}, +/* 32886 */ {(11<<2)|2,{61,97,0}}, +/* 32887 */ {(11<<2)|2,{61,97,0}}, +/* 32888 */ {(11<<2)|2,{61,97,0}}, +/* 32889 */ {(11<<2)|2,{61,97,0}}, +/* 32890 */ {(11<<2)|2,{61,97,0}}, +/* 32891 */ {(11<<2)|2,{61,97,0}}, +/* 32892 */ {(11<<2)|2,{61,97,0}}, +/* 32893 */ {(11<<2)|2,{61,97,0}}, +/* 32894 */ {(11<<2)|2,{61,97,0}}, +/* 32895 */ {(11<<2)|2,{61,97,0}}, +/* 32896 */ {(16<<2)|3,{61,99,48}}, +/* 32897 */ {(16<<2)|3,{61,99,49}}, +/* 32898 */ {(16<<2)|3,{61,99,50}}, +/* 32899 */ {(16<<2)|3,{61,99,97}}, +/* 32900 */ {(16<<2)|3,{61,99,99}}, +/* 32901 */ {(16<<2)|3,{61,99,101}}, +/* 32902 */ {(16<<2)|3,{61,99,105}}, +/* 32903 */ {(16<<2)|3,{61,99,111}}, +/* 32904 */ {(16<<2)|3,{61,99,115}}, +/* 32905 */ {(16<<2)|3,{61,99,116}}, +/* 32906 */ {(11<<2)|2,{61,99,0}}, +/* 32907 */ {(11<<2)|2,{61,99,0}}, +/* 32908 */ {(11<<2)|2,{61,99,0}}, +/* 32909 */ {(11<<2)|2,{61,99,0}}, +/* 32910 */ {(11<<2)|2,{61,99,0}}, +/* 32911 */ {(11<<2)|2,{61,99,0}}, +/* 32912 */ {(11<<2)|2,{61,99,0}}, +/* 32913 */ {(11<<2)|2,{61,99,0}}, +/* 32914 */ {(11<<2)|2,{61,99,0}}, +/* 32915 */ {(11<<2)|2,{61,99,0}}, +/* 32916 */ {(11<<2)|2,{61,99,0}}, +/* 32917 */ {(11<<2)|2,{61,99,0}}, +/* 32918 */ {(11<<2)|2,{61,99,0}}, +/* 32919 */ {(11<<2)|2,{61,99,0}}, +/* 32920 */ {(11<<2)|2,{61,99,0}}, +/* 32921 */ {(11<<2)|2,{61,99,0}}, +/* 32922 */ {(11<<2)|2,{61,99,0}}, +/* 32923 */ {(11<<2)|2,{61,99,0}}, +/* 32924 */ {(11<<2)|2,{61,99,0}}, +/* 32925 */ {(11<<2)|2,{61,99,0}}, +/* 32926 */ {(11<<2)|2,{61,99,0}}, +/* 32927 */ {(11<<2)|2,{61,99,0}}, +/* 32928 */ {(16<<2)|3,{61,101,48}}, +/* 32929 */ {(16<<2)|3,{61,101,49}}, +/* 32930 */ {(16<<2)|3,{61,101,50}}, +/* 32931 */ {(16<<2)|3,{61,101,97}}, +/* 32932 */ {(16<<2)|3,{61,101,99}}, +/* 32933 */ {(16<<2)|3,{61,101,101}}, +/* 32934 */ {(16<<2)|3,{61,101,105}}, +/* 32935 */ {(16<<2)|3,{61,101,111}}, +/* 32936 */ {(16<<2)|3,{61,101,115}}, +/* 32937 */ {(16<<2)|3,{61,101,116}}, +/* 32938 */ {(11<<2)|2,{61,101,0}}, +/* 32939 */ {(11<<2)|2,{61,101,0}}, +/* 32940 */ {(11<<2)|2,{61,101,0}}, +/* 32941 */ {(11<<2)|2,{61,101,0}}, +/* 32942 */ {(11<<2)|2,{61,101,0}}, +/* 32943 */ {(11<<2)|2,{61,101,0}}, +/* 32944 */ {(11<<2)|2,{61,101,0}}, +/* 32945 */ {(11<<2)|2,{61,101,0}}, +/* 32946 */ {(11<<2)|2,{61,101,0}}, +/* 32947 */ {(11<<2)|2,{61,101,0}}, +/* 32948 */ {(11<<2)|2,{61,101,0}}, +/* 32949 */ {(11<<2)|2,{61,101,0}}, +/* 32950 */ {(11<<2)|2,{61,101,0}}, +/* 32951 */ {(11<<2)|2,{61,101,0}}, +/* 32952 */ {(11<<2)|2,{61,101,0}}, +/* 32953 */ {(11<<2)|2,{61,101,0}}, +/* 32954 */ {(11<<2)|2,{61,101,0}}, +/* 32955 */ {(11<<2)|2,{61,101,0}}, +/* 32956 */ {(11<<2)|2,{61,101,0}}, +/* 32957 */ {(11<<2)|2,{61,101,0}}, +/* 32958 */ {(11<<2)|2,{61,101,0}}, +/* 32959 */ {(11<<2)|2,{61,101,0}}, +/* 32960 */ {(16<<2)|3,{61,105,48}}, +/* 32961 */ {(16<<2)|3,{61,105,49}}, +/* 32962 */ {(16<<2)|3,{61,105,50}}, +/* 32963 */ {(16<<2)|3,{61,105,97}}, +/* 32964 */ {(16<<2)|3,{61,105,99}}, +/* 32965 */ {(16<<2)|3,{61,105,101}}, +/* 32966 */ {(16<<2)|3,{61,105,105}}, +/* 32967 */ {(16<<2)|3,{61,105,111}}, +/* 32968 */ {(16<<2)|3,{61,105,115}}, +/* 32969 */ {(16<<2)|3,{61,105,116}}, +/* 32970 */ {(11<<2)|2,{61,105,0}}, +/* 32971 */ {(11<<2)|2,{61,105,0}}, +/* 32972 */ {(11<<2)|2,{61,105,0}}, +/* 32973 */ {(11<<2)|2,{61,105,0}}, +/* 32974 */ {(11<<2)|2,{61,105,0}}, +/* 32975 */ {(11<<2)|2,{61,105,0}}, +/* 32976 */ {(11<<2)|2,{61,105,0}}, +/* 32977 */ {(11<<2)|2,{61,105,0}}, +/* 32978 */ {(11<<2)|2,{61,105,0}}, +/* 32979 */ {(11<<2)|2,{61,105,0}}, +/* 32980 */ {(11<<2)|2,{61,105,0}}, +/* 32981 */ {(11<<2)|2,{61,105,0}}, +/* 32982 */ {(11<<2)|2,{61,105,0}}, +/* 32983 */ {(11<<2)|2,{61,105,0}}, +/* 32984 */ {(11<<2)|2,{61,105,0}}, +/* 32985 */ {(11<<2)|2,{61,105,0}}, +/* 32986 */ {(11<<2)|2,{61,105,0}}, +/* 32987 */ {(11<<2)|2,{61,105,0}}, +/* 32988 */ {(11<<2)|2,{61,105,0}}, +/* 32989 */ {(11<<2)|2,{61,105,0}}, +/* 32990 */ {(11<<2)|2,{61,105,0}}, +/* 32991 */ {(11<<2)|2,{61,105,0}}, +/* 32992 */ {(16<<2)|3,{61,111,48}}, +/* 32993 */ {(16<<2)|3,{61,111,49}}, +/* 32994 */ {(16<<2)|3,{61,111,50}}, +/* 32995 */ {(16<<2)|3,{61,111,97}}, +/* 32996 */ {(16<<2)|3,{61,111,99}}, +/* 32997 */ {(16<<2)|3,{61,111,101}}, +/* 32998 */ {(16<<2)|3,{61,111,105}}, +/* 32999 */ {(16<<2)|3,{61,111,111}}, +/* 33000 */ {(16<<2)|3,{61,111,115}}, +/* 33001 */ {(16<<2)|3,{61,111,116}}, +/* 33002 */ {(11<<2)|2,{61,111,0}}, +/* 33003 */ {(11<<2)|2,{61,111,0}}, +/* 33004 */ {(11<<2)|2,{61,111,0}}, +/* 33005 */ {(11<<2)|2,{61,111,0}}, +/* 33006 */ {(11<<2)|2,{61,111,0}}, +/* 33007 */ {(11<<2)|2,{61,111,0}}, +/* 33008 */ {(11<<2)|2,{61,111,0}}, +/* 33009 */ {(11<<2)|2,{61,111,0}}, +/* 33010 */ {(11<<2)|2,{61,111,0}}, +/* 33011 */ {(11<<2)|2,{61,111,0}}, +/* 33012 */ {(11<<2)|2,{61,111,0}}, +/* 33013 */ {(11<<2)|2,{61,111,0}}, +/* 33014 */ {(11<<2)|2,{61,111,0}}, +/* 33015 */ {(11<<2)|2,{61,111,0}}, +/* 33016 */ {(11<<2)|2,{61,111,0}}, +/* 33017 */ {(11<<2)|2,{61,111,0}}, +/* 33018 */ {(11<<2)|2,{61,111,0}}, +/* 33019 */ {(11<<2)|2,{61,111,0}}, +/* 33020 */ {(11<<2)|2,{61,111,0}}, +/* 33021 */ {(11<<2)|2,{61,111,0}}, +/* 33022 */ {(11<<2)|2,{61,111,0}}, +/* 33023 */ {(11<<2)|2,{61,111,0}}, +/* 33024 */ {(16<<2)|3,{61,115,48}}, +/* 33025 */ {(16<<2)|3,{61,115,49}}, +/* 33026 */ {(16<<2)|3,{61,115,50}}, +/* 33027 */ {(16<<2)|3,{61,115,97}}, +/* 33028 */ {(16<<2)|3,{61,115,99}}, +/* 33029 */ {(16<<2)|3,{61,115,101}}, +/* 33030 */ {(16<<2)|3,{61,115,105}}, +/* 33031 */ {(16<<2)|3,{61,115,111}}, +/* 33032 */ {(16<<2)|3,{61,115,115}}, +/* 33033 */ {(16<<2)|3,{61,115,116}}, +/* 33034 */ {(11<<2)|2,{61,115,0}}, +/* 33035 */ {(11<<2)|2,{61,115,0}}, +/* 33036 */ {(11<<2)|2,{61,115,0}}, +/* 33037 */ {(11<<2)|2,{61,115,0}}, +/* 33038 */ {(11<<2)|2,{61,115,0}}, +/* 33039 */ {(11<<2)|2,{61,115,0}}, +/* 33040 */ {(11<<2)|2,{61,115,0}}, +/* 33041 */ {(11<<2)|2,{61,115,0}}, +/* 33042 */ {(11<<2)|2,{61,115,0}}, +/* 33043 */ {(11<<2)|2,{61,115,0}}, +/* 33044 */ {(11<<2)|2,{61,115,0}}, +/* 33045 */ {(11<<2)|2,{61,115,0}}, +/* 33046 */ {(11<<2)|2,{61,115,0}}, +/* 33047 */ {(11<<2)|2,{61,115,0}}, +/* 33048 */ {(11<<2)|2,{61,115,0}}, +/* 33049 */ {(11<<2)|2,{61,115,0}}, +/* 33050 */ {(11<<2)|2,{61,115,0}}, +/* 33051 */ {(11<<2)|2,{61,115,0}}, +/* 33052 */ {(11<<2)|2,{61,115,0}}, +/* 33053 */ {(11<<2)|2,{61,115,0}}, +/* 33054 */ {(11<<2)|2,{61,115,0}}, +/* 33055 */ {(11<<2)|2,{61,115,0}}, +/* 33056 */ {(16<<2)|3,{61,116,48}}, +/* 33057 */ {(16<<2)|3,{61,116,49}}, +/* 33058 */ {(16<<2)|3,{61,116,50}}, +/* 33059 */ {(16<<2)|3,{61,116,97}}, +/* 33060 */ {(16<<2)|3,{61,116,99}}, +/* 33061 */ {(16<<2)|3,{61,116,101}}, +/* 33062 */ {(16<<2)|3,{61,116,105}}, +/* 33063 */ {(16<<2)|3,{61,116,111}}, +/* 33064 */ {(16<<2)|3,{61,116,115}}, +/* 33065 */ {(16<<2)|3,{61,116,116}}, +/* 33066 */ {(11<<2)|2,{61,116,0}}, +/* 33067 */ {(11<<2)|2,{61,116,0}}, +/* 33068 */ {(11<<2)|2,{61,116,0}}, +/* 33069 */ {(11<<2)|2,{61,116,0}}, +/* 33070 */ {(11<<2)|2,{61,116,0}}, +/* 33071 */ {(11<<2)|2,{61,116,0}}, +/* 33072 */ {(11<<2)|2,{61,116,0}}, +/* 33073 */ {(11<<2)|2,{61,116,0}}, +/* 33074 */ {(11<<2)|2,{61,116,0}}, +/* 33075 */ {(11<<2)|2,{61,116,0}}, +/* 33076 */ {(11<<2)|2,{61,116,0}}, +/* 33077 */ {(11<<2)|2,{61,116,0}}, +/* 33078 */ {(11<<2)|2,{61,116,0}}, +/* 33079 */ {(11<<2)|2,{61,116,0}}, +/* 33080 */ {(11<<2)|2,{61,116,0}}, +/* 33081 */ {(11<<2)|2,{61,116,0}}, +/* 33082 */ {(11<<2)|2,{61,116,0}}, +/* 33083 */ {(11<<2)|2,{61,116,0}}, +/* 33084 */ {(11<<2)|2,{61,116,0}}, +/* 33085 */ {(11<<2)|2,{61,116,0}}, +/* 33086 */ {(11<<2)|2,{61,116,0}}, +/* 33087 */ {(11<<2)|2,{61,116,0}}, +/* 33088 */ {(12<<2)|2,{61,32,0}}, +/* 33089 */ {(12<<2)|2,{61,32,0}}, +/* 33090 */ {(12<<2)|2,{61,32,0}}, +/* 33091 */ {(12<<2)|2,{61,32,0}}, +/* 33092 */ {(12<<2)|2,{61,32,0}}, +/* 33093 */ {(12<<2)|2,{61,32,0}}, +/* 33094 */ {(12<<2)|2,{61,32,0}}, +/* 33095 */ {(12<<2)|2,{61,32,0}}, +/* 33096 */ {(12<<2)|2,{61,32,0}}, +/* 33097 */ {(12<<2)|2,{61,32,0}}, +/* 33098 */ {(12<<2)|2,{61,32,0}}, +/* 33099 */ {(12<<2)|2,{61,32,0}}, +/* 33100 */ {(12<<2)|2,{61,32,0}}, +/* 33101 */ {(12<<2)|2,{61,32,0}}, +/* 33102 */ {(12<<2)|2,{61,32,0}}, +/* 33103 */ {(12<<2)|2,{61,32,0}}, +/* 33104 */ {(12<<2)|2,{61,37,0}}, +/* 33105 */ {(12<<2)|2,{61,37,0}}, +/* 33106 */ {(12<<2)|2,{61,37,0}}, +/* 33107 */ {(12<<2)|2,{61,37,0}}, +/* 33108 */ {(12<<2)|2,{61,37,0}}, +/* 33109 */ {(12<<2)|2,{61,37,0}}, +/* 33110 */ {(12<<2)|2,{61,37,0}}, +/* 33111 */ {(12<<2)|2,{61,37,0}}, +/* 33112 */ {(12<<2)|2,{61,37,0}}, +/* 33113 */ {(12<<2)|2,{61,37,0}}, +/* 33114 */ {(12<<2)|2,{61,37,0}}, +/* 33115 */ {(12<<2)|2,{61,37,0}}, +/* 33116 */ {(12<<2)|2,{61,37,0}}, +/* 33117 */ {(12<<2)|2,{61,37,0}}, +/* 33118 */ {(12<<2)|2,{61,37,0}}, +/* 33119 */ {(12<<2)|2,{61,37,0}}, +/* 33120 */ {(12<<2)|2,{61,45,0}}, +/* 33121 */ {(12<<2)|2,{61,45,0}}, +/* 33122 */ {(12<<2)|2,{61,45,0}}, +/* 33123 */ {(12<<2)|2,{61,45,0}}, +/* 33124 */ {(12<<2)|2,{61,45,0}}, +/* 33125 */ {(12<<2)|2,{61,45,0}}, +/* 33126 */ {(12<<2)|2,{61,45,0}}, +/* 33127 */ {(12<<2)|2,{61,45,0}}, +/* 33128 */ {(12<<2)|2,{61,45,0}}, +/* 33129 */ {(12<<2)|2,{61,45,0}}, +/* 33130 */ {(12<<2)|2,{61,45,0}}, +/* 33131 */ {(12<<2)|2,{61,45,0}}, +/* 33132 */ {(12<<2)|2,{61,45,0}}, +/* 33133 */ {(12<<2)|2,{61,45,0}}, +/* 33134 */ {(12<<2)|2,{61,45,0}}, +/* 33135 */ {(12<<2)|2,{61,45,0}}, +/* 33136 */ {(12<<2)|2,{61,46,0}}, +/* 33137 */ {(12<<2)|2,{61,46,0}}, +/* 33138 */ {(12<<2)|2,{61,46,0}}, +/* 33139 */ {(12<<2)|2,{61,46,0}}, +/* 33140 */ {(12<<2)|2,{61,46,0}}, +/* 33141 */ {(12<<2)|2,{61,46,0}}, +/* 33142 */ {(12<<2)|2,{61,46,0}}, +/* 33143 */ {(12<<2)|2,{61,46,0}}, +/* 33144 */ {(12<<2)|2,{61,46,0}}, +/* 33145 */ {(12<<2)|2,{61,46,0}}, +/* 33146 */ {(12<<2)|2,{61,46,0}}, +/* 33147 */ {(12<<2)|2,{61,46,0}}, +/* 33148 */ {(12<<2)|2,{61,46,0}}, +/* 33149 */ {(12<<2)|2,{61,46,0}}, +/* 33150 */ {(12<<2)|2,{61,46,0}}, +/* 33151 */ {(12<<2)|2,{61,46,0}}, +/* 33152 */ {(12<<2)|2,{61,47,0}}, +/* 33153 */ {(12<<2)|2,{61,47,0}}, +/* 33154 */ {(12<<2)|2,{61,47,0}}, +/* 33155 */ {(12<<2)|2,{61,47,0}}, +/* 33156 */ {(12<<2)|2,{61,47,0}}, +/* 33157 */ {(12<<2)|2,{61,47,0}}, +/* 33158 */ {(12<<2)|2,{61,47,0}}, +/* 33159 */ {(12<<2)|2,{61,47,0}}, +/* 33160 */ {(12<<2)|2,{61,47,0}}, +/* 33161 */ {(12<<2)|2,{61,47,0}}, +/* 33162 */ {(12<<2)|2,{61,47,0}}, +/* 33163 */ {(12<<2)|2,{61,47,0}}, +/* 33164 */ {(12<<2)|2,{61,47,0}}, +/* 33165 */ {(12<<2)|2,{61,47,0}}, +/* 33166 */ {(12<<2)|2,{61,47,0}}, +/* 33167 */ {(12<<2)|2,{61,47,0}}, +/* 33168 */ {(12<<2)|2,{61,51,0}}, +/* 33169 */ {(12<<2)|2,{61,51,0}}, +/* 33170 */ {(12<<2)|2,{61,51,0}}, +/* 33171 */ {(12<<2)|2,{61,51,0}}, +/* 33172 */ {(12<<2)|2,{61,51,0}}, +/* 33173 */ {(12<<2)|2,{61,51,0}}, +/* 33174 */ {(12<<2)|2,{61,51,0}}, +/* 33175 */ {(12<<2)|2,{61,51,0}}, +/* 33176 */ {(12<<2)|2,{61,51,0}}, +/* 33177 */ {(12<<2)|2,{61,51,0}}, +/* 33178 */ {(12<<2)|2,{61,51,0}}, +/* 33179 */ {(12<<2)|2,{61,51,0}}, +/* 33180 */ {(12<<2)|2,{61,51,0}}, +/* 33181 */ {(12<<2)|2,{61,51,0}}, +/* 33182 */ {(12<<2)|2,{61,51,0}}, +/* 33183 */ {(12<<2)|2,{61,51,0}}, +/* 33184 */ {(12<<2)|2,{61,52,0}}, +/* 33185 */ {(12<<2)|2,{61,52,0}}, +/* 33186 */ {(12<<2)|2,{61,52,0}}, +/* 33187 */ {(12<<2)|2,{61,52,0}}, +/* 33188 */ {(12<<2)|2,{61,52,0}}, +/* 33189 */ {(12<<2)|2,{61,52,0}}, +/* 33190 */ {(12<<2)|2,{61,52,0}}, +/* 33191 */ {(12<<2)|2,{61,52,0}}, +/* 33192 */ {(12<<2)|2,{61,52,0}}, +/* 33193 */ {(12<<2)|2,{61,52,0}}, +/* 33194 */ {(12<<2)|2,{61,52,0}}, +/* 33195 */ {(12<<2)|2,{61,52,0}}, +/* 33196 */ {(12<<2)|2,{61,52,0}}, +/* 33197 */ {(12<<2)|2,{61,52,0}}, +/* 33198 */ {(12<<2)|2,{61,52,0}}, +/* 33199 */ {(12<<2)|2,{61,52,0}}, +/* 33200 */ {(12<<2)|2,{61,53,0}}, +/* 33201 */ {(12<<2)|2,{61,53,0}}, +/* 33202 */ {(12<<2)|2,{61,53,0}}, +/* 33203 */ {(12<<2)|2,{61,53,0}}, +/* 33204 */ {(12<<2)|2,{61,53,0}}, +/* 33205 */ {(12<<2)|2,{61,53,0}}, +/* 33206 */ {(12<<2)|2,{61,53,0}}, +/* 33207 */ {(12<<2)|2,{61,53,0}}, +/* 33208 */ {(12<<2)|2,{61,53,0}}, +/* 33209 */ {(12<<2)|2,{61,53,0}}, +/* 33210 */ {(12<<2)|2,{61,53,0}}, +/* 33211 */ {(12<<2)|2,{61,53,0}}, +/* 33212 */ {(12<<2)|2,{61,53,0}}, +/* 33213 */ {(12<<2)|2,{61,53,0}}, +/* 33214 */ {(12<<2)|2,{61,53,0}}, +/* 33215 */ {(12<<2)|2,{61,53,0}}, +/* 33216 */ {(12<<2)|2,{61,54,0}}, +/* 33217 */ {(12<<2)|2,{61,54,0}}, +/* 33218 */ {(12<<2)|2,{61,54,0}}, +/* 33219 */ {(12<<2)|2,{61,54,0}}, +/* 33220 */ {(12<<2)|2,{61,54,0}}, +/* 33221 */ {(12<<2)|2,{61,54,0}}, +/* 33222 */ {(12<<2)|2,{61,54,0}}, +/* 33223 */ {(12<<2)|2,{61,54,0}}, +/* 33224 */ {(12<<2)|2,{61,54,0}}, +/* 33225 */ {(12<<2)|2,{61,54,0}}, +/* 33226 */ {(12<<2)|2,{61,54,0}}, +/* 33227 */ {(12<<2)|2,{61,54,0}}, +/* 33228 */ {(12<<2)|2,{61,54,0}}, +/* 33229 */ {(12<<2)|2,{61,54,0}}, +/* 33230 */ {(12<<2)|2,{61,54,0}}, +/* 33231 */ {(12<<2)|2,{61,54,0}}, +/* 33232 */ {(12<<2)|2,{61,55,0}}, +/* 33233 */ {(12<<2)|2,{61,55,0}}, +/* 33234 */ {(12<<2)|2,{61,55,0}}, +/* 33235 */ {(12<<2)|2,{61,55,0}}, +/* 33236 */ {(12<<2)|2,{61,55,0}}, +/* 33237 */ {(12<<2)|2,{61,55,0}}, +/* 33238 */ {(12<<2)|2,{61,55,0}}, +/* 33239 */ {(12<<2)|2,{61,55,0}}, +/* 33240 */ {(12<<2)|2,{61,55,0}}, +/* 33241 */ {(12<<2)|2,{61,55,0}}, +/* 33242 */ {(12<<2)|2,{61,55,0}}, +/* 33243 */ {(12<<2)|2,{61,55,0}}, +/* 33244 */ {(12<<2)|2,{61,55,0}}, +/* 33245 */ {(12<<2)|2,{61,55,0}}, +/* 33246 */ {(12<<2)|2,{61,55,0}}, +/* 33247 */ {(12<<2)|2,{61,55,0}}, +/* 33248 */ {(12<<2)|2,{61,56,0}}, +/* 33249 */ {(12<<2)|2,{61,56,0}}, +/* 33250 */ {(12<<2)|2,{61,56,0}}, +/* 33251 */ {(12<<2)|2,{61,56,0}}, +/* 33252 */ {(12<<2)|2,{61,56,0}}, +/* 33253 */ {(12<<2)|2,{61,56,0}}, +/* 33254 */ {(12<<2)|2,{61,56,0}}, +/* 33255 */ {(12<<2)|2,{61,56,0}}, +/* 33256 */ {(12<<2)|2,{61,56,0}}, +/* 33257 */ {(12<<2)|2,{61,56,0}}, +/* 33258 */ {(12<<2)|2,{61,56,0}}, +/* 33259 */ {(12<<2)|2,{61,56,0}}, +/* 33260 */ {(12<<2)|2,{61,56,0}}, +/* 33261 */ {(12<<2)|2,{61,56,0}}, +/* 33262 */ {(12<<2)|2,{61,56,0}}, +/* 33263 */ {(12<<2)|2,{61,56,0}}, +/* 33264 */ {(12<<2)|2,{61,57,0}}, +/* 33265 */ {(12<<2)|2,{61,57,0}}, +/* 33266 */ {(12<<2)|2,{61,57,0}}, +/* 33267 */ {(12<<2)|2,{61,57,0}}, +/* 33268 */ {(12<<2)|2,{61,57,0}}, +/* 33269 */ {(12<<2)|2,{61,57,0}}, +/* 33270 */ {(12<<2)|2,{61,57,0}}, +/* 33271 */ {(12<<2)|2,{61,57,0}}, +/* 33272 */ {(12<<2)|2,{61,57,0}}, +/* 33273 */ {(12<<2)|2,{61,57,0}}, +/* 33274 */ {(12<<2)|2,{61,57,0}}, +/* 33275 */ {(12<<2)|2,{61,57,0}}, +/* 33276 */ {(12<<2)|2,{61,57,0}}, +/* 33277 */ {(12<<2)|2,{61,57,0}}, +/* 33278 */ {(12<<2)|2,{61,57,0}}, +/* 33279 */ {(12<<2)|2,{61,57,0}}, +/* 33280 */ {(12<<2)|2,{61,61,0}}, +/* 33281 */ {(12<<2)|2,{61,61,0}}, +/* 33282 */ {(12<<2)|2,{61,61,0}}, +/* 33283 */ {(12<<2)|2,{61,61,0}}, +/* 33284 */ {(12<<2)|2,{61,61,0}}, +/* 33285 */ {(12<<2)|2,{61,61,0}}, +/* 33286 */ {(12<<2)|2,{61,61,0}}, +/* 33287 */ {(12<<2)|2,{61,61,0}}, +/* 33288 */ {(12<<2)|2,{61,61,0}}, +/* 33289 */ {(12<<2)|2,{61,61,0}}, +/* 33290 */ {(12<<2)|2,{61,61,0}}, +/* 33291 */ {(12<<2)|2,{61,61,0}}, +/* 33292 */ {(12<<2)|2,{61,61,0}}, +/* 33293 */ {(12<<2)|2,{61,61,0}}, +/* 33294 */ {(12<<2)|2,{61,61,0}}, +/* 33295 */ {(12<<2)|2,{61,61,0}}, +/* 33296 */ {(12<<2)|2,{61,65,0}}, +/* 33297 */ {(12<<2)|2,{61,65,0}}, +/* 33298 */ {(12<<2)|2,{61,65,0}}, +/* 33299 */ {(12<<2)|2,{61,65,0}}, +/* 33300 */ {(12<<2)|2,{61,65,0}}, +/* 33301 */ {(12<<2)|2,{61,65,0}}, +/* 33302 */ {(12<<2)|2,{61,65,0}}, +/* 33303 */ {(12<<2)|2,{61,65,0}}, +/* 33304 */ {(12<<2)|2,{61,65,0}}, +/* 33305 */ {(12<<2)|2,{61,65,0}}, +/* 33306 */ {(12<<2)|2,{61,65,0}}, +/* 33307 */ {(12<<2)|2,{61,65,0}}, +/* 33308 */ {(12<<2)|2,{61,65,0}}, +/* 33309 */ {(12<<2)|2,{61,65,0}}, +/* 33310 */ {(12<<2)|2,{61,65,0}}, +/* 33311 */ {(12<<2)|2,{61,65,0}}, +/* 33312 */ {(12<<2)|2,{61,95,0}}, +/* 33313 */ {(12<<2)|2,{61,95,0}}, +/* 33314 */ {(12<<2)|2,{61,95,0}}, +/* 33315 */ {(12<<2)|2,{61,95,0}}, +/* 33316 */ {(12<<2)|2,{61,95,0}}, +/* 33317 */ {(12<<2)|2,{61,95,0}}, +/* 33318 */ {(12<<2)|2,{61,95,0}}, +/* 33319 */ {(12<<2)|2,{61,95,0}}, +/* 33320 */ {(12<<2)|2,{61,95,0}}, +/* 33321 */ {(12<<2)|2,{61,95,0}}, +/* 33322 */ {(12<<2)|2,{61,95,0}}, +/* 33323 */ {(12<<2)|2,{61,95,0}}, +/* 33324 */ {(12<<2)|2,{61,95,0}}, +/* 33325 */ {(12<<2)|2,{61,95,0}}, +/* 33326 */ {(12<<2)|2,{61,95,0}}, +/* 33327 */ {(12<<2)|2,{61,95,0}}, +/* 33328 */ {(12<<2)|2,{61,98,0}}, +/* 33329 */ {(12<<2)|2,{61,98,0}}, +/* 33330 */ {(12<<2)|2,{61,98,0}}, +/* 33331 */ {(12<<2)|2,{61,98,0}}, +/* 33332 */ {(12<<2)|2,{61,98,0}}, +/* 33333 */ {(12<<2)|2,{61,98,0}}, +/* 33334 */ {(12<<2)|2,{61,98,0}}, +/* 33335 */ {(12<<2)|2,{61,98,0}}, +/* 33336 */ {(12<<2)|2,{61,98,0}}, +/* 33337 */ {(12<<2)|2,{61,98,0}}, +/* 33338 */ {(12<<2)|2,{61,98,0}}, +/* 33339 */ {(12<<2)|2,{61,98,0}}, +/* 33340 */ {(12<<2)|2,{61,98,0}}, +/* 33341 */ {(12<<2)|2,{61,98,0}}, +/* 33342 */ {(12<<2)|2,{61,98,0}}, +/* 33343 */ {(12<<2)|2,{61,98,0}}, +/* 33344 */ {(12<<2)|2,{61,100,0}}, +/* 33345 */ {(12<<2)|2,{61,100,0}}, +/* 33346 */ {(12<<2)|2,{61,100,0}}, +/* 33347 */ {(12<<2)|2,{61,100,0}}, +/* 33348 */ {(12<<2)|2,{61,100,0}}, +/* 33349 */ {(12<<2)|2,{61,100,0}}, +/* 33350 */ {(12<<2)|2,{61,100,0}}, +/* 33351 */ {(12<<2)|2,{61,100,0}}, +/* 33352 */ {(12<<2)|2,{61,100,0}}, +/* 33353 */ {(12<<2)|2,{61,100,0}}, +/* 33354 */ {(12<<2)|2,{61,100,0}}, +/* 33355 */ {(12<<2)|2,{61,100,0}}, +/* 33356 */ {(12<<2)|2,{61,100,0}}, +/* 33357 */ {(12<<2)|2,{61,100,0}}, +/* 33358 */ {(12<<2)|2,{61,100,0}}, +/* 33359 */ {(12<<2)|2,{61,100,0}}, +/* 33360 */ {(12<<2)|2,{61,102,0}}, +/* 33361 */ {(12<<2)|2,{61,102,0}}, +/* 33362 */ {(12<<2)|2,{61,102,0}}, +/* 33363 */ {(12<<2)|2,{61,102,0}}, +/* 33364 */ {(12<<2)|2,{61,102,0}}, +/* 33365 */ {(12<<2)|2,{61,102,0}}, +/* 33366 */ {(12<<2)|2,{61,102,0}}, +/* 33367 */ {(12<<2)|2,{61,102,0}}, +/* 33368 */ {(12<<2)|2,{61,102,0}}, +/* 33369 */ {(12<<2)|2,{61,102,0}}, +/* 33370 */ {(12<<2)|2,{61,102,0}}, +/* 33371 */ {(12<<2)|2,{61,102,0}}, +/* 33372 */ {(12<<2)|2,{61,102,0}}, +/* 33373 */ {(12<<2)|2,{61,102,0}}, +/* 33374 */ {(12<<2)|2,{61,102,0}}, +/* 33375 */ {(12<<2)|2,{61,102,0}}, +/* 33376 */ {(12<<2)|2,{61,103,0}}, +/* 33377 */ {(12<<2)|2,{61,103,0}}, +/* 33378 */ {(12<<2)|2,{61,103,0}}, +/* 33379 */ {(12<<2)|2,{61,103,0}}, +/* 33380 */ {(12<<2)|2,{61,103,0}}, +/* 33381 */ {(12<<2)|2,{61,103,0}}, +/* 33382 */ {(12<<2)|2,{61,103,0}}, +/* 33383 */ {(12<<2)|2,{61,103,0}}, +/* 33384 */ {(12<<2)|2,{61,103,0}}, +/* 33385 */ {(12<<2)|2,{61,103,0}}, +/* 33386 */ {(12<<2)|2,{61,103,0}}, +/* 33387 */ {(12<<2)|2,{61,103,0}}, +/* 33388 */ {(12<<2)|2,{61,103,0}}, +/* 33389 */ {(12<<2)|2,{61,103,0}}, +/* 33390 */ {(12<<2)|2,{61,103,0}}, +/* 33391 */ {(12<<2)|2,{61,103,0}}, +/* 33392 */ {(12<<2)|2,{61,104,0}}, +/* 33393 */ {(12<<2)|2,{61,104,0}}, +/* 33394 */ {(12<<2)|2,{61,104,0}}, +/* 33395 */ {(12<<2)|2,{61,104,0}}, +/* 33396 */ {(12<<2)|2,{61,104,0}}, +/* 33397 */ {(12<<2)|2,{61,104,0}}, +/* 33398 */ {(12<<2)|2,{61,104,0}}, +/* 33399 */ {(12<<2)|2,{61,104,0}}, +/* 33400 */ {(12<<2)|2,{61,104,0}}, +/* 33401 */ {(12<<2)|2,{61,104,0}}, +/* 33402 */ {(12<<2)|2,{61,104,0}}, +/* 33403 */ {(12<<2)|2,{61,104,0}}, +/* 33404 */ {(12<<2)|2,{61,104,0}}, +/* 33405 */ {(12<<2)|2,{61,104,0}}, +/* 33406 */ {(12<<2)|2,{61,104,0}}, +/* 33407 */ {(12<<2)|2,{61,104,0}}, +/* 33408 */ {(12<<2)|2,{61,108,0}}, +/* 33409 */ {(12<<2)|2,{61,108,0}}, +/* 33410 */ {(12<<2)|2,{61,108,0}}, +/* 33411 */ {(12<<2)|2,{61,108,0}}, +/* 33412 */ {(12<<2)|2,{61,108,0}}, +/* 33413 */ {(12<<2)|2,{61,108,0}}, +/* 33414 */ {(12<<2)|2,{61,108,0}}, +/* 33415 */ {(12<<2)|2,{61,108,0}}, +/* 33416 */ {(12<<2)|2,{61,108,0}}, +/* 33417 */ {(12<<2)|2,{61,108,0}}, +/* 33418 */ {(12<<2)|2,{61,108,0}}, +/* 33419 */ {(12<<2)|2,{61,108,0}}, +/* 33420 */ {(12<<2)|2,{61,108,0}}, +/* 33421 */ {(12<<2)|2,{61,108,0}}, +/* 33422 */ {(12<<2)|2,{61,108,0}}, +/* 33423 */ {(12<<2)|2,{61,108,0}}, +/* 33424 */ {(12<<2)|2,{61,109,0}}, +/* 33425 */ {(12<<2)|2,{61,109,0}}, +/* 33426 */ {(12<<2)|2,{61,109,0}}, +/* 33427 */ {(12<<2)|2,{61,109,0}}, +/* 33428 */ {(12<<2)|2,{61,109,0}}, +/* 33429 */ {(12<<2)|2,{61,109,0}}, +/* 33430 */ {(12<<2)|2,{61,109,0}}, +/* 33431 */ {(12<<2)|2,{61,109,0}}, +/* 33432 */ {(12<<2)|2,{61,109,0}}, +/* 33433 */ {(12<<2)|2,{61,109,0}}, +/* 33434 */ {(12<<2)|2,{61,109,0}}, +/* 33435 */ {(12<<2)|2,{61,109,0}}, +/* 33436 */ {(12<<2)|2,{61,109,0}}, +/* 33437 */ {(12<<2)|2,{61,109,0}}, +/* 33438 */ {(12<<2)|2,{61,109,0}}, +/* 33439 */ {(12<<2)|2,{61,109,0}}, +/* 33440 */ {(12<<2)|2,{61,110,0}}, +/* 33441 */ {(12<<2)|2,{61,110,0}}, +/* 33442 */ {(12<<2)|2,{61,110,0}}, +/* 33443 */ {(12<<2)|2,{61,110,0}}, +/* 33444 */ {(12<<2)|2,{61,110,0}}, +/* 33445 */ {(12<<2)|2,{61,110,0}}, +/* 33446 */ {(12<<2)|2,{61,110,0}}, +/* 33447 */ {(12<<2)|2,{61,110,0}}, +/* 33448 */ {(12<<2)|2,{61,110,0}}, +/* 33449 */ {(12<<2)|2,{61,110,0}}, +/* 33450 */ {(12<<2)|2,{61,110,0}}, +/* 33451 */ {(12<<2)|2,{61,110,0}}, +/* 33452 */ {(12<<2)|2,{61,110,0}}, +/* 33453 */ {(12<<2)|2,{61,110,0}}, +/* 33454 */ {(12<<2)|2,{61,110,0}}, +/* 33455 */ {(12<<2)|2,{61,110,0}}, +/* 33456 */ {(12<<2)|2,{61,112,0}}, +/* 33457 */ {(12<<2)|2,{61,112,0}}, +/* 33458 */ {(12<<2)|2,{61,112,0}}, +/* 33459 */ {(12<<2)|2,{61,112,0}}, +/* 33460 */ {(12<<2)|2,{61,112,0}}, +/* 33461 */ {(12<<2)|2,{61,112,0}}, +/* 33462 */ {(12<<2)|2,{61,112,0}}, +/* 33463 */ {(12<<2)|2,{61,112,0}}, +/* 33464 */ {(12<<2)|2,{61,112,0}}, +/* 33465 */ {(12<<2)|2,{61,112,0}}, +/* 33466 */ {(12<<2)|2,{61,112,0}}, +/* 33467 */ {(12<<2)|2,{61,112,0}}, +/* 33468 */ {(12<<2)|2,{61,112,0}}, +/* 33469 */ {(12<<2)|2,{61,112,0}}, +/* 33470 */ {(12<<2)|2,{61,112,0}}, +/* 33471 */ {(12<<2)|2,{61,112,0}}, +/* 33472 */ {(12<<2)|2,{61,114,0}}, +/* 33473 */ {(12<<2)|2,{61,114,0}}, +/* 33474 */ {(12<<2)|2,{61,114,0}}, +/* 33475 */ {(12<<2)|2,{61,114,0}}, +/* 33476 */ {(12<<2)|2,{61,114,0}}, +/* 33477 */ {(12<<2)|2,{61,114,0}}, +/* 33478 */ {(12<<2)|2,{61,114,0}}, +/* 33479 */ {(12<<2)|2,{61,114,0}}, +/* 33480 */ {(12<<2)|2,{61,114,0}}, +/* 33481 */ {(12<<2)|2,{61,114,0}}, +/* 33482 */ {(12<<2)|2,{61,114,0}}, +/* 33483 */ {(12<<2)|2,{61,114,0}}, +/* 33484 */ {(12<<2)|2,{61,114,0}}, +/* 33485 */ {(12<<2)|2,{61,114,0}}, +/* 33486 */ {(12<<2)|2,{61,114,0}}, +/* 33487 */ {(12<<2)|2,{61,114,0}}, +/* 33488 */ {(12<<2)|2,{61,117,0}}, +/* 33489 */ {(12<<2)|2,{61,117,0}}, +/* 33490 */ {(12<<2)|2,{61,117,0}}, +/* 33491 */ {(12<<2)|2,{61,117,0}}, +/* 33492 */ {(12<<2)|2,{61,117,0}}, +/* 33493 */ {(12<<2)|2,{61,117,0}}, +/* 33494 */ {(12<<2)|2,{61,117,0}}, +/* 33495 */ {(12<<2)|2,{61,117,0}}, +/* 33496 */ {(12<<2)|2,{61,117,0}}, +/* 33497 */ {(12<<2)|2,{61,117,0}}, +/* 33498 */ {(12<<2)|2,{61,117,0}}, +/* 33499 */ {(12<<2)|2,{61,117,0}}, +/* 33500 */ {(12<<2)|2,{61,117,0}}, +/* 33501 */ {(12<<2)|2,{61,117,0}}, +/* 33502 */ {(12<<2)|2,{61,117,0}}, +/* 33503 */ {(12<<2)|2,{61,117,0}}, +/* 33504 */ {(13<<2)|2,{61,58,0}}, +/* 33505 */ {(13<<2)|2,{61,58,0}}, +/* 33506 */ {(13<<2)|2,{61,58,0}}, +/* 33507 */ {(13<<2)|2,{61,58,0}}, +/* 33508 */ {(13<<2)|2,{61,58,0}}, +/* 33509 */ {(13<<2)|2,{61,58,0}}, +/* 33510 */ {(13<<2)|2,{61,58,0}}, +/* 33511 */ {(13<<2)|2,{61,58,0}}, +/* 33512 */ {(13<<2)|2,{61,66,0}}, +/* 33513 */ {(13<<2)|2,{61,66,0}}, +/* 33514 */ {(13<<2)|2,{61,66,0}}, +/* 33515 */ {(13<<2)|2,{61,66,0}}, +/* 33516 */ {(13<<2)|2,{61,66,0}}, +/* 33517 */ {(13<<2)|2,{61,66,0}}, +/* 33518 */ {(13<<2)|2,{61,66,0}}, +/* 33519 */ {(13<<2)|2,{61,66,0}}, +/* 33520 */ {(13<<2)|2,{61,67,0}}, +/* 33521 */ {(13<<2)|2,{61,67,0}}, +/* 33522 */ {(13<<2)|2,{61,67,0}}, +/* 33523 */ {(13<<2)|2,{61,67,0}}, +/* 33524 */ {(13<<2)|2,{61,67,0}}, +/* 33525 */ {(13<<2)|2,{61,67,0}}, +/* 33526 */ {(13<<2)|2,{61,67,0}}, +/* 33527 */ {(13<<2)|2,{61,67,0}}, +/* 33528 */ {(13<<2)|2,{61,68,0}}, +/* 33529 */ {(13<<2)|2,{61,68,0}}, +/* 33530 */ {(13<<2)|2,{61,68,0}}, +/* 33531 */ {(13<<2)|2,{61,68,0}}, +/* 33532 */ {(13<<2)|2,{61,68,0}}, +/* 33533 */ {(13<<2)|2,{61,68,0}}, +/* 33534 */ {(13<<2)|2,{61,68,0}}, +/* 33535 */ {(13<<2)|2,{61,68,0}}, +/* 33536 */ {(13<<2)|2,{61,69,0}}, +/* 33537 */ {(13<<2)|2,{61,69,0}}, +/* 33538 */ {(13<<2)|2,{61,69,0}}, +/* 33539 */ {(13<<2)|2,{61,69,0}}, +/* 33540 */ {(13<<2)|2,{61,69,0}}, +/* 33541 */ {(13<<2)|2,{61,69,0}}, +/* 33542 */ {(13<<2)|2,{61,69,0}}, +/* 33543 */ {(13<<2)|2,{61,69,0}}, +/* 33544 */ {(13<<2)|2,{61,70,0}}, +/* 33545 */ {(13<<2)|2,{61,70,0}}, +/* 33546 */ {(13<<2)|2,{61,70,0}}, +/* 33547 */ {(13<<2)|2,{61,70,0}}, +/* 33548 */ {(13<<2)|2,{61,70,0}}, +/* 33549 */ {(13<<2)|2,{61,70,0}}, +/* 33550 */ {(13<<2)|2,{61,70,0}}, +/* 33551 */ {(13<<2)|2,{61,70,0}}, +/* 33552 */ {(13<<2)|2,{61,71,0}}, +/* 33553 */ {(13<<2)|2,{61,71,0}}, +/* 33554 */ {(13<<2)|2,{61,71,0}}, +/* 33555 */ {(13<<2)|2,{61,71,0}}, +/* 33556 */ {(13<<2)|2,{61,71,0}}, +/* 33557 */ {(13<<2)|2,{61,71,0}}, +/* 33558 */ {(13<<2)|2,{61,71,0}}, +/* 33559 */ {(13<<2)|2,{61,71,0}}, +/* 33560 */ {(13<<2)|2,{61,72,0}}, +/* 33561 */ {(13<<2)|2,{61,72,0}}, +/* 33562 */ {(13<<2)|2,{61,72,0}}, +/* 33563 */ {(13<<2)|2,{61,72,0}}, +/* 33564 */ {(13<<2)|2,{61,72,0}}, +/* 33565 */ {(13<<2)|2,{61,72,0}}, +/* 33566 */ {(13<<2)|2,{61,72,0}}, +/* 33567 */ {(13<<2)|2,{61,72,0}}, +/* 33568 */ {(13<<2)|2,{61,73,0}}, +/* 33569 */ {(13<<2)|2,{61,73,0}}, +/* 33570 */ {(13<<2)|2,{61,73,0}}, +/* 33571 */ {(13<<2)|2,{61,73,0}}, +/* 33572 */ {(13<<2)|2,{61,73,0}}, +/* 33573 */ {(13<<2)|2,{61,73,0}}, +/* 33574 */ {(13<<2)|2,{61,73,0}}, +/* 33575 */ {(13<<2)|2,{61,73,0}}, +/* 33576 */ {(13<<2)|2,{61,74,0}}, +/* 33577 */ {(13<<2)|2,{61,74,0}}, +/* 33578 */ {(13<<2)|2,{61,74,0}}, +/* 33579 */ {(13<<2)|2,{61,74,0}}, +/* 33580 */ {(13<<2)|2,{61,74,0}}, +/* 33581 */ {(13<<2)|2,{61,74,0}}, +/* 33582 */ {(13<<2)|2,{61,74,0}}, +/* 33583 */ {(13<<2)|2,{61,74,0}}, +/* 33584 */ {(13<<2)|2,{61,75,0}}, +/* 33585 */ {(13<<2)|2,{61,75,0}}, +/* 33586 */ {(13<<2)|2,{61,75,0}}, +/* 33587 */ {(13<<2)|2,{61,75,0}}, +/* 33588 */ {(13<<2)|2,{61,75,0}}, +/* 33589 */ {(13<<2)|2,{61,75,0}}, +/* 33590 */ {(13<<2)|2,{61,75,0}}, +/* 33591 */ {(13<<2)|2,{61,75,0}}, +/* 33592 */ {(13<<2)|2,{61,76,0}}, +/* 33593 */ {(13<<2)|2,{61,76,0}}, +/* 33594 */ {(13<<2)|2,{61,76,0}}, +/* 33595 */ {(13<<2)|2,{61,76,0}}, +/* 33596 */ {(13<<2)|2,{61,76,0}}, +/* 33597 */ {(13<<2)|2,{61,76,0}}, +/* 33598 */ {(13<<2)|2,{61,76,0}}, +/* 33599 */ {(13<<2)|2,{61,76,0}}, +/* 33600 */ {(13<<2)|2,{61,77,0}}, +/* 33601 */ {(13<<2)|2,{61,77,0}}, +/* 33602 */ {(13<<2)|2,{61,77,0}}, +/* 33603 */ {(13<<2)|2,{61,77,0}}, +/* 33604 */ {(13<<2)|2,{61,77,0}}, +/* 33605 */ {(13<<2)|2,{61,77,0}}, +/* 33606 */ {(13<<2)|2,{61,77,0}}, +/* 33607 */ {(13<<2)|2,{61,77,0}}, +/* 33608 */ {(13<<2)|2,{61,78,0}}, +/* 33609 */ {(13<<2)|2,{61,78,0}}, +/* 33610 */ {(13<<2)|2,{61,78,0}}, +/* 33611 */ {(13<<2)|2,{61,78,0}}, +/* 33612 */ {(13<<2)|2,{61,78,0}}, +/* 33613 */ {(13<<2)|2,{61,78,0}}, +/* 33614 */ {(13<<2)|2,{61,78,0}}, +/* 33615 */ {(13<<2)|2,{61,78,0}}, +/* 33616 */ {(13<<2)|2,{61,79,0}}, +/* 33617 */ {(13<<2)|2,{61,79,0}}, +/* 33618 */ {(13<<2)|2,{61,79,0}}, +/* 33619 */ {(13<<2)|2,{61,79,0}}, +/* 33620 */ {(13<<2)|2,{61,79,0}}, +/* 33621 */ {(13<<2)|2,{61,79,0}}, +/* 33622 */ {(13<<2)|2,{61,79,0}}, +/* 33623 */ {(13<<2)|2,{61,79,0}}, +/* 33624 */ {(13<<2)|2,{61,80,0}}, +/* 33625 */ {(13<<2)|2,{61,80,0}}, +/* 33626 */ {(13<<2)|2,{61,80,0}}, +/* 33627 */ {(13<<2)|2,{61,80,0}}, +/* 33628 */ {(13<<2)|2,{61,80,0}}, +/* 33629 */ {(13<<2)|2,{61,80,0}}, +/* 33630 */ {(13<<2)|2,{61,80,0}}, +/* 33631 */ {(13<<2)|2,{61,80,0}}, +/* 33632 */ {(13<<2)|2,{61,81,0}}, +/* 33633 */ {(13<<2)|2,{61,81,0}}, +/* 33634 */ {(13<<2)|2,{61,81,0}}, +/* 33635 */ {(13<<2)|2,{61,81,0}}, +/* 33636 */ {(13<<2)|2,{61,81,0}}, +/* 33637 */ {(13<<2)|2,{61,81,0}}, +/* 33638 */ {(13<<2)|2,{61,81,0}}, +/* 33639 */ {(13<<2)|2,{61,81,0}}, +/* 33640 */ {(13<<2)|2,{61,82,0}}, +/* 33641 */ {(13<<2)|2,{61,82,0}}, +/* 33642 */ {(13<<2)|2,{61,82,0}}, +/* 33643 */ {(13<<2)|2,{61,82,0}}, +/* 33644 */ {(13<<2)|2,{61,82,0}}, +/* 33645 */ {(13<<2)|2,{61,82,0}}, +/* 33646 */ {(13<<2)|2,{61,82,0}}, +/* 33647 */ {(13<<2)|2,{61,82,0}}, +/* 33648 */ {(13<<2)|2,{61,83,0}}, +/* 33649 */ {(13<<2)|2,{61,83,0}}, +/* 33650 */ {(13<<2)|2,{61,83,0}}, +/* 33651 */ {(13<<2)|2,{61,83,0}}, +/* 33652 */ {(13<<2)|2,{61,83,0}}, +/* 33653 */ {(13<<2)|2,{61,83,0}}, +/* 33654 */ {(13<<2)|2,{61,83,0}}, +/* 33655 */ {(13<<2)|2,{61,83,0}}, +/* 33656 */ {(13<<2)|2,{61,84,0}}, +/* 33657 */ {(13<<2)|2,{61,84,0}}, +/* 33658 */ {(13<<2)|2,{61,84,0}}, +/* 33659 */ {(13<<2)|2,{61,84,0}}, +/* 33660 */ {(13<<2)|2,{61,84,0}}, +/* 33661 */ {(13<<2)|2,{61,84,0}}, +/* 33662 */ {(13<<2)|2,{61,84,0}}, +/* 33663 */ {(13<<2)|2,{61,84,0}}, +/* 33664 */ {(13<<2)|2,{61,85,0}}, +/* 33665 */ {(13<<2)|2,{61,85,0}}, +/* 33666 */ {(13<<2)|2,{61,85,0}}, +/* 33667 */ {(13<<2)|2,{61,85,0}}, +/* 33668 */ {(13<<2)|2,{61,85,0}}, +/* 33669 */ {(13<<2)|2,{61,85,0}}, +/* 33670 */ {(13<<2)|2,{61,85,0}}, +/* 33671 */ {(13<<2)|2,{61,85,0}}, +/* 33672 */ {(13<<2)|2,{61,86,0}}, +/* 33673 */ {(13<<2)|2,{61,86,0}}, +/* 33674 */ {(13<<2)|2,{61,86,0}}, +/* 33675 */ {(13<<2)|2,{61,86,0}}, +/* 33676 */ {(13<<2)|2,{61,86,0}}, +/* 33677 */ {(13<<2)|2,{61,86,0}}, +/* 33678 */ {(13<<2)|2,{61,86,0}}, +/* 33679 */ {(13<<2)|2,{61,86,0}}, +/* 33680 */ {(13<<2)|2,{61,87,0}}, +/* 33681 */ {(13<<2)|2,{61,87,0}}, +/* 33682 */ {(13<<2)|2,{61,87,0}}, +/* 33683 */ {(13<<2)|2,{61,87,0}}, +/* 33684 */ {(13<<2)|2,{61,87,0}}, +/* 33685 */ {(13<<2)|2,{61,87,0}}, +/* 33686 */ {(13<<2)|2,{61,87,0}}, +/* 33687 */ {(13<<2)|2,{61,87,0}}, +/* 33688 */ {(13<<2)|2,{61,89,0}}, +/* 33689 */ {(13<<2)|2,{61,89,0}}, +/* 33690 */ {(13<<2)|2,{61,89,0}}, +/* 33691 */ {(13<<2)|2,{61,89,0}}, +/* 33692 */ {(13<<2)|2,{61,89,0}}, +/* 33693 */ {(13<<2)|2,{61,89,0}}, +/* 33694 */ {(13<<2)|2,{61,89,0}}, +/* 33695 */ {(13<<2)|2,{61,89,0}}, +/* 33696 */ {(13<<2)|2,{61,106,0}}, +/* 33697 */ {(13<<2)|2,{61,106,0}}, +/* 33698 */ {(13<<2)|2,{61,106,0}}, +/* 33699 */ {(13<<2)|2,{61,106,0}}, +/* 33700 */ {(13<<2)|2,{61,106,0}}, +/* 33701 */ {(13<<2)|2,{61,106,0}}, +/* 33702 */ {(13<<2)|2,{61,106,0}}, +/* 33703 */ {(13<<2)|2,{61,106,0}}, +/* 33704 */ {(13<<2)|2,{61,107,0}}, +/* 33705 */ {(13<<2)|2,{61,107,0}}, +/* 33706 */ {(13<<2)|2,{61,107,0}}, +/* 33707 */ {(13<<2)|2,{61,107,0}}, +/* 33708 */ {(13<<2)|2,{61,107,0}}, +/* 33709 */ {(13<<2)|2,{61,107,0}}, +/* 33710 */ {(13<<2)|2,{61,107,0}}, +/* 33711 */ {(13<<2)|2,{61,107,0}}, +/* 33712 */ {(13<<2)|2,{61,113,0}}, +/* 33713 */ {(13<<2)|2,{61,113,0}}, +/* 33714 */ {(13<<2)|2,{61,113,0}}, +/* 33715 */ {(13<<2)|2,{61,113,0}}, +/* 33716 */ {(13<<2)|2,{61,113,0}}, +/* 33717 */ {(13<<2)|2,{61,113,0}}, +/* 33718 */ {(13<<2)|2,{61,113,0}}, +/* 33719 */ {(13<<2)|2,{61,113,0}}, +/* 33720 */ {(13<<2)|2,{61,118,0}}, +/* 33721 */ {(13<<2)|2,{61,118,0}}, +/* 33722 */ {(13<<2)|2,{61,118,0}}, +/* 33723 */ {(13<<2)|2,{61,118,0}}, +/* 33724 */ {(13<<2)|2,{61,118,0}}, +/* 33725 */ {(13<<2)|2,{61,118,0}}, +/* 33726 */ {(13<<2)|2,{61,118,0}}, +/* 33727 */ {(13<<2)|2,{61,118,0}}, +/* 33728 */ {(13<<2)|2,{61,119,0}}, +/* 33729 */ {(13<<2)|2,{61,119,0}}, +/* 33730 */ {(13<<2)|2,{61,119,0}}, +/* 33731 */ {(13<<2)|2,{61,119,0}}, +/* 33732 */ {(13<<2)|2,{61,119,0}}, +/* 33733 */ {(13<<2)|2,{61,119,0}}, +/* 33734 */ {(13<<2)|2,{61,119,0}}, +/* 33735 */ {(13<<2)|2,{61,119,0}}, +/* 33736 */ {(13<<2)|2,{61,120,0}}, +/* 33737 */ {(13<<2)|2,{61,120,0}}, +/* 33738 */ {(13<<2)|2,{61,120,0}}, +/* 33739 */ {(13<<2)|2,{61,120,0}}, +/* 33740 */ {(13<<2)|2,{61,120,0}}, +/* 33741 */ {(13<<2)|2,{61,120,0}}, +/* 33742 */ {(13<<2)|2,{61,120,0}}, +/* 33743 */ {(13<<2)|2,{61,120,0}}, +/* 33744 */ {(13<<2)|2,{61,121,0}}, +/* 33745 */ {(13<<2)|2,{61,121,0}}, +/* 33746 */ {(13<<2)|2,{61,121,0}}, +/* 33747 */ {(13<<2)|2,{61,121,0}}, +/* 33748 */ {(13<<2)|2,{61,121,0}}, +/* 33749 */ {(13<<2)|2,{61,121,0}}, +/* 33750 */ {(13<<2)|2,{61,121,0}}, +/* 33751 */ {(13<<2)|2,{61,121,0}}, +/* 33752 */ {(13<<2)|2,{61,122,0}}, +/* 33753 */ {(13<<2)|2,{61,122,0}}, +/* 33754 */ {(13<<2)|2,{61,122,0}}, +/* 33755 */ {(13<<2)|2,{61,122,0}}, +/* 33756 */ {(13<<2)|2,{61,122,0}}, +/* 33757 */ {(13<<2)|2,{61,122,0}}, +/* 33758 */ {(13<<2)|2,{61,122,0}}, +/* 33759 */ {(13<<2)|2,{61,122,0}}, +/* 33760 */ {(14<<2)|2,{61,38,0}}, +/* 33761 */ {(14<<2)|2,{61,38,0}}, +/* 33762 */ {(14<<2)|2,{61,38,0}}, +/* 33763 */ {(14<<2)|2,{61,38,0}}, +/* 33764 */ {(14<<2)|2,{61,42,0}}, +/* 33765 */ {(14<<2)|2,{61,42,0}}, +/* 33766 */ {(14<<2)|2,{61,42,0}}, +/* 33767 */ {(14<<2)|2,{61,42,0}}, +/* 33768 */ {(14<<2)|2,{61,44,0}}, +/* 33769 */ {(14<<2)|2,{61,44,0}}, +/* 33770 */ {(14<<2)|2,{61,44,0}}, +/* 33771 */ {(14<<2)|2,{61,44,0}}, +/* 33772 */ {(14<<2)|2,{61,59,0}}, +/* 33773 */ {(14<<2)|2,{61,59,0}}, +/* 33774 */ {(14<<2)|2,{61,59,0}}, +/* 33775 */ {(14<<2)|2,{61,59,0}}, +/* 33776 */ {(14<<2)|2,{61,88,0}}, +/* 33777 */ {(14<<2)|2,{61,88,0}}, +/* 33778 */ {(14<<2)|2,{61,88,0}}, +/* 33779 */ {(14<<2)|2,{61,88,0}}, +/* 33780 */ {(14<<2)|2,{61,90,0}}, +/* 33781 */ {(14<<2)|2,{61,90,0}}, +/* 33782 */ {(14<<2)|2,{61,90,0}}, +/* 33783 */ {(14<<2)|2,{61,90,0}}, +/* 33784 */ {(16<<2)|2,{61,33,0}}, +/* 33785 */ {(16<<2)|2,{61,34,0}}, +/* 33786 */ {(16<<2)|2,{61,40,0}}, +/* 33787 */ {(16<<2)|2,{61,41,0}}, +/* 33788 */ {(16<<2)|2,{61,63,0}}, +/* 33789 */ {(6<<2)|1,{61,0,0}}, +/* 33790 */ {(6<<2)|1,{61,0,0}}, +/* 33791 */ {(6<<2)|1,{61,0,0}}, +/* 33792 */ {(16<<2)|3,{65,48,48}}, +/* 33793 */ {(16<<2)|3,{65,48,49}}, +/* 33794 */ {(16<<2)|3,{65,48,50}}, +/* 33795 */ {(16<<2)|3,{65,48,97}}, +/* 33796 */ {(16<<2)|3,{65,48,99}}, +/* 33797 */ {(16<<2)|3,{65,48,101}}, +/* 33798 */ {(16<<2)|3,{65,48,105}}, +/* 33799 */ {(16<<2)|3,{65,48,111}}, +/* 33800 */ {(16<<2)|3,{65,48,115}}, +/* 33801 */ {(16<<2)|3,{65,48,116}}, +/* 33802 */ {(11<<2)|2,{65,48,0}}, +/* 33803 */ {(11<<2)|2,{65,48,0}}, +/* 33804 */ {(11<<2)|2,{65,48,0}}, +/* 33805 */ {(11<<2)|2,{65,48,0}}, +/* 33806 */ {(11<<2)|2,{65,48,0}}, +/* 33807 */ {(11<<2)|2,{65,48,0}}, +/* 33808 */ {(11<<2)|2,{65,48,0}}, +/* 33809 */ {(11<<2)|2,{65,48,0}}, +/* 33810 */ {(11<<2)|2,{65,48,0}}, +/* 33811 */ {(11<<2)|2,{65,48,0}}, +/* 33812 */ {(11<<2)|2,{65,48,0}}, +/* 33813 */ {(11<<2)|2,{65,48,0}}, +/* 33814 */ {(11<<2)|2,{65,48,0}}, +/* 33815 */ {(11<<2)|2,{65,48,0}}, +/* 33816 */ {(11<<2)|2,{65,48,0}}, +/* 33817 */ {(11<<2)|2,{65,48,0}}, +/* 33818 */ {(11<<2)|2,{65,48,0}}, +/* 33819 */ {(11<<2)|2,{65,48,0}}, +/* 33820 */ {(11<<2)|2,{65,48,0}}, +/* 33821 */ {(11<<2)|2,{65,48,0}}, +/* 33822 */ {(11<<2)|2,{65,48,0}}, +/* 33823 */ {(11<<2)|2,{65,48,0}}, +/* 33824 */ {(16<<2)|3,{65,49,48}}, +/* 33825 */ {(16<<2)|3,{65,49,49}}, +/* 33826 */ {(16<<2)|3,{65,49,50}}, +/* 33827 */ {(16<<2)|3,{65,49,97}}, +/* 33828 */ {(16<<2)|3,{65,49,99}}, +/* 33829 */ {(16<<2)|3,{65,49,101}}, +/* 33830 */ {(16<<2)|3,{65,49,105}}, +/* 33831 */ {(16<<2)|3,{65,49,111}}, +/* 33832 */ {(16<<2)|3,{65,49,115}}, +/* 33833 */ {(16<<2)|3,{65,49,116}}, +/* 33834 */ {(11<<2)|2,{65,49,0}}, +/* 33835 */ {(11<<2)|2,{65,49,0}}, +/* 33836 */ {(11<<2)|2,{65,49,0}}, +/* 33837 */ {(11<<2)|2,{65,49,0}}, +/* 33838 */ {(11<<2)|2,{65,49,0}}, +/* 33839 */ {(11<<2)|2,{65,49,0}}, +/* 33840 */ {(11<<2)|2,{65,49,0}}, +/* 33841 */ {(11<<2)|2,{65,49,0}}, +/* 33842 */ {(11<<2)|2,{65,49,0}}, +/* 33843 */ {(11<<2)|2,{65,49,0}}, +/* 33844 */ {(11<<2)|2,{65,49,0}}, +/* 33845 */ {(11<<2)|2,{65,49,0}}, +/* 33846 */ {(11<<2)|2,{65,49,0}}, +/* 33847 */ {(11<<2)|2,{65,49,0}}, +/* 33848 */ {(11<<2)|2,{65,49,0}}, +/* 33849 */ {(11<<2)|2,{65,49,0}}, +/* 33850 */ {(11<<2)|2,{65,49,0}}, +/* 33851 */ {(11<<2)|2,{65,49,0}}, +/* 33852 */ {(11<<2)|2,{65,49,0}}, +/* 33853 */ {(11<<2)|2,{65,49,0}}, +/* 33854 */ {(11<<2)|2,{65,49,0}}, +/* 33855 */ {(11<<2)|2,{65,49,0}}, +/* 33856 */ {(16<<2)|3,{65,50,48}}, +/* 33857 */ {(16<<2)|3,{65,50,49}}, +/* 33858 */ {(16<<2)|3,{65,50,50}}, +/* 33859 */ {(16<<2)|3,{65,50,97}}, +/* 33860 */ {(16<<2)|3,{65,50,99}}, +/* 33861 */ {(16<<2)|3,{65,50,101}}, +/* 33862 */ {(16<<2)|3,{65,50,105}}, +/* 33863 */ {(16<<2)|3,{65,50,111}}, +/* 33864 */ {(16<<2)|3,{65,50,115}}, +/* 33865 */ {(16<<2)|3,{65,50,116}}, +/* 33866 */ {(11<<2)|2,{65,50,0}}, +/* 33867 */ {(11<<2)|2,{65,50,0}}, +/* 33868 */ {(11<<2)|2,{65,50,0}}, +/* 33869 */ {(11<<2)|2,{65,50,0}}, +/* 33870 */ {(11<<2)|2,{65,50,0}}, +/* 33871 */ {(11<<2)|2,{65,50,0}}, +/* 33872 */ {(11<<2)|2,{65,50,0}}, +/* 33873 */ {(11<<2)|2,{65,50,0}}, +/* 33874 */ {(11<<2)|2,{65,50,0}}, +/* 33875 */ {(11<<2)|2,{65,50,0}}, +/* 33876 */ {(11<<2)|2,{65,50,0}}, +/* 33877 */ {(11<<2)|2,{65,50,0}}, +/* 33878 */ {(11<<2)|2,{65,50,0}}, +/* 33879 */ {(11<<2)|2,{65,50,0}}, +/* 33880 */ {(11<<2)|2,{65,50,0}}, +/* 33881 */ {(11<<2)|2,{65,50,0}}, +/* 33882 */ {(11<<2)|2,{65,50,0}}, +/* 33883 */ {(11<<2)|2,{65,50,0}}, +/* 33884 */ {(11<<2)|2,{65,50,0}}, +/* 33885 */ {(11<<2)|2,{65,50,0}}, +/* 33886 */ {(11<<2)|2,{65,50,0}}, +/* 33887 */ {(11<<2)|2,{65,50,0}}, +/* 33888 */ {(16<<2)|3,{65,97,48}}, +/* 33889 */ {(16<<2)|3,{65,97,49}}, +/* 33890 */ {(16<<2)|3,{65,97,50}}, +/* 33891 */ {(16<<2)|3,{65,97,97}}, +/* 33892 */ {(16<<2)|3,{65,97,99}}, +/* 33893 */ {(16<<2)|3,{65,97,101}}, +/* 33894 */ {(16<<2)|3,{65,97,105}}, +/* 33895 */ {(16<<2)|3,{65,97,111}}, +/* 33896 */ {(16<<2)|3,{65,97,115}}, +/* 33897 */ {(16<<2)|3,{65,97,116}}, +/* 33898 */ {(11<<2)|2,{65,97,0}}, +/* 33899 */ {(11<<2)|2,{65,97,0}}, +/* 33900 */ {(11<<2)|2,{65,97,0}}, +/* 33901 */ {(11<<2)|2,{65,97,0}}, +/* 33902 */ {(11<<2)|2,{65,97,0}}, +/* 33903 */ {(11<<2)|2,{65,97,0}}, +/* 33904 */ {(11<<2)|2,{65,97,0}}, +/* 33905 */ {(11<<2)|2,{65,97,0}}, +/* 33906 */ {(11<<2)|2,{65,97,0}}, +/* 33907 */ {(11<<2)|2,{65,97,0}}, +/* 33908 */ {(11<<2)|2,{65,97,0}}, +/* 33909 */ {(11<<2)|2,{65,97,0}}, +/* 33910 */ {(11<<2)|2,{65,97,0}}, +/* 33911 */ {(11<<2)|2,{65,97,0}}, +/* 33912 */ {(11<<2)|2,{65,97,0}}, +/* 33913 */ {(11<<2)|2,{65,97,0}}, +/* 33914 */ {(11<<2)|2,{65,97,0}}, +/* 33915 */ {(11<<2)|2,{65,97,0}}, +/* 33916 */ {(11<<2)|2,{65,97,0}}, +/* 33917 */ {(11<<2)|2,{65,97,0}}, +/* 33918 */ {(11<<2)|2,{65,97,0}}, +/* 33919 */ {(11<<2)|2,{65,97,0}}, +/* 33920 */ {(16<<2)|3,{65,99,48}}, +/* 33921 */ {(16<<2)|3,{65,99,49}}, +/* 33922 */ {(16<<2)|3,{65,99,50}}, +/* 33923 */ {(16<<2)|3,{65,99,97}}, +/* 33924 */ {(16<<2)|3,{65,99,99}}, +/* 33925 */ {(16<<2)|3,{65,99,101}}, +/* 33926 */ {(16<<2)|3,{65,99,105}}, +/* 33927 */ {(16<<2)|3,{65,99,111}}, +/* 33928 */ {(16<<2)|3,{65,99,115}}, +/* 33929 */ {(16<<2)|3,{65,99,116}}, +/* 33930 */ {(11<<2)|2,{65,99,0}}, +/* 33931 */ {(11<<2)|2,{65,99,0}}, +/* 33932 */ {(11<<2)|2,{65,99,0}}, +/* 33933 */ {(11<<2)|2,{65,99,0}}, +/* 33934 */ {(11<<2)|2,{65,99,0}}, +/* 33935 */ {(11<<2)|2,{65,99,0}}, +/* 33936 */ {(11<<2)|2,{65,99,0}}, +/* 33937 */ {(11<<2)|2,{65,99,0}}, +/* 33938 */ {(11<<2)|2,{65,99,0}}, +/* 33939 */ {(11<<2)|2,{65,99,0}}, +/* 33940 */ {(11<<2)|2,{65,99,0}}, +/* 33941 */ {(11<<2)|2,{65,99,0}}, +/* 33942 */ {(11<<2)|2,{65,99,0}}, +/* 33943 */ {(11<<2)|2,{65,99,0}}, +/* 33944 */ {(11<<2)|2,{65,99,0}}, +/* 33945 */ {(11<<2)|2,{65,99,0}}, +/* 33946 */ {(11<<2)|2,{65,99,0}}, +/* 33947 */ {(11<<2)|2,{65,99,0}}, +/* 33948 */ {(11<<2)|2,{65,99,0}}, +/* 33949 */ {(11<<2)|2,{65,99,0}}, +/* 33950 */ {(11<<2)|2,{65,99,0}}, +/* 33951 */ {(11<<2)|2,{65,99,0}}, +/* 33952 */ {(16<<2)|3,{65,101,48}}, +/* 33953 */ {(16<<2)|3,{65,101,49}}, +/* 33954 */ {(16<<2)|3,{65,101,50}}, +/* 33955 */ {(16<<2)|3,{65,101,97}}, +/* 33956 */ {(16<<2)|3,{65,101,99}}, +/* 33957 */ {(16<<2)|3,{65,101,101}}, +/* 33958 */ {(16<<2)|3,{65,101,105}}, +/* 33959 */ {(16<<2)|3,{65,101,111}}, +/* 33960 */ {(16<<2)|3,{65,101,115}}, +/* 33961 */ {(16<<2)|3,{65,101,116}}, +/* 33962 */ {(11<<2)|2,{65,101,0}}, +/* 33963 */ {(11<<2)|2,{65,101,0}}, +/* 33964 */ {(11<<2)|2,{65,101,0}}, +/* 33965 */ {(11<<2)|2,{65,101,0}}, +/* 33966 */ {(11<<2)|2,{65,101,0}}, +/* 33967 */ {(11<<2)|2,{65,101,0}}, +/* 33968 */ {(11<<2)|2,{65,101,0}}, +/* 33969 */ {(11<<2)|2,{65,101,0}}, +/* 33970 */ {(11<<2)|2,{65,101,0}}, +/* 33971 */ {(11<<2)|2,{65,101,0}}, +/* 33972 */ {(11<<2)|2,{65,101,0}}, +/* 33973 */ {(11<<2)|2,{65,101,0}}, +/* 33974 */ {(11<<2)|2,{65,101,0}}, +/* 33975 */ {(11<<2)|2,{65,101,0}}, +/* 33976 */ {(11<<2)|2,{65,101,0}}, +/* 33977 */ {(11<<2)|2,{65,101,0}}, +/* 33978 */ {(11<<2)|2,{65,101,0}}, +/* 33979 */ {(11<<2)|2,{65,101,0}}, +/* 33980 */ {(11<<2)|2,{65,101,0}}, +/* 33981 */ {(11<<2)|2,{65,101,0}}, +/* 33982 */ {(11<<2)|2,{65,101,0}}, +/* 33983 */ {(11<<2)|2,{65,101,0}}, +/* 33984 */ {(16<<2)|3,{65,105,48}}, +/* 33985 */ {(16<<2)|3,{65,105,49}}, +/* 33986 */ {(16<<2)|3,{65,105,50}}, +/* 33987 */ {(16<<2)|3,{65,105,97}}, +/* 33988 */ {(16<<2)|3,{65,105,99}}, +/* 33989 */ {(16<<2)|3,{65,105,101}}, +/* 33990 */ {(16<<2)|3,{65,105,105}}, +/* 33991 */ {(16<<2)|3,{65,105,111}}, +/* 33992 */ {(16<<2)|3,{65,105,115}}, +/* 33993 */ {(16<<2)|3,{65,105,116}}, +/* 33994 */ {(11<<2)|2,{65,105,0}}, +/* 33995 */ {(11<<2)|2,{65,105,0}}, +/* 33996 */ {(11<<2)|2,{65,105,0}}, +/* 33997 */ {(11<<2)|2,{65,105,0}}, +/* 33998 */ {(11<<2)|2,{65,105,0}}, +/* 33999 */ {(11<<2)|2,{65,105,0}}, +/* 34000 */ {(11<<2)|2,{65,105,0}}, +/* 34001 */ {(11<<2)|2,{65,105,0}}, +/* 34002 */ {(11<<2)|2,{65,105,0}}, +/* 34003 */ {(11<<2)|2,{65,105,0}}, +/* 34004 */ {(11<<2)|2,{65,105,0}}, +/* 34005 */ {(11<<2)|2,{65,105,0}}, +/* 34006 */ {(11<<2)|2,{65,105,0}}, +/* 34007 */ {(11<<2)|2,{65,105,0}}, +/* 34008 */ {(11<<2)|2,{65,105,0}}, +/* 34009 */ {(11<<2)|2,{65,105,0}}, +/* 34010 */ {(11<<2)|2,{65,105,0}}, +/* 34011 */ {(11<<2)|2,{65,105,0}}, +/* 34012 */ {(11<<2)|2,{65,105,0}}, +/* 34013 */ {(11<<2)|2,{65,105,0}}, +/* 34014 */ {(11<<2)|2,{65,105,0}}, +/* 34015 */ {(11<<2)|2,{65,105,0}}, +/* 34016 */ {(16<<2)|3,{65,111,48}}, +/* 34017 */ {(16<<2)|3,{65,111,49}}, +/* 34018 */ {(16<<2)|3,{65,111,50}}, +/* 34019 */ {(16<<2)|3,{65,111,97}}, +/* 34020 */ {(16<<2)|3,{65,111,99}}, +/* 34021 */ {(16<<2)|3,{65,111,101}}, +/* 34022 */ {(16<<2)|3,{65,111,105}}, +/* 34023 */ {(16<<2)|3,{65,111,111}}, +/* 34024 */ {(16<<2)|3,{65,111,115}}, +/* 34025 */ {(16<<2)|3,{65,111,116}}, +/* 34026 */ {(11<<2)|2,{65,111,0}}, +/* 34027 */ {(11<<2)|2,{65,111,0}}, +/* 34028 */ {(11<<2)|2,{65,111,0}}, +/* 34029 */ {(11<<2)|2,{65,111,0}}, +/* 34030 */ {(11<<2)|2,{65,111,0}}, +/* 34031 */ {(11<<2)|2,{65,111,0}}, +/* 34032 */ {(11<<2)|2,{65,111,0}}, +/* 34033 */ {(11<<2)|2,{65,111,0}}, +/* 34034 */ {(11<<2)|2,{65,111,0}}, +/* 34035 */ {(11<<2)|2,{65,111,0}}, +/* 34036 */ {(11<<2)|2,{65,111,0}}, +/* 34037 */ {(11<<2)|2,{65,111,0}}, +/* 34038 */ {(11<<2)|2,{65,111,0}}, +/* 34039 */ {(11<<2)|2,{65,111,0}}, +/* 34040 */ {(11<<2)|2,{65,111,0}}, +/* 34041 */ {(11<<2)|2,{65,111,0}}, +/* 34042 */ {(11<<2)|2,{65,111,0}}, +/* 34043 */ {(11<<2)|2,{65,111,0}}, +/* 34044 */ {(11<<2)|2,{65,111,0}}, +/* 34045 */ {(11<<2)|2,{65,111,0}}, +/* 34046 */ {(11<<2)|2,{65,111,0}}, +/* 34047 */ {(11<<2)|2,{65,111,0}}, +/* 34048 */ {(16<<2)|3,{65,115,48}}, +/* 34049 */ {(16<<2)|3,{65,115,49}}, +/* 34050 */ {(16<<2)|3,{65,115,50}}, +/* 34051 */ {(16<<2)|3,{65,115,97}}, +/* 34052 */ {(16<<2)|3,{65,115,99}}, +/* 34053 */ {(16<<2)|3,{65,115,101}}, +/* 34054 */ {(16<<2)|3,{65,115,105}}, +/* 34055 */ {(16<<2)|3,{65,115,111}}, +/* 34056 */ {(16<<2)|3,{65,115,115}}, +/* 34057 */ {(16<<2)|3,{65,115,116}}, +/* 34058 */ {(11<<2)|2,{65,115,0}}, +/* 34059 */ {(11<<2)|2,{65,115,0}}, +/* 34060 */ {(11<<2)|2,{65,115,0}}, +/* 34061 */ {(11<<2)|2,{65,115,0}}, +/* 34062 */ {(11<<2)|2,{65,115,0}}, +/* 34063 */ {(11<<2)|2,{65,115,0}}, +/* 34064 */ {(11<<2)|2,{65,115,0}}, +/* 34065 */ {(11<<2)|2,{65,115,0}}, +/* 34066 */ {(11<<2)|2,{65,115,0}}, +/* 34067 */ {(11<<2)|2,{65,115,0}}, +/* 34068 */ {(11<<2)|2,{65,115,0}}, +/* 34069 */ {(11<<2)|2,{65,115,0}}, +/* 34070 */ {(11<<2)|2,{65,115,0}}, +/* 34071 */ {(11<<2)|2,{65,115,0}}, +/* 34072 */ {(11<<2)|2,{65,115,0}}, +/* 34073 */ {(11<<2)|2,{65,115,0}}, +/* 34074 */ {(11<<2)|2,{65,115,0}}, +/* 34075 */ {(11<<2)|2,{65,115,0}}, +/* 34076 */ {(11<<2)|2,{65,115,0}}, +/* 34077 */ {(11<<2)|2,{65,115,0}}, +/* 34078 */ {(11<<2)|2,{65,115,0}}, +/* 34079 */ {(11<<2)|2,{65,115,0}}, +/* 34080 */ {(16<<2)|3,{65,116,48}}, +/* 34081 */ {(16<<2)|3,{65,116,49}}, +/* 34082 */ {(16<<2)|3,{65,116,50}}, +/* 34083 */ {(16<<2)|3,{65,116,97}}, +/* 34084 */ {(16<<2)|3,{65,116,99}}, +/* 34085 */ {(16<<2)|3,{65,116,101}}, +/* 34086 */ {(16<<2)|3,{65,116,105}}, +/* 34087 */ {(16<<2)|3,{65,116,111}}, +/* 34088 */ {(16<<2)|3,{65,116,115}}, +/* 34089 */ {(16<<2)|3,{65,116,116}}, +/* 34090 */ {(11<<2)|2,{65,116,0}}, +/* 34091 */ {(11<<2)|2,{65,116,0}}, +/* 34092 */ {(11<<2)|2,{65,116,0}}, +/* 34093 */ {(11<<2)|2,{65,116,0}}, +/* 34094 */ {(11<<2)|2,{65,116,0}}, +/* 34095 */ {(11<<2)|2,{65,116,0}}, +/* 34096 */ {(11<<2)|2,{65,116,0}}, +/* 34097 */ {(11<<2)|2,{65,116,0}}, +/* 34098 */ {(11<<2)|2,{65,116,0}}, +/* 34099 */ {(11<<2)|2,{65,116,0}}, +/* 34100 */ {(11<<2)|2,{65,116,0}}, +/* 34101 */ {(11<<2)|2,{65,116,0}}, +/* 34102 */ {(11<<2)|2,{65,116,0}}, +/* 34103 */ {(11<<2)|2,{65,116,0}}, +/* 34104 */ {(11<<2)|2,{65,116,0}}, +/* 34105 */ {(11<<2)|2,{65,116,0}}, +/* 34106 */ {(11<<2)|2,{65,116,0}}, +/* 34107 */ {(11<<2)|2,{65,116,0}}, +/* 34108 */ {(11<<2)|2,{65,116,0}}, +/* 34109 */ {(11<<2)|2,{65,116,0}}, +/* 34110 */ {(11<<2)|2,{65,116,0}}, +/* 34111 */ {(11<<2)|2,{65,116,0}}, +/* 34112 */ {(12<<2)|2,{65,32,0}}, +/* 34113 */ {(12<<2)|2,{65,32,0}}, +/* 34114 */ {(12<<2)|2,{65,32,0}}, +/* 34115 */ {(12<<2)|2,{65,32,0}}, +/* 34116 */ {(12<<2)|2,{65,32,0}}, +/* 34117 */ {(12<<2)|2,{65,32,0}}, +/* 34118 */ {(12<<2)|2,{65,32,0}}, +/* 34119 */ {(12<<2)|2,{65,32,0}}, +/* 34120 */ {(12<<2)|2,{65,32,0}}, +/* 34121 */ {(12<<2)|2,{65,32,0}}, +/* 34122 */ {(12<<2)|2,{65,32,0}}, +/* 34123 */ {(12<<2)|2,{65,32,0}}, +/* 34124 */ {(12<<2)|2,{65,32,0}}, +/* 34125 */ {(12<<2)|2,{65,32,0}}, +/* 34126 */ {(12<<2)|2,{65,32,0}}, +/* 34127 */ {(12<<2)|2,{65,32,0}}, +/* 34128 */ {(12<<2)|2,{65,37,0}}, +/* 34129 */ {(12<<2)|2,{65,37,0}}, +/* 34130 */ {(12<<2)|2,{65,37,0}}, +/* 34131 */ {(12<<2)|2,{65,37,0}}, +/* 34132 */ {(12<<2)|2,{65,37,0}}, +/* 34133 */ {(12<<2)|2,{65,37,0}}, +/* 34134 */ {(12<<2)|2,{65,37,0}}, +/* 34135 */ {(12<<2)|2,{65,37,0}}, +/* 34136 */ {(12<<2)|2,{65,37,0}}, +/* 34137 */ {(12<<2)|2,{65,37,0}}, +/* 34138 */ {(12<<2)|2,{65,37,0}}, +/* 34139 */ {(12<<2)|2,{65,37,0}}, +/* 34140 */ {(12<<2)|2,{65,37,0}}, +/* 34141 */ {(12<<2)|2,{65,37,0}}, +/* 34142 */ {(12<<2)|2,{65,37,0}}, +/* 34143 */ {(12<<2)|2,{65,37,0}}, +/* 34144 */ {(12<<2)|2,{65,45,0}}, +/* 34145 */ {(12<<2)|2,{65,45,0}}, +/* 34146 */ {(12<<2)|2,{65,45,0}}, +/* 34147 */ {(12<<2)|2,{65,45,0}}, +/* 34148 */ {(12<<2)|2,{65,45,0}}, +/* 34149 */ {(12<<2)|2,{65,45,0}}, +/* 34150 */ {(12<<2)|2,{65,45,0}}, +/* 34151 */ {(12<<2)|2,{65,45,0}}, +/* 34152 */ {(12<<2)|2,{65,45,0}}, +/* 34153 */ {(12<<2)|2,{65,45,0}}, +/* 34154 */ {(12<<2)|2,{65,45,0}}, +/* 34155 */ {(12<<2)|2,{65,45,0}}, +/* 34156 */ {(12<<2)|2,{65,45,0}}, +/* 34157 */ {(12<<2)|2,{65,45,0}}, +/* 34158 */ {(12<<2)|2,{65,45,0}}, +/* 34159 */ {(12<<2)|2,{65,45,0}}, +/* 34160 */ {(12<<2)|2,{65,46,0}}, +/* 34161 */ {(12<<2)|2,{65,46,0}}, +/* 34162 */ {(12<<2)|2,{65,46,0}}, +/* 34163 */ {(12<<2)|2,{65,46,0}}, +/* 34164 */ {(12<<2)|2,{65,46,0}}, +/* 34165 */ {(12<<2)|2,{65,46,0}}, +/* 34166 */ {(12<<2)|2,{65,46,0}}, +/* 34167 */ {(12<<2)|2,{65,46,0}}, +/* 34168 */ {(12<<2)|2,{65,46,0}}, +/* 34169 */ {(12<<2)|2,{65,46,0}}, +/* 34170 */ {(12<<2)|2,{65,46,0}}, +/* 34171 */ {(12<<2)|2,{65,46,0}}, +/* 34172 */ {(12<<2)|2,{65,46,0}}, +/* 34173 */ {(12<<2)|2,{65,46,0}}, +/* 34174 */ {(12<<2)|2,{65,46,0}}, +/* 34175 */ {(12<<2)|2,{65,46,0}}, +/* 34176 */ {(12<<2)|2,{65,47,0}}, +/* 34177 */ {(12<<2)|2,{65,47,0}}, +/* 34178 */ {(12<<2)|2,{65,47,0}}, +/* 34179 */ {(12<<2)|2,{65,47,0}}, +/* 34180 */ {(12<<2)|2,{65,47,0}}, +/* 34181 */ {(12<<2)|2,{65,47,0}}, +/* 34182 */ {(12<<2)|2,{65,47,0}}, +/* 34183 */ {(12<<2)|2,{65,47,0}}, +/* 34184 */ {(12<<2)|2,{65,47,0}}, +/* 34185 */ {(12<<2)|2,{65,47,0}}, +/* 34186 */ {(12<<2)|2,{65,47,0}}, +/* 34187 */ {(12<<2)|2,{65,47,0}}, +/* 34188 */ {(12<<2)|2,{65,47,0}}, +/* 34189 */ {(12<<2)|2,{65,47,0}}, +/* 34190 */ {(12<<2)|2,{65,47,0}}, +/* 34191 */ {(12<<2)|2,{65,47,0}}, +/* 34192 */ {(12<<2)|2,{65,51,0}}, +/* 34193 */ {(12<<2)|2,{65,51,0}}, +/* 34194 */ {(12<<2)|2,{65,51,0}}, +/* 34195 */ {(12<<2)|2,{65,51,0}}, +/* 34196 */ {(12<<2)|2,{65,51,0}}, +/* 34197 */ {(12<<2)|2,{65,51,0}}, +/* 34198 */ {(12<<2)|2,{65,51,0}}, +/* 34199 */ {(12<<2)|2,{65,51,0}}, +/* 34200 */ {(12<<2)|2,{65,51,0}}, +/* 34201 */ {(12<<2)|2,{65,51,0}}, +/* 34202 */ {(12<<2)|2,{65,51,0}}, +/* 34203 */ {(12<<2)|2,{65,51,0}}, +/* 34204 */ {(12<<2)|2,{65,51,0}}, +/* 34205 */ {(12<<2)|2,{65,51,0}}, +/* 34206 */ {(12<<2)|2,{65,51,0}}, +/* 34207 */ {(12<<2)|2,{65,51,0}}, +/* 34208 */ {(12<<2)|2,{65,52,0}}, +/* 34209 */ {(12<<2)|2,{65,52,0}}, +/* 34210 */ {(12<<2)|2,{65,52,0}}, +/* 34211 */ {(12<<2)|2,{65,52,0}}, +/* 34212 */ {(12<<2)|2,{65,52,0}}, +/* 34213 */ {(12<<2)|2,{65,52,0}}, +/* 34214 */ {(12<<2)|2,{65,52,0}}, +/* 34215 */ {(12<<2)|2,{65,52,0}}, +/* 34216 */ {(12<<2)|2,{65,52,0}}, +/* 34217 */ {(12<<2)|2,{65,52,0}}, +/* 34218 */ {(12<<2)|2,{65,52,0}}, +/* 34219 */ {(12<<2)|2,{65,52,0}}, +/* 34220 */ {(12<<2)|2,{65,52,0}}, +/* 34221 */ {(12<<2)|2,{65,52,0}}, +/* 34222 */ {(12<<2)|2,{65,52,0}}, +/* 34223 */ {(12<<2)|2,{65,52,0}}, +/* 34224 */ {(12<<2)|2,{65,53,0}}, +/* 34225 */ {(12<<2)|2,{65,53,0}}, +/* 34226 */ {(12<<2)|2,{65,53,0}}, +/* 34227 */ {(12<<2)|2,{65,53,0}}, +/* 34228 */ {(12<<2)|2,{65,53,0}}, +/* 34229 */ {(12<<2)|2,{65,53,0}}, +/* 34230 */ {(12<<2)|2,{65,53,0}}, +/* 34231 */ {(12<<2)|2,{65,53,0}}, +/* 34232 */ {(12<<2)|2,{65,53,0}}, +/* 34233 */ {(12<<2)|2,{65,53,0}}, +/* 34234 */ {(12<<2)|2,{65,53,0}}, +/* 34235 */ {(12<<2)|2,{65,53,0}}, +/* 34236 */ {(12<<2)|2,{65,53,0}}, +/* 34237 */ {(12<<2)|2,{65,53,0}}, +/* 34238 */ {(12<<2)|2,{65,53,0}}, +/* 34239 */ {(12<<2)|2,{65,53,0}}, +/* 34240 */ {(12<<2)|2,{65,54,0}}, +/* 34241 */ {(12<<2)|2,{65,54,0}}, +/* 34242 */ {(12<<2)|2,{65,54,0}}, +/* 34243 */ {(12<<2)|2,{65,54,0}}, +/* 34244 */ {(12<<2)|2,{65,54,0}}, +/* 34245 */ {(12<<2)|2,{65,54,0}}, +/* 34246 */ {(12<<2)|2,{65,54,0}}, +/* 34247 */ {(12<<2)|2,{65,54,0}}, +/* 34248 */ {(12<<2)|2,{65,54,0}}, +/* 34249 */ {(12<<2)|2,{65,54,0}}, +/* 34250 */ {(12<<2)|2,{65,54,0}}, +/* 34251 */ {(12<<2)|2,{65,54,0}}, +/* 34252 */ {(12<<2)|2,{65,54,0}}, +/* 34253 */ {(12<<2)|2,{65,54,0}}, +/* 34254 */ {(12<<2)|2,{65,54,0}}, +/* 34255 */ {(12<<2)|2,{65,54,0}}, +/* 34256 */ {(12<<2)|2,{65,55,0}}, +/* 34257 */ {(12<<2)|2,{65,55,0}}, +/* 34258 */ {(12<<2)|2,{65,55,0}}, +/* 34259 */ {(12<<2)|2,{65,55,0}}, +/* 34260 */ {(12<<2)|2,{65,55,0}}, +/* 34261 */ {(12<<2)|2,{65,55,0}}, +/* 34262 */ {(12<<2)|2,{65,55,0}}, +/* 34263 */ {(12<<2)|2,{65,55,0}}, +/* 34264 */ {(12<<2)|2,{65,55,0}}, +/* 34265 */ {(12<<2)|2,{65,55,0}}, +/* 34266 */ {(12<<2)|2,{65,55,0}}, +/* 34267 */ {(12<<2)|2,{65,55,0}}, +/* 34268 */ {(12<<2)|2,{65,55,0}}, +/* 34269 */ {(12<<2)|2,{65,55,0}}, +/* 34270 */ {(12<<2)|2,{65,55,0}}, +/* 34271 */ {(12<<2)|2,{65,55,0}}, +/* 34272 */ {(12<<2)|2,{65,56,0}}, +/* 34273 */ {(12<<2)|2,{65,56,0}}, +/* 34274 */ {(12<<2)|2,{65,56,0}}, +/* 34275 */ {(12<<2)|2,{65,56,0}}, +/* 34276 */ {(12<<2)|2,{65,56,0}}, +/* 34277 */ {(12<<2)|2,{65,56,0}}, +/* 34278 */ {(12<<2)|2,{65,56,0}}, +/* 34279 */ {(12<<2)|2,{65,56,0}}, +/* 34280 */ {(12<<2)|2,{65,56,0}}, +/* 34281 */ {(12<<2)|2,{65,56,0}}, +/* 34282 */ {(12<<2)|2,{65,56,0}}, +/* 34283 */ {(12<<2)|2,{65,56,0}}, +/* 34284 */ {(12<<2)|2,{65,56,0}}, +/* 34285 */ {(12<<2)|2,{65,56,0}}, +/* 34286 */ {(12<<2)|2,{65,56,0}}, +/* 34287 */ {(12<<2)|2,{65,56,0}}, +/* 34288 */ {(12<<2)|2,{65,57,0}}, +/* 34289 */ {(12<<2)|2,{65,57,0}}, +/* 34290 */ {(12<<2)|2,{65,57,0}}, +/* 34291 */ {(12<<2)|2,{65,57,0}}, +/* 34292 */ {(12<<2)|2,{65,57,0}}, +/* 34293 */ {(12<<2)|2,{65,57,0}}, +/* 34294 */ {(12<<2)|2,{65,57,0}}, +/* 34295 */ {(12<<2)|2,{65,57,0}}, +/* 34296 */ {(12<<2)|2,{65,57,0}}, +/* 34297 */ {(12<<2)|2,{65,57,0}}, +/* 34298 */ {(12<<2)|2,{65,57,0}}, +/* 34299 */ {(12<<2)|2,{65,57,0}}, +/* 34300 */ {(12<<2)|2,{65,57,0}}, +/* 34301 */ {(12<<2)|2,{65,57,0}}, +/* 34302 */ {(12<<2)|2,{65,57,0}}, +/* 34303 */ {(12<<2)|2,{65,57,0}}, +/* 34304 */ {(12<<2)|2,{65,61,0}}, +/* 34305 */ {(12<<2)|2,{65,61,0}}, +/* 34306 */ {(12<<2)|2,{65,61,0}}, +/* 34307 */ {(12<<2)|2,{65,61,0}}, +/* 34308 */ {(12<<2)|2,{65,61,0}}, +/* 34309 */ {(12<<2)|2,{65,61,0}}, +/* 34310 */ {(12<<2)|2,{65,61,0}}, +/* 34311 */ {(12<<2)|2,{65,61,0}}, +/* 34312 */ {(12<<2)|2,{65,61,0}}, +/* 34313 */ {(12<<2)|2,{65,61,0}}, +/* 34314 */ {(12<<2)|2,{65,61,0}}, +/* 34315 */ {(12<<2)|2,{65,61,0}}, +/* 34316 */ {(12<<2)|2,{65,61,0}}, +/* 34317 */ {(12<<2)|2,{65,61,0}}, +/* 34318 */ {(12<<2)|2,{65,61,0}}, +/* 34319 */ {(12<<2)|2,{65,61,0}}, +/* 34320 */ {(12<<2)|2,{65,65,0}}, +/* 34321 */ {(12<<2)|2,{65,65,0}}, +/* 34322 */ {(12<<2)|2,{65,65,0}}, +/* 34323 */ {(12<<2)|2,{65,65,0}}, +/* 34324 */ {(12<<2)|2,{65,65,0}}, +/* 34325 */ {(12<<2)|2,{65,65,0}}, +/* 34326 */ {(12<<2)|2,{65,65,0}}, +/* 34327 */ {(12<<2)|2,{65,65,0}}, +/* 34328 */ {(12<<2)|2,{65,65,0}}, +/* 34329 */ {(12<<2)|2,{65,65,0}}, +/* 34330 */ {(12<<2)|2,{65,65,0}}, +/* 34331 */ {(12<<2)|2,{65,65,0}}, +/* 34332 */ {(12<<2)|2,{65,65,0}}, +/* 34333 */ {(12<<2)|2,{65,65,0}}, +/* 34334 */ {(12<<2)|2,{65,65,0}}, +/* 34335 */ {(12<<2)|2,{65,65,0}}, +/* 34336 */ {(12<<2)|2,{65,95,0}}, +/* 34337 */ {(12<<2)|2,{65,95,0}}, +/* 34338 */ {(12<<2)|2,{65,95,0}}, +/* 34339 */ {(12<<2)|2,{65,95,0}}, +/* 34340 */ {(12<<2)|2,{65,95,0}}, +/* 34341 */ {(12<<2)|2,{65,95,0}}, +/* 34342 */ {(12<<2)|2,{65,95,0}}, +/* 34343 */ {(12<<2)|2,{65,95,0}}, +/* 34344 */ {(12<<2)|2,{65,95,0}}, +/* 34345 */ {(12<<2)|2,{65,95,0}}, +/* 34346 */ {(12<<2)|2,{65,95,0}}, +/* 34347 */ {(12<<2)|2,{65,95,0}}, +/* 34348 */ {(12<<2)|2,{65,95,0}}, +/* 34349 */ {(12<<2)|2,{65,95,0}}, +/* 34350 */ {(12<<2)|2,{65,95,0}}, +/* 34351 */ {(12<<2)|2,{65,95,0}}, +/* 34352 */ {(12<<2)|2,{65,98,0}}, +/* 34353 */ {(12<<2)|2,{65,98,0}}, +/* 34354 */ {(12<<2)|2,{65,98,0}}, +/* 34355 */ {(12<<2)|2,{65,98,0}}, +/* 34356 */ {(12<<2)|2,{65,98,0}}, +/* 34357 */ {(12<<2)|2,{65,98,0}}, +/* 34358 */ {(12<<2)|2,{65,98,0}}, +/* 34359 */ {(12<<2)|2,{65,98,0}}, +/* 34360 */ {(12<<2)|2,{65,98,0}}, +/* 34361 */ {(12<<2)|2,{65,98,0}}, +/* 34362 */ {(12<<2)|2,{65,98,0}}, +/* 34363 */ {(12<<2)|2,{65,98,0}}, +/* 34364 */ {(12<<2)|2,{65,98,0}}, +/* 34365 */ {(12<<2)|2,{65,98,0}}, +/* 34366 */ {(12<<2)|2,{65,98,0}}, +/* 34367 */ {(12<<2)|2,{65,98,0}}, +/* 34368 */ {(12<<2)|2,{65,100,0}}, +/* 34369 */ {(12<<2)|2,{65,100,0}}, +/* 34370 */ {(12<<2)|2,{65,100,0}}, +/* 34371 */ {(12<<2)|2,{65,100,0}}, +/* 34372 */ {(12<<2)|2,{65,100,0}}, +/* 34373 */ {(12<<2)|2,{65,100,0}}, +/* 34374 */ {(12<<2)|2,{65,100,0}}, +/* 34375 */ {(12<<2)|2,{65,100,0}}, +/* 34376 */ {(12<<2)|2,{65,100,0}}, +/* 34377 */ {(12<<2)|2,{65,100,0}}, +/* 34378 */ {(12<<2)|2,{65,100,0}}, +/* 34379 */ {(12<<2)|2,{65,100,0}}, +/* 34380 */ {(12<<2)|2,{65,100,0}}, +/* 34381 */ {(12<<2)|2,{65,100,0}}, +/* 34382 */ {(12<<2)|2,{65,100,0}}, +/* 34383 */ {(12<<2)|2,{65,100,0}}, +/* 34384 */ {(12<<2)|2,{65,102,0}}, +/* 34385 */ {(12<<2)|2,{65,102,0}}, +/* 34386 */ {(12<<2)|2,{65,102,0}}, +/* 34387 */ {(12<<2)|2,{65,102,0}}, +/* 34388 */ {(12<<2)|2,{65,102,0}}, +/* 34389 */ {(12<<2)|2,{65,102,0}}, +/* 34390 */ {(12<<2)|2,{65,102,0}}, +/* 34391 */ {(12<<2)|2,{65,102,0}}, +/* 34392 */ {(12<<2)|2,{65,102,0}}, +/* 34393 */ {(12<<2)|2,{65,102,0}}, +/* 34394 */ {(12<<2)|2,{65,102,0}}, +/* 34395 */ {(12<<2)|2,{65,102,0}}, +/* 34396 */ {(12<<2)|2,{65,102,0}}, +/* 34397 */ {(12<<2)|2,{65,102,0}}, +/* 34398 */ {(12<<2)|2,{65,102,0}}, +/* 34399 */ {(12<<2)|2,{65,102,0}}, +/* 34400 */ {(12<<2)|2,{65,103,0}}, +/* 34401 */ {(12<<2)|2,{65,103,0}}, +/* 34402 */ {(12<<2)|2,{65,103,0}}, +/* 34403 */ {(12<<2)|2,{65,103,0}}, +/* 34404 */ {(12<<2)|2,{65,103,0}}, +/* 34405 */ {(12<<2)|2,{65,103,0}}, +/* 34406 */ {(12<<2)|2,{65,103,0}}, +/* 34407 */ {(12<<2)|2,{65,103,0}}, +/* 34408 */ {(12<<2)|2,{65,103,0}}, +/* 34409 */ {(12<<2)|2,{65,103,0}}, +/* 34410 */ {(12<<2)|2,{65,103,0}}, +/* 34411 */ {(12<<2)|2,{65,103,0}}, +/* 34412 */ {(12<<2)|2,{65,103,0}}, +/* 34413 */ {(12<<2)|2,{65,103,0}}, +/* 34414 */ {(12<<2)|2,{65,103,0}}, +/* 34415 */ {(12<<2)|2,{65,103,0}}, +/* 34416 */ {(12<<2)|2,{65,104,0}}, +/* 34417 */ {(12<<2)|2,{65,104,0}}, +/* 34418 */ {(12<<2)|2,{65,104,0}}, +/* 34419 */ {(12<<2)|2,{65,104,0}}, +/* 34420 */ {(12<<2)|2,{65,104,0}}, +/* 34421 */ {(12<<2)|2,{65,104,0}}, +/* 34422 */ {(12<<2)|2,{65,104,0}}, +/* 34423 */ {(12<<2)|2,{65,104,0}}, +/* 34424 */ {(12<<2)|2,{65,104,0}}, +/* 34425 */ {(12<<2)|2,{65,104,0}}, +/* 34426 */ {(12<<2)|2,{65,104,0}}, +/* 34427 */ {(12<<2)|2,{65,104,0}}, +/* 34428 */ {(12<<2)|2,{65,104,0}}, +/* 34429 */ {(12<<2)|2,{65,104,0}}, +/* 34430 */ {(12<<2)|2,{65,104,0}}, +/* 34431 */ {(12<<2)|2,{65,104,0}}, +/* 34432 */ {(12<<2)|2,{65,108,0}}, +/* 34433 */ {(12<<2)|2,{65,108,0}}, +/* 34434 */ {(12<<2)|2,{65,108,0}}, +/* 34435 */ {(12<<2)|2,{65,108,0}}, +/* 34436 */ {(12<<2)|2,{65,108,0}}, +/* 34437 */ {(12<<2)|2,{65,108,0}}, +/* 34438 */ {(12<<2)|2,{65,108,0}}, +/* 34439 */ {(12<<2)|2,{65,108,0}}, +/* 34440 */ {(12<<2)|2,{65,108,0}}, +/* 34441 */ {(12<<2)|2,{65,108,0}}, +/* 34442 */ {(12<<2)|2,{65,108,0}}, +/* 34443 */ {(12<<2)|2,{65,108,0}}, +/* 34444 */ {(12<<2)|2,{65,108,0}}, +/* 34445 */ {(12<<2)|2,{65,108,0}}, +/* 34446 */ {(12<<2)|2,{65,108,0}}, +/* 34447 */ {(12<<2)|2,{65,108,0}}, +/* 34448 */ {(12<<2)|2,{65,109,0}}, +/* 34449 */ {(12<<2)|2,{65,109,0}}, +/* 34450 */ {(12<<2)|2,{65,109,0}}, +/* 34451 */ {(12<<2)|2,{65,109,0}}, +/* 34452 */ {(12<<2)|2,{65,109,0}}, +/* 34453 */ {(12<<2)|2,{65,109,0}}, +/* 34454 */ {(12<<2)|2,{65,109,0}}, +/* 34455 */ {(12<<2)|2,{65,109,0}}, +/* 34456 */ {(12<<2)|2,{65,109,0}}, +/* 34457 */ {(12<<2)|2,{65,109,0}}, +/* 34458 */ {(12<<2)|2,{65,109,0}}, +/* 34459 */ {(12<<2)|2,{65,109,0}}, +/* 34460 */ {(12<<2)|2,{65,109,0}}, +/* 34461 */ {(12<<2)|2,{65,109,0}}, +/* 34462 */ {(12<<2)|2,{65,109,0}}, +/* 34463 */ {(12<<2)|2,{65,109,0}}, +/* 34464 */ {(12<<2)|2,{65,110,0}}, +/* 34465 */ {(12<<2)|2,{65,110,0}}, +/* 34466 */ {(12<<2)|2,{65,110,0}}, +/* 34467 */ {(12<<2)|2,{65,110,0}}, +/* 34468 */ {(12<<2)|2,{65,110,0}}, +/* 34469 */ {(12<<2)|2,{65,110,0}}, +/* 34470 */ {(12<<2)|2,{65,110,0}}, +/* 34471 */ {(12<<2)|2,{65,110,0}}, +/* 34472 */ {(12<<2)|2,{65,110,0}}, +/* 34473 */ {(12<<2)|2,{65,110,0}}, +/* 34474 */ {(12<<2)|2,{65,110,0}}, +/* 34475 */ {(12<<2)|2,{65,110,0}}, +/* 34476 */ {(12<<2)|2,{65,110,0}}, +/* 34477 */ {(12<<2)|2,{65,110,0}}, +/* 34478 */ {(12<<2)|2,{65,110,0}}, +/* 34479 */ {(12<<2)|2,{65,110,0}}, +/* 34480 */ {(12<<2)|2,{65,112,0}}, +/* 34481 */ {(12<<2)|2,{65,112,0}}, +/* 34482 */ {(12<<2)|2,{65,112,0}}, +/* 34483 */ {(12<<2)|2,{65,112,0}}, +/* 34484 */ {(12<<2)|2,{65,112,0}}, +/* 34485 */ {(12<<2)|2,{65,112,0}}, +/* 34486 */ {(12<<2)|2,{65,112,0}}, +/* 34487 */ {(12<<2)|2,{65,112,0}}, +/* 34488 */ {(12<<2)|2,{65,112,0}}, +/* 34489 */ {(12<<2)|2,{65,112,0}}, +/* 34490 */ {(12<<2)|2,{65,112,0}}, +/* 34491 */ {(12<<2)|2,{65,112,0}}, +/* 34492 */ {(12<<2)|2,{65,112,0}}, +/* 34493 */ {(12<<2)|2,{65,112,0}}, +/* 34494 */ {(12<<2)|2,{65,112,0}}, +/* 34495 */ {(12<<2)|2,{65,112,0}}, +/* 34496 */ {(12<<2)|2,{65,114,0}}, +/* 34497 */ {(12<<2)|2,{65,114,0}}, +/* 34498 */ {(12<<2)|2,{65,114,0}}, +/* 34499 */ {(12<<2)|2,{65,114,0}}, +/* 34500 */ {(12<<2)|2,{65,114,0}}, +/* 34501 */ {(12<<2)|2,{65,114,0}}, +/* 34502 */ {(12<<2)|2,{65,114,0}}, +/* 34503 */ {(12<<2)|2,{65,114,0}}, +/* 34504 */ {(12<<2)|2,{65,114,0}}, +/* 34505 */ {(12<<2)|2,{65,114,0}}, +/* 34506 */ {(12<<2)|2,{65,114,0}}, +/* 34507 */ {(12<<2)|2,{65,114,0}}, +/* 34508 */ {(12<<2)|2,{65,114,0}}, +/* 34509 */ {(12<<2)|2,{65,114,0}}, +/* 34510 */ {(12<<2)|2,{65,114,0}}, +/* 34511 */ {(12<<2)|2,{65,114,0}}, +/* 34512 */ {(12<<2)|2,{65,117,0}}, +/* 34513 */ {(12<<2)|2,{65,117,0}}, +/* 34514 */ {(12<<2)|2,{65,117,0}}, +/* 34515 */ {(12<<2)|2,{65,117,0}}, +/* 34516 */ {(12<<2)|2,{65,117,0}}, +/* 34517 */ {(12<<2)|2,{65,117,0}}, +/* 34518 */ {(12<<2)|2,{65,117,0}}, +/* 34519 */ {(12<<2)|2,{65,117,0}}, +/* 34520 */ {(12<<2)|2,{65,117,0}}, +/* 34521 */ {(12<<2)|2,{65,117,0}}, +/* 34522 */ {(12<<2)|2,{65,117,0}}, +/* 34523 */ {(12<<2)|2,{65,117,0}}, +/* 34524 */ {(12<<2)|2,{65,117,0}}, +/* 34525 */ {(12<<2)|2,{65,117,0}}, +/* 34526 */ {(12<<2)|2,{65,117,0}}, +/* 34527 */ {(12<<2)|2,{65,117,0}}, +/* 34528 */ {(13<<2)|2,{65,58,0}}, +/* 34529 */ {(13<<2)|2,{65,58,0}}, +/* 34530 */ {(13<<2)|2,{65,58,0}}, +/* 34531 */ {(13<<2)|2,{65,58,0}}, +/* 34532 */ {(13<<2)|2,{65,58,0}}, +/* 34533 */ {(13<<2)|2,{65,58,0}}, +/* 34534 */ {(13<<2)|2,{65,58,0}}, +/* 34535 */ {(13<<2)|2,{65,58,0}}, +/* 34536 */ {(13<<2)|2,{65,66,0}}, +/* 34537 */ {(13<<2)|2,{65,66,0}}, +/* 34538 */ {(13<<2)|2,{65,66,0}}, +/* 34539 */ {(13<<2)|2,{65,66,0}}, +/* 34540 */ {(13<<2)|2,{65,66,0}}, +/* 34541 */ {(13<<2)|2,{65,66,0}}, +/* 34542 */ {(13<<2)|2,{65,66,0}}, +/* 34543 */ {(13<<2)|2,{65,66,0}}, +/* 34544 */ {(13<<2)|2,{65,67,0}}, +/* 34545 */ {(13<<2)|2,{65,67,0}}, +/* 34546 */ {(13<<2)|2,{65,67,0}}, +/* 34547 */ {(13<<2)|2,{65,67,0}}, +/* 34548 */ {(13<<2)|2,{65,67,0}}, +/* 34549 */ {(13<<2)|2,{65,67,0}}, +/* 34550 */ {(13<<2)|2,{65,67,0}}, +/* 34551 */ {(13<<2)|2,{65,67,0}}, +/* 34552 */ {(13<<2)|2,{65,68,0}}, +/* 34553 */ {(13<<2)|2,{65,68,0}}, +/* 34554 */ {(13<<2)|2,{65,68,0}}, +/* 34555 */ {(13<<2)|2,{65,68,0}}, +/* 34556 */ {(13<<2)|2,{65,68,0}}, +/* 34557 */ {(13<<2)|2,{65,68,0}}, +/* 34558 */ {(13<<2)|2,{65,68,0}}, +/* 34559 */ {(13<<2)|2,{65,68,0}}, +/* 34560 */ {(13<<2)|2,{65,69,0}}, +/* 34561 */ {(13<<2)|2,{65,69,0}}, +/* 34562 */ {(13<<2)|2,{65,69,0}}, +/* 34563 */ {(13<<2)|2,{65,69,0}}, +/* 34564 */ {(13<<2)|2,{65,69,0}}, +/* 34565 */ {(13<<2)|2,{65,69,0}}, +/* 34566 */ {(13<<2)|2,{65,69,0}}, +/* 34567 */ {(13<<2)|2,{65,69,0}}, +/* 34568 */ {(13<<2)|2,{65,70,0}}, +/* 34569 */ {(13<<2)|2,{65,70,0}}, +/* 34570 */ {(13<<2)|2,{65,70,0}}, +/* 34571 */ {(13<<2)|2,{65,70,0}}, +/* 34572 */ {(13<<2)|2,{65,70,0}}, +/* 34573 */ {(13<<2)|2,{65,70,0}}, +/* 34574 */ {(13<<2)|2,{65,70,0}}, +/* 34575 */ {(13<<2)|2,{65,70,0}}, +/* 34576 */ {(13<<2)|2,{65,71,0}}, +/* 34577 */ {(13<<2)|2,{65,71,0}}, +/* 34578 */ {(13<<2)|2,{65,71,0}}, +/* 34579 */ {(13<<2)|2,{65,71,0}}, +/* 34580 */ {(13<<2)|2,{65,71,0}}, +/* 34581 */ {(13<<2)|2,{65,71,0}}, +/* 34582 */ {(13<<2)|2,{65,71,0}}, +/* 34583 */ {(13<<2)|2,{65,71,0}}, +/* 34584 */ {(13<<2)|2,{65,72,0}}, +/* 34585 */ {(13<<2)|2,{65,72,0}}, +/* 34586 */ {(13<<2)|2,{65,72,0}}, +/* 34587 */ {(13<<2)|2,{65,72,0}}, +/* 34588 */ {(13<<2)|2,{65,72,0}}, +/* 34589 */ {(13<<2)|2,{65,72,0}}, +/* 34590 */ {(13<<2)|2,{65,72,0}}, +/* 34591 */ {(13<<2)|2,{65,72,0}}, +/* 34592 */ {(13<<2)|2,{65,73,0}}, +/* 34593 */ {(13<<2)|2,{65,73,0}}, +/* 34594 */ {(13<<2)|2,{65,73,0}}, +/* 34595 */ {(13<<2)|2,{65,73,0}}, +/* 34596 */ {(13<<2)|2,{65,73,0}}, +/* 34597 */ {(13<<2)|2,{65,73,0}}, +/* 34598 */ {(13<<2)|2,{65,73,0}}, +/* 34599 */ {(13<<2)|2,{65,73,0}}, +/* 34600 */ {(13<<2)|2,{65,74,0}}, +/* 34601 */ {(13<<2)|2,{65,74,0}}, +/* 34602 */ {(13<<2)|2,{65,74,0}}, +/* 34603 */ {(13<<2)|2,{65,74,0}}, +/* 34604 */ {(13<<2)|2,{65,74,0}}, +/* 34605 */ {(13<<2)|2,{65,74,0}}, +/* 34606 */ {(13<<2)|2,{65,74,0}}, +/* 34607 */ {(13<<2)|2,{65,74,0}}, +/* 34608 */ {(13<<2)|2,{65,75,0}}, +/* 34609 */ {(13<<2)|2,{65,75,0}}, +/* 34610 */ {(13<<2)|2,{65,75,0}}, +/* 34611 */ {(13<<2)|2,{65,75,0}}, +/* 34612 */ {(13<<2)|2,{65,75,0}}, +/* 34613 */ {(13<<2)|2,{65,75,0}}, +/* 34614 */ {(13<<2)|2,{65,75,0}}, +/* 34615 */ {(13<<2)|2,{65,75,0}}, +/* 34616 */ {(13<<2)|2,{65,76,0}}, +/* 34617 */ {(13<<2)|2,{65,76,0}}, +/* 34618 */ {(13<<2)|2,{65,76,0}}, +/* 34619 */ {(13<<2)|2,{65,76,0}}, +/* 34620 */ {(13<<2)|2,{65,76,0}}, +/* 34621 */ {(13<<2)|2,{65,76,0}}, +/* 34622 */ {(13<<2)|2,{65,76,0}}, +/* 34623 */ {(13<<2)|2,{65,76,0}}, +/* 34624 */ {(13<<2)|2,{65,77,0}}, +/* 34625 */ {(13<<2)|2,{65,77,0}}, +/* 34626 */ {(13<<2)|2,{65,77,0}}, +/* 34627 */ {(13<<2)|2,{65,77,0}}, +/* 34628 */ {(13<<2)|2,{65,77,0}}, +/* 34629 */ {(13<<2)|2,{65,77,0}}, +/* 34630 */ {(13<<2)|2,{65,77,0}}, +/* 34631 */ {(13<<2)|2,{65,77,0}}, +/* 34632 */ {(13<<2)|2,{65,78,0}}, +/* 34633 */ {(13<<2)|2,{65,78,0}}, +/* 34634 */ {(13<<2)|2,{65,78,0}}, +/* 34635 */ {(13<<2)|2,{65,78,0}}, +/* 34636 */ {(13<<2)|2,{65,78,0}}, +/* 34637 */ {(13<<2)|2,{65,78,0}}, +/* 34638 */ {(13<<2)|2,{65,78,0}}, +/* 34639 */ {(13<<2)|2,{65,78,0}}, +/* 34640 */ {(13<<2)|2,{65,79,0}}, +/* 34641 */ {(13<<2)|2,{65,79,0}}, +/* 34642 */ {(13<<2)|2,{65,79,0}}, +/* 34643 */ {(13<<2)|2,{65,79,0}}, +/* 34644 */ {(13<<2)|2,{65,79,0}}, +/* 34645 */ {(13<<2)|2,{65,79,0}}, +/* 34646 */ {(13<<2)|2,{65,79,0}}, +/* 34647 */ {(13<<2)|2,{65,79,0}}, +/* 34648 */ {(13<<2)|2,{65,80,0}}, +/* 34649 */ {(13<<2)|2,{65,80,0}}, +/* 34650 */ {(13<<2)|2,{65,80,0}}, +/* 34651 */ {(13<<2)|2,{65,80,0}}, +/* 34652 */ {(13<<2)|2,{65,80,0}}, +/* 34653 */ {(13<<2)|2,{65,80,0}}, +/* 34654 */ {(13<<2)|2,{65,80,0}}, +/* 34655 */ {(13<<2)|2,{65,80,0}}, +/* 34656 */ {(13<<2)|2,{65,81,0}}, +/* 34657 */ {(13<<2)|2,{65,81,0}}, +/* 34658 */ {(13<<2)|2,{65,81,0}}, +/* 34659 */ {(13<<2)|2,{65,81,0}}, +/* 34660 */ {(13<<2)|2,{65,81,0}}, +/* 34661 */ {(13<<2)|2,{65,81,0}}, +/* 34662 */ {(13<<2)|2,{65,81,0}}, +/* 34663 */ {(13<<2)|2,{65,81,0}}, +/* 34664 */ {(13<<2)|2,{65,82,0}}, +/* 34665 */ {(13<<2)|2,{65,82,0}}, +/* 34666 */ {(13<<2)|2,{65,82,0}}, +/* 34667 */ {(13<<2)|2,{65,82,0}}, +/* 34668 */ {(13<<2)|2,{65,82,0}}, +/* 34669 */ {(13<<2)|2,{65,82,0}}, +/* 34670 */ {(13<<2)|2,{65,82,0}}, +/* 34671 */ {(13<<2)|2,{65,82,0}}, +/* 34672 */ {(13<<2)|2,{65,83,0}}, +/* 34673 */ {(13<<2)|2,{65,83,0}}, +/* 34674 */ {(13<<2)|2,{65,83,0}}, +/* 34675 */ {(13<<2)|2,{65,83,0}}, +/* 34676 */ {(13<<2)|2,{65,83,0}}, +/* 34677 */ {(13<<2)|2,{65,83,0}}, +/* 34678 */ {(13<<2)|2,{65,83,0}}, +/* 34679 */ {(13<<2)|2,{65,83,0}}, +/* 34680 */ {(13<<2)|2,{65,84,0}}, +/* 34681 */ {(13<<2)|2,{65,84,0}}, +/* 34682 */ {(13<<2)|2,{65,84,0}}, +/* 34683 */ {(13<<2)|2,{65,84,0}}, +/* 34684 */ {(13<<2)|2,{65,84,0}}, +/* 34685 */ {(13<<2)|2,{65,84,0}}, +/* 34686 */ {(13<<2)|2,{65,84,0}}, +/* 34687 */ {(13<<2)|2,{65,84,0}}, +/* 34688 */ {(13<<2)|2,{65,85,0}}, +/* 34689 */ {(13<<2)|2,{65,85,0}}, +/* 34690 */ {(13<<2)|2,{65,85,0}}, +/* 34691 */ {(13<<2)|2,{65,85,0}}, +/* 34692 */ {(13<<2)|2,{65,85,0}}, +/* 34693 */ {(13<<2)|2,{65,85,0}}, +/* 34694 */ {(13<<2)|2,{65,85,0}}, +/* 34695 */ {(13<<2)|2,{65,85,0}}, +/* 34696 */ {(13<<2)|2,{65,86,0}}, +/* 34697 */ {(13<<2)|2,{65,86,0}}, +/* 34698 */ {(13<<2)|2,{65,86,0}}, +/* 34699 */ {(13<<2)|2,{65,86,0}}, +/* 34700 */ {(13<<2)|2,{65,86,0}}, +/* 34701 */ {(13<<2)|2,{65,86,0}}, +/* 34702 */ {(13<<2)|2,{65,86,0}}, +/* 34703 */ {(13<<2)|2,{65,86,0}}, +/* 34704 */ {(13<<2)|2,{65,87,0}}, +/* 34705 */ {(13<<2)|2,{65,87,0}}, +/* 34706 */ {(13<<2)|2,{65,87,0}}, +/* 34707 */ {(13<<2)|2,{65,87,0}}, +/* 34708 */ {(13<<2)|2,{65,87,0}}, +/* 34709 */ {(13<<2)|2,{65,87,0}}, +/* 34710 */ {(13<<2)|2,{65,87,0}}, +/* 34711 */ {(13<<2)|2,{65,87,0}}, +/* 34712 */ {(13<<2)|2,{65,89,0}}, +/* 34713 */ {(13<<2)|2,{65,89,0}}, +/* 34714 */ {(13<<2)|2,{65,89,0}}, +/* 34715 */ {(13<<2)|2,{65,89,0}}, +/* 34716 */ {(13<<2)|2,{65,89,0}}, +/* 34717 */ {(13<<2)|2,{65,89,0}}, +/* 34718 */ {(13<<2)|2,{65,89,0}}, +/* 34719 */ {(13<<2)|2,{65,89,0}}, +/* 34720 */ {(13<<2)|2,{65,106,0}}, +/* 34721 */ {(13<<2)|2,{65,106,0}}, +/* 34722 */ {(13<<2)|2,{65,106,0}}, +/* 34723 */ {(13<<2)|2,{65,106,0}}, +/* 34724 */ {(13<<2)|2,{65,106,0}}, +/* 34725 */ {(13<<2)|2,{65,106,0}}, +/* 34726 */ {(13<<2)|2,{65,106,0}}, +/* 34727 */ {(13<<2)|2,{65,106,0}}, +/* 34728 */ {(13<<2)|2,{65,107,0}}, +/* 34729 */ {(13<<2)|2,{65,107,0}}, +/* 34730 */ {(13<<2)|2,{65,107,0}}, +/* 34731 */ {(13<<2)|2,{65,107,0}}, +/* 34732 */ {(13<<2)|2,{65,107,0}}, +/* 34733 */ {(13<<2)|2,{65,107,0}}, +/* 34734 */ {(13<<2)|2,{65,107,0}}, +/* 34735 */ {(13<<2)|2,{65,107,0}}, +/* 34736 */ {(13<<2)|2,{65,113,0}}, +/* 34737 */ {(13<<2)|2,{65,113,0}}, +/* 34738 */ {(13<<2)|2,{65,113,0}}, +/* 34739 */ {(13<<2)|2,{65,113,0}}, +/* 34740 */ {(13<<2)|2,{65,113,0}}, +/* 34741 */ {(13<<2)|2,{65,113,0}}, +/* 34742 */ {(13<<2)|2,{65,113,0}}, +/* 34743 */ {(13<<2)|2,{65,113,0}}, +/* 34744 */ {(13<<2)|2,{65,118,0}}, +/* 34745 */ {(13<<2)|2,{65,118,0}}, +/* 34746 */ {(13<<2)|2,{65,118,0}}, +/* 34747 */ {(13<<2)|2,{65,118,0}}, +/* 34748 */ {(13<<2)|2,{65,118,0}}, +/* 34749 */ {(13<<2)|2,{65,118,0}}, +/* 34750 */ {(13<<2)|2,{65,118,0}}, +/* 34751 */ {(13<<2)|2,{65,118,0}}, +/* 34752 */ {(13<<2)|2,{65,119,0}}, +/* 34753 */ {(13<<2)|2,{65,119,0}}, +/* 34754 */ {(13<<2)|2,{65,119,0}}, +/* 34755 */ {(13<<2)|2,{65,119,0}}, +/* 34756 */ {(13<<2)|2,{65,119,0}}, +/* 34757 */ {(13<<2)|2,{65,119,0}}, +/* 34758 */ {(13<<2)|2,{65,119,0}}, +/* 34759 */ {(13<<2)|2,{65,119,0}}, +/* 34760 */ {(13<<2)|2,{65,120,0}}, +/* 34761 */ {(13<<2)|2,{65,120,0}}, +/* 34762 */ {(13<<2)|2,{65,120,0}}, +/* 34763 */ {(13<<2)|2,{65,120,0}}, +/* 34764 */ {(13<<2)|2,{65,120,0}}, +/* 34765 */ {(13<<2)|2,{65,120,0}}, +/* 34766 */ {(13<<2)|2,{65,120,0}}, +/* 34767 */ {(13<<2)|2,{65,120,0}}, +/* 34768 */ {(13<<2)|2,{65,121,0}}, +/* 34769 */ {(13<<2)|2,{65,121,0}}, +/* 34770 */ {(13<<2)|2,{65,121,0}}, +/* 34771 */ {(13<<2)|2,{65,121,0}}, +/* 34772 */ {(13<<2)|2,{65,121,0}}, +/* 34773 */ {(13<<2)|2,{65,121,0}}, +/* 34774 */ {(13<<2)|2,{65,121,0}}, +/* 34775 */ {(13<<2)|2,{65,121,0}}, +/* 34776 */ {(13<<2)|2,{65,122,0}}, +/* 34777 */ {(13<<2)|2,{65,122,0}}, +/* 34778 */ {(13<<2)|2,{65,122,0}}, +/* 34779 */ {(13<<2)|2,{65,122,0}}, +/* 34780 */ {(13<<2)|2,{65,122,0}}, +/* 34781 */ {(13<<2)|2,{65,122,0}}, +/* 34782 */ {(13<<2)|2,{65,122,0}}, +/* 34783 */ {(13<<2)|2,{65,122,0}}, +/* 34784 */ {(14<<2)|2,{65,38,0}}, +/* 34785 */ {(14<<2)|2,{65,38,0}}, +/* 34786 */ {(14<<2)|2,{65,38,0}}, +/* 34787 */ {(14<<2)|2,{65,38,0}}, +/* 34788 */ {(14<<2)|2,{65,42,0}}, +/* 34789 */ {(14<<2)|2,{65,42,0}}, +/* 34790 */ {(14<<2)|2,{65,42,0}}, +/* 34791 */ {(14<<2)|2,{65,42,0}}, +/* 34792 */ {(14<<2)|2,{65,44,0}}, +/* 34793 */ {(14<<2)|2,{65,44,0}}, +/* 34794 */ {(14<<2)|2,{65,44,0}}, +/* 34795 */ {(14<<2)|2,{65,44,0}}, +/* 34796 */ {(14<<2)|2,{65,59,0}}, +/* 34797 */ {(14<<2)|2,{65,59,0}}, +/* 34798 */ {(14<<2)|2,{65,59,0}}, +/* 34799 */ {(14<<2)|2,{65,59,0}}, +/* 34800 */ {(14<<2)|2,{65,88,0}}, +/* 34801 */ {(14<<2)|2,{65,88,0}}, +/* 34802 */ {(14<<2)|2,{65,88,0}}, +/* 34803 */ {(14<<2)|2,{65,88,0}}, +/* 34804 */ {(14<<2)|2,{65,90,0}}, +/* 34805 */ {(14<<2)|2,{65,90,0}}, +/* 34806 */ {(14<<2)|2,{65,90,0}}, +/* 34807 */ {(14<<2)|2,{65,90,0}}, +/* 34808 */ {(16<<2)|2,{65,33,0}}, +/* 34809 */ {(16<<2)|2,{65,34,0}}, +/* 34810 */ {(16<<2)|2,{65,40,0}}, +/* 34811 */ {(16<<2)|2,{65,41,0}}, +/* 34812 */ {(16<<2)|2,{65,63,0}}, +/* 34813 */ {(6<<2)|1,{65,0,0}}, +/* 34814 */ {(6<<2)|1,{65,0,0}}, +/* 34815 */ {(6<<2)|1,{65,0,0}}, +/* 34816 */ {(16<<2)|3,{95,48,48}}, +/* 34817 */ {(16<<2)|3,{95,48,49}}, +/* 34818 */ {(16<<2)|3,{95,48,50}}, +/* 34819 */ {(16<<2)|3,{95,48,97}}, +/* 34820 */ {(16<<2)|3,{95,48,99}}, +/* 34821 */ {(16<<2)|3,{95,48,101}}, +/* 34822 */ {(16<<2)|3,{95,48,105}}, +/* 34823 */ {(16<<2)|3,{95,48,111}}, +/* 34824 */ {(16<<2)|3,{95,48,115}}, +/* 34825 */ {(16<<2)|3,{95,48,116}}, +/* 34826 */ {(11<<2)|2,{95,48,0}}, +/* 34827 */ {(11<<2)|2,{95,48,0}}, +/* 34828 */ {(11<<2)|2,{95,48,0}}, +/* 34829 */ {(11<<2)|2,{95,48,0}}, +/* 34830 */ {(11<<2)|2,{95,48,0}}, +/* 34831 */ {(11<<2)|2,{95,48,0}}, +/* 34832 */ {(11<<2)|2,{95,48,0}}, +/* 34833 */ {(11<<2)|2,{95,48,0}}, +/* 34834 */ {(11<<2)|2,{95,48,0}}, +/* 34835 */ {(11<<2)|2,{95,48,0}}, +/* 34836 */ {(11<<2)|2,{95,48,0}}, +/* 34837 */ {(11<<2)|2,{95,48,0}}, +/* 34838 */ {(11<<2)|2,{95,48,0}}, +/* 34839 */ {(11<<2)|2,{95,48,0}}, +/* 34840 */ {(11<<2)|2,{95,48,0}}, +/* 34841 */ {(11<<2)|2,{95,48,0}}, +/* 34842 */ {(11<<2)|2,{95,48,0}}, +/* 34843 */ {(11<<2)|2,{95,48,0}}, +/* 34844 */ {(11<<2)|2,{95,48,0}}, +/* 34845 */ {(11<<2)|2,{95,48,0}}, +/* 34846 */ {(11<<2)|2,{95,48,0}}, +/* 34847 */ {(11<<2)|2,{95,48,0}}, +/* 34848 */ {(16<<2)|3,{95,49,48}}, +/* 34849 */ {(16<<2)|3,{95,49,49}}, +/* 34850 */ {(16<<2)|3,{95,49,50}}, +/* 34851 */ {(16<<2)|3,{95,49,97}}, +/* 34852 */ {(16<<2)|3,{95,49,99}}, +/* 34853 */ {(16<<2)|3,{95,49,101}}, +/* 34854 */ {(16<<2)|3,{95,49,105}}, +/* 34855 */ {(16<<2)|3,{95,49,111}}, +/* 34856 */ {(16<<2)|3,{95,49,115}}, +/* 34857 */ {(16<<2)|3,{95,49,116}}, +/* 34858 */ {(11<<2)|2,{95,49,0}}, +/* 34859 */ {(11<<2)|2,{95,49,0}}, +/* 34860 */ {(11<<2)|2,{95,49,0}}, +/* 34861 */ {(11<<2)|2,{95,49,0}}, +/* 34862 */ {(11<<2)|2,{95,49,0}}, +/* 34863 */ {(11<<2)|2,{95,49,0}}, +/* 34864 */ {(11<<2)|2,{95,49,0}}, +/* 34865 */ {(11<<2)|2,{95,49,0}}, +/* 34866 */ {(11<<2)|2,{95,49,0}}, +/* 34867 */ {(11<<2)|2,{95,49,0}}, +/* 34868 */ {(11<<2)|2,{95,49,0}}, +/* 34869 */ {(11<<2)|2,{95,49,0}}, +/* 34870 */ {(11<<2)|2,{95,49,0}}, +/* 34871 */ {(11<<2)|2,{95,49,0}}, +/* 34872 */ {(11<<2)|2,{95,49,0}}, +/* 34873 */ {(11<<2)|2,{95,49,0}}, +/* 34874 */ {(11<<2)|2,{95,49,0}}, +/* 34875 */ {(11<<2)|2,{95,49,0}}, +/* 34876 */ {(11<<2)|2,{95,49,0}}, +/* 34877 */ {(11<<2)|2,{95,49,0}}, +/* 34878 */ {(11<<2)|2,{95,49,0}}, +/* 34879 */ {(11<<2)|2,{95,49,0}}, +/* 34880 */ {(16<<2)|3,{95,50,48}}, +/* 34881 */ {(16<<2)|3,{95,50,49}}, +/* 34882 */ {(16<<2)|3,{95,50,50}}, +/* 34883 */ {(16<<2)|3,{95,50,97}}, +/* 34884 */ {(16<<2)|3,{95,50,99}}, +/* 34885 */ {(16<<2)|3,{95,50,101}}, +/* 34886 */ {(16<<2)|3,{95,50,105}}, +/* 34887 */ {(16<<2)|3,{95,50,111}}, +/* 34888 */ {(16<<2)|3,{95,50,115}}, +/* 34889 */ {(16<<2)|3,{95,50,116}}, +/* 34890 */ {(11<<2)|2,{95,50,0}}, +/* 34891 */ {(11<<2)|2,{95,50,0}}, +/* 34892 */ {(11<<2)|2,{95,50,0}}, +/* 34893 */ {(11<<2)|2,{95,50,0}}, +/* 34894 */ {(11<<2)|2,{95,50,0}}, +/* 34895 */ {(11<<2)|2,{95,50,0}}, +/* 34896 */ {(11<<2)|2,{95,50,0}}, +/* 34897 */ {(11<<2)|2,{95,50,0}}, +/* 34898 */ {(11<<2)|2,{95,50,0}}, +/* 34899 */ {(11<<2)|2,{95,50,0}}, +/* 34900 */ {(11<<2)|2,{95,50,0}}, +/* 34901 */ {(11<<2)|2,{95,50,0}}, +/* 34902 */ {(11<<2)|2,{95,50,0}}, +/* 34903 */ {(11<<2)|2,{95,50,0}}, +/* 34904 */ {(11<<2)|2,{95,50,0}}, +/* 34905 */ {(11<<2)|2,{95,50,0}}, +/* 34906 */ {(11<<2)|2,{95,50,0}}, +/* 34907 */ {(11<<2)|2,{95,50,0}}, +/* 34908 */ {(11<<2)|2,{95,50,0}}, +/* 34909 */ {(11<<2)|2,{95,50,0}}, +/* 34910 */ {(11<<2)|2,{95,50,0}}, +/* 34911 */ {(11<<2)|2,{95,50,0}}, +/* 34912 */ {(16<<2)|3,{95,97,48}}, +/* 34913 */ {(16<<2)|3,{95,97,49}}, +/* 34914 */ {(16<<2)|3,{95,97,50}}, +/* 34915 */ {(16<<2)|3,{95,97,97}}, +/* 34916 */ {(16<<2)|3,{95,97,99}}, +/* 34917 */ {(16<<2)|3,{95,97,101}}, +/* 34918 */ {(16<<2)|3,{95,97,105}}, +/* 34919 */ {(16<<2)|3,{95,97,111}}, +/* 34920 */ {(16<<2)|3,{95,97,115}}, +/* 34921 */ {(16<<2)|3,{95,97,116}}, +/* 34922 */ {(11<<2)|2,{95,97,0}}, +/* 34923 */ {(11<<2)|2,{95,97,0}}, +/* 34924 */ {(11<<2)|2,{95,97,0}}, +/* 34925 */ {(11<<2)|2,{95,97,0}}, +/* 34926 */ {(11<<2)|2,{95,97,0}}, +/* 34927 */ {(11<<2)|2,{95,97,0}}, +/* 34928 */ {(11<<2)|2,{95,97,0}}, +/* 34929 */ {(11<<2)|2,{95,97,0}}, +/* 34930 */ {(11<<2)|2,{95,97,0}}, +/* 34931 */ {(11<<2)|2,{95,97,0}}, +/* 34932 */ {(11<<2)|2,{95,97,0}}, +/* 34933 */ {(11<<2)|2,{95,97,0}}, +/* 34934 */ {(11<<2)|2,{95,97,0}}, +/* 34935 */ {(11<<2)|2,{95,97,0}}, +/* 34936 */ {(11<<2)|2,{95,97,0}}, +/* 34937 */ {(11<<2)|2,{95,97,0}}, +/* 34938 */ {(11<<2)|2,{95,97,0}}, +/* 34939 */ {(11<<2)|2,{95,97,0}}, +/* 34940 */ {(11<<2)|2,{95,97,0}}, +/* 34941 */ {(11<<2)|2,{95,97,0}}, +/* 34942 */ {(11<<2)|2,{95,97,0}}, +/* 34943 */ {(11<<2)|2,{95,97,0}}, +/* 34944 */ {(16<<2)|3,{95,99,48}}, +/* 34945 */ {(16<<2)|3,{95,99,49}}, +/* 34946 */ {(16<<2)|3,{95,99,50}}, +/* 34947 */ {(16<<2)|3,{95,99,97}}, +/* 34948 */ {(16<<2)|3,{95,99,99}}, +/* 34949 */ {(16<<2)|3,{95,99,101}}, +/* 34950 */ {(16<<2)|3,{95,99,105}}, +/* 34951 */ {(16<<2)|3,{95,99,111}}, +/* 34952 */ {(16<<2)|3,{95,99,115}}, +/* 34953 */ {(16<<2)|3,{95,99,116}}, +/* 34954 */ {(11<<2)|2,{95,99,0}}, +/* 34955 */ {(11<<2)|2,{95,99,0}}, +/* 34956 */ {(11<<2)|2,{95,99,0}}, +/* 34957 */ {(11<<2)|2,{95,99,0}}, +/* 34958 */ {(11<<2)|2,{95,99,0}}, +/* 34959 */ {(11<<2)|2,{95,99,0}}, +/* 34960 */ {(11<<2)|2,{95,99,0}}, +/* 34961 */ {(11<<2)|2,{95,99,0}}, +/* 34962 */ {(11<<2)|2,{95,99,0}}, +/* 34963 */ {(11<<2)|2,{95,99,0}}, +/* 34964 */ {(11<<2)|2,{95,99,0}}, +/* 34965 */ {(11<<2)|2,{95,99,0}}, +/* 34966 */ {(11<<2)|2,{95,99,0}}, +/* 34967 */ {(11<<2)|2,{95,99,0}}, +/* 34968 */ {(11<<2)|2,{95,99,0}}, +/* 34969 */ {(11<<2)|2,{95,99,0}}, +/* 34970 */ {(11<<2)|2,{95,99,0}}, +/* 34971 */ {(11<<2)|2,{95,99,0}}, +/* 34972 */ {(11<<2)|2,{95,99,0}}, +/* 34973 */ {(11<<2)|2,{95,99,0}}, +/* 34974 */ {(11<<2)|2,{95,99,0}}, +/* 34975 */ {(11<<2)|2,{95,99,0}}, +/* 34976 */ {(16<<2)|3,{95,101,48}}, +/* 34977 */ {(16<<2)|3,{95,101,49}}, +/* 34978 */ {(16<<2)|3,{95,101,50}}, +/* 34979 */ {(16<<2)|3,{95,101,97}}, +/* 34980 */ {(16<<2)|3,{95,101,99}}, +/* 34981 */ {(16<<2)|3,{95,101,101}}, +/* 34982 */ {(16<<2)|3,{95,101,105}}, +/* 34983 */ {(16<<2)|3,{95,101,111}}, +/* 34984 */ {(16<<2)|3,{95,101,115}}, +/* 34985 */ {(16<<2)|3,{95,101,116}}, +/* 34986 */ {(11<<2)|2,{95,101,0}}, +/* 34987 */ {(11<<2)|2,{95,101,0}}, +/* 34988 */ {(11<<2)|2,{95,101,0}}, +/* 34989 */ {(11<<2)|2,{95,101,0}}, +/* 34990 */ {(11<<2)|2,{95,101,0}}, +/* 34991 */ {(11<<2)|2,{95,101,0}}, +/* 34992 */ {(11<<2)|2,{95,101,0}}, +/* 34993 */ {(11<<2)|2,{95,101,0}}, +/* 34994 */ {(11<<2)|2,{95,101,0}}, +/* 34995 */ {(11<<2)|2,{95,101,0}}, +/* 34996 */ {(11<<2)|2,{95,101,0}}, +/* 34997 */ {(11<<2)|2,{95,101,0}}, +/* 34998 */ {(11<<2)|2,{95,101,0}}, +/* 34999 */ {(11<<2)|2,{95,101,0}}, +/* 35000 */ {(11<<2)|2,{95,101,0}}, +/* 35001 */ {(11<<2)|2,{95,101,0}}, +/* 35002 */ {(11<<2)|2,{95,101,0}}, +/* 35003 */ {(11<<2)|2,{95,101,0}}, +/* 35004 */ {(11<<2)|2,{95,101,0}}, +/* 35005 */ {(11<<2)|2,{95,101,0}}, +/* 35006 */ {(11<<2)|2,{95,101,0}}, +/* 35007 */ {(11<<2)|2,{95,101,0}}, +/* 35008 */ {(16<<2)|3,{95,105,48}}, +/* 35009 */ {(16<<2)|3,{95,105,49}}, +/* 35010 */ {(16<<2)|3,{95,105,50}}, +/* 35011 */ {(16<<2)|3,{95,105,97}}, +/* 35012 */ {(16<<2)|3,{95,105,99}}, +/* 35013 */ {(16<<2)|3,{95,105,101}}, +/* 35014 */ {(16<<2)|3,{95,105,105}}, +/* 35015 */ {(16<<2)|3,{95,105,111}}, +/* 35016 */ {(16<<2)|3,{95,105,115}}, +/* 35017 */ {(16<<2)|3,{95,105,116}}, +/* 35018 */ {(11<<2)|2,{95,105,0}}, +/* 35019 */ {(11<<2)|2,{95,105,0}}, +/* 35020 */ {(11<<2)|2,{95,105,0}}, +/* 35021 */ {(11<<2)|2,{95,105,0}}, +/* 35022 */ {(11<<2)|2,{95,105,0}}, +/* 35023 */ {(11<<2)|2,{95,105,0}}, +/* 35024 */ {(11<<2)|2,{95,105,0}}, +/* 35025 */ {(11<<2)|2,{95,105,0}}, +/* 35026 */ {(11<<2)|2,{95,105,0}}, +/* 35027 */ {(11<<2)|2,{95,105,0}}, +/* 35028 */ {(11<<2)|2,{95,105,0}}, +/* 35029 */ {(11<<2)|2,{95,105,0}}, +/* 35030 */ {(11<<2)|2,{95,105,0}}, +/* 35031 */ {(11<<2)|2,{95,105,0}}, +/* 35032 */ {(11<<2)|2,{95,105,0}}, +/* 35033 */ {(11<<2)|2,{95,105,0}}, +/* 35034 */ {(11<<2)|2,{95,105,0}}, +/* 35035 */ {(11<<2)|2,{95,105,0}}, +/* 35036 */ {(11<<2)|2,{95,105,0}}, +/* 35037 */ {(11<<2)|2,{95,105,0}}, +/* 35038 */ {(11<<2)|2,{95,105,0}}, +/* 35039 */ {(11<<2)|2,{95,105,0}}, +/* 35040 */ {(16<<2)|3,{95,111,48}}, +/* 35041 */ {(16<<2)|3,{95,111,49}}, +/* 35042 */ {(16<<2)|3,{95,111,50}}, +/* 35043 */ {(16<<2)|3,{95,111,97}}, +/* 35044 */ {(16<<2)|3,{95,111,99}}, +/* 35045 */ {(16<<2)|3,{95,111,101}}, +/* 35046 */ {(16<<2)|3,{95,111,105}}, +/* 35047 */ {(16<<2)|3,{95,111,111}}, +/* 35048 */ {(16<<2)|3,{95,111,115}}, +/* 35049 */ {(16<<2)|3,{95,111,116}}, +/* 35050 */ {(11<<2)|2,{95,111,0}}, +/* 35051 */ {(11<<2)|2,{95,111,0}}, +/* 35052 */ {(11<<2)|2,{95,111,0}}, +/* 35053 */ {(11<<2)|2,{95,111,0}}, +/* 35054 */ {(11<<2)|2,{95,111,0}}, +/* 35055 */ {(11<<2)|2,{95,111,0}}, +/* 35056 */ {(11<<2)|2,{95,111,0}}, +/* 35057 */ {(11<<2)|2,{95,111,0}}, +/* 35058 */ {(11<<2)|2,{95,111,0}}, +/* 35059 */ {(11<<2)|2,{95,111,0}}, +/* 35060 */ {(11<<2)|2,{95,111,0}}, +/* 35061 */ {(11<<2)|2,{95,111,0}}, +/* 35062 */ {(11<<2)|2,{95,111,0}}, +/* 35063 */ {(11<<2)|2,{95,111,0}}, +/* 35064 */ {(11<<2)|2,{95,111,0}}, +/* 35065 */ {(11<<2)|2,{95,111,0}}, +/* 35066 */ {(11<<2)|2,{95,111,0}}, +/* 35067 */ {(11<<2)|2,{95,111,0}}, +/* 35068 */ {(11<<2)|2,{95,111,0}}, +/* 35069 */ {(11<<2)|2,{95,111,0}}, +/* 35070 */ {(11<<2)|2,{95,111,0}}, +/* 35071 */ {(11<<2)|2,{95,111,0}}, +/* 35072 */ {(16<<2)|3,{95,115,48}}, +/* 35073 */ {(16<<2)|3,{95,115,49}}, +/* 35074 */ {(16<<2)|3,{95,115,50}}, +/* 35075 */ {(16<<2)|3,{95,115,97}}, +/* 35076 */ {(16<<2)|3,{95,115,99}}, +/* 35077 */ {(16<<2)|3,{95,115,101}}, +/* 35078 */ {(16<<2)|3,{95,115,105}}, +/* 35079 */ {(16<<2)|3,{95,115,111}}, +/* 35080 */ {(16<<2)|3,{95,115,115}}, +/* 35081 */ {(16<<2)|3,{95,115,116}}, +/* 35082 */ {(11<<2)|2,{95,115,0}}, +/* 35083 */ {(11<<2)|2,{95,115,0}}, +/* 35084 */ {(11<<2)|2,{95,115,0}}, +/* 35085 */ {(11<<2)|2,{95,115,0}}, +/* 35086 */ {(11<<2)|2,{95,115,0}}, +/* 35087 */ {(11<<2)|2,{95,115,0}}, +/* 35088 */ {(11<<2)|2,{95,115,0}}, +/* 35089 */ {(11<<2)|2,{95,115,0}}, +/* 35090 */ {(11<<2)|2,{95,115,0}}, +/* 35091 */ {(11<<2)|2,{95,115,0}}, +/* 35092 */ {(11<<2)|2,{95,115,0}}, +/* 35093 */ {(11<<2)|2,{95,115,0}}, +/* 35094 */ {(11<<2)|2,{95,115,0}}, +/* 35095 */ {(11<<2)|2,{95,115,0}}, +/* 35096 */ {(11<<2)|2,{95,115,0}}, +/* 35097 */ {(11<<2)|2,{95,115,0}}, +/* 35098 */ {(11<<2)|2,{95,115,0}}, +/* 35099 */ {(11<<2)|2,{95,115,0}}, +/* 35100 */ {(11<<2)|2,{95,115,0}}, +/* 35101 */ {(11<<2)|2,{95,115,0}}, +/* 35102 */ {(11<<2)|2,{95,115,0}}, +/* 35103 */ {(11<<2)|2,{95,115,0}}, +/* 35104 */ {(16<<2)|3,{95,116,48}}, +/* 35105 */ {(16<<2)|3,{95,116,49}}, +/* 35106 */ {(16<<2)|3,{95,116,50}}, +/* 35107 */ {(16<<2)|3,{95,116,97}}, +/* 35108 */ {(16<<2)|3,{95,116,99}}, +/* 35109 */ {(16<<2)|3,{95,116,101}}, +/* 35110 */ {(16<<2)|3,{95,116,105}}, +/* 35111 */ {(16<<2)|3,{95,116,111}}, +/* 35112 */ {(16<<2)|3,{95,116,115}}, +/* 35113 */ {(16<<2)|3,{95,116,116}}, +/* 35114 */ {(11<<2)|2,{95,116,0}}, +/* 35115 */ {(11<<2)|2,{95,116,0}}, +/* 35116 */ {(11<<2)|2,{95,116,0}}, +/* 35117 */ {(11<<2)|2,{95,116,0}}, +/* 35118 */ {(11<<2)|2,{95,116,0}}, +/* 35119 */ {(11<<2)|2,{95,116,0}}, +/* 35120 */ {(11<<2)|2,{95,116,0}}, +/* 35121 */ {(11<<2)|2,{95,116,0}}, +/* 35122 */ {(11<<2)|2,{95,116,0}}, +/* 35123 */ {(11<<2)|2,{95,116,0}}, +/* 35124 */ {(11<<2)|2,{95,116,0}}, +/* 35125 */ {(11<<2)|2,{95,116,0}}, +/* 35126 */ {(11<<2)|2,{95,116,0}}, +/* 35127 */ {(11<<2)|2,{95,116,0}}, +/* 35128 */ {(11<<2)|2,{95,116,0}}, +/* 35129 */ {(11<<2)|2,{95,116,0}}, +/* 35130 */ {(11<<2)|2,{95,116,0}}, +/* 35131 */ {(11<<2)|2,{95,116,0}}, +/* 35132 */ {(11<<2)|2,{95,116,0}}, +/* 35133 */ {(11<<2)|2,{95,116,0}}, +/* 35134 */ {(11<<2)|2,{95,116,0}}, +/* 35135 */ {(11<<2)|2,{95,116,0}}, +/* 35136 */ {(12<<2)|2,{95,32,0}}, +/* 35137 */ {(12<<2)|2,{95,32,0}}, +/* 35138 */ {(12<<2)|2,{95,32,0}}, +/* 35139 */ {(12<<2)|2,{95,32,0}}, +/* 35140 */ {(12<<2)|2,{95,32,0}}, +/* 35141 */ {(12<<2)|2,{95,32,0}}, +/* 35142 */ {(12<<2)|2,{95,32,0}}, +/* 35143 */ {(12<<2)|2,{95,32,0}}, +/* 35144 */ {(12<<2)|2,{95,32,0}}, +/* 35145 */ {(12<<2)|2,{95,32,0}}, +/* 35146 */ {(12<<2)|2,{95,32,0}}, +/* 35147 */ {(12<<2)|2,{95,32,0}}, +/* 35148 */ {(12<<2)|2,{95,32,0}}, +/* 35149 */ {(12<<2)|2,{95,32,0}}, +/* 35150 */ {(12<<2)|2,{95,32,0}}, +/* 35151 */ {(12<<2)|2,{95,32,0}}, +/* 35152 */ {(12<<2)|2,{95,37,0}}, +/* 35153 */ {(12<<2)|2,{95,37,0}}, +/* 35154 */ {(12<<2)|2,{95,37,0}}, +/* 35155 */ {(12<<2)|2,{95,37,0}}, +/* 35156 */ {(12<<2)|2,{95,37,0}}, +/* 35157 */ {(12<<2)|2,{95,37,0}}, +/* 35158 */ {(12<<2)|2,{95,37,0}}, +/* 35159 */ {(12<<2)|2,{95,37,0}}, +/* 35160 */ {(12<<2)|2,{95,37,0}}, +/* 35161 */ {(12<<2)|2,{95,37,0}}, +/* 35162 */ {(12<<2)|2,{95,37,0}}, +/* 35163 */ {(12<<2)|2,{95,37,0}}, +/* 35164 */ {(12<<2)|2,{95,37,0}}, +/* 35165 */ {(12<<2)|2,{95,37,0}}, +/* 35166 */ {(12<<2)|2,{95,37,0}}, +/* 35167 */ {(12<<2)|2,{95,37,0}}, +/* 35168 */ {(12<<2)|2,{95,45,0}}, +/* 35169 */ {(12<<2)|2,{95,45,0}}, +/* 35170 */ {(12<<2)|2,{95,45,0}}, +/* 35171 */ {(12<<2)|2,{95,45,0}}, +/* 35172 */ {(12<<2)|2,{95,45,0}}, +/* 35173 */ {(12<<2)|2,{95,45,0}}, +/* 35174 */ {(12<<2)|2,{95,45,0}}, +/* 35175 */ {(12<<2)|2,{95,45,0}}, +/* 35176 */ {(12<<2)|2,{95,45,0}}, +/* 35177 */ {(12<<2)|2,{95,45,0}}, +/* 35178 */ {(12<<2)|2,{95,45,0}}, +/* 35179 */ {(12<<2)|2,{95,45,0}}, +/* 35180 */ {(12<<2)|2,{95,45,0}}, +/* 35181 */ {(12<<2)|2,{95,45,0}}, +/* 35182 */ {(12<<2)|2,{95,45,0}}, +/* 35183 */ {(12<<2)|2,{95,45,0}}, +/* 35184 */ {(12<<2)|2,{95,46,0}}, +/* 35185 */ {(12<<2)|2,{95,46,0}}, +/* 35186 */ {(12<<2)|2,{95,46,0}}, +/* 35187 */ {(12<<2)|2,{95,46,0}}, +/* 35188 */ {(12<<2)|2,{95,46,0}}, +/* 35189 */ {(12<<2)|2,{95,46,0}}, +/* 35190 */ {(12<<2)|2,{95,46,0}}, +/* 35191 */ {(12<<2)|2,{95,46,0}}, +/* 35192 */ {(12<<2)|2,{95,46,0}}, +/* 35193 */ {(12<<2)|2,{95,46,0}}, +/* 35194 */ {(12<<2)|2,{95,46,0}}, +/* 35195 */ {(12<<2)|2,{95,46,0}}, +/* 35196 */ {(12<<2)|2,{95,46,0}}, +/* 35197 */ {(12<<2)|2,{95,46,0}}, +/* 35198 */ {(12<<2)|2,{95,46,0}}, +/* 35199 */ {(12<<2)|2,{95,46,0}}, +/* 35200 */ {(12<<2)|2,{95,47,0}}, +/* 35201 */ {(12<<2)|2,{95,47,0}}, +/* 35202 */ {(12<<2)|2,{95,47,0}}, +/* 35203 */ {(12<<2)|2,{95,47,0}}, +/* 35204 */ {(12<<2)|2,{95,47,0}}, +/* 35205 */ {(12<<2)|2,{95,47,0}}, +/* 35206 */ {(12<<2)|2,{95,47,0}}, +/* 35207 */ {(12<<2)|2,{95,47,0}}, +/* 35208 */ {(12<<2)|2,{95,47,0}}, +/* 35209 */ {(12<<2)|2,{95,47,0}}, +/* 35210 */ {(12<<2)|2,{95,47,0}}, +/* 35211 */ {(12<<2)|2,{95,47,0}}, +/* 35212 */ {(12<<2)|2,{95,47,0}}, +/* 35213 */ {(12<<2)|2,{95,47,0}}, +/* 35214 */ {(12<<2)|2,{95,47,0}}, +/* 35215 */ {(12<<2)|2,{95,47,0}}, +/* 35216 */ {(12<<2)|2,{95,51,0}}, +/* 35217 */ {(12<<2)|2,{95,51,0}}, +/* 35218 */ {(12<<2)|2,{95,51,0}}, +/* 35219 */ {(12<<2)|2,{95,51,0}}, +/* 35220 */ {(12<<2)|2,{95,51,0}}, +/* 35221 */ {(12<<2)|2,{95,51,0}}, +/* 35222 */ {(12<<2)|2,{95,51,0}}, +/* 35223 */ {(12<<2)|2,{95,51,0}}, +/* 35224 */ {(12<<2)|2,{95,51,0}}, +/* 35225 */ {(12<<2)|2,{95,51,0}}, +/* 35226 */ {(12<<2)|2,{95,51,0}}, +/* 35227 */ {(12<<2)|2,{95,51,0}}, +/* 35228 */ {(12<<2)|2,{95,51,0}}, +/* 35229 */ {(12<<2)|2,{95,51,0}}, +/* 35230 */ {(12<<2)|2,{95,51,0}}, +/* 35231 */ {(12<<2)|2,{95,51,0}}, +/* 35232 */ {(12<<2)|2,{95,52,0}}, +/* 35233 */ {(12<<2)|2,{95,52,0}}, +/* 35234 */ {(12<<2)|2,{95,52,0}}, +/* 35235 */ {(12<<2)|2,{95,52,0}}, +/* 35236 */ {(12<<2)|2,{95,52,0}}, +/* 35237 */ {(12<<2)|2,{95,52,0}}, +/* 35238 */ {(12<<2)|2,{95,52,0}}, +/* 35239 */ {(12<<2)|2,{95,52,0}}, +/* 35240 */ {(12<<2)|2,{95,52,0}}, +/* 35241 */ {(12<<2)|2,{95,52,0}}, +/* 35242 */ {(12<<2)|2,{95,52,0}}, +/* 35243 */ {(12<<2)|2,{95,52,0}}, +/* 35244 */ {(12<<2)|2,{95,52,0}}, +/* 35245 */ {(12<<2)|2,{95,52,0}}, +/* 35246 */ {(12<<2)|2,{95,52,0}}, +/* 35247 */ {(12<<2)|2,{95,52,0}}, +/* 35248 */ {(12<<2)|2,{95,53,0}}, +/* 35249 */ {(12<<2)|2,{95,53,0}}, +/* 35250 */ {(12<<2)|2,{95,53,0}}, +/* 35251 */ {(12<<2)|2,{95,53,0}}, +/* 35252 */ {(12<<2)|2,{95,53,0}}, +/* 35253 */ {(12<<2)|2,{95,53,0}}, +/* 35254 */ {(12<<2)|2,{95,53,0}}, +/* 35255 */ {(12<<2)|2,{95,53,0}}, +/* 35256 */ {(12<<2)|2,{95,53,0}}, +/* 35257 */ {(12<<2)|2,{95,53,0}}, +/* 35258 */ {(12<<2)|2,{95,53,0}}, +/* 35259 */ {(12<<2)|2,{95,53,0}}, +/* 35260 */ {(12<<2)|2,{95,53,0}}, +/* 35261 */ {(12<<2)|2,{95,53,0}}, +/* 35262 */ {(12<<2)|2,{95,53,0}}, +/* 35263 */ {(12<<2)|2,{95,53,0}}, +/* 35264 */ {(12<<2)|2,{95,54,0}}, +/* 35265 */ {(12<<2)|2,{95,54,0}}, +/* 35266 */ {(12<<2)|2,{95,54,0}}, +/* 35267 */ {(12<<2)|2,{95,54,0}}, +/* 35268 */ {(12<<2)|2,{95,54,0}}, +/* 35269 */ {(12<<2)|2,{95,54,0}}, +/* 35270 */ {(12<<2)|2,{95,54,0}}, +/* 35271 */ {(12<<2)|2,{95,54,0}}, +/* 35272 */ {(12<<2)|2,{95,54,0}}, +/* 35273 */ {(12<<2)|2,{95,54,0}}, +/* 35274 */ {(12<<2)|2,{95,54,0}}, +/* 35275 */ {(12<<2)|2,{95,54,0}}, +/* 35276 */ {(12<<2)|2,{95,54,0}}, +/* 35277 */ {(12<<2)|2,{95,54,0}}, +/* 35278 */ {(12<<2)|2,{95,54,0}}, +/* 35279 */ {(12<<2)|2,{95,54,0}}, +/* 35280 */ {(12<<2)|2,{95,55,0}}, +/* 35281 */ {(12<<2)|2,{95,55,0}}, +/* 35282 */ {(12<<2)|2,{95,55,0}}, +/* 35283 */ {(12<<2)|2,{95,55,0}}, +/* 35284 */ {(12<<2)|2,{95,55,0}}, +/* 35285 */ {(12<<2)|2,{95,55,0}}, +/* 35286 */ {(12<<2)|2,{95,55,0}}, +/* 35287 */ {(12<<2)|2,{95,55,0}}, +/* 35288 */ {(12<<2)|2,{95,55,0}}, +/* 35289 */ {(12<<2)|2,{95,55,0}}, +/* 35290 */ {(12<<2)|2,{95,55,0}}, +/* 35291 */ {(12<<2)|2,{95,55,0}}, +/* 35292 */ {(12<<2)|2,{95,55,0}}, +/* 35293 */ {(12<<2)|2,{95,55,0}}, +/* 35294 */ {(12<<2)|2,{95,55,0}}, +/* 35295 */ {(12<<2)|2,{95,55,0}}, +/* 35296 */ {(12<<2)|2,{95,56,0}}, +/* 35297 */ {(12<<2)|2,{95,56,0}}, +/* 35298 */ {(12<<2)|2,{95,56,0}}, +/* 35299 */ {(12<<2)|2,{95,56,0}}, +/* 35300 */ {(12<<2)|2,{95,56,0}}, +/* 35301 */ {(12<<2)|2,{95,56,0}}, +/* 35302 */ {(12<<2)|2,{95,56,0}}, +/* 35303 */ {(12<<2)|2,{95,56,0}}, +/* 35304 */ {(12<<2)|2,{95,56,0}}, +/* 35305 */ {(12<<2)|2,{95,56,0}}, +/* 35306 */ {(12<<2)|2,{95,56,0}}, +/* 35307 */ {(12<<2)|2,{95,56,0}}, +/* 35308 */ {(12<<2)|2,{95,56,0}}, +/* 35309 */ {(12<<2)|2,{95,56,0}}, +/* 35310 */ {(12<<2)|2,{95,56,0}}, +/* 35311 */ {(12<<2)|2,{95,56,0}}, +/* 35312 */ {(12<<2)|2,{95,57,0}}, +/* 35313 */ {(12<<2)|2,{95,57,0}}, +/* 35314 */ {(12<<2)|2,{95,57,0}}, +/* 35315 */ {(12<<2)|2,{95,57,0}}, +/* 35316 */ {(12<<2)|2,{95,57,0}}, +/* 35317 */ {(12<<2)|2,{95,57,0}}, +/* 35318 */ {(12<<2)|2,{95,57,0}}, +/* 35319 */ {(12<<2)|2,{95,57,0}}, +/* 35320 */ {(12<<2)|2,{95,57,0}}, +/* 35321 */ {(12<<2)|2,{95,57,0}}, +/* 35322 */ {(12<<2)|2,{95,57,0}}, +/* 35323 */ {(12<<2)|2,{95,57,0}}, +/* 35324 */ {(12<<2)|2,{95,57,0}}, +/* 35325 */ {(12<<2)|2,{95,57,0}}, +/* 35326 */ {(12<<2)|2,{95,57,0}}, +/* 35327 */ {(12<<2)|2,{95,57,0}}, +/* 35328 */ {(12<<2)|2,{95,61,0}}, +/* 35329 */ {(12<<2)|2,{95,61,0}}, +/* 35330 */ {(12<<2)|2,{95,61,0}}, +/* 35331 */ {(12<<2)|2,{95,61,0}}, +/* 35332 */ {(12<<2)|2,{95,61,0}}, +/* 35333 */ {(12<<2)|2,{95,61,0}}, +/* 35334 */ {(12<<2)|2,{95,61,0}}, +/* 35335 */ {(12<<2)|2,{95,61,0}}, +/* 35336 */ {(12<<2)|2,{95,61,0}}, +/* 35337 */ {(12<<2)|2,{95,61,0}}, +/* 35338 */ {(12<<2)|2,{95,61,0}}, +/* 35339 */ {(12<<2)|2,{95,61,0}}, +/* 35340 */ {(12<<2)|2,{95,61,0}}, +/* 35341 */ {(12<<2)|2,{95,61,0}}, +/* 35342 */ {(12<<2)|2,{95,61,0}}, +/* 35343 */ {(12<<2)|2,{95,61,0}}, +/* 35344 */ {(12<<2)|2,{95,65,0}}, +/* 35345 */ {(12<<2)|2,{95,65,0}}, +/* 35346 */ {(12<<2)|2,{95,65,0}}, +/* 35347 */ {(12<<2)|2,{95,65,0}}, +/* 35348 */ {(12<<2)|2,{95,65,0}}, +/* 35349 */ {(12<<2)|2,{95,65,0}}, +/* 35350 */ {(12<<2)|2,{95,65,0}}, +/* 35351 */ {(12<<2)|2,{95,65,0}}, +/* 35352 */ {(12<<2)|2,{95,65,0}}, +/* 35353 */ {(12<<2)|2,{95,65,0}}, +/* 35354 */ {(12<<2)|2,{95,65,0}}, +/* 35355 */ {(12<<2)|2,{95,65,0}}, +/* 35356 */ {(12<<2)|2,{95,65,0}}, +/* 35357 */ {(12<<2)|2,{95,65,0}}, +/* 35358 */ {(12<<2)|2,{95,65,0}}, +/* 35359 */ {(12<<2)|2,{95,65,0}}, +/* 35360 */ {(12<<2)|2,{95,95,0}}, +/* 35361 */ {(12<<2)|2,{95,95,0}}, +/* 35362 */ {(12<<2)|2,{95,95,0}}, +/* 35363 */ {(12<<2)|2,{95,95,0}}, +/* 35364 */ {(12<<2)|2,{95,95,0}}, +/* 35365 */ {(12<<2)|2,{95,95,0}}, +/* 35366 */ {(12<<2)|2,{95,95,0}}, +/* 35367 */ {(12<<2)|2,{95,95,0}}, +/* 35368 */ {(12<<2)|2,{95,95,0}}, +/* 35369 */ {(12<<2)|2,{95,95,0}}, +/* 35370 */ {(12<<2)|2,{95,95,0}}, +/* 35371 */ {(12<<2)|2,{95,95,0}}, +/* 35372 */ {(12<<2)|2,{95,95,0}}, +/* 35373 */ {(12<<2)|2,{95,95,0}}, +/* 35374 */ {(12<<2)|2,{95,95,0}}, +/* 35375 */ {(12<<2)|2,{95,95,0}}, +/* 35376 */ {(12<<2)|2,{95,98,0}}, +/* 35377 */ {(12<<2)|2,{95,98,0}}, +/* 35378 */ {(12<<2)|2,{95,98,0}}, +/* 35379 */ {(12<<2)|2,{95,98,0}}, +/* 35380 */ {(12<<2)|2,{95,98,0}}, +/* 35381 */ {(12<<2)|2,{95,98,0}}, +/* 35382 */ {(12<<2)|2,{95,98,0}}, +/* 35383 */ {(12<<2)|2,{95,98,0}}, +/* 35384 */ {(12<<2)|2,{95,98,0}}, +/* 35385 */ {(12<<2)|2,{95,98,0}}, +/* 35386 */ {(12<<2)|2,{95,98,0}}, +/* 35387 */ {(12<<2)|2,{95,98,0}}, +/* 35388 */ {(12<<2)|2,{95,98,0}}, +/* 35389 */ {(12<<2)|2,{95,98,0}}, +/* 35390 */ {(12<<2)|2,{95,98,0}}, +/* 35391 */ {(12<<2)|2,{95,98,0}}, +/* 35392 */ {(12<<2)|2,{95,100,0}}, +/* 35393 */ {(12<<2)|2,{95,100,0}}, +/* 35394 */ {(12<<2)|2,{95,100,0}}, +/* 35395 */ {(12<<2)|2,{95,100,0}}, +/* 35396 */ {(12<<2)|2,{95,100,0}}, +/* 35397 */ {(12<<2)|2,{95,100,0}}, +/* 35398 */ {(12<<2)|2,{95,100,0}}, +/* 35399 */ {(12<<2)|2,{95,100,0}}, +/* 35400 */ {(12<<2)|2,{95,100,0}}, +/* 35401 */ {(12<<2)|2,{95,100,0}}, +/* 35402 */ {(12<<2)|2,{95,100,0}}, +/* 35403 */ {(12<<2)|2,{95,100,0}}, +/* 35404 */ {(12<<2)|2,{95,100,0}}, +/* 35405 */ {(12<<2)|2,{95,100,0}}, +/* 35406 */ {(12<<2)|2,{95,100,0}}, +/* 35407 */ {(12<<2)|2,{95,100,0}}, +/* 35408 */ {(12<<2)|2,{95,102,0}}, +/* 35409 */ {(12<<2)|2,{95,102,0}}, +/* 35410 */ {(12<<2)|2,{95,102,0}}, +/* 35411 */ {(12<<2)|2,{95,102,0}}, +/* 35412 */ {(12<<2)|2,{95,102,0}}, +/* 35413 */ {(12<<2)|2,{95,102,0}}, +/* 35414 */ {(12<<2)|2,{95,102,0}}, +/* 35415 */ {(12<<2)|2,{95,102,0}}, +/* 35416 */ {(12<<2)|2,{95,102,0}}, +/* 35417 */ {(12<<2)|2,{95,102,0}}, +/* 35418 */ {(12<<2)|2,{95,102,0}}, +/* 35419 */ {(12<<2)|2,{95,102,0}}, +/* 35420 */ {(12<<2)|2,{95,102,0}}, +/* 35421 */ {(12<<2)|2,{95,102,0}}, +/* 35422 */ {(12<<2)|2,{95,102,0}}, +/* 35423 */ {(12<<2)|2,{95,102,0}}, +/* 35424 */ {(12<<2)|2,{95,103,0}}, +/* 35425 */ {(12<<2)|2,{95,103,0}}, +/* 35426 */ {(12<<2)|2,{95,103,0}}, +/* 35427 */ {(12<<2)|2,{95,103,0}}, +/* 35428 */ {(12<<2)|2,{95,103,0}}, +/* 35429 */ {(12<<2)|2,{95,103,0}}, +/* 35430 */ {(12<<2)|2,{95,103,0}}, +/* 35431 */ {(12<<2)|2,{95,103,0}}, +/* 35432 */ {(12<<2)|2,{95,103,0}}, +/* 35433 */ {(12<<2)|2,{95,103,0}}, +/* 35434 */ {(12<<2)|2,{95,103,0}}, +/* 35435 */ {(12<<2)|2,{95,103,0}}, +/* 35436 */ {(12<<2)|2,{95,103,0}}, +/* 35437 */ {(12<<2)|2,{95,103,0}}, +/* 35438 */ {(12<<2)|2,{95,103,0}}, +/* 35439 */ {(12<<2)|2,{95,103,0}}, +/* 35440 */ {(12<<2)|2,{95,104,0}}, +/* 35441 */ {(12<<2)|2,{95,104,0}}, +/* 35442 */ {(12<<2)|2,{95,104,0}}, +/* 35443 */ {(12<<2)|2,{95,104,0}}, +/* 35444 */ {(12<<2)|2,{95,104,0}}, +/* 35445 */ {(12<<2)|2,{95,104,0}}, +/* 35446 */ {(12<<2)|2,{95,104,0}}, +/* 35447 */ {(12<<2)|2,{95,104,0}}, +/* 35448 */ {(12<<2)|2,{95,104,0}}, +/* 35449 */ {(12<<2)|2,{95,104,0}}, +/* 35450 */ {(12<<2)|2,{95,104,0}}, +/* 35451 */ {(12<<2)|2,{95,104,0}}, +/* 35452 */ {(12<<2)|2,{95,104,0}}, +/* 35453 */ {(12<<2)|2,{95,104,0}}, +/* 35454 */ {(12<<2)|2,{95,104,0}}, +/* 35455 */ {(12<<2)|2,{95,104,0}}, +/* 35456 */ {(12<<2)|2,{95,108,0}}, +/* 35457 */ {(12<<2)|2,{95,108,0}}, +/* 35458 */ {(12<<2)|2,{95,108,0}}, +/* 35459 */ {(12<<2)|2,{95,108,0}}, +/* 35460 */ {(12<<2)|2,{95,108,0}}, +/* 35461 */ {(12<<2)|2,{95,108,0}}, +/* 35462 */ {(12<<2)|2,{95,108,0}}, +/* 35463 */ {(12<<2)|2,{95,108,0}}, +/* 35464 */ {(12<<2)|2,{95,108,0}}, +/* 35465 */ {(12<<2)|2,{95,108,0}}, +/* 35466 */ {(12<<2)|2,{95,108,0}}, +/* 35467 */ {(12<<2)|2,{95,108,0}}, +/* 35468 */ {(12<<2)|2,{95,108,0}}, +/* 35469 */ {(12<<2)|2,{95,108,0}}, +/* 35470 */ {(12<<2)|2,{95,108,0}}, +/* 35471 */ {(12<<2)|2,{95,108,0}}, +/* 35472 */ {(12<<2)|2,{95,109,0}}, +/* 35473 */ {(12<<2)|2,{95,109,0}}, +/* 35474 */ {(12<<2)|2,{95,109,0}}, +/* 35475 */ {(12<<2)|2,{95,109,0}}, +/* 35476 */ {(12<<2)|2,{95,109,0}}, +/* 35477 */ {(12<<2)|2,{95,109,0}}, +/* 35478 */ {(12<<2)|2,{95,109,0}}, +/* 35479 */ {(12<<2)|2,{95,109,0}}, +/* 35480 */ {(12<<2)|2,{95,109,0}}, +/* 35481 */ {(12<<2)|2,{95,109,0}}, +/* 35482 */ {(12<<2)|2,{95,109,0}}, +/* 35483 */ {(12<<2)|2,{95,109,0}}, +/* 35484 */ {(12<<2)|2,{95,109,0}}, +/* 35485 */ {(12<<2)|2,{95,109,0}}, +/* 35486 */ {(12<<2)|2,{95,109,0}}, +/* 35487 */ {(12<<2)|2,{95,109,0}}, +/* 35488 */ {(12<<2)|2,{95,110,0}}, +/* 35489 */ {(12<<2)|2,{95,110,0}}, +/* 35490 */ {(12<<2)|2,{95,110,0}}, +/* 35491 */ {(12<<2)|2,{95,110,0}}, +/* 35492 */ {(12<<2)|2,{95,110,0}}, +/* 35493 */ {(12<<2)|2,{95,110,0}}, +/* 35494 */ {(12<<2)|2,{95,110,0}}, +/* 35495 */ {(12<<2)|2,{95,110,0}}, +/* 35496 */ {(12<<2)|2,{95,110,0}}, +/* 35497 */ {(12<<2)|2,{95,110,0}}, +/* 35498 */ {(12<<2)|2,{95,110,0}}, +/* 35499 */ {(12<<2)|2,{95,110,0}}, +/* 35500 */ {(12<<2)|2,{95,110,0}}, +/* 35501 */ {(12<<2)|2,{95,110,0}}, +/* 35502 */ {(12<<2)|2,{95,110,0}}, +/* 35503 */ {(12<<2)|2,{95,110,0}}, +/* 35504 */ {(12<<2)|2,{95,112,0}}, +/* 35505 */ {(12<<2)|2,{95,112,0}}, +/* 35506 */ {(12<<2)|2,{95,112,0}}, +/* 35507 */ {(12<<2)|2,{95,112,0}}, +/* 35508 */ {(12<<2)|2,{95,112,0}}, +/* 35509 */ {(12<<2)|2,{95,112,0}}, +/* 35510 */ {(12<<2)|2,{95,112,0}}, +/* 35511 */ {(12<<2)|2,{95,112,0}}, +/* 35512 */ {(12<<2)|2,{95,112,0}}, +/* 35513 */ {(12<<2)|2,{95,112,0}}, +/* 35514 */ {(12<<2)|2,{95,112,0}}, +/* 35515 */ {(12<<2)|2,{95,112,0}}, +/* 35516 */ {(12<<2)|2,{95,112,0}}, +/* 35517 */ {(12<<2)|2,{95,112,0}}, +/* 35518 */ {(12<<2)|2,{95,112,0}}, +/* 35519 */ {(12<<2)|2,{95,112,0}}, +/* 35520 */ {(12<<2)|2,{95,114,0}}, +/* 35521 */ {(12<<2)|2,{95,114,0}}, +/* 35522 */ {(12<<2)|2,{95,114,0}}, +/* 35523 */ {(12<<2)|2,{95,114,0}}, +/* 35524 */ {(12<<2)|2,{95,114,0}}, +/* 35525 */ {(12<<2)|2,{95,114,0}}, +/* 35526 */ {(12<<2)|2,{95,114,0}}, +/* 35527 */ {(12<<2)|2,{95,114,0}}, +/* 35528 */ {(12<<2)|2,{95,114,0}}, +/* 35529 */ {(12<<2)|2,{95,114,0}}, +/* 35530 */ {(12<<2)|2,{95,114,0}}, +/* 35531 */ {(12<<2)|2,{95,114,0}}, +/* 35532 */ {(12<<2)|2,{95,114,0}}, +/* 35533 */ {(12<<2)|2,{95,114,0}}, +/* 35534 */ {(12<<2)|2,{95,114,0}}, +/* 35535 */ {(12<<2)|2,{95,114,0}}, +/* 35536 */ {(12<<2)|2,{95,117,0}}, +/* 35537 */ {(12<<2)|2,{95,117,0}}, +/* 35538 */ {(12<<2)|2,{95,117,0}}, +/* 35539 */ {(12<<2)|2,{95,117,0}}, +/* 35540 */ {(12<<2)|2,{95,117,0}}, +/* 35541 */ {(12<<2)|2,{95,117,0}}, +/* 35542 */ {(12<<2)|2,{95,117,0}}, +/* 35543 */ {(12<<2)|2,{95,117,0}}, +/* 35544 */ {(12<<2)|2,{95,117,0}}, +/* 35545 */ {(12<<2)|2,{95,117,0}}, +/* 35546 */ {(12<<2)|2,{95,117,0}}, +/* 35547 */ {(12<<2)|2,{95,117,0}}, +/* 35548 */ {(12<<2)|2,{95,117,0}}, +/* 35549 */ {(12<<2)|2,{95,117,0}}, +/* 35550 */ {(12<<2)|2,{95,117,0}}, +/* 35551 */ {(12<<2)|2,{95,117,0}}, +/* 35552 */ {(13<<2)|2,{95,58,0}}, +/* 35553 */ {(13<<2)|2,{95,58,0}}, +/* 35554 */ {(13<<2)|2,{95,58,0}}, +/* 35555 */ {(13<<2)|2,{95,58,0}}, +/* 35556 */ {(13<<2)|2,{95,58,0}}, +/* 35557 */ {(13<<2)|2,{95,58,0}}, +/* 35558 */ {(13<<2)|2,{95,58,0}}, +/* 35559 */ {(13<<2)|2,{95,58,0}}, +/* 35560 */ {(13<<2)|2,{95,66,0}}, +/* 35561 */ {(13<<2)|2,{95,66,0}}, +/* 35562 */ {(13<<2)|2,{95,66,0}}, +/* 35563 */ {(13<<2)|2,{95,66,0}}, +/* 35564 */ {(13<<2)|2,{95,66,0}}, +/* 35565 */ {(13<<2)|2,{95,66,0}}, +/* 35566 */ {(13<<2)|2,{95,66,0}}, +/* 35567 */ {(13<<2)|2,{95,66,0}}, +/* 35568 */ {(13<<2)|2,{95,67,0}}, +/* 35569 */ {(13<<2)|2,{95,67,0}}, +/* 35570 */ {(13<<2)|2,{95,67,0}}, +/* 35571 */ {(13<<2)|2,{95,67,0}}, +/* 35572 */ {(13<<2)|2,{95,67,0}}, +/* 35573 */ {(13<<2)|2,{95,67,0}}, +/* 35574 */ {(13<<2)|2,{95,67,0}}, +/* 35575 */ {(13<<2)|2,{95,67,0}}, +/* 35576 */ {(13<<2)|2,{95,68,0}}, +/* 35577 */ {(13<<2)|2,{95,68,0}}, +/* 35578 */ {(13<<2)|2,{95,68,0}}, +/* 35579 */ {(13<<2)|2,{95,68,0}}, +/* 35580 */ {(13<<2)|2,{95,68,0}}, +/* 35581 */ {(13<<2)|2,{95,68,0}}, +/* 35582 */ {(13<<2)|2,{95,68,0}}, +/* 35583 */ {(13<<2)|2,{95,68,0}}, +/* 35584 */ {(13<<2)|2,{95,69,0}}, +/* 35585 */ {(13<<2)|2,{95,69,0}}, +/* 35586 */ {(13<<2)|2,{95,69,0}}, +/* 35587 */ {(13<<2)|2,{95,69,0}}, +/* 35588 */ {(13<<2)|2,{95,69,0}}, +/* 35589 */ {(13<<2)|2,{95,69,0}}, +/* 35590 */ {(13<<2)|2,{95,69,0}}, +/* 35591 */ {(13<<2)|2,{95,69,0}}, +/* 35592 */ {(13<<2)|2,{95,70,0}}, +/* 35593 */ {(13<<2)|2,{95,70,0}}, +/* 35594 */ {(13<<2)|2,{95,70,0}}, +/* 35595 */ {(13<<2)|2,{95,70,0}}, +/* 35596 */ {(13<<2)|2,{95,70,0}}, +/* 35597 */ {(13<<2)|2,{95,70,0}}, +/* 35598 */ {(13<<2)|2,{95,70,0}}, +/* 35599 */ {(13<<2)|2,{95,70,0}}, +/* 35600 */ {(13<<2)|2,{95,71,0}}, +/* 35601 */ {(13<<2)|2,{95,71,0}}, +/* 35602 */ {(13<<2)|2,{95,71,0}}, +/* 35603 */ {(13<<2)|2,{95,71,0}}, +/* 35604 */ {(13<<2)|2,{95,71,0}}, +/* 35605 */ {(13<<2)|2,{95,71,0}}, +/* 35606 */ {(13<<2)|2,{95,71,0}}, +/* 35607 */ {(13<<2)|2,{95,71,0}}, +/* 35608 */ {(13<<2)|2,{95,72,0}}, +/* 35609 */ {(13<<2)|2,{95,72,0}}, +/* 35610 */ {(13<<2)|2,{95,72,0}}, +/* 35611 */ {(13<<2)|2,{95,72,0}}, +/* 35612 */ {(13<<2)|2,{95,72,0}}, +/* 35613 */ {(13<<2)|2,{95,72,0}}, +/* 35614 */ {(13<<2)|2,{95,72,0}}, +/* 35615 */ {(13<<2)|2,{95,72,0}}, +/* 35616 */ {(13<<2)|2,{95,73,0}}, +/* 35617 */ {(13<<2)|2,{95,73,0}}, +/* 35618 */ {(13<<2)|2,{95,73,0}}, +/* 35619 */ {(13<<2)|2,{95,73,0}}, +/* 35620 */ {(13<<2)|2,{95,73,0}}, +/* 35621 */ {(13<<2)|2,{95,73,0}}, +/* 35622 */ {(13<<2)|2,{95,73,0}}, +/* 35623 */ {(13<<2)|2,{95,73,0}}, +/* 35624 */ {(13<<2)|2,{95,74,0}}, +/* 35625 */ {(13<<2)|2,{95,74,0}}, +/* 35626 */ {(13<<2)|2,{95,74,0}}, +/* 35627 */ {(13<<2)|2,{95,74,0}}, +/* 35628 */ {(13<<2)|2,{95,74,0}}, +/* 35629 */ {(13<<2)|2,{95,74,0}}, +/* 35630 */ {(13<<2)|2,{95,74,0}}, +/* 35631 */ {(13<<2)|2,{95,74,0}}, +/* 35632 */ {(13<<2)|2,{95,75,0}}, +/* 35633 */ {(13<<2)|2,{95,75,0}}, +/* 35634 */ {(13<<2)|2,{95,75,0}}, +/* 35635 */ {(13<<2)|2,{95,75,0}}, +/* 35636 */ {(13<<2)|2,{95,75,0}}, +/* 35637 */ {(13<<2)|2,{95,75,0}}, +/* 35638 */ {(13<<2)|2,{95,75,0}}, +/* 35639 */ {(13<<2)|2,{95,75,0}}, +/* 35640 */ {(13<<2)|2,{95,76,0}}, +/* 35641 */ {(13<<2)|2,{95,76,0}}, +/* 35642 */ {(13<<2)|2,{95,76,0}}, +/* 35643 */ {(13<<2)|2,{95,76,0}}, +/* 35644 */ {(13<<2)|2,{95,76,0}}, +/* 35645 */ {(13<<2)|2,{95,76,0}}, +/* 35646 */ {(13<<2)|2,{95,76,0}}, +/* 35647 */ {(13<<2)|2,{95,76,0}}, +/* 35648 */ {(13<<2)|2,{95,77,0}}, +/* 35649 */ {(13<<2)|2,{95,77,0}}, +/* 35650 */ {(13<<2)|2,{95,77,0}}, +/* 35651 */ {(13<<2)|2,{95,77,0}}, +/* 35652 */ {(13<<2)|2,{95,77,0}}, +/* 35653 */ {(13<<2)|2,{95,77,0}}, +/* 35654 */ {(13<<2)|2,{95,77,0}}, +/* 35655 */ {(13<<2)|2,{95,77,0}}, +/* 35656 */ {(13<<2)|2,{95,78,0}}, +/* 35657 */ {(13<<2)|2,{95,78,0}}, +/* 35658 */ {(13<<2)|2,{95,78,0}}, +/* 35659 */ {(13<<2)|2,{95,78,0}}, +/* 35660 */ {(13<<2)|2,{95,78,0}}, +/* 35661 */ {(13<<2)|2,{95,78,0}}, +/* 35662 */ {(13<<2)|2,{95,78,0}}, +/* 35663 */ {(13<<2)|2,{95,78,0}}, +/* 35664 */ {(13<<2)|2,{95,79,0}}, +/* 35665 */ {(13<<2)|2,{95,79,0}}, +/* 35666 */ {(13<<2)|2,{95,79,0}}, +/* 35667 */ {(13<<2)|2,{95,79,0}}, +/* 35668 */ {(13<<2)|2,{95,79,0}}, +/* 35669 */ {(13<<2)|2,{95,79,0}}, +/* 35670 */ {(13<<2)|2,{95,79,0}}, +/* 35671 */ {(13<<2)|2,{95,79,0}}, +/* 35672 */ {(13<<2)|2,{95,80,0}}, +/* 35673 */ {(13<<2)|2,{95,80,0}}, +/* 35674 */ {(13<<2)|2,{95,80,0}}, +/* 35675 */ {(13<<2)|2,{95,80,0}}, +/* 35676 */ {(13<<2)|2,{95,80,0}}, +/* 35677 */ {(13<<2)|2,{95,80,0}}, +/* 35678 */ {(13<<2)|2,{95,80,0}}, +/* 35679 */ {(13<<2)|2,{95,80,0}}, +/* 35680 */ {(13<<2)|2,{95,81,0}}, +/* 35681 */ {(13<<2)|2,{95,81,0}}, +/* 35682 */ {(13<<2)|2,{95,81,0}}, +/* 35683 */ {(13<<2)|2,{95,81,0}}, +/* 35684 */ {(13<<2)|2,{95,81,0}}, +/* 35685 */ {(13<<2)|2,{95,81,0}}, +/* 35686 */ {(13<<2)|2,{95,81,0}}, +/* 35687 */ {(13<<2)|2,{95,81,0}}, +/* 35688 */ {(13<<2)|2,{95,82,0}}, +/* 35689 */ {(13<<2)|2,{95,82,0}}, +/* 35690 */ {(13<<2)|2,{95,82,0}}, +/* 35691 */ {(13<<2)|2,{95,82,0}}, +/* 35692 */ {(13<<2)|2,{95,82,0}}, +/* 35693 */ {(13<<2)|2,{95,82,0}}, +/* 35694 */ {(13<<2)|2,{95,82,0}}, +/* 35695 */ {(13<<2)|2,{95,82,0}}, +/* 35696 */ {(13<<2)|2,{95,83,0}}, +/* 35697 */ {(13<<2)|2,{95,83,0}}, +/* 35698 */ {(13<<2)|2,{95,83,0}}, +/* 35699 */ {(13<<2)|2,{95,83,0}}, +/* 35700 */ {(13<<2)|2,{95,83,0}}, +/* 35701 */ {(13<<2)|2,{95,83,0}}, +/* 35702 */ {(13<<2)|2,{95,83,0}}, +/* 35703 */ {(13<<2)|2,{95,83,0}}, +/* 35704 */ {(13<<2)|2,{95,84,0}}, +/* 35705 */ {(13<<2)|2,{95,84,0}}, +/* 35706 */ {(13<<2)|2,{95,84,0}}, +/* 35707 */ {(13<<2)|2,{95,84,0}}, +/* 35708 */ {(13<<2)|2,{95,84,0}}, +/* 35709 */ {(13<<2)|2,{95,84,0}}, +/* 35710 */ {(13<<2)|2,{95,84,0}}, +/* 35711 */ {(13<<2)|2,{95,84,0}}, +/* 35712 */ {(13<<2)|2,{95,85,0}}, +/* 35713 */ {(13<<2)|2,{95,85,0}}, +/* 35714 */ {(13<<2)|2,{95,85,0}}, +/* 35715 */ {(13<<2)|2,{95,85,0}}, +/* 35716 */ {(13<<2)|2,{95,85,0}}, +/* 35717 */ {(13<<2)|2,{95,85,0}}, +/* 35718 */ {(13<<2)|2,{95,85,0}}, +/* 35719 */ {(13<<2)|2,{95,85,0}}, +/* 35720 */ {(13<<2)|2,{95,86,0}}, +/* 35721 */ {(13<<2)|2,{95,86,0}}, +/* 35722 */ {(13<<2)|2,{95,86,0}}, +/* 35723 */ {(13<<2)|2,{95,86,0}}, +/* 35724 */ {(13<<2)|2,{95,86,0}}, +/* 35725 */ {(13<<2)|2,{95,86,0}}, +/* 35726 */ {(13<<2)|2,{95,86,0}}, +/* 35727 */ {(13<<2)|2,{95,86,0}}, +/* 35728 */ {(13<<2)|2,{95,87,0}}, +/* 35729 */ {(13<<2)|2,{95,87,0}}, +/* 35730 */ {(13<<2)|2,{95,87,0}}, +/* 35731 */ {(13<<2)|2,{95,87,0}}, +/* 35732 */ {(13<<2)|2,{95,87,0}}, +/* 35733 */ {(13<<2)|2,{95,87,0}}, +/* 35734 */ {(13<<2)|2,{95,87,0}}, +/* 35735 */ {(13<<2)|2,{95,87,0}}, +/* 35736 */ {(13<<2)|2,{95,89,0}}, +/* 35737 */ {(13<<2)|2,{95,89,0}}, +/* 35738 */ {(13<<2)|2,{95,89,0}}, +/* 35739 */ {(13<<2)|2,{95,89,0}}, +/* 35740 */ {(13<<2)|2,{95,89,0}}, +/* 35741 */ {(13<<2)|2,{95,89,0}}, +/* 35742 */ {(13<<2)|2,{95,89,0}}, +/* 35743 */ {(13<<2)|2,{95,89,0}}, +/* 35744 */ {(13<<2)|2,{95,106,0}}, +/* 35745 */ {(13<<2)|2,{95,106,0}}, +/* 35746 */ {(13<<2)|2,{95,106,0}}, +/* 35747 */ {(13<<2)|2,{95,106,0}}, +/* 35748 */ {(13<<2)|2,{95,106,0}}, +/* 35749 */ {(13<<2)|2,{95,106,0}}, +/* 35750 */ {(13<<2)|2,{95,106,0}}, +/* 35751 */ {(13<<2)|2,{95,106,0}}, +/* 35752 */ {(13<<2)|2,{95,107,0}}, +/* 35753 */ {(13<<2)|2,{95,107,0}}, +/* 35754 */ {(13<<2)|2,{95,107,0}}, +/* 35755 */ {(13<<2)|2,{95,107,0}}, +/* 35756 */ {(13<<2)|2,{95,107,0}}, +/* 35757 */ {(13<<2)|2,{95,107,0}}, +/* 35758 */ {(13<<2)|2,{95,107,0}}, +/* 35759 */ {(13<<2)|2,{95,107,0}}, +/* 35760 */ {(13<<2)|2,{95,113,0}}, +/* 35761 */ {(13<<2)|2,{95,113,0}}, +/* 35762 */ {(13<<2)|2,{95,113,0}}, +/* 35763 */ {(13<<2)|2,{95,113,0}}, +/* 35764 */ {(13<<2)|2,{95,113,0}}, +/* 35765 */ {(13<<2)|2,{95,113,0}}, +/* 35766 */ {(13<<2)|2,{95,113,0}}, +/* 35767 */ {(13<<2)|2,{95,113,0}}, +/* 35768 */ {(13<<2)|2,{95,118,0}}, +/* 35769 */ {(13<<2)|2,{95,118,0}}, +/* 35770 */ {(13<<2)|2,{95,118,0}}, +/* 35771 */ {(13<<2)|2,{95,118,0}}, +/* 35772 */ {(13<<2)|2,{95,118,0}}, +/* 35773 */ {(13<<2)|2,{95,118,0}}, +/* 35774 */ {(13<<2)|2,{95,118,0}}, +/* 35775 */ {(13<<2)|2,{95,118,0}}, +/* 35776 */ {(13<<2)|2,{95,119,0}}, +/* 35777 */ {(13<<2)|2,{95,119,0}}, +/* 35778 */ {(13<<2)|2,{95,119,0}}, +/* 35779 */ {(13<<2)|2,{95,119,0}}, +/* 35780 */ {(13<<2)|2,{95,119,0}}, +/* 35781 */ {(13<<2)|2,{95,119,0}}, +/* 35782 */ {(13<<2)|2,{95,119,0}}, +/* 35783 */ {(13<<2)|2,{95,119,0}}, +/* 35784 */ {(13<<2)|2,{95,120,0}}, +/* 35785 */ {(13<<2)|2,{95,120,0}}, +/* 35786 */ {(13<<2)|2,{95,120,0}}, +/* 35787 */ {(13<<2)|2,{95,120,0}}, +/* 35788 */ {(13<<2)|2,{95,120,0}}, +/* 35789 */ {(13<<2)|2,{95,120,0}}, +/* 35790 */ {(13<<2)|2,{95,120,0}}, +/* 35791 */ {(13<<2)|2,{95,120,0}}, +/* 35792 */ {(13<<2)|2,{95,121,0}}, +/* 35793 */ {(13<<2)|2,{95,121,0}}, +/* 35794 */ {(13<<2)|2,{95,121,0}}, +/* 35795 */ {(13<<2)|2,{95,121,0}}, +/* 35796 */ {(13<<2)|2,{95,121,0}}, +/* 35797 */ {(13<<2)|2,{95,121,0}}, +/* 35798 */ {(13<<2)|2,{95,121,0}}, +/* 35799 */ {(13<<2)|2,{95,121,0}}, +/* 35800 */ {(13<<2)|2,{95,122,0}}, +/* 35801 */ {(13<<2)|2,{95,122,0}}, +/* 35802 */ {(13<<2)|2,{95,122,0}}, +/* 35803 */ {(13<<2)|2,{95,122,0}}, +/* 35804 */ {(13<<2)|2,{95,122,0}}, +/* 35805 */ {(13<<2)|2,{95,122,0}}, +/* 35806 */ {(13<<2)|2,{95,122,0}}, +/* 35807 */ {(13<<2)|2,{95,122,0}}, +/* 35808 */ {(14<<2)|2,{95,38,0}}, +/* 35809 */ {(14<<2)|2,{95,38,0}}, +/* 35810 */ {(14<<2)|2,{95,38,0}}, +/* 35811 */ {(14<<2)|2,{95,38,0}}, +/* 35812 */ {(14<<2)|2,{95,42,0}}, +/* 35813 */ {(14<<2)|2,{95,42,0}}, +/* 35814 */ {(14<<2)|2,{95,42,0}}, +/* 35815 */ {(14<<2)|2,{95,42,0}}, +/* 35816 */ {(14<<2)|2,{95,44,0}}, +/* 35817 */ {(14<<2)|2,{95,44,0}}, +/* 35818 */ {(14<<2)|2,{95,44,0}}, +/* 35819 */ {(14<<2)|2,{95,44,0}}, +/* 35820 */ {(14<<2)|2,{95,59,0}}, +/* 35821 */ {(14<<2)|2,{95,59,0}}, +/* 35822 */ {(14<<2)|2,{95,59,0}}, +/* 35823 */ {(14<<2)|2,{95,59,0}}, +/* 35824 */ {(14<<2)|2,{95,88,0}}, +/* 35825 */ {(14<<2)|2,{95,88,0}}, +/* 35826 */ {(14<<2)|2,{95,88,0}}, +/* 35827 */ {(14<<2)|2,{95,88,0}}, +/* 35828 */ {(14<<2)|2,{95,90,0}}, +/* 35829 */ {(14<<2)|2,{95,90,0}}, +/* 35830 */ {(14<<2)|2,{95,90,0}}, +/* 35831 */ {(14<<2)|2,{95,90,0}}, +/* 35832 */ {(16<<2)|2,{95,33,0}}, +/* 35833 */ {(16<<2)|2,{95,34,0}}, +/* 35834 */ {(16<<2)|2,{95,40,0}}, +/* 35835 */ {(16<<2)|2,{95,41,0}}, +/* 35836 */ {(16<<2)|2,{95,63,0}}, +/* 35837 */ {(6<<2)|1,{95,0,0}}, +/* 35838 */ {(6<<2)|1,{95,0,0}}, +/* 35839 */ {(6<<2)|1,{95,0,0}}, +/* 35840 */ {(16<<2)|3,{98,48,48}}, +/* 35841 */ {(16<<2)|3,{98,48,49}}, +/* 35842 */ {(16<<2)|3,{98,48,50}}, +/* 35843 */ {(16<<2)|3,{98,48,97}}, +/* 35844 */ {(16<<2)|3,{98,48,99}}, +/* 35845 */ {(16<<2)|3,{98,48,101}}, +/* 35846 */ {(16<<2)|3,{98,48,105}}, +/* 35847 */ {(16<<2)|3,{98,48,111}}, +/* 35848 */ {(16<<2)|3,{98,48,115}}, +/* 35849 */ {(16<<2)|3,{98,48,116}}, +/* 35850 */ {(11<<2)|2,{98,48,0}}, +/* 35851 */ {(11<<2)|2,{98,48,0}}, +/* 35852 */ {(11<<2)|2,{98,48,0}}, +/* 35853 */ {(11<<2)|2,{98,48,0}}, +/* 35854 */ {(11<<2)|2,{98,48,0}}, +/* 35855 */ {(11<<2)|2,{98,48,0}}, +/* 35856 */ {(11<<2)|2,{98,48,0}}, +/* 35857 */ {(11<<2)|2,{98,48,0}}, +/* 35858 */ {(11<<2)|2,{98,48,0}}, +/* 35859 */ {(11<<2)|2,{98,48,0}}, +/* 35860 */ {(11<<2)|2,{98,48,0}}, +/* 35861 */ {(11<<2)|2,{98,48,0}}, +/* 35862 */ {(11<<2)|2,{98,48,0}}, +/* 35863 */ {(11<<2)|2,{98,48,0}}, +/* 35864 */ {(11<<2)|2,{98,48,0}}, +/* 35865 */ {(11<<2)|2,{98,48,0}}, +/* 35866 */ {(11<<2)|2,{98,48,0}}, +/* 35867 */ {(11<<2)|2,{98,48,0}}, +/* 35868 */ {(11<<2)|2,{98,48,0}}, +/* 35869 */ {(11<<2)|2,{98,48,0}}, +/* 35870 */ {(11<<2)|2,{98,48,0}}, +/* 35871 */ {(11<<2)|2,{98,48,0}}, +/* 35872 */ {(16<<2)|3,{98,49,48}}, +/* 35873 */ {(16<<2)|3,{98,49,49}}, +/* 35874 */ {(16<<2)|3,{98,49,50}}, +/* 35875 */ {(16<<2)|3,{98,49,97}}, +/* 35876 */ {(16<<2)|3,{98,49,99}}, +/* 35877 */ {(16<<2)|3,{98,49,101}}, +/* 35878 */ {(16<<2)|3,{98,49,105}}, +/* 35879 */ {(16<<2)|3,{98,49,111}}, +/* 35880 */ {(16<<2)|3,{98,49,115}}, +/* 35881 */ {(16<<2)|3,{98,49,116}}, +/* 35882 */ {(11<<2)|2,{98,49,0}}, +/* 35883 */ {(11<<2)|2,{98,49,0}}, +/* 35884 */ {(11<<2)|2,{98,49,0}}, +/* 35885 */ {(11<<2)|2,{98,49,0}}, +/* 35886 */ {(11<<2)|2,{98,49,0}}, +/* 35887 */ {(11<<2)|2,{98,49,0}}, +/* 35888 */ {(11<<2)|2,{98,49,0}}, +/* 35889 */ {(11<<2)|2,{98,49,0}}, +/* 35890 */ {(11<<2)|2,{98,49,0}}, +/* 35891 */ {(11<<2)|2,{98,49,0}}, +/* 35892 */ {(11<<2)|2,{98,49,0}}, +/* 35893 */ {(11<<2)|2,{98,49,0}}, +/* 35894 */ {(11<<2)|2,{98,49,0}}, +/* 35895 */ {(11<<2)|2,{98,49,0}}, +/* 35896 */ {(11<<2)|2,{98,49,0}}, +/* 35897 */ {(11<<2)|2,{98,49,0}}, +/* 35898 */ {(11<<2)|2,{98,49,0}}, +/* 35899 */ {(11<<2)|2,{98,49,0}}, +/* 35900 */ {(11<<2)|2,{98,49,0}}, +/* 35901 */ {(11<<2)|2,{98,49,0}}, +/* 35902 */ {(11<<2)|2,{98,49,0}}, +/* 35903 */ {(11<<2)|2,{98,49,0}}, +/* 35904 */ {(16<<2)|3,{98,50,48}}, +/* 35905 */ {(16<<2)|3,{98,50,49}}, +/* 35906 */ {(16<<2)|3,{98,50,50}}, +/* 35907 */ {(16<<2)|3,{98,50,97}}, +/* 35908 */ {(16<<2)|3,{98,50,99}}, +/* 35909 */ {(16<<2)|3,{98,50,101}}, +/* 35910 */ {(16<<2)|3,{98,50,105}}, +/* 35911 */ {(16<<2)|3,{98,50,111}}, +/* 35912 */ {(16<<2)|3,{98,50,115}}, +/* 35913 */ {(16<<2)|3,{98,50,116}}, +/* 35914 */ {(11<<2)|2,{98,50,0}}, +/* 35915 */ {(11<<2)|2,{98,50,0}}, +/* 35916 */ {(11<<2)|2,{98,50,0}}, +/* 35917 */ {(11<<2)|2,{98,50,0}}, +/* 35918 */ {(11<<2)|2,{98,50,0}}, +/* 35919 */ {(11<<2)|2,{98,50,0}}, +/* 35920 */ {(11<<2)|2,{98,50,0}}, +/* 35921 */ {(11<<2)|2,{98,50,0}}, +/* 35922 */ {(11<<2)|2,{98,50,0}}, +/* 35923 */ {(11<<2)|2,{98,50,0}}, +/* 35924 */ {(11<<2)|2,{98,50,0}}, +/* 35925 */ {(11<<2)|2,{98,50,0}}, +/* 35926 */ {(11<<2)|2,{98,50,0}}, +/* 35927 */ {(11<<2)|2,{98,50,0}}, +/* 35928 */ {(11<<2)|2,{98,50,0}}, +/* 35929 */ {(11<<2)|2,{98,50,0}}, +/* 35930 */ {(11<<2)|2,{98,50,0}}, +/* 35931 */ {(11<<2)|2,{98,50,0}}, +/* 35932 */ {(11<<2)|2,{98,50,0}}, +/* 35933 */ {(11<<2)|2,{98,50,0}}, +/* 35934 */ {(11<<2)|2,{98,50,0}}, +/* 35935 */ {(11<<2)|2,{98,50,0}}, +/* 35936 */ {(16<<2)|3,{98,97,48}}, +/* 35937 */ {(16<<2)|3,{98,97,49}}, +/* 35938 */ {(16<<2)|3,{98,97,50}}, +/* 35939 */ {(16<<2)|3,{98,97,97}}, +/* 35940 */ {(16<<2)|3,{98,97,99}}, +/* 35941 */ {(16<<2)|3,{98,97,101}}, +/* 35942 */ {(16<<2)|3,{98,97,105}}, +/* 35943 */ {(16<<2)|3,{98,97,111}}, +/* 35944 */ {(16<<2)|3,{98,97,115}}, +/* 35945 */ {(16<<2)|3,{98,97,116}}, +/* 35946 */ {(11<<2)|2,{98,97,0}}, +/* 35947 */ {(11<<2)|2,{98,97,0}}, +/* 35948 */ {(11<<2)|2,{98,97,0}}, +/* 35949 */ {(11<<2)|2,{98,97,0}}, +/* 35950 */ {(11<<2)|2,{98,97,0}}, +/* 35951 */ {(11<<2)|2,{98,97,0}}, +/* 35952 */ {(11<<2)|2,{98,97,0}}, +/* 35953 */ {(11<<2)|2,{98,97,0}}, +/* 35954 */ {(11<<2)|2,{98,97,0}}, +/* 35955 */ {(11<<2)|2,{98,97,0}}, +/* 35956 */ {(11<<2)|2,{98,97,0}}, +/* 35957 */ {(11<<2)|2,{98,97,0}}, +/* 35958 */ {(11<<2)|2,{98,97,0}}, +/* 35959 */ {(11<<2)|2,{98,97,0}}, +/* 35960 */ {(11<<2)|2,{98,97,0}}, +/* 35961 */ {(11<<2)|2,{98,97,0}}, +/* 35962 */ {(11<<2)|2,{98,97,0}}, +/* 35963 */ {(11<<2)|2,{98,97,0}}, +/* 35964 */ {(11<<2)|2,{98,97,0}}, +/* 35965 */ {(11<<2)|2,{98,97,0}}, +/* 35966 */ {(11<<2)|2,{98,97,0}}, +/* 35967 */ {(11<<2)|2,{98,97,0}}, +/* 35968 */ {(16<<2)|3,{98,99,48}}, +/* 35969 */ {(16<<2)|3,{98,99,49}}, +/* 35970 */ {(16<<2)|3,{98,99,50}}, +/* 35971 */ {(16<<2)|3,{98,99,97}}, +/* 35972 */ {(16<<2)|3,{98,99,99}}, +/* 35973 */ {(16<<2)|3,{98,99,101}}, +/* 35974 */ {(16<<2)|3,{98,99,105}}, +/* 35975 */ {(16<<2)|3,{98,99,111}}, +/* 35976 */ {(16<<2)|3,{98,99,115}}, +/* 35977 */ {(16<<2)|3,{98,99,116}}, +/* 35978 */ {(11<<2)|2,{98,99,0}}, +/* 35979 */ {(11<<2)|2,{98,99,0}}, +/* 35980 */ {(11<<2)|2,{98,99,0}}, +/* 35981 */ {(11<<2)|2,{98,99,0}}, +/* 35982 */ {(11<<2)|2,{98,99,0}}, +/* 35983 */ {(11<<2)|2,{98,99,0}}, +/* 35984 */ {(11<<2)|2,{98,99,0}}, +/* 35985 */ {(11<<2)|2,{98,99,0}}, +/* 35986 */ {(11<<2)|2,{98,99,0}}, +/* 35987 */ {(11<<2)|2,{98,99,0}}, +/* 35988 */ {(11<<2)|2,{98,99,0}}, +/* 35989 */ {(11<<2)|2,{98,99,0}}, +/* 35990 */ {(11<<2)|2,{98,99,0}}, +/* 35991 */ {(11<<2)|2,{98,99,0}}, +/* 35992 */ {(11<<2)|2,{98,99,0}}, +/* 35993 */ {(11<<2)|2,{98,99,0}}, +/* 35994 */ {(11<<2)|2,{98,99,0}}, +/* 35995 */ {(11<<2)|2,{98,99,0}}, +/* 35996 */ {(11<<2)|2,{98,99,0}}, +/* 35997 */ {(11<<2)|2,{98,99,0}}, +/* 35998 */ {(11<<2)|2,{98,99,0}}, +/* 35999 */ {(11<<2)|2,{98,99,0}}, +/* 36000 */ {(16<<2)|3,{98,101,48}}, +/* 36001 */ {(16<<2)|3,{98,101,49}}, +/* 36002 */ {(16<<2)|3,{98,101,50}}, +/* 36003 */ {(16<<2)|3,{98,101,97}}, +/* 36004 */ {(16<<2)|3,{98,101,99}}, +/* 36005 */ {(16<<2)|3,{98,101,101}}, +/* 36006 */ {(16<<2)|3,{98,101,105}}, +/* 36007 */ {(16<<2)|3,{98,101,111}}, +/* 36008 */ {(16<<2)|3,{98,101,115}}, +/* 36009 */ {(16<<2)|3,{98,101,116}}, +/* 36010 */ {(11<<2)|2,{98,101,0}}, +/* 36011 */ {(11<<2)|2,{98,101,0}}, +/* 36012 */ {(11<<2)|2,{98,101,0}}, +/* 36013 */ {(11<<2)|2,{98,101,0}}, +/* 36014 */ {(11<<2)|2,{98,101,0}}, +/* 36015 */ {(11<<2)|2,{98,101,0}}, +/* 36016 */ {(11<<2)|2,{98,101,0}}, +/* 36017 */ {(11<<2)|2,{98,101,0}}, +/* 36018 */ {(11<<2)|2,{98,101,0}}, +/* 36019 */ {(11<<2)|2,{98,101,0}}, +/* 36020 */ {(11<<2)|2,{98,101,0}}, +/* 36021 */ {(11<<2)|2,{98,101,0}}, +/* 36022 */ {(11<<2)|2,{98,101,0}}, +/* 36023 */ {(11<<2)|2,{98,101,0}}, +/* 36024 */ {(11<<2)|2,{98,101,0}}, +/* 36025 */ {(11<<2)|2,{98,101,0}}, +/* 36026 */ {(11<<2)|2,{98,101,0}}, +/* 36027 */ {(11<<2)|2,{98,101,0}}, +/* 36028 */ {(11<<2)|2,{98,101,0}}, +/* 36029 */ {(11<<2)|2,{98,101,0}}, +/* 36030 */ {(11<<2)|2,{98,101,0}}, +/* 36031 */ {(11<<2)|2,{98,101,0}}, +/* 36032 */ {(16<<2)|3,{98,105,48}}, +/* 36033 */ {(16<<2)|3,{98,105,49}}, +/* 36034 */ {(16<<2)|3,{98,105,50}}, +/* 36035 */ {(16<<2)|3,{98,105,97}}, +/* 36036 */ {(16<<2)|3,{98,105,99}}, +/* 36037 */ {(16<<2)|3,{98,105,101}}, +/* 36038 */ {(16<<2)|3,{98,105,105}}, +/* 36039 */ {(16<<2)|3,{98,105,111}}, +/* 36040 */ {(16<<2)|3,{98,105,115}}, +/* 36041 */ {(16<<2)|3,{98,105,116}}, +/* 36042 */ {(11<<2)|2,{98,105,0}}, +/* 36043 */ {(11<<2)|2,{98,105,0}}, +/* 36044 */ {(11<<2)|2,{98,105,0}}, +/* 36045 */ {(11<<2)|2,{98,105,0}}, +/* 36046 */ {(11<<2)|2,{98,105,0}}, +/* 36047 */ {(11<<2)|2,{98,105,0}}, +/* 36048 */ {(11<<2)|2,{98,105,0}}, +/* 36049 */ {(11<<2)|2,{98,105,0}}, +/* 36050 */ {(11<<2)|2,{98,105,0}}, +/* 36051 */ {(11<<2)|2,{98,105,0}}, +/* 36052 */ {(11<<2)|2,{98,105,0}}, +/* 36053 */ {(11<<2)|2,{98,105,0}}, +/* 36054 */ {(11<<2)|2,{98,105,0}}, +/* 36055 */ {(11<<2)|2,{98,105,0}}, +/* 36056 */ {(11<<2)|2,{98,105,0}}, +/* 36057 */ {(11<<2)|2,{98,105,0}}, +/* 36058 */ {(11<<2)|2,{98,105,0}}, +/* 36059 */ {(11<<2)|2,{98,105,0}}, +/* 36060 */ {(11<<2)|2,{98,105,0}}, +/* 36061 */ {(11<<2)|2,{98,105,0}}, +/* 36062 */ {(11<<2)|2,{98,105,0}}, +/* 36063 */ {(11<<2)|2,{98,105,0}}, +/* 36064 */ {(16<<2)|3,{98,111,48}}, +/* 36065 */ {(16<<2)|3,{98,111,49}}, +/* 36066 */ {(16<<2)|3,{98,111,50}}, +/* 36067 */ {(16<<2)|3,{98,111,97}}, +/* 36068 */ {(16<<2)|3,{98,111,99}}, +/* 36069 */ {(16<<2)|3,{98,111,101}}, +/* 36070 */ {(16<<2)|3,{98,111,105}}, +/* 36071 */ {(16<<2)|3,{98,111,111}}, +/* 36072 */ {(16<<2)|3,{98,111,115}}, +/* 36073 */ {(16<<2)|3,{98,111,116}}, +/* 36074 */ {(11<<2)|2,{98,111,0}}, +/* 36075 */ {(11<<2)|2,{98,111,0}}, +/* 36076 */ {(11<<2)|2,{98,111,0}}, +/* 36077 */ {(11<<2)|2,{98,111,0}}, +/* 36078 */ {(11<<2)|2,{98,111,0}}, +/* 36079 */ {(11<<2)|2,{98,111,0}}, +/* 36080 */ {(11<<2)|2,{98,111,0}}, +/* 36081 */ {(11<<2)|2,{98,111,0}}, +/* 36082 */ {(11<<2)|2,{98,111,0}}, +/* 36083 */ {(11<<2)|2,{98,111,0}}, +/* 36084 */ {(11<<2)|2,{98,111,0}}, +/* 36085 */ {(11<<2)|2,{98,111,0}}, +/* 36086 */ {(11<<2)|2,{98,111,0}}, +/* 36087 */ {(11<<2)|2,{98,111,0}}, +/* 36088 */ {(11<<2)|2,{98,111,0}}, +/* 36089 */ {(11<<2)|2,{98,111,0}}, +/* 36090 */ {(11<<2)|2,{98,111,0}}, +/* 36091 */ {(11<<2)|2,{98,111,0}}, +/* 36092 */ {(11<<2)|2,{98,111,0}}, +/* 36093 */ {(11<<2)|2,{98,111,0}}, +/* 36094 */ {(11<<2)|2,{98,111,0}}, +/* 36095 */ {(11<<2)|2,{98,111,0}}, +/* 36096 */ {(16<<2)|3,{98,115,48}}, +/* 36097 */ {(16<<2)|3,{98,115,49}}, +/* 36098 */ {(16<<2)|3,{98,115,50}}, +/* 36099 */ {(16<<2)|3,{98,115,97}}, +/* 36100 */ {(16<<2)|3,{98,115,99}}, +/* 36101 */ {(16<<2)|3,{98,115,101}}, +/* 36102 */ {(16<<2)|3,{98,115,105}}, +/* 36103 */ {(16<<2)|3,{98,115,111}}, +/* 36104 */ {(16<<2)|3,{98,115,115}}, +/* 36105 */ {(16<<2)|3,{98,115,116}}, +/* 36106 */ {(11<<2)|2,{98,115,0}}, +/* 36107 */ {(11<<2)|2,{98,115,0}}, +/* 36108 */ {(11<<2)|2,{98,115,0}}, +/* 36109 */ {(11<<2)|2,{98,115,0}}, +/* 36110 */ {(11<<2)|2,{98,115,0}}, +/* 36111 */ {(11<<2)|2,{98,115,0}}, +/* 36112 */ {(11<<2)|2,{98,115,0}}, +/* 36113 */ {(11<<2)|2,{98,115,0}}, +/* 36114 */ {(11<<2)|2,{98,115,0}}, +/* 36115 */ {(11<<2)|2,{98,115,0}}, +/* 36116 */ {(11<<2)|2,{98,115,0}}, +/* 36117 */ {(11<<2)|2,{98,115,0}}, +/* 36118 */ {(11<<2)|2,{98,115,0}}, +/* 36119 */ {(11<<2)|2,{98,115,0}}, +/* 36120 */ {(11<<2)|2,{98,115,0}}, +/* 36121 */ {(11<<2)|2,{98,115,0}}, +/* 36122 */ {(11<<2)|2,{98,115,0}}, +/* 36123 */ {(11<<2)|2,{98,115,0}}, +/* 36124 */ {(11<<2)|2,{98,115,0}}, +/* 36125 */ {(11<<2)|2,{98,115,0}}, +/* 36126 */ {(11<<2)|2,{98,115,0}}, +/* 36127 */ {(11<<2)|2,{98,115,0}}, +/* 36128 */ {(16<<2)|3,{98,116,48}}, +/* 36129 */ {(16<<2)|3,{98,116,49}}, +/* 36130 */ {(16<<2)|3,{98,116,50}}, +/* 36131 */ {(16<<2)|3,{98,116,97}}, +/* 36132 */ {(16<<2)|3,{98,116,99}}, +/* 36133 */ {(16<<2)|3,{98,116,101}}, +/* 36134 */ {(16<<2)|3,{98,116,105}}, +/* 36135 */ {(16<<2)|3,{98,116,111}}, +/* 36136 */ {(16<<2)|3,{98,116,115}}, +/* 36137 */ {(16<<2)|3,{98,116,116}}, +/* 36138 */ {(11<<2)|2,{98,116,0}}, +/* 36139 */ {(11<<2)|2,{98,116,0}}, +/* 36140 */ {(11<<2)|2,{98,116,0}}, +/* 36141 */ {(11<<2)|2,{98,116,0}}, +/* 36142 */ {(11<<2)|2,{98,116,0}}, +/* 36143 */ {(11<<2)|2,{98,116,0}}, +/* 36144 */ {(11<<2)|2,{98,116,0}}, +/* 36145 */ {(11<<2)|2,{98,116,0}}, +/* 36146 */ {(11<<2)|2,{98,116,0}}, +/* 36147 */ {(11<<2)|2,{98,116,0}}, +/* 36148 */ {(11<<2)|2,{98,116,0}}, +/* 36149 */ {(11<<2)|2,{98,116,0}}, +/* 36150 */ {(11<<2)|2,{98,116,0}}, +/* 36151 */ {(11<<2)|2,{98,116,0}}, +/* 36152 */ {(11<<2)|2,{98,116,0}}, +/* 36153 */ {(11<<2)|2,{98,116,0}}, +/* 36154 */ {(11<<2)|2,{98,116,0}}, +/* 36155 */ {(11<<2)|2,{98,116,0}}, +/* 36156 */ {(11<<2)|2,{98,116,0}}, +/* 36157 */ {(11<<2)|2,{98,116,0}}, +/* 36158 */ {(11<<2)|2,{98,116,0}}, +/* 36159 */ {(11<<2)|2,{98,116,0}}, +/* 36160 */ {(12<<2)|2,{98,32,0}}, +/* 36161 */ {(12<<2)|2,{98,32,0}}, +/* 36162 */ {(12<<2)|2,{98,32,0}}, +/* 36163 */ {(12<<2)|2,{98,32,0}}, +/* 36164 */ {(12<<2)|2,{98,32,0}}, +/* 36165 */ {(12<<2)|2,{98,32,0}}, +/* 36166 */ {(12<<2)|2,{98,32,0}}, +/* 36167 */ {(12<<2)|2,{98,32,0}}, +/* 36168 */ {(12<<2)|2,{98,32,0}}, +/* 36169 */ {(12<<2)|2,{98,32,0}}, +/* 36170 */ {(12<<2)|2,{98,32,0}}, +/* 36171 */ {(12<<2)|2,{98,32,0}}, +/* 36172 */ {(12<<2)|2,{98,32,0}}, +/* 36173 */ {(12<<2)|2,{98,32,0}}, +/* 36174 */ {(12<<2)|2,{98,32,0}}, +/* 36175 */ {(12<<2)|2,{98,32,0}}, +/* 36176 */ {(12<<2)|2,{98,37,0}}, +/* 36177 */ {(12<<2)|2,{98,37,0}}, +/* 36178 */ {(12<<2)|2,{98,37,0}}, +/* 36179 */ {(12<<2)|2,{98,37,0}}, +/* 36180 */ {(12<<2)|2,{98,37,0}}, +/* 36181 */ {(12<<2)|2,{98,37,0}}, +/* 36182 */ {(12<<2)|2,{98,37,0}}, +/* 36183 */ {(12<<2)|2,{98,37,0}}, +/* 36184 */ {(12<<2)|2,{98,37,0}}, +/* 36185 */ {(12<<2)|2,{98,37,0}}, +/* 36186 */ {(12<<2)|2,{98,37,0}}, +/* 36187 */ {(12<<2)|2,{98,37,0}}, +/* 36188 */ {(12<<2)|2,{98,37,0}}, +/* 36189 */ {(12<<2)|2,{98,37,0}}, +/* 36190 */ {(12<<2)|2,{98,37,0}}, +/* 36191 */ {(12<<2)|2,{98,37,0}}, +/* 36192 */ {(12<<2)|2,{98,45,0}}, +/* 36193 */ {(12<<2)|2,{98,45,0}}, +/* 36194 */ {(12<<2)|2,{98,45,0}}, +/* 36195 */ {(12<<2)|2,{98,45,0}}, +/* 36196 */ {(12<<2)|2,{98,45,0}}, +/* 36197 */ {(12<<2)|2,{98,45,0}}, +/* 36198 */ {(12<<2)|2,{98,45,0}}, +/* 36199 */ {(12<<2)|2,{98,45,0}}, +/* 36200 */ {(12<<2)|2,{98,45,0}}, +/* 36201 */ {(12<<2)|2,{98,45,0}}, +/* 36202 */ {(12<<2)|2,{98,45,0}}, +/* 36203 */ {(12<<2)|2,{98,45,0}}, +/* 36204 */ {(12<<2)|2,{98,45,0}}, +/* 36205 */ {(12<<2)|2,{98,45,0}}, +/* 36206 */ {(12<<2)|2,{98,45,0}}, +/* 36207 */ {(12<<2)|2,{98,45,0}}, +/* 36208 */ {(12<<2)|2,{98,46,0}}, +/* 36209 */ {(12<<2)|2,{98,46,0}}, +/* 36210 */ {(12<<2)|2,{98,46,0}}, +/* 36211 */ {(12<<2)|2,{98,46,0}}, +/* 36212 */ {(12<<2)|2,{98,46,0}}, +/* 36213 */ {(12<<2)|2,{98,46,0}}, +/* 36214 */ {(12<<2)|2,{98,46,0}}, +/* 36215 */ {(12<<2)|2,{98,46,0}}, +/* 36216 */ {(12<<2)|2,{98,46,0}}, +/* 36217 */ {(12<<2)|2,{98,46,0}}, +/* 36218 */ {(12<<2)|2,{98,46,0}}, +/* 36219 */ {(12<<2)|2,{98,46,0}}, +/* 36220 */ {(12<<2)|2,{98,46,0}}, +/* 36221 */ {(12<<2)|2,{98,46,0}}, +/* 36222 */ {(12<<2)|2,{98,46,0}}, +/* 36223 */ {(12<<2)|2,{98,46,0}}, +/* 36224 */ {(12<<2)|2,{98,47,0}}, +/* 36225 */ {(12<<2)|2,{98,47,0}}, +/* 36226 */ {(12<<2)|2,{98,47,0}}, +/* 36227 */ {(12<<2)|2,{98,47,0}}, +/* 36228 */ {(12<<2)|2,{98,47,0}}, +/* 36229 */ {(12<<2)|2,{98,47,0}}, +/* 36230 */ {(12<<2)|2,{98,47,0}}, +/* 36231 */ {(12<<2)|2,{98,47,0}}, +/* 36232 */ {(12<<2)|2,{98,47,0}}, +/* 36233 */ {(12<<2)|2,{98,47,0}}, +/* 36234 */ {(12<<2)|2,{98,47,0}}, +/* 36235 */ {(12<<2)|2,{98,47,0}}, +/* 36236 */ {(12<<2)|2,{98,47,0}}, +/* 36237 */ {(12<<2)|2,{98,47,0}}, +/* 36238 */ {(12<<2)|2,{98,47,0}}, +/* 36239 */ {(12<<2)|2,{98,47,0}}, +/* 36240 */ {(12<<2)|2,{98,51,0}}, +/* 36241 */ {(12<<2)|2,{98,51,0}}, +/* 36242 */ {(12<<2)|2,{98,51,0}}, +/* 36243 */ {(12<<2)|2,{98,51,0}}, +/* 36244 */ {(12<<2)|2,{98,51,0}}, +/* 36245 */ {(12<<2)|2,{98,51,0}}, +/* 36246 */ {(12<<2)|2,{98,51,0}}, +/* 36247 */ {(12<<2)|2,{98,51,0}}, +/* 36248 */ {(12<<2)|2,{98,51,0}}, +/* 36249 */ {(12<<2)|2,{98,51,0}}, +/* 36250 */ {(12<<2)|2,{98,51,0}}, +/* 36251 */ {(12<<2)|2,{98,51,0}}, +/* 36252 */ {(12<<2)|2,{98,51,0}}, +/* 36253 */ {(12<<2)|2,{98,51,0}}, +/* 36254 */ {(12<<2)|2,{98,51,0}}, +/* 36255 */ {(12<<2)|2,{98,51,0}}, +/* 36256 */ {(12<<2)|2,{98,52,0}}, +/* 36257 */ {(12<<2)|2,{98,52,0}}, +/* 36258 */ {(12<<2)|2,{98,52,0}}, +/* 36259 */ {(12<<2)|2,{98,52,0}}, +/* 36260 */ {(12<<2)|2,{98,52,0}}, +/* 36261 */ {(12<<2)|2,{98,52,0}}, +/* 36262 */ {(12<<2)|2,{98,52,0}}, +/* 36263 */ {(12<<2)|2,{98,52,0}}, +/* 36264 */ {(12<<2)|2,{98,52,0}}, +/* 36265 */ {(12<<2)|2,{98,52,0}}, +/* 36266 */ {(12<<2)|2,{98,52,0}}, +/* 36267 */ {(12<<2)|2,{98,52,0}}, +/* 36268 */ {(12<<2)|2,{98,52,0}}, +/* 36269 */ {(12<<2)|2,{98,52,0}}, +/* 36270 */ {(12<<2)|2,{98,52,0}}, +/* 36271 */ {(12<<2)|2,{98,52,0}}, +/* 36272 */ {(12<<2)|2,{98,53,0}}, +/* 36273 */ {(12<<2)|2,{98,53,0}}, +/* 36274 */ {(12<<2)|2,{98,53,0}}, +/* 36275 */ {(12<<2)|2,{98,53,0}}, +/* 36276 */ {(12<<2)|2,{98,53,0}}, +/* 36277 */ {(12<<2)|2,{98,53,0}}, +/* 36278 */ {(12<<2)|2,{98,53,0}}, +/* 36279 */ {(12<<2)|2,{98,53,0}}, +/* 36280 */ {(12<<2)|2,{98,53,0}}, +/* 36281 */ {(12<<2)|2,{98,53,0}}, +/* 36282 */ {(12<<2)|2,{98,53,0}}, +/* 36283 */ {(12<<2)|2,{98,53,0}}, +/* 36284 */ {(12<<2)|2,{98,53,0}}, +/* 36285 */ {(12<<2)|2,{98,53,0}}, +/* 36286 */ {(12<<2)|2,{98,53,0}}, +/* 36287 */ {(12<<2)|2,{98,53,0}}, +/* 36288 */ {(12<<2)|2,{98,54,0}}, +/* 36289 */ {(12<<2)|2,{98,54,0}}, +/* 36290 */ {(12<<2)|2,{98,54,0}}, +/* 36291 */ {(12<<2)|2,{98,54,0}}, +/* 36292 */ {(12<<2)|2,{98,54,0}}, +/* 36293 */ {(12<<2)|2,{98,54,0}}, +/* 36294 */ {(12<<2)|2,{98,54,0}}, +/* 36295 */ {(12<<2)|2,{98,54,0}}, +/* 36296 */ {(12<<2)|2,{98,54,0}}, +/* 36297 */ {(12<<2)|2,{98,54,0}}, +/* 36298 */ {(12<<2)|2,{98,54,0}}, +/* 36299 */ {(12<<2)|2,{98,54,0}}, +/* 36300 */ {(12<<2)|2,{98,54,0}}, +/* 36301 */ {(12<<2)|2,{98,54,0}}, +/* 36302 */ {(12<<2)|2,{98,54,0}}, +/* 36303 */ {(12<<2)|2,{98,54,0}}, +/* 36304 */ {(12<<2)|2,{98,55,0}}, +/* 36305 */ {(12<<2)|2,{98,55,0}}, +/* 36306 */ {(12<<2)|2,{98,55,0}}, +/* 36307 */ {(12<<2)|2,{98,55,0}}, +/* 36308 */ {(12<<2)|2,{98,55,0}}, +/* 36309 */ {(12<<2)|2,{98,55,0}}, +/* 36310 */ {(12<<2)|2,{98,55,0}}, +/* 36311 */ {(12<<2)|2,{98,55,0}}, +/* 36312 */ {(12<<2)|2,{98,55,0}}, +/* 36313 */ {(12<<2)|2,{98,55,0}}, +/* 36314 */ {(12<<2)|2,{98,55,0}}, +/* 36315 */ {(12<<2)|2,{98,55,0}}, +/* 36316 */ {(12<<2)|2,{98,55,0}}, +/* 36317 */ {(12<<2)|2,{98,55,0}}, +/* 36318 */ {(12<<2)|2,{98,55,0}}, +/* 36319 */ {(12<<2)|2,{98,55,0}}, +/* 36320 */ {(12<<2)|2,{98,56,0}}, +/* 36321 */ {(12<<2)|2,{98,56,0}}, +/* 36322 */ {(12<<2)|2,{98,56,0}}, +/* 36323 */ {(12<<2)|2,{98,56,0}}, +/* 36324 */ {(12<<2)|2,{98,56,0}}, +/* 36325 */ {(12<<2)|2,{98,56,0}}, +/* 36326 */ {(12<<2)|2,{98,56,0}}, +/* 36327 */ {(12<<2)|2,{98,56,0}}, +/* 36328 */ {(12<<2)|2,{98,56,0}}, +/* 36329 */ {(12<<2)|2,{98,56,0}}, +/* 36330 */ {(12<<2)|2,{98,56,0}}, +/* 36331 */ {(12<<2)|2,{98,56,0}}, +/* 36332 */ {(12<<2)|2,{98,56,0}}, +/* 36333 */ {(12<<2)|2,{98,56,0}}, +/* 36334 */ {(12<<2)|2,{98,56,0}}, +/* 36335 */ {(12<<2)|2,{98,56,0}}, +/* 36336 */ {(12<<2)|2,{98,57,0}}, +/* 36337 */ {(12<<2)|2,{98,57,0}}, +/* 36338 */ {(12<<2)|2,{98,57,0}}, +/* 36339 */ {(12<<2)|2,{98,57,0}}, +/* 36340 */ {(12<<2)|2,{98,57,0}}, +/* 36341 */ {(12<<2)|2,{98,57,0}}, +/* 36342 */ {(12<<2)|2,{98,57,0}}, +/* 36343 */ {(12<<2)|2,{98,57,0}}, +/* 36344 */ {(12<<2)|2,{98,57,0}}, +/* 36345 */ {(12<<2)|2,{98,57,0}}, +/* 36346 */ {(12<<2)|2,{98,57,0}}, +/* 36347 */ {(12<<2)|2,{98,57,0}}, +/* 36348 */ {(12<<2)|2,{98,57,0}}, +/* 36349 */ {(12<<2)|2,{98,57,0}}, +/* 36350 */ {(12<<2)|2,{98,57,0}}, +/* 36351 */ {(12<<2)|2,{98,57,0}}, +/* 36352 */ {(12<<2)|2,{98,61,0}}, +/* 36353 */ {(12<<2)|2,{98,61,0}}, +/* 36354 */ {(12<<2)|2,{98,61,0}}, +/* 36355 */ {(12<<2)|2,{98,61,0}}, +/* 36356 */ {(12<<2)|2,{98,61,0}}, +/* 36357 */ {(12<<2)|2,{98,61,0}}, +/* 36358 */ {(12<<2)|2,{98,61,0}}, +/* 36359 */ {(12<<2)|2,{98,61,0}}, +/* 36360 */ {(12<<2)|2,{98,61,0}}, +/* 36361 */ {(12<<2)|2,{98,61,0}}, +/* 36362 */ {(12<<2)|2,{98,61,0}}, +/* 36363 */ {(12<<2)|2,{98,61,0}}, +/* 36364 */ {(12<<2)|2,{98,61,0}}, +/* 36365 */ {(12<<2)|2,{98,61,0}}, +/* 36366 */ {(12<<2)|2,{98,61,0}}, +/* 36367 */ {(12<<2)|2,{98,61,0}}, +/* 36368 */ {(12<<2)|2,{98,65,0}}, +/* 36369 */ {(12<<2)|2,{98,65,0}}, +/* 36370 */ {(12<<2)|2,{98,65,0}}, +/* 36371 */ {(12<<2)|2,{98,65,0}}, +/* 36372 */ {(12<<2)|2,{98,65,0}}, +/* 36373 */ {(12<<2)|2,{98,65,0}}, +/* 36374 */ {(12<<2)|2,{98,65,0}}, +/* 36375 */ {(12<<2)|2,{98,65,0}}, +/* 36376 */ {(12<<2)|2,{98,65,0}}, +/* 36377 */ {(12<<2)|2,{98,65,0}}, +/* 36378 */ {(12<<2)|2,{98,65,0}}, +/* 36379 */ {(12<<2)|2,{98,65,0}}, +/* 36380 */ {(12<<2)|2,{98,65,0}}, +/* 36381 */ {(12<<2)|2,{98,65,0}}, +/* 36382 */ {(12<<2)|2,{98,65,0}}, +/* 36383 */ {(12<<2)|2,{98,65,0}}, +/* 36384 */ {(12<<2)|2,{98,95,0}}, +/* 36385 */ {(12<<2)|2,{98,95,0}}, +/* 36386 */ {(12<<2)|2,{98,95,0}}, +/* 36387 */ {(12<<2)|2,{98,95,0}}, +/* 36388 */ {(12<<2)|2,{98,95,0}}, +/* 36389 */ {(12<<2)|2,{98,95,0}}, +/* 36390 */ {(12<<2)|2,{98,95,0}}, +/* 36391 */ {(12<<2)|2,{98,95,0}}, +/* 36392 */ {(12<<2)|2,{98,95,0}}, +/* 36393 */ {(12<<2)|2,{98,95,0}}, +/* 36394 */ {(12<<2)|2,{98,95,0}}, +/* 36395 */ {(12<<2)|2,{98,95,0}}, +/* 36396 */ {(12<<2)|2,{98,95,0}}, +/* 36397 */ {(12<<2)|2,{98,95,0}}, +/* 36398 */ {(12<<2)|2,{98,95,0}}, +/* 36399 */ {(12<<2)|2,{98,95,0}}, +/* 36400 */ {(12<<2)|2,{98,98,0}}, +/* 36401 */ {(12<<2)|2,{98,98,0}}, +/* 36402 */ {(12<<2)|2,{98,98,0}}, +/* 36403 */ {(12<<2)|2,{98,98,0}}, +/* 36404 */ {(12<<2)|2,{98,98,0}}, +/* 36405 */ {(12<<2)|2,{98,98,0}}, +/* 36406 */ {(12<<2)|2,{98,98,0}}, +/* 36407 */ {(12<<2)|2,{98,98,0}}, +/* 36408 */ {(12<<2)|2,{98,98,0}}, +/* 36409 */ {(12<<2)|2,{98,98,0}}, +/* 36410 */ {(12<<2)|2,{98,98,0}}, +/* 36411 */ {(12<<2)|2,{98,98,0}}, +/* 36412 */ {(12<<2)|2,{98,98,0}}, +/* 36413 */ {(12<<2)|2,{98,98,0}}, +/* 36414 */ {(12<<2)|2,{98,98,0}}, +/* 36415 */ {(12<<2)|2,{98,98,0}}, +/* 36416 */ {(12<<2)|2,{98,100,0}}, +/* 36417 */ {(12<<2)|2,{98,100,0}}, +/* 36418 */ {(12<<2)|2,{98,100,0}}, +/* 36419 */ {(12<<2)|2,{98,100,0}}, +/* 36420 */ {(12<<2)|2,{98,100,0}}, +/* 36421 */ {(12<<2)|2,{98,100,0}}, +/* 36422 */ {(12<<2)|2,{98,100,0}}, +/* 36423 */ {(12<<2)|2,{98,100,0}}, +/* 36424 */ {(12<<2)|2,{98,100,0}}, +/* 36425 */ {(12<<2)|2,{98,100,0}}, +/* 36426 */ {(12<<2)|2,{98,100,0}}, +/* 36427 */ {(12<<2)|2,{98,100,0}}, +/* 36428 */ {(12<<2)|2,{98,100,0}}, +/* 36429 */ {(12<<2)|2,{98,100,0}}, +/* 36430 */ {(12<<2)|2,{98,100,0}}, +/* 36431 */ {(12<<2)|2,{98,100,0}}, +/* 36432 */ {(12<<2)|2,{98,102,0}}, +/* 36433 */ {(12<<2)|2,{98,102,0}}, +/* 36434 */ {(12<<2)|2,{98,102,0}}, +/* 36435 */ {(12<<2)|2,{98,102,0}}, +/* 36436 */ {(12<<2)|2,{98,102,0}}, +/* 36437 */ {(12<<2)|2,{98,102,0}}, +/* 36438 */ {(12<<2)|2,{98,102,0}}, +/* 36439 */ {(12<<2)|2,{98,102,0}}, +/* 36440 */ {(12<<2)|2,{98,102,0}}, +/* 36441 */ {(12<<2)|2,{98,102,0}}, +/* 36442 */ {(12<<2)|2,{98,102,0}}, +/* 36443 */ {(12<<2)|2,{98,102,0}}, +/* 36444 */ {(12<<2)|2,{98,102,0}}, +/* 36445 */ {(12<<2)|2,{98,102,0}}, +/* 36446 */ {(12<<2)|2,{98,102,0}}, +/* 36447 */ {(12<<2)|2,{98,102,0}}, +/* 36448 */ {(12<<2)|2,{98,103,0}}, +/* 36449 */ {(12<<2)|2,{98,103,0}}, +/* 36450 */ {(12<<2)|2,{98,103,0}}, +/* 36451 */ {(12<<2)|2,{98,103,0}}, +/* 36452 */ {(12<<2)|2,{98,103,0}}, +/* 36453 */ {(12<<2)|2,{98,103,0}}, +/* 36454 */ {(12<<2)|2,{98,103,0}}, +/* 36455 */ {(12<<2)|2,{98,103,0}}, +/* 36456 */ {(12<<2)|2,{98,103,0}}, +/* 36457 */ {(12<<2)|2,{98,103,0}}, +/* 36458 */ {(12<<2)|2,{98,103,0}}, +/* 36459 */ {(12<<2)|2,{98,103,0}}, +/* 36460 */ {(12<<2)|2,{98,103,0}}, +/* 36461 */ {(12<<2)|2,{98,103,0}}, +/* 36462 */ {(12<<2)|2,{98,103,0}}, +/* 36463 */ {(12<<2)|2,{98,103,0}}, +/* 36464 */ {(12<<2)|2,{98,104,0}}, +/* 36465 */ {(12<<2)|2,{98,104,0}}, +/* 36466 */ {(12<<2)|2,{98,104,0}}, +/* 36467 */ {(12<<2)|2,{98,104,0}}, +/* 36468 */ {(12<<2)|2,{98,104,0}}, +/* 36469 */ {(12<<2)|2,{98,104,0}}, +/* 36470 */ {(12<<2)|2,{98,104,0}}, +/* 36471 */ {(12<<2)|2,{98,104,0}}, +/* 36472 */ {(12<<2)|2,{98,104,0}}, +/* 36473 */ {(12<<2)|2,{98,104,0}}, +/* 36474 */ {(12<<2)|2,{98,104,0}}, +/* 36475 */ {(12<<2)|2,{98,104,0}}, +/* 36476 */ {(12<<2)|2,{98,104,0}}, +/* 36477 */ {(12<<2)|2,{98,104,0}}, +/* 36478 */ {(12<<2)|2,{98,104,0}}, +/* 36479 */ {(12<<2)|2,{98,104,0}}, +/* 36480 */ {(12<<2)|2,{98,108,0}}, +/* 36481 */ {(12<<2)|2,{98,108,0}}, +/* 36482 */ {(12<<2)|2,{98,108,0}}, +/* 36483 */ {(12<<2)|2,{98,108,0}}, +/* 36484 */ {(12<<2)|2,{98,108,0}}, +/* 36485 */ {(12<<2)|2,{98,108,0}}, +/* 36486 */ {(12<<2)|2,{98,108,0}}, +/* 36487 */ {(12<<2)|2,{98,108,0}}, +/* 36488 */ {(12<<2)|2,{98,108,0}}, +/* 36489 */ {(12<<2)|2,{98,108,0}}, +/* 36490 */ {(12<<2)|2,{98,108,0}}, +/* 36491 */ {(12<<2)|2,{98,108,0}}, +/* 36492 */ {(12<<2)|2,{98,108,0}}, +/* 36493 */ {(12<<2)|2,{98,108,0}}, +/* 36494 */ {(12<<2)|2,{98,108,0}}, +/* 36495 */ {(12<<2)|2,{98,108,0}}, +/* 36496 */ {(12<<2)|2,{98,109,0}}, +/* 36497 */ {(12<<2)|2,{98,109,0}}, +/* 36498 */ {(12<<2)|2,{98,109,0}}, +/* 36499 */ {(12<<2)|2,{98,109,0}}, +/* 36500 */ {(12<<2)|2,{98,109,0}}, +/* 36501 */ {(12<<2)|2,{98,109,0}}, +/* 36502 */ {(12<<2)|2,{98,109,0}}, +/* 36503 */ {(12<<2)|2,{98,109,0}}, +/* 36504 */ {(12<<2)|2,{98,109,0}}, +/* 36505 */ {(12<<2)|2,{98,109,0}}, +/* 36506 */ {(12<<2)|2,{98,109,0}}, +/* 36507 */ {(12<<2)|2,{98,109,0}}, +/* 36508 */ {(12<<2)|2,{98,109,0}}, +/* 36509 */ {(12<<2)|2,{98,109,0}}, +/* 36510 */ {(12<<2)|2,{98,109,0}}, +/* 36511 */ {(12<<2)|2,{98,109,0}}, +/* 36512 */ {(12<<2)|2,{98,110,0}}, +/* 36513 */ {(12<<2)|2,{98,110,0}}, +/* 36514 */ {(12<<2)|2,{98,110,0}}, +/* 36515 */ {(12<<2)|2,{98,110,0}}, +/* 36516 */ {(12<<2)|2,{98,110,0}}, +/* 36517 */ {(12<<2)|2,{98,110,0}}, +/* 36518 */ {(12<<2)|2,{98,110,0}}, +/* 36519 */ {(12<<2)|2,{98,110,0}}, +/* 36520 */ {(12<<2)|2,{98,110,0}}, +/* 36521 */ {(12<<2)|2,{98,110,0}}, +/* 36522 */ {(12<<2)|2,{98,110,0}}, +/* 36523 */ {(12<<2)|2,{98,110,0}}, +/* 36524 */ {(12<<2)|2,{98,110,0}}, +/* 36525 */ {(12<<2)|2,{98,110,0}}, +/* 36526 */ {(12<<2)|2,{98,110,0}}, +/* 36527 */ {(12<<2)|2,{98,110,0}}, +/* 36528 */ {(12<<2)|2,{98,112,0}}, +/* 36529 */ {(12<<2)|2,{98,112,0}}, +/* 36530 */ {(12<<2)|2,{98,112,0}}, +/* 36531 */ {(12<<2)|2,{98,112,0}}, +/* 36532 */ {(12<<2)|2,{98,112,0}}, +/* 36533 */ {(12<<2)|2,{98,112,0}}, +/* 36534 */ {(12<<2)|2,{98,112,0}}, +/* 36535 */ {(12<<2)|2,{98,112,0}}, +/* 36536 */ {(12<<2)|2,{98,112,0}}, +/* 36537 */ {(12<<2)|2,{98,112,0}}, +/* 36538 */ {(12<<2)|2,{98,112,0}}, +/* 36539 */ {(12<<2)|2,{98,112,0}}, +/* 36540 */ {(12<<2)|2,{98,112,0}}, +/* 36541 */ {(12<<2)|2,{98,112,0}}, +/* 36542 */ {(12<<2)|2,{98,112,0}}, +/* 36543 */ {(12<<2)|2,{98,112,0}}, +/* 36544 */ {(12<<2)|2,{98,114,0}}, +/* 36545 */ {(12<<2)|2,{98,114,0}}, +/* 36546 */ {(12<<2)|2,{98,114,0}}, +/* 36547 */ {(12<<2)|2,{98,114,0}}, +/* 36548 */ {(12<<2)|2,{98,114,0}}, +/* 36549 */ {(12<<2)|2,{98,114,0}}, +/* 36550 */ {(12<<2)|2,{98,114,0}}, +/* 36551 */ {(12<<2)|2,{98,114,0}}, +/* 36552 */ {(12<<2)|2,{98,114,0}}, +/* 36553 */ {(12<<2)|2,{98,114,0}}, +/* 36554 */ {(12<<2)|2,{98,114,0}}, +/* 36555 */ {(12<<2)|2,{98,114,0}}, +/* 36556 */ {(12<<2)|2,{98,114,0}}, +/* 36557 */ {(12<<2)|2,{98,114,0}}, +/* 36558 */ {(12<<2)|2,{98,114,0}}, +/* 36559 */ {(12<<2)|2,{98,114,0}}, +/* 36560 */ {(12<<2)|2,{98,117,0}}, +/* 36561 */ {(12<<2)|2,{98,117,0}}, +/* 36562 */ {(12<<2)|2,{98,117,0}}, +/* 36563 */ {(12<<2)|2,{98,117,0}}, +/* 36564 */ {(12<<2)|2,{98,117,0}}, +/* 36565 */ {(12<<2)|2,{98,117,0}}, +/* 36566 */ {(12<<2)|2,{98,117,0}}, +/* 36567 */ {(12<<2)|2,{98,117,0}}, +/* 36568 */ {(12<<2)|2,{98,117,0}}, +/* 36569 */ {(12<<2)|2,{98,117,0}}, +/* 36570 */ {(12<<2)|2,{98,117,0}}, +/* 36571 */ {(12<<2)|2,{98,117,0}}, +/* 36572 */ {(12<<2)|2,{98,117,0}}, +/* 36573 */ {(12<<2)|2,{98,117,0}}, +/* 36574 */ {(12<<2)|2,{98,117,0}}, +/* 36575 */ {(12<<2)|2,{98,117,0}}, +/* 36576 */ {(13<<2)|2,{98,58,0}}, +/* 36577 */ {(13<<2)|2,{98,58,0}}, +/* 36578 */ {(13<<2)|2,{98,58,0}}, +/* 36579 */ {(13<<2)|2,{98,58,0}}, +/* 36580 */ {(13<<2)|2,{98,58,0}}, +/* 36581 */ {(13<<2)|2,{98,58,0}}, +/* 36582 */ {(13<<2)|2,{98,58,0}}, +/* 36583 */ {(13<<2)|2,{98,58,0}}, +/* 36584 */ {(13<<2)|2,{98,66,0}}, +/* 36585 */ {(13<<2)|2,{98,66,0}}, +/* 36586 */ {(13<<2)|2,{98,66,0}}, +/* 36587 */ {(13<<2)|2,{98,66,0}}, +/* 36588 */ {(13<<2)|2,{98,66,0}}, +/* 36589 */ {(13<<2)|2,{98,66,0}}, +/* 36590 */ {(13<<2)|2,{98,66,0}}, +/* 36591 */ {(13<<2)|2,{98,66,0}}, +/* 36592 */ {(13<<2)|2,{98,67,0}}, +/* 36593 */ {(13<<2)|2,{98,67,0}}, +/* 36594 */ {(13<<2)|2,{98,67,0}}, +/* 36595 */ {(13<<2)|2,{98,67,0}}, +/* 36596 */ {(13<<2)|2,{98,67,0}}, +/* 36597 */ {(13<<2)|2,{98,67,0}}, +/* 36598 */ {(13<<2)|2,{98,67,0}}, +/* 36599 */ {(13<<2)|2,{98,67,0}}, +/* 36600 */ {(13<<2)|2,{98,68,0}}, +/* 36601 */ {(13<<2)|2,{98,68,0}}, +/* 36602 */ {(13<<2)|2,{98,68,0}}, +/* 36603 */ {(13<<2)|2,{98,68,0}}, +/* 36604 */ {(13<<2)|2,{98,68,0}}, +/* 36605 */ {(13<<2)|2,{98,68,0}}, +/* 36606 */ {(13<<2)|2,{98,68,0}}, +/* 36607 */ {(13<<2)|2,{98,68,0}}, +/* 36608 */ {(13<<2)|2,{98,69,0}}, +/* 36609 */ {(13<<2)|2,{98,69,0}}, +/* 36610 */ {(13<<2)|2,{98,69,0}}, +/* 36611 */ {(13<<2)|2,{98,69,0}}, +/* 36612 */ {(13<<2)|2,{98,69,0}}, +/* 36613 */ {(13<<2)|2,{98,69,0}}, +/* 36614 */ {(13<<2)|2,{98,69,0}}, +/* 36615 */ {(13<<2)|2,{98,69,0}}, +/* 36616 */ {(13<<2)|2,{98,70,0}}, +/* 36617 */ {(13<<2)|2,{98,70,0}}, +/* 36618 */ {(13<<2)|2,{98,70,0}}, +/* 36619 */ {(13<<2)|2,{98,70,0}}, +/* 36620 */ {(13<<2)|2,{98,70,0}}, +/* 36621 */ {(13<<2)|2,{98,70,0}}, +/* 36622 */ {(13<<2)|2,{98,70,0}}, +/* 36623 */ {(13<<2)|2,{98,70,0}}, +/* 36624 */ {(13<<2)|2,{98,71,0}}, +/* 36625 */ {(13<<2)|2,{98,71,0}}, +/* 36626 */ {(13<<2)|2,{98,71,0}}, +/* 36627 */ {(13<<2)|2,{98,71,0}}, +/* 36628 */ {(13<<2)|2,{98,71,0}}, +/* 36629 */ {(13<<2)|2,{98,71,0}}, +/* 36630 */ {(13<<2)|2,{98,71,0}}, +/* 36631 */ {(13<<2)|2,{98,71,0}}, +/* 36632 */ {(13<<2)|2,{98,72,0}}, +/* 36633 */ {(13<<2)|2,{98,72,0}}, +/* 36634 */ {(13<<2)|2,{98,72,0}}, +/* 36635 */ {(13<<2)|2,{98,72,0}}, +/* 36636 */ {(13<<2)|2,{98,72,0}}, +/* 36637 */ {(13<<2)|2,{98,72,0}}, +/* 36638 */ {(13<<2)|2,{98,72,0}}, +/* 36639 */ {(13<<2)|2,{98,72,0}}, +/* 36640 */ {(13<<2)|2,{98,73,0}}, +/* 36641 */ {(13<<2)|2,{98,73,0}}, +/* 36642 */ {(13<<2)|2,{98,73,0}}, +/* 36643 */ {(13<<2)|2,{98,73,0}}, +/* 36644 */ {(13<<2)|2,{98,73,0}}, +/* 36645 */ {(13<<2)|2,{98,73,0}}, +/* 36646 */ {(13<<2)|2,{98,73,0}}, +/* 36647 */ {(13<<2)|2,{98,73,0}}, +/* 36648 */ {(13<<2)|2,{98,74,0}}, +/* 36649 */ {(13<<2)|2,{98,74,0}}, +/* 36650 */ {(13<<2)|2,{98,74,0}}, +/* 36651 */ {(13<<2)|2,{98,74,0}}, +/* 36652 */ {(13<<2)|2,{98,74,0}}, +/* 36653 */ {(13<<2)|2,{98,74,0}}, +/* 36654 */ {(13<<2)|2,{98,74,0}}, +/* 36655 */ {(13<<2)|2,{98,74,0}}, +/* 36656 */ {(13<<2)|2,{98,75,0}}, +/* 36657 */ {(13<<2)|2,{98,75,0}}, +/* 36658 */ {(13<<2)|2,{98,75,0}}, +/* 36659 */ {(13<<2)|2,{98,75,0}}, +/* 36660 */ {(13<<2)|2,{98,75,0}}, +/* 36661 */ {(13<<2)|2,{98,75,0}}, +/* 36662 */ {(13<<2)|2,{98,75,0}}, +/* 36663 */ {(13<<2)|2,{98,75,0}}, +/* 36664 */ {(13<<2)|2,{98,76,0}}, +/* 36665 */ {(13<<2)|2,{98,76,0}}, +/* 36666 */ {(13<<2)|2,{98,76,0}}, +/* 36667 */ {(13<<2)|2,{98,76,0}}, +/* 36668 */ {(13<<2)|2,{98,76,0}}, +/* 36669 */ {(13<<2)|2,{98,76,0}}, +/* 36670 */ {(13<<2)|2,{98,76,0}}, +/* 36671 */ {(13<<2)|2,{98,76,0}}, +/* 36672 */ {(13<<2)|2,{98,77,0}}, +/* 36673 */ {(13<<2)|2,{98,77,0}}, +/* 36674 */ {(13<<2)|2,{98,77,0}}, +/* 36675 */ {(13<<2)|2,{98,77,0}}, +/* 36676 */ {(13<<2)|2,{98,77,0}}, +/* 36677 */ {(13<<2)|2,{98,77,0}}, +/* 36678 */ {(13<<2)|2,{98,77,0}}, +/* 36679 */ {(13<<2)|2,{98,77,0}}, +/* 36680 */ {(13<<2)|2,{98,78,0}}, +/* 36681 */ {(13<<2)|2,{98,78,0}}, +/* 36682 */ {(13<<2)|2,{98,78,0}}, +/* 36683 */ {(13<<2)|2,{98,78,0}}, +/* 36684 */ {(13<<2)|2,{98,78,0}}, +/* 36685 */ {(13<<2)|2,{98,78,0}}, +/* 36686 */ {(13<<2)|2,{98,78,0}}, +/* 36687 */ {(13<<2)|2,{98,78,0}}, +/* 36688 */ {(13<<2)|2,{98,79,0}}, +/* 36689 */ {(13<<2)|2,{98,79,0}}, +/* 36690 */ {(13<<2)|2,{98,79,0}}, +/* 36691 */ {(13<<2)|2,{98,79,0}}, +/* 36692 */ {(13<<2)|2,{98,79,0}}, +/* 36693 */ {(13<<2)|2,{98,79,0}}, +/* 36694 */ {(13<<2)|2,{98,79,0}}, +/* 36695 */ {(13<<2)|2,{98,79,0}}, +/* 36696 */ {(13<<2)|2,{98,80,0}}, +/* 36697 */ {(13<<2)|2,{98,80,0}}, +/* 36698 */ {(13<<2)|2,{98,80,0}}, +/* 36699 */ {(13<<2)|2,{98,80,0}}, +/* 36700 */ {(13<<2)|2,{98,80,0}}, +/* 36701 */ {(13<<2)|2,{98,80,0}}, +/* 36702 */ {(13<<2)|2,{98,80,0}}, +/* 36703 */ {(13<<2)|2,{98,80,0}}, +/* 36704 */ {(13<<2)|2,{98,81,0}}, +/* 36705 */ {(13<<2)|2,{98,81,0}}, +/* 36706 */ {(13<<2)|2,{98,81,0}}, +/* 36707 */ {(13<<2)|2,{98,81,0}}, +/* 36708 */ {(13<<2)|2,{98,81,0}}, +/* 36709 */ {(13<<2)|2,{98,81,0}}, +/* 36710 */ {(13<<2)|2,{98,81,0}}, +/* 36711 */ {(13<<2)|2,{98,81,0}}, +/* 36712 */ {(13<<2)|2,{98,82,0}}, +/* 36713 */ {(13<<2)|2,{98,82,0}}, +/* 36714 */ {(13<<2)|2,{98,82,0}}, +/* 36715 */ {(13<<2)|2,{98,82,0}}, +/* 36716 */ {(13<<2)|2,{98,82,0}}, +/* 36717 */ {(13<<2)|2,{98,82,0}}, +/* 36718 */ {(13<<2)|2,{98,82,0}}, +/* 36719 */ {(13<<2)|2,{98,82,0}}, +/* 36720 */ {(13<<2)|2,{98,83,0}}, +/* 36721 */ {(13<<2)|2,{98,83,0}}, +/* 36722 */ {(13<<2)|2,{98,83,0}}, +/* 36723 */ {(13<<2)|2,{98,83,0}}, +/* 36724 */ {(13<<2)|2,{98,83,0}}, +/* 36725 */ {(13<<2)|2,{98,83,0}}, +/* 36726 */ {(13<<2)|2,{98,83,0}}, +/* 36727 */ {(13<<2)|2,{98,83,0}}, +/* 36728 */ {(13<<2)|2,{98,84,0}}, +/* 36729 */ {(13<<2)|2,{98,84,0}}, +/* 36730 */ {(13<<2)|2,{98,84,0}}, +/* 36731 */ {(13<<2)|2,{98,84,0}}, +/* 36732 */ {(13<<2)|2,{98,84,0}}, +/* 36733 */ {(13<<2)|2,{98,84,0}}, +/* 36734 */ {(13<<2)|2,{98,84,0}}, +/* 36735 */ {(13<<2)|2,{98,84,0}}, +/* 36736 */ {(13<<2)|2,{98,85,0}}, +/* 36737 */ {(13<<2)|2,{98,85,0}}, +/* 36738 */ {(13<<2)|2,{98,85,0}}, +/* 36739 */ {(13<<2)|2,{98,85,0}}, +/* 36740 */ {(13<<2)|2,{98,85,0}}, +/* 36741 */ {(13<<2)|2,{98,85,0}}, +/* 36742 */ {(13<<2)|2,{98,85,0}}, +/* 36743 */ {(13<<2)|2,{98,85,0}}, +/* 36744 */ {(13<<2)|2,{98,86,0}}, +/* 36745 */ {(13<<2)|2,{98,86,0}}, +/* 36746 */ {(13<<2)|2,{98,86,0}}, +/* 36747 */ {(13<<2)|2,{98,86,0}}, +/* 36748 */ {(13<<2)|2,{98,86,0}}, +/* 36749 */ {(13<<2)|2,{98,86,0}}, +/* 36750 */ {(13<<2)|2,{98,86,0}}, +/* 36751 */ {(13<<2)|2,{98,86,0}}, +/* 36752 */ {(13<<2)|2,{98,87,0}}, +/* 36753 */ {(13<<2)|2,{98,87,0}}, +/* 36754 */ {(13<<2)|2,{98,87,0}}, +/* 36755 */ {(13<<2)|2,{98,87,0}}, +/* 36756 */ {(13<<2)|2,{98,87,0}}, +/* 36757 */ {(13<<2)|2,{98,87,0}}, +/* 36758 */ {(13<<2)|2,{98,87,0}}, +/* 36759 */ {(13<<2)|2,{98,87,0}}, +/* 36760 */ {(13<<2)|2,{98,89,0}}, +/* 36761 */ {(13<<2)|2,{98,89,0}}, +/* 36762 */ {(13<<2)|2,{98,89,0}}, +/* 36763 */ {(13<<2)|2,{98,89,0}}, +/* 36764 */ {(13<<2)|2,{98,89,0}}, +/* 36765 */ {(13<<2)|2,{98,89,0}}, +/* 36766 */ {(13<<2)|2,{98,89,0}}, +/* 36767 */ {(13<<2)|2,{98,89,0}}, +/* 36768 */ {(13<<2)|2,{98,106,0}}, +/* 36769 */ {(13<<2)|2,{98,106,0}}, +/* 36770 */ {(13<<2)|2,{98,106,0}}, +/* 36771 */ {(13<<2)|2,{98,106,0}}, +/* 36772 */ {(13<<2)|2,{98,106,0}}, +/* 36773 */ {(13<<2)|2,{98,106,0}}, +/* 36774 */ {(13<<2)|2,{98,106,0}}, +/* 36775 */ {(13<<2)|2,{98,106,0}}, +/* 36776 */ {(13<<2)|2,{98,107,0}}, +/* 36777 */ {(13<<2)|2,{98,107,0}}, +/* 36778 */ {(13<<2)|2,{98,107,0}}, +/* 36779 */ {(13<<2)|2,{98,107,0}}, +/* 36780 */ {(13<<2)|2,{98,107,0}}, +/* 36781 */ {(13<<2)|2,{98,107,0}}, +/* 36782 */ {(13<<2)|2,{98,107,0}}, +/* 36783 */ {(13<<2)|2,{98,107,0}}, +/* 36784 */ {(13<<2)|2,{98,113,0}}, +/* 36785 */ {(13<<2)|2,{98,113,0}}, +/* 36786 */ {(13<<2)|2,{98,113,0}}, +/* 36787 */ {(13<<2)|2,{98,113,0}}, +/* 36788 */ {(13<<2)|2,{98,113,0}}, +/* 36789 */ {(13<<2)|2,{98,113,0}}, +/* 36790 */ {(13<<2)|2,{98,113,0}}, +/* 36791 */ {(13<<2)|2,{98,113,0}}, +/* 36792 */ {(13<<2)|2,{98,118,0}}, +/* 36793 */ {(13<<2)|2,{98,118,0}}, +/* 36794 */ {(13<<2)|2,{98,118,0}}, +/* 36795 */ {(13<<2)|2,{98,118,0}}, +/* 36796 */ {(13<<2)|2,{98,118,0}}, +/* 36797 */ {(13<<2)|2,{98,118,0}}, +/* 36798 */ {(13<<2)|2,{98,118,0}}, +/* 36799 */ {(13<<2)|2,{98,118,0}}, +/* 36800 */ {(13<<2)|2,{98,119,0}}, +/* 36801 */ {(13<<2)|2,{98,119,0}}, +/* 36802 */ {(13<<2)|2,{98,119,0}}, +/* 36803 */ {(13<<2)|2,{98,119,0}}, +/* 36804 */ {(13<<2)|2,{98,119,0}}, +/* 36805 */ {(13<<2)|2,{98,119,0}}, +/* 36806 */ {(13<<2)|2,{98,119,0}}, +/* 36807 */ {(13<<2)|2,{98,119,0}}, +/* 36808 */ {(13<<2)|2,{98,120,0}}, +/* 36809 */ {(13<<2)|2,{98,120,0}}, +/* 36810 */ {(13<<2)|2,{98,120,0}}, +/* 36811 */ {(13<<2)|2,{98,120,0}}, +/* 36812 */ {(13<<2)|2,{98,120,0}}, +/* 36813 */ {(13<<2)|2,{98,120,0}}, +/* 36814 */ {(13<<2)|2,{98,120,0}}, +/* 36815 */ {(13<<2)|2,{98,120,0}}, +/* 36816 */ {(13<<2)|2,{98,121,0}}, +/* 36817 */ {(13<<2)|2,{98,121,0}}, +/* 36818 */ {(13<<2)|2,{98,121,0}}, +/* 36819 */ {(13<<2)|2,{98,121,0}}, +/* 36820 */ {(13<<2)|2,{98,121,0}}, +/* 36821 */ {(13<<2)|2,{98,121,0}}, +/* 36822 */ {(13<<2)|2,{98,121,0}}, +/* 36823 */ {(13<<2)|2,{98,121,0}}, +/* 36824 */ {(13<<2)|2,{98,122,0}}, +/* 36825 */ {(13<<2)|2,{98,122,0}}, +/* 36826 */ {(13<<2)|2,{98,122,0}}, +/* 36827 */ {(13<<2)|2,{98,122,0}}, +/* 36828 */ {(13<<2)|2,{98,122,0}}, +/* 36829 */ {(13<<2)|2,{98,122,0}}, +/* 36830 */ {(13<<2)|2,{98,122,0}}, +/* 36831 */ {(13<<2)|2,{98,122,0}}, +/* 36832 */ {(14<<2)|2,{98,38,0}}, +/* 36833 */ {(14<<2)|2,{98,38,0}}, +/* 36834 */ {(14<<2)|2,{98,38,0}}, +/* 36835 */ {(14<<2)|2,{98,38,0}}, +/* 36836 */ {(14<<2)|2,{98,42,0}}, +/* 36837 */ {(14<<2)|2,{98,42,0}}, +/* 36838 */ {(14<<2)|2,{98,42,0}}, +/* 36839 */ {(14<<2)|2,{98,42,0}}, +/* 36840 */ {(14<<2)|2,{98,44,0}}, +/* 36841 */ {(14<<2)|2,{98,44,0}}, +/* 36842 */ {(14<<2)|2,{98,44,0}}, +/* 36843 */ {(14<<2)|2,{98,44,0}}, +/* 36844 */ {(14<<2)|2,{98,59,0}}, +/* 36845 */ {(14<<2)|2,{98,59,0}}, +/* 36846 */ {(14<<2)|2,{98,59,0}}, +/* 36847 */ {(14<<2)|2,{98,59,0}}, +/* 36848 */ {(14<<2)|2,{98,88,0}}, +/* 36849 */ {(14<<2)|2,{98,88,0}}, +/* 36850 */ {(14<<2)|2,{98,88,0}}, +/* 36851 */ {(14<<2)|2,{98,88,0}}, +/* 36852 */ {(14<<2)|2,{98,90,0}}, +/* 36853 */ {(14<<2)|2,{98,90,0}}, +/* 36854 */ {(14<<2)|2,{98,90,0}}, +/* 36855 */ {(14<<2)|2,{98,90,0}}, +/* 36856 */ {(16<<2)|2,{98,33,0}}, +/* 36857 */ {(16<<2)|2,{98,34,0}}, +/* 36858 */ {(16<<2)|2,{98,40,0}}, +/* 36859 */ {(16<<2)|2,{98,41,0}}, +/* 36860 */ {(16<<2)|2,{98,63,0}}, +/* 36861 */ {(6<<2)|1,{98,0,0}}, +/* 36862 */ {(6<<2)|1,{98,0,0}}, +/* 36863 */ {(6<<2)|1,{98,0,0}}, +/* 36864 */ {(16<<2)|3,{100,48,48}}, +/* 36865 */ {(16<<2)|3,{100,48,49}}, +/* 36866 */ {(16<<2)|3,{100,48,50}}, +/* 36867 */ {(16<<2)|3,{100,48,97}}, +/* 36868 */ {(16<<2)|3,{100,48,99}}, +/* 36869 */ {(16<<2)|3,{100,48,101}}, +/* 36870 */ {(16<<2)|3,{100,48,105}}, +/* 36871 */ {(16<<2)|3,{100,48,111}}, +/* 36872 */ {(16<<2)|3,{100,48,115}}, +/* 36873 */ {(16<<2)|3,{100,48,116}}, +/* 36874 */ {(11<<2)|2,{100,48,0}}, +/* 36875 */ {(11<<2)|2,{100,48,0}}, +/* 36876 */ {(11<<2)|2,{100,48,0}}, +/* 36877 */ {(11<<2)|2,{100,48,0}}, +/* 36878 */ {(11<<2)|2,{100,48,0}}, +/* 36879 */ {(11<<2)|2,{100,48,0}}, +/* 36880 */ {(11<<2)|2,{100,48,0}}, +/* 36881 */ {(11<<2)|2,{100,48,0}}, +/* 36882 */ {(11<<2)|2,{100,48,0}}, +/* 36883 */ {(11<<2)|2,{100,48,0}}, +/* 36884 */ {(11<<2)|2,{100,48,0}}, +/* 36885 */ {(11<<2)|2,{100,48,0}}, +/* 36886 */ {(11<<2)|2,{100,48,0}}, +/* 36887 */ {(11<<2)|2,{100,48,0}}, +/* 36888 */ {(11<<2)|2,{100,48,0}}, +/* 36889 */ {(11<<2)|2,{100,48,0}}, +/* 36890 */ {(11<<2)|2,{100,48,0}}, +/* 36891 */ {(11<<2)|2,{100,48,0}}, +/* 36892 */ {(11<<2)|2,{100,48,0}}, +/* 36893 */ {(11<<2)|2,{100,48,0}}, +/* 36894 */ {(11<<2)|2,{100,48,0}}, +/* 36895 */ {(11<<2)|2,{100,48,0}}, +/* 36896 */ {(16<<2)|3,{100,49,48}}, +/* 36897 */ {(16<<2)|3,{100,49,49}}, +/* 36898 */ {(16<<2)|3,{100,49,50}}, +/* 36899 */ {(16<<2)|3,{100,49,97}}, +/* 36900 */ {(16<<2)|3,{100,49,99}}, +/* 36901 */ {(16<<2)|3,{100,49,101}}, +/* 36902 */ {(16<<2)|3,{100,49,105}}, +/* 36903 */ {(16<<2)|3,{100,49,111}}, +/* 36904 */ {(16<<2)|3,{100,49,115}}, +/* 36905 */ {(16<<2)|3,{100,49,116}}, +/* 36906 */ {(11<<2)|2,{100,49,0}}, +/* 36907 */ {(11<<2)|2,{100,49,0}}, +/* 36908 */ {(11<<2)|2,{100,49,0}}, +/* 36909 */ {(11<<2)|2,{100,49,0}}, +/* 36910 */ {(11<<2)|2,{100,49,0}}, +/* 36911 */ {(11<<2)|2,{100,49,0}}, +/* 36912 */ {(11<<2)|2,{100,49,0}}, +/* 36913 */ {(11<<2)|2,{100,49,0}}, +/* 36914 */ {(11<<2)|2,{100,49,0}}, +/* 36915 */ {(11<<2)|2,{100,49,0}}, +/* 36916 */ {(11<<2)|2,{100,49,0}}, +/* 36917 */ {(11<<2)|2,{100,49,0}}, +/* 36918 */ {(11<<2)|2,{100,49,0}}, +/* 36919 */ {(11<<2)|2,{100,49,0}}, +/* 36920 */ {(11<<2)|2,{100,49,0}}, +/* 36921 */ {(11<<2)|2,{100,49,0}}, +/* 36922 */ {(11<<2)|2,{100,49,0}}, +/* 36923 */ {(11<<2)|2,{100,49,0}}, +/* 36924 */ {(11<<2)|2,{100,49,0}}, +/* 36925 */ {(11<<2)|2,{100,49,0}}, +/* 36926 */ {(11<<2)|2,{100,49,0}}, +/* 36927 */ {(11<<2)|2,{100,49,0}}, +/* 36928 */ {(16<<2)|3,{100,50,48}}, +/* 36929 */ {(16<<2)|3,{100,50,49}}, +/* 36930 */ {(16<<2)|3,{100,50,50}}, +/* 36931 */ {(16<<2)|3,{100,50,97}}, +/* 36932 */ {(16<<2)|3,{100,50,99}}, +/* 36933 */ {(16<<2)|3,{100,50,101}}, +/* 36934 */ {(16<<2)|3,{100,50,105}}, +/* 36935 */ {(16<<2)|3,{100,50,111}}, +/* 36936 */ {(16<<2)|3,{100,50,115}}, +/* 36937 */ {(16<<2)|3,{100,50,116}}, +/* 36938 */ {(11<<2)|2,{100,50,0}}, +/* 36939 */ {(11<<2)|2,{100,50,0}}, +/* 36940 */ {(11<<2)|2,{100,50,0}}, +/* 36941 */ {(11<<2)|2,{100,50,0}}, +/* 36942 */ {(11<<2)|2,{100,50,0}}, +/* 36943 */ {(11<<2)|2,{100,50,0}}, +/* 36944 */ {(11<<2)|2,{100,50,0}}, +/* 36945 */ {(11<<2)|2,{100,50,0}}, +/* 36946 */ {(11<<2)|2,{100,50,0}}, +/* 36947 */ {(11<<2)|2,{100,50,0}}, +/* 36948 */ {(11<<2)|2,{100,50,0}}, +/* 36949 */ {(11<<2)|2,{100,50,0}}, +/* 36950 */ {(11<<2)|2,{100,50,0}}, +/* 36951 */ {(11<<2)|2,{100,50,0}}, +/* 36952 */ {(11<<2)|2,{100,50,0}}, +/* 36953 */ {(11<<2)|2,{100,50,0}}, +/* 36954 */ {(11<<2)|2,{100,50,0}}, +/* 36955 */ {(11<<2)|2,{100,50,0}}, +/* 36956 */ {(11<<2)|2,{100,50,0}}, +/* 36957 */ {(11<<2)|2,{100,50,0}}, +/* 36958 */ {(11<<2)|2,{100,50,0}}, +/* 36959 */ {(11<<2)|2,{100,50,0}}, +/* 36960 */ {(16<<2)|3,{100,97,48}}, +/* 36961 */ {(16<<2)|3,{100,97,49}}, +/* 36962 */ {(16<<2)|3,{100,97,50}}, +/* 36963 */ {(16<<2)|3,{100,97,97}}, +/* 36964 */ {(16<<2)|3,{100,97,99}}, +/* 36965 */ {(16<<2)|3,{100,97,101}}, +/* 36966 */ {(16<<2)|3,{100,97,105}}, +/* 36967 */ {(16<<2)|3,{100,97,111}}, +/* 36968 */ {(16<<2)|3,{100,97,115}}, +/* 36969 */ {(16<<2)|3,{100,97,116}}, +/* 36970 */ {(11<<2)|2,{100,97,0}}, +/* 36971 */ {(11<<2)|2,{100,97,0}}, +/* 36972 */ {(11<<2)|2,{100,97,0}}, +/* 36973 */ {(11<<2)|2,{100,97,0}}, +/* 36974 */ {(11<<2)|2,{100,97,0}}, +/* 36975 */ {(11<<2)|2,{100,97,0}}, +/* 36976 */ {(11<<2)|2,{100,97,0}}, +/* 36977 */ {(11<<2)|2,{100,97,0}}, +/* 36978 */ {(11<<2)|2,{100,97,0}}, +/* 36979 */ {(11<<2)|2,{100,97,0}}, +/* 36980 */ {(11<<2)|2,{100,97,0}}, +/* 36981 */ {(11<<2)|2,{100,97,0}}, +/* 36982 */ {(11<<2)|2,{100,97,0}}, +/* 36983 */ {(11<<2)|2,{100,97,0}}, +/* 36984 */ {(11<<2)|2,{100,97,0}}, +/* 36985 */ {(11<<2)|2,{100,97,0}}, +/* 36986 */ {(11<<2)|2,{100,97,0}}, +/* 36987 */ {(11<<2)|2,{100,97,0}}, +/* 36988 */ {(11<<2)|2,{100,97,0}}, +/* 36989 */ {(11<<2)|2,{100,97,0}}, +/* 36990 */ {(11<<2)|2,{100,97,0}}, +/* 36991 */ {(11<<2)|2,{100,97,0}}, +/* 36992 */ {(16<<2)|3,{100,99,48}}, +/* 36993 */ {(16<<2)|3,{100,99,49}}, +/* 36994 */ {(16<<2)|3,{100,99,50}}, +/* 36995 */ {(16<<2)|3,{100,99,97}}, +/* 36996 */ {(16<<2)|3,{100,99,99}}, +/* 36997 */ {(16<<2)|3,{100,99,101}}, +/* 36998 */ {(16<<2)|3,{100,99,105}}, +/* 36999 */ {(16<<2)|3,{100,99,111}}, +/* 37000 */ {(16<<2)|3,{100,99,115}}, +/* 37001 */ {(16<<2)|3,{100,99,116}}, +/* 37002 */ {(11<<2)|2,{100,99,0}}, +/* 37003 */ {(11<<2)|2,{100,99,0}}, +/* 37004 */ {(11<<2)|2,{100,99,0}}, +/* 37005 */ {(11<<2)|2,{100,99,0}}, +/* 37006 */ {(11<<2)|2,{100,99,0}}, +/* 37007 */ {(11<<2)|2,{100,99,0}}, +/* 37008 */ {(11<<2)|2,{100,99,0}}, +/* 37009 */ {(11<<2)|2,{100,99,0}}, +/* 37010 */ {(11<<2)|2,{100,99,0}}, +/* 37011 */ {(11<<2)|2,{100,99,0}}, +/* 37012 */ {(11<<2)|2,{100,99,0}}, +/* 37013 */ {(11<<2)|2,{100,99,0}}, +/* 37014 */ {(11<<2)|2,{100,99,0}}, +/* 37015 */ {(11<<2)|2,{100,99,0}}, +/* 37016 */ {(11<<2)|2,{100,99,0}}, +/* 37017 */ {(11<<2)|2,{100,99,0}}, +/* 37018 */ {(11<<2)|2,{100,99,0}}, +/* 37019 */ {(11<<2)|2,{100,99,0}}, +/* 37020 */ {(11<<2)|2,{100,99,0}}, +/* 37021 */ {(11<<2)|2,{100,99,0}}, +/* 37022 */ {(11<<2)|2,{100,99,0}}, +/* 37023 */ {(11<<2)|2,{100,99,0}}, +/* 37024 */ {(16<<2)|3,{100,101,48}}, +/* 37025 */ {(16<<2)|3,{100,101,49}}, +/* 37026 */ {(16<<2)|3,{100,101,50}}, +/* 37027 */ {(16<<2)|3,{100,101,97}}, +/* 37028 */ {(16<<2)|3,{100,101,99}}, +/* 37029 */ {(16<<2)|3,{100,101,101}}, +/* 37030 */ {(16<<2)|3,{100,101,105}}, +/* 37031 */ {(16<<2)|3,{100,101,111}}, +/* 37032 */ {(16<<2)|3,{100,101,115}}, +/* 37033 */ {(16<<2)|3,{100,101,116}}, +/* 37034 */ {(11<<2)|2,{100,101,0}}, +/* 37035 */ {(11<<2)|2,{100,101,0}}, +/* 37036 */ {(11<<2)|2,{100,101,0}}, +/* 37037 */ {(11<<2)|2,{100,101,0}}, +/* 37038 */ {(11<<2)|2,{100,101,0}}, +/* 37039 */ {(11<<2)|2,{100,101,0}}, +/* 37040 */ {(11<<2)|2,{100,101,0}}, +/* 37041 */ {(11<<2)|2,{100,101,0}}, +/* 37042 */ {(11<<2)|2,{100,101,0}}, +/* 37043 */ {(11<<2)|2,{100,101,0}}, +/* 37044 */ {(11<<2)|2,{100,101,0}}, +/* 37045 */ {(11<<2)|2,{100,101,0}}, +/* 37046 */ {(11<<2)|2,{100,101,0}}, +/* 37047 */ {(11<<2)|2,{100,101,0}}, +/* 37048 */ {(11<<2)|2,{100,101,0}}, +/* 37049 */ {(11<<2)|2,{100,101,0}}, +/* 37050 */ {(11<<2)|2,{100,101,0}}, +/* 37051 */ {(11<<2)|2,{100,101,0}}, +/* 37052 */ {(11<<2)|2,{100,101,0}}, +/* 37053 */ {(11<<2)|2,{100,101,0}}, +/* 37054 */ {(11<<2)|2,{100,101,0}}, +/* 37055 */ {(11<<2)|2,{100,101,0}}, +/* 37056 */ {(16<<2)|3,{100,105,48}}, +/* 37057 */ {(16<<2)|3,{100,105,49}}, +/* 37058 */ {(16<<2)|3,{100,105,50}}, +/* 37059 */ {(16<<2)|3,{100,105,97}}, +/* 37060 */ {(16<<2)|3,{100,105,99}}, +/* 37061 */ {(16<<2)|3,{100,105,101}}, +/* 37062 */ {(16<<2)|3,{100,105,105}}, +/* 37063 */ {(16<<2)|3,{100,105,111}}, +/* 37064 */ {(16<<2)|3,{100,105,115}}, +/* 37065 */ {(16<<2)|3,{100,105,116}}, +/* 37066 */ {(11<<2)|2,{100,105,0}}, +/* 37067 */ {(11<<2)|2,{100,105,0}}, +/* 37068 */ {(11<<2)|2,{100,105,0}}, +/* 37069 */ {(11<<2)|2,{100,105,0}}, +/* 37070 */ {(11<<2)|2,{100,105,0}}, +/* 37071 */ {(11<<2)|2,{100,105,0}}, +/* 37072 */ {(11<<2)|2,{100,105,0}}, +/* 37073 */ {(11<<2)|2,{100,105,0}}, +/* 37074 */ {(11<<2)|2,{100,105,0}}, +/* 37075 */ {(11<<2)|2,{100,105,0}}, +/* 37076 */ {(11<<2)|2,{100,105,0}}, +/* 37077 */ {(11<<2)|2,{100,105,0}}, +/* 37078 */ {(11<<2)|2,{100,105,0}}, +/* 37079 */ {(11<<2)|2,{100,105,0}}, +/* 37080 */ {(11<<2)|2,{100,105,0}}, +/* 37081 */ {(11<<2)|2,{100,105,0}}, +/* 37082 */ {(11<<2)|2,{100,105,0}}, +/* 37083 */ {(11<<2)|2,{100,105,0}}, +/* 37084 */ {(11<<2)|2,{100,105,0}}, +/* 37085 */ {(11<<2)|2,{100,105,0}}, +/* 37086 */ {(11<<2)|2,{100,105,0}}, +/* 37087 */ {(11<<2)|2,{100,105,0}}, +/* 37088 */ {(16<<2)|3,{100,111,48}}, +/* 37089 */ {(16<<2)|3,{100,111,49}}, +/* 37090 */ {(16<<2)|3,{100,111,50}}, +/* 37091 */ {(16<<2)|3,{100,111,97}}, +/* 37092 */ {(16<<2)|3,{100,111,99}}, +/* 37093 */ {(16<<2)|3,{100,111,101}}, +/* 37094 */ {(16<<2)|3,{100,111,105}}, +/* 37095 */ {(16<<2)|3,{100,111,111}}, +/* 37096 */ {(16<<2)|3,{100,111,115}}, +/* 37097 */ {(16<<2)|3,{100,111,116}}, +/* 37098 */ {(11<<2)|2,{100,111,0}}, +/* 37099 */ {(11<<2)|2,{100,111,0}}, +/* 37100 */ {(11<<2)|2,{100,111,0}}, +/* 37101 */ {(11<<2)|2,{100,111,0}}, +/* 37102 */ {(11<<2)|2,{100,111,0}}, +/* 37103 */ {(11<<2)|2,{100,111,0}}, +/* 37104 */ {(11<<2)|2,{100,111,0}}, +/* 37105 */ {(11<<2)|2,{100,111,0}}, +/* 37106 */ {(11<<2)|2,{100,111,0}}, +/* 37107 */ {(11<<2)|2,{100,111,0}}, +/* 37108 */ {(11<<2)|2,{100,111,0}}, +/* 37109 */ {(11<<2)|2,{100,111,0}}, +/* 37110 */ {(11<<2)|2,{100,111,0}}, +/* 37111 */ {(11<<2)|2,{100,111,0}}, +/* 37112 */ {(11<<2)|2,{100,111,0}}, +/* 37113 */ {(11<<2)|2,{100,111,0}}, +/* 37114 */ {(11<<2)|2,{100,111,0}}, +/* 37115 */ {(11<<2)|2,{100,111,0}}, +/* 37116 */ {(11<<2)|2,{100,111,0}}, +/* 37117 */ {(11<<2)|2,{100,111,0}}, +/* 37118 */ {(11<<2)|2,{100,111,0}}, +/* 37119 */ {(11<<2)|2,{100,111,0}}, +/* 37120 */ {(16<<2)|3,{100,115,48}}, +/* 37121 */ {(16<<2)|3,{100,115,49}}, +/* 37122 */ {(16<<2)|3,{100,115,50}}, +/* 37123 */ {(16<<2)|3,{100,115,97}}, +/* 37124 */ {(16<<2)|3,{100,115,99}}, +/* 37125 */ {(16<<2)|3,{100,115,101}}, +/* 37126 */ {(16<<2)|3,{100,115,105}}, +/* 37127 */ {(16<<2)|3,{100,115,111}}, +/* 37128 */ {(16<<2)|3,{100,115,115}}, +/* 37129 */ {(16<<2)|3,{100,115,116}}, +/* 37130 */ {(11<<2)|2,{100,115,0}}, +/* 37131 */ {(11<<2)|2,{100,115,0}}, +/* 37132 */ {(11<<2)|2,{100,115,0}}, +/* 37133 */ {(11<<2)|2,{100,115,0}}, +/* 37134 */ {(11<<2)|2,{100,115,0}}, +/* 37135 */ {(11<<2)|2,{100,115,0}}, +/* 37136 */ {(11<<2)|2,{100,115,0}}, +/* 37137 */ {(11<<2)|2,{100,115,0}}, +/* 37138 */ {(11<<2)|2,{100,115,0}}, +/* 37139 */ {(11<<2)|2,{100,115,0}}, +/* 37140 */ {(11<<2)|2,{100,115,0}}, +/* 37141 */ {(11<<2)|2,{100,115,0}}, +/* 37142 */ {(11<<2)|2,{100,115,0}}, +/* 37143 */ {(11<<2)|2,{100,115,0}}, +/* 37144 */ {(11<<2)|2,{100,115,0}}, +/* 37145 */ {(11<<2)|2,{100,115,0}}, +/* 37146 */ {(11<<2)|2,{100,115,0}}, +/* 37147 */ {(11<<2)|2,{100,115,0}}, +/* 37148 */ {(11<<2)|2,{100,115,0}}, +/* 37149 */ {(11<<2)|2,{100,115,0}}, +/* 37150 */ {(11<<2)|2,{100,115,0}}, +/* 37151 */ {(11<<2)|2,{100,115,0}}, +/* 37152 */ {(16<<2)|3,{100,116,48}}, +/* 37153 */ {(16<<2)|3,{100,116,49}}, +/* 37154 */ {(16<<2)|3,{100,116,50}}, +/* 37155 */ {(16<<2)|3,{100,116,97}}, +/* 37156 */ {(16<<2)|3,{100,116,99}}, +/* 37157 */ {(16<<2)|3,{100,116,101}}, +/* 37158 */ {(16<<2)|3,{100,116,105}}, +/* 37159 */ {(16<<2)|3,{100,116,111}}, +/* 37160 */ {(16<<2)|3,{100,116,115}}, +/* 37161 */ {(16<<2)|3,{100,116,116}}, +/* 37162 */ {(11<<2)|2,{100,116,0}}, +/* 37163 */ {(11<<2)|2,{100,116,0}}, +/* 37164 */ {(11<<2)|2,{100,116,0}}, +/* 37165 */ {(11<<2)|2,{100,116,0}}, +/* 37166 */ {(11<<2)|2,{100,116,0}}, +/* 37167 */ {(11<<2)|2,{100,116,0}}, +/* 37168 */ {(11<<2)|2,{100,116,0}}, +/* 37169 */ {(11<<2)|2,{100,116,0}}, +/* 37170 */ {(11<<2)|2,{100,116,0}}, +/* 37171 */ {(11<<2)|2,{100,116,0}}, +/* 37172 */ {(11<<2)|2,{100,116,0}}, +/* 37173 */ {(11<<2)|2,{100,116,0}}, +/* 37174 */ {(11<<2)|2,{100,116,0}}, +/* 37175 */ {(11<<2)|2,{100,116,0}}, +/* 37176 */ {(11<<2)|2,{100,116,0}}, +/* 37177 */ {(11<<2)|2,{100,116,0}}, +/* 37178 */ {(11<<2)|2,{100,116,0}}, +/* 37179 */ {(11<<2)|2,{100,116,0}}, +/* 37180 */ {(11<<2)|2,{100,116,0}}, +/* 37181 */ {(11<<2)|2,{100,116,0}}, +/* 37182 */ {(11<<2)|2,{100,116,0}}, +/* 37183 */ {(11<<2)|2,{100,116,0}}, +/* 37184 */ {(12<<2)|2,{100,32,0}}, +/* 37185 */ {(12<<2)|2,{100,32,0}}, +/* 37186 */ {(12<<2)|2,{100,32,0}}, +/* 37187 */ {(12<<2)|2,{100,32,0}}, +/* 37188 */ {(12<<2)|2,{100,32,0}}, +/* 37189 */ {(12<<2)|2,{100,32,0}}, +/* 37190 */ {(12<<2)|2,{100,32,0}}, +/* 37191 */ {(12<<2)|2,{100,32,0}}, +/* 37192 */ {(12<<2)|2,{100,32,0}}, +/* 37193 */ {(12<<2)|2,{100,32,0}}, +/* 37194 */ {(12<<2)|2,{100,32,0}}, +/* 37195 */ {(12<<2)|2,{100,32,0}}, +/* 37196 */ {(12<<2)|2,{100,32,0}}, +/* 37197 */ {(12<<2)|2,{100,32,0}}, +/* 37198 */ {(12<<2)|2,{100,32,0}}, +/* 37199 */ {(12<<2)|2,{100,32,0}}, +/* 37200 */ {(12<<2)|2,{100,37,0}}, +/* 37201 */ {(12<<2)|2,{100,37,0}}, +/* 37202 */ {(12<<2)|2,{100,37,0}}, +/* 37203 */ {(12<<2)|2,{100,37,0}}, +/* 37204 */ {(12<<2)|2,{100,37,0}}, +/* 37205 */ {(12<<2)|2,{100,37,0}}, +/* 37206 */ {(12<<2)|2,{100,37,0}}, +/* 37207 */ {(12<<2)|2,{100,37,0}}, +/* 37208 */ {(12<<2)|2,{100,37,0}}, +/* 37209 */ {(12<<2)|2,{100,37,0}}, +/* 37210 */ {(12<<2)|2,{100,37,0}}, +/* 37211 */ {(12<<2)|2,{100,37,0}}, +/* 37212 */ {(12<<2)|2,{100,37,0}}, +/* 37213 */ {(12<<2)|2,{100,37,0}}, +/* 37214 */ {(12<<2)|2,{100,37,0}}, +/* 37215 */ {(12<<2)|2,{100,37,0}}, +/* 37216 */ {(12<<2)|2,{100,45,0}}, +/* 37217 */ {(12<<2)|2,{100,45,0}}, +/* 37218 */ {(12<<2)|2,{100,45,0}}, +/* 37219 */ {(12<<2)|2,{100,45,0}}, +/* 37220 */ {(12<<2)|2,{100,45,0}}, +/* 37221 */ {(12<<2)|2,{100,45,0}}, +/* 37222 */ {(12<<2)|2,{100,45,0}}, +/* 37223 */ {(12<<2)|2,{100,45,0}}, +/* 37224 */ {(12<<2)|2,{100,45,0}}, +/* 37225 */ {(12<<2)|2,{100,45,0}}, +/* 37226 */ {(12<<2)|2,{100,45,0}}, +/* 37227 */ {(12<<2)|2,{100,45,0}}, +/* 37228 */ {(12<<2)|2,{100,45,0}}, +/* 37229 */ {(12<<2)|2,{100,45,0}}, +/* 37230 */ {(12<<2)|2,{100,45,0}}, +/* 37231 */ {(12<<2)|2,{100,45,0}}, +/* 37232 */ {(12<<2)|2,{100,46,0}}, +/* 37233 */ {(12<<2)|2,{100,46,0}}, +/* 37234 */ {(12<<2)|2,{100,46,0}}, +/* 37235 */ {(12<<2)|2,{100,46,0}}, +/* 37236 */ {(12<<2)|2,{100,46,0}}, +/* 37237 */ {(12<<2)|2,{100,46,0}}, +/* 37238 */ {(12<<2)|2,{100,46,0}}, +/* 37239 */ {(12<<2)|2,{100,46,0}}, +/* 37240 */ {(12<<2)|2,{100,46,0}}, +/* 37241 */ {(12<<2)|2,{100,46,0}}, +/* 37242 */ {(12<<2)|2,{100,46,0}}, +/* 37243 */ {(12<<2)|2,{100,46,0}}, +/* 37244 */ {(12<<2)|2,{100,46,0}}, +/* 37245 */ {(12<<2)|2,{100,46,0}}, +/* 37246 */ {(12<<2)|2,{100,46,0}}, +/* 37247 */ {(12<<2)|2,{100,46,0}}, +/* 37248 */ {(12<<2)|2,{100,47,0}}, +/* 37249 */ {(12<<2)|2,{100,47,0}}, +/* 37250 */ {(12<<2)|2,{100,47,0}}, +/* 37251 */ {(12<<2)|2,{100,47,0}}, +/* 37252 */ {(12<<2)|2,{100,47,0}}, +/* 37253 */ {(12<<2)|2,{100,47,0}}, +/* 37254 */ {(12<<2)|2,{100,47,0}}, +/* 37255 */ {(12<<2)|2,{100,47,0}}, +/* 37256 */ {(12<<2)|2,{100,47,0}}, +/* 37257 */ {(12<<2)|2,{100,47,0}}, +/* 37258 */ {(12<<2)|2,{100,47,0}}, +/* 37259 */ {(12<<2)|2,{100,47,0}}, +/* 37260 */ {(12<<2)|2,{100,47,0}}, +/* 37261 */ {(12<<2)|2,{100,47,0}}, +/* 37262 */ {(12<<2)|2,{100,47,0}}, +/* 37263 */ {(12<<2)|2,{100,47,0}}, +/* 37264 */ {(12<<2)|2,{100,51,0}}, +/* 37265 */ {(12<<2)|2,{100,51,0}}, +/* 37266 */ {(12<<2)|2,{100,51,0}}, +/* 37267 */ {(12<<2)|2,{100,51,0}}, +/* 37268 */ {(12<<2)|2,{100,51,0}}, +/* 37269 */ {(12<<2)|2,{100,51,0}}, +/* 37270 */ {(12<<2)|2,{100,51,0}}, +/* 37271 */ {(12<<2)|2,{100,51,0}}, +/* 37272 */ {(12<<2)|2,{100,51,0}}, +/* 37273 */ {(12<<2)|2,{100,51,0}}, +/* 37274 */ {(12<<2)|2,{100,51,0}}, +/* 37275 */ {(12<<2)|2,{100,51,0}}, +/* 37276 */ {(12<<2)|2,{100,51,0}}, +/* 37277 */ {(12<<2)|2,{100,51,0}}, +/* 37278 */ {(12<<2)|2,{100,51,0}}, +/* 37279 */ {(12<<2)|2,{100,51,0}}, +/* 37280 */ {(12<<2)|2,{100,52,0}}, +/* 37281 */ {(12<<2)|2,{100,52,0}}, +/* 37282 */ {(12<<2)|2,{100,52,0}}, +/* 37283 */ {(12<<2)|2,{100,52,0}}, +/* 37284 */ {(12<<2)|2,{100,52,0}}, +/* 37285 */ {(12<<2)|2,{100,52,0}}, +/* 37286 */ {(12<<2)|2,{100,52,0}}, +/* 37287 */ {(12<<2)|2,{100,52,0}}, +/* 37288 */ {(12<<2)|2,{100,52,0}}, +/* 37289 */ {(12<<2)|2,{100,52,0}}, +/* 37290 */ {(12<<2)|2,{100,52,0}}, +/* 37291 */ {(12<<2)|2,{100,52,0}}, +/* 37292 */ {(12<<2)|2,{100,52,0}}, +/* 37293 */ {(12<<2)|2,{100,52,0}}, +/* 37294 */ {(12<<2)|2,{100,52,0}}, +/* 37295 */ {(12<<2)|2,{100,52,0}}, +/* 37296 */ {(12<<2)|2,{100,53,0}}, +/* 37297 */ {(12<<2)|2,{100,53,0}}, +/* 37298 */ {(12<<2)|2,{100,53,0}}, +/* 37299 */ {(12<<2)|2,{100,53,0}}, +/* 37300 */ {(12<<2)|2,{100,53,0}}, +/* 37301 */ {(12<<2)|2,{100,53,0}}, +/* 37302 */ {(12<<2)|2,{100,53,0}}, +/* 37303 */ {(12<<2)|2,{100,53,0}}, +/* 37304 */ {(12<<2)|2,{100,53,0}}, +/* 37305 */ {(12<<2)|2,{100,53,0}}, +/* 37306 */ {(12<<2)|2,{100,53,0}}, +/* 37307 */ {(12<<2)|2,{100,53,0}}, +/* 37308 */ {(12<<2)|2,{100,53,0}}, +/* 37309 */ {(12<<2)|2,{100,53,0}}, +/* 37310 */ {(12<<2)|2,{100,53,0}}, +/* 37311 */ {(12<<2)|2,{100,53,0}}, +/* 37312 */ {(12<<2)|2,{100,54,0}}, +/* 37313 */ {(12<<2)|2,{100,54,0}}, +/* 37314 */ {(12<<2)|2,{100,54,0}}, +/* 37315 */ {(12<<2)|2,{100,54,0}}, +/* 37316 */ {(12<<2)|2,{100,54,0}}, +/* 37317 */ {(12<<2)|2,{100,54,0}}, +/* 37318 */ {(12<<2)|2,{100,54,0}}, +/* 37319 */ {(12<<2)|2,{100,54,0}}, +/* 37320 */ {(12<<2)|2,{100,54,0}}, +/* 37321 */ {(12<<2)|2,{100,54,0}}, +/* 37322 */ {(12<<2)|2,{100,54,0}}, +/* 37323 */ {(12<<2)|2,{100,54,0}}, +/* 37324 */ {(12<<2)|2,{100,54,0}}, +/* 37325 */ {(12<<2)|2,{100,54,0}}, +/* 37326 */ {(12<<2)|2,{100,54,0}}, +/* 37327 */ {(12<<2)|2,{100,54,0}}, +/* 37328 */ {(12<<2)|2,{100,55,0}}, +/* 37329 */ {(12<<2)|2,{100,55,0}}, +/* 37330 */ {(12<<2)|2,{100,55,0}}, +/* 37331 */ {(12<<2)|2,{100,55,0}}, +/* 37332 */ {(12<<2)|2,{100,55,0}}, +/* 37333 */ {(12<<2)|2,{100,55,0}}, +/* 37334 */ {(12<<2)|2,{100,55,0}}, +/* 37335 */ {(12<<2)|2,{100,55,0}}, +/* 37336 */ {(12<<2)|2,{100,55,0}}, +/* 37337 */ {(12<<2)|2,{100,55,0}}, +/* 37338 */ {(12<<2)|2,{100,55,0}}, +/* 37339 */ {(12<<2)|2,{100,55,0}}, +/* 37340 */ {(12<<2)|2,{100,55,0}}, +/* 37341 */ {(12<<2)|2,{100,55,0}}, +/* 37342 */ {(12<<2)|2,{100,55,0}}, +/* 37343 */ {(12<<2)|2,{100,55,0}}, +/* 37344 */ {(12<<2)|2,{100,56,0}}, +/* 37345 */ {(12<<2)|2,{100,56,0}}, +/* 37346 */ {(12<<2)|2,{100,56,0}}, +/* 37347 */ {(12<<2)|2,{100,56,0}}, +/* 37348 */ {(12<<2)|2,{100,56,0}}, +/* 37349 */ {(12<<2)|2,{100,56,0}}, +/* 37350 */ {(12<<2)|2,{100,56,0}}, +/* 37351 */ {(12<<2)|2,{100,56,0}}, +/* 37352 */ {(12<<2)|2,{100,56,0}}, +/* 37353 */ {(12<<2)|2,{100,56,0}}, +/* 37354 */ {(12<<2)|2,{100,56,0}}, +/* 37355 */ {(12<<2)|2,{100,56,0}}, +/* 37356 */ {(12<<2)|2,{100,56,0}}, +/* 37357 */ {(12<<2)|2,{100,56,0}}, +/* 37358 */ {(12<<2)|2,{100,56,0}}, +/* 37359 */ {(12<<2)|2,{100,56,0}}, +/* 37360 */ {(12<<2)|2,{100,57,0}}, +/* 37361 */ {(12<<2)|2,{100,57,0}}, +/* 37362 */ {(12<<2)|2,{100,57,0}}, +/* 37363 */ {(12<<2)|2,{100,57,0}}, +/* 37364 */ {(12<<2)|2,{100,57,0}}, +/* 37365 */ {(12<<2)|2,{100,57,0}}, +/* 37366 */ {(12<<2)|2,{100,57,0}}, +/* 37367 */ {(12<<2)|2,{100,57,0}}, +/* 37368 */ {(12<<2)|2,{100,57,0}}, +/* 37369 */ {(12<<2)|2,{100,57,0}}, +/* 37370 */ {(12<<2)|2,{100,57,0}}, +/* 37371 */ {(12<<2)|2,{100,57,0}}, +/* 37372 */ {(12<<2)|2,{100,57,0}}, +/* 37373 */ {(12<<2)|2,{100,57,0}}, +/* 37374 */ {(12<<2)|2,{100,57,0}}, +/* 37375 */ {(12<<2)|2,{100,57,0}}, +/* 37376 */ {(12<<2)|2,{100,61,0}}, +/* 37377 */ {(12<<2)|2,{100,61,0}}, +/* 37378 */ {(12<<2)|2,{100,61,0}}, +/* 37379 */ {(12<<2)|2,{100,61,0}}, +/* 37380 */ {(12<<2)|2,{100,61,0}}, +/* 37381 */ {(12<<2)|2,{100,61,0}}, +/* 37382 */ {(12<<2)|2,{100,61,0}}, +/* 37383 */ {(12<<2)|2,{100,61,0}}, +/* 37384 */ {(12<<2)|2,{100,61,0}}, +/* 37385 */ {(12<<2)|2,{100,61,0}}, +/* 37386 */ {(12<<2)|2,{100,61,0}}, +/* 37387 */ {(12<<2)|2,{100,61,0}}, +/* 37388 */ {(12<<2)|2,{100,61,0}}, +/* 37389 */ {(12<<2)|2,{100,61,0}}, +/* 37390 */ {(12<<2)|2,{100,61,0}}, +/* 37391 */ {(12<<2)|2,{100,61,0}}, +/* 37392 */ {(12<<2)|2,{100,65,0}}, +/* 37393 */ {(12<<2)|2,{100,65,0}}, +/* 37394 */ {(12<<2)|2,{100,65,0}}, +/* 37395 */ {(12<<2)|2,{100,65,0}}, +/* 37396 */ {(12<<2)|2,{100,65,0}}, +/* 37397 */ {(12<<2)|2,{100,65,0}}, +/* 37398 */ {(12<<2)|2,{100,65,0}}, +/* 37399 */ {(12<<2)|2,{100,65,0}}, +/* 37400 */ {(12<<2)|2,{100,65,0}}, +/* 37401 */ {(12<<2)|2,{100,65,0}}, +/* 37402 */ {(12<<2)|2,{100,65,0}}, +/* 37403 */ {(12<<2)|2,{100,65,0}}, +/* 37404 */ {(12<<2)|2,{100,65,0}}, +/* 37405 */ {(12<<2)|2,{100,65,0}}, +/* 37406 */ {(12<<2)|2,{100,65,0}}, +/* 37407 */ {(12<<2)|2,{100,65,0}}, +/* 37408 */ {(12<<2)|2,{100,95,0}}, +/* 37409 */ {(12<<2)|2,{100,95,0}}, +/* 37410 */ {(12<<2)|2,{100,95,0}}, +/* 37411 */ {(12<<2)|2,{100,95,0}}, +/* 37412 */ {(12<<2)|2,{100,95,0}}, +/* 37413 */ {(12<<2)|2,{100,95,0}}, +/* 37414 */ {(12<<2)|2,{100,95,0}}, +/* 37415 */ {(12<<2)|2,{100,95,0}}, +/* 37416 */ {(12<<2)|2,{100,95,0}}, +/* 37417 */ {(12<<2)|2,{100,95,0}}, +/* 37418 */ {(12<<2)|2,{100,95,0}}, +/* 37419 */ {(12<<2)|2,{100,95,0}}, +/* 37420 */ {(12<<2)|2,{100,95,0}}, +/* 37421 */ {(12<<2)|2,{100,95,0}}, +/* 37422 */ {(12<<2)|2,{100,95,0}}, +/* 37423 */ {(12<<2)|2,{100,95,0}}, +/* 37424 */ {(12<<2)|2,{100,98,0}}, +/* 37425 */ {(12<<2)|2,{100,98,0}}, +/* 37426 */ {(12<<2)|2,{100,98,0}}, +/* 37427 */ {(12<<2)|2,{100,98,0}}, +/* 37428 */ {(12<<2)|2,{100,98,0}}, +/* 37429 */ {(12<<2)|2,{100,98,0}}, +/* 37430 */ {(12<<2)|2,{100,98,0}}, +/* 37431 */ {(12<<2)|2,{100,98,0}}, +/* 37432 */ {(12<<2)|2,{100,98,0}}, +/* 37433 */ {(12<<2)|2,{100,98,0}}, +/* 37434 */ {(12<<2)|2,{100,98,0}}, +/* 37435 */ {(12<<2)|2,{100,98,0}}, +/* 37436 */ {(12<<2)|2,{100,98,0}}, +/* 37437 */ {(12<<2)|2,{100,98,0}}, +/* 37438 */ {(12<<2)|2,{100,98,0}}, +/* 37439 */ {(12<<2)|2,{100,98,0}}, +/* 37440 */ {(12<<2)|2,{100,100,0}}, +/* 37441 */ {(12<<2)|2,{100,100,0}}, +/* 37442 */ {(12<<2)|2,{100,100,0}}, +/* 37443 */ {(12<<2)|2,{100,100,0}}, +/* 37444 */ {(12<<2)|2,{100,100,0}}, +/* 37445 */ {(12<<2)|2,{100,100,0}}, +/* 37446 */ {(12<<2)|2,{100,100,0}}, +/* 37447 */ {(12<<2)|2,{100,100,0}}, +/* 37448 */ {(12<<2)|2,{100,100,0}}, +/* 37449 */ {(12<<2)|2,{100,100,0}}, +/* 37450 */ {(12<<2)|2,{100,100,0}}, +/* 37451 */ {(12<<2)|2,{100,100,0}}, +/* 37452 */ {(12<<2)|2,{100,100,0}}, +/* 37453 */ {(12<<2)|2,{100,100,0}}, +/* 37454 */ {(12<<2)|2,{100,100,0}}, +/* 37455 */ {(12<<2)|2,{100,100,0}}, +/* 37456 */ {(12<<2)|2,{100,102,0}}, +/* 37457 */ {(12<<2)|2,{100,102,0}}, +/* 37458 */ {(12<<2)|2,{100,102,0}}, +/* 37459 */ {(12<<2)|2,{100,102,0}}, +/* 37460 */ {(12<<2)|2,{100,102,0}}, +/* 37461 */ {(12<<2)|2,{100,102,0}}, +/* 37462 */ {(12<<2)|2,{100,102,0}}, +/* 37463 */ {(12<<2)|2,{100,102,0}}, +/* 37464 */ {(12<<2)|2,{100,102,0}}, +/* 37465 */ {(12<<2)|2,{100,102,0}}, +/* 37466 */ {(12<<2)|2,{100,102,0}}, +/* 37467 */ {(12<<2)|2,{100,102,0}}, +/* 37468 */ {(12<<2)|2,{100,102,0}}, +/* 37469 */ {(12<<2)|2,{100,102,0}}, +/* 37470 */ {(12<<2)|2,{100,102,0}}, +/* 37471 */ {(12<<2)|2,{100,102,0}}, +/* 37472 */ {(12<<2)|2,{100,103,0}}, +/* 37473 */ {(12<<2)|2,{100,103,0}}, +/* 37474 */ {(12<<2)|2,{100,103,0}}, +/* 37475 */ {(12<<2)|2,{100,103,0}}, +/* 37476 */ {(12<<2)|2,{100,103,0}}, +/* 37477 */ {(12<<2)|2,{100,103,0}}, +/* 37478 */ {(12<<2)|2,{100,103,0}}, +/* 37479 */ {(12<<2)|2,{100,103,0}}, +/* 37480 */ {(12<<2)|2,{100,103,0}}, +/* 37481 */ {(12<<2)|2,{100,103,0}}, +/* 37482 */ {(12<<2)|2,{100,103,0}}, +/* 37483 */ {(12<<2)|2,{100,103,0}}, +/* 37484 */ {(12<<2)|2,{100,103,0}}, +/* 37485 */ {(12<<2)|2,{100,103,0}}, +/* 37486 */ {(12<<2)|2,{100,103,0}}, +/* 37487 */ {(12<<2)|2,{100,103,0}}, +/* 37488 */ {(12<<2)|2,{100,104,0}}, +/* 37489 */ {(12<<2)|2,{100,104,0}}, +/* 37490 */ {(12<<2)|2,{100,104,0}}, +/* 37491 */ {(12<<2)|2,{100,104,0}}, +/* 37492 */ {(12<<2)|2,{100,104,0}}, +/* 37493 */ {(12<<2)|2,{100,104,0}}, +/* 37494 */ {(12<<2)|2,{100,104,0}}, +/* 37495 */ {(12<<2)|2,{100,104,0}}, +/* 37496 */ {(12<<2)|2,{100,104,0}}, +/* 37497 */ {(12<<2)|2,{100,104,0}}, +/* 37498 */ {(12<<2)|2,{100,104,0}}, +/* 37499 */ {(12<<2)|2,{100,104,0}}, +/* 37500 */ {(12<<2)|2,{100,104,0}}, +/* 37501 */ {(12<<2)|2,{100,104,0}}, +/* 37502 */ {(12<<2)|2,{100,104,0}}, +/* 37503 */ {(12<<2)|2,{100,104,0}}, +/* 37504 */ {(12<<2)|2,{100,108,0}}, +/* 37505 */ {(12<<2)|2,{100,108,0}}, +/* 37506 */ {(12<<2)|2,{100,108,0}}, +/* 37507 */ {(12<<2)|2,{100,108,0}}, +/* 37508 */ {(12<<2)|2,{100,108,0}}, +/* 37509 */ {(12<<2)|2,{100,108,0}}, +/* 37510 */ {(12<<2)|2,{100,108,0}}, +/* 37511 */ {(12<<2)|2,{100,108,0}}, +/* 37512 */ {(12<<2)|2,{100,108,0}}, +/* 37513 */ {(12<<2)|2,{100,108,0}}, +/* 37514 */ {(12<<2)|2,{100,108,0}}, +/* 37515 */ {(12<<2)|2,{100,108,0}}, +/* 37516 */ {(12<<2)|2,{100,108,0}}, +/* 37517 */ {(12<<2)|2,{100,108,0}}, +/* 37518 */ {(12<<2)|2,{100,108,0}}, +/* 37519 */ {(12<<2)|2,{100,108,0}}, +/* 37520 */ {(12<<2)|2,{100,109,0}}, +/* 37521 */ {(12<<2)|2,{100,109,0}}, +/* 37522 */ {(12<<2)|2,{100,109,0}}, +/* 37523 */ {(12<<2)|2,{100,109,0}}, +/* 37524 */ {(12<<2)|2,{100,109,0}}, +/* 37525 */ {(12<<2)|2,{100,109,0}}, +/* 37526 */ {(12<<2)|2,{100,109,0}}, +/* 37527 */ {(12<<2)|2,{100,109,0}}, +/* 37528 */ {(12<<2)|2,{100,109,0}}, +/* 37529 */ {(12<<2)|2,{100,109,0}}, +/* 37530 */ {(12<<2)|2,{100,109,0}}, +/* 37531 */ {(12<<2)|2,{100,109,0}}, +/* 37532 */ {(12<<2)|2,{100,109,0}}, +/* 37533 */ {(12<<2)|2,{100,109,0}}, +/* 37534 */ {(12<<2)|2,{100,109,0}}, +/* 37535 */ {(12<<2)|2,{100,109,0}}, +/* 37536 */ {(12<<2)|2,{100,110,0}}, +/* 37537 */ {(12<<2)|2,{100,110,0}}, +/* 37538 */ {(12<<2)|2,{100,110,0}}, +/* 37539 */ {(12<<2)|2,{100,110,0}}, +/* 37540 */ {(12<<2)|2,{100,110,0}}, +/* 37541 */ {(12<<2)|2,{100,110,0}}, +/* 37542 */ {(12<<2)|2,{100,110,0}}, +/* 37543 */ {(12<<2)|2,{100,110,0}}, +/* 37544 */ {(12<<2)|2,{100,110,0}}, +/* 37545 */ {(12<<2)|2,{100,110,0}}, +/* 37546 */ {(12<<2)|2,{100,110,0}}, +/* 37547 */ {(12<<2)|2,{100,110,0}}, +/* 37548 */ {(12<<2)|2,{100,110,0}}, +/* 37549 */ {(12<<2)|2,{100,110,0}}, +/* 37550 */ {(12<<2)|2,{100,110,0}}, +/* 37551 */ {(12<<2)|2,{100,110,0}}, +/* 37552 */ {(12<<2)|2,{100,112,0}}, +/* 37553 */ {(12<<2)|2,{100,112,0}}, +/* 37554 */ {(12<<2)|2,{100,112,0}}, +/* 37555 */ {(12<<2)|2,{100,112,0}}, +/* 37556 */ {(12<<2)|2,{100,112,0}}, +/* 37557 */ {(12<<2)|2,{100,112,0}}, +/* 37558 */ {(12<<2)|2,{100,112,0}}, +/* 37559 */ {(12<<2)|2,{100,112,0}}, +/* 37560 */ {(12<<2)|2,{100,112,0}}, +/* 37561 */ {(12<<2)|2,{100,112,0}}, +/* 37562 */ {(12<<2)|2,{100,112,0}}, +/* 37563 */ {(12<<2)|2,{100,112,0}}, +/* 37564 */ {(12<<2)|2,{100,112,0}}, +/* 37565 */ {(12<<2)|2,{100,112,0}}, +/* 37566 */ {(12<<2)|2,{100,112,0}}, +/* 37567 */ {(12<<2)|2,{100,112,0}}, +/* 37568 */ {(12<<2)|2,{100,114,0}}, +/* 37569 */ {(12<<2)|2,{100,114,0}}, +/* 37570 */ {(12<<2)|2,{100,114,0}}, +/* 37571 */ {(12<<2)|2,{100,114,0}}, +/* 37572 */ {(12<<2)|2,{100,114,0}}, +/* 37573 */ {(12<<2)|2,{100,114,0}}, +/* 37574 */ {(12<<2)|2,{100,114,0}}, +/* 37575 */ {(12<<2)|2,{100,114,0}}, +/* 37576 */ {(12<<2)|2,{100,114,0}}, +/* 37577 */ {(12<<2)|2,{100,114,0}}, +/* 37578 */ {(12<<2)|2,{100,114,0}}, +/* 37579 */ {(12<<2)|2,{100,114,0}}, +/* 37580 */ {(12<<2)|2,{100,114,0}}, +/* 37581 */ {(12<<2)|2,{100,114,0}}, +/* 37582 */ {(12<<2)|2,{100,114,0}}, +/* 37583 */ {(12<<2)|2,{100,114,0}}, +/* 37584 */ {(12<<2)|2,{100,117,0}}, +/* 37585 */ {(12<<2)|2,{100,117,0}}, +/* 37586 */ {(12<<2)|2,{100,117,0}}, +/* 37587 */ {(12<<2)|2,{100,117,0}}, +/* 37588 */ {(12<<2)|2,{100,117,0}}, +/* 37589 */ {(12<<2)|2,{100,117,0}}, +/* 37590 */ {(12<<2)|2,{100,117,0}}, +/* 37591 */ {(12<<2)|2,{100,117,0}}, +/* 37592 */ {(12<<2)|2,{100,117,0}}, +/* 37593 */ {(12<<2)|2,{100,117,0}}, +/* 37594 */ {(12<<2)|2,{100,117,0}}, +/* 37595 */ {(12<<2)|2,{100,117,0}}, +/* 37596 */ {(12<<2)|2,{100,117,0}}, +/* 37597 */ {(12<<2)|2,{100,117,0}}, +/* 37598 */ {(12<<2)|2,{100,117,0}}, +/* 37599 */ {(12<<2)|2,{100,117,0}}, +/* 37600 */ {(13<<2)|2,{100,58,0}}, +/* 37601 */ {(13<<2)|2,{100,58,0}}, +/* 37602 */ {(13<<2)|2,{100,58,0}}, +/* 37603 */ {(13<<2)|2,{100,58,0}}, +/* 37604 */ {(13<<2)|2,{100,58,0}}, +/* 37605 */ {(13<<2)|2,{100,58,0}}, +/* 37606 */ {(13<<2)|2,{100,58,0}}, +/* 37607 */ {(13<<2)|2,{100,58,0}}, +/* 37608 */ {(13<<2)|2,{100,66,0}}, +/* 37609 */ {(13<<2)|2,{100,66,0}}, +/* 37610 */ {(13<<2)|2,{100,66,0}}, +/* 37611 */ {(13<<2)|2,{100,66,0}}, +/* 37612 */ {(13<<2)|2,{100,66,0}}, +/* 37613 */ {(13<<2)|2,{100,66,0}}, +/* 37614 */ {(13<<2)|2,{100,66,0}}, +/* 37615 */ {(13<<2)|2,{100,66,0}}, +/* 37616 */ {(13<<2)|2,{100,67,0}}, +/* 37617 */ {(13<<2)|2,{100,67,0}}, +/* 37618 */ {(13<<2)|2,{100,67,0}}, +/* 37619 */ {(13<<2)|2,{100,67,0}}, +/* 37620 */ {(13<<2)|2,{100,67,0}}, +/* 37621 */ {(13<<2)|2,{100,67,0}}, +/* 37622 */ {(13<<2)|2,{100,67,0}}, +/* 37623 */ {(13<<2)|2,{100,67,0}}, +/* 37624 */ {(13<<2)|2,{100,68,0}}, +/* 37625 */ {(13<<2)|2,{100,68,0}}, +/* 37626 */ {(13<<2)|2,{100,68,0}}, +/* 37627 */ {(13<<2)|2,{100,68,0}}, +/* 37628 */ {(13<<2)|2,{100,68,0}}, +/* 37629 */ {(13<<2)|2,{100,68,0}}, +/* 37630 */ {(13<<2)|2,{100,68,0}}, +/* 37631 */ {(13<<2)|2,{100,68,0}}, +/* 37632 */ {(13<<2)|2,{100,69,0}}, +/* 37633 */ {(13<<2)|2,{100,69,0}}, +/* 37634 */ {(13<<2)|2,{100,69,0}}, +/* 37635 */ {(13<<2)|2,{100,69,0}}, +/* 37636 */ {(13<<2)|2,{100,69,0}}, +/* 37637 */ {(13<<2)|2,{100,69,0}}, +/* 37638 */ {(13<<2)|2,{100,69,0}}, +/* 37639 */ {(13<<2)|2,{100,69,0}}, +/* 37640 */ {(13<<2)|2,{100,70,0}}, +/* 37641 */ {(13<<2)|2,{100,70,0}}, +/* 37642 */ {(13<<2)|2,{100,70,0}}, +/* 37643 */ {(13<<2)|2,{100,70,0}}, +/* 37644 */ {(13<<2)|2,{100,70,0}}, +/* 37645 */ {(13<<2)|2,{100,70,0}}, +/* 37646 */ {(13<<2)|2,{100,70,0}}, +/* 37647 */ {(13<<2)|2,{100,70,0}}, +/* 37648 */ {(13<<2)|2,{100,71,0}}, +/* 37649 */ {(13<<2)|2,{100,71,0}}, +/* 37650 */ {(13<<2)|2,{100,71,0}}, +/* 37651 */ {(13<<2)|2,{100,71,0}}, +/* 37652 */ {(13<<2)|2,{100,71,0}}, +/* 37653 */ {(13<<2)|2,{100,71,0}}, +/* 37654 */ {(13<<2)|2,{100,71,0}}, +/* 37655 */ {(13<<2)|2,{100,71,0}}, +/* 37656 */ {(13<<2)|2,{100,72,0}}, +/* 37657 */ {(13<<2)|2,{100,72,0}}, +/* 37658 */ {(13<<2)|2,{100,72,0}}, +/* 37659 */ {(13<<2)|2,{100,72,0}}, +/* 37660 */ {(13<<2)|2,{100,72,0}}, +/* 37661 */ {(13<<2)|2,{100,72,0}}, +/* 37662 */ {(13<<2)|2,{100,72,0}}, +/* 37663 */ {(13<<2)|2,{100,72,0}}, +/* 37664 */ {(13<<2)|2,{100,73,0}}, +/* 37665 */ {(13<<2)|2,{100,73,0}}, +/* 37666 */ {(13<<2)|2,{100,73,0}}, +/* 37667 */ {(13<<2)|2,{100,73,0}}, +/* 37668 */ {(13<<2)|2,{100,73,0}}, +/* 37669 */ {(13<<2)|2,{100,73,0}}, +/* 37670 */ {(13<<2)|2,{100,73,0}}, +/* 37671 */ {(13<<2)|2,{100,73,0}}, +/* 37672 */ {(13<<2)|2,{100,74,0}}, +/* 37673 */ {(13<<2)|2,{100,74,0}}, +/* 37674 */ {(13<<2)|2,{100,74,0}}, +/* 37675 */ {(13<<2)|2,{100,74,0}}, +/* 37676 */ {(13<<2)|2,{100,74,0}}, +/* 37677 */ {(13<<2)|2,{100,74,0}}, +/* 37678 */ {(13<<2)|2,{100,74,0}}, +/* 37679 */ {(13<<2)|2,{100,74,0}}, +/* 37680 */ {(13<<2)|2,{100,75,0}}, +/* 37681 */ {(13<<2)|2,{100,75,0}}, +/* 37682 */ {(13<<2)|2,{100,75,0}}, +/* 37683 */ {(13<<2)|2,{100,75,0}}, +/* 37684 */ {(13<<2)|2,{100,75,0}}, +/* 37685 */ {(13<<2)|2,{100,75,0}}, +/* 37686 */ {(13<<2)|2,{100,75,0}}, +/* 37687 */ {(13<<2)|2,{100,75,0}}, +/* 37688 */ {(13<<2)|2,{100,76,0}}, +/* 37689 */ {(13<<2)|2,{100,76,0}}, +/* 37690 */ {(13<<2)|2,{100,76,0}}, +/* 37691 */ {(13<<2)|2,{100,76,0}}, +/* 37692 */ {(13<<2)|2,{100,76,0}}, +/* 37693 */ {(13<<2)|2,{100,76,0}}, +/* 37694 */ {(13<<2)|2,{100,76,0}}, +/* 37695 */ {(13<<2)|2,{100,76,0}}, +/* 37696 */ {(13<<2)|2,{100,77,0}}, +/* 37697 */ {(13<<2)|2,{100,77,0}}, +/* 37698 */ {(13<<2)|2,{100,77,0}}, +/* 37699 */ {(13<<2)|2,{100,77,0}}, +/* 37700 */ {(13<<2)|2,{100,77,0}}, +/* 37701 */ {(13<<2)|2,{100,77,0}}, +/* 37702 */ {(13<<2)|2,{100,77,0}}, +/* 37703 */ {(13<<2)|2,{100,77,0}}, +/* 37704 */ {(13<<2)|2,{100,78,0}}, +/* 37705 */ {(13<<2)|2,{100,78,0}}, +/* 37706 */ {(13<<2)|2,{100,78,0}}, +/* 37707 */ {(13<<2)|2,{100,78,0}}, +/* 37708 */ {(13<<2)|2,{100,78,0}}, +/* 37709 */ {(13<<2)|2,{100,78,0}}, +/* 37710 */ {(13<<2)|2,{100,78,0}}, +/* 37711 */ {(13<<2)|2,{100,78,0}}, +/* 37712 */ {(13<<2)|2,{100,79,0}}, +/* 37713 */ {(13<<2)|2,{100,79,0}}, +/* 37714 */ {(13<<2)|2,{100,79,0}}, +/* 37715 */ {(13<<2)|2,{100,79,0}}, +/* 37716 */ {(13<<2)|2,{100,79,0}}, +/* 37717 */ {(13<<2)|2,{100,79,0}}, +/* 37718 */ {(13<<2)|2,{100,79,0}}, +/* 37719 */ {(13<<2)|2,{100,79,0}}, +/* 37720 */ {(13<<2)|2,{100,80,0}}, +/* 37721 */ {(13<<2)|2,{100,80,0}}, +/* 37722 */ {(13<<2)|2,{100,80,0}}, +/* 37723 */ {(13<<2)|2,{100,80,0}}, +/* 37724 */ {(13<<2)|2,{100,80,0}}, +/* 37725 */ {(13<<2)|2,{100,80,0}}, +/* 37726 */ {(13<<2)|2,{100,80,0}}, +/* 37727 */ {(13<<2)|2,{100,80,0}}, +/* 37728 */ {(13<<2)|2,{100,81,0}}, +/* 37729 */ {(13<<2)|2,{100,81,0}}, +/* 37730 */ {(13<<2)|2,{100,81,0}}, +/* 37731 */ {(13<<2)|2,{100,81,0}}, +/* 37732 */ {(13<<2)|2,{100,81,0}}, +/* 37733 */ {(13<<2)|2,{100,81,0}}, +/* 37734 */ {(13<<2)|2,{100,81,0}}, +/* 37735 */ {(13<<2)|2,{100,81,0}}, +/* 37736 */ {(13<<2)|2,{100,82,0}}, +/* 37737 */ {(13<<2)|2,{100,82,0}}, +/* 37738 */ {(13<<2)|2,{100,82,0}}, +/* 37739 */ {(13<<2)|2,{100,82,0}}, +/* 37740 */ {(13<<2)|2,{100,82,0}}, +/* 37741 */ {(13<<2)|2,{100,82,0}}, +/* 37742 */ {(13<<2)|2,{100,82,0}}, +/* 37743 */ {(13<<2)|2,{100,82,0}}, +/* 37744 */ {(13<<2)|2,{100,83,0}}, +/* 37745 */ {(13<<2)|2,{100,83,0}}, +/* 37746 */ {(13<<2)|2,{100,83,0}}, +/* 37747 */ {(13<<2)|2,{100,83,0}}, +/* 37748 */ {(13<<2)|2,{100,83,0}}, +/* 37749 */ {(13<<2)|2,{100,83,0}}, +/* 37750 */ {(13<<2)|2,{100,83,0}}, +/* 37751 */ {(13<<2)|2,{100,83,0}}, +/* 37752 */ {(13<<2)|2,{100,84,0}}, +/* 37753 */ {(13<<2)|2,{100,84,0}}, +/* 37754 */ {(13<<2)|2,{100,84,0}}, +/* 37755 */ {(13<<2)|2,{100,84,0}}, +/* 37756 */ {(13<<2)|2,{100,84,0}}, +/* 37757 */ {(13<<2)|2,{100,84,0}}, +/* 37758 */ {(13<<2)|2,{100,84,0}}, +/* 37759 */ {(13<<2)|2,{100,84,0}}, +/* 37760 */ {(13<<2)|2,{100,85,0}}, +/* 37761 */ {(13<<2)|2,{100,85,0}}, +/* 37762 */ {(13<<2)|2,{100,85,0}}, +/* 37763 */ {(13<<2)|2,{100,85,0}}, +/* 37764 */ {(13<<2)|2,{100,85,0}}, +/* 37765 */ {(13<<2)|2,{100,85,0}}, +/* 37766 */ {(13<<2)|2,{100,85,0}}, +/* 37767 */ {(13<<2)|2,{100,85,0}}, +/* 37768 */ {(13<<2)|2,{100,86,0}}, +/* 37769 */ {(13<<2)|2,{100,86,0}}, +/* 37770 */ {(13<<2)|2,{100,86,0}}, +/* 37771 */ {(13<<2)|2,{100,86,0}}, +/* 37772 */ {(13<<2)|2,{100,86,0}}, +/* 37773 */ {(13<<2)|2,{100,86,0}}, +/* 37774 */ {(13<<2)|2,{100,86,0}}, +/* 37775 */ {(13<<2)|2,{100,86,0}}, +/* 37776 */ {(13<<2)|2,{100,87,0}}, +/* 37777 */ {(13<<2)|2,{100,87,0}}, +/* 37778 */ {(13<<2)|2,{100,87,0}}, +/* 37779 */ {(13<<2)|2,{100,87,0}}, +/* 37780 */ {(13<<2)|2,{100,87,0}}, +/* 37781 */ {(13<<2)|2,{100,87,0}}, +/* 37782 */ {(13<<2)|2,{100,87,0}}, +/* 37783 */ {(13<<2)|2,{100,87,0}}, +/* 37784 */ {(13<<2)|2,{100,89,0}}, +/* 37785 */ {(13<<2)|2,{100,89,0}}, +/* 37786 */ {(13<<2)|2,{100,89,0}}, +/* 37787 */ {(13<<2)|2,{100,89,0}}, +/* 37788 */ {(13<<2)|2,{100,89,0}}, +/* 37789 */ {(13<<2)|2,{100,89,0}}, +/* 37790 */ {(13<<2)|2,{100,89,0}}, +/* 37791 */ {(13<<2)|2,{100,89,0}}, +/* 37792 */ {(13<<2)|2,{100,106,0}}, +/* 37793 */ {(13<<2)|2,{100,106,0}}, +/* 37794 */ {(13<<2)|2,{100,106,0}}, +/* 37795 */ {(13<<2)|2,{100,106,0}}, +/* 37796 */ {(13<<2)|2,{100,106,0}}, +/* 37797 */ {(13<<2)|2,{100,106,0}}, +/* 37798 */ {(13<<2)|2,{100,106,0}}, +/* 37799 */ {(13<<2)|2,{100,106,0}}, +/* 37800 */ {(13<<2)|2,{100,107,0}}, +/* 37801 */ {(13<<2)|2,{100,107,0}}, +/* 37802 */ {(13<<2)|2,{100,107,0}}, +/* 37803 */ {(13<<2)|2,{100,107,0}}, +/* 37804 */ {(13<<2)|2,{100,107,0}}, +/* 37805 */ {(13<<2)|2,{100,107,0}}, +/* 37806 */ {(13<<2)|2,{100,107,0}}, +/* 37807 */ {(13<<2)|2,{100,107,0}}, +/* 37808 */ {(13<<2)|2,{100,113,0}}, +/* 37809 */ {(13<<2)|2,{100,113,0}}, +/* 37810 */ {(13<<2)|2,{100,113,0}}, +/* 37811 */ {(13<<2)|2,{100,113,0}}, +/* 37812 */ {(13<<2)|2,{100,113,0}}, +/* 37813 */ {(13<<2)|2,{100,113,0}}, +/* 37814 */ {(13<<2)|2,{100,113,0}}, +/* 37815 */ {(13<<2)|2,{100,113,0}}, +/* 37816 */ {(13<<2)|2,{100,118,0}}, +/* 37817 */ {(13<<2)|2,{100,118,0}}, +/* 37818 */ {(13<<2)|2,{100,118,0}}, +/* 37819 */ {(13<<2)|2,{100,118,0}}, +/* 37820 */ {(13<<2)|2,{100,118,0}}, +/* 37821 */ {(13<<2)|2,{100,118,0}}, +/* 37822 */ {(13<<2)|2,{100,118,0}}, +/* 37823 */ {(13<<2)|2,{100,118,0}}, +/* 37824 */ {(13<<2)|2,{100,119,0}}, +/* 37825 */ {(13<<2)|2,{100,119,0}}, +/* 37826 */ {(13<<2)|2,{100,119,0}}, +/* 37827 */ {(13<<2)|2,{100,119,0}}, +/* 37828 */ {(13<<2)|2,{100,119,0}}, +/* 37829 */ {(13<<2)|2,{100,119,0}}, +/* 37830 */ {(13<<2)|2,{100,119,0}}, +/* 37831 */ {(13<<2)|2,{100,119,0}}, +/* 37832 */ {(13<<2)|2,{100,120,0}}, +/* 37833 */ {(13<<2)|2,{100,120,0}}, +/* 37834 */ {(13<<2)|2,{100,120,0}}, +/* 37835 */ {(13<<2)|2,{100,120,0}}, +/* 37836 */ {(13<<2)|2,{100,120,0}}, +/* 37837 */ {(13<<2)|2,{100,120,0}}, +/* 37838 */ {(13<<2)|2,{100,120,0}}, +/* 37839 */ {(13<<2)|2,{100,120,0}}, +/* 37840 */ {(13<<2)|2,{100,121,0}}, +/* 37841 */ {(13<<2)|2,{100,121,0}}, +/* 37842 */ {(13<<2)|2,{100,121,0}}, +/* 37843 */ {(13<<2)|2,{100,121,0}}, +/* 37844 */ {(13<<2)|2,{100,121,0}}, +/* 37845 */ {(13<<2)|2,{100,121,0}}, +/* 37846 */ {(13<<2)|2,{100,121,0}}, +/* 37847 */ {(13<<2)|2,{100,121,0}}, +/* 37848 */ {(13<<2)|2,{100,122,0}}, +/* 37849 */ {(13<<2)|2,{100,122,0}}, +/* 37850 */ {(13<<2)|2,{100,122,0}}, +/* 37851 */ {(13<<2)|2,{100,122,0}}, +/* 37852 */ {(13<<2)|2,{100,122,0}}, +/* 37853 */ {(13<<2)|2,{100,122,0}}, +/* 37854 */ {(13<<2)|2,{100,122,0}}, +/* 37855 */ {(13<<2)|2,{100,122,0}}, +/* 37856 */ {(14<<2)|2,{100,38,0}}, +/* 37857 */ {(14<<2)|2,{100,38,0}}, +/* 37858 */ {(14<<2)|2,{100,38,0}}, +/* 37859 */ {(14<<2)|2,{100,38,0}}, +/* 37860 */ {(14<<2)|2,{100,42,0}}, +/* 37861 */ {(14<<2)|2,{100,42,0}}, +/* 37862 */ {(14<<2)|2,{100,42,0}}, +/* 37863 */ {(14<<2)|2,{100,42,0}}, +/* 37864 */ {(14<<2)|2,{100,44,0}}, +/* 37865 */ {(14<<2)|2,{100,44,0}}, +/* 37866 */ {(14<<2)|2,{100,44,0}}, +/* 37867 */ {(14<<2)|2,{100,44,0}}, +/* 37868 */ {(14<<2)|2,{100,59,0}}, +/* 37869 */ {(14<<2)|2,{100,59,0}}, +/* 37870 */ {(14<<2)|2,{100,59,0}}, +/* 37871 */ {(14<<2)|2,{100,59,0}}, +/* 37872 */ {(14<<2)|2,{100,88,0}}, +/* 37873 */ {(14<<2)|2,{100,88,0}}, +/* 37874 */ {(14<<2)|2,{100,88,0}}, +/* 37875 */ {(14<<2)|2,{100,88,0}}, +/* 37876 */ {(14<<2)|2,{100,90,0}}, +/* 37877 */ {(14<<2)|2,{100,90,0}}, +/* 37878 */ {(14<<2)|2,{100,90,0}}, +/* 37879 */ {(14<<2)|2,{100,90,0}}, +/* 37880 */ {(16<<2)|2,{100,33,0}}, +/* 37881 */ {(16<<2)|2,{100,34,0}}, +/* 37882 */ {(16<<2)|2,{100,40,0}}, +/* 37883 */ {(16<<2)|2,{100,41,0}}, +/* 37884 */ {(16<<2)|2,{100,63,0}}, +/* 37885 */ {(6<<2)|1,{100,0,0}}, +/* 37886 */ {(6<<2)|1,{100,0,0}}, +/* 37887 */ {(6<<2)|1,{100,0,0}}, +/* 37888 */ {(16<<2)|3,{102,48,48}}, +/* 37889 */ {(16<<2)|3,{102,48,49}}, +/* 37890 */ {(16<<2)|3,{102,48,50}}, +/* 37891 */ {(16<<2)|3,{102,48,97}}, +/* 37892 */ {(16<<2)|3,{102,48,99}}, +/* 37893 */ {(16<<2)|3,{102,48,101}}, +/* 37894 */ {(16<<2)|3,{102,48,105}}, +/* 37895 */ {(16<<2)|3,{102,48,111}}, +/* 37896 */ {(16<<2)|3,{102,48,115}}, +/* 37897 */ {(16<<2)|3,{102,48,116}}, +/* 37898 */ {(11<<2)|2,{102,48,0}}, +/* 37899 */ {(11<<2)|2,{102,48,0}}, +/* 37900 */ {(11<<2)|2,{102,48,0}}, +/* 37901 */ {(11<<2)|2,{102,48,0}}, +/* 37902 */ {(11<<2)|2,{102,48,0}}, +/* 37903 */ {(11<<2)|2,{102,48,0}}, +/* 37904 */ {(11<<2)|2,{102,48,0}}, +/* 37905 */ {(11<<2)|2,{102,48,0}}, +/* 37906 */ {(11<<2)|2,{102,48,0}}, +/* 37907 */ {(11<<2)|2,{102,48,0}}, +/* 37908 */ {(11<<2)|2,{102,48,0}}, +/* 37909 */ {(11<<2)|2,{102,48,0}}, +/* 37910 */ {(11<<2)|2,{102,48,0}}, +/* 37911 */ {(11<<2)|2,{102,48,0}}, +/* 37912 */ {(11<<2)|2,{102,48,0}}, +/* 37913 */ {(11<<2)|2,{102,48,0}}, +/* 37914 */ {(11<<2)|2,{102,48,0}}, +/* 37915 */ {(11<<2)|2,{102,48,0}}, +/* 37916 */ {(11<<2)|2,{102,48,0}}, +/* 37917 */ {(11<<2)|2,{102,48,0}}, +/* 37918 */ {(11<<2)|2,{102,48,0}}, +/* 37919 */ {(11<<2)|2,{102,48,0}}, +/* 37920 */ {(16<<2)|3,{102,49,48}}, +/* 37921 */ {(16<<2)|3,{102,49,49}}, +/* 37922 */ {(16<<2)|3,{102,49,50}}, +/* 37923 */ {(16<<2)|3,{102,49,97}}, +/* 37924 */ {(16<<2)|3,{102,49,99}}, +/* 37925 */ {(16<<2)|3,{102,49,101}}, +/* 37926 */ {(16<<2)|3,{102,49,105}}, +/* 37927 */ {(16<<2)|3,{102,49,111}}, +/* 37928 */ {(16<<2)|3,{102,49,115}}, +/* 37929 */ {(16<<2)|3,{102,49,116}}, +/* 37930 */ {(11<<2)|2,{102,49,0}}, +/* 37931 */ {(11<<2)|2,{102,49,0}}, +/* 37932 */ {(11<<2)|2,{102,49,0}}, +/* 37933 */ {(11<<2)|2,{102,49,0}}, +/* 37934 */ {(11<<2)|2,{102,49,0}}, +/* 37935 */ {(11<<2)|2,{102,49,0}}, +/* 37936 */ {(11<<2)|2,{102,49,0}}, +/* 37937 */ {(11<<2)|2,{102,49,0}}, +/* 37938 */ {(11<<2)|2,{102,49,0}}, +/* 37939 */ {(11<<2)|2,{102,49,0}}, +/* 37940 */ {(11<<2)|2,{102,49,0}}, +/* 37941 */ {(11<<2)|2,{102,49,0}}, +/* 37942 */ {(11<<2)|2,{102,49,0}}, +/* 37943 */ {(11<<2)|2,{102,49,0}}, +/* 37944 */ {(11<<2)|2,{102,49,0}}, +/* 37945 */ {(11<<2)|2,{102,49,0}}, +/* 37946 */ {(11<<2)|2,{102,49,0}}, +/* 37947 */ {(11<<2)|2,{102,49,0}}, +/* 37948 */ {(11<<2)|2,{102,49,0}}, +/* 37949 */ {(11<<2)|2,{102,49,0}}, +/* 37950 */ {(11<<2)|2,{102,49,0}}, +/* 37951 */ {(11<<2)|2,{102,49,0}}, +/* 37952 */ {(16<<2)|3,{102,50,48}}, +/* 37953 */ {(16<<2)|3,{102,50,49}}, +/* 37954 */ {(16<<2)|3,{102,50,50}}, +/* 37955 */ {(16<<2)|3,{102,50,97}}, +/* 37956 */ {(16<<2)|3,{102,50,99}}, +/* 37957 */ {(16<<2)|3,{102,50,101}}, +/* 37958 */ {(16<<2)|3,{102,50,105}}, +/* 37959 */ {(16<<2)|3,{102,50,111}}, +/* 37960 */ {(16<<2)|3,{102,50,115}}, +/* 37961 */ {(16<<2)|3,{102,50,116}}, +/* 37962 */ {(11<<2)|2,{102,50,0}}, +/* 37963 */ {(11<<2)|2,{102,50,0}}, +/* 37964 */ {(11<<2)|2,{102,50,0}}, +/* 37965 */ {(11<<2)|2,{102,50,0}}, +/* 37966 */ {(11<<2)|2,{102,50,0}}, +/* 37967 */ {(11<<2)|2,{102,50,0}}, +/* 37968 */ {(11<<2)|2,{102,50,0}}, +/* 37969 */ {(11<<2)|2,{102,50,0}}, +/* 37970 */ {(11<<2)|2,{102,50,0}}, +/* 37971 */ {(11<<2)|2,{102,50,0}}, +/* 37972 */ {(11<<2)|2,{102,50,0}}, +/* 37973 */ {(11<<2)|2,{102,50,0}}, +/* 37974 */ {(11<<2)|2,{102,50,0}}, +/* 37975 */ {(11<<2)|2,{102,50,0}}, +/* 37976 */ {(11<<2)|2,{102,50,0}}, +/* 37977 */ {(11<<2)|2,{102,50,0}}, +/* 37978 */ {(11<<2)|2,{102,50,0}}, +/* 37979 */ {(11<<2)|2,{102,50,0}}, +/* 37980 */ {(11<<2)|2,{102,50,0}}, +/* 37981 */ {(11<<2)|2,{102,50,0}}, +/* 37982 */ {(11<<2)|2,{102,50,0}}, +/* 37983 */ {(11<<2)|2,{102,50,0}}, +/* 37984 */ {(16<<2)|3,{102,97,48}}, +/* 37985 */ {(16<<2)|3,{102,97,49}}, +/* 37986 */ {(16<<2)|3,{102,97,50}}, +/* 37987 */ {(16<<2)|3,{102,97,97}}, +/* 37988 */ {(16<<2)|3,{102,97,99}}, +/* 37989 */ {(16<<2)|3,{102,97,101}}, +/* 37990 */ {(16<<2)|3,{102,97,105}}, +/* 37991 */ {(16<<2)|3,{102,97,111}}, +/* 37992 */ {(16<<2)|3,{102,97,115}}, +/* 37993 */ {(16<<2)|3,{102,97,116}}, +/* 37994 */ {(11<<2)|2,{102,97,0}}, +/* 37995 */ {(11<<2)|2,{102,97,0}}, +/* 37996 */ {(11<<2)|2,{102,97,0}}, +/* 37997 */ {(11<<2)|2,{102,97,0}}, +/* 37998 */ {(11<<2)|2,{102,97,0}}, +/* 37999 */ {(11<<2)|2,{102,97,0}}, +/* 38000 */ {(11<<2)|2,{102,97,0}}, +/* 38001 */ {(11<<2)|2,{102,97,0}}, +/* 38002 */ {(11<<2)|2,{102,97,0}}, +/* 38003 */ {(11<<2)|2,{102,97,0}}, +/* 38004 */ {(11<<2)|2,{102,97,0}}, +/* 38005 */ {(11<<2)|2,{102,97,0}}, +/* 38006 */ {(11<<2)|2,{102,97,0}}, +/* 38007 */ {(11<<2)|2,{102,97,0}}, +/* 38008 */ {(11<<2)|2,{102,97,0}}, +/* 38009 */ {(11<<2)|2,{102,97,0}}, +/* 38010 */ {(11<<2)|2,{102,97,0}}, +/* 38011 */ {(11<<2)|2,{102,97,0}}, +/* 38012 */ {(11<<2)|2,{102,97,0}}, +/* 38013 */ {(11<<2)|2,{102,97,0}}, +/* 38014 */ {(11<<2)|2,{102,97,0}}, +/* 38015 */ {(11<<2)|2,{102,97,0}}, +/* 38016 */ {(16<<2)|3,{102,99,48}}, +/* 38017 */ {(16<<2)|3,{102,99,49}}, +/* 38018 */ {(16<<2)|3,{102,99,50}}, +/* 38019 */ {(16<<2)|3,{102,99,97}}, +/* 38020 */ {(16<<2)|3,{102,99,99}}, +/* 38021 */ {(16<<2)|3,{102,99,101}}, +/* 38022 */ {(16<<2)|3,{102,99,105}}, +/* 38023 */ {(16<<2)|3,{102,99,111}}, +/* 38024 */ {(16<<2)|3,{102,99,115}}, +/* 38025 */ {(16<<2)|3,{102,99,116}}, +/* 38026 */ {(11<<2)|2,{102,99,0}}, +/* 38027 */ {(11<<2)|2,{102,99,0}}, +/* 38028 */ {(11<<2)|2,{102,99,0}}, +/* 38029 */ {(11<<2)|2,{102,99,0}}, +/* 38030 */ {(11<<2)|2,{102,99,0}}, +/* 38031 */ {(11<<2)|2,{102,99,0}}, +/* 38032 */ {(11<<2)|2,{102,99,0}}, +/* 38033 */ {(11<<2)|2,{102,99,0}}, +/* 38034 */ {(11<<2)|2,{102,99,0}}, +/* 38035 */ {(11<<2)|2,{102,99,0}}, +/* 38036 */ {(11<<2)|2,{102,99,0}}, +/* 38037 */ {(11<<2)|2,{102,99,0}}, +/* 38038 */ {(11<<2)|2,{102,99,0}}, +/* 38039 */ {(11<<2)|2,{102,99,0}}, +/* 38040 */ {(11<<2)|2,{102,99,0}}, +/* 38041 */ {(11<<2)|2,{102,99,0}}, +/* 38042 */ {(11<<2)|2,{102,99,0}}, +/* 38043 */ {(11<<2)|2,{102,99,0}}, +/* 38044 */ {(11<<2)|2,{102,99,0}}, +/* 38045 */ {(11<<2)|2,{102,99,0}}, +/* 38046 */ {(11<<2)|2,{102,99,0}}, +/* 38047 */ {(11<<2)|2,{102,99,0}}, +/* 38048 */ {(16<<2)|3,{102,101,48}}, +/* 38049 */ {(16<<2)|3,{102,101,49}}, +/* 38050 */ {(16<<2)|3,{102,101,50}}, +/* 38051 */ {(16<<2)|3,{102,101,97}}, +/* 38052 */ {(16<<2)|3,{102,101,99}}, +/* 38053 */ {(16<<2)|3,{102,101,101}}, +/* 38054 */ {(16<<2)|3,{102,101,105}}, +/* 38055 */ {(16<<2)|3,{102,101,111}}, +/* 38056 */ {(16<<2)|3,{102,101,115}}, +/* 38057 */ {(16<<2)|3,{102,101,116}}, +/* 38058 */ {(11<<2)|2,{102,101,0}}, +/* 38059 */ {(11<<2)|2,{102,101,0}}, +/* 38060 */ {(11<<2)|2,{102,101,0}}, +/* 38061 */ {(11<<2)|2,{102,101,0}}, +/* 38062 */ {(11<<2)|2,{102,101,0}}, +/* 38063 */ {(11<<2)|2,{102,101,0}}, +/* 38064 */ {(11<<2)|2,{102,101,0}}, +/* 38065 */ {(11<<2)|2,{102,101,0}}, +/* 38066 */ {(11<<2)|2,{102,101,0}}, +/* 38067 */ {(11<<2)|2,{102,101,0}}, +/* 38068 */ {(11<<2)|2,{102,101,0}}, +/* 38069 */ {(11<<2)|2,{102,101,0}}, +/* 38070 */ {(11<<2)|2,{102,101,0}}, +/* 38071 */ {(11<<2)|2,{102,101,0}}, +/* 38072 */ {(11<<2)|2,{102,101,0}}, +/* 38073 */ {(11<<2)|2,{102,101,0}}, +/* 38074 */ {(11<<2)|2,{102,101,0}}, +/* 38075 */ {(11<<2)|2,{102,101,0}}, +/* 38076 */ {(11<<2)|2,{102,101,0}}, +/* 38077 */ {(11<<2)|2,{102,101,0}}, +/* 38078 */ {(11<<2)|2,{102,101,0}}, +/* 38079 */ {(11<<2)|2,{102,101,0}}, +/* 38080 */ {(16<<2)|3,{102,105,48}}, +/* 38081 */ {(16<<2)|3,{102,105,49}}, +/* 38082 */ {(16<<2)|3,{102,105,50}}, +/* 38083 */ {(16<<2)|3,{102,105,97}}, +/* 38084 */ {(16<<2)|3,{102,105,99}}, +/* 38085 */ {(16<<2)|3,{102,105,101}}, +/* 38086 */ {(16<<2)|3,{102,105,105}}, +/* 38087 */ {(16<<2)|3,{102,105,111}}, +/* 38088 */ {(16<<2)|3,{102,105,115}}, +/* 38089 */ {(16<<2)|3,{102,105,116}}, +/* 38090 */ {(11<<2)|2,{102,105,0}}, +/* 38091 */ {(11<<2)|2,{102,105,0}}, +/* 38092 */ {(11<<2)|2,{102,105,0}}, +/* 38093 */ {(11<<2)|2,{102,105,0}}, +/* 38094 */ {(11<<2)|2,{102,105,0}}, +/* 38095 */ {(11<<2)|2,{102,105,0}}, +/* 38096 */ {(11<<2)|2,{102,105,0}}, +/* 38097 */ {(11<<2)|2,{102,105,0}}, +/* 38098 */ {(11<<2)|2,{102,105,0}}, +/* 38099 */ {(11<<2)|2,{102,105,0}}, +/* 38100 */ {(11<<2)|2,{102,105,0}}, +/* 38101 */ {(11<<2)|2,{102,105,0}}, +/* 38102 */ {(11<<2)|2,{102,105,0}}, +/* 38103 */ {(11<<2)|2,{102,105,0}}, +/* 38104 */ {(11<<2)|2,{102,105,0}}, +/* 38105 */ {(11<<2)|2,{102,105,0}}, +/* 38106 */ {(11<<2)|2,{102,105,0}}, +/* 38107 */ {(11<<2)|2,{102,105,0}}, +/* 38108 */ {(11<<2)|2,{102,105,0}}, +/* 38109 */ {(11<<2)|2,{102,105,0}}, +/* 38110 */ {(11<<2)|2,{102,105,0}}, +/* 38111 */ {(11<<2)|2,{102,105,0}}, +/* 38112 */ {(16<<2)|3,{102,111,48}}, +/* 38113 */ {(16<<2)|3,{102,111,49}}, +/* 38114 */ {(16<<2)|3,{102,111,50}}, +/* 38115 */ {(16<<2)|3,{102,111,97}}, +/* 38116 */ {(16<<2)|3,{102,111,99}}, +/* 38117 */ {(16<<2)|3,{102,111,101}}, +/* 38118 */ {(16<<2)|3,{102,111,105}}, +/* 38119 */ {(16<<2)|3,{102,111,111}}, +/* 38120 */ {(16<<2)|3,{102,111,115}}, +/* 38121 */ {(16<<2)|3,{102,111,116}}, +/* 38122 */ {(11<<2)|2,{102,111,0}}, +/* 38123 */ {(11<<2)|2,{102,111,0}}, +/* 38124 */ {(11<<2)|2,{102,111,0}}, +/* 38125 */ {(11<<2)|2,{102,111,0}}, +/* 38126 */ {(11<<2)|2,{102,111,0}}, +/* 38127 */ {(11<<2)|2,{102,111,0}}, +/* 38128 */ {(11<<2)|2,{102,111,0}}, +/* 38129 */ {(11<<2)|2,{102,111,0}}, +/* 38130 */ {(11<<2)|2,{102,111,0}}, +/* 38131 */ {(11<<2)|2,{102,111,0}}, +/* 38132 */ {(11<<2)|2,{102,111,0}}, +/* 38133 */ {(11<<2)|2,{102,111,0}}, +/* 38134 */ {(11<<2)|2,{102,111,0}}, +/* 38135 */ {(11<<2)|2,{102,111,0}}, +/* 38136 */ {(11<<2)|2,{102,111,0}}, +/* 38137 */ {(11<<2)|2,{102,111,0}}, +/* 38138 */ {(11<<2)|2,{102,111,0}}, +/* 38139 */ {(11<<2)|2,{102,111,0}}, +/* 38140 */ {(11<<2)|2,{102,111,0}}, +/* 38141 */ {(11<<2)|2,{102,111,0}}, +/* 38142 */ {(11<<2)|2,{102,111,0}}, +/* 38143 */ {(11<<2)|2,{102,111,0}}, +/* 38144 */ {(16<<2)|3,{102,115,48}}, +/* 38145 */ {(16<<2)|3,{102,115,49}}, +/* 38146 */ {(16<<2)|3,{102,115,50}}, +/* 38147 */ {(16<<2)|3,{102,115,97}}, +/* 38148 */ {(16<<2)|3,{102,115,99}}, +/* 38149 */ {(16<<2)|3,{102,115,101}}, +/* 38150 */ {(16<<2)|3,{102,115,105}}, +/* 38151 */ {(16<<2)|3,{102,115,111}}, +/* 38152 */ {(16<<2)|3,{102,115,115}}, +/* 38153 */ {(16<<2)|3,{102,115,116}}, +/* 38154 */ {(11<<2)|2,{102,115,0}}, +/* 38155 */ {(11<<2)|2,{102,115,0}}, +/* 38156 */ {(11<<2)|2,{102,115,0}}, +/* 38157 */ {(11<<2)|2,{102,115,0}}, +/* 38158 */ {(11<<2)|2,{102,115,0}}, +/* 38159 */ {(11<<2)|2,{102,115,0}}, +/* 38160 */ {(11<<2)|2,{102,115,0}}, +/* 38161 */ {(11<<2)|2,{102,115,0}}, +/* 38162 */ {(11<<2)|2,{102,115,0}}, +/* 38163 */ {(11<<2)|2,{102,115,0}}, +/* 38164 */ {(11<<2)|2,{102,115,0}}, +/* 38165 */ {(11<<2)|2,{102,115,0}}, +/* 38166 */ {(11<<2)|2,{102,115,0}}, +/* 38167 */ {(11<<2)|2,{102,115,0}}, +/* 38168 */ {(11<<2)|2,{102,115,0}}, +/* 38169 */ {(11<<2)|2,{102,115,0}}, +/* 38170 */ {(11<<2)|2,{102,115,0}}, +/* 38171 */ {(11<<2)|2,{102,115,0}}, +/* 38172 */ {(11<<2)|2,{102,115,0}}, +/* 38173 */ {(11<<2)|2,{102,115,0}}, +/* 38174 */ {(11<<2)|2,{102,115,0}}, +/* 38175 */ {(11<<2)|2,{102,115,0}}, +/* 38176 */ {(16<<2)|3,{102,116,48}}, +/* 38177 */ {(16<<2)|3,{102,116,49}}, +/* 38178 */ {(16<<2)|3,{102,116,50}}, +/* 38179 */ {(16<<2)|3,{102,116,97}}, +/* 38180 */ {(16<<2)|3,{102,116,99}}, +/* 38181 */ {(16<<2)|3,{102,116,101}}, +/* 38182 */ {(16<<2)|3,{102,116,105}}, +/* 38183 */ {(16<<2)|3,{102,116,111}}, +/* 38184 */ {(16<<2)|3,{102,116,115}}, +/* 38185 */ {(16<<2)|3,{102,116,116}}, +/* 38186 */ {(11<<2)|2,{102,116,0}}, +/* 38187 */ {(11<<2)|2,{102,116,0}}, +/* 38188 */ {(11<<2)|2,{102,116,0}}, +/* 38189 */ {(11<<2)|2,{102,116,0}}, +/* 38190 */ {(11<<2)|2,{102,116,0}}, +/* 38191 */ {(11<<2)|2,{102,116,0}}, +/* 38192 */ {(11<<2)|2,{102,116,0}}, +/* 38193 */ {(11<<2)|2,{102,116,0}}, +/* 38194 */ {(11<<2)|2,{102,116,0}}, +/* 38195 */ {(11<<2)|2,{102,116,0}}, +/* 38196 */ {(11<<2)|2,{102,116,0}}, +/* 38197 */ {(11<<2)|2,{102,116,0}}, +/* 38198 */ {(11<<2)|2,{102,116,0}}, +/* 38199 */ {(11<<2)|2,{102,116,0}}, +/* 38200 */ {(11<<2)|2,{102,116,0}}, +/* 38201 */ {(11<<2)|2,{102,116,0}}, +/* 38202 */ {(11<<2)|2,{102,116,0}}, +/* 38203 */ {(11<<2)|2,{102,116,0}}, +/* 38204 */ {(11<<2)|2,{102,116,0}}, +/* 38205 */ {(11<<2)|2,{102,116,0}}, +/* 38206 */ {(11<<2)|2,{102,116,0}}, +/* 38207 */ {(11<<2)|2,{102,116,0}}, +/* 38208 */ {(12<<2)|2,{102,32,0}}, +/* 38209 */ {(12<<2)|2,{102,32,0}}, +/* 38210 */ {(12<<2)|2,{102,32,0}}, +/* 38211 */ {(12<<2)|2,{102,32,0}}, +/* 38212 */ {(12<<2)|2,{102,32,0}}, +/* 38213 */ {(12<<2)|2,{102,32,0}}, +/* 38214 */ {(12<<2)|2,{102,32,0}}, +/* 38215 */ {(12<<2)|2,{102,32,0}}, +/* 38216 */ {(12<<2)|2,{102,32,0}}, +/* 38217 */ {(12<<2)|2,{102,32,0}}, +/* 38218 */ {(12<<2)|2,{102,32,0}}, +/* 38219 */ {(12<<2)|2,{102,32,0}}, +/* 38220 */ {(12<<2)|2,{102,32,0}}, +/* 38221 */ {(12<<2)|2,{102,32,0}}, +/* 38222 */ {(12<<2)|2,{102,32,0}}, +/* 38223 */ {(12<<2)|2,{102,32,0}}, +/* 38224 */ {(12<<2)|2,{102,37,0}}, +/* 38225 */ {(12<<2)|2,{102,37,0}}, +/* 38226 */ {(12<<2)|2,{102,37,0}}, +/* 38227 */ {(12<<2)|2,{102,37,0}}, +/* 38228 */ {(12<<2)|2,{102,37,0}}, +/* 38229 */ {(12<<2)|2,{102,37,0}}, +/* 38230 */ {(12<<2)|2,{102,37,0}}, +/* 38231 */ {(12<<2)|2,{102,37,0}}, +/* 38232 */ {(12<<2)|2,{102,37,0}}, +/* 38233 */ {(12<<2)|2,{102,37,0}}, +/* 38234 */ {(12<<2)|2,{102,37,0}}, +/* 38235 */ {(12<<2)|2,{102,37,0}}, +/* 38236 */ {(12<<2)|2,{102,37,0}}, +/* 38237 */ {(12<<2)|2,{102,37,0}}, +/* 38238 */ {(12<<2)|2,{102,37,0}}, +/* 38239 */ {(12<<2)|2,{102,37,0}}, +/* 38240 */ {(12<<2)|2,{102,45,0}}, +/* 38241 */ {(12<<2)|2,{102,45,0}}, +/* 38242 */ {(12<<2)|2,{102,45,0}}, +/* 38243 */ {(12<<2)|2,{102,45,0}}, +/* 38244 */ {(12<<2)|2,{102,45,0}}, +/* 38245 */ {(12<<2)|2,{102,45,0}}, +/* 38246 */ {(12<<2)|2,{102,45,0}}, +/* 38247 */ {(12<<2)|2,{102,45,0}}, +/* 38248 */ {(12<<2)|2,{102,45,0}}, +/* 38249 */ {(12<<2)|2,{102,45,0}}, +/* 38250 */ {(12<<2)|2,{102,45,0}}, +/* 38251 */ {(12<<2)|2,{102,45,0}}, +/* 38252 */ {(12<<2)|2,{102,45,0}}, +/* 38253 */ {(12<<2)|2,{102,45,0}}, +/* 38254 */ {(12<<2)|2,{102,45,0}}, +/* 38255 */ {(12<<2)|2,{102,45,0}}, +/* 38256 */ {(12<<2)|2,{102,46,0}}, +/* 38257 */ {(12<<2)|2,{102,46,0}}, +/* 38258 */ {(12<<2)|2,{102,46,0}}, +/* 38259 */ {(12<<2)|2,{102,46,0}}, +/* 38260 */ {(12<<2)|2,{102,46,0}}, +/* 38261 */ {(12<<2)|2,{102,46,0}}, +/* 38262 */ {(12<<2)|2,{102,46,0}}, +/* 38263 */ {(12<<2)|2,{102,46,0}}, +/* 38264 */ {(12<<2)|2,{102,46,0}}, +/* 38265 */ {(12<<2)|2,{102,46,0}}, +/* 38266 */ {(12<<2)|2,{102,46,0}}, +/* 38267 */ {(12<<2)|2,{102,46,0}}, +/* 38268 */ {(12<<2)|2,{102,46,0}}, +/* 38269 */ {(12<<2)|2,{102,46,0}}, +/* 38270 */ {(12<<2)|2,{102,46,0}}, +/* 38271 */ {(12<<2)|2,{102,46,0}}, +/* 38272 */ {(12<<2)|2,{102,47,0}}, +/* 38273 */ {(12<<2)|2,{102,47,0}}, +/* 38274 */ {(12<<2)|2,{102,47,0}}, +/* 38275 */ {(12<<2)|2,{102,47,0}}, +/* 38276 */ {(12<<2)|2,{102,47,0}}, +/* 38277 */ {(12<<2)|2,{102,47,0}}, +/* 38278 */ {(12<<2)|2,{102,47,0}}, +/* 38279 */ {(12<<2)|2,{102,47,0}}, +/* 38280 */ {(12<<2)|2,{102,47,0}}, +/* 38281 */ {(12<<2)|2,{102,47,0}}, +/* 38282 */ {(12<<2)|2,{102,47,0}}, +/* 38283 */ {(12<<2)|2,{102,47,0}}, +/* 38284 */ {(12<<2)|2,{102,47,0}}, +/* 38285 */ {(12<<2)|2,{102,47,0}}, +/* 38286 */ {(12<<2)|2,{102,47,0}}, +/* 38287 */ {(12<<2)|2,{102,47,0}}, +/* 38288 */ {(12<<2)|2,{102,51,0}}, +/* 38289 */ {(12<<2)|2,{102,51,0}}, +/* 38290 */ {(12<<2)|2,{102,51,0}}, +/* 38291 */ {(12<<2)|2,{102,51,0}}, +/* 38292 */ {(12<<2)|2,{102,51,0}}, +/* 38293 */ {(12<<2)|2,{102,51,0}}, +/* 38294 */ {(12<<2)|2,{102,51,0}}, +/* 38295 */ {(12<<2)|2,{102,51,0}}, +/* 38296 */ {(12<<2)|2,{102,51,0}}, +/* 38297 */ {(12<<2)|2,{102,51,0}}, +/* 38298 */ {(12<<2)|2,{102,51,0}}, +/* 38299 */ {(12<<2)|2,{102,51,0}}, +/* 38300 */ {(12<<2)|2,{102,51,0}}, +/* 38301 */ {(12<<2)|2,{102,51,0}}, +/* 38302 */ {(12<<2)|2,{102,51,0}}, +/* 38303 */ {(12<<2)|2,{102,51,0}}, +/* 38304 */ {(12<<2)|2,{102,52,0}}, +/* 38305 */ {(12<<2)|2,{102,52,0}}, +/* 38306 */ {(12<<2)|2,{102,52,0}}, +/* 38307 */ {(12<<2)|2,{102,52,0}}, +/* 38308 */ {(12<<2)|2,{102,52,0}}, +/* 38309 */ {(12<<2)|2,{102,52,0}}, +/* 38310 */ {(12<<2)|2,{102,52,0}}, +/* 38311 */ {(12<<2)|2,{102,52,0}}, +/* 38312 */ {(12<<2)|2,{102,52,0}}, +/* 38313 */ {(12<<2)|2,{102,52,0}}, +/* 38314 */ {(12<<2)|2,{102,52,0}}, +/* 38315 */ {(12<<2)|2,{102,52,0}}, +/* 38316 */ {(12<<2)|2,{102,52,0}}, +/* 38317 */ {(12<<2)|2,{102,52,0}}, +/* 38318 */ {(12<<2)|2,{102,52,0}}, +/* 38319 */ {(12<<2)|2,{102,52,0}}, +/* 38320 */ {(12<<2)|2,{102,53,0}}, +/* 38321 */ {(12<<2)|2,{102,53,0}}, +/* 38322 */ {(12<<2)|2,{102,53,0}}, +/* 38323 */ {(12<<2)|2,{102,53,0}}, +/* 38324 */ {(12<<2)|2,{102,53,0}}, +/* 38325 */ {(12<<2)|2,{102,53,0}}, +/* 38326 */ {(12<<2)|2,{102,53,0}}, +/* 38327 */ {(12<<2)|2,{102,53,0}}, +/* 38328 */ {(12<<2)|2,{102,53,0}}, +/* 38329 */ {(12<<2)|2,{102,53,0}}, +/* 38330 */ {(12<<2)|2,{102,53,0}}, +/* 38331 */ {(12<<2)|2,{102,53,0}}, +/* 38332 */ {(12<<2)|2,{102,53,0}}, +/* 38333 */ {(12<<2)|2,{102,53,0}}, +/* 38334 */ {(12<<2)|2,{102,53,0}}, +/* 38335 */ {(12<<2)|2,{102,53,0}}, +/* 38336 */ {(12<<2)|2,{102,54,0}}, +/* 38337 */ {(12<<2)|2,{102,54,0}}, +/* 38338 */ {(12<<2)|2,{102,54,0}}, +/* 38339 */ {(12<<2)|2,{102,54,0}}, +/* 38340 */ {(12<<2)|2,{102,54,0}}, +/* 38341 */ {(12<<2)|2,{102,54,0}}, +/* 38342 */ {(12<<2)|2,{102,54,0}}, +/* 38343 */ {(12<<2)|2,{102,54,0}}, +/* 38344 */ {(12<<2)|2,{102,54,0}}, +/* 38345 */ {(12<<2)|2,{102,54,0}}, +/* 38346 */ {(12<<2)|2,{102,54,0}}, +/* 38347 */ {(12<<2)|2,{102,54,0}}, +/* 38348 */ {(12<<2)|2,{102,54,0}}, +/* 38349 */ {(12<<2)|2,{102,54,0}}, +/* 38350 */ {(12<<2)|2,{102,54,0}}, +/* 38351 */ {(12<<2)|2,{102,54,0}}, +/* 38352 */ {(12<<2)|2,{102,55,0}}, +/* 38353 */ {(12<<2)|2,{102,55,0}}, +/* 38354 */ {(12<<2)|2,{102,55,0}}, +/* 38355 */ {(12<<2)|2,{102,55,0}}, +/* 38356 */ {(12<<2)|2,{102,55,0}}, +/* 38357 */ {(12<<2)|2,{102,55,0}}, +/* 38358 */ {(12<<2)|2,{102,55,0}}, +/* 38359 */ {(12<<2)|2,{102,55,0}}, +/* 38360 */ {(12<<2)|2,{102,55,0}}, +/* 38361 */ {(12<<2)|2,{102,55,0}}, +/* 38362 */ {(12<<2)|2,{102,55,0}}, +/* 38363 */ {(12<<2)|2,{102,55,0}}, +/* 38364 */ {(12<<2)|2,{102,55,0}}, +/* 38365 */ {(12<<2)|2,{102,55,0}}, +/* 38366 */ {(12<<2)|2,{102,55,0}}, +/* 38367 */ {(12<<2)|2,{102,55,0}}, +/* 38368 */ {(12<<2)|2,{102,56,0}}, +/* 38369 */ {(12<<2)|2,{102,56,0}}, +/* 38370 */ {(12<<2)|2,{102,56,0}}, +/* 38371 */ {(12<<2)|2,{102,56,0}}, +/* 38372 */ {(12<<2)|2,{102,56,0}}, +/* 38373 */ {(12<<2)|2,{102,56,0}}, +/* 38374 */ {(12<<2)|2,{102,56,0}}, +/* 38375 */ {(12<<2)|2,{102,56,0}}, +/* 38376 */ {(12<<2)|2,{102,56,0}}, +/* 38377 */ {(12<<2)|2,{102,56,0}}, +/* 38378 */ {(12<<2)|2,{102,56,0}}, +/* 38379 */ {(12<<2)|2,{102,56,0}}, +/* 38380 */ {(12<<2)|2,{102,56,0}}, +/* 38381 */ {(12<<2)|2,{102,56,0}}, +/* 38382 */ {(12<<2)|2,{102,56,0}}, +/* 38383 */ {(12<<2)|2,{102,56,0}}, +/* 38384 */ {(12<<2)|2,{102,57,0}}, +/* 38385 */ {(12<<2)|2,{102,57,0}}, +/* 38386 */ {(12<<2)|2,{102,57,0}}, +/* 38387 */ {(12<<2)|2,{102,57,0}}, +/* 38388 */ {(12<<2)|2,{102,57,0}}, +/* 38389 */ {(12<<2)|2,{102,57,0}}, +/* 38390 */ {(12<<2)|2,{102,57,0}}, +/* 38391 */ {(12<<2)|2,{102,57,0}}, +/* 38392 */ {(12<<2)|2,{102,57,0}}, +/* 38393 */ {(12<<2)|2,{102,57,0}}, +/* 38394 */ {(12<<2)|2,{102,57,0}}, +/* 38395 */ {(12<<2)|2,{102,57,0}}, +/* 38396 */ {(12<<2)|2,{102,57,0}}, +/* 38397 */ {(12<<2)|2,{102,57,0}}, +/* 38398 */ {(12<<2)|2,{102,57,0}}, +/* 38399 */ {(12<<2)|2,{102,57,0}}, +/* 38400 */ {(12<<2)|2,{102,61,0}}, +/* 38401 */ {(12<<2)|2,{102,61,0}}, +/* 38402 */ {(12<<2)|2,{102,61,0}}, +/* 38403 */ {(12<<2)|2,{102,61,0}}, +/* 38404 */ {(12<<2)|2,{102,61,0}}, +/* 38405 */ {(12<<2)|2,{102,61,0}}, +/* 38406 */ {(12<<2)|2,{102,61,0}}, +/* 38407 */ {(12<<2)|2,{102,61,0}}, +/* 38408 */ {(12<<2)|2,{102,61,0}}, +/* 38409 */ {(12<<2)|2,{102,61,0}}, +/* 38410 */ {(12<<2)|2,{102,61,0}}, +/* 38411 */ {(12<<2)|2,{102,61,0}}, +/* 38412 */ {(12<<2)|2,{102,61,0}}, +/* 38413 */ {(12<<2)|2,{102,61,0}}, +/* 38414 */ {(12<<2)|2,{102,61,0}}, +/* 38415 */ {(12<<2)|2,{102,61,0}}, +/* 38416 */ {(12<<2)|2,{102,65,0}}, +/* 38417 */ {(12<<2)|2,{102,65,0}}, +/* 38418 */ {(12<<2)|2,{102,65,0}}, +/* 38419 */ {(12<<2)|2,{102,65,0}}, +/* 38420 */ {(12<<2)|2,{102,65,0}}, +/* 38421 */ {(12<<2)|2,{102,65,0}}, +/* 38422 */ {(12<<2)|2,{102,65,0}}, +/* 38423 */ {(12<<2)|2,{102,65,0}}, +/* 38424 */ {(12<<2)|2,{102,65,0}}, +/* 38425 */ {(12<<2)|2,{102,65,0}}, +/* 38426 */ {(12<<2)|2,{102,65,0}}, +/* 38427 */ {(12<<2)|2,{102,65,0}}, +/* 38428 */ {(12<<2)|2,{102,65,0}}, +/* 38429 */ {(12<<2)|2,{102,65,0}}, +/* 38430 */ {(12<<2)|2,{102,65,0}}, +/* 38431 */ {(12<<2)|2,{102,65,0}}, +/* 38432 */ {(12<<2)|2,{102,95,0}}, +/* 38433 */ {(12<<2)|2,{102,95,0}}, +/* 38434 */ {(12<<2)|2,{102,95,0}}, +/* 38435 */ {(12<<2)|2,{102,95,0}}, +/* 38436 */ {(12<<2)|2,{102,95,0}}, +/* 38437 */ {(12<<2)|2,{102,95,0}}, +/* 38438 */ {(12<<2)|2,{102,95,0}}, +/* 38439 */ {(12<<2)|2,{102,95,0}}, +/* 38440 */ {(12<<2)|2,{102,95,0}}, +/* 38441 */ {(12<<2)|2,{102,95,0}}, +/* 38442 */ {(12<<2)|2,{102,95,0}}, +/* 38443 */ {(12<<2)|2,{102,95,0}}, +/* 38444 */ {(12<<2)|2,{102,95,0}}, +/* 38445 */ {(12<<2)|2,{102,95,0}}, +/* 38446 */ {(12<<2)|2,{102,95,0}}, +/* 38447 */ {(12<<2)|2,{102,95,0}}, +/* 38448 */ {(12<<2)|2,{102,98,0}}, +/* 38449 */ {(12<<2)|2,{102,98,0}}, +/* 38450 */ {(12<<2)|2,{102,98,0}}, +/* 38451 */ {(12<<2)|2,{102,98,0}}, +/* 38452 */ {(12<<2)|2,{102,98,0}}, +/* 38453 */ {(12<<2)|2,{102,98,0}}, +/* 38454 */ {(12<<2)|2,{102,98,0}}, +/* 38455 */ {(12<<2)|2,{102,98,0}}, +/* 38456 */ {(12<<2)|2,{102,98,0}}, +/* 38457 */ {(12<<2)|2,{102,98,0}}, +/* 38458 */ {(12<<2)|2,{102,98,0}}, +/* 38459 */ {(12<<2)|2,{102,98,0}}, +/* 38460 */ {(12<<2)|2,{102,98,0}}, +/* 38461 */ {(12<<2)|2,{102,98,0}}, +/* 38462 */ {(12<<2)|2,{102,98,0}}, +/* 38463 */ {(12<<2)|2,{102,98,0}}, +/* 38464 */ {(12<<2)|2,{102,100,0}}, +/* 38465 */ {(12<<2)|2,{102,100,0}}, +/* 38466 */ {(12<<2)|2,{102,100,0}}, +/* 38467 */ {(12<<2)|2,{102,100,0}}, +/* 38468 */ {(12<<2)|2,{102,100,0}}, +/* 38469 */ {(12<<2)|2,{102,100,0}}, +/* 38470 */ {(12<<2)|2,{102,100,0}}, +/* 38471 */ {(12<<2)|2,{102,100,0}}, +/* 38472 */ {(12<<2)|2,{102,100,0}}, +/* 38473 */ {(12<<2)|2,{102,100,0}}, +/* 38474 */ {(12<<2)|2,{102,100,0}}, +/* 38475 */ {(12<<2)|2,{102,100,0}}, +/* 38476 */ {(12<<2)|2,{102,100,0}}, +/* 38477 */ {(12<<2)|2,{102,100,0}}, +/* 38478 */ {(12<<2)|2,{102,100,0}}, +/* 38479 */ {(12<<2)|2,{102,100,0}}, +/* 38480 */ {(12<<2)|2,{102,102,0}}, +/* 38481 */ {(12<<2)|2,{102,102,0}}, +/* 38482 */ {(12<<2)|2,{102,102,0}}, +/* 38483 */ {(12<<2)|2,{102,102,0}}, +/* 38484 */ {(12<<2)|2,{102,102,0}}, +/* 38485 */ {(12<<2)|2,{102,102,0}}, +/* 38486 */ {(12<<2)|2,{102,102,0}}, +/* 38487 */ {(12<<2)|2,{102,102,0}}, +/* 38488 */ {(12<<2)|2,{102,102,0}}, +/* 38489 */ {(12<<2)|2,{102,102,0}}, +/* 38490 */ {(12<<2)|2,{102,102,0}}, +/* 38491 */ {(12<<2)|2,{102,102,0}}, +/* 38492 */ {(12<<2)|2,{102,102,0}}, +/* 38493 */ {(12<<2)|2,{102,102,0}}, +/* 38494 */ {(12<<2)|2,{102,102,0}}, +/* 38495 */ {(12<<2)|2,{102,102,0}}, +/* 38496 */ {(12<<2)|2,{102,103,0}}, +/* 38497 */ {(12<<2)|2,{102,103,0}}, +/* 38498 */ {(12<<2)|2,{102,103,0}}, +/* 38499 */ {(12<<2)|2,{102,103,0}}, +/* 38500 */ {(12<<2)|2,{102,103,0}}, +/* 38501 */ {(12<<2)|2,{102,103,0}}, +/* 38502 */ {(12<<2)|2,{102,103,0}}, +/* 38503 */ {(12<<2)|2,{102,103,0}}, +/* 38504 */ {(12<<2)|2,{102,103,0}}, +/* 38505 */ {(12<<2)|2,{102,103,0}}, +/* 38506 */ {(12<<2)|2,{102,103,0}}, +/* 38507 */ {(12<<2)|2,{102,103,0}}, +/* 38508 */ {(12<<2)|2,{102,103,0}}, +/* 38509 */ {(12<<2)|2,{102,103,0}}, +/* 38510 */ {(12<<2)|2,{102,103,0}}, +/* 38511 */ {(12<<2)|2,{102,103,0}}, +/* 38512 */ {(12<<2)|2,{102,104,0}}, +/* 38513 */ {(12<<2)|2,{102,104,0}}, +/* 38514 */ {(12<<2)|2,{102,104,0}}, +/* 38515 */ {(12<<2)|2,{102,104,0}}, +/* 38516 */ {(12<<2)|2,{102,104,0}}, +/* 38517 */ {(12<<2)|2,{102,104,0}}, +/* 38518 */ {(12<<2)|2,{102,104,0}}, +/* 38519 */ {(12<<2)|2,{102,104,0}}, +/* 38520 */ {(12<<2)|2,{102,104,0}}, +/* 38521 */ {(12<<2)|2,{102,104,0}}, +/* 38522 */ {(12<<2)|2,{102,104,0}}, +/* 38523 */ {(12<<2)|2,{102,104,0}}, +/* 38524 */ {(12<<2)|2,{102,104,0}}, +/* 38525 */ {(12<<2)|2,{102,104,0}}, +/* 38526 */ {(12<<2)|2,{102,104,0}}, +/* 38527 */ {(12<<2)|2,{102,104,0}}, +/* 38528 */ {(12<<2)|2,{102,108,0}}, +/* 38529 */ {(12<<2)|2,{102,108,0}}, +/* 38530 */ {(12<<2)|2,{102,108,0}}, +/* 38531 */ {(12<<2)|2,{102,108,0}}, +/* 38532 */ {(12<<2)|2,{102,108,0}}, +/* 38533 */ {(12<<2)|2,{102,108,0}}, +/* 38534 */ {(12<<2)|2,{102,108,0}}, +/* 38535 */ {(12<<2)|2,{102,108,0}}, +/* 38536 */ {(12<<2)|2,{102,108,0}}, +/* 38537 */ {(12<<2)|2,{102,108,0}}, +/* 38538 */ {(12<<2)|2,{102,108,0}}, +/* 38539 */ {(12<<2)|2,{102,108,0}}, +/* 38540 */ {(12<<2)|2,{102,108,0}}, +/* 38541 */ {(12<<2)|2,{102,108,0}}, +/* 38542 */ {(12<<2)|2,{102,108,0}}, +/* 38543 */ {(12<<2)|2,{102,108,0}}, +/* 38544 */ {(12<<2)|2,{102,109,0}}, +/* 38545 */ {(12<<2)|2,{102,109,0}}, +/* 38546 */ {(12<<2)|2,{102,109,0}}, +/* 38547 */ {(12<<2)|2,{102,109,0}}, +/* 38548 */ {(12<<2)|2,{102,109,0}}, +/* 38549 */ {(12<<2)|2,{102,109,0}}, +/* 38550 */ {(12<<2)|2,{102,109,0}}, +/* 38551 */ {(12<<2)|2,{102,109,0}}, +/* 38552 */ {(12<<2)|2,{102,109,0}}, +/* 38553 */ {(12<<2)|2,{102,109,0}}, +/* 38554 */ {(12<<2)|2,{102,109,0}}, +/* 38555 */ {(12<<2)|2,{102,109,0}}, +/* 38556 */ {(12<<2)|2,{102,109,0}}, +/* 38557 */ {(12<<2)|2,{102,109,0}}, +/* 38558 */ {(12<<2)|2,{102,109,0}}, +/* 38559 */ {(12<<2)|2,{102,109,0}}, +/* 38560 */ {(12<<2)|2,{102,110,0}}, +/* 38561 */ {(12<<2)|2,{102,110,0}}, +/* 38562 */ {(12<<2)|2,{102,110,0}}, +/* 38563 */ {(12<<2)|2,{102,110,0}}, +/* 38564 */ {(12<<2)|2,{102,110,0}}, +/* 38565 */ {(12<<2)|2,{102,110,0}}, +/* 38566 */ {(12<<2)|2,{102,110,0}}, +/* 38567 */ {(12<<2)|2,{102,110,0}}, +/* 38568 */ {(12<<2)|2,{102,110,0}}, +/* 38569 */ {(12<<2)|2,{102,110,0}}, +/* 38570 */ {(12<<2)|2,{102,110,0}}, +/* 38571 */ {(12<<2)|2,{102,110,0}}, +/* 38572 */ {(12<<2)|2,{102,110,0}}, +/* 38573 */ {(12<<2)|2,{102,110,0}}, +/* 38574 */ {(12<<2)|2,{102,110,0}}, +/* 38575 */ {(12<<2)|2,{102,110,0}}, +/* 38576 */ {(12<<2)|2,{102,112,0}}, +/* 38577 */ {(12<<2)|2,{102,112,0}}, +/* 38578 */ {(12<<2)|2,{102,112,0}}, +/* 38579 */ {(12<<2)|2,{102,112,0}}, +/* 38580 */ {(12<<2)|2,{102,112,0}}, +/* 38581 */ {(12<<2)|2,{102,112,0}}, +/* 38582 */ {(12<<2)|2,{102,112,0}}, +/* 38583 */ {(12<<2)|2,{102,112,0}}, +/* 38584 */ {(12<<2)|2,{102,112,0}}, +/* 38585 */ {(12<<2)|2,{102,112,0}}, +/* 38586 */ {(12<<2)|2,{102,112,0}}, +/* 38587 */ {(12<<2)|2,{102,112,0}}, +/* 38588 */ {(12<<2)|2,{102,112,0}}, +/* 38589 */ {(12<<2)|2,{102,112,0}}, +/* 38590 */ {(12<<2)|2,{102,112,0}}, +/* 38591 */ {(12<<2)|2,{102,112,0}}, +/* 38592 */ {(12<<2)|2,{102,114,0}}, +/* 38593 */ {(12<<2)|2,{102,114,0}}, +/* 38594 */ {(12<<2)|2,{102,114,0}}, +/* 38595 */ {(12<<2)|2,{102,114,0}}, +/* 38596 */ {(12<<2)|2,{102,114,0}}, +/* 38597 */ {(12<<2)|2,{102,114,0}}, +/* 38598 */ {(12<<2)|2,{102,114,0}}, +/* 38599 */ {(12<<2)|2,{102,114,0}}, +/* 38600 */ {(12<<2)|2,{102,114,0}}, +/* 38601 */ {(12<<2)|2,{102,114,0}}, +/* 38602 */ {(12<<2)|2,{102,114,0}}, +/* 38603 */ {(12<<2)|2,{102,114,0}}, +/* 38604 */ {(12<<2)|2,{102,114,0}}, +/* 38605 */ {(12<<2)|2,{102,114,0}}, +/* 38606 */ {(12<<2)|2,{102,114,0}}, +/* 38607 */ {(12<<2)|2,{102,114,0}}, +/* 38608 */ {(12<<2)|2,{102,117,0}}, +/* 38609 */ {(12<<2)|2,{102,117,0}}, +/* 38610 */ {(12<<2)|2,{102,117,0}}, +/* 38611 */ {(12<<2)|2,{102,117,0}}, +/* 38612 */ {(12<<2)|2,{102,117,0}}, +/* 38613 */ {(12<<2)|2,{102,117,0}}, +/* 38614 */ {(12<<2)|2,{102,117,0}}, +/* 38615 */ {(12<<2)|2,{102,117,0}}, +/* 38616 */ {(12<<2)|2,{102,117,0}}, +/* 38617 */ {(12<<2)|2,{102,117,0}}, +/* 38618 */ {(12<<2)|2,{102,117,0}}, +/* 38619 */ {(12<<2)|2,{102,117,0}}, +/* 38620 */ {(12<<2)|2,{102,117,0}}, +/* 38621 */ {(12<<2)|2,{102,117,0}}, +/* 38622 */ {(12<<2)|2,{102,117,0}}, +/* 38623 */ {(12<<2)|2,{102,117,0}}, +/* 38624 */ {(13<<2)|2,{102,58,0}}, +/* 38625 */ {(13<<2)|2,{102,58,0}}, +/* 38626 */ {(13<<2)|2,{102,58,0}}, +/* 38627 */ {(13<<2)|2,{102,58,0}}, +/* 38628 */ {(13<<2)|2,{102,58,0}}, +/* 38629 */ {(13<<2)|2,{102,58,0}}, +/* 38630 */ {(13<<2)|2,{102,58,0}}, +/* 38631 */ {(13<<2)|2,{102,58,0}}, +/* 38632 */ {(13<<2)|2,{102,66,0}}, +/* 38633 */ {(13<<2)|2,{102,66,0}}, +/* 38634 */ {(13<<2)|2,{102,66,0}}, +/* 38635 */ {(13<<2)|2,{102,66,0}}, +/* 38636 */ {(13<<2)|2,{102,66,0}}, +/* 38637 */ {(13<<2)|2,{102,66,0}}, +/* 38638 */ {(13<<2)|2,{102,66,0}}, +/* 38639 */ {(13<<2)|2,{102,66,0}}, +/* 38640 */ {(13<<2)|2,{102,67,0}}, +/* 38641 */ {(13<<2)|2,{102,67,0}}, +/* 38642 */ {(13<<2)|2,{102,67,0}}, +/* 38643 */ {(13<<2)|2,{102,67,0}}, +/* 38644 */ {(13<<2)|2,{102,67,0}}, +/* 38645 */ {(13<<2)|2,{102,67,0}}, +/* 38646 */ {(13<<2)|2,{102,67,0}}, +/* 38647 */ {(13<<2)|2,{102,67,0}}, +/* 38648 */ {(13<<2)|2,{102,68,0}}, +/* 38649 */ {(13<<2)|2,{102,68,0}}, +/* 38650 */ {(13<<2)|2,{102,68,0}}, +/* 38651 */ {(13<<2)|2,{102,68,0}}, +/* 38652 */ {(13<<2)|2,{102,68,0}}, +/* 38653 */ {(13<<2)|2,{102,68,0}}, +/* 38654 */ {(13<<2)|2,{102,68,0}}, +/* 38655 */ {(13<<2)|2,{102,68,0}}, +/* 38656 */ {(13<<2)|2,{102,69,0}}, +/* 38657 */ {(13<<2)|2,{102,69,0}}, +/* 38658 */ {(13<<2)|2,{102,69,0}}, +/* 38659 */ {(13<<2)|2,{102,69,0}}, +/* 38660 */ {(13<<2)|2,{102,69,0}}, +/* 38661 */ {(13<<2)|2,{102,69,0}}, +/* 38662 */ {(13<<2)|2,{102,69,0}}, +/* 38663 */ {(13<<2)|2,{102,69,0}}, +/* 38664 */ {(13<<2)|2,{102,70,0}}, +/* 38665 */ {(13<<2)|2,{102,70,0}}, +/* 38666 */ {(13<<2)|2,{102,70,0}}, +/* 38667 */ {(13<<2)|2,{102,70,0}}, +/* 38668 */ {(13<<2)|2,{102,70,0}}, +/* 38669 */ {(13<<2)|2,{102,70,0}}, +/* 38670 */ {(13<<2)|2,{102,70,0}}, +/* 38671 */ {(13<<2)|2,{102,70,0}}, +/* 38672 */ {(13<<2)|2,{102,71,0}}, +/* 38673 */ {(13<<2)|2,{102,71,0}}, +/* 38674 */ {(13<<2)|2,{102,71,0}}, +/* 38675 */ {(13<<2)|2,{102,71,0}}, +/* 38676 */ {(13<<2)|2,{102,71,0}}, +/* 38677 */ {(13<<2)|2,{102,71,0}}, +/* 38678 */ {(13<<2)|2,{102,71,0}}, +/* 38679 */ {(13<<2)|2,{102,71,0}}, +/* 38680 */ {(13<<2)|2,{102,72,0}}, +/* 38681 */ {(13<<2)|2,{102,72,0}}, +/* 38682 */ {(13<<2)|2,{102,72,0}}, +/* 38683 */ {(13<<2)|2,{102,72,0}}, +/* 38684 */ {(13<<2)|2,{102,72,0}}, +/* 38685 */ {(13<<2)|2,{102,72,0}}, +/* 38686 */ {(13<<2)|2,{102,72,0}}, +/* 38687 */ {(13<<2)|2,{102,72,0}}, +/* 38688 */ {(13<<2)|2,{102,73,0}}, +/* 38689 */ {(13<<2)|2,{102,73,0}}, +/* 38690 */ {(13<<2)|2,{102,73,0}}, +/* 38691 */ {(13<<2)|2,{102,73,0}}, +/* 38692 */ {(13<<2)|2,{102,73,0}}, +/* 38693 */ {(13<<2)|2,{102,73,0}}, +/* 38694 */ {(13<<2)|2,{102,73,0}}, +/* 38695 */ {(13<<2)|2,{102,73,0}}, +/* 38696 */ {(13<<2)|2,{102,74,0}}, +/* 38697 */ {(13<<2)|2,{102,74,0}}, +/* 38698 */ {(13<<2)|2,{102,74,0}}, +/* 38699 */ {(13<<2)|2,{102,74,0}}, +/* 38700 */ {(13<<2)|2,{102,74,0}}, +/* 38701 */ {(13<<2)|2,{102,74,0}}, +/* 38702 */ {(13<<2)|2,{102,74,0}}, +/* 38703 */ {(13<<2)|2,{102,74,0}}, +/* 38704 */ {(13<<2)|2,{102,75,0}}, +/* 38705 */ {(13<<2)|2,{102,75,0}}, +/* 38706 */ {(13<<2)|2,{102,75,0}}, +/* 38707 */ {(13<<2)|2,{102,75,0}}, +/* 38708 */ {(13<<2)|2,{102,75,0}}, +/* 38709 */ {(13<<2)|2,{102,75,0}}, +/* 38710 */ {(13<<2)|2,{102,75,0}}, +/* 38711 */ {(13<<2)|2,{102,75,0}}, +/* 38712 */ {(13<<2)|2,{102,76,0}}, +/* 38713 */ {(13<<2)|2,{102,76,0}}, +/* 38714 */ {(13<<2)|2,{102,76,0}}, +/* 38715 */ {(13<<2)|2,{102,76,0}}, +/* 38716 */ {(13<<2)|2,{102,76,0}}, +/* 38717 */ {(13<<2)|2,{102,76,0}}, +/* 38718 */ {(13<<2)|2,{102,76,0}}, +/* 38719 */ {(13<<2)|2,{102,76,0}}, +/* 38720 */ {(13<<2)|2,{102,77,0}}, +/* 38721 */ {(13<<2)|2,{102,77,0}}, +/* 38722 */ {(13<<2)|2,{102,77,0}}, +/* 38723 */ {(13<<2)|2,{102,77,0}}, +/* 38724 */ {(13<<2)|2,{102,77,0}}, +/* 38725 */ {(13<<2)|2,{102,77,0}}, +/* 38726 */ {(13<<2)|2,{102,77,0}}, +/* 38727 */ {(13<<2)|2,{102,77,0}}, +/* 38728 */ {(13<<2)|2,{102,78,0}}, +/* 38729 */ {(13<<2)|2,{102,78,0}}, +/* 38730 */ {(13<<2)|2,{102,78,0}}, +/* 38731 */ {(13<<2)|2,{102,78,0}}, +/* 38732 */ {(13<<2)|2,{102,78,0}}, +/* 38733 */ {(13<<2)|2,{102,78,0}}, +/* 38734 */ {(13<<2)|2,{102,78,0}}, +/* 38735 */ {(13<<2)|2,{102,78,0}}, +/* 38736 */ {(13<<2)|2,{102,79,0}}, +/* 38737 */ {(13<<2)|2,{102,79,0}}, +/* 38738 */ {(13<<2)|2,{102,79,0}}, +/* 38739 */ {(13<<2)|2,{102,79,0}}, +/* 38740 */ {(13<<2)|2,{102,79,0}}, +/* 38741 */ {(13<<2)|2,{102,79,0}}, +/* 38742 */ {(13<<2)|2,{102,79,0}}, +/* 38743 */ {(13<<2)|2,{102,79,0}}, +/* 38744 */ {(13<<2)|2,{102,80,0}}, +/* 38745 */ {(13<<2)|2,{102,80,0}}, +/* 38746 */ {(13<<2)|2,{102,80,0}}, +/* 38747 */ {(13<<2)|2,{102,80,0}}, +/* 38748 */ {(13<<2)|2,{102,80,0}}, +/* 38749 */ {(13<<2)|2,{102,80,0}}, +/* 38750 */ {(13<<2)|2,{102,80,0}}, +/* 38751 */ {(13<<2)|2,{102,80,0}}, +/* 38752 */ {(13<<2)|2,{102,81,0}}, +/* 38753 */ {(13<<2)|2,{102,81,0}}, +/* 38754 */ {(13<<2)|2,{102,81,0}}, +/* 38755 */ {(13<<2)|2,{102,81,0}}, +/* 38756 */ {(13<<2)|2,{102,81,0}}, +/* 38757 */ {(13<<2)|2,{102,81,0}}, +/* 38758 */ {(13<<2)|2,{102,81,0}}, +/* 38759 */ {(13<<2)|2,{102,81,0}}, +/* 38760 */ {(13<<2)|2,{102,82,0}}, +/* 38761 */ {(13<<2)|2,{102,82,0}}, +/* 38762 */ {(13<<2)|2,{102,82,0}}, +/* 38763 */ {(13<<2)|2,{102,82,0}}, +/* 38764 */ {(13<<2)|2,{102,82,0}}, +/* 38765 */ {(13<<2)|2,{102,82,0}}, +/* 38766 */ {(13<<2)|2,{102,82,0}}, +/* 38767 */ {(13<<2)|2,{102,82,0}}, +/* 38768 */ {(13<<2)|2,{102,83,0}}, +/* 38769 */ {(13<<2)|2,{102,83,0}}, +/* 38770 */ {(13<<2)|2,{102,83,0}}, +/* 38771 */ {(13<<2)|2,{102,83,0}}, +/* 38772 */ {(13<<2)|2,{102,83,0}}, +/* 38773 */ {(13<<2)|2,{102,83,0}}, +/* 38774 */ {(13<<2)|2,{102,83,0}}, +/* 38775 */ {(13<<2)|2,{102,83,0}}, +/* 38776 */ {(13<<2)|2,{102,84,0}}, +/* 38777 */ {(13<<2)|2,{102,84,0}}, +/* 38778 */ {(13<<2)|2,{102,84,0}}, +/* 38779 */ {(13<<2)|2,{102,84,0}}, +/* 38780 */ {(13<<2)|2,{102,84,0}}, +/* 38781 */ {(13<<2)|2,{102,84,0}}, +/* 38782 */ {(13<<2)|2,{102,84,0}}, +/* 38783 */ {(13<<2)|2,{102,84,0}}, +/* 38784 */ {(13<<2)|2,{102,85,0}}, +/* 38785 */ {(13<<2)|2,{102,85,0}}, +/* 38786 */ {(13<<2)|2,{102,85,0}}, +/* 38787 */ {(13<<2)|2,{102,85,0}}, +/* 38788 */ {(13<<2)|2,{102,85,0}}, +/* 38789 */ {(13<<2)|2,{102,85,0}}, +/* 38790 */ {(13<<2)|2,{102,85,0}}, +/* 38791 */ {(13<<2)|2,{102,85,0}}, +/* 38792 */ {(13<<2)|2,{102,86,0}}, +/* 38793 */ {(13<<2)|2,{102,86,0}}, +/* 38794 */ {(13<<2)|2,{102,86,0}}, +/* 38795 */ {(13<<2)|2,{102,86,0}}, +/* 38796 */ {(13<<2)|2,{102,86,0}}, +/* 38797 */ {(13<<2)|2,{102,86,0}}, +/* 38798 */ {(13<<2)|2,{102,86,0}}, +/* 38799 */ {(13<<2)|2,{102,86,0}}, +/* 38800 */ {(13<<2)|2,{102,87,0}}, +/* 38801 */ {(13<<2)|2,{102,87,0}}, +/* 38802 */ {(13<<2)|2,{102,87,0}}, +/* 38803 */ {(13<<2)|2,{102,87,0}}, +/* 38804 */ {(13<<2)|2,{102,87,0}}, +/* 38805 */ {(13<<2)|2,{102,87,0}}, +/* 38806 */ {(13<<2)|2,{102,87,0}}, +/* 38807 */ {(13<<2)|2,{102,87,0}}, +/* 38808 */ {(13<<2)|2,{102,89,0}}, +/* 38809 */ {(13<<2)|2,{102,89,0}}, +/* 38810 */ {(13<<2)|2,{102,89,0}}, +/* 38811 */ {(13<<2)|2,{102,89,0}}, +/* 38812 */ {(13<<2)|2,{102,89,0}}, +/* 38813 */ {(13<<2)|2,{102,89,0}}, +/* 38814 */ {(13<<2)|2,{102,89,0}}, +/* 38815 */ {(13<<2)|2,{102,89,0}}, +/* 38816 */ {(13<<2)|2,{102,106,0}}, +/* 38817 */ {(13<<2)|2,{102,106,0}}, +/* 38818 */ {(13<<2)|2,{102,106,0}}, +/* 38819 */ {(13<<2)|2,{102,106,0}}, +/* 38820 */ {(13<<2)|2,{102,106,0}}, +/* 38821 */ {(13<<2)|2,{102,106,0}}, +/* 38822 */ {(13<<2)|2,{102,106,0}}, +/* 38823 */ {(13<<2)|2,{102,106,0}}, +/* 38824 */ {(13<<2)|2,{102,107,0}}, +/* 38825 */ {(13<<2)|2,{102,107,0}}, +/* 38826 */ {(13<<2)|2,{102,107,0}}, +/* 38827 */ {(13<<2)|2,{102,107,0}}, +/* 38828 */ {(13<<2)|2,{102,107,0}}, +/* 38829 */ {(13<<2)|2,{102,107,0}}, +/* 38830 */ {(13<<2)|2,{102,107,0}}, +/* 38831 */ {(13<<2)|2,{102,107,0}}, +/* 38832 */ {(13<<2)|2,{102,113,0}}, +/* 38833 */ {(13<<2)|2,{102,113,0}}, +/* 38834 */ {(13<<2)|2,{102,113,0}}, +/* 38835 */ {(13<<2)|2,{102,113,0}}, +/* 38836 */ {(13<<2)|2,{102,113,0}}, +/* 38837 */ {(13<<2)|2,{102,113,0}}, +/* 38838 */ {(13<<2)|2,{102,113,0}}, +/* 38839 */ {(13<<2)|2,{102,113,0}}, +/* 38840 */ {(13<<2)|2,{102,118,0}}, +/* 38841 */ {(13<<2)|2,{102,118,0}}, +/* 38842 */ {(13<<2)|2,{102,118,0}}, +/* 38843 */ {(13<<2)|2,{102,118,0}}, +/* 38844 */ {(13<<2)|2,{102,118,0}}, +/* 38845 */ {(13<<2)|2,{102,118,0}}, +/* 38846 */ {(13<<2)|2,{102,118,0}}, +/* 38847 */ {(13<<2)|2,{102,118,0}}, +/* 38848 */ {(13<<2)|2,{102,119,0}}, +/* 38849 */ {(13<<2)|2,{102,119,0}}, +/* 38850 */ {(13<<2)|2,{102,119,0}}, +/* 38851 */ {(13<<2)|2,{102,119,0}}, +/* 38852 */ {(13<<2)|2,{102,119,0}}, +/* 38853 */ {(13<<2)|2,{102,119,0}}, +/* 38854 */ {(13<<2)|2,{102,119,0}}, +/* 38855 */ {(13<<2)|2,{102,119,0}}, +/* 38856 */ {(13<<2)|2,{102,120,0}}, +/* 38857 */ {(13<<2)|2,{102,120,0}}, +/* 38858 */ {(13<<2)|2,{102,120,0}}, +/* 38859 */ {(13<<2)|2,{102,120,0}}, +/* 38860 */ {(13<<2)|2,{102,120,0}}, +/* 38861 */ {(13<<2)|2,{102,120,0}}, +/* 38862 */ {(13<<2)|2,{102,120,0}}, +/* 38863 */ {(13<<2)|2,{102,120,0}}, +/* 38864 */ {(13<<2)|2,{102,121,0}}, +/* 38865 */ {(13<<2)|2,{102,121,0}}, +/* 38866 */ {(13<<2)|2,{102,121,0}}, +/* 38867 */ {(13<<2)|2,{102,121,0}}, +/* 38868 */ {(13<<2)|2,{102,121,0}}, +/* 38869 */ {(13<<2)|2,{102,121,0}}, +/* 38870 */ {(13<<2)|2,{102,121,0}}, +/* 38871 */ {(13<<2)|2,{102,121,0}}, +/* 38872 */ {(13<<2)|2,{102,122,0}}, +/* 38873 */ {(13<<2)|2,{102,122,0}}, +/* 38874 */ {(13<<2)|2,{102,122,0}}, +/* 38875 */ {(13<<2)|2,{102,122,0}}, +/* 38876 */ {(13<<2)|2,{102,122,0}}, +/* 38877 */ {(13<<2)|2,{102,122,0}}, +/* 38878 */ {(13<<2)|2,{102,122,0}}, +/* 38879 */ {(13<<2)|2,{102,122,0}}, +/* 38880 */ {(14<<2)|2,{102,38,0}}, +/* 38881 */ {(14<<2)|2,{102,38,0}}, +/* 38882 */ {(14<<2)|2,{102,38,0}}, +/* 38883 */ {(14<<2)|2,{102,38,0}}, +/* 38884 */ {(14<<2)|2,{102,42,0}}, +/* 38885 */ {(14<<2)|2,{102,42,0}}, +/* 38886 */ {(14<<2)|2,{102,42,0}}, +/* 38887 */ {(14<<2)|2,{102,42,0}}, +/* 38888 */ {(14<<2)|2,{102,44,0}}, +/* 38889 */ {(14<<2)|2,{102,44,0}}, +/* 38890 */ {(14<<2)|2,{102,44,0}}, +/* 38891 */ {(14<<2)|2,{102,44,0}}, +/* 38892 */ {(14<<2)|2,{102,59,0}}, +/* 38893 */ {(14<<2)|2,{102,59,0}}, +/* 38894 */ {(14<<2)|2,{102,59,0}}, +/* 38895 */ {(14<<2)|2,{102,59,0}}, +/* 38896 */ {(14<<2)|2,{102,88,0}}, +/* 38897 */ {(14<<2)|2,{102,88,0}}, +/* 38898 */ {(14<<2)|2,{102,88,0}}, +/* 38899 */ {(14<<2)|2,{102,88,0}}, +/* 38900 */ {(14<<2)|2,{102,90,0}}, +/* 38901 */ {(14<<2)|2,{102,90,0}}, +/* 38902 */ {(14<<2)|2,{102,90,0}}, +/* 38903 */ {(14<<2)|2,{102,90,0}}, +/* 38904 */ {(16<<2)|2,{102,33,0}}, +/* 38905 */ {(16<<2)|2,{102,34,0}}, +/* 38906 */ {(16<<2)|2,{102,40,0}}, +/* 38907 */ {(16<<2)|2,{102,41,0}}, +/* 38908 */ {(16<<2)|2,{102,63,0}}, +/* 38909 */ {(6<<2)|1,{102,0,0}}, +/* 38910 */ {(6<<2)|1,{102,0,0}}, +/* 38911 */ {(6<<2)|1,{102,0,0}}, +/* 38912 */ {(16<<2)|3,{103,48,48}}, +/* 38913 */ {(16<<2)|3,{103,48,49}}, +/* 38914 */ {(16<<2)|3,{103,48,50}}, +/* 38915 */ {(16<<2)|3,{103,48,97}}, +/* 38916 */ {(16<<2)|3,{103,48,99}}, +/* 38917 */ {(16<<2)|3,{103,48,101}}, +/* 38918 */ {(16<<2)|3,{103,48,105}}, +/* 38919 */ {(16<<2)|3,{103,48,111}}, +/* 38920 */ {(16<<2)|3,{103,48,115}}, +/* 38921 */ {(16<<2)|3,{103,48,116}}, +/* 38922 */ {(11<<2)|2,{103,48,0}}, +/* 38923 */ {(11<<2)|2,{103,48,0}}, +/* 38924 */ {(11<<2)|2,{103,48,0}}, +/* 38925 */ {(11<<2)|2,{103,48,0}}, +/* 38926 */ {(11<<2)|2,{103,48,0}}, +/* 38927 */ {(11<<2)|2,{103,48,0}}, +/* 38928 */ {(11<<2)|2,{103,48,0}}, +/* 38929 */ {(11<<2)|2,{103,48,0}}, +/* 38930 */ {(11<<2)|2,{103,48,0}}, +/* 38931 */ {(11<<2)|2,{103,48,0}}, +/* 38932 */ {(11<<2)|2,{103,48,0}}, +/* 38933 */ {(11<<2)|2,{103,48,0}}, +/* 38934 */ {(11<<2)|2,{103,48,0}}, +/* 38935 */ {(11<<2)|2,{103,48,0}}, +/* 38936 */ {(11<<2)|2,{103,48,0}}, +/* 38937 */ {(11<<2)|2,{103,48,0}}, +/* 38938 */ {(11<<2)|2,{103,48,0}}, +/* 38939 */ {(11<<2)|2,{103,48,0}}, +/* 38940 */ {(11<<2)|2,{103,48,0}}, +/* 38941 */ {(11<<2)|2,{103,48,0}}, +/* 38942 */ {(11<<2)|2,{103,48,0}}, +/* 38943 */ {(11<<2)|2,{103,48,0}}, +/* 38944 */ {(16<<2)|3,{103,49,48}}, +/* 38945 */ {(16<<2)|3,{103,49,49}}, +/* 38946 */ {(16<<2)|3,{103,49,50}}, +/* 38947 */ {(16<<2)|3,{103,49,97}}, +/* 38948 */ {(16<<2)|3,{103,49,99}}, +/* 38949 */ {(16<<2)|3,{103,49,101}}, +/* 38950 */ {(16<<2)|3,{103,49,105}}, +/* 38951 */ {(16<<2)|3,{103,49,111}}, +/* 38952 */ {(16<<2)|3,{103,49,115}}, +/* 38953 */ {(16<<2)|3,{103,49,116}}, +/* 38954 */ {(11<<2)|2,{103,49,0}}, +/* 38955 */ {(11<<2)|2,{103,49,0}}, +/* 38956 */ {(11<<2)|2,{103,49,0}}, +/* 38957 */ {(11<<2)|2,{103,49,0}}, +/* 38958 */ {(11<<2)|2,{103,49,0}}, +/* 38959 */ {(11<<2)|2,{103,49,0}}, +/* 38960 */ {(11<<2)|2,{103,49,0}}, +/* 38961 */ {(11<<2)|2,{103,49,0}}, +/* 38962 */ {(11<<2)|2,{103,49,0}}, +/* 38963 */ {(11<<2)|2,{103,49,0}}, +/* 38964 */ {(11<<2)|2,{103,49,0}}, +/* 38965 */ {(11<<2)|2,{103,49,0}}, +/* 38966 */ {(11<<2)|2,{103,49,0}}, +/* 38967 */ {(11<<2)|2,{103,49,0}}, +/* 38968 */ {(11<<2)|2,{103,49,0}}, +/* 38969 */ {(11<<2)|2,{103,49,0}}, +/* 38970 */ {(11<<2)|2,{103,49,0}}, +/* 38971 */ {(11<<2)|2,{103,49,0}}, +/* 38972 */ {(11<<2)|2,{103,49,0}}, +/* 38973 */ {(11<<2)|2,{103,49,0}}, +/* 38974 */ {(11<<2)|2,{103,49,0}}, +/* 38975 */ {(11<<2)|2,{103,49,0}}, +/* 38976 */ {(16<<2)|3,{103,50,48}}, +/* 38977 */ {(16<<2)|3,{103,50,49}}, +/* 38978 */ {(16<<2)|3,{103,50,50}}, +/* 38979 */ {(16<<2)|3,{103,50,97}}, +/* 38980 */ {(16<<2)|3,{103,50,99}}, +/* 38981 */ {(16<<2)|3,{103,50,101}}, +/* 38982 */ {(16<<2)|3,{103,50,105}}, +/* 38983 */ {(16<<2)|3,{103,50,111}}, +/* 38984 */ {(16<<2)|3,{103,50,115}}, +/* 38985 */ {(16<<2)|3,{103,50,116}}, +/* 38986 */ {(11<<2)|2,{103,50,0}}, +/* 38987 */ {(11<<2)|2,{103,50,0}}, +/* 38988 */ {(11<<2)|2,{103,50,0}}, +/* 38989 */ {(11<<2)|2,{103,50,0}}, +/* 38990 */ {(11<<2)|2,{103,50,0}}, +/* 38991 */ {(11<<2)|2,{103,50,0}}, +/* 38992 */ {(11<<2)|2,{103,50,0}}, +/* 38993 */ {(11<<2)|2,{103,50,0}}, +/* 38994 */ {(11<<2)|2,{103,50,0}}, +/* 38995 */ {(11<<2)|2,{103,50,0}}, +/* 38996 */ {(11<<2)|2,{103,50,0}}, +/* 38997 */ {(11<<2)|2,{103,50,0}}, +/* 38998 */ {(11<<2)|2,{103,50,0}}, +/* 38999 */ {(11<<2)|2,{103,50,0}}, +/* 39000 */ {(11<<2)|2,{103,50,0}}, +/* 39001 */ {(11<<2)|2,{103,50,0}}, +/* 39002 */ {(11<<2)|2,{103,50,0}}, +/* 39003 */ {(11<<2)|2,{103,50,0}}, +/* 39004 */ {(11<<2)|2,{103,50,0}}, +/* 39005 */ {(11<<2)|2,{103,50,0}}, +/* 39006 */ {(11<<2)|2,{103,50,0}}, +/* 39007 */ {(11<<2)|2,{103,50,0}}, +/* 39008 */ {(16<<2)|3,{103,97,48}}, +/* 39009 */ {(16<<2)|3,{103,97,49}}, +/* 39010 */ {(16<<2)|3,{103,97,50}}, +/* 39011 */ {(16<<2)|3,{103,97,97}}, +/* 39012 */ {(16<<2)|3,{103,97,99}}, +/* 39013 */ {(16<<2)|3,{103,97,101}}, +/* 39014 */ {(16<<2)|3,{103,97,105}}, +/* 39015 */ {(16<<2)|3,{103,97,111}}, +/* 39016 */ {(16<<2)|3,{103,97,115}}, +/* 39017 */ {(16<<2)|3,{103,97,116}}, +/* 39018 */ {(11<<2)|2,{103,97,0}}, +/* 39019 */ {(11<<2)|2,{103,97,0}}, +/* 39020 */ {(11<<2)|2,{103,97,0}}, +/* 39021 */ {(11<<2)|2,{103,97,0}}, +/* 39022 */ {(11<<2)|2,{103,97,0}}, +/* 39023 */ {(11<<2)|2,{103,97,0}}, +/* 39024 */ {(11<<2)|2,{103,97,0}}, +/* 39025 */ {(11<<2)|2,{103,97,0}}, +/* 39026 */ {(11<<2)|2,{103,97,0}}, +/* 39027 */ {(11<<2)|2,{103,97,0}}, +/* 39028 */ {(11<<2)|2,{103,97,0}}, +/* 39029 */ {(11<<2)|2,{103,97,0}}, +/* 39030 */ {(11<<2)|2,{103,97,0}}, +/* 39031 */ {(11<<2)|2,{103,97,0}}, +/* 39032 */ {(11<<2)|2,{103,97,0}}, +/* 39033 */ {(11<<2)|2,{103,97,0}}, +/* 39034 */ {(11<<2)|2,{103,97,0}}, +/* 39035 */ {(11<<2)|2,{103,97,0}}, +/* 39036 */ {(11<<2)|2,{103,97,0}}, +/* 39037 */ {(11<<2)|2,{103,97,0}}, +/* 39038 */ {(11<<2)|2,{103,97,0}}, +/* 39039 */ {(11<<2)|2,{103,97,0}}, +/* 39040 */ {(16<<2)|3,{103,99,48}}, +/* 39041 */ {(16<<2)|3,{103,99,49}}, +/* 39042 */ {(16<<2)|3,{103,99,50}}, +/* 39043 */ {(16<<2)|3,{103,99,97}}, +/* 39044 */ {(16<<2)|3,{103,99,99}}, +/* 39045 */ {(16<<2)|3,{103,99,101}}, +/* 39046 */ {(16<<2)|3,{103,99,105}}, +/* 39047 */ {(16<<2)|3,{103,99,111}}, +/* 39048 */ {(16<<2)|3,{103,99,115}}, +/* 39049 */ {(16<<2)|3,{103,99,116}}, +/* 39050 */ {(11<<2)|2,{103,99,0}}, +/* 39051 */ {(11<<2)|2,{103,99,0}}, +/* 39052 */ {(11<<2)|2,{103,99,0}}, +/* 39053 */ {(11<<2)|2,{103,99,0}}, +/* 39054 */ {(11<<2)|2,{103,99,0}}, +/* 39055 */ {(11<<2)|2,{103,99,0}}, +/* 39056 */ {(11<<2)|2,{103,99,0}}, +/* 39057 */ {(11<<2)|2,{103,99,0}}, +/* 39058 */ {(11<<2)|2,{103,99,0}}, +/* 39059 */ {(11<<2)|2,{103,99,0}}, +/* 39060 */ {(11<<2)|2,{103,99,0}}, +/* 39061 */ {(11<<2)|2,{103,99,0}}, +/* 39062 */ {(11<<2)|2,{103,99,0}}, +/* 39063 */ {(11<<2)|2,{103,99,0}}, +/* 39064 */ {(11<<2)|2,{103,99,0}}, +/* 39065 */ {(11<<2)|2,{103,99,0}}, +/* 39066 */ {(11<<2)|2,{103,99,0}}, +/* 39067 */ {(11<<2)|2,{103,99,0}}, +/* 39068 */ {(11<<2)|2,{103,99,0}}, +/* 39069 */ {(11<<2)|2,{103,99,0}}, +/* 39070 */ {(11<<2)|2,{103,99,0}}, +/* 39071 */ {(11<<2)|2,{103,99,0}}, +/* 39072 */ {(16<<2)|3,{103,101,48}}, +/* 39073 */ {(16<<2)|3,{103,101,49}}, +/* 39074 */ {(16<<2)|3,{103,101,50}}, +/* 39075 */ {(16<<2)|3,{103,101,97}}, +/* 39076 */ {(16<<2)|3,{103,101,99}}, +/* 39077 */ {(16<<2)|3,{103,101,101}}, +/* 39078 */ {(16<<2)|3,{103,101,105}}, +/* 39079 */ {(16<<2)|3,{103,101,111}}, +/* 39080 */ {(16<<2)|3,{103,101,115}}, +/* 39081 */ {(16<<2)|3,{103,101,116}}, +/* 39082 */ {(11<<2)|2,{103,101,0}}, +/* 39083 */ {(11<<2)|2,{103,101,0}}, +/* 39084 */ {(11<<2)|2,{103,101,0}}, +/* 39085 */ {(11<<2)|2,{103,101,0}}, +/* 39086 */ {(11<<2)|2,{103,101,0}}, +/* 39087 */ {(11<<2)|2,{103,101,0}}, +/* 39088 */ {(11<<2)|2,{103,101,0}}, +/* 39089 */ {(11<<2)|2,{103,101,0}}, +/* 39090 */ {(11<<2)|2,{103,101,0}}, +/* 39091 */ {(11<<2)|2,{103,101,0}}, +/* 39092 */ {(11<<2)|2,{103,101,0}}, +/* 39093 */ {(11<<2)|2,{103,101,0}}, +/* 39094 */ {(11<<2)|2,{103,101,0}}, +/* 39095 */ {(11<<2)|2,{103,101,0}}, +/* 39096 */ {(11<<2)|2,{103,101,0}}, +/* 39097 */ {(11<<2)|2,{103,101,0}}, +/* 39098 */ {(11<<2)|2,{103,101,0}}, +/* 39099 */ {(11<<2)|2,{103,101,0}}, +/* 39100 */ {(11<<2)|2,{103,101,0}}, +/* 39101 */ {(11<<2)|2,{103,101,0}}, +/* 39102 */ {(11<<2)|2,{103,101,0}}, +/* 39103 */ {(11<<2)|2,{103,101,0}}, +/* 39104 */ {(16<<2)|3,{103,105,48}}, +/* 39105 */ {(16<<2)|3,{103,105,49}}, +/* 39106 */ {(16<<2)|3,{103,105,50}}, +/* 39107 */ {(16<<2)|3,{103,105,97}}, +/* 39108 */ {(16<<2)|3,{103,105,99}}, +/* 39109 */ {(16<<2)|3,{103,105,101}}, +/* 39110 */ {(16<<2)|3,{103,105,105}}, +/* 39111 */ {(16<<2)|3,{103,105,111}}, +/* 39112 */ {(16<<2)|3,{103,105,115}}, +/* 39113 */ {(16<<2)|3,{103,105,116}}, +/* 39114 */ {(11<<2)|2,{103,105,0}}, +/* 39115 */ {(11<<2)|2,{103,105,0}}, +/* 39116 */ {(11<<2)|2,{103,105,0}}, +/* 39117 */ {(11<<2)|2,{103,105,0}}, +/* 39118 */ {(11<<2)|2,{103,105,0}}, +/* 39119 */ {(11<<2)|2,{103,105,0}}, +/* 39120 */ {(11<<2)|2,{103,105,0}}, +/* 39121 */ {(11<<2)|2,{103,105,0}}, +/* 39122 */ {(11<<2)|2,{103,105,0}}, +/* 39123 */ {(11<<2)|2,{103,105,0}}, +/* 39124 */ {(11<<2)|2,{103,105,0}}, +/* 39125 */ {(11<<2)|2,{103,105,0}}, +/* 39126 */ {(11<<2)|2,{103,105,0}}, +/* 39127 */ {(11<<2)|2,{103,105,0}}, +/* 39128 */ {(11<<2)|2,{103,105,0}}, +/* 39129 */ {(11<<2)|2,{103,105,0}}, +/* 39130 */ {(11<<2)|2,{103,105,0}}, +/* 39131 */ {(11<<2)|2,{103,105,0}}, +/* 39132 */ {(11<<2)|2,{103,105,0}}, +/* 39133 */ {(11<<2)|2,{103,105,0}}, +/* 39134 */ {(11<<2)|2,{103,105,0}}, +/* 39135 */ {(11<<2)|2,{103,105,0}}, +/* 39136 */ {(16<<2)|3,{103,111,48}}, +/* 39137 */ {(16<<2)|3,{103,111,49}}, +/* 39138 */ {(16<<2)|3,{103,111,50}}, +/* 39139 */ {(16<<2)|3,{103,111,97}}, +/* 39140 */ {(16<<2)|3,{103,111,99}}, +/* 39141 */ {(16<<2)|3,{103,111,101}}, +/* 39142 */ {(16<<2)|3,{103,111,105}}, +/* 39143 */ {(16<<2)|3,{103,111,111}}, +/* 39144 */ {(16<<2)|3,{103,111,115}}, +/* 39145 */ {(16<<2)|3,{103,111,116}}, +/* 39146 */ {(11<<2)|2,{103,111,0}}, +/* 39147 */ {(11<<2)|2,{103,111,0}}, +/* 39148 */ {(11<<2)|2,{103,111,0}}, +/* 39149 */ {(11<<2)|2,{103,111,0}}, +/* 39150 */ {(11<<2)|2,{103,111,0}}, +/* 39151 */ {(11<<2)|2,{103,111,0}}, +/* 39152 */ {(11<<2)|2,{103,111,0}}, +/* 39153 */ {(11<<2)|2,{103,111,0}}, +/* 39154 */ {(11<<2)|2,{103,111,0}}, +/* 39155 */ {(11<<2)|2,{103,111,0}}, +/* 39156 */ {(11<<2)|2,{103,111,0}}, +/* 39157 */ {(11<<2)|2,{103,111,0}}, +/* 39158 */ {(11<<2)|2,{103,111,0}}, +/* 39159 */ {(11<<2)|2,{103,111,0}}, +/* 39160 */ {(11<<2)|2,{103,111,0}}, +/* 39161 */ {(11<<2)|2,{103,111,0}}, +/* 39162 */ {(11<<2)|2,{103,111,0}}, +/* 39163 */ {(11<<2)|2,{103,111,0}}, +/* 39164 */ {(11<<2)|2,{103,111,0}}, +/* 39165 */ {(11<<2)|2,{103,111,0}}, +/* 39166 */ {(11<<2)|2,{103,111,0}}, +/* 39167 */ {(11<<2)|2,{103,111,0}}, +/* 39168 */ {(16<<2)|3,{103,115,48}}, +/* 39169 */ {(16<<2)|3,{103,115,49}}, +/* 39170 */ {(16<<2)|3,{103,115,50}}, +/* 39171 */ {(16<<2)|3,{103,115,97}}, +/* 39172 */ {(16<<2)|3,{103,115,99}}, +/* 39173 */ {(16<<2)|3,{103,115,101}}, +/* 39174 */ {(16<<2)|3,{103,115,105}}, +/* 39175 */ {(16<<2)|3,{103,115,111}}, +/* 39176 */ {(16<<2)|3,{103,115,115}}, +/* 39177 */ {(16<<2)|3,{103,115,116}}, +/* 39178 */ {(11<<2)|2,{103,115,0}}, +/* 39179 */ {(11<<2)|2,{103,115,0}}, +/* 39180 */ {(11<<2)|2,{103,115,0}}, +/* 39181 */ {(11<<2)|2,{103,115,0}}, +/* 39182 */ {(11<<2)|2,{103,115,0}}, +/* 39183 */ {(11<<2)|2,{103,115,0}}, +/* 39184 */ {(11<<2)|2,{103,115,0}}, +/* 39185 */ {(11<<2)|2,{103,115,0}}, +/* 39186 */ {(11<<2)|2,{103,115,0}}, +/* 39187 */ {(11<<2)|2,{103,115,0}}, +/* 39188 */ {(11<<2)|2,{103,115,0}}, +/* 39189 */ {(11<<2)|2,{103,115,0}}, +/* 39190 */ {(11<<2)|2,{103,115,0}}, +/* 39191 */ {(11<<2)|2,{103,115,0}}, +/* 39192 */ {(11<<2)|2,{103,115,0}}, +/* 39193 */ {(11<<2)|2,{103,115,0}}, +/* 39194 */ {(11<<2)|2,{103,115,0}}, +/* 39195 */ {(11<<2)|2,{103,115,0}}, +/* 39196 */ {(11<<2)|2,{103,115,0}}, +/* 39197 */ {(11<<2)|2,{103,115,0}}, +/* 39198 */ {(11<<2)|2,{103,115,0}}, +/* 39199 */ {(11<<2)|2,{103,115,0}}, +/* 39200 */ {(16<<2)|3,{103,116,48}}, +/* 39201 */ {(16<<2)|3,{103,116,49}}, +/* 39202 */ {(16<<2)|3,{103,116,50}}, +/* 39203 */ {(16<<2)|3,{103,116,97}}, +/* 39204 */ {(16<<2)|3,{103,116,99}}, +/* 39205 */ {(16<<2)|3,{103,116,101}}, +/* 39206 */ {(16<<2)|3,{103,116,105}}, +/* 39207 */ {(16<<2)|3,{103,116,111}}, +/* 39208 */ {(16<<2)|3,{103,116,115}}, +/* 39209 */ {(16<<2)|3,{103,116,116}}, +/* 39210 */ {(11<<2)|2,{103,116,0}}, +/* 39211 */ {(11<<2)|2,{103,116,0}}, +/* 39212 */ {(11<<2)|2,{103,116,0}}, +/* 39213 */ {(11<<2)|2,{103,116,0}}, +/* 39214 */ {(11<<2)|2,{103,116,0}}, +/* 39215 */ {(11<<2)|2,{103,116,0}}, +/* 39216 */ {(11<<2)|2,{103,116,0}}, +/* 39217 */ {(11<<2)|2,{103,116,0}}, +/* 39218 */ {(11<<2)|2,{103,116,0}}, +/* 39219 */ {(11<<2)|2,{103,116,0}}, +/* 39220 */ {(11<<2)|2,{103,116,0}}, +/* 39221 */ {(11<<2)|2,{103,116,0}}, +/* 39222 */ {(11<<2)|2,{103,116,0}}, +/* 39223 */ {(11<<2)|2,{103,116,0}}, +/* 39224 */ {(11<<2)|2,{103,116,0}}, +/* 39225 */ {(11<<2)|2,{103,116,0}}, +/* 39226 */ {(11<<2)|2,{103,116,0}}, +/* 39227 */ {(11<<2)|2,{103,116,0}}, +/* 39228 */ {(11<<2)|2,{103,116,0}}, +/* 39229 */ {(11<<2)|2,{103,116,0}}, +/* 39230 */ {(11<<2)|2,{103,116,0}}, +/* 39231 */ {(11<<2)|2,{103,116,0}}, +/* 39232 */ {(12<<2)|2,{103,32,0}}, +/* 39233 */ {(12<<2)|2,{103,32,0}}, +/* 39234 */ {(12<<2)|2,{103,32,0}}, +/* 39235 */ {(12<<2)|2,{103,32,0}}, +/* 39236 */ {(12<<2)|2,{103,32,0}}, +/* 39237 */ {(12<<2)|2,{103,32,0}}, +/* 39238 */ {(12<<2)|2,{103,32,0}}, +/* 39239 */ {(12<<2)|2,{103,32,0}}, +/* 39240 */ {(12<<2)|2,{103,32,0}}, +/* 39241 */ {(12<<2)|2,{103,32,0}}, +/* 39242 */ {(12<<2)|2,{103,32,0}}, +/* 39243 */ {(12<<2)|2,{103,32,0}}, +/* 39244 */ {(12<<2)|2,{103,32,0}}, +/* 39245 */ {(12<<2)|2,{103,32,0}}, +/* 39246 */ {(12<<2)|2,{103,32,0}}, +/* 39247 */ {(12<<2)|2,{103,32,0}}, +/* 39248 */ {(12<<2)|2,{103,37,0}}, +/* 39249 */ {(12<<2)|2,{103,37,0}}, +/* 39250 */ {(12<<2)|2,{103,37,0}}, +/* 39251 */ {(12<<2)|2,{103,37,0}}, +/* 39252 */ {(12<<2)|2,{103,37,0}}, +/* 39253 */ {(12<<2)|2,{103,37,0}}, +/* 39254 */ {(12<<2)|2,{103,37,0}}, +/* 39255 */ {(12<<2)|2,{103,37,0}}, +/* 39256 */ {(12<<2)|2,{103,37,0}}, +/* 39257 */ {(12<<2)|2,{103,37,0}}, +/* 39258 */ {(12<<2)|2,{103,37,0}}, +/* 39259 */ {(12<<2)|2,{103,37,0}}, +/* 39260 */ {(12<<2)|2,{103,37,0}}, +/* 39261 */ {(12<<2)|2,{103,37,0}}, +/* 39262 */ {(12<<2)|2,{103,37,0}}, +/* 39263 */ {(12<<2)|2,{103,37,0}}, +/* 39264 */ {(12<<2)|2,{103,45,0}}, +/* 39265 */ {(12<<2)|2,{103,45,0}}, +/* 39266 */ {(12<<2)|2,{103,45,0}}, +/* 39267 */ {(12<<2)|2,{103,45,0}}, +/* 39268 */ {(12<<2)|2,{103,45,0}}, +/* 39269 */ {(12<<2)|2,{103,45,0}}, +/* 39270 */ {(12<<2)|2,{103,45,0}}, +/* 39271 */ {(12<<2)|2,{103,45,0}}, +/* 39272 */ {(12<<2)|2,{103,45,0}}, +/* 39273 */ {(12<<2)|2,{103,45,0}}, +/* 39274 */ {(12<<2)|2,{103,45,0}}, +/* 39275 */ {(12<<2)|2,{103,45,0}}, +/* 39276 */ {(12<<2)|2,{103,45,0}}, +/* 39277 */ {(12<<2)|2,{103,45,0}}, +/* 39278 */ {(12<<2)|2,{103,45,0}}, +/* 39279 */ {(12<<2)|2,{103,45,0}}, +/* 39280 */ {(12<<2)|2,{103,46,0}}, +/* 39281 */ {(12<<2)|2,{103,46,0}}, +/* 39282 */ {(12<<2)|2,{103,46,0}}, +/* 39283 */ {(12<<2)|2,{103,46,0}}, +/* 39284 */ {(12<<2)|2,{103,46,0}}, +/* 39285 */ {(12<<2)|2,{103,46,0}}, +/* 39286 */ {(12<<2)|2,{103,46,0}}, +/* 39287 */ {(12<<2)|2,{103,46,0}}, +/* 39288 */ {(12<<2)|2,{103,46,0}}, +/* 39289 */ {(12<<2)|2,{103,46,0}}, +/* 39290 */ {(12<<2)|2,{103,46,0}}, +/* 39291 */ {(12<<2)|2,{103,46,0}}, +/* 39292 */ {(12<<2)|2,{103,46,0}}, +/* 39293 */ {(12<<2)|2,{103,46,0}}, +/* 39294 */ {(12<<2)|2,{103,46,0}}, +/* 39295 */ {(12<<2)|2,{103,46,0}}, +/* 39296 */ {(12<<2)|2,{103,47,0}}, +/* 39297 */ {(12<<2)|2,{103,47,0}}, +/* 39298 */ {(12<<2)|2,{103,47,0}}, +/* 39299 */ {(12<<2)|2,{103,47,0}}, +/* 39300 */ {(12<<2)|2,{103,47,0}}, +/* 39301 */ {(12<<2)|2,{103,47,0}}, +/* 39302 */ {(12<<2)|2,{103,47,0}}, +/* 39303 */ {(12<<2)|2,{103,47,0}}, +/* 39304 */ {(12<<2)|2,{103,47,0}}, +/* 39305 */ {(12<<2)|2,{103,47,0}}, +/* 39306 */ {(12<<2)|2,{103,47,0}}, +/* 39307 */ {(12<<2)|2,{103,47,0}}, +/* 39308 */ {(12<<2)|2,{103,47,0}}, +/* 39309 */ {(12<<2)|2,{103,47,0}}, +/* 39310 */ {(12<<2)|2,{103,47,0}}, +/* 39311 */ {(12<<2)|2,{103,47,0}}, +/* 39312 */ {(12<<2)|2,{103,51,0}}, +/* 39313 */ {(12<<2)|2,{103,51,0}}, +/* 39314 */ {(12<<2)|2,{103,51,0}}, +/* 39315 */ {(12<<2)|2,{103,51,0}}, +/* 39316 */ {(12<<2)|2,{103,51,0}}, +/* 39317 */ {(12<<2)|2,{103,51,0}}, +/* 39318 */ {(12<<2)|2,{103,51,0}}, +/* 39319 */ {(12<<2)|2,{103,51,0}}, +/* 39320 */ {(12<<2)|2,{103,51,0}}, +/* 39321 */ {(12<<2)|2,{103,51,0}}, +/* 39322 */ {(12<<2)|2,{103,51,0}}, +/* 39323 */ {(12<<2)|2,{103,51,0}}, +/* 39324 */ {(12<<2)|2,{103,51,0}}, +/* 39325 */ {(12<<2)|2,{103,51,0}}, +/* 39326 */ {(12<<2)|2,{103,51,0}}, +/* 39327 */ {(12<<2)|2,{103,51,0}}, +/* 39328 */ {(12<<2)|2,{103,52,0}}, +/* 39329 */ {(12<<2)|2,{103,52,0}}, +/* 39330 */ {(12<<2)|2,{103,52,0}}, +/* 39331 */ {(12<<2)|2,{103,52,0}}, +/* 39332 */ {(12<<2)|2,{103,52,0}}, +/* 39333 */ {(12<<2)|2,{103,52,0}}, +/* 39334 */ {(12<<2)|2,{103,52,0}}, +/* 39335 */ {(12<<2)|2,{103,52,0}}, +/* 39336 */ {(12<<2)|2,{103,52,0}}, +/* 39337 */ {(12<<2)|2,{103,52,0}}, +/* 39338 */ {(12<<2)|2,{103,52,0}}, +/* 39339 */ {(12<<2)|2,{103,52,0}}, +/* 39340 */ {(12<<2)|2,{103,52,0}}, +/* 39341 */ {(12<<2)|2,{103,52,0}}, +/* 39342 */ {(12<<2)|2,{103,52,0}}, +/* 39343 */ {(12<<2)|2,{103,52,0}}, +/* 39344 */ {(12<<2)|2,{103,53,0}}, +/* 39345 */ {(12<<2)|2,{103,53,0}}, +/* 39346 */ {(12<<2)|2,{103,53,0}}, +/* 39347 */ {(12<<2)|2,{103,53,0}}, +/* 39348 */ {(12<<2)|2,{103,53,0}}, +/* 39349 */ {(12<<2)|2,{103,53,0}}, +/* 39350 */ {(12<<2)|2,{103,53,0}}, +/* 39351 */ {(12<<2)|2,{103,53,0}}, +/* 39352 */ {(12<<2)|2,{103,53,0}}, +/* 39353 */ {(12<<2)|2,{103,53,0}}, +/* 39354 */ {(12<<2)|2,{103,53,0}}, +/* 39355 */ {(12<<2)|2,{103,53,0}}, +/* 39356 */ {(12<<2)|2,{103,53,0}}, +/* 39357 */ {(12<<2)|2,{103,53,0}}, +/* 39358 */ {(12<<2)|2,{103,53,0}}, +/* 39359 */ {(12<<2)|2,{103,53,0}}, +/* 39360 */ {(12<<2)|2,{103,54,0}}, +/* 39361 */ {(12<<2)|2,{103,54,0}}, +/* 39362 */ {(12<<2)|2,{103,54,0}}, +/* 39363 */ {(12<<2)|2,{103,54,0}}, +/* 39364 */ {(12<<2)|2,{103,54,0}}, +/* 39365 */ {(12<<2)|2,{103,54,0}}, +/* 39366 */ {(12<<2)|2,{103,54,0}}, +/* 39367 */ {(12<<2)|2,{103,54,0}}, +/* 39368 */ {(12<<2)|2,{103,54,0}}, +/* 39369 */ {(12<<2)|2,{103,54,0}}, +/* 39370 */ {(12<<2)|2,{103,54,0}}, +/* 39371 */ {(12<<2)|2,{103,54,0}}, +/* 39372 */ {(12<<2)|2,{103,54,0}}, +/* 39373 */ {(12<<2)|2,{103,54,0}}, +/* 39374 */ {(12<<2)|2,{103,54,0}}, +/* 39375 */ {(12<<2)|2,{103,54,0}}, +/* 39376 */ {(12<<2)|2,{103,55,0}}, +/* 39377 */ {(12<<2)|2,{103,55,0}}, +/* 39378 */ {(12<<2)|2,{103,55,0}}, +/* 39379 */ {(12<<2)|2,{103,55,0}}, +/* 39380 */ {(12<<2)|2,{103,55,0}}, +/* 39381 */ {(12<<2)|2,{103,55,0}}, +/* 39382 */ {(12<<2)|2,{103,55,0}}, +/* 39383 */ {(12<<2)|2,{103,55,0}}, +/* 39384 */ {(12<<2)|2,{103,55,0}}, +/* 39385 */ {(12<<2)|2,{103,55,0}}, +/* 39386 */ {(12<<2)|2,{103,55,0}}, +/* 39387 */ {(12<<2)|2,{103,55,0}}, +/* 39388 */ {(12<<2)|2,{103,55,0}}, +/* 39389 */ {(12<<2)|2,{103,55,0}}, +/* 39390 */ {(12<<2)|2,{103,55,0}}, +/* 39391 */ {(12<<2)|2,{103,55,0}}, +/* 39392 */ {(12<<2)|2,{103,56,0}}, +/* 39393 */ {(12<<2)|2,{103,56,0}}, +/* 39394 */ {(12<<2)|2,{103,56,0}}, +/* 39395 */ {(12<<2)|2,{103,56,0}}, +/* 39396 */ {(12<<2)|2,{103,56,0}}, +/* 39397 */ {(12<<2)|2,{103,56,0}}, +/* 39398 */ {(12<<2)|2,{103,56,0}}, +/* 39399 */ {(12<<2)|2,{103,56,0}}, +/* 39400 */ {(12<<2)|2,{103,56,0}}, +/* 39401 */ {(12<<2)|2,{103,56,0}}, +/* 39402 */ {(12<<2)|2,{103,56,0}}, +/* 39403 */ {(12<<2)|2,{103,56,0}}, +/* 39404 */ {(12<<2)|2,{103,56,0}}, +/* 39405 */ {(12<<2)|2,{103,56,0}}, +/* 39406 */ {(12<<2)|2,{103,56,0}}, +/* 39407 */ {(12<<2)|2,{103,56,0}}, +/* 39408 */ {(12<<2)|2,{103,57,0}}, +/* 39409 */ {(12<<2)|2,{103,57,0}}, +/* 39410 */ {(12<<2)|2,{103,57,0}}, +/* 39411 */ {(12<<2)|2,{103,57,0}}, +/* 39412 */ {(12<<2)|2,{103,57,0}}, +/* 39413 */ {(12<<2)|2,{103,57,0}}, +/* 39414 */ {(12<<2)|2,{103,57,0}}, +/* 39415 */ {(12<<2)|2,{103,57,0}}, +/* 39416 */ {(12<<2)|2,{103,57,0}}, +/* 39417 */ {(12<<2)|2,{103,57,0}}, +/* 39418 */ {(12<<2)|2,{103,57,0}}, +/* 39419 */ {(12<<2)|2,{103,57,0}}, +/* 39420 */ {(12<<2)|2,{103,57,0}}, +/* 39421 */ {(12<<2)|2,{103,57,0}}, +/* 39422 */ {(12<<2)|2,{103,57,0}}, +/* 39423 */ {(12<<2)|2,{103,57,0}}, +/* 39424 */ {(12<<2)|2,{103,61,0}}, +/* 39425 */ {(12<<2)|2,{103,61,0}}, +/* 39426 */ {(12<<2)|2,{103,61,0}}, +/* 39427 */ {(12<<2)|2,{103,61,0}}, +/* 39428 */ {(12<<2)|2,{103,61,0}}, +/* 39429 */ {(12<<2)|2,{103,61,0}}, +/* 39430 */ {(12<<2)|2,{103,61,0}}, +/* 39431 */ {(12<<2)|2,{103,61,0}}, +/* 39432 */ {(12<<2)|2,{103,61,0}}, +/* 39433 */ {(12<<2)|2,{103,61,0}}, +/* 39434 */ {(12<<2)|2,{103,61,0}}, +/* 39435 */ {(12<<2)|2,{103,61,0}}, +/* 39436 */ {(12<<2)|2,{103,61,0}}, +/* 39437 */ {(12<<2)|2,{103,61,0}}, +/* 39438 */ {(12<<2)|2,{103,61,0}}, +/* 39439 */ {(12<<2)|2,{103,61,0}}, +/* 39440 */ {(12<<2)|2,{103,65,0}}, +/* 39441 */ {(12<<2)|2,{103,65,0}}, +/* 39442 */ {(12<<2)|2,{103,65,0}}, +/* 39443 */ {(12<<2)|2,{103,65,0}}, +/* 39444 */ {(12<<2)|2,{103,65,0}}, +/* 39445 */ {(12<<2)|2,{103,65,0}}, +/* 39446 */ {(12<<2)|2,{103,65,0}}, +/* 39447 */ {(12<<2)|2,{103,65,0}}, +/* 39448 */ {(12<<2)|2,{103,65,0}}, +/* 39449 */ {(12<<2)|2,{103,65,0}}, +/* 39450 */ {(12<<2)|2,{103,65,0}}, +/* 39451 */ {(12<<2)|2,{103,65,0}}, +/* 39452 */ {(12<<2)|2,{103,65,0}}, +/* 39453 */ {(12<<2)|2,{103,65,0}}, +/* 39454 */ {(12<<2)|2,{103,65,0}}, +/* 39455 */ {(12<<2)|2,{103,65,0}}, +/* 39456 */ {(12<<2)|2,{103,95,0}}, +/* 39457 */ {(12<<2)|2,{103,95,0}}, +/* 39458 */ {(12<<2)|2,{103,95,0}}, +/* 39459 */ {(12<<2)|2,{103,95,0}}, +/* 39460 */ {(12<<2)|2,{103,95,0}}, +/* 39461 */ {(12<<2)|2,{103,95,0}}, +/* 39462 */ {(12<<2)|2,{103,95,0}}, +/* 39463 */ {(12<<2)|2,{103,95,0}}, +/* 39464 */ {(12<<2)|2,{103,95,0}}, +/* 39465 */ {(12<<2)|2,{103,95,0}}, +/* 39466 */ {(12<<2)|2,{103,95,0}}, +/* 39467 */ {(12<<2)|2,{103,95,0}}, +/* 39468 */ {(12<<2)|2,{103,95,0}}, +/* 39469 */ {(12<<2)|2,{103,95,0}}, +/* 39470 */ {(12<<2)|2,{103,95,0}}, +/* 39471 */ {(12<<2)|2,{103,95,0}}, +/* 39472 */ {(12<<2)|2,{103,98,0}}, +/* 39473 */ {(12<<2)|2,{103,98,0}}, +/* 39474 */ {(12<<2)|2,{103,98,0}}, +/* 39475 */ {(12<<2)|2,{103,98,0}}, +/* 39476 */ {(12<<2)|2,{103,98,0}}, +/* 39477 */ {(12<<2)|2,{103,98,0}}, +/* 39478 */ {(12<<2)|2,{103,98,0}}, +/* 39479 */ {(12<<2)|2,{103,98,0}}, +/* 39480 */ {(12<<2)|2,{103,98,0}}, +/* 39481 */ {(12<<2)|2,{103,98,0}}, +/* 39482 */ {(12<<2)|2,{103,98,0}}, +/* 39483 */ {(12<<2)|2,{103,98,0}}, +/* 39484 */ {(12<<2)|2,{103,98,0}}, +/* 39485 */ {(12<<2)|2,{103,98,0}}, +/* 39486 */ {(12<<2)|2,{103,98,0}}, +/* 39487 */ {(12<<2)|2,{103,98,0}}, +/* 39488 */ {(12<<2)|2,{103,100,0}}, +/* 39489 */ {(12<<2)|2,{103,100,0}}, +/* 39490 */ {(12<<2)|2,{103,100,0}}, +/* 39491 */ {(12<<2)|2,{103,100,0}}, +/* 39492 */ {(12<<2)|2,{103,100,0}}, +/* 39493 */ {(12<<2)|2,{103,100,0}}, +/* 39494 */ {(12<<2)|2,{103,100,0}}, +/* 39495 */ {(12<<2)|2,{103,100,0}}, +/* 39496 */ {(12<<2)|2,{103,100,0}}, +/* 39497 */ {(12<<2)|2,{103,100,0}}, +/* 39498 */ {(12<<2)|2,{103,100,0}}, +/* 39499 */ {(12<<2)|2,{103,100,0}}, +/* 39500 */ {(12<<2)|2,{103,100,0}}, +/* 39501 */ {(12<<2)|2,{103,100,0}}, +/* 39502 */ {(12<<2)|2,{103,100,0}}, +/* 39503 */ {(12<<2)|2,{103,100,0}}, +/* 39504 */ {(12<<2)|2,{103,102,0}}, +/* 39505 */ {(12<<2)|2,{103,102,0}}, +/* 39506 */ {(12<<2)|2,{103,102,0}}, +/* 39507 */ {(12<<2)|2,{103,102,0}}, +/* 39508 */ {(12<<2)|2,{103,102,0}}, +/* 39509 */ {(12<<2)|2,{103,102,0}}, +/* 39510 */ {(12<<2)|2,{103,102,0}}, +/* 39511 */ {(12<<2)|2,{103,102,0}}, +/* 39512 */ {(12<<2)|2,{103,102,0}}, +/* 39513 */ {(12<<2)|2,{103,102,0}}, +/* 39514 */ {(12<<2)|2,{103,102,0}}, +/* 39515 */ {(12<<2)|2,{103,102,0}}, +/* 39516 */ {(12<<2)|2,{103,102,0}}, +/* 39517 */ {(12<<2)|2,{103,102,0}}, +/* 39518 */ {(12<<2)|2,{103,102,0}}, +/* 39519 */ {(12<<2)|2,{103,102,0}}, +/* 39520 */ {(12<<2)|2,{103,103,0}}, +/* 39521 */ {(12<<2)|2,{103,103,0}}, +/* 39522 */ {(12<<2)|2,{103,103,0}}, +/* 39523 */ {(12<<2)|2,{103,103,0}}, +/* 39524 */ {(12<<2)|2,{103,103,0}}, +/* 39525 */ {(12<<2)|2,{103,103,0}}, +/* 39526 */ {(12<<2)|2,{103,103,0}}, +/* 39527 */ {(12<<2)|2,{103,103,0}}, +/* 39528 */ {(12<<2)|2,{103,103,0}}, +/* 39529 */ {(12<<2)|2,{103,103,0}}, +/* 39530 */ {(12<<2)|2,{103,103,0}}, +/* 39531 */ {(12<<2)|2,{103,103,0}}, +/* 39532 */ {(12<<2)|2,{103,103,0}}, +/* 39533 */ {(12<<2)|2,{103,103,0}}, +/* 39534 */ {(12<<2)|2,{103,103,0}}, +/* 39535 */ {(12<<2)|2,{103,103,0}}, +/* 39536 */ {(12<<2)|2,{103,104,0}}, +/* 39537 */ {(12<<2)|2,{103,104,0}}, +/* 39538 */ {(12<<2)|2,{103,104,0}}, +/* 39539 */ {(12<<2)|2,{103,104,0}}, +/* 39540 */ {(12<<2)|2,{103,104,0}}, +/* 39541 */ {(12<<2)|2,{103,104,0}}, +/* 39542 */ {(12<<2)|2,{103,104,0}}, +/* 39543 */ {(12<<2)|2,{103,104,0}}, +/* 39544 */ {(12<<2)|2,{103,104,0}}, +/* 39545 */ {(12<<2)|2,{103,104,0}}, +/* 39546 */ {(12<<2)|2,{103,104,0}}, +/* 39547 */ {(12<<2)|2,{103,104,0}}, +/* 39548 */ {(12<<2)|2,{103,104,0}}, +/* 39549 */ {(12<<2)|2,{103,104,0}}, +/* 39550 */ {(12<<2)|2,{103,104,0}}, +/* 39551 */ {(12<<2)|2,{103,104,0}}, +/* 39552 */ {(12<<2)|2,{103,108,0}}, +/* 39553 */ {(12<<2)|2,{103,108,0}}, +/* 39554 */ {(12<<2)|2,{103,108,0}}, +/* 39555 */ {(12<<2)|2,{103,108,0}}, +/* 39556 */ {(12<<2)|2,{103,108,0}}, +/* 39557 */ {(12<<2)|2,{103,108,0}}, +/* 39558 */ {(12<<2)|2,{103,108,0}}, +/* 39559 */ {(12<<2)|2,{103,108,0}}, +/* 39560 */ {(12<<2)|2,{103,108,0}}, +/* 39561 */ {(12<<2)|2,{103,108,0}}, +/* 39562 */ {(12<<2)|2,{103,108,0}}, +/* 39563 */ {(12<<2)|2,{103,108,0}}, +/* 39564 */ {(12<<2)|2,{103,108,0}}, +/* 39565 */ {(12<<2)|2,{103,108,0}}, +/* 39566 */ {(12<<2)|2,{103,108,0}}, +/* 39567 */ {(12<<2)|2,{103,108,0}}, +/* 39568 */ {(12<<2)|2,{103,109,0}}, +/* 39569 */ {(12<<2)|2,{103,109,0}}, +/* 39570 */ {(12<<2)|2,{103,109,0}}, +/* 39571 */ {(12<<2)|2,{103,109,0}}, +/* 39572 */ {(12<<2)|2,{103,109,0}}, +/* 39573 */ {(12<<2)|2,{103,109,0}}, +/* 39574 */ {(12<<2)|2,{103,109,0}}, +/* 39575 */ {(12<<2)|2,{103,109,0}}, +/* 39576 */ {(12<<2)|2,{103,109,0}}, +/* 39577 */ {(12<<2)|2,{103,109,0}}, +/* 39578 */ {(12<<2)|2,{103,109,0}}, +/* 39579 */ {(12<<2)|2,{103,109,0}}, +/* 39580 */ {(12<<2)|2,{103,109,0}}, +/* 39581 */ {(12<<2)|2,{103,109,0}}, +/* 39582 */ {(12<<2)|2,{103,109,0}}, +/* 39583 */ {(12<<2)|2,{103,109,0}}, +/* 39584 */ {(12<<2)|2,{103,110,0}}, +/* 39585 */ {(12<<2)|2,{103,110,0}}, +/* 39586 */ {(12<<2)|2,{103,110,0}}, +/* 39587 */ {(12<<2)|2,{103,110,0}}, +/* 39588 */ {(12<<2)|2,{103,110,0}}, +/* 39589 */ {(12<<2)|2,{103,110,0}}, +/* 39590 */ {(12<<2)|2,{103,110,0}}, +/* 39591 */ {(12<<2)|2,{103,110,0}}, +/* 39592 */ {(12<<2)|2,{103,110,0}}, +/* 39593 */ {(12<<2)|2,{103,110,0}}, +/* 39594 */ {(12<<2)|2,{103,110,0}}, +/* 39595 */ {(12<<2)|2,{103,110,0}}, +/* 39596 */ {(12<<2)|2,{103,110,0}}, +/* 39597 */ {(12<<2)|2,{103,110,0}}, +/* 39598 */ {(12<<2)|2,{103,110,0}}, +/* 39599 */ {(12<<2)|2,{103,110,0}}, +/* 39600 */ {(12<<2)|2,{103,112,0}}, +/* 39601 */ {(12<<2)|2,{103,112,0}}, +/* 39602 */ {(12<<2)|2,{103,112,0}}, +/* 39603 */ {(12<<2)|2,{103,112,0}}, +/* 39604 */ {(12<<2)|2,{103,112,0}}, +/* 39605 */ {(12<<2)|2,{103,112,0}}, +/* 39606 */ {(12<<2)|2,{103,112,0}}, +/* 39607 */ {(12<<2)|2,{103,112,0}}, +/* 39608 */ {(12<<2)|2,{103,112,0}}, +/* 39609 */ {(12<<2)|2,{103,112,0}}, +/* 39610 */ {(12<<2)|2,{103,112,0}}, +/* 39611 */ {(12<<2)|2,{103,112,0}}, +/* 39612 */ {(12<<2)|2,{103,112,0}}, +/* 39613 */ {(12<<2)|2,{103,112,0}}, +/* 39614 */ {(12<<2)|2,{103,112,0}}, +/* 39615 */ {(12<<2)|2,{103,112,0}}, +/* 39616 */ {(12<<2)|2,{103,114,0}}, +/* 39617 */ {(12<<2)|2,{103,114,0}}, +/* 39618 */ {(12<<2)|2,{103,114,0}}, +/* 39619 */ {(12<<2)|2,{103,114,0}}, +/* 39620 */ {(12<<2)|2,{103,114,0}}, +/* 39621 */ {(12<<2)|2,{103,114,0}}, +/* 39622 */ {(12<<2)|2,{103,114,0}}, +/* 39623 */ {(12<<2)|2,{103,114,0}}, +/* 39624 */ {(12<<2)|2,{103,114,0}}, +/* 39625 */ {(12<<2)|2,{103,114,0}}, +/* 39626 */ {(12<<2)|2,{103,114,0}}, +/* 39627 */ {(12<<2)|2,{103,114,0}}, +/* 39628 */ {(12<<2)|2,{103,114,0}}, +/* 39629 */ {(12<<2)|2,{103,114,0}}, +/* 39630 */ {(12<<2)|2,{103,114,0}}, +/* 39631 */ {(12<<2)|2,{103,114,0}}, +/* 39632 */ {(12<<2)|2,{103,117,0}}, +/* 39633 */ {(12<<2)|2,{103,117,0}}, +/* 39634 */ {(12<<2)|2,{103,117,0}}, +/* 39635 */ {(12<<2)|2,{103,117,0}}, +/* 39636 */ {(12<<2)|2,{103,117,0}}, +/* 39637 */ {(12<<2)|2,{103,117,0}}, +/* 39638 */ {(12<<2)|2,{103,117,0}}, +/* 39639 */ {(12<<2)|2,{103,117,0}}, +/* 39640 */ {(12<<2)|2,{103,117,0}}, +/* 39641 */ {(12<<2)|2,{103,117,0}}, +/* 39642 */ {(12<<2)|2,{103,117,0}}, +/* 39643 */ {(12<<2)|2,{103,117,0}}, +/* 39644 */ {(12<<2)|2,{103,117,0}}, +/* 39645 */ {(12<<2)|2,{103,117,0}}, +/* 39646 */ {(12<<2)|2,{103,117,0}}, +/* 39647 */ {(12<<2)|2,{103,117,0}}, +/* 39648 */ {(13<<2)|2,{103,58,0}}, +/* 39649 */ {(13<<2)|2,{103,58,0}}, +/* 39650 */ {(13<<2)|2,{103,58,0}}, +/* 39651 */ {(13<<2)|2,{103,58,0}}, +/* 39652 */ {(13<<2)|2,{103,58,0}}, +/* 39653 */ {(13<<2)|2,{103,58,0}}, +/* 39654 */ {(13<<2)|2,{103,58,0}}, +/* 39655 */ {(13<<2)|2,{103,58,0}}, +/* 39656 */ {(13<<2)|2,{103,66,0}}, +/* 39657 */ {(13<<2)|2,{103,66,0}}, +/* 39658 */ {(13<<2)|2,{103,66,0}}, +/* 39659 */ {(13<<2)|2,{103,66,0}}, +/* 39660 */ {(13<<2)|2,{103,66,0}}, +/* 39661 */ {(13<<2)|2,{103,66,0}}, +/* 39662 */ {(13<<2)|2,{103,66,0}}, +/* 39663 */ {(13<<2)|2,{103,66,0}}, +/* 39664 */ {(13<<2)|2,{103,67,0}}, +/* 39665 */ {(13<<2)|2,{103,67,0}}, +/* 39666 */ {(13<<2)|2,{103,67,0}}, +/* 39667 */ {(13<<2)|2,{103,67,0}}, +/* 39668 */ {(13<<2)|2,{103,67,0}}, +/* 39669 */ {(13<<2)|2,{103,67,0}}, +/* 39670 */ {(13<<2)|2,{103,67,0}}, +/* 39671 */ {(13<<2)|2,{103,67,0}}, +/* 39672 */ {(13<<2)|2,{103,68,0}}, +/* 39673 */ {(13<<2)|2,{103,68,0}}, +/* 39674 */ {(13<<2)|2,{103,68,0}}, +/* 39675 */ {(13<<2)|2,{103,68,0}}, +/* 39676 */ {(13<<2)|2,{103,68,0}}, +/* 39677 */ {(13<<2)|2,{103,68,0}}, +/* 39678 */ {(13<<2)|2,{103,68,0}}, +/* 39679 */ {(13<<2)|2,{103,68,0}}, +/* 39680 */ {(13<<2)|2,{103,69,0}}, +/* 39681 */ {(13<<2)|2,{103,69,0}}, +/* 39682 */ {(13<<2)|2,{103,69,0}}, +/* 39683 */ {(13<<2)|2,{103,69,0}}, +/* 39684 */ {(13<<2)|2,{103,69,0}}, +/* 39685 */ {(13<<2)|2,{103,69,0}}, +/* 39686 */ {(13<<2)|2,{103,69,0}}, +/* 39687 */ {(13<<2)|2,{103,69,0}}, +/* 39688 */ {(13<<2)|2,{103,70,0}}, +/* 39689 */ {(13<<2)|2,{103,70,0}}, +/* 39690 */ {(13<<2)|2,{103,70,0}}, +/* 39691 */ {(13<<2)|2,{103,70,0}}, +/* 39692 */ {(13<<2)|2,{103,70,0}}, +/* 39693 */ {(13<<2)|2,{103,70,0}}, +/* 39694 */ {(13<<2)|2,{103,70,0}}, +/* 39695 */ {(13<<2)|2,{103,70,0}}, +/* 39696 */ {(13<<2)|2,{103,71,0}}, +/* 39697 */ {(13<<2)|2,{103,71,0}}, +/* 39698 */ {(13<<2)|2,{103,71,0}}, +/* 39699 */ {(13<<2)|2,{103,71,0}}, +/* 39700 */ {(13<<2)|2,{103,71,0}}, +/* 39701 */ {(13<<2)|2,{103,71,0}}, +/* 39702 */ {(13<<2)|2,{103,71,0}}, +/* 39703 */ {(13<<2)|2,{103,71,0}}, +/* 39704 */ {(13<<2)|2,{103,72,0}}, +/* 39705 */ {(13<<2)|2,{103,72,0}}, +/* 39706 */ {(13<<2)|2,{103,72,0}}, +/* 39707 */ {(13<<2)|2,{103,72,0}}, +/* 39708 */ {(13<<2)|2,{103,72,0}}, +/* 39709 */ {(13<<2)|2,{103,72,0}}, +/* 39710 */ {(13<<2)|2,{103,72,0}}, +/* 39711 */ {(13<<2)|2,{103,72,0}}, +/* 39712 */ {(13<<2)|2,{103,73,0}}, +/* 39713 */ {(13<<2)|2,{103,73,0}}, +/* 39714 */ {(13<<2)|2,{103,73,0}}, +/* 39715 */ {(13<<2)|2,{103,73,0}}, +/* 39716 */ {(13<<2)|2,{103,73,0}}, +/* 39717 */ {(13<<2)|2,{103,73,0}}, +/* 39718 */ {(13<<2)|2,{103,73,0}}, +/* 39719 */ {(13<<2)|2,{103,73,0}}, +/* 39720 */ {(13<<2)|2,{103,74,0}}, +/* 39721 */ {(13<<2)|2,{103,74,0}}, +/* 39722 */ {(13<<2)|2,{103,74,0}}, +/* 39723 */ {(13<<2)|2,{103,74,0}}, +/* 39724 */ {(13<<2)|2,{103,74,0}}, +/* 39725 */ {(13<<2)|2,{103,74,0}}, +/* 39726 */ {(13<<2)|2,{103,74,0}}, +/* 39727 */ {(13<<2)|2,{103,74,0}}, +/* 39728 */ {(13<<2)|2,{103,75,0}}, +/* 39729 */ {(13<<2)|2,{103,75,0}}, +/* 39730 */ {(13<<2)|2,{103,75,0}}, +/* 39731 */ {(13<<2)|2,{103,75,0}}, +/* 39732 */ {(13<<2)|2,{103,75,0}}, +/* 39733 */ {(13<<2)|2,{103,75,0}}, +/* 39734 */ {(13<<2)|2,{103,75,0}}, +/* 39735 */ {(13<<2)|2,{103,75,0}}, +/* 39736 */ {(13<<2)|2,{103,76,0}}, +/* 39737 */ {(13<<2)|2,{103,76,0}}, +/* 39738 */ {(13<<2)|2,{103,76,0}}, +/* 39739 */ {(13<<2)|2,{103,76,0}}, +/* 39740 */ {(13<<2)|2,{103,76,0}}, +/* 39741 */ {(13<<2)|2,{103,76,0}}, +/* 39742 */ {(13<<2)|2,{103,76,0}}, +/* 39743 */ {(13<<2)|2,{103,76,0}}, +/* 39744 */ {(13<<2)|2,{103,77,0}}, +/* 39745 */ {(13<<2)|2,{103,77,0}}, +/* 39746 */ {(13<<2)|2,{103,77,0}}, +/* 39747 */ {(13<<2)|2,{103,77,0}}, +/* 39748 */ {(13<<2)|2,{103,77,0}}, +/* 39749 */ {(13<<2)|2,{103,77,0}}, +/* 39750 */ {(13<<2)|2,{103,77,0}}, +/* 39751 */ {(13<<2)|2,{103,77,0}}, +/* 39752 */ {(13<<2)|2,{103,78,0}}, +/* 39753 */ {(13<<2)|2,{103,78,0}}, +/* 39754 */ {(13<<2)|2,{103,78,0}}, +/* 39755 */ {(13<<2)|2,{103,78,0}}, +/* 39756 */ {(13<<2)|2,{103,78,0}}, +/* 39757 */ {(13<<2)|2,{103,78,0}}, +/* 39758 */ {(13<<2)|2,{103,78,0}}, +/* 39759 */ {(13<<2)|2,{103,78,0}}, +/* 39760 */ {(13<<2)|2,{103,79,0}}, +/* 39761 */ {(13<<2)|2,{103,79,0}}, +/* 39762 */ {(13<<2)|2,{103,79,0}}, +/* 39763 */ {(13<<2)|2,{103,79,0}}, +/* 39764 */ {(13<<2)|2,{103,79,0}}, +/* 39765 */ {(13<<2)|2,{103,79,0}}, +/* 39766 */ {(13<<2)|2,{103,79,0}}, +/* 39767 */ {(13<<2)|2,{103,79,0}}, +/* 39768 */ {(13<<2)|2,{103,80,0}}, +/* 39769 */ {(13<<2)|2,{103,80,0}}, +/* 39770 */ {(13<<2)|2,{103,80,0}}, +/* 39771 */ {(13<<2)|2,{103,80,0}}, +/* 39772 */ {(13<<2)|2,{103,80,0}}, +/* 39773 */ {(13<<2)|2,{103,80,0}}, +/* 39774 */ {(13<<2)|2,{103,80,0}}, +/* 39775 */ {(13<<2)|2,{103,80,0}}, +/* 39776 */ {(13<<2)|2,{103,81,0}}, +/* 39777 */ {(13<<2)|2,{103,81,0}}, +/* 39778 */ {(13<<2)|2,{103,81,0}}, +/* 39779 */ {(13<<2)|2,{103,81,0}}, +/* 39780 */ {(13<<2)|2,{103,81,0}}, +/* 39781 */ {(13<<2)|2,{103,81,0}}, +/* 39782 */ {(13<<2)|2,{103,81,0}}, +/* 39783 */ {(13<<2)|2,{103,81,0}}, +/* 39784 */ {(13<<2)|2,{103,82,0}}, +/* 39785 */ {(13<<2)|2,{103,82,0}}, +/* 39786 */ {(13<<2)|2,{103,82,0}}, +/* 39787 */ {(13<<2)|2,{103,82,0}}, +/* 39788 */ {(13<<2)|2,{103,82,0}}, +/* 39789 */ {(13<<2)|2,{103,82,0}}, +/* 39790 */ {(13<<2)|2,{103,82,0}}, +/* 39791 */ {(13<<2)|2,{103,82,0}}, +/* 39792 */ {(13<<2)|2,{103,83,0}}, +/* 39793 */ {(13<<2)|2,{103,83,0}}, +/* 39794 */ {(13<<2)|2,{103,83,0}}, +/* 39795 */ {(13<<2)|2,{103,83,0}}, +/* 39796 */ {(13<<2)|2,{103,83,0}}, +/* 39797 */ {(13<<2)|2,{103,83,0}}, +/* 39798 */ {(13<<2)|2,{103,83,0}}, +/* 39799 */ {(13<<2)|2,{103,83,0}}, +/* 39800 */ {(13<<2)|2,{103,84,0}}, +/* 39801 */ {(13<<2)|2,{103,84,0}}, +/* 39802 */ {(13<<2)|2,{103,84,0}}, +/* 39803 */ {(13<<2)|2,{103,84,0}}, +/* 39804 */ {(13<<2)|2,{103,84,0}}, +/* 39805 */ {(13<<2)|2,{103,84,0}}, +/* 39806 */ {(13<<2)|2,{103,84,0}}, +/* 39807 */ {(13<<2)|2,{103,84,0}}, +/* 39808 */ {(13<<2)|2,{103,85,0}}, +/* 39809 */ {(13<<2)|2,{103,85,0}}, +/* 39810 */ {(13<<2)|2,{103,85,0}}, +/* 39811 */ {(13<<2)|2,{103,85,0}}, +/* 39812 */ {(13<<2)|2,{103,85,0}}, +/* 39813 */ {(13<<2)|2,{103,85,0}}, +/* 39814 */ {(13<<2)|2,{103,85,0}}, +/* 39815 */ {(13<<2)|2,{103,85,0}}, +/* 39816 */ {(13<<2)|2,{103,86,0}}, +/* 39817 */ {(13<<2)|2,{103,86,0}}, +/* 39818 */ {(13<<2)|2,{103,86,0}}, +/* 39819 */ {(13<<2)|2,{103,86,0}}, +/* 39820 */ {(13<<2)|2,{103,86,0}}, +/* 39821 */ {(13<<2)|2,{103,86,0}}, +/* 39822 */ {(13<<2)|2,{103,86,0}}, +/* 39823 */ {(13<<2)|2,{103,86,0}}, +/* 39824 */ {(13<<2)|2,{103,87,0}}, +/* 39825 */ {(13<<2)|2,{103,87,0}}, +/* 39826 */ {(13<<2)|2,{103,87,0}}, +/* 39827 */ {(13<<2)|2,{103,87,0}}, +/* 39828 */ {(13<<2)|2,{103,87,0}}, +/* 39829 */ {(13<<2)|2,{103,87,0}}, +/* 39830 */ {(13<<2)|2,{103,87,0}}, +/* 39831 */ {(13<<2)|2,{103,87,0}}, +/* 39832 */ {(13<<2)|2,{103,89,0}}, +/* 39833 */ {(13<<2)|2,{103,89,0}}, +/* 39834 */ {(13<<2)|2,{103,89,0}}, +/* 39835 */ {(13<<2)|2,{103,89,0}}, +/* 39836 */ {(13<<2)|2,{103,89,0}}, +/* 39837 */ {(13<<2)|2,{103,89,0}}, +/* 39838 */ {(13<<2)|2,{103,89,0}}, +/* 39839 */ {(13<<2)|2,{103,89,0}}, +/* 39840 */ {(13<<2)|2,{103,106,0}}, +/* 39841 */ {(13<<2)|2,{103,106,0}}, +/* 39842 */ {(13<<2)|2,{103,106,0}}, +/* 39843 */ {(13<<2)|2,{103,106,0}}, +/* 39844 */ {(13<<2)|2,{103,106,0}}, +/* 39845 */ {(13<<2)|2,{103,106,0}}, +/* 39846 */ {(13<<2)|2,{103,106,0}}, +/* 39847 */ {(13<<2)|2,{103,106,0}}, +/* 39848 */ {(13<<2)|2,{103,107,0}}, +/* 39849 */ {(13<<2)|2,{103,107,0}}, +/* 39850 */ {(13<<2)|2,{103,107,0}}, +/* 39851 */ {(13<<2)|2,{103,107,0}}, +/* 39852 */ {(13<<2)|2,{103,107,0}}, +/* 39853 */ {(13<<2)|2,{103,107,0}}, +/* 39854 */ {(13<<2)|2,{103,107,0}}, +/* 39855 */ {(13<<2)|2,{103,107,0}}, +/* 39856 */ {(13<<2)|2,{103,113,0}}, +/* 39857 */ {(13<<2)|2,{103,113,0}}, +/* 39858 */ {(13<<2)|2,{103,113,0}}, +/* 39859 */ {(13<<2)|2,{103,113,0}}, +/* 39860 */ {(13<<2)|2,{103,113,0}}, +/* 39861 */ {(13<<2)|2,{103,113,0}}, +/* 39862 */ {(13<<2)|2,{103,113,0}}, +/* 39863 */ {(13<<2)|2,{103,113,0}}, +/* 39864 */ {(13<<2)|2,{103,118,0}}, +/* 39865 */ {(13<<2)|2,{103,118,0}}, +/* 39866 */ {(13<<2)|2,{103,118,0}}, +/* 39867 */ {(13<<2)|2,{103,118,0}}, +/* 39868 */ {(13<<2)|2,{103,118,0}}, +/* 39869 */ {(13<<2)|2,{103,118,0}}, +/* 39870 */ {(13<<2)|2,{103,118,0}}, +/* 39871 */ {(13<<2)|2,{103,118,0}}, +/* 39872 */ {(13<<2)|2,{103,119,0}}, +/* 39873 */ {(13<<2)|2,{103,119,0}}, +/* 39874 */ {(13<<2)|2,{103,119,0}}, +/* 39875 */ {(13<<2)|2,{103,119,0}}, +/* 39876 */ {(13<<2)|2,{103,119,0}}, +/* 39877 */ {(13<<2)|2,{103,119,0}}, +/* 39878 */ {(13<<2)|2,{103,119,0}}, +/* 39879 */ {(13<<2)|2,{103,119,0}}, +/* 39880 */ {(13<<2)|2,{103,120,0}}, +/* 39881 */ {(13<<2)|2,{103,120,0}}, +/* 39882 */ {(13<<2)|2,{103,120,0}}, +/* 39883 */ {(13<<2)|2,{103,120,0}}, +/* 39884 */ {(13<<2)|2,{103,120,0}}, +/* 39885 */ {(13<<2)|2,{103,120,0}}, +/* 39886 */ {(13<<2)|2,{103,120,0}}, +/* 39887 */ {(13<<2)|2,{103,120,0}}, +/* 39888 */ {(13<<2)|2,{103,121,0}}, +/* 39889 */ {(13<<2)|2,{103,121,0}}, +/* 39890 */ {(13<<2)|2,{103,121,0}}, +/* 39891 */ {(13<<2)|2,{103,121,0}}, +/* 39892 */ {(13<<2)|2,{103,121,0}}, +/* 39893 */ {(13<<2)|2,{103,121,0}}, +/* 39894 */ {(13<<2)|2,{103,121,0}}, +/* 39895 */ {(13<<2)|2,{103,121,0}}, +/* 39896 */ {(13<<2)|2,{103,122,0}}, +/* 39897 */ {(13<<2)|2,{103,122,0}}, +/* 39898 */ {(13<<2)|2,{103,122,0}}, +/* 39899 */ {(13<<2)|2,{103,122,0}}, +/* 39900 */ {(13<<2)|2,{103,122,0}}, +/* 39901 */ {(13<<2)|2,{103,122,0}}, +/* 39902 */ {(13<<2)|2,{103,122,0}}, +/* 39903 */ {(13<<2)|2,{103,122,0}}, +/* 39904 */ {(14<<2)|2,{103,38,0}}, +/* 39905 */ {(14<<2)|2,{103,38,0}}, +/* 39906 */ {(14<<2)|2,{103,38,0}}, +/* 39907 */ {(14<<2)|2,{103,38,0}}, +/* 39908 */ {(14<<2)|2,{103,42,0}}, +/* 39909 */ {(14<<2)|2,{103,42,0}}, +/* 39910 */ {(14<<2)|2,{103,42,0}}, +/* 39911 */ {(14<<2)|2,{103,42,0}}, +/* 39912 */ {(14<<2)|2,{103,44,0}}, +/* 39913 */ {(14<<2)|2,{103,44,0}}, +/* 39914 */ {(14<<2)|2,{103,44,0}}, +/* 39915 */ {(14<<2)|2,{103,44,0}}, +/* 39916 */ {(14<<2)|2,{103,59,0}}, +/* 39917 */ {(14<<2)|2,{103,59,0}}, +/* 39918 */ {(14<<2)|2,{103,59,0}}, +/* 39919 */ {(14<<2)|2,{103,59,0}}, +/* 39920 */ {(14<<2)|2,{103,88,0}}, +/* 39921 */ {(14<<2)|2,{103,88,0}}, +/* 39922 */ {(14<<2)|2,{103,88,0}}, +/* 39923 */ {(14<<2)|2,{103,88,0}}, +/* 39924 */ {(14<<2)|2,{103,90,0}}, +/* 39925 */ {(14<<2)|2,{103,90,0}}, +/* 39926 */ {(14<<2)|2,{103,90,0}}, +/* 39927 */ {(14<<2)|2,{103,90,0}}, +/* 39928 */ {(16<<2)|2,{103,33,0}}, +/* 39929 */ {(16<<2)|2,{103,34,0}}, +/* 39930 */ {(16<<2)|2,{103,40,0}}, +/* 39931 */ {(16<<2)|2,{103,41,0}}, +/* 39932 */ {(16<<2)|2,{103,63,0}}, +/* 39933 */ {(6<<2)|1,{103,0,0}}, +/* 39934 */ {(6<<2)|1,{103,0,0}}, +/* 39935 */ {(6<<2)|1,{103,0,0}}, +/* 39936 */ {(16<<2)|3,{104,48,48}}, +/* 39937 */ {(16<<2)|3,{104,48,49}}, +/* 39938 */ {(16<<2)|3,{104,48,50}}, +/* 39939 */ {(16<<2)|3,{104,48,97}}, +/* 39940 */ {(16<<2)|3,{104,48,99}}, +/* 39941 */ {(16<<2)|3,{104,48,101}}, +/* 39942 */ {(16<<2)|3,{104,48,105}}, +/* 39943 */ {(16<<2)|3,{104,48,111}}, +/* 39944 */ {(16<<2)|3,{104,48,115}}, +/* 39945 */ {(16<<2)|3,{104,48,116}}, +/* 39946 */ {(11<<2)|2,{104,48,0}}, +/* 39947 */ {(11<<2)|2,{104,48,0}}, +/* 39948 */ {(11<<2)|2,{104,48,0}}, +/* 39949 */ {(11<<2)|2,{104,48,0}}, +/* 39950 */ {(11<<2)|2,{104,48,0}}, +/* 39951 */ {(11<<2)|2,{104,48,0}}, +/* 39952 */ {(11<<2)|2,{104,48,0}}, +/* 39953 */ {(11<<2)|2,{104,48,0}}, +/* 39954 */ {(11<<2)|2,{104,48,0}}, +/* 39955 */ {(11<<2)|2,{104,48,0}}, +/* 39956 */ {(11<<2)|2,{104,48,0}}, +/* 39957 */ {(11<<2)|2,{104,48,0}}, +/* 39958 */ {(11<<2)|2,{104,48,0}}, +/* 39959 */ {(11<<2)|2,{104,48,0}}, +/* 39960 */ {(11<<2)|2,{104,48,0}}, +/* 39961 */ {(11<<2)|2,{104,48,0}}, +/* 39962 */ {(11<<2)|2,{104,48,0}}, +/* 39963 */ {(11<<2)|2,{104,48,0}}, +/* 39964 */ {(11<<2)|2,{104,48,0}}, +/* 39965 */ {(11<<2)|2,{104,48,0}}, +/* 39966 */ {(11<<2)|2,{104,48,0}}, +/* 39967 */ {(11<<2)|2,{104,48,0}}, +/* 39968 */ {(16<<2)|3,{104,49,48}}, +/* 39969 */ {(16<<2)|3,{104,49,49}}, +/* 39970 */ {(16<<2)|3,{104,49,50}}, +/* 39971 */ {(16<<2)|3,{104,49,97}}, +/* 39972 */ {(16<<2)|3,{104,49,99}}, +/* 39973 */ {(16<<2)|3,{104,49,101}}, +/* 39974 */ {(16<<2)|3,{104,49,105}}, +/* 39975 */ {(16<<2)|3,{104,49,111}}, +/* 39976 */ {(16<<2)|3,{104,49,115}}, +/* 39977 */ {(16<<2)|3,{104,49,116}}, +/* 39978 */ {(11<<2)|2,{104,49,0}}, +/* 39979 */ {(11<<2)|2,{104,49,0}}, +/* 39980 */ {(11<<2)|2,{104,49,0}}, +/* 39981 */ {(11<<2)|2,{104,49,0}}, +/* 39982 */ {(11<<2)|2,{104,49,0}}, +/* 39983 */ {(11<<2)|2,{104,49,0}}, +/* 39984 */ {(11<<2)|2,{104,49,0}}, +/* 39985 */ {(11<<2)|2,{104,49,0}}, +/* 39986 */ {(11<<2)|2,{104,49,0}}, +/* 39987 */ {(11<<2)|2,{104,49,0}}, +/* 39988 */ {(11<<2)|2,{104,49,0}}, +/* 39989 */ {(11<<2)|2,{104,49,0}}, +/* 39990 */ {(11<<2)|2,{104,49,0}}, +/* 39991 */ {(11<<2)|2,{104,49,0}}, +/* 39992 */ {(11<<2)|2,{104,49,0}}, +/* 39993 */ {(11<<2)|2,{104,49,0}}, +/* 39994 */ {(11<<2)|2,{104,49,0}}, +/* 39995 */ {(11<<2)|2,{104,49,0}}, +/* 39996 */ {(11<<2)|2,{104,49,0}}, +/* 39997 */ {(11<<2)|2,{104,49,0}}, +/* 39998 */ {(11<<2)|2,{104,49,0}}, +/* 39999 */ {(11<<2)|2,{104,49,0}}, +/* 40000 */ {(16<<2)|3,{104,50,48}}, +/* 40001 */ {(16<<2)|3,{104,50,49}}, +/* 40002 */ {(16<<2)|3,{104,50,50}}, +/* 40003 */ {(16<<2)|3,{104,50,97}}, +/* 40004 */ {(16<<2)|3,{104,50,99}}, +/* 40005 */ {(16<<2)|3,{104,50,101}}, +/* 40006 */ {(16<<2)|3,{104,50,105}}, +/* 40007 */ {(16<<2)|3,{104,50,111}}, +/* 40008 */ {(16<<2)|3,{104,50,115}}, +/* 40009 */ {(16<<2)|3,{104,50,116}}, +/* 40010 */ {(11<<2)|2,{104,50,0}}, +/* 40011 */ {(11<<2)|2,{104,50,0}}, +/* 40012 */ {(11<<2)|2,{104,50,0}}, +/* 40013 */ {(11<<2)|2,{104,50,0}}, +/* 40014 */ {(11<<2)|2,{104,50,0}}, +/* 40015 */ {(11<<2)|2,{104,50,0}}, +/* 40016 */ {(11<<2)|2,{104,50,0}}, +/* 40017 */ {(11<<2)|2,{104,50,0}}, +/* 40018 */ {(11<<2)|2,{104,50,0}}, +/* 40019 */ {(11<<2)|2,{104,50,0}}, +/* 40020 */ {(11<<2)|2,{104,50,0}}, +/* 40021 */ {(11<<2)|2,{104,50,0}}, +/* 40022 */ {(11<<2)|2,{104,50,0}}, +/* 40023 */ {(11<<2)|2,{104,50,0}}, +/* 40024 */ {(11<<2)|2,{104,50,0}}, +/* 40025 */ {(11<<2)|2,{104,50,0}}, +/* 40026 */ {(11<<2)|2,{104,50,0}}, +/* 40027 */ {(11<<2)|2,{104,50,0}}, +/* 40028 */ {(11<<2)|2,{104,50,0}}, +/* 40029 */ {(11<<2)|2,{104,50,0}}, +/* 40030 */ {(11<<2)|2,{104,50,0}}, +/* 40031 */ {(11<<2)|2,{104,50,0}}, +/* 40032 */ {(16<<2)|3,{104,97,48}}, +/* 40033 */ {(16<<2)|3,{104,97,49}}, +/* 40034 */ {(16<<2)|3,{104,97,50}}, +/* 40035 */ {(16<<2)|3,{104,97,97}}, +/* 40036 */ {(16<<2)|3,{104,97,99}}, +/* 40037 */ {(16<<2)|3,{104,97,101}}, +/* 40038 */ {(16<<2)|3,{104,97,105}}, +/* 40039 */ {(16<<2)|3,{104,97,111}}, +/* 40040 */ {(16<<2)|3,{104,97,115}}, +/* 40041 */ {(16<<2)|3,{104,97,116}}, +/* 40042 */ {(11<<2)|2,{104,97,0}}, +/* 40043 */ {(11<<2)|2,{104,97,0}}, +/* 40044 */ {(11<<2)|2,{104,97,0}}, +/* 40045 */ {(11<<2)|2,{104,97,0}}, +/* 40046 */ {(11<<2)|2,{104,97,0}}, +/* 40047 */ {(11<<2)|2,{104,97,0}}, +/* 40048 */ {(11<<2)|2,{104,97,0}}, +/* 40049 */ {(11<<2)|2,{104,97,0}}, +/* 40050 */ {(11<<2)|2,{104,97,0}}, +/* 40051 */ {(11<<2)|2,{104,97,0}}, +/* 40052 */ {(11<<2)|2,{104,97,0}}, +/* 40053 */ {(11<<2)|2,{104,97,0}}, +/* 40054 */ {(11<<2)|2,{104,97,0}}, +/* 40055 */ {(11<<2)|2,{104,97,0}}, +/* 40056 */ {(11<<2)|2,{104,97,0}}, +/* 40057 */ {(11<<2)|2,{104,97,0}}, +/* 40058 */ {(11<<2)|2,{104,97,0}}, +/* 40059 */ {(11<<2)|2,{104,97,0}}, +/* 40060 */ {(11<<2)|2,{104,97,0}}, +/* 40061 */ {(11<<2)|2,{104,97,0}}, +/* 40062 */ {(11<<2)|2,{104,97,0}}, +/* 40063 */ {(11<<2)|2,{104,97,0}}, +/* 40064 */ {(16<<2)|3,{104,99,48}}, +/* 40065 */ {(16<<2)|3,{104,99,49}}, +/* 40066 */ {(16<<2)|3,{104,99,50}}, +/* 40067 */ {(16<<2)|3,{104,99,97}}, +/* 40068 */ {(16<<2)|3,{104,99,99}}, +/* 40069 */ {(16<<2)|3,{104,99,101}}, +/* 40070 */ {(16<<2)|3,{104,99,105}}, +/* 40071 */ {(16<<2)|3,{104,99,111}}, +/* 40072 */ {(16<<2)|3,{104,99,115}}, +/* 40073 */ {(16<<2)|3,{104,99,116}}, +/* 40074 */ {(11<<2)|2,{104,99,0}}, +/* 40075 */ {(11<<2)|2,{104,99,0}}, +/* 40076 */ {(11<<2)|2,{104,99,0}}, +/* 40077 */ {(11<<2)|2,{104,99,0}}, +/* 40078 */ {(11<<2)|2,{104,99,0}}, +/* 40079 */ {(11<<2)|2,{104,99,0}}, +/* 40080 */ {(11<<2)|2,{104,99,0}}, +/* 40081 */ {(11<<2)|2,{104,99,0}}, +/* 40082 */ {(11<<2)|2,{104,99,0}}, +/* 40083 */ {(11<<2)|2,{104,99,0}}, +/* 40084 */ {(11<<2)|2,{104,99,0}}, +/* 40085 */ {(11<<2)|2,{104,99,0}}, +/* 40086 */ {(11<<2)|2,{104,99,0}}, +/* 40087 */ {(11<<2)|2,{104,99,0}}, +/* 40088 */ {(11<<2)|2,{104,99,0}}, +/* 40089 */ {(11<<2)|2,{104,99,0}}, +/* 40090 */ {(11<<2)|2,{104,99,0}}, +/* 40091 */ {(11<<2)|2,{104,99,0}}, +/* 40092 */ {(11<<2)|2,{104,99,0}}, +/* 40093 */ {(11<<2)|2,{104,99,0}}, +/* 40094 */ {(11<<2)|2,{104,99,0}}, +/* 40095 */ {(11<<2)|2,{104,99,0}}, +/* 40096 */ {(16<<2)|3,{104,101,48}}, +/* 40097 */ {(16<<2)|3,{104,101,49}}, +/* 40098 */ {(16<<2)|3,{104,101,50}}, +/* 40099 */ {(16<<2)|3,{104,101,97}}, +/* 40100 */ {(16<<2)|3,{104,101,99}}, +/* 40101 */ {(16<<2)|3,{104,101,101}}, +/* 40102 */ {(16<<2)|3,{104,101,105}}, +/* 40103 */ {(16<<2)|3,{104,101,111}}, +/* 40104 */ {(16<<2)|3,{104,101,115}}, +/* 40105 */ {(16<<2)|3,{104,101,116}}, +/* 40106 */ {(11<<2)|2,{104,101,0}}, +/* 40107 */ {(11<<2)|2,{104,101,0}}, +/* 40108 */ {(11<<2)|2,{104,101,0}}, +/* 40109 */ {(11<<2)|2,{104,101,0}}, +/* 40110 */ {(11<<2)|2,{104,101,0}}, +/* 40111 */ {(11<<2)|2,{104,101,0}}, +/* 40112 */ {(11<<2)|2,{104,101,0}}, +/* 40113 */ {(11<<2)|2,{104,101,0}}, +/* 40114 */ {(11<<2)|2,{104,101,0}}, +/* 40115 */ {(11<<2)|2,{104,101,0}}, +/* 40116 */ {(11<<2)|2,{104,101,0}}, +/* 40117 */ {(11<<2)|2,{104,101,0}}, +/* 40118 */ {(11<<2)|2,{104,101,0}}, +/* 40119 */ {(11<<2)|2,{104,101,0}}, +/* 40120 */ {(11<<2)|2,{104,101,0}}, +/* 40121 */ {(11<<2)|2,{104,101,0}}, +/* 40122 */ {(11<<2)|2,{104,101,0}}, +/* 40123 */ {(11<<2)|2,{104,101,0}}, +/* 40124 */ {(11<<2)|2,{104,101,0}}, +/* 40125 */ {(11<<2)|2,{104,101,0}}, +/* 40126 */ {(11<<2)|2,{104,101,0}}, +/* 40127 */ {(11<<2)|2,{104,101,0}}, +/* 40128 */ {(16<<2)|3,{104,105,48}}, +/* 40129 */ {(16<<2)|3,{104,105,49}}, +/* 40130 */ {(16<<2)|3,{104,105,50}}, +/* 40131 */ {(16<<2)|3,{104,105,97}}, +/* 40132 */ {(16<<2)|3,{104,105,99}}, +/* 40133 */ {(16<<2)|3,{104,105,101}}, +/* 40134 */ {(16<<2)|3,{104,105,105}}, +/* 40135 */ {(16<<2)|3,{104,105,111}}, +/* 40136 */ {(16<<2)|3,{104,105,115}}, +/* 40137 */ {(16<<2)|3,{104,105,116}}, +/* 40138 */ {(11<<2)|2,{104,105,0}}, +/* 40139 */ {(11<<2)|2,{104,105,0}}, +/* 40140 */ {(11<<2)|2,{104,105,0}}, +/* 40141 */ {(11<<2)|2,{104,105,0}}, +/* 40142 */ {(11<<2)|2,{104,105,0}}, +/* 40143 */ {(11<<2)|2,{104,105,0}}, +/* 40144 */ {(11<<2)|2,{104,105,0}}, +/* 40145 */ {(11<<2)|2,{104,105,0}}, +/* 40146 */ {(11<<2)|2,{104,105,0}}, +/* 40147 */ {(11<<2)|2,{104,105,0}}, +/* 40148 */ {(11<<2)|2,{104,105,0}}, +/* 40149 */ {(11<<2)|2,{104,105,0}}, +/* 40150 */ {(11<<2)|2,{104,105,0}}, +/* 40151 */ {(11<<2)|2,{104,105,0}}, +/* 40152 */ {(11<<2)|2,{104,105,0}}, +/* 40153 */ {(11<<2)|2,{104,105,0}}, +/* 40154 */ {(11<<2)|2,{104,105,0}}, +/* 40155 */ {(11<<2)|2,{104,105,0}}, +/* 40156 */ {(11<<2)|2,{104,105,0}}, +/* 40157 */ {(11<<2)|2,{104,105,0}}, +/* 40158 */ {(11<<2)|2,{104,105,0}}, +/* 40159 */ {(11<<2)|2,{104,105,0}}, +/* 40160 */ {(16<<2)|3,{104,111,48}}, +/* 40161 */ {(16<<2)|3,{104,111,49}}, +/* 40162 */ {(16<<2)|3,{104,111,50}}, +/* 40163 */ {(16<<2)|3,{104,111,97}}, +/* 40164 */ {(16<<2)|3,{104,111,99}}, +/* 40165 */ {(16<<2)|3,{104,111,101}}, +/* 40166 */ {(16<<2)|3,{104,111,105}}, +/* 40167 */ {(16<<2)|3,{104,111,111}}, +/* 40168 */ {(16<<2)|3,{104,111,115}}, +/* 40169 */ {(16<<2)|3,{104,111,116}}, +/* 40170 */ {(11<<2)|2,{104,111,0}}, +/* 40171 */ {(11<<2)|2,{104,111,0}}, +/* 40172 */ {(11<<2)|2,{104,111,0}}, +/* 40173 */ {(11<<2)|2,{104,111,0}}, +/* 40174 */ {(11<<2)|2,{104,111,0}}, +/* 40175 */ {(11<<2)|2,{104,111,0}}, +/* 40176 */ {(11<<2)|2,{104,111,0}}, +/* 40177 */ {(11<<2)|2,{104,111,0}}, +/* 40178 */ {(11<<2)|2,{104,111,0}}, +/* 40179 */ {(11<<2)|2,{104,111,0}}, +/* 40180 */ {(11<<2)|2,{104,111,0}}, +/* 40181 */ {(11<<2)|2,{104,111,0}}, +/* 40182 */ {(11<<2)|2,{104,111,0}}, +/* 40183 */ {(11<<2)|2,{104,111,0}}, +/* 40184 */ {(11<<2)|2,{104,111,0}}, +/* 40185 */ {(11<<2)|2,{104,111,0}}, +/* 40186 */ {(11<<2)|2,{104,111,0}}, +/* 40187 */ {(11<<2)|2,{104,111,0}}, +/* 40188 */ {(11<<2)|2,{104,111,0}}, +/* 40189 */ {(11<<2)|2,{104,111,0}}, +/* 40190 */ {(11<<2)|2,{104,111,0}}, +/* 40191 */ {(11<<2)|2,{104,111,0}}, +/* 40192 */ {(16<<2)|3,{104,115,48}}, +/* 40193 */ {(16<<2)|3,{104,115,49}}, +/* 40194 */ {(16<<2)|3,{104,115,50}}, +/* 40195 */ {(16<<2)|3,{104,115,97}}, +/* 40196 */ {(16<<2)|3,{104,115,99}}, +/* 40197 */ {(16<<2)|3,{104,115,101}}, +/* 40198 */ {(16<<2)|3,{104,115,105}}, +/* 40199 */ {(16<<2)|3,{104,115,111}}, +/* 40200 */ {(16<<2)|3,{104,115,115}}, +/* 40201 */ {(16<<2)|3,{104,115,116}}, +/* 40202 */ {(11<<2)|2,{104,115,0}}, +/* 40203 */ {(11<<2)|2,{104,115,0}}, +/* 40204 */ {(11<<2)|2,{104,115,0}}, +/* 40205 */ {(11<<2)|2,{104,115,0}}, +/* 40206 */ {(11<<2)|2,{104,115,0}}, +/* 40207 */ {(11<<2)|2,{104,115,0}}, +/* 40208 */ {(11<<2)|2,{104,115,0}}, +/* 40209 */ {(11<<2)|2,{104,115,0}}, +/* 40210 */ {(11<<2)|2,{104,115,0}}, +/* 40211 */ {(11<<2)|2,{104,115,0}}, +/* 40212 */ {(11<<2)|2,{104,115,0}}, +/* 40213 */ {(11<<2)|2,{104,115,0}}, +/* 40214 */ {(11<<2)|2,{104,115,0}}, +/* 40215 */ {(11<<2)|2,{104,115,0}}, +/* 40216 */ {(11<<2)|2,{104,115,0}}, +/* 40217 */ {(11<<2)|2,{104,115,0}}, +/* 40218 */ {(11<<2)|2,{104,115,0}}, +/* 40219 */ {(11<<2)|2,{104,115,0}}, +/* 40220 */ {(11<<2)|2,{104,115,0}}, +/* 40221 */ {(11<<2)|2,{104,115,0}}, +/* 40222 */ {(11<<2)|2,{104,115,0}}, +/* 40223 */ {(11<<2)|2,{104,115,0}}, +/* 40224 */ {(16<<2)|3,{104,116,48}}, +/* 40225 */ {(16<<2)|3,{104,116,49}}, +/* 40226 */ {(16<<2)|3,{104,116,50}}, +/* 40227 */ {(16<<2)|3,{104,116,97}}, +/* 40228 */ {(16<<2)|3,{104,116,99}}, +/* 40229 */ {(16<<2)|3,{104,116,101}}, +/* 40230 */ {(16<<2)|3,{104,116,105}}, +/* 40231 */ {(16<<2)|3,{104,116,111}}, +/* 40232 */ {(16<<2)|3,{104,116,115}}, +/* 40233 */ {(16<<2)|3,{104,116,116}}, +/* 40234 */ {(11<<2)|2,{104,116,0}}, +/* 40235 */ {(11<<2)|2,{104,116,0}}, +/* 40236 */ {(11<<2)|2,{104,116,0}}, +/* 40237 */ {(11<<2)|2,{104,116,0}}, +/* 40238 */ {(11<<2)|2,{104,116,0}}, +/* 40239 */ {(11<<2)|2,{104,116,0}}, +/* 40240 */ {(11<<2)|2,{104,116,0}}, +/* 40241 */ {(11<<2)|2,{104,116,0}}, +/* 40242 */ {(11<<2)|2,{104,116,0}}, +/* 40243 */ {(11<<2)|2,{104,116,0}}, +/* 40244 */ {(11<<2)|2,{104,116,0}}, +/* 40245 */ {(11<<2)|2,{104,116,0}}, +/* 40246 */ {(11<<2)|2,{104,116,0}}, +/* 40247 */ {(11<<2)|2,{104,116,0}}, +/* 40248 */ {(11<<2)|2,{104,116,0}}, +/* 40249 */ {(11<<2)|2,{104,116,0}}, +/* 40250 */ {(11<<2)|2,{104,116,0}}, +/* 40251 */ {(11<<2)|2,{104,116,0}}, +/* 40252 */ {(11<<2)|2,{104,116,0}}, +/* 40253 */ {(11<<2)|2,{104,116,0}}, +/* 40254 */ {(11<<2)|2,{104,116,0}}, +/* 40255 */ {(11<<2)|2,{104,116,0}}, +/* 40256 */ {(12<<2)|2,{104,32,0}}, +/* 40257 */ {(12<<2)|2,{104,32,0}}, +/* 40258 */ {(12<<2)|2,{104,32,0}}, +/* 40259 */ {(12<<2)|2,{104,32,0}}, +/* 40260 */ {(12<<2)|2,{104,32,0}}, +/* 40261 */ {(12<<2)|2,{104,32,0}}, +/* 40262 */ {(12<<2)|2,{104,32,0}}, +/* 40263 */ {(12<<2)|2,{104,32,0}}, +/* 40264 */ {(12<<2)|2,{104,32,0}}, +/* 40265 */ {(12<<2)|2,{104,32,0}}, +/* 40266 */ {(12<<2)|2,{104,32,0}}, +/* 40267 */ {(12<<2)|2,{104,32,0}}, +/* 40268 */ {(12<<2)|2,{104,32,0}}, +/* 40269 */ {(12<<2)|2,{104,32,0}}, +/* 40270 */ {(12<<2)|2,{104,32,0}}, +/* 40271 */ {(12<<2)|2,{104,32,0}}, +/* 40272 */ {(12<<2)|2,{104,37,0}}, +/* 40273 */ {(12<<2)|2,{104,37,0}}, +/* 40274 */ {(12<<2)|2,{104,37,0}}, +/* 40275 */ {(12<<2)|2,{104,37,0}}, +/* 40276 */ {(12<<2)|2,{104,37,0}}, +/* 40277 */ {(12<<2)|2,{104,37,0}}, +/* 40278 */ {(12<<2)|2,{104,37,0}}, +/* 40279 */ {(12<<2)|2,{104,37,0}}, +/* 40280 */ {(12<<2)|2,{104,37,0}}, +/* 40281 */ {(12<<2)|2,{104,37,0}}, +/* 40282 */ {(12<<2)|2,{104,37,0}}, +/* 40283 */ {(12<<2)|2,{104,37,0}}, +/* 40284 */ {(12<<2)|2,{104,37,0}}, +/* 40285 */ {(12<<2)|2,{104,37,0}}, +/* 40286 */ {(12<<2)|2,{104,37,0}}, +/* 40287 */ {(12<<2)|2,{104,37,0}}, +/* 40288 */ {(12<<2)|2,{104,45,0}}, +/* 40289 */ {(12<<2)|2,{104,45,0}}, +/* 40290 */ {(12<<2)|2,{104,45,0}}, +/* 40291 */ {(12<<2)|2,{104,45,0}}, +/* 40292 */ {(12<<2)|2,{104,45,0}}, +/* 40293 */ {(12<<2)|2,{104,45,0}}, +/* 40294 */ {(12<<2)|2,{104,45,0}}, +/* 40295 */ {(12<<2)|2,{104,45,0}}, +/* 40296 */ {(12<<2)|2,{104,45,0}}, +/* 40297 */ {(12<<2)|2,{104,45,0}}, +/* 40298 */ {(12<<2)|2,{104,45,0}}, +/* 40299 */ {(12<<2)|2,{104,45,0}}, +/* 40300 */ {(12<<2)|2,{104,45,0}}, +/* 40301 */ {(12<<2)|2,{104,45,0}}, +/* 40302 */ {(12<<2)|2,{104,45,0}}, +/* 40303 */ {(12<<2)|2,{104,45,0}}, +/* 40304 */ {(12<<2)|2,{104,46,0}}, +/* 40305 */ {(12<<2)|2,{104,46,0}}, +/* 40306 */ {(12<<2)|2,{104,46,0}}, +/* 40307 */ {(12<<2)|2,{104,46,0}}, +/* 40308 */ {(12<<2)|2,{104,46,0}}, +/* 40309 */ {(12<<2)|2,{104,46,0}}, +/* 40310 */ {(12<<2)|2,{104,46,0}}, +/* 40311 */ {(12<<2)|2,{104,46,0}}, +/* 40312 */ {(12<<2)|2,{104,46,0}}, +/* 40313 */ {(12<<2)|2,{104,46,0}}, +/* 40314 */ {(12<<2)|2,{104,46,0}}, +/* 40315 */ {(12<<2)|2,{104,46,0}}, +/* 40316 */ {(12<<2)|2,{104,46,0}}, +/* 40317 */ {(12<<2)|2,{104,46,0}}, +/* 40318 */ {(12<<2)|2,{104,46,0}}, +/* 40319 */ {(12<<2)|2,{104,46,0}}, +/* 40320 */ {(12<<2)|2,{104,47,0}}, +/* 40321 */ {(12<<2)|2,{104,47,0}}, +/* 40322 */ {(12<<2)|2,{104,47,0}}, +/* 40323 */ {(12<<2)|2,{104,47,0}}, +/* 40324 */ {(12<<2)|2,{104,47,0}}, +/* 40325 */ {(12<<2)|2,{104,47,0}}, +/* 40326 */ {(12<<2)|2,{104,47,0}}, +/* 40327 */ {(12<<2)|2,{104,47,0}}, +/* 40328 */ {(12<<2)|2,{104,47,0}}, +/* 40329 */ {(12<<2)|2,{104,47,0}}, +/* 40330 */ {(12<<2)|2,{104,47,0}}, +/* 40331 */ {(12<<2)|2,{104,47,0}}, +/* 40332 */ {(12<<2)|2,{104,47,0}}, +/* 40333 */ {(12<<2)|2,{104,47,0}}, +/* 40334 */ {(12<<2)|2,{104,47,0}}, +/* 40335 */ {(12<<2)|2,{104,47,0}}, +/* 40336 */ {(12<<2)|2,{104,51,0}}, +/* 40337 */ {(12<<2)|2,{104,51,0}}, +/* 40338 */ {(12<<2)|2,{104,51,0}}, +/* 40339 */ {(12<<2)|2,{104,51,0}}, +/* 40340 */ {(12<<2)|2,{104,51,0}}, +/* 40341 */ {(12<<2)|2,{104,51,0}}, +/* 40342 */ {(12<<2)|2,{104,51,0}}, +/* 40343 */ {(12<<2)|2,{104,51,0}}, +/* 40344 */ {(12<<2)|2,{104,51,0}}, +/* 40345 */ {(12<<2)|2,{104,51,0}}, +/* 40346 */ {(12<<2)|2,{104,51,0}}, +/* 40347 */ {(12<<2)|2,{104,51,0}}, +/* 40348 */ {(12<<2)|2,{104,51,0}}, +/* 40349 */ {(12<<2)|2,{104,51,0}}, +/* 40350 */ {(12<<2)|2,{104,51,0}}, +/* 40351 */ {(12<<2)|2,{104,51,0}}, +/* 40352 */ {(12<<2)|2,{104,52,0}}, +/* 40353 */ {(12<<2)|2,{104,52,0}}, +/* 40354 */ {(12<<2)|2,{104,52,0}}, +/* 40355 */ {(12<<2)|2,{104,52,0}}, +/* 40356 */ {(12<<2)|2,{104,52,0}}, +/* 40357 */ {(12<<2)|2,{104,52,0}}, +/* 40358 */ {(12<<2)|2,{104,52,0}}, +/* 40359 */ {(12<<2)|2,{104,52,0}}, +/* 40360 */ {(12<<2)|2,{104,52,0}}, +/* 40361 */ {(12<<2)|2,{104,52,0}}, +/* 40362 */ {(12<<2)|2,{104,52,0}}, +/* 40363 */ {(12<<2)|2,{104,52,0}}, +/* 40364 */ {(12<<2)|2,{104,52,0}}, +/* 40365 */ {(12<<2)|2,{104,52,0}}, +/* 40366 */ {(12<<2)|2,{104,52,0}}, +/* 40367 */ {(12<<2)|2,{104,52,0}}, +/* 40368 */ {(12<<2)|2,{104,53,0}}, +/* 40369 */ {(12<<2)|2,{104,53,0}}, +/* 40370 */ {(12<<2)|2,{104,53,0}}, +/* 40371 */ {(12<<2)|2,{104,53,0}}, +/* 40372 */ {(12<<2)|2,{104,53,0}}, +/* 40373 */ {(12<<2)|2,{104,53,0}}, +/* 40374 */ {(12<<2)|2,{104,53,0}}, +/* 40375 */ {(12<<2)|2,{104,53,0}}, +/* 40376 */ {(12<<2)|2,{104,53,0}}, +/* 40377 */ {(12<<2)|2,{104,53,0}}, +/* 40378 */ {(12<<2)|2,{104,53,0}}, +/* 40379 */ {(12<<2)|2,{104,53,0}}, +/* 40380 */ {(12<<2)|2,{104,53,0}}, +/* 40381 */ {(12<<2)|2,{104,53,0}}, +/* 40382 */ {(12<<2)|2,{104,53,0}}, +/* 40383 */ {(12<<2)|2,{104,53,0}}, +/* 40384 */ {(12<<2)|2,{104,54,0}}, +/* 40385 */ {(12<<2)|2,{104,54,0}}, +/* 40386 */ {(12<<2)|2,{104,54,0}}, +/* 40387 */ {(12<<2)|2,{104,54,0}}, +/* 40388 */ {(12<<2)|2,{104,54,0}}, +/* 40389 */ {(12<<2)|2,{104,54,0}}, +/* 40390 */ {(12<<2)|2,{104,54,0}}, +/* 40391 */ {(12<<2)|2,{104,54,0}}, +/* 40392 */ {(12<<2)|2,{104,54,0}}, +/* 40393 */ {(12<<2)|2,{104,54,0}}, +/* 40394 */ {(12<<2)|2,{104,54,0}}, +/* 40395 */ {(12<<2)|2,{104,54,0}}, +/* 40396 */ {(12<<2)|2,{104,54,0}}, +/* 40397 */ {(12<<2)|2,{104,54,0}}, +/* 40398 */ {(12<<2)|2,{104,54,0}}, +/* 40399 */ {(12<<2)|2,{104,54,0}}, +/* 40400 */ {(12<<2)|2,{104,55,0}}, +/* 40401 */ {(12<<2)|2,{104,55,0}}, +/* 40402 */ {(12<<2)|2,{104,55,0}}, +/* 40403 */ {(12<<2)|2,{104,55,0}}, +/* 40404 */ {(12<<2)|2,{104,55,0}}, +/* 40405 */ {(12<<2)|2,{104,55,0}}, +/* 40406 */ {(12<<2)|2,{104,55,0}}, +/* 40407 */ {(12<<2)|2,{104,55,0}}, +/* 40408 */ {(12<<2)|2,{104,55,0}}, +/* 40409 */ {(12<<2)|2,{104,55,0}}, +/* 40410 */ {(12<<2)|2,{104,55,0}}, +/* 40411 */ {(12<<2)|2,{104,55,0}}, +/* 40412 */ {(12<<2)|2,{104,55,0}}, +/* 40413 */ {(12<<2)|2,{104,55,0}}, +/* 40414 */ {(12<<2)|2,{104,55,0}}, +/* 40415 */ {(12<<2)|2,{104,55,0}}, +/* 40416 */ {(12<<2)|2,{104,56,0}}, +/* 40417 */ {(12<<2)|2,{104,56,0}}, +/* 40418 */ {(12<<2)|2,{104,56,0}}, +/* 40419 */ {(12<<2)|2,{104,56,0}}, +/* 40420 */ {(12<<2)|2,{104,56,0}}, +/* 40421 */ {(12<<2)|2,{104,56,0}}, +/* 40422 */ {(12<<2)|2,{104,56,0}}, +/* 40423 */ {(12<<2)|2,{104,56,0}}, +/* 40424 */ {(12<<2)|2,{104,56,0}}, +/* 40425 */ {(12<<2)|2,{104,56,0}}, +/* 40426 */ {(12<<2)|2,{104,56,0}}, +/* 40427 */ {(12<<2)|2,{104,56,0}}, +/* 40428 */ {(12<<2)|2,{104,56,0}}, +/* 40429 */ {(12<<2)|2,{104,56,0}}, +/* 40430 */ {(12<<2)|2,{104,56,0}}, +/* 40431 */ {(12<<2)|2,{104,56,0}}, +/* 40432 */ {(12<<2)|2,{104,57,0}}, +/* 40433 */ {(12<<2)|2,{104,57,0}}, +/* 40434 */ {(12<<2)|2,{104,57,0}}, +/* 40435 */ {(12<<2)|2,{104,57,0}}, +/* 40436 */ {(12<<2)|2,{104,57,0}}, +/* 40437 */ {(12<<2)|2,{104,57,0}}, +/* 40438 */ {(12<<2)|2,{104,57,0}}, +/* 40439 */ {(12<<2)|2,{104,57,0}}, +/* 40440 */ {(12<<2)|2,{104,57,0}}, +/* 40441 */ {(12<<2)|2,{104,57,0}}, +/* 40442 */ {(12<<2)|2,{104,57,0}}, +/* 40443 */ {(12<<2)|2,{104,57,0}}, +/* 40444 */ {(12<<2)|2,{104,57,0}}, +/* 40445 */ {(12<<2)|2,{104,57,0}}, +/* 40446 */ {(12<<2)|2,{104,57,0}}, +/* 40447 */ {(12<<2)|2,{104,57,0}}, +/* 40448 */ {(12<<2)|2,{104,61,0}}, +/* 40449 */ {(12<<2)|2,{104,61,0}}, +/* 40450 */ {(12<<2)|2,{104,61,0}}, +/* 40451 */ {(12<<2)|2,{104,61,0}}, +/* 40452 */ {(12<<2)|2,{104,61,0}}, +/* 40453 */ {(12<<2)|2,{104,61,0}}, +/* 40454 */ {(12<<2)|2,{104,61,0}}, +/* 40455 */ {(12<<2)|2,{104,61,0}}, +/* 40456 */ {(12<<2)|2,{104,61,0}}, +/* 40457 */ {(12<<2)|2,{104,61,0}}, +/* 40458 */ {(12<<2)|2,{104,61,0}}, +/* 40459 */ {(12<<2)|2,{104,61,0}}, +/* 40460 */ {(12<<2)|2,{104,61,0}}, +/* 40461 */ {(12<<2)|2,{104,61,0}}, +/* 40462 */ {(12<<2)|2,{104,61,0}}, +/* 40463 */ {(12<<2)|2,{104,61,0}}, +/* 40464 */ {(12<<2)|2,{104,65,0}}, +/* 40465 */ {(12<<2)|2,{104,65,0}}, +/* 40466 */ {(12<<2)|2,{104,65,0}}, +/* 40467 */ {(12<<2)|2,{104,65,0}}, +/* 40468 */ {(12<<2)|2,{104,65,0}}, +/* 40469 */ {(12<<2)|2,{104,65,0}}, +/* 40470 */ {(12<<2)|2,{104,65,0}}, +/* 40471 */ {(12<<2)|2,{104,65,0}}, +/* 40472 */ {(12<<2)|2,{104,65,0}}, +/* 40473 */ {(12<<2)|2,{104,65,0}}, +/* 40474 */ {(12<<2)|2,{104,65,0}}, +/* 40475 */ {(12<<2)|2,{104,65,0}}, +/* 40476 */ {(12<<2)|2,{104,65,0}}, +/* 40477 */ {(12<<2)|2,{104,65,0}}, +/* 40478 */ {(12<<2)|2,{104,65,0}}, +/* 40479 */ {(12<<2)|2,{104,65,0}}, +/* 40480 */ {(12<<2)|2,{104,95,0}}, +/* 40481 */ {(12<<2)|2,{104,95,0}}, +/* 40482 */ {(12<<2)|2,{104,95,0}}, +/* 40483 */ {(12<<2)|2,{104,95,0}}, +/* 40484 */ {(12<<2)|2,{104,95,0}}, +/* 40485 */ {(12<<2)|2,{104,95,0}}, +/* 40486 */ {(12<<2)|2,{104,95,0}}, +/* 40487 */ {(12<<2)|2,{104,95,0}}, +/* 40488 */ {(12<<2)|2,{104,95,0}}, +/* 40489 */ {(12<<2)|2,{104,95,0}}, +/* 40490 */ {(12<<2)|2,{104,95,0}}, +/* 40491 */ {(12<<2)|2,{104,95,0}}, +/* 40492 */ {(12<<2)|2,{104,95,0}}, +/* 40493 */ {(12<<2)|2,{104,95,0}}, +/* 40494 */ {(12<<2)|2,{104,95,0}}, +/* 40495 */ {(12<<2)|2,{104,95,0}}, +/* 40496 */ {(12<<2)|2,{104,98,0}}, +/* 40497 */ {(12<<2)|2,{104,98,0}}, +/* 40498 */ {(12<<2)|2,{104,98,0}}, +/* 40499 */ {(12<<2)|2,{104,98,0}}, +/* 40500 */ {(12<<2)|2,{104,98,0}}, +/* 40501 */ {(12<<2)|2,{104,98,0}}, +/* 40502 */ {(12<<2)|2,{104,98,0}}, +/* 40503 */ {(12<<2)|2,{104,98,0}}, +/* 40504 */ {(12<<2)|2,{104,98,0}}, +/* 40505 */ {(12<<2)|2,{104,98,0}}, +/* 40506 */ {(12<<2)|2,{104,98,0}}, +/* 40507 */ {(12<<2)|2,{104,98,0}}, +/* 40508 */ {(12<<2)|2,{104,98,0}}, +/* 40509 */ {(12<<2)|2,{104,98,0}}, +/* 40510 */ {(12<<2)|2,{104,98,0}}, +/* 40511 */ {(12<<2)|2,{104,98,0}}, +/* 40512 */ {(12<<2)|2,{104,100,0}}, +/* 40513 */ {(12<<2)|2,{104,100,0}}, +/* 40514 */ {(12<<2)|2,{104,100,0}}, +/* 40515 */ {(12<<2)|2,{104,100,0}}, +/* 40516 */ {(12<<2)|2,{104,100,0}}, +/* 40517 */ {(12<<2)|2,{104,100,0}}, +/* 40518 */ {(12<<2)|2,{104,100,0}}, +/* 40519 */ {(12<<2)|2,{104,100,0}}, +/* 40520 */ {(12<<2)|2,{104,100,0}}, +/* 40521 */ {(12<<2)|2,{104,100,0}}, +/* 40522 */ {(12<<2)|2,{104,100,0}}, +/* 40523 */ {(12<<2)|2,{104,100,0}}, +/* 40524 */ {(12<<2)|2,{104,100,0}}, +/* 40525 */ {(12<<2)|2,{104,100,0}}, +/* 40526 */ {(12<<2)|2,{104,100,0}}, +/* 40527 */ {(12<<2)|2,{104,100,0}}, +/* 40528 */ {(12<<2)|2,{104,102,0}}, +/* 40529 */ {(12<<2)|2,{104,102,0}}, +/* 40530 */ {(12<<2)|2,{104,102,0}}, +/* 40531 */ {(12<<2)|2,{104,102,0}}, +/* 40532 */ {(12<<2)|2,{104,102,0}}, +/* 40533 */ {(12<<2)|2,{104,102,0}}, +/* 40534 */ {(12<<2)|2,{104,102,0}}, +/* 40535 */ {(12<<2)|2,{104,102,0}}, +/* 40536 */ {(12<<2)|2,{104,102,0}}, +/* 40537 */ {(12<<2)|2,{104,102,0}}, +/* 40538 */ {(12<<2)|2,{104,102,0}}, +/* 40539 */ {(12<<2)|2,{104,102,0}}, +/* 40540 */ {(12<<2)|2,{104,102,0}}, +/* 40541 */ {(12<<2)|2,{104,102,0}}, +/* 40542 */ {(12<<2)|2,{104,102,0}}, +/* 40543 */ {(12<<2)|2,{104,102,0}}, +/* 40544 */ {(12<<2)|2,{104,103,0}}, +/* 40545 */ {(12<<2)|2,{104,103,0}}, +/* 40546 */ {(12<<2)|2,{104,103,0}}, +/* 40547 */ {(12<<2)|2,{104,103,0}}, +/* 40548 */ {(12<<2)|2,{104,103,0}}, +/* 40549 */ {(12<<2)|2,{104,103,0}}, +/* 40550 */ {(12<<2)|2,{104,103,0}}, +/* 40551 */ {(12<<2)|2,{104,103,0}}, +/* 40552 */ {(12<<2)|2,{104,103,0}}, +/* 40553 */ {(12<<2)|2,{104,103,0}}, +/* 40554 */ {(12<<2)|2,{104,103,0}}, +/* 40555 */ {(12<<2)|2,{104,103,0}}, +/* 40556 */ {(12<<2)|2,{104,103,0}}, +/* 40557 */ {(12<<2)|2,{104,103,0}}, +/* 40558 */ {(12<<2)|2,{104,103,0}}, +/* 40559 */ {(12<<2)|2,{104,103,0}}, +/* 40560 */ {(12<<2)|2,{104,104,0}}, +/* 40561 */ {(12<<2)|2,{104,104,0}}, +/* 40562 */ {(12<<2)|2,{104,104,0}}, +/* 40563 */ {(12<<2)|2,{104,104,0}}, +/* 40564 */ {(12<<2)|2,{104,104,0}}, +/* 40565 */ {(12<<2)|2,{104,104,0}}, +/* 40566 */ {(12<<2)|2,{104,104,0}}, +/* 40567 */ {(12<<2)|2,{104,104,0}}, +/* 40568 */ {(12<<2)|2,{104,104,0}}, +/* 40569 */ {(12<<2)|2,{104,104,0}}, +/* 40570 */ {(12<<2)|2,{104,104,0}}, +/* 40571 */ {(12<<2)|2,{104,104,0}}, +/* 40572 */ {(12<<2)|2,{104,104,0}}, +/* 40573 */ {(12<<2)|2,{104,104,0}}, +/* 40574 */ {(12<<2)|2,{104,104,0}}, +/* 40575 */ {(12<<2)|2,{104,104,0}}, +/* 40576 */ {(12<<2)|2,{104,108,0}}, +/* 40577 */ {(12<<2)|2,{104,108,0}}, +/* 40578 */ {(12<<2)|2,{104,108,0}}, +/* 40579 */ {(12<<2)|2,{104,108,0}}, +/* 40580 */ {(12<<2)|2,{104,108,0}}, +/* 40581 */ {(12<<2)|2,{104,108,0}}, +/* 40582 */ {(12<<2)|2,{104,108,0}}, +/* 40583 */ {(12<<2)|2,{104,108,0}}, +/* 40584 */ {(12<<2)|2,{104,108,0}}, +/* 40585 */ {(12<<2)|2,{104,108,0}}, +/* 40586 */ {(12<<2)|2,{104,108,0}}, +/* 40587 */ {(12<<2)|2,{104,108,0}}, +/* 40588 */ {(12<<2)|2,{104,108,0}}, +/* 40589 */ {(12<<2)|2,{104,108,0}}, +/* 40590 */ {(12<<2)|2,{104,108,0}}, +/* 40591 */ {(12<<2)|2,{104,108,0}}, +/* 40592 */ {(12<<2)|2,{104,109,0}}, +/* 40593 */ {(12<<2)|2,{104,109,0}}, +/* 40594 */ {(12<<2)|2,{104,109,0}}, +/* 40595 */ {(12<<2)|2,{104,109,0}}, +/* 40596 */ {(12<<2)|2,{104,109,0}}, +/* 40597 */ {(12<<2)|2,{104,109,0}}, +/* 40598 */ {(12<<2)|2,{104,109,0}}, +/* 40599 */ {(12<<2)|2,{104,109,0}}, +/* 40600 */ {(12<<2)|2,{104,109,0}}, +/* 40601 */ {(12<<2)|2,{104,109,0}}, +/* 40602 */ {(12<<2)|2,{104,109,0}}, +/* 40603 */ {(12<<2)|2,{104,109,0}}, +/* 40604 */ {(12<<2)|2,{104,109,0}}, +/* 40605 */ {(12<<2)|2,{104,109,0}}, +/* 40606 */ {(12<<2)|2,{104,109,0}}, +/* 40607 */ {(12<<2)|2,{104,109,0}}, +/* 40608 */ {(12<<2)|2,{104,110,0}}, +/* 40609 */ {(12<<2)|2,{104,110,0}}, +/* 40610 */ {(12<<2)|2,{104,110,0}}, +/* 40611 */ {(12<<2)|2,{104,110,0}}, +/* 40612 */ {(12<<2)|2,{104,110,0}}, +/* 40613 */ {(12<<2)|2,{104,110,0}}, +/* 40614 */ {(12<<2)|2,{104,110,0}}, +/* 40615 */ {(12<<2)|2,{104,110,0}}, +/* 40616 */ {(12<<2)|2,{104,110,0}}, +/* 40617 */ {(12<<2)|2,{104,110,0}}, +/* 40618 */ {(12<<2)|2,{104,110,0}}, +/* 40619 */ {(12<<2)|2,{104,110,0}}, +/* 40620 */ {(12<<2)|2,{104,110,0}}, +/* 40621 */ {(12<<2)|2,{104,110,0}}, +/* 40622 */ {(12<<2)|2,{104,110,0}}, +/* 40623 */ {(12<<2)|2,{104,110,0}}, +/* 40624 */ {(12<<2)|2,{104,112,0}}, +/* 40625 */ {(12<<2)|2,{104,112,0}}, +/* 40626 */ {(12<<2)|2,{104,112,0}}, +/* 40627 */ {(12<<2)|2,{104,112,0}}, +/* 40628 */ {(12<<2)|2,{104,112,0}}, +/* 40629 */ {(12<<2)|2,{104,112,0}}, +/* 40630 */ {(12<<2)|2,{104,112,0}}, +/* 40631 */ {(12<<2)|2,{104,112,0}}, +/* 40632 */ {(12<<2)|2,{104,112,0}}, +/* 40633 */ {(12<<2)|2,{104,112,0}}, +/* 40634 */ {(12<<2)|2,{104,112,0}}, +/* 40635 */ {(12<<2)|2,{104,112,0}}, +/* 40636 */ {(12<<2)|2,{104,112,0}}, +/* 40637 */ {(12<<2)|2,{104,112,0}}, +/* 40638 */ {(12<<2)|2,{104,112,0}}, +/* 40639 */ {(12<<2)|2,{104,112,0}}, +/* 40640 */ {(12<<2)|2,{104,114,0}}, +/* 40641 */ {(12<<2)|2,{104,114,0}}, +/* 40642 */ {(12<<2)|2,{104,114,0}}, +/* 40643 */ {(12<<2)|2,{104,114,0}}, +/* 40644 */ {(12<<2)|2,{104,114,0}}, +/* 40645 */ {(12<<2)|2,{104,114,0}}, +/* 40646 */ {(12<<2)|2,{104,114,0}}, +/* 40647 */ {(12<<2)|2,{104,114,0}}, +/* 40648 */ {(12<<2)|2,{104,114,0}}, +/* 40649 */ {(12<<2)|2,{104,114,0}}, +/* 40650 */ {(12<<2)|2,{104,114,0}}, +/* 40651 */ {(12<<2)|2,{104,114,0}}, +/* 40652 */ {(12<<2)|2,{104,114,0}}, +/* 40653 */ {(12<<2)|2,{104,114,0}}, +/* 40654 */ {(12<<2)|2,{104,114,0}}, +/* 40655 */ {(12<<2)|2,{104,114,0}}, +/* 40656 */ {(12<<2)|2,{104,117,0}}, +/* 40657 */ {(12<<2)|2,{104,117,0}}, +/* 40658 */ {(12<<2)|2,{104,117,0}}, +/* 40659 */ {(12<<2)|2,{104,117,0}}, +/* 40660 */ {(12<<2)|2,{104,117,0}}, +/* 40661 */ {(12<<2)|2,{104,117,0}}, +/* 40662 */ {(12<<2)|2,{104,117,0}}, +/* 40663 */ {(12<<2)|2,{104,117,0}}, +/* 40664 */ {(12<<2)|2,{104,117,0}}, +/* 40665 */ {(12<<2)|2,{104,117,0}}, +/* 40666 */ {(12<<2)|2,{104,117,0}}, +/* 40667 */ {(12<<2)|2,{104,117,0}}, +/* 40668 */ {(12<<2)|2,{104,117,0}}, +/* 40669 */ {(12<<2)|2,{104,117,0}}, +/* 40670 */ {(12<<2)|2,{104,117,0}}, +/* 40671 */ {(12<<2)|2,{104,117,0}}, +/* 40672 */ {(13<<2)|2,{104,58,0}}, +/* 40673 */ {(13<<2)|2,{104,58,0}}, +/* 40674 */ {(13<<2)|2,{104,58,0}}, +/* 40675 */ {(13<<2)|2,{104,58,0}}, +/* 40676 */ {(13<<2)|2,{104,58,0}}, +/* 40677 */ {(13<<2)|2,{104,58,0}}, +/* 40678 */ {(13<<2)|2,{104,58,0}}, +/* 40679 */ {(13<<2)|2,{104,58,0}}, +/* 40680 */ {(13<<2)|2,{104,66,0}}, +/* 40681 */ {(13<<2)|2,{104,66,0}}, +/* 40682 */ {(13<<2)|2,{104,66,0}}, +/* 40683 */ {(13<<2)|2,{104,66,0}}, +/* 40684 */ {(13<<2)|2,{104,66,0}}, +/* 40685 */ {(13<<2)|2,{104,66,0}}, +/* 40686 */ {(13<<2)|2,{104,66,0}}, +/* 40687 */ {(13<<2)|2,{104,66,0}}, +/* 40688 */ {(13<<2)|2,{104,67,0}}, +/* 40689 */ {(13<<2)|2,{104,67,0}}, +/* 40690 */ {(13<<2)|2,{104,67,0}}, +/* 40691 */ {(13<<2)|2,{104,67,0}}, +/* 40692 */ {(13<<2)|2,{104,67,0}}, +/* 40693 */ {(13<<2)|2,{104,67,0}}, +/* 40694 */ {(13<<2)|2,{104,67,0}}, +/* 40695 */ {(13<<2)|2,{104,67,0}}, +/* 40696 */ {(13<<2)|2,{104,68,0}}, +/* 40697 */ {(13<<2)|2,{104,68,0}}, +/* 40698 */ {(13<<2)|2,{104,68,0}}, +/* 40699 */ {(13<<2)|2,{104,68,0}}, +/* 40700 */ {(13<<2)|2,{104,68,0}}, +/* 40701 */ {(13<<2)|2,{104,68,0}}, +/* 40702 */ {(13<<2)|2,{104,68,0}}, +/* 40703 */ {(13<<2)|2,{104,68,0}}, +/* 40704 */ {(13<<2)|2,{104,69,0}}, +/* 40705 */ {(13<<2)|2,{104,69,0}}, +/* 40706 */ {(13<<2)|2,{104,69,0}}, +/* 40707 */ {(13<<2)|2,{104,69,0}}, +/* 40708 */ {(13<<2)|2,{104,69,0}}, +/* 40709 */ {(13<<2)|2,{104,69,0}}, +/* 40710 */ {(13<<2)|2,{104,69,0}}, +/* 40711 */ {(13<<2)|2,{104,69,0}}, +/* 40712 */ {(13<<2)|2,{104,70,0}}, +/* 40713 */ {(13<<2)|2,{104,70,0}}, +/* 40714 */ {(13<<2)|2,{104,70,0}}, +/* 40715 */ {(13<<2)|2,{104,70,0}}, +/* 40716 */ {(13<<2)|2,{104,70,0}}, +/* 40717 */ {(13<<2)|2,{104,70,0}}, +/* 40718 */ {(13<<2)|2,{104,70,0}}, +/* 40719 */ {(13<<2)|2,{104,70,0}}, +/* 40720 */ {(13<<2)|2,{104,71,0}}, +/* 40721 */ {(13<<2)|2,{104,71,0}}, +/* 40722 */ {(13<<2)|2,{104,71,0}}, +/* 40723 */ {(13<<2)|2,{104,71,0}}, +/* 40724 */ {(13<<2)|2,{104,71,0}}, +/* 40725 */ {(13<<2)|2,{104,71,0}}, +/* 40726 */ {(13<<2)|2,{104,71,0}}, +/* 40727 */ {(13<<2)|2,{104,71,0}}, +/* 40728 */ {(13<<2)|2,{104,72,0}}, +/* 40729 */ {(13<<2)|2,{104,72,0}}, +/* 40730 */ {(13<<2)|2,{104,72,0}}, +/* 40731 */ {(13<<2)|2,{104,72,0}}, +/* 40732 */ {(13<<2)|2,{104,72,0}}, +/* 40733 */ {(13<<2)|2,{104,72,0}}, +/* 40734 */ {(13<<2)|2,{104,72,0}}, +/* 40735 */ {(13<<2)|2,{104,72,0}}, +/* 40736 */ {(13<<2)|2,{104,73,0}}, +/* 40737 */ {(13<<2)|2,{104,73,0}}, +/* 40738 */ {(13<<2)|2,{104,73,0}}, +/* 40739 */ {(13<<2)|2,{104,73,0}}, +/* 40740 */ {(13<<2)|2,{104,73,0}}, +/* 40741 */ {(13<<2)|2,{104,73,0}}, +/* 40742 */ {(13<<2)|2,{104,73,0}}, +/* 40743 */ {(13<<2)|2,{104,73,0}}, +/* 40744 */ {(13<<2)|2,{104,74,0}}, +/* 40745 */ {(13<<2)|2,{104,74,0}}, +/* 40746 */ {(13<<2)|2,{104,74,0}}, +/* 40747 */ {(13<<2)|2,{104,74,0}}, +/* 40748 */ {(13<<2)|2,{104,74,0}}, +/* 40749 */ {(13<<2)|2,{104,74,0}}, +/* 40750 */ {(13<<2)|2,{104,74,0}}, +/* 40751 */ {(13<<2)|2,{104,74,0}}, +/* 40752 */ {(13<<2)|2,{104,75,0}}, +/* 40753 */ {(13<<2)|2,{104,75,0}}, +/* 40754 */ {(13<<2)|2,{104,75,0}}, +/* 40755 */ {(13<<2)|2,{104,75,0}}, +/* 40756 */ {(13<<2)|2,{104,75,0}}, +/* 40757 */ {(13<<2)|2,{104,75,0}}, +/* 40758 */ {(13<<2)|2,{104,75,0}}, +/* 40759 */ {(13<<2)|2,{104,75,0}}, +/* 40760 */ {(13<<2)|2,{104,76,0}}, +/* 40761 */ {(13<<2)|2,{104,76,0}}, +/* 40762 */ {(13<<2)|2,{104,76,0}}, +/* 40763 */ {(13<<2)|2,{104,76,0}}, +/* 40764 */ {(13<<2)|2,{104,76,0}}, +/* 40765 */ {(13<<2)|2,{104,76,0}}, +/* 40766 */ {(13<<2)|2,{104,76,0}}, +/* 40767 */ {(13<<2)|2,{104,76,0}}, +/* 40768 */ {(13<<2)|2,{104,77,0}}, +/* 40769 */ {(13<<2)|2,{104,77,0}}, +/* 40770 */ {(13<<2)|2,{104,77,0}}, +/* 40771 */ {(13<<2)|2,{104,77,0}}, +/* 40772 */ {(13<<2)|2,{104,77,0}}, +/* 40773 */ {(13<<2)|2,{104,77,0}}, +/* 40774 */ {(13<<2)|2,{104,77,0}}, +/* 40775 */ {(13<<2)|2,{104,77,0}}, +/* 40776 */ {(13<<2)|2,{104,78,0}}, +/* 40777 */ {(13<<2)|2,{104,78,0}}, +/* 40778 */ {(13<<2)|2,{104,78,0}}, +/* 40779 */ {(13<<2)|2,{104,78,0}}, +/* 40780 */ {(13<<2)|2,{104,78,0}}, +/* 40781 */ {(13<<2)|2,{104,78,0}}, +/* 40782 */ {(13<<2)|2,{104,78,0}}, +/* 40783 */ {(13<<2)|2,{104,78,0}}, +/* 40784 */ {(13<<2)|2,{104,79,0}}, +/* 40785 */ {(13<<2)|2,{104,79,0}}, +/* 40786 */ {(13<<2)|2,{104,79,0}}, +/* 40787 */ {(13<<2)|2,{104,79,0}}, +/* 40788 */ {(13<<2)|2,{104,79,0}}, +/* 40789 */ {(13<<2)|2,{104,79,0}}, +/* 40790 */ {(13<<2)|2,{104,79,0}}, +/* 40791 */ {(13<<2)|2,{104,79,0}}, +/* 40792 */ {(13<<2)|2,{104,80,0}}, +/* 40793 */ {(13<<2)|2,{104,80,0}}, +/* 40794 */ {(13<<2)|2,{104,80,0}}, +/* 40795 */ {(13<<2)|2,{104,80,0}}, +/* 40796 */ {(13<<2)|2,{104,80,0}}, +/* 40797 */ {(13<<2)|2,{104,80,0}}, +/* 40798 */ {(13<<2)|2,{104,80,0}}, +/* 40799 */ {(13<<2)|2,{104,80,0}}, +/* 40800 */ {(13<<2)|2,{104,81,0}}, +/* 40801 */ {(13<<2)|2,{104,81,0}}, +/* 40802 */ {(13<<2)|2,{104,81,0}}, +/* 40803 */ {(13<<2)|2,{104,81,0}}, +/* 40804 */ {(13<<2)|2,{104,81,0}}, +/* 40805 */ {(13<<2)|2,{104,81,0}}, +/* 40806 */ {(13<<2)|2,{104,81,0}}, +/* 40807 */ {(13<<2)|2,{104,81,0}}, +/* 40808 */ {(13<<2)|2,{104,82,0}}, +/* 40809 */ {(13<<2)|2,{104,82,0}}, +/* 40810 */ {(13<<2)|2,{104,82,0}}, +/* 40811 */ {(13<<2)|2,{104,82,0}}, +/* 40812 */ {(13<<2)|2,{104,82,0}}, +/* 40813 */ {(13<<2)|2,{104,82,0}}, +/* 40814 */ {(13<<2)|2,{104,82,0}}, +/* 40815 */ {(13<<2)|2,{104,82,0}}, +/* 40816 */ {(13<<2)|2,{104,83,0}}, +/* 40817 */ {(13<<2)|2,{104,83,0}}, +/* 40818 */ {(13<<2)|2,{104,83,0}}, +/* 40819 */ {(13<<2)|2,{104,83,0}}, +/* 40820 */ {(13<<2)|2,{104,83,0}}, +/* 40821 */ {(13<<2)|2,{104,83,0}}, +/* 40822 */ {(13<<2)|2,{104,83,0}}, +/* 40823 */ {(13<<2)|2,{104,83,0}}, +/* 40824 */ {(13<<2)|2,{104,84,0}}, +/* 40825 */ {(13<<2)|2,{104,84,0}}, +/* 40826 */ {(13<<2)|2,{104,84,0}}, +/* 40827 */ {(13<<2)|2,{104,84,0}}, +/* 40828 */ {(13<<2)|2,{104,84,0}}, +/* 40829 */ {(13<<2)|2,{104,84,0}}, +/* 40830 */ {(13<<2)|2,{104,84,0}}, +/* 40831 */ {(13<<2)|2,{104,84,0}}, +/* 40832 */ {(13<<2)|2,{104,85,0}}, +/* 40833 */ {(13<<2)|2,{104,85,0}}, +/* 40834 */ {(13<<2)|2,{104,85,0}}, +/* 40835 */ {(13<<2)|2,{104,85,0}}, +/* 40836 */ {(13<<2)|2,{104,85,0}}, +/* 40837 */ {(13<<2)|2,{104,85,0}}, +/* 40838 */ {(13<<2)|2,{104,85,0}}, +/* 40839 */ {(13<<2)|2,{104,85,0}}, +/* 40840 */ {(13<<2)|2,{104,86,0}}, +/* 40841 */ {(13<<2)|2,{104,86,0}}, +/* 40842 */ {(13<<2)|2,{104,86,0}}, +/* 40843 */ {(13<<2)|2,{104,86,0}}, +/* 40844 */ {(13<<2)|2,{104,86,0}}, +/* 40845 */ {(13<<2)|2,{104,86,0}}, +/* 40846 */ {(13<<2)|2,{104,86,0}}, +/* 40847 */ {(13<<2)|2,{104,86,0}}, +/* 40848 */ {(13<<2)|2,{104,87,0}}, +/* 40849 */ {(13<<2)|2,{104,87,0}}, +/* 40850 */ {(13<<2)|2,{104,87,0}}, +/* 40851 */ {(13<<2)|2,{104,87,0}}, +/* 40852 */ {(13<<2)|2,{104,87,0}}, +/* 40853 */ {(13<<2)|2,{104,87,0}}, +/* 40854 */ {(13<<2)|2,{104,87,0}}, +/* 40855 */ {(13<<2)|2,{104,87,0}}, +/* 40856 */ {(13<<2)|2,{104,89,0}}, +/* 40857 */ {(13<<2)|2,{104,89,0}}, +/* 40858 */ {(13<<2)|2,{104,89,0}}, +/* 40859 */ {(13<<2)|2,{104,89,0}}, +/* 40860 */ {(13<<2)|2,{104,89,0}}, +/* 40861 */ {(13<<2)|2,{104,89,0}}, +/* 40862 */ {(13<<2)|2,{104,89,0}}, +/* 40863 */ {(13<<2)|2,{104,89,0}}, +/* 40864 */ {(13<<2)|2,{104,106,0}}, +/* 40865 */ {(13<<2)|2,{104,106,0}}, +/* 40866 */ {(13<<2)|2,{104,106,0}}, +/* 40867 */ {(13<<2)|2,{104,106,0}}, +/* 40868 */ {(13<<2)|2,{104,106,0}}, +/* 40869 */ {(13<<2)|2,{104,106,0}}, +/* 40870 */ {(13<<2)|2,{104,106,0}}, +/* 40871 */ {(13<<2)|2,{104,106,0}}, +/* 40872 */ {(13<<2)|2,{104,107,0}}, +/* 40873 */ {(13<<2)|2,{104,107,0}}, +/* 40874 */ {(13<<2)|2,{104,107,0}}, +/* 40875 */ {(13<<2)|2,{104,107,0}}, +/* 40876 */ {(13<<2)|2,{104,107,0}}, +/* 40877 */ {(13<<2)|2,{104,107,0}}, +/* 40878 */ {(13<<2)|2,{104,107,0}}, +/* 40879 */ {(13<<2)|2,{104,107,0}}, +/* 40880 */ {(13<<2)|2,{104,113,0}}, +/* 40881 */ {(13<<2)|2,{104,113,0}}, +/* 40882 */ {(13<<2)|2,{104,113,0}}, +/* 40883 */ {(13<<2)|2,{104,113,0}}, +/* 40884 */ {(13<<2)|2,{104,113,0}}, +/* 40885 */ {(13<<2)|2,{104,113,0}}, +/* 40886 */ {(13<<2)|2,{104,113,0}}, +/* 40887 */ {(13<<2)|2,{104,113,0}}, +/* 40888 */ {(13<<2)|2,{104,118,0}}, +/* 40889 */ {(13<<2)|2,{104,118,0}}, +/* 40890 */ {(13<<2)|2,{104,118,0}}, +/* 40891 */ {(13<<2)|2,{104,118,0}}, +/* 40892 */ {(13<<2)|2,{104,118,0}}, +/* 40893 */ {(13<<2)|2,{104,118,0}}, +/* 40894 */ {(13<<2)|2,{104,118,0}}, +/* 40895 */ {(13<<2)|2,{104,118,0}}, +/* 40896 */ {(13<<2)|2,{104,119,0}}, +/* 40897 */ {(13<<2)|2,{104,119,0}}, +/* 40898 */ {(13<<2)|2,{104,119,0}}, +/* 40899 */ {(13<<2)|2,{104,119,0}}, +/* 40900 */ {(13<<2)|2,{104,119,0}}, +/* 40901 */ {(13<<2)|2,{104,119,0}}, +/* 40902 */ {(13<<2)|2,{104,119,0}}, +/* 40903 */ {(13<<2)|2,{104,119,0}}, +/* 40904 */ {(13<<2)|2,{104,120,0}}, +/* 40905 */ {(13<<2)|2,{104,120,0}}, +/* 40906 */ {(13<<2)|2,{104,120,0}}, +/* 40907 */ {(13<<2)|2,{104,120,0}}, +/* 40908 */ {(13<<2)|2,{104,120,0}}, +/* 40909 */ {(13<<2)|2,{104,120,0}}, +/* 40910 */ {(13<<2)|2,{104,120,0}}, +/* 40911 */ {(13<<2)|2,{104,120,0}}, +/* 40912 */ {(13<<2)|2,{104,121,0}}, +/* 40913 */ {(13<<2)|2,{104,121,0}}, +/* 40914 */ {(13<<2)|2,{104,121,0}}, +/* 40915 */ {(13<<2)|2,{104,121,0}}, +/* 40916 */ {(13<<2)|2,{104,121,0}}, +/* 40917 */ {(13<<2)|2,{104,121,0}}, +/* 40918 */ {(13<<2)|2,{104,121,0}}, +/* 40919 */ {(13<<2)|2,{104,121,0}}, +/* 40920 */ {(13<<2)|2,{104,122,0}}, +/* 40921 */ {(13<<2)|2,{104,122,0}}, +/* 40922 */ {(13<<2)|2,{104,122,0}}, +/* 40923 */ {(13<<2)|2,{104,122,0}}, +/* 40924 */ {(13<<2)|2,{104,122,0}}, +/* 40925 */ {(13<<2)|2,{104,122,0}}, +/* 40926 */ {(13<<2)|2,{104,122,0}}, +/* 40927 */ {(13<<2)|2,{104,122,0}}, +/* 40928 */ {(14<<2)|2,{104,38,0}}, +/* 40929 */ {(14<<2)|2,{104,38,0}}, +/* 40930 */ {(14<<2)|2,{104,38,0}}, +/* 40931 */ {(14<<2)|2,{104,38,0}}, +/* 40932 */ {(14<<2)|2,{104,42,0}}, +/* 40933 */ {(14<<2)|2,{104,42,0}}, +/* 40934 */ {(14<<2)|2,{104,42,0}}, +/* 40935 */ {(14<<2)|2,{104,42,0}}, +/* 40936 */ {(14<<2)|2,{104,44,0}}, +/* 40937 */ {(14<<2)|2,{104,44,0}}, +/* 40938 */ {(14<<2)|2,{104,44,0}}, +/* 40939 */ {(14<<2)|2,{104,44,0}}, +/* 40940 */ {(14<<2)|2,{104,59,0}}, +/* 40941 */ {(14<<2)|2,{104,59,0}}, +/* 40942 */ {(14<<2)|2,{104,59,0}}, +/* 40943 */ {(14<<2)|2,{104,59,0}}, +/* 40944 */ {(14<<2)|2,{104,88,0}}, +/* 40945 */ {(14<<2)|2,{104,88,0}}, +/* 40946 */ {(14<<2)|2,{104,88,0}}, +/* 40947 */ {(14<<2)|2,{104,88,0}}, +/* 40948 */ {(14<<2)|2,{104,90,0}}, +/* 40949 */ {(14<<2)|2,{104,90,0}}, +/* 40950 */ {(14<<2)|2,{104,90,0}}, +/* 40951 */ {(14<<2)|2,{104,90,0}}, +/* 40952 */ {(16<<2)|2,{104,33,0}}, +/* 40953 */ {(16<<2)|2,{104,34,0}}, +/* 40954 */ {(16<<2)|2,{104,40,0}}, +/* 40955 */ {(16<<2)|2,{104,41,0}}, +/* 40956 */ {(16<<2)|2,{104,63,0}}, +/* 40957 */ {(6<<2)|1,{104,0,0}}, +/* 40958 */ {(6<<2)|1,{104,0,0}}, +/* 40959 */ {(6<<2)|1,{104,0,0}}, +/* 40960 */ {(16<<2)|3,{108,48,48}}, +/* 40961 */ {(16<<2)|3,{108,48,49}}, +/* 40962 */ {(16<<2)|3,{108,48,50}}, +/* 40963 */ {(16<<2)|3,{108,48,97}}, +/* 40964 */ {(16<<2)|3,{108,48,99}}, +/* 40965 */ {(16<<2)|3,{108,48,101}}, +/* 40966 */ {(16<<2)|3,{108,48,105}}, +/* 40967 */ {(16<<2)|3,{108,48,111}}, +/* 40968 */ {(16<<2)|3,{108,48,115}}, +/* 40969 */ {(16<<2)|3,{108,48,116}}, +/* 40970 */ {(11<<2)|2,{108,48,0}}, +/* 40971 */ {(11<<2)|2,{108,48,0}}, +/* 40972 */ {(11<<2)|2,{108,48,0}}, +/* 40973 */ {(11<<2)|2,{108,48,0}}, +/* 40974 */ {(11<<2)|2,{108,48,0}}, +/* 40975 */ {(11<<2)|2,{108,48,0}}, +/* 40976 */ {(11<<2)|2,{108,48,0}}, +/* 40977 */ {(11<<2)|2,{108,48,0}}, +/* 40978 */ {(11<<2)|2,{108,48,0}}, +/* 40979 */ {(11<<2)|2,{108,48,0}}, +/* 40980 */ {(11<<2)|2,{108,48,0}}, +/* 40981 */ {(11<<2)|2,{108,48,0}}, +/* 40982 */ {(11<<2)|2,{108,48,0}}, +/* 40983 */ {(11<<2)|2,{108,48,0}}, +/* 40984 */ {(11<<2)|2,{108,48,0}}, +/* 40985 */ {(11<<2)|2,{108,48,0}}, +/* 40986 */ {(11<<2)|2,{108,48,0}}, +/* 40987 */ {(11<<2)|2,{108,48,0}}, +/* 40988 */ {(11<<2)|2,{108,48,0}}, +/* 40989 */ {(11<<2)|2,{108,48,0}}, +/* 40990 */ {(11<<2)|2,{108,48,0}}, +/* 40991 */ {(11<<2)|2,{108,48,0}}, +/* 40992 */ {(16<<2)|3,{108,49,48}}, +/* 40993 */ {(16<<2)|3,{108,49,49}}, +/* 40994 */ {(16<<2)|3,{108,49,50}}, +/* 40995 */ {(16<<2)|3,{108,49,97}}, +/* 40996 */ {(16<<2)|3,{108,49,99}}, +/* 40997 */ {(16<<2)|3,{108,49,101}}, +/* 40998 */ {(16<<2)|3,{108,49,105}}, +/* 40999 */ {(16<<2)|3,{108,49,111}}, +/* 41000 */ {(16<<2)|3,{108,49,115}}, +/* 41001 */ {(16<<2)|3,{108,49,116}}, +/* 41002 */ {(11<<2)|2,{108,49,0}}, +/* 41003 */ {(11<<2)|2,{108,49,0}}, +/* 41004 */ {(11<<2)|2,{108,49,0}}, +/* 41005 */ {(11<<2)|2,{108,49,0}}, +/* 41006 */ {(11<<2)|2,{108,49,0}}, +/* 41007 */ {(11<<2)|2,{108,49,0}}, +/* 41008 */ {(11<<2)|2,{108,49,0}}, +/* 41009 */ {(11<<2)|2,{108,49,0}}, +/* 41010 */ {(11<<2)|2,{108,49,0}}, +/* 41011 */ {(11<<2)|2,{108,49,0}}, +/* 41012 */ {(11<<2)|2,{108,49,0}}, +/* 41013 */ {(11<<2)|2,{108,49,0}}, +/* 41014 */ {(11<<2)|2,{108,49,0}}, +/* 41015 */ {(11<<2)|2,{108,49,0}}, +/* 41016 */ {(11<<2)|2,{108,49,0}}, +/* 41017 */ {(11<<2)|2,{108,49,0}}, +/* 41018 */ {(11<<2)|2,{108,49,0}}, +/* 41019 */ {(11<<2)|2,{108,49,0}}, +/* 41020 */ {(11<<2)|2,{108,49,0}}, +/* 41021 */ {(11<<2)|2,{108,49,0}}, +/* 41022 */ {(11<<2)|2,{108,49,0}}, +/* 41023 */ {(11<<2)|2,{108,49,0}}, +/* 41024 */ {(16<<2)|3,{108,50,48}}, +/* 41025 */ {(16<<2)|3,{108,50,49}}, +/* 41026 */ {(16<<2)|3,{108,50,50}}, +/* 41027 */ {(16<<2)|3,{108,50,97}}, +/* 41028 */ {(16<<2)|3,{108,50,99}}, +/* 41029 */ {(16<<2)|3,{108,50,101}}, +/* 41030 */ {(16<<2)|3,{108,50,105}}, +/* 41031 */ {(16<<2)|3,{108,50,111}}, +/* 41032 */ {(16<<2)|3,{108,50,115}}, +/* 41033 */ {(16<<2)|3,{108,50,116}}, +/* 41034 */ {(11<<2)|2,{108,50,0}}, +/* 41035 */ {(11<<2)|2,{108,50,0}}, +/* 41036 */ {(11<<2)|2,{108,50,0}}, +/* 41037 */ {(11<<2)|2,{108,50,0}}, +/* 41038 */ {(11<<2)|2,{108,50,0}}, +/* 41039 */ {(11<<2)|2,{108,50,0}}, +/* 41040 */ {(11<<2)|2,{108,50,0}}, +/* 41041 */ {(11<<2)|2,{108,50,0}}, +/* 41042 */ {(11<<2)|2,{108,50,0}}, +/* 41043 */ {(11<<2)|2,{108,50,0}}, +/* 41044 */ {(11<<2)|2,{108,50,0}}, +/* 41045 */ {(11<<2)|2,{108,50,0}}, +/* 41046 */ {(11<<2)|2,{108,50,0}}, +/* 41047 */ {(11<<2)|2,{108,50,0}}, +/* 41048 */ {(11<<2)|2,{108,50,0}}, +/* 41049 */ {(11<<2)|2,{108,50,0}}, +/* 41050 */ {(11<<2)|2,{108,50,0}}, +/* 41051 */ {(11<<2)|2,{108,50,0}}, +/* 41052 */ {(11<<2)|2,{108,50,0}}, +/* 41053 */ {(11<<2)|2,{108,50,0}}, +/* 41054 */ {(11<<2)|2,{108,50,0}}, +/* 41055 */ {(11<<2)|2,{108,50,0}}, +/* 41056 */ {(16<<2)|3,{108,97,48}}, +/* 41057 */ {(16<<2)|3,{108,97,49}}, +/* 41058 */ {(16<<2)|3,{108,97,50}}, +/* 41059 */ {(16<<2)|3,{108,97,97}}, +/* 41060 */ {(16<<2)|3,{108,97,99}}, +/* 41061 */ {(16<<2)|3,{108,97,101}}, +/* 41062 */ {(16<<2)|3,{108,97,105}}, +/* 41063 */ {(16<<2)|3,{108,97,111}}, +/* 41064 */ {(16<<2)|3,{108,97,115}}, +/* 41065 */ {(16<<2)|3,{108,97,116}}, +/* 41066 */ {(11<<2)|2,{108,97,0}}, +/* 41067 */ {(11<<2)|2,{108,97,0}}, +/* 41068 */ {(11<<2)|2,{108,97,0}}, +/* 41069 */ {(11<<2)|2,{108,97,0}}, +/* 41070 */ {(11<<2)|2,{108,97,0}}, +/* 41071 */ {(11<<2)|2,{108,97,0}}, +/* 41072 */ {(11<<2)|2,{108,97,0}}, +/* 41073 */ {(11<<2)|2,{108,97,0}}, +/* 41074 */ {(11<<2)|2,{108,97,0}}, +/* 41075 */ {(11<<2)|2,{108,97,0}}, +/* 41076 */ {(11<<2)|2,{108,97,0}}, +/* 41077 */ {(11<<2)|2,{108,97,0}}, +/* 41078 */ {(11<<2)|2,{108,97,0}}, +/* 41079 */ {(11<<2)|2,{108,97,0}}, +/* 41080 */ {(11<<2)|2,{108,97,0}}, +/* 41081 */ {(11<<2)|2,{108,97,0}}, +/* 41082 */ {(11<<2)|2,{108,97,0}}, +/* 41083 */ {(11<<2)|2,{108,97,0}}, +/* 41084 */ {(11<<2)|2,{108,97,0}}, +/* 41085 */ {(11<<2)|2,{108,97,0}}, +/* 41086 */ {(11<<2)|2,{108,97,0}}, +/* 41087 */ {(11<<2)|2,{108,97,0}}, +/* 41088 */ {(16<<2)|3,{108,99,48}}, +/* 41089 */ {(16<<2)|3,{108,99,49}}, +/* 41090 */ {(16<<2)|3,{108,99,50}}, +/* 41091 */ {(16<<2)|3,{108,99,97}}, +/* 41092 */ {(16<<2)|3,{108,99,99}}, +/* 41093 */ {(16<<2)|3,{108,99,101}}, +/* 41094 */ {(16<<2)|3,{108,99,105}}, +/* 41095 */ {(16<<2)|3,{108,99,111}}, +/* 41096 */ {(16<<2)|3,{108,99,115}}, +/* 41097 */ {(16<<2)|3,{108,99,116}}, +/* 41098 */ {(11<<2)|2,{108,99,0}}, +/* 41099 */ {(11<<2)|2,{108,99,0}}, +/* 41100 */ {(11<<2)|2,{108,99,0}}, +/* 41101 */ {(11<<2)|2,{108,99,0}}, +/* 41102 */ {(11<<2)|2,{108,99,0}}, +/* 41103 */ {(11<<2)|2,{108,99,0}}, +/* 41104 */ {(11<<2)|2,{108,99,0}}, +/* 41105 */ {(11<<2)|2,{108,99,0}}, +/* 41106 */ {(11<<2)|2,{108,99,0}}, +/* 41107 */ {(11<<2)|2,{108,99,0}}, +/* 41108 */ {(11<<2)|2,{108,99,0}}, +/* 41109 */ {(11<<2)|2,{108,99,0}}, +/* 41110 */ {(11<<2)|2,{108,99,0}}, +/* 41111 */ {(11<<2)|2,{108,99,0}}, +/* 41112 */ {(11<<2)|2,{108,99,0}}, +/* 41113 */ {(11<<2)|2,{108,99,0}}, +/* 41114 */ {(11<<2)|2,{108,99,0}}, +/* 41115 */ {(11<<2)|2,{108,99,0}}, +/* 41116 */ {(11<<2)|2,{108,99,0}}, +/* 41117 */ {(11<<2)|2,{108,99,0}}, +/* 41118 */ {(11<<2)|2,{108,99,0}}, +/* 41119 */ {(11<<2)|2,{108,99,0}}, +/* 41120 */ {(16<<2)|3,{108,101,48}}, +/* 41121 */ {(16<<2)|3,{108,101,49}}, +/* 41122 */ {(16<<2)|3,{108,101,50}}, +/* 41123 */ {(16<<2)|3,{108,101,97}}, +/* 41124 */ {(16<<2)|3,{108,101,99}}, +/* 41125 */ {(16<<2)|3,{108,101,101}}, +/* 41126 */ {(16<<2)|3,{108,101,105}}, +/* 41127 */ {(16<<2)|3,{108,101,111}}, +/* 41128 */ {(16<<2)|3,{108,101,115}}, +/* 41129 */ {(16<<2)|3,{108,101,116}}, +/* 41130 */ {(11<<2)|2,{108,101,0}}, +/* 41131 */ {(11<<2)|2,{108,101,0}}, +/* 41132 */ {(11<<2)|2,{108,101,0}}, +/* 41133 */ {(11<<2)|2,{108,101,0}}, +/* 41134 */ {(11<<2)|2,{108,101,0}}, +/* 41135 */ {(11<<2)|2,{108,101,0}}, +/* 41136 */ {(11<<2)|2,{108,101,0}}, +/* 41137 */ {(11<<2)|2,{108,101,0}}, +/* 41138 */ {(11<<2)|2,{108,101,0}}, +/* 41139 */ {(11<<2)|2,{108,101,0}}, +/* 41140 */ {(11<<2)|2,{108,101,0}}, +/* 41141 */ {(11<<2)|2,{108,101,0}}, +/* 41142 */ {(11<<2)|2,{108,101,0}}, +/* 41143 */ {(11<<2)|2,{108,101,0}}, +/* 41144 */ {(11<<2)|2,{108,101,0}}, +/* 41145 */ {(11<<2)|2,{108,101,0}}, +/* 41146 */ {(11<<2)|2,{108,101,0}}, +/* 41147 */ {(11<<2)|2,{108,101,0}}, +/* 41148 */ {(11<<2)|2,{108,101,0}}, +/* 41149 */ {(11<<2)|2,{108,101,0}}, +/* 41150 */ {(11<<2)|2,{108,101,0}}, +/* 41151 */ {(11<<2)|2,{108,101,0}}, +/* 41152 */ {(16<<2)|3,{108,105,48}}, +/* 41153 */ {(16<<2)|3,{108,105,49}}, +/* 41154 */ {(16<<2)|3,{108,105,50}}, +/* 41155 */ {(16<<2)|3,{108,105,97}}, +/* 41156 */ {(16<<2)|3,{108,105,99}}, +/* 41157 */ {(16<<2)|3,{108,105,101}}, +/* 41158 */ {(16<<2)|3,{108,105,105}}, +/* 41159 */ {(16<<2)|3,{108,105,111}}, +/* 41160 */ {(16<<2)|3,{108,105,115}}, +/* 41161 */ {(16<<2)|3,{108,105,116}}, +/* 41162 */ {(11<<2)|2,{108,105,0}}, +/* 41163 */ {(11<<2)|2,{108,105,0}}, +/* 41164 */ {(11<<2)|2,{108,105,0}}, +/* 41165 */ {(11<<2)|2,{108,105,0}}, +/* 41166 */ {(11<<2)|2,{108,105,0}}, +/* 41167 */ {(11<<2)|2,{108,105,0}}, +/* 41168 */ {(11<<2)|2,{108,105,0}}, +/* 41169 */ {(11<<2)|2,{108,105,0}}, +/* 41170 */ {(11<<2)|2,{108,105,0}}, +/* 41171 */ {(11<<2)|2,{108,105,0}}, +/* 41172 */ {(11<<2)|2,{108,105,0}}, +/* 41173 */ {(11<<2)|2,{108,105,0}}, +/* 41174 */ {(11<<2)|2,{108,105,0}}, +/* 41175 */ {(11<<2)|2,{108,105,0}}, +/* 41176 */ {(11<<2)|2,{108,105,0}}, +/* 41177 */ {(11<<2)|2,{108,105,0}}, +/* 41178 */ {(11<<2)|2,{108,105,0}}, +/* 41179 */ {(11<<2)|2,{108,105,0}}, +/* 41180 */ {(11<<2)|2,{108,105,0}}, +/* 41181 */ {(11<<2)|2,{108,105,0}}, +/* 41182 */ {(11<<2)|2,{108,105,0}}, +/* 41183 */ {(11<<2)|2,{108,105,0}}, +/* 41184 */ {(16<<2)|3,{108,111,48}}, +/* 41185 */ {(16<<2)|3,{108,111,49}}, +/* 41186 */ {(16<<2)|3,{108,111,50}}, +/* 41187 */ {(16<<2)|3,{108,111,97}}, +/* 41188 */ {(16<<2)|3,{108,111,99}}, +/* 41189 */ {(16<<2)|3,{108,111,101}}, +/* 41190 */ {(16<<2)|3,{108,111,105}}, +/* 41191 */ {(16<<2)|3,{108,111,111}}, +/* 41192 */ {(16<<2)|3,{108,111,115}}, +/* 41193 */ {(16<<2)|3,{108,111,116}}, +/* 41194 */ {(11<<2)|2,{108,111,0}}, +/* 41195 */ {(11<<2)|2,{108,111,0}}, +/* 41196 */ {(11<<2)|2,{108,111,0}}, +/* 41197 */ {(11<<2)|2,{108,111,0}}, +/* 41198 */ {(11<<2)|2,{108,111,0}}, +/* 41199 */ {(11<<2)|2,{108,111,0}}, +/* 41200 */ {(11<<2)|2,{108,111,0}}, +/* 41201 */ {(11<<2)|2,{108,111,0}}, +/* 41202 */ {(11<<2)|2,{108,111,0}}, +/* 41203 */ {(11<<2)|2,{108,111,0}}, +/* 41204 */ {(11<<2)|2,{108,111,0}}, +/* 41205 */ {(11<<2)|2,{108,111,0}}, +/* 41206 */ {(11<<2)|2,{108,111,0}}, +/* 41207 */ {(11<<2)|2,{108,111,0}}, +/* 41208 */ {(11<<2)|2,{108,111,0}}, +/* 41209 */ {(11<<2)|2,{108,111,0}}, +/* 41210 */ {(11<<2)|2,{108,111,0}}, +/* 41211 */ {(11<<2)|2,{108,111,0}}, +/* 41212 */ {(11<<2)|2,{108,111,0}}, +/* 41213 */ {(11<<2)|2,{108,111,0}}, +/* 41214 */ {(11<<2)|2,{108,111,0}}, +/* 41215 */ {(11<<2)|2,{108,111,0}}, +/* 41216 */ {(16<<2)|3,{108,115,48}}, +/* 41217 */ {(16<<2)|3,{108,115,49}}, +/* 41218 */ {(16<<2)|3,{108,115,50}}, +/* 41219 */ {(16<<2)|3,{108,115,97}}, +/* 41220 */ {(16<<2)|3,{108,115,99}}, +/* 41221 */ {(16<<2)|3,{108,115,101}}, +/* 41222 */ {(16<<2)|3,{108,115,105}}, +/* 41223 */ {(16<<2)|3,{108,115,111}}, +/* 41224 */ {(16<<2)|3,{108,115,115}}, +/* 41225 */ {(16<<2)|3,{108,115,116}}, +/* 41226 */ {(11<<2)|2,{108,115,0}}, +/* 41227 */ {(11<<2)|2,{108,115,0}}, +/* 41228 */ {(11<<2)|2,{108,115,0}}, +/* 41229 */ {(11<<2)|2,{108,115,0}}, +/* 41230 */ {(11<<2)|2,{108,115,0}}, +/* 41231 */ {(11<<2)|2,{108,115,0}}, +/* 41232 */ {(11<<2)|2,{108,115,0}}, +/* 41233 */ {(11<<2)|2,{108,115,0}}, +/* 41234 */ {(11<<2)|2,{108,115,0}}, +/* 41235 */ {(11<<2)|2,{108,115,0}}, +/* 41236 */ {(11<<2)|2,{108,115,0}}, +/* 41237 */ {(11<<2)|2,{108,115,0}}, +/* 41238 */ {(11<<2)|2,{108,115,0}}, +/* 41239 */ {(11<<2)|2,{108,115,0}}, +/* 41240 */ {(11<<2)|2,{108,115,0}}, +/* 41241 */ {(11<<2)|2,{108,115,0}}, +/* 41242 */ {(11<<2)|2,{108,115,0}}, +/* 41243 */ {(11<<2)|2,{108,115,0}}, +/* 41244 */ {(11<<2)|2,{108,115,0}}, +/* 41245 */ {(11<<2)|2,{108,115,0}}, +/* 41246 */ {(11<<2)|2,{108,115,0}}, +/* 41247 */ {(11<<2)|2,{108,115,0}}, +/* 41248 */ {(16<<2)|3,{108,116,48}}, +/* 41249 */ {(16<<2)|3,{108,116,49}}, +/* 41250 */ {(16<<2)|3,{108,116,50}}, +/* 41251 */ {(16<<2)|3,{108,116,97}}, +/* 41252 */ {(16<<2)|3,{108,116,99}}, +/* 41253 */ {(16<<2)|3,{108,116,101}}, +/* 41254 */ {(16<<2)|3,{108,116,105}}, +/* 41255 */ {(16<<2)|3,{108,116,111}}, +/* 41256 */ {(16<<2)|3,{108,116,115}}, +/* 41257 */ {(16<<2)|3,{108,116,116}}, +/* 41258 */ {(11<<2)|2,{108,116,0}}, +/* 41259 */ {(11<<2)|2,{108,116,0}}, +/* 41260 */ {(11<<2)|2,{108,116,0}}, +/* 41261 */ {(11<<2)|2,{108,116,0}}, +/* 41262 */ {(11<<2)|2,{108,116,0}}, +/* 41263 */ {(11<<2)|2,{108,116,0}}, +/* 41264 */ {(11<<2)|2,{108,116,0}}, +/* 41265 */ {(11<<2)|2,{108,116,0}}, +/* 41266 */ {(11<<2)|2,{108,116,0}}, +/* 41267 */ {(11<<2)|2,{108,116,0}}, +/* 41268 */ {(11<<2)|2,{108,116,0}}, +/* 41269 */ {(11<<2)|2,{108,116,0}}, +/* 41270 */ {(11<<2)|2,{108,116,0}}, +/* 41271 */ {(11<<2)|2,{108,116,0}}, +/* 41272 */ {(11<<2)|2,{108,116,0}}, +/* 41273 */ {(11<<2)|2,{108,116,0}}, +/* 41274 */ {(11<<2)|2,{108,116,0}}, +/* 41275 */ {(11<<2)|2,{108,116,0}}, +/* 41276 */ {(11<<2)|2,{108,116,0}}, +/* 41277 */ {(11<<2)|2,{108,116,0}}, +/* 41278 */ {(11<<2)|2,{108,116,0}}, +/* 41279 */ {(11<<2)|2,{108,116,0}}, +/* 41280 */ {(12<<2)|2,{108,32,0}}, +/* 41281 */ {(12<<2)|2,{108,32,0}}, +/* 41282 */ {(12<<2)|2,{108,32,0}}, +/* 41283 */ {(12<<2)|2,{108,32,0}}, +/* 41284 */ {(12<<2)|2,{108,32,0}}, +/* 41285 */ {(12<<2)|2,{108,32,0}}, +/* 41286 */ {(12<<2)|2,{108,32,0}}, +/* 41287 */ {(12<<2)|2,{108,32,0}}, +/* 41288 */ {(12<<2)|2,{108,32,0}}, +/* 41289 */ {(12<<2)|2,{108,32,0}}, +/* 41290 */ {(12<<2)|2,{108,32,0}}, +/* 41291 */ {(12<<2)|2,{108,32,0}}, +/* 41292 */ {(12<<2)|2,{108,32,0}}, +/* 41293 */ {(12<<2)|2,{108,32,0}}, +/* 41294 */ {(12<<2)|2,{108,32,0}}, +/* 41295 */ {(12<<2)|2,{108,32,0}}, +/* 41296 */ {(12<<2)|2,{108,37,0}}, +/* 41297 */ {(12<<2)|2,{108,37,0}}, +/* 41298 */ {(12<<2)|2,{108,37,0}}, +/* 41299 */ {(12<<2)|2,{108,37,0}}, +/* 41300 */ {(12<<2)|2,{108,37,0}}, +/* 41301 */ {(12<<2)|2,{108,37,0}}, +/* 41302 */ {(12<<2)|2,{108,37,0}}, +/* 41303 */ {(12<<2)|2,{108,37,0}}, +/* 41304 */ {(12<<2)|2,{108,37,0}}, +/* 41305 */ {(12<<2)|2,{108,37,0}}, +/* 41306 */ {(12<<2)|2,{108,37,0}}, +/* 41307 */ {(12<<2)|2,{108,37,0}}, +/* 41308 */ {(12<<2)|2,{108,37,0}}, +/* 41309 */ {(12<<2)|2,{108,37,0}}, +/* 41310 */ {(12<<2)|2,{108,37,0}}, +/* 41311 */ {(12<<2)|2,{108,37,0}}, +/* 41312 */ {(12<<2)|2,{108,45,0}}, +/* 41313 */ {(12<<2)|2,{108,45,0}}, +/* 41314 */ {(12<<2)|2,{108,45,0}}, +/* 41315 */ {(12<<2)|2,{108,45,0}}, +/* 41316 */ {(12<<2)|2,{108,45,0}}, +/* 41317 */ {(12<<2)|2,{108,45,0}}, +/* 41318 */ {(12<<2)|2,{108,45,0}}, +/* 41319 */ {(12<<2)|2,{108,45,0}}, +/* 41320 */ {(12<<2)|2,{108,45,0}}, +/* 41321 */ {(12<<2)|2,{108,45,0}}, +/* 41322 */ {(12<<2)|2,{108,45,0}}, +/* 41323 */ {(12<<2)|2,{108,45,0}}, +/* 41324 */ {(12<<2)|2,{108,45,0}}, +/* 41325 */ {(12<<2)|2,{108,45,0}}, +/* 41326 */ {(12<<2)|2,{108,45,0}}, +/* 41327 */ {(12<<2)|2,{108,45,0}}, +/* 41328 */ {(12<<2)|2,{108,46,0}}, +/* 41329 */ {(12<<2)|2,{108,46,0}}, +/* 41330 */ {(12<<2)|2,{108,46,0}}, +/* 41331 */ {(12<<2)|2,{108,46,0}}, +/* 41332 */ {(12<<2)|2,{108,46,0}}, +/* 41333 */ {(12<<2)|2,{108,46,0}}, +/* 41334 */ {(12<<2)|2,{108,46,0}}, +/* 41335 */ {(12<<2)|2,{108,46,0}}, +/* 41336 */ {(12<<2)|2,{108,46,0}}, +/* 41337 */ {(12<<2)|2,{108,46,0}}, +/* 41338 */ {(12<<2)|2,{108,46,0}}, +/* 41339 */ {(12<<2)|2,{108,46,0}}, +/* 41340 */ {(12<<2)|2,{108,46,0}}, +/* 41341 */ {(12<<2)|2,{108,46,0}}, +/* 41342 */ {(12<<2)|2,{108,46,0}}, +/* 41343 */ {(12<<2)|2,{108,46,0}}, +/* 41344 */ {(12<<2)|2,{108,47,0}}, +/* 41345 */ {(12<<2)|2,{108,47,0}}, +/* 41346 */ {(12<<2)|2,{108,47,0}}, +/* 41347 */ {(12<<2)|2,{108,47,0}}, +/* 41348 */ {(12<<2)|2,{108,47,0}}, +/* 41349 */ {(12<<2)|2,{108,47,0}}, +/* 41350 */ {(12<<2)|2,{108,47,0}}, +/* 41351 */ {(12<<2)|2,{108,47,0}}, +/* 41352 */ {(12<<2)|2,{108,47,0}}, +/* 41353 */ {(12<<2)|2,{108,47,0}}, +/* 41354 */ {(12<<2)|2,{108,47,0}}, +/* 41355 */ {(12<<2)|2,{108,47,0}}, +/* 41356 */ {(12<<2)|2,{108,47,0}}, +/* 41357 */ {(12<<2)|2,{108,47,0}}, +/* 41358 */ {(12<<2)|2,{108,47,0}}, +/* 41359 */ {(12<<2)|2,{108,47,0}}, +/* 41360 */ {(12<<2)|2,{108,51,0}}, +/* 41361 */ {(12<<2)|2,{108,51,0}}, +/* 41362 */ {(12<<2)|2,{108,51,0}}, +/* 41363 */ {(12<<2)|2,{108,51,0}}, +/* 41364 */ {(12<<2)|2,{108,51,0}}, +/* 41365 */ {(12<<2)|2,{108,51,0}}, +/* 41366 */ {(12<<2)|2,{108,51,0}}, +/* 41367 */ {(12<<2)|2,{108,51,0}}, +/* 41368 */ {(12<<2)|2,{108,51,0}}, +/* 41369 */ {(12<<2)|2,{108,51,0}}, +/* 41370 */ {(12<<2)|2,{108,51,0}}, +/* 41371 */ {(12<<2)|2,{108,51,0}}, +/* 41372 */ {(12<<2)|2,{108,51,0}}, +/* 41373 */ {(12<<2)|2,{108,51,0}}, +/* 41374 */ {(12<<2)|2,{108,51,0}}, +/* 41375 */ {(12<<2)|2,{108,51,0}}, +/* 41376 */ {(12<<2)|2,{108,52,0}}, +/* 41377 */ {(12<<2)|2,{108,52,0}}, +/* 41378 */ {(12<<2)|2,{108,52,0}}, +/* 41379 */ {(12<<2)|2,{108,52,0}}, +/* 41380 */ {(12<<2)|2,{108,52,0}}, +/* 41381 */ {(12<<2)|2,{108,52,0}}, +/* 41382 */ {(12<<2)|2,{108,52,0}}, +/* 41383 */ {(12<<2)|2,{108,52,0}}, +/* 41384 */ {(12<<2)|2,{108,52,0}}, +/* 41385 */ {(12<<2)|2,{108,52,0}}, +/* 41386 */ {(12<<2)|2,{108,52,0}}, +/* 41387 */ {(12<<2)|2,{108,52,0}}, +/* 41388 */ {(12<<2)|2,{108,52,0}}, +/* 41389 */ {(12<<2)|2,{108,52,0}}, +/* 41390 */ {(12<<2)|2,{108,52,0}}, +/* 41391 */ {(12<<2)|2,{108,52,0}}, +/* 41392 */ {(12<<2)|2,{108,53,0}}, +/* 41393 */ {(12<<2)|2,{108,53,0}}, +/* 41394 */ {(12<<2)|2,{108,53,0}}, +/* 41395 */ {(12<<2)|2,{108,53,0}}, +/* 41396 */ {(12<<2)|2,{108,53,0}}, +/* 41397 */ {(12<<2)|2,{108,53,0}}, +/* 41398 */ {(12<<2)|2,{108,53,0}}, +/* 41399 */ {(12<<2)|2,{108,53,0}}, +/* 41400 */ {(12<<2)|2,{108,53,0}}, +/* 41401 */ {(12<<2)|2,{108,53,0}}, +/* 41402 */ {(12<<2)|2,{108,53,0}}, +/* 41403 */ {(12<<2)|2,{108,53,0}}, +/* 41404 */ {(12<<2)|2,{108,53,0}}, +/* 41405 */ {(12<<2)|2,{108,53,0}}, +/* 41406 */ {(12<<2)|2,{108,53,0}}, +/* 41407 */ {(12<<2)|2,{108,53,0}}, +/* 41408 */ {(12<<2)|2,{108,54,0}}, +/* 41409 */ {(12<<2)|2,{108,54,0}}, +/* 41410 */ {(12<<2)|2,{108,54,0}}, +/* 41411 */ {(12<<2)|2,{108,54,0}}, +/* 41412 */ {(12<<2)|2,{108,54,0}}, +/* 41413 */ {(12<<2)|2,{108,54,0}}, +/* 41414 */ {(12<<2)|2,{108,54,0}}, +/* 41415 */ {(12<<2)|2,{108,54,0}}, +/* 41416 */ {(12<<2)|2,{108,54,0}}, +/* 41417 */ {(12<<2)|2,{108,54,0}}, +/* 41418 */ {(12<<2)|2,{108,54,0}}, +/* 41419 */ {(12<<2)|2,{108,54,0}}, +/* 41420 */ {(12<<2)|2,{108,54,0}}, +/* 41421 */ {(12<<2)|2,{108,54,0}}, +/* 41422 */ {(12<<2)|2,{108,54,0}}, +/* 41423 */ {(12<<2)|2,{108,54,0}}, +/* 41424 */ {(12<<2)|2,{108,55,0}}, +/* 41425 */ {(12<<2)|2,{108,55,0}}, +/* 41426 */ {(12<<2)|2,{108,55,0}}, +/* 41427 */ {(12<<2)|2,{108,55,0}}, +/* 41428 */ {(12<<2)|2,{108,55,0}}, +/* 41429 */ {(12<<2)|2,{108,55,0}}, +/* 41430 */ {(12<<2)|2,{108,55,0}}, +/* 41431 */ {(12<<2)|2,{108,55,0}}, +/* 41432 */ {(12<<2)|2,{108,55,0}}, +/* 41433 */ {(12<<2)|2,{108,55,0}}, +/* 41434 */ {(12<<2)|2,{108,55,0}}, +/* 41435 */ {(12<<2)|2,{108,55,0}}, +/* 41436 */ {(12<<2)|2,{108,55,0}}, +/* 41437 */ {(12<<2)|2,{108,55,0}}, +/* 41438 */ {(12<<2)|2,{108,55,0}}, +/* 41439 */ {(12<<2)|2,{108,55,0}}, +/* 41440 */ {(12<<2)|2,{108,56,0}}, +/* 41441 */ {(12<<2)|2,{108,56,0}}, +/* 41442 */ {(12<<2)|2,{108,56,0}}, +/* 41443 */ {(12<<2)|2,{108,56,0}}, +/* 41444 */ {(12<<2)|2,{108,56,0}}, +/* 41445 */ {(12<<2)|2,{108,56,0}}, +/* 41446 */ {(12<<2)|2,{108,56,0}}, +/* 41447 */ {(12<<2)|2,{108,56,0}}, +/* 41448 */ {(12<<2)|2,{108,56,0}}, +/* 41449 */ {(12<<2)|2,{108,56,0}}, +/* 41450 */ {(12<<2)|2,{108,56,0}}, +/* 41451 */ {(12<<2)|2,{108,56,0}}, +/* 41452 */ {(12<<2)|2,{108,56,0}}, +/* 41453 */ {(12<<2)|2,{108,56,0}}, +/* 41454 */ {(12<<2)|2,{108,56,0}}, +/* 41455 */ {(12<<2)|2,{108,56,0}}, +/* 41456 */ {(12<<2)|2,{108,57,0}}, +/* 41457 */ {(12<<2)|2,{108,57,0}}, +/* 41458 */ {(12<<2)|2,{108,57,0}}, +/* 41459 */ {(12<<2)|2,{108,57,0}}, +/* 41460 */ {(12<<2)|2,{108,57,0}}, +/* 41461 */ {(12<<2)|2,{108,57,0}}, +/* 41462 */ {(12<<2)|2,{108,57,0}}, +/* 41463 */ {(12<<2)|2,{108,57,0}}, +/* 41464 */ {(12<<2)|2,{108,57,0}}, +/* 41465 */ {(12<<2)|2,{108,57,0}}, +/* 41466 */ {(12<<2)|2,{108,57,0}}, +/* 41467 */ {(12<<2)|2,{108,57,0}}, +/* 41468 */ {(12<<2)|2,{108,57,0}}, +/* 41469 */ {(12<<2)|2,{108,57,0}}, +/* 41470 */ {(12<<2)|2,{108,57,0}}, +/* 41471 */ {(12<<2)|2,{108,57,0}}, +/* 41472 */ {(12<<2)|2,{108,61,0}}, +/* 41473 */ {(12<<2)|2,{108,61,0}}, +/* 41474 */ {(12<<2)|2,{108,61,0}}, +/* 41475 */ {(12<<2)|2,{108,61,0}}, +/* 41476 */ {(12<<2)|2,{108,61,0}}, +/* 41477 */ {(12<<2)|2,{108,61,0}}, +/* 41478 */ {(12<<2)|2,{108,61,0}}, +/* 41479 */ {(12<<2)|2,{108,61,0}}, +/* 41480 */ {(12<<2)|2,{108,61,0}}, +/* 41481 */ {(12<<2)|2,{108,61,0}}, +/* 41482 */ {(12<<2)|2,{108,61,0}}, +/* 41483 */ {(12<<2)|2,{108,61,0}}, +/* 41484 */ {(12<<2)|2,{108,61,0}}, +/* 41485 */ {(12<<2)|2,{108,61,0}}, +/* 41486 */ {(12<<2)|2,{108,61,0}}, +/* 41487 */ {(12<<2)|2,{108,61,0}}, +/* 41488 */ {(12<<2)|2,{108,65,0}}, +/* 41489 */ {(12<<2)|2,{108,65,0}}, +/* 41490 */ {(12<<2)|2,{108,65,0}}, +/* 41491 */ {(12<<2)|2,{108,65,0}}, +/* 41492 */ {(12<<2)|2,{108,65,0}}, +/* 41493 */ {(12<<2)|2,{108,65,0}}, +/* 41494 */ {(12<<2)|2,{108,65,0}}, +/* 41495 */ {(12<<2)|2,{108,65,0}}, +/* 41496 */ {(12<<2)|2,{108,65,0}}, +/* 41497 */ {(12<<2)|2,{108,65,0}}, +/* 41498 */ {(12<<2)|2,{108,65,0}}, +/* 41499 */ {(12<<2)|2,{108,65,0}}, +/* 41500 */ {(12<<2)|2,{108,65,0}}, +/* 41501 */ {(12<<2)|2,{108,65,0}}, +/* 41502 */ {(12<<2)|2,{108,65,0}}, +/* 41503 */ {(12<<2)|2,{108,65,0}}, +/* 41504 */ {(12<<2)|2,{108,95,0}}, +/* 41505 */ {(12<<2)|2,{108,95,0}}, +/* 41506 */ {(12<<2)|2,{108,95,0}}, +/* 41507 */ {(12<<2)|2,{108,95,0}}, +/* 41508 */ {(12<<2)|2,{108,95,0}}, +/* 41509 */ {(12<<2)|2,{108,95,0}}, +/* 41510 */ {(12<<2)|2,{108,95,0}}, +/* 41511 */ {(12<<2)|2,{108,95,0}}, +/* 41512 */ {(12<<2)|2,{108,95,0}}, +/* 41513 */ {(12<<2)|2,{108,95,0}}, +/* 41514 */ {(12<<2)|2,{108,95,0}}, +/* 41515 */ {(12<<2)|2,{108,95,0}}, +/* 41516 */ {(12<<2)|2,{108,95,0}}, +/* 41517 */ {(12<<2)|2,{108,95,0}}, +/* 41518 */ {(12<<2)|2,{108,95,0}}, +/* 41519 */ {(12<<2)|2,{108,95,0}}, +/* 41520 */ {(12<<2)|2,{108,98,0}}, +/* 41521 */ {(12<<2)|2,{108,98,0}}, +/* 41522 */ {(12<<2)|2,{108,98,0}}, +/* 41523 */ {(12<<2)|2,{108,98,0}}, +/* 41524 */ {(12<<2)|2,{108,98,0}}, +/* 41525 */ {(12<<2)|2,{108,98,0}}, +/* 41526 */ {(12<<2)|2,{108,98,0}}, +/* 41527 */ {(12<<2)|2,{108,98,0}}, +/* 41528 */ {(12<<2)|2,{108,98,0}}, +/* 41529 */ {(12<<2)|2,{108,98,0}}, +/* 41530 */ {(12<<2)|2,{108,98,0}}, +/* 41531 */ {(12<<2)|2,{108,98,0}}, +/* 41532 */ {(12<<2)|2,{108,98,0}}, +/* 41533 */ {(12<<2)|2,{108,98,0}}, +/* 41534 */ {(12<<2)|2,{108,98,0}}, +/* 41535 */ {(12<<2)|2,{108,98,0}}, +/* 41536 */ {(12<<2)|2,{108,100,0}}, +/* 41537 */ {(12<<2)|2,{108,100,0}}, +/* 41538 */ {(12<<2)|2,{108,100,0}}, +/* 41539 */ {(12<<2)|2,{108,100,0}}, +/* 41540 */ {(12<<2)|2,{108,100,0}}, +/* 41541 */ {(12<<2)|2,{108,100,0}}, +/* 41542 */ {(12<<2)|2,{108,100,0}}, +/* 41543 */ {(12<<2)|2,{108,100,0}}, +/* 41544 */ {(12<<2)|2,{108,100,0}}, +/* 41545 */ {(12<<2)|2,{108,100,0}}, +/* 41546 */ {(12<<2)|2,{108,100,0}}, +/* 41547 */ {(12<<2)|2,{108,100,0}}, +/* 41548 */ {(12<<2)|2,{108,100,0}}, +/* 41549 */ {(12<<2)|2,{108,100,0}}, +/* 41550 */ {(12<<2)|2,{108,100,0}}, +/* 41551 */ {(12<<2)|2,{108,100,0}}, +/* 41552 */ {(12<<2)|2,{108,102,0}}, +/* 41553 */ {(12<<2)|2,{108,102,0}}, +/* 41554 */ {(12<<2)|2,{108,102,0}}, +/* 41555 */ {(12<<2)|2,{108,102,0}}, +/* 41556 */ {(12<<2)|2,{108,102,0}}, +/* 41557 */ {(12<<2)|2,{108,102,0}}, +/* 41558 */ {(12<<2)|2,{108,102,0}}, +/* 41559 */ {(12<<2)|2,{108,102,0}}, +/* 41560 */ {(12<<2)|2,{108,102,0}}, +/* 41561 */ {(12<<2)|2,{108,102,0}}, +/* 41562 */ {(12<<2)|2,{108,102,0}}, +/* 41563 */ {(12<<2)|2,{108,102,0}}, +/* 41564 */ {(12<<2)|2,{108,102,0}}, +/* 41565 */ {(12<<2)|2,{108,102,0}}, +/* 41566 */ {(12<<2)|2,{108,102,0}}, +/* 41567 */ {(12<<2)|2,{108,102,0}}, +/* 41568 */ {(12<<2)|2,{108,103,0}}, +/* 41569 */ {(12<<2)|2,{108,103,0}}, +/* 41570 */ {(12<<2)|2,{108,103,0}}, +/* 41571 */ {(12<<2)|2,{108,103,0}}, +/* 41572 */ {(12<<2)|2,{108,103,0}}, +/* 41573 */ {(12<<2)|2,{108,103,0}}, +/* 41574 */ {(12<<2)|2,{108,103,0}}, +/* 41575 */ {(12<<2)|2,{108,103,0}}, +/* 41576 */ {(12<<2)|2,{108,103,0}}, +/* 41577 */ {(12<<2)|2,{108,103,0}}, +/* 41578 */ {(12<<2)|2,{108,103,0}}, +/* 41579 */ {(12<<2)|2,{108,103,0}}, +/* 41580 */ {(12<<2)|2,{108,103,0}}, +/* 41581 */ {(12<<2)|2,{108,103,0}}, +/* 41582 */ {(12<<2)|2,{108,103,0}}, +/* 41583 */ {(12<<2)|2,{108,103,0}}, +/* 41584 */ {(12<<2)|2,{108,104,0}}, +/* 41585 */ {(12<<2)|2,{108,104,0}}, +/* 41586 */ {(12<<2)|2,{108,104,0}}, +/* 41587 */ {(12<<2)|2,{108,104,0}}, +/* 41588 */ {(12<<2)|2,{108,104,0}}, +/* 41589 */ {(12<<2)|2,{108,104,0}}, +/* 41590 */ {(12<<2)|2,{108,104,0}}, +/* 41591 */ {(12<<2)|2,{108,104,0}}, +/* 41592 */ {(12<<2)|2,{108,104,0}}, +/* 41593 */ {(12<<2)|2,{108,104,0}}, +/* 41594 */ {(12<<2)|2,{108,104,0}}, +/* 41595 */ {(12<<2)|2,{108,104,0}}, +/* 41596 */ {(12<<2)|2,{108,104,0}}, +/* 41597 */ {(12<<2)|2,{108,104,0}}, +/* 41598 */ {(12<<2)|2,{108,104,0}}, +/* 41599 */ {(12<<2)|2,{108,104,0}}, +/* 41600 */ {(12<<2)|2,{108,108,0}}, +/* 41601 */ {(12<<2)|2,{108,108,0}}, +/* 41602 */ {(12<<2)|2,{108,108,0}}, +/* 41603 */ {(12<<2)|2,{108,108,0}}, +/* 41604 */ {(12<<2)|2,{108,108,0}}, +/* 41605 */ {(12<<2)|2,{108,108,0}}, +/* 41606 */ {(12<<2)|2,{108,108,0}}, +/* 41607 */ {(12<<2)|2,{108,108,0}}, +/* 41608 */ {(12<<2)|2,{108,108,0}}, +/* 41609 */ {(12<<2)|2,{108,108,0}}, +/* 41610 */ {(12<<2)|2,{108,108,0}}, +/* 41611 */ {(12<<2)|2,{108,108,0}}, +/* 41612 */ {(12<<2)|2,{108,108,0}}, +/* 41613 */ {(12<<2)|2,{108,108,0}}, +/* 41614 */ {(12<<2)|2,{108,108,0}}, +/* 41615 */ {(12<<2)|2,{108,108,0}}, +/* 41616 */ {(12<<2)|2,{108,109,0}}, +/* 41617 */ {(12<<2)|2,{108,109,0}}, +/* 41618 */ {(12<<2)|2,{108,109,0}}, +/* 41619 */ {(12<<2)|2,{108,109,0}}, +/* 41620 */ {(12<<2)|2,{108,109,0}}, +/* 41621 */ {(12<<2)|2,{108,109,0}}, +/* 41622 */ {(12<<2)|2,{108,109,0}}, +/* 41623 */ {(12<<2)|2,{108,109,0}}, +/* 41624 */ {(12<<2)|2,{108,109,0}}, +/* 41625 */ {(12<<2)|2,{108,109,0}}, +/* 41626 */ {(12<<2)|2,{108,109,0}}, +/* 41627 */ {(12<<2)|2,{108,109,0}}, +/* 41628 */ {(12<<2)|2,{108,109,0}}, +/* 41629 */ {(12<<2)|2,{108,109,0}}, +/* 41630 */ {(12<<2)|2,{108,109,0}}, +/* 41631 */ {(12<<2)|2,{108,109,0}}, +/* 41632 */ {(12<<2)|2,{108,110,0}}, +/* 41633 */ {(12<<2)|2,{108,110,0}}, +/* 41634 */ {(12<<2)|2,{108,110,0}}, +/* 41635 */ {(12<<2)|2,{108,110,0}}, +/* 41636 */ {(12<<2)|2,{108,110,0}}, +/* 41637 */ {(12<<2)|2,{108,110,0}}, +/* 41638 */ {(12<<2)|2,{108,110,0}}, +/* 41639 */ {(12<<2)|2,{108,110,0}}, +/* 41640 */ {(12<<2)|2,{108,110,0}}, +/* 41641 */ {(12<<2)|2,{108,110,0}}, +/* 41642 */ {(12<<2)|2,{108,110,0}}, +/* 41643 */ {(12<<2)|2,{108,110,0}}, +/* 41644 */ {(12<<2)|2,{108,110,0}}, +/* 41645 */ {(12<<2)|2,{108,110,0}}, +/* 41646 */ {(12<<2)|2,{108,110,0}}, +/* 41647 */ {(12<<2)|2,{108,110,0}}, +/* 41648 */ {(12<<2)|2,{108,112,0}}, +/* 41649 */ {(12<<2)|2,{108,112,0}}, +/* 41650 */ {(12<<2)|2,{108,112,0}}, +/* 41651 */ {(12<<2)|2,{108,112,0}}, +/* 41652 */ {(12<<2)|2,{108,112,0}}, +/* 41653 */ {(12<<2)|2,{108,112,0}}, +/* 41654 */ {(12<<2)|2,{108,112,0}}, +/* 41655 */ {(12<<2)|2,{108,112,0}}, +/* 41656 */ {(12<<2)|2,{108,112,0}}, +/* 41657 */ {(12<<2)|2,{108,112,0}}, +/* 41658 */ {(12<<2)|2,{108,112,0}}, +/* 41659 */ {(12<<2)|2,{108,112,0}}, +/* 41660 */ {(12<<2)|2,{108,112,0}}, +/* 41661 */ {(12<<2)|2,{108,112,0}}, +/* 41662 */ {(12<<2)|2,{108,112,0}}, +/* 41663 */ {(12<<2)|2,{108,112,0}}, +/* 41664 */ {(12<<2)|2,{108,114,0}}, +/* 41665 */ {(12<<2)|2,{108,114,0}}, +/* 41666 */ {(12<<2)|2,{108,114,0}}, +/* 41667 */ {(12<<2)|2,{108,114,0}}, +/* 41668 */ {(12<<2)|2,{108,114,0}}, +/* 41669 */ {(12<<2)|2,{108,114,0}}, +/* 41670 */ {(12<<2)|2,{108,114,0}}, +/* 41671 */ {(12<<2)|2,{108,114,0}}, +/* 41672 */ {(12<<2)|2,{108,114,0}}, +/* 41673 */ {(12<<2)|2,{108,114,0}}, +/* 41674 */ {(12<<2)|2,{108,114,0}}, +/* 41675 */ {(12<<2)|2,{108,114,0}}, +/* 41676 */ {(12<<2)|2,{108,114,0}}, +/* 41677 */ {(12<<2)|2,{108,114,0}}, +/* 41678 */ {(12<<2)|2,{108,114,0}}, +/* 41679 */ {(12<<2)|2,{108,114,0}}, +/* 41680 */ {(12<<2)|2,{108,117,0}}, +/* 41681 */ {(12<<2)|2,{108,117,0}}, +/* 41682 */ {(12<<2)|2,{108,117,0}}, +/* 41683 */ {(12<<2)|2,{108,117,0}}, +/* 41684 */ {(12<<2)|2,{108,117,0}}, +/* 41685 */ {(12<<2)|2,{108,117,0}}, +/* 41686 */ {(12<<2)|2,{108,117,0}}, +/* 41687 */ {(12<<2)|2,{108,117,0}}, +/* 41688 */ {(12<<2)|2,{108,117,0}}, +/* 41689 */ {(12<<2)|2,{108,117,0}}, +/* 41690 */ {(12<<2)|2,{108,117,0}}, +/* 41691 */ {(12<<2)|2,{108,117,0}}, +/* 41692 */ {(12<<2)|2,{108,117,0}}, +/* 41693 */ {(12<<2)|2,{108,117,0}}, +/* 41694 */ {(12<<2)|2,{108,117,0}}, +/* 41695 */ {(12<<2)|2,{108,117,0}}, +/* 41696 */ {(13<<2)|2,{108,58,0}}, +/* 41697 */ {(13<<2)|2,{108,58,0}}, +/* 41698 */ {(13<<2)|2,{108,58,0}}, +/* 41699 */ {(13<<2)|2,{108,58,0}}, +/* 41700 */ {(13<<2)|2,{108,58,0}}, +/* 41701 */ {(13<<2)|2,{108,58,0}}, +/* 41702 */ {(13<<2)|2,{108,58,0}}, +/* 41703 */ {(13<<2)|2,{108,58,0}}, +/* 41704 */ {(13<<2)|2,{108,66,0}}, +/* 41705 */ {(13<<2)|2,{108,66,0}}, +/* 41706 */ {(13<<2)|2,{108,66,0}}, +/* 41707 */ {(13<<2)|2,{108,66,0}}, +/* 41708 */ {(13<<2)|2,{108,66,0}}, +/* 41709 */ {(13<<2)|2,{108,66,0}}, +/* 41710 */ {(13<<2)|2,{108,66,0}}, +/* 41711 */ {(13<<2)|2,{108,66,0}}, +/* 41712 */ {(13<<2)|2,{108,67,0}}, +/* 41713 */ {(13<<2)|2,{108,67,0}}, +/* 41714 */ {(13<<2)|2,{108,67,0}}, +/* 41715 */ {(13<<2)|2,{108,67,0}}, +/* 41716 */ {(13<<2)|2,{108,67,0}}, +/* 41717 */ {(13<<2)|2,{108,67,0}}, +/* 41718 */ {(13<<2)|2,{108,67,0}}, +/* 41719 */ {(13<<2)|2,{108,67,0}}, +/* 41720 */ {(13<<2)|2,{108,68,0}}, +/* 41721 */ {(13<<2)|2,{108,68,0}}, +/* 41722 */ {(13<<2)|2,{108,68,0}}, +/* 41723 */ {(13<<2)|2,{108,68,0}}, +/* 41724 */ {(13<<2)|2,{108,68,0}}, +/* 41725 */ {(13<<2)|2,{108,68,0}}, +/* 41726 */ {(13<<2)|2,{108,68,0}}, +/* 41727 */ {(13<<2)|2,{108,68,0}}, +/* 41728 */ {(13<<2)|2,{108,69,0}}, +/* 41729 */ {(13<<2)|2,{108,69,0}}, +/* 41730 */ {(13<<2)|2,{108,69,0}}, +/* 41731 */ {(13<<2)|2,{108,69,0}}, +/* 41732 */ {(13<<2)|2,{108,69,0}}, +/* 41733 */ {(13<<2)|2,{108,69,0}}, +/* 41734 */ {(13<<2)|2,{108,69,0}}, +/* 41735 */ {(13<<2)|2,{108,69,0}}, +/* 41736 */ {(13<<2)|2,{108,70,0}}, +/* 41737 */ {(13<<2)|2,{108,70,0}}, +/* 41738 */ {(13<<2)|2,{108,70,0}}, +/* 41739 */ {(13<<2)|2,{108,70,0}}, +/* 41740 */ {(13<<2)|2,{108,70,0}}, +/* 41741 */ {(13<<2)|2,{108,70,0}}, +/* 41742 */ {(13<<2)|2,{108,70,0}}, +/* 41743 */ {(13<<2)|2,{108,70,0}}, +/* 41744 */ {(13<<2)|2,{108,71,0}}, +/* 41745 */ {(13<<2)|2,{108,71,0}}, +/* 41746 */ {(13<<2)|2,{108,71,0}}, +/* 41747 */ {(13<<2)|2,{108,71,0}}, +/* 41748 */ {(13<<2)|2,{108,71,0}}, +/* 41749 */ {(13<<2)|2,{108,71,0}}, +/* 41750 */ {(13<<2)|2,{108,71,0}}, +/* 41751 */ {(13<<2)|2,{108,71,0}}, +/* 41752 */ {(13<<2)|2,{108,72,0}}, +/* 41753 */ {(13<<2)|2,{108,72,0}}, +/* 41754 */ {(13<<2)|2,{108,72,0}}, +/* 41755 */ {(13<<2)|2,{108,72,0}}, +/* 41756 */ {(13<<2)|2,{108,72,0}}, +/* 41757 */ {(13<<2)|2,{108,72,0}}, +/* 41758 */ {(13<<2)|2,{108,72,0}}, +/* 41759 */ {(13<<2)|2,{108,72,0}}, +/* 41760 */ {(13<<2)|2,{108,73,0}}, +/* 41761 */ {(13<<2)|2,{108,73,0}}, +/* 41762 */ {(13<<2)|2,{108,73,0}}, +/* 41763 */ {(13<<2)|2,{108,73,0}}, +/* 41764 */ {(13<<2)|2,{108,73,0}}, +/* 41765 */ {(13<<2)|2,{108,73,0}}, +/* 41766 */ {(13<<2)|2,{108,73,0}}, +/* 41767 */ {(13<<2)|2,{108,73,0}}, +/* 41768 */ {(13<<2)|2,{108,74,0}}, +/* 41769 */ {(13<<2)|2,{108,74,0}}, +/* 41770 */ {(13<<2)|2,{108,74,0}}, +/* 41771 */ {(13<<2)|2,{108,74,0}}, +/* 41772 */ {(13<<2)|2,{108,74,0}}, +/* 41773 */ {(13<<2)|2,{108,74,0}}, +/* 41774 */ {(13<<2)|2,{108,74,0}}, +/* 41775 */ {(13<<2)|2,{108,74,0}}, +/* 41776 */ {(13<<2)|2,{108,75,0}}, +/* 41777 */ {(13<<2)|2,{108,75,0}}, +/* 41778 */ {(13<<2)|2,{108,75,0}}, +/* 41779 */ {(13<<2)|2,{108,75,0}}, +/* 41780 */ {(13<<2)|2,{108,75,0}}, +/* 41781 */ {(13<<2)|2,{108,75,0}}, +/* 41782 */ {(13<<2)|2,{108,75,0}}, +/* 41783 */ {(13<<2)|2,{108,75,0}}, +/* 41784 */ {(13<<2)|2,{108,76,0}}, +/* 41785 */ {(13<<2)|2,{108,76,0}}, +/* 41786 */ {(13<<2)|2,{108,76,0}}, +/* 41787 */ {(13<<2)|2,{108,76,0}}, +/* 41788 */ {(13<<2)|2,{108,76,0}}, +/* 41789 */ {(13<<2)|2,{108,76,0}}, +/* 41790 */ {(13<<2)|2,{108,76,0}}, +/* 41791 */ {(13<<2)|2,{108,76,0}}, +/* 41792 */ {(13<<2)|2,{108,77,0}}, +/* 41793 */ {(13<<2)|2,{108,77,0}}, +/* 41794 */ {(13<<2)|2,{108,77,0}}, +/* 41795 */ {(13<<2)|2,{108,77,0}}, +/* 41796 */ {(13<<2)|2,{108,77,0}}, +/* 41797 */ {(13<<2)|2,{108,77,0}}, +/* 41798 */ {(13<<2)|2,{108,77,0}}, +/* 41799 */ {(13<<2)|2,{108,77,0}}, +/* 41800 */ {(13<<2)|2,{108,78,0}}, +/* 41801 */ {(13<<2)|2,{108,78,0}}, +/* 41802 */ {(13<<2)|2,{108,78,0}}, +/* 41803 */ {(13<<2)|2,{108,78,0}}, +/* 41804 */ {(13<<2)|2,{108,78,0}}, +/* 41805 */ {(13<<2)|2,{108,78,0}}, +/* 41806 */ {(13<<2)|2,{108,78,0}}, +/* 41807 */ {(13<<2)|2,{108,78,0}}, +/* 41808 */ {(13<<2)|2,{108,79,0}}, +/* 41809 */ {(13<<2)|2,{108,79,0}}, +/* 41810 */ {(13<<2)|2,{108,79,0}}, +/* 41811 */ {(13<<2)|2,{108,79,0}}, +/* 41812 */ {(13<<2)|2,{108,79,0}}, +/* 41813 */ {(13<<2)|2,{108,79,0}}, +/* 41814 */ {(13<<2)|2,{108,79,0}}, +/* 41815 */ {(13<<2)|2,{108,79,0}}, +/* 41816 */ {(13<<2)|2,{108,80,0}}, +/* 41817 */ {(13<<2)|2,{108,80,0}}, +/* 41818 */ {(13<<2)|2,{108,80,0}}, +/* 41819 */ {(13<<2)|2,{108,80,0}}, +/* 41820 */ {(13<<2)|2,{108,80,0}}, +/* 41821 */ {(13<<2)|2,{108,80,0}}, +/* 41822 */ {(13<<2)|2,{108,80,0}}, +/* 41823 */ {(13<<2)|2,{108,80,0}}, +/* 41824 */ {(13<<2)|2,{108,81,0}}, +/* 41825 */ {(13<<2)|2,{108,81,0}}, +/* 41826 */ {(13<<2)|2,{108,81,0}}, +/* 41827 */ {(13<<2)|2,{108,81,0}}, +/* 41828 */ {(13<<2)|2,{108,81,0}}, +/* 41829 */ {(13<<2)|2,{108,81,0}}, +/* 41830 */ {(13<<2)|2,{108,81,0}}, +/* 41831 */ {(13<<2)|2,{108,81,0}}, +/* 41832 */ {(13<<2)|2,{108,82,0}}, +/* 41833 */ {(13<<2)|2,{108,82,0}}, +/* 41834 */ {(13<<2)|2,{108,82,0}}, +/* 41835 */ {(13<<2)|2,{108,82,0}}, +/* 41836 */ {(13<<2)|2,{108,82,0}}, +/* 41837 */ {(13<<2)|2,{108,82,0}}, +/* 41838 */ {(13<<2)|2,{108,82,0}}, +/* 41839 */ {(13<<2)|2,{108,82,0}}, +/* 41840 */ {(13<<2)|2,{108,83,0}}, +/* 41841 */ {(13<<2)|2,{108,83,0}}, +/* 41842 */ {(13<<2)|2,{108,83,0}}, +/* 41843 */ {(13<<2)|2,{108,83,0}}, +/* 41844 */ {(13<<2)|2,{108,83,0}}, +/* 41845 */ {(13<<2)|2,{108,83,0}}, +/* 41846 */ {(13<<2)|2,{108,83,0}}, +/* 41847 */ {(13<<2)|2,{108,83,0}}, +/* 41848 */ {(13<<2)|2,{108,84,0}}, +/* 41849 */ {(13<<2)|2,{108,84,0}}, +/* 41850 */ {(13<<2)|2,{108,84,0}}, +/* 41851 */ {(13<<2)|2,{108,84,0}}, +/* 41852 */ {(13<<2)|2,{108,84,0}}, +/* 41853 */ {(13<<2)|2,{108,84,0}}, +/* 41854 */ {(13<<2)|2,{108,84,0}}, +/* 41855 */ {(13<<2)|2,{108,84,0}}, +/* 41856 */ {(13<<2)|2,{108,85,0}}, +/* 41857 */ {(13<<2)|2,{108,85,0}}, +/* 41858 */ {(13<<2)|2,{108,85,0}}, +/* 41859 */ {(13<<2)|2,{108,85,0}}, +/* 41860 */ {(13<<2)|2,{108,85,0}}, +/* 41861 */ {(13<<2)|2,{108,85,0}}, +/* 41862 */ {(13<<2)|2,{108,85,0}}, +/* 41863 */ {(13<<2)|2,{108,85,0}}, +/* 41864 */ {(13<<2)|2,{108,86,0}}, +/* 41865 */ {(13<<2)|2,{108,86,0}}, +/* 41866 */ {(13<<2)|2,{108,86,0}}, +/* 41867 */ {(13<<2)|2,{108,86,0}}, +/* 41868 */ {(13<<2)|2,{108,86,0}}, +/* 41869 */ {(13<<2)|2,{108,86,0}}, +/* 41870 */ {(13<<2)|2,{108,86,0}}, +/* 41871 */ {(13<<2)|2,{108,86,0}}, +/* 41872 */ {(13<<2)|2,{108,87,0}}, +/* 41873 */ {(13<<2)|2,{108,87,0}}, +/* 41874 */ {(13<<2)|2,{108,87,0}}, +/* 41875 */ {(13<<2)|2,{108,87,0}}, +/* 41876 */ {(13<<2)|2,{108,87,0}}, +/* 41877 */ {(13<<2)|2,{108,87,0}}, +/* 41878 */ {(13<<2)|2,{108,87,0}}, +/* 41879 */ {(13<<2)|2,{108,87,0}}, +/* 41880 */ {(13<<2)|2,{108,89,0}}, +/* 41881 */ {(13<<2)|2,{108,89,0}}, +/* 41882 */ {(13<<2)|2,{108,89,0}}, +/* 41883 */ {(13<<2)|2,{108,89,0}}, +/* 41884 */ {(13<<2)|2,{108,89,0}}, +/* 41885 */ {(13<<2)|2,{108,89,0}}, +/* 41886 */ {(13<<2)|2,{108,89,0}}, +/* 41887 */ {(13<<2)|2,{108,89,0}}, +/* 41888 */ {(13<<2)|2,{108,106,0}}, +/* 41889 */ {(13<<2)|2,{108,106,0}}, +/* 41890 */ {(13<<2)|2,{108,106,0}}, +/* 41891 */ {(13<<2)|2,{108,106,0}}, +/* 41892 */ {(13<<2)|2,{108,106,0}}, +/* 41893 */ {(13<<2)|2,{108,106,0}}, +/* 41894 */ {(13<<2)|2,{108,106,0}}, +/* 41895 */ {(13<<2)|2,{108,106,0}}, +/* 41896 */ {(13<<2)|2,{108,107,0}}, +/* 41897 */ {(13<<2)|2,{108,107,0}}, +/* 41898 */ {(13<<2)|2,{108,107,0}}, +/* 41899 */ {(13<<2)|2,{108,107,0}}, +/* 41900 */ {(13<<2)|2,{108,107,0}}, +/* 41901 */ {(13<<2)|2,{108,107,0}}, +/* 41902 */ {(13<<2)|2,{108,107,0}}, +/* 41903 */ {(13<<2)|2,{108,107,0}}, +/* 41904 */ {(13<<2)|2,{108,113,0}}, +/* 41905 */ {(13<<2)|2,{108,113,0}}, +/* 41906 */ {(13<<2)|2,{108,113,0}}, +/* 41907 */ {(13<<2)|2,{108,113,0}}, +/* 41908 */ {(13<<2)|2,{108,113,0}}, +/* 41909 */ {(13<<2)|2,{108,113,0}}, +/* 41910 */ {(13<<2)|2,{108,113,0}}, +/* 41911 */ {(13<<2)|2,{108,113,0}}, +/* 41912 */ {(13<<2)|2,{108,118,0}}, +/* 41913 */ {(13<<2)|2,{108,118,0}}, +/* 41914 */ {(13<<2)|2,{108,118,0}}, +/* 41915 */ {(13<<2)|2,{108,118,0}}, +/* 41916 */ {(13<<2)|2,{108,118,0}}, +/* 41917 */ {(13<<2)|2,{108,118,0}}, +/* 41918 */ {(13<<2)|2,{108,118,0}}, +/* 41919 */ {(13<<2)|2,{108,118,0}}, +/* 41920 */ {(13<<2)|2,{108,119,0}}, +/* 41921 */ {(13<<2)|2,{108,119,0}}, +/* 41922 */ {(13<<2)|2,{108,119,0}}, +/* 41923 */ {(13<<2)|2,{108,119,0}}, +/* 41924 */ {(13<<2)|2,{108,119,0}}, +/* 41925 */ {(13<<2)|2,{108,119,0}}, +/* 41926 */ {(13<<2)|2,{108,119,0}}, +/* 41927 */ {(13<<2)|2,{108,119,0}}, +/* 41928 */ {(13<<2)|2,{108,120,0}}, +/* 41929 */ {(13<<2)|2,{108,120,0}}, +/* 41930 */ {(13<<2)|2,{108,120,0}}, +/* 41931 */ {(13<<2)|2,{108,120,0}}, +/* 41932 */ {(13<<2)|2,{108,120,0}}, +/* 41933 */ {(13<<2)|2,{108,120,0}}, +/* 41934 */ {(13<<2)|2,{108,120,0}}, +/* 41935 */ {(13<<2)|2,{108,120,0}}, +/* 41936 */ {(13<<2)|2,{108,121,0}}, +/* 41937 */ {(13<<2)|2,{108,121,0}}, +/* 41938 */ {(13<<2)|2,{108,121,0}}, +/* 41939 */ {(13<<2)|2,{108,121,0}}, +/* 41940 */ {(13<<2)|2,{108,121,0}}, +/* 41941 */ {(13<<2)|2,{108,121,0}}, +/* 41942 */ {(13<<2)|2,{108,121,0}}, +/* 41943 */ {(13<<2)|2,{108,121,0}}, +/* 41944 */ {(13<<2)|2,{108,122,0}}, +/* 41945 */ {(13<<2)|2,{108,122,0}}, +/* 41946 */ {(13<<2)|2,{108,122,0}}, +/* 41947 */ {(13<<2)|2,{108,122,0}}, +/* 41948 */ {(13<<2)|2,{108,122,0}}, +/* 41949 */ {(13<<2)|2,{108,122,0}}, +/* 41950 */ {(13<<2)|2,{108,122,0}}, +/* 41951 */ {(13<<2)|2,{108,122,0}}, +/* 41952 */ {(14<<2)|2,{108,38,0}}, +/* 41953 */ {(14<<2)|2,{108,38,0}}, +/* 41954 */ {(14<<2)|2,{108,38,0}}, +/* 41955 */ {(14<<2)|2,{108,38,0}}, +/* 41956 */ {(14<<2)|2,{108,42,0}}, +/* 41957 */ {(14<<2)|2,{108,42,0}}, +/* 41958 */ {(14<<2)|2,{108,42,0}}, +/* 41959 */ {(14<<2)|2,{108,42,0}}, +/* 41960 */ {(14<<2)|2,{108,44,0}}, +/* 41961 */ {(14<<2)|2,{108,44,0}}, +/* 41962 */ {(14<<2)|2,{108,44,0}}, +/* 41963 */ {(14<<2)|2,{108,44,0}}, +/* 41964 */ {(14<<2)|2,{108,59,0}}, +/* 41965 */ {(14<<2)|2,{108,59,0}}, +/* 41966 */ {(14<<2)|2,{108,59,0}}, +/* 41967 */ {(14<<2)|2,{108,59,0}}, +/* 41968 */ {(14<<2)|2,{108,88,0}}, +/* 41969 */ {(14<<2)|2,{108,88,0}}, +/* 41970 */ {(14<<2)|2,{108,88,0}}, +/* 41971 */ {(14<<2)|2,{108,88,0}}, +/* 41972 */ {(14<<2)|2,{108,90,0}}, +/* 41973 */ {(14<<2)|2,{108,90,0}}, +/* 41974 */ {(14<<2)|2,{108,90,0}}, +/* 41975 */ {(14<<2)|2,{108,90,0}}, +/* 41976 */ {(16<<2)|2,{108,33,0}}, +/* 41977 */ {(16<<2)|2,{108,34,0}}, +/* 41978 */ {(16<<2)|2,{108,40,0}}, +/* 41979 */ {(16<<2)|2,{108,41,0}}, +/* 41980 */ {(16<<2)|2,{108,63,0}}, +/* 41981 */ {(6<<2)|1,{108,0,0}}, +/* 41982 */ {(6<<2)|1,{108,0,0}}, +/* 41983 */ {(6<<2)|1,{108,0,0}}, +/* 41984 */ {(16<<2)|3,{109,48,48}}, +/* 41985 */ {(16<<2)|3,{109,48,49}}, +/* 41986 */ {(16<<2)|3,{109,48,50}}, +/* 41987 */ {(16<<2)|3,{109,48,97}}, +/* 41988 */ {(16<<2)|3,{109,48,99}}, +/* 41989 */ {(16<<2)|3,{109,48,101}}, +/* 41990 */ {(16<<2)|3,{109,48,105}}, +/* 41991 */ {(16<<2)|3,{109,48,111}}, +/* 41992 */ {(16<<2)|3,{109,48,115}}, +/* 41993 */ {(16<<2)|3,{109,48,116}}, +/* 41994 */ {(11<<2)|2,{109,48,0}}, +/* 41995 */ {(11<<2)|2,{109,48,0}}, +/* 41996 */ {(11<<2)|2,{109,48,0}}, +/* 41997 */ {(11<<2)|2,{109,48,0}}, +/* 41998 */ {(11<<2)|2,{109,48,0}}, +/* 41999 */ {(11<<2)|2,{109,48,0}}, +/* 42000 */ {(11<<2)|2,{109,48,0}}, +/* 42001 */ {(11<<2)|2,{109,48,0}}, +/* 42002 */ {(11<<2)|2,{109,48,0}}, +/* 42003 */ {(11<<2)|2,{109,48,0}}, +/* 42004 */ {(11<<2)|2,{109,48,0}}, +/* 42005 */ {(11<<2)|2,{109,48,0}}, +/* 42006 */ {(11<<2)|2,{109,48,0}}, +/* 42007 */ {(11<<2)|2,{109,48,0}}, +/* 42008 */ {(11<<2)|2,{109,48,0}}, +/* 42009 */ {(11<<2)|2,{109,48,0}}, +/* 42010 */ {(11<<2)|2,{109,48,0}}, +/* 42011 */ {(11<<2)|2,{109,48,0}}, +/* 42012 */ {(11<<2)|2,{109,48,0}}, +/* 42013 */ {(11<<2)|2,{109,48,0}}, +/* 42014 */ {(11<<2)|2,{109,48,0}}, +/* 42015 */ {(11<<2)|2,{109,48,0}}, +/* 42016 */ {(16<<2)|3,{109,49,48}}, +/* 42017 */ {(16<<2)|3,{109,49,49}}, +/* 42018 */ {(16<<2)|3,{109,49,50}}, +/* 42019 */ {(16<<2)|3,{109,49,97}}, +/* 42020 */ {(16<<2)|3,{109,49,99}}, +/* 42021 */ {(16<<2)|3,{109,49,101}}, +/* 42022 */ {(16<<2)|3,{109,49,105}}, +/* 42023 */ {(16<<2)|3,{109,49,111}}, +/* 42024 */ {(16<<2)|3,{109,49,115}}, +/* 42025 */ {(16<<2)|3,{109,49,116}}, +/* 42026 */ {(11<<2)|2,{109,49,0}}, +/* 42027 */ {(11<<2)|2,{109,49,0}}, +/* 42028 */ {(11<<2)|2,{109,49,0}}, +/* 42029 */ {(11<<2)|2,{109,49,0}}, +/* 42030 */ {(11<<2)|2,{109,49,0}}, +/* 42031 */ {(11<<2)|2,{109,49,0}}, +/* 42032 */ {(11<<2)|2,{109,49,0}}, +/* 42033 */ {(11<<2)|2,{109,49,0}}, +/* 42034 */ {(11<<2)|2,{109,49,0}}, +/* 42035 */ {(11<<2)|2,{109,49,0}}, +/* 42036 */ {(11<<2)|2,{109,49,0}}, +/* 42037 */ {(11<<2)|2,{109,49,0}}, +/* 42038 */ {(11<<2)|2,{109,49,0}}, +/* 42039 */ {(11<<2)|2,{109,49,0}}, +/* 42040 */ {(11<<2)|2,{109,49,0}}, +/* 42041 */ {(11<<2)|2,{109,49,0}}, +/* 42042 */ {(11<<2)|2,{109,49,0}}, +/* 42043 */ {(11<<2)|2,{109,49,0}}, +/* 42044 */ {(11<<2)|2,{109,49,0}}, +/* 42045 */ {(11<<2)|2,{109,49,0}}, +/* 42046 */ {(11<<2)|2,{109,49,0}}, +/* 42047 */ {(11<<2)|2,{109,49,0}}, +/* 42048 */ {(16<<2)|3,{109,50,48}}, +/* 42049 */ {(16<<2)|3,{109,50,49}}, +/* 42050 */ {(16<<2)|3,{109,50,50}}, +/* 42051 */ {(16<<2)|3,{109,50,97}}, +/* 42052 */ {(16<<2)|3,{109,50,99}}, +/* 42053 */ {(16<<2)|3,{109,50,101}}, +/* 42054 */ {(16<<2)|3,{109,50,105}}, +/* 42055 */ {(16<<2)|3,{109,50,111}}, +/* 42056 */ {(16<<2)|3,{109,50,115}}, +/* 42057 */ {(16<<2)|3,{109,50,116}}, +/* 42058 */ {(11<<2)|2,{109,50,0}}, +/* 42059 */ {(11<<2)|2,{109,50,0}}, +/* 42060 */ {(11<<2)|2,{109,50,0}}, +/* 42061 */ {(11<<2)|2,{109,50,0}}, +/* 42062 */ {(11<<2)|2,{109,50,0}}, +/* 42063 */ {(11<<2)|2,{109,50,0}}, +/* 42064 */ {(11<<2)|2,{109,50,0}}, +/* 42065 */ {(11<<2)|2,{109,50,0}}, +/* 42066 */ {(11<<2)|2,{109,50,0}}, +/* 42067 */ {(11<<2)|2,{109,50,0}}, +/* 42068 */ {(11<<2)|2,{109,50,0}}, +/* 42069 */ {(11<<2)|2,{109,50,0}}, +/* 42070 */ {(11<<2)|2,{109,50,0}}, +/* 42071 */ {(11<<2)|2,{109,50,0}}, +/* 42072 */ {(11<<2)|2,{109,50,0}}, +/* 42073 */ {(11<<2)|2,{109,50,0}}, +/* 42074 */ {(11<<2)|2,{109,50,0}}, +/* 42075 */ {(11<<2)|2,{109,50,0}}, +/* 42076 */ {(11<<2)|2,{109,50,0}}, +/* 42077 */ {(11<<2)|2,{109,50,0}}, +/* 42078 */ {(11<<2)|2,{109,50,0}}, +/* 42079 */ {(11<<2)|2,{109,50,0}}, +/* 42080 */ {(16<<2)|3,{109,97,48}}, +/* 42081 */ {(16<<2)|3,{109,97,49}}, +/* 42082 */ {(16<<2)|3,{109,97,50}}, +/* 42083 */ {(16<<2)|3,{109,97,97}}, +/* 42084 */ {(16<<2)|3,{109,97,99}}, +/* 42085 */ {(16<<2)|3,{109,97,101}}, +/* 42086 */ {(16<<2)|3,{109,97,105}}, +/* 42087 */ {(16<<2)|3,{109,97,111}}, +/* 42088 */ {(16<<2)|3,{109,97,115}}, +/* 42089 */ {(16<<2)|3,{109,97,116}}, +/* 42090 */ {(11<<2)|2,{109,97,0}}, +/* 42091 */ {(11<<2)|2,{109,97,0}}, +/* 42092 */ {(11<<2)|2,{109,97,0}}, +/* 42093 */ {(11<<2)|2,{109,97,0}}, +/* 42094 */ {(11<<2)|2,{109,97,0}}, +/* 42095 */ {(11<<2)|2,{109,97,0}}, +/* 42096 */ {(11<<2)|2,{109,97,0}}, +/* 42097 */ {(11<<2)|2,{109,97,0}}, +/* 42098 */ {(11<<2)|2,{109,97,0}}, +/* 42099 */ {(11<<2)|2,{109,97,0}}, +/* 42100 */ {(11<<2)|2,{109,97,0}}, +/* 42101 */ {(11<<2)|2,{109,97,0}}, +/* 42102 */ {(11<<2)|2,{109,97,0}}, +/* 42103 */ {(11<<2)|2,{109,97,0}}, +/* 42104 */ {(11<<2)|2,{109,97,0}}, +/* 42105 */ {(11<<2)|2,{109,97,0}}, +/* 42106 */ {(11<<2)|2,{109,97,0}}, +/* 42107 */ {(11<<2)|2,{109,97,0}}, +/* 42108 */ {(11<<2)|2,{109,97,0}}, +/* 42109 */ {(11<<2)|2,{109,97,0}}, +/* 42110 */ {(11<<2)|2,{109,97,0}}, +/* 42111 */ {(11<<2)|2,{109,97,0}}, +/* 42112 */ {(16<<2)|3,{109,99,48}}, +/* 42113 */ {(16<<2)|3,{109,99,49}}, +/* 42114 */ {(16<<2)|3,{109,99,50}}, +/* 42115 */ {(16<<2)|3,{109,99,97}}, +/* 42116 */ {(16<<2)|3,{109,99,99}}, +/* 42117 */ {(16<<2)|3,{109,99,101}}, +/* 42118 */ {(16<<2)|3,{109,99,105}}, +/* 42119 */ {(16<<2)|3,{109,99,111}}, +/* 42120 */ {(16<<2)|3,{109,99,115}}, +/* 42121 */ {(16<<2)|3,{109,99,116}}, +/* 42122 */ {(11<<2)|2,{109,99,0}}, +/* 42123 */ {(11<<2)|2,{109,99,0}}, +/* 42124 */ {(11<<2)|2,{109,99,0}}, +/* 42125 */ {(11<<2)|2,{109,99,0}}, +/* 42126 */ {(11<<2)|2,{109,99,0}}, +/* 42127 */ {(11<<2)|2,{109,99,0}}, +/* 42128 */ {(11<<2)|2,{109,99,0}}, +/* 42129 */ {(11<<2)|2,{109,99,0}}, +/* 42130 */ {(11<<2)|2,{109,99,0}}, +/* 42131 */ {(11<<2)|2,{109,99,0}}, +/* 42132 */ {(11<<2)|2,{109,99,0}}, +/* 42133 */ {(11<<2)|2,{109,99,0}}, +/* 42134 */ {(11<<2)|2,{109,99,0}}, +/* 42135 */ {(11<<2)|2,{109,99,0}}, +/* 42136 */ {(11<<2)|2,{109,99,0}}, +/* 42137 */ {(11<<2)|2,{109,99,0}}, +/* 42138 */ {(11<<2)|2,{109,99,0}}, +/* 42139 */ {(11<<2)|2,{109,99,0}}, +/* 42140 */ {(11<<2)|2,{109,99,0}}, +/* 42141 */ {(11<<2)|2,{109,99,0}}, +/* 42142 */ {(11<<2)|2,{109,99,0}}, +/* 42143 */ {(11<<2)|2,{109,99,0}}, +/* 42144 */ {(16<<2)|3,{109,101,48}}, +/* 42145 */ {(16<<2)|3,{109,101,49}}, +/* 42146 */ {(16<<2)|3,{109,101,50}}, +/* 42147 */ {(16<<2)|3,{109,101,97}}, +/* 42148 */ {(16<<2)|3,{109,101,99}}, +/* 42149 */ {(16<<2)|3,{109,101,101}}, +/* 42150 */ {(16<<2)|3,{109,101,105}}, +/* 42151 */ {(16<<2)|3,{109,101,111}}, +/* 42152 */ {(16<<2)|3,{109,101,115}}, +/* 42153 */ {(16<<2)|3,{109,101,116}}, +/* 42154 */ {(11<<2)|2,{109,101,0}}, +/* 42155 */ {(11<<2)|2,{109,101,0}}, +/* 42156 */ {(11<<2)|2,{109,101,0}}, +/* 42157 */ {(11<<2)|2,{109,101,0}}, +/* 42158 */ {(11<<2)|2,{109,101,0}}, +/* 42159 */ {(11<<2)|2,{109,101,0}}, +/* 42160 */ {(11<<2)|2,{109,101,0}}, +/* 42161 */ {(11<<2)|2,{109,101,0}}, +/* 42162 */ {(11<<2)|2,{109,101,0}}, +/* 42163 */ {(11<<2)|2,{109,101,0}}, +/* 42164 */ {(11<<2)|2,{109,101,0}}, +/* 42165 */ {(11<<2)|2,{109,101,0}}, +/* 42166 */ {(11<<2)|2,{109,101,0}}, +/* 42167 */ {(11<<2)|2,{109,101,0}}, +/* 42168 */ {(11<<2)|2,{109,101,0}}, +/* 42169 */ {(11<<2)|2,{109,101,0}}, +/* 42170 */ {(11<<2)|2,{109,101,0}}, +/* 42171 */ {(11<<2)|2,{109,101,0}}, +/* 42172 */ {(11<<2)|2,{109,101,0}}, +/* 42173 */ {(11<<2)|2,{109,101,0}}, +/* 42174 */ {(11<<2)|2,{109,101,0}}, +/* 42175 */ {(11<<2)|2,{109,101,0}}, +/* 42176 */ {(16<<2)|3,{109,105,48}}, +/* 42177 */ {(16<<2)|3,{109,105,49}}, +/* 42178 */ {(16<<2)|3,{109,105,50}}, +/* 42179 */ {(16<<2)|3,{109,105,97}}, +/* 42180 */ {(16<<2)|3,{109,105,99}}, +/* 42181 */ {(16<<2)|3,{109,105,101}}, +/* 42182 */ {(16<<2)|3,{109,105,105}}, +/* 42183 */ {(16<<2)|3,{109,105,111}}, +/* 42184 */ {(16<<2)|3,{109,105,115}}, +/* 42185 */ {(16<<2)|3,{109,105,116}}, +/* 42186 */ {(11<<2)|2,{109,105,0}}, +/* 42187 */ {(11<<2)|2,{109,105,0}}, +/* 42188 */ {(11<<2)|2,{109,105,0}}, +/* 42189 */ {(11<<2)|2,{109,105,0}}, +/* 42190 */ {(11<<2)|2,{109,105,0}}, +/* 42191 */ {(11<<2)|2,{109,105,0}}, +/* 42192 */ {(11<<2)|2,{109,105,0}}, +/* 42193 */ {(11<<2)|2,{109,105,0}}, +/* 42194 */ {(11<<2)|2,{109,105,0}}, +/* 42195 */ {(11<<2)|2,{109,105,0}}, +/* 42196 */ {(11<<2)|2,{109,105,0}}, +/* 42197 */ {(11<<2)|2,{109,105,0}}, +/* 42198 */ {(11<<2)|2,{109,105,0}}, +/* 42199 */ {(11<<2)|2,{109,105,0}}, +/* 42200 */ {(11<<2)|2,{109,105,0}}, +/* 42201 */ {(11<<2)|2,{109,105,0}}, +/* 42202 */ {(11<<2)|2,{109,105,0}}, +/* 42203 */ {(11<<2)|2,{109,105,0}}, +/* 42204 */ {(11<<2)|2,{109,105,0}}, +/* 42205 */ {(11<<2)|2,{109,105,0}}, +/* 42206 */ {(11<<2)|2,{109,105,0}}, +/* 42207 */ {(11<<2)|2,{109,105,0}}, +/* 42208 */ {(16<<2)|3,{109,111,48}}, +/* 42209 */ {(16<<2)|3,{109,111,49}}, +/* 42210 */ {(16<<2)|3,{109,111,50}}, +/* 42211 */ {(16<<2)|3,{109,111,97}}, +/* 42212 */ {(16<<2)|3,{109,111,99}}, +/* 42213 */ {(16<<2)|3,{109,111,101}}, +/* 42214 */ {(16<<2)|3,{109,111,105}}, +/* 42215 */ {(16<<2)|3,{109,111,111}}, +/* 42216 */ {(16<<2)|3,{109,111,115}}, +/* 42217 */ {(16<<2)|3,{109,111,116}}, +/* 42218 */ {(11<<2)|2,{109,111,0}}, +/* 42219 */ {(11<<2)|2,{109,111,0}}, +/* 42220 */ {(11<<2)|2,{109,111,0}}, +/* 42221 */ {(11<<2)|2,{109,111,0}}, +/* 42222 */ {(11<<2)|2,{109,111,0}}, +/* 42223 */ {(11<<2)|2,{109,111,0}}, +/* 42224 */ {(11<<2)|2,{109,111,0}}, +/* 42225 */ {(11<<2)|2,{109,111,0}}, +/* 42226 */ {(11<<2)|2,{109,111,0}}, +/* 42227 */ {(11<<2)|2,{109,111,0}}, +/* 42228 */ {(11<<2)|2,{109,111,0}}, +/* 42229 */ {(11<<2)|2,{109,111,0}}, +/* 42230 */ {(11<<2)|2,{109,111,0}}, +/* 42231 */ {(11<<2)|2,{109,111,0}}, +/* 42232 */ {(11<<2)|2,{109,111,0}}, +/* 42233 */ {(11<<2)|2,{109,111,0}}, +/* 42234 */ {(11<<2)|2,{109,111,0}}, +/* 42235 */ {(11<<2)|2,{109,111,0}}, +/* 42236 */ {(11<<2)|2,{109,111,0}}, +/* 42237 */ {(11<<2)|2,{109,111,0}}, +/* 42238 */ {(11<<2)|2,{109,111,0}}, +/* 42239 */ {(11<<2)|2,{109,111,0}}, +/* 42240 */ {(16<<2)|3,{109,115,48}}, +/* 42241 */ {(16<<2)|3,{109,115,49}}, +/* 42242 */ {(16<<2)|3,{109,115,50}}, +/* 42243 */ {(16<<2)|3,{109,115,97}}, +/* 42244 */ {(16<<2)|3,{109,115,99}}, +/* 42245 */ {(16<<2)|3,{109,115,101}}, +/* 42246 */ {(16<<2)|3,{109,115,105}}, +/* 42247 */ {(16<<2)|3,{109,115,111}}, +/* 42248 */ {(16<<2)|3,{109,115,115}}, +/* 42249 */ {(16<<2)|3,{109,115,116}}, +/* 42250 */ {(11<<2)|2,{109,115,0}}, +/* 42251 */ {(11<<2)|2,{109,115,0}}, +/* 42252 */ {(11<<2)|2,{109,115,0}}, +/* 42253 */ {(11<<2)|2,{109,115,0}}, +/* 42254 */ {(11<<2)|2,{109,115,0}}, +/* 42255 */ {(11<<2)|2,{109,115,0}}, +/* 42256 */ {(11<<2)|2,{109,115,0}}, +/* 42257 */ {(11<<2)|2,{109,115,0}}, +/* 42258 */ {(11<<2)|2,{109,115,0}}, +/* 42259 */ {(11<<2)|2,{109,115,0}}, +/* 42260 */ {(11<<2)|2,{109,115,0}}, +/* 42261 */ {(11<<2)|2,{109,115,0}}, +/* 42262 */ {(11<<2)|2,{109,115,0}}, +/* 42263 */ {(11<<2)|2,{109,115,0}}, +/* 42264 */ {(11<<2)|2,{109,115,0}}, +/* 42265 */ {(11<<2)|2,{109,115,0}}, +/* 42266 */ {(11<<2)|2,{109,115,0}}, +/* 42267 */ {(11<<2)|2,{109,115,0}}, +/* 42268 */ {(11<<2)|2,{109,115,0}}, +/* 42269 */ {(11<<2)|2,{109,115,0}}, +/* 42270 */ {(11<<2)|2,{109,115,0}}, +/* 42271 */ {(11<<2)|2,{109,115,0}}, +/* 42272 */ {(16<<2)|3,{109,116,48}}, +/* 42273 */ {(16<<2)|3,{109,116,49}}, +/* 42274 */ {(16<<2)|3,{109,116,50}}, +/* 42275 */ {(16<<2)|3,{109,116,97}}, +/* 42276 */ {(16<<2)|3,{109,116,99}}, +/* 42277 */ {(16<<2)|3,{109,116,101}}, +/* 42278 */ {(16<<2)|3,{109,116,105}}, +/* 42279 */ {(16<<2)|3,{109,116,111}}, +/* 42280 */ {(16<<2)|3,{109,116,115}}, +/* 42281 */ {(16<<2)|3,{109,116,116}}, +/* 42282 */ {(11<<2)|2,{109,116,0}}, +/* 42283 */ {(11<<2)|2,{109,116,0}}, +/* 42284 */ {(11<<2)|2,{109,116,0}}, +/* 42285 */ {(11<<2)|2,{109,116,0}}, +/* 42286 */ {(11<<2)|2,{109,116,0}}, +/* 42287 */ {(11<<2)|2,{109,116,0}}, +/* 42288 */ {(11<<2)|2,{109,116,0}}, +/* 42289 */ {(11<<2)|2,{109,116,0}}, +/* 42290 */ {(11<<2)|2,{109,116,0}}, +/* 42291 */ {(11<<2)|2,{109,116,0}}, +/* 42292 */ {(11<<2)|2,{109,116,0}}, +/* 42293 */ {(11<<2)|2,{109,116,0}}, +/* 42294 */ {(11<<2)|2,{109,116,0}}, +/* 42295 */ {(11<<2)|2,{109,116,0}}, +/* 42296 */ {(11<<2)|2,{109,116,0}}, +/* 42297 */ {(11<<2)|2,{109,116,0}}, +/* 42298 */ {(11<<2)|2,{109,116,0}}, +/* 42299 */ {(11<<2)|2,{109,116,0}}, +/* 42300 */ {(11<<2)|2,{109,116,0}}, +/* 42301 */ {(11<<2)|2,{109,116,0}}, +/* 42302 */ {(11<<2)|2,{109,116,0}}, +/* 42303 */ {(11<<2)|2,{109,116,0}}, +/* 42304 */ {(12<<2)|2,{109,32,0}}, +/* 42305 */ {(12<<2)|2,{109,32,0}}, +/* 42306 */ {(12<<2)|2,{109,32,0}}, +/* 42307 */ {(12<<2)|2,{109,32,0}}, +/* 42308 */ {(12<<2)|2,{109,32,0}}, +/* 42309 */ {(12<<2)|2,{109,32,0}}, +/* 42310 */ {(12<<2)|2,{109,32,0}}, +/* 42311 */ {(12<<2)|2,{109,32,0}}, +/* 42312 */ {(12<<2)|2,{109,32,0}}, +/* 42313 */ {(12<<2)|2,{109,32,0}}, +/* 42314 */ {(12<<2)|2,{109,32,0}}, +/* 42315 */ {(12<<2)|2,{109,32,0}}, +/* 42316 */ {(12<<2)|2,{109,32,0}}, +/* 42317 */ {(12<<2)|2,{109,32,0}}, +/* 42318 */ {(12<<2)|2,{109,32,0}}, +/* 42319 */ {(12<<2)|2,{109,32,0}}, +/* 42320 */ {(12<<2)|2,{109,37,0}}, +/* 42321 */ {(12<<2)|2,{109,37,0}}, +/* 42322 */ {(12<<2)|2,{109,37,0}}, +/* 42323 */ {(12<<2)|2,{109,37,0}}, +/* 42324 */ {(12<<2)|2,{109,37,0}}, +/* 42325 */ {(12<<2)|2,{109,37,0}}, +/* 42326 */ {(12<<2)|2,{109,37,0}}, +/* 42327 */ {(12<<2)|2,{109,37,0}}, +/* 42328 */ {(12<<2)|2,{109,37,0}}, +/* 42329 */ {(12<<2)|2,{109,37,0}}, +/* 42330 */ {(12<<2)|2,{109,37,0}}, +/* 42331 */ {(12<<2)|2,{109,37,0}}, +/* 42332 */ {(12<<2)|2,{109,37,0}}, +/* 42333 */ {(12<<2)|2,{109,37,0}}, +/* 42334 */ {(12<<2)|2,{109,37,0}}, +/* 42335 */ {(12<<2)|2,{109,37,0}}, +/* 42336 */ {(12<<2)|2,{109,45,0}}, +/* 42337 */ {(12<<2)|2,{109,45,0}}, +/* 42338 */ {(12<<2)|2,{109,45,0}}, +/* 42339 */ {(12<<2)|2,{109,45,0}}, +/* 42340 */ {(12<<2)|2,{109,45,0}}, +/* 42341 */ {(12<<2)|2,{109,45,0}}, +/* 42342 */ {(12<<2)|2,{109,45,0}}, +/* 42343 */ {(12<<2)|2,{109,45,0}}, +/* 42344 */ {(12<<2)|2,{109,45,0}}, +/* 42345 */ {(12<<2)|2,{109,45,0}}, +/* 42346 */ {(12<<2)|2,{109,45,0}}, +/* 42347 */ {(12<<2)|2,{109,45,0}}, +/* 42348 */ {(12<<2)|2,{109,45,0}}, +/* 42349 */ {(12<<2)|2,{109,45,0}}, +/* 42350 */ {(12<<2)|2,{109,45,0}}, +/* 42351 */ {(12<<2)|2,{109,45,0}}, +/* 42352 */ {(12<<2)|2,{109,46,0}}, +/* 42353 */ {(12<<2)|2,{109,46,0}}, +/* 42354 */ {(12<<2)|2,{109,46,0}}, +/* 42355 */ {(12<<2)|2,{109,46,0}}, +/* 42356 */ {(12<<2)|2,{109,46,0}}, +/* 42357 */ {(12<<2)|2,{109,46,0}}, +/* 42358 */ {(12<<2)|2,{109,46,0}}, +/* 42359 */ {(12<<2)|2,{109,46,0}}, +/* 42360 */ {(12<<2)|2,{109,46,0}}, +/* 42361 */ {(12<<2)|2,{109,46,0}}, +/* 42362 */ {(12<<2)|2,{109,46,0}}, +/* 42363 */ {(12<<2)|2,{109,46,0}}, +/* 42364 */ {(12<<2)|2,{109,46,0}}, +/* 42365 */ {(12<<2)|2,{109,46,0}}, +/* 42366 */ {(12<<2)|2,{109,46,0}}, +/* 42367 */ {(12<<2)|2,{109,46,0}}, +/* 42368 */ {(12<<2)|2,{109,47,0}}, +/* 42369 */ {(12<<2)|2,{109,47,0}}, +/* 42370 */ {(12<<2)|2,{109,47,0}}, +/* 42371 */ {(12<<2)|2,{109,47,0}}, +/* 42372 */ {(12<<2)|2,{109,47,0}}, +/* 42373 */ {(12<<2)|2,{109,47,0}}, +/* 42374 */ {(12<<2)|2,{109,47,0}}, +/* 42375 */ {(12<<2)|2,{109,47,0}}, +/* 42376 */ {(12<<2)|2,{109,47,0}}, +/* 42377 */ {(12<<2)|2,{109,47,0}}, +/* 42378 */ {(12<<2)|2,{109,47,0}}, +/* 42379 */ {(12<<2)|2,{109,47,0}}, +/* 42380 */ {(12<<2)|2,{109,47,0}}, +/* 42381 */ {(12<<2)|2,{109,47,0}}, +/* 42382 */ {(12<<2)|2,{109,47,0}}, +/* 42383 */ {(12<<2)|2,{109,47,0}}, +/* 42384 */ {(12<<2)|2,{109,51,0}}, +/* 42385 */ {(12<<2)|2,{109,51,0}}, +/* 42386 */ {(12<<2)|2,{109,51,0}}, +/* 42387 */ {(12<<2)|2,{109,51,0}}, +/* 42388 */ {(12<<2)|2,{109,51,0}}, +/* 42389 */ {(12<<2)|2,{109,51,0}}, +/* 42390 */ {(12<<2)|2,{109,51,0}}, +/* 42391 */ {(12<<2)|2,{109,51,0}}, +/* 42392 */ {(12<<2)|2,{109,51,0}}, +/* 42393 */ {(12<<2)|2,{109,51,0}}, +/* 42394 */ {(12<<2)|2,{109,51,0}}, +/* 42395 */ {(12<<2)|2,{109,51,0}}, +/* 42396 */ {(12<<2)|2,{109,51,0}}, +/* 42397 */ {(12<<2)|2,{109,51,0}}, +/* 42398 */ {(12<<2)|2,{109,51,0}}, +/* 42399 */ {(12<<2)|2,{109,51,0}}, +/* 42400 */ {(12<<2)|2,{109,52,0}}, +/* 42401 */ {(12<<2)|2,{109,52,0}}, +/* 42402 */ {(12<<2)|2,{109,52,0}}, +/* 42403 */ {(12<<2)|2,{109,52,0}}, +/* 42404 */ {(12<<2)|2,{109,52,0}}, +/* 42405 */ {(12<<2)|2,{109,52,0}}, +/* 42406 */ {(12<<2)|2,{109,52,0}}, +/* 42407 */ {(12<<2)|2,{109,52,0}}, +/* 42408 */ {(12<<2)|2,{109,52,0}}, +/* 42409 */ {(12<<2)|2,{109,52,0}}, +/* 42410 */ {(12<<2)|2,{109,52,0}}, +/* 42411 */ {(12<<2)|2,{109,52,0}}, +/* 42412 */ {(12<<2)|2,{109,52,0}}, +/* 42413 */ {(12<<2)|2,{109,52,0}}, +/* 42414 */ {(12<<2)|2,{109,52,0}}, +/* 42415 */ {(12<<2)|2,{109,52,0}}, +/* 42416 */ {(12<<2)|2,{109,53,0}}, +/* 42417 */ {(12<<2)|2,{109,53,0}}, +/* 42418 */ {(12<<2)|2,{109,53,0}}, +/* 42419 */ {(12<<2)|2,{109,53,0}}, +/* 42420 */ {(12<<2)|2,{109,53,0}}, +/* 42421 */ {(12<<2)|2,{109,53,0}}, +/* 42422 */ {(12<<2)|2,{109,53,0}}, +/* 42423 */ {(12<<2)|2,{109,53,0}}, +/* 42424 */ {(12<<2)|2,{109,53,0}}, +/* 42425 */ {(12<<2)|2,{109,53,0}}, +/* 42426 */ {(12<<2)|2,{109,53,0}}, +/* 42427 */ {(12<<2)|2,{109,53,0}}, +/* 42428 */ {(12<<2)|2,{109,53,0}}, +/* 42429 */ {(12<<2)|2,{109,53,0}}, +/* 42430 */ {(12<<2)|2,{109,53,0}}, +/* 42431 */ {(12<<2)|2,{109,53,0}}, +/* 42432 */ {(12<<2)|2,{109,54,0}}, +/* 42433 */ {(12<<2)|2,{109,54,0}}, +/* 42434 */ {(12<<2)|2,{109,54,0}}, +/* 42435 */ {(12<<2)|2,{109,54,0}}, +/* 42436 */ {(12<<2)|2,{109,54,0}}, +/* 42437 */ {(12<<2)|2,{109,54,0}}, +/* 42438 */ {(12<<2)|2,{109,54,0}}, +/* 42439 */ {(12<<2)|2,{109,54,0}}, +/* 42440 */ {(12<<2)|2,{109,54,0}}, +/* 42441 */ {(12<<2)|2,{109,54,0}}, +/* 42442 */ {(12<<2)|2,{109,54,0}}, +/* 42443 */ {(12<<2)|2,{109,54,0}}, +/* 42444 */ {(12<<2)|2,{109,54,0}}, +/* 42445 */ {(12<<2)|2,{109,54,0}}, +/* 42446 */ {(12<<2)|2,{109,54,0}}, +/* 42447 */ {(12<<2)|2,{109,54,0}}, +/* 42448 */ {(12<<2)|2,{109,55,0}}, +/* 42449 */ {(12<<2)|2,{109,55,0}}, +/* 42450 */ {(12<<2)|2,{109,55,0}}, +/* 42451 */ {(12<<2)|2,{109,55,0}}, +/* 42452 */ {(12<<2)|2,{109,55,0}}, +/* 42453 */ {(12<<2)|2,{109,55,0}}, +/* 42454 */ {(12<<2)|2,{109,55,0}}, +/* 42455 */ {(12<<2)|2,{109,55,0}}, +/* 42456 */ {(12<<2)|2,{109,55,0}}, +/* 42457 */ {(12<<2)|2,{109,55,0}}, +/* 42458 */ {(12<<2)|2,{109,55,0}}, +/* 42459 */ {(12<<2)|2,{109,55,0}}, +/* 42460 */ {(12<<2)|2,{109,55,0}}, +/* 42461 */ {(12<<2)|2,{109,55,0}}, +/* 42462 */ {(12<<2)|2,{109,55,0}}, +/* 42463 */ {(12<<2)|2,{109,55,0}}, +/* 42464 */ {(12<<2)|2,{109,56,0}}, +/* 42465 */ {(12<<2)|2,{109,56,0}}, +/* 42466 */ {(12<<2)|2,{109,56,0}}, +/* 42467 */ {(12<<2)|2,{109,56,0}}, +/* 42468 */ {(12<<2)|2,{109,56,0}}, +/* 42469 */ {(12<<2)|2,{109,56,0}}, +/* 42470 */ {(12<<2)|2,{109,56,0}}, +/* 42471 */ {(12<<2)|2,{109,56,0}}, +/* 42472 */ {(12<<2)|2,{109,56,0}}, +/* 42473 */ {(12<<2)|2,{109,56,0}}, +/* 42474 */ {(12<<2)|2,{109,56,0}}, +/* 42475 */ {(12<<2)|2,{109,56,0}}, +/* 42476 */ {(12<<2)|2,{109,56,0}}, +/* 42477 */ {(12<<2)|2,{109,56,0}}, +/* 42478 */ {(12<<2)|2,{109,56,0}}, +/* 42479 */ {(12<<2)|2,{109,56,0}}, +/* 42480 */ {(12<<2)|2,{109,57,0}}, +/* 42481 */ {(12<<2)|2,{109,57,0}}, +/* 42482 */ {(12<<2)|2,{109,57,0}}, +/* 42483 */ {(12<<2)|2,{109,57,0}}, +/* 42484 */ {(12<<2)|2,{109,57,0}}, +/* 42485 */ {(12<<2)|2,{109,57,0}}, +/* 42486 */ {(12<<2)|2,{109,57,0}}, +/* 42487 */ {(12<<2)|2,{109,57,0}}, +/* 42488 */ {(12<<2)|2,{109,57,0}}, +/* 42489 */ {(12<<2)|2,{109,57,0}}, +/* 42490 */ {(12<<2)|2,{109,57,0}}, +/* 42491 */ {(12<<2)|2,{109,57,0}}, +/* 42492 */ {(12<<2)|2,{109,57,0}}, +/* 42493 */ {(12<<2)|2,{109,57,0}}, +/* 42494 */ {(12<<2)|2,{109,57,0}}, +/* 42495 */ {(12<<2)|2,{109,57,0}}, +/* 42496 */ {(12<<2)|2,{109,61,0}}, +/* 42497 */ {(12<<2)|2,{109,61,0}}, +/* 42498 */ {(12<<2)|2,{109,61,0}}, +/* 42499 */ {(12<<2)|2,{109,61,0}}, +/* 42500 */ {(12<<2)|2,{109,61,0}}, +/* 42501 */ {(12<<2)|2,{109,61,0}}, +/* 42502 */ {(12<<2)|2,{109,61,0}}, +/* 42503 */ {(12<<2)|2,{109,61,0}}, +/* 42504 */ {(12<<2)|2,{109,61,0}}, +/* 42505 */ {(12<<2)|2,{109,61,0}}, +/* 42506 */ {(12<<2)|2,{109,61,0}}, +/* 42507 */ {(12<<2)|2,{109,61,0}}, +/* 42508 */ {(12<<2)|2,{109,61,0}}, +/* 42509 */ {(12<<2)|2,{109,61,0}}, +/* 42510 */ {(12<<2)|2,{109,61,0}}, +/* 42511 */ {(12<<2)|2,{109,61,0}}, +/* 42512 */ {(12<<2)|2,{109,65,0}}, +/* 42513 */ {(12<<2)|2,{109,65,0}}, +/* 42514 */ {(12<<2)|2,{109,65,0}}, +/* 42515 */ {(12<<2)|2,{109,65,0}}, +/* 42516 */ {(12<<2)|2,{109,65,0}}, +/* 42517 */ {(12<<2)|2,{109,65,0}}, +/* 42518 */ {(12<<2)|2,{109,65,0}}, +/* 42519 */ {(12<<2)|2,{109,65,0}}, +/* 42520 */ {(12<<2)|2,{109,65,0}}, +/* 42521 */ {(12<<2)|2,{109,65,0}}, +/* 42522 */ {(12<<2)|2,{109,65,0}}, +/* 42523 */ {(12<<2)|2,{109,65,0}}, +/* 42524 */ {(12<<2)|2,{109,65,0}}, +/* 42525 */ {(12<<2)|2,{109,65,0}}, +/* 42526 */ {(12<<2)|2,{109,65,0}}, +/* 42527 */ {(12<<2)|2,{109,65,0}}, +/* 42528 */ {(12<<2)|2,{109,95,0}}, +/* 42529 */ {(12<<2)|2,{109,95,0}}, +/* 42530 */ {(12<<2)|2,{109,95,0}}, +/* 42531 */ {(12<<2)|2,{109,95,0}}, +/* 42532 */ {(12<<2)|2,{109,95,0}}, +/* 42533 */ {(12<<2)|2,{109,95,0}}, +/* 42534 */ {(12<<2)|2,{109,95,0}}, +/* 42535 */ {(12<<2)|2,{109,95,0}}, +/* 42536 */ {(12<<2)|2,{109,95,0}}, +/* 42537 */ {(12<<2)|2,{109,95,0}}, +/* 42538 */ {(12<<2)|2,{109,95,0}}, +/* 42539 */ {(12<<2)|2,{109,95,0}}, +/* 42540 */ {(12<<2)|2,{109,95,0}}, +/* 42541 */ {(12<<2)|2,{109,95,0}}, +/* 42542 */ {(12<<2)|2,{109,95,0}}, +/* 42543 */ {(12<<2)|2,{109,95,0}}, +/* 42544 */ {(12<<2)|2,{109,98,0}}, +/* 42545 */ {(12<<2)|2,{109,98,0}}, +/* 42546 */ {(12<<2)|2,{109,98,0}}, +/* 42547 */ {(12<<2)|2,{109,98,0}}, +/* 42548 */ {(12<<2)|2,{109,98,0}}, +/* 42549 */ {(12<<2)|2,{109,98,0}}, +/* 42550 */ {(12<<2)|2,{109,98,0}}, +/* 42551 */ {(12<<2)|2,{109,98,0}}, +/* 42552 */ {(12<<2)|2,{109,98,0}}, +/* 42553 */ {(12<<2)|2,{109,98,0}}, +/* 42554 */ {(12<<2)|2,{109,98,0}}, +/* 42555 */ {(12<<2)|2,{109,98,0}}, +/* 42556 */ {(12<<2)|2,{109,98,0}}, +/* 42557 */ {(12<<2)|2,{109,98,0}}, +/* 42558 */ {(12<<2)|2,{109,98,0}}, +/* 42559 */ {(12<<2)|2,{109,98,0}}, +/* 42560 */ {(12<<2)|2,{109,100,0}}, +/* 42561 */ {(12<<2)|2,{109,100,0}}, +/* 42562 */ {(12<<2)|2,{109,100,0}}, +/* 42563 */ {(12<<2)|2,{109,100,0}}, +/* 42564 */ {(12<<2)|2,{109,100,0}}, +/* 42565 */ {(12<<2)|2,{109,100,0}}, +/* 42566 */ {(12<<2)|2,{109,100,0}}, +/* 42567 */ {(12<<2)|2,{109,100,0}}, +/* 42568 */ {(12<<2)|2,{109,100,0}}, +/* 42569 */ {(12<<2)|2,{109,100,0}}, +/* 42570 */ {(12<<2)|2,{109,100,0}}, +/* 42571 */ {(12<<2)|2,{109,100,0}}, +/* 42572 */ {(12<<2)|2,{109,100,0}}, +/* 42573 */ {(12<<2)|2,{109,100,0}}, +/* 42574 */ {(12<<2)|2,{109,100,0}}, +/* 42575 */ {(12<<2)|2,{109,100,0}}, +/* 42576 */ {(12<<2)|2,{109,102,0}}, +/* 42577 */ {(12<<2)|2,{109,102,0}}, +/* 42578 */ {(12<<2)|2,{109,102,0}}, +/* 42579 */ {(12<<2)|2,{109,102,0}}, +/* 42580 */ {(12<<2)|2,{109,102,0}}, +/* 42581 */ {(12<<2)|2,{109,102,0}}, +/* 42582 */ {(12<<2)|2,{109,102,0}}, +/* 42583 */ {(12<<2)|2,{109,102,0}}, +/* 42584 */ {(12<<2)|2,{109,102,0}}, +/* 42585 */ {(12<<2)|2,{109,102,0}}, +/* 42586 */ {(12<<2)|2,{109,102,0}}, +/* 42587 */ {(12<<2)|2,{109,102,0}}, +/* 42588 */ {(12<<2)|2,{109,102,0}}, +/* 42589 */ {(12<<2)|2,{109,102,0}}, +/* 42590 */ {(12<<2)|2,{109,102,0}}, +/* 42591 */ {(12<<2)|2,{109,102,0}}, +/* 42592 */ {(12<<2)|2,{109,103,0}}, +/* 42593 */ {(12<<2)|2,{109,103,0}}, +/* 42594 */ {(12<<2)|2,{109,103,0}}, +/* 42595 */ {(12<<2)|2,{109,103,0}}, +/* 42596 */ {(12<<2)|2,{109,103,0}}, +/* 42597 */ {(12<<2)|2,{109,103,0}}, +/* 42598 */ {(12<<2)|2,{109,103,0}}, +/* 42599 */ {(12<<2)|2,{109,103,0}}, +/* 42600 */ {(12<<2)|2,{109,103,0}}, +/* 42601 */ {(12<<2)|2,{109,103,0}}, +/* 42602 */ {(12<<2)|2,{109,103,0}}, +/* 42603 */ {(12<<2)|2,{109,103,0}}, +/* 42604 */ {(12<<2)|2,{109,103,0}}, +/* 42605 */ {(12<<2)|2,{109,103,0}}, +/* 42606 */ {(12<<2)|2,{109,103,0}}, +/* 42607 */ {(12<<2)|2,{109,103,0}}, +/* 42608 */ {(12<<2)|2,{109,104,0}}, +/* 42609 */ {(12<<2)|2,{109,104,0}}, +/* 42610 */ {(12<<2)|2,{109,104,0}}, +/* 42611 */ {(12<<2)|2,{109,104,0}}, +/* 42612 */ {(12<<2)|2,{109,104,0}}, +/* 42613 */ {(12<<2)|2,{109,104,0}}, +/* 42614 */ {(12<<2)|2,{109,104,0}}, +/* 42615 */ {(12<<2)|2,{109,104,0}}, +/* 42616 */ {(12<<2)|2,{109,104,0}}, +/* 42617 */ {(12<<2)|2,{109,104,0}}, +/* 42618 */ {(12<<2)|2,{109,104,0}}, +/* 42619 */ {(12<<2)|2,{109,104,0}}, +/* 42620 */ {(12<<2)|2,{109,104,0}}, +/* 42621 */ {(12<<2)|2,{109,104,0}}, +/* 42622 */ {(12<<2)|2,{109,104,0}}, +/* 42623 */ {(12<<2)|2,{109,104,0}}, +/* 42624 */ {(12<<2)|2,{109,108,0}}, +/* 42625 */ {(12<<2)|2,{109,108,0}}, +/* 42626 */ {(12<<2)|2,{109,108,0}}, +/* 42627 */ {(12<<2)|2,{109,108,0}}, +/* 42628 */ {(12<<2)|2,{109,108,0}}, +/* 42629 */ {(12<<2)|2,{109,108,0}}, +/* 42630 */ {(12<<2)|2,{109,108,0}}, +/* 42631 */ {(12<<2)|2,{109,108,0}}, +/* 42632 */ {(12<<2)|2,{109,108,0}}, +/* 42633 */ {(12<<2)|2,{109,108,0}}, +/* 42634 */ {(12<<2)|2,{109,108,0}}, +/* 42635 */ {(12<<2)|2,{109,108,0}}, +/* 42636 */ {(12<<2)|2,{109,108,0}}, +/* 42637 */ {(12<<2)|2,{109,108,0}}, +/* 42638 */ {(12<<2)|2,{109,108,0}}, +/* 42639 */ {(12<<2)|2,{109,108,0}}, +/* 42640 */ {(12<<2)|2,{109,109,0}}, +/* 42641 */ {(12<<2)|2,{109,109,0}}, +/* 42642 */ {(12<<2)|2,{109,109,0}}, +/* 42643 */ {(12<<2)|2,{109,109,0}}, +/* 42644 */ {(12<<2)|2,{109,109,0}}, +/* 42645 */ {(12<<2)|2,{109,109,0}}, +/* 42646 */ {(12<<2)|2,{109,109,0}}, +/* 42647 */ {(12<<2)|2,{109,109,0}}, +/* 42648 */ {(12<<2)|2,{109,109,0}}, +/* 42649 */ {(12<<2)|2,{109,109,0}}, +/* 42650 */ {(12<<2)|2,{109,109,0}}, +/* 42651 */ {(12<<2)|2,{109,109,0}}, +/* 42652 */ {(12<<2)|2,{109,109,0}}, +/* 42653 */ {(12<<2)|2,{109,109,0}}, +/* 42654 */ {(12<<2)|2,{109,109,0}}, +/* 42655 */ {(12<<2)|2,{109,109,0}}, +/* 42656 */ {(12<<2)|2,{109,110,0}}, +/* 42657 */ {(12<<2)|2,{109,110,0}}, +/* 42658 */ {(12<<2)|2,{109,110,0}}, +/* 42659 */ {(12<<2)|2,{109,110,0}}, +/* 42660 */ {(12<<2)|2,{109,110,0}}, +/* 42661 */ {(12<<2)|2,{109,110,0}}, +/* 42662 */ {(12<<2)|2,{109,110,0}}, +/* 42663 */ {(12<<2)|2,{109,110,0}}, +/* 42664 */ {(12<<2)|2,{109,110,0}}, +/* 42665 */ {(12<<2)|2,{109,110,0}}, +/* 42666 */ {(12<<2)|2,{109,110,0}}, +/* 42667 */ {(12<<2)|2,{109,110,0}}, +/* 42668 */ {(12<<2)|2,{109,110,0}}, +/* 42669 */ {(12<<2)|2,{109,110,0}}, +/* 42670 */ {(12<<2)|2,{109,110,0}}, +/* 42671 */ {(12<<2)|2,{109,110,0}}, +/* 42672 */ {(12<<2)|2,{109,112,0}}, +/* 42673 */ {(12<<2)|2,{109,112,0}}, +/* 42674 */ {(12<<2)|2,{109,112,0}}, +/* 42675 */ {(12<<2)|2,{109,112,0}}, +/* 42676 */ {(12<<2)|2,{109,112,0}}, +/* 42677 */ {(12<<2)|2,{109,112,0}}, +/* 42678 */ {(12<<2)|2,{109,112,0}}, +/* 42679 */ {(12<<2)|2,{109,112,0}}, +/* 42680 */ {(12<<2)|2,{109,112,0}}, +/* 42681 */ {(12<<2)|2,{109,112,0}}, +/* 42682 */ {(12<<2)|2,{109,112,0}}, +/* 42683 */ {(12<<2)|2,{109,112,0}}, +/* 42684 */ {(12<<2)|2,{109,112,0}}, +/* 42685 */ {(12<<2)|2,{109,112,0}}, +/* 42686 */ {(12<<2)|2,{109,112,0}}, +/* 42687 */ {(12<<2)|2,{109,112,0}}, +/* 42688 */ {(12<<2)|2,{109,114,0}}, +/* 42689 */ {(12<<2)|2,{109,114,0}}, +/* 42690 */ {(12<<2)|2,{109,114,0}}, +/* 42691 */ {(12<<2)|2,{109,114,0}}, +/* 42692 */ {(12<<2)|2,{109,114,0}}, +/* 42693 */ {(12<<2)|2,{109,114,0}}, +/* 42694 */ {(12<<2)|2,{109,114,0}}, +/* 42695 */ {(12<<2)|2,{109,114,0}}, +/* 42696 */ {(12<<2)|2,{109,114,0}}, +/* 42697 */ {(12<<2)|2,{109,114,0}}, +/* 42698 */ {(12<<2)|2,{109,114,0}}, +/* 42699 */ {(12<<2)|2,{109,114,0}}, +/* 42700 */ {(12<<2)|2,{109,114,0}}, +/* 42701 */ {(12<<2)|2,{109,114,0}}, +/* 42702 */ {(12<<2)|2,{109,114,0}}, +/* 42703 */ {(12<<2)|2,{109,114,0}}, +/* 42704 */ {(12<<2)|2,{109,117,0}}, +/* 42705 */ {(12<<2)|2,{109,117,0}}, +/* 42706 */ {(12<<2)|2,{109,117,0}}, +/* 42707 */ {(12<<2)|2,{109,117,0}}, +/* 42708 */ {(12<<2)|2,{109,117,0}}, +/* 42709 */ {(12<<2)|2,{109,117,0}}, +/* 42710 */ {(12<<2)|2,{109,117,0}}, +/* 42711 */ {(12<<2)|2,{109,117,0}}, +/* 42712 */ {(12<<2)|2,{109,117,0}}, +/* 42713 */ {(12<<2)|2,{109,117,0}}, +/* 42714 */ {(12<<2)|2,{109,117,0}}, +/* 42715 */ {(12<<2)|2,{109,117,0}}, +/* 42716 */ {(12<<2)|2,{109,117,0}}, +/* 42717 */ {(12<<2)|2,{109,117,0}}, +/* 42718 */ {(12<<2)|2,{109,117,0}}, +/* 42719 */ {(12<<2)|2,{109,117,0}}, +/* 42720 */ {(13<<2)|2,{109,58,0}}, +/* 42721 */ {(13<<2)|2,{109,58,0}}, +/* 42722 */ {(13<<2)|2,{109,58,0}}, +/* 42723 */ {(13<<2)|2,{109,58,0}}, +/* 42724 */ {(13<<2)|2,{109,58,0}}, +/* 42725 */ {(13<<2)|2,{109,58,0}}, +/* 42726 */ {(13<<2)|2,{109,58,0}}, +/* 42727 */ {(13<<2)|2,{109,58,0}}, +/* 42728 */ {(13<<2)|2,{109,66,0}}, +/* 42729 */ {(13<<2)|2,{109,66,0}}, +/* 42730 */ {(13<<2)|2,{109,66,0}}, +/* 42731 */ {(13<<2)|2,{109,66,0}}, +/* 42732 */ {(13<<2)|2,{109,66,0}}, +/* 42733 */ {(13<<2)|2,{109,66,0}}, +/* 42734 */ {(13<<2)|2,{109,66,0}}, +/* 42735 */ {(13<<2)|2,{109,66,0}}, +/* 42736 */ {(13<<2)|2,{109,67,0}}, +/* 42737 */ {(13<<2)|2,{109,67,0}}, +/* 42738 */ {(13<<2)|2,{109,67,0}}, +/* 42739 */ {(13<<2)|2,{109,67,0}}, +/* 42740 */ {(13<<2)|2,{109,67,0}}, +/* 42741 */ {(13<<2)|2,{109,67,0}}, +/* 42742 */ {(13<<2)|2,{109,67,0}}, +/* 42743 */ {(13<<2)|2,{109,67,0}}, +/* 42744 */ {(13<<2)|2,{109,68,0}}, +/* 42745 */ {(13<<2)|2,{109,68,0}}, +/* 42746 */ {(13<<2)|2,{109,68,0}}, +/* 42747 */ {(13<<2)|2,{109,68,0}}, +/* 42748 */ {(13<<2)|2,{109,68,0}}, +/* 42749 */ {(13<<2)|2,{109,68,0}}, +/* 42750 */ {(13<<2)|2,{109,68,0}}, +/* 42751 */ {(13<<2)|2,{109,68,0}}, +/* 42752 */ {(13<<2)|2,{109,69,0}}, +/* 42753 */ {(13<<2)|2,{109,69,0}}, +/* 42754 */ {(13<<2)|2,{109,69,0}}, +/* 42755 */ {(13<<2)|2,{109,69,0}}, +/* 42756 */ {(13<<2)|2,{109,69,0}}, +/* 42757 */ {(13<<2)|2,{109,69,0}}, +/* 42758 */ {(13<<2)|2,{109,69,0}}, +/* 42759 */ {(13<<2)|2,{109,69,0}}, +/* 42760 */ {(13<<2)|2,{109,70,0}}, +/* 42761 */ {(13<<2)|2,{109,70,0}}, +/* 42762 */ {(13<<2)|2,{109,70,0}}, +/* 42763 */ {(13<<2)|2,{109,70,0}}, +/* 42764 */ {(13<<2)|2,{109,70,0}}, +/* 42765 */ {(13<<2)|2,{109,70,0}}, +/* 42766 */ {(13<<2)|2,{109,70,0}}, +/* 42767 */ {(13<<2)|2,{109,70,0}}, +/* 42768 */ {(13<<2)|2,{109,71,0}}, +/* 42769 */ {(13<<2)|2,{109,71,0}}, +/* 42770 */ {(13<<2)|2,{109,71,0}}, +/* 42771 */ {(13<<2)|2,{109,71,0}}, +/* 42772 */ {(13<<2)|2,{109,71,0}}, +/* 42773 */ {(13<<2)|2,{109,71,0}}, +/* 42774 */ {(13<<2)|2,{109,71,0}}, +/* 42775 */ {(13<<2)|2,{109,71,0}}, +/* 42776 */ {(13<<2)|2,{109,72,0}}, +/* 42777 */ {(13<<2)|2,{109,72,0}}, +/* 42778 */ {(13<<2)|2,{109,72,0}}, +/* 42779 */ {(13<<2)|2,{109,72,0}}, +/* 42780 */ {(13<<2)|2,{109,72,0}}, +/* 42781 */ {(13<<2)|2,{109,72,0}}, +/* 42782 */ {(13<<2)|2,{109,72,0}}, +/* 42783 */ {(13<<2)|2,{109,72,0}}, +/* 42784 */ {(13<<2)|2,{109,73,0}}, +/* 42785 */ {(13<<2)|2,{109,73,0}}, +/* 42786 */ {(13<<2)|2,{109,73,0}}, +/* 42787 */ {(13<<2)|2,{109,73,0}}, +/* 42788 */ {(13<<2)|2,{109,73,0}}, +/* 42789 */ {(13<<2)|2,{109,73,0}}, +/* 42790 */ {(13<<2)|2,{109,73,0}}, +/* 42791 */ {(13<<2)|2,{109,73,0}}, +/* 42792 */ {(13<<2)|2,{109,74,0}}, +/* 42793 */ {(13<<2)|2,{109,74,0}}, +/* 42794 */ {(13<<2)|2,{109,74,0}}, +/* 42795 */ {(13<<2)|2,{109,74,0}}, +/* 42796 */ {(13<<2)|2,{109,74,0}}, +/* 42797 */ {(13<<2)|2,{109,74,0}}, +/* 42798 */ {(13<<2)|2,{109,74,0}}, +/* 42799 */ {(13<<2)|2,{109,74,0}}, +/* 42800 */ {(13<<2)|2,{109,75,0}}, +/* 42801 */ {(13<<2)|2,{109,75,0}}, +/* 42802 */ {(13<<2)|2,{109,75,0}}, +/* 42803 */ {(13<<2)|2,{109,75,0}}, +/* 42804 */ {(13<<2)|2,{109,75,0}}, +/* 42805 */ {(13<<2)|2,{109,75,0}}, +/* 42806 */ {(13<<2)|2,{109,75,0}}, +/* 42807 */ {(13<<2)|2,{109,75,0}}, +/* 42808 */ {(13<<2)|2,{109,76,0}}, +/* 42809 */ {(13<<2)|2,{109,76,0}}, +/* 42810 */ {(13<<2)|2,{109,76,0}}, +/* 42811 */ {(13<<2)|2,{109,76,0}}, +/* 42812 */ {(13<<2)|2,{109,76,0}}, +/* 42813 */ {(13<<2)|2,{109,76,0}}, +/* 42814 */ {(13<<2)|2,{109,76,0}}, +/* 42815 */ {(13<<2)|2,{109,76,0}}, +/* 42816 */ {(13<<2)|2,{109,77,0}}, +/* 42817 */ {(13<<2)|2,{109,77,0}}, +/* 42818 */ {(13<<2)|2,{109,77,0}}, +/* 42819 */ {(13<<2)|2,{109,77,0}}, +/* 42820 */ {(13<<2)|2,{109,77,0}}, +/* 42821 */ {(13<<2)|2,{109,77,0}}, +/* 42822 */ {(13<<2)|2,{109,77,0}}, +/* 42823 */ {(13<<2)|2,{109,77,0}}, +/* 42824 */ {(13<<2)|2,{109,78,0}}, +/* 42825 */ {(13<<2)|2,{109,78,0}}, +/* 42826 */ {(13<<2)|2,{109,78,0}}, +/* 42827 */ {(13<<2)|2,{109,78,0}}, +/* 42828 */ {(13<<2)|2,{109,78,0}}, +/* 42829 */ {(13<<2)|2,{109,78,0}}, +/* 42830 */ {(13<<2)|2,{109,78,0}}, +/* 42831 */ {(13<<2)|2,{109,78,0}}, +/* 42832 */ {(13<<2)|2,{109,79,0}}, +/* 42833 */ {(13<<2)|2,{109,79,0}}, +/* 42834 */ {(13<<2)|2,{109,79,0}}, +/* 42835 */ {(13<<2)|2,{109,79,0}}, +/* 42836 */ {(13<<2)|2,{109,79,0}}, +/* 42837 */ {(13<<2)|2,{109,79,0}}, +/* 42838 */ {(13<<2)|2,{109,79,0}}, +/* 42839 */ {(13<<2)|2,{109,79,0}}, +/* 42840 */ {(13<<2)|2,{109,80,0}}, +/* 42841 */ {(13<<2)|2,{109,80,0}}, +/* 42842 */ {(13<<2)|2,{109,80,0}}, +/* 42843 */ {(13<<2)|2,{109,80,0}}, +/* 42844 */ {(13<<2)|2,{109,80,0}}, +/* 42845 */ {(13<<2)|2,{109,80,0}}, +/* 42846 */ {(13<<2)|2,{109,80,0}}, +/* 42847 */ {(13<<2)|2,{109,80,0}}, +/* 42848 */ {(13<<2)|2,{109,81,0}}, +/* 42849 */ {(13<<2)|2,{109,81,0}}, +/* 42850 */ {(13<<2)|2,{109,81,0}}, +/* 42851 */ {(13<<2)|2,{109,81,0}}, +/* 42852 */ {(13<<2)|2,{109,81,0}}, +/* 42853 */ {(13<<2)|2,{109,81,0}}, +/* 42854 */ {(13<<2)|2,{109,81,0}}, +/* 42855 */ {(13<<2)|2,{109,81,0}}, +/* 42856 */ {(13<<2)|2,{109,82,0}}, +/* 42857 */ {(13<<2)|2,{109,82,0}}, +/* 42858 */ {(13<<2)|2,{109,82,0}}, +/* 42859 */ {(13<<2)|2,{109,82,0}}, +/* 42860 */ {(13<<2)|2,{109,82,0}}, +/* 42861 */ {(13<<2)|2,{109,82,0}}, +/* 42862 */ {(13<<2)|2,{109,82,0}}, +/* 42863 */ {(13<<2)|2,{109,82,0}}, +/* 42864 */ {(13<<2)|2,{109,83,0}}, +/* 42865 */ {(13<<2)|2,{109,83,0}}, +/* 42866 */ {(13<<2)|2,{109,83,0}}, +/* 42867 */ {(13<<2)|2,{109,83,0}}, +/* 42868 */ {(13<<2)|2,{109,83,0}}, +/* 42869 */ {(13<<2)|2,{109,83,0}}, +/* 42870 */ {(13<<2)|2,{109,83,0}}, +/* 42871 */ {(13<<2)|2,{109,83,0}}, +/* 42872 */ {(13<<2)|2,{109,84,0}}, +/* 42873 */ {(13<<2)|2,{109,84,0}}, +/* 42874 */ {(13<<2)|2,{109,84,0}}, +/* 42875 */ {(13<<2)|2,{109,84,0}}, +/* 42876 */ {(13<<2)|2,{109,84,0}}, +/* 42877 */ {(13<<2)|2,{109,84,0}}, +/* 42878 */ {(13<<2)|2,{109,84,0}}, +/* 42879 */ {(13<<2)|2,{109,84,0}}, +/* 42880 */ {(13<<2)|2,{109,85,0}}, +/* 42881 */ {(13<<2)|2,{109,85,0}}, +/* 42882 */ {(13<<2)|2,{109,85,0}}, +/* 42883 */ {(13<<2)|2,{109,85,0}}, +/* 42884 */ {(13<<2)|2,{109,85,0}}, +/* 42885 */ {(13<<2)|2,{109,85,0}}, +/* 42886 */ {(13<<2)|2,{109,85,0}}, +/* 42887 */ {(13<<2)|2,{109,85,0}}, +/* 42888 */ {(13<<2)|2,{109,86,0}}, +/* 42889 */ {(13<<2)|2,{109,86,0}}, +/* 42890 */ {(13<<2)|2,{109,86,0}}, +/* 42891 */ {(13<<2)|2,{109,86,0}}, +/* 42892 */ {(13<<2)|2,{109,86,0}}, +/* 42893 */ {(13<<2)|2,{109,86,0}}, +/* 42894 */ {(13<<2)|2,{109,86,0}}, +/* 42895 */ {(13<<2)|2,{109,86,0}}, +/* 42896 */ {(13<<2)|2,{109,87,0}}, +/* 42897 */ {(13<<2)|2,{109,87,0}}, +/* 42898 */ {(13<<2)|2,{109,87,0}}, +/* 42899 */ {(13<<2)|2,{109,87,0}}, +/* 42900 */ {(13<<2)|2,{109,87,0}}, +/* 42901 */ {(13<<2)|2,{109,87,0}}, +/* 42902 */ {(13<<2)|2,{109,87,0}}, +/* 42903 */ {(13<<2)|2,{109,87,0}}, +/* 42904 */ {(13<<2)|2,{109,89,0}}, +/* 42905 */ {(13<<2)|2,{109,89,0}}, +/* 42906 */ {(13<<2)|2,{109,89,0}}, +/* 42907 */ {(13<<2)|2,{109,89,0}}, +/* 42908 */ {(13<<2)|2,{109,89,0}}, +/* 42909 */ {(13<<2)|2,{109,89,0}}, +/* 42910 */ {(13<<2)|2,{109,89,0}}, +/* 42911 */ {(13<<2)|2,{109,89,0}}, +/* 42912 */ {(13<<2)|2,{109,106,0}}, +/* 42913 */ {(13<<2)|2,{109,106,0}}, +/* 42914 */ {(13<<2)|2,{109,106,0}}, +/* 42915 */ {(13<<2)|2,{109,106,0}}, +/* 42916 */ {(13<<2)|2,{109,106,0}}, +/* 42917 */ {(13<<2)|2,{109,106,0}}, +/* 42918 */ {(13<<2)|2,{109,106,0}}, +/* 42919 */ {(13<<2)|2,{109,106,0}}, +/* 42920 */ {(13<<2)|2,{109,107,0}}, +/* 42921 */ {(13<<2)|2,{109,107,0}}, +/* 42922 */ {(13<<2)|2,{109,107,0}}, +/* 42923 */ {(13<<2)|2,{109,107,0}}, +/* 42924 */ {(13<<2)|2,{109,107,0}}, +/* 42925 */ {(13<<2)|2,{109,107,0}}, +/* 42926 */ {(13<<2)|2,{109,107,0}}, +/* 42927 */ {(13<<2)|2,{109,107,0}}, +/* 42928 */ {(13<<2)|2,{109,113,0}}, +/* 42929 */ {(13<<2)|2,{109,113,0}}, +/* 42930 */ {(13<<2)|2,{109,113,0}}, +/* 42931 */ {(13<<2)|2,{109,113,0}}, +/* 42932 */ {(13<<2)|2,{109,113,0}}, +/* 42933 */ {(13<<2)|2,{109,113,0}}, +/* 42934 */ {(13<<2)|2,{109,113,0}}, +/* 42935 */ {(13<<2)|2,{109,113,0}}, +/* 42936 */ {(13<<2)|2,{109,118,0}}, +/* 42937 */ {(13<<2)|2,{109,118,0}}, +/* 42938 */ {(13<<2)|2,{109,118,0}}, +/* 42939 */ {(13<<2)|2,{109,118,0}}, +/* 42940 */ {(13<<2)|2,{109,118,0}}, +/* 42941 */ {(13<<2)|2,{109,118,0}}, +/* 42942 */ {(13<<2)|2,{109,118,0}}, +/* 42943 */ {(13<<2)|2,{109,118,0}}, +/* 42944 */ {(13<<2)|2,{109,119,0}}, +/* 42945 */ {(13<<2)|2,{109,119,0}}, +/* 42946 */ {(13<<2)|2,{109,119,0}}, +/* 42947 */ {(13<<2)|2,{109,119,0}}, +/* 42948 */ {(13<<2)|2,{109,119,0}}, +/* 42949 */ {(13<<2)|2,{109,119,0}}, +/* 42950 */ {(13<<2)|2,{109,119,0}}, +/* 42951 */ {(13<<2)|2,{109,119,0}}, +/* 42952 */ {(13<<2)|2,{109,120,0}}, +/* 42953 */ {(13<<2)|2,{109,120,0}}, +/* 42954 */ {(13<<2)|2,{109,120,0}}, +/* 42955 */ {(13<<2)|2,{109,120,0}}, +/* 42956 */ {(13<<2)|2,{109,120,0}}, +/* 42957 */ {(13<<2)|2,{109,120,0}}, +/* 42958 */ {(13<<2)|2,{109,120,0}}, +/* 42959 */ {(13<<2)|2,{109,120,0}}, +/* 42960 */ {(13<<2)|2,{109,121,0}}, +/* 42961 */ {(13<<2)|2,{109,121,0}}, +/* 42962 */ {(13<<2)|2,{109,121,0}}, +/* 42963 */ {(13<<2)|2,{109,121,0}}, +/* 42964 */ {(13<<2)|2,{109,121,0}}, +/* 42965 */ {(13<<2)|2,{109,121,0}}, +/* 42966 */ {(13<<2)|2,{109,121,0}}, +/* 42967 */ {(13<<2)|2,{109,121,0}}, +/* 42968 */ {(13<<2)|2,{109,122,0}}, +/* 42969 */ {(13<<2)|2,{109,122,0}}, +/* 42970 */ {(13<<2)|2,{109,122,0}}, +/* 42971 */ {(13<<2)|2,{109,122,0}}, +/* 42972 */ {(13<<2)|2,{109,122,0}}, +/* 42973 */ {(13<<2)|2,{109,122,0}}, +/* 42974 */ {(13<<2)|2,{109,122,0}}, +/* 42975 */ {(13<<2)|2,{109,122,0}}, +/* 42976 */ {(14<<2)|2,{109,38,0}}, +/* 42977 */ {(14<<2)|2,{109,38,0}}, +/* 42978 */ {(14<<2)|2,{109,38,0}}, +/* 42979 */ {(14<<2)|2,{109,38,0}}, +/* 42980 */ {(14<<2)|2,{109,42,0}}, +/* 42981 */ {(14<<2)|2,{109,42,0}}, +/* 42982 */ {(14<<2)|2,{109,42,0}}, +/* 42983 */ {(14<<2)|2,{109,42,0}}, +/* 42984 */ {(14<<2)|2,{109,44,0}}, +/* 42985 */ {(14<<2)|2,{109,44,0}}, +/* 42986 */ {(14<<2)|2,{109,44,0}}, +/* 42987 */ {(14<<2)|2,{109,44,0}}, +/* 42988 */ {(14<<2)|2,{109,59,0}}, +/* 42989 */ {(14<<2)|2,{109,59,0}}, +/* 42990 */ {(14<<2)|2,{109,59,0}}, +/* 42991 */ {(14<<2)|2,{109,59,0}}, +/* 42992 */ {(14<<2)|2,{109,88,0}}, +/* 42993 */ {(14<<2)|2,{109,88,0}}, +/* 42994 */ {(14<<2)|2,{109,88,0}}, +/* 42995 */ {(14<<2)|2,{109,88,0}}, +/* 42996 */ {(14<<2)|2,{109,90,0}}, +/* 42997 */ {(14<<2)|2,{109,90,0}}, +/* 42998 */ {(14<<2)|2,{109,90,0}}, +/* 42999 */ {(14<<2)|2,{109,90,0}}, +/* 43000 */ {(16<<2)|2,{109,33,0}}, +/* 43001 */ {(16<<2)|2,{109,34,0}}, +/* 43002 */ {(16<<2)|2,{109,40,0}}, +/* 43003 */ {(16<<2)|2,{109,41,0}}, +/* 43004 */ {(16<<2)|2,{109,63,0}}, +/* 43005 */ {(6<<2)|1,{109,0,0}}, +/* 43006 */ {(6<<2)|1,{109,0,0}}, +/* 43007 */ {(6<<2)|1,{109,0,0}}, +/* 43008 */ {(16<<2)|3,{110,48,48}}, +/* 43009 */ {(16<<2)|3,{110,48,49}}, +/* 43010 */ {(16<<2)|3,{110,48,50}}, +/* 43011 */ {(16<<2)|3,{110,48,97}}, +/* 43012 */ {(16<<2)|3,{110,48,99}}, +/* 43013 */ {(16<<2)|3,{110,48,101}}, +/* 43014 */ {(16<<2)|3,{110,48,105}}, +/* 43015 */ {(16<<2)|3,{110,48,111}}, +/* 43016 */ {(16<<2)|3,{110,48,115}}, +/* 43017 */ {(16<<2)|3,{110,48,116}}, +/* 43018 */ {(11<<2)|2,{110,48,0}}, +/* 43019 */ {(11<<2)|2,{110,48,0}}, +/* 43020 */ {(11<<2)|2,{110,48,0}}, +/* 43021 */ {(11<<2)|2,{110,48,0}}, +/* 43022 */ {(11<<2)|2,{110,48,0}}, +/* 43023 */ {(11<<2)|2,{110,48,0}}, +/* 43024 */ {(11<<2)|2,{110,48,0}}, +/* 43025 */ {(11<<2)|2,{110,48,0}}, +/* 43026 */ {(11<<2)|2,{110,48,0}}, +/* 43027 */ {(11<<2)|2,{110,48,0}}, +/* 43028 */ {(11<<2)|2,{110,48,0}}, +/* 43029 */ {(11<<2)|2,{110,48,0}}, +/* 43030 */ {(11<<2)|2,{110,48,0}}, +/* 43031 */ {(11<<2)|2,{110,48,0}}, +/* 43032 */ {(11<<2)|2,{110,48,0}}, +/* 43033 */ {(11<<2)|2,{110,48,0}}, +/* 43034 */ {(11<<2)|2,{110,48,0}}, +/* 43035 */ {(11<<2)|2,{110,48,0}}, +/* 43036 */ {(11<<2)|2,{110,48,0}}, +/* 43037 */ {(11<<2)|2,{110,48,0}}, +/* 43038 */ {(11<<2)|2,{110,48,0}}, +/* 43039 */ {(11<<2)|2,{110,48,0}}, +/* 43040 */ {(16<<2)|3,{110,49,48}}, +/* 43041 */ {(16<<2)|3,{110,49,49}}, +/* 43042 */ {(16<<2)|3,{110,49,50}}, +/* 43043 */ {(16<<2)|3,{110,49,97}}, +/* 43044 */ {(16<<2)|3,{110,49,99}}, +/* 43045 */ {(16<<2)|3,{110,49,101}}, +/* 43046 */ {(16<<2)|3,{110,49,105}}, +/* 43047 */ {(16<<2)|3,{110,49,111}}, +/* 43048 */ {(16<<2)|3,{110,49,115}}, +/* 43049 */ {(16<<2)|3,{110,49,116}}, +/* 43050 */ {(11<<2)|2,{110,49,0}}, +/* 43051 */ {(11<<2)|2,{110,49,0}}, +/* 43052 */ {(11<<2)|2,{110,49,0}}, +/* 43053 */ {(11<<2)|2,{110,49,0}}, +/* 43054 */ {(11<<2)|2,{110,49,0}}, +/* 43055 */ {(11<<2)|2,{110,49,0}}, +/* 43056 */ {(11<<2)|2,{110,49,0}}, +/* 43057 */ {(11<<2)|2,{110,49,0}}, +/* 43058 */ {(11<<2)|2,{110,49,0}}, +/* 43059 */ {(11<<2)|2,{110,49,0}}, +/* 43060 */ {(11<<2)|2,{110,49,0}}, +/* 43061 */ {(11<<2)|2,{110,49,0}}, +/* 43062 */ {(11<<2)|2,{110,49,0}}, +/* 43063 */ {(11<<2)|2,{110,49,0}}, +/* 43064 */ {(11<<2)|2,{110,49,0}}, +/* 43065 */ {(11<<2)|2,{110,49,0}}, +/* 43066 */ {(11<<2)|2,{110,49,0}}, +/* 43067 */ {(11<<2)|2,{110,49,0}}, +/* 43068 */ {(11<<2)|2,{110,49,0}}, +/* 43069 */ {(11<<2)|2,{110,49,0}}, +/* 43070 */ {(11<<2)|2,{110,49,0}}, +/* 43071 */ {(11<<2)|2,{110,49,0}}, +/* 43072 */ {(16<<2)|3,{110,50,48}}, +/* 43073 */ {(16<<2)|3,{110,50,49}}, +/* 43074 */ {(16<<2)|3,{110,50,50}}, +/* 43075 */ {(16<<2)|3,{110,50,97}}, +/* 43076 */ {(16<<2)|3,{110,50,99}}, +/* 43077 */ {(16<<2)|3,{110,50,101}}, +/* 43078 */ {(16<<2)|3,{110,50,105}}, +/* 43079 */ {(16<<2)|3,{110,50,111}}, +/* 43080 */ {(16<<2)|3,{110,50,115}}, +/* 43081 */ {(16<<2)|3,{110,50,116}}, +/* 43082 */ {(11<<2)|2,{110,50,0}}, +/* 43083 */ {(11<<2)|2,{110,50,0}}, +/* 43084 */ {(11<<2)|2,{110,50,0}}, +/* 43085 */ {(11<<2)|2,{110,50,0}}, +/* 43086 */ {(11<<2)|2,{110,50,0}}, +/* 43087 */ {(11<<2)|2,{110,50,0}}, +/* 43088 */ {(11<<2)|2,{110,50,0}}, +/* 43089 */ {(11<<2)|2,{110,50,0}}, +/* 43090 */ {(11<<2)|2,{110,50,0}}, +/* 43091 */ {(11<<2)|2,{110,50,0}}, +/* 43092 */ {(11<<2)|2,{110,50,0}}, +/* 43093 */ {(11<<2)|2,{110,50,0}}, +/* 43094 */ {(11<<2)|2,{110,50,0}}, +/* 43095 */ {(11<<2)|2,{110,50,0}}, +/* 43096 */ {(11<<2)|2,{110,50,0}}, +/* 43097 */ {(11<<2)|2,{110,50,0}}, +/* 43098 */ {(11<<2)|2,{110,50,0}}, +/* 43099 */ {(11<<2)|2,{110,50,0}}, +/* 43100 */ {(11<<2)|2,{110,50,0}}, +/* 43101 */ {(11<<2)|2,{110,50,0}}, +/* 43102 */ {(11<<2)|2,{110,50,0}}, +/* 43103 */ {(11<<2)|2,{110,50,0}}, +/* 43104 */ {(16<<2)|3,{110,97,48}}, +/* 43105 */ {(16<<2)|3,{110,97,49}}, +/* 43106 */ {(16<<2)|3,{110,97,50}}, +/* 43107 */ {(16<<2)|3,{110,97,97}}, +/* 43108 */ {(16<<2)|3,{110,97,99}}, +/* 43109 */ {(16<<2)|3,{110,97,101}}, +/* 43110 */ {(16<<2)|3,{110,97,105}}, +/* 43111 */ {(16<<2)|3,{110,97,111}}, +/* 43112 */ {(16<<2)|3,{110,97,115}}, +/* 43113 */ {(16<<2)|3,{110,97,116}}, +/* 43114 */ {(11<<2)|2,{110,97,0}}, +/* 43115 */ {(11<<2)|2,{110,97,0}}, +/* 43116 */ {(11<<2)|2,{110,97,0}}, +/* 43117 */ {(11<<2)|2,{110,97,0}}, +/* 43118 */ {(11<<2)|2,{110,97,0}}, +/* 43119 */ {(11<<2)|2,{110,97,0}}, +/* 43120 */ {(11<<2)|2,{110,97,0}}, +/* 43121 */ {(11<<2)|2,{110,97,0}}, +/* 43122 */ {(11<<2)|2,{110,97,0}}, +/* 43123 */ {(11<<2)|2,{110,97,0}}, +/* 43124 */ {(11<<2)|2,{110,97,0}}, +/* 43125 */ {(11<<2)|2,{110,97,0}}, +/* 43126 */ {(11<<2)|2,{110,97,0}}, +/* 43127 */ {(11<<2)|2,{110,97,0}}, +/* 43128 */ {(11<<2)|2,{110,97,0}}, +/* 43129 */ {(11<<2)|2,{110,97,0}}, +/* 43130 */ {(11<<2)|2,{110,97,0}}, +/* 43131 */ {(11<<2)|2,{110,97,0}}, +/* 43132 */ {(11<<2)|2,{110,97,0}}, +/* 43133 */ {(11<<2)|2,{110,97,0}}, +/* 43134 */ {(11<<2)|2,{110,97,0}}, +/* 43135 */ {(11<<2)|2,{110,97,0}}, +/* 43136 */ {(16<<2)|3,{110,99,48}}, +/* 43137 */ {(16<<2)|3,{110,99,49}}, +/* 43138 */ {(16<<2)|3,{110,99,50}}, +/* 43139 */ {(16<<2)|3,{110,99,97}}, +/* 43140 */ {(16<<2)|3,{110,99,99}}, +/* 43141 */ {(16<<2)|3,{110,99,101}}, +/* 43142 */ {(16<<2)|3,{110,99,105}}, +/* 43143 */ {(16<<2)|3,{110,99,111}}, +/* 43144 */ {(16<<2)|3,{110,99,115}}, +/* 43145 */ {(16<<2)|3,{110,99,116}}, +/* 43146 */ {(11<<2)|2,{110,99,0}}, +/* 43147 */ {(11<<2)|2,{110,99,0}}, +/* 43148 */ {(11<<2)|2,{110,99,0}}, +/* 43149 */ {(11<<2)|2,{110,99,0}}, +/* 43150 */ {(11<<2)|2,{110,99,0}}, +/* 43151 */ {(11<<2)|2,{110,99,0}}, +/* 43152 */ {(11<<2)|2,{110,99,0}}, +/* 43153 */ {(11<<2)|2,{110,99,0}}, +/* 43154 */ {(11<<2)|2,{110,99,0}}, +/* 43155 */ {(11<<2)|2,{110,99,0}}, +/* 43156 */ {(11<<2)|2,{110,99,0}}, +/* 43157 */ {(11<<2)|2,{110,99,0}}, +/* 43158 */ {(11<<2)|2,{110,99,0}}, +/* 43159 */ {(11<<2)|2,{110,99,0}}, +/* 43160 */ {(11<<2)|2,{110,99,0}}, +/* 43161 */ {(11<<2)|2,{110,99,0}}, +/* 43162 */ {(11<<2)|2,{110,99,0}}, +/* 43163 */ {(11<<2)|2,{110,99,0}}, +/* 43164 */ {(11<<2)|2,{110,99,0}}, +/* 43165 */ {(11<<2)|2,{110,99,0}}, +/* 43166 */ {(11<<2)|2,{110,99,0}}, +/* 43167 */ {(11<<2)|2,{110,99,0}}, +/* 43168 */ {(16<<2)|3,{110,101,48}}, +/* 43169 */ {(16<<2)|3,{110,101,49}}, +/* 43170 */ {(16<<2)|3,{110,101,50}}, +/* 43171 */ {(16<<2)|3,{110,101,97}}, +/* 43172 */ {(16<<2)|3,{110,101,99}}, +/* 43173 */ {(16<<2)|3,{110,101,101}}, +/* 43174 */ {(16<<2)|3,{110,101,105}}, +/* 43175 */ {(16<<2)|3,{110,101,111}}, +/* 43176 */ {(16<<2)|3,{110,101,115}}, +/* 43177 */ {(16<<2)|3,{110,101,116}}, +/* 43178 */ {(11<<2)|2,{110,101,0}}, +/* 43179 */ {(11<<2)|2,{110,101,0}}, +/* 43180 */ {(11<<2)|2,{110,101,0}}, +/* 43181 */ {(11<<2)|2,{110,101,0}}, +/* 43182 */ {(11<<2)|2,{110,101,0}}, +/* 43183 */ {(11<<2)|2,{110,101,0}}, +/* 43184 */ {(11<<2)|2,{110,101,0}}, +/* 43185 */ {(11<<2)|2,{110,101,0}}, +/* 43186 */ {(11<<2)|2,{110,101,0}}, +/* 43187 */ {(11<<2)|2,{110,101,0}}, +/* 43188 */ {(11<<2)|2,{110,101,0}}, +/* 43189 */ {(11<<2)|2,{110,101,0}}, +/* 43190 */ {(11<<2)|2,{110,101,0}}, +/* 43191 */ {(11<<2)|2,{110,101,0}}, +/* 43192 */ {(11<<2)|2,{110,101,0}}, +/* 43193 */ {(11<<2)|2,{110,101,0}}, +/* 43194 */ {(11<<2)|2,{110,101,0}}, +/* 43195 */ {(11<<2)|2,{110,101,0}}, +/* 43196 */ {(11<<2)|2,{110,101,0}}, +/* 43197 */ {(11<<2)|2,{110,101,0}}, +/* 43198 */ {(11<<2)|2,{110,101,0}}, +/* 43199 */ {(11<<2)|2,{110,101,0}}, +/* 43200 */ {(16<<2)|3,{110,105,48}}, +/* 43201 */ {(16<<2)|3,{110,105,49}}, +/* 43202 */ {(16<<2)|3,{110,105,50}}, +/* 43203 */ {(16<<2)|3,{110,105,97}}, +/* 43204 */ {(16<<2)|3,{110,105,99}}, +/* 43205 */ {(16<<2)|3,{110,105,101}}, +/* 43206 */ {(16<<2)|3,{110,105,105}}, +/* 43207 */ {(16<<2)|3,{110,105,111}}, +/* 43208 */ {(16<<2)|3,{110,105,115}}, +/* 43209 */ {(16<<2)|3,{110,105,116}}, +/* 43210 */ {(11<<2)|2,{110,105,0}}, +/* 43211 */ {(11<<2)|2,{110,105,0}}, +/* 43212 */ {(11<<2)|2,{110,105,0}}, +/* 43213 */ {(11<<2)|2,{110,105,0}}, +/* 43214 */ {(11<<2)|2,{110,105,0}}, +/* 43215 */ {(11<<2)|2,{110,105,0}}, +/* 43216 */ {(11<<2)|2,{110,105,0}}, +/* 43217 */ {(11<<2)|2,{110,105,0}}, +/* 43218 */ {(11<<2)|2,{110,105,0}}, +/* 43219 */ {(11<<2)|2,{110,105,0}}, +/* 43220 */ {(11<<2)|2,{110,105,0}}, +/* 43221 */ {(11<<2)|2,{110,105,0}}, +/* 43222 */ {(11<<2)|2,{110,105,0}}, +/* 43223 */ {(11<<2)|2,{110,105,0}}, +/* 43224 */ {(11<<2)|2,{110,105,0}}, +/* 43225 */ {(11<<2)|2,{110,105,0}}, +/* 43226 */ {(11<<2)|2,{110,105,0}}, +/* 43227 */ {(11<<2)|2,{110,105,0}}, +/* 43228 */ {(11<<2)|2,{110,105,0}}, +/* 43229 */ {(11<<2)|2,{110,105,0}}, +/* 43230 */ {(11<<2)|2,{110,105,0}}, +/* 43231 */ {(11<<2)|2,{110,105,0}}, +/* 43232 */ {(16<<2)|3,{110,111,48}}, +/* 43233 */ {(16<<2)|3,{110,111,49}}, +/* 43234 */ {(16<<2)|3,{110,111,50}}, +/* 43235 */ {(16<<2)|3,{110,111,97}}, +/* 43236 */ {(16<<2)|3,{110,111,99}}, +/* 43237 */ {(16<<2)|3,{110,111,101}}, +/* 43238 */ {(16<<2)|3,{110,111,105}}, +/* 43239 */ {(16<<2)|3,{110,111,111}}, +/* 43240 */ {(16<<2)|3,{110,111,115}}, +/* 43241 */ {(16<<2)|3,{110,111,116}}, +/* 43242 */ {(11<<2)|2,{110,111,0}}, +/* 43243 */ {(11<<2)|2,{110,111,0}}, +/* 43244 */ {(11<<2)|2,{110,111,0}}, +/* 43245 */ {(11<<2)|2,{110,111,0}}, +/* 43246 */ {(11<<2)|2,{110,111,0}}, +/* 43247 */ {(11<<2)|2,{110,111,0}}, +/* 43248 */ {(11<<2)|2,{110,111,0}}, +/* 43249 */ {(11<<2)|2,{110,111,0}}, +/* 43250 */ {(11<<2)|2,{110,111,0}}, +/* 43251 */ {(11<<2)|2,{110,111,0}}, +/* 43252 */ {(11<<2)|2,{110,111,0}}, +/* 43253 */ {(11<<2)|2,{110,111,0}}, +/* 43254 */ {(11<<2)|2,{110,111,0}}, +/* 43255 */ {(11<<2)|2,{110,111,0}}, +/* 43256 */ {(11<<2)|2,{110,111,0}}, +/* 43257 */ {(11<<2)|2,{110,111,0}}, +/* 43258 */ {(11<<2)|2,{110,111,0}}, +/* 43259 */ {(11<<2)|2,{110,111,0}}, +/* 43260 */ {(11<<2)|2,{110,111,0}}, +/* 43261 */ {(11<<2)|2,{110,111,0}}, +/* 43262 */ {(11<<2)|2,{110,111,0}}, +/* 43263 */ {(11<<2)|2,{110,111,0}}, +/* 43264 */ {(16<<2)|3,{110,115,48}}, +/* 43265 */ {(16<<2)|3,{110,115,49}}, +/* 43266 */ {(16<<2)|3,{110,115,50}}, +/* 43267 */ {(16<<2)|3,{110,115,97}}, +/* 43268 */ {(16<<2)|3,{110,115,99}}, +/* 43269 */ {(16<<2)|3,{110,115,101}}, +/* 43270 */ {(16<<2)|3,{110,115,105}}, +/* 43271 */ {(16<<2)|3,{110,115,111}}, +/* 43272 */ {(16<<2)|3,{110,115,115}}, +/* 43273 */ {(16<<2)|3,{110,115,116}}, +/* 43274 */ {(11<<2)|2,{110,115,0}}, +/* 43275 */ {(11<<2)|2,{110,115,0}}, +/* 43276 */ {(11<<2)|2,{110,115,0}}, +/* 43277 */ {(11<<2)|2,{110,115,0}}, +/* 43278 */ {(11<<2)|2,{110,115,0}}, +/* 43279 */ {(11<<2)|2,{110,115,0}}, +/* 43280 */ {(11<<2)|2,{110,115,0}}, +/* 43281 */ {(11<<2)|2,{110,115,0}}, +/* 43282 */ {(11<<2)|2,{110,115,0}}, +/* 43283 */ {(11<<2)|2,{110,115,0}}, +/* 43284 */ {(11<<2)|2,{110,115,0}}, +/* 43285 */ {(11<<2)|2,{110,115,0}}, +/* 43286 */ {(11<<2)|2,{110,115,0}}, +/* 43287 */ {(11<<2)|2,{110,115,0}}, +/* 43288 */ {(11<<2)|2,{110,115,0}}, +/* 43289 */ {(11<<2)|2,{110,115,0}}, +/* 43290 */ {(11<<2)|2,{110,115,0}}, +/* 43291 */ {(11<<2)|2,{110,115,0}}, +/* 43292 */ {(11<<2)|2,{110,115,0}}, +/* 43293 */ {(11<<2)|2,{110,115,0}}, +/* 43294 */ {(11<<2)|2,{110,115,0}}, +/* 43295 */ {(11<<2)|2,{110,115,0}}, +/* 43296 */ {(16<<2)|3,{110,116,48}}, +/* 43297 */ {(16<<2)|3,{110,116,49}}, +/* 43298 */ {(16<<2)|3,{110,116,50}}, +/* 43299 */ {(16<<2)|3,{110,116,97}}, +/* 43300 */ {(16<<2)|3,{110,116,99}}, +/* 43301 */ {(16<<2)|3,{110,116,101}}, +/* 43302 */ {(16<<2)|3,{110,116,105}}, +/* 43303 */ {(16<<2)|3,{110,116,111}}, +/* 43304 */ {(16<<2)|3,{110,116,115}}, +/* 43305 */ {(16<<2)|3,{110,116,116}}, +/* 43306 */ {(11<<2)|2,{110,116,0}}, +/* 43307 */ {(11<<2)|2,{110,116,0}}, +/* 43308 */ {(11<<2)|2,{110,116,0}}, +/* 43309 */ {(11<<2)|2,{110,116,0}}, +/* 43310 */ {(11<<2)|2,{110,116,0}}, +/* 43311 */ {(11<<2)|2,{110,116,0}}, +/* 43312 */ {(11<<2)|2,{110,116,0}}, +/* 43313 */ {(11<<2)|2,{110,116,0}}, +/* 43314 */ {(11<<2)|2,{110,116,0}}, +/* 43315 */ {(11<<2)|2,{110,116,0}}, +/* 43316 */ {(11<<2)|2,{110,116,0}}, +/* 43317 */ {(11<<2)|2,{110,116,0}}, +/* 43318 */ {(11<<2)|2,{110,116,0}}, +/* 43319 */ {(11<<2)|2,{110,116,0}}, +/* 43320 */ {(11<<2)|2,{110,116,0}}, +/* 43321 */ {(11<<2)|2,{110,116,0}}, +/* 43322 */ {(11<<2)|2,{110,116,0}}, +/* 43323 */ {(11<<2)|2,{110,116,0}}, +/* 43324 */ {(11<<2)|2,{110,116,0}}, +/* 43325 */ {(11<<2)|2,{110,116,0}}, +/* 43326 */ {(11<<2)|2,{110,116,0}}, +/* 43327 */ {(11<<2)|2,{110,116,0}}, +/* 43328 */ {(12<<2)|2,{110,32,0}}, +/* 43329 */ {(12<<2)|2,{110,32,0}}, +/* 43330 */ {(12<<2)|2,{110,32,0}}, +/* 43331 */ {(12<<2)|2,{110,32,0}}, +/* 43332 */ {(12<<2)|2,{110,32,0}}, +/* 43333 */ {(12<<2)|2,{110,32,0}}, +/* 43334 */ {(12<<2)|2,{110,32,0}}, +/* 43335 */ {(12<<2)|2,{110,32,0}}, +/* 43336 */ {(12<<2)|2,{110,32,0}}, +/* 43337 */ {(12<<2)|2,{110,32,0}}, +/* 43338 */ {(12<<2)|2,{110,32,0}}, +/* 43339 */ {(12<<2)|2,{110,32,0}}, +/* 43340 */ {(12<<2)|2,{110,32,0}}, +/* 43341 */ {(12<<2)|2,{110,32,0}}, +/* 43342 */ {(12<<2)|2,{110,32,0}}, +/* 43343 */ {(12<<2)|2,{110,32,0}}, +/* 43344 */ {(12<<2)|2,{110,37,0}}, +/* 43345 */ {(12<<2)|2,{110,37,0}}, +/* 43346 */ {(12<<2)|2,{110,37,0}}, +/* 43347 */ {(12<<2)|2,{110,37,0}}, +/* 43348 */ {(12<<2)|2,{110,37,0}}, +/* 43349 */ {(12<<2)|2,{110,37,0}}, +/* 43350 */ {(12<<2)|2,{110,37,0}}, +/* 43351 */ {(12<<2)|2,{110,37,0}}, +/* 43352 */ {(12<<2)|2,{110,37,0}}, +/* 43353 */ {(12<<2)|2,{110,37,0}}, +/* 43354 */ {(12<<2)|2,{110,37,0}}, +/* 43355 */ {(12<<2)|2,{110,37,0}}, +/* 43356 */ {(12<<2)|2,{110,37,0}}, +/* 43357 */ {(12<<2)|2,{110,37,0}}, +/* 43358 */ {(12<<2)|2,{110,37,0}}, +/* 43359 */ {(12<<2)|2,{110,37,0}}, +/* 43360 */ {(12<<2)|2,{110,45,0}}, +/* 43361 */ {(12<<2)|2,{110,45,0}}, +/* 43362 */ {(12<<2)|2,{110,45,0}}, +/* 43363 */ {(12<<2)|2,{110,45,0}}, +/* 43364 */ {(12<<2)|2,{110,45,0}}, +/* 43365 */ {(12<<2)|2,{110,45,0}}, +/* 43366 */ {(12<<2)|2,{110,45,0}}, +/* 43367 */ {(12<<2)|2,{110,45,0}}, +/* 43368 */ {(12<<2)|2,{110,45,0}}, +/* 43369 */ {(12<<2)|2,{110,45,0}}, +/* 43370 */ {(12<<2)|2,{110,45,0}}, +/* 43371 */ {(12<<2)|2,{110,45,0}}, +/* 43372 */ {(12<<2)|2,{110,45,0}}, +/* 43373 */ {(12<<2)|2,{110,45,0}}, +/* 43374 */ {(12<<2)|2,{110,45,0}}, +/* 43375 */ {(12<<2)|2,{110,45,0}}, +/* 43376 */ {(12<<2)|2,{110,46,0}}, +/* 43377 */ {(12<<2)|2,{110,46,0}}, +/* 43378 */ {(12<<2)|2,{110,46,0}}, +/* 43379 */ {(12<<2)|2,{110,46,0}}, +/* 43380 */ {(12<<2)|2,{110,46,0}}, +/* 43381 */ {(12<<2)|2,{110,46,0}}, +/* 43382 */ {(12<<2)|2,{110,46,0}}, +/* 43383 */ {(12<<2)|2,{110,46,0}}, +/* 43384 */ {(12<<2)|2,{110,46,0}}, +/* 43385 */ {(12<<2)|2,{110,46,0}}, +/* 43386 */ {(12<<2)|2,{110,46,0}}, +/* 43387 */ {(12<<2)|2,{110,46,0}}, +/* 43388 */ {(12<<2)|2,{110,46,0}}, +/* 43389 */ {(12<<2)|2,{110,46,0}}, +/* 43390 */ {(12<<2)|2,{110,46,0}}, +/* 43391 */ {(12<<2)|2,{110,46,0}}, +/* 43392 */ {(12<<2)|2,{110,47,0}}, +/* 43393 */ {(12<<2)|2,{110,47,0}}, +/* 43394 */ {(12<<2)|2,{110,47,0}}, +/* 43395 */ {(12<<2)|2,{110,47,0}}, +/* 43396 */ {(12<<2)|2,{110,47,0}}, +/* 43397 */ {(12<<2)|2,{110,47,0}}, +/* 43398 */ {(12<<2)|2,{110,47,0}}, +/* 43399 */ {(12<<2)|2,{110,47,0}}, +/* 43400 */ {(12<<2)|2,{110,47,0}}, +/* 43401 */ {(12<<2)|2,{110,47,0}}, +/* 43402 */ {(12<<2)|2,{110,47,0}}, +/* 43403 */ {(12<<2)|2,{110,47,0}}, +/* 43404 */ {(12<<2)|2,{110,47,0}}, +/* 43405 */ {(12<<2)|2,{110,47,0}}, +/* 43406 */ {(12<<2)|2,{110,47,0}}, +/* 43407 */ {(12<<2)|2,{110,47,0}}, +/* 43408 */ {(12<<2)|2,{110,51,0}}, +/* 43409 */ {(12<<2)|2,{110,51,0}}, +/* 43410 */ {(12<<2)|2,{110,51,0}}, +/* 43411 */ {(12<<2)|2,{110,51,0}}, +/* 43412 */ {(12<<2)|2,{110,51,0}}, +/* 43413 */ {(12<<2)|2,{110,51,0}}, +/* 43414 */ {(12<<2)|2,{110,51,0}}, +/* 43415 */ {(12<<2)|2,{110,51,0}}, +/* 43416 */ {(12<<2)|2,{110,51,0}}, +/* 43417 */ {(12<<2)|2,{110,51,0}}, +/* 43418 */ {(12<<2)|2,{110,51,0}}, +/* 43419 */ {(12<<2)|2,{110,51,0}}, +/* 43420 */ {(12<<2)|2,{110,51,0}}, +/* 43421 */ {(12<<2)|2,{110,51,0}}, +/* 43422 */ {(12<<2)|2,{110,51,0}}, +/* 43423 */ {(12<<2)|2,{110,51,0}}, +/* 43424 */ {(12<<2)|2,{110,52,0}}, +/* 43425 */ {(12<<2)|2,{110,52,0}}, +/* 43426 */ {(12<<2)|2,{110,52,0}}, +/* 43427 */ {(12<<2)|2,{110,52,0}}, +/* 43428 */ {(12<<2)|2,{110,52,0}}, +/* 43429 */ {(12<<2)|2,{110,52,0}}, +/* 43430 */ {(12<<2)|2,{110,52,0}}, +/* 43431 */ {(12<<2)|2,{110,52,0}}, +/* 43432 */ {(12<<2)|2,{110,52,0}}, +/* 43433 */ {(12<<2)|2,{110,52,0}}, +/* 43434 */ {(12<<2)|2,{110,52,0}}, +/* 43435 */ {(12<<2)|2,{110,52,0}}, +/* 43436 */ {(12<<2)|2,{110,52,0}}, +/* 43437 */ {(12<<2)|2,{110,52,0}}, +/* 43438 */ {(12<<2)|2,{110,52,0}}, +/* 43439 */ {(12<<2)|2,{110,52,0}}, +/* 43440 */ {(12<<2)|2,{110,53,0}}, +/* 43441 */ {(12<<2)|2,{110,53,0}}, +/* 43442 */ {(12<<2)|2,{110,53,0}}, +/* 43443 */ {(12<<2)|2,{110,53,0}}, +/* 43444 */ {(12<<2)|2,{110,53,0}}, +/* 43445 */ {(12<<2)|2,{110,53,0}}, +/* 43446 */ {(12<<2)|2,{110,53,0}}, +/* 43447 */ {(12<<2)|2,{110,53,0}}, +/* 43448 */ {(12<<2)|2,{110,53,0}}, +/* 43449 */ {(12<<2)|2,{110,53,0}}, +/* 43450 */ {(12<<2)|2,{110,53,0}}, +/* 43451 */ {(12<<2)|2,{110,53,0}}, +/* 43452 */ {(12<<2)|2,{110,53,0}}, +/* 43453 */ {(12<<2)|2,{110,53,0}}, +/* 43454 */ {(12<<2)|2,{110,53,0}}, +/* 43455 */ {(12<<2)|2,{110,53,0}}, +/* 43456 */ {(12<<2)|2,{110,54,0}}, +/* 43457 */ {(12<<2)|2,{110,54,0}}, +/* 43458 */ {(12<<2)|2,{110,54,0}}, +/* 43459 */ {(12<<2)|2,{110,54,0}}, +/* 43460 */ {(12<<2)|2,{110,54,0}}, +/* 43461 */ {(12<<2)|2,{110,54,0}}, +/* 43462 */ {(12<<2)|2,{110,54,0}}, +/* 43463 */ {(12<<2)|2,{110,54,0}}, +/* 43464 */ {(12<<2)|2,{110,54,0}}, +/* 43465 */ {(12<<2)|2,{110,54,0}}, +/* 43466 */ {(12<<2)|2,{110,54,0}}, +/* 43467 */ {(12<<2)|2,{110,54,0}}, +/* 43468 */ {(12<<2)|2,{110,54,0}}, +/* 43469 */ {(12<<2)|2,{110,54,0}}, +/* 43470 */ {(12<<2)|2,{110,54,0}}, +/* 43471 */ {(12<<2)|2,{110,54,0}}, +/* 43472 */ {(12<<2)|2,{110,55,0}}, +/* 43473 */ {(12<<2)|2,{110,55,0}}, +/* 43474 */ {(12<<2)|2,{110,55,0}}, +/* 43475 */ {(12<<2)|2,{110,55,0}}, +/* 43476 */ {(12<<2)|2,{110,55,0}}, +/* 43477 */ {(12<<2)|2,{110,55,0}}, +/* 43478 */ {(12<<2)|2,{110,55,0}}, +/* 43479 */ {(12<<2)|2,{110,55,0}}, +/* 43480 */ {(12<<2)|2,{110,55,0}}, +/* 43481 */ {(12<<2)|2,{110,55,0}}, +/* 43482 */ {(12<<2)|2,{110,55,0}}, +/* 43483 */ {(12<<2)|2,{110,55,0}}, +/* 43484 */ {(12<<2)|2,{110,55,0}}, +/* 43485 */ {(12<<2)|2,{110,55,0}}, +/* 43486 */ {(12<<2)|2,{110,55,0}}, +/* 43487 */ {(12<<2)|2,{110,55,0}}, +/* 43488 */ {(12<<2)|2,{110,56,0}}, +/* 43489 */ {(12<<2)|2,{110,56,0}}, +/* 43490 */ {(12<<2)|2,{110,56,0}}, +/* 43491 */ {(12<<2)|2,{110,56,0}}, +/* 43492 */ {(12<<2)|2,{110,56,0}}, +/* 43493 */ {(12<<2)|2,{110,56,0}}, +/* 43494 */ {(12<<2)|2,{110,56,0}}, +/* 43495 */ {(12<<2)|2,{110,56,0}}, +/* 43496 */ {(12<<2)|2,{110,56,0}}, +/* 43497 */ {(12<<2)|2,{110,56,0}}, +/* 43498 */ {(12<<2)|2,{110,56,0}}, +/* 43499 */ {(12<<2)|2,{110,56,0}}, +/* 43500 */ {(12<<2)|2,{110,56,0}}, +/* 43501 */ {(12<<2)|2,{110,56,0}}, +/* 43502 */ {(12<<2)|2,{110,56,0}}, +/* 43503 */ {(12<<2)|2,{110,56,0}}, +/* 43504 */ {(12<<2)|2,{110,57,0}}, +/* 43505 */ {(12<<2)|2,{110,57,0}}, +/* 43506 */ {(12<<2)|2,{110,57,0}}, +/* 43507 */ {(12<<2)|2,{110,57,0}}, +/* 43508 */ {(12<<2)|2,{110,57,0}}, +/* 43509 */ {(12<<2)|2,{110,57,0}}, +/* 43510 */ {(12<<2)|2,{110,57,0}}, +/* 43511 */ {(12<<2)|2,{110,57,0}}, +/* 43512 */ {(12<<2)|2,{110,57,0}}, +/* 43513 */ {(12<<2)|2,{110,57,0}}, +/* 43514 */ {(12<<2)|2,{110,57,0}}, +/* 43515 */ {(12<<2)|2,{110,57,0}}, +/* 43516 */ {(12<<2)|2,{110,57,0}}, +/* 43517 */ {(12<<2)|2,{110,57,0}}, +/* 43518 */ {(12<<2)|2,{110,57,0}}, +/* 43519 */ {(12<<2)|2,{110,57,0}}, +/* 43520 */ {(12<<2)|2,{110,61,0}}, +/* 43521 */ {(12<<2)|2,{110,61,0}}, +/* 43522 */ {(12<<2)|2,{110,61,0}}, +/* 43523 */ {(12<<2)|2,{110,61,0}}, +/* 43524 */ {(12<<2)|2,{110,61,0}}, +/* 43525 */ {(12<<2)|2,{110,61,0}}, +/* 43526 */ {(12<<2)|2,{110,61,0}}, +/* 43527 */ {(12<<2)|2,{110,61,0}}, +/* 43528 */ {(12<<2)|2,{110,61,0}}, +/* 43529 */ {(12<<2)|2,{110,61,0}}, +/* 43530 */ {(12<<2)|2,{110,61,0}}, +/* 43531 */ {(12<<2)|2,{110,61,0}}, +/* 43532 */ {(12<<2)|2,{110,61,0}}, +/* 43533 */ {(12<<2)|2,{110,61,0}}, +/* 43534 */ {(12<<2)|2,{110,61,0}}, +/* 43535 */ {(12<<2)|2,{110,61,0}}, +/* 43536 */ {(12<<2)|2,{110,65,0}}, +/* 43537 */ {(12<<2)|2,{110,65,0}}, +/* 43538 */ {(12<<2)|2,{110,65,0}}, +/* 43539 */ {(12<<2)|2,{110,65,0}}, +/* 43540 */ {(12<<2)|2,{110,65,0}}, +/* 43541 */ {(12<<2)|2,{110,65,0}}, +/* 43542 */ {(12<<2)|2,{110,65,0}}, +/* 43543 */ {(12<<2)|2,{110,65,0}}, +/* 43544 */ {(12<<2)|2,{110,65,0}}, +/* 43545 */ {(12<<2)|2,{110,65,0}}, +/* 43546 */ {(12<<2)|2,{110,65,0}}, +/* 43547 */ {(12<<2)|2,{110,65,0}}, +/* 43548 */ {(12<<2)|2,{110,65,0}}, +/* 43549 */ {(12<<2)|2,{110,65,0}}, +/* 43550 */ {(12<<2)|2,{110,65,0}}, +/* 43551 */ {(12<<2)|2,{110,65,0}}, +/* 43552 */ {(12<<2)|2,{110,95,0}}, +/* 43553 */ {(12<<2)|2,{110,95,0}}, +/* 43554 */ {(12<<2)|2,{110,95,0}}, +/* 43555 */ {(12<<2)|2,{110,95,0}}, +/* 43556 */ {(12<<2)|2,{110,95,0}}, +/* 43557 */ {(12<<2)|2,{110,95,0}}, +/* 43558 */ {(12<<2)|2,{110,95,0}}, +/* 43559 */ {(12<<2)|2,{110,95,0}}, +/* 43560 */ {(12<<2)|2,{110,95,0}}, +/* 43561 */ {(12<<2)|2,{110,95,0}}, +/* 43562 */ {(12<<2)|2,{110,95,0}}, +/* 43563 */ {(12<<2)|2,{110,95,0}}, +/* 43564 */ {(12<<2)|2,{110,95,0}}, +/* 43565 */ {(12<<2)|2,{110,95,0}}, +/* 43566 */ {(12<<2)|2,{110,95,0}}, +/* 43567 */ {(12<<2)|2,{110,95,0}}, +/* 43568 */ {(12<<2)|2,{110,98,0}}, +/* 43569 */ {(12<<2)|2,{110,98,0}}, +/* 43570 */ {(12<<2)|2,{110,98,0}}, +/* 43571 */ {(12<<2)|2,{110,98,0}}, +/* 43572 */ {(12<<2)|2,{110,98,0}}, +/* 43573 */ {(12<<2)|2,{110,98,0}}, +/* 43574 */ {(12<<2)|2,{110,98,0}}, +/* 43575 */ {(12<<2)|2,{110,98,0}}, +/* 43576 */ {(12<<2)|2,{110,98,0}}, +/* 43577 */ {(12<<2)|2,{110,98,0}}, +/* 43578 */ {(12<<2)|2,{110,98,0}}, +/* 43579 */ {(12<<2)|2,{110,98,0}}, +/* 43580 */ {(12<<2)|2,{110,98,0}}, +/* 43581 */ {(12<<2)|2,{110,98,0}}, +/* 43582 */ {(12<<2)|2,{110,98,0}}, +/* 43583 */ {(12<<2)|2,{110,98,0}}, +/* 43584 */ {(12<<2)|2,{110,100,0}}, +/* 43585 */ {(12<<2)|2,{110,100,0}}, +/* 43586 */ {(12<<2)|2,{110,100,0}}, +/* 43587 */ {(12<<2)|2,{110,100,0}}, +/* 43588 */ {(12<<2)|2,{110,100,0}}, +/* 43589 */ {(12<<2)|2,{110,100,0}}, +/* 43590 */ {(12<<2)|2,{110,100,0}}, +/* 43591 */ {(12<<2)|2,{110,100,0}}, +/* 43592 */ {(12<<2)|2,{110,100,0}}, +/* 43593 */ {(12<<2)|2,{110,100,0}}, +/* 43594 */ {(12<<2)|2,{110,100,0}}, +/* 43595 */ {(12<<2)|2,{110,100,0}}, +/* 43596 */ {(12<<2)|2,{110,100,0}}, +/* 43597 */ {(12<<2)|2,{110,100,0}}, +/* 43598 */ {(12<<2)|2,{110,100,0}}, +/* 43599 */ {(12<<2)|2,{110,100,0}}, +/* 43600 */ {(12<<2)|2,{110,102,0}}, +/* 43601 */ {(12<<2)|2,{110,102,0}}, +/* 43602 */ {(12<<2)|2,{110,102,0}}, +/* 43603 */ {(12<<2)|2,{110,102,0}}, +/* 43604 */ {(12<<2)|2,{110,102,0}}, +/* 43605 */ {(12<<2)|2,{110,102,0}}, +/* 43606 */ {(12<<2)|2,{110,102,0}}, +/* 43607 */ {(12<<2)|2,{110,102,0}}, +/* 43608 */ {(12<<2)|2,{110,102,0}}, +/* 43609 */ {(12<<2)|2,{110,102,0}}, +/* 43610 */ {(12<<2)|2,{110,102,0}}, +/* 43611 */ {(12<<2)|2,{110,102,0}}, +/* 43612 */ {(12<<2)|2,{110,102,0}}, +/* 43613 */ {(12<<2)|2,{110,102,0}}, +/* 43614 */ {(12<<2)|2,{110,102,0}}, +/* 43615 */ {(12<<2)|2,{110,102,0}}, +/* 43616 */ {(12<<2)|2,{110,103,0}}, +/* 43617 */ {(12<<2)|2,{110,103,0}}, +/* 43618 */ {(12<<2)|2,{110,103,0}}, +/* 43619 */ {(12<<2)|2,{110,103,0}}, +/* 43620 */ {(12<<2)|2,{110,103,0}}, +/* 43621 */ {(12<<2)|2,{110,103,0}}, +/* 43622 */ {(12<<2)|2,{110,103,0}}, +/* 43623 */ {(12<<2)|2,{110,103,0}}, +/* 43624 */ {(12<<2)|2,{110,103,0}}, +/* 43625 */ {(12<<2)|2,{110,103,0}}, +/* 43626 */ {(12<<2)|2,{110,103,0}}, +/* 43627 */ {(12<<2)|2,{110,103,0}}, +/* 43628 */ {(12<<2)|2,{110,103,0}}, +/* 43629 */ {(12<<2)|2,{110,103,0}}, +/* 43630 */ {(12<<2)|2,{110,103,0}}, +/* 43631 */ {(12<<2)|2,{110,103,0}}, +/* 43632 */ {(12<<2)|2,{110,104,0}}, +/* 43633 */ {(12<<2)|2,{110,104,0}}, +/* 43634 */ {(12<<2)|2,{110,104,0}}, +/* 43635 */ {(12<<2)|2,{110,104,0}}, +/* 43636 */ {(12<<2)|2,{110,104,0}}, +/* 43637 */ {(12<<2)|2,{110,104,0}}, +/* 43638 */ {(12<<2)|2,{110,104,0}}, +/* 43639 */ {(12<<2)|2,{110,104,0}}, +/* 43640 */ {(12<<2)|2,{110,104,0}}, +/* 43641 */ {(12<<2)|2,{110,104,0}}, +/* 43642 */ {(12<<2)|2,{110,104,0}}, +/* 43643 */ {(12<<2)|2,{110,104,0}}, +/* 43644 */ {(12<<2)|2,{110,104,0}}, +/* 43645 */ {(12<<2)|2,{110,104,0}}, +/* 43646 */ {(12<<2)|2,{110,104,0}}, +/* 43647 */ {(12<<2)|2,{110,104,0}}, +/* 43648 */ {(12<<2)|2,{110,108,0}}, +/* 43649 */ {(12<<2)|2,{110,108,0}}, +/* 43650 */ {(12<<2)|2,{110,108,0}}, +/* 43651 */ {(12<<2)|2,{110,108,0}}, +/* 43652 */ {(12<<2)|2,{110,108,0}}, +/* 43653 */ {(12<<2)|2,{110,108,0}}, +/* 43654 */ {(12<<2)|2,{110,108,0}}, +/* 43655 */ {(12<<2)|2,{110,108,0}}, +/* 43656 */ {(12<<2)|2,{110,108,0}}, +/* 43657 */ {(12<<2)|2,{110,108,0}}, +/* 43658 */ {(12<<2)|2,{110,108,0}}, +/* 43659 */ {(12<<2)|2,{110,108,0}}, +/* 43660 */ {(12<<2)|2,{110,108,0}}, +/* 43661 */ {(12<<2)|2,{110,108,0}}, +/* 43662 */ {(12<<2)|2,{110,108,0}}, +/* 43663 */ {(12<<2)|2,{110,108,0}}, +/* 43664 */ {(12<<2)|2,{110,109,0}}, +/* 43665 */ {(12<<2)|2,{110,109,0}}, +/* 43666 */ {(12<<2)|2,{110,109,0}}, +/* 43667 */ {(12<<2)|2,{110,109,0}}, +/* 43668 */ {(12<<2)|2,{110,109,0}}, +/* 43669 */ {(12<<2)|2,{110,109,0}}, +/* 43670 */ {(12<<2)|2,{110,109,0}}, +/* 43671 */ {(12<<2)|2,{110,109,0}}, +/* 43672 */ {(12<<2)|2,{110,109,0}}, +/* 43673 */ {(12<<2)|2,{110,109,0}}, +/* 43674 */ {(12<<2)|2,{110,109,0}}, +/* 43675 */ {(12<<2)|2,{110,109,0}}, +/* 43676 */ {(12<<2)|2,{110,109,0}}, +/* 43677 */ {(12<<2)|2,{110,109,0}}, +/* 43678 */ {(12<<2)|2,{110,109,0}}, +/* 43679 */ {(12<<2)|2,{110,109,0}}, +/* 43680 */ {(12<<2)|2,{110,110,0}}, +/* 43681 */ {(12<<2)|2,{110,110,0}}, +/* 43682 */ {(12<<2)|2,{110,110,0}}, +/* 43683 */ {(12<<2)|2,{110,110,0}}, +/* 43684 */ {(12<<2)|2,{110,110,0}}, +/* 43685 */ {(12<<2)|2,{110,110,0}}, +/* 43686 */ {(12<<2)|2,{110,110,0}}, +/* 43687 */ {(12<<2)|2,{110,110,0}}, +/* 43688 */ {(12<<2)|2,{110,110,0}}, +/* 43689 */ {(12<<2)|2,{110,110,0}}, +/* 43690 */ {(12<<2)|2,{110,110,0}}, +/* 43691 */ {(12<<2)|2,{110,110,0}}, +/* 43692 */ {(12<<2)|2,{110,110,0}}, +/* 43693 */ {(12<<2)|2,{110,110,0}}, +/* 43694 */ {(12<<2)|2,{110,110,0}}, +/* 43695 */ {(12<<2)|2,{110,110,0}}, +/* 43696 */ {(12<<2)|2,{110,112,0}}, +/* 43697 */ {(12<<2)|2,{110,112,0}}, +/* 43698 */ {(12<<2)|2,{110,112,0}}, +/* 43699 */ {(12<<2)|2,{110,112,0}}, +/* 43700 */ {(12<<2)|2,{110,112,0}}, +/* 43701 */ {(12<<2)|2,{110,112,0}}, +/* 43702 */ {(12<<2)|2,{110,112,0}}, +/* 43703 */ {(12<<2)|2,{110,112,0}}, +/* 43704 */ {(12<<2)|2,{110,112,0}}, +/* 43705 */ {(12<<2)|2,{110,112,0}}, +/* 43706 */ {(12<<2)|2,{110,112,0}}, +/* 43707 */ {(12<<2)|2,{110,112,0}}, +/* 43708 */ {(12<<2)|2,{110,112,0}}, +/* 43709 */ {(12<<2)|2,{110,112,0}}, +/* 43710 */ {(12<<2)|2,{110,112,0}}, +/* 43711 */ {(12<<2)|2,{110,112,0}}, +/* 43712 */ {(12<<2)|2,{110,114,0}}, +/* 43713 */ {(12<<2)|2,{110,114,0}}, +/* 43714 */ {(12<<2)|2,{110,114,0}}, +/* 43715 */ {(12<<2)|2,{110,114,0}}, +/* 43716 */ {(12<<2)|2,{110,114,0}}, +/* 43717 */ {(12<<2)|2,{110,114,0}}, +/* 43718 */ {(12<<2)|2,{110,114,0}}, +/* 43719 */ {(12<<2)|2,{110,114,0}}, +/* 43720 */ {(12<<2)|2,{110,114,0}}, +/* 43721 */ {(12<<2)|2,{110,114,0}}, +/* 43722 */ {(12<<2)|2,{110,114,0}}, +/* 43723 */ {(12<<2)|2,{110,114,0}}, +/* 43724 */ {(12<<2)|2,{110,114,0}}, +/* 43725 */ {(12<<2)|2,{110,114,0}}, +/* 43726 */ {(12<<2)|2,{110,114,0}}, +/* 43727 */ {(12<<2)|2,{110,114,0}}, +/* 43728 */ {(12<<2)|2,{110,117,0}}, +/* 43729 */ {(12<<2)|2,{110,117,0}}, +/* 43730 */ {(12<<2)|2,{110,117,0}}, +/* 43731 */ {(12<<2)|2,{110,117,0}}, +/* 43732 */ {(12<<2)|2,{110,117,0}}, +/* 43733 */ {(12<<2)|2,{110,117,0}}, +/* 43734 */ {(12<<2)|2,{110,117,0}}, +/* 43735 */ {(12<<2)|2,{110,117,0}}, +/* 43736 */ {(12<<2)|2,{110,117,0}}, +/* 43737 */ {(12<<2)|2,{110,117,0}}, +/* 43738 */ {(12<<2)|2,{110,117,0}}, +/* 43739 */ {(12<<2)|2,{110,117,0}}, +/* 43740 */ {(12<<2)|2,{110,117,0}}, +/* 43741 */ {(12<<2)|2,{110,117,0}}, +/* 43742 */ {(12<<2)|2,{110,117,0}}, +/* 43743 */ {(12<<2)|2,{110,117,0}}, +/* 43744 */ {(13<<2)|2,{110,58,0}}, +/* 43745 */ {(13<<2)|2,{110,58,0}}, +/* 43746 */ {(13<<2)|2,{110,58,0}}, +/* 43747 */ {(13<<2)|2,{110,58,0}}, +/* 43748 */ {(13<<2)|2,{110,58,0}}, +/* 43749 */ {(13<<2)|2,{110,58,0}}, +/* 43750 */ {(13<<2)|2,{110,58,0}}, +/* 43751 */ {(13<<2)|2,{110,58,0}}, +/* 43752 */ {(13<<2)|2,{110,66,0}}, +/* 43753 */ {(13<<2)|2,{110,66,0}}, +/* 43754 */ {(13<<2)|2,{110,66,0}}, +/* 43755 */ {(13<<2)|2,{110,66,0}}, +/* 43756 */ {(13<<2)|2,{110,66,0}}, +/* 43757 */ {(13<<2)|2,{110,66,0}}, +/* 43758 */ {(13<<2)|2,{110,66,0}}, +/* 43759 */ {(13<<2)|2,{110,66,0}}, +/* 43760 */ {(13<<2)|2,{110,67,0}}, +/* 43761 */ {(13<<2)|2,{110,67,0}}, +/* 43762 */ {(13<<2)|2,{110,67,0}}, +/* 43763 */ {(13<<2)|2,{110,67,0}}, +/* 43764 */ {(13<<2)|2,{110,67,0}}, +/* 43765 */ {(13<<2)|2,{110,67,0}}, +/* 43766 */ {(13<<2)|2,{110,67,0}}, +/* 43767 */ {(13<<2)|2,{110,67,0}}, +/* 43768 */ {(13<<2)|2,{110,68,0}}, +/* 43769 */ {(13<<2)|2,{110,68,0}}, +/* 43770 */ {(13<<2)|2,{110,68,0}}, +/* 43771 */ {(13<<2)|2,{110,68,0}}, +/* 43772 */ {(13<<2)|2,{110,68,0}}, +/* 43773 */ {(13<<2)|2,{110,68,0}}, +/* 43774 */ {(13<<2)|2,{110,68,0}}, +/* 43775 */ {(13<<2)|2,{110,68,0}}, +/* 43776 */ {(13<<2)|2,{110,69,0}}, +/* 43777 */ {(13<<2)|2,{110,69,0}}, +/* 43778 */ {(13<<2)|2,{110,69,0}}, +/* 43779 */ {(13<<2)|2,{110,69,0}}, +/* 43780 */ {(13<<2)|2,{110,69,0}}, +/* 43781 */ {(13<<2)|2,{110,69,0}}, +/* 43782 */ {(13<<2)|2,{110,69,0}}, +/* 43783 */ {(13<<2)|2,{110,69,0}}, +/* 43784 */ {(13<<2)|2,{110,70,0}}, +/* 43785 */ {(13<<2)|2,{110,70,0}}, +/* 43786 */ {(13<<2)|2,{110,70,0}}, +/* 43787 */ {(13<<2)|2,{110,70,0}}, +/* 43788 */ {(13<<2)|2,{110,70,0}}, +/* 43789 */ {(13<<2)|2,{110,70,0}}, +/* 43790 */ {(13<<2)|2,{110,70,0}}, +/* 43791 */ {(13<<2)|2,{110,70,0}}, +/* 43792 */ {(13<<2)|2,{110,71,0}}, +/* 43793 */ {(13<<2)|2,{110,71,0}}, +/* 43794 */ {(13<<2)|2,{110,71,0}}, +/* 43795 */ {(13<<2)|2,{110,71,0}}, +/* 43796 */ {(13<<2)|2,{110,71,0}}, +/* 43797 */ {(13<<2)|2,{110,71,0}}, +/* 43798 */ {(13<<2)|2,{110,71,0}}, +/* 43799 */ {(13<<2)|2,{110,71,0}}, +/* 43800 */ {(13<<2)|2,{110,72,0}}, +/* 43801 */ {(13<<2)|2,{110,72,0}}, +/* 43802 */ {(13<<2)|2,{110,72,0}}, +/* 43803 */ {(13<<2)|2,{110,72,0}}, +/* 43804 */ {(13<<2)|2,{110,72,0}}, +/* 43805 */ {(13<<2)|2,{110,72,0}}, +/* 43806 */ {(13<<2)|2,{110,72,0}}, +/* 43807 */ {(13<<2)|2,{110,72,0}}, +/* 43808 */ {(13<<2)|2,{110,73,0}}, +/* 43809 */ {(13<<2)|2,{110,73,0}}, +/* 43810 */ {(13<<2)|2,{110,73,0}}, +/* 43811 */ {(13<<2)|2,{110,73,0}}, +/* 43812 */ {(13<<2)|2,{110,73,0}}, +/* 43813 */ {(13<<2)|2,{110,73,0}}, +/* 43814 */ {(13<<2)|2,{110,73,0}}, +/* 43815 */ {(13<<2)|2,{110,73,0}}, +/* 43816 */ {(13<<2)|2,{110,74,0}}, +/* 43817 */ {(13<<2)|2,{110,74,0}}, +/* 43818 */ {(13<<2)|2,{110,74,0}}, +/* 43819 */ {(13<<2)|2,{110,74,0}}, +/* 43820 */ {(13<<2)|2,{110,74,0}}, +/* 43821 */ {(13<<2)|2,{110,74,0}}, +/* 43822 */ {(13<<2)|2,{110,74,0}}, +/* 43823 */ {(13<<2)|2,{110,74,0}}, +/* 43824 */ {(13<<2)|2,{110,75,0}}, +/* 43825 */ {(13<<2)|2,{110,75,0}}, +/* 43826 */ {(13<<2)|2,{110,75,0}}, +/* 43827 */ {(13<<2)|2,{110,75,0}}, +/* 43828 */ {(13<<2)|2,{110,75,0}}, +/* 43829 */ {(13<<2)|2,{110,75,0}}, +/* 43830 */ {(13<<2)|2,{110,75,0}}, +/* 43831 */ {(13<<2)|2,{110,75,0}}, +/* 43832 */ {(13<<2)|2,{110,76,0}}, +/* 43833 */ {(13<<2)|2,{110,76,0}}, +/* 43834 */ {(13<<2)|2,{110,76,0}}, +/* 43835 */ {(13<<2)|2,{110,76,0}}, +/* 43836 */ {(13<<2)|2,{110,76,0}}, +/* 43837 */ {(13<<2)|2,{110,76,0}}, +/* 43838 */ {(13<<2)|2,{110,76,0}}, +/* 43839 */ {(13<<2)|2,{110,76,0}}, +/* 43840 */ {(13<<2)|2,{110,77,0}}, +/* 43841 */ {(13<<2)|2,{110,77,0}}, +/* 43842 */ {(13<<2)|2,{110,77,0}}, +/* 43843 */ {(13<<2)|2,{110,77,0}}, +/* 43844 */ {(13<<2)|2,{110,77,0}}, +/* 43845 */ {(13<<2)|2,{110,77,0}}, +/* 43846 */ {(13<<2)|2,{110,77,0}}, +/* 43847 */ {(13<<2)|2,{110,77,0}}, +/* 43848 */ {(13<<2)|2,{110,78,0}}, +/* 43849 */ {(13<<2)|2,{110,78,0}}, +/* 43850 */ {(13<<2)|2,{110,78,0}}, +/* 43851 */ {(13<<2)|2,{110,78,0}}, +/* 43852 */ {(13<<2)|2,{110,78,0}}, +/* 43853 */ {(13<<2)|2,{110,78,0}}, +/* 43854 */ {(13<<2)|2,{110,78,0}}, +/* 43855 */ {(13<<2)|2,{110,78,0}}, +/* 43856 */ {(13<<2)|2,{110,79,0}}, +/* 43857 */ {(13<<2)|2,{110,79,0}}, +/* 43858 */ {(13<<2)|2,{110,79,0}}, +/* 43859 */ {(13<<2)|2,{110,79,0}}, +/* 43860 */ {(13<<2)|2,{110,79,0}}, +/* 43861 */ {(13<<2)|2,{110,79,0}}, +/* 43862 */ {(13<<2)|2,{110,79,0}}, +/* 43863 */ {(13<<2)|2,{110,79,0}}, +/* 43864 */ {(13<<2)|2,{110,80,0}}, +/* 43865 */ {(13<<2)|2,{110,80,0}}, +/* 43866 */ {(13<<2)|2,{110,80,0}}, +/* 43867 */ {(13<<2)|2,{110,80,0}}, +/* 43868 */ {(13<<2)|2,{110,80,0}}, +/* 43869 */ {(13<<2)|2,{110,80,0}}, +/* 43870 */ {(13<<2)|2,{110,80,0}}, +/* 43871 */ {(13<<2)|2,{110,80,0}}, +/* 43872 */ {(13<<2)|2,{110,81,0}}, +/* 43873 */ {(13<<2)|2,{110,81,0}}, +/* 43874 */ {(13<<2)|2,{110,81,0}}, +/* 43875 */ {(13<<2)|2,{110,81,0}}, +/* 43876 */ {(13<<2)|2,{110,81,0}}, +/* 43877 */ {(13<<2)|2,{110,81,0}}, +/* 43878 */ {(13<<2)|2,{110,81,0}}, +/* 43879 */ {(13<<2)|2,{110,81,0}}, +/* 43880 */ {(13<<2)|2,{110,82,0}}, +/* 43881 */ {(13<<2)|2,{110,82,0}}, +/* 43882 */ {(13<<2)|2,{110,82,0}}, +/* 43883 */ {(13<<2)|2,{110,82,0}}, +/* 43884 */ {(13<<2)|2,{110,82,0}}, +/* 43885 */ {(13<<2)|2,{110,82,0}}, +/* 43886 */ {(13<<2)|2,{110,82,0}}, +/* 43887 */ {(13<<2)|2,{110,82,0}}, +/* 43888 */ {(13<<2)|2,{110,83,0}}, +/* 43889 */ {(13<<2)|2,{110,83,0}}, +/* 43890 */ {(13<<2)|2,{110,83,0}}, +/* 43891 */ {(13<<2)|2,{110,83,0}}, +/* 43892 */ {(13<<2)|2,{110,83,0}}, +/* 43893 */ {(13<<2)|2,{110,83,0}}, +/* 43894 */ {(13<<2)|2,{110,83,0}}, +/* 43895 */ {(13<<2)|2,{110,83,0}}, +/* 43896 */ {(13<<2)|2,{110,84,0}}, +/* 43897 */ {(13<<2)|2,{110,84,0}}, +/* 43898 */ {(13<<2)|2,{110,84,0}}, +/* 43899 */ {(13<<2)|2,{110,84,0}}, +/* 43900 */ {(13<<2)|2,{110,84,0}}, +/* 43901 */ {(13<<2)|2,{110,84,0}}, +/* 43902 */ {(13<<2)|2,{110,84,0}}, +/* 43903 */ {(13<<2)|2,{110,84,0}}, +/* 43904 */ {(13<<2)|2,{110,85,0}}, +/* 43905 */ {(13<<2)|2,{110,85,0}}, +/* 43906 */ {(13<<2)|2,{110,85,0}}, +/* 43907 */ {(13<<2)|2,{110,85,0}}, +/* 43908 */ {(13<<2)|2,{110,85,0}}, +/* 43909 */ {(13<<2)|2,{110,85,0}}, +/* 43910 */ {(13<<2)|2,{110,85,0}}, +/* 43911 */ {(13<<2)|2,{110,85,0}}, +/* 43912 */ {(13<<2)|2,{110,86,0}}, +/* 43913 */ {(13<<2)|2,{110,86,0}}, +/* 43914 */ {(13<<2)|2,{110,86,0}}, +/* 43915 */ {(13<<2)|2,{110,86,0}}, +/* 43916 */ {(13<<2)|2,{110,86,0}}, +/* 43917 */ {(13<<2)|2,{110,86,0}}, +/* 43918 */ {(13<<2)|2,{110,86,0}}, +/* 43919 */ {(13<<2)|2,{110,86,0}}, +/* 43920 */ {(13<<2)|2,{110,87,0}}, +/* 43921 */ {(13<<2)|2,{110,87,0}}, +/* 43922 */ {(13<<2)|2,{110,87,0}}, +/* 43923 */ {(13<<2)|2,{110,87,0}}, +/* 43924 */ {(13<<2)|2,{110,87,0}}, +/* 43925 */ {(13<<2)|2,{110,87,0}}, +/* 43926 */ {(13<<2)|2,{110,87,0}}, +/* 43927 */ {(13<<2)|2,{110,87,0}}, +/* 43928 */ {(13<<2)|2,{110,89,0}}, +/* 43929 */ {(13<<2)|2,{110,89,0}}, +/* 43930 */ {(13<<2)|2,{110,89,0}}, +/* 43931 */ {(13<<2)|2,{110,89,0}}, +/* 43932 */ {(13<<2)|2,{110,89,0}}, +/* 43933 */ {(13<<2)|2,{110,89,0}}, +/* 43934 */ {(13<<2)|2,{110,89,0}}, +/* 43935 */ {(13<<2)|2,{110,89,0}}, +/* 43936 */ {(13<<2)|2,{110,106,0}}, +/* 43937 */ {(13<<2)|2,{110,106,0}}, +/* 43938 */ {(13<<2)|2,{110,106,0}}, +/* 43939 */ {(13<<2)|2,{110,106,0}}, +/* 43940 */ {(13<<2)|2,{110,106,0}}, +/* 43941 */ {(13<<2)|2,{110,106,0}}, +/* 43942 */ {(13<<2)|2,{110,106,0}}, +/* 43943 */ {(13<<2)|2,{110,106,0}}, +/* 43944 */ {(13<<2)|2,{110,107,0}}, +/* 43945 */ {(13<<2)|2,{110,107,0}}, +/* 43946 */ {(13<<2)|2,{110,107,0}}, +/* 43947 */ {(13<<2)|2,{110,107,0}}, +/* 43948 */ {(13<<2)|2,{110,107,0}}, +/* 43949 */ {(13<<2)|2,{110,107,0}}, +/* 43950 */ {(13<<2)|2,{110,107,0}}, +/* 43951 */ {(13<<2)|2,{110,107,0}}, +/* 43952 */ {(13<<2)|2,{110,113,0}}, +/* 43953 */ {(13<<2)|2,{110,113,0}}, +/* 43954 */ {(13<<2)|2,{110,113,0}}, +/* 43955 */ {(13<<2)|2,{110,113,0}}, +/* 43956 */ {(13<<2)|2,{110,113,0}}, +/* 43957 */ {(13<<2)|2,{110,113,0}}, +/* 43958 */ {(13<<2)|2,{110,113,0}}, +/* 43959 */ {(13<<2)|2,{110,113,0}}, +/* 43960 */ {(13<<2)|2,{110,118,0}}, +/* 43961 */ {(13<<2)|2,{110,118,0}}, +/* 43962 */ {(13<<2)|2,{110,118,0}}, +/* 43963 */ {(13<<2)|2,{110,118,0}}, +/* 43964 */ {(13<<2)|2,{110,118,0}}, +/* 43965 */ {(13<<2)|2,{110,118,0}}, +/* 43966 */ {(13<<2)|2,{110,118,0}}, +/* 43967 */ {(13<<2)|2,{110,118,0}}, +/* 43968 */ {(13<<2)|2,{110,119,0}}, +/* 43969 */ {(13<<2)|2,{110,119,0}}, +/* 43970 */ {(13<<2)|2,{110,119,0}}, +/* 43971 */ {(13<<2)|2,{110,119,0}}, +/* 43972 */ {(13<<2)|2,{110,119,0}}, +/* 43973 */ {(13<<2)|2,{110,119,0}}, +/* 43974 */ {(13<<2)|2,{110,119,0}}, +/* 43975 */ {(13<<2)|2,{110,119,0}}, +/* 43976 */ {(13<<2)|2,{110,120,0}}, +/* 43977 */ {(13<<2)|2,{110,120,0}}, +/* 43978 */ {(13<<2)|2,{110,120,0}}, +/* 43979 */ {(13<<2)|2,{110,120,0}}, +/* 43980 */ {(13<<2)|2,{110,120,0}}, +/* 43981 */ {(13<<2)|2,{110,120,0}}, +/* 43982 */ {(13<<2)|2,{110,120,0}}, +/* 43983 */ {(13<<2)|2,{110,120,0}}, +/* 43984 */ {(13<<2)|2,{110,121,0}}, +/* 43985 */ {(13<<2)|2,{110,121,0}}, +/* 43986 */ {(13<<2)|2,{110,121,0}}, +/* 43987 */ {(13<<2)|2,{110,121,0}}, +/* 43988 */ {(13<<2)|2,{110,121,0}}, +/* 43989 */ {(13<<2)|2,{110,121,0}}, +/* 43990 */ {(13<<2)|2,{110,121,0}}, +/* 43991 */ {(13<<2)|2,{110,121,0}}, +/* 43992 */ {(13<<2)|2,{110,122,0}}, +/* 43993 */ {(13<<2)|2,{110,122,0}}, +/* 43994 */ {(13<<2)|2,{110,122,0}}, +/* 43995 */ {(13<<2)|2,{110,122,0}}, +/* 43996 */ {(13<<2)|2,{110,122,0}}, +/* 43997 */ {(13<<2)|2,{110,122,0}}, +/* 43998 */ {(13<<2)|2,{110,122,0}}, +/* 43999 */ {(13<<2)|2,{110,122,0}}, +/* 44000 */ {(14<<2)|2,{110,38,0}}, +/* 44001 */ {(14<<2)|2,{110,38,0}}, +/* 44002 */ {(14<<2)|2,{110,38,0}}, +/* 44003 */ {(14<<2)|2,{110,38,0}}, +/* 44004 */ {(14<<2)|2,{110,42,0}}, +/* 44005 */ {(14<<2)|2,{110,42,0}}, +/* 44006 */ {(14<<2)|2,{110,42,0}}, +/* 44007 */ {(14<<2)|2,{110,42,0}}, +/* 44008 */ {(14<<2)|2,{110,44,0}}, +/* 44009 */ {(14<<2)|2,{110,44,0}}, +/* 44010 */ {(14<<2)|2,{110,44,0}}, +/* 44011 */ {(14<<2)|2,{110,44,0}}, +/* 44012 */ {(14<<2)|2,{110,59,0}}, +/* 44013 */ {(14<<2)|2,{110,59,0}}, +/* 44014 */ {(14<<2)|2,{110,59,0}}, +/* 44015 */ {(14<<2)|2,{110,59,0}}, +/* 44016 */ {(14<<2)|2,{110,88,0}}, +/* 44017 */ {(14<<2)|2,{110,88,0}}, +/* 44018 */ {(14<<2)|2,{110,88,0}}, +/* 44019 */ {(14<<2)|2,{110,88,0}}, +/* 44020 */ {(14<<2)|2,{110,90,0}}, +/* 44021 */ {(14<<2)|2,{110,90,0}}, +/* 44022 */ {(14<<2)|2,{110,90,0}}, +/* 44023 */ {(14<<2)|2,{110,90,0}}, +/* 44024 */ {(16<<2)|2,{110,33,0}}, +/* 44025 */ {(16<<2)|2,{110,34,0}}, +/* 44026 */ {(16<<2)|2,{110,40,0}}, +/* 44027 */ {(16<<2)|2,{110,41,0}}, +/* 44028 */ {(16<<2)|2,{110,63,0}}, +/* 44029 */ {(6<<2)|1,{110,0,0}}, +/* 44030 */ {(6<<2)|1,{110,0,0}}, +/* 44031 */ {(6<<2)|1,{110,0,0}}, +/* 44032 */ {(16<<2)|3,{112,48,48}}, +/* 44033 */ {(16<<2)|3,{112,48,49}}, +/* 44034 */ {(16<<2)|3,{112,48,50}}, +/* 44035 */ {(16<<2)|3,{112,48,97}}, +/* 44036 */ {(16<<2)|3,{112,48,99}}, +/* 44037 */ {(16<<2)|3,{112,48,101}}, +/* 44038 */ {(16<<2)|3,{112,48,105}}, +/* 44039 */ {(16<<2)|3,{112,48,111}}, +/* 44040 */ {(16<<2)|3,{112,48,115}}, +/* 44041 */ {(16<<2)|3,{112,48,116}}, +/* 44042 */ {(11<<2)|2,{112,48,0}}, +/* 44043 */ {(11<<2)|2,{112,48,0}}, +/* 44044 */ {(11<<2)|2,{112,48,0}}, +/* 44045 */ {(11<<2)|2,{112,48,0}}, +/* 44046 */ {(11<<2)|2,{112,48,0}}, +/* 44047 */ {(11<<2)|2,{112,48,0}}, +/* 44048 */ {(11<<2)|2,{112,48,0}}, +/* 44049 */ {(11<<2)|2,{112,48,0}}, +/* 44050 */ {(11<<2)|2,{112,48,0}}, +/* 44051 */ {(11<<2)|2,{112,48,0}}, +/* 44052 */ {(11<<2)|2,{112,48,0}}, +/* 44053 */ {(11<<2)|2,{112,48,0}}, +/* 44054 */ {(11<<2)|2,{112,48,0}}, +/* 44055 */ {(11<<2)|2,{112,48,0}}, +/* 44056 */ {(11<<2)|2,{112,48,0}}, +/* 44057 */ {(11<<2)|2,{112,48,0}}, +/* 44058 */ {(11<<2)|2,{112,48,0}}, +/* 44059 */ {(11<<2)|2,{112,48,0}}, +/* 44060 */ {(11<<2)|2,{112,48,0}}, +/* 44061 */ {(11<<2)|2,{112,48,0}}, +/* 44062 */ {(11<<2)|2,{112,48,0}}, +/* 44063 */ {(11<<2)|2,{112,48,0}}, +/* 44064 */ {(16<<2)|3,{112,49,48}}, +/* 44065 */ {(16<<2)|3,{112,49,49}}, +/* 44066 */ {(16<<2)|3,{112,49,50}}, +/* 44067 */ {(16<<2)|3,{112,49,97}}, +/* 44068 */ {(16<<2)|3,{112,49,99}}, +/* 44069 */ {(16<<2)|3,{112,49,101}}, +/* 44070 */ {(16<<2)|3,{112,49,105}}, +/* 44071 */ {(16<<2)|3,{112,49,111}}, +/* 44072 */ {(16<<2)|3,{112,49,115}}, +/* 44073 */ {(16<<2)|3,{112,49,116}}, +/* 44074 */ {(11<<2)|2,{112,49,0}}, +/* 44075 */ {(11<<2)|2,{112,49,0}}, +/* 44076 */ {(11<<2)|2,{112,49,0}}, +/* 44077 */ {(11<<2)|2,{112,49,0}}, +/* 44078 */ {(11<<2)|2,{112,49,0}}, +/* 44079 */ {(11<<2)|2,{112,49,0}}, +/* 44080 */ {(11<<2)|2,{112,49,0}}, +/* 44081 */ {(11<<2)|2,{112,49,0}}, +/* 44082 */ {(11<<2)|2,{112,49,0}}, +/* 44083 */ {(11<<2)|2,{112,49,0}}, +/* 44084 */ {(11<<2)|2,{112,49,0}}, +/* 44085 */ {(11<<2)|2,{112,49,0}}, +/* 44086 */ {(11<<2)|2,{112,49,0}}, +/* 44087 */ {(11<<2)|2,{112,49,0}}, +/* 44088 */ {(11<<2)|2,{112,49,0}}, +/* 44089 */ {(11<<2)|2,{112,49,0}}, +/* 44090 */ {(11<<2)|2,{112,49,0}}, +/* 44091 */ {(11<<2)|2,{112,49,0}}, +/* 44092 */ {(11<<2)|2,{112,49,0}}, +/* 44093 */ {(11<<2)|2,{112,49,0}}, +/* 44094 */ {(11<<2)|2,{112,49,0}}, +/* 44095 */ {(11<<2)|2,{112,49,0}}, +/* 44096 */ {(16<<2)|3,{112,50,48}}, +/* 44097 */ {(16<<2)|3,{112,50,49}}, +/* 44098 */ {(16<<2)|3,{112,50,50}}, +/* 44099 */ {(16<<2)|3,{112,50,97}}, +/* 44100 */ {(16<<2)|3,{112,50,99}}, +/* 44101 */ {(16<<2)|3,{112,50,101}}, +/* 44102 */ {(16<<2)|3,{112,50,105}}, +/* 44103 */ {(16<<2)|3,{112,50,111}}, +/* 44104 */ {(16<<2)|3,{112,50,115}}, +/* 44105 */ {(16<<2)|3,{112,50,116}}, +/* 44106 */ {(11<<2)|2,{112,50,0}}, +/* 44107 */ {(11<<2)|2,{112,50,0}}, +/* 44108 */ {(11<<2)|2,{112,50,0}}, +/* 44109 */ {(11<<2)|2,{112,50,0}}, +/* 44110 */ {(11<<2)|2,{112,50,0}}, +/* 44111 */ {(11<<2)|2,{112,50,0}}, +/* 44112 */ {(11<<2)|2,{112,50,0}}, +/* 44113 */ {(11<<2)|2,{112,50,0}}, +/* 44114 */ {(11<<2)|2,{112,50,0}}, +/* 44115 */ {(11<<2)|2,{112,50,0}}, +/* 44116 */ {(11<<2)|2,{112,50,0}}, +/* 44117 */ {(11<<2)|2,{112,50,0}}, +/* 44118 */ {(11<<2)|2,{112,50,0}}, +/* 44119 */ {(11<<2)|2,{112,50,0}}, +/* 44120 */ {(11<<2)|2,{112,50,0}}, +/* 44121 */ {(11<<2)|2,{112,50,0}}, +/* 44122 */ {(11<<2)|2,{112,50,0}}, +/* 44123 */ {(11<<2)|2,{112,50,0}}, +/* 44124 */ {(11<<2)|2,{112,50,0}}, +/* 44125 */ {(11<<2)|2,{112,50,0}}, +/* 44126 */ {(11<<2)|2,{112,50,0}}, +/* 44127 */ {(11<<2)|2,{112,50,0}}, +/* 44128 */ {(16<<2)|3,{112,97,48}}, +/* 44129 */ {(16<<2)|3,{112,97,49}}, +/* 44130 */ {(16<<2)|3,{112,97,50}}, +/* 44131 */ {(16<<2)|3,{112,97,97}}, +/* 44132 */ {(16<<2)|3,{112,97,99}}, +/* 44133 */ {(16<<2)|3,{112,97,101}}, +/* 44134 */ {(16<<2)|3,{112,97,105}}, +/* 44135 */ {(16<<2)|3,{112,97,111}}, +/* 44136 */ {(16<<2)|3,{112,97,115}}, +/* 44137 */ {(16<<2)|3,{112,97,116}}, +/* 44138 */ {(11<<2)|2,{112,97,0}}, +/* 44139 */ {(11<<2)|2,{112,97,0}}, +/* 44140 */ {(11<<2)|2,{112,97,0}}, +/* 44141 */ {(11<<2)|2,{112,97,0}}, +/* 44142 */ {(11<<2)|2,{112,97,0}}, +/* 44143 */ {(11<<2)|2,{112,97,0}}, +/* 44144 */ {(11<<2)|2,{112,97,0}}, +/* 44145 */ {(11<<2)|2,{112,97,0}}, +/* 44146 */ {(11<<2)|2,{112,97,0}}, +/* 44147 */ {(11<<2)|2,{112,97,0}}, +/* 44148 */ {(11<<2)|2,{112,97,0}}, +/* 44149 */ {(11<<2)|2,{112,97,0}}, +/* 44150 */ {(11<<2)|2,{112,97,0}}, +/* 44151 */ {(11<<2)|2,{112,97,0}}, +/* 44152 */ {(11<<2)|2,{112,97,0}}, +/* 44153 */ {(11<<2)|2,{112,97,0}}, +/* 44154 */ {(11<<2)|2,{112,97,0}}, +/* 44155 */ {(11<<2)|2,{112,97,0}}, +/* 44156 */ {(11<<2)|2,{112,97,0}}, +/* 44157 */ {(11<<2)|2,{112,97,0}}, +/* 44158 */ {(11<<2)|2,{112,97,0}}, +/* 44159 */ {(11<<2)|2,{112,97,0}}, +/* 44160 */ {(16<<2)|3,{112,99,48}}, +/* 44161 */ {(16<<2)|3,{112,99,49}}, +/* 44162 */ {(16<<2)|3,{112,99,50}}, +/* 44163 */ {(16<<2)|3,{112,99,97}}, +/* 44164 */ {(16<<2)|3,{112,99,99}}, +/* 44165 */ {(16<<2)|3,{112,99,101}}, +/* 44166 */ {(16<<2)|3,{112,99,105}}, +/* 44167 */ {(16<<2)|3,{112,99,111}}, +/* 44168 */ {(16<<2)|3,{112,99,115}}, +/* 44169 */ {(16<<2)|3,{112,99,116}}, +/* 44170 */ {(11<<2)|2,{112,99,0}}, +/* 44171 */ {(11<<2)|2,{112,99,0}}, +/* 44172 */ {(11<<2)|2,{112,99,0}}, +/* 44173 */ {(11<<2)|2,{112,99,0}}, +/* 44174 */ {(11<<2)|2,{112,99,0}}, +/* 44175 */ {(11<<2)|2,{112,99,0}}, +/* 44176 */ {(11<<2)|2,{112,99,0}}, +/* 44177 */ {(11<<2)|2,{112,99,0}}, +/* 44178 */ {(11<<2)|2,{112,99,0}}, +/* 44179 */ {(11<<2)|2,{112,99,0}}, +/* 44180 */ {(11<<2)|2,{112,99,0}}, +/* 44181 */ {(11<<2)|2,{112,99,0}}, +/* 44182 */ {(11<<2)|2,{112,99,0}}, +/* 44183 */ {(11<<2)|2,{112,99,0}}, +/* 44184 */ {(11<<2)|2,{112,99,0}}, +/* 44185 */ {(11<<2)|2,{112,99,0}}, +/* 44186 */ {(11<<2)|2,{112,99,0}}, +/* 44187 */ {(11<<2)|2,{112,99,0}}, +/* 44188 */ {(11<<2)|2,{112,99,0}}, +/* 44189 */ {(11<<2)|2,{112,99,0}}, +/* 44190 */ {(11<<2)|2,{112,99,0}}, +/* 44191 */ {(11<<2)|2,{112,99,0}}, +/* 44192 */ {(16<<2)|3,{112,101,48}}, +/* 44193 */ {(16<<2)|3,{112,101,49}}, +/* 44194 */ {(16<<2)|3,{112,101,50}}, +/* 44195 */ {(16<<2)|3,{112,101,97}}, +/* 44196 */ {(16<<2)|3,{112,101,99}}, +/* 44197 */ {(16<<2)|3,{112,101,101}}, +/* 44198 */ {(16<<2)|3,{112,101,105}}, +/* 44199 */ {(16<<2)|3,{112,101,111}}, +/* 44200 */ {(16<<2)|3,{112,101,115}}, +/* 44201 */ {(16<<2)|3,{112,101,116}}, +/* 44202 */ {(11<<2)|2,{112,101,0}}, +/* 44203 */ {(11<<2)|2,{112,101,0}}, +/* 44204 */ {(11<<2)|2,{112,101,0}}, +/* 44205 */ {(11<<2)|2,{112,101,0}}, +/* 44206 */ {(11<<2)|2,{112,101,0}}, +/* 44207 */ {(11<<2)|2,{112,101,0}}, +/* 44208 */ {(11<<2)|2,{112,101,0}}, +/* 44209 */ {(11<<2)|2,{112,101,0}}, +/* 44210 */ {(11<<2)|2,{112,101,0}}, +/* 44211 */ {(11<<2)|2,{112,101,0}}, +/* 44212 */ {(11<<2)|2,{112,101,0}}, +/* 44213 */ {(11<<2)|2,{112,101,0}}, +/* 44214 */ {(11<<2)|2,{112,101,0}}, +/* 44215 */ {(11<<2)|2,{112,101,0}}, +/* 44216 */ {(11<<2)|2,{112,101,0}}, +/* 44217 */ {(11<<2)|2,{112,101,0}}, +/* 44218 */ {(11<<2)|2,{112,101,0}}, +/* 44219 */ {(11<<2)|2,{112,101,0}}, +/* 44220 */ {(11<<2)|2,{112,101,0}}, +/* 44221 */ {(11<<2)|2,{112,101,0}}, +/* 44222 */ {(11<<2)|2,{112,101,0}}, +/* 44223 */ {(11<<2)|2,{112,101,0}}, +/* 44224 */ {(16<<2)|3,{112,105,48}}, +/* 44225 */ {(16<<2)|3,{112,105,49}}, +/* 44226 */ {(16<<2)|3,{112,105,50}}, +/* 44227 */ {(16<<2)|3,{112,105,97}}, +/* 44228 */ {(16<<2)|3,{112,105,99}}, +/* 44229 */ {(16<<2)|3,{112,105,101}}, +/* 44230 */ {(16<<2)|3,{112,105,105}}, +/* 44231 */ {(16<<2)|3,{112,105,111}}, +/* 44232 */ {(16<<2)|3,{112,105,115}}, +/* 44233 */ {(16<<2)|3,{112,105,116}}, +/* 44234 */ {(11<<2)|2,{112,105,0}}, +/* 44235 */ {(11<<2)|2,{112,105,0}}, +/* 44236 */ {(11<<2)|2,{112,105,0}}, +/* 44237 */ {(11<<2)|2,{112,105,0}}, +/* 44238 */ {(11<<2)|2,{112,105,0}}, +/* 44239 */ {(11<<2)|2,{112,105,0}}, +/* 44240 */ {(11<<2)|2,{112,105,0}}, +/* 44241 */ {(11<<2)|2,{112,105,0}}, +/* 44242 */ {(11<<2)|2,{112,105,0}}, +/* 44243 */ {(11<<2)|2,{112,105,0}}, +/* 44244 */ {(11<<2)|2,{112,105,0}}, +/* 44245 */ {(11<<2)|2,{112,105,0}}, +/* 44246 */ {(11<<2)|2,{112,105,0}}, +/* 44247 */ {(11<<2)|2,{112,105,0}}, +/* 44248 */ {(11<<2)|2,{112,105,0}}, +/* 44249 */ {(11<<2)|2,{112,105,0}}, +/* 44250 */ {(11<<2)|2,{112,105,0}}, +/* 44251 */ {(11<<2)|2,{112,105,0}}, +/* 44252 */ {(11<<2)|2,{112,105,0}}, +/* 44253 */ {(11<<2)|2,{112,105,0}}, +/* 44254 */ {(11<<2)|2,{112,105,0}}, +/* 44255 */ {(11<<2)|2,{112,105,0}}, +/* 44256 */ {(16<<2)|3,{112,111,48}}, +/* 44257 */ {(16<<2)|3,{112,111,49}}, +/* 44258 */ {(16<<2)|3,{112,111,50}}, +/* 44259 */ {(16<<2)|3,{112,111,97}}, +/* 44260 */ {(16<<2)|3,{112,111,99}}, +/* 44261 */ {(16<<2)|3,{112,111,101}}, +/* 44262 */ {(16<<2)|3,{112,111,105}}, +/* 44263 */ {(16<<2)|3,{112,111,111}}, +/* 44264 */ {(16<<2)|3,{112,111,115}}, +/* 44265 */ {(16<<2)|3,{112,111,116}}, +/* 44266 */ {(11<<2)|2,{112,111,0}}, +/* 44267 */ {(11<<2)|2,{112,111,0}}, +/* 44268 */ {(11<<2)|2,{112,111,0}}, +/* 44269 */ {(11<<2)|2,{112,111,0}}, +/* 44270 */ {(11<<2)|2,{112,111,0}}, +/* 44271 */ {(11<<2)|2,{112,111,0}}, +/* 44272 */ {(11<<2)|2,{112,111,0}}, +/* 44273 */ {(11<<2)|2,{112,111,0}}, +/* 44274 */ {(11<<2)|2,{112,111,0}}, +/* 44275 */ {(11<<2)|2,{112,111,0}}, +/* 44276 */ {(11<<2)|2,{112,111,0}}, +/* 44277 */ {(11<<2)|2,{112,111,0}}, +/* 44278 */ {(11<<2)|2,{112,111,0}}, +/* 44279 */ {(11<<2)|2,{112,111,0}}, +/* 44280 */ {(11<<2)|2,{112,111,0}}, +/* 44281 */ {(11<<2)|2,{112,111,0}}, +/* 44282 */ {(11<<2)|2,{112,111,0}}, +/* 44283 */ {(11<<2)|2,{112,111,0}}, +/* 44284 */ {(11<<2)|2,{112,111,0}}, +/* 44285 */ {(11<<2)|2,{112,111,0}}, +/* 44286 */ {(11<<2)|2,{112,111,0}}, +/* 44287 */ {(11<<2)|2,{112,111,0}}, +/* 44288 */ {(16<<2)|3,{112,115,48}}, +/* 44289 */ {(16<<2)|3,{112,115,49}}, +/* 44290 */ {(16<<2)|3,{112,115,50}}, +/* 44291 */ {(16<<2)|3,{112,115,97}}, +/* 44292 */ {(16<<2)|3,{112,115,99}}, +/* 44293 */ {(16<<2)|3,{112,115,101}}, +/* 44294 */ {(16<<2)|3,{112,115,105}}, +/* 44295 */ {(16<<2)|3,{112,115,111}}, +/* 44296 */ {(16<<2)|3,{112,115,115}}, +/* 44297 */ {(16<<2)|3,{112,115,116}}, +/* 44298 */ {(11<<2)|2,{112,115,0}}, +/* 44299 */ {(11<<2)|2,{112,115,0}}, +/* 44300 */ {(11<<2)|2,{112,115,0}}, +/* 44301 */ {(11<<2)|2,{112,115,0}}, +/* 44302 */ {(11<<2)|2,{112,115,0}}, +/* 44303 */ {(11<<2)|2,{112,115,0}}, +/* 44304 */ {(11<<2)|2,{112,115,0}}, +/* 44305 */ {(11<<2)|2,{112,115,0}}, +/* 44306 */ {(11<<2)|2,{112,115,0}}, +/* 44307 */ {(11<<2)|2,{112,115,0}}, +/* 44308 */ {(11<<2)|2,{112,115,0}}, +/* 44309 */ {(11<<2)|2,{112,115,0}}, +/* 44310 */ {(11<<2)|2,{112,115,0}}, +/* 44311 */ {(11<<2)|2,{112,115,0}}, +/* 44312 */ {(11<<2)|2,{112,115,0}}, +/* 44313 */ {(11<<2)|2,{112,115,0}}, +/* 44314 */ {(11<<2)|2,{112,115,0}}, +/* 44315 */ {(11<<2)|2,{112,115,0}}, +/* 44316 */ {(11<<2)|2,{112,115,0}}, +/* 44317 */ {(11<<2)|2,{112,115,0}}, +/* 44318 */ {(11<<2)|2,{112,115,0}}, +/* 44319 */ {(11<<2)|2,{112,115,0}}, +/* 44320 */ {(16<<2)|3,{112,116,48}}, +/* 44321 */ {(16<<2)|3,{112,116,49}}, +/* 44322 */ {(16<<2)|3,{112,116,50}}, +/* 44323 */ {(16<<2)|3,{112,116,97}}, +/* 44324 */ {(16<<2)|3,{112,116,99}}, +/* 44325 */ {(16<<2)|3,{112,116,101}}, +/* 44326 */ {(16<<2)|3,{112,116,105}}, +/* 44327 */ {(16<<2)|3,{112,116,111}}, +/* 44328 */ {(16<<2)|3,{112,116,115}}, +/* 44329 */ {(16<<2)|3,{112,116,116}}, +/* 44330 */ {(11<<2)|2,{112,116,0}}, +/* 44331 */ {(11<<2)|2,{112,116,0}}, +/* 44332 */ {(11<<2)|2,{112,116,0}}, +/* 44333 */ {(11<<2)|2,{112,116,0}}, +/* 44334 */ {(11<<2)|2,{112,116,0}}, +/* 44335 */ {(11<<2)|2,{112,116,0}}, +/* 44336 */ {(11<<2)|2,{112,116,0}}, +/* 44337 */ {(11<<2)|2,{112,116,0}}, +/* 44338 */ {(11<<2)|2,{112,116,0}}, +/* 44339 */ {(11<<2)|2,{112,116,0}}, +/* 44340 */ {(11<<2)|2,{112,116,0}}, +/* 44341 */ {(11<<2)|2,{112,116,0}}, +/* 44342 */ {(11<<2)|2,{112,116,0}}, +/* 44343 */ {(11<<2)|2,{112,116,0}}, +/* 44344 */ {(11<<2)|2,{112,116,0}}, +/* 44345 */ {(11<<2)|2,{112,116,0}}, +/* 44346 */ {(11<<2)|2,{112,116,0}}, +/* 44347 */ {(11<<2)|2,{112,116,0}}, +/* 44348 */ {(11<<2)|2,{112,116,0}}, +/* 44349 */ {(11<<2)|2,{112,116,0}}, +/* 44350 */ {(11<<2)|2,{112,116,0}}, +/* 44351 */ {(11<<2)|2,{112,116,0}}, +/* 44352 */ {(12<<2)|2,{112,32,0}}, +/* 44353 */ {(12<<2)|2,{112,32,0}}, +/* 44354 */ {(12<<2)|2,{112,32,0}}, +/* 44355 */ {(12<<2)|2,{112,32,0}}, +/* 44356 */ {(12<<2)|2,{112,32,0}}, +/* 44357 */ {(12<<2)|2,{112,32,0}}, +/* 44358 */ {(12<<2)|2,{112,32,0}}, +/* 44359 */ {(12<<2)|2,{112,32,0}}, +/* 44360 */ {(12<<2)|2,{112,32,0}}, +/* 44361 */ {(12<<2)|2,{112,32,0}}, +/* 44362 */ {(12<<2)|2,{112,32,0}}, +/* 44363 */ {(12<<2)|2,{112,32,0}}, +/* 44364 */ {(12<<2)|2,{112,32,0}}, +/* 44365 */ {(12<<2)|2,{112,32,0}}, +/* 44366 */ {(12<<2)|2,{112,32,0}}, +/* 44367 */ {(12<<2)|2,{112,32,0}}, +/* 44368 */ {(12<<2)|2,{112,37,0}}, +/* 44369 */ {(12<<2)|2,{112,37,0}}, +/* 44370 */ {(12<<2)|2,{112,37,0}}, +/* 44371 */ {(12<<2)|2,{112,37,0}}, +/* 44372 */ {(12<<2)|2,{112,37,0}}, +/* 44373 */ {(12<<2)|2,{112,37,0}}, +/* 44374 */ {(12<<2)|2,{112,37,0}}, +/* 44375 */ {(12<<2)|2,{112,37,0}}, +/* 44376 */ {(12<<2)|2,{112,37,0}}, +/* 44377 */ {(12<<2)|2,{112,37,0}}, +/* 44378 */ {(12<<2)|2,{112,37,0}}, +/* 44379 */ {(12<<2)|2,{112,37,0}}, +/* 44380 */ {(12<<2)|2,{112,37,0}}, +/* 44381 */ {(12<<2)|2,{112,37,0}}, +/* 44382 */ {(12<<2)|2,{112,37,0}}, +/* 44383 */ {(12<<2)|2,{112,37,0}}, +/* 44384 */ {(12<<2)|2,{112,45,0}}, +/* 44385 */ {(12<<2)|2,{112,45,0}}, +/* 44386 */ {(12<<2)|2,{112,45,0}}, +/* 44387 */ {(12<<2)|2,{112,45,0}}, +/* 44388 */ {(12<<2)|2,{112,45,0}}, +/* 44389 */ {(12<<2)|2,{112,45,0}}, +/* 44390 */ {(12<<2)|2,{112,45,0}}, +/* 44391 */ {(12<<2)|2,{112,45,0}}, +/* 44392 */ {(12<<2)|2,{112,45,0}}, +/* 44393 */ {(12<<2)|2,{112,45,0}}, +/* 44394 */ {(12<<2)|2,{112,45,0}}, +/* 44395 */ {(12<<2)|2,{112,45,0}}, +/* 44396 */ {(12<<2)|2,{112,45,0}}, +/* 44397 */ {(12<<2)|2,{112,45,0}}, +/* 44398 */ {(12<<2)|2,{112,45,0}}, +/* 44399 */ {(12<<2)|2,{112,45,0}}, +/* 44400 */ {(12<<2)|2,{112,46,0}}, +/* 44401 */ {(12<<2)|2,{112,46,0}}, +/* 44402 */ {(12<<2)|2,{112,46,0}}, +/* 44403 */ {(12<<2)|2,{112,46,0}}, +/* 44404 */ {(12<<2)|2,{112,46,0}}, +/* 44405 */ {(12<<2)|2,{112,46,0}}, +/* 44406 */ {(12<<2)|2,{112,46,0}}, +/* 44407 */ {(12<<2)|2,{112,46,0}}, +/* 44408 */ {(12<<2)|2,{112,46,0}}, +/* 44409 */ {(12<<2)|2,{112,46,0}}, +/* 44410 */ {(12<<2)|2,{112,46,0}}, +/* 44411 */ {(12<<2)|2,{112,46,0}}, +/* 44412 */ {(12<<2)|2,{112,46,0}}, +/* 44413 */ {(12<<2)|2,{112,46,0}}, +/* 44414 */ {(12<<2)|2,{112,46,0}}, +/* 44415 */ {(12<<2)|2,{112,46,0}}, +/* 44416 */ {(12<<2)|2,{112,47,0}}, +/* 44417 */ {(12<<2)|2,{112,47,0}}, +/* 44418 */ {(12<<2)|2,{112,47,0}}, +/* 44419 */ {(12<<2)|2,{112,47,0}}, +/* 44420 */ {(12<<2)|2,{112,47,0}}, +/* 44421 */ {(12<<2)|2,{112,47,0}}, +/* 44422 */ {(12<<2)|2,{112,47,0}}, +/* 44423 */ {(12<<2)|2,{112,47,0}}, +/* 44424 */ {(12<<2)|2,{112,47,0}}, +/* 44425 */ {(12<<2)|2,{112,47,0}}, +/* 44426 */ {(12<<2)|2,{112,47,0}}, +/* 44427 */ {(12<<2)|2,{112,47,0}}, +/* 44428 */ {(12<<2)|2,{112,47,0}}, +/* 44429 */ {(12<<2)|2,{112,47,0}}, +/* 44430 */ {(12<<2)|2,{112,47,0}}, +/* 44431 */ {(12<<2)|2,{112,47,0}}, +/* 44432 */ {(12<<2)|2,{112,51,0}}, +/* 44433 */ {(12<<2)|2,{112,51,0}}, +/* 44434 */ {(12<<2)|2,{112,51,0}}, +/* 44435 */ {(12<<2)|2,{112,51,0}}, +/* 44436 */ {(12<<2)|2,{112,51,0}}, +/* 44437 */ {(12<<2)|2,{112,51,0}}, +/* 44438 */ {(12<<2)|2,{112,51,0}}, +/* 44439 */ {(12<<2)|2,{112,51,0}}, +/* 44440 */ {(12<<2)|2,{112,51,0}}, +/* 44441 */ {(12<<2)|2,{112,51,0}}, +/* 44442 */ {(12<<2)|2,{112,51,0}}, +/* 44443 */ {(12<<2)|2,{112,51,0}}, +/* 44444 */ {(12<<2)|2,{112,51,0}}, +/* 44445 */ {(12<<2)|2,{112,51,0}}, +/* 44446 */ {(12<<2)|2,{112,51,0}}, +/* 44447 */ {(12<<2)|2,{112,51,0}}, +/* 44448 */ {(12<<2)|2,{112,52,0}}, +/* 44449 */ {(12<<2)|2,{112,52,0}}, +/* 44450 */ {(12<<2)|2,{112,52,0}}, +/* 44451 */ {(12<<2)|2,{112,52,0}}, +/* 44452 */ {(12<<2)|2,{112,52,0}}, +/* 44453 */ {(12<<2)|2,{112,52,0}}, +/* 44454 */ {(12<<2)|2,{112,52,0}}, +/* 44455 */ {(12<<2)|2,{112,52,0}}, +/* 44456 */ {(12<<2)|2,{112,52,0}}, +/* 44457 */ {(12<<2)|2,{112,52,0}}, +/* 44458 */ {(12<<2)|2,{112,52,0}}, +/* 44459 */ {(12<<2)|2,{112,52,0}}, +/* 44460 */ {(12<<2)|2,{112,52,0}}, +/* 44461 */ {(12<<2)|2,{112,52,0}}, +/* 44462 */ {(12<<2)|2,{112,52,0}}, +/* 44463 */ {(12<<2)|2,{112,52,0}}, +/* 44464 */ {(12<<2)|2,{112,53,0}}, +/* 44465 */ {(12<<2)|2,{112,53,0}}, +/* 44466 */ {(12<<2)|2,{112,53,0}}, +/* 44467 */ {(12<<2)|2,{112,53,0}}, +/* 44468 */ {(12<<2)|2,{112,53,0}}, +/* 44469 */ {(12<<2)|2,{112,53,0}}, +/* 44470 */ {(12<<2)|2,{112,53,0}}, +/* 44471 */ {(12<<2)|2,{112,53,0}}, +/* 44472 */ {(12<<2)|2,{112,53,0}}, +/* 44473 */ {(12<<2)|2,{112,53,0}}, +/* 44474 */ {(12<<2)|2,{112,53,0}}, +/* 44475 */ {(12<<2)|2,{112,53,0}}, +/* 44476 */ {(12<<2)|2,{112,53,0}}, +/* 44477 */ {(12<<2)|2,{112,53,0}}, +/* 44478 */ {(12<<2)|2,{112,53,0}}, +/* 44479 */ {(12<<2)|2,{112,53,0}}, +/* 44480 */ {(12<<2)|2,{112,54,0}}, +/* 44481 */ {(12<<2)|2,{112,54,0}}, +/* 44482 */ {(12<<2)|2,{112,54,0}}, +/* 44483 */ {(12<<2)|2,{112,54,0}}, +/* 44484 */ {(12<<2)|2,{112,54,0}}, +/* 44485 */ {(12<<2)|2,{112,54,0}}, +/* 44486 */ {(12<<2)|2,{112,54,0}}, +/* 44487 */ {(12<<2)|2,{112,54,0}}, +/* 44488 */ {(12<<2)|2,{112,54,0}}, +/* 44489 */ {(12<<2)|2,{112,54,0}}, +/* 44490 */ {(12<<2)|2,{112,54,0}}, +/* 44491 */ {(12<<2)|2,{112,54,0}}, +/* 44492 */ {(12<<2)|2,{112,54,0}}, +/* 44493 */ {(12<<2)|2,{112,54,0}}, +/* 44494 */ {(12<<2)|2,{112,54,0}}, +/* 44495 */ {(12<<2)|2,{112,54,0}}, +/* 44496 */ {(12<<2)|2,{112,55,0}}, +/* 44497 */ {(12<<2)|2,{112,55,0}}, +/* 44498 */ {(12<<2)|2,{112,55,0}}, +/* 44499 */ {(12<<2)|2,{112,55,0}}, +/* 44500 */ {(12<<2)|2,{112,55,0}}, +/* 44501 */ {(12<<2)|2,{112,55,0}}, +/* 44502 */ {(12<<2)|2,{112,55,0}}, +/* 44503 */ {(12<<2)|2,{112,55,0}}, +/* 44504 */ {(12<<2)|2,{112,55,0}}, +/* 44505 */ {(12<<2)|2,{112,55,0}}, +/* 44506 */ {(12<<2)|2,{112,55,0}}, +/* 44507 */ {(12<<2)|2,{112,55,0}}, +/* 44508 */ {(12<<2)|2,{112,55,0}}, +/* 44509 */ {(12<<2)|2,{112,55,0}}, +/* 44510 */ {(12<<2)|2,{112,55,0}}, +/* 44511 */ {(12<<2)|2,{112,55,0}}, +/* 44512 */ {(12<<2)|2,{112,56,0}}, +/* 44513 */ {(12<<2)|2,{112,56,0}}, +/* 44514 */ {(12<<2)|2,{112,56,0}}, +/* 44515 */ {(12<<2)|2,{112,56,0}}, +/* 44516 */ {(12<<2)|2,{112,56,0}}, +/* 44517 */ {(12<<2)|2,{112,56,0}}, +/* 44518 */ {(12<<2)|2,{112,56,0}}, +/* 44519 */ {(12<<2)|2,{112,56,0}}, +/* 44520 */ {(12<<2)|2,{112,56,0}}, +/* 44521 */ {(12<<2)|2,{112,56,0}}, +/* 44522 */ {(12<<2)|2,{112,56,0}}, +/* 44523 */ {(12<<2)|2,{112,56,0}}, +/* 44524 */ {(12<<2)|2,{112,56,0}}, +/* 44525 */ {(12<<2)|2,{112,56,0}}, +/* 44526 */ {(12<<2)|2,{112,56,0}}, +/* 44527 */ {(12<<2)|2,{112,56,0}}, +/* 44528 */ {(12<<2)|2,{112,57,0}}, +/* 44529 */ {(12<<2)|2,{112,57,0}}, +/* 44530 */ {(12<<2)|2,{112,57,0}}, +/* 44531 */ {(12<<2)|2,{112,57,0}}, +/* 44532 */ {(12<<2)|2,{112,57,0}}, +/* 44533 */ {(12<<2)|2,{112,57,0}}, +/* 44534 */ {(12<<2)|2,{112,57,0}}, +/* 44535 */ {(12<<2)|2,{112,57,0}}, +/* 44536 */ {(12<<2)|2,{112,57,0}}, +/* 44537 */ {(12<<2)|2,{112,57,0}}, +/* 44538 */ {(12<<2)|2,{112,57,0}}, +/* 44539 */ {(12<<2)|2,{112,57,0}}, +/* 44540 */ {(12<<2)|2,{112,57,0}}, +/* 44541 */ {(12<<2)|2,{112,57,0}}, +/* 44542 */ {(12<<2)|2,{112,57,0}}, +/* 44543 */ {(12<<2)|2,{112,57,0}}, +/* 44544 */ {(12<<2)|2,{112,61,0}}, +/* 44545 */ {(12<<2)|2,{112,61,0}}, +/* 44546 */ {(12<<2)|2,{112,61,0}}, +/* 44547 */ {(12<<2)|2,{112,61,0}}, +/* 44548 */ {(12<<2)|2,{112,61,0}}, +/* 44549 */ {(12<<2)|2,{112,61,0}}, +/* 44550 */ {(12<<2)|2,{112,61,0}}, +/* 44551 */ {(12<<2)|2,{112,61,0}}, +/* 44552 */ {(12<<2)|2,{112,61,0}}, +/* 44553 */ {(12<<2)|2,{112,61,0}}, +/* 44554 */ {(12<<2)|2,{112,61,0}}, +/* 44555 */ {(12<<2)|2,{112,61,0}}, +/* 44556 */ {(12<<2)|2,{112,61,0}}, +/* 44557 */ {(12<<2)|2,{112,61,0}}, +/* 44558 */ {(12<<2)|2,{112,61,0}}, +/* 44559 */ {(12<<2)|2,{112,61,0}}, +/* 44560 */ {(12<<2)|2,{112,65,0}}, +/* 44561 */ {(12<<2)|2,{112,65,0}}, +/* 44562 */ {(12<<2)|2,{112,65,0}}, +/* 44563 */ {(12<<2)|2,{112,65,0}}, +/* 44564 */ {(12<<2)|2,{112,65,0}}, +/* 44565 */ {(12<<2)|2,{112,65,0}}, +/* 44566 */ {(12<<2)|2,{112,65,0}}, +/* 44567 */ {(12<<2)|2,{112,65,0}}, +/* 44568 */ {(12<<2)|2,{112,65,0}}, +/* 44569 */ {(12<<2)|2,{112,65,0}}, +/* 44570 */ {(12<<2)|2,{112,65,0}}, +/* 44571 */ {(12<<2)|2,{112,65,0}}, +/* 44572 */ {(12<<2)|2,{112,65,0}}, +/* 44573 */ {(12<<2)|2,{112,65,0}}, +/* 44574 */ {(12<<2)|2,{112,65,0}}, +/* 44575 */ {(12<<2)|2,{112,65,0}}, +/* 44576 */ {(12<<2)|2,{112,95,0}}, +/* 44577 */ {(12<<2)|2,{112,95,0}}, +/* 44578 */ {(12<<2)|2,{112,95,0}}, +/* 44579 */ {(12<<2)|2,{112,95,0}}, +/* 44580 */ {(12<<2)|2,{112,95,0}}, +/* 44581 */ {(12<<2)|2,{112,95,0}}, +/* 44582 */ {(12<<2)|2,{112,95,0}}, +/* 44583 */ {(12<<2)|2,{112,95,0}}, +/* 44584 */ {(12<<2)|2,{112,95,0}}, +/* 44585 */ {(12<<2)|2,{112,95,0}}, +/* 44586 */ {(12<<2)|2,{112,95,0}}, +/* 44587 */ {(12<<2)|2,{112,95,0}}, +/* 44588 */ {(12<<2)|2,{112,95,0}}, +/* 44589 */ {(12<<2)|2,{112,95,0}}, +/* 44590 */ {(12<<2)|2,{112,95,0}}, +/* 44591 */ {(12<<2)|2,{112,95,0}}, +/* 44592 */ {(12<<2)|2,{112,98,0}}, +/* 44593 */ {(12<<2)|2,{112,98,0}}, +/* 44594 */ {(12<<2)|2,{112,98,0}}, +/* 44595 */ {(12<<2)|2,{112,98,0}}, +/* 44596 */ {(12<<2)|2,{112,98,0}}, +/* 44597 */ {(12<<2)|2,{112,98,0}}, +/* 44598 */ {(12<<2)|2,{112,98,0}}, +/* 44599 */ {(12<<2)|2,{112,98,0}}, +/* 44600 */ {(12<<2)|2,{112,98,0}}, +/* 44601 */ {(12<<2)|2,{112,98,0}}, +/* 44602 */ {(12<<2)|2,{112,98,0}}, +/* 44603 */ {(12<<2)|2,{112,98,0}}, +/* 44604 */ {(12<<2)|2,{112,98,0}}, +/* 44605 */ {(12<<2)|2,{112,98,0}}, +/* 44606 */ {(12<<2)|2,{112,98,0}}, +/* 44607 */ {(12<<2)|2,{112,98,0}}, +/* 44608 */ {(12<<2)|2,{112,100,0}}, +/* 44609 */ {(12<<2)|2,{112,100,0}}, +/* 44610 */ {(12<<2)|2,{112,100,0}}, +/* 44611 */ {(12<<2)|2,{112,100,0}}, +/* 44612 */ {(12<<2)|2,{112,100,0}}, +/* 44613 */ {(12<<2)|2,{112,100,0}}, +/* 44614 */ {(12<<2)|2,{112,100,0}}, +/* 44615 */ {(12<<2)|2,{112,100,0}}, +/* 44616 */ {(12<<2)|2,{112,100,0}}, +/* 44617 */ {(12<<2)|2,{112,100,0}}, +/* 44618 */ {(12<<2)|2,{112,100,0}}, +/* 44619 */ {(12<<2)|2,{112,100,0}}, +/* 44620 */ {(12<<2)|2,{112,100,0}}, +/* 44621 */ {(12<<2)|2,{112,100,0}}, +/* 44622 */ {(12<<2)|2,{112,100,0}}, +/* 44623 */ {(12<<2)|2,{112,100,0}}, +/* 44624 */ {(12<<2)|2,{112,102,0}}, +/* 44625 */ {(12<<2)|2,{112,102,0}}, +/* 44626 */ {(12<<2)|2,{112,102,0}}, +/* 44627 */ {(12<<2)|2,{112,102,0}}, +/* 44628 */ {(12<<2)|2,{112,102,0}}, +/* 44629 */ {(12<<2)|2,{112,102,0}}, +/* 44630 */ {(12<<2)|2,{112,102,0}}, +/* 44631 */ {(12<<2)|2,{112,102,0}}, +/* 44632 */ {(12<<2)|2,{112,102,0}}, +/* 44633 */ {(12<<2)|2,{112,102,0}}, +/* 44634 */ {(12<<2)|2,{112,102,0}}, +/* 44635 */ {(12<<2)|2,{112,102,0}}, +/* 44636 */ {(12<<2)|2,{112,102,0}}, +/* 44637 */ {(12<<2)|2,{112,102,0}}, +/* 44638 */ {(12<<2)|2,{112,102,0}}, +/* 44639 */ {(12<<2)|2,{112,102,0}}, +/* 44640 */ {(12<<2)|2,{112,103,0}}, +/* 44641 */ {(12<<2)|2,{112,103,0}}, +/* 44642 */ {(12<<2)|2,{112,103,0}}, +/* 44643 */ {(12<<2)|2,{112,103,0}}, +/* 44644 */ {(12<<2)|2,{112,103,0}}, +/* 44645 */ {(12<<2)|2,{112,103,0}}, +/* 44646 */ {(12<<2)|2,{112,103,0}}, +/* 44647 */ {(12<<2)|2,{112,103,0}}, +/* 44648 */ {(12<<2)|2,{112,103,0}}, +/* 44649 */ {(12<<2)|2,{112,103,0}}, +/* 44650 */ {(12<<2)|2,{112,103,0}}, +/* 44651 */ {(12<<2)|2,{112,103,0}}, +/* 44652 */ {(12<<2)|2,{112,103,0}}, +/* 44653 */ {(12<<2)|2,{112,103,0}}, +/* 44654 */ {(12<<2)|2,{112,103,0}}, +/* 44655 */ {(12<<2)|2,{112,103,0}}, +/* 44656 */ {(12<<2)|2,{112,104,0}}, +/* 44657 */ {(12<<2)|2,{112,104,0}}, +/* 44658 */ {(12<<2)|2,{112,104,0}}, +/* 44659 */ {(12<<2)|2,{112,104,0}}, +/* 44660 */ {(12<<2)|2,{112,104,0}}, +/* 44661 */ {(12<<2)|2,{112,104,0}}, +/* 44662 */ {(12<<2)|2,{112,104,0}}, +/* 44663 */ {(12<<2)|2,{112,104,0}}, +/* 44664 */ {(12<<2)|2,{112,104,0}}, +/* 44665 */ {(12<<2)|2,{112,104,0}}, +/* 44666 */ {(12<<2)|2,{112,104,0}}, +/* 44667 */ {(12<<2)|2,{112,104,0}}, +/* 44668 */ {(12<<2)|2,{112,104,0}}, +/* 44669 */ {(12<<2)|2,{112,104,0}}, +/* 44670 */ {(12<<2)|2,{112,104,0}}, +/* 44671 */ {(12<<2)|2,{112,104,0}}, +/* 44672 */ {(12<<2)|2,{112,108,0}}, +/* 44673 */ {(12<<2)|2,{112,108,0}}, +/* 44674 */ {(12<<2)|2,{112,108,0}}, +/* 44675 */ {(12<<2)|2,{112,108,0}}, +/* 44676 */ {(12<<2)|2,{112,108,0}}, +/* 44677 */ {(12<<2)|2,{112,108,0}}, +/* 44678 */ {(12<<2)|2,{112,108,0}}, +/* 44679 */ {(12<<2)|2,{112,108,0}}, +/* 44680 */ {(12<<2)|2,{112,108,0}}, +/* 44681 */ {(12<<2)|2,{112,108,0}}, +/* 44682 */ {(12<<2)|2,{112,108,0}}, +/* 44683 */ {(12<<2)|2,{112,108,0}}, +/* 44684 */ {(12<<2)|2,{112,108,0}}, +/* 44685 */ {(12<<2)|2,{112,108,0}}, +/* 44686 */ {(12<<2)|2,{112,108,0}}, +/* 44687 */ {(12<<2)|2,{112,108,0}}, +/* 44688 */ {(12<<2)|2,{112,109,0}}, +/* 44689 */ {(12<<2)|2,{112,109,0}}, +/* 44690 */ {(12<<2)|2,{112,109,0}}, +/* 44691 */ {(12<<2)|2,{112,109,0}}, +/* 44692 */ {(12<<2)|2,{112,109,0}}, +/* 44693 */ {(12<<2)|2,{112,109,0}}, +/* 44694 */ {(12<<2)|2,{112,109,0}}, +/* 44695 */ {(12<<2)|2,{112,109,0}}, +/* 44696 */ {(12<<2)|2,{112,109,0}}, +/* 44697 */ {(12<<2)|2,{112,109,0}}, +/* 44698 */ {(12<<2)|2,{112,109,0}}, +/* 44699 */ {(12<<2)|2,{112,109,0}}, +/* 44700 */ {(12<<2)|2,{112,109,0}}, +/* 44701 */ {(12<<2)|2,{112,109,0}}, +/* 44702 */ {(12<<2)|2,{112,109,0}}, +/* 44703 */ {(12<<2)|2,{112,109,0}}, +/* 44704 */ {(12<<2)|2,{112,110,0}}, +/* 44705 */ {(12<<2)|2,{112,110,0}}, +/* 44706 */ {(12<<2)|2,{112,110,0}}, +/* 44707 */ {(12<<2)|2,{112,110,0}}, +/* 44708 */ {(12<<2)|2,{112,110,0}}, +/* 44709 */ {(12<<2)|2,{112,110,0}}, +/* 44710 */ {(12<<2)|2,{112,110,0}}, +/* 44711 */ {(12<<2)|2,{112,110,0}}, +/* 44712 */ {(12<<2)|2,{112,110,0}}, +/* 44713 */ {(12<<2)|2,{112,110,0}}, +/* 44714 */ {(12<<2)|2,{112,110,0}}, +/* 44715 */ {(12<<2)|2,{112,110,0}}, +/* 44716 */ {(12<<2)|2,{112,110,0}}, +/* 44717 */ {(12<<2)|2,{112,110,0}}, +/* 44718 */ {(12<<2)|2,{112,110,0}}, +/* 44719 */ {(12<<2)|2,{112,110,0}}, +/* 44720 */ {(12<<2)|2,{112,112,0}}, +/* 44721 */ {(12<<2)|2,{112,112,0}}, +/* 44722 */ {(12<<2)|2,{112,112,0}}, +/* 44723 */ {(12<<2)|2,{112,112,0}}, +/* 44724 */ {(12<<2)|2,{112,112,0}}, +/* 44725 */ {(12<<2)|2,{112,112,0}}, +/* 44726 */ {(12<<2)|2,{112,112,0}}, +/* 44727 */ {(12<<2)|2,{112,112,0}}, +/* 44728 */ {(12<<2)|2,{112,112,0}}, +/* 44729 */ {(12<<2)|2,{112,112,0}}, +/* 44730 */ {(12<<2)|2,{112,112,0}}, +/* 44731 */ {(12<<2)|2,{112,112,0}}, +/* 44732 */ {(12<<2)|2,{112,112,0}}, +/* 44733 */ {(12<<2)|2,{112,112,0}}, +/* 44734 */ {(12<<2)|2,{112,112,0}}, +/* 44735 */ {(12<<2)|2,{112,112,0}}, +/* 44736 */ {(12<<2)|2,{112,114,0}}, +/* 44737 */ {(12<<2)|2,{112,114,0}}, +/* 44738 */ {(12<<2)|2,{112,114,0}}, +/* 44739 */ {(12<<2)|2,{112,114,0}}, +/* 44740 */ {(12<<2)|2,{112,114,0}}, +/* 44741 */ {(12<<2)|2,{112,114,0}}, +/* 44742 */ {(12<<2)|2,{112,114,0}}, +/* 44743 */ {(12<<2)|2,{112,114,0}}, +/* 44744 */ {(12<<2)|2,{112,114,0}}, +/* 44745 */ {(12<<2)|2,{112,114,0}}, +/* 44746 */ {(12<<2)|2,{112,114,0}}, +/* 44747 */ {(12<<2)|2,{112,114,0}}, +/* 44748 */ {(12<<2)|2,{112,114,0}}, +/* 44749 */ {(12<<2)|2,{112,114,0}}, +/* 44750 */ {(12<<2)|2,{112,114,0}}, +/* 44751 */ {(12<<2)|2,{112,114,0}}, +/* 44752 */ {(12<<2)|2,{112,117,0}}, +/* 44753 */ {(12<<2)|2,{112,117,0}}, +/* 44754 */ {(12<<2)|2,{112,117,0}}, +/* 44755 */ {(12<<2)|2,{112,117,0}}, +/* 44756 */ {(12<<2)|2,{112,117,0}}, +/* 44757 */ {(12<<2)|2,{112,117,0}}, +/* 44758 */ {(12<<2)|2,{112,117,0}}, +/* 44759 */ {(12<<2)|2,{112,117,0}}, +/* 44760 */ {(12<<2)|2,{112,117,0}}, +/* 44761 */ {(12<<2)|2,{112,117,0}}, +/* 44762 */ {(12<<2)|2,{112,117,0}}, +/* 44763 */ {(12<<2)|2,{112,117,0}}, +/* 44764 */ {(12<<2)|2,{112,117,0}}, +/* 44765 */ {(12<<2)|2,{112,117,0}}, +/* 44766 */ {(12<<2)|2,{112,117,0}}, +/* 44767 */ {(12<<2)|2,{112,117,0}}, +/* 44768 */ {(13<<2)|2,{112,58,0}}, +/* 44769 */ {(13<<2)|2,{112,58,0}}, +/* 44770 */ {(13<<2)|2,{112,58,0}}, +/* 44771 */ {(13<<2)|2,{112,58,0}}, +/* 44772 */ {(13<<2)|2,{112,58,0}}, +/* 44773 */ {(13<<2)|2,{112,58,0}}, +/* 44774 */ {(13<<2)|2,{112,58,0}}, +/* 44775 */ {(13<<2)|2,{112,58,0}}, +/* 44776 */ {(13<<2)|2,{112,66,0}}, +/* 44777 */ {(13<<2)|2,{112,66,0}}, +/* 44778 */ {(13<<2)|2,{112,66,0}}, +/* 44779 */ {(13<<2)|2,{112,66,0}}, +/* 44780 */ {(13<<2)|2,{112,66,0}}, +/* 44781 */ {(13<<2)|2,{112,66,0}}, +/* 44782 */ {(13<<2)|2,{112,66,0}}, +/* 44783 */ {(13<<2)|2,{112,66,0}}, +/* 44784 */ {(13<<2)|2,{112,67,0}}, +/* 44785 */ {(13<<2)|2,{112,67,0}}, +/* 44786 */ {(13<<2)|2,{112,67,0}}, +/* 44787 */ {(13<<2)|2,{112,67,0}}, +/* 44788 */ {(13<<2)|2,{112,67,0}}, +/* 44789 */ {(13<<2)|2,{112,67,0}}, +/* 44790 */ {(13<<2)|2,{112,67,0}}, +/* 44791 */ {(13<<2)|2,{112,67,0}}, +/* 44792 */ {(13<<2)|2,{112,68,0}}, +/* 44793 */ {(13<<2)|2,{112,68,0}}, +/* 44794 */ {(13<<2)|2,{112,68,0}}, +/* 44795 */ {(13<<2)|2,{112,68,0}}, +/* 44796 */ {(13<<2)|2,{112,68,0}}, +/* 44797 */ {(13<<2)|2,{112,68,0}}, +/* 44798 */ {(13<<2)|2,{112,68,0}}, +/* 44799 */ {(13<<2)|2,{112,68,0}}, +/* 44800 */ {(13<<2)|2,{112,69,0}}, +/* 44801 */ {(13<<2)|2,{112,69,0}}, +/* 44802 */ {(13<<2)|2,{112,69,0}}, +/* 44803 */ {(13<<2)|2,{112,69,0}}, +/* 44804 */ {(13<<2)|2,{112,69,0}}, +/* 44805 */ {(13<<2)|2,{112,69,0}}, +/* 44806 */ {(13<<2)|2,{112,69,0}}, +/* 44807 */ {(13<<2)|2,{112,69,0}}, +/* 44808 */ {(13<<2)|2,{112,70,0}}, +/* 44809 */ {(13<<2)|2,{112,70,0}}, +/* 44810 */ {(13<<2)|2,{112,70,0}}, +/* 44811 */ {(13<<2)|2,{112,70,0}}, +/* 44812 */ {(13<<2)|2,{112,70,0}}, +/* 44813 */ {(13<<2)|2,{112,70,0}}, +/* 44814 */ {(13<<2)|2,{112,70,0}}, +/* 44815 */ {(13<<2)|2,{112,70,0}}, +/* 44816 */ {(13<<2)|2,{112,71,0}}, +/* 44817 */ {(13<<2)|2,{112,71,0}}, +/* 44818 */ {(13<<2)|2,{112,71,0}}, +/* 44819 */ {(13<<2)|2,{112,71,0}}, +/* 44820 */ {(13<<2)|2,{112,71,0}}, +/* 44821 */ {(13<<2)|2,{112,71,0}}, +/* 44822 */ {(13<<2)|2,{112,71,0}}, +/* 44823 */ {(13<<2)|2,{112,71,0}}, +/* 44824 */ {(13<<2)|2,{112,72,0}}, +/* 44825 */ {(13<<2)|2,{112,72,0}}, +/* 44826 */ {(13<<2)|2,{112,72,0}}, +/* 44827 */ {(13<<2)|2,{112,72,0}}, +/* 44828 */ {(13<<2)|2,{112,72,0}}, +/* 44829 */ {(13<<2)|2,{112,72,0}}, +/* 44830 */ {(13<<2)|2,{112,72,0}}, +/* 44831 */ {(13<<2)|2,{112,72,0}}, +/* 44832 */ {(13<<2)|2,{112,73,0}}, +/* 44833 */ {(13<<2)|2,{112,73,0}}, +/* 44834 */ {(13<<2)|2,{112,73,0}}, +/* 44835 */ {(13<<2)|2,{112,73,0}}, +/* 44836 */ {(13<<2)|2,{112,73,0}}, +/* 44837 */ {(13<<2)|2,{112,73,0}}, +/* 44838 */ {(13<<2)|2,{112,73,0}}, +/* 44839 */ {(13<<2)|2,{112,73,0}}, +/* 44840 */ {(13<<2)|2,{112,74,0}}, +/* 44841 */ {(13<<2)|2,{112,74,0}}, +/* 44842 */ {(13<<2)|2,{112,74,0}}, +/* 44843 */ {(13<<2)|2,{112,74,0}}, +/* 44844 */ {(13<<2)|2,{112,74,0}}, +/* 44845 */ {(13<<2)|2,{112,74,0}}, +/* 44846 */ {(13<<2)|2,{112,74,0}}, +/* 44847 */ {(13<<2)|2,{112,74,0}}, +/* 44848 */ {(13<<2)|2,{112,75,0}}, +/* 44849 */ {(13<<2)|2,{112,75,0}}, +/* 44850 */ {(13<<2)|2,{112,75,0}}, +/* 44851 */ {(13<<2)|2,{112,75,0}}, +/* 44852 */ {(13<<2)|2,{112,75,0}}, +/* 44853 */ {(13<<2)|2,{112,75,0}}, +/* 44854 */ {(13<<2)|2,{112,75,0}}, +/* 44855 */ {(13<<2)|2,{112,75,0}}, +/* 44856 */ {(13<<2)|2,{112,76,0}}, +/* 44857 */ {(13<<2)|2,{112,76,0}}, +/* 44858 */ {(13<<2)|2,{112,76,0}}, +/* 44859 */ {(13<<2)|2,{112,76,0}}, +/* 44860 */ {(13<<2)|2,{112,76,0}}, +/* 44861 */ {(13<<2)|2,{112,76,0}}, +/* 44862 */ {(13<<2)|2,{112,76,0}}, +/* 44863 */ {(13<<2)|2,{112,76,0}}, +/* 44864 */ {(13<<2)|2,{112,77,0}}, +/* 44865 */ {(13<<2)|2,{112,77,0}}, +/* 44866 */ {(13<<2)|2,{112,77,0}}, +/* 44867 */ {(13<<2)|2,{112,77,0}}, +/* 44868 */ {(13<<2)|2,{112,77,0}}, +/* 44869 */ {(13<<2)|2,{112,77,0}}, +/* 44870 */ {(13<<2)|2,{112,77,0}}, +/* 44871 */ {(13<<2)|2,{112,77,0}}, +/* 44872 */ {(13<<2)|2,{112,78,0}}, +/* 44873 */ {(13<<2)|2,{112,78,0}}, +/* 44874 */ {(13<<2)|2,{112,78,0}}, +/* 44875 */ {(13<<2)|2,{112,78,0}}, +/* 44876 */ {(13<<2)|2,{112,78,0}}, +/* 44877 */ {(13<<2)|2,{112,78,0}}, +/* 44878 */ {(13<<2)|2,{112,78,0}}, +/* 44879 */ {(13<<2)|2,{112,78,0}}, +/* 44880 */ {(13<<2)|2,{112,79,0}}, +/* 44881 */ {(13<<2)|2,{112,79,0}}, +/* 44882 */ {(13<<2)|2,{112,79,0}}, +/* 44883 */ {(13<<2)|2,{112,79,0}}, +/* 44884 */ {(13<<2)|2,{112,79,0}}, +/* 44885 */ {(13<<2)|2,{112,79,0}}, +/* 44886 */ {(13<<2)|2,{112,79,0}}, +/* 44887 */ {(13<<2)|2,{112,79,0}}, +/* 44888 */ {(13<<2)|2,{112,80,0}}, +/* 44889 */ {(13<<2)|2,{112,80,0}}, +/* 44890 */ {(13<<2)|2,{112,80,0}}, +/* 44891 */ {(13<<2)|2,{112,80,0}}, +/* 44892 */ {(13<<2)|2,{112,80,0}}, +/* 44893 */ {(13<<2)|2,{112,80,0}}, +/* 44894 */ {(13<<2)|2,{112,80,0}}, +/* 44895 */ {(13<<2)|2,{112,80,0}}, +/* 44896 */ {(13<<2)|2,{112,81,0}}, +/* 44897 */ {(13<<2)|2,{112,81,0}}, +/* 44898 */ {(13<<2)|2,{112,81,0}}, +/* 44899 */ {(13<<2)|2,{112,81,0}}, +/* 44900 */ {(13<<2)|2,{112,81,0}}, +/* 44901 */ {(13<<2)|2,{112,81,0}}, +/* 44902 */ {(13<<2)|2,{112,81,0}}, +/* 44903 */ {(13<<2)|2,{112,81,0}}, +/* 44904 */ {(13<<2)|2,{112,82,0}}, +/* 44905 */ {(13<<2)|2,{112,82,0}}, +/* 44906 */ {(13<<2)|2,{112,82,0}}, +/* 44907 */ {(13<<2)|2,{112,82,0}}, +/* 44908 */ {(13<<2)|2,{112,82,0}}, +/* 44909 */ {(13<<2)|2,{112,82,0}}, +/* 44910 */ {(13<<2)|2,{112,82,0}}, +/* 44911 */ {(13<<2)|2,{112,82,0}}, +/* 44912 */ {(13<<2)|2,{112,83,0}}, +/* 44913 */ {(13<<2)|2,{112,83,0}}, +/* 44914 */ {(13<<2)|2,{112,83,0}}, +/* 44915 */ {(13<<2)|2,{112,83,0}}, +/* 44916 */ {(13<<2)|2,{112,83,0}}, +/* 44917 */ {(13<<2)|2,{112,83,0}}, +/* 44918 */ {(13<<2)|2,{112,83,0}}, +/* 44919 */ {(13<<2)|2,{112,83,0}}, +/* 44920 */ {(13<<2)|2,{112,84,0}}, +/* 44921 */ {(13<<2)|2,{112,84,0}}, +/* 44922 */ {(13<<2)|2,{112,84,0}}, +/* 44923 */ {(13<<2)|2,{112,84,0}}, +/* 44924 */ {(13<<2)|2,{112,84,0}}, +/* 44925 */ {(13<<2)|2,{112,84,0}}, +/* 44926 */ {(13<<2)|2,{112,84,0}}, +/* 44927 */ {(13<<2)|2,{112,84,0}}, +/* 44928 */ {(13<<2)|2,{112,85,0}}, +/* 44929 */ {(13<<2)|2,{112,85,0}}, +/* 44930 */ {(13<<2)|2,{112,85,0}}, +/* 44931 */ {(13<<2)|2,{112,85,0}}, +/* 44932 */ {(13<<2)|2,{112,85,0}}, +/* 44933 */ {(13<<2)|2,{112,85,0}}, +/* 44934 */ {(13<<2)|2,{112,85,0}}, +/* 44935 */ {(13<<2)|2,{112,85,0}}, +/* 44936 */ {(13<<2)|2,{112,86,0}}, +/* 44937 */ {(13<<2)|2,{112,86,0}}, +/* 44938 */ {(13<<2)|2,{112,86,0}}, +/* 44939 */ {(13<<2)|2,{112,86,0}}, +/* 44940 */ {(13<<2)|2,{112,86,0}}, +/* 44941 */ {(13<<2)|2,{112,86,0}}, +/* 44942 */ {(13<<2)|2,{112,86,0}}, +/* 44943 */ {(13<<2)|2,{112,86,0}}, +/* 44944 */ {(13<<2)|2,{112,87,0}}, +/* 44945 */ {(13<<2)|2,{112,87,0}}, +/* 44946 */ {(13<<2)|2,{112,87,0}}, +/* 44947 */ {(13<<2)|2,{112,87,0}}, +/* 44948 */ {(13<<2)|2,{112,87,0}}, +/* 44949 */ {(13<<2)|2,{112,87,0}}, +/* 44950 */ {(13<<2)|2,{112,87,0}}, +/* 44951 */ {(13<<2)|2,{112,87,0}}, +/* 44952 */ {(13<<2)|2,{112,89,0}}, +/* 44953 */ {(13<<2)|2,{112,89,0}}, +/* 44954 */ {(13<<2)|2,{112,89,0}}, +/* 44955 */ {(13<<2)|2,{112,89,0}}, +/* 44956 */ {(13<<2)|2,{112,89,0}}, +/* 44957 */ {(13<<2)|2,{112,89,0}}, +/* 44958 */ {(13<<2)|2,{112,89,0}}, +/* 44959 */ {(13<<2)|2,{112,89,0}}, +/* 44960 */ {(13<<2)|2,{112,106,0}}, +/* 44961 */ {(13<<2)|2,{112,106,0}}, +/* 44962 */ {(13<<2)|2,{112,106,0}}, +/* 44963 */ {(13<<2)|2,{112,106,0}}, +/* 44964 */ {(13<<2)|2,{112,106,0}}, +/* 44965 */ {(13<<2)|2,{112,106,0}}, +/* 44966 */ {(13<<2)|2,{112,106,0}}, +/* 44967 */ {(13<<2)|2,{112,106,0}}, +/* 44968 */ {(13<<2)|2,{112,107,0}}, +/* 44969 */ {(13<<2)|2,{112,107,0}}, +/* 44970 */ {(13<<2)|2,{112,107,0}}, +/* 44971 */ {(13<<2)|2,{112,107,0}}, +/* 44972 */ {(13<<2)|2,{112,107,0}}, +/* 44973 */ {(13<<2)|2,{112,107,0}}, +/* 44974 */ {(13<<2)|2,{112,107,0}}, +/* 44975 */ {(13<<2)|2,{112,107,0}}, +/* 44976 */ {(13<<2)|2,{112,113,0}}, +/* 44977 */ {(13<<2)|2,{112,113,0}}, +/* 44978 */ {(13<<2)|2,{112,113,0}}, +/* 44979 */ {(13<<2)|2,{112,113,0}}, +/* 44980 */ {(13<<2)|2,{112,113,0}}, +/* 44981 */ {(13<<2)|2,{112,113,0}}, +/* 44982 */ {(13<<2)|2,{112,113,0}}, +/* 44983 */ {(13<<2)|2,{112,113,0}}, +/* 44984 */ {(13<<2)|2,{112,118,0}}, +/* 44985 */ {(13<<2)|2,{112,118,0}}, +/* 44986 */ {(13<<2)|2,{112,118,0}}, +/* 44987 */ {(13<<2)|2,{112,118,0}}, +/* 44988 */ {(13<<2)|2,{112,118,0}}, +/* 44989 */ {(13<<2)|2,{112,118,0}}, +/* 44990 */ {(13<<2)|2,{112,118,0}}, +/* 44991 */ {(13<<2)|2,{112,118,0}}, +/* 44992 */ {(13<<2)|2,{112,119,0}}, +/* 44993 */ {(13<<2)|2,{112,119,0}}, +/* 44994 */ {(13<<2)|2,{112,119,0}}, +/* 44995 */ {(13<<2)|2,{112,119,0}}, +/* 44996 */ {(13<<2)|2,{112,119,0}}, +/* 44997 */ {(13<<2)|2,{112,119,0}}, +/* 44998 */ {(13<<2)|2,{112,119,0}}, +/* 44999 */ {(13<<2)|2,{112,119,0}}, +/* 45000 */ {(13<<2)|2,{112,120,0}}, +/* 45001 */ {(13<<2)|2,{112,120,0}}, +/* 45002 */ {(13<<2)|2,{112,120,0}}, +/* 45003 */ {(13<<2)|2,{112,120,0}}, +/* 45004 */ {(13<<2)|2,{112,120,0}}, +/* 45005 */ {(13<<2)|2,{112,120,0}}, +/* 45006 */ {(13<<2)|2,{112,120,0}}, +/* 45007 */ {(13<<2)|2,{112,120,0}}, +/* 45008 */ {(13<<2)|2,{112,121,0}}, +/* 45009 */ {(13<<2)|2,{112,121,0}}, +/* 45010 */ {(13<<2)|2,{112,121,0}}, +/* 45011 */ {(13<<2)|2,{112,121,0}}, +/* 45012 */ {(13<<2)|2,{112,121,0}}, +/* 45013 */ {(13<<2)|2,{112,121,0}}, +/* 45014 */ {(13<<2)|2,{112,121,0}}, +/* 45015 */ {(13<<2)|2,{112,121,0}}, +/* 45016 */ {(13<<2)|2,{112,122,0}}, +/* 45017 */ {(13<<2)|2,{112,122,0}}, +/* 45018 */ {(13<<2)|2,{112,122,0}}, +/* 45019 */ {(13<<2)|2,{112,122,0}}, +/* 45020 */ {(13<<2)|2,{112,122,0}}, +/* 45021 */ {(13<<2)|2,{112,122,0}}, +/* 45022 */ {(13<<2)|2,{112,122,0}}, +/* 45023 */ {(13<<2)|2,{112,122,0}}, +/* 45024 */ {(14<<2)|2,{112,38,0}}, +/* 45025 */ {(14<<2)|2,{112,38,0}}, +/* 45026 */ {(14<<2)|2,{112,38,0}}, +/* 45027 */ {(14<<2)|2,{112,38,0}}, +/* 45028 */ {(14<<2)|2,{112,42,0}}, +/* 45029 */ {(14<<2)|2,{112,42,0}}, +/* 45030 */ {(14<<2)|2,{112,42,0}}, +/* 45031 */ {(14<<2)|2,{112,42,0}}, +/* 45032 */ {(14<<2)|2,{112,44,0}}, +/* 45033 */ {(14<<2)|2,{112,44,0}}, +/* 45034 */ {(14<<2)|2,{112,44,0}}, +/* 45035 */ {(14<<2)|2,{112,44,0}}, +/* 45036 */ {(14<<2)|2,{112,59,0}}, +/* 45037 */ {(14<<2)|2,{112,59,0}}, +/* 45038 */ {(14<<2)|2,{112,59,0}}, +/* 45039 */ {(14<<2)|2,{112,59,0}}, +/* 45040 */ {(14<<2)|2,{112,88,0}}, +/* 45041 */ {(14<<2)|2,{112,88,0}}, +/* 45042 */ {(14<<2)|2,{112,88,0}}, +/* 45043 */ {(14<<2)|2,{112,88,0}}, +/* 45044 */ {(14<<2)|2,{112,90,0}}, +/* 45045 */ {(14<<2)|2,{112,90,0}}, +/* 45046 */ {(14<<2)|2,{112,90,0}}, +/* 45047 */ {(14<<2)|2,{112,90,0}}, +/* 45048 */ {(16<<2)|2,{112,33,0}}, +/* 45049 */ {(16<<2)|2,{112,34,0}}, +/* 45050 */ {(16<<2)|2,{112,40,0}}, +/* 45051 */ {(16<<2)|2,{112,41,0}}, +/* 45052 */ {(16<<2)|2,{112,63,0}}, +/* 45053 */ {(6<<2)|1,{112,0,0}}, +/* 45054 */ {(6<<2)|1,{112,0,0}}, +/* 45055 */ {(6<<2)|1,{112,0,0}}, +/* 45056 */ {(16<<2)|3,{114,48,48}}, +/* 45057 */ {(16<<2)|3,{114,48,49}}, +/* 45058 */ {(16<<2)|3,{114,48,50}}, +/* 45059 */ {(16<<2)|3,{114,48,97}}, +/* 45060 */ {(16<<2)|3,{114,48,99}}, +/* 45061 */ {(16<<2)|3,{114,48,101}}, +/* 45062 */ {(16<<2)|3,{114,48,105}}, +/* 45063 */ {(16<<2)|3,{114,48,111}}, +/* 45064 */ {(16<<2)|3,{114,48,115}}, +/* 45065 */ {(16<<2)|3,{114,48,116}}, +/* 45066 */ {(11<<2)|2,{114,48,0}}, +/* 45067 */ {(11<<2)|2,{114,48,0}}, +/* 45068 */ {(11<<2)|2,{114,48,0}}, +/* 45069 */ {(11<<2)|2,{114,48,0}}, +/* 45070 */ {(11<<2)|2,{114,48,0}}, +/* 45071 */ {(11<<2)|2,{114,48,0}}, +/* 45072 */ {(11<<2)|2,{114,48,0}}, +/* 45073 */ {(11<<2)|2,{114,48,0}}, +/* 45074 */ {(11<<2)|2,{114,48,0}}, +/* 45075 */ {(11<<2)|2,{114,48,0}}, +/* 45076 */ {(11<<2)|2,{114,48,0}}, +/* 45077 */ {(11<<2)|2,{114,48,0}}, +/* 45078 */ {(11<<2)|2,{114,48,0}}, +/* 45079 */ {(11<<2)|2,{114,48,0}}, +/* 45080 */ {(11<<2)|2,{114,48,0}}, +/* 45081 */ {(11<<2)|2,{114,48,0}}, +/* 45082 */ {(11<<2)|2,{114,48,0}}, +/* 45083 */ {(11<<2)|2,{114,48,0}}, +/* 45084 */ {(11<<2)|2,{114,48,0}}, +/* 45085 */ {(11<<2)|2,{114,48,0}}, +/* 45086 */ {(11<<2)|2,{114,48,0}}, +/* 45087 */ {(11<<2)|2,{114,48,0}}, +/* 45088 */ {(16<<2)|3,{114,49,48}}, +/* 45089 */ {(16<<2)|3,{114,49,49}}, +/* 45090 */ {(16<<2)|3,{114,49,50}}, +/* 45091 */ {(16<<2)|3,{114,49,97}}, +/* 45092 */ {(16<<2)|3,{114,49,99}}, +/* 45093 */ {(16<<2)|3,{114,49,101}}, +/* 45094 */ {(16<<2)|3,{114,49,105}}, +/* 45095 */ {(16<<2)|3,{114,49,111}}, +/* 45096 */ {(16<<2)|3,{114,49,115}}, +/* 45097 */ {(16<<2)|3,{114,49,116}}, +/* 45098 */ {(11<<2)|2,{114,49,0}}, +/* 45099 */ {(11<<2)|2,{114,49,0}}, +/* 45100 */ {(11<<2)|2,{114,49,0}}, +/* 45101 */ {(11<<2)|2,{114,49,0}}, +/* 45102 */ {(11<<2)|2,{114,49,0}}, +/* 45103 */ {(11<<2)|2,{114,49,0}}, +/* 45104 */ {(11<<2)|2,{114,49,0}}, +/* 45105 */ {(11<<2)|2,{114,49,0}}, +/* 45106 */ {(11<<2)|2,{114,49,0}}, +/* 45107 */ {(11<<2)|2,{114,49,0}}, +/* 45108 */ {(11<<2)|2,{114,49,0}}, +/* 45109 */ {(11<<2)|2,{114,49,0}}, +/* 45110 */ {(11<<2)|2,{114,49,0}}, +/* 45111 */ {(11<<2)|2,{114,49,0}}, +/* 45112 */ {(11<<2)|2,{114,49,0}}, +/* 45113 */ {(11<<2)|2,{114,49,0}}, +/* 45114 */ {(11<<2)|2,{114,49,0}}, +/* 45115 */ {(11<<2)|2,{114,49,0}}, +/* 45116 */ {(11<<2)|2,{114,49,0}}, +/* 45117 */ {(11<<2)|2,{114,49,0}}, +/* 45118 */ {(11<<2)|2,{114,49,0}}, +/* 45119 */ {(11<<2)|2,{114,49,0}}, +/* 45120 */ {(16<<2)|3,{114,50,48}}, +/* 45121 */ {(16<<2)|3,{114,50,49}}, +/* 45122 */ {(16<<2)|3,{114,50,50}}, +/* 45123 */ {(16<<2)|3,{114,50,97}}, +/* 45124 */ {(16<<2)|3,{114,50,99}}, +/* 45125 */ {(16<<2)|3,{114,50,101}}, +/* 45126 */ {(16<<2)|3,{114,50,105}}, +/* 45127 */ {(16<<2)|3,{114,50,111}}, +/* 45128 */ {(16<<2)|3,{114,50,115}}, +/* 45129 */ {(16<<2)|3,{114,50,116}}, +/* 45130 */ {(11<<2)|2,{114,50,0}}, +/* 45131 */ {(11<<2)|2,{114,50,0}}, +/* 45132 */ {(11<<2)|2,{114,50,0}}, +/* 45133 */ {(11<<2)|2,{114,50,0}}, +/* 45134 */ {(11<<2)|2,{114,50,0}}, +/* 45135 */ {(11<<2)|2,{114,50,0}}, +/* 45136 */ {(11<<2)|2,{114,50,0}}, +/* 45137 */ {(11<<2)|2,{114,50,0}}, +/* 45138 */ {(11<<2)|2,{114,50,0}}, +/* 45139 */ {(11<<2)|2,{114,50,0}}, +/* 45140 */ {(11<<2)|2,{114,50,0}}, +/* 45141 */ {(11<<2)|2,{114,50,0}}, +/* 45142 */ {(11<<2)|2,{114,50,0}}, +/* 45143 */ {(11<<2)|2,{114,50,0}}, +/* 45144 */ {(11<<2)|2,{114,50,0}}, +/* 45145 */ {(11<<2)|2,{114,50,0}}, +/* 45146 */ {(11<<2)|2,{114,50,0}}, +/* 45147 */ {(11<<2)|2,{114,50,0}}, +/* 45148 */ {(11<<2)|2,{114,50,0}}, +/* 45149 */ {(11<<2)|2,{114,50,0}}, +/* 45150 */ {(11<<2)|2,{114,50,0}}, +/* 45151 */ {(11<<2)|2,{114,50,0}}, +/* 45152 */ {(16<<2)|3,{114,97,48}}, +/* 45153 */ {(16<<2)|3,{114,97,49}}, +/* 45154 */ {(16<<2)|3,{114,97,50}}, +/* 45155 */ {(16<<2)|3,{114,97,97}}, +/* 45156 */ {(16<<2)|3,{114,97,99}}, +/* 45157 */ {(16<<2)|3,{114,97,101}}, +/* 45158 */ {(16<<2)|3,{114,97,105}}, +/* 45159 */ {(16<<2)|3,{114,97,111}}, +/* 45160 */ {(16<<2)|3,{114,97,115}}, +/* 45161 */ {(16<<2)|3,{114,97,116}}, +/* 45162 */ {(11<<2)|2,{114,97,0}}, +/* 45163 */ {(11<<2)|2,{114,97,0}}, +/* 45164 */ {(11<<2)|2,{114,97,0}}, +/* 45165 */ {(11<<2)|2,{114,97,0}}, +/* 45166 */ {(11<<2)|2,{114,97,0}}, +/* 45167 */ {(11<<2)|2,{114,97,0}}, +/* 45168 */ {(11<<2)|2,{114,97,0}}, +/* 45169 */ {(11<<2)|2,{114,97,0}}, +/* 45170 */ {(11<<2)|2,{114,97,0}}, +/* 45171 */ {(11<<2)|2,{114,97,0}}, +/* 45172 */ {(11<<2)|2,{114,97,0}}, +/* 45173 */ {(11<<2)|2,{114,97,0}}, +/* 45174 */ {(11<<2)|2,{114,97,0}}, +/* 45175 */ {(11<<2)|2,{114,97,0}}, +/* 45176 */ {(11<<2)|2,{114,97,0}}, +/* 45177 */ {(11<<2)|2,{114,97,0}}, +/* 45178 */ {(11<<2)|2,{114,97,0}}, +/* 45179 */ {(11<<2)|2,{114,97,0}}, +/* 45180 */ {(11<<2)|2,{114,97,0}}, +/* 45181 */ {(11<<2)|2,{114,97,0}}, +/* 45182 */ {(11<<2)|2,{114,97,0}}, +/* 45183 */ {(11<<2)|2,{114,97,0}}, +/* 45184 */ {(16<<2)|3,{114,99,48}}, +/* 45185 */ {(16<<2)|3,{114,99,49}}, +/* 45186 */ {(16<<2)|3,{114,99,50}}, +/* 45187 */ {(16<<2)|3,{114,99,97}}, +/* 45188 */ {(16<<2)|3,{114,99,99}}, +/* 45189 */ {(16<<2)|3,{114,99,101}}, +/* 45190 */ {(16<<2)|3,{114,99,105}}, +/* 45191 */ {(16<<2)|3,{114,99,111}}, +/* 45192 */ {(16<<2)|3,{114,99,115}}, +/* 45193 */ {(16<<2)|3,{114,99,116}}, +/* 45194 */ {(11<<2)|2,{114,99,0}}, +/* 45195 */ {(11<<2)|2,{114,99,0}}, +/* 45196 */ {(11<<2)|2,{114,99,0}}, +/* 45197 */ {(11<<2)|2,{114,99,0}}, +/* 45198 */ {(11<<2)|2,{114,99,0}}, +/* 45199 */ {(11<<2)|2,{114,99,0}}, +/* 45200 */ {(11<<2)|2,{114,99,0}}, +/* 45201 */ {(11<<2)|2,{114,99,0}}, +/* 45202 */ {(11<<2)|2,{114,99,0}}, +/* 45203 */ {(11<<2)|2,{114,99,0}}, +/* 45204 */ {(11<<2)|2,{114,99,0}}, +/* 45205 */ {(11<<2)|2,{114,99,0}}, +/* 45206 */ {(11<<2)|2,{114,99,0}}, +/* 45207 */ {(11<<2)|2,{114,99,0}}, +/* 45208 */ {(11<<2)|2,{114,99,0}}, +/* 45209 */ {(11<<2)|2,{114,99,0}}, +/* 45210 */ {(11<<2)|2,{114,99,0}}, +/* 45211 */ {(11<<2)|2,{114,99,0}}, +/* 45212 */ {(11<<2)|2,{114,99,0}}, +/* 45213 */ {(11<<2)|2,{114,99,0}}, +/* 45214 */ {(11<<2)|2,{114,99,0}}, +/* 45215 */ {(11<<2)|2,{114,99,0}}, +/* 45216 */ {(16<<2)|3,{114,101,48}}, +/* 45217 */ {(16<<2)|3,{114,101,49}}, +/* 45218 */ {(16<<2)|3,{114,101,50}}, +/* 45219 */ {(16<<2)|3,{114,101,97}}, +/* 45220 */ {(16<<2)|3,{114,101,99}}, +/* 45221 */ {(16<<2)|3,{114,101,101}}, +/* 45222 */ {(16<<2)|3,{114,101,105}}, +/* 45223 */ {(16<<2)|3,{114,101,111}}, +/* 45224 */ {(16<<2)|3,{114,101,115}}, +/* 45225 */ {(16<<2)|3,{114,101,116}}, +/* 45226 */ {(11<<2)|2,{114,101,0}}, +/* 45227 */ {(11<<2)|2,{114,101,0}}, +/* 45228 */ {(11<<2)|2,{114,101,0}}, +/* 45229 */ {(11<<2)|2,{114,101,0}}, +/* 45230 */ {(11<<2)|2,{114,101,0}}, +/* 45231 */ {(11<<2)|2,{114,101,0}}, +/* 45232 */ {(11<<2)|2,{114,101,0}}, +/* 45233 */ {(11<<2)|2,{114,101,0}}, +/* 45234 */ {(11<<2)|2,{114,101,0}}, +/* 45235 */ {(11<<2)|2,{114,101,0}}, +/* 45236 */ {(11<<2)|2,{114,101,0}}, +/* 45237 */ {(11<<2)|2,{114,101,0}}, +/* 45238 */ {(11<<2)|2,{114,101,0}}, +/* 45239 */ {(11<<2)|2,{114,101,0}}, +/* 45240 */ {(11<<2)|2,{114,101,0}}, +/* 45241 */ {(11<<2)|2,{114,101,0}}, +/* 45242 */ {(11<<2)|2,{114,101,0}}, +/* 45243 */ {(11<<2)|2,{114,101,0}}, +/* 45244 */ {(11<<2)|2,{114,101,0}}, +/* 45245 */ {(11<<2)|2,{114,101,0}}, +/* 45246 */ {(11<<2)|2,{114,101,0}}, +/* 45247 */ {(11<<2)|2,{114,101,0}}, +/* 45248 */ {(16<<2)|3,{114,105,48}}, +/* 45249 */ {(16<<2)|3,{114,105,49}}, +/* 45250 */ {(16<<2)|3,{114,105,50}}, +/* 45251 */ {(16<<2)|3,{114,105,97}}, +/* 45252 */ {(16<<2)|3,{114,105,99}}, +/* 45253 */ {(16<<2)|3,{114,105,101}}, +/* 45254 */ {(16<<2)|3,{114,105,105}}, +/* 45255 */ {(16<<2)|3,{114,105,111}}, +/* 45256 */ {(16<<2)|3,{114,105,115}}, +/* 45257 */ {(16<<2)|3,{114,105,116}}, +/* 45258 */ {(11<<2)|2,{114,105,0}}, +/* 45259 */ {(11<<2)|2,{114,105,0}}, +/* 45260 */ {(11<<2)|2,{114,105,0}}, +/* 45261 */ {(11<<2)|2,{114,105,0}}, +/* 45262 */ {(11<<2)|2,{114,105,0}}, +/* 45263 */ {(11<<2)|2,{114,105,0}}, +/* 45264 */ {(11<<2)|2,{114,105,0}}, +/* 45265 */ {(11<<2)|2,{114,105,0}}, +/* 45266 */ {(11<<2)|2,{114,105,0}}, +/* 45267 */ {(11<<2)|2,{114,105,0}}, +/* 45268 */ {(11<<2)|2,{114,105,0}}, +/* 45269 */ {(11<<2)|2,{114,105,0}}, +/* 45270 */ {(11<<2)|2,{114,105,0}}, +/* 45271 */ {(11<<2)|2,{114,105,0}}, +/* 45272 */ {(11<<2)|2,{114,105,0}}, +/* 45273 */ {(11<<2)|2,{114,105,0}}, +/* 45274 */ {(11<<2)|2,{114,105,0}}, +/* 45275 */ {(11<<2)|2,{114,105,0}}, +/* 45276 */ {(11<<2)|2,{114,105,0}}, +/* 45277 */ {(11<<2)|2,{114,105,0}}, +/* 45278 */ {(11<<2)|2,{114,105,0}}, +/* 45279 */ {(11<<2)|2,{114,105,0}}, +/* 45280 */ {(16<<2)|3,{114,111,48}}, +/* 45281 */ {(16<<2)|3,{114,111,49}}, +/* 45282 */ {(16<<2)|3,{114,111,50}}, +/* 45283 */ {(16<<2)|3,{114,111,97}}, +/* 45284 */ {(16<<2)|3,{114,111,99}}, +/* 45285 */ {(16<<2)|3,{114,111,101}}, +/* 45286 */ {(16<<2)|3,{114,111,105}}, +/* 45287 */ {(16<<2)|3,{114,111,111}}, +/* 45288 */ {(16<<2)|3,{114,111,115}}, +/* 45289 */ {(16<<2)|3,{114,111,116}}, +/* 45290 */ {(11<<2)|2,{114,111,0}}, +/* 45291 */ {(11<<2)|2,{114,111,0}}, +/* 45292 */ {(11<<2)|2,{114,111,0}}, +/* 45293 */ {(11<<2)|2,{114,111,0}}, +/* 45294 */ {(11<<2)|2,{114,111,0}}, +/* 45295 */ {(11<<2)|2,{114,111,0}}, +/* 45296 */ {(11<<2)|2,{114,111,0}}, +/* 45297 */ {(11<<2)|2,{114,111,0}}, +/* 45298 */ {(11<<2)|2,{114,111,0}}, +/* 45299 */ {(11<<2)|2,{114,111,0}}, +/* 45300 */ {(11<<2)|2,{114,111,0}}, +/* 45301 */ {(11<<2)|2,{114,111,0}}, +/* 45302 */ {(11<<2)|2,{114,111,0}}, +/* 45303 */ {(11<<2)|2,{114,111,0}}, +/* 45304 */ {(11<<2)|2,{114,111,0}}, +/* 45305 */ {(11<<2)|2,{114,111,0}}, +/* 45306 */ {(11<<2)|2,{114,111,0}}, +/* 45307 */ {(11<<2)|2,{114,111,0}}, +/* 45308 */ {(11<<2)|2,{114,111,0}}, +/* 45309 */ {(11<<2)|2,{114,111,0}}, +/* 45310 */ {(11<<2)|2,{114,111,0}}, +/* 45311 */ {(11<<2)|2,{114,111,0}}, +/* 45312 */ {(16<<2)|3,{114,115,48}}, +/* 45313 */ {(16<<2)|3,{114,115,49}}, +/* 45314 */ {(16<<2)|3,{114,115,50}}, +/* 45315 */ {(16<<2)|3,{114,115,97}}, +/* 45316 */ {(16<<2)|3,{114,115,99}}, +/* 45317 */ {(16<<2)|3,{114,115,101}}, +/* 45318 */ {(16<<2)|3,{114,115,105}}, +/* 45319 */ {(16<<2)|3,{114,115,111}}, +/* 45320 */ {(16<<2)|3,{114,115,115}}, +/* 45321 */ {(16<<2)|3,{114,115,116}}, +/* 45322 */ {(11<<2)|2,{114,115,0}}, +/* 45323 */ {(11<<2)|2,{114,115,0}}, +/* 45324 */ {(11<<2)|2,{114,115,0}}, +/* 45325 */ {(11<<2)|2,{114,115,0}}, +/* 45326 */ {(11<<2)|2,{114,115,0}}, +/* 45327 */ {(11<<2)|2,{114,115,0}}, +/* 45328 */ {(11<<2)|2,{114,115,0}}, +/* 45329 */ {(11<<2)|2,{114,115,0}}, +/* 45330 */ {(11<<2)|2,{114,115,0}}, +/* 45331 */ {(11<<2)|2,{114,115,0}}, +/* 45332 */ {(11<<2)|2,{114,115,0}}, +/* 45333 */ {(11<<2)|2,{114,115,0}}, +/* 45334 */ {(11<<2)|2,{114,115,0}}, +/* 45335 */ {(11<<2)|2,{114,115,0}}, +/* 45336 */ {(11<<2)|2,{114,115,0}}, +/* 45337 */ {(11<<2)|2,{114,115,0}}, +/* 45338 */ {(11<<2)|2,{114,115,0}}, +/* 45339 */ {(11<<2)|2,{114,115,0}}, +/* 45340 */ {(11<<2)|2,{114,115,0}}, +/* 45341 */ {(11<<2)|2,{114,115,0}}, +/* 45342 */ {(11<<2)|2,{114,115,0}}, +/* 45343 */ {(11<<2)|2,{114,115,0}}, +/* 45344 */ {(16<<2)|3,{114,116,48}}, +/* 45345 */ {(16<<2)|3,{114,116,49}}, +/* 45346 */ {(16<<2)|3,{114,116,50}}, +/* 45347 */ {(16<<2)|3,{114,116,97}}, +/* 45348 */ {(16<<2)|3,{114,116,99}}, +/* 45349 */ {(16<<2)|3,{114,116,101}}, +/* 45350 */ {(16<<2)|3,{114,116,105}}, +/* 45351 */ {(16<<2)|3,{114,116,111}}, +/* 45352 */ {(16<<2)|3,{114,116,115}}, +/* 45353 */ {(16<<2)|3,{114,116,116}}, +/* 45354 */ {(11<<2)|2,{114,116,0}}, +/* 45355 */ {(11<<2)|2,{114,116,0}}, +/* 45356 */ {(11<<2)|2,{114,116,0}}, +/* 45357 */ {(11<<2)|2,{114,116,0}}, +/* 45358 */ {(11<<2)|2,{114,116,0}}, +/* 45359 */ {(11<<2)|2,{114,116,0}}, +/* 45360 */ {(11<<2)|2,{114,116,0}}, +/* 45361 */ {(11<<2)|2,{114,116,0}}, +/* 45362 */ {(11<<2)|2,{114,116,0}}, +/* 45363 */ {(11<<2)|2,{114,116,0}}, +/* 45364 */ {(11<<2)|2,{114,116,0}}, +/* 45365 */ {(11<<2)|2,{114,116,0}}, +/* 45366 */ {(11<<2)|2,{114,116,0}}, +/* 45367 */ {(11<<2)|2,{114,116,0}}, +/* 45368 */ {(11<<2)|2,{114,116,0}}, +/* 45369 */ {(11<<2)|2,{114,116,0}}, +/* 45370 */ {(11<<2)|2,{114,116,0}}, +/* 45371 */ {(11<<2)|2,{114,116,0}}, +/* 45372 */ {(11<<2)|2,{114,116,0}}, +/* 45373 */ {(11<<2)|2,{114,116,0}}, +/* 45374 */ {(11<<2)|2,{114,116,0}}, +/* 45375 */ {(11<<2)|2,{114,116,0}}, +/* 45376 */ {(12<<2)|2,{114,32,0}}, +/* 45377 */ {(12<<2)|2,{114,32,0}}, +/* 45378 */ {(12<<2)|2,{114,32,0}}, +/* 45379 */ {(12<<2)|2,{114,32,0}}, +/* 45380 */ {(12<<2)|2,{114,32,0}}, +/* 45381 */ {(12<<2)|2,{114,32,0}}, +/* 45382 */ {(12<<2)|2,{114,32,0}}, +/* 45383 */ {(12<<2)|2,{114,32,0}}, +/* 45384 */ {(12<<2)|2,{114,32,0}}, +/* 45385 */ {(12<<2)|2,{114,32,0}}, +/* 45386 */ {(12<<2)|2,{114,32,0}}, +/* 45387 */ {(12<<2)|2,{114,32,0}}, +/* 45388 */ {(12<<2)|2,{114,32,0}}, +/* 45389 */ {(12<<2)|2,{114,32,0}}, +/* 45390 */ {(12<<2)|2,{114,32,0}}, +/* 45391 */ {(12<<2)|2,{114,32,0}}, +/* 45392 */ {(12<<2)|2,{114,37,0}}, +/* 45393 */ {(12<<2)|2,{114,37,0}}, +/* 45394 */ {(12<<2)|2,{114,37,0}}, +/* 45395 */ {(12<<2)|2,{114,37,0}}, +/* 45396 */ {(12<<2)|2,{114,37,0}}, +/* 45397 */ {(12<<2)|2,{114,37,0}}, +/* 45398 */ {(12<<2)|2,{114,37,0}}, +/* 45399 */ {(12<<2)|2,{114,37,0}}, +/* 45400 */ {(12<<2)|2,{114,37,0}}, +/* 45401 */ {(12<<2)|2,{114,37,0}}, +/* 45402 */ {(12<<2)|2,{114,37,0}}, +/* 45403 */ {(12<<2)|2,{114,37,0}}, +/* 45404 */ {(12<<2)|2,{114,37,0}}, +/* 45405 */ {(12<<2)|2,{114,37,0}}, +/* 45406 */ {(12<<2)|2,{114,37,0}}, +/* 45407 */ {(12<<2)|2,{114,37,0}}, +/* 45408 */ {(12<<2)|2,{114,45,0}}, +/* 45409 */ {(12<<2)|2,{114,45,0}}, +/* 45410 */ {(12<<2)|2,{114,45,0}}, +/* 45411 */ {(12<<2)|2,{114,45,0}}, +/* 45412 */ {(12<<2)|2,{114,45,0}}, +/* 45413 */ {(12<<2)|2,{114,45,0}}, +/* 45414 */ {(12<<2)|2,{114,45,0}}, +/* 45415 */ {(12<<2)|2,{114,45,0}}, +/* 45416 */ {(12<<2)|2,{114,45,0}}, +/* 45417 */ {(12<<2)|2,{114,45,0}}, +/* 45418 */ {(12<<2)|2,{114,45,0}}, +/* 45419 */ {(12<<2)|2,{114,45,0}}, +/* 45420 */ {(12<<2)|2,{114,45,0}}, +/* 45421 */ {(12<<2)|2,{114,45,0}}, +/* 45422 */ {(12<<2)|2,{114,45,0}}, +/* 45423 */ {(12<<2)|2,{114,45,0}}, +/* 45424 */ {(12<<2)|2,{114,46,0}}, +/* 45425 */ {(12<<2)|2,{114,46,0}}, +/* 45426 */ {(12<<2)|2,{114,46,0}}, +/* 45427 */ {(12<<2)|2,{114,46,0}}, +/* 45428 */ {(12<<2)|2,{114,46,0}}, +/* 45429 */ {(12<<2)|2,{114,46,0}}, +/* 45430 */ {(12<<2)|2,{114,46,0}}, +/* 45431 */ {(12<<2)|2,{114,46,0}}, +/* 45432 */ {(12<<2)|2,{114,46,0}}, +/* 45433 */ {(12<<2)|2,{114,46,0}}, +/* 45434 */ {(12<<2)|2,{114,46,0}}, +/* 45435 */ {(12<<2)|2,{114,46,0}}, +/* 45436 */ {(12<<2)|2,{114,46,0}}, +/* 45437 */ {(12<<2)|2,{114,46,0}}, +/* 45438 */ {(12<<2)|2,{114,46,0}}, +/* 45439 */ {(12<<2)|2,{114,46,0}}, +/* 45440 */ {(12<<2)|2,{114,47,0}}, +/* 45441 */ {(12<<2)|2,{114,47,0}}, +/* 45442 */ {(12<<2)|2,{114,47,0}}, +/* 45443 */ {(12<<2)|2,{114,47,0}}, +/* 45444 */ {(12<<2)|2,{114,47,0}}, +/* 45445 */ {(12<<2)|2,{114,47,0}}, +/* 45446 */ {(12<<2)|2,{114,47,0}}, +/* 45447 */ {(12<<2)|2,{114,47,0}}, +/* 45448 */ {(12<<2)|2,{114,47,0}}, +/* 45449 */ {(12<<2)|2,{114,47,0}}, +/* 45450 */ {(12<<2)|2,{114,47,0}}, +/* 45451 */ {(12<<2)|2,{114,47,0}}, +/* 45452 */ {(12<<2)|2,{114,47,0}}, +/* 45453 */ {(12<<2)|2,{114,47,0}}, +/* 45454 */ {(12<<2)|2,{114,47,0}}, +/* 45455 */ {(12<<2)|2,{114,47,0}}, +/* 45456 */ {(12<<2)|2,{114,51,0}}, +/* 45457 */ {(12<<2)|2,{114,51,0}}, +/* 45458 */ {(12<<2)|2,{114,51,0}}, +/* 45459 */ {(12<<2)|2,{114,51,0}}, +/* 45460 */ {(12<<2)|2,{114,51,0}}, +/* 45461 */ {(12<<2)|2,{114,51,0}}, +/* 45462 */ {(12<<2)|2,{114,51,0}}, +/* 45463 */ {(12<<2)|2,{114,51,0}}, +/* 45464 */ {(12<<2)|2,{114,51,0}}, +/* 45465 */ {(12<<2)|2,{114,51,0}}, +/* 45466 */ {(12<<2)|2,{114,51,0}}, +/* 45467 */ {(12<<2)|2,{114,51,0}}, +/* 45468 */ {(12<<2)|2,{114,51,0}}, +/* 45469 */ {(12<<2)|2,{114,51,0}}, +/* 45470 */ {(12<<2)|2,{114,51,0}}, +/* 45471 */ {(12<<2)|2,{114,51,0}}, +/* 45472 */ {(12<<2)|2,{114,52,0}}, +/* 45473 */ {(12<<2)|2,{114,52,0}}, +/* 45474 */ {(12<<2)|2,{114,52,0}}, +/* 45475 */ {(12<<2)|2,{114,52,0}}, +/* 45476 */ {(12<<2)|2,{114,52,0}}, +/* 45477 */ {(12<<2)|2,{114,52,0}}, +/* 45478 */ {(12<<2)|2,{114,52,0}}, +/* 45479 */ {(12<<2)|2,{114,52,0}}, +/* 45480 */ {(12<<2)|2,{114,52,0}}, +/* 45481 */ {(12<<2)|2,{114,52,0}}, +/* 45482 */ {(12<<2)|2,{114,52,0}}, +/* 45483 */ {(12<<2)|2,{114,52,0}}, +/* 45484 */ {(12<<2)|2,{114,52,0}}, +/* 45485 */ {(12<<2)|2,{114,52,0}}, +/* 45486 */ {(12<<2)|2,{114,52,0}}, +/* 45487 */ {(12<<2)|2,{114,52,0}}, +/* 45488 */ {(12<<2)|2,{114,53,0}}, +/* 45489 */ {(12<<2)|2,{114,53,0}}, +/* 45490 */ {(12<<2)|2,{114,53,0}}, +/* 45491 */ {(12<<2)|2,{114,53,0}}, +/* 45492 */ {(12<<2)|2,{114,53,0}}, +/* 45493 */ {(12<<2)|2,{114,53,0}}, +/* 45494 */ {(12<<2)|2,{114,53,0}}, +/* 45495 */ {(12<<2)|2,{114,53,0}}, +/* 45496 */ {(12<<2)|2,{114,53,0}}, +/* 45497 */ {(12<<2)|2,{114,53,0}}, +/* 45498 */ {(12<<2)|2,{114,53,0}}, +/* 45499 */ {(12<<2)|2,{114,53,0}}, +/* 45500 */ {(12<<2)|2,{114,53,0}}, +/* 45501 */ {(12<<2)|2,{114,53,0}}, +/* 45502 */ {(12<<2)|2,{114,53,0}}, +/* 45503 */ {(12<<2)|2,{114,53,0}}, +/* 45504 */ {(12<<2)|2,{114,54,0}}, +/* 45505 */ {(12<<2)|2,{114,54,0}}, +/* 45506 */ {(12<<2)|2,{114,54,0}}, +/* 45507 */ {(12<<2)|2,{114,54,0}}, +/* 45508 */ {(12<<2)|2,{114,54,0}}, +/* 45509 */ {(12<<2)|2,{114,54,0}}, +/* 45510 */ {(12<<2)|2,{114,54,0}}, +/* 45511 */ {(12<<2)|2,{114,54,0}}, +/* 45512 */ {(12<<2)|2,{114,54,0}}, +/* 45513 */ {(12<<2)|2,{114,54,0}}, +/* 45514 */ {(12<<2)|2,{114,54,0}}, +/* 45515 */ {(12<<2)|2,{114,54,0}}, +/* 45516 */ {(12<<2)|2,{114,54,0}}, +/* 45517 */ {(12<<2)|2,{114,54,0}}, +/* 45518 */ {(12<<2)|2,{114,54,0}}, +/* 45519 */ {(12<<2)|2,{114,54,0}}, +/* 45520 */ {(12<<2)|2,{114,55,0}}, +/* 45521 */ {(12<<2)|2,{114,55,0}}, +/* 45522 */ {(12<<2)|2,{114,55,0}}, +/* 45523 */ {(12<<2)|2,{114,55,0}}, +/* 45524 */ {(12<<2)|2,{114,55,0}}, +/* 45525 */ {(12<<2)|2,{114,55,0}}, +/* 45526 */ {(12<<2)|2,{114,55,0}}, +/* 45527 */ {(12<<2)|2,{114,55,0}}, +/* 45528 */ {(12<<2)|2,{114,55,0}}, +/* 45529 */ {(12<<2)|2,{114,55,0}}, +/* 45530 */ {(12<<2)|2,{114,55,0}}, +/* 45531 */ {(12<<2)|2,{114,55,0}}, +/* 45532 */ {(12<<2)|2,{114,55,0}}, +/* 45533 */ {(12<<2)|2,{114,55,0}}, +/* 45534 */ {(12<<2)|2,{114,55,0}}, +/* 45535 */ {(12<<2)|2,{114,55,0}}, +/* 45536 */ {(12<<2)|2,{114,56,0}}, +/* 45537 */ {(12<<2)|2,{114,56,0}}, +/* 45538 */ {(12<<2)|2,{114,56,0}}, +/* 45539 */ {(12<<2)|2,{114,56,0}}, +/* 45540 */ {(12<<2)|2,{114,56,0}}, +/* 45541 */ {(12<<2)|2,{114,56,0}}, +/* 45542 */ {(12<<2)|2,{114,56,0}}, +/* 45543 */ {(12<<2)|2,{114,56,0}}, +/* 45544 */ {(12<<2)|2,{114,56,0}}, +/* 45545 */ {(12<<2)|2,{114,56,0}}, +/* 45546 */ {(12<<2)|2,{114,56,0}}, +/* 45547 */ {(12<<2)|2,{114,56,0}}, +/* 45548 */ {(12<<2)|2,{114,56,0}}, +/* 45549 */ {(12<<2)|2,{114,56,0}}, +/* 45550 */ {(12<<2)|2,{114,56,0}}, +/* 45551 */ {(12<<2)|2,{114,56,0}}, +/* 45552 */ {(12<<2)|2,{114,57,0}}, +/* 45553 */ {(12<<2)|2,{114,57,0}}, +/* 45554 */ {(12<<2)|2,{114,57,0}}, +/* 45555 */ {(12<<2)|2,{114,57,0}}, +/* 45556 */ {(12<<2)|2,{114,57,0}}, +/* 45557 */ {(12<<2)|2,{114,57,0}}, +/* 45558 */ {(12<<2)|2,{114,57,0}}, +/* 45559 */ {(12<<2)|2,{114,57,0}}, +/* 45560 */ {(12<<2)|2,{114,57,0}}, +/* 45561 */ {(12<<2)|2,{114,57,0}}, +/* 45562 */ {(12<<2)|2,{114,57,0}}, +/* 45563 */ {(12<<2)|2,{114,57,0}}, +/* 45564 */ {(12<<2)|2,{114,57,0}}, +/* 45565 */ {(12<<2)|2,{114,57,0}}, +/* 45566 */ {(12<<2)|2,{114,57,0}}, +/* 45567 */ {(12<<2)|2,{114,57,0}}, +/* 45568 */ {(12<<2)|2,{114,61,0}}, +/* 45569 */ {(12<<2)|2,{114,61,0}}, +/* 45570 */ {(12<<2)|2,{114,61,0}}, +/* 45571 */ {(12<<2)|2,{114,61,0}}, +/* 45572 */ {(12<<2)|2,{114,61,0}}, +/* 45573 */ {(12<<2)|2,{114,61,0}}, +/* 45574 */ {(12<<2)|2,{114,61,0}}, +/* 45575 */ {(12<<2)|2,{114,61,0}}, +/* 45576 */ {(12<<2)|2,{114,61,0}}, +/* 45577 */ {(12<<2)|2,{114,61,0}}, +/* 45578 */ {(12<<2)|2,{114,61,0}}, +/* 45579 */ {(12<<2)|2,{114,61,0}}, +/* 45580 */ {(12<<2)|2,{114,61,0}}, +/* 45581 */ {(12<<2)|2,{114,61,0}}, +/* 45582 */ {(12<<2)|2,{114,61,0}}, +/* 45583 */ {(12<<2)|2,{114,61,0}}, +/* 45584 */ {(12<<2)|2,{114,65,0}}, +/* 45585 */ {(12<<2)|2,{114,65,0}}, +/* 45586 */ {(12<<2)|2,{114,65,0}}, +/* 45587 */ {(12<<2)|2,{114,65,0}}, +/* 45588 */ {(12<<2)|2,{114,65,0}}, +/* 45589 */ {(12<<2)|2,{114,65,0}}, +/* 45590 */ {(12<<2)|2,{114,65,0}}, +/* 45591 */ {(12<<2)|2,{114,65,0}}, +/* 45592 */ {(12<<2)|2,{114,65,0}}, +/* 45593 */ {(12<<2)|2,{114,65,0}}, +/* 45594 */ {(12<<2)|2,{114,65,0}}, +/* 45595 */ {(12<<2)|2,{114,65,0}}, +/* 45596 */ {(12<<2)|2,{114,65,0}}, +/* 45597 */ {(12<<2)|2,{114,65,0}}, +/* 45598 */ {(12<<2)|2,{114,65,0}}, +/* 45599 */ {(12<<2)|2,{114,65,0}}, +/* 45600 */ {(12<<2)|2,{114,95,0}}, +/* 45601 */ {(12<<2)|2,{114,95,0}}, +/* 45602 */ {(12<<2)|2,{114,95,0}}, +/* 45603 */ {(12<<2)|2,{114,95,0}}, +/* 45604 */ {(12<<2)|2,{114,95,0}}, +/* 45605 */ {(12<<2)|2,{114,95,0}}, +/* 45606 */ {(12<<2)|2,{114,95,0}}, +/* 45607 */ {(12<<2)|2,{114,95,0}}, +/* 45608 */ {(12<<2)|2,{114,95,0}}, +/* 45609 */ {(12<<2)|2,{114,95,0}}, +/* 45610 */ {(12<<2)|2,{114,95,0}}, +/* 45611 */ {(12<<2)|2,{114,95,0}}, +/* 45612 */ {(12<<2)|2,{114,95,0}}, +/* 45613 */ {(12<<2)|2,{114,95,0}}, +/* 45614 */ {(12<<2)|2,{114,95,0}}, +/* 45615 */ {(12<<2)|2,{114,95,0}}, +/* 45616 */ {(12<<2)|2,{114,98,0}}, +/* 45617 */ {(12<<2)|2,{114,98,0}}, +/* 45618 */ {(12<<2)|2,{114,98,0}}, +/* 45619 */ {(12<<2)|2,{114,98,0}}, +/* 45620 */ {(12<<2)|2,{114,98,0}}, +/* 45621 */ {(12<<2)|2,{114,98,0}}, +/* 45622 */ {(12<<2)|2,{114,98,0}}, +/* 45623 */ {(12<<2)|2,{114,98,0}}, +/* 45624 */ {(12<<2)|2,{114,98,0}}, +/* 45625 */ {(12<<2)|2,{114,98,0}}, +/* 45626 */ {(12<<2)|2,{114,98,0}}, +/* 45627 */ {(12<<2)|2,{114,98,0}}, +/* 45628 */ {(12<<2)|2,{114,98,0}}, +/* 45629 */ {(12<<2)|2,{114,98,0}}, +/* 45630 */ {(12<<2)|2,{114,98,0}}, +/* 45631 */ {(12<<2)|2,{114,98,0}}, +/* 45632 */ {(12<<2)|2,{114,100,0}}, +/* 45633 */ {(12<<2)|2,{114,100,0}}, +/* 45634 */ {(12<<2)|2,{114,100,0}}, +/* 45635 */ {(12<<2)|2,{114,100,0}}, +/* 45636 */ {(12<<2)|2,{114,100,0}}, +/* 45637 */ {(12<<2)|2,{114,100,0}}, +/* 45638 */ {(12<<2)|2,{114,100,0}}, +/* 45639 */ {(12<<2)|2,{114,100,0}}, +/* 45640 */ {(12<<2)|2,{114,100,0}}, +/* 45641 */ {(12<<2)|2,{114,100,0}}, +/* 45642 */ {(12<<2)|2,{114,100,0}}, +/* 45643 */ {(12<<2)|2,{114,100,0}}, +/* 45644 */ {(12<<2)|2,{114,100,0}}, +/* 45645 */ {(12<<2)|2,{114,100,0}}, +/* 45646 */ {(12<<2)|2,{114,100,0}}, +/* 45647 */ {(12<<2)|2,{114,100,0}}, +/* 45648 */ {(12<<2)|2,{114,102,0}}, +/* 45649 */ {(12<<2)|2,{114,102,0}}, +/* 45650 */ {(12<<2)|2,{114,102,0}}, +/* 45651 */ {(12<<2)|2,{114,102,0}}, +/* 45652 */ {(12<<2)|2,{114,102,0}}, +/* 45653 */ {(12<<2)|2,{114,102,0}}, +/* 45654 */ {(12<<2)|2,{114,102,0}}, +/* 45655 */ {(12<<2)|2,{114,102,0}}, +/* 45656 */ {(12<<2)|2,{114,102,0}}, +/* 45657 */ {(12<<2)|2,{114,102,0}}, +/* 45658 */ {(12<<2)|2,{114,102,0}}, +/* 45659 */ {(12<<2)|2,{114,102,0}}, +/* 45660 */ {(12<<2)|2,{114,102,0}}, +/* 45661 */ {(12<<2)|2,{114,102,0}}, +/* 45662 */ {(12<<2)|2,{114,102,0}}, +/* 45663 */ {(12<<2)|2,{114,102,0}}, +/* 45664 */ {(12<<2)|2,{114,103,0}}, +/* 45665 */ {(12<<2)|2,{114,103,0}}, +/* 45666 */ {(12<<2)|2,{114,103,0}}, +/* 45667 */ {(12<<2)|2,{114,103,0}}, +/* 45668 */ {(12<<2)|2,{114,103,0}}, +/* 45669 */ {(12<<2)|2,{114,103,0}}, +/* 45670 */ {(12<<2)|2,{114,103,0}}, +/* 45671 */ {(12<<2)|2,{114,103,0}}, +/* 45672 */ {(12<<2)|2,{114,103,0}}, +/* 45673 */ {(12<<2)|2,{114,103,0}}, +/* 45674 */ {(12<<2)|2,{114,103,0}}, +/* 45675 */ {(12<<2)|2,{114,103,0}}, +/* 45676 */ {(12<<2)|2,{114,103,0}}, +/* 45677 */ {(12<<2)|2,{114,103,0}}, +/* 45678 */ {(12<<2)|2,{114,103,0}}, +/* 45679 */ {(12<<2)|2,{114,103,0}}, +/* 45680 */ {(12<<2)|2,{114,104,0}}, +/* 45681 */ {(12<<2)|2,{114,104,0}}, +/* 45682 */ {(12<<2)|2,{114,104,0}}, +/* 45683 */ {(12<<2)|2,{114,104,0}}, +/* 45684 */ {(12<<2)|2,{114,104,0}}, +/* 45685 */ {(12<<2)|2,{114,104,0}}, +/* 45686 */ {(12<<2)|2,{114,104,0}}, +/* 45687 */ {(12<<2)|2,{114,104,0}}, +/* 45688 */ {(12<<2)|2,{114,104,0}}, +/* 45689 */ {(12<<2)|2,{114,104,0}}, +/* 45690 */ {(12<<2)|2,{114,104,0}}, +/* 45691 */ {(12<<2)|2,{114,104,0}}, +/* 45692 */ {(12<<2)|2,{114,104,0}}, +/* 45693 */ {(12<<2)|2,{114,104,0}}, +/* 45694 */ {(12<<2)|2,{114,104,0}}, +/* 45695 */ {(12<<2)|2,{114,104,0}}, +/* 45696 */ {(12<<2)|2,{114,108,0}}, +/* 45697 */ {(12<<2)|2,{114,108,0}}, +/* 45698 */ {(12<<2)|2,{114,108,0}}, +/* 45699 */ {(12<<2)|2,{114,108,0}}, +/* 45700 */ {(12<<2)|2,{114,108,0}}, +/* 45701 */ {(12<<2)|2,{114,108,0}}, +/* 45702 */ {(12<<2)|2,{114,108,0}}, +/* 45703 */ {(12<<2)|2,{114,108,0}}, +/* 45704 */ {(12<<2)|2,{114,108,0}}, +/* 45705 */ {(12<<2)|2,{114,108,0}}, +/* 45706 */ {(12<<2)|2,{114,108,0}}, +/* 45707 */ {(12<<2)|2,{114,108,0}}, +/* 45708 */ {(12<<2)|2,{114,108,0}}, +/* 45709 */ {(12<<2)|2,{114,108,0}}, +/* 45710 */ {(12<<2)|2,{114,108,0}}, +/* 45711 */ {(12<<2)|2,{114,108,0}}, +/* 45712 */ {(12<<2)|2,{114,109,0}}, +/* 45713 */ {(12<<2)|2,{114,109,0}}, +/* 45714 */ {(12<<2)|2,{114,109,0}}, +/* 45715 */ {(12<<2)|2,{114,109,0}}, +/* 45716 */ {(12<<2)|2,{114,109,0}}, +/* 45717 */ {(12<<2)|2,{114,109,0}}, +/* 45718 */ {(12<<2)|2,{114,109,0}}, +/* 45719 */ {(12<<2)|2,{114,109,0}}, +/* 45720 */ {(12<<2)|2,{114,109,0}}, +/* 45721 */ {(12<<2)|2,{114,109,0}}, +/* 45722 */ {(12<<2)|2,{114,109,0}}, +/* 45723 */ {(12<<2)|2,{114,109,0}}, +/* 45724 */ {(12<<2)|2,{114,109,0}}, +/* 45725 */ {(12<<2)|2,{114,109,0}}, +/* 45726 */ {(12<<2)|2,{114,109,0}}, +/* 45727 */ {(12<<2)|2,{114,109,0}}, +/* 45728 */ {(12<<2)|2,{114,110,0}}, +/* 45729 */ {(12<<2)|2,{114,110,0}}, +/* 45730 */ {(12<<2)|2,{114,110,0}}, +/* 45731 */ {(12<<2)|2,{114,110,0}}, +/* 45732 */ {(12<<2)|2,{114,110,0}}, +/* 45733 */ {(12<<2)|2,{114,110,0}}, +/* 45734 */ {(12<<2)|2,{114,110,0}}, +/* 45735 */ {(12<<2)|2,{114,110,0}}, +/* 45736 */ {(12<<2)|2,{114,110,0}}, +/* 45737 */ {(12<<2)|2,{114,110,0}}, +/* 45738 */ {(12<<2)|2,{114,110,0}}, +/* 45739 */ {(12<<2)|2,{114,110,0}}, +/* 45740 */ {(12<<2)|2,{114,110,0}}, +/* 45741 */ {(12<<2)|2,{114,110,0}}, +/* 45742 */ {(12<<2)|2,{114,110,0}}, +/* 45743 */ {(12<<2)|2,{114,110,0}}, +/* 45744 */ {(12<<2)|2,{114,112,0}}, +/* 45745 */ {(12<<2)|2,{114,112,0}}, +/* 45746 */ {(12<<2)|2,{114,112,0}}, +/* 45747 */ {(12<<2)|2,{114,112,0}}, +/* 45748 */ {(12<<2)|2,{114,112,0}}, +/* 45749 */ {(12<<2)|2,{114,112,0}}, +/* 45750 */ {(12<<2)|2,{114,112,0}}, +/* 45751 */ {(12<<2)|2,{114,112,0}}, +/* 45752 */ {(12<<2)|2,{114,112,0}}, +/* 45753 */ {(12<<2)|2,{114,112,0}}, +/* 45754 */ {(12<<2)|2,{114,112,0}}, +/* 45755 */ {(12<<2)|2,{114,112,0}}, +/* 45756 */ {(12<<2)|2,{114,112,0}}, +/* 45757 */ {(12<<2)|2,{114,112,0}}, +/* 45758 */ {(12<<2)|2,{114,112,0}}, +/* 45759 */ {(12<<2)|2,{114,112,0}}, +/* 45760 */ {(12<<2)|2,{114,114,0}}, +/* 45761 */ {(12<<2)|2,{114,114,0}}, +/* 45762 */ {(12<<2)|2,{114,114,0}}, +/* 45763 */ {(12<<2)|2,{114,114,0}}, +/* 45764 */ {(12<<2)|2,{114,114,0}}, +/* 45765 */ {(12<<2)|2,{114,114,0}}, +/* 45766 */ {(12<<2)|2,{114,114,0}}, +/* 45767 */ {(12<<2)|2,{114,114,0}}, +/* 45768 */ {(12<<2)|2,{114,114,0}}, +/* 45769 */ {(12<<2)|2,{114,114,0}}, +/* 45770 */ {(12<<2)|2,{114,114,0}}, +/* 45771 */ {(12<<2)|2,{114,114,0}}, +/* 45772 */ {(12<<2)|2,{114,114,0}}, +/* 45773 */ {(12<<2)|2,{114,114,0}}, +/* 45774 */ {(12<<2)|2,{114,114,0}}, +/* 45775 */ {(12<<2)|2,{114,114,0}}, +/* 45776 */ {(12<<2)|2,{114,117,0}}, +/* 45777 */ {(12<<2)|2,{114,117,0}}, +/* 45778 */ {(12<<2)|2,{114,117,0}}, +/* 45779 */ {(12<<2)|2,{114,117,0}}, +/* 45780 */ {(12<<2)|2,{114,117,0}}, +/* 45781 */ {(12<<2)|2,{114,117,0}}, +/* 45782 */ {(12<<2)|2,{114,117,0}}, +/* 45783 */ {(12<<2)|2,{114,117,0}}, +/* 45784 */ {(12<<2)|2,{114,117,0}}, +/* 45785 */ {(12<<2)|2,{114,117,0}}, +/* 45786 */ {(12<<2)|2,{114,117,0}}, +/* 45787 */ {(12<<2)|2,{114,117,0}}, +/* 45788 */ {(12<<2)|2,{114,117,0}}, +/* 45789 */ {(12<<2)|2,{114,117,0}}, +/* 45790 */ {(12<<2)|2,{114,117,0}}, +/* 45791 */ {(12<<2)|2,{114,117,0}}, +/* 45792 */ {(13<<2)|2,{114,58,0}}, +/* 45793 */ {(13<<2)|2,{114,58,0}}, +/* 45794 */ {(13<<2)|2,{114,58,0}}, +/* 45795 */ {(13<<2)|2,{114,58,0}}, +/* 45796 */ {(13<<2)|2,{114,58,0}}, +/* 45797 */ {(13<<2)|2,{114,58,0}}, +/* 45798 */ {(13<<2)|2,{114,58,0}}, +/* 45799 */ {(13<<2)|2,{114,58,0}}, +/* 45800 */ {(13<<2)|2,{114,66,0}}, +/* 45801 */ {(13<<2)|2,{114,66,0}}, +/* 45802 */ {(13<<2)|2,{114,66,0}}, +/* 45803 */ {(13<<2)|2,{114,66,0}}, +/* 45804 */ {(13<<2)|2,{114,66,0}}, +/* 45805 */ {(13<<2)|2,{114,66,0}}, +/* 45806 */ {(13<<2)|2,{114,66,0}}, +/* 45807 */ {(13<<2)|2,{114,66,0}}, +/* 45808 */ {(13<<2)|2,{114,67,0}}, +/* 45809 */ {(13<<2)|2,{114,67,0}}, +/* 45810 */ {(13<<2)|2,{114,67,0}}, +/* 45811 */ {(13<<2)|2,{114,67,0}}, +/* 45812 */ {(13<<2)|2,{114,67,0}}, +/* 45813 */ {(13<<2)|2,{114,67,0}}, +/* 45814 */ {(13<<2)|2,{114,67,0}}, +/* 45815 */ {(13<<2)|2,{114,67,0}}, +/* 45816 */ {(13<<2)|2,{114,68,0}}, +/* 45817 */ {(13<<2)|2,{114,68,0}}, +/* 45818 */ {(13<<2)|2,{114,68,0}}, +/* 45819 */ {(13<<2)|2,{114,68,0}}, +/* 45820 */ {(13<<2)|2,{114,68,0}}, +/* 45821 */ {(13<<2)|2,{114,68,0}}, +/* 45822 */ {(13<<2)|2,{114,68,0}}, +/* 45823 */ {(13<<2)|2,{114,68,0}}, +/* 45824 */ {(13<<2)|2,{114,69,0}}, +/* 45825 */ {(13<<2)|2,{114,69,0}}, +/* 45826 */ {(13<<2)|2,{114,69,0}}, +/* 45827 */ {(13<<2)|2,{114,69,0}}, +/* 45828 */ {(13<<2)|2,{114,69,0}}, +/* 45829 */ {(13<<2)|2,{114,69,0}}, +/* 45830 */ {(13<<2)|2,{114,69,0}}, +/* 45831 */ {(13<<2)|2,{114,69,0}}, +/* 45832 */ {(13<<2)|2,{114,70,0}}, +/* 45833 */ {(13<<2)|2,{114,70,0}}, +/* 45834 */ {(13<<2)|2,{114,70,0}}, +/* 45835 */ {(13<<2)|2,{114,70,0}}, +/* 45836 */ {(13<<2)|2,{114,70,0}}, +/* 45837 */ {(13<<2)|2,{114,70,0}}, +/* 45838 */ {(13<<2)|2,{114,70,0}}, +/* 45839 */ {(13<<2)|2,{114,70,0}}, +/* 45840 */ {(13<<2)|2,{114,71,0}}, +/* 45841 */ {(13<<2)|2,{114,71,0}}, +/* 45842 */ {(13<<2)|2,{114,71,0}}, +/* 45843 */ {(13<<2)|2,{114,71,0}}, +/* 45844 */ {(13<<2)|2,{114,71,0}}, +/* 45845 */ {(13<<2)|2,{114,71,0}}, +/* 45846 */ {(13<<2)|2,{114,71,0}}, +/* 45847 */ {(13<<2)|2,{114,71,0}}, +/* 45848 */ {(13<<2)|2,{114,72,0}}, +/* 45849 */ {(13<<2)|2,{114,72,0}}, +/* 45850 */ {(13<<2)|2,{114,72,0}}, +/* 45851 */ {(13<<2)|2,{114,72,0}}, +/* 45852 */ {(13<<2)|2,{114,72,0}}, +/* 45853 */ {(13<<2)|2,{114,72,0}}, +/* 45854 */ {(13<<2)|2,{114,72,0}}, +/* 45855 */ {(13<<2)|2,{114,72,0}}, +/* 45856 */ {(13<<2)|2,{114,73,0}}, +/* 45857 */ {(13<<2)|2,{114,73,0}}, +/* 45858 */ {(13<<2)|2,{114,73,0}}, +/* 45859 */ {(13<<2)|2,{114,73,0}}, +/* 45860 */ {(13<<2)|2,{114,73,0}}, +/* 45861 */ {(13<<2)|2,{114,73,0}}, +/* 45862 */ {(13<<2)|2,{114,73,0}}, +/* 45863 */ {(13<<2)|2,{114,73,0}}, +/* 45864 */ {(13<<2)|2,{114,74,0}}, +/* 45865 */ {(13<<2)|2,{114,74,0}}, +/* 45866 */ {(13<<2)|2,{114,74,0}}, +/* 45867 */ {(13<<2)|2,{114,74,0}}, +/* 45868 */ {(13<<2)|2,{114,74,0}}, +/* 45869 */ {(13<<2)|2,{114,74,0}}, +/* 45870 */ {(13<<2)|2,{114,74,0}}, +/* 45871 */ {(13<<2)|2,{114,74,0}}, +/* 45872 */ {(13<<2)|2,{114,75,0}}, +/* 45873 */ {(13<<2)|2,{114,75,0}}, +/* 45874 */ {(13<<2)|2,{114,75,0}}, +/* 45875 */ {(13<<2)|2,{114,75,0}}, +/* 45876 */ {(13<<2)|2,{114,75,0}}, +/* 45877 */ {(13<<2)|2,{114,75,0}}, +/* 45878 */ {(13<<2)|2,{114,75,0}}, +/* 45879 */ {(13<<2)|2,{114,75,0}}, +/* 45880 */ {(13<<2)|2,{114,76,0}}, +/* 45881 */ {(13<<2)|2,{114,76,0}}, +/* 45882 */ {(13<<2)|2,{114,76,0}}, +/* 45883 */ {(13<<2)|2,{114,76,0}}, +/* 45884 */ {(13<<2)|2,{114,76,0}}, +/* 45885 */ {(13<<2)|2,{114,76,0}}, +/* 45886 */ {(13<<2)|2,{114,76,0}}, +/* 45887 */ {(13<<2)|2,{114,76,0}}, +/* 45888 */ {(13<<2)|2,{114,77,0}}, +/* 45889 */ {(13<<2)|2,{114,77,0}}, +/* 45890 */ {(13<<2)|2,{114,77,0}}, +/* 45891 */ {(13<<2)|2,{114,77,0}}, +/* 45892 */ {(13<<2)|2,{114,77,0}}, +/* 45893 */ {(13<<2)|2,{114,77,0}}, +/* 45894 */ {(13<<2)|2,{114,77,0}}, +/* 45895 */ {(13<<2)|2,{114,77,0}}, +/* 45896 */ {(13<<2)|2,{114,78,0}}, +/* 45897 */ {(13<<2)|2,{114,78,0}}, +/* 45898 */ {(13<<2)|2,{114,78,0}}, +/* 45899 */ {(13<<2)|2,{114,78,0}}, +/* 45900 */ {(13<<2)|2,{114,78,0}}, +/* 45901 */ {(13<<2)|2,{114,78,0}}, +/* 45902 */ {(13<<2)|2,{114,78,0}}, +/* 45903 */ {(13<<2)|2,{114,78,0}}, +/* 45904 */ {(13<<2)|2,{114,79,0}}, +/* 45905 */ {(13<<2)|2,{114,79,0}}, +/* 45906 */ {(13<<2)|2,{114,79,0}}, +/* 45907 */ {(13<<2)|2,{114,79,0}}, +/* 45908 */ {(13<<2)|2,{114,79,0}}, +/* 45909 */ {(13<<2)|2,{114,79,0}}, +/* 45910 */ {(13<<2)|2,{114,79,0}}, +/* 45911 */ {(13<<2)|2,{114,79,0}}, +/* 45912 */ {(13<<2)|2,{114,80,0}}, +/* 45913 */ {(13<<2)|2,{114,80,0}}, +/* 45914 */ {(13<<2)|2,{114,80,0}}, +/* 45915 */ {(13<<2)|2,{114,80,0}}, +/* 45916 */ {(13<<2)|2,{114,80,0}}, +/* 45917 */ {(13<<2)|2,{114,80,0}}, +/* 45918 */ {(13<<2)|2,{114,80,0}}, +/* 45919 */ {(13<<2)|2,{114,80,0}}, +/* 45920 */ {(13<<2)|2,{114,81,0}}, +/* 45921 */ {(13<<2)|2,{114,81,0}}, +/* 45922 */ {(13<<2)|2,{114,81,0}}, +/* 45923 */ {(13<<2)|2,{114,81,0}}, +/* 45924 */ {(13<<2)|2,{114,81,0}}, +/* 45925 */ {(13<<2)|2,{114,81,0}}, +/* 45926 */ {(13<<2)|2,{114,81,0}}, +/* 45927 */ {(13<<2)|2,{114,81,0}}, +/* 45928 */ {(13<<2)|2,{114,82,0}}, +/* 45929 */ {(13<<2)|2,{114,82,0}}, +/* 45930 */ {(13<<2)|2,{114,82,0}}, +/* 45931 */ {(13<<2)|2,{114,82,0}}, +/* 45932 */ {(13<<2)|2,{114,82,0}}, +/* 45933 */ {(13<<2)|2,{114,82,0}}, +/* 45934 */ {(13<<2)|2,{114,82,0}}, +/* 45935 */ {(13<<2)|2,{114,82,0}}, +/* 45936 */ {(13<<2)|2,{114,83,0}}, +/* 45937 */ {(13<<2)|2,{114,83,0}}, +/* 45938 */ {(13<<2)|2,{114,83,0}}, +/* 45939 */ {(13<<2)|2,{114,83,0}}, +/* 45940 */ {(13<<2)|2,{114,83,0}}, +/* 45941 */ {(13<<2)|2,{114,83,0}}, +/* 45942 */ {(13<<2)|2,{114,83,0}}, +/* 45943 */ {(13<<2)|2,{114,83,0}}, +/* 45944 */ {(13<<2)|2,{114,84,0}}, +/* 45945 */ {(13<<2)|2,{114,84,0}}, +/* 45946 */ {(13<<2)|2,{114,84,0}}, +/* 45947 */ {(13<<2)|2,{114,84,0}}, +/* 45948 */ {(13<<2)|2,{114,84,0}}, +/* 45949 */ {(13<<2)|2,{114,84,0}}, +/* 45950 */ {(13<<2)|2,{114,84,0}}, +/* 45951 */ {(13<<2)|2,{114,84,0}}, +/* 45952 */ {(13<<2)|2,{114,85,0}}, +/* 45953 */ {(13<<2)|2,{114,85,0}}, +/* 45954 */ {(13<<2)|2,{114,85,0}}, +/* 45955 */ {(13<<2)|2,{114,85,0}}, +/* 45956 */ {(13<<2)|2,{114,85,0}}, +/* 45957 */ {(13<<2)|2,{114,85,0}}, +/* 45958 */ {(13<<2)|2,{114,85,0}}, +/* 45959 */ {(13<<2)|2,{114,85,0}}, +/* 45960 */ {(13<<2)|2,{114,86,0}}, +/* 45961 */ {(13<<2)|2,{114,86,0}}, +/* 45962 */ {(13<<2)|2,{114,86,0}}, +/* 45963 */ {(13<<2)|2,{114,86,0}}, +/* 45964 */ {(13<<2)|2,{114,86,0}}, +/* 45965 */ {(13<<2)|2,{114,86,0}}, +/* 45966 */ {(13<<2)|2,{114,86,0}}, +/* 45967 */ {(13<<2)|2,{114,86,0}}, +/* 45968 */ {(13<<2)|2,{114,87,0}}, +/* 45969 */ {(13<<2)|2,{114,87,0}}, +/* 45970 */ {(13<<2)|2,{114,87,0}}, +/* 45971 */ {(13<<2)|2,{114,87,0}}, +/* 45972 */ {(13<<2)|2,{114,87,0}}, +/* 45973 */ {(13<<2)|2,{114,87,0}}, +/* 45974 */ {(13<<2)|2,{114,87,0}}, +/* 45975 */ {(13<<2)|2,{114,87,0}}, +/* 45976 */ {(13<<2)|2,{114,89,0}}, +/* 45977 */ {(13<<2)|2,{114,89,0}}, +/* 45978 */ {(13<<2)|2,{114,89,0}}, +/* 45979 */ {(13<<2)|2,{114,89,0}}, +/* 45980 */ {(13<<2)|2,{114,89,0}}, +/* 45981 */ {(13<<2)|2,{114,89,0}}, +/* 45982 */ {(13<<2)|2,{114,89,0}}, +/* 45983 */ {(13<<2)|2,{114,89,0}}, +/* 45984 */ {(13<<2)|2,{114,106,0}}, +/* 45985 */ {(13<<2)|2,{114,106,0}}, +/* 45986 */ {(13<<2)|2,{114,106,0}}, +/* 45987 */ {(13<<2)|2,{114,106,0}}, +/* 45988 */ {(13<<2)|2,{114,106,0}}, +/* 45989 */ {(13<<2)|2,{114,106,0}}, +/* 45990 */ {(13<<2)|2,{114,106,0}}, +/* 45991 */ {(13<<2)|2,{114,106,0}}, +/* 45992 */ {(13<<2)|2,{114,107,0}}, +/* 45993 */ {(13<<2)|2,{114,107,0}}, +/* 45994 */ {(13<<2)|2,{114,107,0}}, +/* 45995 */ {(13<<2)|2,{114,107,0}}, +/* 45996 */ {(13<<2)|2,{114,107,0}}, +/* 45997 */ {(13<<2)|2,{114,107,0}}, +/* 45998 */ {(13<<2)|2,{114,107,0}}, +/* 45999 */ {(13<<2)|2,{114,107,0}}, +/* 46000 */ {(13<<2)|2,{114,113,0}}, +/* 46001 */ {(13<<2)|2,{114,113,0}}, +/* 46002 */ {(13<<2)|2,{114,113,0}}, +/* 46003 */ {(13<<2)|2,{114,113,0}}, +/* 46004 */ {(13<<2)|2,{114,113,0}}, +/* 46005 */ {(13<<2)|2,{114,113,0}}, +/* 46006 */ {(13<<2)|2,{114,113,0}}, +/* 46007 */ {(13<<2)|2,{114,113,0}}, +/* 46008 */ {(13<<2)|2,{114,118,0}}, +/* 46009 */ {(13<<2)|2,{114,118,0}}, +/* 46010 */ {(13<<2)|2,{114,118,0}}, +/* 46011 */ {(13<<2)|2,{114,118,0}}, +/* 46012 */ {(13<<2)|2,{114,118,0}}, +/* 46013 */ {(13<<2)|2,{114,118,0}}, +/* 46014 */ {(13<<2)|2,{114,118,0}}, +/* 46015 */ {(13<<2)|2,{114,118,0}}, +/* 46016 */ {(13<<2)|2,{114,119,0}}, +/* 46017 */ {(13<<2)|2,{114,119,0}}, +/* 46018 */ {(13<<2)|2,{114,119,0}}, +/* 46019 */ {(13<<2)|2,{114,119,0}}, +/* 46020 */ {(13<<2)|2,{114,119,0}}, +/* 46021 */ {(13<<2)|2,{114,119,0}}, +/* 46022 */ {(13<<2)|2,{114,119,0}}, +/* 46023 */ {(13<<2)|2,{114,119,0}}, +/* 46024 */ {(13<<2)|2,{114,120,0}}, +/* 46025 */ {(13<<2)|2,{114,120,0}}, +/* 46026 */ {(13<<2)|2,{114,120,0}}, +/* 46027 */ {(13<<2)|2,{114,120,0}}, +/* 46028 */ {(13<<2)|2,{114,120,0}}, +/* 46029 */ {(13<<2)|2,{114,120,0}}, +/* 46030 */ {(13<<2)|2,{114,120,0}}, +/* 46031 */ {(13<<2)|2,{114,120,0}}, +/* 46032 */ {(13<<2)|2,{114,121,0}}, +/* 46033 */ {(13<<2)|2,{114,121,0}}, +/* 46034 */ {(13<<2)|2,{114,121,0}}, +/* 46035 */ {(13<<2)|2,{114,121,0}}, +/* 46036 */ {(13<<2)|2,{114,121,0}}, +/* 46037 */ {(13<<2)|2,{114,121,0}}, +/* 46038 */ {(13<<2)|2,{114,121,0}}, +/* 46039 */ {(13<<2)|2,{114,121,0}}, +/* 46040 */ {(13<<2)|2,{114,122,0}}, +/* 46041 */ {(13<<2)|2,{114,122,0}}, +/* 46042 */ {(13<<2)|2,{114,122,0}}, +/* 46043 */ {(13<<2)|2,{114,122,0}}, +/* 46044 */ {(13<<2)|2,{114,122,0}}, +/* 46045 */ {(13<<2)|2,{114,122,0}}, +/* 46046 */ {(13<<2)|2,{114,122,0}}, +/* 46047 */ {(13<<2)|2,{114,122,0}}, +/* 46048 */ {(14<<2)|2,{114,38,0}}, +/* 46049 */ {(14<<2)|2,{114,38,0}}, +/* 46050 */ {(14<<2)|2,{114,38,0}}, +/* 46051 */ {(14<<2)|2,{114,38,0}}, +/* 46052 */ {(14<<2)|2,{114,42,0}}, +/* 46053 */ {(14<<2)|2,{114,42,0}}, +/* 46054 */ {(14<<2)|2,{114,42,0}}, +/* 46055 */ {(14<<2)|2,{114,42,0}}, +/* 46056 */ {(14<<2)|2,{114,44,0}}, +/* 46057 */ {(14<<2)|2,{114,44,0}}, +/* 46058 */ {(14<<2)|2,{114,44,0}}, +/* 46059 */ {(14<<2)|2,{114,44,0}}, +/* 46060 */ {(14<<2)|2,{114,59,0}}, +/* 46061 */ {(14<<2)|2,{114,59,0}}, +/* 46062 */ {(14<<2)|2,{114,59,0}}, +/* 46063 */ {(14<<2)|2,{114,59,0}}, +/* 46064 */ {(14<<2)|2,{114,88,0}}, +/* 46065 */ {(14<<2)|2,{114,88,0}}, +/* 46066 */ {(14<<2)|2,{114,88,0}}, +/* 46067 */ {(14<<2)|2,{114,88,0}}, +/* 46068 */ {(14<<2)|2,{114,90,0}}, +/* 46069 */ {(14<<2)|2,{114,90,0}}, +/* 46070 */ {(14<<2)|2,{114,90,0}}, +/* 46071 */ {(14<<2)|2,{114,90,0}}, +/* 46072 */ {(16<<2)|2,{114,33,0}}, +/* 46073 */ {(16<<2)|2,{114,34,0}}, +/* 46074 */ {(16<<2)|2,{114,40,0}}, +/* 46075 */ {(16<<2)|2,{114,41,0}}, +/* 46076 */ {(16<<2)|2,{114,63,0}}, +/* 46077 */ {(6<<2)|1,{114,0,0}}, +/* 46078 */ {(6<<2)|1,{114,0,0}}, +/* 46079 */ {(6<<2)|1,{114,0,0}}, +/* 46080 */ {(16<<2)|3,{117,48,48}}, +/* 46081 */ {(16<<2)|3,{117,48,49}}, +/* 46082 */ {(16<<2)|3,{117,48,50}}, +/* 46083 */ {(16<<2)|3,{117,48,97}}, +/* 46084 */ {(16<<2)|3,{117,48,99}}, +/* 46085 */ {(16<<2)|3,{117,48,101}}, +/* 46086 */ {(16<<2)|3,{117,48,105}}, +/* 46087 */ {(16<<2)|3,{117,48,111}}, +/* 46088 */ {(16<<2)|3,{117,48,115}}, +/* 46089 */ {(16<<2)|3,{117,48,116}}, +/* 46090 */ {(11<<2)|2,{117,48,0}}, +/* 46091 */ {(11<<2)|2,{117,48,0}}, +/* 46092 */ {(11<<2)|2,{117,48,0}}, +/* 46093 */ {(11<<2)|2,{117,48,0}}, +/* 46094 */ {(11<<2)|2,{117,48,0}}, +/* 46095 */ {(11<<2)|2,{117,48,0}}, +/* 46096 */ {(11<<2)|2,{117,48,0}}, +/* 46097 */ {(11<<2)|2,{117,48,0}}, +/* 46098 */ {(11<<2)|2,{117,48,0}}, +/* 46099 */ {(11<<2)|2,{117,48,0}}, +/* 46100 */ {(11<<2)|2,{117,48,0}}, +/* 46101 */ {(11<<2)|2,{117,48,0}}, +/* 46102 */ {(11<<2)|2,{117,48,0}}, +/* 46103 */ {(11<<2)|2,{117,48,0}}, +/* 46104 */ {(11<<2)|2,{117,48,0}}, +/* 46105 */ {(11<<2)|2,{117,48,0}}, +/* 46106 */ {(11<<2)|2,{117,48,0}}, +/* 46107 */ {(11<<2)|2,{117,48,0}}, +/* 46108 */ {(11<<2)|2,{117,48,0}}, +/* 46109 */ {(11<<2)|2,{117,48,0}}, +/* 46110 */ {(11<<2)|2,{117,48,0}}, +/* 46111 */ {(11<<2)|2,{117,48,0}}, +/* 46112 */ {(16<<2)|3,{117,49,48}}, +/* 46113 */ {(16<<2)|3,{117,49,49}}, +/* 46114 */ {(16<<2)|3,{117,49,50}}, +/* 46115 */ {(16<<2)|3,{117,49,97}}, +/* 46116 */ {(16<<2)|3,{117,49,99}}, +/* 46117 */ {(16<<2)|3,{117,49,101}}, +/* 46118 */ {(16<<2)|3,{117,49,105}}, +/* 46119 */ {(16<<2)|3,{117,49,111}}, +/* 46120 */ {(16<<2)|3,{117,49,115}}, +/* 46121 */ {(16<<2)|3,{117,49,116}}, +/* 46122 */ {(11<<2)|2,{117,49,0}}, +/* 46123 */ {(11<<2)|2,{117,49,0}}, +/* 46124 */ {(11<<2)|2,{117,49,0}}, +/* 46125 */ {(11<<2)|2,{117,49,0}}, +/* 46126 */ {(11<<2)|2,{117,49,0}}, +/* 46127 */ {(11<<2)|2,{117,49,0}}, +/* 46128 */ {(11<<2)|2,{117,49,0}}, +/* 46129 */ {(11<<2)|2,{117,49,0}}, +/* 46130 */ {(11<<2)|2,{117,49,0}}, +/* 46131 */ {(11<<2)|2,{117,49,0}}, +/* 46132 */ {(11<<2)|2,{117,49,0}}, +/* 46133 */ {(11<<2)|2,{117,49,0}}, +/* 46134 */ {(11<<2)|2,{117,49,0}}, +/* 46135 */ {(11<<2)|2,{117,49,0}}, +/* 46136 */ {(11<<2)|2,{117,49,0}}, +/* 46137 */ {(11<<2)|2,{117,49,0}}, +/* 46138 */ {(11<<2)|2,{117,49,0}}, +/* 46139 */ {(11<<2)|2,{117,49,0}}, +/* 46140 */ {(11<<2)|2,{117,49,0}}, +/* 46141 */ {(11<<2)|2,{117,49,0}}, +/* 46142 */ {(11<<2)|2,{117,49,0}}, +/* 46143 */ {(11<<2)|2,{117,49,0}}, +/* 46144 */ {(16<<2)|3,{117,50,48}}, +/* 46145 */ {(16<<2)|3,{117,50,49}}, +/* 46146 */ {(16<<2)|3,{117,50,50}}, +/* 46147 */ {(16<<2)|3,{117,50,97}}, +/* 46148 */ {(16<<2)|3,{117,50,99}}, +/* 46149 */ {(16<<2)|3,{117,50,101}}, +/* 46150 */ {(16<<2)|3,{117,50,105}}, +/* 46151 */ {(16<<2)|3,{117,50,111}}, +/* 46152 */ {(16<<2)|3,{117,50,115}}, +/* 46153 */ {(16<<2)|3,{117,50,116}}, +/* 46154 */ {(11<<2)|2,{117,50,0}}, +/* 46155 */ {(11<<2)|2,{117,50,0}}, +/* 46156 */ {(11<<2)|2,{117,50,0}}, +/* 46157 */ {(11<<2)|2,{117,50,0}}, +/* 46158 */ {(11<<2)|2,{117,50,0}}, +/* 46159 */ {(11<<2)|2,{117,50,0}}, +/* 46160 */ {(11<<2)|2,{117,50,0}}, +/* 46161 */ {(11<<2)|2,{117,50,0}}, +/* 46162 */ {(11<<2)|2,{117,50,0}}, +/* 46163 */ {(11<<2)|2,{117,50,0}}, +/* 46164 */ {(11<<2)|2,{117,50,0}}, +/* 46165 */ {(11<<2)|2,{117,50,0}}, +/* 46166 */ {(11<<2)|2,{117,50,0}}, +/* 46167 */ {(11<<2)|2,{117,50,0}}, +/* 46168 */ {(11<<2)|2,{117,50,0}}, +/* 46169 */ {(11<<2)|2,{117,50,0}}, +/* 46170 */ {(11<<2)|2,{117,50,0}}, +/* 46171 */ {(11<<2)|2,{117,50,0}}, +/* 46172 */ {(11<<2)|2,{117,50,0}}, +/* 46173 */ {(11<<2)|2,{117,50,0}}, +/* 46174 */ {(11<<2)|2,{117,50,0}}, +/* 46175 */ {(11<<2)|2,{117,50,0}}, +/* 46176 */ {(16<<2)|3,{117,97,48}}, +/* 46177 */ {(16<<2)|3,{117,97,49}}, +/* 46178 */ {(16<<2)|3,{117,97,50}}, +/* 46179 */ {(16<<2)|3,{117,97,97}}, +/* 46180 */ {(16<<2)|3,{117,97,99}}, +/* 46181 */ {(16<<2)|3,{117,97,101}}, +/* 46182 */ {(16<<2)|3,{117,97,105}}, +/* 46183 */ {(16<<2)|3,{117,97,111}}, +/* 46184 */ {(16<<2)|3,{117,97,115}}, +/* 46185 */ {(16<<2)|3,{117,97,116}}, +/* 46186 */ {(11<<2)|2,{117,97,0}}, +/* 46187 */ {(11<<2)|2,{117,97,0}}, +/* 46188 */ {(11<<2)|2,{117,97,0}}, +/* 46189 */ {(11<<2)|2,{117,97,0}}, +/* 46190 */ {(11<<2)|2,{117,97,0}}, +/* 46191 */ {(11<<2)|2,{117,97,0}}, +/* 46192 */ {(11<<2)|2,{117,97,0}}, +/* 46193 */ {(11<<2)|2,{117,97,0}}, +/* 46194 */ {(11<<2)|2,{117,97,0}}, +/* 46195 */ {(11<<2)|2,{117,97,0}}, +/* 46196 */ {(11<<2)|2,{117,97,0}}, +/* 46197 */ {(11<<2)|2,{117,97,0}}, +/* 46198 */ {(11<<2)|2,{117,97,0}}, +/* 46199 */ {(11<<2)|2,{117,97,0}}, +/* 46200 */ {(11<<2)|2,{117,97,0}}, +/* 46201 */ {(11<<2)|2,{117,97,0}}, +/* 46202 */ {(11<<2)|2,{117,97,0}}, +/* 46203 */ {(11<<2)|2,{117,97,0}}, +/* 46204 */ {(11<<2)|2,{117,97,0}}, +/* 46205 */ {(11<<2)|2,{117,97,0}}, +/* 46206 */ {(11<<2)|2,{117,97,0}}, +/* 46207 */ {(11<<2)|2,{117,97,0}}, +/* 46208 */ {(16<<2)|3,{117,99,48}}, +/* 46209 */ {(16<<2)|3,{117,99,49}}, +/* 46210 */ {(16<<2)|3,{117,99,50}}, +/* 46211 */ {(16<<2)|3,{117,99,97}}, +/* 46212 */ {(16<<2)|3,{117,99,99}}, +/* 46213 */ {(16<<2)|3,{117,99,101}}, +/* 46214 */ {(16<<2)|3,{117,99,105}}, +/* 46215 */ {(16<<2)|3,{117,99,111}}, +/* 46216 */ {(16<<2)|3,{117,99,115}}, +/* 46217 */ {(16<<2)|3,{117,99,116}}, +/* 46218 */ {(11<<2)|2,{117,99,0}}, +/* 46219 */ {(11<<2)|2,{117,99,0}}, +/* 46220 */ {(11<<2)|2,{117,99,0}}, +/* 46221 */ {(11<<2)|2,{117,99,0}}, +/* 46222 */ {(11<<2)|2,{117,99,0}}, +/* 46223 */ {(11<<2)|2,{117,99,0}}, +/* 46224 */ {(11<<2)|2,{117,99,0}}, +/* 46225 */ {(11<<2)|2,{117,99,0}}, +/* 46226 */ {(11<<2)|2,{117,99,0}}, +/* 46227 */ {(11<<2)|2,{117,99,0}}, +/* 46228 */ {(11<<2)|2,{117,99,0}}, +/* 46229 */ {(11<<2)|2,{117,99,0}}, +/* 46230 */ {(11<<2)|2,{117,99,0}}, +/* 46231 */ {(11<<2)|2,{117,99,0}}, +/* 46232 */ {(11<<2)|2,{117,99,0}}, +/* 46233 */ {(11<<2)|2,{117,99,0}}, +/* 46234 */ {(11<<2)|2,{117,99,0}}, +/* 46235 */ {(11<<2)|2,{117,99,0}}, +/* 46236 */ {(11<<2)|2,{117,99,0}}, +/* 46237 */ {(11<<2)|2,{117,99,0}}, +/* 46238 */ {(11<<2)|2,{117,99,0}}, +/* 46239 */ {(11<<2)|2,{117,99,0}}, +/* 46240 */ {(16<<2)|3,{117,101,48}}, +/* 46241 */ {(16<<2)|3,{117,101,49}}, +/* 46242 */ {(16<<2)|3,{117,101,50}}, +/* 46243 */ {(16<<2)|3,{117,101,97}}, +/* 46244 */ {(16<<2)|3,{117,101,99}}, +/* 46245 */ {(16<<2)|3,{117,101,101}}, +/* 46246 */ {(16<<2)|3,{117,101,105}}, +/* 46247 */ {(16<<2)|3,{117,101,111}}, +/* 46248 */ {(16<<2)|3,{117,101,115}}, +/* 46249 */ {(16<<2)|3,{117,101,116}}, +/* 46250 */ {(11<<2)|2,{117,101,0}}, +/* 46251 */ {(11<<2)|2,{117,101,0}}, +/* 46252 */ {(11<<2)|2,{117,101,0}}, +/* 46253 */ {(11<<2)|2,{117,101,0}}, +/* 46254 */ {(11<<2)|2,{117,101,0}}, +/* 46255 */ {(11<<2)|2,{117,101,0}}, +/* 46256 */ {(11<<2)|2,{117,101,0}}, +/* 46257 */ {(11<<2)|2,{117,101,0}}, +/* 46258 */ {(11<<2)|2,{117,101,0}}, +/* 46259 */ {(11<<2)|2,{117,101,0}}, +/* 46260 */ {(11<<2)|2,{117,101,0}}, +/* 46261 */ {(11<<2)|2,{117,101,0}}, +/* 46262 */ {(11<<2)|2,{117,101,0}}, +/* 46263 */ {(11<<2)|2,{117,101,0}}, +/* 46264 */ {(11<<2)|2,{117,101,0}}, +/* 46265 */ {(11<<2)|2,{117,101,0}}, +/* 46266 */ {(11<<2)|2,{117,101,0}}, +/* 46267 */ {(11<<2)|2,{117,101,0}}, +/* 46268 */ {(11<<2)|2,{117,101,0}}, +/* 46269 */ {(11<<2)|2,{117,101,0}}, +/* 46270 */ {(11<<2)|2,{117,101,0}}, +/* 46271 */ {(11<<2)|2,{117,101,0}}, +/* 46272 */ {(16<<2)|3,{117,105,48}}, +/* 46273 */ {(16<<2)|3,{117,105,49}}, +/* 46274 */ {(16<<2)|3,{117,105,50}}, +/* 46275 */ {(16<<2)|3,{117,105,97}}, +/* 46276 */ {(16<<2)|3,{117,105,99}}, +/* 46277 */ {(16<<2)|3,{117,105,101}}, +/* 46278 */ {(16<<2)|3,{117,105,105}}, +/* 46279 */ {(16<<2)|3,{117,105,111}}, +/* 46280 */ {(16<<2)|3,{117,105,115}}, +/* 46281 */ {(16<<2)|3,{117,105,116}}, +/* 46282 */ {(11<<2)|2,{117,105,0}}, +/* 46283 */ {(11<<2)|2,{117,105,0}}, +/* 46284 */ {(11<<2)|2,{117,105,0}}, +/* 46285 */ {(11<<2)|2,{117,105,0}}, +/* 46286 */ {(11<<2)|2,{117,105,0}}, +/* 46287 */ {(11<<2)|2,{117,105,0}}, +/* 46288 */ {(11<<2)|2,{117,105,0}}, +/* 46289 */ {(11<<2)|2,{117,105,0}}, +/* 46290 */ {(11<<2)|2,{117,105,0}}, +/* 46291 */ {(11<<2)|2,{117,105,0}}, +/* 46292 */ {(11<<2)|2,{117,105,0}}, +/* 46293 */ {(11<<2)|2,{117,105,0}}, +/* 46294 */ {(11<<2)|2,{117,105,0}}, +/* 46295 */ {(11<<2)|2,{117,105,0}}, +/* 46296 */ {(11<<2)|2,{117,105,0}}, +/* 46297 */ {(11<<2)|2,{117,105,0}}, +/* 46298 */ {(11<<2)|2,{117,105,0}}, +/* 46299 */ {(11<<2)|2,{117,105,0}}, +/* 46300 */ {(11<<2)|2,{117,105,0}}, +/* 46301 */ {(11<<2)|2,{117,105,0}}, +/* 46302 */ {(11<<2)|2,{117,105,0}}, +/* 46303 */ {(11<<2)|2,{117,105,0}}, +/* 46304 */ {(16<<2)|3,{117,111,48}}, +/* 46305 */ {(16<<2)|3,{117,111,49}}, +/* 46306 */ {(16<<2)|3,{117,111,50}}, +/* 46307 */ {(16<<2)|3,{117,111,97}}, +/* 46308 */ {(16<<2)|3,{117,111,99}}, +/* 46309 */ {(16<<2)|3,{117,111,101}}, +/* 46310 */ {(16<<2)|3,{117,111,105}}, +/* 46311 */ {(16<<2)|3,{117,111,111}}, +/* 46312 */ {(16<<2)|3,{117,111,115}}, +/* 46313 */ {(16<<2)|3,{117,111,116}}, +/* 46314 */ {(11<<2)|2,{117,111,0}}, +/* 46315 */ {(11<<2)|2,{117,111,0}}, +/* 46316 */ {(11<<2)|2,{117,111,0}}, +/* 46317 */ {(11<<2)|2,{117,111,0}}, +/* 46318 */ {(11<<2)|2,{117,111,0}}, +/* 46319 */ {(11<<2)|2,{117,111,0}}, +/* 46320 */ {(11<<2)|2,{117,111,0}}, +/* 46321 */ {(11<<2)|2,{117,111,0}}, +/* 46322 */ {(11<<2)|2,{117,111,0}}, +/* 46323 */ {(11<<2)|2,{117,111,0}}, +/* 46324 */ {(11<<2)|2,{117,111,0}}, +/* 46325 */ {(11<<2)|2,{117,111,0}}, +/* 46326 */ {(11<<2)|2,{117,111,0}}, +/* 46327 */ {(11<<2)|2,{117,111,0}}, +/* 46328 */ {(11<<2)|2,{117,111,0}}, +/* 46329 */ {(11<<2)|2,{117,111,0}}, +/* 46330 */ {(11<<2)|2,{117,111,0}}, +/* 46331 */ {(11<<2)|2,{117,111,0}}, +/* 46332 */ {(11<<2)|2,{117,111,0}}, +/* 46333 */ {(11<<2)|2,{117,111,0}}, +/* 46334 */ {(11<<2)|2,{117,111,0}}, +/* 46335 */ {(11<<2)|2,{117,111,0}}, +/* 46336 */ {(16<<2)|3,{117,115,48}}, +/* 46337 */ {(16<<2)|3,{117,115,49}}, +/* 46338 */ {(16<<2)|3,{117,115,50}}, +/* 46339 */ {(16<<2)|3,{117,115,97}}, +/* 46340 */ {(16<<2)|3,{117,115,99}}, +/* 46341 */ {(16<<2)|3,{117,115,101}}, +/* 46342 */ {(16<<2)|3,{117,115,105}}, +/* 46343 */ {(16<<2)|3,{117,115,111}}, +/* 46344 */ {(16<<2)|3,{117,115,115}}, +/* 46345 */ {(16<<2)|3,{117,115,116}}, +/* 46346 */ {(11<<2)|2,{117,115,0}}, +/* 46347 */ {(11<<2)|2,{117,115,0}}, +/* 46348 */ {(11<<2)|2,{117,115,0}}, +/* 46349 */ {(11<<2)|2,{117,115,0}}, +/* 46350 */ {(11<<2)|2,{117,115,0}}, +/* 46351 */ {(11<<2)|2,{117,115,0}}, +/* 46352 */ {(11<<2)|2,{117,115,0}}, +/* 46353 */ {(11<<2)|2,{117,115,0}}, +/* 46354 */ {(11<<2)|2,{117,115,0}}, +/* 46355 */ {(11<<2)|2,{117,115,0}}, +/* 46356 */ {(11<<2)|2,{117,115,0}}, +/* 46357 */ {(11<<2)|2,{117,115,0}}, +/* 46358 */ {(11<<2)|2,{117,115,0}}, +/* 46359 */ {(11<<2)|2,{117,115,0}}, +/* 46360 */ {(11<<2)|2,{117,115,0}}, +/* 46361 */ {(11<<2)|2,{117,115,0}}, +/* 46362 */ {(11<<2)|2,{117,115,0}}, +/* 46363 */ {(11<<2)|2,{117,115,0}}, +/* 46364 */ {(11<<2)|2,{117,115,0}}, +/* 46365 */ {(11<<2)|2,{117,115,0}}, +/* 46366 */ {(11<<2)|2,{117,115,0}}, +/* 46367 */ {(11<<2)|2,{117,115,0}}, +/* 46368 */ {(16<<2)|3,{117,116,48}}, +/* 46369 */ {(16<<2)|3,{117,116,49}}, +/* 46370 */ {(16<<2)|3,{117,116,50}}, +/* 46371 */ {(16<<2)|3,{117,116,97}}, +/* 46372 */ {(16<<2)|3,{117,116,99}}, +/* 46373 */ {(16<<2)|3,{117,116,101}}, +/* 46374 */ {(16<<2)|3,{117,116,105}}, +/* 46375 */ {(16<<2)|3,{117,116,111}}, +/* 46376 */ {(16<<2)|3,{117,116,115}}, +/* 46377 */ {(16<<2)|3,{117,116,116}}, +/* 46378 */ {(11<<2)|2,{117,116,0}}, +/* 46379 */ {(11<<2)|2,{117,116,0}}, +/* 46380 */ {(11<<2)|2,{117,116,0}}, +/* 46381 */ {(11<<2)|2,{117,116,0}}, +/* 46382 */ {(11<<2)|2,{117,116,0}}, +/* 46383 */ {(11<<2)|2,{117,116,0}}, +/* 46384 */ {(11<<2)|2,{117,116,0}}, +/* 46385 */ {(11<<2)|2,{117,116,0}}, +/* 46386 */ {(11<<2)|2,{117,116,0}}, +/* 46387 */ {(11<<2)|2,{117,116,0}}, +/* 46388 */ {(11<<2)|2,{117,116,0}}, +/* 46389 */ {(11<<2)|2,{117,116,0}}, +/* 46390 */ {(11<<2)|2,{117,116,0}}, +/* 46391 */ {(11<<2)|2,{117,116,0}}, +/* 46392 */ {(11<<2)|2,{117,116,0}}, +/* 46393 */ {(11<<2)|2,{117,116,0}}, +/* 46394 */ {(11<<2)|2,{117,116,0}}, +/* 46395 */ {(11<<2)|2,{117,116,0}}, +/* 46396 */ {(11<<2)|2,{117,116,0}}, +/* 46397 */ {(11<<2)|2,{117,116,0}}, +/* 46398 */ {(11<<2)|2,{117,116,0}}, +/* 46399 */ {(11<<2)|2,{117,116,0}}, +/* 46400 */ {(12<<2)|2,{117,32,0}}, +/* 46401 */ {(12<<2)|2,{117,32,0}}, +/* 46402 */ {(12<<2)|2,{117,32,0}}, +/* 46403 */ {(12<<2)|2,{117,32,0}}, +/* 46404 */ {(12<<2)|2,{117,32,0}}, +/* 46405 */ {(12<<2)|2,{117,32,0}}, +/* 46406 */ {(12<<2)|2,{117,32,0}}, +/* 46407 */ {(12<<2)|2,{117,32,0}}, +/* 46408 */ {(12<<2)|2,{117,32,0}}, +/* 46409 */ {(12<<2)|2,{117,32,0}}, +/* 46410 */ {(12<<2)|2,{117,32,0}}, +/* 46411 */ {(12<<2)|2,{117,32,0}}, +/* 46412 */ {(12<<2)|2,{117,32,0}}, +/* 46413 */ {(12<<2)|2,{117,32,0}}, +/* 46414 */ {(12<<2)|2,{117,32,0}}, +/* 46415 */ {(12<<2)|2,{117,32,0}}, +/* 46416 */ {(12<<2)|2,{117,37,0}}, +/* 46417 */ {(12<<2)|2,{117,37,0}}, +/* 46418 */ {(12<<2)|2,{117,37,0}}, +/* 46419 */ {(12<<2)|2,{117,37,0}}, +/* 46420 */ {(12<<2)|2,{117,37,0}}, +/* 46421 */ {(12<<2)|2,{117,37,0}}, +/* 46422 */ {(12<<2)|2,{117,37,0}}, +/* 46423 */ {(12<<2)|2,{117,37,0}}, +/* 46424 */ {(12<<2)|2,{117,37,0}}, +/* 46425 */ {(12<<2)|2,{117,37,0}}, +/* 46426 */ {(12<<2)|2,{117,37,0}}, +/* 46427 */ {(12<<2)|2,{117,37,0}}, +/* 46428 */ {(12<<2)|2,{117,37,0}}, +/* 46429 */ {(12<<2)|2,{117,37,0}}, +/* 46430 */ {(12<<2)|2,{117,37,0}}, +/* 46431 */ {(12<<2)|2,{117,37,0}}, +/* 46432 */ {(12<<2)|2,{117,45,0}}, +/* 46433 */ {(12<<2)|2,{117,45,0}}, +/* 46434 */ {(12<<2)|2,{117,45,0}}, +/* 46435 */ {(12<<2)|2,{117,45,0}}, +/* 46436 */ {(12<<2)|2,{117,45,0}}, +/* 46437 */ {(12<<2)|2,{117,45,0}}, +/* 46438 */ {(12<<2)|2,{117,45,0}}, +/* 46439 */ {(12<<2)|2,{117,45,0}}, +/* 46440 */ {(12<<2)|2,{117,45,0}}, +/* 46441 */ {(12<<2)|2,{117,45,0}}, +/* 46442 */ {(12<<2)|2,{117,45,0}}, +/* 46443 */ {(12<<2)|2,{117,45,0}}, +/* 46444 */ {(12<<2)|2,{117,45,0}}, +/* 46445 */ {(12<<2)|2,{117,45,0}}, +/* 46446 */ {(12<<2)|2,{117,45,0}}, +/* 46447 */ {(12<<2)|2,{117,45,0}}, +/* 46448 */ {(12<<2)|2,{117,46,0}}, +/* 46449 */ {(12<<2)|2,{117,46,0}}, +/* 46450 */ {(12<<2)|2,{117,46,0}}, +/* 46451 */ {(12<<2)|2,{117,46,0}}, +/* 46452 */ {(12<<2)|2,{117,46,0}}, +/* 46453 */ {(12<<2)|2,{117,46,0}}, +/* 46454 */ {(12<<2)|2,{117,46,0}}, +/* 46455 */ {(12<<2)|2,{117,46,0}}, +/* 46456 */ {(12<<2)|2,{117,46,0}}, +/* 46457 */ {(12<<2)|2,{117,46,0}}, +/* 46458 */ {(12<<2)|2,{117,46,0}}, +/* 46459 */ {(12<<2)|2,{117,46,0}}, +/* 46460 */ {(12<<2)|2,{117,46,0}}, +/* 46461 */ {(12<<2)|2,{117,46,0}}, +/* 46462 */ {(12<<2)|2,{117,46,0}}, +/* 46463 */ {(12<<2)|2,{117,46,0}}, +/* 46464 */ {(12<<2)|2,{117,47,0}}, +/* 46465 */ {(12<<2)|2,{117,47,0}}, +/* 46466 */ {(12<<2)|2,{117,47,0}}, +/* 46467 */ {(12<<2)|2,{117,47,0}}, +/* 46468 */ {(12<<2)|2,{117,47,0}}, +/* 46469 */ {(12<<2)|2,{117,47,0}}, +/* 46470 */ {(12<<2)|2,{117,47,0}}, +/* 46471 */ {(12<<2)|2,{117,47,0}}, +/* 46472 */ {(12<<2)|2,{117,47,0}}, +/* 46473 */ {(12<<2)|2,{117,47,0}}, +/* 46474 */ {(12<<2)|2,{117,47,0}}, +/* 46475 */ {(12<<2)|2,{117,47,0}}, +/* 46476 */ {(12<<2)|2,{117,47,0}}, +/* 46477 */ {(12<<2)|2,{117,47,0}}, +/* 46478 */ {(12<<2)|2,{117,47,0}}, +/* 46479 */ {(12<<2)|2,{117,47,0}}, +/* 46480 */ {(12<<2)|2,{117,51,0}}, +/* 46481 */ {(12<<2)|2,{117,51,0}}, +/* 46482 */ {(12<<2)|2,{117,51,0}}, +/* 46483 */ {(12<<2)|2,{117,51,0}}, +/* 46484 */ {(12<<2)|2,{117,51,0}}, +/* 46485 */ {(12<<2)|2,{117,51,0}}, +/* 46486 */ {(12<<2)|2,{117,51,0}}, +/* 46487 */ {(12<<2)|2,{117,51,0}}, +/* 46488 */ {(12<<2)|2,{117,51,0}}, +/* 46489 */ {(12<<2)|2,{117,51,0}}, +/* 46490 */ {(12<<2)|2,{117,51,0}}, +/* 46491 */ {(12<<2)|2,{117,51,0}}, +/* 46492 */ {(12<<2)|2,{117,51,0}}, +/* 46493 */ {(12<<2)|2,{117,51,0}}, +/* 46494 */ {(12<<2)|2,{117,51,0}}, +/* 46495 */ {(12<<2)|2,{117,51,0}}, +/* 46496 */ {(12<<2)|2,{117,52,0}}, +/* 46497 */ {(12<<2)|2,{117,52,0}}, +/* 46498 */ {(12<<2)|2,{117,52,0}}, +/* 46499 */ {(12<<2)|2,{117,52,0}}, +/* 46500 */ {(12<<2)|2,{117,52,0}}, +/* 46501 */ {(12<<2)|2,{117,52,0}}, +/* 46502 */ {(12<<2)|2,{117,52,0}}, +/* 46503 */ {(12<<2)|2,{117,52,0}}, +/* 46504 */ {(12<<2)|2,{117,52,0}}, +/* 46505 */ {(12<<2)|2,{117,52,0}}, +/* 46506 */ {(12<<2)|2,{117,52,0}}, +/* 46507 */ {(12<<2)|2,{117,52,0}}, +/* 46508 */ {(12<<2)|2,{117,52,0}}, +/* 46509 */ {(12<<2)|2,{117,52,0}}, +/* 46510 */ {(12<<2)|2,{117,52,0}}, +/* 46511 */ {(12<<2)|2,{117,52,0}}, +/* 46512 */ {(12<<2)|2,{117,53,0}}, +/* 46513 */ {(12<<2)|2,{117,53,0}}, +/* 46514 */ {(12<<2)|2,{117,53,0}}, +/* 46515 */ {(12<<2)|2,{117,53,0}}, +/* 46516 */ {(12<<2)|2,{117,53,0}}, +/* 46517 */ {(12<<2)|2,{117,53,0}}, +/* 46518 */ {(12<<2)|2,{117,53,0}}, +/* 46519 */ {(12<<2)|2,{117,53,0}}, +/* 46520 */ {(12<<2)|2,{117,53,0}}, +/* 46521 */ {(12<<2)|2,{117,53,0}}, +/* 46522 */ {(12<<2)|2,{117,53,0}}, +/* 46523 */ {(12<<2)|2,{117,53,0}}, +/* 46524 */ {(12<<2)|2,{117,53,0}}, +/* 46525 */ {(12<<2)|2,{117,53,0}}, +/* 46526 */ {(12<<2)|2,{117,53,0}}, +/* 46527 */ {(12<<2)|2,{117,53,0}}, +/* 46528 */ {(12<<2)|2,{117,54,0}}, +/* 46529 */ {(12<<2)|2,{117,54,0}}, +/* 46530 */ {(12<<2)|2,{117,54,0}}, +/* 46531 */ {(12<<2)|2,{117,54,0}}, +/* 46532 */ {(12<<2)|2,{117,54,0}}, +/* 46533 */ {(12<<2)|2,{117,54,0}}, +/* 46534 */ {(12<<2)|2,{117,54,0}}, +/* 46535 */ {(12<<2)|2,{117,54,0}}, +/* 46536 */ {(12<<2)|2,{117,54,0}}, +/* 46537 */ {(12<<2)|2,{117,54,0}}, +/* 46538 */ {(12<<2)|2,{117,54,0}}, +/* 46539 */ {(12<<2)|2,{117,54,0}}, +/* 46540 */ {(12<<2)|2,{117,54,0}}, +/* 46541 */ {(12<<2)|2,{117,54,0}}, +/* 46542 */ {(12<<2)|2,{117,54,0}}, +/* 46543 */ {(12<<2)|2,{117,54,0}}, +/* 46544 */ {(12<<2)|2,{117,55,0}}, +/* 46545 */ {(12<<2)|2,{117,55,0}}, +/* 46546 */ {(12<<2)|2,{117,55,0}}, +/* 46547 */ {(12<<2)|2,{117,55,0}}, +/* 46548 */ {(12<<2)|2,{117,55,0}}, +/* 46549 */ {(12<<2)|2,{117,55,0}}, +/* 46550 */ {(12<<2)|2,{117,55,0}}, +/* 46551 */ {(12<<2)|2,{117,55,0}}, +/* 46552 */ {(12<<2)|2,{117,55,0}}, +/* 46553 */ {(12<<2)|2,{117,55,0}}, +/* 46554 */ {(12<<2)|2,{117,55,0}}, +/* 46555 */ {(12<<2)|2,{117,55,0}}, +/* 46556 */ {(12<<2)|2,{117,55,0}}, +/* 46557 */ {(12<<2)|2,{117,55,0}}, +/* 46558 */ {(12<<2)|2,{117,55,0}}, +/* 46559 */ {(12<<2)|2,{117,55,0}}, +/* 46560 */ {(12<<2)|2,{117,56,0}}, +/* 46561 */ {(12<<2)|2,{117,56,0}}, +/* 46562 */ {(12<<2)|2,{117,56,0}}, +/* 46563 */ {(12<<2)|2,{117,56,0}}, +/* 46564 */ {(12<<2)|2,{117,56,0}}, +/* 46565 */ {(12<<2)|2,{117,56,0}}, +/* 46566 */ {(12<<2)|2,{117,56,0}}, +/* 46567 */ {(12<<2)|2,{117,56,0}}, +/* 46568 */ {(12<<2)|2,{117,56,0}}, +/* 46569 */ {(12<<2)|2,{117,56,0}}, +/* 46570 */ {(12<<2)|2,{117,56,0}}, +/* 46571 */ {(12<<2)|2,{117,56,0}}, +/* 46572 */ {(12<<2)|2,{117,56,0}}, +/* 46573 */ {(12<<2)|2,{117,56,0}}, +/* 46574 */ {(12<<2)|2,{117,56,0}}, +/* 46575 */ {(12<<2)|2,{117,56,0}}, +/* 46576 */ {(12<<2)|2,{117,57,0}}, +/* 46577 */ {(12<<2)|2,{117,57,0}}, +/* 46578 */ {(12<<2)|2,{117,57,0}}, +/* 46579 */ {(12<<2)|2,{117,57,0}}, +/* 46580 */ {(12<<2)|2,{117,57,0}}, +/* 46581 */ {(12<<2)|2,{117,57,0}}, +/* 46582 */ {(12<<2)|2,{117,57,0}}, +/* 46583 */ {(12<<2)|2,{117,57,0}}, +/* 46584 */ {(12<<2)|2,{117,57,0}}, +/* 46585 */ {(12<<2)|2,{117,57,0}}, +/* 46586 */ {(12<<2)|2,{117,57,0}}, +/* 46587 */ {(12<<2)|2,{117,57,0}}, +/* 46588 */ {(12<<2)|2,{117,57,0}}, +/* 46589 */ {(12<<2)|2,{117,57,0}}, +/* 46590 */ {(12<<2)|2,{117,57,0}}, +/* 46591 */ {(12<<2)|2,{117,57,0}}, +/* 46592 */ {(12<<2)|2,{117,61,0}}, +/* 46593 */ {(12<<2)|2,{117,61,0}}, +/* 46594 */ {(12<<2)|2,{117,61,0}}, +/* 46595 */ {(12<<2)|2,{117,61,0}}, +/* 46596 */ {(12<<2)|2,{117,61,0}}, +/* 46597 */ {(12<<2)|2,{117,61,0}}, +/* 46598 */ {(12<<2)|2,{117,61,0}}, +/* 46599 */ {(12<<2)|2,{117,61,0}}, +/* 46600 */ {(12<<2)|2,{117,61,0}}, +/* 46601 */ {(12<<2)|2,{117,61,0}}, +/* 46602 */ {(12<<2)|2,{117,61,0}}, +/* 46603 */ {(12<<2)|2,{117,61,0}}, +/* 46604 */ {(12<<2)|2,{117,61,0}}, +/* 46605 */ {(12<<2)|2,{117,61,0}}, +/* 46606 */ {(12<<2)|2,{117,61,0}}, +/* 46607 */ {(12<<2)|2,{117,61,0}}, +/* 46608 */ {(12<<2)|2,{117,65,0}}, +/* 46609 */ {(12<<2)|2,{117,65,0}}, +/* 46610 */ {(12<<2)|2,{117,65,0}}, +/* 46611 */ {(12<<2)|2,{117,65,0}}, +/* 46612 */ {(12<<2)|2,{117,65,0}}, +/* 46613 */ {(12<<2)|2,{117,65,0}}, +/* 46614 */ {(12<<2)|2,{117,65,0}}, +/* 46615 */ {(12<<2)|2,{117,65,0}}, +/* 46616 */ {(12<<2)|2,{117,65,0}}, +/* 46617 */ {(12<<2)|2,{117,65,0}}, +/* 46618 */ {(12<<2)|2,{117,65,0}}, +/* 46619 */ {(12<<2)|2,{117,65,0}}, +/* 46620 */ {(12<<2)|2,{117,65,0}}, +/* 46621 */ {(12<<2)|2,{117,65,0}}, +/* 46622 */ {(12<<2)|2,{117,65,0}}, +/* 46623 */ {(12<<2)|2,{117,65,0}}, +/* 46624 */ {(12<<2)|2,{117,95,0}}, +/* 46625 */ {(12<<2)|2,{117,95,0}}, +/* 46626 */ {(12<<2)|2,{117,95,0}}, +/* 46627 */ {(12<<2)|2,{117,95,0}}, +/* 46628 */ {(12<<2)|2,{117,95,0}}, +/* 46629 */ {(12<<2)|2,{117,95,0}}, +/* 46630 */ {(12<<2)|2,{117,95,0}}, +/* 46631 */ {(12<<2)|2,{117,95,0}}, +/* 46632 */ {(12<<2)|2,{117,95,0}}, +/* 46633 */ {(12<<2)|2,{117,95,0}}, +/* 46634 */ {(12<<2)|2,{117,95,0}}, +/* 46635 */ {(12<<2)|2,{117,95,0}}, +/* 46636 */ {(12<<2)|2,{117,95,0}}, +/* 46637 */ {(12<<2)|2,{117,95,0}}, +/* 46638 */ {(12<<2)|2,{117,95,0}}, +/* 46639 */ {(12<<2)|2,{117,95,0}}, +/* 46640 */ {(12<<2)|2,{117,98,0}}, +/* 46641 */ {(12<<2)|2,{117,98,0}}, +/* 46642 */ {(12<<2)|2,{117,98,0}}, +/* 46643 */ {(12<<2)|2,{117,98,0}}, +/* 46644 */ {(12<<2)|2,{117,98,0}}, +/* 46645 */ {(12<<2)|2,{117,98,0}}, +/* 46646 */ {(12<<2)|2,{117,98,0}}, +/* 46647 */ {(12<<2)|2,{117,98,0}}, +/* 46648 */ {(12<<2)|2,{117,98,0}}, +/* 46649 */ {(12<<2)|2,{117,98,0}}, +/* 46650 */ {(12<<2)|2,{117,98,0}}, +/* 46651 */ {(12<<2)|2,{117,98,0}}, +/* 46652 */ {(12<<2)|2,{117,98,0}}, +/* 46653 */ {(12<<2)|2,{117,98,0}}, +/* 46654 */ {(12<<2)|2,{117,98,0}}, +/* 46655 */ {(12<<2)|2,{117,98,0}}, +/* 46656 */ {(12<<2)|2,{117,100,0}}, +/* 46657 */ {(12<<2)|2,{117,100,0}}, +/* 46658 */ {(12<<2)|2,{117,100,0}}, +/* 46659 */ {(12<<2)|2,{117,100,0}}, +/* 46660 */ {(12<<2)|2,{117,100,0}}, +/* 46661 */ {(12<<2)|2,{117,100,0}}, +/* 46662 */ {(12<<2)|2,{117,100,0}}, +/* 46663 */ {(12<<2)|2,{117,100,0}}, +/* 46664 */ {(12<<2)|2,{117,100,0}}, +/* 46665 */ {(12<<2)|2,{117,100,0}}, +/* 46666 */ {(12<<2)|2,{117,100,0}}, +/* 46667 */ {(12<<2)|2,{117,100,0}}, +/* 46668 */ {(12<<2)|2,{117,100,0}}, +/* 46669 */ {(12<<2)|2,{117,100,0}}, +/* 46670 */ {(12<<2)|2,{117,100,0}}, +/* 46671 */ {(12<<2)|2,{117,100,0}}, +/* 46672 */ {(12<<2)|2,{117,102,0}}, +/* 46673 */ {(12<<2)|2,{117,102,0}}, +/* 46674 */ {(12<<2)|2,{117,102,0}}, +/* 46675 */ {(12<<2)|2,{117,102,0}}, +/* 46676 */ {(12<<2)|2,{117,102,0}}, +/* 46677 */ {(12<<2)|2,{117,102,0}}, +/* 46678 */ {(12<<2)|2,{117,102,0}}, +/* 46679 */ {(12<<2)|2,{117,102,0}}, +/* 46680 */ {(12<<2)|2,{117,102,0}}, +/* 46681 */ {(12<<2)|2,{117,102,0}}, +/* 46682 */ {(12<<2)|2,{117,102,0}}, +/* 46683 */ {(12<<2)|2,{117,102,0}}, +/* 46684 */ {(12<<2)|2,{117,102,0}}, +/* 46685 */ {(12<<2)|2,{117,102,0}}, +/* 46686 */ {(12<<2)|2,{117,102,0}}, +/* 46687 */ {(12<<2)|2,{117,102,0}}, +/* 46688 */ {(12<<2)|2,{117,103,0}}, +/* 46689 */ {(12<<2)|2,{117,103,0}}, +/* 46690 */ {(12<<2)|2,{117,103,0}}, +/* 46691 */ {(12<<2)|2,{117,103,0}}, +/* 46692 */ {(12<<2)|2,{117,103,0}}, +/* 46693 */ {(12<<2)|2,{117,103,0}}, +/* 46694 */ {(12<<2)|2,{117,103,0}}, +/* 46695 */ {(12<<2)|2,{117,103,0}}, +/* 46696 */ {(12<<2)|2,{117,103,0}}, +/* 46697 */ {(12<<2)|2,{117,103,0}}, +/* 46698 */ {(12<<2)|2,{117,103,0}}, +/* 46699 */ {(12<<2)|2,{117,103,0}}, +/* 46700 */ {(12<<2)|2,{117,103,0}}, +/* 46701 */ {(12<<2)|2,{117,103,0}}, +/* 46702 */ {(12<<2)|2,{117,103,0}}, +/* 46703 */ {(12<<2)|2,{117,103,0}}, +/* 46704 */ {(12<<2)|2,{117,104,0}}, +/* 46705 */ {(12<<2)|2,{117,104,0}}, +/* 46706 */ {(12<<2)|2,{117,104,0}}, +/* 46707 */ {(12<<2)|2,{117,104,0}}, +/* 46708 */ {(12<<2)|2,{117,104,0}}, +/* 46709 */ {(12<<2)|2,{117,104,0}}, +/* 46710 */ {(12<<2)|2,{117,104,0}}, +/* 46711 */ {(12<<2)|2,{117,104,0}}, +/* 46712 */ {(12<<2)|2,{117,104,0}}, +/* 46713 */ {(12<<2)|2,{117,104,0}}, +/* 46714 */ {(12<<2)|2,{117,104,0}}, +/* 46715 */ {(12<<2)|2,{117,104,0}}, +/* 46716 */ {(12<<2)|2,{117,104,0}}, +/* 46717 */ {(12<<2)|2,{117,104,0}}, +/* 46718 */ {(12<<2)|2,{117,104,0}}, +/* 46719 */ {(12<<2)|2,{117,104,0}}, +/* 46720 */ {(12<<2)|2,{117,108,0}}, +/* 46721 */ {(12<<2)|2,{117,108,0}}, +/* 46722 */ {(12<<2)|2,{117,108,0}}, +/* 46723 */ {(12<<2)|2,{117,108,0}}, +/* 46724 */ {(12<<2)|2,{117,108,0}}, +/* 46725 */ {(12<<2)|2,{117,108,0}}, +/* 46726 */ {(12<<2)|2,{117,108,0}}, +/* 46727 */ {(12<<2)|2,{117,108,0}}, +/* 46728 */ {(12<<2)|2,{117,108,0}}, +/* 46729 */ {(12<<2)|2,{117,108,0}}, +/* 46730 */ {(12<<2)|2,{117,108,0}}, +/* 46731 */ {(12<<2)|2,{117,108,0}}, +/* 46732 */ {(12<<2)|2,{117,108,0}}, +/* 46733 */ {(12<<2)|2,{117,108,0}}, +/* 46734 */ {(12<<2)|2,{117,108,0}}, +/* 46735 */ {(12<<2)|2,{117,108,0}}, +/* 46736 */ {(12<<2)|2,{117,109,0}}, +/* 46737 */ {(12<<2)|2,{117,109,0}}, +/* 46738 */ {(12<<2)|2,{117,109,0}}, +/* 46739 */ {(12<<2)|2,{117,109,0}}, +/* 46740 */ {(12<<2)|2,{117,109,0}}, +/* 46741 */ {(12<<2)|2,{117,109,0}}, +/* 46742 */ {(12<<2)|2,{117,109,0}}, +/* 46743 */ {(12<<2)|2,{117,109,0}}, +/* 46744 */ {(12<<2)|2,{117,109,0}}, +/* 46745 */ {(12<<2)|2,{117,109,0}}, +/* 46746 */ {(12<<2)|2,{117,109,0}}, +/* 46747 */ {(12<<2)|2,{117,109,0}}, +/* 46748 */ {(12<<2)|2,{117,109,0}}, +/* 46749 */ {(12<<2)|2,{117,109,0}}, +/* 46750 */ {(12<<2)|2,{117,109,0}}, +/* 46751 */ {(12<<2)|2,{117,109,0}}, +/* 46752 */ {(12<<2)|2,{117,110,0}}, +/* 46753 */ {(12<<2)|2,{117,110,0}}, +/* 46754 */ {(12<<2)|2,{117,110,0}}, +/* 46755 */ {(12<<2)|2,{117,110,0}}, +/* 46756 */ {(12<<2)|2,{117,110,0}}, +/* 46757 */ {(12<<2)|2,{117,110,0}}, +/* 46758 */ {(12<<2)|2,{117,110,0}}, +/* 46759 */ {(12<<2)|2,{117,110,0}}, +/* 46760 */ {(12<<2)|2,{117,110,0}}, +/* 46761 */ {(12<<2)|2,{117,110,0}}, +/* 46762 */ {(12<<2)|2,{117,110,0}}, +/* 46763 */ {(12<<2)|2,{117,110,0}}, +/* 46764 */ {(12<<2)|2,{117,110,0}}, +/* 46765 */ {(12<<2)|2,{117,110,0}}, +/* 46766 */ {(12<<2)|2,{117,110,0}}, +/* 46767 */ {(12<<2)|2,{117,110,0}}, +/* 46768 */ {(12<<2)|2,{117,112,0}}, +/* 46769 */ {(12<<2)|2,{117,112,0}}, +/* 46770 */ {(12<<2)|2,{117,112,0}}, +/* 46771 */ {(12<<2)|2,{117,112,0}}, +/* 46772 */ {(12<<2)|2,{117,112,0}}, +/* 46773 */ {(12<<2)|2,{117,112,0}}, +/* 46774 */ {(12<<2)|2,{117,112,0}}, +/* 46775 */ {(12<<2)|2,{117,112,0}}, +/* 46776 */ {(12<<2)|2,{117,112,0}}, +/* 46777 */ {(12<<2)|2,{117,112,0}}, +/* 46778 */ {(12<<2)|2,{117,112,0}}, +/* 46779 */ {(12<<2)|2,{117,112,0}}, +/* 46780 */ {(12<<2)|2,{117,112,0}}, +/* 46781 */ {(12<<2)|2,{117,112,0}}, +/* 46782 */ {(12<<2)|2,{117,112,0}}, +/* 46783 */ {(12<<2)|2,{117,112,0}}, +/* 46784 */ {(12<<2)|2,{117,114,0}}, +/* 46785 */ {(12<<2)|2,{117,114,0}}, +/* 46786 */ {(12<<2)|2,{117,114,0}}, +/* 46787 */ {(12<<2)|2,{117,114,0}}, +/* 46788 */ {(12<<2)|2,{117,114,0}}, +/* 46789 */ {(12<<2)|2,{117,114,0}}, +/* 46790 */ {(12<<2)|2,{117,114,0}}, +/* 46791 */ {(12<<2)|2,{117,114,0}}, +/* 46792 */ {(12<<2)|2,{117,114,0}}, +/* 46793 */ {(12<<2)|2,{117,114,0}}, +/* 46794 */ {(12<<2)|2,{117,114,0}}, +/* 46795 */ {(12<<2)|2,{117,114,0}}, +/* 46796 */ {(12<<2)|2,{117,114,0}}, +/* 46797 */ {(12<<2)|2,{117,114,0}}, +/* 46798 */ {(12<<2)|2,{117,114,0}}, +/* 46799 */ {(12<<2)|2,{117,114,0}}, +/* 46800 */ {(12<<2)|2,{117,117,0}}, +/* 46801 */ {(12<<2)|2,{117,117,0}}, +/* 46802 */ {(12<<2)|2,{117,117,0}}, +/* 46803 */ {(12<<2)|2,{117,117,0}}, +/* 46804 */ {(12<<2)|2,{117,117,0}}, +/* 46805 */ {(12<<2)|2,{117,117,0}}, +/* 46806 */ {(12<<2)|2,{117,117,0}}, +/* 46807 */ {(12<<2)|2,{117,117,0}}, +/* 46808 */ {(12<<2)|2,{117,117,0}}, +/* 46809 */ {(12<<2)|2,{117,117,0}}, +/* 46810 */ {(12<<2)|2,{117,117,0}}, +/* 46811 */ {(12<<2)|2,{117,117,0}}, +/* 46812 */ {(12<<2)|2,{117,117,0}}, +/* 46813 */ {(12<<2)|2,{117,117,0}}, +/* 46814 */ {(12<<2)|2,{117,117,0}}, +/* 46815 */ {(12<<2)|2,{117,117,0}}, +/* 46816 */ {(13<<2)|2,{117,58,0}}, +/* 46817 */ {(13<<2)|2,{117,58,0}}, +/* 46818 */ {(13<<2)|2,{117,58,0}}, +/* 46819 */ {(13<<2)|2,{117,58,0}}, +/* 46820 */ {(13<<2)|2,{117,58,0}}, +/* 46821 */ {(13<<2)|2,{117,58,0}}, +/* 46822 */ {(13<<2)|2,{117,58,0}}, +/* 46823 */ {(13<<2)|2,{117,58,0}}, +/* 46824 */ {(13<<2)|2,{117,66,0}}, +/* 46825 */ {(13<<2)|2,{117,66,0}}, +/* 46826 */ {(13<<2)|2,{117,66,0}}, +/* 46827 */ {(13<<2)|2,{117,66,0}}, +/* 46828 */ {(13<<2)|2,{117,66,0}}, +/* 46829 */ {(13<<2)|2,{117,66,0}}, +/* 46830 */ {(13<<2)|2,{117,66,0}}, +/* 46831 */ {(13<<2)|2,{117,66,0}}, +/* 46832 */ {(13<<2)|2,{117,67,0}}, +/* 46833 */ {(13<<2)|2,{117,67,0}}, +/* 46834 */ {(13<<2)|2,{117,67,0}}, +/* 46835 */ {(13<<2)|2,{117,67,0}}, +/* 46836 */ {(13<<2)|2,{117,67,0}}, +/* 46837 */ {(13<<2)|2,{117,67,0}}, +/* 46838 */ {(13<<2)|2,{117,67,0}}, +/* 46839 */ {(13<<2)|2,{117,67,0}}, +/* 46840 */ {(13<<2)|2,{117,68,0}}, +/* 46841 */ {(13<<2)|2,{117,68,0}}, +/* 46842 */ {(13<<2)|2,{117,68,0}}, +/* 46843 */ {(13<<2)|2,{117,68,0}}, +/* 46844 */ {(13<<2)|2,{117,68,0}}, +/* 46845 */ {(13<<2)|2,{117,68,0}}, +/* 46846 */ {(13<<2)|2,{117,68,0}}, +/* 46847 */ {(13<<2)|2,{117,68,0}}, +/* 46848 */ {(13<<2)|2,{117,69,0}}, +/* 46849 */ {(13<<2)|2,{117,69,0}}, +/* 46850 */ {(13<<2)|2,{117,69,0}}, +/* 46851 */ {(13<<2)|2,{117,69,0}}, +/* 46852 */ {(13<<2)|2,{117,69,0}}, +/* 46853 */ {(13<<2)|2,{117,69,0}}, +/* 46854 */ {(13<<2)|2,{117,69,0}}, +/* 46855 */ {(13<<2)|2,{117,69,0}}, +/* 46856 */ {(13<<2)|2,{117,70,0}}, +/* 46857 */ {(13<<2)|2,{117,70,0}}, +/* 46858 */ {(13<<2)|2,{117,70,0}}, +/* 46859 */ {(13<<2)|2,{117,70,0}}, +/* 46860 */ {(13<<2)|2,{117,70,0}}, +/* 46861 */ {(13<<2)|2,{117,70,0}}, +/* 46862 */ {(13<<2)|2,{117,70,0}}, +/* 46863 */ {(13<<2)|2,{117,70,0}}, +/* 46864 */ {(13<<2)|2,{117,71,0}}, +/* 46865 */ {(13<<2)|2,{117,71,0}}, +/* 46866 */ {(13<<2)|2,{117,71,0}}, +/* 46867 */ {(13<<2)|2,{117,71,0}}, +/* 46868 */ {(13<<2)|2,{117,71,0}}, +/* 46869 */ {(13<<2)|2,{117,71,0}}, +/* 46870 */ {(13<<2)|2,{117,71,0}}, +/* 46871 */ {(13<<2)|2,{117,71,0}}, +/* 46872 */ {(13<<2)|2,{117,72,0}}, +/* 46873 */ {(13<<2)|2,{117,72,0}}, +/* 46874 */ {(13<<2)|2,{117,72,0}}, +/* 46875 */ {(13<<2)|2,{117,72,0}}, +/* 46876 */ {(13<<2)|2,{117,72,0}}, +/* 46877 */ {(13<<2)|2,{117,72,0}}, +/* 46878 */ {(13<<2)|2,{117,72,0}}, +/* 46879 */ {(13<<2)|2,{117,72,0}}, +/* 46880 */ {(13<<2)|2,{117,73,0}}, +/* 46881 */ {(13<<2)|2,{117,73,0}}, +/* 46882 */ {(13<<2)|2,{117,73,0}}, +/* 46883 */ {(13<<2)|2,{117,73,0}}, +/* 46884 */ {(13<<2)|2,{117,73,0}}, +/* 46885 */ {(13<<2)|2,{117,73,0}}, +/* 46886 */ {(13<<2)|2,{117,73,0}}, +/* 46887 */ {(13<<2)|2,{117,73,0}}, +/* 46888 */ {(13<<2)|2,{117,74,0}}, +/* 46889 */ {(13<<2)|2,{117,74,0}}, +/* 46890 */ {(13<<2)|2,{117,74,0}}, +/* 46891 */ {(13<<2)|2,{117,74,0}}, +/* 46892 */ {(13<<2)|2,{117,74,0}}, +/* 46893 */ {(13<<2)|2,{117,74,0}}, +/* 46894 */ {(13<<2)|2,{117,74,0}}, +/* 46895 */ {(13<<2)|2,{117,74,0}}, +/* 46896 */ {(13<<2)|2,{117,75,0}}, +/* 46897 */ {(13<<2)|2,{117,75,0}}, +/* 46898 */ {(13<<2)|2,{117,75,0}}, +/* 46899 */ {(13<<2)|2,{117,75,0}}, +/* 46900 */ {(13<<2)|2,{117,75,0}}, +/* 46901 */ {(13<<2)|2,{117,75,0}}, +/* 46902 */ {(13<<2)|2,{117,75,0}}, +/* 46903 */ {(13<<2)|2,{117,75,0}}, +/* 46904 */ {(13<<2)|2,{117,76,0}}, +/* 46905 */ {(13<<2)|2,{117,76,0}}, +/* 46906 */ {(13<<2)|2,{117,76,0}}, +/* 46907 */ {(13<<2)|2,{117,76,0}}, +/* 46908 */ {(13<<2)|2,{117,76,0}}, +/* 46909 */ {(13<<2)|2,{117,76,0}}, +/* 46910 */ {(13<<2)|2,{117,76,0}}, +/* 46911 */ {(13<<2)|2,{117,76,0}}, +/* 46912 */ {(13<<2)|2,{117,77,0}}, +/* 46913 */ {(13<<2)|2,{117,77,0}}, +/* 46914 */ {(13<<2)|2,{117,77,0}}, +/* 46915 */ {(13<<2)|2,{117,77,0}}, +/* 46916 */ {(13<<2)|2,{117,77,0}}, +/* 46917 */ {(13<<2)|2,{117,77,0}}, +/* 46918 */ {(13<<2)|2,{117,77,0}}, +/* 46919 */ {(13<<2)|2,{117,77,0}}, +/* 46920 */ {(13<<2)|2,{117,78,0}}, +/* 46921 */ {(13<<2)|2,{117,78,0}}, +/* 46922 */ {(13<<2)|2,{117,78,0}}, +/* 46923 */ {(13<<2)|2,{117,78,0}}, +/* 46924 */ {(13<<2)|2,{117,78,0}}, +/* 46925 */ {(13<<2)|2,{117,78,0}}, +/* 46926 */ {(13<<2)|2,{117,78,0}}, +/* 46927 */ {(13<<2)|2,{117,78,0}}, +/* 46928 */ {(13<<2)|2,{117,79,0}}, +/* 46929 */ {(13<<2)|2,{117,79,0}}, +/* 46930 */ {(13<<2)|2,{117,79,0}}, +/* 46931 */ {(13<<2)|2,{117,79,0}}, +/* 46932 */ {(13<<2)|2,{117,79,0}}, +/* 46933 */ {(13<<2)|2,{117,79,0}}, +/* 46934 */ {(13<<2)|2,{117,79,0}}, +/* 46935 */ {(13<<2)|2,{117,79,0}}, +/* 46936 */ {(13<<2)|2,{117,80,0}}, +/* 46937 */ {(13<<2)|2,{117,80,0}}, +/* 46938 */ {(13<<2)|2,{117,80,0}}, +/* 46939 */ {(13<<2)|2,{117,80,0}}, +/* 46940 */ {(13<<2)|2,{117,80,0}}, +/* 46941 */ {(13<<2)|2,{117,80,0}}, +/* 46942 */ {(13<<2)|2,{117,80,0}}, +/* 46943 */ {(13<<2)|2,{117,80,0}}, +/* 46944 */ {(13<<2)|2,{117,81,0}}, +/* 46945 */ {(13<<2)|2,{117,81,0}}, +/* 46946 */ {(13<<2)|2,{117,81,0}}, +/* 46947 */ {(13<<2)|2,{117,81,0}}, +/* 46948 */ {(13<<2)|2,{117,81,0}}, +/* 46949 */ {(13<<2)|2,{117,81,0}}, +/* 46950 */ {(13<<2)|2,{117,81,0}}, +/* 46951 */ {(13<<2)|2,{117,81,0}}, +/* 46952 */ {(13<<2)|2,{117,82,0}}, +/* 46953 */ {(13<<2)|2,{117,82,0}}, +/* 46954 */ {(13<<2)|2,{117,82,0}}, +/* 46955 */ {(13<<2)|2,{117,82,0}}, +/* 46956 */ {(13<<2)|2,{117,82,0}}, +/* 46957 */ {(13<<2)|2,{117,82,0}}, +/* 46958 */ {(13<<2)|2,{117,82,0}}, +/* 46959 */ {(13<<2)|2,{117,82,0}}, +/* 46960 */ {(13<<2)|2,{117,83,0}}, +/* 46961 */ {(13<<2)|2,{117,83,0}}, +/* 46962 */ {(13<<2)|2,{117,83,0}}, +/* 46963 */ {(13<<2)|2,{117,83,0}}, +/* 46964 */ {(13<<2)|2,{117,83,0}}, +/* 46965 */ {(13<<2)|2,{117,83,0}}, +/* 46966 */ {(13<<2)|2,{117,83,0}}, +/* 46967 */ {(13<<2)|2,{117,83,0}}, +/* 46968 */ {(13<<2)|2,{117,84,0}}, +/* 46969 */ {(13<<2)|2,{117,84,0}}, +/* 46970 */ {(13<<2)|2,{117,84,0}}, +/* 46971 */ {(13<<2)|2,{117,84,0}}, +/* 46972 */ {(13<<2)|2,{117,84,0}}, +/* 46973 */ {(13<<2)|2,{117,84,0}}, +/* 46974 */ {(13<<2)|2,{117,84,0}}, +/* 46975 */ {(13<<2)|2,{117,84,0}}, +/* 46976 */ {(13<<2)|2,{117,85,0}}, +/* 46977 */ {(13<<2)|2,{117,85,0}}, +/* 46978 */ {(13<<2)|2,{117,85,0}}, +/* 46979 */ {(13<<2)|2,{117,85,0}}, +/* 46980 */ {(13<<2)|2,{117,85,0}}, +/* 46981 */ {(13<<2)|2,{117,85,0}}, +/* 46982 */ {(13<<2)|2,{117,85,0}}, +/* 46983 */ {(13<<2)|2,{117,85,0}}, +/* 46984 */ {(13<<2)|2,{117,86,0}}, +/* 46985 */ {(13<<2)|2,{117,86,0}}, +/* 46986 */ {(13<<2)|2,{117,86,0}}, +/* 46987 */ {(13<<2)|2,{117,86,0}}, +/* 46988 */ {(13<<2)|2,{117,86,0}}, +/* 46989 */ {(13<<2)|2,{117,86,0}}, +/* 46990 */ {(13<<2)|2,{117,86,0}}, +/* 46991 */ {(13<<2)|2,{117,86,0}}, +/* 46992 */ {(13<<2)|2,{117,87,0}}, +/* 46993 */ {(13<<2)|2,{117,87,0}}, +/* 46994 */ {(13<<2)|2,{117,87,0}}, +/* 46995 */ {(13<<2)|2,{117,87,0}}, +/* 46996 */ {(13<<2)|2,{117,87,0}}, +/* 46997 */ {(13<<2)|2,{117,87,0}}, +/* 46998 */ {(13<<2)|2,{117,87,0}}, +/* 46999 */ {(13<<2)|2,{117,87,0}}, +/* 47000 */ {(13<<2)|2,{117,89,0}}, +/* 47001 */ {(13<<2)|2,{117,89,0}}, +/* 47002 */ {(13<<2)|2,{117,89,0}}, +/* 47003 */ {(13<<2)|2,{117,89,0}}, +/* 47004 */ {(13<<2)|2,{117,89,0}}, +/* 47005 */ {(13<<2)|2,{117,89,0}}, +/* 47006 */ {(13<<2)|2,{117,89,0}}, +/* 47007 */ {(13<<2)|2,{117,89,0}}, +/* 47008 */ {(13<<2)|2,{117,106,0}}, +/* 47009 */ {(13<<2)|2,{117,106,0}}, +/* 47010 */ {(13<<2)|2,{117,106,0}}, +/* 47011 */ {(13<<2)|2,{117,106,0}}, +/* 47012 */ {(13<<2)|2,{117,106,0}}, +/* 47013 */ {(13<<2)|2,{117,106,0}}, +/* 47014 */ {(13<<2)|2,{117,106,0}}, +/* 47015 */ {(13<<2)|2,{117,106,0}}, +/* 47016 */ {(13<<2)|2,{117,107,0}}, +/* 47017 */ {(13<<2)|2,{117,107,0}}, +/* 47018 */ {(13<<2)|2,{117,107,0}}, +/* 47019 */ {(13<<2)|2,{117,107,0}}, +/* 47020 */ {(13<<2)|2,{117,107,0}}, +/* 47021 */ {(13<<2)|2,{117,107,0}}, +/* 47022 */ {(13<<2)|2,{117,107,0}}, +/* 47023 */ {(13<<2)|2,{117,107,0}}, +/* 47024 */ {(13<<2)|2,{117,113,0}}, +/* 47025 */ {(13<<2)|2,{117,113,0}}, +/* 47026 */ {(13<<2)|2,{117,113,0}}, +/* 47027 */ {(13<<2)|2,{117,113,0}}, +/* 47028 */ {(13<<2)|2,{117,113,0}}, +/* 47029 */ {(13<<2)|2,{117,113,0}}, +/* 47030 */ {(13<<2)|2,{117,113,0}}, +/* 47031 */ {(13<<2)|2,{117,113,0}}, +/* 47032 */ {(13<<2)|2,{117,118,0}}, +/* 47033 */ {(13<<2)|2,{117,118,0}}, +/* 47034 */ {(13<<2)|2,{117,118,0}}, +/* 47035 */ {(13<<2)|2,{117,118,0}}, +/* 47036 */ {(13<<2)|2,{117,118,0}}, +/* 47037 */ {(13<<2)|2,{117,118,0}}, +/* 47038 */ {(13<<2)|2,{117,118,0}}, +/* 47039 */ {(13<<2)|2,{117,118,0}}, +/* 47040 */ {(13<<2)|2,{117,119,0}}, +/* 47041 */ {(13<<2)|2,{117,119,0}}, +/* 47042 */ {(13<<2)|2,{117,119,0}}, +/* 47043 */ {(13<<2)|2,{117,119,0}}, +/* 47044 */ {(13<<2)|2,{117,119,0}}, +/* 47045 */ {(13<<2)|2,{117,119,0}}, +/* 47046 */ {(13<<2)|2,{117,119,0}}, +/* 47047 */ {(13<<2)|2,{117,119,0}}, +/* 47048 */ {(13<<2)|2,{117,120,0}}, +/* 47049 */ {(13<<2)|2,{117,120,0}}, +/* 47050 */ {(13<<2)|2,{117,120,0}}, +/* 47051 */ {(13<<2)|2,{117,120,0}}, +/* 47052 */ {(13<<2)|2,{117,120,0}}, +/* 47053 */ {(13<<2)|2,{117,120,0}}, +/* 47054 */ {(13<<2)|2,{117,120,0}}, +/* 47055 */ {(13<<2)|2,{117,120,0}}, +/* 47056 */ {(13<<2)|2,{117,121,0}}, +/* 47057 */ {(13<<2)|2,{117,121,0}}, +/* 47058 */ {(13<<2)|2,{117,121,0}}, +/* 47059 */ {(13<<2)|2,{117,121,0}}, +/* 47060 */ {(13<<2)|2,{117,121,0}}, +/* 47061 */ {(13<<2)|2,{117,121,0}}, +/* 47062 */ {(13<<2)|2,{117,121,0}}, +/* 47063 */ {(13<<2)|2,{117,121,0}}, +/* 47064 */ {(13<<2)|2,{117,122,0}}, +/* 47065 */ {(13<<2)|2,{117,122,0}}, +/* 47066 */ {(13<<2)|2,{117,122,0}}, +/* 47067 */ {(13<<2)|2,{117,122,0}}, +/* 47068 */ {(13<<2)|2,{117,122,0}}, +/* 47069 */ {(13<<2)|2,{117,122,0}}, +/* 47070 */ {(13<<2)|2,{117,122,0}}, +/* 47071 */ {(13<<2)|2,{117,122,0}}, +/* 47072 */ {(14<<2)|2,{117,38,0}}, +/* 47073 */ {(14<<2)|2,{117,38,0}}, +/* 47074 */ {(14<<2)|2,{117,38,0}}, +/* 47075 */ {(14<<2)|2,{117,38,0}}, +/* 47076 */ {(14<<2)|2,{117,42,0}}, +/* 47077 */ {(14<<2)|2,{117,42,0}}, +/* 47078 */ {(14<<2)|2,{117,42,0}}, +/* 47079 */ {(14<<2)|2,{117,42,0}}, +/* 47080 */ {(14<<2)|2,{117,44,0}}, +/* 47081 */ {(14<<2)|2,{117,44,0}}, +/* 47082 */ {(14<<2)|2,{117,44,0}}, +/* 47083 */ {(14<<2)|2,{117,44,0}}, +/* 47084 */ {(14<<2)|2,{117,59,0}}, +/* 47085 */ {(14<<2)|2,{117,59,0}}, +/* 47086 */ {(14<<2)|2,{117,59,0}}, +/* 47087 */ {(14<<2)|2,{117,59,0}}, +/* 47088 */ {(14<<2)|2,{117,88,0}}, +/* 47089 */ {(14<<2)|2,{117,88,0}}, +/* 47090 */ {(14<<2)|2,{117,88,0}}, +/* 47091 */ {(14<<2)|2,{117,88,0}}, +/* 47092 */ {(14<<2)|2,{117,90,0}}, +/* 47093 */ {(14<<2)|2,{117,90,0}}, +/* 47094 */ {(14<<2)|2,{117,90,0}}, +/* 47095 */ {(14<<2)|2,{117,90,0}}, +/* 47096 */ {(16<<2)|2,{117,33,0}}, +/* 47097 */ {(16<<2)|2,{117,34,0}}, +/* 47098 */ {(16<<2)|2,{117,40,0}}, +/* 47099 */ {(16<<2)|2,{117,41,0}}, +/* 47100 */ {(16<<2)|2,{117,63,0}}, +/* 47101 */ {(6<<2)|1,{117,0,0}}, +/* 47102 */ {(6<<2)|1,{117,0,0}}, +/* 47103 */ {(6<<2)|1,{117,0,0}}, +/* 47104 */ {(12<<2)|2,{58,48,0}}, +/* 47105 */ {(12<<2)|2,{58,48,0}}, +/* 47106 */ {(12<<2)|2,{58,48,0}}, +/* 47107 */ {(12<<2)|2,{58,48,0}}, +/* 47108 */ {(12<<2)|2,{58,48,0}}, +/* 47109 */ {(12<<2)|2,{58,48,0}}, +/* 47110 */ {(12<<2)|2,{58,48,0}}, +/* 47111 */ {(12<<2)|2,{58,48,0}}, +/* 47112 */ {(12<<2)|2,{58,48,0}}, +/* 47113 */ {(12<<2)|2,{58,48,0}}, +/* 47114 */ {(12<<2)|2,{58,48,0}}, +/* 47115 */ {(12<<2)|2,{58,48,0}}, +/* 47116 */ {(12<<2)|2,{58,48,0}}, +/* 47117 */ {(12<<2)|2,{58,48,0}}, +/* 47118 */ {(12<<2)|2,{58,48,0}}, +/* 47119 */ {(12<<2)|2,{58,48,0}}, +/* 47120 */ {(12<<2)|2,{58,49,0}}, +/* 47121 */ {(12<<2)|2,{58,49,0}}, +/* 47122 */ {(12<<2)|2,{58,49,0}}, +/* 47123 */ {(12<<2)|2,{58,49,0}}, +/* 47124 */ {(12<<2)|2,{58,49,0}}, +/* 47125 */ {(12<<2)|2,{58,49,0}}, +/* 47126 */ {(12<<2)|2,{58,49,0}}, +/* 47127 */ {(12<<2)|2,{58,49,0}}, +/* 47128 */ {(12<<2)|2,{58,49,0}}, +/* 47129 */ {(12<<2)|2,{58,49,0}}, +/* 47130 */ {(12<<2)|2,{58,49,0}}, +/* 47131 */ {(12<<2)|2,{58,49,0}}, +/* 47132 */ {(12<<2)|2,{58,49,0}}, +/* 47133 */ {(12<<2)|2,{58,49,0}}, +/* 47134 */ {(12<<2)|2,{58,49,0}}, +/* 47135 */ {(12<<2)|2,{58,49,0}}, +/* 47136 */ {(12<<2)|2,{58,50,0}}, +/* 47137 */ {(12<<2)|2,{58,50,0}}, +/* 47138 */ {(12<<2)|2,{58,50,0}}, +/* 47139 */ {(12<<2)|2,{58,50,0}}, +/* 47140 */ {(12<<2)|2,{58,50,0}}, +/* 47141 */ {(12<<2)|2,{58,50,0}}, +/* 47142 */ {(12<<2)|2,{58,50,0}}, +/* 47143 */ {(12<<2)|2,{58,50,0}}, +/* 47144 */ {(12<<2)|2,{58,50,0}}, +/* 47145 */ {(12<<2)|2,{58,50,0}}, +/* 47146 */ {(12<<2)|2,{58,50,0}}, +/* 47147 */ {(12<<2)|2,{58,50,0}}, +/* 47148 */ {(12<<2)|2,{58,50,0}}, +/* 47149 */ {(12<<2)|2,{58,50,0}}, +/* 47150 */ {(12<<2)|2,{58,50,0}}, +/* 47151 */ {(12<<2)|2,{58,50,0}}, +/* 47152 */ {(12<<2)|2,{58,97,0}}, +/* 47153 */ {(12<<2)|2,{58,97,0}}, +/* 47154 */ {(12<<2)|2,{58,97,0}}, +/* 47155 */ {(12<<2)|2,{58,97,0}}, +/* 47156 */ {(12<<2)|2,{58,97,0}}, +/* 47157 */ {(12<<2)|2,{58,97,0}}, +/* 47158 */ {(12<<2)|2,{58,97,0}}, +/* 47159 */ {(12<<2)|2,{58,97,0}}, +/* 47160 */ {(12<<2)|2,{58,97,0}}, +/* 47161 */ {(12<<2)|2,{58,97,0}}, +/* 47162 */ {(12<<2)|2,{58,97,0}}, +/* 47163 */ {(12<<2)|2,{58,97,0}}, +/* 47164 */ {(12<<2)|2,{58,97,0}}, +/* 47165 */ {(12<<2)|2,{58,97,0}}, +/* 47166 */ {(12<<2)|2,{58,97,0}}, +/* 47167 */ {(12<<2)|2,{58,97,0}}, +/* 47168 */ {(12<<2)|2,{58,99,0}}, +/* 47169 */ {(12<<2)|2,{58,99,0}}, +/* 47170 */ {(12<<2)|2,{58,99,0}}, +/* 47171 */ {(12<<2)|2,{58,99,0}}, +/* 47172 */ {(12<<2)|2,{58,99,0}}, +/* 47173 */ {(12<<2)|2,{58,99,0}}, +/* 47174 */ {(12<<2)|2,{58,99,0}}, +/* 47175 */ {(12<<2)|2,{58,99,0}}, +/* 47176 */ {(12<<2)|2,{58,99,0}}, +/* 47177 */ {(12<<2)|2,{58,99,0}}, +/* 47178 */ {(12<<2)|2,{58,99,0}}, +/* 47179 */ {(12<<2)|2,{58,99,0}}, +/* 47180 */ {(12<<2)|2,{58,99,0}}, +/* 47181 */ {(12<<2)|2,{58,99,0}}, +/* 47182 */ {(12<<2)|2,{58,99,0}}, +/* 47183 */ {(12<<2)|2,{58,99,0}}, +/* 47184 */ {(12<<2)|2,{58,101,0}}, +/* 47185 */ {(12<<2)|2,{58,101,0}}, +/* 47186 */ {(12<<2)|2,{58,101,0}}, +/* 47187 */ {(12<<2)|2,{58,101,0}}, +/* 47188 */ {(12<<2)|2,{58,101,0}}, +/* 47189 */ {(12<<2)|2,{58,101,0}}, +/* 47190 */ {(12<<2)|2,{58,101,0}}, +/* 47191 */ {(12<<2)|2,{58,101,0}}, +/* 47192 */ {(12<<2)|2,{58,101,0}}, +/* 47193 */ {(12<<2)|2,{58,101,0}}, +/* 47194 */ {(12<<2)|2,{58,101,0}}, +/* 47195 */ {(12<<2)|2,{58,101,0}}, +/* 47196 */ {(12<<2)|2,{58,101,0}}, +/* 47197 */ {(12<<2)|2,{58,101,0}}, +/* 47198 */ {(12<<2)|2,{58,101,0}}, +/* 47199 */ {(12<<2)|2,{58,101,0}}, +/* 47200 */ {(12<<2)|2,{58,105,0}}, +/* 47201 */ {(12<<2)|2,{58,105,0}}, +/* 47202 */ {(12<<2)|2,{58,105,0}}, +/* 47203 */ {(12<<2)|2,{58,105,0}}, +/* 47204 */ {(12<<2)|2,{58,105,0}}, +/* 47205 */ {(12<<2)|2,{58,105,0}}, +/* 47206 */ {(12<<2)|2,{58,105,0}}, +/* 47207 */ {(12<<2)|2,{58,105,0}}, +/* 47208 */ {(12<<2)|2,{58,105,0}}, +/* 47209 */ {(12<<2)|2,{58,105,0}}, +/* 47210 */ {(12<<2)|2,{58,105,0}}, +/* 47211 */ {(12<<2)|2,{58,105,0}}, +/* 47212 */ {(12<<2)|2,{58,105,0}}, +/* 47213 */ {(12<<2)|2,{58,105,0}}, +/* 47214 */ {(12<<2)|2,{58,105,0}}, +/* 47215 */ {(12<<2)|2,{58,105,0}}, +/* 47216 */ {(12<<2)|2,{58,111,0}}, +/* 47217 */ {(12<<2)|2,{58,111,0}}, +/* 47218 */ {(12<<2)|2,{58,111,0}}, +/* 47219 */ {(12<<2)|2,{58,111,0}}, +/* 47220 */ {(12<<2)|2,{58,111,0}}, +/* 47221 */ {(12<<2)|2,{58,111,0}}, +/* 47222 */ {(12<<2)|2,{58,111,0}}, +/* 47223 */ {(12<<2)|2,{58,111,0}}, +/* 47224 */ {(12<<2)|2,{58,111,0}}, +/* 47225 */ {(12<<2)|2,{58,111,0}}, +/* 47226 */ {(12<<2)|2,{58,111,0}}, +/* 47227 */ {(12<<2)|2,{58,111,0}}, +/* 47228 */ {(12<<2)|2,{58,111,0}}, +/* 47229 */ {(12<<2)|2,{58,111,0}}, +/* 47230 */ {(12<<2)|2,{58,111,0}}, +/* 47231 */ {(12<<2)|2,{58,111,0}}, +/* 47232 */ {(12<<2)|2,{58,115,0}}, +/* 47233 */ {(12<<2)|2,{58,115,0}}, +/* 47234 */ {(12<<2)|2,{58,115,0}}, +/* 47235 */ {(12<<2)|2,{58,115,0}}, +/* 47236 */ {(12<<2)|2,{58,115,0}}, +/* 47237 */ {(12<<2)|2,{58,115,0}}, +/* 47238 */ {(12<<2)|2,{58,115,0}}, +/* 47239 */ {(12<<2)|2,{58,115,0}}, +/* 47240 */ {(12<<2)|2,{58,115,0}}, +/* 47241 */ {(12<<2)|2,{58,115,0}}, +/* 47242 */ {(12<<2)|2,{58,115,0}}, +/* 47243 */ {(12<<2)|2,{58,115,0}}, +/* 47244 */ {(12<<2)|2,{58,115,0}}, +/* 47245 */ {(12<<2)|2,{58,115,0}}, +/* 47246 */ {(12<<2)|2,{58,115,0}}, +/* 47247 */ {(12<<2)|2,{58,115,0}}, +/* 47248 */ {(12<<2)|2,{58,116,0}}, +/* 47249 */ {(12<<2)|2,{58,116,0}}, +/* 47250 */ {(12<<2)|2,{58,116,0}}, +/* 47251 */ {(12<<2)|2,{58,116,0}}, +/* 47252 */ {(12<<2)|2,{58,116,0}}, +/* 47253 */ {(12<<2)|2,{58,116,0}}, +/* 47254 */ {(12<<2)|2,{58,116,0}}, +/* 47255 */ {(12<<2)|2,{58,116,0}}, +/* 47256 */ {(12<<2)|2,{58,116,0}}, +/* 47257 */ {(12<<2)|2,{58,116,0}}, +/* 47258 */ {(12<<2)|2,{58,116,0}}, +/* 47259 */ {(12<<2)|2,{58,116,0}}, +/* 47260 */ {(12<<2)|2,{58,116,0}}, +/* 47261 */ {(12<<2)|2,{58,116,0}}, +/* 47262 */ {(12<<2)|2,{58,116,0}}, +/* 47263 */ {(12<<2)|2,{58,116,0}}, +/* 47264 */ {(13<<2)|2,{58,32,0}}, +/* 47265 */ {(13<<2)|2,{58,32,0}}, +/* 47266 */ {(13<<2)|2,{58,32,0}}, +/* 47267 */ {(13<<2)|2,{58,32,0}}, +/* 47268 */ {(13<<2)|2,{58,32,0}}, +/* 47269 */ {(13<<2)|2,{58,32,0}}, +/* 47270 */ {(13<<2)|2,{58,32,0}}, +/* 47271 */ {(13<<2)|2,{58,32,0}}, +/* 47272 */ {(13<<2)|2,{58,37,0}}, +/* 47273 */ {(13<<2)|2,{58,37,0}}, +/* 47274 */ {(13<<2)|2,{58,37,0}}, +/* 47275 */ {(13<<2)|2,{58,37,0}}, +/* 47276 */ {(13<<2)|2,{58,37,0}}, +/* 47277 */ {(13<<2)|2,{58,37,0}}, +/* 47278 */ {(13<<2)|2,{58,37,0}}, +/* 47279 */ {(13<<2)|2,{58,37,0}}, +/* 47280 */ {(13<<2)|2,{58,45,0}}, +/* 47281 */ {(13<<2)|2,{58,45,0}}, +/* 47282 */ {(13<<2)|2,{58,45,0}}, +/* 47283 */ {(13<<2)|2,{58,45,0}}, +/* 47284 */ {(13<<2)|2,{58,45,0}}, +/* 47285 */ {(13<<2)|2,{58,45,0}}, +/* 47286 */ {(13<<2)|2,{58,45,0}}, +/* 47287 */ {(13<<2)|2,{58,45,0}}, +/* 47288 */ {(13<<2)|2,{58,46,0}}, +/* 47289 */ {(13<<2)|2,{58,46,0}}, +/* 47290 */ {(13<<2)|2,{58,46,0}}, +/* 47291 */ {(13<<2)|2,{58,46,0}}, +/* 47292 */ {(13<<2)|2,{58,46,0}}, +/* 47293 */ {(13<<2)|2,{58,46,0}}, +/* 47294 */ {(13<<2)|2,{58,46,0}}, +/* 47295 */ {(13<<2)|2,{58,46,0}}, +/* 47296 */ {(13<<2)|2,{58,47,0}}, +/* 47297 */ {(13<<2)|2,{58,47,0}}, +/* 47298 */ {(13<<2)|2,{58,47,0}}, +/* 47299 */ {(13<<2)|2,{58,47,0}}, +/* 47300 */ {(13<<2)|2,{58,47,0}}, +/* 47301 */ {(13<<2)|2,{58,47,0}}, +/* 47302 */ {(13<<2)|2,{58,47,0}}, +/* 47303 */ {(13<<2)|2,{58,47,0}}, +/* 47304 */ {(13<<2)|2,{58,51,0}}, +/* 47305 */ {(13<<2)|2,{58,51,0}}, +/* 47306 */ {(13<<2)|2,{58,51,0}}, +/* 47307 */ {(13<<2)|2,{58,51,0}}, +/* 47308 */ {(13<<2)|2,{58,51,0}}, +/* 47309 */ {(13<<2)|2,{58,51,0}}, +/* 47310 */ {(13<<2)|2,{58,51,0}}, +/* 47311 */ {(13<<2)|2,{58,51,0}}, +/* 47312 */ {(13<<2)|2,{58,52,0}}, +/* 47313 */ {(13<<2)|2,{58,52,0}}, +/* 47314 */ {(13<<2)|2,{58,52,0}}, +/* 47315 */ {(13<<2)|2,{58,52,0}}, +/* 47316 */ {(13<<2)|2,{58,52,0}}, +/* 47317 */ {(13<<2)|2,{58,52,0}}, +/* 47318 */ {(13<<2)|2,{58,52,0}}, +/* 47319 */ {(13<<2)|2,{58,52,0}}, +/* 47320 */ {(13<<2)|2,{58,53,0}}, +/* 47321 */ {(13<<2)|2,{58,53,0}}, +/* 47322 */ {(13<<2)|2,{58,53,0}}, +/* 47323 */ {(13<<2)|2,{58,53,0}}, +/* 47324 */ {(13<<2)|2,{58,53,0}}, +/* 47325 */ {(13<<2)|2,{58,53,0}}, +/* 47326 */ {(13<<2)|2,{58,53,0}}, +/* 47327 */ {(13<<2)|2,{58,53,0}}, +/* 47328 */ {(13<<2)|2,{58,54,0}}, +/* 47329 */ {(13<<2)|2,{58,54,0}}, +/* 47330 */ {(13<<2)|2,{58,54,0}}, +/* 47331 */ {(13<<2)|2,{58,54,0}}, +/* 47332 */ {(13<<2)|2,{58,54,0}}, +/* 47333 */ {(13<<2)|2,{58,54,0}}, +/* 47334 */ {(13<<2)|2,{58,54,0}}, +/* 47335 */ {(13<<2)|2,{58,54,0}}, +/* 47336 */ {(13<<2)|2,{58,55,0}}, +/* 47337 */ {(13<<2)|2,{58,55,0}}, +/* 47338 */ {(13<<2)|2,{58,55,0}}, +/* 47339 */ {(13<<2)|2,{58,55,0}}, +/* 47340 */ {(13<<2)|2,{58,55,0}}, +/* 47341 */ {(13<<2)|2,{58,55,0}}, +/* 47342 */ {(13<<2)|2,{58,55,0}}, +/* 47343 */ {(13<<2)|2,{58,55,0}}, +/* 47344 */ {(13<<2)|2,{58,56,0}}, +/* 47345 */ {(13<<2)|2,{58,56,0}}, +/* 47346 */ {(13<<2)|2,{58,56,0}}, +/* 47347 */ {(13<<2)|2,{58,56,0}}, +/* 47348 */ {(13<<2)|2,{58,56,0}}, +/* 47349 */ {(13<<2)|2,{58,56,0}}, +/* 47350 */ {(13<<2)|2,{58,56,0}}, +/* 47351 */ {(13<<2)|2,{58,56,0}}, +/* 47352 */ {(13<<2)|2,{58,57,0}}, +/* 47353 */ {(13<<2)|2,{58,57,0}}, +/* 47354 */ {(13<<2)|2,{58,57,0}}, +/* 47355 */ {(13<<2)|2,{58,57,0}}, +/* 47356 */ {(13<<2)|2,{58,57,0}}, +/* 47357 */ {(13<<2)|2,{58,57,0}}, +/* 47358 */ {(13<<2)|2,{58,57,0}}, +/* 47359 */ {(13<<2)|2,{58,57,0}}, +/* 47360 */ {(13<<2)|2,{58,61,0}}, +/* 47361 */ {(13<<2)|2,{58,61,0}}, +/* 47362 */ {(13<<2)|2,{58,61,0}}, +/* 47363 */ {(13<<2)|2,{58,61,0}}, +/* 47364 */ {(13<<2)|2,{58,61,0}}, +/* 47365 */ {(13<<2)|2,{58,61,0}}, +/* 47366 */ {(13<<2)|2,{58,61,0}}, +/* 47367 */ {(13<<2)|2,{58,61,0}}, +/* 47368 */ {(13<<2)|2,{58,65,0}}, +/* 47369 */ {(13<<2)|2,{58,65,0}}, +/* 47370 */ {(13<<2)|2,{58,65,0}}, +/* 47371 */ {(13<<2)|2,{58,65,0}}, +/* 47372 */ {(13<<2)|2,{58,65,0}}, +/* 47373 */ {(13<<2)|2,{58,65,0}}, +/* 47374 */ {(13<<2)|2,{58,65,0}}, +/* 47375 */ {(13<<2)|2,{58,65,0}}, +/* 47376 */ {(13<<2)|2,{58,95,0}}, +/* 47377 */ {(13<<2)|2,{58,95,0}}, +/* 47378 */ {(13<<2)|2,{58,95,0}}, +/* 47379 */ {(13<<2)|2,{58,95,0}}, +/* 47380 */ {(13<<2)|2,{58,95,0}}, +/* 47381 */ {(13<<2)|2,{58,95,0}}, +/* 47382 */ {(13<<2)|2,{58,95,0}}, +/* 47383 */ {(13<<2)|2,{58,95,0}}, +/* 47384 */ {(13<<2)|2,{58,98,0}}, +/* 47385 */ {(13<<2)|2,{58,98,0}}, +/* 47386 */ {(13<<2)|2,{58,98,0}}, +/* 47387 */ {(13<<2)|2,{58,98,0}}, +/* 47388 */ {(13<<2)|2,{58,98,0}}, +/* 47389 */ {(13<<2)|2,{58,98,0}}, +/* 47390 */ {(13<<2)|2,{58,98,0}}, +/* 47391 */ {(13<<2)|2,{58,98,0}}, +/* 47392 */ {(13<<2)|2,{58,100,0}}, +/* 47393 */ {(13<<2)|2,{58,100,0}}, +/* 47394 */ {(13<<2)|2,{58,100,0}}, +/* 47395 */ {(13<<2)|2,{58,100,0}}, +/* 47396 */ {(13<<2)|2,{58,100,0}}, +/* 47397 */ {(13<<2)|2,{58,100,0}}, +/* 47398 */ {(13<<2)|2,{58,100,0}}, +/* 47399 */ {(13<<2)|2,{58,100,0}}, +/* 47400 */ {(13<<2)|2,{58,102,0}}, +/* 47401 */ {(13<<2)|2,{58,102,0}}, +/* 47402 */ {(13<<2)|2,{58,102,0}}, +/* 47403 */ {(13<<2)|2,{58,102,0}}, +/* 47404 */ {(13<<2)|2,{58,102,0}}, +/* 47405 */ {(13<<2)|2,{58,102,0}}, +/* 47406 */ {(13<<2)|2,{58,102,0}}, +/* 47407 */ {(13<<2)|2,{58,102,0}}, +/* 47408 */ {(13<<2)|2,{58,103,0}}, +/* 47409 */ {(13<<2)|2,{58,103,0}}, +/* 47410 */ {(13<<2)|2,{58,103,0}}, +/* 47411 */ {(13<<2)|2,{58,103,0}}, +/* 47412 */ {(13<<2)|2,{58,103,0}}, +/* 47413 */ {(13<<2)|2,{58,103,0}}, +/* 47414 */ {(13<<2)|2,{58,103,0}}, +/* 47415 */ {(13<<2)|2,{58,103,0}}, +/* 47416 */ {(13<<2)|2,{58,104,0}}, +/* 47417 */ {(13<<2)|2,{58,104,0}}, +/* 47418 */ {(13<<2)|2,{58,104,0}}, +/* 47419 */ {(13<<2)|2,{58,104,0}}, +/* 47420 */ {(13<<2)|2,{58,104,0}}, +/* 47421 */ {(13<<2)|2,{58,104,0}}, +/* 47422 */ {(13<<2)|2,{58,104,0}}, +/* 47423 */ {(13<<2)|2,{58,104,0}}, +/* 47424 */ {(13<<2)|2,{58,108,0}}, +/* 47425 */ {(13<<2)|2,{58,108,0}}, +/* 47426 */ {(13<<2)|2,{58,108,0}}, +/* 47427 */ {(13<<2)|2,{58,108,0}}, +/* 47428 */ {(13<<2)|2,{58,108,0}}, +/* 47429 */ {(13<<2)|2,{58,108,0}}, +/* 47430 */ {(13<<2)|2,{58,108,0}}, +/* 47431 */ {(13<<2)|2,{58,108,0}}, +/* 47432 */ {(13<<2)|2,{58,109,0}}, +/* 47433 */ {(13<<2)|2,{58,109,0}}, +/* 47434 */ {(13<<2)|2,{58,109,0}}, +/* 47435 */ {(13<<2)|2,{58,109,0}}, +/* 47436 */ {(13<<2)|2,{58,109,0}}, +/* 47437 */ {(13<<2)|2,{58,109,0}}, +/* 47438 */ {(13<<2)|2,{58,109,0}}, +/* 47439 */ {(13<<2)|2,{58,109,0}}, +/* 47440 */ {(13<<2)|2,{58,110,0}}, +/* 47441 */ {(13<<2)|2,{58,110,0}}, +/* 47442 */ {(13<<2)|2,{58,110,0}}, +/* 47443 */ {(13<<2)|2,{58,110,0}}, +/* 47444 */ {(13<<2)|2,{58,110,0}}, +/* 47445 */ {(13<<2)|2,{58,110,0}}, +/* 47446 */ {(13<<2)|2,{58,110,0}}, +/* 47447 */ {(13<<2)|2,{58,110,0}}, +/* 47448 */ {(13<<2)|2,{58,112,0}}, +/* 47449 */ {(13<<2)|2,{58,112,0}}, +/* 47450 */ {(13<<2)|2,{58,112,0}}, +/* 47451 */ {(13<<2)|2,{58,112,0}}, +/* 47452 */ {(13<<2)|2,{58,112,0}}, +/* 47453 */ {(13<<2)|2,{58,112,0}}, +/* 47454 */ {(13<<2)|2,{58,112,0}}, +/* 47455 */ {(13<<2)|2,{58,112,0}}, +/* 47456 */ {(13<<2)|2,{58,114,0}}, +/* 47457 */ {(13<<2)|2,{58,114,0}}, +/* 47458 */ {(13<<2)|2,{58,114,0}}, +/* 47459 */ {(13<<2)|2,{58,114,0}}, +/* 47460 */ {(13<<2)|2,{58,114,0}}, +/* 47461 */ {(13<<2)|2,{58,114,0}}, +/* 47462 */ {(13<<2)|2,{58,114,0}}, +/* 47463 */ {(13<<2)|2,{58,114,0}}, +/* 47464 */ {(13<<2)|2,{58,117,0}}, +/* 47465 */ {(13<<2)|2,{58,117,0}}, +/* 47466 */ {(13<<2)|2,{58,117,0}}, +/* 47467 */ {(13<<2)|2,{58,117,0}}, +/* 47468 */ {(13<<2)|2,{58,117,0}}, +/* 47469 */ {(13<<2)|2,{58,117,0}}, +/* 47470 */ {(13<<2)|2,{58,117,0}}, +/* 47471 */ {(13<<2)|2,{58,117,0}}, +/* 47472 */ {(14<<2)|2,{58,58,0}}, +/* 47473 */ {(14<<2)|2,{58,58,0}}, +/* 47474 */ {(14<<2)|2,{58,58,0}}, +/* 47475 */ {(14<<2)|2,{58,58,0}}, +/* 47476 */ {(14<<2)|2,{58,66,0}}, +/* 47477 */ {(14<<2)|2,{58,66,0}}, +/* 47478 */ {(14<<2)|2,{58,66,0}}, +/* 47479 */ {(14<<2)|2,{58,66,0}}, +/* 47480 */ {(14<<2)|2,{58,67,0}}, +/* 47481 */ {(14<<2)|2,{58,67,0}}, +/* 47482 */ {(14<<2)|2,{58,67,0}}, +/* 47483 */ {(14<<2)|2,{58,67,0}}, +/* 47484 */ {(14<<2)|2,{58,68,0}}, +/* 47485 */ {(14<<2)|2,{58,68,0}}, +/* 47486 */ {(14<<2)|2,{58,68,0}}, +/* 47487 */ {(14<<2)|2,{58,68,0}}, +/* 47488 */ {(14<<2)|2,{58,69,0}}, +/* 47489 */ {(14<<2)|2,{58,69,0}}, +/* 47490 */ {(14<<2)|2,{58,69,0}}, +/* 47491 */ {(14<<2)|2,{58,69,0}}, +/* 47492 */ {(14<<2)|2,{58,70,0}}, +/* 47493 */ {(14<<2)|2,{58,70,0}}, +/* 47494 */ {(14<<2)|2,{58,70,0}}, +/* 47495 */ {(14<<2)|2,{58,70,0}}, +/* 47496 */ {(14<<2)|2,{58,71,0}}, +/* 47497 */ {(14<<2)|2,{58,71,0}}, +/* 47498 */ {(14<<2)|2,{58,71,0}}, +/* 47499 */ {(14<<2)|2,{58,71,0}}, +/* 47500 */ {(14<<2)|2,{58,72,0}}, +/* 47501 */ {(14<<2)|2,{58,72,0}}, +/* 47502 */ {(14<<2)|2,{58,72,0}}, +/* 47503 */ {(14<<2)|2,{58,72,0}}, +/* 47504 */ {(14<<2)|2,{58,73,0}}, +/* 47505 */ {(14<<2)|2,{58,73,0}}, +/* 47506 */ {(14<<2)|2,{58,73,0}}, +/* 47507 */ {(14<<2)|2,{58,73,0}}, +/* 47508 */ {(14<<2)|2,{58,74,0}}, +/* 47509 */ {(14<<2)|2,{58,74,0}}, +/* 47510 */ {(14<<2)|2,{58,74,0}}, +/* 47511 */ {(14<<2)|2,{58,74,0}}, +/* 47512 */ {(14<<2)|2,{58,75,0}}, +/* 47513 */ {(14<<2)|2,{58,75,0}}, +/* 47514 */ {(14<<2)|2,{58,75,0}}, +/* 47515 */ {(14<<2)|2,{58,75,0}}, +/* 47516 */ {(14<<2)|2,{58,76,0}}, +/* 47517 */ {(14<<2)|2,{58,76,0}}, +/* 47518 */ {(14<<2)|2,{58,76,0}}, +/* 47519 */ {(14<<2)|2,{58,76,0}}, +/* 47520 */ {(14<<2)|2,{58,77,0}}, +/* 47521 */ {(14<<2)|2,{58,77,0}}, +/* 47522 */ {(14<<2)|2,{58,77,0}}, +/* 47523 */ {(14<<2)|2,{58,77,0}}, +/* 47524 */ {(14<<2)|2,{58,78,0}}, +/* 47525 */ {(14<<2)|2,{58,78,0}}, +/* 47526 */ {(14<<2)|2,{58,78,0}}, +/* 47527 */ {(14<<2)|2,{58,78,0}}, +/* 47528 */ {(14<<2)|2,{58,79,0}}, +/* 47529 */ {(14<<2)|2,{58,79,0}}, +/* 47530 */ {(14<<2)|2,{58,79,0}}, +/* 47531 */ {(14<<2)|2,{58,79,0}}, +/* 47532 */ {(14<<2)|2,{58,80,0}}, +/* 47533 */ {(14<<2)|2,{58,80,0}}, +/* 47534 */ {(14<<2)|2,{58,80,0}}, +/* 47535 */ {(14<<2)|2,{58,80,0}}, +/* 47536 */ {(14<<2)|2,{58,81,0}}, +/* 47537 */ {(14<<2)|2,{58,81,0}}, +/* 47538 */ {(14<<2)|2,{58,81,0}}, +/* 47539 */ {(14<<2)|2,{58,81,0}}, +/* 47540 */ {(14<<2)|2,{58,82,0}}, +/* 47541 */ {(14<<2)|2,{58,82,0}}, +/* 47542 */ {(14<<2)|2,{58,82,0}}, +/* 47543 */ {(14<<2)|2,{58,82,0}}, +/* 47544 */ {(14<<2)|2,{58,83,0}}, +/* 47545 */ {(14<<2)|2,{58,83,0}}, +/* 47546 */ {(14<<2)|2,{58,83,0}}, +/* 47547 */ {(14<<2)|2,{58,83,0}}, +/* 47548 */ {(14<<2)|2,{58,84,0}}, +/* 47549 */ {(14<<2)|2,{58,84,0}}, +/* 47550 */ {(14<<2)|2,{58,84,0}}, +/* 47551 */ {(14<<2)|2,{58,84,0}}, +/* 47552 */ {(14<<2)|2,{58,85,0}}, +/* 47553 */ {(14<<2)|2,{58,85,0}}, +/* 47554 */ {(14<<2)|2,{58,85,0}}, +/* 47555 */ {(14<<2)|2,{58,85,0}}, +/* 47556 */ {(14<<2)|2,{58,86,0}}, +/* 47557 */ {(14<<2)|2,{58,86,0}}, +/* 47558 */ {(14<<2)|2,{58,86,0}}, +/* 47559 */ {(14<<2)|2,{58,86,0}}, +/* 47560 */ {(14<<2)|2,{58,87,0}}, +/* 47561 */ {(14<<2)|2,{58,87,0}}, +/* 47562 */ {(14<<2)|2,{58,87,0}}, +/* 47563 */ {(14<<2)|2,{58,87,0}}, +/* 47564 */ {(14<<2)|2,{58,89,0}}, +/* 47565 */ {(14<<2)|2,{58,89,0}}, +/* 47566 */ {(14<<2)|2,{58,89,0}}, +/* 47567 */ {(14<<2)|2,{58,89,0}}, +/* 47568 */ {(14<<2)|2,{58,106,0}}, +/* 47569 */ {(14<<2)|2,{58,106,0}}, +/* 47570 */ {(14<<2)|2,{58,106,0}}, +/* 47571 */ {(14<<2)|2,{58,106,0}}, +/* 47572 */ {(14<<2)|2,{58,107,0}}, +/* 47573 */ {(14<<2)|2,{58,107,0}}, +/* 47574 */ {(14<<2)|2,{58,107,0}}, +/* 47575 */ {(14<<2)|2,{58,107,0}}, +/* 47576 */ {(14<<2)|2,{58,113,0}}, +/* 47577 */ {(14<<2)|2,{58,113,0}}, +/* 47578 */ {(14<<2)|2,{58,113,0}}, +/* 47579 */ {(14<<2)|2,{58,113,0}}, +/* 47580 */ {(14<<2)|2,{58,118,0}}, +/* 47581 */ {(14<<2)|2,{58,118,0}}, +/* 47582 */ {(14<<2)|2,{58,118,0}}, +/* 47583 */ {(14<<2)|2,{58,118,0}}, +/* 47584 */ {(14<<2)|2,{58,119,0}}, +/* 47585 */ {(14<<2)|2,{58,119,0}}, +/* 47586 */ {(14<<2)|2,{58,119,0}}, +/* 47587 */ {(14<<2)|2,{58,119,0}}, +/* 47588 */ {(14<<2)|2,{58,120,0}}, +/* 47589 */ {(14<<2)|2,{58,120,0}}, +/* 47590 */ {(14<<2)|2,{58,120,0}}, +/* 47591 */ {(14<<2)|2,{58,120,0}}, +/* 47592 */ {(14<<2)|2,{58,121,0}}, +/* 47593 */ {(14<<2)|2,{58,121,0}}, +/* 47594 */ {(14<<2)|2,{58,121,0}}, +/* 47595 */ {(14<<2)|2,{58,121,0}}, +/* 47596 */ {(14<<2)|2,{58,122,0}}, +/* 47597 */ {(14<<2)|2,{58,122,0}}, +/* 47598 */ {(14<<2)|2,{58,122,0}}, +/* 47599 */ {(14<<2)|2,{58,122,0}}, +/* 47600 */ {(15<<2)|2,{58,38,0}}, +/* 47601 */ {(15<<2)|2,{58,38,0}}, +/* 47602 */ {(15<<2)|2,{58,42,0}}, +/* 47603 */ {(15<<2)|2,{58,42,0}}, +/* 47604 */ {(15<<2)|2,{58,44,0}}, +/* 47605 */ {(15<<2)|2,{58,44,0}}, +/* 47606 */ {(15<<2)|2,{58,59,0}}, +/* 47607 */ {(15<<2)|2,{58,59,0}}, +/* 47608 */ {(15<<2)|2,{58,88,0}}, +/* 47609 */ {(15<<2)|2,{58,88,0}}, +/* 47610 */ {(15<<2)|2,{58,90,0}}, +/* 47611 */ {(15<<2)|2,{58,90,0}}, +/* 47612 */ {(7<<2)|1,{58,0,0}}, +/* 47613 */ {(7<<2)|1,{58,0,0}}, +/* 47614 */ {(7<<2)|1,{58,0,0}}, +/* 47615 */ {(7<<2)|1,{58,0,0}}, +/* 47616 */ {(12<<2)|2,{66,48,0}}, +/* 47617 */ {(12<<2)|2,{66,48,0}}, +/* 47618 */ {(12<<2)|2,{66,48,0}}, +/* 47619 */ {(12<<2)|2,{66,48,0}}, +/* 47620 */ {(12<<2)|2,{66,48,0}}, +/* 47621 */ {(12<<2)|2,{66,48,0}}, +/* 47622 */ {(12<<2)|2,{66,48,0}}, +/* 47623 */ {(12<<2)|2,{66,48,0}}, +/* 47624 */ {(12<<2)|2,{66,48,0}}, +/* 47625 */ {(12<<2)|2,{66,48,0}}, +/* 47626 */ {(12<<2)|2,{66,48,0}}, +/* 47627 */ {(12<<2)|2,{66,48,0}}, +/* 47628 */ {(12<<2)|2,{66,48,0}}, +/* 47629 */ {(12<<2)|2,{66,48,0}}, +/* 47630 */ {(12<<2)|2,{66,48,0}}, +/* 47631 */ {(12<<2)|2,{66,48,0}}, +/* 47632 */ {(12<<2)|2,{66,49,0}}, +/* 47633 */ {(12<<2)|2,{66,49,0}}, +/* 47634 */ {(12<<2)|2,{66,49,0}}, +/* 47635 */ {(12<<2)|2,{66,49,0}}, +/* 47636 */ {(12<<2)|2,{66,49,0}}, +/* 47637 */ {(12<<2)|2,{66,49,0}}, +/* 47638 */ {(12<<2)|2,{66,49,0}}, +/* 47639 */ {(12<<2)|2,{66,49,0}}, +/* 47640 */ {(12<<2)|2,{66,49,0}}, +/* 47641 */ {(12<<2)|2,{66,49,0}}, +/* 47642 */ {(12<<2)|2,{66,49,0}}, +/* 47643 */ {(12<<2)|2,{66,49,0}}, +/* 47644 */ {(12<<2)|2,{66,49,0}}, +/* 47645 */ {(12<<2)|2,{66,49,0}}, +/* 47646 */ {(12<<2)|2,{66,49,0}}, +/* 47647 */ {(12<<2)|2,{66,49,0}}, +/* 47648 */ {(12<<2)|2,{66,50,0}}, +/* 47649 */ {(12<<2)|2,{66,50,0}}, +/* 47650 */ {(12<<2)|2,{66,50,0}}, +/* 47651 */ {(12<<2)|2,{66,50,0}}, +/* 47652 */ {(12<<2)|2,{66,50,0}}, +/* 47653 */ {(12<<2)|2,{66,50,0}}, +/* 47654 */ {(12<<2)|2,{66,50,0}}, +/* 47655 */ {(12<<2)|2,{66,50,0}}, +/* 47656 */ {(12<<2)|2,{66,50,0}}, +/* 47657 */ {(12<<2)|2,{66,50,0}}, +/* 47658 */ {(12<<2)|2,{66,50,0}}, +/* 47659 */ {(12<<2)|2,{66,50,0}}, +/* 47660 */ {(12<<2)|2,{66,50,0}}, +/* 47661 */ {(12<<2)|2,{66,50,0}}, +/* 47662 */ {(12<<2)|2,{66,50,0}}, +/* 47663 */ {(12<<2)|2,{66,50,0}}, +/* 47664 */ {(12<<2)|2,{66,97,0}}, +/* 47665 */ {(12<<2)|2,{66,97,0}}, +/* 47666 */ {(12<<2)|2,{66,97,0}}, +/* 47667 */ {(12<<2)|2,{66,97,0}}, +/* 47668 */ {(12<<2)|2,{66,97,0}}, +/* 47669 */ {(12<<2)|2,{66,97,0}}, +/* 47670 */ {(12<<2)|2,{66,97,0}}, +/* 47671 */ {(12<<2)|2,{66,97,0}}, +/* 47672 */ {(12<<2)|2,{66,97,0}}, +/* 47673 */ {(12<<2)|2,{66,97,0}}, +/* 47674 */ {(12<<2)|2,{66,97,0}}, +/* 47675 */ {(12<<2)|2,{66,97,0}}, +/* 47676 */ {(12<<2)|2,{66,97,0}}, +/* 47677 */ {(12<<2)|2,{66,97,0}}, +/* 47678 */ {(12<<2)|2,{66,97,0}}, +/* 47679 */ {(12<<2)|2,{66,97,0}}, +/* 47680 */ {(12<<2)|2,{66,99,0}}, +/* 47681 */ {(12<<2)|2,{66,99,0}}, +/* 47682 */ {(12<<2)|2,{66,99,0}}, +/* 47683 */ {(12<<2)|2,{66,99,0}}, +/* 47684 */ {(12<<2)|2,{66,99,0}}, +/* 47685 */ {(12<<2)|2,{66,99,0}}, +/* 47686 */ {(12<<2)|2,{66,99,0}}, +/* 47687 */ {(12<<2)|2,{66,99,0}}, +/* 47688 */ {(12<<2)|2,{66,99,0}}, +/* 47689 */ {(12<<2)|2,{66,99,0}}, +/* 47690 */ {(12<<2)|2,{66,99,0}}, +/* 47691 */ {(12<<2)|2,{66,99,0}}, +/* 47692 */ {(12<<2)|2,{66,99,0}}, +/* 47693 */ {(12<<2)|2,{66,99,0}}, +/* 47694 */ {(12<<2)|2,{66,99,0}}, +/* 47695 */ {(12<<2)|2,{66,99,0}}, +/* 47696 */ {(12<<2)|2,{66,101,0}}, +/* 47697 */ {(12<<2)|2,{66,101,0}}, +/* 47698 */ {(12<<2)|2,{66,101,0}}, +/* 47699 */ {(12<<2)|2,{66,101,0}}, +/* 47700 */ {(12<<2)|2,{66,101,0}}, +/* 47701 */ {(12<<2)|2,{66,101,0}}, +/* 47702 */ {(12<<2)|2,{66,101,0}}, +/* 47703 */ {(12<<2)|2,{66,101,0}}, +/* 47704 */ {(12<<2)|2,{66,101,0}}, +/* 47705 */ {(12<<2)|2,{66,101,0}}, +/* 47706 */ {(12<<2)|2,{66,101,0}}, +/* 47707 */ {(12<<2)|2,{66,101,0}}, +/* 47708 */ {(12<<2)|2,{66,101,0}}, +/* 47709 */ {(12<<2)|2,{66,101,0}}, +/* 47710 */ {(12<<2)|2,{66,101,0}}, +/* 47711 */ {(12<<2)|2,{66,101,0}}, +/* 47712 */ {(12<<2)|2,{66,105,0}}, +/* 47713 */ {(12<<2)|2,{66,105,0}}, +/* 47714 */ {(12<<2)|2,{66,105,0}}, +/* 47715 */ {(12<<2)|2,{66,105,0}}, +/* 47716 */ {(12<<2)|2,{66,105,0}}, +/* 47717 */ {(12<<2)|2,{66,105,0}}, +/* 47718 */ {(12<<2)|2,{66,105,0}}, +/* 47719 */ {(12<<2)|2,{66,105,0}}, +/* 47720 */ {(12<<2)|2,{66,105,0}}, +/* 47721 */ {(12<<2)|2,{66,105,0}}, +/* 47722 */ {(12<<2)|2,{66,105,0}}, +/* 47723 */ {(12<<2)|2,{66,105,0}}, +/* 47724 */ {(12<<2)|2,{66,105,0}}, +/* 47725 */ {(12<<2)|2,{66,105,0}}, +/* 47726 */ {(12<<2)|2,{66,105,0}}, +/* 47727 */ {(12<<2)|2,{66,105,0}}, +/* 47728 */ {(12<<2)|2,{66,111,0}}, +/* 47729 */ {(12<<2)|2,{66,111,0}}, +/* 47730 */ {(12<<2)|2,{66,111,0}}, +/* 47731 */ {(12<<2)|2,{66,111,0}}, +/* 47732 */ {(12<<2)|2,{66,111,0}}, +/* 47733 */ {(12<<2)|2,{66,111,0}}, +/* 47734 */ {(12<<2)|2,{66,111,0}}, +/* 47735 */ {(12<<2)|2,{66,111,0}}, +/* 47736 */ {(12<<2)|2,{66,111,0}}, +/* 47737 */ {(12<<2)|2,{66,111,0}}, +/* 47738 */ {(12<<2)|2,{66,111,0}}, +/* 47739 */ {(12<<2)|2,{66,111,0}}, +/* 47740 */ {(12<<2)|2,{66,111,0}}, +/* 47741 */ {(12<<2)|2,{66,111,0}}, +/* 47742 */ {(12<<2)|2,{66,111,0}}, +/* 47743 */ {(12<<2)|2,{66,111,0}}, +/* 47744 */ {(12<<2)|2,{66,115,0}}, +/* 47745 */ {(12<<2)|2,{66,115,0}}, +/* 47746 */ {(12<<2)|2,{66,115,0}}, +/* 47747 */ {(12<<2)|2,{66,115,0}}, +/* 47748 */ {(12<<2)|2,{66,115,0}}, +/* 47749 */ {(12<<2)|2,{66,115,0}}, +/* 47750 */ {(12<<2)|2,{66,115,0}}, +/* 47751 */ {(12<<2)|2,{66,115,0}}, +/* 47752 */ {(12<<2)|2,{66,115,0}}, +/* 47753 */ {(12<<2)|2,{66,115,0}}, +/* 47754 */ {(12<<2)|2,{66,115,0}}, +/* 47755 */ {(12<<2)|2,{66,115,0}}, +/* 47756 */ {(12<<2)|2,{66,115,0}}, +/* 47757 */ {(12<<2)|2,{66,115,0}}, +/* 47758 */ {(12<<2)|2,{66,115,0}}, +/* 47759 */ {(12<<2)|2,{66,115,0}}, +/* 47760 */ {(12<<2)|2,{66,116,0}}, +/* 47761 */ {(12<<2)|2,{66,116,0}}, +/* 47762 */ {(12<<2)|2,{66,116,0}}, +/* 47763 */ {(12<<2)|2,{66,116,0}}, +/* 47764 */ {(12<<2)|2,{66,116,0}}, +/* 47765 */ {(12<<2)|2,{66,116,0}}, +/* 47766 */ {(12<<2)|2,{66,116,0}}, +/* 47767 */ {(12<<2)|2,{66,116,0}}, +/* 47768 */ {(12<<2)|2,{66,116,0}}, +/* 47769 */ {(12<<2)|2,{66,116,0}}, +/* 47770 */ {(12<<2)|2,{66,116,0}}, +/* 47771 */ {(12<<2)|2,{66,116,0}}, +/* 47772 */ {(12<<2)|2,{66,116,0}}, +/* 47773 */ {(12<<2)|2,{66,116,0}}, +/* 47774 */ {(12<<2)|2,{66,116,0}}, +/* 47775 */ {(12<<2)|2,{66,116,0}}, +/* 47776 */ {(13<<2)|2,{66,32,0}}, +/* 47777 */ {(13<<2)|2,{66,32,0}}, +/* 47778 */ {(13<<2)|2,{66,32,0}}, +/* 47779 */ {(13<<2)|2,{66,32,0}}, +/* 47780 */ {(13<<2)|2,{66,32,0}}, +/* 47781 */ {(13<<2)|2,{66,32,0}}, +/* 47782 */ {(13<<2)|2,{66,32,0}}, +/* 47783 */ {(13<<2)|2,{66,32,0}}, +/* 47784 */ {(13<<2)|2,{66,37,0}}, +/* 47785 */ {(13<<2)|2,{66,37,0}}, +/* 47786 */ {(13<<2)|2,{66,37,0}}, +/* 47787 */ {(13<<2)|2,{66,37,0}}, +/* 47788 */ {(13<<2)|2,{66,37,0}}, +/* 47789 */ {(13<<2)|2,{66,37,0}}, +/* 47790 */ {(13<<2)|2,{66,37,0}}, +/* 47791 */ {(13<<2)|2,{66,37,0}}, +/* 47792 */ {(13<<2)|2,{66,45,0}}, +/* 47793 */ {(13<<2)|2,{66,45,0}}, +/* 47794 */ {(13<<2)|2,{66,45,0}}, +/* 47795 */ {(13<<2)|2,{66,45,0}}, +/* 47796 */ {(13<<2)|2,{66,45,0}}, +/* 47797 */ {(13<<2)|2,{66,45,0}}, +/* 47798 */ {(13<<2)|2,{66,45,0}}, +/* 47799 */ {(13<<2)|2,{66,45,0}}, +/* 47800 */ {(13<<2)|2,{66,46,0}}, +/* 47801 */ {(13<<2)|2,{66,46,0}}, +/* 47802 */ {(13<<2)|2,{66,46,0}}, +/* 47803 */ {(13<<2)|2,{66,46,0}}, +/* 47804 */ {(13<<2)|2,{66,46,0}}, +/* 47805 */ {(13<<2)|2,{66,46,0}}, +/* 47806 */ {(13<<2)|2,{66,46,0}}, +/* 47807 */ {(13<<2)|2,{66,46,0}}, +/* 47808 */ {(13<<2)|2,{66,47,0}}, +/* 47809 */ {(13<<2)|2,{66,47,0}}, +/* 47810 */ {(13<<2)|2,{66,47,0}}, +/* 47811 */ {(13<<2)|2,{66,47,0}}, +/* 47812 */ {(13<<2)|2,{66,47,0}}, +/* 47813 */ {(13<<2)|2,{66,47,0}}, +/* 47814 */ {(13<<2)|2,{66,47,0}}, +/* 47815 */ {(13<<2)|2,{66,47,0}}, +/* 47816 */ {(13<<2)|2,{66,51,0}}, +/* 47817 */ {(13<<2)|2,{66,51,0}}, +/* 47818 */ {(13<<2)|2,{66,51,0}}, +/* 47819 */ {(13<<2)|2,{66,51,0}}, +/* 47820 */ {(13<<2)|2,{66,51,0}}, +/* 47821 */ {(13<<2)|2,{66,51,0}}, +/* 47822 */ {(13<<2)|2,{66,51,0}}, +/* 47823 */ {(13<<2)|2,{66,51,0}}, +/* 47824 */ {(13<<2)|2,{66,52,0}}, +/* 47825 */ {(13<<2)|2,{66,52,0}}, +/* 47826 */ {(13<<2)|2,{66,52,0}}, +/* 47827 */ {(13<<2)|2,{66,52,0}}, +/* 47828 */ {(13<<2)|2,{66,52,0}}, +/* 47829 */ {(13<<2)|2,{66,52,0}}, +/* 47830 */ {(13<<2)|2,{66,52,0}}, +/* 47831 */ {(13<<2)|2,{66,52,0}}, +/* 47832 */ {(13<<2)|2,{66,53,0}}, +/* 47833 */ {(13<<2)|2,{66,53,0}}, +/* 47834 */ {(13<<2)|2,{66,53,0}}, +/* 47835 */ {(13<<2)|2,{66,53,0}}, +/* 47836 */ {(13<<2)|2,{66,53,0}}, +/* 47837 */ {(13<<2)|2,{66,53,0}}, +/* 47838 */ {(13<<2)|2,{66,53,0}}, +/* 47839 */ {(13<<2)|2,{66,53,0}}, +/* 47840 */ {(13<<2)|2,{66,54,0}}, +/* 47841 */ {(13<<2)|2,{66,54,0}}, +/* 47842 */ {(13<<2)|2,{66,54,0}}, +/* 47843 */ {(13<<2)|2,{66,54,0}}, +/* 47844 */ {(13<<2)|2,{66,54,0}}, +/* 47845 */ {(13<<2)|2,{66,54,0}}, +/* 47846 */ {(13<<2)|2,{66,54,0}}, +/* 47847 */ {(13<<2)|2,{66,54,0}}, +/* 47848 */ {(13<<2)|2,{66,55,0}}, +/* 47849 */ {(13<<2)|2,{66,55,0}}, +/* 47850 */ {(13<<2)|2,{66,55,0}}, +/* 47851 */ {(13<<2)|2,{66,55,0}}, +/* 47852 */ {(13<<2)|2,{66,55,0}}, +/* 47853 */ {(13<<2)|2,{66,55,0}}, +/* 47854 */ {(13<<2)|2,{66,55,0}}, +/* 47855 */ {(13<<2)|2,{66,55,0}}, +/* 47856 */ {(13<<2)|2,{66,56,0}}, +/* 47857 */ {(13<<2)|2,{66,56,0}}, +/* 47858 */ {(13<<2)|2,{66,56,0}}, +/* 47859 */ {(13<<2)|2,{66,56,0}}, +/* 47860 */ {(13<<2)|2,{66,56,0}}, +/* 47861 */ {(13<<2)|2,{66,56,0}}, +/* 47862 */ {(13<<2)|2,{66,56,0}}, +/* 47863 */ {(13<<2)|2,{66,56,0}}, +/* 47864 */ {(13<<2)|2,{66,57,0}}, +/* 47865 */ {(13<<2)|2,{66,57,0}}, +/* 47866 */ {(13<<2)|2,{66,57,0}}, +/* 47867 */ {(13<<2)|2,{66,57,0}}, +/* 47868 */ {(13<<2)|2,{66,57,0}}, +/* 47869 */ {(13<<2)|2,{66,57,0}}, +/* 47870 */ {(13<<2)|2,{66,57,0}}, +/* 47871 */ {(13<<2)|2,{66,57,0}}, +/* 47872 */ {(13<<2)|2,{66,61,0}}, +/* 47873 */ {(13<<2)|2,{66,61,0}}, +/* 47874 */ {(13<<2)|2,{66,61,0}}, +/* 47875 */ {(13<<2)|2,{66,61,0}}, +/* 47876 */ {(13<<2)|2,{66,61,0}}, +/* 47877 */ {(13<<2)|2,{66,61,0}}, +/* 47878 */ {(13<<2)|2,{66,61,0}}, +/* 47879 */ {(13<<2)|2,{66,61,0}}, +/* 47880 */ {(13<<2)|2,{66,65,0}}, +/* 47881 */ {(13<<2)|2,{66,65,0}}, +/* 47882 */ {(13<<2)|2,{66,65,0}}, +/* 47883 */ {(13<<2)|2,{66,65,0}}, +/* 47884 */ {(13<<2)|2,{66,65,0}}, +/* 47885 */ {(13<<2)|2,{66,65,0}}, +/* 47886 */ {(13<<2)|2,{66,65,0}}, +/* 47887 */ {(13<<2)|2,{66,65,0}}, +/* 47888 */ {(13<<2)|2,{66,95,0}}, +/* 47889 */ {(13<<2)|2,{66,95,0}}, +/* 47890 */ {(13<<2)|2,{66,95,0}}, +/* 47891 */ {(13<<2)|2,{66,95,0}}, +/* 47892 */ {(13<<2)|2,{66,95,0}}, +/* 47893 */ {(13<<2)|2,{66,95,0}}, +/* 47894 */ {(13<<2)|2,{66,95,0}}, +/* 47895 */ {(13<<2)|2,{66,95,0}}, +/* 47896 */ {(13<<2)|2,{66,98,0}}, +/* 47897 */ {(13<<2)|2,{66,98,0}}, +/* 47898 */ {(13<<2)|2,{66,98,0}}, +/* 47899 */ {(13<<2)|2,{66,98,0}}, +/* 47900 */ {(13<<2)|2,{66,98,0}}, +/* 47901 */ {(13<<2)|2,{66,98,0}}, +/* 47902 */ {(13<<2)|2,{66,98,0}}, +/* 47903 */ {(13<<2)|2,{66,98,0}}, +/* 47904 */ {(13<<2)|2,{66,100,0}}, +/* 47905 */ {(13<<2)|2,{66,100,0}}, +/* 47906 */ {(13<<2)|2,{66,100,0}}, +/* 47907 */ {(13<<2)|2,{66,100,0}}, +/* 47908 */ {(13<<2)|2,{66,100,0}}, +/* 47909 */ {(13<<2)|2,{66,100,0}}, +/* 47910 */ {(13<<2)|2,{66,100,0}}, +/* 47911 */ {(13<<2)|2,{66,100,0}}, +/* 47912 */ {(13<<2)|2,{66,102,0}}, +/* 47913 */ {(13<<2)|2,{66,102,0}}, +/* 47914 */ {(13<<2)|2,{66,102,0}}, +/* 47915 */ {(13<<2)|2,{66,102,0}}, +/* 47916 */ {(13<<2)|2,{66,102,0}}, +/* 47917 */ {(13<<2)|2,{66,102,0}}, +/* 47918 */ {(13<<2)|2,{66,102,0}}, +/* 47919 */ {(13<<2)|2,{66,102,0}}, +/* 47920 */ {(13<<2)|2,{66,103,0}}, +/* 47921 */ {(13<<2)|2,{66,103,0}}, +/* 47922 */ {(13<<2)|2,{66,103,0}}, +/* 47923 */ {(13<<2)|2,{66,103,0}}, +/* 47924 */ {(13<<2)|2,{66,103,0}}, +/* 47925 */ {(13<<2)|2,{66,103,0}}, +/* 47926 */ {(13<<2)|2,{66,103,0}}, +/* 47927 */ {(13<<2)|2,{66,103,0}}, +/* 47928 */ {(13<<2)|2,{66,104,0}}, +/* 47929 */ {(13<<2)|2,{66,104,0}}, +/* 47930 */ {(13<<2)|2,{66,104,0}}, +/* 47931 */ {(13<<2)|2,{66,104,0}}, +/* 47932 */ {(13<<2)|2,{66,104,0}}, +/* 47933 */ {(13<<2)|2,{66,104,0}}, +/* 47934 */ {(13<<2)|2,{66,104,0}}, +/* 47935 */ {(13<<2)|2,{66,104,0}}, +/* 47936 */ {(13<<2)|2,{66,108,0}}, +/* 47937 */ {(13<<2)|2,{66,108,0}}, +/* 47938 */ {(13<<2)|2,{66,108,0}}, +/* 47939 */ {(13<<2)|2,{66,108,0}}, +/* 47940 */ {(13<<2)|2,{66,108,0}}, +/* 47941 */ {(13<<2)|2,{66,108,0}}, +/* 47942 */ {(13<<2)|2,{66,108,0}}, +/* 47943 */ {(13<<2)|2,{66,108,0}}, +/* 47944 */ {(13<<2)|2,{66,109,0}}, +/* 47945 */ {(13<<2)|2,{66,109,0}}, +/* 47946 */ {(13<<2)|2,{66,109,0}}, +/* 47947 */ {(13<<2)|2,{66,109,0}}, +/* 47948 */ {(13<<2)|2,{66,109,0}}, +/* 47949 */ {(13<<2)|2,{66,109,0}}, +/* 47950 */ {(13<<2)|2,{66,109,0}}, +/* 47951 */ {(13<<2)|2,{66,109,0}}, +/* 47952 */ {(13<<2)|2,{66,110,0}}, +/* 47953 */ {(13<<2)|2,{66,110,0}}, +/* 47954 */ {(13<<2)|2,{66,110,0}}, +/* 47955 */ {(13<<2)|2,{66,110,0}}, +/* 47956 */ {(13<<2)|2,{66,110,0}}, +/* 47957 */ {(13<<2)|2,{66,110,0}}, +/* 47958 */ {(13<<2)|2,{66,110,0}}, +/* 47959 */ {(13<<2)|2,{66,110,0}}, +/* 47960 */ {(13<<2)|2,{66,112,0}}, +/* 47961 */ {(13<<2)|2,{66,112,0}}, +/* 47962 */ {(13<<2)|2,{66,112,0}}, +/* 47963 */ {(13<<2)|2,{66,112,0}}, +/* 47964 */ {(13<<2)|2,{66,112,0}}, +/* 47965 */ {(13<<2)|2,{66,112,0}}, +/* 47966 */ {(13<<2)|2,{66,112,0}}, +/* 47967 */ {(13<<2)|2,{66,112,0}}, +/* 47968 */ {(13<<2)|2,{66,114,0}}, +/* 47969 */ {(13<<2)|2,{66,114,0}}, +/* 47970 */ {(13<<2)|2,{66,114,0}}, +/* 47971 */ {(13<<2)|2,{66,114,0}}, +/* 47972 */ {(13<<2)|2,{66,114,0}}, +/* 47973 */ {(13<<2)|2,{66,114,0}}, +/* 47974 */ {(13<<2)|2,{66,114,0}}, +/* 47975 */ {(13<<2)|2,{66,114,0}}, +/* 47976 */ {(13<<2)|2,{66,117,0}}, +/* 47977 */ {(13<<2)|2,{66,117,0}}, +/* 47978 */ {(13<<2)|2,{66,117,0}}, +/* 47979 */ {(13<<2)|2,{66,117,0}}, +/* 47980 */ {(13<<2)|2,{66,117,0}}, +/* 47981 */ {(13<<2)|2,{66,117,0}}, +/* 47982 */ {(13<<2)|2,{66,117,0}}, +/* 47983 */ {(13<<2)|2,{66,117,0}}, +/* 47984 */ {(14<<2)|2,{66,58,0}}, +/* 47985 */ {(14<<2)|2,{66,58,0}}, +/* 47986 */ {(14<<2)|2,{66,58,0}}, +/* 47987 */ {(14<<2)|2,{66,58,0}}, +/* 47988 */ {(14<<2)|2,{66,66,0}}, +/* 47989 */ {(14<<2)|2,{66,66,0}}, +/* 47990 */ {(14<<2)|2,{66,66,0}}, +/* 47991 */ {(14<<2)|2,{66,66,0}}, +/* 47992 */ {(14<<2)|2,{66,67,0}}, +/* 47993 */ {(14<<2)|2,{66,67,0}}, +/* 47994 */ {(14<<2)|2,{66,67,0}}, +/* 47995 */ {(14<<2)|2,{66,67,0}}, +/* 47996 */ {(14<<2)|2,{66,68,0}}, +/* 47997 */ {(14<<2)|2,{66,68,0}}, +/* 47998 */ {(14<<2)|2,{66,68,0}}, +/* 47999 */ {(14<<2)|2,{66,68,0}}, +/* 48000 */ {(14<<2)|2,{66,69,0}}, +/* 48001 */ {(14<<2)|2,{66,69,0}}, +/* 48002 */ {(14<<2)|2,{66,69,0}}, +/* 48003 */ {(14<<2)|2,{66,69,0}}, +/* 48004 */ {(14<<2)|2,{66,70,0}}, +/* 48005 */ {(14<<2)|2,{66,70,0}}, +/* 48006 */ {(14<<2)|2,{66,70,0}}, +/* 48007 */ {(14<<2)|2,{66,70,0}}, +/* 48008 */ {(14<<2)|2,{66,71,0}}, +/* 48009 */ {(14<<2)|2,{66,71,0}}, +/* 48010 */ {(14<<2)|2,{66,71,0}}, +/* 48011 */ {(14<<2)|2,{66,71,0}}, +/* 48012 */ {(14<<2)|2,{66,72,0}}, +/* 48013 */ {(14<<2)|2,{66,72,0}}, +/* 48014 */ {(14<<2)|2,{66,72,0}}, +/* 48015 */ {(14<<2)|2,{66,72,0}}, +/* 48016 */ {(14<<2)|2,{66,73,0}}, +/* 48017 */ {(14<<2)|2,{66,73,0}}, +/* 48018 */ {(14<<2)|2,{66,73,0}}, +/* 48019 */ {(14<<2)|2,{66,73,0}}, +/* 48020 */ {(14<<2)|2,{66,74,0}}, +/* 48021 */ {(14<<2)|2,{66,74,0}}, +/* 48022 */ {(14<<2)|2,{66,74,0}}, +/* 48023 */ {(14<<2)|2,{66,74,0}}, +/* 48024 */ {(14<<2)|2,{66,75,0}}, +/* 48025 */ {(14<<2)|2,{66,75,0}}, +/* 48026 */ {(14<<2)|2,{66,75,0}}, +/* 48027 */ {(14<<2)|2,{66,75,0}}, +/* 48028 */ {(14<<2)|2,{66,76,0}}, +/* 48029 */ {(14<<2)|2,{66,76,0}}, +/* 48030 */ {(14<<2)|2,{66,76,0}}, +/* 48031 */ {(14<<2)|2,{66,76,0}}, +/* 48032 */ {(14<<2)|2,{66,77,0}}, +/* 48033 */ {(14<<2)|2,{66,77,0}}, +/* 48034 */ {(14<<2)|2,{66,77,0}}, +/* 48035 */ {(14<<2)|2,{66,77,0}}, +/* 48036 */ {(14<<2)|2,{66,78,0}}, +/* 48037 */ {(14<<2)|2,{66,78,0}}, +/* 48038 */ {(14<<2)|2,{66,78,0}}, +/* 48039 */ {(14<<2)|2,{66,78,0}}, +/* 48040 */ {(14<<2)|2,{66,79,0}}, +/* 48041 */ {(14<<2)|2,{66,79,0}}, +/* 48042 */ {(14<<2)|2,{66,79,0}}, +/* 48043 */ {(14<<2)|2,{66,79,0}}, +/* 48044 */ {(14<<2)|2,{66,80,0}}, +/* 48045 */ {(14<<2)|2,{66,80,0}}, +/* 48046 */ {(14<<2)|2,{66,80,0}}, +/* 48047 */ {(14<<2)|2,{66,80,0}}, +/* 48048 */ {(14<<2)|2,{66,81,0}}, +/* 48049 */ {(14<<2)|2,{66,81,0}}, +/* 48050 */ {(14<<2)|2,{66,81,0}}, +/* 48051 */ {(14<<2)|2,{66,81,0}}, +/* 48052 */ {(14<<2)|2,{66,82,0}}, +/* 48053 */ {(14<<2)|2,{66,82,0}}, +/* 48054 */ {(14<<2)|2,{66,82,0}}, +/* 48055 */ {(14<<2)|2,{66,82,0}}, +/* 48056 */ {(14<<2)|2,{66,83,0}}, +/* 48057 */ {(14<<2)|2,{66,83,0}}, +/* 48058 */ {(14<<2)|2,{66,83,0}}, +/* 48059 */ {(14<<2)|2,{66,83,0}}, +/* 48060 */ {(14<<2)|2,{66,84,0}}, +/* 48061 */ {(14<<2)|2,{66,84,0}}, +/* 48062 */ {(14<<2)|2,{66,84,0}}, +/* 48063 */ {(14<<2)|2,{66,84,0}}, +/* 48064 */ {(14<<2)|2,{66,85,0}}, +/* 48065 */ {(14<<2)|2,{66,85,0}}, +/* 48066 */ {(14<<2)|2,{66,85,0}}, +/* 48067 */ {(14<<2)|2,{66,85,0}}, +/* 48068 */ {(14<<2)|2,{66,86,0}}, +/* 48069 */ {(14<<2)|2,{66,86,0}}, +/* 48070 */ {(14<<2)|2,{66,86,0}}, +/* 48071 */ {(14<<2)|2,{66,86,0}}, +/* 48072 */ {(14<<2)|2,{66,87,0}}, +/* 48073 */ {(14<<2)|2,{66,87,0}}, +/* 48074 */ {(14<<2)|2,{66,87,0}}, +/* 48075 */ {(14<<2)|2,{66,87,0}}, +/* 48076 */ {(14<<2)|2,{66,89,0}}, +/* 48077 */ {(14<<2)|2,{66,89,0}}, +/* 48078 */ {(14<<2)|2,{66,89,0}}, +/* 48079 */ {(14<<2)|2,{66,89,0}}, +/* 48080 */ {(14<<2)|2,{66,106,0}}, +/* 48081 */ {(14<<2)|2,{66,106,0}}, +/* 48082 */ {(14<<2)|2,{66,106,0}}, +/* 48083 */ {(14<<2)|2,{66,106,0}}, +/* 48084 */ {(14<<2)|2,{66,107,0}}, +/* 48085 */ {(14<<2)|2,{66,107,0}}, +/* 48086 */ {(14<<2)|2,{66,107,0}}, +/* 48087 */ {(14<<2)|2,{66,107,0}}, +/* 48088 */ {(14<<2)|2,{66,113,0}}, +/* 48089 */ {(14<<2)|2,{66,113,0}}, +/* 48090 */ {(14<<2)|2,{66,113,0}}, +/* 48091 */ {(14<<2)|2,{66,113,0}}, +/* 48092 */ {(14<<2)|2,{66,118,0}}, +/* 48093 */ {(14<<2)|2,{66,118,0}}, +/* 48094 */ {(14<<2)|2,{66,118,0}}, +/* 48095 */ {(14<<2)|2,{66,118,0}}, +/* 48096 */ {(14<<2)|2,{66,119,0}}, +/* 48097 */ {(14<<2)|2,{66,119,0}}, +/* 48098 */ {(14<<2)|2,{66,119,0}}, +/* 48099 */ {(14<<2)|2,{66,119,0}}, +/* 48100 */ {(14<<2)|2,{66,120,0}}, +/* 48101 */ {(14<<2)|2,{66,120,0}}, +/* 48102 */ {(14<<2)|2,{66,120,0}}, +/* 48103 */ {(14<<2)|2,{66,120,0}}, +/* 48104 */ {(14<<2)|2,{66,121,0}}, +/* 48105 */ {(14<<2)|2,{66,121,0}}, +/* 48106 */ {(14<<2)|2,{66,121,0}}, +/* 48107 */ {(14<<2)|2,{66,121,0}}, +/* 48108 */ {(14<<2)|2,{66,122,0}}, +/* 48109 */ {(14<<2)|2,{66,122,0}}, +/* 48110 */ {(14<<2)|2,{66,122,0}}, +/* 48111 */ {(14<<2)|2,{66,122,0}}, +/* 48112 */ {(15<<2)|2,{66,38,0}}, +/* 48113 */ {(15<<2)|2,{66,38,0}}, +/* 48114 */ {(15<<2)|2,{66,42,0}}, +/* 48115 */ {(15<<2)|2,{66,42,0}}, +/* 48116 */ {(15<<2)|2,{66,44,0}}, +/* 48117 */ {(15<<2)|2,{66,44,0}}, +/* 48118 */ {(15<<2)|2,{66,59,0}}, +/* 48119 */ {(15<<2)|2,{66,59,0}}, +/* 48120 */ {(15<<2)|2,{66,88,0}}, +/* 48121 */ {(15<<2)|2,{66,88,0}}, +/* 48122 */ {(15<<2)|2,{66,90,0}}, +/* 48123 */ {(15<<2)|2,{66,90,0}}, +/* 48124 */ {(7<<2)|1,{66,0,0}}, +/* 48125 */ {(7<<2)|1,{66,0,0}}, +/* 48126 */ {(7<<2)|1,{66,0,0}}, +/* 48127 */ {(7<<2)|1,{66,0,0}}, +/* 48128 */ {(12<<2)|2,{67,48,0}}, +/* 48129 */ {(12<<2)|2,{67,48,0}}, +/* 48130 */ {(12<<2)|2,{67,48,0}}, +/* 48131 */ {(12<<2)|2,{67,48,0}}, +/* 48132 */ {(12<<2)|2,{67,48,0}}, +/* 48133 */ {(12<<2)|2,{67,48,0}}, +/* 48134 */ {(12<<2)|2,{67,48,0}}, +/* 48135 */ {(12<<2)|2,{67,48,0}}, +/* 48136 */ {(12<<2)|2,{67,48,0}}, +/* 48137 */ {(12<<2)|2,{67,48,0}}, +/* 48138 */ {(12<<2)|2,{67,48,0}}, +/* 48139 */ {(12<<2)|2,{67,48,0}}, +/* 48140 */ {(12<<2)|2,{67,48,0}}, +/* 48141 */ {(12<<2)|2,{67,48,0}}, +/* 48142 */ {(12<<2)|2,{67,48,0}}, +/* 48143 */ {(12<<2)|2,{67,48,0}}, +/* 48144 */ {(12<<2)|2,{67,49,0}}, +/* 48145 */ {(12<<2)|2,{67,49,0}}, +/* 48146 */ {(12<<2)|2,{67,49,0}}, +/* 48147 */ {(12<<2)|2,{67,49,0}}, +/* 48148 */ {(12<<2)|2,{67,49,0}}, +/* 48149 */ {(12<<2)|2,{67,49,0}}, +/* 48150 */ {(12<<2)|2,{67,49,0}}, +/* 48151 */ {(12<<2)|2,{67,49,0}}, +/* 48152 */ {(12<<2)|2,{67,49,0}}, +/* 48153 */ {(12<<2)|2,{67,49,0}}, +/* 48154 */ {(12<<2)|2,{67,49,0}}, +/* 48155 */ {(12<<2)|2,{67,49,0}}, +/* 48156 */ {(12<<2)|2,{67,49,0}}, +/* 48157 */ {(12<<2)|2,{67,49,0}}, +/* 48158 */ {(12<<2)|2,{67,49,0}}, +/* 48159 */ {(12<<2)|2,{67,49,0}}, +/* 48160 */ {(12<<2)|2,{67,50,0}}, +/* 48161 */ {(12<<2)|2,{67,50,0}}, +/* 48162 */ {(12<<2)|2,{67,50,0}}, +/* 48163 */ {(12<<2)|2,{67,50,0}}, +/* 48164 */ {(12<<2)|2,{67,50,0}}, +/* 48165 */ {(12<<2)|2,{67,50,0}}, +/* 48166 */ {(12<<2)|2,{67,50,0}}, +/* 48167 */ {(12<<2)|2,{67,50,0}}, +/* 48168 */ {(12<<2)|2,{67,50,0}}, +/* 48169 */ {(12<<2)|2,{67,50,0}}, +/* 48170 */ {(12<<2)|2,{67,50,0}}, +/* 48171 */ {(12<<2)|2,{67,50,0}}, +/* 48172 */ {(12<<2)|2,{67,50,0}}, +/* 48173 */ {(12<<2)|2,{67,50,0}}, +/* 48174 */ {(12<<2)|2,{67,50,0}}, +/* 48175 */ {(12<<2)|2,{67,50,0}}, +/* 48176 */ {(12<<2)|2,{67,97,0}}, +/* 48177 */ {(12<<2)|2,{67,97,0}}, +/* 48178 */ {(12<<2)|2,{67,97,0}}, +/* 48179 */ {(12<<2)|2,{67,97,0}}, +/* 48180 */ {(12<<2)|2,{67,97,0}}, +/* 48181 */ {(12<<2)|2,{67,97,0}}, +/* 48182 */ {(12<<2)|2,{67,97,0}}, +/* 48183 */ {(12<<2)|2,{67,97,0}}, +/* 48184 */ {(12<<2)|2,{67,97,0}}, +/* 48185 */ {(12<<2)|2,{67,97,0}}, +/* 48186 */ {(12<<2)|2,{67,97,0}}, +/* 48187 */ {(12<<2)|2,{67,97,0}}, +/* 48188 */ {(12<<2)|2,{67,97,0}}, +/* 48189 */ {(12<<2)|2,{67,97,0}}, +/* 48190 */ {(12<<2)|2,{67,97,0}}, +/* 48191 */ {(12<<2)|2,{67,97,0}}, +/* 48192 */ {(12<<2)|2,{67,99,0}}, +/* 48193 */ {(12<<2)|2,{67,99,0}}, +/* 48194 */ {(12<<2)|2,{67,99,0}}, +/* 48195 */ {(12<<2)|2,{67,99,0}}, +/* 48196 */ {(12<<2)|2,{67,99,0}}, +/* 48197 */ {(12<<2)|2,{67,99,0}}, +/* 48198 */ {(12<<2)|2,{67,99,0}}, +/* 48199 */ {(12<<2)|2,{67,99,0}}, +/* 48200 */ {(12<<2)|2,{67,99,0}}, +/* 48201 */ {(12<<2)|2,{67,99,0}}, +/* 48202 */ {(12<<2)|2,{67,99,0}}, +/* 48203 */ {(12<<2)|2,{67,99,0}}, +/* 48204 */ {(12<<2)|2,{67,99,0}}, +/* 48205 */ {(12<<2)|2,{67,99,0}}, +/* 48206 */ {(12<<2)|2,{67,99,0}}, +/* 48207 */ {(12<<2)|2,{67,99,0}}, +/* 48208 */ {(12<<2)|2,{67,101,0}}, +/* 48209 */ {(12<<2)|2,{67,101,0}}, +/* 48210 */ {(12<<2)|2,{67,101,0}}, +/* 48211 */ {(12<<2)|2,{67,101,0}}, +/* 48212 */ {(12<<2)|2,{67,101,0}}, +/* 48213 */ {(12<<2)|2,{67,101,0}}, +/* 48214 */ {(12<<2)|2,{67,101,0}}, +/* 48215 */ {(12<<2)|2,{67,101,0}}, +/* 48216 */ {(12<<2)|2,{67,101,0}}, +/* 48217 */ {(12<<2)|2,{67,101,0}}, +/* 48218 */ {(12<<2)|2,{67,101,0}}, +/* 48219 */ {(12<<2)|2,{67,101,0}}, +/* 48220 */ {(12<<2)|2,{67,101,0}}, +/* 48221 */ {(12<<2)|2,{67,101,0}}, +/* 48222 */ {(12<<2)|2,{67,101,0}}, +/* 48223 */ {(12<<2)|2,{67,101,0}}, +/* 48224 */ {(12<<2)|2,{67,105,0}}, +/* 48225 */ {(12<<2)|2,{67,105,0}}, +/* 48226 */ {(12<<2)|2,{67,105,0}}, +/* 48227 */ {(12<<2)|2,{67,105,0}}, +/* 48228 */ {(12<<2)|2,{67,105,0}}, +/* 48229 */ {(12<<2)|2,{67,105,0}}, +/* 48230 */ {(12<<2)|2,{67,105,0}}, +/* 48231 */ {(12<<2)|2,{67,105,0}}, +/* 48232 */ {(12<<2)|2,{67,105,0}}, +/* 48233 */ {(12<<2)|2,{67,105,0}}, +/* 48234 */ {(12<<2)|2,{67,105,0}}, +/* 48235 */ {(12<<2)|2,{67,105,0}}, +/* 48236 */ {(12<<2)|2,{67,105,0}}, +/* 48237 */ {(12<<2)|2,{67,105,0}}, +/* 48238 */ {(12<<2)|2,{67,105,0}}, +/* 48239 */ {(12<<2)|2,{67,105,0}}, +/* 48240 */ {(12<<2)|2,{67,111,0}}, +/* 48241 */ {(12<<2)|2,{67,111,0}}, +/* 48242 */ {(12<<2)|2,{67,111,0}}, +/* 48243 */ {(12<<2)|2,{67,111,0}}, +/* 48244 */ {(12<<2)|2,{67,111,0}}, +/* 48245 */ {(12<<2)|2,{67,111,0}}, +/* 48246 */ {(12<<2)|2,{67,111,0}}, +/* 48247 */ {(12<<2)|2,{67,111,0}}, +/* 48248 */ {(12<<2)|2,{67,111,0}}, +/* 48249 */ {(12<<2)|2,{67,111,0}}, +/* 48250 */ {(12<<2)|2,{67,111,0}}, +/* 48251 */ {(12<<2)|2,{67,111,0}}, +/* 48252 */ {(12<<2)|2,{67,111,0}}, +/* 48253 */ {(12<<2)|2,{67,111,0}}, +/* 48254 */ {(12<<2)|2,{67,111,0}}, +/* 48255 */ {(12<<2)|2,{67,111,0}}, +/* 48256 */ {(12<<2)|2,{67,115,0}}, +/* 48257 */ {(12<<2)|2,{67,115,0}}, +/* 48258 */ {(12<<2)|2,{67,115,0}}, +/* 48259 */ {(12<<2)|2,{67,115,0}}, +/* 48260 */ {(12<<2)|2,{67,115,0}}, +/* 48261 */ {(12<<2)|2,{67,115,0}}, +/* 48262 */ {(12<<2)|2,{67,115,0}}, +/* 48263 */ {(12<<2)|2,{67,115,0}}, +/* 48264 */ {(12<<2)|2,{67,115,0}}, +/* 48265 */ {(12<<2)|2,{67,115,0}}, +/* 48266 */ {(12<<2)|2,{67,115,0}}, +/* 48267 */ {(12<<2)|2,{67,115,0}}, +/* 48268 */ {(12<<2)|2,{67,115,0}}, +/* 48269 */ {(12<<2)|2,{67,115,0}}, +/* 48270 */ {(12<<2)|2,{67,115,0}}, +/* 48271 */ {(12<<2)|2,{67,115,0}}, +/* 48272 */ {(12<<2)|2,{67,116,0}}, +/* 48273 */ {(12<<2)|2,{67,116,0}}, +/* 48274 */ {(12<<2)|2,{67,116,0}}, +/* 48275 */ {(12<<2)|2,{67,116,0}}, +/* 48276 */ {(12<<2)|2,{67,116,0}}, +/* 48277 */ {(12<<2)|2,{67,116,0}}, +/* 48278 */ {(12<<2)|2,{67,116,0}}, +/* 48279 */ {(12<<2)|2,{67,116,0}}, +/* 48280 */ {(12<<2)|2,{67,116,0}}, +/* 48281 */ {(12<<2)|2,{67,116,0}}, +/* 48282 */ {(12<<2)|2,{67,116,0}}, +/* 48283 */ {(12<<2)|2,{67,116,0}}, +/* 48284 */ {(12<<2)|2,{67,116,0}}, +/* 48285 */ {(12<<2)|2,{67,116,0}}, +/* 48286 */ {(12<<2)|2,{67,116,0}}, +/* 48287 */ {(12<<2)|2,{67,116,0}}, +/* 48288 */ {(13<<2)|2,{67,32,0}}, +/* 48289 */ {(13<<2)|2,{67,32,0}}, +/* 48290 */ {(13<<2)|2,{67,32,0}}, +/* 48291 */ {(13<<2)|2,{67,32,0}}, +/* 48292 */ {(13<<2)|2,{67,32,0}}, +/* 48293 */ {(13<<2)|2,{67,32,0}}, +/* 48294 */ {(13<<2)|2,{67,32,0}}, +/* 48295 */ {(13<<2)|2,{67,32,0}}, +/* 48296 */ {(13<<2)|2,{67,37,0}}, +/* 48297 */ {(13<<2)|2,{67,37,0}}, +/* 48298 */ {(13<<2)|2,{67,37,0}}, +/* 48299 */ {(13<<2)|2,{67,37,0}}, +/* 48300 */ {(13<<2)|2,{67,37,0}}, +/* 48301 */ {(13<<2)|2,{67,37,0}}, +/* 48302 */ {(13<<2)|2,{67,37,0}}, +/* 48303 */ {(13<<2)|2,{67,37,0}}, +/* 48304 */ {(13<<2)|2,{67,45,0}}, +/* 48305 */ {(13<<2)|2,{67,45,0}}, +/* 48306 */ {(13<<2)|2,{67,45,0}}, +/* 48307 */ {(13<<2)|2,{67,45,0}}, +/* 48308 */ {(13<<2)|2,{67,45,0}}, +/* 48309 */ {(13<<2)|2,{67,45,0}}, +/* 48310 */ {(13<<2)|2,{67,45,0}}, +/* 48311 */ {(13<<2)|2,{67,45,0}}, +/* 48312 */ {(13<<2)|2,{67,46,0}}, +/* 48313 */ {(13<<2)|2,{67,46,0}}, +/* 48314 */ {(13<<2)|2,{67,46,0}}, +/* 48315 */ {(13<<2)|2,{67,46,0}}, +/* 48316 */ {(13<<2)|2,{67,46,0}}, +/* 48317 */ {(13<<2)|2,{67,46,0}}, +/* 48318 */ {(13<<2)|2,{67,46,0}}, +/* 48319 */ {(13<<2)|2,{67,46,0}}, +/* 48320 */ {(13<<2)|2,{67,47,0}}, +/* 48321 */ {(13<<2)|2,{67,47,0}}, +/* 48322 */ {(13<<2)|2,{67,47,0}}, +/* 48323 */ {(13<<2)|2,{67,47,0}}, +/* 48324 */ {(13<<2)|2,{67,47,0}}, +/* 48325 */ {(13<<2)|2,{67,47,0}}, +/* 48326 */ {(13<<2)|2,{67,47,0}}, +/* 48327 */ {(13<<2)|2,{67,47,0}}, +/* 48328 */ {(13<<2)|2,{67,51,0}}, +/* 48329 */ {(13<<2)|2,{67,51,0}}, +/* 48330 */ {(13<<2)|2,{67,51,0}}, +/* 48331 */ {(13<<2)|2,{67,51,0}}, +/* 48332 */ {(13<<2)|2,{67,51,0}}, +/* 48333 */ {(13<<2)|2,{67,51,0}}, +/* 48334 */ {(13<<2)|2,{67,51,0}}, +/* 48335 */ {(13<<2)|2,{67,51,0}}, +/* 48336 */ {(13<<2)|2,{67,52,0}}, +/* 48337 */ {(13<<2)|2,{67,52,0}}, +/* 48338 */ {(13<<2)|2,{67,52,0}}, +/* 48339 */ {(13<<2)|2,{67,52,0}}, +/* 48340 */ {(13<<2)|2,{67,52,0}}, +/* 48341 */ {(13<<2)|2,{67,52,0}}, +/* 48342 */ {(13<<2)|2,{67,52,0}}, +/* 48343 */ {(13<<2)|2,{67,52,0}}, +/* 48344 */ {(13<<2)|2,{67,53,0}}, +/* 48345 */ {(13<<2)|2,{67,53,0}}, +/* 48346 */ {(13<<2)|2,{67,53,0}}, +/* 48347 */ {(13<<2)|2,{67,53,0}}, +/* 48348 */ {(13<<2)|2,{67,53,0}}, +/* 48349 */ {(13<<2)|2,{67,53,0}}, +/* 48350 */ {(13<<2)|2,{67,53,0}}, +/* 48351 */ {(13<<2)|2,{67,53,0}}, +/* 48352 */ {(13<<2)|2,{67,54,0}}, +/* 48353 */ {(13<<2)|2,{67,54,0}}, +/* 48354 */ {(13<<2)|2,{67,54,0}}, +/* 48355 */ {(13<<2)|2,{67,54,0}}, +/* 48356 */ {(13<<2)|2,{67,54,0}}, +/* 48357 */ {(13<<2)|2,{67,54,0}}, +/* 48358 */ {(13<<2)|2,{67,54,0}}, +/* 48359 */ {(13<<2)|2,{67,54,0}}, +/* 48360 */ {(13<<2)|2,{67,55,0}}, +/* 48361 */ {(13<<2)|2,{67,55,0}}, +/* 48362 */ {(13<<2)|2,{67,55,0}}, +/* 48363 */ {(13<<2)|2,{67,55,0}}, +/* 48364 */ {(13<<2)|2,{67,55,0}}, +/* 48365 */ {(13<<2)|2,{67,55,0}}, +/* 48366 */ {(13<<2)|2,{67,55,0}}, +/* 48367 */ {(13<<2)|2,{67,55,0}}, +/* 48368 */ {(13<<2)|2,{67,56,0}}, +/* 48369 */ {(13<<2)|2,{67,56,0}}, +/* 48370 */ {(13<<2)|2,{67,56,0}}, +/* 48371 */ {(13<<2)|2,{67,56,0}}, +/* 48372 */ {(13<<2)|2,{67,56,0}}, +/* 48373 */ {(13<<2)|2,{67,56,0}}, +/* 48374 */ {(13<<2)|2,{67,56,0}}, +/* 48375 */ {(13<<2)|2,{67,56,0}}, +/* 48376 */ {(13<<2)|2,{67,57,0}}, +/* 48377 */ {(13<<2)|2,{67,57,0}}, +/* 48378 */ {(13<<2)|2,{67,57,0}}, +/* 48379 */ {(13<<2)|2,{67,57,0}}, +/* 48380 */ {(13<<2)|2,{67,57,0}}, +/* 48381 */ {(13<<2)|2,{67,57,0}}, +/* 48382 */ {(13<<2)|2,{67,57,0}}, +/* 48383 */ {(13<<2)|2,{67,57,0}}, +/* 48384 */ {(13<<2)|2,{67,61,0}}, +/* 48385 */ {(13<<2)|2,{67,61,0}}, +/* 48386 */ {(13<<2)|2,{67,61,0}}, +/* 48387 */ {(13<<2)|2,{67,61,0}}, +/* 48388 */ {(13<<2)|2,{67,61,0}}, +/* 48389 */ {(13<<2)|2,{67,61,0}}, +/* 48390 */ {(13<<2)|2,{67,61,0}}, +/* 48391 */ {(13<<2)|2,{67,61,0}}, +/* 48392 */ {(13<<2)|2,{67,65,0}}, +/* 48393 */ {(13<<2)|2,{67,65,0}}, +/* 48394 */ {(13<<2)|2,{67,65,0}}, +/* 48395 */ {(13<<2)|2,{67,65,0}}, +/* 48396 */ {(13<<2)|2,{67,65,0}}, +/* 48397 */ {(13<<2)|2,{67,65,0}}, +/* 48398 */ {(13<<2)|2,{67,65,0}}, +/* 48399 */ {(13<<2)|2,{67,65,0}}, +/* 48400 */ {(13<<2)|2,{67,95,0}}, +/* 48401 */ {(13<<2)|2,{67,95,0}}, +/* 48402 */ {(13<<2)|2,{67,95,0}}, +/* 48403 */ {(13<<2)|2,{67,95,0}}, +/* 48404 */ {(13<<2)|2,{67,95,0}}, +/* 48405 */ {(13<<2)|2,{67,95,0}}, +/* 48406 */ {(13<<2)|2,{67,95,0}}, +/* 48407 */ {(13<<2)|2,{67,95,0}}, +/* 48408 */ {(13<<2)|2,{67,98,0}}, +/* 48409 */ {(13<<2)|2,{67,98,0}}, +/* 48410 */ {(13<<2)|2,{67,98,0}}, +/* 48411 */ {(13<<2)|2,{67,98,0}}, +/* 48412 */ {(13<<2)|2,{67,98,0}}, +/* 48413 */ {(13<<2)|2,{67,98,0}}, +/* 48414 */ {(13<<2)|2,{67,98,0}}, +/* 48415 */ {(13<<2)|2,{67,98,0}}, +/* 48416 */ {(13<<2)|2,{67,100,0}}, +/* 48417 */ {(13<<2)|2,{67,100,0}}, +/* 48418 */ {(13<<2)|2,{67,100,0}}, +/* 48419 */ {(13<<2)|2,{67,100,0}}, +/* 48420 */ {(13<<2)|2,{67,100,0}}, +/* 48421 */ {(13<<2)|2,{67,100,0}}, +/* 48422 */ {(13<<2)|2,{67,100,0}}, +/* 48423 */ {(13<<2)|2,{67,100,0}}, +/* 48424 */ {(13<<2)|2,{67,102,0}}, +/* 48425 */ {(13<<2)|2,{67,102,0}}, +/* 48426 */ {(13<<2)|2,{67,102,0}}, +/* 48427 */ {(13<<2)|2,{67,102,0}}, +/* 48428 */ {(13<<2)|2,{67,102,0}}, +/* 48429 */ {(13<<2)|2,{67,102,0}}, +/* 48430 */ {(13<<2)|2,{67,102,0}}, +/* 48431 */ {(13<<2)|2,{67,102,0}}, +/* 48432 */ {(13<<2)|2,{67,103,0}}, +/* 48433 */ {(13<<2)|2,{67,103,0}}, +/* 48434 */ {(13<<2)|2,{67,103,0}}, +/* 48435 */ {(13<<2)|2,{67,103,0}}, +/* 48436 */ {(13<<2)|2,{67,103,0}}, +/* 48437 */ {(13<<2)|2,{67,103,0}}, +/* 48438 */ {(13<<2)|2,{67,103,0}}, +/* 48439 */ {(13<<2)|2,{67,103,0}}, +/* 48440 */ {(13<<2)|2,{67,104,0}}, +/* 48441 */ {(13<<2)|2,{67,104,0}}, +/* 48442 */ {(13<<2)|2,{67,104,0}}, +/* 48443 */ {(13<<2)|2,{67,104,0}}, +/* 48444 */ {(13<<2)|2,{67,104,0}}, +/* 48445 */ {(13<<2)|2,{67,104,0}}, +/* 48446 */ {(13<<2)|2,{67,104,0}}, +/* 48447 */ {(13<<2)|2,{67,104,0}}, +/* 48448 */ {(13<<2)|2,{67,108,0}}, +/* 48449 */ {(13<<2)|2,{67,108,0}}, +/* 48450 */ {(13<<2)|2,{67,108,0}}, +/* 48451 */ {(13<<2)|2,{67,108,0}}, +/* 48452 */ {(13<<2)|2,{67,108,0}}, +/* 48453 */ {(13<<2)|2,{67,108,0}}, +/* 48454 */ {(13<<2)|2,{67,108,0}}, +/* 48455 */ {(13<<2)|2,{67,108,0}}, +/* 48456 */ {(13<<2)|2,{67,109,0}}, +/* 48457 */ {(13<<2)|2,{67,109,0}}, +/* 48458 */ {(13<<2)|2,{67,109,0}}, +/* 48459 */ {(13<<2)|2,{67,109,0}}, +/* 48460 */ {(13<<2)|2,{67,109,0}}, +/* 48461 */ {(13<<2)|2,{67,109,0}}, +/* 48462 */ {(13<<2)|2,{67,109,0}}, +/* 48463 */ {(13<<2)|2,{67,109,0}}, +/* 48464 */ {(13<<2)|2,{67,110,0}}, +/* 48465 */ {(13<<2)|2,{67,110,0}}, +/* 48466 */ {(13<<2)|2,{67,110,0}}, +/* 48467 */ {(13<<2)|2,{67,110,0}}, +/* 48468 */ {(13<<2)|2,{67,110,0}}, +/* 48469 */ {(13<<2)|2,{67,110,0}}, +/* 48470 */ {(13<<2)|2,{67,110,0}}, +/* 48471 */ {(13<<2)|2,{67,110,0}}, +/* 48472 */ {(13<<2)|2,{67,112,0}}, +/* 48473 */ {(13<<2)|2,{67,112,0}}, +/* 48474 */ {(13<<2)|2,{67,112,0}}, +/* 48475 */ {(13<<2)|2,{67,112,0}}, +/* 48476 */ {(13<<2)|2,{67,112,0}}, +/* 48477 */ {(13<<2)|2,{67,112,0}}, +/* 48478 */ {(13<<2)|2,{67,112,0}}, +/* 48479 */ {(13<<2)|2,{67,112,0}}, +/* 48480 */ {(13<<2)|2,{67,114,0}}, +/* 48481 */ {(13<<2)|2,{67,114,0}}, +/* 48482 */ {(13<<2)|2,{67,114,0}}, +/* 48483 */ {(13<<2)|2,{67,114,0}}, +/* 48484 */ {(13<<2)|2,{67,114,0}}, +/* 48485 */ {(13<<2)|2,{67,114,0}}, +/* 48486 */ {(13<<2)|2,{67,114,0}}, +/* 48487 */ {(13<<2)|2,{67,114,0}}, +/* 48488 */ {(13<<2)|2,{67,117,0}}, +/* 48489 */ {(13<<2)|2,{67,117,0}}, +/* 48490 */ {(13<<2)|2,{67,117,0}}, +/* 48491 */ {(13<<2)|2,{67,117,0}}, +/* 48492 */ {(13<<2)|2,{67,117,0}}, +/* 48493 */ {(13<<2)|2,{67,117,0}}, +/* 48494 */ {(13<<2)|2,{67,117,0}}, +/* 48495 */ {(13<<2)|2,{67,117,0}}, +/* 48496 */ {(14<<2)|2,{67,58,0}}, +/* 48497 */ {(14<<2)|2,{67,58,0}}, +/* 48498 */ {(14<<2)|2,{67,58,0}}, +/* 48499 */ {(14<<2)|2,{67,58,0}}, +/* 48500 */ {(14<<2)|2,{67,66,0}}, +/* 48501 */ {(14<<2)|2,{67,66,0}}, +/* 48502 */ {(14<<2)|2,{67,66,0}}, +/* 48503 */ {(14<<2)|2,{67,66,0}}, +/* 48504 */ {(14<<2)|2,{67,67,0}}, +/* 48505 */ {(14<<2)|2,{67,67,0}}, +/* 48506 */ {(14<<2)|2,{67,67,0}}, +/* 48507 */ {(14<<2)|2,{67,67,0}}, +/* 48508 */ {(14<<2)|2,{67,68,0}}, +/* 48509 */ {(14<<2)|2,{67,68,0}}, +/* 48510 */ {(14<<2)|2,{67,68,0}}, +/* 48511 */ {(14<<2)|2,{67,68,0}}, +/* 48512 */ {(14<<2)|2,{67,69,0}}, +/* 48513 */ {(14<<2)|2,{67,69,0}}, +/* 48514 */ {(14<<2)|2,{67,69,0}}, +/* 48515 */ {(14<<2)|2,{67,69,0}}, +/* 48516 */ {(14<<2)|2,{67,70,0}}, +/* 48517 */ {(14<<2)|2,{67,70,0}}, +/* 48518 */ {(14<<2)|2,{67,70,0}}, +/* 48519 */ {(14<<2)|2,{67,70,0}}, +/* 48520 */ {(14<<2)|2,{67,71,0}}, +/* 48521 */ {(14<<2)|2,{67,71,0}}, +/* 48522 */ {(14<<2)|2,{67,71,0}}, +/* 48523 */ {(14<<2)|2,{67,71,0}}, +/* 48524 */ {(14<<2)|2,{67,72,0}}, +/* 48525 */ {(14<<2)|2,{67,72,0}}, +/* 48526 */ {(14<<2)|2,{67,72,0}}, +/* 48527 */ {(14<<2)|2,{67,72,0}}, +/* 48528 */ {(14<<2)|2,{67,73,0}}, +/* 48529 */ {(14<<2)|2,{67,73,0}}, +/* 48530 */ {(14<<2)|2,{67,73,0}}, +/* 48531 */ {(14<<2)|2,{67,73,0}}, +/* 48532 */ {(14<<2)|2,{67,74,0}}, +/* 48533 */ {(14<<2)|2,{67,74,0}}, +/* 48534 */ {(14<<2)|2,{67,74,0}}, +/* 48535 */ {(14<<2)|2,{67,74,0}}, +/* 48536 */ {(14<<2)|2,{67,75,0}}, +/* 48537 */ {(14<<2)|2,{67,75,0}}, +/* 48538 */ {(14<<2)|2,{67,75,0}}, +/* 48539 */ {(14<<2)|2,{67,75,0}}, +/* 48540 */ {(14<<2)|2,{67,76,0}}, +/* 48541 */ {(14<<2)|2,{67,76,0}}, +/* 48542 */ {(14<<2)|2,{67,76,0}}, +/* 48543 */ {(14<<2)|2,{67,76,0}}, +/* 48544 */ {(14<<2)|2,{67,77,0}}, +/* 48545 */ {(14<<2)|2,{67,77,0}}, +/* 48546 */ {(14<<2)|2,{67,77,0}}, +/* 48547 */ {(14<<2)|2,{67,77,0}}, +/* 48548 */ {(14<<2)|2,{67,78,0}}, +/* 48549 */ {(14<<2)|2,{67,78,0}}, +/* 48550 */ {(14<<2)|2,{67,78,0}}, +/* 48551 */ {(14<<2)|2,{67,78,0}}, +/* 48552 */ {(14<<2)|2,{67,79,0}}, +/* 48553 */ {(14<<2)|2,{67,79,0}}, +/* 48554 */ {(14<<2)|2,{67,79,0}}, +/* 48555 */ {(14<<2)|2,{67,79,0}}, +/* 48556 */ {(14<<2)|2,{67,80,0}}, +/* 48557 */ {(14<<2)|2,{67,80,0}}, +/* 48558 */ {(14<<2)|2,{67,80,0}}, +/* 48559 */ {(14<<2)|2,{67,80,0}}, +/* 48560 */ {(14<<2)|2,{67,81,0}}, +/* 48561 */ {(14<<2)|2,{67,81,0}}, +/* 48562 */ {(14<<2)|2,{67,81,0}}, +/* 48563 */ {(14<<2)|2,{67,81,0}}, +/* 48564 */ {(14<<2)|2,{67,82,0}}, +/* 48565 */ {(14<<2)|2,{67,82,0}}, +/* 48566 */ {(14<<2)|2,{67,82,0}}, +/* 48567 */ {(14<<2)|2,{67,82,0}}, +/* 48568 */ {(14<<2)|2,{67,83,0}}, +/* 48569 */ {(14<<2)|2,{67,83,0}}, +/* 48570 */ {(14<<2)|2,{67,83,0}}, +/* 48571 */ {(14<<2)|2,{67,83,0}}, +/* 48572 */ {(14<<2)|2,{67,84,0}}, +/* 48573 */ {(14<<2)|2,{67,84,0}}, +/* 48574 */ {(14<<2)|2,{67,84,0}}, +/* 48575 */ {(14<<2)|2,{67,84,0}}, +/* 48576 */ {(14<<2)|2,{67,85,0}}, +/* 48577 */ {(14<<2)|2,{67,85,0}}, +/* 48578 */ {(14<<2)|2,{67,85,0}}, +/* 48579 */ {(14<<2)|2,{67,85,0}}, +/* 48580 */ {(14<<2)|2,{67,86,0}}, +/* 48581 */ {(14<<2)|2,{67,86,0}}, +/* 48582 */ {(14<<2)|2,{67,86,0}}, +/* 48583 */ {(14<<2)|2,{67,86,0}}, +/* 48584 */ {(14<<2)|2,{67,87,0}}, +/* 48585 */ {(14<<2)|2,{67,87,0}}, +/* 48586 */ {(14<<2)|2,{67,87,0}}, +/* 48587 */ {(14<<2)|2,{67,87,0}}, +/* 48588 */ {(14<<2)|2,{67,89,0}}, +/* 48589 */ {(14<<2)|2,{67,89,0}}, +/* 48590 */ {(14<<2)|2,{67,89,0}}, +/* 48591 */ {(14<<2)|2,{67,89,0}}, +/* 48592 */ {(14<<2)|2,{67,106,0}}, +/* 48593 */ {(14<<2)|2,{67,106,0}}, +/* 48594 */ {(14<<2)|2,{67,106,0}}, +/* 48595 */ {(14<<2)|2,{67,106,0}}, +/* 48596 */ {(14<<2)|2,{67,107,0}}, +/* 48597 */ {(14<<2)|2,{67,107,0}}, +/* 48598 */ {(14<<2)|2,{67,107,0}}, +/* 48599 */ {(14<<2)|2,{67,107,0}}, +/* 48600 */ {(14<<2)|2,{67,113,0}}, +/* 48601 */ {(14<<2)|2,{67,113,0}}, +/* 48602 */ {(14<<2)|2,{67,113,0}}, +/* 48603 */ {(14<<2)|2,{67,113,0}}, +/* 48604 */ {(14<<2)|2,{67,118,0}}, +/* 48605 */ {(14<<2)|2,{67,118,0}}, +/* 48606 */ {(14<<2)|2,{67,118,0}}, +/* 48607 */ {(14<<2)|2,{67,118,0}}, +/* 48608 */ {(14<<2)|2,{67,119,0}}, +/* 48609 */ {(14<<2)|2,{67,119,0}}, +/* 48610 */ {(14<<2)|2,{67,119,0}}, +/* 48611 */ {(14<<2)|2,{67,119,0}}, +/* 48612 */ {(14<<2)|2,{67,120,0}}, +/* 48613 */ {(14<<2)|2,{67,120,0}}, +/* 48614 */ {(14<<2)|2,{67,120,0}}, +/* 48615 */ {(14<<2)|2,{67,120,0}}, +/* 48616 */ {(14<<2)|2,{67,121,0}}, +/* 48617 */ {(14<<2)|2,{67,121,0}}, +/* 48618 */ {(14<<2)|2,{67,121,0}}, +/* 48619 */ {(14<<2)|2,{67,121,0}}, +/* 48620 */ {(14<<2)|2,{67,122,0}}, +/* 48621 */ {(14<<2)|2,{67,122,0}}, +/* 48622 */ {(14<<2)|2,{67,122,0}}, +/* 48623 */ {(14<<2)|2,{67,122,0}}, +/* 48624 */ {(15<<2)|2,{67,38,0}}, +/* 48625 */ {(15<<2)|2,{67,38,0}}, +/* 48626 */ {(15<<2)|2,{67,42,0}}, +/* 48627 */ {(15<<2)|2,{67,42,0}}, +/* 48628 */ {(15<<2)|2,{67,44,0}}, +/* 48629 */ {(15<<2)|2,{67,44,0}}, +/* 48630 */ {(15<<2)|2,{67,59,0}}, +/* 48631 */ {(15<<2)|2,{67,59,0}}, +/* 48632 */ {(15<<2)|2,{67,88,0}}, +/* 48633 */ {(15<<2)|2,{67,88,0}}, +/* 48634 */ {(15<<2)|2,{67,90,0}}, +/* 48635 */ {(15<<2)|2,{67,90,0}}, +/* 48636 */ {(7<<2)|1,{67,0,0}}, +/* 48637 */ {(7<<2)|1,{67,0,0}}, +/* 48638 */ {(7<<2)|1,{67,0,0}}, +/* 48639 */ {(7<<2)|1,{67,0,0}}, +/* 48640 */ {(12<<2)|2,{68,48,0}}, +/* 48641 */ {(12<<2)|2,{68,48,0}}, +/* 48642 */ {(12<<2)|2,{68,48,0}}, +/* 48643 */ {(12<<2)|2,{68,48,0}}, +/* 48644 */ {(12<<2)|2,{68,48,0}}, +/* 48645 */ {(12<<2)|2,{68,48,0}}, +/* 48646 */ {(12<<2)|2,{68,48,0}}, +/* 48647 */ {(12<<2)|2,{68,48,0}}, +/* 48648 */ {(12<<2)|2,{68,48,0}}, +/* 48649 */ {(12<<2)|2,{68,48,0}}, +/* 48650 */ {(12<<2)|2,{68,48,0}}, +/* 48651 */ {(12<<2)|2,{68,48,0}}, +/* 48652 */ {(12<<2)|2,{68,48,0}}, +/* 48653 */ {(12<<2)|2,{68,48,0}}, +/* 48654 */ {(12<<2)|2,{68,48,0}}, +/* 48655 */ {(12<<2)|2,{68,48,0}}, +/* 48656 */ {(12<<2)|2,{68,49,0}}, +/* 48657 */ {(12<<2)|2,{68,49,0}}, +/* 48658 */ {(12<<2)|2,{68,49,0}}, +/* 48659 */ {(12<<2)|2,{68,49,0}}, +/* 48660 */ {(12<<2)|2,{68,49,0}}, +/* 48661 */ {(12<<2)|2,{68,49,0}}, +/* 48662 */ {(12<<2)|2,{68,49,0}}, +/* 48663 */ {(12<<2)|2,{68,49,0}}, +/* 48664 */ {(12<<2)|2,{68,49,0}}, +/* 48665 */ {(12<<2)|2,{68,49,0}}, +/* 48666 */ {(12<<2)|2,{68,49,0}}, +/* 48667 */ {(12<<2)|2,{68,49,0}}, +/* 48668 */ {(12<<2)|2,{68,49,0}}, +/* 48669 */ {(12<<2)|2,{68,49,0}}, +/* 48670 */ {(12<<2)|2,{68,49,0}}, +/* 48671 */ {(12<<2)|2,{68,49,0}}, +/* 48672 */ {(12<<2)|2,{68,50,0}}, +/* 48673 */ {(12<<2)|2,{68,50,0}}, +/* 48674 */ {(12<<2)|2,{68,50,0}}, +/* 48675 */ {(12<<2)|2,{68,50,0}}, +/* 48676 */ {(12<<2)|2,{68,50,0}}, +/* 48677 */ {(12<<2)|2,{68,50,0}}, +/* 48678 */ {(12<<2)|2,{68,50,0}}, +/* 48679 */ {(12<<2)|2,{68,50,0}}, +/* 48680 */ {(12<<2)|2,{68,50,0}}, +/* 48681 */ {(12<<2)|2,{68,50,0}}, +/* 48682 */ {(12<<2)|2,{68,50,0}}, +/* 48683 */ {(12<<2)|2,{68,50,0}}, +/* 48684 */ {(12<<2)|2,{68,50,0}}, +/* 48685 */ {(12<<2)|2,{68,50,0}}, +/* 48686 */ {(12<<2)|2,{68,50,0}}, +/* 48687 */ {(12<<2)|2,{68,50,0}}, +/* 48688 */ {(12<<2)|2,{68,97,0}}, +/* 48689 */ {(12<<2)|2,{68,97,0}}, +/* 48690 */ {(12<<2)|2,{68,97,0}}, +/* 48691 */ {(12<<2)|2,{68,97,0}}, +/* 48692 */ {(12<<2)|2,{68,97,0}}, +/* 48693 */ {(12<<2)|2,{68,97,0}}, +/* 48694 */ {(12<<2)|2,{68,97,0}}, +/* 48695 */ {(12<<2)|2,{68,97,0}}, +/* 48696 */ {(12<<2)|2,{68,97,0}}, +/* 48697 */ {(12<<2)|2,{68,97,0}}, +/* 48698 */ {(12<<2)|2,{68,97,0}}, +/* 48699 */ {(12<<2)|2,{68,97,0}}, +/* 48700 */ {(12<<2)|2,{68,97,0}}, +/* 48701 */ {(12<<2)|2,{68,97,0}}, +/* 48702 */ {(12<<2)|2,{68,97,0}}, +/* 48703 */ {(12<<2)|2,{68,97,0}}, +/* 48704 */ {(12<<2)|2,{68,99,0}}, +/* 48705 */ {(12<<2)|2,{68,99,0}}, +/* 48706 */ {(12<<2)|2,{68,99,0}}, +/* 48707 */ {(12<<2)|2,{68,99,0}}, +/* 48708 */ {(12<<2)|2,{68,99,0}}, +/* 48709 */ {(12<<2)|2,{68,99,0}}, +/* 48710 */ {(12<<2)|2,{68,99,0}}, +/* 48711 */ {(12<<2)|2,{68,99,0}}, +/* 48712 */ {(12<<2)|2,{68,99,0}}, +/* 48713 */ {(12<<2)|2,{68,99,0}}, +/* 48714 */ {(12<<2)|2,{68,99,0}}, +/* 48715 */ {(12<<2)|2,{68,99,0}}, +/* 48716 */ {(12<<2)|2,{68,99,0}}, +/* 48717 */ {(12<<2)|2,{68,99,0}}, +/* 48718 */ {(12<<2)|2,{68,99,0}}, +/* 48719 */ {(12<<2)|2,{68,99,0}}, +/* 48720 */ {(12<<2)|2,{68,101,0}}, +/* 48721 */ {(12<<2)|2,{68,101,0}}, +/* 48722 */ {(12<<2)|2,{68,101,0}}, +/* 48723 */ {(12<<2)|2,{68,101,0}}, +/* 48724 */ {(12<<2)|2,{68,101,0}}, +/* 48725 */ {(12<<2)|2,{68,101,0}}, +/* 48726 */ {(12<<2)|2,{68,101,0}}, +/* 48727 */ {(12<<2)|2,{68,101,0}}, +/* 48728 */ {(12<<2)|2,{68,101,0}}, +/* 48729 */ {(12<<2)|2,{68,101,0}}, +/* 48730 */ {(12<<2)|2,{68,101,0}}, +/* 48731 */ {(12<<2)|2,{68,101,0}}, +/* 48732 */ {(12<<2)|2,{68,101,0}}, +/* 48733 */ {(12<<2)|2,{68,101,0}}, +/* 48734 */ {(12<<2)|2,{68,101,0}}, +/* 48735 */ {(12<<2)|2,{68,101,0}}, +/* 48736 */ {(12<<2)|2,{68,105,0}}, +/* 48737 */ {(12<<2)|2,{68,105,0}}, +/* 48738 */ {(12<<2)|2,{68,105,0}}, +/* 48739 */ {(12<<2)|2,{68,105,0}}, +/* 48740 */ {(12<<2)|2,{68,105,0}}, +/* 48741 */ {(12<<2)|2,{68,105,0}}, +/* 48742 */ {(12<<2)|2,{68,105,0}}, +/* 48743 */ {(12<<2)|2,{68,105,0}}, +/* 48744 */ {(12<<2)|2,{68,105,0}}, +/* 48745 */ {(12<<2)|2,{68,105,0}}, +/* 48746 */ {(12<<2)|2,{68,105,0}}, +/* 48747 */ {(12<<2)|2,{68,105,0}}, +/* 48748 */ {(12<<2)|2,{68,105,0}}, +/* 48749 */ {(12<<2)|2,{68,105,0}}, +/* 48750 */ {(12<<2)|2,{68,105,0}}, +/* 48751 */ {(12<<2)|2,{68,105,0}}, +/* 48752 */ {(12<<2)|2,{68,111,0}}, +/* 48753 */ {(12<<2)|2,{68,111,0}}, +/* 48754 */ {(12<<2)|2,{68,111,0}}, +/* 48755 */ {(12<<2)|2,{68,111,0}}, +/* 48756 */ {(12<<2)|2,{68,111,0}}, +/* 48757 */ {(12<<2)|2,{68,111,0}}, +/* 48758 */ {(12<<2)|2,{68,111,0}}, +/* 48759 */ {(12<<2)|2,{68,111,0}}, +/* 48760 */ {(12<<2)|2,{68,111,0}}, +/* 48761 */ {(12<<2)|2,{68,111,0}}, +/* 48762 */ {(12<<2)|2,{68,111,0}}, +/* 48763 */ {(12<<2)|2,{68,111,0}}, +/* 48764 */ {(12<<2)|2,{68,111,0}}, +/* 48765 */ {(12<<2)|2,{68,111,0}}, +/* 48766 */ {(12<<2)|2,{68,111,0}}, +/* 48767 */ {(12<<2)|2,{68,111,0}}, +/* 48768 */ {(12<<2)|2,{68,115,0}}, +/* 48769 */ {(12<<2)|2,{68,115,0}}, +/* 48770 */ {(12<<2)|2,{68,115,0}}, +/* 48771 */ {(12<<2)|2,{68,115,0}}, +/* 48772 */ {(12<<2)|2,{68,115,0}}, +/* 48773 */ {(12<<2)|2,{68,115,0}}, +/* 48774 */ {(12<<2)|2,{68,115,0}}, +/* 48775 */ {(12<<2)|2,{68,115,0}}, +/* 48776 */ {(12<<2)|2,{68,115,0}}, +/* 48777 */ {(12<<2)|2,{68,115,0}}, +/* 48778 */ {(12<<2)|2,{68,115,0}}, +/* 48779 */ {(12<<2)|2,{68,115,0}}, +/* 48780 */ {(12<<2)|2,{68,115,0}}, +/* 48781 */ {(12<<2)|2,{68,115,0}}, +/* 48782 */ {(12<<2)|2,{68,115,0}}, +/* 48783 */ {(12<<2)|2,{68,115,0}}, +/* 48784 */ {(12<<2)|2,{68,116,0}}, +/* 48785 */ {(12<<2)|2,{68,116,0}}, +/* 48786 */ {(12<<2)|2,{68,116,0}}, +/* 48787 */ {(12<<2)|2,{68,116,0}}, +/* 48788 */ {(12<<2)|2,{68,116,0}}, +/* 48789 */ {(12<<2)|2,{68,116,0}}, +/* 48790 */ {(12<<2)|2,{68,116,0}}, +/* 48791 */ {(12<<2)|2,{68,116,0}}, +/* 48792 */ {(12<<2)|2,{68,116,0}}, +/* 48793 */ {(12<<2)|2,{68,116,0}}, +/* 48794 */ {(12<<2)|2,{68,116,0}}, +/* 48795 */ {(12<<2)|2,{68,116,0}}, +/* 48796 */ {(12<<2)|2,{68,116,0}}, +/* 48797 */ {(12<<2)|2,{68,116,0}}, +/* 48798 */ {(12<<2)|2,{68,116,0}}, +/* 48799 */ {(12<<2)|2,{68,116,0}}, +/* 48800 */ {(13<<2)|2,{68,32,0}}, +/* 48801 */ {(13<<2)|2,{68,32,0}}, +/* 48802 */ {(13<<2)|2,{68,32,0}}, +/* 48803 */ {(13<<2)|2,{68,32,0}}, +/* 48804 */ {(13<<2)|2,{68,32,0}}, +/* 48805 */ {(13<<2)|2,{68,32,0}}, +/* 48806 */ {(13<<2)|2,{68,32,0}}, +/* 48807 */ {(13<<2)|2,{68,32,0}}, +/* 48808 */ {(13<<2)|2,{68,37,0}}, +/* 48809 */ {(13<<2)|2,{68,37,0}}, +/* 48810 */ {(13<<2)|2,{68,37,0}}, +/* 48811 */ {(13<<2)|2,{68,37,0}}, +/* 48812 */ {(13<<2)|2,{68,37,0}}, +/* 48813 */ {(13<<2)|2,{68,37,0}}, +/* 48814 */ {(13<<2)|2,{68,37,0}}, +/* 48815 */ {(13<<2)|2,{68,37,0}}, +/* 48816 */ {(13<<2)|2,{68,45,0}}, +/* 48817 */ {(13<<2)|2,{68,45,0}}, +/* 48818 */ {(13<<2)|2,{68,45,0}}, +/* 48819 */ {(13<<2)|2,{68,45,0}}, +/* 48820 */ {(13<<2)|2,{68,45,0}}, +/* 48821 */ {(13<<2)|2,{68,45,0}}, +/* 48822 */ {(13<<2)|2,{68,45,0}}, +/* 48823 */ {(13<<2)|2,{68,45,0}}, +/* 48824 */ {(13<<2)|2,{68,46,0}}, +/* 48825 */ {(13<<2)|2,{68,46,0}}, +/* 48826 */ {(13<<2)|2,{68,46,0}}, +/* 48827 */ {(13<<2)|2,{68,46,0}}, +/* 48828 */ {(13<<2)|2,{68,46,0}}, +/* 48829 */ {(13<<2)|2,{68,46,0}}, +/* 48830 */ {(13<<2)|2,{68,46,0}}, +/* 48831 */ {(13<<2)|2,{68,46,0}}, +/* 48832 */ {(13<<2)|2,{68,47,0}}, +/* 48833 */ {(13<<2)|2,{68,47,0}}, +/* 48834 */ {(13<<2)|2,{68,47,0}}, +/* 48835 */ {(13<<2)|2,{68,47,0}}, +/* 48836 */ {(13<<2)|2,{68,47,0}}, +/* 48837 */ {(13<<2)|2,{68,47,0}}, +/* 48838 */ {(13<<2)|2,{68,47,0}}, +/* 48839 */ {(13<<2)|2,{68,47,0}}, +/* 48840 */ {(13<<2)|2,{68,51,0}}, +/* 48841 */ {(13<<2)|2,{68,51,0}}, +/* 48842 */ {(13<<2)|2,{68,51,0}}, +/* 48843 */ {(13<<2)|2,{68,51,0}}, +/* 48844 */ {(13<<2)|2,{68,51,0}}, +/* 48845 */ {(13<<2)|2,{68,51,0}}, +/* 48846 */ {(13<<2)|2,{68,51,0}}, +/* 48847 */ {(13<<2)|2,{68,51,0}}, +/* 48848 */ {(13<<2)|2,{68,52,0}}, +/* 48849 */ {(13<<2)|2,{68,52,0}}, +/* 48850 */ {(13<<2)|2,{68,52,0}}, +/* 48851 */ {(13<<2)|2,{68,52,0}}, +/* 48852 */ {(13<<2)|2,{68,52,0}}, +/* 48853 */ {(13<<2)|2,{68,52,0}}, +/* 48854 */ {(13<<2)|2,{68,52,0}}, +/* 48855 */ {(13<<2)|2,{68,52,0}}, +/* 48856 */ {(13<<2)|2,{68,53,0}}, +/* 48857 */ {(13<<2)|2,{68,53,0}}, +/* 48858 */ {(13<<2)|2,{68,53,0}}, +/* 48859 */ {(13<<2)|2,{68,53,0}}, +/* 48860 */ {(13<<2)|2,{68,53,0}}, +/* 48861 */ {(13<<2)|2,{68,53,0}}, +/* 48862 */ {(13<<2)|2,{68,53,0}}, +/* 48863 */ {(13<<2)|2,{68,53,0}}, +/* 48864 */ {(13<<2)|2,{68,54,0}}, +/* 48865 */ {(13<<2)|2,{68,54,0}}, +/* 48866 */ {(13<<2)|2,{68,54,0}}, +/* 48867 */ {(13<<2)|2,{68,54,0}}, +/* 48868 */ {(13<<2)|2,{68,54,0}}, +/* 48869 */ {(13<<2)|2,{68,54,0}}, +/* 48870 */ {(13<<2)|2,{68,54,0}}, +/* 48871 */ {(13<<2)|2,{68,54,0}}, +/* 48872 */ {(13<<2)|2,{68,55,0}}, +/* 48873 */ {(13<<2)|2,{68,55,0}}, +/* 48874 */ {(13<<2)|2,{68,55,0}}, +/* 48875 */ {(13<<2)|2,{68,55,0}}, +/* 48876 */ {(13<<2)|2,{68,55,0}}, +/* 48877 */ {(13<<2)|2,{68,55,0}}, +/* 48878 */ {(13<<2)|2,{68,55,0}}, +/* 48879 */ {(13<<2)|2,{68,55,0}}, +/* 48880 */ {(13<<2)|2,{68,56,0}}, +/* 48881 */ {(13<<2)|2,{68,56,0}}, +/* 48882 */ {(13<<2)|2,{68,56,0}}, +/* 48883 */ {(13<<2)|2,{68,56,0}}, +/* 48884 */ {(13<<2)|2,{68,56,0}}, +/* 48885 */ {(13<<2)|2,{68,56,0}}, +/* 48886 */ {(13<<2)|2,{68,56,0}}, +/* 48887 */ {(13<<2)|2,{68,56,0}}, +/* 48888 */ {(13<<2)|2,{68,57,0}}, +/* 48889 */ {(13<<2)|2,{68,57,0}}, +/* 48890 */ {(13<<2)|2,{68,57,0}}, +/* 48891 */ {(13<<2)|2,{68,57,0}}, +/* 48892 */ {(13<<2)|2,{68,57,0}}, +/* 48893 */ {(13<<2)|2,{68,57,0}}, +/* 48894 */ {(13<<2)|2,{68,57,0}}, +/* 48895 */ {(13<<2)|2,{68,57,0}}, +/* 48896 */ {(13<<2)|2,{68,61,0}}, +/* 48897 */ {(13<<2)|2,{68,61,0}}, +/* 48898 */ {(13<<2)|2,{68,61,0}}, +/* 48899 */ {(13<<2)|2,{68,61,0}}, +/* 48900 */ {(13<<2)|2,{68,61,0}}, +/* 48901 */ {(13<<2)|2,{68,61,0}}, +/* 48902 */ {(13<<2)|2,{68,61,0}}, +/* 48903 */ {(13<<2)|2,{68,61,0}}, +/* 48904 */ {(13<<2)|2,{68,65,0}}, +/* 48905 */ {(13<<2)|2,{68,65,0}}, +/* 48906 */ {(13<<2)|2,{68,65,0}}, +/* 48907 */ {(13<<2)|2,{68,65,0}}, +/* 48908 */ {(13<<2)|2,{68,65,0}}, +/* 48909 */ {(13<<2)|2,{68,65,0}}, +/* 48910 */ {(13<<2)|2,{68,65,0}}, +/* 48911 */ {(13<<2)|2,{68,65,0}}, +/* 48912 */ {(13<<2)|2,{68,95,0}}, +/* 48913 */ {(13<<2)|2,{68,95,0}}, +/* 48914 */ {(13<<2)|2,{68,95,0}}, +/* 48915 */ {(13<<2)|2,{68,95,0}}, +/* 48916 */ {(13<<2)|2,{68,95,0}}, +/* 48917 */ {(13<<2)|2,{68,95,0}}, +/* 48918 */ {(13<<2)|2,{68,95,0}}, +/* 48919 */ {(13<<2)|2,{68,95,0}}, +/* 48920 */ {(13<<2)|2,{68,98,0}}, +/* 48921 */ {(13<<2)|2,{68,98,0}}, +/* 48922 */ {(13<<2)|2,{68,98,0}}, +/* 48923 */ {(13<<2)|2,{68,98,0}}, +/* 48924 */ {(13<<2)|2,{68,98,0}}, +/* 48925 */ {(13<<2)|2,{68,98,0}}, +/* 48926 */ {(13<<2)|2,{68,98,0}}, +/* 48927 */ {(13<<2)|2,{68,98,0}}, +/* 48928 */ {(13<<2)|2,{68,100,0}}, +/* 48929 */ {(13<<2)|2,{68,100,0}}, +/* 48930 */ {(13<<2)|2,{68,100,0}}, +/* 48931 */ {(13<<2)|2,{68,100,0}}, +/* 48932 */ {(13<<2)|2,{68,100,0}}, +/* 48933 */ {(13<<2)|2,{68,100,0}}, +/* 48934 */ {(13<<2)|2,{68,100,0}}, +/* 48935 */ {(13<<2)|2,{68,100,0}}, +/* 48936 */ {(13<<2)|2,{68,102,0}}, +/* 48937 */ {(13<<2)|2,{68,102,0}}, +/* 48938 */ {(13<<2)|2,{68,102,0}}, +/* 48939 */ {(13<<2)|2,{68,102,0}}, +/* 48940 */ {(13<<2)|2,{68,102,0}}, +/* 48941 */ {(13<<2)|2,{68,102,0}}, +/* 48942 */ {(13<<2)|2,{68,102,0}}, +/* 48943 */ {(13<<2)|2,{68,102,0}}, +/* 48944 */ {(13<<2)|2,{68,103,0}}, +/* 48945 */ {(13<<2)|2,{68,103,0}}, +/* 48946 */ {(13<<2)|2,{68,103,0}}, +/* 48947 */ {(13<<2)|2,{68,103,0}}, +/* 48948 */ {(13<<2)|2,{68,103,0}}, +/* 48949 */ {(13<<2)|2,{68,103,0}}, +/* 48950 */ {(13<<2)|2,{68,103,0}}, +/* 48951 */ {(13<<2)|2,{68,103,0}}, +/* 48952 */ {(13<<2)|2,{68,104,0}}, +/* 48953 */ {(13<<2)|2,{68,104,0}}, +/* 48954 */ {(13<<2)|2,{68,104,0}}, +/* 48955 */ {(13<<2)|2,{68,104,0}}, +/* 48956 */ {(13<<2)|2,{68,104,0}}, +/* 48957 */ {(13<<2)|2,{68,104,0}}, +/* 48958 */ {(13<<2)|2,{68,104,0}}, +/* 48959 */ {(13<<2)|2,{68,104,0}}, +/* 48960 */ {(13<<2)|2,{68,108,0}}, +/* 48961 */ {(13<<2)|2,{68,108,0}}, +/* 48962 */ {(13<<2)|2,{68,108,0}}, +/* 48963 */ {(13<<2)|2,{68,108,0}}, +/* 48964 */ {(13<<2)|2,{68,108,0}}, +/* 48965 */ {(13<<2)|2,{68,108,0}}, +/* 48966 */ {(13<<2)|2,{68,108,0}}, +/* 48967 */ {(13<<2)|2,{68,108,0}}, +/* 48968 */ {(13<<2)|2,{68,109,0}}, +/* 48969 */ {(13<<2)|2,{68,109,0}}, +/* 48970 */ {(13<<2)|2,{68,109,0}}, +/* 48971 */ {(13<<2)|2,{68,109,0}}, +/* 48972 */ {(13<<2)|2,{68,109,0}}, +/* 48973 */ {(13<<2)|2,{68,109,0}}, +/* 48974 */ {(13<<2)|2,{68,109,0}}, +/* 48975 */ {(13<<2)|2,{68,109,0}}, +/* 48976 */ {(13<<2)|2,{68,110,0}}, +/* 48977 */ {(13<<2)|2,{68,110,0}}, +/* 48978 */ {(13<<2)|2,{68,110,0}}, +/* 48979 */ {(13<<2)|2,{68,110,0}}, +/* 48980 */ {(13<<2)|2,{68,110,0}}, +/* 48981 */ {(13<<2)|2,{68,110,0}}, +/* 48982 */ {(13<<2)|2,{68,110,0}}, +/* 48983 */ {(13<<2)|2,{68,110,0}}, +/* 48984 */ {(13<<2)|2,{68,112,0}}, +/* 48985 */ {(13<<2)|2,{68,112,0}}, +/* 48986 */ {(13<<2)|2,{68,112,0}}, +/* 48987 */ {(13<<2)|2,{68,112,0}}, +/* 48988 */ {(13<<2)|2,{68,112,0}}, +/* 48989 */ {(13<<2)|2,{68,112,0}}, +/* 48990 */ {(13<<2)|2,{68,112,0}}, +/* 48991 */ {(13<<2)|2,{68,112,0}}, +/* 48992 */ {(13<<2)|2,{68,114,0}}, +/* 48993 */ {(13<<2)|2,{68,114,0}}, +/* 48994 */ {(13<<2)|2,{68,114,0}}, +/* 48995 */ {(13<<2)|2,{68,114,0}}, +/* 48996 */ {(13<<2)|2,{68,114,0}}, +/* 48997 */ {(13<<2)|2,{68,114,0}}, +/* 48998 */ {(13<<2)|2,{68,114,0}}, +/* 48999 */ {(13<<2)|2,{68,114,0}}, +/* 49000 */ {(13<<2)|2,{68,117,0}}, +/* 49001 */ {(13<<2)|2,{68,117,0}}, +/* 49002 */ {(13<<2)|2,{68,117,0}}, +/* 49003 */ {(13<<2)|2,{68,117,0}}, +/* 49004 */ {(13<<2)|2,{68,117,0}}, +/* 49005 */ {(13<<2)|2,{68,117,0}}, +/* 49006 */ {(13<<2)|2,{68,117,0}}, +/* 49007 */ {(13<<2)|2,{68,117,0}}, +/* 49008 */ {(14<<2)|2,{68,58,0}}, +/* 49009 */ {(14<<2)|2,{68,58,0}}, +/* 49010 */ {(14<<2)|2,{68,58,0}}, +/* 49011 */ {(14<<2)|2,{68,58,0}}, +/* 49012 */ {(14<<2)|2,{68,66,0}}, +/* 49013 */ {(14<<2)|2,{68,66,0}}, +/* 49014 */ {(14<<2)|2,{68,66,0}}, +/* 49015 */ {(14<<2)|2,{68,66,0}}, +/* 49016 */ {(14<<2)|2,{68,67,0}}, +/* 49017 */ {(14<<2)|2,{68,67,0}}, +/* 49018 */ {(14<<2)|2,{68,67,0}}, +/* 49019 */ {(14<<2)|2,{68,67,0}}, +/* 49020 */ {(14<<2)|2,{68,68,0}}, +/* 49021 */ {(14<<2)|2,{68,68,0}}, +/* 49022 */ {(14<<2)|2,{68,68,0}}, +/* 49023 */ {(14<<2)|2,{68,68,0}}, +/* 49024 */ {(14<<2)|2,{68,69,0}}, +/* 49025 */ {(14<<2)|2,{68,69,0}}, +/* 49026 */ {(14<<2)|2,{68,69,0}}, +/* 49027 */ {(14<<2)|2,{68,69,0}}, +/* 49028 */ {(14<<2)|2,{68,70,0}}, +/* 49029 */ {(14<<2)|2,{68,70,0}}, +/* 49030 */ {(14<<2)|2,{68,70,0}}, +/* 49031 */ {(14<<2)|2,{68,70,0}}, +/* 49032 */ {(14<<2)|2,{68,71,0}}, +/* 49033 */ {(14<<2)|2,{68,71,0}}, +/* 49034 */ {(14<<2)|2,{68,71,0}}, +/* 49035 */ {(14<<2)|2,{68,71,0}}, +/* 49036 */ {(14<<2)|2,{68,72,0}}, +/* 49037 */ {(14<<2)|2,{68,72,0}}, +/* 49038 */ {(14<<2)|2,{68,72,0}}, +/* 49039 */ {(14<<2)|2,{68,72,0}}, +/* 49040 */ {(14<<2)|2,{68,73,0}}, +/* 49041 */ {(14<<2)|2,{68,73,0}}, +/* 49042 */ {(14<<2)|2,{68,73,0}}, +/* 49043 */ {(14<<2)|2,{68,73,0}}, +/* 49044 */ {(14<<2)|2,{68,74,0}}, +/* 49045 */ {(14<<2)|2,{68,74,0}}, +/* 49046 */ {(14<<2)|2,{68,74,0}}, +/* 49047 */ {(14<<2)|2,{68,74,0}}, +/* 49048 */ {(14<<2)|2,{68,75,0}}, +/* 49049 */ {(14<<2)|2,{68,75,0}}, +/* 49050 */ {(14<<2)|2,{68,75,0}}, +/* 49051 */ {(14<<2)|2,{68,75,0}}, +/* 49052 */ {(14<<2)|2,{68,76,0}}, +/* 49053 */ {(14<<2)|2,{68,76,0}}, +/* 49054 */ {(14<<2)|2,{68,76,0}}, +/* 49055 */ {(14<<2)|2,{68,76,0}}, +/* 49056 */ {(14<<2)|2,{68,77,0}}, +/* 49057 */ {(14<<2)|2,{68,77,0}}, +/* 49058 */ {(14<<2)|2,{68,77,0}}, +/* 49059 */ {(14<<2)|2,{68,77,0}}, +/* 49060 */ {(14<<2)|2,{68,78,0}}, +/* 49061 */ {(14<<2)|2,{68,78,0}}, +/* 49062 */ {(14<<2)|2,{68,78,0}}, +/* 49063 */ {(14<<2)|2,{68,78,0}}, +/* 49064 */ {(14<<2)|2,{68,79,0}}, +/* 49065 */ {(14<<2)|2,{68,79,0}}, +/* 49066 */ {(14<<2)|2,{68,79,0}}, +/* 49067 */ {(14<<2)|2,{68,79,0}}, +/* 49068 */ {(14<<2)|2,{68,80,0}}, +/* 49069 */ {(14<<2)|2,{68,80,0}}, +/* 49070 */ {(14<<2)|2,{68,80,0}}, +/* 49071 */ {(14<<2)|2,{68,80,0}}, +/* 49072 */ {(14<<2)|2,{68,81,0}}, +/* 49073 */ {(14<<2)|2,{68,81,0}}, +/* 49074 */ {(14<<2)|2,{68,81,0}}, +/* 49075 */ {(14<<2)|2,{68,81,0}}, +/* 49076 */ {(14<<2)|2,{68,82,0}}, +/* 49077 */ {(14<<2)|2,{68,82,0}}, +/* 49078 */ {(14<<2)|2,{68,82,0}}, +/* 49079 */ {(14<<2)|2,{68,82,0}}, +/* 49080 */ {(14<<2)|2,{68,83,0}}, +/* 49081 */ {(14<<2)|2,{68,83,0}}, +/* 49082 */ {(14<<2)|2,{68,83,0}}, +/* 49083 */ {(14<<2)|2,{68,83,0}}, +/* 49084 */ {(14<<2)|2,{68,84,0}}, +/* 49085 */ {(14<<2)|2,{68,84,0}}, +/* 49086 */ {(14<<2)|2,{68,84,0}}, +/* 49087 */ {(14<<2)|2,{68,84,0}}, +/* 49088 */ {(14<<2)|2,{68,85,0}}, +/* 49089 */ {(14<<2)|2,{68,85,0}}, +/* 49090 */ {(14<<2)|2,{68,85,0}}, +/* 49091 */ {(14<<2)|2,{68,85,0}}, +/* 49092 */ {(14<<2)|2,{68,86,0}}, +/* 49093 */ {(14<<2)|2,{68,86,0}}, +/* 49094 */ {(14<<2)|2,{68,86,0}}, +/* 49095 */ {(14<<2)|2,{68,86,0}}, +/* 49096 */ {(14<<2)|2,{68,87,0}}, +/* 49097 */ {(14<<2)|2,{68,87,0}}, +/* 49098 */ {(14<<2)|2,{68,87,0}}, +/* 49099 */ {(14<<2)|2,{68,87,0}}, +/* 49100 */ {(14<<2)|2,{68,89,0}}, +/* 49101 */ {(14<<2)|2,{68,89,0}}, +/* 49102 */ {(14<<2)|2,{68,89,0}}, +/* 49103 */ {(14<<2)|2,{68,89,0}}, +/* 49104 */ {(14<<2)|2,{68,106,0}}, +/* 49105 */ {(14<<2)|2,{68,106,0}}, +/* 49106 */ {(14<<2)|2,{68,106,0}}, +/* 49107 */ {(14<<2)|2,{68,106,0}}, +/* 49108 */ {(14<<2)|2,{68,107,0}}, +/* 49109 */ {(14<<2)|2,{68,107,0}}, +/* 49110 */ {(14<<2)|2,{68,107,0}}, +/* 49111 */ {(14<<2)|2,{68,107,0}}, +/* 49112 */ {(14<<2)|2,{68,113,0}}, +/* 49113 */ {(14<<2)|2,{68,113,0}}, +/* 49114 */ {(14<<2)|2,{68,113,0}}, +/* 49115 */ {(14<<2)|2,{68,113,0}}, +/* 49116 */ {(14<<2)|2,{68,118,0}}, +/* 49117 */ {(14<<2)|2,{68,118,0}}, +/* 49118 */ {(14<<2)|2,{68,118,0}}, +/* 49119 */ {(14<<2)|2,{68,118,0}}, +/* 49120 */ {(14<<2)|2,{68,119,0}}, +/* 49121 */ {(14<<2)|2,{68,119,0}}, +/* 49122 */ {(14<<2)|2,{68,119,0}}, +/* 49123 */ {(14<<2)|2,{68,119,0}}, +/* 49124 */ {(14<<2)|2,{68,120,0}}, +/* 49125 */ {(14<<2)|2,{68,120,0}}, +/* 49126 */ {(14<<2)|2,{68,120,0}}, +/* 49127 */ {(14<<2)|2,{68,120,0}}, +/* 49128 */ {(14<<2)|2,{68,121,0}}, +/* 49129 */ {(14<<2)|2,{68,121,0}}, +/* 49130 */ {(14<<2)|2,{68,121,0}}, +/* 49131 */ {(14<<2)|2,{68,121,0}}, +/* 49132 */ {(14<<2)|2,{68,122,0}}, +/* 49133 */ {(14<<2)|2,{68,122,0}}, +/* 49134 */ {(14<<2)|2,{68,122,0}}, +/* 49135 */ {(14<<2)|2,{68,122,0}}, +/* 49136 */ {(15<<2)|2,{68,38,0}}, +/* 49137 */ {(15<<2)|2,{68,38,0}}, +/* 49138 */ {(15<<2)|2,{68,42,0}}, +/* 49139 */ {(15<<2)|2,{68,42,0}}, +/* 49140 */ {(15<<2)|2,{68,44,0}}, +/* 49141 */ {(15<<2)|2,{68,44,0}}, +/* 49142 */ {(15<<2)|2,{68,59,0}}, +/* 49143 */ {(15<<2)|2,{68,59,0}}, +/* 49144 */ {(15<<2)|2,{68,88,0}}, +/* 49145 */ {(15<<2)|2,{68,88,0}}, +/* 49146 */ {(15<<2)|2,{68,90,0}}, +/* 49147 */ {(15<<2)|2,{68,90,0}}, +/* 49148 */ {(7<<2)|1,{68,0,0}}, +/* 49149 */ {(7<<2)|1,{68,0,0}}, +/* 49150 */ {(7<<2)|1,{68,0,0}}, +/* 49151 */ {(7<<2)|1,{68,0,0}}, +/* 49152 */ {(12<<2)|2,{69,48,0}}, +/* 49153 */ {(12<<2)|2,{69,48,0}}, +/* 49154 */ {(12<<2)|2,{69,48,0}}, +/* 49155 */ {(12<<2)|2,{69,48,0}}, +/* 49156 */ {(12<<2)|2,{69,48,0}}, +/* 49157 */ {(12<<2)|2,{69,48,0}}, +/* 49158 */ {(12<<2)|2,{69,48,0}}, +/* 49159 */ {(12<<2)|2,{69,48,0}}, +/* 49160 */ {(12<<2)|2,{69,48,0}}, +/* 49161 */ {(12<<2)|2,{69,48,0}}, +/* 49162 */ {(12<<2)|2,{69,48,0}}, +/* 49163 */ {(12<<2)|2,{69,48,0}}, +/* 49164 */ {(12<<2)|2,{69,48,0}}, +/* 49165 */ {(12<<2)|2,{69,48,0}}, +/* 49166 */ {(12<<2)|2,{69,48,0}}, +/* 49167 */ {(12<<2)|2,{69,48,0}}, +/* 49168 */ {(12<<2)|2,{69,49,0}}, +/* 49169 */ {(12<<2)|2,{69,49,0}}, +/* 49170 */ {(12<<2)|2,{69,49,0}}, +/* 49171 */ {(12<<2)|2,{69,49,0}}, +/* 49172 */ {(12<<2)|2,{69,49,0}}, +/* 49173 */ {(12<<2)|2,{69,49,0}}, +/* 49174 */ {(12<<2)|2,{69,49,0}}, +/* 49175 */ {(12<<2)|2,{69,49,0}}, +/* 49176 */ {(12<<2)|2,{69,49,0}}, +/* 49177 */ {(12<<2)|2,{69,49,0}}, +/* 49178 */ {(12<<2)|2,{69,49,0}}, +/* 49179 */ {(12<<2)|2,{69,49,0}}, +/* 49180 */ {(12<<2)|2,{69,49,0}}, +/* 49181 */ {(12<<2)|2,{69,49,0}}, +/* 49182 */ {(12<<2)|2,{69,49,0}}, +/* 49183 */ {(12<<2)|2,{69,49,0}}, +/* 49184 */ {(12<<2)|2,{69,50,0}}, +/* 49185 */ {(12<<2)|2,{69,50,0}}, +/* 49186 */ {(12<<2)|2,{69,50,0}}, +/* 49187 */ {(12<<2)|2,{69,50,0}}, +/* 49188 */ {(12<<2)|2,{69,50,0}}, +/* 49189 */ {(12<<2)|2,{69,50,0}}, +/* 49190 */ {(12<<2)|2,{69,50,0}}, +/* 49191 */ {(12<<2)|2,{69,50,0}}, +/* 49192 */ {(12<<2)|2,{69,50,0}}, +/* 49193 */ {(12<<2)|2,{69,50,0}}, +/* 49194 */ {(12<<2)|2,{69,50,0}}, +/* 49195 */ {(12<<2)|2,{69,50,0}}, +/* 49196 */ {(12<<2)|2,{69,50,0}}, +/* 49197 */ {(12<<2)|2,{69,50,0}}, +/* 49198 */ {(12<<2)|2,{69,50,0}}, +/* 49199 */ {(12<<2)|2,{69,50,0}}, +/* 49200 */ {(12<<2)|2,{69,97,0}}, +/* 49201 */ {(12<<2)|2,{69,97,0}}, +/* 49202 */ {(12<<2)|2,{69,97,0}}, +/* 49203 */ {(12<<2)|2,{69,97,0}}, +/* 49204 */ {(12<<2)|2,{69,97,0}}, +/* 49205 */ {(12<<2)|2,{69,97,0}}, +/* 49206 */ {(12<<2)|2,{69,97,0}}, +/* 49207 */ {(12<<2)|2,{69,97,0}}, +/* 49208 */ {(12<<2)|2,{69,97,0}}, +/* 49209 */ {(12<<2)|2,{69,97,0}}, +/* 49210 */ {(12<<2)|2,{69,97,0}}, +/* 49211 */ {(12<<2)|2,{69,97,0}}, +/* 49212 */ {(12<<2)|2,{69,97,0}}, +/* 49213 */ {(12<<2)|2,{69,97,0}}, +/* 49214 */ {(12<<2)|2,{69,97,0}}, +/* 49215 */ {(12<<2)|2,{69,97,0}}, +/* 49216 */ {(12<<2)|2,{69,99,0}}, +/* 49217 */ {(12<<2)|2,{69,99,0}}, +/* 49218 */ {(12<<2)|2,{69,99,0}}, +/* 49219 */ {(12<<2)|2,{69,99,0}}, +/* 49220 */ {(12<<2)|2,{69,99,0}}, +/* 49221 */ {(12<<2)|2,{69,99,0}}, +/* 49222 */ {(12<<2)|2,{69,99,0}}, +/* 49223 */ {(12<<2)|2,{69,99,0}}, +/* 49224 */ {(12<<2)|2,{69,99,0}}, +/* 49225 */ {(12<<2)|2,{69,99,0}}, +/* 49226 */ {(12<<2)|2,{69,99,0}}, +/* 49227 */ {(12<<2)|2,{69,99,0}}, +/* 49228 */ {(12<<2)|2,{69,99,0}}, +/* 49229 */ {(12<<2)|2,{69,99,0}}, +/* 49230 */ {(12<<2)|2,{69,99,0}}, +/* 49231 */ {(12<<2)|2,{69,99,0}}, +/* 49232 */ {(12<<2)|2,{69,101,0}}, +/* 49233 */ {(12<<2)|2,{69,101,0}}, +/* 49234 */ {(12<<2)|2,{69,101,0}}, +/* 49235 */ {(12<<2)|2,{69,101,0}}, +/* 49236 */ {(12<<2)|2,{69,101,0}}, +/* 49237 */ {(12<<2)|2,{69,101,0}}, +/* 49238 */ {(12<<2)|2,{69,101,0}}, +/* 49239 */ {(12<<2)|2,{69,101,0}}, +/* 49240 */ {(12<<2)|2,{69,101,0}}, +/* 49241 */ {(12<<2)|2,{69,101,0}}, +/* 49242 */ {(12<<2)|2,{69,101,0}}, +/* 49243 */ {(12<<2)|2,{69,101,0}}, +/* 49244 */ {(12<<2)|2,{69,101,0}}, +/* 49245 */ {(12<<2)|2,{69,101,0}}, +/* 49246 */ {(12<<2)|2,{69,101,0}}, +/* 49247 */ {(12<<2)|2,{69,101,0}}, +/* 49248 */ {(12<<2)|2,{69,105,0}}, +/* 49249 */ {(12<<2)|2,{69,105,0}}, +/* 49250 */ {(12<<2)|2,{69,105,0}}, +/* 49251 */ {(12<<2)|2,{69,105,0}}, +/* 49252 */ {(12<<2)|2,{69,105,0}}, +/* 49253 */ {(12<<2)|2,{69,105,0}}, +/* 49254 */ {(12<<2)|2,{69,105,0}}, +/* 49255 */ {(12<<2)|2,{69,105,0}}, +/* 49256 */ {(12<<2)|2,{69,105,0}}, +/* 49257 */ {(12<<2)|2,{69,105,0}}, +/* 49258 */ {(12<<2)|2,{69,105,0}}, +/* 49259 */ {(12<<2)|2,{69,105,0}}, +/* 49260 */ {(12<<2)|2,{69,105,0}}, +/* 49261 */ {(12<<2)|2,{69,105,0}}, +/* 49262 */ {(12<<2)|2,{69,105,0}}, +/* 49263 */ {(12<<2)|2,{69,105,0}}, +/* 49264 */ {(12<<2)|2,{69,111,0}}, +/* 49265 */ {(12<<2)|2,{69,111,0}}, +/* 49266 */ {(12<<2)|2,{69,111,0}}, +/* 49267 */ {(12<<2)|2,{69,111,0}}, +/* 49268 */ {(12<<2)|2,{69,111,0}}, +/* 49269 */ {(12<<2)|2,{69,111,0}}, +/* 49270 */ {(12<<2)|2,{69,111,0}}, +/* 49271 */ {(12<<2)|2,{69,111,0}}, +/* 49272 */ {(12<<2)|2,{69,111,0}}, +/* 49273 */ {(12<<2)|2,{69,111,0}}, +/* 49274 */ {(12<<2)|2,{69,111,0}}, +/* 49275 */ {(12<<2)|2,{69,111,0}}, +/* 49276 */ {(12<<2)|2,{69,111,0}}, +/* 49277 */ {(12<<2)|2,{69,111,0}}, +/* 49278 */ {(12<<2)|2,{69,111,0}}, +/* 49279 */ {(12<<2)|2,{69,111,0}}, +/* 49280 */ {(12<<2)|2,{69,115,0}}, +/* 49281 */ {(12<<2)|2,{69,115,0}}, +/* 49282 */ {(12<<2)|2,{69,115,0}}, +/* 49283 */ {(12<<2)|2,{69,115,0}}, +/* 49284 */ {(12<<2)|2,{69,115,0}}, +/* 49285 */ {(12<<2)|2,{69,115,0}}, +/* 49286 */ {(12<<2)|2,{69,115,0}}, +/* 49287 */ {(12<<2)|2,{69,115,0}}, +/* 49288 */ {(12<<2)|2,{69,115,0}}, +/* 49289 */ {(12<<2)|2,{69,115,0}}, +/* 49290 */ {(12<<2)|2,{69,115,0}}, +/* 49291 */ {(12<<2)|2,{69,115,0}}, +/* 49292 */ {(12<<2)|2,{69,115,0}}, +/* 49293 */ {(12<<2)|2,{69,115,0}}, +/* 49294 */ {(12<<2)|2,{69,115,0}}, +/* 49295 */ {(12<<2)|2,{69,115,0}}, +/* 49296 */ {(12<<2)|2,{69,116,0}}, +/* 49297 */ {(12<<2)|2,{69,116,0}}, +/* 49298 */ {(12<<2)|2,{69,116,0}}, +/* 49299 */ {(12<<2)|2,{69,116,0}}, +/* 49300 */ {(12<<2)|2,{69,116,0}}, +/* 49301 */ {(12<<2)|2,{69,116,0}}, +/* 49302 */ {(12<<2)|2,{69,116,0}}, +/* 49303 */ {(12<<2)|2,{69,116,0}}, +/* 49304 */ {(12<<2)|2,{69,116,0}}, +/* 49305 */ {(12<<2)|2,{69,116,0}}, +/* 49306 */ {(12<<2)|2,{69,116,0}}, +/* 49307 */ {(12<<2)|2,{69,116,0}}, +/* 49308 */ {(12<<2)|2,{69,116,0}}, +/* 49309 */ {(12<<2)|2,{69,116,0}}, +/* 49310 */ {(12<<2)|2,{69,116,0}}, +/* 49311 */ {(12<<2)|2,{69,116,0}}, +/* 49312 */ {(13<<2)|2,{69,32,0}}, +/* 49313 */ {(13<<2)|2,{69,32,0}}, +/* 49314 */ {(13<<2)|2,{69,32,0}}, +/* 49315 */ {(13<<2)|2,{69,32,0}}, +/* 49316 */ {(13<<2)|2,{69,32,0}}, +/* 49317 */ {(13<<2)|2,{69,32,0}}, +/* 49318 */ {(13<<2)|2,{69,32,0}}, +/* 49319 */ {(13<<2)|2,{69,32,0}}, +/* 49320 */ {(13<<2)|2,{69,37,0}}, +/* 49321 */ {(13<<2)|2,{69,37,0}}, +/* 49322 */ {(13<<2)|2,{69,37,0}}, +/* 49323 */ {(13<<2)|2,{69,37,0}}, +/* 49324 */ {(13<<2)|2,{69,37,0}}, +/* 49325 */ {(13<<2)|2,{69,37,0}}, +/* 49326 */ {(13<<2)|2,{69,37,0}}, +/* 49327 */ {(13<<2)|2,{69,37,0}}, +/* 49328 */ {(13<<2)|2,{69,45,0}}, +/* 49329 */ {(13<<2)|2,{69,45,0}}, +/* 49330 */ {(13<<2)|2,{69,45,0}}, +/* 49331 */ {(13<<2)|2,{69,45,0}}, +/* 49332 */ {(13<<2)|2,{69,45,0}}, +/* 49333 */ {(13<<2)|2,{69,45,0}}, +/* 49334 */ {(13<<2)|2,{69,45,0}}, +/* 49335 */ {(13<<2)|2,{69,45,0}}, +/* 49336 */ {(13<<2)|2,{69,46,0}}, +/* 49337 */ {(13<<2)|2,{69,46,0}}, +/* 49338 */ {(13<<2)|2,{69,46,0}}, +/* 49339 */ {(13<<2)|2,{69,46,0}}, +/* 49340 */ {(13<<2)|2,{69,46,0}}, +/* 49341 */ {(13<<2)|2,{69,46,0}}, +/* 49342 */ {(13<<2)|2,{69,46,0}}, +/* 49343 */ {(13<<2)|2,{69,46,0}}, +/* 49344 */ {(13<<2)|2,{69,47,0}}, +/* 49345 */ {(13<<2)|2,{69,47,0}}, +/* 49346 */ {(13<<2)|2,{69,47,0}}, +/* 49347 */ {(13<<2)|2,{69,47,0}}, +/* 49348 */ {(13<<2)|2,{69,47,0}}, +/* 49349 */ {(13<<2)|2,{69,47,0}}, +/* 49350 */ {(13<<2)|2,{69,47,0}}, +/* 49351 */ {(13<<2)|2,{69,47,0}}, +/* 49352 */ {(13<<2)|2,{69,51,0}}, +/* 49353 */ {(13<<2)|2,{69,51,0}}, +/* 49354 */ {(13<<2)|2,{69,51,0}}, +/* 49355 */ {(13<<2)|2,{69,51,0}}, +/* 49356 */ {(13<<2)|2,{69,51,0}}, +/* 49357 */ {(13<<2)|2,{69,51,0}}, +/* 49358 */ {(13<<2)|2,{69,51,0}}, +/* 49359 */ {(13<<2)|2,{69,51,0}}, +/* 49360 */ {(13<<2)|2,{69,52,0}}, +/* 49361 */ {(13<<2)|2,{69,52,0}}, +/* 49362 */ {(13<<2)|2,{69,52,0}}, +/* 49363 */ {(13<<2)|2,{69,52,0}}, +/* 49364 */ {(13<<2)|2,{69,52,0}}, +/* 49365 */ {(13<<2)|2,{69,52,0}}, +/* 49366 */ {(13<<2)|2,{69,52,0}}, +/* 49367 */ {(13<<2)|2,{69,52,0}}, +/* 49368 */ {(13<<2)|2,{69,53,0}}, +/* 49369 */ {(13<<2)|2,{69,53,0}}, +/* 49370 */ {(13<<2)|2,{69,53,0}}, +/* 49371 */ {(13<<2)|2,{69,53,0}}, +/* 49372 */ {(13<<2)|2,{69,53,0}}, +/* 49373 */ {(13<<2)|2,{69,53,0}}, +/* 49374 */ {(13<<2)|2,{69,53,0}}, +/* 49375 */ {(13<<2)|2,{69,53,0}}, +/* 49376 */ {(13<<2)|2,{69,54,0}}, +/* 49377 */ {(13<<2)|2,{69,54,0}}, +/* 49378 */ {(13<<2)|2,{69,54,0}}, +/* 49379 */ {(13<<2)|2,{69,54,0}}, +/* 49380 */ {(13<<2)|2,{69,54,0}}, +/* 49381 */ {(13<<2)|2,{69,54,0}}, +/* 49382 */ {(13<<2)|2,{69,54,0}}, +/* 49383 */ {(13<<2)|2,{69,54,0}}, +/* 49384 */ {(13<<2)|2,{69,55,0}}, +/* 49385 */ {(13<<2)|2,{69,55,0}}, +/* 49386 */ {(13<<2)|2,{69,55,0}}, +/* 49387 */ {(13<<2)|2,{69,55,0}}, +/* 49388 */ {(13<<2)|2,{69,55,0}}, +/* 49389 */ {(13<<2)|2,{69,55,0}}, +/* 49390 */ {(13<<2)|2,{69,55,0}}, +/* 49391 */ {(13<<2)|2,{69,55,0}}, +/* 49392 */ {(13<<2)|2,{69,56,0}}, +/* 49393 */ {(13<<2)|2,{69,56,0}}, +/* 49394 */ {(13<<2)|2,{69,56,0}}, +/* 49395 */ {(13<<2)|2,{69,56,0}}, +/* 49396 */ {(13<<2)|2,{69,56,0}}, +/* 49397 */ {(13<<2)|2,{69,56,0}}, +/* 49398 */ {(13<<2)|2,{69,56,0}}, +/* 49399 */ {(13<<2)|2,{69,56,0}}, +/* 49400 */ {(13<<2)|2,{69,57,0}}, +/* 49401 */ {(13<<2)|2,{69,57,0}}, +/* 49402 */ {(13<<2)|2,{69,57,0}}, +/* 49403 */ {(13<<2)|2,{69,57,0}}, +/* 49404 */ {(13<<2)|2,{69,57,0}}, +/* 49405 */ {(13<<2)|2,{69,57,0}}, +/* 49406 */ {(13<<2)|2,{69,57,0}}, +/* 49407 */ {(13<<2)|2,{69,57,0}}, +/* 49408 */ {(13<<2)|2,{69,61,0}}, +/* 49409 */ {(13<<2)|2,{69,61,0}}, +/* 49410 */ {(13<<2)|2,{69,61,0}}, +/* 49411 */ {(13<<2)|2,{69,61,0}}, +/* 49412 */ {(13<<2)|2,{69,61,0}}, +/* 49413 */ {(13<<2)|2,{69,61,0}}, +/* 49414 */ {(13<<2)|2,{69,61,0}}, +/* 49415 */ {(13<<2)|2,{69,61,0}}, +/* 49416 */ {(13<<2)|2,{69,65,0}}, +/* 49417 */ {(13<<2)|2,{69,65,0}}, +/* 49418 */ {(13<<2)|2,{69,65,0}}, +/* 49419 */ {(13<<2)|2,{69,65,0}}, +/* 49420 */ {(13<<2)|2,{69,65,0}}, +/* 49421 */ {(13<<2)|2,{69,65,0}}, +/* 49422 */ {(13<<2)|2,{69,65,0}}, +/* 49423 */ {(13<<2)|2,{69,65,0}}, +/* 49424 */ {(13<<2)|2,{69,95,0}}, +/* 49425 */ {(13<<2)|2,{69,95,0}}, +/* 49426 */ {(13<<2)|2,{69,95,0}}, +/* 49427 */ {(13<<2)|2,{69,95,0}}, +/* 49428 */ {(13<<2)|2,{69,95,0}}, +/* 49429 */ {(13<<2)|2,{69,95,0}}, +/* 49430 */ {(13<<2)|2,{69,95,0}}, +/* 49431 */ {(13<<2)|2,{69,95,0}}, +/* 49432 */ {(13<<2)|2,{69,98,0}}, +/* 49433 */ {(13<<2)|2,{69,98,0}}, +/* 49434 */ {(13<<2)|2,{69,98,0}}, +/* 49435 */ {(13<<2)|2,{69,98,0}}, +/* 49436 */ {(13<<2)|2,{69,98,0}}, +/* 49437 */ {(13<<2)|2,{69,98,0}}, +/* 49438 */ {(13<<2)|2,{69,98,0}}, +/* 49439 */ {(13<<2)|2,{69,98,0}}, +/* 49440 */ {(13<<2)|2,{69,100,0}}, +/* 49441 */ {(13<<2)|2,{69,100,0}}, +/* 49442 */ {(13<<2)|2,{69,100,0}}, +/* 49443 */ {(13<<2)|2,{69,100,0}}, +/* 49444 */ {(13<<2)|2,{69,100,0}}, +/* 49445 */ {(13<<2)|2,{69,100,0}}, +/* 49446 */ {(13<<2)|2,{69,100,0}}, +/* 49447 */ {(13<<2)|2,{69,100,0}}, +/* 49448 */ {(13<<2)|2,{69,102,0}}, +/* 49449 */ {(13<<2)|2,{69,102,0}}, +/* 49450 */ {(13<<2)|2,{69,102,0}}, +/* 49451 */ {(13<<2)|2,{69,102,0}}, +/* 49452 */ {(13<<2)|2,{69,102,0}}, +/* 49453 */ {(13<<2)|2,{69,102,0}}, +/* 49454 */ {(13<<2)|2,{69,102,0}}, +/* 49455 */ {(13<<2)|2,{69,102,0}}, +/* 49456 */ {(13<<2)|2,{69,103,0}}, +/* 49457 */ {(13<<2)|2,{69,103,0}}, +/* 49458 */ {(13<<2)|2,{69,103,0}}, +/* 49459 */ {(13<<2)|2,{69,103,0}}, +/* 49460 */ {(13<<2)|2,{69,103,0}}, +/* 49461 */ {(13<<2)|2,{69,103,0}}, +/* 49462 */ {(13<<2)|2,{69,103,0}}, +/* 49463 */ {(13<<2)|2,{69,103,0}}, +/* 49464 */ {(13<<2)|2,{69,104,0}}, +/* 49465 */ {(13<<2)|2,{69,104,0}}, +/* 49466 */ {(13<<2)|2,{69,104,0}}, +/* 49467 */ {(13<<2)|2,{69,104,0}}, +/* 49468 */ {(13<<2)|2,{69,104,0}}, +/* 49469 */ {(13<<2)|2,{69,104,0}}, +/* 49470 */ {(13<<2)|2,{69,104,0}}, +/* 49471 */ {(13<<2)|2,{69,104,0}}, +/* 49472 */ {(13<<2)|2,{69,108,0}}, +/* 49473 */ {(13<<2)|2,{69,108,0}}, +/* 49474 */ {(13<<2)|2,{69,108,0}}, +/* 49475 */ {(13<<2)|2,{69,108,0}}, +/* 49476 */ {(13<<2)|2,{69,108,0}}, +/* 49477 */ {(13<<2)|2,{69,108,0}}, +/* 49478 */ {(13<<2)|2,{69,108,0}}, +/* 49479 */ {(13<<2)|2,{69,108,0}}, +/* 49480 */ {(13<<2)|2,{69,109,0}}, +/* 49481 */ {(13<<2)|2,{69,109,0}}, +/* 49482 */ {(13<<2)|2,{69,109,0}}, +/* 49483 */ {(13<<2)|2,{69,109,0}}, +/* 49484 */ {(13<<2)|2,{69,109,0}}, +/* 49485 */ {(13<<2)|2,{69,109,0}}, +/* 49486 */ {(13<<2)|2,{69,109,0}}, +/* 49487 */ {(13<<2)|2,{69,109,0}}, +/* 49488 */ {(13<<2)|2,{69,110,0}}, +/* 49489 */ {(13<<2)|2,{69,110,0}}, +/* 49490 */ {(13<<2)|2,{69,110,0}}, +/* 49491 */ {(13<<2)|2,{69,110,0}}, +/* 49492 */ {(13<<2)|2,{69,110,0}}, +/* 49493 */ {(13<<2)|2,{69,110,0}}, +/* 49494 */ {(13<<2)|2,{69,110,0}}, +/* 49495 */ {(13<<2)|2,{69,110,0}}, +/* 49496 */ {(13<<2)|2,{69,112,0}}, +/* 49497 */ {(13<<2)|2,{69,112,0}}, +/* 49498 */ {(13<<2)|2,{69,112,0}}, +/* 49499 */ {(13<<2)|2,{69,112,0}}, +/* 49500 */ {(13<<2)|2,{69,112,0}}, +/* 49501 */ {(13<<2)|2,{69,112,0}}, +/* 49502 */ {(13<<2)|2,{69,112,0}}, +/* 49503 */ {(13<<2)|2,{69,112,0}}, +/* 49504 */ {(13<<2)|2,{69,114,0}}, +/* 49505 */ {(13<<2)|2,{69,114,0}}, +/* 49506 */ {(13<<2)|2,{69,114,0}}, +/* 49507 */ {(13<<2)|2,{69,114,0}}, +/* 49508 */ {(13<<2)|2,{69,114,0}}, +/* 49509 */ {(13<<2)|2,{69,114,0}}, +/* 49510 */ {(13<<2)|2,{69,114,0}}, +/* 49511 */ {(13<<2)|2,{69,114,0}}, +/* 49512 */ {(13<<2)|2,{69,117,0}}, +/* 49513 */ {(13<<2)|2,{69,117,0}}, +/* 49514 */ {(13<<2)|2,{69,117,0}}, +/* 49515 */ {(13<<2)|2,{69,117,0}}, +/* 49516 */ {(13<<2)|2,{69,117,0}}, +/* 49517 */ {(13<<2)|2,{69,117,0}}, +/* 49518 */ {(13<<2)|2,{69,117,0}}, +/* 49519 */ {(13<<2)|2,{69,117,0}}, +/* 49520 */ {(14<<2)|2,{69,58,0}}, +/* 49521 */ {(14<<2)|2,{69,58,0}}, +/* 49522 */ {(14<<2)|2,{69,58,0}}, +/* 49523 */ {(14<<2)|2,{69,58,0}}, +/* 49524 */ {(14<<2)|2,{69,66,0}}, +/* 49525 */ {(14<<2)|2,{69,66,0}}, +/* 49526 */ {(14<<2)|2,{69,66,0}}, +/* 49527 */ {(14<<2)|2,{69,66,0}}, +/* 49528 */ {(14<<2)|2,{69,67,0}}, +/* 49529 */ {(14<<2)|2,{69,67,0}}, +/* 49530 */ {(14<<2)|2,{69,67,0}}, +/* 49531 */ {(14<<2)|2,{69,67,0}}, +/* 49532 */ {(14<<2)|2,{69,68,0}}, +/* 49533 */ {(14<<2)|2,{69,68,0}}, +/* 49534 */ {(14<<2)|2,{69,68,0}}, +/* 49535 */ {(14<<2)|2,{69,68,0}}, +/* 49536 */ {(14<<2)|2,{69,69,0}}, +/* 49537 */ {(14<<2)|2,{69,69,0}}, +/* 49538 */ {(14<<2)|2,{69,69,0}}, +/* 49539 */ {(14<<2)|2,{69,69,0}}, +/* 49540 */ {(14<<2)|2,{69,70,0}}, +/* 49541 */ {(14<<2)|2,{69,70,0}}, +/* 49542 */ {(14<<2)|2,{69,70,0}}, +/* 49543 */ {(14<<2)|2,{69,70,0}}, +/* 49544 */ {(14<<2)|2,{69,71,0}}, +/* 49545 */ {(14<<2)|2,{69,71,0}}, +/* 49546 */ {(14<<2)|2,{69,71,0}}, +/* 49547 */ {(14<<2)|2,{69,71,0}}, +/* 49548 */ {(14<<2)|2,{69,72,0}}, +/* 49549 */ {(14<<2)|2,{69,72,0}}, +/* 49550 */ {(14<<2)|2,{69,72,0}}, +/* 49551 */ {(14<<2)|2,{69,72,0}}, +/* 49552 */ {(14<<2)|2,{69,73,0}}, +/* 49553 */ {(14<<2)|2,{69,73,0}}, +/* 49554 */ {(14<<2)|2,{69,73,0}}, +/* 49555 */ {(14<<2)|2,{69,73,0}}, +/* 49556 */ {(14<<2)|2,{69,74,0}}, +/* 49557 */ {(14<<2)|2,{69,74,0}}, +/* 49558 */ {(14<<2)|2,{69,74,0}}, +/* 49559 */ {(14<<2)|2,{69,74,0}}, +/* 49560 */ {(14<<2)|2,{69,75,0}}, +/* 49561 */ {(14<<2)|2,{69,75,0}}, +/* 49562 */ {(14<<2)|2,{69,75,0}}, +/* 49563 */ {(14<<2)|2,{69,75,0}}, +/* 49564 */ {(14<<2)|2,{69,76,0}}, +/* 49565 */ {(14<<2)|2,{69,76,0}}, +/* 49566 */ {(14<<2)|2,{69,76,0}}, +/* 49567 */ {(14<<2)|2,{69,76,0}}, +/* 49568 */ {(14<<2)|2,{69,77,0}}, +/* 49569 */ {(14<<2)|2,{69,77,0}}, +/* 49570 */ {(14<<2)|2,{69,77,0}}, +/* 49571 */ {(14<<2)|2,{69,77,0}}, +/* 49572 */ {(14<<2)|2,{69,78,0}}, +/* 49573 */ {(14<<2)|2,{69,78,0}}, +/* 49574 */ {(14<<2)|2,{69,78,0}}, +/* 49575 */ {(14<<2)|2,{69,78,0}}, +/* 49576 */ {(14<<2)|2,{69,79,0}}, +/* 49577 */ {(14<<2)|2,{69,79,0}}, +/* 49578 */ {(14<<2)|2,{69,79,0}}, +/* 49579 */ {(14<<2)|2,{69,79,0}}, +/* 49580 */ {(14<<2)|2,{69,80,0}}, +/* 49581 */ {(14<<2)|2,{69,80,0}}, +/* 49582 */ {(14<<2)|2,{69,80,0}}, +/* 49583 */ {(14<<2)|2,{69,80,0}}, +/* 49584 */ {(14<<2)|2,{69,81,0}}, +/* 49585 */ {(14<<2)|2,{69,81,0}}, +/* 49586 */ {(14<<2)|2,{69,81,0}}, +/* 49587 */ {(14<<2)|2,{69,81,0}}, +/* 49588 */ {(14<<2)|2,{69,82,0}}, +/* 49589 */ {(14<<2)|2,{69,82,0}}, +/* 49590 */ {(14<<2)|2,{69,82,0}}, +/* 49591 */ {(14<<2)|2,{69,82,0}}, +/* 49592 */ {(14<<2)|2,{69,83,0}}, +/* 49593 */ {(14<<2)|2,{69,83,0}}, +/* 49594 */ {(14<<2)|2,{69,83,0}}, +/* 49595 */ {(14<<2)|2,{69,83,0}}, +/* 49596 */ {(14<<2)|2,{69,84,0}}, +/* 49597 */ {(14<<2)|2,{69,84,0}}, +/* 49598 */ {(14<<2)|2,{69,84,0}}, +/* 49599 */ {(14<<2)|2,{69,84,0}}, +/* 49600 */ {(14<<2)|2,{69,85,0}}, +/* 49601 */ {(14<<2)|2,{69,85,0}}, +/* 49602 */ {(14<<2)|2,{69,85,0}}, +/* 49603 */ {(14<<2)|2,{69,85,0}}, +/* 49604 */ {(14<<2)|2,{69,86,0}}, +/* 49605 */ {(14<<2)|2,{69,86,0}}, +/* 49606 */ {(14<<2)|2,{69,86,0}}, +/* 49607 */ {(14<<2)|2,{69,86,0}}, +/* 49608 */ {(14<<2)|2,{69,87,0}}, +/* 49609 */ {(14<<2)|2,{69,87,0}}, +/* 49610 */ {(14<<2)|2,{69,87,0}}, +/* 49611 */ {(14<<2)|2,{69,87,0}}, +/* 49612 */ {(14<<2)|2,{69,89,0}}, +/* 49613 */ {(14<<2)|2,{69,89,0}}, +/* 49614 */ {(14<<2)|2,{69,89,0}}, +/* 49615 */ {(14<<2)|2,{69,89,0}}, +/* 49616 */ {(14<<2)|2,{69,106,0}}, +/* 49617 */ {(14<<2)|2,{69,106,0}}, +/* 49618 */ {(14<<2)|2,{69,106,0}}, +/* 49619 */ {(14<<2)|2,{69,106,0}}, +/* 49620 */ {(14<<2)|2,{69,107,0}}, +/* 49621 */ {(14<<2)|2,{69,107,0}}, +/* 49622 */ {(14<<2)|2,{69,107,0}}, +/* 49623 */ {(14<<2)|2,{69,107,0}}, +/* 49624 */ {(14<<2)|2,{69,113,0}}, +/* 49625 */ {(14<<2)|2,{69,113,0}}, +/* 49626 */ {(14<<2)|2,{69,113,0}}, +/* 49627 */ {(14<<2)|2,{69,113,0}}, +/* 49628 */ {(14<<2)|2,{69,118,0}}, +/* 49629 */ {(14<<2)|2,{69,118,0}}, +/* 49630 */ {(14<<2)|2,{69,118,0}}, +/* 49631 */ {(14<<2)|2,{69,118,0}}, +/* 49632 */ {(14<<2)|2,{69,119,0}}, +/* 49633 */ {(14<<2)|2,{69,119,0}}, +/* 49634 */ {(14<<2)|2,{69,119,0}}, +/* 49635 */ {(14<<2)|2,{69,119,0}}, +/* 49636 */ {(14<<2)|2,{69,120,0}}, +/* 49637 */ {(14<<2)|2,{69,120,0}}, +/* 49638 */ {(14<<2)|2,{69,120,0}}, +/* 49639 */ {(14<<2)|2,{69,120,0}}, +/* 49640 */ {(14<<2)|2,{69,121,0}}, +/* 49641 */ {(14<<2)|2,{69,121,0}}, +/* 49642 */ {(14<<2)|2,{69,121,0}}, +/* 49643 */ {(14<<2)|2,{69,121,0}}, +/* 49644 */ {(14<<2)|2,{69,122,0}}, +/* 49645 */ {(14<<2)|2,{69,122,0}}, +/* 49646 */ {(14<<2)|2,{69,122,0}}, +/* 49647 */ {(14<<2)|2,{69,122,0}}, +/* 49648 */ {(15<<2)|2,{69,38,0}}, +/* 49649 */ {(15<<2)|2,{69,38,0}}, +/* 49650 */ {(15<<2)|2,{69,42,0}}, +/* 49651 */ {(15<<2)|2,{69,42,0}}, +/* 49652 */ {(15<<2)|2,{69,44,0}}, +/* 49653 */ {(15<<2)|2,{69,44,0}}, +/* 49654 */ {(15<<2)|2,{69,59,0}}, +/* 49655 */ {(15<<2)|2,{69,59,0}}, +/* 49656 */ {(15<<2)|2,{69,88,0}}, +/* 49657 */ {(15<<2)|2,{69,88,0}}, +/* 49658 */ {(15<<2)|2,{69,90,0}}, +/* 49659 */ {(15<<2)|2,{69,90,0}}, +/* 49660 */ {(7<<2)|1,{69,0,0}}, +/* 49661 */ {(7<<2)|1,{69,0,0}}, +/* 49662 */ {(7<<2)|1,{69,0,0}}, +/* 49663 */ {(7<<2)|1,{69,0,0}}, +/* 49664 */ {(12<<2)|2,{70,48,0}}, +/* 49665 */ {(12<<2)|2,{70,48,0}}, +/* 49666 */ {(12<<2)|2,{70,48,0}}, +/* 49667 */ {(12<<2)|2,{70,48,0}}, +/* 49668 */ {(12<<2)|2,{70,48,0}}, +/* 49669 */ {(12<<2)|2,{70,48,0}}, +/* 49670 */ {(12<<2)|2,{70,48,0}}, +/* 49671 */ {(12<<2)|2,{70,48,0}}, +/* 49672 */ {(12<<2)|2,{70,48,0}}, +/* 49673 */ {(12<<2)|2,{70,48,0}}, +/* 49674 */ {(12<<2)|2,{70,48,0}}, +/* 49675 */ {(12<<2)|2,{70,48,0}}, +/* 49676 */ {(12<<2)|2,{70,48,0}}, +/* 49677 */ {(12<<2)|2,{70,48,0}}, +/* 49678 */ {(12<<2)|2,{70,48,0}}, +/* 49679 */ {(12<<2)|2,{70,48,0}}, +/* 49680 */ {(12<<2)|2,{70,49,0}}, +/* 49681 */ {(12<<2)|2,{70,49,0}}, +/* 49682 */ {(12<<2)|2,{70,49,0}}, +/* 49683 */ {(12<<2)|2,{70,49,0}}, +/* 49684 */ {(12<<2)|2,{70,49,0}}, +/* 49685 */ {(12<<2)|2,{70,49,0}}, +/* 49686 */ {(12<<2)|2,{70,49,0}}, +/* 49687 */ {(12<<2)|2,{70,49,0}}, +/* 49688 */ {(12<<2)|2,{70,49,0}}, +/* 49689 */ {(12<<2)|2,{70,49,0}}, +/* 49690 */ {(12<<2)|2,{70,49,0}}, +/* 49691 */ {(12<<2)|2,{70,49,0}}, +/* 49692 */ {(12<<2)|2,{70,49,0}}, +/* 49693 */ {(12<<2)|2,{70,49,0}}, +/* 49694 */ {(12<<2)|2,{70,49,0}}, +/* 49695 */ {(12<<2)|2,{70,49,0}}, +/* 49696 */ {(12<<2)|2,{70,50,0}}, +/* 49697 */ {(12<<2)|2,{70,50,0}}, +/* 49698 */ {(12<<2)|2,{70,50,0}}, +/* 49699 */ {(12<<2)|2,{70,50,0}}, +/* 49700 */ {(12<<2)|2,{70,50,0}}, +/* 49701 */ {(12<<2)|2,{70,50,0}}, +/* 49702 */ {(12<<2)|2,{70,50,0}}, +/* 49703 */ {(12<<2)|2,{70,50,0}}, +/* 49704 */ {(12<<2)|2,{70,50,0}}, +/* 49705 */ {(12<<2)|2,{70,50,0}}, +/* 49706 */ {(12<<2)|2,{70,50,0}}, +/* 49707 */ {(12<<2)|2,{70,50,0}}, +/* 49708 */ {(12<<2)|2,{70,50,0}}, +/* 49709 */ {(12<<2)|2,{70,50,0}}, +/* 49710 */ {(12<<2)|2,{70,50,0}}, +/* 49711 */ {(12<<2)|2,{70,50,0}}, +/* 49712 */ {(12<<2)|2,{70,97,0}}, +/* 49713 */ {(12<<2)|2,{70,97,0}}, +/* 49714 */ {(12<<2)|2,{70,97,0}}, +/* 49715 */ {(12<<2)|2,{70,97,0}}, +/* 49716 */ {(12<<2)|2,{70,97,0}}, +/* 49717 */ {(12<<2)|2,{70,97,0}}, +/* 49718 */ {(12<<2)|2,{70,97,0}}, +/* 49719 */ {(12<<2)|2,{70,97,0}}, +/* 49720 */ {(12<<2)|2,{70,97,0}}, +/* 49721 */ {(12<<2)|2,{70,97,0}}, +/* 49722 */ {(12<<2)|2,{70,97,0}}, +/* 49723 */ {(12<<2)|2,{70,97,0}}, +/* 49724 */ {(12<<2)|2,{70,97,0}}, +/* 49725 */ {(12<<2)|2,{70,97,0}}, +/* 49726 */ {(12<<2)|2,{70,97,0}}, +/* 49727 */ {(12<<2)|2,{70,97,0}}, +/* 49728 */ {(12<<2)|2,{70,99,0}}, +/* 49729 */ {(12<<2)|2,{70,99,0}}, +/* 49730 */ {(12<<2)|2,{70,99,0}}, +/* 49731 */ {(12<<2)|2,{70,99,0}}, +/* 49732 */ {(12<<2)|2,{70,99,0}}, +/* 49733 */ {(12<<2)|2,{70,99,0}}, +/* 49734 */ {(12<<2)|2,{70,99,0}}, +/* 49735 */ {(12<<2)|2,{70,99,0}}, +/* 49736 */ {(12<<2)|2,{70,99,0}}, +/* 49737 */ {(12<<2)|2,{70,99,0}}, +/* 49738 */ {(12<<2)|2,{70,99,0}}, +/* 49739 */ {(12<<2)|2,{70,99,0}}, +/* 49740 */ {(12<<2)|2,{70,99,0}}, +/* 49741 */ {(12<<2)|2,{70,99,0}}, +/* 49742 */ {(12<<2)|2,{70,99,0}}, +/* 49743 */ {(12<<2)|2,{70,99,0}}, +/* 49744 */ {(12<<2)|2,{70,101,0}}, +/* 49745 */ {(12<<2)|2,{70,101,0}}, +/* 49746 */ {(12<<2)|2,{70,101,0}}, +/* 49747 */ {(12<<2)|2,{70,101,0}}, +/* 49748 */ {(12<<2)|2,{70,101,0}}, +/* 49749 */ {(12<<2)|2,{70,101,0}}, +/* 49750 */ {(12<<2)|2,{70,101,0}}, +/* 49751 */ {(12<<2)|2,{70,101,0}}, +/* 49752 */ {(12<<2)|2,{70,101,0}}, +/* 49753 */ {(12<<2)|2,{70,101,0}}, +/* 49754 */ {(12<<2)|2,{70,101,0}}, +/* 49755 */ {(12<<2)|2,{70,101,0}}, +/* 49756 */ {(12<<2)|2,{70,101,0}}, +/* 49757 */ {(12<<2)|2,{70,101,0}}, +/* 49758 */ {(12<<2)|2,{70,101,0}}, +/* 49759 */ {(12<<2)|2,{70,101,0}}, +/* 49760 */ {(12<<2)|2,{70,105,0}}, +/* 49761 */ {(12<<2)|2,{70,105,0}}, +/* 49762 */ {(12<<2)|2,{70,105,0}}, +/* 49763 */ {(12<<2)|2,{70,105,0}}, +/* 49764 */ {(12<<2)|2,{70,105,0}}, +/* 49765 */ {(12<<2)|2,{70,105,0}}, +/* 49766 */ {(12<<2)|2,{70,105,0}}, +/* 49767 */ {(12<<2)|2,{70,105,0}}, +/* 49768 */ {(12<<2)|2,{70,105,0}}, +/* 49769 */ {(12<<2)|2,{70,105,0}}, +/* 49770 */ {(12<<2)|2,{70,105,0}}, +/* 49771 */ {(12<<2)|2,{70,105,0}}, +/* 49772 */ {(12<<2)|2,{70,105,0}}, +/* 49773 */ {(12<<2)|2,{70,105,0}}, +/* 49774 */ {(12<<2)|2,{70,105,0}}, +/* 49775 */ {(12<<2)|2,{70,105,0}}, +/* 49776 */ {(12<<2)|2,{70,111,0}}, +/* 49777 */ {(12<<2)|2,{70,111,0}}, +/* 49778 */ {(12<<2)|2,{70,111,0}}, +/* 49779 */ {(12<<2)|2,{70,111,0}}, +/* 49780 */ {(12<<2)|2,{70,111,0}}, +/* 49781 */ {(12<<2)|2,{70,111,0}}, +/* 49782 */ {(12<<2)|2,{70,111,0}}, +/* 49783 */ {(12<<2)|2,{70,111,0}}, +/* 49784 */ {(12<<2)|2,{70,111,0}}, +/* 49785 */ {(12<<2)|2,{70,111,0}}, +/* 49786 */ {(12<<2)|2,{70,111,0}}, +/* 49787 */ {(12<<2)|2,{70,111,0}}, +/* 49788 */ {(12<<2)|2,{70,111,0}}, +/* 49789 */ {(12<<2)|2,{70,111,0}}, +/* 49790 */ {(12<<2)|2,{70,111,0}}, +/* 49791 */ {(12<<2)|2,{70,111,0}}, +/* 49792 */ {(12<<2)|2,{70,115,0}}, +/* 49793 */ {(12<<2)|2,{70,115,0}}, +/* 49794 */ {(12<<2)|2,{70,115,0}}, +/* 49795 */ {(12<<2)|2,{70,115,0}}, +/* 49796 */ {(12<<2)|2,{70,115,0}}, +/* 49797 */ {(12<<2)|2,{70,115,0}}, +/* 49798 */ {(12<<2)|2,{70,115,0}}, +/* 49799 */ {(12<<2)|2,{70,115,0}}, +/* 49800 */ {(12<<2)|2,{70,115,0}}, +/* 49801 */ {(12<<2)|2,{70,115,0}}, +/* 49802 */ {(12<<2)|2,{70,115,0}}, +/* 49803 */ {(12<<2)|2,{70,115,0}}, +/* 49804 */ {(12<<2)|2,{70,115,0}}, +/* 49805 */ {(12<<2)|2,{70,115,0}}, +/* 49806 */ {(12<<2)|2,{70,115,0}}, +/* 49807 */ {(12<<2)|2,{70,115,0}}, +/* 49808 */ {(12<<2)|2,{70,116,0}}, +/* 49809 */ {(12<<2)|2,{70,116,0}}, +/* 49810 */ {(12<<2)|2,{70,116,0}}, +/* 49811 */ {(12<<2)|2,{70,116,0}}, +/* 49812 */ {(12<<2)|2,{70,116,0}}, +/* 49813 */ {(12<<2)|2,{70,116,0}}, +/* 49814 */ {(12<<2)|2,{70,116,0}}, +/* 49815 */ {(12<<2)|2,{70,116,0}}, +/* 49816 */ {(12<<2)|2,{70,116,0}}, +/* 49817 */ {(12<<2)|2,{70,116,0}}, +/* 49818 */ {(12<<2)|2,{70,116,0}}, +/* 49819 */ {(12<<2)|2,{70,116,0}}, +/* 49820 */ {(12<<2)|2,{70,116,0}}, +/* 49821 */ {(12<<2)|2,{70,116,0}}, +/* 49822 */ {(12<<2)|2,{70,116,0}}, +/* 49823 */ {(12<<2)|2,{70,116,0}}, +/* 49824 */ {(13<<2)|2,{70,32,0}}, +/* 49825 */ {(13<<2)|2,{70,32,0}}, +/* 49826 */ {(13<<2)|2,{70,32,0}}, +/* 49827 */ {(13<<2)|2,{70,32,0}}, +/* 49828 */ {(13<<2)|2,{70,32,0}}, +/* 49829 */ {(13<<2)|2,{70,32,0}}, +/* 49830 */ {(13<<2)|2,{70,32,0}}, +/* 49831 */ {(13<<2)|2,{70,32,0}}, +/* 49832 */ {(13<<2)|2,{70,37,0}}, +/* 49833 */ {(13<<2)|2,{70,37,0}}, +/* 49834 */ {(13<<2)|2,{70,37,0}}, +/* 49835 */ {(13<<2)|2,{70,37,0}}, +/* 49836 */ {(13<<2)|2,{70,37,0}}, +/* 49837 */ {(13<<2)|2,{70,37,0}}, +/* 49838 */ {(13<<2)|2,{70,37,0}}, +/* 49839 */ {(13<<2)|2,{70,37,0}}, +/* 49840 */ {(13<<2)|2,{70,45,0}}, +/* 49841 */ {(13<<2)|2,{70,45,0}}, +/* 49842 */ {(13<<2)|2,{70,45,0}}, +/* 49843 */ {(13<<2)|2,{70,45,0}}, +/* 49844 */ {(13<<2)|2,{70,45,0}}, +/* 49845 */ {(13<<2)|2,{70,45,0}}, +/* 49846 */ {(13<<2)|2,{70,45,0}}, +/* 49847 */ {(13<<2)|2,{70,45,0}}, +/* 49848 */ {(13<<2)|2,{70,46,0}}, +/* 49849 */ {(13<<2)|2,{70,46,0}}, +/* 49850 */ {(13<<2)|2,{70,46,0}}, +/* 49851 */ {(13<<2)|2,{70,46,0}}, +/* 49852 */ {(13<<2)|2,{70,46,0}}, +/* 49853 */ {(13<<2)|2,{70,46,0}}, +/* 49854 */ {(13<<2)|2,{70,46,0}}, +/* 49855 */ {(13<<2)|2,{70,46,0}}, +/* 49856 */ {(13<<2)|2,{70,47,0}}, +/* 49857 */ {(13<<2)|2,{70,47,0}}, +/* 49858 */ {(13<<2)|2,{70,47,0}}, +/* 49859 */ {(13<<2)|2,{70,47,0}}, +/* 49860 */ {(13<<2)|2,{70,47,0}}, +/* 49861 */ {(13<<2)|2,{70,47,0}}, +/* 49862 */ {(13<<2)|2,{70,47,0}}, +/* 49863 */ {(13<<2)|2,{70,47,0}}, +/* 49864 */ {(13<<2)|2,{70,51,0}}, +/* 49865 */ {(13<<2)|2,{70,51,0}}, +/* 49866 */ {(13<<2)|2,{70,51,0}}, +/* 49867 */ {(13<<2)|2,{70,51,0}}, +/* 49868 */ {(13<<2)|2,{70,51,0}}, +/* 49869 */ {(13<<2)|2,{70,51,0}}, +/* 49870 */ {(13<<2)|2,{70,51,0}}, +/* 49871 */ {(13<<2)|2,{70,51,0}}, +/* 49872 */ {(13<<2)|2,{70,52,0}}, +/* 49873 */ {(13<<2)|2,{70,52,0}}, +/* 49874 */ {(13<<2)|2,{70,52,0}}, +/* 49875 */ {(13<<2)|2,{70,52,0}}, +/* 49876 */ {(13<<2)|2,{70,52,0}}, +/* 49877 */ {(13<<2)|2,{70,52,0}}, +/* 49878 */ {(13<<2)|2,{70,52,0}}, +/* 49879 */ {(13<<2)|2,{70,52,0}}, +/* 49880 */ {(13<<2)|2,{70,53,0}}, +/* 49881 */ {(13<<2)|2,{70,53,0}}, +/* 49882 */ {(13<<2)|2,{70,53,0}}, +/* 49883 */ {(13<<2)|2,{70,53,0}}, +/* 49884 */ {(13<<2)|2,{70,53,0}}, +/* 49885 */ {(13<<2)|2,{70,53,0}}, +/* 49886 */ {(13<<2)|2,{70,53,0}}, +/* 49887 */ {(13<<2)|2,{70,53,0}}, +/* 49888 */ {(13<<2)|2,{70,54,0}}, +/* 49889 */ {(13<<2)|2,{70,54,0}}, +/* 49890 */ {(13<<2)|2,{70,54,0}}, +/* 49891 */ {(13<<2)|2,{70,54,0}}, +/* 49892 */ {(13<<2)|2,{70,54,0}}, +/* 49893 */ {(13<<2)|2,{70,54,0}}, +/* 49894 */ {(13<<2)|2,{70,54,0}}, +/* 49895 */ {(13<<2)|2,{70,54,0}}, +/* 49896 */ {(13<<2)|2,{70,55,0}}, +/* 49897 */ {(13<<2)|2,{70,55,0}}, +/* 49898 */ {(13<<2)|2,{70,55,0}}, +/* 49899 */ {(13<<2)|2,{70,55,0}}, +/* 49900 */ {(13<<2)|2,{70,55,0}}, +/* 49901 */ {(13<<2)|2,{70,55,0}}, +/* 49902 */ {(13<<2)|2,{70,55,0}}, +/* 49903 */ {(13<<2)|2,{70,55,0}}, +/* 49904 */ {(13<<2)|2,{70,56,0}}, +/* 49905 */ {(13<<2)|2,{70,56,0}}, +/* 49906 */ {(13<<2)|2,{70,56,0}}, +/* 49907 */ {(13<<2)|2,{70,56,0}}, +/* 49908 */ {(13<<2)|2,{70,56,0}}, +/* 49909 */ {(13<<2)|2,{70,56,0}}, +/* 49910 */ {(13<<2)|2,{70,56,0}}, +/* 49911 */ {(13<<2)|2,{70,56,0}}, +/* 49912 */ {(13<<2)|2,{70,57,0}}, +/* 49913 */ {(13<<2)|2,{70,57,0}}, +/* 49914 */ {(13<<2)|2,{70,57,0}}, +/* 49915 */ {(13<<2)|2,{70,57,0}}, +/* 49916 */ {(13<<2)|2,{70,57,0}}, +/* 49917 */ {(13<<2)|2,{70,57,0}}, +/* 49918 */ {(13<<2)|2,{70,57,0}}, +/* 49919 */ {(13<<2)|2,{70,57,0}}, +/* 49920 */ {(13<<2)|2,{70,61,0}}, +/* 49921 */ {(13<<2)|2,{70,61,0}}, +/* 49922 */ {(13<<2)|2,{70,61,0}}, +/* 49923 */ {(13<<2)|2,{70,61,0}}, +/* 49924 */ {(13<<2)|2,{70,61,0}}, +/* 49925 */ {(13<<2)|2,{70,61,0}}, +/* 49926 */ {(13<<2)|2,{70,61,0}}, +/* 49927 */ {(13<<2)|2,{70,61,0}}, +/* 49928 */ {(13<<2)|2,{70,65,0}}, +/* 49929 */ {(13<<2)|2,{70,65,0}}, +/* 49930 */ {(13<<2)|2,{70,65,0}}, +/* 49931 */ {(13<<2)|2,{70,65,0}}, +/* 49932 */ {(13<<2)|2,{70,65,0}}, +/* 49933 */ {(13<<2)|2,{70,65,0}}, +/* 49934 */ {(13<<2)|2,{70,65,0}}, +/* 49935 */ {(13<<2)|2,{70,65,0}}, +/* 49936 */ {(13<<2)|2,{70,95,0}}, +/* 49937 */ {(13<<2)|2,{70,95,0}}, +/* 49938 */ {(13<<2)|2,{70,95,0}}, +/* 49939 */ {(13<<2)|2,{70,95,0}}, +/* 49940 */ {(13<<2)|2,{70,95,0}}, +/* 49941 */ {(13<<2)|2,{70,95,0}}, +/* 49942 */ {(13<<2)|2,{70,95,0}}, +/* 49943 */ {(13<<2)|2,{70,95,0}}, +/* 49944 */ {(13<<2)|2,{70,98,0}}, +/* 49945 */ {(13<<2)|2,{70,98,0}}, +/* 49946 */ {(13<<2)|2,{70,98,0}}, +/* 49947 */ {(13<<2)|2,{70,98,0}}, +/* 49948 */ {(13<<2)|2,{70,98,0}}, +/* 49949 */ {(13<<2)|2,{70,98,0}}, +/* 49950 */ {(13<<2)|2,{70,98,0}}, +/* 49951 */ {(13<<2)|2,{70,98,0}}, +/* 49952 */ {(13<<2)|2,{70,100,0}}, +/* 49953 */ {(13<<2)|2,{70,100,0}}, +/* 49954 */ {(13<<2)|2,{70,100,0}}, +/* 49955 */ {(13<<2)|2,{70,100,0}}, +/* 49956 */ {(13<<2)|2,{70,100,0}}, +/* 49957 */ {(13<<2)|2,{70,100,0}}, +/* 49958 */ {(13<<2)|2,{70,100,0}}, +/* 49959 */ {(13<<2)|2,{70,100,0}}, +/* 49960 */ {(13<<2)|2,{70,102,0}}, +/* 49961 */ {(13<<2)|2,{70,102,0}}, +/* 49962 */ {(13<<2)|2,{70,102,0}}, +/* 49963 */ {(13<<2)|2,{70,102,0}}, +/* 49964 */ {(13<<2)|2,{70,102,0}}, +/* 49965 */ {(13<<2)|2,{70,102,0}}, +/* 49966 */ {(13<<2)|2,{70,102,0}}, +/* 49967 */ {(13<<2)|2,{70,102,0}}, +/* 49968 */ {(13<<2)|2,{70,103,0}}, +/* 49969 */ {(13<<2)|2,{70,103,0}}, +/* 49970 */ {(13<<2)|2,{70,103,0}}, +/* 49971 */ {(13<<2)|2,{70,103,0}}, +/* 49972 */ {(13<<2)|2,{70,103,0}}, +/* 49973 */ {(13<<2)|2,{70,103,0}}, +/* 49974 */ {(13<<2)|2,{70,103,0}}, +/* 49975 */ {(13<<2)|2,{70,103,0}}, +/* 49976 */ {(13<<2)|2,{70,104,0}}, +/* 49977 */ {(13<<2)|2,{70,104,0}}, +/* 49978 */ {(13<<2)|2,{70,104,0}}, +/* 49979 */ {(13<<2)|2,{70,104,0}}, +/* 49980 */ {(13<<2)|2,{70,104,0}}, +/* 49981 */ {(13<<2)|2,{70,104,0}}, +/* 49982 */ {(13<<2)|2,{70,104,0}}, +/* 49983 */ {(13<<2)|2,{70,104,0}}, +/* 49984 */ {(13<<2)|2,{70,108,0}}, +/* 49985 */ {(13<<2)|2,{70,108,0}}, +/* 49986 */ {(13<<2)|2,{70,108,0}}, +/* 49987 */ {(13<<2)|2,{70,108,0}}, +/* 49988 */ {(13<<2)|2,{70,108,0}}, +/* 49989 */ {(13<<2)|2,{70,108,0}}, +/* 49990 */ {(13<<2)|2,{70,108,0}}, +/* 49991 */ {(13<<2)|2,{70,108,0}}, +/* 49992 */ {(13<<2)|2,{70,109,0}}, +/* 49993 */ {(13<<2)|2,{70,109,0}}, +/* 49994 */ {(13<<2)|2,{70,109,0}}, +/* 49995 */ {(13<<2)|2,{70,109,0}}, +/* 49996 */ {(13<<2)|2,{70,109,0}}, +/* 49997 */ {(13<<2)|2,{70,109,0}}, +/* 49998 */ {(13<<2)|2,{70,109,0}}, +/* 49999 */ {(13<<2)|2,{70,109,0}}, +/* 50000 */ {(13<<2)|2,{70,110,0}}, +/* 50001 */ {(13<<2)|2,{70,110,0}}, +/* 50002 */ {(13<<2)|2,{70,110,0}}, +/* 50003 */ {(13<<2)|2,{70,110,0}}, +/* 50004 */ {(13<<2)|2,{70,110,0}}, +/* 50005 */ {(13<<2)|2,{70,110,0}}, +/* 50006 */ {(13<<2)|2,{70,110,0}}, +/* 50007 */ {(13<<2)|2,{70,110,0}}, +/* 50008 */ {(13<<2)|2,{70,112,0}}, +/* 50009 */ {(13<<2)|2,{70,112,0}}, +/* 50010 */ {(13<<2)|2,{70,112,0}}, +/* 50011 */ {(13<<2)|2,{70,112,0}}, +/* 50012 */ {(13<<2)|2,{70,112,0}}, +/* 50013 */ {(13<<2)|2,{70,112,0}}, +/* 50014 */ {(13<<2)|2,{70,112,0}}, +/* 50015 */ {(13<<2)|2,{70,112,0}}, +/* 50016 */ {(13<<2)|2,{70,114,0}}, +/* 50017 */ {(13<<2)|2,{70,114,0}}, +/* 50018 */ {(13<<2)|2,{70,114,0}}, +/* 50019 */ {(13<<2)|2,{70,114,0}}, +/* 50020 */ {(13<<2)|2,{70,114,0}}, +/* 50021 */ {(13<<2)|2,{70,114,0}}, +/* 50022 */ {(13<<2)|2,{70,114,0}}, +/* 50023 */ {(13<<2)|2,{70,114,0}}, +/* 50024 */ {(13<<2)|2,{70,117,0}}, +/* 50025 */ {(13<<2)|2,{70,117,0}}, +/* 50026 */ {(13<<2)|2,{70,117,0}}, +/* 50027 */ {(13<<2)|2,{70,117,0}}, +/* 50028 */ {(13<<2)|2,{70,117,0}}, +/* 50029 */ {(13<<2)|2,{70,117,0}}, +/* 50030 */ {(13<<2)|2,{70,117,0}}, +/* 50031 */ {(13<<2)|2,{70,117,0}}, +/* 50032 */ {(14<<2)|2,{70,58,0}}, +/* 50033 */ {(14<<2)|2,{70,58,0}}, +/* 50034 */ {(14<<2)|2,{70,58,0}}, +/* 50035 */ {(14<<2)|2,{70,58,0}}, +/* 50036 */ {(14<<2)|2,{70,66,0}}, +/* 50037 */ {(14<<2)|2,{70,66,0}}, +/* 50038 */ {(14<<2)|2,{70,66,0}}, +/* 50039 */ {(14<<2)|2,{70,66,0}}, +/* 50040 */ {(14<<2)|2,{70,67,0}}, +/* 50041 */ {(14<<2)|2,{70,67,0}}, +/* 50042 */ {(14<<2)|2,{70,67,0}}, +/* 50043 */ {(14<<2)|2,{70,67,0}}, +/* 50044 */ {(14<<2)|2,{70,68,0}}, +/* 50045 */ {(14<<2)|2,{70,68,0}}, +/* 50046 */ {(14<<2)|2,{70,68,0}}, +/* 50047 */ {(14<<2)|2,{70,68,0}}, +/* 50048 */ {(14<<2)|2,{70,69,0}}, +/* 50049 */ {(14<<2)|2,{70,69,0}}, +/* 50050 */ {(14<<2)|2,{70,69,0}}, +/* 50051 */ {(14<<2)|2,{70,69,0}}, +/* 50052 */ {(14<<2)|2,{70,70,0}}, +/* 50053 */ {(14<<2)|2,{70,70,0}}, +/* 50054 */ {(14<<2)|2,{70,70,0}}, +/* 50055 */ {(14<<2)|2,{70,70,0}}, +/* 50056 */ {(14<<2)|2,{70,71,0}}, +/* 50057 */ {(14<<2)|2,{70,71,0}}, +/* 50058 */ {(14<<2)|2,{70,71,0}}, +/* 50059 */ {(14<<2)|2,{70,71,0}}, +/* 50060 */ {(14<<2)|2,{70,72,0}}, +/* 50061 */ {(14<<2)|2,{70,72,0}}, +/* 50062 */ {(14<<2)|2,{70,72,0}}, +/* 50063 */ {(14<<2)|2,{70,72,0}}, +/* 50064 */ {(14<<2)|2,{70,73,0}}, +/* 50065 */ {(14<<2)|2,{70,73,0}}, +/* 50066 */ {(14<<2)|2,{70,73,0}}, +/* 50067 */ {(14<<2)|2,{70,73,0}}, +/* 50068 */ {(14<<2)|2,{70,74,0}}, +/* 50069 */ {(14<<2)|2,{70,74,0}}, +/* 50070 */ {(14<<2)|2,{70,74,0}}, +/* 50071 */ {(14<<2)|2,{70,74,0}}, +/* 50072 */ {(14<<2)|2,{70,75,0}}, +/* 50073 */ {(14<<2)|2,{70,75,0}}, +/* 50074 */ {(14<<2)|2,{70,75,0}}, +/* 50075 */ {(14<<2)|2,{70,75,0}}, +/* 50076 */ {(14<<2)|2,{70,76,0}}, +/* 50077 */ {(14<<2)|2,{70,76,0}}, +/* 50078 */ {(14<<2)|2,{70,76,0}}, +/* 50079 */ {(14<<2)|2,{70,76,0}}, +/* 50080 */ {(14<<2)|2,{70,77,0}}, +/* 50081 */ {(14<<2)|2,{70,77,0}}, +/* 50082 */ {(14<<2)|2,{70,77,0}}, +/* 50083 */ {(14<<2)|2,{70,77,0}}, +/* 50084 */ {(14<<2)|2,{70,78,0}}, +/* 50085 */ {(14<<2)|2,{70,78,0}}, +/* 50086 */ {(14<<2)|2,{70,78,0}}, +/* 50087 */ {(14<<2)|2,{70,78,0}}, +/* 50088 */ {(14<<2)|2,{70,79,0}}, +/* 50089 */ {(14<<2)|2,{70,79,0}}, +/* 50090 */ {(14<<2)|2,{70,79,0}}, +/* 50091 */ {(14<<2)|2,{70,79,0}}, +/* 50092 */ {(14<<2)|2,{70,80,0}}, +/* 50093 */ {(14<<2)|2,{70,80,0}}, +/* 50094 */ {(14<<2)|2,{70,80,0}}, +/* 50095 */ {(14<<2)|2,{70,80,0}}, +/* 50096 */ {(14<<2)|2,{70,81,0}}, +/* 50097 */ {(14<<2)|2,{70,81,0}}, +/* 50098 */ {(14<<2)|2,{70,81,0}}, +/* 50099 */ {(14<<2)|2,{70,81,0}}, +/* 50100 */ {(14<<2)|2,{70,82,0}}, +/* 50101 */ {(14<<2)|2,{70,82,0}}, +/* 50102 */ {(14<<2)|2,{70,82,0}}, +/* 50103 */ {(14<<2)|2,{70,82,0}}, +/* 50104 */ {(14<<2)|2,{70,83,0}}, +/* 50105 */ {(14<<2)|2,{70,83,0}}, +/* 50106 */ {(14<<2)|2,{70,83,0}}, +/* 50107 */ {(14<<2)|2,{70,83,0}}, +/* 50108 */ {(14<<2)|2,{70,84,0}}, +/* 50109 */ {(14<<2)|2,{70,84,0}}, +/* 50110 */ {(14<<2)|2,{70,84,0}}, +/* 50111 */ {(14<<2)|2,{70,84,0}}, +/* 50112 */ {(14<<2)|2,{70,85,0}}, +/* 50113 */ {(14<<2)|2,{70,85,0}}, +/* 50114 */ {(14<<2)|2,{70,85,0}}, +/* 50115 */ {(14<<2)|2,{70,85,0}}, +/* 50116 */ {(14<<2)|2,{70,86,0}}, +/* 50117 */ {(14<<2)|2,{70,86,0}}, +/* 50118 */ {(14<<2)|2,{70,86,0}}, +/* 50119 */ {(14<<2)|2,{70,86,0}}, +/* 50120 */ {(14<<2)|2,{70,87,0}}, +/* 50121 */ {(14<<2)|2,{70,87,0}}, +/* 50122 */ {(14<<2)|2,{70,87,0}}, +/* 50123 */ {(14<<2)|2,{70,87,0}}, +/* 50124 */ {(14<<2)|2,{70,89,0}}, +/* 50125 */ {(14<<2)|2,{70,89,0}}, +/* 50126 */ {(14<<2)|2,{70,89,0}}, +/* 50127 */ {(14<<2)|2,{70,89,0}}, +/* 50128 */ {(14<<2)|2,{70,106,0}}, +/* 50129 */ {(14<<2)|2,{70,106,0}}, +/* 50130 */ {(14<<2)|2,{70,106,0}}, +/* 50131 */ {(14<<2)|2,{70,106,0}}, +/* 50132 */ {(14<<2)|2,{70,107,0}}, +/* 50133 */ {(14<<2)|2,{70,107,0}}, +/* 50134 */ {(14<<2)|2,{70,107,0}}, +/* 50135 */ {(14<<2)|2,{70,107,0}}, +/* 50136 */ {(14<<2)|2,{70,113,0}}, +/* 50137 */ {(14<<2)|2,{70,113,0}}, +/* 50138 */ {(14<<2)|2,{70,113,0}}, +/* 50139 */ {(14<<2)|2,{70,113,0}}, +/* 50140 */ {(14<<2)|2,{70,118,0}}, +/* 50141 */ {(14<<2)|2,{70,118,0}}, +/* 50142 */ {(14<<2)|2,{70,118,0}}, +/* 50143 */ {(14<<2)|2,{70,118,0}}, +/* 50144 */ {(14<<2)|2,{70,119,0}}, +/* 50145 */ {(14<<2)|2,{70,119,0}}, +/* 50146 */ {(14<<2)|2,{70,119,0}}, +/* 50147 */ {(14<<2)|2,{70,119,0}}, +/* 50148 */ {(14<<2)|2,{70,120,0}}, +/* 50149 */ {(14<<2)|2,{70,120,0}}, +/* 50150 */ {(14<<2)|2,{70,120,0}}, +/* 50151 */ {(14<<2)|2,{70,120,0}}, +/* 50152 */ {(14<<2)|2,{70,121,0}}, +/* 50153 */ {(14<<2)|2,{70,121,0}}, +/* 50154 */ {(14<<2)|2,{70,121,0}}, +/* 50155 */ {(14<<2)|2,{70,121,0}}, +/* 50156 */ {(14<<2)|2,{70,122,0}}, +/* 50157 */ {(14<<2)|2,{70,122,0}}, +/* 50158 */ {(14<<2)|2,{70,122,0}}, +/* 50159 */ {(14<<2)|2,{70,122,0}}, +/* 50160 */ {(15<<2)|2,{70,38,0}}, +/* 50161 */ {(15<<2)|2,{70,38,0}}, +/* 50162 */ {(15<<2)|2,{70,42,0}}, +/* 50163 */ {(15<<2)|2,{70,42,0}}, +/* 50164 */ {(15<<2)|2,{70,44,0}}, +/* 50165 */ {(15<<2)|2,{70,44,0}}, +/* 50166 */ {(15<<2)|2,{70,59,0}}, +/* 50167 */ {(15<<2)|2,{70,59,0}}, +/* 50168 */ {(15<<2)|2,{70,88,0}}, +/* 50169 */ {(15<<2)|2,{70,88,0}}, +/* 50170 */ {(15<<2)|2,{70,90,0}}, +/* 50171 */ {(15<<2)|2,{70,90,0}}, +/* 50172 */ {(7<<2)|1,{70,0,0}}, +/* 50173 */ {(7<<2)|1,{70,0,0}}, +/* 50174 */ {(7<<2)|1,{70,0,0}}, +/* 50175 */ {(7<<2)|1,{70,0,0}}, +/* 50176 */ {(12<<2)|2,{71,48,0}}, +/* 50177 */ {(12<<2)|2,{71,48,0}}, +/* 50178 */ {(12<<2)|2,{71,48,0}}, +/* 50179 */ {(12<<2)|2,{71,48,0}}, +/* 50180 */ {(12<<2)|2,{71,48,0}}, +/* 50181 */ {(12<<2)|2,{71,48,0}}, +/* 50182 */ {(12<<2)|2,{71,48,0}}, +/* 50183 */ {(12<<2)|2,{71,48,0}}, +/* 50184 */ {(12<<2)|2,{71,48,0}}, +/* 50185 */ {(12<<2)|2,{71,48,0}}, +/* 50186 */ {(12<<2)|2,{71,48,0}}, +/* 50187 */ {(12<<2)|2,{71,48,0}}, +/* 50188 */ {(12<<2)|2,{71,48,0}}, +/* 50189 */ {(12<<2)|2,{71,48,0}}, +/* 50190 */ {(12<<2)|2,{71,48,0}}, +/* 50191 */ {(12<<2)|2,{71,48,0}}, +/* 50192 */ {(12<<2)|2,{71,49,0}}, +/* 50193 */ {(12<<2)|2,{71,49,0}}, +/* 50194 */ {(12<<2)|2,{71,49,0}}, +/* 50195 */ {(12<<2)|2,{71,49,0}}, +/* 50196 */ {(12<<2)|2,{71,49,0}}, +/* 50197 */ {(12<<2)|2,{71,49,0}}, +/* 50198 */ {(12<<2)|2,{71,49,0}}, +/* 50199 */ {(12<<2)|2,{71,49,0}}, +/* 50200 */ {(12<<2)|2,{71,49,0}}, +/* 50201 */ {(12<<2)|2,{71,49,0}}, +/* 50202 */ {(12<<2)|2,{71,49,0}}, +/* 50203 */ {(12<<2)|2,{71,49,0}}, +/* 50204 */ {(12<<2)|2,{71,49,0}}, +/* 50205 */ {(12<<2)|2,{71,49,0}}, +/* 50206 */ {(12<<2)|2,{71,49,0}}, +/* 50207 */ {(12<<2)|2,{71,49,0}}, +/* 50208 */ {(12<<2)|2,{71,50,0}}, +/* 50209 */ {(12<<2)|2,{71,50,0}}, +/* 50210 */ {(12<<2)|2,{71,50,0}}, +/* 50211 */ {(12<<2)|2,{71,50,0}}, +/* 50212 */ {(12<<2)|2,{71,50,0}}, +/* 50213 */ {(12<<2)|2,{71,50,0}}, +/* 50214 */ {(12<<2)|2,{71,50,0}}, +/* 50215 */ {(12<<2)|2,{71,50,0}}, +/* 50216 */ {(12<<2)|2,{71,50,0}}, +/* 50217 */ {(12<<2)|2,{71,50,0}}, +/* 50218 */ {(12<<2)|2,{71,50,0}}, +/* 50219 */ {(12<<2)|2,{71,50,0}}, +/* 50220 */ {(12<<2)|2,{71,50,0}}, +/* 50221 */ {(12<<2)|2,{71,50,0}}, +/* 50222 */ {(12<<2)|2,{71,50,0}}, +/* 50223 */ {(12<<2)|2,{71,50,0}}, +/* 50224 */ {(12<<2)|2,{71,97,0}}, +/* 50225 */ {(12<<2)|2,{71,97,0}}, +/* 50226 */ {(12<<2)|2,{71,97,0}}, +/* 50227 */ {(12<<2)|2,{71,97,0}}, +/* 50228 */ {(12<<2)|2,{71,97,0}}, +/* 50229 */ {(12<<2)|2,{71,97,0}}, +/* 50230 */ {(12<<2)|2,{71,97,0}}, +/* 50231 */ {(12<<2)|2,{71,97,0}}, +/* 50232 */ {(12<<2)|2,{71,97,0}}, +/* 50233 */ {(12<<2)|2,{71,97,0}}, +/* 50234 */ {(12<<2)|2,{71,97,0}}, +/* 50235 */ {(12<<2)|2,{71,97,0}}, +/* 50236 */ {(12<<2)|2,{71,97,0}}, +/* 50237 */ {(12<<2)|2,{71,97,0}}, +/* 50238 */ {(12<<2)|2,{71,97,0}}, +/* 50239 */ {(12<<2)|2,{71,97,0}}, +/* 50240 */ {(12<<2)|2,{71,99,0}}, +/* 50241 */ {(12<<2)|2,{71,99,0}}, +/* 50242 */ {(12<<2)|2,{71,99,0}}, +/* 50243 */ {(12<<2)|2,{71,99,0}}, +/* 50244 */ {(12<<2)|2,{71,99,0}}, +/* 50245 */ {(12<<2)|2,{71,99,0}}, +/* 50246 */ {(12<<2)|2,{71,99,0}}, +/* 50247 */ {(12<<2)|2,{71,99,0}}, +/* 50248 */ {(12<<2)|2,{71,99,0}}, +/* 50249 */ {(12<<2)|2,{71,99,0}}, +/* 50250 */ {(12<<2)|2,{71,99,0}}, +/* 50251 */ {(12<<2)|2,{71,99,0}}, +/* 50252 */ {(12<<2)|2,{71,99,0}}, +/* 50253 */ {(12<<2)|2,{71,99,0}}, +/* 50254 */ {(12<<2)|2,{71,99,0}}, +/* 50255 */ {(12<<2)|2,{71,99,0}}, +/* 50256 */ {(12<<2)|2,{71,101,0}}, +/* 50257 */ {(12<<2)|2,{71,101,0}}, +/* 50258 */ {(12<<2)|2,{71,101,0}}, +/* 50259 */ {(12<<2)|2,{71,101,0}}, +/* 50260 */ {(12<<2)|2,{71,101,0}}, +/* 50261 */ {(12<<2)|2,{71,101,0}}, +/* 50262 */ {(12<<2)|2,{71,101,0}}, +/* 50263 */ {(12<<2)|2,{71,101,0}}, +/* 50264 */ {(12<<2)|2,{71,101,0}}, +/* 50265 */ {(12<<2)|2,{71,101,0}}, +/* 50266 */ {(12<<2)|2,{71,101,0}}, +/* 50267 */ {(12<<2)|2,{71,101,0}}, +/* 50268 */ {(12<<2)|2,{71,101,0}}, +/* 50269 */ {(12<<2)|2,{71,101,0}}, +/* 50270 */ {(12<<2)|2,{71,101,0}}, +/* 50271 */ {(12<<2)|2,{71,101,0}}, +/* 50272 */ {(12<<2)|2,{71,105,0}}, +/* 50273 */ {(12<<2)|2,{71,105,0}}, +/* 50274 */ {(12<<2)|2,{71,105,0}}, +/* 50275 */ {(12<<2)|2,{71,105,0}}, +/* 50276 */ {(12<<2)|2,{71,105,0}}, +/* 50277 */ {(12<<2)|2,{71,105,0}}, +/* 50278 */ {(12<<2)|2,{71,105,0}}, +/* 50279 */ {(12<<2)|2,{71,105,0}}, +/* 50280 */ {(12<<2)|2,{71,105,0}}, +/* 50281 */ {(12<<2)|2,{71,105,0}}, +/* 50282 */ {(12<<2)|2,{71,105,0}}, +/* 50283 */ {(12<<2)|2,{71,105,0}}, +/* 50284 */ {(12<<2)|2,{71,105,0}}, +/* 50285 */ {(12<<2)|2,{71,105,0}}, +/* 50286 */ {(12<<2)|2,{71,105,0}}, +/* 50287 */ {(12<<2)|2,{71,105,0}}, +/* 50288 */ {(12<<2)|2,{71,111,0}}, +/* 50289 */ {(12<<2)|2,{71,111,0}}, +/* 50290 */ {(12<<2)|2,{71,111,0}}, +/* 50291 */ {(12<<2)|2,{71,111,0}}, +/* 50292 */ {(12<<2)|2,{71,111,0}}, +/* 50293 */ {(12<<2)|2,{71,111,0}}, +/* 50294 */ {(12<<2)|2,{71,111,0}}, +/* 50295 */ {(12<<2)|2,{71,111,0}}, +/* 50296 */ {(12<<2)|2,{71,111,0}}, +/* 50297 */ {(12<<2)|2,{71,111,0}}, +/* 50298 */ {(12<<2)|2,{71,111,0}}, +/* 50299 */ {(12<<2)|2,{71,111,0}}, +/* 50300 */ {(12<<2)|2,{71,111,0}}, +/* 50301 */ {(12<<2)|2,{71,111,0}}, +/* 50302 */ {(12<<2)|2,{71,111,0}}, +/* 50303 */ {(12<<2)|2,{71,111,0}}, +/* 50304 */ {(12<<2)|2,{71,115,0}}, +/* 50305 */ {(12<<2)|2,{71,115,0}}, +/* 50306 */ {(12<<2)|2,{71,115,0}}, +/* 50307 */ {(12<<2)|2,{71,115,0}}, +/* 50308 */ {(12<<2)|2,{71,115,0}}, +/* 50309 */ {(12<<2)|2,{71,115,0}}, +/* 50310 */ {(12<<2)|2,{71,115,0}}, +/* 50311 */ {(12<<2)|2,{71,115,0}}, +/* 50312 */ {(12<<2)|2,{71,115,0}}, +/* 50313 */ {(12<<2)|2,{71,115,0}}, +/* 50314 */ {(12<<2)|2,{71,115,0}}, +/* 50315 */ {(12<<2)|2,{71,115,0}}, +/* 50316 */ {(12<<2)|2,{71,115,0}}, +/* 50317 */ {(12<<2)|2,{71,115,0}}, +/* 50318 */ {(12<<2)|2,{71,115,0}}, +/* 50319 */ {(12<<2)|2,{71,115,0}}, +/* 50320 */ {(12<<2)|2,{71,116,0}}, +/* 50321 */ {(12<<2)|2,{71,116,0}}, +/* 50322 */ {(12<<2)|2,{71,116,0}}, +/* 50323 */ {(12<<2)|2,{71,116,0}}, +/* 50324 */ {(12<<2)|2,{71,116,0}}, +/* 50325 */ {(12<<2)|2,{71,116,0}}, +/* 50326 */ {(12<<2)|2,{71,116,0}}, +/* 50327 */ {(12<<2)|2,{71,116,0}}, +/* 50328 */ {(12<<2)|2,{71,116,0}}, +/* 50329 */ {(12<<2)|2,{71,116,0}}, +/* 50330 */ {(12<<2)|2,{71,116,0}}, +/* 50331 */ {(12<<2)|2,{71,116,0}}, +/* 50332 */ {(12<<2)|2,{71,116,0}}, +/* 50333 */ {(12<<2)|2,{71,116,0}}, +/* 50334 */ {(12<<2)|2,{71,116,0}}, +/* 50335 */ {(12<<2)|2,{71,116,0}}, +/* 50336 */ {(13<<2)|2,{71,32,0}}, +/* 50337 */ {(13<<2)|2,{71,32,0}}, +/* 50338 */ {(13<<2)|2,{71,32,0}}, +/* 50339 */ {(13<<2)|2,{71,32,0}}, +/* 50340 */ {(13<<2)|2,{71,32,0}}, +/* 50341 */ {(13<<2)|2,{71,32,0}}, +/* 50342 */ {(13<<2)|2,{71,32,0}}, +/* 50343 */ {(13<<2)|2,{71,32,0}}, +/* 50344 */ {(13<<2)|2,{71,37,0}}, +/* 50345 */ {(13<<2)|2,{71,37,0}}, +/* 50346 */ {(13<<2)|2,{71,37,0}}, +/* 50347 */ {(13<<2)|2,{71,37,0}}, +/* 50348 */ {(13<<2)|2,{71,37,0}}, +/* 50349 */ {(13<<2)|2,{71,37,0}}, +/* 50350 */ {(13<<2)|2,{71,37,0}}, +/* 50351 */ {(13<<2)|2,{71,37,0}}, +/* 50352 */ {(13<<2)|2,{71,45,0}}, +/* 50353 */ {(13<<2)|2,{71,45,0}}, +/* 50354 */ {(13<<2)|2,{71,45,0}}, +/* 50355 */ {(13<<2)|2,{71,45,0}}, +/* 50356 */ {(13<<2)|2,{71,45,0}}, +/* 50357 */ {(13<<2)|2,{71,45,0}}, +/* 50358 */ {(13<<2)|2,{71,45,0}}, +/* 50359 */ {(13<<2)|2,{71,45,0}}, +/* 50360 */ {(13<<2)|2,{71,46,0}}, +/* 50361 */ {(13<<2)|2,{71,46,0}}, +/* 50362 */ {(13<<2)|2,{71,46,0}}, +/* 50363 */ {(13<<2)|2,{71,46,0}}, +/* 50364 */ {(13<<2)|2,{71,46,0}}, +/* 50365 */ {(13<<2)|2,{71,46,0}}, +/* 50366 */ {(13<<2)|2,{71,46,0}}, +/* 50367 */ {(13<<2)|2,{71,46,0}}, +/* 50368 */ {(13<<2)|2,{71,47,0}}, +/* 50369 */ {(13<<2)|2,{71,47,0}}, +/* 50370 */ {(13<<2)|2,{71,47,0}}, +/* 50371 */ {(13<<2)|2,{71,47,0}}, +/* 50372 */ {(13<<2)|2,{71,47,0}}, +/* 50373 */ {(13<<2)|2,{71,47,0}}, +/* 50374 */ {(13<<2)|2,{71,47,0}}, +/* 50375 */ {(13<<2)|2,{71,47,0}}, +/* 50376 */ {(13<<2)|2,{71,51,0}}, +/* 50377 */ {(13<<2)|2,{71,51,0}}, +/* 50378 */ {(13<<2)|2,{71,51,0}}, +/* 50379 */ {(13<<2)|2,{71,51,0}}, +/* 50380 */ {(13<<2)|2,{71,51,0}}, +/* 50381 */ {(13<<2)|2,{71,51,0}}, +/* 50382 */ {(13<<2)|2,{71,51,0}}, +/* 50383 */ {(13<<2)|2,{71,51,0}}, +/* 50384 */ {(13<<2)|2,{71,52,0}}, +/* 50385 */ {(13<<2)|2,{71,52,0}}, +/* 50386 */ {(13<<2)|2,{71,52,0}}, +/* 50387 */ {(13<<2)|2,{71,52,0}}, +/* 50388 */ {(13<<2)|2,{71,52,0}}, +/* 50389 */ {(13<<2)|2,{71,52,0}}, +/* 50390 */ {(13<<2)|2,{71,52,0}}, +/* 50391 */ {(13<<2)|2,{71,52,0}}, +/* 50392 */ {(13<<2)|2,{71,53,0}}, +/* 50393 */ {(13<<2)|2,{71,53,0}}, +/* 50394 */ {(13<<2)|2,{71,53,0}}, +/* 50395 */ {(13<<2)|2,{71,53,0}}, +/* 50396 */ {(13<<2)|2,{71,53,0}}, +/* 50397 */ {(13<<2)|2,{71,53,0}}, +/* 50398 */ {(13<<2)|2,{71,53,0}}, +/* 50399 */ {(13<<2)|2,{71,53,0}}, +/* 50400 */ {(13<<2)|2,{71,54,0}}, +/* 50401 */ {(13<<2)|2,{71,54,0}}, +/* 50402 */ {(13<<2)|2,{71,54,0}}, +/* 50403 */ {(13<<2)|2,{71,54,0}}, +/* 50404 */ {(13<<2)|2,{71,54,0}}, +/* 50405 */ {(13<<2)|2,{71,54,0}}, +/* 50406 */ {(13<<2)|2,{71,54,0}}, +/* 50407 */ {(13<<2)|2,{71,54,0}}, +/* 50408 */ {(13<<2)|2,{71,55,0}}, +/* 50409 */ {(13<<2)|2,{71,55,0}}, +/* 50410 */ {(13<<2)|2,{71,55,0}}, +/* 50411 */ {(13<<2)|2,{71,55,0}}, +/* 50412 */ {(13<<2)|2,{71,55,0}}, +/* 50413 */ {(13<<2)|2,{71,55,0}}, +/* 50414 */ {(13<<2)|2,{71,55,0}}, +/* 50415 */ {(13<<2)|2,{71,55,0}}, +/* 50416 */ {(13<<2)|2,{71,56,0}}, +/* 50417 */ {(13<<2)|2,{71,56,0}}, +/* 50418 */ {(13<<2)|2,{71,56,0}}, +/* 50419 */ {(13<<2)|2,{71,56,0}}, +/* 50420 */ {(13<<2)|2,{71,56,0}}, +/* 50421 */ {(13<<2)|2,{71,56,0}}, +/* 50422 */ {(13<<2)|2,{71,56,0}}, +/* 50423 */ {(13<<2)|2,{71,56,0}}, +/* 50424 */ {(13<<2)|2,{71,57,0}}, +/* 50425 */ {(13<<2)|2,{71,57,0}}, +/* 50426 */ {(13<<2)|2,{71,57,0}}, +/* 50427 */ {(13<<2)|2,{71,57,0}}, +/* 50428 */ {(13<<2)|2,{71,57,0}}, +/* 50429 */ {(13<<2)|2,{71,57,0}}, +/* 50430 */ {(13<<2)|2,{71,57,0}}, +/* 50431 */ {(13<<2)|2,{71,57,0}}, +/* 50432 */ {(13<<2)|2,{71,61,0}}, +/* 50433 */ {(13<<2)|2,{71,61,0}}, +/* 50434 */ {(13<<2)|2,{71,61,0}}, +/* 50435 */ {(13<<2)|2,{71,61,0}}, +/* 50436 */ {(13<<2)|2,{71,61,0}}, +/* 50437 */ {(13<<2)|2,{71,61,0}}, +/* 50438 */ {(13<<2)|2,{71,61,0}}, +/* 50439 */ {(13<<2)|2,{71,61,0}}, +/* 50440 */ {(13<<2)|2,{71,65,0}}, +/* 50441 */ {(13<<2)|2,{71,65,0}}, +/* 50442 */ {(13<<2)|2,{71,65,0}}, +/* 50443 */ {(13<<2)|2,{71,65,0}}, +/* 50444 */ {(13<<2)|2,{71,65,0}}, +/* 50445 */ {(13<<2)|2,{71,65,0}}, +/* 50446 */ {(13<<2)|2,{71,65,0}}, +/* 50447 */ {(13<<2)|2,{71,65,0}}, +/* 50448 */ {(13<<2)|2,{71,95,0}}, +/* 50449 */ {(13<<2)|2,{71,95,0}}, +/* 50450 */ {(13<<2)|2,{71,95,0}}, +/* 50451 */ {(13<<2)|2,{71,95,0}}, +/* 50452 */ {(13<<2)|2,{71,95,0}}, +/* 50453 */ {(13<<2)|2,{71,95,0}}, +/* 50454 */ {(13<<2)|2,{71,95,0}}, +/* 50455 */ {(13<<2)|2,{71,95,0}}, +/* 50456 */ {(13<<2)|2,{71,98,0}}, +/* 50457 */ {(13<<2)|2,{71,98,0}}, +/* 50458 */ {(13<<2)|2,{71,98,0}}, +/* 50459 */ {(13<<2)|2,{71,98,0}}, +/* 50460 */ {(13<<2)|2,{71,98,0}}, +/* 50461 */ {(13<<2)|2,{71,98,0}}, +/* 50462 */ {(13<<2)|2,{71,98,0}}, +/* 50463 */ {(13<<2)|2,{71,98,0}}, +/* 50464 */ {(13<<2)|2,{71,100,0}}, +/* 50465 */ {(13<<2)|2,{71,100,0}}, +/* 50466 */ {(13<<2)|2,{71,100,0}}, +/* 50467 */ {(13<<2)|2,{71,100,0}}, +/* 50468 */ {(13<<2)|2,{71,100,0}}, +/* 50469 */ {(13<<2)|2,{71,100,0}}, +/* 50470 */ {(13<<2)|2,{71,100,0}}, +/* 50471 */ {(13<<2)|2,{71,100,0}}, +/* 50472 */ {(13<<2)|2,{71,102,0}}, +/* 50473 */ {(13<<2)|2,{71,102,0}}, +/* 50474 */ {(13<<2)|2,{71,102,0}}, +/* 50475 */ {(13<<2)|2,{71,102,0}}, +/* 50476 */ {(13<<2)|2,{71,102,0}}, +/* 50477 */ {(13<<2)|2,{71,102,0}}, +/* 50478 */ {(13<<2)|2,{71,102,0}}, +/* 50479 */ {(13<<2)|2,{71,102,0}}, +/* 50480 */ {(13<<2)|2,{71,103,0}}, +/* 50481 */ {(13<<2)|2,{71,103,0}}, +/* 50482 */ {(13<<2)|2,{71,103,0}}, +/* 50483 */ {(13<<2)|2,{71,103,0}}, +/* 50484 */ {(13<<2)|2,{71,103,0}}, +/* 50485 */ {(13<<2)|2,{71,103,0}}, +/* 50486 */ {(13<<2)|2,{71,103,0}}, +/* 50487 */ {(13<<2)|2,{71,103,0}}, +/* 50488 */ {(13<<2)|2,{71,104,0}}, +/* 50489 */ {(13<<2)|2,{71,104,0}}, +/* 50490 */ {(13<<2)|2,{71,104,0}}, +/* 50491 */ {(13<<2)|2,{71,104,0}}, +/* 50492 */ {(13<<2)|2,{71,104,0}}, +/* 50493 */ {(13<<2)|2,{71,104,0}}, +/* 50494 */ {(13<<2)|2,{71,104,0}}, +/* 50495 */ {(13<<2)|2,{71,104,0}}, +/* 50496 */ {(13<<2)|2,{71,108,0}}, +/* 50497 */ {(13<<2)|2,{71,108,0}}, +/* 50498 */ {(13<<2)|2,{71,108,0}}, +/* 50499 */ {(13<<2)|2,{71,108,0}}, +/* 50500 */ {(13<<2)|2,{71,108,0}}, +/* 50501 */ {(13<<2)|2,{71,108,0}}, +/* 50502 */ {(13<<2)|2,{71,108,0}}, +/* 50503 */ {(13<<2)|2,{71,108,0}}, +/* 50504 */ {(13<<2)|2,{71,109,0}}, +/* 50505 */ {(13<<2)|2,{71,109,0}}, +/* 50506 */ {(13<<2)|2,{71,109,0}}, +/* 50507 */ {(13<<2)|2,{71,109,0}}, +/* 50508 */ {(13<<2)|2,{71,109,0}}, +/* 50509 */ {(13<<2)|2,{71,109,0}}, +/* 50510 */ {(13<<2)|2,{71,109,0}}, +/* 50511 */ {(13<<2)|2,{71,109,0}}, +/* 50512 */ {(13<<2)|2,{71,110,0}}, +/* 50513 */ {(13<<2)|2,{71,110,0}}, +/* 50514 */ {(13<<2)|2,{71,110,0}}, +/* 50515 */ {(13<<2)|2,{71,110,0}}, +/* 50516 */ {(13<<2)|2,{71,110,0}}, +/* 50517 */ {(13<<2)|2,{71,110,0}}, +/* 50518 */ {(13<<2)|2,{71,110,0}}, +/* 50519 */ {(13<<2)|2,{71,110,0}}, +/* 50520 */ {(13<<2)|2,{71,112,0}}, +/* 50521 */ {(13<<2)|2,{71,112,0}}, +/* 50522 */ {(13<<2)|2,{71,112,0}}, +/* 50523 */ {(13<<2)|2,{71,112,0}}, +/* 50524 */ {(13<<2)|2,{71,112,0}}, +/* 50525 */ {(13<<2)|2,{71,112,0}}, +/* 50526 */ {(13<<2)|2,{71,112,0}}, +/* 50527 */ {(13<<2)|2,{71,112,0}}, +/* 50528 */ {(13<<2)|2,{71,114,0}}, +/* 50529 */ {(13<<2)|2,{71,114,0}}, +/* 50530 */ {(13<<2)|2,{71,114,0}}, +/* 50531 */ {(13<<2)|2,{71,114,0}}, +/* 50532 */ {(13<<2)|2,{71,114,0}}, +/* 50533 */ {(13<<2)|2,{71,114,0}}, +/* 50534 */ {(13<<2)|2,{71,114,0}}, +/* 50535 */ {(13<<2)|2,{71,114,0}}, +/* 50536 */ {(13<<2)|2,{71,117,0}}, +/* 50537 */ {(13<<2)|2,{71,117,0}}, +/* 50538 */ {(13<<2)|2,{71,117,0}}, +/* 50539 */ {(13<<2)|2,{71,117,0}}, +/* 50540 */ {(13<<2)|2,{71,117,0}}, +/* 50541 */ {(13<<2)|2,{71,117,0}}, +/* 50542 */ {(13<<2)|2,{71,117,0}}, +/* 50543 */ {(13<<2)|2,{71,117,0}}, +/* 50544 */ {(14<<2)|2,{71,58,0}}, +/* 50545 */ {(14<<2)|2,{71,58,0}}, +/* 50546 */ {(14<<2)|2,{71,58,0}}, +/* 50547 */ {(14<<2)|2,{71,58,0}}, +/* 50548 */ {(14<<2)|2,{71,66,0}}, +/* 50549 */ {(14<<2)|2,{71,66,0}}, +/* 50550 */ {(14<<2)|2,{71,66,0}}, +/* 50551 */ {(14<<2)|2,{71,66,0}}, +/* 50552 */ {(14<<2)|2,{71,67,0}}, +/* 50553 */ {(14<<2)|2,{71,67,0}}, +/* 50554 */ {(14<<2)|2,{71,67,0}}, +/* 50555 */ {(14<<2)|2,{71,67,0}}, +/* 50556 */ {(14<<2)|2,{71,68,0}}, +/* 50557 */ {(14<<2)|2,{71,68,0}}, +/* 50558 */ {(14<<2)|2,{71,68,0}}, +/* 50559 */ {(14<<2)|2,{71,68,0}}, +/* 50560 */ {(14<<2)|2,{71,69,0}}, +/* 50561 */ {(14<<2)|2,{71,69,0}}, +/* 50562 */ {(14<<2)|2,{71,69,0}}, +/* 50563 */ {(14<<2)|2,{71,69,0}}, +/* 50564 */ {(14<<2)|2,{71,70,0}}, +/* 50565 */ {(14<<2)|2,{71,70,0}}, +/* 50566 */ {(14<<2)|2,{71,70,0}}, +/* 50567 */ {(14<<2)|2,{71,70,0}}, +/* 50568 */ {(14<<2)|2,{71,71,0}}, +/* 50569 */ {(14<<2)|2,{71,71,0}}, +/* 50570 */ {(14<<2)|2,{71,71,0}}, +/* 50571 */ {(14<<2)|2,{71,71,0}}, +/* 50572 */ {(14<<2)|2,{71,72,0}}, +/* 50573 */ {(14<<2)|2,{71,72,0}}, +/* 50574 */ {(14<<2)|2,{71,72,0}}, +/* 50575 */ {(14<<2)|2,{71,72,0}}, +/* 50576 */ {(14<<2)|2,{71,73,0}}, +/* 50577 */ {(14<<2)|2,{71,73,0}}, +/* 50578 */ {(14<<2)|2,{71,73,0}}, +/* 50579 */ {(14<<2)|2,{71,73,0}}, +/* 50580 */ {(14<<2)|2,{71,74,0}}, +/* 50581 */ {(14<<2)|2,{71,74,0}}, +/* 50582 */ {(14<<2)|2,{71,74,0}}, +/* 50583 */ {(14<<2)|2,{71,74,0}}, +/* 50584 */ {(14<<2)|2,{71,75,0}}, +/* 50585 */ {(14<<2)|2,{71,75,0}}, +/* 50586 */ {(14<<2)|2,{71,75,0}}, +/* 50587 */ {(14<<2)|2,{71,75,0}}, +/* 50588 */ {(14<<2)|2,{71,76,0}}, +/* 50589 */ {(14<<2)|2,{71,76,0}}, +/* 50590 */ {(14<<2)|2,{71,76,0}}, +/* 50591 */ {(14<<2)|2,{71,76,0}}, +/* 50592 */ {(14<<2)|2,{71,77,0}}, +/* 50593 */ {(14<<2)|2,{71,77,0}}, +/* 50594 */ {(14<<2)|2,{71,77,0}}, +/* 50595 */ {(14<<2)|2,{71,77,0}}, +/* 50596 */ {(14<<2)|2,{71,78,0}}, +/* 50597 */ {(14<<2)|2,{71,78,0}}, +/* 50598 */ {(14<<2)|2,{71,78,0}}, +/* 50599 */ {(14<<2)|2,{71,78,0}}, +/* 50600 */ {(14<<2)|2,{71,79,0}}, +/* 50601 */ {(14<<2)|2,{71,79,0}}, +/* 50602 */ {(14<<2)|2,{71,79,0}}, +/* 50603 */ {(14<<2)|2,{71,79,0}}, +/* 50604 */ {(14<<2)|2,{71,80,0}}, +/* 50605 */ {(14<<2)|2,{71,80,0}}, +/* 50606 */ {(14<<2)|2,{71,80,0}}, +/* 50607 */ {(14<<2)|2,{71,80,0}}, +/* 50608 */ {(14<<2)|2,{71,81,0}}, +/* 50609 */ {(14<<2)|2,{71,81,0}}, +/* 50610 */ {(14<<2)|2,{71,81,0}}, +/* 50611 */ {(14<<2)|2,{71,81,0}}, +/* 50612 */ {(14<<2)|2,{71,82,0}}, +/* 50613 */ {(14<<2)|2,{71,82,0}}, +/* 50614 */ {(14<<2)|2,{71,82,0}}, +/* 50615 */ {(14<<2)|2,{71,82,0}}, +/* 50616 */ {(14<<2)|2,{71,83,0}}, +/* 50617 */ {(14<<2)|2,{71,83,0}}, +/* 50618 */ {(14<<2)|2,{71,83,0}}, +/* 50619 */ {(14<<2)|2,{71,83,0}}, +/* 50620 */ {(14<<2)|2,{71,84,0}}, +/* 50621 */ {(14<<2)|2,{71,84,0}}, +/* 50622 */ {(14<<2)|2,{71,84,0}}, +/* 50623 */ {(14<<2)|2,{71,84,0}}, +/* 50624 */ {(14<<2)|2,{71,85,0}}, +/* 50625 */ {(14<<2)|2,{71,85,0}}, +/* 50626 */ {(14<<2)|2,{71,85,0}}, +/* 50627 */ {(14<<2)|2,{71,85,0}}, +/* 50628 */ {(14<<2)|2,{71,86,0}}, +/* 50629 */ {(14<<2)|2,{71,86,0}}, +/* 50630 */ {(14<<2)|2,{71,86,0}}, +/* 50631 */ {(14<<2)|2,{71,86,0}}, +/* 50632 */ {(14<<2)|2,{71,87,0}}, +/* 50633 */ {(14<<2)|2,{71,87,0}}, +/* 50634 */ {(14<<2)|2,{71,87,0}}, +/* 50635 */ {(14<<2)|2,{71,87,0}}, +/* 50636 */ {(14<<2)|2,{71,89,0}}, +/* 50637 */ {(14<<2)|2,{71,89,0}}, +/* 50638 */ {(14<<2)|2,{71,89,0}}, +/* 50639 */ {(14<<2)|2,{71,89,0}}, +/* 50640 */ {(14<<2)|2,{71,106,0}}, +/* 50641 */ {(14<<2)|2,{71,106,0}}, +/* 50642 */ {(14<<2)|2,{71,106,0}}, +/* 50643 */ {(14<<2)|2,{71,106,0}}, +/* 50644 */ {(14<<2)|2,{71,107,0}}, +/* 50645 */ {(14<<2)|2,{71,107,0}}, +/* 50646 */ {(14<<2)|2,{71,107,0}}, +/* 50647 */ {(14<<2)|2,{71,107,0}}, +/* 50648 */ {(14<<2)|2,{71,113,0}}, +/* 50649 */ {(14<<2)|2,{71,113,0}}, +/* 50650 */ {(14<<2)|2,{71,113,0}}, +/* 50651 */ {(14<<2)|2,{71,113,0}}, +/* 50652 */ {(14<<2)|2,{71,118,0}}, +/* 50653 */ {(14<<2)|2,{71,118,0}}, +/* 50654 */ {(14<<2)|2,{71,118,0}}, +/* 50655 */ {(14<<2)|2,{71,118,0}}, +/* 50656 */ {(14<<2)|2,{71,119,0}}, +/* 50657 */ {(14<<2)|2,{71,119,0}}, +/* 50658 */ {(14<<2)|2,{71,119,0}}, +/* 50659 */ {(14<<2)|2,{71,119,0}}, +/* 50660 */ {(14<<2)|2,{71,120,0}}, +/* 50661 */ {(14<<2)|2,{71,120,0}}, +/* 50662 */ {(14<<2)|2,{71,120,0}}, +/* 50663 */ {(14<<2)|2,{71,120,0}}, +/* 50664 */ {(14<<2)|2,{71,121,0}}, +/* 50665 */ {(14<<2)|2,{71,121,0}}, +/* 50666 */ {(14<<2)|2,{71,121,0}}, +/* 50667 */ {(14<<2)|2,{71,121,0}}, +/* 50668 */ {(14<<2)|2,{71,122,0}}, +/* 50669 */ {(14<<2)|2,{71,122,0}}, +/* 50670 */ {(14<<2)|2,{71,122,0}}, +/* 50671 */ {(14<<2)|2,{71,122,0}}, +/* 50672 */ {(15<<2)|2,{71,38,0}}, +/* 50673 */ {(15<<2)|2,{71,38,0}}, +/* 50674 */ {(15<<2)|2,{71,42,0}}, +/* 50675 */ {(15<<2)|2,{71,42,0}}, +/* 50676 */ {(15<<2)|2,{71,44,0}}, +/* 50677 */ {(15<<2)|2,{71,44,0}}, +/* 50678 */ {(15<<2)|2,{71,59,0}}, +/* 50679 */ {(15<<2)|2,{71,59,0}}, +/* 50680 */ {(15<<2)|2,{71,88,0}}, +/* 50681 */ {(15<<2)|2,{71,88,0}}, +/* 50682 */ {(15<<2)|2,{71,90,0}}, +/* 50683 */ {(15<<2)|2,{71,90,0}}, +/* 50684 */ {(7<<2)|1,{71,0,0}}, +/* 50685 */ {(7<<2)|1,{71,0,0}}, +/* 50686 */ {(7<<2)|1,{71,0,0}}, +/* 50687 */ {(7<<2)|1,{71,0,0}}, +/* 50688 */ {(12<<2)|2,{72,48,0}}, +/* 50689 */ {(12<<2)|2,{72,48,0}}, +/* 50690 */ {(12<<2)|2,{72,48,0}}, +/* 50691 */ {(12<<2)|2,{72,48,0}}, +/* 50692 */ {(12<<2)|2,{72,48,0}}, +/* 50693 */ {(12<<2)|2,{72,48,0}}, +/* 50694 */ {(12<<2)|2,{72,48,0}}, +/* 50695 */ {(12<<2)|2,{72,48,0}}, +/* 50696 */ {(12<<2)|2,{72,48,0}}, +/* 50697 */ {(12<<2)|2,{72,48,0}}, +/* 50698 */ {(12<<2)|2,{72,48,0}}, +/* 50699 */ {(12<<2)|2,{72,48,0}}, +/* 50700 */ {(12<<2)|2,{72,48,0}}, +/* 50701 */ {(12<<2)|2,{72,48,0}}, +/* 50702 */ {(12<<2)|2,{72,48,0}}, +/* 50703 */ {(12<<2)|2,{72,48,0}}, +/* 50704 */ {(12<<2)|2,{72,49,0}}, +/* 50705 */ {(12<<2)|2,{72,49,0}}, +/* 50706 */ {(12<<2)|2,{72,49,0}}, +/* 50707 */ {(12<<2)|2,{72,49,0}}, +/* 50708 */ {(12<<2)|2,{72,49,0}}, +/* 50709 */ {(12<<2)|2,{72,49,0}}, +/* 50710 */ {(12<<2)|2,{72,49,0}}, +/* 50711 */ {(12<<2)|2,{72,49,0}}, +/* 50712 */ {(12<<2)|2,{72,49,0}}, +/* 50713 */ {(12<<2)|2,{72,49,0}}, +/* 50714 */ {(12<<2)|2,{72,49,0}}, +/* 50715 */ {(12<<2)|2,{72,49,0}}, +/* 50716 */ {(12<<2)|2,{72,49,0}}, +/* 50717 */ {(12<<2)|2,{72,49,0}}, +/* 50718 */ {(12<<2)|2,{72,49,0}}, +/* 50719 */ {(12<<2)|2,{72,49,0}}, +/* 50720 */ {(12<<2)|2,{72,50,0}}, +/* 50721 */ {(12<<2)|2,{72,50,0}}, +/* 50722 */ {(12<<2)|2,{72,50,0}}, +/* 50723 */ {(12<<2)|2,{72,50,0}}, +/* 50724 */ {(12<<2)|2,{72,50,0}}, +/* 50725 */ {(12<<2)|2,{72,50,0}}, +/* 50726 */ {(12<<2)|2,{72,50,0}}, +/* 50727 */ {(12<<2)|2,{72,50,0}}, +/* 50728 */ {(12<<2)|2,{72,50,0}}, +/* 50729 */ {(12<<2)|2,{72,50,0}}, +/* 50730 */ {(12<<2)|2,{72,50,0}}, +/* 50731 */ {(12<<2)|2,{72,50,0}}, +/* 50732 */ {(12<<2)|2,{72,50,0}}, +/* 50733 */ {(12<<2)|2,{72,50,0}}, +/* 50734 */ {(12<<2)|2,{72,50,0}}, +/* 50735 */ {(12<<2)|2,{72,50,0}}, +/* 50736 */ {(12<<2)|2,{72,97,0}}, +/* 50737 */ {(12<<2)|2,{72,97,0}}, +/* 50738 */ {(12<<2)|2,{72,97,0}}, +/* 50739 */ {(12<<2)|2,{72,97,0}}, +/* 50740 */ {(12<<2)|2,{72,97,0}}, +/* 50741 */ {(12<<2)|2,{72,97,0}}, +/* 50742 */ {(12<<2)|2,{72,97,0}}, +/* 50743 */ {(12<<2)|2,{72,97,0}}, +/* 50744 */ {(12<<2)|2,{72,97,0}}, +/* 50745 */ {(12<<2)|2,{72,97,0}}, +/* 50746 */ {(12<<2)|2,{72,97,0}}, +/* 50747 */ {(12<<2)|2,{72,97,0}}, +/* 50748 */ {(12<<2)|2,{72,97,0}}, +/* 50749 */ {(12<<2)|2,{72,97,0}}, +/* 50750 */ {(12<<2)|2,{72,97,0}}, +/* 50751 */ {(12<<2)|2,{72,97,0}}, +/* 50752 */ {(12<<2)|2,{72,99,0}}, +/* 50753 */ {(12<<2)|2,{72,99,0}}, +/* 50754 */ {(12<<2)|2,{72,99,0}}, +/* 50755 */ {(12<<2)|2,{72,99,0}}, +/* 50756 */ {(12<<2)|2,{72,99,0}}, +/* 50757 */ {(12<<2)|2,{72,99,0}}, +/* 50758 */ {(12<<2)|2,{72,99,0}}, +/* 50759 */ {(12<<2)|2,{72,99,0}}, +/* 50760 */ {(12<<2)|2,{72,99,0}}, +/* 50761 */ {(12<<2)|2,{72,99,0}}, +/* 50762 */ {(12<<2)|2,{72,99,0}}, +/* 50763 */ {(12<<2)|2,{72,99,0}}, +/* 50764 */ {(12<<2)|2,{72,99,0}}, +/* 50765 */ {(12<<2)|2,{72,99,0}}, +/* 50766 */ {(12<<2)|2,{72,99,0}}, +/* 50767 */ {(12<<2)|2,{72,99,0}}, +/* 50768 */ {(12<<2)|2,{72,101,0}}, +/* 50769 */ {(12<<2)|2,{72,101,0}}, +/* 50770 */ {(12<<2)|2,{72,101,0}}, +/* 50771 */ {(12<<2)|2,{72,101,0}}, +/* 50772 */ {(12<<2)|2,{72,101,0}}, +/* 50773 */ {(12<<2)|2,{72,101,0}}, +/* 50774 */ {(12<<2)|2,{72,101,0}}, +/* 50775 */ {(12<<2)|2,{72,101,0}}, +/* 50776 */ {(12<<2)|2,{72,101,0}}, +/* 50777 */ {(12<<2)|2,{72,101,0}}, +/* 50778 */ {(12<<2)|2,{72,101,0}}, +/* 50779 */ {(12<<2)|2,{72,101,0}}, +/* 50780 */ {(12<<2)|2,{72,101,0}}, +/* 50781 */ {(12<<2)|2,{72,101,0}}, +/* 50782 */ {(12<<2)|2,{72,101,0}}, +/* 50783 */ {(12<<2)|2,{72,101,0}}, +/* 50784 */ {(12<<2)|2,{72,105,0}}, +/* 50785 */ {(12<<2)|2,{72,105,0}}, +/* 50786 */ {(12<<2)|2,{72,105,0}}, +/* 50787 */ {(12<<2)|2,{72,105,0}}, +/* 50788 */ {(12<<2)|2,{72,105,0}}, +/* 50789 */ {(12<<2)|2,{72,105,0}}, +/* 50790 */ {(12<<2)|2,{72,105,0}}, +/* 50791 */ {(12<<2)|2,{72,105,0}}, +/* 50792 */ {(12<<2)|2,{72,105,0}}, +/* 50793 */ {(12<<2)|2,{72,105,0}}, +/* 50794 */ {(12<<2)|2,{72,105,0}}, +/* 50795 */ {(12<<2)|2,{72,105,0}}, +/* 50796 */ {(12<<2)|2,{72,105,0}}, +/* 50797 */ {(12<<2)|2,{72,105,0}}, +/* 50798 */ {(12<<2)|2,{72,105,0}}, +/* 50799 */ {(12<<2)|2,{72,105,0}}, +/* 50800 */ {(12<<2)|2,{72,111,0}}, +/* 50801 */ {(12<<2)|2,{72,111,0}}, +/* 50802 */ {(12<<2)|2,{72,111,0}}, +/* 50803 */ {(12<<2)|2,{72,111,0}}, +/* 50804 */ {(12<<2)|2,{72,111,0}}, +/* 50805 */ {(12<<2)|2,{72,111,0}}, +/* 50806 */ {(12<<2)|2,{72,111,0}}, +/* 50807 */ {(12<<2)|2,{72,111,0}}, +/* 50808 */ {(12<<2)|2,{72,111,0}}, +/* 50809 */ {(12<<2)|2,{72,111,0}}, +/* 50810 */ {(12<<2)|2,{72,111,0}}, +/* 50811 */ {(12<<2)|2,{72,111,0}}, +/* 50812 */ {(12<<2)|2,{72,111,0}}, +/* 50813 */ {(12<<2)|2,{72,111,0}}, +/* 50814 */ {(12<<2)|2,{72,111,0}}, +/* 50815 */ {(12<<2)|2,{72,111,0}}, +/* 50816 */ {(12<<2)|2,{72,115,0}}, +/* 50817 */ {(12<<2)|2,{72,115,0}}, +/* 50818 */ {(12<<2)|2,{72,115,0}}, +/* 50819 */ {(12<<2)|2,{72,115,0}}, +/* 50820 */ {(12<<2)|2,{72,115,0}}, +/* 50821 */ {(12<<2)|2,{72,115,0}}, +/* 50822 */ {(12<<2)|2,{72,115,0}}, +/* 50823 */ {(12<<2)|2,{72,115,0}}, +/* 50824 */ {(12<<2)|2,{72,115,0}}, +/* 50825 */ {(12<<2)|2,{72,115,0}}, +/* 50826 */ {(12<<2)|2,{72,115,0}}, +/* 50827 */ {(12<<2)|2,{72,115,0}}, +/* 50828 */ {(12<<2)|2,{72,115,0}}, +/* 50829 */ {(12<<2)|2,{72,115,0}}, +/* 50830 */ {(12<<2)|2,{72,115,0}}, +/* 50831 */ {(12<<2)|2,{72,115,0}}, +/* 50832 */ {(12<<2)|2,{72,116,0}}, +/* 50833 */ {(12<<2)|2,{72,116,0}}, +/* 50834 */ {(12<<2)|2,{72,116,0}}, +/* 50835 */ {(12<<2)|2,{72,116,0}}, +/* 50836 */ {(12<<2)|2,{72,116,0}}, +/* 50837 */ {(12<<2)|2,{72,116,0}}, +/* 50838 */ {(12<<2)|2,{72,116,0}}, +/* 50839 */ {(12<<2)|2,{72,116,0}}, +/* 50840 */ {(12<<2)|2,{72,116,0}}, +/* 50841 */ {(12<<2)|2,{72,116,0}}, +/* 50842 */ {(12<<2)|2,{72,116,0}}, +/* 50843 */ {(12<<2)|2,{72,116,0}}, +/* 50844 */ {(12<<2)|2,{72,116,0}}, +/* 50845 */ {(12<<2)|2,{72,116,0}}, +/* 50846 */ {(12<<2)|2,{72,116,0}}, +/* 50847 */ {(12<<2)|2,{72,116,0}}, +/* 50848 */ {(13<<2)|2,{72,32,0}}, +/* 50849 */ {(13<<2)|2,{72,32,0}}, +/* 50850 */ {(13<<2)|2,{72,32,0}}, +/* 50851 */ {(13<<2)|2,{72,32,0}}, +/* 50852 */ {(13<<2)|2,{72,32,0}}, +/* 50853 */ {(13<<2)|2,{72,32,0}}, +/* 50854 */ {(13<<2)|2,{72,32,0}}, +/* 50855 */ {(13<<2)|2,{72,32,0}}, +/* 50856 */ {(13<<2)|2,{72,37,0}}, +/* 50857 */ {(13<<2)|2,{72,37,0}}, +/* 50858 */ {(13<<2)|2,{72,37,0}}, +/* 50859 */ {(13<<2)|2,{72,37,0}}, +/* 50860 */ {(13<<2)|2,{72,37,0}}, +/* 50861 */ {(13<<2)|2,{72,37,0}}, +/* 50862 */ {(13<<2)|2,{72,37,0}}, +/* 50863 */ {(13<<2)|2,{72,37,0}}, +/* 50864 */ {(13<<2)|2,{72,45,0}}, +/* 50865 */ {(13<<2)|2,{72,45,0}}, +/* 50866 */ {(13<<2)|2,{72,45,0}}, +/* 50867 */ {(13<<2)|2,{72,45,0}}, +/* 50868 */ {(13<<2)|2,{72,45,0}}, +/* 50869 */ {(13<<2)|2,{72,45,0}}, +/* 50870 */ {(13<<2)|2,{72,45,0}}, +/* 50871 */ {(13<<2)|2,{72,45,0}}, +/* 50872 */ {(13<<2)|2,{72,46,0}}, +/* 50873 */ {(13<<2)|2,{72,46,0}}, +/* 50874 */ {(13<<2)|2,{72,46,0}}, +/* 50875 */ {(13<<2)|2,{72,46,0}}, +/* 50876 */ {(13<<2)|2,{72,46,0}}, +/* 50877 */ {(13<<2)|2,{72,46,0}}, +/* 50878 */ {(13<<2)|2,{72,46,0}}, +/* 50879 */ {(13<<2)|2,{72,46,0}}, +/* 50880 */ {(13<<2)|2,{72,47,0}}, +/* 50881 */ {(13<<2)|2,{72,47,0}}, +/* 50882 */ {(13<<2)|2,{72,47,0}}, +/* 50883 */ {(13<<2)|2,{72,47,0}}, +/* 50884 */ {(13<<2)|2,{72,47,0}}, +/* 50885 */ {(13<<2)|2,{72,47,0}}, +/* 50886 */ {(13<<2)|2,{72,47,0}}, +/* 50887 */ {(13<<2)|2,{72,47,0}}, +/* 50888 */ {(13<<2)|2,{72,51,0}}, +/* 50889 */ {(13<<2)|2,{72,51,0}}, +/* 50890 */ {(13<<2)|2,{72,51,0}}, +/* 50891 */ {(13<<2)|2,{72,51,0}}, +/* 50892 */ {(13<<2)|2,{72,51,0}}, +/* 50893 */ {(13<<2)|2,{72,51,0}}, +/* 50894 */ {(13<<2)|2,{72,51,0}}, +/* 50895 */ {(13<<2)|2,{72,51,0}}, +/* 50896 */ {(13<<2)|2,{72,52,0}}, +/* 50897 */ {(13<<2)|2,{72,52,0}}, +/* 50898 */ {(13<<2)|2,{72,52,0}}, +/* 50899 */ {(13<<2)|2,{72,52,0}}, +/* 50900 */ {(13<<2)|2,{72,52,0}}, +/* 50901 */ {(13<<2)|2,{72,52,0}}, +/* 50902 */ {(13<<2)|2,{72,52,0}}, +/* 50903 */ {(13<<2)|2,{72,52,0}}, +/* 50904 */ {(13<<2)|2,{72,53,0}}, +/* 50905 */ {(13<<2)|2,{72,53,0}}, +/* 50906 */ {(13<<2)|2,{72,53,0}}, +/* 50907 */ {(13<<2)|2,{72,53,0}}, +/* 50908 */ {(13<<2)|2,{72,53,0}}, +/* 50909 */ {(13<<2)|2,{72,53,0}}, +/* 50910 */ {(13<<2)|2,{72,53,0}}, +/* 50911 */ {(13<<2)|2,{72,53,0}}, +/* 50912 */ {(13<<2)|2,{72,54,0}}, +/* 50913 */ {(13<<2)|2,{72,54,0}}, +/* 50914 */ {(13<<2)|2,{72,54,0}}, +/* 50915 */ {(13<<2)|2,{72,54,0}}, +/* 50916 */ {(13<<2)|2,{72,54,0}}, +/* 50917 */ {(13<<2)|2,{72,54,0}}, +/* 50918 */ {(13<<2)|2,{72,54,0}}, +/* 50919 */ {(13<<2)|2,{72,54,0}}, +/* 50920 */ {(13<<2)|2,{72,55,0}}, +/* 50921 */ {(13<<2)|2,{72,55,0}}, +/* 50922 */ {(13<<2)|2,{72,55,0}}, +/* 50923 */ {(13<<2)|2,{72,55,0}}, +/* 50924 */ {(13<<2)|2,{72,55,0}}, +/* 50925 */ {(13<<2)|2,{72,55,0}}, +/* 50926 */ {(13<<2)|2,{72,55,0}}, +/* 50927 */ {(13<<2)|2,{72,55,0}}, +/* 50928 */ {(13<<2)|2,{72,56,0}}, +/* 50929 */ {(13<<2)|2,{72,56,0}}, +/* 50930 */ {(13<<2)|2,{72,56,0}}, +/* 50931 */ {(13<<2)|2,{72,56,0}}, +/* 50932 */ {(13<<2)|2,{72,56,0}}, +/* 50933 */ {(13<<2)|2,{72,56,0}}, +/* 50934 */ {(13<<2)|2,{72,56,0}}, +/* 50935 */ {(13<<2)|2,{72,56,0}}, +/* 50936 */ {(13<<2)|2,{72,57,0}}, +/* 50937 */ {(13<<2)|2,{72,57,0}}, +/* 50938 */ {(13<<2)|2,{72,57,0}}, +/* 50939 */ {(13<<2)|2,{72,57,0}}, +/* 50940 */ {(13<<2)|2,{72,57,0}}, +/* 50941 */ {(13<<2)|2,{72,57,0}}, +/* 50942 */ {(13<<2)|2,{72,57,0}}, +/* 50943 */ {(13<<2)|2,{72,57,0}}, +/* 50944 */ {(13<<2)|2,{72,61,0}}, +/* 50945 */ {(13<<2)|2,{72,61,0}}, +/* 50946 */ {(13<<2)|2,{72,61,0}}, +/* 50947 */ {(13<<2)|2,{72,61,0}}, +/* 50948 */ {(13<<2)|2,{72,61,0}}, +/* 50949 */ {(13<<2)|2,{72,61,0}}, +/* 50950 */ {(13<<2)|2,{72,61,0}}, +/* 50951 */ {(13<<2)|2,{72,61,0}}, +/* 50952 */ {(13<<2)|2,{72,65,0}}, +/* 50953 */ {(13<<2)|2,{72,65,0}}, +/* 50954 */ {(13<<2)|2,{72,65,0}}, +/* 50955 */ {(13<<2)|2,{72,65,0}}, +/* 50956 */ {(13<<2)|2,{72,65,0}}, +/* 50957 */ {(13<<2)|2,{72,65,0}}, +/* 50958 */ {(13<<2)|2,{72,65,0}}, +/* 50959 */ {(13<<2)|2,{72,65,0}}, +/* 50960 */ {(13<<2)|2,{72,95,0}}, +/* 50961 */ {(13<<2)|2,{72,95,0}}, +/* 50962 */ {(13<<2)|2,{72,95,0}}, +/* 50963 */ {(13<<2)|2,{72,95,0}}, +/* 50964 */ {(13<<2)|2,{72,95,0}}, +/* 50965 */ {(13<<2)|2,{72,95,0}}, +/* 50966 */ {(13<<2)|2,{72,95,0}}, +/* 50967 */ {(13<<2)|2,{72,95,0}}, +/* 50968 */ {(13<<2)|2,{72,98,0}}, +/* 50969 */ {(13<<2)|2,{72,98,0}}, +/* 50970 */ {(13<<2)|2,{72,98,0}}, +/* 50971 */ {(13<<2)|2,{72,98,0}}, +/* 50972 */ {(13<<2)|2,{72,98,0}}, +/* 50973 */ {(13<<2)|2,{72,98,0}}, +/* 50974 */ {(13<<2)|2,{72,98,0}}, +/* 50975 */ {(13<<2)|2,{72,98,0}}, +/* 50976 */ {(13<<2)|2,{72,100,0}}, +/* 50977 */ {(13<<2)|2,{72,100,0}}, +/* 50978 */ {(13<<2)|2,{72,100,0}}, +/* 50979 */ {(13<<2)|2,{72,100,0}}, +/* 50980 */ {(13<<2)|2,{72,100,0}}, +/* 50981 */ {(13<<2)|2,{72,100,0}}, +/* 50982 */ {(13<<2)|2,{72,100,0}}, +/* 50983 */ {(13<<2)|2,{72,100,0}}, +/* 50984 */ {(13<<2)|2,{72,102,0}}, +/* 50985 */ {(13<<2)|2,{72,102,0}}, +/* 50986 */ {(13<<2)|2,{72,102,0}}, +/* 50987 */ {(13<<2)|2,{72,102,0}}, +/* 50988 */ {(13<<2)|2,{72,102,0}}, +/* 50989 */ {(13<<2)|2,{72,102,0}}, +/* 50990 */ {(13<<2)|2,{72,102,0}}, +/* 50991 */ {(13<<2)|2,{72,102,0}}, +/* 50992 */ {(13<<2)|2,{72,103,0}}, +/* 50993 */ {(13<<2)|2,{72,103,0}}, +/* 50994 */ {(13<<2)|2,{72,103,0}}, +/* 50995 */ {(13<<2)|2,{72,103,0}}, +/* 50996 */ {(13<<2)|2,{72,103,0}}, +/* 50997 */ {(13<<2)|2,{72,103,0}}, +/* 50998 */ {(13<<2)|2,{72,103,0}}, +/* 50999 */ {(13<<2)|2,{72,103,0}}, +/* 51000 */ {(13<<2)|2,{72,104,0}}, +/* 51001 */ {(13<<2)|2,{72,104,0}}, +/* 51002 */ {(13<<2)|2,{72,104,0}}, +/* 51003 */ {(13<<2)|2,{72,104,0}}, +/* 51004 */ {(13<<2)|2,{72,104,0}}, +/* 51005 */ {(13<<2)|2,{72,104,0}}, +/* 51006 */ {(13<<2)|2,{72,104,0}}, +/* 51007 */ {(13<<2)|2,{72,104,0}}, +/* 51008 */ {(13<<2)|2,{72,108,0}}, +/* 51009 */ {(13<<2)|2,{72,108,0}}, +/* 51010 */ {(13<<2)|2,{72,108,0}}, +/* 51011 */ {(13<<2)|2,{72,108,0}}, +/* 51012 */ {(13<<2)|2,{72,108,0}}, +/* 51013 */ {(13<<2)|2,{72,108,0}}, +/* 51014 */ {(13<<2)|2,{72,108,0}}, +/* 51015 */ {(13<<2)|2,{72,108,0}}, +/* 51016 */ {(13<<2)|2,{72,109,0}}, +/* 51017 */ {(13<<2)|2,{72,109,0}}, +/* 51018 */ {(13<<2)|2,{72,109,0}}, +/* 51019 */ {(13<<2)|2,{72,109,0}}, +/* 51020 */ {(13<<2)|2,{72,109,0}}, +/* 51021 */ {(13<<2)|2,{72,109,0}}, +/* 51022 */ {(13<<2)|2,{72,109,0}}, +/* 51023 */ {(13<<2)|2,{72,109,0}}, +/* 51024 */ {(13<<2)|2,{72,110,0}}, +/* 51025 */ {(13<<2)|2,{72,110,0}}, +/* 51026 */ {(13<<2)|2,{72,110,0}}, +/* 51027 */ {(13<<2)|2,{72,110,0}}, +/* 51028 */ {(13<<2)|2,{72,110,0}}, +/* 51029 */ {(13<<2)|2,{72,110,0}}, +/* 51030 */ {(13<<2)|2,{72,110,0}}, +/* 51031 */ {(13<<2)|2,{72,110,0}}, +/* 51032 */ {(13<<2)|2,{72,112,0}}, +/* 51033 */ {(13<<2)|2,{72,112,0}}, +/* 51034 */ {(13<<2)|2,{72,112,0}}, +/* 51035 */ {(13<<2)|2,{72,112,0}}, +/* 51036 */ {(13<<2)|2,{72,112,0}}, +/* 51037 */ {(13<<2)|2,{72,112,0}}, +/* 51038 */ {(13<<2)|2,{72,112,0}}, +/* 51039 */ {(13<<2)|2,{72,112,0}}, +/* 51040 */ {(13<<2)|2,{72,114,0}}, +/* 51041 */ {(13<<2)|2,{72,114,0}}, +/* 51042 */ {(13<<2)|2,{72,114,0}}, +/* 51043 */ {(13<<2)|2,{72,114,0}}, +/* 51044 */ {(13<<2)|2,{72,114,0}}, +/* 51045 */ {(13<<2)|2,{72,114,0}}, +/* 51046 */ {(13<<2)|2,{72,114,0}}, +/* 51047 */ {(13<<2)|2,{72,114,0}}, +/* 51048 */ {(13<<2)|2,{72,117,0}}, +/* 51049 */ {(13<<2)|2,{72,117,0}}, +/* 51050 */ {(13<<2)|2,{72,117,0}}, +/* 51051 */ {(13<<2)|2,{72,117,0}}, +/* 51052 */ {(13<<2)|2,{72,117,0}}, +/* 51053 */ {(13<<2)|2,{72,117,0}}, +/* 51054 */ {(13<<2)|2,{72,117,0}}, +/* 51055 */ {(13<<2)|2,{72,117,0}}, +/* 51056 */ {(14<<2)|2,{72,58,0}}, +/* 51057 */ {(14<<2)|2,{72,58,0}}, +/* 51058 */ {(14<<2)|2,{72,58,0}}, +/* 51059 */ {(14<<2)|2,{72,58,0}}, +/* 51060 */ {(14<<2)|2,{72,66,0}}, +/* 51061 */ {(14<<2)|2,{72,66,0}}, +/* 51062 */ {(14<<2)|2,{72,66,0}}, +/* 51063 */ {(14<<2)|2,{72,66,0}}, +/* 51064 */ {(14<<2)|2,{72,67,0}}, +/* 51065 */ {(14<<2)|2,{72,67,0}}, +/* 51066 */ {(14<<2)|2,{72,67,0}}, +/* 51067 */ {(14<<2)|2,{72,67,0}}, +/* 51068 */ {(14<<2)|2,{72,68,0}}, +/* 51069 */ {(14<<2)|2,{72,68,0}}, +/* 51070 */ {(14<<2)|2,{72,68,0}}, +/* 51071 */ {(14<<2)|2,{72,68,0}}, +/* 51072 */ {(14<<2)|2,{72,69,0}}, +/* 51073 */ {(14<<2)|2,{72,69,0}}, +/* 51074 */ {(14<<2)|2,{72,69,0}}, +/* 51075 */ {(14<<2)|2,{72,69,0}}, +/* 51076 */ {(14<<2)|2,{72,70,0}}, +/* 51077 */ {(14<<2)|2,{72,70,0}}, +/* 51078 */ {(14<<2)|2,{72,70,0}}, +/* 51079 */ {(14<<2)|2,{72,70,0}}, +/* 51080 */ {(14<<2)|2,{72,71,0}}, +/* 51081 */ {(14<<2)|2,{72,71,0}}, +/* 51082 */ {(14<<2)|2,{72,71,0}}, +/* 51083 */ {(14<<2)|2,{72,71,0}}, +/* 51084 */ {(14<<2)|2,{72,72,0}}, +/* 51085 */ {(14<<2)|2,{72,72,0}}, +/* 51086 */ {(14<<2)|2,{72,72,0}}, +/* 51087 */ {(14<<2)|2,{72,72,0}}, +/* 51088 */ {(14<<2)|2,{72,73,0}}, +/* 51089 */ {(14<<2)|2,{72,73,0}}, +/* 51090 */ {(14<<2)|2,{72,73,0}}, +/* 51091 */ {(14<<2)|2,{72,73,0}}, +/* 51092 */ {(14<<2)|2,{72,74,0}}, +/* 51093 */ {(14<<2)|2,{72,74,0}}, +/* 51094 */ {(14<<2)|2,{72,74,0}}, +/* 51095 */ {(14<<2)|2,{72,74,0}}, +/* 51096 */ {(14<<2)|2,{72,75,0}}, +/* 51097 */ {(14<<2)|2,{72,75,0}}, +/* 51098 */ {(14<<2)|2,{72,75,0}}, +/* 51099 */ {(14<<2)|2,{72,75,0}}, +/* 51100 */ {(14<<2)|2,{72,76,0}}, +/* 51101 */ {(14<<2)|2,{72,76,0}}, +/* 51102 */ {(14<<2)|2,{72,76,0}}, +/* 51103 */ {(14<<2)|2,{72,76,0}}, +/* 51104 */ {(14<<2)|2,{72,77,0}}, +/* 51105 */ {(14<<2)|2,{72,77,0}}, +/* 51106 */ {(14<<2)|2,{72,77,0}}, +/* 51107 */ {(14<<2)|2,{72,77,0}}, +/* 51108 */ {(14<<2)|2,{72,78,0}}, +/* 51109 */ {(14<<2)|2,{72,78,0}}, +/* 51110 */ {(14<<2)|2,{72,78,0}}, +/* 51111 */ {(14<<2)|2,{72,78,0}}, +/* 51112 */ {(14<<2)|2,{72,79,0}}, +/* 51113 */ {(14<<2)|2,{72,79,0}}, +/* 51114 */ {(14<<2)|2,{72,79,0}}, +/* 51115 */ {(14<<2)|2,{72,79,0}}, +/* 51116 */ {(14<<2)|2,{72,80,0}}, +/* 51117 */ {(14<<2)|2,{72,80,0}}, +/* 51118 */ {(14<<2)|2,{72,80,0}}, +/* 51119 */ {(14<<2)|2,{72,80,0}}, +/* 51120 */ {(14<<2)|2,{72,81,0}}, +/* 51121 */ {(14<<2)|2,{72,81,0}}, +/* 51122 */ {(14<<2)|2,{72,81,0}}, +/* 51123 */ {(14<<2)|2,{72,81,0}}, +/* 51124 */ {(14<<2)|2,{72,82,0}}, +/* 51125 */ {(14<<2)|2,{72,82,0}}, +/* 51126 */ {(14<<2)|2,{72,82,0}}, +/* 51127 */ {(14<<2)|2,{72,82,0}}, +/* 51128 */ {(14<<2)|2,{72,83,0}}, +/* 51129 */ {(14<<2)|2,{72,83,0}}, +/* 51130 */ {(14<<2)|2,{72,83,0}}, +/* 51131 */ {(14<<2)|2,{72,83,0}}, +/* 51132 */ {(14<<2)|2,{72,84,0}}, +/* 51133 */ {(14<<2)|2,{72,84,0}}, +/* 51134 */ {(14<<2)|2,{72,84,0}}, +/* 51135 */ {(14<<2)|2,{72,84,0}}, +/* 51136 */ {(14<<2)|2,{72,85,0}}, +/* 51137 */ {(14<<2)|2,{72,85,0}}, +/* 51138 */ {(14<<2)|2,{72,85,0}}, +/* 51139 */ {(14<<2)|2,{72,85,0}}, +/* 51140 */ {(14<<2)|2,{72,86,0}}, +/* 51141 */ {(14<<2)|2,{72,86,0}}, +/* 51142 */ {(14<<2)|2,{72,86,0}}, +/* 51143 */ {(14<<2)|2,{72,86,0}}, +/* 51144 */ {(14<<2)|2,{72,87,0}}, +/* 51145 */ {(14<<2)|2,{72,87,0}}, +/* 51146 */ {(14<<2)|2,{72,87,0}}, +/* 51147 */ {(14<<2)|2,{72,87,0}}, +/* 51148 */ {(14<<2)|2,{72,89,0}}, +/* 51149 */ {(14<<2)|2,{72,89,0}}, +/* 51150 */ {(14<<2)|2,{72,89,0}}, +/* 51151 */ {(14<<2)|2,{72,89,0}}, +/* 51152 */ {(14<<2)|2,{72,106,0}}, +/* 51153 */ {(14<<2)|2,{72,106,0}}, +/* 51154 */ {(14<<2)|2,{72,106,0}}, +/* 51155 */ {(14<<2)|2,{72,106,0}}, +/* 51156 */ {(14<<2)|2,{72,107,0}}, +/* 51157 */ {(14<<2)|2,{72,107,0}}, +/* 51158 */ {(14<<2)|2,{72,107,0}}, +/* 51159 */ {(14<<2)|2,{72,107,0}}, +/* 51160 */ {(14<<2)|2,{72,113,0}}, +/* 51161 */ {(14<<2)|2,{72,113,0}}, +/* 51162 */ {(14<<2)|2,{72,113,0}}, +/* 51163 */ {(14<<2)|2,{72,113,0}}, +/* 51164 */ {(14<<2)|2,{72,118,0}}, +/* 51165 */ {(14<<2)|2,{72,118,0}}, +/* 51166 */ {(14<<2)|2,{72,118,0}}, +/* 51167 */ {(14<<2)|2,{72,118,0}}, +/* 51168 */ {(14<<2)|2,{72,119,0}}, +/* 51169 */ {(14<<2)|2,{72,119,0}}, +/* 51170 */ {(14<<2)|2,{72,119,0}}, +/* 51171 */ {(14<<2)|2,{72,119,0}}, +/* 51172 */ {(14<<2)|2,{72,120,0}}, +/* 51173 */ {(14<<2)|2,{72,120,0}}, +/* 51174 */ {(14<<2)|2,{72,120,0}}, +/* 51175 */ {(14<<2)|2,{72,120,0}}, +/* 51176 */ {(14<<2)|2,{72,121,0}}, +/* 51177 */ {(14<<2)|2,{72,121,0}}, +/* 51178 */ {(14<<2)|2,{72,121,0}}, +/* 51179 */ {(14<<2)|2,{72,121,0}}, +/* 51180 */ {(14<<2)|2,{72,122,0}}, +/* 51181 */ {(14<<2)|2,{72,122,0}}, +/* 51182 */ {(14<<2)|2,{72,122,0}}, +/* 51183 */ {(14<<2)|2,{72,122,0}}, +/* 51184 */ {(15<<2)|2,{72,38,0}}, +/* 51185 */ {(15<<2)|2,{72,38,0}}, +/* 51186 */ {(15<<2)|2,{72,42,0}}, +/* 51187 */ {(15<<2)|2,{72,42,0}}, +/* 51188 */ {(15<<2)|2,{72,44,0}}, +/* 51189 */ {(15<<2)|2,{72,44,0}}, +/* 51190 */ {(15<<2)|2,{72,59,0}}, +/* 51191 */ {(15<<2)|2,{72,59,0}}, +/* 51192 */ {(15<<2)|2,{72,88,0}}, +/* 51193 */ {(15<<2)|2,{72,88,0}}, +/* 51194 */ {(15<<2)|2,{72,90,0}}, +/* 51195 */ {(15<<2)|2,{72,90,0}}, +/* 51196 */ {(7<<2)|1,{72,0,0}}, +/* 51197 */ {(7<<2)|1,{72,0,0}}, +/* 51198 */ {(7<<2)|1,{72,0,0}}, +/* 51199 */ {(7<<2)|1,{72,0,0}}, +/* 51200 */ {(12<<2)|2,{73,48,0}}, +/* 51201 */ {(12<<2)|2,{73,48,0}}, +/* 51202 */ {(12<<2)|2,{73,48,0}}, +/* 51203 */ {(12<<2)|2,{73,48,0}}, +/* 51204 */ {(12<<2)|2,{73,48,0}}, +/* 51205 */ {(12<<2)|2,{73,48,0}}, +/* 51206 */ {(12<<2)|2,{73,48,0}}, +/* 51207 */ {(12<<2)|2,{73,48,0}}, +/* 51208 */ {(12<<2)|2,{73,48,0}}, +/* 51209 */ {(12<<2)|2,{73,48,0}}, +/* 51210 */ {(12<<2)|2,{73,48,0}}, +/* 51211 */ {(12<<2)|2,{73,48,0}}, +/* 51212 */ {(12<<2)|2,{73,48,0}}, +/* 51213 */ {(12<<2)|2,{73,48,0}}, +/* 51214 */ {(12<<2)|2,{73,48,0}}, +/* 51215 */ {(12<<2)|2,{73,48,0}}, +/* 51216 */ {(12<<2)|2,{73,49,0}}, +/* 51217 */ {(12<<2)|2,{73,49,0}}, +/* 51218 */ {(12<<2)|2,{73,49,0}}, +/* 51219 */ {(12<<2)|2,{73,49,0}}, +/* 51220 */ {(12<<2)|2,{73,49,0}}, +/* 51221 */ {(12<<2)|2,{73,49,0}}, +/* 51222 */ {(12<<2)|2,{73,49,0}}, +/* 51223 */ {(12<<2)|2,{73,49,0}}, +/* 51224 */ {(12<<2)|2,{73,49,0}}, +/* 51225 */ {(12<<2)|2,{73,49,0}}, +/* 51226 */ {(12<<2)|2,{73,49,0}}, +/* 51227 */ {(12<<2)|2,{73,49,0}}, +/* 51228 */ {(12<<2)|2,{73,49,0}}, +/* 51229 */ {(12<<2)|2,{73,49,0}}, +/* 51230 */ {(12<<2)|2,{73,49,0}}, +/* 51231 */ {(12<<2)|2,{73,49,0}}, +/* 51232 */ {(12<<2)|2,{73,50,0}}, +/* 51233 */ {(12<<2)|2,{73,50,0}}, +/* 51234 */ {(12<<2)|2,{73,50,0}}, +/* 51235 */ {(12<<2)|2,{73,50,0}}, +/* 51236 */ {(12<<2)|2,{73,50,0}}, +/* 51237 */ {(12<<2)|2,{73,50,0}}, +/* 51238 */ {(12<<2)|2,{73,50,0}}, +/* 51239 */ {(12<<2)|2,{73,50,0}}, +/* 51240 */ {(12<<2)|2,{73,50,0}}, +/* 51241 */ {(12<<2)|2,{73,50,0}}, +/* 51242 */ {(12<<2)|2,{73,50,0}}, +/* 51243 */ {(12<<2)|2,{73,50,0}}, +/* 51244 */ {(12<<2)|2,{73,50,0}}, +/* 51245 */ {(12<<2)|2,{73,50,0}}, +/* 51246 */ {(12<<2)|2,{73,50,0}}, +/* 51247 */ {(12<<2)|2,{73,50,0}}, +/* 51248 */ {(12<<2)|2,{73,97,0}}, +/* 51249 */ {(12<<2)|2,{73,97,0}}, +/* 51250 */ {(12<<2)|2,{73,97,0}}, +/* 51251 */ {(12<<2)|2,{73,97,0}}, +/* 51252 */ {(12<<2)|2,{73,97,0}}, +/* 51253 */ {(12<<2)|2,{73,97,0}}, +/* 51254 */ {(12<<2)|2,{73,97,0}}, +/* 51255 */ {(12<<2)|2,{73,97,0}}, +/* 51256 */ {(12<<2)|2,{73,97,0}}, +/* 51257 */ {(12<<2)|2,{73,97,0}}, +/* 51258 */ {(12<<2)|2,{73,97,0}}, +/* 51259 */ {(12<<2)|2,{73,97,0}}, +/* 51260 */ {(12<<2)|2,{73,97,0}}, +/* 51261 */ {(12<<2)|2,{73,97,0}}, +/* 51262 */ {(12<<2)|2,{73,97,0}}, +/* 51263 */ {(12<<2)|2,{73,97,0}}, +/* 51264 */ {(12<<2)|2,{73,99,0}}, +/* 51265 */ {(12<<2)|2,{73,99,0}}, +/* 51266 */ {(12<<2)|2,{73,99,0}}, +/* 51267 */ {(12<<2)|2,{73,99,0}}, +/* 51268 */ {(12<<2)|2,{73,99,0}}, +/* 51269 */ {(12<<2)|2,{73,99,0}}, +/* 51270 */ {(12<<2)|2,{73,99,0}}, +/* 51271 */ {(12<<2)|2,{73,99,0}}, +/* 51272 */ {(12<<2)|2,{73,99,0}}, +/* 51273 */ {(12<<2)|2,{73,99,0}}, +/* 51274 */ {(12<<2)|2,{73,99,0}}, +/* 51275 */ {(12<<2)|2,{73,99,0}}, +/* 51276 */ {(12<<2)|2,{73,99,0}}, +/* 51277 */ {(12<<2)|2,{73,99,0}}, +/* 51278 */ {(12<<2)|2,{73,99,0}}, +/* 51279 */ {(12<<2)|2,{73,99,0}}, +/* 51280 */ {(12<<2)|2,{73,101,0}}, +/* 51281 */ {(12<<2)|2,{73,101,0}}, +/* 51282 */ {(12<<2)|2,{73,101,0}}, +/* 51283 */ {(12<<2)|2,{73,101,0}}, +/* 51284 */ {(12<<2)|2,{73,101,0}}, +/* 51285 */ {(12<<2)|2,{73,101,0}}, +/* 51286 */ {(12<<2)|2,{73,101,0}}, +/* 51287 */ {(12<<2)|2,{73,101,0}}, +/* 51288 */ {(12<<2)|2,{73,101,0}}, +/* 51289 */ {(12<<2)|2,{73,101,0}}, +/* 51290 */ {(12<<2)|2,{73,101,0}}, +/* 51291 */ {(12<<2)|2,{73,101,0}}, +/* 51292 */ {(12<<2)|2,{73,101,0}}, +/* 51293 */ {(12<<2)|2,{73,101,0}}, +/* 51294 */ {(12<<2)|2,{73,101,0}}, +/* 51295 */ {(12<<2)|2,{73,101,0}}, +/* 51296 */ {(12<<2)|2,{73,105,0}}, +/* 51297 */ {(12<<2)|2,{73,105,0}}, +/* 51298 */ {(12<<2)|2,{73,105,0}}, +/* 51299 */ {(12<<2)|2,{73,105,0}}, +/* 51300 */ {(12<<2)|2,{73,105,0}}, +/* 51301 */ {(12<<2)|2,{73,105,0}}, +/* 51302 */ {(12<<2)|2,{73,105,0}}, +/* 51303 */ {(12<<2)|2,{73,105,0}}, +/* 51304 */ {(12<<2)|2,{73,105,0}}, +/* 51305 */ {(12<<2)|2,{73,105,0}}, +/* 51306 */ {(12<<2)|2,{73,105,0}}, +/* 51307 */ {(12<<2)|2,{73,105,0}}, +/* 51308 */ {(12<<2)|2,{73,105,0}}, +/* 51309 */ {(12<<2)|2,{73,105,0}}, +/* 51310 */ {(12<<2)|2,{73,105,0}}, +/* 51311 */ {(12<<2)|2,{73,105,0}}, +/* 51312 */ {(12<<2)|2,{73,111,0}}, +/* 51313 */ {(12<<2)|2,{73,111,0}}, +/* 51314 */ {(12<<2)|2,{73,111,0}}, +/* 51315 */ {(12<<2)|2,{73,111,0}}, +/* 51316 */ {(12<<2)|2,{73,111,0}}, +/* 51317 */ {(12<<2)|2,{73,111,0}}, +/* 51318 */ {(12<<2)|2,{73,111,0}}, +/* 51319 */ {(12<<2)|2,{73,111,0}}, +/* 51320 */ {(12<<2)|2,{73,111,0}}, +/* 51321 */ {(12<<2)|2,{73,111,0}}, +/* 51322 */ {(12<<2)|2,{73,111,0}}, +/* 51323 */ {(12<<2)|2,{73,111,0}}, +/* 51324 */ {(12<<2)|2,{73,111,0}}, +/* 51325 */ {(12<<2)|2,{73,111,0}}, +/* 51326 */ {(12<<2)|2,{73,111,0}}, +/* 51327 */ {(12<<2)|2,{73,111,0}}, +/* 51328 */ {(12<<2)|2,{73,115,0}}, +/* 51329 */ {(12<<2)|2,{73,115,0}}, +/* 51330 */ {(12<<2)|2,{73,115,0}}, +/* 51331 */ {(12<<2)|2,{73,115,0}}, +/* 51332 */ {(12<<2)|2,{73,115,0}}, +/* 51333 */ {(12<<2)|2,{73,115,0}}, +/* 51334 */ {(12<<2)|2,{73,115,0}}, +/* 51335 */ {(12<<2)|2,{73,115,0}}, +/* 51336 */ {(12<<2)|2,{73,115,0}}, +/* 51337 */ {(12<<2)|2,{73,115,0}}, +/* 51338 */ {(12<<2)|2,{73,115,0}}, +/* 51339 */ {(12<<2)|2,{73,115,0}}, +/* 51340 */ {(12<<2)|2,{73,115,0}}, +/* 51341 */ {(12<<2)|2,{73,115,0}}, +/* 51342 */ {(12<<2)|2,{73,115,0}}, +/* 51343 */ {(12<<2)|2,{73,115,0}}, +/* 51344 */ {(12<<2)|2,{73,116,0}}, +/* 51345 */ {(12<<2)|2,{73,116,0}}, +/* 51346 */ {(12<<2)|2,{73,116,0}}, +/* 51347 */ {(12<<2)|2,{73,116,0}}, +/* 51348 */ {(12<<2)|2,{73,116,0}}, +/* 51349 */ {(12<<2)|2,{73,116,0}}, +/* 51350 */ {(12<<2)|2,{73,116,0}}, +/* 51351 */ {(12<<2)|2,{73,116,0}}, +/* 51352 */ {(12<<2)|2,{73,116,0}}, +/* 51353 */ {(12<<2)|2,{73,116,0}}, +/* 51354 */ {(12<<2)|2,{73,116,0}}, +/* 51355 */ {(12<<2)|2,{73,116,0}}, +/* 51356 */ {(12<<2)|2,{73,116,0}}, +/* 51357 */ {(12<<2)|2,{73,116,0}}, +/* 51358 */ {(12<<2)|2,{73,116,0}}, +/* 51359 */ {(12<<2)|2,{73,116,0}}, +/* 51360 */ {(13<<2)|2,{73,32,0}}, +/* 51361 */ {(13<<2)|2,{73,32,0}}, +/* 51362 */ {(13<<2)|2,{73,32,0}}, +/* 51363 */ {(13<<2)|2,{73,32,0}}, +/* 51364 */ {(13<<2)|2,{73,32,0}}, +/* 51365 */ {(13<<2)|2,{73,32,0}}, +/* 51366 */ {(13<<2)|2,{73,32,0}}, +/* 51367 */ {(13<<2)|2,{73,32,0}}, +/* 51368 */ {(13<<2)|2,{73,37,0}}, +/* 51369 */ {(13<<2)|2,{73,37,0}}, +/* 51370 */ {(13<<2)|2,{73,37,0}}, +/* 51371 */ {(13<<2)|2,{73,37,0}}, +/* 51372 */ {(13<<2)|2,{73,37,0}}, +/* 51373 */ {(13<<2)|2,{73,37,0}}, +/* 51374 */ {(13<<2)|2,{73,37,0}}, +/* 51375 */ {(13<<2)|2,{73,37,0}}, +/* 51376 */ {(13<<2)|2,{73,45,0}}, +/* 51377 */ {(13<<2)|2,{73,45,0}}, +/* 51378 */ {(13<<2)|2,{73,45,0}}, +/* 51379 */ {(13<<2)|2,{73,45,0}}, +/* 51380 */ {(13<<2)|2,{73,45,0}}, +/* 51381 */ {(13<<2)|2,{73,45,0}}, +/* 51382 */ {(13<<2)|2,{73,45,0}}, +/* 51383 */ {(13<<2)|2,{73,45,0}}, +/* 51384 */ {(13<<2)|2,{73,46,0}}, +/* 51385 */ {(13<<2)|2,{73,46,0}}, +/* 51386 */ {(13<<2)|2,{73,46,0}}, +/* 51387 */ {(13<<2)|2,{73,46,0}}, +/* 51388 */ {(13<<2)|2,{73,46,0}}, +/* 51389 */ {(13<<2)|2,{73,46,0}}, +/* 51390 */ {(13<<2)|2,{73,46,0}}, +/* 51391 */ {(13<<2)|2,{73,46,0}}, +/* 51392 */ {(13<<2)|2,{73,47,0}}, +/* 51393 */ {(13<<2)|2,{73,47,0}}, +/* 51394 */ {(13<<2)|2,{73,47,0}}, +/* 51395 */ {(13<<2)|2,{73,47,0}}, +/* 51396 */ {(13<<2)|2,{73,47,0}}, +/* 51397 */ {(13<<2)|2,{73,47,0}}, +/* 51398 */ {(13<<2)|2,{73,47,0}}, +/* 51399 */ {(13<<2)|2,{73,47,0}}, +/* 51400 */ {(13<<2)|2,{73,51,0}}, +/* 51401 */ {(13<<2)|2,{73,51,0}}, +/* 51402 */ {(13<<2)|2,{73,51,0}}, +/* 51403 */ {(13<<2)|2,{73,51,0}}, +/* 51404 */ {(13<<2)|2,{73,51,0}}, +/* 51405 */ {(13<<2)|2,{73,51,0}}, +/* 51406 */ {(13<<2)|2,{73,51,0}}, +/* 51407 */ {(13<<2)|2,{73,51,0}}, +/* 51408 */ {(13<<2)|2,{73,52,0}}, +/* 51409 */ {(13<<2)|2,{73,52,0}}, +/* 51410 */ {(13<<2)|2,{73,52,0}}, +/* 51411 */ {(13<<2)|2,{73,52,0}}, +/* 51412 */ {(13<<2)|2,{73,52,0}}, +/* 51413 */ {(13<<2)|2,{73,52,0}}, +/* 51414 */ {(13<<2)|2,{73,52,0}}, +/* 51415 */ {(13<<2)|2,{73,52,0}}, +/* 51416 */ {(13<<2)|2,{73,53,0}}, +/* 51417 */ {(13<<2)|2,{73,53,0}}, +/* 51418 */ {(13<<2)|2,{73,53,0}}, +/* 51419 */ {(13<<2)|2,{73,53,0}}, +/* 51420 */ {(13<<2)|2,{73,53,0}}, +/* 51421 */ {(13<<2)|2,{73,53,0}}, +/* 51422 */ {(13<<2)|2,{73,53,0}}, +/* 51423 */ {(13<<2)|2,{73,53,0}}, +/* 51424 */ {(13<<2)|2,{73,54,0}}, +/* 51425 */ {(13<<2)|2,{73,54,0}}, +/* 51426 */ {(13<<2)|2,{73,54,0}}, +/* 51427 */ {(13<<2)|2,{73,54,0}}, +/* 51428 */ {(13<<2)|2,{73,54,0}}, +/* 51429 */ {(13<<2)|2,{73,54,0}}, +/* 51430 */ {(13<<2)|2,{73,54,0}}, +/* 51431 */ {(13<<2)|2,{73,54,0}}, +/* 51432 */ {(13<<2)|2,{73,55,0}}, +/* 51433 */ {(13<<2)|2,{73,55,0}}, +/* 51434 */ {(13<<2)|2,{73,55,0}}, +/* 51435 */ {(13<<2)|2,{73,55,0}}, +/* 51436 */ {(13<<2)|2,{73,55,0}}, +/* 51437 */ {(13<<2)|2,{73,55,0}}, +/* 51438 */ {(13<<2)|2,{73,55,0}}, +/* 51439 */ {(13<<2)|2,{73,55,0}}, +/* 51440 */ {(13<<2)|2,{73,56,0}}, +/* 51441 */ {(13<<2)|2,{73,56,0}}, +/* 51442 */ {(13<<2)|2,{73,56,0}}, +/* 51443 */ {(13<<2)|2,{73,56,0}}, +/* 51444 */ {(13<<2)|2,{73,56,0}}, +/* 51445 */ {(13<<2)|2,{73,56,0}}, +/* 51446 */ {(13<<2)|2,{73,56,0}}, +/* 51447 */ {(13<<2)|2,{73,56,0}}, +/* 51448 */ {(13<<2)|2,{73,57,0}}, +/* 51449 */ {(13<<2)|2,{73,57,0}}, +/* 51450 */ {(13<<2)|2,{73,57,0}}, +/* 51451 */ {(13<<2)|2,{73,57,0}}, +/* 51452 */ {(13<<2)|2,{73,57,0}}, +/* 51453 */ {(13<<2)|2,{73,57,0}}, +/* 51454 */ {(13<<2)|2,{73,57,0}}, +/* 51455 */ {(13<<2)|2,{73,57,0}}, +/* 51456 */ {(13<<2)|2,{73,61,0}}, +/* 51457 */ {(13<<2)|2,{73,61,0}}, +/* 51458 */ {(13<<2)|2,{73,61,0}}, +/* 51459 */ {(13<<2)|2,{73,61,0}}, +/* 51460 */ {(13<<2)|2,{73,61,0}}, +/* 51461 */ {(13<<2)|2,{73,61,0}}, +/* 51462 */ {(13<<2)|2,{73,61,0}}, +/* 51463 */ {(13<<2)|2,{73,61,0}}, +/* 51464 */ {(13<<2)|2,{73,65,0}}, +/* 51465 */ {(13<<2)|2,{73,65,0}}, +/* 51466 */ {(13<<2)|2,{73,65,0}}, +/* 51467 */ {(13<<2)|2,{73,65,0}}, +/* 51468 */ {(13<<2)|2,{73,65,0}}, +/* 51469 */ {(13<<2)|2,{73,65,0}}, +/* 51470 */ {(13<<2)|2,{73,65,0}}, +/* 51471 */ {(13<<2)|2,{73,65,0}}, +/* 51472 */ {(13<<2)|2,{73,95,0}}, +/* 51473 */ {(13<<2)|2,{73,95,0}}, +/* 51474 */ {(13<<2)|2,{73,95,0}}, +/* 51475 */ {(13<<2)|2,{73,95,0}}, +/* 51476 */ {(13<<2)|2,{73,95,0}}, +/* 51477 */ {(13<<2)|2,{73,95,0}}, +/* 51478 */ {(13<<2)|2,{73,95,0}}, +/* 51479 */ {(13<<2)|2,{73,95,0}}, +/* 51480 */ {(13<<2)|2,{73,98,0}}, +/* 51481 */ {(13<<2)|2,{73,98,0}}, +/* 51482 */ {(13<<2)|2,{73,98,0}}, +/* 51483 */ {(13<<2)|2,{73,98,0}}, +/* 51484 */ {(13<<2)|2,{73,98,0}}, +/* 51485 */ {(13<<2)|2,{73,98,0}}, +/* 51486 */ {(13<<2)|2,{73,98,0}}, +/* 51487 */ {(13<<2)|2,{73,98,0}}, +/* 51488 */ {(13<<2)|2,{73,100,0}}, +/* 51489 */ {(13<<2)|2,{73,100,0}}, +/* 51490 */ {(13<<2)|2,{73,100,0}}, +/* 51491 */ {(13<<2)|2,{73,100,0}}, +/* 51492 */ {(13<<2)|2,{73,100,0}}, +/* 51493 */ {(13<<2)|2,{73,100,0}}, +/* 51494 */ {(13<<2)|2,{73,100,0}}, +/* 51495 */ {(13<<2)|2,{73,100,0}}, +/* 51496 */ {(13<<2)|2,{73,102,0}}, +/* 51497 */ {(13<<2)|2,{73,102,0}}, +/* 51498 */ {(13<<2)|2,{73,102,0}}, +/* 51499 */ {(13<<2)|2,{73,102,0}}, +/* 51500 */ {(13<<2)|2,{73,102,0}}, +/* 51501 */ {(13<<2)|2,{73,102,0}}, +/* 51502 */ {(13<<2)|2,{73,102,0}}, +/* 51503 */ {(13<<2)|2,{73,102,0}}, +/* 51504 */ {(13<<2)|2,{73,103,0}}, +/* 51505 */ {(13<<2)|2,{73,103,0}}, +/* 51506 */ {(13<<2)|2,{73,103,0}}, +/* 51507 */ {(13<<2)|2,{73,103,0}}, +/* 51508 */ {(13<<2)|2,{73,103,0}}, +/* 51509 */ {(13<<2)|2,{73,103,0}}, +/* 51510 */ {(13<<2)|2,{73,103,0}}, +/* 51511 */ {(13<<2)|2,{73,103,0}}, +/* 51512 */ {(13<<2)|2,{73,104,0}}, +/* 51513 */ {(13<<2)|2,{73,104,0}}, +/* 51514 */ {(13<<2)|2,{73,104,0}}, +/* 51515 */ {(13<<2)|2,{73,104,0}}, +/* 51516 */ {(13<<2)|2,{73,104,0}}, +/* 51517 */ {(13<<2)|2,{73,104,0}}, +/* 51518 */ {(13<<2)|2,{73,104,0}}, +/* 51519 */ {(13<<2)|2,{73,104,0}}, +/* 51520 */ {(13<<2)|2,{73,108,0}}, +/* 51521 */ {(13<<2)|2,{73,108,0}}, +/* 51522 */ {(13<<2)|2,{73,108,0}}, +/* 51523 */ {(13<<2)|2,{73,108,0}}, +/* 51524 */ {(13<<2)|2,{73,108,0}}, +/* 51525 */ {(13<<2)|2,{73,108,0}}, +/* 51526 */ {(13<<2)|2,{73,108,0}}, +/* 51527 */ {(13<<2)|2,{73,108,0}}, +/* 51528 */ {(13<<2)|2,{73,109,0}}, +/* 51529 */ {(13<<2)|2,{73,109,0}}, +/* 51530 */ {(13<<2)|2,{73,109,0}}, +/* 51531 */ {(13<<2)|2,{73,109,0}}, +/* 51532 */ {(13<<2)|2,{73,109,0}}, +/* 51533 */ {(13<<2)|2,{73,109,0}}, +/* 51534 */ {(13<<2)|2,{73,109,0}}, +/* 51535 */ {(13<<2)|2,{73,109,0}}, +/* 51536 */ {(13<<2)|2,{73,110,0}}, +/* 51537 */ {(13<<2)|2,{73,110,0}}, +/* 51538 */ {(13<<2)|2,{73,110,0}}, +/* 51539 */ {(13<<2)|2,{73,110,0}}, +/* 51540 */ {(13<<2)|2,{73,110,0}}, +/* 51541 */ {(13<<2)|2,{73,110,0}}, +/* 51542 */ {(13<<2)|2,{73,110,0}}, +/* 51543 */ {(13<<2)|2,{73,110,0}}, +/* 51544 */ {(13<<2)|2,{73,112,0}}, +/* 51545 */ {(13<<2)|2,{73,112,0}}, +/* 51546 */ {(13<<2)|2,{73,112,0}}, +/* 51547 */ {(13<<2)|2,{73,112,0}}, +/* 51548 */ {(13<<2)|2,{73,112,0}}, +/* 51549 */ {(13<<2)|2,{73,112,0}}, +/* 51550 */ {(13<<2)|2,{73,112,0}}, +/* 51551 */ {(13<<2)|2,{73,112,0}}, +/* 51552 */ {(13<<2)|2,{73,114,0}}, +/* 51553 */ {(13<<2)|2,{73,114,0}}, +/* 51554 */ {(13<<2)|2,{73,114,0}}, +/* 51555 */ {(13<<2)|2,{73,114,0}}, +/* 51556 */ {(13<<2)|2,{73,114,0}}, +/* 51557 */ {(13<<2)|2,{73,114,0}}, +/* 51558 */ {(13<<2)|2,{73,114,0}}, +/* 51559 */ {(13<<2)|2,{73,114,0}}, +/* 51560 */ {(13<<2)|2,{73,117,0}}, +/* 51561 */ {(13<<2)|2,{73,117,0}}, +/* 51562 */ {(13<<2)|2,{73,117,0}}, +/* 51563 */ {(13<<2)|2,{73,117,0}}, +/* 51564 */ {(13<<2)|2,{73,117,0}}, +/* 51565 */ {(13<<2)|2,{73,117,0}}, +/* 51566 */ {(13<<2)|2,{73,117,0}}, +/* 51567 */ {(13<<2)|2,{73,117,0}}, +/* 51568 */ {(14<<2)|2,{73,58,0}}, +/* 51569 */ {(14<<2)|2,{73,58,0}}, +/* 51570 */ {(14<<2)|2,{73,58,0}}, +/* 51571 */ {(14<<2)|2,{73,58,0}}, +/* 51572 */ {(14<<2)|2,{73,66,0}}, +/* 51573 */ {(14<<2)|2,{73,66,0}}, +/* 51574 */ {(14<<2)|2,{73,66,0}}, +/* 51575 */ {(14<<2)|2,{73,66,0}}, +/* 51576 */ {(14<<2)|2,{73,67,0}}, +/* 51577 */ {(14<<2)|2,{73,67,0}}, +/* 51578 */ {(14<<2)|2,{73,67,0}}, +/* 51579 */ {(14<<2)|2,{73,67,0}}, +/* 51580 */ {(14<<2)|2,{73,68,0}}, +/* 51581 */ {(14<<2)|2,{73,68,0}}, +/* 51582 */ {(14<<2)|2,{73,68,0}}, +/* 51583 */ {(14<<2)|2,{73,68,0}}, +/* 51584 */ {(14<<2)|2,{73,69,0}}, +/* 51585 */ {(14<<2)|2,{73,69,0}}, +/* 51586 */ {(14<<2)|2,{73,69,0}}, +/* 51587 */ {(14<<2)|2,{73,69,0}}, +/* 51588 */ {(14<<2)|2,{73,70,0}}, +/* 51589 */ {(14<<2)|2,{73,70,0}}, +/* 51590 */ {(14<<2)|2,{73,70,0}}, +/* 51591 */ {(14<<2)|2,{73,70,0}}, +/* 51592 */ {(14<<2)|2,{73,71,0}}, +/* 51593 */ {(14<<2)|2,{73,71,0}}, +/* 51594 */ {(14<<2)|2,{73,71,0}}, +/* 51595 */ {(14<<2)|2,{73,71,0}}, +/* 51596 */ {(14<<2)|2,{73,72,0}}, +/* 51597 */ {(14<<2)|2,{73,72,0}}, +/* 51598 */ {(14<<2)|2,{73,72,0}}, +/* 51599 */ {(14<<2)|2,{73,72,0}}, +/* 51600 */ {(14<<2)|2,{73,73,0}}, +/* 51601 */ {(14<<2)|2,{73,73,0}}, +/* 51602 */ {(14<<2)|2,{73,73,0}}, +/* 51603 */ {(14<<2)|2,{73,73,0}}, +/* 51604 */ {(14<<2)|2,{73,74,0}}, +/* 51605 */ {(14<<2)|2,{73,74,0}}, +/* 51606 */ {(14<<2)|2,{73,74,0}}, +/* 51607 */ {(14<<2)|2,{73,74,0}}, +/* 51608 */ {(14<<2)|2,{73,75,0}}, +/* 51609 */ {(14<<2)|2,{73,75,0}}, +/* 51610 */ {(14<<2)|2,{73,75,0}}, +/* 51611 */ {(14<<2)|2,{73,75,0}}, +/* 51612 */ {(14<<2)|2,{73,76,0}}, +/* 51613 */ {(14<<2)|2,{73,76,0}}, +/* 51614 */ {(14<<2)|2,{73,76,0}}, +/* 51615 */ {(14<<2)|2,{73,76,0}}, +/* 51616 */ {(14<<2)|2,{73,77,0}}, +/* 51617 */ {(14<<2)|2,{73,77,0}}, +/* 51618 */ {(14<<2)|2,{73,77,0}}, +/* 51619 */ {(14<<2)|2,{73,77,0}}, +/* 51620 */ {(14<<2)|2,{73,78,0}}, +/* 51621 */ {(14<<2)|2,{73,78,0}}, +/* 51622 */ {(14<<2)|2,{73,78,0}}, +/* 51623 */ {(14<<2)|2,{73,78,0}}, +/* 51624 */ {(14<<2)|2,{73,79,0}}, +/* 51625 */ {(14<<2)|2,{73,79,0}}, +/* 51626 */ {(14<<2)|2,{73,79,0}}, +/* 51627 */ {(14<<2)|2,{73,79,0}}, +/* 51628 */ {(14<<2)|2,{73,80,0}}, +/* 51629 */ {(14<<2)|2,{73,80,0}}, +/* 51630 */ {(14<<2)|2,{73,80,0}}, +/* 51631 */ {(14<<2)|2,{73,80,0}}, +/* 51632 */ {(14<<2)|2,{73,81,0}}, +/* 51633 */ {(14<<2)|2,{73,81,0}}, +/* 51634 */ {(14<<2)|2,{73,81,0}}, +/* 51635 */ {(14<<2)|2,{73,81,0}}, +/* 51636 */ {(14<<2)|2,{73,82,0}}, +/* 51637 */ {(14<<2)|2,{73,82,0}}, +/* 51638 */ {(14<<2)|2,{73,82,0}}, +/* 51639 */ {(14<<2)|2,{73,82,0}}, +/* 51640 */ {(14<<2)|2,{73,83,0}}, +/* 51641 */ {(14<<2)|2,{73,83,0}}, +/* 51642 */ {(14<<2)|2,{73,83,0}}, +/* 51643 */ {(14<<2)|2,{73,83,0}}, +/* 51644 */ {(14<<2)|2,{73,84,0}}, +/* 51645 */ {(14<<2)|2,{73,84,0}}, +/* 51646 */ {(14<<2)|2,{73,84,0}}, +/* 51647 */ {(14<<2)|2,{73,84,0}}, +/* 51648 */ {(14<<2)|2,{73,85,0}}, +/* 51649 */ {(14<<2)|2,{73,85,0}}, +/* 51650 */ {(14<<2)|2,{73,85,0}}, +/* 51651 */ {(14<<2)|2,{73,85,0}}, +/* 51652 */ {(14<<2)|2,{73,86,0}}, +/* 51653 */ {(14<<2)|2,{73,86,0}}, +/* 51654 */ {(14<<2)|2,{73,86,0}}, +/* 51655 */ {(14<<2)|2,{73,86,0}}, +/* 51656 */ {(14<<2)|2,{73,87,0}}, +/* 51657 */ {(14<<2)|2,{73,87,0}}, +/* 51658 */ {(14<<2)|2,{73,87,0}}, +/* 51659 */ {(14<<2)|2,{73,87,0}}, +/* 51660 */ {(14<<2)|2,{73,89,0}}, +/* 51661 */ {(14<<2)|2,{73,89,0}}, +/* 51662 */ {(14<<2)|2,{73,89,0}}, +/* 51663 */ {(14<<2)|2,{73,89,0}}, +/* 51664 */ {(14<<2)|2,{73,106,0}}, +/* 51665 */ {(14<<2)|2,{73,106,0}}, +/* 51666 */ {(14<<2)|2,{73,106,0}}, +/* 51667 */ {(14<<2)|2,{73,106,0}}, +/* 51668 */ {(14<<2)|2,{73,107,0}}, +/* 51669 */ {(14<<2)|2,{73,107,0}}, +/* 51670 */ {(14<<2)|2,{73,107,0}}, +/* 51671 */ {(14<<2)|2,{73,107,0}}, +/* 51672 */ {(14<<2)|2,{73,113,0}}, +/* 51673 */ {(14<<2)|2,{73,113,0}}, +/* 51674 */ {(14<<2)|2,{73,113,0}}, +/* 51675 */ {(14<<2)|2,{73,113,0}}, +/* 51676 */ {(14<<2)|2,{73,118,0}}, +/* 51677 */ {(14<<2)|2,{73,118,0}}, +/* 51678 */ {(14<<2)|2,{73,118,0}}, +/* 51679 */ {(14<<2)|2,{73,118,0}}, +/* 51680 */ {(14<<2)|2,{73,119,0}}, +/* 51681 */ {(14<<2)|2,{73,119,0}}, +/* 51682 */ {(14<<2)|2,{73,119,0}}, +/* 51683 */ {(14<<2)|2,{73,119,0}}, +/* 51684 */ {(14<<2)|2,{73,120,0}}, +/* 51685 */ {(14<<2)|2,{73,120,0}}, +/* 51686 */ {(14<<2)|2,{73,120,0}}, +/* 51687 */ {(14<<2)|2,{73,120,0}}, +/* 51688 */ {(14<<2)|2,{73,121,0}}, +/* 51689 */ {(14<<2)|2,{73,121,0}}, +/* 51690 */ {(14<<2)|2,{73,121,0}}, +/* 51691 */ {(14<<2)|2,{73,121,0}}, +/* 51692 */ {(14<<2)|2,{73,122,0}}, +/* 51693 */ {(14<<2)|2,{73,122,0}}, +/* 51694 */ {(14<<2)|2,{73,122,0}}, +/* 51695 */ {(14<<2)|2,{73,122,0}}, +/* 51696 */ {(15<<2)|2,{73,38,0}}, +/* 51697 */ {(15<<2)|2,{73,38,0}}, +/* 51698 */ {(15<<2)|2,{73,42,0}}, +/* 51699 */ {(15<<2)|2,{73,42,0}}, +/* 51700 */ {(15<<2)|2,{73,44,0}}, +/* 51701 */ {(15<<2)|2,{73,44,0}}, +/* 51702 */ {(15<<2)|2,{73,59,0}}, +/* 51703 */ {(15<<2)|2,{73,59,0}}, +/* 51704 */ {(15<<2)|2,{73,88,0}}, +/* 51705 */ {(15<<2)|2,{73,88,0}}, +/* 51706 */ {(15<<2)|2,{73,90,0}}, +/* 51707 */ {(15<<2)|2,{73,90,0}}, +/* 51708 */ {(7<<2)|1,{73,0,0}}, +/* 51709 */ {(7<<2)|1,{73,0,0}}, +/* 51710 */ {(7<<2)|1,{73,0,0}}, +/* 51711 */ {(7<<2)|1,{73,0,0}}, +/* 51712 */ {(12<<2)|2,{74,48,0}}, +/* 51713 */ {(12<<2)|2,{74,48,0}}, +/* 51714 */ {(12<<2)|2,{74,48,0}}, +/* 51715 */ {(12<<2)|2,{74,48,0}}, +/* 51716 */ {(12<<2)|2,{74,48,0}}, +/* 51717 */ {(12<<2)|2,{74,48,0}}, +/* 51718 */ {(12<<2)|2,{74,48,0}}, +/* 51719 */ {(12<<2)|2,{74,48,0}}, +/* 51720 */ {(12<<2)|2,{74,48,0}}, +/* 51721 */ {(12<<2)|2,{74,48,0}}, +/* 51722 */ {(12<<2)|2,{74,48,0}}, +/* 51723 */ {(12<<2)|2,{74,48,0}}, +/* 51724 */ {(12<<2)|2,{74,48,0}}, +/* 51725 */ {(12<<2)|2,{74,48,0}}, +/* 51726 */ {(12<<2)|2,{74,48,0}}, +/* 51727 */ {(12<<2)|2,{74,48,0}}, +/* 51728 */ {(12<<2)|2,{74,49,0}}, +/* 51729 */ {(12<<2)|2,{74,49,0}}, +/* 51730 */ {(12<<2)|2,{74,49,0}}, +/* 51731 */ {(12<<2)|2,{74,49,0}}, +/* 51732 */ {(12<<2)|2,{74,49,0}}, +/* 51733 */ {(12<<2)|2,{74,49,0}}, +/* 51734 */ {(12<<2)|2,{74,49,0}}, +/* 51735 */ {(12<<2)|2,{74,49,0}}, +/* 51736 */ {(12<<2)|2,{74,49,0}}, +/* 51737 */ {(12<<2)|2,{74,49,0}}, +/* 51738 */ {(12<<2)|2,{74,49,0}}, +/* 51739 */ {(12<<2)|2,{74,49,0}}, +/* 51740 */ {(12<<2)|2,{74,49,0}}, +/* 51741 */ {(12<<2)|2,{74,49,0}}, +/* 51742 */ {(12<<2)|2,{74,49,0}}, +/* 51743 */ {(12<<2)|2,{74,49,0}}, +/* 51744 */ {(12<<2)|2,{74,50,0}}, +/* 51745 */ {(12<<2)|2,{74,50,0}}, +/* 51746 */ {(12<<2)|2,{74,50,0}}, +/* 51747 */ {(12<<2)|2,{74,50,0}}, +/* 51748 */ {(12<<2)|2,{74,50,0}}, +/* 51749 */ {(12<<2)|2,{74,50,0}}, +/* 51750 */ {(12<<2)|2,{74,50,0}}, +/* 51751 */ {(12<<2)|2,{74,50,0}}, +/* 51752 */ {(12<<2)|2,{74,50,0}}, +/* 51753 */ {(12<<2)|2,{74,50,0}}, +/* 51754 */ {(12<<2)|2,{74,50,0}}, +/* 51755 */ {(12<<2)|2,{74,50,0}}, +/* 51756 */ {(12<<2)|2,{74,50,0}}, +/* 51757 */ {(12<<2)|2,{74,50,0}}, +/* 51758 */ {(12<<2)|2,{74,50,0}}, +/* 51759 */ {(12<<2)|2,{74,50,0}}, +/* 51760 */ {(12<<2)|2,{74,97,0}}, +/* 51761 */ {(12<<2)|2,{74,97,0}}, +/* 51762 */ {(12<<2)|2,{74,97,0}}, +/* 51763 */ {(12<<2)|2,{74,97,0}}, +/* 51764 */ {(12<<2)|2,{74,97,0}}, +/* 51765 */ {(12<<2)|2,{74,97,0}}, +/* 51766 */ {(12<<2)|2,{74,97,0}}, +/* 51767 */ {(12<<2)|2,{74,97,0}}, +/* 51768 */ {(12<<2)|2,{74,97,0}}, +/* 51769 */ {(12<<2)|2,{74,97,0}}, +/* 51770 */ {(12<<2)|2,{74,97,0}}, +/* 51771 */ {(12<<2)|2,{74,97,0}}, +/* 51772 */ {(12<<2)|2,{74,97,0}}, +/* 51773 */ {(12<<2)|2,{74,97,0}}, +/* 51774 */ {(12<<2)|2,{74,97,0}}, +/* 51775 */ {(12<<2)|2,{74,97,0}}, +/* 51776 */ {(12<<2)|2,{74,99,0}}, +/* 51777 */ {(12<<2)|2,{74,99,0}}, +/* 51778 */ {(12<<2)|2,{74,99,0}}, +/* 51779 */ {(12<<2)|2,{74,99,0}}, +/* 51780 */ {(12<<2)|2,{74,99,0}}, +/* 51781 */ {(12<<2)|2,{74,99,0}}, +/* 51782 */ {(12<<2)|2,{74,99,0}}, +/* 51783 */ {(12<<2)|2,{74,99,0}}, +/* 51784 */ {(12<<2)|2,{74,99,0}}, +/* 51785 */ {(12<<2)|2,{74,99,0}}, +/* 51786 */ {(12<<2)|2,{74,99,0}}, +/* 51787 */ {(12<<2)|2,{74,99,0}}, +/* 51788 */ {(12<<2)|2,{74,99,0}}, +/* 51789 */ {(12<<2)|2,{74,99,0}}, +/* 51790 */ {(12<<2)|2,{74,99,0}}, +/* 51791 */ {(12<<2)|2,{74,99,0}}, +/* 51792 */ {(12<<2)|2,{74,101,0}}, +/* 51793 */ {(12<<2)|2,{74,101,0}}, +/* 51794 */ {(12<<2)|2,{74,101,0}}, +/* 51795 */ {(12<<2)|2,{74,101,0}}, +/* 51796 */ {(12<<2)|2,{74,101,0}}, +/* 51797 */ {(12<<2)|2,{74,101,0}}, +/* 51798 */ {(12<<2)|2,{74,101,0}}, +/* 51799 */ {(12<<2)|2,{74,101,0}}, +/* 51800 */ {(12<<2)|2,{74,101,0}}, +/* 51801 */ {(12<<2)|2,{74,101,0}}, +/* 51802 */ {(12<<2)|2,{74,101,0}}, +/* 51803 */ {(12<<2)|2,{74,101,0}}, +/* 51804 */ {(12<<2)|2,{74,101,0}}, +/* 51805 */ {(12<<2)|2,{74,101,0}}, +/* 51806 */ {(12<<2)|2,{74,101,0}}, +/* 51807 */ {(12<<2)|2,{74,101,0}}, +/* 51808 */ {(12<<2)|2,{74,105,0}}, +/* 51809 */ {(12<<2)|2,{74,105,0}}, +/* 51810 */ {(12<<2)|2,{74,105,0}}, +/* 51811 */ {(12<<2)|2,{74,105,0}}, +/* 51812 */ {(12<<2)|2,{74,105,0}}, +/* 51813 */ {(12<<2)|2,{74,105,0}}, +/* 51814 */ {(12<<2)|2,{74,105,0}}, +/* 51815 */ {(12<<2)|2,{74,105,0}}, +/* 51816 */ {(12<<2)|2,{74,105,0}}, +/* 51817 */ {(12<<2)|2,{74,105,0}}, +/* 51818 */ {(12<<2)|2,{74,105,0}}, +/* 51819 */ {(12<<2)|2,{74,105,0}}, +/* 51820 */ {(12<<2)|2,{74,105,0}}, +/* 51821 */ {(12<<2)|2,{74,105,0}}, +/* 51822 */ {(12<<2)|2,{74,105,0}}, +/* 51823 */ {(12<<2)|2,{74,105,0}}, +/* 51824 */ {(12<<2)|2,{74,111,0}}, +/* 51825 */ {(12<<2)|2,{74,111,0}}, +/* 51826 */ {(12<<2)|2,{74,111,0}}, +/* 51827 */ {(12<<2)|2,{74,111,0}}, +/* 51828 */ {(12<<2)|2,{74,111,0}}, +/* 51829 */ {(12<<2)|2,{74,111,0}}, +/* 51830 */ {(12<<2)|2,{74,111,0}}, +/* 51831 */ {(12<<2)|2,{74,111,0}}, +/* 51832 */ {(12<<2)|2,{74,111,0}}, +/* 51833 */ {(12<<2)|2,{74,111,0}}, +/* 51834 */ {(12<<2)|2,{74,111,0}}, +/* 51835 */ {(12<<2)|2,{74,111,0}}, +/* 51836 */ {(12<<2)|2,{74,111,0}}, +/* 51837 */ {(12<<2)|2,{74,111,0}}, +/* 51838 */ {(12<<2)|2,{74,111,0}}, +/* 51839 */ {(12<<2)|2,{74,111,0}}, +/* 51840 */ {(12<<2)|2,{74,115,0}}, +/* 51841 */ {(12<<2)|2,{74,115,0}}, +/* 51842 */ {(12<<2)|2,{74,115,0}}, +/* 51843 */ {(12<<2)|2,{74,115,0}}, +/* 51844 */ {(12<<2)|2,{74,115,0}}, +/* 51845 */ {(12<<2)|2,{74,115,0}}, +/* 51846 */ {(12<<2)|2,{74,115,0}}, +/* 51847 */ {(12<<2)|2,{74,115,0}}, +/* 51848 */ {(12<<2)|2,{74,115,0}}, +/* 51849 */ {(12<<2)|2,{74,115,0}}, +/* 51850 */ {(12<<2)|2,{74,115,0}}, +/* 51851 */ {(12<<2)|2,{74,115,0}}, +/* 51852 */ {(12<<2)|2,{74,115,0}}, +/* 51853 */ {(12<<2)|2,{74,115,0}}, +/* 51854 */ {(12<<2)|2,{74,115,0}}, +/* 51855 */ {(12<<2)|2,{74,115,0}}, +/* 51856 */ {(12<<2)|2,{74,116,0}}, +/* 51857 */ {(12<<2)|2,{74,116,0}}, +/* 51858 */ {(12<<2)|2,{74,116,0}}, +/* 51859 */ {(12<<2)|2,{74,116,0}}, +/* 51860 */ {(12<<2)|2,{74,116,0}}, +/* 51861 */ {(12<<2)|2,{74,116,0}}, +/* 51862 */ {(12<<2)|2,{74,116,0}}, +/* 51863 */ {(12<<2)|2,{74,116,0}}, +/* 51864 */ {(12<<2)|2,{74,116,0}}, +/* 51865 */ {(12<<2)|2,{74,116,0}}, +/* 51866 */ {(12<<2)|2,{74,116,0}}, +/* 51867 */ {(12<<2)|2,{74,116,0}}, +/* 51868 */ {(12<<2)|2,{74,116,0}}, +/* 51869 */ {(12<<2)|2,{74,116,0}}, +/* 51870 */ {(12<<2)|2,{74,116,0}}, +/* 51871 */ {(12<<2)|2,{74,116,0}}, +/* 51872 */ {(13<<2)|2,{74,32,0}}, +/* 51873 */ {(13<<2)|2,{74,32,0}}, +/* 51874 */ {(13<<2)|2,{74,32,0}}, +/* 51875 */ {(13<<2)|2,{74,32,0}}, +/* 51876 */ {(13<<2)|2,{74,32,0}}, +/* 51877 */ {(13<<2)|2,{74,32,0}}, +/* 51878 */ {(13<<2)|2,{74,32,0}}, +/* 51879 */ {(13<<2)|2,{74,32,0}}, +/* 51880 */ {(13<<2)|2,{74,37,0}}, +/* 51881 */ {(13<<2)|2,{74,37,0}}, +/* 51882 */ {(13<<2)|2,{74,37,0}}, +/* 51883 */ {(13<<2)|2,{74,37,0}}, +/* 51884 */ {(13<<2)|2,{74,37,0}}, +/* 51885 */ {(13<<2)|2,{74,37,0}}, +/* 51886 */ {(13<<2)|2,{74,37,0}}, +/* 51887 */ {(13<<2)|2,{74,37,0}}, +/* 51888 */ {(13<<2)|2,{74,45,0}}, +/* 51889 */ {(13<<2)|2,{74,45,0}}, +/* 51890 */ {(13<<2)|2,{74,45,0}}, +/* 51891 */ {(13<<2)|2,{74,45,0}}, +/* 51892 */ {(13<<2)|2,{74,45,0}}, +/* 51893 */ {(13<<2)|2,{74,45,0}}, +/* 51894 */ {(13<<2)|2,{74,45,0}}, +/* 51895 */ {(13<<2)|2,{74,45,0}}, +/* 51896 */ {(13<<2)|2,{74,46,0}}, +/* 51897 */ {(13<<2)|2,{74,46,0}}, +/* 51898 */ {(13<<2)|2,{74,46,0}}, +/* 51899 */ {(13<<2)|2,{74,46,0}}, +/* 51900 */ {(13<<2)|2,{74,46,0}}, +/* 51901 */ {(13<<2)|2,{74,46,0}}, +/* 51902 */ {(13<<2)|2,{74,46,0}}, +/* 51903 */ {(13<<2)|2,{74,46,0}}, +/* 51904 */ {(13<<2)|2,{74,47,0}}, +/* 51905 */ {(13<<2)|2,{74,47,0}}, +/* 51906 */ {(13<<2)|2,{74,47,0}}, +/* 51907 */ {(13<<2)|2,{74,47,0}}, +/* 51908 */ {(13<<2)|2,{74,47,0}}, +/* 51909 */ {(13<<2)|2,{74,47,0}}, +/* 51910 */ {(13<<2)|2,{74,47,0}}, +/* 51911 */ {(13<<2)|2,{74,47,0}}, +/* 51912 */ {(13<<2)|2,{74,51,0}}, +/* 51913 */ {(13<<2)|2,{74,51,0}}, +/* 51914 */ {(13<<2)|2,{74,51,0}}, +/* 51915 */ {(13<<2)|2,{74,51,0}}, +/* 51916 */ {(13<<2)|2,{74,51,0}}, +/* 51917 */ {(13<<2)|2,{74,51,0}}, +/* 51918 */ {(13<<2)|2,{74,51,0}}, +/* 51919 */ {(13<<2)|2,{74,51,0}}, +/* 51920 */ {(13<<2)|2,{74,52,0}}, +/* 51921 */ {(13<<2)|2,{74,52,0}}, +/* 51922 */ {(13<<2)|2,{74,52,0}}, +/* 51923 */ {(13<<2)|2,{74,52,0}}, +/* 51924 */ {(13<<2)|2,{74,52,0}}, +/* 51925 */ {(13<<2)|2,{74,52,0}}, +/* 51926 */ {(13<<2)|2,{74,52,0}}, +/* 51927 */ {(13<<2)|2,{74,52,0}}, +/* 51928 */ {(13<<2)|2,{74,53,0}}, +/* 51929 */ {(13<<2)|2,{74,53,0}}, +/* 51930 */ {(13<<2)|2,{74,53,0}}, +/* 51931 */ {(13<<2)|2,{74,53,0}}, +/* 51932 */ {(13<<2)|2,{74,53,0}}, +/* 51933 */ {(13<<2)|2,{74,53,0}}, +/* 51934 */ {(13<<2)|2,{74,53,0}}, +/* 51935 */ {(13<<2)|2,{74,53,0}}, +/* 51936 */ {(13<<2)|2,{74,54,0}}, +/* 51937 */ {(13<<2)|2,{74,54,0}}, +/* 51938 */ {(13<<2)|2,{74,54,0}}, +/* 51939 */ {(13<<2)|2,{74,54,0}}, +/* 51940 */ {(13<<2)|2,{74,54,0}}, +/* 51941 */ {(13<<2)|2,{74,54,0}}, +/* 51942 */ {(13<<2)|2,{74,54,0}}, +/* 51943 */ {(13<<2)|2,{74,54,0}}, +/* 51944 */ {(13<<2)|2,{74,55,0}}, +/* 51945 */ {(13<<2)|2,{74,55,0}}, +/* 51946 */ {(13<<2)|2,{74,55,0}}, +/* 51947 */ {(13<<2)|2,{74,55,0}}, +/* 51948 */ {(13<<2)|2,{74,55,0}}, +/* 51949 */ {(13<<2)|2,{74,55,0}}, +/* 51950 */ {(13<<2)|2,{74,55,0}}, +/* 51951 */ {(13<<2)|2,{74,55,0}}, +/* 51952 */ {(13<<2)|2,{74,56,0}}, +/* 51953 */ {(13<<2)|2,{74,56,0}}, +/* 51954 */ {(13<<2)|2,{74,56,0}}, +/* 51955 */ {(13<<2)|2,{74,56,0}}, +/* 51956 */ {(13<<2)|2,{74,56,0}}, +/* 51957 */ {(13<<2)|2,{74,56,0}}, +/* 51958 */ {(13<<2)|2,{74,56,0}}, +/* 51959 */ {(13<<2)|2,{74,56,0}}, +/* 51960 */ {(13<<2)|2,{74,57,0}}, +/* 51961 */ {(13<<2)|2,{74,57,0}}, +/* 51962 */ {(13<<2)|2,{74,57,0}}, +/* 51963 */ {(13<<2)|2,{74,57,0}}, +/* 51964 */ {(13<<2)|2,{74,57,0}}, +/* 51965 */ {(13<<2)|2,{74,57,0}}, +/* 51966 */ {(13<<2)|2,{74,57,0}}, +/* 51967 */ {(13<<2)|2,{74,57,0}}, +/* 51968 */ {(13<<2)|2,{74,61,0}}, +/* 51969 */ {(13<<2)|2,{74,61,0}}, +/* 51970 */ {(13<<2)|2,{74,61,0}}, +/* 51971 */ {(13<<2)|2,{74,61,0}}, +/* 51972 */ {(13<<2)|2,{74,61,0}}, +/* 51973 */ {(13<<2)|2,{74,61,0}}, +/* 51974 */ {(13<<2)|2,{74,61,0}}, +/* 51975 */ {(13<<2)|2,{74,61,0}}, +/* 51976 */ {(13<<2)|2,{74,65,0}}, +/* 51977 */ {(13<<2)|2,{74,65,0}}, +/* 51978 */ {(13<<2)|2,{74,65,0}}, +/* 51979 */ {(13<<2)|2,{74,65,0}}, +/* 51980 */ {(13<<2)|2,{74,65,0}}, +/* 51981 */ {(13<<2)|2,{74,65,0}}, +/* 51982 */ {(13<<2)|2,{74,65,0}}, +/* 51983 */ {(13<<2)|2,{74,65,0}}, +/* 51984 */ {(13<<2)|2,{74,95,0}}, +/* 51985 */ {(13<<2)|2,{74,95,0}}, +/* 51986 */ {(13<<2)|2,{74,95,0}}, +/* 51987 */ {(13<<2)|2,{74,95,0}}, +/* 51988 */ {(13<<2)|2,{74,95,0}}, +/* 51989 */ {(13<<2)|2,{74,95,0}}, +/* 51990 */ {(13<<2)|2,{74,95,0}}, +/* 51991 */ {(13<<2)|2,{74,95,0}}, +/* 51992 */ {(13<<2)|2,{74,98,0}}, +/* 51993 */ {(13<<2)|2,{74,98,0}}, +/* 51994 */ {(13<<2)|2,{74,98,0}}, +/* 51995 */ {(13<<2)|2,{74,98,0}}, +/* 51996 */ {(13<<2)|2,{74,98,0}}, +/* 51997 */ {(13<<2)|2,{74,98,0}}, +/* 51998 */ {(13<<2)|2,{74,98,0}}, +/* 51999 */ {(13<<2)|2,{74,98,0}}, +/* 52000 */ {(13<<2)|2,{74,100,0}}, +/* 52001 */ {(13<<2)|2,{74,100,0}}, +/* 52002 */ {(13<<2)|2,{74,100,0}}, +/* 52003 */ {(13<<2)|2,{74,100,0}}, +/* 52004 */ {(13<<2)|2,{74,100,0}}, +/* 52005 */ {(13<<2)|2,{74,100,0}}, +/* 52006 */ {(13<<2)|2,{74,100,0}}, +/* 52007 */ {(13<<2)|2,{74,100,0}}, +/* 52008 */ {(13<<2)|2,{74,102,0}}, +/* 52009 */ {(13<<2)|2,{74,102,0}}, +/* 52010 */ {(13<<2)|2,{74,102,0}}, +/* 52011 */ {(13<<2)|2,{74,102,0}}, +/* 52012 */ {(13<<2)|2,{74,102,0}}, +/* 52013 */ {(13<<2)|2,{74,102,0}}, +/* 52014 */ {(13<<2)|2,{74,102,0}}, +/* 52015 */ {(13<<2)|2,{74,102,0}}, +/* 52016 */ {(13<<2)|2,{74,103,0}}, +/* 52017 */ {(13<<2)|2,{74,103,0}}, +/* 52018 */ {(13<<2)|2,{74,103,0}}, +/* 52019 */ {(13<<2)|2,{74,103,0}}, +/* 52020 */ {(13<<2)|2,{74,103,0}}, +/* 52021 */ {(13<<2)|2,{74,103,0}}, +/* 52022 */ {(13<<2)|2,{74,103,0}}, +/* 52023 */ {(13<<2)|2,{74,103,0}}, +/* 52024 */ {(13<<2)|2,{74,104,0}}, +/* 52025 */ {(13<<2)|2,{74,104,0}}, +/* 52026 */ {(13<<2)|2,{74,104,0}}, +/* 52027 */ {(13<<2)|2,{74,104,0}}, +/* 52028 */ {(13<<2)|2,{74,104,0}}, +/* 52029 */ {(13<<2)|2,{74,104,0}}, +/* 52030 */ {(13<<2)|2,{74,104,0}}, +/* 52031 */ {(13<<2)|2,{74,104,0}}, +/* 52032 */ {(13<<2)|2,{74,108,0}}, +/* 52033 */ {(13<<2)|2,{74,108,0}}, +/* 52034 */ {(13<<2)|2,{74,108,0}}, +/* 52035 */ {(13<<2)|2,{74,108,0}}, +/* 52036 */ {(13<<2)|2,{74,108,0}}, +/* 52037 */ {(13<<2)|2,{74,108,0}}, +/* 52038 */ {(13<<2)|2,{74,108,0}}, +/* 52039 */ {(13<<2)|2,{74,108,0}}, +/* 52040 */ {(13<<2)|2,{74,109,0}}, +/* 52041 */ {(13<<2)|2,{74,109,0}}, +/* 52042 */ {(13<<2)|2,{74,109,0}}, +/* 52043 */ {(13<<2)|2,{74,109,0}}, +/* 52044 */ {(13<<2)|2,{74,109,0}}, +/* 52045 */ {(13<<2)|2,{74,109,0}}, +/* 52046 */ {(13<<2)|2,{74,109,0}}, +/* 52047 */ {(13<<2)|2,{74,109,0}}, +/* 52048 */ {(13<<2)|2,{74,110,0}}, +/* 52049 */ {(13<<2)|2,{74,110,0}}, +/* 52050 */ {(13<<2)|2,{74,110,0}}, +/* 52051 */ {(13<<2)|2,{74,110,0}}, +/* 52052 */ {(13<<2)|2,{74,110,0}}, +/* 52053 */ {(13<<2)|2,{74,110,0}}, +/* 52054 */ {(13<<2)|2,{74,110,0}}, +/* 52055 */ {(13<<2)|2,{74,110,0}}, +/* 52056 */ {(13<<2)|2,{74,112,0}}, +/* 52057 */ {(13<<2)|2,{74,112,0}}, +/* 52058 */ {(13<<2)|2,{74,112,0}}, +/* 52059 */ {(13<<2)|2,{74,112,0}}, +/* 52060 */ {(13<<2)|2,{74,112,0}}, +/* 52061 */ {(13<<2)|2,{74,112,0}}, +/* 52062 */ {(13<<2)|2,{74,112,0}}, +/* 52063 */ {(13<<2)|2,{74,112,0}}, +/* 52064 */ {(13<<2)|2,{74,114,0}}, +/* 52065 */ {(13<<2)|2,{74,114,0}}, +/* 52066 */ {(13<<2)|2,{74,114,0}}, +/* 52067 */ {(13<<2)|2,{74,114,0}}, +/* 52068 */ {(13<<2)|2,{74,114,0}}, +/* 52069 */ {(13<<2)|2,{74,114,0}}, +/* 52070 */ {(13<<2)|2,{74,114,0}}, +/* 52071 */ {(13<<2)|2,{74,114,0}}, +/* 52072 */ {(13<<2)|2,{74,117,0}}, +/* 52073 */ {(13<<2)|2,{74,117,0}}, +/* 52074 */ {(13<<2)|2,{74,117,0}}, +/* 52075 */ {(13<<2)|2,{74,117,0}}, +/* 52076 */ {(13<<2)|2,{74,117,0}}, +/* 52077 */ {(13<<2)|2,{74,117,0}}, +/* 52078 */ {(13<<2)|2,{74,117,0}}, +/* 52079 */ {(13<<2)|2,{74,117,0}}, +/* 52080 */ {(14<<2)|2,{74,58,0}}, +/* 52081 */ {(14<<2)|2,{74,58,0}}, +/* 52082 */ {(14<<2)|2,{74,58,0}}, +/* 52083 */ {(14<<2)|2,{74,58,0}}, +/* 52084 */ {(14<<2)|2,{74,66,0}}, +/* 52085 */ {(14<<2)|2,{74,66,0}}, +/* 52086 */ {(14<<2)|2,{74,66,0}}, +/* 52087 */ {(14<<2)|2,{74,66,0}}, +/* 52088 */ {(14<<2)|2,{74,67,0}}, +/* 52089 */ {(14<<2)|2,{74,67,0}}, +/* 52090 */ {(14<<2)|2,{74,67,0}}, +/* 52091 */ {(14<<2)|2,{74,67,0}}, +/* 52092 */ {(14<<2)|2,{74,68,0}}, +/* 52093 */ {(14<<2)|2,{74,68,0}}, +/* 52094 */ {(14<<2)|2,{74,68,0}}, +/* 52095 */ {(14<<2)|2,{74,68,0}}, +/* 52096 */ {(14<<2)|2,{74,69,0}}, +/* 52097 */ {(14<<2)|2,{74,69,0}}, +/* 52098 */ {(14<<2)|2,{74,69,0}}, +/* 52099 */ {(14<<2)|2,{74,69,0}}, +/* 52100 */ {(14<<2)|2,{74,70,0}}, +/* 52101 */ {(14<<2)|2,{74,70,0}}, +/* 52102 */ {(14<<2)|2,{74,70,0}}, +/* 52103 */ {(14<<2)|2,{74,70,0}}, +/* 52104 */ {(14<<2)|2,{74,71,0}}, +/* 52105 */ {(14<<2)|2,{74,71,0}}, +/* 52106 */ {(14<<2)|2,{74,71,0}}, +/* 52107 */ {(14<<2)|2,{74,71,0}}, +/* 52108 */ {(14<<2)|2,{74,72,0}}, +/* 52109 */ {(14<<2)|2,{74,72,0}}, +/* 52110 */ {(14<<2)|2,{74,72,0}}, +/* 52111 */ {(14<<2)|2,{74,72,0}}, +/* 52112 */ {(14<<2)|2,{74,73,0}}, +/* 52113 */ {(14<<2)|2,{74,73,0}}, +/* 52114 */ {(14<<2)|2,{74,73,0}}, +/* 52115 */ {(14<<2)|2,{74,73,0}}, +/* 52116 */ {(14<<2)|2,{74,74,0}}, +/* 52117 */ {(14<<2)|2,{74,74,0}}, +/* 52118 */ {(14<<2)|2,{74,74,0}}, +/* 52119 */ {(14<<2)|2,{74,74,0}}, +/* 52120 */ {(14<<2)|2,{74,75,0}}, +/* 52121 */ {(14<<2)|2,{74,75,0}}, +/* 52122 */ {(14<<2)|2,{74,75,0}}, +/* 52123 */ {(14<<2)|2,{74,75,0}}, +/* 52124 */ {(14<<2)|2,{74,76,0}}, +/* 52125 */ {(14<<2)|2,{74,76,0}}, +/* 52126 */ {(14<<2)|2,{74,76,0}}, +/* 52127 */ {(14<<2)|2,{74,76,0}}, +/* 52128 */ {(14<<2)|2,{74,77,0}}, +/* 52129 */ {(14<<2)|2,{74,77,0}}, +/* 52130 */ {(14<<2)|2,{74,77,0}}, +/* 52131 */ {(14<<2)|2,{74,77,0}}, +/* 52132 */ {(14<<2)|2,{74,78,0}}, +/* 52133 */ {(14<<2)|2,{74,78,0}}, +/* 52134 */ {(14<<2)|2,{74,78,0}}, +/* 52135 */ {(14<<2)|2,{74,78,0}}, +/* 52136 */ {(14<<2)|2,{74,79,0}}, +/* 52137 */ {(14<<2)|2,{74,79,0}}, +/* 52138 */ {(14<<2)|2,{74,79,0}}, +/* 52139 */ {(14<<2)|2,{74,79,0}}, +/* 52140 */ {(14<<2)|2,{74,80,0}}, +/* 52141 */ {(14<<2)|2,{74,80,0}}, +/* 52142 */ {(14<<2)|2,{74,80,0}}, +/* 52143 */ {(14<<2)|2,{74,80,0}}, +/* 52144 */ {(14<<2)|2,{74,81,0}}, +/* 52145 */ {(14<<2)|2,{74,81,0}}, +/* 52146 */ {(14<<2)|2,{74,81,0}}, +/* 52147 */ {(14<<2)|2,{74,81,0}}, +/* 52148 */ {(14<<2)|2,{74,82,0}}, +/* 52149 */ {(14<<2)|2,{74,82,0}}, +/* 52150 */ {(14<<2)|2,{74,82,0}}, +/* 52151 */ {(14<<2)|2,{74,82,0}}, +/* 52152 */ {(14<<2)|2,{74,83,0}}, +/* 52153 */ {(14<<2)|2,{74,83,0}}, +/* 52154 */ {(14<<2)|2,{74,83,0}}, +/* 52155 */ {(14<<2)|2,{74,83,0}}, +/* 52156 */ {(14<<2)|2,{74,84,0}}, +/* 52157 */ {(14<<2)|2,{74,84,0}}, +/* 52158 */ {(14<<2)|2,{74,84,0}}, +/* 52159 */ {(14<<2)|2,{74,84,0}}, +/* 52160 */ {(14<<2)|2,{74,85,0}}, +/* 52161 */ {(14<<2)|2,{74,85,0}}, +/* 52162 */ {(14<<2)|2,{74,85,0}}, +/* 52163 */ {(14<<2)|2,{74,85,0}}, +/* 52164 */ {(14<<2)|2,{74,86,0}}, +/* 52165 */ {(14<<2)|2,{74,86,0}}, +/* 52166 */ {(14<<2)|2,{74,86,0}}, +/* 52167 */ {(14<<2)|2,{74,86,0}}, +/* 52168 */ {(14<<2)|2,{74,87,0}}, +/* 52169 */ {(14<<2)|2,{74,87,0}}, +/* 52170 */ {(14<<2)|2,{74,87,0}}, +/* 52171 */ {(14<<2)|2,{74,87,0}}, +/* 52172 */ {(14<<2)|2,{74,89,0}}, +/* 52173 */ {(14<<2)|2,{74,89,0}}, +/* 52174 */ {(14<<2)|2,{74,89,0}}, +/* 52175 */ {(14<<2)|2,{74,89,0}}, +/* 52176 */ {(14<<2)|2,{74,106,0}}, +/* 52177 */ {(14<<2)|2,{74,106,0}}, +/* 52178 */ {(14<<2)|2,{74,106,0}}, +/* 52179 */ {(14<<2)|2,{74,106,0}}, +/* 52180 */ {(14<<2)|2,{74,107,0}}, +/* 52181 */ {(14<<2)|2,{74,107,0}}, +/* 52182 */ {(14<<2)|2,{74,107,0}}, +/* 52183 */ {(14<<2)|2,{74,107,0}}, +/* 52184 */ {(14<<2)|2,{74,113,0}}, +/* 52185 */ {(14<<2)|2,{74,113,0}}, +/* 52186 */ {(14<<2)|2,{74,113,0}}, +/* 52187 */ {(14<<2)|2,{74,113,0}}, +/* 52188 */ {(14<<2)|2,{74,118,0}}, +/* 52189 */ {(14<<2)|2,{74,118,0}}, +/* 52190 */ {(14<<2)|2,{74,118,0}}, +/* 52191 */ {(14<<2)|2,{74,118,0}}, +/* 52192 */ {(14<<2)|2,{74,119,0}}, +/* 52193 */ {(14<<2)|2,{74,119,0}}, +/* 52194 */ {(14<<2)|2,{74,119,0}}, +/* 52195 */ {(14<<2)|2,{74,119,0}}, +/* 52196 */ {(14<<2)|2,{74,120,0}}, +/* 52197 */ {(14<<2)|2,{74,120,0}}, +/* 52198 */ {(14<<2)|2,{74,120,0}}, +/* 52199 */ {(14<<2)|2,{74,120,0}}, +/* 52200 */ {(14<<2)|2,{74,121,0}}, +/* 52201 */ {(14<<2)|2,{74,121,0}}, +/* 52202 */ {(14<<2)|2,{74,121,0}}, +/* 52203 */ {(14<<2)|2,{74,121,0}}, +/* 52204 */ {(14<<2)|2,{74,122,0}}, +/* 52205 */ {(14<<2)|2,{74,122,0}}, +/* 52206 */ {(14<<2)|2,{74,122,0}}, +/* 52207 */ {(14<<2)|2,{74,122,0}}, +/* 52208 */ {(15<<2)|2,{74,38,0}}, +/* 52209 */ {(15<<2)|2,{74,38,0}}, +/* 52210 */ {(15<<2)|2,{74,42,0}}, +/* 52211 */ {(15<<2)|2,{74,42,0}}, +/* 52212 */ {(15<<2)|2,{74,44,0}}, +/* 52213 */ {(15<<2)|2,{74,44,0}}, +/* 52214 */ {(15<<2)|2,{74,59,0}}, +/* 52215 */ {(15<<2)|2,{74,59,0}}, +/* 52216 */ {(15<<2)|2,{74,88,0}}, +/* 52217 */ {(15<<2)|2,{74,88,0}}, +/* 52218 */ {(15<<2)|2,{74,90,0}}, +/* 52219 */ {(15<<2)|2,{74,90,0}}, +/* 52220 */ {(7<<2)|1,{74,0,0}}, +/* 52221 */ {(7<<2)|1,{74,0,0}}, +/* 52222 */ {(7<<2)|1,{74,0,0}}, +/* 52223 */ {(7<<2)|1,{74,0,0}}, +/* 52224 */ {(12<<2)|2,{75,48,0}}, +/* 52225 */ {(12<<2)|2,{75,48,0}}, +/* 52226 */ {(12<<2)|2,{75,48,0}}, +/* 52227 */ {(12<<2)|2,{75,48,0}}, +/* 52228 */ {(12<<2)|2,{75,48,0}}, +/* 52229 */ {(12<<2)|2,{75,48,0}}, +/* 52230 */ {(12<<2)|2,{75,48,0}}, +/* 52231 */ {(12<<2)|2,{75,48,0}}, +/* 52232 */ {(12<<2)|2,{75,48,0}}, +/* 52233 */ {(12<<2)|2,{75,48,0}}, +/* 52234 */ {(12<<2)|2,{75,48,0}}, +/* 52235 */ {(12<<2)|2,{75,48,0}}, +/* 52236 */ {(12<<2)|2,{75,48,0}}, +/* 52237 */ {(12<<2)|2,{75,48,0}}, +/* 52238 */ {(12<<2)|2,{75,48,0}}, +/* 52239 */ {(12<<2)|2,{75,48,0}}, +/* 52240 */ {(12<<2)|2,{75,49,0}}, +/* 52241 */ {(12<<2)|2,{75,49,0}}, +/* 52242 */ {(12<<2)|2,{75,49,0}}, +/* 52243 */ {(12<<2)|2,{75,49,0}}, +/* 52244 */ {(12<<2)|2,{75,49,0}}, +/* 52245 */ {(12<<2)|2,{75,49,0}}, +/* 52246 */ {(12<<2)|2,{75,49,0}}, +/* 52247 */ {(12<<2)|2,{75,49,0}}, +/* 52248 */ {(12<<2)|2,{75,49,0}}, +/* 52249 */ {(12<<2)|2,{75,49,0}}, +/* 52250 */ {(12<<2)|2,{75,49,0}}, +/* 52251 */ {(12<<2)|2,{75,49,0}}, +/* 52252 */ {(12<<2)|2,{75,49,0}}, +/* 52253 */ {(12<<2)|2,{75,49,0}}, +/* 52254 */ {(12<<2)|2,{75,49,0}}, +/* 52255 */ {(12<<2)|2,{75,49,0}}, +/* 52256 */ {(12<<2)|2,{75,50,0}}, +/* 52257 */ {(12<<2)|2,{75,50,0}}, +/* 52258 */ {(12<<2)|2,{75,50,0}}, +/* 52259 */ {(12<<2)|2,{75,50,0}}, +/* 52260 */ {(12<<2)|2,{75,50,0}}, +/* 52261 */ {(12<<2)|2,{75,50,0}}, +/* 52262 */ {(12<<2)|2,{75,50,0}}, +/* 52263 */ {(12<<2)|2,{75,50,0}}, +/* 52264 */ {(12<<2)|2,{75,50,0}}, +/* 52265 */ {(12<<2)|2,{75,50,0}}, +/* 52266 */ {(12<<2)|2,{75,50,0}}, +/* 52267 */ {(12<<2)|2,{75,50,0}}, +/* 52268 */ {(12<<2)|2,{75,50,0}}, +/* 52269 */ {(12<<2)|2,{75,50,0}}, +/* 52270 */ {(12<<2)|2,{75,50,0}}, +/* 52271 */ {(12<<2)|2,{75,50,0}}, +/* 52272 */ {(12<<2)|2,{75,97,0}}, +/* 52273 */ {(12<<2)|2,{75,97,0}}, +/* 52274 */ {(12<<2)|2,{75,97,0}}, +/* 52275 */ {(12<<2)|2,{75,97,0}}, +/* 52276 */ {(12<<2)|2,{75,97,0}}, +/* 52277 */ {(12<<2)|2,{75,97,0}}, +/* 52278 */ {(12<<2)|2,{75,97,0}}, +/* 52279 */ {(12<<2)|2,{75,97,0}}, +/* 52280 */ {(12<<2)|2,{75,97,0}}, +/* 52281 */ {(12<<2)|2,{75,97,0}}, +/* 52282 */ {(12<<2)|2,{75,97,0}}, +/* 52283 */ {(12<<2)|2,{75,97,0}}, +/* 52284 */ {(12<<2)|2,{75,97,0}}, +/* 52285 */ {(12<<2)|2,{75,97,0}}, +/* 52286 */ {(12<<2)|2,{75,97,0}}, +/* 52287 */ {(12<<2)|2,{75,97,0}}, +/* 52288 */ {(12<<2)|2,{75,99,0}}, +/* 52289 */ {(12<<2)|2,{75,99,0}}, +/* 52290 */ {(12<<2)|2,{75,99,0}}, +/* 52291 */ {(12<<2)|2,{75,99,0}}, +/* 52292 */ {(12<<2)|2,{75,99,0}}, +/* 52293 */ {(12<<2)|2,{75,99,0}}, +/* 52294 */ {(12<<2)|2,{75,99,0}}, +/* 52295 */ {(12<<2)|2,{75,99,0}}, +/* 52296 */ {(12<<2)|2,{75,99,0}}, +/* 52297 */ {(12<<2)|2,{75,99,0}}, +/* 52298 */ {(12<<2)|2,{75,99,0}}, +/* 52299 */ {(12<<2)|2,{75,99,0}}, +/* 52300 */ {(12<<2)|2,{75,99,0}}, +/* 52301 */ {(12<<2)|2,{75,99,0}}, +/* 52302 */ {(12<<2)|2,{75,99,0}}, +/* 52303 */ {(12<<2)|2,{75,99,0}}, +/* 52304 */ {(12<<2)|2,{75,101,0}}, +/* 52305 */ {(12<<2)|2,{75,101,0}}, +/* 52306 */ {(12<<2)|2,{75,101,0}}, +/* 52307 */ {(12<<2)|2,{75,101,0}}, +/* 52308 */ {(12<<2)|2,{75,101,0}}, +/* 52309 */ {(12<<2)|2,{75,101,0}}, +/* 52310 */ {(12<<2)|2,{75,101,0}}, +/* 52311 */ {(12<<2)|2,{75,101,0}}, +/* 52312 */ {(12<<2)|2,{75,101,0}}, +/* 52313 */ {(12<<2)|2,{75,101,0}}, +/* 52314 */ {(12<<2)|2,{75,101,0}}, +/* 52315 */ {(12<<2)|2,{75,101,0}}, +/* 52316 */ {(12<<2)|2,{75,101,0}}, +/* 52317 */ {(12<<2)|2,{75,101,0}}, +/* 52318 */ {(12<<2)|2,{75,101,0}}, +/* 52319 */ {(12<<2)|2,{75,101,0}}, +/* 52320 */ {(12<<2)|2,{75,105,0}}, +/* 52321 */ {(12<<2)|2,{75,105,0}}, +/* 52322 */ {(12<<2)|2,{75,105,0}}, +/* 52323 */ {(12<<2)|2,{75,105,0}}, +/* 52324 */ {(12<<2)|2,{75,105,0}}, +/* 52325 */ {(12<<2)|2,{75,105,0}}, +/* 52326 */ {(12<<2)|2,{75,105,0}}, +/* 52327 */ {(12<<2)|2,{75,105,0}}, +/* 52328 */ {(12<<2)|2,{75,105,0}}, +/* 52329 */ {(12<<2)|2,{75,105,0}}, +/* 52330 */ {(12<<2)|2,{75,105,0}}, +/* 52331 */ {(12<<2)|2,{75,105,0}}, +/* 52332 */ {(12<<2)|2,{75,105,0}}, +/* 52333 */ {(12<<2)|2,{75,105,0}}, +/* 52334 */ {(12<<2)|2,{75,105,0}}, +/* 52335 */ {(12<<2)|2,{75,105,0}}, +/* 52336 */ {(12<<2)|2,{75,111,0}}, +/* 52337 */ {(12<<2)|2,{75,111,0}}, +/* 52338 */ {(12<<2)|2,{75,111,0}}, +/* 52339 */ {(12<<2)|2,{75,111,0}}, +/* 52340 */ {(12<<2)|2,{75,111,0}}, +/* 52341 */ {(12<<2)|2,{75,111,0}}, +/* 52342 */ {(12<<2)|2,{75,111,0}}, +/* 52343 */ {(12<<2)|2,{75,111,0}}, +/* 52344 */ {(12<<2)|2,{75,111,0}}, +/* 52345 */ {(12<<2)|2,{75,111,0}}, +/* 52346 */ {(12<<2)|2,{75,111,0}}, +/* 52347 */ {(12<<2)|2,{75,111,0}}, +/* 52348 */ {(12<<2)|2,{75,111,0}}, +/* 52349 */ {(12<<2)|2,{75,111,0}}, +/* 52350 */ {(12<<2)|2,{75,111,0}}, +/* 52351 */ {(12<<2)|2,{75,111,0}}, +/* 52352 */ {(12<<2)|2,{75,115,0}}, +/* 52353 */ {(12<<2)|2,{75,115,0}}, +/* 52354 */ {(12<<2)|2,{75,115,0}}, +/* 52355 */ {(12<<2)|2,{75,115,0}}, +/* 52356 */ {(12<<2)|2,{75,115,0}}, +/* 52357 */ {(12<<2)|2,{75,115,0}}, +/* 52358 */ {(12<<2)|2,{75,115,0}}, +/* 52359 */ {(12<<2)|2,{75,115,0}}, +/* 52360 */ {(12<<2)|2,{75,115,0}}, +/* 52361 */ {(12<<2)|2,{75,115,0}}, +/* 52362 */ {(12<<2)|2,{75,115,0}}, +/* 52363 */ {(12<<2)|2,{75,115,0}}, +/* 52364 */ {(12<<2)|2,{75,115,0}}, +/* 52365 */ {(12<<2)|2,{75,115,0}}, +/* 52366 */ {(12<<2)|2,{75,115,0}}, +/* 52367 */ {(12<<2)|2,{75,115,0}}, +/* 52368 */ {(12<<2)|2,{75,116,0}}, +/* 52369 */ {(12<<2)|2,{75,116,0}}, +/* 52370 */ {(12<<2)|2,{75,116,0}}, +/* 52371 */ {(12<<2)|2,{75,116,0}}, +/* 52372 */ {(12<<2)|2,{75,116,0}}, +/* 52373 */ {(12<<2)|2,{75,116,0}}, +/* 52374 */ {(12<<2)|2,{75,116,0}}, +/* 52375 */ {(12<<2)|2,{75,116,0}}, +/* 52376 */ {(12<<2)|2,{75,116,0}}, +/* 52377 */ {(12<<2)|2,{75,116,0}}, +/* 52378 */ {(12<<2)|2,{75,116,0}}, +/* 52379 */ {(12<<2)|2,{75,116,0}}, +/* 52380 */ {(12<<2)|2,{75,116,0}}, +/* 52381 */ {(12<<2)|2,{75,116,0}}, +/* 52382 */ {(12<<2)|2,{75,116,0}}, +/* 52383 */ {(12<<2)|2,{75,116,0}}, +/* 52384 */ {(13<<2)|2,{75,32,0}}, +/* 52385 */ {(13<<2)|2,{75,32,0}}, +/* 52386 */ {(13<<2)|2,{75,32,0}}, +/* 52387 */ {(13<<2)|2,{75,32,0}}, +/* 52388 */ {(13<<2)|2,{75,32,0}}, +/* 52389 */ {(13<<2)|2,{75,32,0}}, +/* 52390 */ {(13<<2)|2,{75,32,0}}, +/* 52391 */ {(13<<2)|2,{75,32,0}}, +/* 52392 */ {(13<<2)|2,{75,37,0}}, +/* 52393 */ {(13<<2)|2,{75,37,0}}, +/* 52394 */ {(13<<2)|2,{75,37,0}}, +/* 52395 */ {(13<<2)|2,{75,37,0}}, +/* 52396 */ {(13<<2)|2,{75,37,0}}, +/* 52397 */ {(13<<2)|2,{75,37,0}}, +/* 52398 */ {(13<<2)|2,{75,37,0}}, +/* 52399 */ {(13<<2)|2,{75,37,0}}, +/* 52400 */ {(13<<2)|2,{75,45,0}}, +/* 52401 */ {(13<<2)|2,{75,45,0}}, +/* 52402 */ {(13<<2)|2,{75,45,0}}, +/* 52403 */ {(13<<2)|2,{75,45,0}}, +/* 52404 */ {(13<<2)|2,{75,45,0}}, +/* 52405 */ {(13<<2)|2,{75,45,0}}, +/* 52406 */ {(13<<2)|2,{75,45,0}}, +/* 52407 */ {(13<<2)|2,{75,45,0}}, +/* 52408 */ {(13<<2)|2,{75,46,0}}, +/* 52409 */ {(13<<2)|2,{75,46,0}}, +/* 52410 */ {(13<<2)|2,{75,46,0}}, +/* 52411 */ {(13<<2)|2,{75,46,0}}, +/* 52412 */ {(13<<2)|2,{75,46,0}}, +/* 52413 */ {(13<<2)|2,{75,46,0}}, +/* 52414 */ {(13<<2)|2,{75,46,0}}, +/* 52415 */ {(13<<2)|2,{75,46,0}}, +/* 52416 */ {(13<<2)|2,{75,47,0}}, +/* 52417 */ {(13<<2)|2,{75,47,0}}, +/* 52418 */ {(13<<2)|2,{75,47,0}}, +/* 52419 */ {(13<<2)|2,{75,47,0}}, +/* 52420 */ {(13<<2)|2,{75,47,0}}, +/* 52421 */ {(13<<2)|2,{75,47,0}}, +/* 52422 */ {(13<<2)|2,{75,47,0}}, +/* 52423 */ {(13<<2)|2,{75,47,0}}, +/* 52424 */ {(13<<2)|2,{75,51,0}}, +/* 52425 */ {(13<<2)|2,{75,51,0}}, +/* 52426 */ {(13<<2)|2,{75,51,0}}, +/* 52427 */ {(13<<2)|2,{75,51,0}}, +/* 52428 */ {(13<<2)|2,{75,51,0}}, +/* 52429 */ {(13<<2)|2,{75,51,0}}, +/* 52430 */ {(13<<2)|2,{75,51,0}}, +/* 52431 */ {(13<<2)|2,{75,51,0}}, +/* 52432 */ {(13<<2)|2,{75,52,0}}, +/* 52433 */ {(13<<2)|2,{75,52,0}}, +/* 52434 */ {(13<<2)|2,{75,52,0}}, +/* 52435 */ {(13<<2)|2,{75,52,0}}, +/* 52436 */ {(13<<2)|2,{75,52,0}}, +/* 52437 */ {(13<<2)|2,{75,52,0}}, +/* 52438 */ {(13<<2)|2,{75,52,0}}, +/* 52439 */ {(13<<2)|2,{75,52,0}}, +/* 52440 */ {(13<<2)|2,{75,53,0}}, +/* 52441 */ {(13<<2)|2,{75,53,0}}, +/* 52442 */ {(13<<2)|2,{75,53,0}}, +/* 52443 */ {(13<<2)|2,{75,53,0}}, +/* 52444 */ {(13<<2)|2,{75,53,0}}, +/* 52445 */ {(13<<2)|2,{75,53,0}}, +/* 52446 */ {(13<<2)|2,{75,53,0}}, +/* 52447 */ {(13<<2)|2,{75,53,0}}, +/* 52448 */ {(13<<2)|2,{75,54,0}}, +/* 52449 */ {(13<<2)|2,{75,54,0}}, +/* 52450 */ {(13<<2)|2,{75,54,0}}, +/* 52451 */ {(13<<2)|2,{75,54,0}}, +/* 52452 */ {(13<<2)|2,{75,54,0}}, +/* 52453 */ {(13<<2)|2,{75,54,0}}, +/* 52454 */ {(13<<2)|2,{75,54,0}}, +/* 52455 */ {(13<<2)|2,{75,54,0}}, +/* 52456 */ {(13<<2)|2,{75,55,0}}, +/* 52457 */ {(13<<2)|2,{75,55,0}}, +/* 52458 */ {(13<<2)|2,{75,55,0}}, +/* 52459 */ {(13<<2)|2,{75,55,0}}, +/* 52460 */ {(13<<2)|2,{75,55,0}}, +/* 52461 */ {(13<<2)|2,{75,55,0}}, +/* 52462 */ {(13<<2)|2,{75,55,0}}, +/* 52463 */ {(13<<2)|2,{75,55,0}}, +/* 52464 */ {(13<<2)|2,{75,56,0}}, +/* 52465 */ {(13<<2)|2,{75,56,0}}, +/* 52466 */ {(13<<2)|2,{75,56,0}}, +/* 52467 */ {(13<<2)|2,{75,56,0}}, +/* 52468 */ {(13<<2)|2,{75,56,0}}, +/* 52469 */ {(13<<2)|2,{75,56,0}}, +/* 52470 */ {(13<<2)|2,{75,56,0}}, +/* 52471 */ {(13<<2)|2,{75,56,0}}, +/* 52472 */ {(13<<2)|2,{75,57,0}}, +/* 52473 */ {(13<<2)|2,{75,57,0}}, +/* 52474 */ {(13<<2)|2,{75,57,0}}, +/* 52475 */ {(13<<2)|2,{75,57,0}}, +/* 52476 */ {(13<<2)|2,{75,57,0}}, +/* 52477 */ {(13<<2)|2,{75,57,0}}, +/* 52478 */ {(13<<2)|2,{75,57,0}}, +/* 52479 */ {(13<<2)|2,{75,57,0}}, +/* 52480 */ {(13<<2)|2,{75,61,0}}, +/* 52481 */ {(13<<2)|2,{75,61,0}}, +/* 52482 */ {(13<<2)|2,{75,61,0}}, +/* 52483 */ {(13<<2)|2,{75,61,0}}, +/* 52484 */ {(13<<2)|2,{75,61,0}}, +/* 52485 */ {(13<<2)|2,{75,61,0}}, +/* 52486 */ {(13<<2)|2,{75,61,0}}, +/* 52487 */ {(13<<2)|2,{75,61,0}}, +/* 52488 */ {(13<<2)|2,{75,65,0}}, +/* 52489 */ {(13<<2)|2,{75,65,0}}, +/* 52490 */ {(13<<2)|2,{75,65,0}}, +/* 52491 */ {(13<<2)|2,{75,65,0}}, +/* 52492 */ {(13<<2)|2,{75,65,0}}, +/* 52493 */ {(13<<2)|2,{75,65,0}}, +/* 52494 */ {(13<<2)|2,{75,65,0}}, +/* 52495 */ {(13<<2)|2,{75,65,0}}, +/* 52496 */ {(13<<2)|2,{75,95,0}}, +/* 52497 */ {(13<<2)|2,{75,95,0}}, +/* 52498 */ {(13<<2)|2,{75,95,0}}, +/* 52499 */ {(13<<2)|2,{75,95,0}}, +/* 52500 */ {(13<<2)|2,{75,95,0}}, +/* 52501 */ {(13<<2)|2,{75,95,0}}, +/* 52502 */ {(13<<2)|2,{75,95,0}}, +/* 52503 */ {(13<<2)|2,{75,95,0}}, +/* 52504 */ {(13<<2)|2,{75,98,0}}, +/* 52505 */ {(13<<2)|2,{75,98,0}}, +/* 52506 */ {(13<<2)|2,{75,98,0}}, +/* 52507 */ {(13<<2)|2,{75,98,0}}, +/* 52508 */ {(13<<2)|2,{75,98,0}}, +/* 52509 */ {(13<<2)|2,{75,98,0}}, +/* 52510 */ {(13<<2)|2,{75,98,0}}, +/* 52511 */ {(13<<2)|2,{75,98,0}}, +/* 52512 */ {(13<<2)|2,{75,100,0}}, +/* 52513 */ {(13<<2)|2,{75,100,0}}, +/* 52514 */ {(13<<2)|2,{75,100,0}}, +/* 52515 */ {(13<<2)|2,{75,100,0}}, +/* 52516 */ {(13<<2)|2,{75,100,0}}, +/* 52517 */ {(13<<2)|2,{75,100,0}}, +/* 52518 */ {(13<<2)|2,{75,100,0}}, +/* 52519 */ {(13<<2)|2,{75,100,0}}, +/* 52520 */ {(13<<2)|2,{75,102,0}}, +/* 52521 */ {(13<<2)|2,{75,102,0}}, +/* 52522 */ {(13<<2)|2,{75,102,0}}, +/* 52523 */ {(13<<2)|2,{75,102,0}}, +/* 52524 */ {(13<<2)|2,{75,102,0}}, +/* 52525 */ {(13<<2)|2,{75,102,0}}, +/* 52526 */ {(13<<2)|2,{75,102,0}}, +/* 52527 */ {(13<<2)|2,{75,102,0}}, +/* 52528 */ {(13<<2)|2,{75,103,0}}, +/* 52529 */ {(13<<2)|2,{75,103,0}}, +/* 52530 */ {(13<<2)|2,{75,103,0}}, +/* 52531 */ {(13<<2)|2,{75,103,0}}, +/* 52532 */ {(13<<2)|2,{75,103,0}}, +/* 52533 */ {(13<<2)|2,{75,103,0}}, +/* 52534 */ {(13<<2)|2,{75,103,0}}, +/* 52535 */ {(13<<2)|2,{75,103,0}}, +/* 52536 */ {(13<<2)|2,{75,104,0}}, +/* 52537 */ {(13<<2)|2,{75,104,0}}, +/* 52538 */ {(13<<2)|2,{75,104,0}}, +/* 52539 */ {(13<<2)|2,{75,104,0}}, +/* 52540 */ {(13<<2)|2,{75,104,0}}, +/* 52541 */ {(13<<2)|2,{75,104,0}}, +/* 52542 */ {(13<<2)|2,{75,104,0}}, +/* 52543 */ {(13<<2)|2,{75,104,0}}, +/* 52544 */ {(13<<2)|2,{75,108,0}}, +/* 52545 */ {(13<<2)|2,{75,108,0}}, +/* 52546 */ {(13<<2)|2,{75,108,0}}, +/* 52547 */ {(13<<2)|2,{75,108,0}}, +/* 52548 */ {(13<<2)|2,{75,108,0}}, +/* 52549 */ {(13<<2)|2,{75,108,0}}, +/* 52550 */ {(13<<2)|2,{75,108,0}}, +/* 52551 */ {(13<<2)|2,{75,108,0}}, +/* 52552 */ {(13<<2)|2,{75,109,0}}, +/* 52553 */ {(13<<2)|2,{75,109,0}}, +/* 52554 */ {(13<<2)|2,{75,109,0}}, +/* 52555 */ {(13<<2)|2,{75,109,0}}, +/* 52556 */ {(13<<2)|2,{75,109,0}}, +/* 52557 */ {(13<<2)|2,{75,109,0}}, +/* 52558 */ {(13<<2)|2,{75,109,0}}, +/* 52559 */ {(13<<2)|2,{75,109,0}}, +/* 52560 */ {(13<<2)|2,{75,110,0}}, +/* 52561 */ {(13<<2)|2,{75,110,0}}, +/* 52562 */ {(13<<2)|2,{75,110,0}}, +/* 52563 */ {(13<<2)|2,{75,110,0}}, +/* 52564 */ {(13<<2)|2,{75,110,0}}, +/* 52565 */ {(13<<2)|2,{75,110,0}}, +/* 52566 */ {(13<<2)|2,{75,110,0}}, +/* 52567 */ {(13<<2)|2,{75,110,0}}, +/* 52568 */ {(13<<2)|2,{75,112,0}}, +/* 52569 */ {(13<<2)|2,{75,112,0}}, +/* 52570 */ {(13<<2)|2,{75,112,0}}, +/* 52571 */ {(13<<2)|2,{75,112,0}}, +/* 52572 */ {(13<<2)|2,{75,112,0}}, +/* 52573 */ {(13<<2)|2,{75,112,0}}, +/* 52574 */ {(13<<2)|2,{75,112,0}}, +/* 52575 */ {(13<<2)|2,{75,112,0}}, +/* 52576 */ {(13<<2)|2,{75,114,0}}, +/* 52577 */ {(13<<2)|2,{75,114,0}}, +/* 52578 */ {(13<<2)|2,{75,114,0}}, +/* 52579 */ {(13<<2)|2,{75,114,0}}, +/* 52580 */ {(13<<2)|2,{75,114,0}}, +/* 52581 */ {(13<<2)|2,{75,114,0}}, +/* 52582 */ {(13<<2)|2,{75,114,0}}, +/* 52583 */ {(13<<2)|2,{75,114,0}}, +/* 52584 */ {(13<<2)|2,{75,117,0}}, +/* 52585 */ {(13<<2)|2,{75,117,0}}, +/* 52586 */ {(13<<2)|2,{75,117,0}}, +/* 52587 */ {(13<<2)|2,{75,117,0}}, +/* 52588 */ {(13<<2)|2,{75,117,0}}, +/* 52589 */ {(13<<2)|2,{75,117,0}}, +/* 52590 */ {(13<<2)|2,{75,117,0}}, +/* 52591 */ {(13<<2)|2,{75,117,0}}, +/* 52592 */ {(14<<2)|2,{75,58,0}}, +/* 52593 */ {(14<<2)|2,{75,58,0}}, +/* 52594 */ {(14<<2)|2,{75,58,0}}, +/* 52595 */ {(14<<2)|2,{75,58,0}}, +/* 52596 */ {(14<<2)|2,{75,66,0}}, +/* 52597 */ {(14<<2)|2,{75,66,0}}, +/* 52598 */ {(14<<2)|2,{75,66,0}}, +/* 52599 */ {(14<<2)|2,{75,66,0}}, +/* 52600 */ {(14<<2)|2,{75,67,0}}, +/* 52601 */ {(14<<2)|2,{75,67,0}}, +/* 52602 */ {(14<<2)|2,{75,67,0}}, +/* 52603 */ {(14<<2)|2,{75,67,0}}, +/* 52604 */ {(14<<2)|2,{75,68,0}}, +/* 52605 */ {(14<<2)|2,{75,68,0}}, +/* 52606 */ {(14<<2)|2,{75,68,0}}, +/* 52607 */ {(14<<2)|2,{75,68,0}}, +/* 52608 */ {(14<<2)|2,{75,69,0}}, +/* 52609 */ {(14<<2)|2,{75,69,0}}, +/* 52610 */ {(14<<2)|2,{75,69,0}}, +/* 52611 */ {(14<<2)|2,{75,69,0}}, +/* 52612 */ {(14<<2)|2,{75,70,0}}, +/* 52613 */ {(14<<2)|2,{75,70,0}}, +/* 52614 */ {(14<<2)|2,{75,70,0}}, +/* 52615 */ {(14<<2)|2,{75,70,0}}, +/* 52616 */ {(14<<2)|2,{75,71,0}}, +/* 52617 */ {(14<<2)|2,{75,71,0}}, +/* 52618 */ {(14<<2)|2,{75,71,0}}, +/* 52619 */ {(14<<2)|2,{75,71,0}}, +/* 52620 */ {(14<<2)|2,{75,72,0}}, +/* 52621 */ {(14<<2)|2,{75,72,0}}, +/* 52622 */ {(14<<2)|2,{75,72,0}}, +/* 52623 */ {(14<<2)|2,{75,72,0}}, +/* 52624 */ {(14<<2)|2,{75,73,0}}, +/* 52625 */ {(14<<2)|2,{75,73,0}}, +/* 52626 */ {(14<<2)|2,{75,73,0}}, +/* 52627 */ {(14<<2)|2,{75,73,0}}, +/* 52628 */ {(14<<2)|2,{75,74,0}}, +/* 52629 */ {(14<<2)|2,{75,74,0}}, +/* 52630 */ {(14<<2)|2,{75,74,0}}, +/* 52631 */ {(14<<2)|2,{75,74,0}}, +/* 52632 */ {(14<<2)|2,{75,75,0}}, +/* 52633 */ {(14<<2)|2,{75,75,0}}, +/* 52634 */ {(14<<2)|2,{75,75,0}}, +/* 52635 */ {(14<<2)|2,{75,75,0}}, +/* 52636 */ {(14<<2)|2,{75,76,0}}, +/* 52637 */ {(14<<2)|2,{75,76,0}}, +/* 52638 */ {(14<<2)|2,{75,76,0}}, +/* 52639 */ {(14<<2)|2,{75,76,0}}, +/* 52640 */ {(14<<2)|2,{75,77,0}}, +/* 52641 */ {(14<<2)|2,{75,77,0}}, +/* 52642 */ {(14<<2)|2,{75,77,0}}, +/* 52643 */ {(14<<2)|2,{75,77,0}}, +/* 52644 */ {(14<<2)|2,{75,78,0}}, +/* 52645 */ {(14<<2)|2,{75,78,0}}, +/* 52646 */ {(14<<2)|2,{75,78,0}}, +/* 52647 */ {(14<<2)|2,{75,78,0}}, +/* 52648 */ {(14<<2)|2,{75,79,0}}, +/* 52649 */ {(14<<2)|2,{75,79,0}}, +/* 52650 */ {(14<<2)|2,{75,79,0}}, +/* 52651 */ {(14<<2)|2,{75,79,0}}, +/* 52652 */ {(14<<2)|2,{75,80,0}}, +/* 52653 */ {(14<<2)|2,{75,80,0}}, +/* 52654 */ {(14<<2)|2,{75,80,0}}, +/* 52655 */ {(14<<2)|2,{75,80,0}}, +/* 52656 */ {(14<<2)|2,{75,81,0}}, +/* 52657 */ {(14<<2)|2,{75,81,0}}, +/* 52658 */ {(14<<2)|2,{75,81,0}}, +/* 52659 */ {(14<<2)|2,{75,81,0}}, +/* 52660 */ {(14<<2)|2,{75,82,0}}, +/* 52661 */ {(14<<2)|2,{75,82,0}}, +/* 52662 */ {(14<<2)|2,{75,82,0}}, +/* 52663 */ {(14<<2)|2,{75,82,0}}, +/* 52664 */ {(14<<2)|2,{75,83,0}}, +/* 52665 */ {(14<<2)|2,{75,83,0}}, +/* 52666 */ {(14<<2)|2,{75,83,0}}, +/* 52667 */ {(14<<2)|2,{75,83,0}}, +/* 52668 */ {(14<<2)|2,{75,84,0}}, +/* 52669 */ {(14<<2)|2,{75,84,0}}, +/* 52670 */ {(14<<2)|2,{75,84,0}}, +/* 52671 */ {(14<<2)|2,{75,84,0}}, +/* 52672 */ {(14<<2)|2,{75,85,0}}, +/* 52673 */ {(14<<2)|2,{75,85,0}}, +/* 52674 */ {(14<<2)|2,{75,85,0}}, +/* 52675 */ {(14<<2)|2,{75,85,0}}, +/* 52676 */ {(14<<2)|2,{75,86,0}}, +/* 52677 */ {(14<<2)|2,{75,86,0}}, +/* 52678 */ {(14<<2)|2,{75,86,0}}, +/* 52679 */ {(14<<2)|2,{75,86,0}}, +/* 52680 */ {(14<<2)|2,{75,87,0}}, +/* 52681 */ {(14<<2)|2,{75,87,0}}, +/* 52682 */ {(14<<2)|2,{75,87,0}}, +/* 52683 */ {(14<<2)|2,{75,87,0}}, +/* 52684 */ {(14<<2)|2,{75,89,0}}, +/* 52685 */ {(14<<2)|2,{75,89,0}}, +/* 52686 */ {(14<<2)|2,{75,89,0}}, +/* 52687 */ {(14<<2)|2,{75,89,0}}, +/* 52688 */ {(14<<2)|2,{75,106,0}}, +/* 52689 */ {(14<<2)|2,{75,106,0}}, +/* 52690 */ {(14<<2)|2,{75,106,0}}, +/* 52691 */ {(14<<2)|2,{75,106,0}}, +/* 52692 */ {(14<<2)|2,{75,107,0}}, +/* 52693 */ {(14<<2)|2,{75,107,0}}, +/* 52694 */ {(14<<2)|2,{75,107,0}}, +/* 52695 */ {(14<<2)|2,{75,107,0}}, +/* 52696 */ {(14<<2)|2,{75,113,0}}, +/* 52697 */ {(14<<2)|2,{75,113,0}}, +/* 52698 */ {(14<<2)|2,{75,113,0}}, +/* 52699 */ {(14<<2)|2,{75,113,0}}, +/* 52700 */ {(14<<2)|2,{75,118,0}}, +/* 52701 */ {(14<<2)|2,{75,118,0}}, +/* 52702 */ {(14<<2)|2,{75,118,0}}, +/* 52703 */ {(14<<2)|2,{75,118,0}}, +/* 52704 */ {(14<<2)|2,{75,119,0}}, +/* 52705 */ {(14<<2)|2,{75,119,0}}, +/* 52706 */ {(14<<2)|2,{75,119,0}}, +/* 52707 */ {(14<<2)|2,{75,119,0}}, +/* 52708 */ {(14<<2)|2,{75,120,0}}, +/* 52709 */ {(14<<2)|2,{75,120,0}}, +/* 52710 */ {(14<<2)|2,{75,120,0}}, +/* 52711 */ {(14<<2)|2,{75,120,0}}, +/* 52712 */ {(14<<2)|2,{75,121,0}}, +/* 52713 */ {(14<<2)|2,{75,121,0}}, +/* 52714 */ {(14<<2)|2,{75,121,0}}, +/* 52715 */ {(14<<2)|2,{75,121,0}}, +/* 52716 */ {(14<<2)|2,{75,122,0}}, +/* 52717 */ {(14<<2)|2,{75,122,0}}, +/* 52718 */ {(14<<2)|2,{75,122,0}}, +/* 52719 */ {(14<<2)|2,{75,122,0}}, +/* 52720 */ {(15<<2)|2,{75,38,0}}, +/* 52721 */ {(15<<2)|2,{75,38,0}}, +/* 52722 */ {(15<<2)|2,{75,42,0}}, +/* 52723 */ {(15<<2)|2,{75,42,0}}, +/* 52724 */ {(15<<2)|2,{75,44,0}}, +/* 52725 */ {(15<<2)|2,{75,44,0}}, +/* 52726 */ {(15<<2)|2,{75,59,0}}, +/* 52727 */ {(15<<2)|2,{75,59,0}}, +/* 52728 */ {(15<<2)|2,{75,88,0}}, +/* 52729 */ {(15<<2)|2,{75,88,0}}, +/* 52730 */ {(15<<2)|2,{75,90,0}}, +/* 52731 */ {(15<<2)|2,{75,90,0}}, +/* 52732 */ {(7<<2)|1,{75,0,0}}, +/* 52733 */ {(7<<2)|1,{75,0,0}}, +/* 52734 */ {(7<<2)|1,{75,0,0}}, +/* 52735 */ {(7<<2)|1,{75,0,0}}, +/* 52736 */ {(12<<2)|2,{76,48,0}}, +/* 52737 */ {(12<<2)|2,{76,48,0}}, +/* 52738 */ {(12<<2)|2,{76,48,0}}, +/* 52739 */ {(12<<2)|2,{76,48,0}}, +/* 52740 */ {(12<<2)|2,{76,48,0}}, +/* 52741 */ {(12<<2)|2,{76,48,0}}, +/* 52742 */ {(12<<2)|2,{76,48,0}}, +/* 52743 */ {(12<<2)|2,{76,48,0}}, +/* 52744 */ {(12<<2)|2,{76,48,0}}, +/* 52745 */ {(12<<2)|2,{76,48,0}}, +/* 52746 */ {(12<<2)|2,{76,48,0}}, +/* 52747 */ {(12<<2)|2,{76,48,0}}, +/* 52748 */ {(12<<2)|2,{76,48,0}}, +/* 52749 */ {(12<<2)|2,{76,48,0}}, +/* 52750 */ {(12<<2)|2,{76,48,0}}, +/* 52751 */ {(12<<2)|2,{76,48,0}}, +/* 52752 */ {(12<<2)|2,{76,49,0}}, +/* 52753 */ {(12<<2)|2,{76,49,0}}, +/* 52754 */ {(12<<2)|2,{76,49,0}}, +/* 52755 */ {(12<<2)|2,{76,49,0}}, +/* 52756 */ {(12<<2)|2,{76,49,0}}, +/* 52757 */ {(12<<2)|2,{76,49,0}}, +/* 52758 */ {(12<<2)|2,{76,49,0}}, +/* 52759 */ {(12<<2)|2,{76,49,0}}, +/* 52760 */ {(12<<2)|2,{76,49,0}}, +/* 52761 */ {(12<<2)|2,{76,49,0}}, +/* 52762 */ {(12<<2)|2,{76,49,0}}, +/* 52763 */ {(12<<2)|2,{76,49,0}}, +/* 52764 */ {(12<<2)|2,{76,49,0}}, +/* 52765 */ {(12<<2)|2,{76,49,0}}, +/* 52766 */ {(12<<2)|2,{76,49,0}}, +/* 52767 */ {(12<<2)|2,{76,49,0}}, +/* 52768 */ {(12<<2)|2,{76,50,0}}, +/* 52769 */ {(12<<2)|2,{76,50,0}}, +/* 52770 */ {(12<<2)|2,{76,50,0}}, +/* 52771 */ {(12<<2)|2,{76,50,0}}, +/* 52772 */ {(12<<2)|2,{76,50,0}}, +/* 52773 */ {(12<<2)|2,{76,50,0}}, +/* 52774 */ {(12<<2)|2,{76,50,0}}, +/* 52775 */ {(12<<2)|2,{76,50,0}}, +/* 52776 */ {(12<<2)|2,{76,50,0}}, +/* 52777 */ {(12<<2)|2,{76,50,0}}, +/* 52778 */ {(12<<2)|2,{76,50,0}}, +/* 52779 */ {(12<<2)|2,{76,50,0}}, +/* 52780 */ {(12<<2)|2,{76,50,0}}, +/* 52781 */ {(12<<2)|2,{76,50,0}}, +/* 52782 */ {(12<<2)|2,{76,50,0}}, +/* 52783 */ {(12<<2)|2,{76,50,0}}, +/* 52784 */ {(12<<2)|2,{76,97,0}}, +/* 52785 */ {(12<<2)|2,{76,97,0}}, +/* 52786 */ {(12<<2)|2,{76,97,0}}, +/* 52787 */ {(12<<2)|2,{76,97,0}}, +/* 52788 */ {(12<<2)|2,{76,97,0}}, +/* 52789 */ {(12<<2)|2,{76,97,0}}, +/* 52790 */ {(12<<2)|2,{76,97,0}}, +/* 52791 */ {(12<<2)|2,{76,97,0}}, +/* 52792 */ {(12<<2)|2,{76,97,0}}, +/* 52793 */ {(12<<2)|2,{76,97,0}}, +/* 52794 */ {(12<<2)|2,{76,97,0}}, +/* 52795 */ {(12<<2)|2,{76,97,0}}, +/* 52796 */ {(12<<2)|2,{76,97,0}}, +/* 52797 */ {(12<<2)|2,{76,97,0}}, +/* 52798 */ {(12<<2)|2,{76,97,0}}, +/* 52799 */ {(12<<2)|2,{76,97,0}}, +/* 52800 */ {(12<<2)|2,{76,99,0}}, +/* 52801 */ {(12<<2)|2,{76,99,0}}, +/* 52802 */ {(12<<2)|2,{76,99,0}}, +/* 52803 */ {(12<<2)|2,{76,99,0}}, +/* 52804 */ {(12<<2)|2,{76,99,0}}, +/* 52805 */ {(12<<2)|2,{76,99,0}}, +/* 52806 */ {(12<<2)|2,{76,99,0}}, +/* 52807 */ {(12<<2)|2,{76,99,0}}, +/* 52808 */ {(12<<2)|2,{76,99,0}}, +/* 52809 */ {(12<<2)|2,{76,99,0}}, +/* 52810 */ {(12<<2)|2,{76,99,0}}, +/* 52811 */ {(12<<2)|2,{76,99,0}}, +/* 52812 */ {(12<<2)|2,{76,99,0}}, +/* 52813 */ {(12<<2)|2,{76,99,0}}, +/* 52814 */ {(12<<2)|2,{76,99,0}}, +/* 52815 */ {(12<<2)|2,{76,99,0}}, +/* 52816 */ {(12<<2)|2,{76,101,0}}, +/* 52817 */ {(12<<2)|2,{76,101,0}}, +/* 52818 */ {(12<<2)|2,{76,101,0}}, +/* 52819 */ {(12<<2)|2,{76,101,0}}, +/* 52820 */ {(12<<2)|2,{76,101,0}}, +/* 52821 */ {(12<<2)|2,{76,101,0}}, +/* 52822 */ {(12<<2)|2,{76,101,0}}, +/* 52823 */ {(12<<2)|2,{76,101,0}}, +/* 52824 */ {(12<<2)|2,{76,101,0}}, +/* 52825 */ {(12<<2)|2,{76,101,0}}, +/* 52826 */ {(12<<2)|2,{76,101,0}}, +/* 52827 */ {(12<<2)|2,{76,101,0}}, +/* 52828 */ {(12<<2)|2,{76,101,0}}, +/* 52829 */ {(12<<2)|2,{76,101,0}}, +/* 52830 */ {(12<<2)|2,{76,101,0}}, +/* 52831 */ {(12<<2)|2,{76,101,0}}, +/* 52832 */ {(12<<2)|2,{76,105,0}}, +/* 52833 */ {(12<<2)|2,{76,105,0}}, +/* 52834 */ {(12<<2)|2,{76,105,0}}, +/* 52835 */ {(12<<2)|2,{76,105,0}}, +/* 52836 */ {(12<<2)|2,{76,105,0}}, +/* 52837 */ {(12<<2)|2,{76,105,0}}, +/* 52838 */ {(12<<2)|2,{76,105,0}}, +/* 52839 */ {(12<<2)|2,{76,105,0}}, +/* 52840 */ {(12<<2)|2,{76,105,0}}, +/* 52841 */ {(12<<2)|2,{76,105,0}}, +/* 52842 */ {(12<<2)|2,{76,105,0}}, +/* 52843 */ {(12<<2)|2,{76,105,0}}, +/* 52844 */ {(12<<2)|2,{76,105,0}}, +/* 52845 */ {(12<<2)|2,{76,105,0}}, +/* 52846 */ {(12<<2)|2,{76,105,0}}, +/* 52847 */ {(12<<2)|2,{76,105,0}}, +/* 52848 */ {(12<<2)|2,{76,111,0}}, +/* 52849 */ {(12<<2)|2,{76,111,0}}, +/* 52850 */ {(12<<2)|2,{76,111,0}}, +/* 52851 */ {(12<<2)|2,{76,111,0}}, +/* 52852 */ {(12<<2)|2,{76,111,0}}, +/* 52853 */ {(12<<2)|2,{76,111,0}}, +/* 52854 */ {(12<<2)|2,{76,111,0}}, +/* 52855 */ {(12<<2)|2,{76,111,0}}, +/* 52856 */ {(12<<2)|2,{76,111,0}}, +/* 52857 */ {(12<<2)|2,{76,111,0}}, +/* 52858 */ {(12<<2)|2,{76,111,0}}, +/* 52859 */ {(12<<2)|2,{76,111,0}}, +/* 52860 */ {(12<<2)|2,{76,111,0}}, +/* 52861 */ {(12<<2)|2,{76,111,0}}, +/* 52862 */ {(12<<2)|2,{76,111,0}}, +/* 52863 */ {(12<<2)|2,{76,111,0}}, +/* 52864 */ {(12<<2)|2,{76,115,0}}, +/* 52865 */ {(12<<2)|2,{76,115,0}}, +/* 52866 */ {(12<<2)|2,{76,115,0}}, +/* 52867 */ {(12<<2)|2,{76,115,0}}, +/* 52868 */ {(12<<2)|2,{76,115,0}}, +/* 52869 */ {(12<<2)|2,{76,115,0}}, +/* 52870 */ {(12<<2)|2,{76,115,0}}, +/* 52871 */ {(12<<2)|2,{76,115,0}}, +/* 52872 */ {(12<<2)|2,{76,115,0}}, +/* 52873 */ {(12<<2)|2,{76,115,0}}, +/* 52874 */ {(12<<2)|2,{76,115,0}}, +/* 52875 */ {(12<<2)|2,{76,115,0}}, +/* 52876 */ {(12<<2)|2,{76,115,0}}, +/* 52877 */ {(12<<2)|2,{76,115,0}}, +/* 52878 */ {(12<<2)|2,{76,115,0}}, +/* 52879 */ {(12<<2)|2,{76,115,0}}, +/* 52880 */ {(12<<2)|2,{76,116,0}}, +/* 52881 */ {(12<<2)|2,{76,116,0}}, +/* 52882 */ {(12<<2)|2,{76,116,0}}, +/* 52883 */ {(12<<2)|2,{76,116,0}}, +/* 52884 */ {(12<<2)|2,{76,116,0}}, +/* 52885 */ {(12<<2)|2,{76,116,0}}, +/* 52886 */ {(12<<2)|2,{76,116,0}}, +/* 52887 */ {(12<<2)|2,{76,116,0}}, +/* 52888 */ {(12<<2)|2,{76,116,0}}, +/* 52889 */ {(12<<2)|2,{76,116,0}}, +/* 52890 */ {(12<<2)|2,{76,116,0}}, +/* 52891 */ {(12<<2)|2,{76,116,0}}, +/* 52892 */ {(12<<2)|2,{76,116,0}}, +/* 52893 */ {(12<<2)|2,{76,116,0}}, +/* 52894 */ {(12<<2)|2,{76,116,0}}, +/* 52895 */ {(12<<2)|2,{76,116,0}}, +/* 52896 */ {(13<<2)|2,{76,32,0}}, +/* 52897 */ {(13<<2)|2,{76,32,0}}, +/* 52898 */ {(13<<2)|2,{76,32,0}}, +/* 52899 */ {(13<<2)|2,{76,32,0}}, +/* 52900 */ {(13<<2)|2,{76,32,0}}, +/* 52901 */ {(13<<2)|2,{76,32,0}}, +/* 52902 */ {(13<<2)|2,{76,32,0}}, +/* 52903 */ {(13<<2)|2,{76,32,0}}, +/* 52904 */ {(13<<2)|2,{76,37,0}}, +/* 52905 */ {(13<<2)|2,{76,37,0}}, +/* 52906 */ {(13<<2)|2,{76,37,0}}, +/* 52907 */ {(13<<2)|2,{76,37,0}}, +/* 52908 */ {(13<<2)|2,{76,37,0}}, +/* 52909 */ {(13<<2)|2,{76,37,0}}, +/* 52910 */ {(13<<2)|2,{76,37,0}}, +/* 52911 */ {(13<<2)|2,{76,37,0}}, +/* 52912 */ {(13<<2)|2,{76,45,0}}, +/* 52913 */ {(13<<2)|2,{76,45,0}}, +/* 52914 */ {(13<<2)|2,{76,45,0}}, +/* 52915 */ {(13<<2)|2,{76,45,0}}, +/* 52916 */ {(13<<2)|2,{76,45,0}}, +/* 52917 */ {(13<<2)|2,{76,45,0}}, +/* 52918 */ {(13<<2)|2,{76,45,0}}, +/* 52919 */ {(13<<2)|2,{76,45,0}}, +/* 52920 */ {(13<<2)|2,{76,46,0}}, +/* 52921 */ {(13<<2)|2,{76,46,0}}, +/* 52922 */ {(13<<2)|2,{76,46,0}}, +/* 52923 */ {(13<<2)|2,{76,46,0}}, +/* 52924 */ {(13<<2)|2,{76,46,0}}, +/* 52925 */ {(13<<2)|2,{76,46,0}}, +/* 52926 */ {(13<<2)|2,{76,46,0}}, +/* 52927 */ {(13<<2)|2,{76,46,0}}, +/* 52928 */ {(13<<2)|2,{76,47,0}}, +/* 52929 */ {(13<<2)|2,{76,47,0}}, +/* 52930 */ {(13<<2)|2,{76,47,0}}, +/* 52931 */ {(13<<2)|2,{76,47,0}}, +/* 52932 */ {(13<<2)|2,{76,47,0}}, +/* 52933 */ {(13<<2)|2,{76,47,0}}, +/* 52934 */ {(13<<2)|2,{76,47,0}}, +/* 52935 */ {(13<<2)|2,{76,47,0}}, +/* 52936 */ {(13<<2)|2,{76,51,0}}, +/* 52937 */ {(13<<2)|2,{76,51,0}}, +/* 52938 */ {(13<<2)|2,{76,51,0}}, +/* 52939 */ {(13<<2)|2,{76,51,0}}, +/* 52940 */ {(13<<2)|2,{76,51,0}}, +/* 52941 */ {(13<<2)|2,{76,51,0}}, +/* 52942 */ {(13<<2)|2,{76,51,0}}, +/* 52943 */ {(13<<2)|2,{76,51,0}}, +/* 52944 */ {(13<<2)|2,{76,52,0}}, +/* 52945 */ {(13<<2)|2,{76,52,0}}, +/* 52946 */ {(13<<2)|2,{76,52,0}}, +/* 52947 */ {(13<<2)|2,{76,52,0}}, +/* 52948 */ {(13<<2)|2,{76,52,0}}, +/* 52949 */ {(13<<2)|2,{76,52,0}}, +/* 52950 */ {(13<<2)|2,{76,52,0}}, +/* 52951 */ {(13<<2)|2,{76,52,0}}, +/* 52952 */ {(13<<2)|2,{76,53,0}}, +/* 52953 */ {(13<<2)|2,{76,53,0}}, +/* 52954 */ {(13<<2)|2,{76,53,0}}, +/* 52955 */ {(13<<2)|2,{76,53,0}}, +/* 52956 */ {(13<<2)|2,{76,53,0}}, +/* 52957 */ {(13<<2)|2,{76,53,0}}, +/* 52958 */ {(13<<2)|2,{76,53,0}}, +/* 52959 */ {(13<<2)|2,{76,53,0}}, +/* 52960 */ {(13<<2)|2,{76,54,0}}, +/* 52961 */ {(13<<2)|2,{76,54,0}}, +/* 52962 */ {(13<<2)|2,{76,54,0}}, +/* 52963 */ {(13<<2)|2,{76,54,0}}, +/* 52964 */ {(13<<2)|2,{76,54,0}}, +/* 52965 */ {(13<<2)|2,{76,54,0}}, +/* 52966 */ {(13<<2)|2,{76,54,0}}, +/* 52967 */ {(13<<2)|2,{76,54,0}}, +/* 52968 */ {(13<<2)|2,{76,55,0}}, +/* 52969 */ {(13<<2)|2,{76,55,0}}, +/* 52970 */ {(13<<2)|2,{76,55,0}}, +/* 52971 */ {(13<<2)|2,{76,55,0}}, +/* 52972 */ {(13<<2)|2,{76,55,0}}, +/* 52973 */ {(13<<2)|2,{76,55,0}}, +/* 52974 */ {(13<<2)|2,{76,55,0}}, +/* 52975 */ {(13<<2)|2,{76,55,0}}, +/* 52976 */ {(13<<2)|2,{76,56,0}}, +/* 52977 */ {(13<<2)|2,{76,56,0}}, +/* 52978 */ {(13<<2)|2,{76,56,0}}, +/* 52979 */ {(13<<2)|2,{76,56,0}}, +/* 52980 */ {(13<<2)|2,{76,56,0}}, +/* 52981 */ {(13<<2)|2,{76,56,0}}, +/* 52982 */ {(13<<2)|2,{76,56,0}}, +/* 52983 */ {(13<<2)|2,{76,56,0}}, +/* 52984 */ {(13<<2)|2,{76,57,0}}, +/* 52985 */ {(13<<2)|2,{76,57,0}}, +/* 52986 */ {(13<<2)|2,{76,57,0}}, +/* 52987 */ {(13<<2)|2,{76,57,0}}, +/* 52988 */ {(13<<2)|2,{76,57,0}}, +/* 52989 */ {(13<<2)|2,{76,57,0}}, +/* 52990 */ {(13<<2)|2,{76,57,0}}, +/* 52991 */ {(13<<2)|2,{76,57,0}}, +/* 52992 */ {(13<<2)|2,{76,61,0}}, +/* 52993 */ {(13<<2)|2,{76,61,0}}, +/* 52994 */ {(13<<2)|2,{76,61,0}}, +/* 52995 */ {(13<<2)|2,{76,61,0}}, +/* 52996 */ {(13<<2)|2,{76,61,0}}, +/* 52997 */ {(13<<2)|2,{76,61,0}}, +/* 52998 */ {(13<<2)|2,{76,61,0}}, +/* 52999 */ {(13<<2)|2,{76,61,0}}, +/* 53000 */ {(13<<2)|2,{76,65,0}}, +/* 53001 */ {(13<<2)|2,{76,65,0}}, +/* 53002 */ {(13<<2)|2,{76,65,0}}, +/* 53003 */ {(13<<2)|2,{76,65,0}}, +/* 53004 */ {(13<<2)|2,{76,65,0}}, +/* 53005 */ {(13<<2)|2,{76,65,0}}, +/* 53006 */ {(13<<2)|2,{76,65,0}}, +/* 53007 */ {(13<<2)|2,{76,65,0}}, +/* 53008 */ {(13<<2)|2,{76,95,0}}, +/* 53009 */ {(13<<2)|2,{76,95,0}}, +/* 53010 */ {(13<<2)|2,{76,95,0}}, +/* 53011 */ {(13<<2)|2,{76,95,0}}, +/* 53012 */ {(13<<2)|2,{76,95,0}}, +/* 53013 */ {(13<<2)|2,{76,95,0}}, +/* 53014 */ {(13<<2)|2,{76,95,0}}, +/* 53015 */ {(13<<2)|2,{76,95,0}}, +/* 53016 */ {(13<<2)|2,{76,98,0}}, +/* 53017 */ {(13<<2)|2,{76,98,0}}, +/* 53018 */ {(13<<2)|2,{76,98,0}}, +/* 53019 */ {(13<<2)|2,{76,98,0}}, +/* 53020 */ {(13<<2)|2,{76,98,0}}, +/* 53021 */ {(13<<2)|2,{76,98,0}}, +/* 53022 */ {(13<<2)|2,{76,98,0}}, +/* 53023 */ {(13<<2)|2,{76,98,0}}, +/* 53024 */ {(13<<2)|2,{76,100,0}}, +/* 53025 */ {(13<<2)|2,{76,100,0}}, +/* 53026 */ {(13<<2)|2,{76,100,0}}, +/* 53027 */ {(13<<2)|2,{76,100,0}}, +/* 53028 */ {(13<<2)|2,{76,100,0}}, +/* 53029 */ {(13<<2)|2,{76,100,0}}, +/* 53030 */ {(13<<2)|2,{76,100,0}}, +/* 53031 */ {(13<<2)|2,{76,100,0}}, +/* 53032 */ {(13<<2)|2,{76,102,0}}, +/* 53033 */ {(13<<2)|2,{76,102,0}}, +/* 53034 */ {(13<<2)|2,{76,102,0}}, +/* 53035 */ {(13<<2)|2,{76,102,0}}, +/* 53036 */ {(13<<2)|2,{76,102,0}}, +/* 53037 */ {(13<<2)|2,{76,102,0}}, +/* 53038 */ {(13<<2)|2,{76,102,0}}, +/* 53039 */ {(13<<2)|2,{76,102,0}}, +/* 53040 */ {(13<<2)|2,{76,103,0}}, +/* 53041 */ {(13<<2)|2,{76,103,0}}, +/* 53042 */ {(13<<2)|2,{76,103,0}}, +/* 53043 */ {(13<<2)|2,{76,103,0}}, +/* 53044 */ {(13<<2)|2,{76,103,0}}, +/* 53045 */ {(13<<2)|2,{76,103,0}}, +/* 53046 */ {(13<<2)|2,{76,103,0}}, +/* 53047 */ {(13<<2)|2,{76,103,0}}, +/* 53048 */ {(13<<2)|2,{76,104,0}}, +/* 53049 */ {(13<<2)|2,{76,104,0}}, +/* 53050 */ {(13<<2)|2,{76,104,0}}, +/* 53051 */ {(13<<2)|2,{76,104,0}}, +/* 53052 */ {(13<<2)|2,{76,104,0}}, +/* 53053 */ {(13<<2)|2,{76,104,0}}, +/* 53054 */ {(13<<2)|2,{76,104,0}}, +/* 53055 */ {(13<<2)|2,{76,104,0}}, +/* 53056 */ {(13<<2)|2,{76,108,0}}, +/* 53057 */ {(13<<2)|2,{76,108,0}}, +/* 53058 */ {(13<<2)|2,{76,108,0}}, +/* 53059 */ {(13<<2)|2,{76,108,0}}, +/* 53060 */ {(13<<2)|2,{76,108,0}}, +/* 53061 */ {(13<<2)|2,{76,108,0}}, +/* 53062 */ {(13<<2)|2,{76,108,0}}, +/* 53063 */ {(13<<2)|2,{76,108,0}}, +/* 53064 */ {(13<<2)|2,{76,109,0}}, +/* 53065 */ {(13<<2)|2,{76,109,0}}, +/* 53066 */ {(13<<2)|2,{76,109,0}}, +/* 53067 */ {(13<<2)|2,{76,109,0}}, +/* 53068 */ {(13<<2)|2,{76,109,0}}, +/* 53069 */ {(13<<2)|2,{76,109,0}}, +/* 53070 */ {(13<<2)|2,{76,109,0}}, +/* 53071 */ {(13<<2)|2,{76,109,0}}, +/* 53072 */ {(13<<2)|2,{76,110,0}}, +/* 53073 */ {(13<<2)|2,{76,110,0}}, +/* 53074 */ {(13<<2)|2,{76,110,0}}, +/* 53075 */ {(13<<2)|2,{76,110,0}}, +/* 53076 */ {(13<<2)|2,{76,110,0}}, +/* 53077 */ {(13<<2)|2,{76,110,0}}, +/* 53078 */ {(13<<2)|2,{76,110,0}}, +/* 53079 */ {(13<<2)|2,{76,110,0}}, +/* 53080 */ {(13<<2)|2,{76,112,0}}, +/* 53081 */ {(13<<2)|2,{76,112,0}}, +/* 53082 */ {(13<<2)|2,{76,112,0}}, +/* 53083 */ {(13<<2)|2,{76,112,0}}, +/* 53084 */ {(13<<2)|2,{76,112,0}}, +/* 53085 */ {(13<<2)|2,{76,112,0}}, +/* 53086 */ {(13<<2)|2,{76,112,0}}, +/* 53087 */ {(13<<2)|2,{76,112,0}}, +/* 53088 */ {(13<<2)|2,{76,114,0}}, +/* 53089 */ {(13<<2)|2,{76,114,0}}, +/* 53090 */ {(13<<2)|2,{76,114,0}}, +/* 53091 */ {(13<<2)|2,{76,114,0}}, +/* 53092 */ {(13<<2)|2,{76,114,0}}, +/* 53093 */ {(13<<2)|2,{76,114,0}}, +/* 53094 */ {(13<<2)|2,{76,114,0}}, +/* 53095 */ {(13<<2)|2,{76,114,0}}, +/* 53096 */ {(13<<2)|2,{76,117,0}}, +/* 53097 */ {(13<<2)|2,{76,117,0}}, +/* 53098 */ {(13<<2)|2,{76,117,0}}, +/* 53099 */ {(13<<2)|2,{76,117,0}}, +/* 53100 */ {(13<<2)|2,{76,117,0}}, +/* 53101 */ {(13<<2)|2,{76,117,0}}, +/* 53102 */ {(13<<2)|2,{76,117,0}}, +/* 53103 */ {(13<<2)|2,{76,117,0}}, +/* 53104 */ {(14<<2)|2,{76,58,0}}, +/* 53105 */ {(14<<2)|2,{76,58,0}}, +/* 53106 */ {(14<<2)|2,{76,58,0}}, +/* 53107 */ {(14<<2)|2,{76,58,0}}, +/* 53108 */ {(14<<2)|2,{76,66,0}}, +/* 53109 */ {(14<<2)|2,{76,66,0}}, +/* 53110 */ {(14<<2)|2,{76,66,0}}, +/* 53111 */ {(14<<2)|2,{76,66,0}}, +/* 53112 */ {(14<<2)|2,{76,67,0}}, +/* 53113 */ {(14<<2)|2,{76,67,0}}, +/* 53114 */ {(14<<2)|2,{76,67,0}}, +/* 53115 */ {(14<<2)|2,{76,67,0}}, +/* 53116 */ {(14<<2)|2,{76,68,0}}, +/* 53117 */ {(14<<2)|2,{76,68,0}}, +/* 53118 */ {(14<<2)|2,{76,68,0}}, +/* 53119 */ {(14<<2)|2,{76,68,0}}, +/* 53120 */ {(14<<2)|2,{76,69,0}}, +/* 53121 */ {(14<<2)|2,{76,69,0}}, +/* 53122 */ {(14<<2)|2,{76,69,0}}, +/* 53123 */ {(14<<2)|2,{76,69,0}}, +/* 53124 */ {(14<<2)|2,{76,70,0}}, +/* 53125 */ {(14<<2)|2,{76,70,0}}, +/* 53126 */ {(14<<2)|2,{76,70,0}}, +/* 53127 */ {(14<<2)|2,{76,70,0}}, +/* 53128 */ {(14<<2)|2,{76,71,0}}, +/* 53129 */ {(14<<2)|2,{76,71,0}}, +/* 53130 */ {(14<<2)|2,{76,71,0}}, +/* 53131 */ {(14<<2)|2,{76,71,0}}, +/* 53132 */ {(14<<2)|2,{76,72,0}}, +/* 53133 */ {(14<<2)|2,{76,72,0}}, +/* 53134 */ {(14<<2)|2,{76,72,0}}, +/* 53135 */ {(14<<2)|2,{76,72,0}}, +/* 53136 */ {(14<<2)|2,{76,73,0}}, +/* 53137 */ {(14<<2)|2,{76,73,0}}, +/* 53138 */ {(14<<2)|2,{76,73,0}}, +/* 53139 */ {(14<<2)|2,{76,73,0}}, +/* 53140 */ {(14<<2)|2,{76,74,0}}, +/* 53141 */ {(14<<2)|2,{76,74,0}}, +/* 53142 */ {(14<<2)|2,{76,74,0}}, +/* 53143 */ {(14<<2)|2,{76,74,0}}, +/* 53144 */ {(14<<2)|2,{76,75,0}}, +/* 53145 */ {(14<<2)|2,{76,75,0}}, +/* 53146 */ {(14<<2)|2,{76,75,0}}, +/* 53147 */ {(14<<2)|2,{76,75,0}}, +/* 53148 */ {(14<<2)|2,{76,76,0}}, +/* 53149 */ {(14<<2)|2,{76,76,0}}, +/* 53150 */ {(14<<2)|2,{76,76,0}}, +/* 53151 */ {(14<<2)|2,{76,76,0}}, +/* 53152 */ {(14<<2)|2,{76,77,0}}, +/* 53153 */ {(14<<2)|2,{76,77,0}}, +/* 53154 */ {(14<<2)|2,{76,77,0}}, +/* 53155 */ {(14<<2)|2,{76,77,0}}, +/* 53156 */ {(14<<2)|2,{76,78,0}}, +/* 53157 */ {(14<<2)|2,{76,78,0}}, +/* 53158 */ {(14<<2)|2,{76,78,0}}, +/* 53159 */ {(14<<2)|2,{76,78,0}}, +/* 53160 */ {(14<<2)|2,{76,79,0}}, +/* 53161 */ {(14<<2)|2,{76,79,0}}, +/* 53162 */ {(14<<2)|2,{76,79,0}}, +/* 53163 */ {(14<<2)|2,{76,79,0}}, +/* 53164 */ {(14<<2)|2,{76,80,0}}, +/* 53165 */ {(14<<2)|2,{76,80,0}}, +/* 53166 */ {(14<<2)|2,{76,80,0}}, +/* 53167 */ {(14<<2)|2,{76,80,0}}, +/* 53168 */ {(14<<2)|2,{76,81,0}}, +/* 53169 */ {(14<<2)|2,{76,81,0}}, +/* 53170 */ {(14<<2)|2,{76,81,0}}, +/* 53171 */ {(14<<2)|2,{76,81,0}}, +/* 53172 */ {(14<<2)|2,{76,82,0}}, +/* 53173 */ {(14<<2)|2,{76,82,0}}, +/* 53174 */ {(14<<2)|2,{76,82,0}}, +/* 53175 */ {(14<<2)|2,{76,82,0}}, +/* 53176 */ {(14<<2)|2,{76,83,0}}, +/* 53177 */ {(14<<2)|2,{76,83,0}}, +/* 53178 */ {(14<<2)|2,{76,83,0}}, +/* 53179 */ {(14<<2)|2,{76,83,0}}, +/* 53180 */ {(14<<2)|2,{76,84,0}}, +/* 53181 */ {(14<<2)|2,{76,84,0}}, +/* 53182 */ {(14<<2)|2,{76,84,0}}, +/* 53183 */ {(14<<2)|2,{76,84,0}}, +/* 53184 */ {(14<<2)|2,{76,85,0}}, +/* 53185 */ {(14<<2)|2,{76,85,0}}, +/* 53186 */ {(14<<2)|2,{76,85,0}}, +/* 53187 */ {(14<<2)|2,{76,85,0}}, +/* 53188 */ {(14<<2)|2,{76,86,0}}, +/* 53189 */ {(14<<2)|2,{76,86,0}}, +/* 53190 */ {(14<<2)|2,{76,86,0}}, +/* 53191 */ {(14<<2)|2,{76,86,0}}, +/* 53192 */ {(14<<2)|2,{76,87,0}}, +/* 53193 */ {(14<<2)|2,{76,87,0}}, +/* 53194 */ {(14<<2)|2,{76,87,0}}, +/* 53195 */ {(14<<2)|2,{76,87,0}}, +/* 53196 */ {(14<<2)|2,{76,89,0}}, +/* 53197 */ {(14<<2)|2,{76,89,0}}, +/* 53198 */ {(14<<2)|2,{76,89,0}}, +/* 53199 */ {(14<<2)|2,{76,89,0}}, +/* 53200 */ {(14<<2)|2,{76,106,0}}, +/* 53201 */ {(14<<2)|2,{76,106,0}}, +/* 53202 */ {(14<<2)|2,{76,106,0}}, +/* 53203 */ {(14<<2)|2,{76,106,0}}, +/* 53204 */ {(14<<2)|2,{76,107,0}}, +/* 53205 */ {(14<<2)|2,{76,107,0}}, +/* 53206 */ {(14<<2)|2,{76,107,0}}, +/* 53207 */ {(14<<2)|2,{76,107,0}}, +/* 53208 */ {(14<<2)|2,{76,113,0}}, +/* 53209 */ {(14<<2)|2,{76,113,0}}, +/* 53210 */ {(14<<2)|2,{76,113,0}}, +/* 53211 */ {(14<<2)|2,{76,113,0}}, +/* 53212 */ {(14<<2)|2,{76,118,0}}, +/* 53213 */ {(14<<2)|2,{76,118,0}}, +/* 53214 */ {(14<<2)|2,{76,118,0}}, +/* 53215 */ {(14<<2)|2,{76,118,0}}, +/* 53216 */ {(14<<2)|2,{76,119,0}}, +/* 53217 */ {(14<<2)|2,{76,119,0}}, +/* 53218 */ {(14<<2)|2,{76,119,0}}, +/* 53219 */ {(14<<2)|2,{76,119,0}}, +/* 53220 */ {(14<<2)|2,{76,120,0}}, +/* 53221 */ {(14<<2)|2,{76,120,0}}, +/* 53222 */ {(14<<2)|2,{76,120,0}}, +/* 53223 */ {(14<<2)|2,{76,120,0}}, +/* 53224 */ {(14<<2)|2,{76,121,0}}, +/* 53225 */ {(14<<2)|2,{76,121,0}}, +/* 53226 */ {(14<<2)|2,{76,121,0}}, +/* 53227 */ {(14<<2)|2,{76,121,0}}, +/* 53228 */ {(14<<2)|2,{76,122,0}}, +/* 53229 */ {(14<<2)|2,{76,122,0}}, +/* 53230 */ {(14<<2)|2,{76,122,0}}, +/* 53231 */ {(14<<2)|2,{76,122,0}}, +/* 53232 */ {(15<<2)|2,{76,38,0}}, +/* 53233 */ {(15<<2)|2,{76,38,0}}, +/* 53234 */ {(15<<2)|2,{76,42,0}}, +/* 53235 */ {(15<<2)|2,{76,42,0}}, +/* 53236 */ {(15<<2)|2,{76,44,0}}, +/* 53237 */ {(15<<2)|2,{76,44,0}}, +/* 53238 */ {(15<<2)|2,{76,59,0}}, +/* 53239 */ {(15<<2)|2,{76,59,0}}, +/* 53240 */ {(15<<2)|2,{76,88,0}}, +/* 53241 */ {(15<<2)|2,{76,88,0}}, +/* 53242 */ {(15<<2)|2,{76,90,0}}, +/* 53243 */ {(15<<2)|2,{76,90,0}}, +/* 53244 */ {(7<<2)|1,{76,0,0}}, +/* 53245 */ {(7<<2)|1,{76,0,0}}, +/* 53246 */ {(7<<2)|1,{76,0,0}}, +/* 53247 */ {(7<<2)|1,{76,0,0}}, +/* 53248 */ {(12<<2)|2,{77,48,0}}, +/* 53249 */ {(12<<2)|2,{77,48,0}}, +/* 53250 */ {(12<<2)|2,{77,48,0}}, +/* 53251 */ {(12<<2)|2,{77,48,0}}, +/* 53252 */ {(12<<2)|2,{77,48,0}}, +/* 53253 */ {(12<<2)|2,{77,48,0}}, +/* 53254 */ {(12<<2)|2,{77,48,0}}, +/* 53255 */ {(12<<2)|2,{77,48,0}}, +/* 53256 */ {(12<<2)|2,{77,48,0}}, +/* 53257 */ {(12<<2)|2,{77,48,0}}, +/* 53258 */ {(12<<2)|2,{77,48,0}}, +/* 53259 */ {(12<<2)|2,{77,48,0}}, +/* 53260 */ {(12<<2)|2,{77,48,0}}, +/* 53261 */ {(12<<2)|2,{77,48,0}}, +/* 53262 */ {(12<<2)|2,{77,48,0}}, +/* 53263 */ {(12<<2)|2,{77,48,0}}, +/* 53264 */ {(12<<2)|2,{77,49,0}}, +/* 53265 */ {(12<<2)|2,{77,49,0}}, +/* 53266 */ {(12<<2)|2,{77,49,0}}, +/* 53267 */ {(12<<2)|2,{77,49,0}}, +/* 53268 */ {(12<<2)|2,{77,49,0}}, +/* 53269 */ {(12<<2)|2,{77,49,0}}, +/* 53270 */ {(12<<2)|2,{77,49,0}}, +/* 53271 */ {(12<<2)|2,{77,49,0}}, +/* 53272 */ {(12<<2)|2,{77,49,0}}, +/* 53273 */ {(12<<2)|2,{77,49,0}}, +/* 53274 */ {(12<<2)|2,{77,49,0}}, +/* 53275 */ {(12<<2)|2,{77,49,0}}, +/* 53276 */ {(12<<2)|2,{77,49,0}}, +/* 53277 */ {(12<<2)|2,{77,49,0}}, +/* 53278 */ {(12<<2)|2,{77,49,0}}, +/* 53279 */ {(12<<2)|2,{77,49,0}}, +/* 53280 */ {(12<<2)|2,{77,50,0}}, +/* 53281 */ {(12<<2)|2,{77,50,0}}, +/* 53282 */ {(12<<2)|2,{77,50,0}}, +/* 53283 */ {(12<<2)|2,{77,50,0}}, +/* 53284 */ {(12<<2)|2,{77,50,0}}, +/* 53285 */ {(12<<2)|2,{77,50,0}}, +/* 53286 */ {(12<<2)|2,{77,50,0}}, +/* 53287 */ {(12<<2)|2,{77,50,0}}, +/* 53288 */ {(12<<2)|2,{77,50,0}}, +/* 53289 */ {(12<<2)|2,{77,50,0}}, +/* 53290 */ {(12<<2)|2,{77,50,0}}, +/* 53291 */ {(12<<2)|2,{77,50,0}}, +/* 53292 */ {(12<<2)|2,{77,50,0}}, +/* 53293 */ {(12<<2)|2,{77,50,0}}, +/* 53294 */ {(12<<2)|2,{77,50,0}}, +/* 53295 */ {(12<<2)|2,{77,50,0}}, +/* 53296 */ {(12<<2)|2,{77,97,0}}, +/* 53297 */ {(12<<2)|2,{77,97,0}}, +/* 53298 */ {(12<<2)|2,{77,97,0}}, +/* 53299 */ {(12<<2)|2,{77,97,0}}, +/* 53300 */ {(12<<2)|2,{77,97,0}}, +/* 53301 */ {(12<<2)|2,{77,97,0}}, +/* 53302 */ {(12<<2)|2,{77,97,0}}, +/* 53303 */ {(12<<2)|2,{77,97,0}}, +/* 53304 */ {(12<<2)|2,{77,97,0}}, +/* 53305 */ {(12<<2)|2,{77,97,0}}, +/* 53306 */ {(12<<2)|2,{77,97,0}}, +/* 53307 */ {(12<<2)|2,{77,97,0}}, +/* 53308 */ {(12<<2)|2,{77,97,0}}, +/* 53309 */ {(12<<2)|2,{77,97,0}}, +/* 53310 */ {(12<<2)|2,{77,97,0}}, +/* 53311 */ {(12<<2)|2,{77,97,0}}, +/* 53312 */ {(12<<2)|2,{77,99,0}}, +/* 53313 */ {(12<<2)|2,{77,99,0}}, +/* 53314 */ {(12<<2)|2,{77,99,0}}, +/* 53315 */ {(12<<2)|2,{77,99,0}}, +/* 53316 */ {(12<<2)|2,{77,99,0}}, +/* 53317 */ {(12<<2)|2,{77,99,0}}, +/* 53318 */ {(12<<2)|2,{77,99,0}}, +/* 53319 */ {(12<<2)|2,{77,99,0}}, +/* 53320 */ {(12<<2)|2,{77,99,0}}, +/* 53321 */ {(12<<2)|2,{77,99,0}}, +/* 53322 */ {(12<<2)|2,{77,99,0}}, +/* 53323 */ {(12<<2)|2,{77,99,0}}, +/* 53324 */ {(12<<2)|2,{77,99,0}}, +/* 53325 */ {(12<<2)|2,{77,99,0}}, +/* 53326 */ {(12<<2)|2,{77,99,0}}, +/* 53327 */ {(12<<2)|2,{77,99,0}}, +/* 53328 */ {(12<<2)|2,{77,101,0}}, +/* 53329 */ {(12<<2)|2,{77,101,0}}, +/* 53330 */ {(12<<2)|2,{77,101,0}}, +/* 53331 */ {(12<<2)|2,{77,101,0}}, +/* 53332 */ {(12<<2)|2,{77,101,0}}, +/* 53333 */ {(12<<2)|2,{77,101,0}}, +/* 53334 */ {(12<<2)|2,{77,101,0}}, +/* 53335 */ {(12<<2)|2,{77,101,0}}, +/* 53336 */ {(12<<2)|2,{77,101,0}}, +/* 53337 */ {(12<<2)|2,{77,101,0}}, +/* 53338 */ {(12<<2)|2,{77,101,0}}, +/* 53339 */ {(12<<2)|2,{77,101,0}}, +/* 53340 */ {(12<<2)|2,{77,101,0}}, +/* 53341 */ {(12<<2)|2,{77,101,0}}, +/* 53342 */ {(12<<2)|2,{77,101,0}}, +/* 53343 */ {(12<<2)|2,{77,101,0}}, +/* 53344 */ {(12<<2)|2,{77,105,0}}, +/* 53345 */ {(12<<2)|2,{77,105,0}}, +/* 53346 */ {(12<<2)|2,{77,105,0}}, +/* 53347 */ {(12<<2)|2,{77,105,0}}, +/* 53348 */ {(12<<2)|2,{77,105,0}}, +/* 53349 */ {(12<<2)|2,{77,105,0}}, +/* 53350 */ {(12<<2)|2,{77,105,0}}, +/* 53351 */ {(12<<2)|2,{77,105,0}}, +/* 53352 */ {(12<<2)|2,{77,105,0}}, +/* 53353 */ {(12<<2)|2,{77,105,0}}, +/* 53354 */ {(12<<2)|2,{77,105,0}}, +/* 53355 */ {(12<<2)|2,{77,105,0}}, +/* 53356 */ {(12<<2)|2,{77,105,0}}, +/* 53357 */ {(12<<2)|2,{77,105,0}}, +/* 53358 */ {(12<<2)|2,{77,105,0}}, +/* 53359 */ {(12<<2)|2,{77,105,0}}, +/* 53360 */ {(12<<2)|2,{77,111,0}}, +/* 53361 */ {(12<<2)|2,{77,111,0}}, +/* 53362 */ {(12<<2)|2,{77,111,0}}, +/* 53363 */ {(12<<2)|2,{77,111,0}}, +/* 53364 */ {(12<<2)|2,{77,111,0}}, +/* 53365 */ {(12<<2)|2,{77,111,0}}, +/* 53366 */ {(12<<2)|2,{77,111,0}}, +/* 53367 */ {(12<<2)|2,{77,111,0}}, +/* 53368 */ {(12<<2)|2,{77,111,0}}, +/* 53369 */ {(12<<2)|2,{77,111,0}}, +/* 53370 */ {(12<<2)|2,{77,111,0}}, +/* 53371 */ {(12<<2)|2,{77,111,0}}, +/* 53372 */ {(12<<2)|2,{77,111,0}}, +/* 53373 */ {(12<<2)|2,{77,111,0}}, +/* 53374 */ {(12<<2)|2,{77,111,0}}, +/* 53375 */ {(12<<2)|2,{77,111,0}}, +/* 53376 */ {(12<<2)|2,{77,115,0}}, +/* 53377 */ {(12<<2)|2,{77,115,0}}, +/* 53378 */ {(12<<2)|2,{77,115,0}}, +/* 53379 */ {(12<<2)|2,{77,115,0}}, +/* 53380 */ {(12<<2)|2,{77,115,0}}, +/* 53381 */ {(12<<2)|2,{77,115,0}}, +/* 53382 */ {(12<<2)|2,{77,115,0}}, +/* 53383 */ {(12<<2)|2,{77,115,0}}, +/* 53384 */ {(12<<2)|2,{77,115,0}}, +/* 53385 */ {(12<<2)|2,{77,115,0}}, +/* 53386 */ {(12<<2)|2,{77,115,0}}, +/* 53387 */ {(12<<2)|2,{77,115,0}}, +/* 53388 */ {(12<<2)|2,{77,115,0}}, +/* 53389 */ {(12<<2)|2,{77,115,0}}, +/* 53390 */ {(12<<2)|2,{77,115,0}}, +/* 53391 */ {(12<<2)|2,{77,115,0}}, +/* 53392 */ {(12<<2)|2,{77,116,0}}, +/* 53393 */ {(12<<2)|2,{77,116,0}}, +/* 53394 */ {(12<<2)|2,{77,116,0}}, +/* 53395 */ {(12<<2)|2,{77,116,0}}, +/* 53396 */ {(12<<2)|2,{77,116,0}}, +/* 53397 */ {(12<<2)|2,{77,116,0}}, +/* 53398 */ {(12<<2)|2,{77,116,0}}, +/* 53399 */ {(12<<2)|2,{77,116,0}}, +/* 53400 */ {(12<<2)|2,{77,116,0}}, +/* 53401 */ {(12<<2)|2,{77,116,0}}, +/* 53402 */ {(12<<2)|2,{77,116,0}}, +/* 53403 */ {(12<<2)|2,{77,116,0}}, +/* 53404 */ {(12<<2)|2,{77,116,0}}, +/* 53405 */ {(12<<2)|2,{77,116,0}}, +/* 53406 */ {(12<<2)|2,{77,116,0}}, +/* 53407 */ {(12<<2)|2,{77,116,0}}, +/* 53408 */ {(13<<2)|2,{77,32,0}}, +/* 53409 */ {(13<<2)|2,{77,32,0}}, +/* 53410 */ {(13<<2)|2,{77,32,0}}, +/* 53411 */ {(13<<2)|2,{77,32,0}}, +/* 53412 */ {(13<<2)|2,{77,32,0}}, +/* 53413 */ {(13<<2)|2,{77,32,0}}, +/* 53414 */ {(13<<2)|2,{77,32,0}}, +/* 53415 */ {(13<<2)|2,{77,32,0}}, +/* 53416 */ {(13<<2)|2,{77,37,0}}, +/* 53417 */ {(13<<2)|2,{77,37,0}}, +/* 53418 */ {(13<<2)|2,{77,37,0}}, +/* 53419 */ {(13<<2)|2,{77,37,0}}, +/* 53420 */ {(13<<2)|2,{77,37,0}}, +/* 53421 */ {(13<<2)|2,{77,37,0}}, +/* 53422 */ {(13<<2)|2,{77,37,0}}, +/* 53423 */ {(13<<2)|2,{77,37,0}}, +/* 53424 */ {(13<<2)|2,{77,45,0}}, +/* 53425 */ {(13<<2)|2,{77,45,0}}, +/* 53426 */ {(13<<2)|2,{77,45,0}}, +/* 53427 */ {(13<<2)|2,{77,45,0}}, +/* 53428 */ {(13<<2)|2,{77,45,0}}, +/* 53429 */ {(13<<2)|2,{77,45,0}}, +/* 53430 */ {(13<<2)|2,{77,45,0}}, +/* 53431 */ {(13<<2)|2,{77,45,0}}, +/* 53432 */ {(13<<2)|2,{77,46,0}}, +/* 53433 */ {(13<<2)|2,{77,46,0}}, +/* 53434 */ {(13<<2)|2,{77,46,0}}, +/* 53435 */ {(13<<2)|2,{77,46,0}}, +/* 53436 */ {(13<<2)|2,{77,46,0}}, +/* 53437 */ {(13<<2)|2,{77,46,0}}, +/* 53438 */ {(13<<2)|2,{77,46,0}}, +/* 53439 */ {(13<<2)|2,{77,46,0}}, +/* 53440 */ {(13<<2)|2,{77,47,0}}, +/* 53441 */ {(13<<2)|2,{77,47,0}}, +/* 53442 */ {(13<<2)|2,{77,47,0}}, +/* 53443 */ {(13<<2)|2,{77,47,0}}, +/* 53444 */ {(13<<2)|2,{77,47,0}}, +/* 53445 */ {(13<<2)|2,{77,47,0}}, +/* 53446 */ {(13<<2)|2,{77,47,0}}, +/* 53447 */ {(13<<2)|2,{77,47,0}}, +/* 53448 */ {(13<<2)|2,{77,51,0}}, +/* 53449 */ {(13<<2)|2,{77,51,0}}, +/* 53450 */ {(13<<2)|2,{77,51,0}}, +/* 53451 */ {(13<<2)|2,{77,51,0}}, +/* 53452 */ {(13<<2)|2,{77,51,0}}, +/* 53453 */ {(13<<2)|2,{77,51,0}}, +/* 53454 */ {(13<<2)|2,{77,51,0}}, +/* 53455 */ {(13<<2)|2,{77,51,0}}, +/* 53456 */ {(13<<2)|2,{77,52,0}}, +/* 53457 */ {(13<<2)|2,{77,52,0}}, +/* 53458 */ {(13<<2)|2,{77,52,0}}, +/* 53459 */ {(13<<2)|2,{77,52,0}}, +/* 53460 */ {(13<<2)|2,{77,52,0}}, +/* 53461 */ {(13<<2)|2,{77,52,0}}, +/* 53462 */ {(13<<2)|2,{77,52,0}}, +/* 53463 */ {(13<<2)|2,{77,52,0}}, +/* 53464 */ {(13<<2)|2,{77,53,0}}, +/* 53465 */ {(13<<2)|2,{77,53,0}}, +/* 53466 */ {(13<<2)|2,{77,53,0}}, +/* 53467 */ {(13<<2)|2,{77,53,0}}, +/* 53468 */ {(13<<2)|2,{77,53,0}}, +/* 53469 */ {(13<<2)|2,{77,53,0}}, +/* 53470 */ {(13<<2)|2,{77,53,0}}, +/* 53471 */ {(13<<2)|2,{77,53,0}}, +/* 53472 */ {(13<<2)|2,{77,54,0}}, +/* 53473 */ {(13<<2)|2,{77,54,0}}, +/* 53474 */ {(13<<2)|2,{77,54,0}}, +/* 53475 */ {(13<<2)|2,{77,54,0}}, +/* 53476 */ {(13<<2)|2,{77,54,0}}, +/* 53477 */ {(13<<2)|2,{77,54,0}}, +/* 53478 */ {(13<<2)|2,{77,54,0}}, +/* 53479 */ {(13<<2)|2,{77,54,0}}, +/* 53480 */ {(13<<2)|2,{77,55,0}}, +/* 53481 */ {(13<<2)|2,{77,55,0}}, +/* 53482 */ {(13<<2)|2,{77,55,0}}, +/* 53483 */ {(13<<2)|2,{77,55,0}}, +/* 53484 */ {(13<<2)|2,{77,55,0}}, +/* 53485 */ {(13<<2)|2,{77,55,0}}, +/* 53486 */ {(13<<2)|2,{77,55,0}}, +/* 53487 */ {(13<<2)|2,{77,55,0}}, +/* 53488 */ {(13<<2)|2,{77,56,0}}, +/* 53489 */ {(13<<2)|2,{77,56,0}}, +/* 53490 */ {(13<<2)|2,{77,56,0}}, +/* 53491 */ {(13<<2)|2,{77,56,0}}, +/* 53492 */ {(13<<2)|2,{77,56,0}}, +/* 53493 */ {(13<<2)|2,{77,56,0}}, +/* 53494 */ {(13<<2)|2,{77,56,0}}, +/* 53495 */ {(13<<2)|2,{77,56,0}}, +/* 53496 */ {(13<<2)|2,{77,57,0}}, +/* 53497 */ {(13<<2)|2,{77,57,0}}, +/* 53498 */ {(13<<2)|2,{77,57,0}}, +/* 53499 */ {(13<<2)|2,{77,57,0}}, +/* 53500 */ {(13<<2)|2,{77,57,0}}, +/* 53501 */ {(13<<2)|2,{77,57,0}}, +/* 53502 */ {(13<<2)|2,{77,57,0}}, +/* 53503 */ {(13<<2)|2,{77,57,0}}, +/* 53504 */ {(13<<2)|2,{77,61,0}}, +/* 53505 */ {(13<<2)|2,{77,61,0}}, +/* 53506 */ {(13<<2)|2,{77,61,0}}, +/* 53507 */ {(13<<2)|2,{77,61,0}}, +/* 53508 */ {(13<<2)|2,{77,61,0}}, +/* 53509 */ {(13<<2)|2,{77,61,0}}, +/* 53510 */ {(13<<2)|2,{77,61,0}}, +/* 53511 */ {(13<<2)|2,{77,61,0}}, +/* 53512 */ {(13<<2)|2,{77,65,0}}, +/* 53513 */ {(13<<2)|2,{77,65,0}}, +/* 53514 */ {(13<<2)|2,{77,65,0}}, +/* 53515 */ {(13<<2)|2,{77,65,0}}, +/* 53516 */ {(13<<2)|2,{77,65,0}}, +/* 53517 */ {(13<<2)|2,{77,65,0}}, +/* 53518 */ {(13<<2)|2,{77,65,0}}, +/* 53519 */ {(13<<2)|2,{77,65,0}}, +/* 53520 */ {(13<<2)|2,{77,95,0}}, +/* 53521 */ {(13<<2)|2,{77,95,0}}, +/* 53522 */ {(13<<2)|2,{77,95,0}}, +/* 53523 */ {(13<<2)|2,{77,95,0}}, +/* 53524 */ {(13<<2)|2,{77,95,0}}, +/* 53525 */ {(13<<2)|2,{77,95,0}}, +/* 53526 */ {(13<<2)|2,{77,95,0}}, +/* 53527 */ {(13<<2)|2,{77,95,0}}, +/* 53528 */ {(13<<2)|2,{77,98,0}}, +/* 53529 */ {(13<<2)|2,{77,98,0}}, +/* 53530 */ {(13<<2)|2,{77,98,0}}, +/* 53531 */ {(13<<2)|2,{77,98,0}}, +/* 53532 */ {(13<<2)|2,{77,98,0}}, +/* 53533 */ {(13<<2)|2,{77,98,0}}, +/* 53534 */ {(13<<2)|2,{77,98,0}}, +/* 53535 */ {(13<<2)|2,{77,98,0}}, +/* 53536 */ {(13<<2)|2,{77,100,0}}, +/* 53537 */ {(13<<2)|2,{77,100,0}}, +/* 53538 */ {(13<<2)|2,{77,100,0}}, +/* 53539 */ {(13<<2)|2,{77,100,0}}, +/* 53540 */ {(13<<2)|2,{77,100,0}}, +/* 53541 */ {(13<<2)|2,{77,100,0}}, +/* 53542 */ {(13<<2)|2,{77,100,0}}, +/* 53543 */ {(13<<2)|2,{77,100,0}}, +/* 53544 */ {(13<<2)|2,{77,102,0}}, +/* 53545 */ {(13<<2)|2,{77,102,0}}, +/* 53546 */ {(13<<2)|2,{77,102,0}}, +/* 53547 */ {(13<<2)|2,{77,102,0}}, +/* 53548 */ {(13<<2)|2,{77,102,0}}, +/* 53549 */ {(13<<2)|2,{77,102,0}}, +/* 53550 */ {(13<<2)|2,{77,102,0}}, +/* 53551 */ {(13<<2)|2,{77,102,0}}, +/* 53552 */ {(13<<2)|2,{77,103,0}}, +/* 53553 */ {(13<<2)|2,{77,103,0}}, +/* 53554 */ {(13<<2)|2,{77,103,0}}, +/* 53555 */ {(13<<2)|2,{77,103,0}}, +/* 53556 */ {(13<<2)|2,{77,103,0}}, +/* 53557 */ {(13<<2)|2,{77,103,0}}, +/* 53558 */ {(13<<2)|2,{77,103,0}}, +/* 53559 */ {(13<<2)|2,{77,103,0}}, +/* 53560 */ {(13<<2)|2,{77,104,0}}, +/* 53561 */ {(13<<2)|2,{77,104,0}}, +/* 53562 */ {(13<<2)|2,{77,104,0}}, +/* 53563 */ {(13<<2)|2,{77,104,0}}, +/* 53564 */ {(13<<2)|2,{77,104,0}}, +/* 53565 */ {(13<<2)|2,{77,104,0}}, +/* 53566 */ {(13<<2)|2,{77,104,0}}, +/* 53567 */ {(13<<2)|2,{77,104,0}}, +/* 53568 */ {(13<<2)|2,{77,108,0}}, +/* 53569 */ {(13<<2)|2,{77,108,0}}, +/* 53570 */ {(13<<2)|2,{77,108,0}}, +/* 53571 */ {(13<<2)|2,{77,108,0}}, +/* 53572 */ {(13<<2)|2,{77,108,0}}, +/* 53573 */ {(13<<2)|2,{77,108,0}}, +/* 53574 */ {(13<<2)|2,{77,108,0}}, +/* 53575 */ {(13<<2)|2,{77,108,0}}, +/* 53576 */ {(13<<2)|2,{77,109,0}}, +/* 53577 */ {(13<<2)|2,{77,109,0}}, +/* 53578 */ {(13<<2)|2,{77,109,0}}, +/* 53579 */ {(13<<2)|2,{77,109,0}}, +/* 53580 */ {(13<<2)|2,{77,109,0}}, +/* 53581 */ {(13<<2)|2,{77,109,0}}, +/* 53582 */ {(13<<2)|2,{77,109,0}}, +/* 53583 */ {(13<<2)|2,{77,109,0}}, +/* 53584 */ {(13<<2)|2,{77,110,0}}, +/* 53585 */ {(13<<2)|2,{77,110,0}}, +/* 53586 */ {(13<<2)|2,{77,110,0}}, +/* 53587 */ {(13<<2)|2,{77,110,0}}, +/* 53588 */ {(13<<2)|2,{77,110,0}}, +/* 53589 */ {(13<<2)|2,{77,110,0}}, +/* 53590 */ {(13<<2)|2,{77,110,0}}, +/* 53591 */ {(13<<2)|2,{77,110,0}}, +/* 53592 */ {(13<<2)|2,{77,112,0}}, +/* 53593 */ {(13<<2)|2,{77,112,0}}, +/* 53594 */ {(13<<2)|2,{77,112,0}}, +/* 53595 */ {(13<<2)|2,{77,112,0}}, +/* 53596 */ {(13<<2)|2,{77,112,0}}, +/* 53597 */ {(13<<2)|2,{77,112,0}}, +/* 53598 */ {(13<<2)|2,{77,112,0}}, +/* 53599 */ {(13<<2)|2,{77,112,0}}, +/* 53600 */ {(13<<2)|2,{77,114,0}}, +/* 53601 */ {(13<<2)|2,{77,114,0}}, +/* 53602 */ {(13<<2)|2,{77,114,0}}, +/* 53603 */ {(13<<2)|2,{77,114,0}}, +/* 53604 */ {(13<<2)|2,{77,114,0}}, +/* 53605 */ {(13<<2)|2,{77,114,0}}, +/* 53606 */ {(13<<2)|2,{77,114,0}}, +/* 53607 */ {(13<<2)|2,{77,114,0}}, +/* 53608 */ {(13<<2)|2,{77,117,0}}, +/* 53609 */ {(13<<2)|2,{77,117,0}}, +/* 53610 */ {(13<<2)|2,{77,117,0}}, +/* 53611 */ {(13<<2)|2,{77,117,0}}, +/* 53612 */ {(13<<2)|2,{77,117,0}}, +/* 53613 */ {(13<<2)|2,{77,117,0}}, +/* 53614 */ {(13<<2)|2,{77,117,0}}, +/* 53615 */ {(13<<2)|2,{77,117,0}}, +/* 53616 */ {(14<<2)|2,{77,58,0}}, +/* 53617 */ {(14<<2)|2,{77,58,0}}, +/* 53618 */ {(14<<2)|2,{77,58,0}}, +/* 53619 */ {(14<<2)|2,{77,58,0}}, +/* 53620 */ {(14<<2)|2,{77,66,0}}, +/* 53621 */ {(14<<2)|2,{77,66,0}}, +/* 53622 */ {(14<<2)|2,{77,66,0}}, +/* 53623 */ {(14<<2)|2,{77,66,0}}, +/* 53624 */ {(14<<2)|2,{77,67,0}}, +/* 53625 */ {(14<<2)|2,{77,67,0}}, +/* 53626 */ {(14<<2)|2,{77,67,0}}, +/* 53627 */ {(14<<2)|2,{77,67,0}}, +/* 53628 */ {(14<<2)|2,{77,68,0}}, +/* 53629 */ {(14<<2)|2,{77,68,0}}, +/* 53630 */ {(14<<2)|2,{77,68,0}}, +/* 53631 */ {(14<<2)|2,{77,68,0}}, +/* 53632 */ {(14<<2)|2,{77,69,0}}, +/* 53633 */ {(14<<2)|2,{77,69,0}}, +/* 53634 */ {(14<<2)|2,{77,69,0}}, +/* 53635 */ {(14<<2)|2,{77,69,0}}, +/* 53636 */ {(14<<2)|2,{77,70,0}}, +/* 53637 */ {(14<<2)|2,{77,70,0}}, +/* 53638 */ {(14<<2)|2,{77,70,0}}, +/* 53639 */ {(14<<2)|2,{77,70,0}}, +/* 53640 */ {(14<<2)|2,{77,71,0}}, +/* 53641 */ {(14<<2)|2,{77,71,0}}, +/* 53642 */ {(14<<2)|2,{77,71,0}}, +/* 53643 */ {(14<<2)|2,{77,71,0}}, +/* 53644 */ {(14<<2)|2,{77,72,0}}, +/* 53645 */ {(14<<2)|2,{77,72,0}}, +/* 53646 */ {(14<<2)|2,{77,72,0}}, +/* 53647 */ {(14<<2)|2,{77,72,0}}, +/* 53648 */ {(14<<2)|2,{77,73,0}}, +/* 53649 */ {(14<<2)|2,{77,73,0}}, +/* 53650 */ {(14<<2)|2,{77,73,0}}, +/* 53651 */ {(14<<2)|2,{77,73,0}}, +/* 53652 */ {(14<<2)|2,{77,74,0}}, +/* 53653 */ {(14<<2)|2,{77,74,0}}, +/* 53654 */ {(14<<2)|2,{77,74,0}}, +/* 53655 */ {(14<<2)|2,{77,74,0}}, +/* 53656 */ {(14<<2)|2,{77,75,0}}, +/* 53657 */ {(14<<2)|2,{77,75,0}}, +/* 53658 */ {(14<<2)|2,{77,75,0}}, +/* 53659 */ {(14<<2)|2,{77,75,0}}, +/* 53660 */ {(14<<2)|2,{77,76,0}}, +/* 53661 */ {(14<<2)|2,{77,76,0}}, +/* 53662 */ {(14<<2)|2,{77,76,0}}, +/* 53663 */ {(14<<2)|2,{77,76,0}}, +/* 53664 */ {(14<<2)|2,{77,77,0}}, +/* 53665 */ {(14<<2)|2,{77,77,0}}, +/* 53666 */ {(14<<2)|2,{77,77,0}}, +/* 53667 */ {(14<<2)|2,{77,77,0}}, +/* 53668 */ {(14<<2)|2,{77,78,0}}, +/* 53669 */ {(14<<2)|2,{77,78,0}}, +/* 53670 */ {(14<<2)|2,{77,78,0}}, +/* 53671 */ {(14<<2)|2,{77,78,0}}, +/* 53672 */ {(14<<2)|2,{77,79,0}}, +/* 53673 */ {(14<<2)|2,{77,79,0}}, +/* 53674 */ {(14<<2)|2,{77,79,0}}, +/* 53675 */ {(14<<2)|2,{77,79,0}}, +/* 53676 */ {(14<<2)|2,{77,80,0}}, +/* 53677 */ {(14<<2)|2,{77,80,0}}, +/* 53678 */ {(14<<2)|2,{77,80,0}}, +/* 53679 */ {(14<<2)|2,{77,80,0}}, +/* 53680 */ {(14<<2)|2,{77,81,0}}, +/* 53681 */ {(14<<2)|2,{77,81,0}}, +/* 53682 */ {(14<<2)|2,{77,81,0}}, +/* 53683 */ {(14<<2)|2,{77,81,0}}, +/* 53684 */ {(14<<2)|2,{77,82,0}}, +/* 53685 */ {(14<<2)|2,{77,82,0}}, +/* 53686 */ {(14<<2)|2,{77,82,0}}, +/* 53687 */ {(14<<2)|2,{77,82,0}}, +/* 53688 */ {(14<<2)|2,{77,83,0}}, +/* 53689 */ {(14<<2)|2,{77,83,0}}, +/* 53690 */ {(14<<2)|2,{77,83,0}}, +/* 53691 */ {(14<<2)|2,{77,83,0}}, +/* 53692 */ {(14<<2)|2,{77,84,0}}, +/* 53693 */ {(14<<2)|2,{77,84,0}}, +/* 53694 */ {(14<<2)|2,{77,84,0}}, +/* 53695 */ {(14<<2)|2,{77,84,0}}, +/* 53696 */ {(14<<2)|2,{77,85,0}}, +/* 53697 */ {(14<<2)|2,{77,85,0}}, +/* 53698 */ {(14<<2)|2,{77,85,0}}, +/* 53699 */ {(14<<2)|2,{77,85,0}}, +/* 53700 */ {(14<<2)|2,{77,86,0}}, +/* 53701 */ {(14<<2)|2,{77,86,0}}, +/* 53702 */ {(14<<2)|2,{77,86,0}}, +/* 53703 */ {(14<<2)|2,{77,86,0}}, +/* 53704 */ {(14<<2)|2,{77,87,0}}, +/* 53705 */ {(14<<2)|2,{77,87,0}}, +/* 53706 */ {(14<<2)|2,{77,87,0}}, +/* 53707 */ {(14<<2)|2,{77,87,0}}, +/* 53708 */ {(14<<2)|2,{77,89,0}}, +/* 53709 */ {(14<<2)|2,{77,89,0}}, +/* 53710 */ {(14<<2)|2,{77,89,0}}, +/* 53711 */ {(14<<2)|2,{77,89,0}}, +/* 53712 */ {(14<<2)|2,{77,106,0}}, +/* 53713 */ {(14<<2)|2,{77,106,0}}, +/* 53714 */ {(14<<2)|2,{77,106,0}}, +/* 53715 */ {(14<<2)|2,{77,106,0}}, +/* 53716 */ {(14<<2)|2,{77,107,0}}, +/* 53717 */ {(14<<2)|2,{77,107,0}}, +/* 53718 */ {(14<<2)|2,{77,107,0}}, +/* 53719 */ {(14<<2)|2,{77,107,0}}, +/* 53720 */ {(14<<2)|2,{77,113,0}}, +/* 53721 */ {(14<<2)|2,{77,113,0}}, +/* 53722 */ {(14<<2)|2,{77,113,0}}, +/* 53723 */ {(14<<2)|2,{77,113,0}}, +/* 53724 */ {(14<<2)|2,{77,118,0}}, +/* 53725 */ {(14<<2)|2,{77,118,0}}, +/* 53726 */ {(14<<2)|2,{77,118,0}}, +/* 53727 */ {(14<<2)|2,{77,118,0}}, +/* 53728 */ {(14<<2)|2,{77,119,0}}, +/* 53729 */ {(14<<2)|2,{77,119,0}}, +/* 53730 */ {(14<<2)|2,{77,119,0}}, +/* 53731 */ {(14<<2)|2,{77,119,0}}, +/* 53732 */ {(14<<2)|2,{77,120,0}}, +/* 53733 */ {(14<<2)|2,{77,120,0}}, +/* 53734 */ {(14<<2)|2,{77,120,0}}, +/* 53735 */ {(14<<2)|2,{77,120,0}}, +/* 53736 */ {(14<<2)|2,{77,121,0}}, +/* 53737 */ {(14<<2)|2,{77,121,0}}, +/* 53738 */ {(14<<2)|2,{77,121,0}}, +/* 53739 */ {(14<<2)|2,{77,121,0}}, +/* 53740 */ {(14<<2)|2,{77,122,0}}, +/* 53741 */ {(14<<2)|2,{77,122,0}}, +/* 53742 */ {(14<<2)|2,{77,122,0}}, +/* 53743 */ {(14<<2)|2,{77,122,0}}, +/* 53744 */ {(15<<2)|2,{77,38,0}}, +/* 53745 */ {(15<<2)|2,{77,38,0}}, +/* 53746 */ {(15<<2)|2,{77,42,0}}, +/* 53747 */ {(15<<2)|2,{77,42,0}}, +/* 53748 */ {(15<<2)|2,{77,44,0}}, +/* 53749 */ {(15<<2)|2,{77,44,0}}, +/* 53750 */ {(15<<2)|2,{77,59,0}}, +/* 53751 */ {(15<<2)|2,{77,59,0}}, +/* 53752 */ {(15<<2)|2,{77,88,0}}, +/* 53753 */ {(15<<2)|2,{77,88,0}}, +/* 53754 */ {(15<<2)|2,{77,90,0}}, +/* 53755 */ {(15<<2)|2,{77,90,0}}, +/* 53756 */ {(7<<2)|1,{77,0,0}}, +/* 53757 */ {(7<<2)|1,{77,0,0}}, +/* 53758 */ {(7<<2)|1,{77,0,0}}, +/* 53759 */ {(7<<2)|1,{77,0,0}}, +/* 53760 */ {(12<<2)|2,{78,48,0}}, +/* 53761 */ {(12<<2)|2,{78,48,0}}, +/* 53762 */ {(12<<2)|2,{78,48,0}}, +/* 53763 */ {(12<<2)|2,{78,48,0}}, +/* 53764 */ {(12<<2)|2,{78,48,0}}, +/* 53765 */ {(12<<2)|2,{78,48,0}}, +/* 53766 */ {(12<<2)|2,{78,48,0}}, +/* 53767 */ {(12<<2)|2,{78,48,0}}, +/* 53768 */ {(12<<2)|2,{78,48,0}}, +/* 53769 */ {(12<<2)|2,{78,48,0}}, +/* 53770 */ {(12<<2)|2,{78,48,0}}, +/* 53771 */ {(12<<2)|2,{78,48,0}}, +/* 53772 */ {(12<<2)|2,{78,48,0}}, +/* 53773 */ {(12<<2)|2,{78,48,0}}, +/* 53774 */ {(12<<2)|2,{78,48,0}}, +/* 53775 */ {(12<<2)|2,{78,48,0}}, +/* 53776 */ {(12<<2)|2,{78,49,0}}, +/* 53777 */ {(12<<2)|2,{78,49,0}}, +/* 53778 */ {(12<<2)|2,{78,49,0}}, +/* 53779 */ {(12<<2)|2,{78,49,0}}, +/* 53780 */ {(12<<2)|2,{78,49,0}}, +/* 53781 */ {(12<<2)|2,{78,49,0}}, +/* 53782 */ {(12<<2)|2,{78,49,0}}, +/* 53783 */ {(12<<2)|2,{78,49,0}}, +/* 53784 */ {(12<<2)|2,{78,49,0}}, +/* 53785 */ {(12<<2)|2,{78,49,0}}, +/* 53786 */ {(12<<2)|2,{78,49,0}}, +/* 53787 */ {(12<<2)|2,{78,49,0}}, +/* 53788 */ {(12<<2)|2,{78,49,0}}, +/* 53789 */ {(12<<2)|2,{78,49,0}}, +/* 53790 */ {(12<<2)|2,{78,49,0}}, +/* 53791 */ {(12<<2)|2,{78,49,0}}, +/* 53792 */ {(12<<2)|2,{78,50,0}}, +/* 53793 */ {(12<<2)|2,{78,50,0}}, +/* 53794 */ {(12<<2)|2,{78,50,0}}, +/* 53795 */ {(12<<2)|2,{78,50,0}}, +/* 53796 */ {(12<<2)|2,{78,50,0}}, +/* 53797 */ {(12<<2)|2,{78,50,0}}, +/* 53798 */ {(12<<2)|2,{78,50,0}}, +/* 53799 */ {(12<<2)|2,{78,50,0}}, +/* 53800 */ {(12<<2)|2,{78,50,0}}, +/* 53801 */ {(12<<2)|2,{78,50,0}}, +/* 53802 */ {(12<<2)|2,{78,50,0}}, +/* 53803 */ {(12<<2)|2,{78,50,0}}, +/* 53804 */ {(12<<2)|2,{78,50,0}}, +/* 53805 */ {(12<<2)|2,{78,50,0}}, +/* 53806 */ {(12<<2)|2,{78,50,0}}, +/* 53807 */ {(12<<2)|2,{78,50,0}}, +/* 53808 */ {(12<<2)|2,{78,97,0}}, +/* 53809 */ {(12<<2)|2,{78,97,0}}, +/* 53810 */ {(12<<2)|2,{78,97,0}}, +/* 53811 */ {(12<<2)|2,{78,97,0}}, +/* 53812 */ {(12<<2)|2,{78,97,0}}, +/* 53813 */ {(12<<2)|2,{78,97,0}}, +/* 53814 */ {(12<<2)|2,{78,97,0}}, +/* 53815 */ {(12<<2)|2,{78,97,0}}, +/* 53816 */ {(12<<2)|2,{78,97,0}}, +/* 53817 */ {(12<<2)|2,{78,97,0}}, +/* 53818 */ {(12<<2)|2,{78,97,0}}, +/* 53819 */ {(12<<2)|2,{78,97,0}}, +/* 53820 */ {(12<<2)|2,{78,97,0}}, +/* 53821 */ {(12<<2)|2,{78,97,0}}, +/* 53822 */ {(12<<2)|2,{78,97,0}}, +/* 53823 */ {(12<<2)|2,{78,97,0}}, +/* 53824 */ {(12<<2)|2,{78,99,0}}, +/* 53825 */ {(12<<2)|2,{78,99,0}}, +/* 53826 */ {(12<<2)|2,{78,99,0}}, +/* 53827 */ {(12<<2)|2,{78,99,0}}, +/* 53828 */ {(12<<2)|2,{78,99,0}}, +/* 53829 */ {(12<<2)|2,{78,99,0}}, +/* 53830 */ {(12<<2)|2,{78,99,0}}, +/* 53831 */ {(12<<2)|2,{78,99,0}}, +/* 53832 */ {(12<<2)|2,{78,99,0}}, +/* 53833 */ {(12<<2)|2,{78,99,0}}, +/* 53834 */ {(12<<2)|2,{78,99,0}}, +/* 53835 */ {(12<<2)|2,{78,99,0}}, +/* 53836 */ {(12<<2)|2,{78,99,0}}, +/* 53837 */ {(12<<2)|2,{78,99,0}}, +/* 53838 */ {(12<<2)|2,{78,99,0}}, +/* 53839 */ {(12<<2)|2,{78,99,0}}, +/* 53840 */ {(12<<2)|2,{78,101,0}}, +/* 53841 */ {(12<<2)|2,{78,101,0}}, +/* 53842 */ {(12<<2)|2,{78,101,0}}, +/* 53843 */ {(12<<2)|2,{78,101,0}}, +/* 53844 */ {(12<<2)|2,{78,101,0}}, +/* 53845 */ {(12<<2)|2,{78,101,0}}, +/* 53846 */ {(12<<2)|2,{78,101,0}}, +/* 53847 */ {(12<<2)|2,{78,101,0}}, +/* 53848 */ {(12<<2)|2,{78,101,0}}, +/* 53849 */ {(12<<2)|2,{78,101,0}}, +/* 53850 */ {(12<<2)|2,{78,101,0}}, +/* 53851 */ {(12<<2)|2,{78,101,0}}, +/* 53852 */ {(12<<2)|2,{78,101,0}}, +/* 53853 */ {(12<<2)|2,{78,101,0}}, +/* 53854 */ {(12<<2)|2,{78,101,0}}, +/* 53855 */ {(12<<2)|2,{78,101,0}}, +/* 53856 */ {(12<<2)|2,{78,105,0}}, +/* 53857 */ {(12<<2)|2,{78,105,0}}, +/* 53858 */ {(12<<2)|2,{78,105,0}}, +/* 53859 */ {(12<<2)|2,{78,105,0}}, +/* 53860 */ {(12<<2)|2,{78,105,0}}, +/* 53861 */ {(12<<2)|2,{78,105,0}}, +/* 53862 */ {(12<<2)|2,{78,105,0}}, +/* 53863 */ {(12<<2)|2,{78,105,0}}, +/* 53864 */ {(12<<2)|2,{78,105,0}}, +/* 53865 */ {(12<<2)|2,{78,105,0}}, +/* 53866 */ {(12<<2)|2,{78,105,0}}, +/* 53867 */ {(12<<2)|2,{78,105,0}}, +/* 53868 */ {(12<<2)|2,{78,105,0}}, +/* 53869 */ {(12<<2)|2,{78,105,0}}, +/* 53870 */ {(12<<2)|2,{78,105,0}}, +/* 53871 */ {(12<<2)|2,{78,105,0}}, +/* 53872 */ {(12<<2)|2,{78,111,0}}, +/* 53873 */ {(12<<2)|2,{78,111,0}}, +/* 53874 */ {(12<<2)|2,{78,111,0}}, +/* 53875 */ {(12<<2)|2,{78,111,0}}, +/* 53876 */ {(12<<2)|2,{78,111,0}}, +/* 53877 */ {(12<<2)|2,{78,111,0}}, +/* 53878 */ {(12<<2)|2,{78,111,0}}, +/* 53879 */ {(12<<2)|2,{78,111,0}}, +/* 53880 */ {(12<<2)|2,{78,111,0}}, +/* 53881 */ {(12<<2)|2,{78,111,0}}, +/* 53882 */ {(12<<2)|2,{78,111,0}}, +/* 53883 */ {(12<<2)|2,{78,111,0}}, +/* 53884 */ {(12<<2)|2,{78,111,0}}, +/* 53885 */ {(12<<2)|2,{78,111,0}}, +/* 53886 */ {(12<<2)|2,{78,111,0}}, +/* 53887 */ {(12<<2)|2,{78,111,0}}, +/* 53888 */ {(12<<2)|2,{78,115,0}}, +/* 53889 */ {(12<<2)|2,{78,115,0}}, +/* 53890 */ {(12<<2)|2,{78,115,0}}, +/* 53891 */ {(12<<2)|2,{78,115,0}}, +/* 53892 */ {(12<<2)|2,{78,115,0}}, +/* 53893 */ {(12<<2)|2,{78,115,0}}, +/* 53894 */ {(12<<2)|2,{78,115,0}}, +/* 53895 */ {(12<<2)|2,{78,115,0}}, +/* 53896 */ {(12<<2)|2,{78,115,0}}, +/* 53897 */ {(12<<2)|2,{78,115,0}}, +/* 53898 */ {(12<<2)|2,{78,115,0}}, +/* 53899 */ {(12<<2)|2,{78,115,0}}, +/* 53900 */ {(12<<2)|2,{78,115,0}}, +/* 53901 */ {(12<<2)|2,{78,115,0}}, +/* 53902 */ {(12<<2)|2,{78,115,0}}, +/* 53903 */ {(12<<2)|2,{78,115,0}}, +/* 53904 */ {(12<<2)|2,{78,116,0}}, +/* 53905 */ {(12<<2)|2,{78,116,0}}, +/* 53906 */ {(12<<2)|2,{78,116,0}}, +/* 53907 */ {(12<<2)|2,{78,116,0}}, +/* 53908 */ {(12<<2)|2,{78,116,0}}, +/* 53909 */ {(12<<2)|2,{78,116,0}}, +/* 53910 */ {(12<<2)|2,{78,116,0}}, +/* 53911 */ {(12<<2)|2,{78,116,0}}, +/* 53912 */ {(12<<2)|2,{78,116,0}}, +/* 53913 */ {(12<<2)|2,{78,116,0}}, +/* 53914 */ {(12<<2)|2,{78,116,0}}, +/* 53915 */ {(12<<2)|2,{78,116,0}}, +/* 53916 */ {(12<<2)|2,{78,116,0}}, +/* 53917 */ {(12<<2)|2,{78,116,0}}, +/* 53918 */ {(12<<2)|2,{78,116,0}}, +/* 53919 */ {(12<<2)|2,{78,116,0}}, +/* 53920 */ {(13<<2)|2,{78,32,0}}, +/* 53921 */ {(13<<2)|2,{78,32,0}}, +/* 53922 */ {(13<<2)|2,{78,32,0}}, +/* 53923 */ {(13<<2)|2,{78,32,0}}, +/* 53924 */ {(13<<2)|2,{78,32,0}}, +/* 53925 */ {(13<<2)|2,{78,32,0}}, +/* 53926 */ {(13<<2)|2,{78,32,0}}, +/* 53927 */ {(13<<2)|2,{78,32,0}}, +/* 53928 */ {(13<<2)|2,{78,37,0}}, +/* 53929 */ {(13<<2)|2,{78,37,0}}, +/* 53930 */ {(13<<2)|2,{78,37,0}}, +/* 53931 */ {(13<<2)|2,{78,37,0}}, +/* 53932 */ {(13<<2)|2,{78,37,0}}, +/* 53933 */ {(13<<2)|2,{78,37,0}}, +/* 53934 */ {(13<<2)|2,{78,37,0}}, +/* 53935 */ {(13<<2)|2,{78,37,0}}, +/* 53936 */ {(13<<2)|2,{78,45,0}}, +/* 53937 */ {(13<<2)|2,{78,45,0}}, +/* 53938 */ {(13<<2)|2,{78,45,0}}, +/* 53939 */ {(13<<2)|2,{78,45,0}}, +/* 53940 */ {(13<<2)|2,{78,45,0}}, +/* 53941 */ {(13<<2)|2,{78,45,0}}, +/* 53942 */ {(13<<2)|2,{78,45,0}}, +/* 53943 */ {(13<<2)|2,{78,45,0}}, +/* 53944 */ {(13<<2)|2,{78,46,0}}, +/* 53945 */ {(13<<2)|2,{78,46,0}}, +/* 53946 */ {(13<<2)|2,{78,46,0}}, +/* 53947 */ {(13<<2)|2,{78,46,0}}, +/* 53948 */ {(13<<2)|2,{78,46,0}}, +/* 53949 */ {(13<<2)|2,{78,46,0}}, +/* 53950 */ {(13<<2)|2,{78,46,0}}, +/* 53951 */ {(13<<2)|2,{78,46,0}}, +/* 53952 */ {(13<<2)|2,{78,47,0}}, +/* 53953 */ {(13<<2)|2,{78,47,0}}, +/* 53954 */ {(13<<2)|2,{78,47,0}}, +/* 53955 */ {(13<<2)|2,{78,47,0}}, +/* 53956 */ {(13<<2)|2,{78,47,0}}, +/* 53957 */ {(13<<2)|2,{78,47,0}}, +/* 53958 */ {(13<<2)|2,{78,47,0}}, +/* 53959 */ {(13<<2)|2,{78,47,0}}, +/* 53960 */ {(13<<2)|2,{78,51,0}}, +/* 53961 */ {(13<<2)|2,{78,51,0}}, +/* 53962 */ {(13<<2)|2,{78,51,0}}, +/* 53963 */ {(13<<2)|2,{78,51,0}}, +/* 53964 */ {(13<<2)|2,{78,51,0}}, +/* 53965 */ {(13<<2)|2,{78,51,0}}, +/* 53966 */ {(13<<2)|2,{78,51,0}}, +/* 53967 */ {(13<<2)|2,{78,51,0}}, +/* 53968 */ {(13<<2)|2,{78,52,0}}, +/* 53969 */ {(13<<2)|2,{78,52,0}}, +/* 53970 */ {(13<<2)|2,{78,52,0}}, +/* 53971 */ {(13<<2)|2,{78,52,0}}, +/* 53972 */ {(13<<2)|2,{78,52,0}}, +/* 53973 */ {(13<<2)|2,{78,52,0}}, +/* 53974 */ {(13<<2)|2,{78,52,0}}, +/* 53975 */ {(13<<2)|2,{78,52,0}}, +/* 53976 */ {(13<<2)|2,{78,53,0}}, +/* 53977 */ {(13<<2)|2,{78,53,0}}, +/* 53978 */ {(13<<2)|2,{78,53,0}}, +/* 53979 */ {(13<<2)|2,{78,53,0}}, +/* 53980 */ {(13<<2)|2,{78,53,0}}, +/* 53981 */ {(13<<2)|2,{78,53,0}}, +/* 53982 */ {(13<<2)|2,{78,53,0}}, +/* 53983 */ {(13<<2)|2,{78,53,0}}, +/* 53984 */ {(13<<2)|2,{78,54,0}}, +/* 53985 */ {(13<<2)|2,{78,54,0}}, +/* 53986 */ {(13<<2)|2,{78,54,0}}, +/* 53987 */ {(13<<2)|2,{78,54,0}}, +/* 53988 */ {(13<<2)|2,{78,54,0}}, +/* 53989 */ {(13<<2)|2,{78,54,0}}, +/* 53990 */ {(13<<2)|2,{78,54,0}}, +/* 53991 */ {(13<<2)|2,{78,54,0}}, +/* 53992 */ {(13<<2)|2,{78,55,0}}, +/* 53993 */ {(13<<2)|2,{78,55,0}}, +/* 53994 */ {(13<<2)|2,{78,55,0}}, +/* 53995 */ {(13<<2)|2,{78,55,0}}, +/* 53996 */ {(13<<2)|2,{78,55,0}}, +/* 53997 */ {(13<<2)|2,{78,55,0}}, +/* 53998 */ {(13<<2)|2,{78,55,0}}, +/* 53999 */ {(13<<2)|2,{78,55,0}}, +/* 54000 */ {(13<<2)|2,{78,56,0}}, +/* 54001 */ {(13<<2)|2,{78,56,0}}, +/* 54002 */ {(13<<2)|2,{78,56,0}}, +/* 54003 */ {(13<<2)|2,{78,56,0}}, +/* 54004 */ {(13<<2)|2,{78,56,0}}, +/* 54005 */ {(13<<2)|2,{78,56,0}}, +/* 54006 */ {(13<<2)|2,{78,56,0}}, +/* 54007 */ {(13<<2)|2,{78,56,0}}, +/* 54008 */ {(13<<2)|2,{78,57,0}}, +/* 54009 */ {(13<<2)|2,{78,57,0}}, +/* 54010 */ {(13<<2)|2,{78,57,0}}, +/* 54011 */ {(13<<2)|2,{78,57,0}}, +/* 54012 */ {(13<<2)|2,{78,57,0}}, +/* 54013 */ {(13<<2)|2,{78,57,0}}, +/* 54014 */ {(13<<2)|2,{78,57,0}}, +/* 54015 */ {(13<<2)|2,{78,57,0}}, +/* 54016 */ {(13<<2)|2,{78,61,0}}, +/* 54017 */ {(13<<2)|2,{78,61,0}}, +/* 54018 */ {(13<<2)|2,{78,61,0}}, +/* 54019 */ {(13<<2)|2,{78,61,0}}, +/* 54020 */ {(13<<2)|2,{78,61,0}}, +/* 54021 */ {(13<<2)|2,{78,61,0}}, +/* 54022 */ {(13<<2)|2,{78,61,0}}, +/* 54023 */ {(13<<2)|2,{78,61,0}}, +/* 54024 */ {(13<<2)|2,{78,65,0}}, +/* 54025 */ {(13<<2)|2,{78,65,0}}, +/* 54026 */ {(13<<2)|2,{78,65,0}}, +/* 54027 */ {(13<<2)|2,{78,65,0}}, +/* 54028 */ {(13<<2)|2,{78,65,0}}, +/* 54029 */ {(13<<2)|2,{78,65,0}}, +/* 54030 */ {(13<<2)|2,{78,65,0}}, +/* 54031 */ {(13<<2)|2,{78,65,0}}, +/* 54032 */ {(13<<2)|2,{78,95,0}}, +/* 54033 */ {(13<<2)|2,{78,95,0}}, +/* 54034 */ {(13<<2)|2,{78,95,0}}, +/* 54035 */ {(13<<2)|2,{78,95,0}}, +/* 54036 */ {(13<<2)|2,{78,95,0}}, +/* 54037 */ {(13<<2)|2,{78,95,0}}, +/* 54038 */ {(13<<2)|2,{78,95,0}}, +/* 54039 */ {(13<<2)|2,{78,95,0}}, +/* 54040 */ {(13<<2)|2,{78,98,0}}, +/* 54041 */ {(13<<2)|2,{78,98,0}}, +/* 54042 */ {(13<<2)|2,{78,98,0}}, +/* 54043 */ {(13<<2)|2,{78,98,0}}, +/* 54044 */ {(13<<2)|2,{78,98,0}}, +/* 54045 */ {(13<<2)|2,{78,98,0}}, +/* 54046 */ {(13<<2)|2,{78,98,0}}, +/* 54047 */ {(13<<2)|2,{78,98,0}}, +/* 54048 */ {(13<<2)|2,{78,100,0}}, +/* 54049 */ {(13<<2)|2,{78,100,0}}, +/* 54050 */ {(13<<2)|2,{78,100,0}}, +/* 54051 */ {(13<<2)|2,{78,100,0}}, +/* 54052 */ {(13<<2)|2,{78,100,0}}, +/* 54053 */ {(13<<2)|2,{78,100,0}}, +/* 54054 */ {(13<<2)|2,{78,100,0}}, +/* 54055 */ {(13<<2)|2,{78,100,0}}, +/* 54056 */ {(13<<2)|2,{78,102,0}}, +/* 54057 */ {(13<<2)|2,{78,102,0}}, +/* 54058 */ {(13<<2)|2,{78,102,0}}, +/* 54059 */ {(13<<2)|2,{78,102,0}}, +/* 54060 */ {(13<<2)|2,{78,102,0}}, +/* 54061 */ {(13<<2)|2,{78,102,0}}, +/* 54062 */ {(13<<2)|2,{78,102,0}}, +/* 54063 */ {(13<<2)|2,{78,102,0}}, +/* 54064 */ {(13<<2)|2,{78,103,0}}, +/* 54065 */ {(13<<2)|2,{78,103,0}}, +/* 54066 */ {(13<<2)|2,{78,103,0}}, +/* 54067 */ {(13<<2)|2,{78,103,0}}, +/* 54068 */ {(13<<2)|2,{78,103,0}}, +/* 54069 */ {(13<<2)|2,{78,103,0}}, +/* 54070 */ {(13<<2)|2,{78,103,0}}, +/* 54071 */ {(13<<2)|2,{78,103,0}}, +/* 54072 */ {(13<<2)|2,{78,104,0}}, +/* 54073 */ {(13<<2)|2,{78,104,0}}, +/* 54074 */ {(13<<2)|2,{78,104,0}}, +/* 54075 */ {(13<<2)|2,{78,104,0}}, +/* 54076 */ {(13<<2)|2,{78,104,0}}, +/* 54077 */ {(13<<2)|2,{78,104,0}}, +/* 54078 */ {(13<<2)|2,{78,104,0}}, +/* 54079 */ {(13<<2)|2,{78,104,0}}, +/* 54080 */ {(13<<2)|2,{78,108,0}}, +/* 54081 */ {(13<<2)|2,{78,108,0}}, +/* 54082 */ {(13<<2)|2,{78,108,0}}, +/* 54083 */ {(13<<2)|2,{78,108,0}}, +/* 54084 */ {(13<<2)|2,{78,108,0}}, +/* 54085 */ {(13<<2)|2,{78,108,0}}, +/* 54086 */ {(13<<2)|2,{78,108,0}}, +/* 54087 */ {(13<<2)|2,{78,108,0}}, +/* 54088 */ {(13<<2)|2,{78,109,0}}, +/* 54089 */ {(13<<2)|2,{78,109,0}}, +/* 54090 */ {(13<<2)|2,{78,109,0}}, +/* 54091 */ {(13<<2)|2,{78,109,0}}, +/* 54092 */ {(13<<2)|2,{78,109,0}}, +/* 54093 */ {(13<<2)|2,{78,109,0}}, +/* 54094 */ {(13<<2)|2,{78,109,0}}, +/* 54095 */ {(13<<2)|2,{78,109,0}}, +/* 54096 */ {(13<<2)|2,{78,110,0}}, +/* 54097 */ {(13<<2)|2,{78,110,0}}, +/* 54098 */ {(13<<2)|2,{78,110,0}}, +/* 54099 */ {(13<<2)|2,{78,110,0}}, +/* 54100 */ {(13<<2)|2,{78,110,0}}, +/* 54101 */ {(13<<2)|2,{78,110,0}}, +/* 54102 */ {(13<<2)|2,{78,110,0}}, +/* 54103 */ {(13<<2)|2,{78,110,0}}, +/* 54104 */ {(13<<2)|2,{78,112,0}}, +/* 54105 */ {(13<<2)|2,{78,112,0}}, +/* 54106 */ {(13<<2)|2,{78,112,0}}, +/* 54107 */ {(13<<2)|2,{78,112,0}}, +/* 54108 */ {(13<<2)|2,{78,112,0}}, +/* 54109 */ {(13<<2)|2,{78,112,0}}, +/* 54110 */ {(13<<2)|2,{78,112,0}}, +/* 54111 */ {(13<<2)|2,{78,112,0}}, +/* 54112 */ {(13<<2)|2,{78,114,0}}, +/* 54113 */ {(13<<2)|2,{78,114,0}}, +/* 54114 */ {(13<<2)|2,{78,114,0}}, +/* 54115 */ {(13<<2)|2,{78,114,0}}, +/* 54116 */ {(13<<2)|2,{78,114,0}}, +/* 54117 */ {(13<<2)|2,{78,114,0}}, +/* 54118 */ {(13<<2)|2,{78,114,0}}, +/* 54119 */ {(13<<2)|2,{78,114,0}}, +/* 54120 */ {(13<<2)|2,{78,117,0}}, +/* 54121 */ {(13<<2)|2,{78,117,0}}, +/* 54122 */ {(13<<2)|2,{78,117,0}}, +/* 54123 */ {(13<<2)|2,{78,117,0}}, +/* 54124 */ {(13<<2)|2,{78,117,0}}, +/* 54125 */ {(13<<2)|2,{78,117,0}}, +/* 54126 */ {(13<<2)|2,{78,117,0}}, +/* 54127 */ {(13<<2)|2,{78,117,0}}, +/* 54128 */ {(14<<2)|2,{78,58,0}}, +/* 54129 */ {(14<<2)|2,{78,58,0}}, +/* 54130 */ {(14<<2)|2,{78,58,0}}, +/* 54131 */ {(14<<2)|2,{78,58,0}}, +/* 54132 */ {(14<<2)|2,{78,66,0}}, +/* 54133 */ {(14<<2)|2,{78,66,0}}, +/* 54134 */ {(14<<2)|2,{78,66,0}}, +/* 54135 */ {(14<<2)|2,{78,66,0}}, +/* 54136 */ {(14<<2)|2,{78,67,0}}, +/* 54137 */ {(14<<2)|2,{78,67,0}}, +/* 54138 */ {(14<<2)|2,{78,67,0}}, +/* 54139 */ {(14<<2)|2,{78,67,0}}, +/* 54140 */ {(14<<2)|2,{78,68,0}}, +/* 54141 */ {(14<<2)|2,{78,68,0}}, +/* 54142 */ {(14<<2)|2,{78,68,0}}, +/* 54143 */ {(14<<2)|2,{78,68,0}}, +/* 54144 */ {(14<<2)|2,{78,69,0}}, +/* 54145 */ {(14<<2)|2,{78,69,0}}, +/* 54146 */ {(14<<2)|2,{78,69,0}}, +/* 54147 */ {(14<<2)|2,{78,69,0}}, +/* 54148 */ {(14<<2)|2,{78,70,0}}, +/* 54149 */ {(14<<2)|2,{78,70,0}}, +/* 54150 */ {(14<<2)|2,{78,70,0}}, +/* 54151 */ {(14<<2)|2,{78,70,0}}, +/* 54152 */ {(14<<2)|2,{78,71,0}}, +/* 54153 */ {(14<<2)|2,{78,71,0}}, +/* 54154 */ {(14<<2)|2,{78,71,0}}, +/* 54155 */ {(14<<2)|2,{78,71,0}}, +/* 54156 */ {(14<<2)|2,{78,72,0}}, +/* 54157 */ {(14<<2)|2,{78,72,0}}, +/* 54158 */ {(14<<2)|2,{78,72,0}}, +/* 54159 */ {(14<<2)|2,{78,72,0}}, +/* 54160 */ {(14<<2)|2,{78,73,0}}, +/* 54161 */ {(14<<2)|2,{78,73,0}}, +/* 54162 */ {(14<<2)|2,{78,73,0}}, +/* 54163 */ {(14<<2)|2,{78,73,0}}, +/* 54164 */ {(14<<2)|2,{78,74,0}}, +/* 54165 */ {(14<<2)|2,{78,74,0}}, +/* 54166 */ {(14<<2)|2,{78,74,0}}, +/* 54167 */ {(14<<2)|2,{78,74,0}}, +/* 54168 */ {(14<<2)|2,{78,75,0}}, +/* 54169 */ {(14<<2)|2,{78,75,0}}, +/* 54170 */ {(14<<2)|2,{78,75,0}}, +/* 54171 */ {(14<<2)|2,{78,75,0}}, +/* 54172 */ {(14<<2)|2,{78,76,0}}, +/* 54173 */ {(14<<2)|2,{78,76,0}}, +/* 54174 */ {(14<<2)|2,{78,76,0}}, +/* 54175 */ {(14<<2)|2,{78,76,0}}, +/* 54176 */ {(14<<2)|2,{78,77,0}}, +/* 54177 */ {(14<<2)|2,{78,77,0}}, +/* 54178 */ {(14<<2)|2,{78,77,0}}, +/* 54179 */ {(14<<2)|2,{78,77,0}}, +/* 54180 */ {(14<<2)|2,{78,78,0}}, +/* 54181 */ {(14<<2)|2,{78,78,0}}, +/* 54182 */ {(14<<2)|2,{78,78,0}}, +/* 54183 */ {(14<<2)|2,{78,78,0}}, +/* 54184 */ {(14<<2)|2,{78,79,0}}, +/* 54185 */ {(14<<2)|2,{78,79,0}}, +/* 54186 */ {(14<<2)|2,{78,79,0}}, +/* 54187 */ {(14<<2)|2,{78,79,0}}, +/* 54188 */ {(14<<2)|2,{78,80,0}}, +/* 54189 */ {(14<<2)|2,{78,80,0}}, +/* 54190 */ {(14<<2)|2,{78,80,0}}, +/* 54191 */ {(14<<2)|2,{78,80,0}}, +/* 54192 */ {(14<<2)|2,{78,81,0}}, +/* 54193 */ {(14<<2)|2,{78,81,0}}, +/* 54194 */ {(14<<2)|2,{78,81,0}}, +/* 54195 */ {(14<<2)|2,{78,81,0}}, +/* 54196 */ {(14<<2)|2,{78,82,0}}, +/* 54197 */ {(14<<2)|2,{78,82,0}}, +/* 54198 */ {(14<<2)|2,{78,82,0}}, +/* 54199 */ {(14<<2)|2,{78,82,0}}, +/* 54200 */ {(14<<2)|2,{78,83,0}}, +/* 54201 */ {(14<<2)|2,{78,83,0}}, +/* 54202 */ {(14<<2)|2,{78,83,0}}, +/* 54203 */ {(14<<2)|2,{78,83,0}}, +/* 54204 */ {(14<<2)|2,{78,84,0}}, +/* 54205 */ {(14<<2)|2,{78,84,0}}, +/* 54206 */ {(14<<2)|2,{78,84,0}}, +/* 54207 */ {(14<<2)|2,{78,84,0}}, +/* 54208 */ {(14<<2)|2,{78,85,0}}, +/* 54209 */ {(14<<2)|2,{78,85,0}}, +/* 54210 */ {(14<<2)|2,{78,85,0}}, +/* 54211 */ {(14<<2)|2,{78,85,0}}, +/* 54212 */ {(14<<2)|2,{78,86,0}}, +/* 54213 */ {(14<<2)|2,{78,86,0}}, +/* 54214 */ {(14<<2)|2,{78,86,0}}, +/* 54215 */ {(14<<2)|2,{78,86,0}}, +/* 54216 */ {(14<<2)|2,{78,87,0}}, +/* 54217 */ {(14<<2)|2,{78,87,0}}, +/* 54218 */ {(14<<2)|2,{78,87,0}}, +/* 54219 */ {(14<<2)|2,{78,87,0}}, +/* 54220 */ {(14<<2)|2,{78,89,0}}, +/* 54221 */ {(14<<2)|2,{78,89,0}}, +/* 54222 */ {(14<<2)|2,{78,89,0}}, +/* 54223 */ {(14<<2)|2,{78,89,0}}, +/* 54224 */ {(14<<2)|2,{78,106,0}}, +/* 54225 */ {(14<<2)|2,{78,106,0}}, +/* 54226 */ {(14<<2)|2,{78,106,0}}, +/* 54227 */ {(14<<2)|2,{78,106,0}}, +/* 54228 */ {(14<<2)|2,{78,107,0}}, +/* 54229 */ {(14<<2)|2,{78,107,0}}, +/* 54230 */ {(14<<2)|2,{78,107,0}}, +/* 54231 */ {(14<<2)|2,{78,107,0}}, +/* 54232 */ {(14<<2)|2,{78,113,0}}, +/* 54233 */ {(14<<2)|2,{78,113,0}}, +/* 54234 */ {(14<<2)|2,{78,113,0}}, +/* 54235 */ {(14<<2)|2,{78,113,0}}, +/* 54236 */ {(14<<2)|2,{78,118,0}}, +/* 54237 */ {(14<<2)|2,{78,118,0}}, +/* 54238 */ {(14<<2)|2,{78,118,0}}, +/* 54239 */ {(14<<2)|2,{78,118,0}}, +/* 54240 */ {(14<<2)|2,{78,119,0}}, +/* 54241 */ {(14<<2)|2,{78,119,0}}, +/* 54242 */ {(14<<2)|2,{78,119,0}}, +/* 54243 */ {(14<<2)|2,{78,119,0}}, +/* 54244 */ {(14<<2)|2,{78,120,0}}, +/* 54245 */ {(14<<2)|2,{78,120,0}}, +/* 54246 */ {(14<<2)|2,{78,120,0}}, +/* 54247 */ {(14<<2)|2,{78,120,0}}, +/* 54248 */ {(14<<2)|2,{78,121,0}}, +/* 54249 */ {(14<<2)|2,{78,121,0}}, +/* 54250 */ {(14<<2)|2,{78,121,0}}, +/* 54251 */ {(14<<2)|2,{78,121,0}}, +/* 54252 */ {(14<<2)|2,{78,122,0}}, +/* 54253 */ {(14<<2)|2,{78,122,0}}, +/* 54254 */ {(14<<2)|2,{78,122,0}}, +/* 54255 */ {(14<<2)|2,{78,122,0}}, +/* 54256 */ {(15<<2)|2,{78,38,0}}, +/* 54257 */ {(15<<2)|2,{78,38,0}}, +/* 54258 */ {(15<<2)|2,{78,42,0}}, +/* 54259 */ {(15<<2)|2,{78,42,0}}, +/* 54260 */ {(15<<2)|2,{78,44,0}}, +/* 54261 */ {(15<<2)|2,{78,44,0}}, +/* 54262 */ {(15<<2)|2,{78,59,0}}, +/* 54263 */ {(15<<2)|2,{78,59,0}}, +/* 54264 */ {(15<<2)|2,{78,88,0}}, +/* 54265 */ {(15<<2)|2,{78,88,0}}, +/* 54266 */ {(15<<2)|2,{78,90,0}}, +/* 54267 */ {(15<<2)|2,{78,90,0}}, +/* 54268 */ {(7<<2)|1,{78,0,0}}, +/* 54269 */ {(7<<2)|1,{78,0,0}}, +/* 54270 */ {(7<<2)|1,{78,0,0}}, +/* 54271 */ {(7<<2)|1,{78,0,0}}, +/* 54272 */ {(12<<2)|2,{79,48,0}}, +/* 54273 */ {(12<<2)|2,{79,48,0}}, +/* 54274 */ {(12<<2)|2,{79,48,0}}, +/* 54275 */ {(12<<2)|2,{79,48,0}}, +/* 54276 */ {(12<<2)|2,{79,48,0}}, +/* 54277 */ {(12<<2)|2,{79,48,0}}, +/* 54278 */ {(12<<2)|2,{79,48,0}}, +/* 54279 */ {(12<<2)|2,{79,48,0}}, +/* 54280 */ {(12<<2)|2,{79,48,0}}, +/* 54281 */ {(12<<2)|2,{79,48,0}}, +/* 54282 */ {(12<<2)|2,{79,48,0}}, +/* 54283 */ {(12<<2)|2,{79,48,0}}, +/* 54284 */ {(12<<2)|2,{79,48,0}}, +/* 54285 */ {(12<<2)|2,{79,48,0}}, +/* 54286 */ {(12<<2)|2,{79,48,0}}, +/* 54287 */ {(12<<2)|2,{79,48,0}}, +/* 54288 */ {(12<<2)|2,{79,49,0}}, +/* 54289 */ {(12<<2)|2,{79,49,0}}, +/* 54290 */ {(12<<2)|2,{79,49,0}}, +/* 54291 */ {(12<<2)|2,{79,49,0}}, +/* 54292 */ {(12<<2)|2,{79,49,0}}, +/* 54293 */ {(12<<2)|2,{79,49,0}}, +/* 54294 */ {(12<<2)|2,{79,49,0}}, +/* 54295 */ {(12<<2)|2,{79,49,0}}, +/* 54296 */ {(12<<2)|2,{79,49,0}}, +/* 54297 */ {(12<<2)|2,{79,49,0}}, +/* 54298 */ {(12<<2)|2,{79,49,0}}, +/* 54299 */ {(12<<2)|2,{79,49,0}}, +/* 54300 */ {(12<<2)|2,{79,49,0}}, +/* 54301 */ {(12<<2)|2,{79,49,0}}, +/* 54302 */ {(12<<2)|2,{79,49,0}}, +/* 54303 */ {(12<<2)|2,{79,49,0}}, +/* 54304 */ {(12<<2)|2,{79,50,0}}, +/* 54305 */ {(12<<2)|2,{79,50,0}}, +/* 54306 */ {(12<<2)|2,{79,50,0}}, +/* 54307 */ {(12<<2)|2,{79,50,0}}, +/* 54308 */ {(12<<2)|2,{79,50,0}}, +/* 54309 */ {(12<<2)|2,{79,50,0}}, +/* 54310 */ {(12<<2)|2,{79,50,0}}, +/* 54311 */ {(12<<2)|2,{79,50,0}}, +/* 54312 */ {(12<<2)|2,{79,50,0}}, +/* 54313 */ {(12<<2)|2,{79,50,0}}, +/* 54314 */ {(12<<2)|2,{79,50,0}}, +/* 54315 */ {(12<<2)|2,{79,50,0}}, +/* 54316 */ {(12<<2)|2,{79,50,0}}, +/* 54317 */ {(12<<2)|2,{79,50,0}}, +/* 54318 */ {(12<<2)|2,{79,50,0}}, +/* 54319 */ {(12<<2)|2,{79,50,0}}, +/* 54320 */ {(12<<2)|2,{79,97,0}}, +/* 54321 */ {(12<<2)|2,{79,97,0}}, +/* 54322 */ {(12<<2)|2,{79,97,0}}, +/* 54323 */ {(12<<2)|2,{79,97,0}}, +/* 54324 */ {(12<<2)|2,{79,97,0}}, +/* 54325 */ {(12<<2)|2,{79,97,0}}, +/* 54326 */ {(12<<2)|2,{79,97,0}}, +/* 54327 */ {(12<<2)|2,{79,97,0}}, +/* 54328 */ {(12<<2)|2,{79,97,0}}, +/* 54329 */ {(12<<2)|2,{79,97,0}}, +/* 54330 */ {(12<<2)|2,{79,97,0}}, +/* 54331 */ {(12<<2)|2,{79,97,0}}, +/* 54332 */ {(12<<2)|2,{79,97,0}}, +/* 54333 */ {(12<<2)|2,{79,97,0}}, +/* 54334 */ {(12<<2)|2,{79,97,0}}, +/* 54335 */ {(12<<2)|2,{79,97,0}}, +/* 54336 */ {(12<<2)|2,{79,99,0}}, +/* 54337 */ {(12<<2)|2,{79,99,0}}, +/* 54338 */ {(12<<2)|2,{79,99,0}}, +/* 54339 */ {(12<<2)|2,{79,99,0}}, +/* 54340 */ {(12<<2)|2,{79,99,0}}, +/* 54341 */ {(12<<2)|2,{79,99,0}}, +/* 54342 */ {(12<<2)|2,{79,99,0}}, +/* 54343 */ {(12<<2)|2,{79,99,0}}, +/* 54344 */ {(12<<2)|2,{79,99,0}}, +/* 54345 */ {(12<<2)|2,{79,99,0}}, +/* 54346 */ {(12<<2)|2,{79,99,0}}, +/* 54347 */ {(12<<2)|2,{79,99,0}}, +/* 54348 */ {(12<<2)|2,{79,99,0}}, +/* 54349 */ {(12<<2)|2,{79,99,0}}, +/* 54350 */ {(12<<2)|2,{79,99,0}}, +/* 54351 */ {(12<<2)|2,{79,99,0}}, +/* 54352 */ {(12<<2)|2,{79,101,0}}, +/* 54353 */ {(12<<2)|2,{79,101,0}}, +/* 54354 */ {(12<<2)|2,{79,101,0}}, +/* 54355 */ {(12<<2)|2,{79,101,0}}, +/* 54356 */ {(12<<2)|2,{79,101,0}}, +/* 54357 */ {(12<<2)|2,{79,101,0}}, +/* 54358 */ {(12<<2)|2,{79,101,0}}, +/* 54359 */ {(12<<2)|2,{79,101,0}}, +/* 54360 */ {(12<<2)|2,{79,101,0}}, +/* 54361 */ {(12<<2)|2,{79,101,0}}, +/* 54362 */ {(12<<2)|2,{79,101,0}}, +/* 54363 */ {(12<<2)|2,{79,101,0}}, +/* 54364 */ {(12<<2)|2,{79,101,0}}, +/* 54365 */ {(12<<2)|2,{79,101,0}}, +/* 54366 */ {(12<<2)|2,{79,101,0}}, +/* 54367 */ {(12<<2)|2,{79,101,0}}, +/* 54368 */ {(12<<2)|2,{79,105,0}}, +/* 54369 */ {(12<<2)|2,{79,105,0}}, +/* 54370 */ {(12<<2)|2,{79,105,0}}, +/* 54371 */ {(12<<2)|2,{79,105,0}}, +/* 54372 */ {(12<<2)|2,{79,105,0}}, +/* 54373 */ {(12<<2)|2,{79,105,0}}, +/* 54374 */ {(12<<2)|2,{79,105,0}}, +/* 54375 */ {(12<<2)|2,{79,105,0}}, +/* 54376 */ {(12<<2)|2,{79,105,0}}, +/* 54377 */ {(12<<2)|2,{79,105,0}}, +/* 54378 */ {(12<<2)|2,{79,105,0}}, +/* 54379 */ {(12<<2)|2,{79,105,0}}, +/* 54380 */ {(12<<2)|2,{79,105,0}}, +/* 54381 */ {(12<<2)|2,{79,105,0}}, +/* 54382 */ {(12<<2)|2,{79,105,0}}, +/* 54383 */ {(12<<2)|2,{79,105,0}}, +/* 54384 */ {(12<<2)|2,{79,111,0}}, +/* 54385 */ {(12<<2)|2,{79,111,0}}, +/* 54386 */ {(12<<2)|2,{79,111,0}}, +/* 54387 */ {(12<<2)|2,{79,111,0}}, +/* 54388 */ {(12<<2)|2,{79,111,0}}, +/* 54389 */ {(12<<2)|2,{79,111,0}}, +/* 54390 */ {(12<<2)|2,{79,111,0}}, +/* 54391 */ {(12<<2)|2,{79,111,0}}, +/* 54392 */ {(12<<2)|2,{79,111,0}}, +/* 54393 */ {(12<<2)|2,{79,111,0}}, +/* 54394 */ {(12<<2)|2,{79,111,0}}, +/* 54395 */ {(12<<2)|2,{79,111,0}}, +/* 54396 */ {(12<<2)|2,{79,111,0}}, +/* 54397 */ {(12<<2)|2,{79,111,0}}, +/* 54398 */ {(12<<2)|2,{79,111,0}}, +/* 54399 */ {(12<<2)|2,{79,111,0}}, +/* 54400 */ {(12<<2)|2,{79,115,0}}, +/* 54401 */ {(12<<2)|2,{79,115,0}}, +/* 54402 */ {(12<<2)|2,{79,115,0}}, +/* 54403 */ {(12<<2)|2,{79,115,0}}, +/* 54404 */ {(12<<2)|2,{79,115,0}}, +/* 54405 */ {(12<<2)|2,{79,115,0}}, +/* 54406 */ {(12<<2)|2,{79,115,0}}, +/* 54407 */ {(12<<2)|2,{79,115,0}}, +/* 54408 */ {(12<<2)|2,{79,115,0}}, +/* 54409 */ {(12<<2)|2,{79,115,0}}, +/* 54410 */ {(12<<2)|2,{79,115,0}}, +/* 54411 */ {(12<<2)|2,{79,115,0}}, +/* 54412 */ {(12<<2)|2,{79,115,0}}, +/* 54413 */ {(12<<2)|2,{79,115,0}}, +/* 54414 */ {(12<<2)|2,{79,115,0}}, +/* 54415 */ {(12<<2)|2,{79,115,0}}, +/* 54416 */ {(12<<2)|2,{79,116,0}}, +/* 54417 */ {(12<<2)|2,{79,116,0}}, +/* 54418 */ {(12<<2)|2,{79,116,0}}, +/* 54419 */ {(12<<2)|2,{79,116,0}}, +/* 54420 */ {(12<<2)|2,{79,116,0}}, +/* 54421 */ {(12<<2)|2,{79,116,0}}, +/* 54422 */ {(12<<2)|2,{79,116,0}}, +/* 54423 */ {(12<<2)|2,{79,116,0}}, +/* 54424 */ {(12<<2)|2,{79,116,0}}, +/* 54425 */ {(12<<2)|2,{79,116,0}}, +/* 54426 */ {(12<<2)|2,{79,116,0}}, +/* 54427 */ {(12<<2)|2,{79,116,0}}, +/* 54428 */ {(12<<2)|2,{79,116,0}}, +/* 54429 */ {(12<<2)|2,{79,116,0}}, +/* 54430 */ {(12<<2)|2,{79,116,0}}, +/* 54431 */ {(12<<2)|2,{79,116,0}}, +/* 54432 */ {(13<<2)|2,{79,32,0}}, +/* 54433 */ {(13<<2)|2,{79,32,0}}, +/* 54434 */ {(13<<2)|2,{79,32,0}}, +/* 54435 */ {(13<<2)|2,{79,32,0}}, +/* 54436 */ {(13<<2)|2,{79,32,0}}, +/* 54437 */ {(13<<2)|2,{79,32,0}}, +/* 54438 */ {(13<<2)|2,{79,32,0}}, +/* 54439 */ {(13<<2)|2,{79,32,0}}, +/* 54440 */ {(13<<2)|2,{79,37,0}}, +/* 54441 */ {(13<<2)|2,{79,37,0}}, +/* 54442 */ {(13<<2)|2,{79,37,0}}, +/* 54443 */ {(13<<2)|2,{79,37,0}}, +/* 54444 */ {(13<<2)|2,{79,37,0}}, +/* 54445 */ {(13<<2)|2,{79,37,0}}, +/* 54446 */ {(13<<2)|2,{79,37,0}}, +/* 54447 */ {(13<<2)|2,{79,37,0}}, +/* 54448 */ {(13<<2)|2,{79,45,0}}, +/* 54449 */ {(13<<2)|2,{79,45,0}}, +/* 54450 */ {(13<<2)|2,{79,45,0}}, +/* 54451 */ {(13<<2)|2,{79,45,0}}, +/* 54452 */ {(13<<2)|2,{79,45,0}}, +/* 54453 */ {(13<<2)|2,{79,45,0}}, +/* 54454 */ {(13<<2)|2,{79,45,0}}, +/* 54455 */ {(13<<2)|2,{79,45,0}}, +/* 54456 */ {(13<<2)|2,{79,46,0}}, +/* 54457 */ {(13<<2)|2,{79,46,0}}, +/* 54458 */ {(13<<2)|2,{79,46,0}}, +/* 54459 */ {(13<<2)|2,{79,46,0}}, +/* 54460 */ {(13<<2)|2,{79,46,0}}, +/* 54461 */ {(13<<2)|2,{79,46,0}}, +/* 54462 */ {(13<<2)|2,{79,46,0}}, +/* 54463 */ {(13<<2)|2,{79,46,0}}, +/* 54464 */ {(13<<2)|2,{79,47,0}}, +/* 54465 */ {(13<<2)|2,{79,47,0}}, +/* 54466 */ {(13<<2)|2,{79,47,0}}, +/* 54467 */ {(13<<2)|2,{79,47,0}}, +/* 54468 */ {(13<<2)|2,{79,47,0}}, +/* 54469 */ {(13<<2)|2,{79,47,0}}, +/* 54470 */ {(13<<2)|2,{79,47,0}}, +/* 54471 */ {(13<<2)|2,{79,47,0}}, +/* 54472 */ {(13<<2)|2,{79,51,0}}, +/* 54473 */ {(13<<2)|2,{79,51,0}}, +/* 54474 */ {(13<<2)|2,{79,51,0}}, +/* 54475 */ {(13<<2)|2,{79,51,0}}, +/* 54476 */ {(13<<2)|2,{79,51,0}}, +/* 54477 */ {(13<<2)|2,{79,51,0}}, +/* 54478 */ {(13<<2)|2,{79,51,0}}, +/* 54479 */ {(13<<2)|2,{79,51,0}}, +/* 54480 */ {(13<<2)|2,{79,52,0}}, +/* 54481 */ {(13<<2)|2,{79,52,0}}, +/* 54482 */ {(13<<2)|2,{79,52,0}}, +/* 54483 */ {(13<<2)|2,{79,52,0}}, +/* 54484 */ {(13<<2)|2,{79,52,0}}, +/* 54485 */ {(13<<2)|2,{79,52,0}}, +/* 54486 */ {(13<<2)|2,{79,52,0}}, +/* 54487 */ {(13<<2)|2,{79,52,0}}, +/* 54488 */ {(13<<2)|2,{79,53,0}}, +/* 54489 */ {(13<<2)|2,{79,53,0}}, +/* 54490 */ {(13<<2)|2,{79,53,0}}, +/* 54491 */ {(13<<2)|2,{79,53,0}}, +/* 54492 */ {(13<<2)|2,{79,53,0}}, +/* 54493 */ {(13<<2)|2,{79,53,0}}, +/* 54494 */ {(13<<2)|2,{79,53,0}}, +/* 54495 */ {(13<<2)|2,{79,53,0}}, +/* 54496 */ {(13<<2)|2,{79,54,0}}, +/* 54497 */ {(13<<2)|2,{79,54,0}}, +/* 54498 */ {(13<<2)|2,{79,54,0}}, +/* 54499 */ {(13<<2)|2,{79,54,0}}, +/* 54500 */ {(13<<2)|2,{79,54,0}}, +/* 54501 */ {(13<<2)|2,{79,54,0}}, +/* 54502 */ {(13<<2)|2,{79,54,0}}, +/* 54503 */ {(13<<2)|2,{79,54,0}}, +/* 54504 */ {(13<<2)|2,{79,55,0}}, +/* 54505 */ {(13<<2)|2,{79,55,0}}, +/* 54506 */ {(13<<2)|2,{79,55,0}}, +/* 54507 */ {(13<<2)|2,{79,55,0}}, +/* 54508 */ {(13<<2)|2,{79,55,0}}, +/* 54509 */ {(13<<2)|2,{79,55,0}}, +/* 54510 */ {(13<<2)|2,{79,55,0}}, +/* 54511 */ {(13<<2)|2,{79,55,0}}, +/* 54512 */ {(13<<2)|2,{79,56,0}}, +/* 54513 */ {(13<<2)|2,{79,56,0}}, +/* 54514 */ {(13<<2)|2,{79,56,0}}, +/* 54515 */ {(13<<2)|2,{79,56,0}}, +/* 54516 */ {(13<<2)|2,{79,56,0}}, +/* 54517 */ {(13<<2)|2,{79,56,0}}, +/* 54518 */ {(13<<2)|2,{79,56,0}}, +/* 54519 */ {(13<<2)|2,{79,56,0}}, +/* 54520 */ {(13<<2)|2,{79,57,0}}, +/* 54521 */ {(13<<2)|2,{79,57,0}}, +/* 54522 */ {(13<<2)|2,{79,57,0}}, +/* 54523 */ {(13<<2)|2,{79,57,0}}, +/* 54524 */ {(13<<2)|2,{79,57,0}}, +/* 54525 */ {(13<<2)|2,{79,57,0}}, +/* 54526 */ {(13<<2)|2,{79,57,0}}, +/* 54527 */ {(13<<2)|2,{79,57,0}}, +/* 54528 */ {(13<<2)|2,{79,61,0}}, +/* 54529 */ {(13<<2)|2,{79,61,0}}, +/* 54530 */ {(13<<2)|2,{79,61,0}}, +/* 54531 */ {(13<<2)|2,{79,61,0}}, +/* 54532 */ {(13<<2)|2,{79,61,0}}, +/* 54533 */ {(13<<2)|2,{79,61,0}}, +/* 54534 */ {(13<<2)|2,{79,61,0}}, +/* 54535 */ {(13<<2)|2,{79,61,0}}, +/* 54536 */ {(13<<2)|2,{79,65,0}}, +/* 54537 */ {(13<<2)|2,{79,65,0}}, +/* 54538 */ {(13<<2)|2,{79,65,0}}, +/* 54539 */ {(13<<2)|2,{79,65,0}}, +/* 54540 */ {(13<<2)|2,{79,65,0}}, +/* 54541 */ {(13<<2)|2,{79,65,0}}, +/* 54542 */ {(13<<2)|2,{79,65,0}}, +/* 54543 */ {(13<<2)|2,{79,65,0}}, +/* 54544 */ {(13<<2)|2,{79,95,0}}, +/* 54545 */ {(13<<2)|2,{79,95,0}}, +/* 54546 */ {(13<<2)|2,{79,95,0}}, +/* 54547 */ {(13<<2)|2,{79,95,0}}, +/* 54548 */ {(13<<2)|2,{79,95,0}}, +/* 54549 */ {(13<<2)|2,{79,95,0}}, +/* 54550 */ {(13<<2)|2,{79,95,0}}, +/* 54551 */ {(13<<2)|2,{79,95,0}}, +/* 54552 */ {(13<<2)|2,{79,98,0}}, +/* 54553 */ {(13<<2)|2,{79,98,0}}, +/* 54554 */ {(13<<2)|2,{79,98,0}}, +/* 54555 */ {(13<<2)|2,{79,98,0}}, +/* 54556 */ {(13<<2)|2,{79,98,0}}, +/* 54557 */ {(13<<2)|2,{79,98,0}}, +/* 54558 */ {(13<<2)|2,{79,98,0}}, +/* 54559 */ {(13<<2)|2,{79,98,0}}, +/* 54560 */ {(13<<2)|2,{79,100,0}}, +/* 54561 */ {(13<<2)|2,{79,100,0}}, +/* 54562 */ {(13<<2)|2,{79,100,0}}, +/* 54563 */ {(13<<2)|2,{79,100,0}}, +/* 54564 */ {(13<<2)|2,{79,100,0}}, +/* 54565 */ {(13<<2)|2,{79,100,0}}, +/* 54566 */ {(13<<2)|2,{79,100,0}}, +/* 54567 */ {(13<<2)|2,{79,100,0}}, +/* 54568 */ {(13<<2)|2,{79,102,0}}, +/* 54569 */ {(13<<2)|2,{79,102,0}}, +/* 54570 */ {(13<<2)|2,{79,102,0}}, +/* 54571 */ {(13<<2)|2,{79,102,0}}, +/* 54572 */ {(13<<2)|2,{79,102,0}}, +/* 54573 */ {(13<<2)|2,{79,102,0}}, +/* 54574 */ {(13<<2)|2,{79,102,0}}, +/* 54575 */ {(13<<2)|2,{79,102,0}}, +/* 54576 */ {(13<<2)|2,{79,103,0}}, +/* 54577 */ {(13<<2)|2,{79,103,0}}, +/* 54578 */ {(13<<2)|2,{79,103,0}}, +/* 54579 */ {(13<<2)|2,{79,103,0}}, +/* 54580 */ {(13<<2)|2,{79,103,0}}, +/* 54581 */ {(13<<2)|2,{79,103,0}}, +/* 54582 */ {(13<<2)|2,{79,103,0}}, +/* 54583 */ {(13<<2)|2,{79,103,0}}, +/* 54584 */ {(13<<2)|2,{79,104,0}}, +/* 54585 */ {(13<<2)|2,{79,104,0}}, +/* 54586 */ {(13<<2)|2,{79,104,0}}, +/* 54587 */ {(13<<2)|2,{79,104,0}}, +/* 54588 */ {(13<<2)|2,{79,104,0}}, +/* 54589 */ {(13<<2)|2,{79,104,0}}, +/* 54590 */ {(13<<2)|2,{79,104,0}}, +/* 54591 */ {(13<<2)|2,{79,104,0}}, +/* 54592 */ {(13<<2)|2,{79,108,0}}, +/* 54593 */ {(13<<2)|2,{79,108,0}}, +/* 54594 */ {(13<<2)|2,{79,108,0}}, +/* 54595 */ {(13<<2)|2,{79,108,0}}, +/* 54596 */ {(13<<2)|2,{79,108,0}}, +/* 54597 */ {(13<<2)|2,{79,108,0}}, +/* 54598 */ {(13<<2)|2,{79,108,0}}, +/* 54599 */ {(13<<2)|2,{79,108,0}}, +/* 54600 */ {(13<<2)|2,{79,109,0}}, +/* 54601 */ {(13<<2)|2,{79,109,0}}, +/* 54602 */ {(13<<2)|2,{79,109,0}}, +/* 54603 */ {(13<<2)|2,{79,109,0}}, +/* 54604 */ {(13<<2)|2,{79,109,0}}, +/* 54605 */ {(13<<2)|2,{79,109,0}}, +/* 54606 */ {(13<<2)|2,{79,109,0}}, +/* 54607 */ {(13<<2)|2,{79,109,0}}, +/* 54608 */ {(13<<2)|2,{79,110,0}}, +/* 54609 */ {(13<<2)|2,{79,110,0}}, +/* 54610 */ {(13<<2)|2,{79,110,0}}, +/* 54611 */ {(13<<2)|2,{79,110,0}}, +/* 54612 */ {(13<<2)|2,{79,110,0}}, +/* 54613 */ {(13<<2)|2,{79,110,0}}, +/* 54614 */ {(13<<2)|2,{79,110,0}}, +/* 54615 */ {(13<<2)|2,{79,110,0}}, +/* 54616 */ {(13<<2)|2,{79,112,0}}, +/* 54617 */ {(13<<2)|2,{79,112,0}}, +/* 54618 */ {(13<<2)|2,{79,112,0}}, +/* 54619 */ {(13<<2)|2,{79,112,0}}, +/* 54620 */ {(13<<2)|2,{79,112,0}}, +/* 54621 */ {(13<<2)|2,{79,112,0}}, +/* 54622 */ {(13<<2)|2,{79,112,0}}, +/* 54623 */ {(13<<2)|2,{79,112,0}}, +/* 54624 */ {(13<<2)|2,{79,114,0}}, +/* 54625 */ {(13<<2)|2,{79,114,0}}, +/* 54626 */ {(13<<2)|2,{79,114,0}}, +/* 54627 */ {(13<<2)|2,{79,114,0}}, +/* 54628 */ {(13<<2)|2,{79,114,0}}, +/* 54629 */ {(13<<2)|2,{79,114,0}}, +/* 54630 */ {(13<<2)|2,{79,114,0}}, +/* 54631 */ {(13<<2)|2,{79,114,0}}, +/* 54632 */ {(13<<2)|2,{79,117,0}}, +/* 54633 */ {(13<<2)|2,{79,117,0}}, +/* 54634 */ {(13<<2)|2,{79,117,0}}, +/* 54635 */ {(13<<2)|2,{79,117,0}}, +/* 54636 */ {(13<<2)|2,{79,117,0}}, +/* 54637 */ {(13<<2)|2,{79,117,0}}, +/* 54638 */ {(13<<2)|2,{79,117,0}}, +/* 54639 */ {(13<<2)|2,{79,117,0}}, +/* 54640 */ {(14<<2)|2,{79,58,0}}, +/* 54641 */ {(14<<2)|2,{79,58,0}}, +/* 54642 */ {(14<<2)|2,{79,58,0}}, +/* 54643 */ {(14<<2)|2,{79,58,0}}, +/* 54644 */ {(14<<2)|2,{79,66,0}}, +/* 54645 */ {(14<<2)|2,{79,66,0}}, +/* 54646 */ {(14<<2)|2,{79,66,0}}, +/* 54647 */ {(14<<2)|2,{79,66,0}}, +/* 54648 */ {(14<<2)|2,{79,67,0}}, +/* 54649 */ {(14<<2)|2,{79,67,0}}, +/* 54650 */ {(14<<2)|2,{79,67,0}}, +/* 54651 */ {(14<<2)|2,{79,67,0}}, +/* 54652 */ {(14<<2)|2,{79,68,0}}, +/* 54653 */ {(14<<2)|2,{79,68,0}}, +/* 54654 */ {(14<<2)|2,{79,68,0}}, +/* 54655 */ {(14<<2)|2,{79,68,0}}, +/* 54656 */ {(14<<2)|2,{79,69,0}}, +/* 54657 */ {(14<<2)|2,{79,69,0}}, +/* 54658 */ {(14<<2)|2,{79,69,0}}, +/* 54659 */ {(14<<2)|2,{79,69,0}}, +/* 54660 */ {(14<<2)|2,{79,70,0}}, +/* 54661 */ {(14<<2)|2,{79,70,0}}, +/* 54662 */ {(14<<2)|2,{79,70,0}}, +/* 54663 */ {(14<<2)|2,{79,70,0}}, +/* 54664 */ {(14<<2)|2,{79,71,0}}, +/* 54665 */ {(14<<2)|2,{79,71,0}}, +/* 54666 */ {(14<<2)|2,{79,71,0}}, +/* 54667 */ {(14<<2)|2,{79,71,0}}, +/* 54668 */ {(14<<2)|2,{79,72,0}}, +/* 54669 */ {(14<<2)|2,{79,72,0}}, +/* 54670 */ {(14<<2)|2,{79,72,0}}, +/* 54671 */ {(14<<2)|2,{79,72,0}}, +/* 54672 */ {(14<<2)|2,{79,73,0}}, +/* 54673 */ {(14<<2)|2,{79,73,0}}, +/* 54674 */ {(14<<2)|2,{79,73,0}}, +/* 54675 */ {(14<<2)|2,{79,73,0}}, +/* 54676 */ {(14<<2)|2,{79,74,0}}, +/* 54677 */ {(14<<2)|2,{79,74,0}}, +/* 54678 */ {(14<<2)|2,{79,74,0}}, +/* 54679 */ {(14<<2)|2,{79,74,0}}, +/* 54680 */ {(14<<2)|2,{79,75,0}}, +/* 54681 */ {(14<<2)|2,{79,75,0}}, +/* 54682 */ {(14<<2)|2,{79,75,0}}, +/* 54683 */ {(14<<2)|2,{79,75,0}}, +/* 54684 */ {(14<<2)|2,{79,76,0}}, +/* 54685 */ {(14<<2)|2,{79,76,0}}, +/* 54686 */ {(14<<2)|2,{79,76,0}}, +/* 54687 */ {(14<<2)|2,{79,76,0}}, +/* 54688 */ {(14<<2)|2,{79,77,0}}, +/* 54689 */ {(14<<2)|2,{79,77,0}}, +/* 54690 */ {(14<<2)|2,{79,77,0}}, +/* 54691 */ {(14<<2)|2,{79,77,0}}, +/* 54692 */ {(14<<2)|2,{79,78,0}}, +/* 54693 */ {(14<<2)|2,{79,78,0}}, +/* 54694 */ {(14<<2)|2,{79,78,0}}, +/* 54695 */ {(14<<2)|2,{79,78,0}}, +/* 54696 */ {(14<<2)|2,{79,79,0}}, +/* 54697 */ {(14<<2)|2,{79,79,0}}, +/* 54698 */ {(14<<2)|2,{79,79,0}}, +/* 54699 */ {(14<<2)|2,{79,79,0}}, +/* 54700 */ {(14<<2)|2,{79,80,0}}, +/* 54701 */ {(14<<2)|2,{79,80,0}}, +/* 54702 */ {(14<<2)|2,{79,80,0}}, +/* 54703 */ {(14<<2)|2,{79,80,0}}, +/* 54704 */ {(14<<2)|2,{79,81,0}}, +/* 54705 */ {(14<<2)|2,{79,81,0}}, +/* 54706 */ {(14<<2)|2,{79,81,0}}, +/* 54707 */ {(14<<2)|2,{79,81,0}}, +/* 54708 */ {(14<<2)|2,{79,82,0}}, +/* 54709 */ {(14<<2)|2,{79,82,0}}, +/* 54710 */ {(14<<2)|2,{79,82,0}}, +/* 54711 */ {(14<<2)|2,{79,82,0}}, +/* 54712 */ {(14<<2)|2,{79,83,0}}, +/* 54713 */ {(14<<2)|2,{79,83,0}}, +/* 54714 */ {(14<<2)|2,{79,83,0}}, +/* 54715 */ {(14<<2)|2,{79,83,0}}, +/* 54716 */ {(14<<2)|2,{79,84,0}}, +/* 54717 */ {(14<<2)|2,{79,84,0}}, +/* 54718 */ {(14<<2)|2,{79,84,0}}, +/* 54719 */ {(14<<2)|2,{79,84,0}}, +/* 54720 */ {(14<<2)|2,{79,85,0}}, +/* 54721 */ {(14<<2)|2,{79,85,0}}, +/* 54722 */ {(14<<2)|2,{79,85,0}}, +/* 54723 */ {(14<<2)|2,{79,85,0}}, +/* 54724 */ {(14<<2)|2,{79,86,0}}, +/* 54725 */ {(14<<2)|2,{79,86,0}}, +/* 54726 */ {(14<<2)|2,{79,86,0}}, +/* 54727 */ {(14<<2)|2,{79,86,0}}, +/* 54728 */ {(14<<2)|2,{79,87,0}}, +/* 54729 */ {(14<<2)|2,{79,87,0}}, +/* 54730 */ {(14<<2)|2,{79,87,0}}, +/* 54731 */ {(14<<2)|2,{79,87,0}}, +/* 54732 */ {(14<<2)|2,{79,89,0}}, +/* 54733 */ {(14<<2)|2,{79,89,0}}, +/* 54734 */ {(14<<2)|2,{79,89,0}}, +/* 54735 */ {(14<<2)|2,{79,89,0}}, +/* 54736 */ {(14<<2)|2,{79,106,0}}, +/* 54737 */ {(14<<2)|2,{79,106,0}}, +/* 54738 */ {(14<<2)|2,{79,106,0}}, +/* 54739 */ {(14<<2)|2,{79,106,0}}, +/* 54740 */ {(14<<2)|2,{79,107,0}}, +/* 54741 */ {(14<<2)|2,{79,107,0}}, +/* 54742 */ {(14<<2)|2,{79,107,0}}, +/* 54743 */ {(14<<2)|2,{79,107,0}}, +/* 54744 */ {(14<<2)|2,{79,113,0}}, +/* 54745 */ {(14<<2)|2,{79,113,0}}, +/* 54746 */ {(14<<2)|2,{79,113,0}}, +/* 54747 */ {(14<<2)|2,{79,113,0}}, +/* 54748 */ {(14<<2)|2,{79,118,0}}, +/* 54749 */ {(14<<2)|2,{79,118,0}}, +/* 54750 */ {(14<<2)|2,{79,118,0}}, +/* 54751 */ {(14<<2)|2,{79,118,0}}, +/* 54752 */ {(14<<2)|2,{79,119,0}}, +/* 54753 */ {(14<<2)|2,{79,119,0}}, +/* 54754 */ {(14<<2)|2,{79,119,0}}, +/* 54755 */ {(14<<2)|2,{79,119,0}}, +/* 54756 */ {(14<<2)|2,{79,120,0}}, +/* 54757 */ {(14<<2)|2,{79,120,0}}, +/* 54758 */ {(14<<2)|2,{79,120,0}}, +/* 54759 */ {(14<<2)|2,{79,120,0}}, +/* 54760 */ {(14<<2)|2,{79,121,0}}, +/* 54761 */ {(14<<2)|2,{79,121,0}}, +/* 54762 */ {(14<<2)|2,{79,121,0}}, +/* 54763 */ {(14<<2)|2,{79,121,0}}, +/* 54764 */ {(14<<2)|2,{79,122,0}}, +/* 54765 */ {(14<<2)|2,{79,122,0}}, +/* 54766 */ {(14<<2)|2,{79,122,0}}, +/* 54767 */ {(14<<2)|2,{79,122,0}}, +/* 54768 */ {(15<<2)|2,{79,38,0}}, +/* 54769 */ {(15<<2)|2,{79,38,0}}, +/* 54770 */ {(15<<2)|2,{79,42,0}}, +/* 54771 */ {(15<<2)|2,{79,42,0}}, +/* 54772 */ {(15<<2)|2,{79,44,0}}, +/* 54773 */ {(15<<2)|2,{79,44,0}}, +/* 54774 */ {(15<<2)|2,{79,59,0}}, +/* 54775 */ {(15<<2)|2,{79,59,0}}, +/* 54776 */ {(15<<2)|2,{79,88,0}}, +/* 54777 */ {(15<<2)|2,{79,88,0}}, +/* 54778 */ {(15<<2)|2,{79,90,0}}, +/* 54779 */ {(15<<2)|2,{79,90,0}}, +/* 54780 */ {(7<<2)|1,{79,0,0}}, +/* 54781 */ {(7<<2)|1,{79,0,0}}, +/* 54782 */ {(7<<2)|1,{79,0,0}}, +/* 54783 */ {(7<<2)|1,{79,0,0}}, +/* 54784 */ {(12<<2)|2,{80,48,0}}, +/* 54785 */ {(12<<2)|2,{80,48,0}}, +/* 54786 */ {(12<<2)|2,{80,48,0}}, +/* 54787 */ {(12<<2)|2,{80,48,0}}, +/* 54788 */ {(12<<2)|2,{80,48,0}}, +/* 54789 */ {(12<<2)|2,{80,48,0}}, +/* 54790 */ {(12<<2)|2,{80,48,0}}, +/* 54791 */ {(12<<2)|2,{80,48,0}}, +/* 54792 */ {(12<<2)|2,{80,48,0}}, +/* 54793 */ {(12<<2)|2,{80,48,0}}, +/* 54794 */ {(12<<2)|2,{80,48,0}}, +/* 54795 */ {(12<<2)|2,{80,48,0}}, +/* 54796 */ {(12<<2)|2,{80,48,0}}, +/* 54797 */ {(12<<2)|2,{80,48,0}}, +/* 54798 */ {(12<<2)|2,{80,48,0}}, +/* 54799 */ {(12<<2)|2,{80,48,0}}, +/* 54800 */ {(12<<2)|2,{80,49,0}}, +/* 54801 */ {(12<<2)|2,{80,49,0}}, +/* 54802 */ {(12<<2)|2,{80,49,0}}, +/* 54803 */ {(12<<2)|2,{80,49,0}}, +/* 54804 */ {(12<<2)|2,{80,49,0}}, +/* 54805 */ {(12<<2)|2,{80,49,0}}, +/* 54806 */ {(12<<2)|2,{80,49,0}}, +/* 54807 */ {(12<<2)|2,{80,49,0}}, +/* 54808 */ {(12<<2)|2,{80,49,0}}, +/* 54809 */ {(12<<2)|2,{80,49,0}}, +/* 54810 */ {(12<<2)|2,{80,49,0}}, +/* 54811 */ {(12<<2)|2,{80,49,0}}, +/* 54812 */ {(12<<2)|2,{80,49,0}}, +/* 54813 */ {(12<<2)|2,{80,49,0}}, +/* 54814 */ {(12<<2)|2,{80,49,0}}, +/* 54815 */ {(12<<2)|2,{80,49,0}}, +/* 54816 */ {(12<<2)|2,{80,50,0}}, +/* 54817 */ {(12<<2)|2,{80,50,0}}, +/* 54818 */ {(12<<2)|2,{80,50,0}}, +/* 54819 */ {(12<<2)|2,{80,50,0}}, +/* 54820 */ {(12<<2)|2,{80,50,0}}, +/* 54821 */ {(12<<2)|2,{80,50,0}}, +/* 54822 */ {(12<<2)|2,{80,50,0}}, +/* 54823 */ {(12<<2)|2,{80,50,0}}, +/* 54824 */ {(12<<2)|2,{80,50,0}}, +/* 54825 */ {(12<<2)|2,{80,50,0}}, +/* 54826 */ {(12<<2)|2,{80,50,0}}, +/* 54827 */ {(12<<2)|2,{80,50,0}}, +/* 54828 */ {(12<<2)|2,{80,50,0}}, +/* 54829 */ {(12<<2)|2,{80,50,0}}, +/* 54830 */ {(12<<2)|2,{80,50,0}}, +/* 54831 */ {(12<<2)|2,{80,50,0}}, +/* 54832 */ {(12<<2)|2,{80,97,0}}, +/* 54833 */ {(12<<2)|2,{80,97,0}}, +/* 54834 */ {(12<<2)|2,{80,97,0}}, +/* 54835 */ {(12<<2)|2,{80,97,0}}, +/* 54836 */ {(12<<2)|2,{80,97,0}}, +/* 54837 */ {(12<<2)|2,{80,97,0}}, +/* 54838 */ {(12<<2)|2,{80,97,0}}, +/* 54839 */ {(12<<2)|2,{80,97,0}}, +/* 54840 */ {(12<<2)|2,{80,97,0}}, +/* 54841 */ {(12<<2)|2,{80,97,0}}, +/* 54842 */ {(12<<2)|2,{80,97,0}}, +/* 54843 */ {(12<<2)|2,{80,97,0}}, +/* 54844 */ {(12<<2)|2,{80,97,0}}, +/* 54845 */ {(12<<2)|2,{80,97,0}}, +/* 54846 */ {(12<<2)|2,{80,97,0}}, +/* 54847 */ {(12<<2)|2,{80,97,0}}, +/* 54848 */ {(12<<2)|2,{80,99,0}}, +/* 54849 */ {(12<<2)|2,{80,99,0}}, +/* 54850 */ {(12<<2)|2,{80,99,0}}, +/* 54851 */ {(12<<2)|2,{80,99,0}}, +/* 54852 */ {(12<<2)|2,{80,99,0}}, +/* 54853 */ {(12<<2)|2,{80,99,0}}, +/* 54854 */ {(12<<2)|2,{80,99,0}}, +/* 54855 */ {(12<<2)|2,{80,99,0}}, +/* 54856 */ {(12<<2)|2,{80,99,0}}, +/* 54857 */ {(12<<2)|2,{80,99,0}}, +/* 54858 */ {(12<<2)|2,{80,99,0}}, +/* 54859 */ {(12<<2)|2,{80,99,0}}, +/* 54860 */ {(12<<2)|2,{80,99,0}}, +/* 54861 */ {(12<<2)|2,{80,99,0}}, +/* 54862 */ {(12<<2)|2,{80,99,0}}, +/* 54863 */ {(12<<2)|2,{80,99,0}}, +/* 54864 */ {(12<<2)|2,{80,101,0}}, +/* 54865 */ {(12<<2)|2,{80,101,0}}, +/* 54866 */ {(12<<2)|2,{80,101,0}}, +/* 54867 */ {(12<<2)|2,{80,101,0}}, +/* 54868 */ {(12<<2)|2,{80,101,0}}, +/* 54869 */ {(12<<2)|2,{80,101,0}}, +/* 54870 */ {(12<<2)|2,{80,101,0}}, +/* 54871 */ {(12<<2)|2,{80,101,0}}, +/* 54872 */ {(12<<2)|2,{80,101,0}}, +/* 54873 */ {(12<<2)|2,{80,101,0}}, +/* 54874 */ {(12<<2)|2,{80,101,0}}, +/* 54875 */ {(12<<2)|2,{80,101,0}}, +/* 54876 */ {(12<<2)|2,{80,101,0}}, +/* 54877 */ {(12<<2)|2,{80,101,0}}, +/* 54878 */ {(12<<2)|2,{80,101,0}}, +/* 54879 */ {(12<<2)|2,{80,101,0}}, +/* 54880 */ {(12<<2)|2,{80,105,0}}, +/* 54881 */ {(12<<2)|2,{80,105,0}}, +/* 54882 */ {(12<<2)|2,{80,105,0}}, +/* 54883 */ {(12<<2)|2,{80,105,0}}, +/* 54884 */ {(12<<2)|2,{80,105,0}}, +/* 54885 */ {(12<<2)|2,{80,105,0}}, +/* 54886 */ {(12<<2)|2,{80,105,0}}, +/* 54887 */ {(12<<2)|2,{80,105,0}}, +/* 54888 */ {(12<<2)|2,{80,105,0}}, +/* 54889 */ {(12<<2)|2,{80,105,0}}, +/* 54890 */ {(12<<2)|2,{80,105,0}}, +/* 54891 */ {(12<<2)|2,{80,105,0}}, +/* 54892 */ {(12<<2)|2,{80,105,0}}, +/* 54893 */ {(12<<2)|2,{80,105,0}}, +/* 54894 */ {(12<<2)|2,{80,105,0}}, +/* 54895 */ {(12<<2)|2,{80,105,0}}, +/* 54896 */ {(12<<2)|2,{80,111,0}}, +/* 54897 */ {(12<<2)|2,{80,111,0}}, +/* 54898 */ {(12<<2)|2,{80,111,0}}, +/* 54899 */ {(12<<2)|2,{80,111,0}}, +/* 54900 */ {(12<<2)|2,{80,111,0}}, +/* 54901 */ {(12<<2)|2,{80,111,0}}, +/* 54902 */ {(12<<2)|2,{80,111,0}}, +/* 54903 */ {(12<<2)|2,{80,111,0}}, +/* 54904 */ {(12<<2)|2,{80,111,0}}, +/* 54905 */ {(12<<2)|2,{80,111,0}}, +/* 54906 */ {(12<<2)|2,{80,111,0}}, +/* 54907 */ {(12<<2)|2,{80,111,0}}, +/* 54908 */ {(12<<2)|2,{80,111,0}}, +/* 54909 */ {(12<<2)|2,{80,111,0}}, +/* 54910 */ {(12<<2)|2,{80,111,0}}, +/* 54911 */ {(12<<2)|2,{80,111,0}}, +/* 54912 */ {(12<<2)|2,{80,115,0}}, +/* 54913 */ {(12<<2)|2,{80,115,0}}, +/* 54914 */ {(12<<2)|2,{80,115,0}}, +/* 54915 */ {(12<<2)|2,{80,115,0}}, +/* 54916 */ {(12<<2)|2,{80,115,0}}, +/* 54917 */ {(12<<2)|2,{80,115,0}}, +/* 54918 */ {(12<<2)|2,{80,115,0}}, +/* 54919 */ {(12<<2)|2,{80,115,0}}, +/* 54920 */ {(12<<2)|2,{80,115,0}}, +/* 54921 */ {(12<<2)|2,{80,115,0}}, +/* 54922 */ {(12<<2)|2,{80,115,0}}, +/* 54923 */ {(12<<2)|2,{80,115,0}}, +/* 54924 */ {(12<<2)|2,{80,115,0}}, +/* 54925 */ {(12<<2)|2,{80,115,0}}, +/* 54926 */ {(12<<2)|2,{80,115,0}}, +/* 54927 */ {(12<<2)|2,{80,115,0}}, +/* 54928 */ {(12<<2)|2,{80,116,0}}, +/* 54929 */ {(12<<2)|2,{80,116,0}}, +/* 54930 */ {(12<<2)|2,{80,116,0}}, +/* 54931 */ {(12<<2)|2,{80,116,0}}, +/* 54932 */ {(12<<2)|2,{80,116,0}}, +/* 54933 */ {(12<<2)|2,{80,116,0}}, +/* 54934 */ {(12<<2)|2,{80,116,0}}, +/* 54935 */ {(12<<2)|2,{80,116,0}}, +/* 54936 */ {(12<<2)|2,{80,116,0}}, +/* 54937 */ {(12<<2)|2,{80,116,0}}, +/* 54938 */ {(12<<2)|2,{80,116,0}}, +/* 54939 */ {(12<<2)|2,{80,116,0}}, +/* 54940 */ {(12<<2)|2,{80,116,0}}, +/* 54941 */ {(12<<2)|2,{80,116,0}}, +/* 54942 */ {(12<<2)|2,{80,116,0}}, +/* 54943 */ {(12<<2)|2,{80,116,0}}, +/* 54944 */ {(13<<2)|2,{80,32,0}}, +/* 54945 */ {(13<<2)|2,{80,32,0}}, +/* 54946 */ {(13<<2)|2,{80,32,0}}, +/* 54947 */ {(13<<2)|2,{80,32,0}}, +/* 54948 */ {(13<<2)|2,{80,32,0}}, +/* 54949 */ {(13<<2)|2,{80,32,0}}, +/* 54950 */ {(13<<2)|2,{80,32,0}}, +/* 54951 */ {(13<<2)|2,{80,32,0}}, +/* 54952 */ {(13<<2)|2,{80,37,0}}, +/* 54953 */ {(13<<2)|2,{80,37,0}}, +/* 54954 */ {(13<<2)|2,{80,37,0}}, +/* 54955 */ {(13<<2)|2,{80,37,0}}, +/* 54956 */ {(13<<2)|2,{80,37,0}}, +/* 54957 */ {(13<<2)|2,{80,37,0}}, +/* 54958 */ {(13<<2)|2,{80,37,0}}, +/* 54959 */ {(13<<2)|2,{80,37,0}}, +/* 54960 */ {(13<<2)|2,{80,45,0}}, +/* 54961 */ {(13<<2)|2,{80,45,0}}, +/* 54962 */ {(13<<2)|2,{80,45,0}}, +/* 54963 */ {(13<<2)|2,{80,45,0}}, +/* 54964 */ {(13<<2)|2,{80,45,0}}, +/* 54965 */ {(13<<2)|2,{80,45,0}}, +/* 54966 */ {(13<<2)|2,{80,45,0}}, +/* 54967 */ {(13<<2)|2,{80,45,0}}, +/* 54968 */ {(13<<2)|2,{80,46,0}}, +/* 54969 */ {(13<<2)|2,{80,46,0}}, +/* 54970 */ {(13<<2)|2,{80,46,0}}, +/* 54971 */ {(13<<2)|2,{80,46,0}}, +/* 54972 */ {(13<<2)|2,{80,46,0}}, +/* 54973 */ {(13<<2)|2,{80,46,0}}, +/* 54974 */ {(13<<2)|2,{80,46,0}}, +/* 54975 */ {(13<<2)|2,{80,46,0}}, +/* 54976 */ {(13<<2)|2,{80,47,0}}, +/* 54977 */ {(13<<2)|2,{80,47,0}}, +/* 54978 */ {(13<<2)|2,{80,47,0}}, +/* 54979 */ {(13<<2)|2,{80,47,0}}, +/* 54980 */ {(13<<2)|2,{80,47,0}}, +/* 54981 */ {(13<<2)|2,{80,47,0}}, +/* 54982 */ {(13<<2)|2,{80,47,0}}, +/* 54983 */ {(13<<2)|2,{80,47,0}}, +/* 54984 */ {(13<<2)|2,{80,51,0}}, +/* 54985 */ {(13<<2)|2,{80,51,0}}, +/* 54986 */ {(13<<2)|2,{80,51,0}}, +/* 54987 */ {(13<<2)|2,{80,51,0}}, +/* 54988 */ {(13<<2)|2,{80,51,0}}, +/* 54989 */ {(13<<2)|2,{80,51,0}}, +/* 54990 */ {(13<<2)|2,{80,51,0}}, +/* 54991 */ {(13<<2)|2,{80,51,0}}, +/* 54992 */ {(13<<2)|2,{80,52,0}}, +/* 54993 */ {(13<<2)|2,{80,52,0}}, +/* 54994 */ {(13<<2)|2,{80,52,0}}, +/* 54995 */ {(13<<2)|2,{80,52,0}}, +/* 54996 */ {(13<<2)|2,{80,52,0}}, +/* 54997 */ {(13<<2)|2,{80,52,0}}, +/* 54998 */ {(13<<2)|2,{80,52,0}}, +/* 54999 */ {(13<<2)|2,{80,52,0}}, +/* 55000 */ {(13<<2)|2,{80,53,0}}, +/* 55001 */ {(13<<2)|2,{80,53,0}}, +/* 55002 */ {(13<<2)|2,{80,53,0}}, +/* 55003 */ {(13<<2)|2,{80,53,0}}, +/* 55004 */ {(13<<2)|2,{80,53,0}}, +/* 55005 */ {(13<<2)|2,{80,53,0}}, +/* 55006 */ {(13<<2)|2,{80,53,0}}, +/* 55007 */ {(13<<2)|2,{80,53,0}}, +/* 55008 */ {(13<<2)|2,{80,54,0}}, +/* 55009 */ {(13<<2)|2,{80,54,0}}, +/* 55010 */ {(13<<2)|2,{80,54,0}}, +/* 55011 */ {(13<<2)|2,{80,54,0}}, +/* 55012 */ {(13<<2)|2,{80,54,0}}, +/* 55013 */ {(13<<2)|2,{80,54,0}}, +/* 55014 */ {(13<<2)|2,{80,54,0}}, +/* 55015 */ {(13<<2)|2,{80,54,0}}, +/* 55016 */ {(13<<2)|2,{80,55,0}}, +/* 55017 */ {(13<<2)|2,{80,55,0}}, +/* 55018 */ {(13<<2)|2,{80,55,0}}, +/* 55019 */ {(13<<2)|2,{80,55,0}}, +/* 55020 */ {(13<<2)|2,{80,55,0}}, +/* 55021 */ {(13<<2)|2,{80,55,0}}, +/* 55022 */ {(13<<2)|2,{80,55,0}}, +/* 55023 */ {(13<<2)|2,{80,55,0}}, +/* 55024 */ {(13<<2)|2,{80,56,0}}, +/* 55025 */ {(13<<2)|2,{80,56,0}}, +/* 55026 */ {(13<<2)|2,{80,56,0}}, +/* 55027 */ {(13<<2)|2,{80,56,0}}, +/* 55028 */ {(13<<2)|2,{80,56,0}}, +/* 55029 */ {(13<<2)|2,{80,56,0}}, +/* 55030 */ {(13<<2)|2,{80,56,0}}, +/* 55031 */ {(13<<2)|2,{80,56,0}}, +/* 55032 */ {(13<<2)|2,{80,57,0}}, +/* 55033 */ {(13<<2)|2,{80,57,0}}, +/* 55034 */ {(13<<2)|2,{80,57,0}}, +/* 55035 */ {(13<<2)|2,{80,57,0}}, +/* 55036 */ {(13<<2)|2,{80,57,0}}, +/* 55037 */ {(13<<2)|2,{80,57,0}}, +/* 55038 */ {(13<<2)|2,{80,57,0}}, +/* 55039 */ {(13<<2)|2,{80,57,0}}, +/* 55040 */ {(13<<2)|2,{80,61,0}}, +/* 55041 */ {(13<<2)|2,{80,61,0}}, +/* 55042 */ {(13<<2)|2,{80,61,0}}, +/* 55043 */ {(13<<2)|2,{80,61,0}}, +/* 55044 */ {(13<<2)|2,{80,61,0}}, +/* 55045 */ {(13<<2)|2,{80,61,0}}, +/* 55046 */ {(13<<2)|2,{80,61,0}}, +/* 55047 */ {(13<<2)|2,{80,61,0}}, +/* 55048 */ {(13<<2)|2,{80,65,0}}, +/* 55049 */ {(13<<2)|2,{80,65,0}}, +/* 55050 */ {(13<<2)|2,{80,65,0}}, +/* 55051 */ {(13<<2)|2,{80,65,0}}, +/* 55052 */ {(13<<2)|2,{80,65,0}}, +/* 55053 */ {(13<<2)|2,{80,65,0}}, +/* 55054 */ {(13<<2)|2,{80,65,0}}, +/* 55055 */ {(13<<2)|2,{80,65,0}}, +/* 55056 */ {(13<<2)|2,{80,95,0}}, +/* 55057 */ {(13<<2)|2,{80,95,0}}, +/* 55058 */ {(13<<2)|2,{80,95,0}}, +/* 55059 */ {(13<<2)|2,{80,95,0}}, +/* 55060 */ {(13<<2)|2,{80,95,0}}, +/* 55061 */ {(13<<2)|2,{80,95,0}}, +/* 55062 */ {(13<<2)|2,{80,95,0}}, +/* 55063 */ {(13<<2)|2,{80,95,0}}, +/* 55064 */ {(13<<2)|2,{80,98,0}}, +/* 55065 */ {(13<<2)|2,{80,98,0}}, +/* 55066 */ {(13<<2)|2,{80,98,0}}, +/* 55067 */ {(13<<2)|2,{80,98,0}}, +/* 55068 */ {(13<<2)|2,{80,98,0}}, +/* 55069 */ {(13<<2)|2,{80,98,0}}, +/* 55070 */ {(13<<2)|2,{80,98,0}}, +/* 55071 */ {(13<<2)|2,{80,98,0}}, +/* 55072 */ {(13<<2)|2,{80,100,0}}, +/* 55073 */ {(13<<2)|2,{80,100,0}}, +/* 55074 */ {(13<<2)|2,{80,100,0}}, +/* 55075 */ {(13<<2)|2,{80,100,0}}, +/* 55076 */ {(13<<2)|2,{80,100,0}}, +/* 55077 */ {(13<<2)|2,{80,100,0}}, +/* 55078 */ {(13<<2)|2,{80,100,0}}, +/* 55079 */ {(13<<2)|2,{80,100,0}}, +/* 55080 */ {(13<<2)|2,{80,102,0}}, +/* 55081 */ {(13<<2)|2,{80,102,0}}, +/* 55082 */ {(13<<2)|2,{80,102,0}}, +/* 55083 */ {(13<<2)|2,{80,102,0}}, +/* 55084 */ {(13<<2)|2,{80,102,0}}, +/* 55085 */ {(13<<2)|2,{80,102,0}}, +/* 55086 */ {(13<<2)|2,{80,102,0}}, +/* 55087 */ {(13<<2)|2,{80,102,0}}, +/* 55088 */ {(13<<2)|2,{80,103,0}}, +/* 55089 */ {(13<<2)|2,{80,103,0}}, +/* 55090 */ {(13<<2)|2,{80,103,0}}, +/* 55091 */ {(13<<2)|2,{80,103,0}}, +/* 55092 */ {(13<<2)|2,{80,103,0}}, +/* 55093 */ {(13<<2)|2,{80,103,0}}, +/* 55094 */ {(13<<2)|2,{80,103,0}}, +/* 55095 */ {(13<<2)|2,{80,103,0}}, +/* 55096 */ {(13<<2)|2,{80,104,0}}, +/* 55097 */ {(13<<2)|2,{80,104,0}}, +/* 55098 */ {(13<<2)|2,{80,104,0}}, +/* 55099 */ {(13<<2)|2,{80,104,0}}, +/* 55100 */ {(13<<2)|2,{80,104,0}}, +/* 55101 */ {(13<<2)|2,{80,104,0}}, +/* 55102 */ {(13<<2)|2,{80,104,0}}, +/* 55103 */ {(13<<2)|2,{80,104,0}}, +/* 55104 */ {(13<<2)|2,{80,108,0}}, +/* 55105 */ {(13<<2)|2,{80,108,0}}, +/* 55106 */ {(13<<2)|2,{80,108,0}}, +/* 55107 */ {(13<<2)|2,{80,108,0}}, +/* 55108 */ {(13<<2)|2,{80,108,0}}, +/* 55109 */ {(13<<2)|2,{80,108,0}}, +/* 55110 */ {(13<<2)|2,{80,108,0}}, +/* 55111 */ {(13<<2)|2,{80,108,0}}, +/* 55112 */ {(13<<2)|2,{80,109,0}}, +/* 55113 */ {(13<<2)|2,{80,109,0}}, +/* 55114 */ {(13<<2)|2,{80,109,0}}, +/* 55115 */ {(13<<2)|2,{80,109,0}}, +/* 55116 */ {(13<<2)|2,{80,109,0}}, +/* 55117 */ {(13<<2)|2,{80,109,0}}, +/* 55118 */ {(13<<2)|2,{80,109,0}}, +/* 55119 */ {(13<<2)|2,{80,109,0}}, +/* 55120 */ {(13<<2)|2,{80,110,0}}, +/* 55121 */ {(13<<2)|2,{80,110,0}}, +/* 55122 */ {(13<<2)|2,{80,110,0}}, +/* 55123 */ {(13<<2)|2,{80,110,0}}, +/* 55124 */ {(13<<2)|2,{80,110,0}}, +/* 55125 */ {(13<<2)|2,{80,110,0}}, +/* 55126 */ {(13<<2)|2,{80,110,0}}, +/* 55127 */ {(13<<2)|2,{80,110,0}}, +/* 55128 */ {(13<<2)|2,{80,112,0}}, +/* 55129 */ {(13<<2)|2,{80,112,0}}, +/* 55130 */ {(13<<2)|2,{80,112,0}}, +/* 55131 */ {(13<<2)|2,{80,112,0}}, +/* 55132 */ {(13<<2)|2,{80,112,0}}, +/* 55133 */ {(13<<2)|2,{80,112,0}}, +/* 55134 */ {(13<<2)|2,{80,112,0}}, +/* 55135 */ {(13<<2)|2,{80,112,0}}, +/* 55136 */ {(13<<2)|2,{80,114,0}}, +/* 55137 */ {(13<<2)|2,{80,114,0}}, +/* 55138 */ {(13<<2)|2,{80,114,0}}, +/* 55139 */ {(13<<2)|2,{80,114,0}}, +/* 55140 */ {(13<<2)|2,{80,114,0}}, +/* 55141 */ {(13<<2)|2,{80,114,0}}, +/* 55142 */ {(13<<2)|2,{80,114,0}}, +/* 55143 */ {(13<<2)|2,{80,114,0}}, +/* 55144 */ {(13<<2)|2,{80,117,0}}, +/* 55145 */ {(13<<2)|2,{80,117,0}}, +/* 55146 */ {(13<<2)|2,{80,117,0}}, +/* 55147 */ {(13<<2)|2,{80,117,0}}, +/* 55148 */ {(13<<2)|2,{80,117,0}}, +/* 55149 */ {(13<<2)|2,{80,117,0}}, +/* 55150 */ {(13<<2)|2,{80,117,0}}, +/* 55151 */ {(13<<2)|2,{80,117,0}}, +/* 55152 */ {(14<<2)|2,{80,58,0}}, +/* 55153 */ {(14<<2)|2,{80,58,0}}, +/* 55154 */ {(14<<2)|2,{80,58,0}}, +/* 55155 */ {(14<<2)|2,{80,58,0}}, +/* 55156 */ {(14<<2)|2,{80,66,0}}, +/* 55157 */ {(14<<2)|2,{80,66,0}}, +/* 55158 */ {(14<<2)|2,{80,66,0}}, +/* 55159 */ {(14<<2)|2,{80,66,0}}, +/* 55160 */ {(14<<2)|2,{80,67,0}}, +/* 55161 */ {(14<<2)|2,{80,67,0}}, +/* 55162 */ {(14<<2)|2,{80,67,0}}, +/* 55163 */ {(14<<2)|2,{80,67,0}}, +/* 55164 */ {(14<<2)|2,{80,68,0}}, +/* 55165 */ {(14<<2)|2,{80,68,0}}, +/* 55166 */ {(14<<2)|2,{80,68,0}}, +/* 55167 */ {(14<<2)|2,{80,68,0}}, +/* 55168 */ {(14<<2)|2,{80,69,0}}, +/* 55169 */ {(14<<2)|2,{80,69,0}}, +/* 55170 */ {(14<<2)|2,{80,69,0}}, +/* 55171 */ {(14<<2)|2,{80,69,0}}, +/* 55172 */ {(14<<2)|2,{80,70,0}}, +/* 55173 */ {(14<<2)|2,{80,70,0}}, +/* 55174 */ {(14<<2)|2,{80,70,0}}, +/* 55175 */ {(14<<2)|2,{80,70,0}}, +/* 55176 */ {(14<<2)|2,{80,71,0}}, +/* 55177 */ {(14<<2)|2,{80,71,0}}, +/* 55178 */ {(14<<2)|2,{80,71,0}}, +/* 55179 */ {(14<<2)|2,{80,71,0}}, +/* 55180 */ {(14<<2)|2,{80,72,0}}, +/* 55181 */ {(14<<2)|2,{80,72,0}}, +/* 55182 */ {(14<<2)|2,{80,72,0}}, +/* 55183 */ {(14<<2)|2,{80,72,0}}, +/* 55184 */ {(14<<2)|2,{80,73,0}}, +/* 55185 */ {(14<<2)|2,{80,73,0}}, +/* 55186 */ {(14<<2)|2,{80,73,0}}, +/* 55187 */ {(14<<2)|2,{80,73,0}}, +/* 55188 */ {(14<<2)|2,{80,74,0}}, +/* 55189 */ {(14<<2)|2,{80,74,0}}, +/* 55190 */ {(14<<2)|2,{80,74,0}}, +/* 55191 */ {(14<<2)|2,{80,74,0}}, +/* 55192 */ {(14<<2)|2,{80,75,0}}, +/* 55193 */ {(14<<2)|2,{80,75,0}}, +/* 55194 */ {(14<<2)|2,{80,75,0}}, +/* 55195 */ {(14<<2)|2,{80,75,0}}, +/* 55196 */ {(14<<2)|2,{80,76,0}}, +/* 55197 */ {(14<<2)|2,{80,76,0}}, +/* 55198 */ {(14<<2)|2,{80,76,0}}, +/* 55199 */ {(14<<2)|2,{80,76,0}}, +/* 55200 */ {(14<<2)|2,{80,77,0}}, +/* 55201 */ {(14<<2)|2,{80,77,0}}, +/* 55202 */ {(14<<2)|2,{80,77,0}}, +/* 55203 */ {(14<<2)|2,{80,77,0}}, +/* 55204 */ {(14<<2)|2,{80,78,0}}, +/* 55205 */ {(14<<2)|2,{80,78,0}}, +/* 55206 */ {(14<<2)|2,{80,78,0}}, +/* 55207 */ {(14<<2)|2,{80,78,0}}, +/* 55208 */ {(14<<2)|2,{80,79,0}}, +/* 55209 */ {(14<<2)|2,{80,79,0}}, +/* 55210 */ {(14<<2)|2,{80,79,0}}, +/* 55211 */ {(14<<2)|2,{80,79,0}}, +/* 55212 */ {(14<<2)|2,{80,80,0}}, +/* 55213 */ {(14<<2)|2,{80,80,0}}, +/* 55214 */ {(14<<2)|2,{80,80,0}}, +/* 55215 */ {(14<<2)|2,{80,80,0}}, +/* 55216 */ {(14<<2)|2,{80,81,0}}, +/* 55217 */ {(14<<2)|2,{80,81,0}}, +/* 55218 */ {(14<<2)|2,{80,81,0}}, +/* 55219 */ {(14<<2)|2,{80,81,0}}, +/* 55220 */ {(14<<2)|2,{80,82,0}}, +/* 55221 */ {(14<<2)|2,{80,82,0}}, +/* 55222 */ {(14<<2)|2,{80,82,0}}, +/* 55223 */ {(14<<2)|2,{80,82,0}}, +/* 55224 */ {(14<<2)|2,{80,83,0}}, +/* 55225 */ {(14<<2)|2,{80,83,0}}, +/* 55226 */ {(14<<2)|2,{80,83,0}}, +/* 55227 */ {(14<<2)|2,{80,83,0}}, +/* 55228 */ {(14<<2)|2,{80,84,0}}, +/* 55229 */ {(14<<2)|2,{80,84,0}}, +/* 55230 */ {(14<<2)|2,{80,84,0}}, +/* 55231 */ {(14<<2)|2,{80,84,0}}, +/* 55232 */ {(14<<2)|2,{80,85,0}}, +/* 55233 */ {(14<<2)|2,{80,85,0}}, +/* 55234 */ {(14<<2)|2,{80,85,0}}, +/* 55235 */ {(14<<2)|2,{80,85,0}}, +/* 55236 */ {(14<<2)|2,{80,86,0}}, +/* 55237 */ {(14<<2)|2,{80,86,0}}, +/* 55238 */ {(14<<2)|2,{80,86,0}}, +/* 55239 */ {(14<<2)|2,{80,86,0}}, +/* 55240 */ {(14<<2)|2,{80,87,0}}, +/* 55241 */ {(14<<2)|2,{80,87,0}}, +/* 55242 */ {(14<<2)|2,{80,87,0}}, +/* 55243 */ {(14<<2)|2,{80,87,0}}, +/* 55244 */ {(14<<2)|2,{80,89,0}}, +/* 55245 */ {(14<<2)|2,{80,89,0}}, +/* 55246 */ {(14<<2)|2,{80,89,0}}, +/* 55247 */ {(14<<2)|2,{80,89,0}}, +/* 55248 */ {(14<<2)|2,{80,106,0}}, +/* 55249 */ {(14<<2)|2,{80,106,0}}, +/* 55250 */ {(14<<2)|2,{80,106,0}}, +/* 55251 */ {(14<<2)|2,{80,106,0}}, +/* 55252 */ {(14<<2)|2,{80,107,0}}, +/* 55253 */ {(14<<2)|2,{80,107,0}}, +/* 55254 */ {(14<<2)|2,{80,107,0}}, +/* 55255 */ {(14<<2)|2,{80,107,0}}, +/* 55256 */ {(14<<2)|2,{80,113,0}}, +/* 55257 */ {(14<<2)|2,{80,113,0}}, +/* 55258 */ {(14<<2)|2,{80,113,0}}, +/* 55259 */ {(14<<2)|2,{80,113,0}}, +/* 55260 */ {(14<<2)|2,{80,118,0}}, +/* 55261 */ {(14<<2)|2,{80,118,0}}, +/* 55262 */ {(14<<2)|2,{80,118,0}}, +/* 55263 */ {(14<<2)|2,{80,118,0}}, +/* 55264 */ {(14<<2)|2,{80,119,0}}, +/* 55265 */ {(14<<2)|2,{80,119,0}}, +/* 55266 */ {(14<<2)|2,{80,119,0}}, +/* 55267 */ {(14<<2)|2,{80,119,0}}, +/* 55268 */ {(14<<2)|2,{80,120,0}}, +/* 55269 */ {(14<<2)|2,{80,120,0}}, +/* 55270 */ {(14<<2)|2,{80,120,0}}, +/* 55271 */ {(14<<2)|2,{80,120,0}}, +/* 55272 */ {(14<<2)|2,{80,121,0}}, +/* 55273 */ {(14<<2)|2,{80,121,0}}, +/* 55274 */ {(14<<2)|2,{80,121,0}}, +/* 55275 */ {(14<<2)|2,{80,121,0}}, +/* 55276 */ {(14<<2)|2,{80,122,0}}, +/* 55277 */ {(14<<2)|2,{80,122,0}}, +/* 55278 */ {(14<<2)|2,{80,122,0}}, +/* 55279 */ {(14<<2)|2,{80,122,0}}, +/* 55280 */ {(15<<2)|2,{80,38,0}}, +/* 55281 */ {(15<<2)|2,{80,38,0}}, +/* 55282 */ {(15<<2)|2,{80,42,0}}, +/* 55283 */ {(15<<2)|2,{80,42,0}}, +/* 55284 */ {(15<<2)|2,{80,44,0}}, +/* 55285 */ {(15<<2)|2,{80,44,0}}, +/* 55286 */ {(15<<2)|2,{80,59,0}}, +/* 55287 */ {(15<<2)|2,{80,59,0}}, +/* 55288 */ {(15<<2)|2,{80,88,0}}, +/* 55289 */ {(15<<2)|2,{80,88,0}}, +/* 55290 */ {(15<<2)|2,{80,90,0}}, +/* 55291 */ {(15<<2)|2,{80,90,0}}, +/* 55292 */ {(7<<2)|1,{80,0,0}}, +/* 55293 */ {(7<<2)|1,{80,0,0}}, +/* 55294 */ {(7<<2)|1,{80,0,0}}, +/* 55295 */ {(7<<2)|1,{80,0,0}}, +/* 55296 */ {(12<<2)|2,{81,48,0}}, +/* 55297 */ {(12<<2)|2,{81,48,0}}, +/* 55298 */ {(12<<2)|2,{81,48,0}}, +/* 55299 */ {(12<<2)|2,{81,48,0}}, +/* 55300 */ {(12<<2)|2,{81,48,0}}, +/* 55301 */ {(12<<2)|2,{81,48,0}}, +/* 55302 */ {(12<<2)|2,{81,48,0}}, +/* 55303 */ {(12<<2)|2,{81,48,0}}, +/* 55304 */ {(12<<2)|2,{81,48,0}}, +/* 55305 */ {(12<<2)|2,{81,48,0}}, +/* 55306 */ {(12<<2)|2,{81,48,0}}, +/* 55307 */ {(12<<2)|2,{81,48,0}}, +/* 55308 */ {(12<<2)|2,{81,48,0}}, +/* 55309 */ {(12<<2)|2,{81,48,0}}, +/* 55310 */ {(12<<2)|2,{81,48,0}}, +/* 55311 */ {(12<<2)|2,{81,48,0}}, +/* 55312 */ {(12<<2)|2,{81,49,0}}, +/* 55313 */ {(12<<2)|2,{81,49,0}}, +/* 55314 */ {(12<<2)|2,{81,49,0}}, +/* 55315 */ {(12<<2)|2,{81,49,0}}, +/* 55316 */ {(12<<2)|2,{81,49,0}}, +/* 55317 */ {(12<<2)|2,{81,49,0}}, +/* 55318 */ {(12<<2)|2,{81,49,0}}, +/* 55319 */ {(12<<2)|2,{81,49,0}}, +/* 55320 */ {(12<<2)|2,{81,49,0}}, +/* 55321 */ {(12<<2)|2,{81,49,0}}, +/* 55322 */ {(12<<2)|2,{81,49,0}}, +/* 55323 */ {(12<<2)|2,{81,49,0}}, +/* 55324 */ {(12<<2)|2,{81,49,0}}, +/* 55325 */ {(12<<2)|2,{81,49,0}}, +/* 55326 */ {(12<<2)|2,{81,49,0}}, +/* 55327 */ {(12<<2)|2,{81,49,0}}, +/* 55328 */ {(12<<2)|2,{81,50,0}}, +/* 55329 */ {(12<<2)|2,{81,50,0}}, +/* 55330 */ {(12<<2)|2,{81,50,0}}, +/* 55331 */ {(12<<2)|2,{81,50,0}}, +/* 55332 */ {(12<<2)|2,{81,50,0}}, +/* 55333 */ {(12<<2)|2,{81,50,0}}, +/* 55334 */ {(12<<2)|2,{81,50,0}}, +/* 55335 */ {(12<<2)|2,{81,50,0}}, +/* 55336 */ {(12<<2)|2,{81,50,0}}, +/* 55337 */ {(12<<2)|2,{81,50,0}}, +/* 55338 */ {(12<<2)|2,{81,50,0}}, +/* 55339 */ {(12<<2)|2,{81,50,0}}, +/* 55340 */ {(12<<2)|2,{81,50,0}}, +/* 55341 */ {(12<<2)|2,{81,50,0}}, +/* 55342 */ {(12<<2)|2,{81,50,0}}, +/* 55343 */ {(12<<2)|2,{81,50,0}}, +/* 55344 */ {(12<<2)|2,{81,97,0}}, +/* 55345 */ {(12<<2)|2,{81,97,0}}, +/* 55346 */ {(12<<2)|2,{81,97,0}}, +/* 55347 */ {(12<<2)|2,{81,97,0}}, +/* 55348 */ {(12<<2)|2,{81,97,0}}, +/* 55349 */ {(12<<2)|2,{81,97,0}}, +/* 55350 */ {(12<<2)|2,{81,97,0}}, +/* 55351 */ {(12<<2)|2,{81,97,0}}, +/* 55352 */ {(12<<2)|2,{81,97,0}}, +/* 55353 */ {(12<<2)|2,{81,97,0}}, +/* 55354 */ {(12<<2)|2,{81,97,0}}, +/* 55355 */ {(12<<2)|2,{81,97,0}}, +/* 55356 */ {(12<<2)|2,{81,97,0}}, +/* 55357 */ {(12<<2)|2,{81,97,0}}, +/* 55358 */ {(12<<2)|2,{81,97,0}}, +/* 55359 */ {(12<<2)|2,{81,97,0}}, +/* 55360 */ {(12<<2)|2,{81,99,0}}, +/* 55361 */ {(12<<2)|2,{81,99,0}}, +/* 55362 */ {(12<<2)|2,{81,99,0}}, +/* 55363 */ {(12<<2)|2,{81,99,0}}, +/* 55364 */ {(12<<2)|2,{81,99,0}}, +/* 55365 */ {(12<<2)|2,{81,99,0}}, +/* 55366 */ {(12<<2)|2,{81,99,0}}, +/* 55367 */ {(12<<2)|2,{81,99,0}}, +/* 55368 */ {(12<<2)|2,{81,99,0}}, +/* 55369 */ {(12<<2)|2,{81,99,0}}, +/* 55370 */ {(12<<2)|2,{81,99,0}}, +/* 55371 */ {(12<<2)|2,{81,99,0}}, +/* 55372 */ {(12<<2)|2,{81,99,0}}, +/* 55373 */ {(12<<2)|2,{81,99,0}}, +/* 55374 */ {(12<<2)|2,{81,99,0}}, +/* 55375 */ {(12<<2)|2,{81,99,0}}, +/* 55376 */ {(12<<2)|2,{81,101,0}}, +/* 55377 */ {(12<<2)|2,{81,101,0}}, +/* 55378 */ {(12<<2)|2,{81,101,0}}, +/* 55379 */ {(12<<2)|2,{81,101,0}}, +/* 55380 */ {(12<<2)|2,{81,101,0}}, +/* 55381 */ {(12<<2)|2,{81,101,0}}, +/* 55382 */ {(12<<2)|2,{81,101,0}}, +/* 55383 */ {(12<<2)|2,{81,101,0}}, +/* 55384 */ {(12<<2)|2,{81,101,0}}, +/* 55385 */ {(12<<2)|2,{81,101,0}}, +/* 55386 */ {(12<<2)|2,{81,101,0}}, +/* 55387 */ {(12<<2)|2,{81,101,0}}, +/* 55388 */ {(12<<2)|2,{81,101,0}}, +/* 55389 */ {(12<<2)|2,{81,101,0}}, +/* 55390 */ {(12<<2)|2,{81,101,0}}, +/* 55391 */ {(12<<2)|2,{81,101,0}}, +/* 55392 */ {(12<<2)|2,{81,105,0}}, +/* 55393 */ {(12<<2)|2,{81,105,0}}, +/* 55394 */ {(12<<2)|2,{81,105,0}}, +/* 55395 */ {(12<<2)|2,{81,105,0}}, +/* 55396 */ {(12<<2)|2,{81,105,0}}, +/* 55397 */ {(12<<2)|2,{81,105,0}}, +/* 55398 */ {(12<<2)|2,{81,105,0}}, +/* 55399 */ {(12<<2)|2,{81,105,0}}, +/* 55400 */ {(12<<2)|2,{81,105,0}}, +/* 55401 */ {(12<<2)|2,{81,105,0}}, +/* 55402 */ {(12<<2)|2,{81,105,0}}, +/* 55403 */ {(12<<2)|2,{81,105,0}}, +/* 55404 */ {(12<<2)|2,{81,105,0}}, +/* 55405 */ {(12<<2)|2,{81,105,0}}, +/* 55406 */ {(12<<2)|2,{81,105,0}}, +/* 55407 */ {(12<<2)|2,{81,105,0}}, +/* 55408 */ {(12<<2)|2,{81,111,0}}, +/* 55409 */ {(12<<2)|2,{81,111,0}}, +/* 55410 */ {(12<<2)|2,{81,111,0}}, +/* 55411 */ {(12<<2)|2,{81,111,0}}, +/* 55412 */ {(12<<2)|2,{81,111,0}}, +/* 55413 */ {(12<<2)|2,{81,111,0}}, +/* 55414 */ {(12<<2)|2,{81,111,0}}, +/* 55415 */ {(12<<2)|2,{81,111,0}}, +/* 55416 */ {(12<<2)|2,{81,111,0}}, +/* 55417 */ {(12<<2)|2,{81,111,0}}, +/* 55418 */ {(12<<2)|2,{81,111,0}}, +/* 55419 */ {(12<<2)|2,{81,111,0}}, +/* 55420 */ {(12<<2)|2,{81,111,0}}, +/* 55421 */ {(12<<2)|2,{81,111,0}}, +/* 55422 */ {(12<<2)|2,{81,111,0}}, +/* 55423 */ {(12<<2)|2,{81,111,0}}, +/* 55424 */ {(12<<2)|2,{81,115,0}}, +/* 55425 */ {(12<<2)|2,{81,115,0}}, +/* 55426 */ {(12<<2)|2,{81,115,0}}, +/* 55427 */ {(12<<2)|2,{81,115,0}}, +/* 55428 */ {(12<<2)|2,{81,115,0}}, +/* 55429 */ {(12<<2)|2,{81,115,0}}, +/* 55430 */ {(12<<2)|2,{81,115,0}}, +/* 55431 */ {(12<<2)|2,{81,115,0}}, +/* 55432 */ {(12<<2)|2,{81,115,0}}, +/* 55433 */ {(12<<2)|2,{81,115,0}}, +/* 55434 */ {(12<<2)|2,{81,115,0}}, +/* 55435 */ {(12<<2)|2,{81,115,0}}, +/* 55436 */ {(12<<2)|2,{81,115,0}}, +/* 55437 */ {(12<<2)|2,{81,115,0}}, +/* 55438 */ {(12<<2)|2,{81,115,0}}, +/* 55439 */ {(12<<2)|2,{81,115,0}}, +/* 55440 */ {(12<<2)|2,{81,116,0}}, +/* 55441 */ {(12<<2)|2,{81,116,0}}, +/* 55442 */ {(12<<2)|2,{81,116,0}}, +/* 55443 */ {(12<<2)|2,{81,116,0}}, +/* 55444 */ {(12<<2)|2,{81,116,0}}, +/* 55445 */ {(12<<2)|2,{81,116,0}}, +/* 55446 */ {(12<<2)|2,{81,116,0}}, +/* 55447 */ {(12<<2)|2,{81,116,0}}, +/* 55448 */ {(12<<2)|2,{81,116,0}}, +/* 55449 */ {(12<<2)|2,{81,116,0}}, +/* 55450 */ {(12<<2)|2,{81,116,0}}, +/* 55451 */ {(12<<2)|2,{81,116,0}}, +/* 55452 */ {(12<<2)|2,{81,116,0}}, +/* 55453 */ {(12<<2)|2,{81,116,0}}, +/* 55454 */ {(12<<2)|2,{81,116,0}}, +/* 55455 */ {(12<<2)|2,{81,116,0}}, +/* 55456 */ {(13<<2)|2,{81,32,0}}, +/* 55457 */ {(13<<2)|2,{81,32,0}}, +/* 55458 */ {(13<<2)|2,{81,32,0}}, +/* 55459 */ {(13<<2)|2,{81,32,0}}, +/* 55460 */ {(13<<2)|2,{81,32,0}}, +/* 55461 */ {(13<<2)|2,{81,32,0}}, +/* 55462 */ {(13<<2)|2,{81,32,0}}, +/* 55463 */ {(13<<2)|2,{81,32,0}}, +/* 55464 */ {(13<<2)|2,{81,37,0}}, +/* 55465 */ {(13<<2)|2,{81,37,0}}, +/* 55466 */ {(13<<2)|2,{81,37,0}}, +/* 55467 */ {(13<<2)|2,{81,37,0}}, +/* 55468 */ {(13<<2)|2,{81,37,0}}, +/* 55469 */ {(13<<2)|2,{81,37,0}}, +/* 55470 */ {(13<<2)|2,{81,37,0}}, +/* 55471 */ {(13<<2)|2,{81,37,0}}, +/* 55472 */ {(13<<2)|2,{81,45,0}}, +/* 55473 */ {(13<<2)|2,{81,45,0}}, +/* 55474 */ {(13<<2)|2,{81,45,0}}, +/* 55475 */ {(13<<2)|2,{81,45,0}}, +/* 55476 */ {(13<<2)|2,{81,45,0}}, +/* 55477 */ {(13<<2)|2,{81,45,0}}, +/* 55478 */ {(13<<2)|2,{81,45,0}}, +/* 55479 */ {(13<<2)|2,{81,45,0}}, +/* 55480 */ {(13<<2)|2,{81,46,0}}, +/* 55481 */ {(13<<2)|2,{81,46,0}}, +/* 55482 */ {(13<<2)|2,{81,46,0}}, +/* 55483 */ {(13<<2)|2,{81,46,0}}, +/* 55484 */ {(13<<2)|2,{81,46,0}}, +/* 55485 */ {(13<<2)|2,{81,46,0}}, +/* 55486 */ {(13<<2)|2,{81,46,0}}, +/* 55487 */ {(13<<2)|2,{81,46,0}}, +/* 55488 */ {(13<<2)|2,{81,47,0}}, +/* 55489 */ {(13<<2)|2,{81,47,0}}, +/* 55490 */ {(13<<2)|2,{81,47,0}}, +/* 55491 */ {(13<<2)|2,{81,47,0}}, +/* 55492 */ {(13<<2)|2,{81,47,0}}, +/* 55493 */ {(13<<2)|2,{81,47,0}}, +/* 55494 */ {(13<<2)|2,{81,47,0}}, +/* 55495 */ {(13<<2)|2,{81,47,0}}, +/* 55496 */ {(13<<2)|2,{81,51,0}}, +/* 55497 */ {(13<<2)|2,{81,51,0}}, +/* 55498 */ {(13<<2)|2,{81,51,0}}, +/* 55499 */ {(13<<2)|2,{81,51,0}}, +/* 55500 */ {(13<<2)|2,{81,51,0}}, +/* 55501 */ {(13<<2)|2,{81,51,0}}, +/* 55502 */ {(13<<2)|2,{81,51,0}}, +/* 55503 */ {(13<<2)|2,{81,51,0}}, +/* 55504 */ {(13<<2)|2,{81,52,0}}, +/* 55505 */ {(13<<2)|2,{81,52,0}}, +/* 55506 */ {(13<<2)|2,{81,52,0}}, +/* 55507 */ {(13<<2)|2,{81,52,0}}, +/* 55508 */ {(13<<2)|2,{81,52,0}}, +/* 55509 */ {(13<<2)|2,{81,52,0}}, +/* 55510 */ {(13<<2)|2,{81,52,0}}, +/* 55511 */ {(13<<2)|2,{81,52,0}}, +/* 55512 */ {(13<<2)|2,{81,53,0}}, +/* 55513 */ {(13<<2)|2,{81,53,0}}, +/* 55514 */ {(13<<2)|2,{81,53,0}}, +/* 55515 */ {(13<<2)|2,{81,53,0}}, +/* 55516 */ {(13<<2)|2,{81,53,0}}, +/* 55517 */ {(13<<2)|2,{81,53,0}}, +/* 55518 */ {(13<<2)|2,{81,53,0}}, +/* 55519 */ {(13<<2)|2,{81,53,0}}, +/* 55520 */ {(13<<2)|2,{81,54,0}}, +/* 55521 */ {(13<<2)|2,{81,54,0}}, +/* 55522 */ {(13<<2)|2,{81,54,0}}, +/* 55523 */ {(13<<2)|2,{81,54,0}}, +/* 55524 */ {(13<<2)|2,{81,54,0}}, +/* 55525 */ {(13<<2)|2,{81,54,0}}, +/* 55526 */ {(13<<2)|2,{81,54,0}}, +/* 55527 */ {(13<<2)|2,{81,54,0}}, +/* 55528 */ {(13<<2)|2,{81,55,0}}, +/* 55529 */ {(13<<2)|2,{81,55,0}}, +/* 55530 */ {(13<<2)|2,{81,55,0}}, +/* 55531 */ {(13<<2)|2,{81,55,0}}, +/* 55532 */ {(13<<2)|2,{81,55,0}}, +/* 55533 */ {(13<<2)|2,{81,55,0}}, +/* 55534 */ {(13<<2)|2,{81,55,0}}, +/* 55535 */ {(13<<2)|2,{81,55,0}}, +/* 55536 */ {(13<<2)|2,{81,56,0}}, +/* 55537 */ {(13<<2)|2,{81,56,0}}, +/* 55538 */ {(13<<2)|2,{81,56,0}}, +/* 55539 */ {(13<<2)|2,{81,56,0}}, +/* 55540 */ {(13<<2)|2,{81,56,0}}, +/* 55541 */ {(13<<2)|2,{81,56,0}}, +/* 55542 */ {(13<<2)|2,{81,56,0}}, +/* 55543 */ {(13<<2)|2,{81,56,0}}, +/* 55544 */ {(13<<2)|2,{81,57,0}}, +/* 55545 */ {(13<<2)|2,{81,57,0}}, +/* 55546 */ {(13<<2)|2,{81,57,0}}, +/* 55547 */ {(13<<2)|2,{81,57,0}}, +/* 55548 */ {(13<<2)|2,{81,57,0}}, +/* 55549 */ {(13<<2)|2,{81,57,0}}, +/* 55550 */ {(13<<2)|2,{81,57,0}}, +/* 55551 */ {(13<<2)|2,{81,57,0}}, +/* 55552 */ {(13<<2)|2,{81,61,0}}, +/* 55553 */ {(13<<2)|2,{81,61,0}}, +/* 55554 */ {(13<<2)|2,{81,61,0}}, +/* 55555 */ {(13<<2)|2,{81,61,0}}, +/* 55556 */ {(13<<2)|2,{81,61,0}}, +/* 55557 */ {(13<<2)|2,{81,61,0}}, +/* 55558 */ {(13<<2)|2,{81,61,0}}, +/* 55559 */ {(13<<2)|2,{81,61,0}}, +/* 55560 */ {(13<<2)|2,{81,65,0}}, +/* 55561 */ {(13<<2)|2,{81,65,0}}, +/* 55562 */ {(13<<2)|2,{81,65,0}}, +/* 55563 */ {(13<<2)|2,{81,65,0}}, +/* 55564 */ {(13<<2)|2,{81,65,0}}, +/* 55565 */ {(13<<2)|2,{81,65,0}}, +/* 55566 */ {(13<<2)|2,{81,65,0}}, +/* 55567 */ {(13<<2)|2,{81,65,0}}, +/* 55568 */ {(13<<2)|2,{81,95,0}}, +/* 55569 */ {(13<<2)|2,{81,95,0}}, +/* 55570 */ {(13<<2)|2,{81,95,0}}, +/* 55571 */ {(13<<2)|2,{81,95,0}}, +/* 55572 */ {(13<<2)|2,{81,95,0}}, +/* 55573 */ {(13<<2)|2,{81,95,0}}, +/* 55574 */ {(13<<2)|2,{81,95,0}}, +/* 55575 */ {(13<<2)|2,{81,95,0}}, +/* 55576 */ {(13<<2)|2,{81,98,0}}, +/* 55577 */ {(13<<2)|2,{81,98,0}}, +/* 55578 */ {(13<<2)|2,{81,98,0}}, +/* 55579 */ {(13<<2)|2,{81,98,0}}, +/* 55580 */ {(13<<2)|2,{81,98,0}}, +/* 55581 */ {(13<<2)|2,{81,98,0}}, +/* 55582 */ {(13<<2)|2,{81,98,0}}, +/* 55583 */ {(13<<2)|2,{81,98,0}}, +/* 55584 */ {(13<<2)|2,{81,100,0}}, +/* 55585 */ {(13<<2)|2,{81,100,0}}, +/* 55586 */ {(13<<2)|2,{81,100,0}}, +/* 55587 */ {(13<<2)|2,{81,100,0}}, +/* 55588 */ {(13<<2)|2,{81,100,0}}, +/* 55589 */ {(13<<2)|2,{81,100,0}}, +/* 55590 */ {(13<<2)|2,{81,100,0}}, +/* 55591 */ {(13<<2)|2,{81,100,0}}, +/* 55592 */ {(13<<2)|2,{81,102,0}}, +/* 55593 */ {(13<<2)|2,{81,102,0}}, +/* 55594 */ {(13<<2)|2,{81,102,0}}, +/* 55595 */ {(13<<2)|2,{81,102,0}}, +/* 55596 */ {(13<<2)|2,{81,102,0}}, +/* 55597 */ {(13<<2)|2,{81,102,0}}, +/* 55598 */ {(13<<2)|2,{81,102,0}}, +/* 55599 */ {(13<<2)|2,{81,102,0}}, +/* 55600 */ {(13<<2)|2,{81,103,0}}, +/* 55601 */ {(13<<2)|2,{81,103,0}}, +/* 55602 */ {(13<<2)|2,{81,103,0}}, +/* 55603 */ {(13<<2)|2,{81,103,0}}, +/* 55604 */ {(13<<2)|2,{81,103,0}}, +/* 55605 */ {(13<<2)|2,{81,103,0}}, +/* 55606 */ {(13<<2)|2,{81,103,0}}, +/* 55607 */ {(13<<2)|2,{81,103,0}}, +/* 55608 */ {(13<<2)|2,{81,104,0}}, +/* 55609 */ {(13<<2)|2,{81,104,0}}, +/* 55610 */ {(13<<2)|2,{81,104,0}}, +/* 55611 */ {(13<<2)|2,{81,104,0}}, +/* 55612 */ {(13<<2)|2,{81,104,0}}, +/* 55613 */ {(13<<2)|2,{81,104,0}}, +/* 55614 */ {(13<<2)|2,{81,104,0}}, +/* 55615 */ {(13<<2)|2,{81,104,0}}, +/* 55616 */ {(13<<2)|2,{81,108,0}}, +/* 55617 */ {(13<<2)|2,{81,108,0}}, +/* 55618 */ {(13<<2)|2,{81,108,0}}, +/* 55619 */ {(13<<2)|2,{81,108,0}}, +/* 55620 */ {(13<<2)|2,{81,108,0}}, +/* 55621 */ {(13<<2)|2,{81,108,0}}, +/* 55622 */ {(13<<2)|2,{81,108,0}}, +/* 55623 */ {(13<<2)|2,{81,108,0}}, +/* 55624 */ {(13<<2)|2,{81,109,0}}, +/* 55625 */ {(13<<2)|2,{81,109,0}}, +/* 55626 */ {(13<<2)|2,{81,109,0}}, +/* 55627 */ {(13<<2)|2,{81,109,0}}, +/* 55628 */ {(13<<2)|2,{81,109,0}}, +/* 55629 */ {(13<<2)|2,{81,109,0}}, +/* 55630 */ {(13<<2)|2,{81,109,0}}, +/* 55631 */ {(13<<2)|2,{81,109,0}}, +/* 55632 */ {(13<<2)|2,{81,110,0}}, +/* 55633 */ {(13<<2)|2,{81,110,0}}, +/* 55634 */ {(13<<2)|2,{81,110,0}}, +/* 55635 */ {(13<<2)|2,{81,110,0}}, +/* 55636 */ {(13<<2)|2,{81,110,0}}, +/* 55637 */ {(13<<2)|2,{81,110,0}}, +/* 55638 */ {(13<<2)|2,{81,110,0}}, +/* 55639 */ {(13<<2)|2,{81,110,0}}, +/* 55640 */ {(13<<2)|2,{81,112,0}}, +/* 55641 */ {(13<<2)|2,{81,112,0}}, +/* 55642 */ {(13<<2)|2,{81,112,0}}, +/* 55643 */ {(13<<2)|2,{81,112,0}}, +/* 55644 */ {(13<<2)|2,{81,112,0}}, +/* 55645 */ {(13<<2)|2,{81,112,0}}, +/* 55646 */ {(13<<2)|2,{81,112,0}}, +/* 55647 */ {(13<<2)|2,{81,112,0}}, +/* 55648 */ {(13<<2)|2,{81,114,0}}, +/* 55649 */ {(13<<2)|2,{81,114,0}}, +/* 55650 */ {(13<<2)|2,{81,114,0}}, +/* 55651 */ {(13<<2)|2,{81,114,0}}, +/* 55652 */ {(13<<2)|2,{81,114,0}}, +/* 55653 */ {(13<<2)|2,{81,114,0}}, +/* 55654 */ {(13<<2)|2,{81,114,0}}, +/* 55655 */ {(13<<2)|2,{81,114,0}}, +/* 55656 */ {(13<<2)|2,{81,117,0}}, +/* 55657 */ {(13<<2)|2,{81,117,0}}, +/* 55658 */ {(13<<2)|2,{81,117,0}}, +/* 55659 */ {(13<<2)|2,{81,117,0}}, +/* 55660 */ {(13<<2)|2,{81,117,0}}, +/* 55661 */ {(13<<2)|2,{81,117,0}}, +/* 55662 */ {(13<<2)|2,{81,117,0}}, +/* 55663 */ {(13<<2)|2,{81,117,0}}, +/* 55664 */ {(14<<2)|2,{81,58,0}}, +/* 55665 */ {(14<<2)|2,{81,58,0}}, +/* 55666 */ {(14<<2)|2,{81,58,0}}, +/* 55667 */ {(14<<2)|2,{81,58,0}}, +/* 55668 */ {(14<<2)|2,{81,66,0}}, +/* 55669 */ {(14<<2)|2,{81,66,0}}, +/* 55670 */ {(14<<2)|2,{81,66,0}}, +/* 55671 */ {(14<<2)|2,{81,66,0}}, +/* 55672 */ {(14<<2)|2,{81,67,0}}, +/* 55673 */ {(14<<2)|2,{81,67,0}}, +/* 55674 */ {(14<<2)|2,{81,67,0}}, +/* 55675 */ {(14<<2)|2,{81,67,0}}, +/* 55676 */ {(14<<2)|2,{81,68,0}}, +/* 55677 */ {(14<<2)|2,{81,68,0}}, +/* 55678 */ {(14<<2)|2,{81,68,0}}, +/* 55679 */ {(14<<2)|2,{81,68,0}}, +/* 55680 */ {(14<<2)|2,{81,69,0}}, +/* 55681 */ {(14<<2)|2,{81,69,0}}, +/* 55682 */ {(14<<2)|2,{81,69,0}}, +/* 55683 */ {(14<<2)|2,{81,69,0}}, +/* 55684 */ {(14<<2)|2,{81,70,0}}, +/* 55685 */ {(14<<2)|2,{81,70,0}}, +/* 55686 */ {(14<<2)|2,{81,70,0}}, +/* 55687 */ {(14<<2)|2,{81,70,0}}, +/* 55688 */ {(14<<2)|2,{81,71,0}}, +/* 55689 */ {(14<<2)|2,{81,71,0}}, +/* 55690 */ {(14<<2)|2,{81,71,0}}, +/* 55691 */ {(14<<2)|2,{81,71,0}}, +/* 55692 */ {(14<<2)|2,{81,72,0}}, +/* 55693 */ {(14<<2)|2,{81,72,0}}, +/* 55694 */ {(14<<2)|2,{81,72,0}}, +/* 55695 */ {(14<<2)|2,{81,72,0}}, +/* 55696 */ {(14<<2)|2,{81,73,0}}, +/* 55697 */ {(14<<2)|2,{81,73,0}}, +/* 55698 */ {(14<<2)|2,{81,73,0}}, +/* 55699 */ {(14<<2)|2,{81,73,0}}, +/* 55700 */ {(14<<2)|2,{81,74,0}}, +/* 55701 */ {(14<<2)|2,{81,74,0}}, +/* 55702 */ {(14<<2)|2,{81,74,0}}, +/* 55703 */ {(14<<2)|2,{81,74,0}}, +/* 55704 */ {(14<<2)|2,{81,75,0}}, +/* 55705 */ {(14<<2)|2,{81,75,0}}, +/* 55706 */ {(14<<2)|2,{81,75,0}}, +/* 55707 */ {(14<<2)|2,{81,75,0}}, +/* 55708 */ {(14<<2)|2,{81,76,0}}, +/* 55709 */ {(14<<2)|2,{81,76,0}}, +/* 55710 */ {(14<<2)|2,{81,76,0}}, +/* 55711 */ {(14<<2)|2,{81,76,0}}, +/* 55712 */ {(14<<2)|2,{81,77,0}}, +/* 55713 */ {(14<<2)|2,{81,77,0}}, +/* 55714 */ {(14<<2)|2,{81,77,0}}, +/* 55715 */ {(14<<2)|2,{81,77,0}}, +/* 55716 */ {(14<<2)|2,{81,78,0}}, +/* 55717 */ {(14<<2)|2,{81,78,0}}, +/* 55718 */ {(14<<2)|2,{81,78,0}}, +/* 55719 */ {(14<<2)|2,{81,78,0}}, +/* 55720 */ {(14<<2)|2,{81,79,0}}, +/* 55721 */ {(14<<2)|2,{81,79,0}}, +/* 55722 */ {(14<<2)|2,{81,79,0}}, +/* 55723 */ {(14<<2)|2,{81,79,0}}, +/* 55724 */ {(14<<2)|2,{81,80,0}}, +/* 55725 */ {(14<<2)|2,{81,80,0}}, +/* 55726 */ {(14<<2)|2,{81,80,0}}, +/* 55727 */ {(14<<2)|2,{81,80,0}}, +/* 55728 */ {(14<<2)|2,{81,81,0}}, +/* 55729 */ {(14<<2)|2,{81,81,0}}, +/* 55730 */ {(14<<2)|2,{81,81,0}}, +/* 55731 */ {(14<<2)|2,{81,81,0}}, +/* 55732 */ {(14<<2)|2,{81,82,0}}, +/* 55733 */ {(14<<2)|2,{81,82,0}}, +/* 55734 */ {(14<<2)|2,{81,82,0}}, +/* 55735 */ {(14<<2)|2,{81,82,0}}, +/* 55736 */ {(14<<2)|2,{81,83,0}}, +/* 55737 */ {(14<<2)|2,{81,83,0}}, +/* 55738 */ {(14<<2)|2,{81,83,0}}, +/* 55739 */ {(14<<2)|2,{81,83,0}}, +/* 55740 */ {(14<<2)|2,{81,84,0}}, +/* 55741 */ {(14<<2)|2,{81,84,0}}, +/* 55742 */ {(14<<2)|2,{81,84,0}}, +/* 55743 */ {(14<<2)|2,{81,84,0}}, +/* 55744 */ {(14<<2)|2,{81,85,0}}, +/* 55745 */ {(14<<2)|2,{81,85,0}}, +/* 55746 */ {(14<<2)|2,{81,85,0}}, +/* 55747 */ {(14<<2)|2,{81,85,0}}, +/* 55748 */ {(14<<2)|2,{81,86,0}}, +/* 55749 */ {(14<<2)|2,{81,86,0}}, +/* 55750 */ {(14<<2)|2,{81,86,0}}, +/* 55751 */ {(14<<2)|2,{81,86,0}}, +/* 55752 */ {(14<<2)|2,{81,87,0}}, +/* 55753 */ {(14<<2)|2,{81,87,0}}, +/* 55754 */ {(14<<2)|2,{81,87,0}}, +/* 55755 */ {(14<<2)|2,{81,87,0}}, +/* 55756 */ {(14<<2)|2,{81,89,0}}, +/* 55757 */ {(14<<2)|2,{81,89,0}}, +/* 55758 */ {(14<<2)|2,{81,89,0}}, +/* 55759 */ {(14<<2)|2,{81,89,0}}, +/* 55760 */ {(14<<2)|2,{81,106,0}}, +/* 55761 */ {(14<<2)|2,{81,106,0}}, +/* 55762 */ {(14<<2)|2,{81,106,0}}, +/* 55763 */ {(14<<2)|2,{81,106,0}}, +/* 55764 */ {(14<<2)|2,{81,107,0}}, +/* 55765 */ {(14<<2)|2,{81,107,0}}, +/* 55766 */ {(14<<2)|2,{81,107,0}}, +/* 55767 */ {(14<<2)|2,{81,107,0}}, +/* 55768 */ {(14<<2)|2,{81,113,0}}, +/* 55769 */ {(14<<2)|2,{81,113,0}}, +/* 55770 */ {(14<<2)|2,{81,113,0}}, +/* 55771 */ {(14<<2)|2,{81,113,0}}, +/* 55772 */ {(14<<2)|2,{81,118,0}}, +/* 55773 */ {(14<<2)|2,{81,118,0}}, +/* 55774 */ {(14<<2)|2,{81,118,0}}, +/* 55775 */ {(14<<2)|2,{81,118,0}}, +/* 55776 */ {(14<<2)|2,{81,119,0}}, +/* 55777 */ {(14<<2)|2,{81,119,0}}, +/* 55778 */ {(14<<2)|2,{81,119,0}}, +/* 55779 */ {(14<<2)|2,{81,119,0}}, +/* 55780 */ {(14<<2)|2,{81,120,0}}, +/* 55781 */ {(14<<2)|2,{81,120,0}}, +/* 55782 */ {(14<<2)|2,{81,120,0}}, +/* 55783 */ {(14<<2)|2,{81,120,0}}, +/* 55784 */ {(14<<2)|2,{81,121,0}}, +/* 55785 */ {(14<<2)|2,{81,121,0}}, +/* 55786 */ {(14<<2)|2,{81,121,0}}, +/* 55787 */ {(14<<2)|2,{81,121,0}}, +/* 55788 */ {(14<<2)|2,{81,122,0}}, +/* 55789 */ {(14<<2)|2,{81,122,0}}, +/* 55790 */ {(14<<2)|2,{81,122,0}}, +/* 55791 */ {(14<<2)|2,{81,122,0}}, +/* 55792 */ {(15<<2)|2,{81,38,0}}, +/* 55793 */ {(15<<2)|2,{81,38,0}}, +/* 55794 */ {(15<<2)|2,{81,42,0}}, +/* 55795 */ {(15<<2)|2,{81,42,0}}, +/* 55796 */ {(15<<2)|2,{81,44,0}}, +/* 55797 */ {(15<<2)|2,{81,44,0}}, +/* 55798 */ {(15<<2)|2,{81,59,0}}, +/* 55799 */ {(15<<2)|2,{81,59,0}}, +/* 55800 */ {(15<<2)|2,{81,88,0}}, +/* 55801 */ {(15<<2)|2,{81,88,0}}, +/* 55802 */ {(15<<2)|2,{81,90,0}}, +/* 55803 */ {(15<<2)|2,{81,90,0}}, +/* 55804 */ {(7<<2)|1,{81,0,0}}, +/* 55805 */ {(7<<2)|1,{81,0,0}}, +/* 55806 */ {(7<<2)|1,{81,0,0}}, +/* 55807 */ {(7<<2)|1,{81,0,0}}, +/* 55808 */ {(12<<2)|2,{82,48,0}}, +/* 55809 */ {(12<<2)|2,{82,48,0}}, +/* 55810 */ {(12<<2)|2,{82,48,0}}, +/* 55811 */ {(12<<2)|2,{82,48,0}}, +/* 55812 */ {(12<<2)|2,{82,48,0}}, +/* 55813 */ {(12<<2)|2,{82,48,0}}, +/* 55814 */ {(12<<2)|2,{82,48,0}}, +/* 55815 */ {(12<<2)|2,{82,48,0}}, +/* 55816 */ {(12<<2)|2,{82,48,0}}, +/* 55817 */ {(12<<2)|2,{82,48,0}}, +/* 55818 */ {(12<<2)|2,{82,48,0}}, +/* 55819 */ {(12<<2)|2,{82,48,0}}, +/* 55820 */ {(12<<2)|2,{82,48,0}}, +/* 55821 */ {(12<<2)|2,{82,48,0}}, +/* 55822 */ {(12<<2)|2,{82,48,0}}, +/* 55823 */ {(12<<2)|2,{82,48,0}}, +/* 55824 */ {(12<<2)|2,{82,49,0}}, +/* 55825 */ {(12<<2)|2,{82,49,0}}, +/* 55826 */ {(12<<2)|2,{82,49,0}}, +/* 55827 */ {(12<<2)|2,{82,49,0}}, +/* 55828 */ {(12<<2)|2,{82,49,0}}, +/* 55829 */ {(12<<2)|2,{82,49,0}}, +/* 55830 */ {(12<<2)|2,{82,49,0}}, +/* 55831 */ {(12<<2)|2,{82,49,0}}, +/* 55832 */ {(12<<2)|2,{82,49,0}}, +/* 55833 */ {(12<<2)|2,{82,49,0}}, +/* 55834 */ {(12<<2)|2,{82,49,0}}, +/* 55835 */ {(12<<2)|2,{82,49,0}}, +/* 55836 */ {(12<<2)|2,{82,49,0}}, +/* 55837 */ {(12<<2)|2,{82,49,0}}, +/* 55838 */ {(12<<2)|2,{82,49,0}}, +/* 55839 */ {(12<<2)|2,{82,49,0}}, +/* 55840 */ {(12<<2)|2,{82,50,0}}, +/* 55841 */ {(12<<2)|2,{82,50,0}}, +/* 55842 */ {(12<<2)|2,{82,50,0}}, +/* 55843 */ {(12<<2)|2,{82,50,0}}, +/* 55844 */ {(12<<2)|2,{82,50,0}}, +/* 55845 */ {(12<<2)|2,{82,50,0}}, +/* 55846 */ {(12<<2)|2,{82,50,0}}, +/* 55847 */ {(12<<2)|2,{82,50,0}}, +/* 55848 */ {(12<<2)|2,{82,50,0}}, +/* 55849 */ {(12<<2)|2,{82,50,0}}, +/* 55850 */ {(12<<2)|2,{82,50,0}}, +/* 55851 */ {(12<<2)|2,{82,50,0}}, +/* 55852 */ {(12<<2)|2,{82,50,0}}, +/* 55853 */ {(12<<2)|2,{82,50,0}}, +/* 55854 */ {(12<<2)|2,{82,50,0}}, +/* 55855 */ {(12<<2)|2,{82,50,0}}, +/* 55856 */ {(12<<2)|2,{82,97,0}}, +/* 55857 */ {(12<<2)|2,{82,97,0}}, +/* 55858 */ {(12<<2)|2,{82,97,0}}, +/* 55859 */ {(12<<2)|2,{82,97,0}}, +/* 55860 */ {(12<<2)|2,{82,97,0}}, +/* 55861 */ {(12<<2)|2,{82,97,0}}, +/* 55862 */ {(12<<2)|2,{82,97,0}}, +/* 55863 */ {(12<<2)|2,{82,97,0}}, +/* 55864 */ {(12<<2)|2,{82,97,0}}, +/* 55865 */ {(12<<2)|2,{82,97,0}}, +/* 55866 */ {(12<<2)|2,{82,97,0}}, +/* 55867 */ {(12<<2)|2,{82,97,0}}, +/* 55868 */ {(12<<2)|2,{82,97,0}}, +/* 55869 */ {(12<<2)|2,{82,97,0}}, +/* 55870 */ {(12<<2)|2,{82,97,0}}, +/* 55871 */ {(12<<2)|2,{82,97,0}}, +/* 55872 */ {(12<<2)|2,{82,99,0}}, +/* 55873 */ {(12<<2)|2,{82,99,0}}, +/* 55874 */ {(12<<2)|2,{82,99,0}}, +/* 55875 */ {(12<<2)|2,{82,99,0}}, +/* 55876 */ {(12<<2)|2,{82,99,0}}, +/* 55877 */ {(12<<2)|2,{82,99,0}}, +/* 55878 */ {(12<<2)|2,{82,99,0}}, +/* 55879 */ {(12<<2)|2,{82,99,0}}, +/* 55880 */ {(12<<2)|2,{82,99,0}}, +/* 55881 */ {(12<<2)|2,{82,99,0}}, +/* 55882 */ {(12<<2)|2,{82,99,0}}, +/* 55883 */ {(12<<2)|2,{82,99,0}}, +/* 55884 */ {(12<<2)|2,{82,99,0}}, +/* 55885 */ {(12<<2)|2,{82,99,0}}, +/* 55886 */ {(12<<2)|2,{82,99,0}}, +/* 55887 */ {(12<<2)|2,{82,99,0}}, +/* 55888 */ {(12<<2)|2,{82,101,0}}, +/* 55889 */ {(12<<2)|2,{82,101,0}}, +/* 55890 */ {(12<<2)|2,{82,101,0}}, +/* 55891 */ {(12<<2)|2,{82,101,0}}, +/* 55892 */ {(12<<2)|2,{82,101,0}}, +/* 55893 */ {(12<<2)|2,{82,101,0}}, +/* 55894 */ {(12<<2)|2,{82,101,0}}, +/* 55895 */ {(12<<2)|2,{82,101,0}}, +/* 55896 */ {(12<<2)|2,{82,101,0}}, +/* 55897 */ {(12<<2)|2,{82,101,0}}, +/* 55898 */ {(12<<2)|2,{82,101,0}}, +/* 55899 */ {(12<<2)|2,{82,101,0}}, +/* 55900 */ {(12<<2)|2,{82,101,0}}, +/* 55901 */ {(12<<2)|2,{82,101,0}}, +/* 55902 */ {(12<<2)|2,{82,101,0}}, +/* 55903 */ {(12<<2)|2,{82,101,0}}, +/* 55904 */ {(12<<2)|2,{82,105,0}}, +/* 55905 */ {(12<<2)|2,{82,105,0}}, +/* 55906 */ {(12<<2)|2,{82,105,0}}, +/* 55907 */ {(12<<2)|2,{82,105,0}}, +/* 55908 */ {(12<<2)|2,{82,105,0}}, +/* 55909 */ {(12<<2)|2,{82,105,0}}, +/* 55910 */ {(12<<2)|2,{82,105,0}}, +/* 55911 */ {(12<<2)|2,{82,105,0}}, +/* 55912 */ {(12<<2)|2,{82,105,0}}, +/* 55913 */ {(12<<2)|2,{82,105,0}}, +/* 55914 */ {(12<<2)|2,{82,105,0}}, +/* 55915 */ {(12<<2)|2,{82,105,0}}, +/* 55916 */ {(12<<2)|2,{82,105,0}}, +/* 55917 */ {(12<<2)|2,{82,105,0}}, +/* 55918 */ {(12<<2)|2,{82,105,0}}, +/* 55919 */ {(12<<2)|2,{82,105,0}}, +/* 55920 */ {(12<<2)|2,{82,111,0}}, +/* 55921 */ {(12<<2)|2,{82,111,0}}, +/* 55922 */ {(12<<2)|2,{82,111,0}}, +/* 55923 */ {(12<<2)|2,{82,111,0}}, +/* 55924 */ {(12<<2)|2,{82,111,0}}, +/* 55925 */ {(12<<2)|2,{82,111,0}}, +/* 55926 */ {(12<<2)|2,{82,111,0}}, +/* 55927 */ {(12<<2)|2,{82,111,0}}, +/* 55928 */ {(12<<2)|2,{82,111,0}}, +/* 55929 */ {(12<<2)|2,{82,111,0}}, +/* 55930 */ {(12<<2)|2,{82,111,0}}, +/* 55931 */ {(12<<2)|2,{82,111,0}}, +/* 55932 */ {(12<<2)|2,{82,111,0}}, +/* 55933 */ {(12<<2)|2,{82,111,0}}, +/* 55934 */ {(12<<2)|2,{82,111,0}}, +/* 55935 */ {(12<<2)|2,{82,111,0}}, +/* 55936 */ {(12<<2)|2,{82,115,0}}, +/* 55937 */ {(12<<2)|2,{82,115,0}}, +/* 55938 */ {(12<<2)|2,{82,115,0}}, +/* 55939 */ {(12<<2)|2,{82,115,0}}, +/* 55940 */ {(12<<2)|2,{82,115,0}}, +/* 55941 */ {(12<<2)|2,{82,115,0}}, +/* 55942 */ {(12<<2)|2,{82,115,0}}, +/* 55943 */ {(12<<2)|2,{82,115,0}}, +/* 55944 */ {(12<<2)|2,{82,115,0}}, +/* 55945 */ {(12<<2)|2,{82,115,0}}, +/* 55946 */ {(12<<2)|2,{82,115,0}}, +/* 55947 */ {(12<<2)|2,{82,115,0}}, +/* 55948 */ {(12<<2)|2,{82,115,0}}, +/* 55949 */ {(12<<2)|2,{82,115,0}}, +/* 55950 */ {(12<<2)|2,{82,115,0}}, +/* 55951 */ {(12<<2)|2,{82,115,0}}, +/* 55952 */ {(12<<2)|2,{82,116,0}}, +/* 55953 */ {(12<<2)|2,{82,116,0}}, +/* 55954 */ {(12<<2)|2,{82,116,0}}, +/* 55955 */ {(12<<2)|2,{82,116,0}}, +/* 55956 */ {(12<<2)|2,{82,116,0}}, +/* 55957 */ {(12<<2)|2,{82,116,0}}, +/* 55958 */ {(12<<2)|2,{82,116,0}}, +/* 55959 */ {(12<<2)|2,{82,116,0}}, +/* 55960 */ {(12<<2)|2,{82,116,0}}, +/* 55961 */ {(12<<2)|2,{82,116,0}}, +/* 55962 */ {(12<<2)|2,{82,116,0}}, +/* 55963 */ {(12<<2)|2,{82,116,0}}, +/* 55964 */ {(12<<2)|2,{82,116,0}}, +/* 55965 */ {(12<<2)|2,{82,116,0}}, +/* 55966 */ {(12<<2)|2,{82,116,0}}, +/* 55967 */ {(12<<2)|2,{82,116,0}}, +/* 55968 */ {(13<<2)|2,{82,32,0}}, +/* 55969 */ {(13<<2)|2,{82,32,0}}, +/* 55970 */ {(13<<2)|2,{82,32,0}}, +/* 55971 */ {(13<<2)|2,{82,32,0}}, +/* 55972 */ {(13<<2)|2,{82,32,0}}, +/* 55973 */ {(13<<2)|2,{82,32,0}}, +/* 55974 */ {(13<<2)|2,{82,32,0}}, +/* 55975 */ {(13<<2)|2,{82,32,0}}, +/* 55976 */ {(13<<2)|2,{82,37,0}}, +/* 55977 */ {(13<<2)|2,{82,37,0}}, +/* 55978 */ {(13<<2)|2,{82,37,0}}, +/* 55979 */ {(13<<2)|2,{82,37,0}}, +/* 55980 */ {(13<<2)|2,{82,37,0}}, +/* 55981 */ {(13<<2)|2,{82,37,0}}, +/* 55982 */ {(13<<2)|2,{82,37,0}}, +/* 55983 */ {(13<<2)|2,{82,37,0}}, +/* 55984 */ {(13<<2)|2,{82,45,0}}, +/* 55985 */ {(13<<2)|2,{82,45,0}}, +/* 55986 */ {(13<<2)|2,{82,45,0}}, +/* 55987 */ {(13<<2)|2,{82,45,0}}, +/* 55988 */ {(13<<2)|2,{82,45,0}}, +/* 55989 */ {(13<<2)|2,{82,45,0}}, +/* 55990 */ {(13<<2)|2,{82,45,0}}, +/* 55991 */ {(13<<2)|2,{82,45,0}}, +/* 55992 */ {(13<<2)|2,{82,46,0}}, +/* 55993 */ {(13<<2)|2,{82,46,0}}, +/* 55994 */ {(13<<2)|2,{82,46,0}}, +/* 55995 */ {(13<<2)|2,{82,46,0}}, +/* 55996 */ {(13<<2)|2,{82,46,0}}, +/* 55997 */ {(13<<2)|2,{82,46,0}}, +/* 55998 */ {(13<<2)|2,{82,46,0}}, +/* 55999 */ {(13<<2)|2,{82,46,0}}, +/* 56000 */ {(13<<2)|2,{82,47,0}}, +/* 56001 */ {(13<<2)|2,{82,47,0}}, +/* 56002 */ {(13<<2)|2,{82,47,0}}, +/* 56003 */ {(13<<2)|2,{82,47,0}}, +/* 56004 */ {(13<<2)|2,{82,47,0}}, +/* 56005 */ {(13<<2)|2,{82,47,0}}, +/* 56006 */ {(13<<2)|2,{82,47,0}}, +/* 56007 */ {(13<<2)|2,{82,47,0}}, +/* 56008 */ {(13<<2)|2,{82,51,0}}, +/* 56009 */ {(13<<2)|2,{82,51,0}}, +/* 56010 */ {(13<<2)|2,{82,51,0}}, +/* 56011 */ {(13<<2)|2,{82,51,0}}, +/* 56012 */ {(13<<2)|2,{82,51,0}}, +/* 56013 */ {(13<<2)|2,{82,51,0}}, +/* 56014 */ {(13<<2)|2,{82,51,0}}, +/* 56015 */ {(13<<2)|2,{82,51,0}}, +/* 56016 */ {(13<<2)|2,{82,52,0}}, +/* 56017 */ {(13<<2)|2,{82,52,0}}, +/* 56018 */ {(13<<2)|2,{82,52,0}}, +/* 56019 */ {(13<<2)|2,{82,52,0}}, +/* 56020 */ {(13<<2)|2,{82,52,0}}, +/* 56021 */ {(13<<2)|2,{82,52,0}}, +/* 56022 */ {(13<<2)|2,{82,52,0}}, +/* 56023 */ {(13<<2)|2,{82,52,0}}, +/* 56024 */ {(13<<2)|2,{82,53,0}}, +/* 56025 */ {(13<<2)|2,{82,53,0}}, +/* 56026 */ {(13<<2)|2,{82,53,0}}, +/* 56027 */ {(13<<2)|2,{82,53,0}}, +/* 56028 */ {(13<<2)|2,{82,53,0}}, +/* 56029 */ {(13<<2)|2,{82,53,0}}, +/* 56030 */ {(13<<2)|2,{82,53,0}}, +/* 56031 */ {(13<<2)|2,{82,53,0}}, +/* 56032 */ {(13<<2)|2,{82,54,0}}, +/* 56033 */ {(13<<2)|2,{82,54,0}}, +/* 56034 */ {(13<<2)|2,{82,54,0}}, +/* 56035 */ {(13<<2)|2,{82,54,0}}, +/* 56036 */ {(13<<2)|2,{82,54,0}}, +/* 56037 */ {(13<<2)|2,{82,54,0}}, +/* 56038 */ {(13<<2)|2,{82,54,0}}, +/* 56039 */ {(13<<2)|2,{82,54,0}}, +/* 56040 */ {(13<<2)|2,{82,55,0}}, +/* 56041 */ {(13<<2)|2,{82,55,0}}, +/* 56042 */ {(13<<2)|2,{82,55,0}}, +/* 56043 */ {(13<<2)|2,{82,55,0}}, +/* 56044 */ {(13<<2)|2,{82,55,0}}, +/* 56045 */ {(13<<2)|2,{82,55,0}}, +/* 56046 */ {(13<<2)|2,{82,55,0}}, +/* 56047 */ {(13<<2)|2,{82,55,0}}, +/* 56048 */ {(13<<2)|2,{82,56,0}}, +/* 56049 */ {(13<<2)|2,{82,56,0}}, +/* 56050 */ {(13<<2)|2,{82,56,0}}, +/* 56051 */ {(13<<2)|2,{82,56,0}}, +/* 56052 */ {(13<<2)|2,{82,56,0}}, +/* 56053 */ {(13<<2)|2,{82,56,0}}, +/* 56054 */ {(13<<2)|2,{82,56,0}}, +/* 56055 */ {(13<<2)|2,{82,56,0}}, +/* 56056 */ {(13<<2)|2,{82,57,0}}, +/* 56057 */ {(13<<2)|2,{82,57,0}}, +/* 56058 */ {(13<<2)|2,{82,57,0}}, +/* 56059 */ {(13<<2)|2,{82,57,0}}, +/* 56060 */ {(13<<2)|2,{82,57,0}}, +/* 56061 */ {(13<<2)|2,{82,57,0}}, +/* 56062 */ {(13<<2)|2,{82,57,0}}, +/* 56063 */ {(13<<2)|2,{82,57,0}}, +/* 56064 */ {(13<<2)|2,{82,61,0}}, +/* 56065 */ {(13<<2)|2,{82,61,0}}, +/* 56066 */ {(13<<2)|2,{82,61,0}}, +/* 56067 */ {(13<<2)|2,{82,61,0}}, +/* 56068 */ {(13<<2)|2,{82,61,0}}, +/* 56069 */ {(13<<2)|2,{82,61,0}}, +/* 56070 */ {(13<<2)|2,{82,61,0}}, +/* 56071 */ {(13<<2)|2,{82,61,0}}, +/* 56072 */ {(13<<2)|2,{82,65,0}}, +/* 56073 */ {(13<<2)|2,{82,65,0}}, +/* 56074 */ {(13<<2)|2,{82,65,0}}, +/* 56075 */ {(13<<2)|2,{82,65,0}}, +/* 56076 */ {(13<<2)|2,{82,65,0}}, +/* 56077 */ {(13<<2)|2,{82,65,0}}, +/* 56078 */ {(13<<2)|2,{82,65,0}}, +/* 56079 */ {(13<<2)|2,{82,65,0}}, +/* 56080 */ {(13<<2)|2,{82,95,0}}, +/* 56081 */ {(13<<2)|2,{82,95,0}}, +/* 56082 */ {(13<<2)|2,{82,95,0}}, +/* 56083 */ {(13<<2)|2,{82,95,0}}, +/* 56084 */ {(13<<2)|2,{82,95,0}}, +/* 56085 */ {(13<<2)|2,{82,95,0}}, +/* 56086 */ {(13<<2)|2,{82,95,0}}, +/* 56087 */ {(13<<2)|2,{82,95,0}}, +/* 56088 */ {(13<<2)|2,{82,98,0}}, +/* 56089 */ {(13<<2)|2,{82,98,0}}, +/* 56090 */ {(13<<2)|2,{82,98,0}}, +/* 56091 */ {(13<<2)|2,{82,98,0}}, +/* 56092 */ {(13<<2)|2,{82,98,0}}, +/* 56093 */ {(13<<2)|2,{82,98,0}}, +/* 56094 */ {(13<<2)|2,{82,98,0}}, +/* 56095 */ {(13<<2)|2,{82,98,0}}, +/* 56096 */ {(13<<2)|2,{82,100,0}}, +/* 56097 */ {(13<<2)|2,{82,100,0}}, +/* 56098 */ {(13<<2)|2,{82,100,0}}, +/* 56099 */ {(13<<2)|2,{82,100,0}}, +/* 56100 */ {(13<<2)|2,{82,100,0}}, +/* 56101 */ {(13<<2)|2,{82,100,0}}, +/* 56102 */ {(13<<2)|2,{82,100,0}}, +/* 56103 */ {(13<<2)|2,{82,100,0}}, +/* 56104 */ {(13<<2)|2,{82,102,0}}, +/* 56105 */ {(13<<2)|2,{82,102,0}}, +/* 56106 */ {(13<<2)|2,{82,102,0}}, +/* 56107 */ {(13<<2)|2,{82,102,0}}, +/* 56108 */ {(13<<2)|2,{82,102,0}}, +/* 56109 */ {(13<<2)|2,{82,102,0}}, +/* 56110 */ {(13<<2)|2,{82,102,0}}, +/* 56111 */ {(13<<2)|2,{82,102,0}}, +/* 56112 */ {(13<<2)|2,{82,103,0}}, +/* 56113 */ {(13<<2)|2,{82,103,0}}, +/* 56114 */ {(13<<2)|2,{82,103,0}}, +/* 56115 */ {(13<<2)|2,{82,103,0}}, +/* 56116 */ {(13<<2)|2,{82,103,0}}, +/* 56117 */ {(13<<2)|2,{82,103,0}}, +/* 56118 */ {(13<<2)|2,{82,103,0}}, +/* 56119 */ {(13<<2)|2,{82,103,0}}, +/* 56120 */ {(13<<2)|2,{82,104,0}}, +/* 56121 */ {(13<<2)|2,{82,104,0}}, +/* 56122 */ {(13<<2)|2,{82,104,0}}, +/* 56123 */ {(13<<2)|2,{82,104,0}}, +/* 56124 */ {(13<<2)|2,{82,104,0}}, +/* 56125 */ {(13<<2)|2,{82,104,0}}, +/* 56126 */ {(13<<2)|2,{82,104,0}}, +/* 56127 */ {(13<<2)|2,{82,104,0}}, +/* 56128 */ {(13<<2)|2,{82,108,0}}, +/* 56129 */ {(13<<2)|2,{82,108,0}}, +/* 56130 */ {(13<<2)|2,{82,108,0}}, +/* 56131 */ {(13<<2)|2,{82,108,0}}, +/* 56132 */ {(13<<2)|2,{82,108,0}}, +/* 56133 */ {(13<<2)|2,{82,108,0}}, +/* 56134 */ {(13<<2)|2,{82,108,0}}, +/* 56135 */ {(13<<2)|2,{82,108,0}}, +/* 56136 */ {(13<<2)|2,{82,109,0}}, +/* 56137 */ {(13<<2)|2,{82,109,0}}, +/* 56138 */ {(13<<2)|2,{82,109,0}}, +/* 56139 */ {(13<<2)|2,{82,109,0}}, +/* 56140 */ {(13<<2)|2,{82,109,0}}, +/* 56141 */ {(13<<2)|2,{82,109,0}}, +/* 56142 */ {(13<<2)|2,{82,109,0}}, +/* 56143 */ {(13<<2)|2,{82,109,0}}, +/* 56144 */ {(13<<2)|2,{82,110,0}}, +/* 56145 */ {(13<<2)|2,{82,110,0}}, +/* 56146 */ {(13<<2)|2,{82,110,0}}, +/* 56147 */ {(13<<2)|2,{82,110,0}}, +/* 56148 */ {(13<<2)|2,{82,110,0}}, +/* 56149 */ {(13<<2)|2,{82,110,0}}, +/* 56150 */ {(13<<2)|2,{82,110,0}}, +/* 56151 */ {(13<<2)|2,{82,110,0}}, +/* 56152 */ {(13<<2)|2,{82,112,0}}, +/* 56153 */ {(13<<2)|2,{82,112,0}}, +/* 56154 */ {(13<<2)|2,{82,112,0}}, +/* 56155 */ {(13<<2)|2,{82,112,0}}, +/* 56156 */ {(13<<2)|2,{82,112,0}}, +/* 56157 */ {(13<<2)|2,{82,112,0}}, +/* 56158 */ {(13<<2)|2,{82,112,0}}, +/* 56159 */ {(13<<2)|2,{82,112,0}}, +/* 56160 */ {(13<<2)|2,{82,114,0}}, +/* 56161 */ {(13<<2)|2,{82,114,0}}, +/* 56162 */ {(13<<2)|2,{82,114,0}}, +/* 56163 */ {(13<<2)|2,{82,114,0}}, +/* 56164 */ {(13<<2)|2,{82,114,0}}, +/* 56165 */ {(13<<2)|2,{82,114,0}}, +/* 56166 */ {(13<<2)|2,{82,114,0}}, +/* 56167 */ {(13<<2)|2,{82,114,0}}, +/* 56168 */ {(13<<2)|2,{82,117,0}}, +/* 56169 */ {(13<<2)|2,{82,117,0}}, +/* 56170 */ {(13<<2)|2,{82,117,0}}, +/* 56171 */ {(13<<2)|2,{82,117,0}}, +/* 56172 */ {(13<<2)|2,{82,117,0}}, +/* 56173 */ {(13<<2)|2,{82,117,0}}, +/* 56174 */ {(13<<2)|2,{82,117,0}}, +/* 56175 */ {(13<<2)|2,{82,117,0}}, +/* 56176 */ {(14<<2)|2,{82,58,0}}, +/* 56177 */ {(14<<2)|2,{82,58,0}}, +/* 56178 */ {(14<<2)|2,{82,58,0}}, +/* 56179 */ {(14<<2)|2,{82,58,0}}, +/* 56180 */ {(14<<2)|2,{82,66,0}}, +/* 56181 */ {(14<<2)|2,{82,66,0}}, +/* 56182 */ {(14<<2)|2,{82,66,0}}, +/* 56183 */ {(14<<2)|2,{82,66,0}}, +/* 56184 */ {(14<<2)|2,{82,67,0}}, +/* 56185 */ {(14<<2)|2,{82,67,0}}, +/* 56186 */ {(14<<2)|2,{82,67,0}}, +/* 56187 */ {(14<<2)|2,{82,67,0}}, +/* 56188 */ {(14<<2)|2,{82,68,0}}, +/* 56189 */ {(14<<2)|2,{82,68,0}}, +/* 56190 */ {(14<<2)|2,{82,68,0}}, +/* 56191 */ {(14<<2)|2,{82,68,0}}, +/* 56192 */ {(14<<2)|2,{82,69,0}}, +/* 56193 */ {(14<<2)|2,{82,69,0}}, +/* 56194 */ {(14<<2)|2,{82,69,0}}, +/* 56195 */ {(14<<2)|2,{82,69,0}}, +/* 56196 */ {(14<<2)|2,{82,70,0}}, +/* 56197 */ {(14<<2)|2,{82,70,0}}, +/* 56198 */ {(14<<2)|2,{82,70,0}}, +/* 56199 */ {(14<<2)|2,{82,70,0}}, +/* 56200 */ {(14<<2)|2,{82,71,0}}, +/* 56201 */ {(14<<2)|2,{82,71,0}}, +/* 56202 */ {(14<<2)|2,{82,71,0}}, +/* 56203 */ {(14<<2)|2,{82,71,0}}, +/* 56204 */ {(14<<2)|2,{82,72,0}}, +/* 56205 */ {(14<<2)|2,{82,72,0}}, +/* 56206 */ {(14<<2)|2,{82,72,0}}, +/* 56207 */ {(14<<2)|2,{82,72,0}}, +/* 56208 */ {(14<<2)|2,{82,73,0}}, +/* 56209 */ {(14<<2)|2,{82,73,0}}, +/* 56210 */ {(14<<2)|2,{82,73,0}}, +/* 56211 */ {(14<<2)|2,{82,73,0}}, +/* 56212 */ {(14<<2)|2,{82,74,0}}, +/* 56213 */ {(14<<2)|2,{82,74,0}}, +/* 56214 */ {(14<<2)|2,{82,74,0}}, +/* 56215 */ {(14<<2)|2,{82,74,0}}, +/* 56216 */ {(14<<2)|2,{82,75,0}}, +/* 56217 */ {(14<<2)|2,{82,75,0}}, +/* 56218 */ {(14<<2)|2,{82,75,0}}, +/* 56219 */ {(14<<2)|2,{82,75,0}}, +/* 56220 */ {(14<<2)|2,{82,76,0}}, +/* 56221 */ {(14<<2)|2,{82,76,0}}, +/* 56222 */ {(14<<2)|2,{82,76,0}}, +/* 56223 */ {(14<<2)|2,{82,76,0}}, +/* 56224 */ {(14<<2)|2,{82,77,0}}, +/* 56225 */ {(14<<2)|2,{82,77,0}}, +/* 56226 */ {(14<<2)|2,{82,77,0}}, +/* 56227 */ {(14<<2)|2,{82,77,0}}, +/* 56228 */ {(14<<2)|2,{82,78,0}}, +/* 56229 */ {(14<<2)|2,{82,78,0}}, +/* 56230 */ {(14<<2)|2,{82,78,0}}, +/* 56231 */ {(14<<2)|2,{82,78,0}}, +/* 56232 */ {(14<<2)|2,{82,79,0}}, +/* 56233 */ {(14<<2)|2,{82,79,0}}, +/* 56234 */ {(14<<2)|2,{82,79,0}}, +/* 56235 */ {(14<<2)|2,{82,79,0}}, +/* 56236 */ {(14<<2)|2,{82,80,0}}, +/* 56237 */ {(14<<2)|2,{82,80,0}}, +/* 56238 */ {(14<<2)|2,{82,80,0}}, +/* 56239 */ {(14<<2)|2,{82,80,0}}, +/* 56240 */ {(14<<2)|2,{82,81,0}}, +/* 56241 */ {(14<<2)|2,{82,81,0}}, +/* 56242 */ {(14<<2)|2,{82,81,0}}, +/* 56243 */ {(14<<2)|2,{82,81,0}}, +/* 56244 */ {(14<<2)|2,{82,82,0}}, +/* 56245 */ {(14<<2)|2,{82,82,0}}, +/* 56246 */ {(14<<2)|2,{82,82,0}}, +/* 56247 */ {(14<<2)|2,{82,82,0}}, +/* 56248 */ {(14<<2)|2,{82,83,0}}, +/* 56249 */ {(14<<2)|2,{82,83,0}}, +/* 56250 */ {(14<<2)|2,{82,83,0}}, +/* 56251 */ {(14<<2)|2,{82,83,0}}, +/* 56252 */ {(14<<2)|2,{82,84,0}}, +/* 56253 */ {(14<<2)|2,{82,84,0}}, +/* 56254 */ {(14<<2)|2,{82,84,0}}, +/* 56255 */ {(14<<2)|2,{82,84,0}}, +/* 56256 */ {(14<<2)|2,{82,85,0}}, +/* 56257 */ {(14<<2)|2,{82,85,0}}, +/* 56258 */ {(14<<2)|2,{82,85,0}}, +/* 56259 */ {(14<<2)|2,{82,85,0}}, +/* 56260 */ {(14<<2)|2,{82,86,0}}, +/* 56261 */ {(14<<2)|2,{82,86,0}}, +/* 56262 */ {(14<<2)|2,{82,86,0}}, +/* 56263 */ {(14<<2)|2,{82,86,0}}, +/* 56264 */ {(14<<2)|2,{82,87,0}}, +/* 56265 */ {(14<<2)|2,{82,87,0}}, +/* 56266 */ {(14<<2)|2,{82,87,0}}, +/* 56267 */ {(14<<2)|2,{82,87,0}}, +/* 56268 */ {(14<<2)|2,{82,89,0}}, +/* 56269 */ {(14<<2)|2,{82,89,0}}, +/* 56270 */ {(14<<2)|2,{82,89,0}}, +/* 56271 */ {(14<<2)|2,{82,89,0}}, +/* 56272 */ {(14<<2)|2,{82,106,0}}, +/* 56273 */ {(14<<2)|2,{82,106,0}}, +/* 56274 */ {(14<<2)|2,{82,106,0}}, +/* 56275 */ {(14<<2)|2,{82,106,0}}, +/* 56276 */ {(14<<2)|2,{82,107,0}}, +/* 56277 */ {(14<<2)|2,{82,107,0}}, +/* 56278 */ {(14<<2)|2,{82,107,0}}, +/* 56279 */ {(14<<2)|2,{82,107,0}}, +/* 56280 */ {(14<<2)|2,{82,113,0}}, +/* 56281 */ {(14<<2)|2,{82,113,0}}, +/* 56282 */ {(14<<2)|2,{82,113,0}}, +/* 56283 */ {(14<<2)|2,{82,113,0}}, +/* 56284 */ {(14<<2)|2,{82,118,0}}, +/* 56285 */ {(14<<2)|2,{82,118,0}}, +/* 56286 */ {(14<<2)|2,{82,118,0}}, +/* 56287 */ {(14<<2)|2,{82,118,0}}, +/* 56288 */ {(14<<2)|2,{82,119,0}}, +/* 56289 */ {(14<<2)|2,{82,119,0}}, +/* 56290 */ {(14<<2)|2,{82,119,0}}, +/* 56291 */ {(14<<2)|2,{82,119,0}}, +/* 56292 */ {(14<<2)|2,{82,120,0}}, +/* 56293 */ {(14<<2)|2,{82,120,0}}, +/* 56294 */ {(14<<2)|2,{82,120,0}}, +/* 56295 */ {(14<<2)|2,{82,120,0}}, +/* 56296 */ {(14<<2)|2,{82,121,0}}, +/* 56297 */ {(14<<2)|2,{82,121,0}}, +/* 56298 */ {(14<<2)|2,{82,121,0}}, +/* 56299 */ {(14<<2)|2,{82,121,0}}, +/* 56300 */ {(14<<2)|2,{82,122,0}}, +/* 56301 */ {(14<<2)|2,{82,122,0}}, +/* 56302 */ {(14<<2)|2,{82,122,0}}, +/* 56303 */ {(14<<2)|2,{82,122,0}}, +/* 56304 */ {(15<<2)|2,{82,38,0}}, +/* 56305 */ {(15<<2)|2,{82,38,0}}, +/* 56306 */ {(15<<2)|2,{82,42,0}}, +/* 56307 */ {(15<<2)|2,{82,42,0}}, +/* 56308 */ {(15<<2)|2,{82,44,0}}, +/* 56309 */ {(15<<2)|2,{82,44,0}}, +/* 56310 */ {(15<<2)|2,{82,59,0}}, +/* 56311 */ {(15<<2)|2,{82,59,0}}, +/* 56312 */ {(15<<2)|2,{82,88,0}}, +/* 56313 */ {(15<<2)|2,{82,88,0}}, +/* 56314 */ {(15<<2)|2,{82,90,0}}, +/* 56315 */ {(15<<2)|2,{82,90,0}}, +/* 56316 */ {(7<<2)|1,{82,0,0}}, +/* 56317 */ {(7<<2)|1,{82,0,0}}, +/* 56318 */ {(7<<2)|1,{82,0,0}}, +/* 56319 */ {(7<<2)|1,{82,0,0}}, +/* 56320 */ {(12<<2)|2,{83,48,0}}, +/* 56321 */ {(12<<2)|2,{83,48,0}}, +/* 56322 */ {(12<<2)|2,{83,48,0}}, +/* 56323 */ {(12<<2)|2,{83,48,0}}, +/* 56324 */ {(12<<2)|2,{83,48,0}}, +/* 56325 */ {(12<<2)|2,{83,48,0}}, +/* 56326 */ {(12<<2)|2,{83,48,0}}, +/* 56327 */ {(12<<2)|2,{83,48,0}}, +/* 56328 */ {(12<<2)|2,{83,48,0}}, +/* 56329 */ {(12<<2)|2,{83,48,0}}, +/* 56330 */ {(12<<2)|2,{83,48,0}}, +/* 56331 */ {(12<<2)|2,{83,48,0}}, +/* 56332 */ {(12<<2)|2,{83,48,0}}, +/* 56333 */ {(12<<2)|2,{83,48,0}}, +/* 56334 */ {(12<<2)|2,{83,48,0}}, +/* 56335 */ {(12<<2)|2,{83,48,0}}, +/* 56336 */ {(12<<2)|2,{83,49,0}}, +/* 56337 */ {(12<<2)|2,{83,49,0}}, +/* 56338 */ {(12<<2)|2,{83,49,0}}, +/* 56339 */ {(12<<2)|2,{83,49,0}}, +/* 56340 */ {(12<<2)|2,{83,49,0}}, +/* 56341 */ {(12<<2)|2,{83,49,0}}, +/* 56342 */ {(12<<2)|2,{83,49,0}}, +/* 56343 */ {(12<<2)|2,{83,49,0}}, +/* 56344 */ {(12<<2)|2,{83,49,0}}, +/* 56345 */ {(12<<2)|2,{83,49,0}}, +/* 56346 */ {(12<<2)|2,{83,49,0}}, +/* 56347 */ {(12<<2)|2,{83,49,0}}, +/* 56348 */ {(12<<2)|2,{83,49,0}}, +/* 56349 */ {(12<<2)|2,{83,49,0}}, +/* 56350 */ {(12<<2)|2,{83,49,0}}, +/* 56351 */ {(12<<2)|2,{83,49,0}}, +/* 56352 */ {(12<<2)|2,{83,50,0}}, +/* 56353 */ {(12<<2)|2,{83,50,0}}, +/* 56354 */ {(12<<2)|2,{83,50,0}}, +/* 56355 */ {(12<<2)|2,{83,50,0}}, +/* 56356 */ {(12<<2)|2,{83,50,0}}, +/* 56357 */ {(12<<2)|2,{83,50,0}}, +/* 56358 */ {(12<<2)|2,{83,50,0}}, +/* 56359 */ {(12<<2)|2,{83,50,0}}, +/* 56360 */ {(12<<2)|2,{83,50,0}}, +/* 56361 */ {(12<<2)|2,{83,50,0}}, +/* 56362 */ {(12<<2)|2,{83,50,0}}, +/* 56363 */ {(12<<2)|2,{83,50,0}}, +/* 56364 */ {(12<<2)|2,{83,50,0}}, +/* 56365 */ {(12<<2)|2,{83,50,0}}, +/* 56366 */ {(12<<2)|2,{83,50,0}}, +/* 56367 */ {(12<<2)|2,{83,50,0}}, +/* 56368 */ {(12<<2)|2,{83,97,0}}, +/* 56369 */ {(12<<2)|2,{83,97,0}}, +/* 56370 */ {(12<<2)|2,{83,97,0}}, +/* 56371 */ {(12<<2)|2,{83,97,0}}, +/* 56372 */ {(12<<2)|2,{83,97,0}}, +/* 56373 */ {(12<<2)|2,{83,97,0}}, +/* 56374 */ {(12<<2)|2,{83,97,0}}, +/* 56375 */ {(12<<2)|2,{83,97,0}}, +/* 56376 */ {(12<<2)|2,{83,97,0}}, +/* 56377 */ {(12<<2)|2,{83,97,0}}, +/* 56378 */ {(12<<2)|2,{83,97,0}}, +/* 56379 */ {(12<<2)|2,{83,97,0}}, +/* 56380 */ {(12<<2)|2,{83,97,0}}, +/* 56381 */ {(12<<2)|2,{83,97,0}}, +/* 56382 */ {(12<<2)|2,{83,97,0}}, +/* 56383 */ {(12<<2)|2,{83,97,0}}, +/* 56384 */ {(12<<2)|2,{83,99,0}}, +/* 56385 */ {(12<<2)|2,{83,99,0}}, +/* 56386 */ {(12<<2)|2,{83,99,0}}, +/* 56387 */ {(12<<2)|2,{83,99,0}}, +/* 56388 */ {(12<<2)|2,{83,99,0}}, +/* 56389 */ {(12<<2)|2,{83,99,0}}, +/* 56390 */ {(12<<2)|2,{83,99,0}}, +/* 56391 */ {(12<<2)|2,{83,99,0}}, +/* 56392 */ {(12<<2)|2,{83,99,0}}, +/* 56393 */ {(12<<2)|2,{83,99,0}}, +/* 56394 */ {(12<<2)|2,{83,99,0}}, +/* 56395 */ {(12<<2)|2,{83,99,0}}, +/* 56396 */ {(12<<2)|2,{83,99,0}}, +/* 56397 */ {(12<<2)|2,{83,99,0}}, +/* 56398 */ {(12<<2)|2,{83,99,0}}, +/* 56399 */ {(12<<2)|2,{83,99,0}}, +/* 56400 */ {(12<<2)|2,{83,101,0}}, +/* 56401 */ {(12<<2)|2,{83,101,0}}, +/* 56402 */ {(12<<2)|2,{83,101,0}}, +/* 56403 */ {(12<<2)|2,{83,101,0}}, +/* 56404 */ {(12<<2)|2,{83,101,0}}, +/* 56405 */ {(12<<2)|2,{83,101,0}}, +/* 56406 */ {(12<<2)|2,{83,101,0}}, +/* 56407 */ {(12<<2)|2,{83,101,0}}, +/* 56408 */ {(12<<2)|2,{83,101,0}}, +/* 56409 */ {(12<<2)|2,{83,101,0}}, +/* 56410 */ {(12<<2)|2,{83,101,0}}, +/* 56411 */ {(12<<2)|2,{83,101,0}}, +/* 56412 */ {(12<<2)|2,{83,101,0}}, +/* 56413 */ {(12<<2)|2,{83,101,0}}, +/* 56414 */ {(12<<2)|2,{83,101,0}}, +/* 56415 */ {(12<<2)|2,{83,101,0}}, +/* 56416 */ {(12<<2)|2,{83,105,0}}, +/* 56417 */ {(12<<2)|2,{83,105,0}}, +/* 56418 */ {(12<<2)|2,{83,105,0}}, +/* 56419 */ {(12<<2)|2,{83,105,0}}, +/* 56420 */ {(12<<2)|2,{83,105,0}}, +/* 56421 */ {(12<<2)|2,{83,105,0}}, +/* 56422 */ {(12<<2)|2,{83,105,0}}, +/* 56423 */ {(12<<2)|2,{83,105,0}}, +/* 56424 */ {(12<<2)|2,{83,105,0}}, +/* 56425 */ {(12<<2)|2,{83,105,0}}, +/* 56426 */ {(12<<2)|2,{83,105,0}}, +/* 56427 */ {(12<<2)|2,{83,105,0}}, +/* 56428 */ {(12<<2)|2,{83,105,0}}, +/* 56429 */ {(12<<2)|2,{83,105,0}}, +/* 56430 */ {(12<<2)|2,{83,105,0}}, +/* 56431 */ {(12<<2)|2,{83,105,0}}, +/* 56432 */ {(12<<2)|2,{83,111,0}}, +/* 56433 */ {(12<<2)|2,{83,111,0}}, +/* 56434 */ {(12<<2)|2,{83,111,0}}, +/* 56435 */ {(12<<2)|2,{83,111,0}}, +/* 56436 */ {(12<<2)|2,{83,111,0}}, +/* 56437 */ {(12<<2)|2,{83,111,0}}, +/* 56438 */ {(12<<2)|2,{83,111,0}}, +/* 56439 */ {(12<<2)|2,{83,111,0}}, +/* 56440 */ {(12<<2)|2,{83,111,0}}, +/* 56441 */ {(12<<2)|2,{83,111,0}}, +/* 56442 */ {(12<<2)|2,{83,111,0}}, +/* 56443 */ {(12<<2)|2,{83,111,0}}, +/* 56444 */ {(12<<2)|2,{83,111,0}}, +/* 56445 */ {(12<<2)|2,{83,111,0}}, +/* 56446 */ {(12<<2)|2,{83,111,0}}, +/* 56447 */ {(12<<2)|2,{83,111,0}}, +/* 56448 */ {(12<<2)|2,{83,115,0}}, +/* 56449 */ {(12<<2)|2,{83,115,0}}, +/* 56450 */ {(12<<2)|2,{83,115,0}}, +/* 56451 */ {(12<<2)|2,{83,115,0}}, +/* 56452 */ {(12<<2)|2,{83,115,0}}, +/* 56453 */ {(12<<2)|2,{83,115,0}}, +/* 56454 */ {(12<<2)|2,{83,115,0}}, +/* 56455 */ {(12<<2)|2,{83,115,0}}, +/* 56456 */ {(12<<2)|2,{83,115,0}}, +/* 56457 */ {(12<<2)|2,{83,115,0}}, +/* 56458 */ {(12<<2)|2,{83,115,0}}, +/* 56459 */ {(12<<2)|2,{83,115,0}}, +/* 56460 */ {(12<<2)|2,{83,115,0}}, +/* 56461 */ {(12<<2)|2,{83,115,0}}, +/* 56462 */ {(12<<2)|2,{83,115,0}}, +/* 56463 */ {(12<<2)|2,{83,115,0}}, +/* 56464 */ {(12<<2)|2,{83,116,0}}, +/* 56465 */ {(12<<2)|2,{83,116,0}}, +/* 56466 */ {(12<<2)|2,{83,116,0}}, +/* 56467 */ {(12<<2)|2,{83,116,0}}, +/* 56468 */ {(12<<2)|2,{83,116,0}}, +/* 56469 */ {(12<<2)|2,{83,116,0}}, +/* 56470 */ {(12<<2)|2,{83,116,0}}, +/* 56471 */ {(12<<2)|2,{83,116,0}}, +/* 56472 */ {(12<<2)|2,{83,116,0}}, +/* 56473 */ {(12<<2)|2,{83,116,0}}, +/* 56474 */ {(12<<2)|2,{83,116,0}}, +/* 56475 */ {(12<<2)|2,{83,116,0}}, +/* 56476 */ {(12<<2)|2,{83,116,0}}, +/* 56477 */ {(12<<2)|2,{83,116,0}}, +/* 56478 */ {(12<<2)|2,{83,116,0}}, +/* 56479 */ {(12<<2)|2,{83,116,0}}, +/* 56480 */ {(13<<2)|2,{83,32,0}}, +/* 56481 */ {(13<<2)|2,{83,32,0}}, +/* 56482 */ {(13<<2)|2,{83,32,0}}, +/* 56483 */ {(13<<2)|2,{83,32,0}}, +/* 56484 */ {(13<<2)|2,{83,32,0}}, +/* 56485 */ {(13<<2)|2,{83,32,0}}, +/* 56486 */ {(13<<2)|2,{83,32,0}}, +/* 56487 */ {(13<<2)|2,{83,32,0}}, +/* 56488 */ {(13<<2)|2,{83,37,0}}, +/* 56489 */ {(13<<2)|2,{83,37,0}}, +/* 56490 */ {(13<<2)|2,{83,37,0}}, +/* 56491 */ {(13<<2)|2,{83,37,0}}, +/* 56492 */ {(13<<2)|2,{83,37,0}}, +/* 56493 */ {(13<<2)|2,{83,37,0}}, +/* 56494 */ {(13<<2)|2,{83,37,0}}, +/* 56495 */ {(13<<2)|2,{83,37,0}}, +/* 56496 */ {(13<<2)|2,{83,45,0}}, +/* 56497 */ {(13<<2)|2,{83,45,0}}, +/* 56498 */ {(13<<2)|2,{83,45,0}}, +/* 56499 */ {(13<<2)|2,{83,45,0}}, +/* 56500 */ {(13<<2)|2,{83,45,0}}, +/* 56501 */ {(13<<2)|2,{83,45,0}}, +/* 56502 */ {(13<<2)|2,{83,45,0}}, +/* 56503 */ {(13<<2)|2,{83,45,0}}, +/* 56504 */ {(13<<2)|2,{83,46,0}}, +/* 56505 */ {(13<<2)|2,{83,46,0}}, +/* 56506 */ {(13<<2)|2,{83,46,0}}, +/* 56507 */ {(13<<2)|2,{83,46,0}}, +/* 56508 */ {(13<<2)|2,{83,46,0}}, +/* 56509 */ {(13<<2)|2,{83,46,0}}, +/* 56510 */ {(13<<2)|2,{83,46,0}}, +/* 56511 */ {(13<<2)|2,{83,46,0}}, +/* 56512 */ {(13<<2)|2,{83,47,0}}, +/* 56513 */ {(13<<2)|2,{83,47,0}}, +/* 56514 */ {(13<<2)|2,{83,47,0}}, +/* 56515 */ {(13<<2)|2,{83,47,0}}, +/* 56516 */ {(13<<2)|2,{83,47,0}}, +/* 56517 */ {(13<<2)|2,{83,47,0}}, +/* 56518 */ {(13<<2)|2,{83,47,0}}, +/* 56519 */ {(13<<2)|2,{83,47,0}}, +/* 56520 */ {(13<<2)|2,{83,51,0}}, +/* 56521 */ {(13<<2)|2,{83,51,0}}, +/* 56522 */ {(13<<2)|2,{83,51,0}}, +/* 56523 */ {(13<<2)|2,{83,51,0}}, +/* 56524 */ {(13<<2)|2,{83,51,0}}, +/* 56525 */ {(13<<2)|2,{83,51,0}}, +/* 56526 */ {(13<<2)|2,{83,51,0}}, +/* 56527 */ {(13<<2)|2,{83,51,0}}, +/* 56528 */ {(13<<2)|2,{83,52,0}}, +/* 56529 */ {(13<<2)|2,{83,52,0}}, +/* 56530 */ {(13<<2)|2,{83,52,0}}, +/* 56531 */ {(13<<2)|2,{83,52,0}}, +/* 56532 */ {(13<<2)|2,{83,52,0}}, +/* 56533 */ {(13<<2)|2,{83,52,0}}, +/* 56534 */ {(13<<2)|2,{83,52,0}}, +/* 56535 */ {(13<<2)|2,{83,52,0}}, +/* 56536 */ {(13<<2)|2,{83,53,0}}, +/* 56537 */ {(13<<2)|2,{83,53,0}}, +/* 56538 */ {(13<<2)|2,{83,53,0}}, +/* 56539 */ {(13<<2)|2,{83,53,0}}, +/* 56540 */ {(13<<2)|2,{83,53,0}}, +/* 56541 */ {(13<<2)|2,{83,53,0}}, +/* 56542 */ {(13<<2)|2,{83,53,0}}, +/* 56543 */ {(13<<2)|2,{83,53,0}}, +/* 56544 */ {(13<<2)|2,{83,54,0}}, +/* 56545 */ {(13<<2)|2,{83,54,0}}, +/* 56546 */ {(13<<2)|2,{83,54,0}}, +/* 56547 */ {(13<<2)|2,{83,54,0}}, +/* 56548 */ {(13<<2)|2,{83,54,0}}, +/* 56549 */ {(13<<2)|2,{83,54,0}}, +/* 56550 */ {(13<<2)|2,{83,54,0}}, +/* 56551 */ {(13<<2)|2,{83,54,0}}, +/* 56552 */ {(13<<2)|2,{83,55,0}}, +/* 56553 */ {(13<<2)|2,{83,55,0}}, +/* 56554 */ {(13<<2)|2,{83,55,0}}, +/* 56555 */ {(13<<2)|2,{83,55,0}}, +/* 56556 */ {(13<<2)|2,{83,55,0}}, +/* 56557 */ {(13<<2)|2,{83,55,0}}, +/* 56558 */ {(13<<2)|2,{83,55,0}}, +/* 56559 */ {(13<<2)|2,{83,55,0}}, +/* 56560 */ {(13<<2)|2,{83,56,0}}, +/* 56561 */ {(13<<2)|2,{83,56,0}}, +/* 56562 */ {(13<<2)|2,{83,56,0}}, +/* 56563 */ {(13<<2)|2,{83,56,0}}, +/* 56564 */ {(13<<2)|2,{83,56,0}}, +/* 56565 */ {(13<<2)|2,{83,56,0}}, +/* 56566 */ {(13<<2)|2,{83,56,0}}, +/* 56567 */ {(13<<2)|2,{83,56,0}}, +/* 56568 */ {(13<<2)|2,{83,57,0}}, +/* 56569 */ {(13<<2)|2,{83,57,0}}, +/* 56570 */ {(13<<2)|2,{83,57,0}}, +/* 56571 */ {(13<<2)|2,{83,57,0}}, +/* 56572 */ {(13<<2)|2,{83,57,0}}, +/* 56573 */ {(13<<2)|2,{83,57,0}}, +/* 56574 */ {(13<<2)|2,{83,57,0}}, +/* 56575 */ {(13<<2)|2,{83,57,0}}, +/* 56576 */ {(13<<2)|2,{83,61,0}}, +/* 56577 */ {(13<<2)|2,{83,61,0}}, +/* 56578 */ {(13<<2)|2,{83,61,0}}, +/* 56579 */ {(13<<2)|2,{83,61,0}}, +/* 56580 */ {(13<<2)|2,{83,61,0}}, +/* 56581 */ {(13<<2)|2,{83,61,0}}, +/* 56582 */ {(13<<2)|2,{83,61,0}}, +/* 56583 */ {(13<<2)|2,{83,61,0}}, +/* 56584 */ {(13<<2)|2,{83,65,0}}, +/* 56585 */ {(13<<2)|2,{83,65,0}}, +/* 56586 */ {(13<<2)|2,{83,65,0}}, +/* 56587 */ {(13<<2)|2,{83,65,0}}, +/* 56588 */ {(13<<2)|2,{83,65,0}}, +/* 56589 */ {(13<<2)|2,{83,65,0}}, +/* 56590 */ {(13<<2)|2,{83,65,0}}, +/* 56591 */ {(13<<2)|2,{83,65,0}}, +/* 56592 */ {(13<<2)|2,{83,95,0}}, +/* 56593 */ {(13<<2)|2,{83,95,0}}, +/* 56594 */ {(13<<2)|2,{83,95,0}}, +/* 56595 */ {(13<<2)|2,{83,95,0}}, +/* 56596 */ {(13<<2)|2,{83,95,0}}, +/* 56597 */ {(13<<2)|2,{83,95,0}}, +/* 56598 */ {(13<<2)|2,{83,95,0}}, +/* 56599 */ {(13<<2)|2,{83,95,0}}, +/* 56600 */ {(13<<2)|2,{83,98,0}}, +/* 56601 */ {(13<<2)|2,{83,98,0}}, +/* 56602 */ {(13<<2)|2,{83,98,0}}, +/* 56603 */ {(13<<2)|2,{83,98,0}}, +/* 56604 */ {(13<<2)|2,{83,98,0}}, +/* 56605 */ {(13<<2)|2,{83,98,0}}, +/* 56606 */ {(13<<2)|2,{83,98,0}}, +/* 56607 */ {(13<<2)|2,{83,98,0}}, +/* 56608 */ {(13<<2)|2,{83,100,0}}, +/* 56609 */ {(13<<2)|2,{83,100,0}}, +/* 56610 */ {(13<<2)|2,{83,100,0}}, +/* 56611 */ {(13<<2)|2,{83,100,0}}, +/* 56612 */ {(13<<2)|2,{83,100,0}}, +/* 56613 */ {(13<<2)|2,{83,100,0}}, +/* 56614 */ {(13<<2)|2,{83,100,0}}, +/* 56615 */ {(13<<2)|2,{83,100,0}}, +/* 56616 */ {(13<<2)|2,{83,102,0}}, +/* 56617 */ {(13<<2)|2,{83,102,0}}, +/* 56618 */ {(13<<2)|2,{83,102,0}}, +/* 56619 */ {(13<<2)|2,{83,102,0}}, +/* 56620 */ {(13<<2)|2,{83,102,0}}, +/* 56621 */ {(13<<2)|2,{83,102,0}}, +/* 56622 */ {(13<<2)|2,{83,102,0}}, +/* 56623 */ {(13<<2)|2,{83,102,0}}, +/* 56624 */ {(13<<2)|2,{83,103,0}}, +/* 56625 */ {(13<<2)|2,{83,103,0}}, +/* 56626 */ {(13<<2)|2,{83,103,0}}, +/* 56627 */ {(13<<2)|2,{83,103,0}}, +/* 56628 */ {(13<<2)|2,{83,103,0}}, +/* 56629 */ {(13<<2)|2,{83,103,0}}, +/* 56630 */ {(13<<2)|2,{83,103,0}}, +/* 56631 */ {(13<<2)|2,{83,103,0}}, +/* 56632 */ {(13<<2)|2,{83,104,0}}, +/* 56633 */ {(13<<2)|2,{83,104,0}}, +/* 56634 */ {(13<<2)|2,{83,104,0}}, +/* 56635 */ {(13<<2)|2,{83,104,0}}, +/* 56636 */ {(13<<2)|2,{83,104,0}}, +/* 56637 */ {(13<<2)|2,{83,104,0}}, +/* 56638 */ {(13<<2)|2,{83,104,0}}, +/* 56639 */ {(13<<2)|2,{83,104,0}}, +/* 56640 */ {(13<<2)|2,{83,108,0}}, +/* 56641 */ {(13<<2)|2,{83,108,0}}, +/* 56642 */ {(13<<2)|2,{83,108,0}}, +/* 56643 */ {(13<<2)|2,{83,108,0}}, +/* 56644 */ {(13<<2)|2,{83,108,0}}, +/* 56645 */ {(13<<2)|2,{83,108,0}}, +/* 56646 */ {(13<<2)|2,{83,108,0}}, +/* 56647 */ {(13<<2)|2,{83,108,0}}, +/* 56648 */ {(13<<2)|2,{83,109,0}}, +/* 56649 */ {(13<<2)|2,{83,109,0}}, +/* 56650 */ {(13<<2)|2,{83,109,0}}, +/* 56651 */ {(13<<2)|2,{83,109,0}}, +/* 56652 */ {(13<<2)|2,{83,109,0}}, +/* 56653 */ {(13<<2)|2,{83,109,0}}, +/* 56654 */ {(13<<2)|2,{83,109,0}}, +/* 56655 */ {(13<<2)|2,{83,109,0}}, +/* 56656 */ {(13<<2)|2,{83,110,0}}, +/* 56657 */ {(13<<2)|2,{83,110,0}}, +/* 56658 */ {(13<<2)|2,{83,110,0}}, +/* 56659 */ {(13<<2)|2,{83,110,0}}, +/* 56660 */ {(13<<2)|2,{83,110,0}}, +/* 56661 */ {(13<<2)|2,{83,110,0}}, +/* 56662 */ {(13<<2)|2,{83,110,0}}, +/* 56663 */ {(13<<2)|2,{83,110,0}}, +/* 56664 */ {(13<<2)|2,{83,112,0}}, +/* 56665 */ {(13<<2)|2,{83,112,0}}, +/* 56666 */ {(13<<2)|2,{83,112,0}}, +/* 56667 */ {(13<<2)|2,{83,112,0}}, +/* 56668 */ {(13<<2)|2,{83,112,0}}, +/* 56669 */ {(13<<2)|2,{83,112,0}}, +/* 56670 */ {(13<<2)|2,{83,112,0}}, +/* 56671 */ {(13<<2)|2,{83,112,0}}, +/* 56672 */ {(13<<2)|2,{83,114,0}}, +/* 56673 */ {(13<<2)|2,{83,114,0}}, +/* 56674 */ {(13<<2)|2,{83,114,0}}, +/* 56675 */ {(13<<2)|2,{83,114,0}}, +/* 56676 */ {(13<<2)|2,{83,114,0}}, +/* 56677 */ {(13<<2)|2,{83,114,0}}, +/* 56678 */ {(13<<2)|2,{83,114,0}}, +/* 56679 */ {(13<<2)|2,{83,114,0}}, +/* 56680 */ {(13<<2)|2,{83,117,0}}, +/* 56681 */ {(13<<2)|2,{83,117,0}}, +/* 56682 */ {(13<<2)|2,{83,117,0}}, +/* 56683 */ {(13<<2)|2,{83,117,0}}, +/* 56684 */ {(13<<2)|2,{83,117,0}}, +/* 56685 */ {(13<<2)|2,{83,117,0}}, +/* 56686 */ {(13<<2)|2,{83,117,0}}, +/* 56687 */ {(13<<2)|2,{83,117,0}}, +/* 56688 */ {(14<<2)|2,{83,58,0}}, +/* 56689 */ {(14<<2)|2,{83,58,0}}, +/* 56690 */ {(14<<2)|2,{83,58,0}}, +/* 56691 */ {(14<<2)|2,{83,58,0}}, +/* 56692 */ {(14<<2)|2,{83,66,0}}, +/* 56693 */ {(14<<2)|2,{83,66,0}}, +/* 56694 */ {(14<<2)|2,{83,66,0}}, +/* 56695 */ {(14<<2)|2,{83,66,0}}, +/* 56696 */ {(14<<2)|2,{83,67,0}}, +/* 56697 */ {(14<<2)|2,{83,67,0}}, +/* 56698 */ {(14<<2)|2,{83,67,0}}, +/* 56699 */ {(14<<2)|2,{83,67,0}}, +/* 56700 */ {(14<<2)|2,{83,68,0}}, +/* 56701 */ {(14<<2)|2,{83,68,0}}, +/* 56702 */ {(14<<2)|2,{83,68,0}}, +/* 56703 */ {(14<<2)|2,{83,68,0}}, +/* 56704 */ {(14<<2)|2,{83,69,0}}, +/* 56705 */ {(14<<2)|2,{83,69,0}}, +/* 56706 */ {(14<<2)|2,{83,69,0}}, +/* 56707 */ {(14<<2)|2,{83,69,0}}, +/* 56708 */ {(14<<2)|2,{83,70,0}}, +/* 56709 */ {(14<<2)|2,{83,70,0}}, +/* 56710 */ {(14<<2)|2,{83,70,0}}, +/* 56711 */ {(14<<2)|2,{83,70,0}}, +/* 56712 */ {(14<<2)|2,{83,71,0}}, +/* 56713 */ {(14<<2)|2,{83,71,0}}, +/* 56714 */ {(14<<2)|2,{83,71,0}}, +/* 56715 */ {(14<<2)|2,{83,71,0}}, +/* 56716 */ {(14<<2)|2,{83,72,0}}, +/* 56717 */ {(14<<2)|2,{83,72,0}}, +/* 56718 */ {(14<<2)|2,{83,72,0}}, +/* 56719 */ {(14<<2)|2,{83,72,0}}, +/* 56720 */ {(14<<2)|2,{83,73,0}}, +/* 56721 */ {(14<<2)|2,{83,73,0}}, +/* 56722 */ {(14<<2)|2,{83,73,0}}, +/* 56723 */ {(14<<2)|2,{83,73,0}}, +/* 56724 */ {(14<<2)|2,{83,74,0}}, +/* 56725 */ {(14<<2)|2,{83,74,0}}, +/* 56726 */ {(14<<2)|2,{83,74,0}}, +/* 56727 */ {(14<<2)|2,{83,74,0}}, +/* 56728 */ {(14<<2)|2,{83,75,0}}, +/* 56729 */ {(14<<2)|2,{83,75,0}}, +/* 56730 */ {(14<<2)|2,{83,75,0}}, +/* 56731 */ {(14<<2)|2,{83,75,0}}, +/* 56732 */ {(14<<2)|2,{83,76,0}}, +/* 56733 */ {(14<<2)|2,{83,76,0}}, +/* 56734 */ {(14<<2)|2,{83,76,0}}, +/* 56735 */ {(14<<2)|2,{83,76,0}}, +/* 56736 */ {(14<<2)|2,{83,77,0}}, +/* 56737 */ {(14<<2)|2,{83,77,0}}, +/* 56738 */ {(14<<2)|2,{83,77,0}}, +/* 56739 */ {(14<<2)|2,{83,77,0}}, +/* 56740 */ {(14<<2)|2,{83,78,0}}, +/* 56741 */ {(14<<2)|2,{83,78,0}}, +/* 56742 */ {(14<<2)|2,{83,78,0}}, +/* 56743 */ {(14<<2)|2,{83,78,0}}, +/* 56744 */ {(14<<2)|2,{83,79,0}}, +/* 56745 */ {(14<<2)|2,{83,79,0}}, +/* 56746 */ {(14<<2)|2,{83,79,0}}, +/* 56747 */ {(14<<2)|2,{83,79,0}}, +/* 56748 */ {(14<<2)|2,{83,80,0}}, +/* 56749 */ {(14<<2)|2,{83,80,0}}, +/* 56750 */ {(14<<2)|2,{83,80,0}}, +/* 56751 */ {(14<<2)|2,{83,80,0}}, +/* 56752 */ {(14<<2)|2,{83,81,0}}, +/* 56753 */ {(14<<2)|2,{83,81,0}}, +/* 56754 */ {(14<<2)|2,{83,81,0}}, +/* 56755 */ {(14<<2)|2,{83,81,0}}, +/* 56756 */ {(14<<2)|2,{83,82,0}}, +/* 56757 */ {(14<<2)|2,{83,82,0}}, +/* 56758 */ {(14<<2)|2,{83,82,0}}, +/* 56759 */ {(14<<2)|2,{83,82,0}}, +/* 56760 */ {(14<<2)|2,{83,83,0}}, +/* 56761 */ {(14<<2)|2,{83,83,0}}, +/* 56762 */ {(14<<2)|2,{83,83,0}}, +/* 56763 */ {(14<<2)|2,{83,83,0}}, +/* 56764 */ {(14<<2)|2,{83,84,0}}, +/* 56765 */ {(14<<2)|2,{83,84,0}}, +/* 56766 */ {(14<<2)|2,{83,84,0}}, +/* 56767 */ {(14<<2)|2,{83,84,0}}, +/* 56768 */ {(14<<2)|2,{83,85,0}}, +/* 56769 */ {(14<<2)|2,{83,85,0}}, +/* 56770 */ {(14<<2)|2,{83,85,0}}, +/* 56771 */ {(14<<2)|2,{83,85,0}}, +/* 56772 */ {(14<<2)|2,{83,86,0}}, +/* 56773 */ {(14<<2)|2,{83,86,0}}, +/* 56774 */ {(14<<2)|2,{83,86,0}}, +/* 56775 */ {(14<<2)|2,{83,86,0}}, +/* 56776 */ {(14<<2)|2,{83,87,0}}, +/* 56777 */ {(14<<2)|2,{83,87,0}}, +/* 56778 */ {(14<<2)|2,{83,87,0}}, +/* 56779 */ {(14<<2)|2,{83,87,0}}, +/* 56780 */ {(14<<2)|2,{83,89,0}}, +/* 56781 */ {(14<<2)|2,{83,89,0}}, +/* 56782 */ {(14<<2)|2,{83,89,0}}, +/* 56783 */ {(14<<2)|2,{83,89,0}}, +/* 56784 */ {(14<<2)|2,{83,106,0}}, +/* 56785 */ {(14<<2)|2,{83,106,0}}, +/* 56786 */ {(14<<2)|2,{83,106,0}}, +/* 56787 */ {(14<<2)|2,{83,106,0}}, +/* 56788 */ {(14<<2)|2,{83,107,0}}, +/* 56789 */ {(14<<2)|2,{83,107,0}}, +/* 56790 */ {(14<<2)|2,{83,107,0}}, +/* 56791 */ {(14<<2)|2,{83,107,0}}, +/* 56792 */ {(14<<2)|2,{83,113,0}}, +/* 56793 */ {(14<<2)|2,{83,113,0}}, +/* 56794 */ {(14<<2)|2,{83,113,0}}, +/* 56795 */ {(14<<2)|2,{83,113,0}}, +/* 56796 */ {(14<<2)|2,{83,118,0}}, +/* 56797 */ {(14<<2)|2,{83,118,0}}, +/* 56798 */ {(14<<2)|2,{83,118,0}}, +/* 56799 */ {(14<<2)|2,{83,118,0}}, +/* 56800 */ {(14<<2)|2,{83,119,0}}, +/* 56801 */ {(14<<2)|2,{83,119,0}}, +/* 56802 */ {(14<<2)|2,{83,119,0}}, +/* 56803 */ {(14<<2)|2,{83,119,0}}, +/* 56804 */ {(14<<2)|2,{83,120,0}}, +/* 56805 */ {(14<<2)|2,{83,120,0}}, +/* 56806 */ {(14<<2)|2,{83,120,0}}, +/* 56807 */ {(14<<2)|2,{83,120,0}}, +/* 56808 */ {(14<<2)|2,{83,121,0}}, +/* 56809 */ {(14<<2)|2,{83,121,0}}, +/* 56810 */ {(14<<2)|2,{83,121,0}}, +/* 56811 */ {(14<<2)|2,{83,121,0}}, +/* 56812 */ {(14<<2)|2,{83,122,0}}, +/* 56813 */ {(14<<2)|2,{83,122,0}}, +/* 56814 */ {(14<<2)|2,{83,122,0}}, +/* 56815 */ {(14<<2)|2,{83,122,0}}, +/* 56816 */ {(15<<2)|2,{83,38,0}}, +/* 56817 */ {(15<<2)|2,{83,38,0}}, +/* 56818 */ {(15<<2)|2,{83,42,0}}, +/* 56819 */ {(15<<2)|2,{83,42,0}}, +/* 56820 */ {(15<<2)|2,{83,44,0}}, +/* 56821 */ {(15<<2)|2,{83,44,0}}, +/* 56822 */ {(15<<2)|2,{83,59,0}}, +/* 56823 */ {(15<<2)|2,{83,59,0}}, +/* 56824 */ {(15<<2)|2,{83,88,0}}, +/* 56825 */ {(15<<2)|2,{83,88,0}}, +/* 56826 */ {(15<<2)|2,{83,90,0}}, +/* 56827 */ {(15<<2)|2,{83,90,0}}, +/* 56828 */ {(7<<2)|1,{83,0,0}}, +/* 56829 */ {(7<<2)|1,{83,0,0}}, +/* 56830 */ {(7<<2)|1,{83,0,0}}, +/* 56831 */ {(7<<2)|1,{83,0,0}}, +/* 56832 */ {(12<<2)|2,{84,48,0}}, +/* 56833 */ {(12<<2)|2,{84,48,0}}, +/* 56834 */ {(12<<2)|2,{84,48,0}}, +/* 56835 */ {(12<<2)|2,{84,48,0}}, +/* 56836 */ {(12<<2)|2,{84,48,0}}, +/* 56837 */ {(12<<2)|2,{84,48,0}}, +/* 56838 */ {(12<<2)|2,{84,48,0}}, +/* 56839 */ {(12<<2)|2,{84,48,0}}, +/* 56840 */ {(12<<2)|2,{84,48,0}}, +/* 56841 */ {(12<<2)|2,{84,48,0}}, +/* 56842 */ {(12<<2)|2,{84,48,0}}, +/* 56843 */ {(12<<2)|2,{84,48,0}}, +/* 56844 */ {(12<<2)|2,{84,48,0}}, +/* 56845 */ {(12<<2)|2,{84,48,0}}, +/* 56846 */ {(12<<2)|2,{84,48,0}}, +/* 56847 */ {(12<<2)|2,{84,48,0}}, +/* 56848 */ {(12<<2)|2,{84,49,0}}, +/* 56849 */ {(12<<2)|2,{84,49,0}}, +/* 56850 */ {(12<<2)|2,{84,49,0}}, +/* 56851 */ {(12<<2)|2,{84,49,0}}, +/* 56852 */ {(12<<2)|2,{84,49,0}}, +/* 56853 */ {(12<<2)|2,{84,49,0}}, +/* 56854 */ {(12<<2)|2,{84,49,0}}, +/* 56855 */ {(12<<2)|2,{84,49,0}}, +/* 56856 */ {(12<<2)|2,{84,49,0}}, +/* 56857 */ {(12<<2)|2,{84,49,0}}, +/* 56858 */ {(12<<2)|2,{84,49,0}}, +/* 56859 */ {(12<<2)|2,{84,49,0}}, +/* 56860 */ {(12<<2)|2,{84,49,0}}, +/* 56861 */ {(12<<2)|2,{84,49,0}}, +/* 56862 */ {(12<<2)|2,{84,49,0}}, +/* 56863 */ {(12<<2)|2,{84,49,0}}, +/* 56864 */ {(12<<2)|2,{84,50,0}}, +/* 56865 */ {(12<<2)|2,{84,50,0}}, +/* 56866 */ {(12<<2)|2,{84,50,0}}, +/* 56867 */ {(12<<2)|2,{84,50,0}}, +/* 56868 */ {(12<<2)|2,{84,50,0}}, +/* 56869 */ {(12<<2)|2,{84,50,0}}, +/* 56870 */ {(12<<2)|2,{84,50,0}}, +/* 56871 */ {(12<<2)|2,{84,50,0}}, +/* 56872 */ {(12<<2)|2,{84,50,0}}, +/* 56873 */ {(12<<2)|2,{84,50,0}}, +/* 56874 */ {(12<<2)|2,{84,50,0}}, +/* 56875 */ {(12<<2)|2,{84,50,0}}, +/* 56876 */ {(12<<2)|2,{84,50,0}}, +/* 56877 */ {(12<<2)|2,{84,50,0}}, +/* 56878 */ {(12<<2)|2,{84,50,0}}, +/* 56879 */ {(12<<2)|2,{84,50,0}}, +/* 56880 */ {(12<<2)|2,{84,97,0}}, +/* 56881 */ {(12<<2)|2,{84,97,0}}, +/* 56882 */ {(12<<2)|2,{84,97,0}}, +/* 56883 */ {(12<<2)|2,{84,97,0}}, +/* 56884 */ {(12<<2)|2,{84,97,0}}, +/* 56885 */ {(12<<2)|2,{84,97,0}}, +/* 56886 */ {(12<<2)|2,{84,97,0}}, +/* 56887 */ {(12<<2)|2,{84,97,0}}, +/* 56888 */ {(12<<2)|2,{84,97,0}}, +/* 56889 */ {(12<<2)|2,{84,97,0}}, +/* 56890 */ {(12<<2)|2,{84,97,0}}, +/* 56891 */ {(12<<2)|2,{84,97,0}}, +/* 56892 */ {(12<<2)|2,{84,97,0}}, +/* 56893 */ {(12<<2)|2,{84,97,0}}, +/* 56894 */ {(12<<2)|2,{84,97,0}}, +/* 56895 */ {(12<<2)|2,{84,97,0}}, +/* 56896 */ {(12<<2)|2,{84,99,0}}, +/* 56897 */ {(12<<2)|2,{84,99,0}}, +/* 56898 */ {(12<<2)|2,{84,99,0}}, +/* 56899 */ {(12<<2)|2,{84,99,0}}, +/* 56900 */ {(12<<2)|2,{84,99,0}}, +/* 56901 */ {(12<<2)|2,{84,99,0}}, +/* 56902 */ {(12<<2)|2,{84,99,0}}, +/* 56903 */ {(12<<2)|2,{84,99,0}}, +/* 56904 */ {(12<<2)|2,{84,99,0}}, +/* 56905 */ {(12<<2)|2,{84,99,0}}, +/* 56906 */ {(12<<2)|2,{84,99,0}}, +/* 56907 */ {(12<<2)|2,{84,99,0}}, +/* 56908 */ {(12<<2)|2,{84,99,0}}, +/* 56909 */ {(12<<2)|2,{84,99,0}}, +/* 56910 */ {(12<<2)|2,{84,99,0}}, +/* 56911 */ {(12<<2)|2,{84,99,0}}, +/* 56912 */ {(12<<2)|2,{84,101,0}}, +/* 56913 */ {(12<<2)|2,{84,101,0}}, +/* 56914 */ {(12<<2)|2,{84,101,0}}, +/* 56915 */ {(12<<2)|2,{84,101,0}}, +/* 56916 */ {(12<<2)|2,{84,101,0}}, +/* 56917 */ {(12<<2)|2,{84,101,0}}, +/* 56918 */ {(12<<2)|2,{84,101,0}}, +/* 56919 */ {(12<<2)|2,{84,101,0}}, +/* 56920 */ {(12<<2)|2,{84,101,0}}, +/* 56921 */ {(12<<2)|2,{84,101,0}}, +/* 56922 */ {(12<<2)|2,{84,101,0}}, +/* 56923 */ {(12<<2)|2,{84,101,0}}, +/* 56924 */ {(12<<2)|2,{84,101,0}}, +/* 56925 */ {(12<<2)|2,{84,101,0}}, +/* 56926 */ {(12<<2)|2,{84,101,0}}, +/* 56927 */ {(12<<2)|2,{84,101,0}}, +/* 56928 */ {(12<<2)|2,{84,105,0}}, +/* 56929 */ {(12<<2)|2,{84,105,0}}, +/* 56930 */ {(12<<2)|2,{84,105,0}}, +/* 56931 */ {(12<<2)|2,{84,105,0}}, +/* 56932 */ {(12<<2)|2,{84,105,0}}, +/* 56933 */ {(12<<2)|2,{84,105,0}}, +/* 56934 */ {(12<<2)|2,{84,105,0}}, +/* 56935 */ {(12<<2)|2,{84,105,0}}, +/* 56936 */ {(12<<2)|2,{84,105,0}}, +/* 56937 */ {(12<<2)|2,{84,105,0}}, +/* 56938 */ {(12<<2)|2,{84,105,0}}, +/* 56939 */ {(12<<2)|2,{84,105,0}}, +/* 56940 */ {(12<<2)|2,{84,105,0}}, +/* 56941 */ {(12<<2)|2,{84,105,0}}, +/* 56942 */ {(12<<2)|2,{84,105,0}}, +/* 56943 */ {(12<<2)|2,{84,105,0}}, +/* 56944 */ {(12<<2)|2,{84,111,0}}, +/* 56945 */ {(12<<2)|2,{84,111,0}}, +/* 56946 */ {(12<<2)|2,{84,111,0}}, +/* 56947 */ {(12<<2)|2,{84,111,0}}, +/* 56948 */ {(12<<2)|2,{84,111,0}}, +/* 56949 */ {(12<<2)|2,{84,111,0}}, +/* 56950 */ {(12<<2)|2,{84,111,0}}, +/* 56951 */ {(12<<2)|2,{84,111,0}}, +/* 56952 */ {(12<<2)|2,{84,111,0}}, +/* 56953 */ {(12<<2)|2,{84,111,0}}, +/* 56954 */ {(12<<2)|2,{84,111,0}}, +/* 56955 */ {(12<<2)|2,{84,111,0}}, +/* 56956 */ {(12<<2)|2,{84,111,0}}, +/* 56957 */ {(12<<2)|2,{84,111,0}}, +/* 56958 */ {(12<<2)|2,{84,111,0}}, +/* 56959 */ {(12<<2)|2,{84,111,0}}, +/* 56960 */ {(12<<2)|2,{84,115,0}}, +/* 56961 */ {(12<<2)|2,{84,115,0}}, +/* 56962 */ {(12<<2)|2,{84,115,0}}, +/* 56963 */ {(12<<2)|2,{84,115,0}}, +/* 56964 */ {(12<<2)|2,{84,115,0}}, +/* 56965 */ {(12<<2)|2,{84,115,0}}, +/* 56966 */ {(12<<2)|2,{84,115,0}}, +/* 56967 */ {(12<<2)|2,{84,115,0}}, +/* 56968 */ {(12<<2)|2,{84,115,0}}, +/* 56969 */ {(12<<2)|2,{84,115,0}}, +/* 56970 */ {(12<<2)|2,{84,115,0}}, +/* 56971 */ {(12<<2)|2,{84,115,0}}, +/* 56972 */ {(12<<2)|2,{84,115,0}}, +/* 56973 */ {(12<<2)|2,{84,115,0}}, +/* 56974 */ {(12<<2)|2,{84,115,0}}, +/* 56975 */ {(12<<2)|2,{84,115,0}}, +/* 56976 */ {(12<<2)|2,{84,116,0}}, +/* 56977 */ {(12<<2)|2,{84,116,0}}, +/* 56978 */ {(12<<2)|2,{84,116,0}}, +/* 56979 */ {(12<<2)|2,{84,116,0}}, +/* 56980 */ {(12<<2)|2,{84,116,0}}, +/* 56981 */ {(12<<2)|2,{84,116,0}}, +/* 56982 */ {(12<<2)|2,{84,116,0}}, +/* 56983 */ {(12<<2)|2,{84,116,0}}, +/* 56984 */ {(12<<2)|2,{84,116,0}}, +/* 56985 */ {(12<<2)|2,{84,116,0}}, +/* 56986 */ {(12<<2)|2,{84,116,0}}, +/* 56987 */ {(12<<2)|2,{84,116,0}}, +/* 56988 */ {(12<<2)|2,{84,116,0}}, +/* 56989 */ {(12<<2)|2,{84,116,0}}, +/* 56990 */ {(12<<2)|2,{84,116,0}}, +/* 56991 */ {(12<<2)|2,{84,116,0}}, +/* 56992 */ {(13<<2)|2,{84,32,0}}, +/* 56993 */ {(13<<2)|2,{84,32,0}}, +/* 56994 */ {(13<<2)|2,{84,32,0}}, +/* 56995 */ {(13<<2)|2,{84,32,0}}, +/* 56996 */ {(13<<2)|2,{84,32,0}}, +/* 56997 */ {(13<<2)|2,{84,32,0}}, +/* 56998 */ {(13<<2)|2,{84,32,0}}, +/* 56999 */ {(13<<2)|2,{84,32,0}}, +/* 57000 */ {(13<<2)|2,{84,37,0}}, +/* 57001 */ {(13<<2)|2,{84,37,0}}, +/* 57002 */ {(13<<2)|2,{84,37,0}}, +/* 57003 */ {(13<<2)|2,{84,37,0}}, +/* 57004 */ {(13<<2)|2,{84,37,0}}, +/* 57005 */ {(13<<2)|2,{84,37,0}}, +/* 57006 */ {(13<<2)|2,{84,37,0}}, +/* 57007 */ {(13<<2)|2,{84,37,0}}, +/* 57008 */ {(13<<2)|2,{84,45,0}}, +/* 57009 */ {(13<<2)|2,{84,45,0}}, +/* 57010 */ {(13<<2)|2,{84,45,0}}, +/* 57011 */ {(13<<2)|2,{84,45,0}}, +/* 57012 */ {(13<<2)|2,{84,45,0}}, +/* 57013 */ {(13<<2)|2,{84,45,0}}, +/* 57014 */ {(13<<2)|2,{84,45,0}}, +/* 57015 */ {(13<<2)|2,{84,45,0}}, +/* 57016 */ {(13<<2)|2,{84,46,0}}, +/* 57017 */ {(13<<2)|2,{84,46,0}}, +/* 57018 */ {(13<<2)|2,{84,46,0}}, +/* 57019 */ {(13<<2)|2,{84,46,0}}, +/* 57020 */ {(13<<2)|2,{84,46,0}}, +/* 57021 */ {(13<<2)|2,{84,46,0}}, +/* 57022 */ {(13<<2)|2,{84,46,0}}, +/* 57023 */ {(13<<2)|2,{84,46,0}}, +/* 57024 */ {(13<<2)|2,{84,47,0}}, +/* 57025 */ {(13<<2)|2,{84,47,0}}, +/* 57026 */ {(13<<2)|2,{84,47,0}}, +/* 57027 */ {(13<<2)|2,{84,47,0}}, +/* 57028 */ {(13<<2)|2,{84,47,0}}, +/* 57029 */ {(13<<2)|2,{84,47,0}}, +/* 57030 */ {(13<<2)|2,{84,47,0}}, +/* 57031 */ {(13<<2)|2,{84,47,0}}, +/* 57032 */ {(13<<2)|2,{84,51,0}}, +/* 57033 */ {(13<<2)|2,{84,51,0}}, +/* 57034 */ {(13<<2)|2,{84,51,0}}, +/* 57035 */ {(13<<2)|2,{84,51,0}}, +/* 57036 */ {(13<<2)|2,{84,51,0}}, +/* 57037 */ {(13<<2)|2,{84,51,0}}, +/* 57038 */ {(13<<2)|2,{84,51,0}}, +/* 57039 */ {(13<<2)|2,{84,51,0}}, +/* 57040 */ {(13<<2)|2,{84,52,0}}, +/* 57041 */ {(13<<2)|2,{84,52,0}}, +/* 57042 */ {(13<<2)|2,{84,52,0}}, +/* 57043 */ {(13<<2)|2,{84,52,0}}, +/* 57044 */ {(13<<2)|2,{84,52,0}}, +/* 57045 */ {(13<<2)|2,{84,52,0}}, +/* 57046 */ {(13<<2)|2,{84,52,0}}, +/* 57047 */ {(13<<2)|2,{84,52,0}}, +/* 57048 */ {(13<<2)|2,{84,53,0}}, +/* 57049 */ {(13<<2)|2,{84,53,0}}, +/* 57050 */ {(13<<2)|2,{84,53,0}}, +/* 57051 */ {(13<<2)|2,{84,53,0}}, +/* 57052 */ {(13<<2)|2,{84,53,0}}, +/* 57053 */ {(13<<2)|2,{84,53,0}}, +/* 57054 */ {(13<<2)|2,{84,53,0}}, +/* 57055 */ {(13<<2)|2,{84,53,0}}, +/* 57056 */ {(13<<2)|2,{84,54,0}}, +/* 57057 */ {(13<<2)|2,{84,54,0}}, +/* 57058 */ {(13<<2)|2,{84,54,0}}, +/* 57059 */ {(13<<2)|2,{84,54,0}}, +/* 57060 */ {(13<<2)|2,{84,54,0}}, +/* 57061 */ {(13<<2)|2,{84,54,0}}, +/* 57062 */ {(13<<2)|2,{84,54,0}}, +/* 57063 */ {(13<<2)|2,{84,54,0}}, +/* 57064 */ {(13<<2)|2,{84,55,0}}, +/* 57065 */ {(13<<2)|2,{84,55,0}}, +/* 57066 */ {(13<<2)|2,{84,55,0}}, +/* 57067 */ {(13<<2)|2,{84,55,0}}, +/* 57068 */ {(13<<2)|2,{84,55,0}}, +/* 57069 */ {(13<<2)|2,{84,55,0}}, +/* 57070 */ {(13<<2)|2,{84,55,0}}, +/* 57071 */ {(13<<2)|2,{84,55,0}}, +/* 57072 */ {(13<<2)|2,{84,56,0}}, +/* 57073 */ {(13<<2)|2,{84,56,0}}, +/* 57074 */ {(13<<2)|2,{84,56,0}}, +/* 57075 */ {(13<<2)|2,{84,56,0}}, +/* 57076 */ {(13<<2)|2,{84,56,0}}, +/* 57077 */ {(13<<2)|2,{84,56,0}}, +/* 57078 */ {(13<<2)|2,{84,56,0}}, +/* 57079 */ {(13<<2)|2,{84,56,0}}, +/* 57080 */ {(13<<2)|2,{84,57,0}}, +/* 57081 */ {(13<<2)|2,{84,57,0}}, +/* 57082 */ {(13<<2)|2,{84,57,0}}, +/* 57083 */ {(13<<2)|2,{84,57,0}}, +/* 57084 */ {(13<<2)|2,{84,57,0}}, +/* 57085 */ {(13<<2)|2,{84,57,0}}, +/* 57086 */ {(13<<2)|2,{84,57,0}}, +/* 57087 */ {(13<<2)|2,{84,57,0}}, +/* 57088 */ {(13<<2)|2,{84,61,0}}, +/* 57089 */ {(13<<2)|2,{84,61,0}}, +/* 57090 */ {(13<<2)|2,{84,61,0}}, +/* 57091 */ {(13<<2)|2,{84,61,0}}, +/* 57092 */ {(13<<2)|2,{84,61,0}}, +/* 57093 */ {(13<<2)|2,{84,61,0}}, +/* 57094 */ {(13<<2)|2,{84,61,0}}, +/* 57095 */ {(13<<2)|2,{84,61,0}}, +/* 57096 */ {(13<<2)|2,{84,65,0}}, +/* 57097 */ {(13<<2)|2,{84,65,0}}, +/* 57098 */ {(13<<2)|2,{84,65,0}}, +/* 57099 */ {(13<<2)|2,{84,65,0}}, +/* 57100 */ {(13<<2)|2,{84,65,0}}, +/* 57101 */ {(13<<2)|2,{84,65,0}}, +/* 57102 */ {(13<<2)|2,{84,65,0}}, +/* 57103 */ {(13<<2)|2,{84,65,0}}, +/* 57104 */ {(13<<2)|2,{84,95,0}}, +/* 57105 */ {(13<<2)|2,{84,95,0}}, +/* 57106 */ {(13<<2)|2,{84,95,0}}, +/* 57107 */ {(13<<2)|2,{84,95,0}}, +/* 57108 */ {(13<<2)|2,{84,95,0}}, +/* 57109 */ {(13<<2)|2,{84,95,0}}, +/* 57110 */ {(13<<2)|2,{84,95,0}}, +/* 57111 */ {(13<<2)|2,{84,95,0}}, +/* 57112 */ {(13<<2)|2,{84,98,0}}, +/* 57113 */ {(13<<2)|2,{84,98,0}}, +/* 57114 */ {(13<<2)|2,{84,98,0}}, +/* 57115 */ {(13<<2)|2,{84,98,0}}, +/* 57116 */ {(13<<2)|2,{84,98,0}}, +/* 57117 */ {(13<<2)|2,{84,98,0}}, +/* 57118 */ {(13<<2)|2,{84,98,0}}, +/* 57119 */ {(13<<2)|2,{84,98,0}}, +/* 57120 */ {(13<<2)|2,{84,100,0}}, +/* 57121 */ {(13<<2)|2,{84,100,0}}, +/* 57122 */ {(13<<2)|2,{84,100,0}}, +/* 57123 */ {(13<<2)|2,{84,100,0}}, +/* 57124 */ {(13<<2)|2,{84,100,0}}, +/* 57125 */ {(13<<2)|2,{84,100,0}}, +/* 57126 */ {(13<<2)|2,{84,100,0}}, +/* 57127 */ {(13<<2)|2,{84,100,0}}, +/* 57128 */ {(13<<2)|2,{84,102,0}}, +/* 57129 */ {(13<<2)|2,{84,102,0}}, +/* 57130 */ {(13<<2)|2,{84,102,0}}, +/* 57131 */ {(13<<2)|2,{84,102,0}}, +/* 57132 */ {(13<<2)|2,{84,102,0}}, +/* 57133 */ {(13<<2)|2,{84,102,0}}, +/* 57134 */ {(13<<2)|2,{84,102,0}}, +/* 57135 */ {(13<<2)|2,{84,102,0}}, +/* 57136 */ {(13<<2)|2,{84,103,0}}, +/* 57137 */ {(13<<2)|2,{84,103,0}}, +/* 57138 */ {(13<<2)|2,{84,103,0}}, +/* 57139 */ {(13<<2)|2,{84,103,0}}, +/* 57140 */ {(13<<2)|2,{84,103,0}}, +/* 57141 */ {(13<<2)|2,{84,103,0}}, +/* 57142 */ {(13<<2)|2,{84,103,0}}, +/* 57143 */ {(13<<2)|2,{84,103,0}}, +/* 57144 */ {(13<<2)|2,{84,104,0}}, +/* 57145 */ {(13<<2)|2,{84,104,0}}, +/* 57146 */ {(13<<2)|2,{84,104,0}}, +/* 57147 */ {(13<<2)|2,{84,104,0}}, +/* 57148 */ {(13<<2)|2,{84,104,0}}, +/* 57149 */ {(13<<2)|2,{84,104,0}}, +/* 57150 */ {(13<<2)|2,{84,104,0}}, +/* 57151 */ {(13<<2)|2,{84,104,0}}, +/* 57152 */ {(13<<2)|2,{84,108,0}}, +/* 57153 */ {(13<<2)|2,{84,108,0}}, +/* 57154 */ {(13<<2)|2,{84,108,0}}, +/* 57155 */ {(13<<2)|2,{84,108,0}}, +/* 57156 */ {(13<<2)|2,{84,108,0}}, +/* 57157 */ {(13<<2)|2,{84,108,0}}, +/* 57158 */ {(13<<2)|2,{84,108,0}}, +/* 57159 */ {(13<<2)|2,{84,108,0}}, +/* 57160 */ {(13<<2)|2,{84,109,0}}, +/* 57161 */ {(13<<2)|2,{84,109,0}}, +/* 57162 */ {(13<<2)|2,{84,109,0}}, +/* 57163 */ {(13<<2)|2,{84,109,0}}, +/* 57164 */ {(13<<2)|2,{84,109,0}}, +/* 57165 */ {(13<<2)|2,{84,109,0}}, +/* 57166 */ {(13<<2)|2,{84,109,0}}, +/* 57167 */ {(13<<2)|2,{84,109,0}}, +/* 57168 */ {(13<<2)|2,{84,110,0}}, +/* 57169 */ {(13<<2)|2,{84,110,0}}, +/* 57170 */ {(13<<2)|2,{84,110,0}}, +/* 57171 */ {(13<<2)|2,{84,110,0}}, +/* 57172 */ {(13<<2)|2,{84,110,0}}, +/* 57173 */ {(13<<2)|2,{84,110,0}}, +/* 57174 */ {(13<<2)|2,{84,110,0}}, +/* 57175 */ {(13<<2)|2,{84,110,0}}, +/* 57176 */ {(13<<2)|2,{84,112,0}}, +/* 57177 */ {(13<<2)|2,{84,112,0}}, +/* 57178 */ {(13<<2)|2,{84,112,0}}, +/* 57179 */ {(13<<2)|2,{84,112,0}}, +/* 57180 */ {(13<<2)|2,{84,112,0}}, +/* 57181 */ {(13<<2)|2,{84,112,0}}, +/* 57182 */ {(13<<2)|2,{84,112,0}}, +/* 57183 */ {(13<<2)|2,{84,112,0}}, +/* 57184 */ {(13<<2)|2,{84,114,0}}, +/* 57185 */ {(13<<2)|2,{84,114,0}}, +/* 57186 */ {(13<<2)|2,{84,114,0}}, +/* 57187 */ {(13<<2)|2,{84,114,0}}, +/* 57188 */ {(13<<2)|2,{84,114,0}}, +/* 57189 */ {(13<<2)|2,{84,114,0}}, +/* 57190 */ {(13<<2)|2,{84,114,0}}, +/* 57191 */ {(13<<2)|2,{84,114,0}}, +/* 57192 */ {(13<<2)|2,{84,117,0}}, +/* 57193 */ {(13<<2)|2,{84,117,0}}, +/* 57194 */ {(13<<2)|2,{84,117,0}}, +/* 57195 */ {(13<<2)|2,{84,117,0}}, +/* 57196 */ {(13<<2)|2,{84,117,0}}, +/* 57197 */ {(13<<2)|2,{84,117,0}}, +/* 57198 */ {(13<<2)|2,{84,117,0}}, +/* 57199 */ {(13<<2)|2,{84,117,0}}, +/* 57200 */ {(14<<2)|2,{84,58,0}}, +/* 57201 */ {(14<<2)|2,{84,58,0}}, +/* 57202 */ {(14<<2)|2,{84,58,0}}, +/* 57203 */ {(14<<2)|2,{84,58,0}}, +/* 57204 */ {(14<<2)|2,{84,66,0}}, +/* 57205 */ {(14<<2)|2,{84,66,0}}, +/* 57206 */ {(14<<2)|2,{84,66,0}}, +/* 57207 */ {(14<<2)|2,{84,66,0}}, +/* 57208 */ {(14<<2)|2,{84,67,0}}, +/* 57209 */ {(14<<2)|2,{84,67,0}}, +/* 57210 */ {(14<<2)|2,{84,67,0}}, +/* 57211 */ {(14<<2)|2,{84,67,0}}, +/* 57212 */ {(14<<2)|2,{84,68,0}}, +/* 57213 */ {(14<<2)|2,{84,68,0}}, +/* 57214 */ {(14<<2)|2,{84,68,0}}, +/* 57215 */ {(14<<2)|2,{84,68,0}}, +/* 57216 */ {(14<<2)|2,{84,69,0}}, +/* 57217 */ {(14<<2)|2,{84,69,0}}, +/* 57218 */ {(14<<2)|2,{84,69,0}}, +/* 57219 */ {(14<<2)|2,{84,69,0}}, +/* 57220 */ {(14<<2)|2,{84,70,0}}, +/* 57221 */ {(14<<2)|2,{84,70,0}}, +/* 57222 */ {(14<<2)|2,{84,70,0}}, +/* 57223 */ {(14<<2)|2,{84,70,0}}, +/* 57224 */ {(14<<2)|2,{84,71,0}}, +/* 57225 */ {(14<<2)|2,{84,71,0}}, +/* 57226 */ {(14<<2)|2,{84,71,0}}, +/* 57227 */ {(14<<2)|2,{84,71,0}}, +/* 57228 */ {(14<<2)|2,{84,72,0}}, +/* 57229 */ {(14<<2)|2,{84,72,0}}, +/* 57230 */ {(14<<2)|2,{84,72,0}}, +/* 57231 */ {(14<<2)|2,{84,72,0}}, +/* 57232 */ {(14<<2)|2,{84,73,0}}, +/* 57233 */ {(14<<2)|2,{84,73,0}}, +/* 57234 */ {(14<<2)|2,{84,73,0}}, +/* 57235 */ {(14<<2)|2,{84,73,0}}, +/* 57236 */ {(14<<2)|2,{84,74,0}}, +/* 57237 */ {(14<<2)|2,{84,74,0}}, +/* 57238 */ {(14<<2)|2,{84,74,0}}, +/* 57239 */ {(14<<2)|2,{84,74,0}}, +/* 57240 */ {(14<<2)|2,{84,75,0}}, +/* 57241 */ {(14<<2)|2,{84,75,0}}, +/* 57242 */ {(14<<2)|2,{84,75,0}}, +/* 57243 */ {(14<<2)|2,{84,75,0}}, +/* 57244 */ {(14<<2)|2,{84,76,0}}, +/* 57245 */ {(14<<2)|2,{84,76,0}}, +/* 57246 */ {(14<<2)|2,{84,76,0}}, +/* 57247 */ {(14<<2)|2,{84,76,0}}, +/* 57248 */ {(14<<2)|2,{84,77,0}}, +/* 57249 */ {(14<<2)|2,{84,77,0}}, +/* 57250 */ {(14<<2)|2,{84,77,0}}, +/* 57251 */ {(14<<2)|2,{84,77,0}}, +/* 57252 */ {(14<<2)|2,{84,78,0}}, +/* 57253 */ {(14<<2)|2,{84,78,0}}, +/* 57254 */ {(14<<2)|2,{84,78,0}}, +/* 57255 */ {(14<<2)|2,{84,78,0}}, +/* 57256 */ {(14<<2)|2,{84,79,0}}, +/* 57257 */ {(14<<2)|2,{84,79,0}}, +/* 57258 */ {(14<<2)|2,{84,79,0}}, +/* 57259 */ {(14<<2)|2,{84,79,0}}, +/* 57260 */ {(14<<2)|2,{84,80,0}}, +/* 57261 */ {(14<<2)|2,{84,80,0}}, +/* 57262 */ {(14<<2)|2,{84,80,0}}, +/* 57263 */ {(14<<2)|2,{84,80,0}}, +/* 57264 */ {(14<<2)|2,{84,81,0}}, +/* 57265 */ {(14<<2)|2,{84,81,0}}, +/* 57266 */ {(14<<2)|2,{84,81,0}}, +/* 57267 */ {(14<<2)|2,{84,81,0}}, +/* 57268 */ {(14<<2)|2,{84,82,0}}, +/* 57269 */ {(14<<2)|2,{84,82,0}}, +/* 57270 */ {(14<<2)|2,{84,82,0}}, +/* 57271 */ {(14<<2)|2,{84,82,0}}, +/* 57272 */ {(14<<2)|2,{84,83,0}}, +/* 57273 */ {(14<<2)|2,{84,83,0}}, +/* 57274 */ {(14<<2)|2,{84,83,0}}, +/* 57275 */ {(14<<2)|2,{84,83,0}}, +/* 57276 */ {(14<<2)|2,{84,84,0}}, +/* 57277 */ {(14<<2)|2,{84,84,0}}, +/* 57278 */ {(14<<2)|2,{84,84,0}}, +/* 57279 */ {(14<<2)|2,{84,84,0}}, +/* 57280 */ {(14<<2)|2,{84,85,0}}, +/* 57281 */ {(14<<2)|2,{84,85,0}}, +/* 57282 */ {(14<<2)|2,{84,85,0}}, +/* 57283 */ {(14<<2)|2,{84,85,0}}, +/* 57284 */ {(14<<2)|2,{84,86,0}}, +/* 57285 */ {(14<<2)|2,{84,86,0}}, +/* 57286 */ {(14<<2)|2,{84,86,0}}, +/* 57287 */ {(14<<2)|2,{84,86,0}}, +/* 57288 */ {(14<<2)|2,{84,87,0}}, +/* 57289 */ {(14<<2)|2,{84,87,0}}, +/* 57290 */ {(14<<2)|2,{84,87,0}}, +/* 57291 */ {(14<<2)|2,{84,87,0}}, +/* 57292 */ {(14<<2)|2,{84,89,0}}, +/* 57293 */ {(14<<2)|2,{84,89,0}}, +/* 57294 */ {(14<<2)|2,{84,89,0}}, +/* 57295 */ {(14<<2)|2,{84,89,0}}, +/* 57296 */ {(14<<2)|2,{84,106,0}}, +/* 57297 */ {(14<<2)|2,{84,106,0}}, +/* 57298 */ {(14<<2)|2,{84,106,0}}, +/* 57299 */ {(14<<2)|2,{84,106,0}}, +/* 57300 */ {(14<<2)|2,{84,107,0}}, +/* 57301 */ {(14<<2)|2,{84,107,0}}, +/* 57302 */ {(14<<2)|2,{84,107,0}}, +/* 57303 */ {(14<<2)|2,{84,107,0}}, +/* 57304 */ {(14<<2)|2,{84,113,0}}, +/* 57305 */ {(14<<2)|2,{84,113,0}}, +/* 57306 */ {(14<<2)|2,{84,113,0}}, +/* 57307 */ {(14<<2)|2,{84,113,0}}, +/* 57308 */ {(14<<2)|2,{84,118,0}}, +/* 57309 */ {(14<<2)|2,{84,118,0}}, +/* 57310 */ {(14<<2)|2,{84,118,0}}, +/* 57311 */ {(14<<2)|2,{84,118,0}}, +/* 57312 */ {(14<<2)|2,{84,119,0}}, +/* 57313 */ {(14<<2)|2,{84,119,0}}, +/* 57314 */ {(14<<2)|2,{84,119,0}}, +/* 57315 */ {(14<<2)|2,{84,119,0}}, +/* 57316 */ {(14<<2)|2,{84,120,0}}, +/* 57317 */ {(14<<2)|2,{84,120,0}}, +/* 57318 */ {(14<<2)|2,{84,120,0}}, +/* 57319 */ {(14<<2)|2,{84,120,0}}, +/* 57320 */ {(14<<2)|2,{84,121,0}}, +/* 57321 */ {(14<<2)|2,{84,121,0}}, +/* 57322 */ {(14<<2)|2,{84,121,0}}, +/* 57323 */ {(14<<2)|2,{84,121,0}}, +/* 57324 */ {(14<<2)|2,{84,122,0}}, +/* 57325 */ {(14<<2)|2,{84,122,0}}, +/* 57326 */ {(14<<2)|2,{84,122,0}}, +/* 57327 */ {(14<<2)|2,{84,122,0}}, +/* 57328 */ {(15<<2)|2,{84,38,0}}, +/* 57329 */ {(15<<2)|2,{84,38,0}}, +/* 57330 */ {(15<<2)|2,{84,42,0}}, +/* 57331 */ {(15<<2)|2,{84,42,0}}, +/* 57332 */ {(15<<2)|2,{84,44,0}}, +/* 57333 */ {(15<<2)|2,{84,44,0}}, +/* 57334 */ {(15<<2)|2,{84,59,0}}, +/* 57335 */ {(15<<2)|2,{84,59,0}}, +/* 57336 */ {(15<<2)|2,{84,88,0}}, +/* 57337 */ {(15<<2)|2,{84,88,0}}, +/* 57338 */ {(15<<2)|2,{84,90,0}}, +/* 57339 */ {(15<<2)|2,{84,90,0}}, +/* 57340 */ {(7<<2)|1,{84,0,0}}, +/* 57341 */ {(7<<2)|1,{84,0,0}}, +/* 57342 */ {(7<<2)|1,{84,0,0}}, +/* 57343 */ {(7<<2)|1,{84,0,0}}, +/* 57344 */ {(12<<2)|2,{85,48,0}}, +/* 57345 */ {(12<<2)|2,{85,48,0}}, +/* 57346 */ {(12<<2)|2,{85,48,0}}, +/* 57347 */ {(12<<2)|2,{85,48,0}}, +/* 57348 */ {(12<<2)|2,{85,48,0}}, +/* 57349 */ {(12<<2)|2,{85,48,0}}, +/* 57350 */ {(12<<2)|2,{85,48,0}}, +/* 57351 */ {(12<<2)|2,{85,48,0}}, +/* 57352 */ {(12<<2)|2,{85,48,0}}, +/* 57353 */ {(12<<2)|2,{85,48,0}}, +/* 57354 */ {(12<<2)|2,{85,48,0}}, +/* 57355 */ {(12<<2)|2,{85,48,0}}, +/* 57356 */ {(12<<2)|2,{85,48,0}}, +/* 57357 */ {(12<<2)|2,{85,48,0}}, +/* 57358 */ {(12<<2)|2,{85,48,0}}, +/* 57359 */ {(12<<2)|2,{85,48,0}}, +/* 57360 */ {(12<<2)|2,{85,49,0}}, +/* 57361 */ {(12<<2)|2,{85,49,0}}, +/* 57362 */ {(12<<2)|2,{85,49,0}}, +/* 57363 */ {(12<<2)|2,{85,49,0}}, +/* 57364 */ {(12<<2)|2,{85,49,0}}, +/* 57365 */ {(12<<2)|2,{85,49,0}}, +/* 57366 */ {(12<<2)|2,{85,49,0}}, +/* 57367 */ {(12<<2)|2,{85,49,0}}, +/* 57368 */ {(12<<2)|2,{85,49,0}}, +/* 57369 */ {(12<<2)|2,{85,49,0}}, +/* 57370 */ {(12<<2)|2,{85,49,0}}, +/* 57371 */ {(12<<2)|2,{85,49,0}}, +/* 57372 */ {(12<<2)|2,{85,49,0}}, +/* 57373 */ {(12<<2)|2,{85,49,0}}, +/* 57374 */ {(12<<2)|2,{85,49,0}}, +/* 57375 */ {(12<<2)|2,{85,49,0}}, +/* 57376 */ {(12<<2)|2,{85,50,0}}, +/* 57377 */ {(12<<2)|2,{85,50,0}}, +/* 57378 */ {(12<<2)|2,{85,50,0}}, +/* 57379 */ {(12<<2)|2,{85,50,0}}, +/* 57380 */ {(12<<2)|2,{85,50,0}}, +/* 57381 */ {(12<<2)|2,{85,50,0}}, +/* 57382 */ {(12<<2)|2,{85,50,0}}, +/* 57383 */ {(12<<2)|2,{85,50,0}}, +/* 57384 */ {(12<<2)|2,{85,50,0}}, +/* 57385 */ {(12<<2)|2,{85,50,0}}, +/* 57386 */ {(12<<2)|2,{85,50,0}}, +/* 57387 */ {(12<<2)|2,{85,50,0}}, +/* 57388 */ {(12<<2)|2,{85,50,0}}, +/* 57389 */ {(12<<2)|2,{85,50,0}}, +/* 57390 */ {(12<<2)|2,{85,50,0}}, +/* 57391 */ {(12<<2)|2,{85,50,0}}, +/* 57392 */ {(12<<2)|2,{85,97,0}}, +/* 57393 */ {(12<<2)|2,{85,97,0}}, +/* 57394 */ {(12<<2)|2,{85,97,0}}, +/* 57395 */ {(12<<2)|2,{85,97,0}}, +/* 57396 */ {(12<<2)|2,{85,97,0}}, +/* 57397 */ {(12<<2)|2,{85,97,0}}, +/* 57398 */ {(12<<2)|2,{85,97,0}}, +/* 57399 */ {(12<<2)|2,{85,97,0}}, +/* 57400 */ {(12<<2)|2,{85,97,0}}, +/* 57401 */ {(12<<2)|2,{85,97,0}}, +/* 57402 */ {(12<<2)|2,{85,97,0}}, +/* 57403 */ {(12<<2)|2,{85,97,0}}, +/* 57404 */ {(12<<2)|2,{85,97,0}}, +/* 57405 */ {(12<<2)|2,{85,97,0}}, +/* 57406 */ {(12<<2)|2,{85,97,0}}, +/* 57407 */ {(12<<2)|2,{85,97,0}}, +/* 57408 */ {(12<<2)|2,{85,99,0}}, +/* 57409 */ {(12<<2)|2,{85,99,0}}, +/* 57410 */ {(12<<2)|2,{85,99,0}}, +/* 57411 */ {(12<<2)|2,{85,99,0}}, +/* 57412 */ {(12<<2)|2,{85,99,0}}, +/* 57413 */ {(12<<2)|2,{85,99,0}}, +/* 57414 */ {(12<<2)|2,{85,99,0}}, +/* 57415 */ {(12<<2)|2,{85,99,0}}, +/* 57416 */ {(12<<2)|2,{85,99,0}}, +/* 57417 */ {(12<<2)|2,{85,99,0}}, +/* 57418 */ {(12<<2)|2,{85,99,0}}, +/* 57419 */ {(12<<2)|2,{85,99,0}}, +/* 57420 */ {(12<<2)|2,{85,99,0}}, +/* 57421 */ {(12<<2)|2,{85,99,0}}, +/* 57422 */ {(12<<2)|2,{85,99,0}}, +/* 57423 */ {(12<<2)|2,{85,99,0}}, +/* 57424 */ {(12<<2)|2,{85,101,0}}, +/* 57425 */ {(12<<2)|2,{85,101,0}}, +/* 57426 */ {(12<<2)|2,{85,101,0}}, +/* 57427 */ {(12<<2)|2,{85,101,0}}, +/* 57428 */ {(12<<2)|2,{85,101,0}}, +/* 57429 */ {(12<<2)|2,{85,101,0}}, +/* 57430 */ {(12<<2)|2,{85,101,0}}, +/* 57431 */ {(12<<2)|2,{85,101,0}}, +/* 57432 */ {(12<<2)|2,{85,101,0}}, +/* 57433 */ {(12<<2)|2,{85,101,0}}, +/* 57434 */ {(12<<2)|2,{85,101,0}}, +/* 57435 */ {(12<<2)|2,{85,101,0}}, +/* 57436 */ {(12<<2)|2,{85,101,0}}, +/* 57437 */ {(12<<2)|2,{85,101,0}}, +/* 57438 */ {(12<<2)|2,{85,101,0}}, +/* 57439 */ {(12<<2)|2,{85,101,0}}, +/* 57440 */ {(12<<2)|2,{85,105,0}}, +/* 57441 */ {(12<<2)|2,{85,105,0}}, +/* 57442 */ {(12<<2)|2,{85,105,0}}, +/* 57443 */ {(12<<2)|2,{85,105,0}}, +/* 57444 */ {(12<<2)|2,{85,105,0}}, +/* 57445 */ {(12<<2)|2,{85,105,0}}, +/* 57446 */ {(12<<2)|2,{85,105,0}}, +/* 57447 */ {(12<<2)|2,{85,105,0}}, +/* 57448 */ {(12<<2)|2,{85,105,0}}, +/* 57449 */ {(12<<2)|2,{85,105,0}}, +/* 57450 */ {(12<<2)|2,{85,105,0}}, +/* 57451 */ {(12<<2)|2,{85,105,0}}, +/* 57452 */ {(12<<2)|2,{85,105,0}}, +/* 57453 */ {(12<<2)|2,{85,105,0}}, +/* 57454 */ {(12<<2)|2,{85,105,0}}, +/* 57455 */ {(12<<2)|2,{85,105,0}}, +/* 57456 */ {(12<<2)|2,{85,111,0}}, +/* 57457 */ {(12<<2)|2,{85,111,0}}, +/* 57458 */ {(12<<2)|2,{85,111,0}}, +/* 57459 */ {(12<<2)|2,{85,111,0}}, +/* 57460 */ {(12<<2)|2,{85,111,0}}, +/* 57461 */ {(12<<2)|2,{85,111,0}}, +/* 57462 */ {(12<<2)|2,{85,111,0}}, +/* 57463 */ {(12<<2)|2,{85,111,0}}, +/* 57464 */ {(12<<2)|2,{85,111,0}}, +/* 57465 */ {(12<<2)|2,{85,111,0}}, +/* 57466 */ {(12<<2)|2,{85,111,0}}, +/* 57467 */ {(12<<2)|2,{85,111,0}}, +/* 57468 */ {(12<<2)|2,{85,111,0}}, +/* 57469 */ {(12<<2)|2,{85,111,0}}, +/* 57470 */ {(12<<2)|2,{85,111,0}}, +/* 57471 */ {(12<<2)|2,{85,111,0}}, +/* 57472 */ {(12<<2)|2,{85,115,0}}, +/* 57473 */ {(12<<2)|2,{85,115,0}}, +/* 57474 */ {(12<<2)|2,{85,115,0}}, +/* 57475 */ {(12<<2)|2,{85,115,0}}, +/* 57476 */ {(12<<2)|2,{85,115,0}}, +/* 57477 */ {(12<<2)|2,{85,115,0}}, +/* 57478 */ {(12<<2)|2,{85,115,0}}, +/* 57479 */ {(12<<2)|2,{85,115,0}}, +/* 57480 */ {(12<<2)|2,{85,115,0}}, +/* 57481 */ {(12<<2)|2,{85,115,0}}, +/* 57482 */ {(12<<2)|2,{85,115,0}}, +/* 57483 */ {(12<<2)|2,{85,115,0}}, +/* 57484 */ {(12<<2)|2,{85,115,0}}, +/* 57485 */ {(12<<2)|2,{85,115,0}}, +/* 57486 */ {(12<<2)|2,{85,115,0}}, +/* 57487 */ {(12<<2)|2,{85,115,0}}, +/* 57488 */ {(12<<2)|2,{85,116,0}}, +/* 57489 */ {(12<<2)|2,{85,116,0}}, +/* 57490 */ {(12<<2)|2,{85,116,0}}, +/* 57491 */ {(12<<2)|2,{85,116,0}}, +/* 57492 */ {(12<<2)|2,{85,116,0}}, +/* 57493 */ {(12<<2)|2,{85,116,0}}, +/* 57494 */ {(12<<2)|2,{85,116,0}}, +/* 57495 */ {(12<<2)|2,{85,116,0}}, +/* 57496 */ {(12<<2)|2,{85,116,0}}, +/* 57497 */ {(12<<2)|2,{85,116,0}}, +/* 57498 */ {(12<<2)|2,{85,116,0}}, +/* 57499 */ {(12<<2)|2,{85,116,0}}, +/* 57500 */ {(12<<2)|2,{85,116,0}}, +/* 57501 */ {(12<<2)|2,{85,116,0}}, +/* 57502 */ {(12<<2)|2,{85,116,0}}, +/* 57503 */ {(12<<2)|2,{85,116,0}}, +/* 57504 */ {(13<<2)|2,{85,32,0}}, +/* 57505 */ {(13<<2)|2,{85,32,0}}, +/* 57506 */ {(13<<2)|2,{85,32,0}}, +/* 57507 */ {(13<<2)|2,{85,32,0}}, +/* 57508 */ {(13<<2)|2,{85,32,0}}, +/* 57509 */ {(13<<2)|2,{85,32,0}}, +/* 57510 */ {(13<<2)|2,{85,32,0}}, +/* 57511 */ {(13<<2)|2,{85,32,0}}, +/* 57512 */ {(13<<2)|2,{85,37,0}}, +/* 57513 */ {(13<<2)|2,{85,37,0}}, +/* 57514 */ {(13<<2)|2,{85,37,0}}, +/* 57515 */ {(13<<2)|2,{85,37,0}}, +/* 57516 */ {(13<<2)|2,{85,37,0}}, +/* 57517 */ {(13<<2)|2,{85,37,0}}, +/* 57518 */ {(13<<2)|2,{85,37,0}}, +/* 57519 */ {(13<<2)|2,{85,37,0}}, +/* 57520 */ {(13<<2)|2,{85,45,0}}, +/* 57521 */ {(13<<2)|2,{85,45,0}}, +/* 57522 */ {(13<<2)|2,{85,45,0}}, +/* 57523 */ {(13<<2)|2,{85,45,0}}, +/* 57524 */ {(13<<2)|2,{85,45,0}}, +/* 57525 */ {(13<<2)|2,{85,45,0}}, +/* 57526 */ {(13<<2)|2,{85,45,0}}, +/* 57527 */ {(13<<2)|2,{85,45,0}}, +/* 57528 */ {(13<<2)|2,{85,46,0}}, +/* 57529 */ {(13<<2)|2,{85,46,0}}, +/* 57530 */ {(13<<2)|2,{85,46,0}}, +/* 57531 */ {(13<<2)|2,{85,46,0}}, +/* 57532 */ {(13<<2)|2,{85,46,0}}, +/* 57533 */ {(13<<2)|2,{85,46,0}}, +/* 57534 */ {(13<<2)|2,{85,46,0}}, +/* 57535 */ {(13<<2)|2,{85,46,0}}, +/* 57536 */ {(13<<2)|2,{85,47,0}}, +/* 57537 */ {(13<<2)|2,{85,47,0}}, +/* 57538 */ {(13<<2)|2,{85,47,0}}, +/* 57539 */ {(13<<2)|2,{85,47,0}}, +/* 57540 */ {(13<<2)|2,{85,47,0}}, +/* 57541 */ {(13<<2)|2,{85,47,0}}, +/* 57542 */ {(13<<2)|2,{85,47,0}}, +/* 57543 */ {(13<<2)|2,{85,47,0}}, +/* 57544 */ {(13<<2)|2,{85,51,0}}, +/* 57545 */ {(13<<2)|2,{85,51,0}}, +/* 57546 */ {(13<<2)|2,{85,51,0}}, +/* 57547 */ {(13<<2)|2,{85,51,0}}, +/* 57548 */ {(13<<2)|2,{85,51,0}}, +/* 57549 */ {(13<<2)|2,{85,51,0}}, +/* 57550 */ {(13<<2)|2,{85,51,0}}, +/* 57551 */ {(13<<2)|2,{85,51,0}}, +/* 57552 */ {(13<<2)|2,{85,52,0}}, +/* 57553 */ {(13<<2)|2,{85,52,0}}, +/* 57554 */ {(13<<2)|2,{85,52,0}}, +/* 57555 */ {(13<<2)|2,{85,52,0}}, +/* 57556 */ {(13<<2)|2,{85,52,0}}, +/* 57557 */ {(13<<2)|2,{85,52,0}}, +/* 57558 */ {(13<<2)|2,{85,52,0}}, +/* 57559 */ {(13<<2)|2,{85,52,0}}, +/* 57560 */ {(13<<2)|2,{85,53,0}}, +/* 57561 */ {(13<<2)|2,{85,53,0}}, +/* 57562 */ {(13<<2)|2,{85,53,0}}, +/* 57563 */ {(13<<2)|2,{85,53,0}}, +/* 57564 */ {(13<<2)|2,{85,53,0}}, +/* 57565 */ {(13<<2)|2,{85,53,0}}, +/* 57566 */ {(13<<2)|2,{85,53,0}}, +/* 57567 */ {(13<<2)|2,{85,53,0}}, +/* 57568 */ {(13<<2)|2,{85,54,0}}, +/* 57569 */ {(13<<2)|2,{85,54,0}}, +/* 57570 */ {(13<<2)|2,{85,54,0}}, +/* 57571 */ {(13<<2)|2,{85,54,0}}, +/* 57572 */ {(13<<2)|2,{85,54,0}}, +/* 57573 */ {(13<<2)|2,{85,54,0}}, +/* 57574 */ {(13<<2)|2,{85,54,0}}, +/* 57575 */ {(13<<2)|2,{85,54,0}}, +/* 57576 */ {(13<<2)|2,{85,55,0}}, +/* 57577 */ {(13<<2)|2,{85,55,0}}, +/* 57578 */ {(13<<2)|2,{85,55,0}}, +/* 57579 */ {(13<<2)|2,{85,55,0}}, +/* 57580 */ {(13<<2)|2,{85,55,0}}, +/* 57581 */ {(13<<2)|2,{85,55,0}}, +/* 57582 */ {(13<<2)|2,{85,55,0}}, +/* 57583 */ {(13<<2)|2,{85,55,0}}, +/* 57584 */ {(13<<2)|2,{85,56,0}}, +/* 57585 */ {(13<<2)|2,{85,56,0}}, +/* 57586 */ {(13<<2)|2,{85,56,0}}, +/* 57587 */ {(13<<2)|2,{85,56,0}}, +/* 57588 */ {(13<<2)|2,{85,56,0}}, +/* 57589 */ {(13<<2)|2,{85,56,0}}, +/* 57590 */ {(13<<2)|2,{85,56,0}}, +/* 57591 */ {(13<<2)|2,{85,56,0}}, +/* 57592 */ {(13<<2)|2,{85,57,0}}, +/* 57593 */ {(13<<2)|2,{85,57,0}}, +/* 57594 */ {(13<<2)|2,{85,57,0}}, +/* 57595 */ {(13<<2)|2,{85,57,0}}, +/* 57596 */ {(13<<2)|2,{85,57,0}}, +/* 57597 */ {(13<<2)|2,{85,57,0}}, +/* 57598 */ {(13<<2)|2,{85,57,0}}, +/* 57599 */ {(13<<2)|2,{85,57,0}}, +/* 57600 */ {(13<<2)|2,{85,61,0}}, +/* 57601 */ {(13<<2)|2,{85,61,0}}, +/* 57602 */ {(13<<2)|2,{85,61,0}}, +/* 57603 */ {(13<<2)|2,{85,61,0}}, +/* 57604 */ {(13<<2)|2,{85,61,0}}, +/* 57605 */ {(13<<2)|2,{85,61,0}}, +/* 57606 */ {(13<<2)|2,{85,61,0}}, +/* 57607 */ {(13<<2)|2,{85,61,0}}, +/* 57608 */ {(13<<2)|2,{85,65,0}}, +/* 57609 */ {(13<<2)|2,{85,65,0}}, +/* 57610 */ {(13<<2)|2,{85,65,0}}, +/* 57611 */ {(13<<2)|2,{85,65,0}}, +/* 57612 */ {(13<<2)|2,{85,65,0}}, +/* 57613 */ {(13<<2)|2,{85,65,0}}, +/* 57614 */ {(13<<2)|2,{85,65,0}}, +/* 57615 */ {(13<<2)|2,{85,65,0}}, +/* 57616 */ {(13<<2)|2,{85,95,0}}, +/* 57617 */ {(13<<2)|2,{85,95,0}}, +/* 57618 */ {(13<<2)|2,{85,95,0}}, +/* 57619 */ {(13<<2)|2,{85,95,0}}, +/* 57620 */ {(13<<2)|2,{85,95,0}}, +/* 57621 */ {(13<<2)|2,{85,95,0}}, +/* 57622 */ {(13<<2)|2,{85,95,0}}, +/* 57623 */ {(13<<2)|2,{85,95,0}}, +/* 57624 */ {(13<<2)|2,{85,98,0}}, +/* 57625 */ {(13<<2)|2,{85,98,0}}, +/* 57626 */ {(13<<2)|2,{85,98,0}}, +/* 57627 */ {(13<<2)|2,{85,98,0}}, +/* 57628 */ {(13<<2)|2,{85,98,0}}, +/* 57629 */ {(13<<2)|2,{85,98,0}}, +/* 57630 */ {(13<<2)|2,{85,98,0}}, +/* 57631 */ {(13<<2)|2,{85,98,0}}, +/* 57632 */ {(13<<2)|2,{85,100,0}}, +/* 57633 */ {(13<<2)|2,{85,100,0}}, +/* 57634 */ {(13<<2)|2,{85,100,0}}, +/* 57635 */ {(13<<2)|2,{85,100,0}}, +/* 57636 */ {(13<<2)|2,{85,100,0}}, +/* 57637 */ {(13<<2)|2,{85,100,0}}, +/* 57638 */ {(13<<2)|2,{85,100,0}}, +/* 57639 */ {(13<<2)|2,{85,100,0}}, +/* 57640 */ {(13<<2)|2,{85,102,0}}, +/* 57641 */ {(13<<2)|2,{85,102,0}}, +/* 57642 */ {(13<<2)|2,{85,102,0}}, +/* 57643 */ {(13<<2)|2,{85,102,0}}, +/* 57644 */ {(13<<2)|2,{85,102,0}}, +/* 57645 */ {(13<<2)|2,{85,102,0}}, +/* 57646 */ {(13<<2)|2,{85,102,0}}, +/* 57647 */ {(13<<2)|2,{85,102,0}}, +/* 57648 */ {(13<<2)|2,{85,103,0}}, +/* 57649 */ {(13<<2)|2,{85,103,0}}, +/* 57650 */ {(13<<2)|2,{85,103,0}}, +/* 57651 */ {(13<<2)|2,{85,103,0}}, +/* 57652 */ {(13<<2)|2,{85,103,0}}, +/* 57653 */ {(13<<2)|2,{85,103,0}}, +/* 57654 */ {(13<<2)|2,{85,103,0}}, +/* 57655 */ {(13<<2)|2,{85,103,0}}, +/* 57656 */ {(13<<2)|2,{85,104,0}}, +/* 57657 */ {(13<<2)|2,{85,104,0}}, +/* 57658 */ {(13<<2)|2,{85,104,0}}, +/* 57659 */ {(13<<2)|2,{85,104,0}}, +/* 57660 */ {(13<<2)|2,{85,104,0}}, +/* 57661 */ {(13<<2)|2,{85,104,0}}, +/* 57662 */ {(13<<2)|2,{85,104,0}}, +/* 57663 */ {(13<<2)|2,{85,104,0}}, +/* 57664 */ {(13<<2)|2,{85,108,0}}, +/* 57665 */ {(13<<2)|2,{85,108,0}}, +/* 57666 */ {(13<<2)|2,{85,108,0}}, +/* 57667 */ {(13<<2)|2,{85,108,0}}, +/* 57668 */ {(13<<2)|2,{85,108,0}}, +/* 57669 */ {(13<<2)|2,{85,108,0}}, +/* 57670 */ {(13<<2)|2,{85,108,0}}, +/* 57671 */ {(13<<2)|2,{85,108,0}}, +/* 57672 */ {(13<<2)|2,{85,109,0}}, +/* 57673 */ {(13<<2)|2,{85,109,0}}, +/* 57674 */ {(13<<2)|2,{85,109,0}}, +/* 57675 */ {(13<<2)|2,{85,109,0}}, +/* 57676 */ {(13<<2)|2,{85,109,0}}, +/* 57677 */ {(13<<2)|2,{85,109,0}}, +/* 57678 */ {(13<<2)|2,{85,109,0}}, +/* 57679 */ {(13<<2)|2,{85,109,0}}, +/* 57680 */ {(13<<2)|2,{85,110,0}}, +/* 57681 */ {(13<<2)|2,{85,110,0}}, +/* 57682 */ {(13<<2)|2,{85,110,0}}, +/* 57683 */ {(13<<2)|2,{85,110,0}}, +/* 57684 */ {(13<<2)|2,{85,110,0}}, +/* 57685 */ {(13<<2)|2,{85,110,0}}, +/* 57686 */ {(13<<2)|2,{85,110,0}}, +/* 57687 */ {(13<<2)|2,{85,110,0}}, +/* 57688 */ {(13<<2)|2,{85,112,0}}, +/* 57689 */ {(13<<2)|2,{85,112,0}}, +/* 57690 */ {(13<<2)|2,{85,112,0}}, +/* 57691 */ {(13<<2)|2,{85,112,0}}, +/* 57692 */ {(13<<2)|2,{85,112,0}}, +/* 57693 */ {(13<<2)|2,{85,112,0}}, +/* 57694 */ {(13<<2)|2,{85,112,0}}, +/* 57695 */ {(13<<2)|2,{85,112,0}}, +/* 57696 */ {(13<<2)|2,{85,114,0}}, +/* 57697 */ {(13<<2)|2,{85,114,0}}, +/* 57698 */ {(13<<2)|2,{85,114,0}}, +/* 57699 */ {(13<<2)|2,{85,114,0}}, +/* 57700 */ {(13<<2)|2,{85,114,0}}, +/* 57701 */ {(13<<2)|2,{85,114,0}}, +/* 57702 */ {(13<<2)|2,{85,114,0}}, +/* 57703 */ {(13<<2)|2,{85,114,0}}, +/* 57704 */ {(13<<2)|2,{85,117,0}}, +/* 57705 */ {(13<<2)|2,{85,117,0}}, +/* 57706 */ {(13<<2)|2,{85,117,0}}, +/* 57707 */ {(13<<2)|2,{85,117,0}}, +/* 57708 */ {(13<<2)|2,{85,117,0}}, +/* 57709 */ {(13<<2)|2,{85,117,0}}, +/* 57710 */ {(13<<2)|2,{85,117,0}}, +/* 57711 */ {(13<<2)|2,{85,117,0}}, +/* 57712 */ {(14<<2)|2,{85,58,0}}, +/* 57713 */ {(14<<2)|2,{85,58,0}}, +/* 57714 */ {(14<<2)|2,{85,58,0}}, +/* 57715 */ {(14<<2)|2,{85,58,0}}, +/* 57716 */ {(14<<2)|2,{85,66,0}}, +/* 57717 */ {(14<<2)|2,{85,66,0}}, +/* 57718 */ {(14<<2)|2,{85,66,0}}, +/* 57719 */ {(14<<2)|2,{85,66,0}}, +/* 57720 */ {(14<<2)|2,{85,67,0}}, +/* 57721 */ {(14<<2)|2,{85,67,0}}, +/* 57722 */ {(14<<2)|2,{85,67,0}}, +/* 57723 */ {(14<<2)|2,{85,67,0}}, +/* 57724 */ {(14<<2)|2,{85,68,0}}, +/* 57725 */ {(14<<2)|2,{85,68,0}}, +/* 57726 */ {(14<<2)|2,{85,68,0}}, +/* 57727 */ {(14<<2)|2,{85,68,0}}, +/* 57728 */ {(14<<2)|2,{85,69,0}}, +/* 57729 */ {(14<<2)|2,{85,69,0}}, +/* 57730 */ {(14<<2)|2,{85,69,0}}, +/* 57731 */ {(14<<2)|2,{85,69,0}}, +/* 57732 */ {(14<<2)|2,{85,70,0}}, +/* 57733 */ {(14<<2)|2,{85,70,0}}, +/* 57734 */ {(14<<2)|2,{85,70,0}}, +/* 57735 */ {(14<<2)|2,{85,70,0}}, +/* 57736 */ {(14<<2)|2,{85,71,0}}, +/* 57737 */ {(14<<2)|2,{85,71,0}}, +/* 57738 */ {(14<<2)|2,{85,71,0}}, +/* 57739 */ {(14<<2)|2,{85,71,0}}, +/* 57740 */ {(14<<2)|2,{85,72,0}}, +/* 57741 */ {(14<<2)|2,{85,72,0}}, +/* 57742 */ {(14<<2)|2,{85,72,0}}, +/* 57743 */ {(14<<2)|2,{85,72,0}}, +/* 57744 */ {(14<<2)|2,{85,73,0}}, +/* 57745 */ {(14<<2)|2,{85,73,0}}, +/* 57746 */ {(14<<2)|2,{85,73,0}}, +/* 57747 */ {(14<<2)|2,{85,73,0}}, +/* 57748 */ {(14<<2)|2,{85,74,0}}, +/* 57749 */ {(14<<2)|2,{85,74,0}}, +/* 57750 */ {(14<<2)|2,{85,74,0}}, +/* 57751 */ {(14<<2)|2,{85,74,0}}, +/* 57752 */ {(14<<2)|2,{85,75,0}}, +/* 57753 */ {(14<<2)|2,{85,75,0}}, +/* 57754 */ {(14<<2)|2,{85,75,0}}, +/* 57755 */ {(14<<2)|2,{85,75,0}}, +/* 57756 */ {(14<<2)|2,{85,76,0}}, +/* 57757 */ {(14<<2)|2,{85,76,0}}, +/* 57758 */ {(14<<2)|2,{85,76,0}}, +/* 57759 */ {(14<<2)|2,{85,76,0}}, +/* 57760 */ {(14<<2)|2,{85,77,0}}, +/* 57761 */ {(14<<2)|2,{85,77,0}}, +/* 57762 */ {(14<<2)|2,{85,77,0}}, +/* 57763 */ {(14<<2)|2,{85,77,0}}, +/* 57764 */ {(14<<2)|2,{85,78,0}}, +/* 57765 */ {(14<<2)|2,{85,78,0}}, +/* 57766 */ {(14<<2)|2,{85,78,0}}, +/* 57767 */ {(14<<2)|2,{85,78,0}}, +/* 57768 */ {(14<<2)|2,{85,79,0}}, +/* 57769 */ {(14<<2)|2,{85,79,0}}, +/* 57770 */ {(14<<2)|2,{85,79,0}}, +/* 57771 */ {(14<<2)|2,{85,79,0}}, +/* 57772 */ {(14<<2)|2,{85,80,0}}, +/* 57773 */ {(14<<2)|2,{85,80,0}}, +/* 57774 */ {(14<<2)|2,{85,80,0}}, +/* 57775 */ {(14<<2)|2,{85,80,0}}, +/* 57776 */ {(14<<2)|2,{85,81,0}}, +/* 57777 */ {(14<<2)|2,{85,81,0}}, +/* 57778 */ {(14<<2)|2,{85,81,0}}, +/* 57779 */ {(14<<2)|2,{85,81,0}}, +/* 57780 */ {(14<<2)|2,{85,82,0}}, +/* 57781 */ {(14<<2)|2,{85,82,0}}, +/* 57782 */ {(14<<2)|2,{85,82,0}}, +/* 57783 */ {(14<<2)|2,{85,82,0}}, +/* 57784 */ {(14<<2)|2,{85,83,0}}, +/* 57785 */ {(14<<2)|2,{85,83,0}}, +/* 57786 */ {(14<<2)|2,{85,83,0}}, +/* 57787 */ {(14<<2)|2,{85,83,0}}, +/* 57788 */ {(14<<2)|2,{85,84,0}}, +/* 57789 */ {(14<<2)|2,{85,84,0}}, +/* 57790 */ {(14<<2)|2,{85,84,0}}, +/* 57791 */ {(14<<2)|2,{85,84,0}}, +/* 57792 */ {(14<<2)|2,{85,85,0}}, +/* 57793 */ {(14<<2)|2,{85,85,0}}, +/* 57794 */ {(14<<2)|2,{85,85,0}}, +/* 57795 */ {(14<<2)|2,{85,85,0}}, +/* 57796 */ {(14<<2)|2,{85,86,0}}, +/* 57797 */ {(14<<2)|2,{85,86,0}}, +/* 57798 */ {(14<<2)|2,{85,86,0}}, +/* 57799 */ {(14<<2)|2,{85,86,0}}, +/* 57800 */ {(14<<2)|2,{85,87,0}}, +/* 57801 */ {(14<<2)|2,{85,87,0}}, +/* 57802 */ {(14<<2)|2,{85,87,0}}, +/* 57803 */ {(14<<2)|2,{85,87,0}}, +/* 57804 */ {(14<<2)|2,{85,89,0}}, +/* 57805 */ {(14<<2)|2,{85,89,0}}, +/* 57806 */ {(14<<2)|2,{85,89,0}}, +/* 57807 */ {(14<<2)|2,{85,89,0}}, +/* 57808 */ {(14<<2)|2,{85,106,0}}, +/* 57809 */ {(14<<2)|2,{85,106,0}}, +/* 57810 */ {(14<<2)|2,{85,106,0}}, +/* 57811 */ {(14<<2)|2,{85,106,0}}, +/* 57812 */ {(14<<2)|2,{85,107,0}}, +/* 57813 */ {(14<<2)|2,{85,107,0}}, +/* 57814 */ {(14<<2)|2,{85,107,0}}, +/* 57815 */ {(14<<2)|2,{85,107,0}}, +/* 57816 */ {(14<<2)|2,{85,113,0}}, +/* 57817 */ {(14<<2)|2,{85,113,0}}, +/* 57818 */ {(14<<2)|2,{85,113,0}}, +/* 57819 */ {(14<<2)|2,{85,113,0}}, +/* 57820 */ {(14<<2)|2,{85,118,0}}, +/* 57821 */ {(14<<2)|2,{85,118,0}}, +/* 57822 */ {(14<<2)|2,{85,118,0}}, +/* 57823 */ {(14<<2)|2,{85,118,0}}, +/* 57824 */ {(14<<2)|2,{85,119,0}}, +/* 57825 */ {(14<<2)|2,{85,119,0}}, +/* 57826 */ {(14<<2)|2,{85,119,0}}, +/* 57827 */ {(14<<2)|2,{85,119,0}}, +/* 57828 */ {(14<<2)|2,{85,120,0}}, +/* 57829 */ {(14<<2)|2,{85,120,0}}, +/* 57830 */ {(14<<2)|2,{85,120,0}}, +/* 57831 */ {(14<<2)|2,{85,120,0}}, +/* 57832 */ {(14<<2)|2,{85,121,0}}, +/* 57833 */ {(14<<2)|2,{85,121,0}}, +/* 57834 */ {(14<<2)|2,{85,121,0}}, +/* 57835 */ {(14<<2)|2,{85,121,0}}, +/* 57836 */ {(14<<2)|2,{85,122,0}}, +/* 57837 */ {(14<<2)|2,{85,122,0}}, +/* 57838 */ {(14<<2)|2,{85,122,0}}, +/* 57839 */ {(14<<2)|2,{85,122,0}}, +/* 57840 */ {(15<<2)|2,{85,38,0}}, +/* 57841 */ {(15<<2)|2,{85,38,0}}, +/* 57842 */ {(15<<2)|2,{85,42,0}}, +/* 57843 */ {(15<<2)|2,{85,42,0}}, +/* 57844 */ {(15<<2)|2,{85,44,0}}, +/* 57845 */ {(15<<2)|2,{85,44,0}}, +/* 57846 */ {(15<<2)|2,{85,59,0}}, +/* 57847 */ {(15<<2)|2,{85,59,0}}, +/* 57848 */ {(15<<2)|2,{85,88,0}}, +/* 57849 */ {(15<<2)|2,{85,88,0}}, +/* 57850 */ {(15<<2)|2,{85,90,0}}, +/* 57851 */ {(15<<2)|2,{85,90,0}}, +/* 57852 */ {(7<<2)|1,{85,0,0}}, +/* 57853 */ {(7<<2)|1,{85,0,0}}, +/* 57854 */ {(7<<2)|1,{85,0,0}}, +/* 57855 */ {(7<<2)|1,{85,0,0}}, +/* 57856 */ {(12<<2)|2,{86,48,0}}, +/* 57857 */ {(12<<2)|2,{86,48,0}}, +/* 57858 */ {(12<<2)|2,{86,48,0}}, +/* 57859 */ {(12<<2)|2,{86,48,0}}, +/* 57860 */ {(12<<2)|2,{86,48,0}}, +/* 57861 */ {(12<<2)|2,{86,48,0}}, +/* 57862 */ {(12<<2)|2,{86,48,0}}, +/* 57863 */ {(12<<2)|2,{86,48,0}}, +/* 57864 */ {(12<<2)|2,{86,48,0}}, +/* 57865 */ {(12<<2)|2,{86,48,0}}, +/* 57866 */ {(12<<2)|2,{86,48,0}}, +/* 57867 */ {(12<<2)|2,{86,48,0}}, +/* 57868 */ {(12<<2)|2,{86,48,0}}, +/* 57869 */ {(12<<2)|2,{86,48,0}}, +/* 57870 */ {(12<<2)|2,{86,48,0}}, +/* 57871 */ {(12<<2)|2,{86,48,0}}, +/* 57872 */ {(12<<2)|2,{86,49,0}}, +/* 57873 */ {(12<<2)|2,{86,49,0}}, +/* 57874 */ {(12<<2)|2,{86,49,0}}, +/* 57875 */ {(12<<2)|2,{86,49,0}}, +/* 57876 */ {(12<<2)|2,{86,49,0}}, +/* 57877 */ {(12<<2)|2,{86,49,0}}, +/* 57878 */ {(12<<2)|2,{86,49,0}}, +/* 57879 */ {(12<<2)|2,{86,49,0}}, +/* 57880 */ {(12<<2)|2,{86,49,0}}, +/* 57881 */ {(12<<2)|2,{86,49,0}}, +/* 57882 */ {(12<<2)|2,{86,49,0}}, +/* 57883 */ {(12<<2)|2,{86,49,0}}, +/* 57884 */ {(12<<2)|2,{86,49,0}}, +/* 57885 */ {(12<<2)|2,{86,49,0}}, +/* 57886 */ {(12<<2)|2,{86,49,0}}, +/* 57887 */ {(12<<2)|2,{86,49,0}}, +/* 57888 */ {(12<<2)|2,{86,50,0}}, +/* 57889 */ {(12<<2)|2,{86,50,0}}, +/* 57890 */ {(12<<2)|2,{86,50,0}}, +/* 57891 */ {(12<<2)|2,{86,50,0}}, +/* 57892 */ {(12<<2)|2,{86,50,0}}, +/* 57893 */ {(12<<2)|2,{86,50,0}}, +/* 57894 */ {(12<<2)|2,{86,50,0}}, +/* 57895 */ {(12<<2)|2,{86,50,0}}, +/* 57896 */ {(12<<2)|2,{86,50,0}}, +/* 57897 */ {(12<<2)|2,{86,50,0}}, +/* 57898 */ {(12<<2)|2,{86,50,0}}, +/* 57899 */ {(12<<2)|2,{86,50,0}}, +/* 57900 */ {(12<<2)|2,{86,50,0}}, +/* 57901 */ {(12<<2)|2,{86,50,0}}, +/* 57902 */ {(12<<2)|2,{86,50,0}}, +/* 57903 */ {(12<<2)|2,{86,50,0}}, +/* 57904 */ {(12<<2)|2,{86,97,0}}, +/* 57905 */ {(12<<2)|2,{86,97,0}}, +/* 57906 */ {(12<<2)|2,{86,97,0}}, +/* 57907 */ {(12<<2)|2,{86,97,0}}, +/* 57908 */ {(12<<2)|2,{86,97,0}}, +/* 57909 */ {(12<<2)|2,{86,97,0}}, +/* 57910 */ {(12<<2)|2,{86,97,0}}, +/* 57911 */ {(12<<2)|2,{86,97,0}}, +/* 57912 */ {(12<<2)|2,{86,97,0}}, +/* 57913 */ {(12<<2)|2,{86,97,0}}, +/* 57914 */ {(12<<2)|2,{86,97,0}}, +/* 57915 */ {(12<<2)|2,{86,97,0}}, +/* 57916 */ {(12<<2)|2,{86,97,0}}, +/* 57917 */ {(12<<2)|2,{86,97,0}}, +/* 57918 */ {(12<<2)|2,{86,97,0}}, +/* 57919 */ {(12<<2)|2,{86,97,0}}, +/* 57920 */ {(12<<2)|2,{86,99,0}}, +/* 57921 */ {(12<<2)|2,{86,99,0}}, +/* 57922 */ {(12<<2)|2,{86,99,0}}, +/* 57923 */ {(12<<2)|2,{86,99,0}}, +/* 57924 */ {(12<<2)|2,{86,99,0}}, +/* 57925 */ {(12<<2)|2,{86,99,0}}, +/* 57926 */ {(12<<2)|2,{86,99,0}}, +/* 57927 */ {(12<<2)|2,{86,99,0}}, +/* 57928 */ {(12<<2)|2,{86,99,0}}, +/* 57929 */ {(12<<2)|2,{86,99,0}}, +/* 57930 */ {(12<<2)|2,{86,99,0}}, +/* 57931 */ {(12<<2)|2,{86,99,0}}, +/* 57932 */ {(12<<2)|2,{86,99,0}}, +/* 57933 */ {(12<<2)|2,{86,99,0}}, +/* 57934 */ {(12<<2)|2,{86,99,0}}, +/* 57935 */ {(12<<2)|2,{86,99,0}}, +/* 57936 */ {(12<<2)|2,{86,101,0}}, +/* 57937 */ {(12<<2)|2,{86,101,0}}, +/* 57938 */ {(12<<2)|2,{86,101,0}}, +/* 57939 */ {(12<<2)|2,{86,101,0}}, +/* 57940 */ {(12<<2)|2,{86,101,0}}, +/* 57941 */ {(12<<2)|2,{86,101,0}}, +/* 57942 */ {(12<<2)|2,{86,101,0}}, +/* 57943 */ {(12<<2)|2,{86,101,0}}, +/* 57944 */ {(12<<2)|2,{86,101,0}}, +/* 57945 */ {(12<<2)|2,{86,101,0}}, +/* 57946 */ {(12<<2)|2,{86,101,0}}, +/* 57947 */ {(12<<2)|2,{86,101,0}}, +/* 57948 */ {(12<<2)|2,{86,101,0}}, +/* 57949 */ {(12<<2)|2,{86,101,0}}, +/* 57950 */ {(12<<2)|2,{86,101,0}}, +/* 57951 */ {(12<<2)|2,{86,101,0}}, +/* 57952 */ {(12<<2)|2,{86,105,0}}, +/* 57953 */ {(12<<2)|2,{86,105,0}}, +/* 57954 */ {(12<<2)|2,{86,105,0}}, +/* 57955 */ {(12<<2)|2,{86,105,0}}, +/* 57956 */ {(12<<2)|2,{86,105,0}}, +/* 57957 */ {(12<<2)|2,{86,105,0}}, +/* 57958 */ {(12<<2)|2,{86,105,0}}, +/* 57959 */ {(12<<2)|2,{86,105,0}}, +/* 57960 */ {(12<<2)|2,{86,105,0}}, +/* 57961 */ {(12<<2)|2,{86,105,0}}, +/* 57962 */ {(12<<2)|2,{86,105,0}}, +/* 57963 */ {(12<<2)|2,{86,105,0}}, +/* 57964 */ {(12<<2)|2,{86,105,0}}, +/* 57965 */ {(12<<2)|2,{86,105,0}}, +/* 57966 */ {(12<<2)|2,{86,105,0}}, +/* 57967 */ {(12<<2)|2,{86,105,0}}, +/* 57968 */ {(12<<2)|2,{86,111,0}}, +/* 57969 */ {(12<<2)|2,{86,111,0}}, +/* 57970 */ {(12<<2)|2,{86,111,0}}, +/* 57971 */ {(12<<2)|2,{86,111,0}}, +/* 57972 */ {(12<<2)|2,{86,111,0}}, +/* 57973 */ {(12<<2)|2,{86,111,0}}, +/* 57974 */ {(12<<2)|2,{86,111,0}}, +/* 57975 */ {(12<<2)|2,{86,111,0}}, +/* 57976 */ {(12<<2)|2,{86,111,0}}, +/* 57977 */ {(12<<2)|2,{86,111,0}}, +/* 57978 */ {(12<<2)|2,{86,111,0}}, +/* 57979 */ {(12<<2)|2,{86,111,0}}, +/* 57980 */ {(12<<2)|2,{86,111,0}}, +/* 57981 */ {(12<<2)|2,{86,111,0}}, +/* 57982 */ {(12<<2)|2,{86,111,0}}, +/* 57983 */ {(12<<2)|2,{86,111,0}}, +/* 57984 */ {(12<<2)|2,{86,115,0}}, +/* 57985 */ {(12<<2)|2,{86,115,0}}, +/* 57986 */ {(12<<2)|2,{86,115,0}}, +/* 57987 */ {(12<<2)|2,{86,115,0}}, +/* 57988 */ {(12<<2)|2,{86,115,0}}, +/* 57989 */ {(12<<2)|2,{86,115,0}}, +/* 57990 */ {(12<<2)|2,{86,115,0}}, +/* 57991 */ {(12<<2)|2,{86,115,0}}, +/* 57992 */ {(12<<2)|2,{86,115,0}}, +/* 57993 */ {(12<<2)|2,{86,115,0}}, +/* 57994 */ {(12<<2)|2,{86,115,0}}, +/* 57995 */ {(12<<2)|2,{86,115,0}}, +/* 57996 */ {(12<<2)|2,{86,115,0}}, +/* 57997 */ {(12<<2)|2,{86,115,0}}, +/* 57998 */ {(12<<2)|2,{86,115,0}}, +/* 57999 */ {(12<<2)|2,{86,115,0}}, +/* 58000 */ {(12<<2)|2,{86,116,0}}, +/* 58001 */ {(12<<2)|2,{86,116,0}}, +/* 58002 */ {(12<<2)|2,{86,116,0}}, +/* 58003 */ {(12<<2)|2,{86,116,0}}, +/* 58004 */ {(12<<2)|2,{86,116,0}}, +/* 58005 */ {(12<<2)|2,{86,116,0}}, +/* 58006 */ {(12<<2)|2,{86,116,0}}, +/* 58007 */ {(12<<2)|2,{86,116,0}}, +/* 58008 */ {(12<<2)|2,{86,116,0}}, +/* 58009 */ {(12<<2)|2,{86,116,0}}, +/* 58010 */ {(12<<2)|2,{86,116,0}}, +/* 58011 */ {(12<<2)|2,{86,116,0}}, +/* 58012 */ {(12<<2)|2,{86,116,0}}, +/* 58013 */ {(12<<2)|2,{86,116,0}}, +/* 58014 */ {(12<<2)|2,{86,116,0}}, +/* 58015 */ {(12<<2)|2,{86,116,0}}, +/* 58016 */ {(13<<2)|2,{86,32,0}}, +/* 58017 */ {(13<<2)|2,{86,32,0}}, +/* 58018 */ {(13<<2)|2,{86,32,0}}, +/* 58019 */ {(13<<2)|2,{86,32,0}}, +/* 58020 */ {(13<<2)|2,{86,32,0}}, +/* 58021 */ {(13<<2)|2,{86,32,0}}, +/* 58022 */ {(13<<2)|2,{86,32,0}}, +/* 58023 */ {(13<<2)|2,{86,32,0}}, +/* 58024 */ {(13<<2)|2,{86,37,0}}, +/* 58025 */ {(13<<2)|2,{86,37,0}}, +/* 58026 */ {(13<<2)|2,{86,37,0}}, +/* 58027 */ {(13<<2)|2,{86,37,0}}, +/* 58028 */ {(13<<2)|2,{86,37,0}}, +/* 58029 */ {(13<<2)|2,{86,37,0}}, +/* 58030 */ {(13<<2)|2,{86,37,0}}, +/* 58031 */ {(13<<2)|2,{86,37,0}}, +/* 58032 */ {(13<<2)|2,{86,45,0}}, +/* 58033 */ {(13<<2)|2,{86,45,0}}, +/* 58034 */ {(13<<2)|2,{86,45,0}}, +/* 58035 */ {(13<<2)|2,{86,45,0}}, +/* 58036 */ {(13<<2)|2,{86,45,0}}, +/* 58037 */ {(13<<2)|2,{86,45,0}}, +/* 58038 */ {(13<<2)|2,{86,45,0}}, +/* 58039 */ {(13<<2)|2,{86,45,0}}, +/* 58040 */ {(13<<2)|2,{86,46,0}}, +/* 58041 */ {(13<<2)|2,{86,46,0}}, +/* 58042 */ {(13<<2)|2,{86,46,0}}, +/* 58043 */ {(13<<2)|2,{86,46,0}}, +/* 58044 */ {(13<<2)|2,{86,46,0}}, +/* 58045 */ {(13<<2)|2,{86,46,0}}, +/* 58046 */ {(13<<2)|2,{86,46,0}}, +/* 58047 */ {(13<<2)|2,{86,46,0}}, +/* 58048 */ {(13<<2)|2,{86,47,0}}, +/* 58049 */ {(13<<2)|2,{86,47,0}}, +/* 58050 */ {(13<<2)|2,{86,47,0}}, +/* 58051 */ {(13<<2)|2,{86,47,0}}, +/* 58052 */ {(13<<2)|2,{86,47,0}}, +/* 58053 */ {(13<<2)|2,{86,47,0}}, +/* 58054 */ {(13<<2)|2,{86,47,0}}, +/* 58055 */ {(13<<2)|2,{86,47,0}}, +/* 58056 */ {(13<<2)|2,{86,51,0}}, +/* 58057 */ {(13<<2)|2,{86,51,0}}, +/* 58058 */ {(13<<2)|2,{86,51,0}}, +/* 58059 */ {(13<<2)|2,{86,51,0}}, +/* 58060 */ {(13<<2)|2,{86,51,0}}, +/* 58061 */ {(13<<2)|2,{86,51,0}}, +/* 58062 */ {(13<<2)|2,{86,51,0}}, +/* 58063 */ {(13<<2)|2,{86,51,0}}, +/* 58064 */ {(13<<2)|2,{86,52,0}}, +/* 58065 */ {(13<<2)|2,{86,52,0}}, +/* 58066 */ {(13<<2)|2,{86,52,0}}, +/* 58067 */ {(13<<2)|2,{86,52,0}}, +/* 58068 */ {(13<<2)|2,{86,52,0}}, +/* 58069 */ {(13<<2)|2,{86,52,0}}, +/* 58070 */ {(13<<2)|2,{86,52,0}}, +/* 58071 */ {(13<<2)|2,{86,52,0}}, +/* 58072 */ {(13<<2)|2,{86,53,0}}, +/* 58073 */ {(13<<2)|2,{86,53,0}}, +/* 58074 */ {(13<<2)|2,{86,53,0}}, +/* 58075 */ {(13<<2)|2,{86,53,0}}, +/* 58076 */ {(13<<2)|2,{86,53,0}}, +/* 58077 */ {(13<<2)|2,{86,53,0}}, +/* 58078 */ {(13<<2)|2,{86,53,0}}, +/* 58079 */ {(13<<2)|2,{86,53,0}}, +/* 58080 */ {(13<<2)|2,{86,54,0}}, +/* 58081 */ {(13<<2)|2,{86,54,0}}, +/* 58082 */ {(13<<2)|2,{86,54,0}}, +/* 58083 */ {(13<<2)|2,{86,54,0}}, +/* 58084 */ {(13<<2)|2,{86,54,0}}, +/* 58085 */ {(13<<2)|2,{86,54,0}}, +/* 58086 */ {(13<<2)|2,{86,54,0}}, +/* 58087 */ {(13<<2)|2,{86,54,0}}, +/* 58088 */ {(13<<2)|2,{86,55,0}}, +/* 58089 */ {(13<<2)|2,{86,55,0}}, +/* 58090 */ {(13<<2)|2,{86,55,0}}, +/* 58091 */ {(13<<2)|2,{86,55,0}}, +/* 58092 */ {(13<<2)|2,{86,55,0}}, +/* 58093 */ {(13<<2)|2,{86,55,0}}, +/* 58094 */ {(13<<2)|2,{86,55,0}}, +/* 58095 */ {(13<<2)|2,{86,55,0}}, +/* 58096 */ {(13<<2)|2,{86,56,0}}, +/* 58097 */ {(13<<2)|2,{86,56,0}}, +/* 58098 */ {(13<<2)|2,{86,56,0}}, +/* 58099 */ {(13<<2)|2,{86,56,0}}, +/* 58100 */ {(13<<2)|2,{86,56,0}}, +/* 58101 */ {(13<<2)|2,{86,56,0}}, +/* 58102 */ {(13<<2)|2,{86,56,0}}, +/* 58103 */ {(13<<2)|2,{86,56,0}}, +/* 58104 */ {(13<<2)|2,{86,57,0}}, +/* 58105 */ {(13<<2)|2,{86,57,0}}, +/* 58106 */ {(13<<2)|2,{86,57,0}}, +/* 58107 */ {(13<<2)|2,{86,57,0}}, +/* 58108 */ {(13<<2)|2,{86,57,0}}, +/* 58109 */ {(13<<2)|2,{86,57,0}}, +/* 58110 */ {(13<<2)|2,{86,57,0}}, +/* 58111 */ {(13<<2)|2,{86,57,0}}, +/* 58112 */ {(13<<2)|2,{86,61,0}}, +/* 58113 */ {(13<<2)|2,{86,61,0}}, +/* 58114 */ {(13<<2)|2,{86,61,0}}, +/* 58115 */ {(13<<2)|2,{86,61,0}}, +/* 58116 */ {(13<<2)|2,{86,61,0}}, +/* 58117 */ {(13<<2)|2,{86,61,0}}, +/* 58118 */ {(13<<2)|2,{86,61,0}}, +/* 58119 */ {(13<<2)|2,{86,61,0}}, +/* 58120 */ {(13<<2)|2,{86,65,0}}, +/* 58121 */ {(13<<2)|2,{86,65,0}}, +/* 58122 */ {(13<<2)|2,{86,65,0}}, +/* 58123 */ {(13<<2)|2,{86,65,0}}, +/* 58124 */ {(13<<2)|2,{86,65,0}}, +/* 58125 */ {(13<<2)|2,{86,65,0}}, +/* 58126 */ {(13<<2)|2,{86,65,0}}, +/* 58127 */ {(13<<2)|2,{86,65,0}}, +/* 58128 */ {(13<<2)|2,{86,95,0}}, +/* 58129 */ {(13<<2)|2,{86,95,0}}, +/* 58130 */ {(13<<2)|2,{86,95,0}}, +/* 58131 */ {(13<<2)|2,{86,95,0}}, +/* 58132 */ {(13<<2)|2,{86,95,0}}, +/* 58133 */ {(13<<2)|2,{86,95,0}}, +/* 58134 */ {(13<<2)|2,{86,95,0}}, +/* 58135 */ {(13<<2)|2,{86,95,0}}, +/* 58136 */ {(13<<2)|2,{86,98,0}}, +/* 58137 */ {(13<<2)|2,{86,98,0}}, +/* 58138 */ {(13<<2)|2,{86,98,0}}, +/* 58139 */ {(13<<2)|2,{86,98,0}}, +/* 58140 */ {(13<<2)|2,{86,98,0}}, +/* 58141 */ {(13<<2)|2,{86,98,0}}, +/* 58142 */ {(13<<2)|2,{86,98,0}}, +/* 58143 */ {(13<<2)|2,{86,98,0}}, +/* 58144 */ {(13<<2)|2,{86,100,0}}, +/* 58145 */ {(13<<2)|2,{86,100,0}}, +/* 58146 */ {(13<<2)|2,{86,100,0}}, +/* 58147 */ {(13<<2)|2,{86,100,0}}, +/* 58148 */ {(13<<2)|2,{86,100,0}}, +/* 58149 */ {(13<<2)|2,{86,100,0}}, +/* 58150 */ {(13<<2)|2,{86,100,0}}, +/* 58151 */ {(13<<2)|2,{86,100,0}}, +/* 58152 */ {(13<<2)|2,{86,102,0}}, +/* 58153 */ {(13<<2)|2,{86,102,0}}, +/* 58154 */ {(13<<2)|2,{86,102,0}}, +/* 58155 */ {(13<<2)|2,{86,102,0}}, +/* 58156 */ {(13<<2)|2,{86,102,0}}, +/* 58157 */ {(13<<2)|2,{86,102,0}}, +/* 58158 */ {(13<<2)|2,{86,102,0}}, +/* 58159 */ {(13<<2)|2,{86,102,0}}, +/* 58160 */ {(13<<2)|2,{86,103,0}}, +/* 58161 */ {(13<<2)|2,{86,103,0}}, +/* 58162 */ {(13<<2)|2,{86,103,0}}, +/* 58163 */ {(13<<2)|2,{86,103,0}}, +/* 58164 */ {(13<<2)|2,{86,103,0}}, +/* 58165 */ {(13<<2)|2,{86,103,0}}, +/* 58166 */ {(13<<2)|2,{86,103,0}}, +/* 58167 */ {(13<<2)|2,{86,103,0}}, +/* 58168 */ {(13<<2)|2,{86,104,0}}, +/* 58169 */ {(13<<2)|2,{86,104,0}}, +/* 58170 */ {(13<<2)|2,{86,104,0}}, +/* 58171 */ {(13<<2)|2,{86,104,0}}, +/* 58172 */ {(13<<2)|2,{86,104,0}}, +/* 58173 */ {(13<<2)|2,{86,104,0}}, +/* 58174 */ {(13<<2)|2,{86,104,0}}, +/* 58175 */ {(13<<2)|2,{86,104,0}}, +/* 58176 */ {(13<<2)|2,{86,108,0}}, +/* 58177 */ {(13<<2)|2,{86,108,0}}, +/* 58178 */ {(13<<2)|2,{86,108,0}}, +/* 58179 */ {(13<<2)|2,{86,108,0}}, +/* 58180 */ {(13<<2)|2,{86,108,0}}, +/* 58181 */ {(13<<2)|2,{86,108,0}}, +/* 58182 */ {(13<<2)|2,{86,108,0}}, +/* 58183 */ {(13<<2)|2,{86,108,0}}, +/* 58184 */ {(13<<2)|2,{86,109,0}}, +/* 58185 */ {(13<<2)|2,{86,109,0}}, +/* 58186 */ {(13<<2)|2,{86,109,0}}, +/* 58187 */ {(13<<2)|2,{86,109,0}}, +/* 58188 */ {(13<<2)|2,{86,109,0}}, +/* 58189 */ {(13<<2)|2,{86,109,0}}, +/* 58190 */ {(13<<2)|2,{86,109,0}}, +/* 58191 */ {(13<<2)|2,{86,109,0}}, +/* 58192 */ {(13<<2)|2,{86,110,0}}, +/* 58193 */ {(13<<2)|2,{86,110,0}}, +/* 58194 */ {(13<<2)|2,{86,110,0}}, +/* 58195 */ {(13<<2)|2,{86,110,0}}, +/* 58196 */ {(13<<2)|2,{86,110,0}}, +/* 58197 */ {(13<<2)|2,{86,110,0}}, +/* 58198 */ {(13<<2)|2,{86,110,0}}, +/* 58199 */ {(13<<2)|2,{86,110,0}}, +/* 58200 */ {(13<<2)|2,{86,112,0}}, +/* 58201 */ {(13<<2)|2,{86,112,0}}, +/* 58202 */ {(13<<2)|2,{86,112,0}}, +/* 58203 */ {(13<<2)|2,{86,112,0}}, +/* 58204 */ {(13<<2)|2,{86,112,0}}, +/* 58205 */ {(13<<2)|2,{86,112,0}}, +/* 58206 */ {(13<<2)|2,{86,112,0}}, +/* 58207 */ {(13<<2)|2,{86,112,0}}, +/* 58208 */ {(13<<2)|2,{86,114,0}}, +/* 58209 */ {(13<<2)|2,{86,114,0}}, +/* 58210 */ {(13<<2)|2,{86,114,0}}, +/* 58211 */ {(13<<2)|2,{86,114,0}}, +/* 58212 */ {(13<<2)|2,{86,114,0}}, +/* 58213 */ {(13<<2)|2,{86,114,0}}, +/* 58214 */ {(13<<2)|2,{86,114,0}}, +/* 58215 */ {(13<<2)|2,{86,114,0}}, +/* 58216 */ {(13<<2)|2,{86,117,0}}, +/* 58217 */ {(13<<2)|2,{86,117,0}}, +/* 58218 */ {(13<<2)|2,{86,117,0}}, +/* 58219 */ {(13<<2)|2,{86,117,0}}, +/* 58220 */ {(13<<2)|2,{86,117,0}}, +/* 58221 */ {(13<<2)|2,{86,117,0}}, +/* 58222 */ {(13<<2)|2,{86,117,0}}, +/* 58223 */ {(13<<2)|2,{86,117,0}}, +/* 58224 */ {(14<<2)|2,{86,58,0}}, +/* 58225 */ {(14<<2)|2,{86,58,0}}, +/* 58226 */ {(14<<2)|2,{86,58,0}}, +/* 58227 */ {(14<<2)|2,{86,58,0}}, +/* 58228 */ {(14<<2)|2,{86,66,0}}, +/* 58229 */ {(14<<2)|2,{86,66,0}}, +/* 58230 */ {(14<<2)|2,{86,66,0}}, +/* 58231 */ {(14<<2)|2,{86,66,0}}, +/* 58232 */ {(14<<2)|2,{86,67,0}}, +/* 58233 */ {(14<<2)|2,{86,67,0}}, +/* 58234 */ {(14<<2)|2,{86,67,0}}, +/* 58235 */ {(14<<2)|2,{86,67,0}}, +/* 58236 */ {(14<<2)|2,{86,68,0}}, +/* 58237 */ {(14<<2)|2,{86,68,0}}, +/* 58238 */ {(14<<2)|2,{86,68,0}}, +/* 58239 */ {(14<<2)|2,{86,68,0}}, +/* 58240 */ {(14<<2)|2,{86,69,0}}, +/* 58241 */ {(14<<2)|2,{86,69,0}}, +/* 58242 */ {(14<<2)|2,{86,69,0}}, +/* 58243 */ {(14<<2)|2,{86,69,0}}, +/* 58244 */ {(14<<2)|2,{86,70,0}}, +/* 58245 */ {(14<<2)|2,{86,70,0}}, +/* 58246 */ {(14<<2)|2,{86,70,0}}, +/* 58247 */ {(14<<2)|2,{86,70,0}}, +/* 58248 */ {(14<<2)|2,{86,71,0}}, +/* 58249 */ {(14<<2)|2,{86,71,0}}, +/* 58250 */ {(14<<2)|2,{86,71,0}}, +/* 58251 */ {(14<<2)|2,{86,71,0}}, +/* 58252 */ {(14<<2)|2,{86,72,0}}, +/* 58253 */ {(14<<2)|2,{86,72,0}}, +/* 58254 */ {(14<<2)|2,{86,72,0}}, +/* 58255 */ {(14<<2)|2,{86,72,0}}, +/* 58256 */ {(14<<2)|2,{86,73,0}}, +/* 58257 */ {(14<<2)|2,{86,73,0}}, +/* 58258 */ {(14<<2)|2,{86,73,0}}, +/* 58259 */ {(14<<2)|2,{86,73,0}}, +/* 58260 */ {(14<<2)|2,{86,74,0}}, +/* 58261 */ {(14<<2)|2,{86,74,0}}, +/* 58262 */ {(14<<2)|2,{86,74,0}}, +/* 58263 */ {(14<<2)|2,{86,74,0}}, +/* 58264 */ {(14<<2)|2,{86,75,0}}, +/* 58265 */ {(14<<2)|2,{86,75,0}}, +/* 58266 */ {(14<<2)|2,{86,75,0}}, +/* 58267 */ {(14<<2)|2,{86,75,0}}, +/* 58268 */ {(14<<2)|2,{86,76,0}}, +/* 58269 */ {(14<<2)|2,{86,76,0}}, +/* 58270 */ {(14<<2)|2,{86,76,0}}, +/* 58271 */ {(14<<2)|2,{86,76,0}}, +/* 58272 */ {(14<<2)|2,{86,77,0}}, +/* 58273 */ {(14<<2)|2,{86,77,0}}, +/* 58274 */ {(14<<2)|2,{86,77,0}}, +/* 58275 */ {(14<<2)|2,{86,77,0}}, +/* 58276 */ {(14<<2)|2,{86,78,0}}, +/* 58277 */ {(14<<2)|2,{86,78,0}}, +/* 58278 */ {(14<<2)|2,{86,78,0}}, +/* 58279 */ {(14<<2)|2,{86,78,0}}, +/* 58280 */ {(14<<2)|2,{86,79,0}}, +/* 58281 */ {(14<<2)|2,{86,79,0}}, +/* 58282 */ {(14<<2)|2,{86,79,0}}, +/* 58283 */ {(14<<2)|2,{86,79,0}}, +/* 58284 */ {(14<<2)|2,{86,80,0}}, +/* 58285 */ {(14<<2)|2,{86,80,0}}, +/* 58286 */ {(14<<2)|2,{86,80,0}}, +/* 58287 */ {(14<<2)|2,{86,80,0}}, +/* 58288 */ {(14<<2)|2,{86,81,0}}, +/* 58289 */ {(14<<2)|2,{86,81,0}}, +/* 58290 */ {(14<<2)|2,{86,81,0}}, +/* 58291 */ {(14<<2)|2,{86,81,0}}, +/* 58292 */ {(14<<2)|2,{86,82,0}}, +/* 58293 */ {(14<<2)|2,{86,82,0}}, +/* 58294 */ {(14<<2)|2,{86,82,0}}, +/* 58295 */ {(14<<2)|2,{86,82,0}}, +/* 58296 */ {(14<<2)|2,{86,83,0}}, +/* 58297 */ {(14<<2)|2,{86,83,0}}, +/* 58298 */ {(14<<2)|2,{86,83,0}}, +/* 58299 */ {(14<<2)|2,{86,83,0}}, +/* 58300 */ {(14<<2)|2,{86,84,0}}, +/* 58301 */ {(14<<2)|2,{86,84,0}}, +/* 58302 */ {(14<<2)|2,{86,84,0}}, +/* 58303 */ {(14<<2)|2,{86,84,0}}, +/* 58304 */ {(14<<2)|2,{86,85,0}}, +/* 58305 */ {(14<<2)|2,{86,85,0}}, +/* 58306 */ {(14<<2)|2,{86,85,0}}, +/* 58307 */ {(14<<2)|2,{86,85,0}}, +/* 58308 */ {(14<<2)|2,{86,86,0}}, +/* 58309 */ {(14<<2)|2,{86,86,0}}, +/* 58310 */ {(14<<2)|2,{86,86,0}}, +/* 58311 */ {(14<<2)|2,{86,86,0}}, +/* 58312 */ {(14<<2)|2,{86,87,0}}, +/* 58313 */ {(14<<2)|2,{86,87,0}}, +/* 58314 */ {(14<<2)|2,{86,87,0}}, +/* 58315 */ {(14<<2)|2,{86,87,0}}, +/* 58316 */ {(14<<2)|2,{86,89,0}}, +/* 58317 */ {(14<<2)|2,{86,89,0}}, +/* 58318 */ {(14<<2)|2,{86,89,0}}, +/* 58319 */ {(14<<2)|2,{86,89,0}}, +/* 58320 */ {(14<<2)|2,{86,106,0}}, +/* 58321 */ {(14<<2)|2,{86,106,0}}, +/* 58322 */ {(14<<2)|2,{86,106,0}}, +/* 58323 */ {(14<<2)|2,{86,106,0}}, +/* 58324 */ {(14<<2)|2,{86,107,0}}, +/* 58325 */ {(14<<2)|2,{86,107,0}}, +/* 58326 */ {(14<<2)|2,{86,107,0}}, +/* 58327 */ {(14<<2)|2,{86,107,0}}, +/* 58328 */ {(14<<2)|2,{86,113,0}}, +/* 58329 */ {(14<<2)|2,{86,113,0}}, +/* 58330 */ {(14<<2)|2,{86,113,0}}, +/* 58331 */ {(14<<2)|2,{86,113,0}}, +/* 58332 */ {(14<<2)|2,{86,118,0}}, +/* 58333 */ {(14<<2)|2,{86,118,0}}, +/* 58334 */ {(14<<2)|2,{86,118,0}}, +/* 58335 */ {(14<<2)|2,{86,118,0}}, +/* 58336 */ {(14<<2)|2,{86,119,0}}, +/* 58337 */ {(14<<2)|2,{86,119,0}}, +/* 58338 */ {(14<<2)|2,{86,119,0}}, +/* 58339 */ {(14<<2)|2,{86,119,0}}, +/* 58340 */ {(14<<2)|2,{86,120,0}}, +/* 58341 */ {(14<<2)|2,{86,120,0}}, +/* 58342 */ {(14<<2)|2,{86,120,0}}, +/* 58343 */ {(14<<2)|2,{86,120,0}}, +/* 58344 */ {(14<<2)|2,{86,121,0}}, +/* 58345 */ {(14<<2)|2,{86,121,0}}, +/* 58346 */ {(14<<2)|2,{86,121,0}}, +/* 58347 */ {(14<<2)|2,{86,121,0}}, +/* 58348 */ {(14<<2)|2,{86,122,0}}, +/* 58349 */ {(14<<2)|2,{86,122,0}}, +/* 58350 */ {(14<<2)|2,{86,122,0}}, +/* 58351 */ {(14<<2)|2,{86,122,0}}, +/* 58352 */ {(15<<2)|2,{86,38,0}}, +/* 58353 */ {(15<<2)|2,{86,38,0}}, +/* 58354 */ {(15<<2)|2,{86,42,0}}, +/* 58355 */ {(15<<2)|2,{86,42,0}}, +/* 58356 */ {(15<<2)|2,{86,44,0}}, +/* 58357 */ {(15<<2)|2,{86,44,0}}, +/* 58358 */ {(15<<2)|2,{86,59,0}}, +/* 58359 */ {(15<<2)|2,{86,59,0}}, +/* 58360 */ {(15<<2)|2,{86,88,0}}, +/* 58361 */ {(15<<2)|2,{86,88,0}}, +/* 58362 */ {(15<<2)|2,{86,90,0}}, +/* 58363 */ {(15<<2)|2,{86,90,0}}, +/* 58364 */ {(7<<2)|1,{86,0,0}}, +/* 58365 */ {(7<<2)|1,{86,0,0}}, +/* 58366 */ {(7<<2)|1,{86,0,0}}, +/* 58367 */ {(7<<2)|1,{86,0,0}}, +/* 58368 */ {(12<<2)|2,{87,48,0}}, +/* 58369 */ {(12<<2)|2,{87,48,0}}, +/* 58370 */ {(12<<2)|2,{87,48,0}}, +/* 58371 */ {(12<<2)|2,{87,48,0}}, +/* 58372 */ {(12<<2)|2,{87,48,0}}, +/* 58373 */ {(12<<2)|2,{87,48,0}}, +/* 58374 */ {(12<<2)|2,{87,48,0}}, +/* 58375 */ {(12<<2)|2,{87,48,0}}, +/* 58376 */ {(12<<2)|2,{87,48,0}}, +/* 58377 */ {(12<<2)|2,{87,48,0}}, +/* 58378 */ {(12<<2)|2,{87,48,0}}, +/* 58379 */ {(12<<2)|2,{87,48,0}}, +/* 58380 */ {(12<<2)|2,{87,48,0}}, +/* 58381 */ {(12<<2)|2,{87,48,0}}, +/* 58382 */ {(12<<2)|2,{87,48,0}}, +/* 58383 */ {(12<<2)|2,{87,48,0}}, +/* 58384 */ {(12<<2)|2,{87,49,0}}, +/* 58385 */ {(12<<2)|2,{87,49,0}}, +/* 58386 */ {(12<<2)|2,{87,49,0}}, +/* 58387 */ {(12<<2)|2,{87,49,0}}, +/* 58388 */ {(12<<2)|2,{87,49,0}}, +/* 58389 */ {(12<<2)|2,{87,49,0}}, +/* 58390 */ {(12<<2)|2,{87,49,0}}, +/* 58391 */ {(12<<2)|2,{87,49,0}}, +/* 58392 */ {(12<<2)|2,{87,49,0}}, +/* 58393 */ {(12<<2)|2,{87,49,0}}, +/* 58394 */ {(12<<2)|2,{87,49,0}}, +/* 58395 */ {(12<<2)|2,{87,49,0}}, +/* 58396 */ {(12<<2)|2,{87,49,0}}, +/* 58397 */ {(12<<2)|2,{87,49,0}}, +/* 58398 */ {(12<<2)|2,{87,49,0}}, +/* 58399 */ {(12<<2)|2,{87,49,0}}, +/* 58400 */ {(12<<2)|2,{87,50,0}}, +/* 58401 */ {(12<<2)|2,{87,50,0}}, +/* 58402 */ {(12<<2)|2,{87,50,0}}, +/* 58403 */ {(12<<2)|2,{87,50,0}}, +/* 58404 */ {(12<<2)|2,{87,50,0}}, +/* 58405 */ {(12<<2)|2,{87,50,0}}, +/* 58406 */ {(12<<2)|2,{87,50,0}}, +/* 58407 */ {(12<<2)|2,{87,50,0}}, +/* 58408 */ {(12<<2)|2,{87,50,0}}, +/* 58409 */ {(12<<2)|2,{87,50,0}}, +/* 58410 */ {(12<<2)|2,{87,50,0}}, +/* 58411 */ {(12<<2)|2,{87,50,0}}, +/* 58412 */ {(12<<2)|2,{87,50,0}}, +/* 58413 */ {(12<<2)|2,{87,50,0}}, +/* 58414 */ {(12<<2)|2,{87,50,0}}, +/* 58415 */ {(12<<2)|2,{87,50,0}}, +/* 58416 */ {(12<<2)|2,{87,97,0}}, +/* 58417 */ {(12<<2)|2,{87,97,0}}, +/* 58418 */ {(12<<2)|2,{87,97,0}}, +/* 58419 */ {(12<<2)|2,{87,97,0}}, +/* 58420 */ {(12<<2)|2,{87,97,0}}, +/* 58421 */ {(12<<2)|2,{87,97,0}}, +/* 58422 */ {(12<<2)|2,{87,97,0}}, +/* 58423 */ {(12<<2)|2,{87,97,0}}, +/* 58424 */ {(12<<2)|2,{87,97,0}}, +/* 58425 */ {(12<<2)|2,{87,97,0}}, +/* 58426 */ {(12<<2)|2,{87,97,0}}, +/* 58427 */ {(12<<2)|2,{87,97,0}}, +/* 58428 */ {(12<<2)|2,{87,97,0}}, +/* 58429 */ {(12<<2)|2,{87,97,0}}, +/* 58430 */ {(12<<2)|2,{87,97,0}}, +/* 58431 */ {(12<<2)|2,{87,97,0}}, +/* 58432 */ {(12<<2)|2,{87,99,0}}, +/* 58433 */ {(12<<2)|2,{87,99,0}}, +/* 58434 */ {(12<<2)|2,{87,99,0}}, +/* 58435 */ {(12<<2)|2,{87,99,0}}, +/* 58436 */ {(12<<2)|2,{87,99,0}}, +/* 58437 */ {(12<<2)|2,{87,99,0}}, +/* 58438 */ {(12<<2)|2,{87,99,0}}, +/* 58439 */ {(12<<2)|2,{87,99,0}}, +/* 58440 */ {(12<<2)|2,{87,99,0}}, +/* 58441 */ {(12<<2)|2,{87,99,0}}, +/* 58442 */ {(12<<2)|2,{87,99,0}}, +/* 58443 */ {(12<<2)|2,{87,99,0}}, +/* 58444 */ {(12<<2)|2,{87,99,0}}, +/* 58445 */ {(12<<2)|2,{87,99,0}}, +/* 58446 */ {(12<<2)|2,{87,99,0}}, +/* 58447 */ {(12<<2)|2,{87,99,0}}, +/* 58448 */ {(12<<2)|2,{87,101,0}}, +/* 58449 */ {(12<<2)|2,{87,101,0}}, +/* 58450 */ {(12<<2)|2,{87,101,0}}, +/* 58451 */ {(12<<2)|2,{87,101,0}}, +/* 58452 */ {(12<<2)|2,{87,101,0}}, +/* 58453 */ {(12<<2)|2,{87,101,0}}, +/* 58454 */ {(12<<2)|2,{87,101,0}}, +/* 58455 */ {(12<<2)|2,{87,101,0}}, +/* 58456 */ {(12<<2)|2,{87,101,0}}, +/* 58457 */ {(12<<2)|2,{87,101,0}}, +/* 58458 */ {(12<<2)|2,{87,101,0}}, +/* 58459 */ {(12<<2)|2,{87,101,0}}, +/* 58460 */ {(12<<2)|2,{87,101,0}}, +/* 58461 */ {(12<<2)|2,{87,101,0}}, +/* 58462 */ {(12<<2)|2,{87,101,0}}, +/* 58463 */ {(12<<2)|2,{87,101,0}}, +/* 58464 */ {(12<<2)|2,{87,105,0}}, +/* 58465 */ {(12<<2)|2,{87,105,0}}, +/* 58466 */ {(12<<2)|2,{87,105,0}}, +/* 58467 */ {(12<<2)|2,{87,105,0}}, +/* 58468 */ {(12<<2)|2,{87,105,0}}, +/* 58469 */ {(12<<2)|2,{87,105,0}}, +/* 58470 */ {(12<<2)|2,{87,105,0}}, +/* 58471 */ {(12<<2)|2,{87,105,0}}, +/* 58472 */ {(12<<2)|2,{87,105,0}}, +/* 58473 */ {(12<<2)|2,{87,105,0}}, +/* 58474 */ {(12<<2)|2,{87,105,0}}, +/* 58475 */ {(12<<2)|2,{87,105,0}}, +/* 58476 */ {(12<<2)|2,{87,105,0}}, +/* 58477 */ {(12<<2)|2,{87,105,0}}, +/* 58478 */ {(12<<2)|2,{87,105,0}}, +/* 58479 */ {(12<<2)|2,{87,105,0}}, +/* 58480 */ {(12<<2)|2,{87,111,0}}, +/* 58481 */ {(12<<2)|2,{87,111,0}}, +/* 58482 */ {(12<<2)|2,{87,111,0}}, +/* 58483 */ {(12<<2)|2,{87,111,0}}, +/* 58484 */ {(12<<2)|2,{87,111,0}}, +/* 58485 */ {(12<<2)|2,{87,111,0}}, +/* 58486 */ {(12<<2)|2,{87,111,0}}, +/* 58487 */ {(12<<2)|2,{87,111,0}}, +/* 58488 */ {(12<<2)|2,{87,111,0}}, +/* 58489 */ {(12<<2)|2,{87,111,0}}, +/* 58490 */ {(12<<2)|2,{87,111,0}}, +/* 58491 */ {(12<<2)|2,{87,111,0}}, +/* 58492 */ {(12<<2)|2,{87,111,0}}, +/* 58493 */ {(12<<2)|2,{87,111,0}}, +/* 58494 */ {(12<<2)|2,{87,111,0}}, +/* 58495 */ {(12<<2)|2,{87,111,0}}, +/* 58496 */ {(12<<2)|2,{87,115,0}}, +/* 58497 */ {(12<<2)|2,{87,115,0}}, +/* 58498 */ {(12<<2)|2,{87,115,0}}, +/* 58499 */ {(12<<2)|2,{87,115,0}}, +/* 58500 */ {(12<<2)|2,{87,115,0}}, +/* 58501 */ {(12<<2)|2,{87,115,0}}, +/* 58502 */ {(12<<2)|2,{87,115,0}}, +/* 58503 */ {(12<<2)|2,{87,115,0}}, +/* 58504 */ {(12<<2)|2,{87,115,0}}, +/* 58505 */ {(12<<2)|2,{87,115,0}}, +/* 58506 */ {(12<<2)|2,{87,115,0}}, +/* 58507 */ {(12<<2)|2,{87,115,0}}, +/* 58508 */ {(12<<2)|2,{87,115,0}}, +/* 58509 */ {(12<<2)|2,{87,115,0}}, +/* 58510 */ {(12<<2)|2,{87,115,0}}, +/* 58511 */ {(12<<2)|2,{87,115,0}}, +/* 58512 */ {(12<<2)|2,{87,116,0}}, +/* 58513 */ {(12<<2)|2,{87,116,0}}, +/* 58514 */ {(12<<2)|2,{87,116,0}}, +/* 58515 */ {(12<<2)|2,{87,116,0}}, +/* 58516 */ {(12<<2)|2,{87,116,0}}, +/* 58517 */ {(12<<2)|2,{87,116,0}}, +/* 58518 */ {(12<<2)|2,{87,116,0}}, +/* 58519 */ {(12<<2)|2,{87,116,0}}, +/* 58520 */ {(12<<2)|2,{87,116,0}}, +/* 58521 */ {(12<<2)|2,{87,116,0}}, +/* 58522 */ {(12<<2)|2,{87,116,0}}, +/* 58523 */ {(12<<2)|2,{87,116,0}}, +/* 58524 */ {(12<<2)|2,{87,116,0}}, +/* 58525 */ {(12<<2)|2,{87,116,0}}, +/* 58526 */ {(12<<2)|2,{87,116,0}}, +/* 58527 */ {(12<<2)|2,{87,116,0}}, +/* 58528 */ {(13<<2)|2,{87,32,0}}, +/* 58529 */ {(13<<2)|2,{87,32,0}}, +/* 58530 */ {(13<<2)|2,{87,32,0}}, +/* 58531 */ {(13<<2)|2,{87,32,0}}, +/* 58532 */ {(13<<2)|2,{87,32,0}}, +/* 58533 */ {(13<<2)|2,{87,32,0}}, +/* 58534 */ {(13<<2)|2,{87,32,0}}, +/* 58535 */ {(13<<2)|2,{87,32,0}}, +/* 58536 */ {(13<<2)|2,{87,37,0}}, +/* 58537 */ {(13<<2)|2,{87,37,0}}, +/* 58538 */ {(13<<2)|2,{87,37,0}}, +/* 58539 */ {(13<<2)|2,{87,37,0}}, +/* 58540 */ {(13<<2)|2,{87,37,0}}, +/* 58541 */ {(13<<2)|2,{87,37,0}}, +/* 58542 */ {(13<<2)|2,{87,37,0}}, +/* 58543 */ {(13<<2)|2,{87,37,0}}, +/* 58544 */ {(13<<2)|2,{87,45,0}}, +/* 58545 */ {(13<<2)|2,{87,45,0}}, +/* 58546 */ {(13<<2)|2,{87,45,0}}, +/* 58547 */ {(13<<2)|2,{87,45,0}}, +/* 58548 */ {(13<<2)|2,{87,45,0}}, +/* 58549 */ {(13<<2)|2,{87,45,0}}, +/* 58550 */ {(13<<2)|2,{87,45,0}}, +/* 58551 */ {(13<<2)|2,{87,45,0}}, +/* 58552 */ {(13<<2)|2,{87,46,0}}, +/* 58553 */ {(13<<2)|2,{87,46,0}}, +/* 58554 */ {(13<<2)|2,{87,46,0}}, +/* 58555 */ {(13<<2)|2,{87,46,0}}, +/* 58556 */ {(13<<2)|2,{87,46,0}}, +/* 58557 */ {(13<<2)|2,{87,46,0}}, +/* 58558 */ {(13<<2)|2,{87,46,0}}, +/* 58559 */ {(13<<2)|2,{87,46,0}}, +/* 58560 */ {(13<<2)|2,{87,47,0}}, +/* 58561 */ {(13<<2)|2,{87,47,0}}, +/* 58562 */ {(13<<2)|2,{87,47,0}}, +/* 58563 */ {(13<<2)|2,{87,47,0}}, +/* 58564 */ {(13<<2)|2,{87,47,0}}, +/* 58565 */ {(13<<2)|2,{87,47,0}}, +/* 58566 */ {(13<<2)|2,{87,47,0}}, +/* 58567 */ {(13<<2)|2,{87,47,0}}, +/* 58568 */ {(13<<2)|2,{87,51,0}}, +/* 58569 */ {(13<<2)|2,{87,51,0}}, +/* 58570 */ {(13<<2)|2,{87,51,0}}, +/* 58571 */ {(13<<2)|2,{87,51,0}}, +/* 58572 */ {(13<<2)|2,{87,51,0}}, +/* 58573 */ {(13<<2)|2,{87,51,0}}, +/* 58574 */ {(13<<2)|2,{87,51,0}}, +/* 58575 */ {(13<<2)|2,{87,51,0}}, +/* 58576 */ {(13<<2)|2,{87,52,0}}, +/* 58577 */ {(13<<2)|2,{87,52,0}}, +/* 58578 */ {(13<<2)|2,{87,52,0}}, +/* 58579 */ {(13<<2)|2,{87,52,0}}, +/* 58580 */ {(13<<2)|2,{87,52,0}}, +/* 58581 */ {(13<<2)|2,{87,52,0}}, +/* 58582 */ {(13<<2)|2,{87,52,0}}, +/* 58583 */ {(13<<2)|2,{87,52,0}}, +/* 58584 */ {(13<<2)|2,{87,53,0}}, +/* 58585 */ {(13<<2)|2,{87,53,0}}, +/* 58586 */ {(13<<2)|2,{87,53,0}}, +/* 58587 */ {(13<<2)|2,{87,53,0}}, +/* 58588 */ {(13<<2)|2,{87,53,0}}, +/* 58589 */ {(13<<2)|2,{87,53,0}}, +/* 58590 */ {(13<<2)|2,{87,53,0}}, +/* 58591 */ {(13<<2)|2,{87,53,0}}, +/* 58592 */ {(13<<2)|2,{87,54,0}}, +/* 58593 */ {(13<<2)|2,{87,54,0}}, +/* 58594 */ {(13<<2)|2,{87,54,0}}, +/* 58595 */ {(13<<2)|2,{87,54,0}}, +/* 58596 */ {(13<<2)|2,{87,54,0}}, +/* 58597 */ {(13<<2)|2,{87,54,0}}, +/* 58598 */ {(13<<2)|2,{87,54,0}}, +/* 58599 */ {(13<<2)|2,{87,54,0}}, +/* 58600 */ {(13<<2)|2,{87,55,0}}, +/* 58601 */ {(13<<2)|2,{87,55,0}}, +/* 58602 */ {(13<<2)|2,{87,55,0}}, +/* 58603 */ {(13<<2)|2,{87,55,0}}, +/* 58604 */ {(13<<2)|2,{87,55,0}}, +/* 58605 */ {(13<<2)|2,{87,55,0}}, +/* 58606 */ {(13<<2)|2,{87,55,0}}, +/* 58607 */ {(13<<2)|2,{87,55,0}}, +/* 58608 */ {(13<<2)|2,{87,56,0}}, +/* 58609 */ {(13<<2)|2,{87,56,0}}, +/* 58610 */ {(13<<2)|2,{87,56,0}}, +/* 58611 */ {(13<<2)|2,{87,56,0}}, +/* 58612 */ {(13<<2)|2,{87,56,0}}, +/* 58613 */ {(13<<2)|2,{87,56,0}}, +/* 58614 */ {(13<<2)|2,{87,56,0}}, +/* 58615 */ {(13<<2)|2,{87,56,0}}, +/* 58616 */ {(13<<2)|2,{87,57,0}}, +/* 58617 */ {(13<<2)|2,{87,57,0}}, +/* 58618 */ {(13<<2)|2,{87,57,0}}, +/* 58619 */ {(13<<2)|2,{87,57,0}}, +/* 58620 */ {(13<<2)|2,{87,57,0}}, +/* 58621 */ {(13<<2)|2,{87,57,0}}, +/* 58622 */ {(13<<2)|2,{87,57,0}}, +/* 58623 */ {(13<<2)|2,{87,57,0}}, +/* 58624 */ {(13<<2)|2,{87,61,0}}, +/* 58625 */ {(13<<2)|2,{87,61,0}}, +/* 58626 */ {(13<<2)|2,{87,61,0}}, +/* 58627 */ {(13<<2)|2,{87,61,0}}, +/* 58628 */ {(13<<2)|2,{87,61,0}}, +/* 58629 */ {(13<<2)|2,{87,61,0}}, +/* 58630 */ {(13<<2)|2,{87,61,0}}, +/* 58631 */ {(13<<2)|2,{87,61,0}}, +/* 58632 */ {(13<<2)|2,{87,65,0}}, +/* 58633 */ {(13<<2)|2,{87,65,0}}, +/* 58634 */ {(13<<2)|2,{87,65,0}}, +/* 58635 */ {(13<<2)|2,{87,65,0}}, +/* 58636 */ {(13<<2)|2,{87,65,0}}, +/* 58637 */ {(13<<2)|2,{87,65,0}}, +/* 58638 */ {(13<<2)|2,{87,65,0}}, +/* 58639 */ {(13<<2)|2,{87,65,0}}, +/* 58640 */ {(13<<2)|2,{87,95,0}}, +/* 58641 */ {(13<<2)|2,{87,95,0}}, +/* 58642 */ {(13<<2)|2,{87,95,0}}, +/* 58643 */ {(13<<2)|2,{87,95,0}}, +/* 58644 */ {(13<<2)|2,{87,95,0}}, +/* 58645 */ {(13<<2)|2,{87,95,0}}, +/* 58646 */ {(13<<2)|2,{87,95,0}}, +/* 58647 */ {(13<<2)|2,{87,95,0}}, +/* 58648 */ {(13<<2)|2,{87,98,0}}, +/* 58649 */ {(13<<2)|2,{87,98,0}}, +/* 58650 */ {(13<<2)|2,{87,98,0}}, +/* 58651 */ {(13<<2)|2,{87,98,0}}, +/* 58652 */ {(13<<2)|2,{87,98,0}}, +/* 58653 */ {(13<<2)|2,{87,98,0}}, +/* 58654 */ {(13<<2)|2,{87,98,0}}, +/* 58655 */ {(13<<2)|2,{87,98,0}}, +/* 58656 */ {(13<<2)|2,{87,100,0}}, +/* 58657 */ {(13<<2)|2,{87,100,0}}, +/* 58658 */ {(13<<2)|2,{87,100,0}}, +/* 58659 */ {(13<<2)|2,{87,100,0}}, +/* 58660 */ {(13<<2)|2,{87,100,0}}, +/* 58661 */ {(13<<2)|2,{87,100,0}}, +/* 58662 */ {(13<<2)|2,{87,100,0}}, +/* 58663 */ {(13<<2)|2,{87,100,0}}, +/* 58664 */ {(13<<2)|2,{87,102,0}}, +/* 58665 */ {(13<<2)|2,{87,102,0}}, +/* 58666 */ {(13<<2)|2,{87,102,0}}, +/* 58667 */ {(13<<2)|2,{87,102,0}}, +/* 58668 */ {(13<<2)|2,{87,102,0}}, +/* 58669 */ {(13<<2)|2,{87,102,0}}, +/* 58670 */ {(13<<2)|2,{87,102,0}}, +/* 58671 */ {(13<<2)|2,{87,102,0}}, +/* 58672 */ {(13<<2)|2,{87,103,0}}, +/* 58673 */ {(13<<2)|2,{87,103,0}}, +/* 58674 */ {(13<<2)|2,{87,103,0}}, +/* 58675 */ {(13<<2)|2,{87,103,0}}, +/* 58676 */ {(13<<2)|2,{87,103,0}}, +/* 58677 */ {(13<<2)|2,{87,103,0}}, +/* 58678 */ {(13<<2)|2,{87,103,0}}, +/* 58679 */ {(13<<2)|2,{87,103,0}}, +/* 58680 */ {(13<<2)|2,{87,104,0}}, +/* 58681 */ {(13<<2)|2,{87,104,0}}, +/* 58682 */ {(13<<2)|2,{87,104,0}}, +/* 58683 */ {(13<<2)|2,{87,104,0}}, +/* 58684 */ {(13<<2)|2,{87,104,0}}, +/* 58685 */ {(13<<2)|2,{87,104,0}}, +/* 58686 */ {(13<<2)|2,{87,104,0}}, +/* 58687 */ {(13<<2)|2,{87,104,0}}, +/* 58688 */ {(13<<2)|2,{87,108,0}}, +/* 58689 */ {(13<<2)|2,{87,108,0}}, +/* 58690 */ {(13<<2)|2,{87,108,0}}, +/* 58691 */ {(13<<2)|2,{87,108,0}}, +/* 58692 */ {(13<<2)|2,{87,108,0}}, +/* 58693 */ {(13<<2)|2,{87,108,0}}, +/* 58694 */ {(13<<2)|2,{87,108,0}}, +/* 58695 */ {(13<<2)|2,{87,108,0}}, +/* 58696 */ {(13<<2)|2,{87,109,0}}, +/* 58697 */ {(13<<2)|2,{87,109,0}}, +/* 58698 */ {(13<<2)|2,{87,109,0}}, +/* 58699 */ {(13<<2)|2,{87,109,0}}, +/* 58700 */ {(13<<2)|2,{87,109,0}}, +/* 58701 */ {(13<<2)|2,{87,109,0}}, +/* 58702 */ {(13<<2)|2,{87,109,0}}, +/* 58703 */ {(13<<2)|2,{87,109,0}}, +/* 58704 */ {(13<<2)|2,{87,110,0}}, +/* 58705 */ {(13<<2)|2,{87,110,0}}, +/* 58706 */ {(13<<2)|2,{87,110,0}}, +/* 58707 */ {(13<<2)|2,{87,110,0}}, +/* 58708 */ {(13<<2)|2,{87,110,0}}, +/* 58709 */ {(13<<2)|2,{87,110,0}}, +/* 58710 */ {(13<<2)|2,{87,110,0}}, +/* 58711 */ {(13<<2)|2,{87,110,0}}, +/* 58712 */ {(13<<2)|2,{87,112,0}}, +/* 58713 */ {(13<<2)|2,{87,112,0}}, +/* 58714 */ {(13<<2)|2,{87,112,0}}, +/* 58715 */ {(13<<2)|2,{87,112,0}}, +/* 58716 */ {(13<<2)|2,{87,112,0}}, +/* 58717 */ {(13<<2)|2,{87,112,0}}, +/* 58718 */ {(13<<2)|2,{87,112,0}}, +/* 58719 */ {(13<<2)|2,{87,112,0}}, +/* 58720 */ {(13<<2)|2,{87,114,0}}, +/* 58721 */ {(13<<2)|2,{87,114,0}}, +/* 58722 */ {(13<<2)|2,{87,114,0}}, +/* 58723 */ {(13<<2)|2,{87,114,0}}, +/* 58724 */ {(13<<2)|2,{87,114,0}}, +/* 58725 */ {(13<<2)|2,{87,114,0}}, +/* 58726 */ {(13<<2)|2,{87,114,0}}, +/* 58727 */ {(13<<2)|2,{87,114,0}}, +/* 58728 */ {(13<<2)|2,{87,117,0}}, +/* 58729 */ {(13<<2)|2,{87,117,0}}, +/* 58730 */ {(13<<2)|2,{87,117,0}}, +/* 58731 */ {(13<<2)|2,{87,117,0}}, +/* 58732 */ {(13<<2)|2,{87,117,0}}, +/* 58733 */ {(13<<2)|2,{87,117,0}}, +/* 58734 */ {(13<<2)|2,{87,117,0}}, +/* 58735 */ {(13<<2)|2,{87,117,0}}, +/* 58736 */ {(14<<2)|2,{87,58,0}}, +/* 58737 */ {(14<<2)|2,{87,58,0}}, +/* 58738 */ {(14<<2)|2,{87,58,0}}, +/* 58739 */ {(14<<2)|2,{87,58,0}}, +/* 58740 */ {(14<<2)|2,{87,66,0}}, +/* 58741 */ {(14<<2)|2,{87,66,0}}, +/* 58742 */ {(14<<2)|2,{87,66,0}}, +/* 58743 */ {(14<<2)|2,{87,66,0}}, +/* 58744 */ {(14<<2)|2,{87,67,0}}, +/* 58745 */ {(14<<2)|2,{87,67,0}}, +/* 58746 */ {(14<<2)|2,{87,67,0}}, +/* 58747 */ {(14<<2)|2,{87,67,0}}, +/* 58748 */ {(14<<2)|2,{87,68,0}}, +/* 58749 */ {(14<<2)|2,{87,68,0}}, +/* 58750 */ {(14<<2)|2,{87,68,0}}, +/* 58751 */ {(14<<2)|2,{87,68,0}}, +/* 58752 */ {(14<<2)|2,{87,69,0}}, +/* 58753 */ {(14<<2)|2,{87,69,0}}, +/* 58754 */ {(14<<2)|2,{87,69,0}}, +/* 58755 */ {(14<<2)|2,{87,69,0}}, +/* 58756 */ {(14<<2)|2,{87,70,0}}, +/* 58757 */ {(14<<2)|2,{87,70,0}}, +/* 58758 */ {(14<<2)|2,{87,70,0}}, +/* 58759 */ {(14<<2)|2,{87,70,0}}, +/* 58760 */ {(14<<2)|2,{87,71,0}}, +/* 58761 */ {(14<<2)|2,{87,71,0}}, +/* 58762 */ {(14<<2)|2,{87,71,0}}, +/* 58763 */ {(14<<2)|2,{87,71,0}}, +/* 58764 */ {(14<<2)|2,{87,72,0}}, +/* 58765 */ {(14<<2)|2,{87,72,0}}, +/* 58766 */ {(14<<2)|2,{87,72,0}}, +/* 58767 */ {(14<<2)|2,{87,72,0}}, +/* 58768 */ {(14<<2)|2,{87,73,0}}, +/* 58769 */ {(14<<2)|2,{87,73,0}}, +/* 58770 */ {(14<<2)|2,{87,73,0}}, +/* 58771 */ {(14<<2)|2,{87,73,0}}, +/* 58772 */ {(14<<2)|2,{87,74,0}}, +/* 58773 */ {(14<<2)|2,{87,74,0}}, +/* 58774 */ {(14<<2)|2,{87,74,0}}, +/* 58775 */ {(14<<2)|2,{87,74,0}}, +/* 58776 */ {(14<<2)|2,{87,75,0}}, +/* 58777 */ {(14<<2)|2,{87,75,0}}, +/* 58778 */ {(14<<2)|2,{87,75,0}}, +/* 58779 */ {(14<<2)|2,{87,75,0}}, +/* 58780 */ {(14<<2)|2,{87,76,0}}, +/* 58781 */ {(14<<2)|2,{87,76,0}}, +/* 58782 */ {(14<<2)|2,{87,76,0}}, +/* 58783 */ {(14<<2)|2,{87,76,0}}, +/* 58784 */ {(14<<2)|2,{87,77,0}}, +/* 58785 */ {(14<<2)|2,{87,77,0}}, +/* 58786 */ {(14<<2)|2,{87,77,0}}, +/* 58787 */ {(14<<2)|2,{87,77,0}}, +/* 58788 */ {(14<<2)|2,{87,78,0}}, +/* 58789 */ {(14<<2)|2,{87,78,0}}, +/* 58790 */ {(14<<2)|2,{87,78,0}}, +/* 58791 */ {(14<<2)|2,{87,78,0}}, +/* 58792 */ {(14<<2)|2,{87,79,0}}, +/* 58793 */ {(14<<2)|2,{87,79,0}}, +/* 58794 */ {(14<<2)|2,{87,79,0}}, +/* 58795 */ {(14<<2)|2,{87,79,0}}, +/* 58796 */ {(14<<2)|2,{87,80,0}}, +/* 58797 */ {(14<<2)|2,{87,80,0}}, +/* 58798 */ {(14<<2)|2,{87,80,0}}, +/* 58799 */ {(14<<2)|2,{87,80,0}}, +/* 58800 */ {(14<<2)|2,{87,81,0}}, +/* 58801 */ {(14<<2)|2,{87,81,0}}, +/* 58802 */ {(14<<2)|2,{87,81,0}}, +/* 58803 */ {(14<<2)|2,{87,81,0}}, +/* 58804 */ {(14<<2)|2,{87,82,0}}, +/* 58805 */ {(14<<2)|2,{87,82,0}}, +/* 58806 */ {(14<<2)|2,{87,82,0}}, +/* 58807 */ {(14<<2)|2,{87,82,0}}, +/* 58808 */ {(14<<2)|2,{87,83,0}}, +/* 58809 */ {(14<<2)|2,{87,83,0}}, +/* 58810 */ {(14<<2)|2,{87,83,0}}, +/* 58811 */ {(14<<2)|2,{87,83,0}}, +/* 58812 */ {(14<<2)|2,{87,84,0}}, +/* 58813 */ {(14<<2)|2,{87,84,0}}, +/* 58814 */ {(14<<2)|2,{87,84,0}}, +/* 58815 */ {(14<<2)|2,{87,84,0}}, +/* 58816 */ {(14<<2)|2,{87,85,0}}, +/* 58817 */ {(14<<2)|2,{87,85,0}}, +/* 58818 */ {(14<<2)|2,{87,85,0}}, +/* 58819 */ {(14<<2)|2,{87,85,0}}, +/* 58820 */ {(14<<2)|2,{87,86,0}}, +/* 58821 */ {(14<<2)|2,{87,86,0}}, +/* 58822 */ {(14<<2)|2,{87,86,0}}, +/* 58823 */ {(14<<2)|2,{87,86,0}}, +/* 58824 */ {(14<<2)|2,{87,87,0}}, +/* 58825 */ {(14<<2)|2,{87,87,0}}, +/* 58826 */ {(14<<2)|2,{87,87,0}}, +/* 58827 */ {(14<<2)|2,{87,87,0}}, +/* 58828 */ {(14<<2)|2,{87,89,0}}, +/* 58829 */ {(14<<2)|2,{87,89,0}}, +/* 58830 */ {(14<<2)|2,{87,89,0}}, +/* 58831 */ {(14<<2)|2,{87,89,0}}, +/* 58832 */ {(14<<2)|2,{87,106,0}}, +/* 58833 */ {(14<<2)|2,{87,106,0}}, +/* 58834 */ {(14<<2)|2,{87,106,0}}, +/* 58835 */ {(14<<2)|2,{87,106,0}}, +/* 58836 */ {(14<<2)|2,{87,107,0}}, +/* 58837 */ {(14<<2)|2,{87,107,0}}, +/* 58838 */ {(14<<2)|2,{87,107,0}}, +/* 58839 */ {(14<<2)|2,{87,107,0}}, +/* 58840 */ {(14<<2)|2,{87,113,0}}, +/* 58841 */ {(14<<2)|2,{87,113,0}}, +/* 58842 */ {(14<<2)|2,{87,113,0}}, +/* 58843 */ {(14<<2)|2,{87,113,0}}, +/* 58844 */ {(14<<2)|2,{87,118,0}}, +/* 58845 */ {(14<<2)|2,{87,118,0}}, +/* 58846 */ {(14<<2)|2,{87,118,0}}, +/* 58847 */ {(14<<2)|2,{87,118,0}}, +/* 58848 */ {(14<<2)|2,{87,119,0}}, +/* 58849 */ {(14<<2)|2,{87,119,0}}, +/* 58850 */ {(14<<2)|2,{87,119,0}}, +/* 58851 */ {(14<<2)|2,{87,119,0}}, +/* 58852 */ {(14<<2)|2,{87,120,0}}, +/* 58853 */ {(14<<2)|2,{87,120,0}}, +/* 58854 */ {(14<<2)|2,{87,120,0}}, +/* 58855 */ {(14<<2)|2,{87,120,0}}, +/* 58856 */ {(14<<2)|2,{87,121,0}}, +/* 58857 */ {(14<<2)|2,{87,121,0}}, +/* 58858 */ {(14<<2)|2,{87,121,0}}, +/* 58859 */ {(14<<2)|2,{87,121,0}}, +/* 58860 */ {(14<<2)|2,{87,122,0}}, +/* 58861 */ {(14<<2)|2,{87,122,0}}, +/* 58862 */ {(14<<2)|2,{87,122,0}}, +/* 58863 */ {(14<<2)|2,{87,122,0}}, +/* 58864 */ {(15<<2)|2,{87,38,0}}, +/* 58865 */ {(15<<2)|2,{87,38,0}}, +/* 58866 */ {(15<<2)|2,{87,42,0}}, +/* 58867 */ {(15<<2)|2,{87,42,0}}, +/* 58868 */ {(15<<2)|2,{87,44,0}}, +/* 58869 */ {(15<<2)|2,{87,44,0}}, +/* 58870 */ {(15<<2)|2,{87,59,0}}, +/* 58871 */ {(15<<2)|2,{87,59,0}}, +/* 58872 */ {(15<<2)|2,{87,88,0}}, +/* 58873 */ {(15<<2)|2,{87,88,0}}, +/* 58874 */ {(15<<2)|2,{87,90,0}}, +/* 58875 */ {(15<<2)|2,{87,90,0}}, +/* 58876 */ {(7<<2)|1,{87,0,0}}, +/* 58877 */ {(7<<2)|1,{87,0,0}}, +/* 58878 */ {(7<<2)|1,{87,0,0}}, +/* 58879 */ {(7<<2)|1,{87,0,0}}, +/* 58880 */ {(12<<2)|2,{89,48,0}}, +/* 58881 */ {(12<<2)|2,{89,48,0}}, +/* 58882 */ {(12<<2)|2,{89,48,0}}, +/* 58883 */ {(12<<2)|2,{89,48,0}}, +/* 58884 */ {(12<<2)|2,{89,48,0}}, +/* 58885 */ {(12<<2)|2,{89,48,0}}, +/* 58886 */ {(12<<2)|2,{89,48,0}}, +/* 58887 */ {(12<<2)|2,{89,48,0}}, +/* 58888 */ {(12<<2)|2,{89,48,0}}, +/* 58889 */ {(12<<2)|2,{89,48,0}}, +/* 58890 */ {(12<<2)|2,{89,48,0}}, +/* 58891 */ {(12<<2)|2,{89,48,0}}, +/* 58892 */ {(12<<2)|2,{89,48,0}}, +/* 58893 */ {(12<<2)|2,{89,48,0}}, +/* 58894 */ {(12<<2)|2,{89,48,0}}, +/* 58895 */ {(12<<2)|2,{89,48,0}}, +/* 58896 */ {(12<<2)|2,{89,49,0}}, +/* 58897 */ {(12<<2)|2,{89,49,0}}, +/* 58898 */ {(12<<2)|2,{89,49,0}}, +/* 58899 */ {(12<<2)|2,{89,49,0}}, +/* 58900 */ {(12<<2)|2,{89,49,0}}, +/* 58901 */ {(12<<2)|2,{89,49,0}}, +/* 58902 */ {(12<<2)|2,{89,49,0}}, +/* 58903 */ {(12<<2)|2,{89,49,0}}, +/* 58904 */ {(12<<2)|2,{89,49,0}}, +/* 58905 */ {(12<<2)|2,{89,49,0}}, +/* 58906 */ {(12<<2)|2,{89,49,0}}, +/* 58907 */ {(12<<2)|2,{89,49,0}}, +/* 58908 */ {(12<<2)|2,{89,49,0}}, +/* 58909 */ {(12<<2)|2,{89,49,0}}, +/* 58910 */ {(12<<2)|2,{89,49,0}}, +/* 58911 */ {(12<<2)|2,{89,49,0}}, +/* 58912 */ {(12<<2)|2,{89,50,0}}, +/* 58913 */ {(12<<2)|2,{89,50,0}}, +/* 58914 */ {(12<<2)|2,{89,50,0}}, +/* 58915 */ {(12<<2)|2,{89,50,0}}, +/* 58916 */ {(12<<2)|2,{89,50,0}}, +/* 58917 */ {(12<<2)|2,{89,50,0}}, +/* 58918 */ {(12<<2)|2,{89,50,0}}, +/* 58919 */ {(12<<2)|2,{89,50,0}}, +/* 58920 */ {(12<<2)|2,{89,50,0}}, +/* 58921 */ {(12<<2)|2,{89,50,0}}, +/* 58922 */ {(12<<2)|2,{89,50,0}}, +/* 58923 */ {(12<<2)|2,{89,50,0}}, +/* 58924 */ {(12<<2)|2,{89,50,0}}, +/* 58925 */ {(12<<2)|2,{89,50,0}}, +/* 58926 */ {(12<<2)|2,{89,50,0}}, +/* 58927 */ {(12<<2)|2,{89,50,0}}, +/* 58928 */ {(12<<2)|2,{89,97,0}}, +/* 58929 */ {(12<<2)|2,{89,97,0}}, +/* 58930 */ {(12<<2)|2,{89,97,0}}, +/* 58931 */ {(12<<2)|2,{89,97,0}}, +/* 58932 */ {(12<<2)|2,{89,97,0}}, +/* 58933 */ {(12<<2)|2,{89,97,0}}, +/* 58934 */ {(12<<2)|2,{89,97,0}}, +/* 58935 */ {(12<<2)|2,{89,97,0}}, +/* 58936 */ {(12<<2)|2,{89,97,0}}, +/* 58937 */ {(12<<2)|2,{89,97,0}}, +/* 58938 */ {(12<<2)|2,{89,97,0}}, +/* 58939 */ {(12<<2)|2,{89,97,0}}, +/* 58940 */ {(12<<2)|2,{89,97,0}}, +/* 58941 */ {(12<<2)|2,{89,97,0}}, +/* 58942 */ {(12<<2)|2,{89,97,0}}, +/* 58943 */ {(12<<2)|2,{89,97,0}}, +/* 58944 */ {(12<<2)|2,{89,99,0}}, +/* 58945 */ {(12<<2)|2,{89,99,0}}, +/* 58946 */ {(12<<2)|2,{89,99,0}}, +/* 58947 */ {(12<<2)|2,{89,99,0}}, +/* 58948 */ {(12<<2)|2,{89,99,0}}, +/* 58949 */ {(12<<2)|2,{89,99,0}}, +/* 58950 */ {(12<<2)|2,{89,99,0}}, +/* 58951 */ {(12<<2)|2,{89,99,0}}, +/* 58952 */ {(12<<2)|2,{89,99,0}}, +/* 58953 */ {(12<<2)|2,{89,99,0}}, +/* 58954 */ {(12<<2)|2,{89,99,0}}, +/* 58955 */ {(12<<2)|2,{89,99,0}}, +/* 58956 */ {(12<<2)|2,{89,99,0}}, +/* 58957 */ {(12<<2)|2,{89,99,0}}, +/* 58958 */ {(12<<2)|2,{89,99,0}}, +/* 58959 */ {(12<<2)|2,{89,99,0}}, +/* 58960 */ {(12<<2)|2,{89,101,0}}, +/* 58961 */ {(12<<2)|2,{89,101,0}}, +/* 58962 */ {(12<<2)|2,{89,101,0}}, +/* 58963 */ {(12<<2)|2,{89,101,0}}, +/* 58964 */ {(12<<2)|2,{89,101,0}}, +/* 58965 */ {(12<<2)|2,{89,101,0}}, +/* 58966 */ {(12<<2)|2,{89,101,0}}, +/* 58967 */ {(12<<2)|2,{89,101,0}}, +/* 58968 */ {(12<<2)|2,{89,101,0}}, +/* 58969 */ {(12<<2)|2,{89,101,0}}, +/* 58970 */ {(12<<2)|2,{89,101,0}}, +/* 58971 */ {(12<<2)|2,{89,101,0}}, +/* 58972 */ {(12<<2)|2,{89,101,0}}, +/* 58973 */ {(12<<2)|2,{89,101,0}}, +/* 58974 */ {(12<<2)|2,{89,101,0}}, +/* 58975 */ {(12<<2)|2,{89,101,0}}, +/* 58976 */ {(12<<2)|2,{89,105,0}}, +/* 58977 */ {(12<<2)|2,{89,105,0}}, +/* 58978 */ {(12<<2)|2,{89,105,0}}, +/* 58979 */ {(12<<2)|2,{89,105,0}}, +/* 58980 */ {(12<<2)|2,{89,105,0}}, +/* 58981 */ {(12<<2)|2,{89,105,0}}, +/* 58982 */ {(12<<2)|2,{89,105,0}}, +/* 58983 */ {(12<<2)|2,{89,105,0}}, +/* 58984 */ {(12<<2)|2,{89,105,0}}, +/* 58985 */ {(12<<2)|2,{89,105,0}}, +/* 58986 */ {(12<<2)|2,{89,105,0}}, +/* 58987 */ {(12<<2)|2,{89,105,0}}, +/* 58988 */ {(12<<2)|2,{89,105,0}}, +/* 58989 */ {(12<<2)|2,{89,105,0}}, +/* 58990 */ {(12<<2)|2,{89,105,0}}, +/* 58991 */ {(12<<2)|2,{89,105,0}}, +/* 58992 */ {(12<<2)|2,{89,111,0}}, +/* 58993 */ {(12<<2)|2,{89,111,0}}, +/* 58994 */ {(12<<2)|2,{89,111,0}}, +/* 58995 */ {(12<<2)|2,{89,111,0}}, +/* 58996 */ {(12<<2)|2,{89,111,0}}, +/* 58997 */ {(12<<2)|2,{89,111,0}}, +/* 58998 */ {(12<<2)|2,{89,111,0}}, +/* 58999 */ {(12<<2)|2,{89,111,0}}, +/* 59000 */ {(12<<2)|2,{89,111,0}}, +/* 59001 */ {(12<<2)|2,{89,111,0}}, +/* 59002 */ {(12<<2)|2,{89,111,0}}, +/* 59003 */ {(12<<2)|2,{89,111,0}}, +/* 59004 */ {(12<<2)|2,{89,111,0}}, +/* 59005 */ {(12<<2)|2,{89,111,0}}, +/* 59006 */ {(12<<2)|2,{89,111,0}}, +/* 59007 */ {(12<<2)|2,{89,111,0}}, +/* 59008 */ {(12<<2)|2,{89,115,0}}, +/* 59009 */ {(12<<2)|2,{89,115,0}}, +/* 59010 */ {(12<<2)|2,{89,115,0}}, +/* 59011 */ {(12<<2)|2,{89,115,0}}, +/* 59012 */ {(12<<2)|2,{89,115,0}}, +/* 59013 */ {(12<<2)|2,{89,115,0}}, +/* 59014 */ {(12<<2)|2,{89,115,0}}, +/* 59015 */ {(12<<2)|2,{89,115,0}}, +/* 59016 */ {(12<<2)|2,{89,115,0}}, +/* 59017 */ {(12<<2)|2,{89,115,0}}, +/* 59018 */ {(12<<2)|2,{89,115,0}}, +/* 59019 */ {(12<<2)|2,{89,115,0}}, +/* 59020 */ {(12<<2)|2,{89,115,0}}, +/* 59021 */ {(12<<2)|2,{89,115,0}}, +/* 59022 */ {(12<<2)|2,{89,115,0}}, +/* 59023 */ {(12<<2)|2,{89,115,0}}, +/* 59024 */ {(12<<2)|2,{89,116,0}}, +/* 59025 */ {(12<<2)|2,{89,116,0}}, +/* 59026 */ {(12<<2)|2,{89,116,0}}, +/* 59027 */ {(12<<2)|2,{89,116,0}}, +/* 59028 */ {(12<<2)|2,{89,116,0}}, +/* 59029 */ {(12<<2)|2,{89,116,0}}, +/* 59030 */ {(12<<2)|2,{89,116,0}}, +/* 59031 */ {(12<<2)|2,{89,116,0}}, +/* 59032 */ {(12<<2)|2,{89,116,0}}, +/* 59033 */ {(12<<2)|2,{89,116,0}}, +/* 59034 */ {(12<<2)|2,{89,116,0}}, +/* 59035 */ {(12<<2)|2,{89,116,0}}, +/* 59036 */ {(12<<2)|2,{89,116,0}}, +/* 59037 */ {(12<<2)|2,{89,116,0}}, +/* 59038 */ {(12<<2)|2,{89,116,0}}, +/* 59039 */ {(12<<2)|2,{89,116,0}}, +/* 59040 */ {(13<<2)|2,{89,32,0}}, +/* 59041 */ {(13<<2)|2,{89,32,0}}, +/* 59042 */ {(13<<2)|2,{89,32,0}}, +/* 59043 */ {(13<<2)|2,{89,32,0}}, +/* 59044 */ {(13<<2)|2,{89,32,0}}, +/* 59045 */ {(13<<2)|2,{89,32,0}}, +/* 59046 */ {(13<<2)|2,{89,32,0}}, +/* 59047 */ {(13<<2)|2,{89,32,0}}, +/* 59048 */ {(13<<2)|2,{89,37,0}}, +/* 59049 */ {(13<<2)|2,{89,37,0}}, +/* 59050 */ {(13<<2)|2,{89,37,0}}, +/* 59051 */ {(13<<2)|2,{89,37,0}}, +/* 59052 */ {(13<<2)|2,{89,37,0}}, +/* 59053 */ {(13<<2)|2,{89,37,0}}, +/* 59054 */ {(13<<2)|2,{89,37,0}}, +/* 59055 */ {(13<<2)|2,{89,37,0}}, +/* 59056 */ {(13<<2)|2,{89,45,0}}, +/* 59057 */ {(13<<2)|2,{89,45,0}}, +/* 59058 */ {(13<<2)|2,{89,45,0}}, +/* 59059 */ {(13<<2)|2,{89,45,0}}, +/* 59060 */ {(13<<2)|2,{89,45,0}}, +/* 59061 */ {(13<<2)|2,{89,45,0}}, +/* 59062 */ {(13<<2)|2,{89,45,0}}, +/* 59063 */ {(13<<2)|2,{89,45,0}}, +/* 59064 */ {(13<<2)|2,{89,46,0}}, +/* 59065 */ {(13<<2)|2,{89,46,0}}, +/* 59066 */ {(13<<2)|2,{89,46,0}}, +/* 59067 */ {(13<<2)|2,{89,46,0}}, +/* 59068 */ {(13<<2)|2,{89,46,0}}, +/* 59069 */ {(13<<2)|2,{89,46,0}}, +/* 59070 */ {(13<<2)|2,{89,46,0}}, +/* 59071 */ {(13<<2)|2,{89,46,0}}, +/* 59072 */ {(13<<2)|2,{89,47,0}}, +/* 59073 */ {(13<<2)|2,{89,47,0}}, +/* 59074 */ {(13<<2)|2,{89,47,0}}, +/* 59075 */ {(13<<2)|2,{89,47,0}}, +/* 59076 */ {(13<<2)|2,{89,47,0}}, +/* 59077 */ {(13<<2)|2,{89,47,0}}, +/* 59078 */ {(13<<2)|2,{89,47,0}}, +/* 59079 */ {(13<<2)|2,{89,47,0}}, +/* 59080 */ {(13<<2)|2,{89,51,0}}, +/* 59081 */ {(13<<2)|2,{89,51,0}}, +/* 59082 */ {(13<<2)|2,{89,51,0}}, +/* 59083 */ {(13<<2)|2,{89,51,0}}, +/* 59084 */ {(13<<2)|2,{89,51,0}}, +/* 59085 */ {(13<<2)|2,{89,51,0}}, +/* 59086 */ {(13<<2)|2,{89,51,0}}, +/* 59087 */ {(13<<2)|2,{89,51,0}}, +/* 59088 */ {(13<<2)|2,{89,52,0}}, +/* 59089 */ {(13<<2)|2,{89,52,0}}, +/* 59090 */ {(13<<2)|2,{89,52,0}}, +/* 59091 */ {(13<<2)|2,{89,52,0}}, +/* 59092 */ {(13<<2)|2,{89,52,0}}, +/* 59093 */ {(13<<2)|2,{89,52,0}}, +/* 59094 */ {(13<<2)|2,{89,52,0}}, +/* 59095 */ {(13<<2)|2,{89,52,0}}, +/* 59096 */ {(13<<2)|2,{89,53,0}}, +/* 59097 */ {(13<<2)|2,{89,53,0}}, +/* 59098 */ {(13<<2)|2,{89,53,0}}, +/* 59099 */ {(13<<2)|2,{89,53,0}}, +/* 59100 */ {(13<<2)|2,{89,53,0}}, +/* 59101 */ {(13<<2)|2,{89,53,0}}, +/* 59102 */ {(13<<2)|2,{89,53,0}}, +/* 59103 */ {(13<<2)|2,{89,53,0}}, +/* 59104 */ {(13<<2)|2,{89,54,0}}, +/* 59105 */ {(13<<2)|2,{89,54,0}}, +/* 59106 */ {(13<<2)|2,{89,54,0}}, +/* 59107 */ {(13<<2)|2,{89,54,0}}, +/* 59108 */ {(13<<2)|2,{89,54,0}}, +/* 59109 */ {(13<<2)|2,{89,54,0}}, +/* 59110 */ {(13<<2)|2,{89,54,0}}, +/* 59111 */ {(13<<2)|2,{89,54,0}}, +/* 59112 */ {(13<<2)|2,{89,55,0}}, +/* 59113 */ {(13<<2)|2,{89,55,0}}, +/* 59114 */ {(13<<2)|2,{89,55,0}}, +/* 59115 */ {(13<<2)|2,{89,55,0}}, +/* 59116 */ {(13<<2)|2,{89,55,0}}, +/* 59117 */ {(13<<2)|2,{89,55,0}}, +/* 59118 */ {(13<<2)|2,{89,55,0}}, +/* 59119 */ {(13<<2)|2,{89,55,0}}, +/* 59120 */ {(13<<2)|2,{89,56,0}}, +/* 59121 */ {(13<<2)|2,{89,56,0}}, +/* 59122 */ {(13<<2)|2,{89,56,0}}, +/* 59123 */ {(13<<2)|2,{89,56,0}}, +/* 59124 */ {(13<<2)|2,{89,56,0}}, +/* 59125 */ {(13<<2)|2,{89,56,0}}, +/* 59126 */ {(13<<2)|2,{89,56,0}}, +/* 59127 */ {(13<<2)|2,{89,56,0}}, +/* 59128 */ {(13<<2)|2,{89,57,0}}, +/* 59129 */ {(13<<2)|2,{89,57,0}}, +/* 59130 */ {(13<<2)|2,{89,57,0}}, +/* 59131 */ {(13<<2)|2,{89,57,0}}, +/* 59132 */ {(13<<2)|2,{89,57,0}}, +/* 59133 */ {(13<<2)|2,{89,57,0}}, +/* 59134 */ {(13<<2)|2,{89,57,0}}, +/* 59135 */ {(13<<2)|2,{89,57,0}}, +/* 59136 */ {(13<<2)|2,{89,61,0}}, +/* 59137 */ {(13<<2)|2,{89,61,0}}, +/* 59138 */ {(13<<2)|2,{89,61,0}}, +/* 59139 */ {(13<<2)|2,{89,61,0}}, +/* 59140 */ {(13<<2)|2,{89,61,0}}, +/* 59141 */ {(13<<2)|2,{89,61,0}}, +/* 59142 */ {(13<<2)|2,{89,61,0}}, +/* 59143 */ {(13<<2)|2,{89,61,0}}, +/* 59144 */ {(13<<2)|2,{89,65,0}}, +/* 59145 */ {(13<<2)|2,{89,65,0}}, +/* 59146 */ {(13<<2)|2,{89,65,0}}, +/* 59147 */ {(13<<2)|2,{89,65,0}}, +/* 59148 */ {(13<<2)|2,{89,65,0}}, +/* 59149 */ {(13<<2)|2,{89,65,0}}, +/* 59150 */ {(13<<2)|2,{89,65,0}}, +/* 59151 */ {(13<<2)|2,{89,65,0}}, +/* 59152 */ {(13<<2)|2,{89,95,0}}, +/* 59153 */ {(13<<2)|2,{89,95,0}}, +/* 59154 */ {(13<<2)|2,{89,95,0}}, +/* 59155 */ {(13<<2)|2,{89,95,0}}, +/* 59156 */ {(13<<2)|2,{89,95,0}}, +/* 59157 */ {(13<<2)|2,{89,95,0}}, +/* 59158 */ {(13<<2)|2,{89,95,0}}, +/* 59159 */ {(13<<2)|2,{89,95,0}}, +/* 59160 */ {(13<<2)|2,{89,98,0}}, +/* 59161 */ {(13<<2)|2,{89,98,0}}, +/* 59162 */ {(13<<2)|2,{89,98,0}}, +/* 59163 */ {(13<<2)|2,{89,98,0}}, +/* 59164 */ {(13<<2)|2,{89,98,0}}, +/* 59165 */ {(13<<2)|2,{89,98,0}}, +/* 59166 */ {(13<<2)|2,{89,98,0}}, +/* 59167 */ {(13<<2)|2,{89,98,0}}, +/* 59168 */ {(13<<2)|2,{89,100,0}}, +/* 59169 */ {(13<<2)|2,{89,100,0}}, +/* 59170 */ {(13<<2)|2,{89,100,0}}, +/* 59171 */ {(13<<2)|2,{89,100,0}}, +/* 59172 */ {(13<<2)|2,{89,100,0}}, +/* 59173 */ {(13<<2)|2,{89,100,0}}, +/* 59174 */ {(13<<2)|2,{89,100,0}}, +/* 59175 */ {(13<<2)|2,{89,100,0}}, +/* 59176 */ {(13<<2)|2,{89,102,0}}, +/* 59177 */ {(13<<2)|2,{89,102,0}}, +/* 59178 */ {(13<<2)|2,{89,102,0}}, +/* 59179 */ {(13<<2)|2,{89,102,0}}, +/* 59180 */ {(13<<2)|2,{89,102,0}}, +/* 59181 */ {(13<<2)|2,{89,102,0}}, +/* 59182 */ {(13<<2)|2,{89,102,0}}, +/* 59183 */ {(13<<2)|2,{89,102,0}}, +/* 59184 */ {(13<<2)|2,{89,103,0}}, +/* 59185 */ {(13<<2)|2,{89,103,0}}, +/* 59186 */ {(13<<2)|2,{89,103,0}}, +/* 59187 */ {(13<<2)|2,{89,103,0}}, +/* 59188 */ {(13<<2)|2,{89,103,0}}, +/* 59189 */ {(13<<2)|2,{89,103,0}}, +/* 59190 */ {(13<<2)|2,{89,103,0}}, +/* 59191 */ {(13<<2)|2,{89,103,0}}, +/* 59192 */ {(13<<2)|2,{89,104,0}}, +/* 59193 */ {(13<<2)|2,{89,104,0}}, +/* 59194 */ {(13<<2)|2,{89,104,0}}, +/* 59195 */ {(13<<2)|2,{89,104,0}}, +/* 59196 */ {(13<<2)|2,{89,104,0}}, +/* 59197 */ {(13<<2)|2,{89,104,0}}, +/* 59198 */ {(13<<2)|2,{89,104,0}}, +/* 59199 */ {(13<<2)|2,{89,104,0}}, +/* 59200 */ {(13<<2)|2,{89,108,0}}, +/* 59201 */ {(13<<2)|2,{89,108,0}}, +/* 59202 */ {(13<<2)|2,{89,108,0}}, +/* 59203 */ {(13<<2)|2,{89,108,0}}, +/* 59204 */ {(13<<2)|2,{89,108,0}}, +/* 59205 */ {(13<<2)|2,{89,108,0}}, +/* 59206 */ {(13<<2)|2,{89,108,0}}, +/* 59207 */ {(13<<2)|2,{89,108,0}}, +/* 59208 */ {(13<<2)|2,{89,109,0}}, +/* 59209 */ {(13<<2)|2,{89,109,0}}, +/* 59210 */ {(13<<2)|2,{89,109,0}}, +/* 59211 */ {(13<<2)|2,{89,109,0}}, +/* 59212 */ {(13<<2)|2,{89,109,0}}, +/* 59213 */ {(13<<2)|2,{89,109,0}}, +/* 59214 */ {(13<<2)|2,{89,109,0}}, +/* 59215 */ {(13<<2)|2,{89,109,0}}, +/* 59216 */ {(13<<2)|2,{89,110,0}}, +/* 59217 */ {(13<<2)|2,{89,110,0}}, +/* 59218 */ {(13<<2)|2,{89,110,0}}, +/* 59219 */ {(13<<2)|2,{89,110,0}}, +/* 59220 */ {(13<<2)|2,{89,110,0}}, +/* 59221 */ {(13<<2)|2,{89,110,0}}, +/* 59222 */ {(13<<2)|2,{89,110,0}}, +/* 59223 */ {(13<<2)|2,{89,110,0}}, +/* 59224 */ {(13<<2)|2,{89,112,0}}, +/* 59225 */ {(13<<2)|2,{89,112,0}}, +/* 59226 */ {(13<<2)|2,{89,112,0}}, +/* 59227 */ {(13<<2)|2,{89,112,0}}, +/* 59228 */ {(13<<2)|2,{89,112,0}}, +/* 59229 */ {(13<<2)|2,{89,112,0}}, +/* 59230 */ {(13<<2)|2,{89,112,0}}, +/* 59231 */ {(13<<2)|2,{89,112,0}}, +/* 59232 */ {(13<<2)|2,{89,114,0}}, +/* 59233 */ {(13<<2)|2,{89,114,0}}, +/* 59234 */ {(13<<2)|2,{89,114,0}}, +/* 59235 */ {(13<<2)|2,{89,114,0}}, +/* 59236 */ {(13<<2)|2,{89,114,0}}, +/* 59237 */ {(13<<2)|2,{89,114,0}}, +/* 59238 */ {(13<<2)|2,{89,114,0}}, +/* 59239 */ {(13<<2)|2,{89,114,0}}, +/* 59240 */ {(13<<2)|2,{89,117,0}}, +/* 59241 */ {(13<<2)|2,{89,117,0}}, +/* 59242 */ {(13<<2)|2,{89,117,0}}, +/* 59243 */ {(13<<2)|2,{89,117,0}}, +/* 59244 */ {(13<<2)|2,{89,117,0}}, +/* 59245 */ {(13<<2)|2,{89,117,0}}, +/* 59246 */ {(13<<2)|2,{89,117,0}}, +/* 59247 */ {(13<<2)|2,{89,117,0}}, +/* 59248 */ {(14<<2)|2,{89,58,0}}, +/* 59249 */ {(14<<2)|2,{89,58,0}}, +/* 59250 */ {(14<<2)|2,{89,58,0}}, +/* 59251 */ {(14<<2)|2,{89,58,0}}, +/* 59252 */ {(14<<2)|2,{89,66,0}}, +/* 59253 */ {(14<<2)|2,{89,66,0}}, +/* 59254 */ {(14<<2)|2,{89,66,0}}, +/* 59255 */ {(14<<2)|2,{89,66,0}}, +/* 59256 */ {(14<<2)|2,{89,67,0}}, +/* 59257 */ {(14<<2)|2,{89,67,0}}, +/* 59258 */ {(14<<2)|2,{89,67,0}}, +/* 59259 */ {(14<<2)|2,{89,67,0}}, +/* 59260 */ {(14<<2)|2,{89,68,0}}, +/* 59261 */ {(14<<2)|2,{89,68,0}}, +/* 59262 */ {(14<<2)|2,{89,68,0}}, +/* 59263 */ {(14<<2)|2,{89,68,0}}, +/* 59264 */ {(14<<2)|2,{89,69,0}}, +/* 59265 */ {(14<<2)|2,{89,69,0}}, +/* 59266 */ {(14<<2)|2,{89,69,0}}, +/* 59267 */ {(14<<2)|2,{89,69,0}}, +/* 59268 */ {(14<<2)|2,{89,70,0}}, +/* 59269 */ {(14<<2)|2,{89,70,0}}, +/* 59270 */ {(14<<2)|2,{89,70,0}}, +/* 59271 */ {(14<<2)|2,{89,70,0}}, +/* 59272 */ {(14<<2)|2,{89,71,0}}, +/* 59273 */ {(14<<2)|2,{89,71,0}}, +/* 59274 */ {(14<<2)|2,{89,71,0}}, +/* 59275 */ {(14<<2)|2,{89,71,0}}, +/* 59276 */ {(14<<2)|2,{89,72,0}}, +/* 59277 */ {(14<<2)|2,{89,72,0}}, +/* 59278 */ {(14<<2)|2,{89,72,0}}, +/* 59279 */ {(14<<2)|2,{89,72,0}}, +/* 59280 */ {(14<<2)|2,{89,73,0}}, +/* 59281 */ {(14<<2)|2,{89,73,0}}, +/* 59282 */ {(14<<2)|2,{89,73,0}}, +/* 59283 */ {(14<<2)|2,{89,73,0}}, +/* 59284 */ {(14<<2)|2,{89,74,0}}, +/* 59285 */ {(14<<2)|2,{89,74,0}}, +/* 59286 */ {(14<<2)|2,{89,74,0}}, +/* 59287 */ {(14<<2)|2,{89,74,0}}, +/* 59288 */ {(14<<2)|2,{89,75,0}}, +/* 59289 */ {(14<<2)|2,{89,75,0}}, +/* 59290 */ {(14<<2)|2,{89,75,0}}, +/* 59291 */ {(14<<2)|2,{89,75,0}}, +/* 59292 */ {(14<<2)|2,{89,76,0}}, +/* 59293 */ {(14<<2)|2,{89,76,0}}, +/* 59294 */ {(14<<2)|2,{89,76,0}}, +/* 59295 */ {(14<<2)|2,{89,76,0}}, +/* 59296 */ {(14<<2)|2,{89,77,0}}, +/* 59297 */ {(14<<2)|2,{89,77,0}}, +/* 59298 */ {(14<<2)|2,{89,77,0}}, +/* 59299 */ {(14<<2)|2,{89,77,0}}, +/* 59300 */ {(14<<2)|2,{89,78,0}}, +/* 59301 */ {(14<<2)|2,{89,78,0}}, +/* 59302 */ {(14<<2)|2,{89,78,0}}, +/* 59303 */ {(14<<2)|2,{89,78,0}}, +/* 59304 */ {(14<<2)|2,{89,79,0}}, +/* 59305 */ {(14<<2)|2,{89,79,0}}, +/* 59306 */ {(14<<2)|2,{89,79,0}}, +/* 59307 */ {(14<<2)|2,{89,79,0}}, +/* 59308 */ {(14<<2)|2,{89,80,0}}, +/* 59309 */ {(14<<2)|2,{89,80,0}}, +/* 59310 */ {(14<<2)|2,{89,80,0}}, +/* 59311 */ {(14<<2)|2,{89,80,0}}, +/* 59312 */ {(14<<2)|2,{89,81,0}}, +/* 59313 */ {(14<<2)|2,{89,81,0}}, +/* 59314 */ {(14<<2)|2,{89,81,0}}, +/* 59315 */ {(14<<2)|2,{89,81,0}}, +/* 59316 */ {(14<<2)|2,{89,82,0}}, +/* 59317 */ {(14<<2)|2,{89,82,0}}, +/* 59318 */ {(14<<2)|2,{89,82,0}}, +/* 59319 */ {(14<<2)|2,{89,82,0}}, +/* 59320 */ {(14<<2)|2,{89,83,0}}, +/* 59321 */ {(14<<2)|2,{89,83,0}}, +/* 59322 */ {(14<<2)|2,{89,83,0}}, +/* 59323 */ {(14<<2)|2,{89,83,0}}, +/* 59324 */ {(14<<2)|2,{89,84,0}}, +/* 59325 */ {(14<<2)|2,{89,84,0}}, +/* 59326 */ {(14<<2)|2,{89,84,0}}, +/* 59327 */ {(14<<2)|2,{89,84,0}}, +/* 59328 */ {(14<<2)|2,{89,85,0}}, +/* 59329 */ {(14<<2)|2,{89,85,0}}, +/* 59330 */ {(14<<2)|2,{89,85,0}}, +/* 59331 */ {(14<<2)|2,{89,85,0}}, +/* 59332 */ {(14<<2)|2,{89,86,0}}, +/* 59333 */ {(14<<2)|2,{89,86,0}}, +/* 59334 */ {(14<<2)|2,{89,86,0}}, +/* 59335 */ {(14<<2)|2,{89,86,0}}, +/* 59336 */ {(14<<2)|2,{89,87,0}}, +/* 59337 */ {(14<<2)|2,{89,87,0}}, +/* 59338 */ {(14<<2)|2,{89,87,0}}, +/* 59339 */ {(14<<2)|2,{89,87,0}}, +/* 59340 */ {(14<<2)|2,{89,89,0}}, +/* 59341 */ {(14<<2)|2,{89,89,0}}, +/* 59342 */ {(14<<2)|2,{89,89,0}}, +/* 59343 */ {(14<<2)|2,{89,89,0}}, +/* 59344 */ {(14<<2)|2,{89,106,0}}, +/* 59345 */ {(14<<2)|2,{89,106,0}}, +/* 59346 */ {(14<<2)|2,{89,106,0}}, +/* 59347 */ {(14<<2)|2,{89,106,0}}, +/* 59348 */ {(14<<2)|2,{89,107,0}}, +/* 59349 */ {(14<<2)|2,{89,107,0}}, +/* 59350 */ {(14<<2)|2,{89,107,0}}, +/* 59351 */ {(14<<2)|2,{89,107,0}}, +/* 59352 */ {(14<<2)|2,{89,113,0}}, +/* 59353 */ {(14<<2)|2,{89,113,0}}, +/* 59354 */ {(14<<2)|2,{89,113,0}}, +/* 59355 */ {(14<<2)|2,{89,113,0}}, +/* 59356 */ {(14<<2)|2,{89,118,0}}, +/* 59357 */ {(14<<2)|2,{89,118,0}}, +/* 59358 */ {(14<<2)|2,{89,118,0}}, +/* 59359 */ {(14<<2)|2,{89,118,0}}, +/* 59360 */ {(14<<2)|2,{89,119,0}}, +/* 59361 */ {(14<<2)|2,{89,119,0}}, +/* 59362 */ {(14<<2)|2,{89,119,0}}, +/* 59363 */ {(14<<2)|2,{89,119,0}}, +/* 59364 */ {(14<<2)|2,{89,120,0}}, +/* 59365 */ {(14<<2)|2,{89,120,0}}, +/* 59366 */ {(14<<2)|2,{89,120,0}}, +/* 59367 */ {(14<<2)|2,{89,120,0}}, +/* 59368 */ {(14<<2)|2,{89,121,0}}, +/* 59369 */ {(14<<2)|2,{89,121,0}}, +/* 59370 */ {(14<<2)|2,{89,121,0}}, +/* 59371 */ {(14<<2)|2,{89,121,0}}, +/* 59372 */ {(14<<2)|2,{89,122,0}}, +/* 59373 */ {(14<<2)|2,{89,122,0}}, +/* 59374 */ {(14<<2)|2,{89,122,0}}, +/* 59375 */ {(14<<2)|2,{89,122,0}}, +/* 59376 */ {(15<<2)|2,{89,38,0}}, +/* 59377 */ {(15<<2)|2,{89,38,0}}, +/* 59378 */ {(15<<2)|2,{89,42,0}}, +/* 59379 */ {(15<<2)|2,{89,42,0}}, +/* 59380 */ {(15<<2)|2,{89,44,0}}, +/* 59381 */ {(15<<2)|2,{89,44,0}}, +/* 59382 */ {(15<<2)|2,{89,59,0}}, +/* 59383 */ {(15<<2)|2,{89,59,0}}, +/* 59384 */ {(15<<2)|2,{89,88,0}}, +/* 59385 */ {(15<<2)|2,{89,88,0}}, +/* 59386 */ {(15<<2)|2,{89,90,0}}, +/* 59387 */ {(15<<2)|2,{89,90,0}}, +/* 59388 */ {(7<<2)|1,{89,0,0}}, +/* 59389 */ {(7<<2)|1,{89,0,0}}, +/* 59390 */ {(7<<2)|1,{89,0,0}}, +/* 59391 */ {(7<<2)|1,{89,0,0}}, +/* 59392 */ {(12<<2)|2,{106,48,0}}, +/* 59393 */ {(12<<2)|2,{106,48,0}}, +/* 59394 */ {(12<<2)|2,{106,48,0}}, +/* 59395 */ {(12<<2)|2,{106,48,0}}, +/* 59396 */ {(12<<2)|2,{106,48,0}}, +/* 59397 */ {(12<<2)|2,{106,48,0}}, +/* 59398 */ {(12<<2)|2,{106,48,0}}, +/* 59399 */ {(12<<2)|2,{106,48,0}}, +/* 59400 */ {(12<<2)|2,{106,48,0}}, +/* 59401 */ {(12<<2)|2,{106,48,0}}, +/* 59402 */ {(12<<2)|2,{106,48,0}}, +/* 59403 */ {(12<<2)|2,{106,48,0}}, +/* 59404 */ {(12<<2)|2,{106,48,0}}, +/* 59405 */ {(12<<2)|2,{106,48,0}}, +/* 59406 */ {(12<<2)|2,{106,48,0}}, +/* 59407 */ {(12<<2)|2,{106,48,0}}, +/* 59408 */ {(12<<2)|2,{106,49,0}}, +/* 59409 */ {(12<<2)|2,{106,49,0}}, +/* 59410 */ {(12<<2)|2,{106,49,0}}, +/* 59411 */ {(12<<2)|2,{106,49,0}}, +/* 59412 */ {(12<<2)|2,{106,49,0}}, +/* 59413 */ {(12<<2)|2,{106,49,0}}, +/* 59414 */ {(12<<2)|2,{106,49,0}}, +/* 59415 */ {(12<<2)|2,{106,49,0}}, +/* 59416 */ {(12<<2)|2,{106,49,0}}, +/* 59417 */ {(12<<2)|2,{106,49,0}}, +/* 59418 */ {(12<<2)|2,{106,49,0}}, +/* 59419 */ {(12<<2)|2,{106,49,0}}, +/* 59420 */ {(12<<2)|2,{106,49,0}}, +/* 59421 */ {(12<<2)|2,{106,49,0}}, +/* 59422 */ {(12<<2)|2,{106,49,0}}, +/* 59423 */ {(12<<2)|2,{106,49,0}}, +/* 59424 */ {(12<<2)|2,{106,50,0}}, +/* 59425 */ {(12<<2)|2,{106,50,0}}, +/* 59426 */ {(12<<2)|2,{106,50,0}}, +/* 59427 */ {(12<<2)|2,{106,50,0}}, +/* 59428 */ {(12<<2)|2,{106,50,0}}, +/* 59429 */ {(12<<2)|2,{106,50,0}}, +/* 59430 */ {(12<<2)|2,{106,50,0}}, +/* 59431 */ {(12<<2)|2,{106,50,0}}, +/* 59432 */ {(12<<2)|2,{106,50,0}}, +/* 59433 */ {(12<<2)|2,{106,50,0}}, +/* 59434 */ {(12<<2)|2,{106,50,0}}, +/* 59435 */ {(12<<2)|2,{106,50,0}}, +/* 59436 */ {(12<<2)|2,{106,50,0}}, +/* 59437 */ {(12<<2)|2,{106,50,0}}, +/* 59438 */ {(12<<2)|2,{106,50,0}}, +/* 59439 */ {(12<<2)|2,{106,50,0}}, +/* 59440 */ {(12<<2)|2,{106,97,0}}, +/* 59441 */ {(12<<2)|2,{106,97,0}}, +/* 59442 */ {(12<<2)|2,{106,97,0}}, +/* 59443 */ {(12<<2)|2,{106,97,0}}, +/* 59444 */ {(12<<2)|2,{106,97,0}}, +/* 59445 */ {(12<<2)|2,{106,97,0}}, +/* 59446 */ {(12<<2)|2,{106,97,0}}, +/* 59447 */ {(12<<2)|2,{106,97,0}}, +/* 59448 */ {(12<<2)|2,{106,97,0}}, +/* 59449 */ {(12<<2)|2,{106,97,0}}, +/* 59450 */ {(12<<2)|2,{106,97,0}}, +/* 59451 */ {(12<<2)|2,{106,97,0}}, +/* 59452 */ {(12<<2)|2,{106,97,0}}, +/* 59453 */ {(12<<2)|2,{106,97,0}}, +/* 59454 */ {(12<<2)|2,{106,97,0}}, +/* 59455 */ {(12<<2)|2,{106,97,0}}, +/* 59456 */ {(12<<2)|2,{106,99,0}}, +/* 59457 */ {(12<<2)|2,{106,99,0}}, +/* 59458 */ {(12<<2)|2,{106,99,0}}, +/* 59459 */ {(12<<2)|2,{106,99,0}}, +/* 59460 */ {(12<<2)|2,{106,99,0}}, +/* 59461 */ {(12<<2)|2,{106,99,0}}, +/* 59462 */ {(12<<2)|2,{106,99,0}}, +/* 59463 */ {(12<<2)|2,{106,99,0}}, +/* 59464 */ {(12<<2)|2,{106,99,0}}, +/* 59465 */ {(12<<2)|2,{106,99,0}}, +/* 59466 */ {(12<<2)|2,{106,99,0}}, +/* 59467 */ {(12<<2)|2,{106,99,0}}, +/* 59468 */ {(12<<2)|2,{106,99,0}}, +/* 59469 */ {(12<<2)|2,{106,99,0}}, +/* 59470 */ {(12<<2)|2,{106,99,0}}, +/* 59471 */ {(12<<2)|2,{106,99,0}}, +/* 59472 */ {(12<<2)|2,{106,101,0}}, +/* 59473 */ {(12<<2)|2,{106,101,0}}, +/* 59474 */ {(12<<2)|2,{106,101,0}}, +/* 59475 */ {(12<<2)|2,{106,101,0}}, +/* 59476 */ {(12<<2)|2,{106,101,0}}, +/* 59477 */ {(12<<2)|2,{106,101,0}}, +/* 59478 */ {(12<<2)|2,{106,101,0}}, +/* 59479 */ {(12<<2)|2,{106,101,0}}, +/* 59480 */ {(12<<2)|2,{106,101,0}}, +/* 59481 */ {(12<<2)|2,{106,101,0}}, +/* 59482 */ {(12<<2)|2,{106,101,0}}, +/* 59483 */ {(12<<2)|2,{106,101,0}}, +/* 59484 */ {(12<<2)|2,{106,101,0}}, +/* 59485 */ {(12<<2)|2,{106,101,0}}, +/* 59486 */ {(12<<2)|2,{106,101,0}}, +/* 59487 */ {(12<<2)|2,{106,101,0}}, +/* 59488 */ {(12<<2)|2,{106,105,0}}, +/* 59489 */ {(12<<2)|2,{106,105,0}}, +/* 59490 */ {(12<<2)|2,{106,105,0}}, +/* 59491 */ {(12<<2)|2,{106,105,0}}, +/* 59492 */ {(12<<2)|2,{106,105,0}}, +/* 59493 */ {(12<<2)|2,{106,105,0}}, +/* 59494 */ {(12<<2)|2,{106,105,0}}, +/* 59495 */ {(12<<2)|2,{106,105,0}}, +/* 59496 */ {(12<<2)|2,{106,105,0}}, +/* 59497 */ {(12<<2)|2,{106,105,0}}, +/* 59498 */ {(12<<2)|2,{106,105,0}}, +/* 59499 */ {(12<<2)|2,{106,105,0}}, +/* 59500 */ {(12<<2)|2,{106,105,0}}, +/* 59501 */ {(12<<2)|2,{106,105,0}}, +/* 59502 */ {(12<<2)|2,{106,105,0}}, +/* 59503 */ {(12<<2)|2,{106,105,0}}, +/* 59504 */ {(12<<2)|2,{106,111,0}}, +/* 59505 */ {(12<<2)|2,{106,111,0}}, +/* 59506 */ {(12<<2)|2,{106,111,0}}, +/* 59507 */ {(12<<2)|2,{106,111,0}}, +/* 59508 */ {(12<<2)|2,{106,111,0}}, +/* 59509 */ {(12<<2)|2,{106,111,0}}, +/* 59510 */ {(12<<2)|2,{106,111,0}}, +/* 59511 */ {(12<<2)|2,{106,111,0}}, +/* 59512 */ {(12<<2)|2,{106,111,0}}, +/* 59513 */ {(12<<2)|2,{106,111,0}}, +/* 59514 */ {(12<<2)|2,{106,111,0}}, +/* 59515 */ {(12<<2)|2,{106,111,0}}, +/* 59516 */ {(12<<2)|2,{106,111,0}}, +/* 59517 */ {(12<<2)|2,{106,111,0}}, +/* 59518 */ {(12<<2)|2,{106,111,0}}, +/* 59519 */ {(12<<2)|2,{106,111,0}}, +/* 59520 */ {(12<<2)|2,{106,115,0}}, +/* 59521 */ {(12<<2)|2,{106,115,0}}, +/* 59522 */ {(12<<2)|2,{106,115,0}}, +/* 59523 */ {(12<<2)|2,{106,115,0}}, +/* 59524 */ {(12<<2)|2,{106,115,0}}, +/* 59525 */ {(12<<2)|2,{106,115,0}}, +/* 59526 */ {(12<<2)|2,{106,115,0}}, +/* 59527 */ {(12<<2)|2,{106,115,0}}, +/* 59528 */ {(12<<2)|2,{106,115,0}}, +/* 59529 */ {(12<<2)|2,{106,115,0}}, +/* 59530 */ {(12<<2)|2,{106,115,0}}, +/* 59531 */ {(12<<2)|2,{106,115,0}}, +/* 59532 */ {(12<<2)|2,{106,115,0}}, +/* 59533 */ {(12<<2)|2,{106,115,0}}, +/* 59534 */ {(12<<2)|2,{106,115,0}}, +/* 59535 */ {(12<<2)|2,{106,115,0}}, +/* 59536 */ {(12<<2)|2,{106,116,0}}, +/* 59537 */ {(12<<2)|2,{106,116,0}}, +/* 59538 */ {(12<<2)|2,{106,116,0}}, +/* 59539 */ {(12<<2)|2,{106,116,0}}, +/* 59540 */ {(12<<2)|2,{106,116,0}}, +/* 59541 */ {(12<<2)|2,{106,116,0}}, +/* 59542 */ {(12<<2)|2,{106,116,0}}, +/* 59543 */ {(12<<2)|2,{106,116,0}}, +/* 59544 */ {(12<<2)|2,{106,116,0}}, +/* 59545 */ {(12<<2)|2,{106,116,0}}, +/* 59546 */ {(12<<2)|2,{106,116,0}}, +/* 59547 */ {(12<<2)|2,{106,116,0}}, +/* 59548 */ {(12<<2)|2,{106,116,0}}, +/* 59549 */ {(12<<2)|2,{106,116,0}}, +/* 59550 */ {(12<<2)|2,{106,116,0}}, +/* 59551 */ {(12<<2)|2,{106,116,0}}, +/* 59552 */ {(13<<2)|2,{106,32,0}}, +/* 59553 */ {(13<<2)|2,{106,32,0}}, +/* 59554 */ {(13<<2)|2,{106,32,0}}, +/* 59555 */ {(13<<2)|2,{106,32,0}}, +/* 59556 */ {(13<<2)|2,{106,32,0}}, +/* 59557 */ {(13<<2)|2,{106,32,0}}, +/* 59558 */ {(13<<2)|2,{106,32,0}}, +/* 59559 */ {(13<<2)|2,{106,32,0}}, +/* 59560 */ {(13<<2)|2,{106,37,0}}, +/* 59561 */ {(13<<2)|2,{106,37,0}}, +/* 59562 */ {(13<<2)|2,{106,37,0}}, +/* 59563 */ {(13<<2)|2,{106,37,0}}, +/* 59564 */ {(13<<2)|2,{106,37,0}}, +/* 59565 */ {(13<<2)|2,{106,37,0}}, +/* 59566 */ {(13<<2)|2,{106,37,0}}, +/* 59567 */ {(13<<2)|2,{106,37,0}}, +/* 59568 */ {(13<<2)|2,{106,45,0}}, +/* 59569 */ {(13<<2)|2,{106,45,0}}, +/* 59570 */ {(13<<2)|2,{106,45,0}}, +/* 59571 */ {(13<<2)|2,{106,45,0}}, +/* 59572 */ {(13<<2)|2,{106,45,0}}, +/* 59573 */ {(13<<2)|2,{106,45,0}}, +/* 59574 */ {(13<<2)|2,{106,45,0}}, +/* 59575 */ {(13<<2)|2,{106,45,0}}, +/* 59576 */ {(13<<2)|2,{106,46,0}}, +/* 59577 */ {(13<<2)|2,{106,46,0}}, +/* 59578 */ {(13<<2)|2,{106,46,0}}, +/* 59579 */ {(13<<2)|2,{106,46,0}}, +/* 59580 */ {(13<<2)|2,{106,46,0}}, +/* 59581 */ {(13<<2)|2,{106,46,0}}, +/* 59582 */ {(13<<2)|2,{106,46,0}}, +/* 59583 */ {(13<<2)|2,{106,46,0}}, +/* 59584 */ {(13<<2)|2,{106,47,0}}, +/* 59585 */ {(13<<2)|2,{106,47,0}}, +/* 59586 */ {(13<<2)|2,{106,47,0}}, +/* 59587 */ {(13<<2)|2,{106,47,0}}, +/* 59588 */ {(13<<2)|2,{106,47,0}}, +/* 59589 */ {(13<<2)|2,{106,47,0}}, +/* 59590 */ {(13<<2)|2,{106,47,0}}, +/* 59591 */ {(13<<2)|2,{106,47,0}}, +/* 59592 */ {(13<<2)|2,{106,51,0}}, +/* 59593 */ {(13<<2)|2,{106,51,0}}, +/* 59594 */ {(13<<2)|2,{106,51,0}}, +/* 59595 */ {(13<<2)|2,{106,51,0}}, +/* 59596 */ {(13<<2)|2,{106,51,0}}, +/* 59597 */ {(13<<2)|2,{106,51,0}}, +/* 59598 */ {(13<<2)|2,{106,51,0}}, +/* 59599 */ {(13<<2)|2,{106,51,0}}, +/* 59600 */ {(13<<2)|2,{106,52,0}}, +/* 59601 */ {(13<<2)|2,{106,52,0}}, +/* 59602 */ {(13<<2)|2,{106,52,0}}, +/* 59603 */ {(13<<2)|2,{106,52,0}}, +/* 59604 */ {(13<<2)|2,{106,52,0}}, +/* 59605 */ {(13<<2)|2,{106,52,0}}, +/* 59606 */ {(13<<2)|2,{106,52,0}}, +/* 59607 */ {(13<<2)|2,{106,52,0}}, +/* 59608 */ {(13<<2)|2,{106,53,0}}, +/* 59609 */ {(13<<2)|2,{106,53,0}}, +/* 59610 */ {(13<<2)|2,{106,53,0}}, +/* 59611 */ {(13<<2)|2,{106,53,0}}, +/* 59612 */ {(13<<2)|2,{106,53,0}}, +/* 59613 */ {(13<<2)|2,{106,53,0}}, +/* 59614 */ {(13<<2)|2,{106,53,0}}, +/* 59615 */ {(13<<2)|2,{106,53,0}}, +/* 59616 */ {(13<<2)|2,{106,54,0}}, +/* 59617 */ {(13<<2)|2,{106,54,0}}, +/* 59618 */ {(13<<2)|2,{106,54,0}}, +/* 59619 */ {(13<<2)|2,{106,54,0}}, +/* 59620 */ {(13<<2)|2,{106,54,0}}, +/* 59621 */ {(13<<2)|2,{106,54,0}}, +/* 59622 */ {(13<<2)|2,{106,54,0}}, +/* 59623 */ {(13<<2)|2,{106,54,0}}, +/* 59624 */ {(13<<2)|2,{106,55,0}}, +/* 59625 */ {(13<<2)|2,{106,55,0}}, +/* 59626 */ {(13<<2)|2,{106,55,0}}, +/* 59627 */ {(13<<2)|2,{106,55,0}}, +/* 59628 */ {(13<<2)|2,{106,55,0}}, +/* 59629 */ {(13<<2)|2,{106,55,0}}, +/* 59630 */ {(13<<2)|2,{106,55,0}}, +/* 59631 */ {(13<<2)|2,{106,55,0}}, +/* 59632 */ {(13<<2)|2,{106,56,0}}, +/* 59633 */ {(13<<2)|2,{106,56,0}}, +/* 59634 */ {(13<<2)|2,{106,56,0}}, +/* 59635 */ {(13<<2)|2,{106,56,0}}, +/* 59636 */ {(13<<2)|2,{106,56,0}}, +/* 59637 */ {(13<<2)|2,{106,56,0}}, +/* 59638 */ {(13<<2)|2,{106,56,0}}, +/* 59639 */ {(13<<2)|2,{106,56,0}}, +/* 59640 */ {(13<<2)|2,{106,57,0}}, +/* 59641 */ {(13<<2)|2,{106,57,0}}, +/* 59642 */ {(13<<2)|2,{106,57,0}}, +/* 59643 */ {(13<<2)|2,{106,57,0}}, +/* 59644 */ {(13<<2)|2,{106,57,0}}, +/* 59645 */ {(13<<2)|2,{106,57,0}}, +/* 59646 */ {(13<<2)|2,{106,57,0}}, +/* 59647 */ {(13<<2)|2,{106,57,0}}, +/* 59648 */ {(13<<2)|2,{106,61,0}}, +/* 59649 */ {(13<<2)|2,{106,61,0}}, +/* 59650 */ {(13<<2)|2,{106,61,0}}, +/* 59651 */ {(13<<2)|2,{106,61,0}}, +/* 59652 */ {(13<<2)|2,{106,61,0}}, +/* 59653 */ {(13<<2)|2,{106,61,0}}, +/* 59654 */ {(13<<2)|2,{106,61,0}}, +/* 59655 */ {(13<<2)|2,{106,61,0}}, +/* 59656 */ {(13<<2)|2,{106,65,0}}, +/* 59657 */ {(13<<2)|2,{106,65,0}}, +/* 59658 */ {(13<<2)|2,{106,65,0}}, +/* 59659 */ {(13<<2)|2,{106,65,0}}, +/* 59660 */ {(13<<2)|2,{106,65,0}}, +/* 59661 */ {(13<<2)|2,{106,65,0}}, +/* 59662 */ {(13<<2)|2,{106,65,0}}, +/* 59663 */ {(13<<2)|2,{106,65,0}}, +/* 59664 */ {(13<<2)|2,{106,95,0}}, +/* 59665 */ {(13<<2)|2,{106,95,0}}, +/* 59666 */ {(13<<2)|2,{106,95,0}}, +/* 59667 */ {(13<<2)|2,{106,95,0}}, +/* 59668 */ {(13<<2)|2,{106,95,0}}, +/* 59669 */ {(13<<2)|2,{106,95,0}}, +/* 59670 */ {(13<<2)|2,{106,95,0}}, +/* 59671 */ {(13<<2)|2,{106,95,0}}, +/* 59672 */ {(13<<2)|2,{106,98,0}}, +/* 59673 */ {(13<<2)|2,{106,98,0}}, +/* 59674 */ {(13<<2)|2,{106,98,0}}, +/* 59675 */ {(13<<2)|2,{106,98,0}}, +/* 59676 */ {(13<<2)|2,{106,98,0}}, +/* 59677 */ {(13<<2)|2,{106,98,0}}, +/* 59678 */ {(13<<2)|2,{106,98,0}}, +/* 59679 */ {(13<<2)|2,{106,98,0}}, +/* 59680 */ {(13<<2)|2,{106,100,0}}, +/* 59681 */ {(13<<2)|2,{106,100,0}}, +/* 59682 */ {(13<<2)|2,{106,100,0}}, +/* 59683 */ {(13<<2)|2,{106,100,0}}, +/* 59684 */ {(13<<2)|2,{106,100,0}}, +/* 59685 */ {(13<<2)|2,{106,100,0}}, +/* 59686 */ {(13<<2)|2,{106,100,0}}, +/* 59687 */ {(13<<2)|2,{106,100,0}}, +/* 59688 */ {(13<<2)|2,{106,102,0}}, +/* 59689 */ {(13<<2)|2,{106,102,0}}, +/* 59690 */ {(13<<2)|2,{106,102,0}}, +/* 59691 */ {(13<<2)|2,{106,102,0}}, +/* 59692 */ {(13<<2)|2,{106,102,0}}, +/* 59693 */ {(13<<2)|2,{106,102,0}}, +/* 59694 */ {(13<<2)|2,{106,102,0}}, +/* 59695 */ {(13<<2)|2,{106,102,0}}, +/* 59696 */ {(13<<2)|2,{106,103,0}}, +/* 59697 */ {(13<<2)|2,{106,103,0}}, +/* 59698 */ {(13<<2)|2,{106,103,0}}, +/* 59699 */ {(13<<2)|2,{106,103,0}}, +/* 59700 */ {(13<<2)|2,{106,103,0}}, +/* 59701 */ {(13<<2)|2,{106,103,0}}, +/* 59702 */ {(13<<2)|2,{106,103,0}}, +/* 59703 */ {(13<<2)|2,{106,103,0}}, +/* 59704 */ {(13<<2)|2,{106,104,0}}, +/* 59705 */ {(13<<2)|2,{106,104,0}}, +/* 59706 */ {(13<<2)|2,{106,104,0}}, +/* 59707 */ {(13<<2)|2,{106,104,0}}, +/* 59708 */ {(13<<2)|2,{106,104,0}}, +/* 59709 */ {(13<<2)|2,{106,104,0}}, +/* 59710 */ {(13<<2)|2,{106,104,0}}, +/* 59711 */ {(13<<2)|2,{106,104,0}}, +/* 59712 */ {(13<<2)|2,{106,108,0}}, +/* 59713 */ {(13<<2)|2,{106,108,0}}, +/* 59714 */ {(13<<2)|2,{106,108,0}}, +/* 59715 */ {(13<<2)|2,{106,108,0}}, +/* 59716 */ {(13<<2)|2,{106,108,0}}, +/* 59717 */ {(13<<2)|2,{106,108,0}}, +/* 59718 */ {(13<<2)|2,{106,108,0}}, +/* 59719 */ {(13<<2)|2,{106,108,0}}, +/* 59720 */ {(13<<2)|2,{106,109,0}}, +/* 59721 */ {(13<<2)|2,{106,109,0}}, +/* 59722 */ {(13<<2)|2,{106,109,0}}, +/* 59723 */ {(13<<2)|2,{106,109,0}}, +/* 59724 */ {(13<<2)|2,{106,109,0}}, +/* 59725 */ {(13<<2)|2,{106,109,0}}, +/* 59726 */ {(13<<2)|2,{106,109,0}}, +/* 59727 */ {(13<<2)|2,{106,109,0}}, +/* 59728 */ {(13<<2)|2,{106,110,0}}, +/* 59729 */ {(13<<2)|2,{106,110,0}}, +/* 59730 */ {(13<<2)|2,{106,110,0}}, +/* 59731 */ {(13<<2)|2,{106,110,0}}, +/* 59732 */ {(13<<2)|2,{106,110,0}}, +/* 59733 */ {(13<<2)|2,{106,110,0}}, +/* 59734 */ {(13<<2)|2,{106,110,0}}, +/* 59735 */ {(13<<2)|2,{106,110,0}}, +/* 59736 */ {(13<<2)|2,{106,112,0}}, +/* 59737 */ {(13<<2)|2,{106,112,0}}, +/* 59738 */ {(13<<2)|2,{106,112,0}}, +/* 59739 */ {(13<<2)|2,{106,112,0}}, +/* 59740 */ {(13<<2)|2,{106,112,0}}, +/* 59741 */ {(13<<2)|2,{106,112,0}}, +/* 59742 */ {(13<<2)|2,{106,112,0}}, +/* 59743 */ {(13<<2)|2,{106,112,0}}, +/* 59744 */ {(13<<2)|2,{106,114,0}}, +/* 59745 */ {(13<<2)|2,{106,114,0}}, +/* 59746 */ {(13<<2)|2,{106,114,0}}, +/* 59747 */ {(13<<2)|2,{106,114,0}}, +/* 59748 */ {(13<<2)|2,{106,114,0}}, +/* 59749 */ {(13<<2)|2,{106,114,0}}, +/* 59750 */ {(13<<2)|2,{106,114,0}}, +/* 59751 */ {(13<<2)|2,{106,114,0}}, +/* 59752 */ {(13<<2)|2,{106,117,0}}, +/* 59753 */ {(13<<2)|2,{106,117,0}}, +/* 59754 */ {(13<<2)|2,{106,117,0}}, +/* 59755 */ {(13<<2)|2,{106,117,0}}, +/* 59756 */ {(13<<2)|2,{106,117,0}}, +/* 59757 */ {(13<<2)|2,{106,117,0}}, +/* 59758 */ {(13<<2)|2,{106,117,0}}, +/* 59759 */ {(13<<2)|2,{106,117,0}}, +/* 59760 */ {(14<<2)|2,{106,58,0}}, +/* 59761 */ {(14<<2)|2,{106,58,0}}, +/* 59762 */ {(14<<2)|2,{106,58,0}}, +/* 59763 */ {(14<<2)|2,{106,58,0}}, +/* 59764 */ {(14<<2)|2,{106,66,0}}, +/* 59765 */ {(14<<2)|2,{106,66,0}}, +/* 59766 */ {(14<<2)|2,{106,66,0}}, +/* 59767 */ {(14<<2)|2,{106,66,0}}, +/* 59768 */ {(14<<2)|2,{106,67,0}}, +/* 59769 */ {(14<<2)|2,{106,67,0}}, +/* 59770 */ {(14<<2)|2,{106,67,0}}, +/* 59771 */ {(14<<2)|2,{106,67,0}}, +/* 59772 */ {(14<<2)|2,{106,68,0}}, +/* 59773 */ {(14<<2)|2,{106,68,0}}, +/* 59774 */ {(14<<2)|2,{106,68,0}}, +/* 59775 */ {(14<<2)|2,{106,68,0}}, +/* 59776 */ {(14<<2)|2,{106,69,0}}, +/* 59777 */ {(14<<2)|2,{106,69,0}}, +/* 59778 */ {(14<<2)|2,{106,69,0}}, +/* 59779 */ {(14<<2)|2,{106,69,0}}, +/* 59780 */ {(14<<2)|2,{106,70,0}}, +/* 59781 */ {(14<<2)|2,{106,70,0}}, +/* 59782 */ {(14<<2)|2,{106,70,0}}, +/* 59783 */ {(14<<2)|2,{106,70,0}}, +/* 59784 */ {(14<<2)|2,{106,71,0}}, +/* 59785 */ {(14<<2)|2,{106,71,0}}, +/* 59786 */ {(14<<2)|2,{106,71,0}}, +/* 59787 */ {(14<<2)|2,{106,71,0}}, +/* 59788 */ {(14<<2)|2,{106,72,0}}, +/* 59789 */ {(14<<2)|2,{106,72,0}}, +/* 59790 */ {(14<<2)|2,{106,72,0}}, +/* 59791 */ {(14<<2)|2,{106,72,0}}, +/* 59792 */ {(14<<2)|2,{106,73,0}}, +/* 59793 */ {(14<<2)|2,{106,73,0}}, +/* 59794 */ {(14<<2)|2,{106,73,0}}, +/* 59795 */ {(14<<2)|2,{106,73,0}}, +/* 59796 */ {(14<<2)|2,{106,74,0}}, +/* 59797 */ {(14<<2)|2,{106,74,0}}, +/* 59798 */ {(14<<2)|2,{106,74,0}}, +/* 59799 */ {(14<<2)|2,{106,74,0}}, +/* 59800 */ {(14<<2)|2,{106,75,0}}, +/* 59801 */ {(14<<2)|2,{106,75,0}}, +/* 59802 */ {(14<<2)|2,{106,75,0}}, +/* 59803 */ {(14<<2)|2,{106,75,0}}, +/* 59804 */ {(14<<2)|2,{106,76,0}}, +/* 59805 */ {(14<<2)|2,{106,76,0}}, +/* 59806 */ {(14<<2)|2,{106,76,0}}, +/* 59807 */ {(14<<2)|2,{106,76,0}}, +/* 59808 */ {(14<<2)|2,{106,77,0}}, +/* 59809 */ {(14<<2)|2,{106,77,0}}, +/* 59810 */ {(14<<2)|2,{106,77,0}}, +/* 59811 */ {(14<<2)|2,{106,77,0}}, +/* 59812 */ {(14<<2)|2,{106,78,0}}, +/* 59813 */ {(14<<2)|2,{106,78,0}}, +/* 59814 */ {(14<<2)|2,{106,78,0}}, +/* 59815 */ {(14<<2)|2,{106,78,0}}, +/* 59816 */ {(14<<2)|2,{106,79,0}}, +/* 59817 */ {(14<<2)|2,{106,79,0}}, +/* 59818 */ {(14<<2)|2,{106,79,0}}, +/* 59819 */ {(14<<2)|2,{106,79,0}}, +/* 59820 */ {(14<<2)|2,{106,80,0}}, +/* 59821 */ {(14<<2)|2,{106,80,0}}, +/* 59822 */ {(14<<2)|2,{106,80,0}}, +/* 59823 */ {(14<<2)|2,{106,80,0}}, +/* 59824 */ {(14<<2)|2,{106,81,0}}, +/* 59825 */ {(14<<2)|2,{106,81,0}}, +/* 59826 */ {(14<<2)|2,{106,81,0}}, +/* 59827 */ {(14<<2)|2,{106,81,0}}, +/* 59828 */ {(14<<2)|2,{106,82,0}}, +/* 59829 */ {(14<<2)|2,{106,82,0}}, +/* 59830 */ {(14<<2)|2,{106,82,0}}, +/* 59831 */ {(14<<2)|2,{106,82,0}}, +/* 59832 */ {(14<<2)|2,{106,83,0}}, +/* 59833 */ {(14<<2)|2,{106,83,0}}, +/* 59834 */ {(14<<2)|2,{106,83,0}}, +/* 59835 */ {(14<<2)|2,{106,83,0}}, +/* 59836 */ {(14<<2)|2,{106,84,0}}, +/* 59837 */ {(14<<2)|2,{106,84,0}}, +/* 59838 */ {(14<<2)|2,{106,84,0}}, +/* 59839 */ {(14<<2)|2,{106,84,0}}, +/* 59840 */ {(14<<2)|2,{106,85,0}}, +/* 59841 */ {(14<<2)|2,{106,85,0}}, +/* 59842 */ {(14<<2)|2,{106,85,0}}, +/* 59843 */ {(14<<2)|2,{106,85,0}}, +/* 59844 */ {(14<<2)|2,{106,86,0}}, +/* 59845 */ {(14<<2)|2,{106,86,0}}, +/* 59846 */ {(14<<2)|2,{106,86,0}}, +/* 59847 */ {(14<<2)|2,{106,86,0}}, +/* 59848 */ {(14<<2)|2,{106,87,0}}, +/* 59849 */ {(14<<2)|2,{106,87,0}}, +/* 59850 */ {(14<<2)|2,{106,87,0}}, +/* 59851 */ {(14<<2)|2,{106,87,0}}, +/* 59852 */ {(14<<2)|2,{106,89,0}}, +/* 59853 */ {(14<<2)|2,{106,89,0}}, +/* 59854 */ {(14<<2)|2,{106,89,0}}, +/* 59855 */ {(14<<2)|2,{106,89,0}}, +/* 59856 */ {(14<<2)|2,{106,106,0}}, +/* 59857 */ {(14<<2)|2,{106,106,0}}, +/* 59858 */ {(14<<2)|2,{106,106,0}}, +/* 59859 */ {(14<<2)|2,{106,106,0}}, +/* 59860 */ {(14<<2)|2,{106,107,0}}, +/* 59861 */ {(14<<2)|2,{106,107,0}}, +/* 59862 */ {(14<<2)|2,{106,107,0}}, +/* 59863 */ {(14<<2)|2,{106,107,0}}, +/* 59864 */ {(14<<2)|2,{106,113,0}}, +/* 59865 */ {(14<<2)|2,{106,113,0}}, +/* 59866 */ {(14<<2)|2,{106,113,0}}, +/* 59867 */ {(14<<2)|2,{106,113,0}}, +/* 59868 */ {(14<<2)|2,{106,118,0}}, +/* 59869 */ {(14<<2)|2,{106,118,0}}, +/* 59870 */ {(14<<2)|2,{106,118,0}}, +/* 59871 */ {(14<<2)|2,{106,118,0}}, +/* 59872 */ {(14<<2)|2,{106,119,0}}, +/* 59873 */ {(14<<2)|2,{106,119,0}}, +/* 59874 */ {(14<<2)|2,{106,119,0}}, +/* 59875 */ {(14<<2)|2,{106,119,0}}, +/* 59876 */ {(14<<2)|2,{106,120,0}}, +/* 59877 */ {(14<<2)|2,{106,120,0}}, +/* 59878 */ {(14<<2)|2,{106,120,0}}, +/* 59879 */ {(14<<2)|2,{106,120,0}}, +/* 59880 */ {(14<<2)|2,{106,121,0}}, +/* 59881 */ {(14<<2)|2,{106,121,0}}, +/* 59882 */ {(14<<2)|2,{106,121,0}}, +/* 59883 */ {(14<<2)|2,{106,121,0}}, +/* 59884 */ {(14<<2)|2,{106,122,0}}, +/* 59885 */ {(14<<2)|2,{106,122,0}}, +/* 59886 */ {(14<<2)|2,{106,122,0}}, +/* 59887 */ {(14<<2)|2,{106,122,0}}, +/* 59888 */ {(15<<2)|2,{106,38,0}}, +/* 59889 */ {(15<<2)|2,{106,38,0}}, +/* 59890 */ {(15<<2)|2,{106,42,0}}, +/* 59891 */ {(15<<2)|2,{106,42,0}}, +/* 59892 */ {(15<<2)|2,{106,44,0}}, +/* 59893 */ {(15<<2)|2,{106,44,0}}, +/* 59894 */ {(15<<2)|2,{106,59,0}}, +/* 59895 */ {(15<<2)|2,{106,59,0}}, +/* 59896 */ {(15<<2)|2,{106,88,0}}, +/* 59897 */ {(15<<2)|2,{106,88,0}}, +/* 59898 */ {(15<<2)|2,{106,90,0}}, +/* 59899 */ {(15<<2)|2,{106,90,0}}, +/* 59900 */ {(7<<2)|1,{106,0,0}}, +/* 59901 */ {(7<<2)|1,{106,0,0}}, +/* 59902 */ {(7<<2)|1,{106,0,0}}, +/* 59903 */ {(7<<2)|1,{106,0,0}}, +/* 59904 */ {(12<<2)|2,{107,48,0}}, +/* 59905 */ {(12<<2)|2,{107,48,0}}, +/* 59906 */ {(12<<2)|2,{107,48,0}}, +/* 59907 */ {(12<<2)|2,{107,48,0}}, +/* 59908 */ {(12<<2)|2,{107,48,0}}, +/* 59909 */ {(12<<2)|2,{107,48,0}}, +/* 59910 */ {(12<<2)|2,{107,48,0}}, +/* 59911 */ {(12<<2)|2,{107,48,0}}, +/* 59912 */ {(12<<2)|2,{107,48,0}}, +/* 59913 */ {(12<<2)|2,{107,48,0}}, +/* 59914 */ {(12<<2)|2,{107,48,0}}, +/* 59915 */ {(12<<2)|2,{107,48,0}}, +/* 59916 */ {(12<<2)|2,{107,48,0}}, +/* 59917 */ {(12<<2)|2,{107,48,0}}, +/* 59918 */ {(12<<2)|2,{107,48,0}}, +/* 59919 */ {(12<<2)|2,{107,48,0}}, +/* 59920 */ {(12<<2)|2,{107,49,0}}, +/* 59921 */ {(12<<2)|2,{107,49,0}}, +/* 59922 */ {(12<<2)|2,{107,49,0}}, +/* 59923 */ {(12<<2)|2,{107,49,0}}, +/* 59924 */ {(12<<2)|2,{107,49,0}}, +/* 59925 */ {(12<<2)|2,{107,49,0}}, +/* 59926 */ {(12<<2)|2,{107,49,0}}, +/* 59927 */ {(12<<2)|2,{107,49,0}}, +/* 59928 */ {(12<<2)|2,{107,49,0}}, +/* 59929 */ {(12<<2)|2,{107,49,0}}, +/* 59930 */ {(12<<2)|2,{107,49,0}}, +/* 59931 */ {(12<<2)|2,{107,49,0}}, +/* 59932 */ {(12<<2)|2,{107,49,0}}, +/* 59933 */ {(12<<2)|2,{107,49,0}}, +/* 59934 */ {(12<<2)|2,{107,49,0}}, +/* 59935 */ {(12<<2)|2,{107,49,0}}, +/* 59936 */ {(12<<2)|2,{107,50,0}}, +/* 59937 */ {(12<<2)|2,{107,50,0}}, +/* 59938 */ {(12<<2)|2,{107,50,0}}, +/* 59939 */ {(12<<2)|2,{107,50,0}}, +/* 59940 */ {(12<<2)|2,{107,50,0}}, +/* 59941 */ {(12<<2)|2,{107,50,0}}, +/* 59942 */ {(12<<2)|2,{107,50,0}}, +/* 59943 */ {(12<<2)|2,{107,50,0}}, +/* 59944 */ {(12<<2)|2,{107,50,0}}, +/* 59945 */ {(12<<2)|2,{107,50,0}}, +/* 59946 */ {(12<<2)|2,{107,50,0}}, +/* 59947 */ {(12<<2)|2,{107,50,0}}, +/* 59948 */ {(12<<2)|2,{107,50,0}}, +/* 59949 */ {(12<<2)|2,{107,50,0}}, +/* 59950 */ {(12<<2)|2,{107,50,0}}, +/* 59951 */ {(12<<2)|2,{107,50,0}}, +/* 59952 */ {(12<<2)|2,{107,97,0}}, +/* 59953 */ {(12<<2)|2,{107,97,0}}, +/* 59954 */ {(12<<2)|2,{107,97,0}}, +/* 59955 */ {(12<<2)|2,{107,97,0}}, +/* 59956 */ {(12<<2)|2,{107,97,0}}, +/* 59957 */ {(12<<2)|2,{107,97,0}}, +/* 59958 */ {(12<<2)|2,{107,97,0}}, +/* 59959 */ {(12<<2)|2,{107,97,0}}, +/* 59960 */ {(12<<2)|2,{107,97,0}}, +/* 59961 */ {(12<<2)|2,{107,97,0}}, +/* 59962 */ {(12<<2)|2,{107,97,0}}, +/* 59963 */ {(12<<2)|2,{107,97,0}}, +/* 59964 */ {(12<<2)|2,{107,97,0}}, +/* 59965 */ {(12<<2)|2,{107,97,0}}, +/* 59966 */ {(12<<2)|2,{107,97,0}}, +/* 59967 */ {(12<<2)|2,{107,97,0}}, +/* 59968 */ {(12<<2)|2,{107,99,0}}, +/* 59969 */ {(12<<2)|2,{107,99,0}}, +/* 59970 */ {(12<<2)|2,{107,99,0}}, +/* 59971 */ {(12<<2)|2,{107,99,0}}, +/* 59972 */ {(12<<2)|2,{107,99,0}}, +/* 59973 */ {(12<<2)|2,{107,99,0}}, +/* 59974 */ {(12<<2)|2,{107,99,0}}, +/* 59975 */ {(12<<2)|2,{107,99,0}}, +/* 59976 */ {(12<<2)|2,{107,99,0}}, +/* 59977 */ {(12<<2)|2,{107,99,0}}, +/* 59978 */ {(12<<2)|2,{107,99,0}}, +/* 59979 */ {(12<<2)|2,{107,99,0}}, +/* 59980 */ {(12<<2)|2,{107,99,0}}, +/* 59981 */ {(12<<2)|2,{107,99,0}}, +/* 59982 */ {(12<<2)|2,{107,99,0}}, +/* 59983 */ {(12<<2)|2,{107,99,0}}, +/* 59984 */ {(12<<2)|2,{107,101,0}}, +/* 59985 */ {(12<<2)|2,{107,101,0}}, +/* 59986 */ {(12<<2)|2,{107,101,0}}, +/* 59987 */ {(12<<2)|2,{107,101,0}}, +/* 59988 */ {(12<<2)|2,{107,101,0}}, +/* 59989 */ {(12<<2)|2,{107,101,0}}, +/* 59990 */ {(12<<2)|2,{107,101,0}}, +/* 59991 */ {(12<<2)|2,{107,101,0}}, +/* 59992 */ {(12<<2)|2,{107,101,0}}, +/* 59993 */ {(12<<2)|2,{107,101,0}}, +/* 59994 */ {(12<<2)|2,{107,101,0}}, +/* 59995 */ {(12<<2)|2,{107,101,0}}, +/* 59996 */ {(12<<2)|2,{107,101,0}}, +/* 59997 */ {(12<<2)|2,{107,101,0}}, +/* 59998 */ {(12<<2)|2,{107,101,0}}, +/* 59999 */ {(12<<2)|2,{107,101,0}}, +/* 60000 */ {(12<<2)|2,{107,105,0}}, +/* 60001 */ {(12<<2)|2,{107,105,0}}, +/* 60002 */ {(12<<2)|2,{107,105,0}}, +/* 60003 */ {(12<<2)|2,{107,105,0}}, +/* 60004 */ {(12<<2)|2,{107,105,0}}, +/* 60005 */ {(12<<2)|2,{107,105,0}}, +/* 60006 */ {(12<<2)|2,{107,105,0}}, +/* 60007 */ {(12<<2)|2,{107,105,0}}, +/* 60008 */ {(12<<2)|2,{107,105,0}}, +/* 60009 */ {(12<<2)|2,{107,105,0}}, +/* 60010 */ {(12<<2)|2,{107,105,0}}, +/* 60011 */ {(12<<2)|2,{107,105,0}}, +/* 60012 */ {(12<<2)|2,{107,105,0}}, +/* 60013 */ {(12<<2)|2,{107,105,0}}, +/* 60014 */ {(12<<2)|2,{107,105,0}}, +/* 60015 */ {(12<<2)|2,{107,105,0}}, +/* 60016 */ {(12<<2)|2,{107,111,0}}, +/* 60017 */ {(12<<2)|2,{107,111,0}}, +/* 60018 */ {(12<<2)|2,{107,111,0}}, +/* 60019 */ {(12<<2)|2,{107,111,0}}, +/* 60020 */ {(12<<2)|2,{107,111,0}}, +/* 60021 */ {(12<<2)|2,{107,111,0}}, +/* 60022 */ {(12<<2)|2,{107,111,0}}, +/* 60023 */ {(12<<2)|2,{107,111,0}}, +/* 60024 */ {(12<<2)|2,{107,111,0}}, +/* 60025 */ {(12<<2)|2,{107,111,0}}, +/* 60026 */ {(12<<2)|2,{107,111,0}}, +/* 60027 */ {(12<<2)|2,{107,111,0}}, +/* 60028 */ {(12<<2)|2,{107,111,0}}, +/* 60029 */ {(12<<2)|2,{107,111,0}}, +/* 60030 */ {(12<<2)|2,{107,111,0}}, +/* 60031 */ {(12<<2)|2,{107,111,0}}, +/* 60032 */ {(12<<2)|2,{107,115,0}}, +/* 60033 */ {(12<<2)|2,{107,115,0}}, +/* 60034 */ {(12<<2)|2,{107,115,0}}, +/* 60035 */ {(12<<2)|2,{107,115,0}}, +/* 60036 */ {(12<<2)|2,{107,115,0}}, +/* 60037 */ {(12<<2)|2,{107,115,0}}, +/* 60038 */ {(12<<2)|2,{107,115,0}}, +/* 60039 */ {(12<<2)|2,{107,115,0}}, +/* 60040 */ {(12<<2)|2,{107,115,0}}, +/* 60041 */ {(12<<2)|2,{107,115,0}}, +/* 60042 */ {(12<<2)|2,{107,115,0}}, +/* 60043 */ {(12<<2)|2,{107,115,0}}, +/* 60044 */ {(12<<2)|2,{107,115,0}}, +/* 60045 */ {(12<<2)|2,{107,115,0}}, +/* 60046 */ {(12<<2)|2,{107,115,0}}, +/* 60047 */ {(12<<2)|2,{107,115,0}}, +/* 60048 */ {(12<<2)|2,{107,116,0}}, +/* 60049 */ {(12<<2)|2,{107,116,0}}, +/* 60050 */ {(12<<2)|2,{107,116,0}}, +/* 60051 */ {(12<<2)|2,{107,116,0}}, +/* 60052 */ {(12<<2)|2,{107,116,0}}, +/* 60053 */ {(12<<2)|2,{107,116,0}}, +/* 60054 */ {(12<<2)|2,{107,116,0}}, +/* 60055 */ {(12<<2)|2,{107,116,0}}, +/* 60056 */ {(12<<2)|2,{107,116,0}}, +/* 60057 */ {(12<<2)|2,{107,116,0}}, +/* 60058 */ {(12<<2)|2,{107,116,0}}, +/* 60059 */ {(12<<2)|2,{107,116,0}}, +/* 60060 */ {(12<<2)|2,{107,116,0}}, +/* 60061 */ {(12<<2)|2,{107,116,0}}, +/* 60062 */ {(12<<2)|2,{107,116,0}}, +/* 60063 */ {(12<<2)|2,{107,116,0}}, +/* 60064 */ {(13<<2)|2,{107,32,0}}, +/* 60065 */ {(13<<2)|2,{107,32,0}}, +/* 60066 */ {(13<<2)|2,{107,32,0}}, +/* 60067 */ {(13<<2)|2,{107,32,0}}, +/* 60068 */ {(13<<2)|2,{107,32,0}}, +/* 60069 */ {(13<<2)|2,{107,32,0}}, +/* 60070 */ {(13<<2)|2,{107,32,0}}, +/* 60071 */ {(13<<2)|2,{107,32,0}}, +/* 60072 */ {(13<<2)|2,{107,37,0}}, +/* 60073 */ {(13<<2)|2,{107,37,0}}, +/* 60074 */ {(13<<2)|2,{107,37,0}}, +/* 60075 */ {(13<<2)|2,{107,37,0}}, +/* 60076 */ {(13<<2)|2,{107,37,0}}, +/* 60077 */ {(13<<2)|2,{107,37,0}}, +/* 60078 */ {(13<<2)|2,{107,37,0}}, +/* 60079 */ {(13<<2)|2,{107,37,0}}, +/* 60080 */ {(13<<2)|2,{107,45,0}}, +/* 60081 */ {(13<<2)|2,{107,45,0}}, +/* 60082 */ {(13<<2)|2,{107,45,0}}, +/* 60083 */ {(13<<2)|2,{107,45,0}}, +/* 60084 */ {(13<<2)|2,{107,45,0}}, +/* 60085 */ {(13<<2)|2,{107,45,0}}, +/* 60086 */ {(13<<2)|2,{107,45,0}}, +/* 60087 */ {(13<<2)|2,{107,45,0}}, +/* 60088 */ {(13<<2)|2,{107,46,0}}, +/* 60089 */ {(13<<2)|2,{107,46,0}}, +/* 60090 */ {(13<<2)|2,{107,46,0}}, +/* 60091 */ {(13<<2)|2,{107,46,0}}, +/* 60092 */ {(13<<2)|2,{107,46,0}}, +/* 60093 */ {(13<<2)|2,{107,46,0}}, +/* 60094 */ {(13<<2)|2,{107,46,0}}, +/* 60095 */ {(13<<2)|2,{107,46,0}}, +/* 60096 */ {(13<<2)|2,{107,47,0}}, +/* 60097 */ {(13<<2)|2,{107,47,0}}, +/* 60098 */ {(13<<2)|2,{107,47,0}}, +/* 60099 */ {(13<<2)|2,{107,47,0}}, +/* 60100 */ {(13<<2)|2,{107,47,0}}, +/* 60101 */ {(13<<2)|2,{107,47,0}}, +/* 60102 */ {(13<<2)|2,{107,47,0}}, +/* 60103 */ {(13<<2)|2,{107,47,0}}, +/* 60104 */ {(13<<2)|2,{107,51,0}}, +/* 60105 */ {(13<<2)|2,{107,51,0}}, +/* 60106 */ {(13<<2)|2,{107,51,0}}, +/* 60107 */ {(13<<2)|2,{107,51,0}}, +/* 60108 */ {(13<<2)|2,{107,51,0}}, +/* 60109 */ {(13<<2)|2,{107,51,0}}, +/* 60110 */ {(13<<2)|2,{107,51,0}}, +/* 60111 */ {(13<<2)|2,{107,51,0}}, +/* 60112 */ {(13<<2)|2,{107,52,0}}, +/* 60113 */ {(13<<2)|2,{107,52,0}}, +/* 60114 */ {(13<<2)|2,{107,52,0}}, +/* 60115 */ {(13<<2)|2,{107,52,0}}, +/* 60116 */ {(13<<2)|2,{107,52,0}}, +/* 60117 */ {(13<<2)|2,{107,52,0}}, +/* 60118 */ {(13<<2)|2,{107,52,0}}, +/* 60119 */ {(13<<2)|2,{107,52,0}}, +/* 60120 */ {(13<<2)|2,{107,53,0}}, +/* 60121 */ {(13<<2)|2,{107,53,0}}, +/* 60122 */ {(13<<2)|2,{107,53,0}}, +/* 60123 */ {(13<<2)|2,{107,53,0}}, +/* 60124 */ {(13<<2)|2,{107,53,0}}, +/* 60125 */ {(13<<2)|2,{107,53,0}}, +/* 60126 */ {(13<<2)|2,{107,53,0}}, +/* 60127 */ {(13<<2)|2,{107,53,0}}, +/* 60128 */ {(13<<2)|2,{107,54,0}}, +/* 60129 */ {(13<<2)|2,{107,54,0}}, +/* 60130 */ {(13<<2)|2,{107,54,0}}, +/* 60131 */ {(13<<2)|2,{107,54,0}}, +/* 60132 */ {(13<<2)|2,{107,54,0}}, +/* 60133 */ {(13<<2)|2,{107,54,0}}, +/* 60134 */ {(13<<2)|2,{107,54,0}}, +/* 60135 */ {(13<<2)|2,{107,54,0}}, +/* 60136 */ {(13<<2)|2,{107,55,0}}, +/* 60137 */ {(13<<2)|2,{107,55,0}}, +/* 60138 */ {(13<<2)|2,{107,55,0}}, +/* 60139 */ {(13<<2)|2,{107,55,0}}, +/* 60140 */ {(13<<2)|2,{107,55,0}}, +/* 60141 */ {(13<<2)|2,{107,55,0}}, +/* 60142 */ {(13<<2)|2,{107,55,0}}, +/* 60143 */ {(13<<2)|2,{107,55,0}}, +/* 60144 */ {(13<<2)|2,{107,56,0}}, +/* 60145 */ {(13<<2)|2,{107,56,0}}, +/* 60146 */ {(13<<2)|2,{107,56,0}}, +/* 60147 */ {(13<<2)|2,{107,56,0}}, +/* 60148 */ {(13<<2)|2,{107,56,0}}, +/* 60149 */ {(13<<2)|2,{107,56,0}}, +/* 60150 */ {(13<<2)|2,{107,56,0}}, +/* 60151 */ {(13<<2)|2,{107,56,0}}, +/* 60152 */ {(13<<2)|2,{107,57,0}}, +/* 60153 */ {(13<<2)|2,{107,57,0}}, +/* 60154 */ {(13<<2)|2,{107,57,0}}, +/* 60155 */ {(13<<2)|2,{107,57,0}}, +/* 60156 */ {(13<<2)|2,{107,57,0}}, +/* 60157 */ {(13<<2)|2,{107,57,0}}, +/* 60158 */ {(13<<2)|2,{107,57,0}}, +/* 60159 */ {(13<<2)|2,{107,57,0}}, +/* 60160 */ {(13<<2)|2,{107,61,0}}, +/* 60161 */ {(13<<2)|2,{107,61,0}}, +/* 60162 */ {(13<<2)|2,{107,61,0}}, +/* 60163 */ {(13<<2)|2,{107,61,0}}, +/* 60164 */ {(13<<2)|2,{107,61,0}}, +/* 60165 */ {(13<<2)|2,{107,61,0}}, +/* 60166 */ {(13<<2)|2,{107,61,0}}, +/* 60167 */ {(13<<2)|2,{107,61,0}}, +/* 60168 */ {(13<<2)|2,{107,65,0}}, +/* 60169 */ {(13<<2)|2,{107,65,0}}, +/* 60170 */ {(13<<2)|2,{107,65,0}}, +/* 60171 */ {(13<<2)|2,{107,65,0}}, +/* 60172 */ {(13<<2)|2,{107,65,0}}, +/* 60173 */ {(13<<2)|2,{107,65,0}}, +/* 60174 */ {(13<<2)|2,{107,65,0}}, +/* 60175 */ {(13<<2)|2,{107,65,0}}, +/* 60176 */ {(13<<2)|2,{107,95,0}}, +/* 60177 */ {(13<<2)|2,{107,95,0}}, +/* 60178 */ {(13<<2)|2,{107,95,0}}, +/* 60179 */ {(13<<2)|2,{107,95,0}}, +/* 60180 */ {(13<<2)|2,{107,95,0}}, +/* 60181 */ {(13<<2)|2,{107,95,0}}, +/* 60182 */ {(13<<2)|2,{107,95,0}}, +/* 60183 */ {(13<<2)|2,{107,95,0}}, +/* 60184 */ {(13<<2)|2,{107,98,0}}, +/* 60185 */ {(13<<2)|2,{107,98,0}}, +/* 60186 */ {(13<<2)|2,{107,98,0}}, +/* 60187 */ {(13<<2)|2,{107,98,0}}, +/* 60188 */ {(13<<2)|2,{107,98,0}}, +/* 60189 */ {(13<<2)|2,{107,98,0}}, +/* 60190 */ {(13<<2)|2,{107,98,0}}, +/* 60191 */ {(13<<2)|2,{107,98,0}}, +/* 60192 */ {(13<<2)|2,{107,100,0}}, +/* 60193 */ {(13<<2)|2,{107,100,0}}, +/* 60194 */ {(13<<2)|2,{107,100,0}}, +/* 60195 */ {(13<<2)|2,{107,100,0}}, +/* 60196 */ {(13<<2)|2,{107,100,0}}, +/* 60197 */ {(13<<2)|2,{107,100,0}}, +/* 60198 */ {(13<<2)|2,{107,100,0}}, +/* 60199 */ {(13<<2)|2,{107,100,0}}, +/* 60200 */ {(13<<2)|2,{107,102,0}}, +/* 60201 */ {(13<<2)|2,{107,102,0}}, +/* 60202 */ {(13<<2)|2,{107,102,0}}, +/* 60203 */ {(13<<2)|2,{107,102,0}}, +/* 60204 */ {(13<<2)|2,{107,102,0}}, +/* 60205 */ {(13<<2)|2,{107,102,0}}, +/* 60206 */ {(13<<2)|2,{107,102,0}}, +/* 60207 */ {(13<<2)|2,{107,102,0}}, +/* 60208 */ {(13<<2)|2,{107,103,0}}, +/* 60209 */ {(13<<2)|2,{107,103,0}}, +/* 60210 */ {(13<<2)|2,{107,103,0}}, +/* 60211 */ {(13<<2)|2,{107,103,0}}, +/* 60212 */ {(13<<2)|2,{107,103,0}}, +/* 60213 */ {(13<<2)|2,{107,103,0}}, +/* 60214 */ {(13<<2)|2,{107,103,0}}, +/* 60215 */ {(13<<2)|2,{107,103,0}}, +/* 60216 */ {(13<<2)|2,{107,104,0}}, +/* 60217 */ {(13<<2)|2,{107,104,0}}, +/* 60218 */ {(13<<2)|2,{107,104,0}}, +/* 60219 */ {(13<<2)|2,{107,104,0}}, +/* 60220 */ {(13<<2)|2,{107,104,0}}, +/* 60221 */ {(13<<2)|2,{107,104,0}}, +/* 60222 */ {(13<<2)|2,{107,104,0}}, +/* 60223 */ {(13<<2)|2,{107,104,0}}, +/* 60224 */ {(13<<2)|2,{107,108,0}}, +/* 60225 */ {(13<<2)|2,{107,108,0}}, +/* 60226 */ {(13<<2)|2,{107,108,0}}, +/* 60227 */ {(13<<2)|2,{107,108,0}}, +/* 60228 */ {(13<<2)|2,{107,108,0}}, +/* 60229 */ {(13<<2)|2,{107,108,0}}, +/* 60230 */ {(13<<2)|2,{107,108,0}}, +/* 60231 */ {(13<<2)|2,{107,108,0}}, +/* 60232 */ {(13<<2)|2,{107,109,0}}, +/* 60233 */ {(13<<2)|2,{107,109,0}}, +/* 60234 */ {(13<<2)|2,{107,109,0}}, +/* 60235 */ {(13<<2)|2,{107,109,0}}, +/* 60236 */ {(13<<2)|2,{107,109,0}}, +/* 60237 */ {(13<<2)|2,{107,109,0}}, +/* 60238 */ {(13<<2)|2,{107,109,0}}, +/* 60239 */ {(13<<2)|2,{107,109,0}}, +/* 60240 */ {(13<<2)|2,{107,110,0}}, +/* 60241 */ {(13<<2)|2,{107,110,0}}, +/* 60242 */ {(13<<2)|2,{107,110,0}}, +/* 60243 */ {(13<<2)|2,{107,110,0}}, +/* 60244 */ {(13<<2)|2,{107,110,0}}, +/* 60245 */ {(13<<2)|2,{107,110,0}}, +/* 60246 */ {(13<<2)|2,{107,110,0}}, +/* 60247 */ {(13<<2)|2,{107,110,0}}, +/* 60248 */ {(13<<2)|2,{107,112,0}}, +/* 60249 */ {(13<<2)|2,{107,112,0}}, +/* 60250 */ {(13<<2)|2,{107,112,0}}, +/* 60251 */ {(13<<2)|2,{107,112,0}}, +/* 60252 */ {(13<<2)|2,{107,112,0}}, +/* 60253 */ {(13<<2)|2,{107,112,0}}, +/* 60254 */ {(13<<2)|2,{107,112,0}}, +/* 60255 */ {(13<<2)|2,{107,112,0}}, +/* 60256 */ {(13<<2)|2,{107,114,0}}, +/* 60257 */ {(13<<2)|2,{107,114,0}}, +/* 60258 */ {(13<<2)|2,{107,114,0}}, +/* 60259 */ {(13<<2)|2,{107,114,0}}, +/* 60260 */ {(13<<2)|2,{107,114,0}}, +/* 60261 */ {(13<<2)|2,{107,114,0}}, +/* 60262 */ {(13<<2)|2,{107,114,0}}, +/* 60263 */ {(13<<2)|2,{107,114,0}}, +/* 60264 */ {(13<<2)|2,{107,117,0}}, +/* 60265 */ {(13<<2)|2,{107,117,0}}, +/* 60266 */ {(13<<2)|2,{107,117,0}}, +/* 60267 */ {(13<<2)|2,{107,117,0}}, +/* 60268 */ {(13<<2)|2,{107,117,0}}, +/* 60269 */ {(13<<2)|2,{107,117,0}}, +/* 60270 */ {(13<<2)|2,{107,117,0}}, +/* 60271 */ {(13<<2)|2,{107,117,0}}, +/* 60272 */ {(14<<2)|2,{107,58,0}}, +/* 60273 */ {(14<<2)|2,{107,58,0}}, +/* 60274 */ {(14<<2)|2,{107,58,0}}, +/* 60275 */ {(14<<2)|2,{107,58,0}}, +/* 60276 */ {(14<<2)|2,{107,66,0}}, +/* 60277 */ {(14<<2)|2,{107,66,0}}, +/* 60278 */ {(14<<2)|2,{107,66,0}}, +/* 60279 */ {(14<<2)|2,{107,66,0}}, +/* 60280 */ {(14<<2)|2,{107,67,0}}, +/* 60281 */ {(14<<2)|2,{107,67,0}}, +/* 60282 */ {(14<<2)|2,{107,67,0}}, +/* 60283 */ {(14<<2)|2,{107,67,0}}, +/* 60284 */ {(14<<2)|2,{107,68,0}}, +/* 60285 */ {(14<<2)|2,{107,68,0}}, +/* 60286 */ {(14<<2)|2,{107,68,0}}, +/* 60287 */ {(14<<2)|2,{107,68,0}}, +/* 60288 */ {(14<<2)|2,{107,69,0}}, +/* 60289 */ {(14<<2)|2,{107,69,0}}, +/* 60290 */ {(14<<2)|2,{107,69,0}}, +/* 60291 */ {(14<<2)|2,{107,69,0}}, +/* 60292 */ {(14<<2)|2,{107,70,0}}, +/* 60293 */ {(14<<2)|2,{107,70,0}}, +/* 60294 */ {(14<<2)|2,{107,70,0}}, +/* 60295 */ {(14<<2)|2,{107,70,0}}, +/* 60296 */ {(14<<2)|2,{107,71,0}}, +/* 60297 */ {(14<<2)|2,{107,71,0}}, +/* 60298 */ {(14<<2)|2,{107,71,0}}, +/* 60299 */ {(14<<2)|2,{107,71,0}}, +/* 60300 */ {(14<<2)|2,{107,72,0}}, +/* 60301 */ {(14<<2)|2,{107,72,0}}, +/* 60302 */ {(14<<2)|2,{107,72,0}}, +/* 60303 */ {(14<<2)|2,{107,72,0}}, +/* 60304 */ {(14<<2)|2,{107,73,0}}, +/* 60305 */ {(14<<2)|2,{107,73,0}}, +/* 60306 */ {(14<<2)|2,{107,73,0}}, +/* 60307 */ {(14<<2)|2,{107,73,0}}, +/* 60308 */ {(14<<2)|2,{107,74,0}}, +/* 60309 */ {(14<<2)|2,{107,74,0}}, +/* 60310 */ {(14<<2)|2,{107,74,0}}, +/* 60311 */ {(14<<2)|2,{107,74,0}}, +/* 60312 */ {(14<<2)|2,{107,75,0}}, +/* 60313 */ {(14<<2)|2,{107,75,0}}, +/* 60314 */ {(14<<2)|2,{107,75,0}}, +/* 60315 */ {(14<<2)|2,{107,75,0}}, +/* 60316 */ {(14<<2)|2,{107,76,0}}, +/* 60317 */ {(14<<2)|2,{107,76,0}}, +/* 60318 */ {(14<<2)|2,{107,76,0}}, +/* 60319 */ {(14<<2)|2,{107,76,0}}, +/* 60320 */ {(14<<2)|2,{107,77,0}}, +/* 60321 */ {(14<<2)|2,{107,77,0}}, +/* 60322 */ {(14<<2)|2,{107,77,0}}, +/* 60323 */ {(14<<2)|2,{107,77,0}}, +/* 60324 */ {(14<<2)|2,{107,78,0}}, +/* 60325 */ {(14<<2)|2,{107,78,0}}, +/* 60326 */ {(14<<2)|2,{107,78,0}}, +/* 60327 */ {(14<<2)|2,{107,78,0}}, +/* 60328 */ {(14<<2)|2,{107,79,0}}, +/* 60329 */ {(14<<2)|2,{107,79,0}}, +/* 60330 */ {(14<<2)|2,{107,79,0}}, +/* 60331 */ {(14<<2)|2,{107,79,0}}, +/* 60332 */ {(14<<2)|2,{107,80,0}}, +/* 60333 */ {(14<<2)|2,{107,80,0}}, +/* 60334 */ {(14<<2)|2,{107,80,0}}, +/* 60335 */ {(14<<2)|2,{107,80,0}}, +/* 60336 */ {(14<<2)|2,{107,81,0}}, +/* 60337 */ {(14<<2)|2,{107,81,0}}, +/* 60338 */ {(14<<2)|2,{107,81,0}}, +/* 60339 */ {(14<<2)|2,{107,81,0}}, +/* 60340 */ {(14<<2)|2,{107,82,0}}, +/* 60341 */ {(14<<2)|2,{107,82,0}}, +/* 60342 */ {(14<<2)|2,{107,82,0}}, +/* 60343 */ {(14<<2)|2,{107,82,0}}, +/* 60344 */ {(14<<2)|2,{107,83,0}}, +/* 60345 */ {(14<<2)|2,{107,83,0}}, +/* 60346 */ {(14<<2)|2,{107,83,0}}, +/* 60347 */ {(14<<2)|2,{107,83,0}}, +/* 60348 */ {(14<<2)|2,{107,84,0}}, +/* 60349 */ {(14<<2)|2,{107,84,0}}, +/* 60350 */ {(14<<2)|2,{107,84,0}}, +/* 60351 */ {(14<<2)|2,{107,84,0}}, +/* 60352 */ {(14<<2)|2,{107,85,0}}, +/* 60353 */ {(14<<2)|2,{107,85,0}}, +/* 60354 */ {(14<<2)|2,{107,85,0}}, +/* 60355 */ {(14<<2)|2,{107,85,0}}, +/* 60356 */ {(14<<2)|2,{107,86,0}}, +/* 60357 */ {(14<<2)|2,{107,86,0}}, +/* 60358 */ {(14<<2)|2,{107,86,0}}, +/* 60359 */ {(14<<2)|2,{107,86,0}}, +/* 60360 */ {(14<<2)|2,{107,87,0}}, +/* 60361 */ {(14<<2)|2,{107,87,0}}, +/* 60362 */ {(14<<2)|2,{107,87,0}}, +/* 60363 */ {(14<<2)|2,{107,87,0}}, +/* 60364 */ {(14<<2)|2,{107,89,0}}, +/* 60365 */ {(14<<2)|2,{107,89,0}}, +/* 60366 */ {(14<<2)|2,{107,89,0}}, +/* 60367 */ {(14<<2)|2,{107,89,0}}, +/* 60368 */ {(14<<2)|2,{107,106,0}}, +/* 60369 */ {(14<<2)|2,{107,106,0}}, +/* 60370 */ {(14<<2)|2,{107,106,0}}, +/* 60371 */ {(14<<2)|2,{107,106,0}}, +/* 60372 */ {(14<<2)|2,{107,107,0}}, +/* 60373 */ {(14<<2)|2,{107,107,0}}, +/* 60374 */ {(14<<2)|2,{107,107,0}}, +/* 60375 */ {(14<<2)|2,{107,107,0}}, +/* 60376 */ {(14<<2)|2,{107,113,0}}, +/* 60377 */ {(14<<2)|2,{107,113,0}}, +/* 60378 */ {(14<<2)|2,{107,113,0}}, +/* 60379 */ {(14<<2)|2,{107,113,0}}, +/* 60380 */ {(14<<2)|2,{107,118,0}}, +/* 60381 */ {(14<<2)|2,{107,118,0}}, +/* 60382 */ {(14<<2)|2,{107,118,0}}, +/* 60383 */ {(14<<2)|2,{107,118,0}}, +/* 60384 */ {(14<<2)|2,{107,119,0}}, +/* 60385 */ {(14<<2)|2,{107,119,0}}, +/* 60386 */ {(14<<2)|2,{107,119,0}}, +/* 60387 */ {(14<<2)|2,{107,119,0}}, +/* 60388 */ {(14<<2)|2,{107,120,0}}, +/* 60389 */ {(14<<2)|2,{107,120,0}}, +/* 60390 */ {(14<<2)|2,{107,120,0}}, +/* 60391 */ {(14<<2)|2,{107,120,0}}, +/* 60392 */ {(14<<2)|2,{107,121,0}}, +/* 60393 */ {(14<<2)|2,{107,121,0}}, +/* 60394 */ {(14<<2)|2,{107,121,0}}, +/* 60395 */ {(14<<2)|2,{107,121,0}}, +/* 60396 */ {(14<<2)|2,{107,122,0}}, +/* 60397 */ {(14<<2)|2,{107,122,0}}, +/* 60398 */ {(14<<2)|2,{107,122,0}}, +/* 60399 */ {(14<<2)|2,{107,122,0}}, +/* 60400 */ {(15<<2)|2,{107,38,0}}, +/* 60401 */ {(15<<2)|2,{107,38,0}}, +/* 60402 */ {(15<<2)|2,{107,42,0}}, +/* 60403 */ {(15<<2)|2,{107,42,0}}, +/* 60404 */ {(15<<2)|2,{107,44,0}}, +/* 60405 */ {(15<<2)|2,{107,44,0}}, +/* 60406 */ {(15<<2)|2,{107,59,0}}, +/* 60407 */ {(15<<2)|2,{107,59,0}}, +/* 60408 */ {(15<<2)|2,{107,88,0}}, +/* 60409 */ {(15<<2)|2,{107,88,0}}, +/* 60410 */ {(15<<2)|2,{107,90,0}}, +/* 60411 */ {(15<<2)|2,{107,90,0}}, +/* 60412 */ {(7<<2)|1,{107,0,0}}, +/* 60413 */ {(7<<2)|1,{107,0,0}}, +/* 60414 */ {(7<<2)|1,{107,0,0}}, +/* 60415 */ {(7<<2)|1,{107,0,0}}, +/* 60416 */ {(12<<2)|2,{113,48,0}}, +/* 60417 */ {(12<<2)|2,{113,48,0}}, +/* 60418 */ {(12<<2)|2,{113,48,0}}, +/* 60419 */ {(12<<2)|2,{113,48,0}}, +/* 60420 */ {(12<<2)|2,{113,48,0}}, +/* 60421 */ {(12<<2)|2,{113,48,0}}, +/* 60422 */ {(12<<2)|2,{113,48,0}}, +/* 60423 */ {(12<<2)|2,{113,48,0}}, +/* 60424 */ {(12<<2)|2,{113,48,0}}, +/* 60425 */ {(12<<2)|2,{113,48,0}}, +/* 60426 */ {(12<<2)|2,{113,48,0}}, +/* 60427 */ {(12<<2)|2,{113,48,0}}, +/* 60428 */ {(12<<2)|2,{113,48,0}}, +/* 60429 */ {(12<<2)|2,{113,48,0}}, +/* 60430 */ {(12<<2)|2,{113,48,0}}, +/* 60431 */ {(12<<2)|2,{113,48,0}}, +/* 60432 */ {(12<<2)|2,{113,49,0}}, +/* 60433 */ {(12<<2)|2,{113,49,0}}, +/* 60434 */ {(12<<2)|2,{113,49,0}}, +/* 60435 */ {(12<<2)|2,{113,49,0}}, +/* 60436 */ {(12<<2)|2,{113,49,0}}, +/* 60437 */ {(12<<2)|2,{113,49,0}}, +/* 60438 */ {(12<<2)|2,{113,49,0}}, +/* 60439 */ {(12<<2)|2,{113,49,0}}, +/* 60440 */ {(12<<2)|2,{113,49,0}}, +/* 60441 */ {(12<<2)|2,{113,49,0}}, +/* 60442 */ {(12<<2)|2,{113,49,0}}, +/* 60443 */ {(12<<2)|2,{113,49,0}}, +/* 60444 */ {(12<<2)|2,{113,49,0}}, +/* 60445 */ {(12<<2)|2,{113,49,0}}, +/* 60446 */ {(12<<2)|2,{113,49,0}}, +/* 60447 */ {(12<<2)|2,{113,49,0}}, +/* 60448 */ {(12<<2)|2,{113,50,0}}, +/* 60449 */ {(12<<2)|2,{113,50,0}}, +/* 60450 */ {(12<<2)|2,{113,50,0}}, +/* 60451 */ {(12<<2)|2,{113,50,0}}, +/* 60452 */ {(12<<2)|2,{113,50,0}}, +/* 60453 */ {(12<<2)|2,{113,50,0}}, +/* 60454 */ {(12<<2)|2,{113,50,0}}, +/* 60455 */ {(12<<2)|2,{113,50,0}}, +/* 60456 */ {(12<<2)|2,{113,50,0}}, +/* 60457 */ {(12<<2)|2,{113,50,0}}, +/* 60458 */ {(12<<2)|2,{113,50,0}}, +/* 60459 */ {(12<<2)|2,{113,50,0}}, +/* 60460 */ {(12<<2)|2,{113,50,0}}, +/* 60461 */ {(12<<2)|2,{113,50,0}}, +/* 60462 */ {(12<<2)|2,{113,50,0}}, +/* 60463 */ {(12<<2)|2,{113,50,0}}, +/* 60464 */ {(12<<2)|2,{113,97,0}}, +/* 60465 */ {(12<<2)|2,{113,97,0}}, +/* 60466 */ {(12<<2)|2,{113,97,0}}, +/* 60467 */ {(12<<2)|2,{113,97,0}}, +/* 60468 */ {(12<<2)|2,{113,97,0}}, +/* 60469 */ {(12<<2)|2,{113,97,0}}, +/* 60470 */ {(12<<2)|2,{113,97,0}}, +/* 60471 */ {(12<<2)|2,{113,97,0}}, +/* 60472 */ {(12<<2)|2,{113,97,0}}, +/* 60473 */ {(12<<2)|2,{113,97,0}}, +/* 60474 */ {(12<<2)|2,{113,97,0}}, +/* 60475 */ {(12<<2)|2,{113,97,0}}, +/* 60476 */ {(12<<2)|2,{113,97,0}}, +/* 60477 */ {(12<<2)|2,{113,97,0}}, +/* 60478 */ {(12<<2)|2,{113,97,0}}, +/* 60479 */ {(12<<2)|2,{113,97,0}}, +/* 60480 */ {(12<<2)|2,{113,99,0}}, +/* 60481 */ {(12<<2)|2,{113,99,0}}, +/* 60482 */ {(12<<2)|2,{113,99,0}}, +/* 60483 */ {(12<<2)|2,{113,99,0}}, +/* 60484 */ {(12<<2)|2,{113,99,0}}, +/* 60485 */ {(12<<2)|2,{113,99,0}}, +/* 60486 */ {(12<<2)|2,{113,99,0}}, +/* 60487 */ {(12<<2)|2,{113,99,0}}, +/* 60488 */ {(12<<2)|2,{113,99,0}}, +/* 60489 */ {(12<<2)|2,{113,99,0}}, +/* 60490 */ {(12<<2)|2,{113,99,0}}, +/* 60491 */ {(12<<2)|2,{113,99,0}}, +/* 60492 */ {(12<<2)|2,{113,99,0}}, +/* 60493 */ {(12<<2)|2,{113,99,0}}, +/* 60494 */ {(12<<2)|2,{113,99,0}}, +/* 60495 */ {(12<<2)|2,{113,99,0}}, +/* 60496 */ {(12<<2)|2,{113,101,0}}, +/* 60497 */ {(12<<2)|2,{113,101,0}}, +/* 60498 */ {(12<<2)|2,{113,101,0}}, +/* 60499 */ {(12<<2)|2,{113,101,0}}, +/* 60500 */ {(12<<2)|2,{113,101,0}}, +/* 60501 */ {(12<<2)|2,{113,101,0}}, +/* 60502 */ {(12<<2)|2,{113,101,0}}, +/* 60503 */ {(12<<2)|2,{113,101,0}}, +/* 60504 */ {(12<<2)|2,{113,101,0}}, +/* 60505 */ {(12<<2)|2,{113,101,0}}, +/* 60506 */ {(12<<2)|2,{113,101,0}}, +/* 60507 */ {(12<<2)|2,{113,101,0}}, +/* 60508 */ {(12<<2)|2,{113,101,0}}, +/* 60509 */ {(12<<2)|2,{113,101,0}}, +/* 60510 */ {(12<<2)|2,{113,101,0}}, +/* 60511 */ {(12<<2)|2,{113,101,0}}, +/* 60512 */ {(12<<2)|2,{113,105,0}}, +/* 60513 */ {(12<<2)|2,{113,105,0}}, +/* 60514 */ {(12<<2)|2,{113,105,0}}, +/* 60515 */ {(12<<2)|2,{113,105,0}}, +/* 60516 */ {(12<<2)|2,{113,105,0}}, +/* 60517 */ {(12<<2)|2,{113,105,0}}, +/* 60518 */ {(12<<2)|2,{113,105,0}}, +/* 60519 */ {(12<<2)|2,{113,105,0}}, +/* 60520 */ {(12<<2)|2,{113,105,0}}, +/* 60521 */ {(12<<2)|2,{113,105,0}}, +/* 60522 */ {(12<<2)|2,{113,105,0}}, +/* 60523 */ {(12<<2)|2,{113,105,0}}, +/* 60524 */ {(12<<2)|2,{113,105,0}}, +/* 60525 */ {(12<<2)|2,{113,105,0}}, +/* 60526 */ {(12<<2)|2,{113,105,0}}, +/* 60527 */ {(12<<2)|2,{113,105,0}}, +/* 60528 */ {(12<<2)|2,{113,111,0}}, +/* 60529 */ {(12<<2)|2,{113,111,0}}, +/* 60530 */ {(12<<2)|2,{113,111,0}}, +/* 60531 */ {(12<<2)|2,{113,111,0}}, +/* 60532 */ {(12<<2)|2,{113,111,0}}, +/* 60533 */ {(12<<2)|2,{113,111,0}}, +/* 60534 */ {(12<<2)|2,{113,111,0}}, +/* 60535 */ {(12<<2)|2,{113,111,0}}, +/* 60536 */ {(12<<2)|2,{113,111,0}}, +/* 60537 */ {(12<<2)|2,{113,111,0}}, +/* 60538 */ {(12<<2)|2,{113,111,0}}, +/* 60539 */ {(12<<2)|2,{113,111,0}}, +/* 60540 */ {(12<<2)|2,{113,111,0}}, +/* 60541 */ {(12<<2)|2,{113,111,0}}, +/* 60542 */ {(12<<2)|2,{113,111,0}}, +/* 60543 */ {(12<<2)|2,{113,111,0}}, +/* 60544 */ {(12<<2)|2,{113,115,0}}, +/* 60545 */ {(12<<2)|2,{113,115,0}}, +/* 60546 */ {(12<<2)|2,{113,115,0}}, +/* 60547 */ {(12<<2)|2,{113,115,0}}, +/* 60548 */ {(12<<2)|2,{113,115,0}}, +/* 60549 */ {(12<<2)|2,{113,115,0}}, +/* 60550 */ {(12<<2)|2,{113,115,0}}, +/* 60551 */ {(12<<2)|2,{113,115,0}}, +/* 60552 */ {(12<<2)|2,{113,115,0}}, +/* 60553 */ {(12<<2)|2,{113,115,0}}, +/* 60554 */ {(12<<2)|2,{113,115,0}}, +/* 60555 */ {(12<<2)|2,{113,115,0}}, +/* 60556 */ {(12<<2)|2,{113,115,0}}, +/* 60557 */ {(12<<2)|2,{113,115,0}}, +/* 60558 */ {(12<<2)|2,{113,115,0}}, +/* 60559 */ {(12<<2)|2,{113,115,0}}, +/* 60560 */ {(12<<2)|2,{113,116,0}}, +/* 60561 */ {(12<<2)|2,{113,116,0}}, +/* 60562 */ {(12<<2)|2,{113,116,0}}, +/* 60563 */ {(12<<2)|2,{113,116,0}}, +/* 60564 */ {(12<<2)|2,{113,116,0}}, +/* 60565 */ {(12<<2)|2,{113,116,0}}, +/* 60566 */ {(12<<2)|2,{113,116,0}}, +/* 60567 */ {(12<<2)|2,{113,116,0}}, +/* 60568 */ {(12<<2)|2,{113,116,0}}, +/* 60569 */ {(12<<2)|2,{113,116,0}}, +/* 60570 */ {(12<<2)|2,{113,116,0}}, +/* 60571 */ {(12<<2)|2,{113,116,0}}, +/* 60572 */ {(12<<2)|2,{113,116,0}}, +/* 60573 */ {(12<<2)|2,{113,116,0}}, +/* 60574 */ {(12<<2)|2,{113,116,0}}, +/* 60575 */ {(12<<2)|2,{113,116,0}}, +/* 60576 */ {(13<<2)|2,{113,32,0}}, +/* 60577 */ {(13<<2)|2,{113,32,0}}, +/* 60578 */ {(13<<2)|2,{113,32,0}}, +/* 60579 */ {(13<<2)|2,{113,32,0}}, +/* 60580 */ {(13<<2)|2,{113,32,0}}, +/* 60581 */ {(13<<2)|2,{113,32,0}}, +/* 60582 */ {(13<<2)|2,{113,32,0}}, +/* 60583 */ {(13<<2)|2,{113,32,0}}, +/* 60584 */ {(13<<2)|2,{113,37,0}}, +/* 60585 */ {(13<<2)|2,{113,37,0}}, +/* 60586 */ {(13<<2)|2,{113,37,0}}, +/* 60587 */ {(13<<2)|2,{113,37,0}}, +/* 60588 */ {(13<<2)|2,{113,37,0}}, +/* 60589 */ {(13<<2)|2,{113,37,0}}, +/* 60590 */ {(13<<2)|2,{113,37,0}}, +/* 60591 */ {(13<<2)|2,{113,37,0}}, +/* 60592 */ {(13<<2)|2,{113,45,0}}, +/* 60593 */ {(13<<2)|2,{113,45,0}}, +/* 60594 */ {(13<<2)|2,{113,45,0}}, +/* 60595 */ {(13<<2)|2,{113,45,0}}, +/* 60596 */ {(13<<2)|2,{113,45,0}}, +/* 60597 */ {(13<<2)|2,{113,45,0}}, +/* 60598 */ {(13<<2)|2,{113,45,0}}, +/* 60599 */ {(13<<2)|2,{113,45,0}}, +/* 60600 */ {(13<<2)|2,{113,46,0}}, +/* 60601 */ {(13<<2)|2,{113,46,0}}, +/* 60602 */ {(13<<2)|2,{113,46,0}}, +/* 60603 */ {(13<<2)|2,{113,46,0}}, +/* 60604 */ {(13<<2)|2,{113,46,0}}, +/* 60605 */ {(13<<2)|2,{113,46,0}}, +/* 60606 */ {(13<<2)|2,{113,46,0}}, +/* 60607 */ {(13<<2)|2,{113,46,0}}, +/* 60608 */ {(13<<2)|2,{113,47,0}}, +/* 60609 */ {(13<<2)|2,{113,47,0}}, +/* 60610 */ {(13<<2)|2,{113,47,0}}, +/* 60611 */ {(13<<2)|2,{113,47,0}}, +/* 60612 */ {(13<<2)|2,{113,47,0}}, +/* 60613 */ {(13<<2)|2,{113,47,0}}, +/* 60614 */ {(13<<2)|2,{113,47,0}}, +/* 60615 */ {(13<<2)|2,{113,47,0}}, +/* 60616 */ {(13<<2)|2,{113,51,0}}, +/* 60617 */ {(13<<2)|2,{113,51,0}}, +/* 60618 */ {(13<<2)|2,{113,51,0}}, +/* 60619 */ {(13<<2)|2,{113,51,0}}, +/* 60620 */ {(13<<2)|2,{113,51,0}}, +/* 60621 */ {(13<<2)|2,{113,51,0}}, +/* 60622 */ {(13<<2)|2,{113,51,0}}, +/* 60623 */ {(13<<2)|2,{113,51,0}}, +/* 60624 */ {(13<<2)|2,{113,52,0}}, +/* 60625 */ {(13<<2)|2,{113,52,0}}, +/* 60626 */ {(13<<2)|2,{113,52,0}}, +/* 60627 */ {(13<<2)|2,{113,52,0}}, +/* 60628 */ {(13<<2)|2,{113,52,0}}, +/* 60629 */ {(13<<2)|2,{113,52,0}}, +/* 60630 */ {(13<<2)|2,{113,52,0}}, +/* 60631 */ {(13<<2)|2,{113,52,0}}, +/* 60632 */ {(13<<2)|2,{113,53,0}}, +/* 60633 */ {(13<<2)|2,{113,53,0}}, +/* 60634 */ {(13<<2)|2,{113,53,0}}, +/* 60635 */ {(13<<2)|2,{113,53,0}}, +/* 60636 */ {(13<<2)|2,{113,53,0}}, +/* 60637 */ {(13<<2)|2,{113,53,0}}, +/* 60638 */ {(13<<2)|2,{113,53,0}}, +/* 60639 */ {(13<<2)|2,{113,53,0}}, +/* 60640 */ {(13<<2)|2,{113,54,0}}, +/* 60641 */ {(13<<2)|2,{113,54,0}}, +/* 60642 */ {(13<<2)|2,{113,54,0}}, +/* 60643 */ {(13<<2)|2,{113,54,0}}, +/* 60644 */ {(13<<2)|2,{113,54,0}}, +/* 60645 */ {(13<<2)|2,{113,54,0}}, +/* 60646 */ {(13<<2)|2,{113,54,0}}, +/* 60647 */ {(13<<2)|2,{113,54,0}}, +/* 60648 */ {(13<<2)|2,{113,55,0}}, +/* 60649 */ {(13<<2)|2,{113,55,0}}, +/* 60650 */ {(13<<2)|2,{113,55,0}}, +/* 60651 */ {(13<<2)|2,{113,55,0}}, +/* 60652 */ {(13<<2)|2,{113,55,0}}, +/* 60653 */ {(13<<2)|2,{113,55,0}}, +/* 60654 */ {(13<<2)|2,{113,55,0}}, +/* 60655 */ {(13<<2)|2,{113,55,0}}, +/* 60656 */ {(13<<2)|2,{113,56,0}}, +/* 60657 */ {(13<<2)|2,{113,56,0}}, +/* 60658 */ {(13<<2)|2,{113,56,0}}, +/* 60659 */ {(13<<2)|2,{113,56,0}}, +/* 60660 */ {(13<<2)|2,{113,56,0}}, +/* 60661 */ {(13<<2)|2,{113,56,0}}, +/* 60662 */ {(13<<2)|2,{113,56,0}}, +/* 60663 */ {(13<<2)|2,{113,56,0}}, +/* 60664 */ {(13<<2)|2,{113,57,0}}, +/* 60665 */ {(13<<2)|2,{113,57,0}}, +/* 60666 */ {(13<<2)|2,{113,57,0}}, +/* 60667 */ {(13<<2)|2,{113,57,0}}, +/* 60668 */ {(13<<2)|2,{113,57,0}}, +/* 60669 */ {(13<<2)|2,{113,57,0}}, +/* 60670 */ {(13<<2)|2,{113,57,0}}, +/* 60671 */ {(13<<2)|2,{113,57,0}}, +/* 60672 */ {(13<<2)|2,{113,61,0}}, +/* 60673 */ {(13<<2)|2,{113,61,0}}, +/* 60674 */ {(13<<2)|2,{113,61,0}}, +/* 60675 */ {(13<<2)|2,{113,61,0}}, +/* 60676 */ {(13<<2)|2,{113,61,0}}, +/* 60677 */ {(13<<2)|2,{113,61,0}}, +/* 60678 */ {(13<<2)|2,{113,61,0}}, +/* 60679 */ {(13<<2)|2,{113,61,0}}, +/* 60680 */ {(13<<2)|2,{113,65,0}}, +/* 60681 */ {(13<<2)|2,{113,65,0}}, +/* 60682 */ {(13<<2)|2,{113,65,0}}, +/* 60683 */ {(13<<2)|2,{113,65,0}}, +/* 60684 */ {(13<<2)|2,{113,65,0}}, +/* 60685 */ {(13<<2)|2,{113,65,0}}, +/* 60686 */ {(13<<2)|2,{113,65,0}}, +/* 60687 */ {(13<<2)|2,{113,65,0}}, +/* 60688 */ {(13<<2)|2,{113,95,0}}, +/* 60689 */ {(13<<2)|2,{113,95,0}}, +/* 60690 */ {(13<<2)|2,{113,95,0}}, +/* 60691 */ {(13<<2)|2,{113,95,0}}, +/* 60692 */ {(13<<2)|2,{113,95,0}}, +/* 60693 */ {(13<<2)|2,{113,95,0}}, +/* 60694 */ {(13<<2)|2,{113,95,0}}, +/* 60695 */ {(13<<2)|2,{113,95,0}}, +/* 60696 */ {(13<<2)|2,{113,98,0}}, +/* 60697 */ {(13<<2)|2,{113,98,0}}, +/* 60698 */ {(13<<2)|2,{113,98,0}}, +/* 60699 */ {(13<<2)|2,{113,98,0}}, +/* 60700 */ {(13<<2)|2,{113,98,0}}, +/* 60701 */ {(13<<2)|2,{113,98,0}}, +/* 60702 */ {(13<<2)|2,{113,98,0}}, +/* 60703 */ {(13<<2)|2,{113,98,0}}, +/* 60704 */ {(13<<2)|2,{113,100,0}}, +/* 60705 */ {(13<<2)|2,{113,100,0}}, +/* 60706 */ {(13<<2)|2,{113,100,0}}, +/* 60707 */ {(13<<2)|2,{113,100,0}}, +/* 60708 */ {(13<<2)|2,{113,100,0}}, +/* 60709 */ {(13<<2)|2,{113,100,0}}, +/* 60710 */ {(13<<2)|2,{113,100,0}}, +/* 60711 */ {(13<<2)|2,{113,100,0}}, +/* 60712 */ {(13<<2)|2,{113,102,0}}, +/* 60713 */ {(13<<2)|2,{113,102,0}}, +/* 60714 */ {(13<<2)|2,{113,102,0}}, +/* 60715 */ {(13<<2)|2,{113,102,0}}, +/* 60716 */ {(13<<2)|2,{113,102,0}}, +/* 60717 */ {(13<<2)|2,{113,102,0}}, +/* 60718 */ {(13<<2)|2,{113,102,0}}, +/* 60719 */ {(13<<2)|2,{113,102,0}}, +/* 60720 */ {(13<<2)|2,{113,103,0}}, +/* 60721 */ {(13<<2)|2,{113,103,0}}, +/* 60722 */ {(13<<2)|2,{113,103,0}}, +/* 60723 */ {(13<<2)|2,{113,103,0}}, +/* 60724 */ {(13<<2)|2,{113,103,0}}, +/* 60725 */ {(13<<2)|2,{113,103,0}}, +/* 60726 */ {(13<<2)|2,{113,103,0}}, +/* 60727 */ {(13<<2)|2,{113,103,0}}, +/* 60728 */ {(13<<2)|2,{113,104,0}}, +/* 60729 */ {(13<<2)|2,{113,104,0}}, +/* 60730 */ {(13<<2)|2,{113,104,0}}, +/* 60731 */ {(13<<2)|2,{113,104,0}}, +/* 60732 */ {(13<<2)|2,{113,104,0}}, +/* 60733 */ {(13<<2)|2,{113,104,0}}, +/* 60734 */ {(13<<2)|2,{113,104,0}}, +/* 60735 */ {(13<<2)|2,{113,104,0}}, +/* 60736 */ {(13<<2)|2,{113,108,0}}, +/* 60737 */ {(13<<2)|2,{113,108,0}}, +/* 60738 */ {(13<<2)|2,{113,108,0}}, +/* 60739 */ {(13<<2)|2,{113,108,0}}, +/* 60740 */ {(13<<2)|2,{113,108,0}}, +/* 60741 */ {(13<<2)|2,{113,108,0}}, +/* 60742 */ {(13<<2)|2,{113,108,0}}, +/* 60743 */ {(13<<2)|2,{113,108,0}}, +/* 60744 */ {(13<<2)|2,{113,109,0}}, +/* 60745 */ {(13<<2)|2,{113,109,0}}, +/* 60746 */ {(13<<2)|2,{113,109,0}}, +/* 60747 */ {(13<<2)|2,{113,109,0}}, +/* 60748 */ {(13<<2)|2,{113,109,0}}, +/* 60749 */ {(13<<2)|2,{113,109,0}}, +/* 60750 */ {(13<<2)|2,{113,109,0}}, +/* 60751 */ {(13<<2)|2,{113,109,0}}, +/* 60752 */ {(13<<2)|2,{113,110,0}}, +/* 60753 */ {(13<<2)|2,{113,110,0}}, +/* 60754 */ {(13<<2)|2,{113,110,0}}, +/* 60755 */ {(13<<2)|2,{113,110,0}}, +/* 60756 */ {(13<<2)|2,{113,110,0}}, +/* 60757 */ {(13<<2)|2,{113,110,0}}, +/* 60758 */ {(13<<2)|2,{113,110,0}}, +/* 60759 */ {(13<<2)|2,{113,110,0}}, +/* 60760 */ {(13<<2)|2,{113,112,0}}, +/* 60761 */ {(13<<2)|2,{113,112,0}}, +/* 60762 */ {(13<<2)|2,{113,112,0}}, +/* 60763 */ {(13<<2)|2,{113,112,0}}, +/* 60764 */ {(13<<2)|2,{113,112,0}}, +/* 60765 */ {(13<<2)|2,{113,112,0}}, +/* 60766 */ {(13<<2)|2,{113,112,0}}, +/* 60767 */ {(13<<2)|2,{113,112,0}}, +/* 60768 */ {(13<<2)|2,{113,114,0}}, +/* 60769 */ {(13<<2)|2,{113,114,0}}, +/* 60770 */ {(13<<2)|2,{113,114,0}}, +/* 60771 */ {(13<<2)|2,{113,114,0}}, +/* 60772 */ {(13<<2)|2,{113,114,0}}, +/* 60773 */ {(13<<2)|2,{113,114,0}}, +/* 60774 */ {(13<<2)|2,{113,114,0}}, +/* 60775 */ {(13<<2)|2,{113,114,0}}, +/* 60776 */ {(13<<2)|2,{113,117,0}}, +/* 60777 */ {(13<<2)|2,{113,117,0}}, +/* 60778 */ {(13<<2)|2,{113,117,0}}, +/* 60779 */ {(13<<2)|2,{113,117,0}}, +/* 60780 */ {(13<<2)|2,{113,117,0}}, +/* 60781 */ {(13<<2)|2,{113,117,0}}, +/* 60782 */ {(13<<2)|2,{113,117,0}}, +/* 60783 */ {(13<<2)|2,{113,117,0}}, +/* 60784 */ {(14<<2)|2,{113,58,0}}, +/* 60785 */ {(14<<2)|2,{113,58,0}}, +/* 60786 */ {(14<<2)|2,{113,58,0}}, +/* 60787 */ {(14<<2)|2,{113,58,0}}, +/* 60788 */ {(14<<2)|2,{113,66,0}}, +/* 60789 */ {(14<<2)|2,{113,66,0}}, +/* 60790 */ {(14<<2)|2,{113,66,0}}, +/* 60791 */ {(14<<2)|2,{113,66,0}}, +/* 60792 */ {(14<<2)|2,{113,67,0}}, +/* 60793 */ {(14<<2)|2,{113,67,0}}, +/* 60794 */ {(14<<2)|2,{113,67,0}}, +/* 60795 */ {(14<<2)|2,{113,67,0}}, +/* 60796 */ {(14<<2)|2,{113,68,0}}, +/* 60797 */ {(14<<2)|2,{113,68,0}}, +/* 60798 */ {(14<<2)|2,{113,68,0}}, +/* 60799 */ {(14<<2)|2,{113,68,0}}, +/* 60800 */ {(14<<2)|2,{113,69,0}}, +/* 60801 */ {(14<<2)|2,{113,69,0}}, +/* 60802 */ {(14<<2)|2,{113,69,0}}, +/* 60803 */ {(14<<2)|2,{113,69,0}}, +/* 60804 */ {(14<<2)|2,{113,70,0}}, +/* 60805 */ {(14<<2)|2,{113,70,0}}, +/* 60806 */ {(14<<2)|2,{113,70,0}}, +/* 60807 */ {(14<<2)|2,{113,70,0}}, +/* 60808 */ {(14<<2)|2,{113,71,0}}, +/* 60809 */ {(14<<2)|2,{113,71,0}}, +/* 60810 */ {(14<<2)|2,{113,71,0}}, +/* 60811 */ {(14<<2)|2,{113,71,0}}, +/* 60812 */ {(14<<2)|2,{113,72,0}}, +/* 60813 */ {(14<<2)|2,{113,72,0}}, +/* 60814 */ {(14<<2)|2,{113,72,0}}, +/* 60815 */ {(14<<2)|2,{113,72,0}}, +/* 60816 */ {(14<<2)|2,{113,73,0}}, +/* 60817 */ {(14<<2)|2,{113,73,0}}, +/* 60818 */ {(14<<2)|2,{113,73,0}}, +/* 60819 */ {(14<<2)|2,{113,73,0}}, +/* 60820 */ {(14<<2)|2,{113,74,0}}, +/* 60821 */ {(14<<2)|2,{113,74,0}}, +/* 60822 */ {(14<<2)|2,{113,74,0}}, +/* 60823 */ {(14<<2)|2,{113,74,0}}, +/* 60824 */ {(14<<2)|2,{113,75,0}}, +/* 60825 */ {(14<<2)|2,{113,75,0}}, +/* 60826 */ {(14<<2)|2,{113,75,0}}, +/* 60827 */ {(14<<2)|2,{113,75,0}}, +/* 60828 */ {(14<<2)|2,{113,76,0}}, +/* 60829 */ {(14<<2)|2,{113,76,0}}, +/* 60830 */ {(14<<2)|2,{113,76,0}}, +/* 60831 */ {(14<<2)|2,{113,76,0}}, +/* 60832 */ {(14<<2)|2,{113,77,0}}, +/* 60833 */ {(14<<2)|2,{113,77,0}}, +/* 60834 */ {(14<<2)|2,{113,77,0}}, +/* 60835 */ {(14<<2)|2,{113,77,0}}, +/* 60836 */ {(14<<2)|2,{113,78,0}}, +/* 60837 */ {(14<<2)|2,{113,78,0}}, +/* 60838 */ {(14<<2)|2,{113,78,0}}, +/* 60839 */ {(14<<2)|2,{113,78,0}}, +/* 60840 */ {(14<<2)|2,{113,79,0}}, +/* 60841 */ {(14<<2)|2,{113,79,0}}, +/* 60842 */ {(14<<2)|2,{113,79,0}}, +/* 60843 */ {(14<<2)|2,{113,79,0}}, +/* 60844 */ {(14<<2)|2,{113,80,0}}, +/* 60845 */ {(14<<2)|2,{113,80,0}}, +/* 60846 */ {(14<<2)|2,{113,80,0}}, +/* 60847 */ {(14<<2)|2,{113,80,0}}, +/* 60848 */ {(14<<2)|2,{113,81,0}}, +/* 60849 */ {(14<<2)|2,{113,81,0}}, +/* 60850 */ {(14<<2)|2,{113,81,0}}, +/* 60851 */ {(14<<2)|2,{113,81,0}}, +/* 60852 */ {(14<<2)|2,{113,82,0}}, +/* 60853 */ {(14<<2)|2,{113,82,0}}, +/* 60854 */ {(14<<2)|2,{113,82,0}}, +/* 60855 */ {(14<<2)|2,{113,82,0}}, +/* 60856 */ {(14<<2)|2,{113,83,0}}, +/* 60857 */ {(14<<2)|2,{113,83,0}}, +/* 60858 */ {(14<<2)|2,{113,83,0}}, +/* 60859 */ {(14<<2)|2,{113,83,0}}, +/* 60860 */ {(14<<2)|2,{113,84,0}}, +/* 60861 */ {(14<<2)|2,{113,84,0}}, +/* 60862 */ {(14<<2)|2,{113,84,0}}, +/* 60863 */ {(14<<2)|2,{113,84,0}}, +/* 60864 */ {(14<<2)|2,{113,85,0}}, +/* 60865 */ {(14<<2)|2,{113,85,0}}, +/* 60866 */ {(14<<2)|2,{113,85,0}}, +/* 60867 */ {(14<<2)|2,{113,85,0}}, +/* 60868 */ {(14<<2)|2,{113,86,0}}, +/* 60869 */ {(14<<2)|2,{113,86,0}}, +/* 60870 */ {(14<<2)|2,{113,86,0}}, +/* 60871 */ {(14<<2)|2,{113,86,0}}, +/* 60872 */ {(14<<2)|2,{113,87,0}}, +/* 60873 */ {(14<<2)|2,{113,87,0}}, +/* 60874 */ {(14<<2)|2,{113,87,0}}, +/* 60875 */ {(14<<2)|2,{113,87,0}}, +/* 60876 */ {(14<<2)|2,{113,89,0}}, +/* 60877 */ {(14<<2)|2,{113,89,0}}, +/* 60878 */ {(14<<2)|2,{113,89,0}}, +/* 60879 */ {(14<<2)|2,{113,89,0}}, +/* 60880 */ {(14<<2)|2,{113,106,0}}, +/* 60881 */ {(14<<2)|2,{113,106,0}}, +/* 60882 */ {(14<<2)|2,{113,106,0}}, +/* 60883 */ {(14<<2)|2,{113,106,0}}, +/* 60884 */ {(14<<2)|2,{113,107,0}}, +/* 60885 */ {(14<<2)|2,{113,107,0}}, +/* 60886 */ {(14<<2)|2,{113,107,0}}, +/* 60887 */ {(14<<2)|2,{113,107,0}}, +/* 60888 */ {(14<<2)|2,{113,113,0}}, +/* 60889 */ {(14<<2)|2,{113,113,0}}, +/* 60890 */ {(14<<2)|2,{113,113,0}}, +/* 60891 */ {(14<<2)|2,{113,113,0}}, +/* 60892 */ {(14<<2)|2,{113,118,0}}, +/* 60893 */ {(14<<2)|2,{113,118,0}}, +/* 60894 */ {(14<<2)|2,{113,118,0}}, +/* 60895 */ {(14<<2)|2,{113,118,0}}, +/* 60896 */ {(14<<2)|2,{113,119,0}}, +/* 60897 */ {(14<<2)|2,{113,119,0}}, +/* 60898 */ {(14<<2)|2,{113,119,0}}, +/* 60899 */ {(14<<2)|2,{113,119,0}}, +/* 60900 */ {(14<<2)|2,{113,120,0}}, +/* 60901 */ {(14<<2)|2,{113,120,0}}, +/* 60902 */ {(14<<2)|2,{113,120,0}}, +/* 60903 */ {(14<<2)|2,{113,120,0}}, +/* 60904 */ {(14<<2)|2,{113,121,0}}, +/* 60905 */ {(14<<2)|2,{113,121,0}}, +/* 60906 */ {(14<<2)|2,{113,121,0}}, +/* 60907 */ {(14<<2)|2,{113,121,0}}, +/* 60908 */ {(14<<2)|2,{113,122,0}}, +/* 60909 */ {(14<<2)|2,{113,122,0}}, +/* 60910 */ {(14<<2)|2,{113,122,0}}, +/* 60911 */ {(14<<2)|2,{113,122,0}}, +/* 60912 */ {(15<<2)|2,{113,38,0}}, +/* 60913 */ {(15<<2)|2,{113,38,0}}, +/* 60914 */ {(15<<2)|2,{113,42,0}}, +/* 60915 */ {(15<<2)|2,{113,42,0}}, +/* 60916 */ {(15<<2)|2,{113,44,0}}, +/* 60917 */ {(15<<2)|2,{113,44,0}}, +/* 60918 */ {(15<<2)|2,{113,59,0}}, +/* 60919 */ {(15<<2)|2,{113,59,0}}, +/* 60920 */ {(15<<2)|2,{113,88,0}}, +/* 60921 */ {(15<<2)|2,{113,88,0}}, +/* 60922 */ {(15<<2)|2,{113,90,0}}, +/* 60923 */ {(15<<2)|2,{113,90,0}}, +/* 60924 */ {(7<<2)|1,{113,0,0}}, +/* 60925 */ {(7<<2)|1,{113,0,0}}, +/* 60926 */ {(7<<2)|1,{113,0,0}}, +/* 60927 */ {(7<<2)|1,{113,0,0}}, +/* 60928 */ {(12<<2)|2,{118,48,0}}, +/* 60929 */ {(12<<2)|2,{118,48,0}}, +/* 60930 */ {(12<<2)|2,{118,48,0}}, +/* 60931 */ {(12<<2)|2,{118,48,0}}, +/* 60932 */ {(12<<2)|2,{118,48,0}}, +/* 60933 */ {(12<<2)|2,{118,48,0}}, +/* 60934 */ {(12<<2)|2,{118,48,0}}, +/* 60935 */ {(12<<2)|2,{118,48,0}}, +/* 60936 */ {(12<<2)|2,{118,48,0}}, +/* 60937 */ {(12<<2)|2,{118,48,0}}, +/* 60938 */ {(12<<2)|2,{118,48,0}}, +/* 60939 */ {(12<<2)|2,{118,48,0}}, +/* 60940 */ {(12<<2)|2,{118,48,0}}, +/* 60941 */ {(12<<2)|2,{118,48,0}}, +/* 60942 */ {(12<<2)|2,{118,48,0}}, +/* 60943 */ {(12<<2)|2,{118,48,0}}, +/* 60944 */ {(12<<2)|2,{118,49,0}}, +/* 60945 */ {(12<<2)|2,{118,49,0}}, +/* 60946 */ {(12<<2)|2,{118,49,0}}, +/* 60947 */ {(12<<2)|2,{118,49,0}}, +/* 60948 */ {(12<<2)|2,{118,49,0}}, +/* 60949 */ {(12<<2)|2,{118,49,0}}, +/* 60950 */ {(12<<2)|2,{118,49,0}}, +/* 60951 */ {(12<<2)|2,{118,49,0}}, +/* 60952 */ {(12<<2)|2,{118,49,0}}, +/* 60953 */ {(12<<2)|2,{118,49,0}}, +/* 60954 */ {(12<<2)|2,{118,49,0}}, +/* 60955 */ {(12<<2)|2,{118,49,0}}, +/* 60956 */ {(12<<2)|2,{118,49,0}}, +/* 60957 */ {(12<<2)|2,{118,49,0}}, +/* 60958 */ {(12<<2)|2,{118,49,0}}, +/* 60959 */ {(12<<2)|2,{118,49,0}}, +/* 60960 */ {(12<<2)|2,{118,50,0}}, +/* 60961 */ {(12<<2)|2,{118,50,0}}, +/* 60962 */ {(12<<2)|2,{118,50,0}}, +/* 60963 */ {(12<<2)|2,{118,50,0}}, +/* 60964 */ {(12<<2)|2,{118,50,0}}, +/* 60965 */ {(12<<2)|2,{118,50,0}}, +/* 60966 */ {(12<<2)|2,{118,50,0}}, +/* 60967 */ {(12<<2)|2,{118,50,0}}, +/* 60968 */ {(12<<2)|2,{118,50,0}}, +/* 60969 */ {(12<<2)|2,{118,50,0}}, +/* 60970 */ {(12<<2)|2,{118,50,0}}, +/* 60971 */ {(12<<2)|2,{118,50,0}}, +/* 60972 */ {(12<<2)|2,{118,50,0}}, +/* 60973 */ {(12<<2)|2,{118,50,0}}, +/* 60974 */ {(12<<2)|2,{118,50,0}}, +/* 60975 */ {(12<<2)|2,{118,50,0}}, +/* 60976 */ {(12<<2)|2,{118,97,0}}, +/* 60977 */ {(12<<2)|2,{118,97,0}}, +/* 60978 */ {(12<<2)|2,{118,97,0}}, +/* 60979 */ {(12<<2)|2,{118,97,0}}, +/* 60980 */ {(12<<2)|2,{118,97,0}}, +/* 60981 */ {(12<<2)|2,{118,97,0}}, +/* 60982 */ {(12<<2)|2,{118,97,0}}, +/* 60983 */ {(12<<2)|2,{118,97,0}}, +/* 60984 */ {(12<<2)|2,{118,97,0}}, +/* 60985 */ {(12<<2)|2,{118,97,0}}, +/* 60986 */ {(12<<2)|2,{118,97,0}}, +/* 60987 */ {(12<<2)|2,{118,97,0}}, +/* 60988 */ {(12<<2)|2,{118,97,0}}, +/* 60989 */ {(12<<2)|2,{118,97,0}}, +/* 60990 */ {(12<<2)|2,{118,97,0}}, +/* 60991 */ {(12<<2)|2,{118,97,0}}, +/* 60992 */ {(12<<2)|2,{118,99,0}}, +/* 60993 */ {(12<<2)|2,{118,99,0}}, +/* 60994 */ {(12<<2)|2,{118,99,0}}, +/* 60995 */ {(12<<2)|2,{118,99,0}}, +/* 60996 */ {(12<<2)|2,{118,99,0}}, +/* 60997 */ {(12<<2)|2,{118,99,0}}, +/* 60998 */ {(12<<2)|2,{118,99,0}}, +/* 60999 */ {(12<<2)|2,{118,99,0}}, +/* 61000 */ {(12<<2)|2,{118,99,0}}, +/* 61001 */ {(12<<2)|2,{118,99,0}}, +/* 61002 */ {(12<<2)|2,{118,99,0}}, +/* 61003 */ {(12<<2)|2,{118,99,0}}, +/* 61004 */ {(12<<2)|2,{118,99,0}}, +/* 61005 */ {(12<<2)|2,{118,99,0}}, +/* 61006 */ {(12<<2)|2,{118,99,0}}, +/* 61007 */ {(12<<2)|2,{118,99,0}}, +/* 61008 */ {(12<<2)|2,{118,101,0}}, +/* 61009 */ {(12<<2)|2,{118,101,0}}, +/* 61010 */ {(12<<2)|2,{118,101,0}}, +/* 61011 */ {(12<<2)|2,{118,101,0}}, +/* 61012 */ {(12<<2)|2,{118,101,0}}, +/* 61013 */ {(12<<2)|2,{118,101,0}}, +/* 61014 */ {(12<<2)|2,{118,101,0}}, +/* 61015 */ {(12<<2)|2,{118,101,0}}, +/* 61016 */ {(12<<2)|2,{118,101,0}}, +/* 61017 */ {(12<<2)|2,{118,101,0}}, +/* 61018 */ {(12<<2)|2,{118,101,0}}, +/* 61019 */ {(12<<2)|2,{118,101,0}}, +/* 61020 */ {(12<<2)|2,{118,101,0}}, +/* 61021 */ {(12<<2)|2,{118,101,0}}, +/* 61022 */ {(12<<2)|2,{118,101,0}}, +/* 61023 */ {(12<<2)|2,{118,101,0}}, +/* 61024 */ {(12<<2)|2,{118,105,0}}, +/* 61025 */ {(12<<2)|2,{118,105,0}}, +/* 61026 */ {(12<<2)|2,{118,105,0}}, +/* 61027 */ {(12<<2)|2,{118,105,0}}, +/* 61028 */ {(12<<2)|2,{118,105,0}}, +/* 61029 */ {(12<<2)|2,{118,105,0}}, +/* 61030 */ {(12<<2)|2,{118,105,0}}, +/* 61031 */ {(12<<2)|2,{118,105,0}}, +/* 61032 */ {(12<<2)|2,{118,105,0}}, +/* 61033 */ {(12<<2)|2,{118,105,0}}, +/* 61034 */ {(12<<2)|2,{118,105,0}}, +/* 61035 */ {(12<<2)|2,{118,105,0}}, +/* 61036 */ {(12<<2)|2,{118,105,0}}, +/* 61037 */ {(12<<2)|2,{118,105,0}}, +/* 61038 */ {(12<<2)|2,{118,105,0}}, +/* 61039 */ {(12<<2)|2,{118,105,0}}, +/* 61040 */ {(12<<2)|2,{118,111,0}}, +/* 61041 */ {(12<<2)|2,{118,111,0}}, +/* 61042 */ {(12<<2)|2,{118,111,0}}, +/* 61043 */ {(12<<2)|2,{118,111,0}}, +/* 61044 */ {(12<<2)|2,{118,111,0}}, +/* 61045 */ {(12<<2)|2,{118,111,0}}, +/* 61046 */ {(12<<2)|2,{118,111,0}}, +/* 61047 */ {(12<<2)|2,{118,111,0}}, +/* 61048 */ {(12<<2)|2,{118,111,0}}, +/* 61049 */ {(12<<2)|2,{118,111,0}}, +/* 61050 */ {(12<<2)|2,{118,111,0}}, +/* 61051 */ {(12<<2)|2,{118,111,0}}, +/* 61052 */ {(12<<2)|2,{118,111,0}}, +/* 61053 */ {(12<<2)|2,{118,111,0}}, +/* 61054 */ {(12<<2)|2,{118,111,0}}, +/* 61055 */ {(12<<2)|2,{118,111,0}}, +/* 61056 */ {(12<<2)|2,{118,115,0}}, +/* 61057 */ {(12<<2)|2,{118,115,0}}, +/* 61058 */ {(12<<2)|2,{118,115,0}}, +/* 61059 */ {(12<<2)|2,{118,115,0}}, +/* 61060 */ {(12<<2)|2,{118,115,0}}, +/* 61061 */ {(12<<2)|2,{118,115,0}}, +/* 61062 */ {(12<<2)|2,{118,115,0}}, +/* 61063 */ {(12<<2)|2,{118,115,0}}, +/* 61064 */ {(12<<2)|2,{118,115,0}}, +/* 61065 */ {(12<<2)|2,{118,115,0}}, +/* 61066 */ {(12<<2)|2,{118,115,0}}, +/* 61067 */ {(12<<2)|2,{118,115,0}}, +/* 61068 */ {(12<<2)|2,{118,115,0}}, +/* 61069 */ {(12<<2)|2,{118,115,0}}, +/* 61070 */ {(12<<2)|2,{118,115,0}}, +/* 61071 */ {(12<<2)|2,{118,115,0}}, +/* 61072 */ {(12<<2)|2,{118,116,0}}, +/* 61073 */ {(12<<2)|2,{118,116,0}}, +/* 61074 */ {(12<<2)|2,{118,116,0}}, +/* 61075 */ {(12<<2)|2,{118,116,0}}, +/* 61076 */ {(12<<2)|2,{118,116,0}}, +/* 61077 */ {(12<<2)|2,{118,116,0}}, +/* 61078 */ {(12<<2)|2,{118,116,0}}, +/* 61079 */ {(12<<2)|2,{118,116,0}}, +/* 61080 */ {(12<<2)|2,{118,116,0}}, +/* 61081 */ {(12<<2)|2,{118,116,0}}, +/* 61082 */ {(12<<2)|2,{118,116,0}}, +/* 61083 */ {(12<<2)|2,{118,116,0}}, +/* 61084 */ {(12<<2)|2,{118,116,0}}, +/* 61085 */ {(12<<2)|2,{118,116,0}}, +/* 61086 */ {(12<<2)|2,{118,116,0}}, +/* 61087 */ {(12<<2)|2,{118,116,0}}, +/* 61088 */ {(13<<2)|2,{118,32,0}}, +/* 61089 */ {(13<<2)|2,{118,32,0}}, +/* 61090 */ {(13<<2)|2,{118,32,0}}, +/* 61091 */ {(13<<2)|2,{118,32,0}}, +/* 61092 */ {(13<<2)|2,{118,32,0}}, +/* 61093 */ {(13<<2)|2,{118,32,0}}, +/* 61094 */ {(13<<2)|2,{118,32,0}}, +/* 61095 */ {(13<<2)|2,{118,32,0}}, +/* 61096 */ {(13<<2)|2,{118,37,0}}, +/* 61097 */ {(13<<2)|2,{118,37,0}}, +/* 61098 */ {(13<<2)|2,{118,37,0}}, +/* 61099 */ {(13<<2)|2,{118,37,0}}, +/* 61100 */ {(13<<2)|2,{118,37,0}}, +/* 61101 */ {(13<<2)|2,{118,37,0}}, +/* 61102 */ {(13<<2)|2,{118,37,0}}, +/* 61103 */ {(13<<2)|2,{118,37,0}}, +/* 61104 */ {(13<<2)|2,{118,45,0}}, +/* 61105 */ {(13<<2)|2,{118,45,0}}, +/* 61106 */ {(13<<2)|2,{118,45,0}}, +/* 61107 */ {(13<<2)|2,{118,45,0}}, +/* 61108 */ {(13<<2)|2,{118,45,0}}, +/* 61109 */ {(13<<2)|2,{118,45,0}}, +/* 61110 */ {(13<<2)|2,{118,45,0}}, +/* 61111 */ {(13<<2)|2,{118,45,0}}, +/* 61112 */ {(13<<2)|2,{118,46,0}}, +/* 61113 */ {(13<<2)|2,{118,46,0}}, +/* 61114 */ {(13<<2)|2,{118,46,0}}, +/* 61115 */ {(13<<2)|2,{118,46,0}}, +/* 61116 */ {(13<<2)|2,{118,46,0}}, +/* 61117 */ {(13<<2)|2,{118,46,0}}, +/* 61118 */ {(13<<2)|2,{118,46,0}}, +/* 61119 */ {(13<<2)|2,{118,46,0}}, +/* 61120 */ {(13<<2)|2,{118,47,0}}, +/* 61121 */ {(13<<2)|2,{118,47,0}}, +/* 61122 */ {(13<<2)|2,{118,47,0}}, +/* 61123 */ {(13<<2)|2,{118,47,0}}, +/* 61124 */ {(13<<2)|2,{118,47,0}}, +/* 61125 */ {(13<<2)|2,{118,47,0}}, +/* 61126 */ {(13<<2)|2,{118,47,0}}, +/* 61127 */ {(13<<2)|2,{118,47,0}}, +/* 61128 */ {(13<<2)|2,{118,51,0}}, +/* 61129 */ {(13<<2)|2,{118,51,0}}, +/* 61130 */ {(13<<2)|2,{118,51,0}}, +/* 61131 */ {(13<<2)|2,{118,51,0}}, +/* 61132 */ {(13<<2)|2,{118,51,0}}, +/* 61133 */ {(13<<2)|2,{118,51,0}}, +/* 61134 */ {(13<<2)|2,{118,51,0}}, +/* 61135 */ {(13<<2)|2,{118,51,0}}, +/* 61136 */ {(13<<2)|2,{118,52,0}}, +/* 61137 */ {(13<<2)|2,{118,52,0}}, +/* 61138 */ {(13<<2)|2,{118,52,0}}, +/* 61139 */ {(13<<2)|2,{118,52,0}}, +/* 61140 */ {(13<<2)|2,{118,52,0}}, +/* 61141 */ {(13<<2)|2,{118,52,0}}, +/* 61142 */ {(13<<2)|2,{118,52,0}}, +/* 61143 */ {(13<<2)|2,{118,52,0}}, +/* 61144 */ {(13<<2)|2,{118,53,0}}, +/* 61145 */ {(13<<2)|2,{118,53,0}}, +/* 61146 */ {(13<<2)|2,{118,53,0}}, +/* 61147 */ {(13<<2)|2,{118,53,0}}, +/* 61148 */ {(13<<2)|2,{118,53,0}}, +/* 61149 */ {(13<<2)|2,{118,53,0}}, +/* 61150 */ {(13<<2)|2,{118,53,0}}, +/* 61151 */ {(13<<2)|2,{118,53,0}}, +/* 61152 */ {(13<<2)|2,{118,54,0}}, +/* 61153 */ {(13<<2)|2,{118,54,0}}, +/* 61154 */ {(13<<2)|2,{118,54,0}}, +/* 61155 */ {(13<<2)|2,{118,54,0}}, +/* 61156 */ {(13<<2)|2,{118,54,0}}, +/* 61157 */ {(13<<2)|2,{118,54,0}}, +/* 61158 */ {(13<<2)|2,{118,54,0}}, +/* 61159 */ {(13<<2)|2,{118,54,0}}, +/* 61160 */ {(13<<2)|2,{118,55,0}}, +/* 61161 */ {(13<<2)|2,{118,55,0}}, +/* 61162 */ {(13<<2)|2,{118,55,0}}, +/* 61163 */ {(13<<2)|2,{118,55,0}}, +/* 61164 */ {(13<<2)|2,{118,55,0}}, +/* 61165 */ {(13<<2)|2,{118,55,0}}, +/* 61166 */ {(13<<2)|2,{118,55,0}}, +/* 61167 */ {(13<<2)|2,{118,55,0}}, +/* 61168 */ {(13<<2)|2,{118,56,0}}, +/* 61169 */ {(13<<2)|2,{118,56,0}}, +/* 61170 */ {(13<<2)|2,{118,56,0}}, +/* 61171 */ {(13<<2)|2,{118,56,0}}, +/* 61172 */ {(13<<2)|2,{118,56,0}}, +/* 61173 */ {(13<<2)|2,{118,56,0}}, +/* 61174 */ {(13<<2)|2,{118,56,0}}, +/* 61175 */ {(13<<2)|2,{118,56,0}}, +/* 61176 */ {(13<<2)|2,{118,57,0}}, +/* 61177 */ {(13<<2)|2,{118,57,0}}, +/* 61178 */ {(13<<2)|2,{118,57,0}}, +/* 61179 */ {(13<<2)|2,{118,57,0}}, +/* 61180 */ {(13<<2)|2,{118,57,0}}, +/* 61181 */ {(13<<2)|2,{118,57,0}}, +/* 61182 */ {(13<<2)|2,{118,57,0}}, +/* 61183 */ {(13<<2)|2,{118,57,0}}, +/* 61184 */ {(13<<2)|2,{118,61,0}}, +/* 61185 */ {(13<<2)|2,{118,61,0}}, +/* 61186 */ {(13<<2)|2,{118,61,0}}, +/* 61187 */ {(13<<2)|2,{118,61,0}}, +/* 61188 */ {(13<<2)|2,{118,61,0}}, +/* 61189 */ {(13<<2)|2,{118,61,0}}, +/* 61190 */ {(13<<2)|2,{118,61,0}}, +/* 61191 */ {(13<<2)|2,{118,61,0}}, +/* 61192 */ {(13<<2)|2,{118,65,0}}, +/* 61193 */ {(13<<2)|2,{118,65,0}}, +/* 61194 */ {(13<<2)|2,{118,65,0}}, +/* 61195 */ {(13<<2)|2,{118,65,0}}, +/* 61196 */ {(13<<2)|2,{118,65,0}}, +/* 61197 */ {(13<<2)|2,{118,65,0}}, +/* 61198 */ {(13<<2)|2,{118,65,0}}, +/* 61199 */ {(13<<2)|2,{118,65,0}}, +/* 61200 */ {(13<<2)|2,{118,95,0}}, +/* 61201 */ {(13<<2)|2,{118,95,0}}, +/* 61202 */ {(13<<2)|2,{118,95,0}}, +/* 61203 */ {(13<<2)|2,{118,95,0}}, +/* 61204 */ {(13<<2)|2,{118,95,0}}, +/* 61205 */ {(13<<2)|2,{118,95,0}}, +/* 61206 */ {(13<<2)|2,{118,95,0}}, +/* 61207 */ {(13<<2)|2,{118,95,0}}, +/* 61208 */ {(13<<2)|2,{118,98,0}}, +/* 61209 */ {(13<<2)|2,{118,98,0}}, +/* 61210 */ {(13<<2)|2,{118,98,0}}, +/* 61211 */ {(13<<2)|2,{118,98,0}}, +/* 61212 */ {(13<<2)|2,{118,98,0}}, +/* 61213 */ {(13<<2)|2,{118,98,0}}, +/* 61214 */ {(13<<2)|2,{118,98,0}}, +/* 61215 */ {(13<<2)|2,{118,98,0}}, +/* 61216 */ {(13<<2)|2,{118,100,0}}, +/* 61217 */ {(13<<2)|2,{118,100,0}}, +/* 61218 */ {(13<<2)|2,{118,100,0}}, +/* 61219 */ {(13<<2)|2,{118,100,0}}, +/* 61220 */ {(13<<2)|2,{118,100,0}}, +/* 61221 */ {(13<<2)|2,{118,100,0}}, +/* 61222 */ {(13<<2)|2,{118,100,0}}, +/* 61223 */ {(13<<2)|2,{118,100,0}}, +/* 61224 */ {(13<<2)|2,{118,102,0}}, +/* 61225 */ {(13<<2)|2,{118,102,0}}, +/* 61226 */ {(13<<2)|2,{118,102,0}}, +/* 61227 */ {(13<<2)|2,{118,102,0}}, +/* 61228 */ {(13<<2)|2,{118,102,0}}, +/* 61229 */ {(13<<2)|2,{118,102,0}}, +/* 61230 */ {(13<<2)|2,{118,102,0}}, +/* 61231 */ {(13<<2)|2,{118,102,0}}, +/* 61232 */ {(13<<2)|2,{118,103,0}}, +/* 61233 */ {(13<<2)|2,{118,103,0}}, +/* 61234 */ {(13<<2)|2,{118,103,0}}, +/* 61235 */ {(13<<2)|2,{118,103,0}}, +/* 61236 */ {(13<<2)|2,{118,103,0}}, +/* 61237 */ {(13<<2)|2,{118,103,0}}, +/* 61238 */ {(13<<2)|2,{118,103,0}}, +/* 61239 */ {(13<<2)|2,{118,103,0}}, +/* 61240 */ {(13<<2)|2,{118,104,0}}, +/* 61241 */ {(13<<2)|2,{118,104,0}}, +/* 61242 */ {(13<<2)|2,{118,104,0}}, +/* 61243 */ {(13<<2)|2,{118,104,0}}, +/* 61244 */ {(13<<2)|2,{118,104,0}}, +/* 61245 */ {(13<<2)|2,{118,104,0}}, +/* 61246 */ {(13<<2)|2,{118,104,0}}, +/* 61247 */ {(13<<2)|2,{118,104,0}}, +/* 61248 */ {(13<<2)|2,{118,108,0}}, +/* 61249 */ {(13<<2)|2,{118,108,0}}, +/* 61250 */ {(13<<2)|2,{118,108,0}}, +/* 61251 */ {(13<<2)|2,{118,108,0}}, +/* 61252 */ {(13<<2)|2,{118,108,0}}, +/* 61253 */ {(13<<2)|2,{118,108,0}}, +/* 61254 */ {(13<<2)|2,{118,108,0}}, +/* 61255 */ {(13<<2)|2,{118,108,0}}, +/* 61256 */ {(13<<2)|2,{118,109,0}}, +/* 61257 */ {(13<<2)|2,{118,109,0}}, +/* 61258 */ {(13<<2)|2,{118,109,0}}, +/* 61259 */ {(13<<2)|2,{118,109,0}}, +/* 61260 */ {(13<<2)|2,{118,109,0}}, +/* 61261 */ {(13<<2)|2,{118,109,0}}, +/* 61262 */ {(13<<2)|2,{118,109,0}}, +/* 61263 */ {(13<<2)|2,{118,109,0}}, +/* 61264 */ {(13<<2)|2,{118,110,0}}, +/* 61265 */ {(13<<2)|2,{118,110,0}}, +/* 61266 */ {(13<<2)|2,{118,110,0}}, +/* 61267 */ {(13<<2)|2,{118,110,0}}, +/* 61268 */ {(13<<2)|2,{118,110,0}}, +/* 61269 */ {(13<<2)|2,{118,110,0}}, +/* 61270 */ {(13<<2)|2,{118,110,0}}, +/* 61271 */ {(13<<2)|2,{118,110,0}}, +/* 61272 */ {(13<<2)|2,{118,112,0}}, +/* 61273 */ {(13<<2)|2,{118,112,0}}, +/* 61274 */ {(13<<2)|2,{118,112,0}}, +/* 61275 */ {(13<<2)|2,{118,112,0}}, +/* 61276 */ {(13<<2)|2,{118,112,0}}, +/* 61277 */ {(13<<2)|2,{118,112,0}}, +/* 61278 */ {(13<<2)|2,{118,112,0}}, +/* 61279 */ {(13<<2)|2,{118,112,0}}, +/* 61280 */ {(13<<2)|2,{118,114,0}}, +/* 61281 */ {(13<<2)|2,{118,114,0}}, +/* 61282 */ {(13<<2)|2,{118,114,0}}, +/* 61283 */ {(13<<2)|2,{118,114,0}}, +/* 61284 */ {(13<<2)|2,{118,114,0}}, +/* 61285 */ {(13<<2)|2,{118,114,0}}, +/* 61286 */ {(13<<2)|2,{118,114,0}}, +/* 61287 */ {(13<<2)|2,{118,114,0}}, +/* 61288 */ {(13<<2)|2,{118,117,0}}, +/* 61289 */ {(13<<2)|2,{118,117,0}}, +/* 61290 */ {(13<<2)|2,{118,117,0}}, +/* 61291 */ {(13<<2)|2,{118,117,0}}, +/* 61292 */ {(13<<2)|2,{118,117,0}}, +/* 61293 */ {(13<<2)|2,{118,117,0}}, +/* 61294 */ {(13<<2)|2,{118,117,0}}, +/* 61295 */ {(13<<2)|2,{118,117,0}}, +/* 61296 */ {(14<<2)|2,{118,58,0}}, +/* 61297 */ {(14<<2)|2,{118,58,0}}, +/* 61298 */ {(14<<2)|2,{118,58,0}}, +/* 61299 */ {(14<<2)|2,{118,58,0}}, +/* 61300 */ {(14<<2)|2,{118,66,0}}, +/* 61301 */ {(14<<2)|2,{118,66,0}}, +/* 61302 */ {(14<<2)|2,{118,66,0}}, +/* 61303 */ {(14<<2)|2,{118,66,0}}, +/* 61304 */ {(14<<2)|2,{118,67,0}}, +/* 61305 */ {(14<<2)|2,{118,67,0}}, +/* 61306 */ {(14<<2)|2,{118,67,0}}, +/* 61307 */ {(14<<2)|2,{118,67,0}}, +/* 61308 */ {(14<<2)|2,{118,68,0}}, +/* 61309 */ {(14<<2)|2,{118,68,0}}, +/* 61310 */ {(14<<2)|2,{118,68,0}}, +/* 61311 */ {(14<<2)|2,{118,68,0}}, +/* 61312 */ {(14<<2)|2,{118,69,0}}, +/* 61313 */ {(14<<2)|2,{118,69,0}}, +/* 61314 */ {(14<<2)|2,{118,69,0}}, +/* 61315 */ {(14<<2)|2,{118,69,0}}, +/* 61316 */ {(14<<2)|2,{118,70,0}}, +/* 61317 */ {(14<<2)|2,{118,70,0}}, +/* 61318 */ {(14<<2)|2,{118,70,0}}, +/* 61319 */ {(14<<2)|2,{118,70,0}}, +/* 61320 */ {(14<<2)|2,{118,71,0}}, +/* 61321 */ {(14<<2)|2,{118,71,0}}, +/* 61322 */ {(14<<2)|2,{118,71,0}}, +/* 61323 */ {(14<<2)|2,{118,71,0}}, +/* 61324 */ {(14<<2)|2,{118,72,0}}, +/* 61325 */ {(14<<2)|2,{118,72,0}}, +/* 61326 */ {(14<<2)|2,{118,72,0}}, +/* 61327 */ {(14<<2)|2,{118,72,0}}, +/* 61328 */ {(14<<2)|2,{118,73,0}}, +/* 61329 */ {(14<<2)|2,{118,73,0}}, +/* 61330 */ {(14<<2)|2,{118,73,0}}, +/* 61331 */ {(14<<2)|2,{118,73,0}}, +/* 61332 */ {(14<<2)|2,{118,74,0}}, +/* 61333 */ {(14<<2)|2,{118,74,0}}, +/* 61334 */ {(14<<2)|2,{118,74,0}}, +/* 61335 */ {(14<<2)|2,{118,74,0}}, +/* 61336 */ {(14<<2)|2,{118,75,0}}, +/* 61337 */ {(14<<2)|2,{118,75,0}}, +/* 61338 */ {(14<<2)|2,{118,75,0}}, +/* 61339 */ {(14<<2)|2,{118,75,0}}, +/* 61340 */ {(14<<2)|2,{118,76,0}}, +/* 61341 */ {(14<<2)|2,{118,76,0}}, +/* 61342 */ {(14<<2)|2,{118,76,0}}, +/* 61343 */ {(14<<2)|2,{118,76,0}}, +/* 61344 */ {(14<<2)|2,{118,77,0}}, +/* 61345 */ {(14<<2)|2,{118,77,0}}, +/* 61346 */ {(14<<2)|2,{118,77,0}}, +/* 61347 */ {(14<<2)|2,{118,77,0}}, +/* 61348 */ {(14<<2)|2,{118,78,0}}, +/* 61349 */ {(14<<2)|2,{118,78,0}}, +/* 61350 */ {(14<<2)|2,{118,78,0}}, +/* 61351 */ {(14<<2)|2,{118,78,0}}, +/* 61352 */ {(14<<2)|2,{118,79,0}}, +/* 61353 */ {(14<<2)|2,{118,79,0}}, +/* 61354 */ {(14<<2)|2,{118,79,0}}, +/* 61355 */ {(14<<2)|2,{118,79,0}}, +/* 61356 */ {(14<<2)|2,{118,80,0}}, +/* 61357 */ {(14<<2)|2,{118,80,0}}, +/* 61358 */ {(14<<2)|2,{118,80,0}}, +/* 61359 */ {(14<<2)|2,{118,80,0}}, +/* 61360 */ {(14<<2)|2,{118,81,0}}, +/* 61361 */ {(14<<2)|2,{118,81,0}}, +/* 61362 */ {(14<<2)|2,{118,81,0}}, +/* 61363 */ {(14<<2)|2,{118,81,0}}, +/* 61364 */ {(14<<2)|2,{118,82,0}}, +/* 61365 */ {(14<<2)|2,{118,82,0}}, +/* 61366 */ {(14<<2)|2,{118,82,0}}, +/* 61367 */ {(14<<2)|2,{118,82,0}}, +/* 61368 */ {(14<<2)|2,{118,83,0}}, +/* 61369 */ {(14<<2)|2,{118,83,0}}, +/* 61370 */ {(14<<2)|2,{118,83,0}}, +/* 61371 */ {(14<<2)|2,{118,83,0}}, +/* 61372 */ {(14<<2)|2,{118,84,0}}, +/* 61373 */ {(14<<2)|2,{118,84,0}}, +/* 61374 */ {(14<<2)|2,{118,84,0}}, +/* 61375 */ {(14<<2)|2,{118,84,0}}, +/* 61376 */ {(14<<2)|2,{118,85,0}}, +/* 61377 */ {(14<<2)|2,{118,85,0}}, +/* 61378 */ {(14<<2)|2,{118,85,0}}, +/* 61379 */ {(14<<2)|2,{118,85,0}}, +/* 61380 */ {(14<<2)|2,{118,86,0}}, +/* 61381 */ {(14<<2)|2,{118,86,0}}, +/* 61382 */ {(14<<2)|2,{118,86,0}}, +/* 61383 */ {(14<<2)|2,{118,86,0}}, +/* 61384 */ {(14<<2)|2,{118,87,0}}, +/* 61385 */ {(14<<2)|2,{118,87,0}}, +/* 61386 */ {(14<<2)|2,{118,87,0}}, +/* 61387 */ {(14<<2)|2,{118,87,0}}, +/* 61388 */ {(14<<2)|2,{118,89,0}}, +/* 61389 */ {(14<<2)|2,{118,89,0}}, +/* 61390 */ {(14<<2)|2,{118,89,0}}, +/* 61391 */ {(14<<2)|2,{118,89,0}}, +/* 61392 */ {(14<<2)|2,{118,106,0}}, +/* 61393 */ {(14<<2)|2,{118,106,0}}, +/* 61394 */ {(14<<2)|2,{118,106,0}}, +/* 61395 */ {(14<<2)|2,{118,106,0}}, +/* 61396 */ {(14<<2)|2,{118,107,0}}, +/* 61397 */ {(14<<2)|2,{118,107,0}}, +/* 61398 */ {(14<<2)|2,{118,107,0}}, +/* 61399 */ {(14<<2)|2,{118,107,0}}, +/* 61400 */ {(14<<2)|2,{118,113,0}}, +/* 61401 */ {(14<<2)|2,{118,113,0}}, +/* 61402 */ {(14<<2)|2,{118,113,0}}, +/* 61403 */ {(14<<2)|2,{118,113,0}}, +/* 61404 */ {(14<<2)|2,{118,118,0}}, +/* 61405 */ {(14<<2)|2,{118,118,0}}, +/* 61406 */ {(14<<2)|2,{118,118,0}}, +/* 61407 */ {(14<<2)|2,{118,118,0}}, +/* 61408 */ {(14<<2)|2,{118,119,0}}, +/* 61409 */ {(14<<2)|2,{118,119,0}}, +/* 61410 */ {(14<<2)|2,{118,119,0}}, +/* 61411 */ {(14<<2)|2,{118,119,0}}, +/* 61412 */ {(14<<2)|2,{118,120,0}}, +/* 61413 */ {(14<<2)|2,{118,120,0}}, +/* 61414 */ {(14<<2)|2,{118,120,0}}, +/* 61415 */ {(14<<2)|2,{118,120,0}}, +/* 61416 */ {(14<<2)|2,{118,121,0}}, +/* 61417 */ {(14<<2)|2,{118,121,0}}, +/* 61418 */ {(14<<2)|2,{118,121,0}}, +/* 61419 */ {(14<<2)|2,{118,121,0}}, +/* 61420 */ {(14<<2)|2,{118,122,0}}, +/* 61421 */ {(14<<2)|2,{118,122,0}}, +/* 61422 */ {(14<<2)|2,{118,122,0}}, +/* 61423 */ {(14<<2)|2,{118,122,0}}, +/* 61424 */ {(15<<2)|2,{118,38,0}}, +/* 61425 */ {(15<<2)|2,{118,38,0}}, +/* 61426 */ {(15<<2)|2,{118,42,0}}, +/* 61427 */ {(15<<2)|2,{118,42,0}}, +/* 61428 */ {(15<<2)|2,{118,44,0}}, +/* 61429 */ {(15<<2)|2,{118,44,0}}, +/* 61430 */ {(15<<2)|2,{118,59,0}}, +/* 61431 */ {(15<<2)|2,{118,59,0}}, +/* 61432 */ {(15<<2)|2,{118,88,0}}, +/* 61433 */ {(15<<2)|2,{118,88,0}}, +/* 61434 */ {(15<<2)|2,{118,90,0}}, +/* 61435 */ {(15<<2)|2,{118,90,0}}, +/* 61436 */ {(7<<2)|1,{118,0,0}}, +/* 61437 */ {(7<<2)|1,{118,0,0}}, +/* 61438 */ {(7<<2)|1,{118,0,0}}, +/* 61439 */ {(7<<2)|1,{118,0,0}}, +/* 61440 */ {(12<<2)|2,{119,48,0}}, +/* 61441 */ {(12<<2)|2,{119,48,0}}, +/* 61442 */ {(12<<2)|2,{119,48,0}}, +/* 61443 */ {(12<<2)|2,{119,48,0}}, +/* 61444 */ {(12<<2)|2,{119,48,0}}, +/* 61445 */ {(12<<2)|2,{119,48,0}}, +/* 61446 */ {(12<<2)|2,{119,48,0}}, +/* 61447 */ {(12<<2)|2,{119,48,0}}, +/* 61448 */ {(12<<2)|2,{119,48,0}}, +/* 61449 */ {(12<<2)|2,{119,48,0}}, +/* 61450 */ {(12<<2)|2,{119,48,0}}, +/* 61451 */ {(12<<2)|2,{119,48,0}}, +/* 61452 */ {(12<<2)|2,{119,48,0}}, +/* 61453 */ {(12<<2)|2,{119,48,0}}, +/* 61454 */ {(12<<2)|2,{119,48,0}}, +/* 61455 */ {(12<<2)|2,{119,48,0}}, +/* 61456 */ {(12<<2)|2,{119,49,0}}, +/* 61457 */ {(12<<2)|2,{119,49,0}}, +/* 61458 */ {(12<<2)|2,{119,49,0}}, +/* 61459 */ {(12<<2)|2,{119,49,0}}, +/* 61460 */ {(12<<2)|2,{119,49,0}}, +/* 61461 */ {(12<<2)|2,{119,49,0}}, +/* 61462 */ {(12<<2)|2,{119,49,0}}, +/* 61463 */ {(12<<2)|2,{119,49,0}}, +/* 61464 */ {(12<<2)|2,{119,49,0}}, +/* 61465 */ {(12<<2)|2,{119,49,0}}, +/* 61466 */ {(12<<2)|2,{119,49,0}}, +/* 61467 */ {(12<<2)|2,{119,49,0}}, +/* 61468 */ {(12<<2)|2,{119,49,0}}, +/* 61469 */ {(12<<2)|2,{119,49,0}}, +/* 61470 */ {(12<<2)|2,{119,49,0}}, +/* 61471 */ {(12<<2)|2,{119,49,0}}, +/* 61472 */ {(12<<2)|2,{119,50,0}}, +/* 61473 */ {(12<<2)|2,{119,50,0}}, +/* 61474 */ {(12<<2)|2,{119,50,0}}, +/* 61475 */ {(12<<2)|2,{119,50,0}}, +/* 61476 */ {(12<<2)|2,{119,50,0}}, +/* 61477 */ {(12<<2)|2,{119,50,0}}, +/* 61478 */ {(12<<2)|2,{119,50,0}}, +/* 61479 */ {(12<<2)|2,{119,50,0}}, +/* 61480 */ {(12<<2)|2,{119,50,0}}, +/* 61481 */ {(12<<2)|2,{119,50,0}}, +/* 61482 */ {(12<<2)|2,{119,50,0}}, +/* 61483 */ {(12<<2)|2,{119,50,0}}, +/* 61484 */ {(12<<2)|2,{119,50,0}}, +/* 61485 */ {(12<<2)|2,{119,50,0}}, +/* 61486 */ {(12<<2)|2,{119,50,0}}, +/* 61487 */ {(12<<2)|2,{119,50,0}}, +/* 61488 */ {(12<<2)|2,{119,97,0}}, +/* 61489 */ {(12<<2)|2,{119,97,0}}, +/* 61490 */ {(12<<2)|2,{119,97,0}}, +/* 61491 */ {(12<<2)|2,{119,97,0}}, +/* 61492 */ {(12<<2)|2,{119,97,0}}, +/* 61493 */ {(12<<2)|2,{119,97,0}}, +/* 61494 */ {(12<<2)|2,{119,97,0}}, +/* 61495 */ {(12<<2)|2,{119,97,0}}, +/* 61496 */ {(12<<2)|2,{119,97,0}}, +/* 61497 */ {(12<<2)|2,{119,97,0}}, +/* 61498 */ {(12<<2)|2,{119,97,0}}, +/* 61499 */ {(12<<2)|2,{119,97,0}}, +/* 61500 */ {(12<<2)|2,{119,97,0}}, +/* 61501 */ {(12<<2)|2,{119,97,0}}, +/* 61502 */ {(12<<2)|2,{119,97,0}}, +/* 61503 */ {(12<<2)|2,{119,97,0}}, +/* 61504 */ {(12<<2)|2,{119,99,0}}, +/* 61505 */ {(12<<2)|2,{119,99,0}}, +/* 61506 */ {(12<<2)|2,{119,99,0}}, +/* 61507 */ {(12<<2)|2,{119,99,0}}, +/* 61508 */ {(12<<2)|2,{119,99,0}}, +/* 61509 */ {(12<<2)|2,{119,99,0}}, +/* 61510 */ {(12<<2)|2,{119,99,0}}, +/* 61511 */ {(12<<2)|2,{119,99,0}}, +/* 61512 */ {(12<<2)|2,{119,99,0}}, +/* 61513 */ {(12<<2)|2,{119,99,0}}, +/* 61514 */ {(12<<2)|2,{119,99,0}}, +/* 61515 */ {(12<<2)|2,{119,99,0}}, +/* 61516 */ {(12<<2)|2,{119,99,0}}, +/* 61517 */ {(12<<2)|2,{119,99,0}}, +/* 61518 */ {(12<<2)|2,{119,99,0}}, +/* 61519 */ {(12<<2)|2,{119,99,0}}, +/* 61520 */ {(12<<2)|2,{119,101,0}}, +/* 61521 */ {(12<<2)|2,{119,101,0}}, +/* 61522 */ {(12<<2)|2,{119,101,0}}, +/* 61523 */ {(12<<2)|2,{119,101,0}}, +/* 61524 */ {(12<<2)|2,{119,101,0}}, +/* 61525 */ {(12<<2)|2,{119,101,0}}, +/* 61526 */ {(12<<2)|2,{119,101,0}}, +/* 61527 */ {(12<<2)|2,{119,101,0}}, +/* 61528 */ {(12<<2)|2,{119,101,0}}, +/* 61529 */ {(12<<2)|2,{119,101,0}}, +/* 61530 */ {(12<<2)|2,{119,101,0}}, +/* 61531 */ {(12<<2)|2,{119,101,0}}, +/* 61532 */ {(12<<2)|2,{119,101,0}}, +/* 61533 */ {(12<<2)|2,{119,101,0}}, +/* 61534 */ {(12<<2)|2,{119,101,0}}, +/* 61535 */ {(12<<2)|2,{119,101,0}}, +/* 61536 */ {(12<<2)|2,{119,105,0}}, +/* 61537 */ {(12<<2)|2,{119,105,0}}, +/* 61538 */ {(12<<2)|2,{119,105,0}}, +/* 61539 */ {(12<<2)|2,{119,105,0}}, +/* 61540 */ {(12<<2)|2,{119,105,0}}, +/* 61541 */ {(12<<2)|2,{119,105,0}}, +/* 61542 */ {(12<<2)|2,{119,105,0}}, +/* 61543 */ {(12<<2)|2,{119,105,0}}, +/* 61544 */ {(12<<2)|2,{119,105,0}}, +/* 61545 */ {(12<<2)|2,{119,105,0}}, +/* 61546 */ {(12<<2)|2,{119,105,0}}, +/* 61547 */ {(12<<2)|2,{119,105,0}}, +/* 61548 */ {(12<<2)|2,{119,105,0}}, +/* 61549 */ {(12<<2)|2,{119,105,0}}, +/* 61550 */ {(12<<2)|2,{119,105,0}}, +/* 61551 */ {(12<<2)|2,{119,105,0}}, +/* 61552 */ {(12<<2)|2,{119,111,0}}, +/* 61553 */ {(12<<2)|2,{119,111,0}}, +/* 61554 */ {(12<<2)|2,{119,111,0}}, +/* 61555 */ {(12<<2)|2,{119,111,0}}, +/* 61556 */ {(12<<2)|2,{119,111,0}}, +/* 61557 */ {(12<<2)|2,{119,111,0}}, +/* 61558 */ {(12<<2)|2,{119,111,0}}, +/* 61559 */ {(12<<2)|2,{119,111,0}}, +/* 61560 */ {(12<<2)|2,{119,111,0}}, +/* 61561 */ {(12<<2)|2,{119,111,0}}, +/* 61562 */ {(12<<2)|2,{119,111,0}}, +/* 61563 */ {(12<<2)|2,{119,111,0}}, +/* 61564 */ {(12<<2)|2,{119,111,0}}, +/* 61565 */ {(12<<2)|2,{119,111,0}}, +/* 61566 */ {(12<<2)|2,{119,111,0}}, +/* 61567 */ {(12<<2)|2,{119,111,0}}, +/* 61568 */ {(12<<2)|2,{119,115,0}}, +/* 61569 */ {(12<<2)|2,{119,115,0}}, +/* 61570 */ {(12<<2)|2,{119,115,0}}, +/* 61571 */ {(12<<2)|2,{119,115,0}}, +/* 61572 */ {(12<<2)|2,{119,115,0}}, +/* 61573 */ {(12<<2)|2,{119,115,0}}, +/* 61574 */ {(12<<2)|2,{119,115,0}}, +/* 61575 */ {(12<<2)|2,{119,115,0}}, +/* 61576 */ {(12<<2)|2,{119,115,0}}, +/* 61577 */ {(12<<2)|2,{119,115,0}}, +/* 61578 */ {(12<<2)|2,{119,115,0}}, +/* 61579 */ {(12<<2)|2,{119,115,0}}, +/* 61580 */ {(12<<2)|2,{119,115,0}}, +/* 61581 */ {(12<<2)|2,{119,115,0}}, +/* 61582 */ {(12<<2)|2,{119,115,0}}, +/* 61583 */ {(12<<2)|2,{119,115,0}}, +/* 61584 */ {(12<<2)|2,{119,116,0}}, +/* 61585 */ {(12<<2)|2,{119,116,0}}, +/* 61586 */ {(12<<2)|2,{119,116,0}}, +/* 61587 */ {(12<<2)|2,{119,116,0}}, +/* 61588 */ {(12<<2)|2,{119,116,0}}, +/* 61589 */ {(12<<2)|2,{119,116,0}}, +/* 61590 */ {(12<<2)|2,{119,116,0}}, +/* 61591 */ {(12<<2)|2,{119,116,0}}, +/* 61592 */ {(12<<2)|2,{119,116,0}}, +/* 61593 */ {(12<<2)|2,{119,116,0}}, +/* 61594 */ {(12<<2)|2,{119,116,0}}, +/* 61595 */ {(12<<2)|2,{119,116,0}}, +/* 61596 */ {(12<<2)|2,{119,116,0}}, +/* 61597 */ {(12<<2)|2,{119,116,0}}, +/* 61598 */ {(12<<2)|2,{119,116,0}}, +/* 61599 */ {(12<<2)|2,{119,116,0}}, +/* 61600 */ {(13<<2)|2,{119,32,0}}, +/* 61601 */ {(13<<2)|2,{119,32,0}}, +/* 61602 */ {(13<<2)|2,{119,32,0}}, +/* 61603 */ {(13<<2)|2,{119,32,0}}, +/* 61604 */ {(13<<2)|2,{119,32,0}}, +/* 61605 */ {(13<<2)|2,{119,32,0}}, +/* 61606 */ {(13<<2)|2,{119,32,0}}, +/* 61607 */ {(13<<2)|2,{119,32,0}}, +/* 61608 */ {(13<<2)|2,{119,37,0}}, +/* 61609 */ {(13<<2)|2,{119,37,0}}, +/* 61610 */ {(13<<2)|2,{119,37,0}}, +/* 61611 */ {(13<<2)|2,{119,37,0}}, +/* 61612 */ {(13<<2)|2,{119,37,0}}, +/* 61613 */ {(13<<2)|2,{119,37,0}}, +/* 61614 */ {(13<<2)|2,{119,37,0}}, +/* 61615 */ {(13<<2)|2,{119,37,0}}, +/* 61616 */ {(13<<2)|2,{119,45,0}}, +/* 61617 */ {(13<<2)|2,{119,45,0}}, +/* 61618 */ {(13<<2)|2,{119,45,0}}, +/* 61619 */ {(13<<2)|2,{119,45,0}}, +/* 61620 */ {(13<<2)|2,{119,45,0}}, +/* 61621 */ {(13<<2)|2,{119,45,0}}, +/* 61622 */ {(13<<2)|2,{119,45,0}}, +/* 61623 */ {(13<<2)|2,{119,45,0}}, +/* 61624 */ {(13<<2)|2,{119,46,0}}, +/* 61625 */ {(13<<2)|2,{119,46,0}}, +/* 61626 */ {(13<<2)|2,{119,46,0}}, +/* 61627 */ {(13<<2)|2,{119,46,0}}, +/* 61628 */ {(13<<2)|2,{119,46,0}}, +/* 61629 */ {(13<<2)|2,{119,46,0}}, +/* 61630 */ {(13<<2)|2,{119,46,0}}, +/* 61631 */ {(13<<2)|2,{119,46,0}}, +/* 61632 */ {(13<<2)|2,{119,47,0}}, +/* 61633 */ {(13<<2)|2,{119,47,0}}, +/* 61634 */ {(13<<2)|2,{119,47,0}}, +/* 61635 */ {(13<<2)|2,{119,47,0}}, +/* 61636 */ {(13<<2)|2,{119,47,0}}, +/* 61637 */ {(13<<2)|2,{119,47,0}}, +/* 61638 */ {(13<<2)|2,{119,47,0}}, +/* 61639 */ {(13<<2)|2,{119,47,0}}, +/* 61640 */ {(13<<2)|2,{119,51,0}}, +/* 61641 */ {(13<<2)|2,{119,51,0}}, +/* 61642 */ {(13<<2)|2,{119,51,0}}, +/* 61643 */ {(13<<2)|2,{119,51,0}}, +/* 61644 */ {(13<<2)|2,{119,51,0}}, +/* 61645 */ {(13<<2)|2,{119,51,0}}, +/* 61646 */ {(13<<2)|2,{119,51,0}}, +/* 61647 */ {(13<<2)|2,{119,51,0}}, +/* 61648 */ {(13<<2)|2,{119,52,0}}, +/* 61649 */ {(13<<2)|2,{119,52,0}}, +/* 61650 */ {(13<<2)|2,{119,52,0}}, +/* 61651 */ {(13<<2)|2,{119,52,0}}, +/* 61652 */ {(13<<2)|2,{119,52,0}}, +/* 61653 */ {(13<<2)|2,{119,52,0}}, +/* 61654 */ {(13<<2)|2,{119,52,0}}, +/* 61655 */ {(13<<2)|2,{119,52,0}}, +/* 61656 */ {(13<<2)|2,{119,53,0}}, +/* 61657 */ {(13<<2)|2,{119,53,0}}, +/* 61658 */ {(13<<2)|2,{119,53,0}}, +/* 61659 */ {(13<<2)|2,{119,53,0}}, +/* 61660 */ {(13<<2)|2,{119,53,0}}, +/* 61661 */ {(13<<2)|2,{119,53,0}}, +/* 61662 */ {(13<<2)|2,{119,53,0}}, +/* 61663 */ {(13<<2)|2,{119,53,0}}, +/* 61664 */ {(13<<2)|2,{119,54,0}}, +/* 61665 */ {(13<<2)|2,{119,54,0}}, +/* 61666 */ {(13<<2)|2,{119,54,0}}, +/* 61667 */ {(13<<2)|2,{119,54,0}}, +/* 61668 */ {(13<<2)|2,{119,54,0}}, +/* 61669 */ {(13<<2)|2,{119,54,0}}, +/* 61670 */ {(13<<2)|2,{119,54,0}}, +/* 61671 */ {(13<<2)|2,{119,54,0}}, +/* 61672 */ {(13<<2)|2,{119,55,0}}, +/* 61673 */ {(13<<2)|2,{119,55,0}}, +/* 61674 */ {(13<<2)|2,{119,55,0}}, +/* 61675 */ {(13<<2)|2,{119,55,0}}, +/* 61676 */ {(13<<2)|2,{119,55,0}}, +/* 61677 */ {(13<<2)|2,{119,55,0}}, +/* 61678 */ {(13<<2)|2,{119,55,0}}, +/* 61679 */ {(13<<2)|2,{119,55,0}}, +/* 61680 */ {(13<<2)|2,{119,56,0}}, +/* 61681 */ {(13<<2)|2,{119,56,0}}, +/* 61682 */ {(13<<2)|2,{119,56,0}}, +/* 61683 */ {(13<<2)|2,{119,56,0}}, +/* 61684 */ {(13<<2)|2,{119,56,0}}, +/* 61685 */ {(13<<2)|2,{119,56,0}}, +/* 61686 */ {(13<<2)|2,{119,56,0}}, +/* 61687 */ {(13<<2)|2,{119,56,0}}, +/* 61688 */ {(13<<2)|2,{119,57,0}}, +/* 61689 */ {(13<<2)|2,{119,57,0}}, +/* 61690 */ {(13<<2)|2,{119,57,0}}, +/* 61691 */ {(13<<2)|2,{119,57,0}}, +/* 61692 */ {(13<<2)|2,{119,57,0}}, +/* 61693 */ {(13<<2)|2,{119,57,0}}, +/* 61694 */ {(13<<2)|2,{119,57,0}}, +/* 61695 */ {(13<<2)|2,{119,57,0}}, +/* 61696 */ {(13<<2)|2,{119,61,0}}, +/* 61697 */ {(13<<2)|2,{119,61,0}}, +/* 61698 */ {(13<<2)|2,{119,61,0}}, +/* 61699 */ {(13<<2)|2,{119,61,0}}, +/* 61700 */ {(13<<2)|2,{119,61,0}}, +/* 61701 */ {(13<<2)|2,{119,61,0}}, +/* 61702 */ {(13<<2)|2,{119,61,0}}, +/* 61703 */ {(13<<2)|2,{119,61,0}}, +/* 61704 */ {(13<<2)|2,{119,65,0}}, +/* 61705 */ {(13<<2)|2,{119,65,0}}, +/* 61706 */ {(13<<2)|2,{119,65,0}}, +/* 61707 */ {(13<<2)|2,{119,65,0}}, +/* 61708 */ {(13<<2)|2,{119,65,0}}, +/* 61709 */ {(13<<2)|2,{119,65,0}}, +/* 61710 */ {(13<<2)|2,{119,65,0}}, +/* 61711 */ {(13<<2)|2,{119,65,0}}, +/* 61712 */ {(13<<2)|2,{119,95,0}}, +/* 61713 */ {(13<<2)|2,{119,95,0}}, +/* 61714 */ {(13<<2)|2,{119,95,0}}, +/* 61715 */ {(13<<2)|2,{119,95,0}}, +/* 61716 */ {(13<<2)|2,{119,95,0}}, +/* 61717 */ {(13<<2)|2,{119,95,0}}, +/* 61718 */ {(13<<2)|2,{119,95,0}}, +/* 61719 */ {(13<<2)|2,{119,95,0}}, +/* 61720 */ {(13<<2)|2,{119,98,0}}, +/* 61721 */ {(13<<2)|2,{119,98,0}}, +/* 61722 */ {(13<<2)|2,{119,98,0}}, +/* 61723 */ {(13<<2)|2,{119,98,0}}, +/* 61724 */ {(13<<2)|2,{119,98,0}}, +/* 61725 */ {(13<<2)|2,{119,98,0}}, +/* 61726 */ {(13<<2)|2,{119,98,0}}, +/* 61727 */ {(13<<2)|2,{119,98,0}}, +/* 61728 */ {(13<<2)|2,{119,100,0}}, +/* 61729 */ {(13<<2)|2,{119,100,0}}, +/* 61730 */ {(13<<2)|2,{119,100,0}}, +/* 61731 */ {(13<<2)|2,{119,100,0}}, +/* 61732 */ {(13<<2)|2,{119,100,0}}, +/* 61733 */ {(13<<2)|2,{119,100,0}}, +/* 61734 */ {(13<<2)|2,{119,100,0}}, +/* 61735 */ {(13<<2)|2,{119,100,0}}, +/* 61736 */ {(13<<2)|2,{119,102,0}}, +/* 61737 */ {(13<<2)|2,{119,102,0}}, +/* 61738 */ {(13<<2)|2,{119,102,0}}, +/* 61739 */ {(13<<2)|2,{119,102,0}}, +/* 61740 */ {(13<<2)|2,{119,102,0}}, +/* 61741 */ {(13<<2)|2,{119,102,0}}, +/* 61742 */ {(13<<2)|2,{119,102,0}}, +/* 61743 */ {(13<<2)|2,{119,102,0}}, +/* 61744 */ {(13<<2)|2,{119,103,0}}, +/* 61745 */ {(13<<2)|2,{119,103,0}}, +/* 61746 */ {(13<<2)|2,{119,103,0}}, +/* 61747 */ {(13<<2)|2,{119,103,0}}, +/* 61748 */ {(13<<2)|2,{119,103,0}}, +/* 61749 */ {(13<<2)|2,{119,103,0}}, +/* 61750 */ {(13<<2)|2,{119,103,0}}, +/* 61751 */ {(13<<2)|2,{119,103,0}}, +/* 61752 */ {(13<<2)|2,{119,104,0}}, +/* 61753 */ {(13<<2)|2,{119,104,0}}, +/* 61754 */ {(13<<2)|2,{119,104,0}}, +/* 61755 */ {(13<<2)|2,{119,104,0}}, +/* 61756 */ {(13<<2)|2,{119,104,0}}, +/* 61757 */ {(13<<2)|2,{119,104,0}}, +/* 61758 */ {(13<<2)|2,{119,104,0}}, +/* 61759 */ {(13<<2)|2,{119,104,0}}, +/* 61760 */ {(13<<2)|2,{119,108,0}}, +/* 61761 */ {(13<<2)|2,{119,108,0}}, +/* 61762 */ {(13<<2)|2,{119,108,0}}, +/* 61763 */ {(13<<2)|2,{119,108,0}}, +/* 61764 */ {(13<<2)|2,{119,108,0}}, +/* 61765 */ {(13<<2)|2,{119,108,0}}, +/* 61766 */ {(13<<2)|2,{119,108,0}}, +/* 61767 */ {(13<<2)|2,{119,108,0}}, +/* 61768 */ {(13<<2)|2,{119,109,0}}, +/* 61769 */ {(13<<2)|2,{119,109,0}}, +/* 61770 */ {(13<<2)|2,{119,109,0}}, +/* 61771 */ {(13<<2)|2,{119,109,0}}, +/* 61772 */ {(13<<2)|2,{119,109,0}}, +/* 61773 */ {(13<<2)|2,{119,109,0}}, +/* 61774 */ {(13<<2)|2,{119,109,0}}, +/* 61775 */ {(13<<2)|2,{119,109,0}}, +/* 61776 */ {(13<<2)|2,{119,110,0}}, +/* 61777 */ {(13<<2)|2,{119,110,0}}, +/* 61778 */ {(13<<2)|2,{119,110,0}}, +/* 61779 */ {(13<<2)|2,{119,110,0}}, +/* 61780 */ {(13<<2)|2,{119,110,0}}, +/* 61781 */ {(13<<2)|2,{119,110,0}}, +/* 61782 */ {(13<<2)|2,{119,110,0}}, +/* 61783 */ {(13<<2)|2,{119,110,0}}, +/* 61784 */ {(13<<2)|2,{119,112,0}}, +/* 61785 */ {(13<<2)|2,{119,112,0}}, +/* 61786 */ {(13<<2)|2,{119,112,0}}, +/* 61787 */ {(13<<2)|2,{119,112,0}}, +/* 61788 */ {(13<<2)|2,{119,112,0}}, +/* 61789 */ {(13<<2)|2,{119,112,0}}, +/* 61790 */ {(13<<2)|2,{119,112,0}}, +/* 61791 */ {(13<<2)|2,{119,112,0}}, +/* 61792 */ {(13<<2)|2,{119,114,0}}, +/* 61793 */ {(13<<2)|2,{119,114,0}}, +/* 61794 */ {(13<<2)|2,{119,114,0}}, +/* 61795 */ {(13<<2)|2,{119,114,0}}, +/* 61796 */ {(13<<2)|2,{119,114,0}}, +/* 61797 */ {(13<<2)|2,{119,114,0}}, +/* 61798 */ {(13<<2)|2,{119,114,0}}, +/* 61799 */ {(13<<2)|2,{119,114,0}}, +/* 61800 */ {(13<<2)|2,{119,117,0}}, +/* 61801 */ {(13<<2)|2,{119,117,0}}, +/* 61802 */ {(13<<2)|2,{119,117,0}}, +/* 61803 */ {(13<<2)|2,{119,117,0}}, +/* 61804 */ {(13<<2)|2,{119,117,0}}, +/* 61805 */ {(13<<2)|2,{119,117,0}}, +/* 61806 */ {(13<<2)|2,{119,117,0}}, +/* 61807 */ {(13<<2)|2,{119,117,0}}, +/* 61808 */ {(14<<2)|2,{119,58,0}}, +/* 61809 */ {(14<<2)|2,{119,58,0}}, +/* 61810 */ {(14<<2)|2,{119,58,0}}, +/* 61811 */ {(14<<2)|2,{119,58,0}}, +/* 61812 */ {(14<<2)|2,{119,66,0}}, +/* 61813 */ {(14<<2)|2,{119,66,0}}, +/* 61814 */ {(14<<2)|2,{119,66,0}}, +/* 61815 */ {(14<<2)|2,{119,66,0}}, +/* 61816 */ {(14<<2)|2,{119,67,0}}, +/* 61817 */ {(14<<2)|2,{119,67,0}}, +/* 61818 */ {(14<<2)|2,{119,67,0}}, +/* 61819 */ {(14<<2)|2,{119,67,0}}, +/* 61820 */ {(14<<2)|2,{119,68,0}}, +/* 61821 */ {(14<<2)|2,{119,68,0}}, +/* 61822 */ {(14<<2)|2,{119,68,0}}, +/* 61823 */ {(14<<2)|2,{119,68,0}}, +/* 61824 */ {(14<<2)|2,{119,69,0}}, +/* 61825 */ {(14<<2)|2,{119,69,0}}, +/* 61826 */ {(14<<2)|2,{119,69,0}}, +/* 61827 */ {(14<<2)|2,{119,69,0}}, +/* 61828 */ {(14<<2)|2,{119,70,0}}, +/* 61829 */ {(14<<2)|2,{119,70,0}}, +/* 61830 */ {(14<<2)|2,{119,70,0}}, +/* 61831 */ {(14<<2)|2,{119,70,0}}, +/* 61832 */ {(14<<2)|2,{119,71,0}}, +/* 61833 */ {(14<<2)|2,{119,71,0}}, +/* 61834 */ {(14<<2)|2,{119,71,0}}, +/* 61835 */ {(14<<2)|2,{119,71,0}}, +/* 61836 */ {(14<<2)|2,{119,72,0}}, +/* 61837 */ {(14<<2)|2,{119,72,0}}, +/* 61838 */ {(14<<2)|2,{119,72,0}}, +/* 61839 */ {(14<<2)|2,{119,72,0}}, +/* 61840 */ {(14<<2)|2,{119,73,0}}, +/* 61841 */ {(14<<2)|2,{119,73,0}}, +/* 61842 */ {(14<<2)|2,{119,73,0}}, +/* 61843 */ {(14<<2)|2,{119,73,0}}, +/* 61844 */ {(14<<2)|2,{119,74,0}}, +/* 61845 */ {(14<<2)|2,{119,74,0}}, +/* 61846 */ {(14<<2)|2,{119,74,0}}, +/* 61847 */ {(14<<2)|2,{119,74,0}}, +/* 61848 */ {(14<<2)|2,{119,75,0}}, +/* 61849 */ {(14<<2)|2,{119,75,0}}, +/* 61850 */ {(14<<2)|2,{119,75,0}}, +/* 61851 */ {(14<<2)|2,{119,75,0}}, +/* 61852 */ {(14<<2)|2,{119,76,0}}, +/* 61853 */ {(14<<2)|2,{119,76,0}}, +/* 61854 */ {(14<<2)|2,{119,76,0}}, +/* 61855 */ {(14<<2)|2,{119,76,0}}, +/* 61856 */ {(14<<2)|2,{119,77,0}}, +/* 61857 */ {(14<<2)|2,{119,77,0}}, +/* 61858 */ {(14<<2)|2,{119,77,0}}, +/* 61859 */ {(14<<2)|2,{119,77,0}}, +/* 61860 */ {(14<<2)|2,{119,78,0}}, +/* 61861 */ {(14<<2)|2,{119,78,0}}, +/* 61862 */ {(14<<2)|2,{119,78,0}}, +/* 61863 */ {(14<<2)|2,{119,78,0}}, +/* 61864 */ {(14<<2)|2,{119,79,0}}, +/* 61865 */ {(14<<2)|2,{119,79,0}}, +/* 61866 */ {(14<<2)|2,{119,79,0}}, +/* 61867 */ {(14<<2)|2,{119,79,0}}, +/* 61868 */ {(14<<2)|2,{119,80,0}}, +/* 61869 */ {(14<<2)|2,{119,80,0}}, +/* 61870 */ {(14<<2)|2,{119,80,0}}, +/* 61871 */ {(14<<2)|2,{119,80,0}}, +/* 61872 */ {(14<<2)|2,{119,81,0}}, +/* 61873 */ {(14<<2)|2,{119,81,0}}, +/* 61874 */ {(14<<2)|2,{119,81,0}}, +/* 61875 */ {(14<<2)|2,{119,81,0}}, +/* 61876 */ {(14<<2)|2,{119,82,0}}, +/* 61877 */ {(14<<2)|2,{119,82,0}}, +/* 61878 */ {(14<<2)|2,{119,82,0}}, +/* 61879 */ {(14<<2)|2,{119,82,0}}, +/* 61880 */ {(14<<2)|2,{119,83,0}}, +/* 61881 */ {(14<<2)|2,{119,83,0}}, +/* 61882 */ {(14<<2)|2,{119,83,0}}, +/* 61883 */ {(14<<2)|2,{119,83,0}}, +/* 61884 */ {(14<<2)|2,{119,84,0}}, +/* 61885 */ {(14<<2)|2,{119,84,0}}, +/* 61886 */ {(14<<2)|2,{119,84,0}}, +/* 61887 */ {(14<<2)|2,{119,84,0}}, +/* 61888 */ {(14<<2)|2,{119,85,0}}, +/* 61889 */ {(14<<2)|2,{119,85,0}}, +/* 61890 */ {(14<<2)|2,{119,85,0}}, +/* 61891 */ {(14<<2)|2,{119,85,0}}, +/* 61892 */ {(14<<2)|2,{119,86,0}}, +/* 61893 */ {(14<<2)|2,{119,86,0}}, +/* 61894 */ {(14<<2)|2,{119,86,0}}, +/* 61895 */ {(14<<2)|2,{119,86,0}}, +/* 61896 */ {(14<<2)|2,{119,87,0}}, +/* 61897 */ {(14<<2)|2,{119,87,0}}, +/* 61898 */ {(14<<2)|2,{119,87,0}}, +/* 61899 */ {(14<<2)|2,{119,87,0}}, +/* 61900 */ {(14<<2)|2,{119,89,0}}, +/* 61901 */ {(14<<2)|2,{119,89,0}}, +/* 61902 */ {(14<<2)|2,{119,89,0}}, +/* 61903 */ {(14<<2)|2,{119,89,0}}, +/* 61904 */ {(14<<2)|2,{119,106,0}}, +/* 61905 */ {(14<<2)|2,{119,106,0}}, +/* 61906 */ {(14<<2)|2,{119,106,0}}, +/* 61907 */ {(14<<2)|2,{119,106,0}}, +/* 61908 */ {(14<<2)|2,{119,107,0}}, +/* 61909 */ {(14<<2)|2,{119,107,0}}, +/* 61910 */ {(14<<2)|2,{119,107,0}}, +/* 61911 */ {(14<<2)|2,{119,107,0}}, +/* 61912 */ {(14<<2)|2,{119,113,0}}, +/* 61913 */ {(14<<2)|2,{119,113,0}}, +/* 61914 */ {(14<<2)|2,{119,113,0}}, +/* 61915 */ {(14<<2)|2,{119,113,0}}, +/* 61916 */ {(14<<2)|2,{119,118,0}}, +/* 61917 */ {(14<<2)|2,{119,118,0}}, +/* 61918 */ {(14<<2)|2,{119,118,0}}, +/* 61919 */ {(14<<2)|2,{119,118,0}}, +/* 61920 */ {(14<<2)|2,{119,119,0}}, +/* 61921 */ {(14<<2)|2,{119,119,0}}, +/* 61922 */ {(14<<2)|2,{119,119,0}}, +/* 61923 */ {(14<<2)|2,{119,119,0}}, +/* 61924 */ {(14<<2)|2,{119,120,0}}, +/* 61925 */ {(14<<2)|2,{119,120,0}}, +/* 61926 */ {(14<<2)|2,{119,120,0}}, +/* 61927 */ {(14<<2)|2,{119,120,0}}, +/* 61928 */ {(14<<2)|2,{119,121,0}}, +/* 61929 */ {(14<<2)|2,{119,121,0}}, +/* 61930 */ {(14<<2)|2,{119,121,0}}, +/* 61931 */ {(14<<2)|2,{119,121,0}}, +/* 61932 */ {(14<<2)|2,{119,122,0}}, +/* 61933 */ {(14<<2)|2,{119,122,0}}, +/* 61934 */ {(14<<2)|2,{119,122,0}}, +/* 61935 */ {(14<<2)|2,{119,122,0}}, +/* 61936 */ {(15<<2)|2,{119,38,0}}, +/* 61937 */ {(15<<2)|2,{119,38,0}}, +/* 61938 */ {(15<<2)|2,{119,42,0}}, +/* 61939 */ {(15<<2)|2,{119,42,0}}, +/* 61940 */ {(15<<2)|2,{119,44,0}}, +/* 61941 */ {(15<<2)|2,{119,44,0}}, +/* 61942 */ {(15<<2)|2,{119,59,0}}, +/* 61943 */ {(15<<2)|2,{119,59,0}}, +/* 61944 */ {(15<<2)|2,{119,88,0}}, +/* 61945 */ {(15<<2)|2,{119,88,0}}, +/* 61946 */ {(15<<2)|2,{119,90,0}}, +/* 61947 */ {(15<<2)|2,{119,90,0}}, +/* 61948 */ {(7<<2)|1,{119,0,0}}, +/* 61949 */ {(7<<2)|1,{119,0,0}}, +/* 61950 */ {(7<<2)|1,{119,0,0}}, +/* 61951 */ {(7<<2)|1,{119,0,0}}, +/* 61952 */ {(12<<2)|2,{120,48,0}}, +/* 61953 */ {(12<<2)|2,{120,48,0}}, +/* 61954 */ {(12<<2)|2,{120,48,0}}, +/* 61955 */ {(12<<2)|2,{120,48,0}}, +/* 61956 */ {(12<<2)|2,{120,48,0}}, +/* 61957 */ {(12<<2)|2,{120,48,0}}, +/* 61958 */ {(12<<2)|2,{120,48,0}}, +/* 61959 */ {(12<<2)|2,{120,48,0}}, +/* 61960 */ {(12<<2)|2,{120,48,0}}, +/* 61961 */ {(12<<2)|2,{120,48,0}}, +/* 61962 */ {(12<<2)|2,{120,48,0}}, +/* 61963 */ {(12<<2)|2,{120,48,0}}, +/* 61964 */ {(12<<2)|2,{120,48,0}}, +/* 61965 */ {(12<<2)|2,{120,48,0}}, +/* 61966 */ {(12<<2)|2,{120,48,0}}, +/* 61967 */ {(12<<2)|2,{120,48,0}}, +/* 61968 */ {(12<<2)|2,{120,49,0}}, +/* 61969 */ {(12<<2)|2,{120,49,0}}, +/* 61970 */ {(12<<2)|2,{120,49,0}}, +/* 61971 */ {(12<<2)|2,{120,49,0}}, +/* 61972 */ {(12<<2)|2,{120,49,0}}, +/* 61973 */ {(12<<2)|2,{120,49,0}}, +/* 61974 */ {(12<<2)|2,{120,49,0}}, +/* 61975 */ {(12<<2)|2,{120,49,0}}, +/* 61976 */ {(12<<2)|2,{120,49,0}}, +/* 61977 */ {(12<<2)|2,{120,49,0}}, +/* 61978 */ {(12<<2)|2,{120,49,0}}, +/* 61979 */ {(12<<2)|2,{120,49,0}}, +/* 61980 */ {(12<<2)|2,{120,49,0}}, +/* 61981 */ {(12<<2)|2,{120,49,0}}, +/* 61982 */ {(12<<2)|2,{120,49,0}}, +/* 61983 */ {(12<<2)|2,{120,49,0}}, +/* 61984 */ {(12<<2)|2,{120,50,0}}, +/* 61985 */ {(12<<2)|2,{120,50,0}}, +/* 61986 */ {(12<<2)|2,{120,50,0}}, +/* 61987 */ {(12<<2)|2,{120,50,0}}, +/* 61988 */ {(12<<2)|2,{120,50,0}}, +/* 61989 */ {(12<<2)|2,{120,50,0}}, +/* 61990 */ {(12<<2)|2,{120,50,0}}, +/* 61991 */ {(12<<2)|2,{120,50,0}}, +/* 61992 */ {(12<<2)|2,{120,50,0}}, +/* 61993 */ {(12<<2)|2,{120,50,0}}, +/* 61994 */ {(12<<2)|2,{120,50,0}}, +/* 61995 */ {(12<<2)|2,{120,50,0}}, +/* 61996 */ {(12<<2)|2,{120,50,0}}, +/* 61997 */ {(12<<2)|2,{120,50,0}}, +/* 61998 */ {(12<<2)|2,{120,50,0}}, +/* 61999 */ {(12<<2)|2,{120,50,0}}, +/* 62000 */ {(12<<2)|2,{120,97,0}}, +/* 62001 */ {(12<<2)|2,{120,97,0}}, +/* 62002 */ {(12<<2)|2,{120,97,0}}, +/* 62003 */ {(12<<2)|2,{120,97,0}}, +/* 62004 */ {(12<<2)|2,{120,97,0}}, +/* 62005 */ {(12<<2)|2,{120,97,0}}, +/* 62006 */ {(12<<2)|2,{120,97,0}}, +/* 62007 */ {(12<<2)|2,{120,97,0}}, +/* 62008 */ {(12<<2)|2,{120,97,0}}, +/* 62009 */ {(12<<2)|2,{120,97,0}}, +/* 62010 */ {(12<<2)|2,{120,97,0}}, +/* 62011 */ {(12<<2)|2,{120,97,0}}, +/* 62012 */ {(12<<2)|2,{120,97,0}}, +/* 62013 */ {(12<<2)|2,{120,97,0}}, +/* 62014 */ {(12<<2)|2,{120,97,0}}, +/* 62015 */ {(12<<2)|2,{120,97,0}}, +/* 62016 */ {(12<<2)|2,{120,99,0}}, +/* 62017 */ {(12<<2)|2,{120,99,0}}, +/* 62018 */ {(12<<2)|2,{120,99,0}}, +/* 62019 */ {(12<<2)|2,{120,99,0}}, +/* 62020 */ {(12<<2)|2,{120,99,0}}, +/* 62021 */ {(12<<2)|2,{120,99,0}}, +/* 62022 */ {(12<<2)|2,{120,99,0}}, +/* 62023 */ {(12<<2)|2,{120,99,0}}, +/* 62024 */ {(12<<2)|2,{120,99,0}}, +/* 62025 */ {(12<<2)|2,{120,99,0}}, +/* 62026 */ {(12<<2)|2,{120,99,0}}, +/* 62027 */ {(12<<2)|2,{120,99,0}}, +/* 62028 */ {(12<<2)|2,{120,99,0}}, +/* 62029 */ {(12<<2)|2,{120,99,0}}, +/* 62030 */ {(12<<2)|2,{120,99,0}}, +/* 62031 */ {(12<<2)|2,{120,99,0}}, +/* 62032 */ {(12<<2)|2,{120,101,0}}, +/* 62033 */ {(12<<2)|2,{120,101,0}}, +/* 62034 */ {(12<<2)|2,{120,101,0}}, +/* 62035 */ {(12<<2)|2,{120,101,0}}, +/* 62036 */ {(12<<2)|2,{120,101,0}}, +/* 62037 */ {(12<<2)|2,{120,101,0}}, +/* 62038 */ {(12<<2)|2,{120,101,0}}, +/* 62039 */ {(12<<2)|2,{120,101,0}}, +/* 62040 */ {(12<<2)|2,{120,101,0}}, +/* 62041 */ {(12<<2)|2,{120,101,0}}, +/* 62042 */ {(12<<2)|2,{120,101,0}}, +/* 62043 */ {(12<<2)|2,{120,101,0}}, +/* 62044 */ {(12<<2)|2,{120,101,0}}, +/* 62045 */ {(12<<2)|2,{120,101,0}}, +/* 62046 */ {(12<<2)|2,{120,101,0}}, +/* 62047 */ {(12<<2)|2,{120,101,0}}, +/* 62048 */ {(12<<2)|2,{120,105,0}}, +/* 62049 */ {(12<<2)|2,{120,105,0}}, +/* 62050 */ {(12<<2)|2,{120,105,0}}, +/* 62051 */ {(12<<2)|2,{120,105,0}}, +/* 62052 */ {(12<<2)|2,{120,105,0}}, +/* 62053 */ {(12<<2)|2,{120,105,0}}, +/* 62054 */ {(12<<2)|2,{120,105,0}}, +/* 62055 */ {(12<<2)|2,{120,105,0}}, +/* 62056 */ {(12<<2)|2,{120,105,0}}, +/* 62057 */ {(12<<2)|2,{120,105,0}}, +/* 62058 */ {(12<<2)|2,{120,105,0}}, +/* 62059 */ {(12<<2)|2,{120,105,0}}, +/* 62060 */ {(12<<2)|2,{120,105,0}}, +/* 62061 */ {(12<<2)|2,{120,105,0}}, +/* 62062 */ {(12<<2)|2,{120,105,0}}, +/* 62063 */ {(12<<2)|2,{120,105,0}}, +/* 62064 */ {(12<<2)|2,{120,111,0}}, +/* 62065 */ {(12<<2)|2,{120,111,0}}, +/* 62066 */ {(12<<2)|2,{120,111,0}}, +/* 62067 */ {(12<<2)|2,{120,111,0}}, +/* 62068 */ {(12<<2)|2,{120,111,0}}, +/* 62069 */ {(12<<2)|2,{120,111,0}}, +/* 62070 */ {(12<<2)|2,{120,111,0}}, +/* 62071 */ {(12<<2)|2,{120,111,0}}, +/* 62072 */ {(12<<2)|2,{120,111,0}}, +/* 62073 */ {(12<<2)|2,{120,111,0}}, +/* 62074 */ {(12<<2)|2,{120,111,0}}, +/* 62075 */ {(12<<2)|2,{120,111,0}}, +/* 62076 */ {(12<<2)|2,{120,111,0}}, +/* 62077 */ {(12<<2)|2,{120,111,0}}, +/* 62078 */ {(12<<2)|2,{120,111,0}}, +/* 62079 */ {(12<<2)|2,{120,111,0}}, +/* 62080 */ {(12<<2)|2,{120,115,0}}, +/* 62081 */ {(12<<2)|2,{120,115,0}}, +/* 62082 */ {(12<<2)|2,{120,115,0}}, +/* 62083 */ {(12<<2)|2,{120,115,0}}, +/* 62084 */ {(12<<2)|2,{120,115,0}}, +/* 62085 */ {(12<<2)|2,{120,115,0}}, +/* 62086 */ {(12<<2)|2,{120,115,0}}, +/* 62087 */ {(12<<2)|2,{120,115,0}}, +/* 62088 */ {(12<<2)|2,{120,115,0}}, +/* 62089 */ {(12<<2)|2,{120,115,0}}, +/* 62090 */ {(12<<2)|2,{120,115,0}}, +/* 62091 */ {(12<<2)|2,{120,115,0}}, +/* 62092 */ {(12<<2)|2,{120,115,0}}, +/* 62093 */ {(12<<2)|2,{120,115,0}}, +/* 62094 */ {(12<<2)|2,{120,115,0}}, +/* 62095 */ {(12<<2)|2,{120,115,0}}, +/* 62096 */ {(12<<2)|2,{120,116,0}}, +/* 62097 */ {(12<<2)|2,{120,116,0}}, +/* 62098 */ {(12<<2)|2,{120,116,0}}, +/* 62099 */ {(12<<2)|2,{120,116,0}}, +/* 62100 */ {(12<<2)|2,{120,116,0}}, +/* 62101 */ {(12<<2)|2,{120,116,0}}, +/* 62102 */ {(12<<2)|2,{120,116,0}}, +/* 62103 */ {(12<<2)|2,{120,116,0}}, +/* 62104 */ {(12<<2)|2,{120,116,0}}, +/* 62105 */ {(12<<2)|2,{120,116,0}}, +/* 62106 */ {(12<<2)|2,{120,116,0}}, +/* 62107 */ {(12<<2)|2,{120,116,0}}, +/* 62108 */ {(12<<2)|2,{120,116,0}}, +/* 62109 */ {(12<<2)|2,{120,116,0}}, +/* 62110 */ {(12<<2)|2,{120,116,0}}, +/* 62111 */ {(12<<2)|2,{120,116,0}}, +/* 62112 */ {(13<<2)|2,{120,32,0}}, +/* 62113 */ {(13<<2)|2,{120,32,0}}, +/* 62114 */ {(13<<2)|2,{120,32,0}}, +/* 62115 */ {(13<<2)|2,{120,32,0}}, +/* 62116 */ {(13<<2)|2,{120,32,0}}, +/* 62117 */ {(13<<2)|2,{120,32,0}}, +/* 62118 */ {(13<<2)|2,{120,32,0}}, +/* 62119 */ {(13<<2)|2,{120,32,0}}, +/* 62120 */ {(13<<2)|2,{120,37,0}}, +/* 62121 */ {(13<<2)|2,{120,37,0}}, +/* 62122 */ {(13<<2)|2,{120,37,0}}, +/* 62123 */ {(13<<2)|2,{120,37,0}}, +/* 62124 */ {(13<<2)|2,{120,37,0}}, +/* 62125 */ {(13<<2)|2,{120,37,0}}, +/* 62126 */ {(13<<2)|2,{120,37,0}}, +/* 62127 */ {(13<<2)|2,{120,37,0}}, +/* 62128 */ {(13<<2)|2,{120,45,0}}, +/* 62129 */ {(13<<2)|2,{120,45,0}}, +/* 62130 */ {(13<<2)|2,{120,45,0}}, +/* 62131 */ {(13<<2)|2,{120,45,0}}, +/* 62132 */ {(13<<2)|2,{120,45,0}}, +/* 62133 */ {(13<<2)|2,{120,45,0}}, +/* 62134 */ {(13<<2)|2,{120,45,0}}, +/* 62135 */ {(13<<2)|2,{120,45,0}}, +/* 62136 */ {(13<<2)|2,{120,46,0}}, +/* 62137 */ {(13<<2)|2,{120,46,0}}, +/* 62138 */ {(13<<2)|2,{120,46,0}}, +/* 62139 */ {(13<<2)|2,{120,46,0}}, +/* 62140 */ {(13<<2)|2,{120,46,0}}, +/* 62141 */ {(13<<2)|2,{120,46,0}}, +/* 62142 */ {(13<<2)|2,{120,46,0}}, +/* 62143 */ {(13<<2)|2,{120,46,0}}, +/* 62144 */ {(13<<2)|2,{120,47,0}}, +/* 62145 */ {(13<<2)|2,{120,47,0}}, +/* 62146 */ {(13<<2)|2,{120,47,0}}, +/* 62147 */ {(13<<2)|2,{120,47,0}}, +/* 62148 */ {(13<<2)|2,{120,47,0}}, +/* 62149 */ {(13<<2)|2,{120,47,0}}, +/* 62150 */ {(13<<2)|2,{120,47,0}}, +/* 62151 */ {(13<<2)|2,{120,47,0}}, +/* 62152 */ {(13<<2)|2,{120,51,0}}, +/* 62153 */ {(13<<2)|2,{120,51,0}}, +/* 62154 */ {(13<<2)|2,{120,51,0}}, +/* 62155 */ {(13<<2)|2,{120,51,0}}, +/* 62156 */ {(13<<2)|2,{120,51,0}}, +/* 62157 */ {(13<<2)|2,{120,51,0}}, +/* 62158 */ {(13<<2)|2,{120,51,0}}, +/* 62159 */ {(13<<2)|2,{120,51,0}}, +/* 62160 */ {(13<<2)|2,{120,52,0}}, +/* 62161 */ {(13<<2)|2,{120,52,0}}, +/* 62162 */ {(13<<2)|2,{120,52,0}}, +/* 62163 */ {(13<<2)|2,{120,52,0}}, +/* 62164 */ {(13<<2)|2,{120,52,0}}, +/* 62165 */ {(13<<2)|2,{120,52,0}}, +/* 62166 */ {(13<<2)|2,{120,52,0}}, +/* 62167 */ {(13<<2)|2,{120,52,0}}, +/* 62168 */ {(13<<2)|2,{120,53,0}}, +/* 62169 */ {(13<<2)|2,{120,53,0}}, +/* 62170 */ {(13<<2)|2,{120,53,0}}, +/* 62171 */ {(13<<2)|2,{120,53,0}}, +/* 62172 */ {(13<<2)|2,{120,53,0}}, +/* 62173 */ {(13<<2)|2,{120,53,0}}, +/* 62174 */ {(13<<2)|2,{120,53,0}}, +/* 62175 */ {(13<<2)|2,{120,53,0}}, +/* 62176 */ {(13<<2)|2,{120,54,0}}, +/* 62177 */ {(13<<2)|2,{120,54,0}}, +/* 62178 */ {(13<<2)|2,{120,54,0}}, +/* 62179 */ {(13<<2)|2,{120,54,0}}, +/* 62180 */ {(13<<2)|2,{120,54,0}}, +/* 62181 */ {(13<<2)|2,{120,54,0}}, +/* 62182 */ {(13<<2)|2,{120,54,0}}, +/* 62183 */ {(13<<2)|2,{120,54,0}}, +/* 62184 */ {(13<<2)|2,{120,55,0}}, +/* 62185 */ {(13<<2)|2,{120,55,0}}, +/* 62186 */ {(13<<2)|2,{120,55,0}}, +/* 62187 */ {(13<<2)|2,{120,55,0}}, +/* 62188 */ {(13<<2)|2,{120,55,0}}, +/* 62189 */ {(13<<2)|2,{120,55,0}}, +/* 62190 */ {(13<<2)|2,{120,55,0}}, +/* 62191 */ {(13<<2)|2,{120,55,0}}, +/* 62192 */ {(13<<2)|2,{120,56,0}}, +/* 62193 */ {(13<<2)|2,{120,56,0}}, +/* 62194 */ {(13<<2)|2,{120,56,0}}, +/* 62195 */ {(13<<2)|2,{120,56,0}}, +/* 62196 */ {(13<<2)|2,{120,56,0}}, +/* 62197 */ {(13<<2)|2,{120,56,0}}, +/* 62198 */ {(13<<2)|2,{120,56,0}}, +/* 62199 */ {(13<<2)|2,{120,56,0}}, +/* 62200 */ {(13<<2)|2,{120,57,0}}, +/* 62201 */ {(13<<2)|2,{120,57,0}}, +/* 62202 */ {(13<<2)|2,{120,57,0}}, +/* 62203 */ {(13<<2)|2,{120,57,0}}, +/* 62204 */ {(13<<2)|2,{120,57,0}}, +/* 62205 */ {(13<<2)|2,{120,57,0}}, +/* 62206 */ {(13<<2)|2,{120,57,0}}, +/* 62207 */ {(13<<2)|2,{120,57,0}}, +/* 62208 */ {(13<<2)|2,{120,61,0}}, +/* 62209 */ {(13<<2)|2,{120,61,0}}, +/* 62210 */ {(13<<2)|2,{120,61,0}}, +/* 62211 */ {(13<<2)|2,{120,61,0}}, +/* 62212 */ {(13<<2)|2,{120,61,0}}, +/* 62213 */ {(13<<2)|2,{120,61,0}}, +/* 62214 */ {(13<<2)|2,{120,61,0}}, +/* 62215 */ {(13<<2)|2,{120,61,0}}, +/* 62216 */ {(13<<2)|2,{120,65,0}}, +/* 62217 */ {(13<<2)|2,{120,65,0}}, +/* 62218 */ {(13<<2)|2,{120,65,0}}, +/* 62219 */ {(13<<2)|2,{120,65,0}}, +/* 62220 */ {(13<<2)|2,{120,65,0}}, +/* 62221 */ {(13<<2)|2,{120,65,0}}, +/* 62222 */ {(13<<2)|2,{120,65,0}}, +/* 62223 */ {(13<<2)|2,{120,65,0}}, +/* 62224 */ {(13<<2)|2,{120,95,0}}, +/* 62225 */ {(13<<2)|2,{120,95,0}}, +/* 62226 */ {(13<<2)|2,{120,95,0}}, +/* 62227 */ {(13<<2)|2,{120,95,0}}, +/* 62228 */ {(13<<2)|2,{120,95,0}}, +/* 62229 */ {(13<<2)|2,{120,95,0}}, +/* 62230 */ {(13<<2)|2,{120,95,0}}, +/* 62231 */ {(13<<2)|2,{120,95,0}}, +/* 62232 */ {(13<<2)|2,{120,98,0}}, +/* 62233 */ {(13<<2)|2,{120,98,0}}, +/* 62234 */ {(13<<2)|2,{120,98,0}}, +/* 62235 */ {(13<<2)|2,{120,98,0}}, +/* 62236 */ {(13<<2)|2,{120,98,0}}, +/* 62237 */ {(13<<2)|2,{120,98,0}}, +/* 62238 */ {(13<<2)|2,{120,98,0}}, +/* 62239 */ {(13<<2)|2,{120,98,0}}, +/* 62240 */ {(13<<2)|2,{120,100,0}}, +/* 62241 */ {(13<<2)|2,{120,100,0}}, +/* 62242 */ {(13<<2)|2,{120,100,0}}, +/* 62243 */ {(13<<2)|2,{120,100,0}}, +/* 62244 */ {(13<<2)|2,{120,100,0}}, +/* 62245 */ {(13<<2)|2,{120,100,0}}, +/* 62246 */ {(13<<2)|2,{120,100,0}}, +/* 62247 */ {(13<<2)|2,{120,100,0}}, +/* 62248 */ {(13<<2)|2,{120,102,0}}, +/* 62249 */ {(13<<2)|2,{120,102,0}}, +/* 62250 */ {(13<<2)|2,{120,102,0}}, +/* 62251 */ {(13<<2)|2,{120,102,0}}, +/* 62252 */ {(13<<2)|2,{120,102,0}}, +/* 62253 */ {(13<<2)|2,{120,102,0}}, +/* 62254 */ {(13<<2)|2,{120,102,0}}, +/* 62255 */ {(13<<2)|2,{120,102,0}}, +/* 62256 */ {(13<<2)|2,{120,103,0}}, +/* 62257 */ {(13<<2)|2,{120,103,0}}, +/* 62258 */ {(13<<2)|2,{120,103,0}}, +/* 62259 */ {(13<<2)|2,{120,103,0}}, +/* 62260 */ {(13<<2)|2,{120,103,0}}, +/* 62261 */ {(13<<2)|2,{120,103,0}}, +/* 62262 */ {(13<<2)|2,{120,103,0}}, +/* 62263 */ {(13<<2)|2,{120,103,0}}, +/* 62264 */ {(13<<2)|2,{120,104,0}}, +/* 62265 */ {(13<<2)|2,{120,104,0}}, +/* 62266 */ {(13<<2)|2,{120,104,0}}, +/* 62267 */ {(13<<2)|2,{120,104,0}}, +/* 62268 */ {(13<<2)|2,{120,104,0}}, +/* 62269 */ {(13<<2)|2,{120,104,0}}, +/* 62270 */ {(13<<2)|2,{120,104,0}}, +/* 62271 */ {(13<<2)|2,{120,104,0}}, +/* 62272 */ {(13<<2)|2,{120,108,0}}, +/* 62273 */ {(13<<2)|2,{120,108,0}}, +/* 62274 */ {(13<<2)|2,{120,108,0}}, +/* 62275 */ {(13<<2)|2,{120,108,0}}, +/* 62276 */ {(13<<2)|2,{120,108,0}}, +/* 62277 */ {(13<<2)|2,{120,108,0}}, +/* 62278 */ {(13<<2)|2,{120,108,0}}, +/* 62279 */ {(13<<2)|2,{120,108,0}}, +/* 62280 */ {(13<<2)|2,{120,109,0}}, +/* 62281 */ {(13<<2)|2,{120,109,0}}, +/* 62282 */ {(13<<2)|2,{120,109,0}}, +/* 62283 */ {(13<<2)|2,{120,109,0}}, +/* 62284 */ {(13<<2)|2,{120,109,0}}, +/* 62285 */ {(13<<2)|2,{120,109,0}}, +/* 62286 */ {(13<<2)|2,{120,109,0}}, +/* 62287 */ {(13<<2)|2,{120,109,0}}, +/* 62288 */ {(13<<2)|2,{120,110,0}}, +/* 62289 */ {(13<<2)|2,{120,110,0}}, +/* 62290 */ {(13<<2)|2,{120,110,0}}, +/* 62291 */ {(13<<2)|2,{120,110,0}}, +/* 62292 */ {(13<<2)|2,{120,110,0}}, +/* 62293 */ {(13<<2)|2,{120,110,0}}, +/* 62294 */ {(13<<2)|2,{120,110,0}}, +/* 62295 */ {(13<<2)|2,{120,110,0}}, +/* 62296 */ {(13<<2)|2,{120,112,0}}, +/* 62297 */ {(13<<2)|2,{120,112,0}}, +/* 62298 */ {(13<<2)|2,{120,112,0}}, +/* 62299 */ {(13<<2)|2,{120,112,0}}, +/* 62300 */ {(13<<2)|2,{120,112,0}}, +/* 62301 */ {(13<<2)|2,{120,112,0}}, +/* 62302 */ {(13<<2)|2,{120,112,0}}, +/* 62303 */ {(13<<2)|2,{120,112,0}}, +/* 62304 */ {(13<<2)|2,{120,114,0}}, +/* 62305 */ {(13<<2)|2,{120,114,0}}, +/* 62306 */ {(13<<2)|2,{120,114,0}}, +/* 62307 */ {(13<<2)|2,{120,114,0}}, +/* 62308 */ {(13<<2)|2,{120,114,0}}, +/* 62309 */ {(13<<2)|2,{120,114,0}}, +/* 62310 */ {(13<<2)|2,{120,114,0}}, +/* 62311 */ {(13<<2)|2,{120,114,0}}, +/* 62312 */ {(13<<2)|2,{120,117,0}}, +/* 62313 */ {(13<<2)|2,{120,117,0}}, +/* 62314 */ {(13<<2)|2,{120,117,0}}, +/* 62315 */ {(13<<2)|2,{120,117,0}}, +/* 62316 */ {(13<<2)|2,{120,117,0}}, +/* 62317 */ {(13<<2)|2,{120,117,0}}, +/* 62318 */ {(13<<2)|2,{120,117,0}}, +/* 62319 */ {(13<<2)|2,{120,117,0}}, +/* 62320 */ {(14<<2)|2,{120,58,0}}, +/* 62321 */ {(14<<2)|2,{120,58,0}}, +/* 62322 */ {(14<<2)|2,{120,58,0}}, +/* 62323 */ {(14<<2)|2,{120,58,0}}, +/* 62324 */ {(14<<2)|2,{120,66,0}}, +/* 62325 */ {(14<<2)|2,{120,66,0}}, +/* 62326 */ {(14<<2)|2,{120,66,0}}, +/* 62327 */ {(14<<2)|2,{120,66,0}}, +/* 62328 */ {(14<<2)|2,{120,67,0}}, +/* 62329 */ {(14<<2)|2,{120,67,0}}, +/* 62330 */ {(14<<2)|2,{120,67,0}}, +/* 62331 */ {(14<<2)|2,{120,67,0}}, +/* 62332 */ {(14<<2)|2,{120,68,0}}, +/* 62333 */ {(14<<2)|2,{120,68,0}}, +/* 62334 */ {(14<<2)|2,{120,68,0}}, +/* 62335 */ {(14<<2)|2,{120,68,0}}, +/* 62336 */ {(14<<2)|2,{120,69,0}}, +/* 62337 */ {(14<<2)|2,{120,69,0}}, +/* 62338 */ {(14<<2)|2,{120,69,0}}, +/* 62339 */ {(14<<2)|2,{120,69,0}}, +/* 62340 */ {(14<<2)|2,{120,70,0}}, +/* 62341 */ {(14<<2)|2,{120,70,0}}, +/* 62342 */ {(14<<2)|2,{120,70,0}}, +/* 62343 */ {(14<<2)|2,{120,70,0}}, +/* 62344 */ {(14<<2)|2,{120,71,0}}, +/* 62345 */ {(14<<2)|2,{120,71,0}}, +/* 62346 */ {(14<<2)|2,{120,71,0}}, +/* 62347 */ {(14<<2)|2,{120,71,0}}, +/* 62348 */ {(14<<2)|2,{120,72,0}}, +/* 62349 */ {(14<<2)|2,{120,72,0}}, +/* 62350 */ {(14<<2)|2,{120,72,0}}, +/* 62351 */ {(14<<2)|2,{120,72,0}}, +/* 62352 */ {(14<<2)|2,{120,73,0}}, +/* 62353 */ {(14<<2)|2,{120,73,0}}, +/* 62354 */ {(14<<2)|2,{120,73,0}}, +/* 62355 */ {(14<<2)|2,{120,73,0}}, +/* 62356 */ {(14<<2)|2,{120,74,0}}, +/* 62357 */ {(14<<2)|2,{120,74,0}}, +/* 62358 */ {(14<<2)|2,{120,74,0}}, +/* 62359 */ {(14<<2)|2,{120,74,0}}, +/* 62360 */ {(14<<2)|2,{120,75,0}}, +/* 62361 */ {(14<<2)|2,{120,75,0}}, +/* 62362 */ {(14<<2)|2,{120,75,0}}, +/* 62363 */ {(14<<2)|2,{120,75,0}}, +/* 62364 */ {(14<<2)|2,{120,76,0}}, +/* 62365 */ {(14<<2)|2,{120,76,0}}, +/* 62366 */ {(14<<2)|2,{120,76,0}}, +/* 62367 */ {(14<<2)|2,{120,76,0}}, +/* 62368 */ {(14<<2)|2,{120,77,0}}, +/* 62369 */ {(14<<2)|2,{120,77,0}}, +/* 62370 */ {(14<<2)|2,{120,77,0}}, +/* 62371 */ {(14<<2)|2,{120,77,0}}, +/* 62372 */ {(14<<2)|2,{120,78,0}}, +/* 62373 */ {(14<<2)|2,{120,78,0}}, +/* 62374 */ {(14<<2)|2,{120,78,0}}, +/* 62375 */ {(14<<2)|2,{120,78,0}}, +/* 62376 */ {(14<<2)|2,{120,79,0}}, +/* 62377 */ {(14<<2)|2,{120,79,0}}, +/* 62378 */ {(14<<2)|2,{120,79,0}}, +/* 62379 */ {(14<<2)|2,{120,79,0}}, +/* 62380 */ {(14<<2)|2,{120,80,0}}, +/* 62381 */ {(14<<2)|2,{120,80,0}}, +/* 62382 */ {(14<<2)|2,{120,80,0}}, +/* 62383 */ {(14<<2)|2,{120,80,0}}, +/* 62384 */ {(14<<2)|2,{120,81,0}}, +/* 62385 */ {(14<<2)|2,{120,81,0}}, +/* 62386 */ {(14<<2)|2,{120,81,0}}, +/* 62387 */ {(14<<2)|2,{120,81,0}}, +/* 62388 */ {(14<<2)|2,{120,82,0}}, +/* 62389 */ {(14<<2)|2,{120,82,0}}, +/* 62390 */ {(14<<2)|2,{120,82,0}}, +/* 62391 */ {(14<<2)|2,{120,82,0}}, +/* 62392 */ {(14<<2)|2,{120,83,0}}, +/* 62393 */ {(14<<2)|2,{120,83,0}}, +/* 62394 */ {(14<<2)|2,{120,83,0}}, +/* 62395 */ {(14<<2)|2,{120,83,0}}, +/* 62396 */ {(14<<2)|2,{120,84,0}}, +/* 62397 */ {(14<<2)|2,{120,84,0}}, +/* 62398 */ {(14<<2)|2,{120,84,0}}, +/* 62399 */ {(14<<2)|2,{120,84,0}}, +/* 62400 */ {(14<<2)|2,{120,85,0}}, +/* 62401 */ {(14<<2)|2,{120,85,0}}, +/* 62402 */ {(14<<2)|2,{120,85,0}}, +/* 62403 */ {(14<<2)|2,{120,85,0}}, +/* 62404 */ {(14<<2)|2,{120,86,0}}, +/* 62405 */ {(14<<2)|2,{120,86,0}}, +/* 62406 */ {(14<<2)|2,{120,86,0}}, +/* 62407 */ {(14<<2)|2,{120,86,0}}, +/* 62408 */ {(14<<2)|2,{120,87,0}}, +/* 62409 */ {(14<<2)|2,{120,87,0}}, +/* 62410 */ {(14<<2)|2,{120,87,0}}, +/* 62411 */ {(14<<2)|2,{120,87,0}}, +/* 62412 */ {(14<<2)|2,{120,89,0}}, +/* 62413 */ {(14<<2)|2,{120,89,0}}, +/* 62414 */ {(14<<2)|2,{120,89,0}}, +/* 62415 */ {(14<<2)|2,{120,89,0}}, +/* 62416 */ {(14<<2)|2,{120,106,0}}, +/* 62417 */ {(14<<2)|2,{120,106,0}}, +/* 62418 */ {(14<<2)|2,{120,106,0}}, +/* 62419 */ {(14<<2)|2,{120,106,0}}, +/* 62420 */ {(14<<2)|2,{120,107,0}}, +/* 62421 */ {(14<<2)|2,{120,107,0}}, +/* 62422 */ {(14<<2)|2,{120,107,0}}, +/* 62423 */ {(14<<2)|2,{120,107,0}}, +/* 62424 */ {(14<<2)|2,{120,113,0}}, +/* 62425 */ {(14<<2)|2,{120,113,0}}, +/* 62426 */ {(14<<2)|2,{120,113,0}}, +/* 62427 */ {(14<<2)|2,{120,113,0}}, +/* 62428 */ {(14<<2)|2,{120,118,0}}, +/* 62429 */ {(14<<2)|2,{120,118,0}}, +/* 62430 */ {(14<<2)|2,{120,118,0}}, +/* 62431 */ {(14<<2)|2,{120,118,0}}, +/* 62432 */ {(14<<2)|2,{120,119,0}}, +/* 62433 */ {(14<<2)|2,{120,119,0}}, +/* 62434 */ {(14<<2)|2,{120,119,0}}, +/* 62435 */ {(14<<2)|2,{120,119,0}}, +/* 62436 */ {(14<<2)|2,{120,120,0}}, +/* 62437 */ {(14<<2)|2,{120,120,0}}, +/* 62438 */ {(14<<2)|2,{120,120,0}}, +/* 62439 */ {(14<<2)|2,{120,120,0}}, +/* 62440 */ {(14<<2)|2,{120,121,0}}, +/* 62441 */ {(14<<2)|2,{120,121,0}}, +/* 62442 */ {(14<<2)|2,{120,121,0}}, +/* 62443 */ {(14<<2)|2,{120,121,0}}, +/* 62444 */ {(14<<2)|2,{120,122,0}}, +/* 62445 */ {(14<<2)|2,{120,122,0}}, +/* 62446 */ {(14<<2)|2,{120,122,0}}, +/* 62447 */ {(14<<2)|2,{120,122,0}}, +/* 62448 */ {(15<<2)|2,{120,38,0}}, +/* 62449 */ {(15<<2)|2,{120,38,0}}, +/* 62450 */ {(15<<2)|2,{120,42,0}}, +/* 62451 */ {(15<<2)|2,{120,42,0}}, +/* 62452 */ {(15<<2)|2,{120,44,0}}, +/* 62453 */ {(15<<2)|2,{120,44,0}}, +/* 62454 */ {(15<<2)|2,{120,59,0}}, +/* 62455 */ {(15<<2)|2,{120,59,0}}, +/* 62456 */ {(15<<2)|2,{120,88,0}}, +/* 62457 */ {(15<<2)|2,{120,88,0}}, +/* 62458 */ {(15<<2)|2,{120,90,0}}, +/* 62459 */ {(15<<2)|2,{120,90,0}}, +/* 62460 */ {(7<<2)|1,{120,0,0}}, +/* 62461 */ {(7<<2)|1,{120,0,0}}, +/* 62462 */ {(7<<2)|1,{120,0,0}}, +/* 62463 */ {(7<<2)|1,{120,0,0}}, +/* 62464 */ {(12<<2)|2,{121,48,0}}, +/* 62465 */ {(12<<2)|2,{121,48,0}}, +/* 62466 */ {(12<<2)|2,{121,48,0}}, +/* 62467 */ {(12<<2)|2,{121,48,0}}, +/* 62468 */ {(12<<2)|2,{121,48,0}}, +/* 62469 */ {(12<<2)|2,{121,48,0}}, +/* 62470 */ {(12<<2)|2,{121,48,0}}, +/* 62471 */ {(12<<2)|2,{121,48,0}}, +/* 62472 */ {(12<<2)|2,{121,48,0}}, +/* 62473 */ {(12<<2)|2,{121,48,0}}, +/* 62474 */ {(12<<2)|2,{121,48,0}}, +/* 62475 */ {(12<<2)|2,{121,48,0}}, +/* 62476 */ {(12<<2)|2,{121,48,0}}, +/* 62477 */ {(12<<2)|2,{121,48,0}}, +/* 62478 */ {(12<<2)|2,{121,48,0}}, +/* 62479 */ {(12<<2)|2,{121,48,0}}, +/* 62480 */ {(12<<2)|2,{121,49,0}}, +/* 62481 */ {(12<<2)|2,{121,49,0}}, +/* 62482 */ {(12<<2)|2,{121,49,0}}, +/* 62483 */ {(12<<2)|2,{121,49,0}}, +/* 62484 */ {(12<<2)|2,{121,49,0}}, +/* 62485 */ {(12<<2)|2,{121,49,0}}, +/* 62486 */ {(12<<2)|2,{121,49,0}}, +/* 62487 */ {(12<<2)|2,{121,49,0}}, +/* 62488 */ {(12<<2)|2,{121,49,0}}, +/* 62489 */ {(12<<2)|2,{121,49,0}}, +/* 62490 */ {(12<<2)|2,{121,49,0}}, +/* 62491 */ {(12<<2)|2,{121,49,0}}, +/* 62492 */ {(12<<2)|2,{121,49,0}}, +/* 62493 */ {(12<<2)|2,{121,49,0}}, +/* 62494 */ {(12<<2)|2,{121,49,0}}, +/* 62495 */ {(12<<2)|2,{121,49,0}}, +/* 62496 */ {(12<<2)|2,{121,50,0}}, +/* 62497 */ {(12<<2)|2,{121,50,0}}, +/* 62498 */ {(12<<2)|2,{121,50,0}}, +/* 62499 */ {(12<<2)|2,{121,50,0}}, +/* 62500 */ {(12<<2)|2,{121,50,0}}, +/* 62501 */ {(12<<2)|2,{121,50,0}}, +/* 62502 */ {(12<<2)|2,{121,50,0}}, +/* 62503 */ {(12<<2)|2,{121,50,0}}, +/* 62504 */ {(12<<2)|2,{121,50,0}}, +/* 62505 */ {(12<<2)|2,{121,50,0}}, +/* 62506 */ {(12<<2)|2,{121,50,0}}, +/* 62507 */ {(12<<2)|2,{121,50,0}}, +/* 62508 */ {(12<<2)|2,{121,50,0}}, +/* 62509 */ {(12<<2)|2,{121,50,0}}, +/* 62510 */ {(12<<2)|2,{121,50,0}}, +/* 62511 */ {(12<<2)|2,{121,50,0}}, +/* 62512 */ {(12<<2)|2,{121,97,0}}, +/* 62513 */ {(12<<2)|2,{121,97,0}}, +/* 62514 */ {(12<<2)|2,{121,97,0}}, +/* 62515 */ {(12<<2)|2,{121,97,0}}, +/* 62516 */ {(12<<2)|2,{121,97,0}}, +/* 62517 */ {(12<<2)|2,{121,97,0}}, +/* 62518 */ {(12<<2)|2,{121,97,0}}, +/* 62519 */ {(12<<2)|2,{121,97,0}}, +/* 62520 */ {(12<<2)|2,{121,97,0}}, +/* 62521 */ {(12<<2)|2,{121,97,0}}, +/* 62522 */ {(12<<2)|2,{121,97,0}}, +/* 62523 */ {(12<<2)|2,{121,97,0}}, +/* 62524 */ {(12<<2)|2,{121,97,0}}, +/* 62525 */ {(12<<2)|2,{121,97,0}}, +/* 62526 */ {(12<<2)|2,{121,97,0}}, +/* 62527 */ {(12<<2)|2,{121,97,0}}, +/* 62528 */ {(12<<2)|2,{121,99,0}}, +/* 62529 */ {(12<<2)|2,{121,99,0}}, +/* 62530 */ {(12<<2)|2,{121,99,0}}, +/* 62531 */ {(12<<2)|2,{121,99,0}}, +/* 62532 */ {(12<<2)|2,{121,99,0}}, +/* 62533 */ {(12<<2)|2,{121,99,0}}, +/* 62534 */ {(12<<2)|2,{121,99,0}}, +/* 62535 */ {(12<<2)|2,{121,99,0}}, +/* 62536 */ {(12<<2)|2,{121,99,0}}, +/* 62537 */ {(12<<2)|2,{121,99,0}}, +/* 62538 */ {(12<<2)|2,{121,99,0}}, +/* 62539 */ {(12<<2)|2,{121,99,0}}, +/* 62540 */ {(12<<2)|2,{121,99,0}}, +/* 62541 */ {(12<<2)|2,{121,99,0}}, +/* 62542 */ {(12<<2)|2,{121,99,0}}, +/* 62543 */ {(12<<2)|2,{121,99,0}}, +/* 62544 */ {(12<<2)|2,{121,101,0}}, +/* 62545 */ {(12<<2)|2,{121,101,0}}, +/* 62546 */ {(12<<2)|2,{121,101,0}}, +/* 62547 */ {(12<<2)|2,{121,101,0}}, +/* 62548 */ {(12<<2)|2,{121,101,0}}, +/* 62549 */ {(12<<2)|2,{121,101,0}}, +/* 62550 */ {(12<<2)|2,{121,101,0}}, +/* 62551 */ {(12<<2)|2,{121,101,0}}, +/* 62552 */ {(12<<2)|2,{121,101,0}}, +/* 62553 */ {(12<<2)|2,{121,101,0}}, +/* 62554 */ {(12<<2)|2,{121,101,0}}, +/* 62555 */ {(12<<2)|2,{121,101,0}}, +/* 62556 */ {(12<<2)|2,{121,101,0}}, +/* 62557 */ {(12<<2)|2,{121,101,0}}, +/* 62558 */ {(12<<2)|2,{121,101,0}}, +/* 62559 */ {(12<<2)|2,{121,101,0}}, +/* 62560 */ {(12<<2)|2,{121,105,0}}, +/* 62561 */ {(12<<2)|2,{121,105,0}}, +/* 62562 */ {(12<<2)|2,{121,105,0}}, +/* 62563 */ {(12<<2)|2,{121,105,0}}, +/* 62564 */ {(12<<2)|2,{121,105,0}}, +/* 62565 */ {(12<<2)|2,{121,105,0}}, +/* 62566 */ {(12<<2)|2,{121,105,0}}, +/* 62567 */ {(12<<2)|2,{121,105,0}}, +/* 62568 */ {(12<<2)|2,{121,105,0}}, +/* 62569 */ {(12<<2)|2,{121,105,0}}, +/* 62570 */ {(12<<2)|2,{121,105,0}}, +/* 62571 */ {(12<<2)|2,{121,105,0}}, +/* 62572 */ {(12<<2)|2,{121,105,0}}, +/* 62573 */ {(12<<2)|2,{121,105,0}}, +/* 62574 */ {(12<<2)|2,{121,105,0}}, +/* 62575 */ {(12<<2)|2,{121,105,0}}, +/* 62576 */ {(12<<2)|2,{121,111,0}}, +/* 62577 */ {(12<<2)|2,{121,111,0}}, +/* 62578 */ {(12<<2)|2,{121,111,0}}, +/* 62579 */ {(12<<2)|2,{121,111,0}}, +/* 62580 */ {(12<<2)|2,{121,111,0}}, +/* 62581 */ {(12<<2)|2,{121,111,0}}, +/* 62582 */ {(12<<2)|2,{121,111,0}}, +/* 62583 */ {(12<<2)|2,{121,111,0}}, +/* 62584 */ {(12<<2)|2,{121,111,0}}, +/* 62585 */ {(12<<2)|2,{121,111,0}}, +/* 62586 */ {(12<<2)|2,{121,111,0}}, +/* 62587 */ {(12<<2)|2,{121,111,0}}, +/* 62588 */ {(12<<2)|2,{121,111,0}}, +/* 62589 */ {(12<<2)|2,{121,111,0}}, +/* 62590 */ {(12<<2)|2,{121,111,0}}, +/* 62591 */ {(12<<2)|2,{121,111,0}}, +/* 62592 */ {(12<<2)|2,{121,115,0}}, +/* 62593 */ {(12<<2)|2,{121,115,0}}, +/* 62594 */ {(12<<2)|2,{121,115,0}}, +/* 62595 */ {(12<<2)|2,{121,115,0}}, +/* 62596 */ {(12<<2)|2,{121,115,0}}, +/* 62597 */ {(12<<2)|2,{121,115,0}}, +/* 62598 */ {(12<<2)|2,{121,115,0}}, +/* 62599 */ {(12<<2)|2,{121,115,0}}, +/* 62600 */ {(12<<2)|2,{121,115,0}}, +/* 62601 */ {(12<<2)|2,{121,115,0}}, +/* 62602 */ {(12<<2)|2,{121,115,0}}, +/* 62603 */ {(12<<2)|2,{121,115,0}}, +/* 62604 */ {(12<<2)|2,{121,115,0}}, +/* 62605 */ {(12<<2)|2,{121,115,0}}, +/* 62606 */ {(12<<2)|2,{121,115,0}}, +/* 62607 */ {(12<<2)|2,{121,115,0}}, +/* 62608 */ {(12<<2)|2,{121,116,0}}, +/* 62609 */ {(12<<2)|2,{121,116,0}}, +/* 62610 */ {(12<<2)|2,{121,116,0}}, +/* 62611 */ {(12<<2)|2,{121,116,0}}, +/* 62612 */ {(12<<2)|2,{121,116,0}}, +/* 62613 */ {(12<<2)|2,{121,116,0}}, +/* 62614 */ {(12<<2)|2,{121,116,0}}, +/* 62615 */ {(12<<2)|2,{121,116,0}}, +/* 62616 */ {(12<<2)|2,{121,116,0}}, +/* 62617 */ {(12<<2)|2,{121,116,0}}, +/* 62618 */ {(12<<2)|2,{121,116,0}}, +/* 62619 */ {(12<<2)|2,{121,116,0}}, +/* 62620 */ {(12<<2)|2,{121,116,0}}, +/* 62621 */ {(12<<2)|2,{121,116,0}}, +/* 62622 */ {(12<<2)|2,{121,116,0}}, +/* 62623 */ {(12<<2)|2,{121,116,0}}, +/* 62624 */ {(13<<2)|2,{121,32,0}}, +/* 62625 */ {(13<<2)|2,{121,32,0}}, +/* 62626 */ {(13<<2)|2,{121,32,0}}, +/* 62627 */ {(13<<2)|2,{121,32,0}}, +/* 62628 */ {(13<<2)|2,{121,32,0}}, +/* 62629 */ {(13<<2)|2,{121,32,0}}, +/* 62630 */ {(13<<2)|2,{121,32,0}}, +/* 62631 */ {(13<<2)|2,{121,32,0}}, +/* 62632 */ {(13<<2)|2,{121,37,0}}, +/* 62633 */ {(13<<2)|2,{121,37,0}}, +/* 62634 */ {(13<<2)|2,{121,37,0}}, +/* 62635 */ {(13<<2)|2,{121,37,0}}, +/* 62636 */ {(13<<2)|2,{121,37,0}}, +/* 62637 */ {(13<<2)|2,{121,37,0}}, +/* 62638 */ {(13<<2)|2,{121,37,0}}, +/* 62639 */ {(13<<2)|2,{121,37,0}}, +/* 62640 */ {(13<<2)|2,{121,45,0}}, +/* 62641 */ {(13<<2)|2,{121,45,0}}, +/* 62642 */ {(13<<2)|2,{121,45,0}}, +/* 62643 */ {(13<<2)|2,{121,45,0}}, +/* 62644 */ {(13<<2)|2,{121,45,0}}, +/* 62645 */ {(13<<2)|2,{121,45,0}}, +/* 62646 */ {(13<<2)|2,{121,45,0}}, +/* 62647 */ {(13<<2)|2,{121,45,0}}, +/* 62648 */ {(13<<2)|2,{121,46,0}}, +/* 62649 */ {(13<<2)|2,{121,46,0}}, +/* 62650 */ {(13<<2)|2,{121,46,0}}, +/* 62651 */ {(13<<2)|2,{121,46,0}}, +/* 62652 */ {(13<<2)|2,{121,46,0}}, +/* 62653 */ {(13<<2)|2,{121,46,0}}, +/* 62654 */ {(13<<2)|2,{121,46,0}}, +/* 62655 */ {(13<<2)|2,{121,46,0}}, +/* 62656 */ {(13<<2)|2,{121,47,0}}, +/* 62657 */ {(13<<2)|2,{121,47,0}}, +/* 62658 */ {(13<<2)|2,{121,47,0}}, +/* 62659 */ {(13<<2)|2,{121,47,0}}, +/* 62660 */ {(13<<2)|2,{121,47,0}}, +/* 62661 */ {(13<<2)|2,{121,47,0}}, +/* 62662 */ {(13<<2)|2,{121,47,0}}, +/* 62663 */ {(13<<2)|2,{121,47,0}}, +/* 62664 */ {(13<<2)|2,{121,51,0}}, +/* 62665 */ {(13<<2)|2,{121,51,0}}, +/* 62666 */ {(13<<2)|2,{121,51,0}}, +/* 62667 */ {(13<<2)|2,{121,51,0}}, +/* 62668 */ {(13<<2)|2,{121,51,0}}, +/* 62669 */ {(13<<2)|2,{121,51,0}}, +/* 62670 */ {(13<<2)|2,{121,51,0}}, +/* 62671 */ {(13<<2)|2,{121,51,0}}, +/* 62672 */ {(13<<2)|2,{121,52,0}}, +/* 62673 */ {(13<<2)|2,{121,52,0}}, +/* 62674 */ {(13<<2)|2,{121,52,0}}, +/* 62675 */ {(13<<2)|2,{121,52,0}}, +/* 62676 */ {(13<<2)|2,{121,52,0}}, +/* 62677 */ {(13<<2)|2,{121,52,0}}, +/* 62678 */ {(13<<2)|2,{121,52,0}}, +/* 62679 */ {(13<<2)|2,{121,52,0}}, +/* 62680 */ {(13<<2)|2,{121,53,0}}, +/* 62681 */ {(13<<2)|2,{121,53,0}}, +/* 62682 */ {(13<<2)|2,{121,53,0}}, +/* 62683 */ {(13<<2)|2,{121,53,0}}, +/* 62684 */ {(13<<2)|2,{121,53,0}}, +/* 62685 */ {(13<<2)|2,{121,53,0}}, +/* 62686 */ {(13<<2)|2,{121,53,0}}, +/* 62687 */ {(13<<2)|2,{121,53,0}}, +/* 62688 */ {(13<<2)|2,{121,54,0}}, +/* 62689 */ {(13<<2)|2,{121,54,0}}, +/* 62690 */ {(13<<2)|2,{121,54,0}}, +/* 62691 */ {(13<<2)|2,{121,54,0}}, +/* 62692 */ {(13<<2)|2,{121,54,0}}, +/* 62693 */ {(13<<2)|2,{121,54,0}}, +/* 62694 */ {(13<<2)|2,{121,54,0}}, +/* 62695 */ {(13<<2)|2,{121,54,0}}, +/* 62696 */ {(13<<2)|2,{121,55,0}}, +/* 62697 */ {(13<<2)|2,{121,55,0}}, +/* 62698 */ {(13<<2)|2,{121,55,0}}, +/* 62699 */ {(13<<2)|2,{121,55,0}}, +/* 62700 */ {(13<<2)|2,{121,55,0}}, +/* 62701 */ {(13<<2)|2,{121,55,0}}, +/* 62702 */ {(13<<2)|2,{121,55,0}}, +/* 62703 */ {(13<<2)|2,{121,55,0}}, +/* 62704 */ {(13<<2)|2,{121,56,0}}, +/* 62705 */ {(13<<2)|2,{121,56,0}}, +/* 62706 */ {(13<<2)|2,{121,56,0}}, +/* 62707 */ {(13<<2)|2,{121,56,0}}, +/* 62708 */ {(13<<2)|2,{121,56,0}}, +/* 62709 */ {(13<<2)|2,{121,56,0}}, +/* 62710 */ {(13<<2)|2,{121,56,0}}, +/* 62711 */ {(13<<2)|2,{121,56,0}}, +/* 62712 */ {(13<<2)|2,{121,57,0}}, +/* 62713 */ {(13<<2)|2,{121,57,0}}, +/* 62714 */ {(13<<2)|2,{121,57,0}}, +/* 62715 */ {(13<<2)|2,{121,57,0}}, +/* 62716 */ {(13<<2)|2,{121,57,0}}, +/* 62717 */ {(13<<2)|2,{121,57,0}}, +/* 62718 */ {(13<<2)|2,{121,57,0}}, +/* 62719 */ {(13<<2)|2,{121,57,0}}, +/* 62720 */ {(13<<2)|2,{121,61,0}}, +/* 62721 */ {(13<<2)|2,{121,61,0}}, +/* 62722 */ {(13<<2)|2,{121,61,0}}, +/* 62723 */ {(13<<2)|2,{121,61,0}}, +/* 62724 */ {(13<<2)|2,{121,61,0}}, +/* 62725 */ {(13<<2)|2,{121,61,0}}, +/* 62726 */ {(13<<2)|2,{121,61,0}}, +/* 62727 */ {(13<<2)|2,{121,61,0}}, +/* 62728 */ {(13<<2)|2,{121,65,0}}, +/* 62729 */ {(13<<2)|2,{121,65,0}}, +/* 62730 */ {(13<<2)|2,{121,65,0}}, +/* 62731 */ {(13<<2)|2,{121,65,0}}, +/* 62732 */ {(13<<2)|2,{121,65,0}}, +/* 62733 */ {(13<<2)|2,{121,65,0}}, +/* 62734 */ {(13<<2)|2,{121,65,0}}, +/* 62735 */ {(13<<2)|2,{121,65,0}}, +/* 62736 */ {(13<<2)|2,{121,95,0}}, +/* 62737 */ {(13<<2)|2,{121,95,0}}, +/* 62738 */ {(13<<2)|2,{121,95,0}}, +/* 62739 */ {(13<<2)|2,{121,95,0}}, +/* 62740 */ {(13<<2)|2,{121,95,0}}, +/* 62741 */ {(13<<2)|2,{121,95,0}}, +/* 62742 */ {(13<<2)|2,{121,95,0}}, +/* 62743 */ {(13<<2)|2,{121,95,0}}, +/* 62744 */ {(13<<2)|2,{121,98,0}}, +/* 62745 */ {(13<<2)|2,{121,98,0}}, +/* 62746 */ {(13<<2)|2,{121,98,0}}, +/* 62747 */ {(13<<2)|2,{121,98,0}}, +/* 62748 */ {(13<<2)|2,{121,98,0}}, +/* 62749 */ {(13<<2)|2,{121,98,0}}, +/* 62750 */ {(13<<2)|2,{121,98,0}}, +/* 62751 */ {(13<<2)|2,{121,98,0}}, +/* 62752 */ {(13<<2)|2,{121,100,0}}, +/* 62753 */ {(13<<2)|2,{121,100,0}}, +/* 62754 */ {(13<<2)|2,{121,100,0}}, +/* 62755 */ {(13<<2)|2,{121,100,0}}, +/* 62756 */ {(13<<2)|2,{121,100,0}}, +/* 62757 */ {(13<<2)|2,{121,100,0}}, +/* 62758 */ {(13<<2)|2,{121,100,0}}, +/* 62759 */ {(13<<2)|2,{121,100,0}}, +/* 62760 */ {(13<<2)|2,{121,102,0}}, +/* 62761 */ {(13<<2)|2,{121,102,0}}, +/* 62762 */ {(13<<2)|2,{121,102,0}}, +/* 62763 */ {(13<<2)|2,{121,102,0}}, +/* 62764 */ {(13<<2)|2,{121,102,0}}, +/* 62765 */ {(13<<2)|2,{121,102,0}}, +/* 62766 */ {(13<<2)|2,{121,102,0}}, +/* 62767 */ {(13<<2)|2,{121,102,0}}, +/* 62768 */ {(13<<2)|2,{121,103,0}}, +/* 62769 */ {(13<<2)|2,{121,103,0}}, +/* 62770 */ {(13<<2)|2,{121,103,0}}, +/* 62771 */ {(13<<2)|2,{121,103,0}}, +/* 62772 */ {(13<<2)|2,{121,103,0}}, +/* 62773 */ {(13<<2)|2,{121,103,0}}, +/* 62774 */ {(13<<2)|2,{121,103,0}}, +/* 62775 */ {(13<<2)|2,{121,103,0}}, +/* 62776 */ {(13<<2)|2,{121,104,0}}, +/* 62777 */ {(13<<2)|2,{121,104,0}}, +/* 62778 */ {(13<<2)|2,{121,104,0}}, +/* 62779 */ {(13<<2)|2,{121,104,0}}, +/* 62780 */ {(13<<2)|2,{121,104,0}}, +/* 62781 */ {(13<<2)|2,{121,104,0}}, +/* 62782 */ {(13<<2)|2,{121,104,0}}, +/* 62783 */ {(13<<2)|2,{121,104,0}}, +/* 62784 */ {(13<<2)|2,{121,108,0}}, +/* 62785 */ {(13<<2)|2,{121,108,0}}, +/* 62786 */ {(13<<2)|2,{121,108,0}}, +/* 62787 */ {(13<<2)|2,{121,108,0}}, +/* 62788 */ {(13<<2)|2,{121,108,0}}, +/* 62789 */ {(13<<2)|2,{121,108,0}}, +/* 62790 */ {(13<<2)|2,{121,108,0}}, +/* 62791 */ {(13<<2)|2,{121,108,0}}, +/* 62792 */ {(13<<2)|2,{121,109,0}}, +/* 62793 */ {(13<<2)|2,{121,109,0}}, +/* 62794 */ {(13<<2)|2,{121,109,0}}, +/* 62795 */ {(13<<2)|2,{121,109,0}}, +/* 62796 */ {(13<<2)|2,{121,109,0}}, +/* 62797 */ {(13<<2)|2,{121,109,0}}, +/* 62798 */ {(13<<2)|2,{121,109,0}}, +/* 62799 */ {(13<<2)|2,{121,109,0}}, +/* 62800 */ {(13<<2)|2,{121,110,0}}, +/* 62801 */ {(13<<2)|2,{121,110,0}}, +/* 62802 */ {(13<<2)|2,{121,110,0}}, +/* 62803 */ {(13<<2)|2,{121,110,0}}, +/* 62804 */ {(13<<2)|2,{121,110,0}}, +/* 62805 */ {(13<<2)|2,{121,110,0}}, +/* 62806 */ {(13<<2)|2,{121,110,0}}, +/* 62807 */ {(13<<2)|2,{121,110,0}}, +/* 62808 */ {(13<<2)|2,{121,112,0}}, +/* 62809 */ {(13<<2)|2,{121,112,0}}, +/* 62810 */ {(13<<2)|2,{121,112,0}}, +/* 62811 */ {(13<<2)|2,{121,112,0}}, +/* 62812 */ {(13<<2)|2,{121,112,0}}, +/* 62813 */ {(13<<2)|2,{121,112,0}}, +/* 62814 */ {(13<<2)|2,{121,112,0}}, +/* 62815 */ {(13<<2)|2,{121,112,0}}, +/* 62816 */ {(13<<2)|2,{121,114,0}}, +/* 62817 */ {(13<<2)|2,{121,114,0}}, +/* 62818 */ {(13<<2)|2,{121,114,0}}, +/* 62819 */ {(13<<2)|2,{121,114,0}}, +/* 62820 */ {(13<<2)|2,{121,114,0}}, +/* 62821 */ {(13<<2)|2,{121,114,0}}, +/* 62822 */ {(13<<2)|2,{121,114,0}}, +/* 62823 */ {(13<<2)|2,{121,114,0}}, +/* 62824 */ {(13<<2)|2,{121,117,0}}, +/* 62825 */ {(13<<2)|2,{121,117,0}}, +/* 62826 */ {(13<<2)|2,{121,117,0}}, +/* 62827 */ {(13<<2)|2,{121,117,0}}, +/* 62828 */ {(13<<2)|2,{121,117,0}}, +/* 62829 */ {(13<<2)|2,{121,117,0}}, +/* 62830 */ {(13<<2)|2,{121,117,0}}, +/* 62831 */ {(13<<2)|2,{121,117,0}}, +/* 62832 */ {(14<<2)|2,{121,58,0}}, +/* 62833 */ {(14<<2)|2,{121,58,0}}, +/* 62834 */ {(14<<2)|2,{121,58,0}}, +/* 62835 */ {(14<<2)|2,{121,58,0}}, +/* 62836 */ {(14<<2)|2,{121,66,0}}, +/* 62837 */ {(14<<2)|2,{121,66,0}}, +/* 62838 */ {(14<<2)|2,{121,66,0}}, +/* 62839 */ {(14<<2)|2,{121,66,0}}, +/* 62840 */ {(14<<2)|2,{121,67,0}}, +/* 62841 */ {(14<<2)|2,{121,67,0}}, +/* 62842 */ {(14<<2)|2,{121,67,0}}, +/* 62843 */ {(14<<2)|2,{121,67,0}}, +/* 62844 */ {(14<<2)|2,{121,68,0}}, +/* 62845 */ {(14<<2)|2,{121,68,0}}, +/* 62846 */ {(14<<2)|2,{121,68,0}}, +/* 62847 */ {(14<<2)|2,{121,68,0}}, +/* 62848 */ {(14<<2)|2,{121,69,0}}, +/* 62849 */ {(14<<2)|2,{121,69,0}}, +/* 62850 */ {(14<<2)|2,{121,69,0}}, +/* 62851 */ {(14<<2)|2,{121,69,0}}, +/* 62852 */ {(14<<2)|2,{121,70,0}}, +/* 62853 */ {(14<<2)|2,{121,70,0}}, +/* 62854 */ {(14<<2)|2,{121,70,0}}, +/* 62855 */ {(14<<2)|2,{121,70,0}}, +/* 62856 */ {(14<<2)|2,{121,71,0}}, +/* 62857 */ {(14<<2)|2,{121,71,0}}, +/* 62858 */ {(14<<2)|2,{121,71,0}}, +/* 62859 */ {(14<<2)|2,{121,71,0}}, +/* 62860 */ {(14<<2)|2,{121,72,0}}, +/* 62861 */ {(14<<2)|2,{121,72,0}}, +/* 62862 */ {(14<<2)|2,{121,72,0}}, +/* 62863 */ {(14<<2)|2,{121,72,0}}, +/* 62864 */ {(14<<2)|2,{121,73,0}}, +/* 62865 */ {(14<<2)|2,{121,73,0}}, +/* 62866 */ {(14<<2)|2,{121,73,0}}, +/* 62867 */ {(14<<2)|2,{121,73,0}}, +/* 62868 */ {(14<<2)|2,{121,74,0}}, +/* 62869 */ {(14<<2)|2,{121,74,0}}, +/* 62870 */ {(14<<2)|2,{121,74,0}}, +/* 62871 */ {(14<<2)|2,{121,74,0}}, +/* 62872 */ {(14<<2)|2,{121,75,0}}, +/* 62873 */ {(14<<2)|2,{121,75,0}}, +/* 62874 */ {(14<<2)|2,{121,75,0}}, +/* 62875 */ {(14<<2)|2,{121,75,0}}, +/* 62876 */ {(14<<2)|2,{121,76,0}}, +/* 62877 */ {(14<<2)|2,{121,76,0}}, +/* 62878 */ {(14<<2)|2,{121,76,0}}, +/* 62879 */ {(14<<2)|2,{121,76,0}}, +/* 62880 */ {(14<<2)|2,{121,77,0}}, +/* 62881 */ {(14<<2)|2,{121,77,0}}, +/* 62882 */ {(14<<2)|2,{121,77,0}}, +/* 62883 */ {(14<<2)|2,{121,77,0}}, +/* 62884 */ {(14<<2)|2,{121,78,0}}, +/* 62885 */ {(14<<2)|2,{121,78,0}}, +/* 62886 */ {(14<<2)|2,{121,78,0}}, +/* 62887 */ {(14<<2)|2,{121,78,0}}, +/* 62888 */ {(14<<2)|2,{121,79,0}}, +/* 62889 */ {(14<<2)|2,{121,79,0}}, +/* 62890 */ {(14<<2)|2,{121,79,0}}, +/* 62891 */ {(14<<2)|2,{121,79,0}}, +/* 62892 */ {(14<<2)|2,{121,80,0}}, +/* 62893 */ {(14<<2)|2,{121,80,0}}, +/* 62894 */ {(14<<2)|2,{121,80,0}}, +/* 62895 */ {(14<<2)|2,{121,80,0}}, +/* 62896 */ {(14<<2)|2,{121,81,0}}, +/* 62897 */ {(14<<2)|2,{121,81,0}}, +/* 62898 */ {(14<<2)|2,{121,81,0}}, +/* 62899 */ {(14<<2)|2,{121,81,0}}, +/* 62900 */ {(14<<2)|2,{121,82,0}}, +/* 62901 */ {(14<<2)|2,{121,82,0}}, +/* 62902 */ {(14<<2)|2,{121,82,0}}, +/* 62903 */ {(14<<2)|2,{121,82,0}}, +/* 62904 */ {(14<<2)|2,{121,83,0}}, +/* 62905 */ {(14<<2)|2,{121,83,0}}, +/* 62906 */ {(14<<2)|2,{121,83,0}}, +/* 62907 */ {(14<<2)|2,{121,83,0}}, +/* 62908 */ {(14<<2)|2,{121,84,0}}, +/* 62909 */ {(14<<2)|2,{121,84,0}}, +/* 62910 */ {(14<<2)|2,{121,84,0}}, +/* 62911 */ {(14<<2)|2,{121,84,0}}, +/* 62912 */ {(14<<2)|2,{121,85,0}}, +/* 62913 */ {(14<<2)|2,{121,85,0}}, +/* 62914 */ {(14<<2)|2,{121,85,0}}, +/* 62915 */ {(14<<2)|2,{121,85,0}}, +/* 62916 */ {(14<<2)|2,{121,86,0}}, +/* 62917 */ {(14<<2)|2,{121,86,0}}, +/* 62918 */ {(14<<2)|2,{121,86,0}}, +/* 62919 */ {(14<<2)|2,{121,86,0}}, +/* 62920 */ {(14<<2)|2,{121,87,0}}, +/* 62921 */ {(14<<2)|2,{121,87,0}}, +/* 62922 */ {(14<<2)|2,{121,87,0}}, +/* 62923 */ {(14<<2)|2,{121,87,0}}, +/* 62924 */ {(14<<2)|2,{121,89,0}}, +/* 62925 */ {(14<<2)|2,{121,89,0}}, +/* 62926 */ {(14<<2)|2,{121,89,0}}, +/* 62927 */ {(14<<2)|2,{121,89,0}}, +/* 62928 */ {(14<<2)|2,{121,106,0}}, +/* 62929 */ {(14<<2)|2,{121,106,0}}, +/* 62930 */ {(14<<2)|2,{121,106,0}}, +/* 62931 */ {(14<<2)|2,{121,106,0}}, +/* 62932 */ {(14<<2)|2,{121,107,0}}, +/* 62933 */ {(14<<2)|2,{121,107,0}}, +/* 62934 */ {(14<<2)|2,{121,107,0}}, +/* 62935 */ {(14<<2)|2,{121,107,0}}, +/* 62936 */ {(14<<2)|2,{121,113,0}}, +/* 62937 */ {(14<<2)|2,{121,113,0}}, +/* 62938 */ {(14<<2)|2,{121,113,0}}, +/* 62939 */ {(14<<2)|2,{121,113,0}}, +/* 62940 */ {(14<<2)|2,{121,118,0}}, +/* 62941 */ {(14<<2)|2,{121,118,0}}, +/* 62942 */ {(14<<2)|2,{121,118,0}}, +/* 62943 */ {(14<<2)|2,{121,118,0}}, +/* 62944 */ {(14<<2)|2,{121,119,0}}, +/* 62945 */ {(14<<2)|2,{121,119,0}}, +/* 62946 */ {(14<<2)|2,{121,119,0}}, +/* 62947 */ {(14<<2)|2,{121,119,0}}, +/* 62948 */ {(14<<2)|2,{121,120,0}}, +/* 62949 */ {(14<<2)|2,{121,120,0}}, +/* 62950 */ {(14<<2)|2,{121,120,0}}, +/* 62951 */ {(14<<2)|2,{121,120,0}}, +/* 62952 */ {(14<<2)|2,{121,121,0}}, +/* 62953 */ {(14<<2)|2,{121,121,0}}, +/* 62954 */ {(14<<2)|2,{121,121,0}}, +/* 62955 */ {(14<<2)|2,{121,121,0}}, +/* 62956 */ {(14<<2)|2,{121,122,0}}, +/* 62957 */ {(14<<2)|2,{121,122,0}}, +/* 62958 */ {(14<<2)|2,{121,122,0}}, +/* 62959 */ {(14<<2)|2,{121,122,0}}, +/* 62960 */ {(15<<2)|2,{121,38,0}}, +/* 62961 */ {(15<<2)|2,{121,38,0}}, +/* 62962 */ {(15<<2)|2,{121,42,0}}, +/* 62963 */ {(15<<2)|2,{121,42,0}}, +/* 62964 */ {(15<<2)|2,{121,44,0}}, +/* 62965 */ {(15<<2)|2,{121,44,0}}, +/* 62966 */ {(15<<2)|2,{121,59,0}}, +/* 62967 */ {(15<<2)|2,{121,59,0}}, +/* 62968 */ {(15<<2)|2,{121,88,0}}, +/* 62969 */ {(15<<2)|2,{121,88,0}}, +/* 62970 */ {(15<<2)|2,{121,90,0}}, +/* 62971 */ {(15<<2)|2,{121,90,0}}, +/* 62972 */ {(7<<2)|1,{121,0,0}}, +/* 62973 */ {(7<<2)|1,{121,0,0}}, +/* 62974 */ {(7<<2)|1,{121,0,0}}, +/* 62975 */ {(7<<2)|1,{121,0,0}}, +/* 62976 */ {(12<<2)|2,{122,48,0}}, +/* 62977 */ {(12<<2)|2,{122,48,0}}, +/* 62978 */ {(12<<2)|2,{122,48,0}}, +/* 62979 */ {(12<<2)|2,{122,48,0}}, +/* 62980 */ {(12<<2)|2,{122,48,0}}, +/* 62981 */ {(12<<2)|2,{122,48,0}}, +/* 62982 */ {(12<<2)|2,{122,48,0}}, +/* 62983 */ {(12<<2)|2,{122,48,0}}, +/* 62984 */ {(12<<2)|2,{122,48,0}}, +/* 62985 */ {(12<<2)|2,{122,48,0}}, +/* 62986 */ {(12<<2)|2,{122,48,0}}, +/* 62987 */ {(12<<2)|2,{122,48,0}}, +/* 62988 */ {(12<<2)|2,{122,48,0}}, +/* 62989 */ {(12<<2)|2,{122,48,0}}, +/* 62990 */ {(12<<2)|2,{122,48,0}}, +/* 62991 */ {(12<<2)|2,{122,48,0}}, +/* 62992 */ {(12<<2)|2,{122,49,0}}, +/* 62993 */ {(12<<2)|2,{122,49,0}}, +/* 62994 */ {(12<<2)|2,{122,49,0}}, +/* 62995 */ {(12<<2)|2,{122,49,0}}, +/* 62996 */ {(12<<2)|2,{122,49,0}}, +/* 62997 */ {(12<<2)|2,{122,49,0}}, +/* 62998 */ {(12<<2)|2,{122,49,0}}, +/* 62999 */ {(12<<2)|2,{122,49,0}}, +/* 63000 */ {(12<<2)|2,{122,49,0}}, +/* 63001 */ {(12<<2)|2,{122,49,0}}, +/* 63002 */ {(12<<2)|2,{122,49,0}}, +/* 63003 */ {(12<<2)|2,{122,49,0}}, +/* 63004 */ {(12<<2)|2,{122,49,0}}, +/* 63005 */ {(12<<2)|2,{122,49,0}}, +/* 63006 */ {(12<<2)|2,{122,49,0}}, +/* 63007 */ {(12<<2)|2,{122,49,0}}, +/* 63008 */ {(12<<2)|2,{122,50,0}}, +/* 63009 */ {(12<<2)|2,{122,50,0}}, +/* 63010 */ {(12<<2)|2,{122,50,0}}, +/* 63011 */ {(12<<2)|2,{122,50,0}}, +/* 63012 */ {(12<<2)|2,{122,50,0}}, +/* 63013 */ {(12<<2)|2,{122,50,0}}, +/* 63014 */ {(12<<2)|2,{122,50,0}}, +/* 63015 */ {(12<<2)|2,{122,50,0}}, +/* 63016 */ {(12<<2)|2,{122,50,0}}, +/* 63017 */ {(12<<2)|2,{122,50,0}}, +/* 63018 */ {(12<<2)|2,{122,50,0}}, +/* 63019 */ {(12<<2)|2,{122,50,0}}, +/* 63020 */ {(12<<2)|2,{122,50,0}}, +/* 63021 */ {(12<<2)|2,{122,50,0}}, +/* 63022 */ {(12<<2)|2,{122,50,0}}, +/* 63023 */ {(12<<2)|2,{122,50,0}}, +/* 63024 */ {(12<<2)|2,{122,97,0}}, +/* 63025 */ {(12<<2)|2,{122,97,0}}, +/* 63026 */ {(12<<2)|2,{122,97,0}}, +/* 63027 */ {(12<<2)|2,{122,97,0}}, +/* 63028 */ {(12<<2)|2,{122,97,0}}, +/* 63029 */ {(12<<2)|2,{122,97,0}}, +/* 63030 */ {(12<<2)|2,{122,97,0}}, +/* 63031 */ {(12<<2)|2,{122,97,0}}, +/* 63032 */ {(12<<2)|2,{122,97,0}}, +/* 63033 */ {(12<<2)|2,{122,97,0}}, +/* 63034 */ {(12<<2)|2,{122,97,0}}, +/* 63035 */ {(12<<2)|2,{122,97,0}}, +/* 63036 */ {(12<<2)|2,{122,97,0}}, +/* 63037 */ {(12<<2)|2,{122,97,0}}, +/* 63038 */ {(12<<2)|2,{122,97,0}}, +/* 63039 */ {(12<<2)|2,{122,97,0}}, +/* 63040 */ {(12<<2)|2,{122,99,0}}, +/* 63041 */ {(12<<2)|2,{122,99,0}}, +/* 63042 */ {(12<<2)|2,{122,99,0}}, +/* 63043 */ {(12<<2)|2,{122,99,0}}, +/* 63044 */ {(12<<2)|2,{122,99,0}}, +/* 63045 */ {(12<<2)|2,{122,99,0}}, +/* 63046 */ {(12<<2)|2,{122,99,0}}, +/* 63047 */ {(12<<2)|2,{122,99,0}}, +/* 63048 */ {(12<<2)|2,{122,99,0}}, +/* 63049 */ {(12<<2)|2,{122,99,0}}, +/* 63050 */ {(12<<2)|2,{122,99,0}}, +/* 63051 */ {(12<<2)|2,{122,99,0}}, +/* 63052 */ {(12<<2)|2,{122,99,0}}, +/* 63053 */ {(12<<2)|2,{122,99,0}}, +/* 63054 */ {(12<<2)|2,{122,99,0}}, +/* 63055 */ {(12<<2)|2,{122,99,0}}, +/* 63056 */ {(12<<2)|2,{122,101,0}}, +/* 63057 */ {(12<<2)|2,{122,101,0}}, +/* 63058 */ {(12<<2)|2,{122,101,0}}, +/* 63059 */ {(12<<2)|2,{122,101,0}}, +/* 63060 */ {(12<<2)|2,{122,101,0}}, +/* 63061 */ {(12<<2)|2,{122,101,0}}, +/* 63062 */ {(12<<2)|2,{122,101,0}}, +/* 63063 */ {(12<<2)|2,{122,101,0}}, +/* 63064 */ {(12<<2)|2,{122,101,0}}, +/* 63065 */ {(12<<2)|2,{122,101,0}}, +/* 63066 */ {(12<<2)|2,{122,101,0}}, +/* 63067 */ {(12<<2)|2,{122,101,0}}, +/* 63068 */ {(12<<2)|2,{122,101,0}}, +/* 63069 */ {(12<<2)|2,{122,101,0}}, +/* 63070 */ {(12<<2)|2,{122,101,0}}, +/* 63071 */ {(12<<2)|2,{122,101,0}}, +/* 63072 */ {(12<<2)|2,{122,105,0}}, +/* 63073 */ {(12<<2)|2,{122,105,0}}, +/* 63074 */ {(12<<2)|2,{122,105,0}}, +/* 63075 */ {(12<<2)|2,{122,105,0}}, +/* 63076 */ {(12<<2)|2,{122,105,0}}, +/* 63077 */ {(12<<2)|2,{122,105,0}}, +/* 63078 */ {(12<<2)|2,{122,105,0}}, +/* 63079 */ {(12<<2)|2,{122,105,0}}, +/* 63080 */ {(12<<2)|2,{122,105,0}}, +/* 63081 */ {(12<<2)|2,{122,105,0}}, +/* 63082 */ {(12<<2)|2,{122,105,0}}, +/* 63083 */ {(12<<2)|2,{122,105,0}}, +/* 63084 */ {(12<<2)|2,{122,105,0}}, +/* 63085 */ {(12<<2)|2,{122,105,0}}, +/* 63086 */ {(12<<2)|2,{122,105,0}}, +/* 63087 */ {(12<<2)|2,{122,105,0}}, +/* 63088 */ {(12<<2)|2,{122,111,0}}, +/* 63089 */ {(12<<2)|2,{122,111,0}}, +/* 63090 */ {(12<<2)|2,{122,111,0}}, +/* 63091 */ {(12<<2)|2,{122,111,0}}, +/* 63092 */ {(12<<2)|2,{122,111,0}}, +/* 63093 */ {(12<<2)|2,{122,111,0}}, +/* 63094 */ {(12<<2)|2,{122,111,0}}, +/* 63095 */ {(12<<2)|2,{122,111,0}}, +/* 63096 */ {(12<<2)|2,{122,111,0}}, +/* 63097 */ {(12<<2)|2,{122,111,0}}, +/* 63098 */ {(12<<2)|2,{122,111,0}}, +/* 63099 */ {(12<<2)|2,{122,111,0}}, +/* 63100 */ {(12<<2)|2,{122,111,0}}, +/* 63101 */ {(12<<2)|2,{122,111,0}}, +/* 63102 */ {(12<<2)|2,{122,111,0}}, +/* 63103 */ {(12<<2)|2,{122,111,0}}, +/* 63104 */ {(12<<2)|2,{122,115,0}}, +/* 63105 */ {(12<<2)|2,{122,115,0}}, +/* 63106 */ {(12<<2)|2,{122,115,0}}, +/* 63107 */ {(12<<2)|2,{122,115,0}}, +/* 63108 */ {(12<<2)|2,{122,115,0}}, +/* 63109 */ {(12<<2)|2,{122,115,0}}, +/* 63110 */ {(12<<2)|2,{122,115,0}}, +/* 63111 */ {(12<<2)|2,{122,115,0}}, +/* 63112 */ {(12<<2)|2,{122,115,0}}, +/* 63113 */ {(12<<2)|2,{122,115,0}}, +/* 63114 */ {(12<<2)|2,{122,115,0}}, +/* 63115 */ {(12<<2)|2,{122,115,0}}, +/* 63116 */ {(12<<2)|2,{122,115,0}}, +/* 63117 */ {(12<<2)|2,{122,115,0}}, +/* 63118 */ {(12<<2)|2,{122,115,0}}, +/* 63119 */ {(12<<2)|2,{122,115,0}}, +/* 63120 */ {(12<<2)|2,{122,116,0}}, +/* 63121 */ {(12<<2)|2,{122,116,0}}, +/* 63122 */ {(12<<2)|2,{122,116,0}}, +/* 63123 */ {(12<<2)|2,{122,116,0}}, +/* 63124 */ {(12<<2)|2,{122,116,0}}, +/* 63125 */ {(12<<2)|2,{122,116,0}}, +/* 63126 */ {(12<<2)|2,{122,116,0}}, +/* 63127 */ {(12<<2)|2,{122,116,0}}, +/* 63128 */ {(12<<2)|2,{122,116,0}}, +/* 63129 */ {(12<<2)|2,{122,116,0}}, +/* 63130 */ {(12<<2)|2,{122,116,0}}, +/* 63131 */ {(12<<2)|2,{122,116,0}}, +/* 63132 */ {(12<<2)|2,{122,116,0}}, +/* 63133 */ {(12<<2)|2,{122,116,0}}, +/* 63134 */ {(12<<2)|2,{122,116,0}}, +/* 63135 */ {(12<<2)|2,{122,116,0}}, +/* 63136 */ {(13<<2)|2,{122,32,0}}, +/* 63137 */ {(13<<2)|2,{122,32,0}}, +/* 63138 */ {(13<<2)|2,{122,32,0}}, +/* 63139 */ {(13<<2)|2,{122,32,0}}, +/* 63140 */ {(13<<2)|2,{122,32,0}}, +/* 63141 */ {(13<<2)|2,{122,32,0}}, +/* 63142 */ {(13<<2)|2,{122,32,0}}, +/* 63143 */ {(13<<2)|2,{122,32,0}}, +/* 63144 */ {(13<<2)|2,{122,37,0}}, +/* 63145 */ {(13<<2)|2,{122,37,0}}, +/* 63146 */ {(13<<2)|2,{122,37,0}}, +/* 63147 */ {(13<<2)|2,{122,37,0}}, +/* 63148 */ {(13<<2)|2,{122,37,0}}, +/* 63149 */ {(13<<2)|2,{122,37,0}}, +/* 63150 */ {(13<<2)|2,{122,37,0}}, +/* 63151 */ {(13<<2)|2,{122,37,0}}, +/* 63152 */ {(13<<2)|2,{122,45,0}}, +/* 63153 */ {(13<<2)|2,{122,45,0}}, +/* 63154 */ {(13<<2)|2,{122,45,0}}, +/* 63155 */ {(13<<2)|2,{122,45,0}}, +/* 63156 */ {(13<<2)|2,{122,45,0}}, +/* 63157 */ {(13<<2)|2,{122,45,0}}, +/* 63158 */ {(13<<2)|2,{122,45,0}}, +/* 63159 */ {(13<<2)|2,{122,45,0}}, +/* 63160 */ {(13<<2)|2,{122,46,0}}, +/* 63161 */ {(13<<2)|2,{122,46,0}}, +/* 63162 */ {(13<<2)|2,{122,46,0}}, +/* 63163 */ {(13<<2)|2,{122,46,0}}, +/* 63164 */ {(13<<2)|2,{122,46,0}}, +/* 63165 */ {(13<<2)|2,{122,46,0}}, +/* 63166 */ {(13<<2)|2,{122,46,0}}, +/* 63167 */ {(13<<2)|2,{122,46,0}}, +/* 63168 */ {(13<<2)|2,{122,47,0}}, +/* 63169 */ {(13<<2)|2,{122,47,0}}, +/* 63170 */ {(13<<2)|2,{122,47,0}}, +/* 63171 */ {(13<<2)|2,{122,47,0}}, +/* 63172 */ {(13<<2)|2,{122,47,0}}, +/* 63173 */ {(13<<2)|2,{122,47,0}}, +/* 63174 */ {(13<<2)|2,{122,47,0}}, +/* 63175 */ {(13<<2)|2,{122,47,0}}, +/* 63176 */ {(13<<2)|2,{122,51,0}}, +/* 63177 */ {(13<<2)|2,{122,51,0}}, +/* 63178 */ {(13<<2)|2,{122,51,0}}, +/* 63179 */ {(13<<2)|2,{122,51,0}}, +/* 63180 */ {(13<<2)|2,{122,51,0}}, +/* 63181 */ {(13<<2)|2,{122,51,0}}, +/* 63182 */ {(13<<2)|2,{122,51,0}}, +/* 63183 */ {(13<<2)|2,{122,51,0}}, +/* 63184 */ {(13<<2)|2,{122,52,0}}, +/* 63185 */ {(13<<2)|2,{122,52,0}}, +/* 63186 */ {(13<<2)|2,{122,52,0}}, +/* 63187 */ {(13<<2)|2,{122,52,0}}, +/* 63188 */ {(13<<2)|2,{122,52,0}}, +/* 63189 */ {(13<<2)|2,{122,52,0}}, +/* 63190 */ {(13<<2)|2,{122,52,0}}, +/* 63191 */ {(13<<2)|2,{122,52,0}}, +/* 63192 */ {(13<<2)|2,{122,53,0}}, +/* 63193 */ {(13<<2)|2,{122,53,0}}, +/* 63194 */ {(13<<2)|2,{122,53,0}}, +/* 63195 */ {(13<<2)|2,{122,53,0}}, +/* 63196 */ {(13<<2)|2,{122,53,0}}, +/* 63197 */ {(13<<2)|2,{122,53,0}}, +/* 63198 */ {(13<<2)|2,{122,53,0}}, +/* 63199 */ {(13<<2)|2,{122,53,0}}, +/* 63200 */ {(13<<2)|2,{122,54,0}}, +/* 63201 */ {(13<<2)|2,{122,54,0}}, +/* 63202 */ {(13<<2)|2,{122,54,0}}, +/* 63203 */ {(13<<2)|2,{122,54,0}}, +/* 63204 */ {(13<<2)|2,{122,54,0}}, +/* 63205 */ {(13<<2)|2,{122,54,0}}, +/* 63206 */ {(13<<2)|2,{122,54,0}}, +/* 63207 */ {(13<<2)|2,{122,54,0}}, +/* 63208 */ {(13<<2)|2,{122,55,0}}, +/* 63209 */ {(13<<2)|2,{122,55,0}}, +/* 63210 */ {(13<<2)|2,{122,55,0}}, +/* 63211 */ {(13<<2)|2,{122,55,0}}, +/* 63212 */ {(13<<2)|2,{122,55,0}}, +/* 63213 */ {(13<<2)|2,{122,55,0}}, +/* 63214 */ {(13<<2)|2,{122,55,0}}, +/* 63215 */ {(13<<2)|2,{122,55,0}}, +/* 63216 */ {(13<<2)|2,{122,56,0}}, +/* 63217 */ {(13<<2)|2,{122,56,0}}, +/* 63218 */ {(13<<2)|2,{122,56,0}}, +/* 63219 */ {(13<<2)|2,{122,56,0}}, +/* 63220 */ {(13<<2)|2,{122,56,0}}, +/* 63221 */ {(13<<2)|2,{122,56,0}}, +/* 63222 */ {(13<<2)|2,{122,56,0}}, +/* 63223 */ {(13<<2)|2,{122,56,0}}, +/* 63224 */ {(13<<2)|2,{122,57,0}}, +/* 63225 */ {(13<<2)|2,{122,57,0}}, +/* 63226 */ {(13<<2)|2,{122,57,0}}, +/* 63227 */ {(13<<2)|2,{122,57,0}}, +/* 63228 */ {(13<<2)|2,{122,57,0}}, +/* 63229 */ {(13<<2)|2,{122,57,0}}, +/* 63230 */ {(13<<2)|2,{122,57,0}}, +/* 63231 */ {(13<<2)|2,{122,57,0}}, +/* 63232 */ {(13<<2)|2,{122,61,0}}, +/* 63233 */ {(13<<2)|2,{122,61,0}}, +/* 63234 */ {(13<<2)|2,{122,61,0}}, +/* 63235 */ {(13<<2)|2,{122,61,0}}, +/* 63236 */ {(13<<2)|2,{122,61,0}}, +/* 63237 */ {(13<<2)|2,{122,61,0}}, +/* 63238 */ {(13<<2)|2,{122,61,0}}, +/* 63239 */ {(13<<2)|2,{122,61,0}}, +/* 63240 */ {(13<<2)|2,{122,65,0}}, +/* 63241 */ {(13<<2)|2,{122,65,0}}, +/* 63242 */ {(13<<2)|2,{122,65,0}}, +/* 63243 */ {(13<<2)|2,{122,65,0}}, +/* 63244 */ {(13<<2)|2,{122,65,0}}, +/* 63245 */ {(13<<2)|2,{122,65,0}}, +/* 63246 */ {(13<<2)|2,{122,65,0}}, +/* 63247 */ {(13<<2)|2,{122,65,0}}, +/* 63248 */ {(13<<2)|2,{122,95,0}}, +/* 63249 */ {(13<<2)|2,{122,95,0}}, +/* 63250 */ {(13<<2)|2,{122,95,0}}, +/* 63251 */ {(13<<2)|2,{122,95,0}}, +/* 63252 */ {(13<<2)|2,{122,95,0}}, +/* 63253 */ {(13<<2)|2,{122,95,0}}, +/* 63254 */ {(13<<2)|2,{122,95,0}}, +/* 63255 */ {(13<<2)|2,{122,95,0}}, +/* 63256 */ {(13<<2)|2,{122,98,0}}, +/* 63257 */ {(13<<2)|2,{122,98,0}}, +/* 63258 */ {(13<<2)|2,{122,98,0}}, +/* 63259 */ {(13<<2)|2,{122,98,0}}, +/* 63260 */ {(13<<2)|2,{122,98,0}}, +/* 63261 */ {(13<<2)|2,{122,98,0}}, +/* 63262 */ {(13<<2)|2,{122,98,0}}, +/* 63263 */ {(13<<2)|2,{122,98,0}}, +/* 63264 */ {(13<<2)|2,{122,100,0}}, +/* 63265 */ {(13<<2)|2,{122,100,0}}, +/* 63266 */ {(13<<2)|2,{122,100,0}}, +/* 63267 */ {(13<<2)|2,{122,100,0}}, +/* 63268 */ {(13<<2)|2,{122,100,0}}, +/* 63269 */ {(13<<2)|2,{122,100,0}}, +/* 63270 */ {(13<<2)|2,{122,100,0}}, +/* 63271 */ {(13<<2)|2,{122,100,0}}, +/* 63272 */ {(13<<2)|2,{122,102,0}}, +/* 63273 */ {(13<<2)|2,{122,102,0}}, +/* 63274 */ {(13<<2)|2,{122,102,0}}, +/* 63275 */ {(13<<2)|2,{122,102,0}}, +/* 63276 */ {(13<<2)|2,{122,102,0}}, +/* 63277 */ {(13<<2)|2,{122,102,0}}, +/* 63278 */ {(13<<2)|2,{122,102,0}}, +/* 63279 */ {(13<<2)|2,{122,102,0}}, +/* 63280 */ {(13<<2)|2,{122,103,0}}, +/* 63281 */ {(13<<2)|2,{122,103,0}}, +/* 63282 */ {(13<<2)|2,{122,103,0}}, +/* 63283 */ {(13<<2)|2,{122,103,0}}, +/* 63284 */ {(13<<2)|2,{122,103,0}}, +/* 63285 */ {(13<<2)|2,{122,103,0}}, +/* 63286 */ {(13<<2)|2,{122,103,0}}, +/* 63287 */ {(13<<2)|2,{122,103,0}}, +/* 63288 */ {(13<<2)|2,{122,104,0}}, +/* 63289 */ {(13<<2)|2,{122,104,0}}, +/* 63290 */ {(13<<2)|2,{122,104,0}}, +/* 63291 */ {(13<<2)|2,{122,104,0}}, +/* 63292 */ {(13<<2)|2,{122,104,0}}, +/* 63293 */ {(13<<2)|2,{122,104,0}}, +/* 63294 */ {(13<<2)|2,{122,104,0}}, +/* 63295 */ {(13<<2)|2,{122,104,0}}, +/* 63296 */ {(13<<2)|2,{122,108,0}}, +/* 63297 */ {(13<<2)|2,{122,108,0}}, +/* 63298 */ {(13<<2)|2,{122,108,0}}, +/* 63299 */ {(13<<2)|2,{122,108,0}}, +/* 63300 */ {(13<<2)|2,{122,108,0}}, +/* 63301 */ {(13<<2)|2,{122,108,0}}, +/* 63302 */ {(13<<2)|2,{122,108,0}}, +/* 63303 */ {(13<<2)|2,{122,108,0}}, +/* 63304 */ {(13<<2)|2,{122,109,0}}, +/* 63305 */ {(13<<2)|2,{122,109,0}}, +/* 63306 */ {(13<<2)|2,{122,109,0}}, +/* 63307 */ {(13<<2)|2,{122,109,0}}, +/* 63308 */ {(13<<2)|2,{122,109,0}}, +/* 63309 */ {(13<<2)|2,{122,109,0}}, +/* 63310 */ {(13<<2)|2,{122,109,0}}, +/* 63311 */ {(13<<2)|2,{122,109,0}}, +/* 63312 */ {(13<<2)|2,{122,110,0}}, +/* 63313 */ {(13<<2)|2,{122,110,0}}, +/* 63314 */ {(13<<2)|2,{122,110,0}}, +/* 63315 */ {(13<<2)|2,{122,110,0}}, +/* 63316 */ {(13<<2)|2,{122,110,0}}, +/* 63317 */ {(13<<2)|2,{122,110,0}}, +/* 63318 */ {(13<<2)|2,{122,110,0}}, +/* 63319 */ {(13<<2)|2,{122,110,0}}, +/* 63320 */ {(13<<2)|2,{122,112,0}}, +/* 63321 */ {(13<<2)|2,{122,112,0}}, +/* 63322 */ {(13<<2)|2,{122,112,0}}, +/* 63323 */ {(13<<2)|2,{122,112,0}}, +/* 63324 */ {(13<<2)|2,{122,112,0}}, +/* 63325 */ {(13<<2)|2,{122,112,0}}, +/* 63326 */ {(13<<2)|2,{122,112,0}}, +/* 63327 */ {(13<<2)|2,{122,112,0}}, +/* 63328 */ {(13<<2)|2,{122,114,0}}, +/* 63329 */ {(13<<2)|2,{122,114,0}}, +/* 63330 */ {(13<<2)|2,{122,114,0}}, +/* 63331 */ {(13<<2)|2,{122,114,0}}, +/* 63332 */ {(13<<2)|2,{122,114,0}}, +/* 63333 */ {(13<<2)|2,{122,114,0}}, +/* 63334 */ {(13<<2)|2,{122,114,0}}, +/* 63335 */ {(13<<2)|2,{122,114,0}}, +/* 63336 */ {(13<<2)|2,{122,117,0}}, +/* 63337 */ {(13<<2)|2,{122,117,0}}, +/* 63338 */ {(13<<2)|2,{122,117,0}}, +/* 63339 */ {(13<<2)|2,{122,117,0}}, +/* 63340 */ {(13<<2)|2,{122,117,0}}, +/* 63341 */ {(13<<2)|2,{122,117,0}}, +/* 63342 */ {(13<<2)|2,{122,117,0}}, +/* 63343 */ {(13<<2)|2,{122,117,0}}, +/* 63344 */ {(14<<2)|2,{122,58,0}}, +/* 63345 */ {(14<<2)|2,{122,58,0}}, +/* 63346 */ {(14<<2)|2,{122,58,0}}, +/* 63347 */ {(14<<2)|2,{122,58,0}}, +/* 63348 */ {(14<<2)|2,{122,66,0}}, +/* 63349 */ {(14<<2)|2,{122,66,0}}, +/* 63350 */ {(14<<2)|2,{122,66,0}}, +/* 63351 */ {(14<<2)|2,{122,66,0}}, +/* 63352 */ {(14<<2)|2,{122,67,0}}, +/* 63353 */ {(14<<2)|2,{122,67,0}}, +/* 63354 */ {(14<<2)|2,{122,67,0}}, +/* 63355 */ {(14<<2)|2,{122,67,0}}, +/* 63356 */ {(14<<2)|2,{122,68,0}}, +/* 63357 */ {(14<<2)|2,{122,68,0}}, +/* 63358 */ {(14<<2)|2,{122,68,0}}, +/* 63359 */ {(14<<2)|2,{122,68,0}}, +/* 63360 */ {(14<<2)|2,{122,69,0}}, +/* 63361 */ {(14<<2)|2,{122,69,0}}, +/* 63362 */ {(14<<2)|2,{122,69,0}}, +/* 63363 */ {(14<<2)|2,{122,69,0}}, +/* 63364 */ {(14<<2)|2,{122,70,0}}, +/* 63365 */ {(14<<2)|2,{122,70,0}}, +/* 63366 */ {(14<<2)|2,{122,70,0}}, +/* 63367 */ {(14<<2)|2,{122,70,0}}, +/* 63368 */ {(14<<2)|2,{122,71,0}}, +/* 63369 */ {(14<<2)|2,{122,71,0}}, +/* 63370 */ {(14<<2)|2,{122,71,0}}, +/* 63371 */ {(14<<2)|2,{122,71,0}}, +/* 63372 */ {(14<<2)|2,{122,72,0}}, +/* 63373 */ {(14<<2)|2,{122,72,0}}, +/* 63374 */ {(14<<2)|2,{122,72,0}}, +/* 63375 */ {(14<<2)|2,{122,72,0}}, +/* 63376 */ {(14<<2)|2,{122,73,0}}, +/* 63377 */ {(14<<2)|2,{122,73,0}}, +/* 63378 */ {(14<<2)|2,{122,73,0}}, +/* 63379 */ {(14<<2)|2,{122,73,0}}, +/* 63380 */ {(14<<2)|2,{122,74,0}}, +/* 63381 */ {(14<<2)|2,{122,74,0}}, +/* 63382 */ {(14<<2)|2,{122,74,0}}, +/* 63383 */ {(14<<2)|2,{122,74,0}}, +/* 63384 */ {(14<<2)|2,{122,75,0}}, +/* 63385 */ {(14<<2)|2,{122,75,0}}, +/* 63386 */ {(14<<2)|2,{122,75,0}}, +/* 63387 */ {(14<<2)|2,{122,75,0}}, +/* 63388 */ {(14<<2)|2,{122,76,0}}, +/* 63389 */ {(14<<2)|2,{122,76,0}}, +/* 63390 */ {(14<<2)|2,{122,76,0}}, +/* 63391 */ {(14<<2)|2,{122,76,0}}, +/* 63392 */ {(14<<2)|2,{122,77,0}}, +/* 63393 */ {(14<<2)|2,{122,77,0}}, +/* 63394 */ {(14<<2)|2,{122,77,0}}, +/* 63395 */ {(14<<2)|2,{122,77,0}}, +/* 63396 */ {(14<<2)|2,{122,78,0}}, +/* 63397 */ {(14<<2)|2,{122,78,0}}, +/* 63398 */ {(14<<2)|2,{122,78,0}}, +/* 63399 */ {(14<<2)|2,{122,78,0}}, +/* 63400 */ {(14<<2)|2,{122,79,0}}, +/* 63401 */ {(14<<2)|2,{122,79,0}}, +/* 63402 */ {(14<<2)|2,{122,79,0}}, +/* 63403 */ {(14<<2)|2,{122,79,0}}, +/* 63404 */ {(14<<2)|2,{122,80,0}}, +/* 63405 */ {(14<<2)|2,{122,80,0}}, +/* 63406 */ {(14<<2)|2,{122,80,0}}, +/* 63407 */ {(14<<2)|2,{122,80,0}}, +/* 63408 */ {(14<<2)|2,{122,81,0}}, +/* 63409 */ {(14<<2)|2,{122,81,0}}, +/* 63410 */ {(14<<2)|2,{122,81,0}}, +/* 63411 */ {(14<<2)|2,{122,81,0}}, +/* 63412 */ {(14<<2)|2,{122,82,0}}, +/* 63413 */ {(14<<2)|2,{122,82,0}}, +/* 63414 */ {(14<<2)|2,{122,82,0}}, +/* 63415 */ {(14<<2)|2,{122,82,0}}, +/* 63416 */ {(14<<2)|2,{122,83,0}}, +/* 63417 */ {(14<<2)|2,{122,83,0}}, +/* 63418 */ {(14<<2)|2,{122,83,0}}, +/* 63419 */ {(14<<2)|2,{122,83,0}}, +/* 63420 */ {(14<<2)|2,{122,84,0}}, +/* 63421 */ {(14<<2)|2,{122,84,0}}, +/* 63422 */ {(14<<2)|2,{122,84,0}}, +/* 63423 */ {(14<<2)|2,{122,84,0}}, +/* 63424 */ {(14<<2)|2,{122,85,0}}, +/* 63425 */ {(14<<2)|2,{122,85,0}}, +/* 63426 */ {(14<<2)|2,{122,85,0}}, +/* 63427 */ {(14<<2)|2,{122,85,0}}, +/* 63428 */ {(14<<2)|2,{122,86,0}}, +/* 63429 */ {(14<<2)|2,{122,86,0}}, +/* 63430 */ {(14<<2)|2,{122,86,0}}, +/* 63431 */ {(14<<2)|2,{122,86,0}}, +/* 63432 */ {(14<<2)|2,{122,87,0}}, +/* 63433 */ {(14<<2)|2,{122,87,0}}, +/* 63434 */ {(14<<2)|2,{122,87,0}}, +/* 63435 */ {(14<<2)|2,{122,87,0}}, +/* 63436 */ {(14<<2)|2,{122,89,0}}, +/* 63437 */ {(14<<2)|2,{122,89,0}}, +/* 63438 */ {(14<<2)|2,{122,89,0}}, +/* 63439 */ {(14<<2)|2,{122,89,0}}, +/* 63440 */ {(14<<2)|2,{122,106,0}}, +/* 63441 */ {(14<<2)|2,{122,106,0}}, +/* 63442 */ {(14<<2)|2,{122,106,0}}, +/* 63443 */ {(14<<2)|2,{122,106,0}}, +/* 63444 */ {(14<<2)|2,{122,107,0}}, +/* 63445 */ {(14<<2)|2,{122,107,0}}, +/* 63446 */ {(14<<2)|2,{122,107,0}}, +/* 63447 */ {(14<<2)|2,{122,107,0}}, +/* 63448 */ {(14<<2)|2,{122,113,0}}, +/* 63449 */ {(14<<2)|2,{122,113,0}}, +/* 63450 */ {(14<<2)|2,{122,113,0}}, +/* 63451 */ {(14<<2)|2,{122,113,0}}, +/* 63452 */ {(14<<2)|2,{122,118,0}}, +/* 63453 */ {(14<<2)|2,{122,118,0}}, +/* 63454 */ {(14<<2)|2,{122,118,0}}, +/* 63455 */ {(14<<2)|2,{122,118,0}}, +/* 63456 */ {(14<<2)|2,{122,119,0}}, +/* 63457 */ {(14<<2)|2,{122,119,0}}, +/* 63458 */ {(14<<2)|2,{122,119,0}}, +/* 63459 */ {(14<<2)|2,{122,119,0}}, +/* 63460 */ {(14<<2)|2,{122,120,0}}, +/* 63461 */ {(14<<2)|2,{122,120,0}}, +/* 63462 */ {(14<<2)|2,{122,120,0}}, +/* 63463 */ {(14<<2)|2,{122,120,0}}, +/* 63464 */ {(14<<2)|2,{122,121,0}}, +/* 63465 */ {(14<<2)|2,{122,121,0}}, +/* 63466 */ {(14<<2)|2,{122,121,0}}, +/* 63467 */ {(14<<2)|2,{122,121,0}}, +/* 63468 */ {(14<<2)|2,{122,122,0}}, +/* 63469 */ {(14<<2)|2,{122,122,0}}, +/* 63470 */ {(14<<2)|2,{122,122,0}}, +/* 63471 */ {(14<<2)|2,{122,122,0}}, +/* 63472 */ {(15<<2)|2,{122,38,0}}, +/* 63473 */ {(15<<2)|2,{122,38,0}}, +/* 63474 */ {(15<<2)|2,{122,42,0}}, +/* 63475 */ {(15<<2)|2,{122,42,0}}, +/* 63476 */ {(15<<2)|2,{122,44,0}}, +/* 63477 */ {(15<<2)|2,{122,44,0}}, +/* 63478 */ {(15<<2)|2,{122,59,0}}, +/* 63479 */ {(15<<2)|2,{122,59,0}}, +/* 63480 */ {(15<<2)|2,{122,88,0}}, +/* 63481 */ {(15<<2)|2,{122,88,0}}, +/* 63482 */ {(15<<2)|2,{122,90,0}}, +/* 63483 */ {(15<<2)|2,{122,90,0}}, +/* 63484 */ {(7<<2)|1,{122,0,0}}, +/* 63485 */ {(7<<2)|1,{122,0,0}}, +/* 63486 */ {(7<<2)|1,{122,0,0}}, +/* 63487 */ {(7<<2)|1,{122,0,0}}, +/* 63488 */ {(13<<2)|2,{38,48,0}}, +/* 63489 */ {(13<<2)|2,{38,48,0}}, +/* 63490 */ {(13<<2)|2,{38,48,0}}, +/* 63491 */ {(13<<2)|2,{38,48,0}}, +/* 63492 */ {(13<<2)|2,{38,48,0}}, +/* 63493 */ {(13<<2)|2,{38,48,0}}, +/* 63494 */ {(13<<2)|2,{38,48,0}}, +/* 63495 */ {(13<<2)|2,{38,48,0}}, +/* 63496 */ {(13<<2)|2,{38,49,0}}, +/* 63497 */ {(13<<2)|2,{38,49,0}}, +/* 63498 */ {(13<<2)|2,{38,49,0}}, +/* 63499 */ {(13<<2)|2,{38,49,0}}, +/* 63500 */ {(13<<2)|2,{38,49,0}}, +/* 63501 */ {(13<<2)|2,{38,49,0}}, +/* 63502 */ {(13<<2)|2,{38,49,0}}, +/* 63503 */ {(13<<2)|2,{38,49,0}}, +/* 63504 */ {(13<<2)|2,{38,50,0}}, +/* 63505 */ {(13<<2)|2,{38,50,0}}, +/* 63506 */ {(13<<2)|2,{38,50,0}}, +/* 63507 */ {(13<<2)|2,{38,50,0}}, +/* 63508 */ {(13<<2)|2,{38,50,0}}, +/* 63509 */ {(13<<2)|2,{38,50,0}}, +/* 63510 */ {(13<<2)|2,{38,50,0}}, +/* 63511 */ {(13<<2)|2,{38,50,0}}, +/* 63512 */ {(13<<2)|2,{38,97,0}}, +/* 63513 */ {(13<<2)|2,{38,97,0}}, +/* 63514 */ {(13<<2)|2,{38,97,0}}, +/* 63515 */ {(13<<2)|2,{38,97,0}}, +/* 63516 */ {(13<<2)|2,{38,97,0}}, +/* 63517 */ {(13<<2)|2,{38,97,0}}, +/* 63518 */ {(13<<2)|2,{38,97,0}}, +/* 63519 */ {(13<<2)|2,{38,97,0}}, +/* 63520 */ {(13<<2)|2,{38,99,0}}, +/* 63521 */ {(13<<2)|2,{38,99,0}}, +/* 63522 */ {(13<<2)|2,{38,99,0}}, +/* 63523 */ {(13<<2)|2,{38,99,0}}, +/* 63524 */ {(13<<2)|2,{38,99,0}}, +/* 63525 */ {(13<<2)|2,{38,99,0}}, +/* 63526 */ {(13<<2)|2,{38,99,0}}, +/* 63527 */ {(13<<2)|2,{38,99,0}}, +/* 63528 */ {(13<<2)|2,{38,101,0}}, +/* 63529 */ {(13<<2)|2,{38,101,0}}, +/* 63530 */ {(13<<2)|2,{38,101,0}}, +/* 63531 */ {(13<<2)|2,{38,101,0}}, +/* 63532 */ {(13<<2)|2,{38,101,0}}, +/* 63533 */ {(13<<2)|2,{38,101,0}}, +/* 63534 */ {(13<<2)|2,{38,101,0}}, +/* 63535 */ {(13<<2)|2,{38,101,0}}, +/* 63536 */ {(13<<2)|2,{38,105,0}}, +/* 63537 */ {(13<<2)|2,{38,105,0}}, +/* 63538 */ {(13<<2)|2,{38,105,0}}, +/* 63539 */ {(13<<2)|2,{38,105,0}}, +/* 63540 */ {(13<<2)|2,{38,105,0}}, +/* 63541 */ {(13<<2)|2,{38,105,0}}, +/* 63542 */ {(13<<2)|2,{38,105,0}}, +/* 63543 */ {(13<<2)|2,{38,105,0}}, +/* 63544 */ {(13<<2)|2,{38,111,0}}, +/* 63545 */ {(13<<2)|2,{38,111,0}}, +/* 63546 */ {(13<<2)|2,{38,111,0}}, +/* 63547 */ {(13<<2)|2,{38,111,0}}, +/* 63548 */ {(13<<2)|2,{38,111,0}}, +/* 63549 */ {(13<<2)|2,{38,111,0}}, +/* 63550 */ {(13<<2)|2,{38,111,0}}, +/* 63551 */ {(13<<2)|2,{38,111,0}}, +/* 63552 */ {(13<<2)|2,{38,115,0}}, +/* 63553 */ {(13<<2)|2,{38,115,0}}, +/* 63554 */ {(13<<2)|2,{38,115,0}}, +/* 63555 */ {(13<<2)|2,{38,115,0}}, +/* 63556 */ {(13<<2)|2,{38,115,0}}, +/* 63557 */ {(13<<2)|2,{38,115,0}}, +/* 63558 */ {(13<<2)|2,{38,115,0}}, +/* 63559 */ {(13<<2)|2,{38,115,0}}, +/* 63560 */ {(13<<2)|2,{38,116,0}}, +/* 63561 */ {(13<<2)|2,{38,116,0}}, +/* 63562 */ {(13<<2)|2,{38,116,0}}, +/* 63563 */ {(13<<2)|2,{38,116,0}}, +/* 63564 */ {(13<<2)|2,{38,116,0}}, +/* 63565 */ {(13<<2)|2,{38,116,0}}, +/* 63566 */ {(13<<2)|2,{38,116,0}}, +/* 63567 */ {(13<<2)|2,{38,116,0}}, +/* 63568 */ {(14<<2)|2,{38,32,0}}, +/* 63569 */ {(14<<2)|2,{38,32,0}}, +/* 63570 */ {(14<<2)|2,{38,32,0}}, +/* 63571 */ {(14<<2)|2,{38,32,0}}, +/* 63572 */ {(14<<2)|2,{38,37,0}}, +/* 63573 */ {(14<<2)|2,{38,37,0}}, +/* 63574 */ {(14<<2)|2,{38,37,0}}, +/* 63575 */ {(14<<2)|2,{38,37,0}}, +/* 63576 */ {(14<<2)|2,{38,45,0}}, +/* 63577 */ {(14<<2)|2,{38,45,0}}, +/* 63578 */ {(14<<2)|2,{38,45,0}}, +/* 63579 */ {(14<<2)|2,{38,45,0}}, +/* 63580 */ {(14<<2)|2,{38,46,0}}, +/* 63581 */ {(14<<2)|2,{38,46,0}}, +/* 63582 */ {(14<<2)|2,{38,46,0}}, +/* 63583 */ {(14<<2)|2,{38,46,0}}, +/* 63584 */ {(14<<2)|2,{38,47,0}}, +/* 63585 */ {(14<<2)|2,{38,47,0}}, +/* 63586 */ {(14<<2)|2,{38,47,0}}, +/* 63587 */ {(14<<2)|2,{38,47,0}}, +/* 63588 */ {(14<<2)|2,{38,51,0}}, +/* 63589 */ {(14<<2)|2,{38,51,0}}, +/* 63590 */ {(14<<2)|2,{38,51,0}}, +/* 63591 */ {(14<<2)|2,{38,51,0}}, +/* 63592 */ {(14<<2)|2,{38,52,0}}, +/* 63593 */ {(14<<2)|2,{38,52,0}}, +/* 63594 */ {(14<<2)|2,{38,52,0}}, +/* 63595 */ {(14<<2)|2,{38,52,0}}, +/* 63596 */ {(14<<2)|2,{38,53,0}}, +/* 63597 */ {(14<<2)|2,{38,53,0}}, +/* 63598 */ {(14<<2)|2,{38,53,0}}, +/* 63599 */ {(14<<2)|2,{38,53,0}}, +/* 63600 */ {(14<<2)|2,{38,54,0}}, +/* 63601 */ {(14<<2)|2,{38,54,0}}, +/* 63602 */ {(14<<2)|2,{38,54,0}}, +/* 63603 */ {(14<<2)|2,{38,54,0}}, +/* 63604 */ {(14<<2)|2,{38,55,0}}, +/* 63605 */ {(14<<2)|2,{38,55,0}}, +/* 63606 */ {(14<<2)|2,{38,55,0}}, +/* 63607 */ {(14<<2)|2,{38,55,0}}, +/* 63608 */ {(14<<2)|2,{38,56,0}}, +/* 63609 */ {(14<<2)|2,{38,56,0}}, +/* 63610 */ {(14<<2)|2,{38,56,0}}, +/* 63611 */ {(14<<2)|2,{38,56,0}}, +/* 63612 */ {(14<<2)|2,{38,57,0}}, +/* 63613 */ {(14<<2)|2,{38,57,0}}, +/* 63614 */ {(14<<2)|2,{38,57,0}}, +/* 63615 */ {(14<<2)|2,{38,57,0}}, +/* 63616 */ {(14<<2)|2,{38,61,0}}, +/* 63617 */ {(14<<2)|2,{38,61,0}}, +/* 63618 */ {(14<<2)|2,{38,61,0}}, +/* 63619 */ {(14<<2)|2,{38,61,0}}, +/* 63620 */ {(14<<2)|2,{38,65,0}}, +/* 63621 */ {(14<<2)|2,{38,65,0}}, +/* 63622 */ {(14<<2)|2,{38,65,0}}, +/* 63623 */ {(14<<2)|2,{38,65,0}}, +/* 63624 */ {(14<<2)|2,{38,95,0}}, +/* 63625 */ {(14<<2)|2,{38,95,0}}, +/* 63626 */ {(14<<2)|2,{38,95,0}}, +/* 63627 */ {(14<<2)|2,{38,95,0}}, +/* 63628 */ {(14<<2)|2,{38,98,0}}, +/* 63629 */ {(14<<2)|2,{38,98,0}}, +/* 63630 */ {(14<<2)|2,{38,98,0}}, +/* 63631 */ {(14<<2)|2,{38,98,0}}, +/* 63632 */ {(14<<2)|2,{38,100,0}}, +/* 63633 */ {(14<<2)|2,{38,100,0}}, +/* 63634 */ {(14<<2)|2,{38,100,0}}, +/* 63635 */ {(14<<2)|2,{38,100,0}}, +/* 63636 */ {(14<<2)|2,{38,102,0}}, +/* 63637 */ {(14<<2)|2,{38,102,0}}, +/* 63638 */ {(14<<2)|2,{38,102,0}}, +/* 63639 */ {(14<<2)|2,{38,102,0}}, +/* 63640 */ {(14<<2)|2,{38,103,0}}, +/* 63641 */ {(14<<2)|2,{38,103,0}}, +/* 63642 */ {(14<<2)|2,{38,103,0}}, +/* 63643 */ {(14<<2)|2,{38,103,0}}, +/* 63644 */ {(14<<2)|2,{38,104,0}}, +/* 63645 */ {(14<<2)|2,{38,104,0}}, +/* 63646 */ {(14<<2)|2,{38,104,0}}, +/* 63647 */ {(14<<2)|2,{38,104,0}}, +/* 63648 */ {(14<<2)|2,{38,108,0}}, +/* 63649 */ {(14<<2)|2,{38,108,0}}, +/* 63650 */ {(14<<2)|2,{38,108,0}}, +/* 63651 */ {(14<<2)|2,{38,108,0}}, +/* 63652 */ {(14<<2)|2,{38,109,0}}, +/* 63653 */ {(14<<2)|2,{38,109,0}}, +/* 63654 */ {(14<<2)|2,{38,109,0}}, +/* 63655 */ {(14<<2)|2,{38,109,0}}, +/* 63656 */ {(14<<2)|2,{38,110,0}}, +/* 63657 */ {(14<<2)|2,{38,110,0}}, +/* 63658 */ {(14<<2)|2,{38,110,0}}, +/* 63659 */ {(14<<2)|2,{38,110,0}}, +/* 63660 */ {(14<<2)|2,{38,112,0}}, +/* 63661 */ {(14<<2)|2,{38,112,0}}, +/* 63662 */ {(14<<2)|2,{38,112,0}}, +/* 63663 */ {(14<<2)|2,{38,112,0}}, +/* 63664 */ {(14<<2)|2,{38,114,0}}, +/* 63665 */ {(14<<2)|2,{38,114,0}}, +/* 63666 */ {(14<<2)|2,{38,114,0}}, +/* 63667 */ {(14<<2)|2,{38,114,0}}, +/* 63668 */ {(14<<2)|2,{38,117,0}}, +/* 63669 */ {(14<<2)|2,{38,117,0}}, +/* 63670 */ {(14<<2)|2,{38,117,0}}, +/* 63671 */ {(14<<2)|2,{38,117,0}}, +/* 63672 */ {(15<<2)|2,{38,58,0}}, +/* 63673 */ {(15<<2)|2,{38,58,0}}, +/* 63674 */ {(15<<2)|2,{38,66,0}}, +/* 63675 */ {(15<<2)|2,{38,66,0}}, +/* 63676 */ {(15<<2)|2,{38,67,0}}, +/* 63677 */ {(15<<2)|2,{38,67,0}}, +/* 63678 */ {(15<<2)|2,{38,68,0}}, +/* 63679 */ {(15<<2)|2,{38,68,0}}, +/* 63680 */ {(15<<2)|2,{38,69,0}}, +/* 63681 */ {(15<<2)|2,{38,69,0}}, +/* 63682 */ {(15<<2)|2,{38,70,0}}, +/* 63683 */ {(15<<2)|2,{38,70,0}}, +/* 63684 */ {(15<<2)|2,{38,71,0}}, +/* 63685 */ {(15<<2)|2,{38,71,0}}, +/* 63686 */ {(15<<2)|2,{38,72,0}}, +/* 63687 */ {(15<<2)|2,{38,72,0}}, +/* 63688 */ {(15<<2)|2,{38,73,0}}, +/* 63689 */ {(15<<2)|2,{38,73,0}}, +/* 63690 */ {(15<<2)|2,{38,74,0}}, +/* 63691 */ {(15<<2)|2,{38,74,0}}, +/* 63692 */ {(15<<2)|2,{38,75,0}}, +/* 63693 */ {(15<<2)|2,{38,75,0}}, +/* 63694 */ {(15<<2)|2,{38,76,0}}, +/* 63695 */ {(15<<2)|2,{38,76,0}}, +/* 63696 */ {(15<<2)|2,{38,77,0}}, +/* 63697 */ {(15<<2)|2,{38,77,0}}, +/* 63698 */ {(15<<2)|2,{38,78,0}}, +/* 63699 */ {(15<<2)|2,{38,78,0}}, +/* 63700 */ {(15<<2)|2,{38,79,0}}, +/* 63701 */ {(15<<2)|2,{38,79,0}}, +/* 63702 */ {(15<<2)|2,{38,80,0}}, +/* 63703 */ {(15<<2)|2,{38,80,0}}, +/* 63704 */ {(15<<2)|2,{38,81,0}}, +/* 63705 */ {(15<<2)|2,{38,81,0}}, +/* 63706 */ {(15<<2)|2,{38,82,0}}, +/* 63707 */ {(15<<2)|2,{38,82,0}}, +/* 63708 */ {(15<<2)|2,{38,83,0}}, +/* 63709 */ {(15<<2)|2,{38,83,0}}, +/* 63710 */ {(15<<2)|2,{38,84,0}}, +/* 63711 */ {(15<<2)|2,{38,84,0}}, +/* 63712 */ {(15<<2)|2,{38,85,0}}, +/* 63713 */ {(15<<2)|2,{38,85,0}}, +/* 63714 */ {(15<<2)|2,{38,86,0}}, +/* 63715 */ {(15<<2)|2,{38,86,0}}, +/* 63716 */ {(15<<2)|2,{38,87,0}}, +/* 63717 */ {(15<<2)|2,{38,87,0}}, +/* 63718 */ {(15<<2)|2,{38,89,0}}, +/* 63719 */ {(15<<2)|2,{38,89,0}}, +/* 63720 */ {(15<<2)|2,{38,106,0}}, +/* 63721 */ {(15<<2)|2,{38,106,0}}, +/* 63722 */ {(15<<2)|2,{38,107,0}}, +/* 63723 */ {(15<<2)|2,{38,107,0}}, +/* 63724 */ {(15<<2)|2,{38,113,0}}, +/* 63725 */ {(15<<2)|2,{38,113,0}}, +/* 63726 */ {(15<<2)|2,{38,118,0}}, +/* 63727 */ {(15<<2)|2,{38,118,0}}, +/* 63728 */ {(15<<2)|2,{38,119,0}}, +/* 63729 */ {(15<<2)|2,{38,119,0}}, +/* 63730 */ {(15<<2)|2,{38,120,0}}, +/* 63731 */ {(15<<2)|2,{38,120,0}}, +/* 63732 */ {(15<<2)|2,{38,121,0}}, +/* 63733 */ {(15<<2)|2,{38,121,0}}, +/* 63734 */ {(15<<2)|2,{38,122,0}}, +/* 63735 */ {(15<<2)|2,{38,122,0}}, +/* 63736 */ {(16<<2)|2,{38,38,0}}, +/* 63737 */ {(16<<2)|2,{38,42,0}}, +/* 63738 */ {(16<<2)|2,{38,44,0}}, +/* 63739 */ {(16<<2)|2,{38,59,0}}, +/* 63740 */ {(16<<2)|2,{38,88,0}}, +/* 63741 */ {(16<<2)|2,{38,90,0}}, +/* 63742 */ {(8<<2)|1,{38,0,0}}, +/* 63743 */ {(8<<2)|1,{38,0,0}}, +/* 63744 */ {(13<<2)|2,{42,48,0}}, +/* 63745 */ {(13<<2)|2,{42,48,0}}, +/* 63746 */ {(13<<2)|2,{42,48,0}}, +/* 63747 */ {(13<<2)|2,{42,48,0}}, +/* 63748 */ {(13<<2)|2,{42,48,0}}, +/* 63749 */ {(13<<2)|2,{42,48,0}}, +/* 63750 */ {(13<<2)|2,{42,48,0}}, +/* 63751 */ {(13<<2)|2,{42,48,0}}, +/* 63752 */ {(13<<2)|2,{42,49,0}}, +/* 63753 */ {(13<<2)|2,{42,49,0}}, +/* 63754 */ {(13<<2)|2,{42,49,0}}, +/* 63755 */ {(13<<2)|2,{42,49,0}}, +/* 63756 */ {(13<<2)|2,{42,49,0}}, +/* 63757 */ {(13<<2)|2,{42,49,0}}, +/* 63758 */ {(13<<2)|2,{42,49,0}}, +/* 63759 */ {(13<<2)|2,{42,49,0}}, +/* 63760 */ {(13<<2)|2,{42,50,0}}, +/* 63761 */ {(13<<2)|2,{42,50,0}}, +/* 63762 */ {(13<<2)|2,{42,50,0}}, +/* 63763 */ {(13<<2)|2,{42,50,0}}, +/* 63764 */ {(13<<2)|2,{42,50,0}}, +/* 63765 */ {(13<<2)|2,{42,50,0}}, +/* 63766 */ {(13<<2)|2,{42,50,0}}, +/* 63767 */ {(13<<2)|2,{42,50,0}}, +/* 63768 */ {(13<<2)|2,{42,97,0}}, +/* 63769 */ {(13<<2)|2,{42,97,0}}, +/* 63770 */ {(13<<2)|2,{42,97,0}}, +/* 63771 */ {(13<<2)|2,{42,97,0}}, +/* 63772 */ {(13<<2)|2,{42,97,0}}, +/* 63773 */ {(13<<2)|2,{42,97,0}}, +/* 63774 */ {(13<<2)|2,{42,97,0}}, +/* 63775 */ {(13<<2)|2,{42,97,0}}, +/* 63776 */ {(13<<2)|2,{42,99,0}}, +/* 63777 */ {(13<<2)|2,{42,99,0}}, +/* 63778 */ {(13<<2)|2,{42,99,0}}, +/* 63779 */ {(13<<2)|2,{42,99,0}}, +/* 63780 */ {(13<<2)|2,{42,99,0}}, +/* 63781 */ {(13<<2)|2,{42,99,0}}, +/* 63782 */ {(13<<2)|2,{42,99,0}}, +/* 63783 */ {(13<<2)|2,{42,99,0}}, +/* 63784 */ {(13<<2)|2,{42,101,0}}, +/* 63785 */ {(13<<2)|2,{42,101,0}}, +/* 63786 */ {(13<<2)|2,{42,101,0}}, +/* 63787 */ {(13<<2)|2,{42,101,0}}, +/* 63788 */ {(13<<2)|2,{42,101,0}}, +/* 63789 */ {(13<<2)|2,{42,101,0}}, +/* 63790 */ {(13<<2)|2,{42,101,0}}, +/* 63791 */ {(13<<2)|2,{42,101,0}}, +/* 63792 */ {(13<<2)|2,{42,105,0}}, +/* 63793 */ {(13<<2)|2,{42,105,0}}, +/* 63794 */ {(13<<2)|2,{42,105,0}}, +/* 63795 */ {(13<<2)|2,{42,105,0}}, +/* 63796 */ {(13<<2)|2,{42,105,0}}, +/* 63797 */ {(13<<2)|2,{42,105,0}}, +/* 63798 */ {(13<<2)|2,{42,105,0}}, +/* 63799 */ {(13<<2)|2,{42,105,0}}, +/* 63800 */ {(13<<2)|2,{42,111,0}}, +/* 63801 */ {(13<<2)|2,{42,111,0}}, +/* 63802 */ {(13<<2)|2,{42,111,0}}, +/* 63803 */ {(13<<2)|2,{42,111,0}}, +/* 63804 */ {(13<<2)|2,{42,111,0}}, +/* 63805 */ {(13<<2)|2,{42,111,0}}, +/* 63806 */ {(13<<2)|2,{42,111,0}}, +/* 63807 */ {(13<<2)|2,{42,111,0}}, +/* 63808 */ {(13<<2)|2,{42,115,0}}, +/* 63809 */ {(13<<2)|2,{42,115,0}}, +/* 63810 */ {(13<<2)|2,{42,115,0}}, +/* 63811 */ {(13<<2)|2,{42,115,0}}, +/* 63812 */ {(13<<2)|2,{42,115,0}}, +/* 63813 */ {(13<<2)|2,{42,115,0}}, +/* 63814 */ {(13<<2)|2,{42,115,0}}, +/* 63815 */ {(13<<2)|2,{42,115,0}}, +/* 63816 */ {(13<<2)|2,{42,116,0}}, +/* 63817 */ {(13<<2)|2,{42,116,0}}, +/* 63818 */ {(13<<2)|2,{42,116,0}}, +/* 63819 */ {(13<<2)|2,{42,116,0}}, +/* 63820 */ {(13<<2)|2,{42,116,0}}, +/* 63821 */ {(13<<2)|2,{42,116,0}}, +/* 63822 */ {(13<<2)|2,{42,116,0}}, +/* 63823 */ {(13<<2)|2,{42,116,0}}, +/* 63824 */ {(14<<2)|2,{42,32,0}}, +/* 63825 */ {(14<<2)|2,{42,32,0}}, +/* 63826 */ {(14<<2)|2,{42,32,0}}, +/* 63827 */ {(14<<2)|2,{42,32,0}}, +/* 63828 */ {(14<<2)|2,{42,37,0}}, +/* 63829 */ {(14<<2)|2,{42,37,0}}, +/* 63830 */ {(14<<2)|2,{42,37,0}}, +/* 63831 */ {(14<<2)|2,{42,37,0}}, +/* 63832 */ {(14<<2)|2,{42,45,0}}, +/* 63833 */ {(14<<2)|2,{42,45,0}}, +/* 63834 */ {(14<<2)|2,{42,45,0}}, +/* 63835 */ {(14<<2)|2,{42,45,0}}, +/* 63836 */ {(14<<2)|2,{42,46,0}}, +/* 63837 */ {(14<<2)|2,{42,46,0}}, +/* 63838 */ {(14<<2)|2,{42,46,0}}, +/* 63839 */ {(14<<2)|2,{42,46,0}}, +/* 63840 */ {(14<<2)|2,{42,47,0}}, +/* 63841 */ {(14<<2)|2,{42,47,0}}, +/* 63842 */ {(14<<2)|2,{42,47,0}}, +/* 63843 */ {(14<<2)|2,{42,47,0}}, +/* 63844 */ {(14<<2)|2,{42,51,0}}, +/* 63845 */ {(14<<2)|2,{42,51,0}}, +/* 63846 */ {(14<<2)|2,{42,51,0}}, +/* 63847 */ {(14<<2)|2,{42,51,0}}, +/* 63848 */ {(14<<2)|2,{42,52,0}}, +/* 63849 */ {(14<<2)|2,{42,52,0}}, +/* 63850 */ {(14<<2)|2,{42,52,0}}, +/* 63851 */ {(14<<2)|2,{42,52,0}}, +/* 63852 */ {(14<<2)|2,{42,53,0}}, +/* 63853 */ {(14<<2)|2,{42,53,0}}, +/* 63854 */ {(14<<2)|2,{42,53,0}}, +/* 63855 */ {(14<<2)|2,{42,53,0}}, +/* 63856 */ {(14<<2)|2,{42,54,0}}, +/* 63857 */ {(14<<2)|2,{42,54,0}}, +/* 63858 */ {(14<<2)|2,{42,54,0}}, +/* 63859 */ {(14<<2)|2,{42,54,0}}, +/* 63860 */ {(14<<2)|2,{42,55,0}}, +/* 63861 */ {(14<<2)|2,{42,55,0}}, +/* 63862 */ {(14<<2)|2,{42,55,0}}, +/* 63863 */ {(14<<2)|2,{42,55,0}}, +/* 63864 */ {(14<<2)|2,{42,56,0}}, +/* 63865 */ {(14<<2)|2,{42,56,0}}, +/* 63866 */ {(14<<2)|2,{42,56,0}}, +/* 63867 */ {(14<<2)|2,{42,56,0}}, +/* 63868 */ {(14<<2)|2,{42,57,0}}, +/* 63869 */ {(14<<2)|2,{42,57,0}}, +/* 63870 */ {(14<<2)|2,{42,57,0}}, +/* 63871 */ {(14<<2)|2,{42,57,0}}, +/* 63872 */ {(14<<2)|2,{42,61,0}}, +/* 63873 */ {(14<<2)|2,{42,61,0}}, +/* 63874 */ {(14<<2)|2,{42,61,0}}, +/* 63875 */ {(14<<2)|2,{42,61,0}}, +/* 63876 */ {(14<<2)|2,{42,65,0}}, +/* 63877 */ {(14<<2)|2,{42,65,0}}, +/* 63878 */ {(14<<2)|2,{42,65,0}}, +/* 63879 */ {(14<<2)|2,{42,65,0}}, +/* 63880 */ {(14<<2)|2,{42,95,0}}, +/* 63881 */ {(14<<2)|2,{42,95,0}}, +/* 63882 */ {(14<<2)|2,{42,95,0}}, +/* 63883 */ {(14<<2)|2,{42,95,0}}, +/* 63884 */ {(14<<2)|2,{42,98,0}}, +/* 63885 */ {(14<<2)|2,{42,98,0}}, +/* 63886 */ {(14<<2)|2,{42,98,0}}, +/* 63887 */ {(14<<2)|2,{42,98,0}}, +/* 63888 */ {(14<<2)|2,{42,100,0}}, +/* 63889 */ {(14<<2)|2,{42,100,0}}, +/* 63890 */ {(14<<2)|2,{42,100,0}}, +/* 63891 */ {(14<<2)|2,{42,100,0}}, +/* 63892 */ {(14<<2)|2,{42,102,0}}, +/* 63893 */ {(14<<2)|2,{42,102,0}}, +/* 63894 */ {(14<<2)|2,{42,102,0}}, +/* 63895 */ {(14<<2)|2,{42,102,0}}, +/* 63896 */ {(14<<2)|2,{42,103,0}}, +/* 63897 */ {(14<<2)|2,{42,103,0}}, +/* 63898 */ {(14<<2)|2,{42,103,0}}, +/* 63899 */ {(14<<2)|2,{42,103,0}}, +/* 63900 */ {(14<<2)|2,{42,104,0}}, +/* 63901 */ {(14<<2)|2,{42,104,0}}, +/* 63902 */ {(14<<2)|2,{42,104,0}}, +/* 63903 */ {(14<<2)|2,{42,104,0}}, +/* 63904 */ {(14<<2)|2,{42,108,0}}, +/* 63905 */ {(14<<2)|2,{42,108,0}}, +/* 63906 */ {(14<<2)|2,{42,108,0}}, +/* 63907 */ {(14<<2)|2,{42,108,0}}, +/* 63908 */ {(14<<2)|2,{42,109,0}}, +/* 63909 */ {(14<<2)|2,{42,109,0}}, +/* 63910 */ {(14<<2)|2,{42,109,0}}, +/* 63911 */ {(14<<2)|2,{42,109,0}}, +/* 63912 */ {(14<<2)|2,{42,110,0}}, +/* 63913 */ {(14<<2)|2,{42,110,0}}, +/* 63914 */ {(14<<2)|2,{42,110,0}}, +/* 63915 */ {(14<<2)|2,{42,110,0}}, +/* 63916 */ {(14<<2)|2,{42,112,0}}, +/* 63917 */ {(14<<2)|2,{42,112,0}}, +/* 63918 */ {(14<<2)|2,{42,112,0}}, +/* 63919 */ {(14<<2)|2,{42,112,0}}, +/* 63920 */ {(14<<2)|2,{42,114,0}}, +/* 63921 */ {(14<<2)|2,{42,114,0}}, +/* 63922 */ {(14<<2)|2,{42,114,0}}, +/* 63923 */ {(14<<2)|2,{42,114,0}}, +/* 63924 */ {(14<<2)|2,{42,117,0}}, +/* 63925 */ {(14<<2)|2,{42,117,0}}, +/* 63926 */ {(14<<2)|2,{42,117,0}}, +/* 63927 */ {(14<<2)|2,{42,117,0}}, +/* 63928 */ {(15<<2)|2,{42,58,0}}, +/* 63929 */ {(15<<2)|2,{42,58,0}}, +/* 63930 */ {(15<<2)|2,{42,66,0}}, +/* 63931 */ {(15<<2)|2,{42,66,0}}, +/* 63932 */ {(15<<2)|2,{42,67,0}}, +/* 63933 */ {(15<<2)|2,{42,67,0}}, +/* 63934 */ {(15<<2)|2,{42,68,0}}, +/* 63935 */ {(15<<2)|2,{42,68,0}}, +/* 63936 */ {(15<<2)|2,{42,69,0}}, +/* 63937 */ {(15<<2)|2,{42,69,0}}, +/* 63938 */ {(15<<2)|2,{42,70,0}}, +/* 63939 */ {(15<<2)|2,{42,70,0}}, +/* 63940 */ {(15<<2)|2,{42,71,0}}, +/* 63941 */ {(15<<2)|2,{42,71,0}}, +/* 63942 */ {(15<<2)|2,{42,72,0}}, +/* 63943 */ {(15<<2)|2,{42,72,0}}, +/* 63944 */ {(15<<2)|2,{42,73,0}}, +/* 63945 */ {(15<<2)|2,{42,73,0}}, +/* 63946 */ {(15<<2)|2,{42,74,0}}, +/* 63947 */ {(15<<2)|2,{42,74,0}}, +/* 63948 */ {(15<<2)|2,{42,75,0}}, +/* 63949 */ {(15<<2)|2,{42,75,0}}, +/* 63950 */ {(15<<2)|2,{42,76,0}}, +/* 63951 */ {(15<<2)|2,{42,76,0}}, +/* 63952 */ {(15<<2)|2,{42,77,0}}, +/* 63953 */ {(15<<2)|2,{42,77,0}}, +/* 63954 */ {(15<<2)|2,{42,78,0}}, +/* 63955 */ {(15<<2)|2,{42,78,0}}, +/* 63956 */ {(15<<2)|2,{42,79,0}}, +/* 63957 */ {(15<<2)|2,{42,79,0}}, +/* 63958 */ {(15<<2)|2,{42,80,0}}, +/* 63959 */ {(15<<2)|2,{42,80,0}}, +/* 63960 */ {(15<<2)|2,{42,81,0}}, +/* 63961 */ {(15<<2)|2,{42,81,0}}, +/* 63962 */ {(15<<2)|2,{42,82,0}}, +/* 63963 */ {(15<<2)|2,{42,82,0}}, +/* 63964 */ {(15<<2)|2,{42,83,0}}, +/* 63965 */ {(15<<2)|2,{42,83,0}}, +/* 63966 */ {(15<<2)|2,{42,84,0}}, +/* 63967 */ {(15<<2)|2,{42,84,0}}, +/* 63968 */ {(15<<2)|2,{42,85,0}}, +/* 63969 */ {(15<<2)|2,{42,85,0}}, +/* 63970 */ {(15<<2)|2,{42,86,0}}, +/* 63971 */ {(15<<2)|2,{42,86,0}}, +/* 63972 */ {(15<<2)|2,{42,87,0}}, +/* 63973 */ {(15<<2)|2,{42,87,0}}, +/* 63974 */ {(15<<2)|2,{42,89,0}}, +/* 63975 */ {(15<<2)|2,{42,89,0}}, +/* 63976 */ {(15<<2)|2,{42,106,0}}, +/* 63977 */ {(15<<2)|2,{42,106,0}}, +/* 63978 */ {(15<<2)|2,{42,107,0}}, +/* 63979 */ {(15<<2)|2,{42,107,0}}, +/* 63980 */ {(15<<2)|2,{42,113,0}}, +/* 63981 */ {(15<<2)|2,{42,113,0}}, +/* 63982 */ {(15<<2)|2,{42,118,0}}, +/* 63983 */ {(15<<2)|2,{42,118,0}}, +/* 63984 */ {(15<<2)|2,{42,119,0}}, +/* 63985 */ {(15<<2)|2,{42,119,0}}, +/* 63986 */ {(15<<2)|2,{42,120,0}}, +/* 63987 */ {(15<<2)|2,{42,120,0}}, +/* 63988 */ {(15<<2)|2,{42,121,0}}, +/* 63989 */ {(15<<2)|2,{42,121,0}}, +/* 63990 */ {(15<<2)|2,{42,122,0}}, +/* 63991 */ {(15<<2)|2,{42,122,0}}, +/* 63992 */ {(16<<2)|2,{42,38,0}}, +/* 63993 */ {(16<<2)|2,{42,42,0}}, +/* 63994 */ {(16<<2)|2,{42,44,0}}, +/* 63995 */ {(16<<2)|2,{42,59,0}}, +/* 63996 */ {(16<<2)|2,{42,88,0}}, +/* 63997 */ {(16<<2)|2,{42,90,0}}, +/* 63998 */ {(8<<2)|1,{42,0,0}}, +/* 63999 */ {(8<<2)|1,{42,0,0}}, +/* 64000 */ {(13<<2)|2,{44,48,0}}, +/* 64001 */ {(13<<2)|2,{44,48,0}}, +/* 64002 */ {(13<<2)|2,{44,48,0}}, +/* 64003 */ {(13<<2)|2,{44,48,0}}, +/* 64004 */ {(13<<2)|2,{44,48,0}}, +/* 64005 */ {(13<<2)|2,{44,48,0}}, +/* 64006 */ {(13<<2)|2,{44,48,0}}, +/* 64007 */ {(13<<2)|2,{44,48,0}}, +/* 64008 */ {(13<<2)|2,{44,49,0}}, +/* 64009 */ {(13<<2)|2,{44,49,0}}, +/* 64010 */ {(13<<2)|2,{44,49,0}}, +/* 64011 */ {(13<<2)|2,{44,49,0}}, +/* 64012 */ {(13<<2)|2,{44,49,0}}, +/* 64013 */ {(13<<2)|2,{44,49,0}}, +/* 64014 */ {(13<<2)|2,{44,49,0}}, +/* 64015 */ {(13<<2)|2,{44,49,0}}, +/* 64016 */ {(13<<2)|2,{44,50,0}}, +/* 64017 */ {(13<<2)|2,{44,50,0}}, +/* 64018 */ {(13<<2)|2,{44,50,0}}, +/* 64019 */ {(13<<2)|2,{44,50,0}}, +/* 64020 */ {(13<<2)|2,{44,50,0}}, +/* 64021 */ {(13<<2)|2,{44,50,0}}, +/* 64022 */ {(13<<2)|2,{44,50,0}}, +/* 64023 */ {(13<<2)|2,{44,50,0}}, +/* 64024 */ {(13<<2)|2,{44,97,0}}, +/* 64025 */ {(13<<2)|2,{44,97,0}}, +/* 64026 */ {(13<<2)|2,{44,97,0}}, +/* 64027 */ {(13<<2)|2,{44,97,0}}, +/* 64028 */ {(13<<2)|2,{44,97,0}}, +/* 64029 */ {(13<<2)|2,{44,97,0}}, +/* 64030 */ {(13<<2)|2,{44,97,0}}, +/* 64031 */ {(13<<2)|2,{44,97,0}}, +/* 64032 */ {(13<<2)|2,{44,99,0}}, +/* 64033 */ {(13<<2)|2,{44,99,0}}, +/* 64034 */ {(13<<2)|2,{44,99,0}}, +/* 64035 */ {(13<<2)|2,{44,99,0}}, +/* 64036 */ {(13<<2)|2,{44,99,0}}, +/* 64037 */ {(13<<2)|2,{44,99,0}}, +/* 64038 */ {(13<<2)|2,{44,99,0}}, +/* 64039 */ {(13<<2)|2,{44,99,0}}, +/* 64040 */ {(13<<2)|2,{44,101,0}}, +/* 64041 */ {(13<<2)|2,{44,101,0}}, +/* 64042 */ {(13<<2)|2,{44,101,0}}, +/* 64043 */ {(13<<2)|2,{44,101,0}}, +/* 64044 */ {(13<<2)|2,{44,101,0}}, +/* 64045 */ {(13<<2)|2,{44,101,0}}, +/* 64046 */ {(13<<2)|2,{44,101,0}}, +/* 64047 */ {(13<<2)|2,{44,101,0}}, +/* 64048 */ {(13<<2)|2,{44,105,0}}, +/* 64049 */ {(13<<2)|2,{44,105,0}}, +/* 64050 */ {(13<<2)|2,{44,105,0}}, +/* 64051 */ {(13<<2)|2,{44,105,0}}, +/* 64052 */ {(13<<2)|2,{44,105,0}}, +/* 64053 */ {(13<<2)|2,{44,105,0}}, +/* 64054 */ {(13<<2)|2,{44,105,0}}, +/* 64055 */ {(13<<2)|2,{44,105,0}}, +/* 64056 */ {(13<<2)|2,{44,111,0}}, +/* 64057 */ {(13<<2)|2,{44,111,0}}, +/* 64058 */ {(13<<2)|2,{44,111,0}}, +/* 64059 */ {(13<<2)|2,{44,111,0}}, +/* 64060 */ {(13<<2)|2,{44,111,0}}, +/* 64061 */ {(13<<2)|2,{44,111,0}}, +/* 64062 */ {(13<<2)|2,{44,111,0}}, +/* 64063 */ {(13<<2)|2,{44,111,0}}, +/* 64064 */ {(13<<2)|2,{44,115,0}}, +/* 64065 */ {(13<<2)|2,{44,115,0}}, +/* 64066 */ {(13<<2)|2,{44,115,0}}, +/* 64067 */ {(13<<2)|2,{44,115,0}}, +/* 64068 */ {(13<<2)|2,{44,115,0}}, +/* 64069 */ {(13<<2)|2,{44,115,0}}, +/* 64070 */ {(13<<2)|2,{44,115,0}}, +/* 64071 */ {(13<<2)|2,{44,115,0}}, +/* 64072 */ {(13<<2)|2,{44,116,0}}, +/* 64073 */ {(13<<2)|2,{44,116,0}}, +/* 64074 */ {(13<<2)|2,{44,116,0}}, +/* 64075 */ {(13<<2)|2,{44,116,0}}, +/* 64076 */ {(13<<2)|2,{44,116,0}}, +/* 64077 */ {(13<<2)|2,{44,116,0}}, +/* 64078 */ {(13<<2)|2,{44,116,0}}, +/* 64079 */ {(13<<2)|2,{44,116,0}}, +/* 64080 */ {(14<<2)|2,{44,32,0}}, +/* 64081 */ {(14<<2)|2,{44,32,0}}, +/* 64082 */ {(14<<2)|2,{44,32,0}}, +/* 64083 */ {(14<<2)|2,{44,32,0}}, +/* 64084 */ {(14<<2)|2,{44,37,0}}, +/* 64085 */ {(14<<2)|2,{44,37,0}}, +/* 64086 */ {(14<<2)|2,{44,37,0}}, +/* 64087 */ {(14<<2)|2,{44,37,0}}, +/* 64088 */ {(14<<2)|2,{44,45,0}}, +/* 64089 */ {(14<<2)|2,{44,45,0}}, +/* 64090 */ {(14<<2)|2,{44,45,0}}, +/* 64091 */ {(14<<2)|2,{44,45,0}}, +/* 64092 */ {(14<<2)|2,{44,46,0}}, +/* 64093 */ {(14<<2)|2,{44,46,0}}, +/* 64094 */ {(14<<2)|2,{44,46,0}}, +/* 64095 */ {(14<<2)|2,{44,46,0}}, +/* 64096 */ {(14<<2)|2,{44,47,0}}, +/* 64097 */ {(14<<2)|2,{44,47,0}}, +/* 64098 */ {(14<<2)|2,{44,47,0}}, +/* 64099 */ {(14<<2)|2,{44,47,0}}, +/* 64100 */ {(14<<2)|2,{44,51,0}}, +/* 64101 */ {(14<<2)|2,{44,51,0}}, +/* 64102 */ {(14<<2)|2,{44,51,0}}, +/* 64103 */ {(14<<2)|2,{44,51,0}}, +/* 64104 */ {(14<<2)|2,{44,52,0}}, +/* 64105 */ {(14<<2)|2,{44,52,0}}, +/* 64106 */ {(14<<2)|2,{44,52,0}}, +/* 64107 */ {(14<<2)|2,{44,52,0}}, +/* 64108 */ {(14<<2)|2,{44,53,0}}, +/* 64109 */ {(14<<2)|2,{44,53,0}}, +/* 64110 */ {(14<<2)|2,{44,53,0}}, +/* 64111 */ {(14<<2)|2,{44,53,0}}, +/* 64112 */ {(14<<2)|2,{44,54,0}}, +/* 64113 */ {(14<<2)|2,{44,54,0}}, +/* 64114 */ {(14<<2)|2,{44,54,0}}, +/* 64115 */ {(14<<2)|2,{44,54,0}}, +/* 64116 */ {(14<<2)|2,{44,55,0}}, +/* 64117 */ {(14<<2)|2,{44,55,0}}, +/* 64118 */ {(14<<2)|2,{44,55,0}}, +/* 64119 */ {(14<<2)|2,{44,55,0}}, +/* 64120 */ {(14<<2)|2,{44,56,0}}, +/* 64121 */ {(14<<2)|2,{44,56,0}}, +/* 64122 */ {(14<<2)|2,{44,56,0}}, +/* 64123 */ {(14<<2)|2,{44,56,0}}, +/* 64124 */ {(14<<2)|2,{44,57,0}}, +/* 64125 */ {(14<<2)|2,{44,57,0}}, +/* 64126 */ {(14<<2)|2,{44,57,0}}, +/* 64127 */ {(14<<2)|2,{44,57,0}}, +/* 64128 */ {(14<<2)|2,{44,61,0}}, +/* 64129 */ {(14<<2)|2,{44,61,0}}, +/* 64130 */ {(14<<2)|2,{44,61,0}}, +/* 64131 */ {(14<<2)|2,{44,61,0}}, +/* 64132 */ {(14<<2)|2,{44,65,0}}, +/* 64133 */ {(14<<2)|2,{44,65,0}}, +/* 64134 */ {(14<<2)|2,{44,65,0}}, +/* 64135 */ {(14<<2)|2,{44,65,0}}, +/* 64136 */ {(14<<2)|2,{44,95,0}}, +/* 64137 */ {(14<<2)|2,{44,95,0}}, +/* 64138 */ {(14<<2)|2,{44,95,0}}, +/* 64139 */ {(14<<2)|2,{44,95,0}}, +/* 64140 */ {(14<<2)|2,{44,98,0}}, +/* 64141 */ {(14<<2)|2,{44,98,0}}, +/* 64142 */ {(14<<2)|2,{44,98,0}}, +/* 64143 */ {(14<<2)|2,{44,98,0}}, +/* 64144 */ {(14<<2)|2,{44,100,0}}, +/* 64145 */ {(14<<2)|2,{44,100,0}}, +/* 64146 */ {(14<<2)|2,{44,100,0}}, +/* 64147 */ {(14<<2)|2,{44,100,0}}, +/* 64148 */ {(14<<2)|2,{44,102,0}}, +/* 64149 */ {(14<<2)|2,{44,102,0}}, +/* 64150 */ {(14<<2)|2,{44,102,0}}, +/* 64151 */ {(14<<2)|2,{44,102,0}}, +/* 64152 */ {(14<<2)|2,{44,103,0}}, +/* 64153 */ {(14<<2)|2,{44,103,0}}, +/* 64154 */ {(14<<2)|2,{44,103,0}}, +/* 64155 */ {(14<<2)|2,{44,103,0}}, +/* 64156 */ {(14<<2)|2,{44,104,0}}, +/* 64157 */ {(14<<2)|2,{44,104,0}}, +/* 64158 */ {(14<<2)|2,{44,104,0}}, +/* 64159 */ {(14<<2)|2,{44,104,0}}, +/* 64160 */ {(14<<2)|2,{44,108,0}}, +/* 64161 */ {(14<<2)|2,{44,108,0}}, +/* 64162 */ {(14<<2)|2,{44,108,0}}, +/* 64163 */ {(14<<2)|2,{44,108,0}}, +/* 64164 */ {(14<<2)|2,{44,109,0}}, +/* 64165 */ {(14<<2)|2,{44,109,0}}, +/* 64166 */ {(14<<2)|2,{44,109,0}}, +/* 64167 */ {(14<<2)|2,{44,109,0}}, +/* 64168 */ {(14<<2)|2,{44,110,0}}, +/* 64169 */ {(14<<2)|2,{44,110,0}}, +/* 64170 */ {(14<<2)|2,{44,110,0}}, +/* 64171 */ {(14<<2)|2,{44,110,0}}, +/* 64172 */ {(14<<2)|2,{44,112,0}}, +/* 64173 */ {(14<<2)|2,{44,112,0}}, +/* 64174 */ {(14<<2)|2,{44,112,0}}, +/* 64175 */ {(14<<2)|2,{44,112,0}}, +/* 64176 */ {(14<<2)|2,{44,114,0}}, +/* 64177 */ {(14<<2)|2,{44,114,0}}, +/* 64178 */ {(14<<2)|2,{44,114,0}}, +/* 64179 */ {(14<<2)|2,{44,114,0}}, +/* 64180 */ {(14<<2)|2,{44,117,0}}, +/* 64181 */ {(14<<2)|2,{44,117,0}}, +/* 64182 */ {(14<<2)|2,{44,117,0}}, +/* 64183 */ {(14<<2)|2,{44,117,0}}, +/* 64184 */ {(15<<2)|2,{44,58,0}}, +/* 64185 */ {(15<<2)|2,{44,58,0}}, +/* 64186 */ {(15<<2)|2,{44,66,0}}, +/* 64187 */ {(15<<2)|2,{44,66,0}}, +/* 64188 */ {(15<<2)|2,{44,67,0}}, +/* 64189 */ {(15<<2)|2,{44,67,0}}, +/* 64190 */ {(15<<2)|2,{44,68,0}}, +/* 64191 */ {(15<<2)|2,{44,68,0}}, +/* 64192 */ {(15<<2)|2,{44,69,0}}, +/* 64193 */ {(15<<2)|2,{44,69,0}}, +/* 64194 */ {(15<<2)|2,{44,70,0}}, +/* 64195 */ {(15<<2)|2,{44,70,0}}, +/* 64196 */ {(15<<2)|2,{44,71,0}}, +/* 64197 */ {(15<<2)|2,{44,71,0}}, +/* 64198 */ {(15<<2)|2,{44,72,0}}, +/* 64199 */ {(15<<2)|2,{44,72,0}}, +/* 64200 */ {(15<<2)|2,{44,73,0}}, +/* 64201 */ {(15<<2)|2,{44,73,0}}, +/* 64202 */ {(15<<2)|2,{44,74,0}}, +/* 64203 */ {(15<<2)|2,{44,74,0}}, +/* 64204 */ {(15<<2)|2,{44,75,0}}, +/* 64205 */ {(15<<2)|2,{44,75,0}}, +/* 64206 */ {(15<<2)|2,{44,76,0}}, +/* 64207 */ {(15<<2)|2,{44,76,0}}, +/* 64208 */ {(15<<2)|2,{44,77,0}}, +/* 64209 */ {(15<<2)|2,{44,77,0}}, +/* 64210 */ {(15<<2)|2,{44,78,0}}, +/* 64211 */ {(15<<2)|2,{44,78,0}}, +/* 64212 */ {(15<<2)|2,{44,79,0}}, +/* 64213 */ {(15<<2)|2,{44,79,0}}, +/* 64214 */ {(15<<2)|2,{44,80,0}}, +/* 64215 */ {(15<<2)|2,{44,80,0}}, +/* 64216 */ {(15<<2)|2,{44,81,0}}, +/* 64217 */ {(15<<2)|2,{44,81,0}}, +/* 64218 */ {(15<<2)|2,{44,82,0}}, +/* 64219 */ {(15<<2)|2,{44,82,0}}, +/* 64220 */ {(15<<2)|2,{44,83,0}}, +/* 64221 */ {(15<<2)|2,{44,83,0}}, +/* 64222 */ {(15<<2)|2,{44,84,0}}, +/* 64223 */ {(15<<2)|2,{44,84,0}}, +/* 64224 */ {(15<<2)|2,{44,85,0}}, +/* 64225 */ {(15<<2)|2,{44,85,0}}, +/* 64226 */ {(15<<2)|2,{44,86,0}}, +/* 64227 */ {(15<<2)|2,{44,86,0}}, +/* 64228 */ {(15<<2)|2,{44,87,0}}, +/* 64229 */ {(15<<2)|2,{44,87,0}}, +/* 64230 */ {(15<<2)|2,{44,89,0}}, +/* 64231 */ {(15<<2)|2,{44,89,0}}, +/* 64232 */ {(15<<2)|2,{44,106,0}}, +/* 64233 */ {(15<<2)|2,{44,106,0}}, +/* 64234 */ {(15<<2)|2,{44,107,0}}, +/* 64235 */ {(15<<2)|2,{44,107,0}}, +/* 64236 */ {(15<<2)|2,{44,113,0}}, +/* 64237 */ {(15<<2)|2,{44,113,0}}, +/* 64238 */ {(15<<2)|2,{44,118,0}}, +/* 64239 */ {(15<<2)|2,{44,118,0}}, +/* 64240 */ {(15<<2)|2,{44,119,0}}, +/* 64241 */ {(15<<2)|2,{44,119,0}}, +/* 64242 */ {(15<<2)|2,{44,120,0}}, +/* 64243 */ {(15<<2)|2,{44,120,0}}, +/* 64244 */ {(15<<2)|2,{44,121,0}}, +/* 64245 */ {(15<<2)|2,{44,121,0}}, +/* 64246 */ {(15<<2)|2,{44,122,0}}, +/* 64247 */ {(15<<2)|2,{44,122,0}}, +/* 64248 */ {(16<<2)|2,{44,38,0}}, +/* 64249 */ {(16<<2)|2,{44,42,0}}, +/* 64250 */ {(16<<2)|2,{44,44,0}}, +/* 64251 */ {(16<<2)|2,{44,59,0}}, +/* 64252 */ {(16<<2)|2,{44,88,0}}, +/* 64253 */ {(16<<2)|2,{44,90,0}}, +/* 64254 */ {(8<<2)|1,{44,0,0}}, +/* 64255 */ {(8<<2)|1,{44,0,0}}, +/* 64256 */ {(13<<2)|2,{59,48,0}}, +/* 64257 */ {(13<<2)|2,{59,48,0}}, +/* 64258 */ {(13<<2)|2,{59,48,0}}, +/* 64259 */ {(13<<2)|2,{59,48,0}}, +/* 64260 */ {(13<<2)|2,{59,48,0}}, +/* 64261 */ {(13<<2)|2,{59,48,0}}, +/* 64262 */ {(13<<2)|2,{59,48,0}}, +/* 64263 */ {(13<<2)|2,{59,48,0}}, +/* 64264 */ {(13<<2)|2,{59,49,0}}, +/* 64265 */ {(13<<2)|2,{59,49,0}}, +/* 64266 */ {(13<<2)|2,{59,49,0}}, +/* 64267 */ {(13<<2)|2,{59,49,0}}, +/* 64268 */ {(13<<2)|2,{59,49,0}}, +/* 64269 */ {(13<<2)|2,{59,49,0}}, +/* 64270 */ {(13<<2)|2,{59,49,0}}, +/* 64271 */ {(13<<2)|2,{59,49,0}}, +/* 64272 */ {(13<<2)|2,{59,50,0}}, +/* 64273 */ {(13<<2)|2,{59,50,0}}, +/* 64274 */ {(13<<2)|2,{59,50,0}}, +/* 64275 */ {(13<<2)|2,{59,50,0}}, +/* 64276 */ {(13<<2)|2,{59,50,0}}, +/* 64277 */ {(13<<2)|2,{59,50,0}}, +/* 64278 */ {(13<<2)|2,{59,50,0}}, +/* 64279 */ {(13<<2)|2,{59,50,0}}, +/* 64280 */ {(13<<2)|2,{59,97,0}}, +/* 64281 */ {(13<<2)|2,{59,97,0}}, +/* 64282 */ {(13<<2)|2,{59,97,0}}, +/* 64283 */ {(13<<2)|2,{59,97,0}}, +/* 64284 */ {(13<<2)|2,{59,97,0}}, +/* 64285 */ {(13<<2)|2,{59,97,0}}, +/* 64286 */ {(13<<2)|2,{59,97,0}}, +/* 64287 */ {(13<<2)|2,{59,97,0}}, +/* 64288 */ {(13<<2)|2,{59,99,0}}, +/* 64289 */ {(13<<2)|2,{59,99,0}}, +/* 64290 */ {(13<<2)|2,{59,99,0}}, +/* 64291 */ {(13<<2)|2,{59,99,0}}, +/* 64292 */ {(13<<2)|2,{59,99,0}}, +/* 64293 */ {(13<<2)|2,{59,99,0}}, +/* 64294 */ {(13<<2)|2,{59,99,0}}, +/* 64295 */ {(13<<2)|2,{59,99,0}}, +/* 64296 */ {(13<<2)|2,{59,101,0}}, +/* 64297 */ {(13<<2)|2,{59,101,0}}, +/* 64298 */ {(13<<2)|2,{59,101,0}}, +/* 64299 */ {(13<<2)|2,{59,101,0}}, +/* 64300 */ {(13<<2)|2,{59,101,0}}, +/* 64301 */ {(13<<2)|2,{59,101,0}}, +/* 64302 */ {(13<<2)|2,{59,101,0}}, +/* 64303 */ {(13<<2)|2,{59,101,0}}, +/* 64304 */ {(13<<2)|2,{59,105,0}}, +/* 64305 */ {(13<<2)|2,{59,105,0}}, +/* 64306 */ {(13<<2)|2,{59,105,0}}, +/* 64307 */ {(13<<2)|2,{59,105,0}}, +/* 64308 */ {(13<<2)|2,{59,105,0}}, +/* 64309 */ {(13<<2)|2,{59,105,0}}, +/* 64310 */ {(13<<2)|2,{59,105,0}}, +/* 64311 */ {(13<<2)|2,{59,105,0}}, +/* 64312 */ {(13<<2)|2,{59,111,0}}, +/* 64313 */ {(13<<2)|2,{59,111,0}}, +/* 64314 */ {(13<<2)|2,{59,111,0}}, +/* 64315 */ {(13<<2)|2,{59,111,0}}, +/* 64316 */ {(13<<2)|2,{59,111,0}}, +/* 64317 */ {(13<<2)|2,{59,111,0}}, +/* 64318 */ {(13<<2)|2,{59,111,0}}, +/* 64319 */ {(13<<2)|2,{59,111,0}}, +/* 64320 */ {(13<<2)|2,{59,115,0}}, +/* 64321 */ {(13<<2)|2,{59,115,0}}, +/* 64322 */ {(13<<2)|2,{59,115,0}}, +/* 64323 */ {(13<<2)|2,{59,115,0}}, +/* 64324 */ {(13<<2)|2,{59,115,0}}, +/* 64325 */ {(13<<2)|2,{59,115,0}}, +/* 64326 */ {(13<<2)|2,{59,115,0}}, +/* 64327 */ {(13<<2)|2,{59,115,0}}, +/* 64328 */ {(13<<2)|2,{59,116,0}}, +/* 64329 */ {(13<<2)|2,{59,116,0}}, +/* 64330 */ {(13<<2)|2,{59,116,0}}, +/* 64331 */ {(13<<2)|2,{59,116,0}}, +/* 64332 */ {(13<<2)|2,{59,116,0}}, +/* 64333 */ {(13<<2)|2,{59,116,0}}, +/* 64334 */ {(13<<2)|2,{59,116,0}}, +/* 64335 */ {(13<<2)|2,{59,116,0}}, +/* 64336 */ {(14<<2)|2,{59,32,0}}, +/* 64337 */ {(14<<2)|2,{59,32,0}}, +/* 64338 */ {(14<<2)|2,{59,32,0}}, +/* 64339 */ {(14<<2)|2,{59,32,0}}, +/* 64340 */ {(14<<2)|2,{59,37,0}}, +/* 64341 */ {(14<<2)|2,{59,37,0}}, +/* 64342 */ {(14<<2)|2,{59,37,0}}, +/* 64343 */ {(14<<2)|2,{59,37,0}}, +/* 64344 */ {(14<<2)|2,{59,45,0}}, +/* 64345 */ {(14<<2)|2,{59,45,0}}, +/* 64346 */ {(14<<2)|2,{59,45,0}}, +/* 64347 */ {(14<<2)|2,{59,45,0}}, +/* 64348 */ {(14<<2)|2,{59,46,0}}, +/* 64349 */ {(14<<2)|2,{59,46,0}}, +/* 64350 */ {(14<<2)|2,{59,46,0}}, +/* 64351 */ {(14<<2)|2,{59,46,0}}, +/* 64352 */ {(14<<2)|2,{59,47,0}}, +/* 64353 */ {(14<<2)|2,{59,47,0}}, +/* 64354 */ {(14<<2)|2,{59,47,0}}, +/* 64355 */ {(14<<2)|2,{59,47,0}}, +/* 64356 */ {(14<<2)|2,{59,51,0}}, +/* 64357 */ {(14<<2)|2,{59,51,0}}, +/* 64358 */ {(14<<2)|2,{59,51,0}}, +/* 64359 */ {(14<<2)|2,{59,51,0}}, +/* 64360 */ {(14<<2)|2,{59,52,0}}, +/* 64361 */ {(14<<2)|2,{59,52,0}}, +/* 64362 */ {(14<<2)|2,{59,52,0}}, +/* 64363 */ {(14<<2)|2,{59,52,0}}, +/* 64364 */ {(14<<2)|2,{59,53,0}}, +/* 64365 */ {(14<<2)|2,{59,53,0}}, +/* 64366 */ {(14<<2)|2,{59,53,0}}, +/* 64367 */ {(14<<2)|2,{59,53,0}}, +/* 64368 */ {(14<<2)|2,{59,54,0}}, +/* 64369 */ {(14<<2)|2,{59,54,0}}, +/* 64370 */ {(14<<2)|2,{59,54,0}}, +/* 64371 */ {(14<<2)|2,{59,54,0}}, +/* 64372 */ {(14<<2)|2,{59,55,0}}, +/* 64373 */ {(14<<2)|2,{59,55,0}}, +/* 64374 */ {(14<<2)|2,{59,55,0}}, +/* 64375 */ {(14<<2)|2,{59,55,0}}, +/* 64376 */ {(14<<2)|2,{59,56,0}}, +/* 64377 */ {(14<<2)|2,{59,56,0}}, +/* 64378 */ {(14<<2)|2,{59,56,0}}, +/* 64379 */ {(14<<2)|2,{59,56,0}}, +/* 64380 */ {(14<<2)|2,{59,57,0}}, +/* 64381 */ {(14<<2)|2,{59,57,0}}, +/* 64382 */ {(14<<2)|2,{59,57,0}}, +/* 64383 */ {(14<<2)|2,{59,57,0}}, +/* 64384 */ {(14<<2)|2,{59,61,0}}, +/* 64385 */ {(14<<2)|2,{59,61,0}}, +/* 64386 */ {(14<<2)|2,{59,61,0}}, +/* 64387 */ {(14<<2)|2,{59,61,0}}, +/* 64388 */ {(14<<2)|2,{59,65,0}}, +/* 64389 */ {(14<<2)|2,{59,65,0}}, +/* 64390 */ {(14<<2)|2,{59,65,0}}, +/* 64391 */ {(14<<2)|2,{59,65,0}}, +/* 64392 */ {(14<<2)|2,{59,95,0}}, +/* 64393 */ {(14<<2)|2,{59,95,0}}, +/* 64394 */ {(14<<2)|2,{59,95,0}}, +/* 64395 */ {(14<<2)|2,{59,95,0}}, +/* 64396 */ {(14<<2)|2,{59,98,0}}, +/* 64397 */ {(14<<2)|2,{59,98,0}}, +/* 64398 */ {(14<<2)|2,{59,98,0}}, +/* 64399 */ {(14<<2)|2,{59,98,0}}, +/* 64400 */ {(14<<2)|2,{59,100,0}}, +/* 64401 */ {(14<<2)|2,{59,100,0}}, +/* 64402 */ {(14<<2)|2,{59,100,0}}, +/* 64403 */ {(14<<2)|2,{59,100,0}}, +/* 64404 */ {(14<<2)|2,{59,102,0}}, +/* 64405 */ {(14<<2)|2,{59,102,0}}, +/* 64406 */ {(14<<2)|2,{59,102,0}}, +/* 64407 */ {(14<<2)|2,{59,102,0}}, +/* 64408 */ {(14<<2)|2,{59,103,0}}, +/* 64409 */ {(14<<2)|2,{59,103,0}}, +/* 64410 */ {(14<<2)|2,{59,103,0}}, +/* 64411 */ {(14<<2)|2,{59,103,0}}, +/* 64412 */ {(14<<2)|2,{59,104,0}}, +/* 64413 */ {(14<<2)|2,{59,104,0}}, +/* 64414 */ {(14<<2)|2,{59,104,0}}, +/* 64415 */ {(14<<2)|2,{59,104,0}}, +/* 64416 */ {(14<<2)|2,{59,108,0}}, +/* 64417 */ {(14<<2)|2,{59,108,0}}, +/* 64418 */ {(14<<2)|2,{59,108,0}}, +/* 64419 */ {(14<<2)|2,{59,108,0}}, +/* 64420 */ {(14<<2)|2,{59,109,0}}, +/* 64421 */ {(14<<2)|2,{59,109,0}}, +/* 64422 */ {(14<<2)|2,{59,109,0}}, +/* 64423 */ {(14<<2)|2,{59,109,0}}, +/* 64424 */ {(14<<2)|2,{59,110,0}}, +/* 64425 */ {(14<<2)|2,{59,110,0}}, +/* 64426 */ {(14<<2)|2,{59,110,0}}, +/* 64427 */ {(14<<2)|2,{59,110,0}}, +/* 64428 */ {(14<<2)|2,{59,112,0}}, +/* 64429 */ {(14<<2)|2,{59,112,0}}, +/* 64430 */ {(14<<2)|2,{59,112,0}}, +/* 64431 */ {(14<<2)|2,{59,112,0}}, +/* 64432 */ {(14<<2)|2,{59,114,0}}, +/* 64433 */ {(14<<2)|2,{59,114,0}}, +/* 64434 */ {(14<<2)|2,{59,114,0}}, +/* 64435 */ {(14<<2)|2,{59,114,0}}, +/* 64436 */ {(14<<2)|2,{59,117,0}}, +/* 64437 */ {(14<<2)|2,{59,117,0}}, +/* 64438 */ {(14<<2)|2,{59,117,0}}, +/* 64439 */ {(14<<2)|2,{59,117,0}}, +/* 64440 */ {(15<<2)|2,{59,58,0}}, +/* 64441 */ {(15<<2)|2,{59,58,0}}, +/* 64442 */ {(15<<2)|2,{59,66,0}}, +/* 64443 */ {(15<<2)|2,{59,66,0}}, +/* 64444 */ {(15<<2)|2,{59,67,0}}, +/* 64445 */ {(15<<2)|2,{59,67,0}}, +/* 64446 */ {(15<<2)|2,{59,68,0}}, +/* 64447 */ {(15<<2)|2,{59,68,0}}, +/* 64448 */ {(15<<2)|2,{59,69,0}}, +/* 64449 */ {(15<<2)|2,{59,69,0}}, +/* 64450 */ {(15<<2)|2,{59,70,0}}, +/* 64451 */ {(15<<2)|2,{59,70,0}}, +/* 64452 */ {(15<<2)|2,{59,71,0}}, +/* 64453 */ {(15<<2)|2,{59,71,0}}, +/* 64454 */ {(15<<2)|2,{59,72,0}}, +/* 64455 */ {(15<<2)|2,{59,72,0}}, +/* 64456 */ {(15<<2)|2,{59,73,0}}, +/* 64457 */ {(15<<2)|2,{59,73,0}}, +/* 64458 */ {(15<<2)|2,{59,74,0}}, +/* 64459 */ {(15<<2)|2,{59,74,0}}, +/* 64460 */ {(15<<2)|2,{59,75,0}}, +/* 64461 */ {(15<<2)|2,{59,75,0}}, +/* 64462 */ {(15<<2)|2,{59,76,0}}, +/* 64463 */ {(15<<2)|2,{59,76,0}}, +/* 64464 */ {(15<<2)|2,{59,77,0}}, +/* 64465 */ {(15<<2)|2,{59,77,0}}, +/* 64466 */ {(15<<2)|2,{59,78,0}}, +/* 64467 */ {(15<<2)|2,{59,78,0}}, +/* 64468 */ {(15<<2)|2,{59,79,0}}, +/* 64469 */ {(15<<2)|2,{59,79,0}}, +/* 64470 */ {(15<<2)|2,{59,80,0}}, +/* 64471 */ {(15<<2)|2,{59,80,0}}, +/* 64472 */ {(15<<2)|2,{59,81,0}}, +/* 64473 */ {(15<<2)|2,{59,81,0}}, +/* 64474 */ {(15<<2)|2,{59,82,0}}, +/* 64475 */ {(15<<2)|2,{59,82,0}}, +/* 64476 */ {(15<<2)|2,{59,83,0}}, +/* 64477 */ {(15<<2)|2,{59,83,0}}, +/* 64478 */ {(15<<2)|2,{59,84,0}}, +/* 64479 */ {(15<<2)|2,{59,84,0}}, +/* 64480 */ {(15<<2)|2,{59,85,0}}, +/* 64481 */ {(15<<2)|2,{59,85,0}}, +/* 64482 */ {(15<<2)|2,{59,86,0}}, +/* 64483 */ {(15<<2)|2,{59,86,0}}, +/* 64484 */ {(15<<2)|2,{59,87,0}}, +/* 64485 */ {(15<<2)|2,{59,87,0}}, +/* 64486 */ {(15<<2)|2,{59,89,0}}, +/* 64487 */ {(15<<2)|2,{59,89,0}}, +/* 64488 */ {(15<<2)|2,{59,106,0}}, +/* 64489 */ {(15<<2)|2,{59,106,0}}, +/* 64490 */ {(15<<2)|2,{59,107,0}}, +/* 64491 */ {(15<<2)|2,{59,107,0}}, +/* 64492 */ {(15<<2)|2,{59,113,0}}, +/* 64493 */ {(15<<2)|2,{59,113,0}}, +/* 64494 */ {(15<<2)|2,{59,118,0}}, +/* 64495 */ {(15<<2)|2,{59,118,0}}, +/* 64496 */ {(15<<2)|2,{59,119,0}}, +/* 64497 */ {(15<<2)|2,{59,119,0}}, +/* 64498 */ {(15<<2)|2,{59,120,0}}, +/* 64499 */ {(15<<2)|2,{59,120,0}}, +/* 64500 */ {(15<<2)|2,{59,121,0}}, +/* 64501 */ {(15<<2)|2,{59,121,0}}, +/* 64502 */ {(15<<2)|2,{59,122,0}}, +/* 64503 */ {(15<<2)|2,{59,122,0}}, +/* 64504 */ {(16<<2)|2,{59,38,0}}, +/* 64505 */ {(16<<2)|2,{59,42,0}}, +/* 64506 */ {(16<<2)|2,{59,44,0}}, +/* 64507 */ {(16<<2)|2,{59,59,0}}, +/* 64508 */ {(16<<2)|2,{59,88,0}}, +/* 64509 */ {(16<<2)|2,{59,90,0}}, +/* 64510 */ {(8<<2)|1,{59,0,0}}, +/* 64511 */ {(8<<2)|1,{59,0,0}}, +/* 64512 */ {(13<<2)|2,{88,48,0}}, +/* 64513 */ {(13<<2)|2,{88,48,0}}, +/* 64514 */ {(13<<2)|2,{88,48,0}}, +/* 64515 */ {(13<<2)|2,{88,48,0}}, +/* 64516 */ {(13<<2)|2,{88,48,0}}, +/* 64517 */ {(13<<2)|2,{88,48,0}}, +/* 64518 */ {(13<<2)|2,{88,48,0}}, +/* 64519 */ {(13<<2)|2,{88,48,0}}, +/* 64520 */ {(13<<2)|2,{88,49,0}}, +/* 64521 */ {(13<<2)|2,{88,49,0}}, +/* 64522 */ {(13<<2)|2,{88,49,0}}, +/* 64523 */ {(13<<2)|2,{88,49,0}}, +/* 64524 */ {(13<<2)|2,{88,49,0}}, +/* 64525 */ {(13<<2)|2,{88,49,0}}, +/* 64526 */ {(13<<2)|2,{88,49,0}}, +/* 64527 */ {(13<<2)|2,{88,49,0}}, +/* 64528 */ {(13<<2)|2,{88,50,0}}, +/* 64529 */ {(13<<2)|2,{88,50,0}}, +/* 64530 */ {(13<<2)|2,{88,50,0}}, +/* 64531 */ {(13<<2)|2,{88,50,0}}, +/* 64532 */ {(13<<2)|2,{88,50,0}}, +/* 64533 */ {(13<<2)|2,{88,50,0}}, +/* 64534 */ {(13<<2)|2,{88,50,0}}, +/* 64535 */ {(13<<2)|2,{88,50,0}}, +/* 64536 */ {(13<<2)|2,{88,97,0}}, +/* 64537 */ {(13<<2)|2,{88,97,0}}, +/* 64538 */ {(13<<2)|2,{88,97,0}}, +/* 64539 */ {(13<<2)|2,{88,97,0}}, +/* 64540 */ {(13<<2)|2,{88,97,0}}, +/* 64541 */ {(13<<2)|2,{88,97,0}}, +/* 64542 */ {(13<<2)|2,{88,97,0}}, +/* 64543 */ {(13<<2)|2,{88,97,0}}, +/* 64544 */ {(13<<2)|2,{88,99,0}}, +/* 64545 */ {(13<<2)|2,{88,99,0}}, +/* 64546 */ {(13<<2)|2,{88,99,0}}, +/* 64547 */ {(13<<2)|2,{88,99,0}}, +/* 64548 */ {(13<<2)|2,{88,99,0}}, +/* 64549 */ {(13<<2)|2,{88,99,0}}, +/* 64550 */ {(13<<2)|2,{88,99,0}}, +/* 64551 */ {(13<<2)|2,{88,99,0}}, +/* 64552 */ {(13<<2)|2,{88,101,0}}, +/* 64553 */ {(13<<2)|2,{88,101,0}}, +/* 64554 */ {(13<<2)|2,{88,101,0}}, +/* 64555 */ {(13<<2)|2,{88,101,0}}, +/* 64556 */ {(13<<2)|2,{88,101,0}}, +/* 64557 */ {(13<<2)|2,{88,101,0}}, +/* 64558 */ {(13<<2)|2,{88,101,0}}, +/* 64559 */ {(13<<2)|2,{88,101,0}}, +/* 64560 */ {(13<<2)|2,{88,105,0}}, +/* 64561 */ {(13<<2)|2,{88,105,0}}, +/* 64562 */ {(13<<2)|2,{88,105,0}}, +/* 64563 */ {(13<<2)|2,{88,105,0}}, +/* 64564 */ {(13<<2)|2,{88,105,0}}, +/* 64565 */ {(13<<2)|2,{88,105,0}}, +/* 64566 */ {(13<<2)|2,{88,105,0}}, +/* 64567 */ {(13<<2)|2,{88,105,0}}, +/* 64568 */ {(13<<2)|2,{88,111,0}}, +/* 64569 */ {(13<<2)|2,{88,111,0}}, +/* 64570 */ {(13<<2)|2,{88,111,0}}, +/* 64571 */ {(13<<2)|2,{88,111,0}}, +/* 64572 */ {(13<<2)|2,{88,111,0}}, +/* 64573 */ {(13<<2)|2,{88,111,0}}, +/* 64574 */ {(13<<2)|2,{88,111,0}}, +/* 64575 */ {(13<<2)|2,{88,111,0}}, +/* 64576 */ {(13<<2)|2,{88,115,0}}, +/* 64577 */ {(13<<2)|2,{88,115,0}}, +/* 64578 */ {(13<<2)|2,{88,115,0}}, +/* 64579 */ {(13<<2)|2,{88,115,0}}, +/* 64580 */ {(13<<2)|2,{88,115,0}}, +/* 64581 */ {(13<<2)|2,{88,115,0}}, +/* 64582 */ {(13<<2)|2,{88,115,0}}, +/* 64583 */ {(13<<2)|2,{88,115,0}}, +/* 64584 */ {(13<<2)|2,{88,116,0}}, +/* 64585 */ {(13<<2)|2,{88,116,0}}, +/* 64586 */ {(13<<2)|2,{88,116,0}}, +/* 64587 */ {(13<<2)|2,{88,116,0}}, +/* 64588 */ {(13<<2)|2,{88,116,0}}, +/* 64589 */ {(13<<2)|2,{88,116,0}}, +/* 64590 */ {(13<<2)|2,{88,116,0}}, +/* 64591 */ {(13<<2)|2,{88,116,0}}, +/* 64592 */ {(14<<2)|2,{88,32,0}}, +/* 64593 */ {(14<<2)|2,{88,32,0}}, +/* 64594 */ {(14<<2)|2,{88,32,0}}, +/* 64595 */ {(14<<2)|2,{88,32,0}}, +/* 64596 */ {(14<<2)|2,{88,37,0}}, +/* 64597 */ {(14<<2)|2,{88,37,0}}, +/* 64598 */ {(14<<2)|2,{88,37,0}}, +/* 64599 */ {(14<<2)|2,{88,37,0}}, +/* 64600 */ {(14<<2)|2,{88,45,0}}, +/* 64601 */ {(14<<2)|2,{88,45,0}}, +/* 64602 */ {(14<<2)|2,{88,45,0}}, +/* 64603 */ {(14<<2)|2,{88,45,0}}, +/* 64604 */ {(14<<2)|2,{88,46,0}}, +/* 64605 */ {(14<<2)|2,{88,46,0}}, +/* 64606 */ {(14<<2)|2,{88,46,0}}, +/* 64607 */ {(14<<2)|2,{88,46,0}}, +/* 64608 */ {(14<<2)|2,{88,47,0}}, +/* 64609 */ {(14<<2)|2,{88,47,0}}, +/* 64610 */ {(14<<2)|2,{88,47,0}}, +/* 64611 */ {(14<<2)|2,{88,47,0}}, +/* 64612 */ {(14<<2)|2,{88,51,0}}, +/* 64613 */ {(14<<2)|2,{88,51,0}}, +/* 64614 */ {(14<<2)|2,{88,51,0}}, +/* 64615 */ {(14<<2)|2,{88,51,0}}, +/* 64616 */ {(14<<2)|2,{88,52,0}}, +/* 64617 */ {(14<<2)|2,{88,52,0}}, +/* 64618 */ {(14<<2)|2,{88,52,0}}, +/* 64619 */ {(14<<2)|2,{88,52,0}}, +/* 64620 */ {(14<<2)|2,{88,53,0}}, +/* 64621 */ {(14<<2)|2,{88,53,0}}, +/* 64622 */ {(14<<2)|2,{88,53,0}}, +/* 64623 */ {(14<<2)|2,{88,53,0}}, +/* 64624 */ {(14<<2)|2,{88,54,0}}, +/* 64625 */ {(14<<2)|2,{88,54,0}}, +/* 64626 */ {(14<<2)|2,{88,54,0}}, +/* 64627 */ {(14<<2)|2,{88,54,0}}, +/* 64628 */ {(14<<2)|2,{88,55,0}}, +/* 64629 */ {(14<<2)|2,{88,55,0}}, +/* 64630 */ {(14<<2)|2,{88,55,0}}, +/* 64631 */ {(14<<2)|2,{88,55,0}}, +/* 64632 */ {(14<<2)|2,{88,56,0}}, +/* 64633 */ {(14<<2)|2,{88,56,0}}, +/* 64634 */ {(14<<2)|2,{88,56,0}}, +/* 64635 */ {(14<<2)|2,{88,56,0}}, +/* 64636 */ {(14<<2)|2,{88,57,0}}, +/* 64637 */ {(14<<2)|2,{88,57,0}}, +/* 64638 */ {(14<<2)|2,{88,57,0}}, +/* 64639 */ {(14<<2)|2,{88,57,0}}, +/* 64640 */ {(14<<2)|2,{88,61,0}}, +/* 64641 */ {(14<<2)|2,{88,61,0}}, +/* 64642 */ {(14<<2)|2,{88,61,0}}, +/* 64643 */ {(14<<2)|2,{88,61,0}}, +/* 64644 */ {(14<<2)|2,{88,65,0}}, +/* 64645 */ {(14<<2)|2,{88,65,0}}, +/* 64646 */ {(14<<2)|2,{88,65,0}}, +/* 64647 */ {(14<<2)|2,{88,65,0}}, +/* 64648 */ {(14<<2)|2,{88,95,0}}, +/* 64649 */ {(14<<2)|2,{88,95,0}}, +/* 64650 */ {(14<<2)|2,{88,95,0}}, +/* 64651 */ {(14<<2)|2,{88,95,0}}, +/* 64652 */ {(14<<2)|2,{88,98,0}}, +/* 64653 */ {(14<<2)|2,{88,98,0}}, +/* 64654 */ {(14<<2)|2,{88,98,0}}, +/* 64655 */ {(14<<2)|2,{88,98,0}}, +/* 64656 */ {(14<<2)|2,{88,100,0}}, +/* 64657 */ {(14<<2)|2,{88,100,0}}, +/* 64658 */ {(14<<2)|2,{88,100,0}}, +/* 64659 */ {(14<<2)|2,{88,100,0}}, +/* 64660 */ {(14<<2)|2,{88,102,0}}, +/* 64661 */ {(14<<2)|2,{88,102,0}}, +/* 64662 */ {(14<<2)|2,{88,102,0}}, +/* 64663 */ {(14<<2)|2,{88,102,0}}, +/* 64664 */ {(14<<2)|2,{88,103,0}}, +/* 64665 */ {(14<<2)|2,{88,103,0}}, +/* 64666 */ {(14<<2)|2,{88,103,0}}, +/* 64667 */ {(14<<2)|2,{88,103,0}}, +/* 64668 */ {(14<<2)|2,{88,104,0}}, +/* 64669 */ {(14<<2)|2,{88,104,0}}, +/* 64670 */ {(14<<2)|2,{88,104,0}}, +/* 64671 */ {(14<<2)|2,{88,104,0}}, +/* 64672 */ {(14<<2)|2,{88,108,0}}, +/* 64673 */ {(14<<2)|2,{88,108,0}}, +/* 64674 */ {(14<<2)|2,{88,108,0}}, +/* 64675 */ {(14<<2)|2,{88,108,0}}, +/* 64676 */ {(14<<2)|2,{88,109,0}}, +/* 64677 */ {(14<<2)|2,{88,109,0}}, +/* 64678 */ {(14<<2)|2,{88,109,0}}, +/* 64679 */ {(14<<2)|2,{88,109,0}}, +/* 64680 */ {(14<<2)|2,{88,110,0}}, +/* 64681 */ {(14<<2)|2,{88,110,0}}, +/* 64682 */ {(14<<2)|2,{88,110,0}}, +/* 64683 */ {(14<<2)|2,{88,110,0}}, +/* 64684 */ {(14<<2)|2,{88,112,0}}, +/* 64685 */ {(14<<2)|2,{88,112,0}}, +/* 64686 */ {(14<<2)|2,{88,112,0}}, +/* 64687 */ {(14<<2)|2,{88,112,0}}, +/* 64688 */ {(14<<2)|2,{88,114,0}}, +/* 64689 */ {(14<<2)|2,{88,114,0}}, +/* 64690 */ {(14<<2)|2,{88,114,0}}, +/* 64691 */ {(14<<2)|2,{88,114,0}}, +/* 64692 */ {(14<<2)|2,{88,117,0}}, +/* 64693 */ {(14<<2)|2,{88,117,0}}, +/* 64694 */ {(14<<2)|2,{88,117,0}}, +/* 64695 */ {(14<<2)|2,{88,117,0}}, +/* 64696 */ {(15<<2)|2,{88,58,0}}, +/* 64697 */ {(15<<2)|2,{88,58,0}}, +/* 64698 */ {(15<<2)|2,{88,66,0}}, +/* 64699 */ {(15<<2)|2,{88,66,0}}, +/* 64700 */ {(15<<2)|2,{88,67,0}}, +/* 64701 */ {(15<<2)|2,{88,67,0}}, +/* 64702 */ {(15<<2)|2,{88,68,0}}, +/* 64703 */ {(15<<2)|2,{88,68,0}}, +/* 64704 */ {(15<<2)|2,{88,69,0}}, +/* 64705 */ {(15<<2)|2,{88,69,0}}, +/* 64706 */ {(15<<2)|2,{88,70,0}}, +/* 64707 */ {(15<<2)|2,{88,70,0}}, +/* 64708 */ {(15<<2)|2,{88,71,0}}, +/* 64709 */ {(15<<2)|2,{88,71,0}}, +/* 64710 */ {(15<<2)|2,{88,72,0}}, +/* 64711 */ {(15<<2)|2,{88,72,0}}, +/* 64712 */ {(15<<2)|2,{88,73,0}}, +/* 64713 */ {(15<<2)|2,{88,73,0}}, +/* 64714 */ {(15<<2)|2,{88,74,0}}, +/* 64715 */ {(15<<2)|2,{88,74,0}}, +/* 64716 */ {(15<<2)|2,{88,75,0}}, +/* 64717 */ {(15<<2)|2,{88,75,0}}, +/* 64718 */ {(15<<2)|2,{88,76,0}}, +/* 64719 */ {(15<<2)|2,{88,76,0}}, +/* 64720 */ {(15<<2)|2,{88,77,0}}, +/* 64721 */ {(15<<2)|2,{88,77,0}}, +/* 64722 */ {(15<<2)|2,{88,78,0}}, +/* 64723 */ {(15<<2)|2,{88,78,0}}, +/* 64724 */ {(15<<2)|2,{88,79,0}}, +/* 64725 */ {(15<<2)|2,{88,79,0}}, +/* 64726 */ {(15<<2)|2,{88,80,0}}, +/* 64727 */ {(15<<2)|2,{88,80,0}}, +/* 64728 */ {(15<<2)|2,{88,81,0}}, +/* 64729 */ {(15<<2)|2,{88,81,0}}, +/* 64730 */ {(15<<2)|2,{88,82,0}}, +/* 64731 */ {(15<<2)|2,{88,82,0}}, +/* 64732 */ {(15<<2)|2,{88,83,0}}, +/* 64733 */ {(15<<2)|2,{88,83,0}}, +/* 64734 */ {(15<<2)|2,{88,84,0}}, +/* 64735 */ {(15<<2)|2,{88,84,0}}, +/* 64736 */ {(15<<2)|2,{88,85,0}}, +/* 64737 */ {(15<<2)|2,{88,85,0}}, +/* 64738 */ {(15<<2)|2,{88,86,0}}, +/* 64739 */ {(15<<2)|2,{88,86,0}}, +/* 64740 */ {(15<<2)|2,{88,87,0}}, +/* 64741 */ {(15<<2)|2,{88,87,0}}, +/* 64742 */ {(15<<2)|2,{88,89,0}}, +/* 64743 */ {(15<<2)|2,{88,89,0}}, +/* 64744 */ {(15<<2)|2,{88,106,0}}, +/* 64745 */ {(15<<2)|2,{88,106,0}}, +/* 64746 */ {(15<<2)|2,{88,107,0}}, +/* 64747 */ {(15<<2)|2,{88,107,0}}, +/* 64748 */ {(15<<2)|2,{88,113,0}}, +/* 64749 */ {(15<<2)|2,{88,113,0}}, +/* 64750 */ {(15<<2)|2,{88,118,0}}, +/* 64751 */ {(15<<2)|2,{88,118,0}}, +/* 64752 */ {(15<<2)|2,{88,119,0}}, +/* 64753 */ {(15<<2)|2,{88,119,0}}, +/* 64754 */ {(15<<2)|2,{88,120,0}}, +/* 64755 */ {(15<<2)|2,{88,120,0}}, +/* 64756 */ {(15<<2)|2,{88,121,0}}, +/* 64757 */ {(15<<2)|2,{88,121,0}}, +/* 64758 */ {(15<<2)|2,{88,122,0}}, +/* 64759 */ {(15<<2)|2,{88,122,0}}, +/* 64760 */ {(16<<2)|2,{88,38,0}}, +/* 64761 */ {(16<<2)|2,{88,42,0}}, +/* 64762 */ {(16<<2)|2,{88,44,0}}, +/* 64763 */ {(16<<2)|2,{88,59,0}}, +/* 64764 */ {(16<<2)|2,{88,88,0}}, +/* 64765 */ {(16<<2)|2,{88,90,0}}, +/* 64766 */ {(8<<2)|1,{88,0,0}}, +/* 64767 */ {(8<<2)|1,{88,0,0}}, +/* 64768 */ {(13<<2)|2,{90,48,0}}, +/* 64769 */ {(13<<2)|2,{90,48,0}}, +/* 64770 */ {(13<<2)|2,{90,48,0}}, +/* 64771 */ {(13<<2)|2,{90,48,0}}, +/* 64772 */ {(13<<2)|2,{90,48,0}}, +/* 64773 */ {(13<<2)|2,{90,48,0}}, +/* 64774 */ {(13<<2)|2,{90,48,0}}, +/* 64775 */ {(13<<2)|2,{90,48,0}}, +/* 64776 */ {(13<<2)|2,{90,49,0}}, +/* 64777 */ {(13<<2)|2,{90,49,0}}, +/* 64778 */ {(13<<2)|2,{90,49,0}}, +/* 64779 */ {(13<<2)|2,{90,49,0}}, +/* 64780 */ {(13<<2)|2,{90,49,0}}, +/* 64781 */ {(13<<2)|2,{90,49,0}}, +/* 64782 */ {(13<<2)|2,{90,49,0}}, +/* 64783 */ {(13<<2)|2,{90,49,0}}, +/* 64784 */ {(13<<2)|2,{90,50,0}}, +/* 64785 */ {(13<<2)|2,{90,50,0}}, +/* 64786 */ {(13<<2)|2,{90,50,0}}, +/* 64787 */ {(13<<2)|2,{90,50,0}}, +/* 64788 */ {(13<<2)|2,{90,50,0}}, +/* 64789 */ {(13<<2)|2,{90,50,0}}, +/* 64790 */ {(13<<2)|2,{90,50,0}}, +/* 64791 */ {(13<<2)|2,{90,50,0}}, +/* 64792 */ {(13<<2)|2,{90,97,0}}, +/* 64793 */ {(13<<2)|2,{90,97,0}}, +/* 64794 */ {(13<<2)|2,{90,97,0}}, +/* 64795 */ {(13<<2)|2,{90,97,0}}, +/* 64796 */ {(13<<2)|2,{90,97,0}}, +/* 64797 */ {(13<<2)|2,{90,97,0}}, +/* 64798 */ {(13<<2)|2,{90,97,0}}, +/* 64799 */ {(13<<2)|2,{90,97,0}}, +/* 64800 */ {(13<<2)|2,{90,99,0}}, +/* 64801 */ {(13<<2)|2,{90,99,0}}, +/* 64802 */ {(13<<2)|2,{90,99,0}}, +/* 64803 */ {(13<<2)|2,{90,99,0}}, +/* 64804 */ {(13<<2)|2,{90,99,0}}, +/* 64805 */ {(13<<2)|2,{90,99,0}}, +/* 64806 */ {(13<<2)|2,{90,99,0}}, +/* 64807 */ {(13<<2)|2,{90,99,0}}, +/* 64808 */ {(13<<2)|2,{90,101,0}}, +/* 64809 */ {(13<<2)|2,{90,101,0}}, +/* 64810 */ {(13<<2)|2,{90,101,0}}, +/* 64811 */ {(13<<2)|2,{90,101,0}}, +/* 64812 */ {(13<<2)|2,{90,101,0}}, +/* 64813 */ {(13<<2)|2,{90,101,0}}, +/* 64814 */ {(13<<2)|2,{90,101,0}}, +/* 64815 */ {(13<<2)|2,{90,101,0}}, +/* 64816 */ {(13<<2)|2,{90,105,0}}, +/* 64817 */ {(13<<2)|2,{90,105,0}}, +/* 64818 */ {(13<<2)|2,{90,105,0}}, +/* 64819 */ {(13<<2)|2,{90,105,0}}, +/* 64820 */ {(13<<2)|2,{90,105,0}}, +/* 64821 */ {(13<<2)|2,{90,105,0}}, +/* 64822 */ {(13<<2)|2,{90,105,0}}, +/* 64823 */ {(13<<2)|2,{90,105,0}}, +/* 64824 */ {(13<<2)|2,{90,111,0}}, +/* 64825 */ {(13<<2)|2,{90,111,0}}, +/* 64826 */ {(13<<2)|2,{90,111,0}}, +/* 64827 */ {(13<<2)|2,{90,111,0}}, +/* 64828 */ {(13<<2)|2,{90,111,0}}, +/* 64829 */ {(13<<2)|2,{90,111,0}}, +/* 64830 */ {(13<<2)|2,{90,111,0}}, +/* 64831 */ {(13<<2)|2,{90,111,0}}, +/* 64832 */ {(13<<2)|2,{90,115,0}}, +/* 64833 */ {(13<<2)|2,{90,115,0}}, +/* 64834 */ {(13<<2)|2,{90,115,0}}, +/* 64835 */ {(13<<2)|2,{90,115,0}}, +/* 64836 */ {(13<<2)|2,{90,115,0}}, +/* 64837 */ {(13<<2)|2,{90,115,0}}, +/* 64838 */ {(13<<2)|2,{90,115,0}}, +/* 64839 */ {(13<<2)|2,{90,115,0}}, +/* 64840 */ {(13<<2)|2,{90,116,0}}, +/* 64841 */ {(13<<2)|2,{90,116,0}}, +/* 64842 */ {(13<<2)|2,{90,116,0}}, +/* 64843 */ {(13<<2)|2,{90,116,0}}, +/* 64844 */ {(13<<2)|2,{90,116,0}}, +/* 64845 */ {(13<<2)|2,{90,116,0}}, +/* 64846 */ {(13<<2)|2,{90,116,0}}, +/* 64847 */ {(13<<2)|2,{90,116,0}}, +/* 64848 */ {(14<<2)|2,{90,32,0}}, +/* 64849 */ {(14<<2)|2,{90,32,0}}, +/* 64850 */ {(14<<2)|2,{90,32,0}}, +/* 64851 */ {(14<<2)|2,{90,32,0}}, +/* 64852 */ {(14<<2)|2,{90,37,0}}, +/* 64853 */ {(14<<2)|2,{90,37,0}}, +/* 64854 */ {(14<<2)|2,{90,37,0}}, +/* 64855 */ {(14<<2)|2,{90,37,0}}, +/* 64856 */ {(14<<2)|2,{90,45,0}}, +/* 64857 */ {(14<<2)|2,{90,45,0}}, +/* 64858 */ {(14<<2)|2,{90,45,0}}, +/* 64859 */ {(14<<2)|2,{90,45,0}}, +/* 64860 */ {(14<<2)|2,{90,46,0}}, +/* 64861 */ {(14<<2)|2,{90,46,0}}, +/* 64862 */ {(14<<2)|2,{90,46,0}}, +/* 64863 */ {(14<<2)|2,{90,46,0}}, +/* 64864 */ {(14<<2)|2,{90,47,0}}, +/* 64865 */ {(14<<2)|2,{90,47,0}}, +/* 64866 */ {(14<<2)|2,{90,47,0}}, +/* 64867 */ {(14<<2)|2,{90,47,0}}, +/* 64868 */ {(14<<2)|2,{90,51,0}}, +/* 64869 */ {(14<<2)|2,{90,51,0}}, +/* 64870 */ {(14<<2)|2,{90,51,0}}, +/* 64871 */ {(14<<2)|2,{90,51,0}}, +/* 64872 */ {(14<<2)|2,{90,52,0}}, +/* 64873 */ {(14<<2)|2,{90,52,0}}, +/* 64874 */ {(14<<2)|2,{90,52,0}}, +/* 64875 */ {(14<<2)|2,{90,52,0}}, +/* 64876 */ {(14<<2)|2,{90,53,0}}, +/* 64877 */ {(14<<2)|2,{90,53,0}}, +/* 64878 */ {(14<<2)|2,{90,53,0}}, +/* 64879 */ {(14<<2)|2,{90,53,0}}, +/* 64880 */ {(14<<2)|2,{90,54,0}}, +/* 64881 */ {(14<<2)|2,{90,54,0}}, +/* 64882 */ {(14<<2)|2,{90,54,0}}, +/* 64883 */ {(14<<2)|2,{90,54,0}}, +/* 64884 */ {(14<<2)|2,{90,55,0}}, +/* 64885 */ {(14<<2)|2,{90,55,0}}, +/* 64886 */ {(14<<2)|2,{90,55,0}}, +/* 64887 */ {(14<<2)|2,{90,55,0}}, +/* 64888 */ {(14<<2)|2,{90,56,0}}, +/* 64889 */ {(14<<2)|2,{90,56,0}}, +/* 64890 */ {(14<<2)|2,{90,56,0}}, +/* 64891 */ {(14<<2)|2,{90,56,0}}, +/* 64892 */ {(14<<2)|2,{90,57,0}}, +/* 64893 */ {(14<<2)|2,{90,57,0}}, +/* 64894 */ {(14<<2)|2,{90,57,0}}, +/* 64895 */ {(14<<2)|2,{90,57,0}}, +/* 64896 */ {(14<<2)|2,{90,61,0}}, +/* 64897 */ {(14<<2)|2,{90,61,0}}, +/* 64898 */ {(14<<2)|2,{90,61,0}}, +/* 64899 */ {(14<<2)|2,{90,61,0}}, +/* 64900 */ {(14<<2)|2,{90,65,0}}, +/* 64901 */ {(14<<2)|2,{90,65,0}}, +/* 64902 */ {(14<<2)|2,{90,65,0}}, +/* 64903 */ {(14<<2)|2,{90,65,0}}, +/* 64904 */ {(14<<2)|2,{90,95,0}}, +/* 64905 */ {(14<<2)|2,{90,95,0}}, +/* 64906 */ {(14<<2)|2,{90,95,0}}, +/* 64907 */ {(14<<2)|2,{90,95,0}}, +/* 64908 */ {(14<<2)|2,{90,98,0}}, +/* 64909 */ {(14<<2)|2,{90,98,0}}, +/* 64910 */ {(14<<2)|2,{90,98,0}}, +/* 64911 */ {(14<<2)|2,{90,98,0}}, +/* 64912 */ {(14<<2)|2,{90,100,0}}, +/* 64913 */ {(14<<2)|2,{90,100,0}}, +/* 64914 */ {(14<<2)|2,{90,100,0}}, +/* 64915 */ {(14<<2)|2,{90,100,0}}, +/* 64916 */ {(14<<2)|2,{90,102,0}}, +/* 64917 */ {(14<<2)|2,{90,102,0}}, +/* 64918 */ {(14<<2)|2,{90,102,0}}, +/* 64919 */ {(14<<2)|2,{90,102,0}}, +/* 64920 */ {(14<<2)|2,{90,103,0}}, +/* 64921 */ {(14<<2)|2,{90,103,0}}, +/* 64922 */ {(14<<2)|2,{90,103,0}}, +/* 64923 */ {(14<<2)|2,{90,103,0}}, +/* 64924 */ {(14<<2)|2,{90,104,0}}, +/* 64925 */ {(14<<2)|2,{90,104,0}}, +/* 64926 */ {(14<<2)|2,{90,104,0}}, +/* 64927 */ {(14<<2)|2,{90,104,0}}, +/* 64928 */ {(14<<2)|2,{90,108,0}}, +/* 64929 */ {(14<<2)|2,{90,108,0}}, +/* 64930 */ {(14<<2)|2,{90,108,0}}, +/* 64931 */ {(14<<2)|2,{90,108,0}}, +/* 64932 */ {(14<<2)|2,{90,109,0}}, +/* 64933 */ {(14<<2)|2,{90,109,0}}, +/* 64934 */ {(14<<2)|2,{90,109,0}}, +/* 64935 */ {(14<<2)|2,{90,109,0}}, +/* 64936 */ {(14<<2)|2,{90,110,0}}, +/* 64937 */ {(14<<2)|2,{90,110,0}}, +/* 64938 */ {(14<<2)|2,{90,110,0}}, +/* 64939 */ {(14<<2)|2,{90,110,0}}, +/* 64940 */ {(14<<2)|2,{90,112,0}}, +/* 64941 */ {(14<<2)|2,{90,112,0}}, +/* 64942 */ {(14<<2)|2,{90,112,0}}, +/* 64943 */ {(14<<2)|2,{90,112,0}}, +/* 64944 */ {(14<<2)|2,{90,114,0}}, +/* 64945 */ {(14<<2)|2,{90,114,0}}, +/* 64946 */ {(14<<2)|2,{90,114,0}}, +/* 64947 */ {(14<<2)|2,{90,114,0}}, +/* 64948 */ {(14<<2)|2,{90,117,0}}, +/* 64949 */ {(14<<2)|2,{90,117,0}}, +/* 64950 */ {(14<<2)|2,{90,117,0}}, +/* 64951 */ {(14<<2)|2,{90,117,0}}, +/* 64952 */ {(15<<2)|2,{90,58,0}}, +/* 64953 */ {(15<<2)|2,{90,58,0}}, +/* 64954 */ {(15<<2)|2,{90,66,0}}, +/* 64955 */ {(15<<2)|2,{90,66,0}}, +/* 64956 */ {(15<<2)|2,{90,67,0}}, +/* 64957 */ {(15<<2)|2,{90,67,0}}, +/* 64958 */ {(15<<2)|2,{90,68,0}}, +/* 64959 */ {(15<<2)|2,{90,68,0}}, +/* 64960 */ {(15<<2)|2,{90,69,0}}, +/* 64961 */ {(15<<2)|2,{90,69,0}}, +/* 64962 */ {(15<<2)|2,{90,70,0}}, +/* 64963 */ {(15<<2)|2,{90,70,0}}, +/* 64964 */ {(15<<2)|2,{90,71,0}}, +/* 64965 */ {(15<<2)|2,{90,71,0}}, +/* 64966 */ {(15<<2)|2,{90,72,0}}, +/* 64967 */ {(15<<2)|2,{90,72,0}}, +/* 64968 */ {(15<<2)|2,{90,73,0}}, +/* 64969 */ {(15<<2)|2,{90,73,0}}, +/* 64970 */ {(15<<2)|2,{90,74,0}}, +/* 64971 */ {(15<<2)|2,{90,74,0}}, +/* 64972 */ {(15<<2)|2,{90,75,0}}, +/* 64973 */ {(15<<2)|2,{90,75,0}}, +/* 64974 */ {(15<<2)|2,{90,76,0}}, +/* 64975 */ {(15<<2)|2,{90,76,0}}, +/* 64976 */ {(15<<2)|2,{90,77,0}}, +/* 64977 */ {(15<<2)|2,{90,77,0}}, +/* 64978 */ {(15<<2)|2,{90,78,0}}, +/* 64979 */ {(15<<2)|2,{90,78,0}}, +/* 64980 */ {(15<<2)|2,{90,79,0}}, +/* 64981 */ {(15<<2)|2,{90,79,0}}, +/* 64982 */ {(15<<2)|2,{90,80,0}}, +/* 64983 */ {(15<<2)|2,{90,80,0}}, +/* 64984 */ {(15<<2)|2,{90,81,0}}, +/* 64985 */ {(15<<2)|2,{90,81,0}}, +/* 64986 */ {(15<<2)|2,{90,82,0}}, +/* 64987 */ {(15<<2)|2,{90,82,0}}, +/* 64988 */ {(15<<2)|2,{90,83,0}}, +/* 64989 */ {(15<<2)|2,{90,83,0}}, +/* 64990 */ {(15<<2)|2,{90,84,0}}, +/* 64991 */ {(15<<2)|2,{90,84,0}}, +/* 64992 */ {(15<<2)|2,{90,85,0}}, +/* 64993 */ {(15<<2)|2,{90,85,0}}, +/* 64994 */ {(15<<2)|2,{90,86,0}}, +/* 64995 */ {(15<<2)|2,{90,86,0}}, +/* 64996 */ {(15<<2)|2,{90,87,0}}, +/* 64997 */ {(15<<2)|2,{90,87,0}}, +/* 64998 */ {(15<<2)|2,{90,89,0}}, +/* 64999 */ {(15<<2)|2,{90,89,0}}, +/* 65000 */ {(15<<2)|2,{90,106,0}}, +/* 65001 */ {(15<<2)|2,{90,106,0}}, +/* 65002 */ {(15<<2)|2,{90,107,0}}, +/* 65003 */ {(15<<2)|2,{90,107,0}}, +/* 65004 */ {(15<<2)|2,{90,113,0}}, +/* 65005 */ {(15<<2)|2,{90,113,0}}, +/* 65006 */ {(15<<2)|2,{90,118,0}}, +/* 65007 */ {(15<<2)|2,{90,118,0}}, +/* 65008 */ {(15<<2)|2,{90,119,0}}, +/* 65009 */ {(15<<2)|2,{90,119,0}}, +/* 65010 */ {(15<<2)|2,{90,120,0}}, +/* 65011 */ {(15<<2)|2,{90,120,0}}, +/* 65012 */ {(15<<2)|2,{90,121,0}}, +/* 65013 */ {(15<<2)|2,{90,121,0}}, +/* 65014 */ {(15<<2)|2,{90,122,0}}, +/* 65015 */ {(15<<2)|2,{90,122,0}}, +/* 65016 */ {(16<<2)|2,{90,38,0}}, +/* 65017 */ {(16<<2)|2,{90,42,0}}, +/* 65018 */ {(16<<2)|2,{90,44,0}}, +/* 65019 */ {(16<<2)|2,{90,59,0}}, +/* 65020 */ {(16<<2)|2,{90,88,0}}, +/* 65021 */ {(16<<2)|2,{90,90,0}}, +/* 65022 */ {(8<<2)|1,{90,0,0}}, +/* 65023 */ {(8<<2)|1,{90,0,0}}, +/* 65024 */ {(15<<2)|2,{33,48,0}}, +/* 65025 */ {(15<<2)|2,{33,48,0}}, +/* 65026 */ {(15<<2)|2,{33,49,0}}, +/* 65027 */ {(15<<2)|2,{33,49,0}}, +/* 65028 */ {(15<<2)|2,{33,50,0}}, +/* 65029 */ {(15<<2)|2,{33,50,0}}, +/* 65030 */ {(15<<2)|2,{33,97,0}}, +/* 65031 */ {(15<<2)|2,{33,97,0}}, +/* 65032 */ {(15<<2)|2,{33,99,0}}, +/* 65033 */ {(15<<2)|2,{33,99,0}}, +/* 65034 */ {(15<<2)|2,{33,101,0}}, +/* 65035 */ {(15<<2)|2,{33,101,0}}, +/* 65036 */ {(15<<2)|2,{33,105,0}}, +/* 65037 */ {(15<<2)|2,{33,105,0}}, +/* 65038 */ {(15<<2)|2,{33,111,0}}, +/* 65039 */ {(15<<2)|2,{33,111,0}}, +/* 65040 */ {(15<<2)|2,{33,115,0}}, +/* 65041 */ {(15<<2)|2,{33,115,0}}, +/* 65042 */ {(15<<2)|2,{33,116,0}}, +/* 65043 */ {(15<<2)|2,{33,116,0}}, +/* 65044 */ {(16<<2)|2,{33,32,0}}, +/* 65045 */ {(16<<2)|2,{33,37,0}}, +/* 65046 */ {(16<<2)|2,{33,45,0}}, +/* 65047 */ {(16<<2)|2,{33,46,0}}, +/* 65048 */ {(16<<2)|2,{33,47,0}}, +/* 65049 */ {(16<<2)|2,{33,51,0}}, +/* 65050 */ {(16<<2)|2,{33,52,0}}, +/* 65051 */ {(16<<2)|2,{33,53,0}}, +/* 65052 */ {(16<<2)|2,{33,54,0}}, +/* 65053 */ {(16<<2)|2,{33,55,0}}, +/* 65054 */ {(16<<2)|2,{33,56,0}}, +/* 65055 */ {(16<<2)|2,{33,57,0}}, +/* 65056 */ {(16<<2)|2,{33,61,0}}, +/* 65057 */ {(16<<2)|2,{33,65,0}}, +/* 65058 */ {(16<<2)|2,{33,95,0}}, +/* 65059 */ {(16<<2)|2,{33,98,0}}, +/* 65060 */ {(16<<2)|2,{33,100,0}}, +/* 65061 */ {(16<<2)|2,{33,102,0}}, +/* 65062 */ {(16<<2)|2,{33,103,0}}, +/* 65063 */ {(16<<2)|2,{33,104,0}}, +/* 65064 */ {(16<<2)|2,{33,108,0}}, +/* 65065 */ {(16<<2)|2,{33,109,0}}, +/* 65066 */ {(16<<2)|2,{33,110,0}}, +/* 65067 */ {(16<<2)|2,{33,112,0}}, +/* 65068 */ {(16<<2)|2,{33,114,0}}, +/* 65069 */ {(16<<2)|2,{33,117,0}}, +/* 65070 */ {(10<<2)|1,{33,0,0}}, +/* 65071 */ {(10<<2)|1,{33,0,0}}, +/* 65072 */ {(10<<2)|1,{33,0,0}}, +/* 65073 */ {(10<<2)|1,{33,0,0}}, +/* 65074 */ {(10<<2)|1,{33,0,0}}, +/* 65075 */ {(10<<2)|1,{33,0,0}}, +/* 65076 */ {(10<<2)|1,{33,0,0}}, +/* 65077 */ {(10<<2)|1,{33,0,0}}, +/* 65078 */ {(10<<2)|1,{33,0,0}}, +/* 65079 */ {(10<<2)|1,{33,0,0}}, +/* 65080 */ {(10<<2)|1,{33,0,0}}, +/* 65081 */ {(10<<2)|1,{33,0,0}}, +/* 65082 */ {(10<<2)|1,{33,0,0}}, +/* 65083 */ {(10<<2)|1,{33,0,0}}, +/* 65084 */ {(10<<2)|1,{33,0,0}}, +/* 65085 */ {(10<<2)|1,{33,0,0}}, +/* 65086 */ {(10<<2)|1,{33,0,0}}, +/* 65087 */ {(10<<2)|1,{33,0,0}}, +/* 65088 */ {(15<<2)|2,{34,48,0}}, +/* 65089 */ {(15<<2)|2,{34,48,0}}, +/* 65090 */ {(15<<2)|2,{34,49,0}}, +/* 65091 */ {(15<<2)|2,{34,49,0}}, +/* 65092 */ {(15<<2)|2,{34,50,0}}, +/* 65093 */ {(15<<2)|2,{34,50,0}}, +/* 65094 */ {(15<<2)|2,{34,97,0}}, +/* 65095 */ {(15<<2)|2,{34,97,0}}, +/* 65096 */ {(15<<2)|2,{34,99,0}}, +/* 65097 */ {(15<<2)|2,{34,99,0}}, +/* 65098 */ {(15<<2)|2,{34,101,0}}, +/* 65099 */ {(15<<2)|2,{34,101,0}}, +/* 65100 */ {(15<<2)|2,{34,105,0}}, +/* 65101 */ {(15<<2)|2,{34,105,0}}, +/* 65102 */ {(15<<2)|2,{34,111,0}}, +/* 65103 */ {(15<<2)|2,{34,111,0}}, +/* 65104 */ {(15<<2)|2,{34,115,0}}, +/* 65105 */ {(15<<2)|2,{34,115,0}}, +/* 65106 */ {(15<<2)|2,{34,116,0}}, +/* 65107 */ {(15<<2)|2,{34,116,0}}, +/* 65108 */ {(16<<2)|2,{34,32,0}}, +/* 65109 */ {(16<<2)|2,{34,37,0}}, +/* 65110 */ {(16<<2)|2,{34,45,0}}, +/* 65111 */ {(16<<2)|2,{34,46,0}}, +/* 65112 */ {(16<<2)|2,{34,47,0}}, +/* 65113 */ {(16<<2)|2,{34,51,0}}, +/* 65114 */ {(16<<2)|2,{34,52,0}}, +/* 65115 */ {(16<<2)|2,{34,53,0}}, +/* 65116 */ {(16<<2)|2,{34,54,0}}, +/* 65117 */ {(16<<2)|2,{34,55,0}}, +/* 65118 */ {(16<<2)|2,{34,56,0}}, +/* 65119 */ {(16<<2)|2,{34,57,0}}, +/* 65120 */ {(16<<2)|2,{34,61,0}}, +/* 65121 */ {(16<<2)|2,{34,65,0}}, +/* 65122 */ {(16<<2)|2,{34,95,0}}, +/* 65123 */ {(16<<2)|2,{34,98,0}}, +/* 65124 */ {(16<<2)|2,{34,100,0}}, +/* 65125 */ {(16<<2)|2,{34,102,0}}, +/* 65126 */ {(16<<2)|2,{34,103,0}}, +/* 65127 */ {(16<<2)|2,{34,104,0}}, +/* 65128 */ {(16<<2)|2,{34,108,0}}, +/* 65129 */ {(16<<2)|2,{34,109,0}}, +/* 65130 */ {(16<<2)|2,{34,110,0}}, +/* 65131 */ {(16<<2)|2,{34,112,0}}, +/* 65132 */ {(16<<2)|2,{34,114,0}}, +/* 65133 */ {(16<<2)|2,{34,117,0}}, +/* 65134 */ {(10<<2)|1,{34,0,0}}, +/* 65135 */ {(10<<2)|1,{34,0,0}}, +/* 65136 */ {(10<<2)|1,{34,0,0}}, +/* 65137 */ {(10<<2)|1,{34,0,0}}, +/* 65138 */ {(10<<2)|1,{34,0,0}}, +/* 65139 */ {(10<<2)|1,{34,0,0}}, +/* 65140 */ {(10<<2)|1,{34,0,0}}, +/* 65141 */ {(10<<2)|1,{34,0,0}}, +/* 65142 */ {(10<<2)|1,{34,0,0}}, +/* 65143 */ {(10<<2)|1,{34,0,0}}, +/* 65144 */ {(10<<2)|1,{34,0,0}}, +/* 65145 */ {(10<<2)|1,{34,0,0}}, +/* 65146 */ {(10<<2)|1,{34,0,0}}, +/* 65147 */ {(10<<2)|1,{34,0,0}}, +/* 65148 */ {(10<<2)|1,{34,0,0}}, +/* 65149 */ {(10<<2)|1,{34,0,0}}, +/* 65150 */ {(10<<2)|1,{34,0,0}}, +/* 65151 */ {(10<<2)|1,{34,0,0}}, +/* 65152 */ {(15<<2)|2,{40,48,0}}, +/* 65153 */ {(15<<2)|2,{40,48,0}}, +/* 65154 */ {(15<<2)|2,{40,49,0}}, +/* 65155 */ {(15<<2)|2,{40,49,0}}, +/* 65156 */ {(15<<2)|2,{40,50,0}}, +/* 65157 */ {(15<<2)|2,{40,50,0}}, +/* 65158 */ {(15<<2)|2,{40,97,0}}, +/* 65159 */ {(15<<2)|2,{40,97,0}}, +/* 65160 */ {(15<<2)|2,{40,99,0}}, +/* 65161 */ {(15<<2)|2,{40,99,0}}, +/* 65162 */ {(15<<2)|2,{40,101,0}}, +/* 65163 */ {(15<<2)|2,{40,101,0}}, +/* 65164 */ {(15<<2)|2,{40,105,0}}, +/* 65165 */ {(15<<2)|2,{40,105,0}}, +/* 65166 */ {(15<<2)|2,{40,111,0}}, +/* 65167 */ {(15<<2)|2,{40,111,0}}, +/* 65168 */ {(15<<2)|2,{40,115,0}}, +/* 65169 */ {(15<<2)|2,{40,115,0}}, +/* 65170 */ {(15<<2)|2,{40,116,0}}, +/* 65171 */ {(15<<2)|2,{40,116,0}}, +/* 65172 */ {(16<<2)|2,{40,32,0}}, +/* 65173 */ {(16<<2)|2,{40,37,0}}, +/* 65174 */ {(16<<2)|2,{40,45,0}}, +/* 65175 */ {(16<<2)|2,{40,46,0}}, +/* 65176 */ {(16<<2)|2,{40,47,0}}, +/* 65177 */ {(16<<2)|2,{40,51,0}}, +/* 65178 */ {(16<<2)|2,{40,52,0}}, +/* 65179 */ {(16<<2)|2,{40,53,0}}, +/* 65180 */ {(16<<2)|2,{40,54,0}}, +/* 65181 */ {(16<<2)|2,{40,55,0}}, +/* 65182 */ {(16<<2)|2,{40,56,0}}, +/* 65183 */ {(16<<2)|2,{40,57,0}}, +/* 65184 */ {(16<<2)|2,{40,61,0}}, +/* 65185 */ {(16<<2)|2,{40,65,0}}, +/* 65186 */ {(16<<2)|2,{40,95,0}}, +/* 65187 */ {(16<<2)|2,{40,98,0}}, +/* 65188 */ {(16<<2)|2,{40,100,0}}, +/* 65189 */ {(16<<2)|2,{40,102,0}}, +/* 65190 */ {(16<<2)|2,{40,103,0}}, +/* 65191 */ {(16<<2)|2,{40,104,0}}, +/* 65192 */ {(16<<2)|2,{40,108,0}}, +/* 65193 */ {(16<<2)|2,{40,109,0}}, +/* 65194 */ {(16<<2)|2,{40,110,0}}, +/* 65195 */ {(16<<2)|2,{40,112,0}}, +/* 65196 */ {(16<<2)|2,{40,114,0}}, +/* 65197 */ {(16<<2)|2,{40,117,0}}, +/* 65198 */ {(10<<2)|1,{40,0,0}}, +/* 65199 */ {(10<<2)|1,{40,0,0}}, +/* 65200 */ {(10<<2)|1,{40,0,0}}, +/* 65201 */ {(10<<2)|1,{40,0,0}}, +/* 65202 */ {(10<<2)|1,{40,0,0}}, +/* 65203 */ {(10<<2)|1,{40,0,0}}, +/* 65204 */ {(10<<2)|1,{40,0,0}}, +/* 65205 */ {(10<<2)|1,{40,0,0}}, +/* 65206 */ {(10<<2)|1,{40,0,0}}, +/* 65207 */ {(10<<2)|1,{40,0,0}}, +/* 65208 */ {(10<<2)|1,{40,0,0}}, +/* 65209 */ {(10<<2)|1,{40,0,0}}, +/* 65210 */ {(10<<2)|1,{40,0,0}}, +/* 65211 */ {(10<<2)|1,{40,0,0}}, +/* 65212 */ {(10<<2)|1,{40,0,0}}, +/* 65213 */ {(10<<2)|1,{40,0,0}}, +/* 65214 */ {(10<<2)|1,{40,0,0}}, +/* 65215 */ {(10<<2)|1,{40,0,0}}, +/* 65216 */ {(15<<2)|2,{41,48,0}}, +/* 65217 */ {(15<<2)|2,{41,48,0}}, +/* 65218 */ {(15<<2)|2,{41,49,0}}, +/* 65219 */ {(15<<2)|2,{41,49,0}}, +/* 65220 */ {(15<<2)|2,{41,50,0}}, +/* 65221 */ {(15<<2)|2,{41,50,0}}, +/* 65222 */ {(15<<2)|2,{41,97,0}}, +/* 65223 */ {(15<<2)|2,{41,97,0}}, +/* 65224 */ {(15<<2)|2,{41,99,0}}, +/* 65225 */ {(15<<2)|2,{41,99,0}}, +/* 65226 */ {(15<<2)|2,{41,101,0}}, +/* 65227 */ {(15<<2)|2,{41,101,0}}, +/* 65228 */ {(15<<2)|2,{41,105,0}}, +/* 65229 */ {(15<<2)|2,{41,105,0}}, +/* 65230 */ {(15<<2)|2,{41,111,0}}, +/* 65231 */ {(15<<2)|2,{41,111,0}}, +/* 65232 */ {(15<<2)|2,{41,115,0}}, +/* 65233 */ {(15<<2)|2,{41,115,0}}, +/* 65234 */ {(15<<2)|2,{41,116,0}}, +/* 65235 */ {(15<<2)|2,{41,116,0}}, +/* 65236 */ {(16<<2)|2,{41,32,0}}, +/* 65237 */ {(16<<2)|2,{41,37,0}}, +/* 65238 */ {(16<<2)|2,{41,45,0}}, +/* 65239 */ {(16<<2)|2,{41,46,0}}, +/* 65240 */ {(16<<2)|2,{41,47,0}}, +/* 65241 */ {(16<<2)|2,{41,51,0}}, +/* 65242 */ {(16<<2)|2,{41,52,0}}, +/* 65243 */ {(16<<2)|2,{41,53,0}}, +/* 65244 */ {(16<<2)|2,{41,54,0}}, +/* 65245 */ {(16<<2)|2,{41,55,0}}, +/* 65246 */ {(16<<2)|2,{41,56,0}}, +/* 65247 */ {(16<<2)|2,{41,57,0}}, +/* 65248 */ {(16<<2)|2,{41,61,0}}, +/* 65249 */ {(16<<2)|2,{41,65,0}}, +/* 65250 */ {(16<<2)|2,{41,95,0}}, +/* 65251 */ {(16<<2)|2,{41,98,0}}, +/* 65252 */ {(16<<2)|2,{41,100,0}}, +/* 65253 */ {(16<<2)|2,{41,102,0}}, +/* 65254 */ {(16<<2)|2,{41,103,0}}, +/* 65255 */ {(16<<2)|2,{41,104,0}}, +/* 65256 */ {(16<<2)|2,{41,108,0}}, +/* 65257 */ {(16<<2)|2,{41,109,0}}, +/* 65258 */ {(16<<2)|2,{41,110,0}}, +/* 65259 */ {(16<<2)|2,{41,112,0}}, +/* 65260 */ {(16<<2)|2,{41,114,0}}, +/* 65261 */ {(16<<2)|2,{41,117,0}}, +/* 65262 */ {(10<<2)|1,{41,0,0}}, +/* 65263 */ {(10<<2)|1,{41,0,0}}, +/* 65264 */ {(10<<2)|1,{41,0,0}}, +/* 65265 */ {(10<<2)|1,{41,0,0}}, +/* 65266 */ {(10<<2)|1,{41,0,0}}, +/* 65267 */ {(10<<2)|1,{41,0,0}}, +/* 65268 */ {(10<<2)|1,{41,0,0}}, +/* 65269 */ {(10<<2)|1,{41,0,0}}, +/* 65270 */ {(10<<2)|1,{41,0,0}}, +/* 65271 */ {(10<<2)|1,{41,0,0}}, +/* 65272 */ {(10<<2)|1,{41,0,0}}, +/* 65273 */ {(10<<2)|1,{41,0,0}}, +/* 65274 */ {(10<<2)|1,{41,0,0}}, +/* 65275 */ {(10<<2)|1,{41,0,0}}, +/* 65276 */ {(10<<2)|1,{41,0,0}}, +/* 65277 */ {(10<<2)|1,{41,0,0}}, +/* 65278 */ {(10<<2)|1,{41,0,0}}, +/* 65279 */ {(10<<2)|1,{41,0,0}}, +/* 65280 */ {(15<<2)|2,{63,48,0}}, +/* 65281 */ {(15<<2)|2,{63,48,0}}, +/* 65282 */ {(15<<2)|2,{63,49,0}}, +/* 65283 */ {(15<<2)|2,{63,49,0}}, +/* 65284 */ {(15<<2)|2,{63,50,0}}, +/* 65285 */ {(15<<2)|2,{63,50,0}}, +/* 65286 */ {(15<<2)|2,{63,97,0}}, +/* 65287 */ {(15<<2)|2,{63,97,0}}, +/* 65288 */ {(15<<2)|2,{63,99,0}}, +/* 65289 */ {(15<<2)|2,{63,99,0}}, +/* 65290 */ {(15<<2)|2,{63,101,0}}, +/* 65291 */ {(15<<2)|2,{63,101,0}}, +/* 65292 */ {(15<<2)|2,{63,105,0}}, +/* 65293 */ {(15<<2)|2,{63,105,0}}, +/* 65294 */ {(15<<2)|2,{63,111,0}}, +/* 65295 */ {(15<<2)|2,{63,111,0}}, +/* 65296 */ {(15<<2)|2,{63,115,0}}, +/* 65297 */ {(15<<2)|2,{63,115,0}}, +/* 65298 */ {(15<<2)|2,{63,116,0}}, +/* 65299 */ {(15<<2)|2,{63,116,0}}, +/* 65300 */ {(16<<2)|2,{63,32,0}}, +/* 65301 */ {(16<<2)|2,{63,37,0}}, +/* 65302 */ {(16<<2)|2,{63,45,0}}, +/* 65303 */ {(16<<2)|2,{63,46,0}}, +/* 65304 */ {(16<<2)|2,{63,47,0}}, +/* 65305 */ {(16<<2)|2,{63,51,0}}, +/* 65306 */ {(16<<2)|2,{63,52,0}}, +/* 65307 */ {(16<<2)|2,{63,53,0}}, +/* 65308 */ {(16<<2)|2,{63,54,0}}, +/* 65309 */ {(16<<2)|2,{63,55,0}}, +/* 65310 */ {(16<<2)|2,{63,56,0}}, +/* 65311 */ {(16<<2)|2,{63,57,0}}, +/* 65312 */ {(16<<2)|2,{63,61,0}}, +/* 65313 */ {(16<<2)|2,{63,65,0}}, +/* 65314 */ {(16<<2)|2,{63,95,0}}, +/* 65315 */ {(16<<2)|2,{63,98,0}}, +/* 65316 */ {(16<<2)|2,{63,100,0}}, +/* 65317 */ {(16<<2)|2,{63,102,0}}, +/* 65318 */ {(16<<2)|2,{63,103,0}}, +/* 65319 */ {(16<<2)|2,{63,104,0}}, +/* 65320 */ {(16<<2)|2,{63,108,0}}, +/* 65321 */ {(16<<2)|2,{63,109,0}}, +/* 65322 */ {(16<<2)|2,{63,110,0}}, +/* 65323 */ {(16<<2)|2,{63,112,0}}, +/* 65324 */ {(16<<2)|2,{63,114,0}}, +/* 65325 */ {(16<<2)|2,{63,117,0}}, +/* 65326 */ {(10<<2)|1,{63,0,0}}, +/* 65327 */ {(10<<2)|1,{63,0,0}}, +/* 65328 */ {(10<<2)|1,{63,0,0}}, +/* 65329 */ {(10<<2)|1,{63,0,0}}, +/* 65330 */ {(10<<2)|1,{63,0,0}}, +/* 65331 */ {(10<<2)|1,{63,0,0}}, +/* 65332 */ {(10<<2)|1,{63,0,0}}, +/* 65333 */ {(10<<2)|1,{63,0,0}}, +/* 65334 */ {(10<<2)|1,{63,0,0}}, +/* 65335 */ {(10<<2)|1,{63,0,0}}, +/* 65336 */ {(10<<2)|1,{63,0,0}}, +/* 65337 */ {(10<<2)|1,{63,0,0}}, +/* 65338 */ {(10<<2)|1,{63,0,0}}, +/* 65339 */ {(10<<2)|1,{63,0,0}}, +/* 65340 */ {(10<<2)|1,{63,0,0}}, +/* 65341 */ {(10<<2)|1,{63,0,0}}, +/* 65342 */ {(10<<2)|1,{63,0,0}}, +/* 65343 */ {(10<<2)|1,{63,0,0}}, +/* 65344 */ {(16<<2)|2,{39,48,0}}, +/* 65345 */ {(16<<2)|2,{39,49,0}}, +/* 65346 */ {(16<<2)|2,{39,50,0}}, +/* 65347 */ {(16<<2)|2,{39,97,0}}, +/* 65348 */ {(16<<2)|2,{39,99,0}}, +/* 65349 */ {(16<<2)|2,{39,101,0}}, +/* 65350 */ {(16<<2)|2,{39,105,0}}, +/* 65351 */ {(16<<2)|2,{39,111,0}}, +/* 65352 */ {(16<<2)|2,{39,115,0}}, +/* 65353 */ {(16<<2)|2,{39,116,0}}, +/* 65354 */ {(11<<2)|1,{39,0,0}}, +/* 65355 */ {(11<<2)|1,{39,0,0}}, +/* 65356 */ {(11<<2)|1,{39,0,0}}, +/* 65357 */ {(11<<2)|1,{39,0,0}}, +/* 65358 */ {(11<<2)|1,{39,0,0}}, +/* 65359 */ {(11<<2)|1,{39,0,0}}, +/* 65360 */ {(11<<2)|1,{39,0,0}}, +/* 65361 */ {(11<<2)|1,{39,0,0}}, +/* 65362 */ {(11<<2)|1,{39,0,0}}, +/* 65363 */ {(11<<2)|1,{39,0,0}}, +/* 65364 */ {(11<<2)|1,{39,0,0}}, +/* 65365 */ {(11<<2)|1,{39,0,0}}, +/* 65366 */ {(11<<2)|1,{39,0,0}}, +/* 65367 */ {(11<<2)|1,{39,0,0}}, +/* 65368 */ {(11<<2)|1,{39,0,0}}, +/* 65369 */ {(11<<2)|1,{39,0,0}}, +/* 65370 */ {(11<<2)|1,{39,0,0}}, +/* 65371 */ {(11<<2)|1,{39,0,0}}, +/* 65372 */ {(11<<2)|1,{39,0,0}}, +/* 65373 */ {(11<<2)|1,{39,0,0}}, +/* 65374 */ {(11<<2)|1,{39,0,0}}, +/* 65375 */ {(11<<2)|1,{39,0,0}}, +/* 65376 */ {(16<<2)|2,{43,48,0}}, +/* 65377 */ {(16<<2)|2,{43,49,0}}, +/* 65378 */ {(16<<2)|2,{43,50,0}}, +/* 65379 */ {(16<<2)|2,{43,97,0}}, +/* 65380 */ {(16<<2)|2,{43,99,0}}, +/* 65381 */ {(16<<2)|2,{43,101,0}}, +/* 65382 */ {(16<<2)|2,{43,105,0}}, +/* 65383 */ {(16<<2)|2,{43,111,0}}, +/* 65384 */ {(16<<2)|2,{43,115,0}}, +/* 65385 */ {(16<<2)|2,{43,116,0}}, +/* 65386 */ {(11<<2)|1,{43,0,0}}, +/* 65387 */ {(11<<2)|1,{43,0,0}}, +/* 65388 */ {(11<<2)|1,{43,0,0}}, +/* 65389 */ {(11<<2)|1,{43,0,0}}, +/* 65390 */ {(11<<2)|1,{43,0,0}}, +/* 65391 */ {(11<<2)|1,{43,0,0}}, +/* 65392 */ {(11<<2)|1,{43,0,0}}, +/* 65393 */ {(11<<2)|1,{43,0,0}}, +/* 65394 */ {(11<<2)|1,{43,0,0}}, +/* 65395 */ {(11<<2)|1,{43,0,0}}, +/* 65396 */ {(11<<2)|1,{43,0,0}}, +/* 65397 */ {(11<<2)|1,{43,0,0}}, +/* 65398 */ {(11<<2)|1,{43,0,0}}, +/* 65399 */ {(11<<2)|1,{43,0,0}}, +/* 65400 */ {(11<<2)|1,{43,0,0}}, +/* 65401 */ {(11<<2)|1,{43,0,0}}, +/* 65402 */ {(11<<2)|1,{43,0,0}}, +/* 65403 */ {(11<<2)|1,{43,0,0}}, +/* 65404 */ {(11<<2)|1,{43,0,0}}, +/* 65405 */ {(11<<2)|1,{43,0,0}}, +/* 65406 */ {(11<<2)|1,{43,0,0}}, +/* 65407 */ {(11<<2)|1,{43,0,0}}, +/* 65408 */ {(16<<2)|2,{124,48,0}}, +/* 65409 */ {(16<<2)|2,{124,49,0}}, +/* 65410 */ {(16<<2)|2,{124,50,0}}, +/* 65411 */ {(16<<2)|2,{124,97,0}}, +/* 65412 */ {(16<<2)|2,{124,99,0}}, +/* 65413 */ {(16<<2)|2,{124,101,0}}, +/* 65414 */ {(16<<2)|2,{124,105,0}}, +/* 65415 */ {(16<<2)|2,{124,111,0}}, +/* 65416 */ {(16<<2)|2,{124,115,0}}, +/* 65417 */ {(16<<2)|2,{124,116,0}}, +/* 65418 */ {(11<<2)|1,{124,0,0}}, +/* 65419 */ {(11<<2)|1,{124,0,0}}, +/* 65420 */ {(11<<2)|1,{124,0,0}}, +/* 65421 */ {(11<<2)|1,{124,0,0}}, +/* 65422 */ {(11<<2)|1,{124,0,0}}, +/* 65423 */ {(11<<2)|1,{124,0,0}}, +/* 65424 */ {(11<<2)|1,{124,0,0}}, +/* 65425 */ {(11<<2)|1,{124,0,0}}, +/* 65426 */ {(11<<2)|1,{124,0,0}}, +/* 65427 */ {(11<<2)|1,{124,0,0}}, +/* 65428 */ {(11<<2)|1,{124,0,0}}, +/* 65429 */ {(11<<2)|1,{124,0,0}}, +/* 65430 */ {(11<<2)|1,{124,0,0}}, +/* 65431 */ {(11<<2)|1,{124,0,0}}, +/* 65432 */ {(11<<2)|1,{124,0,0}}, +/* 65433 */ {(11<<2)|1,{124,0,0}}, +/* 65434 */ {(11<<2)|1,{124,0,0}}, +/* 65435 */ {(11<<2)|1,{124,0,0}}, +/* 65436 */ {(11<<2)|1,{124,0,0}}, +/* 65437 */ {(11<<2)|1,{124,0,0}}, +/* 65438 */ {(11<<2)|1,{124,0,0}}, +/* 65439 */ {(11<<2)|1,{124,0,0}}, +/* 65440 */ {(12<<2)|1,{35,0,0}}, +/* 65441 */ {(12<<2)|1,{35,0,0}}, +/* 65442 */ {(12<<2)|1,{35,0,0}}, +/* 65443 */ {(12<<2)|1,{35,0,0}}, +/* 65444 */ {(12<<2)|1,{35,0,0}}, +/* 65445 */ {(12<<2)|1,{35,0,0}}, +/* 65446 */ {(12<<2)|1,{35,0,0}}, +/* 65447 */ {(12<<2)|1,{35,0,0}}, +/* 65448 */ {(12<<2)|1,{35,0,0}}, +/* 65449 */ {(12<<2)|1,{35,0,0}}, +/* 65450 */ {(12<<2)|1,{35,0,0}}, +/* 65451 */ {(12<<2)|1,{35,0,0}}, +/* 65452 */ {(12<<2)|1,{35,0,0}}, +/* 65453 */ {(12<<2)|1,{35,0,0}}, +/* 65454 */ {(12<<2)|1,{35,0,0}}, +/* 65455 */ {(12<<2)|1,{35,0,0}}, +/* 65456 */ {(12<<2)|1,{62,0,0}}, +/* 65457 */ {(12<<2)|1,{62,0,0}}, +/* 65458 */ {(12<<2)|1,{62,0,0}}, +/* 65459 */ {(12<<2)|1,{62,0,0}}, +/* 65460 */ {(12<<2)|1,{62,0,0}}, +/* 65461 */ {(12<<2)|1,{62,0,0}}, +/* 65462 */ {(12<<2)|1,{62,0,0}}, +/* 65463 */ {(12<<2)|1,{62,0,0}}, +/* 65464 */ {(12<<2)|1,{62,0,0}}, +/* 65465 */ {(12<<2)|1,{62,0,0}}, +/* 65466 */ {(12<<2)|1,{62,0,0}}, +/* 65467 */ {(12<<2)|1,{62,0,0}}, +/* 65468 */ {(12<<2)|1,{62,0,0}}, +/* 65469 */ {(12<<2)|1,{62,0,0}}, +/* 65470 */ {(12<<2)|1,{62,0,0}}, +/* 65471 */ {(12<<2)|1,{62,0,0}}, +/* 65472 */ {(13<<2)|1,{0,0,0}}, +/* 65473 */ {(13<<2)|1,{0,0,0}}, +/* 65474 */ {(13<<2)|1,{0,0,0}}, +/* 65475 */ {(13<<2)|1,{0,0,0}}, +/* 65476 */ {(13<<2)|1,{0,0,0}}, +/* 65477 */ {(13<<2)|1,{0,0,0}}, +/* 65478 */ {(13<<2)|1,{0,0,0}}, +/* 65479 */ {(13<<2)|1,{0,0,0}}, +/* 65480 */ {(13<<2)|1,{36,0,0}}, +/* 65481 */ {(13<<2)|1,{36,0,0}}, +/* 65482 */ {(13<<2)|1,{36,0,0}}, +/* 65483 */ {(13<<2)|1,{36,0,0}}, +/* 65484 */ {(13<<2)|1,{36,0,0}}, +/* 65485 */ {(13<<2)|1,{36,0,0}}, +/* 65486 */ {(13<<2)|1,{36,0,0}}, +/* 65487 */ {(13<<2)|1,{36,0,0}}, +/* 65488 */ {(13<<2)|1,{64,0,0}}, +/* 65489 */ {(13<<2)|1,{64,0,0}}, +/* 65490 */ {(13<<2)|1,{64,0,0}}, +/* 65491 */ {(13<<2)|1,{64,0,0}}, +/* 65492 */ {(13<<2)|1,{64,0,0}}, +/* 65493 */ {(13<<2)|1,{64,0,0}}, +/* 65494 */ {(13<<2)|1,{64,0,0}}, +/* 65495 */ {(13<<2)|1,{64,0,0}}, +/* 65496 */ {(13<<2)|1,{91,0,0}}, +/* 65497 */ {(13<<2)|1,{91,0,0}}, +/* 65498 */ {(13<<2)|1,{91,0,0}}, +/* 65499 */ {(13<<2)|1,{91,0,0}}, +/* 65500 */ {(13<<2)|1,{91,0,0}}, +/* 65501 */ {(13<<2)|1,{91,0,0}}, +/* 65502 */ {(13<<2)|1,{91,0,0}}, +/* 65503 */ {(13<<2)|1,{91,0,0}}, +/* 65504 */ {(13<<2)|1,{93,0,0}}, +/* 65505 */ {(13<<2)|1,{93,0,0}}, +/* 65506 */ {(13<<2)|1,{93,0,0}}, +/* 65507 */ {(13<<2)|1,{93,0,0}}, +/* 65508 */ {(13<<2)|1,{93,0,0}}, +/* 65509 */ {(13<<2)|1,{93,0,0}}, +/* 65510 */ {(13<<2)|1,{93,0,0}}, +/* 65511 */ {(13<<2)|1,{93,0,0}}, +/* 65512 */ {(13<<2)|1,{126,0,0}}, +/* 65513 */ {(13<<2)|1,{126,0,0}}, +/* 65514 */ {(13<<2)|1,{126,0,0}}, +/* 65515 */ {(13<<2)|1,{126,0,0}}, +/* 65516 */ {(13<<2)|1,{126,0,0}}, +/* 65517 */ {(13<<2)|1,{126,0,0}}, +/* 65518 */ {(13<<2)|1,{126,0,0}}, +/* 65519 */ {(13<<2)|1,{126,0,0}}, +/* 65520 */ {(14<<2)|1,{94,0,0}}, +/* 65521 */ {(14<<2)|1,{94,0,0}}, +/* 65522 */ {(14<<2)|1,{94,0,0}}, +/* 65523 */ {(14<<2)|1,{94,0,0}}, +/* 65524 */ {(14<<2)|1,{125,0,0}}, +/* 65525 */ {(14<<2)|1,{125,0,0}}, +/* 65526 */ {(14<<2)|1,{125,0,0}}, +/* 65527 */ {(14<<2)|1,{125,0,0}}, +/* 65528 */ {(15<<2)|1,{60,0,0}}, +/* 65529 */ {(15<<2)|1,{60,0,0}}, +/* 65530 */ {(15<<2)|1,{96,0,0}}, +/* 65531 */ {(15<<2)|1,{96,0,0}}, +/* 65532 */ {(15<<2)|1,{123,0,0}}, +/* 65533 */ {(15<<2)|1,{123,0,0}}, +/* 65534 */ {0,{0,0,0,}}, +/* 65535 */ {0,{0,0,0,}}, +}; +#endif diff --git a/external/lsquic/src/lshpack/lshpack.c b/external/lsquic/src/lshpack/lshpack.c new file mode 100644 index 0000000..65223d1 --- /dev/null +++ b/external/lsquic/src/lshpack/lshpack.c @@ -0,0 +1,2073 @@ +/* +MIT License + +Copyright (c) 2018 - 2023 LiteSpeed Technologies Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#include +#include +#include +#include +#include +#include + +#include "lshpack.h" +#if LS_HPACK_EMIT_TEST_CODE +#include "lshpack-test.h" +#endif +#include XXH_HEADER_NAME + +#ifdef _MSC_VER +# define FALL_THROUGH +#endif + +#ifndef FALL_THROUGH +# if defined __has_attribute && __has_attribute (fallthrough) +# define FALL_THROUGH __attribute__ ((fallthrough)) +# else +# define FALL_THROUGH +# endif +#endif + +#ifndef LS_HPACK_USE_LARGE_TABLES +#define LS_HPACK_USE_LARGE_TABLES 1 +#endif + +#include "huff-tables.h" + +#define HPACK_STATIC_TABLE_SIZE 61 +#define INITIAL_DYNAMIC_TABLE_SIZE 4096 + +/* RFC 7541, Section 4.1: + * + * " The size of the dynamic table is the sum of the size of its entries. + * " + * " The size of an entry is the sum of its name's length in octets (as + * " defined in Section 5.2), its value's length in octets, and 32. + */ +#define DYNAMIC_ENTRY_OVERHEAD 32 + +#define NAME_VAL(a, b) sizeof(a) - 1, sizeof(b) - 1, (a), (b) + +static const struct +{ + unsigned name_len; + unsigned val_len; + const char *name; + const char *val; +} +static_table[HPACK_STATIC_TABLE_SIZE] = +{ + { NAME_VAL(":authority", "") }, + { NAME_VAL(":method", "GET") }, + { NAME_VAL(":method", "POST") }, + { NAME_VAL(":path", "/") }, + { NAME_VAL(":path", "/index.html") }, + { NAME_VAL(":scheme", "http") }, + { NAME_VAL(":scheme", "https") }, + { NAME_VAL(":status", "200") }, + { NAME_VAL(":status", "204") }, + { NAME_VAL(":status", "206") }, + { NAME_VAL(":status", "304") }, + { NAME_VAL(":status", "400") }, + { NAME_VAL(":status", "404") }, + { NAME_VAL(":status", "500") }, + { NAME_VAL("accept-charset", "") }, + { NAME_VAL("accept-encoding", "gzip, deflate") }, + { NAME_VAL("accept-language", "") }, + { NAME_VAL("accept-ranges", "") }, + { NAME_VAL("accept", "") }, + { NAME_VAL("access-control-allow-origin", "") }, + { NAME_VAL("age", "") }, + { NAME_VAL("allow", "") }, + { NAME_VAL("authorization", "") }, + { NAME_VAL("cache-control", "") }, + { NAME_VAL("content-disposition", "") }, + { NAME_VAL("content-encoding", "") }, + { NAME_VAL("content-language", "") }, + { NAME_VAL("content-length", "") }, + { NAME_VAL("content-location", "") }, + { NAME_VAL("content-range", "") }, + { NAME_VAL("content-type", "") }, + { NAME_VAL("cookie", "") }, + { NAME_VAL("date", "") }, + { NAME_VAL("etag", "") }, + { NAME_VAL("expect", "") }, + { NAME_VAL("expires", "") }, + { NAME_VAL("from", "") }, + { NAME_VAL("host", "") }, + { NAME_VAL("if-match", "") }, + { NAME_VAL("if-modified-since", "") }, + { NAME_VAL("if-none-match", "") }, + { NAME_VAL("if-range", "") }, + { NAME_VAL("if-unmodified-since", "") }, + { NAME_VAL("last-modified", "") }, + { NAME_VAL("link", "") }, + { NAME_VAL("location", "") }, + { NAME_VAL("max-forwards", "") }, + { NAME_VAL("proxy-authenticate", "") }, + { NAME_VAL("proxy-authorization", "") }, + { NAME_VAL("range", "") }, + { NAME_VAL("referer", "") }, + { NAME_VAL("refresh", "") }, + { NAME_VAL("retry-after", "") }, + { NAME_VAL("server", "") }, + { NAME_VAL("set-cookie", "") }, + { NAME_VAL("strict-transport-security", "") }, + { NAME_VAL("transfer-encoding", "") }, + { NAME_VAL("user-agent", "") }, + { NAME_VAL("vary", "") }, + { NAME_VAL("via", "") }, + { NAME_VAL("www-authenticate", "") } +}; + + +static const uint32_t static_table_name_hash[HPACK_STATIC_TABLE_SIZE] = +{ + 0x653A915Bu, 0xC7742BE4u, 0xC7742BE4u, 0x3513518Du, 0x3513518Du, + 0xF49F1451u, 0xF49F1451u, 0x672BDA53u, 0x672BDA53u, 0x672BDA53u, + 0x672BDA53u, 0x672BDA53u, 0x672BDA53u, 0x672BDA53u, 0xCD2C0296u, + 0xF93AD8A9u, 0x98BD32D3u, 0x1DC691C8u, 0x1AB214F8u, 0x7D3B7A3Bu, + 0xBEC8E440u, 0xE9C1D9E1u, 0x19D88141u, 0xC25511F2u, 0x16020A90u, + 0x48011191u, 0x7D9AAB7Eu, 0x48F5CC19u, 0x8847A08Cu, 0x0D19F766u, + 0x085EF7C5u, 0x0B486ED8u, 0x1A7AA369u, 0x6DE855BAu, 0xA6006EFDu, + 0xA1BB4284u, 0xAE56E25Fu, 0xB6787110u, 0x791C6A0Du, 0xF2BADABEu, + 0xD8CA2594u, 0xFBA64C54u, 0x4BEB0951u, 0x6B86C0B5u, 0xC62FECD2u, + 0x8DA64A26u, 0x6CA35045u, 0xF614D165u, 0xE4D1DF14u, 0xB396750Au, + 0x01F10233u, 0x798BEE18u, 0x5239F142u, 0x82E1B4E1u, 0x8F7E493Eu, + 0x85E74C58u, 0xBD17F160u, 0x34C0456Au, 0x1A04DF3Du, 0xB1B15AB2u, + 0xDDDAB6FFu, +}; + + +static const uint32_t static_table_nameval_hash[HPACK_STATIC_TABLE_SIZE] = +{ + 0xF8614896u, 0x25D95A15u, 0x33968BB7u, 0xC8C267F6u, 0x8351136Fu, + 0x98573F68u, 0x16DDE443u, 0x352A6556u, 0xD4F462D2u, 0x125E66E0u, + 0xD7988BC9u, 0x4C3C90DEu, 0x65E6ECA1u, 0xB05B7B87u, 0x96816317u, + 0x8BBF5398u, 0x97E01849u, 0xD7B48DD4u, 0x9C180569u, 0xC7C63B45u, + 0xF4223EE5u, 0x12C8A744u, 0xAA95A0BCu, 0x14F65730u, 0x8410A906u, + 0x98F440DDu, 0x627E4803u, 0x5A5CC325u, 0x137FC223u, 0x1529262Fu, + 0x7950B9BDu, 0x51D448A4u, 0x52C167CFu, 0xFB22AA54u, 0x540DB9FEu, + 0x75A6C685u, 0xE1C54196u, 0xDC0C3733u, 0x6D78CB84u, 0x4F5272CDu, + 0x9D4170E4u, 0xD4E28BA1u, 0x028C7846u, 0x4E8C1DC3u, 0x684BDDBCu, + 0xE113A2B0u, 0x55F7BBD1u, 0x15BD3710u, 0xE82B715Du, 0x3674BC1Fu, + 0x5010D24Bu, 0x953DE1CBu, 0x9F2C92D9u, 0xB2DE5570u, 0xBCA5998Fu, + 0x0FF5B88Eu, 0x1FED156Bu, 0xDC83E7ECu, 0x07B79E35u, 0xA6D145A9u, + 0x43638CBAu, +}; + + +#define lshpack_arr_init(a) do { \ + memset((a), 0, sizeof(*(a))); \ +} while (0) + +#define lshpack_arr_cleanup(a) do { \ + free((a)->els); \ + memset((a), 0, sizeof(*(a))); \ +} while (0) + +#define lshpack_arr_get(a, i) ( \ + assert((i) < (a)->nelem), \ + (a)->els[(a)->off + (i)] \ +) + +#define lshpack_arr_shift(a) ( \ + assert((a)->nelem > 0), \ + (a)->nelem -= 1, \ + (a)->els[(a)->off++] \ +) + +#define lshpack_arr_pop(a) ( \ + assert((a)->nelem > 0), \ + (a)->nelem -= 1, \ + (a)->els[(a)->off + (a)->nelem] \ +) + +#define lshpack_arr_count(a) (+(a)->nelem) + +static int +lshpack_arr_push (struct lshpack_arr *arr, uintptr_t val) +{ + uintptr_t *new_els; + unsigned n; + + if (arr->off + arr->nelem < arr->nalloc) + { + arr->els[arr->off + arr->nelem] = val; + ++arr->nelem; + return 0; + } + + if (arr->off > arr->nalloc / 2) + { + memmove(arr->els, arr->els + arr->off, + sizeof(arr->els[0]) * arr->nelem); + arr->off = 0; + arr->els[arr->nelem] = val; + ++arr->nelem; + return 0; + } + + if (arr->nalloc) + n = arr->nalloc * 2; + else + n = 64; + new_els = malloc(n * sizeof(arr->els[0])); + if (!new_els) + return -1; + memcpy(new_els, arr->els + arr->off, sizeof(arr->els[0]) * arr->nelem); + free(arr->els); + arr->off = 0; + arr->els = new_els; + arr->nalloc = n; + arr->els[arr->off + arr->nelem] = val; + ++arr->nelem; + return 0; +} + +struct lshpack_double_enc_head +{ + struct lshpack_enc_head by_name; + struct lshpack_enc_head by_nameval; +}; + +struct lshpack_enc_table_entry +{ + /* An entry always lives on the `all' and `nameval' lists. If its name + * is not in the static table, it also lives on the `name' list. + */ + STAILQ_ENTRY(lshpack_enc_table_entry) + ete_next_nameval, + ete_next_name, + ete_next_all; + unsigned ete_id; + unsigned ete_nameval_hash; + unsigned ete_name_hash; + unsigned ete_name_len; + unsigned ete_val_len; + char ete_buf[]; +}; + +#define ETE_NAME(ete) ((ete)->ete_buf) +#define ETE_VALUE(ete) (&(ete)->ete_buf[(ete)->ete_name_len]) + + +#define N_BUCKETS(n_bits) (1U << (n_bits)) +#define BUCKNO(n_bits, hash) ((hash) & (N_BUCKETS(n_bits) - 1)) + + +/* We estimate average number of entries in the dynamic table to be 1/3 + * of the theoretical maximum. This number is used to size the history + * buffer: we want it large enough to cover recent entries, yet not too + * large to cover entries that appear with a period larger than the + * dynamic table. + */ +static unsigned +henc_hist_size (unsigned max_capacity) +{ + return max_capacity / DYNAMIC_ENTRY_OVERHEAD / 3; +} + + +int +lshpack_enc_init (struct lshpack_enc *enc) +{ + struct lshpack_double_enc_head *buckets; + unsigned nbits = 2; + unsigned i; + + buckets = malloc(sizeof(buckets[0]) * N_BUCKETS(nbits)); + if (!buckets) + return -1; + + for (i = 0; i < N_BUCKETS(nbits); ++i) + { + STAILQ_INIT(&buckets[i].by_name); + STAILQ_INIT(&buckets[i].by_nameval); + } + + memset(enc, 0, sizeof(*enc)); + STAILQ_INIT(&enc->hpe_all_entries); + enc->hpe_max_capacity = INITIAL_DYNAMIC_TABLE_SIZE; + enc->hpe_buckets = buckets; + /* The initial value of the entry ID is completely arbitrary. As long as + * there are fewer than 2^32 dynamic table entries, the math to calculate + * the entry ID works. To prove to ourselves that the wraparound works + * and to have the unit tests cover it, we initialize the next ID so that + * it is just about to wrap around. + */ + enc->hpe_next_id = ~0 - 3; + enc->hpe_nbits = nbits; + enc->hpe_nelem = 0; + return 0; +} + + +void +lshpack_enc_cleanup (struct lshpack_enc *enc) +{ + struct lshpack_enc_table_entry *entry, *next; + for (entry = STAILQ_FIRST(&enc->hpe_all_entries); entry; entry = next) + { + next = STAILQ_NEXT(entry, ete_next_all); + free(entry); + } + free(enc->hpe_hist_buf); + free(enc->hpe_buckets); +} + + +static int +henc_use_hist (struct lshpack_enc *enc) +{ + unsigned hist_size; + + if (enc->hpe_hist_buf) + return 0; + + hist_size = henc_hist_size(INITIAL_DYNAMIC_TABLE_SIZE); + if (!hist_size) + return 0; + + enc->hpe_hist_buf = malloc(sizeof(enc->hpe_hist_buf[0]) * (hist_size + 1)); + if (!enc->hpe_hist_buf) + return -1; + + enc->hpe_hist_size = hist_size; + enc->hpe_flags |= LSHPACK_ENC_USE_HIST; + return 0; +} + + +int +lshpack_enc_use_hist (struct lshpack_enc *enc, int on) +{ + if (on) + return henc_use_hist(enc); + else + { + enc->hpe_flags &= ~LSHPACK_ENC_USE_HIST; + free(enc->hpe_hist_buf); + enc->hpe_hist_buf = NULL; + enc->hpe_hist_size = 0; + enc->hpe_hist_idx = 0; + enc->hpe_hist_wrapped = 0; + return 0; + } +} + + +int +lshpack_enc_hist_used (const struct lshpack_enc *enc) +{ + return (enc->hpe_flags & LSHPACK_ENC_USE_HIST) != 0; +} + + +#define LSHPACK_XXH_SEED 39378473 +#define XXH_NAMEVAL_WIDTH 9 +#define XXH_NAMEVAL_SHIFT 0 +#define XXH_NAME_WIDTH 9 +#define XXH_NAME_SHIFT 0 + +static const unsigned char nameval2id[ 1 << XXH_NAMEVAL_WIDTH ] = +{ + [150] = 1, [21] = 2, [439] = 3, [502] = 4, [367] = 5, + [360] = 6, [67] = 7, [342] = 8, [210] = 9, [224] = 10, + [457] = 11, [222] = 12, [161] = 13, [391] = 14, [279] = 15, + [408] = 16, [73] = 17, [468] = 18, [361] = 19, [325] = 20, + [229] = 21, [324] = 22, [188] = 23, [304] = 24, [262] = 25, + [221] = 26, [3] = 27, [293] = 28, [35] = 29, [47] = 30, + [445] = 31, [164] = 32, [463] = 33, [84] = 34, [510] = 35, + [133] = 36, [406] = 37, [307] = 38, [388] = 39, [205] = 40, + [228] = 41, [417] = 42, [70] = 43, [451] = 44, [444] = 45, + [176] = 46, [465] = 47, [272] = 48, [349] = 49, [31] = 50, + [75] = 51, [459] = 52, [217] = 53, [368] = 54, [399] = 55, + [142] = 56, [363] = 57, [492] = 58, [53] = 59, [425] = 60, + [186] = 61, +}; + +static const unsigned char name2id[ 1 << XXH_NAME_WIDTH ] = +{ + [347] = 1, [484] = 2, [397] = 4, [81] = 6, [83] = 8, + [150] = 15, [169] = 16, [211] = 17, [456] = 18, [248] = 19, + [59] = 20, [64] = 21, [481] = 22, [321] = 23, [498] = 24, + [144] = 25, [401] = 26, [382] = 27, [25] = 28, [140] = 29, + [358] = 30, [453] = 31, [216] = 32, [361] = 33, [442] = 34, + [253] = 35, [132] = 36, [95] = 37, [272] = 38, [13] = 39, + [190] = 40, [404] = 41, [84] = 42, [337] = 43, [181] = 44, + [210] = 45, [38] = 46, [69] = 47, [357] = 48, [276] = 49, + [266] = 50, [51] = 51, [24] = 52, [322] = 53, [225] = 54, + [318] = 55, [88] = 56, [352] = 57, [362] = 58, [317] = 59, + [178] = 60, [255] = 61, +}; + +//not find return 0, otherwise return the index +#if !LS_HPACK_EMIT_TEST_CODE +static +#endif + unsigned +lshpack_enc_get_static_nameval (const struct lsxpack_header *input) +{ + unsigned i; + + assert(input->name_len > 0); + assert(input->flags & LSXPACK_NAMEVAL_HASH); + i = (input->nameval_hash >> XXH_NAMEVAL_SHIFT) & ((1 << XXH_NAMEVAL_WIDTH) - 1); + if (nameval2id[i]) + { + i = nameval2id[i] - 1; + if (static_table[i].name_len == input->name_len + && static_table[i].val_len == input->val_len + && memcmp(lsxpack_header_get_name(input), static_table[i].name, input->name_len) == 0 + && memcmp(lsxpack_header_get_value(input), static_table[i].val, input->val_len) == 0) + { + return i + 1; + } + } + + return 0; +} + +#if !LS_HPACK_EMIT_TEST_CODE +static +#endif + unsigned +lshpack_enc_get_static_name (const struct lsxpack_header *input) +{ + unsigned i; + + assert(input->flags & LSXPACK_NAME_HASH); + i = (input->name_hash >> XXH_NAME_SHIFT) & ((1 << XXH_NAME_WIDTH) - 1); + if (name2id[i]) + { + i = name2id[i] - 1; + if (static_table[i].name_len == input->name_len + && memcmp(lsxpack_header_get_name(input), static_table[i].name, + input->name_len) == 0) + { + return i + 1; + } + } + + return 0; +} + + +static void +update_hash (struct lsxpack_header *input) +{ + if (!(input->flags & LSXPACK_NAME_HASH)) + input->name_hash = XXH32(lsxpack_header_get_name(input), + input->name_len, LSHPACK_XXH_SEED); + else + assert(input->name_hash == XXH32(lsxpack_header_get_name(input), + input->name_len, LSHPACK_XXH_SEED)); + + if (!(input->flags & LSXPACK_NAMEVAL_HASH)) + input->nameval_hash = XXH32(input->buf + input->val_offset, + input->val_len, input->name_hash); + else + assert(input->nameval_hash == XXH32(input->buf + input->val_offset, + input->val_len, input->name_hash)); + + input->flags |= (LSXPACK_NAME_HASH | LSXPACK_NAMEVAL_HASH); +} + + +unsigned +lshpack_enc_get_stx_tab_id (struct lsxpack_header *input) +{ + unsigned i; + + update_hash(input); + + i = (input->nameval_hash >> XXH_NAMEVAL_SHIFT) & ((1 << XXH_NAMEVAL_WIDTH) - 1); + if (nameval2id[i]) + { + i = nameval2id[i] - 1; + if (static_table[i].name_len == input->name_len + && static_table[i].val_len == input->val_len + && memcmp(lsxpack_header_get_name(input), static_table[i].name, + input->name_len) == 0 + && memcmp(input->buf + input->val_offset, static_table[i].val, + input->val_len) == 0) + { + return i + 1; + } + } + + i = (input->name_hash >> XXH_NAME_SHIFT) & ((1 << XXH_NAME_WIDTH) - 1); + if (name2id[i]) + { + i = name2id[i] - 1; + if (static_table[i].name_len == input->name_len + && memcmp(lsxpack_header_get_name(input), static_table[i].name, + input->name_len) == 0) + { + return i + 1; + } + } + + return 0; +} + + +/* Given a dynamic entry, return its table ID */ +static unsigned +henc_calc_table_id (const struct lshpack_enc *enc, + const struct lshpack_enc_table_entry *entry) +{ + return HPACK_STATIC_TABLE_SIZE + + (enc->hpe_next_id - entry->ete_id) + ; +} + + +static unsigned +henc_find_table_id (struct lshpack_enc *enc, lsxpack_header_t *input, + int *val_matched) +{ + struct lshpack_enc_table_entry *entry; + unsigned buckno, id; + const char *val_ptr = input->buf + input->val_offset; + const char *name; + unsigned int name_len; + + name_len = input->name_len; + name = lsxpack_header_get_name(input); + + /* First, look for a match in the static table: */ + if (input->hpack_index) + { + id = input->hpack_index - 1; +#ifndef NDEBUG + if (name_len) + { + lsxpack_header_t input_copy = *input; + const unsigned hpack_index = lshpack_enc_get_stx_tab_id(&input_copy); + assert(input_copy.hpack_index == hpack_index); + } +#endif + if (id <= LSHPACK_HDR_ACCEPT_ENCODING || input->val_len == 0) + { + if (static_table[id].val_len == input->val_len + && memcmp(val_ptr, static_table[id].val, input->val_len) == 0) + { + input->flags |= LSXPACK_HPACK_VAL_MATCHED; + *val_matched = 1; + return input->hpack_index; + } + } + if (!name_len) + { + name = static_table[id].name; + name_len = static_table[id].name_len; + } + + if (!(input->flags & LSXPACK_NAME_HASH)) + input->name_hash = static_table_name_hash[id]; + else + assert(input->name_hash == static_table_name_hash[id]); + if (!(input->flags & LSXPACK_NAMEVAL_HASH)) + input->nameval_hash = XXH32(val_ptr, input->val_len, + input->name_hash); + else + assert(input->nameval_hash == XXH32(val_ptr, input->val_len, + input->name_hash)); + input->flags |= (LSXPACK_NAME_HASH | LSXPACK_NAMEVAL_HASH); + } + else + { + update_hash(input); + input->hpack_index = lshpack_enc_get_static_nameval(input); + if (input->hpack_index != LSHPACK_HDR_UNKNOWN) + { + input->flags |= LSXPACK_HPACK_VAL_MATCHED; + *val_matched = 1; + return input->hpack_index; + } + } + + /* Search by name and value: */ + buckno = BUCKNO(enc->hpe_nbits, input->nameval_hash); + STAILQ_FOREACH(entry, &enc->hpe_buckets[buckno].by_nameval, + ete_next_nameval) + if (input->nameval_hash == entry->ete_nameval_hash && + name_len == entry->ete_name_len && + input->val_len == entry->ete_val_len && + 0 == memcmp(name, ETE_NAME(entry), name_len) && + 0 == memcmp(val_ptr, ETE_VALUE(entry), input->val_len)) + { + *val_matched = 1; + return henc_calc_table_id(enc, entry); + } + + /* Name/value match is not found, look for header: */ + if (input->hpack_index == LSHPACK_HDR_UNKNOWN) + input->hpack_index = lshpack_enc_get_static_name(input); + if (input->hpack_index != LSHPACK_HDR_UNKNOWN) + { + input->flags &= ~LSXPACK_HPACK_VAL_MATCHED; + return input->hpack_index; + } + + /* Search by name only: */ + buckno = BUCKNO(enc->hpe_nbits, input->name_hash); + STAILQ_FOREACH(entry, &enc->hpe_buckets[buckno].by_name, ete_next_name) + if (input->name_hash == entry->ete_name_hash && + input->name_len == entry->ete_name_len && + 0 == memcmp(name, ETE_NAME(entry), name_len)) + { + input->flags &= ~LSXPACK_HPACK_VAL_MATCHED; + return henc_calc_table_id(enc, entry); + } + + return 0; +} + + +#if !LS_HPACK_EMIT_TEST_CODE +static +#endif + unsigned char * +lshpack_enc_enc_int (unsigned char *dst, unsigned char *const end, + uint32_t value, uint8_t prefix_bits) +{ + unsigned char *const dst_orig = dst; + + /* This function assumes that at least one byte is available */ + assert(dst < end); + if (value < (uint32_t)(1 << prefix_bits) - 1) + *dst++ |= value; + else + { + *dst++ |= (1 << prefix_bits) - 1; + value -= (1 << prefix_bits) - 1; + while (value >= 128) + { + if (dst < end) + { + *dst++ = (0x80 | value); + value >>= 7; + } + else + return dst_orig; + } + if (dst < end) + *dst++ = value; + else + return dst_orig; + } + return dst; +} + + +/* This whole pragma business has to do with turning off uninitialized warnings. + * We do it for gcc and clang. Other compilers get slightly slower code, where + * unnecessary initialization is performed. + */ +#if __GNUC__ +#pragma GCC diagnostic ignored "-Wunknown-pragmas" +#if __clang__ +#pragma GCC diagnostic ignored "-Wunknown-warning-option" +#endif +#endif + + +int +lshpack_enc_huff_encode (const unsigned char *src, + const unsigned char *const src_end, unsigned char *const dst, int dst_len) +{ + unsigned char *p_dst = dst; + unsigned char *dst_end = p_dst + dst_len; + uintptr_t bits; /* OK not to initialize this variable */ + unsigned bits_used = 0, adj; + struct encode_el cur_enc_code; +#if __GNUC__ && (__clang__ || __GNUC__ >= 5) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#pragma GCC diagnostic ignored "-Wuninitialized" +#else + bits = 0; +#endif +#if LS_HPACK_USE_LARGE_TABLES + const struct henc *henc; + uint16_t idx; + + while (src + sizeof(bits) * 8 / 5 + sizeof(idx) < src_end + && p_dst + sizeof(bits) <= dst_end) + { + memcpy(&idx, src, 2); + henc = &hencs[idx]; + src += 2; + while (bits_used + henc->lens < sizeof(bits) * 8) + { + bits <<= henc->lens; + bits |= henc->code; + bits_used += henc->lens; + memcpy(&idx, src, 2); + henc = &hencs[idx]; + src += 2; + } + if (henc->lens < 64) + { + bits <<= sizeof(bits) * 8 - bits_used; + bits_used = henc->lens - (sizeof(bits) * 8 - bits_used); + bits |= henc->code >> bits_used; +#if UINTPTR_MAX == 18446744073709551615ull + *p_dst++ = bits >> 56; + *p_dst++ = bits >> 48; + *p_dst++ = bits >> 40; + *p_dst++ = bits >> 32; +#endif + *p_dst++ = bits >> 24; + *p_dst++ = bits >> 16; + *p_dst++ = bits >> 8; + *p_dst++ = bits; + bits = henc->code; /* OK not to clear high bits */ + } + else + { + src -= 2; + break; + } + } +#endif + + while (src != src_end) + { + cur_enc_code = encode_table[*src++]; + if (bits_used + cur_enc_code.bits < sizeof(bits) * 8) + { + bits <<= cur_enc_code.bits; + bits |= cur_enc_code.code; + bits_used += cur_enc_code.bits; + continue; + } + else if (p_dst + sizeof(bits) <= dst_end) + { + bits <<= sizeof(bits) * 8 - bits_used; + bits_used = cur_enc_code.bits - (sizeof(bits) * 8 - bits_used); + bits |= cur_enc_code.code >> bits_used; +#if UINTPTR_MAX == 18446744073709551615ull + *p_dst++ = bits >> 56; + *p_dst++ = bits >> 48; + *p_dst++ = bits >> 40; + *p_dst++ = bits >> 32; +#endif + *p_dst++ = bits >> 24; + *p_dst++ = bits >> 16; + *p_dst++ = bits >> 8; + *p_dst++ = bits; + bits = cur_enc_code.code; /* OK not to clear high bits */ + } + else + return -1; + } + + adj = bits_used + (-bits_used & 7); /* Round up to 8 */ + if (bits_used && p_dst + (adj >> 3) <= dst_end) + { + bits <<= -bits_used & 7; /* Align to byte boundary */ + bits |= ((1 << (-bits_used & 7)) - 1); /* EOF */ + switch (adj >> 3) + { /* Write out */ +#if UINTPTR_MAX == 18446744073709551615ull + case 8: *p_dst++ = bits >> 56; + FALL_THROUGH; + case 7: *p_dst++ = bits >> 48; + FALL_THROUGH; + case 6: *p_dst++ = bits >> 40; + FALL_THROUGH; + case 5: *p_dst++ = bits >> 32; + FALL_THROUGH; +#endif + case 4: *p_dst++ = bits >> 24; + FALL_THROUGH; + case 3: *p_dst++ = bits >> 16; + FALL_THROUGH; + case 2: *p_dst++ = bits >> 8; + FALL_THROUGH; + default: *p_dst++ = bits; + } + return p_dst - dst; + } + else if (p_dst + (adj >> 3) <= dst_end) + return p_dst - dst; + else + return -1; +#if __GNUC__ && (__clang__ || __GNUC__ >= 5) +#pragma GCC diagnostic pop +#endif +} + + +#if !LS_HPACK_EMIT_TEST_CODE +static +#endif + int +lshpack_enc_enc_str (unsigned char *const dst, size_t dst_len, + const unsigned char *str, unsigned str_len) +{ + unsigned char size_buf[4]; + unsigned char *p; + unsigned size_len; + int rc; + + if (dst_len > 1) + /* We guess that the string size fits into a single byte -- meaning + * compressed string of size 126 and smaller -- which is the normal + * case. Thus, we immediately write compressed string to the output + * buffer. If our guess is not correct, we fix it later. + */ + rc = lshpack_enc_huff_encode(str, str + str_len, dst + 1, dst_len - 1); + else if (dst_len == 1) + /* Here, the call can only succeed if the string to encode is empty. */ + rc = 0; + else + return -1; + + /* + * Check if need huffman encoding or not + * Comment: (size_t)rc <= str_len = means if same length, still use + * Huffman + * ^ + */ + if (rc > 0 && (size_t)rc <= str_len) + { + if (rc < 127) + { + *dst = 0x80 | rc; + return 1 + rc; + } + size_buf[0] = 0x80; + str_len = rc; + str = dst + 1; + } + else if (str_len <= dst_len - 1) + { + if (str_len < 127) + { + *dst = (unsigned char) str_len; + memcpy(dst + 1, str, str_len); + return 1 + str_len; + } + size_buf[0] = 0x00; + } + else + return -1; + + /* The guess of one-byte size was incorrect. Perform necessary + * adjustments. + */ + p = lshpack_enc_enc_int(size_buf, size_buf + sizeof(size_buf), str_len, 7); + if (p == size_buf) + return -1; + + size_len = p - size_buf; + assert(size_len > 1); + + /* Check if there is enough room in the output buffer for both + * encoded size and the string. + */ + if (size_len + str_len > dst_len) + return -1; + + memmove(dst + size_len, str, str_len); + memcpy(dst, size_buf, size_len); + return size_len + str_len; +} + + +static void +henc_drop_oldest_entry (struct lshpack_enc *enc) +{ + struct lshpack_enc_table_entry *entry; + unsigned buckno; + + entry = STAILQ_FIRST(&enc->hpe_all_entries); + assert(entry); + STAILQ_REMOVE_HEAD(&enc->hpe_all_entries, ete_next_all); + buckno = BUCKNO(enc->hpe_nbits, entry->ete_nameval_hash); + assert(entry == STAILQ_FIRST(&enc->hpe_buckets[buckno].by_nameval)); + STAILQ_REMOVE_HEAD(&enc->hpe_buckets[buckno].by_nameval, ete_next_nameval); + buckno = BUCKNO(enc->hpe_nbits, entry->ete_name_hash); + if (entry == STAILQ_FIRST(&enc->hpe_buckets[buckno].by_name)) + STAILQ_REMOVE_HEAD(&enc->hpe_buckets[buckno].by_name, ete_next_name); + + enc->hpe_cur_capacity -= DYNAMIC_ENTRY_OVERHEAD + entry->ete_name_len + + entry->ete_val_len; + --enc->hpe_nelem; + free(entry); +} + + +static void +henc_remove_overflow_entries (struct lshpack_enc *enc) +{ + while (enc->hpe_cur_capacity > enc->hpe_max_capacity) + henc_drop_oldest_entry(enc); +} + + +static int +henc_grow_tables (struct lshpack_enc *enc) +{ + struct lshpack_double_enc_head *new_buckets, *new[2]; + struct lshpack_enc_table_entry *entry; + unsigned n, old_nbits; + int idx; + + old_nbits = enc->hpe_nbits; + new_buckets = malloc(sizeof(enc->hpe_buckets[0]) + * N_BUCKETS(old_nbits + 1)); + if (!new_buckets) + return -1; + + for (n = 0; n < N_BUCKETS(old_nbits); ++n) + { + new[0] = &new_buckets[n]; + new[1] = &new_buckets[n + N_BUCKETS(old_nbits)]; + STAILQ_INIT(&new[0]->by_name); + STAILQ_INIT(&new[1]->by_name); + STAILQ_INIT(&new[0]->by_nameval); + STAILQ_INIT(&new[1]->by_nameval); + while ((entry = STAILQ_FIRST(&enc->hpe_buckets[n].by_name))) + { + STAILQ_REMOVE_HEAD(&enc->hpe_buckets[n].by_name, ete_next_name); + idx = (BUCKNO(old_nbits + 1, entry->ete_name_hash) + >> old_nbits) & 1; + STAILQ_INSERT_TAIL(&new[idx]->by_name, entry, ete_next_name); + } + while ((entry = STAILQ_FIRST(&enc->hpe_buckets[n].by_nameval))) + { + STAILQ_REMOVE_HEAD(&enc->hpe_buckets[n].by_nameval, + ete_next_nameval); + idx = (BUCKNO(old_nbits + 1, entry->ete_nameval_hash) + >> old_nbits) & 1; + STAILQ_INSERT_TAIL(&new[idx]->by_nameval, entry, + ete_next_nameval); + } + } + + free(enc->hpe_buckets); + enc->hpe_nbits = old_nbits + 1; + enc->hpe_buckets = new_buckets; + return 0; +} + + +#if !LS_HPACK_EMIT_TEST_CODE +static +#endif + int +lshpack_enc_push_entry (struct lshpack_enc *enc, + const struct lsxpack_header *input) +{ + unsigned buckno; + struct lshpack_enc_table_entry *entry; + size_t size; + const char *name; + unsigned int name_len; + + if (enc->hpe_nelem >= N_BUCKETS(enc->hpe_nbits) / 2 && + 0 != henc_grow_tables(enc)) + return -1; + name_len = input->name_len; + if (name_len == 0) + { + assert(input->hpack_index != LSHPACK_HDR_UNKNOWN); + name = static_table[input->hpack_index - 1].name; + name_len = static_table[input->hpack_index - 1].name_len; + } + else + name = lsxpack_header_get_name(input); + size = sizeof(*entry) + name_len + input->val_len; + entry = malloc(size); + if (!entry) + return -1; + + entry->ete_name_hash = input->name_hash; + entry->ete_nameval_hash = input->nameval_hash; + entry->ete_name_len = name_len; + entry->ete_val_len = input->val_len; + entry->ete_id = enc->hpe_next_id++; + memcpy(ETE_NAME(entry), name, name_len); + memcpy(ETE_VALUE(entry), input->buf + input->val_offset, input->val_len); + + STAILQ_INSERT_TAIL(&enc->hpe_all_entries, entry, ete_next_all); + buckno = BUCKNO(enc->hpe_nbits, input->nameval_hash); + STAILQ_INSERT_TAIL(&enc->hpe_buckets[buckno].by_nameval, entry, + ete_next_nameval); + if (input->hpack_index == LSHPACK_HDR_UNKNOWN) + { + buckno = BUCKNO(enc->hpe_nbits, input->name_hash); + STAILQ_INSERT_TAIL(&enc->hpe_buckets[buckno].by_name, entry, + ete_next_name); + } + enc->hpe_cur_capacity += DYNAMIC_ENTRY_OVERHEAD + name_len + + input->val_len; + ++enc->hpe_nelem; + henc_remove_overflow_entries(enc); + return 0; +} + + +static void +henc_resize_history (struct lshpack_enc *enc) +{ + uint32_t *hist_buf; + unsigned hist_size, first, count, i, j; + + hist_size = henc_hist_size(enc->hpe_max_capacity); + + if (hist_size == enc->hpe_hist_size) + return; + + if (hist_size == 0) + { + free(enc->hpe_hist_buf); + enc->hpe_hist_buf = NULL; + enc->hpe_hist_size = 0; + enc->hpe_hist_idx = 0; + enc->hpe_hist_wrapped = 0; + return; + } + + hist_buf = malloc(sizeof(hist_buf[0]) * (hist_size + 1)); + if (!hist_buf) + return; + + if (enc->hpe_hist_wrapped) + { + first = (enc->hpe_hist_idx + 1) % enc->hpe_hist_size; + count = enc->hpe_hist_size; + } + else + { + first = 0; + count = enc->hpe_hist_idx; + } + for (i = 0, j = 0; count > 0 && j < hist_size; ++i, ++j, --count) + hist_buf[j] = enc->hpe_hist_buf[ (first + i) % enc->hpe_hist_size ]; + enc->hpe_hist_size = hist_size; + enc->hpe_hist_idx = j % hist_size; + enc->hpe_hist_wrapped = enc->hpe_hist_idx == 0; + free(enc->hpe_hist_buf); + enc->hpe_hist_buf = hist_buf; +} + + +/* Returns true if `nameval_hash' was already in history, false otherwise. */ +static int +henc_hist_add (struct lshpack_enc *enc, uint32_t nameval_hash) +{ + unsigned last; + uint32_t *p; + + if (enc->hpe_hist_wrapped) + last = enc->hpe_hist_size; + else + last = enc->hpe_hist_idx; + + enc->hpe_hist_buf[ last ] = nameval_hash; + for (p = enc->hpe_hist_buf; *p != nameval_hash; ++p) + ; + enc->hpe_hist_buf[ enc->hpe_hist_idx ] = nameval_hash; + enc->hpe_hist_idx = (enc->hpe_hist_idx + 1) % enc->hpe_hist_size; + enc->hpe_hist_wrapped |= enc->hpe_hist_idx == 0; + + return p < enc->hpe_hist_buf + last; +} + + +unsigned char * +lshpack_enc_encode (struct lshpack_enc *enc, unsigned char *dst, + unsigned char *dst_end, lsxpack_header_t *input) +{ + //indexed_type: 0, Add, 1,: without, 2: never + static const char indexed_prefix_number[] = {0x40, 0x00, 0x10}; + unsigned char *const dst_org = dst; + int rc; + int val_matched = 0; + unsigned table_id; + + if (dst_end <= dst) + return dst_org; + + if (input->flags & LSXPACK_HPACK_VAL_MATCHED) + { + assert(input->hpack_index != LSHPACK_HDR_UNKNOWN); + assert(input->val_len == static_table[input->hpack_index - 1].val_len); + assert(memcmp(lsxpack_header_get_value(input), + static_table[input->hpack_index - 1].val, + input->val_len) == 0); + table_id = input->hpack_index; + val_matched = 1; + } + else + { + if (input->flags & LSXPACK_NEVER_INDEX) + input->indexed_type = 2; + table_id = henc_find_table_id(enc, input, &val_matched); + if (enc->hpe_hist_buf) + { + rc = henc_hist_add(enc, input->nameval_hash); + if (!rc && enc->hpe_hist_wrapped && input->indexed_type == 0) + input->indexed_type = 1; + } + } + + if (table_id > 0) + { + if (val_matched) + { + // LSXPACK_VAL_MATCHED MUST NOT set for dynamic table + // otherwise, it may cause trouble when feed the input to a different encoder. + if (table_id > HPACK_STATIC_TABLE_SIZE) + assert(!(input->flags & LSXPACK_HPACK_VAL_MATCHED)); + + *dst = 0x80; + dst = lshpack_enc_enc_int(dst, dst_end, table_id, 7); + /* No need to check return value: we pass it up as-is because + * the behavior is the same. + */ + return dst; + } + else + { + *dst = indexed_prefix_number[input->indexed_type]; + dst = lshpack_enc_enc_int(dst, dst_end, table_id, + ((input->indexed_type == 0) ? 6 : 4)); + if (dst == dst_org) + return dst_org; + } + } + else + { + assert(input->name_len > 0); + *dst++ = indexed_prefix_number[input->indexed_type]; + rc = lshpack_enc_enc_str(dst, dst_end - dst, + (unsigned char *)lsxpack_header_get_name(input), + input->name_len); + if (rc < 0) + return dst_org; //Failed to enc this header, return unchanged ptr. + dst += rc; + } + + rc = lshpack_enc_enc_str(dst, dst_end - dst, + (const unsigned char *)input->buf + input->val_offset, + input->val_len); + if (rc < 0) + return dst_org; //Failed to enc this header, return unchanged ptr. + dst += rc; + + if (input->indexed_type == 0) + { + rc = lshpack_enc_push_entry(enc, input); + if (rc != 0) + return dst_org; //Failed to enc this header, return unchanged ptr. + } + + return dst; +} + + +void +lshpack_enc_set_max_capacity (struct lshpack_enc *enc, unsigned max_capacity) +{ + enc->hpe_max_capacity = max_capacity; + henc_remove_overflow_entries(enc); + if (lshpack_enc_hist_used(enc)) + henc_resize_history(enc); +} + +#if LS_HPACK_EMIT_TEST_CODE +void +lshpack_enc_iter_init (struct lshpack_enc *enc, void **iter) +{ + *iter = STAILQ_FIRST(&enc->hpe_all_entries); +} + + +/* Returns 0 if entry is found */ +int +lshpack_enc_iter_next (struct lshpack_enc *enc, void **iter, + struct enc_dyn_table_entry *retval) +{ + const struct lshpack_enc_table_entry *entry; + + entry = *iter; + if (!entry) + return -1; + + *iter = STAILQ_NEXT(entry, ete_next_all); + + retval->name = ETE_NAME(entry); + retval->value = ETE_VALUE(entry); + retval->name_len = entry->ete_name_len; + retval->value_len = entry->ete_val_len; + retval->entry_id = henc_calc_table_id(enc, entry); + return 0; +} +#endif + + +/* Dynamic table entry: */ +struct dec_table_entry +{ + unsigned dte_name_len; + unsigned dte_val_len; +#if LSHPACK_DEC_CALC_HASH + uint32_t dte_name_hash; + uint32_t dte_nameval_hash; + enum { + DTEF_NAME_HASH = LSXPACK_NAME_HASH, + DTEF_NAMEVAL_HASH = LSXPACK_NAMEVAL_HASH, + } dte_flags:8; +#endif + uint8_t dte_name_idx; + char dte_buf[]; /* Contains both name and value */ +}; + +#define DTE_NAME(dte) ((dte)->dte_buf) +#define DTE_VALUE(dte) (&(dte)->dte_buf[(dte)->dte_name_len]) + +enum +{ + HPACK_HUFFMAN_FLAG_ACCEPTED = 0x01, + HPACK_HUFFMAN_FLAG_SYM = 0x02, + HPACK_HUFFMAN_FLAG_FAIL = 0x04, +}; + +struct decode_status +{ + uint8_t state; + uint8_t eos; +}; + + +void +lshpack_dec_init (struct lshpack_dec *dec) +{ + memset(dec, 0, sizeof(*dec)); + dec->hpd_max_capacity = INITIAL_DYNAMIC_TABLE_SIZE; + dec->hpd_cur_max_capacity = INITIAL_DYNAMIC_TABLE_SIZE; + lshpack_arr_init(&dec->hpd_dyn_table); +} + + +void +lshpack_dec_cleanup (struct lshpack_dec *dec) +{ + uintptr_t val; + + while (lshpack_arr_count(&dec->hpd_dyn_table) > 0) + { + val = lshpack_arr_pop(&dec->hpd_dyn_table); + free((struct dec_table_entry *) val); + } + lshpack_arr_cleanup(&dec->hpd_dyn_table); +} + + +/* Maximum number of bytes required to encode a 32-bit integer */ +#define LSHPACK_UINT32_ENC_SZ 6 + + +/* Assumption: we have at least one byte to work with */ +#if !LS_HPACK_EMIT_TEST_CODE +static +#endif + int +lshpack_dec_dec_int (const unsigned char **src_p, const unsigned char *src_end, + unsigned prefix_bits, uint32_t *value_p) +{ + const unsigned char *const orig_src = *src_p; + const unsigned char *src; + unsigned prefix_max, M; + uint32_t val, B; + + src = *src_p; + + prefix_max = (1 << prefix_bits) - 1; + val = *src++; + val &= prefix_max; + + if (val < prefix_max) + { + *src_p = src; + *value_p = val; + return 0; + } + + M = 0; + do + { + if (src < src_end) + { + B = *src++; + val = val + ((B & 0x7f) << M); + M += 7; + } + else if (src - orig_src < LSHPACK_UINT32_ENC_SZ) + return -1; + else + return -2; + } + while (B & 0x80); + + if (M <= 28 || (M == 35 && src[-1] <= 0xF && val - (src[-1] << 28) < val)) + { + *src_p = src; + *value_p = val; + return 0; + } + else + return -2; +} + + +static void +hdec_drop_oldest_entry (struct lshpack_dec *dec) +{ + struct dec_table_entry *entry; + entry = (void *) lshpack_arr_shift(&dec->hpd_dyn_table); + dec->hpd_cur_capacity -= DYNAMIC_ENTRY_OVERHEAD + entry->dte_name_len + + entry->dte_val_len; + ++dec->hpd_state; + free(entry); +} + + +static void +hdec_remove_overflow_entries (struct lshpack_dec *dec) +{ + while (dec->hpd_cur_capacity > dec->hpd_cur_max_capacity) + hdec_drop_oldest_entry(dec); +} + + +static void +hdec_update_max_capacity (struct lshpack_dec *dec, uint32_t new_capacity) +{ + dec->hpd_cur_max_capacity = new_capacity; + hdec_remove_overflow_entries(dec); +} + + +void +lshpack_dec_set_max_capacity (struct lshpack_dec *dec, unsigned max_capacity) +{ + dec->hpd_max_capacity = max_capacity; + hdec_update_max_capacity(dec, max_capacity); +} + + +static unsigned char * +hdec_huff_dec4bits (uint8_t src_4bits, unsigned char *dst, + struct decode_status *status) +{ + const struct decode_el cur_dec_code = + decode_tables[status->state][src_4bits]; + if (cur_dec_code.flags & HPACK_HUFFMAN_FLAG_FAIL) { + return NULL; //failed + } + if (cur_dec_code.flags & HPACK_HUFFMAN_FLAG_SYM) + { + *dst = cur_dec_code.sym; + dst++; + } + + status->state = cur_dec_code.state; + status->eos = ((cur_dec_code.flags & HPACK_HUFFMAN_FLAG_ACCEPTED) != 0); + return dst; +} + + +#if !LS_HPACK_USE_LARGE_TABLES +#define lshpack_dec_huff_decode_full lshpack_dec_huff_decode +#endif + +int +lshpack_dec_huff_decode_full (const unsigned char *src, int src_len, + unsigned char *dst, int dst_len) +{ + const unsigned char *p_src = src; + const unsigned char *const src_end = src + src_len; + unsigned char *p_dst = dst; + unsigned char *dst_end = dst + dst_len; + struct decode_status status = { 0, 1 }; + + while (p_src != src_end) + { + if (p_dst == dst_end) + return LSHPACK_ERR_MORE_BUF; + if ((p_dst = hdec_huff_dec4bits(*p_src >> 4, p_dst, &status)) + == NULL) + return -1; + if (p_dst == dst_end) + return LSHPACK_ERR_MORE_BUF; + if ((p_dst = hdec_huff_dec4bits(*p_src & 0xf, p_dst, &status)) + == NULL) + return -1; + ++p_src; + } + + if (!status.eos) + return -1; + + return p_dst - dst; +} + + +int +lshpack_dec_huff_decode (const unsigned char *src, int src_len, + unsigned char *dst, int dst_len); + + +//reutrn the length in the dst, also update the src +#if !LS_HPACK_EMIT_TEST_CODE +static +#endif + int +hdec_dec_str (unsigned char *dst, size_t dst_len, const unsigned char **src, + const unsigned char *src_end) +{ + if ((*src) == src_end) + return 0; + + int is_huffman = (*(*src) & 0x80); + uint32_t len; + if (0 != lshpack_dec_dec_int(src, src_end, 7, &len)) + return LSHPACK_ERR_BAD_DATA; //wrong int + + int ret = 0; + if ((uint32_t)(src_end - (*src)) < len) { + return LSHPACK_ERR_BAD_DATA; //wrong int + } + + if (is_huffman) + { + ret = lshpack_dec_huff_decode(*src, len, dst, dst_len); + if (ret < 0) + return ret; //Wrong code + + (*src) += len; + } + else + { + if (dst_len < len) + { + ret = dst_len - len; + if (ret > LSHPACK_ERR_MORE_BUF) + ret = LSHPACK_ERR_MORE_BUF; //dst not enough space + } + else + { + memcpy(dst, (*src), len); + (*src) += len; + ret = len; + } + } + + return ret; +} + + +/* hpd_dyn_table is a dynamic array. New entries are pushed onto it, + * while old entries are shifted from it. + */ +static struct dec_table_entry * +hdec_get_table_entry (struct lshpack_dec *dec, uint32_t index) +{ + uintptr_t val; + + index -= HPACK_STATIC_TABLE_SIZE; + if (index == 0 || index > lshpack_arr_count(&dec->hpd_dyn_table)) + return NULL; + + index = lshpack_arr_count(&dec->hpd_dyn_table) - index; + val = lshpack_arr_get(&dec->hpd_dyn_table, index); + return (struct dec_table_entry *) val; +} + + +#if !LS_HPACK_EMIT_TEST_CODE +static +#endif + int +lshpack_dec_push_entry (struct lshpack_dec *dec, + const struct lsxpack_header *xhdr) +{ + struct dec_table_entry *entry; + unsigned name_len, val_len; + size_t size; + + name_len = xhdr->name_len; + val_len = xhdr->val_len; + + size = sizeof(*entry) + name_len + val_len; + entry = malloc(size); + if (!entry) + return -1; + + if (0 != lshpack_arr_push(&dec->hpd_dyn_table, (uintptr_t) entry)) + { + free(entry); + return -1; + } + ++dec->hpd_state; + dec->hpd_cur_capacity += DYNAMIC_ENTRY_OVERHEAD + name_len + val_len; + entry->dte_name_len = name_len; + entry->dte_val_len = val_len; + entry->dte_name_idx = xhdr->hpack_index; +#if LSHPACK_DEC_CALC_HASH + entry->dte_flags = xhdr->flags & (LSXPACK_NAME_HASH|LSXPACK_NAMEVAL_HASH); + entry->dte_name_hash = xhdr->name_hash; + entry->dte_nameval_hash = xhdr->nameval_hash; +#endif + memcpy(DTE_NAME(entry), lsxpack_header_get_name(xhdr), name_len); + memcpy(DTE_VALUE(entry), lsxpack_header_get_value(xhdr), val_len); + + hdec_remove_overflow_entries(dec); + return 0; +} + + +static int +lshpack_dec_copy_value (lsxpack_header_t *output, char *dest, const char *val, + unsigned val_len) +{ + if (val_len + LSHPACK_DEC_HTTP1X_EXTRA > (unsigned)output->val_len) + return LSHPACK_ERR_MORE_BUF; + output->val_offset = output->name_offset + output->name_len + + LSHPACK_DEC_HTTP1X_EXTRA; + + assert(dest == output->buf + output->val_offset); + output->val_len = val_len; + memcpy(dest, val, output->val_len); + dest += output->val_len; +#if LSHPACK_DEC_HTTP1X_OUTPUT + *dest++ = '\r'; + *dest++ = '\n'; +#endif + return 0; +} + + +static int +lshpack_dec_copy_name (lsxpack_header_t *output, char **dest, const char *name, + unsigned name_len) +{ + if (name_len + LSHPACK_DEC_HTTP1X_EXTRA > (unsigned)output->val_len) + return LSHPACK_ERR_MORE_BUF; + output->val_len -= name_len + LSHPACK_DEC_HTTP1X_EXTRA; + output->name_len = name_len; + memcpy(*dest, name, name_len); + *dest += name_len; +#if LSHPACK_DEC_HTTP1X_OUTPUT + *(*dest)++ = ':'; + *(*dest)++ = ' '; +#endif + return 0; +} + + +enum +{ + LSHPACK_ADD_INDEX = 0, + LSHPACK_NO_INDEX = 1, + LSHPACK_NEVER_INDEX = 2, + LSHPACK_VAL_INDEX = 3, +}; + + +int +lshpack_dec_decode (struct lshpack_dec *dec, + const unsigned char **src, const unsigned char *src_end, + struct lsxpack_header *output) +{ + struct dec_table_entry *entry; + uint32_t index, new_capacity; + int indexed_type, len; + const unsigned char *s; + size_t buf_len = output->val_len; + size_t extra_buf = 0; + + if ((*src) == src_end) + return LSHPACK_ERR_BAD_DATA; + + buf_len = output->val_len; + extra_buf = 0; + s = *src; + while ((*s & 0xe0) == 0x20) //001 xxxxx + { + if (0 != lshpack_dec_dec_int(&s, src_end, 5, &new_capacity)) + return LSHPACK_ERR_BAD_DATA; + if (new_capacity > dec->hpd_max_capacity) + return LSHPACK_ERR_BAD_DATA; + hdec_update_max_capacity(dec, new_capacity); + if (s == src_end) + return LSHPACK_ERR_BAD_DATA; + } + + /* lshpack_dec_dec_int() sets `index' and advances `src'. If we do not + * call it, we set `index' and advance `src' ourselves: + */ + if (*s & 0x80) //1 xxxxxxx + { + if (0 != lshpack_dec_dec_int(&s, src_end, 7, &index)) + return LSHPACK_ERR_BAD_DATA; + if (index == 0) + return LSHPACK_ERR_BAD_DATA; + indexed_type = LSHPACK_VAL_INDEX; //need to parse value + } + else if (*s > 0x40) //01 xxxxxx + { + if (0 != lshpack_dec_dec_int(&s, src_end, 6, &index)) + return LSHPACK_ERR_BAD_DATA; + + indexed_type = LSHPACK_ADD_INDEX; + } + else if (*s == 0x40) //custmized //0100 0000 + { + indexed_type = LSHPACK_ADD_INDEX; + index = LSHPACK_HDR_UNKNOWN; + ++s; + } + + //Never indexed + else if (*s == 0x10) //00010000 + { + indexed_type = LSHPACK_NEVER_INDEX; + output->flags |= LSXPACK_NEVER_INDEX; + index = LSHPACK_HDR_UNKNOWN; + ++s; + } + else if ((*s & 0xf0) == 0x10) //0001 xxxx + { + if (0 != lshpack_dec_dec_int(&s, src_end, 4, &index)) + return LSHPACK_ERR_BAD_DATA; + + indexed_type = LSHPACK_NEVER_INDEX; + output->flags |= LSXPACK_NEVER_INDEX; + } + + //without indexed + else if (*s == 0x00) //0000 0000 + { + indexed_type = LSHPACK_NO_INDEX; + index = LSHPACK_HDR_UNKNOWN; + ++s; + } + else // 0000 xxxx + { + if (0 != lshpack_dec_dec_int(&s, src_end, 4, &index)) + return LSHPACK_ERR_BAD_DATA; + + indexed_type = LSHPACK_NO_INDEX; + } + + if (index == LSHPACK_HDR_UNKNOWN && s == src_end) + { + return LSHPACK_ERR_BAD_DATA; + } + + if (index != LSHPACK_HDR_UNKNOWN && index <= LSHPACK_HDR_WWW_AUTHENTICATE) + { + output->hpack_index = index; + } + + char *name = output->buf + output->name_offset; + if (index > 0) + { + if (index <= HPACK_STATIC_TABLE_SIZE) //static table + { + if (lshpack_dec_copy_name(output, &name, + static_table[index - 1].name, + static_table[index - 1].name_len) == LSHPACK_ERR_MORE_BUF) + { + extra_buf = static_table[index - 1].name_len + + LSHPACK_DEC_HTTP1X_EXTRA; + goto need_more_buf; + } + output->flags |= LSXPACK_NAME_HASH; + output->name_hash = static_table_name_hash[index - 1]; + + if (indexed_type == LSHPACK_VAL_INDEX) + { + if (lshpack_dec_copy_value(output, name, + static_table[index - 1].val, + static_table[index - 1].val_len) == 0) + { + output->flags |= LSXPACK_NAMEVAL_HASH; + output->nameval_hash = static_table_nameval_hash[index - 1]; + goto decode_end; + } + else + { + extra_buf = static_table[index - 1].val_len + + LSHPACK_DEC_HTTP1X_EXTRA; + goto need_more_buf; + } + } + } + else + { + entry = hdec_get_table_entry(dec, index); + if (entry == NULL) + return LSHPACK_ERR_BAD_DATA; + if (lshpack_dec_copy_name(output, &name, DTE_NAME(entry), + entry->dte_name_len) == LSHPACK_ERR_MORE_BUF) + { + extra_buf = entry->dte_name_len + LSHPACK_DEC_HTTP1X_EXTRA; + goto need_more_buf; + } + + if (entry->dte_name_idx) + output->hpack_index = entry->dte_name_idx; + else + output->hpack_index = LSHPACK_HDR_UNKNOWN; +#if LSHPACK_DEC_CALC_HASH + output->flags |= entry->dte_flags & DTEF_NAME_HASH; + output->name_hash = entry->dte_name_hash; +#endif + if (indexed_type == LSHPACK_VAL_INDEX) + { + if (lshpack_dec_copy_value(output, name, DTE_VALUE(entry), + entry->dte_val_len) == 0) + { +#if LSHPACK_DEC_CALC_HASH + output->flags |= entry->dte_flags & DTEF_NAMEVAL_HASH; + output->nameval_hash = entry->dte_nameval_hash; +#endif + goto decode_end; + } + else + { + extra_buf = entry->dte_val_len + LSHPACK_DEC_HTTP1X_EXTRA; + goto need_more_buf; + } + } + } + } + else + { + len = hdec_dec_str((unsigned char *)name, output->val_len, + &s, src_end); + if (len < 0) + { + if (len <= LSHPACK_ERR_MORE_BUF) + { + extra_buf = -len; + goto need_more_buf; + } + return len; //error + } + if (len > UINT16_MAX) + return LSHPACK_ERR_TOO_LARGE; + while(len > 0 && isspace(*(name + len - 1))) + --len; + if (len == 0) + return LSHPACK_ERR_BAD_DATA; + +#if LSHPACK_DEC_CALC_HASH + output->flags |= LSXPACK_NAME_HASH; + output->name_hash = XXH32(name, (size_t) len, LSHPACK_XXH_SEED); +#endif + output->name_len = len; + name += output->name_len; +#if LSHPACK_DEC_HTTP1X_OUTPUT + if (output->name_len + 2 <= output->val_len) + { + *name++ = ':'; + *name++ = ' '; + } + else + { + extra_buf = 2; + goto need_more_buf; + } +#endif + output->val_len -= len + LSHPACK_DEC_HTTP1X_EXTRA; + } + + len = hdec_dec_str((unsigned char *)name, output->val_len, &s, src_end); + if (len < 0) + { + if (len <= LSHPACK_ERR_MORE_BUF) + { + extra_buf = -len; + goto need_more_buf; + } + return len; //error + } + if (len > UINT16_MAX) + return LSHPACK_ERR_TOO_LARGE; +#if LSHPACK_DEC_CALC_HASH + assert(output->flags & LSXPACK_NAME_HASH); + output->flags |= LSXPACK_NAMEVAL_HASH; + output->nameval_hash = XXH32(name, (size_t) len, output->name_hash); +#endif +#if LSHPACK_DEC_HTTP1X_OUTPUT + if ((unsigned) len + 2 <= output->val_len) + memcpy(name + len, "\r\n", 2); + else + { + extra_buf = 2; + goto need_more_buf; + } +#endif + output->val_offset = output->name_offset + output->name_len + + LSHPACK_DEC_HTTP1X_EXTRA; + output->val_len = len; + + if (indexed_type == LSHPACK_ADD_INDEX && + 0 != lshpack_dec_push_entry(dec, output)) + return LSHPACK_ERR_BAD_DATA; //error +decode_end: + *src = s; +#if LSHPACK_DEC_HTTP1X_OUTPUT + output->dec_overhead = 4; +#endif + return 0; +need_more_buf: + buf_len += extra_buf; + output->val_len = buf_len; + return LSHPACK_ERR_MORE_BUF; +} + + +#if LS_HPACK_USE_LARGE_TABLES +#define SHORTEST_CODE 5 + + +/* The decoder is optimized for the common case. Most of the time, we decode + * data whose encoding is 16 bits or shorter. This lets us use a 64 KB table + * indexed by two bytes of input and outputs 1, 2, or 3 bytes at a time. + * + * In the case a longer code is encoutered, we fall back to the original + * Huffman decoder that supports all code lengths. + */ +int +lshpack_dec_huff_decode (const unsigned char *src, int src_len, + unsigned char *dst, int dst_len) +{ + unsigned char *const orig_dst = dst; + const unsigned char *const src_end = src + src_len; + unsigned char *const dst_end = dst + dst_len; + uintptr_t buf; /* OK not to initialize the buffer */ + unsigned avail_bits, len; + struct hdec hdec; + uint16_t idx; + int r; + +#if __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#pragma GCC diagnostic ignored "-Wuninitialized" +#else + buf = 0; +#endif + + avail_bits = 0; + while (1) + { + if (src + sizeof(buf) <= src_end) + { + len = (sizeof(buf) * 8 - avail_bits) >> 3; + avail_bits += len << 3; + switch (len) + { +#if UINTPTR_MAX == 18446744073709551615ull + case 8: + buf <<= 8; + buf |= (uintptr_t) *src++; + FALL_THROUGH; + case 7: + buf <<= 8; + buf |= (uintptr_t) *src++; + FALL_THROUGH; + default: + buf <<= 48; + buf |= (uintptr_t) *src++ << 40; + buf |= (uintptr_t) *src++ << 32; + buf |= (uintptr_t) *src++ << 24; + buf |= (uintptr_t) *src++ << 16; +#else + FALL_THROUGH; + case 4: + buf <<= 8; + buf |= (uintptr_t) *src++; + FALL_THROUGH; + case 3: + buf <<= 8; + buf |= (uintptr_t) *src++; + FALL_THROUGH; + default: + buf <<= 16; +#endif + buf |= (uintptr_t) *src++ << 8; + buf |= (uintptr_t) *src++ << 0; + } + } + else if (src < src_end) + do + { + buf <<= 8; + buf |= (uintptr_t) *src++; + avail_bits += 8; + } + while (src < src_end && avail_bits <= sizeof(buf) * 8 - 8); + else + break; /* Normal case terminating condition: out of input */ + + if (dst_end - dst >= (ptrdiff_t) (8 * sizeof(buf) / SHORTEST_CODE) + && avail_bits >= 16) + { + /* Fast path: don't check destination bounds */ + do + { + idx = buf >> (avail_bits - 16); + hdec = hdecs[idx]; + dst[0] = hdec.out[0]; + dst[1] = hdec.out[1]; + dst[2] = hdec.out[2]; + dst += hdec.lens & 3; + avail_bits -= hdec.lens >> 2; + } + while (avail_bits >= 16 && hdec.lens); + if (avail_bits < 16) + continue; + goto slow_path; + } + else + while (avail_bits >= 16) + { + idx = buf >> (avail_bits - 16); + hdec = hdecs[idx]; + len = hdec.lens & 3; + if (len && dst + len <= dst_end) + { + switch (len) + { + case 3: + *dst++ = hdec.out[0]; + *dst++ = hdec.out[1]; + *dst++ = hdec.out[2]; + break; + case 2: + *dst++ = hdec.out[0]; + *dst++ = hdec.out[1]; + break; + default: + *dst++ = hdec.out[0]; + break; + } + avail_bits -= hdec.lens >> 2; + } + else if (dst + len > dst_end) + { + r = dst_end - dst - len; + if (r > LSHPACK_ERR_MORE_BUF) + r = LSHPACK_ERR_MORE_BUF; + return r; + } + else + goto slow_path; + } + } + + if (avail_bits >= SHORTEST_CODE) + { + idx = buf << (16 - avail_bits); + idx |= (1 << (16 - avail_bits)) - 1; /* EOF */ + if (idx == 0xFFFF && avail_bits < 8) + goto end; + /* If a byte or more of input is left, this mean there is a valid + * encoding, not just EOF. + */ + hdec = hdecs[idx]; + len = hdec.lens & 3; + if (((unsigned) hdec.lens >> 2) > avail_bits) + return -1; + if (len && dst + len <= dst_end) + { + switch (len) + { + case 3: + *dst++ = hdec.out[0]; + *dst++ = hdec.out[1]; + *dst++ = hdec.out[2]; + break; + case 2: + *dst++ = hdec.out[0]; + *dst++ = hdec.out[1]; + break; + default: + *dst++ = hdec.out[0]; + break; + } + avail_bits -= hdec.lens >> 2; + } + else if (dst + len > dst_end) + { + r = dst_end - dst - len; + if (r > LSHPACK_ERR_MORE_BUF) + r = LSHPACK_ERR_MORE_BUF; + return r; + } + else + /* This must be an invalid code, otherwise it would have fit */ + return -1; + } + + if (avail_bits > 0) + { + if (((1u << avail_bits) - 1) != (buf & ((1u << avail_bits) - 1))) + return -1; /* Not EOF as expected */ + } +#if __GNUC__ +#pragma GCC diagnostic pop +#endif + + end: + return dst - orig_dst; + + slow_path: + /* Find previous byte boundary and finish decoding thence. */ + while ((avail_bits & 7) && dst > orig_dst) + avail_bits += encode_table[ *--dst ].bits; + assert((avail_bits & 7) == 0); + src -= avail_bits >> 3; + r = lshpack_dec_huff_decode_full(src, src_end - src, dst, dst_end - dst); + if (r >= 0) + return dst - orig_dst + r; + else + return r; +} +#endif +#if __GNUC__ +#pragma GCC diagnostic pop /* -Wunknown-pragmas */ +#endif diff --git a/external/lsquic/src/lshpack/lshpack.h b/external/lsquic/src/lshpack/lshpack.h new file mode 100644 index 0000000..3f90960 --- /dev/null +++ b/external/lsquic/src/lshpack/lshpack.h @@ -0,0 +1,295 @@ +/* +MIT License + +Copyright (c) 2018 - 2023 LiteSpeed Technologies Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#ifndef LITESPEED_HPACK_H +#define LITESPEED_HPACK_H 1 + + +#include +#include +#include +#include "lsxpack_header.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define LSHPACK_MAJOR_VERSION 2 +#define LSHPACK_MINOR_VERSION 3 +#define LSHPACK_PATCH_VERSION 4 + +#define lshpack_strlen_t lsxpack_strlen_t +#define LSHPACK_MAX_STRLEN LSXPACK_MAX_STRLEN + +#ifndef LSHPACK_DEC_HTTP1X_OUTPUT +#define LSHPACK_DEC_HTTP1X_OUTPUT 1 +#endif +#ifndef LSHPACK_DEC_CALC_HASH +#define LSHPACK_DEC_CALC_HASH 1 +#endif + +struct lshpack_enc; +struct lshpack_dec; + +enum lshpack_static_hdr_idx +{ + LSHPACK_HDR_UNKNOWN, + LSHPACK_HDR_AUTHORITY, + LSHPACK_HDR_METHOD_GET, + LSHPACK_HDR_METHOD_POST, + LSHPACK_HDR_PATH, + LSHPACK_HDR_PATH_INDEX_HTML, + LSHPACK_HDR_SCHEME_HTTP, + LSHPACK_HDR_SCHEME_HTTPS, + LSHPACK_HDR_STATUS_200, + LSHPACK_HDR_STATUS_204, + LSHPACK_HDR_STATUS_206, + LSHPACK_HDR_STATUS_304, + LSHPACK_HDR_STATUS_400, + LSHPACK_HDR_STATUS_404, + LSHPACK_HDR_STATUS_500, + LSHPACK_HDR_ACCEPT_CHARSET, + LSHPACK_HDR_ACCEPT_ENCODING, + LSHPACK_HDR_ACCEPT_LANGUAGE, + LSHPACK_HDR_ACCEPT_RANGES, + LSHPACK_HDR_ACCEPT, + LSHPACK_HDR_ACCESS_CONTROL_ALLOW_ORIGIN, + LSHPACK_HDR_AGE, + LSHPACK_HDR_ALLOW, + LSHPACK_HDR_AUTHORIZATION, + LSHPACK_HDR_CACHE_CONTROL, + LSHPACK_HDR_CONTENT_DISPOSITION, + LSHPACK_HDR_CONTENT_ENCODING, + LSHPACK_HDR_CONTENT_LANGUAGE, + LSHPACK_HDR_CONTENT_LENGTH, + LSHPACK_HDR_CONTENT_LOCATION, + LSHPACK_HDR_CONTENT_RANGE, + LSHPACK_HDR_CONTENT_TYPE, + LSHPACK_HDR_COOKIE, + LSHPACK_HDR_DATE, + LSHPACK_HDR_ETAG, + LSHPACK_HDR_EXPECT, + LSHPACK_HDR_EXPIRES, + LSHPACK_HDR_FROM, + LSHPACK_HDR_HOST, + LSHPACK_HDR_IF_MATCH, + LSHPACK_HDR_IF_MODIFIED_SINCE, + LSHPACK_HDR_IF_NONE_MATCH, + LSHPACK_HDR_IF_RANGE, + LSHPACK_HDR_IF_UNMODIFIED_SINCE, + LSHPACK_HDR_LAST_MODIFIED, + LSHPACK_HDR_LINK, + LSHPACK_HDR_LOCATION, + LSHPACK_HDR_MAX_FORWARDS, + LSHPACK_HDR_PROXY_AUTHENTICATE, + LSHPACK_HDR_PROXY_AUTHORIZATION, + LSHPACK_HDR_RANGE, + LSHPACK_HDR_REFERER, + LSHPACK_HDR_REFRESH, + LSHPACK_HDR_RETRY_AFTER, + LSHPACK_HDR_SERVER, + LSHPACK_HDR_SET_COOKIE, + LSHPACK_HDR_STRICT_TRANSPORT_SECURITY, + LSHPACK_HDR_TRANSFER_ENCODING, + LSHPACK_HDR_USER_AGENT, + LSHPACK_HDR_VARY, + LSHPACK_HDR_VIA, + LSHPACK_HDR_WWW_AUTHENTICATE, + LSHPACK_HDR_TOBE_INDEXED = 255 +}; + +#define LSHPACK_MAX_INDEX 61 + +#define LSHPACK_ERR_MORE_BUF (-3) +#define LSHPACK_ERR_TOO_LARGE (-2) +#define LSHPACK_ERR_BAD_DATA (-1) +#define LSHPACK_OK (0) + +/** + * Initialization routine allocates memory. -1 is returned if memory + * could not be allocated. 0 is returned on success. + */ +int +lshpack_enc_init (struct lshpack_enc *); + +/** + * Clean up HPACK encoder, freeing all allocated memory. + */ +void +lshpack_enc_cleanup (struct lshpack_enc *); + +/** + * @brief Encode one name/value pair + * + * @param[in,out] henc - A pointer to a valid HPACK API struct + * @param[out] dst - A pointer to destination buffer + * @param[out] dst_end - A pointer to end of destination buffer + * @param[in] input - Header to encode + * + * @return The (possibly advanced) dst pointer. If the destination + * pointer was not advanced, an error must have occurred. + */ +unsigned char * +lshpack_enc_encode (struct lshpack_enc *henc, unsigned char *dst, + unsigned char *dst_end, struct lsxpack_header *input); + +void +lshpack_enc_set_max_capacity (struct lshpack_enc *, unsigned); + +/** + * Turn history on or off. Turning history on may fail (malloc), in + * which case -1 is returned. + */ +int +lshpack_enc_use_hist (struct lshpack_enc *, int on); + +/** + * Return true if history is used, false otherwise. By default, + * history is off. + */ +int +lshpack_enc_hist_used (const struct lshpack_enc *); + +/** + * Initialize HPACK decoder structure. + */ +void +lshpack_dec_init (struct lshpack_dec *); + +/** + * Clean up HPACK decoder structure, freeing all allocated memory. + */ +void +lshpack_dec_cleanup (struct lshpack_dec *); + +/* + * Returns 0 on success, a negative value on failure. + * + * If 0 is returned, `src' is advanced. Calling with a zero-length input + * buffer results in an error. + * + * To calculate number of bytes written to the output buffer: + * output->name_len + output->val_len + lshpack_dec_extra_bytes(dec) + */ +int +lshpack_dec_decode (struct lshpack_dec *dec, + const unsigned char **src, const unsigned char *src_end, + struct lsxpack_header *output); + +/* Return number of extra bytes per header */ +#if LSHPACK_DEC_HTTP1X_OUTPUT +#define LSHPACK_DEC_HTTP1X_EXTRA (2) +#define lshpack_dec_extra_bytes(dec_) (4) +#else +#define LSHPACK_DEC_HTTP1X_EXTRA (0) +#define lshpack_dec_extra_bytes(dec_) (0) +#endif + +void +lshpack_dec_set_max_capacity (struct lshpack_dec *, unsigned); + +/* Some internals follow. Struct definitions are exposed to save a malloc. + * These structures are not very complicated. + */ + +#ifdef __OpenBSD__ +#define STAILQ_HEAD SIMPLEQ_HEAD +#define STAILQ_ENTRY SIMPLEQ_ENTRY +#define STAILQ_INIT SIMPLEQ_INIT +#define STAILQ_INSERT_TAIL SIMPLEQ_INSERT_TAIL +#define STAILQ_EMPTY SIMPLEQ_EMPTY +#define STAILQ_FIRST SIMPLEQ_FIRST +#define STAILQ_NEXT SIMPLEQ_NEXT +#define STAILQ_REMOVE_HEAD SIMPLEQ_REMOVE_HEAD +#define STAILQ_FOREACH SIMPLEQ_FOREACH +#endif + +#ifndef STAILQ_FOREACH +#define STAILQ_FOREACH(var, head, field) \ + for((var) = STAILQ_FIRST((head)); \ + (var); \ + (var) = STAILQ_NEXT((var), field)) +#endif + +struct lshpack_enc_table_entry; + +STAILQ_HEAD(lshpack_enc_head, lshpack_enc_table_entry); +struct lshpack_double_enc_head; + +struct lshpack_enc +{ + unsigned hpe_cur_capacity; + unsigned hpe_max_capacity; + + /* Each new dynamic table entry gets the next number. It is used to + * calculate the entry's position in the decoder table without having + * to maintain an actual array. + */ + unsigned hpe_next_id; + + /* Dynamic table entries (struct enc_table_entry) live in two hash + * tables: name/value hash table and name hash table. These tables + * are the same size. + */ + unsigned hpe_nelem; + unsigned hpe_nbits; + struct lshpack_enc_head + hpe_all_entries; + struct lshpack_double_enc_head + *hpe_buckets; + + uint32_t *hpe_hist_buf; + unsigned hpe_hist_size, hpe_hist_idx; + int hpe_hist_wrapped; + enum { + LSHPACK_ENC_USE_HIST = 1 << 0, + } hpe_flags; +}; + +struct lshpack_arr +{ + unsigned nalloc, + nelem, + off; + uintptr_t *els; +}; + +struct lshpack_dec +{ + struct lshpack_arr hpd_dyn_table; + unsigned hpd_max_capacity; /* Maximum set by caller */ + unsigned hpd_cur_max_capacity; /* Adjusted at runtime */ + unsigned hpd_cur_capacity; + unsigned hpd_state; +}; + +/* This function may update hash values and flags */ +unsigned +lshpack_enc_get_stx_tab_id (struct lsxpack_header *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/external/lsquic/src/lshpack/lsxpack_header.h b/external/lsquic/src/lshpack/lsxpack_header.h new file mode 100644 index 0000000..c33472e --- /dev/null +++ b/external/lsquic/src/lshpack/lsxpack_header.h @@ -0,0 +1,169 @@ +#ifndef LSXPACK_HEADER_H_v208 +#define LSXPACK_HEADER_H_v208 + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef LSXPACK_MAX_STRLEN +#define LSXPACK_MAX_STRLEN UINT16_MAX +#endif + +typedef int32_t lsxpack_offset_t; +#if LSXPACK_MAX_STRLEN == UINT16_MAX +typedef uint16_t lsxpack_strlen_t; +#elif LSXPACK_MAX_STRLEN == UINT32_MAX +typedef uint32_t lsxpack_strlen_t; +#else +#error unexpected LSXPACK_MAX_STRLEN +#endif + +#define LSXPACK_DEL ((char *)NULL) + +enum lsxpack_flag +{ + LSXPACK_HPACK_VAL_MATCHED = 1, + LSXPACK_QPACK_IDX = 2, + LSXPACK_APP_IDX = 4, + LSXPACK_NAME_HASH = 8, + LSXPACK_NAMEVAL_HASH = 16, + LSXPACK_VAL_MATCHED = 32, + LSXPACK_NEVER_INDEX = 64, +}; + +/** + * When header are decoded, it should be stored to @buf starting from @name_offset, + * : \r\n + * So, it can be used directly as HTTP/1.1 header. there are 4 extra characters + * added. + * + * limitation: we currently does not support total header size > 64KB. + */ + +struct lsxpack_header +{ + char *buf; /* the buffer for headers */ + uint32_t name_hash; /* hash value for name */ + uint32_t nameval_hash; /* hash value for name + value */ + lsxpack_offset_t name_offset; /* the offset for name in the buffer */ + lsxpack_offset_t val_offset; /* the offset for value in the buffer */ + lsxpack_strlen_t name_len; /* the length of name */ + lsxpack_strlen_t val_len; /* the length of value */ + uint16_t chain_next_idx; /* mainly for cookie value chain */ + uint8_t hpack_index; /* HPACK static table index */ + uint8_t qpack_index; /* QPACK static table index */ + uint8_t app_index; /* APP header index */ + enum lsxpack_flag flags:8; /* combination of lsxpack_flag */ + uint8_t indexed_type; /* control to disable index or not */ + uint8_t dec_overhead; /* num of extra bytes written to decoded buffer */ +}; + +typedef struct lsxpack_header lsxpack_header_t; + + +static inline void +lsxpack_header_set_idx(lsxpack_header_t *hdr, int hpack_idx, + const char *val, size_t val_len) +{ + memset(hdr, 0, sizeof(*hdr)); + hdr->buf = (char *)val; + hdr->hpack_index = (uint8_t)hpack_idx; + assert(hpack_idx != 0); + assert(val_len <= LSXPACK_MAX_STRLEN); + hdr->val_len = (lsxpack_strlen_t)val_len; +} + + +static inline void +lsxpack_header_set_qpack_idx(lsxpack_header_t *hdr, int qpack_idx, + const char *val, size_t val_len) +{ + memset(hdr, 0, sizeof(*hdr)); + hdr->buf = (char *)val; + hdr->qpack_index = (uint8_t)qpack_idx; + assert(qpack_idx != -1); + hdr->flags = LSXPACK_QPACK_IDX; + assert(val_len <= LSXPACK_MAX_STRLEN); + hdr->val_len = (lsxpack_strlen_t)val_len; +} + + +static inline void +lsxpack_header_set_offset(lsxpack_header_t *hdr, const char *buf, + size_t name_offset, size_t name_len, + size_t val_len) +{ + memset(hdr, 0, sizeof(*hdr)); + hdr->buf = (char *)buf; + hdr->name_offset = (lsxpack_offset_t)name_offset; + assert(name_len <= LSXPACK_MAX_STRLEN); + hdr->name_len = (lsxpack_strlen_t)name_len; + assert(name_offset + name_len + 2 <= LSXPACK_MAX_STRLEN); + hdr->val_offset = (lsxpack_offset_t)(name_offset + name_len + 2); + assert(val_len <= LSXPACK_MAX_STRLEN); + hdr->val_len = (lsxpack_strlen_t)val_len; +} + + +static inline void +lsxpack_header_set_offset2(lsxpack_header_t *hdr, const char *buf, + size_t name_offset, size_t name_len, + size_t val_offset, size_t val_len) +{ + memset(hdr, 0, sizeof(*hdr)); + hdr->buf = (char *)buf; + hdr->name_offset = (lsxpack_offset_t)name_offset; + assert(name_len <= LSXPACK_MAX_STRLEN); + hdr->name_len = (lsxpack_strlen_t)name_len; + assert(val_offset <= LSXPACK_MAX_STRLEN); + hdr->val_offset = (lsxpack_offset_t)val_offset; + assert(val_len <= LSXPACK_MAX_STRLEN); + hdr->val_len = (lsxpack_strlen_t)val_len; +} + + +static inline void +lsxpack_header_prepare_decode(lsxpack_header_t *hdr, + char *out, size_t offset, size_t len) +{ + memset(hdr, 0, sizeof(*hdr)); + hdr->buf = out; + assert(offset <= LSXPACK_MAX_STRLEN); + hdr->name_offset = (lsxpack_offset_t)offset; + if (len > LSXPACK_MAX_STRLEN) + hdr->val_len = LSXPACK_MAX_STRLEN; + else + hdr->val_len = (lsxpack_strlen_t)len; +} + + +static inline const char * +lsxpack_header_get_name(const lsxpack_header_t *hdr) +{ + return (hdr->name_len)? hdr->buf + hdr->name_offset : NULL; +} + + +static inline const char * +lsxpack_header_get_value(const lsxpack_header_t *hdr) +{ return hdr->buf + hdr->val_offset; } + +static inline size_t +lsxpack_header_get_dec_size(const lsxpack_header_t *hdr) +{ return hdr->name_len + hdr->val_len + hdr->dec_overhead; } + +static inline void +lsxpack_header_mark_val_changed(lsxpack_header_t *hdr) +{ + hdr->flags = (enum lsxpack_flag)(hdr->flags & + ~(LSXPACK_HPACK_VAL_MATCHED|LSXPACK_VAL_MATCHED|LSXPACK_NAMEVAL_HASH)); +} +#ifdef __cplusplus +} +#endif + +#endif //LSXPACK_HEADER_H_v208 diff --git a/external/lsquic/src/lshpack/test/CMakeLists.txt b/external/lsquic/src/lshpack/test/CMakeLists.txt new file mode 100644 index 0000000..d8e7f85 --- /dev/null +++ b/external/lsquic/src/lshpack/test/CMakeLists.txt @@ -0,0 +1,14 @@ +ENABLE_TESTING() + +FOREACH(HASH 0 1) + FOREACH(HTTP 0 1) + ADD_EXECUTABLE(test_hpack_hash${HASH}_http${HTTP} test_hpack.c ../lshpack.c ../deps/xxhash/xxhash.c) + SET_TARGET_PROPERTIES(test_hpack_hash${HASH}_http${HTTP} + PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLSHPACK_DEC_HTTP1X_OUTPUT=${HTTP} -DLSHPACK_DEC_CALC_HASH=${HASH}") + ADD_TEST(hpack-hash${HASH}-http${HTTP} test_hpack_hash${HASH}_http${HTTP}) + ENDFOREACH(HTTP) +ENDFOREACH(HASH) + +ADD_EXECUTABLE(test_int test_int.c ../deps/xxhash/xxhash.c) +TARGET_LINK_LIBRARIES(test_int ls-hpack) +ADD_TEST(int test_int) diff --git a/external/lsquic/src/lshpack/test/lshpack-test.h b/external/lsquic/src/lshpack/test/lshpack-test.h new file mode 100644 index 0000000..4c41cfa --- /dev/null +++ b/external/lsquic/src/lshpack/test/lshpack-test.h @@ -0,0 +1,53 @@ +#ifndef LITESPEED_HPACK_TEST_H +#define LITESPEED_HPACK_TEST_H 1 + +#define LSHPACK_XXH_SEED 39378473 + +struct lsxpack_header; + +struct enc_dyn_table_entry +{ + const char *name, /* Not NUL-terminated */ + *value; /* Not NUL-terminated */ + unsigned name_len, + value_len; + unsigned entry_id; +}; + +unsigned +lshpack_enc_get_static_name (const struct lsxpack_header *); + +unsigned +lshpack_enc_get_static_nameval (const struct lsxpack_header *); + +int +lshpack_enc_push_entry (struct lshpack_enc *enc, const struct lsxpack_header *); + +int +lshpack_enc_enc_str (unsigned char *const dst, size_t dst_len, + const unsigned char *str, unsigned str_len); + +typedef void * enc_iter_t; + +void +lshpack_enc_iter_init (struct lshpack_enc *enc, void **iter); + +/* Returns 0 if entry is found */ +int +lshpack_enc_iter_next (struct lshpack_enc *enc, void **iter, + struct enc_dyn_table_entry *); + +int +lshpack_dec_dec_int (const unsigned char **src, const unsigned char *src_end, + unsigned prefix_bits, uint32_t *value); +int +lshpack_dec_push_entry (struct lshpack_dec *dec, + const struct lsxpack_header *xhdr); + +unsigned char * +lshpack_enc_enc_int (unsigned char *dst, unsigned char *const end, uint32_t value, + uint8_t prefix_bits); + + + +#endif diff --git a/external/lsquic/src/lshpack/test/test_hpack.c b/external/lsquic/src/lshpack/test/test_hpack.c new file mode 100644 index 0000000..9d6d627 --- /dev/null +++ b/external/lsquic/src/lshpack/test/test_hpack.c @@ -0,0 +1,11649 @@ +/* + * Test hpack: encode a bunch of headers, decode and compare. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "lshpack.h" +#include "lshpack-test.h" +#include "xxhash.h" + +int +lshpack_dec_huff_decode (const unsigned char *src, int src_len, + unsigned char *dst, int dst_len); +#if LS_HPACK_USE_LARGE_TABLES +int +lshpack_dec_huff_decode_full (const unsigned char *src, int src_len, + unsigned char *dst, int dst_len); +#endif +int +lshpack_enc_huff_encode (const unsigned char *src, + const unsigned char *const src_end, unsigned char *const dst, + int dst_len); + +struct mod_iovec +{ + char iov_base[200]; + size_t iov_len; +}; + + +struct http_header +{ + struct mod_iovec name; + struct mod_iovec value; +}; + +#define N_HEADERS 10001 +static struct http_header header_arr[N_HEADERS]; + +#define STR_TO_IOVEC_TEST(a) ((char *)a), (sizeof(a) -1) + +#define STR_AND_LEN(a) (a), (sizeof(a) -1) + +#define IOV(v) { .iov_base = (v), .iov_len = sizeof(v) - 1, } + +struct table_elem +{ + const char *name; + unsigned name_len; + const char *val; + unsigned val_len; +}; + +static struct table_elem g_hpack_dyn_init_table_t[] = +{ + {STR_AND_LEN("content-length"), STR_AND_LEN("2145") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"1e0c-54feefd5-7bfd383f\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("31793") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"3235d-54feefd5-9d7c08af\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("407") }, + {STR_AND_LEN("content-type"), STR_AND_LEN("text/css") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"6bc-54feefd5-a7725cbd\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("1884") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"1b5a-54feefd5-b6a3dc2a\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("2308") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"1aee-54feefd5-1d91a5e4\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("702") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"5f8-54feefd5-197a93f1\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("556") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"52b-54feefd5-e6075901\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("6913") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"5767-54feefd5-4a868698\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("6724") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"64de-54feefd5-fb73534f\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("2568") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"2530-54feefd5-cccfff57\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("973") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"b00-54feefd5-e48546d\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("709") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"6a4-54feefd5-82d8609d\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("6520") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"5b0d-54feefd5-44735f27\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("3954") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"22ac-54feefd5-600b05fd\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("32825") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"16bb3-54feefd5-d669865d\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("1055") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"a37-54feefd5-59e4760e\"") }, + {STR_AND_LEN("date"), STR_AND_LEN("Tue, 10 Mar 2015 19:00:06 GMT") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("737") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"63d-54feefd5-c244a03a\"") }, + {STR_AND_LEN("expires"), STR_AND_LEN("Tue, 17 Mar 2015 19:00:06 GMT") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("3205") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"37cf-54feefd5-10e8e54\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("6336") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"58d9-54feefd5-f0d60c72\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("2707") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"285b-54feefd5-2e2834bf\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("9050") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"87ed-54feefd5-741b49ef\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("7562") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"795a-54feefd5-9e535995\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("8780") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"9759-54feefd5-6c09a64d\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("1842") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"1288-54feefd5-51ae6c5a\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("9153") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"a2af-54feefd5-83098d2b\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("437") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"2eb-54feefd5-26eef95\"") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("37451") }, + {STR_AND_LEN("content-type"), STR_AND_LEN("application/javascript") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"27df1-54feefd5-fe76c415\"") }, + {STR_AND_LEN("expires"), STR_AND_LEN("Tue, 17 Mar 2015 19:00:05 GMT") }, + {STR_AND_LEN("cache-control"), STR_AND_LEN("public, max-age=604800") }, + {STR_AND_LEN("server"), STR_AND_LEN("LiteSpeed") }, + {STR_AND_LEN("accept-ranges"), STR_AND_LEN("bytes") }, + {STR_AND_LEN("date"), STR_AND_LEN("Tue, 10 Mar 2015 19:00:05 GMT") }, + {STR_AND_LEN("vary"), STR_AND_LEN("Accept-Encoding") }, + {STR_AND_LEN("content-encoding"), STR_AND_LEN("gzip") }, + {STR_AND_LEN("content-length"), STR_AND_LEN("5298") }, + {STR_AND_LEN("content-type"), STR_AND_LEN("text/html") }, + {STR_AND_LEN("last-modified"), STR_AND_LEN("Tue, 10 Mar 2015 13:21:25 GMT") }, + {STR_AND_LEN("etag"), STR_AND_LEN("\"748f-54feefd5-dca65763\"") }, +}; + + +static struct table_elem g_HpackStaticTableTset[] = +{ + { STR_AND_LEN(":authority"), STR_AND_LEN("") }, + { STR_AND_LEN(":method"), STR_AND_LEN("GET") }, + { STR_AND_LEN(":method"), STR_AND_LEN("POST") }, + { STR_AND_LEN(":path"), STR_AND_LEN("/") }, + { STR_AND_LEN(":path"), STR_AND_LEN("/index.html") }, + { STR_AND_LEN(":scheme"), STR_AND_LEN("http") }, + { STR_AND_LEN(":scheme"), STR_AND_LEN("https") }, + { STR_AND_LEN(":status"), STR_AND_LEN("200") }, + { STR_AND_LEN(":status"), STR_AND_LEN("204") }, + { STR_AND_LEN(":status"), STR_AND_LEN("206") }, + { STR_AND_LEN(":status"), STR_AND_LEN("304") }, + { STR_AND_LEN(":status"), STR_AND_LEN("400") }, + { STR_AND_LEN(":status"), STR_AND_LEN("404") }, + { STR_AND_LEN(":status"), STR_AND_LEN("500") }, + { STR_AND_LEN("accept-charset"), STR_AND_LEN("") }, + { STR_AND_LEN("accept-encoding"), STR_AND_LEN("gzip, deflate") }, + { STR_AND_LEN("accept-language"), STR_AND_LEN("") }, + { STR_AND_LEN("accept-ranges"), STR_AND_LEN("") }, + { STR_AND_LEN("accept"), STR_AND_LEN("") }, + { STR_AND_LEN("access-control-allow-origin"), STR_AND_LEN("") }, + { STR_AND_LEN("age"), STR_AND_LEN("") }, + { STR_AND_LEN("allow"), STR_AND_LEN("") }, + { STR_AND_LEN("authorization"), STR_AND_LEN("") }, + { STR_AND_LEN("cache-control"), STR_AND_LEN("") }, + { STR_AND_LEN("content-disposition"), STR_AND_LEN("") }, + { STR_AND_LEN("content-encoding"), STR_AND_LEN("") }, + { STR_AND_LEN("content-language"), STR_AND_LEN("") }, + { STR_AND_LEN("content-length"), STR_AND_LEN("") }, + { STR_AND_LEN("content-location"), STR_AND_LEN("") }, + { STR_AND_LEN("content-range"), STR_AND_LEN("") }, + { STR_AND_LEN("content-type"), STR_AND_LEN("") }, + { STR_AND_LEN("cookie"), STR_AND_LEN("") }, + { STR_AND_LEN("date"), STR_AND_LEN("") }, + { STR_AND_LEN("etag"), STR_AND_LEN("") }, + { STR_AND_LEN("expect"), STR_AND_LEN("") }, + { STR_AND_LEN("expires"), STR_AND_LEN("") }, + { STR_AND_LEN("from"), STR_AND_LEN("") }, + { STR_AND_LEN("host"), STR_AND_LEN("") }, + { STR_AND_LEN("if-match"), STR_AND_LEN("") }, + { STR_AND_LEN("if-modified-since"), STR_AND_LEN("") }, + { STR_AND_LEN("if-none-match"), STR_AND_LEN("") }, + { STR_AND_LEN("if-range"), STR_AND_LEN("") }, + { STR_AND_LEN("if-unmodified-since"), STR_AND_LEN("") }, + { STR_AND_LEN("last-modified"), STR_AND_LEN("") }, + { STR_AND_LEN("link"), STR_AND_LEN("") }, + { STR_AND_LEN("location"), STR_AND_LEN("") }, + { STR_AND_LEN("max-forwards"), STR_AND_LEN("") }, + { STR_AND_LEN("proxy-authenticate"), STR_AND_LEN("") }, + { STR_AND_LEN("proxy-authorization"), STR_AND_LEN("") }, + { STR_AND_LEN("range"), STR_AND_LEN("") }, + { STR_AND_LEN("referer"), STR_AND_LEN("") }, + { STR_AND_LEN("refresh"), STR_AND_LEN("") }, + { STR_AND_LEN("retry-after"), STR_AND_LEN("") }, + { STR_AND_LEN("server"), STR_AND_LEN("") }, + { STR_AND_LEN("set-cookie"), STR_AND_LEN("") }, + { STR_AND_LEN("strict-transport-security"), STR_AND_LEN("") }, + { STR_AND_LEN("transfer-encoding"), STR_AND_LEN("") }, + { STR_AND_LEN("user-agent"), STR_AND_LEN("") }, + { STR_AND_LEN("vary"), STR_AND_LEN("") }, + { STR_AND_LEN("via"), STR_AND_LEN("") }, + { STR_AND_LEN("www-authenticate"), STR_AND_LEN("") } +}; + + +static int +decode_and_check_hashes (struct lshpack_dec *dec, + const unsigned char **src, const unsigned char *src_end, + struct lsxpack_header *xhdr) +{ + uint32_t hash; + int s; + + s = lshpack_dec_decode(dec, src, src_end, xhdr); + if (s == 0) + { +#if LSHPACK_DEC_CALC_HASH + assert(xhdr->flags & LSXPACK_NAME_HASH); +#endif + if (xhdr->flags & LSXPACK_NAME_HASH) + { + hash = XXH32(lsxpack_header_get_name(xhdr), xhdr->name_len, + LSHPACK_XXH_SEED); + assert(hash == xhdr->name_hash); + } + +#if LSHPACK_DEC_CALC_HASH + { + /* This is not required by the API, but internally, if the library + * calculates nameval hash, it should also set the name hash. + */ + assert(xhdr->flags & LSXPACK_NAME_HASH); + assert(xhdr->flags & LSXPACK_NAMEVAL_HASH); + } +#endif + + if (xhdr->flags & LSXPACK_NAMEVAL_HASH) + { + hash = XXH32(lsxpack_header_get_name(xhdr), xhdr->name_len, + LSHPACK_XXH_SEED); + hash = XXH32(lsxpack_header_get_value(xhdr), xhdr->val_len, hash); + assert(hash == xhdr->nameval_hash); + } + } + return s; +} + + +void displayHeader(unsigned char *buf, int len) +{ + int i; + for (i = 0; i < len / 16; ++i) + { + printf("%02x%02x %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x | \n", + buf[i * 16 + 0], buf[i * 16 + 1], buf[i * 16 + 2], buf[i * 16 + 3], + buf[i * 16 + 4], buf[i * 16 + 5], buf[i * 16 + 6], buf[i * 16 + 7], + buf[i * 16 + 8], buf[i * 16 + 9], buf[i * 16 + 10], buf[i * 16 + 11], + buf[i * 16 + 12], buf[i * 16 + 13], buf[i * 16 + 14], buf[i * 16 + 15]); + } + + i *= 16; + for (; i < len; ++i) + printf(((i % 2 == 0) ? "%02x" : "%02x "), buf[i]); + printf("\n"); + +} + + +static void +printTable (struct lshpack_enc *enc) +{ + struct enc_dyn_table_entry entry; + void *iter; + lshpack_enc_iter_init(enc, &iter); + printf("Dynamic Table : \n"); + while (0 == lshpack_enc_iter_next(enc, &iter, &entry)) + printf("[%d] `%.*s' = `%.*s'\n", + entry.entry_id, entry.name_len, entry.name, entry.value_len, entry.value); +} + + +static inline void +lsxpack_header_set_ptr(lsxpack_header_t *hdr, + const char *name, size_t name_len, + const char *val, size_t val_len) +{ + static char buf[65536]; /* XXX be careful */ + memcpy(buf, name, name_len); + memcpy(&buf[name_len], val, val_len); + lsxpack_header_set_offset2(hdr, buf, 0, name_len, name_len, val_len); +} + + +static unsigned +lookup_static_table (const char *name, unsigned name_len, + const char *val, unsigned val_len, int *val_matched) +{ + struct lsxpack_header xhdr; + unsigned id; + + lsxpack_header_set_ptr(&xhdr, name, name_len, val, val_len); + xhdr.name_hash = XXH32(name, name_len, LSHPACK_XXH_SEED); + xhdr.nameval_hash = XXH32(val, val_len, xhdr.name_hash); + xhdr.flags |= LSXPACK_NAMEVAL_HASH | LSXPACK_NAME_HASH; + + id = lshpack_enc_get_static_nameval(&xhdr); + if (id) + { + *val_matched = 1; + return id; + } + + id = lshpack_enc_get_static_name(&xhdr); + if (id) + { + *val_matched = 0; + return id; + } + + return 0; +} + + +void testNameValue(const char *name, const char *val, int result, + int val_match_result) +{ + int val_match; + int index = lookup_static_table((char *)name, (unsigned)strlen(name) , + (char *)val, (unsigned)strlen(val), &val_match); + printf("name: %s, val: %s, index = %d match = %d\n", name, val, index, + val_match); + assert(index == result); + if (index) + assert(val_match == val_match_result); +} + + +static void +test_static_table_search_simple (void) +{ + testNameValue(":authority", "www.example.com", 1, 0); + testNameValue(":authority1", "www.example.com", 0, 0); + testNameValue(":authority", "www.example.com", 1, 0); + testNameValue(":authority1", "www.example.com", 0, 0); + + testNameValue(":method", "GET", 2, 1); + testNameValue(":method", "gET", 2, 0); + testNameValue(":method", "PURGE", 2, 0); + testNameValue(":method", "POST", 3, 1); + + testNameValue(":scheme", "http", 6, 1); + testNameValue(":scheme", "HTTP", 6, 0); + testNameValue(":scheme", "https", 7, 1); + testNameValue(":scheme", "httPS", 6, 0); + + // testNameValue("scheme", "http", 0, 0); + // testNameValue("scheme", "https", 0, 0); + + testNameValue(":status", "200", 8, 1); + testNameValue(":status", "401", 8, 0); + testNameValue(":status", "500", 14, 1); + // testNameValue(":status-xxx", "200", 0, 0); + + testNameValue("accept-encoding", "gzip, deflate", 16, 1); + testNameValue("accept-encoding", "gzip", 16, 0); + + testNameValue("accept-charset", "en", 15, 0); + testNameValue("accept-charset", "EN", 15, 0); + + testNameValue("age", "100", 21, 0); + testNameValue("age", "10000", 21, 0); + + testNameValue("www-authenticate", "wwwewe", 61, 0); + testNameValue("www-authenticate-", "dtertete", 0, 0); +} + + +static void +test_hpack_test_RFC_Example (void) +{ + unsigned char respBuf[8192] = {0}; + unsigned char *respBufEnd = respBuf + 8192; + + struct lshpack_enc henc; + struct lshpack_dec hdec; + + lshpack_enc_init(&henc); + lshpack_enc_set_max_capacity(&henc, 256); + + lshpack_dec_init(&hdec); + lshpack_dec_set_max_capacity(&hdec, 256); + + unsigned char *pBuf = respBuf; + lsxpack_header_t hdr; + + lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST(":status"), + STR_TO_IOVEC_TEST("302")); + pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); + lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("cache-control"), + STR_TO_IOVEC_TEST("private")); + pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); + lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("date"), + STR_TO_IOVEC_TEST("Mon, 21 Oct 2013 20:13:21 GMT")); + pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); + lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("location"), + STR_TO_IOVEC_TEST("https://www.example.com")); + pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); + displayHeader(respBuf, pBuf - respBuf); + printTable(&henc); + char bufSample1[] = + "\x48\x82\x64\x02\x58\x85\xae\xc3\x77\x1a\x4b\x61\x96\xd0\x7a\xbe" + "\x94\x10\x54\xd4\x44\xa8\x20\x05\x95\x04\x0b\x81\x66\xe0\x82\xa6" + "\x2d\x1b\xff\x6e\x91\x9d\x29\xad\x17\x18\x63\xc7\x8f\x0b\x97\xc8" + "\xe9\xae\x82\xae\x43\xd3"; + assert(memcmp(bufSample1, respBuf, pBuf - respBuf) == 0); + + + pBuf = respBuf; + lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST(":status"), + STR_TO_IOVEC_TEST("307")); + pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); + printTable(&henc); + lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("cache-control"), + STR_TO_IOVEC_TEST("private")); + pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); + printTable(&henc); + lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("date"), + STR_TO_IOVEC_TEST("Mon, 21 Oct 2013 20:13:21 GMT")); + pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); + printTable(&henc); + lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("location"), + STR_TO_IOVEC_TEST("https://www.example.com")); + pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); + displayHeader(respBuf, pBuf - respBuf); + printTable(&henc); + char bufSample2[] = "\x48\x83\x64\x0e\xff\xc1\xc0\xbf"; + assert(memcmp(bufSample2, respBuf, pBuf - respBuf) == 0); + + pBuf = respBuf; + lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST(":status"), + STR_TO_IOVEC_TEST("200")); + pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); + printTable(&henc); + lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("cache-control"), + STR_TO_IOVEC_TEST("private")); + pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); + printTable(&henc); + lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("date"), + STR_TO_IOVEC_TEST("Mon, 21 Oct 2013 20:13:22 GMT")); + pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); + printTable(&henc); + lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("location"), + STR_TO_IOVEC_TEST("https://www.example.com")); + pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); + printTable(&henc); + lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("content-encoding"), + STR_TO_IOVEC_TEST("gzip")); + pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); + printTable(&henc); + lsxpack_header_set_ptr(&hdr, STR_TO_IOVEC_TEST("set-cookie"), + STR_TO_IOVEC_TEST("foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1")); + pBuf = lshpack_enc_encode(&henc, pBuf, respBufEnd, &hdr); + printTable(&henc); + displayHeader(respBuf, pBuf - respBuf); + + + char bufSample3[] = + "\x88\xc1\x61\x96\xd0\x7a\xbe\x94\x10\x54\xd4\x44\xa8\x20\x05\x95" + "\x04\x0b\x81\x66\xe0\x84\xa6\x2d\x1b\xff\xc0\x5a\x83\x9b\xd9\xab" + "\x77\xad\x94\xe7\x82\x1d\xd7\xf2\xe6\xc7\xb3\x35\xdf\xdf\xcd\x5b" + "\x39\x60\xd5\xaf\x27\x08\x7f\x36\x72\xc1\xab\x27\x0f\xb5\x29\x1f" + "\x95\x87\x31\x60\x65\xc0\x03\xed\x4e\xe5\xb1\x06\x3d\x50\x07"; + assert(memcmp(bufSample3, respBuf, pBuf - respBuf) == 0); + + + + /**************************** + * decHeader testing + * + ****************************/ + unsigned char *bufSamp4 = (unsigned char *) + "\x82\x86\x84\x41\x8c\xf1\xe3\xc2\xe5\xf2\x3a\x6b\xa0\xab\x90\xf4\xff"; + const unsigned char *pSrc = bufSamp4; + const unsigned char *bufEnd = bufSamp4 + strlen((const char *)bufSamp4); + int rc; + // AutoBuf autoBuf(2048); + // char name[1024]; + // char val[1024]; + char out[2048]; + while (pSrc < bufEnd) + { + lsxpack_header_prepare_decode(&hdr, out, 0, sizeof(out)); + rc = decode_and_check_hashes(&hdec, &pSrc, bufEnd, &hdr); + assert(rc == 0); + char *name = out; + char *val = hdr.buf + hdr.val_offset; + printf("%.*s: %.*s\n", hdr.name_len, name, hdr.val_len, val); + } + printTable(&henc); + + + unsigned char *bufSamp = (unsigned char *) + "\x82\x86\x84\xbe\x58\x86\xa8\xeb\x10\x64\x9c\xbf"; + pSrc = bufSamp; + bufEnd = bufSamp + strlen((const char *)bufSamp); + while (pSrc < bufEnd) + { + lsxpack_header_prepare_decode(&hdr, out, 0, sizeof(out)); + rc = decode_and_check_hashes(&hdec, &pSrc, bufEnd, &hdr); + assert(rc == 0); + char *name = out; + char *val = hdr.buf + hdr.val_offset; + printf("%.*s: %.*s\n", hdr.name_len, name, hdr.val_len, val); + } + + bufSamp = (unsigned char *) + "\x82\x87\x85\xbf\x40\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f\x89\x25\xa8\x49\xe9\x5b\xb8\xe8\xb4\xbf"; + pSrc = bufSamp; + bufEnd = bufSamp + strlen((const char *)bufSamp); + while (pSrc < bufEnd) + { + lsxpack_header_prepare_decode(&hdr, out, 0, sizeof(out)); + rc = decode_and_check_hashes(&hdec, &pSrc, bufEnd, &hdr); + assert(rc == 0); + char *name = out; + char *val = hdr.buf + hdr.val_offset; + printf("%.*s: %.*s\n", hdr.name_len, name, hdr.val_len, val); + } + + lshpack_enc_cleanup(&henc); + lshpack_dec_cleanup(&hdec); +} + + +static int +all_set_to (unsigned const char *buf, size_t bufsz, unsigned char val) +{ + unsigned n, count = 0; + for (n = 0; n < bufsz; ++n) + count += buf[n] == val; + return count == bufsz; +} + + +static unsigned char * +encode2_wrapper (struct lshpack_enc *enc, unsigned char *dst, + unsigned char *dst_end, const char *name, unsigned name_len, + const char *value, unsigned value_len, int indexed_type) +{ + struct lsxpack_header xhdr; + + lsxpack_header_set_ptr(&xhdr, name, name_len, value, value_len); + return lshpack_enc_encode(enc, dst, dst_end, &xhdr); +} + + +static void +test_decode_limits (void) +{ + unsigned char comp[0x100], *end; + const unsigned char *src; + char out[0x100]; + struct lshpack_enc henc; + struct lshpack_dec hdec; + int s; + unsigned enough[] = { 33, 34, 40, 50, 100, }; + unsigned not_enough[] = { 32, 31, 30, 10, 1, 0, }; + unsigned n; + struct lsxpack_header xhdr; + size_t written; + + lshpack_enc_init(&henc); + end = encode2_wrapper(&henc, comp, comp + sizeof(comp), + "some-header-name", 16, "some-header-value", 17, 0); + lshpack_enc_cleanup(&henc); + + lshpack_dec_init(&hdec); + + for (n = 0; n < sizeof(enough) / sizeof(enough[0]); ++n) + { + memset(out, 0xFA, sizeof(out)); + lsxpack_header_prepare_decode(&xhdr, out, 0, sizeof(out)); + src = comp; + s = decode_and_check_hashes(&hdec, &src, end, &xhdr); + assert(0 == s); + assert(src == end); + assert(16 == xhdr.name_len); + assert(17 == xhdr.val_len); + assert(0 == memcmp(lsxpack_header_get_name(&xhdr), "some-header-name", 16)); + assert(0 == memcmp(lsxpack_header_get_value(&xhdr), "some-header-value", 17)); + written = xhdr.name_len + xhdr.val_len + lshpack_dec_extra_bytes(&hdec); + assert(all_set_to((unsigned char *) out + written, + sizeof(out) - written, 0xFA)); + } + + for (n = 0; n < sizeof(not_enough) / sizeof(not_enough[0]); ++n) + { + memset(out, 0xFA, sizeof(out)); + lsxpack_header_prepare_decode(&xhdr, out, 0, not_enough[n]); + src = comp; + s = decode_and_check_hashes(&hdec, &src, end, &xhdr); + assert(s < 0); + assert(all_set_to((unsigned char *) out + not_enough[n], + sizeof(out) - not_enough[n], 0xFA)); + } + + lshpack_dec_cleanup(&hdec); +} + + +static void +test_hpack_self_enc_dec_test (void) +{ + unsigned char respBuf[8192] = {0}; + unsigned char *respBufEnd = respBuf + 8192; + struct lshpack_enc henc; + lshpack_enc_init(&henc); + struct lshpack_dec hdec; + lshpack_dec_init(&hdec); + const unsigned char *pSrc = respBuf; + const unsigned char *bufEnd; + int rc; + // AutoBuf autoBuf(2048); + // char name[1024]; + // char val[1024]; + char out[2048]; + struct lsxpack_header xhdr; + + lshpack_enc_set_max_capacity(&henc, 256); + lshpack_dec_set_max_capacity(&hdec, 256); + + unsigned char *pBuf = respBuf; + + //Reproduce bug with special charset + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, + STR_TO_IOVEC_TEST("content-disposition"), + STR_TO_IOVEC_TEST("inline; filename=\"Ekran Alıntısı.PNG\""), 0); + displayHeader(respBuf, pBuf - respBuf); + printTable(&henc); + + /**************************** + * decHeader testing + ****************************/ + pSrc = respBuf; + bufEnd = pBuf; + while (1) + { + lsxpack_header_prepare_decode(&xhdr, out, 0, sizeof(out)); + rc = decode_and_check_hashes(&hdec, &pSrc, bufEnd, &xhdr); + if (rc != 0) + break; + char *name = out + xhdr.name_offset; + char *val = out + xhdr.val_offset; + printf("%.*s: %.*s\n", (int) xhdr.name_len, name, + (int) xhdr.val_len, val); + } + printTable(&henc); + + + //1: + pBuf = respBuf; + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST(":status"), + STR_TO_IOVEC_TEST("200"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, + STR_TO_IOVEC_TEST("cache-control"), + STR_TO_IOVEC_TEST("public, max-age=1000"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("date"), + STR_TO_IOVEC_TEST("Mon, 21 Oct 2013 20:13:23 GMT"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("allow"), + STR_TO_IOVEC_TEST("*.*"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("location"), + STR_TO_IOVEC_TEST("https://www.example.com"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("my-test_key"), + STR_TO_IOVEC_TEST("my-test-values1111"), 0); + displayHeader(respBuf, pBuf - respBuf); + printTable(&henc); + + /**************************** + * decHeader testing + ****************************/ + pSrc = respBuf; + bufEnd = pBuf; + while (1) + { + lsxpack_header_prepare_decode(&xhdr, out, 0, sizeof(out)); + rc = decode_and_check_hashes(&hdec, &pSrc, bufEnd, &xhdr); + if (rc != 0) + break; + char *name = out + xhdr.name_offset; + char *val = out + xhdr.val_offset; + printf("%.*s: %.*s\n", (int) xhdr.name_len, name, + (int) xhdr.val_len, val); + } + printTable(&henc); + + //2: + pBuf = respBuf; + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST(":status"), + STR_TO_IOVEC_TEST("404"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, + STR_TO_IOVEC_TEST("cache-control"), + STR_TO_IOVEC_TEST("public, max-age=1000"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("allow"), + STR_TO_IOVEC_TEST("*.*"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("from"), + STR_TO_IOVEC_TEST("123456@mymail.com"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("host"), + STR_TO_IOVEC_TEST("www.host.com"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("vary"), + STR_TO_IOVEC_TEST("wsdsdsdfdsfues1111"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("via"), + STR_TO_IOVEC_TEST("m"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("range"), + STR_TO_IOVEC_TEST("1111"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("my-test_key2"), + STR_TO_IOVEC_TEST("my-test-values22222222222222"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, + STR_TO_IOVEC_TEST("my-test_key3333"), STR_TO_IOVEC_TEST("my-test-va3"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, + STR_TO_IOVEC_TEST("my-test_key44"), STR_TO_IOVEC_TEST("my-test-value444"), 0); + displayHeader(respBuf, pBuf - respBuf); + printTable(&henc); + + + /**************************** + * decHeader testing + ****************************/ + pSrc = respBuf; + bufEnd = pBuf; + while (1) + { + lsxpack_header_prepare_decode(&xhdr, out, 0, sizeof(out)); + rc = decode_and_check_hashes(&hdec, &pSrc, bufEnd, &xhdr); + if (rc != 0) + break; + char *name = out + xhdr.name_offset; + char *val = out + xhdr.val_offset; + printf("%.*s: %.*s\n", (int) xhdr.name_len, name, + (int) xhdr.val_len, val); + } + printTable(&henc); + + //3: + pBuf = respBuf; + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST(":status"), + STR_TO_IOVEC_TEST("307"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, + STR_TO_IOVEC_TEST("cache-control"), + STR_TO_IOVEC_TEST("public, max-age=1000"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("allow"), + STR_TO_IOVEC_TEST("*.*.*.*"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("from"), + STR_TO_IOVEC_TEST("123456@mymail.com"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("host"), + STR_TO_IOVEC_TEST("www.host.com"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, + STR_TO_IOVEC_TEST("my-test_key3333"), STR_TO_IOVEC_TEST("my-test-va3"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("vary"), + STR_TO_IOVEC_TEST("wsdsdsdfdsfues1111"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("via"), + STR_TO_IOVEC_TEST("mmmmm"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, STR_TO_IOVEC_TEST("my-test_key2"), + STR_TO_IOVEC_TEST("my-test-values22222222222222"), 0); + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, + STR_TO_IOVEC_TEST("my-test_key44"), STR_TO_IOVEC_TEST("my-test-value444"), 0); + displayHeader(respBuf, pBuf - respBuf); + printTable(&henc); + + /**************************** + * decHeader testing + ****************************/ + pSrc = respBuf; + bufEnd = pBuf; + while (1) + { + lsxpack_header_prepare_decode(&xhdr, out, 0, sizeof(out)); + rc = decode_and_check_hashes(&hdec, &pSrc, bufEnd, &xhdr); + if (rc != 0) + break; + char *name = out + xhdr.name_offset; + char *val = out + xhdr.val_offset; + printf("%.*s: %.*s\n", (int) xhdr.name_len, name, + (int) xhdr.val_len, val); + } + printTable(&henc); + + lshpack_enc_cleanup(&henc); + lshpack_dec_cleanup(&hdec); +} + + +static void +test_hpack_encode_and_decode (void) +{ + struct lshpack_enc henc; + lshpack_enc_init(&henc); + + struct lshpack_dec hdec; + lshpack_dec_init(&hdec); + + char out[1000]; + + unsigned char buf[0x100]; + unsigned char *const end = buf + sizeof(buf); + const unsigned char *dec = buf; + unsigned char *enc = buf; + + enc = encode2_wrapper(&henc, enc, end, + STR_TO_IOVEC_TEST(":authority"), + STR_TO_IOVEC_TEST("www.example.com"), 0); + assert(enc > buf); + + struct lsxpack_header xhdr; + lsxpack_header_prepare_decode(&xhdr, out, 0, sizeof(out)); + int rc = decode_and_check_hashes(&hdec, &dec, enc, &xhdr); + assert(rc == 0); + assert(xhdr.name_len == 10); + assert(xhdr.val_len == 15); + assert(dec == enc); + assert(0 == memcmp(lsxpack_header_get_name(&xhdr), ":authority", 10)); + assert(0 == memcmp(lsxpack_header_get_value(&xhdr), "www.example.com", 15)); + + lshpack_enc_cleanup(&henc); + lshpack_dec_cleanup(&hdec); +} + + +static void +test_hpack_self_enc_dec_test_firefox_error (void) +{ + unsigned char respBuf[8192] = {0}; + unsigned char *respBufEnd; + uint32_t name_hash, nameval_hash; + // Hpack hpack; + struct lshpack_enc henc; + lshpack_enc_init(&henc); + struct lshpack_dec hdec; + struct lsxpack_header xhdr; + lshpack_dec_init(&hdec); + int nCount = sizeof(g_hpack_dyn_init_table_t) / sizeof(struct table_elem); + int i; + for (i = nCount - 1; i >= 0; --i) + { + int val_match; + int staticTableIndex = lookup_static_table((char *) + g_hpack_dyn_init_table_t[i].name, + g_hpack_dyn_init_table_t[i].name_len, + (char *)g_hpack_dyn_init_table_t[i].val, + g_hpack_dyn_init_table_t[i].val_len, + &val_match); + + if (staticTableIndex <= 0) + printf("Error, not in static table. \n"); + + lsxpack_header_set_ptr(&xhdr, g_hpack_dyn_init_table_t[i].name, + g_hpack_dyn_init_table_t[i].name_len, g_hpack_dyn_init_table_t[i].val, + g_hpack_dyn_init_table_t[i].val_len); +#if LSHPACK_DEC_CALC_HASH + xhdr.name_hash = XXH32(g_hpack_dyn_init_table_t[i].name, + g_hpack_dyn_init_table_t[i].name_len, LSHPACK_XXH_SEED); + xhdr.flags |= LSXPACK_NAME_HASH; + xhdr.nameval_hash = XXH32(g_hpack_dyn_init_table_t[i].val, + g_hpack_dyn_init_table_t[i].val_len, xhdr.name_hash); + xhdr.flags |= LSXPACK_NAMEVAL_HASH; +#endif + lshpack_dec_push_entry(&hdec, &xhdr); + + name_hash = XXH32(g_hpack_dyn_init_table_t[i].name, + g_hpack_dyn_init_table_t[i].name_len, LSHPACK_XXH_SEED); + nameval_hash = XXH32(g_hpack_dyn_init_table_t[i].val, + g_hpack_dyn_init_table_t[i].val_len, name_hash); + + lsxpack_header_set_ptr(&xhdr, + (char *)g_hpack_dyn_init_table_t[i].name, + g_hpack_dyn_init_table_t[i].name_len, + (char *)g_hpack_dyn_init_table_t[i].val, + g_hpack_dyn_init_table_t[i].val_len); + xhdr.name_hash = name_hash; + xhdr.nameval_hash = nameval_hash; + xhdr.flags |= LSXPACK_NAMEVAL_HASH | LSXPACK_NAME_HASH; + lshpack_enc_push_entry(&henc, &xhdr); + + } + printTable(&henc); + + + char buf[] = + "\x88\xF9\x64\x96\xDF\x69\x7E\x94\x0B\xAA\x68\x1D\x8A\x08\x01\x6D" + "\x40\xBF\x70\x00\xB8\x07\x54\xC5\xA3\x7F\x62\x92\xFE\x42\x21\xBA" + "\xB3\x6D\x4A\x52\xCB\x23\x6B\x0D\xE1\x3E\x17\x05\x2F\xF3\xFF\x04" + "\x5F\x87\x35\x23\x98\xAC\x57\x54\xDF\x5C\x83\x69\xD7\x5B\x61\x96" + "\xDF\x69\x7E\x94\x08\x14\xD0\x3B\x14\x10\x02\xDA\x81\x7E\xE0\x01" + "\x70\x0E\xA9\x8B\x46\xFF\xFF\x01\xFF\x00"; + + int rc; + const unsigned char *pSrc = (unsigned char *)buf; + const unsigned char *bufEnd = (unsigned char *)buf + 90; + + //AutoBuf autoBuf(2048); + char out[2048]; + + unsigned char *pBuf = respBuf; + respBufEnd = respBuf + 8192; + + while (pSrc < bufEnd) + { + lsxpack_header_prepare_decode(&xhdr, out, 0, sizeof(out)); + rc = decode_and_check_hashes(&hdec, &pSrc, bufEnd, &xhdr); + assert(rc == 0); + + char *name = (char *) lsxpack_header_get_name(&xhdr); + char *val = (char *) lsxpack_header_get_value(&xhdr); + printf("%.*s: %.*s\n", (int) xhdr.name_len, name, (int) xhdr.val_len, val); + + pBuf = encode2_wrapper(&henc, pBuf, respBufEnd, name, xhdr.name_len, + val, xhdr.val_len, 0); + } + + displayHeader(respBuf, pBuf - respBuf); + assert(memcmp(respBuf, buf, 90) == 0); + lshpack_enc_cleanup(&henc); + lshpack_dec_cleanup(&hdec); +} + + +static void +test_hdec_table_size_updates (void) +{ + const unsigned char *src; + struct lshpack_dec hdec; + char outbuf[0x100]; + struct lsxpack_header xhdr; + int s; + + /* Test 1: inline update of capacity larger than max results in an + * error. + */ + { + unsigned const char buf[] = { 0x20 | 0x1E, 0x88 }; + src = buf; + lshpack_dec_init(&hdec); + lshpack_dec_set_max_capacity(&hdec, 0x11); + lsxpack_header_prepare_decode(&xhdr, outbuf, 0, sizeof(outbuf)); + s = decode_and_check_hashes(&hdec, &src, src + sizeof(buf), &xhdr); + assert(s < 0); + assert(hdec.hpd_cur_max_capacity == 0x11); + lshpack_dec_cleanup(&hdec); + } + + /* Test 2: inline update of capacity smaller than max succeeds. + */ + { + unsigned const char buf[] = { 0x20 | 0x1E, 0x88 }; + src = buf; + lshpack_dec_init(&hdec); + lsxpack_header_prepare_decode(&xhdr, outbuf, 0, sizeof(outbuf)); + s = decode_and_check_hashes(&hdec, &src, src + sizeof(buf), &xhdr); + assert(s == 0); + assert(src == buf + sizeof(buf)); + assert(hdec.hpd_cur_max_capacity == 0x1E); + lshpack_dec_cleanup(&hdec); + } + + /* Test 3: Two consecutive inline size updates succeed. + * Just like in RFC 7541, section 4.1, we clear the table. + * + * " This mechanism can be used to completely clear entries from the + * " dynamic table by setting a maximum size of 0, which can subsequently + * " be restored. + */ + { + unsigned const char buf[] = { + 0x20 | 0x00, + 0x20 | 0x14, + 0x88, + }; + src = buf; + lshpack_dec_init(&hdec); + lsxpack_header_prepare_decode(&xhdr, outbuf, 0, sizeof(outbuf)); + s = decode_and_check_hashes(&hdec, &src, src + sizeof(buf), &xhdr); + assert(s == 0); + assert(src == buf + sizeof(buf)); + assert(hdec.hpd_cur_max_capacity == 0x14); + lshpack_dec_cleanup(&hdec); + } + + /* Test 4: header block with table update at the end fails. + */ + { + unsigned const char buf[] = { 0x20 | 0x1E, }; + src = buf; + lshpack_dec_init(&hdec); + lsxpack_header_prepare_decode(&xhdr, outbuf, 0, sizeof(outbuf)); + s = decode_and_check_hashes(&hdec, &src, src + sizeof(buf), &xhdr); + assert(s < 0); + lshpack_dec_cleanup(&hdec); + } + +} + + +/* Test that if empty buffer is given writing is not done */ +static void +test_henc_boundary1 (void) +{ + unsigned char *end; + struct lshpack_enc henc; + unsigned char outbuf[0x100]; + + lshpack_enc_init(&henc); + end = encode2_wrapper(&henc, outbuf, outbuf, + STR_AND_LEN("header"), STR_AND_LEN("value"), 0); + assert(end == outbuf); + lshpack_enc_cleanup(&henc); +} + + +/* Test that buffer boundaries are checked when integers are written. The + * way this is done is that we encode a bunch of entries and then encode + * a duplicate that refers to entry ID that, when encoded, is longer than + * one byte (ID >= 127). + */ +static void +test_henc_boundary2 (void) +{ + char buf[1]; + unsigned i; + unsigned char *end; + struct lshpack_enc henc; + unsigned char outbuf[0x100]; + + lshpack_enc_init(&henc); + + /* Generate entries 62 through 127: */ + for (i = 62; i <= 127; ++i) + { + buf[0] = i; + end = encode2_wrapper(&henc, outbuf, outbuf + sizeof(outbuf), + STR_AND_LEN("header"), buf, 1, 0); + assert(end > outbuf); + } + + /* Generate header/62 entry again, but only give one byte for output: */ + buf[0] = 62; + end = encode2_wrapper(&henc, outbuf, outbuf + 1, + STR_AND_LEN("header"), buf, 1, 0); + assert(end == outbuf); + + /* Try it again, this time giving full two bytes. This is a self-check, + * to make sure that the table ID is indeed two bytes long. + */ + buf[0] = 62; + end = encode2_wrapper(&henc, outbuf, outbuf + 2, + STR_AND_LEN("header"), buf, 1, 0); + assert(end == outbuf + 2); + + lshpack_enc_cleanup(&henc); +} + + +/* Test that non-ASCII values are compressed and uncompressed successfully. + * + * This tests the code to pick the non-compressed version over compressed + * version of the string if the compressed version is larger than the + * uncompressed version. + */ +static void +test_henc_nonascii (void) +{ + const char value[] = { 245, 246, 247, 248, 11, 255, }; + int s; + unsigned char *end; + const unsigned char *src; + struct lshpack_enc henc; + struct lshpack_dec hdec; + struct lsxpack_header xhdr; + unsigned char comp[0x100]; + char uncomp[0x100]; + + lshpack_enc_init(&henc); + end = encode2_wrapper(&henc, comp, comp + sizeof(comp), + STR_AND_LEN("header"), value, sizeof(value), 0); + assert(end > comp); + lshpack_enc_cleanup(&henc); + + lshpack_dec_init(&hdec); + src = comp; + lsxpack_header_prepare_decode(&xhdr, uncomp, 0, sizeof(uncomp)); + s = decode_and_check_hashes(&hdec, &src, end, &xhdr); + assert(s == 0); + assert(sizeof(value) == xhdr.val_len); + assert(0 == memcmp(value, lsxpack_header_get_value(&xhdr), xhdr.val_len)); + lshpack_dec_cleanup(&hdec); +} + + +/* Test encoding of string that compresses to a size of 127 bytes or more. + * This tests adjustment mechanism in lshpack_enc_huff_encode(). + */ +static void +test_henc_long_compressable (void) +{ + const char value[] = + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + ; + int s; + unsigned char *end; + const unsigned char *src; + struct lshpack_enc henc; + struct lshpack_dec hdec; + struct lsxpack_header xhdr; + unsigned char comp[0x1000]; + char uncomp[0x1000]; + + lshpack_enc_init(&henc); + end = encode2_wrapper(&henc, comp, comp + sizeof(comp), + STR_AND_LEN("header"), value, sizeof(value), 0); + assert(end > comp); + lshpack_enc_cleanup(&henc); + + lshpack_dec_init(&hdec); + src = comp; + lsxpack_header_prepare_decode(&xhdr, uncomp, 0, sizeof(uncomp)); + s = decode_and_check_hashes(&hdec, &src, end, &xhdr); + assert(s == 0); + assert(sizeof(value) == xhdr.val_len); + assert(0 == memcmp(value, lsxpack_header_get_value(&xhdr), xhdr.val_len)); + lshpack_dec_cleanup(&hdec); +} + + +/* Test encoding of string that compresses to a size of 127 bytes or more. + * This tests adjustment mechanism in lshpack_enc_huff_encode(). + */ +static void +test_henc_long_uncompressable (void) +{ + const char value[] = { + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + }; + int s; + unsigned char *end; + const unsigned char *src; + struct lshpack_enc henc; + struct lshpack_dec hdec; + struct lsxpack_header xhdr; + unsigned char comp[0x1000]; + char uncomp[0x1000]; + + lshpack_enc_init(&henc); + end = encode2_wrapper(&henc, comp, comp + sizeof(comp), + STR_AND_LEN("header"), value, sizeof(value), 0); + assert(end > comp); + lshpack_enc_cleanup(&henc); + + lshpack_dec_init(&hdec); + src = comp; + lsxpack_header_prepare_decode(&xhdr, uncomp, 0, sizeof(uncomp)); + s = decode_and_check_hashes(&hdec, &src, end, &xhdr); + assert(s == 0); + assert(sizeof(value) == xhdr.val_len); + assert(0 == memcmp(value, lsxpack_header_get_value(&xhdr), xhdr.val_len)); + lshpack_dec_cleanup(&hdec); +} + + +static void +test_static_table_search_exhaustive (void) +{ + int i; + int count = sizeof(g_HpackStaticTableTset) / sizeof(struct table_elem); + assert(count == 61); + + int val_matched; + int id; + for (i = 0; i < count; ++i) + { + id = lookup_static_table((char *)g_HpackStaticTableTset[i].name, + g_HpackStaticTableTset[i].name_len, + (char *)g_HpackStaticTableTset[i].val, + g_HpackStaticTableTset[i].val_len, + &val_matched); + assert(id == i + 1); + assert(val_matched == 1); + } + + id = lookup_static_table((char *)":method", 7, (char *)"Get", 3, + &val_matched); + assert(id == 2); + assert(val_matched == 0); + + id = lookup_static_table((char *)":method", 7, (char *)"GGG", 3, + &val_matched); + assert(id == 2); + assert(val_matched == 0); + + id = lookup_static_table((char *)":method", 7, (char *)"gET", 3, + &val_matched); + assert(id == 2); + assert(val_matched == 0); + + id = lookup_static_table((char *)":method", 7, (char *)"GETsss", 6, + &val_matched); + assert(id == 2); + assert(val_matched == 0); + + id = lookup_static_table((char *)":method", 7, (char *)"GETsss", 3, + &val_matched); + assert(id == 2); + assert(val_matched == 1); + + id = lookup_static_table((char *)":method", 7, (char *)"POST", 4, + &val_matched); + assert(id == 3); + assert(val_matched == 1); + + id = lookup_static_table((char *)":status", 7, (char *)"POST", 4, + &val_matched); + assert(id == 8); + assert(val_matched == 0); + + id = lookup_static_table((char *)":status", 7, (char *)"2000", 4, + &val_matched); + assert(id == 8); + assert(val_matched == 0); + + printf("%s Done.\n", __func__); +} + + +static void +test_huffman_encoding_corner_cases (void) +{ + int s; + unsigned char buf[0x10]; + + memset(buf, 0, sizeof(buf)); + s = lshpack_enc_enc_str(buf, sizeof(buf), (unsigned char *) "a", 1); + assert(2 == s); + assert(0 == buf[2]); + + memset(buf, 0, sizeof(buf)); + s = lshpack_enc_enc_str(buf, 1, (unsigned char *) "a", 1); + assert(-1 == s); + assert(0 == buf[0]); + + memset(buf, 0, sizeof(buf)); + s = lshpack_enc_enc_str(buf, 1, (unsigned char *) "a", 0); + assert(1 == s); + assert(0 == buf[1]); + + memset(buf, 0, sizeof(buf)); + s = lshpack_enc_enc_str(buf, 0, (unsigned char *) "a", 1); + assert(-1 == s); + assert(0 == buf[0]); + + memset(buf, 0, sizeof(buf)); + s = lshpack_enc_enc_str(buf, 1, (unsigned char *) "a", 1000); + assert(-1 == s); + assert(0 == buf[1]); + + memset(buf, 0, sizeof(buf)); + s = lshpack_enc_enc_str(buf, 3, (unsigned char *) "zzz", 3); + assert(-1 == s); + + memset(buf, 0, sizeof(buf)); + s = lshpack_enc_enc_str(buf, 4, (unsigned char *) "zzz", 3); + assert(4 == s); +} + + +static void +test_header_arr (void) +{ + unsigned i; + struct { + unsigned char *buf; + unsigned sz, nalloc; + } compressed = { NULL, 0, 0, }; + unsigned char tmp_buf[0x100]; + const unsigned char *end, *comp; + struct lsxpack_header xhdr; + int s; + char out[0x1000]; + struct lshpack_dec hdec; + struct lshpack_enc henc; + lsxpack_header_t hdr; + + /* Compress headers, putting them into a single contiguous memory block */ + lshpack_enc_init(&henc); + for (i = 0; i < N_HEADERS; ++i) + { + lsxpack_header_set_ptr(&hdr, header_arr[i].name.iov_base, + (unsigned) header_arr[i].name.iov_len, + header_arr[i].value.iov_base, + (unsigned) header_arr[i].value.iov_len); + end = lshpack_enc_encode(&henc, tmp_buf, tmp_buf + sizeof(tmp_buf), + &hdr); + assert(end > tmp_buf); + if (end - tmp_buf > (intptr_t) compressed.nalloc - (intptr_t) compressed.sz) + { + if (compressed.nalloc) + compressed.nalloc *= 2; + else + compressed.nalloc = 0x400; + compressed.buf = realloc(compressed.buf, compressed.nalloc); + assert(end - tmp_buf <= (intptr_t) compressed.nalloc - (intptr_t) compressed.sz); + } + memcpy(compressed.buf + compressed.sz, tmp_buf, end - tmp_buf); + compressed.sz += end - tmp_buf; + } + lshpack_enc_cleanup(&henc); + + /* Now decompress them and compare with originals: */ + lshpack_dec_init(&hdec); + comp = compressed.buf; + end = compressed.buf + compressed.sz; + for (i = 0; comp < end; ++i) + { + const int dst_sizes[] = { 0, 1, 2, 3, 10, 15, 32, 64, 128, 512, + sizeof(out), }; + const int *size; + for (size = dst_sizes; size < dst_sizes + sizeof(dst_sizes) + / sizeof(dst_sizes[0]); ++size) + { + const unsigned char *const saved_comp = comp; + /* In case of failure, decoder advances the pointer anyway, so we + * need to save it. + */ + lsxpack_header_prepare_decode(&xhdr, out, 0, *size); + s = decode_and_check_hashes(&hdec, &comp, end, &xhdr); + if (s == 0) + break; + /* There is no return code consistency, unfortunately */ + assert(s < 0); + comp = saved_comp; + } + assert(size < dst_sizes + sizeof(dst_sizes) / sizeof(dst_sizes[0])); + assert(xhdr.name_len == header_arr[i].name.iov_len); + assert(0 == memcmp(header_arr[i].name.iov_base, lsxpack_header_get_name(&xhdr), xhdr.name_len)); + assert(xhdr.val_len == header_arr[i].value.iov_len); + assert(0 == memcmp(header_arr[i].value.iov_base, lsxpack_header_get_value(&xhdr), xhdr.val_len)); + } + free(compressed.buf); + lshpack_dec_cleanup(&hdec); +} + + +static void +insert_long_codes_into_header_arr (void) +{ + const char codes[] = "\\\x16\x7F\x06"; + unsigned code_count, i, name, pos, off; + char *dst; + size_t len; + + code_count = 0, name = 0, pos = 0; + for (i = 0; i < N_HEADERS; ++i) + { + if (name++ & 1) + { + dst = header_arr[i].name.iov_base; + len = header_arr[i].name.iov_len; + } + else + { + dst = header_arr[i].value.iov_base; + len = header_arr[i].value.iov_len; + } + switch (pos++ % 3) + { + case 0: + off = 0; + break; + case 1: + off = len / 2; + break; + case 2: + off = len - 1; + break; + } + if (off < len && len > 0) + dst[off] = codes[code_count++ & 3]; + } +} + + +static void +test_huff_dec_empty_string (void) +{ + int sz; + unsigned char dst[0x10]; + +#if LS_HPACK_USE_LARGE_TABLES + sz = lshpack_dec_huff_decode_full((unsigned char *) "", 0, + dst, (int) sizeof(dst)); + assert(sz == 0); +#endif + + sz = lshpack_dec_huff_decode((unsigned char *) "", 0, + dst, (int) sizeof(dst)); + assert(sz == 0); +} + + +static void +test_huff_dec_trailing_garbage (int full) +{ + int + (*decode) (const unsigned char *src, int src_len, + unsigned char *dst, int dst_len); + const unsigned char *src; + const char *strings[] = { + "Dude, where is my car?", + "Dude, where is my car\\", + "\x01\x02\x03Where is your\\ car, ,\\dude?", + }; + size_t len; + unsigned i; + int comp_sz, dec_sz; + unsigned char comp[0x100]; + char out[0x100]; + +#if LS_HPACK_USE_LARGE_TABLES + if (full) + decode = lshpack_dec_huff_decode_full; + else +#endif + decode = lshpack_dec_huff_decode; + + for (i = 0; i < sizeof(strings) / sizeof(strings[0]); ++i) + { + src = (unsigned char *) strings[i]; + len = strlen(strings[i]); + comp_sz = lshpack_enc_huff_encode(src, src + len, comp, sizeof(comp)); + assert(comp_sz > 0); + assert(comp_sz + 2 < (int) sizeof(comp)); + memset(comp + comp_sz, 0xFF, 2); + dec_sz = decode(comp, comp_sz, (unsigned char *) out, sizeof(out)); + assert(dec_sz == (int) len); + assert(0 == strncmp(out, strings[i], len)); + dec_sz = decode(comp, comp_sz + 1, (unsigned char *) out, sizeof(out)); + assert(dec_sz < 0); + dec_sz = decode(comp, comp_sz + 2, (unsigned char *) out, sizeof(out)); + assert(dec_sz < 0); + comp[comp_sz-1] &= ~1; /* Screw up EOF */ + dec_sz = decode(comp, comp_sz, (unsigned char *) out, sizeof(out)); + assert(dec_sz < 0); + } +} + + +static void +test_huff_dec_fallback (void) +{ + const unsigned char *src; + char input[] = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"; + unsigned i; + int comp_sz, dec_sz; + unsigned char comp[0x100]; + char out[0x100]; + + for (i = 0; i < sizeof(input); ++i) + { + input[i] = '\\'; /* Long code to cause fallback */ + src = (unsigned char *) input; + comp_sz = lshpack_enc_huff_encode(src, src + sizeof(input), + comp, sizeof(comp)); + assert(comp_sz > 0); + dec_sz = lshpack_dec_huff_decode(comp, comp_sz, (unsigned char *) out, + sizeof(out)); + assert(dec_sz == (int) sizeof(input)); + assert(0 == memcmp(out, input, sizeof(input))); + } +} + + +#if LS_HPACK_USE_LARGE_TABLES +static void +test_huff_dec_bad_eos (void) +{ + unsigned char input[] = { 0xce, 0x64, 0x97, 0x75, 0x65, 0x2c, 0x9f, }; + int dec_sz; + unsigned char out[9]; + + /* First, check with good EOS */ + dec_sz = lshpack_dec_huff_decode(input, (int) sizeof(input), out, + (int) sizeof(out)); + assert(9 == dec_sz); + assert(0 == strncmp((char *) out, "LiteSpeed", 9)); + + /* Now mangle EOS. Error should be returned. */ + input[ sizeof(input) - 1 ] &= ~1; + dec_sz = lshpack_dec_huff_decode(input, (int) sizeof(input), out, + (int) sizeof(out)); + assert(-1 == dec_sz); +} +#endif + + +static void +test_hdec_static_idx_0 (void) +{ + struct lshpack_dec dec; + int r; + const unsigned char *src; + struct lsxpack_header xhdr; + const unsigned char input[] = "\x80\x02""du\x02""de"; + char out[0x100]; + + lshpack_dec_init(&dec); + + src = input; + lsxpack_header_prepare_decode(&xhdr, out, 0, sizeof(out)); + r = decode_and_check_hashes(&dec, &src, src + sizeof(input), &xhdr); + assert(r == -1); + + lshpack_dec_cleanup(&dec); +} + + +/* Test that the decoder does not write past end of buffer */ +static void +test_hdec_boundary (void) +{ + struct lshpack_enc henc; + struct lshpack_dec hdec; + struct lsxpack_header xhdr; + const struct { + struct iovec name; + struct iovec value; + } headers[] = { + { .name = IOV("dude"), .value = IOV("where is my car?"), }, + { .name = IOV(":path"), .value = IOV("FINDER!"), }, + { .name = IOV("cheese"), .value = IOV("puffs"), }, + { .name = IOV(":status"), .value = IOV("200"), }, + }, *header; + size_t enc_sz, sz, out_sz; + unsigned n; + int rc; + const unsigned char *p, *orig_p; + unsigned char encbuf[0x100]; + char out[0x100]; + + lshpack_enc_init(&henc); + enc_sz = 0; + for (header = headers; header < headers + sizeof(headers) + / sizeof(headers[0]); ++header) + { + lsxpack_header_set_ptr(&xhdr, + header->name.iov_base, header->name.iov_len, + header->value.iov_base, header->value.iov_len); + p = lshpack_enc_encode(&henc, encbuf + enc_sz, + encbuf + sizeof(encbuf), &xhdr); + assert(p > encbuf + enc_sz); + enc_sz = p - encbuf; + } + lshpack_enc_cleanup(&henc); + + lshpack_dec_init(&hdec); + p = encbuf; + for (n = 0; n < sizeof(headers) / sizeof(headers[0]); ++n) + { + out_sz = headers[n].name.iov_len + headers[n].value.iov_len + + lshpack_dec_extra_bytes(headers[n]); + /* Inside this loop, there is not enough room for output, should + * return an error: + */ + for (sz = 0; sz < out_sz; ++sz) + { + lsxpack_header_prepare_decode(&xhdr, out, 0, sz); + orig_p = p; + rc = decode_and_check_hashes(&hdec, &p, encbuf + enc_sz, &xhdr); + assert(rc < 0); + p = orig_p; + } + lsxpack_header_prepare_decode(&xhdr, out, 0, sz); + rc = decode_and_check_hashes(&hdec, &p, encbuf + enc_sz, &xhdr); + assert(rc == 0); + assert(xhdr.name_len == headers[n].name.iov_len); + assert(xhdr.val_len == headers[n].value.iov_len); + assert(0 == memcmp(headers[n].name.iov_base, + lsxpack_header_get_name(&xhdr), xhdr.name_len)); + assert(0 == memcmp(headers[n].value.iov_base, + lsxpack_header_get_value(&xhdr), xhdr.val_len)); + } + lshpack_dec_cleanup(&hdec); +} + + +int +main (int argc, char **argv) +{ + test_header_arr(); + + /* Now do the same thing, but with longer codes to exercise the fallback + * mechanism. + */ + insert_long_codes_into_header_arr(); + test_header_arr(); + + test_decode_limits(); + test_static_table_search_simple(); + test_static_table_search_exhaustive(); + test_hpack_test_RFC_Example(); + test_hpack_self_enc_dec_test(); + test_hpack_encode_and_decode(); + test_hpack_self_enc_dec_test_firefox_error(); + test_hdec_table_size_updates(); + test_henc_boundary1(); + test_henc_boundary2(); + test_henc_nonascii(); + test_henc_long_compressable(); + test_henc_long_uncompressable(); + test_huffman_encoding_corner_cases(); + + test_huff_dec_empty_string(); + test_huff_dec_trailing_garbage(1); + test_huff_dec_trailing_garbage(0); + test_huff_dec_fallback(); +#if LS_HPACK_USE_LARGE_TABLES + test_huff_dec_bad_eos(); +#endif + test_hdec_static_idx_0(); + test_hdec_boundary(); + + return 0; +} + + +/* This list is hardcoded to make the test deterministic */ +static struct http_header header_arr[N_HEADERS] = +{ + { .name = IOV(":status"), .value = IOV("200"), }, + /* Generated using tools/generate-headers.pl */ + { .name = IOV("a"), .value = IOV("Fv"), }, + { .name = IOV("JwFgRXwWLGXK"), .value = IOV("tVoAUIJANdnIXvqcLOHBgiDaNkFlTbtwwrJbnqPSM"), }, + { .name = IOV("NOZwn"), .value = IOV("PLvXBHdzgTxVNxHGVD"), }, + { .name = IOV("kIXXrjDKZTOUVl"), .value = IOV("SMRwVKJkYvPNZISQQI"), }, + { .name = IOV("jFNYmJcccNrXASWc"), .value = IOV("SQwkiHAIMrrOHQwIauZqbUtmoXzsXQCqWBcBOxXkSIcQQCbtHqctWkpEWhlYWUMtzFWOqnkoGzvL"), }, + { .name = IOV("fsokRyUwcIrnWa"), .value = IOV("hsZveHerAFgMSQPklcOlqmetjIGlVcYtTqZWadpLaKss"), }, + { .name = IOV("iLDCDoMl"), .value = IOV("czrUShQL"), }, + { .name = IOV("bOMRHltgvWCxggP"), .value = IOV("hRIY"), }, + { .name = IOV("UswJMcnEJgComGRCHLOE"), .value = IOV("AKDeVINsfggLfyLsOduXrP"), }, + { .name = IOV("rPX"), .value = IOV("pFTzuQXxrlFeDQXZnYpMZDamKKJWVpqjgJtN"), }, + { .name = IOV("ooUcpbffAsJU"), .value = IOV("EP"), }, + { .name = IOV("coSElJCqNlkFEreA"), .value = IOV("PrjIaXCaZBMCpFzpmSJjaHvGCCRsYoPzSGUQgUtK"), }, + { .name = IOV("wMMGBskgkmjZ"), .value = IOV("gIS"), }, + { .name = IOV("ikmnlQg"), .value = IOV("fsBOEejxktYebN"), }, + { .name = IOV("wXZrTTaTcbJJcMDZTX"), .value = IOV("EWFrgVw"), }, + { .name = IOV("JibiGghpNjIFKefgXrgO"), .value = IOV("onujtLRvOEIPZtFJBsmohvNkvfEouJZRJyUoxUUjQFvA"), }, + { .name = IOV("fqKvDXNNbyaJs"), .value = IOV("QtrUzVQZBsgTKMiVUansPcLvWkkCnafnxoFQvTBxpZcjuidQgbIZwSXAeO"), }, + { .name = IOV("QiyihCTufCwOXynHJWz"), .value = IOV("iegCbvHkeo"), }, + { .name = IOV("d"), .value = IOV("fKbBzxCBWPJLzpPHISuMTwoZHFtyiRpzlyXRlgHACMarnboPAQMp"), }, + { .name = IOV("CRVCG"), .value = IOV("tYAQQRvbwemzItfohlzqq"), }, + { .name = IOV("YF"), .value = IOV("SHiJIobvtGrJVZdwwVUvukFSpKE"), }, + { .name = IOV("vjMNnPijHhDtRisnZ"), .value = IOV("bUDtxTfKzZipbafXGUprYElYfShmvkzlWaGMtWPjPniCPMarWwyaTQldvSeWwVNDE"), }, + { .name = IOV("BwSWBHTFTzQeE"), .value = IOV("EKHLAVPOjwNcMMX"), }, + { .name = IOV("U"), .value = IOV("EAtoQWetslSrVTeVJTIzXbmwVYUtAYYaObEOARSJKERNLuDHGKdOBsMzyaNTVItnWKgW"), }, + { .name = IOV("KxvErvxETMysJCpcsQP"), .value = IOV("nOtKFxnHPSNaDWLojeQiYkJNgSCwGkfFaHIfuVdVPr"), }, + { .name = IOV("XBWGtmuOZnllaPZAj"), .value = IOV("vvqlYHnwZZHIAIaeweEhechJMGcqTwTOhkeGmKcXucSpgPRxvydm"), }, + { .name = IOV("AwHlzHgKLPxqjQ"), .value = IOV("XNEkYXFOmj"), }, + { .name = IOV("fqFsuhroPAUU"), .value = IOV("TqoAFegeY"), }, + { .name = IOV("DjgCKfmMYG"), .value = IOV("hVbmbsyawdK"), }, + { .name = IOV("Trmvf"), .value = IOV("eZXQfrWYssiJSviraCdgHJxnQNZdBTbkvqNObubYXHbAgEbYqgsQhdImYuXIxoHVWHpdwVaFK"), }, + { .name = IOV("YzATDLJ"), .value = IOV("bwZKJi"), }, + { .name = IOV("sRqsqrWoBXgmd"), .value = IOV("uZH"), }, + { .name = IOV("fVRueYSqUQGwvBo"), .value = IOV("YxMHTlsf"), }, + { .name = IOV("ab"), .value = IOV("XtpTxRnzHVhLZhPQsfHiSfQsxWoRWsRpEHjXjcFcRQHzysvMVyVIu"), }, + { .name = IOV("ApjyCgLorwLueNpIy"), .value = IOV("OvEKJhywkUXSNgNikHijjLeSpKPixICfFNvHEJctZttJeghRtSwCaAKMdEHaAb"), }, + { .name = IOV("qxklmfZOXK"), .value = IOV("gGAgeeRuBaNYYBZpLxfVrVqsotCWpljSMBRlWgoZjZCLdLq"), }, + { .name = IOV("sYsecB"), .value = IOV("KneinITgCFRBdfGCitwGYVGWzDPJkhFCdJaRUKXVdzTtzKpCgXb"), }, + { .name = IOV("xWn"), .value = IOV("TkaUBBWsJRSXtFOlmVEplIPQfRrzrFdqkgzZDaCZwrcMXufnLKmbEKyDTcOAofXUD"), }, + { .name = IOV("MDaLNxPv"), .value = IOV("vnCfFo"), }, + { .name = IOV("VpFvlKoDOsUNUi"), .value = IOV("xQxrvDHmsfcposZDivxiyhBClmcmBgSCEkaCumYvhBxJeSQPWBgZs"), }, + { .name = IOV("PHzSkahGwpWCTUDudK"), .value = IOV("uMyjPWZQjOjItzXbtalNXlTnh"), }, + { .name = IOV("iQkBvWUtZvTXLPzObhX"), .value = IOV("gZOzjZfNVGfJJfePdMlddzIAYwrUfcxKxyBgfdyIMwAknADEIByNxSRcrOPURvNKdsvHDzaZl"), }, + { .name = IOV("cJfAdYhPSHP"), .value = IOV("lCoAXdHT"), }, + { .name = IOV("qffCwLZRaNTvlH"), .value = IOV("gplMDEYgvOXGwkqD"), }, + { .name = IOV("vOWtuIfcSrR"), .value = IOV("dOLiwrfveWeXuRvRMBtuJocxRadeZQMckJBwWcWViOcxQf"), }, + { .name = IOV("lTvWXQGZiFvfwwRuPJ"), .value = IOV("wWFfEKEtPZhvRlHNGuFvEYzETO"), }, + { .name = IOV("lGYkFYoEgywElmNMK"), .value = IOV("gVuHvUZlfsCOZsvdfKYnWDocojREJmBzSfRCuyfNBtXXfGPfQNJcbckkJKr"), }, + { .name = IOV("IaNjS"), .value = IOV("XZnCGEKTBNkbTdcMrdEGcqxZyVGrJVkEymVxzsi"), }, + { .name = IOV("XKKhqxwqcvlUWSZ"), .value = IOV("NxIZeewUfDiSiD"), }, + { .name = IOV("MlTmIXJ"), .value = IOV("AncPKVLzUchKoKLSFyCop"), }, + { .name = IOV("TkgzTWKbsdOxrohnWNmq"), .value = IOV("XRfzukuHYD"), }, + { .name = IOV("nRx"), .value = IOV("dDWMrNUMwCSsvOw"), }, + { .name = IOV("FAubvNO"), .value = IOV("RcqaiSjrxRJgjPAGHxbdOyRVGlpFaIsbyCwCdkouQYuPUDOrBFcyeCLVlwzEcraWdyQ"), }, + { .name = IOV("RBUCgU"), .value = IOV("cktucIrsNANCanonVPwVZAZLDwpovifsenoaDVyjdSDVcaGKidpuEfr"), }, + { .name = IOV("VMpRnqzHTciNA"), .value = IOV("cAZTtjsaxmfcwbjWeQyeACrdJFCbKOuYMtRprGVweBBDEIBnecroFVGRdbkMwDiUevfZRHtQsHUuZwXi"), }, + { .name = IOV("WLZfjUDHgmhabHCDYWuN"), .value = IOV("hyJMsJUEHfeQyVLDVFoBnxqjQXwtc"), }, + { .name = IOV("udfYi"), .value = IOV("autGUVfpsCZICUQOyTFkcssjURUFvsNTsRpduCizBoZLG"), }, + { .name = IOV("EOCDyfAYZVOfEs"), .value = IOV("wSxNqBvLryBGcNxmXHpKMozIrVmjztcDymlCIyUwdCgVkGgk"), }, + { .name = IOV("QCwdLlognwWEAKv"), .value = IOV("LhOiOxJwYve"), }, + { .name = IOV("jjz"), .value = IOV("NaCGdOodBGYXXlJmFOJjmvvtNbXXZLfWxwdCbHoKNeXhwnXTlXbedsWOhYLtRmEKfaKCKtqc"), }, + { .name = IOV("tkEjGyxDSimN"), .value = IOV("igfTEPPlHFMgtWIQMElRBEoLwlahmKnRouiVDGIktcCFvzMKnM"), }, + { .name = IOV("nQJfMRa"), .value = IOV("pyUXfaafdHHxCYCriwWQNjtRmuXmFmhYmogMhoZUkxRdGNTcIuf"), }, + { .name = IOV("bUMr"), .value = IOV("pQVxPKkcuZVjAfvrZaNPuYyTxei"), }, + { .name = IOV("yxKyuraVwOWfPsOtsAO"), .value = IOV("XeGUmAddSWSnuXbTjS"), }, + { .name = IOV("ogJvsGo"), .value = IOV("oirQCiiNqSChgMzwkDSsyrTkbjkKpIXyzybazCauGIuaw"), }, + { .name = IOV("MtXVStjBGyMgsOHVygI"), .value = IOV("sERlIUZMPxqGjWyIWtCtCcGgnIkpbpuHoorgnEYLzmklZQpdhrQSdQYGlX"), }, + { .name = IOV("EjsmEaVQYwbVIZvLVyD"), .value = IOV("iK"), }, + { .name = IOV("eITWAMw"), .value = IOV("anAHAgmoWJrIDAgcMIWHrnQRZeiaQg"), }, + { .name = IOV("QTU"), .value = IOV("KdlzoMxxeIZqIwudosadAgQyUDscmBvZExFtukiMCpBTgcMAXPJnvOtkzvAYLHJQoEZixnjBVoQ"), }, + { .name = IOV("XwZsjF"), .value = IOV("zPeEApsMZDjxuMqHfmvRkkJLNcrHMIybOjNrBdzBqg"), }, + { .name = IOV("wYF"), .value = IOV("ahUCoivUrHgcjsdyhSCoogklZffxdFFXBRBsGrrqZMidcvcu"), }, + { .name = IOV("gVviJkhVSl"), .value = IOV("xDDAqvMlyCbHEXWxEZUHwEgvWkPtXyiEyjdwhapOQtyFQwMoU"), }, + { .name = IOV("UijgJXIjyxpEKTOQWd"), .value = IOV("POTha"), }, + { .name = IOV("UIdSSNAnLYxZznS"), .value = IOV("ODvezqwvHsHrjdrlMdclZBefSBFinwkyvYWfvLxaEswxgZnQmCBmC"), }, + { .name = IOV("bv"), .value = IOV("WUYOGCyLOPgZFKpvtYSKAmNWqHUbZeZlpxSgZeMmewEyPnFtzFnzNRqhxMbtgoIpeDIvT"), }, + { .name = IOV("RCvtifVnBFrzwsN"), .value = IOV("HWgAOYKAYMyGkPkmkqLfwUHQoHlOoXwMfplHrMjBvlaLAqdAYnozkiOplrDyyQuaPKLXEwpyrZ"), }, + { .name = IOV("EUcjPsrKdvTDjU"), .value = IOV("waXsyzKzyAeeTFlJlZiTWMoXqQIcIEsumPZshHRzWniDKJXMIJdxlgpdhygywat"), }, + { .name = IOV("rluwiiInIm"), .value = IOV("xmmhNiyIRZGfCTJqYShqtwlcKUgAYpRhQzLpphYPqEtLUFvUFwbFKVLOGLbhhYMXuFsdLGHNWIkpfcvq"), }, + { .name = IOV("CxtGakJnszPBMHR"), .value = IOV("DOBvUnTgaXPgePVXUGnoGbLUPdusotheRNsbtzhUMizukWGsexAnYXYXRxzqftzUWtamX"), }, + { .name = IOV("hrxU"), .value = IOV("eSYXicRILNtmOucqCxYiJSnas"), }, + { .name = IOV("hwXTB"), .value = IOV("nENDaICzxxTdGfStCjxBnPCXErglMHncPptgqKQApRHPHgHXbRRLarLUcaOHRS"), }, + { .name = IOV("qecJryTMSxk"), .value = IOV("okOFRwOhlYbhqzLLyLOR"), }, + { .name = IOV("tMrtUvH"), .value = IOV("eCqwBoWaALxkrHGtMmggzaPqUwdGMztrcBZmWcXcnjIySGzZVBcpoewvRrO"), }, + { .name = IOV("UFbpaDoHZdvGpgfFjQa"), .value = IOV("nITdQrwEhuPGhnIJLpdOgzjNBDTOPKinQpNtVyVsSLNBKmHYQyyuUx"), }, + { .name = IOV("UXOL"), .value = IOV("NOwKNkVIAMxwCCUSWMfuwQvmYSHyQUpzjzkxujGcOGVPUCJsnocHefHSLCJzNOfjs"), }, + { .name = IOV("XfiBDPdmC"), .value = IOV("AXMqhobsCYYnysgg"), }, + { .name = IOV("r"), .value = IOV("CLOqTHNnUj"), }, + { .name = IOV("kiLzzLMiQik"), .value = IOV("bcnHGGbuPGyqOuCLui"), }, + { .name = IOV("iQqsZT"), .value = IOV("SZukuowHIesKYC"), }, + { .name = IOV("txHZZgduulxyeT"), .value = IOV("GEDNIQcCUpFNvDtZ"), }, + { .name = IOV("PbIHD"), .value = IOV("xCQHqmFsxbzWpuPOTBFgLUpYzdgJtyPBkEYHVRODlLRoXHQoWmDvMNBq"), }, + { .name = IOV("ncaasdySEY"), .value = IOV("SmixDbQXHMkJOujGzjyWkm"), }, + { .name = IOV("BvGcmWnwbwFBRNcqSG"), .value = IOV("mLjpHRXUyklruCrY"), }, + { .name = IOV("xDddcTrDv"), .value = IOV("eWtEJLhrmYgrSHEZiunrMVMLxHcYBjMfmdzIeHKhptBdZmKFOEkHfIDg"), }, + { .name = IOV("iosEO"), .value = IOV("jyvYgOqCauYdvpYTGxPalaASrVUsKkYRwLAzbdCohEn"), }, + { .name = IOV("TbqkulxviCgYOrOtgeuY"), .value = IOV("zFCiDjetrVK"), }, + { .name = IOV("oRceIHETaOqDqRPl"), .value = IOV("BIjGGLreOSDXqkVYVoaupQxXmkhYAUnRosolhUvF"), }, + { .name = IOV("tkEXneuwlwkTO"), .value = IOV("jAmbLURPmEMYousdrVcNdeyxxRIZq"), }, + { .name = IOV("DMYEIRHtU"), .value = IOV("JDaULQUqQkvOzEpPKIWouWMEuxTNyRiFevh"), }, + { .name = IOV("dI"), .value = IOV("AecJgvXAT"), }, + { .name = IOV("MQBZYEDyzRPbGrSl"), .value = IOV("VZzydvYbYXVnYOBHoWTBBLfUZMKuOpztzemMBFqNgzpMOAqQEVKMKGdWB"), }, + { .name = IOV("bzlqHfxYviUAxOSIUDQ"), .value = IOV("foUjCUhNZSDAqLWgVMqdnprkLsZNhBdmrzXPJsXxuU"), }, + { .name = IOV("zMunPNwxETjsFTvpO"), .value = IOV("eDHwaGgNEz"), }, + { .name = IOV("aByN"), .value = IOV("nsRKRzDjCYvLuQNbKuWgWtAHDJuCJALAQPofQqpRSzStVjwSEyporbjMnnPMIlH"), }, + { .name = IOV("RfwokjPIjqdslu"), .value = IOV("BoaxDwAvoorhJRjCI"), }, + { .name = IOV("nBpHDIgpkAJry"), .value = IOV("YeXHMKPAfJYqkSoQbmapFIPnjPcSqJkYOxQEKOOqBecfYbUFpKXOKdTvjytCa"), }, + { .name = IOV("LTApcdtACDM"), .value = IOV("kkvUBOnBuEArmUweYcUbNRNyZzMPkEsaXSEdsfCkPEFWE"), }, + { .name = IOV("sWe"), .value = IOV("mMEQvujpOLJdSQbOLTqTOcEdpyFcLICqlJJpRHKhqs"), }, + { .name = IOV("PxRPQhkCRYO"), .value = IOV("CLqaYWCQjlQnmiIGQUTTkWtVEONdUNZVvywShCnanbtGJDIqnOwGLutYmGyNlPCmPHjfvrn"), }, + { .name = IOV("jMJazyjgEqrVAOCaoxUc"), .value = IOV("dFjAvsTJqJKBknyLRlLtcEXHKUqGvdPStFjcRnFoOxkkpFHLDxw"), }, + { .name = IOV("bFILAkfOqRq"), .value = IOV("DiHFtXTmcQZZCfUkbPVcwBFzhSTWTLQEkDxpEByxAoVyOAvQUiMfiKBmdtlLNLVcEjtuAHPLxRmfZR"), }, + { .name = IOV("KIOF"), .value = IOV("YdqRfXmxswrglyjJnVFJaVyNkHCbbNgQGqDaIhMTZgOHHZKMqPjMgyiKdnrmrrrS"), }, + { .name = IOV("RTqPDPlTDhCgwG"), .value = IOV("VkNJxHEDWGphtXEcMQjlJ"), }, + { .name = IOV("rhfxNxzfnn"), .value = IOV("xowlQuPzarHsbVjzLDsrCIeKjqdDxclUpIypebbalSbAizqEkIMdWdw"), }, + { .name = IOV("qBjdivJblschpR"), .value = IOV("gTRiBzTSYuuYxBryNefUriTUaJAWoJAJhdkRzcsedPZTArxoWbviXWRORyGKlfYcejSSyitKH"), }, + { .name = IOV("NPlfPrfF"), .value = IOV("zkFjnIfFMxIVHcVZAIePhmMmHHvLaskTLBGbDvCwRThJhpGZNvsAQwciYGBXJV"), }, + { .name = IOV("VHVmn"), .value = IOV("vBmqJTKMVTOEyDLXN"), }, + { .name = IOV("cyEbzpDSmsJvpdzV"), .value = IOV("WnhrmYkHrqUHHqAEcWlCIhEYitrpCNsYrliIiniygKSRrVpLPjghdNcvWQPsYsMWXtrodHAHe"), }, + { .name = IOV("Zwok"), .value = IOV("BXoHFLSEOhOZKkdUVjJYPkWRdXULrzzBIkbyTNzfOSJUogRgFWizxorgdrAhyFBSWJULyZrkHMzDszX"), }, + { .name = IOV("Q"), .value = IOV("eaAtxYzmdcUhkhfsARRGtEWJTOjEyhXrIpGmUztxnIQP"), }, + { .name = IOV("NXZhbOLzxulGnfInBWsr"), .value = IOV("dExcZgETTboatzXcxlaYuKyPuZnzdUFbYSNNEjNdVN"), }, + { .name = IOV("uvtURMPvOIXSEyUOW"), .value = IOV("lYIpQDB"), }, + { .name = IOV("ryQCkixF"), .value = IOV("fGnJENfnWWHZhcrwexVPMhdohatQFSHMmVzvVWelmNJyRdGbMTyOxLUWnQgNRhZyikpIYg"), }, + { .name = IOV("EXquePdkNajUtrisN"), .value = IOV("ntqsxPnrhkUoldcV"), }, + { .name = IOV("nszZfgPCdbV"), .value = IOV("fGVtdENzyLXcZKbWIIwYYOynkpWldRhpwagfQCeZZLlJPUtpq"), }, + { .name = IOV("kHyDsPQzqFvdLfKx"), .value = IOV("TXjPxRkwYbWpPIqanigQbuvlrdbnlSnRSFPvwPrTnJVKPlFdXtABbxuRCAmWKXAQIK"), }, + { .name = IOV("fcMrsJTPFbwOgyXC"), .value = IOV("HrKnmIPDOBcbKmICogZDctLQZdSqRJoqyqAKvTvKnuhjbuAbFkYlDpyghpGBoNBjHofLGt"), }, + { .name = IOV("DsmQNMGzvpQUAbfyiA"), .value = IOV("DwDnbnTxmnyjruISXCYwHQHLAFCeFQbRDjnJtLTQQHueVrWoGfsGS"), }, + { .name = IOV("wbjMqThdeF"), .value = IOV("rMlAwIBbMXsmyBEqPfFbSnQrx"), }, + { .name = IOV("EXVIfJnBbmiZT"), .value = IOV("U"), }, + { .name = IOV("DnTAvNKs"), .value = IOV("rIrdRaSFbLRoDhfbrwLZdfWqKNtgGNTITESnAVHhZaSvAsemeS"), }, + { .name = IOV("o"), .value = IOV("ZhzCRteLLESjeBYPcNprCWzEyqIGtOzWWbawtxbAL"), }, + { .name = IOV("DwBuZnphTZcHdtuIxOTs"), .value = IOV("gfleeyOPENAyiSrorleyWFzBCjLYWilBrCcztaVRuecBYcymReNYcKOsWuneRLmDdqARGTGlZiZTEFW"), }, + { .name = IOV("WyMxYWmFeAtqZWwpxh"), .value = IOV("BVEjjhnFgRWPiFPxVLxyKeMTcBCxociXVKNFalOhF"), }, + { .name = IOV("wXcMYvh"), .value = IOV("EGuKlhPOfEyy"), }, + { .name = IOV("gBUAujWqTBnHyaqnTpQ"), .value = IOV("o"), }, + { .name = IOV("yE"), .value = IOV("sthvbpytXfSPzEvzCizJXHjRPtmfOJfWMURdrKawBxPUeIuqUVVoxRcOOEQFp"), }, + { .name = IOV("gshDJqAlLfsUfDlqaP"), .value = IOV("vagEuPwWwLkJruVOJNmNUBgxTrjhXoZqIPNEbbYwdkimYGgzWsRqqazypjgJlawPJQSmMCAsvwMyU"), }, + { .name = IOV("iOtOydILydxuWwzU"), .value = IOV("y"), }, + { .name = IOV("IeiAZxAfdAjW"), .value = IOV("VbWrafZwoCdjbnZpVGXEhFqsIpAWnyMcuMMLzrNv"), }, + { .name = IOV("cH"), .value = IOV("uOAtUsxZdDfCpAVSpwFGwkDoQNwVPcoxQhVJLHWwYzuYcdzgfipzggPu"), }, + { .name = IOV("CGNMtcMFMiLrPNTe"), .value = IOV("SeaVyhuzOjDtDlpbuMYbuQRGkOuoGcaXoZsGtpKClAceJVlMXgWWdOMXAGBlnjpqLavnc"), }, + { .name = IOV("EDHGGG"), .value = IOV("MugWswitOBpamaigqKKhoby"), }, + { .name = IOV("eMSzSlLhKT"), .value = IOV("zcqJdtWiEbYrYXGdOPZAMVEdmBdBgIwIfPeqLitDPNOzOPMGeCOPIoOX"), }, + { .name = IOV("CRpbzCaDymJKEQopoen"), .value = IOV("dodwdskMMZCIhCkgTZhXDbszdihZsSEuSFKremTMEPDsNbizJLOqMuErTFwFyPJDPeSvGIWwMTo"), }, + { .name = IOV("jBHzYqLEPjQZxSQZuMSN"), .value = IOV("BgSbZFlfVEIbXIVGjbZJmJNGKzPrDbLYMdRHljMyrFrBaPinZfsBLfBntQyoUpagHGezOAsFpjlKWQ"), }, + { .name = IOV("hiwZtQiQGAdvtbsLG"), .value = IOV("WIjqnNIpQarNrvjRD"), }, + { .name = IOV("Ctf"), .value = IOV("MDIvJKeKIreWpXMqYlJaTQW"), }, + { .name = IOV("LDrqJsQnWGCgVb"), .value = IOV("BePauQrBGeWbLeSKrsyoKOvYQIwjcIVTbgWwgRnBK"), }, + { .name = IOV("HCZ"), .value = IOV("wpymhFgtgJRKNmHjjz"), }, + { .name = IOV("reTHeYCHuGclLSuiW"), .value = IOV("QoZZLiUDeGtvrbvEMKYL"), }, + { .name = IOV("rnqdHuIabJmUYwun"), .value = IOV("iVXxpnbzMNEzzuVmM"), }, + { .name = IOV("yGiLdGRCelTCBm"), .value = IOV("GkmsgeygvBOEXZLDwkXplTKXtdxAlIpwqRygfFNhRRFuaaBTR"), }, + { .name = IOV("HpZHcSOhFp"), .value = IOV("eejlKtIKcTkRzFcEqwn"), }, + { .name = IOV("vzOKgnytLDobV"), .value = IOV("WF"), }, + { .name = IOV("yXZOOHbinGBiAvgLq"), .value = IOV("tgiWBUgUYAbPiIthmbTUtkQcYYvuIOwgRfGxIDmQcnFIVvVFDzuROaHTnQVf"), }, + { .name = IOV("eUk"), .value = IOV("HNbxdIyoAUUZctZuCTWuvZOlTo"), }, + { .name = IOV("kYkcEmwXZdlz"), .value = IOV("FuDdIVebUuLXHhfUdZEJZXAzJeOCVNKKKrvIDyDHZJbqktisAk"), }, + { .name = IOV("wsCXSNfEFSrain"), .value = IOV("cWuDFJNYDHmTsmrFRifzo"), }, + { .name = IOV("jYFICqzgXgEkYvZ"), .value = IOV("VPyaOazRcipXPadxLhejwjdTHzMbFGipOxgmqKpXMSGoISwiPvEltmpyfBDRJj"), }, + { .name = IOV("GDjvmTnpLtfJcq"), .value = IOV("ZwplKmLjyGlJCtkdDBFjOnEhMQbOIdaBWZuLVPAqTvntgJr"), }, + { .name = IOV("XfU"), .value = IOV("SyJDmvxdOsKWGCqAsVSraYQEaGWCcCNMTS"), }, + { .name = IOV("bAp"), .value = IOV("OZVordXvlZTMbOjTeCmiLOnXXvoDVTnNxDqLceBVrS"), }, + { .name = IOV("ERMxEKvHhkgSwpFWn"), .value = IOV("ptZiD"), }, + { .name = IOV("tDZJTiOZeOHwu"), .value = IOV("BDjlJRVpJutiNKQV"), }, + { .name = IOV("sn"), .value = IOV("zswqsvMIBladiYJsl"), }, + { .name = IOV("XsAJJrygddXfu"), .value = IOV("QsfCetKI"), }, + { .name = IOV("vtHQYKscro"), .value = IOV("tExiChTEiarsrcHVlpRJXHgtTbEsnLXtL"), }, + { .name = IOV("QycSzfh"), .value = IOV("kopPVoKmyCqcuSEPCeRseyoJbUcBWYlpmCdyequbybwdtMBTgChM"), }, + { .name = IOV("UZWD"), .value = IOV("OajMzZeXvehMNVLJQBsczGx"), }, + { .name = IOV("GDD"), .value = IOV("JMNpBzzbGRgWZzOIPcWtenMFFMtipVZnGzagGTXWRWCstNAeuASRiRjAFPZ"), }, + { .name = IOV("IkBeufnqUPqysxjsr"), .value = IOV("hskUPcFhplixqvVuDGTPxHpOg"), }, + { .name = IOV("BxREgvTYDBDXWGrnvUjQ"), .value = IOV("fTMhBwUGAhzDHjwNmfKjEvHbmhqQlvJwOOrQk"), }, + { .name = IOV("WUmyxelGaDiupfgxl"), .value = IOV("ShBbGhPawS"), }, + { .name = IOV("lXgJeCgGPkyMpAR"), .value = IOV("rzyTVyCqiRGXgMfkjPfBUbntbHhKXYEiXZJDKhxHfvamZoWZfOfsZvDCNQYlIHQRTgaEQlx"), }, + { .name = IOV("XHJicTpNoW"), .value = IOV("obuvpjfoReBNIX"), }, + { .name = IOV("jtEVPWCwsk"), .value = IOV("bHVemoFZVBkmrssQOafrwGkRDgAcOpKIJPMrVBQBQGDvHuTJMdtEfeKmZwOlRBORG"), }, + { .name = IOV("EYBMRtObwQTqOmKbFoNk"), .value = IOV("FThuoUlAjqEGISHBRYTmYA"), }, + { .name = IOV("cGxeGJ"), .value = IOV("DYpwAydJzXnIgMZDOaCStqbIYwdyD"), }, + { .name = IOV("dyetDzqTtULuYYgTK"), .value = IOV("KXReaziMoos"), }, + { .name = IOV("nGKDFU"), .value = IOV("K"), }, + { .name = IOV("sIGjWGJINZi"), .value = IOV("PoUXACXNuYVaPAMtsvhfeZhRUcdYcWgvgtMOjTCW"), }, + { .name = IOV("IKZH"), .value = IOV("VLSjRsktLMYuDXmgZFJXfVHbeQTLxeAjcLWLzyGHFYxewnC"), }, + { .name = IOV("vmVWZPCGisMy"), .value = IOV("vTbgqxX"), }, + { .name = IOV("PTlE"), .value = IOV("LGQwNdJKM"), }, + { .name = IOV("HG"), .value = IOV("cYxBOZGHzVWKRtFNOCvYgXYXrWqDBAfxlRyGxBnqHpNTEunKfDUDAhRlyETZTT"), }, + { .name = IOV("VjVkCsG"), .value = IOV("MTjhsfopnB"), }, + { .name = IOV("Hee"), .value = IOV("GfQaTFgIWpRltXCledjVzRuaYtmSmzPZeg"), }, + { .name = IOV("GmAsIyjKoogwY"), .value = IOV("vyCpAXvvhSvDejVsMrvCAQSIjXbrDnnoXRzUXhcCchXBJXeG"), }, + { .name = IOV("zofOzgWrAduC"), .value = IOV("BoKOSgcGaKljRknepviLbjJQXctApFomLOTkyLMMQudiGzkIpiHsBKpXKkgOOGve"), }, + { .name = IOV("L"), .value = IOV("KwLIaTKVEii"), }, + { .name = IOV("rPotNZLjvdPXwHbm"), .value = IOV("lqhspDQumXhsgDRoFqRRvAfOAi"), }, + { .name = IOV("htETmtDRUhOTeUlZD"), .value = IOV("LtZZrKDc"), }, + { .name = IOV("kdxrEhALMCcTnLIsNj"), .value = IOV("hjUTWlFzSZxrxjULRUzlzYMATvZcsCkklgLXPIJgRofKM"), }, + { .name = IOV("STulJLnbooVwvZTDfP"), .value = IOV("eMzSibzbtLwWHtXLEByPhwKsUQftmTrGasKvfIJENbUwNcZfTVjjSsTzJOOz"), }, + { .name = IOV("ZC"), .value = IOV("ZCaotQadYAxToDpATgiVfTKGR"), }, + { .name = IOV("L"), .value = IOV("TCTkEIsvpocbLO"), }, + { .name = IOV("DGmBglwE"), .value = IOV("EyVFAObJjqBUFRqHlEtgahCWdltzvMOHxStWawWgYQhjQZTr"), }, + { .name = IOV("PPRwdWgBD"), .value = IOV("WxvJOnuEFlQBxrdzzbubYVljtWUENcOyHnUxGVRIEuHFsLECApNYNg"), }, + { .name = IOV("TnuOJhLZxFiXGs"), .value = IOV("sxjNRxcrFuJyXqiUTQmqJtHkYfFrUTiVgaYyLjzmNLwMmIEofLfrdpu"), }, + { .name = IOV("ISLutXyexUqmwvDt"), .value = IOV("yvEfoIvlqgoYwsUKGhMLpzBlWHThQnpglDQFjWwXLUEcCTHykbspTWOmhtzZROpqLkRwriugwkb"), }, + { .name = IOV("pn"), .value = IOV("brLFxQbMxVLtmFNZAhUingVlrXiVvnxWBqNVPfwTmmVUdZscYwxgabOGuXzKwmRf"), }, + { .name = IOV("uZAZfQODCTzBv"), .value = IOV("XirwLqLXhncGXnFvMGJIifKYUjsjUZPAvjNeNXascOjkxAHVQ"), }, + { .name = IOV("YhBCS"), .value = IOV("ZaZHUxGcJuDLjvCkASpjVBnQSpWCl"), }, + { .name = IOV("DIhYoEPEWUOL"), .value = IOV("qFwlbxuVuMBDVMLSrasAoweuQjJyudBdTWNrmOOYLvhLu"), }, + { .name = IOV("iPBLGfxFMece"), .value = IOV("fpmCn"), }, + { .name = IOV("OxdpgtLVUpMITFf"), .value = IOV("UiAOuMYDEYVMpZtLYxecYXcZNlPSPIuloNQQHoYK"), }, + { .name = IOV("ZZSILzVXcYSGDHeuRlD"), .value = IOV("WGyBZlGIteRkXZRVMqplVzkwvmUsOrpHByYadfcRZsnk"), }, + { .name = IOV("jAdAgXhTK"), .value = IOV("DjUHhhuMKiUulzrYnhDLQN"), }, + { .name = IOV("iVq"), .value = IOV("xjSwoSE"), }, + { .name = IOV("vv"), .value = IOV("pdTvkRzccpjdcZbyhgqpXfsKFxJgUWdqbbTGfVwUyYsrvTvfHYEMXSCgZJBFtdTybDUxHOMoyxWKSxm"), }, + { .name = IOV("IYCD"), .value = IOV("eftknguulFyzpVpENvk"), }, + { .name = IOV("xaEKjAyLTHK"), .value = IOV("kvgvxPganJrN"), }, + { .name = IOV("qLFyPnrkNMgJa"), .value = IOV("LgjTpfXFGoGoKSZXvGAwEslJncPRogHQalXLaAxqGESgLliZsbtLfbJRJxeNGgeeeotNtjvpRW"), }, + { .name = IOV("rg"), .value = IOV("cGICkeJNXHchilhzXWxknpBaDZLwLivEMTtczdnTzA"), }, + { .name = IOV("WfrpZfQIKTeiUJdG"), .value = IOV("jFLWDNcVJaElosYVHLaKGSkGxVMXCtUtxOEHUWrEpxQGlZXhXGXwdxFhogZNizmBnqqAPnjaqLcGdnct"), }, + { .name = IOV("MGuWAxitHPnQASJlXwuT"), .value = IOV("lvJUkiPWcCXmhTIDFIBVqQYsOHxCSIrfGWWSdDwCVBRJuMqt"), }, + { .name = IOV("gnRKRuBBvqyP"), .value = IOV("KUmEUOwLsXthxZhnwEbucFGZYzCgbtbZjfmhP"), }, + { .name = IOV("qZNzwIDBdlZFxz"), .value = IOV("BSlmLeMUHzaJrTmfBnldBmgaqEAznaWywNvVIiW"), }, + { .name = IOV("lC"), .value = IOV("dKWvYdBmnTfmyUVqpmtKwsF"), }, + { .name = IOV("VqlX"), .value = IOV("djuCTiztFzJ"), }, + { .name = IOV("DjIBOl"), .value = IOV("EdHSMuVUdlsCsS"), }, + { .name = IOV("aqzRQvYzzxOG"), .value = IOV("fcrpbvWFavlTPZDZzpordNiPOODdRHTfWzqgKBrGAEhjSHShpxvihMJnK"), }, + { .name = IOV("OBh"), .value = IOV("OuKVREmnyGlgcEBo"), }, + { .name = IOV("jTYydxMqOyziL"), .value = IOV("JvzKKMQIYwzXLYxQfoSCsFtSOOUgeOFjywwohYvGFGvrvblhpzUBrgkb"), }, + { .name = IOV("LXBRXUPDN"), .value = IOV("HABWtqXSHWpnLAtwCZEeaodgYGiCELiPMuyPmzSpCEfjMQgVeLMtfh"), }, + { .name = IOV("RkhdssFxICwoRmNT"), .value = IOV("QLGzdzFXpDrmEp"), }, + { .name = IOV("YzHWajPfbalaAroVN"), .value = IOV("xfJRbDKUeEnqECAhqBzFYDMTFWASDUiQorMIaMbHSHbzAvUEkEKOJf"), }, + { .name = IOV("TmmpA"), .value = IOV("xgKNLeCmuctGjPZGSRbPyHifvgAxZNLTdUQcBRERZdBkRmJYNA"), }, + { .name = IOV("UCEpHjfDhuodMlmOTGlA"), .value = IOV("leiKacyWcfXpZEyUzEomcQjwEdQwOIsHhQFSuRsaVpmgOnUoKglGPtHL"), }, + { .name = IOV("aoftiQHYxuUScc"), .value = IOV("fnslWBXpmKYUqoQnvfOQunucfom"), }, + { .name = IOV("TJwXsbWHvJpO"), .value = IOV("YYpiwXjKelHCuNpq"), }, + { .name = IOV("dOXiJosZUGCvtapj"), .value = IOV("UmkyEyEkXLeEbGMzvKzBajsokvhzaYTfqsQnFgEO"), }, + { .name = IOV("kINrRpt"), .value = IOV("EbVqNfncJKGYrfyoqOYwntLpZFpKpfDJFsFgzlnpVtCGRiOdjLzsrxFppvyAQcGw"), }, + { .name = IOV("IYOFREefkz"), .value = IOV("tSDSaxoBHPiZZfzeMyusFjJLZWO"), }, + { .name = IOV("hsdzByVHugam"), .value = IOV("vlnRLvuQHrnlpbsQoGwFEJeyzaKeiGubsNKxMiukYBGBFoDYLSEPl"), }, + { .name = IOV("QrlSTDd"), .value = IOV("I"), }, + { .name = IOV("GBtdvdviLtYBhekjSPss"), .value = IOV("VVlMWYcRfPDrAcqTbtkSoHCpyFVqrtsaUBepatkgOvXTrDahwBbHuSidZuPxCKFcFRBPfNY"), }, + { .name = IOV("qRbbZu"), .value = IOV("EvaAObJUoTLdHccIJDLNvyDHaGeTlO"), }, + { .name = IOV("XXXiclvIRjPbZ"), .value = IOV("hDXWokhxnxvgLqHWyMwFwtyxXo"), }, + { .name = IOV("eGXIaGhzDLA"), .value = IOV("cRzxrFntYQCTRRJfaEUqqWomDtpGxnYlnHlOeoXepII"), }, + { .name = IOV("u"), .value = IOV("VwuNWmQkhoyYimzyUz"), }, + { .name = IOV("PZSjEGb"), .value = IOV("KcbIoCk"), }, + { .name = IOV("UCEiDhWyueWgerf"), .value = IOV("SJLDFIWXJFqKBNAfXUfPECiIlaHpmtYQvFVDtksjZcZnkteokOrAbLCwAyUHoaJXTYXyr"), }, + { .name = IOV("uAysQPuDnchSvfty"), .value = IOV("UDxQtvMguVFAK"), }, + { .name = IOV("aidpb"), .value = IOV("cMStWAMwkEVzEgXPZPJsTrWndrqPXcToIjHxwtMQtpmwT"), }, + { .name = IOV("FlGbZvywsNytnf"), .value = IOV("HrebbyAWIsNLPDxltddcABjpjHKySpcAoopNcOwRQvWga"), }, + { .name = IOV("rBls"), .value = IOV("hqVSaYqganXHoEFBboTTzekfhFGQFTYgpxTFDvjibcYDiLljmN"), }, + { .name = IOV("vWqfTmWayoCbeKmRUPT"), .value = IOV("ShyIDUcS"), }, + { .name = IOV("ethU"), .value = IOV("uO"), }, + { .name = IOV("CgO"), .value = IOV("aoqsHtAPHiBglQzdqlQTFKRhjxfMUjOxAjuMKcKEduqlgZKBuOP"), }, + { .name = IOV("UNWbzKvbrcnrR"), .value = IOV("VmHHCijXVFCNPibTEzsvEOQLlEnCxmFYlvRfTufqMhtwdBPMZMnUqEdLihBSthntIJarB"), }, + { .name = IOV("slyZuQwxkxtjWYdyMzOB"), .value = IOV("jodWslRbRuAzqQOlVUPuWayWXivuwDBGqwYpuQGvEQrtLSUsPNNNLYDkEPRS"), }, + { .name = IOV("iXRH"), .value = IOV("hbNDPAzwHmTCCzsUOKBRTdbLVTNyVtPtzvzxUvlhoqoCikmNXeCXyDQDBCPIVNpNFyufInJzR"), }, + { .name = IOV("DFyIgqDeAuZGDBmyQ"), .value = IOV("YSSgTLeenKFwrcvPHRoRzUviLnuvxGbzmOIziFzfZuaowriqraDcfIrbvdFvvRu"), }, + { .name = IOV("TCtQvi"), .value = IOV("OSKM"), }, + { .name = IOV("E"), .value = IOV("olb"), }, + { .name = IOV("WKyVsugRnsw"), .value = IOV("UkDoWJYRVvFMMbwOGOuYtLvhRzdapxBBPXVVBWlfDlKmEWYTBsWgwsbMUDtpbkfJezPcTzPRRKMSLWc"), }, + { .name = IOV("qLTjtazizjkKTgYiv"), .value = IOV("LuHmRlsoHANwVNxJzQCvItmGeEljIQvaSNaitkSiBZLTzGwPXPjewQ"), }, + { .name = IOV("JucIm"), .value = IOV("bjNkiAqrOxHqypamPmOAhbnrZPWpxhZuDqIEDcVisjpPDUuabCVfDuTujVjcMIG"), }, + { .name = IOV("dcbgzIFrCSHjR"), .value = IOV("rIHCTHmIduNHAtZvoxLPgNVskeFoXWOuWiUuUsf"), }, + { .name = IOV("zpPKfSWJQXW"), .value = IOV("cGpYNkpnxsGTLdDqHUAQujkykImngFpELrKTdPBCLjwBrAOBomhaakztYfrGvDiGhYaKyjrB"), }, + { .name = IOV("OALNgSdvlk"), .value = IOV("OGkrphPwElStwkAhZaEsCfgRAlQpfbdEzdQrRZzwTttJyYqEZghpkkKjTTpeOAKTLZs"), }, + { .name = IOV("qDnHwZGjQrHHkXw"), .value = IOV("zoGKyoRRlrhNbgAgqTgQ"), }, + { .name = IOV("bHvKQBSrwsbN"), .value = IOV("kRXcIhAQBCLbxBIuUnxLopytsqlvJlSpv"), }, + { .name = IOV("KSoWZVPbIIRMYTWOFPxm"), .value = IOV("nCOoxhEMyylkpYmUWdcLpsPHOQHGCobedazSCZPBaIZQ"), }, + { .name = IOV("eVl"), .value = IOV("POgjgrgwEcicMmeGknMgXmYTiGarUDtaogLMZoqCGrX"), }, + { .name = IOV("ymKvUqDXTD"), .value = IOV("UpTVFnTmYbdVBLzRRbawBNubTIqMgbMUiEDKQbQzWNuFBHtACOdssXZQzSYVroYaXuUWHjkOD"), }, + { .name = IOV("UwFRzCNeyzoJIGIIZE"), .value = IOV("XxkCnbLihBvyaJvhByVxQSaIYwYfNANsAfZBQpKAFSSDYsVkaweGxXEcmRHKODEyZWrSEMUvOeE"), }, + { .name = IOV("ADIFqlkPIOBtqUdI"), .value = IOV("uiapyeEdkmQKogWWoxHfUyRjceypoKgIqLvGmSrVQfvWGPiHPHvCMNHPoQyImUjILrXcxSlvXz"), }, + { .name = IOV("kDtuXD"), .value = IOV("okOTTjecInfPowWvKkKpQRFgm"), }, + { .name = IOV("wj"), .value = IOV("CYgPjIlBMAFPgtJzWitKSZMsqwpLhEcbezPTj"), }, + { .name = IOV("YSQq"), .value = IOV("gQsEsCeFDYLabCRIVBCUMDjIoSpHzxGaaDxZnFyvCwaeIXYHDhTMmnWxaiyJHRjUdxyabGryLp"), }, + { .name = IOV("kLTPoOswJHPtTvCOKaZM"), .value = IOV("BxRoqTqfNJnASmkdihthPolfjuEkOyytLJer"), }, + { .name = IOV("AdbkOBVyv"), .value = IOV("DjxXcEHjyFeRDpnZaPmXSHpwoVgtAiOsBMOUhoJHtWykYRDXQWzZnoRBaHZ"), }, + { .name = IOV("jDrNYkkQJmMmsVaSx"), .value = IOV("HlxuTOkhxRWBVanbuKlsDPsHizWqLsaxmHMhdwuyDk"), }, + { .name = IOV("taQSZNebbxqfpg"), .value = IOV("dblDBypTpDMUwMKAtcPDLcI"), }, + { .name = IOV("osdPhgW"), .value = IOV("MGWrTjjrvvKBTEeDyFCEogIwyTQmxCsPSPwdMkoxMaGxlKvfLVGQanSauBXTJzkhFpkLiGbXuN"), }, + { .name = IOV("sV"), .value = IOV("ymthSFFz"), }, + { .name = IOV("KkYwrPxMK"), .value = IOV("LhXuMnGJOhGNjghCYRYTEYHiFYeG"), }, + { .name = IOV("LRl"), .value = IOV("jNdCgZsTDDiLYjQmrDgLsEpt"), }, + { .name = IOV("HVeCLEuwYnlyC"), .value = IOV("GmlgeqnUfuaIDlDyGcsYbHoufvXrFuweUjqOBW"), }, + { .name = IOV("qTnLsjtBePYbu"), .value = IOV("FFlXlLCnEQDueBPdhPvjShtqEpAFjmtsorclgSwZCIQEogvYHkQyrbbheE"), }, + { .name = IOV("SDULFGdBwCcVyaeOfz"), .value = IOV("AVFHQiOHUNJEVXvHNQGBVsb"), }, + { .name = IOV("BBUJF"), .value = IOV("UUaFEDlgdcVdJhCrwRufTxqNLPONrLovqalcOpDAoQLfYEvuHzqTzUjbCtZWnFHojKwjUWph"), }, + { .name = IOV("jnqdrzqOJxncfE"), .value = IOV("TzkGMjeXVG"), }, + { .name = IOV("BkVOVqMEavX"), .value = IOV("SSIZxiGmVoGHwwutohaUfgeGdauCyzwQ"), }, + { .name = IOV("ntJcKOHvdZM"), .value = IOV("tGqIhrixrpWFPKqtkMNVAmbSPPNHErCuSYJUyiCbiExHoMSIIREJaRpkzIqyq"), }, + { .name = IOV("kyRfipPNDrTePZiF"), .value = IOV("TFWYodQROiJsFFSFAQ"), }, + { .name = IOV("qVjDTzliDKW"), .value = IOV("AQoWUReVzHCPSjfxaEpnEreFaCIHVLaCiibjkGcrjPwanrpWCaLlflDIkbEKhDhxkaVrDXLTzUYFKniu"), }, + { .name = IOV("XZPK"), .value = IOV("mYTxgbXZPJRLBbJDcTxWzIsRcqRkiZpMKhpMMERDhtTSVJZJMRNtADvKjJuNzpQNqEjHZPTpPT"), }, + { .name = IOV("TdufiXsDhEwqiAR"), .value = IOV("qaDEzJzTSYBftgxXabbEuxpxyCDilfEpJ"), }, + { .name = IOV("kPNL"), .value = IOV("yhcRdHpJJHBXBbJTNEYQ"), }, + { .name = IOV("VXjwRRnXhNkKmIL"), .value = IOV("mSDNdywqqCpusPMtX"), }, + { .name = IOV("iU"), .value = IOV("jGJUmHWkcnlHbZKXQFpOVxPJg"), }, + { .name = IOV("qHqwRKqIexdPrWvodpsn"), .value = IOV("IjPFWZKtXttHmMTGkhhbinkSckKrndlWIgLRDrZnezXFplg"), }, + { .name = IOV("a"), .value = IOV("ZonwWcaEplDwjbOmcsIuLFldnRMSAHdyRlkYLfcfVREXUJSLz"), }, + { .name = IOV("bsjsgEPrJD"), .value = IOV("roKqYmpNMOQngRGkwuOtvPxOwHSlzJZUThDJUPldTYNG"), }, + { .name = IOV("XwO"), .value = IOV("FBDkxnBMEVah"), }, + { .name = IOV("FhYN"), .value = IOV("EDHVCdyGbtfbQiqOXgM"), }, + { .name = IOV("tZMOyELeiRsEYdWf"), .value = IOV("UDXAmhPggwmqstxkuMwXqnppoHOtFDhTOXPURLtqQmBLep"), }, + { .name = IOV("uqKmOWMqnphDHBGoE"), .value = IOV("rVIMixzEfNpJRlNknjtLjcuxG"), }, + { .name = IOV("ut"), .value = IOV("HnIxGDfAVOaiXAxAmqpldWNuDqVyLewJryL"), }, + { .name = IOV("cYgoKbyOXAdUxua"), .value = IOV("W"), }, + { .name = IOV("yblAvHGo"), .value = IOV("SOAhtTyJmJmxXxwfvuTCrYNycoMgIBOILEggoZszpuzISJJjCaSwtunkyd"), }, + { .name = IOV("KRsoFRDngehDrZ"), .value = IOV("dBiUwrudmnfiVoeASJcwtiANJTsmgPSjcItGYVSryTFffpEAIGJWYLGzxUvWW"), }, + { .name = IOV("gGWk"), .value = IOV("TjKz"), }, + { .name = IOV("uPeSPzUFUK"), .value = IOV("qSfULfySxbjurtaNYXHHVOYAJkrLDIDDbIuiyDdFaXrDskGFjjfdIypLdKZpvKIJrRleFPworxbRQR"), }, + { .name = IOV("UepbDqgogbm"), .value = IOV("cbCnurwSREhPyNqDHjhgKDe"), }, + { .name = IOV("POwN"), .value = IOV("VFALtiLxfriyUMihTplKmSjalhrdtjQIxuUSkHUYBzRcPYSfMBNqQlTvLtOZhMseJGyYt"), }, + { .name = IOV("F"), .value = IOV("pEpDMSWwDgQqDZToF"), }, + { .name = IOV("HLLMsNPZRb"), .value = IOV("hXrAIjBTzdfdnUYTsbuFhdBYhYoKGi"), }, + { .name = IOV("otIAlwpCFlydvbHSma"), .value = IOV("tTxlvsuiAmfbCCJZhqoPlSXKcfkjCwztqSlsfSwcuUIpfq"), }, + { .name = IOV("tmP"), .value = IOV("gxTTlbaiucyANDKmfkQbBPFvBeFgTAmlYxmVhjAstgjLBDEFFRkw"), }, + { .name = IOV("lusvTuVZnqcwuhNBdLl"), .value = IOV("yswsmvNgybkpvPhEcIMhbugXlacRquvqGZKxZuVbBYvzfEVloAqbbh"), }, + { .name = IOV("loOkM"), .value = IOV("uRsSKuIzgTaknZhzTAEMevHdqdGQkeydOCMWErgdCuSdMxAGLLeNPvE"), }, + { .name = IOV("GiJ"), .value = IOV("PJUzgbZOPOZ"), }, + { .name = IOV("XeUkQnKihnJCuysW"), .value = IOV("kKNAeupvmvcEKAlE"), }, + { .name = IOV("iWWbjGYByfRXmgDBZhjG"), .value = IOV("RneYsgDnUNCzUuNZkIVXmFbeHLXUQrXqOEEuJKcOvZ"), }, + { .name = IOV("jsuhtYdYbyIA"), .value = IOV("YcQctxiznOZnrManjHtHWTRKLJfdGMULUjjzxXgjiBJGbkwNalMsuYCbiXqnDGNmuvOZilvUsXWzEROp"), }, + { .name = IOV("Da"), .value = IOV("VcPUXPSRgzfbwARhtWHyhJuNNKjIVYFJtWJhRpbEFlK"), }, + { .name = IOV("eFyVQmVCXG"), .value = IOV("eIJgYMlicZQcGgYLuARYZCDGZwUpzVHjmogTaRHOhKOdLsCNCfAWUTwHFdqsPl"), }, + { .name = IOV("rKHzqfuPxUbMa"), .value = IOV("aYDaOWMcpalNNxohTVyEoVBWWgVqRaVBOGNIRbqQoBgXAHbQcQCUGGofdvMFtctjUbOBeZOC"), }, + { .name = IOV("uzdsMQEpXa"), .value = IOV("ADUAKOkRrStSbDQSUKPLhPckJQuqzstyBHRwVwctiKpxgMDlYxSrcJHnqdYG"), }, + { .name = IOV("sjOpmDYImmqnPOXCmx"), .value = IOV("HgucXRtcOEhYHZBNmINF"), }, + { .name = IOV("iZU"), .value = IOV("tQAEmHLSyOHvDbiBrAMvIutlhiFsficajuGzmhnJftjTuxsmmqvsaeGrNwhtPBqwxlk"), }, + { .name = IOV("esGykszndKZlKh"), .value = IOV("oQWKRbNcPuYgReXKonUYnzONcNIGxJAZyySGkxPjFlFuy"), }, + { .name = IOV("svtCFNkKmEglmAqyEYD"), .value = IOV("AOmxdIxPkpyKZrrZWPQighlqpDRM"), }, + { .name = IOV("xyxF"), .value = IOV("xnudGQhbrohSQPASuPjMINmUfhmJFUWyMaInKQIirdXebHOpRvqqPrThZRphiLJKEJE"), }, + { .name = IOV("zGW"), .value = IOV("XINcAIevSouOaThxRUmsrCrYACGMHJJpmPTnzypFVtVMQasFkIlPXAaCUmiOdZaQm"), }, + { .name = IOV("tGQNQs"), .value = IOV("jQZVAhMXtZFbbpjjsHjCftwqEgFVriOeYDMDTbYmwRf"), }, + { .name = IOV("zJBPdXcMLWFbGiXQGpVy"), .value = IOV("MbLAXijjcsmSrlFDwwQolnlWztzAKuwQQadllKodTULXPoamxCHaRO"), }, + { .name = IOV("DTnVKzHPFqfitxyn"), .value = IOV("YGuZDoRZtJahdfBnzAnKQxWGV"), }, + { .name = IOV("dFFhSCOU"), .value = IOV("KBbQqWt"), }, + { .name = IOV("GeSplrbeGDfRFR"), .value = IOV("LhdNJxHclBNIzfxFkRcjueW"), }, + { .name = IOV("osBz"), .value = IOV("KhQleFXTnyOwFPxmLghURmdDncwjzBtgWytPMDUUEKx"), }, + { .name = IOV("sigktsHCeP"), .value = IOV("DEKxlTAjoLoNwYZZrYNdTQfmFAxWlJNSUluZrjiaJgITqlITFEoTPtfDhXblBuv"), }, + { .name = IOV("sS"), .value = IOV("uLiHArSnDCdSArptbRqqZHGhFjIrnQRqSiW"), }, + { .name = IOV("eoGep"), .value = IOV("HROwadHcPHANdclgMzMDuVmRSpdyYjrsdQQQKMFWBfieRyRH"), }, + { .name = IOV("KvDwmYwkjDxvymHeJ"), .value = IOV("YJAWFcBDluNfjMbosvuUgXycipAYChrToEJRPdvnGRubPbWBdYiwGLYh"), }, + { .name = IOV("AsYMdcTHprhJqBxcu"), .value = IOV("EvYykVrIJqueFffDrsmxMFAzGsWsndDlMvTwujCeDHOhFdLXsJMlk"), }, + { .name = IOV("hTCajb"), .value = IOV("JXvLvByNmeardMOBHPiUbIMkcspTASnsGSKqkO"), }, + { .name = IOV("OtL"), .value = IOV("PG"), }, + { .name = IOV("lozIYmsxgqD"), .value = IOV("PfgByoECgMOnQKNDTockUdJnLvSStMwaLI"), }, + { .name = IOV("aTJmpDJtUlLysHSPh"), .value = IOV("iCmazGpSAfakFaJMnyONWumBuRWzbfaQiJqocoAGEGiMZHWGyHhJbcgAcYdtFhanwS"), }, + { .name = IOV("lSpQfMs"), .value = IOV("eGTPTURtvSfDllQgIcTSsMgGjDrQBqsvMtAEbCdkBjykrtbmzddIzpa"), }, + { .name = IOV("OUI"), .value = IOV("lgOcKdUrHPinFRzoJjjHPItLHtZGGTpeMreBbeBIjccREfyIQyWUHtklFgTpeQ"), }, + { .name = IOV("e"), .value = IOV("jNGMEWsrWTrTHZLOHYBnrjUdjFVJQCBPTugrqtqxpXkUoNLMhhPQmSqgqPbQUqKokdJKeWmJN"), }, + { .name = IOV("GypXAFuKWhEmBX"), .value = IOV("OODlQqyjsuLRnGbkiirIhxgTUfjoVmnItRnGzcG"), }, + { .name = IOV("DnsJEgEYMvjUBsTTs"), .value = IOV("ZBgNaCeWZdDX"), }, + { .name = IOV("omLLmSWPs"), .value = IOV("QweNIhoPQJabvXLoxaeUQhTNQfdLEmbOSmJWzZShRYqpupzyIajGLjLPFJxSHZTTYrPBZsVER"), }, + { .name = IOV("SzpKIaowQmI"), .value = IOV("gHwWTAsvaIWmMpJZmKHeVIZZTccSRfHqqacunUNgSoehmVpjjjbtGRrnuxxwSacBwtLGTWI"), }, + { .name = IOV("YBERbickzFQRaFPAm"), .value = IOV("DoTDwMBZDaCzQciurvpUnIEZIkWaGuyfjWLyCMZzhRqVaGFwQI"), }, + { .name = IOV("YpKNCIuTeZp"), .value = IOV("ePVbyRCMCJfTtvaApZVxjrvmzYarfoiXFcoUzdiOREIAwLvSUcuHcjThsUmQqOnTOGcnO"), }, + { .name = IOV("CkKdR"), .value = IOV("BARJRaJBIOSAYhtlbFjaFyAzWLfAjNJYJzTotubuDhTifQEqXGHwDtDNVrNLyyKAZ"), }, + { .name = IOV("vkYrtidKfHtwqtnYZZSL"), .value = IOV("KQlgCeYkWzfRPlPUVrTsOuvJLfuOXR"), }, + { .name = IOV("QSzoqnYjWR"), .value = IOV("yVIUcBgtEMjUqbluN"), }, + { .name = IOV("wpSaZkcmbbMYestL"), .value = IOV("PpIPVaMLmqsjyoBBuhXhHLzfIGeVEzjcNAOsjsLXUKisegI"), }, + { .name = IOV("BTAoCpxMx"), .value = IOV("OVVqosfAKrqFxdwrmgKEGbcFPuYwLoZwOhMOoxAmx"), }, + { .name = IOV("rHqsmJZDMbOOZeGMg"), .value = IOV("utTWMdYNQMWrNvdAKbREgCATLVzlMZemHoWJdvGScdnGgkDHmQCNlKLFhIqtJXhOODPboIiVEMZWPpHR"), }, + { .name = IOV("nLAxXfJxtgWbbW"), .value = IOV("NcdMdovUJEA"), }, + { .name = IOV("mXoJbLDsUdHeXv"), .value = IOV("j"), }, + { .name = IOV("RuTkNjNyZxQxCZ"), .value = IOV("mZYJPzmtwJRrddFZjKXUWvHfqMwSAEmuPZKZFPB"), }, + { .name = IOV("OWt"), .value = IOV("SazOQVNwq"), }, + { .name = IOV("OXOCJKFijqFsj"), .value = IOV("vyoeAPAsUaXfIISFyK"), }, + { .name = IOV("htPNfnprIEu"), .value = IOV("splWaAvNWLttxjtIGCjAPhDJYnFJYLgBLGCnhnwXQJhUFTWxzjOwLoJkpEse"), }, + { .name = IOV("SmiiuhSKdOc"), .value = IOV("ZRKTDoNSFmIpoVvDgvAxDqbxurfXHJUxHiHgUUrXRdzXMBX"), }, + { .name = IOV("wxBOCmfCQbWVTTE"), .value = IOV("LHHPuzvrhwzEzLJ"), }, + { .name = IOV("WjLwaObTbM"), .value = IOV("DUXvJqaDBOAvIPcSrZcqSejORFJmEFNGLgMOibYTXQMlgPndoSEmOkHdsTAXGdVmt"), }, + { .name = IOV("JoiuKXrUDkc"), .value = IOV("WQdlHfEAnwxxbySFbVQCqqdqQNkalpPERjNtdSYkqxcbpbiGsnjNBUBNMGgddBQkCYleq"), }, + { .name = IOV("bfvQibqut"), .value = IOV("ZUcJDireURbRCOoTYsYpZPOJ"), }, + { .name = IOV("HBcm"), .value = IOV("UZKNxWdGwUsyUtbcAbyMDzkROgolPxUiFfJVTzlIqGTyhHTIjpwTrxoxfKgex"), }, + { .name = IOV("baOTRPxroomMt"), .value = IOV("dbXsrgBfJKwEtdMajMQPBjvhcOJXjraWvqqQheyfSjMsoYxZGFubNpLXRKSTsZpZ"), }, + { .name = IOV("NNWOtDkQf"), .value = IOV("lkWLYjgOKiDwzAWmvUZQwfKCmDHHoNltoxBAAVAneIAfveBkafVgobZUEvjyvBpHvVWAbsNgVJ"), }, + { .name = IOV("ByPpj"), .value = IOV("uwcMlhOHBoShbYJOuKTtJYqGacQYrGqfoGmJMwstuPmmBSsbsaPJKoUWhRfUTVfhVwcQksRj"), }, + { .name = IOV("FnxaxRtnHGjskoEGdMez"), .value = IOV("vaDfWvclVlnguGJGmsRLZhbGXV"), }, + { .name = IOV("bPaYCZMS"), .value = IOV("kMSxFCisEmPRGNAXaqViNJLGYyutTHqxsaiNLxQyNguyYQshYPBfNoZxYQvvpGebJ"), }, + { .name = IOV("s"), .value = IOV("InsPvxoSAzfhdByPLEBZzSPHAcETymlTZFaqcFGHrIlwf"), }, + { .name = IOV("EdmXCBYYvlQjtzUGs"), .value = IOV("igMJKOmHjUyPTKAoGnslzpHtfHxZhgScgAeAfDFHIgWhoYtfdYZaXbse"), }, + { .name = IOV("PsLmZZbeIKsTfvkFPI"), .value = IOV("Sf"), }, + { .name = IOV("hbHUhPEdcMzrBodQULQ"), .value = IOV("hodbtJJnpzXiFLJIVxaJTEDPzbsjcpnZzguHOBTyKnExR"), }, + { .name = IOV("OhxguOyoF"), .value = IOV("eNAjFblgqgD"), }, + { .name = IOV("GIDozG"), .value = IOV("aYrisJccqopZgSwnwaQiTlrJsQINARdKlnXR"), }, + { .name = IOV("hpTvtRbgMI"), .value = IOV("kEXnTvomiTvZtmMIepxAJFyvgNhMTJpggCftIpYFijiGlR"), }, + { .name = IOV("VOoPnpPhloiSHmrIrWSD"), .value = IOV("VwIxCTrtsJDFTzQdkBxQMWcVQnEYAyChdAYKxKmPpFROVsyHdwiuAVulxLOTPpTOv"), }, + { .name = IOV("zEdQAklJPBTSJgV"), .value = IOV("iXtYyDVbvICJLEFmOBlfMBTChGRqxOyCNJyfOWwblLSAMcxVQCXOvJjMQXBxjhFYYqAuG"), }, + { .name = IOV("bMefJiTredlAapgjrRFk"), .value = IOV("dKDPGNfynulAVJvgCxWOXNZzLjHFIIH"), }, + { .name = IOV("wWbksnlSSo"), .value = IOV("KxwGxagRMFRyhhOyfOxwzTpGIhdSPTlGRCkhhMsKWMoPaPlFKCiumEtlIflnwwktfIARQhSIWqLBJU"), }, + { .name = IOV("mhuSqjcvIuHekxQJvkit"), .value = IOV("fovCxETttpADNURFrEmbAkpAGcnenkHxuGUcgfwHHbzfexzuXVaiAgllI"), }, + { .name = IOV("CNRXtZSKuF"), .value = IOV("nByRlRVtmChzwqMxkVLNfuxfmUCAsOuo"), }, + { .name = IOV("HSJasDrUrchiTh"), .value = IOV("vZnrPZgbkRiQMjOcfGvDVqlhAwRAaPPHDagpyYyakPbakYratiOrGEWIT"), }, + { .name = IOV("I"), .value = IOV("YuJp"), }, + { .name = IOV("AWebjligyhSPXZB"), .value = IOV("jLCWKpyAfyxmQNgflQNHfUnJArVRUFVnMWdNzQvQaBuMKCnpIAfNZXNcBiZuHsuBiHGj"), }, + { .name = IOV("FRdUVLQuI"), .value = IOV("gCqljwrHCwtwQybRrjQqRZyjfkdZvHZRNUjqXyTpENNNt"), }, + { .name = IOV("KOlsSoyAfTxu"), .value = IOV("IVioVCXsnuoOtpUOcXJ"), }, + { .name = IOV("jOOdyGYdzZtYkenH"), .value = IOV("YAqSSsCIOArHNVFBJGbciOJrlYuAoYuQvrUhoadoPiqZSzalIzAIv"), }, + { .name = IOV("JzVPJyfIEeZhb"), .value = IOV("rtdmnABdEDtKPsvGaNCsjcqwUfnjHSyfJITidNE"), }, + { .name = IOV("ayBZknSaEWcGXSCYog"), .value = IOV("DbLuLFSyvNUWBvjNKGCFIohZYFqLRlJYCarMhOPOyAWbFXRKgcnhXYqaSUdazfdgFYGt"), }, + { .name = IOV("HyxU"), .value = IOV("WHLgOWhrkVqiXNhZsKsezStqYpNMGKlishHrP"), }, + { .name = IOV("YnOotjn"), .value = IOV("ZsfJKKFJWlZwZvtCvgPgKPwZBgbkniVsCOADBZWcvXvIkHtxhAnTsTPsMPdhRSvGflQB"), }, + { .name = IOV("FSHwCFutcgCeP"), .value = IOV("mAZtazzHsGZXdvXlLaJeDlERHPHWKflFrJUXslJiLukOdOZhWjfChrQTFMwFhOfJHZjm"), }, + { .name = IOV("ZbZbIYnGSvMT"), .value = IOV("SbxjiFSGAGbNvGSevZgEehOCaGCDRURpQmBiQYXqUeKvSqqPyDuCieBWTYccnhUolvsCfQE"), }, + { .name = IOV("xvwUDdLuY"), .value = IOV("iGrBelMWlDxwKEUx"), }, + { .name = IOV("YeupEQkqzE"), .value = IOV("xHDEiZ"), }, + { .name = IOV("ojGsYkKIJpOr"), .value = IOV("fSRuNKPvKoYJyRsflDwOMuWSRfTTPsCSkqaTFgyQAgTyzaaoOzuKeT"), }, + { .name = IOV("jZc"), .value = IOV("APbswRAzpmfOeHNiBayjVYrfFmcLozL"), }, + { .name = IOV("NPHrAllKeTsJzLc"), .value = IOV("zyNEEOxaCZvVfIUpYkXshfJTZ"), }, + { .name = IOV("uAVkyzjupIh"), .value = IOV("WeyUtEVzuL"), }, + { .name = IOV("FWtveaowg"), .value = IOV("eANfdoDphZVTUOmSfsUlLTGD"), }, + { .name = IOV("vyMgpWstDMLyilUZO"), .value = IOV("gIywippHYmtmDONpEPzEYNeJuUBdRwpgo"), }, + { .name = IOV("zyldFPhtglIuWklFM"), .value = IOV("ENpFCkWnTGRMtyoTGmsGXvJSEdDrjjBKlnBIfRdnWvDIJpXtEUPSNzpZmpIygHLKrpxWgAjGotAEfA"), }, + { .name = IOV("lTbJtkOpYt"), .value = IOV("wbShkVZjREIVoUrJzEWiliIcEqIJAVmoxIntLlpKAtbNSnl"), }, + { .name = IOV("zbzdMZyk"), .value = IOV("HgZvtUoTciQEIwPd"), }, + { .name = IOV("GLMXlUqqHBNGr"), .value = IOV("ZYQJGuSwqyAkyuwsJ"), }, + { .name = IOV("YJhEF"), .value = IOV("CDVtrRVgWZrgCIehirzkSaMuylIfcvkpzDrrTbwFsLTNWsxeWYdLxvBrgGUF"), }, + { .name = IOV("MmCyzeRIFZ"), .value = IOV("OwhZtJSViAyvrqzRZsVlexDOSDMPJiUWyIJiIdrEjjacYTLAALFCtSjEOfIJGpsP"), }, + { .name = IOV("JgLxsrDuSUXna"), .value = IOV("sccyilHtAQwVfgzQHlnvUtmeiywkVKoebaHh"), }, + { .name = IOV("iEmILU"), .value = IOV("BXDpDxukNDnZpxUuhOVqJBfgjeGRcVRtRTzlMPa"), }, + { .name = IOV("FziStNvOpVBWoSTfw"), .value = IOV("UOnmfYUTGOJIDIwQKlDRflzSmbkXfeIvMrJhUGkXXbxThaPZWOQwGIuAPVjSTu"), }, + { .name = IOV("atUcmTQxPlZwMuYzUBFO"), .value = IOV("HjnuMGKeKkogbdDdskzYBSloQaLlgYUnWVxphAPUgXkcbo"), }, + { .name = IOV("ZbYVLWzt"), .value = IOV("NbKXeGQBmOdZta"), }, + { .name = IOV("eA"), .value = IOV("FRKInXYZIzwbLKtfPKhbsQnUItLEoRbcQAWJbNmJiqMuUCDOU"), }, + { .name = IOV("aSXFZyuMqqe"), .value = IOV("PZRrEvuynPvJyamQVeYhbaWglkW"), }, + { .name = IOV("qpLwxKJuoAHbHLlvJN"), .value = IOV("DtXymDErsDKQjAOcqHJPEbzIrngmooWvDdTfzyMeXtPQxiTJvlmwAlDElmitOziKd"), }, + { .name = IOV("W"), .value = IOV("dTNKrpatagiQJcTlPZwauSqQLLvWIhqIjDNDaZxqq"), }, + { .name = IOV("Bpioasd"), .value = IOV("HPCqjneazQsUkDbbFwachFTIhfawInTrfiRcOQDPIOBwquDhPinyOQUokHigThAwdJUoMlEDNBu"), }, + { .name = IOV("VWiwvDXtTOe"), .value = IOV("loBhMkXyDoQLEIhwQCjJiBFarMzIqsxdtpkrHBYPbaldJtYeaDVhdxgW"), }, + { .name = IOV("SbplzFEX"), .value = IOV("dpxEtdyUhzrRBVwgKdjcOIBAhKQbfYneBhLCwgPwjaETl"), }, + { .name = IOV("hUQCEEJCNwK"), .value = IOV("rBOwyAHfdsNpHlsTfkGkyyJezotjkEvTbQbQhiJPffCEuqnKUXQdEBorxNkahbNowSHFIYd"), }, + { .name = IOV("vveNEXMUJ"), .value = IOV("HRnQbbhKQtqMHYwBaxzHEG"), }, + { .name = IOV("xxySgWAo"), .value = IOV("qAgMNhvavBaVGQibamnYfsYwZGAeYWepMNQceyycyjBwNGwYbFOoDsCvBuBrrbnukSMG"), }, + { .name = IOV("SDY"), .value = IOV("UsfVnUByYHhCytPstQHJhogVKAkXeK"), }, + { .name = IOV("ndephMCtXHwS"), .value = IOV("TomsRsPlwdFQiFaFzMUbcKtzMoDBBRFTUjTHYygNkwU"), }, + { .name = IOV("QzUKL"), .value = IOV("LjZRFruXTQrrmcWoqdOGUZvXZMFPkDSxSzNhMzlgySPWTR"), }, + { .name = IOV("FOJPVrscFgmxtrLoTi"), .value = IOV("zNjVhyTdvpddwTuMI"), }, + { .name = IOV("jfEIpazTwKhfCwUROpl"), .value = IOV("mVTWQEyfhaXTDMZSvnAITPBlxshwsEvHVCtbgqMbsnEObqSWtrmsSUreVzbTFEtMzPELaQ"), }, + { .name = IOV("XSlHMiABRlvPnlw"), .value = IOV("llMhYjqleqrdsAXmyPpRmoNLjnpovCpDx"), }, + { .name = IOV("wThCVJxsgpqpLRejZFyJ"), .value = IOV("DRgQDiVBKzWHvdSwHpgumHpDuadACzVUoYTwjQrtvpNFXHWUeExDWuHIlQGEkDJEuUby"), }, + { .name = IOV("vz"), .value = IOV("SVdkOvxhYHa"), }, + { .name = IOV("Ga"), .value = IOV("aKtjgFJPzDO"), }, + { .name = IOV("BishdMPTbxiS"), .value = IOV("HEteZieprmyfRIMPzMERvuXIlxWVsqZYgtDRniqD"), }, + { .name = IOV("xKX"), .value = IOV("nHvBIXraWAdZwBIrRxyYHGhgkgKFBtcIJEQDhvQKEWPQIcOkAGJCaRiyuYoSWWdanGxxhJeogJ"), }, + { .name = IOV("piWaALzwdmEO"), .value = IOV("RnTlVmetGTDILbEigRruEHshopqZcUVnkWDXXtF"), }, + { .name = IOV("nCKyFveq"), .value = IOV("mDoBUYi"), }, + { .name = IOV("GcliqSHRgyWAMX"), .value = IOV("zwPDiDiUounJRAocRvCTMWIn"), }, + { .name = IOV("hHyxRLqtgWYVbHOP"), .value = IOV("DDMuVKxwVlBUTXjbdGncVjoaCATMVUyTfcXdVdWVpJqBCiHTdKSYdiZEMiOOAmamNfAxGoKS"), }, + { .name = IOV("QujQelQPKgQA"), .value = IOV("skVbMVFjTOppVMrxKEBKmajFBnhXxIyEXSdzQhqerUvKaYIFULTgJePUmBAqAFijaMfikEzwnIIKg"), }, + { .name = IOV("nPysdXoSIe"), .value = IOV("RBqaYpsDlXMUMgwZeIXegMZtNserqjwqGejTEwzhS"), }, + { .name = IOV("FbOFepqqvCKKKQu"), .value = IOV("TJMemovHOtpxrFdQGmuoWkTrctTicYIpDCUrzFPkONdDtyekDInkYNcHHsLnsvXoKEFp"), }, + { .name = IOV("smWtokdzrvWeCJrLcki"), .value = IOV("TENOCMxLXaFyZmAYTYUsJjOqwfdtnuHpZAz"), }, + { .name = IOV("HErfmQgoENyWwilFgEe"), .value = IOV("KePjzrsKBeUQfSazAlR"), }, + { .name = IOV("GkoZykxdrnKlOpJa"), .value = IOV("ZwjAOTgUFUQI"), }, + { .name = IOV("kt"), .value = IOV("LbfCiGqdG"), }, + { .name = IOV("EtWeHYWgsKO"), .value = IOV("WaBMjmYKKkWJwzvfHoKzsXsXCTEhOzBBMYqeywwkiQFcMWNaIGecXOCMbGucRCUeRuuCuqcqItzCffh"), }, + { .name = IOV("wbPIPTOvCCTMgcTg"), .value = IOV("wXZGDQzwZTgSSSGGOmwfJadWMoUuaSLj"), }, + { .name = IOV("gakEeDdnXUZAMAqHOETu"), .value = IOV("mJdtfFVhFQAOifAvHSQZoaueNXoThRZqbFOLqVZvXSfOWHjaOBexWHYeambNsTwvFr"), }, + { .name = IOV("hbxOSvQDavGQVcir"), .value = IOV("RUoTQINIdFMhiPcOsQjtKwPevhkAWPippVfOBAMPXzaHuAijaWBWLK"), }, + { .name = IOV("hNeYBWsMptDKTRI"), .value = IOV("nTbYHgEAolNSSecuMxAMHvVPfAIvwOHJkhmkPaF"), }, + { .name = IOV("ykzCRgbbUJc"), .value = IOV("xwAlfwRDuBWuHLdjVs"), }, + { .name = IOV("I"), .value = IOV("COqboqlEdaiephhEbuab"), }, + { .name = IOV("DutInPMAnnpwQ"), .value = IOV("ZvrEslKWT"), }, + { .name = IOV("gqJUYPMl"), .value = IOV("QJdHxSjUjuKOJdFKGmwugUYituKppOzFbWXnqpPaNPUbYBwiKRNrfNVXwBQlnKlwPcUwBkfZerCmQ"), }, + { .name = IOV("WhjZLwL"), .value = IOV("vYjYFQzNMxzduRFjSIHBezCncMqMkoPsjfdyKJtTVQplfQpOsrGCtgCQDTbobXXA"), }, + { .name = IOV("BEXsAGqehsSlfEEHSJha"), .value = IOV("zcoUK"), }, + { .name = IOV("SeYrWBn"), .value = IOV("xNIFLnuRfmzeFRZqaciWBxaqomWqXUFHurSFEYrLahnfMewFfpQYaNniqSxxNMSkU"), }, + { .name = IOV("iAP"), .value = IOV("NuPODfgkArrOfqgalWalvwZAnkAubQAIbFZtfdgAnKrFuSjLIDZtoSfclgazWRwqtWIPXnWaFm"), }, + { .name = IOV("WhfPxRdCfJmArTAWaKb"), .value = IOV("eIzKjDtiGfCqddehDlwYhPzVduJZUcYsytmhgxQAbasWNEBVJIgBRoiclDQnUYTIkhAsaaoA"), }, + { .name = IOV("lNpYIy"), .value = IOV("Qxm"), }, + { .name = IOV("ggnCOfkUfvKYqfulZt"), .value = IOV("vYnIuIPmKoKamLbWKcydBIxexNlDkpfHXFWXQhhFRxbsFoMwOPvfIqFgtVybcRxHvipgBqUGmhn"), }, + { .name = IOV("jTmKoOewvBzbz"), .value = IOV("WuGLQrDOrXKQswnMODvCfQSaAfEeffeHHWzKXBQTCcAzGUtqkqnjtSYVQEnHviapAipDMRkwEI"), }, + { .name = IOV("mdywgPravpf"), .value = IOV("RXFotSxQFZriFm"), }, + { .name = IOV("zbXqZDvxd"), .value = IOV("WWxzlHAUoDuOhSJXtdSxKodSaWkoFSLfImIwUPheqYpXORFElHnGvHLlSDZTxFpZiyVPyv"), }, + { .name = IOV("sJEtLb"), .value = IOV("SStuCgDAJkIQZncWHTcASPdFBVVmKTAcChcQGOSw"), }, + { .name = IOV("WWcSUJh"), .value = IOV("iZfhcafjaSJyjtfYkzKrNmDaVctQqOMwmbnGisdWanuSqWacuQfUKrQPzUffZyddNalfdrcGLTtnPaYB"), }, + { .name = IOV("mglbq"), .value = IOV("XzlMngLWtlXZkbfJOlFNdKNNsSykVMFYVCpM"), }, + { .name = IOV("RIzPRRBsEGWYuEMsdM"), .value = IOV("KQUMrSluVBiFxpSuAQkXbLBjQrZMXfvanNJGqjXPZOiiqHlGaiW"), }, + { .name = IOV("nKgoLw"), .value = IOV("xDBEOjuIrGtUtPUoNBpTEBDjBziljhfmIESnGiyrkBTjHOwCFeRhsAPvi"), }, + { .name = IOV("cRNhndLOs"), .value = IOV("YtWrPVVVjflqZevVddBu"), }, + { .name = IOV("QLMyGvbmxZFsgeYS"), .value = IOV("XSuUzF"), }, + { .name = IOV("GwGusyrkDdtPDV"), .value = IOV("lnUElPoXYMErLuLt"), }, + { .name = IOV("jLya"), .value = IOV("sOa"), }, + { .name = IOV("sxDMxYnHnjvNwp"), .value = IOV("TTINpeMjWZtdpTLALdptJHXzoMFkFRjDIcUTYbnOESZsrNrjmUxIXaeRfVFnfpPjfLfQcbdb"), }, + { .name = IOV("kS"), .value = IOV("OTaPEoInyQBBkmWvEqCagxUHKGdmKpZMaeaQymJVZJWlNWDYnlWQXNAP"), }, + { .name = IOV("fBrJSJxAu"), .value = IOV("EkQXtcWEJoGCumPZNyEkzpjaezapCfmMNctHKYYUfuGjGggIBLjhgetOTXSVW"), }, + { .name = IOV("qPdWEt"), .value = IOV("CmvKnXvnkhKKiqEhHsAU"), }, + { .name = IOV("bA"), .value = IOV("sSUPWQNyKHQrgiDSTMNLjiINSdEUMSRihy"), }, + { .name = IOV("lsCO"), .value = IOV("RAuSyUoxQAdXtlqt"), }, + { .name = IOV("zMNBehRIRS"), .value = IOV("UQxQhSvlovRYnhgufhTIkMadiytMNHceWxLTAydoaKJPcnfJMAUqvnYPdJQjRg"), }, + { .name = IOV("uUwYzfrCFDpCNjmD"), .value = IOV("luBHAPrMT"), }, + { .name = IOV("UEzDmHztPUBqylwnJ"), .value = IOV("HXUBrhkMUuVkDGPfftWHLZxCqHFMaZOx"), }, + { .name = IOV("NkpLKunryHnuNQp"), .value = IOV("DqXmqTTvGYgBCoIALyRb"), }, + { .name = IOV("PPfqkEQ"), .value = IOV("YYqqQilEZBdXnpsswSYgDrIGbOGypEAEDilYkEyiLomyzkpCuioTPEWhrXcQyA"), }, + { .name = IOV("axMb"), .value = IOV("VbXiE"), }, + { .name = IOV("DlxIdxJArO"), .value = IOV("qKyDtkVYDLjJMpwldJMMSfZdklgKApKdkmvLfxFFUAlRljxzBBaebmgygrRtlzysyTd"), }, + { .name = IOV("fYMVpMryaDyXL"), .value = IOV("GJktTPOJmbiIDrRlUObZILf"), }, + { .name = IOV("CAklNxhfoE"), .value = IOV("OLvgYDxbEZFVQAYgmyQRLklDRssynPVdzI"), }, + { .name = IOV("DPwqJl"), .value = IOV("lTyLReffFaukxTCSkRZwRvksAEaCmevglIOgqvRpK"), }, + { .name = IOV("WGZ"), .value = IOV("LWcVhCvXzSsXopaCzxYBzZhcAXlSfnxsRiiW"), }, + { .name = IOV("sKqPlEdNHeoftXjO"), .value = IOV("YblUyjbQXkYIqtjDaWVngZUQVVSQQWw"), }, + { .name = IOV("rXroaneGOBRNGHyQ"), .value = IOV("lUKfihAVmmGkRFyNbUiGqGPvamquGdmXRRRisOvIjwPzpehGxyXbQWjcpgtXSi"), }, + { .name = IOV("TXLizpsja"), .value = IOV("uCxaWcnMPEZhH"), }, + { .name = IOV("SYHqlErFzr"), .value = IOV("y"), }, + { .name = IOV("jxH"), .value = IOV("qcgXtlOPEQUtGrqWmEnWuKkhTlpGkDmbrnRuY"), }, + { .name = IOV("lZUGSuIkKnQjrX"), .value = IOV("gNwwXnzwuyUpxqEieugDdFjnYf"), }, + { .name = IOV("cnKWcJBOQnJoYPzZHPa"), .value = IOV("nOmkJSmETHcawFj"), }, + { .name = IOV("qLqLHQyzRhigbE"), .value = IOV("sViRVdDeVGUNNpMlXrloviqZLNacfkICugoC"), }, + { .name = IOV("lRhPrwDsqYzhd"), .value = IOV("cZcUfytIDjbeSurkihXeusCkpcTmQkhCUTiUKKfiotFU"), }, + { .name = IOV("qJxQnHrigZLmTx"), .value = IOV("vmwLPQcZmwqxMhajgVbBcLaowNTZMtkSOetakSGUY"), }, + { .name = IOV("RfwqZlXlnOFKuEiz"), .value = IOV("llklFJXYChQaJKJYloEGLbbkzyYPmSlYmJKFtpbCQd"), }, + { .name = IOV("vDmKy"), .value = IOV("YXquUpiIiSyiUUdn"), }, + { .name = IOV("IkqhxxtT"), .value = IOV("IaOXNGAsaVMoLrIEXDugjnjUPZDgZpsmWwxCMTGngqBt"), }, + { .name = IOV("H"), .value = IOV("ALkagStdVzKAKwUqonumFABKScRWckihDutpgOjQFwwPgpUQgWZiRpSiOLdPceEvNkvgGlzDyjRBh"), }, + { .name = IOV("YuYdnifJyKb"), .value = IOV("UktCjnGlTdfgN"), }, + { .name = IOV("XDsWiFpZsEqAgfbJDBh"), .value = IOV("feXTyygpnEjnjUjFiOQmPCDChMNKtm"), }, + { .name = IOV("cKqQJxRy"), .value = IOV("EYvkUGWciwzrTIbsgErxQgUauCVVRFIdBxRVlgbRnsvhvbITYbDuqjs"), }, + { .name = IOV("zWXLpLNlgFGNVPU"), .value = IOV("ZpAMkfrMCNDdPtIooyQxtQCnpFfgLItEPvtecZvHnNBclFUlmYQoSDJhLorshbnWpUJKuuY"), }, + { .name = IOV("AQQ"), .value = IOV("ARaareClfFLkGLBaLSrVkmrAhSEV"), }, + { .name = IOV("zcBlsGRPCv"), .value = IOV("FocHUjViaMPvWdtUJNrWwYabICitmVXPYbdaeYBgv"), }, + { .name = IOV("rBLBMQyjzvTGCmtaSQbX"), .value = IOV("zzGaTXZhZvBVkAtRapiAmWmWTOFkUWmBVzmnkkhAKGVBXcWBbcYq"), }, + { .name = IOV("KPrWZbTdZ"), .value = IOV("UiQiwAfUyJeOctcthxUKkKsoNTpLfRcCoWQoMHfOvbxn"), }, + { .name = IOV("tcgXkVqEdFUkbbB"), .value = IOV("YJDqNOiiDuXIjqxQhmkmvazZZZgIXdeZZHyUMOecCAOnlt"), }, + { .name = IOV("rGDKbQH"), .value = IOV("hNzTKvtNXUSJAHOttrOqCLZVyaOnlVfzOkzoBtREFDcRfGvUuVWdkeqOazWFBzBSUGsyUvZ"), }, + { .name = IOV("HSUDYUSijxxeAYX"), .value = IOV("EjVqZwHQDOQzpptfdycbvMFHqggFFtmguqhGFxwxIsrqiVcGshsBqxQhFYvUKwMg"), }, + { .name = IOV("tNeDumuAvDfowoWKsCU"), .value = IOV("zfUURQKCjOSKz"), }, + { .name = IOV("AmwLLjxXQdpHZuaOiI"), .value = IOV("SPQuqcPkguQHwgMahTDOAIelpmw"), }, + { .name = IOV("Uu"), .value = IOV("xFOUZGvyHpDiEJOJYhFQ"), }, + { .name = IOV("mzcyYvOj"), .value = IOV("iAumUuPCrCIARsMqSlOEgjnPGhysSYmxGXmmswroseXavn"), }, + { .name = IOV("QVxQrOslyhMeAuKdt"), .value = IOV("jnKdfiDEcqeQrpMtxKrcNEuMelbdRNvJwapfIVcJIuBNCcM"), }, + { .name = IOV("kFrunDIpPAVCrVcn"), .value = IOV("KoGNsuDBkDodCSsQgvKrxRKchZErKHbtPgNRZAqoZBnFhBmCScnxwKhBRoRGNIhefvYvDEZVUSpD"), }, + { .name = IOV("jm"), .value = IOV("TRVFVGHYlwKVovzlupsIgvAI"), }, + { .name = IOV("VCtMuKNQuizgrkbACLqI"), .value = IOV("sCljrOdlCJUsYcPEQDzypvWNPGWUyOPINJvdzNEYzdYpGuqZlXPNkLzFQAMOzag"), }, + { .name = IOV("DOZFTnmpUgeuIHKO"), .value = IOV("eMkyCkLWIFbeDWkUrzgUAWoBwXSQdMEsrAhqkmdHGJiAGYDaUzmBVQaoyOAeqTYxw"), }, + { .name = IOV("AGiyAY"), .value = IOV("cSBuegKHTwkdSZkQSKxqXvP"), }, + { .name = IOV("fxF"), .value = IOV("gWUpaxYOrcgjgzgDnmxPwhzXmiDIIVLrqb"), }, + { .name = IOV("ydyijyOZnyaHsoQ"), .value = IOV("fjBjitklgIyYmXIBBXKrfQqvi"), }, + { .name = IOV("vmGWJAoTSbXSbACnCbPY"), .value = IOV("XjBRsYDhzhJIjedglWXHSsibnnPHoqgxrFyeUuEFWpydnSCPoAMgnghcVekuWn"), }, + { .name = IOV("CWOB"), .value = IOV("RVperRXcuERIMTZBirsbmbYcUQeos"), }, + { .name = IOV("RQrsLA"), .value = IOV("uhmBLuSytpCZWEZNIjRHXvVIindui"), }, + { .name = IOV("APgmTQKUBP"), .value = IOV("kzDgftdKiwrDakvuvCtQuuXNNYFJOisOCTdzwtfMqdgxtuxowimecKRMmIzjT"), }, + { .name = IOV("KuIGQjDruTKJHKP"), .value = IOV("UuZOzhPlDxKkYCtYbvyWeDAEnwZxwhhlBvmfuTMDLTzUfqihuxjkndNSQDWZbVOcPFNLxPlKONKEi"), }, + { .name = IOV("bWYfeqtFvpbBtygX"), .value = IOV("sIBCCknpmHCrtYYGDlgiOHTvXZPGOxUhmfnHrYnExjZJuVtckyxnMZCiQtPYExhoyIPK"), }, + { .name = IOV("BTmFclvJWsIetuoa"), .value = IOV("PxieFayaWEpqdjDxikQLAYyGaGlSQFnWokhphcQJVYtFiAcmLNweUkpewHquecPVdtw"), }, + { .name = IOV("Agk"), .value = IOV("wNmjZVVwIgJhcHKZDGRrHdbpRvujTtMyBZEppmppnuXdgeQIEsKYquRItIXsWPAAFq"), }, + { .name = IOV("io"), .value = IOV("ivdKyMhpvVHDfwqpNMkDUFSXYujglSJiYhFCtuZITdmAVmDVOdAPTYSUnmivFskxzUNxyqYRp"), }, + { .name = IOV("LZIlAkIdjdPOTC"), .value = IOV("SjZkMUbmUqJdrSnvSbhApeTFpDCoWSzvLBpXFIMLCoetsuK"), }, + { .name = IOV("EwittGRSY"), .value = IOV("uKmqrBIiyFVuawwoSZArDJEEyCyESVkk"), }, + { .name = IOV("gPCmEkoRQO"), .value = IOV("aOPNTeDgpCIjdiRnzfnPgitvOPfEhrnl"), }, + { .name = IOV("HnABTMEIgjiPelTbFi"), .value = IOV("JhRFhgrnWzoyzGCzmNBwEMzNSEILyJexxcISyqlvfWompCNEL"), }, + { .name = IOV("GYJgvdjyNwEilU"), .value = IOV("PpWFTrpxGKG"), }, + { .name = IOV("mVDfKKdfuJjPwzr"), .value = IOV("chPodVigujg"), }, + { .name = IOV("ZwA"), .value = IOV("RXnLyoPGvUsaviXZkljIdLjRlPAtKMyRydGrWFGUXXocJAElwtTljKIWtcXMJjCksrgB"), }, + { .name = IOV("tqcsMUdunMwciW"), .value = IOV("jpHUDiaByUygFAQtWqwrZrsUNmgbOLqLUoORySrd"), }, + { .name = IOV("XHSXwWMjpVNyDgKVPvao"), .value = IOV("mPCNdTZOzjIylIdeZyNjtrYqPyzmyXkjeASxJSVJIuZGObVoCLRsSArHVhsVyGoE"), }, + { .name = IOV("tUnZz"), .value = IOV("HbwgZLwbvIpqNACzvDiUezqBgtkRZeXsmkqUnnid"), }, + { .name = IOV("gwjHckDSujqxiaJPMK"), .value = IOV("Dd"), }, + { .name = IOV("GkXZHRCBtKpocOwbpN"), .value = IOV("xridGhURkJgsVvEwdjmspnfPBUTLezpUqAmRRm"), }, + { .name = IOV("jENLtBKwTj"), .value = IOV("jeIbLCmVYmHqygHEOYTgEcRRnQJHfwZmBHoxCNuuMbSFBxRYNDnGFvj"), }, + { .name = IOV("ddxJHZrXHUlPV"), .value = IOV("IgdDOQjJT"), }, + { .name = IOV("TjykgP"), .value = IOV("OdtJELFuqjwWCexBgBYzPhETYXHiOXZUPuzIvYbiEjALa"), }, + { .name = IOV("LMySiFGGsmZJ"), .value = IOV("yUUNMcMrHlsMGFndJCNgzMcrFmXjnubAPeQdxjFNkBMkZbEekSSeqffKg"), }, + { .name = IOV("zQGxeLxEs"), .value = IOV("kmCzFALgoJbIwYEXrWZBdcPcT"), }, + { .name = IOV("OEHZjDwYoJEn"), .value = IOV("DOghTGmSTtQkttULFqPjrfQOBKvDxZpphTfwSJzJFDxZRcRTIWyegiyjvmkwCWeyRHBgxezXmAOV"), }, + { .name = IOV("qrLkJKrJ"), .value = IOV("zGLlKNooABTDrMZYRHWomckqvjPJgqzyZRhPPoRJvWbcbyOIRI"), }, + { .name = IOV("EwlAkJVpty"), .value = IOV("WiyooOhkmCvnkkUwAvblbNTcaLGuIjwhBlMYfipakUvOvrXsGBGVqLXcCRCPP"), }, + { .name = IOV("LyYeyysRIY"), .value = IOV("DsFWJKzyHHjxbiErbGSfBYpmIrwQwIFJxenXQzUsBTFcUDLkScWWqJFFFenfdosMZAQswMNAVEzNWkgp"), }, + { .name = IOV("UofqwWvNraCpOLSIlWOI"), .value = IOV("pUXfqumhNXcJvxlcBshZmgx"), }, + { .name = IOV("hOiAUpYHXBaEonwqKwU"), .value = IOV("uooxguKKMDsMKXyMYKdhjbyqspaMOgWARXyFRtfGKEmkSQZWmiAydeuqjenfDWieCplxhrTuHBW"), }, + { .name = IOV("eRUwVILdPypXbTm"), .value = IOV("WLqNzPUMDFAetSluRFMAhgaOGWXPYnqYUhtcWVbyYdYAjwboHiiuzLIHmqygUEjltIGidsyLNYjLhbp"), }, + { .name = IOV("StxYF"), .value = IOV("dDbYndXvViaITTLAeYwvLwaUTsKariCBtzNNYZjvFXYoJywOuZHy"), }, + { .name = IOV("hIcohdc"), .value = IOV("upbYEQszgJxSwIBuvukLdRUPKeukBKYUexPSjREuldhWK"), }, + { .name = IOV("wnaVqR"), .value = IOV("tBvQgLjbEHq"), }, + { .name = IOV("sjKmkuw"), .value = IOV("WELzmDadsRauhkfKDuASJQyyCdBhsbrBsRjqKapdbtOhRzcQXMDQdblrXrCtzqotHCCLGtbadmVUyQI"), }, + { .name = IOV("HEqqaoPcvfaIRfF"), .value = IOV("Uq"), }, + { .name = IOV("elyGmgaBQyAdBqtovdw"), .value = IOV("shcWmgXjRZiQhlRXKrPHgTYueVLmhpfdQKaOiIqAQpQSqogGyUWTFtslEPMtXfAPtNyYcLXfkPcHAsLR"), }, + { .name = IOV("lpLpQtGnVv"), .value = IOV("FZDkFAYGZgBLqaSHFlSONQxhIukDAeaIfGWYPKEgNRjOxkJnOSCMDZHKaQUpzFltbtEWo"), }, + { .name = IOV("qVlLLoCwatevBpVqXsDJ"), .value = IOV("XWIaEUZOzetHaZmdBGAGLPUSEiRQAclOibjLmXh"), }, + { .name = IOV("EwgcfrmIyc"), .value = IOV("pbkPVtS"), }, + { .name = IOV("EVwXgZHUNIxMXCFx"), .value = IOV("VFkCouqaPhcxjbxMEQIXgZvhPKjUTaAyJhhtIaXHOPKcxQGuw"), }, + { .name = IOV("MQnXUFGF"), .value = IOV("owGWqGItfebXrpvHiydAvGGKiSgFIzdfQaWkYjbWISsfcglCZwRzRjqjCvnKj"), }, + { .name = IOV("HzrdbTxyCiKEczuDxKf"), .value = IOV("oZQbRAGRNTZIpopamQcpBfqDJWAOzKpHcGiwwfpjuPdMvUlmOxuF"), }, + { .name = IOV("Ny"), .value = IOV("kBXyEqRkZrrXTyUfRrKhsVORYwwAFdgUsdUKrHoAqgkqQNgxYMAEPAulyHlGPLqtUEsYAzMumEjOsPJ"), }, + { .name = IOV("ENYuy"), .value = IOV("BNtvNillmvL"), }, + { .name = IOV("IpGvkQWcBnGuoDHMOvJC"), .value = IOV("lYiBnorRErolGwNKhzdmFDFevLuwvzrsuisyYuoFkf"), }, + { .name = IOV("bY"), .value = IOV("LlEPYUGM"), }, + { .name = IOV("k"), .value = IOV("JHnh"), }, + { .name = IOV("MUzgnCwSoWg"), .value = IOV("XXZglZmEhflkhadIIlnEJCgYgSDtVoejXQTHVpqKAnttZeszxYQeKEzqZ"), }, + { .name = IOV("aYdSgohd"), .value = IOV("AXZE"), }, + { .name = IOV("sjnqSvcErsRIiHhlwDm"), .value = IOV("urhuTOtXLwqzVvIux"), }, + { .name = IOV("ZhMyolGfFAu"), .value = IOV("vfwgAesbmNnImTcdfpttthijqYRtQNxBHFSNzTFCodNstgAarABmTqnZLTvTi"), }, + { .name = IOV("XliLQkJcoGrSf"), .value = IOV("MArKwSWbWTQiEeMmQQLlaMwLmqriQUQsgAPZBBhzzviGJomLgZFZZYbyWDKasAGDFyzafjojuEwQL"), }, + { .name = IOV("MuNfofIUcPuYfN"), .value = IOV("KbqiuRPhfarIOBsXEZXzvAPAnyTsMYZuYrwdoGwUjNbkYAeUMLRCorJwRAapkKSNQqdv"), }, + { .name = IOV("NDVGwkFncKVehYDvF"), .value = IOV("tgunRtYnAMNRmHVGCCHoSrFWGvwbulngTQXnygKvXPiTWIxMGULkcgBvecghbdcqOejqVBJNt"), }, + { .name = IOV("eomghEuaD"), .value = IOV("cZbe"), }, + { .name = IOV("hfgVRUYqNhCMgjLIBh"), .value = IOV("JsmfWURcnjcbXnfeCcCtEgjFSwCwgEpNaDvHbMdLhcTkqceYBI"), }, + { .name = IOV("Mz"), .value = IOV("RfCmykSteELcPPnwkUZiOxFAapPJlgHiOiERxwbtvKFnpdFHIzVsfhLyJZAxFqxtmBQUatSOLtIU"), }, + { .name = IOV("rR"), .value = IOV("VePXDJcKCNMaDipEZwNLMJyBgBNteiepWCuLcBUeXtTZdJZLpGLRAozDiJqEncTEnspsw"), }, + { .name = IOV("skGvkwkkpZolhJCfzvlS"), .value = IOV("lpvSBxBiviEHviXEWgkecSOKeuWKDcA"), }, + { .name = IOV("jKLOpiSNLCvv"), .value = IOV("AdJQAWuIjwDveXsUfcEj"), }, + { .name = IOV("SApEKOSmYiM"), .value = IOV("dXvyKgOSYASTUFqbJCsAbteQnNQMcBwEwmyfpEepdeAkDhiGLJYzHGJKcisPuMBvPqOoTc"), }, + { .name = IOV("DKeyQSSsffkysOQwyy"), .value = IOV("JFPWSTwQLhYLCS"), }, + { .name = IOV("ORqNxiLXdlpMYMo"), .value = IOV("masypIGyVDLbzDImwjUUnOAruuUYmgUPoorFVLlWGkoeNATpYLMjkSadGuMMqmoVw"), }, + { .name = IOV("rEtitTPS"), .value = IOV("UltxpufTTBDlqQFkU"), }, + { .name = IOV("OHYXeFGugDfWAlK"), .value = IOV("dLGDqpjAPehRmQkbbrqvJuqujhFKyOISqBigGEfzaEtiPWgsMuxdmOESQoaW"), }, + { .name = IOV("E"), .value = IOV("ZtwTrnqGCNTSuwYBcvzjRFzxSzbvNoUxMBzbCSfXpiLEcsvaaENwZbZspNqliDnBXlaC"), }, + { .name = IOV("oHUfxbUTNMEsECf"), .value = IOV("CalmfhHlGGQjXKYEbgAdpmlDOIXBAgMNUTvQyUbPFbqJWiEzqGUjpQdUfuSs"), }, + { .name = IOV("X"), .value = IOV("LgijZYpscVhHQtBgqAarKlwBlvzpOcAFKHIYkEXbwKeYaFqKecAIuvBTErySAAmOIROkWhIUy"), }, + { .name = IOV("loLTjjjeJaStQaFaBlXH"), .value = IOV("dGlfeZhkEmyQHVrIYMVAcJHBVyDcaOXwedfAKSZXbyXtIjC"), }, + { .name = IOV("xQf"), .value = IOV("TWYsHXVqEIh"), }, + { .name = IOV("ZOsiJZXmoxdbYdIQyzZy"), .value = IOV("orkOveWwOykvltokpNQxLdQvqNboYZbVpoLwHMqKkhjxHabEcweo"), }, + { .name = IOV("qejmNaCRoAKjOFafj"), .value = IOV("TGRdcJMYkyozyFgWjXMhzp"), }, + { .name = IOV("t"), .value = IOV("zNKi"), }, + { .name = IOV("WgyFK"), .value = IOV("BBODMRcxCnX"), }, + { .name = IOV("ejme"), .value = IOV("aH"), }, + { .name = IOV("mDTmaMYLSd"), .value = IOV("DtNBxlGTKZGTFZHBrFNtPDFgNvDQEyjjDqNTKhKOkBSIjBYoAXIKitJlsgiiFrzxT"), }, + { .name = IOV("rGiCLSMaNYEgq"), .value = IOV("GrfcYTPJWLCBNXMDKDZoy"), }, + { .name = IOV("sOOiwHnAOwOhyOfipt"), .value = IOV("VngNAxHuRqmbPnmtI"), }, + { .name = IOV("VWurhemwYu"), .value = IOV("RsHYWFalwQepWpevvRPtvvaBzFddqbMEBrRawzhudoTRJozJjTuJuNblqOGqhsYTVbEndOehyZAilruu"), }, + { .name = IOV("uQniosU"), .value = IOV("zFfUopXHTSwEphweBFXehagodIJjJIRfbOalrkMQZbVj"), }, + { .name = IOV("bDTv"), .value = IOV("YvGvWceKhKtNGmwDzslormaHfsXbHJ"), }, + { .name = IOV("ybj"), .value = IOV("bHFyJJPGpOupmsPgwGiRkLNQzcJjYCtugbDRKltGcFcoicaOqkNqIgYEenRBbMGBUvgzgpHMintqA"), }, + { .name = IOV("yLSbzdBjUrTbPBKOi"), .value = IOV("HnAtjsaDjFNGdVvEjnEeSxJPpvYyPhSMAhJYzzKEfzirvtOkzxOymVGSiImviG"), }, + { .name = IOV("u"), .value = IOV("MCBbhfspeHXpZcjztFMqRkEclSCjNZ"), }, + { .name = IOV("hqkYyOLG"), .value = IOV("UDwyWpvLjiympoqadVoFtjjS"), }, + { .name = IOV("sQzZji"), .value = IOV("MlewxdwxQNwgWBBleFkLUoYvHLfHXlxptYc"), }, + { .name = IOV("pgxaEfYjMxvQrurLvF"), .value = IOV("lXbEAbYkqfOLbIE"), }, + { .name = IOV("Rec"), .value = IOV("uLXmxkiakaTsis"), }, + { .name = IOV("UH"), .value = IOV("IRuZyIAyQYIIPcsJGxnryKYkxTGEPiAJQGjihwprWaWvYqGgwaKuTbJafcPrZrZSl"), }, + { .name = IOV("JuVhhimgCHmuoAxaDm"), .value = IOV("PQtzZsUuhYxBiGvNKbRtOVkzptYbPcfoCNEPYrYVDdFNbzAUQhaal"), }, + { .name = IOV("hzrUiCfoVJUynCyEF"), .value = IOV("PoEmBJbZwRPWGWRlaXeLvJJradTeyRtAAmIBepYVmkdZGplUoggQgFsXRTelVIQvaTRCzywHzBd"), }, + { .name = IOV("OzhsHJwWobO"), .value = IOV("qaAnyRXyOZiaaaAsNwzvAFLDMlMWsiBWFFtpznXBPmfTPAWRFRNrIwzSrZevuzlEhMJ"), }, + { .name = IOV("c"), .value = IOV("kEp"), }, + { .name = IOV("bncBBGHVqjgtQctCfg"), .value = IOV("irQLHjErEsTmkomNiJXFoG"), }, + { .name = IOV("QzevrDFMOJc"), .value = IOV("MvETXrNXrwddpurNbVSHDYbqUbrhZehxjjMwdDPEGymmIr"), }, + { .name = IOV("J"), .value = IOV("yIb"), }, + { .name = IOV("GokQyEatwNS"), .value = IOV("OjSSSOCKkTTqVFvGwDPJzNgpKhECpLmoexQSzKiItqnRAUphwe"), }, + { .name = IOV("xcLwmKzMKFYVMc"), .value = IOV("ArDyWppGsmbXZpAVvwUylMJTqaTOlYuURRgaPpXOYHXzVlqnDQmJEdHrvMPloBBDYyUV"), }, + { .name = IOV("YHGZyMGi"), .value = IOV("UJrKyUupdYwZPYnvQgEHcZcthMaXluemumRiSmANMyPWjswiSvByKiZvDFr"), }, + { .name = IOV("mISteRDIDnrVAyBtbBSI"), .value = IOV("qjulAOVwiaJSIsbhrulbAmBNvsFTnAewjlNxBsNE"), }, + { .name = IOV("WkWLeCxlQLrIn"), .value = IOV("LuRzUgpJbxeENzmrAqMLstgDPUcKv"), }, + { .name = IOV("HIgcRKYiFMrReMinG"), .value = IOV("jXCJekKqUmyRuWmAhasdFIRJZBLEeBAhtlJczsAPWCYFdN"), }, + { .name = IOV("qOshPjsyZrfdVU"), .value = IOV("LhOwUIYcuPdprzVVlYZRnIOdMOwIljlXfPEEIhIhqVwApqcqsMnMQAzgkGtkfTapnFYHR"), }, + { .name = IOV("qbVAtC"), .value = IOV("CsJAvvGvQ"), }, + { .name = IOV("uJOQB"), .value = IOV("w"), }, + { .name = IOV("UORVUAM"), .value = IOV("kvFKjYdnbZztJUxmabhDcakcZuOIbVHxalFjOpgdafqsDDJWPIgjDNMGTmXGMjJZwnNcfUEKz"), }, + { .name = IOV("eWSDZw"), .value = IOV("NxBeWAwmvqBtBLuSklJzdAxFCZoShxXfWdReIkrswmtnrmqSKuvYsZL"), }, + { .name = IOV("EJnmi"), .value = IOV("LpDMwRnyFMyDEChsyijwBpDjZXUMkyfpFNusIBAngOmvMkZoMIZKr"), }, + { .name = IOV("U"), .value = IOV("NzACTHmmkMJJTyXKdLNAiuBXFaeGNsadBAIDNkgqTctCjBk"), }, + { .name = IOV("MVkaVBWir"), .value = IOV("jDZPHWhPeEIwDFdzExBDsKBoeZbcwjvxwnHUHfMgoRRTZVgcnUCd"), }, + { .name = IOV("oxoLZGosol"), .value = IOV("DdQLGqqkuxxSBufunQKZbguUFnOqyWNpBOTlxdVAFviXn"), }, + { .name = IOV("ptRczBYt"), .value = IOV("veZagdOTlDydBXRkhrJqChLPkUJzgdnyoTGAscGKQUFPbmxXsOTrniEwNlvGQVnvqOTiBSVnOLtPxd"), }, + { .name = IOV("yqeJBWDfENNWnuHRzh"), .value = IOV("AMPWIATXpWLOXJnpicbPmwUclNnyYJumjVvOCceeZaRmWbJNtfowfBxkzAoGgi"), }, + { .name = IOV("IANKj"), .value = IOV("fsWkVsvQomrpzgDbtlywIfJRbHeXOhpzgCFXhgQpexmismyZtAisYHQfenkGRwFi"), }, + { .name = IOV("egvAMOhnuygHK"), .value = IOV("ogQGfDMrYcMVivvPEPDhbLTwSDrGbRrogrZJklxSVUEIztPMznLcuCDK"), }, + { .name = IOV("nbpHIrKhqjQvWmGnQeBT"), .value = IOV("ihkwAsuqhQrnRxcdahFoNQZIaNEAgOTlzrHuRDgsjLmohbwikDCWhexIvnUPPCFjEQ"), }, + { .name = IOV("TbaKiBGYIQtGneSnD"), .value = IOV("LQGwv"), }, + { .name = IOV("pSikgtoWqxMIdrOyn"), .value = IOV("JpKGVRJNerxGPUkKWmbCaStQMinelCLjhlhfagSEcaiEAoGAPYkIvuZTHJjW"), }, + { .name = IOV("bXvkUcYWmySwZVkey"), .value = IOV("yfcUdjTaTzzOoTJcmzbMkVgHkBJZoOTkVaXPkLwEFOAJQrrtCCCXgnuiqi"), }, + { .name = IOV("IGR"), .value = IOV("vRGsloNTaXV"), }, + { .name = IOV("A"), .value = IOV("CAMgcTDPwcfeRsRIsGxF"), }, + { .name = IOV("mUGVWbNfJxcnRvy"), .value = IOV("yUiAcphuTnYirkBPsdveaBAxIgLkVGSMfFOJHBxNYPYDGxSCUAhcc"), }, + { .name = IOV("NmmfKZqrXDZpWk"), .value = IOV("ohpswvcHlMLpLkJtReYJPOQMQLlsRilLxGA"), }, + { .name = IOV("u"), .value = IOV("OlTKkhQgySyAqoWEvJ"), }, + { .name = IOV("GbAdatFyVQLgrZhRKqW"), .value = IOV("uKlDZFQiHRMZVhHCLt"), }, + { .name = IOV("NphEoHzMOAqjwUuakQ"), .value = IOV("nltDngVY"), }, + { .name = IOV("kqVKfWEUbIyknWgaK"), .value = IOV("HmhqKlIOLMgKDOWRNqkaqGREBYkuMLugqiWPkfdmjCSrooODJmtf"), }, + { .name = IOV("j"), .value = IOV("ApQ"), }, + { .name = IOV("tkxNrmDhjZuHTdoEGi"), .value = IOV("UMcjdINDTAlHUQdsdPlarpPkHVsYfWcaUBKbAXLxBeBBCLSfKDjbsagKGM"), }, + { .name = IOV("SPCBjPgTRQkVlzRf"), .value = IOV("sVtokkAan"), }, + { .name = IOV("euealMnDNqynTVnrESGg"), .value = IOV("jPiDigcECRIzvuDosUhTnLphSeflbeqddJTnzKSDMGlCDxJ"), }, + { .name = IOV("uPLTKxCaCIjeMyneArE"), .value = IOV("muPMjBZnIzcvyKWTMikrvBKqr"), }, + { .name = IOV("DfAuqOpcFSpQvS"), .value = IOV("eqZURndLmwhxYbisphAdFgTUVrCyYsGbIkfKSoldQvCdiJVn"), }, + { .name = IOV("JDjUFePbnK"), .value = IOV("xaFkDfKMuPjEcrAlUOuKlelCNvtOJoQUJV"), }, + { .name = IOV("XXrDkEdWGeyRyD"), .value = IOV("QzqrtRoiCTtAxzksnHlCXFQMoFbLEclHmDnKbZDRuhlcSfqyghAl"), }, + { .name = IOV("rqgRGrOabbOva"), .value = IOV("yvQmiOXnoytxvTWLTWhkyZlLBLajBDiOKJuQJpPWHeloxqNytxojalyviOcqav"), }, + { .name = IOV("YQEqbEsIpteYWPUI"), .value = IOV("xBqoAzFBbSNKMmoIHjicdriILazpbGOeOuSVCWvfAhQHYmLlMEwRBoNVQyENjoXuHKPXVNxmk"), }, + { .name = IOV("fqPuvJYoxzTIqaAgDJ"), .value = IOV("VinLfGfFEerKVYDxeSPpDbDzdNTTriKEDPYHsTdXohKjsKeLBYzOHzSuLr"), }, + { .name = IOV("qy"), .value = IOV("RWytgyHZezyRIhUJwSMTkaMVANcLDaLFrytyHUmurXMWQdtLMPGbcPGdfkPGFQIv"), }, + { .name = IOV("T"), .value = IOV("GfHoREfoweibCczMhPyDnOhw"), }, + { .name = IOV("jeKdpDJnvleLxlBLY"), .value = IOV("PbjUOcIns"), }, + { .name = IOV("zbGztoVPyyk"), .value = IOV("XWjUGjOOajtRSTBJxmMMPQhcRddewWdliJUfSDAVmlCyapPVCZBRp"), }, + { .name = IOV("qiDIXLUPf"), .value = IOV("rQLuISRJieYQjlQveMgURSCbMvsfMoaOiBkOSGFrJ"), }, + { .name = IOV("ZtUIuWoLFtwSkQbBEsv"), .value = IOV("xYtOKaZvHjgWlENojBRwVvDdxyeSRk"), }, + { .name = IOV("lWZwzHsdILMRKzbeQFEh"), .value = IOV("gUalVmOFBxQo"), }, + { .name = IOV("KJdY"), .value = IOV("rlcUOQtVBtZpin"), }, + { .name = IOV("kev"), .value = IOV("nsPV"), }, + { .name = IOV("pSzKaQ"), .value = IOV("MHCYcKhTUVVATRUKRIVETWDjmxtZnDqRCOeuLjZvvMKuWxsnwzHnNrKfEWRrW"), }, + { .name = IOV("sjtturYawxFD"), .value = IOV("JUCVzTdBawGUkKSKaForeFTKvMKpWdgQPRKVkuskOiEwTGXRBikUlSgeSB"), }, + { .name = IOV("VovWTVFOedkHZK"), .value = IOV("CRSJffalYqwDdwytrSDTDxzcBuBsvJVrefMvRijGIZyADtlVQCHjAGAvxyDKHrDRiQOCmmEXujJ"), }, + { .name = IOV("rXSoUwMSEsYya"), .value = IOV("RgfIQMgXJdqCExmcrcGkuEn"), }, + { .name = IOV("OodqVaaAdjyYxfy"), .value = IOV("TNXOyUnOHXSreTOUZMJLkntoyRNFCLuFGwfaAdfxKZeiGouMMKbXidQmpHEaLXbZFRGWaZAPnGHUPAle"), }, + { .name = IOV("YtWfmeAggwNVAyujAusU"), .value = IOV("xVYsmidxMRMnYSZXsTKuJQfkHLwtCibWiQbuwFXsAYS"), }, + { .name = IOV("X"), .value = IOV("pGlRVIZuKeDAOYunGxQNWFaoIAWdRlplaIHP"), }, + { .name = IOV("OCMqXXACrjTqgLI"), .value = IOV("NEoQcFriquLHGMOXRlhEbgkQdhYEB"), }, + { .name = IOV("fYiUlvXlaRFx"), .value = IOV("ojnGIBfSxQOgLFNfJaxpRCUkPQtqv"), }, + { .name = IOV("eiAjSXNUXYRoJBYgdhL"), .value = IOV("MTjZOeKwFgQmHvvtnBpVKTBaGbTQKZYQLgzxKHszKRglhmgyzykvRwI"), }, + { .name = IOV("rFAnQfnj"), .value = IOV("rSngmSlkk"), }, + { .name = IOV("jb"), .value = IOV("BuKoKUASbBDyhFqDvtOKcZsFlHSoeZZRDajQhlinHdqrIcRhCYKOOzBXahDmGAijCnkBQQJ"), }, + { .name = IOV("nId"), .value = IOV("SUElVoFOjGSRRaYpSFOdhDKiPKvnuOiPyXKJAD"), }, + { .name = IOV("POPiiLitLcgWGGRt"), .value = IOV("KRguHvuuuNbiTyFXElEdfjbeHamXmDOICuGMuhDQFxCfVfpnBiCDuELvofWYXTl"), }, + { .name = IOV("cuZUV"), .value = IOV("znAnJWPTVGkIJCtzTJlmOWqzolXmSeTZCbqCDNNTFsbrjjqrPpDsFfJCXOm"), }, + { .name = IOV("MvYWpKGqjbqhczN"), .value = IOV("mQBlAJrfTCDygHcSOAVjTrCmnEBpQOUOJoYcOYgyCvmMgspdlQUZmSY"), }, + { .name = IOV("FSItLjxZIDaQ"), .value = IOV("djiXFLTFhJtQmFvYOuhDdUmyktYcBYFjpXhYmMfpxNVQZyGabTbFgOilZbipxlDoxhRutlsSZrvhJG"), }, + { .name = IOV("REhnLECjgdXLqK"), .value = IOV("Jaw"), }, + { .name = IOV("AHNSGDIVJdSjIbERhwf"), .value = IOV("jtXbxgDZzftWTSgCaEvXmmjayyRyuxGGN"), }, + { .name = IOV("AdrxcJBntjkfqdgmJ"), .value = IOV("RABJmAMDcJMKYkARaDkqDFbPeNbRRcQknGHlTEKYJEpOjPqncPcgfmmfgEwjp"), }, + { .name = IOV("eiQClybE"), .value = IOV("elXJdWMQlItsZeOgfmicNuujTOK"), }, + { .name = IOV("ltUZMwOfgDzgozDs"), .value = IOV("YctxGlSkwwGGYzhkMrFsdgC"), }, + { .name = IOV("TRhYXgZGcdclM"), .value = IOV("rHTbPGTbnwBOEfkycbvAnKqRqVQNCOmmElLPGcYHIcBcQJpJQoYLlOKvinQBqQDfMQjAgSOOBST"), }, + { .name = IOV("lw"), .value = IOV("BBvlWOeIaakBPYggspYf"), }, + { .name = IOV("zWHvjAlKYQLTocuyVSax"), .value = IOV("eLldMctEkytcWhuqIlBiSUGaeWxJVSWLKRibdVblpRZQxjy"), }, + { .name = IOV("uMjtZyXhrSmEOKu"), .value = IOV("zcJgXJULlPCkJWCYkpjGtEcKuDzDEIITfJJnVOPhMplnKAsXvcMGstUsdEi"), }, + { .name = IOV("EiVTYPdcTsPUfMOaqtHD"), .value = IOV("YjWHQNJlncMRJNREjtHfMcYibGqLmwiHTwkVBPZvKTUwQReeaYIlUdSmvmuQSUTuEeYRlXtiXVksg"), }, + { .name = IOV("vBo"), .value = IOV("gUlTqQicRmGaIZugxXlbdDKNSeqrU"), }, + { .name = IOV("tzBAybPoSmre"), .value = IOV("MyQPDWDWYxTzPW"), }, + { .name = IOV("XEPutvnTouBTUzbqNYOh"), .value = IOV("BhfHUbXRHZlvdiOvESubYJDAmDvfbAQClkmlpZSSbpKsgfYxQWbHElooVoYuse"), }, + { .name = IOV("muJnYTqWOhrrhSbouWvt"), .value = IOV("WHgeqroGILJmRHHgdMoJoSzbDwzgqkrdeeQDvsuooQwpBUUxcBrfcRhTCFpTX"), }, + { .name = IOV("DdLX"), .value = IOV("vfiBkNYQpKZMzDPmbHsNhfAQKanlQXd"), }, + { .name = IOV("DfGlUGeXwGpSsJt"), .value = IOV("HRrdnyzAYdVFvSDcK"), }, + { .name = IOV("jFnlLRsISnfth"), .value = IOV("waWCswLkEozGDyfJFduROPvQQUGCDfICfScPqWXaAN"), }, + { .name = IOV("zxJSOje"), .value = IOV("pJayqLtEaUiavdyHHQwWMTbJydudTXajeMqR"), }, + { .name = IOV("yeuT"), .value = IOV("fN"), }, + { .name = IOV("u"), .value = IOV("ghVMgkjkGamHIoWWCBlSfvKHBwjJRsurllMEWKhjkhtGkQlaqGkyMMgXJQ"), }, + { .name = IOV("FFe"), .value = IOV("LqpEEsExLoryjPgjBtfjjBBbJAAnMjvRaaBkUceysFfxkPmEzCyVUNkJykFKMYxYNhdxwU"), }, + { .name = IOV("lRBdsTJLhkekAWSdoBT"), .value = IOV("QtBCSvnTiKZzPQvPcqeyWxToQouqhOqbKyMlDalEthZJvHMwSLgH"), }, + { .name = IOV("dJpCuDsBxICJw"), .value = IOV("VhyDWMgclwMcRIUwOMneqZTfDWMMPnRerMRSisvdPtZArSkGeMHkdTrgrOOumd"), }, + { .name = IOV("PlbKi"), .value = IOV("MxyDQG"), }, + { .name = IOV("UiMle"), .value = IOV("LFSJsRzRhzsENazPMYwmSqDflhYIqNYbdVnS"), }, + { .name = IOV("fhnYVLyKPgMBLyX"), .value = IOV("cuHbqbcHdDeDwLHU"), }, + { .name = IOV("CMBlcvcDrjkKA"), .value = IOV("utTmNMWkRcLSpQqlYifRCjjZXFoBConLUaagFtiVlGDtaFdOyHTHxFSDOlBsxlHDYtMWXueGxhcRYl"), }, + { .name = IOV("VqfRCnWUdhYUhate"), .value = IOV("PklAjVLOJWvZEIBVwrZEYoDlsoSJTxfgpkSAbtvATmeKsPwQWTXWKZjNGd"), }, + { .name = IOV("RvZzYwJVrprRofCutvwX"), .value = IOV("sTkgBr"), }, + { .name = IOV("glcGkSnMiZJufDb"), .value = IOV("oivOBsEeY"), }, + { .name = IOV("sonbQosmSaBM"), .value = IOV("hWjhwvcnWLLLDUnfxlgSOXUroBQWwPsbaUJVGqBYBWkFxjqeXZ"), }, + { .name = IOV("Ta"), .value = IOV("dNLJSukPggaERkRlMHQnpEAhHGtbknhxIvvpsnkrrJHaZhxJCOtWCCMdsL"), }, + { .name = IOV("ANlsuihpDohZbXgcbhC"), .value = IOV("rvxJEpVsZmglBnGJWPyDvFiKovjEYghbocwUvxfGbSDxMVeNNddrnnWvYXMWSnATqhifzORJ"), }, + { .name = IOV("QAPZBVUutLXu"), .value = IOV("nbiBtJIjjqjLZfJhORCkko"), }, + { .name = IOV("vnwYEnCFwvVabzmezwqP"), .value = IOV("glUoYPFOXRlhlULLIKdHyQWbRzYJezWtSgOuCzoMWPPhEZfETSk"), }, + { .name = IOV("MGbKApgNSvZzCMmsReo"), .value = IOV("mJbUHTwzrdEXengEfXWkkzZBGLAoQWJhluYaIUXYcpTBmPVcuF"), }, + { .name = IOV("Jb"), .value = IOV("dtgkajHrVHrClxGhWuVaunVwlstldnL"), }, + { .name = IOV("lpbIoQPWNujKZo"), .value = IOV("iSUtFzPpMdkrOmKIpbXXreDAXhjJjD"), }, + { .name = IOV("nmTRDzVQUnwtQhzj"), .value = IOV("LBiDDqBfAoxzZWCib"), }, + { .name = IOV("QxsYKHJMnkSEOdsWuOm"), .value = IOV("EoxnczkaNAtigYibOwt"), }, + { .name = IOV("wdYZjbIdEIHtoLqDA"), .value = IOV("vPCaLgEIusXaXCqIlriIKIInTAxVVMRhTnAESixBmLPe"), }, + { .name = IOV("XSHIZuYYjOQRggsSjRv"), .value = IOV("nlA"), }, + { .name = IOV("oCcvwJibGtDQxHCK"), .value = IOV("NJONHfpTzKmHTDoyJgqyLehhJFzXKVJzicGml"), }, + { .name = IOV("MFUWmqIDXwGRslnIEg"), .value = IOV("hVDVgpkLvNXNLfUuLsgtnAvddgjdmTYWeWXzHcRkhLQsM"), }, + { .name = IOV("hhQI"), .value = IOV("FwbrtdMNShdx"), }, + { .name = IOV("FXim"), .value = IOV("DRBtVLqyvoMoYOkKfalaiatwPWNpfYnfSErqgTiHsYdheeAxOLqJxtxqzLlyIobJLCG"), }, + { .name = IOV("oYRepkqj"), .value = IOV("oDiYU"), }, + { .name = IOV("vFGMGgZny"), .value = IOV("IezqzanLXVtqESdooiilBocJySzqDCTdkQUWjjkTpWiqTKkHNmrlvivmReHtKxA"), }, + { .name = IOV("dRJrYhgbINENMvlpAi"), .value = IOV("nPjCPJXxcSVsmkLwCgCSsuFkpLIyTYyRvVWCJEjvVEt"), }, + { .name = IOV("BB"), .value = IOV("GpKqjHYwqqUtQXHOKUIoXGanLFNJIMvNFLyVfyFBI"), }, + { .name = IOV("pYKCW"), .value = IOV("OQxkYWZNXMqgCsVrxNoTgEjPXRwWtTMmCscRcGYTp"), }, + { .name = IOV("hpvEGreqtlbmD"), .value = IOV("jFGmflJiRjDKzaJGKehbyTAHftiMnQFLeHFnXmLdcrIZIimxRkEcZzudrcnbaTUmxITwuPSdt"), }, + { .name = IOV("baOAkThAKUN"), .value = IOV("cGOUGkABSDQvsuWToExBoWRfrIZQpvvlcpvXjCgp"), }, + { .name = IOV("KfInptePWsvsSgsB"), .value = IOV("XKHstiROGvaKSnJsEtDugZZOAtirrOCNczxGjBWSkLuQB"), }, + { .name = IOV("MpglTpdgNUdfxr"), .value = IOV("ApBvTwEWeHixISrZmItWZAkYDLSldTUp"), }, + { .name = IOV("xIkyJgeODaLQYrxhCH"), .value = IOV("HmShZgZwBRZJDbxKlHmCWViQvtq"), }, + { .name = IOV("hWAM"), .value = IOV("AaWEvpZThvkeLXfHZPNAQPUQFCPiCGxNLgwnBLLZyeZmsGyYjELwhojifSxwtutqXJj"), }, + { .name = IOV("dUGnNisdwzaxlcWxagI"), .value = IOV("XXDZAicCZVvvblvpOdISivaHSQsNBqAjUoatcCBVABFfCYoyvwpYeCBqNnrJVxQtdnnqTReZfseTeQm"), }, + { .name = IOV("yZJEy"), .value = IOV("bQnLR"), }, + { .name = IOV("PaFVrQsTaNSypTKXxDZA"), .value = IOV("gyHfqjLtFJurmMpBdlLmaxnsVwRrodfcrWGnmGjQCzzKBdanRCSFjFBFwVCwzqohFoMB"), }, + { .name = IOV("oDVofg"), .value = IOV("HBfQOzeedwkhtbqGraObPmkcHARnoeiRAGaAuLakjKvZDGHHREJOZkYGKePYCmWpyZggehbWjgbe"), }, + { .name = IOV("wWFWMdMPOTdvTlZQpS"), .value = IOV("gEpMGhEnhoypmPVQvyvsbilzuqdmNELzZQXtEQCehgtmukdSCgxRWjcRGXilEqceyHQ"), }, + { .name = IOV("wpJSaPjXlDlc"), .value = IOV("VHUQhHsxEnjSxcPPymDTyWrGvzPnpBfQlfnn"), }, + { .name = IOV("GGzrHMgZObn"), .value = IOV("lKHepIwYxctnuZvQNCHjacpnGWTGDjjlQoJrYdyzNSeAPtVyuNnEzhovl"), }, + { .name = IOV("khyzTD"), .value = IOV("DM"), }, + { .name = IOV("RxaDXSsEYor"), .value = IOV("STlFqLj"), }, + { .name = IOV("EpouXFGb"), .value = IOV("yrrpAAUuASuMzXdOEVhsrLFpWtVZJbDske"), }, + { .name = IOV("LhkKSfgCZ"), .value = IOV("SxDjdyFTKqbRlVXCyelDAyduuOzhsG"), }, + { .name = IOV("KYQuGxYskjzlQ"), .value = IOV("bTOAFExjGAxfNAarvkrEPayfoeJHHzcCLVEeSNLlKVMMSlfLshlZOO"), }, + { .name = IOV("mwWH"), .value = IOV("vqQrjHkpHuupKWHVWDNtPuzdMhjEXzthldDGWBhbbVsWVdRH"), }, + { .name = IOV("wtMkmlWGmlI"), .value = IOV("mambeRexAPaSFcotaHowytmmBclJ"), }, + { .name = IOV("rZIac"), .value = IOV("zmicHcnCYqZiiPImtUYdPxUmjfMbLCDCIyvRllzMBPkJMbXpQmtQcG"), }, + { .name = IOV("FAzabuDwjVQJRBMucBp"), .value = IOV("doZvKMnMsuPCtngjAPERKEuIGpwnuMwKccBSZzUUWZvZaaBoSwCfDfKOYARlQsQ"), }, + { .name = IOV("GjnuLryi"), .value = IOV("EiEMSymGDuETHYNLrnitvsMDxQAiztwCPOBFRcF"), }, + { .name = IOV("uoXlPPDqTuQY"), .value = IOV("plibHBondtFjFdUPFafYTQZBRtRsoVxG"), }, + { .name = IOV("SsLWqcEQoQBv"), .value = IOV("USNtyaihLdNGdigDJomMhkPTCFkvlCHWGzWmwITGMoOrzKDuRZZVhFJEg"), }, + { .name = IOV("riVpmqpegSRbdirLPe"), .value = IOV("rtwMGIEEgVZHZkunHQqXEdaKBPmQWvvLffHKCVWxpacOfmoELJPiBcWNDceLJQLF"), }, + { .name = IOV("hrkhAHWYoozCL"), .value = IOV("tpwhDbDEaCnDsDsFcewWJJoVtEvTXrbFFZPSuoKnKaEpYUXOzVSChiWaLTT"), }, + { .name = IOV("l"), .value = IOV("lht"), }, + { .name = IOV("WsgQzWTcHLzvvHDzqS"), .value = IOV("vxpNUQTLSkUvqRbZTAnbnVKalBaoTAKJbnXWEPITOwSzalZlefUsktHwNnCN"), }, + { .name = IOV("gQVjNVlszWkgAd"), .value = IOV("dheqPmqgjehfURPsXoNaqXQPIVqhSEQIDeGhIhmuprWxSeQubLZinPqRWIBNYdj"), }, + { .name = IOV("qrQDVGkjXEz"), .value = IOV("irSfGFRQvlSovoJLlEtjhjUCgEcQSKxEKPloTrWZwJRWAAb"), }, + { .name = IOV("iCVBJwaN"), .value = IOV("erhdFGCjvEEWZyILNHTRXbwNmbByYoSzafvGMsrSltYTbQTEYGMRvEiStmUJZqJutJKq"), }, + { .name = IOV("eDmAqfDcxbgYlYzBMd"), .value = IOV("eAEqYVoSbOWKEVMcLkv"), }, + { .name = IOV("acEzwgxQFTZaZDOquou"), .value = IOV("kCQCpKZPbfoMPDlhnQLtBQFYplUxjVZmIEbhIDMSVKBqDkHIYBBtqjnVlhuMrdLB"), }, + { .name = IOV("ukeadotNpSAMkPpHzUN"), .value = IOV("TMAaHtcZS"), }, + { .name = IOV("dhyNuuC"), .value = IOV("IRkhYVIyDDlEQkUQdXsweKukvUVcBGlh"), }, + { .name = IOV("dCzhp"), .value = IOV("ZP"), }, + { .name = IOV("JKaXXcKphgnPwfql"), .value = IOV("So"), }, + { .name = IOV("xXgL"), .value = IOV("olNISLyzbynbTUYCUEMeARlcwOVnxmKsxxnthqSoSFOaSNeQHzBkfE"), }, + { .name = IOV("kGGLNMJEyDMZM"), .value = IOV("NWTJSOdPxp"), }, + { .name = IOV("pw"), .value = IOV("PyrsJBIBXlKtxEnoxTGVMKAMlPoUiaJLvRkPneybjdrusyTrbgoxKSZTsIhRmeEBw"), }, + { .name = IOV("mLofHmzOHGi"), .value = IOV("uBqgXvS"), }, + { .name = IOV("P"), .value = IOV("OYBrrNpSjesHeTjfjJm"), }, + { .name = IOV("nGLPK"), .value = IOV("VmAXmYaXNgVMLeaURyTFhzKpxuZwRxsODYSdzibVbwhBHjBZOignQUgwyzThKAuJzUHoAJfG"), }, + { .name = IOV("DvuhFBrTSykQnYTOV"), .value = IOV("HOebknKzKmOJfjPorsxRdTBteAfBCbwqngVJaDwofILhvfTybP"), }, + { .name = IOV("NTpTpAQmNarR"), .value = IOV("YEXPZSPhwhayVaHISIzkrBzVoaydaBbDjkihLovCee"), }, + { .name = IOV("urqeWLt"), .value = IOV("NUfErGQmFJwylUgTaalqamrBTOcbZfCeaHWbPlEDfWoZrXVddDkwVQLFFLuZSb"), }, + { .name = IOV("QmfUUctKvIzdWNitmHoq"), .value = IOV("PLBynGB"), }, + { .name = IOV("msXPmUq"), .value = IOV("cmbJgrzikhBZZVMSWFeEELxOcqhwDjMgHphnIREAHDjiRozltMj"), }, + { .name = IOV("AMYHQEfuFiPitdiPhL"), .value = IOV("XiwzRnTENhJMam"), }, + { .name = IOV("HdGw"), .value = IOV("tCOhQFMothjTMIarOJexpYYfoSCNwfXXufzoCIvVPYtEmEjy"), }, + { .name = IOV("KvflyUMzTHtTG"), .value = IOV("Vi"), }, + { .name = IOV("HewVMTTu"), .value = IOV("ZOXSJMlcNCqXkNghswNiLvCqtaTjfD"), }, + { .name = IOV("Rtq"), .value = IOV("uQVtwbmuiunEsdsHfTUyCOWADusxZnurxKLPnhSrnyYvnfDNflvnJw"), }, + { .name = IOV("eEFUYyyfWeSMNAFhGN"), .value = IOV("zjavJPsGhetGJdJhR"), }, + { .name = IOV("bYfzeddpWjQcqDcnSR"), .value = IOV("OKGOYjNgsQezhCoYiWZjBjMGivIQWsOFgdqWAQrVJXuBzIkL"), }, + { .name = IOV("EDWiCoCHfWTMuQt"), .value = IOV("FgxREGEayGESkBzizA"), }, + { .name = IOV("vkawjBqeEDcolhV"), .value = IOV("wwcqd"), }, + { .name = IOV("XsmkgPDwv"), .value = IOV("wjzwFIQcbJpQALfUebnxHPwWJObQsDkUKWYkJmzuvtGDCtSOPsTcdwhpEfWFASKB"), }, + { .name = IOV("zET"), .value = IOV("dlIaVktwgMbSHakLJbczS"), }, + { .name = IOV("UlRKr"), .value = IOV("aXZhtzAxRvsIhpbL"), }, + { .name = IOV("nPHKcniqvX"), .value = IOV("yfbDyOJQMcIZMfYMhRFovP"), }, + { .name = IOV("ZxomMNXBarPWLvDrY"), .value = IOV("IjWYJMfYySKTDPlECOoYJRadaWgPQjFjCRtUgeISTQRnRdXDZmgNmkALOUytNJttdrvdhGDfHsfD"), }, + { .name = IOV("SmspLHQIrNEnadibs"), .value = IOV("wnHHMruLAoaXmCnfyXzYFfbJ"), }, + { .name = IOV("rjjxi"), .value = IOV("owzSoDCCETPXSuTxLWpXqZWODNwmAqEDJsbAvEbmADaSQoOdJGLFQmWHVMyeRgvBLrJpV"), }, + { .name = IOV("IBg"), .value = IOV("qe"), }, + { .name = IOV("KwHAsohOdh"), .value = IOV("YhkOEmzZCcriHwbvMNsGBW"), }, + { .name = IOV("jwjnR"), .value = IOV("KUcNlEMAeucUNIXgSCfTcVniHWRJPHOLyKXdUKpFZxVkDKpvTwgJxYLu"), }, + { .name = IOV("nVWkSwAzO"), .value = IOV("ocraulRROizhQROLAe"), }, + { .name = IOV("ygLAWgpgjWFgOpcJ"), .value = IOV("vi"), }, + { .name = IOV("GVFAB"), .value = IOV("oxmEnlDAazzX"), }, + { .name = IOV("hF"), .value = IOV("YyWmYwnbFQvvuaPadcODofGSBMYwqmvQHTRCuhADdQQW"), }, + { .name = IOV("yIkHN"), .value = IOV("KYLFLDACgeWkFelEzqNxIkrvLAiiWrNjsI"), }, + { .name = IOV("KZIRvSCPQdwEb"), .value = IOV("SDHWnSMooInMaqFiHgKAvXkyAuKQsZlDtmnXQRvsUnSzFORy"), }, + { .name = IOV("KBz"), .value = IOV("AHRmRrmgwqJbtVvolUSjGgsUiAxUlDDqnoPaQuRiUEJhXvPLUp"), }, + { .name = IOV("KkaBrkvokiByJTfJZ"), .value = IOV("esmpSVmAgaHZuipdsLWjvWKiNmWLkENPMUjIKNhztFcrHfWRM"), }, + { .name = IOV("bk"), .value = IOV("gQCcjTUjbWgyanLDptit"), }, + { .name = IOV("Cw"), .value = IOV("IDkvIEUNJefFupEZa"), }, + { .name = IOV("axeZoSPHlFUvubniYPw"), .value = IOV("erdWKboqDXcBPRAWboeHGzUAUNxRgsXrIvCtZEDHDqxBrufFbfTIiMBqrUxiJxmH"), }, + { .name = IOV("rhzqjyrbOhzuABPBYJjO"), .value = IOV("tLte"), }, + { .name = IOV("jDQGwBAy"), .value = IOV("CToCyaVrMCJIZZroYPBNbdqLBcdLhojjJNkSWOJonitCKShSxhmAAgrwPD"), }, + { .name = IOV("JRnCKjFllCekTnIZoL"), .value = IOV("GXycuLjSfgXzCMbvJtvvuMmtgePzCbGHAPPiftjzPfBlczwjbVaPccYfpKmBMIFwqejLPEvVyBtiJXv"), }, + { .name = IOV("aViAsFnA"), .value = IOV("GCAxLaUllgMljXhGjpgbvRfEcCWFyGHVKrHLqCeRBHPhRTGlgTfHgYWe"), }, + { .name = IOV("Jhsu"), .value = IOV("XUkkdtPxAybRPcSLWdkYtKiLcMhYokZA"), }, + { .name = IOV("EoOKi"), .value = IOV("istn"), }, + { .name = IOV("qtZowzMpB"), .value = IOV("fWvjKmEtzScDbxQOMCJyBfpyvGwiJdod"), }, + { .name = IOV("vMANNiFpO"), .value = IOV("nvBHtGfGasKtXjuAWjyomArxuxwXoEgBihUCMpZCMgtyYpjci"), }, + { .name = IOV("KmCMhkHRN"), .value = IOV("fnlYPygzLYOndhFmOlpbVETRIVemoPmYcJIlUDmOQbahGXctjNGoyTsvNtJwjnp"), }, + { .name = IOV("OAoUe"), .value = IOV("TqOsOoR"), }, + { .name = IOV("mqCUFVYwdkcJLMt"), .value = IOV("iTiGJHVISGVMQEbgBEKMEvAY"), }, + { .name = IOV("lXNKyGDzSR"), .value = IOV("fzuGctVbKauxaPLLjjWSaKpsVtsbfgQDdYkStTFyEzzUymeSXmlaiqaP"), }, + { .name = IOV("knFQB"), .value = IOV("uGkEOiSdQdmNgveaxZwTFMFBQTZnhNTMevpwzMtIBAHvolpiFalxTKKvrhYHPDHujyVudgUyRD"), }, + { .name = IOV("ZnXxvjynoi"), .value = IOV("ENXtNWgsLdqskpZrELThUCVHZCVQ"), }, + { .name = IOV("CYoVDfysczUZDtaFJ"), .value = IOV("yNzCCBznkajziKfIGuzirKAcDzFthzWoBytKcwSZZHuXSZNNWkOUHMwvxwBGdkGxb"), }, + { .name = IOV("SLnxNYbk"), .value = IOV("eJieKWcImJnlOJFohwmIvrDsqEfwIpKzbVhQZymQxqcgAPbsyjlngNWs"), }, + { .name = IOV("JASLGuQSSZblsAi"), .value = IOV("qicjbuVftca"), }, + { .name = IOV("qcmdhOGMRB"), .value = IOV("ZjglNqWBrLfIdOpXRyHOWPeXUwmrJHacs"), }, + { .name = IOV("uQkJQiz"), .value = IOV("AMFITgIaAWRlMoEdgvPxHDHJGGVvaqxeOqXofVSqewtQU"), }, + { .name = IOV("qvH"), .value = IOV("DOnBCUMDSwbqZnjXErGDzJfoqBjpGecBCznUAVIiCubgqNePJUeqjqE"), }, + { .name = IOV("GCOzmthHpGdUkNGVbo"), .value = IOV("szpwOVGbvpZeBh"), }, + { .name = IOV("YHr"), .value = IOV("TdRgucVJDROsqmooxKUnytprngGWVweymDWIfbdNrc"), }, + { .name = IOV("MTsYLsUr"), .value = IOV("LeLQSPELvueShYVoJcjlUXfVhrVvkytGhkgEhLgDFTvllkru"), }, + { .name = IOV("WjojWrXHlFU"), .value = IOV("VOpjkHIxdppXCTWTJdm"), }, + { .name = IOV("i"), .value = IOV("KTYQxfPKGqwcEbXNlvYVLidCilsnUsLCNsrTwKCUZCWzjRPyjmJFvAseERYIOzMbKYCKIMnWPqeujDi"), }, + { .name = IOV("LHdACkXjIxhBxB"), .value = IOV("IhIToMsxXoAENLhPZcfamYPTKDRSAnkgmlJRcnBzVcHLfmCsUNTOVTSeXsAaBetYovVFHJo"), }, + { .name = IOV("S"), .value = IOV("UzmkbMjYACjmrTNoCXsmKaRMHaPgcstWdmXRmQLMNR"), }, + { .name = IOV("qTwgCefp"), .value = IOV("wYFqmCOrOUqPeGaaGNEfldRYRCOrsXOetbXEZffxoleSxmRkHPyQvcYcz"), }, + { .name = IOV("PbXpLQLhMhNQXbpX"), .value = IOV("piBwKlNDBXgxYoymYzwhgmkCJUcWuuyRPLrlMfPCTwZEOKsCqsWQWTGeAIDDxtzwCyNacvY"), }, + { .name = IOV("tRLI"), .value = IOV("SWDcDNZO"), }, + { .name = IOV("yqvWhJEqFgfLOoegQBKz"), .value = IOV("XwTLY"), }, + { .name = IOV("FHRT"), .value = IOV("wXwVZlyUUaIAHMHCBW"), }, + { .name = IOV("ONluugbiBEbc"), .value = IOV("WIpCEFRnTVRJbkKnQhxjMerusMMRgmnMHAyKuZw"), }, + { .name = IOV("kfdhD"), .value = IOV("sxGmPcplGWmIxQ"), }, + { .name = IOV("qxwMtJtNpyzEVawrMQK"), .value = IOV("kKgGgPtQuDEVYUrkUoAtvWvLdeBjgAsDIAuYJmCOSwhBIsmnISZlmaAp"), }, + { .name = IOV("lUFaeLGyxrnS"), .value = IOV("jXMoKC"), }, + { .name = IOV("KpXbMbBxAsQzDXLR"), .value = IOV("drISwspxAzkDoxNyGmSzwYWiTZnDl"), }, + { .name = IOV("omDmaumgcdplzvScD"), .value = IOV("PKXrhoBjQkzQVLGdypEMWUOKECfbGuHfmDuDNQdpxXJzi"), }, + { .name = IOV("gzzKTsZmxkEPbkvYt"), .value = IOV("qZuCCHImPWgzDODCgfSZapxFHEoVIsnzGwBsSnRwRAsbjTdGovpphVQfSOPvuaQw"), }, + { .name = IOV("mmPbjcilYyfEvhpbu"), .value = IOV("WYUIyAFnSknVMZKyMpaaNdChnwF"), }, + { .name = IOV("YoaYpDRDWemEVN"), .value = IOV("IqhqlcWcQWcsbWpqoAfrronwBdcrtSPfyXkYucmsTpDq"), }, + { .name = IOV("oRcyEGTVLH"), .value = IOV("mM"), }, + { .name = IOV("nUrbsTbiBCMqr"), .value = IOV("gFmWsZxHvZcakLeNwCJMvwdaTdWK"), }, + { .name = IOV("LEYj"), .value = IOV("vIdRzHCSxCKGdAVyKQqlaIRYfGFrlpPOEVUjQX"), }, + { .name = IOV("VdDlEPmqzK"), .value = IOV("SuiFzPNBgMvzRLkGyFFchHpfUIpwkx"), }, + { .name = IOV("WKmLLsazT"), .value = IOV("mQoDuodMyNqgFFcCqRojyBwWAXvgRaAvsKUICsSrFJtYuFgPqdidGgbIjANYSt"), }, + { .name = IOV("AVgcrjbfCEALllVBoDJJ"), .value = IOV("fMLLCCWFNHPeajdLzFzIApVwapbrBgxiLaekweWkeuptlI"), }, + { .name = IOV("iYEejrlapZj"), .value = IOV("cxsjUDQgIWVERGmqUShuIbTRCjTUbWGHnFujvhFKrYaHYwxkSkeWFVtUgnHEPikZjKPQ"), }, + { .name = IOV("QuWEsAxxEoCQDVbLCV"), .value = IOV("EsPLsuneFvskumD"), }, + { .name = IOV("yORCjJSRWcGAcEJviXT"), .value = IOV("VtzFgjgXdXoVfjoKTUwWwobWDQdzC"), }, + { .name = IOV("qbdIKwJEmSNRnNJ"), .value = IOV("mPeWXrnPyaSQYOKvcBrVofZtPRbMwLVCmjCvCFBNgfejLlmdqKaRHAJLJsFBcm"), }, + { .name = IOV("KaWlao"), .value = IOV("eCKlbObXyyLtJDAsTuCFqEJBurjKwsZYufSD"), }, + { .name = IOV("MbNSIVkRlOx"), .value = IOV("ounDzfhiYvtpuSNIYiaBDAYaWIjQLCilwIrRtueoY"), }, + { .name = IOV("L"), .value = IOV("DGANQFwgGBOQURelTMMuLSniRdTztdHfNwtkT"), }, + { .name = IOV("AWVQgRNr"), .value = IOV("UhAOrFtDhDTRBNniRgWpYFdzdprmArWUySjQwusmRGnpcFQggTzJwqccsckpUpzTu"), }, + { .name = IOV("CnUKQovE"), .value = IOV("KkxivJrbcZjBmhYcleYLdwKNPLpfUWrMKlprCprPTQaANCaGSFtIMI"), }, + { .name = IOV("V"), .value = IOV("NArDJkNmEMXh"), }, + { .name = IOV("Wtyx"), .value = IOV("CYUfhapIBsmuOBPWspObPzonmqwzCDEevwVKcBmhroEAYDOrVyuWbXCssEZOflkNFvLxhaGflGxpN"), }, + { .name = IOV("AOIbsVlRTOVXLY"), .value = IOV("avYHhW"), }, + { .name = IOV("qOicYwZkWTMCED"), .value = IOV("hyZggoitpoLHxnmEPfJeN"), }, + { .name = IOV("iKLRApewllROB"), .value = IOV("dGFiIlyfKyNvHOJkX"), }, + { .name = IOV("hEyRhE"), .value = IOV("zleaTTryYWIOuiWRtmJQxLemaCmHQRDq"), }, + { .name = IOV("GvaUfiesybIRFrZJx"), .value = IOV("RKutYdDKQIylyjJHHlKtbieGzanVgKtzobxE"), }, + { .name = IOV("cXahpuiFCsDiS"), .value = IOV("A"), }, + { .name = IOV("ZhnfBoF"), .value = IOV("QFzTXCzIhrQmVHGpvCTPxyUHJLhkJJESJrawwBBp"), }, + { .name = IOV("JPUAplqsJxkBxg"), .value = IOV("PLcTFGuXYGMPKPvSYlTxN"), }, + { .name = IOV("cUY"), .value = IOV("PGyJEzfYvXUPJwyltIBQAXMgeMIyua"), }, + { .name = IOV("GupBhkBJUKpoUMdFUr"), .value = IOV("ZZHtmsenMxKKVwHOslgyUr"), }, + { .name = IOV("YIFYnABxtFIMpMqebkH"), .value = IOV("UZOP"), }, + { .name = IOV("N"), .value = IOV("mwTbxEDqwEMLXzQYpSFKXhYPnIu"), }, + { .name = IOV("RVwlbFglpxs"), .value = IOV("DtOpqxfXTSDhIJwrVVrVxjyddlgasjxhEoqqvlhzsYGHYUmmqidlAQ"), }, + { .name = IOV("WUuswDDw"), .value = IOV("UJiMLZxxhmaxopmYCVQiVqcreamvOmpVuBMb"), }, + { .name = IOV("AHnIYIxFehwdZ"), .value = IOV("lAeAUrwPPryaINIXNvIgfpAEmlihLZcqsbMLGIfSqKPLQep"), }, + { .name = IOV("BXDtJRRrRSwVkVo"), .value = IOV("ECuII"), }, + { .name = IOV("NqJydga"), .value = IOV("FubBoMwSqvkSPIaOpxbhzOJcMpYkYIRhnjSwFhlDlLGcijVsifKVqycOrVqDaLwowcjHaTalLF"), }, + { .name = IOV("feJIxLWenSICsdYfKUF"), .value = IOV("BwWUozsuuwrsjHnJfJSuEMBdRlaJm"), }, + { .name = IOV("kwa"), .value = IOV("wogQobhbngzIASjlSPDIMhchxKSZFxgkF"), }, + { .name = IOV("kdeOvOVwYMvIHOq"), .value = IOV("GQuhCUQOfdFVjOpDDcFqoLTVJqiVmIvuLGBrLTudDmsVIyNzZtEZkYcqqExEfsAGXXOUKSbMTAXOW"), }, + { .name = IOV("qHycukISzuW"), .value = IOV("eXeNMNZjbCcYIuARkqClvmyiEgeMKwdeEXxLmUopjnZxDflGBkWCKlfq"), }, + { .name = IOV("AKvbBBUkBtTO"), .value = IOV("gwoVWKnDFhhImeGcfZpQdhUzpZKMVGSmqlASmShCsIudMTfIbMcInoGKuFVYvsiVJMExrUZCvAKMKvwW"), }, + { .name = IOV("YdDWvNYGYfEMxOn"), .value = IOV("khFijXWgKrIKWAHuAaLGBLjJIzLkbHovlAjTExahKWDkwemUFCcAIr"), }, + { .name = IOV("tFSgFckxWlAcX"), .value = IOV("KLmFWKWrHCQSpuTyLhNZHodIdVmzpJTjdoeCBcoLtmOvFW"), }, + { .name = IOV("ERBbFpXREK"), .value = IOV("uIcVbNWwMuPvzcQyCIlnuwkmnTTDZDUnqFCQDKECkQkMcSuaqHAT"), }, + { .name = IOV("WXTEMEyGjlXQUKqiA"), .value = IOV("zL"), }, + { .name = IOV("nIFRKQUTXnXxg"), .value = IOV("ULmomeMarpZJBrJ"), }, + { .name = IOV("qtfGA"), .value = IOV("vx"), }, + { .name = IOV("UtwflekfKdMEEJ"), .value = IOV("PQcYSYroujJEHNassmFXPEKUxOKebdVcgxKTBoNOLqeTZAdGMMtPteOYUXIZjKWOgj"), }, + { .name = IOV("gAxyorpGvqsvdbYWCoSK"), .value = IOV("iVQRDyuRyQxVsMoyCfgJYtLxncthWNjhvlWBMJKSHUQVrwlDLWMRUkrSisIcuPfGnGvogqMUnZp"), }, + { .name = IOV("nX"), .value = IOV("JsXATvboxOYzi"), }, + { .name = IOV("izivYTisabKZpPKFWKFW"), .value = IOV("WsqOzovDUFbxlMKwRMCNKzNIypSpBsDkbPPJYRerLBuUOVmxDPFDcDTtBHcmzK"), }, + { .name = IOV("PNSxAuGT"), .value = IOV("aeDiOErukoYD"), }, + { .name = IOV("nbEtXZFClImd"), .value = IOV("YiDVZXrzaKXvNNqmvgOFFauvLtAwnnqgyCHkxnhmzFKJhWdaMIqoPEUCsiPBtkFnenTHb"), }, + { .name = IOV("G"), .value = IOV("BuipkOttjgbcgjWnFCxoPfOlgpgfxGxxPNizNYiIDhvNudZjPOjRKJSNYz"), }, + { .name = IOV("McETRU"), .value = IOV("pLgIvJgtHINelNCKqeCdpggkZrnprCxGIzufF"), }, + { .name = IOV("pvKpHGJjr"), .value = IOV("OOucLW"), }, + { .name = IOV("MteNvTGnZqfk"), .value = IOV("QBIo"), }, + { .name = IOV("r"), .value = IOV("NoAXsocdZHSLKlNlBaFampCOqjWtgyaExVTpLIelMO"), }, + { .name = IOV("ZbrZzhwbqZs"), .value = IOV("SZiOiPNIUgufEcLjkdoycUURgDsgBSvEzLYNfSjsZpIrXoVUYnHmcNZ"), }, + { .name = IOV("HdwRvURNUWOdMOZJr"), .value = IOV("BeMbCNEfEsmISMjLXDNArtFG"), }, + { .name = IOV("GXP"), .value = IOV("GdEXmZhfTagtJBOuGXDfKHIfgwOCBklvtpthxAhKkpguGObyWuPsRCKELrVavslvQtFgm"), }, + { .name = IOV("XJjZezICKbswiBymbDO"), .value = IOV("uxkrBbinYjhzcTeYYTZjKHRYNNsCveRmzHWHiOZlZPOHyhIVYUKuMqebL"), }, + { .name = IOV("BYBFeDNMcgHLEErWBG"), .value = IOV("C"), }, + { .name = IOV("xwMSXhNkILh"), .value = IOV("crOVwmgFCJaEwuqBofCOEqguhJcjAFBXmoFWwLPULPavURzFWHoDLzdYnGjkwOoqjtAckaBPfY"), }, + { .name = IOV("vDriDLCNhpEEZfK"), .value = IOV("azPjVDlvcxxlvXtMKAcBjMKloXKUhlEhmrbkJsraqNWdWREyXBvLonwLEbqtskfaAoFnvCUuZ"), }, + { .name = IOV("gvbrVG"), .value = IOV("YkrIqvSzggVRHiKoxGHHVbqkqauCrXnuIIIJSlLhhmJna"), }, + { .name = IOV("nrgdEb"), .value = IOV("bPqBlEiRUNqKVZNqPbsXjcKtedbWaSyarpixWjImVzVexcQGSvjujXXGlLhnUSUNVpsbvr"), }, + { .name = IOV("pD"), .value = IOV("fePtfHblOUcvSoCDJFZsGRTxBCgZnALaIAqfDMqoykjubzokeXHWmLucLnFOKHoexBiODUnd"), }, + { .name = IOV("ZVnLA"), .value = IOV("uvmjhyYHgGJgrlOdzewAoiSobmwzAoMxgiVohkDqRcvLixeTRBaOaPVTgUdpUAgoLf"), }, + { .name = IOV("qj"), .value = IOV("gaHiJccpdCbYNrpyNWCUvTcXdFFabkEDxiAazsceCwYOOYIlMU"), }, + { .name = IOV("HhrXSwYnBMVVWYdPt"), .value = IOV("AVDOsdHDZHvvcXVynmwEXyrrSxkgRMzPffOPUjQpbybBJSPMVaPwNtnrxSmoJUdlFvQTdu"), }, + { .name = IOV("ygPgodcsHcln"), .value = IOV("NZPnCochTVkGwYnppaIA"), }, + { .name = IOV("CgOGIyMcNQJJPMG"), .value = IOV("wNEemAapWEnSFhTQLjdJc"), }, + { .name = IOV("jYTmnPgasxtyJvqf"), .value = IOV("wDqTCndkjOVxkXQThNKfR"), }, + { .name = IOV("bLMeAaeY"), .value = IOV("cWaeCTJGJEQjZBmUTDSGOVXsiEMwlpZCyiAvxxNhPfcSCPkrfjFOtUQJ"), }, + { .name = IOV("AaUtUpt"), .value = IOV("fbCcUQAbExYiupFMKhReTACHjsgMgBsyZQNhYsuqWQSCWACZCAETGSQHlm"), }, + { .name = IOV("HwjsJYUQlDatRaUKwJ"), .value = IOV("GVCiXLGgERCghRgXvbtYuHOiLCBqxetoRPmxLrnJOcXulvFTpwgBxlPjUKPfEUTjBPmTJdbWi"), }, + { .name = IOV("UkvjyyiKcKKYZVBcrVT"), .value = IOV("EWMfigDHcMKrsgTNseFnfBdGHnubPJhfXVFoBNraxRqLbkHi"), }, + { .name = IOV("kkDkeYhipnaraD"), .value = IOV("dami"), }, + { .name = IOV("nNghfJ"), .value = IOV("BUU"), }, + { .name = IOV("mfXmvwoADFq"), .value = IOV("TvFERrJdqYwbpQTrUpjJraCljuWgFvGIGdkUZqpsJQZ"), }, + { .name = IOV("jdNtLfTOFEJmjKEJ"), .value = IOV("hXBFoHQbPqtGLKyGHoypmVKwekIeuRgZljPxnXXmEKUr"), }, + { .name = IOV("sIgOUasOOBKPxku"), .value = IOV("mymKaVxAIWObnKKYdYkQRQCuMJeHqrbYYRWipp"), }, + { .name = IOV("rRAd"), .value = IOV("dTFtNrJniNxWzQaBQifGMiwmyKhJTAehgcrrjpJMUGreOCRbDDnr"), }, + { .name = IOV("gPSiOlUCOKnzvTlGCj"), .value = IOV("UZzMudsmJVOWDdlPwSycWvDJsiFjYpZgzJsFkNHrqGSVusEBtERKOYVrQBucPtUsF"), }, + { .name = IOV("pzlnTn"), .value = IOV("BPRoaoLciknDjRhrqGgBkgHmwbnqGRtjvBoNUjXYqgqcsIjThyWDoDXtFPHubHCsyWpzHiWeG"), }, + { .name = IOV("EvexVbO"), .value = IOV("HqhfVstFZQPGT"), }, + { .name = IOV("yulBxkVZzSqRSHgN"), .value = IOV("EHxnbPvVrYpZEKdOHfYkEBiaDWfzQZ"), }, + { .name = IOV("d"), .value = IOV("YzQhFZJtUsdGSFKHdHR"), }, + { .name = IOV("kXWNEpKtkx"), .value = IOV("KsltrNaJFqZnKJyuXBTshLWIczcFYJGJMoBGdVVinopwKyAPgIvWsJzeXPuAGvnpcE"), }, + { .name = IOV("epPbPNwMxFwOwdyBl"), .value = IOV("RCHogUXgtWCgcjRhkmtDPOukSWSRfPRBklkhMfzePHlGLTMUikbFIqEewMIGDPldNEcxqDji"), }, + { .name = IOV("lTQEhWXGbcU"), .value = IOV("dwjrSVBdkaKTcrfqEaPtgWaRqdSChkUmbTxoChAISQqCZENUPmaZxCjXGvBUAHjzZ"), }, + { .name = IOV("YKVVwbkOaADuDZDiIf"), .value = IOV("loKGiwtanGs"), }, + { .name = IOV("qaSUukTvylrtoxAjJ"), .value = IOV("srgFWCIdxNuJYRTNhEmgeAygHTUbnXwTnju"), }, + { .name = IOV("UHCNTkZ"), .value = IOV("IpdU"), }, + { .name = IOV("UW"), .value = IOV("oYhXWuiTUDCFhwVMHZuqxBtqoqNhERqxNZDjTsBbJR"), }, + { .name = IOV("qabrhwLTWYBSPSYyzocy"), .value = IOV("hPBeqUzvsOMjACgDgUZMYpUYxUAgDLFkttygoxqmHyrXmpaCBCWyhtOtdTtCultGKSkIdDvmuiOBjhsF"), }, + { .name = IOV("ELEoiQkrDQ"), .value = IOV("sAMYxLlXIK"), }, + { .name = IOV("JSjfShMpeA"), .value = IOV("ZEgboXjNAUtoldbGTzTunVkqrGCgVMVVaTMVkZ"), }, + { .name = IOV("XETFXbPrZNdwxOGwWrzH"), .value = IOV("EkpOVKyUouqqImxmVFkmzpxjOltnTBeiyYqUdVxPXq"), }, + { .name = IOV("uhM"), .value = IOV("gPcETtjYdqiqpabHFNJPGvYDyemzBKQeNyA"), }, + { .name = IOV("LTUouqNtiY"), .value = IOV("ZbXGOicCkMMohycRtHcbw"), }, + { .name = IOV("oQwfrETzmIKiNfRCJD"), .value = IOV("xHEc"), }, + { .name = IOV("BDNKdzOHz"), .value = IOV("uIUnBFcibqEIBHzIigTyKcirBgUzaqxyJyBUEPVdQJJcNKDlMOrPDjWcChA"), }, + { .name = IOV("NJBajjJG"), .value = IOV("ZrRMuqt"), }, + { .name = IOV("gPCw"), .value = IOV("CWopizZpsWHNaQtdXBhXywAdLZxpdZXMaTQINtTAyzSFNvMfvTougBQCvmXCmUrkafB"), }, + { .name = IOV("uxYYB"), .value = IOV("rtrFBqHRLTmVROUrMbtTAEiJibwDJvFIBVRJbTpQdwlhJxsaEjijkZZOHQrQQYNZbBTakOjWjs"), }, + { .name = IOV("rudXIsjRkdELcHyMMGv"), .value = IOV("XfJCxmiMUQNQNAQViaaVyGPnudRgNDZqUZtKkCpkOmoCmaoBRTPxEGCdbTmLnYRlaCziaDiFujA"), }, + { .name = IOV("juCyHVtAuHEDw"), .value = IOV("wNrEVsaERCFRNsqRLLDFpCpSnySHiwodvxqsBOiFjNOhaSGgeXQUccWLh"), }, + { .name = IOV("ltWWLmUXX"), .value = IOV("roclUkvJrAmYsRzcBgADysGqoPnpiQCXbXMWJLsvNSeUdmaFqpSaFAvLPOeMIRC"), }, + { .name = IOV("mFFUdo"), .value = IOV("zSjNGbRKtpUocPE"), }, + { .name = IOV("kjAjXxhnWSGtYtd"), .value = IOV("MjbXczOedaDpJgsvybNXQxrreShqisVzowsIeDTtCHzbGjVJNlhlXNzaOMifHDYv"), }, + { .name = IOV("FPXqM"), .value = IOV("OThKEAgdeDZIqJxHBD"), }, + { .name = IOV("rQSbfCyqP"), .value = IOV("taGUUIWbfBCPUJVvJCGoRIF"), }, + { .name = IOV("WUhTxLDnjpcUjQskDo"), .value = IOV("PntzBL"), }, + { .name = IOV("GydRaSnxBGHVAf"), .value = IOV("QxJCAxZpfxxJEFqvXEcLRSuOxepXSRPYqlIXxmAgaKTPITGtEhFvUVSqkJqdycHs"), }, + { .name = IOV("AjruJSscMzmQ"), .value = IOV("fSiRvVGAzZvJI"), }, + { .name = IOV("mdtUyWHOzLj"), .value = IOV("bXTKyNFQJhIkWLInLsfzUtzZSJReIEclWeoQnqKkhsFMlwfHrgqtHTOBrsSzyLcaSvYgjnV"), }, + { .name = IOV("xaFrWdJmuYuilnjmuyvT"), .value = IOV("LxbUMnVKfceXXF"), }, + { .name = IOV("rwkF"), .value = IOV("iIjDCfTnCstAsMqpHNDMSoBjebrUwfqNpTGZSHfMoDJggfBnb"), }, + { .name = IOV("IKvaBFNYFzhNmxzLdf"), .value = IOV("ifnNSjWWwFPPeNMNMHWfDkRlnYsNBGcVFZuENDq"), }, + { .name = IOV("vOwLQSIhPBfTTqUd"), .value = IOV("wZitFGhFonrbGEkCaVxtSPBTtqsIFLEGWQwprxfDqhOFUvDvRWQTdKsABBdtqGBUUKXseeMjj"), }, + { .name = IOV("YxazQBSzbTidyOKwojPE"), .value = IOV("qLFbEgSmKtUylXeMdLjAO"), }, + { .name = IOV("YVAxYSikTsmNiNjg"), .value = IOV("JSaFwsQGvouyzhqyJiZYfDRvGkcfHnaxqCXUW"), }, + { .name = IOV("uINoCK"), .value = IOV("HHKOoGlJOTCQwfenybeIZkSgfWkEtNqlyhWCBPQMdTPzQcYpziwhRvrFhIWPBPlecJdLKVHd"), }, + { .name = IOV("vFaYgDlBWVM"), .value = IOV("EhHgUzVnzepFXEovjmhyBfADLZQMFJVITnWnUiYHFOOOvkftsJTyFrjIOghmgG"), }, + { .name = IOV("Keu"), .value = IOV("tWlOCBlqysaVvrxFtDDVkHRQboElMNDDVlSVLzotRxZMMUNaLxFOKOQclZGsOAmdhMlSefQZ"), }, + { .name = IOV("aa"), .value = IOV("JUPjxsbFxawgylqobBwGfOaSufRuRpZcVTzPIMuJAFhLutDDzmfh"), }, + { .name = IOV("XOizLPpOQcZlhm"), .value = IOV("QYNbZOsob"), }, + { .name = IOV("t"), .value = IOV("IHXsLY"), }, + { .name = IOV("XQwVGukLszEQZEaqgJ"), .value = IOV("xMYlvfvwoEWQaxRVaGrBugVprjFMsvIixtDFTFVVVWZCqesLSubvXxM"), }, + { .name = IOV("HbuIBbLIMOWMz"), .value = IOV("RzaP"), }, + { .name = IOV("plEHzQWUdQAA"), .value = IOV("eGSQbeStVfemvOGVXFiNjeFVYTXRjYhZAjeIjglHYFfHfHdeWXqGbKkzMwoLnobSWDJ"), }, + { .name = IOV("qnBuhmK"), .value = IOV("jIRLTbtYu"), }, + { .name = IOV("borNJWpzqaWqcrMD"), .value = IOV("GFVX"), }, + { .name = IOV("dBnYrERjy"), .value = IOV("Ttg"), }, + { .name = IOV("MKNWzFZArOfPZzIh"), .value = IOV("RUyBasRWrOmqcHrRGXngZQNIOaRqzYHodUErsIkimqoHrlhBHLiknBDPBexOJwktk"), }, + { .name = IOV("RkHF"), .value = IOV("FXzYmqpUvmMqPTKNdgWaWnUgRKmbYBEInLrtYDBPvD"), }, + { .name = IOV("UNDSTOiMtXdImiunq"), .value = IOV("dRQxZBkhOhEHHOAQrlxYoCFmbmlTgrykpfVWTOiFWmohLEvVzkxbhOvouZLnbUvDtdoFmFKoElaXhY"), }, + { .name = IOV("EChhydyFcMOvfWxvxt"), .value = IOV("PAymcOCwRcrFQbmLDVcZXLmdrcFsyfWmMCY"), }, + { .name = IOV("HQ"), .value = IOV("BrFvqKAlkIAjYYDcbqFVoFcizxywbBCMyqnRcrjUNRgNnbEIdFkUuxvVTLAQx"), }, + { .name = IOV("CYnCLXHwdv"), .value = IOV("lB"), }, + { .name = IOV("vMVbbsnvymuenwYgHvi"), .value = IOV("GbqlfMamisdeEVTHKPHeGMtkfGggLjgiGfAArAq"), }, + { .name = IOV("EGOAz"), .value = IOV("LuASmuKJXzZlBYqAlmXgLRQKIlYXfre"), }, + { .name = IOV("PLKiR"), .value = IOV("FxNojdsysnlOrholIEsqdDVOPiArSeHw"), }, + { .name = IOV("bbloUEMloPza"), .value = IOV("YjncOtMMTBLLM"), }, + { .name = IOV("lgHvMhjXAMuocMg"), .value = IOV("tuslJlxmaClenHeVlVkbINObkeBmvYNYBiNiQ"), }, + { .name = IOV("CdWXPmIxuxh"), .value = IOV("AKlJZKQeKuiiyDAqMoDAnMEBqAEPhqOAriVjJnpdnHrupuugvyOIHMuQIiAhxUwmlSk"), }, + { .name = IOV("Z"), .value = IOV("NMsp"), }, + { .name = IOV("Is"), .value = IOV("odcYkumJrjuyjEmBvdnplVsUzAhoBlUCiNHnlUjvfgnxXMLvBECOJIQlNCqGfpDgyRPBGWejKuQajY"), }, + { .name = IOV("tx"), .value = IOV("eLlKMsuhWZDiaAaOxhcXASKylzrBruNhZBEREFtr"), }, + { .name = IOV("LwlPTCaUJNusYPggXTes"), .value = IOV("zIjjocFywRYUlYaLvwsltFnSwoVELiBgECnmbYqKDz"), }, + { .name = IOV("OwyAqEfafWFYqOjs"), .value = IOV("EGlgyYUJMfrTwFiAuPLqSHTHbxYKfKwlNvlrbkAfnLkRTgkwlB"), }, + { .name = IOV("ZhS"), .value = IOV("uHVfEsFSGTraBwbtKCKMCmLnjqUuuOglkDhYscYKbhPJnPGWIQYgULwoOXVEHPvTRDSKUMS"), }, + { .name = IOV("uSXfMqMwWNz"), .value = IOV("PLtBKYwNJFakpiKwQyVUU"), }, + { .name = IOV("zPKWxmTA"), .value = IOV("BsbjeFKNAtorcGsglkhdlvRMZzgTAAyPtqdmxh"), }, + { .name = IOV("uEjACddpGWZMYEQy"), .value = IOV("JZxPQIaGDyeLbZDtTyCxzHKdzqqHTDLGvdYkkMtRlClCOgD"), }, + { .name = IOV("iybnSmZvmugHoPhoNzuP"), .value = IOV("qYbvQIZDtuQkBEbBdJfvDGeKviLSPTynsbwLs"), }, + { .name = IOV("UdJmyFqptSab"), .value = IOV("hjNxsIoOTTpNPqWmSapRhg"), }, + { .name = IOV("dRKygeoSyhGpa"), .value = IOV("SeFGpAbimMdLVcFqZyVAZKZTbuhDDJsPbyDIkOvAbRR"), }, + { .name = IOV("cNqoy"), .value = IOV("tRfrTvabQpHeskyAuqnKZUHOJJMlLBlZAzZdxZpmnknPDsOVPDeXfbNfrneiFl"), }, + { .name = IOV("VKFebAzddIUa"), .value = IOV("sZVpV"), }, + { .name = IOV("LoyZHCxkRLZK"), .value = IOV("UXXkXHBZXqScIShhJmLgZWePzbROtNmMeSXrYzHhloGZmGRWRqlZSNYZGshbGTAnGiOzWBKwmD"), }, + { .name = IOV("MwacSTkk"), .value = IOV("qJEHmqklezWVGOvJRVxpIaSJXePpuTzNpLCZDzvmieJrUXwGJwZYqPNCLtWysQRDfqsxBdatfBlzi"), }, + { .name = IOV("bpOE"), .value = IOV("cvnwRJXwjneJtgCXISNW"), }, + { .name = IOV("FQRncp"), .value = IOV("mvWwbferLaAFMS"), }, + { .name = IOV("wYSjPcsvbw"), .value = IOV("WPhULYaFmDDyhGqyJdQCTUALJdNNcitXdWmlErUBOaJ"), }, + { .name = IOV("uDEvssdaIGVzcIbyslu"), .value = IOV("jPeqGIDZmPKZficlcqjXokhqRTnWCjhjIcdnJTHwkuksjXHcLlSmWND"), }, + { .name = IOV("KGldjgZCMBcD"), .value = IOV("BIgVYGHWEoAHLjXfQKLtFNjbdASILyrmUANvWZkQLrQHrdTiyACtwxzJBXAJLBRC"), }, + { .name = IOV("VkEdzCUlqzUW"), .value = IOV("fgStFgdeAwpPzcUhEjnALqNSVpyEQLBCPhLanKaLqutntzQXVjMPAOQzRDBOtZFuMoXMEjrdsM"), }, + { .name = IOV("KGXwlJwPKE"), .value = IOV("uqmyEQhYiron"), }, + { .name = IOV("PgbR"), .value = IOV("NQwuliMNAjZLCgHHAywIzbsfOrxCZkJOlandOhXOKXqclUq"), }, + { .name = IOV("KLfkfqPI"), .value = IOV("AYOhkyqHqLorIPzLgVNLXevoPDMjAgrUDMWDSHPqMMwSRnqoVvedwZnZgZJXcfXbACsGqpmTwvxk"), }, + { .name = IOV("fBvC"), .value = IOV("owSSSFJzz"), }, + { .name = IOV("pxRUKEIxzSJzKxY"), .value = IOV("goQzAkTDFcUQqiCvPnQnDaIEzJXjHVlqeVWgBjdXfizEHpViiXtgkHCvVPJyHCjIEELqVMDv"), }, + { .name = IOV("cZnm"), .value = IOV("yEudljmsBvuifYqnmwYtXyCSDBWPPjHPDSbszRQqSxbvhtCfdIjgJhnBdtqWiawiesn"), }, + { .name = IOV("jTveJMiSAS"), .value = IOV("LnMcwseTHxcNzeKpWSfmJMQtmPGRCDCSYUSNTduxMyDvriskZyTLrD"), }, + { .name = IOV("BcDQPsnoCdHMZkhiDr"), .value = IOV("HVyBxutFbuYVYUmjiqnuAcVPDOBYdoykLzyOXBcKeOkLhMZmGpTCIQ"), }, + { .name = IOV("yBsEM"), .value = IOV("KAUTAoxOMBXQLwlVbrWXtXZzuGOXnInORyaYzPPHPBTxleZqIphLtkbTWHxKaWOAP"), }, + { .name = IOV("QDVSmhEldpU"), .value = IOV("hUEMWebt"), }, + { .name = IOV("TKkQaZZQdWvCsuTcc"), .value = IOV("qnhQDoPbXfjZbueBTBktdPrBpKNtflfJcyAyCBRzkkNROKsHSPFhSfNLNvgIctLoVMjUkIHztqpAU"), }, + { .name = IOV("wWjYQtkDOWfPjV"), .value = IOV("FblpSSDYUMJEdoGoCkGuJAPhmYuOqcorGwjQBeieYLTcxavHfCcRsSGabhxYuWbFV"), }, + { .name = IOV("D"), .value = IOV("FfInZrzJXxuwhmkVNed"), }, + { .name = IOV("HUyac"), .value = IOV("yjkNabbELOuRIdsRBFbOrasPbvgpZCBqUHuLOeVPWJJWhndeAonhAquXnuYaYSjdbyMZJQjMrux"), }, + { .name = IOV("MWflnm"), .value = IOV("ZfUCcPnIqfdXQefBPNxxPUpZAJtFUntchDblLumcIbDkBWeQ"), }, + { .name = IOV("RJk"), .value = IOV("cVlGJBxvZSvjrMuSGFRD"), }, + { .name = IOV("rIVnZJBsNimXuhT"), .value = IOV("ZbztlGhbxqmUFKssoSCZgeoBoTMRUPFspaosBPxaOKtiqZSnUHDxraCFxgsGEy"), }, + { .name = IOV("NLOgWWWXJEhFD"), .value = IOV("sQyqEKUmKlYCEdPnWwSNjeSFrXazeFYMPYmQuWRIVAICJEQHLkBc"), }, + { .name = IOV("vfUPSAszXLPdJCS"), .value = IOV("TBBdoSVoTswfsZeeuvYLaspNWaHPzQIjtAZShUWKC"), }, + { .name = IOV("EXBtad"), .value = IOV("pWIkgGlSAPOPbxStroJvHJGdQLDnaXBmTbbCIoCGgujRVWzBWcXeykesHpQXkQFFHItUAhm"), }, + { .name = IOV("vVYtFrrlu"), .value = IOV("qzHtdwiWZOPFAXRCuJRwfLYtPFuIKYwwBgrYpFMxeVUYusemUie"), }, + { .name = IOV("DBhTV"), .value = IOV("OnUuAIzZYqOrfiYBqxVbOcYLe"), }, + { .name = IOV("fdIudHAtCtHLrmksUK"), .value = IOV("QMjsXQhlibtkeJEwPHudjmBjFfMCvXNqb"), }, + { .name = IOV("oIB"), .value = IOV("tppmocCBWkYleltQUzviEZAgAxJXLzJarbGNIXrbGea"), }, + { .name = IOV("PSUjvst"), .value = IOV("cKjd"), }, + { .name = IOV("XpeeemNJcuFqbI"), .value = IOV("ibOHcUj"), }, + { .name = IOV("ErinYUXkncaExDkM"), .value = IOV("GWYgGprXwaWgnP"), }, + { .name = IOV("pUYd"), .value = IOV("GdNCXOTFZCyzRejsiDpzRSrpULHdrHVhZEwBNRUxYilhikmXIQAtJKCv"), }, + { .name = IOV("kXVzAsvTFcVKFcClWsmA"), .value = IOV("RwyDRsNPwEreyezpdM"), }, + { .name = IOV("yifyh"), .value = IOV("DRsvJcfZaJiQgzXKuiWB"), }, + { .name = IOV("viLhM"), .value = IOV("vmFoDmnnGSplnhUckudebXfePclvEKytHDoCUTPJLRt"), }, + { .name = IOV("HQsVG"), .value = IOV("ufdINwBrgXFoqXHOQUpMEVYIYKHExEXYPkcNJZlTNLIBPZIYTTkozQWsFmdIqDPV"), }, + { .name = IOV("oIxpCajzlWvwb"), .value = IOV("AvrqQZAtnAdetfuAgDcjaAEADrvjCizqAZHJuUxyKDKSHuRuaZljEcQTDHgxMWgFjnEM"), }, + { .name = IOV("gTYEpEwQGFCNG"), .value = IOV("kUxuUyksefFRwGrZnsOrbEFVZyogaIlYdFeSoQkmAXyT"), }, + { .name = IOV("BetNwbjdENtnIbecN"), .value = IOV("ZvGzjCQflsesYmNLKsWCFQOccudEvmvqaykPbFfQBsbcvgRoY"), }, + { .name = IOV("bRPrkbomxNVhGwz"), .value = IOV("xOLy"), }, + { .name = IOV("oVExAUnHic"), .value = IOV("YosQiVCNyTpkJtqXYdcHOykMWVIsOmNLxZEFGmRBsnztTZRwZSQtVubbTAEsCoKRUdwyhQN"), }, + { .name = IOV("CIOtBUpz"), .value = IOV("WrvRgwO"), }, + { .name = IOV("obaPgeuKmAZJtNey"), .value = IOV("PHVcxVSiAdFDzNHLdtBEZsKBCt"), }, + { .name = IOV("Tlk"), .value = IOV("QGqDhiTCiWxMbc"), }, + { .name = IOV("LwpLtiFkYp"), .value = IOV("wKbSiBdIxZYMJrLFasSrSxiWUrPOyYICCwKctRkOzAsxrzfHAHoBQUiRxf"), }, + { .name = IOV("fRZQyRSlcQWxjtBExB"), .value = IOV("mzajTFLwpWAfYXHtRZGodMDJXLvOORvaQsxJwiMVXbHUABbavG"), }, + { .name = IOV("IhDNJTbUVMR"), .value = IOV("KmbnqlAOnKCtpbMygiaFiQxdvaJbTyhhaxNxKJFLtBVOdVhgnWGRKSwIQExETRyFKGSMw"), }, + { .name = IOV("YvjdkZQiCcbpBx"), .value = IOV("HGQncEKTgolRQfrfZvuKEFKZqasEPHcTmuriOd"), }, + { .name = IOV("UznYtWEiABE"), .value = IOV("EbgFHERBzTzJiMHNJNmkwHRHIsyqYHjynErLKhogiVqwWtIgfM"), }, + { .name = IOV("YjhQtFoaTmRouxkJ"), .value = IOV("YHWxUoMXdEwyCDMIaOPGngbPyaITKoShsPwMnUksiEoQOYWdhgS"), }, + { .name = IOV("MUmMtFuvyIOfmuq"), .value = IOV("mnxraQWXmqrethFKOoNJBFlnCIWsjJagFBsXFVSzcYHQSELhhbiQSHcAq"), }, + { .name = IOV("EbPyWdQySxzeSrzoWr"), .value = IOV("xEhfGnEGkDDbhhXsCUNPAXgiAkIEAiAMkCHeqmkVrQltBFwnluZAOpFtyXPoxfZHWpGkBVI"), }, + { .name = IOV("K"), .value = IOV("cgUShvWzSeomPegZVuYVtPdYMlZQxRYFjjSLULKz"), }, + { .name = IOV("OIjnhhTy"), .value = IOV("egAtjBbOYoxePgtbBFBNdzTunJqLdTwsizAwxTZQmjpUgSyFHbBYynPs"), }, + { .name = IOV("izvuKBEdBmalJp"), .value = IOV("aKYbapfFcEYyRHiyrzlteLijlctxafqoGzASG"), }, + { .name = IOV("bcAaEgYzJZHbTPBsPGhF"), .value = IOV("xL"), }, + { .name = IOV("eqjnGXtqqSvNneUZ"), .value = IOV("BuplDTdZCVTCwfqxYHhmFVBAMVKwRWszCNIlBaDShEmFGGMKQcBTBRfCor"), }, + { .name = IOV("VjQHT"), .value = IOV("wbsyAZjCWqK"), }, + { .name = IOV("nNpXIYUG"), .value = IOV("cvNmtQFAIOKHaBSziJansReJwAjdLYCa"), }, + { .name = IOV("Gq"), .value = IOV("RVLNeZWChAGtfimPMUyKilZtKAmEEkLaubCQQYEhbHZAhLHCsznFdAQhEqpZkPbhywrQyeCCfiSgP"), }, + { .name = IOV("IZdqfsJGEil"), .value = IOV("rQZbgiWJBlVgclWaonDpHLZiwXfXALFMgKraIKvPLZVmvAaoAfLkbHZMl"), }, + { .name = IOV("uBOTEy"), .value = IOV("dkuNTUIoXcODdkXirLENDa"), }, + { .name = IOV("JNDDMdRlcsljSbkGc"), .value = IOV("SfSMFDUTKaSkzfNhDQLFmbrnPpAhzzqOjrDjgYlyGkTiMVGTOyGJySbDnRghhMULS"), }, + { .name = IOV("ZvZV"), .value = IOV("aDrXUojMKFCsAoSaDRylAnnhXyFdIEtyuDetCMJLIAtwbjNRzJDzGBnyOCDeTkwhl"), }, + { .name = IOV("eqzskdeKikRH"), .value = IOV("mwWYYchHEoMHC"), }, + { .name = IOV("fcfgDBVSTmCmSjUl"), .value = IOV("QKdFZCZHFpkFP"), }, + { .name = IOV("JIWIUoqsikTVaorrkJ"), .value = IOV("XWIVCLVnEGjRdNuRVpkNwWqDDOKfQNyeGWoDZePbLU"), }, + { .name = IOV("yzwFU"), .value = IOV("zpPmDhrIcPfCEK"), }, + { .name = IOV("AcEeUViXAulHRyrZ"), .value = IOV("bzjVnroHiVOPObuQayMkxnTWoMgncfNEIoRMYiPGmNLmRStjOwNgaRLMgDeTFVcyKeESBNwvZhgaXSCz"), }, + { .name = IOV("vVoZCRztZ"), .value = IOV("ZzUWzcnBRajzZsPIpKAJBKEgQOaIytbOPAJUtmwcMmdTAmsuYWFGGNWFZAoHcGwVoThmhNjp"), }, + { .name = IOV("aXEJncLnwsPWalooKrW"), .value = IOV("sYNaLDxxCrwvoEOpjIxkLSLiJEsEpQxmmKbqXupLJkoccgqsCkoMbc"), }, + { .name = IOV("zyv"), .value = IOV("zEUubbtZefGnikCSe"), }, + { .name = IOV("TdVeNYWr"), .value = IOV("RtDJVvEaGEhZZWsBKEoLfIbOHriMdhnuczFZjdCcxZgrAgGhtctnJIcXHDBOumdKYBBthtgBeLAcHNY"), }, + { .name = IOV("qNLT"), .value = IOV("zltsGMNMRtvAiVNKIOxoNqCiJQDooedClDmeHkgAOgsJMMMmvxbnFeHW"), }, + { .name = IOV("ynWpksIkbYSPRKEL"), .value = IOV("zaZNCIoUwdKEXRTIVWBEeNRtPDrMvYJEBChWUGDvmyVQWjerXjoIaAkW"), }, + { .name = IOV("MUwnkFfOP"), .value = IOV("TonciiYxXRHMDqhbe"), }, + { .name = IOV("CKqVapGnY"), .value = IOV("uPklfbeqRoIFAfAQNNINaSlCCXeXnqCKzYUwoSzngCXjrYFUNQhTLHDMpXOTsxCEuAACB"), }, + { .name = IOV("m"), .value = IOV("pcqIZlzAtgYpXBoCmaEjhj"), }, + { .name = IOV("zjBeuoOvLpRXPluqLxx"), .value = IOV("D"), }, + { .name = IOV("QCFnqNVHiEWUSCe"), .value = IOV("foLvlKetpmxQZtAVyHGBFnEXIuFjOAOtVJUCwGsSiBFiCWYOYhKevdaZAmAMaUMKJIlffjsBNwC"), }, + { .name = IOV("wjJCQgKlspbysPyy"), .value = IOV("dfThbyrXbCliCmVtkkXApEMMYPvMCgckyehNCvucbPYXWpqGxWkdMYyWXttQLPYHTmPgfyQHroJCNmq"), }, + { .name = IOV("ivXfxctVCJyGrVMJD"), .value = IOV("aldZjTqyRdtYmOh"), }, + { .name = IOV("YIFcK"), .value = IOV("BPQeezuIsoyYpPGsywohVcPEVVMmCXYpkJnDntUIukaJeoxNfkinljMo"), }, + { .name = IOV("XzwincMXrNqdsql"), .value = IOV("IdYTEJrlFMavGEvLGrckYryAGdldmWWPdvsZCIlTTzY"), }, + { .name = IOV("uWWLVRWNePrfKHmmr"), .value = IOV("DhYmpZMHVVcfvBTSMAGffLGuwabjIuttRvMUlbjuvlXGFdcpLLU"), }, + { .name = IOV("TpnqztplLw"), .value = IOV("XFZWVJadMxjVHcd"), }, + { .name = IOV("vtLxU"), .value = IOV("SAKULlQpwDvBjXzFGsnGQpFpUzAiRjDcMmtLmNltWuufVKBJfrNwaCdEhwjTyMxCvpfPjYBZJmMZVvUR"), }, + { .name = IOV("bi"), .value = IOV("CjghrPNhQgzKdTYDoBGoQYmIYutTWTqVdmUrpTgrdxoZKwmAlxMCAMqkSaThwncoZHZyOtoK"), }, + { .name = IOV("AcREd"), .value = IOV("HWRuHVnvGWMlyPktkogiqPOlzSAWohlXrmzyGeiCsMjjXRaTBfYVzokiqhpFArISiyCTeqQvdl"), }, + { .name = IOV("jVaeM"), .value = IOV("FsowmUOnKTiqefmhx"), }, + { .name = IOV("L"), .value = IOV("BjIJRzuoLqlojBDjub"), }, + { .name = IOV("QsCvccIYyueOa"), .value = IOV("lQZqrZpVwLmhAmZsrGQotHMYgryC"), }, + { .name = IOV("ypoqjtGpAGQbAWNSue"), .value = IOV("UNJJQrzWHjnLmcxrYeYiXfZKvbkx"), }, + { .name = IOV("vfORaq"), .value = IOV("zBb"), }, + { .name = IOV("XFHLulPjwQoxt"), .value = IOV("mdOVPfDAgUVxKFxGFTERsiOpBMxvLbnGVzBIvbqooaMVSWxYWYfakokWRqBsVXxzG"), }, + { .name = IOV("QKYMQqwjEBoQGOy"), .value = IOV("XJTeuUDTpfpCJabdSdamCkB"), }, + { .name = IOV("ZrgEmfNLqUVFyK"), .value = IOV("gRmMApaLWYWjxSICfixrbhi"), }, + { .name = IOV("IhaKiuVNXc"), .value = IOV("jWhoJrovBpyLWPPwDLUOZOEQqyzLfWIFwjQWpiQMzinTlZbvjKFZlBIwhVqnGuuuTEGtakTWvGRVUX"), }, + { .name = IOV("bvPPZ"), .value = IOV("jKPsnHcLwZlcXdBIjlDhWsKWhzTSWKrgKnTLkQwKxsDJQUO"), }, + { .name = IOV("KuFtFJsk"), .value = IOV("rWgiqQRghBCdujxpcndyOabbsfmykIeYRwgGbQjhR"), }, + { .name = IOV("ajlyryEGVBxsu"), .value = IOV("KWyngGezwpcLrKmBqgSCZpwmdJV"), }, + { .name = IOV("EPELuX"), .value = IOV("poBLXeqiGisrJLMehGtmwWxNugTLTWZXJznlEhAUBkTRqzEHVxdvwFMTZHIxgdVtWyGIGBdkL"), }, + { .name = IOV("hurohEuznHoYIFWDQAd"), .value = IOV("KbVnuUfGcPPCJmMGhUIwrliYZoqxvtsxbBsAwUOzzCSMMvoIQHzvzWf"), }, + { .name = IOV("kvADgHepr"), .value = IOV("NtRnRSpMQqiAVrTHRCJGMPrOFzCeAzDFJrpeSqOKFxFsROfMseHiob"), }, + { .name = IOV("oOv"), .value = IOV("gzmadtqnQrsJiFjXOMlAPtNzsCfscmmmNNfSFcb"), }, + { .name = IOV("LEaSVkDMjU"), .value = IOV("gcIvAdiZvlDnpqTnYinAtOPVqgNdBgbqCYInhvDvbHWvySWlKc"), }, + { .name = IOV("CCFIODZGsAhulcAvvVP"), .value = IOV("pSgbHsGVRCKGatVaSOJyWEMSYCSAmBIVizgxeziyYWYvpMapviJFrRyUqEkHHYrgd"), }, + { .name = IOV("HysXerUEWwFvQsjoXXPs"), .value = IOV("gSMElrLAOAozxcDUzYWsdgWVDjUCEEKuDYYOMfZGSUPpElGaBOIxNewpI"), }, + { .name = IOV("N"), .value = IOV("XMKQxgWAXXahAeDLKCclpUIzJJCJWfMytnJkq"), }, + { .name = IOV("wUqADUssoBCdtHZfN"), .value = IOV("OwwMsTWqMZYbpgxiudeHhtSKxZEbbtJWIhXxEBprkdKBzOMGsKnoMRt"), }, + { .name = IOV("NKTOhlpfLQUmp"), .value = IOV("fQbnPcqcEyFlBJTXQ"), }, + { .name = IOV("oGMEdGto"), .value = IOV("QSvBRNJ"), }, + { .name = IOV("HBjp"), .value = IOV("rGAkftoFnAiHfhvyxRWXfUwEOwvdGFZYjlhJCmctzddekGOYTezIowkroMRQaRXuFykfeyTiwFPu"), }, + { .name = IOV("riqYjZacAzn"), .value = IOV("uZlbEujvSzbYJpUzkdzWmPdsoRdwUXInZLAdTL"), }, + { .name = IOV("vihtOzJ"), .value = IOV("KbHZOQoIyqOaFsjcXdgubbvKUqDOwdUTPcsXpgReQfEVgPl"), }, + { .name = IOV("PB"), .value = IOV("ZgrjMqy"), }, + { .name = IOV("JeuWfcWEQoGccXOj"), .value = IOV("NkEQlqEUwnebcvNxSKwazZBpeLcJgznUklFydumLiZelwpirTULoSLouoAEQfbaDPwveuaVR"), }, + { .name = IOV("ihHjUMmUJiXQp"), .value = IOV("plJLKXBmZxRpdGbEAIKhQS"), }, + { .name = IOV("OOUIdE"), .value = IOV("YRDsLtTuLVpwBEKcUZuqr"), }, + { .name = IOV("I"), .value = IOV("HLZCfOlkuPhNlHRKaNpANUUHwOrCIUaIRzSrEGcTRADaFQHyuDYTedLFGRveZJwuRBcciDrCB"), }, + { .name = IOV("fVRuEjdgpOpjpAzDJa"), .value = IOV("cPvgxZWmPpVVAImPgGTWZtoEZMhdRlxdrZM"), }, + { .name = IOV("cHQmosfKmEDAzgRSjuGT"), .value = IOV("iQndArxRiBNSXZeUoEkeFRtYcLBMqxwSfvWVJRlPYSSdRLEolqwWCfzhnKzZmaDZZPbZXYtUNc"), }, + { .name = IOV("J"), .value = IOV("SLkcJbHOjMMWwALVKdpGhBoDswxiVPcpfPEDJXCVpXVDCauPTuJdCSFnyifIDjHASLPYssX"), }, + { .name = IOV("JjiNykV"), .value = IOV("bCLuJSiegbprmuvjlTRnXazmJRANPwqnF"), }, + { .name = IOV("ARneznFZ"), .value = IOV("LAZUsJMfsVnMNOJbegPktCoAXKUaNHMvWHSfdJTgdMek"), }, + { .name = IOV("IR"), .value = IOV("RXSIfmQdSMhJRcL"), }, + { .name = IOV("x"), .value = IOV("KdyYAIIOJvJrDmibmZGhYrHnnKvyhwjZwHDTsVvTgCRWLtLCSOCYvYgWYgvCPAzZ"), }, + { .name = IOV("l"), .value = IOV("jreMPygQPpjWYQWwuXJmjUnHlpBqejtReremNidElH"), }, + { .name = IOV("ZaqmouZdamv"), .value = IOV("eEHzdHFdlJPwtFFcmGahnqcCsKBMODmIlOGwgIVloGHwhalkQPYohLGzsivOEmfMQufaDa"), }, + { .name = IOV("JgIFiyJWWz"), .value = IOV("wpMLpSzORwNDzVbIeTMQuxBrzkWqwiJvmhSIOyUJehEyxNXlQDlpYy"), }, + { .name = IOV("bkzqKRARwDAAyRsnQPwz"), .value = IOV("i"), }, + { .name = IOV("OCeIDTUN"), .value = IOV("tnfkDxIoxgqhR"), }, + { .name = IOV("hNwwRpXZcipVfa"), .value = IOV("WdHCOzVR"), }, + { .name = IOV("mQ"), .value = IOV("SafFUtdFtzyfauet"), }, + { .name = IOV("aIOnadBqq"), .value = IOV("kajseSgDmdMHjVttBEFNhfYaXTXnQoMIfTfsuCvPvCmLpZKTjVkxkEkeJHOfmtYF"), }, + { .name = IOV("plxbJVckHcawTUQrq"), .value = IOV("drxgJrLpaZlFzorSzNPXWjtvinrkYmtTKZCyiwxgxJYOMhTvPizRpXKlAWLsBGcKMKYIi"), }, + { .name = IOV("ajgWbLCD"), .value = IOV("IyVRuLyaJNAsFWLXPpgNlwvXwvQrUBXyGffDoBSWPmmY"), }, + { .name = IOV("vLD"), .value = IOV("YPHBvUNTcQKkByHOsFKolaJvKcyeplkiWFtxtMBOLNxfKGiTPuCdJNBCmMJdedWNuSlq"), }, + { .name = IOV("xhYxwP"), .value = IOV("EuPLJwpBAFtHtdccUcEXmkcImn"), }, + { .name = IOV("kz"), .value = IOV("ygmJCvgLqjXUhKuePKJByemeCzHWVmNzLENlWPYlPkfCkuYsjtWcYRwafiTOrvQ"), }, + { .name = IOV("uKIordM"), .value = IOV("uCJjCXNsepZNqASqDTOnDOqcRcku"), }, + { .name = IOV("yKgGRZhkA"), .value = IOV("VJDtGcKEYYMINhmPJFPXmHHKWgiROTheNHpnaSJoKgubUbPtQpENhbNkrSEISRXWYmAGgkhPbRxTdw"), }, + { .name = IOV("buYgEaoQCeAweh"), .value = IOV("nENVjWcoHrVteLpxpOgyEu"), }, + { .name = IOV("InzoWVOVYCcaippGtRhw"), .value = IOV("PjhcKPhPAOZRESVRoBPdAf"), }, + { .name = IOV("kgcqMMt"), .value = IOV("mnqhgWIpDfdzOCjPMtQvkqKwpLvhElZSpexnWKCDuQnNMZZUVkkvfVlzD"), }, + { .name = IOV("vhWDSlcPNtflmJBO"), .value = IOV("llCVRkBjXDpJPCTLZXEeTiYJjOFv"), }, + { .name = IOV("PDpTQE"), .value = IOV("JX"), }, + { .name = IOV("NMRYcwR"), .value = IOV("BXEjYqugrOEewswHUakdGWgkrUMtWkIztOhXQiztvXBlzQSiezDDNRkvnaYbCPxDmrFkgYHKjiFIl"), }, + { .name = IOV("TKvAZetzXue"), .value = IOV("yhvgqqPFbotaBEkYCVTtMLVpnmsxlzxLh"), }, + { .name = IOV("EfrlQUyvEpLStoNQG"), .value = IOV("oQkCKrlLhUIXXKnZViKBtekDpEr"), }, + { .name = IOV("xGpHblIA"), .value = IOV("ZXLRYPsZxmdGXgcUtUeMuyTuAuYRbiZMXKByLvdAkPRuiHIuNixgMXHV"), }, + { .name = IOV("SErZ"), .value = IOV("GzfuNtKORUUnqCdyuZNapEUyPLARnCXxbhChidbQWzGGfEuyxymMPiDoqSoImGKTIEfrybuPwv"), }, + { .name = IOV("bETXoVCyiStBXqp"), .value = IOV("WJgpGmfanVXQiYtUbX"), }, + { .name = IOV("plsNLswUjmXCf"), .value = IOV("JfqypkgjVKrXchmQHMgTTyQDWykGZldJkzAGfeYtyStsQpiMENOFatYYb"), }, + { .name = IOV("TNBjUbroJabHkPTo"), .value = IOV("cvGfYbMnXexWBMiuA"), }, + { .name = IOV("OUlYzagByoAQnCPGuM"), .value = IOV("XpwEDfsAyAodwvUozntws"), }, + { .name = IOV("TjQHhX"), .value = IOV("NQqkBVpHRfnCrvsKfogvKLeYUfgz"), }, + { .name = IOV("kQTiAGQoPNcNSfMbgNzr"), .value = IOV("DyHnGpxqFDeVVzmMbskEGFlZoexhIwIVIQrtFcSnNYLGomU"), }, + { .name = IOV("bLyaaSjFsEDJqTJ"), .value = IOV("VYmSoQdtEdkrICwrRljGPcFPWlyerqLka"), }, + { .name = IOV("bziUI"), .value = IOV("mRWCInootOYRslAblWeIshWCoXvZZQWPUbFPrIrCrzvvDUjtRCIUmpKStLfnWEYgBZJCUxaHQw"), }, + { .name = IOV("K"), .value = IOV("KapgMOoQlUfGgY"), }, + { .name = IOV("oxlWIU"), .value = IOV("dQbTwCMiQClGPEiIbJIPdEEDLJpDFGmXckuvZPocSlFencGhxc"), }, + { .name = IOV("wwThplzn"), .value = IOV("OcgniIxBnIuNUwFAbIPHUydsYmvIxGuXAJxRrEUmTwIEG"), }, + { .name = IOV("spEMLvW"), .value = IOV("wkgwBVTlRgztQkbPzYCiYMVGRcRKeVU"), }, + { .name = IOV("wuYuwsEWHiGSKnxegIE"), .value = IOV("oeMMHCWaTcVUrSnERFTSAbYdOyzIQlDcNnuRRXhVhJbvSIVeXHWvSmJVOZ"), }, + { .name = IOV("epYPSYlW"), .value = IOV("jhpsklTdaPxq"), }, + { .name = IOV("aSOGpFCqvESUc"), .value = IOV("tzFMgTHuMxcGUwrZxIttlorVyySldHtEthWyHokFNkwnAajjXWD"), }, + { .name = IOV("mQjygSeqNKbgtkTjWOpU"), .value = IOV("QpoUgOFFlCMZWRNcnsQQqGwWZsgVsrdb"), }, + { .name = IOV("hMGgEAbxTnyGsblVYU"), .value = IOV("ApkiBEgRwRQzPvgGzWWcWXDwYwMHTOzIGrYXOceZEgWwmfcBqTgIdsQnVrpGQTCOppjFrSBKjf"), }, + { .name = IOV("lQotzkrU"), .value = IOV("ktDVWtKrkjXoEAKOhoTUgIVRTXHTloUYLhUZYVacT"), }, + { .name = IOV("fjAopsnnqBVqyYyHmhD"), .value = IOV("INxbIWWxUncnBKCJaMRZkWtqJYbJCsYBSrlEkIwDrhsCtr"), }, + { .name = IOV("zI"), .value = IOV("pcpnLZIAjbRUBVKOmpoAnqqVsuRAjlkEVqQHyTQeMExH"), }, + { .name = IOV("EMyErtZLlGzhKdJDBK"), .value = IOV("vGwMOlatv"), }, + { .name = IOV("UXHZeCCRicT"), .value = IOV("eFBbtsMFTiemFQiPQGpnvkhbbqKQYzjazrp"), }, + { .name = IOV("ik"), .value = IOV("syqTTupkCSerUxXxBMnvszPphulemPIGjuqA"), }, + { .name = IOV("ZRRxAUVGwDrNvZ"), .value = IOV("uOuBOICpOZdJBmRLPuOpkYwzohJBOgtPakjckvsFCcBfbPeELLWQPxoJdgTpPmlxg"), }, + { .name = IOV("QJhGDuBvfiIS"), .value = IOV("QsPKFhhhrgTxaxRUKdZubxItMa"), }, + { .name = IOV("uhOdjYAJWKjNRxXMYSyw"), .value = IOV("pE"), }, + { .name = IOV("OBJVapOOzzKjfFc"), .value = IOV("DxLjTJJyAtYMmxswGliyfKDjGTPdhczkzsXWSfgBNYUYotTIiX"), }, + { .name = IOV("UOgTXncLm"), .value = IOV("obTOcEgPgVHAibVmsfvtZiPCRFUVJpWuxIgrEcfJySoeiLLIVnZcQkvAhYFfVSrCxmPBDbImYs"), }, + { .name = IOV("JKVbCvkClVqPDR"), .value = IOV("yDw"), }, + { .name = IOV("mfyvzQsUPbSxJDkL"), .value = IOV("Mzpy"), }, + { .name = IOV("YJVwTMwVZqA"), .value = IOV("mLOfElX"), }, + { .name = IOV("BCBZLpkfUHmUIC"), .value = IOV("ywpRDmzBTtXStygeSqClS"), }, + { .name = IOV("yGnjxfudLmq"), .value = IOV("AOcTuKCbalsPexVducAcjpesIMtQdDbE"), }, + { .name = IOV("IbdnWEZZKXRkuHRf"), .value = IOV("UfEZqtjAikhDPogScWUrlEd"), }, + { .name = IOV("Vgp"), .value = IOV("zgdoWqmTyAuvQCUILspDdcqvtRouRQRPVTuBpz"), }, + { .name = IOV("aQCsxPCpzwOTNtzyZOT"), .value = IOV("DVSHIwHYyPpvarBUxNLavzfcgyHdsMOCqxacdmqtLTaapAqzYhNYetAPaAESO"), }, + { .name = IOV("pvMkkykqZRiGLeZk"), .value = IOV("HRhBHZnzvMkmrEASdzstfMaUoOtiaGcBDYYBrIEexppijAoCj"), }, + { .name = IOV("RsxVM"), .value = IOV("bXjmwN"), }, + { .name = IOV("RnDuUGxIqlN"), .value = IOV("KMjMKuiHCGdFJicoVMmgGeqIpUbBhXEZqlUXdOF"), }, + { .name = IOV("yoKSQhEPSUlhxUrbC"), .value = IOV("yLdOAwNiocQrAcZRpiDVNKrnkVXfgHgGliOGNFBzUPvovJVcgzVTlpyvRKEOsLKXDbnQZuU"), }, + { .name = IOV("MwkgFnsgTgaSSv"), .value = IOV("zBFZqSXqUGLmvdXySffHNJyudnYwSBtSdVKYcbDGukSZyaOmKUpPrWxDlKJVrfvinOjH"), }, + { .name = IOV("wZlnDkAUv"), .value = IOV("gtWuWlxyoNhKFWgeiQjKBrDfQBqLJfHnYsHWvNjaGqEWSuyuUBZwIK"), }, + { .name = IOV("aFz"), .value = IOV("rkvEeikfQgZeraz"), }, + { .name = IOV("PMpvOIurlOGX"), .value = IOV("ajxYZfSKLljERnSsJQhFaINeVQMhuMdldKYqzdLgKbnIzrDWLZjTv"), }, + { .name = IOV("GRFrvC"), .value = IOV("YXAYpFNNEIhxjkeEDkPQdk"), }, + { .name = IOV("muzmWEDOEIwd"), .value = IOV("ELfbqxnbzVhNsrMEOfuXklmpblTIKDx"), }, + { .name = IOV("JqcEOavEgCkSEOAJPf"), .value = IOV("oMEJQaInAXVLMEDxGIkMWbL"), }, + { .name = IOV("almDQcCquA"), .value = IOV("eeqCoMOrBkuTzIqsGyKvdRCDawPoTHxJHJHBT"), }, + { .name = IOV("mAztQxGkGrXTR"), .value = IOV("dvEDKqCvoxIgSGKboBoLKEHExFMdRDseFKijQBHNROLPtNxsEgmvsBxjWCOMNiuFmEl"), }, + { .name = IOV("uaSWbPzGyqRGoZRv"), .value = IOV("jFrPiAudCPDl"), }, + { .name = IOV("EPnv"), .value = IOV("CKsHGaBKlxZtIWoJSafBtjWECUbSYJGpUiJStPrEhgPcEfbUgMRXgxi"), }, + { .name = IOV("vVZSHopjuASEBktRiwP"), .value = IOV("bjVjbeCDPekSACnnXURnZklJiplRThQQtdWzYEVtousNpQhIeoeQqZrOjtZr"), }, + { .name = IOV("rbgNpAw"), .value = IOV("WcTJxPef"), }, + { .name = IOV("zvIOxJjkEtTZeI"), .value = IOV("dCkJAtEEGYObkOSlhAQIolrnKFYEFPPuwZtUNdZsbBEpWgVwpLuthrqgZRCs"), }, + { .name = IOV("ljoGXlSLCDcPDbfBzIr"), .value = IOV("TBXvzXxmJQBcWhNLgZREbuKqLxTGbnZGnEVYRFNeWpljdpAjgthpQlCkBKZxnKaaBlYGzBpvLrwZpMHE"), }, + { .name = IOV("th"), .value = IOV("MLzZoyp"), }, + { .name = IOV("fRoxyfQWfpPsXld"), .value = IOV("MgdFYoDGJtOidZzhtKhcDvGZBatVguIOHqQKiEArtxvJyUdQzBeyeIlhqDXJzNeXJgvtAiplyAWxHLY"), }, + { .name = IOV("AeFHKWoFa"), .value = IOV("JtmgnZnpBcMUIJUTTQMyubJcEDsFkfdVUqfdTUwzIluDXyMQg"), }, + { .name = IOV("wd"), .value = IOV("PMXLmMbIwKFlNpyOGKIfsPWVpsIYpVRMMpcQVUupWaIZkxKSzswVSFSfnZzgPrb"), }, + { .name = IOV("KNVr"), .value = IOV("ykgBsuWVFkrKVQsSvw"), }, + { .name = IOV("FSfqq"), .value = IOV("oru"), }, + { .name = IOV("fRfUiotELXBtRdS"), .value = IOV("UanWdVOrhZEYhiFNXROwBnPBTKraYaXFTGokCsWcUxEqGoDzOdaJh"), }, + { .name = IOV("PLzNICFdQnBwxfOFBJR"), .value = IOV("vNICCfEyR"), }, + { .name = IOV("ZhBWNsDLxUQfPdXCw"), .value = IOV("XQeYHfBBrVqpTtWGGvDZgvsHKtEchxjwbjjOraEJnGEzuBZNGyKosBvMjLIOQKZqQihDDLTzT"), }, + { .name = IOV("pEgKdytvcLzYiSPUGcB"), .value = IOV("AkDrnqIAgtPSYorcNvuJGguzPBYMCZfXXVpdixPnCCmoYIVjGItxjwLmcplML"), }, + { .name = IOV("ViAOezOzQcGCs"), .value = IOV("imjdjlRHP"), }, + { .name = IOV("SH"), .value = IOV("qTVSv"), }, + { .name = IOV("GSCcIQpv"), .value = IOV("ogBXjB"), }, + { .name = IOV("XIJcnlgeEGOMe"), .value = IOV("CeerGuKklzWhNTiPvehlnUXygyDgiRvlBpfaqUrcOWkZLjNsndgKDEqMkBxRSpRyBCHLJ"), }, + { .name = IOV("zrVinFjGAmW"), .value = IOV("zhWLIWcJaxyAxFSaLhlInhxicgwEoEtONyWjESEdMITxIkFQtjaoGwQSqlj"), }, + { .name = IOV("hG"), .value = IOV("QoUSBRBmllMgOqizhwlHxPixSWy"), }, + { .name = IOV("ZeNMHBjeeIbE"), .value = IOV("LaWMBhHxHLDEvHQNajsQzioFWVVMraTTskTxLCXEepuBzPyvaaIlJZeCllZfSaNhdKheXtiPXD"), }, + { .name = IOV("IZQhqpadvqnbUgE"), .value = IOV("rWgiSpBVwwuwPDaWyD"), }, + { .name = IOV("ppmyOfSAasDBp"), .value = IOV("XJjHkxmutwPQRNseRFFLKy"), }, + { .name = IOV("mBPJyh"), .value = IOV("AzArdbNCLRbYcsQFCkpHMzJAFHTdEVtjukOVxRsfBwdFEnWHYUJiDBfzdLddrBdNtxN"), }, + { .name = IOV("D"), .value = IOV("rbmIcjBAbpJeEptznRdBCGAeqnrnWZCzUngduBUZsWtPZtmCqqXsfaUDzMUFRHYLbZjzrSerhQGwUAW"), }, + { .name = IOV("QjVinzHzd"), .value = IOV("HKYowUSUzEqbrEoQrGGLbuIJffpOELMMlYCzeXVYGzChBTDkvfoepwnORrOI"), }, + { .name = IOV("pyAvKtEyRz"), .value = IOV("fwYmYiRvHdNyrtTXKedkxcSDCICsTieJYOgmFJfRUBUqHqutSau"), }, + { .name = IOV("K"), .value = IOV("jTMoEBHQaoyaM"), }, + { .name = IOV("FhxtoqXNNjjupoBzfeLP"), .value = IOV("VZGpvUYUVkvMxpLlPwXVtthIGgRXnbpNFsuxQxMtWxkhLMhsKQcKmLxgkHZcJpdTdmJTDpWTHfiNg"), }, + { .name = IOV("vkhjsHIEnCDUIIHJK"), .value = IOV("WeVkiMtrsQ"), }, + { .name = IOV("eex"), .value = IOV("cgoWcKjwkseqpH"), }, + { .name = IOV("TdbrTBJmKWSOia"), .value = IOV("kopSTiDkJorbAHeSDGbXjCXbOPsIgZJJByvWwfpqKmEtJOdjFVKYIOeAKXrrcYtsQAG"), }, + { .name = IOV("DBPNvLSMJWgd"), .value = IOV("heRaJtaPSVumMSgrbrOuGQKWCujAlaiSnUVHEAC"), }, + { .name = IOV("duTVyZiAxnuw"), .value = IOV("dPAxdmoAZeAThLwt"), }, + { .name = IOV("OrlrQsdccOani"), .value = IOV("EszATNyfELQZKNkxYDwtzTzCuZvnS"), }, + { .name = IOV("BvBqmfMOLHIfPpCsQ"), .value = IOV("mLuWE"), }, + { .name = IOV("MQcCgmNfRZPeH"), .value = IOV("hSxRAALZUEFGAtJXcXTOucWxRInucJCNBbXWQBKoDkoiIOjGEwgQnZnMneuJEoJYFkLMmcSnDqgaPuY"), }, + { .name = IOV("JVNLQjpDQhxuQ"), .value = IOV("ysOCFWEwxJgpTDpaFpnSRQiepXLThMnvyORiCERA"), }, + { .name = IOV("csL"), .value = IOV("uHkFGHKGfbaRUjDkMamIgBVPZezYxblaWGxuXVnEEfsHZvXgBxQlogRsd"), }, + { .name = IOV("XlUGEkoHvsM"), .value = IOV("kBnZSHowmzNYRBrdJYgeJnolOJPcqMGfHFECBQUoQWcZWdrZautuIlocUrKZkQhTIAfSlFjBcxB"), }, + { .name = IOV("FtwxkI"), .value = IOV("lzhXeHhG"), }, + { .name = IOV("RkDsECWuJrOKoYabtpfA"), .value = IOV("MYpmATUxQiXAemCDoNeWxchoLcDgnGVvQjFPmoy"), }, + { .name = IOV("lq"), .value = IOV("eYDBfFyalDOGRCmoxjhrMxFbyuNWMQAmmbYEHQJuvviLKtSTkBNLVoJChQxHPOpiFHRnkkSyFFPHTFKI"), }, + { .name = IOV("TazgFL"), .value = IOV("LkNrIqdjmLhsieXWFknahsTPpolbwkXIfkFLtKDKccYOaSeQ"), }, + { .name = IOV("HaRTiUUF"), .value = IOV("gFYBryxUxeLNJUOGRcClZPdjgX"), }, + { .name = IOV("FXfFdeKPi"), .value = IOV("dapCrAIPxv"), }, + { .name = IOV("ULFluUEiFUHHEod"), .value = IOV("cDdGerfnhgMNXhlWnwlIlJsWIGDIwAgyVLjqUYTsRvPwrKtIg"), }, + { .name = IOV("XWOBFRPUFPw"), .value = IOV("eZBoaNZveoYVDURvTdbINMrWFU"), }, + { .name = IOV("Z"), .value = IOV("GnfdCidOblAGdepHkLirlWgPaItxrkoHKMQnawDagtphVue"), }, + { .name = IOV("xibDAA"), .value = IOV("lyyMzxpxsLtbBvExFocHwQxkDqGYFSeEIVlpEevnQgZzPmrixzjMTSMzucewqjGJOCVGoeVJsyF"), }, + { .name = IOV("VbJqLTECkx"), .value = IOV("KBpdPQJehLAptWudVWJLCPjtAfhVzERmxCGDJtiMzDHUgoSTFVgGpHOyzxfHnfWcJObRtNxXIYjH"), }, + { .name = IOV("dteFspNLavaL"), .value = IOV("iyErZfjmXQREOSONVGPriXMAQFQsCljiWRfvLSxGqfgmLBkTefHvFwhgdWeYitjNQDHoBaHaACEm"), }, + { .name = IOV("baRMxT"), .value = IOV("NbtRce"), }, + { .name = IOV("KzHcHXgqMLcRDyjsufOT"), .value = IOV("yjPtNWjfONqDZUqCoiFhGKuHkzYURoNZhOEWVZpMpgNHaeDuXihWbBTXUcyXqite"), }, + { .name = IOV("awxVzGOcj"), .value = IOV("qTlqxJpEhJXVTeClSYfknjghzVDWrcCLFmyRFvgsEtnGbnYntoAirHRlj"), }, + { .name = IOV("kunJFavsQCldeZGL"), .value = IOV("ffiwOkdgjvwYzkQIFrULXVXasQnkhYqiqHZZNskFhrPkYaBlkseUhYXuupLXqmJBXEDxHLk"), }, + { .name = IOV("vkPFmw"), .value = IOV("OdRbpjXMxRUBSdDwyKbEy"), }, + { .name = IOV("FdNj"), .value = IOV("KwrhDMqvWrNQuknLmpbPjiFITEYqm"), }, + { .name = IOV("kPQFtBMrcVvi"), .value = IOV("gCNkBt"), }, + { .name = IOV("xWcSBI"), .value = IOV("CLWoBeghSTMVCN"), }, + { .name = IOV("lUDfoeEhf"), .value = IOV("kOUGDvPLOGiefFJVusqLKBibodpZSMIoAeuzdujCpx"), }, + { .name = IOV("WCIwfF"), .value = IOV("JhNzjTGQrUabodvEmkivYohRHdzrbJLHkufDQByaRLBxPyYETvVGaKbjfTBi"), }, + { .name = IOV("bMDODzNyntEzdpwP"), .value = IOV("fiiXrUhbyOPwhxDPqgOyHQLFqzcujARHnieZJlHcjtdbhAtHaArdCQBabXwmKRawrGUrGbBebnvymY"), }, + { .name = IOV("yrZvqjkuwk"), .value = IOV("mkkQSvlMfLWGhEyQhhlMtGVMOQJuFEdnCdHFeqEajjqyvmOJ"), }, + { .name = IOV("PH"), .value = IOV("UQHTKwkXcPfjMaWMyirbZAuzzPwzRcDBEeqsMiiayRPoXIWDDeevNOdpdBzWaBDhh"), }, + { .name = IOV("UtHHkHiklTKmPMgDBa"), .value = IOV("VcBalgGsMWtVwpcBStLPNpOzVrBHXbkWrDYOaarEJk"), }, + { .name = IOV("ckgcGSxwe"), .value = IOV("lzaEGCjQsjMLBPezdRfZMdKLhqAXfJzGeeJAShEjtKzICKrSSiGYKlrdKUF"), }, + { .name = IOV("CFE"), .value = IOV("NAalsTmKUSOLKfptxGviisAuyJVFUkYnlhHTGoEUMUZcZeFHZfJKWeaeGClXXO"), }, + { .name = IOV("d"), .value = IOV("mQvUoLdLwxLDLztDgwoqbQmGldkKVSCuOupW"), }, + { .name = IOV("cADcwITsUXk"), .value = IOV("BWHuPEj"), }, + { .name = IOV("td"), .value = IOV("nwQYAvzKD"), }, + { .name = IOV("wVSUquwnAapsQgtF"), .value = IOV("npEIXtDiFoslD"), }, + { .name = IOV("QoDeQRbxVfSgaCKyTva"), .value = IOV("zyoJOgaKTNeVU"), }, + { .name = IOV("TjpPxvefQLWEu"), .value = IOV("zRhFehFPGCOeiaxmpaytkYmhkOpoBjLrCDGwTQjbfiPGRpAQoiWlnFasurfoCXP"), }, + { .name = IOV("c"), .value = IOV("rrcMEdLiSUDNwXsTtatpuWXNDZuCptDyhCxHNUoxHIdaYLxtXbqlbpfvH"), }, + { .name = IOV("OlG"), .value = IOV("MavMSOCazaaVRwraKhhUTbZfZMpJsrpFKIphUUMMqUyntOMCcVMMdDhnIjVhNEJE"), }, + { .name = IOV("mUlYJVhqixhnu"), .value = IOV("FPqpvVEKxJgytdoQYvPGCrNgFLDUxPcsLZX"), }, + { .name = IOV("ZChildfgFQTrYsHHLh"), .value = IOV("YoKGLCvrLhQguoFsihOSqKdpvkBNqKCvaZmYFVUEMnMOfLRwcqegHHX"), }, + { .name = IOV("pWV"), .value = IOV("HVLfGUfVFlpEkHIsTvdAiqfLbAozLFDw"), }, + { .name = IOV("z"), .value = IOV("aEXNmfYxzNmUKIixRRjRzDERtWLPpLiwHJYYjCDxPDihUqcU"), }, + { .name = IOV("VuVW"), .value = IOV("MysvjkQLSZTAFAUuhu"), }, + { .name = IOV("yhkkWTcJ"), .value = IOV("kUgmjYZTZqVxhqYcSnixsbfMLBWMaSUkOxRJyggoeducHNXvFyGpKPYdvlrRhBAlimGsl"), }, + { .name = IOV("cfaV"), .value = IOV("sVGnBEuoqTzBvngCsoKnxXxgZpzFIfQIIMEHLlewKHx"), }, + { .name = IOV("sovrERJnAwBaAXyKvV"), .value = IOV("RZgqCueEZgRBWR"), }, + { .name = IOV("y"), .value = IOV("vNwRWmHcoVZafEqYeYTIJpkcpPrxk"), }, + { .name = IOV("QNRZcCiTJmFJqSBw"), .value = IOV("JnwiRZqrhjPvgYVWdvwLrLgjWSaIjjCnIDQqsKOlyqmGog"), }, + { .name = IOV("mhs"), .value = IOV("atWtlTLPGVO"), }, + { .name = IOV("YeqcvIQpSCEzjOG"), .value = IOV("sJzGzbOLlekmdfMcVuunVeTpCSSbOyOJbcFXYsN"), }, + { .name = IOV("V"), .value = IOV("GnwZJkUrlfGyWCrvQfWnPs"), }, + { .name = IOV("eCVtYlsNALu"), .value = IOV("BnNfIpYjfN"), }, + { .name = IOV("Jb"), .value = IOV("YUDhLFUGyJmvXPGUFQcWchhr"), }, + { .name = IOV("WY"), .value = IOV("NNBhwKobpTt"), }, + { .name = IOV("DakukCDzJVvQFMlEH"), .value = IOV("rAajeQUvwLYfJ"), }, + { .name = IOV("tanQWwGEGtfe"), .value = IOV("fBslEGjuaVyZUhXgwPLkQPbymRMxBIhbBHozDOflNwPaYHqmzJxKLFJXFY"), }, + { .name = IOV("RrIfsDiKaCmEtSdj"), .value = IOV("mjV"), }, + { .name = IOV("jFzDupiZLrvNEFfl"), .value = IOV("FXzXTWzQprFAUXvDXbYmzACnamcjcHw"), }, + { .name = IOV("ndhClpbwngP"), .value = IOV("IHFLxLCdPjbtYlyHBLslCHgLpBpcxXTOPdBpWauOxDjWGMEPgLDSGcvmfXCx"), }, + { .name = IOV("JcNkynrIqhp"), .value = IOV("wfrtBChtLBDZqXoUOVctXhOSbovuKfoEH"), }, + { .name = IOV("MEdgMxnpWcV"), .value = IOV("nAQxVBlLfJVASxCrHGRFIoQqAkhUodAhgX"), }, + { .name = IOV("y"), .value = IOV("LpnSPPHkFHESHzgQGhtibPJyGGzdfGXlUlLmbRQQBvXbwZfjxqkfOQInYAyYEOlt"), }, + { .name = IOV("nJaTQK"), .value = IOV("IOkeBnUnXXgVBVWkxJYjbMvYoAAIvnAIYWYuTmSfcDQykyChvWpTFwjfhomMr"), }, + { .name = IOV("WjKSEgdsXaM"), .value = IOV("cchiQfEVjGXFLHKOmBuDbfFluCDYrGZkAIU"), }, + { .name = IOV("LDre"), .value = IOV("NstBZUFCWcqUDnhXLsUspYbNVhtLAKZDUnsDpeDPjDpJkNeC"), }, + { .name = IOV("beQyYjSOsu"), .value = IOV("wemWgcjuLvjjvjGeKyPBMtMiCMLOIwtXFcsSzqLUqWLmKYBxVvvqXHEONOj"), }, + { .name = IOV("LXtfAtwdj"), .value = IOV("rOKInwQ"), }, + { .name = IOV("sauuOakTzyOcINlLlTaT"), .value = IOV("euinLBvmDEMwbJUPREoZFUufUulLuYLfVynSxMNnQFDoGcmWIDzBdrtSyJRQnJPf"), }, + { .name = IOV("rPixBjQTVdiEBzgRleO"), .value = IOV("HlWQ"), }, + { .name = IOV("WGcX"), .value = IOV("kKBQyhXzxlKmeNTLkSYBOrjZVEQKe"), }, + { .name = IOV("tzaoUcHVIYrtHAgtJEsC"), .value = IOV("PHvqjMVGbqKDNMOuHTTZMR"), }, + { .name = IOV("vwuSkFZ"), .value = IOV("nGEsrXKEMMBDQLeWSVCxNmVnfDkCb"), }, + { .name = IOV("YD"), .value = IOV("FkCicUwMrfbOtvLpknIBBkhrpQ"), }, + { .name = IOV("fmcpzmahwrADVzb"), .value = IOV("VmrYZZSzbQVtguyzynTuHaWERxCDorAvZqYKGuirQaDkoFhMgFcdojUCWGLqM"), }, + { .name = IOV("Wj"), .value = IOV("BlEieZsnoBcDTwKzxkNJmYNXjzZeWqUSmVZACyLJUPurFnFSwBdFdBip"), }, + { .name = IOV("FXc"), .value = IOV("zshoANq"), }, + { .name = IOV("yUsiGSQalcAkbb"), .value = IOV("tTYXQm"), }, + { .name = IOV("gRWTXzABIPdOdz"), .value = IOV("CdpAtahrmShYbEEADqRujyBAPiinNqpFSjEqfFlfmoWrXpxnhltZIjRYL"), }, + { .name = IOV("VGTyfeCbUVXuzv"), .value = IOV("cBozJQcnSqRzpiNtNnYoLYQNtIlCYRljftlCNNKDoxLEFuaNFZJBLhpTQjgaGJBLoqv"), }, + { .name = IOV("OQZkclvVAmJ"), .value = IOV("zflrAZTFREiejPObxhNmdtaDwjJvTeyQfVZbOLHvyihUlkgzzDbrxexfBpiaJuJbZjuJTqllQanm"), }, + { .name = IOV("dFXPedRrkaOReilv"), .value = IOV("rNPwiOEUulBNRRYbRBxGHDDJRYLsZCgshDHOfeAWoAWgHpimVEHqXJEYZaIwSyhnZYmUv"), }, + { .name = IOV("wLBGBXfnzjAg"), .value = IOV("IZkGQZfUiD"), }, + { .name = IOV("c"), .value = IOV("VliAvbNTcnVtapBoraPZJFlXztSzbssAFBY"), }, + { .name = IOV("jvjcjvHsfVPSIiwDkXg"), .value = IOV("pNceqTaYCesmkQWvogIiztDdsnheyUCDZkRawSlQXFhvTyFAIMdUySUaqJM"), }, + { .name = IOV("kfhWBba"), .value = IOV("uTyAnNugVOPIBXziLqTFpXpjSYmmaHtEBugNsYmGIQdTHXsTXFZ"), }, + { .name = IOV("YD"), .value = IOV("LjtuZFvMHqBJbAkZaxOwiToDDisqZhtuCwEWyFcsWCTqhTaW"), }, + { .name = IOV("OTNWtIDLQfulekvuK"), .value = IOV("DlvZDfLwqtQLiarbncBkQRKkPYhZcNRrBLZrRCZBZDPOxZHZt"), }, + { .name = IOV("rsefmuoJrDAlyU"), .value = IOV("fdTfMpdtIYkYtjduhTmQzxpjMPmyIecUToCwGgFwrvraIjmqImYBIozZZQRPt"), }, + { .name = IOV("qYvzek"), .value = IOV("jOggkEKCpdiCNRdoUzEVYHWBTONIHJQqZELyTzDpyUSQrORVeBPTFEmZTUdWZZFMsap"), }, + { .name = IOV("LjFLpXrX"), .value = IOV("IGDiLMRtfvwCLLDCSEiAyrcEDLKdEejQiCtTOFIraLABVnRezBPzMxVFlvOnVlCWEJYHfNgfyCYT"), }, + { .name = IOV("RsCrLVxpSzEbNKc"), .value = IOV("KTSvfkNhsnLEjXwGduRBmRapGNIRtscZUzTGNmPlhuJqMiwJHNhqXFoMwj"), }, + { .name = IOV("AvomVzxQGmdATAEPtst"), .value = IOV("fNIOQDvlqnxcUlLiNOiViPtnJWogcHFcChpNCnGEIQSDwnUmQI"), }, + { .name = IOV("dPoewCwCoZXTH"), .value = IOV("xIwlYwXXsnLcDQzkBZGIQcjVjPvmNSAnQPhCNn"), }, + { .name = IOV("IKGsBjeJbQJahAX"), .value = IOV("ZCHdtU"), }, + { .name = IOV("WEtoTcSqrQGBrfFdI"), .value = IOV("GWQmFjMmMNfewiFgEiWYOpYUqaruWNhYXIjsmqUafTOI"), }, + { .name = IOV("GEgTbOjtIxkXnq"), .value = IOV("xdqbICCSNTeegGpsZsqxnajrKVFbzxIGVCIfhiaexqKyebbdyHZM"), }, + { .name = IOV("VzxEUVCxdMrjUVY"), .value = IOV("IoATBsHOzNsgZupwuDWJJPyRgrPzmgmltZGQCwjUmFUYcghmbDaXmauCwcfRsxhtaB"), }, + { .name = IOV("lZFCspnFNWDGyCQr"), .value = IOV("jNHKUammELVmjY"), }, + { .name = IOV("bsLAnQrNzDnyBN"), .value = IOV("eiTQYYLbRcaY"), }, + { .name = IOV("mAJkuskvJANlk"), .value = IOV("CuIFfqVFjaiaNZBsnRqCcaxAiE"), }, + { .name = IOV("MkQSAMfGNKHFZXqwM"), .value = IOV("vXteqejjEQEFCu"), }, + { .name = IOV("MSF"), .value = IOV("yInMuwBOQWsVNfYehkEQrLCyvEtmRPsrHjfyLIZjrQHSgVAKOtwpzF"), }, + { .name = IOV("IfPGQwZehSU"), .value = IOV("QVRSluQTqutjAKVsoPBYvnGUgGfOJqYdEqNfspxSLYNaAsVrAVbWGHGMDnLsiTi"), }, + { .name = IOV("QWQMNvKDpiNTLtDjqBgq"), .value = IOV("wzJhRofMPFaVNPCuPIYHKOHmDCgehjBevbMyhJSpULklwgPeszgmXyBPnl"), }, + { .name = IOV("icDvufPeFn"), .value = IOV("urcfvWZlnXfSVSBqxhcAMZiwLxvRPEAuIPApgtgzTQLHeVvxXhLFHtDOQ"), }, + { .name = IOV("WKabP"), .value = IOV("FhxJwfcKFfogmeOUspZXqnxzapMGCbnbNgKecZqFtFywIsjTYoeAWLJpeOrHfuaDGhX"), }, + { .name = IOV("FSnvLEryUARzZgs"), .value = IOV("WSBSHZzUOdMhBiQMnBTIQGxNSNBgW"), }, + { .name = IOV("ujhCEBktdaGlI"), .value = IOV("BdzawhdpDWoOuepsWtPuOEJMnprdcBqpJVyMkdFMSmhvHuW"), }, + { .name = IOV("mshMVIa"), .value = IOV("DsDqeAwmllCiQnsmIfHNLrwMvnAWtuWZXlsQOMnLvyYapJfyKakZlwQDCXFgy"), }, + { .name = IOV("yAWZmnqazeAbpQJ"), .value = IOV("PhTNoKcpkVBnzkjPvvCjhGuvZEThGIHWSSIPzbEa"), }, + { .name = IOV("lzTHSktPCJ"), .value = IOV("bgDPNOjMtdvbEMqZDoVLAhbdKxtKMocvezNYxgQTFhnLztXqhnmErnCZCBB"), }, + { .name = IOV("wMXoAjJUivhWPaM"), .value = IOV("VErazZqWKbziXGVrShyBbeaeMrxTRAvstqNLZqoCxoqJNgTHiqBtMzSn"), }, + { .name = IOV("hiEXupoE"), .value = IOV("rY"), }, + { .name = IOV("oCJReEuxUBZTQ"), .value = IOV("zZctwdLMGrfmOxtGHkDHalZWWqqcIDcqXpfwtzZXEETaDSJGZzoPwnUQfhEbiUUtI"), }, + { .name = IOV("ALSsIYHmH"), .value = IOV("loAZsjlIUoqZyfYeqFmtqwVKwwiLHIJxBiSK"), }, + { .name = IOV("FXXPuKyknCYx"), .value = IOV("MimpFUZnnczCurWsZYjIJQrRMvPEEsaWqWigeBXGEUNxCkmcrGeRptsXwBhKZhzoTOUWnEe"), }, + { .name = IOV("tqhAqpJQBmljNi"), .value = IOV("dzCYGjnYJpJdjuhdNQbkbdIYVZPHFNSDSjHamEvqTIqGKIhyQSXVYCwdGpMuPFGSUROD"), }, + { .name = IOV("jPZWmzDOOCB"), .value = IOV("bFhQbtGdlRgQtmfxweGHvpGOIMVgpVmLuunG"), }, + { .name = IOV("aVPsuHF"), .value = IOV("DBWOfVreHUXnlbiYxUnbabK"), }, + { .name = IOV("zzLTBhL"), .value = IOV("GpdsWyRYaRflpekGvunhoquJoFYXIuAcwrJTpBt"), }, + { .name = IOV("yHemUOsgNaR"), .value = IOV("XaukBdMUSEYbKMoxREcDXKqjqYbeftQdZJnEflDaBEXxXadwYVgNQGIdtNm"), }, + { .name = IOV("CUoRPb"), .value = IOV("HzrijvxyVzbaUcujvjzlWnOFwqPehaykZoqzqNkdcTNhQjAjzxJEJLIXsftCaNLajTiqQKWSuiKVVsTE"), }, + { .name = IOV("yjMWkUqACrxlzIyac"), .value = IOV("MnJIpLEnZfeTDEFQYOvqEhjiXEtXkMwXLSEKUflzUJAQWSZNLjYTkZKYPxHImsvdOqT"), }, + { .name = IOV("z"), .value = IOV("SedZXlsFbZvkHGZiMgzcodlVIGKrlUIRXJahSBsRPhhdMVOzlApErL"), }, + { .name = IOV("NEixuKgaSnETtgu"), .value = IOV("PZYaIew"), }, + { .name = IOV("tpkxBUdsc"), .value = IOV("LILEYHhaZDyhFWJIxJpiSCOGqjgDcnNkGmGXxjDxfokPzwklNUVCAdGvCnYxzZDgXzMDKVyrryuIet"), }, + { .name = IOV("bFrhQowXyAglWZYDJr"), .value = IOV("MGyScLosijPqbdkhiSSGtMHVXIwHOcMnkeFHprlPaDMSpwwTEZOVrjduRzWJVBwcHCVMuMi"), }, + { .name = IOV("dDIpTQZMZkuCSKu"), .value = IOV("wwttjtojrCvZIpeIQCNrGczOmhthOWTNmPzJIZQNAeDAjHwA"), }, + { .name = IOV("eDNRbdZwJuLmQlNdSTuX"), .value = IOV("HQkFXaVZcrWECSHzxZqrEjOxchRUYmOGuyyhQwzQWJSHvJbLsgvUYRjXYO"), }, + { .name = IOV("rfipjvvciXFDT"), .value = IOV("DFjRnvjERWKcVCPkWNuLahTPXuKOuZBJhGtBEXkkVffzTEwieiowonaqMhZBRUQkiWEajNVTLRs"), }, + { .name = IOV("utDParC"), .value = IOV("IcWHWcIRWrGnUjsVkooF"), }, + { .name = IOV("aTCRJS"), .value = IOV("QvJArOAtWquzgQxaVWBQfcYXbjkDGHCJng"), }, + { .name = IOV("bylB"), .value = IOV("NtWpKMFvxilmLBUwDQiOVszBEcBzBB"), }, + { .name = IOV("NdL"), .value = IOV("uQmPmDLWeUnyzYCPxVeKcIUXdnLYsjgMphTTSLoqoEhUKkdqUGseKBpPQnMlBXx"), }, + { .name = IOV("KILTrckTwhRAWoRmwv"), .value = IOV("ujryFMolfTuKmdoWpuPasmQUnkGKriDKZZaehSkdOS"), }, + { .name = IOV("u"), .value = IOV("vTEPfrcvTASJpYWvksbSVZJQeFFszxnnsWdYjqvxkE"), }, + { .name = IOV("uxCsrRIfDM"), .value = IOV("AioKMggjsYuAVFOCmYYeJPoAgblmhLUuFMcqdFsJ"), }, + { .name = IOV("d"), .value = IOV("hUkwUorPWypzLMhJViYNaDXasaUduLeASLDfUNDe"), }, + { .name = IOV("DpxDtMUcUslsr"), .value = IOV("OnTEFIVKpLwTgPzQmXxDTJTMbjnyXnZUlUVqgaIYxCmHIAVfnRGwhqpQPwHWjshKKCpJYhutzmkVlZHD"), }, + { .name = IOV("qzIDsscDIHP"), .value = IOV("QDKAnjMorCQYggGDzSjfEnKmRmKzHnrfhFMeqEdEzzATgCeSrZbaibdENcAIEQLDZwLGbxoQIklyNS"), }, + { .name = IOV("DGLocsJIHao"), .value = IOV("GzLvphtfCLtfajnMicqbeayLVpyLhiqtXxZAOpVxgZKUFsATLqAkJrwJwjZYvrVGzdEhiZUsehkUAG"), }, + { .name = IOV("AHFzDs"), .value = IOV("gIBVEqVSYzcFKXhertxacHCuaCdERjqCfqoroVSKlWeFNw"), }, + { .name = IOV("xujLvp"), .value = IOV("MnCdLpbWPLMgszKlmXUGutwdJlpYkgBghZVnGTsanMRyVmNEyiM"), }, + { .name = IOV("P"), .value = IOV("nEIIBflbiStRDEIsWmpMLIAaqUcKARsZxTjkbbNZAl"), }, + { .name = IOV("qMVKUztdngAj"), .value = IOV("pJVJDgCvlZzasqjgOrpbITYBfPrRkmFSSvXXSZTMiSNriiW"), }, + { .name = IOV("lMaLgKRt"), .value = IOV("sArEtbsXYhGhSCgqgGRIVDNsnSjHxazBNITvODPUCKJEoAwrDQyHIigoSPYIVaFLnEAmyxGuLbdzyE"), }, + { .name = IOV("ONNSpzUCPuyC"), .value = IOV("eeQIAHmqWanARKX"), }, + { .name = IOV("KhWsjDUzHm"), .value = IOV("iaOGLgzuiTPhygfw"), }, + { .name = IOV("crQxTO"), .value = IOV("nvKiodjuJWggQMRgEBHVAXDXWgXZfGqgVCzSnBZlTqCKQSZsGlar"), }, + { .name = IOV("kXeQmIllrD"), .value = IOV("TdRWLSEcdKfeHzYxQ"), }, + { .name = IOV("fqaNGxghF"), .value = IOV("GmreAOSgMoaKKlZBBTpCFzBNBELAlfArOfBBxfZtq"), }, + { .name = IOV("QFbHNAalTbgwS"), .value = IOV("iITgAxaPdhUCBDNjRzIrDluEWEs"), }, + { .name = IOV("Pbf"), .value = IOV("H"), }, + { .name = IOV("oeKe"), .value = IOV("PPKMejGroDZRpCtLdccyzlzidlDlJjOXHJODGiglMTpxSfsj"), }, + { .name = IOV("oxS"), .value = IOV("AuPEhsVlMRoouqxPLPQyHUOyHaWTjpszcahMqxGBLmX"), }, + { .name = IOV("ZRYRAirpz"), .value = IOV("UzNYRkzDSWWdjOQCHnIZyxiLSYnGAsZELKxsvuvwMCzWotWt"), }, + { .name = IOV("AjE"), .value = IOV("bLBUYsXcLxaqBsJdNddGZdQnSbdwHJdsCtmRxRWAUeMcYVCpjy"), }, + { .name = IOV("BGyFPNkcKk"), .value = IOV("bBAVDEmuvTtBSZnIGmespIqGKVMsmLKrewzfWdMWBXLDUisjtgcdsuqRsDcjrcHezddv"), }, + { .name = IOV("mfvjlHcmaxacIp"), .value = IOV("bdwxdTUnNeOqQNySivqhLkGydPOKsLxgJZcdEiGkJMbLbafvYGsfkENvUiB"), }, + { .name = IOV("ySQDKTbRtbdrTp"), .value = IOV("pcVLrpzmtaygUPQZBineZWVtBzJZETvQRzOFfsNaEbrpDFqHVMWqtEYimqJmpwar"), }, + { .name = IOV("owwPIVZcDwJjZQWjBH"), .value = IOV("gJalBbxokPUBCeRSKtSjQNnzVdPdeENrGYWdqYkwgzgjYDBfCxfpzSRFGt"), }, + { .name = IOV("jvBWTl"), .value = IOV("UHBlXmKqYAGBljVVhdKKTgzSBBsHPCvfGleFFQfnVriWqZhQkenqF"), }, + { .name = IOV("lkkLHngHrvaDdiAqiHw"), .value = IOV("kCAlFxQcRMRkcDMjwxxRZmGPwTqNksKIFPsVvgjvESBGyjxvrLMu"), }, + { .name = IOV("poTv"), .value = IOV("gcdpckJySiHvRXDEEgLrTiWTLFzpSAgMlacisOX"), }, + { .name = IOV("jz"), .value = IOV("hZHZwzNtBWRVluLiYiQIvSTcqpTQlsAiOXxxzisWIBxhkOiGKI"), }, + { .name = IOV("B"), .value = IOV("HTwWsRJoPUFCwwONCroLPXitAWeJKhqTncilPeizOUTbTNZZzgIuO"), }, + { .name = IOV("PD"), .value = IOV("wLKipEdCXafgpFieyFuEeRLoQbfUeIegasPehKiKTVsIALknjOlWJyZGyQfLpeNKTRIOzbbZVwaHnE"), }, + { .name = IOV("sQTtgHhlHaRCmrteLFU"), .value = IOV("KzRjuwCGyLMfFVb"), }, + { .name = IOV("JhlEBVCoy"), .value = IOV("xWNLpYdXqEQFwEtPFvAddrBhGLLpWaowSamsppdnGJqjyfolZRzTg"), }, + { .name = IOV("zLKcgfBl"), .value = IOV("JYkFuvQRvbvLvvEkHaOLvUCGUHpWtRgfiGqhSEHdNgLsePEMLcZjbpnjJXHIzmUuZBUgiywuGmL"), }, + { .name = IOV("mWZgcl"), .value = IOV("wbhlCDSlcZCKXiLsNgtItQQAzLqLMLYHwFlXUNGBtovTvNcFhjSFjbZJFzhobuEckgLNex"), }, + { .name = IOV("WyfpnpsnCCLsfbk"), .value = IOV("vDPDgXrmWxBRtul"), }, + { .name = IOV("dYFDqnejFCHrCRZ"), .value = IOV("kWTcSVOjdRwHmRJoeMnHCWXsSPRrjTCLnZSjX"), }, + { .name = IOV("PhwZAhQgNJApFPHCyXaT"), .value = IOV("mNSpIHFaZHLxrZPDsNrvNq"), }, + { .name = IOV("vIy"), .value = IOV("uaFhiEMT"), }, + { .name = IOV("PSqGFujDLfrExwPFE"), .value = IOV("ydmfMEnkcUsuOjsfrZaKpwZwaxgUuetjptigxFlHsruFvWvDrDWIxnXSDoRhcKnGfjNdp"), }, + { .name = IOV("bHxpCUFPOFL"), .value = IOV("YMSLoNQgawQboHQSGzhjKhzzLoCMlSiEVkGVRdyhzmULiMJYFRhCZiaJrdzYTFweYZUMGGnIMwlpXo"), }, + { .name = IOV("sJ"), .value = IOV("vHKceTgIbOZYEDCiGXLhsFwxCFAWrKoWmvptiwAnGrF"), }, + { .name = IOV("sNtjX"), .value = IOV("UsBBgzlMMzCSTtWULQNTF"), }, + { .name = IOV("aqSsVBkKPbw"), .value = IOV("oCxejJXhupCqdPyUCYAezTrcmIzMoUbRMbwmKuGZXeQFCZHF"), }, + { .name = IOV("I"), .value = IOV("snZlOgymGcdRhHgeniOBnGCUGbGQiZV"), }, + { .name = IOV("W"), .value = IOV("HpJJVMEXmLBUdreHYnzRZHMaecHtqJzhoDuabPCAuLftnslKyU"), }, + { .name = IOV("ijMtERSWAdN"), .value = IOV("pFoIMWOTjqxSkjRoPMrHnKwIOIRTzADvtfdbwZxzJxVIoicZWBHizzGHjhYeNUQjBXInsLbehLPJwOFd"), }, + { .name = IOV("ctXYQirfZMUKxmnlqkks"), .value = IOV("ndaoKVFndoiFbernZrFyAXBYzyvCGIBfRJKpViODwusDXkxyzEys"), }, + { .name = IOV("KUYKNdjvTaTWq"), .value = IOV("PceZrfEtlUfqEYozbRoYnFJnNFuNFzFS"), }, + { .name = IOV("OSzfxg"), .value = IOV("XYbMDGQZVBdKUxeijufpfLcB"), }, + { .name = IOV("oAUDFWXQmAlVO"), .value = IOV("fYTCBfAZFweYLywjILPJRCwSvGKgXgKtIgvFJjEG"), }, + { .name = IOV("vd"), .value = IOV("zSwiIkppfOIVKVFoflOWoiLmUeYDulDPodPoviYlbgwQrUcptLKStGawVWodDPDT"), }, + { .name = IOV("rCbVRahdTNlwTI"), .value = IOV("GDoCAkLnIPmWjaPpIAhDREvPGBXJyURuRfl"), }, + { .name = IOV("edIcrKBHRuHMqx"), .value = IOV("XMTmDsmHomcaDotsCKRELoKpoRPkrXwxiREMRG"), }, + { .name = IOV("LvfcWgMjTClGwdj"), .value = IOV("IxWMliGFCRvAopSwjRwJsjGZTwRCSWhrkloHM"), }, + { .name = IOV("ivAnPwjhoYdMlZmOQG"), .value = IOV("rnaIzKJleGfeerVDViPAyHnKKBgFvyLAebxHHhRVLBXPXkaQzaBlIVJzddpXy"), }, + { .name = IOV("JlAk"), .value = IOV("UkUzzXMpNyWijOQvIEezOVvJCFaxaR"), }, + { .name = IOV("CCoBlrgawEiUAMyMzP"), .value = IOV("WTtMzYUmILbGWbTCIfMNwzkEXZNZv"), }, + { .name = IOV("OTrdvMnS"), .value = IOV("MoPBOWiTZFUaHFNTAJkhmZl"), }, + { .name = IOV("FVmE"), .value = IOV("ifCjqeqzxmpBhqOrRfgWTexnSSIzeMhyJvvKJsynzAfdtQIVsPoFJUGnRZKIRbYzmHNdzBdOpnDQT"), }, + { .name = IOV("gUyT"), .value = IOV("zfXAUbgUuGdKmVWFTdkoKJCDLCYOdLHIRZOCunXkeFU"), }, + { .name = IOV("YGVVVgMTdPJEtWQIGKy"), .value = IOV("qUUaETYsGNVY"), }, + { .name = IOV("AedJKIHNhvvwBnX"), .value = IOV("onlyylWVRUhUMgBwgFTAcrYqmynIWuDuDSelRnItblpkcrqWnIHxMGgcEkRKDetKvULwCU"), }, + { .name = IOV("eGds"), .value = IOV("OZgnBhXdzLlHPSUVJBePwoCTtSXTszLJwek"), }, + { .name = IOV("YwcY"), .value = IOV("oCQwoxrYUqwhYnZSXzJprADuySBfKjoPNBCfLLPUlGJdrnfENCNfpEdFurNsCpnCjh"), }, + { .name = IOV("zhADpWolyqEnq"), .value = IOV("hLKwvbMyc"), }, + { .name = IOV("LWyEjFvhA"), .value = IOV("orCvrOJnpqwjUAbqhgHOcSYLCImNJVfBRqRtGAwvWecsviLoACmtMTsVJcGihTTdAgdrlB"), }, + { .name = IOV("NuUNcq"), .value = IOV("WYEHQgaIDbRkPvWlogSBMWI"), }, + { .name = IOV("Fi"), .value = IOV("gvFAUICjhGM"), }, + { .name = IOV("nVcnDhuMX"), .value = IOV("HjQBhGkpbuHLdWyqlZoSjbPGssyHSqLAHqBWIDf"), }, + { .name = IOV("TNd"), .value = IOV("aRUBAxAfseotbeiDKWlDivJOMKlJmwfkkCIwGtrfftUkzinMDRaUTO"), }, + { .name = IOV("GSiMtMtskxqgO"), .value = IOV("kyUyBjFuURtIO"), }, + { .name = IOV("GBxhLsJ"), .value = IOV("WCMdlWMQzDhfrrZAjMbzJEriRorGZWcjddtVscWTulOPZoSxxnqOGE"), }, + { .name = IOV("tWfBhUonHLgUIO"), .value = IOV("ZfeXMkzOroSXjmlGTZQkIqJGSbFAXgtFkwchKtgM"), }, + { .name = IOV("FGcLqu"), .value = IOV("GDHSroEJoljabZXDDdaRzlTjioBJGgRnvGYF"), }, + { .name = IOV("vXIkeSSsIjYS"), .value = IOV("xMHrXAhGQYXCFlQWgmDJSZZOHPndVgVjjIQQyKKJKJxSFDOqpUMtJOlOyWJut"), }, + { .name = IOV("iEJPNKmkRezDB"), .value = IOV("RKDXuCl"), }, + { .name = IOV("pCGZz"), .value = IOV("nPRooCRvAKESgGkFEeyOSxQZzyaoGDuPxHPYtQGhq"), }, + { .name = IOV("ckPZoVLPoI"), .value = IOV("DsDLYaWSRFLquRaCWekBmMDitMWIzyybQkMmaSSFGGxjANrDupWgaNsBVqZCOp"), }, + { .name = IOV("tUsXaRKMUSInRwbuVGg"), .value = IOV("McKJXKJlljCLSlACNCPsSWUVAbvWIsVWTaNNxlaJTTSYkEOEQaPHNYiJrbswKuFmjVZxrAdzilsLXn"), }, + { .name = IOV("ZEZDUq"), .value = IOV("dwNRgxqovLnNPvjKm"), }, + { .name = IOV("UOtaGSXafBhUGgrnsL"), .value = IOV("IfvcYscqzhKPdqwxBrqQZVYONYLsegpOJGeIGCZExDOPQPXxeoK"), }, + { .name = IOV("hbtiHAXtE"), .value = IOV("xlOWZiBXzIWUvkvAFIfIVEdSHLPlBXxkSgrhMjNqXDOPeMnCdRILNbMdAtXzzmmroTWpwhPJOk"), }, + { .name = IOV("oRsFMNFdlneRNK"), .value = IOV("mqwOLKNEhjdRByJcdwwqcDglnFHfKvSENuZRJVsNbATgtySPmwgsGaKq"), }, + { .name = IOV("RCcsNtNXmIUuVjmiQfoz"), .value = IOV("HQaOiatG"), }, + { .name = IOV("MXB"), .value = IOV("wDAQLVGCfGenfOGRyTNsDugUXx"), }, + { .name = IOV("XENVCxo"), .value = IOV("ZTXbhFuwfLIBhqoayPRoDZdtIwdMDvrtOPjVGpswBKTwvgwoXMyGLJGmVGxfrtDewJhNhqLNopsIeoPA"), }, + { .name = IOV("b"), .value = IOV("tKLitDe"), }, + { .name = IOV("OK"), .value = IOV("ndaqnRJpTYAtxzszFQbSIzrtHNSqsVtOhtGUHfP"), }, + { .name = IOV("Uq"), .value = IOV("ZijyhFvLiuCwSKtVNjgrmcpwELmEEGXPWTBFopwJYIkLE"), }, + { .name = IOV("VZBz"), .value = IOV("sslvaElFgSaSUQhrcBHnhxoFDtVXoTOZQqtltfVqctnbJ"), }, + { .name = IOV("fbQj"), .value = IOV("QUzEyZOMLKIqbTLqmtBLoNAhzFYpUPRUpMXcgBYwjggAkcaFCNFw"), }, + { .name = IOV("fVDXoHvtyj"), .value = IOV("YUSaaBZOHAPpWUeIPFddSCxKUvnpeDTImZsUtbFYOFZWhU"), }, + { .name = IOV("RxWFRwgzpTsHADxnbX"), .value = IOV("NzsswMiCczDyfWwKtwnexkfnQHRWJUmGkPkeDervyxrxTYdUupPdIvhDqXDfKBzlxa"), }, + { .name = IOV("G"), .value = IOV("FbFdZhuOcCbRKnNKjkbdanoJVjptQypusXiiABAyzEWtbSHWxswVAFSjACXwcbtE"), }, + { .name = IOV("VKJXtUrCLMf"), .value = IOV("DYhIzFWRzjZrknWEwsvDVIzVWlfVYbcpHRKSTafXrYpMKXnDu"), }, + { .name = IOV("VKgsoQjzRhEklWzaZVu"), .value = IOV("rhCYbmyAYaFPswTPoHQXRYECAcw"), }, + { .name = IOV("QUVImllKxNoKygVKzPOI"), .value = IOV("HJsHYJasiLmJSVURKNIuHhfZtQegucuyEtAoMavcHDqJcPmZnZskNTedlvopRzQvoJRAuWhOaA"), }, + { .name = IOV("zrEJ"), .value = IOV("reZVcMIpBxLeFPyjRKCMjVYKPvFtMlXjVeXbVYUSJXfPggxIkmhHcZDjxiEro"), }, + { .name = IOV("WyaPeCBkQvXVqw"), .value = IOV("vLaajnGTggeXtYm"), }, + { .name = IOV("QukLopQwbGpIS"), .value = IOV("tZLmfSDEBFCUrPbxHxBVZgxHDRwlZPHot"), }, + { .name = IOV("izZXljabMvRqWXxQmw"), .value = IOV("QTHLSTnevCOFPkzQzo"), }, + { .name = IOV("fnQljtjQjAooTcJiNT"), .value = IOV("aipQPbBPjUOUIoDbhQpgOFFbME"), }, + { .name = IOV("OHYxKBYWyrgKKdItP"), .value = IOV("YIBrBXfCZNWUjlJJNVmhXGSlBEDMoJyOLXyhVrzeWZPsKJoHkVfhrtOSZtu"), }, + { .name = IOV("bzwwNtqmqPUFm"), .value = IOV("qIrpjzSGntZgYuVkFOMKlBCBHeGygDLiyvzplsQS"), }, + { .name = IOV("YDsmhQ"), .value = IOV("ndCsjppCNhJyTFZeMiZDsEcdNH"), }, + { .name = IOV("Pj"), .value = IOV("IdIYYmmvOQmjhnbkDOBJkLawYgNJYylOiPsDcTNW"), }, + { .name = IOV("UQFDbPhnE"), .value = IOV("pQbmVTNQugNDwCmxLWWbLmDMmtgcyLk"), }, + { .name = IOV("vNtqgqVryDr"), .value = IOV("bqglLkMjNmQdgGpblWzDoOAEbbkUicGniTmmqbW"), }, + { .name = IOV("StvvuwTZst"), .value = IOV("gscVQbXCWiITuUYRCgGSjcKGCiZDHDlNUIwpGyFNuqgSokMtFxoisDVqrvpRVqabBNSLBlTcHrMWHOfh"), }, + { .name = IOV("RV"), .value = IOV("OmflOevtTOFgSQpYdqMXxmmigQKqzURfHETZKRl"), }, + { .name = IOV("ancZhTdBuLVnXcnG"), .value = IOV("VgJPUTIZzOlQepfwShIzDHAreyNWzbezTMYDzRKzkhOuRJueaJcOjqecqMmDZucwaPSs"), }, + { .name = IOV("xHwesgKgSu"), .value = IOV("QzSDexGfNPvKysrxYn"), }, + { .name = IOV("tsvpRuoSVf"), .value = IOV("yHgdwosJafSRquyJVgjEINlSbLqOCvmmlnNgZRdBsZoflfkgohZE"), }, + { .name = IOV("uMMWcRejfISrY"), .value = IOV("OtmIcvxUaogUOfpfeEoeQBIjyqVCIkiAcZBhgZFcMPQtlHwWD"), }, + { .name = IOV("UbRtpYOsrp"), .value = IOV("aWVEoBMIMICfRIYIUdpQRCmKSizBrRbq"), }, + { .name = IOV("hAvexybQ"), .value = IOV("OQyPJOEXQuXpFTvAkzhV"), }, + { .name = IOV("N"), .value = IOV("VAz"), }, + { .name = IOV("bRYxJQsDAL"), .value = IOV("flRlOiPIfaRZraSzuAcePfIUHkKsZBqHWyaRoAXyWfVuGOcDymcaajuVFxJSkwFxiEoXIjDywu"), }, + { .name = IOV("nUB"), .value = IOV("xGIebbIcXoPPHwHUiHqLDaZuPapQzioIbmApDTzTNVVrzjDeqcKKtFhiaclIeAPByeycTpKTVujASr"), }, + { .name = IOV("gFmPPQtpobav"), .value = IOV("XgAebFkMjtbJlvXhkyPkNQNjnMitTBUXr"), }, + { .name = IOV("vUKeqiXPiwJFzR"), .value = IOV("lECdJtJikwMugPBsBVZdlr"), }, + { .name = IOV("PPBbBVMNEKCLgMr"), .value = IOV("VJzKnqingsRZGKSVFTlwDsEQnjisKQFJSEyTSo"), }, + { .name = IOV("MCfyVcsgPmPhTHWLsJYm"), .value = IOV("hjOsoqZmgDwPAmYSSqqDrXaZYMGpZTsWJMcDdMmoLORUemYdDChmNQrZMn"), }, + { .name = IOV("hiasWRTXGGnNEgdYP"), .value = IOV("BpfVJopCUIpsjldGGJBHCRkAnVLfTppXGWknuuJQc"), }, + { .name = IOV("yCrHVwVJYYPWicJ"), .value = IOV("cHQlVoBYuxhybnjJEibexwWdSsQfH"), }, + { .name = IOV("viOGHJtMH"), .value = IOV("OLilUpyVJHYqpfZBBDikKgPTyUcGpqABfXDhB"), }, + { .name = IOV("JNFiIfrfh"), .value = IOV("IqPvvCvaSqjJIfrIdQxaFFGXWGrAWdJSZd"), }, + { .name = IOV("lXIsSUAUsE"), .value = IOV("PIVrgcJjN"), }, + { .name = IOV("RtXrviKCvYfX"), .value = IOV("MrYYodWwXxJPolzJEccBVaqqxoNvIMxgXVzEvnVmKiEyWjLVDPb"), }, + { .name = IOV("wtJud"), .value = IOV("FWWMmusgOjRWpJwAOEPrdmqOppOsc"), }, + { .name = IOV("nOYDMeeSBIViaCyT"), .value = IOV("zuyGAURiyqxQZfRzhIBTBAIrmqJxvRNOzazqrxVabCOZyiHAWqJtZWAaKJBHGCPeAORoNkmrvhfYeELH"), }, + { .name = IOV("NrVFEkLzuXrQday"), .value = IOV("jWEEAziZzLajYadHZGIEpsAwxxqXOmpbanAflsuvcUPImSLanFqlKCADXyPebOvqeQaErJgZcV"), }, + { .name = IOV("AJAsrm"), .value = IOV("ToIrOFUebSGranhWzjGj"), }, + { .name = IOV("KUdvzVj"), .value = IOV("ydLMpmkzqjXFouLjLGR"), }, + { .name = IOV("ClHYXhPRHxiAH"), .value = IOV("jwVxnqfiGEwLMduwAlsLnxGRlaUaGXbqJFtYvU"), }, + { .name = IOV("MUKKCpuFlwSZkXcED"), .value = IOV("aozCOZeedcrJHtaBNJPXJCdwVcdFHDeVnUjVARPBDBnGfBkSiwMiNErxdXAHSyihPXW"), }, + { .name = IOV("zlUCQzQH"), .value = IOV("ZzzshayKQgsJCBXDPpcfbWijnIKIaEsHydThoEvXRWCtQcpnIbxXFGydaykudtGdNSuFdn"), }, + { .name = IOV("HMVzTzfmGXlUBIVSWhUm"), .value = IOV("erTGjLJpwiYqTyqKZa"), }, + { .name = IOV("OpMGQdQVLiafLDlk"), .value = IOV("ROOVCWSovGNqYoMWUaiRxCILpGDpbQrQqprGuczpbJaclRMSkJkmHYlQYDCCxYEZjL"), }, + { .name = IOV("lQkZwKME"), .value = IOV("kXqhoOHUVYYyjVuTsFXGSouHeDfzAKlIHVLHBJwFJSgpErGwCiql"), }, + { .name = IOV("WrYsEOS"), .value = IOV("gxSbimYPkEYNtTEQIdWtZBFtrtNpdaaskYUYBKPHQrimaAyzhUsYe"), }, + { .name = IOV("rXrcWXCVmvYMTzuLFr"), .value = IOV("Bxthx"), }, + { .name = IOV("ovjSPmZHrsIuAvlmLgk"), .value = IOV("kupXltbGQDlJtDIPRZUQUCWfSQbqbYQfvSLGZgoURYFJqPJyiwIGxIdlhnLIQiXvqeeOlijSTRtJT"), }, + { .name = IOV("BbAVW"), .value = IOV("UvgUENmHwMmzamqbIqOXjnssonehuiZgLNduUkWglNdwvYkdXJBTLbgFRjKl"), }, + { .name = IOV("jmfjlcSAJyGkMNqKAGlL"), .value = IOV("oEeWakMjGWUFC"), }, + { .name = IOV("WjFcY"), .value = IOV("shKbzTZpdqexJlQdGJQDntZURzheAUscsWbAMeqyvdaNKEHwSNuohRhFFrfunlGEwH"), }, + { .name = IOV("emCzEpfJgFkKoOY"), .value = IOV("AWqsfngFgFbZtzy"), }, + { .name = IOV("GezFAOedsnCYbNdFHvC"), .value = IOV("grHRC"), }, + { .name = IOV("plY"), .value = IOV("SjHeitRtfWawFnWkAamfImMNm"), }, + { .name = IOV("dmvtgUvcbpkCJ"), .value = IOV("bzGSpsYEmAKSmVHhajCKJxqGxRVdXHltoTNYWIFZ"), }, + { .name = IOV("zdWuKvSD"), .value = IOV("pjLRdsGtClQyiwmPViigVTQhgZKOJfAGhJkDQwZeKcyIqLo"), }, + { .name = IOV("zGCpGqOhztsAlyT"), .value = IOV("tgsbbwnZIamTanFR"), }, + { .name = IOV("vmnfuvqU"), .value = IOV("YmAMYzFdn"), }, + { .name = IOV("PG"), .value = IOV("ZfNgDSLieinIewPsZfifRlBOwCmyIcywlYCTLIuROoXxELpTgyojaleWOikCXsKUwrw"), }, + { .name = IOV("ooFl"), .value = IOV("Yp"), }, + { .name = IOV("JsGSBUzoDFGXdJINfh"), .value = IOV("LOnPfCENppyuBOR"), }, + { .name = IOV("hVqdCd"), .value = IOV("ULpyYfntcaKACtpBtaLyXZuCZGIbJLSuDwF"), }, + { .name = IOV("ZDCN"), .value = IOV("cjwPiOchonTETT"), }, + { .name = IOV("NpFxDKUjTVuo"), .value = IOV("GljtliHaGJlZ"), }, + { .name = IOV("xGTionGSBgMyoBBikksC"), .value = IOV("ADgiOHXHoLGrQKmizMHFSuSqZYMngMVdYNzngyhXTfYIkRqtaRxTalqlxXaayqiIH"), }, + { .name = IOV("kunrvd"), .value = IOV("FAfNvDmSHVHsEGvertvvLIUEasNjcO"), }, + { .name = IOV("dtcwx"), .value = IOV("IZcXwgLiwbaoKMcImXaTQyQRyRrazovWXwljAozDDmIGMfjvDREa"), }, + { .name = IOV("Mdya"), .value = IOV("cgFnqqddHhItCEUxjUwPhXU"), }, + { .name = IOV("GzVil"), .value = IOV("FPklVoOgTpjTNCPWdYyZWbmy"), }, + { .name = IOV("GzDYAqhDgp"), .value = IOV("ApTUJWJnwnGakUhjEyluwnnvUHeHSomltXRTHFp"), }, + { .name = IOV("SOporpgYqvEdAZWVzro"), .value = IOV("NyMxjgJu"), }, + { .name = IOV("bGZdpCJWS"), .value = IOV("XPcajNUtoSAyQAFPrIFgPgpxhQvTKpJbsHDOCvFtFurNWAqmDRxAbCfIEzQl"), }, + { .name = IOV("ZjbXrdXmJQkAXYg"), .value = IOV("wOTgLrQdHWnfoTPdHkUQCLntlHXjlnOvDZlsYFKCdhCmnCLSUiunAquOVJHgGkbdKo"), }, + { .name = IOV("awUHrlTvhsXdfweZFCuS"), .value = IOV("XgMmSZeqJNLgWEqXQIosnWBnVuKzZjrfRxkqhDegDVwXenIHwVZsd"), }, + { .name = IOV("jFctAFjtm"), .value = IOV("xLhqTqlYvcvOxERGhGvIOYC"), }, + { .name = IOV("Qpe"), .value = IOV("KwNjPrSPVdYIJeOIxlCZfVcLzQmZCSrfhTukGqKWMkoeqeu"), }, + { .name = IOV("DbCN"), .value = IOV("WJsxeeqRwuyOvDHgaUoSoMiwiBYDcVstDMYQPgNoYzVKliaCgnjdvJGDfRIIgc"), }, + { .name = IOV("rMLAyoIqXLgwZjsX"), .value = IOV("qMdeAxTIofWjpAmrrSBJoyjMyVXevIfLdimWgoVKCncbMNvhHVljEDqtWgFyDKv"), }, + { .name = IOV("vyGfCqJihN"), .value = IOV("XhPwFChwFaWCHbXX"), }, + { .name = IOV("o"), .value = IOV("JCyYsJZHdMMKxycvtfpyJyZPzdhAaZjUHOcfobeiCpsRHltLIcGIjRTnYBXsqeL"), }, + { .name = IOV("h"), .value = IOV("YfdItJAxFzRqDxSeYUOhtjqEnYECcIeBpnDDaVhuMNIeNMxKplPxJDYvwvrNL"), }, + { .name = IOV("sHbCD"), .value = IOV("OxXXQXwPFHQRGBOVSRiUIlGjoPQrf"), }, + { .name = IOV("wdRWyeOXNtcscpl"), .value = IOV("oJbQnueIRTKaXdABmNKnyxeCHzrxLJMAAXFrUBGmFiNOgXufSoyDDKhpjgEa"), }, + { .name = IOV("jAfDAH"), .value = IOV("SMIzPlGOkJbnWVzXQrJlhZmEEkLOEHzELPGhDEw"), }, + { .name = IOV("f"), .value = IOV("lBheeRGcMMqzWYjVvNgOiqsgfsyzngVTkENZKBjyrceWMZpYIFUxrcbedxNwMrNnoF"), }, + { .name = IOV("nfQKlmwPwhXSKXLM"), .value = IOV("dezcKSE"), }, + { .name = IOV("GoKFFJt"), .value = IOV("AYXQmXRdfPdJqesqaeFygsATnzP"), }, + { .name = IOV("CYhUGyMlEbPgYGCIc"), .value = IOV("eVrDXJMyTKTCnPQBlpwoQevWHQEPnCrdTWhEcJPywIQlOAQHloX"), }, + { .name = IOV("gzCxMRzIBEc"), .value = IOV("TAqIwOhkSJKTxWghoAwSoXjsQ"), }, + { .name = IOV("awNLqCKTVzfuKJbArWg"), .value = IOV("fXTvUrwPlkDeiiMjFpbnVxZXyHQhtIVPvMsgccfqhAcwvCCxCPkyRXAjivLGqnymZ"), }, + { .name = IOV("zJKDk"), .value = IOV("tPMKPOCRaSXAsAAjpofbjBvYpeYWVbrNfAVPaLELXufXFFpecTiMKDtBfggISpDSwFZcYPaWRtMKg"), }, + { .name = IOV("BDbEICAXnE"), .value = IOV("QoHzOqBwtOulvoXrMVgetfCXRSVHXDeeDdVQcgtqjAUrIIzL"), }, + { .name = IOV("NeHFhxZzvCcvlVWfJfzh"), .value = IOV("vHrPohLgwSrXWwnYWdzuDQyheaFZQDDRGFSqZTMpPbImhVnWyqzsEOrEUHFYcgikjmzsZaJJki"), }, + { .name = IOV("rbVFJzGFhbTfISftEAUv"), .value = IOV("hXylmmjTuiHOSPAISYsrCwTpQbrGzztgdLHATbDggsotxTaCUfZDnX"), }, + { .name = IOV("gnlgsC"), .value = IOV("whROob"), }, + { .name = IOV("g"), .value = IOV("LojkrPulkgjzJcJlatIiIU"), }, + { .name = IOV("QDVpSwDhX"), .value = IOV("khJkgbWKkOcGodlvoHCNLxgJRmjXIK"), }, + { .name = IOV("tJJXtUB"), .value = IOV("CLwEBZictmeoxaxwWFEiKeBlfkyyuCAFVTFOWdWFGivcbACYeQuntvnNDmPKUuFXw"), }, + { .name = IOV("kRjTyslLRppFwxIlFn"), .value = IOV("fbKkxflMtmIZmKUWWAtTQETITyIXqIxMsUGIaIIIeAFZdRcPCmDpldaShWGBzdFnQlyaYHunPAT"), }, + { .name = IOV("WlsYaZTDxBvCtDZx"), .value = IOV("AAQTqJlHXBsBkO"), }, + { .name = IOV("PAlzykBDco"), .value = IOV("QmnRFQBNQXCXqONjqirMOhhspDPwYtMuutmZPSslfeMEktLOslhIwXKuqzfeZyLeSqgHTyIIy"), }, + { .name = IOV("BXxKJLEusGk"), .value = IOV("AHFc"), }, + { .name = IOV("wxRsFgyzORS"), .value = IOV("VzPXNcuAMcVbsUdIbOcSYlTiBKWddPHbCBH"), }, + { .name = IOV("X"), .value = IOV("eXppadJguhkFSOMfkoNIASLvTnhqyBoFSNaeOviZUoAXPNr"), }, + { .name = IOV("HzKNdtawMbGK"), .value = IOV("XznjknDsIMxtcxRHDXmrIHYzDrPigIADtiocp"), }, + { .name = IOV("JPgPE"), .value = IOV("ikvSrfJRaXqXtfAKPqDUHcrkIFNgcyEnfJqWusDqCdTQFhtLpIYk"), }, + { .name = IOV("wVmeaRFKqNI"), .value = IOV("ELBvLlkwCkPuAVfHyrUEarXxoYYvxWOGcUMAfGZTUqOsHTvamuQfVZJiECGOUTQVnveL"), }, + { .name = IOV("bjtnHYZhs"), .value = IOV("aaDOHZmDqwOOpgoGSHSJnJuysLDsAJHyydkvIdxUpAJNtwDuainbiQgeVbidUc"), }, + { .name = IOV("WQWlVHB"), .value = IOV("DKkTTaicdVYSjTAenucpshueiwyFMIvWDnlrCxrjgFmPsbILNaZUqGqRzfhhYUSSgSwbzZ"), }, + { .name = IOV("PVC"), .value = IOV("bZsWoMbJSdcxwKhAmXmTGLRGACuJkEEffnHVsCngPWmRNEwaUATBgM"), }, + { .name = IOV("wAOpmgpR"), .value = IOV("sYPsmMnzQayzMvGDMsnYxafwgxgDhEigOaibiSMAIGONwrTRocFqLaUCbtaXBnBwteLJA"), }, + { .name = IOV("qPYQRglbaO"), .value = IOV("DAQXOOIifbybIcJldJCQYdChEFdtqzioIfRgNfvuyHGgYYvY"), }, + { .name = IOV("ZMHPgypSvnpuh"), .value = IOV("gNsrwjPsYWGHsPZMhwBOZuLizMmKsnLUINWXFsViGuJNSxYdHMcvRVYBRxfZgYAzqpsLv"), }, + { .name = IOV("IXyYZawAFquVad"), .value = IOV("tKAvApSShcBbSz"), }, + { .name = IOV("qXvDTOLA"), .value = IOV("vmJLnCtlBOsROtGdWklgzvlkO"), }, + { .name = IOV("rqW"), .value = IOV("cGI"), }, + { .name = IOV("HoJHjEAJnJPFDzKRisKG"), .value = IOV("xfsdtGwOMBDSiGtZwjdMgDJsUJITIKYeTXtJqiVkjPMYrKzVqnmPxGBLsVSFCUUbZoFThFlFn"), }, + { .name = IOV("PrieLdiEicsriBipqBKB"), .value = IOV("StUOwvgRqMgNrxQczTvcshHUKtXOSnMZgmNTxYDuSpmVZ"), }, + { .name = IOV("LoMRaZ"), .value = IOV("ctrjKLAaniyNYXhIfvksEMoxMgNLptNNhITiudFeXxPqbzw"), }, + { .name = IOV("GGfmx"), .value = IOV("KiROZUzkrfezX"), }, + { .name = IOV("pYvd"), .value = IOV("CcBRQwBFhFAybUQBiBMgCRfeiovxaWWqVQIVjvbHvfaEDbuHQOFtQmTBfEgHSeNIgGrbBVBd"), }, + { .name = IOV("xjWKjePRli"), .value = IOV("xyqQsikLseXBuXbKzLyRkQDhaWzMkNcqZds"), }, + { .name = IOV("Xtda"), .value = IOV("HbJtncEKXmTWJOuRVhbCgYVZewfBIWHpqQihQuortaB"), }, + { .name = IOV("YyGAMRrA"), .value = IOV("pggJIBArKAc"), }, + { .name = IOV("TwwMYWOonXmSKCE"), .value = IOV("SmjqhtbT"), }, + { .name = IOV("PWS"), .value = IOV("oKtAjYaCEvQaflCozKmMIrBfXwUMqZqNIaZnbddsKzEDjTn"), }, + { .name = IOV("yEgMJKvXcRBRYuMXw"), .value = IOV("udspTVWgPffRNKCtJDFcTnMKUmsjCTKkbYPEQOlvSSwWQQHiUKYoWGInSuSLlJfVVsNlnGzGmS"), }, + { .name = IOV("bZyprlEnLqmHhOBPTV"), .value = IOV("RRiOUpDaiEaAVHXBdbbMvVAAITinOYdhvUjgIf"), }, + { .name = IOV("hiBGHQGXexNnnlwy"), .value = IOV("VgomgKPCdamBFZnIGlmutvIXdtVHkUkOVGXhIJgsjANyChiKuHVHFWKATlXIqwKNwSBIsEYIj"), }, + { .name = IOV("TyQRLUIFlkuAvyEP"), .value = IOV("coIYvfyqmREmQYIpoywUBNzpzBdsLUTZdkGbAhuiajeffXHkYlpBzqlrbzDjQFIDjAbckaNvegyBi"), }, + { .name = IOV("HlGcgEnOl"), .value = IOV("EybTmZfVgWawVbgquoafFJsTyXLvUzyAWxdxj"), }, + { .name = IOV("josBm"), .value = IOV("CQrSOJFboxgiMhEQdiyakLAqTlWQjmTveJOaFwXvYXGILGHkTILTfZVtvqlAzAcBATltJOrMCAamvmPf"), }, + { .name = IOV("doAbXpFBNqhcjigLew"), .value = IOV("KcZG"), }, + { .name = IOV("yumNNhjqGTcF"), .value = IOV("IIpNHnQXKUgLoPbfbQAtSjGxEZtdwLZhvgGKSdKaLYEuDAY"), }, + { .name = IOV("tfWCrurXxthohfyLyO"), .value = IOV("DGpylbvUmpflemgHRvkqpglDBUZZxUWMBSLJwqajrPIgiaurqVazcEKZlrWiLAhxUpe"), }, + { .name = IOV("lFHflTW"), .value = IOV("CgTwYoSeavwxDDZKeLvclKbMvqnHLOROTyWCSUeQNjIdqzgLlmFuZIAMCZWEELaQLiNNuPxHKTAD"), }, + { .name = IOV("ombszR"), .value = IOV("kKnlluLUFCQcmtsSuoBphfpXFlkelFFhEORHplNBxXCnrVdvZCZmGsqYUJTZHqxISaLtXzQDBeM"), }, + { .name = IOV("eZXONfeJJbfF"), .value = IOV("KJTIZyUujYLFmqzhCUweujYLQjIPpAlxPjoxwkRWfPLvikBnBS"), }, + { .name = IOV("BpdrHeDSGpDneHR"), .value = IOV("tOfhVPYYxjhAtVmImpuSKsOlOmKQxVjldqQYN"), }, + { .name = IOV("NmbIXcyIUFIggHLe"), .value = IOV("EEuplsTHNOaZuEOQCkFEHJPgWHPSHLChjNtVPUTbRveuVfdhOpBqtPJcqTrxoBztWWnYKlLPOKgO"), }, + { .name = IOV("PuMH"), .value = IOV("rGoBazMQvQKKGboVKgEHFGAlrbUcWyfrXekObZaTlhBnCncdirnEqdSzkVluENojKcMxvLfvhdXJmM"), }, + { .name = IOV("bofShIzPujVfE"), .value = IOV("fzQLvqvAiUXoiNirPXyjacOHWCsjyjMGFPwQLYBrfYQVMYTqpMZCphQbTSXOkuOAnLgQkctQhnFgRS"), }, + { .name = IOV("LAqbV"), .value = IOV("I"), }, + { .name = IOV("mY"), .value = IOV("bCAnAggNUpgKfVBJkortecjXzwGYYTxGnWhc"), }, + { .name = IOV("MFX"), .value = IOV("IcqXQDAUUDljHHXoTrNqVnfCjrkdsUqabqJPaqSE"), }, + { .name = IOV("pqmaaN"), .value = IOV("VMijkReBhNaMeAcRaIeEDNXsqDzNHzxwykhbHanvxnHsbhNzyUkHjwvmBpoETJSwrhN"), }, + { .name = IOV("GzBVT"), .value = IOV("ochABjoHYOxxkaVivgzjnuvFUnUZQXzBEAguVKT"), }, + { .name = IOV("DXUTyUCu"), .value = IOV("j"), }, + { .name = IOV("MoJwGFEOTanYqBMTK"), .value = IOV("qZqngBRtGGYhIDGMTNCbmZRnSXyjeRZYzaNjjrxavUjxTfDGsnPYIn"), }, + { .name = IOV("SEQXC"), .value = IOV("oqrUFfaKkUbnDFFbxRdr"), }, + { .name = IOV("aUcEwfKWLnQrDmbw"), .value = IOV("FJGvBnLQKIWYLmHCrKaxSJEMAmRIzBCSzGhUTfdCommyKVifWRaWYddWWvNYbcFitduUnKtDEDxxqISc"), }, + { .name = IOV("kAYwyNmNNRRLqC"), .value = IOV("TTwhgAYmgtqwDHhPHvLThRcIzbXkRqqxKEQmvCiPSQAZXtSWD"), }, + { .name = IOV("nFxzkWEIUvWi"), .value = IOV("ugxWfRlgvMhlQgVoxnlBAQPbEMEz"), }, + { .name = IOV("wljTChEeIncSiIv"), .value = IOV("KdiweoMRLLGBOrtBAbNTkIZHJbnPTZTkWjfcUJVkHFFT"), }, + { .name = IOV("sPJTSrFjzTjiItjC"), .value = IOV("BrM"), }, + { .name = IOV("axTouFoDsDGwBOTnpzL"), .value = IOV("oCPwXTiqZXrSooHawTIhGiKkariunjFUTWvOsOvWqfpXRokQCcAZXMepFSKnyywGXpcSYfX"), }, + { .name = IOV("cuFYmUnaFbaHreObBIFw"), .value = IOV("EpMyYGDNWoxJnGZejEziewBSNIQREiawIyiejuLOhGVJViLmcHStCYZvSPk"), }, + { .name = IOV("DGWDWi"), .value = IOV("jguRqmWPKYxMBrgmrAtEyqiXtxztlRmsqBJlqHbx"), }, + { .name = IOV("i"), .value = IOV("PeXujKWceRfafUvSmOfTSrBMoAZDOkUzZWJBJNHHvijgObqxKQeXYLl"), }, + { .name = IOV("eXhkXFdQsG"), .value = IOV("ezIAJwabtMcIAeCphhNqqvWVjouqrtevNlHnxxGncPVmQnAqfwXBmYupcNrMHjgCpcFdUQEiLWCu"), }, + { .name = IOV("PHjodgHmLRNoFrCangu"), .value = IOV("SbITusmjsm"), }, + { .name = IOV("wpnuQIgY"), .value = IOV("mWkhvJXdpnXOAaqrivLIdOmSyKHXphLJjqPzspDZKTgnhAmVwymnwyGAeKGTpkrGXCXEfpbo"), }, + { .name = IOV("LhJi"), .value = IOV("ZwxqfHsetmwUGlUXWKmmiwi"), }, + { .name = IOV("wlAjpCVjTF"), .value = IOV("EcQvJYgkPHvItPkznHcLMfQzrLUqmldRnzpyjKHHIQfHAPmvskpvisrSbuHUxvcMenv"), }, + { .name = IOV("GnOuIpiOd"), .value = IOV("VuEiDCyAKIH"), }, + { .name = IOV("qscgYJ"), .value = IOV("QRsVvLKmLRCnZBtlNBXoXfpepYldSAmGWtLmYiYFjlJcPGIfERfR"), }, + { .name = IOV("sWaEdiuIEgW"), .value = IOV("VjlMbVEHSHywZrQrKhFKmJOnjObTpuPqIqDbKvGbyXCYAsiQHajKLlvM"), }, + { .name = IOV("AaexYb"), .value = IOV("ERvVbmdCebgpcrvkYxh"), }, + { .name = IOV("TFlkoMcQVgZaZp"), .value = IOV("eAZHR"), }, + { .name = IOV("rxboY"), .value = IOV("xAppjKQJVAAsaFrMtFoK"), }, + { .name = IOV("GQiAfSemCN"), .value = IOV("ZavKizgJxezQeqCtervQDwDlMxhmLffVQ"), }, + { .name = IOV("iDtOlYLTdoeAnfXB"), .value = IOV("SLCxVnVXncxYxvbFFKkSiPxWxeaiVTrHDghoKrDKnZCKbxGHOKFoPmqXSxZmtDBDnCttjqYgwTFuKkj"), }, + { .name = IOV("YUJWc"), .value = IOV("YZbYWVADwNhdcObVPMnvNESHNFxVUOvUAHvaIJOFnPfrtpWoDFMHqCgvcwvuYSFCreTpBP"), }, + { .name = IOV("RQLYAa"), .value = IOV("MRCwSLHLwqVbgAYVqjlfaANccq"), }, + { .name = IOV("WrSEmHn"), .value = IOV("ZQSexaSACHnoMHirswgkmTIdbJDhXmtbhBTRJGhS"), }, + { .name = IOV("tSMqdwQDqeR"), .value = IOV("gYKItbxJkT"), }, + { .name = IOV("RZDl"), .value = IOV("JURVoeqJTrjpApgogTxktTFUmBoDbmgQFUIOdadhuVBdnuBEPgQefcYOGUacedeShuZsufzcgEiQaU"), }, + { .name = IOV("DXgvrCuLGs"), .value = IOV("lcgLhRMehKdIeFAyiAdvtFGiMGfbxUWXrBLFCycYmTLkOFlbBED"), }, + { .name = IOV("l"), .value = IOV("ABgZIDcFtqifszpFAQwDfNddFnhhTdMgaSsQjXoemKfILNvLSzWulQzdgvz"), }, + { .name = IOV("GtYpoMFCcD"), .value = IOV("USezumCWlVTiAPIQieZMzHLuLDtQGJGXZQBBkpNcwlNJXQvyUziKxJXKJLvnNkvalswy"), }, + { .name = IOV("YSoWgwrlCYMlvf"), .value = IOV("TRlJOKvxDyxHEFjecoAqEHFBgEYsvlOPwRNWtOxPCYOzTOACkSdUsshwxjHDx"), }, + { .name = IOV("f"), .value = IOV("jgdRzzHKWkvtinBOoZGq"), }, + { .name = IOV("bKzWPigy"), .value = IOV("DpMKoIIGtuvLDoBLlNvwXZWOaejHGIOwBjN"), }, + { .name = IOV("xUMtswRqo"), .value = IOV("KfJMplvCPRNqJmGmoWwIzyaxCRRAAvtkbIYoDyqlsXAZjqtriv"), }, + { .name = IOV("Ae"), .value = IOV("SolwzhZprdlKtbpAxgfzWyuEXnIffMAzcIvULEaYgrCDGBczyufpuI"), }, + { .name = IOV("RWBMuo"), .value = IOV("rnffAkGyNENUKqvHfJjuVbgJNUAENjwokKAJlScXUyxUdBMiAdKFvJeU"), }, + { .name = IOV("pAaIwOPM"), .value = IOV("kiAoFtxVYqXUIRY"), }, + { .name = IOV("LncErcjkTaPjR"), .value = IOV("YKojZtRZOupsTTYIGSJpbyCGPBOCLffdaRQBLDeWWmKGZkcJUmtHeoLCyeeXtwO"), }, + { .name = IOV("FXPCXFAjuRXDuQUSJrr"), .value = IOV("lPqNHBLWkUKqNHdVPaAGYbCrzhSQbUxaTWPqpONRmJDnuDhdAsPvW"), }, + { .name = IOV("m"), .value = IOV("ePCdBXRBhiWuMWXlJtJBXyrGfgolslOdEyvDALAKBvaLp"), }, + { .name = IOV("htefACmQwAsGCQTKdl"), .value = IOV("CyUlrYorizpvFTZSjJkoBxUHXkIiAmuRGSjmEWuIpGIoWQKuWVebIhKHMfTEePHhSq"), }, + { .name = IOV("ED"), .value = IOV("AzBFGVcVLQwPucZUoffeBqOJs"), }, + { .name = IOV("jtoZkEUsEBZ"), .value = IOV("MmpkGqkUtvJoCvRfOJftUaQRMtTDywSRYjDoSdUveCymfOqyTlNhIKmltqXCdhvpuPSUaB"), }, + { .name = IOV("KnYYzqbN"), .value = IOV("byaSsCaGEanbjdXSowPbCrMMFwrydpwXGgilszfTItWFnUrykgOSelRfshjLLgfjXfrsiqgChqpwHkWN"), }, + { .name = IOV("fCJhX"), .value = IOV("oHTdMwjbhdSNkaoasdFxUeaTS"), }, + { .name = IOV("zZYXFhoeoxPIQidPEjCx"), .value = IOV("QiLTzjESvIWJsfHgAaDQMGiqtcSjNUBChiZ"), }, + { .name = IOV("vaNbMMKq"), .value = IOV("sflyNO"), }, + { .name = IOV("LUADRYdoXmECF"), .value = IOV("aPqEXKLCVwFPq"), }, + { .name = IOV("VgwfKdNsd"), .value = IOV("jSRPeTKNyPnfyjkypWFcLEtcMZENsLVggQAOaSzBwMHhmjZY"), }, + { .name = IOV("qgG"), .value = IOV("CdlcZzguUkdFnZaNwTjDjaIqhFOB"), }, + { .name = IOV("gwZaGsNrGpxBwaI"), .value = IOV("UK"), }, + { .name = IOV("KHTmygwsI"), .value = IOV("ddpNGvsjmJVhzJXBKtwAisVlgieDSUBSBAjhdqyLSSqzNLgpDAINnPUFiDhRqZFiPtOQSBoIdVgJYTFH"), }, + { .name = IOV("usJFEibewCPeNKykNsrc"), .value = IOV("cFyIdhGGKNVBezwGnEHjCbefPUzoxTDcVOWAMSIKYZaAACqBFOHmWmIQBltiSUeoRQlIykRC"), }, + { .name = IOV("TPIm"), .value = IOV("KUEVjnKYKrJvAIkfkXOaxxPDikKXiwtcYaEUMmMjIINexIimvzzobUIEkoymD"), }, + { .name = IOV("QC"), .value = IOV("UucJUtaQoxTqnqVzTqHtKuewGxTqbNODQBrYfrXhPUfZXEGAPPwiofDsSxyNzzRZqERv"), }, + { .name = IOV("MrKGOIZSHBmi"), .value = IOV("RvjeDWEFqurSWxFNBltMnchrjg"), }, + { .name = IOV("btkGvTMDuxMjyagPf"), .value = IOV("CvpvYxintPlTjMvEVBIQyXvQYqe"), }, + { .name = IOV("KRtRstkZoVkB"), .value = IOV("OmmdyhdDcawcEqifrCAk"), }, + { .name = IOV("rpCNYkzrHHKauZldhjR"), .value = IOV("ItaIPopqIyHWCFBZQDhsrVXHxJxy"), }, + { .name = IOV("oKFqsbKYGMbhfOAbrXz"), .value = IOV("aKwvzXsjARkBrCPBGIqGpWlppGvDJdoFAThcqauMSUeCYK"), }, + { .name = IOV("vwdMoDHMqu"), .value = IOV("XdFuLTJqwIcXxpZmUDCPzvVml"), }, + { .name = IOV("tUPkcFuzRaBj"), .value = IOV("UoMkgFuYWVVnEXgJyFjzuHKJQFiRKfJEZuOloOlmbIOvDX"), }, + { .name = IOV("OfnZPMSDtUbrKlZ"), .value = IOV("PVMhBiiOhhEndb"), }, + { .name = IOV("fZIL"), .value = IOV("WyGAqEOsAhXmEVmXjOOHxfYygLEbqYN"), }, + { .name = IOV("Qt"), .value = IOV("gUPxIKJcwJurMarZBMyUNZEEcmQfvUrGZHhvYqHCyaNH"), }, + { .name = IOV("boGa"), .value = IOV("tzURfeUYUDkHnvHLxFLpbwuBwCIVsTGVWdqlHUwcvtzZgJsxbMRaRDwevUNnmFyqfGEwyvqCPEg"), }, + { .name = IOV("GEadjhowrvad"), .value = IOV("APiTKXzrpGpSmdgvJnTrey"), }, + { .name = IOV("YeRUtaGH"), .value = IOV("beYkO"), }, + { .name = IOV("qgmzInhtrKbrKoiBK"), .value = IOV("wPTDgvCKpqDiPbaFHArgIQYsmsdQWuERcrhJyRWtnKrFhgsDbxw"), }, + { .name = IOV("Un"), .value = IOV("XfSxIJMKTRrdUhstNwkyXKccZYyoCPrFLTkc"), }, + { .name = IOV("iCrTYsjqFXTHCLEgdwZV"), .value = IOV("eexUOiCamxzgqGQAhLDMXOPJozMZZSNqBATQKwoWMInHWmXFVefpuLyXDBAmFcy"), }, + { .name = IOV("uFGU"), .value = IOV("mpGVlLVkobDDQPjTLEenJdynfcxnKVHmvzowPVljDCpvCOc"), }, + { .name = IOV("nNvzdwXJiS"), .value = IOV("LpRcSb"), }, + { .name = IOV("sPBOYfjYAXqmYDHknMpE"), .value = IOV("pcaHfWCuMquKxiXtoXaOhjnSlyraC"), }, + { .name = IOV("FdjqCCerGBZflCsquBM"), .value = IOV("bxfkhMWlUIuGxfJOiPbaIcTwFxizuTslTNLJOBqn"), }, + { .name = IOV("z"), .value = IOV("HitjogxDLOGYjWIiBDrJdSONdFwdrLWMsvcnRb"), }, + { .name = IOV("cAvLsDdQSItoR"), .value = IOV("njiZsomdyNsJsgIpg"), }, + { .name = IOV("I"), .value = IOV("vkRpcvQOVfLuXmuRE"), }, + { .name = IOV("Vgq"), .value = IOV("uguNLdYsjrqqQhgDFszCYifUUQGgYxIzIGqsk"), }, + { .name = IOV("twS"), .value = IOV("iLPQJMOnDBsdxwYcegkeinczBypIsvgxfejImGPXMMalAwS"), }, + { .name = IOV("rWUmEs"), .value = IOV("YCgdppB"), }, + { .name = IOV("grrGeXKPUqVltjkr"), .value = IOV("WQdhMUzePROAWCzCMiPjdpmGJBryznPKufhScbfVtWSJErBnnSOHhcSfmYPNYQFuNC"), }, + { .name = IOV("BMFrnU"), .value = IOV("KLufLbmiionOhJCQwcVZcZeMRpGIOhHKjWBbfKrJERrLqoePeFnLMqvQIgiPACwnUDpGuqvZ"), }, + { .name = IOV("vBXzhZ"), .value = IOV("AfHfoSrNasgxriWcaGwROAgqQySzLFstApQYIgpCUyNQZmWAjwjEzZGmLKUFGmWvfzaSIBm"), }, + { .name = IOV("ioPPGJUQsI"), .value = IOV("bJcTMXDbrbCdeGJUvOylUiyFMfJwRunXA"), }, + { .name = IOV("W"), .value = IOV("dhOVlhijj"), }, + { .name = IOV("zkpIhKQiUjAgRlpmCX"), .value = IOV("TlYtUJYjEViYmYIROPxVVMfFiMSZDbylQPqXNtJFgTBdM"), }, + { .name = IOV("vPzlTyvqi"), .value = IOV("NbEfmGJEVgYglSwdEyHReaPDWATUcLcxQSJxBIvxBisZugde"), }, + { .name = IOV("IOWofBioxlKpstzNyZG"), .value = IOV("awgyfHHMQdmDIRHLLpdBECFhnaLEzOOzdyIboaqAqpwPUpvUcCnYTLlZBqeriFnZoFZnSHXlDJFr"), }, + { .name = IOV("cNaDeKqCbhT"), .value = IOV("fGrEktjxGZZHJO"), }, + { .name = IOV("bwqjviNoLgILkAi"), .value = IOV("htNZnmbahCWpZYnzccBagRpnGHOvqQgcSZbtwtraWTJ"), }, + { .name = IOV("DXsBDMlLNrIoQ"), .value = IOV("QnabNNfhVHeHiwRpBqMfaDeLMuQcsuDSoKTEeiXYzBKCFAuYERFjop"), }, + { .name = IOV("XptEFSE"), .value = IOV("AQiYgYRVDtPaYDeejRvThlqMiCCjphvxCuhvPIp"), }, + { .name = IOV("wC"), .value = IOV("MzwlxKWvEnzpGoWFUEurwtouKscVwWGtdNNuqzrcalejJl"), }, + { .name = IOV("ZdpOym"), .value = IOV("GLrTPwylNMlqbCVfxPZPumnBxbfgIJSEfRUYyhmowTLpFRexdmWlLia"), }, + { .name = IOV("mtCVIlPsKbOBAQlG"), .value = IOV("ZRKycpl"), }, + { .name = IOV("dsLRpeYVhRXaG"), .value = IOV("WrZiksNUWOcKBuUQFfWBOoghAMlxSIAdhyafkeCZUtQztRWHTsjMI"), }, + { .name = IOV("UHLcjixs"), .value = IOV("RUQOqhHSLvZCscikKhnOCwppjpcQWtkcIWXFa"), }, + { .name = IOV("VLjW"), .value = IOV("QAHKOHSBlJvUuUAfXqzFmveXJeT"), }, + { .name = IOV("HwjdVwhPZMWdXdl"), .value = IOV("dpvhknoKzILYrNLrZKmlrl"), }, + { .name = IOV("AWnsYMsfi"), .value = IOV("lEkqGrQsZcXjcViSvtRFoMGQrEtRrHmaxmoMOzNTQkdWZYqWSxauSvBL"), }, + { .name = IOV("zNxIfiWMKJEPs"), .value = IOV("MkcfnKOCUb"), }, + { .name = IOV("YXpasGAcuHhufy"), .value = IOV("kPjnOwOiPKjksJPTJXOxtebpmIcWwuGinTzJrLbVsyxXXaOsYkDkRaEOGtbkNQ"), }, + { .name = IOV("UpwGaIo"), .value = IOV("ExYDrfDUeIMCsYRXUw"), }, + { .name = IOV("XDwJFGalp"), .value = IOV("LYbXGJRLVBdiQnyyJqcfXGRQsuqfzglZTTeCMEVCgpnxOOGFHDOgLqmpOmPeFXZSlBxWF"), }, + { .name = IOV("VH"), .value = IOV("PEhrCKjrmtKAebsgBCPvetUKOYidhtmSuIPYT"), }, + { .name = IOV("IlUfhajraswuzWf"), .value = IOV("hmidzefZzkiYyIeMBoTddzBtxFmwniucQCyyutESqIIAAaoCCJdlewbETYdVuFLkYRkWFcVEW"), }, + { .name = IOV("qvQuqNatHlQU"), .value = IOV("OtTxaUFTrVCSQHRYoNnDqmXXhRvlZCrwGqVUFyfRseUZWnhmYUWailOaxGrucOPirvWFChnykYEjdwWz"), }, + { .name = IOV("CSlVPeDEuiKG"), .value = IOV("SYuTOhoZdpFkmIJpqAVfUmJuScPYWZi"), }, + { .name = IOV("GAjxyKfXVy"), .value = IOV("NdWDBRGyRDBQhDXTYqNtES"), }, + { .name = IOV("oybLrG"), .value = IOV("qLxhdyJOiPAmUkaoebNdFOOJjzxMjLFRKlxcUHeTLVX"), }, + { .name = IOV("oKsOjBusdIdAzEzL"), .value = IOV("NSGwabebEKkuyKLIPyYuQnOtFbNlYeVFWwvpwwJDyowMAmDPGqaihEZnCjdiLmKTmrtW"), }, + { .name = IOV("KRVOiTwCrmrsMnMw"), .value = IOV("bJLudqgmrSFNZGNlJKqZUhoKdMsMFCDJDrrVMcqAurDCGnEubWJpOYlgDdKIDKCHrUjBjFHStlWVrKJ"), }, + { .name = IOV("iWReoFOcjqbHZtBVZ"), .value = IOV("XCSIPWKcngUcfOaVFKHeYU"), }, + { .name = IOV("jj"), .value = IOV("iqSICxRjQfstpemuGKOhnelzLNGMs"), }, + { .name = IOV("he"), .value = IOV("gKVwprFYNhrflTLYeeGjMaXdpsbKpjjVvLLThwjtxOLxtFczgyOvjjfqp"), }, + { .name = IOV("kdvJVEtkXuKAA"), .value = IOV("cjOmSioKHyuJoF"), }, + { .name = IOV("gMjs"), .value = IOV("IosRASdiIdGJNiyQeCFAmJacqflgEPKijIVRuAJz"), }, + { .name = IOV("Ultf"), .value = IOV("aauyMejbCyVfAhPwpGypXbTQGztKpZUG"), }, + { .name = IOV("feuPQfdU"), .value = IOV("xWEEIqgZJQkkQAEGomjIYrYXIpPtaVVQHtkaBzRrcSmkyCTVs"), }, + { .name = IOV("lRG"), .value = IOV("fmmcqacyGlHaGMsBIbowurqebKdXxlaAMKftfRC"), }, + { .name = IOV("clLhXhxewoehDhlgE"), .value = IOV("KWOwvFfDGzdtSfAfzaQkXzwFvGMRVRqIjW"), }, + { .name = IOV("uUAVhEEpC"), .value = IOV("YSyKwtmYDZg"), }, + { .name = IOV("lTW"), .value = IOV("lVVbdxIgZWpmDKhoUOjHZzcrKpTYHRvGOHSlnVTS"), }, + { .name = IOV("qZDdtMTdJeCciYfSmo"), .value = IOV("mM"), }, + { .name = IOV("wInroMOAtJNKzorh"), .value = IOV("nUuMbVofgUQdKcRqpKpEQsSnThZAleGGPpatXDaacIWvHlxyQKGZbHStVJLwRUxi"), }, + { .name = IOV("ewIxlhySyseWg"), .value = IOV("IrUZHZDidlKZxGfgETRmNLXkHT"), }, + { .name = IOV("iMasHhrL"), .value = IOV("aKVFFeAKUbTOaVhzRciBpEwyjvfZwOIKljWQpKCjTn"), }, + { .name = IOV("npUEhBxPQRLHQwn"), .value = IOV("vsdwpGQhhcEjvihrPTx"), }, + { .name = IOV("bXBc"), .value = IOV("xujNvqoIdhUPjXK"), }, + { .name = IOV("Z"), .value = IOV("YoUrxFbQKYNFBdekTHbAdrGvZIeNqYKAGvQVS"), }, + { .name = IOV("bjZYozoJKeMlkE"), .value = IOV("JvwUwul"), }, + { .name = IOV("UAmiAvxBYuV"), .value = IOV("zpKWEZXTiNmWhrJewJDyohSueWaywjqtiDJLSRFNsmrcoKrvZSKpsrywAYtKuSmldawenEIShIcv"), }, + { .name = IOV("Th"), .value = IOV("IZfJsmhIPxCWOduhHdFcsjXcLYmyMXITNjMp"), }, + { .name = IOV("lGDeBryAblDmNOTtFNQz"), .value = IOV("vbKrypeBvmtbwwyNTiPvGfLFpvtAbMSslujqWcQilwMmOgmXanZysEVjTZ"), }, + { .name = IOV("fpmThxhyQhHupd"), .value = IOV("vUxZfwDaxyMnRgtJVnJKJMkyyctPjOQTxHLfw"), }, + { .name = IOV("buLxtHOmfyPpaOtQXPqB"), .value = IOV("FsxkBKecHSwKmzalIOvwcMgxaqXRayta"), }, + { .name = IOV("pBTE"), .value = IOV("NgzFWJUPOjKEZQmEXQKhJzagxu"), }, + { .name = IOV("Arpd"), .value = IOV("oWImpvNIzVYYzazwKiHDJP"), }, + { .name = IOV("QgKLNuSAvZZGDp"), .value = IOV("pVjnEVqKVzRfhwjHrKbspPXbELFDDyRGfeBNGd"), }, + { .name = IOV("CoDIi"), .value = IOV("JjvKYPTZTCwIPqQAQhJpWSLgnwVYuXIYCItVGrPiowsEnOsAoPfiUId"), }, + { .name = IOV("hFtGwQNsdxaCnnzutYn"), .value = IOV("UBrHnBNGUhIRrntIkHNORsVCePdBMZZjVBhbPhKjhnJMvDhWyLMCdznUkQlEzwdzUVGIxmU"), }, + { .name = IOV("NjmCfqcJQnEY"), .value = IOV("knyjbqZYrrYZqSe"), }, + { .name = IOV("SYZMMbmYLDmmrgzB"), .value = IOV("bNIZdUFOohPYx"), }, + { .name = IOV("bdHqkEQelL"), .value = IOV("JXLP"), }, + { .name = IOV("rlmcpytPrR"), .value = IOV("qJmxifjwx"), }, + { .name = IOV("xc"), .value = IOV("hAgMTmdr"), }, + { .name = IOV("whoKkUq"), .value = IOV("dHtMWNZXBoSWrYfaznAeggClSCahjFvFRIXdifQrsJrfygxXaTfeFUlmuvgQeXFCt"), }, + { .name = IOV("OYFRLhgOhhRdUskUfIN"), .value = IOV("ZQOvRUtrNjMC"), }, + { .name = IOV("pMtPKBeXnJTF"), .value = IOV("WSJZsEznVqKPBNPXydiEVfearL"), }, + { .name = IOV("YcIxiQhhxSzMx"), .value = IOV("gx"), }, + { .name = IOV("OeMkTXkKBWM"), .value = IOV("xfmFoeJDQqyTwlRiXjNVTDlFeZVJRRtAaUIrJkSBBSgTYqbuThfhLwFkpeSRqdyPFAQIjrUvRbflH"), }, + { .name = IOV("oIsbMbEiVMDaRrtlXm"), .value = IOV("BFJuVHuixdmikGcEhObREJMKnRMhtAHORfXkxBKIIZgVPgAKprMIbqODRLEJeKxjmLHmLuh"), }, + { .name = IOV("QrRuDCGGHrONQENZ"), .value = IOV("JX"), }, + { .name = IOV("HZnuFAhSeaEBAL"), .value = IOV("PvmDpKpwpwPbyxVhxnlgrkSwyTGzoLhDltQ"), }, + { .name = IOV("CGRv"), .value = IOV("DQePABJxTEOrroHBcmvTzzfkbHDJMZSBYyeECaDnrIRUvNDPMLKtVyjUwHJen"), }, + { .name = IOV("yJnWIdWVmV"), .value = IOV("xFQq"), }, + { .name = IOV("hp"), .value = IOV("TYpefrvClILObrEiBRVGsfWDIsBaK"), }, + { .name = IOV("hhTlYHUVbFWKPOEgjhRA"), .value = IOV("xwBYAfyXEGdIWtHddNLovuhMgUvgOpVmQQPKOoGqUtnChPtssjQdwDoLnBKXdUgQakxqSYIvljvJ"), }, + { .name = IOV("vWXvzPUwKNf"), .value = IOV("xeiZnZ"), }, + { .name = IOV("HsQvPtT"), .value = IOV("JZikbGFaVHGIDnDGCKmcavaJFcmqb"), }, + { .name = IOV("JIXyUEZEzZdwLGTVOwP"), .value = IOV("l"), }, + { .name = IOV("yCntxorXQS"), .value = IOV("TSFwQxAXCukemiQoHskDwyLKveALqZKqBzBhBrWyOwGfJpxazPlrZDYJlSHpis"), }, + { .name = IOV("MeNPibwelrIGQ"), .value = IOV("jOVFoebK"), }, + { .name = IOV("cmUxefJbcYvGQhWFhkQ"), .value = IOV("MfvMcTeHEAJmMvoSVUvYMbBYsnOZNpdZyp"), }, + { .name = IOV("iETu"), .value = IOV("TBXqRouQJeyFJqlFemzHlHDMpCge"), }, + { .name = IOV("xpPGCiLaJbijUBTkkRL"), .value = IOV("HXfYwnLjdweWYLTsrTeefxoUENto"), }, + { .name = IOV("h"), .value = IOV("fMOFkn"), }, + { .name = IOV("JZvsuKCqLS"), .value = IOV("RLcIiqyiXDSBbZbpjcwJxEdffKGsJcvjiXAYMDVkQMAuwRJAiFkkUzPvhjzu"), }, + { .name = IOV("e"), .value = IOV("s"), }, + { .name = IOV("MwGaCVCTguoZQ"), .value = IOV("mJLFWHZeBaHpjwynEntyEnykulOIEjmvtugruamTELPaicsTlFfvviVjqAtnZlvYsnevkb"), }, + { .name = IOV("sNnFzNyOCeWhOIkvLM"), .value = IOV("pqImTwJQPKHtwUEFpSjDZSJeHvheVkVfkPTkILVsdQtqapIsBpXRTpktpSyCzxnUCoTRQKt"), }, + { .name = IOV("eWkLXEajBGEF"), .value = IOV("uImPeotGwbTYtPojdvuPMkhwZcYtQYJUyfVesaZTLuYiSaiwwydudcbekaYdUvSCwuJFsAwxfiK"), }, + { .name = IOV("NLNtDxhgB"), .value = IOV("SuopmTlaX"), }, + { .name = IOV("wpoJLuuxR"), .value = IOV("kvqhgvRJJIhzymKMxJnoLCSujRBLUQx"), }, + { .name = IOV("edudnmDXsxM"), .value = IOV("xp"), }, + { .name = IOV("zasrYsf"), .value = IOV("HOKYJwyzRkACDxbhsLnqzytP"), }, + { .name = IOV("jEWoXcONeuvPFuZ"), .value = IOV("yFlx"), }, + { .name = IOV("DJUdjBR"), .value = IOV("dCmswlOYznrwPJMuXlKEvgZaHPEHmQxAcENzEgJNU"), }, + { .name = IOV("ViyvfYSlJPBMs"), .value = IOV("tYVeAPSmJhdNNLbDqYmDJeUNzPzYMwasAZEBiezosKFRFeggcz"), }, + { .name = IOV("PHLlnRbpqldHmt"), .value = IOV("iNaPlcYijVMwS"), }, + { .name = IOV("dIqxSMVkEhgY"), .value = IOV("lQDPrxMdcpCsrnECMibpnxNF"), }, + { .name = IOV("bqjWqDxKhFSvwMhfJIA"), .value = IOV("oOfTSapzbHKepmzRBuRnfsPVYYWHrlOxyoJLpTWHmSezJZUrgFEgRFZOpYEVK"), }, + { .name = IOV("uIDoUqmtWLtnxftkJ"), .value = IOV("iufsorCyQsiAcKVuHeIzglYoPFkgkDzwBNBZyUehSYyeVdOVDMDosJFQl"), }, + { .name = IOV("JxOVqNXvCXDzTV"), .value = IOV("bCbECQEQZpgfxHUURWIqVkElghYzO"), }, + { .name = IOV("EoPL"), .value = IOV("EsieWdDKnwvvsLM"), }, + { .name = IOV("BHz"), .value = IOV("tnDBFAFXhPoCFkLBbTGvDGtyrMnQIMgCZeFPYRHlLRjtYjKOnYNSknWqZysWnqHgBpVACUDslctX"), }, + { .name = IOV("KiQhdfYEM"), .value = IOV("QlUmoPDMyoJEPLIgSMQtI"), }, + { .name = IOV("kpTjvUdXOd"), .value = IOV("OWcVpNCsQEaaeotTQbjpnIHpfpZwwvTysEBZXcIbnsEckpvlhWDfHBVXoEKdGNZ"), }, + { .name = IOV("CGo"), .value = IOV("rZKLFaJldubWcspVawtukhwSxaaGX"), }, + { .name = IOV("PVJHKja"), .value = IOV("zIBXZGAcOuuLrSUtdHVlmaDQhiKtRDafftwgElaCHFZveGgRjkaYswICufkLRtfsuzOUFxNWJFwE"), }, + { .name = IOV("ZrSaScn"), .value = IOV("LfkyExCUQhtoBrzzQQjRj"), }, + { .name = IOV("fd"), .value = IOV("iAUSKNhIMOggxpmlIyIOHNjmIyyWfvqNSFmi"), }, + { .name = IOV("Euw"), .value = IOV("maLBQfRJgMAlbYpFbLkZLIqJWNoseXtALZbjWxJiAk"), }, + { .name = IOV("UbbHVhBphY"), .value = IOV("dltppwWBrKcPjWB"), }, + { .name = IOV("BkzinrXqe"), .value = IOV("wrVcqlgmDfVOzqbiZlHEfKTgThvXcfaPxZFHbTQXhwOIrrZnSMTubiRSrjMkS"), }, + { .name = IOV("ekUGWgQDONBcLpEQCLr"), .value = IOV("gQlZhKzBZpvQrjhnTfEIObaWmLE"), }, + { .name = IOV("iYjRdDLjrBDLib"), .value = IOV("szzuidNWLjpndnjLXeEHljpMJTJoAZVLQorWieFVoiIrYZrEs"), }, + { .name = IOV("VJwFJPMGIjMTBf"), .value = IOV("axGgozKzDEZLRUkOoGuEmAHlEDgAILOhEcYhbcfFtMCGNlNldZOcRyKOxiAqMkVpCIBNzDrYdrZlDhg"), }, + { .name = IOV("gbJgOb"), .value = IOV("doXMXfVeIbunnzEYgNDsnywTyZwaIJyAqNfTjFMtkZgwhyKrRVwIeSKHiSNMeNEeZZggWQnPK"), }, + { .name = IOV("yXPccfVL"), .value = IOV("boB"), }, + { .name = IOV("a"), .value = IOV("Hf"), }, + { .name = IOV("aD"), .value = IOV("GhoGerKRSIxbrTYadmsyqMWhRZWyXasToBHadwELYXqJYdqIQRXsbSfaTlIoVfzRzpKtEwXOt"), }, + { .name = IOV("ThDytZNnJQ"), .value = IOV("htqelIcCFGMHMejVABmYEfZpYvfjkixYgUp"), }, + { .name = IOV("mJbu"), .value = IOV("PVZthmUfcjDqvUdNmbsCTQMAWjKbuQwGuuEkxrIVyShHTxDiCJjxXJFGYpAyhXsirunmwqQkT"), }, + { .name = IOV("BAKvZAyaLPIvpDMQW"), .value = IOV("yEmuuqLlNQqVDZRMKMzRFQXpYmoPZytvmgczjKKOW"), }, + { .name = IOV("jmvPI"), .value = IOV("zkzjbzzgotCwJqBdUSzYrGetJEpuebAUFpoZGNcjyeAZAjqbgCKXofpgxCYSWZWPZMRkODu"), }, + { .name = IOV("BZWKh"), .value = IOV("ougqIzmRzkKpvdCjnMZZiFEGQSYpUzLUCrcWLJRchZwFnqPlMwbzLMbAanCY"), }, + { .name = IOV("RZyqZBXTWKni"), .value = IOV("sJRicBwShlSeDFgihSiZtAHseLVFcIlkvtxfrgsu"), }, + { .name = IOV("OsBmfHYmCIertBi"), .value = IOV("XSLYudYUfsiSr"), }, + { .name = IOV("njwafvvdYBFhSc"), .value = IOV("ExEGydcByKPViIpgjmpQaUcWdNBfWXEyldFen"), }, + { .name = IOV("XjccCdVpGYm"), .value = IOV("tutgTbVafbKzGBZkQCgAcPeDKGEdPfnHlfacduoMwtqxfgHJ"), }, + { .name = IOV("OXgXRkgH"), .value = IOV("cWNerFRyaBAMawDAWCWeHiVFxEQxZrllyVwZSpTGwlUIJNxXRAPkptHTkJxuSKugyWhalYWhYjKoh"), }, + { .name = IOV("kToIsonYBFvt"), .value = IOV("PJPSEpAMslPgDIEPRFuPgxOpNKqgrmkWUIwCsXLtLLzF"), }, + { .name = IOV("FJsHzHsLFyiz"), .value = IOV("fGikfVtoGpc"), }, + { .name = IOV("atMbsJQzDiXqA"), .value = IOV("juwXpuPAqIYsfuzJnakphDUNQHSOubyk"), }, + { .name = IOV("rnqgQDwwFW"), .value = IOV("ROJmWWWigiGMrVcmzAmThWLsorJlHzTtrpPlxXKMBJJzKpOlCyxWHfqQS"), }, + { .name = IOV("BpBHPwFoKksqbW"), .value = IOV("oMLZsUgOzdpUsKiUCWGPARXExmsEUEUKVwKNdvxPAVTrqRIsfxzjqeqvwRwDcOPdHgIRLxcY"), }, + { .name = IOV("mxmmgbWxhQ"), .value = IOV("hNmEELDWdaSjRDbBbPrEaTzojip"), }, + { .name = IOV("KcElxORhLGKz"), .value = IOV("VKPLqYIDgRhATyCUnpDBiYCqNIorQzuubBYdhUfrVRyzlcILyCxeGfSsKaKmtTHkCczhlk"), }, + { .name = IOV("ae"), .value = IOV("SuOKukmKVMsLfUtgyJxZxlTIkKfVWITVfynoASamcjXRnUmXioIsLJAvesQH"), }, + { .name = IOV("FiJqCiQybXLdnFEfz"), .value = IOV("LQySwHBFnpXBwOMxIBoApyGxfdysOwQnndJArsHZeRsoYDbgxjLxSAOOwWbSHbrZwSyStjcR"), }, + { .name = IOV("hwz"), .value = IOV("eiMFCaNKJAzWAtXpUKooRRNP"), }, + { .name = IOV("QSjRioFGFQ"), .value = IOV("VttDExkybjbmFjgnDysnPZQJuVD"), }, + { .name = IOV("CmwDKuXXgOazyXpUY"), .value = IOV("QluppySnnUdwWskOJwQQDGvOhWBCRYiK"), }, + { .name = IOV("XMaGRKQkQDDqlSVPA"), .value = IOV("XSdnYaMtiGdAjDFBwsZdjWanvNdUHsMTPVyLboY"), }, + { .name = IOV("dJTWqoYGrpKQGXRWu"), .value = IOV("BdTPxdzEzrFrCnuBBYPHXxelroka"), }, + { .name = IOV("qDhj"), .value = IOV("jgITntPOL"), }, + { .name = IOV("aJj"), .value = IOV("KkIkzOBQhw"), }, + { .name = IOV("YijYIIkJIil"), .value = IOV("XlKeYdyDaFqZdKCLbGDmHjCmmmuhrjD"), }, + { .name = IOV("MfapywUpx"), .value = IOV("iAuLZcCLDlHPwcbBzoeOOyFkOweCEWQVgRDvwJVWzMIDkZ"), }, + { .name = IOV("UjKb"), .value = IOV("e"), }, + { .name = IOV("AiD"), .value = IOV("coWOCmLgLGBtOxpdNFirqdEJyjMwbYrHUxycfJLKKnnKrGKAAZUKaLxyoLtqnYyxZNN"), }, + { .name = IOV("oFMzyx"), .value = IOV("ZdZRrsDIAXRGNLrjXtEnNiyNzIWxVbEmLMLebxBrMNYTnyPngnRWzd"), }, + { .name = IOV("vT"), .value = IOV("aiZvZdDzIYBitANeUewSlRtvKqhGCtWtWnFJYyWuHVNZ"), }, + { .name = IOV("FZFXWwpuQfR"), .value = IOV("rGUECp"), }, + { .name = IOV("JROvyhbydcilafPZRr"), .value = IOV("bVSWWaCpfuCtSOCWktWdAjqVGvIypcFjGEJhYolLkAiIjUNWSM"), }, + { .name = IOV("xacS"), .value = IOV("PLgUmPVgLzRgoTzAwhQGyurwBBRUEGiqJjjBkJoA"), }, + { .name = IOV("UZcOUGDENvSldh"), .value = IOV("DvXUjWUKHvxxZHEaoiVw"), }, + { .name = IOV("cg"), .value = IOV("ZhDfEKzJoMhfeqU"), }, + { .name = IOV("CUZeKDRAwynXrO"), .value = IOV("oAgEygUrluagUGvhrfoFeQoCLBGttuCqUkoCSVaslqJqnkoWTv"), }, + { .name = IOV("cAZjGIpKUzzXpJsgaHH"), .value = IOV("BZAvSGGdTaHC"), }, + { .name = IOV("vdBwRKsJYHOzCkPN"), .value = IOV("qLHGALydfkaPliInHvcX"), }, + { .name = IOV("bmzZVLsSANKzrylbXg"), .value = IOV("iYNvVUGYKnZlqlMOPVNADiOeKkyaOlBdgHdkudYejqKcZGHMbvNXlyvLUMTyHwJ"), }, + { .name = IOV("b"), .value = IOV("xIyKiEeJnIofABUthzsPQknbIFuuVmDzhSH"), }, + { .name = IOV("KlkbXaEvISos"), .value = IOV("btjWV"), }, + { .name = IOV("ItFgZwZBlDAJpJkDJCZ"), .value = IOV("PiitSmsfqIHXszJzdjivHLaxDr"), }, + { .name = IOV("OcB"), .value = IOV("vXVqboafFBWJEoRgMFTlpYQnaMqmNFpeFUyFOoaXaXuqgErLTa"), }, + { .name = IOV("CaegO"), .value = IOV("ZSyzijHRnQpXOknRdCUrHF"), }, + { .name = IOV("LgpyjEWWcIiL"), .value = IOV("xzivWvSDwzbwBFdFsVNbnvtcFkJdSPDZqCJSvAitIKtViUOHvZUnkkqmDRZWsfUIicbrHwLZMzkmyMuO"), }, + { .name = IOV("cwWrzQjJArRfL"), .value = IOV("nWKghOUpYlRxHdhGWUMvlxtGiPzlbJawvjzbElZTcy"), }, + { .name = IOV("wTNxfjJdea"), .value = IOV("sRzMYdIWvVSmAKMOEXYBcfYgOaGlFJGIjwjCXzP"), }, + { .name = IOV("yc"), .value = IOV("vCLLajbTfTOcZbsSlaypKRhAIVnWAsWdsowLHjGdVMpDrcjCjQJFffhrGjvFIqTTBYmOrNto"), }, + { .name = IOV("R"), .value = IOV("rQvGYslIKLsmxMxoIvVhSMikbsWJ"), }, + { .name = IOV("sqAkRJumJttH"), .value = IOV("zfKnfCmjUuXKCSRIuuAqEpZdLZvMAtDfnLNPJOpDkgQUUuAXCiXsDbsHBjI"), }, + { .name = IOV("xhIHBLKnFJvJCKprTJ"), .value = IOV("ahNqYlfXlqwzAlBqcygxoavGDrVuwDWtbqYsAZttuvMLaJunbsEFfFZh"), }, + { .name = IOV("U"), .value = IOV("PjpFPxiGppaiidbsHyAAshDiumNtyLIkAkSwLxBfHMTfYvfadanNIwz"), }, + { .name = IOV("zKKANKvoUXPFhJcsz"), .value = IOV("neOplhuXGvcS"), }, + { .name = IOV("BDQvDpnXmUwHuuYuBgl"), .value = IOV("OFQubZEDIyXXaGkdq"), }, + { .name = IOV("ymbtzkVrpOFGzvyt"), .value = IOV("oWAegObfBkDtKbSTBjTIFneCRlbxgbHNgcudoDYVRLhsNqSbUGrOcvGPtitIw"), }, + { .name = IOV("NiEzgBzMrxESQNQUloik"), .value = IOV("kkOJHTLfpkaK"), }, + { .name = IOV("FRdKoMUSQcQpGSAHd"), .value = IOV("SGkTOxQwBYhyMorYrkgWlEhIwVLmzhPCYVKOUnIfFJEieAbcVl"), }, + { .name = IOV("baZIJgO"), .value = IOV("xfYcSIeNuKldhWUzrwOWztjeqia"), }, + { .name = IOV("xTuALLweOxMqc"), .value = IOV("LolwOP"), }, + { .name = IOV("amZPj"), .value = IOV("GrzFuWvWmpVwdIPKNBBioYuIQUWdbPEVNwhAcIOwIOeRgvWuILmv"), }, + { .name = IOV("cUk"), .value = IOV("yHmPsfbPWdVIsPDmrtQLCMgQCTTUDGCTKibyQZ"), }, + { .name = IOV("ylMxxPIODYT"), .value = IOV("DeSoxzIocTZRzgijkwYLhKemfeh"), }, + { .name = IOV("SpJDivrFBTdoTCmak"), .value = IOV("idBbvoHlHjUYISPwqGjWBQUCjBJxXrCnyqtmsXDwNkAVkaCiLuFjrUIFtzLGUyEBjMo"), }, + { .name = IOV("qmvaMGNANvWCENGpuaJ"), .value = IOV("kLfOTTvISzClIigMRqcejwVGrxoYX"), }, + { .name = IOV("EuaLZXVLHcIOTq"), .value = IOV("XNxupNmhbSPQwcAUPGlPWDTwIKfG"), }, + { .name = IOV("fEThOwSxiaPZWrdTEqF"), .value = IOV("kTRdwFIv"), }, + { .name = IOV("RJQ"), .value = IOV("YjbzlaKZGXVjrxGMGJitdZoOqGUeSqvWafitmpQshLgkJBadWZUyvCjtOSkwZLpRx"), }, + { .name = IOV("nqZYFrUnQgBAIejoOTx"), .value = IOV("LfBQrhxncZSVEyJgrfXqRFjENKkhoQiwXybTKvYenWeEVyurL"), }, + { .name = IOV("YFkYXBnGScIAlZpyOcv"), .value = IOV("EpOYYYdIbrhBdLbfzJOXGdKvDZekJusVoZCu"), }, + { .name = IOV("z"), .value = IOV("yQmQHCPOVcHClwhjSMVTlxnrJAQFrdstPsSAlvYh"), }, + { .name = IOV("ofEs"), .value = IOV("HikzaRharLGIKzkNJHgGKuOMzAOqROBjKlbnaMeiBgEsXOHlmzBSrjTFNKKM"), }, + { .name = IOV("BJu"), .value = IOV("RumDELqsWnHFidtIcJDkVJ"), }, + { .name = IOV("uypWEDwVOVQzmNjwyua"), .value = IOV("huXtuCKmHPamgvdGNqNCCtpVnMfBlshwtcwcoMSEOOowjflVtOGeKbHOHrp"), }, + { .name = IOV("kacSeKYGP"), .value = IOV("khrsUKzBDgRlqfyHpZFVBQMtJbpaUUcphzrT"), }, + { .name = IOV("fSSISdErAuxMkC"), .value = IOV("XhifvZFgHMKWSXPgIYTweKfsIOpvjkTjKIOIzEWqXSzjzMkCV"), }, + { .name = IOV("gV"), .value = IOV("gJRTHHFBBJxf"), }, + { .name = IOV("cgOmMfWvIEOjGMQvu"), .value = IOV("Pjx"), }, + { .name = IOV("uPEHEYPFczy"), .value = IOV("xcZkKdXAZLOSaWECrE"), }, + { .name = IOV("HfHRlxXyPPhDa"), .value = IOV("BsBEHRxaQZZFndMzBlUnLDDbOLcuWZrkZyvhoyThcPVpmBjcYLpnZnpxKhOjEzJtEisvzaFcSHBEjDgP"), }, + { .name = IOV("tUbvPwLpsMZdWQMYhzI"), .value = IOV("bGdptGWVLWccBOYFnUpgIHzYxNqGupQyMEWVxAelNfTecpzhYIWtXLkC"), }, + { .name = IOV("MOxjOP"), .value = IOV("ZlgQMHJIlmGRBySrU"), }, + { .name = IOV("eHVdYq"), .value = IOV("YhpGaieHAuAJlbbbanOqjjEIEgTdnbUjSWpZuSYRURYUBatHeSpVtdYnbRPwMNktGtTMizLCakIe"), }, + { .name = IOV("FcaaHNQK"), .value = IOV("dNvTRmgdJaRtiYpuHgGSyKkpFxhsquLmpifd"), }, + { .name = IOV("CDBXeFnMqptbjOI"), .value = IOV("AAzZNvbosJAgSXwaTGfJttKWxXvlHptbiGysHmnMysiSg"), }, + { .name = IOV("qKuuVXLYoHVxsm"), .value = IOV("anJLYB"), }, + { .name = IOV("nOzO"), .value = IOV("xagwZFYQHoOsahoQkPbWdMoXLMgBhAXVAQeFewTjsmwyfGgTA"), }, + { .name = IOV("ZPFSMRHnelcT"), .value = IOV("nVouQjsuxkMiPdMFEclJXgmYlFInUsqBsPAHEbiWvrBNKKDfHw"), }, + { .name = IOV("hejDfskUvAh"), .value = IOV("IecLOrGDmNrRRQnLTImsxeDimGYwuvzWdotsVpcbDTfLJjyKIRvbVhDtXGuRWAvmLbrqjIpbwXnfqJEm"), }, + { .name = IOV("qggnDouCTwogDDBo"), .value = IOV("xVTnrjlgvgWjWjDSMWoPzIJmrGqrLYSotNIzdNFcNXGSxqfoG"), }, + { .name = IOV("zPoLNBZTwT"), .value = IOV("PzsZmiDHhDlIfvtBTzbzmAAhKYifypnGuvvMkBuIDqZLmCleWpOPjWEgKLeFAChPUZNKbutEVQnC"), }, + { .name = IOV("NYqHabN"), .value = IOV("exKUUuxNPTNZcNdaSbiMoNhtdIlFtC"), }, + { .name = IOV("tdBZuCHHK"), .value = IOV("VdJ"), }, + { .name = IOV("mdMIcrf"), .value = IOV("lexjUgFTESRbnlfSmFsgXEgQatOeByfYVhxeZUWcLXhCqnSZBLXzKlytlHUMpZRlhS"), }, + { .name = IOV("kcTSIGrUPYBvraKPMWH"), .value = IOV("wWLPfc"), }, + { .name = IOV("znuPwNH"), .value = IOV("GePOKOlnSUwvGWRqrSthRrqumFuBhn"), }, + { .name = IOV("KEAsVPobanOunRsNM"), .value = IOV("SAXyqQpEIS"), }, + { .name = IOV("fOUHTxLMHJRkJuZC"), .value = IOV("fYSFhjciosAaAnELtrKcfqeEXEXxBzhhgEvdemUnjiiVqmerKEFJtOIuB"), }, + { .name = IOV("WIqOFPBZHhUZBI"), .value = IOV("AsDBVtmWhQkBUDugSWDqYOhZTPhmMHLRVELWWzchlhNkDziuyK"), }, + { .name = IOV("jXll"), .value = IOV("ocNztwKJruZktnWnLlkqIoAHqcRvdSMnE"), }, + { .name = IOV("QziOfgUOvdBRLqxnYZiJ"), .value = IOV("LcbPLGxfcleDXArxPdFWfUnYIvHqJZQxBsSJwrWJrudOpWhuIVmToxbcosvcXwkzSOjiNFeuNMbs"), }, + { .name = IOV("hSbl"), .value = IOV("JLYGGHHpnSuGpEOTgYVlYCHgpwVRgqzFYBSMPsHqyWWKrlvxirwDeShSKXyUZGypzPkuceDtDoN"), }, + { .name = IOV("VgTVMcWTJo"), .value = IOV("MoALPMlBhibZXReytGr"), }, + { .name = IOV("tZhyJp"), .value = IOV("dIMxfXwJlCnVjSQuAQKgCboy"), }, + { .name = IOV("BePmUiplouWAIcWexW"), .value = IOV("LMDMRiLCfZxmwisdTozJqnolIEHCgphknLuvYHVqAHKqcyO"), }, + { .name = IOV("SULzCGtcBUyuKn"), .value = IOV("gfNJEVziUSlCtrzcJPdgymQihoFRSUDNBeDdAkwRsBEhAKBNGeaFJcEyqnAuFyL"), }, + { .name = IOV("qSfVAoYcApiHBQzkWNP"), .value = IOV("kORzG"), }, + { .name = IOV("TSoMoUZIs"), .value = IOV("GNmuJztPCjRofzQNUFNfVcJMgfShKqukukJfVYrgOcBW"), }, + { .name = IOV("kDjvjGWojqMk"), .value = IOV("nycYShDZUIqTbGihjgxrktHJnmXFfwfaktbndSuNmdUrzWsYreSlHMnXIlZTxjaikqrUVGVQkqZVSOQ"), }, + { .name = IOV("wwIUoWMhlOdgAYtvzEKP"), .value = IOV("IAiXEHckjUWqujRvGySJ"), }, + { .name = IOV("rCUOVTf"), .value = IOV("aJaIigIoyVrXxxjiSIRWVyOmXWgRFEXWufXqnZ"), }, + { .name = IOV("YwMjsaTMVw"), .value = IOV("TtnxxYcvoBLyPDDZxhiemVkSnoIasTkoH"), }, + { .name = IOV("rxWiIzpIo"), .value = IOV("KeVAEgmYGzhsdSNSovXLKiPLgFXnKjVkSsBXOOOYwgioloXIoQJ"), }, + { .name = IOV("X"), .value = IOV("aouktGTtlIKQvxnXoSaproOVjdjjvHmIzfxnOBVMkqPPrpYe"), }, + { .name = IOV("OUUqminKXjEqEdY"), .value = IOV("Q"), }, + { .name = IOV("rqJfLequFiPnbzgD"), .value = IOV("tvDkWPCMBBoHXNyJCFq"), }, + { .name = IOV("zVRGJbELLndYiKrQt"), .value = IOV("sEGBBNbomThIQYXSyzteABLgxaJnEqXGNtPGZaZSFLWjQWb"), }, + { .name = IOV("nEkKtdonsCDDfkThWU"), .value = IOV("YUqVrEiiPGwCloGVxDRmcdDFpvFAJcSrTgRamVbRcBbylriMmxNdnJzjLNRHEMtKBFLDPBhqWkpDN"), }, + { .name = IOV("brHNrtnMNXajhZcDA"), .value = IOV("ZBSCuHcleGfdpDKRFUpcGkTcsScDEAJWWdjsEcVtySNrUnNMPQvlkB"), }, + { .name = IOV("UcwUf"), .value = IOV("MZSCOjiCcggGylFFYZdLhaAUYmiiaeuvpJEdAUCeHZKBQoFKdscrLRnSRLLwyDGaCokGgg"), }, + { .name = IOV("rdVWVItrGwD"), .value = IOV("rHUzHu"), }, + { .name = IOV("ngOJZkfwIDfaD"), .value = IOV("ePezmeVZ"), }, + { .name = IOV("eFVIfCdmrnoBPj"), .value = IOV("MldEPwKgcJWcZvdxAcbmnHnimINkrAoVCCfghxkcqDcZyGlCl"), }, + { .name = IOV("qCUUjLmDzEkwYaroWv"), .value = IOV("NQFCQjMMUgnaqJsvHmAajDWExeYiS"), }, + { .name = IOV("zwtpEqgf"), .value = IOV("BzLONNvzodPyYxKPWLimwuUMHjRjQAwWrRdWEeCiMhdECMLnGfJRTEFTxn"), }, + { .name = IOV("RmGHPudwuWERsEQlOGCZ"), .value = IOV("QhQlBXp"), }, + { .name = IOV("q"), .value = IOV("LTzyyeuEyDIRReNSeNR"), }, + { .name = IOV("sifzenOBXjXBLxjzZ"), .value = IOV("gFIMYKfCesOXwMGGAsZHKpEGirJzhKKgLwMqWdHzWFYyhZfLpfdvJcqZVyvRfBBSUyoFRBwhwF"), }, + { .name = IOV("nqFfhjcfPIoghy"), .value = IOV("TKRzUtZyAQIfVGWqFjsuHkllFkxQNVZyjvVoMBJlbpUQRKVegrEefQVRoHbDe"), }, + { .name = IOV("Jhg"), .value = IOV("SDoXcvdSCbJbkrpJEDHqeuRhz"), }, + { .name = IOV("UqXbaUpenThqhbgisO"), .value = IOV("nitaTJHLzsIhzjMiBhJQDNkhRgryVveHNexYtGalmbtVfwZPrxsESsYNNuICuZVthq"), }, + { .name = IOV("HXJ"), .value = IOV("YlXaKPzyPvNpWJBDELRwSmQPKrBxSonpEdrEjGxcrRndXErgIETQaGVTPWQjIakm"), }, + { .name = IOV("PuQSsdsXBSz"), .value = IOV("JRCHaYc"), }, + { .name = IOV("O"), .value = IOV("UFtyZdUECtfoFmYVPOVPMFumUARFDvJdBPokKMMebkENXVAwQNIKjMXbfDJ"), }, + { .name = IOV("TjAhTWoeEGq"), .value = IOV("MZbIffIHnohtghStFBzQNtvfBUFaFMIBKdqoh"), }, + { .name = IOV("R"), .value = IOV("hFVeFRgQfdUpoVOYYjukMpPxfmMDFCYTvYjaNSLdsoLAeOXeySJUm"), }, + { .name = IOV("cBwNgRYmznvb"), .value = IOV("GBiEWfRxgErCLjnheRjPiULvHLkavZIisIHQOYSwduAsXXlARiRZkrTBpMjqRlfQPsUDNA"), }, + { .name = IOV("VyDcKhkFkX"), .value = IOV("GJQIAINFKXNIakatfbHksbdrIwYGowJqdRrTyLjX"), }, + { .name = IOV("FkIhEGLkA"), .value = IOV("KEAlCTrBZbuwHZPwuekKOmCLzSiRpdHZaKEAdLRLQkAX"), }, + { .name = IOV("sAgvAZ"), .value = IOV("TZOeZiTBvXcwLfybbsnWqvUJVATmpAypdtagwMMRegVvtBeeskxbcxfTTTIR"), }, + { .name = IOV("gAri"), .value = IOV("cxLTfZZMOvWXqLRhRwVLUCUupCCTMMRVWSpRMYEISOhzfVVwTphsMGaHyRez"), }, + { .name = IOV("UIFsVPBTKKcMkUIocPco"), .value = IOV("RoKiQgBQvYseCoGgTUJzLUrPkOBoSGumoemRQAKoiVXjBLwTLsguiDMhbHMSEcKLPTnumeVcHimf"), }, + { .name = IOV("HWrMzrSvv"), .value = IOV("DTLMRGmaxCOdyUorczejiycSJxsfhDtwhmnEzhKQtKDJoyvFvaHItzsDUPLITmLPFGXSZXzONFVXNXJF"), }, + { .name = IOV("HUGsrAqqiaA"), .value = IOV("yHaAIKEesQWZuJaDrgYclPpzPCdkoFyTTmPVWArzll"), }, + { .name = IOV("DXKzHcpUk"), .value = IOV("VzXBOsXumnjDXGemMcJlmWrTch"), }, + { .name = IOV("sWkYXxLVPeVPIDK"), .value = IOV("yumzAvUpa"), }, + { .name = IOV("rrntGHpwdfiZyLdmja"), .value = IOV("MJeULWUncmYQkXxAFggKg"), }, + { .name = IOV("sjBNJZzyPXMQMgWU"), .value = IOV("IsvMTWcOUnFWbjezXhMPVvykgBCsklzrZEEXkoGeGfEniakZ"), }, + { .name = IOV("VSlrPxMZ"), .value = IOV("avWvfoXKwPuwHEgPmhMLFxqWgDubNmfxJOJXwQqkddFGDurgAFuv"), }, + { .name = IOV("WSWZhuhEWz"), .value = IOV("UzFpqykMF"), }, + { .name = IOV("LsTKPiiEXTFEYWrlHs"), .value = IOV("dSHXtObyxWzasTseSJvmucNcJNzdDdrMZRzXaFawwBiHzn"), }, + { .name = IOV("EmhvGjUaFnsCP"), .value = IOV("MAwcTuQhrgZlDVZWgrgCOrGQSkiPWjDkrylMmMGrwsZWTPoGcMImTTEHvOlittLjDwRiYZunftEiAi"), }, + { .name = IOV("I"), .value = IOV("YABFHGyYwcFsShLcXADdhkcJwOxEGIQpVBfPBvSVAXojsvaEjSvTYBumOHXuQdTlDv"), }, + { .name = IOV("EXTLLWcJbbyn"), .value = IOV("RTXhLkOTyFrtYZcyjZwrPEMYtkHmIUVugAzqFpnrGvMqfIesIdcd"), }, + { .name = IOV("B"), .value = IOV("GvNbvzkZ"), }, + { .name = IOV("invITAvctm"), .value = IOV("zcjvFNQgdxWdEfmyEeoWVhSI"), }, + { .name = IOV("Eyzte"), .value = IOV("hbgXbfLNpZhCXBuQOlqYIBhsvmFbdWzvQfIeumvhxqwMM"), }, + { .name = IOV("uvinYUmJNUuSeJMFmA"), .value = IOV("BgRFXhaSfdojfWNyCaHUpFrAfpbLQAcDZjQgtYMlPqtPxplPHFMfLjHlZhySJvFERlyeaxdsvWAs"), }, + { .name = IOV("VZzSHuloWXA"), .value = IOV("sjoSgtewTmdPiMbGVhKDqTkqnJowMPuNeNTwQWidgVswFGpujJFCdJiTKLJHukFZvilzTrwvnRS"), }, + { .name = IOV("vVxhuRXWNZuyQM"), .value = IOV("LVKRmdcyKGkkHthsdTPundHoBEuaGRxZFuYuItWkRgdQaWSysGnfWoVrpe"), }, + { .name = IOV("xeCRcUK"), .value = IOV("IkktgmAfhXHkVzIrXCulpbZlvugdlRDEbMfKLvQ"), }, + { .name = IOV("aCCBsNtiy"), .value = IOV("kxdLirgevGGkTVhBBXHziHvZtJFbNdEZEUPAnzYq"), }, + { .name = IOV("rXjZavjojPsR"), .value = IOV("ZXcOXNHdmdiKWLPcVdlrTCKusewEAvXfjCG"), }, + { .name = IOV("sKIiwVNfnf"), .value = IOV("hdnNoTaIXVfZFYKM"), }, + { .name = IOV("jhTUIDE"), .value = IOV("KFFowjLbkvcPfNMBZfunXPIrAuiGXdDFaudRO"), }, + { .name = IOV("CnaeQPmcHUKdz"), .value = IOV("dlcOtodKLhTvXotlsNfVITPJjFZLEFWkSxAbCTXDzFTsstTCgvjw"), }, + { .name = IOV("IuyaUuvqKPIuZJzOBW"), .value = IOV("CgB"), }, + { .name = IOV("kdxSxXEz"), .value = IOV("OydTeznSkOVkbyBhJCJNBNSbVstMOugRlUFfdgN"), }, + { .name = IOV("MFiVVNV"), .value = IOV("bbLLS"), }, + { .name = IOV("lAIPMuUAVUoDUTVApdv"), .value = IOV("LFQQMESkRoSvpxzXVCWDiSagxidvMfnIQulWfHvo"), }, + { .name = IOV("qbEevyXcce"), .value = IOV("uVJVPZPznloKqmYQoIjPyGOQYNWedODpVKOCZpqEuqQZZcNqyfJWVChDAQLmVIv"), }, + { .name = IOV("jPgUxQfAJk"), .value = IOV("TQPRU"), }, + { .name = IOV("FoLkGHGpXYGElnIRvtZs"), .value = IOV("K"), }, + { .name = IOV("wPLoyxiUl"), .value = IOV("LHyzFJydBEFBLoDxSxAKfLkdtNQWGTxDgpWkXyStZARzY"), }, + { .name = IOV("oipaHZJT"), .value = IOV("RurSCCswwsnPsYNGLgEKPkKDPouVuvWADvjVRrwmvMbpUdlOenJCvzizLOhGEsqhebNs"), }, + { .name = IOV("HomFrIdZwTxnLMykTYEI"), .value = IOV("EvvLWljqModVbPRQpSfIShHgZsQhjdROPZxaZPtJLPGJhc"), }, + { .name = IOV("PXOOXcDAZAbBiOnj"), .value = IOV("yVvbCsR"), }, + { .name = IOV("J"), .value = IOV("EDPbFFXLZOpwMFqgdCgvXiuCypRHtGsyxgUsOFbdrPMiebqFFZBlKqZVADLd"), }, + { .name = IOV("tFkAXXyayyWWHs"), .value = IOV("mjPKelM"), }, + { .name = IOV("j"), .value = IOV("MeeWAbljdsmbSHOifxRojdayltjqrkHTLEifdVRKlHeRnIbHQVWEFFnZnVoDlCWyYcEt"), }, + { .name = IOV("MaBGazd"), .value = IOV("jwdjyzELobkJXihpNxjejuEOdmZVnHIQAMfEXZQlOjZGPMeSAzvAVRNQSZteysLZypssxPmjcjLoHexK"), }, + { .name = IOV("DcJk"), .value = IOV("ZNjOA"), }, + { .name = IOV("Eyh"), .value = IOV("yjCrVXoKIoIMfARQrvKlftMHZcOpfiJlLIACcUPqObuEDMdT"), }, + { .name = IOV("dMInzagKbONpSvZKy"), .value = IOV("kUtrPGmLtZthoFXnRV"), }, + { .name = IOV("qTWWOfKPuMPnRNho"), .value = IOV("HAZuUxtBXUZyIzSLlojxykvtaMcKQCVzcupqzdKEOCUnIRdKHraRqVKdsWpTUPdH"), }, + { .name = IOV("SQYPmmMFxy"), .value = IOV("VHdDKRrhnrHLqWDMqXLfGZpkMCFgOOTCyaLplguhkJSjBJOzLlwFngIorlvJfvMjLujQxAk"), }, + { .name = IOV("BTcNMvoPUo"), .value = IOV("qkXmvqTrKDrclJdCxfHKPKqFlIRPPJiGOkyMxEdM"), }, + { .name = IOV("ci"), .value = IOV("TqJwyFxpBioBLdVgcXpnlhT"), }, + { .name = IOV("UnYRqVQwPfhqTcjYcL"), .value = IOV("ZpFDe"), }, + { .name = IOV("x"), .value = IOV("mRZMcganloLNRWVrTZdsedmDhiQQuLPSXpZZMvUSnGyqfEfVrTVzQ"), }, + { .name = IOV("uZIF"), .value = IOV("wQXIzckTgOsEwwKYgndcpDYnWbTxGjanCgtVh"), }, + { .name = IOV("fosjeTQYoqCFD"), .value = IOV("EdCS"), }, + { .name = IOV("DumTWIJxzxlbN"), .value = IOV("e"), }, + { .name = IOV("WbnvPXQvS"), .value = IOV("hweawBFlm"), }, + { .name = IOV("zotLSPHoZHEHfpfC"), .value = IOV("aKBnFYlvsrvjLpEaI"), }, + { .name = IOV("zkED"), .value = IOV("OYojrbogCFyNYtprfOXaLGVGfhOAIMvqMTLjERvImSBNDJxVVZclUtowMbSzPtKZeguAk"), }, + { .name = IOV("SaCSA"), .value = IOV("Jooz"), }, + { .name = IOV("UYuUjBNFf"), .value = IOV("WnnepQYVtqTKZBDFygdeghzaZeKnhKYWqVcSmV"), }, + { .name = IOV("MyFNaiFWSnXXHgpZhEsQ"), .value = IOV("mTTVHJFIPRTUEidrcZpGBuwQeAPXRCBreltzALwyCvvuGIqMdwAsLlbJyUzOYu"), }, + { .name = IOV("QdIkfqA"), .value = IOV("PrsusBjZeOFSOleBJHnWlRNhqOZJllyLhRqKAIoiBkmzYple"), }, + { .name = IOV("UsTGuW"), .value = IOV("CPkaBVoZHjnMnFRVxWspYxfcmlUcKZPcChjBmw"), }, + { .name = IOV("YvGGvKbGDYtaEvzIW"), .value = IOV("eFGLeoivGYmHLhyFfQWpNYQRaiajqJHjgIgeGLheeAWrdsJcMtgDLvZhDxUWfCyDgYgt"), }, + { .name = IOV("XprMekygXFov"), .value = IOV("ByrYLfxdRYRIwpcrBrQZiToNxqjjAizTePaDUweKHVDkPwrVCJnSTLzIdQOlGszeBi"), }, + { .name = IOV("mujBDvWgw"), .value = IOV("KQthBknixjANJGUJQXZtc"), }, + { .name = IOV("UXldacpQvQ"), .value = IOV("vYMKaRQKpZktJVJWFJzmgXubrlJiK"), }, + { .name = IOV("ixgAQb"), .value = IOV("tFPsgvDQKxxzOjalHCmcuUjrLthZkTmOuYtgKQCBQo"), }, + { .name = IOV("YeDyPOVlPnOSCAS"), .value = IOV("vyvIxKopeSRTSVlWCuCrvVzIg"), }, + { .name = IOV("AcZoqjykNPkjAaoPEiOU"), .value = IOV("EXoKErzLZDjkuDWzndDBrbCTibyIJNDW"), }, + { .name = IOV("mjRufWI"), .value = IOV("YtePWwTkhOUEthrHQTVqwlSaUftwEYaaYRLyxDxqCWA"), }, + { .name = IOV("ZyZvRlXcpLQplzhY"), .value = IOV("GvcCwNNKPGwXafiMMkjjDyzOGeVTkaWGkFBNAdYLJfU"), }, + { .name = IOV("iuWRAIlWqsFFRa"), .value = IOV("HxXzcMFMjAcWMnNBORwQlKvVddnporlzJRMjfgOnPfuJPEbysFYCMWUnQfmAKlRwh"), }, + { .name = IOV("NyfJ"), .value = IOV("DIdMALgAgnWwzHSMHwxIhMERmmiKmQStATQdRbhZZVRQVAJtF"), }, + { .name = IOV("csrMXioOSRhHFC"), .value = IOV("ExVIuVEDktDbYrEoepdJkUYtHiUXdeyaeFh"), }, + { .name = IOV("nBgadbnGNkJBDhSMIO"), .value = IOV("YLkFhqBXfZQKYQySJuqpvnTNUWaAfDxZzOwsoZSdSFLXKiQSIEpCzqh"), }, + { .name = IOV("BFWQmtkxVFwAjFNSmDXi"), .value = IOV("IztTMYxANBvnpwGJGbFrTFJGrxqUMNkRFQWijBxSZuPu"), }, + { .name = IOV("ZisOBCViohRWOycLybW"), .value = IOV("nFtMQRRtAyFNJIDhafYENFHyHKiaK"), }, + { .name = IOV("AE"), .value = IOV("QWvyLAKhIULNkobP"), }, + { .name = IOV("AojdkEVPWRnNJIUQdUd"), .value = IOV("QoqVwUndOvFXgghXeCeKHOsRQ"), }, + { .name = IOV("qhKOmjYVfOWHuJlrh"), .value = IOV("PwUrDyNUmPWiqosgdyJQdSjMUEpYDPzETKoSbXdCrVcscj"), }, + { .name = IOV("r"), .value = IOV("uiYnQcaHJJaWNCozdevgMdoyKPHkNoTkVRacPISespjRPDtrofjrfysCQxlP"), }, + { .name = IOV("eaYeAcZZS"), .value = IOV("dQGnOtedCkbgvMgCniCXxtu"), }, + { .name = IOV("ZDEYFBrTg"), .value = IOV("SpekZabBAipvTwrFPTlkVtFzBQiGVaXMJnIYVpPibZGaxIIqtsOEHsYAUnViVZQbNhpAzaYYdu"), }, + { .name = IOV("gOrGmfBmBnKBc"), .value = IOV("jySnudwsIlpiuzdXwamsKvHERhdksc"), }, + { .name = IOV("MhKLgtKxso"), .value = IOV("FTyBAdYJlZZNlBOesBPsafBUZauUMqrrIotLzQd"), }, + { .name = IOV("APAQSSxkYZPeyaUT"), .value = IOV("kysEwsnLShgcNUMAcrHIWLOdjKSGERQMLXLVKAlbzeQlJogMptjOQxwEmfgsKZcqVzF"), }, + { .name = IOV("vDHeNvCOSWhaaxu"), .value = IOV("tbErfDIlHVALkXZzzWTrzz"), }, + { .name = IOV("NYz"), .value = IOV("HODbgNFaaOmOAiuxfPWaEDjMgAxHha"), }, + { .name = IOV("G"), .value = IOV("dMNDQxxBMAyJOvVoiUSkowJdouULOJlkLUuKMPJAYpfbHShRHAKpuhPDMLnHxuxvHGqKUisLpcPTc"), }, + { .name = IOV("zp"), .value = IOV("LatlNwbuvMoIToHVpYzOSpQsIgLKpgJGXzcPMNXdoPjFaqOpipM"), }, + { .name = IOV("LiPjzVOfmzBaOynzrxp"), .value = IOV("aVfoxxLPlPIwdWUoqQjQBfSonDLMrwfszWoRRzJZHQlYhVczMQLlhIYAr"), }, + { .name = IOV("EvCpdcgvLH"), .value = IOV("DKkgqbFxnUbrLqQgMkClyUeLzbsTVVkGQbyGNQlGjzvZBONbdYvSWPtZPRruCSCYbLz"), }, + { .name = IOV("DAv"), .value = IOV("TmTGJvHDXkpgrYaMKGrRieyapfcRLdLbNPnAqddjPSTpwVJhpuuOaiyGNxRfYqY"), }, + { .name = IOV("ZKVVdjECZSTp"), .value = IOV("ECgzLMOdxpfzuyk"), }, + { .name = IOV("mVfYAlA"), .value = IOV("APcHMtZHENnVyIdDWmXjRTIZ"), }, + { .name = IOV("MiBJZqNAOi"), .value = IOV("XTejqAOLftskpLZmugkLWuQGxNRYnpSsSFnePwBAerEhLIsBpwKzSvzQrmgbuozrjFNDDycNeDaHPa"), }, + { .name = IOV("ZEuuWhFxgrupKNFrw"), .value = IOV("tjHjUvLnrTFshnwbIianhyxmpRlmAVVBgWTOivKhSOErBX"), }, + { .name = IOV("infEqnECgjlowoNKBpvq"), .value = IOV("FvOTwAVBhwPBsUIGnyCKPThbsyHKfLVQdxYSGsiufmKYbqowFRizOKtRmuMllSQp"), }, + { .name = IOV("LMKpJIiHLCB"), .value = IOV("RZVFrHysxvtxy"), }, + { .name = IOV("FFA"), .value = IOV("KpTddnrGpvUFhmquyLFhIWkbjFLSpzhSAEEPViNVVQoajkCiFDvDxpJ"), }, + { .name = IOV("oUVtoUCwDbEuw"), .value = IOV("NLFRtaGqaTPLFiJUhAOxnVUVkQJyDdlLK"), }, + { .name = IOV("jDCeCQrocfWSVsgJPCPA"), .value = IOV("JyeoHwETEVlytAVUTObiMrCwAeuNCzXFMFXixEteriM"), }, + { .name = IOV("QnmhIotULW"), .value = IOV("BRRYpyyEScVWfWRcTOwRsVWtrHOrcTHKwkStofUz"), }, + { .name = IOV("GMAJRCIwFqkXXgIFBqz"), .value = IOV("lzgGVxu"), }, + { .name = IOV("AVAYEm"), .value = IOV("emlHqLwuXMRriCraUocNJuOeXAGbNuIbn"), }, + { .name = IOV("JcDpCNTuyDtJyC"), .value = IOV("sbSzcNmoQjsLOqBHWmTibnbzpRyJquJEIesFgvp"), }, + { .name = IOV("GQrtSOabgWUra"), .value = IOV("gfcaDMPZPBOPFLCwOtHRQHKZSEnXnXSda"), }, + { .name = IOV("jr"), .value = IOV("MavBjThOrPo"), }, + { .name = IOV("dMSfOWP"), .value = IOV("IoIrkETMKsAyayNgqxcPEBkRoCZlCJLqC"), }, + { .name = IOV("UWDcxylhYxhvyTRrnkw"), .value = IOV("dMaSoibUtTZmncwOHLrKXcmPdRNoPJKKcaMgVoogZLJZOpf"), }, + { .name = IOV("yasOuhMpKnJKIBUWqef"), .value = IOV("NmjSOexxGHOLYGjcDnqRchdYnFNpIlhlELQjjCBSYsLlPD"), }, + { .name = IOV("OLHTxyRjMmAFfhkjS"), .value = IOV("SzE"), }, + { .name = IOV("oRDULvmpkRQT"), .value = IOV("DrLrvavCRqnEuLMGpZuknLbIXYAmopJmH"), }, + { .name = IOV("fIrgOFp"), .value = IOV("MeKMKbOINyILMHTprdFDJepfVFQXPLHdAufzoddu"), }, + { .name = IOV("bdgcSGaR"), .value = IOV("JgqUAExoytCYXmcxcqstcHhMuaHVaDU"), }, + { .name = IOV("OlNICuM"), .value = IOV("kWGGkQKzXwQYgSTUKFYuBFEHmRwZmWZCMRdWizEYohBxZHMRHJatvYIgqcxFOBs"), }, + { .name = IOV("AhoIQtMtgJ"), .value = IOV("oRyaANpgEEIUrqSMfGcacsZzhoBWTUlFGPWqcYAiZwHkruulUavhINEiFCBSSrpSp"), }, + { .name = IOV("jowJITPrUxMMXpP"), .value = IOV("EBIjAgzehBuLCRejhrlJZVXooQNoXMfHwiiYQWoaduB"), }, + { .name = IOV("BsOaZSkChueSN"), .value = IOV("vJtpETkGekrLGABJwpPWbJseRqGDOfCJHjOYiHidCmZnFBcpEgmDIIBztuHHWHdnAzDkCYKU"), }, + { .name = IOV("TIEBFfxpdJjg"), .value = IOV("NdqznhOoSnxwcAFTAmrCWPPKuyICxyxFyNljXpZwOltWIjt"), }, + { .name = IOV("XArtzFZKqK"), .value = IOV("tTcFypEGXYXKbfYQHqFmoHyrQAEuBKfYmfxreuFuJR"), }, + { .name = IOV("TtuzKHeZsvlEUDCm"), .value = IOV("boGE"), }, + { .name = IOV("rJTN"), .value = IOV("LhQVtIjZhQvoAYFuUtDQbdFJHrumQZiHETwNveLyyfZqvycvgWn"), }, + { .name = IOV("LwlkvzbOqTaqI"), .value = IOV("iCRmmugyfAYPkOkflRRzTUbyuxEYPkouZfdyrervERhQsbmOemYBzbvnYXhzZzDPRheZMZMuWKejfTfj"), }, + { .name = IOV("yIyLkFz"), .value = IOV("vrSBVPrZkNQ"), }, + { .name = IOV("GP"), .value = IOV("ZzCTHJbflegnWzwhKzTbybxAyARZNnWUqWuGvVYLpTHrOFQmIAuKqRAYjMnvUBEyUFv"), }, + { .name = IOV("vCLAxmMlDe"), .value = IOV("DqpkDuOLaQRrTODJivscwRzRQejmKWz"), }, + { .name = IOV("NOeC"), .value = IOV("SReWUsWMCZYxU"), }, + { .name = IOV("XNREBJgnqawaZngNPR"), .value = IOV("EcNmgETKHiKZdBPFpCCzEqxrHzRXdxvRBOTNvUj"), }, + { .name = IOV("yBwPfMOtXe"), .value = IOV("FFz"), }, + { .name = IOV("TUXoEkcAtrS"), .value = IOV("EvzrimilxkrlzPndtSBVFCuUoEeqHvSyDhziuPkLaylusGcmSwbWFWkhmoqXzawGiKxokbQzlpe"), }, + { .name = IOV("veatZGFHkGWFumOpku"), .value = IOV("GAZSrbpxTGEyOUgJrqS"), }, + { .name = IOV("RHWRcdiznnX"), .value = IOV("veNevTOtDs"), }, + { .name = IOV("GbQdjKztTcCaENCkqEBs"), .value = IOV("VziSkWiOxzGKyVpjqoPhlipOGaJJoZfxIOyplBPAwkNFXzyvtoXDWNlHSUhVywRLoWAn"), }, + { .name = IOV("OpQZwDzfGKsGYIsGG"), .value = IOV("xnqwqaejNrSjAtZEHELjluIzPCcOweSBBFhMTQIvfcFFdXEzitTSBkxgLFr"), }, + { .name = IOV("EJEqW"), .value = IOV("OudlWFJu"), }, + { .name = IOV("oy"), .value = IOV("gLHfElpXuLonImjiPLesCkhsNXxbQemlQjxuLUaC"), }, + { .name = IOV("ZiinpWCdjDTENrZYQ"), .value = IOV("HHlV"), }, + { .name = IOV("eOQWVGeWacnqLQmIv"), .value = IOV("pxgxUnjaffVkBKXegLHOOxEOAuLEZQHexGdIxWbDOWSEHNEmNVefLHNUKvPpo"), }, + { .name = IOV("rTjqLSEGaYQPNI"), .value = IOV("NONrZlFMCFfSxHCWEtfAalGpgFYypRISUFirDJOCoLoMRXyOnfrJBGdnAQqgwZePZSAYXLa"), }, + { .name = IOV("zJPbfOtrgHlguVvA"), .value = IOV("bMOLCiCUJ"), }, + { .name = IOV("X"), .value = IOV("anIWqHipklqMnFFOzVXLoLBcOzbElOzcDjWlcEftzWQgAjSxVLmahxzSgsjtlD"), }, + { .name = IOV("CUAKroATyoEBZfsMueQ"), .value = IOV("ZFXaiDMvRqdUsbfSoayFFzxVlRimjECWjSaqgxnLYxooC"), }, + { .name = IOV("VUIVXPlHcIovSWrZn"), .value = IOV("cQFDnFYfUfVdHhdDDYGzhnSNLVyXdnZiMzbwgUiPTApxHwHXsvASIUtmcmEFjxYjObsVSWQHTGj"), }, + { .name = IOV("ZvktI"), .value = IOV("wWEWZmydVeKCTfrHOWewqrvjhRXCJYapsvQAGuUvxxwRdfCqneJAHOdEIUjd"), }, + { .name = IOV("ashSHpTUaol"), .value = IOV("aTQzJxlbUSSTraHaytmKVLfuDWwVpAWf"), }, + { .name = IOV("MYySXuGhHkmA"), .value = IOV("sOKceaCsHPcyUuMfRaBpDgaPJvtRuiPoAgmXzmTqKMnZGGnkqDLLZfpjORMbI"), }, + { .name = IOV("PhMVeQvGBt"), .value = IOV("sxihIBlXmizSalLFVRuzdgAhxrLmTVVZGStTRGDpTGSDjbiPHRxTMmdwKOcuHaQTnOzUlnuRN"), }, + { .name = IOV("ckvXzGRxSTzpqCQFH"), .value = IOV("zbArsQpAqjTVjQCBOLXkvocKXXqGyutJnMSyboaiSRsXmHNWdSLKLPoLePwTRGMMcFPiKKwkQjVTtAah"), }, + { .name = IOV("SwQvAfo"), .value = IOV("QXehRZdCUgepQlbwaUzibTTL"), }, + { .name = IOV("TRoGwMCeVUIS"), .value = IOV("lqSjLvrOdDmRoKWGqrniGzOlnYUClmmwsenFsZnjabJtfoevwQcyrwlZnSkmcnqiBdKinh"), }, + { .name = IOV("dgQzt"), .value = IOV("OMBiNAtojJkByVSZaDmXwtJMJYmwsmKZjjKdOgzXIKovfIpYmZjkzMUsxmeGqNPPUKqYI"), }, + { .name = IOV("hlVuBMViBTm"), .value = IOV("DvmBwcyHalyuqaiQJgTuTgtLBpSfcpghewJHVygL"), }, + { .name = IOV("DdDSsPkom"), .value = IOV("EJsaNdHQiPislYbstZhOvOSEcEqpKGlaG"), }, + { .name = IOV("puhkqTNEGslUHItT"), .value = IOV("NxoBwgvjss"), }, + { .name = IOV("ZEjUa"), .value = IOV("mAKJoTDasHTvAlVFiSJnDwcQfcG"), }, + { .name = IOV("ZCHseXc"), .value = IOV("XKLAQKSsxjFHoESsUZISAWIbOslTKbQuGuhQRMZ"), }, + { .name = IOV("OzZdwmRkgpND"), .value = IOV("RftDSjRoBaGqIrCXAyheKZMIrILDzx"), }, + { .name = IOV("YbWTijPyiHrZyQEcVN"), .value = IOV("CAjKK"), }, + { .name = IOV("jbQvxNBOW"), .value = IOV("xFeYBWLOJOYRHsOrpxydgNevfwpzXmrCECMhiWcMUAXUWDnNIaqQj"), }, + { .name = IOV("hVTTEiJjigbkpQhY"), .value = IOV("kcaGnoWfvZKuEvBWXOWcZTjGbtSoxzNopoKeohzwDFddANhMaYEArvhMdXGSGS"), }, + { .name = IOV("wpQLLj"), .value = IOV("rzbp"), }, + { .name = IOV("XLn"), .value = IOV("HREWQvGlAKHqiaxxLaBbHUGXYdddteeIYuEwCNJhQbKCNeBUNYsJbUoFkiLiGKJgbWTwEDLH"), }, + { .name = IOV("rStoubRoZulwr"), .value = IOV("VVRJHoV"), }, + { .name = IOV("ssHTHKGRSyBGCKzCO"), .value = IOV("ZEwbWOibkHOlbNpFoPqXXDNEcanduTg"), }, + { .name = IOV("R"), .value = IOV("jJkGkLUsiBlJsByznfnGxXfHPgDxXMQUyZtJRPDqXsGScAmTAh"), }, + { .name = IOV("dosVPzBFj"), .value = IOV("zsSmctoQpILvdYxUtYZeGA"), }, + { .name = IOV("WDZShuHuCLpQtGtviVZy"), .value = IOV("fPgjGOMjkbEIxhBdgFDZXCIyxvOywfUAlhFoTmcyaCLTvdww"), }, + { .name = IOV("ItWbDPEuFkwwjez"), .value = IOV("PbQXijBAjihyWjealvvheWpy"), }, + { .name = IOV("rumAeIjYuZEiOrJ"), .value = IOV("nNnvbrBRsvtukMOCHbbutJnzIkoNvvwbbuuJZLwMexdmeMHLBhMSVMaMFZdnuLoaGJpsBTVpmo"), }, + { .name = IOV("Ide"), .value = IOV("lGrMcTYbbuefjFFscpWnodoOL"), }, + { .name = IOV("NlatoPCxCuHIvFe"), .value = IOV("RnDywMfOskbmPClSpAYTyYctIJGZhBhFYMHIbWV"), }, + { .name = IOV("KfYr"), .value = IOV("IHNKojnWyYrhImnHFYTuuymbKdnxKO"), }, + { .name = IOV("gjI"), .value = IOV("cEmSAXQ"), }, + { .name = IOV("hNm"), .value = IOV("elsQYLAntwJlfGUqVrJu"), }, + { .name = IOV("q"), .value = IOV("sNtyhotgokZSgHUqnmnMWrYfasrQXjWcMuziWXSWjEfHZHyofYHfJpubPQmZhUyttTNJZh"), }, + { .name = IOV("wbhSAd"), .value = IOV("fKOzaklqrZkphglHMSaWhOPzBxgUNkfpgEzPIqyjcMroacOOrmNbRsLwpeiIAgBdQ"), }, + { .name = IOV("WKEwTkwpspYBVgyUUY"), .value = IOV("FFOAvrCJHaqOFcUoGUvTTyPxrvxgVAejciVnZvvoCVAahGfYXnpjeoSeUwRNfiykyT"), }, + { .name = IOV("ftyToyWRGPUr"), .value = IOV("NeVkOhnejYWYJtOiNRiojCEJnnyTBqyELQFFxMgtgSpILbfiQcCCCMjFLziFavUBgrOAtA"), }, + { .name = IOV("dNtbzE"), .value = IOV("AsZIEMMGRsphvfUMBGYECgbzbMVxCozuyuUNkVrMwCNWZpiLCoyX"), }, + { .name = IOV("EnYaRttiLGA"), .value = IOV("tNZNwdXXbKgzwfJVlsTaJStMiXcxTGrLgYIzyJEZbunQebCtfP"), }, + { .name = IOV("scV"), .value = IOV("DrAQzTZoqYkWWQdOJBCubrCnVrbrGIorJEnwhayNgUVn"), }, + { .name = IOV("SNGGmKiBE"), .value = IOV("KqYzlVpRFLwiWWCtfpkiWPMHnYWGpxgPBhTUWFrZJQdlvYANvKxbcWaFMDadAFmOnKc"), }, + { .name = IOV("mROaQvYbLVTTJ"), .value = IOV("cjxFlxQuaXurjIxEcfYQAnJ"), }, + { .name = IOV("NZE"), .value = IOV("wghtXfcgSgJVaLFZLFfjLFKcxNxGBPLMLcBFiHitHKAPUUGGwxbJXRvlBAtrzZXswalirOrERbNARhp"), }, + { .name = IOV("zHgNgmfpsweqJgvLVk"), .value = IOV("EZlfzbBRpfrNtnsHVvqHtqYGWtWEVuElJbYejYOsaNMzjWTZ"), }, + { .name = IOV("molaPm"), .value = IOV("BZSkvRiEgTGqxMqOtGgewtnRwgahsYQwtWCKjkhUbPSIRghPfWaUkWfazmKmnMaXWdTw"), }, + { .name = IOV("CCFQyEXozXtyS"), .value = IOV("vEgMfdVfJRnuxGudVsSEtKXPcOzjhjssIPNzfROHsoxdEJoaKxlEUz"), }, + { .name = IOV("Cg"), .value = IOV("vwjhnLkQflcAxuMuLJTTlxgvPpKWNNBYojueogkN"), }, + { .name = IOV("OZhvHezSyoETtqOzC"), .value = IOV("HnZTgFKmbmVdXQCTPcfXmLhxCbmrJydAkeOHJQcQhMglGYzPNnNiVtUeDNw"), }, + { .name = IOV("ioRcMyXTByNXxUww"), .value = IOV("LIZZIogVVJOACDEKlAYXqUnBGTDAsZgBsmu"), }, + { .name = IOV("hxyQCRfNbQMlngLZKDhY"), .value = IOV("lEVhnAv"), }, + { .name = IOV("SjxmlAWWVEQ"), .value = IOV("unyoDdMzdfAcPBKzlBwivSDAtocftrKSVNpxKDMyNZRaLnICH"), }, + { .name = IOV("KPmJjqQXrPg"), .value = IOV("rOg"), }, + { .name = IOV("kpYsOFrCWcAxwj"), .value = IOV("dFQLnQICHeDNQsEQAIcLrPIBpAomJHLZfdnvByiQHILhZZXpGvsVSz"), }, + { .name = IOV("C"), .value = IOV("bGoEIcyCmuQydqeYVwRNskUVKdxRNuxSiHZmfPWcJNnyXruxqjUKKAKHgQ"), }, + { .name = IOV("wTm"), .value = IOV("TRkhJRGxlynfCAIjGJTHWGsRwGTDsDltiqaOTGvEjACGYRFxfdaoGeyFhEwGbdGQw"), }, + { .name = IOV("hzARnrDWS"), .value = IOV("g"), }, + { .name = IOV("uFEny"), .value = IOV("AuRtckSNVvwLUmBcPLvBI"), }, + { .name = IOV("G"), .value = IOV("sxzUbQErdWlqUwiYsmWfZqpLEjiJdr"), }, + { .name = IOV("mHmzD"), .value = IOV("sOAzZRRpowUqhVehCUcdQOXtdcEKgUiJQFHujsVUKGBUkpwU"), }, + { .name = IOV("AOouKvQOLxWSH"), .value = IOV("cblOwcnfRFjZATALbXWmGvQkG"), }, + { .name = IOV("VBXnzAEuuskAu"), .value = IOV("nMZTfwaCkjzZNxyXMpxqYbdNVRXmrNtOUJrMkVBFxr"), }, + { .name = IOV("GBGxgdiWHJVt"), .value = IOV("aXNJCmOOF"), }, + { .name = IOV("mVGuLjAYr"), .value = IOV("WlC"), }, + { .name = IOV("xxooHIggAriUG"), .value = IOV("KBolBjJXEHib"), }, + { .name = IOV("PsNJhnokvdGtduNVp"), .value = IOV("khRyqwvkZcaUrpvGLqCxNsLTFuoKMkRTnfRxzKETsCYbpmqqkjUalQaahzaIKXJMHkKfFvKCNLTglw"), }, + { .name = IOV("MDCi"), .value = IOV("pBAsuAgXULuPwlRaioGMVUODnC"), }, + { .name = IOV("JxHP"), .value = IOV("bzdkedhDPPLcbocBLBojabZGBZgvdZcSFRkFetqYXrZVFdyjqLTQJnmQNtV"), }, + { .name = IOV("jHlMZ"), .value = IOV("AjgFvHRtkegDm"), }, + { .name = IOV("QMjEMmwzMuabqRN"), .value = IOV("UveutFTuQjksuUYQGksglgEoQBcdsMRWTziLMNXZEnmgUIYllcRZA"), }, + { .name = IOV("GMq"), .value = IOV("CeoAnBBWFg"), }, + { .name = IOV("foNFGFCsuBXzEjQXJpc"), .value = IOV("nCBvhCUPw"), }, + { .name = IOV("huyLYMIYssZLMqDctIm"), .value = IOV("iSneQVwDsJUWVTKHxeWOhYUJZfoItrxFCBUpIVqcfKGLqYLwMX"), }, + { .name = IOV("oWHfr"), .value = IOV("XYBTlUkhuiVmKItpqtONSOWWlCrsirIJMAMDYdJSPMNHxwfDHsiQnBFSKSPcUVEHeDshzHDhXnneJzKQ"), }, + { .name = IOV("HiVnNJT"), .value = IOV("jrRRNEKOlJXARFligVrlNixObgQKXPiRFgzbzCopoEnqumVJhKYXoUJgsbUVUiCyzbJL"), }, + { .name = IOV("XNuXdEsThlRCUaw"), .value = IOV("sDaYYiZjRGepqcQwQLoAKcfWbpSJCINdcXdUibhGEDbQEoMyhyMlTkB"), }, + { .name = IOV("hJL"), .value = IOV("EVpPieRovwIGTWgdYMAwZpgEvIlrwxSssQMqIrLfNg"), }, + { .name = IOV("mt"), .value = IOV("XqtisNlhiCWbcacCtyUDQNawsoATYmOFM"), }, + { .name = IOV("LI"), .value = IOV("lFuAbkWebLjpINOCbrPRdl"), }, + { .name = IOV("fKZugpolFKCmEEpBgEC"), .value = IOV("DSmgfxmBDVRDhjctcvzcXUPabLiHvomGxXFKGcZsTEVYeRO"), }, + { .name = IOV("dvrYyycvQbdvRrA"), .value = IOV("xZsLzpvodHZSPCIOmoMOdRbCTFavLQZmWpnXnFjiJxTLsnLCarTDxE"), }, + { .name = IOV("erCaPXnAcbEu"), .value = IOV("neLhNprUMDwZsvYobFdOKxr"), }, + { .name = IOV("NvUFRiMSjGRyh"), .value = IOV("DRjyAtCFaFXHfL"), }, + { .name = IOV("OYrvedfXykhzI"), .value = IOV("nVzaIRVwWt"), }, + { .name = IOV("NGlteLZoAzNyrKmI"), .value = IOV("WDCiYZOcIDTAbAsOKYJXF"), }, + { .name = IOV("yOxZspxMKTULhzF"), .value = IOV("dfdmqOLHusfkLCdgikStxZRrshncdNeXiuaYztZJquhWgkaQfuzKoagFLtxqxBXhWltVuJguMuW"), }, + { .name = IOV("ikOPPyTcifcso"), .value = IOV("DAqTFOlgkarfPmukXyphsPVAAsgYSwhvpucpLbYiQoNEAIVWVEfNVWutrpquyRSJDdRek"), }, + { .name = IOV("ouhjByEIPOH"), .value = IOV("WuVhSstybiXofqvLbEMTwTBjtNYrznnXWjREmxLfLtrkwIIlmUwaXsaW"), }, + { .name = IOV("mKHxkHftNgBP"), .value = IOV("zQYGfmHcTjKocVtPKjgcGCuQIHrbqGJvIrOtMLvucNATwvjOEnavyBWPYGtTXoyUn"), }, + { .name = IOV("ZAIelDWgjm"), .value = IOV("symYUMQkncdlFBAgJMOOZRRwAOhcKFUfPOyPWvj"), }, + { .name = IOV("W"), .value = IOV("GTRhZPkwcttUjwbILmBqygvbjfOOlbgQwSbYxFTambSThSrzXSMmUykbKJDR"), }, + { .name = IOV("MUcFaorFEPBylTr"), .value = IOV("XUuiJrKyKmlmRfeLXDMGOQKDNYFzhGJLNGUspGWEeLVlnFAdORpZTXb"), }, + { .name = IOV("vpaXGnZd"), .value = IOV("kjcpoODvnITffpTTjsgtsJaUQGMZYsqMbCEaitFbeqFkMb"), }, + { .name = IOV("PsJZuegOAa"), .value = IOV("FdCaAYSlUOLdzxRhVtCOmloYVn"), }, + { .name = IOV("grVHanmSFhV"), .value = IOV("iONeaQVjyTYuNJixPHuidcPpAalWDRBBzHiIpKGXIouoIKSNaFzYrByrG"), }, + { .name = IOV("kYZtwO"), .value = IOV("HiBLZiiysaIJezPYRLAblfOrTHCspjFQwdkUilwJZ"), }, + { .name = IOV("lXmoODnwhsWRUbqayFiG"), .value = IOV("wnvweDJCoNqsmECjcZVMxKhQOChnEZ"), }, + { .name = IOV("OCghFrihLqjjvlHyqDG"), .value = IOV("LnNkpFjNyzMqOJgDxENGKSFkoKoGMMpIdpmuIKWppoZEDmEQ"), }, + { .name = IOV("qFGYuTVTrVHExDBePqnk"), .value = IOV("YkJnqGkMBNZgZzBxOsWzLojVodNviKJTLIZDnxZR"), }, + { .name = IOV("cfvxSzSgpQTlHXjtOrt"), .value = IOV("WUsuhKWMaeLgZxZqvwxvcoblSLOVJAjBct"), }, + { .name = IOV("AFjvYPV"), .value = IOV("vobVMzwtRpACOlVOhecnBAfWFzDPVYGZOQTPxNxdZNPGzirheCZtApHiTBEqaRGH"), }, + { .name = IOV("AbqvOoni"), .value = IOV("zYbuQvFuthbUVyTcHKHlB"), }, + { .name = IOV("FK"), .value = IOV("TNZQEJSVMAxmXjNQmfymwxcRFXnssRDZgjuOmmloyIHr"), }, + { .name = IOV("IjhddcGB"), .value = IOV("kgHgHFygTQNEKANcKByLNFfYcDbaZJuanyvjEYiOJfG"), }, + { .name = IOV("DGWzPbbhQKCnFjsgXdm"), .value = IOV("TMMOwLhvTSgWVryOURlnlBzONmxPxbWtUJwGZAPgFVhvXGzspRApyjMneUnvENE"), }, + { .name = IOV("TvpBWLnCPMmJdB"), .value = IOV("SOxNNWoqTdRInwtoxaQttDuPyxNlKGecRyjqkZiWNvlXcSQtiWOLaoVuEBOTzZQWYp"), }, + { .name = IOV("cTOHetjsjGlZdgVd"), .value = IOV("eHbQxbbknmrtnNhncsbhsWHjidjHTi"), }, + { .name = IOV("vrJ"), .value = IOV("XOFcOE"), }, + { .name = IOV("laWwqxhokKYhhh"), .value = IOV("nkgmAnMNpwncZxzCJMEcypBWzqZGctiRXJwboPgXVuTjsuDUVGebatHZzwwJcTlLNnMBQmBGh"), }, + { .name = IOV("vazVFmUZVt"), .value = IOV("qloFbBJz"), }, + { .name = IOV("zpRKx"), .value = IOV("oQYheEVXVFngHCpqoIekWvMUOCjTDLDNWJpovacNpaBeOLGnSqPFFXlIcwTCow"), }, + { .name = IOV("JNzSzGShktgxBYU"), .value = IOV("MGbrPUyiWSjlGrVYVaZHlkAVDpmwxlmcG"), }, + { .name = IOV("ayHkdAJ"), .value = IOV("CphqdzHsieSrowcoojNVCyv"), }, + { .name = IOV("yan"), .value = IOV("IcUfKxamUjnSdkAbPkcOWdylotsPL"), }, + { .name = IOV("cldaRMGifZQGyuAJyKF"), .value = IOV("OUcgsnpWxpCJNcLkBxvDeNyMUBYkHJhYVaNEVhDzJaKvktKTaXrGBOsijIEgIQ"), }, + { .name = IOV("bwooLHLrkMH"), .value = IOV("pyYygK"), }, + { .name = IOV("LC"), .value = IOV("vwiqgljRkyYjoeEBncGTpaDcOdMbrxHNCzflBYkkdwX"), }, + { .name = IOV("cYJEta"), .value = IOV("CMd"), }, + { .name = IOV("AeEXVfHiXeYsXjgthZXC"), .value = IOV("FQbpgzgPkIJiGdITjcuMsGWQtuJwGFSYVggKiwayvofRgbwwmfcTPZUwNFGtmWtI"), }, + { .name = IOV("zPuovEZComsCSQTjX"), .value = IOV("JXHuBhecVKPZlajaArMNbaIMzNSHcJPlSGanSyIDJfFjbNm"), }, + { .name = IOV("KyqJJyAnDF"), .value = IOV("tMEAdCiv"), }, + { .name = IOV("FHyQPxQFUstTzWTsp"), .value = IOV("yqcADGQvsXUlzNDUaOdnJYQLznAUhEbeqNquYeLcXDwrZAnUulhrgJjShKPlWvczqagJZMCz"), }, + { .name = IOV("hMUueSmhIBNqepQL"), .value = IOV("bvYHDqztDeDRNGQkyiqlQiRsrGgQVnrRQCFhSmGmLXEgLJS"), }, + { .name = IOV("VvIHFyTJxe"), .value = IOV("wppIFHfcEaqKYzTsRSGTFNKhdUFyGdWvDjjuOEgLrwQDpKWtQGmRIaUfdDpqbpjJZZbUWfeTANU"), }, + { .name = IOV("uhzwjUcCOEgFDEOFr"), .value = IOV("cTZGpaLMQjCzOfunPkTMmJBUYcNdWYrTBDmJSxIWXRZiNo"), }, + { .name = IOV("JEWICXz"), .value = IOV("MDjeslAiNPFvnb"), }, + { .name = IOV("WDxPjHrSYsihtVlkBO"), .value = IOV("WCasHiugswjPpKEoFSecmtprvPOecmDpjh"), }, + { .name = IOV("obegHEMQ"), .value = IOV("LKpzjZJbeEPmtVGrfOkLNenKlUiiarVIFcXnhmzRFRfULixKReLoODyLkPheSRaSLsWgpCcOMRzuYY"), }, + { .name = IOV("mZNBVpYTg"), .value = IOV("uLaSjNlfoeJCPCiNojhotzRoVLkGvbVcdNwh"), }, + { .name = IOV("UXhPebnrEqe"), .value = IOV("nPnbW"), }, + { .name = IOV("cUk"), .value = IOV("sjoxyOcuWNULUifjGnQgXmpmqdVXIRww"), }, + { .name = IOV("zcvQhgRXdtlgQ"), .value = IOV("PCyaRQtFxmgqLdSVgiIpQBC"), }, + { .name = IOV("BLdKpJCDnmNpFemtejTH"), .value = IOV("yTaMLZGureyupgKShlhKxBxxQLyIsAxHGqEynRktpPXYTq"), }, + { .name = IOV("c"), .value = IOV("jJHqhwsihiBJAFVOZVrGqIXaTHQYhKAwdUxTqVrpRDuxJmtFarQAyLnuMSXqhhpMSr"), }, + { .name = IOV("EB"), .value = IOV("cVbaIlrKOCofieiYKQtsOvHKiydSCHmCSNhciYJSHwZEeTINgqDqRCoFoxs"), }, + { .name = IOV("PPCnsnuagtFZDGIsj"), .value = IOV("PMZImyfPCqndJJjJpSDAWvTyIwQkcAFXPtnKvblgMqHNSkRMwszAcxMOU"), }, + { .name = IOV("qnCcbChrt"), .value = IOV("vBcAbyrEZinKBlomVD"), }, + { .name = IOV("HcE"), .value = IOV("QYSAPOSSdJDznXFaUfJbCDSzNzjO"), }, + { .name = IOV("TllWGrC"), .value = IOV("BAsFTDtiQXFjETNnKQ"), }, + { .name = IOV("TjLOHMYw"), .value = IOV("lhzRznMJCmHXNLTfZteecafKQVWNrKAmeUGMOaWPYkQGFqRwCZrOdKpYIxqZVWxWRdyizccKPntfu"), }, + { .name = IOV("xhpioWbByfemwUYhyrib"), .value = IOV("YGrOwJUNDPUxeRtcjIjnpzQxM"), }, + { .name = IOV("tVAhZgXVwG"), .value = IOV("OomnZPyFX"), }, + { .name = IOV("SoYFfakCxpc"), .value = IOV("LprImJhQeGrEibEeZdOZBvFuxk"), }, + { .name = IOV("PacKLO"), .value = IOV("aHuVUguRQYrmdoQ"), }, + { .name = IOV("Mfdj"), .value = IOV("qEoVhxGlwOxGjyijJARBzKvfeCXYtpBNlhbymEZUkWeQKDNIPPHFcco"), }, + { .name = IOV("kZaSFOaeWp"), .value = IOV("rGoFlkoKcrMPmHuVrfjEVDTroEpPIsorahtqqDmhWOQbEHOofvbmylxVEfEOYaBrvWDiK"), }, + { .name = IOV("vgfuuYHj"), .value = IOV("vEElpQQpOkoNkGIolytcCfTVWgoXSYURxzEFleF"), }, + { .name = IOV("hg"), .value = IOV("YuTafOQZEQbQXJTCSQGXlcHnkWNenMwakejTcTJPaWtjgljxMRpwgRCx"), }, + { .name = IOV("PimhA"), .value = IOV("DBofYOdUBlLddVAQVIVayJzo"), }, + { .name = IOV("ogfPbGUSiJ"), .value = IOV("nmwnjIoFJOSHHCcInghdgsEoJfFlIRxYL"), }, + { .name = IOV("UHg"), .value = IOV("MLQLqmUICzkMxRLvSmazkBrkHlYQdPHkpWiLzGBirBhsfNht"), }, + { .name = IOV("GnGdryKgmkU"), .value = IOV("JCYNapRIFiGgrheSHNPjcqEznpOMMlPsUJybKAksYWXNHAGZlbbx"), }, + { .name = IOV("wShswexiXjBBjs"), .value = IOV("ffJnyiXgqnJxGucC"), }, + { .name = IOV("tPW"), .value = IOV("znrBZoPNltCrLyxGJqvmLllnNTqD"), }, + { .name = IOV("oXPUPXAZamlHISgglr"), .value = IOV("eGZBRGBphNTYJMbsbPXKQNLSbiYmYQUnJnvDtGltWeOLjcG"), }, + { .name = IOV("gkjJrkxhZsvXWBZnEpzY"), .value = IOV("vYTvYTvhgGloDSoaGoXnrLpdMzhzmiAdoIFPCzSyfZiyLjFHIhrvPhinHQbBliyy"), }, + { .name = IOV("MIWzuOFttX"), .value = IOV("IIjUXWmyzVmcqHrRxRDlINANdGvnMTgkZIxBKjpKooWHC"), }, + { .name = IOV("lcNdOKv"), .value = IOV("YhYFajmAtwdVLAAUWEIiCcVAXBcigvMbAbbJfICo"), }, + { .name = IOV("KBN"), .value = IOV("mTukF"), }, + { .name = IOV("uG"), .value = IOV("fhbbPtZqKRwFHRFhPVqvcbiwfbUwKAzCjoULUw"), }, + { .name = IOV("vetHczTddiCAbGEAj"), .value = IOV("yJbAWLVvMatJuneMrPrlQvuxQVJNEMRYWHkeKwGgSJmuNsZxS"), }, + { .name = IOV("iD"), .value = IOV("UfnjMxMbBhtZKaKNEVcKhSSLwupRZDoCkMfxOnYHJZMpD"), }, + { .name = IOV("FrKJKHmJBqO"), .value = IOV("DWKgaDbRlyPsJODwtTyIvCmBiIijlzmXUqWXJertDmbKlEIKovwsWZHunZigWozxMoTOxjw"), }, + { .name = IOV("ZPQwB"), .value = IOV("aZTdyANmagKGRbwSv"), }, + { .name = IOV("wpz"), .value = IOV("KwWzsZeOhVwrfhdEvymHNWxMcFqkPgmbpcrUURoinLOIrARUsjXQevnwgjMCQJSwyNvcwCNkX"), }, + { .name = IOV("OSSszzMQiOu"), .value = IOV("tJEyDzqajAvinVRbTErSZNbvbOKCPcUvqqAtxQOGLLGMkTtBCQtmBWdSwLsfwY"), }, + { .name = IOV("BfQHogGqaFYrpkmrrilf"), .value = IOV("GFzEBNMTekcGylbDLIjsgAppNcNvkWLoelkZlrwenvNjMxhEZplUdXacRTYzHAz"), }, + { .name = IOV("klq"), .value = IOV("cmMaHQYONsxZFhMslZgxPuQSCRfvazZvepTBHmqKCPLsnfqSwAl"), }, + { .name = IOV("WOJytMbhq"), .value = IOV("AiTdudmKqZaUfeanIAtvTBM"), }, + { .name = IOV("jDLgeVgR"), .value = IOV("KRXoMyXIemfwSmi"), }, + { .name = IOV("DKbEopOgVJNVcDF"), .value = IOV("pwhkWxzJswCtVfNdqzyWBBfhoJPGQGwLkXbHbHBjCRWUwNBRxyRQhbXofwKanKajVfAaMYy"), }, + { .name = IOV("nnBNVeQzJOqTC"), .value = IOV("OZE"), }, + { .name = IOV("QZDigFdK"), .value = IOV("IuXopaDsXExViJTRCYWtGeXCnNbTUWwDXSVzfzRnEdfPs"), }, + { .name = IOV("PSmViBxZuFMvAu"), .value = IOV("RIXjAcZrryinXnfK"), }, + { .name = IOV("i"), .value = IOV("yswqHiwUGBJCuYtEBQDsVWUwPBbbbBDOCNVygGKAefZdlbepUXQoNboihFgEXHwYn"), }, + { .name = IOV("MZL"), .value = IOV("xXLlILsDW"), }, + { .name = IOV("SolDgWLXwk"), .value = IOV("tyVbgowOvJhbVyGvqvXLBuISqHdCUSBXzVBYFmteXVunIfQcaZHaKCtIxqngZovLRtBlbKN"), }, + { .name = IOV("fqjSfRyhYFzUpN"), .value = IOV("sGoaZDQwPOxwhkYcGfrnRjanbEHjyJjRYCzvkdrmljwC"), }, + { .name = IOV("xNYQTcdrQupNqZECRtfq"), .value = IOV("hxjhtIsKUDC"), }, + { .name = IOV("ibXcmyHkIgkLmEj"), .value = IOV("MVRBdOPXvYTADQGNAYEyUvmdyikPSlwcDZPuhzwTEEHsRUCjUaHLhNrbsAOyPgzcROiruGSwYrPYsYr"), }, + { .name = IOV("bX"), .value = IOV("cLzovQKXILVVrnTGxVNSNxZXMpunQJIrsTMAyrsgmdRipoLrItkBRsuCVPaNMOlPMPppTAYbhRKRO"), }, + { .name = IOV("YDHuNG"), .value = IOV("nUgSaPUhkSfYGLgKYCVwaSwpaaEYKWaZUuceohaMgxBZknQECmqnjeHGUiFsUCsljEWg"), }, + { .name = IOV("k"), .value = IOV("GYYSAeqTNZsVZmbupjcLMvaWGiWEnMLLuKvGquHQm"), }, + { .name = IOV("bvqExEjTTBVTCGm"), .value = IOV("OOfDHrZnrFQQWFZnlqfKQXkyFcX"), }, + { .name = IOV("OStomZiBEIvXxry"), .value = IOV("vbgDZ"), }, + { .name = IOV("hYkJUjpsVygUvmLse"), .value = IOV("DUFuNNIZGrkivEJbNJzNAAXdkKWrdrJrrTMqPjjvoDymKnFYXizMmtJUae"), }, + { .name = IOV("z"), .value = IOV("IIHvhklrSusqulsQxioiZCXyiszmzpokvRNKzVOuebRaGfgBoLPWHrQgGZAcpXkNOxyeERXzozBnYB"), }, + { .name = IOV("jvMeshclQubhRT"), .value = IOV("kVlLRTaAVkaVLXKjgqpYOjaduaVTmJvkmulwSsNamkzDxGGqxzdZhBbjDPZuLRRFxjfZxmjqkWfRGVNw"), }, + { .name = IOV("nWceQVULVFSwWsm"), .value = IOV("jfChoohuIrEiBvGMypHcW"), }, + { .name = IOV("gkcBClLlqtAUEJBey"), .value = IOV("tPgefXsSvbzNOtAdvdcgqEbMpNiiPdpbXHsOkZSnxQcBSkbonJVMoX"), }, + { .name = IOV("hWyqy"), .value = IOV("ovYkdUgCoVwObEsY"), }, + { .name = IOV("CCzPKmdaoh"), .value = IOV("dvPMXdLijgNsayjwNPZWJDHGCNvLsrPAT"), }, + { .name = IOV("mDIW"), .value = IOV("m"), }, + { .name = IOV("lGOsLxiydclEChqGqGN"), .value = IOV("KrLnYR"), }, + { .name = IOV("MkHGFsUXZumSDwfvjl"), .value = IOV("piZpJKPHqnIRoMygLimvNPnreYYLuyvPm"), }, + { .name = IOV("mnZLwe"), .value = IOV("SVZu"), }, + { .name = IOV("ABdjyTWkXapLPf"), .value = IOV("YxfckXTHwqSOcJyaihQioiHICYlCafMYgKTHDkWxsTBgVTqvUNJDDtAIXGNdHXDgDRjwO"), }, + { .name = IOV("NLdixXGZQ"), .value = IOV("aDVdQotzVgXVxYykXjDTJgaqrmJDsEOdPGtiXzLtrkCbjpQ"), }, + { .name = IOV("htNjXzrFVgqEVkdx"), .value = IOV("mvmNABxFywFeTJZAZMvX"), }, + { .name = IOV("zmHUmRsgBwEeFeEKBwra"), .value = IOV("cvtktHuVBTnaCHbMiSRbsgDejquAGrfEXq"), }, + { .name = IOV("ewIjhWLSYnonEF"), .value = IOV("kUxhnrKdOdZCcrxSTxoLIaaCgd"), }, + { .name = IOV("GemvEmdMz"), .value = IOV("rHYuJYCGzKLnDKQlXjskyiTFuuMRQFXpmyYAAkgyTBa"), }, + { .name = IOV("KWyIeG"), .value = IOV("qoil"), }, + { .name = IOV("hFDveYlxKDxUMdRMjFKg"), .value = IOV("paCNLZYOsBCbPFmuPcAonGwcBkEdDJTcIA"), }, + { .name = IOV("rUUEB"), .value = IOV("eMwWAXlTKrVOYTxTpHXpSeLLEZNriYToyTVGCmPYDRuaOmAagiInwYoihXxy"), }, + { .name = IOV("eIywKAlzPO"), .value = IOV("sghjIreWyaGgkbVzAnDxeXRXQSWQTyPKHaoMwYllvYimxrNHMrQQbpdczpCoD"), }, + { .name = IOV("wFdyIQoCfo"), .value = IOV("tjCAkdwJEsdTAxUfhCjcCqKJcRwBrgCdqCSzcq"), }, + { .name = IOV("XEocDnMVmYbPkPK"), .value = IOV("lNhwBwaBEpuiAnKzFazMvigsLZszhxRUVrdaIEXAVIkpjsBm"), }, + { .name = IOV("tsHxzVAkVbKpKB"), .value = IOV("rUUjoLdSFkQEFWZPugjPOPbdXHdHEostjKgIsoICqJgVBbRmqXZCAixCEFRxcLaq"), }, + { .name = IOV("DKInRYhCLNfqyca"), .value = IOV("SwOMlEbZWCmcdvaWYysrIsRkyrLLLXIWKaWXfMxFkuYbLfzH"), }, + { .name = IOV("s"), .value = IOV("yKpjkhgPBGleJFtoEgjHunpoLcyVEBFFjadFfWIscPCXnLIdyQjzqdELieUhAcjfNTYyOLeQrUaIIIH"), }, + { .name = IOV("kZhIMcmKczwYuLEht"), .value = IOV("lwMFGZrrhZDDY"), }, + { .name = IOV("m"), .value = IOV("veZVQqrPfgoDPHABKXWRuhPkTI"), }, + { .name = IOV("kdgCp"), .value = IOV("eiBEoQgOpknPsqzXbGEIMrnnxvxcKAoJXTFFrmOHuLCMOpAUTiWmSeZSqQkmvFoQrm"), }, + { .name = IOV("OxBdZHeVxZeWd"), .value = IOV("dLBo"), }, + { .name = IOV("OcpmMFYAShY"), .value = IOV("WlUPVttiNgimYNyTGvsNIhRFzyHWzwhDHgdPUSunINGkkuApfeAhKHxZKxCVnQjcHNDgtfVp"), }, + { .name = IOV("jocdwmxDvqy"), .value = IOV("lokiCSJogzQcSzvEZMfFwTJarTYRkQynPf"), }, + { .name = IOV("qOFQYIVNtzCjK"), .value = IOV("hy"), }, + { .name = IOV("fLJWrpBRojGwEDnSO"), .value = IOV("ZniMBBuFMxCKhBAQWKYbRWWnsymADzytlZbXTcPPXaKTbAlyTFVDmQDlPGQWoixmhgBzmIn"), }, + { .name = IOV("KTRkArjGKGeICbj"), .value = IOV("VeAKbGLPeRhhAUghuhU"), }, + { .name = IOV("bA"), .value = IOV("RfPynZrBhaUeqaMtRqCFKSQFGzfZjvNzBfgCDxzCcHwqUootOaKitMkOLSUsEOftHcZEIZQhEMG"), }, + { .name = IOV("mOYXIudcosXHLuflFB"), .value = IOV("MxvBqTUUWzGtuyaorvdBkqXRQrxfIpRSttf"), }, + { .name = IOV("LpDfSTVuKm"), .value = IOV("BPYHaiDrXaVxXAZgtUJoOmUameIfCMlUczBxnyPFa"), }, + { .name = IOV("GVrnDeMXk"), .value = IOV("naRWAiCweaHpGzOzVdxQrVOzJGzWAnOCpgbhASNjTYQvKpmJMnXYiLtRRDpmR"), }, + { .name = IOV("MrMW"), .value = IOV("tDllVsxxilbyfLFpWixHfovpRCeSNCprgKQVVp"), }, + { .name = IOV("boIRbEuueXHhqekOQpld"), .value = IOV("TpMMvnKpYHbQPrlqclhsVhSaDEUCbwvDbK"), }, + { .name = IOV("NCeiBNSNykZUhFGIf"), .value = IOV("AuGmcVFjLvdZfzvlAbqpIfcszzbSPRkUAFGNocaTGeCjEdFwxITZuYqrcGFglEeKdPvXhLBy"), }, + { .name = IOV("wvoRpJPDsPuYtsGKj"), .value = IOV("FfbEbHFeiPQBXAb"), }, + { .name = IOV("WpahPMnMeyNYEuvz"), .value = IOV("mNHRFhOI"), }, + { .name = IOV("HOwHwxfCXXxEKXBPDl"), .value = IOV("fEZKTVDVXBCgyDHuhRAnMRBGnAmLhWGCawPOVPoTciCkbMhecQCD"), }, + { .name = IOV("BmmITx"), .value = IOV("AXMZocoXiASjezNlaEzqiEkOgkVSKfvFrhtwtwwghgwLtsjdvnvtibEWMhoVplMjyC"), }, + { .name = IOV("VdKRHRztpX"), .value = IOV("qbjXZHXNWrfLTJYJBxdv"), }, + { .name = IOV("wQDmcKIqmvo"), .value = IOV("VxhnexEkhLAsPeuYlMgdtmzjerrGegPifHIlmeLQHYgbRqdVpWSipFACEMhMzQ"), }, + { .name = IOV("Y"), .value = IOV("tLwMsK"), }, + { .name = IOV("fLTPUaRtr"), .value = IOV("PqbXwMxuDLtqPrfmTb"), }, + { .name = IOV("dS"), .value = IOV("dDIeaIo"), }, + { .name = IOV("ugFBmHLLp"), .value = IOV("VVWKSvXvKuSUGOOXaoFqcYMVyf"), }, + { .name = IOV("JqOufSpUhaqoFbLnEZ"), .value = IOV("vippxyDsaQnvadQBfbbntnXShyssjMhjGvYPTegNGRtICtuirC"), }, + { .name = IOV("WLyMrrBFtXjrhqmgD"), .value = IOV("FFZPGSDYcpSXcPFjhceLNZDYBiEwN"), }, + { .name = IOV("yqpIJCRRSJimq"), .value = IOV("zlLuZTXcgdzGYmOHcIfRHWV"), }, + { .name = IOV("zVkmOHuYQsehxy"), .value = IOV("pZLRNvHALJLreIlWrgqLnEkUIggJmmtLQJJnUnhMTuIidpHbucsYdjeKWZvTgeacRGsolTSbhV"), }, + { .name = IOV("abxFvnLwHYOZ"), .value = IOV("gMKCgzzOWMFpUTempaGWQhrCDMiNVpxUgegUcmxCItG"), }, + { .name = IOV("OIVWeMZ"), .value = IOV("lwYHanTmlmeWCvCVHFlOrxzYBgdgTl"), }, + { .name = IOV("fDrrqmpgHLJv"), .value = IOV("zFzpGPNVSeKfVOoaJLljMXbwIwqURlcqvJjwCb"), }, + { .name = IOV("Fs"), .value = IOV("HXNbnJBgfkpbgvYSmgGmVuLZicCHfOMKUQYKkYnHPbfnnwNMrkrmJEKtMZYGzcfu"), }, + { .name = IOV("bazuLgff"), .value = IOV("rAeVfIiNJCwQdOjDwtJzRFDFWBpfizKipdaghGoUuACaSRQekREZzBvGOScYnFqelktbQyUaCOLCZVE"), }, + { .name = IOV("J"), .value = IOV("fiRktEIupFUGxyLfRmdfZIwPxThlNtAhSAsoaDhSNIDTEMFDjtogeUtoUKlmgsxNSddFQdVTyWNh"), }, + { .name = IOV("CctlnkKCRkvekmeHpJxw"), .value = IOV("pJOUgonOSuNlSvgDvVAfIBnrMnwXJhfpTRQeWEwwSkYMqbzRuwZAywZMRXdRtjBqazjQLcAATlFwg"), }, + { .name = IOV("ebtSCpyigug"), .value = IOV("mfQMHG"), }, + { .name = IOV("OmwYxtpHFtLfwk"), .value = IOV("KOclsbGkaZQwOcRyQDhAHIJVMJeBUpVnZkzyXWhJxbaxGgiIURMGMwPYLRpyJmFYSOolIeBqpTqhzSKg"), }, + { .name = IOV("MsVxcmbu"), .value = IOV("TxFIWFRENDGxnJCCKLecTjsHXjiCvUYJTsIkmMhRamYe"), }, + { .name = IOV("mMaKFZebAPx"), .value = IOV("mdVxAhvcaHvfzyDmwBoKIWBRJdkfSRjvkLJSUjYWqmfCNRUBLIdslrhsaOBYlIEvnqy"), }, + { .name = IOV("YJhXyEXRkUAtkDG"), .value = IOV("MPdQwtrxdVabcYQxO"), }, + { .name = IOV("yLUVaVTkvNLUhDWnRzO"), .value = IOV("se"), }, + { .name = IOV("xbFhwAwJQrygmrmbXam"), .value = IOV("QTpPbNyUXuWa"), }, + { .name = IOV("Jn"), .value = IOV("oDJyOvOLhna"), }, + { .name = IOV("DZeJdfTHnfLvJKZVYP"), .value = IOV("KeerdUWbSVvPqjYjOPYvPdmVBAkGhaGOPfDYyZjBYPECEBDiyQvGxRXwqGG"), }, + { .name = IOV("BDxHOlVxbXBtppVm"), .value = IOV("QESWISNtiYAsdi"), }, + { .name = IOV("lQWAQW"), .value = IOV("uGCZiLCzxVAovrJqqLzJuaTgxdsOmPkQFdUccEhOcEgAaMhVaKNkojkpwlQDWavjfRqUz"), }, + { .name = IOV("oE"), .value = IOV("GFdfyNcIihvSbQfAddGCNmVrGEpZEidltDBBfAxSHhowffBJlGMZHSlAuGZFGJU"), }, + { .name = IOV("vLZnAyJDqmb"), .value = IOV("OhTvHnqMuASAqEHwTBOyvsNxijBsawgellnhhEffLuJhsXHZ"), }, + { .name = IOV("UpkmO"), .value = IOV("YWCOTxbVcEIRsPAiluoLwwghQgWegTpfrHERE"), }, + { .name = IOV("dAIVd"), .value = IOV("ljjpYhlAviXLSXbTzfGlkjeMDRAPBVQqMQAKRPVaMeQucAKiFdMdYIl"), }, + { .name = IOV("g"), .value = IOV("tPmSAPHovhKfvMUEHmPFNeEeRmnYMcnl"), }, + { .name = IOV("GMjMJuDl"), .value = IOV("uXoCmmznIZmXsFWEhFbmHkfHNVDSKsQoohfDJUXeKeBjCrUwOJyUwQWJffufbOosDGENbepNrhNibFw"), }, + { .name = IOV("tZLwNugpA"), .value = IOV("sLOGRQQsSKfounNpeuESJchtOVAZCTUZnCvpCZWxwaGxhsJXjuYuYDiSbZRHbJQOFJhnrzwcsSFxfc"), }, + { .name = IOV("GTpknMEximfbHlGzlqK"), .value = IOV("hKAqBcrJKmr"), }, + { .name = IOV("uLSjx"), .value = IOV("ZNIXXHd"), }, + { .name = IOV("vFBXUlBV"), .value = IOV("gupIVKeJESBmZrGpuvXZzdLjJjSUCtbkyuUuGOZFAnGoKoiFYaazAKa"), }, + { .name = IOV("ffUmzWjazCFATIjn"), .value = IOV("GBxjVDSBchNquDttHRutlyRObtJSucCUbgtcpuDuZrkrbTmksBEesSDQIExkYmsUo"), }, + { .name = IOV("BJOjoHLEGSUppveoyxC"), .value = IOV("MwyWRVHRnbBjFuPgKrdQrTXiYrtXDKeUJDXiMiJplgvrRQlprxJdcdGehggdkspFSOmqBdQXbYT"), }, + { .name = IOV("VeenDJ"), .value = IOV("pfAGZpLxDVNRKIBXgIarGBZJkLrQfz"), }, + { .name = IOV("MGsirYvPyl"), .value = IOV("xulkTvekhskctwCEvnaTiqPkyHTtqBRxHMmQzKLdmePFLsitwM"), }, + { .name = IOV("cZ"), .value = IOV("vsaxPhV"), }, + { .name = IOV("fWXYCpJyuA"), .value = IOV("mHpfCuIzEj"), }, + { .name = IOV("HjAfnPFmZXuUrYtifT"), .value = IOV("NWrUwUflTsGfhUMfKuxpTWibhWytsrNqiwwWRRABKbckGtbadDd"), }, + { .name = IOV("VJEachyB"), .value = IOV("XvYiHtEXQerWplyWOPHJTTckbRRWTodTncyJCMZigJ"), }, + { .name = IOV("UfW"), .value = IOV("yrlDwEUjKogZODGpOUVIZEnnLhomENpzNNYxkrgKdYWvCeJoJUDkpLRQcJYnGSSUATprdENAdxZiBi"), }, + { .name = IOV("uRdey"), .value = IOV("aeDIMV"), }, + { .name = IOV("eRyhOYvNTAJ"), .value = IOV("NTRObNiDoBbeGcBHsQzFMPrKZUVzihvpwxVufoTNpYMmBWohhOwVhrBOhtMilTPLCKThVdXM"), }, + { .name = IOV("q"), .value = IOV("ZbiqpqjxsulcSKsNMGxPplpvXcTzofBLJtbtGtjyUiqvpXMeEdhSICUqvpzIdmMbvrQlMZSyxo"), }, + { .name = IOV("MLOlAppWxAsglJuWv"), .value = IOV("qMywvNQSVjgzTWTbPbByIuHASpRKRCxNSeCVLFKcVxQaqDSYxovnzdcHqQuQvgiLba"), }, + { .name = IOV("hUltC"), .value = IOV("lDqmNPacR"), }, + { .name = IOV("VcAMZxf"), .value = IOV("omEiJQpaaVcfygMobKSePPIsbKiYDcDVjlDEcGwhsGbOk"), }, + { .name = IOV("TXmQaxB"), .value = IOV("ZRJl"), }, + { .name = IOV("RzSG"), .value = IOV("KXbTmijOjITeOprVndXKYIPwqIHEXrlPpvsIbPCaCYJQOZ"), }, + { .name = IOV("woO"), .value = IOV("chjGipwKBeQOSgZILLhkjfuGxSoJvAaHbLNrfnDXRWavLLMfSSZjSEiqSksleiOgaeVsUmxYEKAkHcf"), }, + { .name = IOV("FIhlmhq"), .value = IOV("kJJstbMpAcxETQDjNQvyDPGRLBMOajgRKOtqiUbSPtJXmDGrJZCTOdoOusYXUH"), }, + { .name = IOV("OpZzeieYfmfHBBAo"), .value = IOV("STTaakLtqZKRxlZlSKbIOellFvTXtXPqbccVRfnSKuBQBWxfHoE"), }, + { .name = IOV("sOWUEDQBnZQJ"), .value = IOV("JxmFJHiOUyCmtOxjcNnfyUTzkWSbbsIM"), }, + { .name = IOV("tvMCUunmBt"), .value = IOV("EiKfprA"), }, + { .name = IOV("PoMzRpPrBJKsbeZccnp"), .value = IOV("peVsefKSbcsrSyhzejopiGYUvTkt"), }, + { .name = IOV("mHeQaGCUIlYmHzCiX"), .value = IOV("BKebHWhptxBQwyWFiQuPKLnNAAiueldGICXANwyqLXiyz"), }, + { .name = IOV("nzpCmyXGyn"), .value = IOV("ewAOPVVwOUTYFdWDIwUzVeAlXbBsXCFGJrgsZJaGzYsMRlqeBSNuZvylEenBhThhNpwqooFwYNbMhK"), }, + { .name = IOV("kCXfYY"), .value = IOV("AyGpzgtU"), }, + { .name = IOV("gbZxHvhmzVc"), .value = IOV("cNMolVWSFwvSmfLFzbsU"), }, + { .name = IOV("aEDKl"), .value = IOV("GjiQILLYyEdbiLQKlVeClqDB"), }, + { .name = IOV("XDJtBluzBqJGMRNJdDKV"), .value = IOV("jyBYXQRaCVMsQlkxPdJhgMRukOVGQIPTypMNXNBNdivxxSesSEhORIDPuVnHDAEdPC"), }, + { .name = IOV("RstUAKMmFXeXWC"), .value = IOV("TMgiGlOKTcxtYXqofNCo"), }, + { .name = IOV("VpBoGFuHiNMpfNhzIOjo"), .value = IOV("iNAAh"), }, + { .name = IOV("JdcFyFGhSmTufe"), .value = IOV("YbgFXCaNcZDFWPeRwdUxSFioKzesFvGMbwPRpWVoQeCAwYHSSsANqo"), }, + { .name = IOV("eZquM"), .value = IOV("BifNvRnflOMghGZdHyIPdiuZYesqXqCkoazqPxZOTqyrljmVSfRnRD"), }, + { .name = IOV("YMoRVU"), .value = IOV("FcBaadPYpIoDSKECbKISMaDPqzmYznBiIqnzbboeSFOfaniTqnEvmGoFWncNzkjqvexQQR"), }, + { .name = IOV("VYwNzNnNQvJ"), .value = IOV("lXOzHJkJsLkwausUCakaHnvkmrUSOCPFQESfKaVK"), }, + { .name = IOV("BYpLaievZZNhfby"), .value = IOV("dAtEpnkTOMcMffzKmSwgOGuuGMUTWKsKfjRlrecwcbpeTlpqRSUrwvsJOTxrPLCphIvUJP"), }, + { .name = IOV("pvJnfGFfBRZzoW"), .value = IOV("lwxhVmgKBwTWJMQYHHnxfhAYXtgVTOnYMtvaPkRUGpNTbrerko"), }, + { .name = IOV("wGnfcxqKKdtp"), .value = IOV("aJDkMkCzzseFOjicYGZhVIkdveFkeaTvFvYdVRMzhf"), }, + { .name = IOV("DK"), .value = IOV("BujuYApSCLpEhpWhrkFLOmBBzppNocqsapQqxxsrxweqt"), }, + { .name = IOV("hrLCFseZdwE"), .value = IOV("GCgQEueDxodtinSvbRVoOceMBC"), }, + { .name = IOV("aimktTF"), .value = IOV("MyExVVzCYNBohxrWFAKCCttOUtFlkXk"), }, + { .name = IOV("Ox"), .value = IOV("oAGnCGJnUoiSTZkbBrEfzfQbIVOJAbVPTAReEJLqDUEJPeBJnaCkkTutdokyxZ"), }, + { .name = IOV("QhCfBEHGkbWFOvyvbBIH"), .value = IOV("TjbnkXHaKWBMzBlVgxcIUHdpmLkSiDzuhWEIhXQMKrG"), }, + { .name = IOV("nmQdXt"), .value = IOV("KCTyElFQbhZVKGMbKXXfVwRxvINjwfARb"), }, + { .name = IOV("ZWvMIpin"), .value = IOV("vVAMkNCbcSjRpaflRHQEFjzBzAtktWGXiZXCECdohkTNjRTuZ"), }, + { .name = IOV("CVdUqvQzEPlhgsFQfRMv"), .value = IOV("KCPhbGwEbXnkAvXkylSV"), }, + { .name = IOV("lFLvS"), .value = IOV("cKirvXerYHkZMdaWHMxGJgPCs"), }, + { .name = IOV("WHXqGHRxFdAqMhxrSVC"), .value = IOV("pqziBiBDIddgn"), }, + { .name = IOV("DQJeuy"), .value = IOV("cwGUvnbGelnU"), }, + { .name = IOV("mScTRcmpFWljl"), .value = IOV("ShrDACGHRgErGBubrixbRLtSbQilceYJPSCdrLthiInUhaoWcYfNUI"), }, + { .name = IOV("tWcwmPvmRkX"), .value = IOV("exBNvznHKRiSWzRYreQoBxuldzewJrKQKMXEVZSQQvfIAlHBBfBPyRjf"), }, + { .name = IOV("iWLrZuNudLVk"), .value = IOV("WoCkUXRvojfaUkobHQxLTMbLQXxjalaqpSqqbWSBCWzvzzWQdmEnEZvXk"), }, + { .name = IOV("ewBeqwIqcqWQyVIzyLH"), .value = IOV("UTUtrwzAWoJSAlWhdzPvBV"), }, + { .name = IOV("RGo"), .value = IOV("DDdsJATmqIfAJbsMPBgRGXRKLMeSCTHqWjdOZXPlxkKQuyGtvgqZaPXePYo"), }, + { .name = IOV("QdfizJyImVtocfUpA"), .value = IOV("VJoYraBaKUbNdsjODklrRZbWRcxIQklPV"), }, + { .name = IOV("bTvMAssdSMrPIgb"), .value = IOV("kDMylTtRyGplXxNtOaDi"), }, + { .name = IOV("DWRSDXraQLxAqyUAqUD"), .value = IOV("kzvfSDzuXIp"), }, + { .name = IOV("Of"), .value = IOV("Qny"), }, + { .name = IOV("SEkHWgnctazjZHsu"), .value = IOV("OdYnKDTVsEJAwkjpezU"), }, + { .name = IOV("OLaebqSpmQZe"), .value = IOV("g"), }, + { .name = IOV("Dm"), .value = IOV("SFNqmdUdhUPbAMUdqxCCYvEhZkOzabPnBBoKWdJU"), }, + { .name = IOV("bYwVqJ"), .value = IOV("bEGMqLKeMtHpmZxWONdPuBWIeqElvjHqhtZWZTfecemUxFTdSAyVdbCzSpkdIfbEdcGTNFaxksDuhNEO"), }, + { .name = IOV("U"), .value = IOV("SDfgevnQOiAgvczmEctnECzVyN"), }, + { .name = IOV("ONpjbFEXIKrlnMbMaQX"), .value = IOV("AxlNytNMyYHWSYMaGhSBksjJMicJjxlLkXnoGvHBlRtSTsttxAoRpYVmrnpYvPJdeuXEdSKJt"), }, + { .name = IOV("XRqsuhYHxyvQd"), .value = IOV("KSeaaTRaQyDoVaVdmFwMQluKiGlxonmbSSYnUERIwUiTREzrJlrTdkkcpYTCJgOaJLVoOKNibDiys"), }, + { .name = IOV("cTiFyaGHDJVsCQkH"), .value = IOV("PYYFZHCViThHFtTvSHflYmzdXtlLgnzdarNPfDQgfTZbKuJLhpFtGzyUBAPlLpmmiMWqY"), }, + { .name = IOV("TUqvsPMLxHRWxzRble"), .value = IOV("fxoJAgtyXcgDzJztZzXWJXDFKbuWIgWMryRwj"), }, + { .name = IOV("VucgbJWgmMfIH"), .value = IOV("wszRbsVPZdEuHFQbtakdbSYge"), }, + { .name = IOV("OlCE"), .value = IOV("kijyulXkXwMWxibYGFNLZOyGAPUVXgruZNRNennqFEkjUbFXwnwulOiWKeLPtGDWDGGiDhjiYmGWO"), }, + { .name = IOV("FBBVzDlhXafyYKrEEVt"), .value = IOV("ZvxidlHFvPdKtwgioTaeopehQjKAgWurLOPrMHrJXLMfQDOSXHDxmhwUPrXDKeMfECLCwruIqaAzkMae"), }, + { .name = IOV("gHPuDkxhia"), .value = IOV("GsWWVTrZdtKjMXBQUHOaAroXFyiazGbNfGeaLpTmcijWTp"), }, + { .name = IOV("euEEIJkpRkPJiSQIgZ"), .value = IOV("eKIMfFGmTVbpYYHFnKrjstIrIwbnxAoitKCmSiOJBifBUY"), }, + { .name = IOV("qLsgvNtmXqdjprw"), .value = IOV("dwYNYbdChLetm"), }, + { .name = IOV("XQjTUTVw"), .value = IOV("uigfDiAdvqwShgzEcAHhlIWcsHWgYrjxaIbXstbxuQAOSiHnMkotzLDBQVOYmb"), }, + { .name = IOV("MJFSVLgDwjuhJMOTzgqh"), .value = IOV("WJByljnyxhqIRHGOQiIsDvuTodcHYirIkpaznLYxfnjBcugOSNTNkrViTetfMyXTaPr"), }, + { .name = IOV("WiWUd"), .value = IOV("pWJZIJPURbakvQbQUoDhaaKwAnxxUCmGLpYtqLFevFaiEQIOqsHOTBgTkdnfQoFONLCZGUrjd"), }, + { .name = IOV("XnAjxSZYxMQWeUghqPmc"), .value = IOV("exyzjgdFaYwlqzWcOcTDCWgYiHcsJ"), }, + { .name = IOV("r"), .value = IOV("PvlmDUXBAaymHlRoOiUTUxtrBaUpZeAxztXljMPzokmpAmVtkEMcVpiykzxOjl"), }, + { .name = IOV("DZGqHrRivTRNnNE"), .value = IOV("mqCYvedEPtfQbROTZFpBZZYLvjqlZDfZHEeHJlztzcJRjNeeWBEvqKps"), }, + { .name = IOV("knxamJtIojGme"), .value = IOV("RQYjSKWZffzNoGlJcDZuzTIrumlCbkMNVCLDwcCfjVMkahLFR"), }, + { .name = IOV("L"), .value = IOV("JnKbEHbCAnaHpYXVkuDRlSekzdzDjQBWpVUWZTUQs"), }, + { .name = IOV("IFYTgOJlRbrAGMPpdY"), .value = IOV("DdITasMamXhCPMFvHZFWAczONgvAEIiKUdKhDYCeJLONfiNGiPNBBUKGnwpTmYadoLg"), }, + { .name = IOV("j"), .value = IOV("QStxmgESdCXZxaICGsPejjvscKBBRzXtDxKuWNtqSpkBhDLhXBMFRgJPiuNHTojJltq"), }, + { .name = IOV("pxBdY"), .value = IOV("UneGVsVoTNnlBHwpbNiwqxEJAAcxoDjjLspvQrVQWdv"), }, + { .name = IOV("tTPvp"), .value = IOV("jKNbEHJmGAtHyiVnsCftVHvJAcMdTrYmPPMgdMirjPVYbyTBfOQqvkjCINcPvMQijybNvkayGg"), }, + { .name = IOV("iiBmoUzOiD"), .value = IOV("h"), }, + { .name = IOV("P"), .value = IOV("WUmFqXWxfCmOqGYjEHBAMhSA"), }, + { .name = IOV("CsJAIyvgFqr"), .value = IOV("MjpHHKeybbb"), }, + { .name = IOV("CsnwvjKcD"), .value = IOV("LpNmFMGbWEzXSrhlkMTaoBpMMSukCWhGDblpzRXMNcRybtSFUbsNIHM"), }, + { .name = IOV("TupA"), .value = IOV("VdVYUWhdlJTRvAPPSVBXUGLfjeZJeZpzjxwG"), }, + { .name = IOV("NfWnIcQ"), .value = IOV("coJjtFpHRIkqkPISvnahJQBurccZvllqmyB"), }, + { .name = IOV("HfTnlr"), .value = IOV("yIvsIUhavsIVpWuCUHlPODTEFFIMTCZbqhtkbCwIbvLfAqRKDwvAHBXaskXJGRHXwyLTBjpSjnGR"), }, + { .name = IOV("KivBRAUehKloUrGotssl"), .value = IOV("JaDAalIrrwtRMLSWVPXPkxpBWLolEZhmvkVrNTUNovjJJTRUtT"), }, + { .name = IOV("pwIHnekURqDqWJjgOz"), .value = IOV("LtjaRYuTXGQCvG"), }, + { .name = IOV("gUCAVHUGNWVu"), .value = IOV("fGbvHYxgJht"), }, + { .name = IOV("grxqLJyDSFpHPnc"), .value = IOV("puLMDQUOXMygerWLqEGlFisywaTquiFFZInPGRIVlemgrA"), }, + { .name = IOV("SckGcLkaXDZok"), .value = IOV("QUkZPlegxVHMGhfDdyKXCitDkDnsaeZFOkIFdWNylNOspQAGNnAHyaLTnDfTUlplfpHz"), }, + { .name = IOV("ISwZSfhqNXTOs"), .value = IOV("axYXblgoOAClPyeBvSOvLIXBqNscrIjGPEtxrPkxiDEMeCxuCsZCGZ"), }, + { .name = IOV("LGOlJsfRId"), .value = IOV("KQVNgcPUnLqIsQqEBNsgBcHcmXGgerzbyzUHaiGmWCDneRDXMcCPMtx"), }, + { .name = IOV("T"), .value = IOV("tJCKceVzgguVxRzSBRNCJPlcttRqiIHghZmSWUyzuMMeonZXttnjFQumOKaQYDQJSvnVJsdlAiu"), }, + { .name = IOV("cMwWBZ"), .value = IOV("DalbtZXUioTeuDdxLpekhEKribAPsWfsiCtJJsVOEDUAEgErgXqQplBp"), }, + { .name = IOV("rSMGxe"), .value = IOV("zPsuyvopzESCptjzeVcaHdaLcvBFCwadaKMqrzmrlydJ"), }, + { .name = IOV("cCkWQxy"), .value = IOV("gVmsHTxWYTmIFssTyjwCxaGPMUAuIAQrxCLhRXQhfAQECCYUYJxEfiyxNhJUAZKUGQ"), }, + { .name = IOV("WJFBxtMGyaYlPDMCoBcC"), .value = IOV("RbYpKIHFJtlJNktnPNsYFoueSoyMPWDAPxSaFJLbHuNRDyJlX"), }, + { .name = IOV("FDapSisAEEjsh"), .value = IOV("oMFOtAgcLLNktmizLFHZRDVD"), }, + { .name = IOV("CQJOGFaamD"), .value = IOV("ONsWVBnjmFGc"), }, + { .name = IOV("us"), .value = IOV("YFvKXJHJIDSSSKNBvAvVwndjwUXdDVYrcXiPBPhqUZNfXDascYFUyocYCukAV"), }, + { .name = IOV("nWuJpgsVjpn"), .value = IOV("XyDJWFtxqILE"), }, + { .name = IOV("rhpm"), .value = IOV("Mf"), }, + { .name = IOV("KPWmJ"), .value = IOV("OUFUgwLolxHVTxfvygINISrPjnHdntjjDmtPBztMeFqpzMZUaBfyQUfV"), }, + { .name = IOV("hQwtWisADhRFHJoyqKh"), .value = IOV("PMVHOmNyyjIomshSwACOyppfFXHimtIHiTrCztPwhuQDQZqHCdMNfLcMag"), }, + { .name = IOV("jbfYPnBfFLpgDKsTVD"), .value = IOV("UaGQfXhWmpCnfaHoDpKgrjaSJxQOrQjGy"), }, + { .name = IOV("dTsMpg"), .value = IOV("IPlhSWNYVlVHtUVvBNTrXfXcGOlecMynqdRFmwWkgfSrrHKaEmmMLfNJoJQnqhTpetOHitFwQuymPnC"), }, + { .name = IOV("sHDb"), .value = IOV("MSTItJcHbZdUNUtCWEvkjCjNInByyOlpjRvNrazsNaHWAHEaZMhe"), }, + { .name = IOV("av"), .value = IOV("qAGoqDKjYdJBvGqVJpPcSFbQjXOuxi"), }, + { .name = IOV("GEuFUrNIbRABMbYUao"), .value = IOV("pvGngoKLTiJVxgVwaevbCdNwJCu"), }, + { .name = IOV("PncGojQhonDMUXztA"), .value = IOV("bcevZdglDhJHxNgpRzDqzrPuRbqoXSCbxvpWDy"), }, + { .name = IOV("BhmSKsiAnerPu"), .value = IOV("TsaMAalzTQNmqwNsFgmoLkBOWWBxjrwZUgaoOgwE"), }, + { .name = IOV("eri"), .value = IOV("NqGakXkWesfkpjFcDhuOCGIknkUfQpNyWz"), }, + { .name = IOV("n"), .value = IOV("KSLWXZCAUqqMqpzyMTMnKnRscaoejjlvEyIafJEmPinXfhBprxGgyLCjfGyzvXptnbYGFJCggArekg"), }, + { .name = IOV("ukKBERMgARMAXPh"), .value = IOV("HvkkPQOWxyP"), }, + { .name = IOV("IENLdlIoWfFNljNcu"), .value = IOV("TjRCPhpLCTtNisWjvcIkuQtXaDwoDMoPrMoFnBmLvYoPvWvwRHocvMYPXq"), }, + { .name = IOV("apSOmcNOFQga"), .value = IOV("nHIHoHDPgFFAsAZSWTL"), }, + { .name = IOV("NwiK"), .value = IOV("rDpvWDEMdgEqHXmMakxCPHDiokbeHKcHPDwiXpSNFUQMsHFuKiFkzDSngjHnPJBMyNtJLbZY"), }, + { .name = IOV("RaAXVCIPwnpUAxRy"), .value = IOV("QqwDKjTMufHuKBTtABCdlQfyOWTUAvSXkXZKxsWFOKcSWvPn"), }, + { .name = IOV("ShuReppFMHifxpslZu"), .value = IOV("wwrWkobORxUeBsuiAdXTMrVifgtLBvuDRXjaODRpIMUuSHfofToRcImFpitRBSppypqnDcBviJ"), }, + { .name = IOV("PqJcdOHCkjDZKc"), .value = IOV("vyrVYvx"), }, + { .name = IOV("UM"), .value = IOV("OrYHFuaxsqbxWTDbowVaNEQZdiNpxNMkQpOCRnljaBqTGipJHHOlYhvdmXBJ"), }, + { .name = IOV("tXxBEVxM"), .value = IOV("nLrhuOhDpafDfdP"), }, + { .name = IOV("rWIrAOqmQcSnhxwdEL"), .value = IOV("sYrHBQJabojUGrjUuvHKcoVSa"), }, + { .name = IOV("DpYxbThrsIgpacqA"), .value = IOV("OqyjyMwalDvzohydGIkjakzyRDTZBkqjFfgvvWwrCoIFidgYvzAyd"), }, + { .name = IOV("MzZvpySHFaUOQElwpM"), .value = IOV("uZeAJgvevAhwerqfVbqIYXgybwzUQpmKISoseJXjfPtJdKvT"), }, + { .name = IOV("kB"), .value = IOV("IWUTwsUo"), }, + { .name = IOV("oKNwiRaaskyaqERzJkp"), .value = IOV("ue"), }, + { .name = IOV("NotTNZSopfj"), .value = IOV("OEoCXBYHXIDvUoDdvebLODBDKJwgdMboCDXmwkGFRNrw"), }, + { .name = IOV("ik"), .value = IOV("WUGuOrUaFNyrbnUtWspxeGohHwpXxDjPjdKxKRa"), }, + { .name = IOV("tfYcWavTOHQVCiOBeaI"), .value = IOV("uwncuyxWIjTscFSmdlhwDkJgrWMZKNmpLXvjgvLCIlWBqxMTnKxJtkXdrzdYVXOIUCUuEKUehK"), }, + { .name = IOV("QWcTLZxZOBkTyRYcX"), .value = IOV("HhhpdgkDwMYBhjhcFetorZKdpVAWZMBhMJtSJfMW"), }, + { .name = IOV("HeCkAmLSPXnmZhrUI"), .value = IOV("FKCvcQMCmbOxVWGbZUmpxVOSrVGEfJUDaRtjTkmJQrbNWDuVElYSIFgWUIQVNCoxjQJGsqbOeYze"), }, + { .name = IOV("GzUPT"), .value = IOV("mqLIqXeONfgTKQdFQlDYRLMdSVPfFvNhQbtcSJtFjGSLYWxVWcnHDqQqZcjUpXKWWJ"), }, + { .name = IOV("rSjMdBQbLUOwvYh"), .value = IOV("PpApugaUKcUVYkHOVuyMKQ"), }, + { .name = IOV("gO"), .value = IOV("lnmSyZCtWrYvJymoCDBEDxDlkCrUucAwwfu"), }, + { .name = IOV("SaLJjJ"), .value = IOV("pvLtEQuZxhz"), }, + { .name = IOV("MoHpMmUvLVtaHpcequ"), .value = IOV("CAuabkYztjrNXCWkRUjQxzXwcpBpmmyqYlUNYnOyLQT"), }, + { .name = IOV("rQVuPCv"), .value = IOV("ZXgWsimgXXoAIweL"), }, + { .name = IOV("MSuuXTEQz"), .value = IOV("EaFcaqDrYDX"), }, + { .name = IOV("OYYybvCswNHNmXrVAwM"), .value = IOV("vJDZVxIoSoCDpYJCCMApcaWmNFJJxQuLKIFmHrEawOWaymPHLGUNvmDrmnAcpEBmezCNwZgAEvz"), }, + { .name = IOV("BRpUILgqlcLLlMZXZOew"), .value = IOV("hOSvvzscmEiIovcavnAkxvSJtrBbemdPSuBFXqlZAfxmDAXFDw"), }, + { .name = IOV("GInDdfNpxZcitNHA"), .value = IOV("hayQL"), }, + { .name = IOV("jLB"), .value = IOV("RiRiSBIXCezECuQlDhRzbwvmHRqAviSkyZZscTaTqJfXFQMsKDVSsFaPcbVFkRUxaWoKIbvGGBHqN"), }, + { .name = IOV("xtXQBpTLDbRucRgvYzvd"), .value = IOV("Q"), }, + { .name = IOV("RpqvurFn"), .value = IOV("lvPPuYdkcPIYpDhcfSszGyFNQXVnX"), }, + { .name = IOV("qcPF"), .value = IOV("YeZtRbHUgjRHHfQgmogSpbVzKjBioLg"), }, + { .name = IOV("hXVkCTkWrvYAGLlbSA"), .value = IOV("yhrSUaSuoenWcRBkatoQILrJlsNsLlkxAmVcehnGjcIrGBggZDfIByZSzj"), }, + { .name = IOV("yKhOEbYtVwGj"), .value = IOV("olfqMpKwLYqOtEkcpDmHZVFGggzJNcDxyhhAHGccGDaGzVlyhywIOKZGF"), }, + { .name = IOV("HPggcExFHRJdpjtvwXEK"), .value = IOV("xdhVwuDQBcsRdhWeKuKJIqLPDLSFDdciQjHvpaPINCZvWA"), }, + { .name = IOV("JJgRpzGCwL"), .value = IOV("vPPtXsZwyuyJcnxlYWyQjYpQLMCZebgzjmdUlcyhGxqcQYnYpglofKUrhXpq"), }, + { .name = IOV("wjhIpoVDfPVvkSlrRLiB"), .value = IOV("kwcSZkSTivnilugmAVyREHQiFOM"), }, + { .name = IOV("ByJQ"), .value = IOV("NuAURooqUhQZWtolUAlOIpfHktAplYxbdMDscgaxuPwpqelcqfPzkuoSnHmbKNTnGnLQDIGazsXnn"), }, + { .name = IOV("zaLyNV"), .value = IOV("NtBKcFQYpeEVVUMDlRlMutLbJDePwyLENekmq"), }, + { .name = IOV("PORBoo"), .value = IOV("WvOEbHlFMFRmiGpVOgfRFKFgwlWgcngsNRBNHuulucSmpRZLRiojrsXMmilnVwWVZhEwCU"), }, + { .name = IOV("YyEjya"), .value = IOV("asmhaNJNnZETdZjnZUGiBYrvUDKGFBekiAMyf"), }, + { .name = IOV("OXfWkVkPsQjBtqbz"), .value = IOV("WuprBNRKqJjhqAffZsfEKbLQ"), }, + { .name = IOV("FZbnGIabFApPWBSia"), .value = IOV("FQnIbqCThFlpQgLrMRbeJPVSHdm"), }, + { .name = IOV("sowNMKzwvf"), .value = IOV("RjtbwmWfnuGngMhPyrBaHKHIZqPDDdTfplZOtEiNbnBkbkVBRpNdVpVACvClOcqavWQYNs"), }, + { .name = IOV("XwuPUOjALLGMmXmBHx"), .value = IOV("HSqgxVWImPxSbuDzDVXjWPZlwp"), }, + { .name = IOV("juPMVPqcP"), .value = IOV("FodUPoOCkekMbahuoQhngzUTHUHINVlydIiLGJFYJzfBaVbVB"), }, + { .name = IOV("sczPd"), .value = IOV("gtsWkDxJHBBwgrWDBDTQuhFHGZesqtPFNTsTIMZmPPPZuPtVPvMWJwL"), }, + { .name = IOV("dNDQkLcdsAd"), .value = IOV("mUILxMtuhXGXsiDIoGQqzrBZQuaDOLLdVVnMUyyBfIWGSZaYnoALACLBb"), }, + { .name = IOV("emgoKhI"), .value = IOV("gTybqrLeORNpxHWSdFrizPkgSHfBOTnfTHzpIYRkchOqOEkxNyBXThUyDW"), }, + { .name = IOV("OUhBrfkoCnNfpF"), .value = IOV("kT"), }, + { .name = IOV("GaqT"), .value = IOV("EFevb"), }, + { .name = IOV("pzCUpIuMFXpsqnwGyOyG"), .value = IOV("GwwgaxiEOvsEEAiOxueYhnIVuVCxeJCwYcQAxouzrdlMLSPv"), }, + { .name = IOV("BjNldnJu"), .value = IOV("SexJnBvQMTZKd"), }, + { .name = IOV("KJhbQGxrUFu"), .value = IOV("JOAgFpbkjCgPuYNWBebzVMwFkDMHbitBzoenZGeWaOtaBYKEkGrmeGWlkfLzhcj"), }, + { .name = IOV("YjwLQDb"), .value = IOV("JrlYJgygvrddGMQgJToYzTCQwQzkjSGFBSImKrvZpLpQhzDtpONtXeYKGcBxquaUmT"), }, + { .name = IOV("dvrQWD"), .value = IOV("KnJdjPIGarAcxcSoVLzieGBwFCktbfYkoecmvWjfQVtaUedomkNENxOMEXJouiifKuLgReskNViXvtZg"), }, + { .name = IOV("hvxUInpnlimHl"), .value = IOV("PWMbIvrjhRhWGsUirOBpGPzVRXTCtzsydrxWlaSXKmbLBj"), }, + { .name = IOV("kXcetKqPhqENhh"), .value = IOV("IZNdUbZxVcjelBXrluZpDFrTMTriMbyImDzVKnnspqzjrXYFyOFZIhTMIAWkWzkgsWlBXJMFHmmOTr"), }, + { .name = IOV("KqVZMAJZQAReXzE"), .value = IOV("MwdLhEaGJRQOwnxsCTBEvktruIJNUrgTjpDMzAtMzxqaQVRsbQyMDKYnjtBH"), }, + { .name = IOV("exoDjkmWEvexyGD"), .value = IOV("HxHiaYSIPJCRrDDGnRYyOBcRIOyYEPPfZjWTlBDdLnovLjCLVYfIMKlNpDTkpnlEOGUpCoXtAG"), }, + { .name = IOV("IRVSCeoYwngZDx"), .value = IOV("EemdVMMIFwAIvTq"), }, + { .name = IOV("VwWFdiITCq"), .value = IOV("fohGWcMtOjUvtNjAegaaztsrcYPMEGEgLBMmMPjCGqNZHjBjnia"), }, + { .name = IOV("n"), .value = IOV("CvGvYqHwuXishjKOqJfw"), }, + { .name = IOV("mitsKjMzNDiY"), .value = IOV("rNMwDjveESDxWStHHpYvCYqMMJGBMQI"), }, + { .name = IOV("r"), .value = IOV("dWmozRAJQHESwwSaYgHpdpLSJXDUItqKainYipzIeiMVikELcmlSbn"), }, + { .name = IOV("QZPCXJKmTyOvZiI"), .value = IOV("EzDhwRFHsk"), }, + { .name = IOV("RsUJhiFGVOkqsZo"), .value = IOV("KHajIuJVTfwYqlWtyHgZBEGGCtOzpwxqZiqXoLiZZPcNGLvXJtfTjkAFrpjM"), }, + { .name = IOV("vqIADrLNGJarBQo"), .value = IOV("SyMTJDrEXsAZpHleJsjEuRbAzfptkhctWSVanOgf"), }, + { .name = IOV("beorg"), .value = IOV("KoWtaRiRRniTUoMOXWmITMweCadNdaQGcKPMgVKnOJJAXiOBbnzCvuNgiGvdTyVChTWTfv"), }, + { .name = IOV("VXZHSRWD"), .value = IOV("JbMVgZKPtQrNPOzSYNfAlhcfLvvARPBLFKIFFDIyGLI"), }, + { .name = IOV("TsZOhFHFmH"), .value = IOV("JtDdrrDAhFuHEYwsA"), }, + { .name = IOV("tRTGShwDtTTZqtv"), .value = IOV("qsQQEupIufTCViJtpnrebMaJ"), }, + { .name = IOV("dzIEROLyqUDCNU"), .value = IOV("yExszJNydibnDJSHwyD"), }, + { .name = IOV("Wk"), .value = IOV("NVJuanFpfqlAUFQpjGOXwIXSUcMGnDXbfBJZtBjXmPUCPRUHUHhmmuZMXHfmKQioprCVCbJltpESIRvh"), }, + { .name = IOV("TfKpW"), .value = IOV("QtxBDAZqdWuadlcthHYNXPAUvCKSAGwdnlfurNPpzfogaIbKLNfHnkboZPVN"), }, + { .name = IOV("urPgnDbGRNn"), .value = IOV("ebsfnjNhsgGRsjucMOcHlMJBMnwiCUaAYdZeXVUqabLqtrdrwsPDHwwo"), }, + { .name = IOV("EjRXWlAOfnBmOkf"), .value = IOV("sQQQUmpmaXbCyEemjq"), }, + { .name = IOV("WZXXiKdV"), .value = IOV("WrzmAqnZrLwelxhEEhmUFQLuuoemgvpwUldHJs"), }, + { .name = IOV("NYPhtNMQv"), .value = IOV("lojZoxRRPAZQFIObgTbfCHBYDJMTseZsuKzQFIjXEOTDIWmyNxwaibagGCWZySjbKHsCeJZw"), }, + { .name = IOV("UZZ"), .value = IOV("IzpCUKLWsaSThdqQuBFQjHeErvWKObEfoHAYIIDrLUWRIa"), }, + { .name = IOV("eixcIHlRkMqbTFA"), .value = IOV("uLYILCfarHpGAuBXwhnRzGlAbDElGVmYXIMFxFzwRRtoklmZJBvVMObiOvVYIHBDkf"), }, + { .name = IOV("rtrhqKwOVFIGWoWI"), .value = IOV("fBzsokRCGAduyHhumSzpurunPBVbBRHqoEbFFDpkiJvmxZJFKQVLAnvEmQALwXCCrjbBGTv"), }, + { .name = IOV("RtjBpxYzcxLBKwfZBQgj"), .value = IOV("BVktoeDNJNQMdhEZKZYdLfZwBcoTDzPNYqRvtVqvZtMtGUtnJStwKqoYVayEBKmVDdPZwBImEEAd"), }, + { .name = IOV("KOBDhgiHoxulFeI"), .value = IOV("rlku"), }, + { .name = IOV("YmiAmWIpxchYd"), .value = IOV("Ldw"), }, + { .name = IOV("zlrTydegU"), .value = IOV("VIjvxZYytysjabDrjwzAtRvvLgTsxcpxmmIAjknsDGFqAASxEQgzSEQmpWRhzqvkqFaQjKslpyUSz"), }, + { .name = IOV("OPkDTgArN"), .value = IOV("lBKYTUrqeUJiOhOJjOiaovIphqLHyjGyTTrFpkxcKUsOGdhPTsQdnmeLuTdMA"), }, + { .name = IOV("KHivOqtUsEaqPHuxWbFW"), .value = IOV("OoiKVYbXORODNjAgkxSSSWMSbiMENoYDJFbTkhqnCapNGmTrQesjYTXiQmRkgNfObZXGd"), }, + { .name = IOV("JP"), .value = IOV("dp"), }, + { .name = IOV("XYCYMYWMsGojkHNi"), .value = IOV("ARNLdyWCRUrAtuLgwglRaVBJqywdiRmcsSCRaxIlPki"), }, + { .name = IOV("zsDkieGPoI"), .value = IOV("rVTDMWJIaRpTiHsNVHtyBSkHgIxMeyxNQQUjyTCzkBUMsCqbPuOtRVCRNvNiUeypcDwpogK"), }, + { .name = IOV("veZdKGiubfqfFVhl"), .value = IOV("JoDlFiLglBQVMFjbFMFJlWzQpYBMneVfJFjhokcpQTfZnNOKjQcb"), }, + { .name = IOV("UgVjENtDusXQww"), .value = IOV("PPiXipNqjSHrvIrOgwtJnaQVqlkUBvTdRAVqFJIsUCwbZehLoRQOfkWxzQfEtwIarCKrXI"), }, + { .name = IOV("sByVIqDNb"), .value = IOV("YBocmxdSfEozBPUWnZWwRLeskYfaDgRavXqXalxYWSpmdPWwkoJSNvbKGQyvAgwZkUpfOXmoBAX"), }, + { .name = IOV("jGufWPKx"), .value = IOV("txDlwzsxAjLPkSo"), }, + { .name = IOV("qbhGzwZARyLFzDNb"), .value = IOV("LezfURnZXefYUIbHDoQHgDKZFjyALsZOHhLzJbjFdALYXDzejLmDwVQRmtTdo"), }, + { .name = IOV("XZcHLEmiFYAXPvcOzgC"), .value = IOV("dVRynjsYVKqItSDQWtiYqQZUolasoPsWkeBrLEZxgObbYjgiVnk"), }, + { .name = IOV("pLNDezk"), .value = IOV("uagUzAuAKpJTIQYxGzPcUdKCOsuoJKdXBLcAvevfYZSoXSBlhnqZQOzNPeKnSDyAlI"), }, + { .name = IOV("jwefIp"), .value = IOV("ULAYUrDPQVyUVfobVBxCHpQqvKSAqAKLFVmdoOKOvUfzDS"), }, + { .name = IOV("odDHVOurAPUc"), .value = IOV("ncYBymSOFxXLvlChaVXtKVRVZjopSWIkLlPVgwWFwHfbhwK"), }, + { .name = IOV("FZtOXpmvIKd"), .value = IOV("RGshzbjfPMYmykEWBRDeUsrdc"), }, + { .name = IOV("cHJkDC"), .value = IOV("GYSiXnPSGdgfnzasOKgabEsKKOZOcV"), }, + { .name = IOV("VGU"), .value = IOV("bDEyqYJdKybPgwjjAjBzqyPEXQUsnwVrsyIkAVXjUXXG"), }, + { .name = IOV("TSqGGHnCrHlair"), .value = IOV("FOLAJYliNfgYyTnQxlrGnnKHbUnXkuMFpNVmGNS"), }, + { .name = IOV("HCHEuTeuAeuwf"), .value = IOV("cth"), }, + { .name = IOV("CfM"), .value = IOV("IwpaEKILpQNnQzozLjDktZYxGlkAFmLqEGVpmJwycmLzpIplFNyxrmAyN"), }, + { .name = IOV("mcNH"), .value = IOV("VLajYpJVdPHLUbTEGHEWxIkQMPbfYdivXm"), }, + { .name = IOV("d"), .value = IOV("PpoHZEMmXHHitZUcLSpoquWAhWblWxjHttCSrPMQrpOXAtBOjUHFxBbdgnsMx"), }, + { .name = IOV("GlESHxYPKQFomttvUV"), .value = IOV("dkgDeMBYWOhIoeYCLGCrpdjwnnVUQZHGKGJfQwnLCTkRUMucuqvdE"), }, + { .name = IOV("mO"), .value = IOV("K"), }, + { .name = IOV("njCJ"), .value = IOV("FovSURVypqaLChrGxfGrbHVjt"), }, + { .name = IOV("xJgjDhTJmFtNBfLeuy"), .value = IOV("GztOaSmFuYnsmmTtcILXPv"), }, + { .name = IOV("jjAlP"), .value = IOV("qqOZzKWghJfQjbmBYliDKVA"), }, + { .name = IOV("hLdBJmyOWnZzHYl"), .value = IOV("EuJLTDGshOSNCUBUxcbbhjHjouSRBBrxAqqCsz"), }, + { .name = IOV("qgUSlMhPzjHSQF"), .value = IOV("GoYbxvRG"), }, + { .name = IOV("UDBQxKnhpTvHUxW"), .value = IOV("vBRaqsqFEDWtQklemGYeGfbdCnNpDuj"), }, + { .name = IOV("xntnJlTTFeiqcLOuU"), .value = IOV("bXkeDVdrCQxQLHkYkjxVmZRwPgLChBcmztrHenvbwjTDJIYhsGsbmqJdHepED"), }, + { .name = IOV("bsYonabcSrHueUQx"), .value = IOV("EpQvCNqsXGVTJfPaxzfi"), }, + { .name = IOV("spbxEinz"), .value = IOV("UHFGeAKVWsBYsILOiSOHoVpTTKrVhCDltwOr"), }, + { .name = IOV("PxRjFcBoPQatBkIVRPUX"), .value = IOV("UFQfKwmdBAgeUQIwKXNoKaEmDeSYshXTtiCzeowsiqlLIldsdlddDxJngGIcEDvlUaTRO"), }, + { .name = IOV("kUhFOPbWqMjcwllt"), .value = IOV("SZDctExyspIAbrIQHqjPXqXoymy"), }, + { .name = IOV("HHwFvSgn"), .value = IOV("MXcHzeYudCvy"), }, + { .name = IOV("cPCCszslKrfpqjoOCn"), .value = IOV("IJmYNmMuj"), }, + { .name = IOV("nOhFAfFwBCpadzJ"), .value = IOV("OtTNHkwrBVoQsCqcsRXpXIrTPasnKznLPEazatybJRMXeDgRYwreSGVAsYBBZnzRxjVQaIPMrUas"), }, + { .name = IOV("aAWcpiwWRY"), .value = IOV("EdkYPDQNXAcWGSdgmSTlHVdEfEzFRoHLbeEUqtjfJSeldSVMkLaMnY"), }, + { .name = IOV("ilAgh"), .value = IOV("yVpdiYARu"), }, + { .name = IOV("qOMFdeWBQxTmp"), .value = IOV("UrBhzpSPbbarDdHsbTfYDwqIUmDNkOXJdPiiHsjnNuprhEZvoV"), }, + { .name = IOV("js"), .value = IOV("oJXwuNMkDusVWALtZmWGIRpAFIExlXaXfZNlqzySjIDMJ"), }, + { .name = IOV("ab"), .value = IOV("aztanLiXPAlqBuSpYmAvOFkhINVVgpcKxQgTZAmnbyufASypkndEXSTsghMbnSxbiBCU"), }, + { .name = IOV("JndkFPCeOUitJf"), .value = IOV("tslrAOtTWJdXkSU"), }, + { .name = IOV("bksI"), .value = IOV("ykloFQmguTtkdaUoMjYUPePZaUcdrZkAneMany"), }, + { .name = IOV("pmhr"), .value = IOV("wgvxknYxTjhNlLtSYV"), }, + { .name = IOV("vQSqwZwwTcZz"), .value = IOV("CAOsZiQCHDRpKBDdNTOpJoCbUDXaLMhFycgOaIdFRqsfjTmzxPuEhCnVCUeObLDmjHSn"), }, + { .name = IOV("Z"), .value = IOV("nsdwTGViJkEtrhvJINHaLDMDuCtMFJsQQnLXxougEOPBLEdeRFbYCNPzleKoOwuLLbDXcYpe"), }, + { .name = IOV("vBwMxFbFkJ"), .value = IOV("DFKXsHVbYUBbxvBpYSDlHJehj"), }, + { .name = IOV("ZOzJFA"), .value = IOV("WVnWSxqUrnbNHEfEmokeEIbMaFlXxSzJxnqpDBOvmNlnsCXQUQxfaiNySpJUpk"), }, + { .name = IOV("YQHxXKwrfUXgK"), .value = IOV("XQRCNzXHSrroUnNnPnpKJXaPLxFwqDupmTrSGxjyffyisWSDDmZCZTkojBzUPbsrdabsiDrCddihn"), }, + { .name = IOV("MCoo"), .value = IOV("yHmiUJZsFFWvvZcEfSP"), }, + { .name = IOV("i"), .value = IOV("wzoSfXMmwbQysofGwtKmcfIkUWnKGFJHTknFjYCQOFXcYTWBfPWZmHFImbppF"), }, + { .name = IOV("ERz"), .value = IOV("XePzXoMLFWsTohOfEfZDmmpNjjCNDkCQwpyVCNPBAwNcqQCSwKfSQrdEjyjSFEhHruN"), }, + { .name = IOV("DSTackVASU"), .value = IOV("t"), }, + { .name = IOV("pm"), .value = IOV("XxzkKQtfi"), }, + { .name = IOV("uRSTiBwcDMpJtN"), .value = IOV("jRZijKatpsSFEfzIINeOYbCEAhTofCcgM"), }, + { .name = IOV("basSZ"), .value = IOV("LaSLvQtmMOrDTCVXAndZTroGwkfv"), }, + { .name = IOV("uJrIFNUAnxj"), .value = IOV("VZeSwhONzhOQWTRLPLwvjHmVQSsOmSiITgylcVjjFNbhXstLGOzkfdkqcBKkzL"), }, + { .name = IOV("gNUsgRPsDc"), .value = IOV("uwGodcVfNzyPMz"), }, + { .name = IOV("cuNcRaZMhzLPQwzSXW"), .value = IOV("TPscrMvjepBQmjcEbverYEqAIhZdcRbbMphUsCulNkCyNrUnGpTWJqkG"), }, + { .name = IOV("lw"), .value = IOV("BbyBntTZu"), }, + { .name = IOV("dDEVnQqfCSNdu"), .value = IOV("WoTXdpaW"), }, + { .name = IOV("AmyUfn"), .value = IOV("zvtLX"), }, + { .name = IOV("yxHtgVTfD"), .value = IOV("xdSYKhznQamqbstLJNIGWFUgSqYkOkTDMmHZmzvdmaDXOozbXyqTcVQkPYiVq"), }, + { .name = IOV("LFsJs"), .value = IOV("pqDUvlHMeXcjYIdCAKm"), }, + { .name = IOV("ViTlCZwOJK"), .value = IOV("RJpqQzJiygnCqoiKkfAebMZmmtuQOnkGDWLzscHKCNQDGtlVziueIgopOVF"), }, + { .name = IOV("OpLpwoub"), .value = IOV("LHgTDdFkdrpZyhGUbSuzPXzROSteDWilmckpwUdpYDDkgnvCvigkafyRQUZyhXjJmzWEggMuhVWJqQ"), }, + { .name = IOV("nDJSkS"), .value = IOV("wmoKOXXXdpszoZFyzzNaClgdKBhxPHkRdVCzwTF"), }, + { .name = IOV("GXqKkpvEAhfvynUSEVD"), .value = IOV("xQQNbgCyMXBEBBpSXfcBcMMlcuMdTgUUswtZTfG"), }, + { .name = IOV("OpthMuEIHYPH"), .value = IOV("sqIPkywULXHt"), }, + { .name = IOV("DQxcBjiTZWqhTlP"), .value = IOV("kobnsKRfZHxTqcyyqPUuyFYIxEcnifCxtPzEABQBQepdqaSQEeRcrHtBgtyTgpeuY"), }, + { .name = IOV("O"), .value = IOV("jAqrljXhAFypKxwjiSxheYtpAwEuAADxxGJluXuGcILnviSkHRwQPgUXXqjeEj"), }, + { .name = IOV("N"), .value = IOV("mXojdGEwTFsskcLMsZZAlaOkpvoKOaeoZYPkUrAq"), }, + { .name = IOV("FtP"), .value = IOV("pj"), }, + { .name = IOV("hTUfLPpnpTTHr"), .value = IOV("lPjNdujuBRvAySNXcFkoxYKusJDzhsIOLsdUz"), }, + { .name = IOV("DKYc"), .value = IOV("iyuQelIMYZgdAvxyxSJsZZBQmNOuXOriZOjVCWofTPCevUwjHAhjhqnpNovWHSiItwOzRMUq"), }, + { .name = IOV("AGDVyCYF"), .value = IOV("CeRMxBxFyzkHGGcDOyqlrgmhrtMZDzTZmhlBdZJnGSpBpVkgLF"), }, + { .name = IOV("eiopehMq"), .value = IOV("nNbbJBKofDrAYjcmesdKRpUtGKOBUUjPMQxiXyVITuEtWGMyjgBNm"), }, + { .name = IOV("irOXUdfDulLoiiHV"), .value = IOV("DrntRwDiVFKufNOqoMXrkTVDdkphJBBdiGaxiLS"), }, + { .name = IOV("DXFJq"), .value = IOV("NIEjBZXcHGaTqRCukWiIwrutJne"), }, + { .name = IOV("cCYuNmOkPlXgH"), .value = IOV("DpSVBiYShckJZbxMDJsyrrAFEYrDxDqiyWSwFPFCYVkAIwqAmyXNJUIkumKekaKtFWEH"), }, + { .name = IOV("ywqcbXrWHpBogCt"), .value = IOV("EVxDwEeLXgVoDDTtNZangTVpAkjkTNiplmGgnKl"), }, + { .name = IOV("qsSEomhXiR"), .value = IOV("agtfAnlZSPuGgolEuzmQHoSqcPnMARAHPNhbXjnHHQo"), }, + { .name = IOV("yprVfMNs"), .value = IOV("qMFxrkXAPUeGmiuvIWHkNBQlHwElumccMEMMrlqyjVCyaIAgjpvSCPJwIjywSfBHqrDpnkWSd"), }, + { .name = IOV("k"), .value = IOV("OfYPNqIZznfxpkuOdiryiAmhDvQaqtJWBFvFvRMLWeGuuoWPvHw"), }, + { .name = IOV("eqJeZaeWqZm"), .value = IOV("SuFCIHaJcdUbVJSJIkZcNUoANVOTXDdGoLyPVhgfbWjcggteGSKFjIcebJRQpjFVTTGrLeAf"), }, + { .name = IOV("SWbVqkvhZ"), .value = IOV("InzYCFDNRsauYODKFnMvlRVpWFSFmUZmnPYRmVFjyDfcpmukzxpyeUrgBroJ"), }, + { .name = IOV("VSz"), .value = IOV("hXtEWZrPHDJUtSnqnPPzunIOKPjXNOpeKJHAEvwEOqsfxoNhQbwuQjKCVnDbF"), }, + { .name = IOV("FiKf"), .value = IOV("iLIm"), }, + { .name = IOV("rwEZpBZ"), .value = IOV("IhuAepJuvrggWewRwlyvzpBAWOMxqqMDJkkQArZmXwNxZly"), }, + { .name = IOV("ZlArvQzAJMwZzzQssRv"), .value = IOV("jNMafejrzUGxyWYyCFV"), }, + { .name = IOV("tu"), .value = IOV("dDMESCfkEvkKLFOYVWipwrftKecLCCEYmsirYLc"), }, + { .name = IOV("KEJP"), .value = IOV("bnaHsMHpXydrpHUXo"), }, + { .name = IOV("zBETNDQ"), .value = IOV("YdFqcJjiMExmUFYXcORtRwZkxOdEmBkyjNuaJJeoQGbdSTDwccoKpJDUMUm"), }, + { .name = IOV("PLadBuD"), .value = IOV("enxcGBYFleCTrkhnBgdJxAOrDSkwGFgHdsSKjLyhXxLuLGFugBpsGOJJAJqUXwpyqnrEOiRerGqHK"), }, + { .name = IOV("jcqWlDBKmeV"), .value = IOV("hteutfLCQqjMwWopWWYXTkLjPlJgrFGVMywJ"), }, + { .name = IOV("FyPSB"), .value = IOV("UovipqNfvCQiyLwhPMFMiTKLpeIBBWDJISBfVFfxPpmfUyEzPVRYIyXktTQouWptbuHBTJct"), }, + { .name = IOV("bmZjTeMXHqCmtHNKph"), .value = IOV("ZqiTKDCtCPjEicvyTYUpfynoViBCGC"), }, + { .name = IOV("gvDmbAJyGnt"), .value = IOV("SBYboMjSSPilJIXRhFzVWZrWmEpbEhAuQTTDcNzUILE"), }, + { .name = IOV("NssAOUTczgATOQtMfpK"), .value = IOV("kEPNAHSF"), }, + { .name = IOV("TNcqJZBnfTtnRazfV"), .value = IOV("qYndnetaljErPoJXbMiZOfKmgVzZsDxiyHzCwECiJYRHxFZ"), }, + { .name = IOV("GpxLYmtHv"), .value = IOV("KHjaYOxUzLVESnlFPLNnVgmANBOVAWCIYhuinigZWESYF"), }, + { .name = IOV("xLSBdNsgxrkrHYuUppr"), .value = IOV("DsNEGzYKPNDuVbJVDuIFtiVfMUugMLyuAjLDCynpbOXJZQAnzkj"), }, + { .name = IOV("wtIy"), .value = IOV("oMOKCYnwjpoaGlnFxrNsZRABWzcjJmetvSEScuKuteNSiWKPMCOhoYiHufbFPbyoLapalYPulgkLZik"), }, + { .name = IOV("ziXRgbN"), .value = IOV("rqQtigLaBZaqXykJrXMnpjXaaeXjjrznafkGHwAHUY"), }, + { .name = IOV("ytTMIuJiEAvUB"), .value = IOV("VYjhLKEAPNffGhcFjrIosqzznewnDNiBj"), }, + { .name = IOV("XC"), .value = IOV("rhffjnNgATakyhlWJfORKysnWBLpAKlyEmkYnuVFKIcbBHQDdjuttlazLgGPfvl"), }, + { .name = IOV("wzVBgNuXBXOMqiX"), .value = IOV("PtKgPseCbZlSIKWyVPFaAfzimRttxEPGRwcEKxxqsjVcqPu"), }, + { .name = IOV("JZuJcvLfBZAovfNqNAr"), .value = IOV("tfBJGxHZOpQWFtpzZVufczCRecVxgrIOHjrvYtuYSAidUkYHgwpCwyGwEbveyjDRgSWyZiL"), }, + { .name = IOV("CpnfGrFpNTY"), .value = IOV("KeAtWHufNdKqjYoJaYOXyaFfIHbtRGBpjqVGSROXqYioMeCQIUpVsssuAsL"), }, + { .name = IOV("sAhqmWhMltBrEVkiKX"), .value = IOV("kFqhYxMrFtMjRTG"), }, + { .name = IOV("m"), .value = IOV("hLjqUiGQLlWUwKzEcJXbPqxRCWUOZPhdOtMtiBUKHZDVpOjv"), }, + { .name = IOV("zaFUuozXGrfHNnpDz"), .value = IOV("RejXauBjvMPjCHZwCNUxGzZHiNmoUXyAebZTaafpWbEhCpznFGyEVrbcAFaHYNuNGTAT"), }, + { .name = IOV("WtQoSSVTZuqGB"), .value = IOV("ENnvGhMxGzSElTwvsMbXYhPKuZyxFQSTKBWXBkWlzQLTOvqHjNQbSZmfq"), }, + { .name = IOV("aqFyVwBw"), .value = IOV("NFnJOZClAVmivrhtYZhSnHdOuTqHLmPMiszXXpRxMXHoXGZjXmhGVXpSoPl"), }, + { .name = IOV("CYZlx"), .value = IOV("dPTuluGhaDhdSbMeQIHbmtifcXQtOqqMEBSpMuCAhXUfzGwZckXTeNoswrzvyCyjKTNKPzfoI"), }, + { .name = IOV("AQD"), .value = IOV("NVicullBUZRgWSdxKWWJhH"), }, + { .name = IOV("BfSEB"), .value = IOV("nLRilzLElNpHwbAiwAOWwEFbwSYBhGoXWrIsawIh"), }, + { .name = IOV("buhcOIqsSgOMjvBHTOA"), .value = IOV("VxpkaVwKYCDJ"), }, + { .name = IOV("a"), .value = IOV("RKPyqPfZZChqWnp"), }, + { .name = IOV("fNsRFQTZwAYAmc"), .value = IOV("LyEXKLZXQzAdNqUGNKahZHMoQkMuVqocsoJURIFKRIaabLTWBySImgkwkUeZVcCkfTmHmcaVRBYOg"), }, + { .name = IOV("TT"), .value = IOV("aRbacwSuZUqgKlBthFKFSqFmvEeqjgDJrB"), }, + { .name = IOV("BdZxYr"), .value = IOV("UMtZMZpctGorbxVppWyGmwPabUoxrbLZazerJuJGgvcomKLRcpsbHNNXVQlDHTzk"), }, + { .name = IOV("FIlxRfitGmnaLwFRyztT"), .value = IOV("efEdpEYWsFtUgWLhmQfLGOdUgmUzfzYprXWfMYUfXhwnSrjPmFNsbYdWNOuYTvPgHTSRolqCEvjDDm"), }, + { .name = IOV("SNZFLDColFNGAKQPr"), .value = IOV("kkchcHIEEVOcqovFa"), }, + { .name = IOV("POxXDfegLqcqnXqGPxxF"), .value = IOV("oumuuVvriwcTg"), }, + { .name = IOV("bGyf"), .value = IOV("CwTcZWxKBxWyDVUHjnzAWpEu"), }, + { .name = IOV("fpJLKXzXZZJkCvBwLp"), .value = IOV("xrmCkdDvqtrlsocGfuWVyyqLwWUuZnnftKoQxbBNAmhwWYYYrmLHvD"), }, + { .name = IOV("ObDFcBAqFMeUCjTh"), .value = IOV("VISozMphNKIvwbBInHXoYGFkpkqmqhCFBmbpzeN"), }, + { .name = IOV("pX"), .value = IOV("UDMlgRGVFdkttHQCDyiDYbMSfgKmNdCnRaLODoehRCrerQyvmPBPttSuFGkgFRr"), }, + { .name = IOV("kuzyCuYQgJkSp"), .value = IOV("QQyQxYLsHGiCTVSVcGysYRhnkmHsjmpkgM"), }, + { .name = IOV("wPvJjJXkqkkMiClT"), .value = IOV("XyqVREhWNLbKJnoCNDVaUXuWAVKfGTgrVUJxMRjHIjCEmlYHSCFAjrTNsbMVBHbjpxpurWX"), }, + { .name = IOV("oNbg"), .value = IOV("afwDbAyLxoMSwmKMqEdARJwWQbJYabkyYDAoilidTdJMpidQxWVcbO"), }, + { .name = IOV("WrqcTqsWb"), .value = IOV("gWerPY"), }, + { .name = IOV("dGIFXQLNCFVLThOB"), .value = IOV("gtbtgKERWRGCUSacOJamBrbgxu"), }, + { .name = IOV("Ye"), .value = IOV("uQDjkqBIynLwj"), }, + { .name = IOV("SOc"), .value = IOV("vCdgerRYFVhzyksPBiXwYZbnnEqDWajvyyVWuXdBHclBkTqUVi"), }, + { .name = IOV("jnzgJDODItOHeYJY"), .value = IOV("fkIBKiUaGuAvjgMYVjVpSyUoUyQcOLBEqTgKJsqjFemGAfoXHqlnNWsYnJvahAWFrLPQFe"), }, + { .name = IOV("hFKRbwePpJffTm"), .value = IOV("BxslPBMlOwJWDxx"), }, + { .name = IOV("sVhZWMrvhNHGtyYS"), .value = IOV("lkcwzhOIlblApSPmEzLlezRIrzOQtheeuUlml"), }, + { .name = IOV("gB"), .value = IOV("QZMoFqvDEnfPHRixXWZIckFgarFQ"), }, + { .name = IOV("YowcfeOKjcZazaV"), .value = IOV("JwDfreouGpayxDMfMDanCsEKSBbk"), }, + { .name = IOV("XJRuSHVGb"), .value = IOV("NAOZkQNjAhpxpBdIOOMPoINGFZqg"), }, + { .name = IOV("PzELgeWuFLu"), .value = IOV("nSCvyVXMoDjYzvfLyEbTcdcxUSIedgIXbPFCCPVdZczhGZPRQiMF"), }, + { .name = IOV("GGZBNNCgOjjVbnZu"), .value = IOV("VPtdFILcgpTWtirlKpszHHlVMQCUipcwztewUtFYpmWQQSVLKkityjtyQHHIDBcsPcoQhIrlI"), }, + { .name = IOV("EoK"), .value = IOV("sZOPfDxHDhrJdiHVdWkfydxcsNTAGFrzh"), }, + { .name = IOV("YVERvsFzLoSFUN"), .value = IOV("dVVcDh"), }, + { .name = IOV("LUKfkGHJ"), .value = IOV("glgSxwhgKONbvEGMBWHBRvZpoKfVWbdvozXZKelslUU"), }, + { .name = IOV("vMibW"), .value = IOV("HygmLHRKCCIDTufWDGICcOKmVEbxdPjDU"), }, + { .name = IOV("W"), .value = IOV("DomfCVmLjHiwiutyInlLytQRNqLCSnxbkCx"), }, + { .name = IOV("NmBLWGHrCFEguduZr"), .value = IOV("BfrhGpoVPHBGmyGshaBqH"), }, + { .name = IOV("VBjmRyqZEUhkzEr"), .value = IOV("IorrLroFbzMxojblHcIGgvpksyAshRrjGkLstwlviHQeee"), }, + { .name = IOV("iZsqcT"), .value = IOV("KpTIMrgMnbOobwjorDxMgtGSfcUqzGiB"), }, + { .name = IOV("NdHKmfWVGnJZMh"), .value = IOV("cmNSJXMOV"), }, + { .name = IOV("LSkwyKoveVzVIZ"), .value = IOV("NaFpNWWRJyCmfDXkRlVGvyJttpGbBi"), }, + { .name = IOV("PvmaWksvIYjoNWFLtOf"), .value = IOV("CXKMSSVrbDkuBSYuGKJIcGFTUowLyzsJmPmrsMRTSqgvafsRnshRbIMzyzKFKFWFpk"), }, + { .name = IOV("NQelp"), .value = IOV("mUWYHfVPLFmHlBbgHqJxvAVncOWUmvXkppbmBimRgeSYJSq"), }, + { .name = IOV("ZssxEYFlGVjMRKHny"), .value = IOV("EcIMfCNLRnwKbICtYRVLPGzaHQtkDgmhxucmuSGhKogWTpbeVFfZkcjyVrHdK"), }, + { .name = IOV("EQGbKyHMtehnxuRIxT"), .value = IOV("BXwaUzcqQvyJaCkgYSnvodLEYYDCcaveVnIVTIXKpaZtdSTktgakeCnHo"), }, + { .name = IOV("kBfd"), .value = IOV("OXdjJcFgPYg"), }, + { .name = IOV("jEZSfKZspYzAdPDuKl"), .value = IOV("CONHhQcBWkHdvDAbcMSxKxJa"), }, + { .name = IOV("FDLpyBwh"), .value = IOV("EHGDBZRtIEhyMklKEvwhXUIMcQKhMWySsUpBrVplAlDwvSksKSnaJtzyCJzPOSUSNrS"), }, + { .name = IOV("czAEmJKFG"), .value = IOV("likJcSZtvpxzAngqcVwHGDSzuTMUVwpJrKcSSeTQIjNCZTKRD"), }, + { .name = IOV("RXFUvKRewQyaBJBvdx"), .value = IOV("jdkILQctskMRIDRVKIeXhsvuBtpngtsmxPsfMjtsKMjjWWOJihcAuNRadUo"), }, + { .name = IOV("lmmcZVZjOCbP"), .value = IOV("TDenxsjzPwZNmtTFsRHXvAEQmXsMmfMQQPoRDYCQuK"), }, + { .name = IOV("oBtHTFn"), .value = IOV("mjGaNxyXLy"), }, + { .name = IOV("E"), .value = IOV("bS"), }, + { .name = IOV("MRMXrmkqgaMhreoexUO"), .value = IOV("rbSCFxiez"), }, + { .name = IOV("BEuVdzlDwGzVEBtvhmR"), .value = IOV("eMgTovUlQIyiJZLQNLNYv"), }, + { .name = IOV("NcWkcOMGLU"), .value = IOV("PBYidKgFgDQHvbNvsTomOfImUOQOibsWuTDvxzqyhwpteccRGvD"), }, + { .name = IOV("tuIbFrwecluAshO"), .value = IOV("tLvqEzdAfNTIOvkOHIjiseurRDpqLBZelDqxUhhlmPiAmSmyCWx"), }, + { .name = IOV("sSnfsHGFEvxfyAL"), .value = IOV("MyufBfxtfxCoZMpHBLNVxpRGsmCvjTnzjZAtXoaSQhuFuACmMtgpwKJsMtegwMpv"), }, + { .name = IOV("eY"), .value = IOV("TAvpI"), }, + { .name = IOV("vQSlahXljymas"), .value = IOV("hhqsGnzVaiYXKltLxGoc"), }, + { .name = IOV("Dme"), .value = IOV("tDZqbxqgfeEKvZuuUWIgfYTYycuRIyunBeXqr"), }, + { .name = IOV("QInYuEttk"), .value = IOV("XLvJfkXMg"), }, + { .name = IOV("vYpIagkNonjOgz"), .value = IOV("bpmcklVIhN"), }, + { .name = IOV("VpwAujtgwtzDjpjkaSHu"), .value = IOV("ETPJEPQBOpUEbcJBJxDVYGbSkapttDoZQywulKUwHhWljFwl"), }, + { .name = IOV("BYlLGDNnsV"), .value = IOV("pzLZqaYNuCMLvWohHaPCgYRUpUGWUsdgRdBoszixzGpcJxRkHnABAhFCJJuPDGFn"), }, + { .name = IOV("jwmFiSuRBgNN"), .value = IOV("rfZwFORlaJILpSbcEGqPFlFzsBwQRbBXoohQZzvPQLQmDN"), }, + { .name = IOV("TbJuP"), .value = IOV("ycu"), }, + { .name = IOV("qxDFMDQQvPhWu"), .value = IOV("ThQCNGvnIZBgUQTNkRMvAivzxHDPRJjwkegrMkfPknLKmUqEfDMkJvOj"), }, + { .name = IOV("iXgbye"), .value = IOV("BHvppPeLbFjliYVQdvMaRtirGmCDmYQujsKvSlIFJhxmXqKGmpwRzwZqIPigNxn"), }, + { .name = IOV("Au"), .value = IOV("aTkSlApkuhDinDpyDJRDJxCDbHamUxTtTFlLsyNbHGSdIYMTpXHvtIAbSBJMNEWKN"), }, + { .name = IOV("antanMBszfTGAWMbZP"), .value = IOV("ebouerBUJWewNEHBoKyKKRZdvmzXWTxyGrr"), }, + { .name = IOV("IfHEddeEvxG"), .value = IOV("BDcwRUViLsxzOWaLPTAVdDUEDOasAJLSLfzwmUYwhwhBafrRaEyEfYXffcMICScaxSFIoJTAwuCvovz"), }, + { .name = IOV("kvqMxXspM"), .value = IOV("bloyfqYGBpwgsmSAwzM"), }, + { .name = IOV("h"), .value = IOV("pCtZdUVIgmJnTXvgxaOWYmYkqSFihcmzWzKGriXllLBaSrndAaRytrFJuMnOXfllejzssRQvEWXVgpL"), }, + { .name = IOV("bbzoFHvrPopUcGMh"), .value = IOV("cpnV"), }, + { .name = IOV("oNLsyOgzYqNTwgMMT"), .value = IOV("agFFEvcXzMTZdcYJWWkxlcduHHAeAeuzSXwAPEMrOdfppkTD"), }, + { .name = IOV("ZJXwLZcfXXY"), .value = IOV("NdhMwEGzmuuNSSsEvFZSNJiNsNOFskYOlfHRUNNFkAgIJkZsUmiVOjSCgFkNgidVbiJotNqKERlk"), }, + { .name = IOV("MsKMoxSoLAegbsM"), .value = IOV("DfkTFDfuOZnDodhtbIuwdwyrDxdpROGoABBRgyPhJJR"), }, + { .name = IOV("us"), .value = IOV("OUjYVkmviTxeKsNSclGoUCAdYdKXACcKCeGTVkGgdJzOfJwcdnsUKWqseJcPfsbljUICVVhES"), }, + { .name = IOV("azNFoaZICHCyzPAfApYW"), .value = IOV("gAMDyMYKiJmgonSVZYGLZgrpkMZpHdOEgebxrtuIPyHGYWkWaTnnAduM"), }, + { .name = IOV("hqTYGUHAmejGr"), .value = IOV("tKqEyvABUBHJdfNKuJYVjVjEmuMXUxVEgVfxglyPOPRpELTRJDXcUVoyPCliySVm"), }, + { .name = IOV("YxMswLeNt"), .value = IOV("zzKMnpdCAaTidDGfBngwVUecaZyrOepzo"), }, + { .name = IOV("ZoHSXwHDBki"), .value = IOV("RoVNScqnpfXxczNDKOzoumI"), }, + { .name = IOV("QrBvAMyczUWV"), .value = IOV("UxgoxyvORQlEJeovoYnschCcWgcrkCbeuROcHPiLsktSOfRmoDgoIxeNMcofIePrfHKj"), }, + { .name = IOV("KPItDrIJwuA"), .value = IOV("oZqgufzZCvUDXXioOroePgTASqBLLNqWMFYQSXSdm"), }, + { .name = IOV("dHZLU"), .value = IOV("UrfJnjsLvJRoHlNCuQNcAQKshHVrcDVjphsWF"), }, + { .name = IOV("YeiUSPlvAjAb"), .value = IOV("lUcIowaYsDOqDOfthUwfVtrCI"), }, + { .name = IOV("ESblgrrZmMRphzAtdqu"), .value = IOV("QkrLODruSSgmDgnKlhRgPUScRmfDLDyjePNbNFwneMWNFojKBaUwJLjKjHZyGlwPgAdJXzknk"), }, + { .name = IOV("cjdiBsiHumYn"), .value = IOV("wxfTCeOXYqDYMQzfoYAvintzUrwlXctCqGeOKPcOhihEEQjFiMSAmDBZstOMdyjIKEJukEVBIYk"), }, + { .name = IOV("Kchp"), .value = IOV("xVQkQNlQmcNxPUmjYmpSARvrETESNaVXLflZOeLDECZJpePXIs"), }, + { .name = IOV("kJiA"), .value = IOV("QSlgaU"), }, + { .name = IOV("Ly"), .value = IOV("UZPaNhWQvdYxpAtLbjzdKrhjCjndPsBtvaYMcIfdFHbnXCHnkMxVdPTWknuaPTcPmAXhdhuUybaYymV"), }, + { .name = IOV("kT"), .value = IOV("BhVGAKNqPERpGjknkmcsCksMjCPkTVoOfBvt"), }, + { .name = IOV("rkXlTDGrbotNctIJ"), .value = IOV("kWQTpMZdUOwrVOKiSuPSIJuNBSqoWHvayEzBRhXCUjp"), }, + { .name = IOV("Y"), .value = IOV("TjhAvNWnZVCrxlHigGjXxGcKNXbeVoGKEuwuahlc"), }, + { .name = IOV("mwZeGautyyqv"), .value = IOV("McEEaliMHeUmtkVsZiGzECTggGCppiESffikKCNVzwXSkgceBJwdiKdlWwMuxX"), }, + { .name = IOV("W"), .value = IOV("lJBsdpceNAMgCRJhQNnlfLfgvnYj"), }, + { .name = IOV("bsMuXiYpTVGL"), .value = IOV("UVMQJiCdHuqMJZfGblqguNNCVCfVCnvZHRTFxiZXc"), }, + { .name = IOV("tNjxNps"), .value = IOV("uBqfhpxYTNyDQpWKJyTkaTQlWYWfhYmzeAqwbOCGuCiEhtjrxqneJuLiMRRnNfJjDXxMlaxojG"), }, + { .name = IOV("Dt"), .value = IOV("RZHuqIYwGnGstewuyECSpfrtbkPpBCiHrqNptmopLZRcIGtBPczYG"), }, + { .name = IOV("ETttrBJ"), .value = IOV("eLJsaJzXkBGPwdNIMvveKogrOmDBaaJTvvJTZpatfFWoBBXTGmDRcfQJidIENsaqdtERtN"), }, + { .name = IOV("YANAomilfaXavoCEwHT"), .value = IOV("aZaWkDDvqFELheYJSrsJwHEjyUKkMCOUtYpZCNiStuhTmTSFnducPylvbMZUkNpAW"), }, + { .name = IOV("YNnxFwwCdPLXhAhk"), .value = IOV("qZjtyaXLYQvMlCOwChjlzGRKYWTbPtanAmCnbcJBXCoqstjvtxsbQKPsEequPIHTqxwA"), }, + { .name = IOV("lSpESEyajt"), .value = IOV("TmQaORXYvONAIXnRaOWIJcXKeruLuxjqjiTCQZaaWBzltyjTNbAPvwK"), }, + { .name = IOV("YLvBxKfbptyklbNjM"), .value = IOV("FgqAOFdIAQSbjaClKeLLlxMmKlGwaFsNQsScFqxBLfGy"), }, + { .name = IOV("QwSgzASgbpOwKqja"), .value = IOV("IRLIJUxfyjdJUxrLkRmpMZTObrWvTyvNqoQUObIeYaALbqELIwJZZecVebGnYQBYwBLIfxv"), }, + { .name = IOV("ThLwJotpMnSOiSB"), .value = IOV("SvmNmoIwyunDVpqolFsUKWZudnZoWWCNdVGQhCxEon"), }, + { .name = IOV("VuLFIZlkiROzGVbhO"), .value = IOV("AfxGYFStrwUQvByWdFPjGbMKevQMaUvoySDuPzFQ"), }, + { .name = IOV("ZBoBJwxfhqmaI"), .value = IOV("RRAvVrhfognxn"), }, + { .name = IOV("XPsyXjasYEcDoMVg"), .value = IOV("umhjfCOkfoTiiZhVjde"), }, + { .name = IOV("GLrziMmrZMiE"), .value = IOV("wIDCtVLjLFqwnrJfnqtxQeTWacAobxQmXVZEpnUZL"), }, + { .name = IOV("OCxaRYAu"), .value = IOV("NUSaNnYVEBpfzHZaRGBor"), }, + { .name = IOV("C"), .value = IOV("rhqx"), }, + { .name = IOV("TZdvBMi"), .value = IOV("nOxGQiPIBSPLLwUoKaxKdWNCk"), }, + { .name = IOV("X"), .value = IOV("HPMXiOQOPOhbHXQuRBADgkJCfyzqa"), }, + { .name = IOV("o"), .value = IOV("kzIgjOWfpeFNFAJxJFkSwiXpJvUcaEWExhVyFxqEAVUDdgcuZmvvoa"), }, + { .name = IOV("VvpbdOh"), .value = IOV("DxTeRwKTqVHdERgjQNIaytVykEwVtrzdqIkPqO"), }, + { .name = IOV("UlmTVhYiuHXRZd"), .value = IOV("lIqdqZUbDrZfXjiRVYULpgvmISIVCuqJkRMtNwwma"), }, + { .name = IOV("rjOOOV"), .value = IOV("LIO"), }, + { .name = IOV("lplJFHYZ"), .value = IOV("advooiVPeUtLTOpejYjcUMvKuOWYQxa"), }, + { .name = IOV("ODlNFaMYEyZmgTEHqCbU"), .value = IOV("SvFqQRhLtbylBjwODTOYRuGRRcqUVNSvLmgspZCouKfomOtzwzEMWzhLLtX"), }, + { .name = IOV("JebOJdfRX"), .value = IOV("hLdWsbtFAipoIZrZZbTqBmtEcygwxXAUISRpVXWfhPPzpUKvatsly"), }, + { .name = IOV("aroHLhrBkQkvwCuDWBxn"), .value = IOV("uiKuKtGwSzkdSvooAvdxCVXOfcLyCqIEDbJFejrEGHpaXpFGAbEHrwIwoGYxDozyOo"), }, + { .name = IOV("I"), .value = IOV("fDUcpsh"), }, + { .name = IOV("BROkocWjIdMvmLyG"), .value = IOV("RkotrqRctuimJrZkHEXSAmWoqGMBy"), }, + { .name = IOV("qmUAgRtlMFJdPz"), .value = IOV("gHHdDtVTWyLZJmfYOreU"), }, + { .name = IOV("gprKoAy"), .value = IOV("xWXNxRXVD"), }, + { .name = IOV("EySUphSsgAzukJNKgOOy"), .value = IOV("FpuFVXuSnJUSEQsAjjPq"), }, + { .name = IOV("CwY"), .value = IOV("DvClZKQOsccloJGExMmxKkZlMnIgyCobrvYxUEwLeXcjfncUUHrIJagzpmmTLvwKGZuXVpIqkOUkkmb"), }, + { .name = IOV("kjDdCryUbjc"), .value = IOV("HfPpsYdhLIbcIbfTeZzmRHfJazgSibXDeOgkuLmIGIantyyr"), }, + { .name = IOV("Qjlwm"), .value = IOV("rJpFBvdQboRWUOEbEzcaVptAcyhlufOCKyzAgmIYWHMRbcBXyyybiih"), }, + { .name = IOV("eI"), .value = IOV("nrFKzTjanLlalZKRmCuGoKAbKqOECYMbD"), }, + { .name = IOV("LMGfTBkgPrgaQqJVsb"), .value = IOV("JztbGPAayszKodnPilXQMlJNSjqJdzVJpk"), }, + { .name = IOV("Ffj"), .value = IOV("iuQZfPiKMvmhCScOkblVdOXzAleZzaOVn"), }, + { .name = IOV("utdcgGBS"), .value = IOV("FkGtJBgLBODTiSDAkjvwJAkLTnoqEmMJpaFFzA"), }, + { .name = IOV("kjKwjMoeuBBvMLzhnwf"), .value = IOV("PmswyIBMktRDrZVqjFJWxdPUlmzg"), }, + { .name = IOV("OnzaxPfMTcPndqmD"), .value = IOV("moNvGlYBwCLZvyZunbVSPvNgVonXPqDQXzwYhZdffbLkUWGXLrpXiAPGbsooN"), }, + { .name = IOV("dDRLX"), .value = IOV("XOrgIjtjfJzHVOuhRocJOQgVlZexbuMJsWvhswJjxHekGgXzgNCsmYSbgsUO"), }, + { .name = IOV("PMjwFNPZfqhzdP"), .value = IOV("ZVTexJSskiCKNtLEISxnOZfQflloshFmUCfOHcPq"), }, + { .name = IOV("mh"), .value = IOV("cUFNUIYroehjbiovzcBjEmeBZKJuGALFqbHohPsdWlMUgkfzXc"), }, + { .name = IOV("uKZpxtgXsC"), .value = IOV("csQswyFSARVZqVPNIUeiIzGFCKFZezRQYXGtR"), }, + { .name = IOV("pljaFTeIpf"), .value = IOV("xJKYU"), }, + { .name = IOV("JsOpRXFddS"), .value = IOV("tHKnfGhUSXhaEnzGwCkXtZELWRWadtJvlYPGhCHHbqhUYoPxmDaBbcORMm"), }, + { .name = IOV("U"), .value = IOV("kNQRAQesZEZKGWnbuQRsnVHiTCzmNZOALsOzVyCwvcRflDUaEsDiKQIUSmmWmFJXNbf"), }, + { .name = IOV("QMAPb"), .value = IOV("gKpquwifEhuYeCQl"), }, + { .name = IOV("lLXXMaQfNALBXWlZMj"), .value = IOV("hyFVkrJaPCNxSrHSlsBiuBmqZZDiycNzMllW"), }, + { .name = IOV("aKjxoIc"), .value = IOV("OBrcLcQwJtIHlxyoSRXVbgTReHPzbQCtqqZXlQlvWKwkKDsCiyJZUplNTsulMKedvifz"), }, + { .name = IOV("abFqEyqwoGqpOHQSIR"), .value = IOV("rCDIbLfAeWjQXjsxsyoevaYAzYTsjjuROoytcSeRxhTh"), }, + { .name = IOV("XnlnKaNivERqb"), .value = IOV("gkDIVdQGbqmWgnFJRmsMmiYuQBFeJpA"), }, + { .name = IOV("qGemsZTgLwikmVUnfa"), .value = IOV("DTlOuSXnLLfnZXLfusZhmVwXgrKNnmzExRnXKofqvvWexRMJRTYVLrkVwoLgTCfEWUmu"), }, + { .name = IOV("rDpTXKOowVYVB"), .value = IOV("CTiCjBkIiUJrfQamMAGWxwgmxUWYqmQhZmivCDhobpKyCjXOOvHntstsMBKqIPKYIMvF"), }, + { .name = IOV("pgtHJv"), .value = IOV("PQObzUeiRQDiGLcIklos"), }, + { .name = IOV("D"), .value = IOV("JScKGSUUwCJfrpZNbLltMzJzdmywZwBCNazRunXDwpYhDXoZTwfzLEKKbKGdfuxSJ"), }, + { .name = IOV("M"), .value = IOV("iFDMoyoCPNWLnhDFAWFdeTbSoNAzcoKSaUUrCikfQnkfibEuhc"), }, + { .name = IOV("x"), .value = IOV("mcfpgyBMVcvoXrwsWdYbvDuCAfrSUyJLEsBEKJhmfXLMJaXPvkbd"), }, + { .name = IOV("ims"), .value = IOV("wErNVFuUSpNWnwtdcOoDJikPlOSlOPjhiAOutuN"), }, + { .name = IOV("OONwFZSxVdGiWdlTfw"), .value = IOV("fBFbomzzVjAvcAJfKDdaaBLkzhKYccSftSUptUlvhLljFETxwkMqJvbLbKcaXgiDvVMNtBodJ"), }, + { .name = IOV("HHlHMnPp"), .value = IOV("fUeejYbpjZByebSRnYysCrOJipcBydBPhlmXCnVtwuQIOLiXZI"), }, + { .name = IOV("UqcpusGIolLdstK"), .value = IOV("aOqATEANwgrSuikHEwNFusyYIdTszrDMAFXLzSmecklXoTJ"), }, + { .name = IOV("GhaMZiYcf"), .value = IOV("npGnEMDVnXuuPbvAJTGMWDDQXefnoZnVrAkLBSbCnDgpSQlsfpmzL"), }, + { .name = IOV("wfqcSkudfAW"), .value = IOV("TTCfJGqxyJgOLJlJKvbNolRwVhDsKLKAxEZtzkzEPpltsRhoQ"), }, + { .name = IOV("laSrjFbPwqSqNUS"), .value = IOV("MQjAEDpeadhAEboKZwPCCFFVYvjMR"), }, + { .name = IOV("nMkLybeTqmK"), .value = IOV("VzHMQcmJKdghFGMYnUfrVLXImaJANNEihYZjJKRbnPsszutOxVpNf"), }, + { .name = IOV("AUu"), .value = IOV("qkTnivUxzAtWfrTkgGWQUiipGCru"), }, + { .name = IOV("ZrboTAl"), .value = IOV("BjfsDPbscXjcnpTAm"), }, + { .name = IOV("HPjEuAozqOXkwxx"), .value = IOV("UEENidjpcFJkVXRdAvLjbQXtpltsosMzdXKQSrXSquetNeEbMcCTLYjovaFHFCOEDxSyHeCZaqY"), }, + { .name = IOV("Ccl"), .value = IOV("wwdDVCUnDUzFQIgWCdAEovFlUcthHKSzockzJrxFPtPWAutoZiQxoRVb"), }, + { .name = IOV("WahzU"), .value = IOV("JKdoNSUlTnFFMEshevdGRUNLF"), }, + { .name = IOV("wRDCJmqH"), .value = IOV("wJQVATstBzeLAGGvNKqGjzbbuKkuDfsqydLvms"), }, + { .name = IOV("odZUzNEEoZG"), .value = IOV("vIbhomu"), }, + { .name = IOV("ioPJbFHBto"), .value = IOV("ksUiDUlCtXbdJOYVETmGXvKRCknteoKMEKlLOObGjhfeREzvGOcMTYFIiqFytPOHAJgQ"), }, + { .name = IOV("hvvk"), .value = IOV("GmMeqNQPsaZtTsLAmJvMfWclbBMKrcVPvSKrmmZMOidzRfhVGozUpFtAboxquihhbhq"), }, + { .name = IOV("pDiYGZaCMRLE"), .value = IOV("XnfHlmOsgHUmtJkIkKxyBUAcdjKIEHgINNAHlRXFFXyXFzxruQBUF"), }, + { .name = IOV("gB"), .value = IOV("KDZ"), }, + { .name = IOV("iVmPNYQdefvuN"), .value = IOV("IjDUg"), }, + { .name = IOV("EcaBhlVNmxrYfXGlaoG"), .value = IOV("rycJRydRuRBhPUQUzwpgUCKgzDAdEzCOTTZiAOUgQLUFp"), }, + { .name = IOV("DTfKwzckfqnieLY"), .value = IOV("ocoqTUfCehDOef"), }, + { .name = IOV("RhcjDDVSWypG"), .value = IOV("IaIcfhQNxUPBRGsKdHDQGWpaLdkCFEuTtDBUugTEskSotaCoPUo"), }, + { .name = IOV("RYIKnjczqZbq"), .value = IOV("DNfolkbBcmhIltWhWmEwEqFcHgbGiwqtJmczsniksPaJsUhTzatradeMMdTSLbIaoSjM"), }, + { .name = IOV("bqrnVNT"), .value = IOV("mWSrpMyaJfgvtueRsskxVSaPUjBzf"), }, + { .name = IOV("dPkojsYVIqSJM"), .value = IOV("fgykKZXcXgmFyByzegOIFdcLRwJdEOAjKfJBmGUSyj"), }, + { .name = IOV("dBVPAHdRLeovbTSmQmC"), .value = IOV("zpHohdSzQdFmhX"), }, + { .name = IOV("YxjeGOwTcyRk"), .value = IOV("MpGxOynewaCxzukSdSQYGAmZjAbpnWdfxXoysJJFruoJtFYAtQofoDZrZxKqSVacZWDKPXfASwu"), }, + { .name = IOV("Fnnvkr"), .value = IOV("XKcVUJHbbVqdusPauGsuiOLQmAPrkLzpcmnFsGzARUQjNdyCLy"), }, + { .name = IOV("ofmCvsEflplDIHkk"), .value = IOV("IAImKwmfGJPOFEyMwUESKpzZatKbgMwaqAfXrfQZBRcoWYMRTNGgJkRt"), }, + { .name = IOV("SJIO"), .value = IOV("tGqqcELTqIEvLaSTGwhNnxMOkSJDQEKBMreTnmwJYmyABSyPInbdVQsLzngNMtKdyZZfiGyA"), }, + { .name = IOV("RyLcEcBojOWiU"), .value = IOV("RxvKQnHqsCiShpRRGnOhFpVWBRan"), }, + { .name = IOV("THDlDPqoerxCRhH"), .value = IOV("BMxwaOTZUssuRNFysoulgNoHnHRzcjbCOHdsyGqfqRCKrlzW"), }, + { .name = IOV("hLvOxFZlY"), .value = IOV("tFihYsAyszXCxSVHbqSYFHruZvYHtQujlOZqEMBzFo"), }, + { .name = IOV("VrszfVWd"), .value = IOV("rTyFWD"), }, + { .name = IOV("qjRWyGzWennxFY"), .value = IOV("NKpJUOnibUAuLncQHtrXIXPnrleXdxGDSaABsFiVsSRYNYBW"), }, + { .name = IOV("aMyVGUeigsebymKeQfF"), .value = IOV("meHEUKXGpf"), }, + { .name = IOV("nkioFEW"), .value = IOV("qAnFFKGddSWoQhJzpOdcRFrwfIEllKqDtnCvTPNiYEfUDgfZkwMaqFJaRkEmlMx"), }, + { .name = IOV("mjmwmwil"), .value = IOV("jXikWOkNwyeSUWO"), }, + { .name = IOV("goibXxPhIzMEzhMAwB"), .value = IOV("bSBAMnnwznBSdwXem"), }, + { .name = IOV("HcOuRtftYnzA"), .value = IOV("qWOhKZdzgoXhVBTNmSSRgMOyDGbgTFsRgE"), }, + { .name = IOV("VrXsr"), .value = IOV("dJlLicNgzQzgfoRizMALwAtVmYuLEPcYJINJEgfXnIdiPs"), }, + { .name = IOV("mvJoxJRIfDXbIM"), .value = IOV("lxbnbGaIQHAKVpYmbChraqmJgZjpQrVZneOUDHPbDSTlOOkvUgfOvKw"), }, + { .name = IOV("nSqQEy"), .value = IOV("DTDLpcnPwTHBpwZnuvGjFTjBXrBScwyRbtVSiAsvRkxYBPEKw"), }, + { .name = IOV("cmBukCl"), .value = IOV("bYLNtywtCkhxQvlCLRacTBTdBzIQsXRYIesZHHifillmIDWMOqVmHwAyIMBooCjlQeOiHpWgn"), }, + { .name = IOV("p"), .value = IOV("YYjxrFyQbpDErOrxSENhpeYFYiPVJfmQvdSNqYBIRk"), }, + { .name = IOV("BGTnRchyBp"), .value = IOV("EMHTg"), }, + { .name = IOV("dpilHsApQ"), .value = IOV("AeYCLnECCJjRwZTCVtsqSVnKYKpnJlitYnrZczxefTtlJltnMyEYzvNXowrOLIAxzNOlUzorfxp"), }, + { .name = IOV("SvYOscHALYz"), .value = IOV("qahqFlnLnuAJqoMMVpyHTqNFeCMYubLjuEjmuJWeUeEhZrWoAFFzZRPfWOwtiMxRe"), }, + { .name = IOV("INagFZsUfHTNiAtJHnVZ"), .value = IOV("LLPOWCwHgd"), }, + { .name = IOV("YerQAbxkhMGbRqdr"), .value = IOV("WFpsRpwTBCDONZIDMujHOOuFhCJaIuXDWIjCzpmuXQGANWMsRTMiMjBfto"), }, + { .name = IOV("OBpeDpYGkcAhtmQocab"), .value = IOV("QSiogqSYMvWqpExyOKyvBGsUmHuodZFXsLhYAnSLEbYalApVOJ"), }, + { .name = IOV("tFStMeqYPBN"), .value = IOV("eqCKxP"), }, + { .name = IOV("ruSLjtAtNKWZrnWnSWZb"), .value = IOV("PJbYSMSPZTzs"), }, + { .name = IOV("eIFXBVHFBGLXyjY"), .value = IOV("RKsHjMvvfVDyoPpjB"), }, + { .name = IOV("kEaeaaPfHkfZJEuFH"), .value = IOV("ogyDmvONZAEBxBYhWkXBAXaIPYWedqAgUHGTwun"), }, + { .name = IOV("T"), .value = IOV("kMtlCVYzKiKDkUlDCUnXYbRzOLEsLBOaewJIVbTLRoGs"), }, + { .name = IOV("mdojVxeXaMRIHLCj"), .value = IOV("UEHaaihJxqEvsDqwU"), }, + { .name = IOV("SYcbHTAMFdxZG"), .value = IOV("fFrCuMTaeyvaoPCuBPPqkOicvvO"), }, + { .name = IOV("ekizRisfC"), .value = IOV("bpulFZAwCSkXXSMhaSmiwwlMUjLkptyR"), }, + { .name = IOV("vyagWvsxhSTqN"), .value = IOV("eAOmxpWXJJrONuhdhgLsWSnwKNyBkiuZSdZpPJcaYfqDPnJeYOjSeHyIdbztrjnysTCG"), }, + { .name = IOV("DYurvAyoSlQFeeasXeB"), .value = IOV("wgLVhPhleWiXCMZExBixTKyy"), }, + { .name = IOV("bivRFlNv"), .value = IOV("aONjCqpyDjbzoIJdLmWqAYfdPdkPqNRrELXcAnNZpIusRJTqvyuBhENQghnDXf"), }, + { .name = IOV("zAWbXbXqkpISgRfE"), .value = IOV("gQymkvosLf"), }, + { .name = IOV("tfyBANqSyQVYqRUJjwF"), .value = IOV("aDXpIwrQIcKSyTiBYi"), }, + { .name = IOV("RmT"), .value = IOV("WMjxbmCCFWPdjXblzvPeXABSKHunBXKFaBiazbFGJYuxfabIiIOvWccGPvRmG"), }, + { .name = IOV("KDRzZ"), .value = IOV("FvYyWVULbyvcSCKYFYgvLUSDQMWxcOombfWA"), }, + { .name = IOV("OZsYZRYxdPIUdu"), .value = IOV("tazJjcxmPKmmRoknYOUHmIeEzmjJeEPBFVGmLdPYGgqpIgMXIBsoYRWWKimEqrvrQAxHrvtTU"), }, + { .name = IOV("dGjDKoVSbnV"), .value = IOV("Tsa"), }, + { .name = IOV("GPQTyRahzTqT"), .value = IOV("njtTjajgFvtAiLxwTqnvmstxAuuFnJStyuRnnet"), }, + { .name = IOV("YSceZ"), .value = IOV("MQHpbglYDhBTMGSbOhYGbFNzPO"), }, + { .name = IOV("cGxjeLwFtOIzWUU"), .value = IOV("BAZvhNIEpPVyIJYYPDTTgVrQAHYSAAQSiMfckhDLhXDLbTmNazFMHDHFSwvlohmqkcBNNfKW"), }, + { .name = IOV("AmmDXQBTTv"), .value = IOV("TKYLpixZYJJ"), }, + { .name = IOV("NVnnvaynhM"), .value = IOV("OXOwHAGANyJQqMgY"), }, + { .name = IOV("fL"), .value = IOV("DOIebUwKbwXlrQsaFBogbTsbzrFcCdoJBYYrtGWnBhVVgdHudrmFSGTdjwA"), }, + { .name = IOV("pQtNdXRCBZxijbvoiIYc"), .value = IOV("EWVVwVOCfdfCfFCPJGATmMAwmiKfhbuXVkEEBZhKVYdc"), }, + { .name = IOV("rdE"), .value = IOV("kLdTlkyyorlXlpFbUyePhHPSK"), }, + { .name = IOV("SAMBDLGARgWrXXWjA"), .value = IOV("OgzdHcTcFDDMpQYvcBCeloMoBYCmybZTNdufHiubXSiTfzUIQNwfjrJuACFUyihXgodTOlfQnXsRk"), }, + { .name = IOV("lLurvEJxrd"), .value = IOV("eWmjAwsscvBOQTNLlpXMeWPlCTwgvKXysBZaBzTcqIUIVHQkqrGTdwvZbavebvkhQkdZpWhPhbtg"), }, + { .name = IOV("zoiEoNX"), .value = IOV("RYllDZuKAydKxorSlKUzwJtSFhmREvXZwNR"), }, + { .name = IOV("rsUPpAxaqae"), .value = IOV("owwbIhRDEXJexlcRqkCbkx"), }, + { .name = IOV("HlxUbBrUL"), .value = IOV("xliDCrbMeTNueIywC"), }, + { .name = IOV("RoUiYckDJZFINgdeN"), .value = IOV("ecuJNLSKQBhnWGECRsFogLePvQaXMUlrvbBOtKCTTjyPkYwDdmY"), }, + { .name = IOV("ryKnpeuqnzaUB"), .value = IOV("dixlKwfFzf"), }, + { .name = IOV("oIYjUP"), .value = IOV("IWwaPEVVTBawhNxQQbwQDvWjmuDWmpew"), }, + { .name = IOV("VPrbnFeNKOyJTk"), .value = IOV("CZkWWdwuNreAiwopIxtIqQNtmZmEWUkccTWQSLao"), }, + { .name = IOV("DApjwKibldL"), .value = IOV("HyXCobTcSVDaKGWaZxPVRyHdapILDqOkKBNWqrvhhUPCWXGaoTXGztfpdUD"), }, + { .name = IOV("uvGDypbzFxCRpIYlzge"), .value = IOV("hpeEGEoQjvDFoBcqjBuKQVwilkLbgSOJpxqKInJIuolAqKiHQFaKjzmgAwYFiuTCwvIh"), }, + { .name = IOV("DDUxcYwlAygnTcw"), .value = IOV("DxJOjoVgVAeQHupLQVfqNuZCthMkpHpSgdhaIGoCZncLOehprfavLcvYVKcIxVJt"), }, + { .name = IOV("iwGvksdOuCMPEKxOcspm"), .value = IOV("CMIKtOKMgrVxfQdk"), }, + { .name = IOV("um"), .value = IOV("HSRacjsJsdduJCdYMKyfeUdcEjBHwcNLqbXNVMQxduxoqYYnbEKPsUlJjtKUwBMnWXRrvlauz"), }, + { .name = IOV("WhtaWLW"), .value = IOV("OmzBFktdNkeHijaevttINxKQy"), }, + { .name = IOV("fAUSIgMAtvXGNOSXY"), .value = IOV("TSIUoAkkdQudVXCqXuRMTMXqXYHadBezIKlvliUYrczZEqhcUs"), }, + { .name = IOV("guoLuSNNwOOQ"), .value = IOV("DNwjNmqRBFOoYV"), }, + { .name = IOV("x"), .value = IOV("snJopNBhwIX"), }, + { .name = IOV("DIwAHBVO"), .value = IOV("s"), }, + { .name = IOV("XqVysNgnjKWWrBKffbd"), .value = IOV("yLTJLgHWUuydFkZOnl"), }, + { .name = IOV("amocVTj"), .value = IOV("yfhHklXZkAZAW"), }, + { .name = IOV("d"), .value = IOV("dnhQihDjSvkgfPYDXDxsPAoMCYWVgGZoJYWlkNAmeUHtIHUiEktEeuRvrRnEAcZBPpeofWWoSwfBljQ"), }, + { .name = IOV("XXJlsVujxSthM"), .value = IOV("PDaklTy"), }, + { .name = IOV("xbrWDZ"), .value = IOV("hHKT"), }, + { .name = IOV("H"), .value = IOV("TdLcsOakhAYqvscIqRsneozCrj"), }, + { .name = IOV("pav"), .value = IOV("VPDBxZWiHIGPZaBglmqqxSTvTEUccutPyPXcenQIGJtJpiPRQoZxxnV"), }, + { .name = IOV("DqLzeMbXxuqGYecFBoeP"), .value = IOV("GKhtQsdPSXHoAHCymIXdzPEIfvLOfNIjMhHfqBCaFAINJuXPgnzeXMVtaZZTgDhZksmtekq"), }, + { .name = IOV("PVIqQodEoAGI"), .value = IOV("eIppovbSHsfVKmgNEciNVNFoKhVIZeBPK"), }, + { .name = IOV("vcHiULbGxscFWIU"), .value = IOV("jkFgkeyHcdzWTRdGpjMAuBmIICQpMwFSyZxFYODgvUaiqkZydGZLdfiiusCzDPydpzPQYP"), }, + { .name = IOV("VsvixF"), .value = IOV("ZGJcyBRThJeFghyqVqCKSOQdVbmLOVvkXjnqhpgWwgvCNyFvxxiKMxFUZWrgpsKZzzjn"), }, + { .name = IOV("YNjOKNiCT"), .value = IOV("xxeRdEBRgpsXNZnctBhJCdpaICRwQXYmXVgWnFcBhPaTYcbFYyeAAWfUOiPKTlYzlTDLanAmbhtkDMg"), }, + { .name = IOV("Nqxuqm"), .value = IOV("bnuUaWNmxqwjFHvSkMsEmacscyYIZHoIt"), }, + { .name = IOV("BYgwUKIOuYwyJFjc"), .value = IOV("ECe"), }, + { .name = IOV("RkmZNIChXkGpmKgvxJE"), .value = IOV("lTNBBKGMuEniOkvuJoxpdiPrCxbeBknskpEKwjMJGxyWVsegCoTMVVvClyltlzppvvy"), }, + { .name = IOV("zfSl"), .value = IOV("mKYRuieNyOqQGnOjyUmHuSeJlWHhntCp"), }, + { .name = IOV("wWCqeERGRNPH"), .value = IOV("yiwxpcfEgEsysYFKWkEkrmVeYTsbraKsgPACFOnPPSkVHLSjpTomKSUSPrsYCWEWkxGcLixzbFerZRR"), }, + { .name = IOV("kibmn"), .value = IOV("twERdKznXHunikCErwaKYpAHJbhMtP"), }, + { .name = IOV("zrykcrsLotOMPriqbW"), .value = IOV("ljgRkGsgTBeuImgCpeMrKTYejLrHy"), }, + { .name = IOV("NxQkDvduSEil"), .value = IOV("LIIfp"), }, + { .name = IOV("PwUKLoAVRIRxELs"), .value = IOV("GxEevDdLVLocyYfNGIGJgaeqHJJxUmtRBqGnoTCrqVLpxEOL"), }, + { .name = IOV("Bvn"), .value = IOV("bpmpUXSLlCYeaPwhgSsGBGIpjTJjDRbTTXNbuPaCVKUkHNdwfPzMQpEbtYwRRdLpabQZGy"), }, + { .name = IOV("SsfZruYEnuhbnH"), .value = IOV("yvGzPQiyIDbCLXabmPprNKNSQuZtbNuntUyovWMoglTQWyPSRAVUqHJqGntjGkpwgzu"), }, + { .name = IOV("CWcHjajeqNmfPj"), .value = IOV("RtodSrW"), }, + { .name = IOV("BvhymrwzxBBq"), .value = IOV("PlrOcClAXofzKmhhmSPOHSsSpZuymtjtVJaQbQawgxtEvCOu"), }, + { .name = IOV("DadyWOoyOwRQKy"), .value = IOV("qLRaNuKaSBOhyTlUu"), }, + { .name = IOV("LbHsEhkscyBuVG"), .value = IOV("JOtToRAfIzcmPUUxwUvvNBsuwABIuqLAiYljfvbfMjRyhCfBzCGuABEeLfytSKpBjOAngkipGegl"), }, + { .name = IOV("FPOLbDNncES"), .value = IOV("fXuQdxxYuxReCqLahgmHRisIoymuUFUTXOpGLwGRBxDeXcMEQWq"), }, + { .name = IOV("ihBJ"), .value = IOV("cqw"), }, + { .name = IOV("IAzPP"), .value = IOV("EPARPIiEkcbgUdUfbjUw"), }, + { .name = IOV("nknQfUIB"), .value = IOV("AIBIxilmiyquiNFcJQqRpHFllrlqNiuuHYeexzdFxWI"), }, + { .name = IOV("tqZyDbzscgBQMia"), .value = IOV("rERIjTQBjPxMNVCaE"), }, + { .name = IOV("ISvRDKBjtXpxZfwPblNe"), .value = IOV("oelFOGzHLKDYfTdanYrKETTRCMqhEnfSMRZgzjhIqvmRaLxvXrXEJxqTUcgTTytlEjS"), }, + { .name = IOV("WQJPgILoAPBDQLfL"), .value = IOV("BnmtzvcCnMQWQLuhdmykS"), }, + { .name = IOV("nV"), .value = IOV("CzxPWDrmLyUiNqPPgWAEBDE"), }, + { .name = IOV("NygszfPXpnmwVzH"), .value = IOV("FIUwsytdJHWTxoZWFFoJfRVzsgl"), }, + { .name = IOV("HKS"), .value = IOV("WDucJruCLBGspndCJsXbrlYuhuAHwNYTfNRgvVEHjsjEnvYFYVGWkm"), }, + { .name = IOV("DufFVSYPKePsn"), .value = IOV("QDNw"), }, + { .name = IOV("uUanSkNxEMg"), .value = IOV("BxaBADBoiIvhAmpPxVMtjTqPKPv"), }, + { .name = IOV("RoSmgmWhhUFeOCjtwhR"), .value = IOV("wkSnjiQWMJGTSbUoqhhUAeNaAFFYfjscINyxsXBYXfUBYWLjVZsIdEfXXjxbgWcss"), }, + { .name = IOV("QmJHsgJlVAr"), .value = IOV("lsHBsXXoaQOdDXsVIVVCvyeABsmfOeuDePWBEUmzNWTPRXmVHksYPZO"), }, + { .name = IOV("mmxXKmQAHSEYHfiStZ"), .value = IOV("ZBBwdKcUJvNabOVIPMKgxPApvtBKegqqOLFyXIlHQJNkZ"), }, + { .name = IOV("OdaVS"), .value = IOV("VttGCEOKLLbWaWrhtcVDzaCDyeYdnYEbNoQODjMGvsBIRkLYNpRBIaPitLsUQFQCmWhKyVNXknPCRx"), }, + { .name = IOV("iyoFqJMQhntyAxZUf"), .value = IOV("uxqQbFRTyNINjPoQUJzB"), }, + { .name = IOV("gGcRpoZeQRS"), .value = IOV("OOZbwONULRMvthqgggZvPyUaPGLKeWgRqv"), }, + { .name = IOV("oMQFAGelnGuSCAvaFVG"), .value = IOV("zaACHaDQxsJxLpqoRsXBmmOqiJHspd"), }, + { .name = IOV("jxVFF"), .value = IOV("qCdlIaJcluHyipgRKyPNKKYTuJqBuqST"), }, + { .name = IOV("cnvKkmSJtcJwDtlN"), .value = IOV("IyPrjDimViSzdDQkLVAAsHJVRjaJhWAj"), }, + { .name = IOV("mhHDxhnUsFoCkipJCu"), .value = IOV("hftTRLcRfrpOvJAwpUPdgFcHeUnIGFkbwXGcDiqsPyJhGuSYNBYUMRtmNdBVxagt"), }, + { .name = IOV("MgfSDCXazlgA"), .value = IOV("UeZOHFnnTAYxPxxMtZASIfpxUOWwUa"), }, + { .name = IOV("NNhnMibM"), .value = IOV("EzzKHThEsAj"), }, + { .name = IOV("p"), .value = IOV("jiHPkoigUkhjCpKuBqHOGzsEKvhQystXQkJcBaOkUVXeRKAMXUy"), }, + { .name = IOV("buPzpBsw"), .value = IOV("EVJIgKczPvmOuUInhGlLKbZpThyF"), }, + { .name = IOV("fbPRBrrITS"), .value = IOV("dCJUsGseQEfzCRBIMoDhqEOhhrWcwsC"), }, + { .name = IOV("Pzqe"), .value = IOV("SZuPDU"), }, + { .name = IOV("dTA"), .value = IOV("wtjrVyNnzzpeLhKcURaNuWZGzIVanigsJmcFaQWlxyttFKdZQmHAWDRLaeoHALUgArT"), }, + { .name = IOV("jHIyboUme"), .value = IOV("lMbJCEqTJfDaEtuXiicXgQiZr"), }, + { .name = IOV("OwcQNfaCndQPEeb"), .value = IOV("FwJohplQbEBpOQqpCRajsSZdFX"), }, + { .name = IOV("MF"), .value = IOV("bWmKtAbDcfVbdTBArrtjuRbwdA"), }, + { .name = IOV("cGAMcd"), .value = IOV("rYoFjwSLxAQzcDekExckVexTHPutjQwk"), }, + { .name = IOV("ukTljtbNeevdMKT"), .value = IOV("BwquwWAQXdMSOUGoVZQOjXrqcy"), }, + { .name = IOV("lmhetxxbXdm"), .value = IOV("VFFlExebaMgcMhhpQbkuNpNtYLNrTKboSTBrWgzXgsBNLtzHMMCCrdKBVfLuwzPePYf"), }, + { .name = IOV("MwXaoeOYiPJ"), .value = IOV("HqpLoSiUdKkWdRflKaCcGdns"), }, + { .name = IOV("KxF"), .value = IOV("piEwVrPhYKCxwXuUtMoxdrkjrKMVdNOqwVm"), }, + { .name = IOV("yXYLHa"), .value = IOV("BXVutcGUcympvawcPR"), }, + { .name = IOV("twzJKoiMrSQINXfYcPi"), .value = IOV("LsjtedRNuRBKPZtSALZETQIDqBkrCscvycwXYsgCtACf"), }, + { .name = IOV("KhXZHHdP"), .value = IOV("rtrkXHiqHFXYEdCrvmsDugaVZFOkxizMdPcrlytsBtmJbeiwhjdGODdJPLauWjnPBS"), }, + { .name = IOV("pysiYsMGCnBWTUeQJ"), .value = IOV("vnvnYvvjuGQUThFfrRt"), }, + { .name = IOV("ynBQxZxSWwlA"), .value = IOV("RNLyFDuHiSrMCwSYfHHkgRKqMtOgNyifFSZlsdRCHPcAChFNW"), }, + { .name = IOV("MAoPu"), .value = IOV("eGxsMfCvMrPzhXloWQNCtQYsxfnlHHFVjmaUmlQfeTO"), }, + { .name = IOV("GMxCMQeNPRqdOd"), .value = IOV("zkDbwMffgrReWATJiHajbnlEfwqntpktjOuCbSTrSvxReJCjRbpUyobJMLDlEENzvsxHEnMRcYvRUM"), }, + { .name = IOV("H"), .value = IOV("WcNTITnfXJKehiUOHJHmPiDDFpEhGcpEYrbvkDrwPiDIGAldHBAyTRBrbXLJk"), }, + { .name = IOV("TZWnGsHcRzuPab"), .value = IOV("mNyaxgllNCnubfOXtzJADZdZnXqfyBSlgLqMqtNyBXTNQYJEwIJJryRZHvqveq"), }, + { .name = IOV("xWsCEWAfCQD"), .value = IOV("EIEZkAsCsetDGMNCfLqJETwPGwFGmNoEDSYhpwMeDdrbWzMzzaStwJxvjCBERglJ"), }, + { .name = IOV("oOxFXnlryu"), .value = IOV("KoMbwuDiJNjSiUbuEEZnmYhlJfaahMXgGXhOWReITPaTVnacpUQGoQFPFJtQlsqtYd"), }, + { .name = IOV("UTxlhuHEYIntfN"), .value = IOV("UuKMkoqwOhkHUkrNIXAMTUVlCXOyrkZenZbazmUpvFpledhIwNRWm"), }, + { .name = IOV("jndBBecguzB"), .value = IOV("PyJxNsDbBWHvaJHabHY"), }, + { .name = IOV("IjPaaZS"), .value = IOV("GndHxxWgHMDkZWPpWICJJOPvnHhezggy"), }, + { .name = IOV("DJw"), .value = IOV("uEvuBj"), }, + { .name = IOV("WxkxVwHXPIK"), .value = IOV("LevKDGNlMQAUmJYEqlqrErgZuLTMMiGefbCOooRWOeccZiuyBihpCPkPPHkF"), }, + { .name = IOV("VTAbEzSVQq"), .value = IOV("ReuTGUGHKBFkovEptNLvqPYlemoQZGJNUabcVErQTolUcy"), }, + { .name = IOV("fSiGFxGiBaznHycuy"), .value = IOV("rycantdDMBTNPRUvvbIXdnEcUGJtsEGWwiwHEQhfevKyKLwuAXtEuhHYrsnptEQRlLfe"), }, + { .name = IOV("InvvjaAvEMM"), .value = IOV("aJdTLiGMpnrrHMybnUHyguRMVvcDzoJOlPHreJSfaiqSKVvyigZUeASMbEob"), }, + { .name = IOV("EkQNLVsmUnSF"), .value = IOV("sybJjMaIU"), }, + { .name = IOV("QHjHGhac"), .value = IOV("jBMHEXbtTMvpAYrOvdLPOUgMTtldCxAumKUFzH"), }, + { .name = IOV("ZgAgezillUyoDvajqEw"), .value = IOV("NMLNNLHfZ"), }, + { .name = IOV("a"), .value = IOV("BkKRQnqALTiMPeIUuWnzRWyojglZRfIGklYrgGspwuXLkljIiWNUBdYx"), }, + { .name = IOV("Ov"), .value = IOV("zZIYkmzoNWuTBziPbiXuH"), }, + { .name = IOV("l"), .value = IOV("uRlIjSHzOkjrToKHepBir"), }, + { .name = IOV("I"), .value = IOV("XBosKKlkBmldgdasGoPnXXbRiJJtaenqHqshTioFHFAWoqienGXppuPdKjgSZnT"), }, + { .name = IOV("roxqJgYWQc"), .value = IOV("AXVbnSeoIpxfhqLVwZvvOlyaktBQSVYrFqmjBMIoiJfQ"), }, + { .name = IOV("sHUZENJQANogngigiP"), .value = IOV("BCFWeVSDzbgqSxeVdBIGSPKnxGEsYILyWvDjZAtlANZwaVpeWbRxlUcsgiKatH"), }, + { .name = IOV("TyeevgnVSLbnr"), .value = IOV("HDUtBjrTw"), }, + { .name = IOV("jag"), .value = IOV("iRArlLCbJOpsgQuLRAMsmWxKcnKHLBpXDEmQUEIDoPbzclAycJbRUmFGm"), }, + { .name = IOV("UyaCMtBwa"), .value = IOV("woBXGucFFLAmkhbJrxspCATuaLdJOhnsCPpcjwuShhkTVdmZBpeejnHLGWfAiUoWOIatSFQH"), }, + { .name = IOV("rmFntjTkH"), .value = IOV("ebPLKxrXGiQmHkxjVaSmzW"), }, + { .name = IOV("WocafZcqK"), .value = IOV("zxZsaNIWprCRrocrXbkYSMHYcVXWLVCcVQJEm"), }, + { .name = IOV("dxtRfBCjc"), .value = IOV("yiswjowXSzksfxrtwRHwmFXeVRpGrDEDmSPNtAHjSmFIvtrdJiSfJLOKwhUyDzdUUqPW"), }, + { .name = IOV("AviyYbczF"), .value = IOV("RUEpHVSrcCryAkdsghIYKphHtjeeHQPjAJGShCYXJiePwXNtaHJYVRBrXmCfgSkgUwkMYekSCtosj"), }, + { .name = IOV("gLKRShWXyoUQKMWry"), .value = IOV("mmIUnKVSSrOiDlNSLTWGQvXhsAnQWzRKWyGWvhbFYJuqsdcVQtTJH"), }, + { .name = IOV("JEEEcHaXgIZnecXZSu"), .value = IOV("RfFwBWPgtgsHzmpYgTFZdsFMQEEOIZtANMPAHBPvdkqyFUs"), }, + { .name = IOV("BeERzvhDVgCnQSDOJYVE"), .value = IOV("mWoNajktlcrnsAsnerzsuONMYwAQdFUafGLydWElnVszAycxaRLvTYWZzpODaGWOKtFTHzJnfEdYIwZ"), }, + { .name = IOV("IY"), .value = IOV("eJXozZKmmspOPFqsDQhRERunZYdRTqpVSMgEHusVlAdnBtTKDpjt"), }, + { .name = IOV("qUbmUuTnal"), .value = IOV("rJhiOPcPkGdYlnfFxrmpGsMKYZPxlQHTBmPkMjAOkbRJctqlytbQWEx"), }, + { .name = IOV("JY"), .value = IOV("KvdbkjExVmnTnqYFDW"), }, + { .name = IOV("ctLIYPXEgRM"), .value = IOV("IGfFmSahErPahefBHrjuEf"), }, + { .name = IOV("tZJOMc"), .value = IOV("KSwJAVrPqiKRyvfhMVvXaUXtcrTLeueFycehjOaQBMqiVZEqXWJvFnudckcTbvDhOcjtGpKlVMwu"), }, + { .name = IOV("dcwUqdoyrviYq"), .value = IOV("rTygueqtUbaGnohcrmWujxypYiQLkfsvm"), }, + { .name = IOV("hWSBZHXBouWn"), .value = IOV("gOeXeFFkhTQlaGnpJfuHLGqFJkksTzFoCoTsLbOYPfEfjfJNTMQUkuEmsiAjkPDOHOA"), }, + { .name = IOV("GBVNjOQFzIFypkcIoya"), .value = IOV("WuDswVMLKKfIfOsCIqwLVXqizcGzFGuSJFLRvxbdXVdiBFEmpEqKKxUPOkeCzAlpiHZsPL"), }, + { .name = IOV("ClFKxScJQfhy"), .value = IOV("wXfsSDtsD"), }, + { .name = IOV("YPhbaNkwzeKXG"), .value = IOV("DpyfHMcoVag"), }, + { .name = IOV("nbnEdsPgYee"), .value = IOV("yPSHjxmumEDmqUAmckBb"), }, + { .name = IOV("afOEcF"), .value = IOV("CaZsnljmsre"), }, + { .name = IOV("KOYkTtwoZcNvvDgG"), .value = IOV("aTwZGryvTxRkfPQbKbYikrjmxm"), }, + { .name = IOV("aECcZYbOEudLTqIPy"), .value = IOV("keylLRUEx"), }, + { .name = IOV("jUvjTsVo"), .value = IOV("OsmBHwKLRZCoDkugiXmyUqbBwsICmQkfyRGwzNHBCqXUtZZXgfFsLfDehKrIVatbsxSqEWDEyPnYDSq"), }, + { .name = IOV("sSOVmMvoNurkj"), .value = IOV("dCCophecSNhcbD"), }, + { .name = IOV("XeiLFz"), .value = IOV("OhZRnWEhheDxQQysMadAtWHRjntEAfuNisyGpUHfqYNlNKOKfLTwweMqRT"), }, + { .name = IOV("AMwgqUKUhjPrRAIBa"), .value = IOV("fVQsEiMXAoMZXVFeHyZEbGKOFOGfPLKbuDkIOLiTekOlmxCbCYgNbDbjsYZGbOtGtajjK"), }, + { .name = IOV("ZvNyJAZvMQDfCIpJspt"), .value = IOV("zCoOgqZPdwveWJEzscgCFCNNBszoesOxGvfiirDowufQgkfSBHcZVoaTkzSShvzQfBYZkvoABb"), }, + { .name = IOV("hdYAkMQNMHuyf"), .value = IOV("zTHWqXb"), }, + { .name = IOV("UHlsxLLAdm"), .value = IOV("YfKioZPjyPFDuRRUwLoZMICEAiZlqNmIaJKlyhwdoDD"), }, + { .name = IOV("fVbcNkCXhJnBjFYg"), .value = IOV("Sxzgo"), }, + { .name = IOV("oQWTnjDgL"), .value = IOV("edomCyEXrktcJhCFFcVdBTXLwPsMsdycDolZaNBWWrkoAQKJcjHXFeEPEPCeZqdpihIo"), }, + { .name = IOV("mlZxkbfwqhnvPb"), .value = IOV("TQgIhRqKqBExEEsuOfjNYiWWEFiLRJbAdeYKYlstyXYDfcbsd"), }, + { .name = IOV("VGXRTsWMMO"), .value = IOV("SgQEjegzVBWIDhNyMlcr"), }, + { .name = IOV("eUaKnEfhxi"), .value = IOV("RNKAvXEKfSpPDzeVxDEuLttHMUDqeYVfgNVEjsmeLNLzwVwKt"), }, + { .name = IOV("OKmntyhPwfeIyaB"), .value = IOV("LVcIZWuZuMWWlLwUVdQVqRK"), }, + { .name = IOV("kSNQd"), .value = IOV("paXJYWXImKxVG"), }, + { .name = IOV("GLOEJiEQ"), .value = IOV("IEjDNttWqxLRIEwhChrhtrTtessUzlfBKiwDglDwFvvzECbGoWIzAciCzCgESllnECoUh"), }, + { .name = IOV("OfSMjq"), .value = IOV("ecH"), }, + { .name = IOV("C"), .value = IOV("djQhrLaNKwMFKXXGEYUKbicGfeDVjBqSpXjDLHCNdyHVbLPOHCFErnkCftiqItqhUryUUqeiq"), }, + { .name = IOV("yHqzDnBlWNwsFNMJf"), .value = IOV("frKENbHrWgQttuykSMtFFkCidxS"), }, + { .name = IOV("BuOknexdmf"), .value = IOV("kJJPciDVhHFpQoUufKmohmybLdFgYOMXKjuGffNdco"), }, + { .name = IOV("ijv"), .value = IOV("kTUkXxHbSSNIYQwrkHqfKNMZDPhVGwXYZm"), }, + { .name = IOV("ZAiLUlDyLNjNBOdnxFY"), .value = IOV("PtOrZcCmYayyMVcVoeYevogmjXkObcbJbaZDowIexDMdZItUHNlVAgvKeZeqlp"), }, + { .name = IOV("WysKwt"), .value = IOV("VtyGfMXstmQdmrpwCvLMEaVZaehjzFrDZtUHTRtufVHBKwAlAAaEpCYkLvexRSKRjnmbGMT"), }, + { .name = IOV("rtKg"), .value = IOV("rmRyXTLBNrspTilqzxjyTcYEcRwfwiZtTgnpHmgtlfaFrqpdKe"), }, + { .name = IOV("qhRPGeTqFrtAnNb"), .value = IOV("MJoMBOvBrJBIeJXypSzUvSSJDjJCuniWHZtQSWgwGFEuIoFeHIXQYcGiGStPZuIfiotyQftEgPNOK"), }, + { .name = IOV("CAPChNbdtxxbojJMd"), .value = IOV("ZpCGwRNnOxUUiPuKYkNQbIcPQKphtnhknvMRwMAMcxjscNWJeKpJxONdGyP"), }, + { .name = IOV("Ge"), .value = IOV("iSDuOJytbRMDGGVWuBgOQtWLKlTnvAVSCksFEQyoZYqPAlecKoEc"), }, + { .name = IOV("F"), .value = IOV("aTtVnfBxmGuJiEmIRHjFVelqPKPDp"), }, + { .name = IOV("luomZ"), .value = IOV("gamEzwbBFlrbHXMnFWMNlMdtSICBLUbRp"), }, + { .name = IOV("XiPjjkpaUuDMvWOo"), .value = IOV("tECmwTvfa"), }, + { .name = IOV("I"), .value = IOV("y"), }, + { .name = IOV("LA"), .value = IOV("wKjHYjsvOiNsXqmTOdbQzGtyjYaDIuezjGxyGDQGdWqODKwoZvP"), }, + { .name = IOV("LVFVrpLGuZXOqm"), .value = IOV("RJiqDRsQisYnYVwsUvKgXIIXkEILfArrclQekcmdbRlgnpEyHxqQNQKKGFgIEEmPjeNmlmisjtOst"), }, + { .name = IOV("gmptIdwuhewancewCnG"), .value = IOV("feMxbmQHdtgaNqMUKOUMXtkJebf"), }, + { .name = IOV("TwMxs"), .value = IOV("XVdMJRuwQlRTaBzvFVbpHPuFvLYiYNbbwwXnatGGaOREvzks"), }, + { .name = IOV("TZDXJn"), .value = IOV("bpakXtHeIXxYHpHrtkwvXeQMyhAzyOohgxbPRAiRardWQiDcyAYflP"), }, + { .name = IOV("JFdafTLbPuleXnel"), .value = IOV("fDiCfNhIFMqOEMcpyvUpHvSXlcBZDJuNzlqWiiAZIT"), }, + { .name = IOV("prgQgUczYrJlexaubMC"), .value = IOV("r"), }, + { .name = IOV("ZDDIqWWtKJRobRfp"), .value = IOV("yooEEnlZgHAeQ"), }, + { .name = IOV("IuKrfkKWSGFc"), .value = IOV("GgKWSDlLhtZxmp"), }, + { .name = IOV("aIxgJMkOaCRqC"), .value = IOV("ETNmjlRPtKuXPYTzEfEfHUSIJnSgLmENUGavkmcAnWqFMafYBJXlgbLpmmSSAUhj"), }, + { .name = IOV("JMmHBNjzVjRHgPi"), .value = IOV("fqkFC"), }, + { .name = IOV("GGIWdNVo"), .value = IOV("HB"), }, + { .name = IOV("q"), .value = IOV("VGMvZnyabbvmmyL"), }, + { .name = IOV("d"), .value = IOV("pTcsfYnuuMWrB"), }, + { .name = IOV("cFVs"), .value = IOV("cEkJrXxikarHu"), }, + { .name = IOV("ptcYXuadnISZNOBf"), .value = IOV("ggafIqbbcbJxTuhjH"), }, + { .name = IOV("HRaHEuEyrtpopsRQdIL"), .value = IOV("xrlsulwkWLXfvUMsaqgXSHKJB"), }, + { .name = IOV("gzfuLvIYROFb"), .value = IOV("MWMieasCDSmlbceynvkAbUYaeylznXtLiBRCjmvpERlZikhn"), }, + { .name = IOV("KxlOoQDgsDBuGbsWuu"), .value = IOV("bgyehiJLipqAFPrNbyTVMjGBbEVwgTUysgHiABuHejJtJGdekkemOFANvPmiuEEPfKGCBzaSITBQlc"), }, + { .name = IOV("rurzPq"), .value = IOV("QFEFBqibtlinhRskDDtX"), }, + { .name = IOV("qiQjgNDwksERaOlaF"), .value = IOV("AcznRCJDLVCTwWSlBJGcvbiCdUsuLhgEDMXFkWuO"), }, + { .name = IOV("MnFTbFNhHeBX"), .value = IOV("HoAfKIt"), }, + { .name = IOV("GaMNMTsiQ"), .value = IOV("XuiG"), }, + { .name = IOV("eeGHVNo"), .value = IOV("yq"), }, + { .name = IOV("YEmEb"), .value = IOV("SiFyLYAMAza"), }, + { .name = IOV("xrtTCQQailAUPzjq"), .value = IOV("GZUJmEXHiXQlAZIuomirgeDqzVYmWhOstvasGapBaYHHvzcUobctLgeZzgKzYXczmIftdSMSL"), }, + { .name = IOV("vElpjaFGmhQc"), .value = IOV("AkbXkVipvRXZduYMa"), }, + { .name = IOV("OAXkdu"), .value = IOV("gVMufiMqToAPTeZPuGReuMDSPJePjAOgqNNYuLicjSsXVFSNdGPiHKXfQFwQuhyOeDTKlF"), }, + { .name = IOV("tSaqWevTp"), .value = IOV("fUbnOmoDQCkoJeXUFvpKXPeYhtoaqrzNXdPwxIebxskSafrXlZDsjoKoOpUPOoPvst"), }, + { .name = IOV("McEhEFTDR"), .value = IOV("KtEAMNWuDqwyCYxVGXZoFIoODQNNnxgrfIkhAKhOPjrHEpxMIYMaVWqDiYNrUoErLcLublLl"), }, + { .name = IOV("cKRYavAZCGSUU"), .value = IOV("dNpOiJZfYksHxWp"), }, + { .name = IOV("UngQBZzr"), .value = IOV("LXmDxTgBpvpjDliLuXHdaDoaWoxSlNqaBLyYLYglBsonXDmMpUSgdyfnk"), }, + { .name = IOV("WSfOvLODnfbOxGgdhz"), .value = IOV("hcZMUAVkNLNLhrdvaFoomcBBkoMyOVvBnpnmRphGPNENhiwmRlQzvfdmBOAWkOHHPQky"), }, + { .name = IOV("JOctAp"), .value = IOV("hxPQyNvXOOFpfCWKwPNGHvlX"), }, + { .name = IOV("egqaK"), .value = IOV("QWBzuRUBazfYWevcbzSmQYYnoigJ"), }, + { .name = IOV("BSTIYAQ"), .value = IOV("kuUchQrquMvsUZLSqsKKnNNSBnTUPymwduOoo"), }, + { .name = IOV("CsEJv"), .value = IOV("KTzBIxTiIQcjCqcTGdpiSvtsgBbQUtUyhcttAeTImpqqPWdjVxazT"), }, + { .name = IOV("yXngLJW"), .value = IOV("LgRsojxhVipHvTxZetfIYQwKHoFrycVRkXFYwljxXMJNtK"), }, + { .name = IOV("V"), .value = IOV("eBKhEgpupZeUwajMYQOizXVWrWrQOclkRrEoTgaglxTKESSwSvqpK"), }, + { .name = IOV("oIOY"), .value = IOV("EQyTJfuwNKSSkFbTlueQDVsTji"), }, + { .name = IOV("WSNALfzSAfTRCQBr"), .value = IOV("sxXpTKUqFXUCsuHMMldsteVEFXOrXkcXFpMIJMRToLgdMRGJuEG"), }, + { .name = IOV("e"), .value = IOV("ZUbChknaYjVdzTuqilnxuLDcRBBVrzQVW"), }, + { .name = IOV("QrnksEvwxe"), .value = IOV("YXShgKSelSkABGEBVIxMANFXcpvkvAkpTzUZX"), }, + { .name = IOV("jstWbcWKOebm"), .value = IOV("JkvbGeaqDRr"), }, + { .name = IOV("RUEKtWIjNDzAKl"), .value = IOV("lAsBemJoyHtZDrjnEEJNLAJHARBHtMmDgwiFxGVdUAbOfSLRNqaSDmirMlRLfyQUnCbBe"), }, + { .name = IOV("nchjQRVfvmWdgwu"), .value = IOV("mQyJriDkRMATtorMeLNgaWcQLCynAhWXECIZQUCkgArZCWQapDlBadXvNcCV"), }, + { .name = IOV("SZaGXCveHdXhLfNaAR"), .value = IOV("DauTu"), }, + { .name = IOV("vmGQilYfh"), .value = IOV("uXQIhDEKdqGbrwzqBroGOVFPvqwQUWU"), }, + { .name = IOV("MdSXQUwQPNJIl"), .value = IOV("XkVMBNVkfurzqPZrdnwo"), }, + { .name = IOV("mGLTjEPyHZPL"), .value = IOV("zzHaRIEAVJWYQOTfzisOMitVRhYkPjPzU"), }, + { .name = IOV("aTodTORIOQyHXizPpR"), .value = IOV("bQonqjTRXWzSuTmopXDYETVNhcCuPpQCAMpQyrZQUCRqUHRFPrhqREMorkFFT"), }, + { .name = IOV("yQZoPo"), .value = IOV("oNWvLVSQPlEjxYEpVcNrtAFkfEPElfCGYUQXnjgv"), }, + { .name = IOV("fuTGuCatsuBYxySAkqUr"), .value = IOV("DqqjuQepxfgYsitvPVQDHMzkhDOMzhUGCSbGtUiZGTyS"), }, + { .name = IOV("pjS"), .value = IOV("OtepKYgtJAYHBbGCWqBiTPjLGbEvQzeFSUzlHceQXqplhtgcbIbGECZgLBzhpbJgVqGXjPGKhL"), }, + { .name = IOV("UySfWlCZFw"), .value = IOV("SGzhshVnWhsPbzchLWSs"), }, + { .name = IOV("bwrs"), .value = IOV("bxPNbOyILuYeHJLAnAdjlVbpTkIPoPwrGrIUKydPxVpbpqZpsAk"), }, + { .name = IOV("iMtWUWd"), .value = IOV("qlfqsTzHrHxgxyLMKIIPvQfGwJwFIJJielJMccAanUfWhRQBPnckEFMtxNnPZoJwyvwegiB"), }, + { .name = IOV("XxAjTsXAYXceHyG"), .value = IOV("KfBeInOpRbCivKKHyOYbyuJdDFCtWMeadgsgmDApYRFiltLhlqsBTuqFjvHNaDKABjNQoEmAOqsTcSW"), }, + { .name = IOV("rShrVixDYQU"), .value = IOV("buQSbyVpRcVsDpPLFIXsXovqGxHnlTehglecBFLrqLxXTQXbrJlqLbarFPEtrJqMeTppMVJm"), }, + { .name = IOV("DWZAGbhUbCDGO"), .value = IOV("HfCdLNXeMkvYjnEUQuUsybfamYIzBueDQlaWldtxJaEvplsDhcFqcJBlqruVKqYadvPqaqTfluBhYq"), }, + { .name = IOV("s"), .value = IOV("yOcxCdJCGCovDlZvNPQlQethMBQFHOlZFCztYlwMGf"), }, + { .name = IOV("KE"), .value = IOV("XDkPLFGBOBrfGVDYSHSNKmOBrEFzXrdztmZHOJbukuTbiaxTRiimsLoem"), }, + { .name = IOV("QjOpwXsVMdQPSM"), .value = IOV("joNHpJfBTjMIBjiOTXDOquGpEVyDHtZqdzNObrGkEPMXIRpBoqMghICgSuL"), }, + { .name = IOV("NxHTHnSZcNpL"), .value = IOV("XXSjwJzFKtJNnvSgWlYGGviSmXAJQAaUQNbtwYakXuaYGG"), }, + { .name = IOV("K"), .value = IOV("qqoQyunIZRz"), }, + { .name = IOV("XSeiwoYpkvxdTCy"), .value = IOV("sPvouL"), }, + { .name = IOV("VdyKZSGRGvWVVqQ"), .value = IOV("BPzGjEKxNQ"), }, + { .name = IOV("iCLdGINhwx"), .value = IOV("OYQnzBMaHlFrTFfwateNfxLjLYgR"), }, + { .name = IOV("bbnCMnTz"), .value = IOV("QrhdEMpEcLwpiPREMPzloQbLenBYUtCtFOZyEkIDXvwhKQLIADvRJbTFLgMJtJhtWudb"), }, + { .name = IOV("ZxHyNusigYzoD"), .value = IOV("UNojknjQYXigCd"), }, + { .name = IOV("cLAn"), .value = IOV("sWQIUefAhAVEfFFzNNuPMFfJzuMVmherKfwKJEVTSAGBbCUcJU"), }, + { .name = IOV("utizjdFVPSDD"), .value = IOV("GggrPfoEYOCoXNUhLXCyZWbeArDgccLCYNskrssTzVKiCAdVheXjU"), }, + { .name = IOV("qUPzxw"), .value = IOV("HYyPIRgvPdKY"), }, + { .name = IOV("YjD"), .value = IOV("LUwCIJEwIcBqkiYhqLqxpMlchqNjHmSehlVvWBPcLmMVXcivEYvFQcoJveHbvaUPTuWei"), }, + { .name = IOV("YOnbjQstHhDKsrqzaI"), .value = IOV("kpMsIwGaLftpiR"), }, + { .name = IOV("vl"), .value = IOV("VNnyvLxTuYdHyYwocztpEPz"), }, + { .name = IOV("bUNDGSjaCTnYTsTMnACO"), .value = IOV("BWKMWKWfZGEfvodUeCONwWZqBullnSFTPeyb"), }, + { .name = IOV("KJJiXluaSeqSrsIYC"), .value = IOV("UdhmkKdiCxkkiHJkXTjZsPGlzJasMIgWSHesWROnMqDMVvYVa"), }, + { .name = IOV("rukrMlnfMOkB"), .value = IOV("qUYppfwvYSsfthXLTmtyeKfsePDpmGamwQkQxcyrtuAtAGaVOuW"), }, + { .name = IOV("cnygFZlAFIRAGEebi"), .value = IOV("VGcLHylARPZdJwqdgulAaMmdNwymWhBYoCfnsUlqqSbEuayEzmYneXXVjCQSYOOuiITLQDBD"), }, + { .name = IOV("XjpfLtmQcho"), .value = IOV("vZgdkMUEBxHH"), }, + { .name = IOV("NELQPUYoEJIaYtWGq"), .value = IOV("CLZOE"), }, + { .name = IOV("AOLjqKJBFpVroePMWmjX"), .value = IOV("FcGWtXpFowqYWHhalucDsCdvjcDzfUHKwQAiQnyTSjInbbWBpbPYXywPxStrsqQGV"), }, + { .name = IOV("NAHO"), .value = IOV("EyrXyWlbrknMnYCHmVcvtsXFAmavYdMHrZrYSUmPkkcVVjfPmtymxEMFVkzoIt"), }, + { .name = IOV("QCebObnrCGCOQHiBP"), .value = IOV("SHyqdsIQSPjFVkGEuFqf"), }, + { .name = IOV("VDwWZCRQexI"), .value = IOV("IKwCdSvPuQWoXgdQcVQwUZJIebanbypQLTxQknuleOXzNhdLa"), }, + { .name = IOV("pHyRUl"), .value = IOV("sPZYElmaNzNljixCwpvYYDabqZf"), }, + { .name = IOV("Qvvz"), .value = IOV("bONuqlrfWusqIuJQxgbkZNBilZXGAEdzNdNbjLeNgEU"), }, + { .name = IOV("zGwuq"), .value = IOV("SZPqVs"), }, + { .name = IOV("bgwUkBZEkfOaVwBOYK"), .value = IOV("fwmiSCQdxaWNqlmjPiRRoPzRSZNCRCgJtvBOALBFMRDYNMqbgtZANcO"), }, + { .name = IOV("WIHyZlQ"), .value = IOV("atzTWokHFQ"), }, + { .name = IOV("cuJJuSXbXxkRWXPSd"), .value = IOV("amHGzNtzGZCimeFUoseATdxWwsZJR"), }, + { .name = IOV("wxqBwLRm"), .value = IOV("LqMYlENZKKvACITqmoAfSHMLtdRcIPZYcBMTkAccCpCDpXJmjabDyBsqaxHprZXjMeZcsndZWBqusMz"), }, + { .name = IOV("vEdEC"), .value = IOV("YxXJoAbyZckbuDslrDHWqsNOzMNvxbYDHGgZtGjAYQIDsWvdtKsYhgieIuHHGUMicIlfjozg"), }, + { .name = IOV("bGDdARTtwzoistmz"), .value = IOV("slkJvEz"), }, + { .name = IOV("KgHCFEpkOaZqHNB"), .value = IOV("uMMCzvbXeQrhPPsDSzvIUDQZENdqotWhEcIlHkKwaUEymGfhWnWgfREcfwjAffakziHKZqbIRnPC"), }, + { .name = IOV("SDWPbspRWWlhmUKn"), .value = IOV("zZteaduUTWCRxCHUBujLCARNKXHPLyBJhmvERuIMqSbCAnQppguXQvntZ"), }, + { .name = IOV("lFygy"), .value = IOV("QDlwaHbpviaLDRHKYrWwTsBEwbebQGlymOWWQQzDkfQvOfDOyNPnMhwBaFseNwjUAyzBOHoRoBylVnj"), }, + { .name = IOV("axcLdvxzsHwc"), .value = IOV("QOrvBJAWCiDEFzgmqj"), }, + { .name = IOV("wiYWwulHJnACWrZATtS"), .value = IOV("ngaWOBiPzPFVtxfKPJkFfdAlFzspedrhQQdCUyzTKocppelmLoPbNMphwZsKItrGQ"), }, + { .name = IOV("TFPFOk"), .value = IOV("dosOYGGVfnjYNpxSDsXFtWxsTFOCxSzoODnAAT"), }, + { .name = IOV("EFnqFjj"), .value = IOV("fUpyl"), }, + { .name = IOV("PoHGQ"), .value = IOV("xwpPheEZqEMSyxfUffAidyxmWADyEOMHtPXC"), }, + { .name = IOV("gTYtTRbgMFwaz"), .value = IOV("hwbBMUGmlZqQeCxvtYkezQLWp"), }, + { .name = IOV("blgLAQ"), .value = IOV("wwRxMMkzbsJAAApzDIByMELAQVWIVWGUBGizSvKfqGJKJGVPIvVwPgFYxTjKPl"), }, + { .name = IOV("wdIBGLUgquba"), .value = IOV("v"), }, + { .name = IOV("kYTxSoQabNHNfJ"), .value = IOV("zeVnfGjpXzOpWqisCLlwRBiwhpCGDJHPGqqhhUANbeFUfVonliJMqqGCvHmMBaMQN"), }, + { .name = IOV("MvCTamBDELDzmXwYZu"), .value = IOV("CFOfqfBYiPFVeDmKhoBVpweTIOuNxelboFptOyNpqfEgqPtNXEopKeCaTBSgVqWXaBkcCiHltFSYdj"), }, + { .name = IOV("cGIsbjzjxhmPiVJxG"), .value = IOV("RMMEmOySfSKXjRyxWeSRHPRXxBTBi"), }, + { .name = IOV("PXkHBWouoy"), .value = IOV("REnWSPMxzpQEsSvnphpCnglAqiCeXXFeMc"), }, + { .name = IOV("GrcayjbYMigCAxnp"), .value = IOV("vqmSmwORKFivhURQyHAswgJQBASS"), }, + { .name = IOV("NZZZutUKQO"), .value = IOV("RJDVvnOrESUzmmhgHXFqBTtHpCkgfpsqJxhRRWMkWzTmU"), }, + { .name = IOV("jvpRYMKfOe"), .value = IOV("GYnZVbIdPuDndGZTcwfQgAQIzkIvzhXXqbMmeGRkHTLBzDsCoRyhocTsRU"), }, + { .name = IOV("r"), .value = IOV("srEYETxjitnSkRrtFVbrPgyFbLuclzZNXIfymjDFygzWyUbpJbZKobMVSbd"), }, + { .name = IOV("VbGmsiglW"), .value = IOV("npMHbp"), }, + { .name = IOV("RaWMwNtuGeqrxG"), .value = IOV("ByspxYtVajvPyMklNIXozv"), }, + { .name = IOV("ReXRThBDnrsXDIly"), .value = IOV("YwHpqBxsxvfIjNWsMp"), }, + { .name = IOV("qOvefhnjplytj"), .value = IOV("IOoCNVbPKTkgtZWOIFmWGaEGHiLXbhhmlwxiJDZFpJhaLJWJqBRaibADcQxM"), }, + { .name = IOV("zxTJVOXUdwd"), .value = IOV("xCnMxapNgjUDrLwDyEHFYzUQGLikrjCfNUgOtUJBuzuWFOexxYQFzU"), }, + { .name = IOV("cSxSdmvFYGmgOlbB"), .value = IOV("MMNXykgzURLnjgTzmnerKyhmJGCWCByAEtSELuFXdwCYGRdjDIuzmJAAhRuOfJNPfEeSp"), }, + { .name = IOV("QYgCuQUcDvkYJWOXx"), .value = IOV("YwdzotTzxeAKfFiIyGCimVgRVSDXCobnbwHNK"), }, + { .name = IOV("Q"), .value = IOV("bLDfJFiILquVKriaPQSJpqVtsTaUcWZOnr"), }, + { .name = IOV("PLD"), .value = IOV("vfaLApaN"), }, + { .name = IOV("CPDpnyDrnv"), .value = IOV("uaHroAAZfMPGLyKuzioolb"), }, + { .name = IOV("eRahmgFgNVFAosJZn"), .value = IOV("HLsqXDwTtFsLbuaeUcDUWTGYbkLCdWpVwcayWtIZMKlgKTJbEUaRSYUmRRr"), }, + { .name = IOV("tqgVbPCNL"), .value = IOV("IRClvfMRtoaBwWCXjDICwlkeaBqUtCyWKprUuwtzud"), }, + { .name = IOV("yKleZyuHBwJDEYkMz"), .value = IOV("uuM"), }, + { .name = IOV("GlCNrAaDktayPT"), .value = IOV("yt"), }, + { .name = IOV("XRkXREGAvvJxg"), .value = IOV("jBOWpbgTDLuJKgcZxJiquOFzIKQPzIkFMEPIMGVMlBMTCxBmYsrGRmxEcCFaq"), }, + { .name = IOV("DKiDUd"), .value = IOV("yvnxomQFcstdrLAkYNMgzOXvhRRTqgtzazgzFgeM"), }, + { .name = IOV("MgsWgXCHpvNKwsYLODg"), .value = IOV("GRutOjZoGjkNMKweXgnZaBXqAbztEVTAbKwvIWlQCA"), }, + { .name = IOV("uaHKZpEanFZpCzabu"), .value = IOV("f"), }, + { .name = IOV("EKAnqeYQhAwfditnko"), .value = IOV("HRpRByrzKuSsqVCYZCvAAQXizUuBFLYbGZyuwyTh"), }, + { .name = IOV("vhmPLQPUPbhPZDT"), .value = IOV("jFnoNomCIPufXtLhqbqqPfcMsVPUlTaKwkcKhAEtlXHKsrkOTwHSIE"), }, + { .name = IOV("ScC"), .value = IOV("QQmZCKyOgisSRYJAnVgawqtJBFGJULznwJoULFeMcpfbYmbFbfNxDE"), }, + { .name = IOV("dGUUBr"), .value = IOV("xSNqtvMGxcPgigUVTyMqrGBRYpmWdqXBRnuYRNWpnyWDRbLSoipY"), }, + { .name = IOV("XSIXghCwlsSt"), .value = IOV("sTaKsYQvIdufUfoWmUboQZeDILlSILxGUIjfIoyxkpxPVVqAGjAUSzZOjcigxbFq"), }, + { .name = IOV("aHteOVoWybdwiOLnXNro"), .value = IOV("GmFOFalVszZJKLiyVdyKLvSsJXjtITqWIIxZEOLfSLNuLMyTNrEBsFskNcTtdQryduuuSFIc"), }, + { .name = IOV("Z"), .value = IOV("wqEexmcZiUkgzmeqaEtAixDPtNi"), }, + { .name = IOV("kFliyphA"), .value = IOV("nueMQNnEhpNmtpdVsPQpdrIuCqQWMhbjZLyNGDYAGlQoRRmgewutUTPAvvJevNPnMjxlUueowXPL"), }, + { .name = IOV("OSq"), .value = IOV("uKWIGtKkTZrONudiIlaYXnraXDgHaEqqJMpTolNFMCQAqsJZ"), }, + { .name = IOV("uABjuglbSfmfgfhrUpUH"), .value = IOV("OcywLftxghDLVJepCgdqzWJQzY"), }, + { .name = IOV("hMVpmA"), .value = IOV("mWDOKQVyksuuLIHLbzjhRzldaxCkVzeSMVZdDNBJrhkRzkPzIRUxRBQvNlxLYpSeSFmXqtreBAIsGlH"), }, + { .name = IOV("WwcmbpOpreECPQ"), .value = IOV("wPAgSHJtsutSDiplaFhpsMcg"), }, + { .name = IOV("wslj"), .value = IOV("ugomdPdDDAlDHwHTqMBuTzJSzOngfKwGjcWOpMXkqHhsiThJbnGblbPGiBZNsWqPn"), }, + { .name = IOV("xdTItQj"), .value = IOV("VtmLJnEPiZIzpvE"), }, + { .name = IOV("qwaBjooIIALLPBznQBp"), .value = IOV("srPLxrMjawWlQGOOpYRonWfHXjaMrGBuXZqtHbcrfMEQSrrOHQg"), }, + { .name = IOV("t"), .value = IOV("KotVpKpAzxXKrbVpjeuMYzqjYRAlwddKvVvQITELPHkuAgXWSphbZDMHoUbxTYBesifjvBCGWBBpiOsu"), }, + { .name = IOV("hgLf"), .value = IOV("EwyyEpagVKgzBbaq"), }, + { .name = IOV("RCVMUBkiWYtj"), .value = IOV("IMrmHBmkLYEPBgvPkCIvQ"), }, + { .name = IOV("KrzLC"), .value = IOV("ebQLlQYqfPMnQLbJENQYAfuSSbUvsKYarvXxaatvlFcFgMV"), }, + { .name = IOV("JWpJ"), .value = IOV("ew"), }, + { .name = IOV("W"), .value = IOV("PIyKITREsUZmpzhnvKitWYcGhbDWEbzVrjDFaATGWqHigOhE"), }, + { .name = IOV("muFBBfgAVCZMURGJ"), .value = IOV("ZiLWYOrpgSnGRyfuwQSNCBkYDIgzgvUXRwcPKjaKfkuGYoKmFAromHFKGpbcyBdLHvTbbptlRrhLhoCb"), }, + { .name = IOV("MBfUqmZtkEt"), .value = IOV("KlBno"), }, + { .name = IOV("t"), .value = IOV("jIsTSSvdgRGctPuDaygXFEAqPNlkErVgIUaYgIVNffooLk"), }, + { .name = IOV("HzDYtCcZUAMedrP"), .value = IOV("Zszx"), }, + { .name = IOV("FDmIXeWtrrjfVJ"), .value = IOV("JUMCiBpqDwwFLycVbnkip"), }, + { .name = IOV("jxHTQIiHNaD"), .value = IOV("VVRbEUtIITJEOCcRWAClRDE"), }, + { .name = IOV("bmbkUzoPwdeLpVB"), .value = IOV("dEPbZ"), }, + { .name = IOV("uk"), .value = IOV("JOgKDGLbpjqkRTiORjGZpSp"), }, + { .name = IOV("rzsJfEqXySMPaA"), .value = IOV("RkaoRgFnIPyPwyqVehfdnNihQhyxiYHYrmPUOtWzqBsmxidnsqAwKQCu"), }, + { .name = IOV("kCggMRVZBpSaHNtel"), .value = IOV("HhbtRbZRODcZJSwLBfGgYadhgobCiJywsBMLLhGHF"), }, + { .name = IOV("ZRErtK"), .value = IOV("KMirBNIgFlHtbDhvprpMolrmMvQxYCrqdQnrdt"), }, + { .name = IOV("jxRtxVrEGIraQvEAbFy"), .value = IOV("dDqPOIhRSUhwyBuBUToFSAxiGjqpRWQGraQYCNuXHXhQAbqHGseg"), }, + { .name = IOV("DhTmBlFvQoZKoJrjMpxu"), .value = IOV("vwRyrFYFA"), }, + { .name = IOV("ARtzILdeec"), .value = IOV("LUNkVTZFczqnDFkKMCmIEK"), }, + { .name = IOV("kqBCyorIVMeCVih"), .value = IOV("TUGYXJjUAzmepujdsxlUmkKIiuZPdggjfZTgixoYEpbtDYYwxLrysyWDvxsFMNNgVdLXkGwKKgxetczv"), }, + { .name = IOV("AuipWFpSCKc"), .value = IOV("rUX"), }, + { .name = IOV("KbOThRSI"), .value = IOV("GTQehfSPifqdxmQaJHNGdKMLNUHtHcdlewjUFKafmmjf"), }, + { .name = IOV("J"), .value = IOV("tJAlJvXfXPPMpmTlnguWFeUblIJuzXRuEFmlntVuYoRi"), }, + { .name = IOV("ynMZw"), .value = IOV("qkcVsBVEYSdnVKV"), }, + { .name = IOV("tEbjkP"), .value = IOV("qQtrMFTyljEVEMGZLOrBhLfzmPfCZbeIKGDivVUyt"), }, + { .name = IOV("kR"), .value = IOV("YRCyGOd"), }, + { .name = IOV("KQdtJsCFE"), .value = IOV("HBHqFAQfTuCrMqHUyyBOFJiHQajRyugGCcHGnLtez"), }, + { .name = IOV("XnxwgFNKej"), .value = IOV("zFrQiJlndTDfQGExeo"), }, + { .name = IOV("n"), .value = IOV("BrZBOKRAKZnmKakcbr"), }, + { .name = IOV("RVDZKbGJKtmQrnHu"), .value = IOV("UvtwpTqedKmuYummzPJFgOFHgrFixLFdgAAGBTUMgBAinLOILOqxyfjfMaMbUvrUSeugvFVmNDFQLgOP"), }, + { .name = IOV("FfaLCyGsqxWHTLzFs"), .value = IOV("YXcmtxcrLIMIXJuEztReLMscAcRPIkMpTGEXp"), }, + { .name = IOV("mMhTieeQqykXbXIGWKFn"), .value = IOV("hPHCDxrawRAnHjDuYdhDNhsKwTZRrEuETuvbTgUTrOribObWfDMcUfNoZRHHFjdGgjFNQtFGyZVmQVa"), }, + { .name = IOV("mvhIqcdowOyxygRh"), .value = IOV("jbdpYPosFJKDnVNCNXpeiWNJRD"), }, + { .name = IOV("GhdgwvuHqrOVMgjKm"), .value = IOV("WoodzIuWcJTSGtLEsYvtwUHMUQDFAXtcDTQrxdmzNMXssInhuNRkPziluxNbYAhINPJs"), }, + { .name = IOV("JyxvgKNDSrJHxJSiNI"), .value = IOV("niNlrICnCPQzGGLFIuYzvoMCMzibzvU"), }, + { .name = IOV("OKljdHBkwXeTtmFMqs"), .value = IOV("lNioPinauCmiYAFovEYyFjlKDKZCfvlYsAfSMDIoixqazVGwMqNp"), }, + { .name = IOV("uWLReBkPTpoEJEU"), .value = IOV("nGhasuAeSZGZBzZJMELWwUh"), }, + { .name = IOV("bwG"), .value = IOV("UTwAQNlOEjJGtmtSYnbOEcNDeTLyo"), }, + { .name = IOV("BPGpMrUJaxr"), .value = IOV("VjxjjYIKJLQPlfSgAsRexm"), }, + { .name = IOV("yyGIqwAUNnU"), .value = IOV("mJNgfVeTqfIGgYwhuMMYtVqhOZXmYUWgEqqfMsyakchqiASTynALoksTJkNQGGnXOlYOV"), }, + { .name = IOV("RoFLyoPIywaBukejNUaO"), .value = IOV("KrqCkZFYzgYuSQejPRBFiLlscfEwqyYrmvyYzblTWYh"), }, + { .name = IOV("cFrZw"), .value = IOV("TjEBknfNhL"), }, + { .name = IOV("BoTZMYHJAZVfH"), .value = IOV("cVSduAEnZmNQQpZRlKrxZzhFdrWOEFboGFRcB"), }, + { .name = IOV("WHshBidBTvZpH"), .value = IOV("dAvUxxIbcmWXPrvKgGHQGTbeUXzoDrRYcXDfQEcQZtpQLbuLATieUJdMLENAzsVFzkNyoou"), }, + { .name = IOV("GECIrCbjuGfwTTkAF"), .value = IOV("FEQNDlmVOOrvU"), }, + { .name = IOV("VMpHJEM"), .value = IOV("FpmiBxuVteBYMzaPc"), }, + { .name = IOV("iSqCBEnJUEp"), .value = IOV("tTAwtuXXkqSZrcnKlrwSPrpdoLbXHwxzniFiTDWBOruditJxdZSAOaRwdoixEuNNLPcndhZXtLS"), }, + { .name = IOV("pWtRrZhwLOggBTwshi"), .value = IOV("oqdhZugAfdRemJMTYsTBBFPOEAxIRWKuaLgSiwhrqsiWFKdCVxObPxOxcspQTuigtiFCBEtZ"), }, + { .name = IOV("odfSfA"), .value = IOV("ZdRlgZXPtKSDZgnzEWoAgtPVKeAiyavPdOFpMVoWTeRYbFEuroGOVYcqNcjdCfHpFNVUtKBHbzSYe"), }, + { .name = IOV("kqwuIpOOe"), .value = IOV("aiztLEc"), }, + { .name = IOV("srWcTUuoiBbNSWI"), .value = IOV("aclIgeKvigRNVYmFgbiYpXA"), }, + { .name = IOV("SdVaWUcuzcZwGSmCKYR"), .value = IOV("DGYzPQuMHkMBNPfipLjqQVNzItPBhKyTgJlNuvg"), }, + { .name = IOV("c"), .value = IOV("pKMlbKEjwNRfynLmYDzAiWBesAnwSIfJaGnCzdyAuGpOhGxYTHcM"), }, + { .name = IOV("kZuGyFBXUWDeCfu"), .value = IOV("MhJUejgPLUTFjCyslcdHvqXlqSzSYQCdpBHmrVBgEdWZfLIzMWolCuUxjxt"), }, + { .name = IOV("pRexn"), .value = IOV("PXZqAGMxDqzXiKMmEZLJCEgxNzAIVaWUdcA"), }, + { .name = IOV("go"), .value = IOV("ePzJBMKuTWuwqMxrmfMzeOVxPdFfLIUGoiLGFRrAiAPCrnhqoyNKvBXqviUBuUgzUdVIOwOwBVCcXS"), }, + { .name = IOV("osG"), .value = IOV("YhDvghxIsSsYPvIuwCxMpVRIzazGzsDGIDValJIhrryXHyqpvlpXjRDnJYnYATHqnAJOkQdkVP"), }, + { .name = IOV("khMuwKguIvezZ"), .value = IOV("VLvmythDtAUhNdeeTUFOKtEXTZfnTRraeLjXJOdzRsoTgevrmXlOnINkMRFmhhRMJKAfFlJpLfoXd"), }, + { .name = IOV("S"), .value = IOV("GicOLGscgyMwRymhZAibsbuMDFNSqWLaAUpAIlsVpkCopfCtJJZNymkqwADHwqGNenkX"), }, + { .name = IOV("RnbEhTjNXdMmU"), .value = IOV("igMwFpCtYNHYOiMYvgiakzKOtaEJCtXKutGbNPENBHIhilzZJsmaCSOXuimShxfLCZaTVyeN"), }, + { .name = IOV("CfVzyCauJSjBdKDci"), .value = IOV("DghJbByWJVrvHyYjonjhZybknQZkSnCXcdamvvNN"), }, + { .name = IOV("iDlLbjWpDeyTwqRSIV"), .value = IOV("ABHejHlXiPWLdPOKmDiUaUwnajipVZWWDZzGTUpywGJVxUpbtaswlMpahAbWLGxEo"), }, + { .name = IOV("pUcW"), .value = IOV("bwkMwUbqGuYzwJEYRbByEshGweESxFzxkryhXVSYz"), }, + { .name = IOV("jYVNVTZCFdafiwqvkE"), .value = IOV("hJjZVExBpbgGRVmhqPVhATRMfacxkTGM"), }, + { .name = IOV("CELMIKKkjw"), .value = IOV("wNB"), }, + { .name = IOV("vEBQbmCwnxeNhOiNEhx"), .value = IOV("tmrUPtjOjhrvxBmtOfuivEdWgiCjUWuZfXhlwjDNndwLyDvjucYlwIshzGCnkPpHwTNvtu"), }, + { .name = IOV("Bxm"), .value = IOV("dWcUyKbX"), }, + { .name = IOV("jusGkmgeUI"), .value = IOV("FmeqkflITxHatSlyalKuedgwdiSikmqDNSRRUZhLrYAcqlbanLNRfLDclioqhGskxGjDsLpmUVFNM"), }, + { .name = IOV("sSK"), .value = IOV("fwGhAmrHzaETUVwrzk"), }, + { .name = IOV("xiYI"), .value = IOV("cYILKAObzE"), }, + { .name = IOV("xSQtGQYGa"), .value = IOV("LAoFTlbKWtpBarahMjtOuowOd"), }, + { .name = IOV("QONrsYDlWkyMvZqUb"), .value = IOV("XmFESZWCsKugnnThZBTJChOhcjBhgbuBNdACtrEtosurQw"), }, + { .name = IOV("nCFedv"), .value = IOV("Q"), }, + { .name = IOV("iAUYbCxBuFedCKDjPv"), .value = IOV("zvMjkmpuxOOwOpJPZfTErIFj"), }, + { .name = IOV("cnvseY"), .value = IOV("FkdMJznXKvQJVCvc"), }, + { .name = IOV("QOZdupJgVxa"), .value = IOV("LGElzgYSnUibITXrSPbIwFNVrFmmNiXzZTISoIj"), }, + { .name = IOV("RPfITnWHDOTWxV"), .value = IOV("mcA"), }, + { .name = IOV("rPrWnnckpDCm"), .value = IOV("IagqhbcGbTNDCd"), }, + { .name = IOV("SzqnVF"), .value = IOV("oG"), }, + { .name = IOV("VnbJBeEtVKBE"), .value = IOV("SMTqHGBRHXRngjoJaYLavlbKHjzsxnLyDMAHXZKhnqCpemJJuTZhJntKmzTTOORbIdGxvxsGyIyaI"), }, + { .name = IOV("N"), .value = IOV("sEoYyZtOqlqibaEJMCNxmveSkyZVzGzyTkfWndtpAEFifvLGoKUMaPCQqDUKWK"), }, + { .name = IOV("uCWG"), .value = IOV("dnS"), }, + { .name = IOV("EwJmmY"), .value = IOV("tHHOLzaiKLJrrVdAKO"), }, + { .name = IOV("QwFGoGSZgVohG"), .value = IOV("mYlZjaQMyDrVilTFDJvSxpsGfMmdTOMHamiNFvsk"), }, + { .name = IOV("OCTptDZFHQPx"), .value = IOV("cZzFglvcEcYtOxxNnqRHVhPemufXycKG"), }, + { .name = IOV("DaeyBvjsmHoLyLWKhmtl"), .value = IOV("MseiNDisooKXDsZhEKZF"), }, + { .name = IOV("NBjGqwlsEtwkwYNBmIv"), .value = IOV("VgQXvfvWcnUJHOTrNdFHnabSVhOGTspgqdSYlyTMtdcZCYA"), }, + { .name = IOV("cLf"), .value = IOV("SqOYNV"), }, + { .name = IOV("yTPImNNJVzrT"), .value = IOV("cPdgysioGrAmuMYPfZOrVbnTqCGPRKPpqLNaZLSTzIyCQsSdKQKfuFkpyaeMMWz"), }, + { .name = IOV("kl"), .value = IOV("BOLQZuoWWjpeanLCtACiMyZQNlGpeeQyReXwaIlSrRdISgRwRuOzsZbroeucyOmOhXSD"), }, + { .name = IOV("mdWJRpBmUKrxhgnSPp"), .value = IOV("djUsEfeuvrDnd"), }, + { .name = IOV("txcJqTj"), .value = IOV("mBRxvANLaWPbXsNklRJLzJoqGWgPXJhKOGXwzvbZegzSUIFnwzhRcrbioF"), }, + { .name = IOV("BSjchvTPNdskCF"), .value = IOV("lFhHeTodUUTHZdjHWFbMGULiZkxUVEdJMrfLhdsbCJuNZQKgCwsnVlcGHMrTdgilwqqSfCXapyMP"), }, + { .name = IOV("JZ"), .value = IOV("rlKjrBTHLTmx"), }, + { .name = IOV("OffTLs"), .value = IOV("CMMrgGhhbsjJEmfIThKssFcPwYkSeLwIiQiskXDuWSQrjFEPcVbhwBDXL"), }, + { .name = IOV("Un"), .value = IOV("cwzSLN"), }, + { .name = IOV("bRlsUvMGwIZDUasqaIj"), .value = IOV("lcPVwpWXTjjNZUdTyrnJNWwCZwRSmktkNCOPwsBduzhQeb"), }, + { .name = IOV("OBJhCshKmpy"), .value = IOV("dZswGBGoOLLcoQAdJGHVqOggWBXpfgimamTAqdhfcLXonLvHXdcOAqrDdj"), }, + { .name = IOV("OzkFViFcUVtME"), .value = IOV("DhkPCCkCuCNkPPDD"), }, + { .name = IOV("euOT"), .value = IOV("bKNXQnKWxFKIvYNePgatJZeWCjzyKfSZPZtmTiUfPgNVMsURlnZfyzteI"), }, + { .name = IOV("EtFwcWkZ"), .value = IOV("PzMQwk"), }, + { .name = IOV("rfEdORZDilJBZdmXwGWN"), .value = IOV("ypWIypsHLMlkzSSsPcRLJHOFfFJCw"), }, + { .name = IOV("OzEzOIC"), .value = IOV("gumdXeqXUDgXscFYhNkSIpf"), }, + { .name = IOV("LPDVy"), .value = IOV("SyWZuNmiATOYbqnahnRpSWCTghLbQgUNPLXvKxShjrqtiROarVelqpC"), }, + { .name = IOV("xZOQOjVXi"), .value = IOV("PIbFROqIhmdSPlePvObt"), }, + { .name = IOV("iuLyAMhE"), .value = IOV("PxohigVkTbxYBnogkCNHIrSxgzbk"), }, + { .name = IOV("ChpdzIVtVLArz"), .value = IOV("vcKqIbvjYXDRuLVwpaFEHmkLPjnSnUaIAYjAsdoEhKsWshRXu"), }, + { .name = IOV("njMeHdOEc"), .value = IOV("qTorYXcaQbuaCUmPrSQzKhdK"), }, + { .name = IOV("csriCVKVClxbXWrf"), .value = IOV("caKUCfxGnNfsWjLThHaUyTGEnIvXJqUzbyHEISaWKzgTeRtpy"), }, + { .name = IOV("fIR"), .value = IOV("IvEsCfMycjhHLUtLvVrpTcXfxQbEQDETbBYUiVGcChwEyY"), }, + { .name = IOV("Xvo"), .value = IOV("GScRgNfsqzPbuKToUQFonGDuKZWotvOdDKaavxjEADRHzXdNUYvTWYB"), }, + { .name = IOV("xlcdEMbFRNHSLQuCVbGW"), .value = IOV("EWQRawTLESzCVxOpDVMmZxWTWqlMMvBnONyqnIDigsCByYSUTDrMLGjRsZCGnkquxZEvlO"), }, + { .name = IOV("jgFGMVKdERfyM"), .value = IOV("rdPhSxLmTHylNPpZcsvjwDawTEzboKAmBSlglXaKmlpfWvrNcSNcxnBvdGHJXOUaJPtGw"), }, + { .name = IOV("EjBQHZIkEDXXyLMKYqul"), .value = IOV("EJndIByxlwSrzAypMkljmgVzfyAzrnMBRWTWBfstFGKFunEAXWXMmQbgoEzaDAxoMW"), }, + { .name = IOV("KZjAiybkAmcJ"), .value = IOV("HcTjcQdfHwjVFdPido"), }, + { .name = IOV("MFPUPqtodbmxwzyvucqZ"), .value = IOV("owoENHgSRPKFDbEvBdoqkggvycih"), }, + { .name = IOV("QUPrEoulsOnfeZVFuB"), .value = IOV("mfdqQGmShhhXyzWoYwyPOAsvlftfjjlWhUkKEcvgAXoNGKpcirw"), }, + { .name = IOV("MrlXsr"), .value = IOV("TEmgMDclzRNiYmtAqVbZAyIqAjkkmlxGvTthFrXstIpSInE"), }, + { .name = IOV("CfdsGy"), .value = IOV("OmLnNlHdrxqXtxzMOZQArfRmwIuYxBBsggbfUsCkxehZWZEiydYKGGwndSHlcpGCDIjOMQeXofBkjXvy"), }, + { .name = IOV("GmSTWuaRroncPz"), .value = IOV("RMdkNDLGXEKrQfnqbvwvqpTmoqlENrtwhiyvNhcnYbPEpXzNtTnOUMIhSQIPGJrFJOoGPNYy"), }, + { .name = IOV("PsckOhefyEs"), .value = IOV("NeAPHQPOCKsjFcIjokTohjeVYLgbggSnRNVAKRWLesQoHNpkBkFyCNxGMUHqFsz"), }, + { .name = IOV("MQnNsOCmOHOydM"), .value = IOV("aBpGOAbGrYzaxDAUrTqThJbxwsqjONEe"), }, + { .name = IOV("sZFKUO"), .value = IOV("j"), }, + { .name = IOV("QqUMSPuGXWaum"), .value = IOV("mlsKOyHhTSFWIMRScmmhHljSZ"), }, + { .name = IOV("RFAJKDMelxS"), .value = IOV("lXAWXWyhxBiOwxjCEyQKHqNhXvcWfiAvmJpGCETVwnduxUydCyZRguCanReDCN"), }, + { .name = IOV("cAgYQAB"), .value = IOV("qXLnKCmoblVbmmEJCicIfoozvpBnzIUAyy"), }, + { .name = IOV("UOiDNKN"), .value = IOV("DfxuTXkzQurWmycPBsmpJQSbZHempsJ"), }, + { .name = IOV("jbUpJFHaAFIKjhD"), .value = IOV("RHOYwFekQDCoBaZFjRFACjlHnyPDfEWqnIisbqkZMKntEO"), }, + { .name = IOV("qIHXHSB"), .value = IOV("VibwmSLkisqtrnQQxdxBntWLQLcljyXPKIssKugujjTPwVMQwPxPvMWE"), }, + { .name = IOV("INLqfCBIV"), .value = IOV("grdgpUAusR"), }, + { .name = IOV("QeWbLtiPe"), .value = IOV("oHLXPMyWQxWYsPNHNNOwvnJEgSCeapimjoiFeMCBeWvIl"), }, + { .name = IOV("wRaxTEGvqSUvNQ"), .value = IOV("YTxuLJWceQeDLAUJrkitRCwcXaYMKPBiVcGXkCyWTOHsZBEMuPGQlWCxyrnRYhjL"), }, + { .name = IOV("OP"), .value = IOV("LzCCDbBRjpLlBnOsrBBWNTSVateMElmOqkCwWEROBdgnKxehmEWDsjniEVnw"), }, + { .name = IOV("rrESwTE"), .value = IOV("uNNnaIwWbWkCqxKnOJOGqculyGptxiBzXugZXCPtnEAfmdjFyPge"), }, + { .name = IOV("ZXmLkKbFEcgrntVa"), .value = IOV("CQuilxgGAhbEFVmmMAdyHOLaMWnRDjOUEyZiZtICOWwKvcvXSqAawvIeJSkOEGTVJnUZlrvoLOu"), }, + { .name = IOV("xtnF"), .value = IOV("UlVysSPlUQdSWFMGsgcFRSFuatMLnUtWnWpEaNCmGuWfBUzYnDSCLEM"), }, + { .name = IOV("bjBXNcPWehmoSiYhyIR"), .value = IOV("eYxJevLSAzAjwfFyIupRwZtNGbqrFIqAqKXstswqykXgMFEnvMQROHoUnMKwMLHfMpByfOwFW"), }, + { .name = IOV("qSMiWGsMrbQK"), .value = IOV("IHoHkXPegdLljszjYjnqijNWqz"), }, + { .name = IOV("iegxEaGwlpRjfIr"), .value = IOV("m"), }, + { .name = IOV("zQ"), .value = IOV("pHxNcqQPwEUXgHhGjothFfiQByoIwirfaONIzvKTtojJAbDfRVomiCrTogcBGJzNnZbwbbzgaJtLRDzU"), }, + { .name = IOV("b"), .value = IOV("BAGWUvEWdVnqQayDIiFjaxfSgy"), }, + { .name = IOV("JPaCWEoPbCPD"), .value = IOV("ioMbGtdihXigZeZoloeFpIqqIZZoYGZnbSbmMTSAnWWFXvMl"), }, + { .name = IOV("dAsQfykRqMqfa"), .value = IOV("EfqeDDYaxKradDEHqTVqjLFPXKtZhMHiL"), }, + { .name = IOV("ENNunH"), .value = IOV("DRWADERrCEbHlstneeXVIplUiJOVsXBeNHxHTlwRGHXPoLUoHHbVTdXRJvMjUX"), }, + { .name = IOV("RTZgIJDLK"), .value = IOV("AkREZTQyqxJsZLhUFhDdkHkbGABvaHrpMFdSehhdgXIrDFIclmstDtYPYbuKZCFWFSsEJHncFVS"), }, + { .name = IOV("JVLBluvjI"), .value = IOV("lGUsjfeaxvjhfPQFkcqVvUVNtyLleZjDjkhJdUNZAUawSaBPXvLuFoxpZsrnvcVADTQtLDOf"), }, + { .name = IOV("evnUqezyfJOQuQqWxczy"), .value = IOV("dmcFey"), }, + { .name = IOV("Wh"), .value = IOV("TiLiQwubAtOkKBKrbuMJeqXhKfBDUuQNphziYENRgz"), }, + { .name = IOV("PTuB"), .value = IOV("eWa"), }, + { .name = IOV("uMdOx"), .value = IOV("LrrzXXgDcqZAgopDuBXjCOjoZjCdXwoVqpwYXXUOokduKlsmFzbIlVXDpKHlSccqrwAheV"), }, + { .name = IOV("ftrGOKduSlZcoWpsQa"), .value = IOV("pRjbEAkbAuORueDTgMgWTTPnTboqGQioFyCFlyKimsJsvZOJaJoROcMWjkly"), }, + { .name = IOV("FNeq"), .value = IOV("xNoyPGDGGXyfdIjQEnnLJAmRtK"), }, + { .name = IOV("gx"), .value = IOV("ArS"), }, + { .name = IOV("N"), .value = IOV("BwCPYMztRiHmkdRUIvVcRgZTQcbVobrEuJtWcTsX"), }, + { .name = IOV("ITJGORcNsZruSKBrJz"), .value = IOV("EdIBkhyAUvmXlwcSQ"), }, + { .name = IOV("fmfbrOm"), .value = IOV("vDLPZNlHofninGkVxrAxJIMxwMkERLUPo"), }, + { .name = IOV("ViamQRXQec"), .value = IOV("MrxwzQeVGycfBybCDEQoXmzlPDNFeoqKUNldlecpgNklsXJfXKEuuSETOrUE"), }, + { .name = IOV("PubzSbkhpWgipW"), .value = IOV("LlQGHmOjalPmiknBgOUdgTcI"), }, + { .name = IOV("dswHLFoHYVlSZJCqS"), .value = IOV("kXTLmzTYgwDaRQHAduqsqwYcRHlrRNSCVXKfTnGtKoCojQhWthHPtlIdmDqztFkpILjnxxSVfj"), }, + { .name = IOV("CZXHiuUnEeTSFh"), .value = IOV("MTchqLWbQktgCQgBdlHJOD"), }, + { .name = IOV("baCRbftPUBNepVXw"), .value = IOV("PUgiCrmwcVYQDoPzLRFLcNVskPFkMUrmatcvMGKoWJaDaSlkcNPEqCnbpO"), }, + { .name = IOV("RBlMSxrpztKtuqAJKolu"), .value = IOV("cUHeeOsWZPIwtPzNvHXAKLorNlofFswj"), }, + { .name = IOV("QdQ"), .value = IOV("zgvzsTAmACqAMRvWTrAHtVqtCRjtHDZRLkPrrqxdngRXKhwq"), }, + { .name = IOV("oLJXNLgefwQjzWfohsAk"), .value = IOV("IjUJvNdDdzUqnPfljSiGLDwiWvOem"), }, + { .name = IOV("rTSoPFJKSbmVn"), .value = IOV("oYczeTZZFporqStnJywbvSAgfxiwYkC"), }, + { .name = IOV("fI"), .value = IOV("fYmDcheGRWAvCnZunydtypznZquvOVytpIkZArzxUuvYfomsyRHypwy"), }, + { .name = IOV("IJUsICt"), .value = IOV("nBqmgSITBHWteqLBKConuJZKOpXdRudkRSWYq"), }, + { .name = IOV("NgenCfOpXAfPabYtQfn"), .value = IOV("DsShuriSLvGxfAP"), }, + { .name = IOV("gteGeUDWHmFDEQKn"), .value = IOV("zJaOZTfjDpdBgMNplxAdVolD"), }, + { .name = IOV("IcvTAqiG"), .value = IOV("LnSfxokRlppmCioLGapxfYwAdTwirqZYUqYltV"), }, + { .name = IOV("moSUEpkBE"), .value = IOV("GNwdDlTMOuedfhixhEtWGTjGHojQmGSPlqzUMZijvOXuquCORjEUiCPhREAz"), }, + { .name = IOV("dzQaSIjRdhAGYddMz"), .value = IOV("UXzQPfrwjBfzUZePPwsTqjSvPvwVhvrZsgKEaEbhUqPLrsEXIFyDFAhNYrWeVN"), }, + { .name = IOV("wexyEU"), .value = IOV("eYGluPeodggClPYpEZWaUyUZCPILolykYZgghLBLZUHIVT"), }, + { .name = IOV("EylmNPsRFaUvNJiqipfW"), .value = IOV("uQoCgAIAdEGQPuUFoVgPBJLDcwTsJiyF"), }, + { .name = IOV("GMTGmoRSmJu"), .value = IOV("vXkdhMhGXnvhlnCyaWeceMZIrbLrLogIGnBhRXKxYBQFatZeJsXXothDlew"), }, + { .name = IOV("EQcPxruXEMBjSF"), .value = IOV("VTtvsHsaeOohjNoOZjHwwZuRUSMwsBlOqGCetqRAZLaLZKsechsJasPBrgsBcGBkrgRDtmGFCVFGATJz"), }, + { .name = IOV("LoqpeGlDeKyNDoOqNDaH"), .value = IOV("YfncFImTMXwHXEPbJefoDVSYpcrhdQwKtEtHUiulZfYULgHjwlQOXDVRDmLYydSihRsSWplwOjXPK"), }, + { .name = IOV("buRxyYMyBiQvbn"), .value = IOV("QYLmIzdNUtzFM"), }, + { .name = IOV("kslMXYAVf"), .value = IOV("aErwvVobuGNVZOFuZHqoCEDlrCffqPxoClBhrMshQFRHmTYjWSBxj"), }, + { .name = IOV("xvUyhcvOPMqU"), .value = IOV("RuGSCSCxUltmmmj"), }, + { .name = IOV("RuvTjY"), .value = IOV("aytEQNbBsE"), }, + { .name = IOV("QdVWLYg"), .value = IOV("fdcbxzFRlegozpYEzyHrmtlcZAjhqmacRRefaRlsjDEbRmpRYLwKvtOtzp"), }, + { .name = IOV("BOQJYrHK"), .value = IOV("DvGVlAjiTeTioGUCzdFTUYFnlrXBEJH"), }, + { .name = IOV("jQVvuThreJEGIrYpLJ"), .value = IOV("WWdTlpWIiAKFAkSQbDlYstgToVTKVboyYbJDLJI"), }, + { .name = IOV("ODKZcLXOjfaWQTkPZBa"), .value = IOV("mcBdWSnRhbKIlfXVA"), }, + { .name = IOV("TPE"), .value = IOV("TGAtgcvuzZFVdXXgWbhQxFpJorfDCkkHIJHGyBzBatwkqQppJWGkDNNaOugdvOVwCMbhoebfv"), }, + { .name = IOV("Dqnr"), .value = IOV("AllZxnqljswFGtLUHZGzcbhjvgLLAIwYsJFpaxeba"), }, + { .name = IOV("eywVrRD"), .value = IOV("nNaLpbByABzbwaW"), }, + { .name = IOV("zmfDhKfwjwCxVzrMWD"), .value = IOV("YxeycbxKdVaVCJCKE"), }, + { .name = IOV("tJLOnYxOZD"), .value = IOV("EVMaKtpNtniPkdDZAVhYLfhXnPFzKQhbpmqpYhknDsClOdXRhxgEnMcWOLRZWyUNZmejyZwucMlIlTn"), }, + { .name = IOV("ffxaetS"), .value = IOV("FNzkNXzqzq"), }, + { .name = IOV("WNnQFefowaWmmRAOFB"), .value = IOV("egQvED"), }, + { .name = IOV("NApDK"), .value = IOV("MDUSBD"), }, + { .name = IOV("hzplTHlXJKCF"), .value = IOV("gvjFkciZHjLqgZvbVyRlIHSwyRGDKDJvSHoqtCXNjHpnhHBhvVtdzboGyQKEE"), }, + { .name = IOV("tzCHpElyAZVb"), .value = IOV("nirMDOW"), }, + { .name = IOV("QxXbFYEO"), .value = IOV("ZTcJMnakxWKacPBQtnACazgCkUHP"), }, + { .name = IOV("BvpOrCmUdPp"), .value = IOV("RvyFksBUYMGOHp"), }, + { .name = IOV("itDyGdWwIwBx"), .value = IOV("YaPjSONOwgvPjwoFJnMTljvnYKeQAqGUzTrUYjfTdiV"), }, + { .name = IOV("tjFaqOmJFzyYjX"), .value = IOV("mJCZNIquwaEWSOj"), }, + { .name = IOV("ibVQVFSkRQfYBdqYDLsT"), .value = IOV("dtJnmsjEKtZernYdkkuJeyBAyjVJ"), }, + { .name = IOV("laFzHgAFQvD"), .value = IOV("KwUMB"), }, + { .name = IOV("KPspPp"), .value = IOV("jMxkhIBKCDPyQMgNNoEECjXKsMzEXWxpFoHexSnSvKdXsVpWbqfEZRytwziP"), }, + { .name = IOV("vTMmEMrlLPeEjAUBvy"), .value = IOV("rWOMZzYXDhM"), }, + { .name = IOV("vTqcLR"), .value = IOV("zhPtKbuIADfKdOvM"), }, + { .name = IOV("cpcPQGQuxvuVSOR"), .value = IOV("fiZkroxxxjWpjXoQeJoMZdmFstQqVNmPzKLZkWBgXcqMqiwAlWljTjGrBKuHudkUYfccJzSp"), }, + { .name = IOV("EqXmZaYoxZRfNrLDIH"), .value = IOV("NqrzUHWSALcZsukqJrJyZSlaRSYBrvzOobLIZWSpqGEJkV"), }, + { .name = IOV("CMEXuGTUbDRvo"), .value = IOV("gCpzCrPWnbBQxILEYggHjKmBMtaFtpMfGqkdAJskrwCsUFRThhYlaSpllY"), }, + { .name = IOV("ApqU"), .value = IOV("MsrApiCYTkQBYYWHLtrYEKKiY"), }, + { .name = IOV("fuGxBO"), .value = IOV("hFZVOjmuMshRbNhzKfSnhDghJzHcgAzfhFkUurWQbddwhcTVwOVOJAZCOW"), }, + { .name = IOV("rmhJvlyJrjrBXEOd"), .value = IOV("yAxrCvLtnhIRsrTaveFAEHCdJRuZJgAJynL"), }, + { .name = IOV("sUbiGbuJepos"), .value = IOV("mXSquZXMgxQWfdqSaitJki"), }, + { .name = IOV("GyhMZDJLQhN"), .value = IOV("VQdopxQHEICXoSyrFtzLzvHdjR"), }, + { .name = IOV("CJnZOuhreNMnVS"), .value = IOV("wMvOzQyYPIhuMBlNiZIsuvRNWf"), }, + { .name = IOV("lAnSLIYLrmFrKKfMcBc"), .value = IOV("btouKWQJuReltmFyVs"), }, + { .name = IOV("pNjrNSGM"), .value = IOV("uYDtDtNFGufYcweTSSexgOGyiRfKWsOjspwuQZmXzNcoRVATALmObRVYiSWOJLgZkbMQENp"), }, + { .name = IOV("rnsfHGkktjukBzOT"), .value = IOV("uXOmVzHNrsAYSLXEcORXUwiXZteqtPjZTOHVWtPqnwguLnCtuYn"), }, + { .name = IOV("oxPbPxAFn"), .value = IOV("RmeJznwojUsAhHfoqAFWHAbloYj"), }, + { .name = IOV("gSuJfjTEJdD"), .value = IOV("nPghlhANaeLloQdlwOpfYKOrHUQgXD"), }, + { .name = IOV("ICyFNiahLDPejWG"), .value = IOV("RvREirsbFISEzRKqYlYSdQgKFMIRjGtMZrZMSuztAHyIlBtTWSHBYpi"), }, + { .name = IOV("HXdAADBh"), .value = IOV("bEyIKRZCLUNS"), }, + { .name = IOV("VacCx"), .value = IOV("OpzOZSyXZJgfAXtUTANXApErzdJcMlZoWadpZwgwucjWIlWpBDcaHGWal"), }, + { .name = IOV("gIGVYnFo"), .value = IOV("cmpiWFQnRnuCNWjQpAXljNhRssglIx"), }, + { .name = IOV("rJNqCyvSxmAHiO"), .value = IOV("jbGSqDimrtloEKYiLKNXwckXzJCRQMjNdbChXijjRmgThWCbcUBl"), }, + { .name = IOV("MOJUusMV"), .value = IOV("yKWJYmjzVEhPWtWGnrYFxpNxevzBpHCRRvPGKE"), }, + { .name = IOV("m"), .value = IOV("tzosPRhyNrmfGQmwHQmmsqkQOCfsIvRhNWKaQKxXCbrKHdxpsFhpVxRgQpPoWSoVZSFz"), }, + { .name = IOV("bTQpTibUwPaqXBhG"), .value = IOV("jpRBsZUTUKilXdtbvFxOESqHWLjroHUtvEEtXpTYz"), }, + { .name = IOV("BHt"), .value = IOV("MwMuYquGnRxLYkcTZPZPCWukPcY"), }, + { .name = IOV("rvLkvLRX"), .value = IOV("JQpNTHwuYvLuhQugDuwFQSowAnxilLyDRKFwdrPEiyiJC"), }, + { .name = IOV("dooIUmCbCjlTXlsW"), .value = IOV("FpKLPaQbeYDvCAXmRkczYidHlhOpGwboEXjTbjIWSbzlTCpZbSGZjcKjynx"), }, + { .name = IOV("yhYwbTSpk"), .value = IOV("OayxfUJEQmSRFfPKaSaijoDCfRevZCYbZOaxfDJJjfKenCbkMGBWUdcReWUlZoXTXN"), }, + { .name = IOV("XyKqeuLLQHGThTjgIGwY"), .value = IOV("HoOKQlk"), }, + { .name = IOV("RgQZ"), .value = IOV("tGYUHxrmCEwhxeSonDTVsitVFrletocYRxvZ"), }, + { .name = IOV("Pf"), .value = IOV("yCbYWlcoCTERGUzHgqHAxRyxTHpwZtQbqjNGipRAS"), }, + { .name = IOV("SUHLrSpWMbJwMtDrvTh"), .value = IOV("IprsNQYWlZQuoMBvnYJCHkougLQzPWhtRUZkYJoXLsxBrNzHZwd"), }, + { .name = IOV("VDWOpUtKpBZ"), .value = IOV("XQeZzXlTuPteTbxqmloZYpWVFBptlPalp"), }, + { .name = IOV("aueVDMovUxqyByX"), .value = IOV("itVeeZTzBjRo"), }, + { .name = IOV("XVJguJYff"), .value = IOV("uxIoTZqDnlbpaTaJTPSHRMbsPcqQUQMWBRBWNhQlvjViwknQ"), }, + { .name = IOV("MCzYRx"), .value = IOV("rldwfLhtKKRTjCIIvcbTRDysfvRxRBZvkUGLFELXBbMLAxPJKCqjneWsvDbrOBkQbFZOJAlzZ"), }, + { .name = IOV("hZitVBZrwETsni"), .value = IOV("CcznuougrbSzdrdvaTCrdmuOMvnLiOwwFiCYvrqsbivvwMldEmBgJxCvPAvMKptiyFFmA"), }, + { .name = IOV("ExkTo"), .value = IOV("gZrbwJWJB"), }, + { .name = IOV("HlDpQRUb"), .value = IOV("MEMhGkVPo"), }, + { .name = IOV("WbG"), .value = IOV("YhNpTJkaKRvIJsfVYTjFUnUCTdxGOufFenSHawhRkYLCIsDxagdOjtNpIwcVJM"), }, + { .name = IOV("dmEAsNPSxyrC"), .value = IOV("tCDxXynGJANqzu"), }, + { .name = IOV("KiGzErzePkrg"), .value = IOV("Z"), }, + { .name = IOV("KCy"), .value = IOV("AHOjhxIWeNLQYDKsfEpRSn"), }, + { .name = IOV("RBPmFIuZlP"), .value = IOV("JKPfwo"), }, + { .name = IOV("HeidhGtwUlm"), .value = IOV("PhMVJZxjOCIuTACGIXoqofxzPRaTqxMRFYapgVWFlaBLARLYobLetsvMrxDAvUWWwPT"), }, + { .name = IOV("yJbUokjfftkcIkQFKhB"), .value = IOV("ZdEvFGBjLQkkN"), }, + { .name = IOV("szAqTnNiHbCXOYC"), .value = IOV("OREwjIKtobiTcvgWDmmSpkWhGefSGzYiabrjH"), }, + { .name = IOV("jlOZk"), .value = IOV("QKsLpuXSzwTuuooscRdMzndTmehDNakJUcNKxKCcKJOquJCGPT"), }, + { .name = IOV("xSqUPxJXlGCsrFtkjSXE"), .value = IOV("anOgVuxEhhyXhFfqGeAcuaqXVt"), }, + { .name = IOV("gzHaXvAgBwZlyzLKFO"), .value = IOV("rrsXZMqhajpZaCUXrgYEIocYoHbpzWdXWdcJqOfEKoBbjXMQ"), }, + { .name = IOV("zOfNqdPlC"), .value = IOV("ASuS"), }, + { .name = IOV("EjErahDwsDkDTDEAk"), .value = IOV("UJsxUqUgNPvGWKOzawKyiUePrqHWkwTJsTMoLYsYYHvgMVUINKnVOQBIIZ"), }, + { .name = IOV("ZhLAzHXyCdbUGCjRSWhA"), .value = IOV("fJKmWaddKdwWFZEdUdeXBTwyKjzyYDQEGZuxIokAvXPpnPBKABnrwBGyrFpfCLuuwXHuVBNouDNy"), }, + { .name = IOV("px"), .value = IOV("QHLdbPRlewpCThMRUvZaInlMRlnFQMCIYFvzfjDKBjZcPVDMtzWBXAEKLbkaQxPgEReKMirBysyOU"), }, + { .name = IOV("ZjEPaxpkKowFpvVASEeR"), .value = IOV("xgB"), }, + { .name = IOV("xUKJkeAPCsYVMxupJ"), .value = IOV("cgvqJcwPYqWElQZYsIXzeBEJjjYjXTySRQyIRAdu"), }, + { .name = IOV("ypbDbToNffHeXdtteE"), .value = IOV("LUMGwApYrFghbJnePNlEzq"), }, + { .name = IOV("aRpDSuGrRyC"), .value = IOV("bQrYJSywKDpLbBWgtAmE"), }, + { .name = IOV("RAbLvIvjfyUoTTOvnZ"), .value = IOV("tmXnZeOQCQLphNgpCijBSLEBCBsRUsXBmdWv"), }, + { .name = IOV("FN"), .value = IOV("LukDqqPJnvPybZsoTnETwiRCEgrydYKKSXrbmmbYOUHGzkbkBPZTqDhXG"), }, + { .name = IOV("zCUZeDFhmvgAYmsDUE"), .value = IOV("MqPrlnWGyvrPMsHkpEyfdqKxQSLWBqszlhSWvdFUq"), }, + { .name = IOV("bi"), .value = IOV("SoUixuzoFioVuzvuqyrPqEOWEWykJcPcnaIFjmFSsNIhbjCgzRvklSgxVojpopdHKFDCRDhFkpx"), }, + { .name = IOV("XHMIMIXdn"), .value = IOV("wkqTuiDmdLvcIdJCJcMGgiODLo"), }, + { .name = IOV("onotSaysmspPXipfD"), .value = IOV("GqJJYJcmMtCWJYprksRdiwS"), }, + { .name = IOV("ghk"), .value = IOV("citnIAKpYFHYBgsUtePWEXAngJhOhWuacrJxrvSzfxTDkbnvvqnYWpBsRNqbkIItjSUpBCjOuC"), }, + { .name = IOV("i"), .value = IOV("bjXlxsK"), }, + { .name = IOV("CvagEE"), .value = IOV("dvdngfpzYkrjFnSRKstElJKQlEGuXDBzqhTlHckPJBtaLtjlaRWILFWmsZCUvQykqQOtMS"), }, + { .name = IOV("zaX"), .value = IOV("MMbJlcIn"), }, + { .name = IOV("vIKwfHwXJsSbQuMVgo"), .value = IOV("BWNGLomvrkbmkVxdJPsfGrwNQvYHSdAJBfeGarhSgNpvkpXhtjUPVtJqwwbxPBZtNdXxbZ"), }, + { .name = IOV("jqfZeqYEYnjxgYDpsH"), .value = IOV("uuyNywTbIpshRhSUNJhzOzWpdGLvuMKrBMylggtkwbpog"), }, + { .name = IOV("ZQsk"), .value = IOV("wlACHWKQVxEZi"), }, + { .name = IOV("UPTHhyobJnUl"), .value = IOV("HsVOdGHXEo"), }, + { .name = IOV("NFFsVIH"), .value = IOV("VYwSehCFToeVQtMFSmyMqjiTxKBMZNXuiGzVnOepuESAHSpJgFxZHLRyeGegaRrefIaWpsnyWptfF"), }, + { .name = IOV("qO"), .value = IOV("owe"), }, + { .name = IOV("BQCnJIdxpc"), .value = IOV("vjUAsrrJZS"), }, + { .name = IOV("dwRPQz"), .value = IOV("cNAbPokHMYIRkKPtfljEGMPXGVcdEeRHuNZwybhBKvnO"), }, + { .name = IOV("HDwmCuwex"), .value = IOV("ehYFHXTUvFlLgkFamPUJeqMQSCMOKzPfVQuePaEaZXhHJvEbFyLLOtRtQGxUOodxObxHcNOR"), }, + { .name = IOV("orlHONqK"), .value = IOV("fohyeNMhafqUpuawtznAAPNhbXMAIikYOxzgLKeoHPYPLeubuHJW"), }, + { .name = IOV("euVb"), .value = IOV("jUfrffnrNVbDxzyRkdJbyYtpwhizGrbPbTwyD"), }, + { .name = IOV("LSYlDIOiwOBsCUSbzF"), .value = IOV("vnMMyUpMMQJhkLuRxdoBWs"), }, + { .name = IOV("AjxIy"), .value = IOV("WMQXAVBGzgLYXTEASGRm"), }, + { .name = IOV("BJhgrrIWxeVPApa"), .value = IOV("oYNJOZfhCCqdUP"), }, + { .name = IOV("lnLGktxZJOtoo"), .value = IOV("sKplJk"), }, + { .name = IOV("AAxIngLbVeFNU"), .value = IOV("EzqoyVrqFDIPitIiEMQksFuEHNGckHorCsUXDDbZLYVxDCkWsMnynLZnjuJHHVzplyxgWA"), }, + { .name = IOV("wuEMsS"), .value = IOV("sReXpLcMzrtnG"), }, + { .name = IOV("QxemgjtNzfMxfKsq"), .value = IOV("mywnWjfv"), }, + { .name = IOV("ThZEEzSKCLnqaXPrtGX"), .value = IOV("MXSsHyTqTrFRyQYhcXiQNCJUHOAifteyKMDlpxyScPYBlgsyHBkat"), }, + { .name = IOV("QGFNgSWEn"), .value = IOV("ohgpWuaVgICgUiLJyOIspkfZ"), }, + { .name = IOV("ghiVDnVDvAuzoREt"), .value = IOV("ADnipsyQnzPbdhL"), }, + { .name = IOV("emiDCgdo"), .value = IOV("QofbgpZOanjFCuZGRCLAsrOCynitNIjlEdIFkmbleXVVyIekzAbdDIUCdo"), }, + { .name = IOV("jUKK"), .value = IOV("yhNxfhlnSehnPaMKiYXthZyjseZUyhEI"), }, + { .name = IOV("oYSDz"), .value = IOV("bTRYuibebbFFLyAFTfHcwSfOAYuPtAVhPIxMtjlJfySpHwpOderbdr"), }, + { .name = IOV("htkMPh"), .value = IOV("UnhxVLcJpSPXfZ"), }, + { .name = IOV("RPdQURU"), .value = IOV("ZDALoHdvuRY"), }, + { .name = IOV("FvjC"), .value = IOV("QiXvtkXoQNunjrnwLwpslGV"), }, + { .name = IOV("sPqVNBKZlBkJcUWBLlO"), .value = IOV("BmqweypYJYRzFaFJTRtHcQMuXYaYAxbcbHsGj"), }, + { .name = IOV("qYb"), .value = IOV("sUwijtRBmnDrttHrsLQbzbsZptzXMKqZXFsLfIVIaevrdoRSxBytCaAChKeHGXQlvkEC"), }, + { .name = IOV("OibSNHVtgeOwEDIS"), .value = IOV("fmzBJoFisuQvEXDFcDWEDyMpVqLFMqsYIhXLozZwSzRmSmHCaKhRlbWzBQ"), }, + { .name = IOV("UgSRooRGlIGcTmctJyQE"), .value = IOV("bCqAGqWh"), }, + { .name = IOV("nrDzefzVBwfnqDOm"), .value = IOV("yQvwtxmxtYvmjHnVwRLSIiryhYUdQuPFfVwHVRUuwDJV"), }, + { .name = IOV("hpcKLMryJKemRIUo"), .value = IOV("frVtSKWTgFAvNAEVJApudAuhVzKAN"), }, + { .name = IOV("lEeCVTANijvP"), .value = IOV("PDXeYpXogmkBDEePhfTWsBNHKKeXOjibJYyEnpNOLllHaGNuVoErnpAQzuacYsDrRPQssfNqdobfrzZ"), }, + { .name = IOV("PhWoDym"), .value = IOV("HdAgNMcc"), }, + { .name = IOV("sSC"), .value = IOV("nlLTozbWPgUbOTCeRWbPfwnpxGfuVVeyUyWkpAWpayJBfImzvwYqJvdgpDx"), }, + { .name = IOV("seRZywkVmrq"), .value = IOV("DSjEfrTvCUmxunfgdNYdUgndYcNIzuXWXPzjQDUUjd"), }, + { .name = IOV("fBlxdVuYOp"), .value = IOV("jRngPLxsKwtRlhHmGHTSMNSfbcxn"), }, + { .name = IOV("aKcAeMbzvtjtnPij"), .value = IOV("VuIvkRTzjidpLkV"), }, + { .name = IOV("DHJpWGNjumbwafiyNTP"), .value = IOV("xYPGpZjfbDzjLkXzqwzBUbPrix"), }, + { .name = IOV("uHwdMfczOvIjDD"), .value = IOV("WJSllYmnjRPuPBLdgFNHwvuc"), }, + { .name = IOV("gQzSYCbdaO"), .value = IOV("UpffJplNCoSKqzrCJdSlegOVsRJywSbv"), }, + { .name = IOV("ZJgTnkaoYxwxBiYZ"), .value = IOV("MR"), }, + { .name = IOV("ZiWOlZPhUOWgHKswDi"), .value = IOV("BMcAXPiowsA"), }, + { .name = IOV("EnJMGGyRutespWazDR"), .value = IOV("RFaizHMCxCEnx"), }, + { .name = IOV("CknQGvVYfyS"), .value = IOV("Myjle"), }, + { .name = IOV("YiblpppkkmeR"), .value = IOV("zcakTpgbLFQTOptugYqkTNaWWKDQpzCgUlFfPprcwIhdoplMT"), }, + { .name = IOV("bAHYfByVCxrTDIyl"), .value = IOV("RTbjKPBpicyTMlAGbGPVDmjKCr"), }, + { .name = IOV("mBDArCZBdX"), .value = IOV("vDdRGOvdqBX"), }, + { .name = IOV("qokNcjcQeFg"), .value = IOV("NywzzvybFEGsAXwjdEa"), }, + { .name = IOV("d"), .value = IOV("oOulVaViyZaHFByqlxeuLRvDVgkTUUlBGuoRMhOZKYbXmjCyyfzwRlSgmKtVqeoPiPLsoqEeswZtLyJX"), }, + { .name = IOV("waSSakDJfL"), .value = IOV("SPVjpaclbmckEZlZZsO"), }, + { .name = IOV("f"), .value = IOV("lZhRwaveIDncChYCcFIGrJZflfWCVidteZUSlmMIFYibAeiwgHxDZzLWXHpOEDI"), }, + { .name = IOV("wRLJTnVGn"), .value = IOV("loDPUAchxEirbszFtDKXRkpzgvxqpxkrBqlPKvngdDS"), }, + { .name = IOV("cFPnutbTbAO"), .value = IOV("FHTqJOxkPotjAYXzquEEVNcISrvwJfyLnmgwuvJEtZ"), }, + { .name = IOV("ekIJAMedDPHttmZd"), .value = IOV("tPydgLyigyrlqYNQTLzyzllSrAZVPjIdpGqK"), }, + { .name = IOV("nEFED"), .value = IOV("trWYFwReNvPfzsbjKGJDahlbNbNbNRneYBneVgaawiQAyceXUFVlbpNZjfYwEhGUbjPLEBUdjc"), }, + { .name = IOV("kfeTtUWsRvwAqbciviA"), .value = IOV("aBwQqpeTVFrIWaMgdwd"), }, + { .name = IOV("VqzHdCfQhycnNPofX"), .value = IOV("zmEecpUMRwXhCOeBXm"), }, + { .name = IOV("ocMcrAdfFgn"), .value = IOV("vmFvVFXlJs"), }, + { .name = IOV("peipLLHfMmHIi"), .value = IOV("cJgfzYRlYlPrFbaPNxEisBrD"), }, + { .name = IOV("XDiKAmpDoiBOjQYyuQ"), .value = IOV("CjXnCrJUOGwWmUXXIuTtswmAFfXRwdfeOlPGVuAyCnrPmPUydKNrYtuJsbF"), }, + { .name = IOV("LDDgQvXwsoCIoFZ"), .value = IOV("ZgLOiITjohBqrTIANtwBciGMXLNKqpVwEifLEjrZDAMGQDnUYSaFsmGPBdYKkIZXRYtRluPIGUdTML"), }, + { .name = IOV("ZiSbpemQtDS"), .value = IOV("dpaJuYCLdZFZRtxwQtBvIKhMouUJfduJGxisyPEdSYR"), }, + { .name = IOV("TyrZegZKDStvKTlNM"), .value = IOV("GfDAIGRQgXtNUNxGxLYNVzwcoKOGTplvaYkkBAVTOhubjSWocNCwvRiAJVAmhHhtcgxCLKWLgpWFRTE"), }, + { .name = IOV("JTBYLnExVrmxJ"), .value = IOV("GPhEa"), }, + { .name = IOV("rOc"), .value = IOV("otRzJrOfiAxsaoOduJenFfTlSQbQuWYFSXcDHDBpFccghpFjGXIVjEgtvBMrBOxDmwJ"), }, + { .name = IOV("zsoU"), .value = IOV("AMjRczBZOLlIQdVqszpmCGhUoavYDYMezzYYEGeVDGMYEvubkLfRmcwkKcnTEtdvJf"), }, + { .name = IOV("Qi"), .value = IOV("pVTpXigjjTApplyAuvRjsWvQjnSJZyNrZxImAHJSJgXSSogHkZjtVIIblHAuSuTyoztyQBjwv"), }, + { .name = IOV("CK"), .value = IOV("XfaGZwtVCqyiXWTlKyxDsxOjC"), }, + { .name = IOV("vyJH"), .value = IOV("yGOJWfOzBErQklQKDHdosuHCycUwCUQJn"), }, + { .name = IOV("pDz"), .value = IOV("xxcuhqaIqKPyZciUSoADGdd"), }, + { .name = IOV("ALYDHCqP"), .value = IOV("PPTbGPLMsJKTYoJHAGzffjmmElowGJlBoGxIsuwCSgwwOKfpnhpnkLQQAebiXpsITubndT"), }, + { .name = IOV("wwXX"), .value = IOV("pOOJq"), }, + { .name = IOV("cPW"), .value = IOV("LoImOiWXuvPbnchsVAlsvqnayAEMACxwQZeKSmlCeXhHLrbuIKwnYIrPXxBoJfIcLJwAbVFEQ"), }, + { .name = IOV("fq"), .value = IOV("LiwHefYSuEgVMJAQWLdiTjFEnHKNEWKJkDQw"), }, + { .name = IOV("NReNiTweGUF"), .value = IOV("smIggeXV"), }, + { .name = IOV("TZLpKkddQfN"), .value = IOV("UMGpdeoaUIaulnSIqFDGIFvHHcE"), }, + { .name = IOV("XmIFujluAquBVkWQzlPD"), .value = IOV("MBtPDZgbYCDqVulyAAxSQZMAzOVBqvPyXSNhGPviSwc"), }, + { .name = IOV("WmbaglLnWHxhiXd"), .value = IOV("zZxWTFkcgSnwnJnPXlrfwGWDTsLylnCeMIjWPFbEFOLpL"), }, + { .name = IOV("wZqxmBdbA"), .value = IOV("pkrljiRQsoDLmonFBFnjNqUMJbaPhulWbGENXntiMZRYvdidAkvuZabPzIsnq"), }, + { .name = IOV("MmAhHgkHsrMNqLVYyFQr"), .value = IOV("InSSEtiNhwhcWikqWUzEorcAOlpsHbodBUsSGYPHePSLVWnZrcPSxVTSIUrmFcnLxeJQzwkADm"), }, + { .name = IOV("TVvRlBUa"), .value = IOV("ttYsniAkRoosUhXEkwpZUcgxfJGqTavCQApZfZqhBZKOTkKMtJlGJb"), }, + { .name = IOV("wrraEjiR"), .value = IOV("rdQJYqLQtaCVIEcEr"), }, + { .name = IOV("OIPpwpBJKcZlQJzw"), .value = IOV("kygrAlFhsYHbca"), }, + { .name = IOV("laoTjmTePrEH"), .value = IOV("JHEqgvNDtoRNodqHYHKyWXyUuWXIFBmXsFBpdDSz"), }, + { .name = IOV("ddzG"), .value = IOV("hdgzRvFWpkyCMgMMVoTzUOZ"), }, + { .name = IOV("xIdQugAWEOh"), .value = IOV("XwjZNHeOJyBKTjyGZEMJOMioNflbZLXVrFlSnBsildFbWeUTdsP"), }, + { .name = IOV("PcplAUqXZ"), .value = IOV("lXMKsaiOXZSGoMKJeIVagzGxnvIXKniWjnfsBIzwVIGB"), }, + { .name = IOV("AGmmAzkv"), .value = IOV("hPLpJHtrKQtxARiKXUgxshCWqmmbRTsmycTxdvJkQwkDMktvbHH"), }, + { .name = IOV("rsIoQudNFbnbebntk"), .value = IOV("SdmOVAVfZ"), }, + { .name = IOV("HJqxZ"), .value = IOV("JssAIvkZCdhZYPzNbPNMMwWWBnvgrybW"), }, + { .name = IOV("CdeVpeJFOcjvLQoW"), .value = IOV("IBlbXDhbdfgTLETFhlNRSHOGfczVVyIqzvxEvGwHLrghu"), }, + { .name = IOV("hEE"), .value = IOV("TLMzJTrYmFfjQMFXLQAmmuFbe"), }, + { .name = IOV("BqayHGkOZmZlOT"), .value = IOV("ZhXIfkF"), }, + { .name = IOV("WioNURWFIWgQaUSinZDe"), .value = IOV("IQkeVZDFZTBDcKRQEIvJkQVVLoFLjKQPklQOAMIzqNZqFNmijWcdHObZBLIAihXoCXwx"), }, + { .name = IOV("GRdSigDQuYNAoeiZalh"), .value = IOV("ROUOILDXSrOTRASYIW"), }, + { .name = IOV("YdQfVWdSbVRRbSzTO"), .value = IOV("TTKpyWUDnpHzKgSRtGrEOZmNzrwuYDmjArsUfHMtdjcKwzYMRlr"), }, + { .name = IOV("qWzz"), .value = IOV("mSqpIdlyBhLPXinyVIDhNSDMePRHAhTemGPQqcp"), }, + { .name = IOV("lLZMJv"), .value = IOV("uEjruPDUaReQmUxAkejoaPcSLcRCdSXaMASVVPCYzJKOieo"), }, + { .name = IOV("Od"), .value = IOV("ylcArjqCERheghnmTnHDMJQFyeOQdsFPBjHwIGMwzEYCncLSfNULVMGYtAhxtBpQoaTaMhxbKBLbfh"), }, + { .name = IOV("CrQcYiVaqfAJkJ"), .value = IOV("kZMxWarxQCLUOUKdvvONhskJajokQJPyzjNKiDkNzKpqABbrWLIGJLQLJqqIilMXtBVsCWwAlVmQ"), }, + { .name = IOV("XMfWQPTaSijq"), .value = IOV("mQgrYgyEBRaEbHnanquUARxShKdhwJV"), }, + { .name = IOV("PxfkWZlZkhiQPBk"), .value = IOV("xBcXHYRjhXLAFpqJIZlBqZiDcmNVDPlXNtaylsTUsWxXEHrguRtrYFGzHaMZumsKbZA"), }, + { .name = IOV("KhvCBSYK"), .value = IOV("qicJKaNpFRkzLRentKIlbQDnSjobYtBBbBbKlNCMBxvsRNd"), }, + { .name = IOV("KB"), .value = IOV("cKZLperzOXIbWQjdjJZKaCXFZVaUEJFeJXDGMsjmDxjShWewZLmAjJdTOnoBYbOWnDQuMedzZnskSeOW"), }, + { .name = IOV("ouWRsPe"), .value = IOV("AChurkXesUHMgfTAWQz"), }, + { .name = IOV("jlyHBUU"), .value = IOV("lPamhCr"), }, + { .name = IOV("aXOfxarghxsEkNvTXth"), .value = IOV("ib"), }, + { .name = IOV("uzLsGbHFOsbiT"), .value = IOV("nVpczI"), }, + { .name = IOV("gbKhfKlE"), .value = IOV("QlDPjXGK"), }, + { .name = IOV("cuojVRsKhixs"), .value = IOV("Wc"), }, + { .name = IOV("FjdLxbVxiXeIzs"), .value = IOV("bEVcSEpEaTUlxWFmiIxonsilAhuaDMuMszXKwamYsP"), }, + { .name = IOV("qwSPilDAU"), .value = IOV("ufJamqeWMsQsXaHbhQrSvbVWVPXaZyWuYszhVRYlCYiRoIlYSYtkBuBcJGsERSmYCoWTFNAdOzkstN"), }, + { .name = IOV("wzpwgbDBPoezhSRXP"), .value = IOV("DREjvuzfkNGUsRhQBLlgdUJBPlDyXphYnETWWKZsRhAgWdTI"), }, + { .name = IOV("pkor"), .value = IOV("kcRZEduqTlbXEVcLovrnEyRciDzTuhMhaZTIJhbcrrnILVNIvgHyryYPdZRe"), }, + { .name = IOV("BCImLVHkHRvzzDqNrCLL"), .value = IOV("WBUJJwIvEIHZnJUQy"), }, + { .name = IOV("gYyLyHTswmaXxJbycd"), .value = IOV("rYkS"), }, + { .name = IOV("ryMEM"), .value = IOV("WNknXOuOBFAutrlJphnWrgBHeJoMU"), }, + { .name = IOV("dDjcsKFWkqvaK"), .value = IOV("mprhIQcPChNMrfvRKJrYJbQrTwKyeAyuCsJObisHGPRjwFTmrOyTpPziGhIhwUB"), }, + { .name = IOV("EKFZvoUxrlYYv"), .value = IOV("aJMPWNkYonVuPKkSKjSUThOfJexGeudAhsSskuLzNlztA"), }, + { .name = IOV("FXzikjfHHseoobEZNfB"), .value = IOV("AOgWKkbfnZTkgoAolJ"), }, + { .name = IOV("wougO"), .value = IOV("LPnBDsCRzRicNARqtYBmasJSXPvvvAkk"), }, + { .name = IOV("trWeUSARqJlRkhe"), .value = IOV("TmDAZOlCTRpmHwPLjHQcLLDDzAXhtoNtQiM"), }, + { .name = IOV("VbmyCsUxSsT"), .value = IOV("ekjvyCwgPMvyLcbkaamPlicxJaQHdWwGiZZummiepvkPbGFvHWsqjHJPxWwUSHubnnKlMnTx"), }, + { .name = IOV("ICfNuIxiIz"), .value = IOV("LjHETpnhvtcTGdaJKmQFsxFuzJzrHgbRRDOvTIBDtlr"), }, + { .name = IOV("AXYB"), .value = IOV("KgEofPH"), }, + { .name = IOV("FqlBlU"), .value = IOV("jmgTJUUPJnuMVkStWlsZgcfcLibRMKggqGQeEfFlGbLZpwih"), }, + { .name = IOV("cRQRWmYScewmuwqPAGvc"), .value = IOV("myleQTEDUgqQXaVfiQplYWRPUBZZCkqKiADURddckGxtqPMlAdxX"), }, + { .name = IOV("KasWnhFBywI"), .value = IOV("LrFLkyOwaDVbWGEukGdSG"), }, + { .name = IOV("fPyChmUf"), .value = IOV("URmjtxfcqDotBMBqdsCKWCPGMsOvmPdYmLTDpbOOGaOSILRKxZedHRqsZnmyuAY"), }, + { .name = IOV("Yubomeudu"), .value = IOV("eqCpHlhkebfOJQHBlNFFMGNCuFzqNXBEGfYeccirITSxUauqvgsnORUZSR"), }, + { .name = IOV("mXFgajhmbiKvJJdG"), .value = IOV("GmZsmabRxMcOmujrsvAIWcRkojVfNTQVjIklQfgYowBrHhNsmChTxJTL"), }, + { .name = IOV("zsztqGHPcikjTX"), .value = IOV("NvGgfcIDmMOQvXanMspyhYhLEDYYuLRWznjqQBsD"), }, + { .name = IOV("HOYckC"), .value = IOV("EgThAjBAjkim"), }, + { .name = IOV("JomkwGNMrIc"), .value = IOV("IoJJvmFYCXJtzCwHETIKCdccGXKfbOkDsPTsQPVTiRlZbxJgKTQqFIsqgWMb"), }, + { .name = IOV("VTrQEDORZeMMmo"), .value = IOV("ySPdvUWNpqWeOAElCtFRisDchokoQkZbFeeUljhCQrIhQxbbiIQeFuDDfsY"), }, + { .name = IOV("hjMbqi"), .value = IOV("fxgJiZSjrELFeKbSoVxcPkXgIylLC"), }, + { .name = IOV("hWCbMdkyE"), .value = IOV("S"), }, + { .name = IOV("NHhITmEMzIcIOFhRFNh"), .value = IOV("cgfFGdvoNazNkoyPIlGBvjDPZjdinSzkfhuailevnDbaMfoJPPsGpyprgof"), }, + { .name = IOV("HQ"), .value = IOV("HUzmyfOuekZKboIUkiSEYOBHuSiOjPwkuwIcfjYYgOFwjPnS"), }, + { .name = IOV("KypkFJlhkYIyvqrtuJOp"), .value = IOV("xtzdiBRonLMvQwcwIaoPfPTOOfbqyCJNsdCGTXGReYy"), }, + { .name = IOV("qRMPpsQJfzgwvBcKUdnA"), .value = IOV("WRKsafViyFHnVrgKbVPywXayHUTzOjlccnVMQPXMArtzuKRcFMccYVzgfPWKgDbdsdXMXs"), }, + { .name = IOV("AnZYoumesNLumMaBwPC"), .value = IOV("fCktKnbtUeprSnYOQgxbQilKLDgHOBPubnsG"), }, + { .name = IOV("wCIGX"), .value = IOV("hPRSuZOoKJZfCvmSWX"), }, + { .name = IOV("bJHkwKvoQQuMlKY"), .value = IOV("dawyRxLRSfC"), }, + { .name = IOV("XywIcLXUhAkqFI"), .value = IOV("yOFymGHGnqlfNoirifVpaPzuSKyvJsSzSWq"), }, + { .name = IOV("HUZEkpwpSTpzJuB"), .value = IOV("dsgQRBiIipvTsYbsHNKNYYSiVfgrpHCOboTjBwPxLyNprt"), }, + { .name = IOV("GBKUTa"), .value = IOV("qUSDNwqgpdiuZRfCyDAIDBOeytLssj"), }, + { .name = IOV("EObDNsooDsRTEjmZ"), .value = IOV("SqnDLoWYCafYUBlN"), }, + { .name = IOV("uQcbIsjNmRROvmXEJ"), .value = IOV("TiNBrrkLNYwvRvVhMFNmlaoqywdJAnpMIjyEWBrsCcDAfBUJAXixGQdlBQo"), }, + { .name = IOV("KWeDyNDkBgHeHKstD"), .value = IOV("biaagrUpKTmKaVSZAonHMmYNLtqeCqhmJUr"), }, + { .name = IOV("GqMwhAmZ"), .value = IOV("lcBAgEHaaoViEYxdtYVAyvWA"), }, + { .name = IOV("WNkNF"), .value = IOV("EMPbsUg"), }, + { .name = IOV("SPFijmMLbd"), .value = IOV("jOuVVdTMOWnNhqOdDSCuQRFraynFkaVEPARxjLhreJIuWkwE"), }, + { .name = IOV("Wshx"), .value = IOV("bRYjMQ"), }, + { .name = IOV("XdYPJ"), .value = IOV("eftLfZdqjblTNir"), }, + { .name = IOV("xskGXZZbeeqEVaGYHXXH"), .value = IOV("KpBSWyJOUDOzJbIezhMZokWpLWLxWAMROUeOVxcZhLPrPuMzHuMGTWEtD"), }, + { .name = IOV("oc"), .value = IOV("LFk"), }, + { .name = IOV("OeyeOoVHRgrgUuMN"), .value = IOV("YrpRZvrQxkzKibprkfFWvXfVkrOSigmgzXlxfwlBUKKZOLKqYmtVbCxnKG"), }, + { .name = IOV("uTTSNuSNy"), .value = IOV("bjPCigYDmaOkejxiejSDqbrVOSWQNosUyfDxi"), }, + { .name = IOV("MGqWvjlgxokjFd"), .value = IOV("LVPHwvLtrshIUotgAXbBLTNTSBtmUSYkgUAUxsSj"), }, + { .name = IOV("VdoZFjjvGT"), .value = IOV("GpEWdTLesTjDFXtMuRKbbdQNzyttoqnICFsfUHgetbaWqfnShMouIyKkQtibjmKLm"), }, + { .name = IOV("ENbtGPDrMYueqByd"), .value = IOV("UkdZjNnzCHjpIvLWsYBOOIdYJgxCMztMqxJowqLHklVgUNsruijmOLHBxdmNfWrjAGYYH"), }, + { .name = IOV("YFCUhEFkeTHYAVDl"), .value = IOV("fnBNburQzHKUnXGicaEkQYJMeeYYdtvmj"), }, + { .name = IOV("UCgVjgppdbMTZtmK"), .value = IOV("bUyNilBkGjHtzjGnjpLIDhhBBkjNgcGHpFdoXDABHDOoisrHLKGXPGpuE"), }, + { .name = IOV("GcRvoIYJSUldDktghjr"), .value = IOV("UpgKsRcWklQnxkAslyOHJTWnuXNCegUQKpCyogywtxpJTnAEfBTKtNojAIWKkfHipMHyucEXB"), }, + { .name = IOV("dctrwuNGeOxDFz"), .value = IOV("EoqtL"), }, + { .name = IOV("kJ"), .value = IOV("NsIHLIGT"), }, + { .name = IOV("mpxLvQwbmK"), .value = IOV("lxVVetpmkeMQYaAXYPoYhRrqBnSUMYqpQlVIUxkEecVFw"), }, + { .name = IOV("IxGdGNqqptlU"), .value = IOV("SWGEoIXrcecFsxPnluCpLaxnklNsKVGrouuNcpmJgwIxaRBRaNQGsgNxjONmfakelWeBAzO"), }, + { .name = IOV("z"), .value = IOV("QxcJnZ"), }, + { .name = IOV("WQgwtzCJHwbDs"), .value = IOV("TdrTZZSfJRQavrXrzO"), }, + { .name = IOV("pnoUzMDssckxqdAC"), .value = IOV("CoaTXByEdqLJp"), }, + { .name = IOV("OuebUaDwKpjt"), .value = IOV("ggWJeAAEqEYXuWC"), }, + { .name = IOV("HDsp"), .value = IOV("wPrKoKyvNJejMfawlXyjugAFwdPRbvZ"), }, + { .name = IOV("nfNPXqQlcRlfkyKN"), .value = IOV("UePsJdhgbSlmdkcCiFzRtmkoAycNWcyolTTdvopviVKqLentfealgQPzDcLhqlE"), }, + { .name = IOV("PjKVobdEVLLqCcTqE"), .value = IOV("ghXuzujFvuvPaQpeZkRMrqxk"), }, + { .name = IOV("NRgVZt"), .value = IOV("jtCeekXeVbpSiibSCbIsvSOX"), }, + { .name = IOV("C"), .value = IOV("HJNuvrlINrNScUpzuyRljhfaLUtpNDotKUiICC"), }, + { .name = IOV("j"), .value = IOV("CkhCVyLNhaeWpxqMLWwCHFXSuakJfAswaNKRdIhQoaEbDQmsoSkFgjXVagWMOAQxLsBoBMQjsAT"), }, + { .name = IOV("iqRfEwYjXYL"), .value = IOV("fFdAAFbNqrQWCGJRMJtcBeskNcKWtcP"), }, + { .name = IOV("nKqPh"), .value = IOV("zsdXZAzJQXVAkoKcdCuPMWLoJATHXJFfYMddtVmL"), }, + { .name = IOV("wgdw"), .value = IOV("LGEnARCCGbLbNhbJUEb"), }, + { .name = IOV("AbhLRFm"), .value = IOV("KsDVNzcfnmOQZQzQaEIpNOUIRHUTPRotHfdqjBbxdogJdtKJNjICf"), }, + { .name = IOV("jdMpofSBNWgLaFzn"), .value = IOV("dKDRVzbcEhIDzcWtTXtSFyifUnDrApZanPCgWgWeYlRLkOSht"), }, + { .name = IOV("uZnoEggVo"), .value = IOV("oZYRDKbWjYAwlPDpwdgEVMcFbfADOKJlldrXINfwAaKSdsRHnxAfRVEJyNuNx"), }, + { .name = IOV("UXStZ"), .value = IOV("WgiUZftHgcxTFScpUeewTrVTDpgKmKhtmMgrMHKfzHO"), }, + { .name = IOV("ZzDZoSIm"), .value = IOV("zwFqZtvGUEeuaUCpyGiqCeZsjIbbeTUGkvjSKCGi"), }, + { .name = IOV("gIFgUQDi"), .value = IOV("ZyVYPaWqGTLSsMrZiPLFtfCUhiVTsZNZYtJrIJYGCCfrvGShKdOwxbveZoOXFLvO"), }, + { .name = IOV("NzyHduTHgHfhY"), .value = IOV("PfVgwTHjuuOIWhAjRMJfRYggUCOdTlFFESyGXfjpsufj"), }, + { .name = IOV("DzxCpcCAEqnutpKAsg"), .value = IOV("BZnxUxwzFkxlUgKnBjRuXimuKJyUtsoj"), }, + { .name = IOV("vNuf"), .value = IOV("pBzzTkgIYyegzRYSnUgJVJxHuUcbPWGwlgoneYLpXJRQreaXWMJIvlHdqkhmQOCXOn"), }, + { .name = IOV("DasOVFMxrvhJC"), .value = IOV("EGdjjxDTuVPfvbvuMAYhdGSCEIS"), }, + { .name = IOV("JhrKlSpCZtA"), .value = IOV("ZxkYbDMmrFAZiQOHbYvgKagevSpHszbRJUBJpKZeaabaiPdnXitQXNvPkkTNqcahGlEA"), }, + { .name = IOV("exJlTLxqhVoBVYO"), .value = IOV("ugaxIuaMexQTeoFKcOKjQvBsfnmtTNdZcsjDRFQAWvPgnvImEltNkCpQLgDkhAXNHPNZjJkwm"), }, + { .name = IOV("CYNu"), .value = IOV("OgNCIazL"), }, + { .name = IOV("ggVmxtWD"), .value = IOV("TpFSutvC"), }, + { .name = IOV("aTKO"), .value = IOV("zPvxvNmDQIch"), }, + { .name = IOV("jsVsLnSEhFfyTprVbiA"), .value = IOV("UGVaWvVavrvwtLTidJPqTChCnAkcSsdVBCoVtLsiubXtztpaDLrch"), }, + { .name = IOV("ZW"), .value = IOV("ukVOJXywIgbtOYNlicXfbejHkfvfaLXKqLpXCErKcs"), }, + { .name = IOV("HxxZSq"), .value = IOV("FgrAQYNsEwNUrZGLdYowhNNhoqBSRfLqtfpoeNAKylpULSfVtmcEu"), }, + { .name = IOV("lLFAIoL"), .value = IOV("kbR"), }, + { .name = IOV("wf"), .value = IOV("CkeEZPpZUOpeBRMjEEiJIfttafWxzLgLuQLdzOqLztqWdhRZiHOFf"), }, + { .name = IOV("F"), .value = IOV("RZdwadAEtjTKYlhpORtxFPEgCiH"), }, + { .name = IOV("RnMEYxaBFL"), .value = IOV("SAVDnmfoEKpazdwFcoLQsCDUlpfIobBOtN"), }, + { .name = IOV("ImijnVro"), .value = IOV("Ihe"), }, + { .name = IOV("zFzrXDvtOsPsGF"), .value = IOV("MDMefwwUUXOAbsxoyGmHYPWYUHjm"), }, + { .name = IOV("vyJBwWzhG"), .value = IOV("MiQjnjyOArglhBVFGBGCLka"), }, + { .name = IOV("UdueRgIMratj"), .value = IOV("aYGgJgoBIMX"), }, + { .name = IOV("fShcpuxdTnE"), .value = IOV("JXz"), }, + { .name = IOV("DN"), .value = IOV("txhdvtgpriuETLXVkqIhaEGEBtvkuClLylwVsHTSDCNDtKXQZKirRIjajJnvJsFkFmmWxk"), }, + { .name = IOV("H"), .value = IOV("uxZmNxqiDsHyUOMwtpAlb"), }, + { .name = IOV("bGjJlITt"), .value = IOV("IblGPBgEbtZdXxtutHrrZrIBPiuoPnxUha"), }, + { .name = IOV("ljufYJXdmM"), .value = IOV("RleuyOXWJgVrgHgW"), }, + { .name = IOV("qfDUmtaPDTRDtHpyEt"), .value = IOV("pNkYwRLCCYvEcZDaVvU"), }, + { .name = IOV("rgKSpesCtclpYGwAOIq"), .value = IOV("QvdRDdNzXnkxCKbyvNvJvifpq"), }, + { .name = IOV("UoZoAn"), .value = IOV("cQOZkBtZDZddStaWEvXiJzweRMqWUIrYnxvnpuU"), }, + { .name = IOV("BNxOyzqIcBZfHCVygn"), .value = IOV("aDZJufOaFgcWGrs"), }, + { .name = IOV("BzKMskIAjQgAtRTQiKd"), .value = IOV("robgBQqFzvWISKjvjPRosJaxHLnxgfIVba"), }, + { .name = IOV("mMpJEBClCSPk"), .value = IOV("ZglOFlwWtBeUduVCEEiSoenuEZRZcxJgvNrYEvXbRJ"), }, + { .name = IOV("fIztBPqjzaHiW"), .value = IOV("JOPiKwhkOxeqtRoFatfizQVIYqjfsPBtunXGQLpWgGIrzB"), }, + { .name = IOV("J"), .value = IOV("NEcuiSaWyuASUjLTblCtAzKeLKpHVZBAtNQWIklHOUMiEgjdnONZVmoCdJSGvWlGi"), }, + { .name = IOV("IvoWIUlPiO"), .value = IOV("RQSAXfXKSQxKToYEXnegwcndKApJIShfMCfqkLzmOWhv"), }, + { .name = IOV("eJEETcO"), .value = IOV("TnJBaLSMZoLElpkCaMbhrTdqyPCizPLkve"), }, + { .name = IOV("pAoheZAjxmjyOtYGUg"), .value = IOV("eBUdHCpIfhnPjA"), }, + { .name = IOV("uNeFSTrB"), .value = IOV("RmefUxjlVBqjrfzGjWCahKggql"), }, + { .name = IOV("MFXcTAiH"), .value = IOV("YNBINbCljlDCDzGBdvVnYDOxpJOmdJfFtfwMvByUMdqGPSPhMCUmWwwuWUVuXnA"), }, + { .name = IOV("lGYgGlDgRUjEiroVrZ"), .value = IOV("vsjmnHFkIOdhfNewNPQbTohptBAuHIoFjBPAtdhejewpmheMOaRDvVZHuStwMxblsHGUWLaARQ"), }, + { .name = IOV("zrFqLAE"), .value = IOV("VYebPzJNBCeqtQdQBURDvoOr"), }, + { .name = IOV("wKNQEFOSEiVvqYY"), .value = IOV("TCWMtPIHxDzppRIGsxcKxIeJTVyjKWiZWvAHfD"), }, + { .name = IOV("aLEzOvdMBmiNPbw"), .value = IOV("pmaJGwvuGIwCAFdFoQNC"), }, + { .name = IOV("AysgNWHCJ"), .value = IOV("tBoDKbTBEQlEfQXQUUjydCxyXvgegcznJaanTUvoVFikUZycxhiTIiESknoQxOpmorw"), }, + { .name = IOV("HAJcvRL"), .value = IOV("UUmvQSdLcoxjkxGmHA"), }, + { .name = IOV("hCQ"), .value = IOV("qwJ"), }, + { .name = IOV("c"), .value = IOV("LFyvctGpXiorewVLtUQXTAyBsKVRRptQIbZK"), }, + { .name = IOV("WTOyOyqnjNYq"), .value = IOV("EFjXjTSPe"), }, + { .name = IOV("XE"), .value = IOV("sSawXbGzWdGdKIDKTbAKUySskNHwTOhpKAYHZDEBLRKUoJW"), }, + { .name = IOV("LMUdgjojgjCv"), .value = IOV("YCIuARdfnGGMSuwhWonmRhrTTtxzKgPQtjaPLixPVrD"), }, + { .name = IOV("YCOGEnOiwfbvesdO"), .value = IOV("ghjtwlVHZCJEpqQrCe"), }, + { .name = IOV("ihisC"), .value = IOV("jeqhODBQmVJoxhSYoaYLKSZmekFeqN"), }, + { .name = IOV("eyDqYL"), .value = IOV("VLFzdGasYcfHrRgsdIbecqZdFMaSwrcRjTiuIJHaBCUHqibxdkLBLXXJggBD"), }, + { .name = IOV("C"), .value = IOV("qQvOGWOQEiNSduAtotFEGhdBXfVVBYzcobUjAhTGeSVeFbILJzCyF"), }, + { .name = IOV("vPk"), .value = IOV("ydhbLVgSBURDLBQAMgwIYIgKpJuBKFkZsLHMVppMhzpfMMjrpeHlFFZZyM"), }, + { .name = IOV("noTzNMyPle"), .value = IOV("SEeYAIpzUTzVkHGShoUpCKGJGBOtiQBfyBVuhdaYcLNfwPQoRPxPRYDaShgIkHoufbTCF"), }, + { .name = IOV("eLNEEKvqfNbj"), .value = IOV("nXcJvNMVSnZOGYJrgWYSPw"), }, + { .name = IOV("idzWpJE"), .value = IOV("nNi"), }, + { .name = IOV("LLpQVHLbIrsSGmo"), .value = IOV("KCbIkUZIqldLllLgOEstkgbyZoNjnXocRcAzJnNcSJpQjKwlijKgNKnQCUQIE"), }, + { .name = IOV("qxgqNSjrgvrSvlZX"), .value = IOV("xFoifZzJSNDyMByacchwxsKLUIGkoGYMeYeGhlOttVaZdkNkpVr"), }, + { .name = IOV("pQ"), .value = IOV("JnxOFcGYEtVleWHgVqNTpbpjbRAFhiBJpLHEzSNXMHMGJNHihVFWcfudazhC"), }, + { .name = IOV("ScyfYh"), .value = IOV("ZwGVKlKzoUnOxdKJfdSrkaPJCImiAJAvQAFRAhDkmgVXUAjRLpOXuGbWcORRJvdKvrKZUQTrSaqZZc"), }, + { .name = IOV("bdBYNYavRDmXI"), .value = IOV("AfVDI"), }, + { .name = IOV("HshAciI"), .value = IOV("DyKbOuZwBRbSuPlqhheMXXVzadbcvDwQiqUsmZpVlNfSKdPucmhhDzHIwEoqNFVdge"), }, + { .name = IOV("yqvPugagbkR"), .value = IOV("dyeMhExsbWsOKjTXEpDioHPqmYSogWZEkqiulAtzKlioNmVd"), }, + { .name = IOV("qWKqsfGhOxDIUS"), .value = IOV("PyWJxBURcFpmy"), }, + { .name = IOV("HKHXMralA"), .value = IOV("iDpEoFmJMngdlRfbZH"), }, + { .name = IOV("WepOGxlijMF"), .value = IOV("yxvHIsJczJasZHtdGGRsgLtGOwSECm"), }, + { .name = IOV("MJYnrsoEYLhthQaQf"), .value = IOV("HgiMtnFOcnWRPLEEbcPzKgwIcsGWNWvBgCFzyEtejh"), }, + { .name = IOV("acctsbpnjPCg"), .value = IOV("PsCrnHCgbCiBbVGFJLvQmICspDNLHcFPuJdHrgjznxGHrFh"), }, + { .name = IOV("Yw"), .value = IOV("ZIZovKeidMPqFqbTSBBSQsOWWfPJoWAsJHsYRqSPFacrZBMWUcgPDDEQmdwmWlLGFr"), }, + { .name = IOV("dWORdQsOXbQ"), .value = IOV("HvBPVrRGXxXiJXSMzlgqyNJcFPNkyskXwuLKyeYCPMXzfidOzHszGwWgMnUZTpohRzMBKzRYUzrIhjMj"), }, + { .name = IOV("J"), .value = IOV("wQCfRlxxaLLJycdvTgWJEeiP"), }, + { .name = IOV("dUStITvcvuQpCqSm"), .value = IOV("drtcUYrGoxeWeRLJc"), }, + { .name = IOV("AVpElljSiCeVds"), .value = IOV("TSdMXJyutihUVoYZsxTKEvBarQJhNmZbYCKxxCdHprpaFb"), }, + { .name = IOV("CuFEpVYSysOA"), .value = IOV("fJepwEtaCxxUBPzUBBeeOMFQHtRONjTvMkSyukwdfoGEudkdqnUTgNzQdVlhUkZgHvMDq"), }, + { .name = IOV("wMbOp"), .value = IOV("fUlhsIgnaBYOcuMBFfWPHEDRmwRahciuDJPExktuzArdP"), }, + { .name = IOV("lmae"), .value = IOV("DgDuR"), }, + { .name = IOV("hRGzWjvkJrv"), .value = IOV("vlqsEqWbxLnXpvdRouoeqouVvAhWcGpFWafQLaKJgORZIV"), }, + { .name = IOV("nXscdlcmWiFnizMiF"), .value = IOV("hxainAPtQzzxqQdDZUUvkWPeaCDigrvvKFgpcwnXCExXplFTtcdHgMnJaVqOHuQNGTwSrdHWXEkjV"), }, + { .name = IOV("UCNX"), .value = IOV("NxcNcKXG"), }, + { .name = IOV("A"), .value = IOV("pmhnFXVPdigEbDFxTXtQzIGDYEPbNBcCVbRQqzQh"), }, + { .name = IOV("pG"), .value = IOV("pckNITfEZQaYJjxGDJOWTHWiWpBcy"), }, + { .name = IOV("pPlMyyjzqKdiDtIEKk"), .value = IOV("LkqiqkIAEVkraXlxRnbDwhtAWUxrTDnIOkLpPdGXqWlQVDGslnbIShKyauPMXppNWjHGJwwrOcWlnV"), }, + { .name = IOV("kiJfpzxuVrurfxRNcK"), .value = IOV("faqDCGcsyRBamWZJkv"), }, + { .name = IOV("PmvaogH"), .value = IOV("fFAOPvVaPwlIAEaLotNvU"), }, + { .name = IOV("KrNMTnTA"), .value = IOV("HIDonRNMcstkttGhZOjFjomJXUzEcNbzAafdZfUSTMlrQrOKHJyOBHNatFpb"), }, + { .name = IOV("AwDhlB"), .value = IOV("tRnIfzeGtybnZONYPRLQfpqXPPDNuPnACewsMzPNettEFXaLEuJEKFTvyFSmaNIiQWWUh"), }, + { .name = IOV("iDMHHyNCYGV"), .value = IOV("WzEbuHYmxohemBqEsypqbNhKLTyfWloEKQlSiudvmKf"), }, + { .name = IOV("X"), .value = IOV("oUVmPhavLTreNQQTWhsGfCAamSpDPOQNKEiJhHpnmjgRBzV"), }, + { .name = IOV("kOpsfUEUbOBqeFRxZu"), .value = IOV("eGibuGvysLjcKyXJInQyZxpOiQHAzMEWFLHCLpvzWYpcYGdqNrRuVhNFTQeB"), }, + { .name = IOV("WmIY"), .value = IOV("GxatmOZzsUPFtSkxuO"), }, + { .name = IOV("nfQQlbyptZMtdthkN"), .value = IOV("stzhMbtpspuLrWJqwnsAShepNBqlNJMpsChvhCQouJvCBaVdJbuWShGYRFTlzumMZSqhbXTdeK"), }, + { .name = IOV("JuGfoBh"), .value = IOV("dDMLcJnQVDpOFfSQzgDrLcuGRvEvzWFkAnWdNsbWn"), }, + { .name = IOV("bIaCraZTm"), .value = IOV("LDhdjbjkDAjhGkCWxFsaXBuTyiKZLsahGJSnLnAXSyHvBrWhdhQjNz"), }, + { .name = IOV("zUpAAxcS"), .value = IOV("YJcNnbtVUeZGzdiLcuFVWuzObVKclpegGqnk"), }, + { .name = IOV("CajzNmvASKQrC"), .value = IOV("ryTjZUemEkbgMvxsUskCPWhLMVSGKddunolUfTUvexx"), }, + { .name = IOV("lBoxjnduXwwUwibCyrG"), .value = IOV("BrlkqMfxdqpAgrwLSfUBguGpLSrkNbPBcQdzYllHaMQISmf"), }, + { .name = IOV("Ah"), .value = IOV("ybJROFkzVfljMcTiGXCdWnZmgjLCvBmAeilxaYXyvUznimPLaSWjl"), }, + { .name = IOV("rNouOIYlYzQkBwf"), .value = IOV("nNIyBPpfEtC"), }, + { .name = IOV("sYTMarmAY"), .value = IOV("ZtVdirrIfGRGotigYVXNrTlZKQySAwmAoikkdaNW"), }, + { .name = IOV("UFbKNPvgQNWzwCAD"), .value = IOV("bTiahvHz"), }, + { .name = IOV("gCCcHn"), .value = IOV("CiSgpULwaXrfkVGpJhaCoIpTTSlFKQmpsOBkhsUeNNUNpKYWtzKgqHvowTzRIPAWtjXplXUZmKFqc"), }, + { .name = IOV("IspeltNlrLGse"), .value = IOV("lflvmaQIcsFfPmstMKkLunUfYgcXugJhaFLtSDjphQIxyXMReIUkBoKpwoVcWo"), }, + { .name = IOV("vdPEcgoWrTgzZmL"), .value = IOV("eXdNisjsnGgMHCejxcTbAWnlNpMinjlNLs"), }, + { .name = IOV("ESPBjjOlby"), .value = IOV("ofmEIdXeEZqiNALRpZHNQwNQLMhTRsAkZSkqqJmDP"), }, + { .name = IOV("nxVRWUL"), .value = IOV("iupc"), }, + { .name = IOV("vLkAnGbjITsS"), .value = IOV("lyFJZReVIuXtRbieMVhDdcagVQqvXFPHGzpzhcPApAZcRImfCmlnQdoGLuhugjAQ"), }, + { .name = IOV("FueQoti"), .value = IOV("sIwPedxRRoRFsMHnNahhlAACkJfFrSlvIOzgOKgxLdvA"), }, + { .name = IOV("WhPLB"), .value = IOV("wwoMXQwRTQFlhBAiKIcVZcVNISSTUyODruCOfYaTlKxAvtBdjTmjPTJLGvHMyHthebtQSbBvdvPJCuyS"), }, + { .name = IOV("rhWdlYvWSSoXmIJ"), .value = IOV("nzCljpLmPzBbsaOgVPZdcFqXfQBbbphgueJlBmAIa"), }, + { .name = IOV("oTq"), .value = IOV("VnSqPyROJiKOdPxUhHOOxqEXQYhkopSfCifueOQlAujYpivYmn"), }, + { .name = IOV("mC"), .value = IOV("ZTTWnfDoKjmufpiXNKOMJbwwZRupNHYyCdGJjfpPAxeGXTjZIlGxoxlbWSIqtZMOshlDJxqgaAIeyAYU"), }, + { .name = IOV("qqLwDRsKZSWiiGDRgb"), .value = IOV("zdOkFEdT"), }, + { .name = IOV("EkRddioJAOOEkO"), .value = IOV("bzbLXJhbCBD"), }, + { .name = IOV("jOkhtCatLhpl"), .value = IOV("GtyjXjrlIEf"), }, + { .name = IOV("nzpL"), .value = IOV("VcFfBHXFYvzQJglEFSimqMfSjJ"), }, + { .name = IOV("k"), .value = IOV("ocIWxOWZcAjivyYXEEzJhwkSHzqzuazQkrczSNnDIPPrwalnUqqDGlaMYvkjqqBsFGYcanaQXLLHbka"), }, + { .name = IOV("XhuPZexO"), .value = IOV("oU"), }, + { .name = IOV("XurW"), .value = IOV("LrJsfLkwKprxKX"), }, + { .name = IOV("qhJppUer"), .value = IOV("NseSfeBTHwhgjZrpzvnpQiugdUKsFfArWcLAULtyonj"), }, + { .name = IOV("FD"), .value = IOV("mfXFXFlzAcMvVCXUsVbpupuCSqcLimdeJgDQkjLndBDFgaUhoayXxwycafqzf"), }, + { .name = IOV("rCbjJJ"), .value = IOV("IDjMnBAQHAQhttdGWbnXNuxNnrbrRVZuGNgRnhJhqIWWUIDPWbNdlsBlshr"), }, + { .name = IOV("MTccVQXKxtkS"), .value = IOV("RiEOHrIRyUayuwdJyQQoxaGQsyPkAfYNUblBIAcUrlxKGyeaUzXlDAHPSqowUPapVABolQlBzKESqHiZ"), }, + { .name = IOV("YrvzEiavrjDYJy"), .value = IOV("uyjJmOLxvJARLORzeXbbbziKnkgxSMbwEMGoQ"), }, + { .name = IOV("zRPol"), .value = IOV("b"), }, + { .name = IOV("HOUfjEALityUmE"), .value = IOV("LfKrQMkimRmhyOLfGVYgFXynYuxYYlvxFkVRobyWRrAYuvUyIYjGowASdzkg"), }, + { .name = IOV("aJYonVYGHT"), .value = IOV("RNvkKFW"), }, + { .name = IOV("dimEtsStEVcEbQD"), .value = IOV("BsDuDJbJvduqcWBAwMAPbMkbEREhPpu"), }, + { .name = IOV("leUoMiqdeVorqJ"), .value = IOV("RAHppplpOFcUTumnPcWKFLBdEeHXCvGSRedyvBsZORSOZK"), }, + { .name = IOV("qNRjJUC"), .value = IOV("DbDciKuxVhHlsNCOiBGURPeLcJdjFzDnwbNIenatyqGKQtT"), }, + { .name = IOV("ddORDj"), .value = IOV("skoPpRAvWKzgWLcznWnUpCaWXRFbmgaeCZfSAqeSiIBHrqNy"), }, + { .name = IOV("x"), .value = IOV("Wig"), }, + { .name = IOV("OYCqhnbMkOcKuT"), .value = IOV("RGfeMQTyiBBfnxuYTATZekxsxfuBaHbLZNliDbzwpNdIfXQnhnSTwepSZLMyDlrAhJUI"), }, + { .name = IOV("VRyQG"), .value = IOV("WFvrIsNLtExOVlXcYvfALoAANGrHvpbaCGj"), }, + { .name = IOV("mApGDgcf"), .value = IOV("VIJWujJbUwodWhjttjMnoSRKKHOkwDeYhEskxowUBxOvnAxFfnGPYtwEroXkFIIHTbBHWWJiGbdRJ"), }, + { .name = IOV("FfGuOhkmQK"), .value = IOV("gKMczcBxwmrYOthmmwjJwskPCKIoAGqXKYyJHbWuhL"), }, + { .name = IOV("jGrDN"), .value = IOV("XeNugcEXsSD"), }, + { .name = IOV("YfNgtJtwObbfYijE"), .value = IOV("QnrByyRuVnwUSJXCxDzJOfwiqJulniYKroiNtOSKDQQyztDctzH"), }, + { .name = IOV("mMIPBLttAF"), .value = IOV("UWPKnyDnvQHDUmkYtWtFuOvHSnbHhgDaVqFsVNNvGRlagFVBhMp"), }, + { .name = IOV("KzdHpdPsfZG"), .value = IOV("NMvMAYwx"), }, + { .name = IOV("WzTIftsqD"), .value = IOV("ZJrMnISDWQpGdoQTInkBgyoCYJCxISLbmsdzwSVXQtUyyKAtHNnFTssPU"), }, + { .name = IOV("rCW"), .value = IOV("PHFNZkZgBcxS"), }, + { .name = IOV("VxpxvWimMQbJwoQ"), .value = IOV("RMEFRyyvlEMwOhcHCvTAmKlwtxKrMURlrGNzdLjvUUhelLOEMjpJreOxqkpndDUisft"), }, + { .name = IOV("yfRCgi"), .value = IOV("xJOXNrqVpLiiNPLVSxM"), }, + { .name = IOV("bWjgkvRkMmOW"), .value = IOV("dZIlfMZqiIMpAjLPeiENTMBzktEjrarpawuOLIcoKgHDUeIbxH"), }, + { .name = IOV("dKVQwxb"), .value = IOV("UTHiEGafof"), }, + { .name = IOV("gzlF"), .value = IOV("PmiNTRhbOkIuovBhPT"), }, + { .name = IOV("fXSEhRF"), .value = IOV("BzKPlegrAlWVtLseXlElbtktJvSUzoYGGYeKdwkzGjgpqgOuwKMkzxElZlNqUpNvhFqZ"), }, + { .name = IOV("izQPTu"), .value = IOV("iZRmMODeJqgazEQrujQGFuThXXnUdlKtZyBVxPezFwTiwOXEDctefjhNkJRTQ"), }, + { .name = IOV("Y"), .value = IOV("vLvVGwnTwYErfwifryJEouJXLzzdKTOlrx"), }, + { .name = IOV("lPswTZszUFVSvaIokmSy"), .value = IOV("iuqsgqADBRqgAqIKtqyuBSMJNkQkIKEzjXFJzgMrToGTlENxoeldq"), }, + { .name = IOV("ecGgwhbA"), .value = IOV("ZWPKWnDMotACaLZpaQkYRpdBjmGtnoeqYCCxCBlhJixGnMxqcfjWomRfGh"), }, + { .name = IOV("gg"), .value = IOV("dkhYtGBFUxGZBGkpKVPWcAHYGUGYMfENfXAJL"), }, + { .name = IOV("bWZEQLJJgYIHHBgsmITa"), .value = IOV("dKARLsQvTOqdCFiqUZHiqZomJzMTWKYrxryxUUYzCjmCGfjeTyfuttcRrzOMViuZJzxKcagbXvPLRrfd"), }, + { .name = IOV("BXECwtbCQS"), .value = IOV("lBpDyfZXUwt"), }, + { .name = IOV("rSXSz"), .value = IOV("or"), }, + { .name = IOV("mmSR"), .value = IOV("EJZnGXRvuU"), }, + { .name = IOV("oNZXmbfCtBm"), .value = IOV("x"), }, + { .name = IOV("AAyh"), .value = IOV("GmZoqSXzOgRErlQURTiJQSzlWPAAoVhqyoSyxOQzWJdjdvypYXbTZyshyRWMq"), }, + { .name = IOV("eNDTickm"), .value = IOV("VXueNsUAMukeJSAQiQbXGwZsRSuFFrWQdeatlrNXAKZddsaZUmKjEJmUpDijfNsFs"), }, + { .name = IOV("Caz"), .value = IOV("xgUQkEkHsBZvYiXSEieZMPL"), }, + { .name = IOV("IiY"), .value = IOV("hBxNHnwqHLmJmOgOVrSuWylFHrKlejkJquCwxCmmzYaeZNpfeLxqDVUWoVhCOmMbDUDqX"), }, + { .name = IOV("M"), .value = IOV("ZuldxUKrnzrSFhjnNziUyRxppwPMhdUceXxzkHiCAvzSjFgXdvAXOakWWXnNaIzqClJqwUSkqtpaefE"), }, + { .name = IOV("gDEwWnovjDpkknNTpGP"), .value = IOV("UjKHttXSeUCLmENqbaHeJJQrQokIHTKtUOiMkTkzIjqBxbxwBrO"), }, + { .name = IOV("wAgJMmR"), .value = IOV("JPIfduFSvEtoEgWZnzjmnRszWev"), }, + { .name = IOV("VsLRFTUneXT"), .value = IOV("VBFbRfDbowzdZQuxQSOoheQdqBtsnDiJLGCnlLqmnrWmpmENAZnomaflOFxj"), }, + { .name = IOV("NHJykeCWLzds"), .value = IOV("JaczWoxXeclQNZaldwgVtxQJkTvUKUVTEqgJyCxgmhXZf"), }, + { .name = IOV("HQmQH"), .value = IOV("khGAoQzXBjhoAywHu"), }, + { .name = IOV("lLAjCMHd"), .value = IOV("eJspyxqXQehCwOxorjPYppbBsMedtcWmPokrIXIQAqjRBGc"), }, + { .name = IOV("BhkNOYFEijbVzB"), .value = IOV("PIeNAhw"), }, + { .name = IOV("thpnVdhfnotL"), .value = IOV("ZcRisLjVQHXUJYWCWgdpcTtbBopAhiCPRidAhGaDZtTFhMLUbecSPduUclKl"), }, + { .name = IOV("vGXbbBqWQJHHARHdWZqN"), .value = IOV("yHjKyYIkwvOJqoVgvAZgEXPldxLxJJg"), }, + { .name = IOV("iEaan"), .value = IOV("qGvqWG"), }, + { .name = IOV("oYxVcHVFDsh"), .value = IOV("ywsvARKdFJhrytTroTD"), }, + { .name = IOV("S"), .value = IOV("rhiwEGphmyyvEMZcVoZFHrMSntSHLyySkuvorHmAmAibSMNPBpapNMKPbNJMaZVtvrBzqJMK"), }, + { .name = IOV("WVsiVpu"), .value = IOV("bMxwtuDLgrDbZjDiqLjPjbXPDQJRaW"), }, + { .name = IOV("oaylUramVTrJFHsbgK"), .value = IOV("ALfBqEjqVvdYvORHqZGHEDrKActLJeZonAUjoLQFrbULMyuyhuXwBYzMIPGJtqNDdjqBGkXLyJBEOvjU"), }, + { .name = IOV("KVQYZgcaTRCgOIofEIA"), .value = IOV("qdah"), }, + { .name = IOV("CGR"), .value = IOV("mGUNbahONjsuZDBvgPnpjWOmiFNAMepjBQPowKRxAVrTCYyxpiIngGneihqyAewwKgocnG"), }, + { .name = IOV("cNFRLwtuxdasQkFg"), .value = IOV("EEdbCJHnCDMHkOfczOiwuCUOgMdNrRUJhlkdhYUwsgAfrlZcsvqIahtt"), }, + { .name = IOV("QWzmUc"), .value = IOV("FKXHlTzYKWBUsQnEsnjJAKSiZbeMdKadGtJMKNdvkKnZcp"), }, + { .name = IOV("pJDE"), .value = IOV("RGoQDPKWWRYPMIKZwgkbVobpfb"), }, + { .name = IOV("zwzERjDXdQvtyigR"), .value = IOV("uHKKUjcewGPvmqEwqZfNBna"), }, + { .name = IOV("yrLKx"), .value = IOV("ALmJeaADGWKYpIznTFyXpVQCvZ"), }, + { .name = IOV("eGKeEVnqekC"), .value = IOV("HZtHnwsXpkidkwrKRJWfSyDXcGbmlsnUmmHrTkDIlGpJhewEDd"), }, + { .name = IOV("CamM"), .value = IOV("USxhuKBkUpOkJYUTObSfCPoAATohj"), }, + { .name = IOV("yvkqRopCZvAByld"), .value = IOV("UyZrOcEOokSVfBwVmtpSWBtMkfefPUl"), }, + { .name = IOV("VSFsNEJteglYxzrF"), .value = IOV("MyusLITOgivANCLEiPkJiOqIlRLjmljsK"), }, + { .name = IOV("GXsrAjXZU"), .value = IOV("SeJTjGOotLxzgNfHpCzxDfDdPMRaKmtzbkLFzckKzdxPBWDOBEtRHfOkVlr"), }, + { .name = IOV("pZtG"), .value = IOV("oEEhQHvMHjhYzQMWfLqJdmPlrLUSjtewKRnXBjJZX"), }, + { .name = IOV("wVZMcNIFOCFDcl"), .value = IOV("zsWMQRFRTYZMUAIkVpKwNKAxBwQizUHQbihKlycIQHraoVTyEaTGufoKFBybHiuKLTWJqGLmtMpno"), }, + { .name = IOV("CX"), .value = IOV("tD"), }, + { .name = IOV("kpe"), .value = IOV("sWPJAuGDLDylkGCRtxBUDOIWwbgRLjJzsakcPlbmJIKDkKkcyoWstOQxECMYeUkMPUihwhAEWVxOYMrt"), }, + { .name = IOV("xsSCAXNjA"), .value = IOV("CtGwTOKjIwvYOKAHrcGTWAopIFOKSXombeiqKYVMnsXoxUwSiETKzEeyAXwICDUylveikjNiY"), }, + { .name = IOV("mnNaSiAVwP"), .value = IOV("pCEwwyCNledjTrdhmLKdKlQujwtjUSwhUvTXXawLAqYGTUcAXYCebkmtURewNEgkgnECavA"), }, + { .name = IOV("GJnFXod"), .value = IOV("gePwRHwPjdFshCyiSrFATJaeyWUGDZiWOyLdTWtCLhRZrVIeMnxcNHbfIXKMGxGhziMLOmFOOx"), }, + { .name = IOV("PldEFzt"), .value = IOV("qHGZTnydwRocoQwLqCjUqutPEXDrKQJYKAYtRccRvwbycYMaPtJVepbXW"), }, + { .name = IOV("VizNTZdQOhLffZ"), .value = IOV("TZCXsnWjAzaMBisHRP"), }, + { .name = IOV("CSWSNRpcK"), .value = IOV("EbBYJIVGeOhBKnrPktJpUMjMXvjtrupXPWGcARaAQrKDbonIFDnkfQVzyOIciV"), }, + { .name = IOV("aZakJQgY"), .value = IOV("PguUaypwgSnzOeDBxCrLbFJUdiaEtSGuZPLEYhLQImsWXUtJSAuVHVHORMbSfPlbeCYB"), }, + { .name = IOV("HnP"), .value = IOV("rtlcnehnmNiohHZOcqzvPEsEFmwhUDnZsnETLVcMSgLgYOUhMSzKsnRdHdiTzRfyYrJjHcBmd"), }, + { .name = IOV("eoNruyGMsXqBqtZk"), .value = IOV("TJAKRHqHMudabHFbtvtOqVPQdeofHdSsLYkSlPtKSkbbHRoXyHkUqnCFzQTJij"), }, + { .name = IOV("lXjE"), .value = IOV("nxbVsLxpYBtdahTGmhDiYKYhoSUgFtyUMNlrhoVrQmEiYmCY"), }, + { .name = IOV("owJusmWOGIran"), .value = IOV("GKWfsibDhCRjALTZUvZPqWwNdoKVQaNpOCcaHXBoNnbpPAMMfWRFAGQDEdqhNbTHMC"), }, + { .name = IOV("ZxvJGdMF"), .value = IOV("wLuhhDFSEh"), }, + { .name = IOV("lnTGehkmmlxtUJq"), .value = IOV("TP"), }, + { .name = IOV("JmAdmaCxxipfSHKhaM"), .value = IOV("QyccmPegAebmgJX"), }, + { .name = IOV("wyoxUTbEmEPMe"), .value = IOV("epCYUufmNSjfAKuzhpkiBRVyzrLplKaURrX"), }, + { .name = IOV("nxWDUlYkQGbtgAwOUT"), .value = IOV("aabsYzSjLabPgqldegwUodInrWShdSNmbcdZPKtOPJWQZUnCnRVXIWIlWqTXQXWYYdc"), }, + { .name = IOV("XzgoDY"), .value = IOV("BhFjHtIxniNVCMpLijhNyrrBuTaajtoBIwbVqtspxCVRYDePHtBEJKlNQjFjGknWP"), }, + { .name = IOV("r"), .value = IOV("uFcTzoRplEDOvRoAqNNidDtlRiKSwBBjXJCUpkbVixLfcVCwKeglgaeCaLjjxsCtxoKctUnZIlR"), }, + { .name = IOV("dyRTfLeE"), .value = IOV("OLGmUjRUSNxpnLLsXTHwimJgkHTrCfByWJpNhwadYpovPwrDK"), }, + { .name = IOV("wkFVMJdgcoxMbyWa"), .value = IOV("iRgsfHwfmUuMGVnqnnVYCksMUGRxRLrrKpREPE"), }, + { .name = IOV("zMncV"), .value = IOV("XrQmrSRRDyhGYkRkvGAFqzfXQJwDEIPmapVwsXTksNkkYaJLcXmznUZPOANLuDvkHBgm"), }, + { .name = IOV("HcmuaxRHBgVUqPHsVia"), .value = IOV("KDOdaUSxCSdGxfTuoWtAz"), }, + { .name = IOV("tTVorWDHrCOIxwaccxs"), .value = IOV("AuOrbEnBILGNQUxsCjJavVzYxOoFf"), }, + { .name = IOV("RGutGk"), .value = IOV("jPBSVzEZkFEInGwhCxlndmtfANkOYqcwZZL"), }, + { .name = IOV("VcjpesOHBUHW"), .value = IOV("UYHUSSArUVvdfwSWZdKnk"), }, + { .name = IOV("AQUSJIvth"), .value = IOV("EESdBQyuXxCOSVRDUBvKDmrCjntPljQdSDFNkUuuuWgp"), }, + { .name = IOV("cDUhhZFOxxEtiTJaThHH"), .value = IOV("GygDqxatidEkNOXVEXlSdBIHlibROXaCQADyrBedKsmzkyPUt"), }, + { .name = IOV("G"), .value = IOV("OqWhIKCLngFChmycWmdCzRCMdgodbUOsFzd"), }, + { .name = IOV("mWFrmsQgVZtD"), .value = IOV("NjOERflYsoxzuArGLBPfSIJYOntjolDQZGREzoyvrOZUY"), }, + { .name = IOV("BBVPAQMK"), .value = IOV("MntarEziVXMTWBmEsxDGWGoqIfJGkqPzmASMWIfidzNEJaVwoAhmzYzgedvNVywPqQpmOm"), }, + { .name = IOV("OZATuGpTkYjM"), .value = IOV("VZIgesH"), }, + { .name = IOV("c"), .value = IOV("ZjvCYRkkgGjAKgBfvOTRhXuewEJOlvvCGjrsCrwtYqvdiHVcTmYJIPjAYLITdiyaLGwfGHgfMUTiIF"), }, + { .name = IOV("cpDkWhSmWTCBHVNj"), .value = IOV("BjgnIcdlFBCyLpSiIkDVOWkusdfILYOtueIUPsZbHMpPVSUulWvvUjAKgwPRXLqJXYCzj"), }, + { .name = IOV("KRxhqmmwJNrJMO"), .value = IOV("ZoRlQMUCldYdcTVaeotxyyWbLYawJctFFoPIwHvbRbdHrEycWxYVcwSMFo"), }, + { .name = IOV("vipcyjTfyoyUdlXq"), .value = IOV("mAniVgJZgYDzBjwDPMJYizbjYUVqxpXT"), }, + { .name = IOV("kb"), .value = IOV("ZpXMDnMuRvEMALFVGWEHDc"), }, + { .name = IOV("IrW"), .value = IOV("BbjFSYOxBSOIBOfpugIyLapvZwIiOIyHklPCCSznSfGJWDlMeFZtMWNBZomCIeRapWCzHYDitvDYenF"), }, + { .name = IOV("K"), .value = IOV("HqkruZTmusuFqyJZYVMUXmGtwwvLa"), }, + { .name = IOV("rElnLzwk"), .value = IOV("jESxDCtgzjhMYWxSgdXnj"), }, + { .name = IOV("BMNLkcUKuHeINJRu"), .value = IOV("aBOfHOazNCIPbWBmjXKdkadjiqmoLTkYupYwXkPJoVMiLJoFVIJApSwso"), }, + { .name = IOV("h"), .value = IOV("VjuSpkquQwqqeHzgwdTgRGJTdLmUBxRimZezDqCiOwjJuJLIFHKxaANKoAKcYktLCe"), }, + { .name = IOV("LYZWfAkMuTcWbkFzsZh"), .value = IOV("zqeMAhGTgUfZCEzhxSpaIVVZREEuwwGQBPqZINhuDnbLhLjQqESaFPwdMPJjuwPZ"), }, + { .name = IOV("mvrwZtzKNzkIBAFEgn"), .value = IOV("HyCQwgaCbeyQPvbiLNTyGoOVpkyiyWxTTkAYofyBIWbdAyjWdr"), }, + { .name = IOV("fdkmIiapYcNmMGau"), .value = IOV("LeOqyqRdqRHPtuIMCoESZoVCOXwMsXvmRZRVnRcKbdTwXmEHimlOlPJy"), }, + { .name = IOV("XpfpHR"), .value = IOV("kAZuizfzQmWHRh"), }, + { .name = IOV("JBjnuWCRt"), .value = IOV("nvAyUhTXAiiZpnOmtJEmraUyeWvBgaiZdHCPqpnhKSOAJb"), }, + { .name = IOV("iOjQ"), .value = IOV("roBunISAlbKSwiDzDdmlAdVsfKVjvXZSjsATedybncIlQQcgpfpPyaMWNAtytaGwtMKLoXgIyD"), }, + { .name = IOV("lr"), .value = IOV("zTMW"), }, + { .name = IOV("zPtO"), .value = IOV("piRHYbBswKWcEqHLJzJFkthcPLLBPYdhHPpddyelkCgh"), }, + { .name = IOV("xxYhrhdHaRbeewQSf"), .value = IOV("VavmMrqqfViXqpeObIY"), }, + { .name = IOV("buacDBuuDVGLNPNUu"), .value = IOV("lUzSqzINQtNMXgeUfnoZUQJiRjvHLGWwJGLVylXauO"), }, + { .name = IOV("ICG"), .value = IOV("uBDanrxWJGdRRPCLhgrQBgljSkkhGgakjNjXrCkpkBE"), }, + { .name = IOV("DBhihmLNOLEHZQuw"), .value = IOV("gVCwQBDkmJgoOUqXnrlLDEWF"), }, + { .name = IOV("cwsOxFEYY"), .value = IOV("jssMsaiCzsSxqLblYMXDCFNYxWJdpnaWiEQCGFpIvwFWMdNCsBNOji"), }, + { .name = IOV("qmGFstulyCWr"), .value = IOV("JngxLXUunywDMItLmnZRBfIodOCHJGdNRFMANMoUXNNeDQxMIqSAQLhLfZhxMjOhpKu"), }, + { .name = IOV("YiEYejcP"), .value = IOV("NYiXnRkEp"), }, + { .name = IOV("bJwlzL"), .value = IOV("DXZGYHMXtKiqhCSGqpLx"), }, + { .name = IOV("nzsyMgaxPWes"), .value = IOV("MafUerbYcIhmrbpexjbMTmFMIeWHpspeUpPePJGfQWujNoZSxJgtwzAJaH"), }, + { .name = IOV("TcYsCZ"), .value = IOV("nZnywKudaQZ"), }, + { .name = IOV("PaLDCBjJQztWr"), .value = IOV("MGnTcyGfYuruAkSyVqoIQRTxItshmKOLgBBqdUTwEcKtgjbiFZ"), }, + { .name = IOV("wWPbZwmOpvtsJ"), .value = IOV("AkyfGtSLfVazzVNKJDrnQNiLuoKepRbwubfvQOvMLOUOBXuwlDTrPMkPvBvGifXBmozvxFbXxHku"), }, + { .name = IOV("wPpvkJsnguta"), .value = IOV("KGROfwttxGAitWtzlGTmyuNsxHZLbDLIwuAVjXhroTLaWrSEknAZhoQDqDTO"), }, + { .name = IOV("hsv"), .value = IOV("HjGeNESjmqSoMtmEqsCIKnoSBXnmmKWkWtJaLBguftcKVdYtQPYuMJdsxIaPcUpboSRoGOgaasw"), }, + { .name = IOV("oUUPIvhLNMUoikjBXF"), .value = IOV("LhVdATSXtLUSVPUEQcLWqOu"), }, + { .name = IOV("AoMOajrKPuGGC"), .value = IOV("EtpSd"), }, + { .name = IOV("NIVvvDlaadmsMKahQxN"), .value = IOV("SWmgqkqBMXTAmtkEhPbJMNZtLElNbXSZRKflj"), }, + { .name = IOV("SndYAGclI"), .value = IOV("FtNttJvL"), }, + { .name = IOV("ZvHWCDOXhwuOuej"), .value = IOV("EUsCziBAWNsxMRLZoSmvCyJNabEcLNEnSzHBGjgsnMPRcsdhZTppHBLJBjqa"), }, + { .name = IOV("JiXGLgeJBUDxEOJLxbr"), .value = IOV("F"), }, + { .name = IOV("VK"), .value = IOV("METfoykwqAerpnQUNscgHjrUVDcTRJVncOQbsYuBQ"), }, + { .name = IOV("jTkZmUFAzOuVb"), .value = IOV("qLxnMIJnOkuFGkyKPViWAtkKENgimj"), }, + { .name = IOV("IlGQMCReEBsalhLvpXK"), .value = IOV("KiMXSOdgIMoVqypcOivrYnJJUdfgzijtgpYpcIeOBoWEYPnjyZrBaHcJYEeTPrpnlvuXnkXolvjhfD"), }, + { .name = IOV("fd"), .value = IOV("ZWWnWjpVabWMlpjCHyUEsPmphgMvNINJNvlqVqoAjlB"), }, + { .name = IOV("QOLTRzsoFRfZwRQJIu"), .value = IOV("viVmCuprfQOtaODYxbjozCqatUiKXTDWfTLHjbWlUMFqkrgNltaDdgdeJIplyinthomJXpgivWEPOo"), }, + { .name = IOV("XqsjdmaIgzpmpmmfdn"), .value = IOV("lVkZUBoCPnNJqzurDADpIdmkKMsKdcjKLQVVFpTMkq"), }, + { .name = IOV("eKHmeLdzzbQKvr"), .value = IOV("dNwhIumHXuPjRHhBrEYfwDHDytxmWYeuYqaFJpLsmgSAuDpfXpVjLkGwSaRPYhoAewcFYxRLbIDDI"), }, + { .name = IOV("proc"), .value = IOV("IVtRNdeSGZnBMydBEwnYDmtGcHPSxrDzKvFxW"), }, + { .name = IOV("ISVYr"), .value = IOV("XnElflmxdPZGJpQiatCsvOjjBQIhhfbhijmnoMoJmbIqekid"), }, + { .name = IOV("Nv"), .value = IOV("BtDQQNLeRRNVVztGNlryCnCoP"), }, + { .name = IOV("KPkGdDwndR"), .value = IOV("fRi"), }, + { .name = IOV("dXymWc"), .value = IOV("toMa"), }, + { .name = IOV("VSwautIEIXjGM"), .value = IOV("vITCkPaLv"), }, + { .name = IOV("sagVHsip"), .value = IOV("WzmianlJ"), }, + { .name = IOV("YlLGplKuUu"), .value = IOV("hMBzWZYyvARfIkyUfEUTpCuBBkDOWKmhibTnBWclaRyhYNwTDBmoqdpf"), }, + { .name = IOV("PGdlAKIovHLUEPmjo"), .value = IOV("XLNpDRFqMAEugwMEgbOwkdAP"), }, + { .name = IOV("UhklvnXFvrerYtDrP"), .value = IOV("wDzDfzYvARyQEMPaLLwAGfwrnPzeOWSnrHK"), }, + { .name = IOV("mMlSqbpIvJE"), .value = IOV("jvkgAUgYRerlkdLPYRahauAVUzOQBKoSwCMQJjXfEITzbRJWaslNcAPRZYC"), }, + { .name = IOV("CDwZAyAAnJUMZKHdv"), .value = IOV("UkjkhiuvOOfcFSvuIxqLeUSOSctrHsAiFATEIhZXQerAoglsdvweRUsVZBMXErdH"), }, + { .name = IOV("bTrMTonFnMmViFVLCpvY"), .value = IOV("FwXvNUpTyWcpocTlZhLYEQRMSoYbLRrRGYl"), }, + { .name = IOV("PxnkSJ"), .value = IOV("DDKmUAVoRsTeNOIOhzLLJqfuGuBHGrMfRUsBLvrvipoIISetLVVAVnPudFJFFUY"), }, + { .name = IOV("BAz"), .value = IOV("AKlPJdvINNUrJjLtBqEdrdTtDkiOlxTYmFRLuyZkPqjqqPANMOhGeEhQzJWhhjxLIDezdDXWOYJRarH"), }, + { .name = IOV("jyhLMMUwNBlFOLvl"), .value = IOV("oGxdLjrCglMSQMghKGcKQvvQiYVMvKRksEXUHESv"), }, + { .name = IOV("NOAWcWpdUeLUz"), .value = IOV("grVxRXfqghoVktaaDgNLFxMiNnuJFuUxzlnCfgtzCkArDg"), }, + { .name = IOV("xCIezyOoHJ"), .value = IOV("RRKdqFFmojBQS"), }, + { .name = IOV("O"), .value = IOV("azDhwnXBrSwLdnGndHtbXlLBKhIPMWMgiaNylvFNrVlVmMnaTfSqACQucanKmJwMiEZMyp"), }, + { .name = IOV("SVnXqZuqZHe"), .value = IOV("RWaPifeZsDWNqqJwKRqwidnXruATXRXhxlqdeLJcuanXU"), }, + { .name = IOV("dYGVvrZTVTUSsqD"), .value = IOV("LqwvaWIzxNnVffBwIayNnIHJeSnQnXLSIibmIzgXSetKfLgulcZFnZcbegToofY"), }, + { .name = IOV("p"), .value = IOV("mNGtkISiTWwEWpseB"), }, + { .name = IOV("zoKJc"), .value = IOV("CtutRZ"), }, + { .name = IOV("KJARgLQLqkAPf"), .value = IOV("uqWOpIPsVGUBmJ"), }, + { .name = IOV("uUvbS"), .value = IOV("YSZhvBehXraHgXpOgyXdhAklqSmMLpUmBBiPPJNzDDzkEVVYScaAeWtDgkJFDRQhAqhhXfg"), }, + { .name = IOV("mUllQNoFrbYnlgYeF"), .value = IOV("FSPRKVbTCyjFgOwJkWSXDKugMhxCdRSTvZKFTUhGycFpGJQrObgUFMfqweBCwnhfOvKOhUc"), }, + { .name = IOV("FkKWNBsiqIKPfpx"), .value = IOV("AxrHzHpKnWxHeNuVQVyVgOoOKQfdFSrCVWBZNtAoOhjHDKKbKJRMojtIdSUJbrZCMptcyRsKzVQs"), }, + { .name = IOV("UUvsIOyLxO"), .value = IOV("DTWCpAmRDEucYwaWHYsGvCRhvxUtEFsqBhNDQjAy"), }, + { .name = IOV("WZv"), .value = IOV("kKpEChnbXgB"), }, + { .name = IOV("BITelbqbXWOEoC"), .value = IOV("HCKwfuUmUUoRcdRUPFwzCBUDxyRVTJTmyCdYxtHILiUYTxwUkijpRdx"), }, + { .name = IOV("Rtx"), .value = IOV("UeXUzUAvyMKLbYNVfgNjOJparGVtIRCboIQSN"), }, + { .name = IOV("NMQWjtvBuxlkvPJoRGyw"), .value = IOV("BRhOzGAHuUMIEfforqKySNaMOPrhWjqsSNVRdeRFoLUWISpfmumOfj"), }, + { .name = IOV("lhFVq"), .value = IOV("OQOwEUVrLpGBGSsKxohQTBqeEPzpuUuu"), }, + { .name = IOV("hZlDbxVXqOqUakPAPfaf"), .value = IOV("ejlbmMuOZKcPpptYLmCQuOgGZSmAcrYLZNvbnBfVOrpcsCPu"), }, + { .name = IOV("j"), .value = IOV("knDMrbLSRFqtstcGtpNjbHPyYsnYIGFmsjOFhjXHVRvCw"), }, + { .name = IOV("DEWZxpPgKiBlgGGyhb"), .value = IOV("CFCjjCXCUemZXLEuEvRGcMJIsWRYeBh"), }, + { .name = IOV("SoJdsNnzVg"), .value = IOV("YaElSsDtwMDeTtfFormCcgLaWnolicfQCPmZAiJNlsECgCEpzpGsEAJWpXNjV"), }, + { .name = IOV("KvHnnfWLOL"), .value = IOV("LeBwGwzBinrkVXRYkpOabydrZutzPbpTaeccXsHusXHQL"), }, + { .name = IOV("Qbvbi"), .value = IOV("oxlvGPchBGrngsjqltmrORJoidacmDLhUbZSuGQJZmBxiTqgLQKH"), }, + { .name = IOV("GdfgSVzB"), .value = IOV("aFsYamsONjFPHRgRzKGtlqYg"), }, + { .name = IOV("mzYh"), .value = IOV("TJxwUOxyKouyjLEmDRddGPCAmKcqGSFEQVRYdXGhUJNbzPziKUO"), }, + { .name = IOV("xzRnnycytbxykmWHI"), .value = IOV("ZxHcKhnMgMvFfKOzAsfmDpANePuXaefZXSlcpycpAqHZTcU"), }, + { .name = IOV("ARNSdsVWISeZBAEgauGH"), .value = IOV("UqjXPJDoAKJvIJbyjGQvtnKEbZdwzUMAUCtYzYhfEFFMKJgysYXTBoGlLwGGTtJEcDvbWHQyhGtdju"), }, + { .name = IOV("PVWGiivxOa"), .value = IOV("yHCVDBkMYTYGIEcxtNydMuzFPGFHtzPOAsUhhEGGwMYDHeCUDaBWJxXouZyZcHRiRimMdaWnNpqkkE"), }, + { .name = IOV("lIJccnQOuPsTBQlDwee"), .value = IOV("JybcbqoSKdCYQoAWbzjTGDALjtflHI"), }, + { .name = IOV("LINKjfZTmSu"), .value = IOV("uCGUvBTVOq"), }, + { .name = IOV("uIvAkYaMJQBx"), .value = IOV("nTQtQHLhxIXPlBlineUKqGZCPoMJOGTORVuhCwPhpwFeAsgDmRGgYtnlCY"), }, + { .name = IOV("JYwBVVqoEKV"), .value = IOV("mAYXBbFbqiIeFTLQIFwjpczXqlqzFGvTkCjQJFKIWqvpxTnrmQsvYCfPBXKUWgLc"), }, + { .name = IOV("XsGusyOwXDg"), .value = IOV("EJMwPcyS"), }, + { .name = IOV("MxzbG"), .value = IOV("fiBIAGsbMdNsMnwKfuSjZIRbjdajMqgTBvekHJtbhzDjFqmovTcEWzdSyGIILwg"), }, + { .name = IOV("sXJtuIQ"), .value = IOV("jCHHFKUMpFMgSyGIIGGMvahqfDVYeNBaGCKYIjNAQtGihZSXuCHgfEWIBrjUxinAaABZUeK"), }, + { .name = IOV("VugnjbOyCXmNsNc"), .value = IOV("BkHEkBAXAknYJLqmPYvRivjHtgscgiiZdbzvXWcqcgeTdvviSTvRQwzwd"), }, + { .name = IOV("mqBlNPWKoJMJYXalpLjX"), .value = IOV("CjsZfFojkHQMLwnpyoCZyhdrPNxfVkfgSshaQbVLiuCtBypDtvtESaYBOLdVIOdfqPDdz"), }, + { .name = IOV("NEQWqS"), .value = IOV("uefmpzEJaWOFrLwmItLnFUFhbblRUSkPsdsPghaFzYFTBlaBIR"), }, + { .name = IOV("gXoQfgikqsRWgPFGxQx"), .value = IOV("ArevoeffimBkdMmRjCI"), }, + { .name = IOV("dLqJPjFMRkAtitSlAfP"), .value = IOV("mheJ"), }, + { .name = IOV("spBnINHTMdKDoiNuJIa"), .value = IOV("RAiDhwPZoMsdJdLIotgxeVcRPsdUXChUqJc"), }, + { .name = IOV("QJGoRLFXyevEeiUrMVi"), .value = IOV("eqOopPbOLjwPhxummbOjFbcUvLRILhmBWAIrKUzyYqIwfEcMigvBxCAyoeDILIPxcYPtHOkn"), }, + { .name = IOV("WDBhbZB"), .value = IOV("xYSFWjvuVfjEkOksQqjVYUMPhPMVRoTJSxlcmfjRDnZCjkqPpHcSYggklYJRueCszNJBiVI"), }, + { .name = IOV("K"), .value = IOV("EywkAKURBYLcTlfybZrWNOTAAgUkPfcCksyBHUhdLDsFckYLqoP"), }, + { .name = IOV("hVbfiCHiGjjihwP"), .value = IOV("yzukzaYERMkisFRvlKnUbM"), }, + { .name = IOV("eTxOWCAklzswVQPiM"), .value = IOV("gFTCKUDPXDDJH"), }, + { .name = IOV("JMQbBhX"), .value = IOV("MXMKcNunmeCDDTIMINLZHcaaZorbICvHaVejqrLBofofGSGxurmKnofyPUQueJehEuJc"), }, + { .name = IOV("yWbsuaFa"), .value = IOV("VenMaJVnaejhj"), }, + { .name = IOV("OyvLVyTvgoSGNF"), .value = IOV("YKnGiDuUsFPBnvdomqpbWYJWKFBuzKQIFJdyVFBNMugMvKzIuTCXEUtTGEwxfNLPEPtazm"), }, + { .name = IOV("hlTYZDkPjKgf"), .value = IOV("PItKCJZBkFuMIkfzJDdBIiptztOaaZhLBYjxHrg"), }, + { .name = IOV("byRNmSHPhTP"), .value = IOV("gVdUevlSbyOFGIlzOKkMWDsGVsTpZkDZIOqRJsejkMBlNHcZImUJPFfIxSibMvQBdOkSrgGDfFNaYL"), }, + { .name = IOV("bChloopMTijyKNIJ"), .value = IOV("xyICeeoHIvbQLzSOzaxRyZTmWfuLUOpsTHTuuRlGjwJzyhsxAWYtUHbfFHAxfbAkpQPxJk"), }, + { .name = IOV("JWjvUImW"), .value = IOV("XvgMozSMcACZIXxjrLujJQjIzIOCAFqtJFefbIiGEwKlxRuGxvSoPX"), }, + { .name = IOV("TTRhe"), .value = IOV("lrLZPFnlnaXKmUCqqJGbCPxqWqOkFFamzxOUTLlAsBMUAhtJRAcKd"), }, + { .name = IOV("KMzS"), .value = IOV("dQCAcnYqhFYc"), }, + { .name = IOV("rgMdMSzPg"), .value = IOV("OFjmCypHsWCggKpGExougKa"), }, + { .name = IOV("Iibm"), .value = IOV("zCSDfVrjBUPmJXkJlE"), }, + { .name = IOV("flZrUPvUZwnqMdqliE"), .value = IOV("DXRnlbLASfnvTLVFZTZOvrLuSyAFIslgvKAQeLfURbSHtdIhHaxYdzBWNYvU"), }, + { .name = IOV("YqhsxCdbcjwKtbymFhOp"), .value = IOV("lngiCoqNTsNdrHrvpiryALTVqyfQ"), }, + { .name = IOV("TXbKwloTfwRRpMzvY"), .value = IOV("eOKEKljrhxuwfrjTBLKwlwQsRWBvx"), }, + { .name = IOV("MVI"), .value = IOV("CyLOutOHggNlRGJcOh"), }, + { .name = IOV("ktSJhg"), .value = IOV("aCIaNVRcsdvUwfomQzJUFodEnUXwKpvrosKRCwpEDQlLxsnpKPAhgmoOAjHPwA"), }, + { .name = IOV("SLVMihzvjHQBEDINFmn"), .value = IOV("SEzIZxvPffacXvjGFqDyljYPzJDWOSGsAJCjIWLgXXPzYkkQfuOSqHBtmCtOvLeDqI"), }, + { .name = IOV("EJnlRqkMS"), .value = IOV("nnZunKnllQZCXnQVieJtJtiObeqlHWhIPEMyoflvbclsSrmKaJDPFAWAiOzdgIWHrx"), }, + { .name = IOV("YJyxyfs"), .value = IOV("xCRvodpTcReUexrJvvJWNXkUccOHXhXjCeJERKNvu"), }, + { .name = IOV("KSpLwzdbgUmI"), .value = IOV("TjnAuiPdGcQZJXsLeIiHlUfSwOcOVDAARyknW"), }, + { .name = IOV("pudeFXMAxu"), .value = IOV("OYMGTOaFIURnuISuVpETopQFrRMWmAcCTd"), }, + { .name = IOV("JqOegXPAQiQdIHI"), .value = IOV("LXlysmMOfmXQilKmLnXDRPsmjNTwJOTaBfKhnIbPUqZtKzDPHcrwboZrlGWpZQgNeaqIckTABwYGm"), }, + { .name = IOV("WF"), .value = IOV("PtDbMjGyetPOmSoxmcCZZxZbyeFcEeJMWbjtNCqxeWdfTSocANvwVA"), }, + { .name = IOV("CFpKxwgJkMUgxqH"), .value = IOV("vZGmjfb"), }, + { .name = IOV("OGrkD"), .value = IOV("TpjpMdQLenZfUBkOZKLLsOrcvxHtQBfviFCNmomaiOInUIstwzuXtWAJdkyIcolRBLsrOwiBo"), }, + { .name = IOV("UnpSqmpeA"), .value = IOV("OnTIWNcBshtqHgKvQzroXcpforSvGunKUrirStpwPmqzNKUUuPAxWqikPqHGEXLVGyVowccqsdozVdA"), }, + { .name = IOV("gOTfjwWyOrS"), .value = IOV("ytpdKLygZzLePkaVkIMgQkjNuQQIjeJTVR"), }, + { .name = IOV("YNXXBKLWJAljplCyiHt"), .value = IOV("rcEjLaLhNlldXveXQEObnryKKZTeq"), }, + { .name = IOV("mUdnB"), .value = IOV("ljZfjaklQymiWp"), }, + { .name = IOV("qfQDiW"), .value = IOV("PSThgWRgnAzHwAArQTGThRemcBIp"), }, + { .name = IOV("IuvlA"), .value = IOV("dGFWtsOOMwvHhjLLNDdyxpFhHHFltgKUTJDC"), }, + { .name = IOV("UCyHdEiEhlBLWXqkWM"), .value = IOV("yoeRCFCqpdttfBRjGAcUa"), }, + { .name = IOV("eOUzQJgdeftQaGFbDP"), .value = IOV("oeSEGuhLMHKZmqyeqFEDPPEpTEVEydWoYAkemUCXOxNRWwVLbJKuxQxPElWnVLHiNOgPBVpCjn"), }, + { .name = IOV("R"), .value = IOV("PNtWgiNYygPkASTIQEEsIgWTu"), }, + { .name = IOV("mbhKSqNSWPSCN"), .value = IOV("vSJdkySuyxYfuDyzGWdjsLkXruBjjgP"), }, + { .name = IOV("AIKYNFxRarPlijC"), .value = IOV("JChNJ"), }, + { .name = IOV("jqNYxA"), .value = IOV("QPcevDTtEIQJcwY"), }, + { .name = IOV("bfNnQEtV"), .value = IOV("kqvepEIIZfNOJQJXHbkoyyPpFAVXJCt"), }, + { .name = IOV("zI"), .value = IOV("ILiZgZXiTJHRFFnJQA"), }, + { .name = IOV("kaQInnhBF"), .value = IOV("mvjIMjPxBgxRAdlwxjtWFFMKQxhZo"), }, + { .name = IOV("YnLUkANbBGaPpzpDetr"), .value = IOV("lcHbSKCaYKNRNaRFtmcqsCryBEvlJwCZRmTfaPeqLacBDHFVdRusAJYgROKSlhVHkWYarAExghBHahJ"), }, + { .name = IOV("pMQkHZM"), .value = IOV("SqFQxoYYSTixqXxoThksItZceBxlcZdxdzEAYUbwFLBSstROhqfvPGr"), }, + { .name = IOV("rbliCeVkwCTsF"), .value = IOV("gsJECSyibWIsAGWu"), }, + { .name = IOV("xXjSUDivEax"), .value = IOV("eRoxDLnTggFxuG"), }, + { .name = IOV("bXMlToCxvbTKVNp"), .value = IOV("HUUFNJQwdHZiGNbJYofEOMgSrakMuWGRBGZXUKHFUqiGGDYCdSEKTPAULzSamBWzigWNvDGZy"), }, + { .name = IOV("FDUlKUpcxgrHKUqqDHZ"), .value = IOV("qjXjGFBMabUrsZEOVJFxyqvMcpVNystIyivZvHRSkZJugIOfukcPlmtwHDtUBHLzbedaOAHzUjUQl"), }, + { .name = IOV("smgIywIsi"), .value = IOV("fnQgtNuJHMiUBbUSwgaIoOfVzpjKquJHulnranMhJEVUDfIIdCmdlprkSDlPi"), }, + { .name = IOV("vMzDI"), .value = IOV("JoHaaQnjasBXsgXxTKWltAKzdqGbNGQWXJNUDshP"), }, + { .name = IOV("kczjsYMrTdWqVZp"), .value = IOV("nmHWaCzAeukb"), }, + { .name = IOV("uJnhwPf"), .value = IOV("kuSNbUluKoAiCLtxddYPMthyWIkUDUbGUpRtqNBofcEkel"), }, + { .name = IOV("AOvLQYmZjJryhzfcJ"), .value = IOV("OQtFSegjfoimUZcecRXHMswqHhFvLufanJGm"), }, + { .name = IOV("xolyFrekuZfrDmHD"), .value = IOV("WMKRYKGuPgUoTGjSF"), }, + { .name = IOV("pXPLmDAWsY"), .value = IOV("QIYAPpgpLgraVkSbkliwDkRieFxtUdAALPRKlvq"), }, + { .name = IOV("hNZMluB"), .value = IOV("yKrFckIrHYtrmQBDKHsnZrELWekDNKnXDQvpMHaZBzsIsgQYPmGoMxXnPbXugjNNLHEqw"), }, + { .name = IOV("hdwHxAmc"), .value = IOV("WHCpnPyCHsrFOIQZcupoMiMcksiELbHtgxfqHNGEJvXhDyeBKmHIaxPKAJXyPf"), }, + { .name = IOV("BjtroGyBpVfuJbBDvKXi"), .value = IOV("vmkoNGhgCmkooBovuCCZHgIhGdgNdCVrfMtWltypaUSkmoqgyYERkdaRLhIAcVFEAauYz"), }, + { .name = IOV("aEQoGIhcfGMK"), .value = IOV("dRWzFpVVcatQupwcgvuwtaEgJHfbdWifTdUpiAZOYvABtHWPyteMAHTYWvxedisJyeKjNpL"), }, + { .name = IOV("CA"), .value = IOV("zRhgPqEOwYDNRPJUitCwnafJnnNpyQvgZi"), }, + { .name = IOV("KvhXmniYhCLMzCWVIxsL"), .value = IOV("XgTcdr"), }, + { .name = IOV("T"), .value = IOV("HKhUsKUdOlczywcjiYjtwByUEyTYOAEHkxueleRFVOyNArJoIHTgXOCTLHSBjRVUEEaCxH"), }, + { .name = IOV("DtMhfnF"), .value = IOV("qWWDfrm"), }, + { .name = IOV("A"), .value = IOV("ukOYhBFsHuQUhdxPdnxFnRdYMnURdatoIgvOIfatijJhTaLbNyxKdRZmSmkyVgYHLlQIvaqmtXcb"), }, + { .name = IOV("Qe"), .value = IOV("AAq"), }, + { .name = IOV("xVmzGrFgCcZNN"), .value = IOV("RoxRRaaYTuyHwcXmmpZkmHCuoOiOTGcvEkTCdUWwYdnEyWPTebBvzGBhQhUMO"), }, + { .name = IOV("VUolBl"), .value = IOV("vLSSbklG"), }, + { .name = IOV("N"), .value = IOV("jDkwzUpgYqddEhCiQoRmCtuaISlRsiuWs"), }, + { .name = IOV("JDSuhCODjZO"), .value = IOV("ZqQlGTtrPTUqYWXFyQ"), }, + { .name = IOV("XYKtiRmDYbYcyndv"), .value = IOV("HrITopprWgrVjIoqcFESBGzKSvpXbcrVhAvxYyIVEpDxSgysYGDNAidPtTcUQOWKvQIWslE"), }, + { .name = IOV("nnNCAorUVFCvr"), .value = IOV("D"), }, + { .name = IOV("slvrvuxmR"), .value = IOV("dNDopYECOFkqmrcxdbPWpOoruHneiPUyxTNduolZhXItnOuBzYbP"), }, + { .name = IOV("UNsXkl"), .value = IOV("ZqXeGisEJCAjYIckkdQVnBJzKOGvVGsmoeGfnItUOOyPOXWeRUAbnAzOqNLfGA"), }, + { .name = IOV("pMLJhuAGanpUKGUoGE"), .value = IOV("YmqDkmuNdpKNd"), }, + { .name = IOV("osTvRvdbqIU"), .value = IOV("tlRZWdjaPxVXFePERFHAkqn"), }, + { .name = IOV("gMsEgXKgKIzeVxiR"), .value = IOV("Xusw"), }, + { .name = IOV("CodtmLcJizPoikPg"), .value = IOV("vFnSTKdqbOWMTBIZyEUhiLQYiHrUATMAlBBmjbAiMqdgYHNEzapmRVeWxInHeMhiUUVObAIZwOQXa"), }, + { .name = IOV("iDmaZJftz"), .value = IOV("qqWGMPKluqzyzrTMAaWarRvLWRaRiCq"), }, + { .name = IOV("mcVtwMQg"), .value = IOV("TQmLotUQJjXotpujmJDUUPpLDJuenkXpdxjLuBHWV"), }, + { .name = IOV("wcvpfiJagrrGWDf"), .value = IOV("JODoYaloyOhBhvuNoJeUmaOdcwolXzFlLPbUXoZHLhojDccAeKnWyPgnVwikjQhJJmrLI"), }, + { .name = IOV("nlvkAhZNPWgkHxCzqRR"), .value = IOV("RTlicDDlMgGqwRvchgXncZEhinORVTcJmvxKVUURF"), }, + { .name = IOV("fGIjBHxQMHgLO"), .value = IOV("PWQFFAcHtpJRQGmcgmWHTKFWbVRHVUMFtQNLENsLKhUQUy"), }, + { .name = IOV("LCWyjRuWeSgHuzXneZ"), .value = IOV("nhmEtUaHyzyjjQLpHFbA"), }, + { .name = IOV("NrbnasNnLrEGYzO"), .value = IOV("ktJrAcMpp"), }, + { .name = IOV("BFqxYbfNLZAarBwt"), .value = IOV("moWVhOMrrBIWsGBTePkbHriypOyBixUogyQAUrLnLYqSaSZgZYHwnLhZafDihFCxrGCIIFUSTKMS"), }, + { .name = IOV("iohuUHwWBohxDH"), .value = IOV("ENoFjwpN"), }, + { .name = IOV("mVYncrUTvAwtDnXCBM"), .value = IOV("lvqJIRdn"), }, + { .name = IOV("mPOa"), .value = IOV("jUffUXGHeVrSOTdYshzkHeTiiKZHILKvRQitBQvQRgiQOCJbTpZLiaSskDABQfKvLMlDoa"), }, + { .name = IOV("kXpILSORkP"), .value = IOV("SdcVqNXFVbjEFQLOSRUcekWxRtWQOqCkcJNMnEOmFarDgHBSHlyMrzFhyDlxmXbEHQABnuUtA"), }, + { .name = IOV("NLlrSRthdyxPu"), .value = IOV("JANwngIwiIYzirwOUaSWwZeKmromH"), }, + { .name = IOV("dcTcksPCQOTECPPXUNOt"), .value = IOV("CjbLAbRDSgdAzfBpcfObctJcabRhiNUDEwppWXxGyYcDvhedVdjbxBwBeVSP"), }, + { .name = IOV("jNkhxWIAzsXfVdBB"), .value = IOV("rpaLHBTxLYuimXYNJfHczFLxISqYglNjMxjAJhbFVmjL"), }, + { .name = IOV("Fvw"), .value = IOV("rarbUqfuqAyQIotyhiROMKEnjLHk"), }, + { .name = IOV("WZcmzmvrnigBEZNpKHXv"), .value = IOV("uCnRzBHucHkrCxwTMAsnTihCjyZxxnJXsPJwxcwRxVFavsPkB"), }, + { .name = IOV("ackknDMmegeISKCVra"), .value = IOV("phSiYHbcSpbCUkagVIwkzbdvsHFKYaNpeZvYhbsvSHTbGOgbfsDjf"), }, + { .name = IOV("gBNgxquRldytVxLPwDSV"), .value = IOV("sOZcBzwISQRTLCaMsJmRyWcqBJWniRdiWdTxUE"), }, + { .name = IOV("lSfDUzMOXTSvxZ"), .value = IOV("IYWPBbqTAzETIuAVJSxmUkDGRfCbv"), }, + { .name = IOV("prcxfBZxZ"), .value = IOV("pWfQaSMtzykCA"), }, + { .name = IOV("INnirwdL"), .value = IOV("kwwlSXRBzAKmUEnUdnXervTkKoGrHSkpIgLhCPiiJiFTwYgtcegSBIKZlleoXLkmGFtXHwLlcpgP"), }, + { .name = IOV("ZSKfNPAZFFLO"), .value = IOV("LPVsiQwpZCYXvhzfWyIceSeKySgeKgBNiIrxmokXrzHfCzNiaycUxdJQNVtIvgiGNHtuFhjO"), }, + { .name = IOV("CiJsaCkWU"), .value = IOV("oWnoLyRfQypVoBabCBolnqKslRauoyGrVuaqzaIrZvKbKVSlQcSgmdenEsnVxzf"), }, + { .name = IOV("ULlkeDAoVXUslJjl"), .value = IOV("GkdDsAcHchsRYwnpkNkPvZAyRcfxgQtFEIYYmaXFXtofpanxcLkDFyAoXavUyqJ"), }, + { .name = IOV("eZJDITTvem"), .value = IOV("AZVxJUPhtnLJpspyiyzvYwGTdFMuoUmdmuwMPwBqCmsJ"), }, + { .name = IOV("aEXcSn"), .value = IOV("RGVvdmNeYTxuhfeIBvlquZTSjyOkAFXhKKHOPyVJfIxcoSMCgxfNyfsAgMCyYYAg"), }, + { .name = IOV("IhOtFD"), .value = IOV("gnWXIcvvQaePwfpJFvcwmHle"), }, + { .name = IOV("jUrutaaceMYCWDXv"), .value = IOV("duImmdDXaoaunGvqLlNnLMdKuWrsAMlcfnBBBu"), }, + { .name = IOV("myjdiz"), .value = IOV("gdhyDYyw"), }, + { .name = IOV("pPjCZlEzYIna"), .value = IOV("QaCFwHANxsdmtIxCfwfvaMhXeqkYDUFbRUIsGxFgQqMEkRuSxlEllAXgvNdK"), }, + { .name = IOV("ePLRvsLqglLsOYOHz"), .value = IOV("ntrgIUOAjkKJBvJZaIgeAvXCpUNeQlJYiceHNcIRNfAsuUkX"), }, + { .name = IOV("ryVhYRodFYPVaQwX"), .value = IOV("waRJxnZFaKoMOqzkHPgOdNeESC"), }, + { .name = IOV("ED"), .value = IOV("WAXoRxBxBvNFPMbdgcoOWWvqLpQaCaNUIGQncJoMyDIzqssEtkywakFDfxmsMVMncISiDhloH"), }, + { .name = IOV("XRwZRqPykl"), .value = IOV("kQGMHyNVgcpcvNPOcrtzKyMmOtDVhlJBeDimSyGEVbpkygCMQ"), }, + { .name = IOV("uLioti"), .value = IOV("BOTMXMamzauHZlnYrzyDXgPnamKoZhxpaqBEymcvYkqqpNMiqtnBMcMmrKgQcxvZ"), }, + { .name = IOV("ekwdMSGhjopAyaLQY"), .value = IOV("SfLvWPeODcdBxVfMMoWLZMuQtnXHjVqSgcEUEtEJHaJSRAunYeqTfytbuGf"), }, + { .name = IOV("HTv"), .value = IOV("eJEXNIASIDMeIfAxrhlEEcISDKatKsefrHMhhSIWIXklOuabOyhZiLvuowmYDQXz"), }, + { .name = IOV("isOnsorKqHdNIxMaPJGK"), .value = IOV("oFKQClWAPOzEeNduTIAddUGGrbXOcqFboMGKIzdnUSdttnTOACkdFXPCZhpKDMUbxKqblvWLmDPNbz"), }, + { .name = IOV("kIMqxsHcULAsS"), .value = IOV("kNbrdDxFXJReElVfgAQKBstKypfXFYyOQLKdd"), }, + { .name = IOV("pnyxzEnCOTBB"), .value = IOV("mbbfUUGItBqrFixsIakBUzNPMTYfLKNDQYRmaaYFmMhTBshfHXf"), }, + { .name = IOV("sSaQqVPEQzsaQsm"), .value = IOV("bweHznDKEWUZQOfCBEgLAXuUXNzjojMlHRgTZUPSrwEPGmvo"), }, + { .name = IOV("mCTEiUlviz"), .value = IOV("aQLhAGUnPKDzERTY"), }, + { .name = IOV("nkrJeJiohZc"), .value = IOV("bVEObskNSgBByOhgsFlVVpDiWZufSzoLdoiCLRoakbpcxIlyAmkaYnLTisH"), }, + { .name = IOV("OwdsspheITzdOxg"), .value = IOV("eyP"), }, + { .name = IOV("WNBTHOwxDB"), .value = IOV("tSubsMYnsypRPHAIDhALbOzBjlC"), }, + { .name = IOV("zAbFKlsFmiIGlY"), .value = IOV("JSrZygLIfQAUUNaxUrJosVtzSWFtHqMULoYQibLzZVKQmudmdeHzMueKbzyampn"), }, + { .name = IOV("fuGuokEGvoQOnvfQqd"), .value = IOV("JPyqahkSFOCWgIVUrGxgDCgflBpnRrZQAosBFhfhwDMTAskbNitcrGeMXVIXR"), }, + { .name = IOV("yXyJYwAIMNyRieOrj"), .value = IOV("hkrifPrfYzYyAgRmibJkXsDQyYXWYrDGaqcuxGuCAmqbBdJhE"), }, + { .name = IOV("IttAYt"), .value = IOV("VbGBkPncbmHnPUdmhngtWnAHeJZPfxXPSHXZekRkNWnNniRWmnHLGlbyjFAQWVmac"), }, + { .name = IOV("jaPaTYvIrqOMhTvDjfLS"), .value = IOV("ybrpfEGJQcFJUyRGoHVdA"), }, + { .name = IOV("AzDyHSxf"), .value = IOV("sXjyzym"), }, + { .name = IOV("ecCzqzYZX"), .value = IOV("PRuFTS"), }, + { .name = IOV("adDlggVoedmQf"), .value = IOV("rKpErnUmzxwGStKxJRdKwpRWPvwFTOBLRUglZtDzkMZwwQlyDGWJlQwhTHUGQjbGFAc"), }, + { .name = IOV("osDqPDqrUMc"), .value = IOV("wfnYQaLvVDaJboy"), }, + { .name = IOV("tYYwZelesXGzUAcF"), .value = IOV("WpZLYMJZ"), }, + { .name = IOV("IooHxSSUk"), .value = IOV("quJUzVTcPMkQnKGPAwPebHzoNxoLCbBiMVKfBxzKwZtKalTpSLRJHFiS"), }, + { .name = IOV("iwLvaHqTiZ"), .value = IOV("GLPKWTcBktojWJOkPsBTMvVWvZDHGkKdIguMRwgMBVWVln"), }, + { .name = IOV("QbPICbGfnPrlPOinihi"), .value = IOV("ejXVwoLMxxWwsnjkYRiWnFeUdRsxVYxsQBvunbZwYVTWIociJMhcpjKrGsYIp"), }, + { .name = IOV("CoJnL"), .value = IOV("UMZVpiekkywHxNlsMGnJXUPHaKbbKjhsPwMQyQYTgNLj"), }, + { .name = IOV("wRYEvcb"), .value = IOV("QMTOEybsqZCjvfwVWZpooyaycyYyQcgYOrBpATrEXhpuMZRKqcyPyhRMlCIh"), }, + { .name = IOV("oAGwjyZHXvbLNGA"), .value = IOV("SnDECYhuqOwieFMWxmAbgzzrxWlCalOovQSgp"), }, + { .name = IOV("PjV"), .value = IOV("WDsznnEgLAyyDIklMBjqVtBwrBpZRPweqWZUAPchAfH"), }, + { .name = IOV("EhZnsgWPopcUvgUVkvi"), .value = IOV("iWwSLvZKTADunbgGmbouPSDhesnwwoOEf"), }, + { .name = IOV("ieonl"), .value = IOV("xUhmQAOpTXVllLpyImgeZymCGFMv"), }, + { .name = IOV("LiQfglEOcxmvpm"), .value = IOV("RBGeMXVGVndoHOsFYGWWLElnnQCyyRjrLpIGmhkMmjtYruBMZhvWGIfKxhnArDvrB"), }, + { .name = IOV("WLKxCtVtRHzu"), .value = IOV("KbTnCiIFMtGeAVvKOZQEREabBXwwXmCEsKyokejQravQkLVzILCCoMctjuwUaWMmSYFKsSrpn"), }, + { .name = IOV("PBQi"), .value = IOV("gjsJVIvmGaGKWTINFdsvkIPioMhJhVBvbtfHzCMjnvDKaq"), }, + { .name = IOV("L"), .value = IOV("tYWz"), }, + { .name = IOV("YWiXkCTelgHwLWAofrSM"), .value = IOV("jxmZuWyXVrEo"), }, + { .name = IOV("uvSMLKzvElfxumfNW"), .value = IOV("CcEgOawFFOeecbqeZHysQXLiflEHWrYHQibmwezMVYIVtGQHba"), }, + { .name = IOV("MAzD"), .value = IOV("tRlmKQUFcuzMGAUqXpcgK"), }, + { .name = IOV("q"), .value = IOV("YAeKrdYsOoSubhiFILQIszYKvR"), }, + { .name = IOV("YN"), .value = IOV("JOiPlUhplchygfrVGTozwWIbRwgJeCmYZPpZHzFNMwRnuxThgSSMdYzsnfStARXsaEGqAfJaM"), }, + { .name = IOV("uRGhmDGHIZHntKWQf"), .value = IOV("yiQQQeRoNdJjZzsLvMHXvOygoEOPdiKGuXpyiaEbjimpEINmtudYffyxTXQCBZpYzMTstMRmqP"), }, + { .name = IOV("aWirPhKFmFjhDCe"), .value = IOV("NbtDNtMGFKeJiPaKBkpy"), }, + { .name = IOV("AzRFnoSEpNYaw"), .value = IOV("BwvVQmlThpxNTAdmVpFWkGPrypvpzYLDue"), }, + { .name = IOV("OvulrfL"), .value = IOV("vizLUbXMufGYmgCdXURNsFewmJrUYHAcpTvsWMQC"), }, + { .name = IOV("bVVfhCRFNkgeysWNFtBr"), .value = IOV("m"), }, + { .name = IOV("ykVGeIZRLW"), .value = IOV("vdkDTIRPWhvZfHpnpXZeonrQeNSXazON"), }, + { .name = IOV("WEhYoCIHmYEpajLDGYFU"), .value = IOV("SaxAVJPpIkCPPbtNQSazDUSazlpEyWwePIPnDGghrpcuV"), }, + { .name = IOV("awntFnH"), .value = IOV("BFLPetwXzDWWyBydXC"), }, + { .name = IOV("DIps"), .value = IOV("vlODSXBKTbNdEVpEhBOXfzCYlXpCtvqxpCnhTACMmbDDKDBGMfSomYKTXqllSINwXlCtbDbqguYG"), }, + { .name = IOV("YtGoZZwVmRuWWYYC"), .value = IOV("oGsBHPvheYyOJWFRSbG"), }, + { .name = IOV("zjflwLCuzNn"), .value = IOV("srnTvtsMQxMdzlIcaOsbeTpLGHyKoYzdCebIKAFgqlfcLTeEoOPObkjViNLAoAFvthjgThOyx"), }, + { .name = IOV("Yy"), .value = IOV("FXyYeURvjBnktdwCzylyjYWQKxHaoSmvqvZMroQYJZ"), }, + { .name = IOV("ihCQGYW"), .value = IOV("rXFYJWtMCJSUrSaN"), }, + { .name = IOV("cCfWbRkVdZ"), .value = IOV("HWKhqfBBMOvGJhnyiVQhACLHrqc"), }, + { .name = IOV("mwMjqlQrl"), .value = IOV("ragdHhhmMALSXhQtiFwSCFeFlzjnRYKPMSUjYVgkUscTJyOuQIkBzoJafcGWriKxhcCHhVwbgQwNcX"), }, + { .name = IOV("OgsUTSmbaPxwu"), .value = IOV("otkuUjEkRfYKXWmdxBciyKTsDVu"), }, + { .name = IOV("TGThUUajermZFZz"), .value = IOV("NMSrSIlyexPjzYdSHVVQEoJDSPDPdBSVcVqtGBehGbteQN"), }, + { .name = IOV("izKpjHLLUNMnzbeJf"), .value = IOV("aFqApRaYS"), }, + { .name = IOV("NNkyJ"), .value = IOV("LLXvNPlTsmkDGuNIcrrLJdjVIgrLjjZjKezGnqIEIFIqLjYBwZn"), }, + { .name = IOV("WGvOVrj"), .value = IOV("JdyaHtKqdhiqswgZDzULlvlfHonHTgVMDeHDteEruRRqDDMkXWwaid"), }, + { .name = IOV("DEKtViuU"), .value = IOV("ioqPjwUphJjVORgemgJhtKtDDNFuqucaHgalktTSPhkKIerM"), }, + { .name = IOV("xxDM"), .value = IOV("wOrSFn"), }, + { .name = IOV("oaZvykVb"), .value = IOV("vwFhAybKFIjgacVXPikDOUepUrCLTxpomDAOiiEDZSkSF"), }, + { .name = IOV("XNgZIQFRWBwz"), .value = IOV("tLIgOLPdLyHbyaAdvinucpzooLeVkpJhVxQRmEmopyvKQjAFUMXtRhwOYkK"), }, + { .name = IOV("CQbXTlHWuDAdwgJ"), .value = IOV("VoKelfbxdBfYQxKGnOKMHfogGJOgZfhDFUEvanBTvojPhPP"), }, + { .name = IOV("NNMDEmcJftmxUSysyj"), .value = IOV("NRTeYwFlOvIMPCOEPfuuPIhooBNaQLBdXFMfBtrQaGyjtBbrysGsWVNeJndMuoLD"), }, + { .name = IOV("pQ"), .value = IOV("CqLIHVNzSsilgyqUsPMmnjnPfZQugd"), }, + { .name = IOV("eePtsNkUMtjPdzhI"), .value = IOV("FXTyQMusdaAhJUXRhwkghncGgUb"), }, + { .name = IOV("NRDRdWfsev"), .value = IOV("YuPooLAcIKbDmmdptc"), }, + { .name = IOV("FQJsfTNoDEQBjkTZi"), .value = IOV("wSvGaSFzlrpHucEVQfJmTYGafTcrzKHxgRDWPmsooAgCJHmEjcymmtaUJzBTisLxlGGJTqtHRVvyEAB"), }, + { .name = IOV("fohXvmPswpZ"), .value = IOV("RqPZmTuQBlihglVehPgwMeMfmtxkEgnPVPIhZvIGvEsvjVyuOgxWuzgvPYZqneiFyBOE"), }, + { .name = IOV("rOmVlRPtRYekS"), .value = IOV("AAcZudXMnNoeYlYnKdrHOTiWKWbSnqyIHkilXmvuTMQrQvTdraGiiqieCcpxkKdDKpxfYuVxfkDMg"), }, + { .name = IOV("WqFRaUcpgaSuVPsOgQi"), .value = IOV("kSyivcceZjZclmFMEQFmfVMdWlV"), }, + { .name = IOV("uODTdy"), .value = IOV("EdyslYCaIhPqAlTfuchdCFApDVNWlx"), }, + { .name = IOV("JGIGQadiaIIkVZ"), .value = IOV("cGRhfywwxDbzVQnbYpYVlStkSZRfDesGQoCSdSGffCbRXcxfTsOTwZVEYnkIHP"), }, + { .name = IOV("lyVUiUrdt"), .value = IOV("CprLUkezLBAXEPxJXGeLaMbPuWiROYCaXAflcwGOlTIuBbVjFXBMEBkxrcFNmatwUIuphthAwLDAP"), }, + { .name = IOV("EpykYRQJsrMtvep"), .value = IOV("JQYYSpsTbBTZbuvsrtDMbnmkhQEEId"), }, + { .name = IOV("CdsOsjWShahEPkth"), .value = IOV("kYrLeYjcLdYdbsFariLfLuKtgkKRs"), }, + { .name = IOV("nkYDMmhcvddCZtudcftI"), .value = IOV("ZNruHQjCkKUAWsvVAulsrXomvoxIoJKVArFlHvazxRLtFRGocTapbHt"), }, + { .name = IOV("haODMs"), .value = IOV("cGWLdVcTyklCCabpiTHnrkdaPpDJrpMtZMT"), }, + { .name = IOV("NRPoQQRkcbafRBw"), .value = IOV("dsJwEzKmoMCmbgqmaEvjuJeOiUgUKnlfktZlHiECSWkQDSTqiQbUrVJRiKxWUUwCZQdPLrJOQw"), }, + { .name = IOV("xPSRTV"), .value = IOV("YtarcN"), }, + { .name = IOV("GrRbIXAHxjlIutq"), .value = IOV("AtkbfsOEPLdDaLGIZIBUwqRAMewIWAsRviEMFNREDq"), }, + { .name = IOV("R"), .value = IOV("CxYfSkpAkejMQpFaYlHTDgzT"), }, + { .name = IOV("lFyNb"), .value = IOV("aBOJ"), }, + { .name = IOV("YZhFlrIPEiIsAAJHr"), .value = IOV("y"), }, + { .name = IOV("IRRV"), .value = IOV("rDsHWQDsgZZDiERrVaKPJOKyUUXMjPzBJKuteu"), }, + { .name = IOV("dgrQsZJTRSeCLIOHad"), .value = IOV("oUEpdFYcC"), }, + { .name = IOV("EU"), .value = IOV("JJfnYyKTsH"), }, + { .name = IOV("WkghbcwVCAu"), .value = IOV("GaCGbepRztydFljThEwCbfOMGUfWnQ"), }, + { .name = IOV("wvLuHKGpZPGyiyPPBdNi"), .value = IOV("edznCwYnUFNmVueiAViaiRUtDNOoyXRYSBpiqFMHaLDoUHOOLcWxIr"), }, + { .name = IOV("CvnhgnX"), .value = IOV("bLbrTGsapAFG"), }, + { .name = IOV("foDIWObalKCRkuYAqHB"), .value = IOV("dVHXxqMBYKjNxhdZ"), }, + { .name = IOV("RMTyoltrDe"), .value = IOV("azjUDAxZICGxhFAGzCVNlwb"), }, + { .name = IOV("sICqBLMMcDAemYzy"), .value = IOV("ffvzKDbEQYVZpcqnNoYjTsscwYTtWOulBWZoPzRHhvyTMvyEGcDPIErdDPtoXGIwZzJxZzDaDfhSefgT"), }, + { .name = IOV("iHhaDvCTy"), .value = IOV("BKVsSIvlqJHflWIyzieWKWSQHoGJNAFzr"), }, + { .name = IOV("dVzhCbShRFhCbEtD"), .value = IOV("ClQBGCmybJQfRtFUCltStCtxnBdAiFrgGLKxXQdvnxpjTLNNNnFbB"), }, + { .name = IOV("OdKHlMjBvpxaVhVaC"), .value = IOV("QaaBjaEcovNINnmGIcTfujGboalqvlePQOSGwGHoVXVeqnVCjEVx"), }, + { .name = IOV("HJCZWmytilcQVSHhC"), .value = IOV("sUA"), }, + { .name = IOV("ipHdT"), .value = IOV("ZYMAEXFGwodhjwulRCtmRtHa"), }, + { .name = IOV("ZLaWKefw"), .value = IOV("bKdYurjuKOUwyvxehkqIQCuJcALkjAgLSHQNTupWRHljyJnAMlnYTfJaTbbxTfNtgUbxHkrLwhDkgYp"), }, + { .name = IOV("VrQjgSGYOQbn"), .value = IOV("pYUqqeqwGAFKcdzYhobNZmAzvfNAxxFMNS"), }, + { .name = IOV("VjNicaplxSpcldhLz"), .value = IOV("UiZtTPhhnqsAcDWlvhYiVxGNZdRXjulZEDChqGKXfhYJdvZRgoPoyJvxUYItpCkYEoKymUkt"), }, + { .name = IOV("mzBsjpNRarVV"), .value = IOV("tYnNCQXPdUyIcEfePmXYkWe"), }, + { .name = IOV("cW"), .value = IOV("CBmCIdhpjzVjnKMbhmIqEXxVjEFhPnZidbfwDUR"), }, + { .name = IOV("ZXnGVhRjzuxtFfaPDtE"), .value = IOV("hbaDUFOyRtpTmnrEjrQrMIjgRzEWIDkhctVrOHmXiRATPAwA"), }, + { .name = IOV("TRsNlCoBVvhmCDElEto"), .value = IOV("WlsntsUxYosXBnLIizLstlcxEhPQlBrNjSXbrMhngYshNdNGhyutUtNEqyLGpwdzMwzuTAx"), }, + { .name = IOV("NQflb"), .value = IOV("DfmNJwdEXdlpUALqBsBiDFgzpomPoikTd"), }, + { .name = IOV("xuuDB"), .value = IOV("IiWchzWIQyylmsCcgsMLHSmTvZmzaTPjiaCuJLgcWzaAtpLYuotOEwwmFUeHu"), }, + { .name = IOV("iGjKxxzzPEWaaatvTT"), .value = IOV("DDRQRdIFAaBhvtTjgDlUPloHXRGHCeQQklUCEXPnhRpNaqkhgnRTppYOpYJAwDz"), }, + { .name = IOV("cCYp"), .value = IOV("RRNKWnocFUEgdTgURoFPBeIj"), }, + { .name = IOV("LMaUOdMZ"), .value = IOV("MsfnWTQBZWkwODupfOzPlqYWvJsuTwwiUAeZbYHoyyxwxdJbC"), }, + { .name = IOV("jrXUy"), .value = IOV("xdYlWmAvCBDbdOudRujGuHsIIPZRnNKlFWpAobZMxTMNeBOFoCkOnLnyqBpTi"), }, + { .name = IOV("jrOqhFypz"), .value = IOV("yWngaTAYdYnDQIzCuDzYlVwWiNuvXmIlPlcjyxuPIRkLtpljprwYn"), }, + { .name = IOV("q"), .value = IOV("NYhkCOonVqnFygejVKGRjQioEZTVGdYXlpXeXQzuWjfMJwooL"), }, + { .name = IOV("tukQhjgtRRxIIrL"), .value = IOV("PVZzUFUiVVywQpLwrwjayyQRHbqGpKRaCofuFPtycixT"), }, + { .name = IOV("xkFKpXNLZaeYQdIdDNAF"), .value = IOV("ulhBYncbcXSxEqCbQBjHfcNMjmHvRcIZYiMPphFh"), }, + { .name = IOV("LuBYjwpG"), .value = IOV("fgnKsgGXGnBpdJphjRFzLHkSGJkCUxniNnhvSioubIBNMrHIWTeZOrhOhyiWchWDGQDObAySwiSna"), }, + { .name = IOV("yeZMZUSdiXxTnZtozTO"), .value = IOV("dwGacYQqaAmAoWuaVlTyMbQRtDNGxlovokArFExshJU"), }, + { .name = IOV("jdlAqJX"), .value = IOV("xUvvXSyqywZmmzwKMqLCyHjjxVRzKzEVgJzKxaAxryZLBdHFbD"), }, + { .name = IOV("tsRSwcIVwjFysxV"), .value = IOV("xstbVleoPtgpNptWmTULWbZPYrYHnWbYXIXBVpSJcyFIbtHnyMOsJhQum"), }, + { .name = IOV("jFgrGUwpNrBL"), .value = IOV("JPWPaypkDATPmhm"), }, + { .name = IOV("EaVvrJVccjhAbkvANOv"), .value = IOV("zvYmxsFluEoMCYmQTHAVbkbASdpexQLJBMkHq"), }, + { .name = IOV("AtXTUCDalTvY"), .value = IOV("qNnuTsZFEufsbpdpHYgRoJKqqqJHWcUfKrBQyzUPcGnMPJmWrtSJVEHVWzVEATGhgRZkUmKioOk"), }, + { .name = IOV("oGGETksu"), .value = IOV("qpjncefjtMhIaWYMTdtncSuxaQBPIsLPNfmAawhlGJacyzU"), }, + { .name = IOV("HJwIyyUGcPd"), .value = IOV("OMRTyemMWGlVzZuUKESJHSypxPKOXfmdifszjHNtIYGdqPdcqLbUEdcFSeoKWUB"), }, + { .name = IOV("LMZECxTKvA"), .value = IOV("iKspCsmmwEnQXTOeKrwNlIlOCLfGLUUqOkYGL"), }, + { .name = IOV("HKZkKYATihDNFW"), .value = IOV("IDJvDGQzPpkbltBTBiDgsYWPmwgaSWLzHOEWobO"), }, + { .name = IOV("SIaNrEgcUM"), .value = IOV("XeZjuSolAEiKOiIQRzIZ"), }, + { .name = IOV("ln"), .value = IOV("ovzFNbYEwMFRWsfJPhYxswqnfxqQaNQzAiTfQNaZcWTXZnNypMxeAaCL"), }, + { .name = IOV("CkfxWLbxpSnOdggXkbdX"), .value = IOV("MrZSLbfLqkNAYWWKmw"), }, + { .name = IOV("yLgcJJmdXFJw"), .value = IOV("nuu"), }, + { .name = IOV("URgXtHJhyqBOnW"), .value = IOV("gjFBUfmmqZLSg"), }, + { .name = IOV("se"), .value = IOV("gywgiQwAholAFEQsZKEqNYfnofkbfLIFvyZdqxjaXWMVRVAWfKafNBidoqtZZBBbaqyhfUKTxyEc"), }, + { .name = IOV("YMNC"), .value = IOV("RzBpxCAylrbqHWOWpfDPhkdGyvonDyLdNqMLjDNgbBt"), }, + { .name = IOV("SvqZtIqrT"), .value = IOV("xtfZcukUqWCTmgxwLDPqyzCvlidzZqjWpo"), }, + { .name = IOV("e"), .value = IOV("HkZINgwiAhFZryOSCTXpyR"), }, + { .name = IOV("WVPAicCksAprFLfiUV"), .value = IOV("vEmeUhBDswVGcAQmC"), }, + { .name = IOV("KVNLMliiIEWF"), .value = IOV("zdbqcijhBmwrIVRJDWTFbxlovnNSmrFkYLIIkyQppmoeIUh"), }, + { .name = IOV("xIAziEreBR"), .value = IOV("tnvHjyPEYklyDXTzvTOucciRGsgXLRascEQxtQraXxHwvFuDBRDImlGfeYwXArkLVzGEpCKfCvu"), }, + { .name = IOV("Z"), .value = IOV("hxbOeUGbBtaHixbxquuUAKaVlfZJousBdfQC"), }, + { .name = IOV("Gpypkzs"), .value = IOV("XOBdNLsZYVmjoGiolZyGmqkcahCpYCJZqPZcAdkjufpRTDeNdaEPWugG"), }, + { .name = IOV("PRZSOJoMMuhpfqy"), .value = IOV("PZKTnnVIKYFGuZpcyVbCoBShDWpaAZFPhgUdJayKwnOSYbWRKjuVzFnrSwRtktW"), }, + { .name = IOV("wL"), .value = IOV("EDuzKi"), }, + { .name = IOV("ta"), .value = IOV("iMUgHeTcVcmMEzncWaRHGrUkjFtNOPglCRgQvgLMPtIBXYhIHkZCSMqtXmb"), }, + { .name = IOV("TChY"), .value = IOV("JxTRpclRpLOfUvHZSJQfHSJfkuDfiFADpUKQjhryuxswLOHSvcQ"), }, + { .name = IOV("KlaAHkAtphxtlHHVoTtC"), .value = IOV("HFctsYBQGCtlTyRsOohcUlIjQjoXwiBDAMNqOWnUigPUNEMoePttEXdBfIdNZVW"), }, + { .name = IOV("qcoVQZYtFpnFcNLhWs"), .value = IOV("aUWxhpAKsYRscsKaqGIIvfTZiXuSGPKRzxDKuBUZMdMxEqc"), }, + { .name = IOV("mDFuqfELfHStKi"), .value = IOV("vLEniAsYEuonVpETVbUVKKCekKuJyQRPUOpSVRNGCxvZgXUoOcHcuLlleC"), }, + { .name = IOV("hMFzleaFyNwGZ"), .value = IOV("aeBRJySKaCQE"), }, + { .name = IOV("rUgmFhpR"), .value = IOV("EyPGBoOBuAiLFmFSgQCvIxrjiTiMe"), }, + { .name = IOV("yMnxCpD"), .value = IOV("YKpHfSkdiTLmZBEXefMpiFLjggKudRvjTPkjZDbmIHfDueFywIseoMdIelTXlwbCGCWxTrGx"), }, + { .name = IOV("WlWDdaMQuFz"), .value = IOV("tsiIlTwMxYNxZPxsJVkUBcdWSzCEcVF"), }, + { .name = IOV("uoxjUAzByTHicctDD"), .value = IOV("TKFmRtnsXmdUxSzxPv"), }, + { .name = IOV("MzucfIjuYIy"), .value = IOV("LqkvpScqlgzjtnmTQxhoiVnphtPJBOsdosjSgDcxSFqmkGCyvVhlyxGMTMWPENlQUSnldsavWsWqGfaK"), }, + { .name = IOV("xKQlEfCkdnJQlgzJ"), .value = IOV("cbnkKKtnFYJgTfxOsvUEGBrpFrxcxjim"), }, + { .name = IOV("lFrEwBYmicr"), .value = IOV("oGfxIFWjLEiEFyGAFXZXIuokkE"), }, + { .name = IOV("eCojxbJSJTiGXyxRHXk"), .value = IOV("rPV"), }, + { .name = IOV("qfjcnNUCM"), .value = IOV("zKivqFKzPVidhvIJdDqQaWwtrxSQOE"), }, + { .name = IOV("pnUbBMKJ"), .value = IOV("iExJmkRcHbcokwKaSujEVJehUAzZkqmTxnena"), }, + { .name = IOV("IESi"), .value = IOV("HEL"), }, + { .name = IOV("qBcuMcovLPUs"), .value = IOV("rTpdcnLCCqqgAwYwGvxHJMwobtDuscPfjOWBYHmR"), }, + { .name = IOV("whjIdbrQKRzteuZFgjRk"), .value = IOV("kHXjOMVzqxyZZvhaRnKAIwGCjVGlLZOEQqcBUTMPkoozuIlGSEZAFVQplHmsEMpBPPCyKmjE"), }, + { .name = IOV("NPLCgnjlsuKpCaKumYC"), .value = IOV("DAdCwbsrmjnCRibrsWtJEhZQpaHfxbBiNZd"), }, + { .name = IOV("JdWwrpagHZBHLOcU"), .value = IOV("MSFSipGBkXazVfBiMGBbZsXvSBOVcEWdcDglXCnVMfcaSdJsnS"), }, + { .name = IOV("vucrQSdRJPSHqFT"), .value = IOV("HFcGfKrdLzrntjbetIyyXCaWSWbhmShyxiab"), }, + { .name = IOV("NmKXLkqNCkTB"), .value = IOV("APZKzsgAZIMbvyJcZybjERaYccvjAAXhFaUZTCXQcBmaYctLpIcTaUxPuaZLr"), }, + { .name = IOV("LuamVLEzPBGGXBShGZi"), .value = IOV("POrjpRcXHXtVYUbjW"), }, + { .name = IOV("SYqjoXUJCzguCsgEZlb"), .value = IOV("dRhzDNykiuQertkTqCxclGwHixkprsrbJbvW"), }, + { .name = IOV("BivncfQXEjeHmPvRU"), .value = IOV("QVXd"), }, + { .name = IOV("eChfYvhUjlEa"), .value = IOV("JNRCkx"), }, + { .name = IOV("aUjJdrarDliLcJV"), .value = IOV("oTdVDCitWDMrYrKvMNtavJlFdOVCPzkGhMZOBxJDceldH"), }, + { .name = IOV("hCvjxhnGSOgqPEDLvJrs"), .value = IOV("vJDIXUUFWb"), }, + { .name = IOV("wNhHpMWNygJHl"), .value = IOV("cJSoxADYPwmQyXFvbgZeKxvJkgJEctPkLshGgCbkVsirzsarWNGJihpAlOPJQw"), }, + { .name = IOV("tP"), .value = IOV("hRoMHwYsdc"), }, + { .name = IOV("bcsEWsRSdnyaGVqNEJ"), .value = IOV("GOGsqhImexsfIujYlhwqjQMDLsqfozyioDYNGuYgnccuYRTIctICKnQ"), }, + { .name = IOV("pzvK"), .value = IOV("xgeNYImQOQMIPiEDextgmSsDXXDGCOIdQbTgvZ"), }, + { .name = IOV("Alskodd"), .value = IOV("vEOOYjwfPvEkHwJhZBDYi"), }, + { .name = IOV("SFVtC"), .value = IOV("RuxFTFJFSxBPPtelFgmnzdLPmQwdQiergwoiUtGitqkOrJOIRdREHbqnerUlXMg"), }, + { .name = IOV("XkrJgkTocQpWF"), .value = IOV("zACcSNgRyirVdixzxTZrZRFQdKjSZoIGWYSDJPTyEbfz"), }, + { .name = IOV("y"), .value = IOV("yGhcaJLxMHyKBORuAOGSYroLotVjsExvkTvyA"), }, + { .name = IOV("SQfprfvgF"), .value = IOV("ZwRoIwUjIzFufdSCUsqygfSmOqNUjpPmCseVjWSkaoRyvawccofjx"), }, + { .name = IOV("RbYkDoCSxXBzKwiMaBf"), .value = IOV("SiihZTaaXRvwMm"), }, + { .name = IOV("LCSKjvVZ"), .value = IOV("lOHBgagIaVuCGgRbzqqESWApzttdtRxMlYCGOKucMCHRlqhfVkpurCn"), }, + { .name = IOV("NZp"), .value = IOV("nFmNNopYwJEKCMhGihwedsRGjXFxTjszJhWokTFjqI"), }, + { .name = IOV("nAoXuagWgbF"), .value = IOV("QLgHWsVXz"), }, + { .name = IOV("qnPh"), .value = IOV("HMiGPBzoafFjlAtmxDZRdmFRFRHWqYAaahWSKkskCpRLPABYLiIfKGHKDUdyjYXCGQllzTeTVSdTNjf"), }, + { .name = IOV("riADNRnFznQ"), .value = IOV("hgvRMlfvqFqvTazwQgyLjvqmZutDUTvfyYOTHPViLUeZJBAACSMeK"), }, + { .name = IOV("bnzezPkbwacTeJ"), .value = IOV("kmJBrtxjPykFLwjualLnWPjrkuMXP"), }, + { .name = IOV("VmYXslEJL"), .value = IOV("FqIknfNwRpWLPaQQABOnswubeKpMWyZBILlEYIYKoCfytkrTdNUp"), }, + { .name = IOV("NbrTODnXhQGmOTK"), .value = IOV("zCzEZThytpTpyLYYjeblwOrtuAlRZmPmyaGWFHeHj"), }, + { .name = IOV("nRXmatcSMtDIQUMmMqpS"), .value = IOV("JPRHpyDIItvzHHOdcbvSSzcGmYKUTagxYzBsSCNGTTHLJSEONyYy"), }, + { .name = IOV("poWfYkBtJtbaVxu"), .value = IOV("DQeXdbqVBjQoqPVSazflRrhe"), }, + { .name = IOV("g"), .value = IOV("rpgClxNvoMSjYtuSJYEJyHCGSNcrWzgRZZTkfdYNSnJwdNgzxCzmLvf"), }, + { .name = IOV("bjjiyNUdlttOvVEbsk"), .value = IOV("vEhQesKSwUVshAHwJIVbiNuFYseCMtqVIqgrrpzziSRZwlorRhTJUBDpKvlIyHCjFV"), }, + { .name = IOV("S"), .value = IOV("HtbLmBnqXiMJEejslXedWJbkT"), }, + { .name = IOV("oVNSIxrDsYPYA"), .value = IOV("EjMOzkLb"), }, + { .name = IOV("yIV"), .value = IOV("VhcwRLGSwMEoVAIvOFOpaWEGbTyYRYIVMffqZoYmubxOwKZXeDyyOXcDkbZUudygXWKp"), }, + { .name = IOV("auJbvTkLQnRiHKFGhLVu"), .value = IOV("JwDsJwaafAuAXigSVUVFiPdjHyzhLkhMArqtpiqcrJXyoJThSd"), }, + { .name = IOV("PkcTiLpTpfTNHxQRXCF"), .value = IOV("gGTbmxJrAvdPMIRYEemduYJQmSCxuJbelFUaMz"), }, + { .name = IOV("hZWM"), .value = IOV("qahyXyWsXxUhJjZMSEuBUvmFYqGLfOdpmRpGCCLXkmTLSGDUTZvhtxGgcblFKKFPtSDLlMJ"), }, + { .name = IOV("MPsPgcvjFJB"), .value = IOV("VddNrYVOKHJqxUZwRKzTmMEBJHYushMkuVIEOIE"), }, + { .name = IOV("opmqXSZJAkNY"), .value = IOV("IhhhvbEQUtpscMSkFNwLicowqrBrIzHvnpNFqOuKMxZidVSWREEZ"), }, + { .name = IOV("mENbw"), .value = IOV("mrYZoZnWTBdFTmGPFLpckCrYoVHiTCG"), }, + { .name = IOV("Cel"), .value = IOV("faZROfAaLiIPMzKPhllVcqRiTxADWAkAJMSgldTMeRTRdT"), }, + { .name = IOV("uZGgj"), .value = IOV("jiMiVyqsIfdKYqjfmBygnTmXEoXizIuQUYSTU"), }, + { .name = IOV("enMsTL"), .value = IOV("UsNIIClSwZupGLlTvARoVk"), }, + { .name = IOV("EXLBuKrueOiNKHKa"), .value = IOV("biezBmlvadHxmzperHaffXxZGfQcvITrcMNNMNNgNqBrqTZMPQiyAyXvOQnLlWKDVXVgcQcfgWkxy"), }, + { .name = IOV("GgAMtRgB"), .value = IOV("PQAoCpO"), }, + { .name = IOV("TNFdrNiXzdcjMq"), .value = IOV("AHmdapELEgDJQPMtCDGaXrslTGaXCt"), }, + { .name = IOV("SHEOed"), .value = IOV("cpHJ"), }, + { .name = IOV("zCATqx"), .value = IOV("JFvDQypHgYuAABRpWUkoIbQRujWTIYOBxzXGxMPKkr"), }, + { .name = IOV("PVMPlwcanTUOKh"), .value = IOV("Bzg"), }, + { .name = IOV("inDWOmGRxShRu"), .value = IOV("jExNxzirbQEzwYllRqkOTsLLDfoTwcWiwKpJ"), }, + { .name = IOV("ogzZqCIgGY"), .value = IOV("woiZfNwmLSsNZsmVgtCZWlZEZkkvKoaEs"), }, + { .name = IOV("qUzaQhngLJ"), .value = IOV("GpkkxOrldZfByEyRJWdtwoEtA"), }, + { .name = IOV("fBQxATBhsI"), .value = IOV("QEsaYXOYItYUCPIWZjFpRIgEwuuiisdKFfVGWhEXRqGJzcnwyaeaMQQfpJTJCpx"), }, + { .name = IOV("IdejlNad"), .value = IOV("JWrJAXmvYawaoznZASDZXFSfLybPievUvTXyiONYAyedcdHY"), }, + { .name = IOV("RahYdliwSCmUQAQE"), .value = IOV("rMgLpnBdOTD"), }, + { .name = IOV("SeYjUWZVDGMYJdLREnVR"), .value = IOV("CRlPmrMxZvfCmordTOXSKjUiTuxpadVFBjJveaYHmxcxjWnwBMeqtCdlcsNgxxRdObXPfTbYn"), }, + { .name = IOV("CoEZ"), .value = IOV("ORzK"), }, + { .name = IOV("NmFxoVVQ"), .value = IOV("DOINJPrcjNsNjrnpgbWqrTiDqnkHZMrEJbQy"), }, + { .name = IOV("faeypMrCZGzbgfaR"), .value = IOV("YBQcqGMlYXybjIa"), }, + { .name = IOV("PSfUqMXAbSOMPBi"), .value = IOV("FCaHKVzghRmXfvnTEHhNODsgrqdQwxTEAYtyRQakiUBZtLPqkK"), }, + { .name = IOV("YULsUqxeUqCzzej"), .value = IOV("weClAzhAjotKczHnNDAbxWUWBUBiqS"), }, + { .name = IOV("krIoouL"), .value = IOV("McMVpFpkuVnyurwbIvhVRpqCAtvocTBnSIWSWkoKWzVGEZZbJLrrytiIsNZBquVquDaYNPyDBIQrS"), }, + { .name = IOV("aotaAf"), .value = IOV("rtwGFjXklUCMlaYSfWTlmVdjXUixmBeZeYDAXMeBoCSmeqaoIZ"), }, + { .name = IOV("WVFJJPzRmdqKqjah"), .value = IOV("QYSprcliubNzKwdzdnqAqIuWiAhcdVCRHhteQsHdGPs"), }, + { .name = IOV("xHjwZXKXSELDwAfS"), .value = IOV("fwcCGqJTcJewPIW"), }, + { .name = IOV("YlxxzKtLSB"), .value = IOV("qivOMsGBMEVzPuftygIhsFvKHUEUrblxpFeOK"), }, + { .name = IOV("lSwxiMz"), .value = IOV("iAEjhULrWkncYCjUZOMpRajDnswMkkSPbqYEoarymertCUnffkPuemZaaqlSmIFGKvFjO"), }, + { .name = IOV("twWS"), .value = IOV("wsPGNuYEGgzgWuGLjtKHfieLoQhOLmxtSlqOLiJAn"), }, + { .name = IOV("fGWPEgXxNXhjCqwFzmBl"), .value = IOV("ICyWxaKjjlTrozUqgwgFsSVkZCYLwj"), }, + { .name = IOV("RtcIweeeBSmVy"), .value = IOV("N"), }, + { .name = IOV("PzDvhMKoOiLmmJJdJfS"), .value = IOV("XIpRrvkRJQNbFMYWmrtsxsIKxa"), }, + { .name = IOV("TmUDpiRewFMAuNTNn"), .value = IOV("ltJKPgyXp"), }, + { .name = IOV("FGGQSF"), .value = IOV("WuIlmvKmEuJnOBCsSCpeTFIFUAhoNHCiLHOEhghwvxfpFpCCcCCmksAmgbw"), }, + { .name = IOV("GMSBeZRIzzGzwH"), .value = IOV("wsAZhlDQxLlhTFduyHp"), }, + { .name = IOV("qZpEg"), .value = IOV("i"), }, + { .name = IOV("IszOffPaqutzCpEG"), .value = IOV("E"), }, + { .name = IOV("xBemfanIjhDUDyqySH"), .value = IOV("YSlsyudecbePdGRoxLfmXFawKfuaMFfMyCJKaea"), }, + { .name = IOV("MwyIHrdrjUlZgoKJi"), .value = IOV("xiisiVrzPPPKeJkdGNpsyvmuauwUHmKxKznaHXJWhIANdV"), }, + { .name = IOV("SpJtzSHOHc"), .value = IOV("GKeSWbIpzMZGszoRDgeWsDfecFBXhxbE"), }, + { .name = IOV("FnHk"), .value = IOV("oKVRFzyyqiztsQh"), }, + { .name = IOV("AdpDJOgPdMXuTmwtKQ"), .value = IOV("AbIkDTdXSnkoKLQGQxhdzdjuPKiPDkgscHPOgHAncMsVPPIcdNBzKnylvdokvLPVul"), }, + { .name = IOV("OrzqWXvEYyanILuuiJh"), .value = IOV("ojrpVKYBJcWIMIusxnuOxIQiuBYqtvbdKymHspdkTHvfEYUBpUoSLSXqkxBVuruonW"), }, + { .name = IOV("WWxRlzkiW"), .value = IOV("kqdQwgKDNKZgbrVWFnMgygBHeGIScfJiB"), }, + { .name = IOV("ovdmpXidbBe"), .value = IOV("XdmkJdcFWkuiiOpiPReAmqXUpbmJQDhToNAqcKjRNdkpkJbwo"), }, + { .name = IOV("yKgkgeEcKvq"), .value = IOV("fQfSbyEtyZpKLIaccoWFXCA"), }, + { .name = IOV("KNPxeuyvDa"), .value = IOV("nXp"), }, + { .name = IOV("xA"), .value = IOV("bMpNwajFjzKZseuIlnLjPtjbVYEWmwTICHjsRlxDyaaUFQlGbrGxdCGEeqdHEkeLzaCQsCRpehvsSa"), }, + { .name = IOV("GzdRJARQNPwajkMPou"), .value = IOV("WrSUmTJNIuIQXhHnIKHjdJPvHhoaZeWWZYhHgCkTRbDMbuAhEyAjOeUzhuOyDXLvELaqliAVsoQVsM"), }, + { .name = IOV("pP"), .value = IOV("ywlaXVteFqHmVbnpsZcMAuio"), }, + { .name = IOV("MzGoCETOYWSZMQXz"), .value = IOV("xDkLZcoLArTHFoWSuLZtuvPhGbwGCJxtKRsjvznOdYpdDQyIICScuQesNqaizhgHRHHuoa"), }, + { .name = IOV("lbum"), .value = IOV("sSJjioicIatEYRTDXOsiWbmTmlERFzZHKTGlBnaDyALLdPzlYJAxDVEwjwGFjQmqFbUiCQofvfjcACHd"), }, + { .name = IOV("QfrgIHENrphEebpvDWcH"), .value = IOV("VpeMOVTMkvoMGUjXlSEyNOaKutefeObAfBJQITIfccfQaSEtcQcOZsqEFwkEHmM"), }, + { .name = IOV("AJsKHb"), .value = IOV("GoYDtWTvNUZodwTzJZvCQndOieEIFZHWlSCrkBxJlLuTxTkvgyLDEowmJEcqx"), }, + { .name = IOV("kKDlQCYVZCCfdLGdeKZc"), .value = IOV("VMVLZpUlorFLYDcDseELSG"), }, + { .name = IOV("lOPyaPwboCYY"), .value = IOV("MijuxYPOgODdSvzpJIRkatopLSgK"), }, + { .name = IOV("zRAwwMZChUZtJfyytUKJ"), .value = IOV("kZznbHWPYHJQTVLFhVSJangsBJFOZiCXchaKkqVOcbeGNaJHcJZZAtuclxepIzHFbObErVyeN"), }, + { .name = IOV("AuB"), .value = IOV("SPjsYnrvVZMtGeyizmHVGBzkeqLPxKNKuyYYzshdGlY"), }, + { .name = IOV("UIvBMUjcTziNHbG"), .value = IOV("jhiosNJHlKSuzWlPRpwfbbPoaEYb"), }, + { .name = IOV("h"), .value = IOV("MnKLNxWXruuIYrVSMaMiuCcQYRXPpBZxBfNi"), }, + { .name = IOV("ED"), .value = IOV("WVaKayWztFqbbsGrFtuaJSwkT"), }, + { .name = IOV("BkkSrShd"), .value = IOV("KXLfpYDrTDxKXDeUiPZZjqydnJzmqPhecXArMZXBJtEpRUwFyf"), }, + { .name = IOV("SWbPjtrxeaMmYLiwCVK"), .value = IOV("sgtSXUUJZcwcYgLlaOooTpQZT"), }, + { .name = IOV("kAgUd"), .value = IOV("EPFpSahisdJsvFihXCjZitJpqGaeeeFSiFJa"), }, + { .name = IOV("lDKbqOS"), .value = IOV("yalzyGVnvsfMq"), }, + { .name = IOV("suT"), .value = IOV("hxJTrsuWYcTTqzbpwHDKfLnJvpQehjvyhyDjFbYuUfroaUBIKqLfXwQAujOgbpNMqOScRl"), }, + { .name = IOV("Vpck"), .value = IOV("cKTOdQwabzAmlgEzAiZrDmiZa"), }, + { .name = IOV("sytSnuqJj"), .value = IOV("ZDXmYJaxYKyqLlaTXuB"), }, + { .name = IOV("rnMmhWpSeclALklrZZew"), .value = IOV("iSWEByJoTfEFcRNyOjnAwNpyYopCMmUwYPet"), }, + { .name = IOV("qkitZYMSElzowxqimEcE"), .value = IOV("OUPWuJXSFPRhrrJAQASgbpFdloWCjMJBrzoZWrjjcNUlRLbwIemWEjVLfyAhrR"), }, + { .name = IOV("grCMt"), .value = IOV("gq"), }, + { .name = IOV("OWNhzDWyysIxOF"), .value = IOV("dtMuEogtrqqBOYXPQmkKTtLpxOsChMRzKXqvgmbfWtyqUNsBiNNw"), }, + { .name = IOV("xUWLXwnLD"), .value = IOV("EwSYiiV"), }, + { .name = IOV("DFWorfm"), .value = IOV("rHtjEMNilsJBvbsMhrYlUHnbRrB"), }, + { .name = IOV("iQzWQr"), .value = IOV("fvPBiOxeHikHUhns"), }, + { .name = IOV("JHwd"), .value = IOV("eGHdSAaIyAZDDDwQWHho"), }, + { .name = IOV("lbPRBA"), .value = IOV("ekXYHKZbcuzLuDpzKQBvUFcYRdvWTlmOixfZF"), }, + { .name = IOV("HCqCnBSOeFtUXULi"), .value = IOV("VzmonOHrCpjrQKInFxtRSnYaWMgl"), }, + { .name = IOV("gwbjdrPDNuvYyXxUM"), .value = IOV("aIBFnXfW"), }, + { .name = IOV("qhfCeNizYdbWoQkcz"), .value = IOV("aRddOcWJsrAvfwnosVQOYXRgwbErMelaMsbmOuEQJGPFQZiDUXnZDzUUthnIjrrzDcMGWjOE"), }, + { .name = IOV("wwBaRLGHd"), .value = IOV("gSdkzwxOiloLSxuUcBbZJA"), }, + { .name = IOV("ISxPUGlkyzUf"), .value = IOV("KiLeUyMIdGBkrXIDazLTTcn"), }, + { .name = IOV("ItHJZkpMIoMuBPftkXJT"), .value = IOV("TvToINGIwQclDrdOileLynDcXYeFOiCshUvDxmzTiSjgLZJwvJfBqYXsEaSAHqwBjBBthAzvemwFyw"), }, + { .name = IOV("AALbnakjr"), .value = IOV("OJfNOrncqvzaGJWReyzCwpkJQZTHlJlwTApvOTBOyrwPJWiWZNvuBkqXlhHz"), }, + { .name = IOV("kXpZmPTrJHl"), .value = IOV("pQBeidtvnQLZNnNuIuHGPoaaJifFTPDBbbNXyMflBFHiGpZShQwwUpgpCRBPJdzVkZhFGePupMmcXkfn"), }, + { .name = IOV("bEPllk"), .value = IOV("wAPnlDXqippmAfNVBxQdjsSGbPpzEtTMaBPbqMxZOrkAUlhOUBoXcbco"), }, + { .name = IOV("wCoSjdLvBVDDjqPQL"), .value = IOV("AdYejLltjXlJEHCbVwQPGg"), }, + { .name = IOV("OylxWxlRveVrU"), .value = IOV("uckgxFxy"), }, + { .name = IOV("TsuVNamMmbOyFA"), .value = IOV("wLNMEQKMnvnZkkCRAdsQHDoaqtSOKMAZfdXkn"), }, + { .name = IOV("oVbYxXgExMJxWPsvsAwT"), .value = IOV("tsEzwl"), }, + { .name = IOV("gefkHYfPZgWifAFmkO"), .value = IOV("tQ"), }, + { .name = IOV("nrvUgepOV"), .value = IOV("rBdVdCryGYlhnboY"), }, + { .name = IOV("GHiTbZ"), .value = IOV("MnhMWtvJOGJIcsSxVxZuA"), }, + { .name = IOV("uqPxsOoGOCa"), .value = IOV("JOIgSfboVtDABydMvGjfzLPyZvUwarfXyzZNdGa"), }, + { .name = IOV("DIVaHCztdWHtA"), .value = IOV("RAsIlRPo"), }, + { .name = IOV("caDDriYFgjZ"), .value = IOV("EPejVjmDYeKdrwuWTbPetlCmbaDGXGTNyJZq"), }, + { .name = IOV("CpLua"), .value = IOV("KTtGgfJhKXlEartdWSAratLIdoPgfzksHVQENoewMdxxszaYagrdXdJlxytjEm"), }, + { .name = IOV("PYfZPsKlUjOFu"), .value = IOV("TlHHejqHEZnHOHGZZAlvxuE"), }, + { .name = IOV("ZAz"), .value = IOV("xhBhBkzSTtrFFXganghFOJMEoFvyAHyZGb"), }, + { .name = IOV("KgojEDMT"), .value = IOV("gLrvvRBuZGOSFmqmsPwHiecIjULcNLtXfvvleeFaTRIXkonocOTwcGZtZSWHMEhmzXTCwkpZwL"), }, + { .name = IOV("RKRxzIFq"), .value = IOV("RnIJMtxdpYrtigPmeVozyirlwjFvavJExxFmwgjYjt"), }, + { .name = IOV("sr"), .value = IOV("whJzPXfxDIdsEVGTSCfmcxQnNvcGaeQEscALgwshvGRuDzuuIxeMuXqzPkfSwRCfMRqKgYndD"), }, + { .name = IOV("aKGBhV"), .value = IOV("HIYWzzQMxnutWvrhEChwzZuGLBQOmGiWPNvGzUswNWXgpduuCD"), }, + { .name = IOV("KCQcovgNNBhlOSPiXP"), .value = IOV("LquyUhzWVanqHUKzJErcfhwwROmANUlYwzjgKQAzDODZbQviAfWrsClBpXVpH"), }, + { .name = IOV("AbkBE"), .value = IOV("BVyAPMEiZpMYjXHdTYaVJTQpmKWLitYoVaNIgvRRmROmDDEYustfSsUUEQnaqsScInkgVueglftb"), }, + { .name = IOV("xdidCPLGLmLoiQHWMDTx"), .value = IOV("zzDpAIiBdBYxIyeofdilLZCXqDlyMsbmGHiVzNDCnBTrPwkwQcMUoOIFPMHiHotIRd"), }, + { .name = IOV("MmLWEqPOQOLSf"), .value = IOV("ZjKrSoYuPaOaPrcnboXheQQUKsFPMoZPIuVivYNPuZhYKdSqhSqPKYOhBOzua"), }, + { .name = IOV("wqstrrKbZuHmhwl"), .value = IOV("fHUYZN"), }, + { .name = IOV("EXqSQLpeAPOFxXvIxua"), .value = IOV("fjekTTSGkbmVteelkRhgsuluCBiWoSDdYKVswgTmoKmvFLKpqEradaTUpiOXfQqgPtCITJY"), }, + { .name = IOV("RHihftgdPmWV"), .value = IOV("nRdxHvRSBzOe"), }, + { .name = IOV("deHAwfEVJOrSz"), .value = IOV("UKxqj"), }, + { .name = IOV("Bqrvw"), .value = IOV("sAsZvlCboSnmPwkZbsUIxSugcIcldpBBGPm"), }, + { .name = IOV("MquBOF"), .value = IOV("xjKXWBYzJ"), }, + { .name = IOV("R"), .value = IOV("CUvnYzOvcQWlieCxhIzgyygXshZldjZtPrdGPzcGuswPGhrLqcfhweWbOPeqRETjArpE"), }, + { .name = IOV("XJGaWGtv"), .value = IOV("ORXHlKsufYdlAvMJZ"), }, + { .name = IOV("eEgaZTCMWXuwvs"), .value = IOV("goiUAsHioFl"), }, + { .name = IOV("NDfBjRyCcWxiLQwCDh"), .value = IOV("rBPyDjdHXZrcBeZfUBm"), }, + { .name = IOV("VJnGsUcBtTN"), .value = IOV("fWIXEAhCdxxghbLLcQTDNNemETT"), }, + { .name = IOV("QptubakEiawrhPdW"), .value = IOV("YTORcuehvcaTQQniBmscjzLApOhQraULxGDjMxDiucVueqOh"), }, + { .name = IOV("PJjQVGAkEXbzyltuPYM"), .value = IOV("yXuLGMSrJjhuHDQNzXTRV"), }, + { .name = IOV("ySxOsiMgOVWNi"), .value = IOV("jwLTJQRjkrTcylyiSmS"), }, + { .name = IOV("km"), .value = IOV("fUVMiBXjstNSdSbIZZpIWltSxFqibYjH"), }, + { .name = IOV("vcEkocT"), .value = IOV("GBJPhlrTbWTeBeHCqRRbYBRJKKxXSKOmnCNog"), }, + { .name = IOV("RkqTgIx"), .value = IOV("kLosbZEURrQgqBixvXYnoYKZmXcEFxATcTiskMhHkEdTYXcOjfOlLWhXSaIYLYTXUyYz"), }, + { .name = IOV("bjmRKLqDaCYyjbvk"), .value = IOV("RuuOIPVMOCJaCQLnsHeYocMLyCdWcrsEiqsKblxAbXdoUhQflW"), }, + { .name = IOV("eMFqKbCoBfWCnU"), .value = IOV("wpjZPUHnUqVaThZMzDfzcmVNYLSaUzTWjUaNHPGToXgWCzYlzXXPsqRoVtZmgcblGkVyRnHfEaMw"), }, + { .name = IOV("dEzMwsE"), .value = IOV("SBQFGmhQXPemkQyPEXZXtGeURUoOhetVNJowEOEsKUMSHzwSaojRzOBJjaevUlbexbbEjcYGYBVPjyj"), }, + { .name = IOV("Va"), .value = IOV("cLCvdJtSwMeVKhxFJAhVZKRhcYApVSPPOlu"), }, + { .name = IOV("eXlfgC"), .value = IOV("NyZcoqQYSQcHEMNDCyUScgJFuRMOOMjKZ"), }, + { .name = IOV("TEGHzaCW"), .value = IOV("VnDOqnASpfHCjKdkXsKdhFZjRLdKIupuySwRopeeaJwgY"), }, + { .name = IOV("KfNdFnTnPaQ"), .value = IOV("OPFogKshipkjZHgOgcShSOQCrdZyQvmcyKmFOjxNArAIKxMyyUiSOEGuTFFo"), }, + { .name = IOV("mROOqOeNTDYWGEnM"), .value = IOV("zfUWqlpGQqtC"), }, + { .name = IOV("NZPK"), .value = IOV("gMVCLmzGhqxfEPAyGaualbWDZqXqEcFihmmoUymBOcTeLnomE"), }, + { .name = IOV("yijYAKDkhoDjAzrY"), .value = IOV("hkVJsvzmkEALpj"), }, + { .name = IOV("hKcoYdCqVEqtxpXTPt"), .value = IOV("uhiIdVSANkKLBicPMrFuQldOUVDcpXesgpTcRUVxgXiCbitFTZUqqXhntNWVgTffXmUKPxyVwhngKnIB"), }, + { .name = IOV("ZF"), .value = IOV("IOqdNmmJTcoRPXWrEJcveBqHRdsHnooCLkfvUelocKRawxMhWqdZzOQCS"), }, + { .name = IOV("vkAODELghiqE"), .value = IOV("vYSrHveZmvtRYMlIKKWgMOpfsOxUaFYkmfpBunHaGZZDKOvPvrTAnyTHhNsOjRHTgKoqfW"), }, + { .name = IOV("VUibYJhOhuLoeE"), .value = IOV("qTJOAUpuXnhSqcaxtgKnEqWKgHYjjyMPhenXRsRUMyUiLRnUdYthA"), }, + { .name = IOV("jh"), .value = IOV("USGMmBpsuxNbniFmPeypqyuYOPjMUaseDFzHHaovQUJRaKRbZpzCrqLwptPwuLajyGTLVhjPWLovH"), }, + { .name = IOV("PTBupkcMUleViitWl"), .value = IOV("FxLGirbwyiBvmeKeycjKIxvYoHlVtivdKUDaChGEzMvMrOVHmXmJJuP"), }, + { .name = IOV("VffGErb"), .value = IOV("UjCg"), }, + { .name = IOV("dRBHRlFdFXfYBMOUvL"), .value = IOV("eoWIeny"), }, + { .name = IOV("FsjPVMtpGYd"), .value = IOV("tJGpzaXkmSSVTpclZyiKkgMuiaQvxfEWCJtWdcyXUkG"), }, + { .name = IOV("wmgDzAqNDMHh"), .value = IOV("uraLXecjbuOFJorGQdaGPTLaCMzJHzPLICRmmxQFwBuBXJQLNTpIoqDnuYQvOUMxJdwnRTDlG"), }, + { .name = IOV("DVqNItsRPznHANC"), .value = IOV("rWGNXaijAZToKLgAddCMMYHzmfhmJLqsMx"), }, + { .name = IOV("XRWVES"), .value = IOV("hBXfyStxoBmwqIgfpfzOxWIouhfFisMUpHhYPesnTMToCiQWYDoEECcJXFxOqOLAZ"), }, + { .name = IOV("PYRazdRLQi"), .value = IOV("xavFM"), }, + { .name = IOV("xX"), .value = IOV("DmOKOZ"), }, + { .name = IOV("f"), .value = IOV("wVMNsbievsdxfmeCuYVjNLonTSiOzEzUbBbYhmROJFgBYJxZPXfFAIyhvwoDywKf"), }, + { .name = IOV("DaZvFsTawefVmpY"), .value = IOV("FYBQ"), }, + { .name = IOV("YfJ"), .value = IOV("VWyxXOdSWKGQNpwHLbxBGsUlxZfIJdtxZrAXMcvhlXztCOfqhFKhhHwKLmNQGwEuZAxFCGDoClvy"), }, + { .name = IOV("Bn"), .value = IOV("CvjiwKGQbBeIGCekRGfgYkodHCFdRVzXHSNPEJaVNHYB"), }, + { .name = IOV("tmFrwNPB"), .value = IOV("iUcNDsUztQdOcYqQXrnIBNhoqsPjDIikNOsYgMJRecqWNvPUXwfEuaEUHXB"), }, + { .name = IOV("Yv"), .value = IOV("c"), }, + { .name = IOV("Vs"), .value = IOV("EwqSuoQuwMuJdoagfp"), }, + { .name = IOV("z"), .value = IOV("paUzUtFhfJoXmJjJACKcKSunTgAYHcuekdsfroQhnIFidZkTKcplqCWNignjGyTJKiWcDPVvbisDIal"), }, + { .name = IOV("Vtqr"), .value = IOV("kuHyHcsnKXzrfXKJdHhJVJlWWiPZFgXyDnbPrGkaBFUrvcrNKFbRcdFAQu"), }, + { .name = IOV("QyAaER"), .value = IOV("QzyISgbvKrxraTORtvGLgfIegZggigHtW"), }, + { .name = IOV("QjUjsGhgpmeRGoXqE"), .value = IOV("RSdRdRldOJhyaYfHJ"), }, + { .name = IOV("gOYvrPYNE"), .value = IOV("toDjlAzKmLvAlLkdNIDHDmAiDHpSroTVDGNihRrwsgLjP"), }, + { .name = IOV("VHEDq"), .value = IOV("qFImttLlcaPRhceOHAioKThcbTPyrpcqrqUEMyUiiQttkjpZfzhVXaNzsbOmuRM"), }, + { .name = IOV("wzGtFCYKJGm"), .value = IOV("oHhymPEViGLPuuuLMSPmpES"), }, + { .name = IOV("hHpKWIansL"), .value = IOV("rxKurjInkenHFvBIsbXtOTOWJVECzGKCKVBZaEIAkqqRLeaMJGYSn"), }, + { .name = IOV("aFdUlpQQzXeBZKPQstBY"), .value = IOV("mjQwsfmMkZlfotqytNfnwXcKohNy"), }, + { .name = IOV("LtEm"), .value = IOV("HPJZOiydhbsBAuoRuiSNhEWUbnvkyNhwwhIxgG"), }, + { .name = IOV("ABqaFV"), .value = IOV("HBKLcCuRCdaMsbrJMprLcRzBMACkzSKpzlBZrOvXuTXvtQtyoBQtAaouuwkmfMxgXDRkPKYOXbcs"), }, + { .name = IOV("UGnIjbHVhSVAK"), .value = IOV("GtXfKglUnmjZeoeeomisqNdArpYBXVncTy"), }, + { .name = IOV("dNlUVvL"), .value = IOV("tVPstlIqCbwKqpHKqHmuSXbxRcmgrUERffTflATnafZZztGhiAzE"), }, + { .name = IOV("zZqR"), .value = IOV("jUdXyHoySiFFBTBDHAbjdFHChkHeTiBKsxrKnSr"), }, + { .name = IOV("HyWaCU"), .value = IOV("QeQYYmgurLpDjzuJkoUrrlUmnVxlLyobyshiBioSfIvqNehGDiMNvsBWTrGKbHFYsv"), }, + { .name = IOV("UjN"), .value = IOV("cvlSKNYSPAvtTiByGuMyCwPAyt"), }, + { .name = IOV("MGuleDd"), .value = IOV("KPqvfUjFOKgQDyaHIbbvgvHzhvG"), }, + { .name = IOV("AFTkwHg"), .value = IOV("TNNYDDjidYHYgaoZzQBjiRPuGBkLetSfbcUlZNUqsPdKLKVBeIUhVdcTuXYsdhlrTYYlxOxmM"), }, + { .name = IOV("GTyOjtqkY"), .value = IOV("oIlrzjMoruDfbRpGavFvNcfjamSJjMdQmOuFkMoTshgalPPDrB"), }, + { .name = IOV("EzACOgYOd"), .value = IOV("trth"), }, + { .name = IOV("y"), .value = IOV("VYZeyrqEAlasGKcUWjIGmJVyzNQhtLsMYjVoXtfNwvsYbGgbTkWsNpgsdNzPGQnZObSLNcvJAUJVXk"), }, + { .name = IOV("zAMXWlSO"), .value = IOV("yKuXBdFHMuSjLnUILXpDZvJblhfwhNQT"), }, + { .name = IOV("YXRcgazqBdI"), .value = IOV("qPtsWgcLhFrZFefjetJdCalYtxsSFdJJTwYNMoFWxdQliiqAjkcHZnzlQeZhwUnuEsPBUTsaXGZzyIf"), }, + { .name = IOV("wymxsDiwKDlE"), .value = IOV("cVCruQFcuLCHbOhaTmJQzaaeJfTPrlSKmosevINXVcgQ"), }, + { .name = IOV("AUxh"), .value = IOV("mqaSDuuPmjXVPmGnuzPxaSjkAzwbbwxbezPlIfsIfOXKpwmweaLcxvDZKLpEifygxiQGoWtNIZW"), }, + { .name = IOV("MfyNOe"), .value = IOV("xXZHPMJIEYtKfkQfIcQnQ"), }, + { .name = IOV("ziJEfqt"), .value = IOV("duppyRbhCYiEJXtkHJorjiAmilAbBypMwkzoyGFbXwTDByTy"), }, + { .name = IOV("lqDNGdlOtKCda"), .value = IOV("BrunfgQBkCUPHHWCgqMlXmNIqKizxWfkEPjaRhumGbNBPf"), }, + { .name = IOV("oNbr"), .value = IOV("VokEohaOXlashjYObAvkWeJT"), }, + { .name = IOV("ZQJbkXoFfWjlfi"), .value = IOV("oNxtueOxFyAmtcjsbPOKnYPXtBTWcZYmBqAMREGyQmtfPwjJQHnyDzmGndfgQrKfuqlc"), }, + { .name = IOV("yB"), .value = IOV("pNXOYcoInfUVUgIHubgam"), }, + { .name = IOV("hTbZTtLf"), .value = IOV("EBqzZeegrtPGwxheRVJVhSaMePCFZFeGTcsvDxPvFKOgBlNjbinPhOg"), }, + { .name = IOV("PJe"), .value = IOV("ZdHPpsVbTAhZSvBrsQlzHNfzuMtZhOBYmCHbQwtXeYVJhBHMBYKkxWxWAPy"), }, + { .name = IOV("WaAmusojR"), .value = IOV("OCLjZgCKZKPhiqWxguwmOtLviBmMZAEKBSUQcnUWEEhNeEUNH"), }, + { .name = IOV("pQYForSsOgiV"), .value = IOV("eGOJGneIVTfHueBPNvQNdUyepeCWnYbEplHxH"), }, + { .name = IOV("wsQiROBtfJkh"), .value = IOV("XbDeTajQxQYnmETWmpWooXpmQHNlyMJQZYsfcAYDyMvNZIUCXemgQgucOxITbUw"), }, + { .name = IOV("ynThGhLqBuMo"), .value = IOV("VGhPiWQsIWKqYEeqkSajNxqTP"), }, + { .name = IOV("RPEFGgIczvyxsfXyp"), .value = IOV("FNrzxD"), }, + { .name = IOV("kTip"), .value = IOV("oVfKcCVSYXkCCHJmNvHrK"), }, + { .name = IOV("e"), .value = IOV("sKiyWdFD"), }, + { .name = IOV("kWO"), .value = IOV("OWdkfLCFwrCRNoPHQHdZPCdyEVmtFNYwsXrqpAwvWbkWWULOcqyPBtXnbnjnmUTLlzY"), }, + { .name = IOV("uIFM"), .value = IOV("wtMZcQlItoRTHiezIVtuTeOhaCQosBErPrmldMy"), }, + { .name = IOV("VGrsN"), .value = IOV("OCdFVBkwIoHI"), }, + { .name = IOV("vpSiaRNgusVwbY"), .value = IOV("n"), }, + { .name = IOV("MvQxFYlzGHuCd"), .value = IOV("zFsABxKJRDmclAGFZeUv"), }, + { .name = IOV("o"), .value = IOV("yPXSUbPUaRyqdcPhIYUMwutIbhWFQLoQFqakoDNVFFsiCiIjISpDOXSiPHhJAuMPtmgcZxPwACfIj"), }, + { .name = IOV("QqO"), .value = IOV("gcYHMzkJXuAOIdWNUfwZsmOjxAn"), }, + { .name = IOV("U"), .value = IOV("HAsw"), }, + { .name = IOV("Hvr"), .value = IOV("bmuBaMBoOeDnKsnJOKhdBByohedSA"), }, + { .name = IOV("tBwSvLPVtEQagqnxdytu"), .value = IOV("gHDnQElCb"), }, + { .name = IOV("txqsWWAMglkvd"), .value = IOV("AXOrCBVVpRhLCbaIoBqESdyizbBlYgrQgrrGeVhAVnBsva"), }, + { .name = IOV("c"), .value = IOV("wKSMYgYDseXnMKKDnZdGMWkRtWxtsQAoYqfhXrjVZmdthP"), }, + { .name = IOV("QlFanEf"), .value = IOV("FFlfXSaSJYVgCtrNqlOhIEpSunjWWCr"), }, + { .name = IOV("rZTn"), .value = IOV("ShSHfXLObNqugsePuAeGrHSoUNPreUyawa"), }, + { .name = IOV("ytNwNKhRM"), .value = IOV("IksBjommLCsPgckYoinzFPVQRqCmnLGgpZezwHotWxGCLYOlWnZICnhUwPYwY"), }, + { .name = IOV("yazGZlwnoqSoNiwLjv"), .value = IOV("lvVpEQrFZRfRHdXDrWYYXHMOzofCeImnUoTONNMKlPjiliahramGYmQvCskMSfn"), }, + { .name = IOV("GlFmLoIxsgViVdgLB"), .value = IOV("IafnhnLvMxBDXcBKBZCKtuyUZgCVFBeERDGDoQQND"), }, + { .name = IOV("wRVxyggzF"), .value = IOV("bkVYKzepcYVvpqmzdinVptCaYJwbBkAPpXzgXrDOJZHqsnpHlJnqCiDwpPSJbcUb"), }, + { .name = IOV("cYkCe"), .value = IOV("RygBvpcRCTyOrXIxKZSIZDgYkXROY"), }, + { .name = IOV("CuXmbNscpn"), .value = IOV("uBkqNLTxhWIxPBjAAJntkMgsWHPeWFYCgkQdcdifCfPmLglxBHOKMfRMyAvdHUZvtPalNinDSqZro"), }, + { .name = IOV("iKUnIgoiRvaFl"), .value = IOV("GLlWorqWlZSpPxlVzRsHnvGzrwLJnLmhIfFvitXPtQbcRLnhEezvbOOIXhaKPRQIDNzeziBPOVZW"), }, + { .name = IOV("tgREkTKpXekRrPRE"), .value = IOV("JdpnoZrFcAfntcOoQolTXjFAH"), }, + { .name = IOV("ABqOESvBnkoJQeE"), .value = IOV("tiCFHLtWJyDWCpcBVGfGqkrQOttWesseVR"), }, + { .name = IOV("fpElFxNisbacn"), .value = IOV("rdIVUvUaURPcaqzQWxtzOYuzrRrxxrkZKkVAMfkW"), }, + { .name = IOV("TUwrrmgco"), .value = IOV("LnfnZKh"), }, + { .name = IOV("MVBLtcuVMI"), .value = IOV("F"), }, + { .name = IOV("ApyfQzkxsEhm"), .value = IOV("EbloHwmfWeIkqlwwvaHamlgpLplSv"), }, + { .name = IOV("mPzrPisrDcyzqY"), .value = IOV("bnkvPqRb"), }, + { .name = IOV("trcsyEVnDLs"), .value = IOV("xkVYsAEvOkOWaVGDDnuyeWqDmatgzutfLFJvQhMSIiByc"), }, + { .name = IOV("KYBZhH"), .value = IOV("ARctasIPdASSNhLxNQpcQMiZDMoihfNmYpUEiHVzNITOgVSsjrLfXbNZaRLLyp"), }, + { .name = IOV("xScEtqoHpJdMzSxvLr"), .value = IOV("TsyRpjxqKOPADKf"), }, + { .name = IOV("FfIGNsDXAnWdqr"), .value = IOV("DTYH"), }, + { .name = IOV("TT"), .value = IOV("VcNFSdsraOCrkmAPIWeivizyIBGxTAWgHImplQWOXUPLzuaypOuPGATcxKFqwEZuHANhxZYTYRFFRd"), }, + { .name = IOV("QzFwaBIXdyELVINajKDG"), .value = IOV("pdQeiLucOGvkUxzNPODSowzBpUfZKDMdafzPuIsHsBfuoMkPUFvGJCeWDwtRmRSNGePSaXfGnXVqXfjR"), }, + { .name = IOV("cOUxIeFNwgC"), .value = IOV("LjdbYxJvOFCMuObGLFDWOEMUiyJAESuTtCpAHuhsQfkquloFOQiUTheifkTLEZKvZvAnLd"), }, + { .name = IOV("lxqwdTeeXpysbFEbLok"), .value = IOV("rMeEjoX"), }, + { .name = IOV("uYQYFpwMNEDPvNtOLinQ"), .value = IOV("vecuGlHNOgPKMfhqrLuvImYXaHgLoPgm"), }, + { .name = IOV("Y"), .value = IOV("ygzDCvTPctKAxW"), }, + { .name = IOV("ZrpjMYLQaqxhzwny"), .value = IOV("VrONKVmYJzWB"), }, + { .name = IOV("BouuhqdApYllkNIfjSGJ"), .value = IOV("YrBvGdRoONvsLEvTbEKhneNRjCUATtyoHURbbAyJWOcokFocUDQcUxi"), }, + { .name = IOV("COtd"), .value = IOV("xiBhxEBpUowWtangeUIKGXWDPjruPycZo"), }, + { .name = IOV("uptbxvQIhZAeusWOME"), .value = IOV("lRYrPtMufJczeyMaxPeaUIigGTqSMbvTcMzDpDqQbsnhxoQmtZMBbhaeVOvqfnaGkcawkvJPedMNSVr"), }, + { .name = IOV("FlBnKKJOLrjLYRpoHQ"), .value = IOV("qffUrURbPmKOUpmlfbXFmFEXPJSBxtYa"), }, + { .name = IOV("SEBlwreT"), .value = IOV("ZprbmKprEoIyhIKzhFUxQTLbEDoguKHsonwSCzIXoXJZGRJkllT"), }, + { .name = IOV("ZTbsBSzEcGVTbEjV"), .value = IOV("LnbzEhyhpdfXiTUsjdwttCcdlAIBGvcRGaLcEKkunEAjarZNbZLLCSYCPwXysVeWZkdMZniDYL"), }, + { .name = IOV("KXFnDkFvjYYaXTMHswvX"), .value = IOV("XFcEzY"), }, + { .name = IOV("etQHZWHwqVAybVOehn"), .value = IOV("ikoVOjDJXfGezsFgUbBSVKyNVkoCrDLm"), }, + { .name = IOV("MVKJKjHwhemiBTQaPATW"), .value = IOV("GJSysJlC"), }, + { .name = IOV("oiVWTLLlvn"), .value = IOV("xTdkhZumBkazvOdllSUOfScjZsDgowGFYnzzZUqLliosVwu"), }, + { .name = IOV("fgNySeyKUtQmNVEVsPvA"), .value = IOV("aucVziTQtSzLOmVbFDnHELnzmlTRvsWluQXhWasrQPIkQCzOikUSlWgSvwlDyvUQDbpmyPAbPZt"), }, + { .name = IOV("GCC"), .value = IOV("hWMbwfNiUMCYzUyGcDOIHiInzGunGJQTUiLcfocarH"), }, + { .name = IOV("mGJYaKV"), .value = IOV("MIbMEImL"), }, + { .name = IOV("XBYuFNiFGZbKMmeSIy"), .value = IOV("ZSPzzlsfNjKGqyYdwTIRvdTDLXgyCVhurQCQOjxfOCThmmcFehwRQPOxNSAcKmZ"), }, + { .name = IOV("p"), .value = IOV("gaDaGFqJEyOxBLCFhhKEPcWw"), }, + { .name = IOV("S"), .value = IOV("upgOvWjFQfdvEiGBmkTQasURdQmuwLZPHDoQtuPaABJDppZuiNPFS"), }, + { .name = IOV("MjdBTuOgASH"), .value = IOV("CTStQwqJc"), }, + { .name = IOV("vrnQYTWDrxMzdVSOuH"), .value = IOV("HIsoEmDXisEXHAvBErqrgtqKkIVgTNpLCJZnxaDRIUeGpEZNLRgElP"), }, + { .name = IOV("BWuDQbfYUa"), .value = IOV("BSWRXrfuMgxR"), }, + { .name = IOV("mFkjV"), .value = IOV("cSwwECKmgksTGDvsVREvkghqEMYSzZaKPvzOqdePZ"), }, + { .name = IOV("apZUvWLqk"), .value = IOV("ludvXoqDKieGfQPQZeSCbwSGjAButISnjAtEgInkdVIoEhR"), }, + { .name = IOV("RRClIbQcRPVsIxZPwkpe"), .value = IOV("kEnJuTtKfRcxLffQdWblEBFQDmpCgBcULWlSfFAtNGbQjqDmHxsajkctdDwvEhvIHEZEseH"), }, + { .name = IOV("YbqfoFwtynYfnP"), .value = IOV("tkVtlBDbcbwVrGDHWHRljVubphEcHsXMFafiTgDdmBZYnbMCJCkIihpjNhZOekVoqJ"), }, + { .name = IOV("mFIUMmGzM"), .value = IOV("IrYoZPicWzPZhOZWhsgSRFmXHrfBFOZxjrksXwhBPbDZnCOhlZQC"), }, + { .name = IOV("mOKZNW"), .value = IOV("fwEJdxuGrhmMrlTAHxIuvFLsVCYalTXVhzBiiizXzcsbsBErCEViArXDhTxtMIEoyFtieemzEafFLkS"), }, + { .name = IOV("MIsXCLszteZPSHacIi"), .value = IOV("jJSVfzSJwQxUaPupIoAyzAePIOcvDqToOxnmfgFzRI"), }, + { .name = IOV("yQs"), .value = IOV("UzzGILdSgDMYrCZCpbbfRVygQrEQVsgwLIWvhyZmMbOoTdknHkFiZlkSuAHXObgNVEjgpbQDd"), }, + { .name = IOV("kUDdbcXwQWhHZd"), .value = IOV("NwRdwAnjmxeNmlRoMBXdtRFTRmUvQHBpgYMjDoFDGbGNJoMmXecRLtUtpNnQTKc"), }, + { .name = IOV("GknCGyCdfQreHEdn"), .value = IOV("TkyvczIUetDyQoRelktK"), }, + { .name = IOV("PYQLTBt"), .value = IOV("oybIpzbinGgrMblSncatAD"), }, + { .name = IOV("aEszBHO"), .value = IOV("LiKMtUqLRlFyWvNGHtCEKXbsMROWjdOwHevvWOtGeoeaknmvkaHDBUmSdHmZEsZfigeWPhgUOpXiR"), }, + { .name = IOV("sijaQo"), .value = IOV("InvPmnGXzUwIGocFGScEfXivHFegAotzcUjiNbYwygrHZvjrgsuLRIHOgQngthoxPcYtEm"), }, + { .name = IOV("BWQSIHaRAgzQeBOLP"), .value = IOV("EPkvXRvsaXXvQdHlFiERaMLZHGEBJMqlzDVcOuGqQzOVMzDhtKvwJsE"), }, + { .name = IOV("BCnFEBkMT"), .value = IOV("iFQGGsHwLCSIywlQmRJr"), }, + { .name = IOV("VbCHECIPMINmBvJO"), .value = IOV("mBdYYaALbLCPywktH"), }, + { .name = IOV("YhLXObupyXfpzsFECVX"), .value = IOV("adNrgkkZcZXOtwlaYHKIcJQARJryuyJlvm"), }, + { .name = IOV("WVJlpNMVBZmPnTkBRfL"), .value = IOV("ft"), }, + { .name = IOV("MkZRrIaboCxfdbgpwhH"), .value = IOV("VBPLvxeOmhEYTEMsNnOOwyAXxcVzRvfCknDBxdTZf"), }, + { .name = IOV("SIcuKoeOlezAMIEiVeY"), .value = IOV("bvIaZfAIaQhNfUWyTFfZFnKksmCzQQqMDVfaHdxlrUzASTqCuXHmLbOmOEmPywAd"), }, + { .name = IOV("KZEcxoSAwB"), .value = IOV("PfLxDaKvwriobyKIkebDPbri"), }, + { .name = IOV("xFn"), .value = IOV("VEfXMWwdcuLaPuInNHVlgmFJGslgAImfLJFbWIFXqcAGMAJVqszyWUWEAGkTqOIwTITy"), }, + { .name = IOV("rDgwR"), .value = IOV("RKPjDBf"), }, + { .name = IOV("wlvafao"), .value = IOV("o"), }, + { .name = IOV("qmwwvmVSIqKLneI"), .value = IOV("QEdjwBvIVMxSfqLoxeeZW"), }, + { .name = IOV("uWlbcXOKUEBXZdNUUO"), .value = IOV("qd"), }, + { .name = IOV("EwmKqLZOpoJBw"), .value = IOV("aumUWASQiqESBQnoEUSZlwkIWGryNYZhOQrL"), }, + { .name = IOV("GQoQJTbqO"), .value = IOV("tNswFUSZAhFmtScWsFzhxNUNCJdzkLiKmjxAOWjGqAzwEledEDYvNuKORzjhhmt"), }, + { .name = IOV("Kdvrbp"), .value = IOV("WrHdLIykypwkwBQQUrvxDAeJnOXtgAMIF"), }, + { .name = IOV("aHJgmySiz"), .value = IOV("ZAWKYJkUBRhqnMPMIYVJJjBObBuwZJilhtKiZsjWRycfeTNMzBAYanERMGD"), }, + { .name = IOV("QjIAGeKr"), .value = IOV("JxTRssWHmlsCWYBEMoXnjZPxOTqichwAOSBdENvJeO"), }, + { .name = IOV("sbPJW"), .value = IOV("nTvXDzlPizfODOPuWNlOYUCBwbcbfSkoGg"), }, + { .name = IOV("mpIniquehLoJAcim"), .value = IOV("KOopJVAzfiCswltvFjmNSfPOWQPcmWyMpiWDIoDYVIKsaTiLF"), }, + { .name = IOV("eEhf"), .value = IOV("jlTrRXIQnBKwXhlbzcwdALJBIFJkUTHYWgqpfEF"), }, + { .name = IOV("USouzIbcnCqQnSJJex"), .value = IOV("eAvrzmffhgwOtxlsbuFdetkGabEqq"), }, + { .name = IOV("Zaitii"), .value = IOV("ReBcgCpkINgGe"), }, + { .name = IOV("eeZFnQxXNCyKGxD"), .value = IOV("EHJzCRQGXaJyntCqschWZnbqmEaUsLqnZZhPPaViASgTBVeGAM"), }, + { .name = IOV("FLtgSQiTnaeNKCW"), .value = IOV("hr"), }, + { .name = IOV("SpeYkeJMCNnHMLhcpTvq"), .value = IOV("lXwgzjuMvfmPwFCwUxzJgXhSCxjWIOvmJvbEaLzmpRnb"), }, + { .name = IOV("SXCTFVhBTKJaM"), .value = IOV("yFku"), }, + { .name = IOV("R"), .value = IOV("yMBsjkSaNoLca"), }, + { .name = IOV("WRPFwEnHNcsb"), .value = IOV("vBMxaNpoqJJhcSAjm"), }, + { .name = IOV("XulYl"), .value = IOV("QisatHWMxbuHfXyrHJvsIUWNPYieDJYKhQJXPseDjhBno"), }, + { .name = IOV("y"), .value = IOV("wevOtIhMUfWxKltmgOFbiVlMTzrRvxMqdPzBlMwKZzYqUmGBbGbNJWBnNelrUrADkEnhGVMynCIvgnil"), }, + { .name = IOV("fsslqtZBWXBYlITiVFv"), .value = IOV("UWxTtKNONFVgFOpNHNeOdnOpayjemxBgeKhtGjqoEXqKwqj"), }, + { .name = IOV("FORJhZwirYDM"), .value = IOV("UNsALnXdjBmpVjimLknatNS"), }, + { .name = IOV("Ho"), .value = IOV("vAelcIbtctORgxTFdtxjxUatEyhEOUfwQW"), }, + { .name = IOV("xg"), .value = IOV("ZNBZIyFAexMMXxhXpkZNBMYnmLIyriGpxCtwHVRUyPlLxJvjDQqf"), }, + { .name = IOV("EjXCAnYfkFXgfezbRMT"), .value = IOV("XfLpPGdLFawzWhhLPtbrJxYuJfExQSFLTJRnXvfTl"), }, + { .name = IOV("SZNJsrLfrRh"), .value = IOV("QlzAHlDcGUkdwgcBGbTrNRrRnQhRztXmuBMvIVkqOsjSmv"), }, + { .name = IOV("pLkDZPWfzmMTuZvfhNjX"), .value = IOV("xJyGJRpMjQyoSRuIRInpdYCpYnYuookVOtfispRQCSunsoXTlrtacTqYILhtyG"), }, + { .name = IOV("dOdfAoaLbfPeIFDQIQJ"), .value = IOV("vR"), }, + { .name = IOV("HCnjcLEIXPTPs"), .value = IOV("YhoybSJABYQMBRrdxmGjltoJkVmafKpBuiaqXkeEPFSUFdJCEKkfYu"), }, + { .name = IOV("FZWohpq"), .value = IOV("okGqZFw"), }, + { .name = IOV("wLa"), .value = IOV("GNRYjWKbTmjHtnZbNAiDOaCujCjmHsipEaBpHlBezyNHzDcjSI"), }, + { .name = IOV("tWFbvSIEiomNEBxTIG"), .value = IOV("bARmqoaEYsKiiaBEGwZEHzrwqcKhqtzRPkwNopZPRxcYbzZbjrCDFTrgMyWOmMIzwX"), }, + { .name = IOV("LCYPrHXNIVhjVCBi"), .value = IOV("DlplxubsxVrrVcevKWVAQrXUfCDrXCmlkdsARpgHpjZIhCVniuBedWaTPoY"), }, + { .name = IOV("IZWxh"), .value = IOV("ncuUqCfxLwDWRzIGptWbdiRGcSMnHYEmgmHbdvuWWTZzfCFQdoIDsvlUUppCvCLAPa"), }, + { .name = IOV("JMSXDFyjAnpbmrX"), .value = IOV("xiwKkvdwvXMGBlEmZzSIgFmuXZWKKCuNZBgIxdpVMGDoQzCgzgeCGxEBPIpPM"), }, + { .name = IOV("ZQszIyLPeRp"), .value = IOV("GCkZypuFPqUomzkxgJPoiMPszRWVJdwfpBBfCwUrabqoUZm"), }, + { .name = IOV("wZvU"), .value = IOV("xoAQivgapKTBhlckVReSJsfWEgtfvZScMlvQysyXyPultllwvhOFxTaPiykDKyVgcXWhsdtaR"), }, + { .name = IOV("eQSSlTjnBBF"), .value = IOV("iDUTBrJTvmUFVGNIPHVwCrKVYLikaqDYQt"), }, + { .name = IOV("aQ"), .value = IOV("SEXahhhIEeqZAkOJpNMoZyCwEg"), }, + { .name = IOV("sQXmQwhnLozl"), .value = IOV("TVPjljXfWHhHF"), }, + { .name = IOV("TCetWKZGtzK"), .value = IOV("fjsOdddAWCmyTbl"), }, + { .name = IOV("IM"), .value = IOV("o"), }, + { .name = IOV("stU"), .value = IOV("HWMmRyjZwSKJERJpsCerqXowmnZYxKIwCcWlsDXyxshufXTuMzARFnUuTioSUeMdbWotNJoGUdPm"), }, + { .name = IOV("OjQQIgvoGZ"), .value = IOV("xnYCeQLJbVVeWFaHqbWirxyylTRxJqeLzdVAJiBdVOEIxokNMvyZKMgZ"), }, + { .name = IOV("uRbtNpJHOUpzAQZEo"), .value = IOV("GidplNMqLduXjLYrNweeQgtEmzCvrpUsZDswAtKG"), }, + { .name = IOV("nYKyFAaJpGgxTvvhO"), .value = IOV("zQmVBNahttpWDQGWaKIAPamNnJVPPhWIZgwUXkKgzojocUjmrKOVYhQFPQtGrKljIHtFmyJ"), }, + { .name = IOV("IkbKUQBFxgKxM"), .value = IOV("xbmacJQqOrMlnaQWsakEzSYixHFeuzMYhBHXuPLIjL"), }, + { .name = IOV("LSYNmfMjewyTGfgBcTSq"), .value = IOV("jxJIEorbZjbUMNnyfWmwHSziFDDfvsoeamHclLTNvydfsbKEuAQVITFToGYsIqbyAQnOEZFgc"), }, + { .name = IOV("hJ"), .value = IOV("VpedWTKxOCXjZzduFnGnGWFfSQFVcoRDQrqFIOrMfmyt"), }, + { .name = IOV("ChvRoQYPSwgKJBYSf"), .value = IOV("MJYwFXZXRaWuoEGkFCHtlbiyKrnPxMXww"), }, + { .name = IOV("qttxqBEJWyd"), .value = IOV("EeEbIoxTOkvOabOVrNGdGlnSurJILHBOQcLkVYZzEsulMWbA"), }, + { .name = IOV("KBXLSAyimHtbKJOI"), .value = IOV("gdkTFMeFEYeWevnVIFNrYVoVgTPXHiyTBgCBVgtDKGdaBxFwVpfGGzqaJThJVves"), }, + { .name = IOV("GbwJRmScGX"), .value = IOV("WSguypTVCjdeOnLDPdMCbqPrrJmjamWSGzCR"), }, + { .name = IOV("wtSbOyyDDpKheABe"), .value = IOV("ciAtMQqoPjyvryY"), }, + { .name = IOV("TowrrBETdKvWwMBJW"), .value = IOV("HAlmzkScZnbaOWRhAaFwnLTbbTXUouZovcxgSUMkyZaHKRDHalintPL"), }, + { .name = IOV("QiOmIpwEFNrwcpZGp"), .value = IOV("tsdhSQbLsiiZLvYWMcfPuuDTqBWewmiEgxmQnekkHKDg"), }, + { .name = IOV("wXsgaIkWGee"), .value = IOV("vEbjeIxBKEfVffnBOJfFpEyYagHKkArrcPzDGKORRWTPPBHEreJbAZiphyrpvTPOQW"), }, + { .name = IOV("AhzcIwRWPNrd"), .value = IOV("LIvjVllveSroYhdtwJPayGEizabLyzqIu"), }, + { .name = IOV("Nlinl"), .value = IOV("HnM"), }, + { .name = IOV("aiEDHeUQqgukwtjx"), .value = IOV("KcUJCOdmZuffmJVJxPCFzJnGKvRGKAyLqBCEwpmCvKrQTFsSBpAXqcHiWd"), }, + { .name = IOV("gvlkQm"), .value = IOV("RLXDSKBYKOMBVAuKeuFXkRVurSQFfYrABtKmEkZTS"), }, + { .name = IOV("eQBrAgmvkkzaBEXO"), .value = IOV("asSfTPFxdjZTkZoTEZsYQhsaUkjMXrzww"), }, + { .name = IOV("lTkzJQv"), .value = IOV("TEMhlHMOTvQmSYfrlMQlDQJgmJLhwBeulPlMlOERUJSbaDctQRCqUZlycSBE"), }, + { .name = IOV("QVIkKdKtRGEWS"), .value = IOV("HDEUUXEquCvKjNgqqyYJhmoiKMlIJEhkOpHVfRIMunuLj"), }, + { .name = IOV("JptP"), .value = IOV("WlujGREUNSdxe"), }, + { .name = IOV("IpZF"), .value = IOV("ODgevKn"), }, + { .name = IOV("jMpqtts"), .value = IOV("kpVWPV"), }, + { .name = IOV("YjL"), .value = IOV("hapSCEyvCHSYJuohGwQ"), }, + { .name = IOV("HqOQVQAeubhRPZvJXQa"), .value = IOV("vsuDrYlcgFvGfpCpwqruBVBzzPDiQmGuJzJgxBuS"), }, + { .name = IOV("JcYeaDzzkZBWeTbCap"), .value = IOV("SeAgmZKujmzrxAtuAAkwuyVAZljovZ"), }, + { .name = IOV("QZNdYADc"), .value = IOV("tZmfdcWdHknJbAmZtSoAYuFdQFsrlNcPHEcVTCZWppTEBTWihtplCTElXMlPTmDDYGdQzwknFYdbsdVS"), }, + { .name = IOV("x"), .value = IOV("fCXkzmWuLSLSOUyljpFolICPcEgLxWRzhOZqveZvHXSlJpPHGicxqdemWwtBXRAEbfxMljZzxzMxEB"), }, + { .name = IOV("MgL"), .value = IOV("RicvjK"), }, + { .name = IOV("tapprChivUShnOZKsyp"), .value = IOV("aKKhyBmpBVnbRRCTVCvxwjrHn"), }, + { .name = IOV("NMZlUwZPaiwdsGfNAJb"), .value = IOV("xjbiMaUedAagaDxssjxQMtWSqTuzQLngMYVTfgIlsqSswe"), }, + { .name = IOV("sNsMTKGSs"), .value = IOV("mWsSVDcWIxarBTSQOJOOGoDyhaAnHnsGkaMhmCPNbLXKbAvrMcXcyfvnbCHEeRaDPTJrNEReqjW"), }, + { .name = IOV("T"), .value = IOV("FycwJiDuXtuzydPaLynscrR"), }, + { .name = IOV("uzCtVhkt"), .value = IOV("qBORVLOkoYcYVF"), }, + { .name = IOV("FsKrRy"), .value = IOV("cChVbAsiRcKPiAqs"), }, + { .name = IOV("csZlfnRRvEDimlvp"), .value = IOV("TiuFeG"), }, + { .name = IOV("WZNNYGFJoAAJASj"), .value = IOV("PgMKNcaIoopvCkHmrSsTbZcfi"), }, + { .name = IOV("MVvOlzkCTYVwuvNlcSdd"), .value = IOV("GQuUy"), }, + { .name = IOV("FxhBOtrtvZcqBCARdAwm"), .value = IOV("EciZgFcBMybBthMKYSrwpptkTIDojWnmEsjrewWFFLwlCPvMcEsMaHfULiFuAfroB"), }, + { .name = IOV("AHwkoXNMRTggxWNsz"), .value = IOV("uelZqRJbtiVHoLVmgTqDpkiURQCtNqumQBwnFHTYYZeolPJRMmNLoSkTWCverwvFCRrkMxmUSUPkuTn"), }, + { .name = IOV("QUdHAawNQaoTef"), .value = IOV("pgvtcVxPELpJbXUNGLUmOhEkjqgLqEmpA"), }, + { .name = IOV("q"), .value = IOV("GpDlWuRRaYVmSudzDzmxBaPTuzebMjPXOiXvdVKvavlAwamHnWvoQT"), }, + { .name = IOV("gXS"), .value = IOV("rTRBXCbqOrbmdqvzMuiKaucwSEDrzVIMPMosbUoiBuP"), }, + { .name = IOV("ibfnBSWBFjuYsyN"), .value = IOV("wzruGTUsyrAnClzGncVwXJsyFfelRoLMhC"), }, + { .name = IOV("FVfPFXAHpkCW"), .value = IOV("HcLnYQnzAVfAsulZYoIZGYFsZsVcqYcVZBptayfAljF"), }, + { .name = IOV("LAvngKeWOwSseARRH"), .value = IOV("dVUlLfUdeKRoiiWdTBZyotbSBSmWmoQBAMTzcWQGusuXFFDDgwEuIBurUFCLMymtdYjVQuJpEgqpe"), }, + { .name = IOV("XF"), .value = IOV("eSDITMQtaDUQARgwVcpBOooFhnMeEeFWySeRXcZfTe"), }, + { .name = IOV("qTXGvvQHjBFYc"), .value = IOV("yRemKkXQpt"), }, + { .name = IOV("njreaYcKF"), .value = IOV("jKrVCGsDkqaPlzbrtwTBmDtMKfjTdQiMnGYmpyVPZvxWfjlkPXh"), }, + { .name = IOV("xcnht"), .value = IOV("QXOyQuDpafMvwSmrUwjixlpEgQOANUvRItnxeovRAhNZNILixdWZKRsIJfpCwtNheITV"), }, + { .name = IOV("UmtOoooirYyMs"), .value = IOV("kLIQxqeqjouEftwiyTrNWVQkD"), }, + { .name = IOV("FbRVmFsw"), .value = IOV("QSBcSXaojWMsebTxpWQeP"), }, + { .name = IOV("xwGs"), .value = IOV("AHBANWaisjRZOmIQvuMOskVpPmFKNSYVqYRPjGXORlwgcoOTuhfForJCVFdveYGFYxiWhUic"), }, + { .name = IOV("C"), .value = IOV("GNYELBAuCWKOyqdjfdXfHqYGThhlkJzyGHpgiJBYNhguGSxVcvqhtuvSANnjvjuEGRyPe"), }, + { .name = IOV("dDxjtBvY"), .value = IOV("aOzWRUQtJpchnqvvMIQWwxzCsemSGlCBz"), }, + { .name = IOV("KHVOoRrJdjuBsXBnbdx"), .value = IOV("QghufyDWsVDuJNogxdAtuPKEWRQBjGnQpHmgEsVoZNOxapqRXeV"), }, + { .name = IOV("uaIqOnynD"), .value = IOV("bucNyAgKGBjtyabeVjOEDbGMhV"), }, + { .name = IOV("fXwbuEfgPMyhimznzRi"), .value = IOV("yXzPBNvRZqDTGRfzIBrYJkkoMRfHDkg"), }, + { .name = IOV("Dr"), .value = IOV("HaHhMvryLukAdOvP"), }, + { .name = IOV("lEdyBhAgQONzXLPLA"), .value = IOV("EPuSBSkdEIdpEKfXXBfxcmJXhtkBOTsIffLLCAiiodFwRdAcZjRuWXvzBtkESPXCTedgFt"), }, + { .name = IOV("YF"), .value = IOV("nOFBJePfaPmHLQZqDbbfdzDxRaXPpvVdyZrZNLfxJEaJvfhIoITcZEveYfwLcaNqsmASDydIBHosh"), }, + { .name = IOV("ELQUZ"), .value = IOV("Qn"), }, + { .name = IOV("tnudxDKFjv"), .value = IOV("rGZlnImZZlgB"), }, + { .name = IOV("x"), .value = IOV("kWyxYfdlvncIpIDohSIDowNsTUxjxeCckAECIyPNYqKpMfPhjMpgi"), }, + { .name = IOV("MmVQdPHAeC"), .value = IOV("bhulFUhGwyCSQwiKMbLdfFvtHQfPa"), }, + { .name = IOV("hM"), .value = IOV("ZKNpZMIRgJaw"), }, + { .name = IOV("O"), .value = IOV("SoKYAJUNsDlgBpdGXiqVzVxPUvrlXu"), }, + { .name = IOV("YYWomdcjSzYxhylLJnS"), .value = IOV("UHsvwYrefQdLEtSlwLAzchbqfGjTCFDpJFfRtifOnfwrpIDXORSnSPjqfrSQMDBwQnRkcm"), }, + { .name = IOV("rrzAgByNxGM"), .value = IOV("rgfUsuKPUsqLtASBDkvsXtqA"), }, + { .name = IOV("ZmHLDamhfrzAbCPNQwN"), .value = IOV("jgonbpXsXDfiHykRbtYzvgbqskTYgLLltZXGTPNWKRnyTmvvMdFmSybUvGVzhwP"), }, + { .name = IOV("eghlanPx"), .value = IOV("kRrKVyyzKpIIxIlhig"), }, + { .name = IOV("CmdcUPP"), .value = IOV("thPAQqXRKdlZnw"), }, + { .name = IOV("ZFAKLipnEBvwKHCE"), .value = IOV("vGNaweQhodaBcayRlpWqZDuCKZETcVqpQQDuCBGDgbQrkU"), }, + { .name = IOV("huMITjudNlsPcXLIprlZ"), .value = IOV("xoKJWPeuzHinGDDINQbcCfSKfEYxBPAsbcIjcswUMUoSkrnoDSFDiIkKUfqhMcOoqKjOrZVKm"), }, + { .name = IOV("FoZYPIzzymCFu"), .value = IOV("GzgGxdxXgwsFdZleDkrNhlrhDvWjvxSqINshgncfDFTcYjyDBvF"), }, + { .name = IOV("xsQtsqJp"), .value = IOV("yACBBUDKpXmVATMqSVaizkMkfqJYOVJEjqgBShVkwIU"), }, + { .name = IOV("tii"), .value = IOV("EpQYcqIUxrFlHgPORwBtlwTqERWIUCuEwauwaFarvkTCsVRVoTPJJMZUxRWpw"), }, + { .name = IOV("mfVIrASVGYFq"), .value = IOV("ODfxbRLbBwnHwKZERYmtJxdUIHx"), }, + { .name = IOV("zHytqGuI"), .value = IOV("fClHlpGEpunbbkhgRcBuqQowEWjKdHyTFKHTrVFDxxrxPbYaYnyDZAfViUuSVP"), }, + { .name = IOV("qIJeD"), .value = IOV("YnFiVYrGKyXGEhttiWyJzwEQhLLkwSDzWkmk"), }, + { .name = IOV("JAkEyIqjJbuYEN"), .value = IOV("pqKdpQxwQDJRYAQGhDceoUhesSqfmNMcjHxBmeoOPddpYl"), }, + { .name = IOV("icMUwACrAgZMQB"), .value = IOV("mnUCCsreoGXaojOnJiJILejdFIurUNntvKEjhvdSlgKjCLmwgVfnTmnnJJcKSdcIPMklv"), }, + { .name = IOV("jNX"), .value = IOV("QaveKWuVZYXMrFkdxqsfMhPXNZgZdsrrIgqghJUSIXRrJPUsGabmJtudxDMNTMiCHJYSMovGuyMih"), }, + { .name = IOV("WH"), .value = IOV("MTiAMjJHCEbJKONCPOzlZiPfUuUmpFkpJgjBVDPSJABtv"), }, + { .name = IOV("YOeyBcdYMPqyBj"), .value = IOV("WMyfVyMPkWwlIWHXFoFptRpiL"), }, + { .name = IOV("cjafYNR"), .value = IOV("zMmoWZItpnHpIwXIPBsHInEaScbbqvDV"), }, + { .name = IOV("fmpMsKtGXemsGJLmZSU"), .value = IOV("yZHc"), }, + { .name = IOV("eFmlsyUOsjsAFhRIMr"), .value = IOV("NhLbHrdpwmUJFFOKNenikjksgJaOBtQcasyZxxTWIAVhMmTQhrxRaETpIkqwfEMggc"), }, + { .name = IOV("DfYQrUXpwGekL"), .value = IOV("pFVrmklVWilM"), }, + { .name = IOV("NKw"), .value = IOV("PyWuYFjrVHarPJXSF"), }, + { .name = IOV("uyXvrlj"), .value = IOV("EgZWDzcaeqVZNEUwwiEHCfOLGnCBmIvcwZAoVdGhVnxCKaTYRLBZeWJZOsGMqtn"), }, + { .name = IOV("bTfgbiecrRjGDofjVvyT"), .value = IOV("QGZpQkwpTJgGUDlkVopvJymPCHNKSPZoGIzGZKG"), }, + { .name = IOV("TaQQHTQTGSyJtXxAqF"), .value = IOV("SnKurFzAzfxuCNHSXHGwRbgYL"), }, + { .name = IOV("M"), .value = IOV("ZS"), }, + { .name = IOV("Q"), .value = IOV("vycUuKKymhKdyPVQFPkOdWuLLrPQTPGyOigNlVjplNTfGbsFZqXzpzPxgYBXkvedUXBIctzLXXgE"), }, + { .name = IOV("vAsJLQVgqjFEmsMvK"), .value = IOV("ndjBmawVjGTCyqlbKUYfzRYWHzHKbhIVXuFeDMoUctytYgzNIkxacEwXUzbbPHmVtBWTSePUD"), }, + { .name = IOV("FtEZmKfcTaUQvkzssW"), .value = IOV("AjdbNLbUyJsBhnN"), }, + { .name = IOV("ILTgf"), .value = IOV("hViCIMUVPtRuPTOPxpVvcFGpqcYIsiRYDMSJIzbvqQTsovVCcMFKwlqxdGSYDXUXvoKUF"), }, + { .name = IOV("tOuOiCVYisYZS"), .value = IOV("KtaXaFMrYQWfKJFHlslmYtXjCEyEkGLxAPSiE"), }, + { .name = IOV("wCDjnrcKhzeSmShL"), .value = IOV("jvdFqGjQWEjXccJjxtMbbgnWnShERCyEcPBBibsPIYFikrSHIzg"), }, + { .name = IOV("U"), .value = IOV("MNjU"), }, + { .name = IOV("dSYQVvlwGyOhNdibflw"), .value = IOV("gHt"), }, + { .name = IOV("csFylKppvtPMWGVSrfk"), .value = IOV("BvzPXhEobrGSyqfB"), }, + { .name = IOV("zBCxfIlwmtOc"), .value = IOV("VQzgBhvOtJLPjX"), }, + { .name = IOV("rjKXXPOpKVSNt"), .value = IOV("RfRFnUjGSyxxtvRMmsvMtWPSSqCkeAwyQRNFFQmkLmMlpuqMfKbiFlFzowizwubwACDsgffKsOcc"), }, + { .name = IOV("mBHJIrCtYnh"), .value = IOV("ESdZBwXJFiRbD"), }, + { .name = IOV("HVPzYkJhDpts"), .value = IOV("N"), }, + { .name = IOV("bcStJBN"), .value = IOV("IPrPZbRIBSRvZBvGwljRmwsIG"), }, + { .name = IOV("dqlilnADHdWYUaRsd"), .value = IOV("nncpszUqohdNCnEaMBLohUraezULLrgnxMFVHyQtqgaRPbMtBrQTUV"), }, + { .name = IOV("gPlfpZTuBA"), .value = IOV("OJKMRugidRZzgRrpPBSDDiuENJcjNJbSsMZvPTzP"), }, + { .name = IOV("YkbMtbiDsZbZDMsxHW"), .value = IOV("XaWcJnuencsqtJttHeOkdb"), }, + { .name = IOV("cHofAgdZKWfrHzDfm"), .value = IOV("bqhalKBfYNSmVbeUbfAddGjpUVFnfWsBSKTEQMVXu"), }, + { .name = IOV("VYtIPgHSFRk"), .value = IOV("atIIkzNBgdkqwKvujhEIJjWeOyEjHMnwDoJmgUWzNS"), }, + { .name = IOV("XN"), .value = IOV("VVOkCFdxozifJDolkvBOXoAyTCrbYdXGazJgnxjsrqLUVudfUfJKHOwfVXY"), }, + { .name = IOV("FbUS"), .value = IOV("lOwcHPCcapjdCZyRqudpndCRAl"), }, + { .name = IOV("ESRKI"), .value = IOV("EVDvEjY"), }, + { .name = IOV("gW"), .value = IOV("iUsotFaUldSIinhLdURfwKBZPNfaqTUsLPivwTngmujxwaECVhyoEvYSBQSwygydNxtZwSzYps"), }, + { .name = IOV("FcnfNPq"), .value = IOV("ganwcuowwnLVOAXIOIPgpRYyLKAVhhTliFJczDJEgd"), }, + { .name = IOV("hwJpneEYDa"), .value = IOV("PNdhICDIOpoAyzTwrhiiD"), }, + { .name = IOV("uwbrgOzaHMUyuOTZtOyu"), .value = IOV("YynlqyRysANGUIjpndJzsIMScploXtERvdgBIkbYobuEZStHjVLZzOYodvxCpStOeUq"), }, + { .name = IOV("LanZnvgcvjkEvoVfSBAu"), .value = IOV("kHwVvFoXqNyFxphuW"), }, + { .name = IOV("vm"), .value = IOV("GnJCuQUpsEKQCHHCusfhhKappv"), }, + { .name = IOV("lbSaIPoAmYYYPUCrLI"), .value = IOV("mkBRwfaxebhoJUrqRnpSBuoBPUlfNRRZlWZcQEFDYGQaKGzDGVRYslwsUKALa"), }, + { .name = IOV("wEWEqHfZYPLwuSewboNK"), .value = IOV("HwUEBEZHxNIaQXjEBMgDybn"), }, + { .name = IOV("PgNYuyyeYUbzKufmxIT"), .value = IOV("UpnIhHvfJqRJnAsarMtqRWMwNmFCb"), }, + { .name = IOV("ZKquMzuUiHuIRBZmYY"), .value = IOV("JRUMgdCFXYaocJMXujgEEjUvmbqVPxVmzyyJLLDXVoKjXZKUZDFaXjsHupEbUiWyuVtPDsktc"), }, + { .name = IOV("CcpjwTpTwgOiaDEkEjG"), .value = IOV("qFGuhxeUquErcEDM"), }, + { .name = IOV("JTLldzJBuRaQvVaGdR"), .value = IOV("ADTNzHCOggBGWMmYNIJbyRwLoLLyasZUnSQRTJdtjT"), }, + { .name = IOV("kuriTmXcsplN"), .value = IOV("kvCrcWqudpYffsSGcjAEXDlkf"), }, + { .name = IOV("JMjWrHqpUZKe"), .value = IOV("PYGdmIWpYmEMmJSyKruLrzCGeev"), }, + { .name = IOV("GNwXZW"), .value = IOV("IKaTYZmfnkyXOqzfIlikuVO"), }, + { .name = IOV("zlSEYquQOl"), .value = IOV("hIGWlJTrWRlsCbgIxeAnkUXueBw"), }, + { .name = IOV("HrJxLXSHPblBv"), .value = IOV("mXmcWtVN"), }, + { .name = IOV("qFbMQMChRnkZO"), .value = IOV("XdNKdWZPqhORQzKYUFjRxKSxBMvoDAVZZzMBOWWfHOmadeWAlQgYwtayrqnVFGKKfIMYctwrbfhFyp"), }, + { .name = IOV("uuysESpiOottBUw"), .value = IOV("evcJiAbdvQqvrmCQ"), }, + { .name = IOV("INWWvvTJxPHkiLlHkZV"), .value = IOV("WGSgMLMAjSugEfBg"), }, + { .name = IOV("VNJMtxFYl"), .value = IOV("ikyLJpcVidJHzbABNvaiHOxgaYzUQIKSCaQYyeNuEzBlcxMzERrxGPmtOFnpGVgJfobakVJLqCovCaz"), }, + { .name = IOV("wH"), .value = IOV("YsaLgxSx"), }, + { .name = IOV("DfrwtlJdlpdq"), .value = IOV("AuheabKtchetXgsIiFD"), }, + { .name = IOV("MsWCNCrB"), .value = IOV("voEdxJmqKCcnHRiflGEnrQXewXVFnmkKYTTrScWUHGOONvgcu"), }, + { .name = IOV("HXWbuJJQGjBZJ"), .value = IOV("BHp"), }, + { .name = IOV("FXxyIknczqxKyTy"), .value = IOV("RgXdDFFzBJvrSlDi"), }, + { .name = IOV("vObckZpkrpjjhIxyzhdl"), .value = IOV("rEaFrInlpbVochcJBqQWUVefBxjbbsdaXkvbslOzKDslrAaDeIQ"), }, + { .name = IOV("jBHDiDThOjQZhtKe"), .value = IOV("YtSvcHUxGJIoqVUAIWFnvBZRnnHUdrDkbUWUpswhccoiXFoQUYcmFhZnxJuWYdTclU"), }, + { .name = IOV("bxbseRNANQI"), .value = IOV("zvoUxJjHotBcOziuorCTQzEiQByRSvIScjCLDviAqVgJWqlySidUPdZksuJZxIea"), }, + { .name = IOV("HyA"), .value = IOV("KwefEWiyoamctwYeaLQhAqNZGIwqoVxaGAfQnDsNSiGYaGEdkxQMcZ"), }, + { .name = IOV("O"), .value = IOV("uvtyxeruBCRqekHchBeWYXrgAMbMcaJSNyejQ"), }, + { .name = IOV("Y"), .value = IOV("aGmJGszPyTbWnhIHHdXtdyabCFzgyVrNKtOihADWoIGESuNrXWjPRHFodgBg"), }, + { .name = IOV("HWMEsPGAwoqfmYvM"), .value = IOV("NoxyzdZkaedppxHPwJQcvCnUPIbDgeXYIEWYgrUarffGIqWKyoLdDThvcUjLna"), }, + { .name = IOV("qwuoV"), .value = IOV("QobxsIfwflRtYWGePcYzKFAhbyLvFRopthVfmFSSZvBvLDEPHFxkFAggiMphSBxgrzJci"), }, + { .name = IOV("UkXowNpx"), .value = IOV("MyBaFOQgDToNFCJDxShlOaElAFCkLWKxreslITcoFlCvjfFFXCwSAgzhWhKwfZCXgPhPIHs"), }, + { .name = IOV("bzgxUpBvCiFUlDO"), .value = IOV("YsJCNGEojIOeTUaOFErIeUyyVbmKJPiRgSoftrhSfAgZDXgXTsxSwFVOXdHGoylGRVemhh"), }, + { .name = IOV("AHSaYvN"), .value = IOV("TembtVXFupPdzlMZpHbyiWkbCpVexJFisGQLAkwReVnTXELbvqxfapcAGrROL"), }, + { .name = IOV("HcVgYIlbhjwmNyrxVBVR"), .value = IOV("oqQcKMWbRcrhvIwxAHOIySMROZt"), }, + { .name = IOV("rXRFbfimaFyZbpbfEmIu"), .value = IOV("NpiTklnWdTawKtMFhmclqUoyIpDiZuzpNWW"), }, + { .name = IOV("cejChzekGjIJU"), .value = IOV("IzUqpssFEdBYAmzQgMNbSjqJGYPGKWBLRRCmhMqNlstWTKyRuZSHfjZVUtMLEAy"), }, + { .name = IOV("IWgcGMJxxTDNee"), .value = IOV("wotEGOLyfCDLIwAfuDEyGnEKwftFPRDQXeVAFdLxRUlpCdHgFJ"), }, + { .name = IOV("YfiNMpfZc"), .value = IOV("gudYAdKzAcWQpPyEfAjFslzoJbXWraodXtW"), }, + { .name = IOV("uiMOE"), .value = IOV("vhXhHfUsmJZJGgqUYUdSnkAbGFERDxyYvVeXGojKJNJyrevlz"), }, + { .name = IOV("OgInQUB"), .value = IOV("XpTpHBwrsBgbcrMOvelwmCCYvWfkWabzBRquyZsiutgHFkFyuzfWgPtiomxVIKTj"), }, + { .name = IOV("oSFEnHCgZMZHaP"), .value = IOV("YwiNAdcxnzapwxyxBZxszKGJZllOdCzPHyQsrwKxDQeAKdDaqXUxEUdJJYcYDTYgEFHLyrCMIzeSyUYd"), }, + { .name = IOV("BOCHrEcrLKKanVpKV"), .value = IOV("tyNteZQrDvzKxXTvfdvYwrmzvuEEwVBrNhjYIUPJHzIMVgUuhZpdlFuzbXfpZyHmDGraCiDq"), }, + { .name = IOV("QaT"), .value = IOV("iVFuUiStFLdKoaAFMGampDMnTErqIOFiUDuHXrpsiskkHz"), }, + { .name = IOV("rygzgfmHUVAGcVsu"), .value = IOV("fifxtIxYvlsG"), }, + { .name = IOV("bXknlcUaCJITVkbOOpr"), .value = IOV("merbmbPIgpLwTlYoNSoNUiMAZEbETfHZwMdHzArbwxCeSrHJGsnOrBFwtfpMgTjpWVwoWIlJu"), }, + { .name = IOV("sznYg"), .value = IOV("snzSnafpisMJsJbGnXknkwjUVQgDDSAIQUjzIDBAIaDICkpCBvMxVnjMXYVN"), }, + { .name = IOV("AOIFlZGjzkpm"), .value = IOV("hNhDcsiwCZDYbExtoaKaYUiXCBDVKLyiwjWhtodAFtASxeYOzucrTbcOvIFzgRhHhIh"), }, + { .name = IOV("iikDYSuD"), .value = IOV("lD"), }, + { .name = IOV("sHhmYMdYHBYdcqGDmi"), .value = IOV("fcTyeSPtkFEJeFMSrDGBJFpCCKMkTimsk"), }, + { .name = IOV("BMDZBHvVmFNeQMRTlfOE"), .value = IOV("LBwxrwTGzs"), }, + { .name = IOV("sSimoFRQvSRNaqaELQGI"), .value = IOV("tDQSBkivspLXNyjgiWcGdcopbOleZLVWVYgZvsOGXqeHktCogfWEFYhFoNoReoRnNoGihbimSWxYVxb"), }, + { .name = IOV("BaiyiupiCUG"), .value = IOV("wKkpKXDgBIMLighYMvkYoXLDndRUXxoVoOvgrlIQtGOvECll"), }, + { .name = IOV("GG"), .value = IOV("oNmAoMtpkAzGxRQKXlxxpzbLmszOD"), }, + { .name = IOV("DXjBiLxXXVccj"), .value = IOV("YjYVtibnINhXweUPcHDqYtWryWJwmyrYtUdnAMRwXd"), }, + { .name = IOV("iaeHciuDhDdPvtP"), .value = IOV("CVVr"), }, + { .name = IOV("aw"), .value = IOV("iFPJMyTfdNIsEBeYGFYpRnkKbfgfoZXobmZOBqFYpgOQjwaOPENvihA"), }, + { .name = IOV("ilBHaykOnQieFrCwe"), .value = IOV("wTekudFBSUMvsLcRISeTQilgHaElaCetDaDmiBZZMwexJMKhhFzgys"), }, + { .name = IOV("dtDEYbDTLOArmoqMe"), .value = IOV("aEHahTQKimXUlCPrUzelEZkkjkVnqwFxmnoU"), }, + { .name = IOV("EFINwfyHMaOpyWL"), .value = IOV("BMvqpzukoILpsGeRqPDKMoixWlORUQFEcfBiUKsfWcJdCWAdwVUrxyqpYayNCMHE"), }, + { .name = IOV("CVHGpjYdrRgPPaRvHR"), .value = IOV("CmvwuIiEvRBKftDpXNgAhjpqtjQbvHVNcjKYDzGlGFmFQgoytkGWKdVjnTIZbR"), }, + { .name = IOV("SKT"), .value = IOV("xiXLhXAxoRQcYRBdOQCDTpKIUTqtFssKtbikxMxYGGYUelRuwKKLXEjUEuL"), }, + { .name = IOV("CMRfgSBLtIWEEJjwQyj"), .value = IOV("JOPWJeOEpIywyynbILpXsoEgfuAnWbZcfB"), }, + { .name = IOV("rbHeurrQu"), .value = IOV("SsPUzQKUmAlPUaJTaQNXHzPBMgTOdayvmHonfovIqhbqWvyyCZXpBjlmsGXFwd"), }, + { .name = IOV("rD"), .value = IOV("IrGZHobMOtTaYDMNxJmgNfbin"), }, + { .name = IOV("KkRLVRRpMPLovr"), .value = IOV("KWxJMkniUPskokuEYSbYSbPrhoqNgvSsxiVLBTTHoVu"), }, + { .name = IOV("e"), .value = IOV("syfVcUFgEYLOVqlanFEwoniqUpniqTru"), }, + { .name = IOV("TkeKeaqtKYhi"), .value = IOV("vUMbKTUEoNKbttMcgqVrxPmesNYrCyfExVSdYyGiqzrPvHZMoBUjX"), }, + { .name = IOV("NTZlgSFQV"), .value = IOV("bLFLqZsmPfGvlCexHIJaMeEocyhBeaKvFBINNdJDkgzsxWSeLKtpKgCkCptWOuJmtTZRlRrEVqd"), }, + { .name = IOV("UWicUquGWYcVgfbrn"), .value = IOV("fIviJLftGNEzTH"), }, + { .name = IOV("XRwDy"), .value = IOV("vwcYyYdNItbpoZzklJYwpLaPNBO"), }, + { .name = IOV("quMYvSMtzBo"), .value = IOV("pUfgFbYTEdgDlHMiolNuEGJHBzPdlKMhAHfVNIzRqblCDzLFaCpyJcaLKtdHkYuhmDwFphe"), }, + { .name = IOV("znHdVqZZQhYUKYmXNSSG"), .value = IOV("wLMYvKimGwJBIXteFYkjQezWjlStugpmNOlO"), }, + { .name = IOV("ksujuP"), .value = IOV("gYuJyFVgGYeOiEvZoQTLPpwiuqavbARcrILrSApYIM"), }, + { .name = IOV("hFLXIPFc"), .value = IOV("wCpPcwBVWkwVgQtBmSKrkkQBSWzmmWThoVYnveZIOe"), }, + { .name = IOV("J"), .value = IOV("RrdbQezfdxiawnxXkFrJrNqDUvRtmTtBgZpOlNBZpwNsVzTkOLewD"), }, + { .name = IOV("OdIXwiiVWTTcF"), .value = IOV("TLNOYQhmIBRLiCDPxxNEnCmRVDUpPKtcp"), }, + { .name = IOV("wB"), .value = IOV("WHHDUmBq"), }, + { .name = IOV("tDZDkZqXDprIa"), .value = IOV("CfgUlrGpqsluexqTQkMirAOURqguNCqrepsJDWq"), }, + { .name = IOV("dAeOMNfeyu"), .value = IOV("ztcYFgXojIOFKyAvjfiPQlHMjKkPBAswhgCYxuSxKYeYZUDZszCjgO"), }, + { .name = IOV("HtQYnOLO"), .value = IOV("uWxxAwxnyxoqoXWQwgRjOwpdUyvGcWKkktjjGWypOutiGkhp"), }, + { .name = IOV("kjBnEensr"), .value = IOV("cbUevkbiusWeFSANsjbEPUVeBYgvoOhYFyyRe"), }, + { .name = IOV("JOWL"), .value = IOV("csmNffAIHVTroLZntvACEmCR"), }, + { .name = IOV("VanFwylHlfiMeMqsn"), .value = IOV("iIhSRw"), }, + { .name = IOV("y"), .value = IOV("UjY"), }, + { .name = IOV("xUVWtTDgHFjxOaIb"), .value = IOV("QvZhtznkNIodSNcmXkOYKJAlGwdCDfPetVVregHdNOJyaOMC"), }, + { .name = IOV("M"), .value = IOV("DJXuPzZQwuX"), }, + { .name = IOV("dVmtKqRvU"), .value = IOV("OANoxGjttXZCcoMnaj"), }, + { .name = IOV("vpMXvbwxv"), .value = IOV("JIc"), }, + { .name = IOV("MHmDVlCF"), .value = IOV("C"), }, + { .name = IOV("VfOVYjTltWfgXu"), .value = IOV("mcSJijcGxrY"), }, + { .name = IOV("Cphc"), .value = IOV("WpiInNqzUPXrsZsYxTKrYMczegBPfIKZvNHswjUIMcUWyygGGNKOfjwuFQyViydlU"), }, + { .name = IOV("utAMZmIBQrVCPpRAOw"), .value = IOV("sfigFizHQPBLMvRERGPCPf"), }, + { .name = IOV("ladSiavKuQeFAAgLXvu"), .value = IOV("JinRfGhSlEQboMDJWfsxlUbQY"), }, + { .name = IOV("oNiIwWpT"), .value = IOV("AWQFjkgyG"), }, + { .name = IOV("rgdIkV"), .value = IOV("hzBHLxGlIlfNyiVOrjvKevDwXTAiaJNNTJQbhcXDSXJhsvmF"), }, + { .name = IOV("KgwZMRWhIE"), .value = IOV("aamtiOXCLWWtKpShqmdmkJsCAlOdMQGrVGTdxka"), }, + { .name = IOV("aJQCExUmziNRZjl"), .value = IOV("cGEgMTGKcumuIMaweZDplohbVLuGqYHnxFdF"), }, + { .name = IOV("iBdfuFvrFtyUVqi"), .value = IOV("WNlJMBKyGGqbsWpjYXHEamII"), }, + { .name = IOV("RNPeHZyfPASnbnq"), .value = IOV("QmBkhC"), }, + { .name = IOV("HwCFCJIIiFByApJXL"), .value = IOV("ZMJzoyLhQWUGvhIJoKYuLBbopgeePkyZqq"), }, + { .name = IOV("SpNMsxFxMBnbyLtpd"), .value = IOV("UpsOFSsmOzqAOVVIrwYrGKpREpLYirxYtkiRhTmLGGHGNvnHyLgdSpqhEECtwfYIdHygPNxwjtbQe"), }, + { .name = IOV("Qji"), .value = IOV("dsZGwGyRCXyzmZOFrvTBxkdOwcvqZkNSyYncbTXWzWoaZrrGxVPmjMnLOBKtvkZVivo"), }, + { .name = IOV("kWuoJuJMdJgEYkYknikj"), .value = IOV("rVrhVGlcrwzysmMrleVTmajaWRyROUzjBGKXQtcYorHfjGjUFDYfZFrhsIjsTqQEsgu"), }, + { .name = IOV("NCreMPOWebjOPOCdVQc"), .value = IOV("nGVAhBrXlcOmqspGEqwKDwGMdyihdgKmR"), }, + { .name = IOV("ZXTCOJLXsocRGbeU"), .value = IOV("tDeZrpzvQPaDqlRKebBMCYcbkECZAHFUQarOpDEqUvxgTIwTFtGifOVJWsVrQkRJlSJimxFzlEdj"), }, + { .name = IOV("CkFYQkl"), .value = IOV("FwSGvzzgxTkYEFWliNlFzAPTVGEFIDgoiuuCUJBEGfIlnCDAVFGZVTDAB"), }, + { .name = IOV("KcJ"), .value = IOV("XixQjsxpasYBqAEkzCmYnRXYkiGwpVyORCXCfOnzAJhoGfJepzLKascysLosKDbSIYubpAzBzZM"), }, + { .name = IOV("yJwilwkB"), .value = IOV("SDTwtifyXHNdyHcBpNgIDILSqhmmMVWYbFJXN"), }, + { .name = IOV("XUfUG"), .value = IOV("npLNmVsUtIuNNnRoURGipCgKzQJUMtOHEjyJDNvwnEWrnQwfVmwdcFc"), }, + { .name = IOV("JQrjFNZMJiMu"), .value = IOV("sRKxaelyerzTxYUejDicJDUwFIxzer"), }, + { .name = IOV("YGywxItUqYLcvamNx"), .value = IOV("NRvqGLtcHtrCxFKOIEYRHUBlKGuWpZBxgWqPCQXRPFoisEBhoZMRAtrgzwMnWodBdkldghFC"), }, + { .name = IOV("FGN"), .value = IOV("GdHXxWsLpCdjRizSjPmmuVwYQUWmRYfUrjQgtzHHVWwObYwYAaLPgrZRrmr"), }, + { .name = IOV("BGeXltsFs"), .value = IOV("VrgWPsZdkpkyxDQAOkQNuorxGKVO"), }, + { .name = IOV("bvuVaCfQHR"), .value = IOV("mLTAuicuGvllCcktcXcygEpnWViqbtpo"), }, + { .name = IOV("jDJVXY"), .value = IOV("PrMpPiDvJWzpTqxRaZNWUZaPFfbtCSVnsvUGrIEWXHeRIQwSoNycEqjsbTICWvrBojdrxYCSZqKgKRJZ"), }, + { .name = IOV("dDbLdZCjRHmqQ"), .value = IOV("youHwjiRWhAPuMNCbMKRlMSzTEkDQKZrxquCDtXmxQLevqHPFYdNGVjFSKngZisTVcmvFwZzOFFxQu"), }, + { .name = IOV("eWUyHBjNklREtj"), .value = IOV("bVMOZkNyUqBYRMSWwSSANUkgttfgfFIJUzLoOtuhKEzfAhoRNBOmfTrvgZtRGNGVolipbCpXVdeiikFW"), }, + { .name = IOV("psUoRLqq"), .value = IOV("MvDfrUhJwUAOThYlRdxuzoSYvjZgciFwzEdrHviPIrChJevFesoDAyRFtfpplKLcDdndAgOOxXRgO"), }, + { .name = IOV("tSNLPco"), .value = IOV("lhvXMliWoOiUmSyvcPMBPnFemqcLqaDrBqXZE"), }, + { .name = IOV("N"), .value = IOV("IHKYOlYzDtFFnBDqsbCK"), }, + { .name = IOV("bhJl"), .value = IOV("clbORMvAoGaxSYd"), }, + { .name = IOV("qKafqnFUBGq"), .value = IOV("HbDzjtbthqHJCsSAGUlylpZqHeS"), }, + { .name = IOV("onPQHdgsk"), .value = IOV("hdrXdEZFuAcfbnTRAvVOYLayTQwhdBDuYVgOVxROYxvgvThrSWcnbNzGUUlcOow"), }, + { .name = IOV("cIrBncmnydAAnAZScmL"), .value = IOV("DgAjlFHUXguRoxYYVAhAgwKsdTkFo"), }, + { .name = IOV("nYPhQbyMpIEUMCTydUqj"), .value = IOV("BpVZIxfKRPMI"), }, + { .name = IOV("RUaPSAdQVnvei"), .value = IOV("jbiuueVB"), }, + { .name = IOV("ZlWAGLLXdjykkomB"), .value = IOV("jHCogHdhdraodTKeMlYlvBnyWgQawBxbotYfUZcllKQjRzCiHltlSFpw"), }, + { .name = IOV("qgqlMKMoxskkW"), .value = IOV("aRxVBECMShIZDzZhaCzinLnfhzSHUKbptZpdHNQJSjitnphLgK"), }, + { .name = IOV("NUKyItmepU"), .value = IOV("vkxsjupRZvvDhQduIcFuVupgywpOYZHKzMqlRETRvPqRbTgIeScnGunoCotBiTEdEGMMBAzSpmEx"), }, + { .name = IOV("dsQpglle"), .value = IOV("cEUpRNkbqTLrCuEotwiZnvvHpCOOyxBmluZkpo"), }, + { .name = IOV("CfhGWZwLhNUIVwELC"), .value = IOV("SyZgyOOHjedEENStgxsuFqsDDXJtiFkDQKYFkCzlAWmkHIKvkCKHiuNVljQfrqfiwFwqb"), }, + { .name = IOV("RhuJnrKOyxuV"), .value = IOV("iY"), }, + { .name = IOV("YoSCHOgXvDyYPe"), .value = IOV("yRQryAgpvWLGAeNPrdJkpMWqwmkALPkllLAegP"), }, + { .name = IOV("lItDhMIdJguFITFMrFQj"), .value = IOV("SfMwxcFAJDCpjvOwvyKzNhHNqQitztbKzdgXEJtyWmjSsAgFbhZPwqGAAbeWrSkElBgIXJJ"), }, + { .name = IOV("Z"), .value = IOV("WtGcyrYqLWgutszsUWmfMlRlpovzctwNPSOvyfHnzsisnkWnfsjoLXgHw"), }, + { .name = IOV("dnqVjukwPsPleFVBg"), .value = IOV("whUBgTtAUDiHwbnzo"), }, + { .name = IOV("ZvcVyFtoAc"), .value = IOV("DzfJNaJcooAKtiC"), }, + { .name = IOV("IwCeCAKbfSXCISxTzOZ"), .value = IOV("LmBxHIwOCPTpRKiDnOGaPpsZVLwEsWlCPRGbzcIwggTihUvX"), }, + { .name = IOV("HzFUildKpWxlyMdYVjN"), .value = IOV("iUHtRwKtPLOAnUNMjLFlwCPDKWmHrfFTRY"), }, + { .name = IOV("sS"), .value = IOV("oHILtRYdMpahzHqKCyULlHGrFzRdwnccKMQTqdOphbvlqQJNkaHRNCdEHpiMactF"), }, + { .name = IOV("jg"), .value = IOV("ZYCaBvjGvsetqcuzkTwszMpkCYihcohXqPCCnQzzHApKpKDdQoCdCDZzlqNLUZPBbWXzWUq"), }, + { .name = IOV("ElmJ"), .value = IOV("ZduuQfJWpSVbUtvQyzhhRUO"), }, + { .name = IOV("YCETqCjyMGg"), .value = IOV("TN"), }, + { .name = IOV("NCrgYm"), .value = IOV("aeELGXaiGpgzwHEfMEAapwdWzqnRNSkdSxkskleLbtrdvUeha"), }, + { .name = IOV("FgcOKk"), .value = IOV("HUiLzDhJwjhtUTxnNgnXauZWSfrZeUleJIfcHoSSRjLfbTiVy"), }, + { .name = IOV("VuSPEncUD"), .value = IOV("saAcaEvqJBUxeJEensDQTUaiZZRRVHUkHOMVkC"), }, + { .name = IOV("yyNKTNYotczGczyRN"), .value = IOV("NBbwDPzrRGXHnFgmTZqDovEFDppGbOBAKFfAWfVNWIAYZIjWbNlcNjQUimhwatmsMF"), }, + { .name = IOV("qy"), .value = IOV("viymzEqxZz"), }, + { .name = IOV("jfDJHSso"), .value = IOV("NJGlgxOF"), }, + { .name = IOV("kfRosHdeIPQGoALwR"), .value = IOV("ydSWIIYLZeATrzyGVvxlahDSWhGNtbjQoKHOaMRrSmwsnOFhjizWfbTzNRGguiWRMBhbprfSGdRtvnB"), }, + { .name = IOV("d"), .value = IOV("cIdaVrxnUAjivHgMWdfmNSyANBYCiXrDHUVYACaLAKKEEDHPFZYmJIcNZSAgrDcAmpjW"), }, + { .name = IOV("rBhzTPARTFZKSKUy"), .value = IOV("YaTRpvVSnADxhNKohIpuhQvONavDSCGkXTDTZpEoRSVqnIwVzczfYSKtIrzNYv"), }, + { .name = IOV("nOROybHJsKJNkXOXd"), .value = IOV("iYZFumtcpceYcKmCZoIfypaTSpGczgXkEtGAaoVjVSCGcEJzFeRcJfPnTichzasDLYhjKWRBMhoM"), }, + { .name = IOV("FtpskhcRxhLJieXPl"), .value = IOV("ywMNIZqndlavNEAbHUFBNBEntOxerAdHhWfdsyUaqqRkZhMGwNougGjtk"), }, + { .name = IOV("wZTopqCC"), .value = IOV("zGjTouklYDngaeZfRQpSmQAXRlETHbNLCDvIcKpnAaSRWC"), }, + { .name = IOV("KCNumLFYq"), .value = IOV("QGQsBbEiLsnVDrlorbxdLFHRnhoJzVXtvdGnydZcTiUEIPtWbJQu"), }, + { .name = IOV("vQyZxWnabfRJGHxLpQP"), .value = IOV("PCJsqFIufupf"), }, + { .name = IOV("EMMhhDuTdfK"), .value = IOV("adrwzocxEqGDUaQauvgjoJNZhPkHOTB"), }, + { .name = IOV("urlkJPDy"), .value = IOV("emZDuvMAQZKKopJqbdXJXCJSvPkmPLCzFofGdFPxvcFrRNhwThlrSJXFPFUlgLdyDX"), }, + { .name = IOV("UaxYqbpxGLdla"), .value = IOV("KuICbFSzyMEbYXNzTaWzpTOEpwdRbnTEpBgxcNHvGyDKHSYGujbfw"), }, + { .name = IOV("ZNsAA"), .value = IOV("SuNEgUpDSYFPIWNwapaWHvFgNpNWVpzetCwppaBfRTOGDBGwjJZdDoPbFgwIRtGSqIW"), }, + { .name = IOV("IEp"), .value = IOV("LTTRWfuZlCtpAaNfDhGy"), }, + { .name = IOV("CR"), .value = IOV("mUxDkLJLTQTCCEktbQWIbTKIxmhiB"), }, + { .name = IOV("OAOmRQds"), .value = IOV("SqOjdUXuTtvcYcUjQTxJKpqQxkrUmO"), }, + { .name = IOV("fLFbaiee"), .value = IOV("ETGKZuFXcuEtVwfEbIfOuzQeZjPDdlSdwgcWyGfSdCuYxMPyV"), }, + { .name = IOV("WhZOyUfaZXbZLaDoX"), .value = IOV("zjmxIhHNTxzPButjwNzQWMZEZawzuOaFCWcJIFQeQUYvEJjENOzmxOdNVQplXtXJTWo"), }, + { .name = IOV("IOH"), .value = IOV("Dctf"), }, + { .name = IOV("QfBzpuD"), .value = IOV("KdKmlrfnpryLHqBeTTrwouJnJrPn"), }, + { .name = IOV("y"), .value = IOV("poTBVocEGMafJvaGGEiRFKDlPdATrydTUFpJwEoHeAgnZrVzzRaY"), }, + { .name = IOV("gjwHVJSYfvEtHUwRxlV"), .value = IOV("bFFerGhSERAhHXJTqZoZsEnIKFADDpgwIcHPNtxWSlWPMbDLdRaqySrVqUkQfp"), }, + { .name = IOV("MzjdeKGBnfATTb"), .value = IOV("ETufNPOXyrbbpvKtqzdxnllyOVAxCkQvyNlxaJXHetKc"), }, + { .name = IOV("VHHrS"), .value = IOV("dUKSUizhaOhsHjmSlOdLBCmKqKqfhtGlvTztZwZqsPwIWShxIorwUZSvkfmtLfR"), }, + { .name = IOV("NQVVGsWm"), .value = IOV("cnxZdOyxxskOcXFTudqYDbZkPJbQiWFkAofDNMMBisHLRENewswfWhurSLm"), }, + { .name = IOV("MemViONxZuuvQ"), .value = IOV("fGTbgUPcpkBJeZEKylcPFhaRzfjgAThWIxrXZwQVufE"), }, + { .name = IOV("ezwoFlCBAYreIJNEYYV"), .value = IOV("uWhWtLnNLPCETNcyTzoyXHbxpHovJwIkHjCzdvqNYyhTNBVXfPnGMiqSCjdlzyxnvothrDixDaljqApw"), }, + { .name = IOV("l"), .value = IOV("yrmMcZCPpZZfqPKSmCyFPrmwfrVeRIwdGcRnRjBXVbcTODVcHJtGeTAq"), }, + { .name = IOV("G"), .value = IOV("snkNCSovfEduLnCUeGK"), }, + { .name = IOV("oQqVRGaGjtMK"), .value = IOV("ftlPccKraGRYgKkPlkemDwWizOFRVQFNRwSXwwUAODAlfFQUrOEqBFlDgFnWaDBFobUBJzTzFfJGGd"), }, + { .name = IOV("IOzCegtRTRTwQsb"), .value = IOV("yxXTMrXcDjAwRLMMplerCNFBGKAaFrbTmPL"), }, + { .name = IOV("jqXDBKRdxxVeBlfv"), .value = IOV("IjKwwERaAnGioTrYMbHnrRRTgZjAFqfvWCwOtpRikaQDCpMsV"), }, + { .name = IOV("ZHNhkhRIMJAfxuwOc"), .value = IOV("pmdEqoQFfhtJMZQouBGgKCMzObdULtZzLbXVRIqdJSFUenXRAJSWecsWVKkoNaxUPTBvUb"), }, + { .name = IOV("pNhuLplE"), .value = IOV("NTlNMAOvumEwsHvxtDFGKkgfQI"), }, + { .name = IOV("hJrZiU"), .value = IOV("cKglGWzWesxtWoPEaqEKmGbjrVPZC"), }, + { .name = IOV("loziYwx"), .value = IOV("reUEEtEkIxRE"), }, + { .name = IOV("PxpeFlnSxDodsvCywc"), .value = IOV("hTmoHOyZyiXrQeULLfbrBtkSPKx"), }, + { .name = IOV("oT"), .value = IOV("MKWXRdSTepepQANagQdvatDVNDDYpgPBqktWlrJnKjNBFOQIk"), }, + { .name = IOV("MqVVqibuATFIQJiE"), .value = IOV("GLSacsFiyDShgynEBhgkHMtnTuD"), }, + { .name = IOV("sZqwFfN"), .value = IOV("B"), }, + { .name = IOV("aVuvTtNGZLFFrTtVI"), .value = IOV("MVkaiuuNacmNJGIrfahkZxPDphqzgSDxoWhLhzzMFeWVcIIqODHovbMbF"), }, + { .name = IOV("gpKuQxXGTiAUXhHL"), .value = IOV("OECbiOqbdamlUqXAAcjGgsqFQGjoqDOxEGuith"), }, + { .name = IOV("lMT"), .value = IOV("tUismcayuTYWtUzkdtPavzGIvjWQhXvbDNqFUahheunalGQDFTQJtvjWRavgi"), }, + { .name = IOV("Rdv"), .value = IOV("vUBkBCwMELvnSrwmHDAjNGSwZBVYQcWnujqWlHgp"), }, + { .name = IOV("qzuwVts"), .value = IOV("vfcNBVgFLroCNLgULecEQqDaXPDIejoLSgFnBXfMUHmeZDkyUOiEewKCcQBonuZphJlaSNgWGZDyL"), }, + { .name = IOV("qBnUIhhoYnrUdIbxW"), .value = IOV("lpEnJxubLStsylhWxXCCasFqZkqKLWCGPaeOoArHFEvLtOpozNB"), }, + { .name = IOV("DAaIGakngdbEr"), .value = IOV("cEwfLJBSYnWPNIQanqNnEsqBQAgpegEkT"), }, + { .name = IOV("ZU"), .value = IOV("XzadfjTnvCCcPUrMFnueHtuXIDtjIuIkKWDB"), }, + { .name = IOV("fyiYRkbwgAaKa"), .value = IOV("AXBARKEoIeZZMwhAfunbFMQmhaRYADlVtjqfZUMeYWMljEwH"), }, + { .name = IOV("WZfaisUjgBDKA"), .value = IOV("zYuGzqUQhyQGDVyW"), }, + { .name = IOV("pofOfyxvmrPhFRRtPTE"), .value = IOV("UIrRSlbRpdt"), }, + { .name = IOV("JeLiFmcwexHxFGu"), .value = IOV("vzsaKFvJIzvV"), }, + { .name = IOV("oeR"), .value = IOV("GGvshMDci"), }, + { .name = IOV("GiajaWvq"), .value = IOV("mQaVMIZlBblbhgQBbc"), }, + { .name = IOV("PRjKTNwV"), .value = IOV("JDsOygbkyDpeDfCHkMTqVnfOJmpiFDZGsYgiHjSdgGLVKGcqxsyxBuNNuonDqfjrwlVYquFiRVUuSij"), }, + { .name = IOV("kyqpaXmHUlVPsjanWx"), .value = IOV("VuV"), }, + { .name = IOV("LbgCfNlNYVqATdeYOy"), .value = IOV("bHVgCKFkgMoyrZFgCJuzaaHNKmbFlFoT"), }, + { .name = IOV("GS"), .value = IOV("xcFB"), }, + { .name = IOV("fkBoaRBuyJyvZaiWGCG"), .value = IOV("OLiKZPAtMZA"), }, + { .name = IOV("etQtJ"), .value = IOV("mEhZGWDXxRIcPyNGhCJ"), }, + { .name = IOV("vx"), .value = IOV("xvjeRf"), }, + { .name = IOV("qSGlcYdOP"), .value = IOV("UgRbtbOCJfJCeOVrOmJUaCFRGRhBxKiFeEJFVhQrKBbJOkgIHfdmLGcXOHseF"), }, + { .name = IOV("EuKbHmj"), .value = IOV("gBbEzSivWsURSbyHnrdzAbyhvFWRSBkhoPSJeeTwKMtw"), }, + { .name = IOV("ANsOwKXCyqPCIghjEuRN"), .value = IOV("iqJFVdopSAKnBN"), }, + { .name = IOV("odTc"), .value = IOV("sviWHCxEtBFEHqLzZ"), }, + { .name = IOV("QXzbt"), .value = IOV("ZQTNnCDUbYmnsTWxfMAiIK"), }, + { .name = IOV("eulEU"), .value = IOV("Umgwr"), }, + { .name = IOV("xLweNIUHtWU"), .value = IOV("pxBXbGuOBqQycgiREGRjhjucugjRoQDURULcOAj"), }, + { .name = IOV("f"), .value = IOV("cQJSzMDRbrPlQUyqVydpZxPQ"), }, + { .name = IOV("mMYNxMfKfylKJTaJyE"), .value = IOV("hxxnsEd"), }, + { .name = IOV("gQziUnjfOahWvv"), .value = IOV("PvfQiwhpNGFuZifoobqcCrHiEQwugFJZmMcpJcyiDNAqYhKcMivLtuqKbcHzLMnoTHDDZbSGmw"), }, + { .name = IOV("D"), .value = IOV("LBWKRJsYsK"), }, + { .name = IOV("iUedIfhoVrBbOrlyXgYz"), .value = IOV("wPdTEBXLDcFOkyQtQskwsCrXwaqwStIwTxhQGrXClsRgSQDCTRLoabXTVgiLcgtHFFUwpT"), }, + { .name = IOV("ugj"), .value = IOV("zhfqIiHxuzRfFMfxEoJ"), }, + { .name = IOV("InUaKodSoR"), .value = IOV("LHLWvkLcgqJTWnkknNkxNdYJkRttRxYbXBSgtqLvPVNbiQurtJKSCqh"), }, + { .name = IOV("D"), .value = IOV("aPeWvMBLhQdEALTCywbJLsZuOs"), }, + { .name = IOV("DEImhvrfW"), .value = IOV("ZtXRFtTZTaiJgtibCSLOiISFEGIeCVVTuGeVStPFCHlxTU"), }, + { .name = IOV("KNmcdBRfjmNKtKTU"), .value = IOV("KcgIoVmNfyAayvNKoxveWZfljdsskQOqLsIp"), }, + { .name = IOV("sOPBUvckhh"), .value = IOV("gUEazvoniXHQderecSyLXpNlihUpWzltsbgHzRlaZdlwao"), }, + { .name = IOV("jbyzOmlWI"), .value = IOV("HbZIUAvNOtKtUqfXFVXJseisBKdeovnAOsTnkZFvHVOqJVPjTWWQnclYaUdeOnbNXCjVQfZOwxwFY"), }, + { .name = IOV("NbeFSTnxFxYPKc"), .value = IOV("qUGpcUOLOzVIcbBBfLdlhstCJyDleXeYNlWqahlopvwhgFJNeVSsqPXGlsiKFwyvvpUBl"), }, + { .name = IOV("hqWocFDCuGLDqQn"), .value = IOV("GGZYvJLwcPsriLNipnAOvw"), }, + { .name = IOV("GGpbnLIaOzzTEnVIgtBH"), .value = IOV("PeKJheyZrZsIZhpAXiAOHvsnYzZGqIbBXZxXsEpRsq"), }, + { .name = IOV("cJcTzeGiqPWHLFk"), .value = IOV("qcMxzmHtLTIsLWIXwZznGNYgmuInESXKUdFFiPxNeNuNu"), }, + { .name = IOV("PIurJLGraZUoj"), .value = IOV("ZgxjFllEtkmkMEDXcYznZyquQaWQgfoMJuXSSpZjeVdvQIbhOrvzUBqIvLMUDzY"), }, + { .name = IOV("FRDCmECBJd"), .value = IOV("nRayPXxpeGYlmGGnlpIdpTsJqwgsiZ"), }, + { .name = IOV("vejVRPPy"), .value = IOV("cvFPCKpBafsIsYgoROPhkZOvfdJHdbaacuzqZpkuPvtJZnWxLikBkdhVAJCVr"), }, + { .name = IOV("ZAGbQlFmJpgPxfJ"), .value = IOV("UxuwmCUThLtjmVNezxLULlLVVzGFTSGlXXORAVHaUmbUNONHUucEVXhoRmGGsBehLSSvyJ"), }, + { .name = IOV("CkNTjJmjWzbpzxaHMi"), .value = IOV("lxvMzptCKswkgfDNLhoYwhHbzGymkUexXPenulIUITeWfzRsYcJwZPNoTFvSMzUENhpOcgbYTPSiuNv"), }, + { .name = IOV("ceGMY"), .value = IOV("MofsXryXsFEM"), }, + { .name = IOV("UGRiV"), .value = IOV("ULMifbanEUpHqfYfpVAbcDCCYEzeIGoUOQNxcqGfHaStn"), }, + { .name = IOV("FLJ"), .value = IOV("WzMhMMCXusPDXzBKjBrNxUfiXkHGyFWoIGMRiIXgOZSXWJciySOpUtWijBPNJ"), }, + { .name = IOV("syGdhSqJ"), .value = IOV("BKXdMYoXUeacSVhhRPErpALukgwbUvTRIqspsmdrEar"), }, + { .name = IOV("iJERxNFXIfY"), .value = IOV("FZKnJoaxFtVasAUaSkzln"), }, + { .name = IOV("Bfnr"), .value = IOV("HHeUZzLmiAqSlxqOmAZtARcJnYX"), }, + { .name = IOV("v"), .value = IOV("I"), }, + { .name = IOV("sLzGOrbwhlEUVF"), .value = IOV("wjBGwRmJWdkGlckCKdiZDfTjRYLdFfSvVWuszPquSOwKhCOtiLKtnHgEwVXNwSYBaU"), }, + { .name = IOV("DYqREoDoG"), .value = IOV("lMxRaZGsYqgmZOFeytSThBdZBLtmOqJhaMhNeBizdYJNcARskpXKA"), }, + { .name = IOV("XxYgvGysoDxxrPQ"), .value = IOV("guGxp"), }, + { .name = IOV("tnnoSd"), .value = IOV("KQxQJRfrrbLZHvTqqPlxdDqwAgHMJCLzaHmvJsNpXMpVZUZnXOeMbqhotReThJXkmmuT"), }, + { .name = IOV("gFHOn"), .value = IOV("SXZBbPHslApKCNIeHBXUTJaLJnAobghJOWWlpKWurMYFfCRdZpwTlklwcmlAEIwolEyhxAtlx"), }, + { .name = IOV("n"), .value = IOV("jsWwBsZoCXj"), }, + { .name = IOV("F"), .value = IOV("xSzEDbJtmBGZwgpjWwwNsaoCCqYAHANokRbowrBWDLuvfFyHYYCmDbpPhhxcO"), }, + { .name = IOV("vKsxiBdRv"), .value = IOV("tAgnLzGMghOvZtxRqKMR"), }, + { .name = IOV("BBbDM"), .value = IOV("wBdSuJJVOUR"), }, + { .name = IOV("BoRkLBgHpVfPTlyM"), .value = IOV("gqwFdOxjhTUGGEldmQaiWPdwyGUvDVFvNltUhgeybPxgygPGgSuPgmepGPZGHHPTQtoyUDOnvGO"), }, + { .name = IOV("QBZpbqYVQXwEFUhsKPEJ"), .value = IOV("VDubyFsNGenyfxKUNgvNjdiEIbLjXesVTNzEEngOttgNKsLvebqoSCqSeuUXNMcVgnZoU"), }, + { .name = IOV("D"), .value = IOV("TXLHCoInIkQyZRBnazCPOCrXIJXlwXjWjhAjGYiVvdSutPXXDNe"), }, + { .name = IOV("lOm"), .value = IOV("LvGuMqprnfuABqdxv"), }, + { .name = IOV("ZpwJYydxoKMkntaxibn"), .value = IOV("SPmLMMfyKAoygjsaOlgPAhRTpkeIcPaYZoFzvhIdmDUXOjsPdbneHElRvIFw"), }, + { .name = IOV("KOTskILnmnXVJfFdal"), .value = IOV("mlhF"), }, + { .name = IOV("ebKxOHRz"), .value = IOV("CPxfaloqGIvHeIECPHZSiowNLhzENdGjKFXvCnTBpdZEHOacKEurmTJCjYTujkRWEzsBudlN"), }, + { .name = IOV("U"), .value = IOV("erUsWQDqnyvGbWVAeLvfaKGJQiKJh"), }, + { .name = IOV("LPzCRdjnYICoMp"), .value = IOV("NjTYBdKpCRkcvmUQwmFsXNsBrwFZzylnDuBzgFuZQrCLrywSiuEWLkhHclvshlYpAiOPjILQ"), }, + { .name = IOV("GWptklDkVRaWWgOZsIZY"), .value = IOV("w"), }, + { .name = IOV("bCdJWrFHKwp"), .value = IOV("VYiV"), }, + { .name = IOV("tVOe"), .value = IOV("GJwJuYMKedjmCzdobBRdSzoTxkbjGaxZIELMFJiA"), }, + { .name = IOV("LbCWNzJILshHGubT"), .value = IOV("DlyisjQK"), }, + { .name = IOV("BfMFqUQKlpBrSiiQzDd"), .value = IOV("oMQWClWpdLEfdJHHFAAmiQuslBRhbpPRUNwBNgy"), }, + { .name = IOV("McRUjzthaHmoyUke"), .value = IOV("jqFSxqGjFBdUzNsTHFyFsVTPBad"), }, + { .name = IOV("rhgjAvnxntYuPOSn"), .value = IOV("vLQFGIDNclyvRSNnBuwDTFSokliRchZhQVNfjGTasMU"), }, + { .name = IOV("wb"), .value = IOV("HYSLZPKoxzO"), }, + { .name = IOV("YU"), .value = IOV("qlPgjVKIRevUMRRyTMuyZmOCkD"), }, + { .name = IOV("aMws"), .value = IOV("XaGRjltsfrBsIZKuBVOYTKSdneTGDBEgZczulLeYhfFalVtKxGgJzBPwJL"), }, + { .name = IOV("stsiOhu"), .value = IOV("WsTAHw"), }, + { .name = IOV("i"), .value = IOV("CrTkZoQBHQwpKVRjKgQiJPxQqjuLTRVzRfuuUzNhwsQyJZzhqqPrbzHvjwjUkVtrPPEXqv"), }, + { .name = IOV("DwH"), .value = IOV("EhvkuldDwIjapXpNApxjTN"), }, + { .name = IOV("rJDNeRjnktIuLEw"), .value = IOV("Lp"), }, + { .name = IOV("hRyFzDHlsrPVluT"), .value = IOV("FvaledTcqRZRjYzfEtnBcFeOTlkxLQmxKuruaIMrFOQHerF"), }, + { .name = IOV("ccmIBYKgzKEdvbdQ"), .value = IOV("ipOidedozSkyfGdcBRvGSrtnxUOprbbCsfTSPquYZhqApReFr"), }, + { .name = IOV("RhskEknPapDa"), .value = IOV("ZLnkjlVxLcPYDSUAOeqkWnyAgVYEnUpTbCXHnFX"), }, + { .name = IOV("KYAvrAKgwhcX"), .value = IOV("QnhujuEGTvILSL"), }, + { .name = IOV("oBGTNo"), .value = IOV("pynjEPOQoxXzZtvBnXBbLdneFjPFDkVhlTfBwShBPufcyylGeMFFa"), }, + { .name = IOV("EnafVrqVPtGTMtNPpHou"), .value = IOV("TmQZBNouFzCwOmfBqfbmpPzmFkLSFfmVPMw"), }, + { .name = IOV("TvtXKs"), .value = IOV("vAzScgFwPergyMEkNGSqxBRQEIQdfZyyrlZrkRWwsy"), }, + { .name = IOV("KiEkRGuItr"), .value = IOV("wtPLWtEmMkdJuvuYsrNTxpfoLTEezXPbklbGqELrHztyTINpNXTShNtnrNcSiJR"), }, + { .name = IOV("WmrCIDdDswcN"), .value = IOV("mrXYaCRxriCuuVeB"), }, + { .name = IOV("bHDiDevCDwGjIrmc"), .value = IOV("nHehQqRRbCHUpgWZeCGYCOHnAmXgGmoQpo"), }, + { .name = IOV("GlvYkUlCclAHZD"), .value = IOV("xsS"), }, + { .name = IOV("DyBhbFrDBcATLjwZA"), .value = IOV("fNZBSEXyYJsotZierhAhiYacyMrbsHVvfhIpHhFfg"), }, + { .name = IOV("h"), .value = IOV("anzWUeRpwLXkgXFNPsiaAvajB"), }, + { .name = IOV("CSJo"), .value = IOV("JSHacsElpZIYSLSOxpLWWiExZiwwkGxmkVElGmhyyKT"), }, + { .name = IOV("bqM"), .value = IOV("MofOGHIARgLxhrOODqvHjZWEzgNxIbVCIJbbIEMmLowpJdCnCnpIHiiBhDxWcm"), }, + { .name = IOV("E"), .value = IOV("cXOoElLhWyobwbQVezbkiQnEN"), }, + { .name = IOV("tmQvhYrmamHDzXrvyjLL"), .value = IOV("UtXVgGheuqFIJBblQIFHzKIqESvIsBmCujiXsvNeo"), }, + { .name = IOV("jQvtXshvunvMbTH"), .value = IOV("ujRLuXzeADZfBevermdwQidnMSQtTITLdHssZaOCIxGmRzwyxVnDIwRyoyFFbHiIfKNOVlXYLmFbPQnW"), }, + { .name = IOV("yfpBVwOwsdMqIRpttudl"), .value = IOV("qnkvcLQcvkkvfvOTGsBDoQpzCZNIAgwWxSSuTDcEfblVBjjEOjUXFIfTtOCcdxdDNorJytr"), }, + { .name = IOV("jMygHK"), .value = IOV("BWyZLdWNHNfppAYlcnxGxzGUKwifYUlAiqmpCDVdVwBnbVvqmoizdpoAOYvYpEnzuTnEoZrWpNo"), }, + { .name = IOV("yYgJqxv"), .value = IOV("dxbGHLztkieBiLFJtduqsGIymXuSeRmQYPuJFYAkYWjPeNzAtqYKkRU"), }, + { .name = IOV("NpqkmIJ"), .value = IOV("LQcFFqFiacNIMKqclpuYVQeS"), }, + { .name = IOV("daKOUqXtlvLuPqhBmxe"), .value = IOV("tkEHJrHmTjsQakrnCyLENgXfxKPQPtUyrALtMpzVPJMwPkQJFlcLnGQZsKrdJjxU"), }, + { .name = IOV("UsGeGvVnMiYLpp"), .value = IOV("bGEAQSveFdVlVyoOtFCQggTozyIBGAeleQRtvZehItfLbkgTGVMzlDIURgfKFBsiyfntvkBWk"), }, + { .name = IOV("qZAORNYzAVqhRtTYJVN"), .value = IOV("qTAWYNJAljZEnxayDXobHxgQYDEoLXCnCiDzhLHabgsvXocGqvrHrgMOfSdqOQt"), }, + { .name = IOV("I"), .value = IOV("qNumgTeYuRzCKfsQpAVGK"), }, + { .name = IOV("AnodkDVKflmOxmO"), .value = IOV("ATXKhnNHejVqLSrklNqbbiUuvqVcWGP"), }, + { .name = IOV("Zb"), .value = IOV("KaoUmwnxgfBDsSaNOAJEALPRFKbXBpagKozpwdlyLuFDEUligfxhFXVI"), }, + { .name = IOV("qxDNDeBohrArPDGbdkQr"), .value = IOV("JEHzOIhdMeyNLWjHrLHQFhmXLLdMrPbVunRptlsSEqieRTBvbcmapqDFDHvRWXcUSPwMDzfDaVF"), }, + { .name = IOV("GVeYmkAlsI"), .value = IOV("ebOSBLxRkxHjTiLw"), }, + { .name = IOV("zjwyh"), .value = IOV("EpziBtsyfyvktwxoZblqcOJSsoAEiRrLZigRHfTWzPPlXXZSLKrEMh"), }, + { .name = IOV("vXXzXQktINA"), .value = IOV("ihynSWPmXgdFiclOCMRoHoUrnreqwKlcPvzcBgcGtPSgpyKSNIXVpvFnzLpYBYyqmHgGirnJHt"), }, + { .name = IOV("POSVekP"), .value = IOV("rSDfwEvfWaGIlcQgD"), }, + { .name = IOV("eGMbllv"), .value = IOV("EkSIfrNnoylIdhdGBjbngOfvPQVoCezHNnRLeBncyxHMWOhDcrTZeDgmkKFQhcdLBIQoHsqfPcsU"), }, + { .name = IOV("QeHJslxP"), .value = IOV("lEQpSrPhRzOcnQJwDSknPBiHUcQeFJEqpxYrgdIngzRZGXluvspDvDmgFvUksb"), }, + { .name = IOV("oReyuCbGOcrLl"), .value = IOV("PPiZYLSgUTZnAlRxfpawUwOghoXEMOODFeBPfCUQFBoYffPBwrYGIVejJvbnEiBpXbRQiGjbDk"), }, + { .name = IOV("FmCZQHJkpsWFBBaOLh"), .value = IOV("JFingtSPHGOpmgLQnjnWSdENwsOZoiVqAawhgpJrxVbZLzweOUPux"), }, + { .name = IOV("WS"), .value = IOV("JeyPQtkkVeXSYBdGwqlZGuQcaSA"), }, + { .name = IOV("PnXLuFicCjTuDNYDRH"), .value = IOV("gvJiXYCVnEybricNfKnMjxkhIJxwQnFNrPKjSrseGWTmaMtokhqbXj"), }, + { .name = IOV("EZurnF"), .value = IOV("XrmUsz"), }, + { .name = IOV("gNQmigqxEeoUjSNmrzt"), .value = IOV("dZgaSKCXLLf"), }, + { .name = IOV("V"), .value = IOV("QYilcTYysbfxvmNKLiXyqWBtgSYVEhkFRzYIkPcaqRaoM"), }, + { .name = IOV("XYgDCUTPn"), .value = IOV("qszRcBECTrDkBCZTmZGWUjwssTxTGokUYRDmbQjuZbnZGhODUgqZzldKFWwMDuiEGDKHBdquopli"), }, + { .name = IOV("eTYcqyCPeRPWqynvVsw"), .value = IOV("NdwWsFWxvNGYAedgMVLxcTLSVCUSdcaktGRjClLjcpbMVgoQDQbAHTnUlWCpiCztpMmIzKW"), }, + { .name = IOV("iOwcgGHbhjwpuCsFs"), .value = IOV("goAGxRiJjBCDbWSfweITIPtwJvJsXibwxfbOeZEvNJvFSnbzaFheyPWuSoeVDCulRFZJhvbq"), }, + { .name = IOV("kRcvYwQOftbpoSMcx"), .value = IOV("hzPlaPLCEp"), }, + { .name = IOV("tsXicQbiycAhRoweeMI"), .value = IOV("kBDRkV"), }, + { .name = IOV("vlDlmbT"), .value = IOV("SntjJAiYrsMBWOyikwERMDJDDP"), }, + { .name = IOV("QwGTm"), .value = IOV("zexlcqXReLxXaRueYfCTzs"), }, + { .name = IOV("zrPHMIpHrzhSQfPy"), .value = IOV("kgzJUGhVIOPkmeQsjYdVTpgYGkoLOKttUMTDRdhkG"), }, + { .name = IOV("dvLlSey"), .value = IOV("SPgYTfFxViZbjDQVStxkaQJUOmPJstAMIfHlxeEIkwTTnUMRQQXJEpOiruvFmcZNC"), }, + { .name = IOV("xEQDfMpHeoJMnCjyF"), .value = IOV("sRGEJNjhQPosxbJbQsFZnQOmGaFAiphdugjvowOIvlPNyfMsgEgwM"), }, + { .name = IOV("rXF"), .value = IOV("dNwGTOwbEPjGebWxjALHLkVMSWLDwZGBfKMKVrqUMIVKMqnUcmgOAbNcUHqyNEDpaxoIsHNQ"), }, + { .name = IOV("giAFgOXK"), .value = IOV("HRzEEnqtkFldcWKTdhbTtEPwGlENxVHCDLJxvAQlnkBBUwFcehIIZultnKJfjXt"), }, + { .name = IOV("xlZGQdQsufxK"), .value = IOV("eYqoDqXuxFxnljomTDPaAHc"), }, + { .name = IOV("YyMHJZspHtHsZNfoewl"), .value = IOV("Idbtp"), }, + { .name = IOV("bvsjFAJPBpbC"), .value = IOV("znnTnDKTPQfwMmLQaGPLURVLIUEjQiRGzaXjqZFtKsX"), }, + { .name = IOV("ENROhJpjmGegcX"), .value = IOV("QSuFVpwzIfyEeDhZRTzFFqeuyfZMkqXAEYebHKMTcfmUUKWyGQIcU"), }, + { .name = IOV("smQOlgmARtxxZl"), .value = IOV("BLroQzrQBmUdynKsYpcRxOVDYJGAgKoalzYEXkxljmU"), }, + { .name = IOV("qnABFewVbqXiqIpbkZA"), .value = IOV("BhBbjnhGORV"), }, + { .name = IOV("SQtyPEHvBVexnPTKKs"), .value = IOV("IqQbcoECICahPljTxOVwrLzSxjtDnDJDEFHxKXLdFFuvUnDwo"), }, + { .name = IOV("euiyslSNSvaNQ"), .value = IOV("mOgnUQyRfSs"), }, + { .name = IOV("ioQAsi"), .value = IOV("wCrCxNVJjLvjvNYtbnqXryodcIjYFBFHTnLryXsWZAYwkMGTRUHEomyeeZRvfwgjEPH"), }, + { .name = IOV("SHUG"), .value = IOV("TzcTSleSaDFUgAcXIRBlKTGchAeitrVoAWlKNhsFowEorbVVSLRHgFZMopUSg"), }, + { .name = IOV("IbU"), .value = IOV("ZgqQZzZXqmtPeoKVpzDPBdjgeVwHvDeTXQP"), }, + { .name = IOV("amgOjbtoYhOmsVhuylnZ"), .value = IOV("dtzFjiDECNcMfBZAzWnmcEOdGMmFOsmxscjYxa"), }, + { .name = IOV("zOPTtJFYXvhgBANR"), .value = IOV("yrdCHFoYWXsfUPuauJcFqeMvIJIVa"), }, + { .name = IOV("F"), .value = IOV("QuxJxvTyNuLHLakZnXPtvjQHcynjJw"), }, + { .name = IOV("iYrXfnNnxluN"), .value = IOV("oYyYJtiertFrnfEkcHnmvolnqeWIYwYNRctrUWTCVjeoKKTnjGadtFlJSfafDjXzM"), }, + { .name = IOV("ZsgDCoLjhbgbq"), .value = IOV("FDZFydrOjvTHAKUePLedfgJFKBFfmVzXFvObWFwJlOxU"), }, + { .name = IOV("Z"), .value = IOV("zhlUUKNfrNJzegadzxSIMuNnkryNFYzohlYqQIko"), }, + { .name = IOV("joTTuqELGFU"), .value = IOV("RFsGzpoAfDrLwunzXqtWRQsNnGXVMANuWDWRMqwQEZDPIaJUDZJyEhPeEnVpgxMdSuENJktckdcIH"), }, + { .name = IOV("InWeAZ"), .value = IOV("VftxbpboBnztUcuxd"), }, + { .name = IOV("hW"), .value = IOV("UfjCyyECVqbNTrqfeAiRINxcMfDQuQfAildAB"), }, + { .name = IOV("kJIGmArJdG"), .value = IOV("gXuUbeGurorRNguvuhmNWiDoGmgSZsSaCZVeYOsyTXPeAOnGbLgfOkzhwCjVXbyed"), }, + { .name = IOV("QdfFDrKZbmbS"), .value = IOV("TJssMypQNKTVzcgQCBcNcIbxNlnSZIvLwRaiVRjNhBTeMxY"), }, + { .name = IOV("p"), .value = IOV("SCwbkxSldVgsayyhsMxYTiNbPkYodiaGJxAheLz"), }, + { .name = IOV("Vks"), .value = IOV("FLjoLPnuwxqQhweoUkBlKPspdGsXWr"), }, + { .name = IOV("NHPfaZGd"), .value = IOV("kyeRQRpJNzVpYpXMrWgGAoEiWi"), }, + { .name = IOV("mKsSROXhJcJDaJ"), .value = IOV("rGKqWWODzYSeGhHRrZnXRFQdicITNbyJhgVrtQKJUkKoduHfRWUCZRQdNmjQeYoB"), }, + { .name = IOV("ShJPA"), .value = IOV("uCLkucacFRNqsWfxqCqlnOQMcvGQgCPfYXzmZqzHLbLQS"), }, + { .name = IOV("ZGadECeGQuGoKrj"), .value = IOV("QzBLCsKHQZYqAUPHOruExZSXtvGNvXKuKWjZmyqzOPWuALgUkeCUliXvwxWvFvagAn"), }, + { .name = IOV("HiWIbcVZnRYyANvwe"), .value = IOV("SIpqMWAEsVM"), }, + { .name = IOV("kYATmAtvZCOncyAgd"), .value = IOV("eOUhEEzJwuyQLQdNsADPlMvgGeVZTrPOnybmWfQLvxdRnzqNlcsuqwVuEAsgBTOTGlbijrNTjs"), }, + { .name = IOV("jiIcarC"), .value = IOV("AwcplhwUlHVtLLHqCOZqfXvzGKyejIaMRxFXfkDZD"), }, + { .name = IOV("cZZKbQlXa"), .value = IOV("UQeuRGKlpMZnNFCDWwNVizBBlKODPEjwZeeXwqnIktXGeeKEZkxcmcZfEyHEP"), }, + { .name = IOV("uEzrAMgUBkoYyMJmD"), .value = IOV("GstaJdfXYp"), }, + { .name = IOV("OrgZIbKLOENFjvVuxW"), .value = IOV("IMxhmHbpXFoKqcfjppdOBgGeqBFXOnJdEqnh"), }, + { .name = IOV("sbEMSZErpL"), .value = IOV("oWEuScWllSyNWBAMOexpRyzUeUBHYYALEtNxEsfMLYmnvUABRQpUzmruDyvgpKTZUaJHpEOmuY"), }, + { .name = IOV("N"), .value = IOV("gXWhTDQyEBtEOxBcaCANWECWSRfnurTobJzDJdyRJgojuNLFvOXoJAGic"), }, + { .name = IOV("bOrpKLCpqrAlrnF"), .value = IOV("tzvIrJZAVvwyzNdEWesKLjdvAEdqyBIVMefFrTFjpcraAt"), }, + { .name = IOV("Kw"), .value = IOV("kJkSpDqrbOdE"), }, + { .name = IOV("jOxEpw"), .value = IOV("rUEGofLFPOhlSdwHVdaXKcGwiVXaiIshFOjSJtXooEFzprKEGjuULEVHpkwYwSPsDVGHVUueZYsw"), }, + { .name = IOV("bzQS"), .value = IOV("prrzqENgDjljwmgpYpAdsBSPbNIqZhPrAOpdwzHl"), }, + { .name = IOV("vcygn"), .value = IOV("uYUiluZIRMJFkMIGKMErzxKXprroOmgTJtYBoGqbISYbrKIWLdFcIYFihlkWGAI"), }, + { .name = IOV("fp"), .value = IOV("KaDyjlgHYGppexqDBcyhObhKjGvDflFXFBYKauSIaTIqukcLjSiNBKwFikpRmdXKXroJUEnuQ"), }, + { .name = IOV("YHorkueHWGqXy"), .value = IOV("yFRbNZgukAdqefLcrC"), }, + { .name = IOV("Uh"), .value = IOV("qAzbToEPNrkXpxVhgOeBgyKGyHpeCsopvTsBNgljsqqfbMFKnvdlxofCfoeUCUj"), }, + { .name = IOV("MxMwFfrfv"), .value = IOV("VqbzqZmVusXyljwScFNWHDLXy"), }, + { .name = IOV("ugJirUIUeNDto"), .value = IOV("grepbgmTogUFNqQpucbUMpGAGbDIJaKDNDfsZoqWACSiFizFlzhVibneQjMovDhKKR"), }, + { .name = IOV("RgCnOsN"), .value = IOV("hZSjjbpzb"), }, + { .name = IOV("piwna"), .value = IOV("hF"), }, + { .name = IOV("JBCWsaFeUmuUK"), .value = IOV("QLLVMSLsofTZZnziNXeHXRXjJpITtaJCorDImYeTOQFsEfwA"), }, + { .name = IOV("PEDxDewhddNhBdGW"), .value = IOV("jmgnKsKgPXEIfwrUraAMJBpBEjdvxlNgJNXVSLTPIfbpTfFZBVDoUDIYPlykYssDK"), }, + { .name = IOV("lrbfEkjursTuEO"), .value = IOV("WzF"), }, + { .name = IOV("CWjjINBXYMCXDK"), .value = IOV("YYgVsDxjQvHhUTEBQxEzgnUqkqDJBcFRVStywqnrOiLspiFLvvxbRfLkXeYbHemwvjDoZnqVIVJeVS"), }, + { .name = IOV("OHdMBUcUoNRTnQDHhL"), .value = IOV("nIgRVlTEAkqEIEYIipAmAnoZESqISDbjaMZxuTJcviHbVWAaKfIQpBeaJhFDFDMqD"), }, + { .name = IOV("CZLInMAIniSnjAW"), .value = IOV("PivCVJbNriPfEJOMWbpAbvtcIEOdZxVenVlNkNIGSyYriMvKfFqvrxCaCxsSJ"), }, + { .name = IOV("SCkBCGP"), .value = IOV("DdOVwfpRKsRuuhiuaSHOGrOheEjPUfdiQUiiuXPoTAn"), }, + { .name = IOV("XlmXcTgphd"), .value = IOV("QtYzczSuPLihWsnAsoFHLeotMYzuECxyhkg"), }, + { .name = IOV("nqvfupyQiCiDLkM"), .value = IOV("wsqdvVZRyutKkAIhHCBtvtbLftUEGfbcxcdKMPoYxHOyeAHnvYXTOIIr"), }, + { .name = IOV("wDTCNUaGxx"), .value = IOV("BAeMSYwRXZDhAVPjnBdlOrfjmGBwZZWYsLPenoDZ"), }, + { .name = IOV("lZIleX"), .value = IOV("AjjpIktQMfczaEeDqxmWbrPkClCEXvUzTWdErxmFHbxmPAI"), }, + { .name = IOV("RWSFK"), .value = IOV("woYFrgGgukPjEnfCkxRTVMCUOhsNxluSgZSOaRWkkORjDiiOBFkzRvAozjfusJ"), }, + { .name = IOV("djSQkgLY"), .value = IOV("sBKmEqXqBSaSOovqtJSPitKzlSSBvuUZLslaraWXbksGejvvInAvYwziqRTqvsJ"), }, + { .name = IOV("XngB"), .value = IOV("LZnVbHHlKINvZTAaZYsZxydVjVpIIrSnFZmSXfgLgridCoEURRAtNnfOURZazxhmdoIelpQX"), }, + { .name = IOV("AgP"), .value = IOV("GQQuFOaVPqCVjcvQCHlFeKAvLQxvwPnkwsynFdmZOn"), }, + { .name = IOV("IaVpirpRZoC"), .value = IOV("hxxcgyRyPiARhMtWSyxrVIxCtGQCYqMHNMNCpELIaAkKzSy"), }, + { .name = IOV("rDJuCsnfDrv"), .value = IOV("ixrrjLYqTGJuUkajuZGBupZUYZetwaFyypSZOhMrXPWXpyvOdkSuQK"), }, + { .name = IOV("bWFH"), .value = IOV("THhcMzeheglfApOBEnRERmsLHllhFIlCOIGXdLFzaUXgvWJUaaP"), }, + { .name = IOV("RfTlAFcKzFwLZxsfanBF"), .value = IOV("KMiQVQZPeTvIQTYmyRqCxuUETHIYWUMpEbhUMqkZaQNvRwn"), }, + { .name = IOV("kcnNQNZVTugQZDNsyR"), .value = IOV("dffxOjoOWWcTnVPorfnGfBHsJXvMrwfardzRJuZdHIlXoHsEAUJ"), }, + { .name = IOV("MPzOLaFZWxDodnxrQ"), .value = IOV("shdlMewPyVwmNOJAeqtKxLMAshgrCuVYzbnWZssGAZPOspJshTdRVrQDUCzhldrZQZJ"), }, + { .name = IOV("trCdboArMgwxnwvT"), .value = IOV("tikLMgqgRbSXLCtSjskbZRmNpqbJKnjSeIsIKwLGJv"), }, + { .name = IOV("OHeFclbkmTdFokAenvrq"), .value = IOV("pNXONXbiyiQGrNmWYkQCLQ"), }, + { .name = IOV("oWArezyttReGR"), .value = IOV("zqkdWOWmsIcyNUSrvihFuPkgiJNITkYkzeZhYgKydGnMSntiIForEn"), }, + { .name = IOV("toDMXtJfPZKOljGNqB"), .value = IOV("efmoyInkIQZFiVeVmhaEfRKfJMsCYNNvPcoxvOLoRKRgXabouPw"), }, + { .name = IOV("NF"), .value = IOV("TPJeLblWhYwVIrbiMnAqlcISeRdYzZQFzSSHCEOGkLmjzcwCsKEJcdXs"), }, + { .name = IOV("ysJUYYfvRxjgSBAOz"), .value = IOV("HcmFLcdLqPyBjEVVsKuXAtvMTRobF"), }, + { .name = IOV("TBUwwWQzhLjg"), .value = IOV("rzRsJzAwj"), }, + { .name = IOV("oBtgXDJJItPusj"), .value = IOV("dMccrDDadiIXkspUHRPFyeHwQGCDTlbZrGDMAleJCUObIwjuoQGJpRCuRonhqntORIgdfq"), }, + { .name = IOV("bZQgZmn"), .value = IOV("KSAtXaYNPIMtUiLtOuPMEpWSLHyXUnwTbHHrsAwmk"), }, + { .name = IOV("tYjHUotfCZeZhgOnHsN"), .value = IOV("kmQEhctrscOnFTJPzdYPOorUYzudEHNfisL"), }, + { .name = IOV("gJPjeIJXX"), .value = IOV("yZnfDmmszZKDIePkRGTtWmLkBaTtUeyVzOIahrScnTWEZQHdOANjFiyeTBnHAHHkrPRCGRLtXDUtaTcQ"), }, + { .name = IOV("JtyJHTnNGxZbIJspb"), .value = IOV("aUnddyUMWDtvUBDXALkhzDQxTbYbejsT"), }, + { .name = IOV("tKlRFQUC"), .value = IOV("GoUAEaQdWlekvjsJwrQ"), }, + { .name = IOV("MvqTjhuydzDEAKdL"), .value = IOV("vcOnaQxawxLdkXKvyNCjWJonfzbWaRjEJVuovEp"), }, + { .name = IOV("z"), .value = IOV("tBCHYssnWrcUGOqARbSDqIrAaZXbfscmsNXBbrytlakmdFSuGvPrMeMxrzPHYdqEnmxOsgiwQ"), }, + { .name = IOV("XWXDYItBUCnqdwW"), .value = IOV("QdaeaYhx"), }, + { .name = IOV("odZuI"), .value = IOV("VcaNr"), }, + { .name = IOV("hQdRnMtbguRrioY"), .value = IOV("fIYSYpKKlcxjszqVlooVHjYuplEPIZDKomSFMEiVJybHLaVwUHsvrdldwgBpS"), }, + { .name = IOV("uVNRZfgvAdmOEwvmdXA"), .value = IOV("kUETwyiBTYtKOsTxHyyamWcmW"), }, + { .name = IOV("uNrTlsZqMokuxsfhcTtZ"), .value = IOV("ngBzpckEyIrEFS"), }, + { .name = IOV("JNF"), .value = IOV("ZSiPtpOoRCcvgmESJdCHYFZoMgSC"), }, + { .name = IOV("foeMoLA"), .value = IOV("lqkVajtJIUQBbeISwROFJvFwOlgAvMWaEiApMafIXPbGpVXyvhHnozVuqYahVRbyMBSJqtwYAZutT"), }, + { .name = IOV("SRjr"), .value = IOV("hqBVSShDmLeNlSbOvESxwnsdKfQLmqRedmqHjHOrcBOqzfwflQAaecfSiSb"), }, + { .name = IOV("WlDsLWLMLzBjVbUwRQ"), .value = IOV("aniQmYVZMnUQMayjEwnFUhXtqrvt"), }, + { .name = IOV("g"), .value = IOV("UClyIrvcrKhHihLBdyWwtSSTNBMvejFseXGfQzOMpIwxgRnEABcwRJXXDJRwLuGlxpkqiUDVPNudyKvc"), }, + { .name = IOV("qtMucECTM"), .value = IOV("vEJP"), }, + { .name = IOV("gAIBegPTLtDB"), .value = IOV("lYiaxWQxkCuiIdfxLsUPjELoiKbCFCPxftWXch"), }, + { .name = IOV("VW"), .value = IOV("voPvLZFdxKpVfCDbXaHLTBqXaJTzOUevBwngEIsbl"), }, + { .name = IOV("mNdEluLuQxhn"), .value = IOV("PqQeWjvhMOhNTTsPxvgcVoTt"), }, + { .name = IOV("uYjZJxcYE"), .value = IOV("CTMSphWELAOkkaKzIaXwTBwdOxNcpfODVfsoHEXtWIrr"), }, + { .name = IOV("onHUw"), .value = IOV("IgMtjgCTmlUZpRDbVSjGNmDTXDe"), }, + { .name = IOV("qIoAzlf"), .value = IOV("BrecvbqJlUjhrbQjOlKhdWcBLhcpip"), }, + { .name = IOV("rSTwcKLtEunb"), .value = IOV("mkWjcSPWHXQUTwdskttolUOdKqysCXlrxgJgthrGDbIJuNlwYcHPjSTxJpEjteQDECayXKLT"), }, + { .name = IOV("RElTBThZksDxTSwZ"), .value = IOV("xRJyEyUJozzoNBsddbOwUTyxfGgHIGP"), }, + { .name = IOV("gXkQFMBPqV"), .value = IOV("wRGPUFOgWBrJBUcOgvgcOWNYKSHodMYWSEshJqCKNASELXPPMGXNfZC"), }, + { .name = IOV("WdSpmDkaUC"), .value = IOV("yjufkoDbpwLAzwLFrHJxbmfwEtFwxyOPbuhhgcWYMXQSrbHvDFjGHxWdwATvcAsh"), }, + { .name = IOV("vQslrkijsOJNeXN"), .value = IOV("qeqdQoqMOzmFoMGJKVcuMoBdYTUTvBNUVPTEgKokVjUaxgaB"), }, + { .name = IOV("sHihDblD"), .value = IOV("mUmZEscTzAxbdiadcEpJMdwADAXV"), }, + { .name = IOV("xg"), .value = IOV("qxKJKGhCbltECzZbJCmHWXeYenuAZonYCGIoaIIiLRFCFLljFFWpyhtSYUqNnGnURWLdjoUZUDOX"), }, + { .name = IOV("SDjXOcuQvjzQbgwqNm"), .value = IOV("MaOPsZRKyERTZSfmapTAgXbrLmmQWpfAHyPsfdCwKCChwoBkOuAHlobguPnY"), }, + { .name = IOV("KtDMR"), .value = IOV("hYYFvtNDsLbf"), }, + { .name = IOV("ygNPZRNVFdWznApXUotg"), .value = IOV("XafE"), }, + { .name = IOV("witoVqpGNBOVJFzPMwk"), .value = IOV("CtfpqQFjkfPweqlwZnUftmuJvnaUSPwtLTIFBPPYEvtyvw"), }, + { .name = IOV("uRca"), .value = IOV("wJUlKjIQKAKBCbFpXvzsdAKxXdGMOucEBEbqhQJwhqj"), }, + { .name = IOV("AuGZeXahMBxUJWZdXz"), .value = IOV("GiSQzDqYMnFdZjdEkapUxdDVK"), }, + { .name = IOV("SwHvxlEN"), .value = IOV("zZhIhWcb"), }, + { .name = IOV("HYHSII"), .value = IOV("oBzkAsKzgBFoTeSxpcb"), }, + { .name = IOV("LrLqZXCj"), .value = IOV("oRqXlgWtnl"), }, + { .name = IOV("iuOVYJebbmm"), .value = IOV("zBLXAyTysLFsmOdVhRqakCTaCDDhWVpJvAMyppusPLCUxbXKOgUSZrSuStyMCzpjvrT"), }, + { .name = IOV("GWTEPbciiRkB"), .value = IOV("UiEfoXkTeUZWVGnJhaSOfokUffuqMcwDXKXghSEdUFoMaYHlWImMtcizemIDUzyW"), }, + { .name = IOV("rZrgxltD"), .value = IOV("NIai"), }, + { .name = IOV("nyoptgEfeDGWdexYjv"), .value = IOV("jtHjNcpIDPSrZWtOyShonDfgqTPNRgJTcyEaan"), }, + { .name = IOV("wpePejEqKxAZnIoEEVbr"), .value = IOV("sttZWxiWSpzjTdmkyPlTXUmvUeFRNmBhARIAidcdbz"), }, + { .name = IOV("UJSzTPJnZofxQ"), .value = IOV("SxkKjNzLcOMsnccvayamnWnuXegvwsfWUnDeFUPYBTYlMplkcSbbHcHlFchEcgRycZUYfvLhWhBoDzj"), }, + { .name = IOV("ASgFZPtuhbZIp"), .value = IOV("mN"), }, + { .name = IOV("QFjBLNw"), .value = IOV("dTuSWQuOSkRoTTcsqXykmMmHBLDeAUCRSsviJKRXMfnCVBaheJOBYDhAnJeWKeqPS"), }, + { .name = IOV("r"), .value = IOV("vTRwGDcOJZCzOhlBrOrBSZLlvkHP"), }, + { .name = IOV("TXrcm"), .value = IOV("HSZOxWHGMpWyd"), }, + { .name = IOV("cMADjFCYcrH"), .value = IOV("CqcatrpoQOkXiyNjZyHBEGGjVIqdRLKfSUIjpJNcQDJBjtT"), }, + { .name = IOV("CWZF"), .value = IOV("cmiaeIsmSdUMzyli"), }, + { .name = IOV("JMFQvzWdPuDNfdINzI"), .value = IOV("bjcfGjIHKyaWXOqEVXsJCuQhxpPlHlAUASlLGqCNzDkHuorbOvEErACTyCWUHNlJueNJcOCBThQ"), }, + { .name = IOV("gYQtRiUkyWViXUVfZTP"), .value = IOV("QHaBlUP"), }, + { .name = IOV("VDlMQ"), .value = IOV("yeJatHCJIPTweoTRlfcxXgcpjjInhfgC"), }, + { .name = IOV("VCnZVb"), .value = IOV("XxXBWRvCiIzkrTFLUdGixzeowpHSeIupvQHZIUqhWFdWAJPtpTR"), }, + { .name = IOV("GaSzfleYSVBygx"), .value = IOV("nMdyiJHPyePiyDQyHQgwpnDUzDQpXeJwKVoyIMtJHwqEATWAuKTNRiPtyDLrNRA"), }, + { .name = IOV("bVHBgoPDYyuKoUAqW"), .value = IOV("LtzEQSnIrrnqjIWzixoNvNEgXgffhAEkvRoCEKpiYUicHAGtBvS"), }, + { .name = IOV("tstCRYdvGSkZlPLjCaXo"), .value = IOV("ogDrDdlstgKbHyPeaQRGMPpyTFtQWEmmIoZlLYyQvtYlSrFOezxaWbjkiXbaxXHXlqVaLdNIY"), }, + { .name = IOV("ElHtBz"), .value = IOV("neRV"), }, + { .name = IOV("rEsQBAPcPes"), .value = IOV("LuJMDDJfWpAQiYqOIelzSVWrDywSNmfre"), }, + { .name = IOV("fTkvxyDltst"), .value = IOV("BUUXBXmmUjMhnhzdwshvRkkRcSREIivhRKdjBAmQCVVhY"), }, + { .name = IOV("rSvIHtEGQvm"), .value = IOV("DPOskubftoeaZxublinjkEmhXVtWiyYqevMBxXYNUGXmdcsIq"), }, + { .name = IOV("y"), .value = IOV("xRuULWxofVIwLanvJApEgkEGLBcAnuWERYlVNlZeOjyKfDNJmmpDlCObTAqba"), }, + { .name = IOV("OAOmOzhxVkwoCoCo"), .value = IOV("APCVdLgjpcXZDMixjIrsWvVZcn"), }, + { .name = IOV("tdldfbgTF"), .value = IOV("fYNipIGKRcfrcmfCuVeLKeTNdvc"), }, + { .name = IOV("rKdGQiPaRQwLXqqsWgvN"), .value = IOV("OykDdHRbegtVYcoipQJFstLlrJrUbWmtTZBJSwaWDXfUYVglVkkpfXNV"), }, + { .name = IOV("qdSh"), .value = IOV("QxOUfqJzakKTQMVjegUMDzfKJe"), }, + { .name = IOV("NhHaOtPWXdNUpPuoJ"), .value = IOV("SoThiOQoCLqauvBwPncii"), }, + { .name = IOV("OXKXIxlbppyWl"), .value = IOV("XevhcBcttJwCbyyBfegNBUCqLzsjMKHbXBbRjrmkGyONRJvSVfmlsurfkkRvDACpVscMgWKA"), }, + { .name = IOV("jEjpZfeBYMAEdp"), .value = IOV("xIRWsndDNqwGiYJMIknGMDmANmjvuqH"), }, + { .name = IOV("QZSzoB"), .value = IOV("qhJSBSuGMTCembaNyTqXBGYyhZnmEw"), }, + { .name = IOV("DCTorjlDHJmseolwoK"), .value = IOV("kWn"), }, + { .name = IOV("qW"), .value = IOV("OiQXOYCYmmQMvRubDRTaBBGpIkKUoKFNDEPViSaouqdShzBVKcPQOQGjMMwYJmlYIXKFbnC"), }, + { .name = IOV("sRdc"), .value = IOV("AGeligyegCvXcAhwaIGQNzOWKNWb"), }, + { .name = IOV("ONDOl"), .value = IOV("BrbeMNsTvMxJhyRu"), }, + { .name = IOV("OxglgPoIb"), .value = IOV("lwKyoSfpuKPuNICVVPTdKlJrqqjtKJUVlzxpQ"), }, + { .name = IOV("Qd"), .value = IOV("GqlCsiQnZSPiKCTeUFjFaBtYfIsCSLYpAaNrrjHdgFEyM"), }, + { .name = IOV("DsCESmV"), .value = IOV("EQ"), }, + { .name = IOV("nLPNhyUwHihfVrf"), .value = IOV("GGvPgIRYdTGsKyhqMeQjrpavKmJJALWQzJ"), }, + { .name = IOV("iFdZfjcz"), .value = IOV("WgacpKeyJrnqQCUDjAPgMFZdOjATZFFYnLheUhvHVQIbyUouEVMOWfrsgIXYYSc"), }, + { .name = IOV("KDidvVgeuOIrAPW"), .value = IOV("fPkNajgNKtDxnCOAPEDvrkXDwxQTcTydMtuADPHBxEhIgiDFFOsEJgWrrIYsA"), }, + { .name = IOV("M"), .value = IOV("DFKHCpygNjCAAnSiPncSBVsHCIaQazAEDBszTWcbYeRzJPvkHksTfXPIhHbGAl"), }, + { .name = IOV("sYiktllJVEBIyzs"), .value = IOV("mswzsnYfcHdoPQnUBhlUKRqjpMfrpxiRtTPXcGbyyRkgRdw"), }, + { .name = IOV("KXv"), .value = IOV("ZlwLOVijxLvYncwvkmxPNX"), }, + { .name = IOV("MV"), .value = IOV("AVbAjCDZZZAGMUjJbn"), }, + { .name = IOV("YynxvVR"), .value = IOV("xTDZZE"), }, + { .name = IOV("VDTcMXhrgKNN"), .value = IOV("wWzdkCFrEmYncZeLoYxNw"), }, + { .name = IOV("YKcPhAJdyfHc"), .value = IOV("xfPUJAqXOAzXHGmOmiivLRPuZIgzwKuJskGbXaVfqDipxhMhkrcrIFQmEuKlZkULsEeYIwy"), }, + { .name = IOV("LeTRQrRhMTv"), .value = IOV("BrIxtSNliSxHplUakNPVhgEbYXDFjFLCQugKcdwiDPXpoBbwibQeSjZFDUaBfmwgCPXPEQH"), }, + { .name = IOV("ejmDjeD"), .value = IOV("mnjVOABjDCkdFbINXPZWOKDnNOVVJyLAuKwgIBjnnfEkdq"), }, + { .name = IOV("JKXeh"), .value = IOV("trHIzxUCQLfEGXjH"), }, + { .name = IOV("HZJgf"), .value = IOV("CCEBTRvRzcZEVhSPXNoMOrHoILaaCgWCovAEENxnRkNhwdGEMkP"), }, + { .name = IOV("OpuwddD"), .value = IOV("SLASwlMLnuCEYCyzrogpGgZaasCujKWLyaeTncZGAGnGm"), }, + { .name = IOV("mJkv"), .value = IOV("iCvBphyQjmjiiuGylFyXKZRYbgZuoUBQqIu"), }, + { .name = IOV("EbEXkEKJKjcETYDr"), .value = IOV("BKvwehVTluZNfsyYXRPDWkYEsityhGkPmftmcgTnLVEWcIYBsZBOrVOLeSQP"), }, + { .name = IOV("taeolCkFvAnZwEIdTO"), .value = IOV("FaNRMNxgksLdNDhZuYtvARbWkmCoDAiRCgDShpTxCDPrqweeJXSzybSEXAqaUcqyjhmBfhEICl"), }, + { .name = IOV("lLdWByGVFnBAnqKKYAAb"), .value = IOV("RFRFBlSUgdpVKXulQibEjkVctXFLIYwtcAQOSnVqUOJRLuafVMiIJxxKUzoh"), }, + { .name = IOV("kLMjZm"), .value = IOV("AdVmkutGYkRE"), }, + { .name = IOV("dzCQCp"), .value = IOV("EzQnaEeKTYzOATprz"), }, + { .name = IOV("QOgmq"), .value = IOV("VWdNCbrGRAILoNhiw"), }, + { .name = IOV("xnCRVnmXCVONBzkY"), .value = IOV("WBxJobttRpWLmXK"), }, + { .name = IOV("Ua"), .value = IOV("WuGqhijBQucBnmRmxfGvnJBVWiwpknplMTyBfOTbKswEeGVEdPifonL"), }, + { .name = IOV("oJelzcJBVZrvsml"), .value = IOV("DgvRFrNlshTYSzrVdZZIUpYqRlYlGEDgOwxLKECgCnsQZmYajLvViAsSSPvQwpucjAkJqKZBN"), }, + { .name = IOV("ffmbBvNpgShjQH"), .value = IOV("VaAVRqAGzCJezYZyuaUAVngjwwRnOPIAtORAPWHHmDzBbRUDELKonKlXSqUpY"), }, + { .name = IOV("qSIdWOtuoq"), .value = IOV("RALCfZszVZSCxUXcocxSJQSznEIyYdVsNykYImgTBInbTmKNCTqChgnoAIITDKCxozM"), }, + { .name = IOV("XPJTeIEC"), .value = IOV("YBInkbXyrrdIWyLRSOjyigiFXUmDiTnKsWe"), }, + { .name = IOV("krPXajR"), .value = IOV("eFdoiztHSMlliNGIWcUwEQjoGLhSzTInAqhwncIsjtHxshMmkrtozJQfwhTejvl"), }, + { .name = IOV("GmyFlQNEICfaTsdMOp"), .value = IOV("NxIERNWV"), }, + { .name = IOV("LBFT"), .value = IOV("Pci"), }, + { .name = IOV("LZiSvTDdUPucci"), .value = IOV("TxRlpjCKCSJpVaSjKXpWEgESPmroZFpnTiGoQsZcHwIRaApStCYUgmnPwgOrXEfqrfMMqsv"), }, + { .name = IOV("dWmKRWgKmdMc"), .value = IOV("RBzZpYFLagepqLwNLpgDcqaaS"), }, + { .name = IOV("IpNVSXZe"), .value = IOV("RAJba"), }, + { .name = IOV("cOkQIbgvwbQPkzAlDEzd"), .value = IOV("XcqBzAYcmQZWERQfqyUtpLIHUfwJESxoQLHEBkeJHjmHzdssnNaOxIk"), }, + { .name = IOV("nDLCxPtNAW"), .value = IOV("twxnNwMltoqiljjbQeKiIPPqimWTefH"), }, + { .name = IOV("XmpPpmfgdaahRpB"), .value = IOV("HrVUFqjQphfZNqkhfNXLKXxzrauYvQireiviuUwRgTmESjulQHZGgyoayuJvlEJvdyNOyGuGGpVOxq"), }, + { .name = IOV("aQoDr"), .value = IOV("CwmWwYHMfKHCpIrsCQAlIwKkGbYFehatmWxvtZOaMkYfzrVIfJyxBVvqiDrSjqMDYqFOKS"), }, + { .name = IOV("NkG"), .value = IOV("RuhTieopSDOCcTM"), }, + { .name = IOV("RvODQStrxxQwaOMmY"), .value = IOV("YCT"), }, + { .name = IOV("SZ"), .value = IOV("kixjZcbujivEepsAzOaetMYmXKjAJQWMiEfZYLvCLvHgnFecmktEm"), }, + { .name = IOV("evDDRXfmISw"), .value = IOV("JrptUcMXJbhnyAgxWJOIZHCHZsHFNKIYHdNBTpn"), }, + { .name = IOV("ZzGeAvvxuqAnpCf"), .value = IOV("cQ"), }, + { .name = IOV("AYVXCAECRUthwrDPIYd"), .value = IOV("afhxCvzTGApJMDNgPEGhBehqWEmDBAiJIyMqUXKLDjZne"), }, + { .name = IOV("BCCRszxXEN"), .value = IOV("ErLHpcGOiEvwvdJwWtQgSwcbLJOIUdexeLlEBfkWEGVjRJKWvstBHFKefnsX"), }, + { .name = IOV("o"), .value = IOV("iykdtBAXfpDkjSgnqmQgNpqfbEnSyPMkbvhBGfVfzDPdOC"), }, + { .name = IOV("BNPFKAHMYBdYBNkJRFxD"), .value = IOV("nJvhACKjnYDZuitemsYiyhhkqNumXVkWXfsvnHzYUpyAIwoVdEqWesNe"), }, + { .name = IOV("tsEC"), .value = IOV("tnxWeSlwDeCYzmp"), }, + { .name = IOV("WsrTDmETH"), .value = IOV("SuWqiUlGIyIauQvezisdtNBXCjKpUQkWPaXyWgKmwgySMOSNKnGxnjfriBP"), }, + { .name = IOV("GSISlmcTBNQlL"), .value = IOV("RdamcIITHkCoOyIlYTKIQraaBuLQtKCYDdQMMnxIIDjWmxlIvxaRY"), }, + { .name = IOV("sTN"), .value = IOV("qRIMjRrDnZltlKN"), }, + { .name = IOV("fSNPiaewhonv"), .value = IOV("qnzdzMpctlOFoFgpUkCkrDZ"), }, + { .name = IOV("fUnmjwZoORMatzlgUkI"), .value = IOV("ZPlvFyWtDwDTAspttqyURMgurRSkgedgIQSDzLqpEJKvsWTas"), }, + { .name = IOV("obBAHanqzD"), .value = IOV("JtGpMKfHcHobGgioCTnOQzodrdXbgmGPYBSoaNxMVRrQWhthgUQlmBIBFIuqAiepLElyvkZJJtagOz"), }, + { .name = IOV("rhOShVia"), .value = IOV("BWthovcQokLRuZDdiyjVwztbBOESxoqiaeTddvSvAbnsdIlpieJZDbZdFWbpLOfuPaFUp"), }, + { .name = IOV("UOSnDyOCzsGlzkPmyy"), .value = IOV("MsVIRlJgUHnSRtWRs"), }, + { .name = IOV("GBkWPsVamtWAj"), .value = IOV("gxkTqX"), }, + { .name = IOV("tcbVp"), .value = IOV("VJGsbXRbeyZFdgGzTpPEmDQEOmPjawqWsebQK"), }, + { .name = IOV("RIr"), .value = IOV("BLLFksqebHXHYaAyZiTbksCFFvoyxcZXrJwTeYhaprMJxrtSLXLsgtaPlG"), }, + { .name = IOV("WKVkwDI"), .value = IOV("tQwCXQyksHHsbxbQAvVLdIDTLXJNGhDyaXDhefTilmdCVapIkiOazevJMsXzfnabAAiNuwkrUyZZbmgV"), }, + { .name = IOV("reOHsyNqwjzmTfZMPIPJ"), .value = IOV("dtSHikdfTSNPLt"), }, + { .name = IOV("kPc"), .value = IOV("tZWKzkBsXfqshBMQProjdYNILkGvpMZLPioKMfNPzMSePYQVTIZtPyN"), }, + { .name = IOV("ZR"), .value = IOV("qBwRwGcSewNgqNPLTDohnPGZKiVOSIiW"), }, + { .name = IOV("XiDbRDzmMtp"), .value = IOV("COpQTvJBiUmFGbNjZeqbemgHtBlAEDZZljHXqwfKRCIeODai"), }, + { .name = IOV("ZGgnEqzwvErCDgtA"), .value = IOV("gkEKwagqQSyQYmqWOmridzVIXouMazqcqICHxYZeSyVGVrcbYHXsQmcwLICncETVExEJCDEEzvwPkOf"), }, + { .name = IOV("YISyJxzNWiQlhiYgwZNp"), .value = IOV("EbltfnaydoTxBF"), }, + { .name = IOV("DZlZlkwuWKUHQK"), .value = IOV("YAexZqUUrnpzuPBcmigdWgHfsLouovGgQciqTZbzcJsvhRepiJoaTqBRyZTXRdOkCay"), }, + { .name = IOV("yCThzcNBPdrQHtcnLVVC"), .value = IOV("JuexItHiOsrlofHghOGIXmzowjPmacHhjqjHEvsxvQhZlTKxxgxOXpYnqrrNSxpqNCPHLIdPUOeeNlZ"), }, + { .name = IOV("moRZoDfp"), .value = IOV("oCohQtdOrAWsikSGpAIkBNscNxAIDTjFoqEtuYzFWPzzHPeWneHpOSRSUypJEXVgrUvGtmHNzduLOO"), }, + { .name = IOV("SdaSrI"), .value = IOV("ILSFprbztHXXaMKPpMPNkLkoFMyuzHwXNFvyNKBoMaNdCmPshilKEhzpfgByknODHYSuAP"), }, + { .name = IOV("YahTL"), .value = IOV("nQmgDAvTiPvsMITOvcQbHlLi"), }, + { .name = IOV("ZznGrV"), .value = IOV("kTieuKQPxAOBzNBpexQphMWbhSqgMscFIEVBPZLdQCnc"), }, + { .name = IOV("VMiZDgYwRbgCX"), .value = IOV("bAgDyPOmQFLMonIQpVdTsSbOQwsnkQMfPMOBEbxHuYogEGAaT"), }, + { .name = IOV("juL"), .value = IOV("AP"), }, + { .name = IOV("E"), .value = IOV("fhIDGKlbjurRvwudWJOvNipXXRv"), }, + { .name = IOV("gkaPjNf"), .value = IOV("PVjBwOKRCBoyeFnokqpaLAWEYJBVbuqJlbrEqSpzXSQURNIZVuDbohNMlXulcsdfCExclVJRxqH"), }, + { .name = IOV("VmUfpJQqRwQItfMi"), .value = IOV("TnenIgIkeRLikCCKosVkypzOzYGHVtSKjKEjNdUodjgENeTbCnMxGZYbFOKCIooqrnznEyaOJxxitrD"), }, + { .name = IOV("zFVitKGcxxjbXsNeB"), .value = IOV("dYfdJGyxizIpKKDPc"), }, + { .name = IOV("bwdlVeit"), .value = IOV("atSOUQSEkTJdSyYaKSblFvROZgfkBIQoFrfSIcVYBnaJOBjk"), }, + { .name = IOV("liYrIWLj"), .value = IOV("WmIWnXv"), }, + { .name = IOV("rUaYYRToqpvIyWmhs"), .value = IOV("hQBJTzXldmUGbvlYWAZOtmdeUKAEe"), }, + { .name = IOV("W"), .value = IOV("EscRAaFDLpkVwSxsSmrxvaknSafqoniUG"), }, + { .name = IOV("fShGdEfOhTkjDHHU"), .value = IOV("JrJayyTWeZbJwBbfBWBobMAONLFYUgnpyOfRGlMCTqbrJkDjewNkByfIzPMUlLTTmwcmXWltpiL"), }, + { .name = IOV("rVcNCwhXJ"), .value = IOV("LgWMppmYa"), }, + { .name = IOV("WsuLFBRePHDwoHIR"), .value = IOV("XlnBvhICKVEuTkRHrvxjDkrDZKCjeIZOYewoyFXlkmWRWFBi"), }, + { .name = IOV("WgYRCHABfCDSpjK"), .value = IOV("NcPmvjqns"), }, + { .name = IOV("iCNZoZXJQrvNl"), .value = IOV("LhhuYuwqlQJQrckKsAuEqKvLdOMsZIsypCYmWntxubFXfDkKwqqRLuSbOdEQeVonYOl"), }, + { .name = IOV("LHKbXezQXgETMqqhBy"), .value = IOV("ACohJEoNyJWvwfDgjDDXPmUpPJuLpoZgpCazmaK"), }, + { .name = IOV("RFlGow"), .value = IOV("YkuuvzibWfkTnGpvbaeAaIyHYHSkNYitPeaRUaLbkfmsnvQEfgeTHsiBfYFbDiuiAWyBzQzED"), }, + { .name = IOV("sdtjdTjpGZXHBRERU"), .value = IOV("SrCjcNWghrPgRF"), }, + { .name = IOV("WcDqTRGVtrRohB"), .value = IOV("JyJzEhetvftqOxymuE"), }, + { .name = IOV("yjXVZfLFHIluneqSVuz"), .value = IOV("MykUjCfIpgEtQbcPZCcIQuMMgavztzXHcwIJOkGAIcfEqCdBn"), }, + { .name = IOV("gPZFMlxAS"), .value = IOV("jKkOlnfWSSChsBPNieovMwIlLCywxDMqeWuTpdvxqEp"), }, + { .name = IOV("NYlKgJJQWsSKeLAYCdG"), .value = IOV("ekFRbrdaYwPtqkzgGnmzpjGxpGZwfqmRdw"), }, + { .name = IOV("xKvcchbEiNsiAfV"), .value = IOV("YxTinNk"), }, + { .name = IOV("mhvWpJOvQuK"), .value = IOV("vpjpaGJqTsgttRBDbyukxJrz"), }, + { .name = IOV("hjtltOuTur"), .value = IOV("MEttbLMevfEZla"), }, + { .name = IOV("WzUbmQVEQJeDRLTl"), .value = IOV("xvNYzTlRExLsxt"), }, + { .name = IOV("DihRYWQAcjOryKAnFl"), .value = IOV("IpjycKKfLaDUYpSCDlnuMxaNKLwyTrqzNrDkWyEzCYakClDvtMjkjbmNCxYOIACLvRnitxIzYyFfxccp"), }, + { .name = IOV("yikvOndR"), .value = IOV("lKvbbFifdcQUYizvVmNTtcFqhWDRPrPfsoVCrflPiXsBWNNOSQwrdGpmPK"), }, + { .name = IOV("qMOqIgQMQat"), .value = IOV("wPrgXJjldNixvOBzitrFixyRmcoaiKAbXepc"), }, + { .name = IOV("K"), .value = IOV("vTdgZtyFZABjSaXCyOzggBTjOYmdBmKZrkfGYDBwhsAlxjjLqsUMOieaQgZXoRkIBbFLECvZLsCVHV"), }, + { .name = IOV("CPSYbX"), .value = IOV("MQedxqheQXoLwereufNSZBWSUowqTdCsSOuFgfnyAVyD"), }, + { .name = IOV("UsBWDkKYPrlgeRDmVfb"), .value = IOV("kTsuxRIJUDjrSFcSxyYpmrkppvygCQNuAMLbMDDYqofoxONZTZJFnRmOxZwTKkctEssvN"), }, + { .name = IOV("nYpgTvCkJbAlg"), .value = IOV("xdIdduYgtrfPbuNDtlhMqNYXI"), }, + { .name = IOV("WOBKzIsQJWtNg"), .value = IOV("mZtCdBFZjGnmIPEoYEGarzrcLNVkNvtjIpCHlfcrTcDtcOPtyXWcFTxwB"), }, + { .name = IOV("tVlkZeVdUDtPNs"), .value = IOV("SwdeHNPmXLBwiGmHILLjFwgWQIZdNp"), }, + { .name = IOV("uvgLVyL"), .value = IOV("GdYvZaYOwPvtMnxMunEdeBtOUGJSCSlYEfmcQjzIMhiAbTnsHGJNjHoLn"), }, + { .name = IOV("QvnlHUlzKlNMSfLYOXlE"), .value = IOV("UWmnSlahXTcbPsuaVpuSgrloozFcAcEFYffUmuPIhDUUKUBdxySNvvDIWGJgXNfHe"), }, + { .name = IOV("Rz"), .value = IOV("VpuVNMxNPOoegZKhMxmJMvKfQCxqEDyTCLiYiqIJTtzkHiBGYxmtYeSIOV"), }, + { .name = IOV("fYtWDIe"), .value = IOV("Vl"), }, + { .name = IOV("eBkbgectBcdWRlsQKCw"), .value = IOV("TKODutQtRWoQQQqZntLTaLrlZeInfmdBPbJTsJjMriGBiIeFeb"), }, + { .name = IOV("alDjOoBkHLhif"), .value = IOV("omQKXYmNcmvk"), }, + { .name = IOV("ZFIopjGUeflONhlpVkB"), .value = IOV("GjXDVpgnxXZrInzGSUQxP"), }, + { .name = IOV("qbvDKJNTwAcWVaRVKgJj"), .value = IOV("LDwKUDFqehowhiScZnxQURiOcVowacEUsjsUgbVFIVaFFtuHJUubfZpUxjwmf"), }, + { .name = IOV("zPokjukwQsngH"), .value = IOV("DTeGUGEWEIA"), }, + { .name = IOV("mjouOWzsDgwg"), .value = IOV("EZRRlVadZIHSdFpEAtGJZUcSoSjnUFgDeCkZJpGcWruyURO"), }, + { .name = IOV("qyojEvRkUr"), .value = IOV("rrVILZAKTdmmPYAjAnRxySFEY"), }, + { .name = IOV("GQRwSugjjFFdv"), .value = IOV("YjljHocYYHQNwEFkUOWVKJmpdtLWXhdAzUCVCjOodxnGVJOmzGzgoWZqCNRaAfGshWWaUaAHibL"), }, + { .name = IOV("bPPXDGmedsjEXVRwYw"), .value = IOV("ybBRcjBbWEuORdGwHYOAH"), }, + { .name = IOV("JiwVfSxA"), .value = IOV("VMNgcPXQPgpzZuHYGtiFqyLSpJfdiZmjNAQTftCJLesmnXPInBPlOGDmpSCtSxprDZqzXLeLyIvP"), }, + { .name = IOV("Hjk"), .value = IOV("riKzQttdveaJgjtUxHEoWyNVUPSjGLPWzpUhyMAhcTpcprQhKOvrfscawSjUKjFyDtbnrmqbsBcKmep"), }, + { .name = IOV("wno"), .value = IOV("QkFagHbnOrSZxreYsgxhZQiQTstucRcYqAGdXcV"), }, + { .name = IOV("anImmPtVLFPzEHho"), .value = IOV("AxfMqLwnSXVRnjFcCIivawPwPJpsAWTwVpUHEPIbmqpcAaFBHFqxF"), }, + { .name = IOV("BzriIu"), .value = IOV("FHNIUapQGfVpgnssjVLwuMxPXokpSpigvdRVLLBsaAEGImSfkrMT"), }, + { .name = IOV("zviuOIgtLiKJVCsUorpA"), .value = IOV("zjVdySvdRhnxUTDuZzhrkL"), }, + { .name = IOV("J"), .value = IOV("sLGCRXwINUEiGkvyot"), }, + { .name = IOV("F"), .value = IOV("XqCrEKVzxkS"), }, + { .name = IOV("wqXKWvqBz"), .value = IOV("SdnSugpoQBEQZHRtreKjPrRmNwZToMfCXw"), }, + { .name = IOV("ngw"), .value = IOV("wktQCctgfzXjflsmTjqYYbigaNaFZfIBSPhNJoVmxxcXoPvMFsWbOVTQFpItLGsIxAyCWftcsHXqxQml"), }, + { .name = IOV("aO"), .value = IOV("pRKlFciKzfDuPSepylWUqpSyNYghdHopXXdGwpstCgebrRbTFAVLjDPU"), }, + { .name = IOV("VlbXWpucyJx"), .value = IOV("mnsdffnBLhqkdGWtTVHPCKblpMkwuDgiDZdWxfFWxqYRWejUVYvoNDKBIcmPuTMK"), }, + { .name = IOV("la"), .value = IOV("JoumnXySSxNMTNDwZjelZpDoLUnMIqmmZNFrDflb"), }, + { .name = IOV("VctRSjwvvcRykvkS"), .value = IOV("tCkWuiVqehmWSfyHUKzmk"), }, + { .name = IOV("JrufjhGiaKJZrqtybKJl"), .value = IOV("VkdDcRDEtagqDlVNDleIBTEbetnlpWSqlgkeboprYMIOWhYQQkRcPD"), }, + { .name = IOV("E"), .value = IOV("rLXUuryRYTnFISonXDRqcMeDFEwwKsdTcqsnFolaTiLKzpQevszaufrUGcAKxBMGjmdX"), }, + { .name = IOV("FsFjheszGpWeAroelmZ"), .value = IOV("ItJEhnKgFUqFxni"), }, + { .name = IOV("hqEkChlN"), .value = IOV("pyUmANWXyMCdYScVvlemU"), }, + { .name = IOV("JNvWSUTseADr"), .value = IOV("vhSPuLKSgJYOBIhvSdVoEZsRNispKOCdFFYYLNFmwyBkuqnJDqJJkgrChqVgKxYwjhBETnVeJEEuWM"), }, + { .name = IOV("TAZZidSbAqekLrMX"), .value = IOV("cnmtqAmLjOXaVOBTpLBwuqEJNoRgfuNJseEgbXRTTzWNKsCbBbUUXfjONVxHWBDqbVAJVYsaVBh"), }, + { .name = IOV("JZ"), .value = IOV("WeiGxxgAOIFZhUjPuXPtoOMwWvJbyxvlz"), }, + { .name = IOV("xbvymnGIw"), .value = IOV("ugoGhWloyMpChJRxMXpWuEDpsneJWmqlMSQmFgNoytEJAHVUuEWGceyEchvScyQUycLVoGWpTaQsJKp"), }, + { .name = IOV("sVdgxyhdEJbYot"), .value = IOV("ILTwyYkZThbPrVSphJHZkRnqylOrroFglCdUmvnTukkyOxoUsdkSVVrkIgMXZNnWPDmhnOfjxLSC"), }, + { .name = IOV("XD"), .value = IOV("aPIMjcRjIbmzvgblXHZfilonCVzsXtcxg"), }, + { .name = IOV("Jsmqk"), .value = IOV("kntdfIOJVpbvjmhlQETKJmkAuTjNFILkSEgPtuKaKbfhVUMmpTGUfTwgKPOJBmwJg"), }, + { .name = IOV("x"), .value = IOV("MtywDyTDlfOLjvxURcoGnsbIXNeDyJuZsvRxu"), }, + { .name = IOV("bNKSJvPO"), .value = IOV("MIlonOZGAUVFuoXJYbXSewATDOxVczRWPJxKfrTRWNLSHVT"), }, + { .name = IOV("gpGGPodU"), .value = IOV("AZOlFUUyRoSwqdHlENKOHNZxlfKLyoTZNLkwRizLfQraXqrZHZydKUOrOlcXeNxglwIBOThcjCcQ"), }, + { .name = IOV("bw"), .value = IOV("asWpkPsvjJBXgOUuYfRtmBlrTAjMnjsBC"), }, + { .name = IOV("phnuBchcKWtcNwsUSs"), .value = IOV("gJVImQKtcuQMBvfmYUbbypFcsRLSbssIlDQrcDKAlJghKupcjzFCMWLGnTilyOS"), }, + { .name = IOV("IdLUUsgvrRCydOIGg"), .value = IOV("wppBGRQAjuZWIjmXh"), }, + { .name = IOV("spQpv"), .value = IOV("eHkcGRKXRzyYBDFoUVTgDOzvCOZIefrrFNoJCKSDidkAfhhMmhKIKCeCDEYDdZzzxKd"), }, + { .name = IOV("RgulAgqyb"), .value = IOV("pMSPiBPPjcdYYzDxlYmUPpBVbAVDbOQZhXSSm"), }, + { .name = IOV("QWBAppl"), .value = IOV("iKwyxHWepPEDuPshqYVaLg"), }, + { .name = IOV("CXzgbazesxFnkAwPwl"), .value = IOV("DgCRkYKvHQcVOooBUrFBRteSXzaZvLAMagO"), }, + { .name = IOV("ZYuPwByiSSx"), .value = IOV("dIEwNkQDQsdnGPryVMrRPLSlHkIxoEJLGuXApAApWJEiBGvY"), }, + { .name = IOV("Rypx"), .value = IOV("yMByKmSeTuNvjaxHdJcvAohKTaStuCMcFhYx"), }, + { .name = IOV("HAHEeVMMX"), .value = IOV("bGFuCruqvAuoVRQpcpDGKbxBNgXz"), }, + { .name = IOV("yAuwJAP"), .value = IOV("xOYgxJYGCJtMXf"), }, + { .name = IOV("d"), .value = IOV("LXhUgNaYiMgArSSscLdRdoqEswsRDvMlNVgZLCoOvxgVgXuCTpvaZAHkoonfRVigGe"), }, + { .name = IOV("kSgEPFR"), .value = IOV("QtbEpcIcTbfCITAuhMlJvNJHEsYkmzOScsvtWJ"), }, + { .name = IOV("OzoAHKnFzKCXwS"), .value = IOV("zPDLVHOFfxLEApmDAUuoEzKMunaSQHmBuLOvogpWPWaLj"), }, + { .name = IOV("K"), .value = IOV("HqszZLAdJJOQw"), }, + { .name = IOV("ioGNfJKzx"), .value = IOV("lViJdCMdFVLjVndQBbfjdHPuCPxu"), }, + { .name = IOV("PgylRgdWtv"), .value = IOV("sAiZNgEBUQqrohTLDWthitmzyRovVNjxlglVrEHExVFtSJiYiEcpgDKFKBgORqRcKKYQ"), }, + { .name = IOV("LkgvNbiFqKWMjRWcjM"), .value = IOV("pxbYpltHHCbqVEezQFUPnccyvKsbXYlqRtNkWRFRxYOgNDhdzeZiPqZkripNLZxRDZ"), }, + { .name = IOV("vrtjC"), .value = IOV("HaZQEcHzVEUYXGkCuGtwvnVoRbDErziSfTausTolRiBcV"), }, + { .name = IOV("hQrxo"), .value = IOV("nHjAmMtAkDpHdazFtUEZKMVZsKvgDLgSweDC"), }, + { .name = IOV("fTdptpTmuFiCGmIhRN"), .value = IOV("IHjwASnvRJlMtRKkrZcBHqZUGAEeYwTBailviNstBpTAGLZtenwuKjsbZtsXkhnNkQpEjaksXSZ"), }, + { .name = IOV("ZqfOZVSGuaqEyR"), .value = IOV("O"), }, + { .name = IOV("QhWEcd"), .value = IOV("GWhHfVcMoPpMXMihAcucptemRGmnyQQcYxroNfWdDM"), }, + { .name = IOV("nasH"), .value = IOV("eRzDaulxtDioQhbfLutuNWrsVMoSAlABPAlaxSiOVtGpZwXyPAgkjEdTRajHSF"), }, + { .name = IOV("OHeQoyhkfjzObMTfFMRu"), .value = IOV("OWMWJDUUjBjiYNESAmcDmXaCjpHWRDqacBhrOuCCHWDOZINvZBGEyAAXFxRFcuGMRZYNtvDYonBue"), }, + { .name = IOV("PwVlJ"), .value = IOV("WmmyoDdEHSNQvjssFZZnRmLgVqALyWMyhXlHHfdOdyNmdU"), }, + { .name = IOV("aomLJyAyAqUsl"), .value = IOV("GapqwrwiBLvihRCombd"), }, + { .name = IOV("wsY"), .value = IOV("KysXFymQgmlYluMRogxJ"), }, + { .name = IOV("enFEIQjGxNNkgkIKI"), .value = IOV("DTa"), }, + { .name = IOV("ez"), .value = IOV("yDMxqjiPLrqQJslXrABoXHo"), }, + { .name = IOV("cfueX"), .value = IOV("FoOtrNj"), }, + { .name = IOV("fVtSPkyqJkAqplXqtWJ"), .value = IOV("KzCLCATHqTxdPBDlOWEkbVYFpom"), }, + { .name = IOV("sBBvhUsvDU"), .value = IOV("bWWRisUWnihdySytXzaTcyQmpGhZsEnuFr"), }, + { .name = IOV("HUI"), .value = IOV("uPQMJKzqXcDOGnbiXJjzTePDZxEgfJHjuKXJZXBftOyfEgoRDZZixKlGyJK"), }, + { .name = IOV("peGePKDbnexIJJ"), .value = IOV("UTxhRYVCfVtMLiPGUGwqAnGabbzUdIqosRmVQbNryatWBOvlGBBdoYM"), }, + { .name = IOV("DnmQvQRF"), .value = IOV("RcXISNjlWCpnuCqFZdkmnGhhsxBJWDVaOnXGuRngpCbmcbKSvzTFUZrgtRGqKcyX"), }, + { .name = IOV("rJeuo"), .value = IOV("OArikvFlAsmmWYJkhKpJVHMSLoycPTKpnqNl"), }, + { .name = IOV("jJ"), .value = IOV("afaIIDg"), }, + { .name = IOV("SbYASpQATM"), .value = IOV("FrsmFOPhqBXIYZZkza"), }, + { .name = IOV("eHHwdvLO"), .value = IOV("RHguGdiAoVxWEcg"), }, + { .name = IOV("jKIBViHGwzbYuUeNdWlv"), .value = IOV("JGXSU"), }, + { .name = IOV("jGeNbiqAXByirdw"), .value = IOV("aTNDvIODWgSGxJuMEHfqfiiIpOFbNXYAQynIcUKHabEDFpwtTMeag"), }, + { .name = IOV("biauqOOvTokYpgCBcMp"), .value = IOV("rSOBNxuNwBucQoEmEWASghXWQhLVVjfRqkcIsEfhBQpEuDQU"), }, + { .name = IOV("ftlIUBniNBGkNP"), .value = IOV("EAKoAQXOXwuZOf"), }, + { .name = IOV("o"), .value = IOV("n"), }, + { .name = IOV("VTHeD"), .value = IOV("fCghKJasMLkNYvwWPwfxOsAhXeyHMKHhuYihhieZjPeJcKWnQAntNipUJdyRdgYBWlrxSvAtOygwZp"), }, + { .name = IOV("RVxaUKyrbQo"), .value = IOV("cd"), }, + { .name = IOV("EfqCUVtwVQBsdK"), .value = IOV("sWIbdlKgQHWVUKXPhZeOhXDprrJJPiNvzCZbjSxLSszZYuCG"), }, + { .name = IOV("GDn"), .value = IOV("xblBvH"), }, + { .name = IOV("sK"), .value = IOV("intz"), }, + { .name = IOV("wgBWsZQxSmWTCeUlnaD"), .value = IOV("NXHknwUTglzHQYnZjoWeIWfDbYfGISUBYsEqmtHtktLMXuWqwdFPIihCXBrmWdKrDeAvlHbX"), }, + { .name = IOV("NqWLw"), .value = IOV("jVJPysBFKZoJEvDdlhrHqgQXZywNEsgiOtMGmreswOwjsBzBFGIBNKriigL"), }, + { .name = IOV("KcWs"), .value = IOV("dtMbgUrpXZeaqqPjPjXRpQYCeEGQCqSdtTGz"), }, + { .name = IOV("WYhvuxIfwABZiEEFUwFz"), .value = IOV("VSlkztqPlojvIVxFJeoSBwiTMWQTSbpRhXPCxGrNLSVLEobUtOelGbGrLIfUCORDVMFZFsvELGDgd"), }, + { .name = IOV("DmeHxOnKeCQlWlJ"), .value = IOV("qHIIVSvJopxUK"), }, + { .name = IOV("x"), .value = IOV("HfzpKAXnjDggwkEjVwdPqBX"), }, + { .name = IOV("twNnTiYy"), .value = IOV("hVcXGosWhJRSEobxaNejvheASfeKEYnQfMwTQPJXkWFNrnNrBMNPiMqXOeu"), }, + { .name = IOV("pHAzBR"), .value = IOV("MdlwzaQNyCZhlvwtGJktjvjGaDOXDYInSoURRCIHqGvjdBtWmzHjmOgimTjzsZf"), }, + { .name = IOV("WXRzOXq"), .value = IOV("XyIiZquAvFGfNcgyBElpSozPMFGkTntqVMKnBTCiMUPywjaYjdQjvPHStiNJm"), }, + { .name = IOV("Uw"), .value = IOV("RGfGQFnGgJseyqLsGSbLKzMqMzrybyfDRUYcwhcGhdRGuRmypKTk"), }, + { .name = IOV("gitcbWisEFonV"), .value = IOV("EulIlaJFAfpgu"), }, + { .name = IOV("sGdJixFQi"), .value = IOV("YE"), }, + { .name = IOV("BUCADIOsanCeb"), .value = IOV("CnPaXpS"), }, + { .name = IOV("SXTHD"), .value = IOV("tSOiBldnIkkBskSoOogpbobWUXzINEqNKlUqmstUOsMDIIIwpUNALTFLAmhPKEShyMKKqaPhjcswD"), }, + { .name = IOV("LBn"), .value = IOV("UYqvzcIUPQhztyUJGhlscWXqgbmf"), }, + { .name = IOV("sSFRDYVEEHjAGd"), .value = IOV("ev"), }, + { .name = IOV("mrOHxb"), .value = IOV("PVEUZQNFQPKqRvdCyCrJwrsHNHXOgv"), }, + { .name = IOV("zpp"), .value = IOV("rtWfYDBagSZPtImxjKwtbhtgAeeFDrGgUlpRQOUFZXIxlBgNDkXLiMJwXJLIDjMOMEw"), }, + { .name = IOV("F"), .value = IOV("lkJMNSLPhMOEfFTzvFDWgTmyvTuncIELLEQsorAqIszysThqrqOKfgPKDupztgXLcdwZJ"), }, + { .name = IOV("EY"), .value = IOV("JGQUPRvyNCckQT"), }, + { .name = IOV("KOnx"), .value = IOV("eZwhcuiimQEOxrkBCgWlZpEwnYeoPSFkaphi"), }, + { .name = IOV("iyLhrsjmsxBzJ"), .value = IOV("CjxdBKwFzltHAgEPMtnnsBf"), }, + { .name = IOV("djNxsBegJprnpLOx"), .value = IOV("jiDkSXTqWGdkGdBDukoVHofvNFunXVcZyosQQpDVXZPKMHIRWaVsGvKFxsHOi"), }, + { .name = IOV("nsxBppzyMYr"), .value = IOV("zAwTEAJFNNnTWNRuEiAKksoAyMlFyunNjOgkaUGERqAvOFzfqdoBQvTcTM"), }, + { .name = IOV("rbaRhdxJNVWwr"), .value = IOV("dVLGEAfQwIZNvxlTYJYwQocYSBkTicDDXqcnDzRTtnMAqMveogAhDkxQvBJyOltuPbVSPmkJH"), }, + { .name = IOV("kjAvxfrwpIkIrwpvSqfX"), .value = IOV("zAdbiBvowajqMvanZvNszapaWTivGfEUTAMqPYOLjkCgMXCJoNYF"), }, + { .name = IOV("tXEMMNJSK"), .value = IOV("LsgvjULzGWcRqgRRfdgfGVeLMgTdiyObwpnJ"), }, + { .name = IOV("FgUYPBLLxtrnKXNais"), .value = IOV("pYMEqeISJmpEnZjxWvMuxqpOUnDuDYKPuqsJHzQYYWPqpesc"), }, + { .name = IOV("mSi"), .value = IOV("avVMPpBqiTwUSdQJTOlGbPUnVSWAOOpsJmlZQpbtNfvBSDpXJRKNsSvKTMDiWDlnVrNSZotwELlGW"), }, + { .name = IOV("AoBLQUDkSjNoT"), .value = IOV("DdqPjmnxwyiHDCJnYgePXLothUGZATSBNnsZiyieRLsWvaGyTYouERBzqcNh"), }, + { .name = IOV("BMjFaAEDErPCGORd"), .value = IOV("dYyfDUTDDbUaGXbMrjyUyKghgvOiDyjLZRhuzR"), }, + { .name = IOV("pScMuFLTEomMkRRjPDf"), .value = IOV("fePswGDMKrIJUDXubicLtZxVVeHzjLIDkDamcyteUyIwxAlDVKqagKNmAafKMV"), }, + { .name = IOV("VtxFDEMVUYiwgZrj"), .value = IOV("WIfdEclxKTL"), }, + { .name = IOV("RfnfXsmzOamHpBzZor"), .value = IOV("HLPxLTmpuwSQLghGolntGaeFpujsClblmDPDbPNpZRfyYpaqzQdjZRcdVDwL"), }, + { .name = IOV("lhlsaZtPI"), .value = IOV("TSsTtrZRgfzmOPMoGjcmxxKBQawFKEdDmmLXsQVzmelffAMZSakjqqTKBAMaJBoJLdIAVoJRwUfMf"), }, + { .name = IOV("EH"), .value = IOV("HiMGHPndDYCqvFu"), }, + { .name = IOV("ts"), .value = IOV("npLPASzqirorshTFvcbmEsg"), }, + { .name = IOV("MvRQt"), .value = IOV("NvzosTRKAzfwEkpTtxcOWvqi"), }, + { .name = IOV("yXknHmxWlVNhdEVGwd"), .value = IOV("XAoWY"), }, + { .name = IOV("NGmZTopcHk"), .value = IOV("hKZHCuVtxStCljFxYFEDzXpsCwXKnNFkjXtEqzUVyWsQmYnOAiELIrpbV"), }, + { .name = IOV("JcvpffzcZCSPX"), .value = IOV("MRgcyRXysSJiQhalFaY"), }, + { .name = IOV("znFlSsaCIsjCsfOSYsOd"), .value = IOV("dNUFYkuyvTbwZSKWpdlqQadVAfLSAGuMKqGUJgHlVtfBsbrSbKkVsYnqgydQghFffEblcKyG"), }, + { .name = IOV("ebOvMbFDYYiL"), .value = IOV("BFeuhtFfzZBYjCQAmoeTWeqpYFcGfRRHlDgLxLskzvEcPTxfIjciKyIioLlXOScf"), }, + { .name = IOV("tdjeORZmf"), .value = IOV("YQnldRPzErwGWzRWasldEDOljbdJOsyhzELjsufVkZviOnloHbbExLtnN"), }, + { .name = IOV("xhVVslBArAq"), .value = IOV("YwV"), }, + { .name = IOV("mNw"), .value = IOV("VLJTUYFyqpHEwuRqKsEunFXHFCqaAoXiRzzgN"), }, + { .name = IOV("kmxmFsIxecEeS"), .value = IOV("AjrXvePlmssnzzXJpUFqNDrWIztpTpmWgFYOJHwvSUteCNxWyYZEYusGJa"), }, + { .name = IOV("OOJDekdNTmncyq"), .value = IOV("dWkwrUGvuyDmQLtoZVMNddimuJNDBCyeRSDasxSK"), }, + { .name = IOV("cylUTZdNklkL"), .value = IOV("WAFnYqdkoJjRxtEfUqNmVqrsQrHOXnSqLDRYGgJLmZEEyflMkUXVJBHwPCTZrtORXsg"), }, + { .name = IOV("IOrbFBMA"), .value = IOV("uaWEUGkUFulOHRMmLAT"), }, + { .name = IOV("kJJsZ"), .value = IOV("KVHVvspAidtwGiBNTBQROyYryaMUKAeWpJsirTNVOpqLGTiBhZcPK"), }, + { .name = IOV("bEXVXcqLbBzpfwpLP"), .value = IOV("MgXGLq"), }, + { .name = IOV("wOmsAJwOVQ"), .value = IOV("tDRyCCDkouLXguYOEosgQsgCQfxgpTwfMqBLzyCPUDWihMSlLuqpIltALuWHvBlhYImxoTTlQZoMYuaf"), }, + { .name = IOV("MHaRoMKA"), .value = IOV("TBLDdf"), }, + { .name = IOV("mIuU"), .value = IOV("HpKfXygfoSOaDDlkARppWGJjumCkcBZsidSMRhlVgqsOTvTWfdWbrOuBOjjTxRAVOluJVLknjKaGxj"), }, + { .name = IOV("ciQZBRpxYAlQq"), .value = IOV("TuTIXslWgkCgZLtkL"), }, + { .name = IOV("SzOgukVcAjN"), .value = IOV("qunuDSUkiJRDKNCqQapUZ"), }, + { .name = IOV("dxpVVsKweRDmaotx"), .value = IOV("kJBwRmxrSdmNRmrXexKwtOqAHpvUCUFpvCKSMgNrUFLTCYpPZuMNsO"), }, + { .name = IOV("xRoRkaGjqwNw"), .value = IOV("cswxwkABXsTloBhtFkYFegnMWPYVgqGXJsAHVAcPlFHrnimBGafXmodwrkfNV"), }, + { .name = IOV("jySVL"), .value = IOV("HFXbIKyRz"), }, + { .name = IOV("pMzNuTlHUbiERhaTI"), .value = IOV("iTdjwdxZueiwcbZYQTKRNGKGv"), }, + { .name = IOV("dkjNPqWcIJgqFDRpuW"), .value = IOV("kfoOEKeNqcdQlGeoiNrjxJKzswclnDbdxtWJOCEBtIuRsUJlAjdEFpTytXALMwgGnLVPAVp"), }, + { .name = IOV("SnpiKkPuGTRZvkwcYX"), .value = IOV("TSoCSXwkgnBQCKSZrhDCTcZnBXTmNPTUzgPForOiZZgqKHIMeao"), }, + { .name = IOV("Ot"), .value = IOV("NvKihJwh"), }, + { .name = IOV("Ob"), .value = IOV("NrXKwcICeOdvZtOMbsFcomigApWXWDevSwzOAomLHcPQjoHecOCkiFzNjyVbuXVKVBXoFDf"), }, + { .name = IOV("KkfDBiPcJLSbJmzXsY"), .value = IOV("yfrOPzVPJxddIQtKniJqalPRBDhCzacIQfQZvlKactpJ"), }, + { .name = IOV("usG"), .value = IOV("etYdBEKfXPGzwBzUXyANtxZXgdkdzuuIQhfcfVXqsBrJxcwjpBNUuCwocYScDHPsYwwBlFUEV"), }, + { .name = IOV("cEIBRTOeosFjGiOQJIS"), .value = IOV("ZFSjSDsAGwTgKMQhSbYUuYG"), }, + { .name = IOV("vytpQexwpKzpGCwf"), .value = IOV("mpAZcriRrqkoRmWYOaNzOtGyqIXqUYzKBJyinESMlthmDIUIevtJGSHTq"), }, + { .name = IOV("gzTyx"), .value = IOV("FvcNhJ"), }, + { .name = IOV("xhnHNfvOjgA"), .value = IOV("gtqaSvPqveDAaTXOLymMNTsXGIqmUwcoasXUGD"), }, + { .name = IOV("HsWNnpZlM"), .value = IOV("SEWyVlDGaSdumTttxfry"), }, + { .name = IOV("pXVWzzImQFXrPtEqDgIZ"), .value = IOV("oDGQCbCARAgbHHgEbvYgseQrCahsJPhXVNgmSnKuKGSIKukXoDCvTBDYab"), }, + { .name = IOV("sWcKg"), .value = IOV("kLu"), }, + { .name = IOV("LVGxcELRsLbN"), .value = IOV("utdrtYxEGyjuzudcmibRsBhtsUbanHKNmafZEqovKdyFiepXGaShSJyxBUoitDiYNajUsZu"), }, + { .name = IOV("SZkIhoaPQrypu"), .value = IOV("UGVfCoOyMDEDgXkBDpkjOSqY"), }, + { .name = IOV("uYnaenLKrCllLarwu"), .value = IOV("PZNlyu"), }, + { .name = IOV("Waz"), .value = IOV("nzvATrDbvqVDnjPwPaXEPuLMjQnrzg"), }, + { .name = IOV("fRy"), .value = IOV("yRzMJNoZlyIFfNxbCyHEHniRVsbUvOUBqzObApDPhNdjqXIrXTFXjMUMmFHMEbUqPpLii"), }, + { .name = IOV("EundTmCJJooTE"), .value = IOV("elfHNpHhxXbVmajiTcLPZUaRCeUiSvpxZTBvkLOaCseBDHXxgtKnftCvNfemQwybegoTVnLxqea"), }, + { .name = IOV("UcjetGfzlbRS"), .value = IOV("XxoyzbZwFxICposHhEtEErTkwodR"), }, + { .name = IOV("qUKicGENE"), .value = IOV("UoIwZinqWRYVFBbfBetzhpABJnYDhbDmgRwsGvx"), }, + { .name = IOV("HvBIpyLtQMJ"), .value = IOV("kGEtLElXKliYTEwbTNsQNjOBHzMYzCE"), }, + { .name = IOV("ip"), .value = IOV("lcaUHIfPT"), }, + { .name = IOV("JwZBhWq"), .value = IOV("SqGBcDiKzWIIHdtnR"), }, + { .name = IOV("dOwFWj"), .value = IOV("zAgSjLqGfyTTdsbKdsfNOdHWxSWSfRlmyNOmXBHvWZdwNtnU"), }, + { .name = IOV("yWTGAD"), .value = IOV("uezcTEYijsuUwQZIKILYyddezIyUs"), }, + { .name = IOV("rcAR"), .value = IOV("tJSDRYqvzQGlDlMKAAQuC"), }, + { .name = IOV("UgoJfoZPAK"), .value = IOV("aQGIqsrJWAhyRyopJkJpCDBkhipeTrwUrtIauBxXMiIKebewCZfk"), }, + { .name = IOV("KMNyZBIyMkxwpkrJztEG"), .value = IOV("oVmKcGHqMAkOkCZzKWIjks"), }, + { .name = IOV("tHtTQGMiRM"), .value = IOV("kGflRjPYmkUhautThFnUXAzkVjKRvDMNXN"), }, + { .name = IOV("H"), .value = IOV("ZKwonOEBIbaUdOgsfHUBTgOkuxfsGZRRGmVttG"), }, + { .name = IOV("baYvZxuQalQIOCa"), .value = IOV("bAtgKZeMMxHtmueCLlSEapP"), }, + { .name = IOV("ZbwvetctvcOFCOseSJLj"), .value = IOV("GypWNJZqGXgwTRYdpkPjfJjvvtJxKJImLRs"), }, + { .name = IOV("ridcZimcKnCE"), .value = IOV("USaJgHhFdLcrzNpRT"), }, + { .name = IOV("TVqgMYmjCbLOxvbMpdgX"), .value = IOV("CrbEHznyGgWcMfKFZGmpDxFTCw"), }, + { .name = IOV("eGcbnRqbrGnDyTVNQWsE"), .value = IOV("lKKCChLheOLMsuwhLEvCGiDIBuPiWrhIsbyrEmenhFCqHC"), }, + { .name = IOV("YKjCaOSRhcJWKZ"), .value = IOV("OgihGuBFiTKtFPmMphrsbGlnHYbzSHeimfdEYQ"), }, + { .name = IOV("hBGDeTvS"), .value = IOV("GgnukRMztOJQCxeNWnMcUIrMKeltUOjCrPCaFLehAVJXAwboBrpOTEke"), }, + { .name = IOV("QSYbNMPQYrIJRFKh"), .value = IOV("nOrGZguunkdhyPSzYlmGBRCFoRAlsFQN"), }, + { .name = IOV("VNPMGYgFSWAxu"), .value = IOV("YGGZJNXttRKhvrcjgPCoGjgWLFYtGQkCZUUcCOODDphjlaGJfQIJn"), }, + { .name = IOV("QcDiTMeZgsW"), .value = IOV("ZqjWBORlBvlf"), }, + { .name = IOV("fNJmIIlMuKXlm"), .value = IOV("y"), }, + { .name = IOV("pj"), .value = IOV("qcqZzfEFDSVIAPGjrEwAWKpMDfbJIevSLEKnIKSmjQJpxZCbTjMzPIgAbFecXmcTrUbpdIWj"), }, + { .name = IOV("lEhUfqFJuPdr"), .value = IOV("NvdkHPhlbWipgnYwmXaQDRiGlexSpLQ"), }, + { .name = IOV("Z"), .value = IOV("IjaYWEWZCqSOWzaRyANTImQlFHNFRAFHuNoMXhuWqzcDPBbWsNTsPkBzfMvOVt"), }, + { .name = IOV("qlPmOYm"), .value = IOV("KNspArTvshjXamEdwEqUsZimQxcFVPsFEsCUDZDyeJWer"), }, + { .name = IOV("qDSndVCQiFlaxq"), .value = IOV("DwITvRxYizmaJsAAhoXpSCnRdqFQgcSunIFQkw"), }, + { .name = IOV("LnBHZQOvEmMqm"), .value = IOV("kLXCoywxyRqtZiRsiNAYizdPMbbfHxDqo"), }, + { .name = IOV("eYQCv"), .value = IOV("FBKITneyatiPQAxGMraswuIQzgtNjZldZCxqZqq"), }, + { .name = IOV("PosTWREhYzSCKhTSbeoy"), .value = IOV("YIRXpUnOKaDJyrWBWCdCcksuUST"), }, + { .name = IOV("D"), .value = IOV("gtXBLEXISHNQwhxosYjONNOJarEowFPNsZ"), }, + { .name = IOV("dvsPD"), .value = IOV("kaolqKyBGMUlKsTJnsgtaxrVqoPpjFElRXZeQrJw"), }, + { .name = IOV("TOTqTeYDMSG"), .value = IOV("hXKphnOwMHcDaNauTnBpDxQFxZhRBMmopHfveiZnPMpjhxxIrwulZuBSzVUoHBwY"), }, + { .name = IOV("hTqFOOkQVDyQqqyGJf"), .value = IOV("FyfcZqUyPeOfhLmJrLFLyTBuIQgeEdJjpIhllwdMMDvRTsJdgrsYhVxaueCfNmSEnYOikjbvN"), }, + { .name = IOV("ctlt"), .value = IOV("LUITYmMnLtVfYCPblGsWfGoUmoSQ"), }, + { .name = IOV("qIJUo"), .value = IOV("ZhOblfImvqalMayDjngJDnP"), }, + { .name = IOV("mPQnOH"), .value = IOV("cvoRYmTvnqcuThtBSTVrrxmSLHOYpiOkFgTKt"), }, + { .name = IOV("WfKeZdTAeCOqkaIHe"), .value = IOV("YSPpZUkYCFvGosdlWrNJhQCNSdnmyRgyweMpLBJxovDCaIGMigGLUHAvfNvaaeuLjf"), }, + { .name = IOV("YlfCFTyBRJm"), .value = IOV("MuCjjSkxYuCivQSSKbjxYzqlOPXObVptQdANDURgnRcBrhSDhOm"), }, + { .name = IOV("egjiKjXcZKLXWqtfPu"), .value = IOV("VRVvsjjORqrJOmWprafZeeqFEPBhTraplXGyGzDmh"), }, + { .name = IOV("LfTjJaefRkMmWZEcCSr"), .value = IOV("EjonKeeHRxY"), }, + { .name = IOV("ha"), .value = IOV("xXXNgUSYxjDKcAAcZYNrQGiXN"), }, + { .name = IOV("IBjMPDDHr"), .value = IOV("v"), }, + { .name = IOV("WKnCMgmAtko"), .value = IOV("fhTFSXqCEjOFjWDuZiPbXgqfgXLEixjs"), }, + { .name = IOV("QBrz"), .value = IOV("qGMlHBDB"), }, + { .name = IOV("g"), .value = IOV("LQvZhwBzjdbRUqkPrWQPeZLvSEvmgqMjpknlRrpolnASWymXPwhgUhzLNBWvPylGCB"), }, + { .name = IOV("jb"), .value = IOV("QKGtiNTKawekjKFXYwSAylDkVEHhmOTQTCkSjaXwLOmQhSuvcKCKYomhlqfzDNh"), }, + { .name = IOV("JnnkNQhdI"), .value = IOV("BqzzmtPBCqxOvfBPhuML"), }, + { .name = IOV("xDRxMo"), .value = IOV("JobASkiulZrpXVbldUivXVn"), }, + { .name = IOV("huknhklXUXDvnmK"), .value = IOV("oZIplBzBiSlHkleqNfYacPVDxzEnXCaW"), }, + { .name = IOV("Z"), .value = IOV("mspwRRcuaIUezCWNpb"), }, + { .name = IOV("DrztXejwtMbfGMNYJSns"), .value = IOV("XZpWseBIHISKgtXHXvwkUMXhnzOWXqxwaIwUyycwIQCjxcXlYIuTeOptCrjJ"), }, + { .name = IOV("mPNZOiOQUuUDqlWghQSA"), .value = IOV("jScITAXVPtGJMGsvHYsKCYbzzjtNeTPBHwlqKbmOybDhskFNDlDrgoofFQwmI"), }, + { .name = IOV("UtE"), .value = IOV("cIaPXLmJrcbOEOiZiaTJaGdwvvlPRcGRGdUayNMJGtwqhUazPdvu"), }, + { .name = IOV("WBsvYnxgpV"), .value = IOV("fMBnyDDYyfEmzOXZwoNWdPyIorYwTAPzpEeUcyVtKkzKbyFcgTnRsHHFWhvTudcKSUQFXWpdd"), }, + { .name = IOV("ih"), .value = IOV("rhRQ"), }, + { .name = IOV("WRhtUDxzjKuuKF"), .value = IOV("NqpMBoXMscAdtmItXHevr"), }, + { .name = IOV("oGAwiTDaHfLgaDHjJX"), .value = IOV("FeeCtMMPhBEhFZrNMPVOIaxyULtcnJewxMxntZrI"), }, + { .name = IOV("uNuTdUtiYad"), .value = IOV("eTFcXKpAQOULETcjixDBCbNirQjmZWdwXXzVycbz"), }, + { .name = IOV("SHGBwOcaPGileMgvlF"), .value = IOV("jOEIKMyySTZFYcWPuOKJSnSHeqIxVDySjpaSVgIrSSbfGzpekzllWUhnUfUESbMibGZq"), }, + { .name = IOV("xAWZPUHjZsEOw"), .value = IOV("FpcMcnpQPzFFYJnRxo"), }, + { .name = IOV("bRC"), .value = IOV("WrWKjVnHxJQJeLDUnsTKpJqsKVz"), }, + { .name = IOV("OPZ"), .value = IOV("IpxSasmRvzjZLTfcrkjdiVWAPuTtZnDQiobxDzAJoFkdLKHSodpRJcNEuOKLgEZBeGDXvIa"), }, + { .name = IOV("grFyzM"), .value = IOV("IyniUjzipRZFnjqCwbXUtkYVpiBqVZXdtLzVyWbpN"), }, + { .name = IOV("VjbKzx"), .value = IOV("eKZZRarESmSWErQ"), }, + { .name = IOV("yLXf"), .value = IOV("YkJCAtVNzNWrHfqRuteiVRFjuhoWANpZtHIHsrPMvHwxSWUdXDzRAqhNdmaDNynggAfvinkkhkvmv"), }, + { .name = IOV("QKHFAjYMKkZedKhoGc"), .value = IOV("TfPENWMPqaoEzVkoGbjNBi"), }, + { .name = IOV("Zn"), .value = IOV("VgSzEMEiouWhpiGHxUAqTtvNpjDTZvcOznGeBKCOcFsGhnfNIyGUiBFgvxpPLUsHCJ"), }, + { .name = IOV("TeBKdvmwiIzsyvJhpYO"), .value = IOV("wDFIPSCRByezhLCMwfpiipqjKMusKrPYovoBSHDtwlWtarXQcKYlmoTnPrmDBeiQqHZg"), }, + { .name = IOV("IfbhfsLikGuLCBdx"), .value = IOV("IVdUUkZESJHyoEOVlBNxlJyBJyGstlmXoRJxjKjLVBazHMrZBYMFbZvLdifusTrVzjm"), }, + { .name = IOV("SfuzPip"), .value = IOV("YWoUGEgrzLbTFsIWMnbddtfKrvWQUYvJgpXVgJDAbEKlPYhDtNOqUFXJTfssXkfBQUxUISeJoBFkHM"), }, + { .name = IOV("EQGTQhaP"), .value = IOV("jqYsnHqqMloTumQDcXWSeKtXulNhSlKiufARXKMqWRUdeEuhWkmZlggFzDlnpUK"), }, + { .name = IOV("hzTyhqqviDujBmGaqvRG"), .value = IOV("osfsliAetALlMvYEjxlexrxGHmaimwwuvcMnJugRqHOVTBhEfQZPajWzHBNCeVquQZmxyBlyM"), }, + { .name = IOV("JsdRLkQySvpwuwIPLa"), .value = IOV("EfkfSEflobzKGmHXeTKkzMChETUrRMQdmwiwBtBzzgCNY"), }, + { .name = IOV("JOUDOkkhjijwewywET"), .value = IOV("GqbSsjLliWcbnJYuXEMQjXVsKtZOOFMiOoCHGNTCBomcVIcIKzrx"), }, + { .name = IOV("htKGUc"), .value = IOV("HvDkKZakZsjBykkxiXrGGLgZrOqHHlxArMaEbFoVTAOShgmifyQrTecUdRUVNKXWlEDE"), }, + { .name = IOV("hCxpkEgZ"), .value = IOV("txHvAH"), }, + { .name = IOV("Vbmp"), .value = IOV("YOjoChvJZXOSjzyAQFZqfkHHdWnzpEIj"), }, + { .name = IOV("uMgbgxBDIzXOfIrihZY"), .value = IOV("MSLkeElPfGLuhm"), }, + { .name = IOV("uWvjTLej"), .value = IOV("bzmYnOvWakzAnuWAKmDtPuFlByZDddQeeyJSVoAv"), }, + { .name = IOV("uXRVPhjeL"), .value = IOV("wpolNxwCQedtQPVGbuwbgTZpNrnHhxPfldoVrVMZYvQlelkVGppDBFPebyoKD"), }, + { .name = IOV("lbqPhdgbHBEeYKjrRV"), .value = IOV("ETamjUKLcfQWSXh"), }, + { .name = IOV("ofKjwAxGaCBf"), .value = IOV("ollBqQXnMftjHFQzfGeyhxOnDWl"), }, + { .name = IOV("w"), .value = IOV("jpNDKCeC"), }, + { .name = IOV("dwnjP"), .value = IOV("ZwjgHoNONvvSGFTiKoDzirZzjUlPndTFPXBwaS"), }, + { .name = IOV("Xsr"), .value = IOV("ddksBjqaLqyJrTBAFgkDiGQnayPtVpOAi"), }, + { .name = IOV("ubriwiuC"), .value = IOV("KUthFZVLywRNjfPnNJEmuusAOtphVBgJHSXcTIIAHMSSrhpmntKFiJhUuyJMQe"), }, + { .name = IOV("mPUnsPoxCtA"), .value = IOV("qjMDLxEwRjm"), }, + { .name = IOV("T"), .value = IOV("OxaaZuKuADKDAAJdKJlZRvOfEKYmzYVwRJuHMfkJXghcaYSgr"), }, + { .name = IOV("ch"), .value = IOV("fewVYTAmXmcVlwgjgDoUEMaktAPdjXutXnXZggkjvjTzuLAPUldsPIXSPtTFDymgSRbIzUWytFejDVd"), }, + { .name = IOV("cCGBZlmkWkj"), .value = IOV("goQryXhLxHTWAoLxIZFQ"), }, + { .name = IOV("OfHNytTQp"), .value = IOV("YJpYysFKpWgFfiFjCHoFjqWbSrzoFqtHsPIqqBNHvMVCUcVHA"), }, + { .name = IOV("jhJGBIrGDbTlxbFsXpj"), .value = IOV("UBjLywqfI"), }, + { .name = IOV("L"), .value = IOV("caDsAbhuxeZTaeSdYN"), }, + { .name = IOV("zzrIKhGZskAsIYoq"), .value = IOV("CqiDiMEDVNNkWzzYYKqgSBBDwoyBgKodvDuSmkoAEhfKfdlRADLUjOYoMy"), }, + { .name = IOV("jZjKiNgDQaoKOft"), .value = IOV("CLWCSmArFNKPrbeSLTfhkJOljOiqq"), }, + { .name = IOV("gXKGIvB"), .value = IOV("EvKfBgPYNPcQKeEpKuMzmdaV"), }, + { .name = IOV("zpl"), .value = IOV("DUCyKIaCBKthBGjXBkXHAVnSUYfpms"), }, + { .name = IOV("grOv"), .value = IOV("IOiwXIJIFmgj"), }, + { .name = IOV("OXpBONtAr"), .value = IOV("TUOMNDebEoOSuvVROXqbFZfdSgKTnbmWWZQXAMVpvpuJQyHwrEBjKgzIwcFzmVciIleA"), }, + { .name = IOV("odfXFmTCMet"), .value = IOV("JOiLdLSgbHYxuCCcvXhfLXDtcLHKOXpbpKRFSXDxvsuGPjSgKDIxyJwqIxtuXrpZHzZnwahxCNyIibB"), }, + { .name = IOV("DcpStpuhwLHYlE"), .value = IOV("UdsvlcFrlJvlFXhQCMyhZTpSJJbDjmsw"), }, + { .name = IOV("hUEiJba"), .value = IOV("WRvTUFpAyHwgiPIjlBPPFMSXfOxpGBZM"), }, + { .name = IOV("PgJjiAkkBaFUJpZ"), .value = IOV("yiqyvUURKGUtkyVgxTyTBLKKnIqQDyBqBFbibhzLhSxrETSEBJnEhTKVs"), }, + { .name = IOV("eXVsezbhyBzpcDaXaS"), .value = IOV("dBQlckBVKNTYlAjYUftLJFQvywQOgahEcBXaQjInbcArOUChrlWRUZihxczkXVbjbPNwEro"), }, + { .name = IOV("RbuCMsInvMQzRIkHn"), .value = IOV("MUdccXXvmLzJK"), }, + { .name = IOV("ZCW"), .value = IOV("bPdPfsnisXnkUrsOFDJFzcoMqkvtkfdZbkNv"), }, + { .name = IOV("cOWj"), .value = IOV("ROlbi"), }, + { .name = IOV("JVssKIJLB"), .value = IOV("RlvgOqWJURuSVQOgnxsrhnPPcshTemXRweHDNjlicaVl"), }, + { .name = IOV("YvjlOByk"), .value = IOV("EGQSzhIwBzBiSePlxgTOsZLlIUDjQxLIRfbFRnqQsWzNCXUGyrlCRAyAAmbWuajnLbwfvvIAToFNDDMu"), }, + { .name = IOV("qgvgs"), .value = IOV("njJYYJfmBsKnUQiRCOekmrZQREjgTAOCMKapMxOO"), }, + { .name = IOV("uNUPFRcCXIZR"), .value = IOV("JAoYFYYKOJcaOoToDLJHEEKReNIFlCGTUaXUPblDFZnmN"), }, + { .name = IOV("DrISEcgVJgxQwyI"), .value = IOV("mlE"), }, + { .name = IOV("lDqMNeiVqBrPthDnYYFx"), .value = IOV("PbnvfnkOWYiRBQAokEzWgwzrXHyLrDqROHflXBRYGqIAfShuCtEFgGfdjDyZuYzFCMFBDjZVULowYLLq"), }, + { .name = IOV("xlBxZbPHBeGEkA"), .value = IOV("NDESTFQvIUxfFMmJH"), }, + { .name = IOV("L"), .value = IOV("SUjruJGFIE"), }, + { .name = IOV("PeA"), .value = IOV("GK"), }, + { .name = IOV("GLa"), .value = IOV("jnMjHNqQETcxVrhcJPkWmzawFeosXLjGMZQSzONHwEdcyLDrZOzL"), }, + { .name = IOV("DQDdoRQV"), .value = IOV("eBjoxZRLsSJLbqEBOsnzCQGVASfaPhZmbMOvKchduvocFWbdQzeVVQNE"), }, + { .name = IOV("gXUzpQSydYiT"), .value = IOV("shCuSLqvxADirNZxvuZzGEcTUbokhI"), }, + { .name = IOV("nqTKiRRTvKIMKEfpmRhm"), .value = IOV("qyiBCVOFnHNRPVFSOyljWzXInyaQauqxXgyeaKsRLKknI"), }, + { .name = IOV("ZuYloXmgTkXlJsdhnrv"), .value = IOV("dVutwwoZQFTsfauGCOyZIyxBPJRHkNdPnnxyMJGJltN"), }, + { .name = IOV("WjBeGCJhONC"), .value = IOV("NIyhrsZUCBectHxY"), }, + { .name = IOV("SVDoHUilUeNDs"), .value = IOV("FhbwdemqNDvHALBGdPpaUXPoEMABPk"), }, + { .name = IOV("oQAzYUBBCvbyYI"), .value = IOV("STNtLIhSiKdH"), }, + { .name = IOV("UTMJuBvAIrDR"), .value = IOV("ffYotBQIJzLpWabGzMeUNlyyJaSFMjXEHvDFayEDlOaUWHbntgyPuKWcWtUzTDDhyNNtXB"), }, + { .name = IOV("mRWPeejqptLLaHu"), .value = IOV("yxpxvnPxGOEltQdAXsQJrVxhihEYSmPhFmJdnavMkCJtLxWyTcLAaULZSz"), }, + { .name = IOV("RtSXMjiApESmr"), .value = IOV("AYqDYaQFlJgznFRlCjwpmBxekUqeitkxfwOwJAYGSZhZReQKccfOuOfAtmaYcBNBDrhd"), }, + { .name = IOV("dfTgGEAFf"), .value = IOV("uRaTYIuliOVtQfYDoeChRHLGxjxLVwXlSBjNZaQDwJRvpkQ"), }, + { .name = IOV("btXxiydpTZCJXPpcEXzl"), .value = IOV("bwNOmyjtGkw"), }, + { .name = IOV("nREtZxJIVOPAUQa"), .value = IOV("HfskuVD"), }, + { .name = IOV("YExxFJzRfhGnNgMH"), .value = IOV("WUdXfgJqUtUieXfWKRBcjRtWyUgWowBREYGVPy"), }, + { .name = IOV("hChbXNPBGYlzX"), .value = IOV("sW"), }, + { .name = IOV("KRSaAtywbXLnWHw"), .value = IOV("jCFsgwufbYLZbfyIYwiKYevYRdCmAH"), }, + { .name = IOV("bqCjwotfga"), .value = IOV("DsFZB"), }, + { .name = IOV("WcM"), .value = IOV("SlBzgFqnbitkmnuYYMtcfmvvcVwLaHHbRpEsYXxWVZAmfqjvomTfSOCAOniyVslaER"), }, + { .name = IOV("nT"), .value = IOV("fEViIkzzyaeZGypjzSiFwnVMRXtzVLtdJJcnCFXzwAbutMpbqkmcQTvanUfTSdCfHkWhqRFIooVAzilk"), }, + { .name = IOV("BMtUkuLoyRVXaahZJvOy"), .value = IOV("jb"), }, + { .name = IOV("hXVehjBlBchMUPUeijx"), .value = IOV("seukNLwXpUMRBIYXTCWdxyVeGLkGUeakYZqBWXbftyzut"), }, + { .name = IOV("ooPVTKEOiTFoYeNH"), .value = IOV("fiKDbeWYkEXxmaMHYteLlIJRGXmHaqxVXaxJUtvUVrQibcvfMJeMbruMxRJBWURkTMvyv"), }, + { .name = IOV("gXSGQBjk"), .value = IOV("WbYhzLtCHepcaMAlQNbPmsiiUbtjKOTqvstjYDLjQpswyDXndkToyfFYDceiUMIxg"), }, + { .name = IOV("fKsZTvuKeUqWmLLs"), .value = IOV("Xml"), }, + { .name = IOV("gZflecyEjlZURAcEat"), .value = IOV("nWlboYhwNrfYpGJdUHPiFpAhTnNxxPdELf"), }, + { .name = IOV("RkUOOgPixjpzT"), .value = IOV("tJJbcFhHaZKZnsusZQbZyQWaWjWyQUAFKcZblAFaSyXjVri"), }, + { .name = IOV("lBRONmCKiSCm"), .value = IOV("rhVjKggYdEmefSRE"), }, + { .name = IOV("Uglx"), .value = IOV("VxRlWlVdTgEfJtWbIRvGuATa"), }, + { .name = IOV("hMGxszKWbI"), .value = IOV("ZoWIGtnxMNOSwnSMYvTAVPuuYdyUCPGumUyctuZwmswQXKXxfLpIQjhbV"), }, + { .name = IOV("zw"), .value = IOV("AWVgjNKHPradJWcVRYWchfullretmgVjLKTNpINNXxLYsgXlnyioJHMWSCZmzSQA"), }, + { .name = IOV("x"), .value = IOV("FdggVYubFZHEinvpPRicqOFyIOcdwovsCFZnFQZdlRyElgkVjxYjFQikkZtXCIAYXNEHiABbuBp"), }, + { .name = IOV("EzE"), .value = IOV("OgK"), }, + { .name = IOV("SoBrynAQZSYiv"), .value = IOV("QTGzZKqSvoTGLsGmkxYkMEIpIKbOlhXBYqStWSkxNGzCz"), }, + { .name = IOV("IzeqoutB"), .value = IOV("nlNORkMrvUFXEkHktcdmyNECXpmiRypvJVzs"), }, + { .name = IOV("PvsfCPw"), .value = IOV("aVtbrZMUIyMsKt"), }, + { .name = IOV("DMJQmFPudqIDeSbgb"), .value = IOV("BpEILPRqYagwvXiUWdhMdjFwieHGvahPEJOVdHbmwpQkeZHa"), }, + { .name = IOV("rjxStnVQkqnvMcKDCc"), .value = IOV("uTEPBjTGrSsUSmWbrYDdyPeegKBBcFIpKnTaDAdrvyqFCRNyM"), }, + { .name = IOV("Qz"), .value = IOV("LIUQgsIHToWpxNI"), }, + { .name = IOV("rBjsPcYZl"), .value = IOV("ZzPVeNbRuUNsEkQJSqKcPcjzPblHzmfdmMMYflnbVvbakyHNRVitjIbmvPzJiGulBttNTa"), }, + { .name = IOV("oTkJCWVJAy"), .value = IOV("ulApkeQEaYFTgXNCsOsiahZpAXgWGxckyuwkNHDCCYeKGnPfwwLugPnyeCGAswLUmJmEEQCpw"), }, + { .name = IOV("yKDnnjZwppSrj"), .value = IOV("DaCscXUjkYFhqiLFiBQgVxaYjCLUosNVFXnzMSbHxsJYMwRIZHIlYQNFTcKD"), }, + { .name = IOV("VnVhXhaXlMqZC"), .value = IOV("nGiYvCANwhmCzhqShkbvXscZyoIEykPOtXuaKyMCSUCqDtqqA"), }, + { .name = IOV("VFy"), .value = IOV("rloXslMSRAN"), }, + { .name = IOV("NsbdqStCpVpgrxJf"), .value = IOV("JXaJGCwcgGWIGejbhiJMNbjnByksIRAADVdJVm"), }, + { .name = IOV("xnjqmscegNQoLq"), .value = IOV("UXjHmqiiaCNhebCHbUbIGnHmZfznoXGpiXggNtfvXybsyMJesYaiBYkuXt"), }, + { .name = IOV("cmcVnicrS"), .value = IOV("qaliJHie"), }, + { .name = IOV("ovUPMuAYSWtdtW"), .value = IOV("gQcnncwdRWxEQLMxggRQriYIHgCGpRycAD"), }, + { .name = IOV("OKQdVqZqByRNL"), .value = IOV("ZEVpGYxchTWIHlKqGPrNEdKxBbbqLSxrKarvcSYeQuzeOoROpmjooEVPHuxdmiPs"), }, + { .name = IOV("EAsihC"), .value = IOV("ZDgdXiPqLPJFQBZvZHiGDoeVbEoNJXGdiDhcUoWO"), }, + { .name = IOV("xmMwRykesYBGDBSnmp"), .value = IOV("BLqxOlQsaRqfhNSyspvMKskFkdmKub"), }, + { .name = IOV("oZfHvYxD"), .value = IOV("LJsvwehUQknkOlQvJOnVGhCbTRcMGYOIS"), }, + { .name = IOV("GtYiApuncrQdRlfmBwHY"), .value = IOV("WNaXDLmWECLWmiwHMabswQfbrjTliCwJmVXrjiWLDy"), }, + { .name = IOV("VRzbTujFz"), .value = IOV("gPYtuurannICwy"), }, + { .name = IOV("WFycsoOcMvVIXJi"), .value = IOV("pIurKmdywSIU"), }, + { .name = IOV("ssGxJhiWE"), .value = IOV("ioHPXlAlAVoTgQpMsIEZgAgCpjERfSjWeRfjvfYiQxrtilGDJWufEcGnPGgMjFTdBUu"), }, + { .name = IOV("IuHuoNwWAxI"), .value = IOV("NoovpUuLpnoAlQFgkVFrlDUDkhlAk"), }, + { .name = IOV("lgfnyz"), .value = IOV("YBTxtPFbNdoxFzAeOBFLxjNmfvALwgUEvcCUkdCTfIHPrqOztjmHBlpSbtncKIViTG"), }, + { .name = IOV("RLRqlzONUBfOdwYYb"), .value = IOV("eEXqrVNw"), }, + { .name = IOV("GJUMOUtXAPMrzHAy"), .value = IOV("dFnjbmgsYMytqse"), }, + { .name = IOV("gKaGd"), .value = IOV("LvYxrxCmZKLDbxOGtMQYKxnuiobDPwunVRPGadCFEJytbCgkhMLDTXllFyTO"), }, + { .name = IOV("tTotjqEjcDg"), .value = IOV("CWFvKwmdgBknyGCJFAWVS"), }, + { .name = IOV("fLLlTXaC"), .value = IOV("btZrMHgKPzTrWHyaDwWXaNRKbNHLEJPhoMtcOWx"), }, + { .name = IOV("T"), .value = IOV("ZespsSqkpAlZzCxVdo"), }, + { .name = IOV("PIOUiuebtJbyjNbcLi"), .value = IOV("xTEqfvvOtMeFYDgBiGBEIFFgjTYrpICUsBGgpMtZxzXpCRvKRUtKzOEtzzePhVYvZ"), }, + { .name = IOV("XCxEztWcjVHF"), .value = IOV("VJkkuovbbfuTqkpEVNiKepmVWBdPnaKGV"), }, + { .name = IOV("RSNoZcjBLpLlBtAbYray"), .value = IOV("pWXePpyIiFOcBWuCKQBeQqTTklJaLUmpNmwnvSlFy"), }, + { .name = IOV("KLz"), .value = IOV("OWZdovZVQRbGITXHzCDVlbOmnYeSKmphiliZBhViiiDKjEmeDtagGetLYRFoscCWNvTp"), }, + { .name = IOV("jmtnP"), .value = IOV("WhgMwaLqZnITIyKATrPzLrtovPPYRruOPkISDSAlUkNHbPyPWg"), }, + { .name = IOV("kvYaFfoAlVIw"), .value = IOV("GYqbmxHCWUBuMVgYgbbZPOKHthXgFSXHyUiWUQKHUQKDuxsGqvVsnHbaIiEgOuhHuNZUPMAImX"), }, + { .name = IOV("NBjuUv"), .value = IOV("CORgUSlpkenupDHaiPZHvNOcQRSloGwbRBArgtcNsqKmmrpwtbnjpghFFIIatnYHheGNelULbt"), }, + { .name = IOV("bOPPsdfyxXeSZ"), .value = IOV("ZqWxA"), }, + { .name = IOV("NHBuZmFuOW"), .value = IOV("OQNWVZzfNihnGfCUgORSRRhZMZJNWajSuPtQKSDlagXCUvRaaUnIvhPechWAUbFhpVO"), }, + { .name = IOV("L"), .value = IOV("mFnYbyUCFOKfJgPNYjhBqoIkwHaoSlJzJzqjNfVhMnvkkYdGTukTyefOupAMWgsCZ"), }, + { .name = IOV("cNAXlErqDEuHMUbbi"), .value = IOV("dWIGCidLfAUiMXomXMIYfzsrdPishsbGiwfGhhKW"), }, + { .name = IOV("EHnYvnfhyRtMYKFHsUf"), .value = IOV("UVOcMwOvtPodtRmlUHuFfdSTslTzoKeIyhtOwLGcrnWqXAtLNHGpdapiMJWrQiDb"), }, + { .name = IOV("zbJoDDAQvwis"), .value = IOV("bOtRb"), }, + { .name = IOV("dFpYLFDTMTpFRoHvtlF"), .value = IOV("baJBBDpveohFVo"), }, + { .name = IOV("CKNjCUWPmefC"), .value = IOV("NGRRKiHlDGZYfvPEEQTUSARWfjRXUmmoxQPYXarkmoHkaZZtKRRkMXiZZuf"), }, + { .name = IOV("MTc"), .value = IOV("zsarmBFNEEpwELaghOyPYyV"), }, + { .name = IOV("boVVRQnUnDAxoAGJrV"), .value = IOV("DaoTiwWUQEOnSctgqPhwACEfFLTkOOxAmtSXWCpTllUYPn"), }, + { .name = IOV("CfhmqlIHFffDEKLN"), .value = IOV("EvfKiYKSjyUnnIzDCbdWdMBWiPfiSIFFxNNQnqrckZjfddYEkxROOfpuMnolrYoeejCxXgxaDNCI"), }, + { .name = IOV("BfufCFeg"), .value = IOV("LEeQgKbxLneEMKwiAtHfEASArPwrRnfIFdTfUyWNqwjRbqsc"), }, + { .name = IOV("DNbFIkcB"), .value = IOV("JmQutBzgbcgDLeereteMCtpeFTsjtTJhtNVYQckEWNeFLhKIcKygHUwicXsDLIeWCSrWKhFEvUdmVr"), }, + { .name = IOV("NHbQ"), .value = IOV("lEDJMFZGssBquMrJGlnGJRsIhlbKPvVVaDstjAlrttldElkM"), }, + { .name = IOV("nlVBywApAMt"), .value = IOV("BUiGQuMgdXVPHGQcZYcMdadRcPZNPdQOErUkXjN"), }, + { .name = IOV("lfZCThEjPIaFkTcKyPa"), .value = IOV("gRHZICyPIU"), }, + { .name = IOV("CtaTMWPmPtdDHGyohRez"), .value = IOV("hCVdSHEAnQWEUrZgjRJk"), }, + { .name = IOV("HmznOnO"), .value = IOV("aawcsTGmbhpQJCmSjokVNYGmvcAPmYNkfNliehjcdgTETsP"), }, + { .name = IOV("DpgcObblENLYBce"), .value = IOV("ySwvuwCrDOUQnxxPzqmYjfqDXDkSnvGYFxyFvQbKDauTVf"), }, + { .name = IOV("XYhDGwSoZFoz"), .value = IOV("CmuBoRLrmNSGJZIYMxiLdafSKwNRRUKRaEYIdTBQTDkPQXbWLHKXOUKHjt"), }, + { .name = IOV("tzLHceC"), .value = IOV("phQLqkVygFsrKZeIzoOxthF"), }, + { .name = IOV("gApGwWUPFSKxhFuJeZu"), .value = IOV("TXfyEagcprTHCWtvnTaTdegwjcmfrbLRYNSuDgiLjSGKCHXnEntfyIxOEjyjsIXgMeExZXkgz"), }, + { .name = IOV("DksMGmuFhm"), .value = IOV("jGJs"), }, + { .name = IOV("IFXNcelVDu"), .value = IOV("DIDgdmGTFVcuopOOcpUfxSYUrYkoxSJqsnOESiRAXComXyWBitvpglULVHXEMJVbdIJNFAMYLCDcU"), }, + { .name = IOV("By"), .value = IOV("lAkwKpmlCGjJqbpyqjZRyEGfPaUYDqODmvlztiMthTFTYHd"), }, + { .name = IOV("HcODNSscVgXz"), .value = IOV("ZhdhKqqIigQCwtscUhEGucwcnMpeqlAaTdUVlawyGgxTdoHoOLuNizAKCJdAkzSJXVthKh"), }, + { .name = IOV("XsqIQIOqbWKtjlgaCngM"), .value = IOV("ipSZQZliizIaDfPMABYpFnKvDrOKNasWHXPmFuvOIbkFojhaD"), }, + { .name = IOV("hJaBChuRWMuI"), .value = IOV("SHkBdAnVsYVITalNQ"), }, + { .name = IOV("A"), .value = IOV("HwDc"), }, + { .name = IOV("gpvLHCIYuuzvg"), .value = IOV("hRJxkZliKfOBkpcPHlaJnEpXgRakxAeAHdkBNLBnTpwBI"), }, + { .name = IOV("g"), .value = IOV("jadwvAHviSccyhyFeaeamPVeCVPhmvQQZSnjvRCsJfYhshzsMlqMxqvnB"), }, + { .name = IOV("lLphchPEXmEbvtvLf"), .value = IOV("igewkkXvKpjfForTHthWEcYkuSP"), }, + { .name = IOV("adlDoGLEjMhcvbXPQMBz"), .value = IOV("ppBHzCKeyruJYZwiHFNbJWQoXBvKDYXHaJQwxTItBIGNdBOTTPyAu"), }, + { .name = IOV("AMsqLBl"), .value = IOV("jassyEUeGh"), }, + { .name = IOV("xWnpJtDAcgVlxwztM"), .value = IOV("xBRuOZgPPUNIajAsRvmFJfyfKXTxyhVxMRitAzfrTAYorRgTHMnGIbKWKkQvirGClBzuCXIND"), }, + { .name = IOV("BSyrBFzZqFagZDKprL"), .value = IOV("lQIpFuoMGjqHXVXDxTtsqwHYldAxXhQUjlfARjaqZdBdjsOlIOdUYUcayBAjxyFLZjQNjUMveJIuVTR"), }, + { .name = IOV("f"), .value = IOV("AyCBDEBtJPZNdPUqbxokZtjGnaQnKgVvcWeoraxkOhwSh"), }, + { .name = IOV("KWKiXvZBN"), .value = IOV("uNbWHZFTpjSINOUoWlivxkGtZEkIRsHInCkWTMipvXUEuJycuAcdHzozfltyQJOQiishsCvygNjit"), }, + { .name = IOV("KmWhnaskLLa"), .value = IOV("CqoSEkaYFegLUMeghGxxqsAdSL"), }, + { .name = IOV("rlAJmvYLmIq"), .value = IOV("eNSjWlOaaPlTJRroLKzIsLjkEpTQsLJumMMJiu"), }, + { .name = IOV("EhfAUZYiW"), .value = IOV("PMiDyzQFjOfRvZrlQ"), }, + { .name = IOV("R"), .value = IOV("ZbUbskZjzCRkTduvAmiBcqGnZqiYOrBDlFLTbrkAYOTnMGwuXtMUxzEaGoCjRhxhaItkpWFMPv"), }, + { .name = IOV("JJbqgdRmXIFs"), .value = IOV("wpRLzbgg"), }, + { .name = IOV("hAgoafGtvpfgmdnpZ"), .value = IOV("hhSmyhHQqhZzLJBGuqpiBlbYWbjVfRgSpRTSyoCBrHrkmGgDSMNLdaaVFX"), }, + { .name = IOV("FEknz"), .value = IOV("ycRcsoTLFYHMFqBzoijsdfuYIVejjUEOHZmlACsPKXdtWlZmcYciMQk"), }, + { .name = IOV("jezEQGujUOAuN"), .value = IOV("EGBDJWQigfnAd"), }, + { .name = IOV("RLpJJGqWPASZKlnsATa"), .value = IOV("LQQaJHVrtlGxrorwVcGArqjUAahxTZFaCdatzHlGVKkxyUTkeIi"), }, + { .name = IOV("yaBfSbFp"), .value = IOV("LQjFyi"), }, + { .name = IOV("W"), .value = IOV("ZODVgxBTvNylVVHkTYacUmVfqsfwCqFTttYnkuZOWWHLPNrnsLaCbrknkgtKidUjiXMSMGibJnh"), }, + { .name = IOV("JCqCrWpv"), .value = IOV("r"), }, + { .name = IOV("TPRIHueaa"), .value = IOV("fjGyFuwkxZVgLLUSEQjprJOxfboBEdjYknIRcauUczKHkZptlLwmINNIvxguZhP"), }, + { .name = IOV("oqdHGcIJZrFmvAvbxa"), .value = IOV("BDSNcJogWHKMbiSETrfjNwSiIbWfwHNHZzlBTRPtjXOIINvpJnTeNStciLUVlBANgtiO"), }, + { .name = IOV("UIIp"), .value = IOV("AeQtiyGUeZTabmNeyXBOsXKvtxxdgdyyFKWwGEbpaJokDwZIsZNiuCGfClNkYqChCRPfvaEpeGNPtSuV"), }, + { .name = IOV("qMhHoDkWkEE"), .value = IOV("hMmWlquPjpMCjBMQKHGnxYYMfkdV"), }, + { .name = IOV("hLxe"), .value = IOV("gxUGDslIZCwjXTydsrzLrumkgHagGivSTdsUQEeccLZSEDItuoTRvZnJDIDPuswTwS"), }, + { .name = IOV("iymenBFKqOyJsNSuw"), .value = IOV("ZyFhsafQEfDEVYSBVPlGOFojaMMDsUYpuxCqMwzsmWmYevZiwoDvgcAH"), }, + { .name = IOV("vcmfLm"), .value = IOV("oFwyRLQbKakcKVylvRzNFYxeapwkiHLKcTrhLNWQqDePfscEPVQnmhCLuqAhAdObwYZaEyOsY"), }, + { .name = IOV("FiqhYqHLIFb"), .value = IOV("TNlftPHDqrpBqKljNDPKiTIwrnbAhJzhNZwWDBmmQfWSIpLOQDtmyKLtYZCMULKGrNsiZ"), }, + { .name = IOV("rufwJlPCoHzf"), .value = IOV("DsmRKLmDbvMBvImnbdcerPWtxWkMeHHpGDwjkoDZbegPxEhUMUPCgJVDEDGHQcEaFugCglsucmLts"), }, + { .name = IOV("iHXKU"), .value = IOV("dmEtoCVDKMCXYPFwZHqhBOJoyqdVFINDcbINsPwjzpFdbKGKnkjMUuJ"), }, + { .name = IOV("WjOwJ"), .value = IOV("VnvrvaGhnNhEvW"), }, + { .name = IOV("OEzYKUexSUzrN"), .value = IOV("jDWxzXDFtldy"), }, + { .name = IOV("O"), .value = IOV("HmIGukwAaWpzfyibQrPuimPqXhyTghHTRTyiMnGWPHHsgUUZEAoLcXqoVOUdaXfz"), }, + { .name = IOV("fMNz"), .value = IOV("VerLZXQMhiGivvSsSbitAwoDSpwJEuhhvKiECFyoTXzumdjUDGtnrfQrgNhgXDWlANwIPflCikGuK"), }, + { .name = IOV("ShSMVtruRWuKJoowQiMk"), .value = IOV("oivqyEcHUgQPbzEFcDyLBAqFHzxG"), }, + { .name = IOV("lkRU"), .value = IOV("NLXwodYUbtluIYVrtkjLEdomgYPVfEE"), }, + { .name = IOV("zgRBpIlNdocSkQah"), .value = IOV("BjKyoezLMvdvnQjJvzDgaUeLHTLsxYaseEtJnIfsBTZMcEKZElUBYtpSIRl"), }, + { .name = IOV("pOBhUkIB"), .value = IOV("DocARNavRkLcwZHdJJFFntqxUxgQMY"), }, + { .name = IOV("VbcQIekodGk"), .value = IOV("AyzJSrCZhjuYMiwLWiNmHXjhJOTkhraUhnGMtfdAHaxrjMAQBXKIroOPCwpFpYomqOohuoZJNA"), }, + { .name = IOV("rhXNtxkwmnWGgVQN"), .value = IOV("BAwPDsUtWjwvsBgLFdnobAYQFNUCxgFJPq"), }, + { .name = IOV("qmnOnE"), .value = IOV("RiuqbHZyPmYMlHZsLkGDcpswJtfaVTf"), }, + { .name = IOV("LkGWEouZU"), .value = IOV("ni"), }, + { .name = IOV("XQidQMCrZlpiphKBwAwT"), .value = IOV("PpxgOyAqobAUCTfbSbuSBgWMxETCsryJrIvCCfdBaWEhoBptcRfkDmqtirlmHWgQazcNXAkItrkKPu"), }, + { .name = IOV("KqDHDevxvc"), .value = IOV("SxrcAgJKWyapwPdhdodPYzIsTEVatvKP"), }, + { .name = IOV("Ze"), .value = IOV("LEjGdLScKVzRvWpQFFPfWhEZKUsHJBdyOuqcQJfkb"), }, + { .name = IOV("IHrtYZAtLCH"), .value = IOV("HYuRMCIUSOQsyMONqhCqQool"), }, + { .name = IOV("whqSFptFfXQVgSDthEbX"), .value = IOV("KjjEIC"), }, + { .name = IOV("RImEOU"), .value = IOV("CgzPoBpesIBubIOopfqHhaDALGXrgenbasLiKbzYDR"), }, + { .name = IOV("AXUamJhwB"), .value = IOV("DcHXDqJlwdWTdMvpqtKAJp"), }, + { .name = IOV("VEZ"), .value = IOV("OofTbWyMcW"), }, + { .name = IOV("AT"), .value = IOV("aBws"), }, + { .name = IOV("cglVMuXhrDCTZMwcUHhQ"), .value = IOV("NIRLnUUDllfIqTWyRjbqjcmBCDhNwwQgPFqcZaTbGwvwrnyQm"), }, + { .name = IOV("AxJL"), .value = IOV("pusPYfXINO"), }, + { .name = IOV("lLuNtTzGLIsfdMERr"), .value = IOV("HclsEDVxbFlucIwqepegJrADijKyABHsRimykmHPcM"), }, + { .name = IOV("oOxbPqkVUnmlaKdRJrGu"), .value = IOV("wNrNEfjHlRMGWCmBZHfhapvKeqsowCWjLJEgGFnvRkZbxQrdZXuh"), }, + { .name = IOV("LTxWrSMhoasuIuqr"), .value = IOV("wh"), }, + { .name = IOV("GylVfROrRKyNAcnkVC"), .value = IOV("BKUQHBBowtFRiwLmxPCocTiptjPrJJvlzITgNCSfwejWBLhxO"), }, + { .name = IOV("VTrtGXrmqpegStCMC"), .value = IOV("NCbjtMxpeNFJGsuGavnReeEzBiIIYpsiyhMdsF"), }, + { .name = IOV("xHUIBiTkMdIfjZfg"), .value = IOV("xcALtFptquvzJULDTkxNbDHFyA"), }, + { .name = IOV("mvqPJewnfppFRVa"), .value = IOV("eGmrzxghAFrcvQnNeNwYvQdeDDKvFubMQYXgJmnxNjDpSpNEkMGiVIewCkgaDmZn"), }, + { .name = IOV("MglAi"), .value = IOV("FYIdknOjcXtSHrhDt"), }, + { .name = IOV("qHLbwAqrsYGLWzgbNB"), .value = IOV("XrJbZZTyKdnpSObPRHKqAuDQPTenRBJQBXYWtyTHmBdIJWvnrtDAPKlpDuYMYpXbIDotTeaireaEOJS"), }, + { .name = IOV("BLLmHztrvYGxg"), .value = IOV("ux"), }, + { .name = IOV("xDyTJk"), .value = IOV("YIgz"), }, + { .name = IOV("quGp"), .value = IOV("JYPslniMvvNSZzlwQIMkVwMljNdqmYaezDhSBcidnixDeRsgVboYAHvfFuFaaAUgOcf"), }, + { .name = IOV("IhVtUuGysduXsgkgEkm"), .value = IOV("mHFpSJHBLvaRZwGOJXbBfulNsHnWqSqWeTFbBe"), }, + { .name = IOV("osAvSTj"), .value = IOV("fYWtyPSGNUnYIzouzbcRleFLOpKCdWjbvuGgUzKSBVEtkKhnFD"), }, + { .name = IOV("cMEbsdYKwzXalKt"), .value = IOV("rAzlCQgRLVwXwsxEgMNVhsxiAENDRiqFmFsEfMBHd"), }, + { .name = IOV("kaevxaCoJ"), .value = IOV("DeMCyaBVMRUQNE"), }, + { .name = IOV("YfZDzDexsXHSOT"), .value = IOV("tdsCaKUoeCmaTygSCcgrQvNm"), }, + { .name = IOV("biEcknRGp"), .value = IOV("KcJoqeuBszKbdVjocXKIdYVLioMWFtRgNdrLsRW"), }, + { .name = IOV("OIcxCPliqFBVmJni"), .value = IOV("faHszcmeJIQMBDpwbLEOhrUNMnJIOcHUgfYILIrkTBIdLVurnxc"), }, + { .name = IOV("RLuUDVB"), .value = IOV("lDkILBVTDQpykogrZfcIanAsfOygYkYEuyPAVIbGQjrNUKrFLREzub"), }, + { .name = IOV("utvjsmeZgbhNT"), .value = IOV("cgzCqsWpZHreJYzpmiILHlhWWsuouaGrbNkAfqhjZywfdZWPeDKd"), }, + { .name = IOV("OxirYnrNqVZcsmRcipv"), .value = IOV("QbXymwWloEaXFBFZxKYAMdzhzPznapYrFLxqaVzufxSJwEbSFmgJTIBMgstpxASRLSzdOwjIj"), }, + { .name = IOV("C"), .value = IOV("i"), }, + { .name = IOV("YBcXojetVxt"), .value = IOV("VU"), }, + { .name = IOV("FKTcceQcaLldO"), .value = IOV("oVHt"), }, + { .name = IOV("hucAvAVZ"), .value = IOV("ClmllYodPQDsENBlkhyKUMTzdIimVNaszhrcW"), }, + { .name = IOV("duDuIGSgtUmB"), .value = IOV("gvchmyhhhCFPgPDWTZmztUfXZesaFcKtHAIwjWSxgxlfkFYKs"), }, + { .name = IOV("VdsUPmngp"), .value = IOV("lyHFnHFkuvjQpTQmRPYUvJoxxiyFzsuJoeHrJGiUSWghTnBerJTevtPVrHmEwBsnTaoyMJXokU"), }, + { .name = IOV("qDPwrmmEcvAchIrqtw"), .value = IOV("fPqsGSFXmYbANdsRkTMYGQSzuAPMFmsiKpjXx"), }, + { .name = IOV("PHEHfUWscGr"), .value = IOV("njgrv"), }, + { .name = IOV("SmSTnUQJOnKogBDk"), .value = IOV("dxqOrueoeFdia"), }, + { .name = IOV("ZPVYolD"), .value = IOV("qtmtVaumbIFDnICNfHhpUmEMvwwL"), }, + { .name = IOV("vxiVe"), .value = IOV("aoMCkutMsGlZkZzshoJAQBsRbIPVyehKXOShkbmhbHDrBlOWjFwnBJdFiaigl"), }, + { .name = IOV("oInxAJHkveeNZb"), .value = IOV("MDBFkXPBatJWFdVfouYMcYKEqcLaYMHhpVNQUdCsPZlCAdcTvbpVWjpjPAsMBBneSMvHvWyI"), }, + { .name = IOV("ILRKujEiPrBzuMPKg"), .value = IOV("pOaWFtGUKXUPTbuXhmIiRWrbuTrBmDcRpldnLKIEPKFMLQBTWDKYgOCJJlhWZsspF"), }, + { .name = IOV("MJRjpHx"), .value = IOV("WPmnUC"), }, + { .name = IOV("kgDrWhDxtBfntJR"), .value = IOV("jPAPoyDuofmRePbNvoDPpukXtWxgTGsbGUeBOGqKpLeEMeihWTYgt"), }, + { .name = IOV("FIOhquMWfUyFwhdgz"), .value = IOV("tZhHcXwLU"), }, + { .name = IOV("Z"), .value = IOV("bfPHVZaiyQZGHyWvCtQpZOOWdjcRdlUeTSCIcVNHBCSlnbqQKNWoeWBbrhm"), }, + { .name = IOV("keCvTIYdOhw"), .value = IOV("VpdtVKZN"), }, + { .name = IOV("oNZtziBfxWoAtI"), .value = IOV("wiMvawBkqRdPJHfwHbxEtzPyADccMCcFKaUxnzNLokuorGQAbrvTttzxEJNzCBAXrwz"), }, + { .name = IOV("KVSRcgfycJBMHbI"), .value = IOV("zlJxsNHPpVRXzFaTlJqP"), }, + { .name = IOV("UQ"), .value = IOV("gQdCZwPUTFkLIcUSAEIGLSkNF"), }, + { .name = IOV("QkggKGgZFQbqquc"), .value = IOV("mgjnbwCEIQDxCltklonnTCjgZCrnbLYmRDgCau"), }, + { .name = IOV("pPbdccZZQAt"), .value = IOV("NNhEGtDVMQhKPhmztKFpEnWYeeoxrsBQZJbECseSqOquBynDEqDZtfbJwMgK"), }, + { .name = IOV("PpaAaAtXIXuQgLiqvTv"), .value = IOV("iaopEFmrqbumfWurBWvytQHrxtROeftUrYeQpOZEinSpCogbbkGxrcmKzwLGMBkXMRwpQoZPF"), }, + { .name = IOV("DvytcABMgaauDSn"), .value = IOV("QDhaybjWwzpXrgzslgiXUhZyWRDwKOovCYzxVx"), }, + { .name = IOV("vFDqKTENItlu"), .value = IOV("WSdmWjFzWjjlXmlm"), }, + { .name = IOV("shqcDO"), .value = IOV("FLDohERfrhYj"), }, + { .name = IOV("jV"), .value = IOV("WOxbuNgXNkXfmVt"), }, + { .name = IOV("PfrppapEbyEkPEzoa"), .value = IOV("qMqCZGgUBKbWHUSpstUtzvYTJoBUNmOKgnXmnVKrNApqxedezSVYRrUUMstLCdDwqpnN"), }, + { .name = IOV("DLMksfFL"), .value = IOV("mHPeekAvsYxLYyyhcwkcHwoNZmoEDjFPRiQSvHpNuTJWXOAFAKdoiMhBst"), }, + { .name = IOV("EcHbmdUdyFvbQVUPba"), .value = IOV("gdAeUnmwElChpvfjCajqQhwgeH"), }, + { .name = IOV("mcsDCCYoxgTyrjtCey"), .value = IOV("ycRRYzYtXWUzisWdddlcgJlbGdPjMZoLNOtYQIEhVVAXIygDzszD"), }, + { .name = IOV("wPUPziSWcMKGuyaMpYP"), .value = IOV("JgBPIapzIwUCPapWKsXgCXbiQjwqPWCfFwMEaEMDpZMtWI"), }, + { .name = IOV("uKyayPiut"), .value = IOV("UXiXPzmZkHdMAOcJnFRRV"), }, + { .name = IOV("qrJKNeYTskeSiN"), .value = IOV("hFFtIJgEAbSTfWPipvVfpLPohYUYDOxkheyWUSYzRztWZBiQsbWGdntzVZRVpPiKW"), }, + { .name = IOV("ZPFgcnYCGAqlsYs"), .value = IOV("EDREXajpdgNhJseTiUEuHKDEjFILTyGmedobPqLMxGfVigDnCDEWhCGENiGlzoMlPGojxVQaDSjcEK"), }, + { .name = IOV("THEpyKYiRPhMytlfO"), .value = IOV("jiDiDVBQetGZqSgyagXRdKXeXiyggpNhLoEyBReEXfTZiZmKkFcovdFEZpMdRpFBYLWOWXhKGvBwQM"), }, + { .name = IOV("ZHHrfthGnCqeYLB"), .value = IOV("HIsjotPNSmZKviqJPWTtlQDxREZNEwrCLVOcHKSmtjBmpnqhnmqQqeexQJFimO"), }, + { .name = IOV("jlRGfIIAVpq"), .value = IOV("IjXWyxwaoYUDtZfbYyCExjuVtuicbMaivwjrZJqlEDTGUlaGobEpvnlThZgQCDFMNCiN"), }, + { .name = IOV("SfYmQ"), .value = IOV("DmuDofuqCFciKPqdvqikbdh"), }, + { .name = IOV("dlsGgB"), .value = IOV("FofRhIevgiWWGPcfmkoHWuJpGtBSvlpLzQHNhhnxKMqSpeNPwGGm"), }, + { .name = IOV("gULkEcqAEqSsnyCgs"), .value = IOV("gxQaceHBjBUobXBbzwTEwgVnZlOyJhjUuSTFVijJVBOPXgSme"), }, + { .name = IOV("El"), .value = IOV("pnpOVIyxHxXg"), }, + { .name = IOV("xMDcFrtMoTarMyjlsYUk"), .value = IOV("VRLUTwhZXnPcTPQhCmmlEbSlOrZgyXnNnfvCjDLmHmNGFeomBVNrEjreMiJLNz"), }, + { .name = IOV("sTlHtfsyzjlsf"), .value = IOV("szrVbAEMEnUlNAYaVQEQngYglTAjjYUgfathTAjIwrxVCEJgAWJ"), }, + { .name = IOV("eQrQ"), .value = IOV("tjtyKIfHBTWAgjiaRiHHzCrX"), }, + { .name = IOV("IhfVkWxmN"), .value = IOV("LGTTcuhNiKpZHlflyECaUMwVVubDteYlaXLettnPCQDt"), }, + { .name = IOV("qA"), .value = IOV("tnSwYLwZDacSYvjzhDPeLOFhBmMgJSFiGIalTtvdwZzoZQYKIBvyxXrxA"), }, + { .name = IOV("rpaxOAExLc"), .value = IOV("pcXPJGFpmRxYPrVsckQvTLdITwzQIDa"), }, + { .name = IOV("LWeIbl"), .value = IOV("yKIXqKqZUkyrpHvpFLPjnRYVXvwxkZHOQYSEUSjbyVeCrlMUOaydAeoEjiyjtItet"), }, + { .name = IOV("wPCCZPVaKO"), .value = IOV("xYciBlNcvejJmtZiUkGKxxoZJfDhoNejqdCl"), }, + { .name = IOV("cEiJXBztndpKlLof"), .value = IOV("OnqMaQRcTvxyADhSKxyFCyllYkTjBlWpRiBb"), }, + { .name = IOV("bQnhgwaB"), .value = IOV("kUssjhOqPFrEdryJTViQezCKYlZcbnogNgroPOx"), }, + { .name = IOV("PdAxjDDRyrTnzwqWc"), .value = IOV("kACdDZdmsOZoNNmZpBKTsOeGKnFLjfgbQcSHLFObyecZKfPObCaFtcM"), }, + { .name = IOV("cPrAkQNVeAOyAhfKdU"), .value = IOV("KeULukxOtBdvdlkwJUNPoWKLujYPAYKhGDaHeBXWcbHQCOsVIfDftVCtBLxVYHuFcktFmK"), }, + { .name = IOV("XvNZHmxpSCMkIjOBew"), .value = IOV("FSnAfXghCFKyNWaxBmOqDlZMqujw"), }, + { .name = IOV("hpdpa"), .value = IOV("pWJkPvNEbMVxccNsmyNsShFSkvFkuKSKHLpucodJuRIPVhbTCsvFpwA"), }, + { .name = IOV("cViqRVizgX"), .value = IOV("NehOeZKKGtgSWfrZupPWGujiaePsifHbylCmvkyyFRqgC"), }, + { .name = IOV("KvKXJUPTM"), .value = IOV("jQsoBBivRpiAxp"), }, + { .name = IOV("mAEp"), .value = IOV("mWKal"), }, + { .name = IOV("DodCiYXLDtv"), .value = IOV("tCnepqgftHXNLGydzLKYmXRSTtnxmCVAOoZukRekmiMCRW"), }, + { .name = IOV("lYcXyutQtovmKzmCHyQ"), .value = IOV("XWSERRCrLCscFosxpzUzFspFLvmOHppCiqJWpYeVsfBvJdRwwwjJjRmkLMBMgGADGvylfgxhNz"), }, + { .name = IOV("RGcJDpFOxHeElE"), .value = IOV("AlYRlZvcoIEaUaOroYMQkNAdgtzAmYKmelGqKa"), }, + { .name = IOV("GnpjgP"), .value = IOV("HSBXsQshZOSLNvEToeqvsTMOxYIaRqkWdEwkkvyhFOKyfOUuoSHSafVDDERtz"), }, + { .name = IOV("dZeJsduGofM"), .value = IOV("DYJgqcRLjlAaz"), }, + { .name = IOV("EuwkpPRB"), .value = IOV("DjHRJiwGfJyLteMMJXrxNsLejdoCzeUBtrWHNYvWfzKiMifxhZXDVrqNiLYXZKRvyVMlLGzOqCxe"), }, + { .name = IOV("QqEAUv"), .value = IOV("AIsWzpSLzkgEJTsyLHgtLiEiQlEPsb"), }, + { .name = IOV("LXWvkHwHLsde"), .value = IOV("bCYpTPPJoYdQRwXiPqCZxdrCGzvlUiNVRVaLFtZbkhlpDZMerzXcvIXvS"), }, + { .name = IOV("wPaYzQmoeJwl"), .value = IOV("EALiGeWtFTSAvjKxYAKgoQqoObHCMslwbqvFxBNVekXERJxzdNcuIJD"), }, + { .name = IOV("QoOJrvgdCIwHvwPDN"), .value = IOV("pXQLyCgMxPnpRtgApMJaCcnqfaWgltdrpsWVouDcMSGiytYmrCyktFJDj"), }, + { .name = IOV("tQnoi"), .value = IOV("YawGSOvPrZlQyP"), }, + { .name = IOV("arrv"), .value = IOV("mRQJudJRAlnWOIxvKEgHKfPZWhNFNVJEDelhFav"), }, + { .name = IOV("ksliVKtfqMwbfDRmA"), .value = IOV("rqPElkneJiRcQmjEuPvPGaFYAOVsYHswmarTbXdfUxmBNpiQVtbHYd"), }, + { .name = IOV("zpncZQJdXaVDcVpi"), .value = IOV("JWIxqJLgGmDydNppSObE"), }, + { .name = IOV("jZ"), .value = IOV("UMiFOgbvVDmLjCaFevTwnkoEbVsTL"), }, + { .name = IOV("sSQuimET"), .value = IOV("LJeERl"), }, + { .name = IOV("HzxRPjYQxFfvyMyKN"), .value = IOV("AcRFZVsksacBMyRpM"), }, + { .name = IOV("YmWULlNNSXLctOnNVOpC"), .value = IOV("iYrISKRgmwTfmQxzYRHryGUsSllVIWZEOmIYiHkEPwdvwIw"), }, + { .name = IOV("uNYNClyxjnjAxnsrdZF"), .value = IOV("G"), }, + { .name = IOV("FqmdYgkeMOJlDkF"), .value = IOV("blVbWytVTalNSWCoAvILaVePymIyQLodyAH"), }, + { .name = IOV("KgcXJ"), .value = IOV("tClhpLzQiZGpefDhhfufjuKGDvOgPjscDWIGZLpGFzAlXpt"), }, + { .name = IOV("mTnRStZsjEOtgCf"), .value = IOV("apvLPMMEHhzdcqvOVYwiBuAmmlbiqmZQbtCOekEbrQfyTliwYiXeIEFVnQdfoNMQTX"), }, + { .name = IOV("b"), .value = IOV("DMogRuBmojJgmMxpNskhTRXSpZeFviPdkCvLRLFEsUK"), }, + { .name = IOV("FPVapvxpAJB"), .value = IOV("LCVnDA"), }, + { .name = IOV("ricMCKAGZfQDw"), .value = IOV("kMKKo"), }, + { .name = IOV("OuFrbntTrzAdz"), .value = IOV("XsbcCnrMsBOwEkoMTOSiBZfPEsaExtPnjhPUoeunOYWBfBR"), }, + { .name = IOV("nzYF"), .value = IOV("YlBPmaZjqVzFkBLnfDBWtSHKPLJrNPHAJZzDP"), }, + { .name = IOV("ioNKqGCNSsWbhiZ"), .value = IOV("Q"), }, + { .name = IOV("BBB"), .value = IOV("DgYTJBEiahI"), }, + { .name = IOV("ebx"), .value = IOV("wwKnnTXMXkNboyoGobiEqnMVXmRpMhtrlfGyETj"), }, + { .name = IOV("clHVxRiRlegJYiuHU"), .value = IOV("clHSgxeQnvZnIc"), }, + { .name = IOV("krBpvpfPjRss"), .value = IOV("jPahPWvjXDAIjnHxrIsO"), }, + { .name = IOV("QFYPIhHjQqfeNjFLP"), .value = IOV("NmeFfxTPCsUu"), }, + { .name = IOV("IKZ"), .value = IOV("mxgmhKCFxo"), }, + { .name = IOV("nIFILpqY"), .value = IOV("jvvegtLgDjdQtMMzQmQikGflgolrDWTCAjBlxYpWCnJjuVCcTHtbLORUvhUPLEscBxSnCJjG"), }, + { .name = IOV("nJRxLPw"), .value = IOV("PwOsTiYDKTYMzxiEKZqkQKZjO"), }, + { .name = IOV("AIBwaiVwMPAXL"), .value = IOV("RnoVkjhEMaFKyjRctGOzcyH"), }, + { .name = IOV("Smea"), .value = IOV("YBfPWmNtfMKmCJagNBkJROWyciSVUFPSEXHVdDQSoUUlrqIxzgw"), }, + { .name = IOV("V"), .value = IOV("qkFTWhsXpxodxwIiaCHjcTjwXxQDwPeLESYZui"), }, + { .name = IOV("gMbQByLBgLxUTuuGLOl"), .value = IOV("HAFYRDefgGUnimuWNvTzgQdThsgLKEggXHtPCpnvvDAfZDTyHTfmkUjErbGGQMhkCNbleKM"), }, + { .name = IOV("UAhdNlz"), .value = IOV("lLumFZRUQKonGcnKOqgNYivouROMcreDiIBkUILyWlEBhUbxCqi"), }, + { .name = IOV("uEjkuEfPPx"), .value = IOV("dZgfRBMPKdxeZAm"), }, + { .name = IOV("buKctpf"), .value = IOV("iIXnySoDytjBbyeoVmscXtAneFyrHXXjLCmhFVgKApFfcIR"), }, + { .name = IOV("KwFgu"), .value = IOV("BJjuxqfkOcubYeAvdaBDSotaJHmbgSLmuIqXygbjPvJMChofpgJmgNEoYsDhCpeLxxdwh"), }, + { .name = IOV("PTZwdDXlOYgrwA"), .value = IOV("MRzMmUbmkCue"), }, + { .name = IOV("nytxB"), .value = IOV("tFDevniaWYkYlowgxqZkqwdrMLSVLdRtApsZDeUbGtWyOvVYPgsVFfbwHodpSA"), }, + { .name = IOV("mlRbebbA"), .value = IOV("lqkpoJuJfgKiaLMLMVtvaTfpUySSLsOGhPsOQpkVXinwej"), }, + { .name = IOV("BYF"), .value = IOV("zGZAqqEtBrejZEoCALMXypfBj"), }, + { .name = IOV("lvUxenyjtDGikTPQ"), .value = IOV("uSBssRkdSIOCSan"), }, + { .name = IOV("URhIaqlBKDXhA"), .value = IOV("kMogNmguGxrUBBBPhnpRyCSDGISEKoEhMoeMpqvRkGltoCFpCxrRHpFbR"), }, + { .name = IOV("GPOoJNRAO"), .value = IOV("XAAEzCSeVvq"), }, + { .name = IOV("kWjPBQHHMmkkzPAs"), .value = IOV("rOZmWVYgOWYjzimBeALKQFjSglVIriDvOefufRfvsvihJEsnKXKsbBFpcEU"), }, + { .name = IOV("aKZCdrKzOmgjXFxXv"), .value = IOV("oEYXqyEonlxAShuaLmSPZdPXeoVxHGyQoMOggzPzmXZvsSHTNGQzbPvcpaEgecpZOMJ"), }, + { .name = IOV("fGVrO"), .value = IOV("fmMZvArIObOHCJausThTPv"), }, + { .name = IOV("SnyhxPihNjlBO"), .value = IOV("SKghdJdMdJBrRQWvSNMfDWemGTpojNJLPXvCUfOYDQruzqktUIljPXWMaebwQcpXQsOAenvWBiPbYP"), }, + { .name = IOV("lRubbwLja"), .value = IOV("qRZVkuhKzDwHfElJFVnEfAOyLnyzktRzErtIIIzWDifivfGgDYBe"), }, + { .name = IOV("eNzkOOcjlYMfHsMuLkDg"), .value = IOV("vrQteOrFNIfBLPKCKuPDcGPCVGBelHEcOCZlcnElkWOnbTykpQSH"), }, + { .name = IOV("WtMxhGRgZAGORHpFXdG"), .value = IOV("FpjNcHIqeYUJKJilBHkHhLNHGRlqZYRpdZEKzAauKyLEUFsWqgCy"), }, + { .name = IOV("DjI"), .value = IOV("npdEKVgVcmeeAiFiEfiNpxBNymsTiLiOQSlrbRNV"), }, + { .name = IOV("pVrojMpgHLSCquygN"), .value = IOV("SSMsbSjZKESTtjiGhownYrGyMAlxjmQMtpmisilkLmyjQiBhVQkVrLGdjXIaXwrPCe"), }, + { .name = IOV("TuNfDpZXR"), .value = IOV("EsAysUpFoeNaMcNmvRRxWzwaWiwNmoZFlylmyuWBSkgrqwSYtEHHZKThwh"), }, + { .name = IOV("jsm"), .value = IOV("pMxBveGkeAhlZkEhuxLDtdRolSVupWnWnpEVkjYWZpwzINEyaIFKLXhgQhsmLFOdkQ"), }, + { .name = IOV("L"), .value = IOV("EWnUhCqdjlzH"), }, + { .name = IOV("kFLvCgsSCCYrOTVqXE"), .value = IOV("fWxWooxDXhDCMFkPXbIwAOIewTVcLwxbTujKGucSJXkFykTGfQPBRNnHxXsReaMQXOG"), }, + { .name = IOV("UvimTyCFyaOORN"), .value = IOV("GNSXtWzKlLcIHkecoeLIBrAYxPAJUclMinecxPhKmURItunmemVMvCeUdrwIeJOxiajibMgZbXCHGFbt"), }, + { .name = IOV("pDFzOBwXnMrFGTsSF"), .value = IOV("XvYGCJrLcuRE"), }, + { .name = IOV("jLHtJFWveVNObNmchJ"), .value = IOV("DgmREdAGSXPVzwSHxSArWyGoJUYuBImmtZUrciuEYHnLz"), }, + { .name = IOV("rEOPbwrgCrHuBoYcfuod"), .value = IOV("qzMEVrjkgiLXwHuBxWbqumqHdXcIlWXfbMnpaCHFZjndiKQj"), }, + { .name = IOV("DoDSIO"), .value = IOV("jBXZMWKWgSiVcjgpTAWsUNolgEnRrnqRsOeD"), }, + { .name = IOV("pNmPFlPzbf"), .value = IOV("UfOLnFmipcDCqfQkHAopxSHKsxkyeeWmPegQLJdVzmxceSScyNDu"), }, + { .name = IOV("iM"), .value = IOV("CwDWkLnbpPtYKvHyesBXlDZxMWImVPWHviMukl"), }, + { .name = IOV("BoGZeDNb"), .value = IOV("yGCYlOPcFImCtZegWKnbcxBHJJrLsYcEWSJNKYlepTJldmWbcWsoDup"), }, + { .name = IOV("XQDZrcHFphWGhHaPx"), .value = IOV("UOUpzQBvIhrtSyPMRGKvJGXQMNHadKBevlUAEWLLezvpBSGocRMoMtopEfBpPUTOG"), }, + { .name = IOV("nxDAshFXhBJAFA"), .value = IOV("NeVcnQnNZTCyzLAttrfSohbzXDmNsKTXtOXuzXaqrGfKcQEwxtYKdrOdhNgOQT"), }, + { .name = IOV("xdLmYOOcCdMHbjfJ"), .value = IOV("aHspjhpccYWXrnkQbNrnpXuF"), }, + { .name = IOV("m"), .value = IOV("DnpgXajxTwifRfOvHRzcEslrzAUazNSKnmrWAIPkYvGVHSHG"), }, + { .name = IOV("YjyfQiAMksrDOVlJ"), .value = IOV("rezmSCYTCVdIPbikgx"), }, + { .name = IOV("VjbKCbcEamY"), .value = IOV("LjyKIloApamxCQwwigedWiHHmAslFgPcyCgvzFmfEujavfsJwBcMFElcwllzklYenViKG"), }, + { .name = IOV("DMLVYhqbIJlGBARrkV"), .value = IOV("PwgcwlCmlwEwTbEYfIn"), }, + { .name = IOV("ZJNCn"), .value = IOV("XxiegQzmyWOzFDSlNBsprCcBuuludAEsRANkGQQl"), }, + { .name = IOV("PCLdbLkegFcffLNs"), .value = IOV("CHziAvtzJoHPnsMrMfqtIJpNzjCUkwiZNaDHsoUDfiAIZzDKrUdFJATeYVapxlUEhvDyLxRwpKO"), }, + { .name = IOV("XIGlyuGHPIDddzoE"), .value = IOV("QPfwknHPNwFOCcFFKPMcZ"), }, + { .name = IOV("asSkDlHiQNca"), .value = IOV("olSWxWDkrvuNTrbpaKZcAzXMNYuwvfWVwLrrJFrNkj"), }, + { .name = IOV("fXZfkveepNGllL"), .value = IOV("KLJjmLbGyTWnUOUKwvdLZatJqYlmjAwtiNDyL"), }, + { .name = IOV("HzCazXiysWXPjz"), .value = IOV("EFZXgNZJUkgSPOofYQNAIKnyrt"), }, + { .name = IOV("KJCrKi"), .value = IOV("EOnjgRMFYcNDNpYQxtmcBbrDqUwHyxVwxNfrmDn"), }, + { .name = IOV("dQOJdubArVpQCDwPBCT"), .value = IOV("ZgZfLyHHgsoiOYVVBNWcusQBjCCUUpJAQVniuAINhjjpfzGkm"), }, + { .name = IOV("HiVZaaJnmMfVZPmSw"), .value = IOV("zSjtLkKvzOOLwejVgFMftbFktxevWmcNvXcOzpgqMrLIqYotXvIbly"), }, + { .name = IOV("nzVxn"), .value = IOV("EuLOSjAIYinaSiyPBFLAttdVXPyHdYpzHVhCgnNaunWvjJoGgGQjlgNOLsLDtygzo"), }, + { .name = IOV("yS"), .value = IOV("bSbNGLrfQfymHeRwbsbCjrFyjNylZTWmZzMIIjXyQuiUpgubhxESWduDUKbffMkuGgGWkJDXgr"), }, + { .name = IOV("NcbXqNqOYGPccpTYvjO"), .value = IOV("N"), }, + { .name = IOV("rsV"), .value = IOV("AgmjyxzK"), }, + { .name = IOV("lFckuoCPjZBAwa"), .value = IOV("iyKPMwZRSrOojAsZBvzMtRArfnSuHCoeexLyxSoTxlfGsXuSbuEfnbVIbgPnGSbBuXPhHAL"), }, + { .name = IOV("nCyUmWc"), .value = IOV("XxoE"), }, + { .name = IOV("csCLKaux"), .value = IOV("yIXZtxHECJxLCrGQnxvjidWUgodshtTtyPRVEdCZJo"), }, + { .name = IOV("FASzZzfXLUUMR"), .value = IOV("mfakkTYMQcLYuRtOhZmuysVijaiwPHNmLZASaGvHJxkxXmxNNkKUGceocrqkTwmyPNFmIrF"), }, + { .name = IOV("JiUXjV"), .value = IOV("kjVLCedVbrUvKcCHCyVCAIqhwxuhSPtxlPQyqACNexUngAemVkjGJFkTKfppXHlCr"), }, + { .name = IOV("VZqSWtEWaOKxb"), .value = IOV("oSpnZfFzNGM"), }, + { .name = IOV("WnrOqYSoHsEEtFHirxP"), .value = IOV("YWOVqhUBFCXTaTsiMstddSSeidiSR"), }, + { .name = IOV("nLeFGcMBDVgLaTde"), .value = IOV("petikGQyauAQCPCDya"), }, + { .name = IOV("w"), .value = IOV("aVzSBAbiSZKtbxuUUDaEfKlaFxqoFGgoZrfcXITkbCsOqBLGMXiOuixGfsbgYARWgVducxjSkKaYmRqM"), }, + { .name = IOV("URcQi"), .value = IOV("iORJLHPopWgYdEtQuYUyRkzKqYiHuSQvONDHi"), }, + { .name = IOV("KQoEUTjGGkgO"), .value = IOV("eGnbifuRYdLSzuEvRcy"), }, + { .name = IOV("kXYAjdIUcrDKj"), .value = IOV("degmhdOHKksYsuaQUKxpkqlociyzDTkOOiTnyMcTHCtdRjkjIZrmMRYMCwvLuaqftsBNBrkAdvvrUEAQ"), }, + { .name = IOV("GPWVatKoyJmOaUhqnp"), .value = IOV("VIWqslmkWJMfhSBVqGhoCrUNDUdPpcJW"), }, + { .name = IOV("GjmqxDELFkCogCpCjnq"), .value = IOV("NdtLJxRRbAmlwtfRqzPuJMZPabKldVwLAIzfGKZ"), }, + { .name = IOV("BJdXwxGuuzSQnB"), .value = IOV("fuUDDSZqCRyVLXgE"), }, + { .name = IOV("JDZwpblmBLtKbtoRcfJ"), .value = IOV("byUVxKwflc"), }, + { .name = IOV("gzwjuvrdDXYGjH"), .value = IOV("nzZcIvrBtjajSNYQkOII"), }, + { .name = IOV("XlLNxbELdhLkyjWqav"), .value = IOV("NreNSMlb"), }, + { .name = IOV("CWXUl"), .value = IOV("XRAuxXVzjmaIfYaTNhazMIXmnZqtlTjZVHcPBdbegfvepNPRoXhlFEEZiNBZUwuxnfODaWyc"), }, + { .name = IOV("yRHBELDObFECgU"), .value = IOV("hUhbuDBevmtZdqaElmGCQObJuglhIeCplBRzcNLKXPFFUvXBSFmAYgbEhTLDrL"), }, + { .name = IOV("Aofu"), .value = IOV("fHVDgxCCqLoydMpnbLuqNG"), }, + { .name = IOV("RJ"), .value = IOV("GcdVDzbkxFUDcOlVfKdqToqCSWHGMAkQBQiPihbqVV"), }, + { .name = IOV("LPQWgTYI"), .value = IOV("LmSlqFsOoAHinnVvSaReDjmdZpQarBpdLwaSt"), }, + { .name = IOV("gTMOznmBEqkKiu"), .value = IOV("zcD"), }, + { .name = IOV("xbNkEgsALmglJwP"), .value = IOV("ivDMwJWYcGcCSNVZO"), }, + { .name = IOV("yApoaEeg"), .value = IOV("iamkckUvSYHNdqTupwvBuYqdGLLxyILUaKwOUdcmZbFukmHlMrxcuWQY"), }, + { .name = IOV("iXcpgnICAgPrTvPI"), .value = IOV("BZOOgmEWCWsQHMjjtsaMgwxDFq"), }, + { .name = IOV("Jf"), .value = IOV("umpCZQCVabmuDBcOrD"), }, + { .name = IOV("HfmklLfVVZaVcpEEFAON"), .value = IOV("zzGZWdfyHQmxHpZDKYGhqgVmiaMavKRtFDjJEDIcsVTvYMunkocKoJlFTgADxsWJbOGxsZt"), }, + { .name = IOV("DhZjRfUFrZDL"), .value = IOV("naILrRCQaDTpELzZKqckvgls"), }, + { .name = IOV("Qypwsblcqbl"), .value = IOV("qgrDUIPxpSmtRJNCZSiqgMJsVOfGEswMXNMIufIQlIRaVdmiMALqChblHwZpVoZczuSINPRttXloI"), }, + { .name = IOV("KQUJdfjvqtXgIv"), .value = IOV("GDfVMfnSISsQRgTuklYirVlbFYldpjIwzHwKnexnibcXzZlZvXQjpBSckQztAz"), }, + { .name = IOV("EBKimFrKX"), .value = IOV("qnCsmlDAOHjnzXPbKSXDTlnuaEAHBoXYznmju"), }, + { .name = IOV("kdLKxCnW"), .value = IOV("snVyIyUoZpseYrMPlbrCpVVnshimjLswspXDMFKZQzHrVv"), }, + { .name = IOV("GtezRZmxiwMYT"), .value = IOV("knQwAwykMICnlgOfSmbUQkKUjAMbouSDOctyoH"), }, + { .name = IOV("GosfbmTCqRn"), .value = IOV("mRZhVJwaWy"), }, + { .name = IOV("yAfrBaSwy"), .value = IOV("pOXPQXUjkDEjaBvbOjsCgPqKlveywPwWyIMGTvCgUmtpqqtnJJ"), }, + { .name = IOV("JBIfc"), .value = IOV("uqnzCbKMVkDkNQfuxtTlMLhJTsTcHOvOTnXhIRRYsQqqPryWtBJYWJYKqoE"), }, + { .name = IOV("eotyMsPcWEPNwPsK"), .value = IOV("fyceSyHHEtZR"), }, + { .name = IOV("LoqS"), .value = IOV("npwHLImwmfANNVNfGA"), }, + { .name = IOV("BjRMwHiOklMfI"), .value = IOV("XUsTjEWiELgaJeisRXxmGyQVmKGfKDLSPOvcCEpjLqliYkWjCnfhcjllWPEzowJyI"), }, + { .name = IOV("gnoRrlZRyfSelesRy"), .value = IOV("UgghiaSMxpEDIgmJOOedcEhCIyjDVCKOEXPattoBukzVIZLXCsSd"), }, + { .name = IOV("xVZ"), .value = IOV("rrIv"), }, + { .name = IOV("hbKuxNjAnHzAXFpPTgLV"), .value = IOV("wntQTqzFCY"), }, + { .name = IOV("GFZDFxL"), .value = IOV("uwrahaJlNEbLGMOUzShOxCdHoARbpzMCuksD"), }, + { .name = IOV("mHVdDmfnqrnfszVaAAaS"), .value = IOV("GPCaDihffB"), }, + { .name = IOV("GSpgvCDkr"), .value = IOV("tBQLsXvDldKqloSeYe"), }, + { .name = IOV("MUVOSEFqJZnOXwFUfvyz"), .value = IOV("GvIbCglJDlREpF"), }, + { .name = IOV("ipTrvZOzZC"), .value = IOV("sbikKHKKmdysvTDSkaUhzcaeFrsgGOYJGIfcVjOLxAIO"), }, + { .name = IOV("CKkB"), .value = IOV("ZNaFfvSWvpyGUskznzkuNCdPeMWIELkpxdXLSqmQBJRofqnhazQ"), }, + { .name = IOV("XtKAeSlZ"), .value = IOV("ulPfKcDhAIyNFDkuDPZjnHJCtzfViPNBRPiIuuLvBbhBgUFdHzZlGvZird"), }, + { .name = IOV("UTYU"), .value = IOV("lOPLUhoAuAvxxossxY"), }, + { .name = IOV("MHUEzKDN"), .value = IOV("ZjaFfskZtdeLgJXfeDlHdAGqnoOAOIHaSdRpamjIKh"), }, + { .name = IOV("TAKvSVQiuWhV"), .value = IOV("OWKbzqcpatNqaahYhXOTTVBdDiIqDokAZfvFyYmDcApHyw"), }, + { .name = IOV("XozBaogDGZbLrxFiR"), .value = IOV("KslYolihoasPlbcsudxnJvjorTQoAMBxMQVWeuNdILkvJZUECsuHMkBRQCUJqfHpocrKXx"), }, + { .name = IOV("pQPL"), .value = IOV("FCScjUUhEpnunIiCEzCNAFRlaGBfTSWnpWRMpGdfibkInIXkizYhf"), }, + { .name = IOV("RBMZutgzOREN"), .value = IOV("OJIxGHeFrZAUYaGGhLZvpONiDbMwLmwvZeHQ"), }, + { .name = IOV("KUuOmyy"), .value = IOV("mXUGRnLFIfTvsDFxefvYtjfmeqDbhBwWWgcW"), }, + { .name = IOV("eSFuIJEKnUX"), .value = IOV("SqQMObcMFAIEYypScCxOgWfngOSBOIXukWEGWaqINzqLLUkeUnNPvTivD"), }, + { .name = IOV("HNvtEsQtRLX"), .value = IOV("pmregoGHHGUKZFpjrLMHczMGvDxXZBAWEapOzrEaRM"), }, + { .name = IOV("VKgLp"), .value = IOV("FGEjBegQqrDyihcokFAcBNZCsQDXlJUGipaOjDnJiyjcqrghsarszMozjtWgYfeIbznstWT"), }, + { .name = IOV("gNVJAtnqxEzhEJ"), .value = IOV("AVcGcXScem"), }, + { .name = IOV("YluRbLQhBLLoBwDhor"), .value = IOV("ZzIjBuyRQSGmbYTjFJdCZyRDkiUjRlAofebyMSkWoLCOSvxzDYrtadLKYYjMSkIwG"), }, + { .name = IOV("VVcBdowxYO"), .value = IOV("USWVEmZrkFGUUNlpaMZzgsZpeQTIKEgGYgXjRyEWl"), }, + { .name = IOV("YgYSSED"), .value = IOV("ZTSIdkxSkCdEWSPQeExQZfNPQeteJYTiYLRDVQHo"), }, + { .name = IOV("ISsOYnLGyQjrnzQSO"), .value = IOV("mmITFlIEydjlJjEDeOgskokXKWEvrkbkQUTldEwpUgZrSBIkIY"), }, + { .name = IOV("fxIBmGMe"), .value = IOV("tsYlRdb"), }, + { .name = IOV("WIeuQGGPdkcmrGzb"), .value = IOV("mnUWarhhZNvP"), }, + { .name = IOV("byghDkjZDLGoATPsjNOE"), .value = IOV("edAAJEvknAzRbIABiLvypQfxg"), }, + { .name = IOV("qgWbwJclroPWD"), .value = IOV("xsxKyAoBfTP"), }, + { .name = IOV("lBvXRZFKkoFRGxjzj"), .value = IOV("dqNFbZvxYvTurhsBbclrhWdtxjhyYDwDUwqeABIrZgsNAQZClejTCPiKwHwIY"), }, + { .name = IOV("Kk"), .value = IOV("NxXpGpztJLnJsFIGpmoMindREypCFvHLaYPiFFcujDEJxXxxrqMSPdsekn"), }, + { .name = IOV("akFhJYW"), .value = IOV("SsjGAbjBUTfQyavaaimLTuEngJNIsJfRTBzffQTtKrctjrwABiRaTFglNGpTqbmWBXDYIDu"), }, + { .name = IOV("IaCcUsH"), .value = IOV("liNcUrFXUPlvkWWDsykJJuFtyzUKjWrKHao"), }, + { .name = IOV("uFROz"), .value = IOV("gWljUbJlgBVCc"), }, + { .name = IOV("wBZXZAgBuLUnLE"), .value = IOV("ryoKX"), }, + { .name = IOV("yiFiZFzfUagTTu"), .value = IOV("cgAyZcbRcfreIReILChNcfckuVKNYelsBCMCbrzQioIABxlIkpVFoeHrHZClVghKphtqNQyoL"), }, + { .name = IOV("jZq"), .value = IOV("zWxHSsCcJPYxgkFQDaFdhZZdlLyigFLDvXeytYhbElnUcaCJKtRBP"), }, + { .name = IOV("tLGcZCOOfIeFlQfDFv"), .value = IOV("EkafPodOFBAntsZDTXpifRdcUhLLWbQxbaZV"), }, + { .name = IOV("XVPEE"), .value = IOV("NVSaYItKMnjnaUVSpaqsRSpYsxweLyCUrNyPJfPawnkcTm"), }, + { .name = IOV("PB"), .value = IOV("No"), }, + { .name = IOV("TrsEfUcMubwSFoehF"), .value = IOV("BhyEpHJRCSIEWbRMcLrSArwkgZLeCrnmMkVoTLJvMTjBznQgPaeQNpboUthHtvxBW"), }, + { .name = IOV("RbZHdSssFB"), .value = IOV("qUJoHrvleFpUedFjwYAmGuJpUsNQoYvrASGidw"), }, + { .name = IOV("SHO"), .value = IOV("JcjmKPwuLgJOG"), }, + { .name = IOV("oXrEqscXcpVILFOJOi"), .value = IOV("QQElGFdOiPlDLGSgsgoieRqBEQJqudHTzwWDXAMCsleZD"), }, + { .name = IOV("lACKHNcCRCSt"), .value = IOV("SDriCgvA"), }, + { .name = IOV("vdOxxtTvYxZH"), .value = IOV("QKPVybYggfCIRNysHfsbXzDJFk"), }, + { .name = IOV("toYDfCH"), .value = IOV("EscydTkHqVZjliMURgaGoKWhkwchoivQwtvqBdT"), }, + { .name = IOV("soY"), .value = IOV("jEvNtElvzzKcNGqtnXthRnqJUFXcctIKBTOSTFL"), }, + { .name = IOV("RRVETYNIANbQrmxY"), .value = IOV("RGmPUeARKRtKAPtXRLHlxbKHYEVUQQaexYJOwzHPYOVjOBVsrwGeWPRxVCmySXBwPBoic"), }, + { .name = IOV("lpIAorhQio"), .value = IOV("TpLxHRNSVLtuUItqAfBfXStAokzV"), }, + { .name = IOV("IuOcWWXQJYfiQTuM"), .value = IOV("gIhsvhcvtUUkFtuYEMhpxLYVlbgszDgnkOSxGqmtYNkMNeuRwFvXpgCrjLGNlUQe"), }, + { .name = IOV("mfBgQqDJ"), .value = IOV("XCktgOEmmWRqWxARXdGpYOswdtmPhuuUfSCUbppYfhCmyApdIJsjhGQqe"), }, + { .name = IOV("IMzWAwnGnZfxeh"), .value = IOV("CtQmwdPkeqqKUBJMeivXJLTJTNueDwhhGUjNfOiXbFryNBSUeotqDfPozRoCmyhN"), }, + { .name = IOV("kwQZusGpOAvuCiWTyRW"), .value = IOV("GMzaDtnMqVJdkcllYnCrWdUUMFDDvvDfmajRNsqDqBhQjccrOTdSWkQeLXETNyuNdZZDGMlxNWu"), }, + { .name = IOV("xojoHaQMnwuK"), .value = IOV("hFCWtfxniiJf"), }, + { .name = IOV("ALwDStPhvrwlv"), .value = IOV("PGeGXbQ"), }, + { .name = IOV("avCesLwwsB"), .value = IOV("WhItzAUfDNadSnitEHUuDfkGVrHwOvtBIukmClydtuEeTGXCTMTicTcXV"), }, + { .name = IOV("UGhWVrbKqSPFTEgSsOZ"), .value = IOV("bKnkSGAYGDmIrDYubZsgNWJmCqYXRKNsJuwdyucMlCewhbswmHqOk"), }, + { .name = IOV("gBALUtCOwRWmXMZomK"), .value = IOV("diuUSqzFEpiifWfYTegzIDEPkrsPhIsHTSGRbhKFnQKEsGkBxzPrEn"), }, + { .name = IOV("fppk"), .value = IOV("mvYCZwTuUwJjDyVzgDzJKLjWWi"), }, + { .name = IOV("BfY"), .value = IOV("qzQUOyxEnxmBHBkpFFjQaOJzAqjcpamAunkUCCWjdzVCTNvSXSLWhskVThtcFPZVFRmyIQYE"), }, + { .name = IOV("sslHBMCiJ"), .value = IOV("uyGCyclaKiMtcPIVMzPdTzOmHRCECmuDgnfKceXXBnyxNpWTgrDQwaRBwGIhJIIQNLICkoBA"), }, + { .name = IOV("ydjnytY"), .value = IOV("pIyVQDSYHTimidauzdTioNCzPuZWnmFhAiFcPGtbglxmaztsYcgHP"), }, + { .name = IOV("MXuHPpaJDMbV"), .value = IOV("XubuUVCT"), }, + { .name = IOV("OyrkMZ"), .value = IOV("MlFjgWzeeaDbEAEcuxJxQFzfqqLkAwDQQIjpwT"), }, + { .name = IOV("AD"), .value = IOV("losAnxOHzngcSokYAZXrKYugvTMADyRuRKdBwtFrbYHDqj"), }, + { .name = IOV("itf"), .value = IOV("YSIRVKBszVMXPdinFMRgaFxe"), }, + { .name = IOV("jPWfEInGbx"), .value = IOV("puualBJMzmAQXkQmVbOwtPRQiULrmhJ"), }, + { .name = IOV("U"), .value = IOV("awRUmuMpBfOVmFxKIySepyFmPZVxqPe"), }, + { .name = IOV("jALNzNCqVgNuaYu"), .value = IOV("usLPhMmRxUQaUoHqhLZHfDzsuvxudYUwyeOFoYkPB"), }, + { .name = IOV("XVU"), .value = IOV("VAoSHEptFKTTp"), }, + { .name = IOV("EAvHpnf"), .value = IOV("gBeKlnMDnUsUQDtICLdHLFLslEgFYQCQRkWrjavvcdOVMRoDKYRHWvMlGLHzfDKzbHHemqoNhwMIsjkQ"), }, + { .name = IOV("gWKwJo"), .value = IOV("wj"), }, + { .name = IOV("DfpMlwqTXxAFGdQGI"), .value = IOV("hXkIgNyKzpAWFMOoPYjamNWQmV"), }, + { .name = IOV("O"), .value = IOV("sVrssjhcgikIbPaTXvdusCVHXWvKVcSUlDOEdCWhnIvEXndCWsEkJETeThbBEcHOcvWzqYeK"), }, + { .name = IOV("FTQVJpnWVXO"), .value = IOV("TDnjQtfXysPuQflfPuooPslQyHM"), }, + { .name = IOV("SWQnjTfCJtmbyNsdvP"), .value = IOV("DQkntMPMBuPnlhOZoxkTtfXhDB"), }, + { .name = IOV("qNBrU"), .value = IOV("jkuynTQtfgwDrdROeBOsXCqATLyVGQVdqfHixzuxyMpZGtalVIFhxWE"), }, + { .name = IOV("NBm"), .value = IOV("BNBuetWezTHRslnHwktEIjgVHPZMWHsnPZAXOIiLcJdiIFQOBzmfRqsfIqZzhSnzNtf"), }, + { .name = IOV("CjjjugRkSWS"), .value = IOV("UxQngRBfYMroNkTREQwMkOhJBxdufcoAsrDZdY"), }, + { .name = IOV("UkyETnRKv"), .value = IOV("jLwzWHdXFwylaaKFGKIbLdqoOSWnknoNNTxGDlWCcRdRDFB"), }, + { .name = IOV("FyvfGQmQFSOKxgeW"), .value = IOV("mJt"), }, + { .name = IOV("VgSkrElcuBUzuz"), .value = IOV("UUneDnMdFsVOATmzNzwWdxGAOeMJzVLnofqxVKiZsjtpdSiDleLVgFeuXZgtIAcPU"), }, + { .name = IOV("wEoYhlUCLcihFokopb"), .value = IOV("nEqkmWIuISSVZxcrkXlBNjrUBRhkaA"), }, + { .name = IOV("HdmyNwLNmHWxQH"), .value = IOV("ELRqCwRwMTcfYjBYhgPrhfetCFvAydYozQCGnODHcZCWuuKIzWGnXRe"), }, + { .name = IOV("TEtGEABVtrCKxgEyBNnh"), .value = IOV("ONZXqUocKGErE"), }, + { .name = IOV("fSgMR"), .value = IOV("hZhHZcFfNwuNXFKgHczHmKyQoNDDbsmbBlcEACrZnWyLYxFKAiZPC"), }, + { .name = IOV("mrQPlLjWuuXWO"), .value = IOV("WhnxreyXZthZnDQcDHTjJdWPHilloWbzEWXMeqihX"), }, + { .name = IOV("EfGY"), .value = IOV("WmDMjsvjRjPORHuZZZibVHgKsljJCGopbcUSXxjXusjQfEWGLjEQXZRmGcpXYSFqSnTiqY"), }, + { .name = IOV("UQoTwJ"), .value = IOV("FlieSOkTFZGgdFURoSuzkywcDKCjmrAheyTyYFfxR"), }, + { .name = IOV("UZLHNWQokx"), .value = IOV("QUXaKQvwCFjhhsYHheaOdFdMzEvyBTvojVKjME"), }, + { .name = IOV("pGIkwaHHRRl"), .value = IOV("BXGNKylwqrRktRxmGbowOqJaeNSIkjNLohx"), }, + { .name = IOV("hLKCSCIeYzquvEUNRx"), .value = IOV("qXFwzsFTjTYrjHZTFapgAVXiauxrMSuYPxEujpp"), }, + { .name = IOV("DPeDtKrzpDojAV"), .value = IOV("dKjkWwmAtwWDvnGGAMvXnXEVsTNzLCMYwbvmOxWGX"), }, + { .name = IOV("fGCOsmbxgJwMgWXkE"), .value = IOV("z"), }, + { .name = IOV("MB"), .value = IOV("ZFCvpfkhxcT"), }, + { .name = IOV("mAanKPJg"), .value = IOV("fjjOVkLUwDOjQLGnUFVbjvPYVdqNbjNiTSrOggsTyVpmzPnPuzaldSnMqmAMI"), }, + { .name = IOV("xKXaaTzs"), .value = IOV("TmzZ"), }, + { .name = IOV("CaNrWH"), .value = IOV("xocTrXHsP"), }, + { .name = IOV("fzZJRDulUdnMeApv"), .value = IOV("NcJZdpxCaxxYbYypHbFABXMNVgcPwdERlncXAKZeFZVJndZGsSw"), }, + { .name = IOV("z"), .value = IOV("esJTdVTTxtRMejaRCXFBddRDvdOkuJnCkCU"), }, + { .name = IOV("wLGqXdGDBKU"), .value = IOV("fHhHFsoFtYyygnAhDtDvkghaIdclDsVvRFZdlpXIqlUFlqVhM"), }, + { .name = IOV("ubgETfkwAikOI"), .value = IOV("zrIGYKinVCMDovHPpPKOOgtOIdOSwUBsFnGauvWA"), }, + { .name = IOV("fHhgKXbokRBsasTbcS"), .value = IOV("UAyDpowtIsGzaaTSseLJQeTOgOSjizIChIDdNWUKOUeCEFddGJkxDULzxRBqhrIBdHIGwj"), }, + { .name = IOV("NuazVDusqKjLczcFsKEB"), .value = IOV("buuFnSuTUee"), }, + { .name = IOV("YDFCuPVtOkkFNktvX"), .value = IOV("WbYarnTmJhpLJYTzmFonltZOOuTUhVoOEVLAAMPUXTKlztdTfwWWi"), }, + { .name = IOV("VcUrgFhVHgpW"), .value = IOV("UWTnFSUOfoZxscWcsKMROmUSYdhypvSYnKAJLToCCLiMtK"), }, + { .name = IOV("jllZiYClD"), .value = IOV("tsZAipwMeMdWnpwdfPsonhIW"), }, + { .name = IOV("WSzzsOdZJaOk"), .value = IOV("QVoNCnXLpdpnqCPDzfbvMgThOxupkfO"), }, + { .name = IOV("KjwzbOjYUjkDdJ"), .value = IOV("HsSAZgjWnMoimuHNwGcOAOhKey"), }, + { .name = IOV("ZKNyOELKacrpouR"), .value = IOV("ePYBTNKPIJHgqzZSJorlTXQUFfzmdVWsdONGQUKtZdLKswA"), }, + { .name = IOV("YPXfrfwGoqKHrBzXuVnv"), .value = IOV("jXRJIAZwuZQOzxqvodhusfFoXnZjYGZzJVEgmmmWiwEBvvldHEyZryvFEdmdQMjFIh"), }, + { .name = IOV("mdobKydzoN"), .value = IOV("EpxEMVVXPZhvMQeZGZwDFpZBxLEKxeSuxUjqMCIDTUTeAiFgbmexCCVIkttDDZJcSIYLFhtezY"), }, + { .name = IOV("r"), .value = IOV("TfCKpDMhhmdkTCldEUjwCPsSGgGgmmJeLbZTnLhOMDLnysHiftZLJuoQEFkVXa"), }, + { .name = IOV("zSEtsIFqVVUAqtRVYqp"), .value = IOV("gZjKttaInDghptkbWNXAvbMDBzLsrYUBSOawSkioBvpBenkfNFnkFBpi"), }, + { .name = IOV("iPitBzhWIYtqwdqy"), .value = IOV("xvmGHtNXUnCseGSHXOddfuKbEOqyJBXMwjEpGigKHokeEVmXlJQJaJzZdWkebirWpHsLNHxHCeo"), }, + { .name = IOV("OFdCaTyVVvSGTQWLEiBY"), .value = IOV("TLcZxq"), }, + { .name = IOV("FsELbOEMyQz"), .value = IOV("sEIWfLDx"), }, + { .name = IOV("CpFooTViqTguwPTc"), .value = IOV("upUMopod"), }, + { .name = IOV("JJjGJeSjmwyRIpBtst"), .value = IOV("hUx"), }, + { .name = IOV("ZNUIekpRmOXKA"), .value = IOV("cQcAjZSGyvHIBBqhFwoFouvtuOjLUFOihjjMGrtdIFlGlQuQGwKpwbeWIkxXimdsnBAz"), }, + { .name = IOV("y"), .value = IOV("BqTQplWVpPghUpkTtlxndazmL"), }, + { .name = IOV("GZTNexs"), .value = IOV("qnnCnaMRIXjwjdhYkUJveWIkhoXUgHgwVHClPeQcSkKvOSWiRPMtfrB"), }, + { .name = IOV("kQRRVFfcAbvlqhiajsK"), .value = IOV("XfzmfGXVIGQgm"), }, + { .name = IOV("ULOaTbUwATrJXF"), .value = IOV("YxNOAgeapbrKjybwUMomUOwUvHBX"), }, + { .name = IOV("qUeEuBKsFssNVpGiNc"), .value = IOV("waLQprUwkWxCBZsspaqVGpAKASWYCWtmmQeTVVkBalVauvTaCPexfkFUC"), }, + { .name = IOV("OjyPTJKQ"), .value = IOV("cWyuIdoMeaMOwP"), }, + { .name = IOV("iyUgTgqHeG"), .value = IOV("ZWquKGbgZmI"), }, + { .name = IOV("TrY"), .value = IOV("aXcmzmntgMr"), }, + { .name = IOV("WngLvF"), .value = IOV("UqUHkSEKmlprZUeMtialTSzyGrEgTRGwjZ"), }, + { .name = IOV("MzfDQUgpD"), .value = IOV("NWQquWNAJuzkfnjRhnCfQNpvmRfoHMtgMzyhUppKYaAsGTK"), }, + { .name = IOV("qYEQ"), .value = IOV("bDRqdYeCnoLsFvuqPoegPWQ"), }, + { .name = IOV("CCxBDGwpqAfXCtBRMp"), .value = IOV("uIaDFYYtJjtcRkSlOhEtInYFHBjRZwnAexNQvm"), }, + { .name = IOV("EBZWl"), .value = IOV("UxUrsuLlOfDnzCvYrHSKneKXYCRdbruZNioBVleBzMQuuwdSmROtjxdAVgdQeSDHRPJpxiKJrN"), }, + { .name = IOV("zztGb"), .value = IOV("DPqDeWCQvGYVxVkrfaOXkgiqdzKcBryZrFtJJGLuygZHfQdSqWEZrlMQXCtsPRnbew"), }, + { .name = IOV("QOdwRoGwygDGMDEdQnO"), .value = IOV("AZOLkIxebrcbWBPwloKOnrlroRhzNHOaKlitZxRLsW"), }, + { .name = IOV("OsZUlW"), .value = IOV("UpJnYvXAiHSXnMhcoGqEwsApdhwDgxZBjPkbmdTNQTzGGmylvTpPVZOqcppgWQuRfpKntGdzFvhcO"), }, + { .name = IOV("zqZiUMioENZLAMrXh"), .value = IOV("KfzRcJTSoUEZJafAepPvCBNygwVujfElilovlypHkzPuFwgvOnyNJBbBSRmpggEaxiTVzJnlJcTGVLP"), }, + { .name = IOV("QzwDYTBaN"), .value = IOV("vTvNJbosRc"), }, + { .name = IOV("SBarLxblW"), .value = IOV("sWDeHiUPbvertgjIsdSOJvqlDqvTCUMe"), }, + { .name = IOV("Dga"), .value = IOV("iZpApgFGyeUvnCKsuqDgidfJDZhfJPlDDHHeQnIkkvxqCTQIjoTMel"), }, + { .name = IOV("Ab"), .value = IOV("bpBxCcPtGKKKRjNvgYybEOFbHbDGW"), }, + { .name = IOV("IpKbSbte"), .value = IOV("QATWJLaSGeRfumMtPptqzILgIPxBctnHtXiuaJYRjynSPqXCPQNOkMeIPtMJlrrbg"), }, + { .name = IOV("HXHQvivLy"), .value = IOV("QVzTbNdSjpmOXwdAJVniyiHHqUWohkxqYQHPwLziQHOLYLUcLLgIjZpCeqLZSSaxWsafxkz"), }, + { .name = IOV("sCRBR"), .value = IOV("MnWqjSczCGhDyQZLqvFohyvEPslFPa"), }, + { .name = IOV("LwFOPcZaRXFJwNiH"), .value = IOV("CEofICRYX"), }, + { .name = IOV("mIHXdzW"), .value = IOV("rcvwJooAgGAGbZAlGLNUpWTRdVJPSoHwSKlqMxCZZqZrCpUkMqtBlUgYGczMpUAz"), }, + { .name = IOV("Acwf"), .value = IOV("TSdzYcqZZueHHtvRWWoVyTnysHIcLeODenxkRJ"), }, + { .name = IOV("rIwG"), .value = IOV("bknufjvvMbkCcJLQxYweKinbuqQNN"), }, + { .name = IOV("fQySnMSJecXa"), .value = IOV("ujGnNTmPwgtQUdUMnrRMmjQMeGqzLXucJCVLqksTsILfNPOdoRerRC"), }, + { .name = IOV("HFlUoX"), .value = IOV("nXoddbzIMxyceMNWHMIbTMqSouyCGpvTxxPgLXJttaXvLV"), }, + { .name = IOV("lQVxKvN"), .value = IOV("PlTPuIwkoETxwkGeSXYDVriEIyOQgmOzVUcWIfpGaGUGhnkHoyFQVCXdsxibERLNcJgZcK"), }, + { .name = IOV("UsPOD"), .value = IOV("BLxDfpfGVbuvHlq"), }, + { .name = IOV("q"), .value = IOV("TqqPaHtXiyzSXiftZeYChtzPlJiOKHTiEyyEteZalWdEKgNIEiUlxuakAEgiehTeXVYHRriVAd"), }, + { .name = IOV("HiucL"), .value = IOV("tZHVkwUPSfwXwUtjbXKDBGBhwdRtXZDNuAUHuoKTtNBByVtinurXnHGoEwbYQaYsTsSKq"), }, + { .name = IOV("pHu"), .value = IOV("QYtuLblPzzeTuptqVZagGlKQHpNbfGwPBcB"), }, + { .name = IOV("pUhrmttcSynPa"), .value = IOV("nqfLveGLQpsnVeCOcDCZMVlBwcGdRHoBSEDRTSVQLMqXbHkKqFGyNKjjb"), }, + { .name = IOV("nCHRD"), .value = IOV("bPMPjTxjKBKkrhtaQEImGAtVXHnfxlgDYlFlUyzQdJvejOynRYTmOQ"), }, + { .name = IOV("oJ"), .value = IOV("OokRqcdlVUmYPMaTkXmwScSmcyzyPqzR"), }, + { .name = IOV("hhkyK"), .value = IOV("DqabpeOTZYLqeioBkISUbIosxYRHnrTqXhfm"), }, + { .name = IOV("vdcgW"), .value = IOV("NiaptRRwgghIFZvefsUPjjd"), }, + { .name = IOV("aaZuQxyW"), .value = IOV("mBJlYuXkrcgxiUJBzHVmymUsy"), }, + { .name = IOV("gNnXozuSfrGFmZFsTMo"), .value = IOV("KUUEXLxvTXJiMpQSPGCNvjDtrrsioKupkPFIqSmBfIaPtdqrg"), }, + { .name = IOV("uoYHOiGaOEBZkLcpmcpu"), .value = IOV("euvErNcUNcxPaxBnehlysJv"), }, + { .name = IOV("G"), .value = IOV("JKFyNLpczAcZIyDdStLKfuu"), }, + { .name = IOV("VTXtvF"), .value = IOV("AJjleoYTAtfJTJiyLsIBVLhujZ"), }, + { .name = IOV("CHIOriNa"), .value = IOV("rHJxXlf"), }, + { .name = IOV("IxyrNRlidIcCnSjr"), .value = IOV("TfUTxrvuDyXbiUwXHfzfXaaGAgmzcVfwUEtExCxXWQtHoHGoDuXjTERlqhmKcpLZCx"), }, + { .name = IOV("S"), .value = IOV("JChQjzNsxZdfhjfGPoRZewnIYIwgGnoSfxkIAiuttnloWFtopaKUGJFZihZHpeZCUPvbruCIIbX"), }, + { .name = IOV("OmJWjd"), .value = IOV("XATUCTkKbzCkTfPRJXbjYHo"), }, + { .name = IOV("XqCVyfWAy"), .value = IOV("kBuocMWscSkYFlmtrCaVgIn"), }, + { .name = IOV("bXE"), .value = IOV("QwyiNqPPYiArMsBRTNbtZcbguxWNeALPjXFDFBkUlWVW"), }, + { .name = IOV("riQ"), .value = IOV("ZHmfQTjwAOalCCHNdQfoJcEqBABAFVeBC"), }, + { .name = IOV("JMZZKIZyfcYPf"), .value = IOV("iYxVoIKAGgKXkEgWhSldeZCJnDHMmSxXQyWAhYOOBSGMCfAUmhjLKe"), }, + { .name = IOV("DxxbOZGPeuIYW"), .value = IOV("zUHFRYxIiyRdwOdNhTABKHkaSNunzpuaUSO"), }, + { .name = IOV("NMIgmLrmP"), .value = IOV("UiKuIsIsGxamIFGuZAeDvbWazkDmzlKOunrOOArFZADevQhHlaLKuNWeO"), }, + { .name = IOV("DNdUnbDlKEIDbFo"), .value = IOV("qMCiItJkjvkoZQiOAYfzLVeCcQDTGqr"), }, + { .name = IOV("adrNlibiAxnUESp"), .value = IOV("kdBXeHPrYsPLrbFMJXFsjWvjCECdHVhJgTAWGxySZXVVVjWQGdLLPrhReIMlzgKSKSnCLrVG"), }, + { .name = IOV("WDgeGxWsJS"), .value = IOV("mxKHfOkRqBoz"), }, + { .name = IOV("GHhcZSTmod"), .value = IOV("kZWjIJcUjRYn"), }, + { .name = IOV("JTsJcL"), .value = IOV("PjfAR"), }, + { .name = IOV("ETIEIkayuYfOxpXYVl"), .value = IOV("LksbeBsmLxTvfnQCQTCRTdMEtecXTIBoHenuYgAGjFNU"), }, + { .name = IOV("ORtsJjQMrOxS"), .value = IOV("sx"), }, + { .name = IOV("YjNrEALgCGldwXbnmtdD"), .value = IOV("kwzmCwoMfeUeQIgkbAgyNcWyjCJJRsXoBLXNEUsT"), }, + { .name = IOV("KIkiNWPGrTgHbWubd"), .value = IOV("aESgKTdCfGJSrtCXNkudcWKOSSCOunBDhpfUuLkbaTcqccprwsflFYYHTbzRHUej"), }, + { .name = IOV("vzAGKA"), .value = IOV("daAVFENdZJAbYdisHeoUygOGEW"), }, + { .name = IOV("KSUFGEcyucKNfOfLFt"), .value = IOV("PGtqrkDwJjHoHgzCZAxau"), }, + { .name = IOV("ddhpCcmxRXDmhvYxT"), .value = IOV("UBCZqSkBkmnkWaAoJrlUXCjwfkTGoCeespQgEynJbJZVOXejJSTbnoiNEmTEKvHd"), }, + { .name = IOV("PYayomqWgXtMDay"), .value = IOV("hTVXBnUZfDZwoUpcOfgpeviLzBMlBmfKWEeZcoSkpHVqCNAvdxzCCuRWFvToZHnykkPWouit"), }, + { .name = IOV("R"), .value = IOV("C"), }, + { .name = IOV("ODPtqT"), .value = IOV("mWIhDVmzyAKDKYAtgccJfJCYjjovjAykWTZudLSNIjSk"), }, + { .name = IOV("DDyXSP"), .value = IOV("fSmF"), }, + { .name = IOV("AvMSHuUDdk"), .value = IOV("GnsmOOQBMIsOnDXmVPpkwuXYxt"), }, + { .name = IOV("ZccYaaljGTMI"), .value = IOV("CXJWDCRDyjtSTtqMEIDuUDuJKsJNSYKFYYyXfTSiNh"), }, + { .name = IOV("KMlPNWOtXJcywFsJpCGH"), .value = IOV("ZxQqKMghmNuXLZwODjTvxRcsGvtTuMKGVNsyonXNsonyetEXyDwmwBcXgCFKGFPFAASoNWyQFLrvP"), }, + { .name = IOV("llXLV"), .value = IOV("RXiuJYftnopEdzovDPSKBtUpRxuaALo"), }, + { .name = IOV("lJYIjGWYuiAL"), .value = IOV("kcTSDOzrxvwnKjeuJRtrUokJdAv"), }, + { .name = IOV("loRIInAkrxFPWIiF"), .value = IOV("ixGwYKSuXJtVHzKgIhMRFpUEiTrMCLwNLPTBiHwEtkeQJsi"), }, + { .name = IOV("dtuGfiPneoSEfrLe"), .value = IOV("uYrIHUfoFMurlIOOBrbpJAgTUEfeNcPutWIFBocXfDXbOsRzeVkTfbXXmHMTjWQLvZSaACsSpaNEx"), }, + { .name = IOV("yJ"), .value = IOV("tpzdltSlsBRnKNaZucdMvCzuFVpIVtlApmNcvCE"), }, + { .name = IOV("UWHvohOs"), .value = IOV("BnSaeizYmSPHYhFpLwOORlnzoqSvfXRIzMXKi"), }, + { .name = IOV("FVX"), .value = IOV("epYjjGDLvXOWrHxpOUujQtNJCGiMvgXBuVuexhXGYPMjkldpeHRDcqXJhAxHRaALQptAxsMP"), }, + { .name = IOV("rwcgcGWlXR"), .value = IOV("ECJoGjTqqYcEkVtYdFyEuLLi"), }, + { .name = IOV("uyFxRPfKc"), .value = IOV("BomCCYPmuwSrkoAMAMiBsBRMzvnpnPqsGHCydqJWJKXkOGvbTxWKiltoEETyhlVVFeWqCbmFXD"), }, + { .name = IOV("ZGibYEGZpiYwBywECYkk"), .value = IOV("ffzdlyRYjRQxRLWvoDdmuxgdEAJxLp"), }, + { .name = IOV("kooUnzOkRwabEZmXnqHx"), .value = IOV("bjFmVMAdjQeH"), }, + { .name = IOV("JPNeEj"), .value = IOV("MabKixgsoFOMdUiE"), }, + { .name = IOV("kTNS"), .value = IOV("lkeQ"), }, + { .name = IOV("itsoBDekjlxmYhNOrA"), .value = IOV("tpTOKbCYMaFRieFoatUICFacCSQRCrIAQCIqDF"), }, + { .name = IOV("gTq"), .value = IOV("EAjHEQruUWQhPHafRiouDDOIU"), }, + { .name = IOV("CRLNmSOuQOIBeODgPx"), .value = IOV("UHlSSJhhVkMrdSvDdgomeyFlHgLYNPVWjMjjYphOulFknaSM"), }, + { .name = IOV("szgamcxn"), .value = IOV("PTHehtwSAWDmIriiYKWcROHeYqvBZvXTeBDdrsNNBcLZgTATEbafZvfxwiCkkCLKdcfXh"), }, + { .name = IOV("cNEEHuzSFlE"), .value = IOV("fRUu"), }, + { .name = IOV("BE"), .value = IOV("ybQfHITjGhZfwKXDguzMQJFxwZZEePYw"), }, + { .name = IOV("JqEEfzDTfan"), .value = IOV("zYsJuJkOHsUFCQwRKdKRhruXkhDiGbFQzDxfNfvAeKfncc"), }, + { .name = IOV("vvmkJDQBDrbTXlhGzVS"), .value = IOV("MTuaqVrPMHFZKCJcwSwSfMJxukbaEtUPddkrnvcqigJlRCrvnYiXqOydjKOtwrwefuBgTDwtWLcg"), }, + { .name = IOV("LPyoqrsmpwMLoToqmV"), .value = IOV("wTaQTtuvAaVLRNOvWPdxX"), }, + { .name = IOV("NqWwBweUZhNeKD"), .value = IOV("qNEEynM"), }, + { .name = IOV("rwFGzPgVx"), .value = IOV("BrKkUmDlBqsSScPGpBhOUvWYnxUksi"), }, + { .name = IOV("stN"), .value = IOV("PnhUXnpSjdhRYznc"), }, + { .name = IOV("Thrgy"), .value = IOV("bT"), }, + { .name = IOV("QbsLTffVDLpI"), .value = IOV("GogpGLpyFkmosnSzTfVUHqSEQrNczxqcHyycwsKfNLT"), }, + { .name = IOV("gSoUoRdUv"), .value = IOV("qSjeipaVqvpGiunSoooVBzmkw"), }, + { .name = IOV("BE"), .value = IOV("keEVxQtQuUMMwqIYVVdfAL"), }, + { .name = IOV("QhepTqbjHfR"), .value = IOV("gsRoYOmIkgmMZNXLTquPiLpfoKAiurwlafsyXTufKJNzwkNEQegOMaQbsUVaKL"), }, + { .name = IOV("EYQrCbQfkGMYNrKpiwh"), .value = IOV("sTOKCPzsQyfQkQRXbUZQySbkNdfxBrLACJKQeKlNLdObEHrxeeqvyFfMyRFiGAlOBGCnuGYzCXvV"), }, + { .name = IOV("dlduiW"), .value = IOV("xqViMWJfHfipUTuRGFJIOcilWDWsDpZRnxsuDZRWYDIJMLWQWlPxwVkzhlvDucGm"), }, + { .name = IOV("sHRVqxffBNU"), .value = IOV("PzQ"), }, + { .name = IOV("cGCiUJMEpEidoC"), .value = IOV("CwpVFXGglJR"), }, + { .name = IOV("qkXmETKjNwkOlcPTLcY"), .value = IOV("xnFErP"), }, + { .name = IOV("UWtXdh"), .value = IOV("PisyhGhFZrZFGafmkeDfLEUiMazwZZUYERYmFZqRANpjnobPTnjwbzGGOVMTMlcgiuLAwHCBU"), }, + { .name = IOV("jsajNTcHprhaMb"), .value = IOV("jdzSIFIeyfwFbtiRfRwvgWfDHJjnvCwYKayIHzZySRNDQdukENTm"), }, + { .name = IOV("aaijNdn"), .value = IOV("kOSKxKkrGSAdoJvqFCLgJgYOiLoSiHDfZZxdXlQaiPOOXwAcaHGGPLDsMu"), }, + { .name = IOV("fgxukPAGQtDuKYN"), .value = IOV("MdBGnGUswTsXNrrKLGZBzNbXCqxxNwzOHiRDGGOmxkZJnz"), }, + { .name = IOV("EwfCS"), .value = IOV("jEbQGYwZwdyvMvkFDNpuKGuNzG"), }, + { .name = IOV("EoUrKF"), .value = IOV("eRZGAxQjzEgXZrluXAknFXdLTvhSRcZg"), }, + { .name = IOV("zOsYb"), .value = IOV("GOYhddasjXARutPccvWZyLieKJteKgrZFirhpFJMMhZTIjPABwrlJEjMRbMqiJgsVtJRUWToNyZuc"), }, + { .name = IOV("UMqWAKRwkggnjXmePbBj"), .value = IOV("vgOqorNdBrjRRiXafZpTukVxMNlHjjTVBLsDOXRCyaQGIQJBXWsbnGXvRRDcRlknEHESf"), }, + { .name = IOV("njsRgKVlflwyuTtMLGit"), .value = IOV("PMAqZPSeLzHlyOixBsPVIcGKUypSUnoNyU"), }, + { .name = IOV("hEMsTRQYmzDEAWY"), .value = IOV("elQtKSonQyhJsXxDYwUnIUEYEZF"), }, + { .name = IOV("YjtACvVIY"), .value = IOV("ukPFAaOfcvFFFQogRZjJLZduGMcSiyRRsP"), }, + { .name = IOV("KzQ"), .value = IOV("NaTynabluquxScQmVGpEsNQQw"), }, + { .name = IOV("ujCvGgIpxHvWwa"), .value = IOV("VgIBfooZmvVTPNDjn"), }, + { .name = IOV("UyTFFEkf"), .value = IOV("QHlCyPZedvrRIPKWosRjbNkIcTunfUCtRUdWwnvhyyBiIjWUejJkaDHiQaVQvwhqAn"), }, + { .name = IOV("EfdRcWFeSbBXLRL"), .value = IOV("bSfvNVnHNxmMLSRSxIIKXAYmqGwVMdCCFfyDuA"), }, + { .name = IOV("e"), .value = IOV("xFjEjnFtjBVHZMtMLJniLd"), }, + { .name = IOV("nAarqMbJXBxG"), .value = IOV("kYuQIQaIckIVQA"), }, + { .name = IOV("qbqC"), .value = IOV("voCfGJkhMXJzsbAeuhWZqYAAJnT"), }, + { .name = IOV("yflZOcQETsUGdai"), .value = IOV("roseFhkhcAoacLjvEVsiTmdLxQcHqBwZYzzVqKVWErbudNdyRwkpJCFeXnqqQVC"), }, + { .name = IOV("BsIBIUMxFAaxGaEA"), .value = IOV("sOOyutpKMIhhVnXqJTZlAIxCLEtjkQQvdNVAuetTpKlBLpeAbEQwiLNUqUtcKtAtlLRDYxEDXrwWlU"), }, + { .name = IOV("LI"), .value = IOV("RrWKdzjejDAWrhkHci"), }, + { .name = IOV("BOkPFb"), .value = IOV("yeGZIHpxHKgKKkHOrcAueipxNspWvThwTlVsVUnGOyKPgExAEknDEfJZaulVmkTGKiiYqKuuYX"), }, + { .name = IOV("tbIAcqmTKN"), .value = IOV("ag"), }, + { .name = IOV("EURSwSgFddkupWnCKMN"), .value = IOV("veTKBvaropuqRQwmLMTUjgajPeyTJlodCbDWcLYCbEuXpUBuqfIuGXj"), }, + { .name = IOV("KrTmmGNFTeXupRNWRI"), .value = IOV("QXgSuBvShFqZOAyqdpkXvDVotDCxJPqhXvZXABWufUvirVuQUyUdnBpulGDbkGSKwwG"), }, + { .name = IOV("LeKbdLfROBlKVn"), .value = IOV("xeNXZbjATTUEXcMiye"), }, + { .name = IOV("c"), .value = IOV("NtYHzUsdP"), }, + { .name = IOV("CdOLxlsyOvWRvaW"), .value = IOV("SiQZyDLrTPJecDbclrejBgYHhRVclSndUmTihwgEZZZ"), }, + { .name = IOV("JfAqpa"), .value = IOV("rJeSkWDVaXYiffMwCRGzkjfJLPKtylMqcnGneXKmeutubyUarSWRwqmUOd"), }, + { .name = IOV("LhrMWCoKR"), .value = IOV("BrOwRHwZoeisgxnTFihzbRnCditOLFEfzwQpB"), }, + { .name = IOV("ajHbhKwgcdrLMYdTKiRG"), .value = IOV("LszaFWbEkQGIKcYYFwEExJZoB"), }, + { .name = IOV("SCYp"), .value = IOV("JovmkeWFikJsvCzzWpoFRXKxxv"), }, + { .name = IOV("tfKFWjViJECmIeonBop"), .value = IOV("bYuEuJLGFBuOhLtDqNscXlQSTPxXFwLFOCchpNyrLfOtrMsnaqniCFNqqFfmxBNPXVKihalSmdAK"), }, + { .name = IOV("DhpPGaPZrhANXpX"), .value = IOV("tUoWlHXpdurgmDXNDhWaAKSGoxXwUvswZJZWWDGtKzFXFLFOQv"), }, + { .name = IOV("C"), .value = IOV("ycdUatpAsEnNTOxKqCniWbLbwmBEkaAmPpBJkjmYrZCAErgGGKyIGSsAgGLvwqunpsomWiFaIN"), }, + { .name = IOV("YnmilMYKNU"), .value = IOV("XnAxLmBMRxlCY"), }, + { .name = IOV("zyvFFF"), .value = IOV("CYCNkLgyFeGKXqsdeeaLjeJpzybPfozFUGkcOUWPPEO"), }, + { .name = IOV("fEmwABMKj"), .value = IOV("LavsYYyYwkpvrdfUCkxJphBDZlbIZeVfVKNguNfbOBchoniMnuHJDQJLJlGGjpYRIiRssVMa"), }, + { .name = IOV("RVqRIIJF"), .value = IOV("cTsrfGTvcAIEycQywKMSGKjzMIrWvVTFjRR"), }, + { .name = IOV("lAFhmFryVOGHJDqfidR"), .value = IOV("u"), }, + { .name = IOV("XjsKsZsrkKwgc"), .value = IOV("fzEhgiXUozlW"), }, + { .name = IOV("RHCxJZevyRlDfl"), .value = IOV("jwqeLEBYXFfPobhLeZtEeAVpjVaGSPYWXrFfWFzOUTWLBdrLfVjOquFR"), }, + { .name = IOV("duHyZzNQTiplLwdM"), .value = IOV("KgTNpmlOZTMOQXTQcnzTLqBtiXWb"), }, + { .name = IOV("cAXBuaXzea"), .value = IOV("HygLmbAEgkYTRKmwXBgznjghqaTvVMQsoKYbgxXpEdODpqYZcpynCyVsywMaFQbKFqzfxrUFNSiQElY"), }, + { .name = IOV("MXsii"), .value = IOV("ZshkUxYoUezJHYlFFNbxxLOQNOGxjBifYRlVhnUMKDNAXOnZaysMBfKmrEOa"), }, + { .name = IOV("jytvapKmjYBlgrt"), .value = IOV("pelMEhipPKJAKsTLCufijyeZcshBWDMMgojYorDgTH"), }, + { .name = IOV("SXurJYcf"), .value = IOV("dJxIiTSjvDxy"), }, + { .name = IOV("qAYaCzVAdGvXPJvdA"), .value = IOV("AdvZZFrolYcePzETxJldmfoGpDUhFgsWclCzpocgABZPeOkAfmiJrjnVcRStPPiQTJboUiuKGoPAZZ"), }, + { .name = IOV("GNTVhDQFNDEqMC"), .value = IOV("ZuRxvjdTSLsMxezFzHLkZjfgCOldXPoxKcacZiwrIrTwmmJbJznbhbfdPUF"), }, + { .name = IOV("HMhjIlaGJBC"), .value = IOV("gVVOu"), }, + { .name = IOV("KjI"), .value = IOV("RXySiGKVABBTHQDQYvWBDLHTGVjLtDitiTFXMOyKDGFKoTXJwWwvGtqvozgj"), }, + { .name = IOV("dPIOaWxPmzGm"), .value = IOV("wOBaNTIjUpVNoqOtAFOaEVLcEFxUmPEIclNcwiXxGcqvFBfGU"), }, + { .name = IOV("riScvKpdwzjBAFXVaV"), .value = IOV("PCQejwPdUobncakCWUCBqlDIJQjqLFhwZsEsO"), }, + { .name = IOV("nHFZTRbe"), .value = IOV("VZquKjisHXsNJyCfZUVhUAyyKelmTsf"), }, + { .name = IOV("PmLyULgpbMapw"), .value = IOV("QXoLFgoSAKqZRFHiJbGyGTVUhvQdOIczFClvaVfvVoNgiFMJNWJatBTkxrksGYUsOLVwxIUtHJrFfs"), }, + { .name = IOV("wzeUxDUbdrEyAyYY"), .value = IOV("KEscMyqjJvHwRaUhrNjRFiLRrnvSeWsJpUpQfgipCZKEKLSCatAB"), }, + { .name = IOV("bLkgGngJ"), .value = IOV("fKYBgDvWPasYYFTeegcGHyMVJiCYMKhYVsXSTzoptKLtRCVWsBoJGZaybobBJxfSiCBrZQR"), }, + { .name = IOV("QpfXxb"), .value = IOV("UcTEnoiqkRsvTSsoWAbFYBEmOltrHWqmh"), }, + { .name = IOV("SxketSxX"), .value = IOV("sVLheNTXkhbVKYOuJRituTamIdNRWXpeOZHoXeXgmYJAvhmDNVNbSeWKUXDZrzOjKjt"), }, + { .name = IOV("LjHusoGaOXVfLG"), .value = IOV("ZhavOjXdOTfvdBLKTfkljZxBgVopWYbRls"), }, + { .name = IOV("erWFHpRzMXhKnXmMJ"), .value = IOV("oNdjdJVxleYVpla"), }, + { .name = IOV("m"), .value = IOV("BIaCWfpJkFnNbEyMNaIeFYAsQvJSpCgrUqu"), }, + { .name = IOV("AoeYMgSDJpZSiujOYKq"), .value = IOV("ZZRcdjAXeUYhIpCWVyDtJrqXraxrJwAIbPxoazZjfDEc"), }, + { .name = IOV("p"), .value = IOV("ucIinbrLkhKiTU"), }, + { .name = IOV("vqBdIVKgs"), .value = IOV("QYxdiySqCGnHhlXoEiwSQeewxmtBiBjIJskIattP"), }, + { .name = IOV("KIafKcIVLgsom"), .value = IOV("WCZnUJAHIKuTtVXtjrppdugNFCHSRFTSqRzVbLnHBJx"), }, + { .name = IOV("UevAhtCvvnsQXIvj"), .value = IOV("NWZbtOvQsrjdLFrTzxJnMaqoVOnoHjWGUdQPYIvsNftLcbXKHhJ"), }, + { .name = IOV("BKSShpWXxHviUlPh"), .value = IOV("uwpchobemIkluNRKYOFHzMktGfzPQvnwZjwZD"), }, + { .name = IOV("U"), .value = IOV("FRlEfVPpLHvDFiGcHnOuLYWG"), }, + { .name = IOV("ZvbzJNKPeTpniNJrL"), .value = IOV("YtbiCMyQiaVgvQekqFUylfubmsQDzpWcIQMTq"), }, + { .name = IOV("KwCqyXbyBEoxKnSycQx"), .value = IOV("dfN"), }, + { .name = IOV("J"), .value = IOV("eHDtDnyAciWsRMjpNuPdTssKFwHnOQWMElXDTXAYiJiaWVfScI"), }, + { .name = IOV("Nef"), .value = IOV("hlcbdDiZjDnKocpQGM"), }, + { .name = IOV("mLmMjEjIhDGddyHgQ"), .value = IOV("LQTyNPyaNuigyBfYzvSbXZqhkBT"), }, + { .name = IOV("ja"), .value = IOV("hknTakToJFRLnJdnnTnzyMBcPxCUPgQFGTVgoEEmCNcDTrMKlyPqdHT"), }, + { .name = IOV("ZGhAYCk"), .value = IOV("EgXbOeQtZbFrKbkCtKoetwKawFoFxsDvGkZQGIsBDKqfXtETX"), }, + { .name = IOV("PgwWXOKRdKeVC"), .value = IOV("rNopXVEwSEhxSfWkAqCNFcup"), }, + { .name = IOV("TmKyxEESRAalJZIWXLdG"), .value = IOV("JLLTZoWEVU"), }, + { .name = IOV("JAqFoGeuYBdFuAWFf"), .value = IOV("vSszrmcBxupFE"), }, + { .name = IOV("UaJTHLFaVqTPj"), .value = IOV("mcaVXm"), }, + { .name = IOV("tSMWvCGvel"), .value = IOV("FbjxfbDqjMHkdeSWrSsWtnjNTFSMGWkJdsJQHQgWfthIkXtrHHunQkoajtTgOEwhvCX"), }, + { .name = IOV("r"), .value = IOV("vQyakNrnNbdn"), }, + { .name = IOV("tBzjwhdeOUXNT"), .value = IOV("OXKyikanvolQudsZBfzNKGdDDdnRmXsJzEvgYHmsQWwWEzswRCmJBf"), }, + { .name = IOV("JkYRHpZnIqrSLgLaLj"), .value = IOV("sShFxfAAVhJej"), }, + { .name = IOV("QnggPgwMBgNkSezbLup"), .value = IOV("zLPZbijIJLtAtvkiYEQmeaGBdMYktwPpuvVCfB"), }, + { .name = IOV("OLgtTGX"), .value = IOV("MDaBNdgcweWRkILWQaciiLLmTifhPPeeZsRRvFoYfdLvjPhlGoJECH"), }, + { .name = IOV("ahoWdSXDgiaVvDX"), .value = IOV("JkRitLISZLUNvmlVApIqYUTtbVDzSIsYtaYVDliwJjMqVcFeivODMWnOSPUOKHAyNJFTGRMvpCZWkK"), }, + { .name = IOV("Sevt"), .value = IOV("rygUpSjDubzfBHRccoOlhDyhepuJwrklSjHEFtAZsgsTewvjB"), }, + { .name = IOV("XFHTLRXYTBpya"), .value = IOV("mohIelIbiWOgrSYFdSdpxsiqwypQMBtIgDspmRXDGpWqFy"), }, + { .name = IOV("fCmAfaLWk"), .value = IOV("aqefglSbTsuRkwxezBXFBXaskvBsbXXkLIqbkSnAsRMSenufUaiKfrnWPSajuvPgIdwDjmKMuWYLBtO"), }, + { .name = IOV("KDaFEXaR"), .value = IOV("GCViqiAtqiXAjUZirn"), }, + { .name = IOV("DpWLe"), .value = IOV("LTTgGPPBVyHUcXTnEMgkgDOgeDqABRZoRokoeYduvfYUiussjWr"), }, + { .name = IOV("GpLyuIyrSKr"), .value = IOV("gycdbEeAhblSlsnxHXBnqzeHrPhUiIeXvIYIXvggIJVR"), }, + { .name = IOV("ZYovmGsSlzxnqE"), .value = IOV("mugWuRXSRAqCmRdDmycqqTazgsgxtNCRIj"), }, + { .name = IOV("cJVudElWIpJoMp"), .value = IOV("TOGtJTOjpodDjnlwkzTGVhfuFKNCKYgbczvNANycrMvrGruaxrgalnuTYXhTwgzPjirfDQcbSuCZcOTY"), }, + { .name = IOV("UsnkdxeiZzAgkihEB"), .value = IOV("LbITYWgXITMoxDdrMvDUcmXVkjYuafcknUMYLsItHXEAbKqDpFXWiLtQUrMncOCXztTsOohL"), }, + { .name = IOV("KggNY"), .value = IOV("OQRGBPUaZOFtMMBPPeRDNXVCvKvQDbwuaBw"), }, + { .name = IOV("vuF"), .value = IOV("XttgkaPlTjsIvrxcZjsrmSLxiOpJtDeIQbTuokfzQVTbqqeAhvakwllRIlSLEUhymHgoQVHlTFcEz"), }, + { .name = IOV("JWRtLpOSKsIZZYBKgSB"), .value = IOV("WrdasnHcugMkSGvidcv"), }, + { .name = IOV("hZsKQhRRWw"), .value = IOV("EPmQGEWEAzJxQfOzALzANfbelJgbTaTtKWIPpldhIqIURTukYMDV"), }, + { .name = IOV("FptNvz"), .value = IOV("SUwbuXOjWtUGqCCyQNwkFmSWWhBbwgDrwFxvJXrikLIMgin"), }, + { .name = IOV("XVKglzbZDGT"), .value = IOV("vuKdgurBhjjKBerRZWeiwDQBRTKdLNbZjKHRsHwkuXpyDZNOAmwxgRkNkp"), }, + { .name = IOV("privDoEkOtEKypwN"), .value = IOV("slcJiJdQYHisRlfRR"), }, + { .name = IOV("wiuxgjjSDWVi"), .value = IOV("JSyxd"), }, + { .name = IOV("cRZjOwfg"), .value = IOV("NpbBAIzAoHGw"), }, + { .name = IOV("GIDvkauZDGpcc"), .value = IOV("PaEYxYEMOxpiWrajaHRlvoCsrZHRzWkc"), }, + { .name = IOV("PFkuNkSrklQsoZwCvF"), .value = IOV("IoJybLRJvVHqaLopzZzmDPWAowyQwvOOlWbGpHYHVPggtbg"), }, + { .name = IOV("TjgkYKokZkWLEFNKRhq"), .value = IOV("dQSDANFwceNYrOlspxuMhzODDFYXoTYkAahYqwGNIrjQSuYesQnXJpX"), }, + { .name = IOV("HuzfgJSjSBeCr"), .value = IOV("CpozhOOuMAoGVDebVWOJqhXadAN"), }, + { .name = IOV("YnbBdgo"), .value = IOV("UBWnxXGkYXslfXCurjEhESfucmbMlzTWdUkWyQGNNhE"), }, + { .name = IOV("OnMPEvBacdpC"), .value = IOV("WSTmQOQetcgZoYtWkK"), }, + { .name = IOV("GOohBNz"), .value = IOV("PxMOeUfWucjLHWQAHQvlfvyqmQglEdxXWSoaNxFoGNVwLvEFDBlMoVehJfFcLZarDpgDiCLrTtnbMra"), }, + { .name = IOV("nifuYJYXwz"), .value = IOV("dmfnRfncclbKJspHqjpEfyCIvFXIDuhbuJzyyjOvCZEXBYBSZtOXNipuwOSbRhIWWrpQsSJ"), }, + { .name = IOV("YPCd"), .value = IOV("jmfdQA"), }, + { .name = IOV("rsQWFupGUwhP"), .value = IOV("byBNaLpIjJJqWIATBhCHRRCCYSBgaClLmZmvLXUwWCwJTaDzXNIcsjvqXsXupzSQYf"), }, + { .name = IOV("TcEvl"), .value = IOV("qsdUNUFcvEHcjnKfXKCgGixcczQUKNjWbAQXUaPQJFROFMpufjjiQY"), }, + { .name = IOV("NhlCaavHS"), .value = IOV("jeWCwwWfcL"), }, + { .name = IOV("FYjctmCN"), .value = IOV("VnbctPXdzieufdeIQQZMBIIlfRkuYhItDMZOFeFstiyzwEtSnYOKRKEWSwuRxKlfrIeDJPL"), }, + { .name = IOV("GoegJwyRMcxD"), .value = IOV("GTlLWNZORigxRCwQWwaTnXSe"), }, + { .name = IOV("WmwABEYWdty"), .value = IOV("bhloHxJhzUMtyxnOdNQmwWEToNXHpDICxC"), }, + { .name = IOV("adecljEcDQJDxxKe"), .value = IOV("XowcuRUuryMyuoJKOOE"), }, + { .name = IOV("QaCuZeQKDQCKvQTVKldt"), .value = IOV("gfXSK"), }, + { .name = IOV("DpDoXjbpnH"), .value = IOV("O"), }, + { .name = IOV("MyYHEISjZIBiEkKeMo"), .value = IOV("UhXlhqMemmkefzMnOpLhVvuOzPkakZuAUtBZOOaOfkKgNjiIuoXuKJfM"), }, + { .name = IOV("o"), .value = IOV("oxCpQgoSLOghWbkTwGpptUhTjyfjIQCqLTgxFySFXVpDmWLeVBVChastWswTQqJmLtObFoqFUHubp"), }, + { .name = IOV("HAIy"), .value = IOV("djnNnLeYczAflhjytahV"), }, + { .name = IOV("zNAjTWHkJpQp"), .value = IOV("jWwIiKADFYDHkrWSAbiiVkWuPtANOPZxHmWlAS"), }, + { .name = IOV("nZfYdBA"), .value = IOV("UnfJVdhCBBwYOwtRfCJrRFJhbXTIVDGAzcObLlbZXyuCDbWIZnvmFaLDFIugjTpqo"), }, + { .name = IOV("ZvLDoAfaOlynCDM"), .value = IOV("ldqucsoPDvSiwPSrdrcYpooUTNCsTaeltLnbpPbvskUbXYaBLRwQYiZOMwnjQvk"), }, + { .name = IOV("UNKCXpGHzgj"), .value = IOV("GFgnhiyTlwRWlrXqTvmkhdmcWTvzQVrfPkeWTRyrdOWtoRtRJbbYSfaCgagS"), }, + { .name = IOV("SSjSzVS"), .value = IOV("ZmMNDVQkexevUlpGGPHIlDPlUiYrtjzpdokwoukvvHmqaCbFXJHdmmdnuevwuclTBGBZrBJGicBGKkmT"), }, + { .name = IOV("SHKqYmlYzHOwGFwaYY"), .value = IOV("fwjVwPAFim"), }, + { .name = IOV("Wepyzj"), .value = IOV("wgFwjHUDndQuIEnKrjVpQPdpOzvuQIQjuOmgfcpEprqWOFfGjAHGkxUeaXhoJbBAubuYaKh"), }, + { .name = IOV("gsyzGySiNhRZkkq"), .value = IOV("ntSWFbgzCjBIWZjgbNDiwfEyMndAGPNxxr"), }, + { .name = IOV("pXgS"), .value = IOV("ELYuTfuDewQUiJwCyMCdXkCLJKuRrIZDAKjPcigZb"), }, + { .name = IOV("L"), .value = IOV("XsZpOfZssLAjqTUQLnvvckWvOqfdwrJcIZhxXNveJAuSK"), }, + { .name = IOV("CD"), .value = IOV("AsrTtnkXTIoLjJUfIxt"), }, + { .name = IOV("uChagYDdRWEiozGKpxW"), .value = IOV("kYjDvuZfhyyuFBaLRAwfbCeObeZJSIYqKHoxaZOvBXjIexyWL"), }, + { .name = IOV("AJFrN"), .value = IOV("UrwJ"), }, + { .name = IOV("BbNcVRlDolONqL"), .value = IOV("y"), }, + { .name = IOV("PIppyNBc"), .value = IOV("tjodRNZEeujSyDccqyybiVsW"), }, + { .name = IOV("PSYDC"), .value = IOV("MXFUObmwuZlmRufCOjFM"), }, + { .name = IOV("nI"), .value = IOV("FPpZucbMrNuZLGgUkHYIUe"), }, + { .name = IOV("eBoySaY"), .value = IOV("thGxWsULRGoGmJf"), }, + { .name = IOV("YRnZHgvmXMODrjsS"), .value = IOV("LYmiZUvMNEbjkxgDhuffkjqRoQsHptG"), }, + { .name = IOV("KegoeI"), .value = IOV("FfuZnwtPfZNzplFUblrumjmBoJyMCjsQSdzWQHegxPwONyYVmCOtYevHIfZ"), }, + { .name = IOV("NncyjHchBfdMV"), .value = IOV("ElSIDqlMQlmPShjwSFaFFbtoUoufLVoAKjTFRorkgpSESBed"), }, + { .name = IOV("YkrukXAD"), .value = IOV("DGlYYfuAAQxtxmgUoipBnrloUyGTTbfIAOPfsXhNRpIHXZevICRfSGMTgtWqOszTTdyhQirucUkR"), }, + { .name = IOV("taDWiKsrsiw"), .value = IOV("LtpNALBVCDcbHkNCOoxhs"), }, + { .name = IOV("zsgszhFrtQiKDaUtIAZo"), .value = IOV("RKUsdwvZzGiRcJjqrcfkEEgSjqgJEMrGvJJIUVhXWhqhdjwtoGrjStFyMrkoHLQrAgjj"), }, + { .name = IOV("HkRee"), .value = IOV("ZfuiOqmjHfoixfNzlhjLJxTJlIvpWlnMof"), }, + { .name = IOV("NdrxijhMofUABGQ"), .value = IOV("XSRTETKNaWdmCCtgoMgHcmIaJoFsOBItgthVTDDBGKRPGMKRzhpHjbqznHagmfRHzFjRKYTVcMCOOoT"), }, + { .name = IOV("OYQjuClVcGFgNxfIaeX"), .value = IOV("bzIKrAgtKYhSlYwhqbLzcpEejxztduzUwaqSNRwTjmrgE"), }, + { .name = IOV("wvUpZ"), .value = IOV("EwFZxrpjiXixPmSKGVwJUePLtGtWmIO"), }, + { .name = IOV("PkJFmCvBmHa"), .value = IOV("tsZlaG"), }, + { .name = IOV("S"), .value = IOV("AVLDDvKNGNVzMPgtUTwzXEeInMUFGioGIzJKGwooAwcKnnYUnQDUMalAfJLdGswqpVhBDdgnKvW"), }, + { .name = IOV("wwiowYgGhfm"), .value = IOV("u"), }, + { .name = IOV("IBQIfcTbupnunzc"), .value = IOV("TpEcRjPmwAIvgYwMRzJPkIhbfSmcxoMRMFcyNoZMMUfNUQptOPZzEfJmnjAoHu"), }, + { .name = IOV("tUJcTqWw"), .value = IOV("YAQnArfaOhnpQPCGWYEEVTyxeucpwSKmnhihIcYTtupBFO"), }, + { .name = IOV("tKMiMppXinhwwjxz"), .value = IOV("AzjTrWheCHkCpYJwXvUOJADHHJhYyElwIXsS"), }, + { .name = IOV("NcpgAsXXplvk"), .value = IOV("vKwqV"), }, + { .name = IOV("mZKffJcPwqgLvVLy"), .value = IOV("SADeFBojafTCcIWXuCzhRzHVMDEUFtnepwNBtZHumtTteziIiRLnFNEvVTtEQvAQQHwfpdspxygYW"), }, + { .name = IOV("FOHuIdZTtfMGMJv"), .value = IOV("TYiWjmEXPlbQggxqTMMkVZuiWxBDAezIYLLNvuiSzTY"), }, + { .name = IOV("mGCgTMwEnorc"), .value = IOV("EPTEHjRPQNxyEJjUlFlXCwxNSadNiCsitBmvIJEGvuAiGsROPt"), }, + { .name = IOV("ZoMTmCsDq"), .value = IOV("bfskfmzJcYpBONMwBCvCENOxELtHJNzTeQCgRm"), }, + { .name = IOV("bXyCNOpgRsx"), .value = IOV("ZoWrSOFLDJi"), }, + { .name = IOV("xYYrtWZPtFdx"), .value = IOV("SZ"), }, + { .name = IOV("kYFeYMUsFPUX"), .value = IOV("EagaGnVEk"), }, + { .name = IOV("g"), .value = IOV("AGNXNbjbyzZrFDdzRDRmcgtXHdbdQCOmcsHsbWrKJPoCpDVEhMleBpEiufjkGgNNFh"), }, + { .name = IOV("vAWOnzAWrsGQALzHsEZ"), .value = IOV("moBLgGkCvyrVqtAaFIxNOZFlKRGxznxoNykjRZeTyG"), }, + { .name = IOV("shbOLWLsz"), .value = IOV("BVqtUHZZMDSJwwMckPOTBYXfdGWvRuepbHVaJCwCPxMukQKWgZmmsLYovQAgNCVf"), }, + { .name = IOV("mjbzYhKOgs"), .value = IOV("KOZq"), }, + { .name = IOV("hHVmfLDhcTnoEkLu"), .value = IOV("LwEQLNXBIzaTLVUaybbaHwCIrrzMSgurVHhpWdpR"), }, + { .name = IOV("EYAXkwX"), .value = IOV("KGYvicfqmcsDkYnyHlrLd"), }, + { .name = IOV("ek"), .value = IOV("ttdQFoOpqvAjPqRlPXswVcoLfBbdxKhvctEmYOTQJzcBk"), }, + { .name = IOV("VmgoXBzBq"), .value = IOV("dsdxdCUwZjklQcqeTYZuJjtQJCR"), }, + { .name = IOV("vVAeYaNGwEcvfpNGWd"), .value = IOV("AkDmldvofbqkGGsMQMvlP"), }, + { .name = IOV("BuqZiphYXdSHHLIi"), .value = IOV("zrsDLTxXtSDMEUSfnhykdKkamxHxrGvdcdhWCNVRtbEB"), }, + { .name = IOV("qLXaoDZpBQa"), .value = IOV("VTFXu"), }, + { .name = IOV("PsnhHFQlZuxDVGJbb"), .value = IOV("hOaJofFsSpriNaiLnCOVrDozuAGeCfHUYnimhFpxgfLjejLYhrWLYHMNMGBqfOmS"), }, + { .name = IOV("ItEjOnsdVBzDSgareteE"), .value = IOV("FEqZoyCJXpPspOrygnMJpKdPqaA"), }, + { .name = IOV("ljsgCZCIuavhS"), .value = IOV("qvbtCYrLZyuiIzvRoUvHfzCoKAFgneiciOMPdBAdGrfrKABSGXEyvCCArrkkNzFKdIRznpnKBWyL"), }, + { .name = IOV("pqMsQFHkjySazuO"), .value = IOV("rKYHILkJMIaRoJhbMeem"), }, + { .name = IOV("TMJy"), .value = IOV("SlOPRDGbjgxWdwfyQYnQgGMrqfkqclcNDESaDEnrdycsdmbMVmtMsNEVZhjpqxIxJsYilaFSdtz"), }, + { .name = IOV("kzSiqvKlHfvzJpxHVrM"), .value = IOV("lxOjtdzHVKc"), }, + { .name = IOV("wXVFzwcDwjJ"), .value = IOV("TSNaPsXynrVRbOZskUKgVhYymIBQzRDcuiVqjZNjWy"), }, + { .name = IOV("EwMax"), .value = IOV("HuFMOKMGiZqlOkREAgwpFQmwryndFbxTDqytBhdoukBlFOFFJoHeJvinWeTTOsCWtgbp"), }, + { .name = IOV("RYgcDpzRInggnSCKXqY"), .value = IOV("FgLBRduMkboQuOJOX"), }, + { .name = IOV("uj"), .value = IOV("ugkinfqVKgvmKbxcBiNGvHtEHwmsDodNLwXxgXcgklJPXMvNzUmzCozckSNaxyPPscaRK"), }, + { .name = IOV("GMrnVTqL"), .value = IOV("ZYZwNCZoTJMnHEsbBxlnlngPEfVdNTpGeiDHxovYDDgVrcLSh"), }, + { .name = IOV("CkmClzAvcQgfEcv"), .value = IOV("WoxnqLWOuYtyUqlhZjNHSjSSWIsLkbUBSNEi"), }, + { .name = IOV("mmcQTUSEzeFyoU"), .value = IOV("xHMbHCPzOSqfpYtFKWGOuDHSgZibbZHnIewpwYTtzomvhwYebcUAUCdfePpJtYOYFpeWzKIOWFTmoZUx"), }, + { .name = IOV("ouzwjIgfeJGwaHvl"), .value = IOV("sTbBvpf"), }, + { .name = IOV("pFxTB"), .value = IOV("FjYBxvGtihWSRrgHxLeCbelrHITDACvgLgqqxTVTZX"), }, + { .name = IOV("tCeGdxfRaA"), .value = IOV("ErZLjknSGwbZTEXfCahtHWkOCXtsNiSuIRoGOqMgLxfTmDQyyEsvkJKyZwuG"), }, + { .name = IOV("NuzUrBDAqzJnkVBFtQr"), .value = IOV("UGWOjayCUqjyGfsbHmPShSdOVqAQfHnfkaKkfGLLYkxrPBXWgeHfoTFc"), }, + { .name = IOV("MgTWYCdU"), .value = IOV("NlcBSATCVbf"), }, + { .name = IOV("lilJcDbtNiefxPLGU"), .value = IOV("VXkMbOFDpGMOunvPFNLMHFcQKktnbTQEiIojPuoKsApdjyeRCBAWCoXiOnGZtZacFCM"), }, + { .name = IOV("PVCBOPMLTcSdtP"), .value = IOV("zDardxBPiptDHxQNekDJuOjJJfOAMJOjanhTvhUZzYalEJ"), }, + { .name = IOV("bUMQnMIlUyKMFCRtyNIo"), .value = IOV("XoIyscXIaUBQOBvPmNCSnvOowrLplnIfzRCzDDbKjyWQWoVgUtgOIygdDJsAWVSIeLBKtvSqE"), }, + { .name = IOV("ogXksbxohK"), .value = IOV("LkJbFBBPNDoaXQwLaaruIJZCEXICMxHWFBBInpwNjyqdH"), }, + { .name = IOV("TxPlHcUhAWLK"), .value = IOV("EmPJIMYmkJZqhoTVsUeaecZlWcizEUaaNOMSeZDUY"), }, + { .name = IOV("jd"), .value = IOV("SYpynnEVlfJP"), }, + { .name = IOV("XbdkGSGxenEbxGLrEqu"), .value = IOV("vNmtMBqMPUwFxwOrvuqhXakwBdFVQIgtUuQdFGBuPSr"), }, + { .name = IOV("nChxs"), .value = IOV("vxdiWuuEzebZsUbttEoJOaSMjJBEMrsUnvXlEcbWcbfSzzsXb"), }, + { .name = IOV("NDVmoIjH"), .value = IOV("BlrqXioGfBeDMqLYljhEdA"), }, + { .name = IOV("laFrIvDireXZVlOS"), .value = IOV("o"), }, + { .name = IOV("aKuFEnyMVO"), .value = IOV("YIFtJdOFgPnglMoPfbnMKuYpd"), }, + { .name = IOV("DFBFbFPLWwhEUFjkQPEG"), .value = IOV("RYJIlheTnoCzLJhJxsOjhMITOZKTDJkxzJXEiElStxtNREzUEuoUJiAIofhZtLOvWiV"), }, + { .name = IOV("YjYX"), .value = IOV("HIdqbnJRQKvmmDjgLpUjVrJQcLcACiqOzcnANvDbaOSSszoFfaclzyZGvXWahXoDcVfJRmwN"), }, + { .name = IOV("xUovn"), .value = IOV("dxjZQUL"), }, + { .name = IOV("SXOfvrKcuWoYliooblv"), .value = IOV("WCDXpIOetFqFS"), }, + { .name = IOV("SpknpzdXGvnvP"), .value = IOV("fzRxhAGiMRJJVYCZZfOAKOwaQBILkDyFkM"), }, + { .name = IOV("BqhpqkHgOMwsQ"), .value = IOV("wVGZkIrncbYTTZeYgVUSxHAjWTiROmvJrNTiJXTwUtYIiWUPAj"), }, + { .name = IOV("pROneafRshMTfdHAUS"), .value = IOV("RjYbffLXsoCysahwMzFEytDIGHahQl"), }, + { .name = IOV("CLDYStIZj"), .value = IOV("aIufNqhxTAOwWBqxOCOgujojwKNbhopitvktjPkHuXSJBCkrCoivDNyoiDEPkPttzrBBlRll"), }, + { .name = IOV("PcyeFudDSzEXh"), .value = IOV("EgyDHxbDjljXIpcvcfdEEIKylYOPRkihMkYmhHvCOKNxmvHhfHbJ"), }, + { .name = IOV("SiaNwHWQZEm"), .value = IOV("WBi"), }, + { .name = IOV("awAyZDBMdaUmer"), .value = IOV("BGIVShTHCZDbdTlPVzMJQuMAskNgaTlPLLtDNpMmsooaSJfFhDMOV"), }, + { .name = IOV("XA"), .value = IOV("AoXuhxBuAaaPcedRBhrKDGjEdUIaivOsgIowzHxlYGXXPqIuJAUovENEuvSwb"), }, + { .name = IOV("sPeUJytSdnKt"), .value = IOV("eKKHEhznRmoOsEKxhriEEXLrLCODCpjrMsHxRuM"), }, + { .name = IOV("AdMdjmLlnjFjLY"), .value = IOV("mwVHQXRMvTOLPhrXZaGhjuKKHPgXjZJRUwTzo"), }, + { .name = IOV("CvyU"), .value = IOV("rxmTBTGoTShIhZMccIUuMsXmJKOxnZoseOMmobPZmfGtwtdXIOsFu"), }, + { .name = IOV("nMZgKLqiWWOPxcH"), .value = IOV("ODLBdfIQYvoYTgjbtEIHMjGEIbYMODyPYPwFDcXszfYIvIzslQtKEEcRpWYnukJqrQMOrJecd"), }, + { .name = IOV("lTaOqkZjeOKVvVkEkM"), .value = IOV("FYrRX"), }, + { .name = IOV("w"), .value = IOV("WGitGnSAnrcmJtvXNqPTHoQbjJvclZJCQRKoDmgn"), }, + { .name = IOV("wdiVqlrMemGZ"), .value = IOV("MeCUwKebeFJgYfwPGrVTPeWiYVphNLQzsyVnRpjllocjKVmlftaQaKBJwDweoVosSAhPV"), }, + { .name = IOV("tdmiNkcHsIcGTOKJ"), .value = IOV("nbajyQYgSN"), }, + { .name = IOV("NmuhLtyWfSPdaEmhLHlB"), .value = IOV("KyER"), }, + { .name = IOV("HtogxwylmiC"), .value = IOV("OjKYPtqRjCeXXMBjptbxTUuokCqkOuvDwTrwaQhHlzkiFGffMIIUbOICLQUeiBErEcog"), }, + { .name = IOV("inwZxfSLl"), .value = IOV("FeBbDTUZHJnNaYaAfDURpBQIKCBzlPBB"), }, + { .name = IOV("txIZfdbVWOCcSs"), .value = IOV("aIMpzdYSbxGirTtCJdNeXJSDpQQkYVNAEFACMdE"), }, + { .name = IOV("QY"), .value = IOV("uPfkuRNoskHKwNhTEgUhIDQ"), }, + { .name = IOV("FZmnuZSfIxqzMlzqYME"), .value = IOV("VWTyTDMvThkJeHvsDZhqHpMPWcEe"), }, + { .name = IOV("EhFBeTdudZLsQjqL"), .value = IOV("IGfkPBblOTIjkaDbtMnAcgxwmMubcKMSSqUuNUSmfUBhqUftyQNufehjceVRLQRIjcV"), }, + { .name = IOV("xfNLoWALvzMjKGJaL"), .value = IOV("lbRxrYD"), }, + { .name = IOV("Gzy"), .value = IOV("sBLY"), }, + { .name = IOV("LjAmoUP"), .value = IOV("PwMWIVGpizHcNKCMOUtcCjnWoPZrTwTJmEZClNP"), }, + { .name = IOV("OpaaDLyncLZ"), .value = IOV("TLoXwBCiGHcFoYoSdzJjoDresQafnhggNIwFZJrlFQZbMRLYVDuBmzEwpAJuWNmi"), }, + { .name = IOV("GFHqnaf"), .value = IOV("CqnpTAdimiuMvqTd"), }, + { .name = IOV("lHuCIYuEg"), .value = IOV("BMvKfBFytgwBBoicCrVrwJntbKflLGRDIyBwBDTijCxhctqGheCp"), }, + { .name = IOV("VaHFL"), .value = IOV("TIhbarWmpcVJTsWeVhXKVmBZqPQzFsecEm"), }, + { .name = IOV("sadlo"), .value = IOV("ykOvQBSniJOSMArDmdIHgNfWBoFnrVdOJHDllPwDLAmnnpWuuVjJTgJXxMAKCXVeoTPmFmbfHq"), }, + { .name = IOV("jQkVRUNsvLlkXLIv"), .value = IOV("XvcxDWubBfwF"), }, + { .name = IOV("vuirJIErjCHUKPnDD"), .value = IOV("RZsdkucvtHeeSBbJlpVVqKVXFPtJWPjxakRgvsDUbEmgfJsxGGwIpDeZNUFFhwflZOHGxNCmbn"), }, + { .name = IOV("AFEINpmQInbfw"), .value = IOV("qTqipGFkikgqaEleGfHtF"), }, + { .name = IOV("zjyMNBvvYzcACasd"), .value = IOV("kfkJPKoDMIhHxmwKFdVshOOAcQoNPsbYFLhloiXmt"), }, + { .name = IOV("zR"), .value = IOV("qSmpmDypGFIGDnlsrNznkNDyQbkVYxbnCDWtRVZKIlGHjteZY"), }, + { .name = IOV("BtswWNFX"), .value = IOV("NpIfPWNMJrCwDKeEcvCFjertbWVbkrKCftUiRSMWncOiZekQHUQSOd"), }, + { .name = IOV("pClGXWKnCjsEMVGI"), .value = IOV("KFDaNIMlAHJjKFadXEOQOEEWdEEd"), }, + { .name = IOV("TJkyoIzMOKWR"), .value = IOV("rnYsgPUVGFKggSsxnPJseyXCbrJO"), }, + { .name = IOV("UFsXICkzR"), .value = IOV("YbrNOcmEIZMfWLseEDlNYTsylzHnGFLWjfwaBkypXh"), }, + { .name = IOV("DaicZTuoCUurc"), .value = IOV("TCcMLGQHjNGZxIWRIeXAOMwivndenepatoFmUPJXmhzLQouiSziTBgruUDtyMajXjCHmRiJCalXwlRrR"), }, + { .name = IOV("HrwDik"), .value = IOV("R"), }, + { .name = IOV("UOpxpNjSSkXBYjEUxDLp"), .value = IOV("hzjgGviSpzmGuSopNYcR"), }, + { .name = IOV("wrPqpbaoiOoVVgJu"), .value = IOV("sKaQNQEKFymvAEsTWFzJCJWqpgALSIABZzgDSKSVGBPlFAlFDEM"), }, + { .name = IOV("DcGufxDpiNusoCxEnOCm"), .value = IOV("VWNWpidhJZcieeXYJWCsbcGLzeJZRVjauPWkrHCXmnhUNonwmkXJnVcQEhkZJTVMoOC"), }, + { .name = IOV("JLGrhDAg"), .value = IOV("puvXCiJYAxRgBCQxVJmgYaKqkHUjpJbFhszOlyQLbZwynwaHDLNfbhcHYPvnWj"), }, + { .name = IOV("kSUFWcSTRZ"), .value = IOV("kJsKTkSt"), }, + { .name = IOV("bAuzJMBfO"), .value = IOV("ZRtpCtPzDaUkwgjKoGjLLqoAJDrSOeahnakVrhfhuXnXZAHRsXkOTOnHfUWXgdhAaEvtFbUY"), }, + { .name = IOV("OFHa"), .value = IOV("DVGmnxcgNHQzjcrAObRpyquDLcRosuOUgBJntwjHXfRibVieUHtrkYtwvGzeUPaHJIAzq"), }, + { .name = IOV("knPvdMIvY"), .value = IOV("KkQCUPgMfYmegarLFGiVsnNPQlY"), }, + { .name = IOV("GDtNgakFXSJgBeQmWhB"), .value = IOV("JUDvfvMUEMNhAYpvcWNSSeAePxUiybANTqrHpHVSewrnBCJKuCNMxXBoVygTIHoPPRVHNjCUOyPwLsoc"), }, + { .name = IOV("G"), .value = IOV("mOtPRotWbFuDBnKJJjlokRoJuYoegAnBRle"), }, + { .name = IOV("TDTz"), .value = IOV("wRXnNtkclCNJSkNaCBlfFIZhaOsmgsXhOncXaHPYoNLSMZxRtpxpRCsFjd"), }, + { .name = IOV("HoxmbSWHrJ"), .value = IOV("TANGekGJdXvdGTIlqZbSIdrmVylPOiff"), }, + { .name = IOV("RXsSbxMOjjJozqdLGs"), .value = IOV("zERFYhjXuaheNcRBfLSKntFfRetAHdQFCkicrkoofGfDpEeLS"), }, + { .name = IOV("pxFQTkruSUVtMLSY"), .value = IOV("CJhoXqGNmRemePXASAJoqBtSjxIBDJNUYGVYoADvTLJuEfqrrSPRrDkdUBHGeXD"), }, + { .name = IOV("DLRheNdtu"), .value = IOV("bsYgAAGdXtgvicTKytktgdONLBrtyMheGRzWGdnjZcsuwJUskXscQPWfPrxDhMdkeQbbC"), }, + { .name = IOV("jMlmkFVcq"), .value = IOV("lQAFDWslWwHYeOchFRDmsuwLtfLsipIZXBRfwthoWpUe"), }, + { .name = IOV("agstRK"), .value = IOV("DQUiaYtVbLnMyYW"), }, + { .name = IOV("eEdLF"), .value = IOV("iSvfsgXjBokXhUojCGZteTNOKSrciSMEiZnCiYeSCTKqrLtFjnrRDNTkDuiwwwmNTqiC"), }, + { .name = IOV("cjYnNhZPYbSv"), .value = IOV("hDpzSdLlhnQXAaJkQggzrLVIZyaADYBwVwhNyhwGyondWksiqxdU"), }, + { .name = IOV("hgxQyVPnzT"), .value = IOV("VIRuMNssWqWLgdGnuPN"), }, + { .name = IOV("xJwdyQehlYcJOt"), .value = IOV("WpLhwRRzpWJCTXAieHxWLUpYdDLghuZrSzAUEwaHyodxsOZetuAfZgqT"), }, + { .name = IOV("wytrETZtKSRiUplaG"), .value = IOV("QOAIQgnIXZpFSFcsNNnOrApOfWnpPSOwBPRNtdIxReV"), }, + { .name = IOV("ufwu"), .value = IOV("SUFabKksOkHUZBClEZqkCsIfFtXVTXkkkg"), }, + { .name = IOV("vh"), .value = IOV("ITLCxMzqlZLtYARli"), }, + { .name = IOV("pWKpSXMNEECGMNxUIZK"), .value = IOV("DKQfpG"), }, + { .name = IOV("JDHmRmvZZTEYRRFF"), .value = IOV("mSRrvNriHsZdWCcGThDkRMisKWdDlSuIjapEBQScCmwRfPcMfxXbCMaTIPIvTkjYQrWb"), }, + { .name = IOV("UxpkRphmMZPUuSct"), .value = IOV("hVzKJSzEsbEXMPZbVXsZvUOeEVnlZrAbUAEFfeTVfrReZyotacvCLvqPghJKrkBYmB"), }, + { .name = IOV("DsoQZneeAOcTCn"), .value = IOV("Hdd"), }, + { .name = IOV("HLm"), .value = IOV("BLCAciQqMUmnnLc"), }, + { .name = IOV("aqWKuBnz"), .value = IOV("cbdsfekVdrQczCeYGrTItRJtsAsKmVVViNsaTZokFghRqUWlkiVjSXLynwsceEhnnsf"), }, + { .name = IOV("NC"), .value = IOV("GGkQiEKvCQXNWcDkXOlYlRxHxZUdWhTIgKQcVXEaglpKGLtFcKxNGSfMRNGY"), }, + { .name = IOV("wHmhy"), .value = IOV("zAHcSlGmISSzyPtlOrUCMwgXEOfLBmSgwdrXzOzg"), }, + { .name = IOV("OYAhmAGyK"), .value = IOV("GEQGsuigFlmXycjPWZNPTvjBeuikMEPfvfrdhlfUbnDMoputdWmimFIQotNKHMaRs"), }, + { .name = IOV("enmjqrGk"), .value = IOV("u"), }, + { .name = IOV("xvuNuwvsswWLNOD"), .value = IOV("tiSqLIxTYeOPCseKneBQhYjBnSmLPuMNjTwxXbtZMJXOtiLwpKJWHOIJQxATddN"), }, + { .name = IOV("JIXgLH"), .value = IOV("RitgoACiJtBkVkPFLiNTUJJjWDdNDBvVpVmDchhfxjJDJmaEzOzIsccMGzLUhpRBiGDsZsx"), }, + { .name = IOV("wHjbwgjec"), .value = IOV("RQcYcwWEuCKhUOpjcgpRYcqOSTQbXD"), }, + { .name = IOV("QmhMSvft"), .value = IOV("gLONOAQUEwPaIyZswwtYykAqnIUONscMYyisWoaqDYbTqQDnjMZxSHRPTVhsgZZUdrWTqQrQH"), }, + { .name = IOV("gnnqTOgtr"), .value = IOV("bFKSPTDHegbuoeVnuXlJufJZZstYbktdimJumHD"), }, + { .name = IOV("Nul"), .value = IOV("cuszmbNnfssujAuECV"), }, + { .name = IOV("NtJgQzYfVHAZgSg"), .value = IOV("IKGyzBHyWArvYsgLmHmEPNbsFVbO"), }, + { .name = IOV("NeNwT"), .value = IOV("OpUtpYZuBbW"), }, + { .name = IOV("nDdEDNek"), .value = IOV("AtUsHiyYDcXAGMDxKYzUVkqHNKfejbTMYkmxHvu"), }, + { .name = IOV("nomrbdToN"), .value = IOV("BxkXYNmMHDjGUufU"), }, + { .name = IOV("OyzGSWWJAiLSTXdXe"), .value = IOV("paraXtFcjYlRApIuUFbenFNPpeUWlgQmsRpUJKirVmLpwpznvh"), }, + { .name = IOV("UWTlscIlYSlLgu"), .value = IOV("rhcxULTgKdYnEqsDyZcnMRzbYe"), }, + { .name = IOV("YwFizr"), .value = IOV("SHLZJmFlXoBDOtyQGQBZrdyEXbJHbFLIQyFdv"), }, + { .name = IOV("celUXMTNJw"), .value = IOV("vAuABGRHAQoqPIiavkXVMqElwstnolNjrXPbHycfGPZKOvkDGjzqfDcFunODJtiPc"), }, + { .name = IOV("ZHvaKZhdJRAZHqg"), .value = IOV("yfyHMMVmoVCMRyQUvaUWkScNrTBRyIDchdLtaDAtBL"), }, + { .name = IOV("bRoiUfwukPwbDwOS"), .value = IOV("cMcRlhwbTalpRmuVXgastqDGUpTkdn"), }, + { .name = IOV("KuiVvZRZuQyb"), .value = IOV("RAcRdtSEFEUOWHLDTPPGfGfbnuHMMaDHOfIkzytHEHuNZHYWTKGkZbxtH"), }, + { .name = IOV("crxkEkSpDfAZ"), .value = IOV("VnZYalWOSLVhdEswAyddvravaDscyMOtJUQWZDfMiHMxpliVUhSoHlROFaPeYderMjnbSosvlVrbocZ"), }, + { .name = IOV("hNL"), .value = IOV("RawdBhnPWERi"), }, + { .name = IOV("uyQnTMJxiyuZr"), .value = IOV("TRv"), }, + { .name = IOV("omFSN"), .value = IOV("aramrpqXcBtUDKGIXTGXM"), }, + { .name = IOV("gSvhXOmTI"), .value = IOV("XyxGEKDCOCqgSyAFaeihXPnTFxVUsfmXTtgOtDHJFhkmXuaEcJpnD"), }, + { .name = IOV("CArefTrs"), .value = IOV("IjjZPcMhLurpXmrFg"), }, + { .name = IOV("gGr"), .value = IOV("KGH"), }, + { .name = IOV("ZuAaOP"), .value = IOV("kWHVzMeAOXHzrcvMsEhjoyjaPCwGCrLUpzhODTHKmdyMyBVJDykGIpnCrrB"), }, + { .name = IOV("fAkA"), .value = IOV("QWNby"), }, + { .name = IOV("UQhUnzUBrEPb"), .value = IOV("LOiOLyrBjDIPOYYaOeKZQVeyfVmjkxPpTINXsmIfwCbrMiLvFQtVqAhRYUYuzNuaKCYVxIKAz"), }, + { .name = IOV("PjIIrl"), .value = IOV("qKUNVWrVshOjFEZCyMBVjLGdfhNTIz"), }, + { .name = IOV("mOeiFPEM"), .value = IOV("laCrqSuLhXTycQqjiLKqhLFHpWAvcIFKrYBImuwvdLVzPyfGSKRMHmlQIKHsTo"), }, + { .name = IOV("WUX"), .value = IOV("FTyIkmIiXiqjMhRd"), }, + { .name = IOV("iuwbaeuNJHvNhFCXtZ"), .value = IOV("jQABqiKDvZQsnIzDVXVYYPYCkTaEHdDaUpKtpOsFxnRiecmfrfFCFBflEYQFFhrqDKzMJBaAc"), }, + { .name = IOV("zNotjtzhoMtkmPyxQjuF"), .value = IOV("cypOBcR"), }, + { .name = IOV("MaPTQdgkvImroQUjSfFh"), .value = IOV("LgvoykAlumSevYuYHcjvqeOARdbSzj"), }, + { .name = IOV("mjvSBIcuW"), .value = IOV("vURMNfeLehTppBzDn"), }, + { .name = IOV("VEMKEibYHm"), .value = IOV("NFzZSyQoKuoLbU"), }, + { .name = IOV("AFXlvhKiXw"), .value = IOV("qdMiIAOuokqvdFPdT"), }, + { .name = IOV("KDsB"), .value = IOV("VaaxPEbpMvcXfvKatmsuAywiZhRTynnxSBDAgAjQDTwYRUcgCHdjsXkBxAbrPEBAZGzzUohPZdNKJIU"), }, + { .name = IOV("uv"), .value = IOV("rGggEyiwFsirwGvVuFLQNwbnlIpvqLDRCPvhtdWPMdtBLraoJjymdgvroMiuGRFQfWdLWj"), }, + { .name = IOV("IAqczrCsQ"), .value = IOV("TcTWyzo"), }, + { .name = IOV("ZxSgNzqXYwlu"), .value = IOV("WmHMRhIVJlaZKEmCQkWCela"), }, + { .name = IOV("YcKlLsCWgEtpLJEbusH"), .value = IOV("FfDDPjAvjgqfyAgLthl"), }, + { .name = IOV("jLkqDyqXVbwIrfxczwYQ"), .value = IOV("eHGoBVSIQlJY"), }, + { .name = IOV("RqNeF"), .value = IOV("yGQlLeU"), }, + { .name = IOV("mSxGPacb"), .value = IOV("uCtJBBmXazciRAtEsUIADKppRtbVYqsHeHbmTytoakmvqgYyuQaRxuL"), }, + { .name = IOV("JanejOMFzGBhrCuJgs"), .value = IOV("PLuVkQHBDDco"), }, + { .name = IOV("ROvfdUCmCDC"), .value = IOV("pthNmNZljhCwYFmSnnvac"), }, + { .name = IOV("hMuUZHSRNxiz"), .value = IOV("zPCjYEeQB"), }, + { .name = IOV("s"), .value = IOV("itslftswvQdWuLwbfMnJuYfgHYcGHLnSDMXfPVonDUYHEsC"), }, + { .name = IOV("AmqMZNBdRpwkKf"), .value = IOV("YNEiIwSXKOgRZDWo"), }, + { .name = IOV("VOFueclcyBwyKaKw"), .value = IOV("joBzcmdzzbVuFFGIWuSRDwiapjZBZJhpzelpfGykgPDRGZPzJikyccIDokLdyRe"), }, + { .name = IOV("EdGXQQhbxtje"), .value = IOV("CqtlazNuJgd"), }, + { .name = IOV("DRB"), .value = IOV("chToziZnVBxWVyMXxcg"), }, + { .name = IOV("KIUKZMNlQYf"), .value = IOV("ttXQcsVuCGaApgJwkBwimuYanhjIwbMHMxDFGnXpTPYMMzrGTGLbUHaAxCnkbNqwZbcRDpALBEVIssa"), }, + { .name = IOV("SKICgadPxsWL"), .value = IOV("uWHQZByYSFBkIEiBkkwoBURSCVjCAgguKbKjNucEq"), }, + { .name = IOV("rnwtdqnq"), .value = IOV("OwNGAtfSvTxXDvXERuylLpvrCCCQSiGX"), }, + { .name = IOV("ENAPpok"), .value = IOV("YaaMIvnhXJRnNaUYtDvALrldWpsLbtrEhdFVtBgfA"), }, + { .name = IOV("Iukc"), .value = IOV("qPShmohAsmVgNSxpfrOkGxUGJxbybKALfXJxTcbMSTKUgwWiisPKufULlvwBmvOiuQL"), }, + { .name = IOV("slxNJuvJDNh"), .value = IOV("ghuaEQjOpzvP"), }, + { .name = IOV("DMJs"), .value = IOV("CkYyAyadNRxVBcLSMjJuxcJnfBRcIPvtuHkgoEwNtgHVXEnRWfeVuMDRxjQGeOGV"), }, + { .name = IOV("gLMRVyPreDkCmnfHhz"), .value = IOV("MHaPChvQovfniWIjSVGjMRNUvdRXcmUaMpMquKidPsTEUVlwzXYiXqWrrMNLojRTEQWTm"), }, + { .name = IOV("Ij"), .value = IOV("JYgHFiBkGZKPKrJTJX"), }, + { .name = IOV("fEumeFytDSfoTJ"), .value = IOV("YlbgDsHkENYPjXBGAbrCwyRSmEVXQLOfEqGL"), }, + { .name = IOV("qU"), .value = IOV("sAVZYnxmtLwqERTICUNJJcUdEgomoiSifXCOMjXMQTwoIprHIfebQNNwEpdRIRzXmUKCMR"), }, + { .name = IOV("BDySMEdtKEcDdgHJm"), .value = IOV("RHtNCpkMBnfbcQhPWdVrlZDoQLiWSocdrJeYFjRsMuGeGwoaaFVtqETukfNiI"), }, + { .name = IOV("SlHPFPkSmcEgByDURQR"), .value = IOV("gjVuDeNgkLBCUKjOQfQfrKzMfubgHubmGoqNOjTWktVjtyMtHpayymiPBvCze"), }, + { .name = IOV("Ayg"), .value = IOV("RpMUZkjSQBEgaoffRNFMAHfOKiCKvYtNyPtEDEqzyMbuzKyXvdkVzEUebbnzBgTvdWep"), }, + { .name = IOV("EqirJmmfYSUUR"), .value = IOV("awVfIKQAnQZQYyjTuTfTVGxuNNIhm"), }, + { .name = IOV("iHHiubfvWsnGprfMzdnB"), .value = IOV("cDyaYRDHSmjsVYVymPSdZYhIhLxBfYbFmhjzolzoUPm"), }, + { .name = IOV("cBARNwFwfrGFWgnXJzy"), .value = IOV("bqsvgwoLtwtVEnzHcrvGWFfDJrLEticSOBpxaYsxKDARNpWLWisvYIfvKfppdlXqXoT"), }, + { .name = IOV("wLHoFwGKX"), .value = IOV("TSpmZiyFdBDUNFBbtQCiOGRXSjTIeTyDoZNYyPbjAicVEtPtpsBmisgw"), }, + { .name = IOV("HP"), .value = IOV("ylNpnxcYFVQVjaVDIMulBJphyENqIcVoYgJUMrDF"), }, + { .name = IOV("WiJFkjB"), .value = IOV("rySGkpzJOmUxNvZeSNBgPjugqCjHUczBaqteZEdXdDnrVDcKb"), }, + { .name = IOV("CeJiBvEPdIQmzp"), .value = IOV("XShWx"), }, + { .name = IOV("rSVfhbBN"), .value = IOV("flgeKVXUealtkXzrkeNbdmLBWeTmTmvvF"), }, + { .name = IOV("B"), .value = IOV("jUMVJKvzDOcePkZWPVdAZHwaKyKHkxdfZJZGzcFNtlyYkaqhKecvDIzGyEBoHvjUdVVdeaqMeDxQnZr"), }, + { .name = IOV("HRgw"), .value = IOV("rBEgzKCxiEXvsAAQXHTIWHCEpRQiTtjxbfekogavbCsCcCjjWUkbYQaCSNwvllvRhcNrbHeboYR"), }, + { .name = IOV("cIhLDKJfxTrIvbl"), .value = IOV("xUwWjgmimQQzOrtiqSVrsPSfcPWbuyvHGKXPnyn"), }, + { .name = IOV("bpUTOud"), .value = IOV("eOKrvUNvcprUkfCLmqQsQuBbRFwRbyPDHIQNLEARhuqFMUIPrDlxWbfqjqmgFiREvbJsXjapnSTBAXC"), }, + { .name = IOV("ZjrL"), .value = IOV("sApFIAhEbEuuTMZvAlWvpVkoMPMJVzcxbuXDQcmlFvqePkKbSQJAxrNZhkOhXZsFEfMdn"), }, + { .name = IOV("PeVee"), .value = IOV("tFyoAeNyxBwHpUZpgWBKAubLTicqKcnDQNlsxwtXQXl"), }, + { .name = IOV("QzrAfEgDufNc"), .value = IOV("imeDzqyXxxxEfgnOczYcacdrQBIeJkBfPFytrQICz"), }, + { .name = IOV("cxJ"), .value = IOV("SXjKAh"), }, + { .name = IOV("yTJWfCwbKFqUyLdrJJJf"), .value = IOV("BnypmvaotBgagumEvaRlliHuwnJrzMYfzSPxorO"), }, + { .name = IOV("ygWdltvfV"), .value = IOV("ysTfFMFyqQRsDVNwbqQRiWKpppjROCjHefCBV"), }, + { .name = IOV("oObEYtfblHydvYzVr"), .value = IOV("lQiTRHiFmCitqpYmROMrdsQxYwYDvtAuYNfsOpQXuSoLAbOHncqHSTxOVlqkjTQDQi"), }, + { .name = IOV("qMTSOqvif"), .value = IOV("lkbBUVDMKvrPZhWdppQEXJoxJxwOoVCBJgUEVucmaqSPIJqGqsFpxEdLsDji"), }, + { .name = IOV("DYuSDbVRRclCtDu"), .value = IOV("zdfoavCKPAIMnjLXHRcvHsrdUSRnGhCuseAFhwopivNZTHNsmSNloVIxwsXA"), }, + { .name = IOV("qsluZlNXkWHCDePqd"), .value = IOV("MEpahDNEQrNFaSIJiYbnjEVAxyQsEBoHJKuErRjwYTyDkUyQzmXzeRutKrTQIlAZlqEAUyhDrbpC"), }, + { .name = IOV("Vl"), .value = IOV("uYDdVveMSHtwrrTi"), }, + { .name = IOV("bUupFqcBPiNyRBagyV"), .value = IOV("HXESyLERLbVoIxMoKmXIjMjsESmrgfTJfHYchmRQNzZVNzvuiCLROntDHqQPQnjzPK"), }, + { .name = IOV("NyguSZmTZPPuWxyCOCzp"), .value = IOV("zWEjjlizRHzotSHxZcdUYuUzVxYW"), }, + { .name = IOV("qBMDarOlrbVpLC"), .value = IOV("QsyyJigJjvHnISyEsZzrNquYBqdLxAISReiRxKcTAUxXZevVAgBCXtMXizIVCGeCRQympuMzSjiS"), }, + { .name = IOV("dHeyzAuQOq"), .value = IOV("ZPrhtJdIrKeJAUecqd"), }, + { .name = IOV("JkOSGjLTdIyyAqihnuWy"), .value = IOV("dQuzxYGsgAGnttWVtRZFpPUSecPJiOEyEfmZMVwYthLGqOKew"), }, + { .name = IOV("QWppaFToU"), .value = IOV("UJDmFVQjBvThFqnnfBCeDnfbFIKckjCFNOnoUcyfcEOISaiLGenegIliQrMvPMfd"), }, + { .name = IOV("UTXAJljLuiSkjxCMZTM"), .value = IOV("viWgbRoZfqLdpGfcCWpwYLfDgRUrNMyMaYacHQYzxYofDGKmzKDVN"), }, + { .name = IOV("TZBuyRNISQMFi"), .value = IOV("POkbPpYNncbFaApIryNIFOkboGqoRxNU"), }, + { .name = IOV("rTDqayaZcBZUDbRq"), .value = IOV("EavNiBuWuhAIgAFosJQUllOAtlRC"), }, + { .name = IOV("BREJBQSkHU"), .value = IOV("NrbRvKaxTcHKbvrwimBwCUIIUYesbxcB"), }, + { .name = IOV("QCnGJcXrifqXkynrY"), .value = IOV("ROBvygIFCIKoDNLxCZoHuYmPebiBQkfkNEqzHIoNIvDdjStHtDqFKcIjR"), }, + { .name = IOV("CkpjTSw"), .value = IOV("NLtY"), }, + { .name = IOV("hBolsjDPewAGHR"), .value = IOV("poAFtaGLhwYFqxJrLKdlyfbuQKwNrHRNwbHhadhHUPiwsWGrxqKvuDReyCdxovfzCwNugeHoWGqMXpA"), }, + { .name = IOV("EnkfrQeYnxxwkEZncF"), .value = IOV("kNgGjXejIoMqcyjMsweEp"), }, + { .name = IOV("z"), .value = IOV("YEaMTNRCxcnOnpo"), }, + { .name = IOV("Jmi"), .value = IOV("ofqZOSItGEWbWJyjjRGGHXsReVaiXAvTFcHWTYlNoHNkxUpqyvKOaKcdbZtRuGbBifqT"), }, + { .name = IOV("shkgUqsUwXxslNABXbBl"), .value = IOV("GsGDFwIS"), }, + { .name = IOV("Dtm"), .value = IOV("SduFQQR"), }, + { .name = IOV("SmEgqradpNRwAw"), .value = IOV("AOflZzHXPheThRfyevUeIYozqYIDXDjvwLHIxyWL"), }, + { .name = IOV("HrtHsbQdPckPRJ"), .value = IOV("TvNNxXmfhqHxxTZkzhHqoMzoQQjpJbOUWGWizPkvJTImlkBSTRDdoYemPE"), }, + { .name = IOV("JJJmiIXX"), .value = IOV("RrnmVVYUyYpEBXzNnhDdjJyxIMelzhzyTmDNsQJEyfrLkOGqCJhN"), }, + { .name = IOV("AkZGnGPt"), .value = IOV("scQFE"), }, + { .name = IOV("ZGeMJRiWgWl"), .value = IOV("ERnTUPtBKtVUlcaiOBZaxHSvwIoaVedfqVHeNgIMxXl"), }, + { .name = IOV("uQyaf"), .value = IOV("LoOoFDrUkkGUHxIgSR"), }, + { .name = IOV("vOXoeazJHojgESXxnQJ"), .value = IOV("mjYOiMSxmGLflOTRqDgAygMFhVHiIDOwTJbv"), }, + { .name = IOV("xydB"), .value = IOV("feIBzbWwxOXoHLjTohmOpyIQEKFQXYOvrWlBVuPgrXgUWvTOARr"), }, + { .name = IOV("mTgolhtW"), .value = IOV("tRpnF"), }, + { .name = IOV("nX"), .value = IOV("dLiFkdFzsbRcimVqToPFMzyuUamnmNdrhmeNHJElqhkLeSdreOwPKppqshIjNuqagbIezeTVfoiqdOQ"), }, + { .name = IOV("EnKrcjIRVSoDlaxvEGc"), .value = IOV("wwJ"), }, + { .name = IOV("cYUXWqZI"), .value = IOV("HytzwMinsrksgklXmQwbyPUjFXhiERfJBeOHnMaVjMffAGdKxbdJYZEqgfnePb"), }, + { .name = IOV("S"), .value = IOV("VQXrDscmUeGSIN"), }, + { .name = IOV("YQTAJvqJTGbMFt"), .value = IOV("oQXdKPpnFDHZRsdgofuLdXFUQlbwRxlKjzYSPsTNuYRhZtQMchhCSnGbihWjVvGsZtBYOkeu"), }, + { .name = IOV("XzHXYL"), .value = IOV("SypqUZNiQdOUgBbY"), }, + { .name = IOV("hIF"), .value = IOV("WsRXLcwBQAqHgEuTloZDYhvdiQKFZaujRCiPinjqQ"), }, + { .name = IOV("kc"), .value = IOV("wzxbUBcCKreosZCZQLIvyZidCXhOaVPAGkmuioajjdJNljThad"), }, + { .name = IOV("zoLHmx"), .value = IOV("YIWpSczACUWnWSuvSTE"), }, + { .name = IOV("FpKlVPkwHClXhSQ"), .value = IOV("tkHNvzaksREsIWVdWjEq"), }, + { .name = IOV("HzwjVBwITarTsKqo"), .value = IOV("SOAkUzMXQfhudZOAFUBXFSaOfUbzvVbuAVOkcwcFoHhDMTjPtj"), }, + { .name = IOV("SWiUxnqNDptMAcvB"), .value = IOV("jXEpddZKlc"), }, + { .name = IOV("RhqFnEhFFIIoDYbYj"), .value = IOV("CbkXjtovhYCTjFgIjNsWWmdPwoISoglJfrINxrbXgFvkrGeeXCHLyneMDZ"), }, + { .name = IOV("keeEnQikmyJVQu"), .value = IOV("cKKOVrELzjyIxyJmBlMmzqSAGKIVMzfixPqwneVekR"), }, + { .name = IOV("InDJJsR"), .value = IOV("wLOLIJsnuKLplJsKsSHmwVViXhzhYBYqHlkiJiSgsgjcTAqKTblip"), }, + { .name = IOV("wKKASrw"), .value = IOV("jgHIXQOTRwLzxgajNdqYUbNxgMTBEsfXkVzUIke"), }, + { .name = IOV("tiHsATaiiDSAtM"), .value = IOV("qWESANVdoNJbbs"), }, + { .name = IOV("SGoaTQJYZjEUF"), .value = IOV("AQvceACWMRTWvNAsKVSfBtSI"), }, + { .name = IOV("nsyXbBGnbQJgJKT"), .value = IOV("O"), }, + { .name = IOV("efWz"), .value = IOV("AzMuXGBdqomffqwKprWRoqJKXcQNyEFsmaFzHiWL"), }, + { .name = IOV("DwedPfp"), .value = IOV("hZJzDySmJWWJSBrIFNQBVmAjyvjsoOzSxdtAzjonFUjOgKtJQpukLVW"), }, + { .name = IOV("tnUBTeYSfP"), .value = IOV("ClKkSIejIuJftHgsKLdbJIlVvsKftKj"), }, + { .name = IOV("oXQ"), .value = IOV("ZEPhGRMTQNnLtiKXkPfdhV"), }, + { .name = IOV("ERhkei"), .value = IOV("hVPOVPvzpjCJTygAqoxXFFdAMPGdjmvuSMtnAMVafDKUGVBblSKZnzqibrPEexbwVnRnm"), }, + { .name = IOV("UHZDtRDDGxtsoWdkji"), .value = IOV("ljWvIbTgRjacndOiaeJShfenzudL"), }, + { .name = IOV("I"), .value = IOV("nami"), }, + { .name = IOV("gDWqqh"), .value = IOV("iSUgfdKAsaXHhOoKBIXZnWXrbl"), }, + { .name = IOV("QwUvIMhTdGa"), .value = IOV("cIWRdEZP"), }, + { .name = IOV("OpyBY"), .value = IOV("mmMHdiHNsXsyUKhGSDlmMRsxzctObIT"), }, + { .name = IOV("Cxpcj"), .value = IOV("JRSMcDqiTIwQZcnXqBaTezWZGAHedAiYRYlRvlctAsxMVovVXqbLgotignZJoyjDjeTFXsBJ"), }, + { .name = IOV("zeyyqmyujlJJsHoJVa"), .value = IOV("eBWeWrWQJKKRGpDffwsgvQwUvyVhxlBUjFLPNSYPXlsaecHmXOrKX"), }, + { .name = IOV("UvlFa"), .value = IOV("wnBYfHlorXlqaFYBulycqkXyNWIJpjMITcDzlg"), }, + { .name = IOV("wNtCDhlAnasUuLplA"), .value = IOV("CZZDYwdFZEAtQwTfpKVgFXRfbmZUBPlTlvWahxcCgMxxvBuCOUS"), }, + { .name = IOV("QrOGPmTagV"), .value = IOV("mDqosSVQzWIOItaFWzjyVMqrFCJqpkvMVoxWYzLhwuhmGMj"), }, + { .name = IOV("WolpAKlelXHb"), .value = IOV("xDFdlUGYccaSmZcllmRmzurlUczQzDDzEWxevwFeNlIwIHPmgwAYpjxezpPlZXvGlYuLubPfwT"), }, + { .name = IOV("aLlTF"), .value = IOV("mdJPRUNJBztOXRLDpeHzOPhVFUCfuLSLvMxnaZIhbfJTCVtxHENyStutFnRyI"), }, + { .name = IOV("UjENlXtmuPuHWbEw"), .value = IOV("MxrbgXUILZIziAUEjcefRsiPNKpzLaSbdgRXhNbxKg"), }, + { .name = IOV("BaRKQUwMaD"), .value = IOV("V"), }, + { .name = IOV("fxUVTvBUawBeUHRrzw"), .value = IOV("uEggUGJtQDuUSqkGADeTMScDXwVV"), }, + { .name = IOV("KRsqGKDOzITjvOfvLL"), .value = IOV("LbPvRGdrQVLsQkdRQGGlHwakPsMJzDvJctvqJPXCcVgxNEcMpjooaBzLQfkUsQVYRqFBQwlW"), }, + { .name = IOV("Mel"), .value = IOV("fHlcOdlrIjdmNtIQwsWHOZsSHETrqYshrwCTToddddkmsHMzirNVSwlBOWzoiEuPEzLGxbULCl"), }, + { .name = IOV("tfeJPItlrbqiLn"), .value = IOV("cgmdJcDk"), }, + { .name = IOV("axqELxRPPSnaPyRUKD"), .value = IOV("ARGdFudLfDzNqdeBBzgDBcHRXmqgGqOXiSZHuynHBA"), }, + { .name = IOV("LSKfrgEQGrVelTmx"), .value = IOV("JtLLdXdObyUivYUvqVxqTsweOTNEVMENdNLOuYyDKbfyEZ"), }, + { .name = IOV("gV"), .value = IOV("AzighmrnuDLvbiyrZqLcszetMxmtglaZlqxqIhnb"), }, + { .name = IOV("xHIRuvBHdrJvimnTgYU"), .value = IOV("XRwHwvpjWljcIZASwfeiteqbodiJOS"), }, + { .name = IOV("oGVMvcmJWSrOxqREur"), .value = IOV("rsFhCCtxGMetV"), }, + { .name = IOV("HFugyqSNZWPmvcIGGyo"), .value = IOV("nGgwwfAhDKoovyTgwxDQkfgeagrwSGdGHduzoh"), }, + { .name = IOV("TOozLlTOp"), .value = IOV("PIieVJc"), }, + { .name = IOV("BvxQsNYIC"), .value = IOV("sokxGfzpRkvHFsyuSeZAROoYvXoiDeAtJyuAHpUXNHmhCFFSAFxrqrdiJYbmHybabmt"), }, + { .name = IOV("BDivYxRX"), .value = IOV("TkLsobUohlBqTfghcAHJaPrgSnSPEFhpjMQJQQn"), }, + { .name = IOV("KU"), .value = IOV("RStseADroionkaAokkPxxcybctGQBsMb"), }, + { .name = IOV("pvj"), .value = IOV("rNYliByuQJUqObdYDMATqZkJGgXobbMgwlXaTZfMpXmBeVFSvLcLzIalgG"), }, + { .name = IOV("gHMHulm"), .value = IOV("qcN"), }, + { .name = IOV("OJY"), .value = IOV("ahTwxPsUiMVvasSyasSMHufnVbXPksKfQw"), }, + { .name = IOV("LfRMikoFysJQBlEOtLSU"), .value = IOV("CGqbGCivYggqFMbdfIagPdZzsLnLHSezujpYLpfVDNIX"), }, + { .name = IOV("CIwJcRgjPIRLPTWsNVJR"), .value = IOV("ABuiCGBfLIvQTHIUOiEEcefssaLhqGOctmF"), }, + { .name = IOV("tRESyLDUwtajIlm"), .value = IOV("vbGyUfIIxQygtXTpPWgKhWsMNwpZRXPAbROpphSypDNjxQQ"), }, + { .name = IOV("Y"), .value = IOV("OfbtqFWCwTmYHjhETWwNfAwcLdZmXSbKCHlbkNKttXfGeMH"), }, + { .name = IOV("lRkqecJeKS"), .value = IOV("fzmDeAcELH"), }, + { .name = IOV("uCwUNjwIudphOIv"), .value = IOV("dBIsiPCJkMBHewSUzIOtoxUATYXCpKcMzyDveMaUxDkJBAJNWDDvaMIpYZExwFulC"), }, + { .name = IOV("YpEjRcVqIEDF"), .value = IOV("JGgTCABryPxiEFrcpkCmeATZrhAAnwmsUDqGF"), }, + { .name = IOV("z"), .value = IOV("hKGxDgriSrZ"), }, + { .name = IOV("Fz"), .value = IOV("MMsaOtOyzXpXDctMnfBVdlJthMsVMeYBPcwkdGCJBHDyYrxLqYQThH"), }, + { .name = IOV("crDnqFtW"), .value = IOV("yXwUEZNHcaYBKAfREtFNVEeXcoSqijWAgBavvZoVthprZAQgaiCwRAdYUldsmsMNoSORKbJnlXPJ"), }, + { .name = IOV("YUXFzNHjQVASSeS"), .value = IOV("BHkYgXSffTAVHbbxFHrSBzlQVgnoYlwGeCpnPgkdOeyCqLaH"), }, + { .name = IOV("exHpn"), .value = IOV("bixITNuaOg"), }, + { .name = IOV("MnkXcEriPjpbZiTEf"), .value = IOV("FfHeZufCXxZRZwMywFnJFxiDWuBWluwRqWFRPCwSEsGMqiAIYyTezCsuIQXVutqCfohvUBAkrJkYY"), }, + { .name = IOV("YrorOMY"), .value = IOV("KDcLHjTIgOYpTBsmJxxJHsDHLyCrNVnOwfbpBlZPBGMqgqNqSCzkAbHWAgOPnmoHm"), }, + { .name = IOV("uqFfiRywTL"), .value = IOV("VgcUmtOJNGFDkBBjgJrTVRTXOtJpDoeSIPfHFyLxGxUqaRwRxuCWYuQtWH"), }, + { .name = IOV("BizInF"), .value = IOV("ctVWmnYPrtAUHYFtxNjUzwYaODSMsVmOCGgVJQNjH"), }, + { .name = IOV("OnSlNuLgNkn"), .value = IOV("EFChbJsxElnGVoOYnBSpYDUhgrzENrNS"), }, + { .name = IOV("GmXYEJJ"), .value = IOV("IGgc"), }, + { .name = IOV("U"), .value = IOV("VGZUCDJjZtriUYZUahKdQgqQkYkKBovZSjVdKbnlkOwmjSRWJksxowLjHzTFeWihsDKsLOe"), }, + { .name = IOV("yZ"), .value = IOV("EeTwRtEqtjnzrAzNWiVTNXlmYswPJkn"), }, + { .name = IOV("thPymWSfx"), .value = IOV("jvimFRzFhGbKUtrBFSXRNRyHKBM"), }, + { .name = IOV("tzHzVLZwr"), .value = IOV("TJYwbStgemHoMJZOHtLdRpMaKHjwqMcToNyReOgGWNoFeKUG"), }, + { .name = IOV("Ye"), .value = IOV("UEKrkbwMgETlBscGXvtgOJTZrcBkVuSmOQVrqyOpZskdSScxnKeAKyFFRtnpvJBjpyfnNUwsYkliPIG"), }, + { .name = IOV("OFguMmWssCgShQ"), .value = IOV("aBHoPZOCkUEKCbXEcCgRcrjQEcRRXmyYLItHosaAcNxiniLCNbrrEqe"), }, + { .name = IOV("kuXxyvuwVCyWlZmji"), .value = IOV("BI"), }, + { .name = IOV("NagRWUoUyFGEsCnGvls"), .value = IOV("UnbsOoAKuRbcHHMPxTWggfTPzinuARICdWlf"), }, + { .name = IOV("hBMDYbENjzVYFphL"), .value = IOV("EvqyJSwmxFNRwknOzWyTpVbsdsldyihtjmcsjPla"), }, + { .name = IOV("gwcgNvAwUogWiDcOXi"), .value = IOV("ZIhfOMgnEoqihkNZjzPhsmfNtIrDDSYjDdirWTkmAvvKUXmdeiRBvVaHahGDQpZQBfgXwkuOLYSNz"), }, + { .name = IOV("tNpwfRJOfHvxbSZsY"), .value = IOV("wsrdBeoShINCvNUvmIUBLYK"), }, + { .name = IOV("hdNJePlyp"), .value = IOV("DlkiC"), }, + { .name = IOV("ETgbPdtfScwBDCaO"), .value = IOV("KhcPzfXjnEDWPplACjNXYygGRMxtZfUOgmUykbykjFpwaZPuAhryxPihxjSuBzqnQo"), }, + { .name = IOV("WfPvw"), .value = IOV("XgalcejRNlKsYNgijuYxxHsWWUPtAzbkHaLDikzL"), }, + { .name = IOV("QrbgxL"), .value = IOV("nFoRxmhykrudZ"), }, + { .name = IOV("cs"), .value = IOV("VpanIHw"), }, + { .name = IOV("SVbKpmuBxLRTAp"), .value = IOV("BtqMRxaahUQVaSFNQVOSsAraZQZQQciGzQOkPhyYFZaEkRxhxOcaoABRqmits"), }, + { .name = IOV("xQDrVmnouQNGnBL"), .value = IOV("XhLMsmRofgeBpPWjYFXduTawFvItiQqwGCDaeXStuqFIjyscOJfACrJxttXxI"), }, + { .name = IOV("XXPTa"), .value = IOV("KEEnCpgGudrCJzLpvQHQNEbydLrWhigEZNhTpfFtMpbgdyApiTki"), }, + { .name = IOV("a"), .value = IOV("TzswZVZfXnrNEHvNrCfCZJJQvFkStrMDNdJykVVWslhQctFGq"), }, + { .name = IOV("mf"), .value = IOV("VIEOfCyGbdznLJsjdkn"), }, + { .name = IOV("NHnKvhKXmZkHRN"), .value = IOV("uPXEoTBA"), }, + { .name = IOV("MVINPLxiNiFGm"), .value = IOV("CfxWAkzXguMJKEBTeKXVawNHEmEahdycExYqlHRUF"), }, + { .name = IOV("DDevuCCTnDKVOJe"), .value = IOV("SJCwlQEttNxzpHkszhJitBZZlzWiUGxolfqKOQyg"), }, + { .name = IOV("nXKBfgSaA"), .value = IOV("ccwBDsIhixaoEanounftGktnORIFXcbhaTlABygLHMyfxNtwkjhwstiuvBKiGTSEZOsY"), }, + { .name = IOV("GnpoljNnZDsDEiePMB"), .value = IOV("MBMojCquAJCXKCDytTzYDDfaBdWRBRebLHCA"), }, + { .name = IOV("ShdBSlGZvgQkwD"), .value = IOV("wHUStTJBXMkowSWoIleeAesMthxtUttVImuoAQjqDgFXiDyNSOyJhzYFrvwfnlQJ"), }, + { .name = IOV("VqogZ"), .value = IOV("aVtVuUPsMMjNtXuUMHjIBHtH"), }, + { .name = IOV("AnQVvYTdfbLNGEzrSWg"), .value = IOV("hNbXbefRHkZBGBMIvnSmPBEcbzlrPxJnfElTYw"), }, + { .name = IOV("uIBffqdxTgHVDXg"), .value = IOV("sVMjNifwhMbAnbe"), }, + { .name = IOV("nLqXucRiGUpoCioEUhXM"), .value = IOV("ZoXeSuUbopDZARZDalgyDCsJnYOpfyNQpgycrNxOR"), }, + { .name = IOV("lQgI"), .value = IOV("SWtEWDHYdy"), }, + { .name = IOV("FZjRzcKxDk"), .value = IOV("tPfIZxOQtbfeXEXaTJcINMFdmbclEIHqzTkpdCTMUoMoLVykv"), }, + { .name = IOV("JfjjbMFdtrjLk"), .value = IOV("snvcLknEjkJltCzmtGoVIGqX"), }, + { .name = IOV("hIrDAusFfYKpfTqbAcRX"), .value = IOV("uBbDuQLnCPjCpzzUmWoFopxNo"), }, + { .name = IOV("zrTAxbMiOpVtnm"), .value = IOV("YOgHDvavuYnMPirCnlMtQtgDGh"), }, + { .name = IOV("bNDRqiKPEsOi"), .value = IOV("WXEVwEPhfYqqfYNfbkThdPiTffezsEvfgxBcaBcqpiZnGpsnWsYVgwHhrLpUxJJIHtyxiiN"), }, + { .name = IOV("IQDHCL"), .value = IOV("kDFtAbpuAkWdiwcBjJNNOnfNScPUlQKCPKHTchdcSUJEKDAoitgdwKid"), }, + { .name = IOV("NwkxeFtUcBQRcANpvwMX"), .value = IOV("ltwQpFgfUFMT"), }, + { .name = IOV("lfLvpRUX"), .value = IOV("qZDjmruNwxoMGngisQbDRkiKDqFboZJCo"), }, + { .name = IOV("VmeANv"), .value = IOV("MdylIJfpArFioLJmRRuHSVdywkekwCmVrezlGxixZGrKjsqnRI"), }, + { .name = IOV("XXbttZtvMjHjI"), .value = IOV("ymmISbIWjcnblO"), }, + { .name = IOV("raSixyHn"), .value = IOV("IKuQwfDclsiHLZZekBIHBwGCYTwSbJBsFQXZHTSYUIxRsnUqPeW"), }, + { .name = IOV("BBfemFCIgaU"), .value = IOV("pjzEnUradOMasmvbSMLwgh"), }, + { .name = IOV("ooiXk"), .value = IOV("rYKSrYtRMgispqgYIxEEDRrQQdZzxVZJlW"), }, + { .name = IOV("HRtVEfPfyMguCgVZrZT"), .value = IOV("DwaByKiWKeZwIAUPoIkZEwqlydsoLgHilVTuOkqGDgmlkZgrRNn"), }, + { .name = IOV("gYuumoklqenme"), .value = IOV("hXYcZKIOrMs"), }, + { .name = IOV("seeqFxBGtMChxdDCRv"), .value = IOV("lFxwHdbtsLcAiDLhlyjZIi"), }, + { .name = IOV("oSpzjKFGbGaodwiv"), .value = IOV("KRSXTcroBUgGWbMeXgPvwZOhglbZZGNFYaDszjvgEQYmrdJCrgr"), }, + { .name = IOV("zEXWQHY"), .value = IOV("FguaCueuIXAqbCuEOnKN"), }, + { .name = IOV("gXSHBKmLPalDd"), .value = IOV("MgCFotrZSwixmxLWzlgiAZnPNZuhIQCeVJfkrDkKSKJWKltHTBVXYJLFJQmGriAVnWXAyi"), }, + { .name = IOV("evGMAggkCCGJ"), .value = IOV("RUooXUxczZcedzKZVCwERGglLTCTtuNuROyJfukdCKvoIAByGtJmANyBlteAU"), }, + { .name = IOV("qowThboUsMms"), .value = IOV("shhnhaaULLVfhxxXS"), }, + { .name = IOV("hsiISRPNU"), .value = IOV("iNoiGTscVtfaQcgjibundexEQlg"), }, + { .name = IOV("CfgYDNidcF"), .value = IOV("cnGSVRfjxRIOcGaBxYrrGpYdoEEJpKYVRoLDaLFvPagizvTzpojl"), }, + { .name = IOV("RGTrqigbHM"), .value = IOV("NqwKCtxbcEqYayFtCjiwDieuVQtZd"), }, + { .name = IOV("sdVPkdeYkzd"), .value = IOV("CnAHfSzyBoQKartxMhWoRTWhQAAphaDfVQBYwEIGTxWDXloQJWKGPOpsYICxXctWLVIcVAdoIk"), }, + { .name = IOV("hoMVImLaNtEq"), .value = IOV("WnvhNKqdmCIeIUJUpzqbcDqQenXIkwmMdrhvPrEOqqbUhqaDmyS"), }, + { .name = IOV("IGCUiPKqOhmhgj"), .value = IOV("oIcGPrMgJbGHTvazglbgqgFUbPqSETWvAVoHRklREgxdfUBLfOEfUnYzzWRJzHGKyM"), }, + { .name = IOV("qC"), .value = IOV("AOkIVxsV"), }, + { .name = IOV("kukbxCwUZnfHJZwFvJf"), .value = IOV("ZXTLYSCaCZXITvZhRrdSrPCcnvunQKxCxBeXnHfSQbpcIHQzRCPsYTueisNpJvLBUA"), }, + { .name = IOV("UyIWvaFPbgNJueFVwp"), .value = IOV("YvGXlmzhiryRFRdLKcEEbDgdoSqVR"), }, + { .name = IOV("ICGRXGMLXnC"), .value = IOV("tBPtHYOjNElTZLquYPhtiUk"), }, + { .name = IOV("KoAmCF"), .value = IOV("GgKnFJrgrjeaYh"), }, + { .name = IOV("id"), .value = IOV("TYCUIiIcyDCtIPxLcdtoPVdnHVkERygnfYTertGctGgSJOCdRLwgnkXpJohGaFztjnpT"), }, + { .name = IOV("EtGXUNyaYXJz"), .value = IOV("cvCLWgcspjQHrBJMjdEJCHljJomSdurOQDfbFYBXIahRQIyXrANbqgZDAybWRH"), }, + { .name = IOV("rfINemXYLnvcC"), .value = IOV("hrkaLZGSkbTiSPEfykSiwDliKSBwbXqaRcjsSJiGnBRfXuuyeFYGUhUS"), }, + { .name = IOV("hyoNkPeyV"), .value = IOV("iaiBhQdZWLgOTpedPAMBqeumDJNYXjfcVDOEKnlqdZYGbByqwiKYeicUoSEGvU"), }, + { .name = IOV("YlBsXBDUfDMfARotf"), .value = IOV("xZHIvgQxAHJbqTMxSuNbEhFqEFoGQDKiQZQIqRIxd"), }, + { .name = IOV("iRnXSfXGlPlSXyLh"), .value = IOV("XLaYaBMqXLcxbdvuJxmiCQcrvfDmAZfwOjQJiXqtCvjwPgaEzkhmjlBMZhcnRhLIbqT"), }, + { .name = IOV("CQFDbvaCIeByWDFzXaGu"), .value = IOV("aBaubQhktJlditlQQUcVlOpdeGjzKRztfxXfvoiQQFtogOyuOgx"), }, + { .name = IOV("zzjaMM"), .value = IOV("UXZdMKxABGDeOVKJvKojfBFQCLGSHhvGPemOP"), }, + { .name = IOV("XARtJpMe"), .value = IOV("mFgLGNIsFFCbEnQzUQLjmsnlUjKVuOMVhribsmTaqvxGCdRGMnyDHum"), }, + { .name = IOV("FGhPi"), .value = IOV("GFfcrgDKzAgEIShyLXyYJAZ"), }, + { .name = IOV("nTyhvW"), .value = IOV("sYWZLtXoiNxBgsgnANdHcWZAMpVjIXdXZaqICDhYCCnFmLmNULuPnpkLhMgbPjyFrfWLCsG"), }, + { .name = IOV("UHfvvKa"), .value = IOV("k"), }, + { .name = IOV("qxnjMQn"), .value = IOV("JyGnfZDEaJyLZhGWfjFYfbZqxbzPxiFXhqyWcggjcXtPRyCCL"), }, + { .name = IOV("K"), .value = IOV("tIbDSKoLJqnokivatVAKemOtKXryViQmZrjxnxtqAfpZvTIkdRbAaP"), }, + { .name = IOV("dmSnB"), .value = IOV("xCQiUNwibBrzXKlszAHTZhcSeBvaRtBTZspcWsSfWTgWITf"), }, + { .name = IOV("C"), .value = IOV("DGWJtdqEFURiegJcAMukbLAjlcnGzbUGKAXFFYsBfGhptHyNNytVylLDecFrmBqMJNUOnZyOZYHa"), }, + { .name = IOV("FJzyuStcftornkPoBT"), .value = IOV("qwGkRkBoiFLmEJnvadZVqSqAFPXFaCKURvcjbDbDoZVIRapY"), }, + { .name = IOV("uJjINSdmmCxIT"), .value = IOV("aUFHcjyBkvgLYScAHAhUxuBUlAKXsZUDINxGXEgXTidJLF"), }, + { .name = IOV("ioJeihcKwbiIlMPJS"), .value = IOV("cADVMcmYstGkTiTekEXveIISsdfirNjSLoPdJzYSkpbdfnikYBHChMbcPbxSDlb"), }, + { .name = IOV("neqkbju"), .value = IOV("iQJaJdNpslluCsFTeHGMydRSQpjYbbptdDxYclWXlXgycVJOYqBhyzPiRUHV"), }, + { .name = IOV("qj"), .value = IOV("aCsIeMKDBvAOBxF"), }, + { .name = IOV("leEmounAbyKDd"), .value = IOV("QqKJFzzkHHIfpNCUypUvAeHzqAHUhhjPwktgkKtOgdPZlowQzufP"), }, + { .name = IOV("iugO"), .value = IOV("BfsbfBmIfFmhNIFKzVCxonxwWwPuCdmmaXebmguXUsXevtqfrkCDAYLRWLcfZdF"), }, + { .name = IOV("SGZfNOsbg"), .value = IOV("vMAAeCYUecmTEdOUOmwQITrfNrXHWmnJROLsETcoHktPaiznzsxgeYTPMJNHUNjF"), }, + { .name = IOV("cTFaxcAkvxGrkYsipn"), .value = IOV("GBjVQVhbAcyyfDdHQhJQxQSLrjUsIUuqZzyLqgsetexhQXbhB"), }, + { .name = IOV("gztIifVTTJsfe"), .value = IOV("InShiplZBTpOUZlWcyZRrAWUmgYHaDa"), }, + { .name = IOV("rkLiF"), .value = IOV("TyGuINSzonTBLgKaUDUIEymckQKBtuOGSFPaZqoHRBDyrMsDbRmZBJqJ"), }, + { .name = IOV("CsONvgLH"), .value = IOV("lymigrVkynEYgLxSIFFjamVDqfGpmLbOitnJ"), }, + { .name = IOV("ODdzqNCuBnIba"), .value = IOV("AhwukgikiTiVaNoysRlGRlhgEzVKlRVveZJDnbYVLgveZvryIdPCrdtSAyF"), }, + { .name = IOV("CzfuvvEWQZv"), .value = IOV("KQE"), }, + { .name = IOV("QyLWSNw"), .value = IOV("TMGEaYGYFHsAtdcERYKzpQosrCbjfANedKIwTkEUFWFVPuzGmzuaHQcrjukgmMmvjgfPYlyL"), }, + { .name = IOV("ZGUSvYWQYFrD"), .value = IOV("qLJiJOPAkJJHREfpdyysTjMLUNlHEwoToGjqlqZXvTpiRK"), }, + { .name = IOV("ZSzVWhhfYVJVq"), .value = IOV("IKQmGodtzHJRmaoYFimdIcGFRkPAGSELixXakKjiIiiIMnAk"), }, + { .name = IOV("EmvdJ"), .value = IOV("CLrgYQRJlJnJNqvsXFhpsQnmGIsYf"), }, + { .name = IOV("LEM"), .value = IOV("YBzsLbGtFBSSAriBYhxeCwgArDExXIPkPCVrcosVrLjlxxnWebtoBeQW"), }, + { .name = IOV("EUbf"), .value = IOV("gOFeeQYNLKUCBHVhFRnCVcvBUkJQImFTWRGteUBygSzdqLeGBCAeNoTnAhrACyBlq"), }, + { .name = IOV("fM"), .value = IOV("hEQgoGGwKFImadkMWvSactHQAHgpDEkhrSOyvIJCbRGdLUAfEqpgsqFy"), }, + { .name = IOV("kEIwbtFMGfg"), .value = IOV("TvrwRszavAtDjpBUjZB"), }, + { .name = IOV("SzPkOk"), .value = IOV("RcXVrsQnzLGqgF"), }, + { .name = IOV("BqovVPeDGXUrbpOb"), .value = IOV("FIELIzosLKjZGwkuUxgvJVdqCxtPmjJVfZAQUnVuYt"), }, + { .name = IOV("vFDJHxGCM"), .value = IOV("BhhfxebsgHJYzROAimlCURzlIjfTrQvUSsLIVeJecvdNTLVTXErCmRcPuScPmVzQCsrAdYy"), }, + { .name = IOV("tnBzpUGWdMSyxPw"), .value = IOV("FRACPhSlDSGznjRxaDicjKfJfWbBb"), }, + { .name = IOV("gkmwrsjFV"), .value = IOV("uaWbAYkJAEfVEWbzROEGZnjpEtvwECboPBSlYAjYgxxK"), }, + { .name = IOV("BRDcqEzvrayBLEc"), .value = IOV("xvGTJIoXHuWbvxEcldQOplfXKWJSHPheLCWOeShXJqLKMflWBQHfSFozPXuBBWGKnRFMjC"), }, + { .name = IOV("XMylspf"), .value = IOV("vcMoNojBqMgNPXBjKtiC"), }, + { .name = IOV("WVxvguSCMjAQE"), .value = IOV("gceKJgTRkCizlSOvfXzHWEQMQAwyONFPCmtCSxwOWHtkfswHFlhrPokHNzHaYqTrnwHTw"), }, + { .name = IOV("erMLKd"), .value = IOV("oaZGWpUeoOoDcEZqkMxKTFJVnJeVmeqVopeKXGawmhkiuaHLpgsqmfsRwVvTPyEpuhzbmx"), }, + { .name = IOV("OZnitnHZ"), .value = IOV("xzWLtbmGzraccjHEavrAkenIPdRHGEKwbfgJXyOuBhoEHBSnWufLtVHYcDKVyr"), }, + { .name = IOV("YPCoKHuKtyhWHAVZ"), .value = IOV("KkLpHvRJaVSTilTvhkNItojwrltFpRjsTSDkUQBYcXXpanvFeCLVyEquEYKmeXGZHdayeQqxLsN"), }, + { .name = IOV("arbnTTNHSeiVXovi"), .value = IOV("BMxzPNOPRWPFKjAUtGGyUykJBVHlpUPXRpNbLKzsqCqbGsYiNIxafBdASQQpmy"), }, + { .name = IOV("C"), .value = IOV("ZnUfFDhMeeyCljaIbTSNbxApSqpEyakF"), }, + { .name = IOV("ZRvWIyyWVJkTtNbbz"), .value = IOV("WHaWeidEnxHJsGeFWhMQrXbGCxzlyJMZCPuGU"), }, + { .name = IOV("oWCsJQedUUHYVonr"), .value = IOV("iEfNwPGEKvtlSzkRgVkbhhXRwOTdNyVHNDguHQiGWnysACMecXJqFpUyRhPVFDyvIagi"), }, + { .name = IOV("xgBP"), .value = IOV("bMlyxgdxWPBaqmJDpHlzJqliSihGRTuLx"), }, + { .name = IOV("lcpVCiuuHe"), .value = IOV("TxdpfJqMAL"), }, + { .name = IOV("ByslMM"), .value = IOV("TcApvnrazVAKHWsFkVUvLzEYvtjhzDIAgCvVlkFdbFBNQYtVXg"), }, + { .name = IOV("xC"), .value = IOV("qNsLiAyDRtHrZkBqHgfNfqeTnTojNuwAdWmDZEwvxTORXUfgvkvMHbkYOmGEVaRiarnRv"), }, + { .name = IOV("CApmJiJQGMrr"), .value = IOV("TJNRrfKYVqfTBSBWHAmgOtGhSmeUGwqUAzKMyQPKiQaxf"), }, + { .name = IOV("IHYNMnkfdKImuC"), .value = IOV("NNQexthjmRpUxOHUWCON"), }, + { .name = IOV("nNjagZcmylCUMs"), .value = IOV("OrtZxfNUeFVF"), }, + { .name = IOV("OhGnWVJfgMlqclBFKF"), .value = IOV("XUFKRcGKTApIXgjGeyiKkdDioIkdspsSzBPFwQcJjLkuGuzgfKDXjOPnvVZfXaTnzhXIBMoQtkkbqe"), }, + { .name = IOV("iwHbHEcLTxWjBpzwz"), .value = IOV("qrCnenheXERCKKIqOIDPqGqCrXWPuvUYbhBwTEYqAGcuCnmsGmskrVHP"), }, + { .name = IOV("ZTdTAsLihlZGCYjVffF"), .value = IOV("VhHderl"), }, + { .name = IOV("sRowMDVkd"), .value = IOV("JHLYrhbMutgyaJxXKBzMPABRukdblkbOADNVOtoaeLdSx"), }, + { .name = IOV("pJrYnGwnnVejpPk"), .value = IOV("RZKQoLnpNvGyecoL"), }, + { .name = IOV("EjFvHyOYYnbVQgoOzFHb"), .value = IOV("jTRZOwJajsjEiNDWRMRFvriIuvXOmOwBjVqdGkGQEwmCQssxBKXlCYHGYN"), }, + { .name = IOV("GN"), .value = IOV("lTqijackgLAnCVbJlaOnInaEtgxuzOxcNxVjAVfLIVRyQTSHmYvbECWDuaPoCKR"), }, + { .name = IOV("aQCGHYPMMJZDuVuH"), .value = IOV("TfqFfCw"), }, + { .name = IOV("fnxvoOi"), .value = IOV("qygKWDprtbtsdvgQw"), }, + { .name = IOV("Wbft"), .value = IOV("WwotsE"), }, + { .name = IOV("trwFlLNIqZFqZDM"), .value = IOV("tuHjMtfyTAiSeTXQcyGAZmIuWAvXAzhgapiGYsELHLRLBGeZvBtGvqPOrOpMOhMJGHvjljFEKgxUVV"), }, + { .name = IOV("InxcWlsamKOnvgTLL"), .value = IOV("EpXsgRVLZbjJwnThndyIwTUNmBkOsEqplEEVHPVxjMUbrdTeRLxRspyBgz"), }, + { .name = IOV("VSkhnNgCypuCVZ"), .value = IOV("weiLiQFBKmqxmjiRnJCfXFQKRiWF"), }, + { .name = IOV("RVWwjVwFJQJBoxhhgKE"), .value = IOV("gXmvfZJMcUONnYSUuzTjzFpfbqFXZSi"), }, + { .name = IOV("bLwYCskNjHWLSyKEKS"), .value = IOV("bPXoOlVjLfKVNhSoRjnWe"), }, + { .name = IOV("cbgHJ"), .value = IOV("ghqCmKMIjVWDtbmjCsMETsHubkgEUqvjWvDMkpqRFcqzAY"), }, + { .name = IOV("sLXzFJgXt"), .value = IOV("omMyKsTomgMdRfsUeJytcOlJVCrXaCuflZD"), }, + { .name = IOV("jTjDl"), .value = IOV("njFZIPezsVSvXkIQRNWvRuBjBK"), }, + { .name = IOV("zYVBOR"), .value = IOV("IxwTzilcxKHLaTUokgqtNJfYpDFJUGHOviYcwKkhVTFsa"), }, + { .name = IOV("SPgKnPzzWClhtQeCfgK"), .value = IOV("uNMuNBnArYxCFaBgC"), }, + { .name = IOV("fdxBmZFkjFKbxKEGU"), .value = IOV("TpTEcPiMmItantgETGyBVDuqfoBHGMZwGhtKCsqYGPibeLBVYJAcUBmUBWbMCRswMAUNTzjWpmeBE"), }, + { .name = IOV("dSiBGDaCdzhMRaAtjCO"), .value = IOV("ZNYIawDWDbVWtsCAOThfXRSzmspzmaVEKitFqSKlUUqizFTedahBvbOJSTQstxz"), }, + { .name = IOV("qXVrOrOrmQJ"), .value = IOV("svxJVdQZaNTvXnoNgWZGUwwhRnnsSATyQr"), }, + { .name = IOV("bOBlECvpYOSyMtSyaK"), .value = IOV("iWckrtvooxyltsVUziBfFW"), }, + { .name = IOV("hNtARcH"), .value = IOV("PHCftamSGgnZrcCQqGYwJQYnJWFvWZauIoswzNusXNhgLqNIvUlagac"), }, + { .name = IOV("XqGS"), .value = IOV("JXvMRSQcmtDjhoNtRBzqzSKAdbsSuVSOTaXphIplppfsazNCegMxMmJsueRzsWCLzxjoHUJsLzT"), }, + { .name = IOV("jLYVGiRPezIiTRPdcFt"), .value = IOV("eDFqZGgEWJNbXOJifUzTWEZoiOtphc"), }, + { .name = IOV("BDOk"), .value = IOV("CPfkmcjQVrJILvMLKdlkhhiNxFXrcRLAbZDbjaPCAKiqygqkPlnmLzdqdzhrmhxMXQtwr"), }, + { .name = IOV("LdSwBchMsIJgDRZFwaDe"), .value = IOV("VAjszlmcDszvlTGNGkniuPgNHK"), }, + { .name = IOV("wPkystgKsHpQc"), .value = IOV("pMCkpUK"), }, + { .name = IOV("FBySURZAOLTWtoYoBQHv"), .value = IOV("TNb"), }, + { .name = IOV("iiYVXA"), .value = IOV("QXvNtYWuswyvlptkmeA"), }, + { .name = IOV("WzIwKKKikuMmhKsAFnX"), .value = IOV("dRRIXRAZfZouzKROgGTzfGUrdqRwciVCoRqqXlxtvWD"), }, + { .name = IOV("r"), .value = IOV("YmDATVLWaiicQqMLIfpCVxzGiubNSGdDMwEcPT"), }, + { .name = IOV("F"), .value = IOV("PbuWONWmprPkbfmhizVVCzPrjQZbvhItKNYknzxgi"), }, + { .name = IOV("DDgSckPnOx"), .value = IOV("mjbhiNUoadmGsNymCRTdVMUdqlnmnUSEnkBxCegBzMIPyXmISUbvhyyZhUNREvUkF"), }, + { .name = IOV("SWbHY"), .value = IOV("vfMuODourAwankrIcG"), }, + { .name = IOV("b"), .value = IOV("TZAIxYhKmoCRNzMsmMLvWfdkpUEzBhhWvvGGUaYoELPrmGNaFohgCKJnWRhb"), }, + { .name = IOV("ujHFoQTmjkUsa"), .value = IOV("BvBfzRD"), }, + { .name = IOV("jvknbzyWpdRczTsg"), .value = IOV("tJmilsHEZcO"), }, + { .name = IOV("OuqMuXrZxveQd"), .value = IOV("beWpimZosQjLsUDgiEVFXnyOPgJxPtgBcngsJfPROvMCnUSpHBldMpCekIoPQkIfmiAOxkGC"), }, + { .name = IOV("glTYxnLYGWe"), .value = IOV("DqtZJlOGF"), }, + { .name = IOV("dIpa"), .value = IOV("ySwoCrhPmuLiBpjfDuOCLFmUkHLRtoPbIzcLjIMwOFqRdOomVUOHJXsSkfTfHkoM"), }, + { .name = IOV("YmXKWXnnHX"), .value = IOV("KfqJqTAjxt"), }, + { .name = IOV("nHOwPlDGSqDxcIMoDQ"), .value = IOV("ieskCyyRDvosFopnzndSrkIPoNHOTrFNFBb"), }, + { .name = IOV("HZuuORdSmeesil"), .value = IOV("KYvlwqulCjHOuRodseMKMrkRsLXYKyRXbbcjImxJMTlWtSFC"), }, + { .name = IOV("wbEZBeLgTXBtWE"), .value = IOV("sK"), }, + { .name = IOV("GiCsi"), .value = IOV("DyLJqNMboBzamVqnmwDZBqavwwdxRsWqeqpqlutdKWnVCoBTCLzAplTgIfqugPiReeJHkefVvfLx"), }, + { .name = IOV("fmqvPzFKdTTHKfHiGH"), .value = IOV("tRrlRxTiTxmQXasjRdUbikvSDJfPMOgbkBspFBocVjNikdVKSHmCqmBKL"), }, + { .name = IOV("uxJnv"), .value = IOV("ZyVdbJbtB"), }, + { .name = IOV("aU"), .value = IOV("CAwTFDqplniaJgMYRCbtBulhOouUQdyblLQOZdQzATdEbQJdvLnvSLyzQgJVhMj"), }, + { .name = IOV("VHgjVWQv"), .value = IOV("bxJPcpdxLWhqqsmXTRbFhfwMlrNLWafHBNIVNZEHHrAmtbOUHgFfdP"), }, + { .name = IOV("REqHwUPC"), .value = IOV("MsWTGAYJAYtdJjIKCm"), }, + { .name = IOV("LPNukLUclItT"), .value = IOV("VirqCnHzb"), }, + { .name = IOV("pKhTft"), .value = IOV("EGC"), }, + { .name = IOV("MLE"), .value = IOV("xAfYsuperwkWjPdbXPpvZ"), }, + { .name = IOV("NYJzgVDs"), .value = IOV("AtWgywdtSxfoUZludoiriTiXSPWxdkEaBOltvnvATxngbgCIGbRGyxBVCAbxVDYxaoET"), }, + { .name = IOV("hh"), .value = IOV("fgJItWuQuxAEKoIDcJcOVjCrhI"), }, + { .name = IOV("uuYYNAfXOEhqlMCUMBOl"), .value = IOV("kqAvXLrTWMdCiyIxjIsKwmAinCkYIJqngRenrzCEBlWIvLBokvNYYWMnI"), }, + { .name = IOV("phxQ"), .value = IOV("cufwWrNYbwDbfXaOlBBGGDKIWrKrVgENtMsPwdqRKdjXtjNfVINVUJAmUDHIXbgkfqgJrdnoIrnClb"), }, + { .name = IOV("WNv"), .value = IOV("fMQrkkyLEwsynwsTjVudc"), }, + { .name = IOV("ZMagBPQcKgu"), .value = IOV("SXYTplxLPLvouUxJySbjpHFjgEVCn"), }, + { .name = IOV("EyhMqQpkHHePuX"), .value = IOV("PbYbXPNuStsowwRzYeahxQwkVygQxeCShXUpFctaKCtepHSgd"), }, + { .name = IOV("fllLmOdrkUCr"), .value = IOV("RUXqbYnkYnXYqDHPnsdncBvScTzGBIGmVTylPvV"), }, + { .name = IOV("HaKa"), .value = IOV("ktXfNDjMcrqVZgQCOEkVdBhjUkmuIJjUqdDXjNVnXIwSSrlRmXxXTLTiOhVygYDLy"), }, + { .name = IOV("bxtVsXjLkqfg"), .value = IOV("TYMWYsOuA"), }, + { .name = IOV("HxvXHiYSyakmKmW"), .value = IOV("DtTaQeLgFRfqvXkQ"), }, + { .name = IOV("oXiRyTKHt"), .value = IOV("aXHGcheNituWpPStpOtbjazzWUbKWrZuLkggxijNVH"), }, + { .name = IOV("gZAYIbFjwqooQE"), .value = IOV("lSvlsebQvUkZXUE"), }, + { .name = IOV("ZH"), .value = IOV("WjZtJxTNszVkgXxPdFEWwEMdQngNNYpeYnKUWzg"), }, + { .name = IOV("JWuuOdmHYJUNortrxle"), .value = IOV("FRdEtWpSTkAJSwUvGkkbeYMzIJbNPFoVUYJgFflRHteAhAQGaSoPTWGZIeDemPyPiIAxrZRRuFp"), }, + { .name = IOV("XkVciXI"), .value = IOV("qrjuxSGfXakHnxdp"), }, + { .name = IOV("PVugWG"), .value = IOV("SlLsteujQzOkGSlsfTJUOsGyguOzIIoRFyywfAYpukhaApMPOkQjKZktWlOWZPiSDEZbJ"), }, + { .name = IOV("SoQwCrjdISmAiv"), .value = IOV("ZUnKcUHuimWFCHBskGvEiHCkYkiIFvSUmXYFYHvSiiHnBbVgfrycNlnLZfnnoSVqvZylwJAMKZjT"), }, + { .name = IOV("ijGWVbh"), .value = IOV("REnaSnwYyKTwOPrsnQpoBUvqfpaRmdovDWQBhLFIPfQjy"), }, + { .name = IOV("QONScShBjWSWfWQnN"), .value = IOV("pSOphWgBIkTfntcWurjwPesRzfgxqvdqldVCBNGaFLcfypLyDRyEDhBYFHwDHrWYTzBtanVoZnsldMZv"), }, + { .name = IOV("EstsUpGJqWlN"), .value = IOV("sDgKRUaqERivoPJBQtfxRlkgxaRKNxfhNYGmuATpyCszkpbEkYWKaFEgdcQVroI"), }, + { .name = IOV("AxxLeeNLLFrm"), .value = IOV("EJEiZqsZpAHrJgYgbGTRtZhichXAOrIrZBFtGKQGjnPlMWBWrYPduaMOxxCQPisMItWZtpuhbAuXl"), }, + { .name = IOV("hLxUbGmszbMhvIfBASlc"), .value = IOV("RbELRE"), }, + { .name = IOV("xIAFiQ"), .value = IOV("NoKyOmvlIWiqmsIxPDbzcSrViKpJqBpTBsOFmmkdUmusKOnrNCTvEJeSx"), }, + { .name = IOV("wdyfJSoK"), .value = IOV("nNELgm"), }, + { .name = IOV("MUV"), .value = IOV("dldCbSqTxIAxkiIlFLFvbCwKMvuPJeAqneemoOaYYcTevMILDJyyLbc"), }, + { .name = IOV("dNwoPrhG"), .value = IOV("eNJqsQrsfWjtoZdLyBPDmXSXqOvbXdPRtKeitOfATgzdGHDllMeKGmvBdubDZTSmanxNpBTrEKvBb"), }, + { .name = IOV("YXSCrsjOdKbUD"), .value = IOV("bXoKXtwawTFJIdHdLOsbsqnuAUfeEIBHlXVZmHnaPxgQxKrVGnTZfEctitKYVxNKDgsebaSWfmU"), }, + { .name = IOV("JqzXzyJ"), .value = IOV("ltJnYAqTYvlqPGWnYITQsvqoTFIWVLDtfsqGwLoKW"), }, + { .name = IOV("AJtpVzKllKKveI"), .value = IOV("qurtzoFCPCFNAitgWoADgbimWiMLoaxSaGjKrXEwIzoBzmiHfpfedIuAoflhlgUnbHDr"), }, + { .name = IOV("XxFGSMEwkDD"), .value = IOV("pQrIcmYBZfWrhLGeBFIZoquyFkSAkjzyIEifYPkMmpLDd"), }, + { .name = IOV("oMzMuba"), .value = IOV("EJMnbtSkGwjyIK"), }, + { .name = IOV("ALyiKWtUbskXkpjPQdGM"), .value = IOV("ASPLqIuSmmLzKrAhWWqE"), }, + { .name = IOV("wmSvg"), .value = IOV("KxJqKkkcRYndyFhvwgXvxYvBdwGYzOejJZbKEkTZwzVydnBJkxCRsUbjyDaeKYPiDUnuR"), }, + { .name = IOV("oQlPPWffHVYfeDPjx"), .value = IOV("ROyJYuXvSRKNit"), }, + { .name = IOV("olcvZyd"), .value = IOV("uCEDLlFtCMwWvBKCBLcAHvqDRYfjpNnJHnlcbaukaLNDiQqpyOuFgYETPMlkp"), }, + { .name = IOV("ZTRURJPROEIZpzznBs"), .value = IOV("oqHSUTvwtAJzEhgzCutwvzEuWAHMCgzJUCtJwmQNRACt"), }, + { .name = IOV("LHgFeffZfGN"), .value = IOV("yrVfeIoXNYEtOmXLgKpPFiZrgsyWZCHipvjDTnCsVOePwazQDzEpfzcwSnwRqvtbKUssN"), }, + { .name = IOV("SEcYFYowXbYYcE"), .value = IOV("HFmUrfTIxwWFXOaHuubccpwfhNPFZGYcbIpegrYxdndHRq"), }, + { .name = IOV("JrGgjYvOOlgPdGPxwy"), .value = IOV("zmcWNuq"), }, + { .name = IOV("xhL"), .value = IOV("drJqIXyrozfXRrhanECeHQLvaeshQyQdlyvlNKeIpYzDDHfdqLzWRkEApuvcIRDHrCeuuMiq"), }, + { .name = IOV("PoeGfAWeeYHJ"), .value = IOV("pbfUojlBdUyFwfkiPZoaGnkWNNKbmaPRlLbVkcDHyHCWkhwEkKXLZewMeX"), }, + { .name = IOV("U"), .value = IOV("oiJCqMQAeuZIFbkNqlqZEaEVEnWunrljuXkPCQWvkdJckEITjeTTRvvIzgKOYAwkKkKRBvBKtTqTpN"), }, + { .name = IOV("MwPnZh"), .value = IOV("yUIaNJJDVQEIyjYRxBXXUdKFfjjWOrLgfriPQYrOFoBLoXK"), }, + { .name = IOV("cjmqSpmutGliZWYvA"), .value = IOV("NcHly"), }, + { .name = IOV("LgYpalPFrrm"), .value = IOV("VEZ"), }, + { .name = IOV("EdqRrcYfTxP"), .value = IOV("CrnXODFIGUvZTZfTmCuvsljrlfdjAbiEtCEpUSwOxMmpwXCYZYkLrtvcXuwDJvNFLFiXaoCiQgSZ"), }, + { .name = IOV("s"), .value = IOV("bmUutcqRIBySgLaddctGoo"), }, + { .name = IOV("iNUtzIS"), .value = IOV("JyRpXcxtnuFbXziDhGMRCfYeqmuRlGImkkaiNxFPts"), }, + { .name = IOV("KdFMPed"), .value = IOV("eBXXhjjjAoeLsQNfNH"), }, + { .name = IOV("RUmnsVQtTfiofkVTfWu"), .value = IOV("fInyJqFGKLLCKRJ"), }, + { .name = IOV("vrOwM"), .value = IOV("qztupClrvHlZlwmkpnOCdRiGiJhYTRqFMJgpGbWiy"), }, + { .name = IOV("AgpMQhghRuLnSwndg"), .value = IOV("xAtIYMSsewcuYrEeAazBmJdRqfcHRFgVXYYEfromJASptzkNvxxYjhjVuYnijBCBJYctuEkIy"), }, + { .name = IOV("Rqvbfic"), .value = IOV("pXrpwiV"), }, + { .name = IOV("CtNUemeCAMIqbCvF"), .value = IOV("yTVtCCOUhogxXxwTLMmYqGQrmNUOaaZieJdBzTAhaUrTQeOkHPVzMMZUqEIXKTzDDPKFArHnxOYi"), }, + { .name = IOV("CU"), .value = IOV("nJfPDrgwNpPUUdjZDAvIzojxPfGuNyBveWtatkc"), }, + { .name = IOV("d"), .value = IOV("WZX"), }, + { .name = IOV("NJFMNE"), .value = IOV("RhTxSXuBONnyiVuyUta"), }, + { .name = IOV("eqESKfga"), .value = IOV("JlosklRGHYHWzHqSHvOBrmFurqtRgyDDwPlsQtjEMxWCpaIdwAKsAUIuOYpKSXFhDghhGSqoDvcK"), }, + { .name = IOV("KzxU"), .value = IOV("rmNbhoCsNpiatolhIVnlAsKCzFotCkwfMWmJwmcUOJcyLJWEZKvpsjQObJqXAKYnEnCIxFmG"), }, + { .name = IOV("IPIAtDIJrtCCzJ"), .value = IOV("RwbglXbxJmPVCBrAUpKGlDMuhrFnPaMSahxodtlFfVcMIKmFrvlHIecisXsmCyQTSpGnEdtzegGqJvKh"), }, + { .name = IOV("vAiEfKpcKVYxybH"), .value = IOV("EzpkVTqzmIklEcPLQYtMlzBsfJYNyDFUTMNSNtrkxFmujBGOMpsGnSP"), }, + { .name = IOV("tLYhkjoMJXWShkQwd"), .value = IOV("qgFCjVlkCgbIuiaBR"), }, + { .name = IOV("erhSQToZThynvBxxnv"), .value = IOV("sRIdCWbmqDtzXBCjvcTprXebaMPnrnfL"), }, + { .name = IOV("YFWiYsREZYAkMFq"), .value = IOV("fnssZZkgjcEwHJNvAUXOkUtlxLKRqrnwoXJSlaiTsR"), }, + { .name = IOV("rLqxVngwbrQPIq"), .value = IOV("vSWLeCKcgbkIjmdNzGLkiyEFzExdPYjdijVxTPpATC"), }, + { .name = IOV("BbNLBblFPi"), .value = IOV("IiuyPvsaaBkSOidGF"), }, + { .name = IOV("mlCPQUiKYhziV"), .value = IOV("vaLfSVtiQyPtjbN"), }, + { .name = IOV("REZY"), .value = IOV("XQmmKudzUuTTxkngkhsM"), }, + { .name = IOV("wFuc"), .value = IOV("qnZIPlcFqWCMDgrqqzEzuwlrhhlNZGZmfWgmZtIYfFpPlSEmlQnXuNMOpPtrZBzMdISmuvNds"), }, + { .name = IOV("lg"), .value = IOV("cTsqjXptweGJPdNwzEKKsUWVXwOKpZOdeYqrnlVbGlmLUe"), }, + { .name = IOV("UkkWGxPVYYS"), .value = IOV("DFajTmQLDRafpb"), }, + { .name = IOV("dOG"), .value = IOV("JUwywMJLNcZMWPChXmCVBVmFRwbmmdBMUXsRlMgkkYZByVVX"), }, + { .name = IOV("XjsVfrEscMTo"), .value = IOV("idtvoPIXnijrBumfbuCEHNZCSXIIkqFNrYNSsOcymTyOUacaOg"), }, + { .name = IOV("BiCTuRCCoZACcZQtZLUz"), .value = IOV("bbTloLVUAZS"), }, + { .name = IOV("qOuCOMHdIiPHJ"), .value = IOV("dzNSpZZUlgYVwVNBQGViowNGGNOrrhMJsebbsSiMLXOgAMXHTpxaIZACXshpIJts"), }, + { .name = IOV("NocTEU"), .value = IOV("gLjxzeOowLuqHWXhjivTFomxwKU"), }, + { .name = IOV("QT"), .value = IOV("faRUNGKLtmUwzmsqdxrXkgxdCJOcKsHbDXOljLxcKLxCZGtGGBRVHWzZrotRgWMDmXhBxrCh"), }, + { .name = IOV("nGrrpWTqvvYolmOPsnw"), .value = IOV("UiMPDMSqdblMUGxJbTcHsHRw"), }, + { .name = IOV("KdfIZBSg"), .value = IOV("iQwRya"), }, + { .name = IOV("qeEpKdDhPe"), .value = IOV("NMGBsJVzfnDhSoDSuwASWxOzzukmLsLe"), }, + { .name = IOV("eDQRLivi"), .value = IOV("CFxvPxcSJHswaAAIqtkxqspZUi"), }, + { .name = IOV("Dv"), .value = IOV("alF"), }, + { .name = IOV("PefYoasGdIjI"), .value = IOV("fFgkDGlsS"), }, + { .name = IOV("KjtuEuvCO"), .value = IOV("bEwnBHITheKg"), }, + { .name = IOV("HqjAjtTWQageedu"), .value = IOV("KEIDbQRWLJPblgMwhdioqjigxtOnLAMZVCjH"), }, + { .name = IOV("ZokBzATkwJULdcYx"), .value = IOV("kUyHVSjEyLjEoYaiJbShtNomXGlZGOHyqLFnrEAbNeRqGLjcnzpXQEch"), }, + { .name = IOV("oTshYgOoSPJNW"), .value = IOV("MKvhayzFFKnZNGKDByiI"), }, + { .name = IOV("Hz"), .value = IOV("bFgMDCKuCN"), }, + { .name = IOV("KjqGBrMtypuFVYhbcKKY"), .value = IOV("okqltmUJnDOngDNABkKYaskwaKBrkgGQkebCSinsdBUBIRfbmQjJggXikwiN"), }, + { .name = IOV("qoxkPHPQ"), .value = IOV("dassibhlFaVAqUzKNGSR"), }, + { .name = IOV("ySWWniYD"), .value = IOV("aqlwMyvfyBLqjmrZxyDv"), }, + { .name = IOV("vTam"), .value = IOV("jUcb"), }, + { .name = IOV("pBdhErpgycCQFcP"), .value = IOV("xjNvzHDRKlmJhZilpRLwKLIDDgBlVBPTDGWwYbkHxXFQQiytXKb"), }, + { .name = IOV("OzQfrCvZz"), .value = IOV("NICHNzueidOaeKyDTRzXdpzvkMvbSWrdqUsbkzrJsgow"), }, + { .name = IOV("sGfAFBHlLxxYnFl"), .value = IOV("ohjIxaMtArPNfdfIuLLEiWZFULQQscYgwYUBqvXcwkNXzluEWVjWRcgDoppJLQNd"), }, + { .name = IOV("MRtPuoxQyRZG"), .value = IOV("dsdPhn"), }, + { .name = IOV("acgPnG"), .value = IOV("jHnHXrtCEGyCdZS"), }, + { .name = IOV("RlnEOelRMr"), .value = IOV("rAtacYuqmHoUtejKadckbenEJpmfVWNdNqvosJfkGNqtGFDQwSBXWZnMorySvIVmLCeovgCqWlkkVNtq"), }, + { .name = IOV("rghFTJAPdrpQDmfTTSCG"), .value = IOV("wONeSFhRQKUOknBDjxJMYmFxzjDIxkKRQhBznQkrvZUsHlyEraBpNkXHwLcvx"), }, + { .name = IOV("bjGbfNAVUpgztghz"), .value = IOV("GqfbxFDbNwbkQyIcbNIgk"), }, + { .name = IOV("VheykvGAm"), .value = IOV("PsCaNGdmZc"), }, + { .name = IOV("XhnS"), .value = IOV("qqfLlScDbc"), }, + { .name = IOV("dJqqZZt"), .value = IOV("PJQhQukMUjuopiwwbbYXSKrBcFIqA"), }, + { .name = IOV("wOXqY"), .value = IOV("TfeDAtIdeJiTOFsZulfYGMtvcWTTYHujhoCgFGvuKRdsUtyUpLStnAnZdHZexeG"), }, + { .name = IOV("ZESypFxyLO"), .value = IOV("zmcyrppLLiDJIeRnxTCVHBRwVZLusXxVvJgXQFyQlMuPIQq"), }, + { .name = IOV("SQEOaNDoUaSNSw"), .value = IOV("yvhTlbeqNPzbBTWlmHrDuHqsvYMOYgmpAOkWzMfnafXEovklNyT"), }, + { .name = IOV("nWsWNqMxYlm"), .value = IOV("BhAuGYSrBdcsGNyUuwZrnUERZVXpZXURXhOETVkqiaRPGFftMhqHBXKr"), }, + { .name = IOV("XhsKTypHHob"), .value = IOV("dWoAnBYsnqvJnUvwygUAPdFVEakHkeHHfNSvmRTWCP"), }, + { .name = IOV("ElFCzWYI"), .value = IOV("ahhQrKaBfJzLTHiOrKrMwwSwowmTUQfdnLHPwvWmFwvqnMpnWnLlmkmHpqIdpuKEcWQKzOhNQvlOiMym"), }, + { .name = IOV("gNsgMMSt"), .value = IOV("kipguTIhnrlVfLSdfRnaSBZP"), }, + { .name = IOV("HzAxjMgKUkI"), .value = IOV("zncOqHnNmuonmXRUxqjwPt"), }, + { .name = IOV("eql"), .value = IOV("XzcXSDPBviKLBRMXjt"), }, + { .name = IOV("v"), .value = IOV("MfulQUPFdmbWNGqFALWEpetJXjIxuGfmDxTrAHXEjWRdPwLJ"), }, + { .name = IOV("XZxL"), .value = IOV("moPSFfoQTzIhpdTbptAQtmgzicoQkEQfSwPZBDxz"), }, + { .name = IOV("wJkSLLMZ"), .value = IOV("bjrTjJFzdOoAMCVxiwnkrTsFgMwLxLxWTWbDsqDBtAqSe"), }, + { .name = IOV("bnXcpuw"), .value = IOV("nJgqpSRNXpqpgBIphLbevuewCpZuuRllyMghUuwC"), }, + { .name = IOV("qViSShZrqGq"), .value = IOV("xaAYhdQRCcROREbMzlAGyXVowbBbxcQVrmrOqmFnRpLKqboRqJjyjooKcERWrIEhc"), }, + { .name = IOV("ZEsq"), .value = IOV("eZCUZBEeaJfcNSbjkPZfmsUhIPwcIWA"), }, + { .name = IOV("jDuYeqfCtyiL"), .value = IOV("DWQIQKaDdupUAdSCRTTjSQUeRWRnczoXdOWvwMqkXgaVfbwPnQioRUcozloMfhFNEZbFyMkPj"), }, + { .name = IOV("DbAvEbABBWC"), .value = IOV("eDNTuiTzesPclHZzmAgwtDuK"), }, + { .name = IOV("Y"), .value = IOV("UILcCfBnXThUXwxeBMsnSipYYiQstPQfhjBWmD"), }, + { .name = IOV("RFkyQBMfPeqkwnFR"), .value = IOV("dTGgOPdPAgAEUFIiTDqtoJSxtWZRsGenPkkoCZPfGXTXGxJBrqdOEnaSbBYAYTVeGxcGOkUSiV"), }, + { .name = IOV("tHffkYOlWfqmyUcWDcd"), .value = IOV("FupDvgmqYdVjrmuLzjPufpsNyQLpYeIhncyJckzeDZDpqR"), }, + { .name = IOV("uJlnYXdKYHIeuRXgC"), .value = IOV("pgGkTIUrwaHHonnUUzIqgl"), }, + { .name = IOV("LHfne"), .value = IOV("BQzTbExOmPFXMByVnzqPNpqpEUkCApsReipWBQjXPKKmnmaNcWKwVwcxTvErHNgvrfBOu"), }, + { .name = IOV("FjNhiKJAPx"), .value = IOV("jXZDeBiPHVVXEOh"), }, + { .name = IOV("ETkGxT"), .value = IOV("DHTImTFRixEhbQrFwCwiHMVXBUHnRADTlTzIJWpoNfkntCep"), }, + { .name = IOV("ddONibffPe"), .value = IOV("BKzJuKCQHazxRFoUAfuURIbJmDzsldUJMtMGMoMnULf"), }, + { .name = IOV("gfaqHMHYozAAbzxrvrH"), .value = IOV("RNgwOxnluxJjPzQEIQOUOCRNkOoOBcICKzPRhBUIxlKCaXxbNWGojpSdYJxzZHjFNoQUNZAJHuqro"), }, + { .name = IOV("P"), .value = IOV("mODYdUujtxGPVKpZmxiQKceaMWPf"), }, + { .name = IOV("yWxw"), .value = IOV("LCgufZiiYNmGSfSLgBbbjouHstjHa"), }, + { .name = IOV("LdaZJKCzKxDgomzA"), .value = IOV("VnKzSduZILwuzZFNKDtrVdxxlVphGAMEVCGYiiGcnkyEugARRCxgTbqECcn"), }, + { .name = IOV("iWo"), .value = IOV("CstRCgSaJqMPDKftejdUTirRwcFRqkmvJwUhApyvqVsteHujPrGnnRlrbkMrHATqpL"), }, + { .name = IOV("yUBvffUBHK"), .value = IOV("JewqduGFhJVoUZVIqmLpaYCxwTWtCnQPHnaihKIVSZEEznjjYRUZMJnSbM"), }, + { .name = IOV("oTQsiUMPixDN"), .value = IOV("jBrgKqEcQeNqKEjYdSCRCWNbAIXJRKoZwjHnPheIOsISJPyJhiozOEDm"), }, + { .name = IOV("usUiiDjoe"), .value = IOV("yIElhaWWfWghtgxAPFChkmEWtFmxpbt"), }, + { .name = IOV("iawfOGyRpd"), .value = IOV("EgNmWDWvtFlnuwhfnESyQzEKqIuVwJnZBgewTYAxwaJzbBPYuIRi"), }, + { .name = IOV("ZZvWGc"), .value = IOV("aAlPnXWYtRBYHOunZzeqDVabiXKghStNrQKKFUats"), }, + { .name = IOV("cVIVgsFLwAFM"), .value = IOV("kHwANcAFdsVaGNpvifyoQKdajvvsOzHHcKFnxlzDvTtDJbVziNTHguRh"), }, + { .name = IOV("RsIMTodWrYtljwc"), .value = IOV("IcPrFjmUpDQOrPZpfkqWhsAXkZsuYS"), }, + { .name = IOV("Io"), .value = IOV("LzbHZFvbyjmPayLXwNhgGHvqalgCmpkVcsKkHxVeYBpDaUUVRDFaRTfsUTHgfDxtbmhFrwbe"), }, + { .name = IOV("DVVketKaWVYziSvrJ"), .value = IOV("RTpIBKhuIpqiWktjUufGS"), }, + { .name = IOV("vcno"), .value = IOV("nWYwFfYxXLdnXICxJnWNNnOvxytazSlIzdZVxQrpGvzgaNEzfAuwFVHgZeapxJaQRtvPDWeXcgfakpTa"), }, + { .name = IOV("cPmFY"), .value = IOV("ABfbnVhHKEqNaEECbpezHEkudInPSDCQtIbY"), }, + { .name = IOV("yCAKACWzrvJdVnojrbHG"), .value = IOV("gZzyBAhxAzRBnkWpfsIncvPDgYnOTWbKFoAbKxlzxmXyoecOpmauVdJCSYFnNOdaoeRgVxe"), }, + { .name = IOV("krVSJSokNfhjaNp"), .value = IOV("hBthXZsAkTJOTFPiLuvfiKyPdpVD"), }, + { .name = IOV("RaBPWNYMrAMjBJHJg"), .value = IOV("vYMlWcyZtTjnmXhuOnqY"), }, + { .name = IOV("kovlvoHbiech"), .value = IOV("FtCTAbpbUQYz"), }, + { .name = IOV("iNkAdg"), .value = IOV("qmHNhmgwMnJfymnToTjHlBXkbuyLNHXjSUOfEf"), }, + { .name = IOV("xniNclzwgpVWwfba"), .value = IOV("drqwWiTNfgSKraXehlqDLhXYqkTctRuXvEgNmYo"), }, + { .name = IOV("VdzkuptXoJkzGS"), .value = IOV("QwELeGCvmJJWvsDWNuHpjDbtXKiUuYLtBGBwKGSVTKoWMpZJdqQsnFNjhzNo"), }, + { .name = IOV("AnmzBeFMEtCpMCUmcLxT"), .value = IOV("gUpiCUApIPgtYuDHPS"), }, + { .name = IOV("AWbDMfDVadUeeYey"), .value = IOV("htrAajPlFSuRXFQhfdKmrZUJxIaQUCju"), }, + { .name = IOV("tN"), .value = IOV("VMvCHJqcBTCNRcRGeFnfJKvqQteNkiICxdyzVpZUcsdlnpTxPHYqqvilZSSaPjyhkzREazZYVNhQSnuy"), }, + { .name = IOV("VMqm"), .value = IOV("mVAuFZWQsmizHOFf"), }, + { .name = IOV("LqJmDuiahimNqxZ"), .value = IOV("vgKggwiweDPWqLwLixwQwZCUZbFOHsYAEgDCJvtHkMwdujfkakigQvyehx"), }, + { .name = IOV("uUWjTTy"), .value = IOV("cuavqCWDESiNNNGQkexMvMklHWnlbqxTJjWUGxtgexNowmXnDtDQy"), }, + { .name = IOV("jCknOr"), .value = IOV("kenppgUyOhrBrSJZaTyVffBSRLGACycUUEIsBpNmYlfr"), }, + { .name = IOV("Ksm"), .value = IOV("OQEalFGvTypdxZJuEtfPzbRuBblXobDyXvxdvNnSdRwiNqkYPNvPynLxaDFvI"), }, + { .name = IOV("SjvezYNKOMlvkSqZzfoj"), .value = IOV("iyZnYHMSnOiWnqnmAOclhttKlPRfeEUqCqDYyQWfcmBLVdPFCq"), }, + { .name = IOV("MDGOSS"), .value = IOV("YGlzxgjjkjHjiOGRiZN"), }, + { .name = IOV("bQXAMqfVgpTQejawECL"), .value = IOV("NALlIVARHuzyKOzoxeRKmhpKScggQRtHZKdkQYcDkHsq"), }, + { .name = IOV("uWXfaJX"), .value = IOV("RFdGznlnAPVmxFIsFCYqdtToaYpPCnmpSZOQvQH"), }, + { .name = IOV("NkLCEG"), .value = IOV("XTjujuFJiagSZiTJUZWtLmjoVXMdsSdZ"), }, + { .name = IOV("Nn"), .value = IOV("EQMutzcqRKxmvYbWlyDQtdFqY"), }, + { .name = IOV("WpBCfIuEzYUcsPS"), .value = IOV("QYoaJwUYZlbHOfnmIqROCzdwjCxwwmobXcwvVlULXOAEFtZYYixShfaEznHJmb"), }, + { .name = IOV("CpnXjiNjjudAZObwR"), .value = IOV("hFYjYKJVdvChEAoCbDzxOfSeyhNlcCXtfjjiNOnvzzHelPXqfzhpYrRxahsfZeDBIkGmhTZmcYN"), }, + { .name = IOV("pFLwP"), .value = IOV("McaZrLqshpJRihNljaquJCW"), }, + { .name = IOV("CdkB"), .value = IOV("VBWZmVmhDWlPQwMzYtMmoABlqnZiPWIXgEzPacdpWiGiWXOESfjOENeeweLZbJIOVIs"), }, + { .name = IOV("pHABPD"), .value = IOV("vipfiOXfsIGTNbUrpyecEFnrRwsiPOxUwEVymlaMHPeWSJadchNShjgH"), }, + { .name = IOV("AZWblui"), .value = IOV("sAmHnpU"), }, + { .name = IOV("BdVqrPFKaTfptxSaLu"), .value = IOV("fwKTjxgYgazgHrQudKkxHZoCrKRIQkbztbANdLUzaVVtQyulvGrqhQxdtWRLIrtHsx"), }, + { .name = IOV("idgr"), .value = IOV("ymkOKLIRfRZuYCESCvbqIdKmIOrOeXVeJuxVpxnMqDsB"), }, + { .name = IOV("SgeEOBMrwaD"), .value = IOV("mLZFijMgGcrUAFEKNVNYrFVcJDJZWruySVaqHredwJyJyqQcYltreMlmyVEzXFMGWivDPjf"), }, + { .name = IOV("qQMUc"), .value = IOV("VfaDgDtrDQFvFIIzDCHjhtVzw"), }, + { .name = IOV("uyarfm"), .value = IOV("NdalqqsIcckcUhcrPsFxx"), }, + { .name = IOV("OcJMdMusFASAwtq"), .value = IOV("LAGWAxTtzHrbCWhAvtkdVTMsjuWahaqTBEfBMaedFQsveMMbqBxNfyoXCySyFMyWCCiVJga"), }, + { .name = IOV("LIn"), .value = IOV("BoCbDcQWFyKTdBkyOMjHRUJtZazAhqyxHHjSCRayRTIhrrMhzvAMOkKJcqQesn"), }, + { .name = IOV("UNSqFsPSNzlrkqvPx"), .value = IOV("lbncvt"), }, + { .name = IOV("ZaIsc"), .value = IOV("rmurUMFq"), }, + { .name = IOV("eSvMoiFYoziWezILA"), .value = IOV("aOXOGOjZoaryglaJvInvHadTeHPFrac"), }, + { .name = IOV("GbClGTbgcPJE"), .value = IOV("BKTdRvtznLHkDEAYNExnMsYNNWnUrdLwJu"), }, + { .name = IOV("bPBDCKkVrwMWIBpKaGWA"), .value = IOV("egyV"), }, + { .name = IOV("DgovEdVTKZCQ"), .value = IOV("ZUrfIeeWUkOSLkcgfewNenGElSZmhIHdoSM"), }, + { .name = IOV("xiFyOJzWEwVQfr"), .value = IOV("hwEtMKfpbyBqScjDONJPNLqsTclTpVhsyr"), }, + { .name = IOV("UQBcYQBW"), .value = IOV("DrnluRsFzncitXXEjECjJHrPSOzJCihHdzhkUtVHYkXLhksUasRZMsrnDZPWIxDCLQK"), }, + { .name = IOV("bHlJm"), .value = IOV("yBGneYScTJuhgoOEXpHjFokegHKahjcObyoAezIbqOGwefwlCuEPbDPDif"), }, + { .name = IOV("KEtzYkAgLlkb"), .value = IOV("dTRNgrDJqScvWsIRwHdmvPfghCCQQLmjnFUSthLPefnvmWwhEaMOeTjFeTFsAbnL"), }, + { .name = IOV("IXiP"), .value = IOV("SeBBtquvQBDrXWUufuOoZZ"), }, + { .name = IOV("DQv"), .value = IOV("XDNMjcLOOxKjzGzEhvVPER"), }, + { .name = IOV("SAPN"), .value = IOV("tNbwjJPmyvnQoBhHzGyxHwLMavPPOOJeMLbfqHmCXSJQOksmvYPtovdIrzyZzQxFTaTClpj"), }, + { .name = IOV("inhxA"), .value = IOV("td"), }, + { .name = IOV("AjQVTiSCqmFMxlg"), .value = IOV("HzmTeDyiTCsJnTnKiGdxlSeZalfbrxtusUkh"), }, + { .name = IOV("Yl"), .value = IOV("vsUEBBAUjnMvxmKCfPrI"), }, + { .name = IOV("pJhtA"), .value = IOV("xZTZMbSNnOzQaGmfVYTTbFVCAAJcaBATQFcstiERBgdiGEFlnBAPGikNnkGBTUqKEkYuyuInJgoJR"), }, + { .name = IOV("bvJeDmNgliion"), .value = IOV("iEYUEFEaUWQsIOMHsVygTUMFnFghEF"), }, + { .name = IOV("JdOxbZrN"), .value = IOV("MHLMaexMMpUwIV"), }, + { .name = IOV("wnlJNvIn"), .value = IOV("bUQKOtaVuHZSDKVzWLPWbQjencIQmQFfgNFjtbDyFzLOOncSavfkbzDOKMlC"), }, + { .name = IOV("IrgrHvxpYw"), .value = IOV("MQzwOOyPoXSdKzjnrKrSmGJVYfSiXETLgGYbdIMoyNecAFvLNgZiXsYtpbYGCLxDCbYXWUKetu"), }, + { .name = IOV("cJEODMvscmqZV"), .value = IOV("pRccjYyUJiPFJYfDulfbegCzIExrdOJQUzwbhGzSDmeZwBxzfIjQHgPhLySaHueKevyohdyRF"), }, + { .name = IOV("nhpdLLleTYXC"), .value = IOV("UWcebcLhQSuMEBglZwBVUdccFwdDZuoVuuhmZifaJsEaoJoNpkmuLPdDUYfstpebirf"), }, + { .name = IOV("icyTdjPnVwHTyXzrMn"), .value = IOV("FeZJBBblFXJiFjphDJiqoFhljq"), }, + { .name = IOV("FyVgYxZKBYhOndHDowFd"), .value = IOV("RYxDbHpJQrRlVSaZxPeJyGvgKtWIHuSoOULFxTxKrkmacXhfgjjkgsYNFBWADN"), }, + { .name = IOV("NHyFacLAtQMH"), .value = IOV("vizjIgmmcUlKnMxGdnkktlZLUmTZFrnmAaMIfMLbEbfUbFGeIuoKgqimPeI"), }, + { .name = IOV("uooUJG"), .value = IOV("tsDiFQfXWBNlRxYVBASmTaZaZIja"), }, + { .name = IOV("FWgoibbAX"), .value = IOV("GZKybtLSfuDbA"), }, + { .name = IOV("zIGfRMxEuQxyvIocXy"), .value = IOV("cuXVKjkCgJVYXABaUWKXYPNBuFLyOhEsfbROBJhfz"), }, + { .name = IOV("R"), .value = IOV("sbehcKeXzaVBDDKkDRkGVPiiLL"), }, + { .name = IOV("Gb"), .value = IOV("DdGPzgbFObrxOSZeZwmcfiLNGSjkZJBGrKniiDUkZdHjPWwevqrybluGqdThNQlIqm"), }, + { .name = IOV("htSIgatlFSwG"), .value = IOV("mvHhRCCxNIjLrCVNmUiRXNFEfwsbgJPHWGXeGimPtWBXVKP"), }, + { .name = IOV("KoViCsqpfzqG"), .value = IOV("CTbWDFWbwugqvsYeXZuUKvJxDgKbOKipPjNR"), }, + { .name = IOV("wbTczGorYLwesSZA"), .value = IOV("ltyHDXMqwDIXnJwAYPkmpTNRzihFLOBgSwJGyLMeLhhSMLVPcn"), }, + { .name = IOV("L"), .value = IOV("gfIJWVsLdmHRdAKhCHDoJySYkTfFvYJZjIoFMbFVbDmZOOz"), }, + { .name = IOV("yoJkLdRDj"), .value = IOV("bCHujmyuZLmrfIBzTF"), }, + { .name = IOV("CEXhfxl"), .value = IOV("ZNrNrxWKnDtYBKyOjWpZV"), }, + { .name = IOV("ZS"), .value = IOV("vuEFEntHBEcKSrydHyQPOKaLkudxQRNCzDJMpvesuaLqWcPH"), }, + { .name = IOV("eFpDJcIJKQZEWWZHdz"), .value = IOV("qEEbjFtBhsNViVdQyfbNd"), }, + { .name = IOV("smvs"), .value = IOV("LPIfWFXSzTxqcMCiTQhSFDmxszUXnmYaOrZBCBJcpiqjcEmxkHGvRPGPWrH"), }, + { .name = IOV("mpGdvcZqvIUZUwTA"), .value = IOV("ymOls"), }, + { .name = IOV("BPJTTvIrI"), .value = IOV("ncqgbogdZJxLZoNHsLHBkebPmJMPEiaFyjiEgOtPiPTnZPbHXfEXMJmVKYauGL"), }, + { .name = IOV("gEkaupndulDkh"), .value = IOV("wz"), }, + { .name = IOV("fscWnfTUi"), .value = IOV("ZGwGiMOpfYUaDqIrtSl"), }, + { .name = IOV("RvCqiuBOfnDY"), .value = IOV("QJeEffvjtUCNzRlekMSFAOomRVTgA"), }, + { .name = IOV("igNtQUVMmUt"), .value = IOV("MzzKrXpaemFUUsRfztVXQWNZNHcMkPWQLoMAN"), }, + { .name = IOV("BIhfRJMFxZlHHI"), .value = IOV("DJryvtKPbv"), }, + { .name = IOV("kRUzmNmLVHOgbit"), .value = IOV("gfCiXvitwjgXBcoqZYnJrpOgdgrsOyGKRemtiDEEcuIpIdOSjNaOV"), }, + { .name = IOV("GyOXLOgbh"), .value = IOV("BXJPlOodJXOAgRqzVAAZmQjzVbbo"), }, + { .name = IOV("TpOSbWshFFjV"), .value = IOV("kNnQtAYirfpYxrgevRqzTCacRkjVVVnGTLzROZshkNrNAKlBMTCzAxOuAQJ"), }, + { .name = IOV("BMxlSCvaduOMBiAvQxI"), .value = IOV("uXziMiaTcqytPLKOprFyfDMkJTaxxThvllJsBlROlbVjabGVXhSTtkBTKtzftYOeSqgxCup"), }, + { .name = IOV("g"), .value = IOV("DCvWkaMPdmIgBOJJnmJzgQTZSaIYQbmJCooeoXZpEDMfmrHOAFzuMWxweCIcu"), }, + { .name = IOV("objRHDrGGpmXWcHjipk"), .value = IOV("HNpMOrAPFkDgVIMptirsaFdPcJzQyaPyoisygnAiIpnjjXOibIOQDhfZrZvvLziTEzeHHn"), }, + { .name = IOV("vCinWOkV"), .value = IOV("hqHYFTQMcmfaucCDmBmvKzpBzOlLbfUznbtBMsCtUQNZKL"), }, + { .name = IOV("PWjAieIMgZzpy"), .value = IOV("YyDKUxFCwVHUmylYzmzReibYl"), }, + { .name = IOV("HZjygRqFQDvIQlVeyt"), .value = IOV("PmkLCyhjHYMjyMSxdzQTzNMoUvfvHlMwPhADuYDlSARRdMMYcqLZ"), }, + { .name = IOV("WXA"), .value = IOV("TSbYbemDYQwhOSytUlZmBMCfDcFqNhWIpMxzpThwWzCIAsDayShwZuguhYkQaeP"), }, + { .name = IOV("JgHjD"), .value = IOV("itbXsQR"), }, + { .name = IOV("IYZmOAFBNUa"), .value = IOV("NgBOLcPcs"), }, + { .name = IOV("TUwAB"), .value = IOV("pixpZBWUKNAlvuiCTfVscDjxPJEtGdNjldJvnjKvzkEwIPaKMzKGtecSjp"), }, + { .name = IOV("iDesjdawFfnhz"), .value = IOV("JFhNbHDNE"), }, + { .name = IOV("MY"), .value = IOV("sqBOLLVCOYYJXTse"), }, + { .name = IOV("TwBvIpsHlVhfxb"), .value = IOV("eLJLIzDqejctVWlZErOOjTHDKI"), }, + { .name = IOV("zsUntCvRXY"), .value = IOV("myLGbhB"), }, + { .name = IOV("xaYcNF"), .value = IOV("eAOnJcEwGjgrzLKSzepamJcVCUZtmmKBUYexwA"), }, + { .name = IOV("eGcnSPztlprEAIxrUg"), .value = IOV("WXbDHtOtAjbhtVvYAvnhauoLTVDtpSi"), }, + { .name = IOV("nprOpprGrZqAgJIql"), .value = IOV("QpWRiRGgwRXwlkEabkUSobZkyRdGIOxhESpSrndTiKjSOvxgNVHKnpkOUPxGbXnP"), }, + { .name = IOV("ZklKsxreFpAmidV"), .value = IOV("TYRKnTRTxXSPZTTQfPDhvGRlLvIFJiwKimZxbqcpQwJLEtlKFqZUcSdrOvxCUtQRBGzPIXTYaDLe"), }, + { .name = IOV("UOdprhftFMl"), .value = IOV("wzyTtSJHelYoFtnpMUkcOfNKcauLJYOEemFJFEtxMlmGyPqnFayXgqKIkrZdXnsuNSxoVdsLMjq"), }, + { .name = IOV("ovmVEiATpF"), .value = IOV("iBCycWgPgeURXTjPLzNuJLhIdrsHnvdtFcndJCDrGDPQtKQAiAJIfdpViCcuHeemCrCDL"), }, + { .name = IOV("XeMUGgTjJcDElXR"), .value = IOV("qmPcHwAMhCK"), }, + { .name = IOV("ma"), .value = IOV("fXZFxsghsslbxWBqZKuOzeFwbDdEJnjbWjhoLAAlxrOGXuvVRDOlMCmVL"), }, + { .name = IOV("xoX"), .value = IOV("NjLthLEmFNrVuQGtwXLMCUlRJuQqkNQVwqkjTnLHizmqcDHeTx"), }, + { .name = IOV("ozmDehGdzSxMGXgReCY"), .value = IOV("QUtjEyQAGdBNWFCzF"), }, + { .name = IOV("IlVpX"), .value = IOV("Q"), }, + { .name = IOV("i"), .value = IOV("mHTzUFBBKfnPNuffgxuyazUDpQvHBWAMLxPdlQpaxsKPICLdMpykqcsLM"), }, + { .name = IOV("kKiZZpIwVQN"), .value = IOV("vAfOhijBEXCdYRxWIZUpDUUMEHNLrET"), }, + { .name = IOV("uRKyusVXCuXJB"), .value = IOV("UueijrBVgkUdhONCGnnEMT"), }, + { .name = IOV("oQDHbSkguuNugygc"), .value = IOV("hYNdcKEGkpimXsBBjdtNcTvreaDBzcqotbAcyIMoVwS"), }, + { .name = IOV("ye"), .value = IOV("NbkGr"), }, + { .name = IOV("hyekKpoBhaqMc"), .value = IOV("UqpfSypNlMeguiIUSeZpPwBorZhraz"), }, + { .name = IOV("f"), .value = IOV("v"), }, + { .name = IOV("rKCOcM"), .value = IOV("aKOD"), }, + { .name = IOV("IxseDIdHuEzbel"), .value = IOV("LNIyJuofuXjWCRMhBGIQLLrDrDVJRqxBjDrjFctUuCFUhXXEqg"), }, + { .name = IOV("ljnFzoeEJOMb"), .value = IOV("aADAEbWcPZauAHYojDopgBHHxyvBWJTetFJawgc"), }, + { .name = IOV("fiBwIKSnkyvLkn"), .value = IOV("nq"), }, + { .name = IOV("GpCwNcHWwNbWAHlEK"), .value = IOV("rUpJGuGxlWjmKWoineZh"), }, + { .name = IOV("MpN"), .value = IOV("cHBLFinxDveqzpZfDjS"), }, + { .name = IOV("aFtBRrQJMI"), .value = IOV("XsYVAQgZKMlzsKwxKGOlooPPgyOctW"), }, + { .name = IOV("dN"), .value = IOV("beurXom"), }, + { .name = IOV("hEtqxkGOzpqjcY"), .value = IOV("XnIxqDCTUKawbIeEOpbNqwsNkAcpPRqgkBTE"), }, + { .name = IOV("LgoTGYaYDMg"), .value = IOV("BksDSsehzGDrEqzwobVsLiBwHyYuSLzThqFbOUmURrXLfMkAfTixsPRZfDmlesRfwDqQsy"), }, + { .name = IOV("iKopQmxAIVUeCuQ"), .value = IOV("bpwGxanRtFRRsMLZq"), }, + { .name = IOV("A"), .value = IOV("utQVlzsZagqBfFpSisPngLsWbFecfeXwDmMrzEJmUekrJ"), }, + { .name = IOV("zFsxQumvI"), .value = IOV("QFHBPLbYIdYVFGIupieqqhoFJPZgDVJlvxzeMoHgIeaL"), }, + { .name = IOV("YodXmvfDgk"), .value = IOV("iBBpyhBRmWqVJVmEDjvSKvykezBRSCoUvJjsuRZDdAJJdYtRWeJOKrWFRxFxOaFXNyEbzOMjxVhQYZsZ"), }, + { .name = IOV("FqEbtcX"), .value = IOV("OyjGoeFsPiHhmIXMmvbWrMeHes"), }, + { .name = IOV("taiOVVBwMoZUpfjMs"), .value = IOV("xyefocsm"), }, + { .name = IOV("sbOhlwGhRxseNXkdDl"), .value = IOV("dBmHSuQnvRdFmkqZxvezOq"), }, + { .name = IOV("EhARhnV"), .value = IOV("MQYqmUtSpgYmrPASwaapkkZIVNtnxXnghp"), }, + { .name = IOV("vHFFTTywkrwmdjm"), .value = IOV("IaiyKBxtdYjnZARMOIoSRRSFjsLyw"), }, + { .name = IOV("e"), .value = IOV("wFcCsZXGabQyveLJs"), }, + { .name = IOV("WUZ"), .value = IOV("kBHtYonqPOLTQPQBAeUrPkEmUfXM"), }, + { .name = IOV("hUrFGTyC"), .value = IOV("VOFnIOKGZLWjaOdYFmgEfpdyHcYESSadQojPEHQfNMbEQHAuYtcygL"), }, + { .name = IOV("SmlJJ"), .value = IOV("rQXLAulcvaxqrAo"), }, + { .name = IOV("vbrgYnVbIGatnjOW"), .value = IOV("rPqWBtRBDoshNwnyQViBvLvvXwflqm"), }, + { .name = IOV("wlevGjKxl"), .value = IOV("EuDRBkWnmNEsIRnOGKQcdUMRlDWAZsWYEUoFwlRCAbarnsZptzQlnjqm"), }, + { .name = IOV("YpAVglaDcbDrrWbMQi"), .value = IOV("tFekDuuZLcIPhKduXKeOzrqucjbkLCBGgOSPBKjjyngVyyYUSFsfwJecbMEnssTFCysADCD"), }, + { .name = IOV("llHdgaJeF"), .value = IOV("VuKDASUGJGlDq"), }, + { .name = IOV("ZbJKyo"), .value = IOV("lFQYAIUXTxbiZbDMbMWztTHlSWFDQhuqIQCbKYRmRGQnG"), }, + { .name = IOV("LbFBgb"), .value = IOV("GCujJgzRdGTxhbmIMoIIDJDZkHYDhcNTcCLcpzUaYnUsWFatvapnriqalmuOUlSjjNapzKYXyEGP"), }, + { .name = IOV("SLuA"), .value = IOV("aPrCDELZiybVZbNjOBVKGbKaCqWYaEUNjLZRmdlHD"), }, + { .name = IOV("CBPeCAVeFXdY"), .value = IOV("TDOzYmmCkdpRyxdhyWIujpvdsKnBWNxmSCCrXzpumjJabdfBdtFveUnObsreiTqIh"), }, + { .name = IOV("ZfTTJRAsoTsyqmZuOQ"), .value = IOV("WLljtCtlNugsDwDHCAjQLlrHZdtOBbySiEGVsHxzFQLkELoMRlk"), }, + { .name = IOV("iIK"), .value = IOV("dwrtDGAQm"), }, + { .name = IOV("mjaEyQElLmkvnlpaPH"), .value = IOV("aIyGInlqCIgFGPGkPtjjZHzciFqJkkSHhxGaGIWNNEmTkTHgNMigLGpTOtEUoqdICOtPVSeFlM"), }, + { .name = IOV("xyGrXAhQZW"), .value = IOV("KiFXvHAvDWqJvFnvdsCAqmmBGmXLvwf"), }, + { .name = IOV("HGzNliVldNnZvHVFqC"), .value = IOV("mlDgfgShAMdvNFhxvPavuXn"), }, + { .name = IOV("LOQaAPnAbjqdnpvShZw"), .value = IOV("pSQhqvaMLSMJuxFBC"), }, + { .name = IOV("KkUA"), .value = IOV("Gm"), }, + { .name = IOV("YKgwsdqxjSyIJaiR"), .value = IOV("roVOifpwgXMXQPvFDjKJWQuqdlRBVYdnFqwljHmMgojvZnZVPdXVCXDXYLhhWgyQnns"), }, + { .name = IOV("DLd"), .value = IOV("bglurAboQjzlMPUCjRCagvsAmwEwILkisdbiSEeZfwjjUevsBpUFhDpieNPizYxGwc"), }, + { .name = IOV("wuCBPybWxjWzyRfxZ"), .value = IOV("ZBnodWHaOVacGSscheqWakIjDeWqWarprlmB"), }, + { .name = IOV("lQihjAOeLmWKvmZkA"), .value = IOV("baAVhZgD"), }, + { .name = IOV("gmju"), .value = IOV("SLnKjBrrrJGTwJUfndbblvOOjrBcDkCDeMAeYnIPjGNpzJStOi"), }, + { .name = IOV("terpzfFqTpkFauEDF"), .value = IOV("EoWdyc"), }, + { .name = IOV("ehbdkhTfldIXkpI"), .value = IOV("YVzQRhCXMlhKjtZNt"), }, + { .name = IOV("yeXbMFuIGbqIyCSIoLTJ"), .value = IOV("CKCOUPBBOuuOvFPRQyQShroWxsdzpfjPFXfZjfFGBPffmgukpn"), }, + { .name = IOV("ujMaAaJwdCRA"), .value = IOV("OhRDVJlVFFusDtTJMmzzYKdsjdzhTWzLd"), }, + { .name = IOV("ljvZPNXX"), .value = IOV("sSKsknyVDDcluHyONHcCdIuzCOWMxZPgQsKgAMRkrJYRjBrKsb"), }, + { .name = IOV("yyJqorNjlOJeKd"), .value = IOV("aeieKUzXJiObdKoOTqKtDatuINe"), }, + { .name = IOV("rAcrNHtvRvxayQW"), .value = IOV("UQCKeKijuiHJXcxINheLuJZenUEIKcLbIVnSfgyAxyh"), }, + { .name = IOV("lUUk"), .value = IOV("qBCtswnDEkqoLgtZHarXDwfhoTGihxavdyJmDRHbroXUicSTDkvODNjSaEDfwMdOVtXvkSTnJUx"), }, + { .name = IOV("gLyWDfCxkqdSKdu"), .value = IOV("pAUaTBWtxcECanfxJJtuyziKbpkjnpPAqnhAOKl"), }, + { .name = IOV("GEUqFQdyXfldAAKlL"), .value = IOV("YDBxTlMjmbBHTxulTkBaNeTSizoDfCfkCpvqeledhjVvfyeqXNNggX"), }, + { .name = IOV("ITRH"), .value = IOV("iaeUsjOQHLhKksdh"), }, + { .name = IOV("hDFRlDvIHtVTYcVfnAjA"), .value = IOV("lWPhchuuzcyDDWpHWIRSQtBLESMgYNqVLJBMgAdKYJEiPBbvjwiXnuXMCtIVL"), }, + { .name = IOV("dtLkuEFUjQtKOrC"), .value = IOV("BMWeJSYKVUAEvJasQDdvzrZflwYbczEFigETLGvjfXcCJeKUWCkReVGEXVHhwEmrgNekjQbcNLnSkZ"), }, + { .name = IOV("QzwhMzG"), .value = IOV("dwvMabRdwrEkuHGxpMNJgMnODNQxIanfygrKnBarPAtewCRhooyNt"), }, + { .name = IOV("fYvEOFwfNyptmIjzumgu"), .value = IOV("mBTFTbjzuAxbDtCdzyxKRssZyerqcl"), }, + { .name = IOV("xHTSuLYpsTn"), .value = IOV("DTvjviYElrrjrYQUSZpGUvNxMhWkDBAVyIINhEGAGFKpRjagpmwoPinxEfVSqfTMxfM"), }, + { .name = IOV("OcqxnBasMHyJtXPj"), .value = IOV("lQERINVWMdJUPqxfHOIdwpfairPERKmFHHvHEGVfuBGSTrRiiMlKsROAzQx"), }, + { .name = IOV("CgtDhRxdGQyrp"), .value = IOV("UcmdTgZxRGlxieoqUpxe"), }, + { .name = IOV("VOGbVfNrOL"), .value = IOV("BUcBdgKJglBlTfyCjVTUGfyGGGJriUHNGpzMbyAVLwB"), }, + { .name = IOV("oNBRRwQkBd"), .value = IOV("aQIfHJMbEysAjFfulYLozZnKfLA"), }, + { .name = IOV("XrlIexscBMNaIki"), .value = IOV("gRUbesHJrrjouqhbeHdVmXvEmMmCbjtKsIbRBfVqaazzFUgoiSsIpWqvgHIyqrxlIolYc"), }, + { .name = IOV("dFuEgggXXWYoVrSiIJq"), .value = IOV("uTLGruArcxfFiFSwQASIXfASZJORaWswcEMIMsPTgiuRxLJdAOLdBcEOuuIgpDQQcGiPjRIPvaxbC"), }, + { .name = IOV("NYQGLoraim"), .value = IOV("gqQsrmyKnv"), }, + { .name = IOV("FqynZjdKhlCKMshxqS"), .value = IOV("yqYYkoCXAqzlMLVaEMuUsafx"), }, + { .name = IOV("ofpzgITW"), .value = IOV("QbeYZHubQaVltYlEQWIgvSSiyViOeXhDlCQHiOXIGEStPGmwBXkQoUuhpHtwForP"), }, + { .name = IOV("cqtMUkIBzzBAPSzVG"), .value = IOV("ExdHaMUowDrGuGECbf"), }, + { .name = IOV("tmSv"), .value = IOV("hIHlvKDksnZkKGGU"), }, + { .name = IOV("DWKcRzVodKPAvjV"), .value = IOV("RJWGqLVkIybEewiOAbPiMNPNTMLowDtMQuWcaXMbabMsENwOTBVjeogVpYWFSIPxJRehigRxLmMUJJbE"), }, + { .name = IOV("dcIhPs"), .value = IOV("fYlDnGsbU"), }, + { .name = IOV("si"), .value = IOV("vVAIJrCwCcxU"), }, + { .name = IOV("nlpsYHkMCIzgSSwAQOd"), .value = IOV("CDGNBepupeatpTKofxRqXdfabPxvGywFJjkRQhZXtHBuSrNqoe"), }, + { .name = IOV("ch"), .value = IOV("tePtUctJAXWdcEOvEKhresMmpDjejadEoCCEPRVrSSpWvDHpHsYDpjIEDUXdprIXgBz"), }, + { .name = IOV("ywscnEGYLypHqFUVDuZ"), .value = IOV("lVnWltvGQkuWXJCKTZeafDCPuPTEZSi"), }, + { .name = IOV("zPWrcKvgk"), .value = IOV("mnGjFZIsliuXnLNMNLUWCOYCAehswpFuuRcLtnVhpsCIkyqwBkuJOkzuCQtKcRBmkLGaaJByk"), }, + { .name = IOV("ETOwX"), .value = IOV("ijGCEaCkrWHpvzKHbsMbhiBarYfIsWjnPqdCFtPd"), }, + { .name = IOV("N"), .value = IOV("wkPlqDWmanbrerBVwQHJjFDwFcVptimASVqXBUHgWuHCkjMstYEubwLBejHFBIFlPyEjI"), }, + { .name = IOV("BHTXkvZOrWlBF"), .value = IOV("cfFcMVbhdiIErzNQPGfLvDdFchqfcTUfBASyZpzRkJAxmifTrmiBldPKqqUtJakbRfvGt"), }, + { .name = IOV("ZFw"), .value = IOV("uRkICyKPPNzufUuJsXNvPIXwOCFpbCPhHRIoOZQCLdALGumYlBclzKfXFYByxxKxY"), }, + { .name = IOV("eydQniNkygiTNdXv"), .value = IOV("DymMWxeSvVtKQSvsocuIQCdLFRpCNiGjQjwFFGZNDhLXDBgvcHyNKXqwhYXoiPCLh"), }, + { .name = IOV("twmomxH"), .value = IOV("WquWngjJrGDJOFWXRjTcqjufLkGwyvjuTqZkHwipZyvvfwHUfqkhPAtpSO"), }, + { .name = IOV("zqPgNUglUHWOYTe"), .value = IOV("IFWZNXqdmWCyEyuvsadPGgdULoZqHBzqMlhsNAxMbTtFgLFHuTiztnz"), }, + { .name = IOV("dgWKZDbbae"), .value = IOV("nCxznvDSNUcMJjqpulITPtFFUaRM"), }, + { .name = IOV("KgDzcg"), .value = IOV("ooFuvtrdwyorJDfnepQjUwJEpeDcBOIXxltNWmEQfFFHAyCkhhvnltlsBOrC"), }, + { .name = IOV("WlzrGp"), .value = IOV("NkzRPRoUtoNTlIIYXdcDpczAyTpgIflhxSulvPvRChRWmgGGoXqOKZIAmYiJR"), }, + { .name = IOV("MGKd"), .value = IOV("qKfCRoeordjjFXIsjnqpqrnCxostBKpWYBpA"), }, + { .name = IOV("Zehtiu"), .value = IOV("GJhipEItCyxmAEAUSIsnbjCB"), }, + { .name = IOV("juWECLIbnPIWc"), .value = IOV("HiYNAzJCKUwgGcefiJPLctkPBeSIEDFbLvJWlTWtWftNttuqlexBPyzuypAiyFAYFubjLjcbVytMrof"), }, + { .name = IOV("mrfy"), .value = IOV("TrrhSAeQCodthskUExLysjFGEYXpAHdKQCHHfVBGVNvaqAcgtq"), }, + { .name = IOV("ehyLsaUTKNuAnovxbr"), .value = IOV("tkLZPztJetNTxJkiXuWJ"), }, + { .name = IOV("XwnJ"), .value = IOV("EaXdNshdiyIhAvOiJIWgzsXilRcCScTVvAxcuXTxt"), }, + { .name = IOV("ZR"), .value = IOV("YIMPVIsAHKBklUlWQOJiwEUwdAXddCHAQZfCWeueeOJILUkseWWCUNjq"), }, + { .name = IOV("Urbq"), .value = IOV("cgtJhyBZJmpqcsqspjsGvWItHRoaJoFhLPcaLyBX"), }, + { .name = IOV("ynnfFFRELbdF"), .value = IOV("pCxFxfcRktYPCrVvsAgCxObDfMoQQtPPcaxolIivQZBRmQfIAMsUEHuNkQCYghuTyuIUxmDJuNjJ"), }, + { .name = IOV("mSsCJfzUQuLUEHdGTWZH"), .value = IOV("EbGLlpFoSGZ"), }, + { .name = IOV("O"), .value = IOV("OoHdGvQVlDCtlzVRjWXckWkHaeDpjhMvTapGOMrmeqnRsROJMFkcfTvBJyalxrBaPswzrTFzV"), }, + { .name = IOV("WGnnsDJo"), .value = IOV("bkcldpsWNwzEvHOFMDsQefwPJHphVputN"), }, + { .name = IOV("Ulz"), .value = IOV("edPwUVtpuhhCgrZIKBWFVIWRnUPVCYRUWVPC"), }, + { .name = IOV("lwyQbnRHvYcjOqwDzKf"), .value = IOV("rmcYHerQjJbtpoxltcjbMyevSdtyeuePtHumNAHHVZbZfXFuYscyC"), }, + { .name = IOV("iqsfpzWHQ"), .value = IOV("aGwbcEQOrToUvrcizPqIxVhRUYMlJOuBKJtJUIEoxuwaeyeOuyDoaEmVFPqtm"), }, + { .name = IOV("vNKIlwFzfmI"), .value = IOV("ktQ"), }, + { .name = IOV("zSmIVWTN"), .value = IOV("OVTQDAvrPHEsubHonK"), }, + { .name = IOV("GLxEnr"), .value = IOV("OWL"), }, + { .name = IOV("cSPJhBpBiKvNPBjgOOz"), .value = IOV("AXjCPfRitfpVlsVwE"), }, + { .name = IOV("uoy"), .value = IOV("gtGimProGpdDF"), }, + { .name = IOV("ZAYveJuA"), .value = IOV("aygIwpUBTCBSCTTnhHZnvTWhclUDKiPpayXONskIpIwUDdFwbisTxGkOisEGmLdNJVGaEyRxf"), }, + { .name = IOV("cMQOFwOFETq"), .value = IOV("PPQaldOWzlDZXvnNiatRORqKNMORLRfDMaLTdoHDuRqYMdOODqHHkeQLDHIaiCcdMjnug"), }, + { .name = IOV("OvygFgyamKZL"), .value = IOV("oncngNVXCIZEYdBtUzKIRsPStn"), }, + { .name = IOV("XtEew"), .value = IOV("qtLZnHQMyGoPTYcPFqGAOLPoO"), }, + { .name = IOV("WlZrVjkUPYqHZzmvLaTp"), .value = IOV("NlPcapZoppWoVfHhhoXVGyDbcUQdrDIOWshlFjaIALkaNvGnyk"), }, + { .name = IOV("wsfwVLN"), .value = IOV("LZE"), }, + { .name = IOV("nYmtJigpaMeHxUDh"), .value = IOV("qWbNaRwcWVcOCIvnMCcXHoVYjddfYEGCcBxNTJOuApxGzNavRulTdSTgbRGkPicMGH"), }, + { .name = IOV("ZNQTXeTIOQ"), .value = IOV("dgPVPxTRpJ"), }, + { .name = IOV("ZCfvYKenfGpOItf"), .value = IOV("kNPSBPReGhxJUyFmZwkOeKYPtShiwDGZlvcwfwHUcYMfebftoON"), }, + { .name = IOV("osy"), .value = IOV("ZBgEgVEiiIuwcaEztLZtqLBzaqUdZByZTwstTWNqOtTMVWNUbafPkiVYMVqIxtdZNWxcNIrt"), }, + { .name = IOV("dglZHqbqNCRlnppBz"), .value = IOV("FoIbonGa"), }, + { .name = IOV("NwVEKxTepuRkQ"), .value = IOV("rubluLCZvYwkyXkSqqrudhRqxKtwpWiAqGnQFPDktyvtovMHIZ"), }, + { .name = IOV("ldJasq"), .value = IOV("nKem"), }, + { .name = IOV("YZkNSq"), .value = IOV("pxLAOVLeSerCvBJpKRKlrDAjlUwRen"), }, + { .name = IOV("HrATooMXFocaBKZfA"), .value = IOV("INrwdMMHJfk"), }, + { .name = IOV("wufFtnXm"), .value = IOV("dPRCrNgydamttKFEijwlvh"), }, + { .name = IOV("hQHPetLVew"), .value = IOV("DkdkvDcDvRUXZBMVYZghNmZe"), }, + { .name = IOV("safhJvO"), .value = IOV("JgIaFPXTjBdUqVmdGHBvLiClOyxrtFVikkSKNDwjaNSJrjsYnbZUxsWIQbeDHW"), }, + { .name = IOV("PBwaSrOQHgxTkbfTmlva"), .value = IOV("YQmnownDsbTGTceIepJcDhTdVEeDNIvIFTXhTRmyYGdvavWXhhQFTFBgwJwKajxmMxjLbyGax"), }, + { .name = IOV("RAkicTtjS"), .value = IOV("NTBedFd"), }, + { .name = IOV("yCG"), .value = IOV("kZhTrBLMTJaj"), }, + { .name = IOV("jc"), .value = IOV("wsYYbOowsnzFQFBSckHJGDrVB"), }, + { .name = IOV("FlpakaEKxRp"), .value = IOV("N"), }, + { .name = IOV("d"), .value = IOV("edDqbyAsXDdqJkpepDPcYLTzWPsWXqnifUKkVypzCQPdFdEqoirtZ"), }, + { .name = IOV("JkszXhzqvUMgKx"), .value = IOV("TaYoJQyUfoUiGxMQN"), }, + { .name = IOV("EyS"), .value = IOV("jmIiMYIBeScWbzSeVXSHDBWbtcTzhxLzJfYBjwxFf"), }, + { .name = IOV("XKAzdjEMYIDxCZeIa"), .value = IOV("dPvceNSfubyLNlxXObCFZfyfcqFhgTYaZQuHNF"), }, + { .name = IOV("PELvIH"), .value = IOV("g"), }, + { .name = IOV("XLXB"), .value = IOV("CvcirQSoAgAgjScCLUCglpwyzxbshMoVoFhKCoypFkdarATyUyfMSbMbNBhOykwPEGuhCdJONaRJzVO"), }, + { .name = IOV("abkxLOEfRGHZLdQOiy"), .value = IOV("eVdXOyotjYaNNDfONExaDXVyRoQUejyRyjntovsQOURDlUqgbQwxBPPAHVRFHJtupKRynXiEn"), }, + { .name = IOV("epbwAA"), .value = IOV("oVGKvcnhiQMbosuEfEashMEULFVdxUEwfQBIvDvALrhCUdX"), }, + { .name = IOV("lGebXcLiWQKUfLrg"), .value = IOV("rTEHIgIPnzVAXEfgWARhTArwKBkrWRcvdCHUudYhzzBuoBLgSXoKjSYUenXWblsWthZ"), }, + { .name = IOV("kouKVYFqcHwR"), .value = IOV("SDMxnjNgIRfsFcmlRUAHrVDXztOYyzRXkYUmgLBfyoiBhNjgqyUOydEoDTXutarDBps"), }, + { .name = IOV("jiMEV"), .value = IOV("zxScHKdwqlMjfsFTXkl"), }, + { .name = IOV("YfSsdBGta"), .value = IOV("UaeHTusnEKMZtLASzFCIrCaEuXLrnfBNwKKWar"), }, + { .name = IOV("fQUkgOQhKmotvO"), .value = IOV("NM"), }, + { .name = IOV("fjY"), .value = IOV("kSWsTrPvDDs"), }, + { .name = IOV("vtKpl"), .value = IOV("AkyhdgPRfGZmXyqfFk"), }, + { .name = IOV("hqnmKbytMJckMmJM"), .value = IOV("PyeaHLCTQOcEEfzyJXh"), }, + { .name = IOV("ZlITBjrq"), .value = IOV("VvDndsHdYoJcsxJVdYOHEaSyBjInczVSDBz"), }, + { .name = IOV("DCgDMVySiHR"), .value = IOV("sdfrIRWPtNUmMrTnaFyVvayip"), }, + { .name = IOV("BsCaOVVvRfwdMuTSQV"), .value = IOV("uReBjEq"), }, + { .name = IOV("EAtOhDm"), .value = IOV("KiLSziDKMlguiTZzNtDPghCCgzqrqYEqrCxfAecNtOotGeNFfqRtMehKpmaHdowRPfBTwDAFlP"), }, + { .name = IOV("FCNbjqcwiHsnlbpG"), .value = IOV("gMnBJqXDRrMEaeipZvHhoEsOBlBOFMUSsDBDOurrVVEPYAugd"), }, + { .name = IOV("VdKX"), .value = IOV("kmpzvYhEUvsoOzjkdqiasEhcougstzHflhYAVadhOhvTAEjCjdKCtnHHnwKSkSYVZNk"), }, + { .name = IOV("jiDzVmiQ"), .value = IOV("FltKZssApxyudkEBggtIzPHvHHgnkDSxuuTidCTkDoxdYpUgucfYQkwvqGPfiAEYnxpO"), }, + { .name = IOV("JuFqL"), .value = IOV("yWZvQwIkntMoPGvDWxrdMBFAFtTujuRitToOWIRTGnaivbxQUYpVdzNtNCrzICAG"), }, + { .name = IOV("ply"), .value = IOV("WprEcCkpthWxZhFlJcEJpHjSoZkXjmAVQOpWaFfidsTGfCeDVbCFHFwWCsWjBESWUqMXkpsCaU"), }, + { .name = IOV("AsBCnXKRHxIkkLTXbr"), .value = IOV("hOqLrUDSsWuzjnoPKWULJsVnaLmQCcBudstigXehZIkTXnPrDLdebqNWYFcIzHSXMmycUmS"), }, + { .name = IOV("YGrkJrBst"), .value = IOV("JuXOZAHKNfwNbhfleOOvcpUxhuMBG"), }, + { .name = IOV("QkFrnKmDpCJFql"), .value = IOV("DMRe"), }, + { .name = IOV("tk"), .value = IOV("VIXEUuKKulGbPRFCLSbgmxWLhHuYaNvdsYROlb"), }, + { .name = IOV("QkcnexLTWhQjNH"), .value = IOV("xFRscDIMGOnmCkbaqhbTkXWZGCuNdXiCexMXpHxiJOMfKqcrixRBcKRZkFdLRJf"), }, + { .name = IOV("GWzFZfHOZrSrLnom"), .value = IOV("JXwKPCIuzwUrvTonTSotpuQ"), }, + { .name = IOV("AhRc"), .value = IOV("rJtNxEsDAjjlwcnytQrqmIeInCKuWQTVyOIOIVDyTgTezeIuWyP"), }, + { .name = IOV("BOPcbXovninpH"), .value = IOV("NJsUmoRfjooiyAwPBVesMSTPuKOOfUoflSjJUayEGeOSGYjhvBTevchQnp"), }, + { .name = IOV("oC"), .value = IOV("mALaMmHWObQbasUufsnIZyGMotldaeWUoJoYFy"), }, + { .name = IOV("xgXwXMmcJOCZ"), .value = IOV("ugbBDgUfDAhoYVlOgdDHMlniqjSGmGTW"), }, + { .name = IOV("SGkUoKRfgtPawMgsOBX"), .value = IOV("eDFtlTvYKWapQPmw"), }, + { .name = IOV("giPgwOBlOtiA"), .value = IOV("klLUSDYEljqvNYXovXVrGsWxAKXqHfjDDPBnlyCwNAPtZviWLrnWkrRkyneLzcMnY"), }, + { .name = IOV("nUnpCBmZzriMo"), .value = IOV("tOpDIMqaKKwCtHbLwwfcWChRpwzSioOLvPOrqbLyKLINbSC"), }, + { .name = IOV("kogpWXXmCMCYFEQdvbX"), .value = IOV("VFVQBFoYFdja"), }, + { .name = IOV("cvzKYEsyXSYve"), .value = IOV("KoeKBynY"), }, + { .name = IOV("KiVGCvnaDtdXndHPlVn"), .value = IOV("mRwRChiKhLGNRfwmXbjAipyQiWrRrkzWXNMfIhheVKCquLgTdVUeMdxWGpueRKk"), }, + { .name = IOV("wcSXJ"), .value = IOV("dXGOrIjDnDhCendzWDrPWwTzpAKzn"), }, + { .name = IOV("WExBUmGprIpHe"), .value = IOV("nhlLlWoidKiobZURuJeOTQnIRJuplI"), }, + { .name = IOV("kjJamOsWZAu"), .value = IOV("puZiUUpYQbiztirFvPbjeMfnldJwOsuKYdgBDgJz"), }, + { .name = IOV("APNaSxTNbNnQnF"), .value = IOV("mwKIdTZHAQagMTRAwqdopEq"), }, + { .name = IOV("XvsIYP"), .value = IOV("YoELZaQuQHeNrxpZEgwWwFodKPwAJIpTGeinfnKIPoefZGJXkFNaMe"), }, + { .name = IOV("QvJXrnJQwiCcnYLqXran"), .value = IOV("grCgnsoqCPmfgArZKiByfIiSJrznAwSxTPRkLFZGFDpmsIMjCvMmHAgk"), }, + { .name = IOV("E"), .value = IOV("vuRoidTnQyDVnTjKbcuJyekszxidtmBpXxkZZOhLPrMczhgK"), }, + { .name = IOV("snRPjnHGxknpyhjr"), .value = IOV("DtsGKdipDuVKhLRZoKmNYCAVjzzLDNaWkEKgtMXLZOycrgUMStiGehvSRhtPWvimHJEINNRf"), }, + { .name = IOV("AxqjoOfRwmm"), .value = IOV("SEGanlxNSNVHCmECNpGctqHHzbsTVHQaPmYSJtdtaWsmEdUTjRgleZyxuZY"), }, + { .name = IOV("RQHpYVuaIOxRIjQo"), .value = IOV("HdO"), }, + { .name = IOV("eFrztuZGpruQqF"), .value = IOV("cVEQbJNRVCCkKAyKFhbtmfhFdTxsyOfaQcOBXiYQBVKOECXn"), }, + { .name = IOV("LQwpshGKAMr"), .value = IOV("xnPusCotAZSlVtPCnVOhZaptEewxLqxuBEbfqLeVvmNSWxtTvHwn"), }, + { .name = IOV("ekktgcBNMOSq"), .value = IOV("FzTpmBplzpPxXsNlUKbZJaERWQcbT"), }, + { .name = IOV("NnIYOS"), .value = IOV("IilgzzpuJfvDFpTYzBebCHBQZHofPHBQSnfJjJVyepsIRceRmxzofmN"), }, + { .name = IOV("YjmkxRmuXzeX"), .value = IOV("KgeoMmwtjmFnjucygS"), }, + { .name = IOV("xUUGFhcsy"), .value = IOV("UShlpMQRMygMnamLUYWVcNBrcUhucrEdyaQEtTJO"), }, + { .name = IOV("BZabRQ"), .value = IOV("ggKdLftlXyosrSkSMLIM"), }, + { .name = IOV("osqAIPxbYpVnH"), .value = IOV("DGrIbRpEKNdaZEliLMqQnobmkNaelbxyoynOB"), }, + { .name = IOV("FAdztMEswaKQM"), .value = IOV("iDkTpIgkX"), }, + { .name = IOV("UsICsooxndBFcQAsuh"), .value = IOV("aqYxpZvsaejTRnxrFMGhXWFiNZAydAOsHRZJXMAjyhJdGolrbTZZDGYznekd"), }, + { .name = IOV("lBsFDITolQsOrNPPeRP"), .value = IOV("YHdVgzNddjoRnrXMTLsFYVnNUIDlfcLYlnKPGgoYCUNnfTIKyZoiaeNMabDq"), }, + { .name = IOV("QghKBmFTajhlCW"), .value = IOV("MQsCH"), }, + { .name = IOV("gDE"), .value = IOV("eMLFlDoQDZobXNFGgueDLUDFdBLUgCwOqgcmaQpjBBTmvVIjjkHwfFrlqgeFBQoYAdvlc"), }, + { .name = IOV("zHalyJNRVDftUax"), .value = IOV("NzaJTEZrzSepphrcKxzKTaX"), }, + { .name = IOV("yMMDBaqSiTJVe"), .value = IOV("ecHueuuFcWWhyJF"), }, + { .name = IOV("VcrGMmtSAvr"), .value = IOV("EGINAR"), }, + { .name = IOV("TXLWrtzrHYe"), .value = IOV("lzSPoWTsnuUpADrfcDSOyafaPnx"), }, + { .name = IOV("OcAuyGLLFH"), .value = IOV("JgFrXblVNvhFkBCfkVpEjpVDRINDzXasSSGgBnfkMqAWBClliyUYcBgxXFNmPnwCcVafxXrRLfGYUlsG"), }, + { .name = IOV("AJKJVkAng"), .value = IOV("VxbrVNIOwwFfNgOvLRAHImYThoWJGDYNaICTHwxSlVNotktwOZitfLLJkeMWMkUrGaYbcb"), }, + { .name = IOV("Skvi"), .value = IOV("pjAxMpOSNjwzxkRwezg"), }, + { .name = IOV("mW"), .value = IOV("oTvVFXJuywyuFzOEhaBoZzFVkn"), }, + { .name = IOV("pSajJOQYGqYMiTWds"), .value = IOV("ueIVUWvAfriyOzebhvfyyZPFnfnSj"), }, + { .name = IOV("Vs"), .value = IOV("rj"), }, + { .name = IOV("IwaAXwtpwEsqsis"), .value = IOV("ZzxafFPRpxfJJZPuCZylAitLWxhYOObUMKWmXESHTTTdYPmQoozkJOgroFmzENYWIWjoHOZBwUgm"), }, + { .name = IOV("YOyqpfJMVJl"), .value = IOV("XaNMzRZejMCbIthKhVtfRcqaJNvhzubwuzfJTbFKgePurqqSSJObhiclwPuiBQIdjmCYx"), }, + { .name = IOV("qLQaoFQZ"), .value = IOV("akbAGvFZVLwQekKUHnUSVAYFLXvtlRcnDYCUhQOxOSKiZHLctkQNvNJhiqMzjZgENZeE"), }, + { .name = IOV("vtNmJXyeWlNsPOXlW"), .value = IOV("qmpnsNtAbgPuqGvmJIKlAcjcZtkbsDuTmeNcKZKQOjiczXEJfaPYdYPqXhfQH"), }, + { .name = IOV("Zzg"), .value = IOV("ongkL"), }, + { .name = IOV("XSFohx"), .value = IOV("KgbzbbERsmKnKtCchHmjGEhjELNkwzXFOnKLPOgryKrXzIiKT"), }, + { .name = IOV("UuIrDxwTXrlJagA"), .value = IOV("luCEcRgnRjyImvoFUIi"), }, + { .name = IOV("Swkt"), .value = IOV("VfZylQjursWPYMVgvzqMLauqOoEKjxIYSRPhEzNwBukegIIKMzUQCcaSibJMMPU"), }, + { .name = IOV("eHjFFsJwPFOEGwQqK"), .value = IOV("ATcCAkqzjhlJLHfZZr"), }, + { .name = IOV("aODcuW"), .value = IOV("GlLEapOtBmEoPkGBEilybUHoNNHKeCCPfOkJ"), }, + { .name = IOV("ZcVdchWpX"), .value = IOV("ALRkUdmFaYXXtLZDTaApjdYJWvDnMjKDSWLffCUrkmfOaFUOKvWqNciSRNgCEGEhJDf"), }, + { .name = IOV("rEZrjuAYKOPdBuY"), .value = IOV("eRznGvhOyhbNdEupnHZbMIvbHQOvNimjPrBEQGlNYPXPLYXyaoTVALSEDoGMIiMtrstEjpaLXMbn"), }, + { .name = IOV("eLH"), .value = IOV("HKbnRjlCzeMAnRdEoFgDKiOYujQBtSC"), }, + { .name = IOV("APKWEjsO"), .value = IOV("cWaaIRqdEoHdazGpSkKejjMrkalWUSelPHCiKPvwxlbbsmSdWvvwDXOggjfXSKgYYnnWYmWCIhnTS"), }, + { .name = IOV("aspBGppQdVAVZrJXqM"), .value = IOV("iOR"), }, + { .name = IOV("THkfeIHWkUEQh"), .value = IOV("vpzRGNvvvVGAoPHjyPgVuhRLlyAZzCLaBnKhqcTEKrqmetsQJFxNcguuViwMezdlPCia"), }, + { .name = IOV("A"), .value = IOV("vlsnTcdZiVDfz"), }, + { .name = IOV("VKsDakQw"), .value = IOV("afGtvstNk"), }, + { .name = IOV("DoPsUsIPpjyvU"), .value = IOV("hzTKqDdssrbQKDqrBYNB"), }, + { .name = IOV("naDDQlvpThdxWDVbH"), .value = IOV("dBvbWDlrhNbLQgQl"), }, + { .name = IOV("IzXKtFdqfnbmC"), .value = IOV("TSofIQuYktQcgxUstKomzDRvyAJOaCjyJPQCpTrApQAsxoaKZIxHfvKHvTuMyKFYDJ"), }, + { .name = IOV("GPevqETjTKRE"), .value = IOV("ugEqZaOS"), }, + { .name = IOV("CrfLRCtTBQWWeoQDVEU"), .value = IOV("poiCESrZvinGllyRWnvjFdZVlBGSMjfPR"), }, + { .name = IOV("sQrqoBKgpMRXMYR"), .value = IOV("NSkwXbLSkI"), }, + { .name = IOV("wxkCCKJ"), .value = IOV("Le"), }, + { .name = IOV("TmiWjhiYFaMTOho"), .value = IOV("CYYuKyJaNAq"), }, + { .name = IOV("cvAMIgtVzzaInWetIs"), .value = IOV("qtZuNqSUSARxercNOchhPrCCFtLNCbrptxRKa"), }, + { .name = IOV("ZwIiN"), .value = IOV("eVwYOyloodE"), }, + { .name = IOV("PIjsZotnjfmyGS"), .value = IOV("ZAobDdBTWdZRRPVjiGTcmNIJEhhXIHeVMlXwNIBatXsDUwsj"), }, + { .name = IOV("pOmWlfX"), .value = IOV("EHmFWMPPuQJObLbrjuDAbvsRrmeAlHaOoYKWInTVRCEfpymcQOTSLInVpGscZCIBXMqtW"), }, + { .name = IOV("KUCRCTcqwzWkW"), .value = IOV("keRYeDvnCFQJgrJaLKEMXvCcoFDQBhVuQvegmFsvSSFcVrNaORUYgkrwNBPzNlGUwgxThM"), }, + { .name = IOV("rAwbNRxfQaFJYrmyvrev"), .value = IOV("hhWsXSEWMCtitJfxhbC"), }, + { .name = IOV("cayuipZgQwIU"), .value = IOV("cMbYDAlTdETTGIsoCGKJEeZBZetcYgmGFOxLmlNND"), }, + { .name = IOV("HQNkS"), .value = IOV("dmUwMwKVhMUTZXwVBISqiRZYrQnQI"), }, + { .name = IOV("yLgruVRnxhYHD"), .value = IOV("fpBUslXqIXVFiPTYbDjA"), }, + { .name = IOV("cSdCcRgGlZFUon"), .value = IOV("JoVxLQBYYQntmcVzIPNijuqMnlZXwJCpuIFTQzqBewhZ"), }, + { .name = IOV("PPAV"), .value = IOV("aVimtwxagkibIqtVrsHRThD"), }, + { .name = IOV("ABCQdOlhwbDxejZk"), .value = IOV("JGsjjsVIijNBOucoiwRrRszDYAvJGqCFYHVihjuHREVqyBqhEgsMQaJMpMhKqpTBQIdPQisrBu"), }, + { .name = IOV("HSXkwVoGEjqFYKTnK"), .value = IOV("qkJRtMRATnIzEAnWetFgrqZNyDHZyKEvKKCxnnhDaowXWGKZxJskvKSFxNxjrtQqu"), }, + { .name = IOV("QhAb"), .value = IOV("jSmSemOqgxjVWwTUknSTRQZYALEbmGoQlBDiCVBLQpitzxCIYxhHl"), }, + { .name = IOV("fJchQm"), .value = IOV("DnjvccOZnRFauyZrzGDPFYJnMkioRujsvSLIizujpImoJhjrCnEAkMQieyJeHNkHIPgKUpRcmyrWSf"), }, + { .name = IOV("iXQUoRiiCQvDAjhGa"), .value = IOV("OTOWTSuqJOQxPkESTEksWXhHxSHhlLiNAuRLSsCGaKbWQjPaWzehhaAmxymFhLPVZBF"), }, + { .name = IOV("WCZSwDBG"), .value = IOV("YNRnZYyFMXkhbnWxCUBsVjnlMzaxTHhjdIL"), }, + { .name = IOV("beVHmgeBqU"), .value = IOV("GqoFKsHFuzkflDdTHWlvmCADUsfETkTcfHMvwcezqbkIPtkRZShWMFFgrxlFApnOziYtVfFXuW"), }, + { .name = IOV("lOgwNuIipPIMdtbCEM"), .value = IOV("WDhJujtHQGzIboQLnWIfSfVpgORw"), }, + { .name = IOV("cCJtNTuJisnvDLOG"), .value = IOV("rhfEuSQXkMJoLUxDIsgk"), }, + { .name = IOV("BSqAvCPxyWM"), .value = IOV("gMVh"), }, + { .name = IOV("KXjbIoZc"), .value = IOV("hvCgM"), }, + { .name = IOV("dFyCBPX"), .value = IOV("RjP"), }, + { .name = IOV("jJxC"), .value = IOV("rJiGeUjgpKcxunjpvKZecltSqwELDYOEQCRuHtIYfwajjzgofz"), }, + { .name = IOV("XObSGzKNkVtn"), .value = IOV("XpegBgpUyVyFgPiLAKbtCHpAqOwOvC"), }, + { .name = IOV("nEbKnIQbRktVYxAx"), .value = IOV("hdwkptKTL"), }, + { .name = IOV("MvuHoc"), .value = IOV("jeIcmiPjvepKZjgHeGheOAVVYdsMazKgMbEANAhtyNoBQLixCVaxGpdZcQzQy"), }, + { .name = IOV("mFrbzdC"), .value = IOV("juupciQpaglqnpYgynWTggGxqFeuvTXNzLGkAVrRvpmPpDAbjbGZhysgmoEcpm"), }, + { .name = IOV("ODaRAmXQ"), .value = IOV("WqLiAxwT"), }, + { .name = IOV("TZwPMmnvqRVFDswzT"), .value = IOV("IweSPGBhYBxkDAVLnSkYotuTOThpilDCZjDUGY"), }, + { .name = IOV("ctbeQim"), .value = IOV("OJHvsODcrIbMaJVfhyFyiLSDcZFjvWXTZbFBZncDoZSMfLhXRpdkvDNeRqszGvlF"), }, + { .name = IOV("Kh"), .value = IOV("JSPxnwLwhPbgidJwVDnvKJHdgCzkxVBQmiHqmRLKiynsbqIpihxDoEnlPLdTQtcXnWNLATuBWI"), }, + { .name = IOV("MShkZXRfoleLAMIu"), .value = IOV("kFrOmQBGCjgCoqTqCIsiFCfmNTZUbVAdOyEgdhRkpeowsRhOuBgVahtnirax"), }, + { .name = IOV("GCg"), .value = IOV("rZbcMUexVcDedBjj"), }, + { .name = IOV("wlOqUwXt"), .value = IOV("WfYBqeNdgdEoUlUijvfxJguDfdBKdVMFZsXgclkKdvLMuXygeQsYqIASENlZEAYxpu"), }, + { .name = IOV("LVELCRRYSoAxMFIW"), .value = IOV("TBg"), }, + { .name = IOV("RgioxWcodzZxT"), .value = IOV("ahycqnZoGqSuN"), }, + { .name = IOV("oTvJdnD"), .value = IOV("WplPxciUrBbaCELmgXBsDAwAteLqnMxnLGfzIDbKJCpSnlSnaOC"), }, + { .name = IOV("BrGlTjQrSnkCdtm"), .value = IOV("LDJiABTMlvqdOIctBIzUIOKvCFDOPRwxnQmqtHDaIHBZBTeKZrmpwbroZWSAVHLQLI"), }, + { .name = IOV("tuj"), .value = IOV("wEIpAkwagUIaRKVzDrqyTyhzoHNezEFPqWBQmVwnoKbGrYzZOpEps"), }, + { .name = IOV("RVjnH"), .value = IOV("EGlQSyLsrIRahJEmQrgjOTYFGqsbYLgUcIwjrEWhzBmhJfWUtzVvXalmWNssJWSRID"), }, + { .name = IOV("SVZeZieesoDQMWQ"), .value = IOV("zWebRKVIWoPqOvxijOPtMFNQRp"), }, + { .name = IOV("eikOBwPpIiqZlOic"), .value = IOV("wqvBfAIcXHxCYslIseeGSNNWsuAlxYfFlFHRMqfHRAeBOKJQFkVIlrG"), }, + { .name = IOV("mbRSlZsXk"), .value = IOV("NIOsZhAKusv"), }, + { .name = IOV("bljTrbY"), .value = IOV("UThOPmItqzZtyJQEpTbmFPmgCy"), }, + { .name = IOV("nB"), .value = IOV("XeiSlBpaWDioIXxqTeNVdxxrYUVnGNcSGJnODnkjliBBkBGuimDXXpIGlVeqBef"), }, + { .name = IOV("tCckFcwewhETk"), .value = IOV("CTEnItqYFkQvDYTSOJjaqGglfmrzqhKBsRpCcbhfQzuC"), }, + { .name = IOV("XJpmoxrEfJqYgbnU"), .value = IOV("uPGkczSdylrWWyNNXNtrpYqXEcCbYknTLAWXMcrxpPcrvKYgRlJgiJOwQgTPqlvBqtpcGMHFw"), }, + { .name = IOV("zCHemswyneIH"), .value = IOV("GqreIrvuNLopQGABNyshRzCQYislMFmohEtqZaHFyYadYDUJrxrgIOvBzeZpVTIuWWtVVHspexM"), }, + { .name = IOV("rhpdWMxZhxZxDUEbgliM"), .value = IOV("OYqsAdjMkslj"), }, + { .name = IOV("eoMRSqDyaFbGrZjGrOa"), .value = IOV("RnIbseoxChPFbvKXEOUoPiYOsOwzQGwMabEhmXXQNnXJqhyH"), }, + { .name = IOV("ORjpFyCfh"), .value = IOV("TjVmmQZNTjUeCWjOKUtVXSDMv"), }, + { .name = IOV("LpD"), .value = IOV("hXaXXShGaGFFNh"), }, + { .name = IOV("rccMboQY"), .value = IOV("qBTqaDSvrKEiItRZyShGzbMTnpabpiYXrlpyczsEDNgVeAqSbkGJlNkvdzmpTkOyQbdfZXWQ"), }, + { .name = IOV("AVRlY"), .value = IOV("eNNmlffuykkMxhnmYwYHZCGdbZOlzoobTwMNqOazaCEmbcQMaMcNsSqcjeEmWk"), }, + { .name = IOV("KV"), .value = IOV("OVsKJDELGXxddgoVukQVoQseIJjfzwgJyAAZzYHJmYFMaAUbVudUdFLjddTj"), }, + { .name = IOV("g"), .value = IOV("HGABnKDKNPQmlro"), }, + { .name = IOV("MclIW"), .value = IOV("bHlcoMLYpgYNJkVSFfIrMNKvUdbqadaJZRRHqBoOHMjmwaweUaknhWCOa"), }, + { .name = IOV("qeSZgc"), .value = IOV("CKVGXqAyjqL"), }, + { .name = IOV("d"), .value = IOV("ZyIPINQtfhPVhSdkbDLMohuDDrqvhVyBAtUNmcMZuWlziSCe"), }, + { .name = IOV("wpsfGSuAAR"), .value = IOV("fVwnpiixQhyeJMCHJrTcYYcDWw"), }, + { .name = IOV("BmUm"), .value = IOV("RXkAkxAfogwXeVKgJGaRRRRPBTTezNHisNQZkimzxXaLqxgXdfWCp"), }, + { .name = IOV("QaXPLmfGnBBoyo"), .value = IOV("SFqeBdVyjeyRE"), }, + { .name = IOV("XPjkPnGMozYnadZUaITG"), .value = IOV("UFzusCjGSCXmSUpWjUvWvQeBkgmrbxMCMGVxbLxGrALOdDNKllycmvFumjIDZzcsQCxDXvNic"), }, + { .name = IOV("APwnEECXb"), .value = IOV("b"), }, + { .name = IOV("R"), .value = IOV("NvOEKtHRcHJntYPWmuwsYQOtnoCyFpAtQgrAGxRUpfHtgmoBlSKgtkgsbgI"), }, + { .name = IOV("ZEYD"), .value = IOV("oSCxwPvgOYLUHNXLGmDobXMMBWIjdOggIYwkJGzcGk"), }, + { .name = IOV("eK"), .value = IOV("mVpMiIFtzFidcrBmrgaYLuEsXvtazCXjLgmpqRdgRaXeMBUqsBLbOGBHZWRTXCgSGq"), }, + { .name = IOV("ZNzl"), .value = IOV("eAPaqNBeWeNOxlaqsJyCwbYsenugOFlmqtaJKsKFDbV"), }, + { .name = IOV("xxJDNBNoZnl"), .value = IOV("znwsGjggpiAleTwOuzrOPLcNFABfSaoivWolOBoAe"), }, + { .name = IOV("DokWUsdyzcmqfNptYKa"), .value = IOV("MNPnvxttxIgxhNTSfXulhyGQJIUTByRQUHGNbZyQc"), }, + { .name = IOV("nDfPpvyUJmJGdSiPxg"), .value = IOV("QIQsdUaiDDMQBdtZfICVjnOsFgLfHeeerXlsSljfLvBbHpXcDzNHoHQhzNtwueVYgtBDSHc"), }, + { .name = IOV("JFCXsSphpjepTl"), .value = IOV("BNssFgrReplDmPURPhHjmCaQbeYYjQvWMgaabyaPiPJOhChIMjLLlilNZIew"), }, + { .name = IOV("Mvkfh"), .value = IOV("dINbJtakdJPeXaQkRDQkHKBXlxgDVdabAzhZNVIyNRkxeJGJOQoCqCWG"), }, + { .name = IOV("kxzUynArZVHQMAv"), .value = IOV("rXYpqlOraLtjvQkGGoAfMyONa"), }, + { .name = IOV("gADmvBKISFMy"), .value = IOV("tssGGmJYIBZnFvKOVUZzfAZuHCbIioKNPBikrZzTqUUCLqJgGTKJDMJOT"), }, + { .name = IOV("nBTWYdJ"), .value = IOV("HszDiXWTQVXnf"), }, + { .name = IOV("IONUoAMkKtGFUVsp"), .value = IOV("TJSFosVNSXMxVSClyhbNyfqmrBHEGmrOypA"), }, + { .name = IOV("DOnCzTTssf"), .value = IOV("SgCYMAxloVpveyveaPIuNbINyralmcFgdAiAvCKPwhEWISKGuIautPLYJVDHBczJEssWWeUJwUEzkJAw"), }, + { .name = IOV("KBRWny"), .value = IOV("XlwNBKLUJBRQAYhvEfbeQwLCJTlFztUshAusvs"), }, + { .name = IOV("NCYt"), .value = IOV("eJzRuflELMwVojuEqViRMOcuyMYpxHHdUlpuqxYguFUGrovmPGbBiuoLAtwJMYd"), }, + { .name = IOV("owmilBYWeHh"), .value = IOV("HnkKCNrSTcZAGytXFBnIYYPgEUyOMHXz"), }, + { .name = IOV("EgOHevYPX"), .value = IOV("hxdhGMbzhZULssItoicxuzoJqBUHEEFPdQAGLGHvkMRQqGrEpDNaxa"), }, + { .name = IOV("zSKKhMTraZmuTQG"), .value = IOV("ZEDFCeSFNsBYVlMv"), }, + { .name = IOV("MylafzOfjUKTJOoVcHn"), .value = IOV("JdYxxmlfrXDhNWxfgfRywMLEibSbnnPcuAcCydyVABmmVxLWsVvCADuRNBMXbfNYIEAKSySQ"), }, + { .name = IOV("GhMlomAWpRdj"), .value = IOV("VfqSN"), }, + { .name = IOV("PLljtpCPWXCDXAfZgwfA"), .value = IOV("dnXXgiNwEvgLnLwxvJ"), }, + { .name = IOV("oIt"), .value = IOV("BAHlQshgHvPHlUxcgVCvjTjjDYAPaazMIgArzfUIQVMgmlEXKgU"), }, + { .name = IOV("ZgBvz"), .value = IOV("gFefLTcvZFJGuEdnMNnYjoBSVSEREGlSKesKMdKvsDiETobWwRMurzxZgBckMGyAmpRpsKqMkNfJdeD"), }, + { .name = IOV("DmSyPZE"), .value = IOV("ICbAkxeBPKKWqWkUKVdQYaBXUghVOWgoz"), }, + { .name = IOV("KYXcCEYjMGqXtPJf"), .value = IOV("mmUBkoiNkFleKEGXtHRoBgEdzpUwfLVVAlWTBleymBuzyWVMXshaHuJBKSppBuBhmPy"), }, + { .name = IOV("LWflAFAhCAAW"), .value = IOV("JsoJZxpBdqWemOxHRoyDKbtUugFKgZLiDdaRoNrjIy"), }, + { .name = IOV("U"), .value = IOV("tUftgubJlGfOzefUCMsixpPEyWungl"), }, + { .name = IOV("MjotIDnPQCHpe"), .value = IOV("krZBBxBYdsrVfhe"), }, + { .name = IOV("ThoasyUThV"), .value = IOV("nqMVnnsdRZsukcvlaBGgeKGnPuRZFAnqvBOTVfOwamvMMnhtGMqYxcXKKixbJyOlyMMLEJyxt"), }, + { .name = IOV("AlDYEEYrdbT"), .value = IOV("fTIpDaooaXOLPSdaDsFcVXAUywRda"), }, + { .name = IOV("aQUVzQbMOudWjHf"), .value = IOV("shKzzyTrTyf"), }, + { .name = IOV("kGvCQWsXDkP"), .value = IOV("EdyXZDhbpEFTirZezMZFTHu"), }, + { .name = IOV("DH"), .value = IOV("fXhmwhwjxaXvbEJPfvbftNqoSlkCwQVmpFcUOryacBhwrpDOPAUmndETZDUQuCutsFfrzTkHXxc"), }, + { .name = IOV("SYm"), .value = IOV("liMUbtrDDqhWIMMRqEHyPUBzMVTMjGzOwWzoohcudLqAdInVeNqxbSswcAaa"), }, + { .name = IOV("ZHLMo"), .value = IOV("PhinNktOVwnocZSJSJRrOICAngUodAWIylJDAeLiDdXqvoXcPpqmoNBgHaQVyBv"), }, + { .name = IOV("NDGNzs"), .value = IOV("noIexDZAmOabOpvQsfGksrzmJZsDQUYyhZZoFZImwE"), }, + { .name = IOV("loxBJxcskXZuBAgI"), .value = IOV("cgmVVvUuLRzoYKoVvbwxTujPSVZbWdlIgknBDmimaBqkrR"), }, + { .name = IOV("IBXpJwaZeox"), .value = IOV("MrVVMdTDgElFdfAYjachWRDlcrNLZkJDztAbkruwDGPdRmSBnzZyjxPQCJgJdgb"), }, + { .name = IOV("oHQq"), .value = IOV("UJkGXAKcthZzmGcxcFQeULisSfLBsyrpVHvY"), }, + { .name = IOV("aCmdMpOhkyxCavXSSAfS"), .value = IOV("wRZQlrKgiRq"), }, + { .name = IOV("TAoyTKsYGo"), .value = IOV("zCPNNpknzePGuURfeoQxUaAKgWx"), }, + { .name = IOV("WsypIkQlfRnvUkuqnH"), .value = IOV("apJzxCXHsEfWtkENWoULMpT"), }, + { .name = IOV("IaX"), .value = IOV("IuOBDmxZqoaaTSji"), }, + { .name = IOV("FGqglnoQhBDClJgPbGsJ"), .value = IOV("ryRtFcGyaOgtAQRLPjceWaoFkgfIOllsPFxNnnNWvAkPugjtLtVlpzwMXtfMkollxPejvPhN"), }, + { .name = IOV("TQWkJPfliQxpJLO"), .value = IOV("MIobBifm"), }, + { .name = IOV("UZrppANzjxnoM"), .value = IOV("wdbkgUEQELBRHolHNVKmvikKqlkQuLSokDmYjlmWBxcmXHeIAVLIqyeQElDYMEEFJwXlDpkO"), }, + { .name = IOV("Z"), .value = IOV("JBFxcnoSNGWqlQI"), }, + { .name = IOV("SUrJfhAXKGEwrwrKow"), .value = IOV("OQki"), }, + { .name = IOV("wzd"), .value = IOV("fEoHtqNhvVdMjaQrghcSEBeqPvcMQmxivYNaLeAWwBCcuSSPsYUvxBNSAZD"), }, + { .name = IOV("YGLKYKyLMFlF"), .value = IOV("bqauRNzjFEbPtyoD"), }, + { .name = IOV("WNpaSqeIidf"), .value = IOV("sSkxXOPqUeUfPRNDaYymo"), }, + { .name = IOV("NvssYnNDPDdDaK"), .value = IOV("dPlxERdzLQGEhKvXeHrzpSowSZjjsGRkNvuSRGy"), }, + { .name = IOV("pEcWoHvICHYHMJAOVv"), .value = IOV("tKUMKpuWkdzCuJfEPwOmTRhDhUgTFmeMeNlzhHokFUcxYzzhkvAvkHmJBBoPRgWTT"), }, + { .name = IOV("cK"), .value = IOV("Q"), }, + { .name = IOV("Ioi"), .value = IOV("YRHUINeyNefAbQGVcPjMMZIvtmvHZMasPtCWEHElxtTbEfnnoRVJmjsQhkpM"), }, + { .name = IOV("fbetUuQnsHHiuSmm"), .value = IOV("etSJrKqtAhbvxBMJKCBKUnLWqIRUqTtC"), }, + { .name = IOV("AQalghFQdreYtF"), .value = IOV("VaDXletFaJitDPXIefqj"), }, + { .name = IOV("zqkqoiKGbmlNqTM"), .value = IOV("dFUumMMzwoLXHBIMWAXGsHAGkSoIOwCdBZVMgenNgiKlqTUwsqOiRlR"), }, + { .name = IOV("ggPMUt"), .value = IOV("UmOHdOrjwwTciFHTIddYbkCxfaX"), }, + { .name = IOV("VEYYcTVPu"), .value = IOV("PvDWvAWuiPBDihELtrhkpal"), }, + { .name = IOV("LmtEZSWejhuDlGk"), .value = IOV("kTJHAZIkCxmnlEpqKijZvTabLBzVsdKHNjqMoWTzmWcyBFBAwoFJQZHUpXdBlidJH"), }, + { .name = IOV("xuBhyoNxqLPQX"), .value = IOV("vvDgRQRVbIGQDQujBUSFKSsSWqWYnjfIlj"), }, + { .name = IOV("HNTuVaUTesljQwM"), .value = IOV("uWERARspAdzBKFcOllZUVuNEsyFgtYIEhjfsDjXslBjTkgKAxIDlVymMPVmODDWKeouQU"), }, + { .name = IOV("ZR"), .value = IOV("DQlGasKVPAENpzKhOIfiWVuPHQsGAOjLqgSrxHIptioivqnBwXoDyDAHaKrUUYsZPosskFa"), }, + { .name = IOV("wacqmxfWeRTAILUIVBHL"), .value = IOV("XKIlVWCNhwsLvJMIvwnZvDhXXbQJetHJDVGpwYP"), }, + { .name = IOV("jBBSgGSviUVt"), .value = IOV("HloJhvscuCGWOLjcSThKBIecuhpdjfzxtdDUknVGDpsPnK"), }, + { .name = IOV("TdRbGRGwml"), .value = IOV("X"), }, + { .name = IOV("P"), .value = IOV("osqCJacRtVWvZVvjICBBMuEGpPkaGtFMAtcTCpceBPmIrQMuVjUFxMadjeGkBpXKzlgsJBDvoRKILvz"), }, + { .name = IOV("IxGwvD"), .value = IOV("zgN"), }, + { .name = IOV("AshTMJOXGDJP"), .value = IOV("ZGQUTioWThLNKzdCKVxMKYEvwZWZOeREhttzrcLOe"), }, + { .name = IOV("rVNG"), .value = IOV("kRTHfNImpIaNRekGmgbvFLeyUXUGpLDrbIxWfzsymhcKHhyyMoz"), }, + { .name = IOV("LJaXVRwePs"), .value = IOV("cpfRGCeygayxVYeAAbcCKcTvcIcnJAQnywBfRo"), }, + { .name = IOV("mLZamIacpeuNrwb"), .value = IOV("OO"), }, + { .name = IOV("VamniGoklma"), .value = IOV("WGTFkZHzh"), }, + { .name = IOV("bsjaKLuxlJnimjU"), .value = IOV("BJVSdPgyLKOVebwqmTSVuKYZWjXoHOLShaoIDHWfKahmVscwZnFDLfraKbtFhvKRK"), }, + { .name = IOV("mGQNnwGzzLaiXGUqE"), .value = IOV("FzjaJbhxIzQtiEc"), }, + { .name = IOV("mnEErExGKQVTX"), .value = IOV("ZrQNh"), }, + { .name = IOV("sxCwLcYjzh"), .value = IOV("BPAKmmfVQcpSUHgzqmxZHTDFhujGfdqJdUiBybfFOfD"), }, + { .name = IOV("iP"), .value = IOV("nQQyGPPKYUIz"), }, + { .name = IOV("sxf"), .value = IOV("kACSfpHMkhjxVaKm"), }, + { .name = IOV("IumyLFQwoocrVXIzKQ"), .value = IOV("YgFsKeEBPtIXRQUDYcAXoOWKyjCfIeekklOTndbXiceUPqRlhtmdLhGCsegDcpsR"), }, + { .name = IOV("ItQFqWDSpSY"), .value = IOV("TqlbvmUPCDeRSQxjiMgzEoZqldmnMGQaPCGLopkaxDWbPvQuSJCAQvsQzxVMixGUHHdEQAx"), }, + { .name = IOV("SzPLVxfNZgXBNmZK"), .value = IOV("tttsdmdafPqdsthUlVaxYCsflWeLEZLQyyZKlRblJAFk"), }, + { .name = IOV("OnloawIwrRKGY"), .value = IOV("MvsdchUKeJslulVImmkGNcttLcgaVJXsLWfrRGw"), }, + { .name = IOV("DeunLdmomiX"), .value = IOV("BiDeqeYYTemoIgWElgGkcvEetvtyGzTVPKuT"), }, + { .name = IOV("YoTyVUINjeYU"), .value = IOV("qkjlBRomEkqyFEeKhRgtxvSIcVTLXpMv"), }, + { .name = IOV("AlirOjloBbO"), .value = IOV("CObnFXciyssUnDaXUjypwNHytrZaiuaxTEfEARu"), }, + { .name = IOV("uItwSBGiixSaoZZMF"), .value = IOV("PUDPYsIJvGjXskhSxFYCsoAFtHHKA"), }, + { .name = IOV("VmayDIXa"), .value = IOV("FODAVoBxiHCFRgrpQnMBCnJwbkidzLkERrhPYlsivvtJRFwUnmiEchhQVqniNciyhxCo"), }, + { .name = IOV("TVFnjfdxaaMW"), .value = IOV("HROEUwFesvytuPCjbUoGRdCXuFatvf"), }, + { .name = IOV("cBztq"), .value = IOV("LhwFgtErCkIEuImzyQvyCleGoTvyFWVUwMrPUDnigMnmPT"), }, + { .name = IOV("FoAqdMcEh"), .value = IOV("VYXVJJdnQFPHGORjJuBYpkcENEXNeNamBvKKZouPyLDKJ"), }, + { .name = IOV("ggjDNvmZEqlYDwVNpJ"), .value = IOV("TmdQxUaCalgPGWYFYomkTpZEvmuxiThcPOAFQESvLwhtUfPquloBWp"), }, + { .name = IOV("i"), .value = IOV("tRsFhCItFtzDcvpAcWVsfCsuAAfevmzAsHwagxSWQJfTzsdNbqHIhAvWAAvT"), }, + { .name = IOV("NPepZLWsQrSCRl"), .value = IOV("MPTvBRGyDcyDynpdqQvEaqMptgC"), }, + { .name = IOV("gLBCsiCuVOG"), .value = IOV("vgREVdAVddJJIKBPTJoQVjPdbTxzHonXTYvjgzJLHnw"), }, + { .name = IOV("dATMtvExebnthCNFu"), .value = IOV("PtxBkfnZFlZHsxwaLxkiWFlD"), }, + { .name = IOV("IrAqRmrJbkRyCuOs"), .value = IOV("EHZrCaimTuiJqLKWWBeWOjPEMkKSlegLH"), }, + { .name = IOV("bDIZQREmim"), .value = IOV("RvUsNTKkfcoGqSEzkmDmqLlDyEDoDPyKHwVNtVGqyRyfkD"), }, + { .name = IOV("rFytnYfqTEj"), .value = IOV("MMrLlhPpg"), }, + { .name = IOV("BOYkXrhNRnsxreNn"), .value = IOV("xXYIbSO"), }, + { .name = IOV("eZmGCuURpUOuoqTnPL"), .value = IOV("BwoHcOBrsYJprJqtLEetcPgeuTKCS"), }, + { .name = IOV("SAxOWAoOFQ"), .value = IOV("oGcZEVDRkdgwFlLKIQByYahrFcZvIzhuPZdUiVToosKUTjEnDbAJLvTndeGZVyAgpTtsxd"), }, + { .name = IOV("uekuZY"), .value = IOV("jqJfGuRRPKhfwwZSYkbVCfZfBLXmQbZs"), }, + { .name = IOV("HGwrLGKQN"), .value = IOV("mjBmZLqyrVUNDQCRPWsh"), }, + { .name = IOV("Kp"), .value = IOV("Plmi"), }, + { .name = IOV("cXeqUcXuV"), .value = IOV("sSEBJAeDhLWDeRHsRtFhjPPjysCmYmesOQluGxJCztadNa"), }, + { .name = IOV("urQbyVSvvqJ"), .value = IOV("ldtIZKjxAWuOXueLSPjTthrhBWSlf"), }, + { .name = IOV("r"), .value = IOV("EYIJfwWbWxbmOpOBnMilw"), }, + { .name = IOV("rgJVCuxRfGYJCUzc"), .value = IOV("XOjXckDXcxNkWkwPXjYQnsMyvXSiojFiXFkmnxiPrBeBOllBLGQLovLyULOvAmYFeqzQHIvwRhe"), }, + { .name = IOV("xdyaxCnnZmwBhSnhnChL"), .value = IOV("zRsGGjwxKafgUXlXOOlWtijmqVxhcUsHqJUaSwBiploCuUaZWGsSfLdoxRBeuQnyQgXisbwThuqDCd"), }, + { .name = IOV("QoRvrOPXydvOvBWmJK"), .value = IOV("wNMVVL"), }, + { .name = IOV("ejZDIbyGSkLn"), .value = IOV("CsOMiLRRqtzDaZiKeHKuHOxCVPVsOGBFPmLbEyjJUGylqBuqQxIyuevWtOhnCOWvmZadYaRKI"), }, + { .name = IOV("LyPSwudzwJlz"), .value = IOV("qAbxOCNMazNOaOcflXbOBFbPMnuzuweyOSIQQQgplYGOPveYlzgXJMItX"), }, + { .name = IOV("omqIY"), .value = IOV("ETVHVHNNjvZibNIgLucPK"), }, + { .name = IOV("WSyVAbTR"), .value = IOV("KTiCIACaCnGWqyfmxksElPPWeUeSVqjdEwT"), }, + { .name = IOV("NGfkWVQsKIrVuLAhRPQ"), .value = IOV("hWEasKzvqhyvh"), }, + { .name = IOV("TwaOX"), .value = IOV("JywlUbVxxHmwmzOhbDt"), }, + { .name = IOV("MTskqmRBGgsdgPV"), .value = IOV("OkCQASogOiHZKVWTJhUyexqvXESGeJvOmubglsRXKBDmenwyTkTVRdcLqC"), }, + { .name = IOV("OhLoFqQuulnfWmIwqVVt"), .value = IOV("W"), }, + { .name = IOV("zctUuHCkwKqUyWueY"), .value = IOV("KedPREwIDezCzMQMtRdUPrLRASwImSktjiRKFlokCywnOBynfywWudNuzXXItPwIWJk"), }, + { .name = IOV("vKbzHRhVikDnRSyKPug"), .value = IOV("XkWrcHKJEYVFcAlaOUvJMitzDbcLkqMovYzPEFnVfQqYkLSkgbCJGUZdaZHJhSSlJecG"), }, + { .name = IOV("IlfJycspwSusEjx"), .value = IOV("KFPmkNNyeIbQcjaiQEjAfVPpbCvYPygOhHFCyVadVRF"), }, + { .name = IOV("rTpLTrVVgXnbjhRp"), .value = IOV("zNnYUbNgkkoJFBhcGRzCEWmKwiBXbWcexEYpA"), }, + { .name = IOV("zgOI"), .value = IOV("luoBTBeFzbHWaUepsBHbtTdkCeRlvvyhfJxTgLohkeTDYpFuGEJ"), }, + { .name = IOV("NfiztA"), .value = IOV("L"), }, + { .name = IOV("TlQxkEhSs"), .value = IOV("GdqVgvsRhcaaUtmUcdVxjNXISsTFFargDhuJsCbJfsAusqRSbwuEU"), }, + { .name = IOV("Nh"), .value = IOV("uLrjsaZBRvugl"), }, + { .name = IOV("hxFrqyKSJHXJFXsiLh"), .value = IOV("XqFJhvctsNLCKyhIbRFrovsEgkllVLhHVDLcbzBNFlcjhlkcWgiUeuOGStyZHCSMRftgVn"), }, + { .name = IOV("DzbcFgutLnocYwTxYbi"), .value = IOV("yJtYJZdDJIftYmnEJcLWjIuKBnaHETNnEpIWgZMGyMVUSZudVlWkkcn"), }, + { .name = IOV("Ft"), .value = IOV("mlIJypHwYXTXdvRtOQqZnnKvUnmfjfJMpDyxUPpdeunswrR"), }, + { .name = IOV("pLaDJtxaqkQMNuKnGjjc"), .value = IOV("rIJneraSWyipWBRecMzlZTLLsnQZAvsUYyFZsTWIsreZMayPUHaWsgwnhbmvbTIsXOoZqgTzSy"), }, + { .name = IOV("JpCvSSnDaFmtGAM"), .value = IOV("GaWaNYmsswJdIhyxqrDTGCcoPHWPWcRKGN"), }, + { .name = IOV("SdVmRQpoeZbeORl"), .value = IOV("dUfHEaJWlCDNwQqokGBqKB"), }, + { .name = IOV("QjnaiWYfzHVbsuEqx"), .value = IOV("TarCkQhpPkXgPFXMBmfSSAQvXqIqEiqlDoRKXEqIgaaKxTJcAFRoh"), }, + { .name = IOV("vJuDUTxEWQxTjgEB"), .value = IOV("LmPSjmCanGxn"), }, + { .name = IOV("p"), .value = IOV("sYlJKlOOoyDyTcApHkAruOMLBNUbWxKTYwyXIzymASdCHiDdHOoM"), }, + { .name = IOV("kzvBOH"), .value = IOV("IfRJcZAZrZtACLBetCMaLZhefCiggSpgxLQDdjF"), }, + { .name = IOV("zDVPHLwQT"), .value = IOV("GiQVHmoySXzkKBqGdNypPHQCDVxvObGgFsudbcdZpMggmuiAIACwOxLSPTIhhAgvrpEatQlMsNDx"), }, + { .name = IOV("HLAhkoChYIs"), .value = IOV("hKfxiibMpGkNSLPt"), }, + { .name = IOV("uZyeWgl"), .value = IOV("WMjparEEBKMlvESoDKTHiZReUUacmgIcNhuIJNZooby"), }, + { .name = IOV("zaAvVHTqbAESbZ"), .value = IOV("SspEcqrnkfaRHlyXTOsdwAllflrKNOEkbTlxRQwPUpWbVHeDClQYohPfx"), }, + { .name = IOV("bQoGCEyXqaym"), .value = IOV("GSkTWTlTwPIsnULiFHwMjMVthiQByEzIrlCrmZkVKrmzUpVarqAglpiXMCEoKmEBojnSUQntCO"), }, + { .name = IOV("hpDMiLH"), .value = IOV("ScScAYjotJfhwScAKdRZrHlyLObtjhqHcjyUkDDlafyUefoqWYxhDjLGHiBwkXlOXNS"), }, + { .name = IOV("jzqNbZjGfyZhhAFZPm"), .value = IOV("EiQfHsinnvYKOuvkhKKPOvyHRHleRrHySJTVOAk"), }, + { .name = IOV("lFKlcmyKBKgqRGfZplwv"), .value = IOV("kxUuQWiDuhkclcguhLzAEJPgIqOtPBFMz"), }, + { .name = IOV("fxPFxmVDtnsanGnRqQq"), .value = IOV("qVlNk"), }, + { .name = IOV("jeZiWTfuKKkvKN"), .value = IOV("cUVPbBTcoFONLilREpUXoxheHUtcsQCvUSZRqRiwGICmJrad"), }, + { .name = IOV("wlSq"), .value = IOV("ucWFAtAJhXKBbdzwtvSHPoiUYHqzPMNrwqEzmYoUccKVLLJsYixXUEGDDHjPBe"), }, + { .name = IOV("FRWdUArI"), .value = IOV("JZjJWkeUsIagKYSukZfxamviLKYJLwYZgIHPpVOankbCPyfxnvnTUdWnaIhifNKmJBhiKpVPflYLKGp"), }, + { .name = IOV("cPQyHJvfsSsClCCRaqQ"), .value = IOV("BUzdcAkMUftzzzPOeyxmkQQnhgktxgx"), }, + { .name = IOV("xqXfY"), .value = IOV("VzNvGNYlDHFvSQphUOWtaXksjXdjPSQzdVFPihHYZtZGdnxs"), }, + { .name = IOV("Kk"), .value = IOV("OPdRtNWeKkhDzenxvRVcbG"), }, + { .name = IOV("UrrlVILgmesRIQx"), .value = IOV("oNFPX"), }, + { .name = IOV("ZXHdIIlABiaKEy"), .value = IOV("PpLGIiCoXmoDzVPcTrVIJHszGAObuvEX"), }, + { .name = IOV("ZYVWNZOeuWCACsaIMIBE"), .value = IOV("TRAeuJUOecCHQRHpiKDsRlwHbJMZZJmmEuxQoYcEb"), }, + { .name = IOV("kNc"), .value = IOV("aBMIONmNRbJrtNBpEucvvmnyeMzqdbtdAMjwTlfqekieSNKpjOj"), }, + { .name = IOV("RFfgiIn"), .value = IOV("kUWK"), }, + { .name = IOV("kVlhUSy"), .value = IOV("BaoRWFukINob"), }, + { .name = IOV("Hy"), .value = IOV("mYcQc"), }, + { .name = IOV("RDLITLQEEM"), .value = IOV("cyDIZUJXCBHJuaqqorIeJsxJKyiJIVtfNtaCATsi"), }, + { .name = IOV("syDyrYjHOVvQTyRmol"), .value = IOV("cL"), }, + { .name = IOV("yqOAsodYFbFSp"), .value = IOV("BPmxIBXQHGuKiHrNvGGlTh"), }, + { .name = IOV("yOOEHM"), .value = IOV("WoVEFvSCwmYQYaZktHuKtQ"), }, + { .name = IOV("HfMeH"), .value = IOV("JubUWYF"), }, + { .name = IOV("cgXFOsPfSzZFmRfuxo"), .value = IOV("AFssqlRQlBxmUWvLkJbreKcUnVsOhcTifPsvKPnPpfCgtnkVLOcUPWunoPrS"), }, + { .name = IOV("aUXCeO"), .value = IOV("uPmxJMmbfCgvfn"), }, + { .name = IOV("brEZQxNQvOE"), .value = IOV("xOSxzAdxHNsfZyotue"), }, + { .name = IOV("dkyayCcMEwDCEDl"), .value = IOV("OANxiijgpyGBjicHYtsrLQuuTWiRKadHADPviIEzccArmWzcHwrvPhizWhxqAjPWzSMuq"), }, + { .name = IOV("ylUSMDYVqtf"), .value = IOV("iEOaJMYGpPD"), }, + { .name = IOV("BfXWBzXsOCPaug"), .value = IOV("ZDptHaAFAXilolEhWVzWBYUfgQnTexTZINvyBKcFvR"), }, + { .name = IOV("lC"), .value = IOV("XAAarpDfeiDYabXAtrFXZdYIjacYVE"), }, + { .name = IOV("hmcKMtiyFSAYYGQDmPx"), .value = IOV("sSRqlKtiSyX"), }, + { .name = IOV("DpuXhfOfjDHKcOfz"), .value = IOV("TQiwQKlNIJGCpJiaChDptOpLlCDDMAUFxpORLtLUDvclDLWiiGWRdrtecYV"), }, + { .name = IOV("abMfimojoTDkYhA"), .value = IOV("WepeLTlAcpCqmFbWjUpdJqyNWbKnnxjLcKmspaH"), }, + { .name = IOV("ET"), .value = IOV("LYYrRIYRQkDURWlraGGgJaQoxQMTdFRbFfcpZvoIOUTXmb"), }, + { .name = IOV("HzdQHreKcvUpTRGeC"), .value = IOV("DsboVxDRJxfutYFQbVRIefqBjUWtNfWLwSAWAvXhDsVy"), }, + { .name = IOV("wfbrAhuG"), .value = IOV("ysfXGOAP"), }, + { .name = IOV("iaxdVxfxjWzmzOedUWx"), .value = IOV("QfsNXJugsPHEQJIRWbCwVyIhxzSBsQNvTXnVlwJjZCatoCkTs"), }, + { .name = IOV("hkwTocAWOLmi"), .value = IOV("CCJAoInvGM"), }, + { .name = IOV("zBYzZnVcScSREW"), .value = IOV("LIlfuyZRUZOiInBnACQvVbYgRbE"), }, + { .name = IOV("UzzFaAHmoVMJxjmNJlou"), .value = IOV("cPOfYhFymRPKOMKcCyJAJQCYeSkjGDSWEEJc"), }, + { .name = IOV("ibAaRh"), .value = IOV("WwcUCGNYixFTSdyTjUGxEZHYLTITyKkxnhXomJKarMsDsDdHTnWbCOlPnimoxGVWLudJS"), }, + { .name = IOV("spAHhiNiEjBbOOMM"), .value = IOV("cVAUGuoJPppeuIGmackkbTfLwLAZIdjxOkDBl"), }, + { .name = IOV("RQTEo"), .value = IOV("afiqBopREPrpFudLJYeG"), }, + { .name = IOV("LGzElVP"), .value = IOV("DLKjHFeorSsYTG"), }, + { .name = IOV("xpLzULlqKurXSIjzUwi"), .value = IOV("tQHXnFJplNImjyGeoJWBoKn"), }, + { .name = IOV("vranopMe"), .value = IOV("XcoQZCFVRNunbcaunTjHvGcszkjbHUaMnDoQOiTHt"), }, + { .name = IOV("lIhDWADupHctwZtVq"), .value = IOV("gRbswhXSNnIoSvPVqskkuCuwgYnwezUtZsTOAzT"), }, + { .name = IOV("gnempsAVdrjoKfiMAA"), .value = IOV("mGWbrGXYyCTpVtEMyuKtINSJItchrXwoeuHpDKxarvsLXJpl"), }, + { .name = IOV("MgoVzJLAFWZgfjb"), .value = IOV("oJgaDgBIjkalGtzqbpCzmqJCcvggTRPhgxYOFptnZPcHt"), }, + { .name = IOV("kGGtcJnnNcy"), .value = IOV("pk"), }, + { .name = IOV("SfBLzJVZxRw"), .value = IOV("EKtRzd"), }, + { .name = IOV("VXWfglhzXPOxVSz"), .value = IOV("veNWZaFsfMCLKQqxFPEFnIOFahQWEFvqBwoYLdMOcJOkFcEFZXFhATx"), }, + { .name = IOV("YVWRtYBCPRtoubIkqT"), .value = IOV("UMweEzsUqFfatVZwCCehGsnlKxvtsNqzVF"), }, + { .name = IOV("XWLquepnwaXAIb"), .value = IOV("tHbRfWSSSZTAUilhBQuwOpOViSiheZCbFLZIdAWBTnreMjzWmusKAAJ"), }, + { .name = IOV("VIaKWvrldXTZXP"), .value = IOV("sKClryhAYSjImpQwbTLsEHXElTBytuTpc"), }, + { .name = IOV("gqeUsvE"), .value = IOV("tETieMDTjnWYmfilZLbCHPVBnsKlglOLHfeFpNimrg"), }, + { .name = IOV("tOmklAUtfMWl"), .value = IOV("VXKfikrPjCMTJgHLItLjQLZZWNbSHpWWmImxEuSoyrEHbCRaA"), }, + { .name = IOV("JiuNO"), .value = IOV("FFqy"), }, + { .name = IOV("aEDmXhbkvxWs"), .value = IOV("dhdJgikyvCjYGOKdZV"), }, + { .name = IOV("WDGNkGMVQXgidOZu"), .value = IOV("iIslXwBBRpGefQhWOYWlZrusVpkUSdXlrPOHnrkkJhZrHcFhL"), }, + { .name = IOV("kVKDb"), .value = IOV("ynF"), }, + { .name = IOV("kcA"), .value = IOV("mOKFUHOqeOLoQGwIZReQVhChhfhozRTxTczaaqsGtaudLyeUQwCDoPSkONpjQBJSXyMwjeokbAuNnRd"), }, + { .name = IOV("efMldXx"), .value = IOV("cPTWlxtdSKTpyMxOyKzgGiJjcYLEObNampWYXKKrPlYkOwJBNybcNfwSWaSXqEr"), }, + { .name = IOV("NdILRCqBSuYmjt"), .value = IOV("nBwytBOGGyeWOuCtxtCUSdht"), }, + { .name = IOV("RqRXovq"), .value = IOV("KQVtPaytrnVjkvWbqDVdZ"), }, + { .name = IOV("B"), .value = IOV("jiooRWpGwZHKugvvFzcgjaNAIHIDCfNIjPCbONyySKHQOzVyVoTSAYe"), }, + { .name = IOV("NhkBFngid"), .value = IOV("BLVEaFgKxjDKEMKXlbHbaTxoGZpppwAMYNhdrWhtGHeAHUAQLnIfddsZBAHHhPm"), }, + { .name = IOV("ORIzEFCLIvwN"), .value = IOV("BzWZJOjNWsWahMQFwm"), }, + { .name = IOV("lRuny"), .value = IOV("WvUTBcqqjPFRzfdUBttXjEaSk"), }, + { .name = IOV("OA"), .value = IOV("S"), }, + { .name = IOV("jFZslUTBeEGzebTgRq"), .value = IOV("lAdmHLHRSNfiKocrljOnoARvR"), }, + { .name = IOV("TBKTjAvrzfYJCXkriw"), .value = IOV("PWOqTAxNteZNQWvnsWipEQcWrNqWlitilQvtWmXMJVxfqqvJXvFutSEheoZBY"), }, + { .name = IOV("dEAJfvvaPnaCk"), .value = IOV("akmiQtjKDCkktelzFlpdixGNCkmgfuTSZqGtFvX"), }, + { .name = IOV("ueGDSXWmcv"), .value = IOV("SjdQvosIgAWLcIffEbTqmyScnpAFeMFteuIhhfbDMakKiUDkhokXOvgdiFjBEswqVKGc"), }, + { .name = IOV("fWKKudc"), .value = IOV("fqEScKpxwMBaBEhZxluEGCJQkRPHCDZFRvUwEvvVQIQnZM"), }, + { .name = IOV("WTBBWvnEgR"), .value = IOV("YZPFpjfqyKcxnZhavPhZoGQhVsaKzSapORtWoBrGXkVuhcymqnUOFEuYXzxLmNOJjGINVAZYypYiSx"), }, + { .name = IOV("dZZlTkLFUHwGnK"), .value = IOV("HIVHbYiy"), }, + { .name = IOV("WMgXVwtYbDiMysFt"), .value = IOV("TPhTYhRwazQNOnLxVOKGvrGbpUYBUHOhJqhpBZMklqaNdXIiDJSka"), }, + { .name = IOV("GSdHPnbRFXuQzWwMtcY"), .value = IOV("wcjlEqcTmRArhLwJFjyOmceyCckDsGyYK"), }, + { .name = IOV("vwIfsRPKV"), .value = IOV("DxxTYLRdXfAsmWTohIsxBRWpQQkSjYHQ"), }, + { .name = IOV("PSQYiLuYRcsMsUYc"), .value = IOV("GMSUPwhEJnDtkxKoJntVrHSzhorfKpZFYgxzZsGDBKGp"), }, + { .name = IOV("VYnOX"), .value = IOV("QAziSoUNdnDVXChjRTmLwhXglNGyavSTRHUfftREwJlezSbKiZ"), }, + { .name = IOV("tPBZEWYj"), .value = IOV("HjAfPNZQilZlkPeUGYMfdTsprYcxkZhsgzjQBtC"), }, + { .name = IOV("THPdTvQxQkNItOEsynAF"), .value = IOV("bRwIzUKtUkhniUhLRZWGJadbVKSLyzEYErnLdntyaEFlDyZzNwdKWtAKwVHogEAYmuvfh"), }, + { .name = IOV("TawHdKEXHnlrJWCJAi"), .value = IOV("HbtrlxrdiZzbGFJpwpBr"), }, + { .name = IOV("gngwafEBm"), .value = IOV("WgRjacujMLAJIireJjmYgsDSOAiOkvANEHsDsSGdYGnmQACeTcwDJ"), }, + { .name = IOV("yRLOsRqaeNGdmTGB"), .value = IOV("XpWPVgUcvRUWcwbQ"), }, + { .name = IOV("vLsdOPLKTCFqPDM"), .value = IOV("mwRxsrKclJnoRHFlYnUUrIFXObAQjnBMUpqmkU"), }, + { .name = IOV("NkawvEsWhl"), .value = IOV("zexRJDIlhBrBXTOTVkwuGnNxfVckzSPtwhSYLwoRrUoRQEqTGGFVvWupmagPLHoshzdXAyFAvin"), }, + { .name = IOV("CsTQ"), .value = IOV("nfPXNnDTmdchrgijznycCipKHjtqi"), }, + { .name = IOV("zpJmDGN"), .value = IOV("GBrAjJVZTY"), }, + { .name = IOV("dvJn"), .value = IOV("YzmwnfT"), }, + { .name = IOV("SEyKyuCwHgaNhgA"), .value = IOV("vCQNvioVCaoryCdQcdOsCMdUPIPssNjvtvggomKMY"), }, + { .name = IOV("IPycXzBPNOGqor"), .value = IOV("KqsQZxNamAgqHFrXvjLWTwkseehVuxLJwbuxhnjaVgtQFVIaiMxHbDghUkzUiRnjGzmKdLCHlEVuoAX"), }, + { .name = IOV("kkJZHsarpJlzAv"), .value = IOV("XTCOSKwqMbPhkosBUPdwVnDgApTadZBKzRCalPvxPZodx"), }, + { .name = IOV("pBDsicJAAY"), .value = IOV("GrpKAoWDVPOmqPieOFyzPHilqTkUBBOMhcqLyFUKlj"), }, + { .name = IOV("jUaTYDKSgmQgtFrdUzwk"), .value = IOV("FWRPMZJSfhCMCUR"), }, + { .name = IOV("gfhqtNiIXjeionI"), .value = IOV("lMWfMvlOcGCkySlJrmlO"), }, + { .name = IOV("HifbVkWod"), .value = IOV("VkTUmTsKDOwxApEJKtGJKNENsGLU"), }, + { .name = IOV("fGMXKsYwu"), .value = IOV("hUkKuUfHncTfINpKVaVeVreHgedEhsMbPqnFvwdkfLgalfdDskLiyZunPiixrGFeKAHibgV"), }, + { .name = IOV("Woq"), .value = IOV("jwJMmJXqLQlwklvSYHsphoACC"), }, + { .name = IOV("T"), .value = IOV("HJOKNZWSZmpcqD"), }, + { .name = IOV("FnXNTbT"), .value = IOV("AiJbkKNEGPvDmVEykrOGiaaZVXraRtKqbcZTxiVrin"), }, + { .name = IOV("jrsGBjZXzhW"), .value = IOV("rogbRnarTJTDIkpttiRoRpfxqUdVfcRUXsFlxpeilWX"), }, + { .name = IOV("ZQbEZTptsjzcMI"), .value = IOV("SeFidDGujhnoDVGwnOV"), }, + { .name = IOV("caVHmirgZaHqcO"), .value = IOV("XcjNHYOkZhCaLCjkQClGlwjDheiALrTBEIkPlfNbbC"), }, + { .name = IOV("fLREmZfuMWinjyOtcKF"), .value = IOV("gwNYcYIgvLOKmiwNnSPol"), }, + { .name = IOV("YAvFDKLEpGqZuUnuVb"), .value = IOV("tjBTxjqGKyjADcMyVbqlNnMKCATmVz"), }, + { .name = IOV("zdnFRQgKVBYqBrHIya"), .value = IOV("tsaaGaZTwPyruIbSJImHFrguQKzRBaLrycLgGZPGbdWTRbuXDnaTJUyu"), }, + { .name = IOV("FwLSmEqjXrVkg"), .value = IOV("hfqLUZgJhdFEEkZkdsfiKDKXzHMEXyStlASldVeEHAZYXuESJKTcXxaEfdupPYl"), }, + { .name = IOV("sJDQdAxPoBsgif"), .value = IOV("SbmnPKwwGRmbfKyZHrrvOULbemCZEmrWWrhIrWkqZnVHOHzJHThmxXDnJVPvQlOZVGqhnFTMuasfVO"), }, + { .name = IOV("eul"), .value = IOV("AFKMyCyfMZGzFefYGRZaBzlEtUQsvmIFoeaeLVxAeAmACmXIxBryWAlUCwvFOtVesmJDM"), }, + { .name = IOV("ZoLTSnnibC"), .value = IOV("qryySHtsdWqdYLAtZophhUuXzNkqcUBdvPDhiRGyhkLoJsvwwswyAlmKTfKhxMlFQkOXgMysVC"), }, + { .name = IOV("gGNIxUJKtktgFAyOrC"), .value = IOV("zQuHCSdaQUZYLLurcz"), }, + { .name = IOV("XpiLn"), .value = IOV("OLrkcwjJNHqeQiIFrTDtzC"), }, + { .name = IOV("ICiqXrdBRkQyQMPUyWEo"), .value = IOV("DpRTweWFhPfnZgfmTIoXayyjAzhxtJKgnM"), }, + { .name = IOV("Edcud"), .value = IOV("EmOeGhhzBpCVdaLJEkIWOQQQrCulOYKssfYAISigcuuOkzlhOdneZTdtHLXrpeuzstNgOGp"), }, + { .name = IOV("FsIylwSjegTKJvnu"), .value = IOV("ctbMkpqXcpKdsOQHyFToNWvGbGYDZCcg"), }, + { .name = IOV("xye"), .value = IOV("AChgDRTlPmYBcaJCQxpU"), }, + { .name = IOV("yFKmZJH"), .value = IOV("GzXLLAXmkpbpoDwDiOPFzlCjPwB"), }, + { .name = IOV("Ju"), .value = IOV("LEhoQDmUFSDHwQBGeNBgSLbUsOWqjtOqKCdMETSHSdoVWuLFBDofUuCanQVgBXVpHstsFSQSCnHCZ"), }, + { .name = IOV("WIouRlTNVm"), .value = IOV("tzoXFEyGUdJnPSwrouTpTVKGqVuazAcLxlAlFMgLTPxZxljPTO"), }, + { .name = IOV("frLym"), .value = IOV("leweCBKvTvHsPZsBOdFDKbJCmjWSimArFVWgvnYFkXKcR"), }, + { .name = IOV("FZzTiwHgDmNlJRuAOcK"), .value = IOV("rPFxxiTYJZTMgyJldXCJttFiYBweFbJmbADpvSz"), }, + { .name = IOV("bvQPrazaHMszcfCc"), .value = IOV("HeLsPFsPqccJOMPLzkFmDgERlvJwt"), }, + { .name = IOV("tmwpokzaTWkcVk"), .value = IOV("LkQncQVvnvtdSWnNHLgCSqCEldF"), }, + { .name = IOV("rKBvLuveRcu"), .value = IOV("rfro"), }, + { .name = IOV("IRIB"), .value = IOV("ZKQjssDoniKgKWhsVYWCstEcSKXHEbQkaWapmHVXGZbXUvtongmyirHNedXfkBrxoDAJcaRODgWEwG"), }, + { .name = IOV("NMrwxHGp"), .value = IOV("cYrgaCpNwyYphPUqtmlGYPxHbljlahRAEcSvmNlBXhwVVEkIpQYXy"), }, + { .name = IOV("rbGphRGpJxKaat"), .value = IOV("dzrisBGLyiSEmANuydRamhuyuZoFlGwdILKfvmZimksTxZz"), }, + { .name = IOV("DpGsAlwVPVN"), .value = IOV("AMhZnWPhVQOEtuphrvpeQJhVDhkVEtuMeRGrOHVwpEkkhjPOVwDzbAhAdFXuRCdDI"), }, + { .name = IOV("aaULYD"), .value = IOV("FdiofftiuQtxuPKLonxgJjeeojEUXwOjxixWxNMxtDvHLzNaCBFpFGmWSlbMnDyTN"), }, + { .name = IOV("fcDvYtUjQXYVLp"), .value = IOV("xuTyKmkzsacNLXJOGuvTEwzrLYOIFWIsvnLlfaVPxckHaHZZMe"), }, + { .name = IOV("bSkEOCn"), .value = IOV("TXdSxOYJUbHMJOvSAtKGufSEEdkWaxYRphJdabIuJHqyHvDoOIRlZaYxazOpCjnoXBuEBQ"), }, + { .name = IOV("IwYDMjDg"), .value = IOV("FwdsdfFOfDgxDPiAHkFuKJuXwdAAr"), }, + { .name = IOV("qfR"), .value = IOV("hcArOaQsVHvvRZSMRLkdWPneWrKqJBaRSjXtbhBAtpZkuPBOpOmFIiqfLTErnyHNagaMUzbxbaxOLVfS"), }, + { .name = IOV("FTGxs"), .value = IOV("TpjogjSqjumlApudZPePzSwJhKtMxWZpQUIQqOtfXmNqGRPpuJWSiNVnvRDgrRRExgBLjLgYOKuWPIO"), }, + { .name = IOV("GbVbJBeQMKHRLQkqnJ"), .value = IOV("USAhpQcyMiIPmYeIQUTBpUXiyGpFzKkkVqvqPRGFhpVkYhHtRuRuwBikPtP"), }, + { .name = IOV("S"), .value = IOV("XhDEtALACZmhGhxhtfORcssiXjcBsDLkWROHvcIbursjnSISwaeUgHaHDdaLxOlTQ"), }, + { .name = IOV("FXovfsnWMhuZSb"), .value = IOV("haRzVGGDiyjwhyjjuPIIKCkAvcprNWqZzSNBHLEQrKXiXxFGGEjoaeaCXYVUsYABj"), }, + { .name = IOV("hECnkxw"), .value = IOV("cOenDJgWITMOvHYJYzSnK"), }, + { .name = IOV("UkSfuPHjPpy"), .value = IOV("AmOs"), }, + { .name = IOV("RdWBzMbt"), .value = IOV("KqGAunZmTrQmkQlKqynQrtCKzPmyhaNNjujJexhLexUsKuDcZbdhAWjSIbiiIFGxdmzSyQIf"), }, + { .name = IOV("LjpOECoGStfqXBvRJrU"), .value = IOV("RGkQPoaTSgbyvokgoWsubBTGZlrUFeWBwmjLPbPxrWQIJNfhfhlmSPcbCSsnH"), }, + { .name = IOV("Qk"), .value = IOV("oboBcuwUcoNPhULCuBwMmWfeHDGNgyvccdxIspfmNALtLonZG"), }, + { .name = IOV("dvEQwYzXqksPcrlrU"), .value = IOV("BeaKXNUoMcVlamiwkqPZljYlEtFcIeBv"), }, + { .name = IOV("LjgCgTb"), .value = IOV("OyzQtkxotigpJeAkWKvBQhipxUxlEP"), }, + { .name = IOV("xXSujRyHNtuZxpNVXig"), .value = IOV("TZuiopWhaXuQisJwQgTGvCpquBWdvLTdptJsPnSHomh"), }, + { .name = IOV("XgKABRI"), .value = IOV("MaDOmJNWdWhMSNGFmZOZMS"), }, + { .name = IOV("zjQOzghlLCSngcDLsiU"), .value = IOV("ixBmrhlMIAktUtxwXMIkSKsJyObkWnKUeGvkfhGXgAnyKljVWeaoCBOYXsCoghVC"), }, + { .name = IOV("VqdbJxEtR"), .value = IOV("VxHjvwldnSbCnduyeKQIL"), }, + { .name = IOV("ZUhz"), .value = IOV("CqskjkzGtIDnjtGFFFOjIphWyhoIqFjZQdrVCFcZte"), }, + { .name = IOV("CAwbSfeEX"), .value = IOV("TtzOQmlSaXkyOkvRIeDEfCoaQunAjfnPLsR"), }, + { .name = IOV("yTaAQPJoRrnEbJYvJ"), .value = IOV("bLLQEuxOBXCVLBnySfpAHNlmLmnFotykxxjlMItsuKGPTtgRbuzCoWcLbchxFIOVTGwkoLyrrjxWzXDT"), }, + { .name = IOV("mHbnUPpY"), .value = IOV("MTokzKOUdFXyqosoCYvwrqmXgQkyyeFbZAa"), }, + { .name = IOV("nvLyGz"), .value = IOV("IchCCmWhdhwffyAZZRYGmjaKUOTakCjmKQveLklEvxoUobuAEbAxDPBnrDkjfYifwGE"), }, + { .name = IOV("qIFzqyRjxkvyMMFj"), .value = IOV("axLpBfNcDZHEcQYUodmPPXgBmkPdUy"), }, + { .name = IOV("UUdMGFM"), .value = IOV("UvgkWBLSVqJRnutQdxNCZZvPpxktjxGYwPSoqtixTOhSYZtGdRv"), }, + { .name = IOV("J"), .value = IOV("PjCoANVSgHafRdswCTdTvAYZAfnQmotUrbudjzzaUHFDmYQxUYSnhaGTlCnNGyUpFGRQoYi"), }, + { .name = IOV("OZNv"), .value = IOV("BacsOqLfTkPprrplRMoRfCJaXLOuNdkjjEBNXkLbNeTpWMQBYSjkavOaAgAJc"), }, + { .name = IOV("Sxwfqgcb"), .value = IOV("sfcsKAoUyCRluVsxUnFmDATCBfZgCnTrHFjxUd"), }, + { .name = IOV("JtMEEqZDvxFqva"), .value = IOV("VNwCJFtWVR"), }, + { .name = IOV("bjRjULPWlhdKCm"), .value = IOV("WjdHcJoKvjLQiKWNwzjPIrwFymktSXMICBJYdiAasq"), }, + { .name = IOV("sfFYzykkVQFnqfeblHNn"), .value = IOV("yPulezzbZHyvNayAzfaX"), }, + { .name = IOV("DWCQwRfanYlLWK"), .value = IOV("ZebjAxCkvJUdfhCsryB"), }, + { .name = IOV("oebwFCVSMGIrrPzyx"), .value = IOV("WiqTJGNwSaBCNxnpdVwGIhckeDHhwGInDcCPNRlPCAkFGhrIAkKhJStLrNQkQfn"), }, + { .name = IOV("AtnnFGENFi"), .value = IOV("Y"), }, + { .name = IOV("zkFBrJaz"), .value = IOV("quMRGmwkPAMaFyWGDigzTpmEvCHDSWLzxlwtdXhNDUlRdfVIGTK"), }, + { .name = IOV("QaHMhRtiLaTwr"), .value = IOV("yAcUYPMvIvoaFnOiIFVFWfSJxvohMxgBx"), }, + { .name = IOV("fgjaPAGohnYAe"), .value = IOV("TvebthsSFKdcWWAudjhHoSWXQzEqubCTxgmjvQwLxNSvxCNYVtbQXoKg"), }, + { .name = IOV("nYZ"), .value = IOV("CxddMrxyugmVCWpLIfZlfhAerKrAjuOEfWFoqFjQIvoVldKwSVwbQhZXDxSSkqw"), }, + { .name = IOV("IAA"), .value = IOV("Bgs"), }, + { .name = IOV("eageOWxbvTixnUZQxTtE"), .value = IOV("vhGWixouevjyEQjbDNJbKeHAbNjdmrzJOoIVcbQyXiNp"), }, + { .name = IOV("AunoafztVXh"), .value = IOV("GmVvVRlmPNhsUeejKpZrgwpPCv"), }, + { .name = IOV("r"), .value = IOV("wAhnpj"), }, + { .name = IOV("EYsTwZnzlibzYJsLcnAJ"), .value = IOV("Y"), }, + { .name = IOV("gsIw"), .value = IOV("rEYuhZTNljFOOlhRBHBjTwASegUHknVaxAeumpgBBkaaBgnvwagBuvuoTOnDQacDWESZkKDNNd"), }, + { .name = IOV("zFlTWHCpuQxSzP"), .value = IOV("SEIVwowajyCNhrGaDC"), }, + { .name = IOV("aHaXTZIn"), .value = IOV("QeIhWLwKqYBYiRrVLREkLDuCfMGjFESvfloBOUAbsXSATMXvPxsNruVoZyalwG"), }, + { .name = IOV("DVTNnvDJXoxqH"), .value = IOV("pynJxTGfNzPXpxwKNDVYvTrKMppRNDaGgHMHqEhzxaUiWVwBDjtCYAhXWcUEeF"), }, + { .name = IOV("qCT"), .value = IOV("vwuHZVuYdaUNDODPIUyeLnERmZHXkRVrDJUHrieweElBiQkSLNiTbLQEYEbUMBYA"), }, + { .name = IOV("icPLydHvfb"), .value = IOV("zExwGpXTfAzVRvDBiLlWivXXpfRewdZkTVdC"), }, + { .name = IOV("JXtxcZvUMDy"), .value = IOV("CwRrZvDMeqvaKVhkVABkTsCKDsRPyGjJIM"), }, + { .name = IOV("wh"), .value = IOV("DcLuuNRzyvgpVClfBUrBEnjNqfKWfHzUHCauPXIrLhDbLUjnyyiPltPIzEq"), }, + { .name = IOV("rYyEXrDwwqqFAGDosy"), .value = IOV("OKFJnjNwzvIPbRgHrtHLcOpRflUOTAWZJFujWopUdlCjlQge"), }, + { .name = IOV("MzyucbFnahW"), .value = IOV("SOyTRmOtGdloyVmvfCceOrfErVVHeSVtxeAdOGPUJBhRJILNDXxWBxpopMmDQgHlemXYSXWkCH"), }, + { .name = IOV("SxyILShlkupONNvh"), .value = IOV("qouryERGjOCEphZjmj"), }, + { .name = IOV("PnnbgEuoWeJmehBTfvC"), .value = IOV("aXlPIwNrotkwoS"), }, + { .name = IOV("MfUHCJlDYltQBD"), .value = IOV("BEPmFSFCEwgjEZCidEEWC"), }, + { .name = IOV("jcFAgiOQyiEvBnZVW"), .value = IOV("tTCpbGUVfbYcnMTEUy"), }, + { .name = IOV("TxeJuUi"), .value = IOV("FQLFJdNALQuqdzOXSpxRxmeqviEHqNpHq"), }, + { .name = IOV("iuhLUxDb"), .value = IOV("YEFauTAXXnpAfcJVzVMCtykIKDnyhxPbqRiqxPrkLytAplvilAhWIQHIUIMSLLyDummDFl"), }, + { .name = IOV("LReacwPaFQszAddVnF"), .value = IOV("nBqNmNnllLZpPjqlisvlcMnmLzbXjNfkxedOLLFukYylBGyMwjfGFYbgzyIzKVSSNQvNDeubqTSs"), }, + { .name = IOV("kmipbwOVuNkxaacpcpaQ"), .value = IOV("YYrqRJxQNyMnOkGjgDpRJGuWELvaGBAUZrsm"), }, + { .name = IOV("ZzSAVrN"), .value = IOV("dfuiojgpvRSXOXbb"), }, + { .name = IOV("MZznKKSPGJsfVMO"), .value = IOV("ZGKrDlHqfqUXyqEGaURwIprVqRKorZUZwKadQBkYKEaWWrDAqab"), }, + { .name = IOV("fSjaJdudcspZkoDDenQ"), .value = IOV("yvodGdDTwQAIWMCgJOEIWjhgXZIAZbIcz"), }, + { .name = IOV("PpELSxDzVlljXsmwbQvl"), .value = IOV("TEAG"), }, + { .name = IOV("dxXyec"), .value = IOV("AHYdXRZafYjQ"), }, + { .name = IOV("cabGl"), .value = IOV("WzXQkJyCuXtJPiXOOLENxZkcWtqSDEmmBtVuxVoMsOMhYliWFSDKMukryZGJYnspkJvQUiFDG"), }, + { .name = IOV("CozRlefFhwWRcp"), .value = IOV("KDamErBiah"), }, + { .name = IOV("zPy"), .value = IOV("fEpJmcPbgFboKblm"), }, + { .name = IOV("SPmdaWizyiK"), .value = IOV("sIYxlDizrGOibTFdfNzmxiYheGQijFoqmqjYuKqUkGJQkBoXXCOfCQHZCBStXlwgixdGcmkqaRe"), }, + { .name = IOV("ZKk"), .value = IOV("lgdxedYhyeZwFiyBlyGJEmejbFieODVnrGudkgNKhu"), }, + { .name = IOV("DLHeUcTAWqvIzWjjWv"), .value = IOV("mqnn"), }, + { .name = IOV("RRBQyguHKTFFAtL"), .value = IOV("aPxkDhEkOckPgMgeUZcBiJorGQkwptZImTMFXCWpKyLiYFBOhNEf"), }, + { .name = IOV("Vt"), .value = IOV("zjQldnprFcbrCHvfLXOXYryGTb"), }, + { .name = IOV("YJX"), .value = IOV("uESJJNpCSoBFXKlbaicPFMHFrDenappVLYXonCsHghiKdiIkMwGTYzBDcAPZKacCYzFCpxUrTcEVDAzJ"), }, + { .name = IOV("rwlloIQVP"), .value = IOV("duttKLmieQXgkJCxHBtlbjhDxAAOSvgbHerUTMoTMjyRfHXGvrk"), }, + { .name = IOV("apb"), .value = IOV("iTtZkUTBkQqobkyLpxoszfNAZtWhOrbcsaOHDMQzBWtEhqTWSEipVbCgMYmRsdwvqrfb"), }, + { .name = IOV("lCSMZJdYbKayuzEzsy"), .value = IOV("CWyxnTJSaJpipqFqpfikWRWnOEJxqHeKWouSPjykqAeR"), }, + { .name = IOV("PjuwbHbxUuA"), .value = IOV("ImncXRuUIIUDzXhnJLqIeQvKDYaoLYxsURY"), }, + { .name = IOV("gMX"), .value = IOV("RLvwosDpKSKUAqsSgfwYButLiiqcPTSJUTJJpRIKGaYvzLjzHnwlIFDvUXbbrDZKHFKwskxT"), }, + { .name = IOV("OSUSxI"), .value = IOV("qwsMPhO"), }, + { .name = IOV("DrXXVTfIXErEOjZ"), .value = IOV("qxTLszzayHfqWkEbUnrXhROjtpfulhgnxjoGZkvGBvjwRidJPTmUDZc"), }, + { .name = IOV("kkiNhiJGRaEloVFR"), .value = IOV("ujNSEfdKrGfXvhQzCDcHAXAskQPPNZhbNvQUrOcJCIUaTcGoNxbzaJcRTiLNJfDeTatFhuQrVjMWwwk"), }, + { .name = IOV("npHfCiyMoJDzxJdDjiPi"), .value = IOV("KQbBOWavftZdzGofIocZJCywFjxEYjjiFjkSPX"), }, + { .name = IOV("eZdPzvcVXZkvDdIorwkV"), .value = IOV("htfFlnjWpwfacUHLDvbgmcSgIuRhMhygCaNrpLivUKtjDbqmTztUqhHuZcHtEx"), }, + { .name = IOV("JkwpYJBRJboGugWzBIh"), .value = IOV("gwcvejgtGUdRGJugHfsoPUoDPNOWkMqVkEvNkDhGkRJFT"), }, + { .name = IOV("jbJMhyKyUN"), .value = IOV("LakFhREtjaEVURkmUvpovRyqSYxURKiRucpHTlXyIOKPQNWweFzifEssmGOGiSURu"), }, + { .name = IOV("qekwpuXxEUUOAODarJ"), .value = IOV("iulJBAmoL"), }, + { .name = IOV("WNSpnt"), .value = IOV("ByFpuWFQUkvQjdjlMEkPXkWcjOuQGJQLCNzxZYJjUdMgWd"), }, + { .name = IOV("kvFlzvyPaAw"), .value = IOV("mgcxpdZqgtKxEbIhfnrx"), }, + { .name = IOV("W"), .value = IOV("lSqmkxqRALgFZhBzYCeeFL"), }, + { .name = IOV("sFJhnTwUldhuIzsWZ"), .value = IOV("EZHRCGXlRVrVXrNlHeOppLZfJxWXVyKLdVhVtUVzALysoXhakxtoaBLNHPvPZ"), }, + { .name = IOV("gqqE"), .value = IOV("sNfMuYsrnIXoIxZDzyCsONHcOYATQtUbvdHeShzUQCudHV"), }, + { .name = IOV("NgZpnb"), .value = IOV("mYsbBBJnOquSVVRXIOAeYdDeHGkQcG"), }, + { .name = IOV("dFTnAiuGxANANZHi"), .value = IOV("mtgrbBKVFORXBYegidBSiDKOQGcDLZcYtUAfFIcLItgYNDNWmKnntHTiMrgOuZNVfoZbKZ"), }, + { .name = IOV("YHYuINJ"), .value = IOV("jEKDIrDTjd"), }, + { .name = IOV("eFGQAB"), .value = IOV("SzhAXInyRcsdAxgILroPGZFaeWbTF"), }, + { .name = IOV("MTpBPDUc"), .value = IOV("ZUxGtzExJJxgYiWnTchjsXqNjVI"), }, + { .name = IOV("pXRAICdieLrKHED"), .value = IOV("vgwmtJQgoAleLYTgRUFWJstIqcEoQGKn"), }, + { .name = IOV("yugMQqZlszVHnaVM"), .value = IOV("rFzPZVgfXLNMIVkqLzMmCCgMSepSFOETDcWMHWSarsOiFzTYWBmOEoLIXgIGHKMFfH"), }, + { .name = IOV("KJq"), .value = IOV("QKDJwDk"), }, + { .name = IOV("sLXc"), .value = IOV("tAomxfuBMNmUUrkdujOuZjtDDWJAZKFJULUGhcTiQm"), }, + { .name = IOV("SkUsyJdnABwzlypikqn"), .value = IOV("WCljEJOPiyoTlokFl"), }, + { .name = IOV("VKnRjtKfRAWJ"), .value = IOV("dgZtuUekOwgiCWchqCsFAbdTYojfMjkTbMgGqZWNHOLEnIFJfSLYnpHZFBOFAj"), }, + { .name = IOV("LfZglvnQdOg"), .value = IOV("LByOLmoABOhDmuDKogFmRIfZkUBNjdinlOwbMcymNiXWhfCoscgaramTCqcfEHoSTPt"), }, + { .name = IOV("vBDmsnnvxpUHuwmlMGhe"), .value = IOV("PJwspiZAKtcVUPDGVDTjNeTNIJvDeEdJFPQWPGnqESFM"), }, + { .name = IOV("YPMgyzcNtr"), .value = IOV("DGHJCaowTcdJOcEvHqdejqVRvspdfKbxARZNnwZYreuBBfTXeNvB"), }, + { .name = IOV("R"), .value = IOV("nqlCqmaThcEaOKLCelpFTJlkwrKcIVoZSremSbPPacYe"), }, + { .name = IOV("DYCMxVmeaPAoTHQYmRT"), .value = IOV("BKsbwxsYXEYzeKDqcCutFnGZDCBTSGlXnFAakbfgAofbAIAJMvhcWiRwdyhrmBylmGRYINnFP"), }, + { .name = IOV("feyNcDKRfCXFSxDR"), .value = IOV("wyAeklOuQCGaRKfQrXTGCe"), }, + { .name = IOV("yJNacIeOJBZ"), .value = IOV("BVusTStaYCAfqeYuTlkrlq"), }, + { .name = IOV("rZUE"), .value = IOV("wnRNFIAuJkXrumhISjfUykLOdfEzmXhyTWDlQmSlxdnbDtyRIBHlOqaEbSjkvDrjOMTRsLJCTLx"), }, + { .name = IOV("jlezOE"), .value = IOV("btPpreudMmIoamrvqivJAYtwhUcbbeFBTzqwArEhnOgOFmYVWyRQnKPtvMyUCKuVEVh"), }, + { .name = IOV("o"), .value = IOV("NApOyPedldFDIrFVOSXP"), }, + { .name = IOV("sEsOCzNnxvdtggo"), .value = IOV("VUlrtmZAai"), }, + { .name = IOV("XOMgtQvTMHptQFOVz"), .value = IOV("gfHDbuouGPYzxKFYzEMmqS"), }, + { .name = IOV("WlgNTNAlVtqKqOy"), .value = IOV("SJAsiHXfdzqZjUZgAWjYyZYsZvFQpYIemraKRjMWEGSIFvVRzPVxmtnXy"), }, + { .name = IOV("rfcknpHcDaf"), .value = IOV("TuoGICCZdifXuatbPpcWQDwpAJPGPRjiXmgNxUAVZIgMHjGRAMhzlw"), }, + { .name = IOV("b"), .value = IOV("jAlcGtFiIiCRdQRDlgxoDpppGHFCwhbXJlcsfYbkkVFOreDNEBrBqCaJjupRoDambYvSmJDOqNviQsaX"), }, + { .name = IOV("eXHz"), .value = IOV("wvqKqwWQIDvAPbIQnoVWultjMFDfpvNwnpBPQrTAoOEOSlvLUgywTROCLKjJpeVWxdUzczaFnoyIUZP"), }, + { .name = IOV("ckImZYDMt"), .value = IOV("yqeBSazzeLUyEcXiSUHlaHopQShStgQmFwCNkczxsmfjMmEasbNkdOYKopPgqqxkz"), }, + { .name = IOV("DvczuNjxXrPgBt"), .value = IOV("IvqsqNCdqocGJVOkSJINvEEjVNDgnMUzTRMCwKxHdfIrxhOZaTcJkqSJIFOna"), }, + { .name = IOV("NFMMiMzapkHFwyVLzl"), .value = IOV("FxjTPgHudLomWCwwJguoVuibQnPaBDDKVNOshsjyePrcMnHrHdKRSNNSJDkzLfwelAo"), }, + { .name = IOV("uvLVzTAyIuPgjHqpFB"), .value = IOV("PwUxbjHpCOEnYkjYgcECguZJSGeqAPZYDYPHMkxrYHNsgHNrQtu"), }, + { .name = IOV("dVSANXnUgCPTgSz"), .value = IOV("fbxnKECdReSCcTvasxgaeETXTnCOSwhSQsKbEAUKmoeCkpRGkrUJbIXzbAHrYxdoZqctKKgCahRZJCI"), }, + { .name = IOV("LYLDqlkOfHca"), .value = IOV("RKKITEocKOrZbHMieCJOFHmMyEqeRhVFIApFEvvfbMUaqvOBWsFtEsPxaixDjVqRIDsHN"), }, + { .name = IOV("xq"), .value = IOV("fZBNeNeOpBYWfTVyWrIxqejUeredlncECIq"), }, + { .name = IOV("cLE"), .value = IOV("XXVEAlSkQohCBSNZHePtjpLMorcwNudvQeEuXLpiNPLCKSXZBapnFylnBMaSlcMIBpPvWlkRDigd"), }, + { .name = IOV("dRRzyEZtFhJADTsBJD"), .value = IOV("ZrZDNEBZHUauSBEpLtyPvfcWOxPhlQsgWCRcEYfDttApcbvHuHdoWmdgYPYVEpjlsGEtrl"), }, + { .name = IOV("CpH"), .value = IOV("OeSKNjZjzAHiGZRgJWdSlzMTf"), }, + { .name = IOV("rzrkqvimH"), .value = IOV("bAQccpjREPIwPpTPOLWrejOJExZeGJuSxQb"), }, + { .name = IOV("CvdkmqMiH"), .value = IOV("ABfOZABctaUGsHFqFPRrnqjahhZMYVPRbpviDJCAAaZwqibngJdYQdXMZ"), }, + { .name = IOV("h"), .value = IOV("EqGrh"), }, + { .name = IOV("KNbANPiu"), .value = IOV("AFaGkMxtXmLTGSULyAbdyySKmcFQkPaXSmGtpuoSFyIKghtkZJvTrecNNwLGFAzqNOLESmhV"), }, + { .name = IOV("SHLnVLdKhNqVkstncR"), .value = IOV("hsxpOYFNfYTRUWhASJQBtuMnotfANbojaZqnlUObHv"), }, + { .name = IOV("ELghoj"), .value = IOV("zzSCGwsQTsFTwAXJbuPJJKVyMdXehrWUlxbQAKp"), }, + { .name = IOV("gxlGbux"), .value = IOV("TaKEPlysaTDuYcznoliXzGJhUlAWGYFOSKXGSgkarr"), }, + { .name = IOV("ugebBBKnoSuNpSOJQ"), .value = IOV("mjjPFbOrLqfMSnUDoTcpkCj"), }, + { .name = IOV("huBKtP"), .value = IOV("YhLjbvWxeysZOdMcsITcTIGsOJkZBqcysxXmSIxIsjXmvPESwBwwlAoEZrgayyMn"), }, + { .name = IOV("OfABJGRfCqsxJbl"), .value = IOV("JhMiqYvhjRxDcFYElYiZdiQexWGxoyLIVotaSS"), }, + { .name = IOV("eDQhnXYAXLao"), .value = IOV("ZWwbgPNFPbhZjJWFfFcxuifCeFNAERjBNnGUQUqNmR"), }, + { .name = IOV("WpMIVcWmRqYo"), .value = IOV("jmcwyQ"), }, + { .name = IOV("osRg"), .value = IOV("kvDskMgXabdNBlaoEhQaafZLeBzJTNbLGWXXjHjRNoztDcjOlHX"), }, + { .name = IOV("QaWmOUVbJWEOCsix"), .value = IOV("vlsMNYKbCsRRCYafuQJTBVufasv"), }, + { .name = IOV("iWJryoGgeJINxhWcURDu"), .value = IOV("UqIZzqentwzekaeXesKNVxtXOZLVFkQzmheqKin"), }, + { .name = IOV("IcksK"), .value = IOV("hwVSDuikYJvYXvimDRHoplUdLJpkVPggUmbevXSGcjiSqKt"), }, + { .name = IOV("dfZCgIxi"), .value = IOV("yLVbnNrSwCBwfutkExnpghXmgQQltsLgTn"), }, + { .name = IOV("ID"), .value = IOV("myjzjdjbwkuGwBLjldAsfHRxfNBAIZSFpk"), }, + { .name = IOV("qcKMyGSqZPPtclCupuFt"), .value = IOV("RdmFpwzwWgYMywqJTCBuDwPMhTfDIxknjyBoZEUHVliuZHsOaERJwpaPKMhYRIJbVZibKQRf"), }, + { .name = IOV("CPMZMg"), .value = IOV("eQOti"), }, + { .name = IOV("EJvQ"), .value = IOV("LHmtFQOrlpcdZnqlanIBvlyBonXsqEJviVEBqtiNpLDaRQIvJghUehhsHIUCo"), }, + { .name = IOV("VlAZBwFeBNsFabfsw"), .value = IOV("WXLIMZUuapVNKyTnmmQdXehRvCMGxHnGTrVnf"), }, + { .name = IOV("GtIXMOPSlhkvTycSxoB"), .value = IOV("YQJnOiQGLpnMgLDmicDbOiZQGsrSGfStIbhTVaZzNzyoapWayejaPnQvbSSpXCYrjTYbqtZtvonVLR"), }, + { .name = IOV("JL"), .value = IOV("MZiGWvISPwoIdktnJmFMNUIOhGGbjTeEJrkXAdFHWjjbcjILJdDigReqyxxVgbLbQ"), }, + { .name = IOV("YGZYdYBdN"), .value = IOV("vGljIcFelqxAeurlmmUEMyzw"), }, + { .name = IOV("ONuwoIkuAqA"), .value = IOV("tgHczAMaFyOYPCoYvjeuOosJoMKfbWSrqgrkuvlSiCYiJNnzNxZvabiFkVTnAdIhEPiMolBzcNjfOmvZ"), }, + { .name = IOV("RkkCaNPxjAXKcqkk"), .value = IOV("kangIoOKzmlOmzfBFCbMs"), }, + { .name = IOV("cjeML"), .value = IOV("uUAfGQpSEzhOiTxQMJmdsMsLGseVHPLImNEQivADoBNBBlDZCIjkoTLITYKGKPOa"), }, + { .name = IOV("TfeZVboiBuIEtHdtS"), .value = IOV("wQVDOHuizfHuBKOfqtQsuOzbCnYEyTwYL"), }, + { .name = IOV("bC"), .value = IOV("dUQqcgOTkHxrLYbikjUbAJTcaLwPuwoYnpxLdpQEOciZELdHhjTWluZAQluedVudYDYLwl"), }, + { .name = IOV("kllgXzJOhTgdGm"), .value = IOV("PgxPCLsJevvVsdNXgSH"), }, + { .name = IOV("dvyFxGFdzKwpdP"), .value = IOV("fsgGNNXALHIZvHPIPZbNLPYAJAEoLGWxwyMGYnQ"), }, + { .name = IOV("kTHl"), .value = IOV("nCdtHKTiEmoOramBbGQPWggpltegaRxBXiEVgLsOkbJMvlVWPTnOIyxPhzvSoHiWYIDNe"), }, + { .name = IOV("TxYEYfPulji"), .value = IOV("HPQtHEMIiIg"), }, + { .name = IOV("lRbsYGVeDaCTU"), .value = IOV("asZsnnGcoVpDlKwArwFoVcOdihzhRSoqquPYTouSekegahnKzlXMUTmztGCUgAkNtBjysksKb"), }, + { .name = IOV("A"), .value = IOV("dioseIxa"), }, + { .name = IOV("cYIhJIsdEENNzqvUbJhg"), .value = IOV("CsRqjJQbcOEKkEILYRbQQkOgKIRNeJqBHNPNVWie"), }, + { .name = IOV("djuNsfsktVCgtvsks"), .value = IOV("PvR"), }, + { .name = IOV("MzDozWWjgHUcMPbITjQ"), .value = IOV("ZDYqmghlovYBbuQIJTukZglSvxIaeRSq"), }, + { .name = IOV("ocf"), .value = IOV("bFdPvZxBaxOqlQhyvOBxpblBUwCjMDGWhgvchzIppfSGihnIjyaAcDwngBa"), }, + { .name = IOV("SyBTxwTvpvwm"), .value = IOV("jsVMdFxCrX"), }, + { .name = IOV("OAmYPNpaBbDSxygRf"), .value = IOV("hUaZJqjTslpXDZGPaMkBtQkTtvoFLKThmzokIOhrmKWhirMMlhLAoC"), }, + { .name = IOV("PCdlKzIWXUwQXskNy"), .value = IOV("yUKDamomMyJuExLaPkuSwvdoewqZtDiEEsWkFzzCKdxlgRbLidPZywZXgq"), }, + { .name = IOV("iWSFkdxV"), .value = IOV("dJYLaFwjQXqJCXdSISWpmtIxxVViaPJuPpyADgZt"), }, + { .name = IOV("pYR"), .value = IOV("zfwkTSxqkwcrpaeJMFEWLwlvvpCumJUjnQBGMwjFgYNbVoSzEpynqqpQpbIW"), }, + { .name = IOV("fywbcK"), .value = IOV("mXhQKRwfCGstLFXQRLmQoIBWBPsXALyPYIUGxgF"), }, + { .name = IOV("OOGLGfuqpPv"), .value = IOV("MtawwbujaoaReIfqSwR"), }, + { .name = IOV("bKTqx"), .value = IOV("zOeBzoAHuUfBBcsnjFNmKbuTglZHlGzCOIGhreWpqXiEuhQlROqai"), }, + { .name = IOV("H"), .value = IOV("yOPTxkZAEziEXvlsQTTapkxRGrQpIBeUDNwTVinwGVuYNmCrTeWUOSdmcDAwBRiZvOqWrntEP"), }, + { .name = IOV("kTa"), .value = IOV("mrmpweSzzIQALfrMRbrjWKzDJRUUeCKnIyNYTTtyDkXdyTEgoaLuJXhCxkgysnsVv"), }, + { .name = IOV("jdkZrB"), .value = IOV("WVrJHNsyTlekbocatoglScadsMOdkxzmiNYcgctGyNUUZzjehLCNp"), }, + { .name = IOV("iYvklsuQDcowwEFKSw"), .value = IOV("TVKvruGXSXsQTGWY"), }, + { .name = IOV("ZQtLOsW"), .value = IOV("pgqnrbLUGeRffKoMfBRpCiBvhfvzm"), }, + { .name = IOV("cPuz"), .value = IOV("PrOnBMvdFPZiYQtopzKvblsTqvAyJWbOOt"), }, + { .name = IOV("nrrOfDpFDGlfSTs"), .value = IOV("RGsJInTMhOhimbbXHbeMpya"), }, + { .name = IOV("BQToUzjZSRfZtI"), .value = IOV("GgTAagpZBSWHLAERICeCYSPlolILLDAfGntseNVZujbfRaCFSJFCbChFZFlZJATgDFdDdBGJptmQKuF"), }, + { .name = IOV("zvJyz"), .value = IOV("RTByLGmRlCLctkpUgoZAxZTHGHHZejBqqEgmWCFoYSHQSTasfbFwxTMVnoVHMRZAlPzbN"), }, + { .name = IOV("JrPoGstUI"), .value = IOV("SBnrqGYlUDk"), }, + { .name = IOV("KQlsYUSzwhBs"), .value = IOV("FbFyfNUmXLWCObyaqScBRMdNlwvZTfsIeXUFLoKCUzNHxaJAlMIDBEGovczIPy"), }, + { .name = IOV("g"), .value = IOV("UhBHVAxsObuaInueUQQHFSpDIZvkQXaqaCj"), }, + { .name = IOV("UUmcKJISBtnRXfp"), .value = IOV("CgLhfBmDPwESQOmPATkXngbrZBTOVSXQSotDeQTWmyKzYBXqluaGVMyFWJZMhUwWuoDLdsfdce"), }, + { .name = IOV("wWFdjHvqHysSedTp"), .value = IOV("lxvlvReIabgwsamgrEmOPMYWChzxOyUZfaZXcHkgmgCdyQkktugRrgWisGamMWrJABaWeJpFdf"), }, + { .name = IOV("awldIgtc"), .value = IOV("PsvVWbMafhZLiEbaiZDVwSOVQgHOvOyn"), }, + { .name = IOV("AaZztowuiSbOmupD"), .value = IOV("cvBKQLgaBFRwLlIlGpVdUacrxrdJXLUQUPnROdzHBJ"), }, + { .name = IOV("LpEfOXPsZJKkkHirVWV"), .value = IOV("YfwOFIGbDOIETSoZRNqMdN"), }, + { .name = IOV("ZEFAkkNP"), .value = IOV("hrtRgnQjLFJzIEiXRIOnsldParYfBdrqwdPgRoU"), }, + { .name = IOV("dwr"), .value = IOV("IbdPrirWgiZUukxUtmfjzejGtdhCuLDSAdWNkZkieaotfVpRUhVQmpZNnEFTB"), }, + { .name = IOV("jGUETdoUpROCkGbgE"), .value = IOV("vOFDeHXFaIgoz"), }, + { .name = IOV("cJjvVonCKCeUKwmxrEp"), .value = IOV("DpmAQaiNSQXXdlrwyAhBOoRwKfczAfzsRuzpbGyWj"), }, + { .name = IOV("JKTdhloY"), .value = IOV("QBYjnYZOF"), }, + { .name = IOV("PhocdryVniVa"), .value = IOV("qzSfAgKtxy"), }, + { .name = IOV("CDwwlMNRRegcj"), .value = IOV("ZqdRkYJmHsyGGmLMipJvdhVmroUIAPSvmYVXyAMqdbMFAIP"), }, + { .name = IOV("xTlbRVXTgQkGUeMoeK"), .value = IOV("FHmHImRsBuiqlBPciGSyYhnDoLCvLKLTJj"), }, + { .name = IOV("FVUxIOtfLc"), .value = IOV("OYlYShLvgUEBgNZHvQUJhpjQdyKduc"), }, + { .name = IOV("uaQKVfgTTA"), .value = IOV("WVUXdFBuMiGyHgvlxNVppsLeBhCMkhOcdJqLAdDGHWFGVbjIFpkyiuCLuhlcg"), }, + { .name = IOV("XRJv"), .value = IOV("cnVFlhJKpLbIiRkpdbaxxx"), }, + { .name = IOV("ThZsZcfv"), .value = IOV("bwJRWoedadpBrhXdVmZdkQxRQeSBPJYMQnBefWB"), }, + { .name = IOV("iRmvsdtVCHVePrpWz"), .value = IOV("ugbIYkuxaBVAuAdOILrXSmIHOplM"), }, + { .name = IOV("iCeiCXoxlNCAN"), .value = IOV("BzhpYJhhevdCiLOUYtLBIKBjw"), }, + { .name = IOV("LaamswdFEpShjSzMDx"), .value = IOV("uOJordeBfSCZWkLfCSfzWziANRORmXHDuHbFYJHmaAyntCLRPrZRhjVwFFwKhtRkg"), }, + { .name = IOV("n"), .value = IOV("hrkGfxwLQkfvrGQAPFLGLxHuKXNMSzuqeJhMffFzHXdPrMfQzauhlkrilhftfFkDqfpDo"), }, + { .name = IOV("smWI"), .value = IOV("XOieCMAdWwtKlErwiIryIVyAOMrOzHgALAYAEjJiAtFPkSVNpaBpPBsmUpdMzfZBLcwErFXInVd"), }, + { .name = IOV("bXLoBmxBUZKs"), .value = IOV("gnQhopwPrsEEXUjTirzsGkwkT"), }, + { .name = IOV("jaMXZTSStlsnxZO"), .value = IOV("Mf"), }, + { .name = IOV("p"), .value = IOV("BwfRnvNRgqzAAVwzzKwyYYBEaFDKNdR"), }, + { .name = IOV("xBrFPqSyjXY"), .value = IOV("KXiTmHNYBcQPFLhnxs"), }, + { .name = IOV("MdvGIGEbtlctOQNSedtc"), .value = IOV("hwXdWDsRmrZUTuResBOVojNkxdYxCqSmwAFySGuVIVbXoqTrNBdTwlmj"), }, + { .name = IOV("nIY"), .value = IOV("tAobEWELaHAdues"), }, + { .name = IOV("DqFyXVvCZj"), .value = IOV("uyibdZAmIjsxGzZzetxGyceNlDV"), }, + { .name = IOV("TKyckzMrHrwNY"), .value = IOV("IWqCLSpqnvVMhBAJPjniiWhNVTeVcmmGpscTVcTrKOqKylqRxRskGHDZxYkLEGnibLdfLbxrB"), }, + { .name = IOV("GNFbDh"), .value = IOV("Tmox"), }, + { .name = IOV("ytHviTFahLe"), .value = IOV("dPMzZwSsDMyqo"), }, + { .name = IOV("yhWit"), .value = IOV("NeXPwccvsCGwsNzSWWDtgcmzb"), }, + { .name = IOV("amNJOgC"), .value = IOV("JOIXDEGzFWPHbpotVXZpgCTSyYKbgDQgoYIhpLnvbDIMBJXhGfRYrayybLDNHhHqmBhWyoAmCcjpb"), }, + { .name = IOV("swDWiWwrRy"), .value = IOV("FVrXpv"), }, + { .name = IOV("yPWQUifwmSMmCEeOV"), .value = IOV("tqakSJOWU"), }, + { .name = IOV("XeBoVLNsRhYa"), .value = IOV("VREzXPSqTeWONwjWrTEVohuGKBDuamIwRHtBCiMrAVljBbTweILLUJOEgfe"), }, + { .name = IOV("JbKqmWQT"), .value = IOV("avYCzzsjQboGOECqqJacixKEQxbdrbxxLbEylJIMhAvjHiRGdcDeoFvJKtpxclBECVGWWFGXKeOGgLu"), }, + { .name = IOV("nXvQ"), .value = IOV("wgrMpbiSWqGahPUIpnFVmSiKffOOGAqoyyjnMsmNZOBaXSYqaDZIsLGiKUKjiLvGsXqfKBwZpUgvauD"), }, + { .name = IOV("lndGG"), .value = IOV("tTMXimjgWdSuklbzZGRrzwAApEytiOdaOE"), }, + { .name = IOV("YzoisAMGn"), .value = IOV("jrOUXZYfuhvgbtWygspxOqXiUipgTXUuPVPnKeJhrUPKMoG"), }, + { .name = IOV("SQXAtGfONkSTUwkDV"), .value = IOV("kvaneyaJnGYdOttwGqaBZzBqhFFYOhrOGZnHvQOVCLbURHLpFXDRwTlLyBPdqrHaLRGMAKPKIpFPvte"), }, + { .name = IOV("AidAdbJpEFCwxuSuRz"), .value = IOV("mSxbnUCFZqCNBw"), }, + { .name = IOV("UIWFrmSqZadkCrBFQGbP"), .value = IOV("MRGrscpcwdOKBholFvKByAlaDQOmLZWcoclmAi"), }, + { .name = IOV("mtl"), .value = IOV("FitbQYxBfHsvvjSfLcoRXEaDQl"), }, + { .name = IOV("oOnPw"), .value = IOV("zzuXfUzMtXNpkvdoRBAEMxasjDeyTqUclzEFMqPnjYFbdfvpcKmIthdFoImaORqZOooHC"), }, + { .name = IOV("Ed"), .value = IOV("mvkSdmFduHujdatkrfJeWqJTCHFkPnuqaWNXeQtwsbERTUeAzfYdFuHjDpOwrhpLPHFzbDeO"), }, + { .name = IOV("FjXgjh"), .value = IOV("NSMyWxLbFMIrEQbJvOUtFHVjtNMSIFFiGIOTdZwjwEUCLRTHPkCrhHsJBFygjiYiCkSvDzrEvvpPnQjH"), }, + { .name = IOV("wl"), .value = IOV("eYngXgVow"), }, + { .name = IOV("VyhPfvPvjKvIpJlnd"), .value = IOV("hFTDkmWvuAsfSnlynWbxsQGKWGywJEjsHXZwFBVMgIeYfTTGNzdMYkpJgXtsgSXpFTYmGxEAnwW"), }, + { .name = IOV("yd"), .value = IOV("XIrFFfmRlZKHXHgPVmrxgmfEhRDwgIslZSkAoTLkc"), }, + { .name = IOV("xAKwFfxBRoAc"), .value = IOV("aCtQFqGOLhLu"), }, + { .name = IOV("jpMvm"), .value = IOV("qaYLcEUHq"), }, + { .name = IOV("DTvygRpMrqS"), .value = IOV("JbByKRxMlPZAMpQdrdPucHdHCMelbDhsxBaXuXetXrTdjDRygDuNGCmwoLJ"), }, + { .name = IOV("fzlImVzxnVs"), .value = IOV("TbWsFQvDPWeZThMRFlhfsDYfAEDxqBfYfybpVhm"), }, + { .name = IOV("teCSANvwLhjLr"), .value = IOV("TYLZFiROeSOmCxSnOlsWLpYVEnRXhgyiJsYxJSARwhmXBqQzdDdRON"), }, + { .name = IOV("zO"), .value = IOV("fJZjRSrSqBHCCHPprtDCpWxMtPWpFOMvBWyqdMKns"), }, + { .name = IOV("ziOktCmr"), .value = IOV("aTGcwTpQpZTrVbRQyLdSTDlWAC"), }, + { .name = IOV("YxZXGUcXuoPcBwDH"), .value = IOV("KAZdyYsDCnDZXa"), }, + { .name = IOV("EXiRiFFhItZUeKbXJ"), .value = IOV("dExxHzGNJoNAdTxMIXxV"), }, + { .name = IOV("onw"), .value = IOV("QaPlASsTSQghTpDSmsFxGbotmCiEbZRDJ"), }, + { .name = IOV("BBEhZrGuluJCx"), .value = IOV("ItIcHhIwKnyCCqJ"), }, + { .name = IOV("eQHdjZQ"), .value = IOV("CxPLogCAqadbiTzlCPbjHAMyAxmdtyBywPtQT"), }, + { .name = IOV("dkWTGClMNuVHQ"), .value = IOV("WRYTHRrBKdfRexuFoohMjyjjUqxeDVMAnaLEeHkwEhD"), }, + { .name = IOV("psZYHxjeJ"), .value = IOV("uYILccFDeFzzveosyhijahotZZgmnvMDbgoSgK"), }, + { .name = IOV("HHVrqISJ"), .value = IOV("kOZuaCPLyriSRlyszwODYieuTdvgBYnOjWVqaoX"), }, + { .name = IOV("tNfajH"), .value = IOV("TshASnhhWslloeKKaMZrcnYoGHAhMLYySCOOFRPTpSvlxuEJVfpNzJc"), }, + { .name = IOV("WLclc"), .value = IOV("jXCjXCJztUuJcgvIkQGgRAsywpnvGJYCvlgkUlUMeFSuQYSExrr"), }, + { .name = IOV("RpDLrfTQychXQ"), .value = IOV("vHwsmQUnIWgIVkHPvhhjyQCaUaGVvpJvtSxroCvdAhxPwYkyBjSPDdsocjcYxSFEggHrDsMT"), }, + { .name = IOV("WpVUmZtZrEgWnT"), .value = IOV("bKnPuXATxxfXloAcYoWLuaxKwNDkkAzgQTlWU"), }, + { .name = IOV("cTHYjNhLNWsShRR"), .value = IOV("ZgowiBHLKxftYOpeKCzyRdPGRyc"), }, + { .name = IOV("IDmSpeNxlqFdtJGRGp"), .value = IOV("tbecuCPlzPYwCWLiiUhylQOmqiqxstSmTYFVewreQhCxBLNsWEJIblFEaDEMjuONnnpqJb"), }, + { .name = IOV("qYGJeSSxrvrb"), .value = IOV("TfGy"), }, + { .name = IOV("wozEJggb"), .value = IOV("WzMsYEGpDboYPMiTdMfjRSmyllfjtRmxlX"), }, + { .name = IOV("R"), .value = IOV("JSddbAjQwOpGdwYEYDnEiAmeYRSKRSVWkOyDnNudFX"), }, + { .name = IOV("HVVDbOPQYJgPSNpzpwOM"), .value = IOV("WGeqlSTJDNAptNqExqnjICuStLqwaOwkiuryWBOutPkn"), }, + { .name = IOV("fnkAjvk"), .value = IOV("hYhGfzxGlIccGFNoxYcKwENmXakXRP"), }, + { .name = IOV("eRCpl"), .value = IOV("WbyfXztVPtbRJtQ"), }, + { .name = IOV("VkFQmap"), .value = IOV("RfChNQpUHWhIRClNCiArEUciYI"), }, + { .name = IOV("elrrsLfVLQgFV"), .value = IOV("lngaaZgOjatEXitmyAkNNlRgbnzvrAVxppjLAmAeMRKiQvmYprGrAbFdVmAoUTvErtBNKizpvjCpgwf"), }, + { .name = IOV("KKYzIUhtOaMASgkNo"), .value = IOV("NMtxVWOwMZoIGD"), }, + { .name = IOV("JcY"), .value = IOV("aHxrrIVlPgRevxjDjHSkzOydXAbKlyLloDGWyTCJuWtRUAKRUMOjxDRvtdOMhrZXcRzGdnxz"), }, + { .name = IOV("ZPE"), .value = IOV("JToLsaMrlBrqkqPuMILBYgDFYfvMQHoyABZMYZAhDcSSxgUAWOOmdVThtNOZsSSNjGbtyjOUFNutpkSN"), }, + { .name = IOV("bbhtlGGOnbZbarapWZ"), .value = IOV("vGijSLUtyvToO"), }, + { .name = IOV("HlJjI"), .value = IOV("FyfWSbpZOMMCmSwAvJyFKnVBYZOtgbbKHbRvCsxh"), }, + { .name = IOV("xwJFPlgkVBsIgl"), .value = IOV("vqbvfRoNJefkozReijpvZPr"), }, + { .name = IOV("JAMCdbn"), .value = IOV("FoYpsAHwsxnLGWeRqCcNxmd"), }, + { .name = IOV("PYddxcvaawXlvKB"), .value = IOV("nnZGsuWEklrqPMWvFNzAVODSXyTYphYVmsIreBlEJFgbPUDe"), }, + { .name = IOV("QPEslvc"), .value = IOV("JyvkVUfZpNGXemTqrYlJkZNxPTQSEcPbWjMsGYWBqcojyciEpCsWYaOLPXNCJHBkCuy"), }, + { .name = IOV("TdXcKB"), .value = IOV("ACpKphZGPBBQNRCbDKhJmxzSXHSBlisMIjXtoivSjiJioTcPdCuzFwd"), }, + { .name = IOV("KVdfSb"), .value = IOV("ZHPzJoRnAisQlGGJDSvQQoiZKVOvJmgUGbPbWeKXOfTkhHKFhTdynlRjOVKAMlWZThSdsW"), }, + { .name = IOV("NpdMJcHfMWCSqcLq"), .value = IOV("fjMNvWmQzeiUyjnRXb"), }, + { .name = IOV("oUpVyFSVhzjWeOuNOVSU"), .value = IOV("mZILpdjVFxNslOcPVpYIpbIRYDGdb"), }, + { .name = IOV("bILZJSSRJzIQvhas"), .value = IOV("gexRjhqm"), }, + { .name = IOV("bbPvXtMEYBkBluX"), .value = IOV("AOnKEzhKIaGgpRbchYKRApHpMWnxJM"), }, + { .name = IOV("LcozSJII"), .value = IOV("sZhIEmeoKZeEWYATuiEkiNedkbAWXhXJDkyUfarmCLomxqzzdgYFeyihrPxqTpVYx"), }, + { .name = IOV("HVPVXv"), .value = IOV("UySHfOVXVJBufSBXoeDUHcTVKaUIcExBmSKVwlqP"), }, + { .name = IOV("MPDEFRBlhjmHn"), .value = IOV("pjDtTpym"), }, + { .name = IOV("HAamOcqZuFC"), .value = IOV("hglidj"), }, + { .name = IOV("LLlQ"), .value = IOV("fSboNRHyTBVQGhbZBIKvCdAmxoYxwyRPdSvNHwJAwmZW"), }, + { .name = IOV("uDctbGd"), .value = IOV("eDjGEZfipiFVFhkMIgJcGRqqjFWJqUXmmpXAtWOcDqpAGlhGoRqoPjDNORxjUDSqjdpCcnwcOMoeYqn"), }, + { .name = IOV("pCJKj"), .value = IOV("HDZaVWVKGzx"), }, + { .name = IOV("uKfsCxzozfdGk"), .value = IOV("n"), }, + { .name = IOV("nSnbDOUZXHpJQ"), .value = IOV("ERgBXtfDHTBMinSkZANNEahyBTcOAzUVuDydJtHaUbr"), }, + { .name = IOV("eXrHSYJjfFjtZHw"), .value = IOV("SaWxbzgxaB"), }, + { .name = IOV("cRIdzhkCYohm"), .value = IOV("REwXDqwdBwNgichvXJHEnNrkMIxQphrXqMiWzTCMBWhRZntLBzAQgecGpxQKyL"), }, + { .name = IOV("wFZFLWC"), .value = IOV("bnZnatKvnBvzmTcZ"), }, + { .name = IOV("aBwu"), .value = IOV("PntseLCKwXEeEqpStJRGLJsFoF"), }, + { .name = IOV("smyxnbhFBSbDoYFvq"), .value = IOV("s"), }, + { .name = IOV("NDyoinUQ"), .value = IOV("tzgLeEzxoDgZbudzBhoeZSgGKSkTJPdKCMBDfZaDAmMejMlgthZlh"), }, + { .name = IOV("qwfyJJdEVuwhSGctG"), .value = IOV("KKCPFyTMorPvdEaLDoghwJKhZtmbOQlCAcGvMhovEHszMNWtmySQbrbYUhCvCSDgGAFMES"), }, + { .name = IOV("B"), .value = IOV("cpxprSbXKoLvOiHApdxoikSgrEKNZtBIAYfqTsIUYxycwtltbLRBVNi"), }, + { .name = IOV("LalH"), .value = IOV("TODBJOKAKlPphFCQUyR"), }, + { .name = IOV("bBVfGNZSwGpXKhXt"), .value = IOV("MxxOumatNdxnhFsmHTbrNkMHYkcQgdGESWbZ"), }, + { .name = IOV("aRgEMzlMn"), .value = IOV("IvZrjInnQJklkMVkcMZrFNAuCKUnbrBjjRJbaifcSzaAAXrNzkLy"), }, + { .name = IOV("BZ"), .value = IOV("oOGYJfIMYwwreZhsUBKtOObJeqalcWQivoVVqRxGKNcbMruaZBsfeyLkhHFBXoeEvsaOwfsP"), }, + { .name = IOV("PXwwXoFKOjLeStq"), .value = IOV("chlEpVvPJGeMEvjZXShYHRtDPXhORvEmTKHkQVlNmparOesSNAbExbdbyYQIqtBBzhEAShzjI"), }, + { .name = IOV("agVHmFz"), .value = IOV("kZ"), }, + { .name = IOV("ZeUFfOCrMpqdWpXlQsbM"), .value = IOV("dlXMyKwZmIuvasPtdrVOBcjGPRWOAfsaCfIIUfRbbIWRpjCsJoVvGUgWrciJnJuKbh"), }, + { .name = IOV("wTAppXOatQOuKnOpbyMj"), .value = IOV("VsjxVTlJvUmWijFBGouqclgdoQTYJXEAesbCqdg"), }, + { .name = IOV("wWxdyDkxtadl"), .value = IOV("RpcTHiqtNvFXd"), }, + { .name = IOV("yxnHQQkOCZJLSRo"), .value = IOV("KvZykETfBrACSnjGbDkBREivStHppjpnPBqUkZIWLmALyRMKVxNxsoXbPIYPPrsBMdLTOv"), }, + { .name = IOV("MNFsaRSZXQbZsmN"), .value = IOV("niqnYGjGDsEtYsGWTzC"), }, + { .name = IOV("WsRQPcYBnK"), .value = IOV("okcFTqCwItdOrwHXuuDUtTzOxc"), }, + { .name = IOV("MQbdTKMXRTrH"), .value = IOV("docFihuSgyxErrMzCwFdsVfIkDfjtQILnWYhbAdblfPKFQTw"), }, + { .name = IOV("LXeszxDMBMTwFG"), .value = IOV("IHKBaXQLZNAwPJDUlNbRgZocpJCvTkwyxSACSAtPmlNPllPlHYkBcqq"), }, + { .name = IOV("LggnfbTIOuoPNeYEzUF"), .value = IOV("PQCNWkswHyCNtIEhGWCIVxNxVabIepmeqvdFsUsVAvneHndtXWVPAMsYFTn"), }, + { .name = IOV("INV"), .value = IOV("gFbPwkLcVjcXLeWegzlUkSwSAWXrdfLSoVfjccafygSUYnsLcciHjU"), }, + { .name = IOV("DYVNx"), .value = IOV("adKgGIFffIKjexjFrbcEhyVQHHbHhVmCwUckVHdXQBvkSmZPrj"), }, + { .name = IOV("GiYKHscdOnQD"), .value = IOV("hHiOzKdAuLkYtvfeWuoYYUfqAZBRjskyiqOCHDKnJluanoyhybpSXeyaqITYXzHkBAaZGApShGnlc"), }, + { .name = IOV("awoqU"), .value = IOV("fquLtSwetxoiAvfbviH"), }, + { .name = IOV("XpRQONBLUR"), .value = IOV("xSpQWjvawoBQHaBvhgsGXJtaMDYbonEUfmfpnCYUgaoSCFGeSyxLLzbB"), }, + { .name = IOV("jWTzUWXqiZB"), .value = IOV("ZzkIYOwZAifQaAPpGREVStkveaedqssmrmLVZviqrYZcwaEJlqxZbqbJOWxmo"), }, + { .name = IOV("HBQWfysJZSGPTGyIvax"), .value = IOV("gHDErmkzVMFEImMNDxyEMIqMSgQIkwWEBUMARuTQXvVfkKCaAPoxAualQO"), }, + { .name = IOV("UAQoWAuL"), .value = IOV("HaqMWNXCOBBhcMcSyZlupcRUULhkAtMSOfhzyyQOfOUsz"), }, + { .name = IOV("YKrAVbbEJYqEhVmaPeCz"), .value = IOV("qmMkvN"), }, + { .name = IOV("hnZVKGcsRyuCexCJ"), .value = IOV("TejvUirkELoQxNQUYlZlvgcfjYbNtEjwmlvRZJWy"), }, + { .name = IOV("UccFUUtClzInq"), .value = IOV("tSvIZmDNOWHVRrFpmkrQKaIralNytakQJdohageAmQlsufbfczqQXF"), }, + { .name = IOV("styZfaSyxUxdYYzh"), .value = IOV("rFsKdiKnFVyJxWkdKwbHrgKlxEnUJVsn"), }, + { .name = IOV("JtL"), .value = IOV("jkZSCjLyAcENZdsf"), }, + { .name = IOV("rzWitJCVGDEvWOaZh"), .value = IOV("McLKBNHhGRcXpRPEvoUDt"), }, + { .name = IOV("XecileBQOuwgGJuKuETs"), .value = IOV("ignKTINkeVwkNQeIqgHkwkocbDSrnXMKZkXiFVdVYfRuHcPNLaTorjOgfZ"), }, + { .name = IOV("otqbAFYpDnwKP"), .value = IOV("mRMzEOvpNVGuhopqmvkudWCGwbJyIolxKJWsZyYLuUwgqFLZeJQsEqzDCaDbMYOYJ"), }, + { .name = IOV("gWmuzmJQtOTIisFx"), .value = IOV("wyvUqINeTUgCmCRYNwITtfOqdieNEmrwRzReEFJwMXrmMycOCcFjFGnF"), }, + { .name = IOV("mCUlgDtQomS"), .value = IOV("dKYGOirYBCwSgLHxCqqWspnYNwNP"), }, + { .name = IOV("FbrZomNILghT"), .value = IOV("ENZvJymWlEjyLAtVDBwZSfLffrejWtgeGpbs"), }, + { .name = IOV("Rbv"), .value = IOV("SaBMFPyDYScan"), }, + { .name = IOV("ruRJRvPvSFTHXrU"), .value = IOV("PPketBSqhwgWKGmkbTnfqUzXYWGzoRWOEPamEFinfXYXawfaBuYJzQSMMmLjonyiRbiXuFjLvQdZb"), }, + { .name = IOV("GOgHS"), .value = IOV("sNNxFzULo"), }, + { .name = IOV("CGGL"), .value = IOV("WxSGkZjPOuwcFCCBTziDmXjQnLtXXnggDcGSPngcIWAQHBdgwrSLLZrDxvHMpCkKFm"), }, + { .name = IOV("iZQ"), .value = IOV("ubGwqCYyyNEQIDLehmQjOtbaAPrwnVVGOHWXHWkGxPvyJQOEGXDUpi"), }, + { .name = IOV("DOqRnawYHEkEBSwLse"), .value = IOV("JqJtOKneUtfSNNDUD"), }, + { .name = IOV("ykaFYBNi"), .value = IOV("VDUtEVnQ"), }, + { .name = IOV("dXm"), .value = IOV("goIvBpHrHGwYMdCsOGryatzkssnobSYViGXyLrVhrRQbTdnV"), }, + { .name = IOV("IzMWasKXziDcUwcrPd"), .value = IOV("MXWvFhyQrBEmAjyjlXPkUDbBCqHEsRQCkybJWisIbIXdPiHuKNeWNfIoirgCaYSxOAw"), }, + { .name = IOV("WmrHa"), .value = IOV("AvFpcWmBSGyDQngXGACKYxeXnHILhIRdHQQzVxlCTlbuPehASxasXp"), }, + { .name = IOV("EvOKNlF"), .value = IOV("IhSefYtAdogCjYITjZOrBDPJVWBSjmqCnFUKfy"), }, + { .name = IOV("oXWzYSP"), .value = IOV("VyebfI"), }, + { .name = IOV("O"), .value = IOV("hhxENbVgPHdUTOGvhlFMagGhFEwimtHMNKOKiVcMOmsjdfsprCXDcDVenoFqwezguixiMk"), }, + { .name = IOV("KWillGrrPrzFiayLZldY"), .value = IOV("M"), }, + { .name = IOV("SToHIbnUMK"), .value = IOV("fJMxUPVIVGEWZimekOXS"), }, + { .name = IOV("MOjfYCUzdMod"), .value = IOV("YHzXVHJmbrJhmphIeyxNb"), }, + { .name = IOV("pUaoZuQmiYcfiPUgzOap"), .value = IOV("LXGbkeAkYIOUVTEMVyMr"), }, + { .name = IOV("kM"), .value = IOV("jCnnjCcWuRmRKoiBxxDnlgBbCfeICTksSQXVlmoPEhzPWsqLtaxOMIis"), }, + { .name = IOV("DnIDCQViQvFjiVwcTXuk"), .value = IOV("WrXFxxOGQfWWzoVFZZlmNZKqXl"), }, + { .name = IOV("iSQQJnJ"), .value = IOV("KmmwGrocCXhrKkshlaNVoJdIdBEuZEEWDUagxHudiSQUvx"), }, + { .name = IOV("ppvDmrmcHTVksXJ"), .value = IOV("kuaMUDKxAaJLfNYqoagpsSOpSdZNyfjlRGMhmfB"), }, + { .name = IOV("dj"), .value = IOV("jWP"), }, + { .name = IOV("shPuRUZs"), .value = IOV("wzbYUedqsLuzrPMODRRnRKMDLgzII"), }, + { .name = IOV("rrVShNAPJgeQhricJXOf"), .value = IOV("ccX"), }, + { .name = IOV("EaoiOZjMrlHTrgBTUIrd"), .value = IOV("IJnWqbzKgTzFBkbLlBZA"), }, + { .name = IOV("pdWZGzzsHWzts"), .value = IOV("QgHDEI"), }, + { .name = IOV("rVArliowNx"), .value = IOV("wlMiGBHurZAqkaCTrAloszC"), }, + { .name = IOV("mxpgWAnPTMWQm"), .value = IOV("f"), }, + { .name = IOV("yzzWeJvFTBN"), .value = IOV("mjYirgOGoApigKZMV"), }, + { .name = IOV("VTJEiUMvY"), .value = IOV("sJMCvNyUImbEsSIQANMGElUBwrZUcwiQZTCnJqOLhEAvdAIPFQqofxTbJqpQcwoGTcaKxVOSgledm"), }, + { .name = IOV("lChObrSEHHGLyGyZvy"), .value = IOV("xLLgNLiJbwlqrFcUIjVRBg"), }, + { .name = IOV("UIdZIzlByHMVfeuaZtXa"), .value = IOV("zqtYUJDZqJgsKJKuLmwpmrgCoAihQluLmEJjsqnjEnoRtMIStoMDGIZMniOCaBfYMuU"), }, + { .name = IOV("EKTSvbnSbQecbKOF"), .value = IOV("agxCoIVwCvBQrxJlIdXTilzMSlwRWkcWdmSBiWVs"), }, + { .name = IOV("MSOlx"), .value = IOV("gzKJxMaSChKfKDjdWVsgXtnoKTxufDpHZyhkNJak"), }, + { .name = IOV("CsTEyh"), .value = IOV("ZSvXhlbHjwbQMXU"), }, + { .name = IOV("YMBBIunR"), .value = IOV("LugHoTZXuhXoDSNrtv"), }, + { .name = IOV("hPKvFFZBHYr"), .value = IOV("izd"), }, + { .name = IOV("SnMjhkFpd"), .value = IOV("kBwfFhyiiVYilsdQCoafIn"), }, + { .name = IOV("azHM"), .value = IOV("snWvEsFiaUYmQpVnrpKWYXshEsC"), }, + { .name = IOV("sCH"), .value = IOV("hExkHxDSvjavPHvYwDWoANHYRqPtsWfj"), }, + { .name = IOV("rRZnzKoYNWz"), .value = IOV("FRMIurdfOEw"), }, + { .name = IOV("SQljPn"), .value = IOV("WsQZRSPlxgpEdFwGnStFNeLqXoiyQUPqrGveuKQFhANatBAGqlPOO"), }, + { .name = IOV("YQMoXyxO"), .value = IOV("eQVepeexRsmzSienupsRmseeweeCsvlcCfmFNCePAxDoXVXZfHjJcQ"), }, + { .name = IOV("GfskcjgZEzUwh"), .value = IOV("slFhvOyrMziCn"), }, + { .name = IOV("Y"), .value = IOV("oghv"), }, + { .name = IOV("w"), .value = IOV("SqfOWRBUqFyQpdYmnfsKDejVkauewOndlcDzVaPNMmgXfXOJcHCnFynpO"), }, + { .name = IOV("RQ"), .value = IOV("ZvmKpKwnofkGjbxFrReYzBDD"), }, + { .name = IOV("pwOxeTlduANTXOhI"), .value = IOV("iQnFYvNtdaeIQTJLcaBhPyWmBvmRoopPbPShIxKvTxoKmRJTgxkOJxYAQBWdcjRKMa"), }, + { .name = IOV("oLWjwIUID"), .value = IOV("foDI"), }, + { .name = IOV("wTKNTnEhVQ"), .value = IOV("r"), }, + { .name = IOV("nwOstnMiMxOOK"), .value = IOV("HEhdzhXUu"), }, + { .name = IOV("OkXNdJZDzJbeonZhVGeK"), .value = IOV("sDwHxpFjJJWEwrjjBeDQtYCUjejhAriVXBNrzsTOYKyQcYtaLTxzIV"), }, + { .name = IOV("ZKeqMxJtkkQr"), .value = IOV("gxRcJdyBTafpUIsbMkxmtXyCGJsnkbzsMbEvGyXkOhowoWrWhPgmq"), }, + { .name = IOV("nqUQ"), .value = IOV("injtmhbvUrYVrtjQXEQtnlqQalLtHnbkfbSgPVnEtkrvkK"), }, + { .name = IOV("CWHBupTX"), .value = IOV("vpLRtypWiwGv"), }, + { .name = IOV("xwECaMOY"), .value = IOV("UpSVIVYhWIhyWUKMXZbYonNNEqgpmLOFHNsqEuuUUfDOKqLWnzWSFWGG"), }, + { .name = IOV("esM"), .value = IOV("YVEeMcHqZipzGmdbxyknZFqKjJSwXKGCAhapApzxUUtVEXqOOVkA"), }, + { .name = IOV("XpjiTgcNSsepRr"), .value = IOV("VrSazruVgnkUsMxHEahBGPcFeMajdEfwWkXSMOrxETqWXqzfCGCGD"), }, + { .name = IOV("vQZyyazgSLa"), .value = IOV("owGKFwNpDxuhjwooGpFwhZJDOpGIfwsOajaJoZZrtPmGaSkSmTEFydnYqsFWYJjQKkAEB"), }, + { .name = IOV("USKQpqCnwzdMWOAq"), .value = IOV("MqUOGARYktMQdGRnJYoMwCWCaiKreXSpPYqiSFjzlMLcijBTkCTAdHTadVWKzKmFJRYpdYzeSbox"), }, + { .name = IOV("ZrGpqJqjQX"), .value = IOV("GQwWescZMrruIRMxWPmipALFSQWsmPPrlCcQBgWZMAJaOkREGsEAlqCaFvdSZryswmzwXaCuV"), }, + { .name = IOV("uscNZBoeeRUPCKYoZtq"), .value = IOV("WxoLCfgvJJmNYkYhDNdwzBavbvjHhxPcJGfyjUuqgHcksguIUjzepcYdHaWNIINgkxvdgyNdSRc"), }, + { .name = IOV("UHBtkhHWIihpSTlmcv"), .value = IOV("AQdikFJWUbpCwWZLFynx"), }, + { .name = IOV("iWldmGq"), .value = IOV("wxWehcbpvjuSpekKxOjzkgcEzNSbyNffZ"), }, + { .name = IOV("OK"), .value = IOV("nfIadyMQZRxPGZlpbItvDYtqzlaYGfbsyEjfzDmNkUVqduDvRnhZFILkcDiZfzVLfT"), }, + { .name = IOV("ehYtjXaJfgqBAMVl"), .value = IOV("PyZcvwQyviMuGIYPH"), }, + { .name = IOV("F"), .value = IOV("iLjVMCY"), }, + { .name = IOV("ZPzwwNjEGEk"), .value = IOV("VVgpiAHpByxoqrehofDaPEHdzxSxRAOORGBMFmNFhxDN"), }, + { .name = IOV("OtgPXd"), .value = IOV("n"), }, + { .name = IOV("uKmxVchywtmuDj"), .value = IOV("ahKtNYriWMVrXaGkJQvljlE"), }, + { .name = IOV("NIVcLfqjwEc"), .value = IOV("tuUEGxWBUBBiZwVfQnJTAKoOrkjYHUuoGzvvzUC"), }, + { .name = IOV("WhCErVEkdbvRxpf"), .value = IOV("ELWwiEM"), }, + { .name = IOV("jQRTwkpbBSYOmPSbjR"), .value = IOV("ERgjtUDGukrtAYLAxkIsiMWeYFUPNwTMZxKXXUYpFE"), }, + { .name = IOV("qlipkMNJXZLbQAngiKD"), .value = IOV("n"), }, + { .name = IOV("UJmZpAMN"), .value = IOV("pvUdTdDwKAkUrbFNDsaHsnbKVUbhCOUWOMLohSGoWER"), }, + { .name = IOV("QkVkFdMdiKah"), .value = IOV("gmNEmnGycnVSCmRZxEhIcPhwQ"), }, + { .name = IOV("HZtRTJdtHTvq"), .value = IOV("MkoQEcmrFOHs"), }, + { .name = IOV("jLOXsqUfFNQut"), .value = IOV("rIbWvzQWTvjKMJBodBvAmCpUIIViHMDxiFzsmWEWGkUfCNcGpfEZVNDWDriMETcpfWUHAaMHBNjRGuV"), }, + { .name = IOV("NEVOokYGLtm"), .value = IOV("ormSsXKeJjXlGxClAaMGlAEKYwyoovDceDFhkknvOffCSwWnaFMmAJAlJKLX"), }, + { .name = IOV("qQzFNglUQGr"), .value = IOV("BMyIFnIiftLctJlzdymdbowxlkCilwX"), }, + { .name = IOV("tEAlDHzsAB"), .value = IOV("bKW"), }, + { .name = IOV("pHeEEGrXsMBPULtkfpt"), .value = IOV("vVCfFRPQyLxHfUFZCb"), }, + { .name = IOV("AZsa"), .value = IOV("TvIBmbybBGSsgjJIAjoZGcuSPcJIVuTgyGoavfNALWKAYetPSaFGCiNubRnUUbdpTXkaSEprinmm"), }, + { .name = IOV("GgpBBLLAtsZQsAdGEvO"), .value = IOV("clGgfkzbrsiIezFwuKkZwMwohZA"), }, + { .name = IOV("jxOaNiGNvmaOgN"), .value = IOV("OmNYExzwWxyWpjebLIatBXjobFWZhODPLexPJgWPJnmcASrGZmYFYpjksVdctTwrvgXxAJnKDx"), }, + { .name = IOV("UQlQjClzkuVFLPkspcW"), .value = IOV("iKfqpWo"), }, + { .name = IOV("QcyeP"), .value = IOV("yARiATyEPpJIFxmUEBVPeeUuJWGkXlDUcMXr"), }, + { .name = IOV("ovQVPCIYjpDZHvbq"), .value = IOV("stNEpFdJFDtvHWnLOMTixkNfqxThTLifOnQFFzvIUzGdzHENVT"), }, + { .name = IOV("L"), .value = IOV("KgeqcbbrnW"), }, + { .name = IOV("eyMtETjt"), .value = IOV("yPacYzXiawvcycMQkwPbEQbfHGDdgWGQAvihhrhjwMaywPHgtsWgJHJvCPWEuXA"), }, + { .name = IOV("HjtFmodcDXlHFm"), .value = IOV("KdIqcxKubGAOIcNFsWKbdZxGEtc"), }, + { .name = IOV("KECQUSwsNCaVmnbYxx"), .value = IOV("OqEQImUyzjLkQPQVOWnfHayzUIcvHKXAdSYtkgXnJUeztPQSxpuHAroLOJBEUhguxPNIqRRnyY"), }, + { .name = IOV("vIu"), .value = IOV("ZynkVZpskppfeTFZjVx"), }, + { .name = IOV("Opuwm"), .value = IOV("IShlOGEPXlsdzSiGiUQZjhWmYqOHAViIuoNThKOYsFKZEmzEFfoTaQPXH"), }, + { .name = IOV("tltoFnZZrXLemaecXvwx"), .value = IOV("imlSkxed"), }, + { .name = IOV("JYCBR"), .value = IOV("OBZFELAZQEdWBysOBqvBucJMZKjhnHmaJHbfGgBdHnVcwfAVBedEeWbuus"), }, + { .name = IOV("wqdGLyldaQTDiufVodpw"), .value = IOV("OpvktGangwoWFRzkbnINcXMIGXbMlYDlKpZcwzcppfeFuVDK"), }, + { .name = IOV("ZoSzikDQOymypcq"), .value = IOV("ywXGGHOuAYlOMrvAhWqZVdLMmGWTlQuhDPRyGDrjtiZKwkHbrueOXBSSsdSNFALjdFpC"), }, + { .name = IOV("C"), .value = IOV("uXKUGKXTAHEYgaITGidjAMge"), }, + { .name = IOV("mQaxA"), .value = IOV("RmKZIUUJKYDRiLWPzG"), }, + { .name = IOV("ZzpETjbkCar"), .value = IOV("UZPiqC"), }, + { .name = IOV("rZEc"), .value = IOV("yfRmcNDCnVdKw"), }, + { .name = IOV("iLaJz"), .value = IOV("WUgHYIylpaWSoaKHssihxeEZyzKDnaijadqcgxmfvTmZdXfoZQ"), }, + { .name = IOV("rGPgAedjnHZbC"), .value = IOV("rjAvBpAkMwrSnUXlqEPqDmXcPaiSDGvvhanpKMfwtqkesFnPpPjJuSCYpWxRlyMvlPm"), }, + { .name = IOV("w"), .value = IOV("CVFBqDYTKrGmEreEvtbKIx"), }, + { .name = IOV("mZQJSCIPs"), .value = IOV("IdBysSiJJFNUcGqTtxIqMVkBaqTFOpdBiLyQvDfxgIxhacIqXBqGvioNSoHWaJ"), }, + { .name = IOV("mPfOgfrTyNvXdcnL"), .value = IOV("PLHpvn"), }, + { .name = IOV("wcTIMRQgQ"), .value = IOV("BAxJCOrnsqPoeNarereYbaHKMKTtYHhtjUSruwtCqhWYXrLA"), }, + { .name = IOV("sseKQWFMsCvhHpcgyx"), .value = IOV("WNpTsYiraYsZwurmtgfAgryo"), }, + { .name = IOV("ZPEDPvAzQboWhwLpn"), .value = IOV("YvqwxCRrFjtBMJiHYzsfvFXwLSYOLXacvkJhIFrkpglEUc"), }, + { .name = IOV("ojjgfRSVkzbVXBbAZ"), .value = IOV("aqjrIEvAOjZIBGEcWwiXaMIOyWiIGljuTJeEZDjuvYXYHZrIxTVKLK"), }, + { .name = IOV("fJmfsKxoqHdnVnCNR"), .value = IOV("VewrgUEqJRtlQHhtAdG"), }, + { .name = IOV("dKj"), .value = IOV("gpeiNqJecgPNePbJXlxXYAexkJxolxfQuBXgLNjBSnhAImJQIPCekaXPwThEbpSGfkhxZRpwdVMR"), }, + { .name = IOV("XZcXnOCOM"), .value = IOV("cjxpURVqaQGWGDoYadcCuoZhmADEIyFR"), }, + { .name = IOV("xWBIcquESYQM"), .value = IOV("gyVlTMdrks"), }, + { .name = IOV("FARGdERi"), .value = IOV("OdfikyYQJaLEoJeakFmiXjRFbbbsttkgbjavIJrijEOCmLsadtevqndjHuD"), }, + { .name = IOV("gQqBHgpS"), .value = IOV("wVRuXnAeEbAhJBRxzsypZjwcbUmChwCAxqSJOMRFgynlSVLDcrnViQSuXRAafMqcapQdzCYAbI"), }, + { .name = IOV("MCHAwkSSQnlzbcB"), .value = IOV("dZqDXLRwrfzYabEqTzdDqQjNpXHeWSBGmKLSlUSIgGCIsoOzNQnA"), }, + { .name = IOV("bkNVZwXTX"), .value = IOV("QCRwbNtQOMoZFPTGAfofnJcFSKGwDstNegbJidZjMWaoRuAMeZUkVugAjrG"), }, + { .name = IOV("UNGrPgjEGv"), .value = IOV("IJzSxpttpVlUmoRzWXrWkQhtaIkAahMOsJMLucr"), }, + { .name = IOV("V"), .value = IOV("JRYiMwqFZLhnMzbEOjnsaBG"), }, + { .name = IOV("ZApVQIrQLoGIsx"), .value = IOV("FcYotadrwxdfWmfVybqjdpRHKPHJUWSsGlQSihyzFbbwrhVsmEERKqOMAfpSyIKsRgT"), }, + { .name = IOV("IgmjvfWykefQXXIeqoXO"), .value = IOV("KcOOmAqbcnyvtcrqxzOuyxMvnMVJzWIByXPZbiRIkJWuQkhVDKLxKvlGlValmfPOxkizw"), }, + { .name = IOV("XCfE"), .value = IOV("zXcVjmAVieZWowiblNkKKnJRygJwOyCjqBEPBXcY"), }, + { .name = IOV("MtUYwjlQNftk"), .value = IOV("NwcOrIIKwvaFIEilLPwHWOZwnCQGfWwQqDLYSNGlhUaLd"), }, + { .name = IOV("Zl"), .value = IOV("MSNyz"), }, + { .name = IOV("BStbPlzSexmsBxRx"), .value = IOV("XfHswpRlrxKrgoa"), }, + { .name = IOV("zGLyR"), .value = IOV("yQWG"), }, + { .name = IOV("nsFusmbVmjPIad"), .value = IOV("wfHuVetDPLKpEZPkqxN"), }, + { .name = IOV("bLdzaFlTVegVqWzAB"), .value = IOV("HoQcjutQueosePHJkuEsVKUPmNvjnrWbIgSvRUnbBOhwtQkGkQBQIFGNLKHjECe"), }, + { .name = IOV("Lfvujn"), .value = IOV("arjASdeWIYWilMrjNjwdEJLsvxmSxOQiNYPmJeEaeIUwoiahkxomSLbIjVvHnWaQrql"), }, + { .name = IOV("JsUqJvtjkFhonHppsY"), .value = IOV("Faev"), }, + { .name = IOV("J"), .value = IOV("laRfSyUlJygCeEwRJjnUeB"), }, + { .name = IOV("BOLQgfyQzwMg"), .value = IOV("QXRzHyGOjjnPWnBYCnwONuyyjOe"), }, + { .name = IOV("bTMs"), .value = IOV("HAlyEExRrlQoQjaCCoOyWiAIWOljMNAmpWRiJIXBlJyUCDhzsgOBkeyueKoryClGCCCcPaddCgnLXxEL"), }, + { .name = IOV("jireBUddCItq"), .value = IOV("ZhCiMDpJxXAvoR"), }, + { .name = IOV("sdtQVc"), .value = IOV("kSNYnEHHBaEkmEDeMAzcsehvodKSzyZjSWVZJmSgTLdCNibJUKuQqxvEhuJwVEkCoJNMRmfEw"), }, + { .name = IOV("qyZYlyTPJkKsI"), .value = IOV("yYFqrCPSkYmZpeweXdEXeiQqedAhrQnBuoDJgVgMqXSHWRuANMIR"), }, + { .name = IOV("jARRQVgEYp"), .value = IOV("ESPHdnAjtvcCgDNrYJuPEmeyfCZNduYYBGhJCF"), }, + { .name = IOV("RoTczZkXdialXMkle"), .value = IOV("KkAndPGKerZGuGSsNxZGozkIZjhtEGI"), }, + { .name = IOV("NExwaAYXCb"), .value = IOV("uYGXOBUCmWrFNooToJJQOgLVEfoFTYxMpIV"), }, + { .name = IOV("CXEvgXYfEJGbm"), .value = IOV("lFadQ"), }, + { .name = IOV("Umcjb"), .value = IOV("NqSqFEEegLvPosiSwJdvemTqOHavymopprjEfOBjCbotMKZybFfSYflBWSWqbIUZ"), }, + { .name = IOV("WCNnBumtin"), .value = IOV("WJUcxSSWtukkmCHTtoFYivfYihvcjqBREkaFvGeWdgGFEnEVI"), }, + { .name = IOV("QommjconKOUVtFkxuXYe"), .value = IOV("QHWYjAIlnAgOdHkCuAWDbkJGrwhIQZgygDnHVhlaKgIPNoMnDaZHeYVd"), }, + { .name = IOV("EevtowmnqPRMic"), .value = IOV("eOZQetfcZJpgZvUXwXJkLYqkV"), }, + { .name = IOV("DBldZkVqfuCfKk"), .value = IOV("vHRNFocyjITkfljkeXLcxBROuobuL"), }, + { .name = IOV("FhLFQZSXvZiUe"), .value = IOV("eshzfrOAxBQgtwvFospDiKECuevFqLererdecRGrrahestwZXwfdtXvyYny"), }, + { .name = IOV("ZwugUgRIvsa"), .value = IOV("qTUxaKfZVjFYHmTHtktdKiQfyomsTmUznvOOUxuADOgNnd"), }, + { .name = IOV("RLpsYbNEXG"), .value = IOV("UimwLruiiKlDOzFbpQiFEJIOCpzsOWPbyEk"), }, + { .name = IOV("pDZIAsICvOezuGLn"), .value = IOV("psbaMhWUkBqHzaCLDKUlwoZv"), }, + { .name = IOV("ozXCyM"), .value = IOV("avrPxBMybhGIMMCdKJLOaiEZCzRjjgRTMJHfCnYsFvVzEKbSgySphyEDMNPAxnVNhiNBXfhyp"), }, + { .name = IOV("JHXRshQKzxqUI"), .value = IOV("PlLsbrqHGNAqbIZzCqdvasBRQYiOhAQYcIHPBEYaFiPkwTydCqtiMJLPfgWdjMlciDVnmd"), }, + { .name = IOV("sScjk"), .value = IOV("YGlbcLuDlslaNIMaqDrEhfcKdoEUlGVPmzgXcWXfshzWUlwEnvcXKSJja"), }, + { .name = IOV("EDyUHvPfoGgJYShFdcAZ"), .value = IOV("ZSXqWzUKnjbCPGSwBKViHRcyKdkbYizmmDTimjWtxBhsgMqsxAvzeHYDDGPLguVcSvsSUGKFXwicTy"), }, + { .name = IOV("sNTKKrLzUpFUR"), .value = IOV("BfduFoXJiPXlNXjaZiEuWvYsbTfGoAZZHuL"), }, + { .name = IOV("KMXvTUXAVZpZaUbPvUp"), .value = IOV("HBjjEwkehMazezEyDCWKZJXYlLoBHXlUPZpHUqtsdZDqQdsPbAnYJrVMyJUAuvtinZmlDlxXZmv"), }, + { .name = IOV("IUCMB"), .value = IOV("banNicAfCOkSSzmazabCmoR"), }, + { .name = IOV("EQsKnKGpRIvVOfQylQ"), .value = IOV("GrktaAdqiMyCSXHiNxgpdIniyIwlskZzxLjtpWQgSLUHqltizOsJHnbyjgtokWLMgUxxPGKRGeSzNQC"), }, + { .name = IOV("auhIRTWKYNuiUg"), .value = IOV("AxtRAuIeiqjrHCR"), }, + { .name = IOV("CbKulWOIihF"), .value = IOV("bMlAoQKqU"), }, + { .name = IOV("LPYgYMKrimIhCSrjgS"), .value = IOV("daspYRN"), }, + { .name = IOV("NVhGHeENaYFo"), .value = IOV("ruBxhiXjSeUgYKRa"), }, + { .name = IOV("ovPUfqvyKxZpQZI"), .value = IOV("cKxlcnnmWQmeVr"), }, + { .name = IOV("OEkoD"), .value = IOV("idhYwyCSwocpXIjGQNIsAaasCjkHJuIJPALiZFsWrMUo"), }, + { .name = IOV("AZkHaa"), .value = IOV("hxczfWZuQQVXkMpIOfxyIfsuFpMhNgWWDfwkHnVUwyKCuNvwNJYUQplQVtGbJ"), }, + { .name = IOV("fLuNBSsXnFnNJlaaZ"), .value = IOV("rLiEDqYGcqFrfiXeeAKGMrkMuiIUVwkjswgQNZEjRHjijIiFppOpXgBfHQNMCse"), }, + { .name = IOV("mG"), .value = IOV("EkLJfIjyahsZpBTwKnsiXGGHcYnquEfJKWcs"), }, + { .name = IOV("DKglhvtik"), .value = IOV("oDVAZskqIzRkFVgerSTdlDLGZYQjIB"), }, + { .name = IOV("xEybEERRf"), .value = IOV("WXXdCSNfZTTtlbqQSkpZLUCp"), }, + { .name = IOV("SXfWVnXHg"), .value = IOV("zrDcGATOvjCGegLzMftBgVLSiFlS"), }, + { .name = IOV("GTyfOM"), .value = IOV("WXNyqmQ"), }, + { .name = IOV("hynsTAbjEwAGtBaSu"), .value = IOV("UuvePwesmeEHVNzXqoTywyVIWKbJuyLKUmtjZupkuidXKJxLIIbu"), }, + { .name = IOV("lByMtDezZfUxVjzy"), .value = IOV("vdgvjtPNAYrMaCpPjhorrvIckiMrGFciWHBDGvFvFyppUfSbIuP"), }, + { .name = IOV("k"), .value = IOV("onvyyeNDlTtKdUJfmneOzxFcmasmkrrzBLPKEhBjSSluxQbyqPKRCWKf"), }, + { .name = IOV("RMP"), .value = IOV("EiUf"), }, + { .name = IOV("mmwBcRQerLoQGGTeXzV"), .value = IOV("zoaBeYKqCywDmnOfLlgcGmKcKhSFZM"), }, + { .name = IOV("bcmDLLvo"), .value = IOV("QCKOZhwyEqfcAgPXRVbxRHgnGXbkYmMojANuB"), }, + { .name = IOV("kZjiXnkkbWsbxdt"), .value = IOV("TngSAGyAEvNTAdeGGMdwHnjumtp"), }, + { .name = IOV("KUYTpy"), .value = IOV("CUbrRamYAeAMuXlKPVvUrxlMOqbNEORurAGATmkadGxcVXmqrbLpjEDQboThdyJnEecmPVjWyLQk"), }, + { .name = IOV("ugpnfXQlYKb"), .value = IOV("OxnosITvTbJirlBPxJksBFBU"), }, + { .name = IOV("UUIbsj"), .value = IOV("wWZeYzLvXCSPSm"), }, + { .name = IOV("smOuDhoSygXokWybC"), .value = IOV("bHkwt"), }, + { .name = IOV("x"), .value = IOV("gHtojFxDJhUbCDRzavpFNEBQKbFTX"), }, + { .name = IOV("UF"), .value = IOV("daEZuzikBth"), }, + { .name = IOV("wgMj"), .value = IOV("wiQfMmevUObOvEgHExYwFOKEZEFfpHDvMTIwVBCKkDvhPUHkegjkFcJByLNLKbqBQjsXbSiAZJ"), }, + { .name = IOV("COywFjYWKHTlBYXXr"), .value = IOV("VUHBPihOleyvhFQQizixEIEmdfXRArRuAMFalDGRTywIJSMDzvuRKzTeXQeoZJOVZAlMjUpUxnXMkhJ"), }, + { .name = IOV("DPPAyPOmRzVNoFI"), .value = IOV("aMiQVeqFvAFqQ"), }, + { .name = IOV("ukRhzKIikK"), .value = IOV("OVockSWMGjhnZpAVGFblobbOmqUnpDeB"), }, + { .name = IOV("sCWCaRQNYHaoVZc"), .value = IOV("kLOrxKTtdUMsyciLUOgXmIgznrTnXBqVxkQSZyTJpEUcLzheQLPbGhijCSPRFtjjRdGpaJuH"), }, + { .name = IOV("oCdVqWLk"), .value = IOV("UpjrudUqSUufiNf"), }, + { .name = IOV("GXxVIHbbSklXCaWAgLr"), .value = IOV("rZALrHpSOVWGAgkeDWkkHQRttHNAdMIguSugMlpvcSdWkJpJZVUo"), }, + { .name = IOV("mb"), .value = IOV("pJCqoAsSxUMUFCy"), }, + { .name = IOV("HbsTJeGfWkHBdNAOey"), .value = IOV("Kfp"), }, + { .name = IOV("qgFPIT"), .value = IOV("iIehrlfnnl"), }, + { .name = IOV("S"), .value = IOV("aRkUUYxCNijOObRkxszZhonxYHpIwZ"), }, + { .name = IOV("wzIsqnJpGeptSGlBGE"), .value = IOV("ddwBvdM"), }, + { .name = IOV("iDnewChyHpxf"), .value = IOV("VgAkeXiazYchdLLimhVujagNGsSGEBlCxdPlxQemuBGlxiNdMoYIQhVc"), }, + { .name = IOV("RUxyzqCWwoOoL"), .value = IOV("ebJvgzWzOsaLp"), }, + { .name = IOV("fgUbRkXBrlpblV"), .value = IOV("MwpTWTPPwYAl"), }, + { .name = IOV("bMlanvUB"), .value = IOV("dMVZLzFoiBBkWTyPmzLVYkcWhxStsIIXSFPDBGLnda"), }, + { .name = IOV("oG"), .value = IOV("TrXtcIkV"), }, + { .name = IOV("Odz"), .value = IOV("NLXNGMjOJOtjbUBdwgUnawxCksdzvGMbxyvh"), }, + { .name = IOV("eUpYsXfOHXHygGhTaXbN"), .value = IOV("LXWlvbNxOCEmTFHAZdmP"), }, + { .name = IOV("dODFxpqNMxPPvDf"), .value = IOV("BiPaRUYlsvAdwzDudVLRwBNRuuvzQHSsYDZpDdyUMKxFZRoO"), }, + { .name = IOV("RqC"), .value = IOV("JfLpWOZdQfxkAqtRtTrEIrpipTtMJTRAAUSmuaxUfOTPGkqpPaRCTHmP"), }, + { .name = IOV("JpZhktcSfsh"), .value = IOV("SdUgpKmTIvmfWvMhPueSaQUKqdEIBfxZsxfdOZw"), }, + { .name = IOV("GdnI"), .value = IOV("pTsBikYdDrysGlpttdoMjZBrmlJCiQiXcoGCNTPYFilVIKDfVM"), }, + { .name = IOV("CVjRRkBPGTOjxKAp"), .value = IOV("O"), }, + { .name = IOV("ketxSuasDZiO"), .value = IOV("TygejBvkqhZIsONvXsRc"), }, + { .name = IOV("mzjGjeIEwEfMuOT"), .value = IOV("UwvcotNkbknuMazVaPsgTByZaf"), }, + { .name = IOV("tlkuVsEORaJrCY"), .value = IOV("mHullvuyJJHUgyg"), }, + { .name = IOV("FfzeGxeMzrnmC"), .value = IOV("vTLirOT"), }, + { .name = IOV("jhmHRzIJni"), .value = IOV("pr"), }, + { .name = IOV("kQHlrDvukzmzzrKbjz"), .value = IOV("ObJqNHbwEaMZDyTuJBhMRFKdbYWcQKpMdkGh"), }, + { .name = IOV("cixdkOVwQfZnrGMxbdc"), .value = IOV("NFhZmXoOmdxBNiFwrJFlhXjvcBuQIzhBmpvJTS"), }, + { .name = IOV("ih"), .value = IOV("OCBytPUZkwjeHAzEzvFviTyTLWFDqdcxP"), }, + { .name = IOV("zCYUzTmZreLrodwV"), .value = IOV("fzLiAhDGaOWrpcuSBtGXYGRAjm"), }, + { .name = IOV("rAZKLPk"), .value = IOV("VvKKmmlVhHTfBeLXdorbJMMSRkEJZuK"), }, + { .name = IOV("rzKqylVfUnyj"), .value = IOV("YHSNXnqNRMqrlHGJrOYvEtngighpreQWuupUKE"), }, + { .name = IOV("l"), .value = IOV("ORsuqaD"), }, + { .name = IOV("uNZTX"), .value = IOV("NGylKIfKkNYwJRvBWCuksKCJfqOfUdWdYwukMUkAHwSXr"), }, + { .name = IOV("DPGZJoRRamoK"), .value = IOV("jHvHJDBGyovMSAppkUsKzMmASQHXPMpFqAjXhjfzBPFUgNjaGPTjSdttNZ"), }, + { .name = IOV("E"), .value = IOV("TfyTeNqQOgsEbpfHIcbQAnvLlcmSBimXxzMmIGjimJkkLcJmfmqZWVQrUtRBDTJlhojwZkPlUT"), }, + { .name = IOV("SmriyoveYBlJwv"), .value = IOV("RodKicsiePmlvfjKfQWObDjPPiJMdjviOxKjeEmTtqdR"), }, + { .name = IOV("bt"), .value = IOV("fpXTFwJgqANYcxxuVNqsbymi"), }, + { .name = IOV("b"), .value = IOV("kQOAHiBmmPLsQsjCTIfwzjiWSHqVlElVahSnBQeYyfsJXgaocqGGpfOqB"), }, + { .name = IOV("iQMsAvrZeeMBGSRjruzf"), .value = IOV("flptvVQWdKoi"), }, + { .name = IOV("kcrPTksIuXinoQIN"), .value = IOV("dYcUozawXprNGIsdFVOdAGEdNFcASEVwYYToMfBONpUyGkMeFcdMGyOkysXVvgYhEzaKOvjnZwg"), }, + { .name = IOV("NyMfHQCslZMgYBj"), .value = IOV("FnRJdsmBdTXwfaeYyyWKFswTLnKnUqHwqCElcZsmdCiHjIEPzcOoPzVFKIrou"), }, + { .name = IOV("QmWfLRVQkp"), .value = IOV("uFMdovFuRDDeKGXqyCQXDwcungYRToGcKJCxYzsGQaAETwHEhRZPSg"), }, + { .name = IOV("NsDIrZheGYHc"), .value = IOV("fkeNXpfUpVYBvJUbfLGSyLPtHnzKEMLHCGShygNqUNubujLpAFeSFGmlzHbRchnqaasUJLJZgsUP"), }, + { .name = IOV("erT"), .value = IOV("CepQArNgtlIdjUDAdSf"), }, + { .name = IOV("qwDCRblcBhlVpkB"), .value = IOV("pKwOnSZkoZGZDUEEgdTtCKvctsaOrntYiwtYbAncRbyZL"), }, + { .name = IOV("vyThvgl"), .value = IOV("KgWAwrulGBocUSgBzyjcoGXeKRCimhPCBQJYwYZWVCLAXBRmFlJYBv"), }, + { .name = IOV("xCCCD"), .value = IOV("rsCWujaihCiUDzWyxYSLii"), }, + { .name = IOV("Ed"), .value = IOV("allabRwwtftSWMnccfjHgHNPybmukQ"), }, + { .name = IOV("Ecq"), .value = IOV("PVvLxgVlrWryThMUCkcFINvMgjmnsuuxdeIpvEurHoIXprbamJIDJQNoaYwbrgZFOqELqwnpFzyCb"), }, + { .name = IOV("vPSMapJatae"), .value = IOV("nNHQkP"), }, + { .name = IOV("stkfvFYbFOta"), .value = IOV("wlfDQsNYRAWHPUxdGMTFrRYskxNZiimSlCtmiHznjOqISYxk"), }, + { .name = IOV("G"), .value = IOV("uSEPCWjvhWgWRMYfvGKDAphniqxPAGtdUBSowcHfchYRlMmQvZKSpJkayHfqBJJcUpaiOA"), }, + { .name = IOV("KAEOxq"), .value = IOV("DrGzxnaCDidocxqwNMLfPUBXkTXvjnwkkJRWPRWnMIVerFOzaGsilNKUNzEDJxQXKCkeaTp"), }, + { .name = IOV("IsW"), .value = IOV("tohkdTtWsEORrGoJrdQrsArGnNfgSPpgKtlRWenKKvgBEOeKRWeIoIRj"), }, + { .name = IOV("dvNGbVHCWLkwBOyCE"), .value = IOV("LQn"), }, + { .name = IOV("DvdvLekiQckrkwsir"), .value = IOV("FOS"), }, + { .name = IOV("kBAyjBQjcmFIB"), .value = IOV("JgIeE"), }, + { .name = IOV("Gheb"), .value = IOV("yONQsTKZgHfpffWRPTOGwYpRLFCSZJHeWvUESrCoKFpdKNEEcLnQYNoGbnlmdzuuxYaRMkW"), }, + { .name = IOV("mtAQLQfbgxefC"), .value = IOV("wELNXNVMBMVrjKlWFmEsBLbfCsWQuPhF"), }, + { .name = IOV("cWhax"), .value = IOV("VdDcUMb"), }, + { .name = IOV("Cir"), .value = IOV("OUquDPRPJtsTamxEtwStenrxsgoqJQSueSqZkyzGobYGKJEPKWO"), }, + { .name = IOV("XKhpAZHGhs"), .value = IOV("lb"), }, + { .name = IOV("UfmRJcQG"), .value = IOV("cLuivxTbBVepzXXRFDhzhDWZikbaeqQINpqDGfTRnPkyRTqogBoNCCuBcLxQF"), }, + { .name = IOV("lFtjts"), .value = IOV("PDziPexpNGBvFzppdsKsWXJGiAyZLauakQorVwFtimASdFAdpDUXAVPtgoFGNJzxUtBYMCeGnA"), }, + { .name = IOV("ahKasPGvksXuRMLvQ"), .value = IOV("lMxhlvfBjDlIjKOmrykpPZViPIiJPwTYqDuagIUxwtKppsYElgFmEjhyvdglZnBLBgvT"), }, + { .name = IOV("meDGsjVQNtYJHMYmDrI"), .value = IOV("VDMRXQNGCOykLRYjXUrkstyAerhrZFHeA"), }, + { .name = IOV("SvlWI"), .value = IOV("LLdInGDiaTCxClvjWinIfobxKFaGHI"), }, + { .name = IOV("JBrE"), .value = IOV("FIqROnxuQPfIuqaUqHmq"), }, + { .name = IOV("fCniAzDesqUsTjy"), .value = IOV("PpCxZDdKQwsaOpKnjgNcTuipDkQWpIioCaKsitqMSAIHEJsedODhmIAMQOcGfAVVjbBludDqlDJIas"), }, + { .name = IOV("L"), .value = IOV("hibLboIJnDelDrKxswiMhUw"), }, + { .name = IOV("WxlYtTtrPwvuwcaCT"), .value = IOV("PEyuDxDqlDnipkObxlKSSenkYqrepOI"), }, + { .name = IOV("hCMK"), .value = IOV("ZOKcLTjuwfIxixoVZJHAIGdQMXyHyynaTLPvdZRfIhxjv"), }, + { .name = IOV("wFIaCHWMunjC"), .value = IOV("xYRRlmPPcNFGAoRxRmaUiwiGcrvxaHG"), }, + { .name = IOV("up"), .value = IOV("XREgppNdnSIuFcYSQkHShCcJozJWwnVyHIoIRbhiAbAAJ"), }, + { .name = IOV("wkIkvdAKypzKYXvrB"), .value = IOV("jpypysRjlIPEmTySUEdTwa"), }, + { .name = IOV("kwMBJUbCkhxcLITGCx"), .value = IOV("qneMgVbHEveRIUAIrVMncwBqFgozmXrWQeMFQGzbnkeGqrfHuvXbQOsiLhpFkYNzKh"), }, + { .name = IOV("UZVdEQQE"), .value = IOV("OmkqHQplcgqLRrrWjmcYybSYIyOhkDfqLHQBnzECmoNCyPSUoeArxUkNxHfmmxadIMJ"), }, + { .name = IOV("NPKAaUNADzocLK"), .value = IOV("ZFIZzcGmTUgShOxDkuRQvRJouteMMlVPksmwmiHbJjmHTvRaKNXSKJwZPLoCQzNfiDjqLjprkYZWzvS"), }, + { .name = IOV("dZeIkpuDIbov"), .value = IOV("oYUfJiCPUgRxnfZLuVyNzyhFyGtsxpwdKujd"), }, + { .name = IOV("DKIQgPFQssAPJTde"), .value = IOV("OKJNgpDGZwpWeRYIuVrBmwNvRrqsBvcnlXhRMqqquHfMVqGfJIQjpjIPQZhICzdFbOoQ"), }, + { .name = IOV("YacYxMRnYGhrsGIdzzZN"), .value = IOV("APaxoouMzNXuoRHngCAvBndeqOpZdPuTajLnogYWUpkuxcUIlIbSTVxMTSCpuuaSvEtqPYiKfnuWOnfh"), }, + { .name = IOV("WZqiROe"), .value = IOV("r"), }, + { .name = IOV("yTuMdDnkvxcSKAzVvcjv"), .value = IOV("DQDzQTZASdZLpakexGyHWeGfWiISbpzzMRAfTotz"), }, + { .name = IOV("jyfRyZtT"), .value = IOV("yAQXLnUKFoCNbKyT"), }, + { .name = IOV("GViVz"), .value = IOV("kDbUtTzWrpdjBpAeEzUIBFtxFVYXW"), }, + { .name = IOV("mMMjZp"), .value = IOV("WrrJVdXgruBTzuEFqWGWHsOwXtLCzHfkRWxUnqFDicZm"), }, + { .name = IOV("zrUMzquNpVpTZkNLnP"), .value = IOV("yIeYFcZxqU"), }, + { .name = IOV("CukiAktRMBGZofcaTL"), .value = IOV("wKeEqRwFMxVQBhzHGapNSljTdiRlnEdDQmXkimGdPAzLLImgnZAiYClUXJuXzLvnUITOyLoi"), }, + { .name = IOV("wyOAxGMclxTU"), .value = IOV("hjpQvCZUWtnEDQqTPigpPycOLGmBQrcQvxGQCzPXjBYLUUsmCbWtKmLZezPUVtUDSRVBETVGbYYQ"), }, + { .name = IOV("PROw"), .value = IOV("VQiYfnceUvbunlutGNdvbhPQRYSKssqlTUHYrZlyJOXPZJIaNaVkdCKOEdUu"), }, + { .name = IOV("lIgWKZxEuXrXzav"), .value = IOV("rjJmkxdmrKpWKfPjVwcIRFGVwyovNiYgOlhaMyJPHxnBef"), }, + { .name = IOV("crnBvbtAcEk"), .value = IOV("gRkJAhwSHxUqBMQjJBKvOviGJCIWHEdhzjBLAygrKaojNnDOZWuD"), }, + { .name = IOV("GDYsWjinTgMka"), .value = IOV("YqNkWAgYIlDtkDKH"), }, + { .name = IOV("WdOPmEntr"), .value = IOV("GbrpGmiTVWJnkXtOlFdTdr"), }, + { .name = IOV("YjNK"), .value = IOV("stLXdaqSdZdtcRffIGzjbpsEuzpzegWoKPJAtgncfiNelxHCe"), }, + { .name = IOV("iHodGGSWqNNqg"), .value = IOV("wAjZKsFLyaxArNvDxlZxjxGCCNCwYtNJrZ"), }, + { .name = IOV("EFApAV"), .value = IOV("OfnMDsatXcFfoLNAebAXgfYOCKIlgImwOsNbNBVYTqHZCZUyxt"), }, + { .name = IOV("SMkhxKkDAhrkOPztlET"), .value = IOV("BsVgXMnussvEGUnbtFwWTJxxczGoguupShKwVRJFXrcxFXbjuWENsDDtXatCphUsgNGyuxPh"), }, + { .name = IOV("ShmbXVUPqIDaXJsTqd"), .value = IOV("UGVHOaDTFhnPbIGBbz"), }, + { .name = IOV("QZkDXGokknOCJ"), .value = IOV("JjQbMfvTOBNQllCJkekpBpwLOLMsbeVhVrPeNpZN"), }, + { .name = IOV("kqznVFuGN"), .value = IOV("WIthQsRa"), }, + { .name = IOV("IrfqsQbasHubN"), .value = IOV("k"), }, + { .name = IOV("gKit"), .value = IOV("pnMvyQoMLAyfFOsyNfwJqfEPrkisRUriLKkuFQMAdJYJvuYuuDxMHB"), }, + { .name = IOV("CFQE"), .value = IOV("kWsVkRciFiooojJLoDLXSUVtUHhFmcCn"), }, + { .name = IOV("AiqQgSrJowFfSoxIfTF"), .value = IOV("QNRdeSeL"), }, + { .name = IOV("PQXYbZYguWFPYrJ"), .value = IOV("eLkpwuLGujpojBHvrYfFUgIxoVtPaaTJUmRLIzkYDBjnKLUDWrVdwxqfQRkwZKbsxirrjDdYd"), }, + { .name = IOV("o"), .value = IOV("SlUcSBAucascLdzA"), }, + { .name = IOV("ghdBdsqdYuU"), .value = IOV("tcphWegMkiROttCUSYCzLrTmAaXWqDrtpfggeRRFbzXQZZINVuli"), }, + { .name = IOV("IiYjgElvYHoz"), .value = IOV("EIrrKWhtHWCmescgnalexQdDnWvFFdnwpZlgakKJgoQmPNbTkxDmfISfuChYZlSxA"), }, + { .name = IOV("DgBTgSfQvVZiKukY"), .value = IOV("qlQQsibAdaCtyxnKQHOeoqNrWrrXmTzGyDRMhxIJDnIjUPrTU"), }, + { .name = IOV("AFYELMKhv"), .value = IOV("YCRmEaWmULhpDuykNMBgivsMCQllIVQFYgMitnYHUdZQspNBHXguXGCgPmGuvgKOFCb"), }, + { .name = IOV("gN"), .value = IOV("HrOcgTMGpMvkvGEGRCyMhvsQNHaYmazcnocCiPgAEJXHxIciOTpHRwuAQtubQHKcElKtHxMYCE"), }, + { .name = IOV("JondpjzyayzkVg"), .value = IOV("HAlrYzJSp"), }, + { .name = IOV("WWXNIngvfxFFPpNldlN"), .value = IOV("yQkUBLZiEpxYPyTcFoRZLpRadyLHxRklrWxODWyliwaoPSncUAbTmMQdlldvHNYTttyNplh"), }, + { .name = IOV("SYoeXDCHbAFpOQp"), .value = IOV("HZVVNyIXrWz"), }, + { .name = IOV("ozajTarLBoUcDEQcShjw"), .value = IOV("HIucmYAlFLijdcAUgLkceIhwQvNeQLXPMuZPhRXVqebwcudXjDXdSxpJMlpbiDvdOiYqPqRyPi"), }, + { .name = IOV("cFQiWziZYhHzr"), .value = IOV("gQEPtoLeVttsrhAJVZsJJOOQoFOSoubYbgESNHikFxPYGdqMTxbcfMDNzlXBepGZgs"), }, + { .name = IOV("xYlbUCNEua"), .value = IOV("eyZuRsDUglnurqwJKZpTMLzewmoPWnopQMWdRDUVfPGMZBUtLqoeZqeNmLIlAKeZvKhZddQKEOIhjwhj"), }, + { .name = IOV("QwLEEtQfnHhr"), .value = IOV("NytWggGvrypBigDiJdKDsdR"), }, + { .name = IOV("dMpjZAKZg"), .value = IOV("KO"), }, + { .name = IOV("zZLKkMoOqZIaUsO"), .value = IOV("RVZWayngxcqrLvSEqGObmJtxOxDfDNGTbhXKeGMVemMQZrPzsDfxujHBcjAmbLkGna"), }, + { .name = IOV("UVfZ"), .value = IOV("cVtYSskXdFwghCGcxAPmuWaojKnTZepWBsmCRaRLdteGrISJpLQeRyartqhlrtRNmnCxjJUDQRkfXT"), }, + { .name = IOV("KfYPaMqkdDarve"), .value = IOV("Uq"), }, + { .name = IOV("uFdYKMiUud"), .value = IOV("xNvoNNUOYRhTVzphdCCFROWODEscnoOJiDwBKz"), }, + { .name = IOV("KpPhMKrPolWR"), .value = IOV("IlXyPHQxAkKWGccPQIPUvVxXtuUtJtJPRGURHwchadKblXfGnBt"), }, + { .name = IOV("CjnlflpOH"), .value = IOV("pMwDexQuvuWgwWBaFHMhaJsBFYjkiWmqJGTIKpvRoJyiCda"), }, + { .name = IOV("udPWFdIRAh"), .value = IOV("b"), }, + { .name = IOV("FyHXJnJEOIUNJbKXFa"), .value = IOV("ArBrVscXZpWTuXiMNNWpwMZSoUVrApxDWhmIhJtWfYKAOUvj"), }, + { .name = IOV("mOKfCiEXiUxSAnJYfn"), .value = IOV("GogKEHWJuBtAiIsqYdJrwWUucKAgwgcVtDwHV"), }, + { .name = IOV("eAUKAUUxodN"), .value = IOV("VDGhXLMzFoESItaEeKiVelhOHWAsXdvilJTMRFaSuKHnbsnrWxEDCUkdLwIzaVxPyn"), }, + { .name = IOV("cY"), .value = IOV("waMwzApuVfVIWgRzQr"), }, + { .name = IOV("vCCTHP"), .value = IOV("uMnZTwOvVvkkhXCoKMcnRUebLvwhbtGORuuZnCczwNhTaAMphHeGAoUPSBvMIOgOJdOxauNNpOwNtV"), }, + { .name = IOV("qBdNq"), .value = IOV("umtBbqTtLRcXkhCfMUIchDKKGmMgcUEVQELFlcPvsdnxoBwxwmYccNqyoaNUsWVGMKInIUupuCfRG"), }, + { .name = IOV("IHwZBBeoLeyFqHUL"), .value = IOV("eICLBnpMQZMCgNYLmkpagFzQXFXHpCqeLBMGoDxZiAyyzabhTLVYbIJvtviCmXuorUSPlBmKjkbU"), }, + { .name = IOV("OzfUaeyLKKxYoasN"), .value = IOV("qlFGzJCjcLIyHIbqbgcFiLgRECVBiOmYhmGvfYGfRmSvqHUaTIEge"), }, + { .name = IOV("zzpfkIYBM"), .value = IOV("VlpTHJeGfLbJdzdporCkUOdbfoHcnxTUxSZHUjkQiPgOELwkMtt"), }, + { .name = IOV("bKet"), .value = IOV("uxtDOQnxCTPGWIwlWJHnExhstPZSeukHapWmfoum"), }, + { .name = IOV("wAsunQw"), .value = IOV("ByIifITTYsyiDlbauASELuGhcDQrXLeUdlqignj"), }, + { .name = IOV("GGuJZfWMqeKXSIKfhR"), .value = IOV("QdRvYjZXeSQLzAUSAoRjBxHQsJcxtNshbFrQUKmgcprvHwQ"), }, + { .name = IOV("HvwkQEFD"), .value = IOV("KhNsmeETFlJcEUkTOlDVUKAUQgUYsWifKKNBhOXYWxvuClOYTKhjwndryets"), }, + { .name = IOV("eNSrAjbiJLU"), .value = IOV("ctSCKCxYcZOhIbsYKXFLnCseuKtGKXfAtEIDAsbcPMlmiOBtBIcwzwIQZZysLXBLOTJtgWe"), }, + { .name = IOV("o"), .value = IOV("vcfTkDeGMfVlSJYIaznDvnyLECzPDrffJjGrjvLqcjWwUHtUTNLfPyQHeutKhr"), }, + { .name = IOV("XYy"), .value = IOV("yyWxzPtERBeFqUvfDELFhV"), }, + { .name = IOV("neFfc"), .value = IOV("WXIkjCZfoEUjmil"), }, + { .name = IOV("PhUbW"), .value = IOV("bmdDYstghuAZoRFzDPHbEJJrBctyXPIABHCEawFDIYcieDoY"), }, + { .name = IOV("vJ"), .value = IOV("IahfCtWHFBDzovDCBLipUaRqolvQaRkisezNczfqnmcfL"), }, + { .name = IOV("xTsgxB"), .value = IOV("NExaNgJCTBcOujGN"), }, + { .name = IOV("NlrJx"), .value = IOV("yyqOcosPTRbPchkPIDhskbKbOwZEusNPxnppyqxQmZxIqQEoorbFQpZZeMqeSQaKBWNcnMYj"), }, + { .name = IOV("EU"), .value = IOV("BHpavLfcmdCAjUoANIUbbvguNhkQerfsDwocuTQvBIoEfFYntJeFYwqisSzpjvMLeREAfUYX"), }, + { .name = IOV("dVoCWbtyxRpyidS"), .value = IOV("EcEzkWBXaumqUQQjmkgOofittpcATXVTEkwamYxJB"), }, + { .name = IOV("RatUtNwcHjjL"), .value = IOV("IakGzaNrZfpTBJVIPcOMfoHTnCWhwkhOeMWYTKSmRtTBgoOSpqyEreDQq"), }, + { .name = IOV("d"), .value = IOV("LMuxuKdjnuZLUPGXQNEUYPjMfSAZklCHipMlwWGQgLCMpOFMUsLpMPLgKfCeTnhI"), }, + { .name = IOV("lVaOz"), .value = IOV("WRZQppGgQyGhASeSXMQxQCx"), }, + { .name = IOV("C"), .value = IOV("FRaAGRDWRcsRman"), }, + { .name = IOV("OMweEbylnVWh"), .value = IOV("CMZuTFiXnvMPyhJSBDzwV"), }, + { .name = IOV("AqOEJNtuTGauwqHi"), .value = IOV("yVPpmusIqGoNZNiOCiFInpltJHpV"), }, + { .name = IOV("YuJycxecMyPQdojXL"), .value = IOV("iJybQnLzRBCEawIwWKccwRzyISBphrlgBOyduuFGQOsxkpBUmpPixAvYhQXTCWcJA"), }, + { .name = IOV("F"), .value = IOV("JcztZfIquhWxhjKyVQYyTKqLwKxJBVXSDeFMDgNPVHIpwIVmCotgXwTvnhPAQwoJwPuHZEG"), }, + { .name = IOV("NWYrxnMhE"), .value = IOV("GNhAfDx"), }, + { .name = IOV("y"), .value = IOV("EbgtPqEHXtxfJethyVrurPalFWOrZufxUHxWrompvVmqRbRVTqQgVUMucOfC"), }, + { .name = IOV("YgQYCYHXgHLARa"), .value = IOV("LaYCsGqienqJrWMkBqMhluni"), }, + { .name = IOV("fmSc"), .value = IOV("bZSENKUuuWvlaogpfrUQsPXqWffEatODbndHJ"), }, + { .name = IOV("ajzIP"), .value = IOV("gZnxrwILtMAiUdELpUQoeLhrRptglcpuvGiHBgimAeiHHOt"), }, + { .name = IOV("blyFWfm"), .value = IOV("QlyBOYUJjZSgOvkcJDEXCrkBycO"), }, + { .name = IOV("ehlvzDYvWiBDHbdw"), .value = IOV("sUyMiWZrjJiLR"), }, + { .name = IOV("bhpygKGJhwb"), .value = IOV("UEcPGgXtaLLvBfZBihfFk"), }, + { .name = IOV("FmByGNOHjflByEcRyaD"), .value = IOV("doGWOGmYTftXTjWsq"), }, + { .name = IOV("JCGPtKZrUVqDIfxK"), .value = IOV("nUsTssgZKgJ"), }, + { .name = IOV("GCzaoXtVHtopY"), .value = IOV("OBDupcLrHMRfVxYYHhixGUmYxjwASxLhVZKLnYQHvlFKZxjHru"), }, + { .name = IOV("liaFPcjZfWQ"), .value = IOV("qkEphImUyJIjFDeGHuyictZHBSFIfWfxDTviemukCeAgC"), }, + { .name = IOV("BmZXOxUaBUYeEVoSa"), .value = IOV("rSMMPQigqgiigBhFWNJpvaoyN"), }, + { .name = IOV("oBGPvM"), .value = IOV("btaZRMsbHPkVACNorlUFOXXfCXwdFazBYOLLbwCxiVUQBZhJFuxyjtdFcyASkkWs"), }, + { .name = IOV("uzOQKfzRaSUwqBANphY"), .value = IOV("mElfVsGcnLEBsLLRxZdgSpoxoQzJaphjhKAttyXnffoDoIjHhzqRxvfCKTSArklCuRU"), }, + { .name = IOV("y"), .value = IOV("KtdXZtIZaTDoBleeShPykdQvdoggEIwpGdCQFCkzHPMtIwfqXYkzjIF"), }, + { .name = IOV("axYsVrBeJlpTkGLmLD"), .value = IOV("cTFiffPGuwWpDBfs"), }, + { .name = IOV("bvyVCvc"), .value = IOV("itJqirrhdOOYvT"), }, + { .name = IOV("NKccoUpWAezxn"), .value = IOV("seiUhaMTfwEXxxZDrBRuBPxCCBwDfFFLicqeWvWQAMTOwVNFRAVENqMlJvvoLFhyrNXI"), }, + { .name = IOV("fSwubxCT"), .value = IOV("SSlILexttxKkf"), }, + { .name = IOV("O"), .value = IOV("fDs"), }, + { .name = IOV("RwNAFp"), .value = IOV("sjsDUfwjCOjNHhAURpsPGwqwPUleHrtveRAXRyTrvCCiR"), }, + { .name = IOV("itSfPECOYBf"), .value = IOV("lrpJYhjNFTyJuZfJBfBYBDnoWHZstaZj"), }, + { .name = IOV("uDeegvlYzBptDIzJi"), .value = IOV("guBqYZKYRJjAXWQsaEjTlXDMTSFawqARNlPCGXBFKkYAzaiUivWPgLu"), }, + { .name = IOV("xj"), .value = IOV("MJiJhqAhIqvlWatvKnik"), }, + { .name = IOV("p"), .value = IOV("vgibSeupgDWteWNQLuxwDrKCVixQTUyiwdrrWKilEaoyGgK"), }, + { .name = IOV("GMDX"), .value = IOV("FbrKtizQpatwovx"), }, + { .name = IOV("tfpTbxQlQ"), .value = IOV("VElXdXGdNxcLuxZTxJUZZYrlvqQZlsjJYTHzwXzXMoWRcfAD"), }, + { .name = IOV("kHUsDvtInFieRJOkwejn"), .value = IOV("soCdwZNWTf"), }, + { .name = IOV("FlXCSdkogGTQBIA"), .value = IOV("YjYinToDolHaSWBXQvjwiugdThVkGGuVBN"), }, + { .name = IOV("hbdVUKAQo"), .value = IOV("xLiiOnMBGJXcSDnbaNFFMLaHOItTrPeSPYOHzZdkFOwqejQExcQEcqeogisVSGJaA"), }, + { .name = IOV("MeHqgjglCxDLucELoiJj"), .value = IOV("KRIbABdIFuDPZFcGkjoGaYxDYBOfH"), }, + { .name = IOV("SAK"), .value = IOV("qtvaLkjzOcTKKCC"), }, + { .name = IOV("ZfTJ"), .value = IOV("zgIuIdpJhfBcNzzOMyBPMyyVKgjqIHEEnjscKBZjGiuEeJoxKBweto"), }, + { .name = IOV("VdweoHLAoeYsvm"), .value = IOV("JiheScELNizY"), }, + { .name = IOV("wVy"), .value = IOV("werATyYvLiayXAqncDTxOoQPZeXwpfPNav"), }, + { .name = IOV("lQkG"), .value = IOV("EeMGoyVJkZpXZTUyPSoobQMYUoPbUryJQDGUihnRmdrgpDckNdicluOsU"), }, + { .name = IOV("eRgFUkrsNsekNNY"), .value = IOV("RgofEpyzhmchBXrqPRkDfBvuexMaPVqkCtbScbtNIhWzYPsMifINBymlFhsfqdeiwjycYLeTSZSARXZS"), }, + { .name = IOV("NuCIRlRFvDgcAIkL"), .value = IOV("NdHLLuVYlbnPElKTKTIaAnmuTQmkGYgTFaBtfOHSmFlelwrXbbweyAKtfXKJFXptCeMIrwMvakcn"), }, + { .name = IOV("iDRUorgn"), .value = IOV("iMcewsRPVLZyhWTVhubFMBAhKnOiberfWEDJiNfJfFBWByhPfAnBElj"), }, + { .name = IOV("gIITelmFNpTOBC"), .value = IOV("gTXTVtVEPrHYCraNqjqUEf"), }, + { .name = IOV("TGtzQCNCmsxXq"), .value = IOV("PHpwXqTHNhNhyiyGmDaWGCBUZgwLuROTZaiZxvbLOPVMhmLaZKxPpUChDNhJzBwlOvsdwWhxZtIkc"), }, + { .name = IOV("sFZQq"), .value = IOV("YewyaQKkOgOsQzFwwgHwLOGQdEuqZoRdRpcTsYGQBkvZUPGqvLgwzUnak"), }, + { .name = IOV("slQM"), .value = IOV("zWNcOQAiJUVhoLVyhwCzbbQzmQzEVXnGH"), }, + { .name = IOV("EontwGQZXubV"), .value = IOV("V"), }, + { .name = IOV("YDrHsSZIXfdcwlKJs"), .value = IOV("M"), }, + { .name = IOV("LvUrCn"), .value = IOV("wYiMiFftdptmPrWxsiLKZHfYTeGYTljMlWIpaK"), }, + { .name = IOV("WPolppAThKccQ"), .value = IOV("PZitrfutJXJALFKFknuVQvnuwrQoyBrYJjEIvrpaFJuVWztGsnwnhFjxgZIZPREQVIJoFoa"), }, + { .name = IOV("f"), .value = IOV("GwUArmUgqrBBDwUwFyBcFhGlLInvcnvnTCMzIaQBfVXtDqCiQxptnJPKaogTpLwSCXfVQXqyrFum"), }, + { .name = IOV("SnEuEkVkVUuPX"), .value = IOV("NucCQpZOOikyEeHcOxpPkYWr"), }, + { .name = IOV("yGKZi"), .value = IOV("pRAEPSZzfvmRUPT"), }, + { .name = IOV("JVnqDpMkLSJOZpR"), .value = IOV("t"), }, + { .name = IOV("FIhYxx"), .value = IOV("drCnWTpxtyOHBfGmVjMtGJQxcKXkXQjkAKmSSTSrznze"), }, + { .name = IOV("pxKpaV"), .value = IOV("kbQiasRxHEhXzlA"), }, + { .name = IOV("GQvFHPvgPbHeacJfS"), .value = IOV("mpaxebzyoibDlGmcgWRMuPBgkjtLHudEwCAgAp"), }, + { .name = IOV("keJSJaLGLDCjbj"), .value = IOV("UULdRNSQgvGNcSPyqLHhOWjrsMEgXOipvgmNhPCLkccgFOBoNYWzkUbxxiHtUKUkun"), }, + { .name = IOV("vIHTSrVV"), .value = IOV("AKCLGyHgGzRJBIvJCsGmJjCPSoanQGDbrjInrdpebCAFyzmSj"), }, + { .name = IOV("KOScXhYjsJSrotg"), .value = IOV("GioWmrIzqV"), }, + { .name = IOV("zHSGpUZEzs"), .value = IOV("qXzPuOPrfQtoCg"), }, + { .name = IOV("wKOUFioDrorQ"), .value = IOV("cfIHzjkTLFxtfjLVpYmiGcEkZIesKMIoXpOnciXBLQbIgFamBCoUdq"), }, + { .name = IOV("aCZMuR"), .value = IOV("dNuxSwFBmjmwm"), }, + { .name = IOV("WFIJPbdIHg"), .value = IOV("mPjQQRRPygGUMwmodfCShecdRFbCvrdCqPGMOyCTtbgVkRJ"), }, + { .name = IOV("HhDCBJlHrQmbrUS"), .value = IOV("XNwYnDtjoonOlQvYURofygFXKfxstYp"), }, + { .name = IOV("KcQYfGUSaodPK"), .value = IOV("KnxDFUGbvSWuNWXLHnHpRUZKMLXfvF"), }, + { .name = IOV("SlWVdouYpLLg"), .value = IOV("mvXQgcAmwGuFZvF"), }, + { .name = IOV("bqemsbjhhosF"), .value = IOV("KZMbUEagOpdcSxEXevWndnR"), }, + { .name = IOV("Aeh"), .value = IOV("bl"), }, + { .name = IOV("uSLNawaQI"), .value = IOV("FVSXjXrTFuoPHBdjrQeTsYlGwLwoAeDDeQATDAQqAR"), }, + { .name = IOV("lCCLraIZRYphW"), .value = IOV("pjponAcTQJJXIieMBdCfZKHBRKPcVRcdkZrvHYqmIBgprjEIYZvyHq"), }, + { .name = IOV("OLPQRAcQlvKDzc"), .value = IOV("dRuDGz"), }, + { .name = IOV("HHj"), .value = IOV("cezItQeMjqhpqvkNeEKod"), }, + { .name = IOV("vlrzszoIi"), .value = IOV("GLsMtqOHCwOb"), }, + { .name = IOV("QMuHJEiDBzPF"), .value = IOV("LgwDEXMlqjrBGAhFzkwxgqRenYIyBoiAYwEtRJcAUtOpTYXLcRuywdFAnFRwQJQQUvtsMpgFmc"), }, + { .name = IOV("XmdI"), .value = IOV("TFRiVQOeyVhN"), }, + { .name = IOV("SYRs"), .value = IOV("QUpsNHtfvZpBglCEnGgTQQrbbXnOaAgWSfGoILSlLLjWqPTPuGzlIQDpltEaODbwoR"), }, + { .name = IOV("iEjPKkPTBjVxvn"), .value = IOV("COfMKuynXDKPXVkVPvnkIaOptLdorWItTQLBjJXllPzlmxuhLzMlZdKjFkmTYLHXXtgPLgWhJ"), }, + { .name = IOV("N"), .value = IOV("vwUIWWEoqsAGidPpJODVKNTVfvgAFJbCULKfLBAfc"), }, + { .name = IOV("Ormo"), .value = IOV("jnidkRoCLiGzhwvSTjfEXTmKGddSQSzTeQQxrbNBJqn"), }, + { .name = IOV("fGHYBxZUFQNO"), .value = IOV("OWSabAzrbPoRRCXQqGpMeXMBcillpFR"), }, + { .name = IOV("EkIIvpx"), .value = IOV("eDqzvgtntClSDoHUuwzrFPXwNgPJHQucqNOAXqIpELv"), }, + { .name = IOV("ESZIIylmczjJStPhjXpD"), .value = IOV("fmiecAeSiQVyuFikRAcglV"), }, + { .name = IOV("UYxDWAMrDBKRKjdYq"), .value = IOV("YlGaNytWxNlJKjexUvbCQKCVoCDeVOlmwZmvMWpsjMQRsxPGRYEJNgi"), }, + { .name = IOV("QBUDEhFDf"), .value = IOV("mWBwEvGDubKsqcqahiLZsUpevWWMSJVGNyHyXIEMWFwQBVpxWclbFZvBuFnlBaXap"), }, + { .name = IOV("scEZCYMIJRZeHNz"), .value = IOV("akqMpspxsesnFrnEfDVTaSUXRlnTBoMLhur"), }, + { .name = IOV("xlJdDMKT"), .value = IOV("ubdfxLlBidGPzPnweZVRPbvUylVrGcOwOpYsWmDAvjrVFDFfeFThGohvbEWxnqwmNWiMREWPjCP"), }, + { .name = IOV("xFBFGcuzWdbydA"), .value = IOV("YnRAilgPxXyPLFvefJyfmWycGfpXnGItYRCMDAiTHUZTbGqgPzBXcJexDCaZdgxhOBmZWgo"), }, + { .name = IOV("J"), .value = IOV("QDVbGBJrdixNOuHbahoTYBfbLgCuotdVXMhTOUwFZbRhKqMhRYSVHvJvIVbgoLLdRrqBZlJoxI"), }, + { .name = IOV("ToMyZEewG"), .value = IOV("hnhANcYfUkWZc"), }, + { .name = IOV("BSJsbr"), .value = IOV("TEhMWZQUwqVTgAYtTf"), }, + { .name = IOV("sykaGmCFcVMlXpARn"), .value = IOV("EicKMLZYTIphtaMAPaDvzsrNmr"), }, + { .name = IOV("RqYl"), .value = IOV("uOwEpeDuqosrLcrsuTXSUsOjDBPxlUeQqvyzjX"), }, + { .name = IOV("h"), .value = IOV("VXGtoJkHChsawMFXAnMWkehrGmYbnOrNZtoZdsSy"), }, + { .name = IOV("tyRFCO"), .value = IOV("tSzjIfXcxOkBFUyujRDKPtevhHSOPlKqQgshjQ"), }, + { .name = IOV("zknXUbkheClkOhFJ"), .value = IOV("drmTtbIZODBCrCmMcIsxFsbZWDoBboFMjlgXgHiGojvrFFMaQYMbcvOfNKCdbbbSPKIheGnyn"), }, + { .name = IOV("GXpulrYS"), .value = IOV("ActYZVfymmDe"), }, + { .name = IOV("Rvz"), .value = IOV("DOZhKTNFudyoeQXjWaOdcXFlPJMxdlYJczPvHPoWTBPMAVWmMfpbeSCDP"), }, + { .name = IOV("iKXchgNLSuZs"), .value = IOV("ciAXmxINgLIxLbqqOQVixUxySBm"), }, + { .name = IOV("QtS"), .value = IOV("MaVmMIXfBjubFKYtNahsrDDzDbPjA"), }, + { .name = IOV("bXuQBOMwBpBeCWe"), .value = IOV("MYowVwLjuWOFspRvZGJegTVZEMkKrgyRXg"), }, + { .name = IOV("JwMMw"), .value = IOV("TUweIVjYzecEYPQBJlLcqPtphTEJEuHxcveRdndwmPtzwDgFBbQmOsaDxhRXyoKGIoAcesGDvqhwSdcM"), }, + { .name = IOV("xRaWMFgJh"), .value = IOV("HXJTAlWyTdeLhELzcNeQCtKaHXXgPROgzvWljCWANKAKJcwUHkBbmJDxjAiJJqBADSQFpMh"), }, + { .name = IOV("DhllulDOx"), .value = IOV("OQpEsBTfh"), }, + { .name = IOV("pBBhizJkFqtI"), .value = IOV("TrITOqYYmJIUxSaeemJMcQvRyq"), }, + { .name = IOV("UyqOAtjN"), .value = IOV("bRFd"), }, + { .name = IOV("agidBzjrQanAPTBrWZRD"), .value = IOV("qzhypSnkSREiwTiSqlKZLAHGXMezqqLWbwFIgpGUftHgPNyRFsXsTQMxYMBFhJLgXBAFjAypOCER"), }, + { .name = IOV("CLZsoGhJFnWjtgkkJ"), .value = IOV("wgIScRKwMWrwMOWdIrHvlsRHEOnZzeRmO"), }, + { .name = IOV("gujsmJDe"), .value = IOV("TRoSCtPjstHGmNtIlzQCPvgnkaUdqkyUwPDaSXmpHBHIEboVpXyFaRKNXthkZuYPncWbEFOpblDpsWxr"), }, + { .name = IOV("EOVGiwykIfJ"), .value = IOV("paTWYcTvgTFMMlZEqWWtxPQLzNrYpWbHKjESPgNejwxaeBEpyw"), }, + { .name = IOV("PnEmiPzDsqFD"), .value = IOV("noGIWImHztigZwxvfJugkjEQEfcxGF"), }, + { .name = IOV("NBl"), .value = IOV("sNSKhBrdaefHqqaxzkhhjTeHZrloVIwZmVdXGvWXbcvJRrvxPxHayEjwynYFDBzbKgzrFpT"), }, + { .name = IOV("hY"), .value = IOV("HVvXSXbrzvRYZwIBKibhJTveNOJSNozjJtuIXVe"), }, + { .name = IOV("IHQbQJpTzLY"), .value = IOV("HVaOuoAoNsSfQO"), }, + { .name = IOV("AXGreijTZOc"), .value = IOV("eGivXEvuPmhfHQmjgugNBhlEjvMjXqcelJonQjlmmrsOVloByDMyaxfcTNMnAToq"), }, + { .name = IOV("jzTGBxXVdv"), .value = IOV("wIiWIDYIVPbZZQXAERNahlISBErfBgpMROYAJZcznMROZMuR"), }, + { .name = IOV("dEuDnLtIixENcwFoGBhR"), .value = IOV("VoUvMwzUBMcKkZBBXRlkiLowKWAJQPgEVWZoXJshsLhZLJrcTQtN"), }, + { .name = IOV("XTSrNAqU"), .value = IOV("ccOSwTGFUJOevqfLOiHnZ"), }, + { .name = IOV("ogNFKWmPSmlohjd"), .value = IOV("KoSyeDlLrIutFALIeTFuWyQKcEvTgtsjVMKYAjlpKlj"), }, + { .name = IOV("mq"), .value = IOV("ewSXiXzSdHMcqPIAFPmwFWYGoHTqhvzMBFJUKXbyBbx"), }, + { .name = IOV("roAwXHPKNU"), .value = IOV("yFetfNOFUioouXtrnzhtZsjDEzYghRSMZFBYYhSGiVUZyRKrOlrG"), }, + { .name = IOV("cyioWfBRJhRjQ"), .value = IOV("LDLyHBbzqGPhJqvSgXFJlDyAsAmzzGkHtVm"), }, + { .name = IOV("nZsUninhjTJKDuP"), .value = IOV("KNpBykoMjiwHyRdpszbwgvcwokpVKCbSfVynvcu"), }, + { .name = IOV("dxuVkLPZhcP"), .value = IOV("mGtopBhwnKsYcRVbBPkjagqLODuAFWSzTonPADyl"), }, + { .name = IOV("CIcz"), .value = IOV("fMyjhfHUjiJFQgvziKbKFHGCdUAUKSHkrDJUwGdlBMnXbhVMOrLfcYT"), }, + { .name = IOV("SvryFEVrEWmNTTSAKmS"), .value = IOV("AgJsqJUdWvZCpOlpteQsZJkXnfibTJLjqzivwIYUc"), }, + { .name = IOV("EhGyJmtGbslGSqOL"), .value = IOV("kWTYqzqLnyjTFZMOntYdEptskTgVHyhLHeBpptMNvCXALutxzlZGovFvPNLRxq"), }, + { .name = IOV("oEDLTyhmKhz"), .value = IOV("FKWzxa"), }, + { .name = IOV("UtWlXcCTcH"), .value = IOV("AnhtJuCaXdaFfEwfeUrIWkrIQPGrabalEhouVVLZOaMIg"), }, + { .name = IOV("EIHyfldHShofHcxtEdG"), .value = IOV("COiOhfEMHdImdvZZwItJHidOOjduqarHxTwLMd"), }, + { .name = IOV("J"), .value = IOV("BvvlZiqvESYeMlEeMlxzlMXLPCkCPYEKbaweLLWkwoKKWobaZpWM"), }, + { .name = IOV("nexNixeiLYiAdObqN"), .value = IOV("qZFykyproNoqBUfOorZbbBJQIhYvVMcSykcgHoaDPjJJmp"), }, + { .name = IOV("QQfOdwSGLvTnpu"), .value = IOV("KRtGtADCWGHKEtYnUOgTPyaXcPMbEmxjAlNWaMHizapglFrEwyyzG"), }, + { .name = IOV("eTGjDISuJVDN"), .value = IOV("WBYdrTQDtHiOlCAhzBYzhnx"), }, + { .name = IOV("rjakcDJLUzp"), .value = IOV("YcKHuEiPuVizVxDuTXfXuIHQbTaPhhoRToMSMBXNfXsjcENTfSGOQVnvimBQHKhhKWuHrcUFqZ"), }, + { .name = IOV("OG"), .value = IOV("vIhQnAfGegdFupkqdCcVxdNnAhlvIf"), }, + { .name = IOV("HaApOFEWgzMBaIN"), .value = IOV("EmAdhWKWHrlyYGCJAscFwSVTFrSbeymSTnMhRfakNjzwWkxLqisHXZNDhjOeO"), }, + { .name = IOV("xjgGmOqZOFjenvgz"), .value = IOV("RnyZxCtLtRrKgBjGkinGsneBRNiPjHPVggPJJhlknLTruhhRThvWzsVQAbNryomVsPgIMznr"), }, + { .name = IOV("zklNwCjoCcQBwCX"), .value = IOV("haTJJtvpfHHjIGctVucGaVnOQFJrIfplOFQForzuOBoVgHrBD"), }, + { .name = IOV("KUqLG"), .value = IOV("vsGMDyuaEAUvaaojXgVNsvEbSxYGwOuDuX"), }, + { .name = IOV("JUpvJxqACFCVUUPP"), .value = IOV("lcopibdFovXqxLmPvMoBhGsLSvGieiziaLHqLtcoIFiBaDNSLfEZUraexKixEy"), }, + { .name = IOV("YBJfsJOcKufwZKPUf"), .value = IOV("fesASfUbIfWSzcvFUlZdBYcTtIvuUqCaBkDHeozMCBiLbGo"), }, + { .name = IOV("mvINJSPYmlpafa"), .value = IOV("Kjxd"), }, + { .name = IOV("MoPb"), .value = IOV("QNWiWsGUoAtRzRqcYiCmKGrAjeeVHvVtApMFOmTZmmrpiwOWXSSCftKYb"), }, + { .name = IOV("EnOSlCYftZtKY"), .value = IOV("Wo"), }, + { .name = IOV("KS"), .value = IOV("GRfaOLKgcKwDArZGTZtIYvDhEbsySQYUoDZJVIrWEOateMTBzRhGhGXuE"), }, + { .name = IOV("ftePaoMpKavDRkcU"), .value = IOV("jNwgTNuYEkaZWSnFDKByCGnlBumKYJrVkHEgSkZnBdYVepuacWRXt"), }, + { .name = IOV("BelHzdhkVHS"), .value = IOV("gwVeEZTBQWsyxCvnQmvn"), }, + { .name = IOV("tcnqfkl"), .value = IOV("IYynoCsnntCEerxXypopDUwqlQnLfKgRbHXWYRdBDpuNywcKPtfa"), }, + { .name = IOV("tkSsQCPtJAQlwvWjm"), .value = IOV("VytGEScYlwDHlGCdI"), }, + { .name = IOV("QPtDoG"), .value = IOV("MPBTFLsEbeWkGwrmKOAoPuUNHQxRILzHfdjkSYo"), }, + { .name = IOV("OIjdfb"), .value = IOV("IKwkPuykmrPLXDUWfLEOGAqPZbRAjiUHBrydUgKGXU"), }, + { .name = IOV("XfFKIpArHgDBtiZ"), .value = IOV("DTzBeDXmpatEeXqjyGOhXeoNmUapEHSCHTOZMFMNQ"), }, + { .name = IOV("HMHJxqsVcixhJIg"), .value = IOV("zuxcgLhhEguEKYipxmyJdDVopfzcYTOiwwJlXaXmAlNFtvrZRyv"), }, + { .name = IOV("xCUIGSCJLIhYdTVp"), .value = IOV("AXhFaGupFHrptWzxsrhEfaazdOBwptzRvEXtlFMTishcpNLOIIRkdzZ"), }, + { .name = IOV("txLapYmtfVQPMHsCy"), .value = IOV("lfHwjHPKCrFxBSjwWAbkObfMIlPulYrskDCcRYMaetQstfp"), }, + { .name = IOV("jDofSQEE"), .value = IOV("YJjnpvxNAdiZzwjiMbKWRcC"), }, + { .name = IOV("tbSzQzwXwlL"), .value = IOV("NDJgqxgyzQNLXZtwJtkTudrlndFcicnOmZjbJJCDuUUHjMpW"), }, + { .name = IOV("vrmhvYfTVtRQn"), .value = IOV("TghH"), }, + { .name = IOV("gfXhrxOOCyAKAH"), .value = IOV("qIrQndAuHPdQieEUuTGEoobUFWuwnKUWnLGrhCVqImIajBkgnvDnaao"), }, + { .name = IOV("uKhCOARCsvk"), .value = IOV("JQvcuTRgLQuzua"), }, + { .name = IOV("HRbyGtyh"), .value = IOV("TaOggCCVMsFVJxWPcXylkefntoAmcDIqmO"), }, + { .name = IOV("GfyDlEYQkAz"), .value = IOV("apjraoHq"), }, + { .name = IOV("ce"), .value = IOV("LOmdOcsGJ"), }, + { .name = IOV("fHm"), .value = IOV("kTGAQfDhfelpBdFLtyTmuv"), }, + { .name = IOV("VsosdctHb"), .value = IOV("sAyLMqOAcgBitJZUghgkVKcgIcEtqKsAg"), }, + { .name = IOV("nQ"), .value = IOV("XaVMWvMEmGudcdtcQIYsqYHzyiDtmVuGBONgdKglDRvRRKOO"), }, + { .name = IOV("hmtKDAF"), .value = IOV("qmWcKOKzQnbdDSSFgGSqoZdkoSiennIoGKeoIHwFGXFLBcuYNWZFEpSkZTUhSqperX"), }, + { .name = IOV("fuCkDVgZeyvLkBwiu"), .value = IOV("rhHttZoQBTrtTOtAlaqAKMYqoSRqETHrsMFnNHMayCkDhwGcrHqrPGNhjSHJTcfhgZCprfUCGhc"), }, + { .name = IOV("lgC"), .value = IOV("tlvceaqBhQPwcmeCqplQYEqnuMI"), }, + { .name = IOV("OG"), .value = IOV("wuqtUyIowwKktZEZnQBdoLuICQDGcoeKZTGxVNqLFwHCHDimRjgbhnJgWbCCdtSoODVwD"), }, + { .name = IOV("QjCCRyDLQAksIqr"), .value = IOV("vSdwfxvvLPkjEIPpDJfcluGiwIUH"), }, + { .name = IOV("chSMCEJfIuFvtYRFmRoO"), .value = IOV("tZvWcvmuSasVsBzqSVzxbAeRcftcKOrKcWvdVmdPWyIMXpmVufXVy"), }, + { .name = IOV("iOZSVSw"), .value = IOV("CEkWyddGOJfTKKIlmTGlwVszYvvxMRpIYMAmTNTkbJmZYHumRqgDFkPUIZAHTlPlNaR"), }, + { .name = IOV("RvY"), .value = IOV("KeDFXvznlJWtgwEAAYifFgLRLlxNZwaCsXgddBOlmSJeVBSOifWoGDTJyDrUONoAnee"), }, + { .name = IOV("KXSSkgvRmgvR"), .value = IOV("PaqfMyaraUHouuiujccbvzwMcwrXGtVbVBuTHtWQtYt"), }, + { .name = IOV("QAb"), .value = IOV("hqzrijxGhNxZFnzdlcjMAIqPRknMiwKroZ"), }, + { .name = IOV("OcrH"), .value = IOV("FIyMAwKUYqTOJscrYGkOWYAARkoNBONBNYcqJduFahwVzzhnXL"), }, + { .name = IOV("tTwYqdisj"), .value = IOV("MtQyjTCWvByYAqvrpyhHClPHDMcnPtNYuYOwwRntEmygTwIOTktQELZnalN"), }, + { .name = IOV("aNrqVBWkEySu"), .value = IOV("JqgCJOdTPqXrCvZMOcHjeqKHrKznrNMskhGBAIs"), }, + { .name = IOV("MvUuRfmPgMCd"), .value = IOV("YidrxdEMoyLrCKkmOGfLwqiUvQEtqnPujRoZWivkitVewXAuukieMyZcLfLlWwjuzvczdsmnxlK"), }, + { .name = IOV("RdJFSGnEhkfSITEMCVTH"), .value = IOV("uE"), }, + { .name = IOV("VhuwiUsPnPcKMNBudhY"), .value = IOV("ZsxJrZzsprIshINSCmPOGHoyvJsjsZyaUEqlkAwUTPZswbQYGsgmLlSIyzBwLFqzWoxyLyGx"), }, + { .name = IOV("tW"), .value = IOV("GsqsOVPHUEuFfynRscKsZXVuLqRcloceQsaRDMdmBTJXL"), }, + { .name = IOV("B"), .value = IOV("oMqHZeqofVYrKwQvFPTeQPAgUVHtCwxaJSElmMzxVmzWWTyCStKWOizQmXfG"), }, + { .name = IOV("YMMWgiqFRGDTzn"), .value = IOV("qxXGMUFGTMwPkFsFNBDlVsrBaXHeCPgdfvIFuzTAOpxoUltlryCceTDGCtjJegvCbUKFLiBRel"), }, + { .name = IOV("uwKcJvrkkbpRVlRKBcG"), .value = IOV("ePXlZXCpTwEwbXmacocoDNzaSLVXoDLbAvUHFjPvgbZxGBlBWZMtDHwZwSSMdet"), }, + { .name = IOV("y"), .value = IOV("mYMLJEfLDLbdoQCDl"), }, + { .name = IOV("gVJGMqPgd"), .value = IOV("oUzcGelHdZSCXgrdzIZhJqRVYqCzWUjclMYLJcfLpunIpmvaClMWNQSsZREIbhowxjjmLsNWfpgU"), }, + { .name = IOV("KWnpAR"), .value = IOV("NjFeNdbQPDwHsghgspvmvgNCgqyVGUcufAZqLwuIYfZZIr"), }, + { .name = IOV("clZMK"), .value = IOV("xMZLUPQdON"), }, + { .name = IOV("UfSXGafJSWrj"), .value = IOV("jZxvVByjBVtKXSNhznUcnZRoanULRJGkYgXHQXrDxBdvfYTvtHykgQTkWfbMbiZu"), }, + { .name = IOV("dEvoEJUSzlnba"), .value = IOV("QQSqDLXnYMxTkWhawViGWBkLIvLwAEJylIFzEwCrsMDcgmUpVdYGeJ"), }, + { .name = IOV("ZnFKVe"), .value = IOV("TKBbAKbxXgKQtVxnfmoMRCksjXZWLExTcpMTMIxDFVBdXbypmtVFpYLwVPvZArO"), }, + { .name = IOV("FSqRPEzSlCbJXISYAeny"), .value = IOV("DpvTGsQjCrRlPEEjRldlRlXRkFPfNrCQrhSOEgCOLGtLIPJxKQeASEHJBynNkBzZ"), }, + { .name = IOV("JMOIXgxy"), .value = IOV("RrIbLQtFdvoRuXnvDOAwuXNCBalSBtXoaJOFZkVFCboaycdFWAiV"), }, + { .name = IOV("btdTRpyyqpuzJJK"), .value = IOV("f"), }, + { .name = IOV("uPbxHvLgi"), .value = IOV("S"), }, + { .name = IOV("gfMwylibXhQcH"), .value = IOV("zKerKBtDtyApNtEdHjMbjJUHtfNjRjzYgWiUomuYWqQFrHFToIcKEhKKy"), }, + { .name = IOV("QjWDUErdCgNu"), .value = IOV("IpjUrlvTANTsMOMylehHlxwtWDasrLIpoLXyFCwkMQOdSSxdNClEUvpLBsjaglIzPrhUnMtgeIHdvCfs"), }, + { .name = IOV("KM"), .value = IOV("ZtsxaQJEJChdrkJrsNcBVILQbWeDHEeXNzX"), }, + { .name = IOV("AZYhBeXzlCnhlSNaHXt"), .value = IOV("ZKISXFMBohXuLJLmrHPxIxTvkMuOuopFLgjwYMTCdTWEoLQWLZZIUwSkZZvRKUWwgvk"), }, + { .name = IOV("bMONoecocbHaJMqJRqL"), .value = IOV("FZUeNBfjVawlunpwenxSAKkcBFPyrgOWfftY"), }, + { .name = IOV("cWQkuLvUozCyMVB"), .value = IOV("wVdpDLKpAvGPwylripeTGnbkQMTB"), }, + { .name = IOV("JA"), .value = IOV("pJBGFpYafyBjKMOaFlXtYePQkSfjLHItSMe"), }, + { .name = IOV("YgLfAkUDFzGnUrh"), .value = IOV("Uronap"), }, + { .name = IOV("Df"), .value = IOV("aYVvyBDxlVphcnGFuyphsvWSdLRVTPScfoSPgQMqeDLCeXIQ"), }, + { .name = IOV("p"), .value = IOV("dnSwfsgiTkiDcnbqogybPbfqKUfBDoFAInuYQyAckCznTndQptNcDPjgXrFwlhNjSIi"), }, + { .name = IOV("TzqKQzlr"), .value = IOV("gkyXpglQsgmPuSRylEAKOhqIDDcpncTZMYFPKSOfpmpKNJKyYYEdmbIPTNEVnStbCDMAe"), }, + { .name = IOV("KUMPg"), .value = IOV("JPsCMvSncN"), }, + { .name = IOV("DTWyNO"), .value = IOV("wRrYnOhFGKKEbNtmFTCfKvgmBABdGGzIzTWhudQTJuaUJQPCPDGBCHzOsPCjUIOOXjYriAuWkJKpcIdP"), }, + { .name = IOV("RAbYVIeFTqzakNQk"), .value = IOV("LGoNmFuLWTgqcuRuIxHcsBFqQiEUNmxnNwqdGydqrbexKNUrngBMJPwKaFDOaVInb"), }, + { .name = IOV("aahcXc"), .value = IOV("SPmFPkORPSruQjdQaNOJmXguLWNEyksfFBKmkEfsEbJwvNCuUaUeIfANk"), }, + { .name = IOV("qjJDLDTOsvhryC"), .value = IOV("LcaMieUkorpBOgNjkLYCFUgVVbnOuBLGONKKSvtWfyVqNwODvdVuYfbmuebbePYBNJuQLFIAgc"), }, + { .name = IOV("WTPOvKTckCNT"), .value = IOV("iEKcgfjExuzwNSfrlYolYyvCSuoQIDbSRcBcCGxjaoeypLsnYmmWUiKooiMsa"), }, + { .name = IOV("REbTUsgmxhirBQCJ"), .value = IOV("dKHIvikndOAdwvNfDasCZuIXAOgN"), }, + { .name = IOV("zHVMBVYIyjr"), .value = IOV("vLtKCymmxFEknzMRRGPNOCpZomNnuRe"), }, + { .name = IOV("gP"), .value = IOV("VKgHygHxugkHqFSlohoBOBMbMUuhMmEoauRepNANXIYRtbAYRrFdSyVkEqQiSvMTNlIWAhgsX"), }, + { .name = IOV("wNGJHtKlFePVxhx"), .value = IOV("CEddDmjkArkeDbsrxhvB"), }, + { .name = IOV("EPYJ"), .value = IOV("wAvJYkYLWAJHErnqJtjxPucMcXYfvqdzkOIbBgG"), }, + { .name = IOV("qbgyLVewXdRtDL"), .value = IOV("kOLjDAbjESpDlnsyJNymbNRbDEqBLgVS"), }, + { .name = IOV("zZsAamCleICvH"), .value = IOV("OfvirZlqTargVFwVlgXQnAALqrrKUIrLAKb"), }, + { .name = IOV("efbjHaPsIeXUcyXYQg"), .value = IOV("zeSKMBWsTfOIqvuRCxK"), }, + { .name = IOV("XlurpCxEwjVPvfcdHFl"), .value = IOV("MRufRGYeWVvZpRyQOKuBgrTodzxJiUGgsBGliDYUaekd"), }, + { .name = IOV("POv"), .value = IOV("DTvhxdOghGlfSmoyQQHYFmdQNZaBXuTkEqznqqVhGNYNGmgaUPrWF"), }, + { .name = IOV("FWNJe"), .value = IOV("ZEpWzDyiwmpyIkGNWTTXFmDhJkTbVcvnwpNJxTNaHjxLYrKyBCcinV"), }, + { .name = IOV("iKPTySyszpAKt"), .value = IOV("aSjPXINUgkJlocPEflNpGKXgwhBZDRUMLAo"), }, + { .name = IOV("PjKOcJcEQJzRrM"), .value = IOV("sjlFvzHqKBQFvpRrrcbyUhSGbDFfcsSgvLbnCkLUSlumOJkCDKwCjcoyrf"), }, + { .name = IOV("gvRsAtuNNLdSOzL"), .value = IOV("TgzlfNaLsAxPpMpvBmPmmCthBgFwaEjZUlIouVSLEMOcXHlPVsHB"), }, + { .name = IOV("GLJiwEwqcp"), .value = IOV("HccrBleSwrKMrrIVIzaGGaAAVUGRDUZgW"), }, + { .name = IOV("kjyLGENjUVQrHjygQD"), .value = IOV("zgnsDsEKDTUOAyfFqDZiSpKLZcZHHjVGqRNlVEtsgFZOJPJh"), }, + { .name = IOV("GcWTZ"), .value = IOV("QhqgnuDxiCgJldrShMXeVSpsRjClWUeSieVScSBgNYPHhd"), }, + { .name = IOV("D"), .value = IOV("BAISaDgCBNKUUemTvVKzxIgZzDvVYWLfIsZM"), }, + { .name = IOV("CiYNtLoiGZuLBVyEa"), .value = IOV("BsQvRxUDwlduAfUxpWiVJ"), }, + { .name = IOV("AAjxNCCrjkBUiylemWI"), .value = IOV("jJFjHDguJCeOVigxskomi"), }, + { .name = IOV("c"), .value = IOV("GsFNWRfaimnXFcHI"), }, + { .name = IOV("naFhZvJqswZNdxgDOYmX"), .value = IOV("CHPWmHhSiOZStlwYurBiERjFhkeIbdrHKObVfnJaiROIFkkLsnbVwphcHmjehxCFfCqjT"), }, + { .name = IOV("OpdhxkYbNezINKvbrir"), .value = IOV("eyhPHIHUrVpKLIaIIdThgiCdWNmGuRWUysleAraUqNzovpbtqPe"), }, + { .name = IOV("IKcWMZNZUqnNk"), .value = IOV("ZXVYqaFOluRmBZ"), }, + { .name = IOV("LPWXVQEmelwukEKxhS"), .value = IOV("EScKTuxYJLtAAhzQxFbjCLFraTKqTcvGfJUcMRGPLZShzyVDuELCRyZDxwBXXMXTtlbGMU"), }, + { .name = IOV("jXua"), .value = IOV("WoYDdXsPnclPLYPPIXbKNxuxX"), }, + { .name = IOV("FToaRBPjFzzjoqoWwPy"), .value = IOV("EKZJjpQCroSltLeOIjGDIAowfAjQRJGvOOGDCTREfKQFddmkjFdzopAZFbWqvHQrNwTiQwNgYUbC"), }, + { .name = IOV("pzo"), .value = IOV("EumZLrkBQUg"), }, + { .name = IOV("JFqYRCoSZmebKuoxZn"), .value = IOV("hlVlngJzNevChmYcyOQSwaJOQnaWDIPOWJY"), }, + { .name = IOV("EEuRzFJAyYhxaqmRU"), .value = IOV("RQfzmxrWEscAmqjGMiCJvSbJmRJNgVAXOvdKGTMzqTnJnWGX"), }, + { .name = IOV("tsRCyMMXQUQwqy"), .value = IOV("JJLerwYyeeywKJSRZFXJzYwEJuOoHakclVXEqwCWsSBQhqcErX"), }, + { .name = IOV("fiJwGK"), .value = IOV("cKKtsowlDwjC"), }, + { .name = IOV("JjFnFYUIyUhM"), .value = IOV("GHIwuBGfrugnI"), }, + { .name = IOV("WTqb"), .value = IOV("YpoBFpeBPcchMcJxRjzAFimSBKWcsGYbKBoPlxTiQxTWEWdJICTQSbxE"), }, + { .name = IOV("vNivAcOTeFHninwoDh"), .value = IOV("DJzVI"), }, + { .name = IOV("ncJBGtoXebQr"), .value = IOV("dkTUqlNPnPgHxCxAgdQcttAsVqHUtwBSXGRLhuZkjZLOpsUZBwFHijMdvGKPpeaM"), }, + { .name = IOV("kKqSaOwlDv"), .value = IOV("YwvnBqZTvuVZhSnE"), }, + { .name = IOV("VjKf"), .value = IOV("TxjwptDeVCaZsIbiabtKNUnQllrnKMYTYZfOUDBsbwiAIPSPQWpmmkUPRtgdZskuRZ"), }, + { .name = IOV("WTBce"), .value = IOV("sPMyqAtTHfKnLVsVCwZaKXGquLgWczUnpzWmkhLiwaeklAPnrXuVVLbjvuOCkiYoPv"), }, + { .name = IOV("JMnwMvXtzIeicoE"), .value = IOV("jzRPfXBtdSRbsCPjuNEttnDioryCmuvJQLRKCnVBlcHNGmeCfiUharBq"), }, + { .name = IOV("sYjJjrGltLpn"), .value = IOV("vsSnANJ"), }, + { .name = IOV("aLZMOS"), .value = IOV("lYxcSdBObhPqXxwTTEDarLFYG"), }, + { .name = IOV("hS"), .value = IOV("nlsJmDvBHdcdqdQwtYCeTBG"), }, + { .name = IOV("wcuMrCK"), .value = IOV("ZBbFlxPrkkCBAmiqaXucOXTqvKLMtHKWBxcTDnemBPNIsVOtGTRYIAakFBlFLMHysOtfGrpYGrLkYZpD"), }, + { .name = IOV("kTA"), .value = IOV("cPpYeYzXuucaQrTMZBHfyKotpKKcoMqu"), }, + { .name = IOV("WeJGkzUgqtIRKtoVqp"), .value = IOV("HdZxKdiyfSTQvljgSLJNdinrKbDvSqWEUnMSiKmiFGFKhxhzdrKMwGC"), }, + { .name = IOV("yfvZVmdEes"), .value = IOV("hbJsDSvtvTEHyDFPAXWZnLRsbmCjGyOUfzZgMcjVthxrhRlTQcLaomlnuJbhxDIptl"), }, + { .name = IOV("sjzeFfqplZIlriQqRDQI"), .value = IOV("EIeKMwFNTdojLirFXzHggb"), }, + { .name = IOV("hJEwFukfgbr"), .value = IOV("qXlQNWes"), }, + { .name = IOV("cObqeWniVxI"), .value = IOV("SjpCNlgZCdWAllHcfznxvDlruqHbNAvMTlUhiwULaHmOrcJiAcd"), }, + { .name = IOV("NJFCjtTStsKwzPZXz"), .value = IOV("ddaqcnYrSSgsEgWZCthwLmxshfNocWdWWDYDVdpnQmvBIgfdsbajMKffkNPCBZxEmlk"), }, + { .name = IOV("mXppGXQTFQEgYtAZNP"), .value = IOV("sgqskDodCPezg"), }, + { .name = IOV("uYOjAFLHHDLPXMfQ"), .value = IOV("HifoLXymBlhjhNeLDRirVsiSbrIjzGaTWQwIywJKCoh"), }, + { .name = IOV("gsOfvOVAUQ"), .value = IOV("xkubOsfJrfSDbgTIpdKQUFPfDCtnaxKwacVSURfAJcGCgLcvBnGYJPctssISKvERlVaB"), }, + { .name = IOV("Ujg"), .value = IOV("mXPSrNPufuXLnfKWUSHt"), }, + { .name = IOV("znvIKW"), .value = IOV("PxsdpApdCFDHPo"), }, + { .name = IOV("rOcFdyea"), .value = IOV("mWriqxrQtsCPsfozIoawQAbXiOyAhGAUMehToTcKYLXNRJdvojqPUWwWNsKdctcBZStmKGKed"), }, + { .name = IOV("dcwINhAQtzYUtwQ"), .value = IOV("vKXKrTpGvGwptTKcDNiypOGKLZopjcagBKlbMGSKvIGeuxuWJhfCSZ"), }, + { .name = IOV("FHbIzpmzlnQq"), .value = IOV("sczLpvuVUqRroXLBicrxMeHBjgkd"), }, + { .name = IOV("XRzONDFJKLuPzwqC"), .value = IOV("QLoFOlZayTQJTGiegBdjarzZWWSxNtQaJdDibZuORLXPzrTBIRpCYzpvLg"), }, + { .name = IOV("mwxiqlFdnaJITYkEq"), .value = IOV("xVrtqrebdEkHecICiYBgtpiwfhMvPZkfloRRNrEjkJlURhXgnettd"), }, + { .name = IOV("SoEswvPQV"), .value = IOV("DOKNQtSOLvnXgLdFobumJFuOlFbrBRFJhdldwMaKWPftYFNsbzKqWBFQIZeTVsVldjaVKkozzFunDCBr"), }, + { .name = IOV("uagPcwSvNXVwDPbhKA"), .value = IOV("tFWUDSxhmUBoDBympbrgFjRbVjppgpaVasDscyIuQW"), }, + { .name = IOV("wpjahpbSDwbpNMmSWz"), .value = IOV("OAIrwVaEbcZdqZC"), }, + { .name = IOV("yUiMZl"), .value = IOV("lGKnuJfEdzCgLqaihemmIsRvMqBWQTKUjdBxHSdRPFwagwLPdiaFPCjVfmosZIIDZMQivRn"), }, + { .name = IOV("CUZ"), .value = IOV("KLawTYJVGyOwqJPpQboMxHHheFROmuXiJ"), }, + { .name = IOV("cIqIiK"), .value = IOV("PsyzwPjCEvcxsOzNtRlCkZ"), }, + { .name = IOV("dRkJARjUWen"), .value = IOV("pjJKmylWrOCVsJqiGjqAudYznIjsiWdXLPrRjsVeooacYdLRSmYDz"), }, + { .name = IOV("WkJtQdSp"), .value = IOV("PNzyBxssYlElBRBjuFKdXyNxSMlmEhxLYqYJogZJeBaVwUnXcNjnEHwBEOqplQq"), }, + { .name = IOV("XsXIBgSltAmiNxNKt"), .value = IOV("HUWBaAEMastvjqGbpXCqWYFQbX"), }, + { .name = IOV("vwbULfggWBzQyRWGbrc"), .value = IOV("JPOoEPLdBKCAtxplv"), }, + { .name = IOV("Ww"), .value = IOV("LqGHyyZacIYYlzJEtIRyqaKgnUmElrjdadnwZEwZxEVhVaTIvtFRItfrjCvEgw"), }, + { .name = IOV("vWCLpMtUnKdWhaZSUJk"), .value = IOV("kiYquNfWECxamWj"), }, + { .name = IOV("tY"), .value = IOV("hDUuHWHYGCRFuYmzUrqFAy"), }, + { .name = IOV("vppabMuAnTIjeetkrSw"), .value = IOV("xuRjIrCLlTXjPccaejEVVLTeSYnXqPeRKBIJOdWiXBWUCrshMrEbMCSpyKTtrWUtOAsJUtyqFq"), }, + { .name = IOV("ijHTPGI"), .value = IOV("cNzbXYiCluMDqVYmhRkIqMmYZZIJPhprtyZivPPe"), }, + { .name = IOV("jYaMAmd"), .value = IOV("SlagJhorzmpVWouT"), }, + { .name = IOV("OAmUgRPMC"), .value = IOV("PbeIqfyySyEMHMNwFytumJbqvBp"), }, + { .name = IOV("tVfefUU"), .value = IOV("ONseqgzhUXKhZQegfYDUjOimglyJouzEraqqFIlUBJwVuYfdanaYsQtFVKMYROFG"), }, + { .name = IOV("ITZtp"), .value = IOV("SHiJZsTDOhZrIoDKtxByckZcSYzmbIbvmReYazTJlVvzayDSkvV"), }, + { .name = IOV("YJqAdzotVntkQNlB"), .value = IOV("YiAiuRdMLVsJIeUDNSpiZKUukOfvKIycbCPqyeWfhvVUrHFPoJNO"), }, + { .name = IOV("WezXHnVhKMSndJVGni"), .value = IOV("djaRFrJLsOUXVevFFgnfVXDPFdSGlWEnVnTkHHoZcXAtTBqaTlBgyzFy"), }, + { .name = IOV("YemKwKLUBYiKOCAlz"), .value = IOV("CQCYRJkxpQegLcRnILjHTUOwlqjXniyR"), }, + { .name = IOV("eQXvOKQlbAyDJa"), .value = IOV("HArzvxVeYkBHOKuQJEVIhnZMQEBxCEIeZNfDSxvgoDSwXhSWFAwwYtbeztDstGTNw"), }, + { .name = IOV("kveYIbiDhvROVcqN"), .value = IOV("yAZQKpFuLceVZjRxRdWsSouxhSDrtUmUdhQaeUimRpgeIbHKWY"), }, + { .name = IOV("RqBxCsFJOoVqN"), .value = IOV("ruMTcjGuaMZmZTqNbVeVZohnyMdPGEJT"), }, + { .name = IOV("EYfKFmrnYmp"), .value = IOV("hgKRoiUcPFQutohffOKXjzmFzTnDQejXnhGRBUbHmejLDKQcvQbAQSJvdPsBuZCD"), }, + { .name = IOV("xNlhWOFnkygFDPCN"), .value = IOV("lFRzieQkyKPhRYXdfrcOVXeZjHLejEnjIiATMDDhNalfZT"), }, + { .name = IOV("BqeAERbQYcRgIOlaXwq"), .value = IOV("jvkWtTeLeNvgxWEPIPeWepEbvqiNUfdzGBksUowmDqLrHxWgJKhsxAVSpOFhw"), }, + { .name = IOV("mEEmQhKZKogqKKL"), .value = IOV("CmGtlVvDBgvVNBYmsGgLDmmLDycQNkQZpthumUWEgQALfpsYLehFsGWsIUlnQznjWtGacmlvFsWXfh"), }, + { .name = IOV("TyZ"), .value = IOV("ZvNDSmtVUcaktPkPqycJWiEnTMK"), }, + { .name = IOV("ZRMIlSOCRuGeWrZvCrv"), .value = IOV("bLwLqcXLOVAXSJRYbpAeKBfWNrdZPvYykDSebzDDzxWWCdLdlSPuIxPzeCH"), }, + { .name = IOV("CmCBZSWNmtwIYnj"), .value = IOV("SUTdKWJvXdZcxJaMnLfGIvwkhmkElrMPXEohwGpIvPDMxGcUjnsUhEx"), }, + { .name = IOV("aZ"), .value = IOV("ZuRLvlChCEWVNKNlAgpMXynptlaaxF"), }, + { .name = IOV("CZb"), .value = IOV("XOYhJkKGEjDIdPuHvUncxjqTNPspaapAQWAZdEFOthzKNkzJwFmbbOBNcNxKwYdZ"), }, + { .name = IOV("WfqHCnBkkWzHPw"), .value = IOV("eeOCvVFJjgkVBKsEuPVkGMgXcSApHoDWXh"), }, + { .name = IOV("pqZZzUeTuZomJuFRAB"), .value = IOV("HZhPatpcfdtBNccwvBxnCKePIzQntL"), }, + { .name = IOV("bzqqeJu"), .value = IOV("YOwxIfWD"), }, + { .name = IOV("LDcvzEbJnevAa"), .value = IOV("JXlCimTHMYyhkLoirwUVxRuRiWjaJqeDpooFPcvqL"), }, + { .name = IOV("GiqUefAyGDIhxq"), .value = IOV("OpfnA"), }, + { .name = IOV("EYKffGPCOt"), .value = IOV("dmiGDSJxcbksAxigChVGk"), }, + { .name = IOV("cHGwZBaCr"), .value = IOV("yhFZSuunftczpQtqmWXyxZSKuZsPVHcfNIOazCESiHeWhwDEvfaDPjPTEnLVEZi"), }, + { .name = IOV("jS"), .value = IOV("lMzUeZefZbrnyaEQIIFTzMvMzaVqlYuRbfCzUBiumTCnLMGFLcQeZDavqpnHYhfiwifeTOgiRIh"), }, + { .name = IOV("aDYWTNNJFEeKVSa"), .value = IOV("sPtnXGQWflgfJROpyFxpoKinyzTluJuJkWoQoIqGnqdLQ"), }, + { .name = IOV("y"), .value = IOV("oxgWVZdMmQaosFObCuXanyPSYvOQVgUIPdnFiNpnMupXpfpzrLlouXn"), }, + { .name = IOV("TbDSUauQoQQySXIZggu"), .value = IOV("keoUhHGrVMJpOFWczApDAtDrUzaaowtSIuyYcoUynvPRvKghvWjEqIZLyvNO"), }, + { .name = IOV("bkYWddZVZmZRQjKy"), .value = IOV("kQTnhKowgchBBuA"), }, + { .name = IOV("esw"), .value = IOV("rmRItvvVIJxNmgYHacDuTwL"), }, + { .name = IOV("ShYKOLPWycrbmsrrAoE"), .value = IOV("qoGwIaUwtW"), }, + { .name = IOV("CvbQb"), .value = IOV("IDUVplDIeSNIwsTfwZLbsPQHopIExgrgBBogx"), }, + { .name = IOV("DpRfjIZLLOPkKBTRrPdu"), .value = IOV("yDdsr"), }, + { .name = IOV("gLcZQPzOc"), .value = IOV("vrbRwkUAHNYQSrYHBzoVdrtdOMhVZdxOofekFiOGHzkEDrjaUFffVuxyZvVaoewdYyvfDpxXNvekjRVL"), }, + { .name = IOV("bgPb"), .value = IOV("qqLR"), }, + { .name = IOV("luXrTgQATlgxATrwAM"), .value = IOV("kOqxViQvBNWUBGDnqkZWhAiVrxo"), }, + { .name = IOV("kmSOagunDgfOkBIZuaa"), .value = IOV("KZseNpIyRujSEPausnmqIPnSLZDmllZqGObVGmlvYslgUoOhTrPqeGQFtOQpppqBIsdLwxVkOA"), }, + { .name = IOV("DB"), .value = IOV("hbtcqmvkyMIrxuHaTBVCcqloqzFsXcnpjwJixLVqiuFiLfRUiJKQEMkCnGwTdLYllVIyVHP"), }, + { .name = IOV("fDwXMlzUvb"), .value = IOV("ZrwSLlFItzpzKbJDFlrRqKBiRHdYGyMjkfMuBlAPzsTKFdwFaOsYOQyiNGBeCExnkvWGNAzqEu"), }, + { .name = IOV("gdUPPBUeww"), .value = IOV("ZmowwSExrKIfrMBAUHzcodlHUgGgONSLOCzQHgGtVPVxjXDKkpJIZNotYNxJoZdbIkOyvjaXslO"), }, + { .name = IOV("UgLdZDC"), .value = IOV("fuvOCKySniOEtErHzsrBTwKRFNKwebzVhfVPPz"), }, + { .name = IOV("nUfyxzGrvjNolpZ"), .value = IOV("ZcuIlQKFEcKvlSsXbTaRUupYfnydEKvAWEYBeqTJVqziCQtmMhDeSRMuBpOqfr"), }, + { .name = IOV("gRNambEGhDUWVf"), .value = IOV("dOFlWPhnPrxsOiXCIAgpq"), }, + { .name = IOV("t"), .value = IOV("SVlBuhmEfwSXOwAxkGBYhRNReTqDUrq"), }, + { .name = IOV("XUIUJFfs"), .value = IOV("AyNzwAEhzVjmXNlkXkfoXCerenksMWKajkFdflfuGb"), }, + { .name = IOV("EKBnKI"), .value = IOV("pKvWoWINLmxFojnLfJgQjNBCaQyWtR"), }, + { .name = IOV("WsUAGkRwlWGH"), .value = IOV("ZyDJFPwVYXGAXvykiqzVbWUrozlMJWkNYdGcNIVOwQSwkccGLegzdHZvZjvFinKXVLZc"), }, + { .name = IOV("nwZRcXiwbvUjCWEv"), .value = IOV("dMAevbtuCUWuTFfBMuOfIbOauNPrYqhAGtFtMUREzalLzp"), }, + { .name = IOV("jDHIp"), .value = IOV("XUhxAbBIrKpIKtcCtqLzmheyUyMQGJcISYoSUGmoJtDzChhDBeqfD"), }, + { .name = IOV("qqUWmzPvuXVEdkVNjCy"), .value = IOV("PhLHCREvsllTzKhGtwxBTeursRtZzkCddSoPkmiMekBrRPL"), }, + { .name = IOV("LnZopNRfTBpowPQaZj"), .value = IOV("LsfynMxFWtIIzTUXenTlSnHELIvsqnfNAUqoajtEHutaqYnFRRfruDwKMhtMDcwydPISAwOK"), }, + { .name = IOV("wKYcN"), .value = IOV("QaclzwqvLmvUdfmAHMPIUTlIbxsVUzejg"), }, + { .name = IOV("NTfTcAoLAbrzosc"), .value = IOV("XCaxruWDMGuokneInnwHtxyzWVAuVolmEQ"), }, + { .name = IOV("csfLssYdCdyR"), .value = IOV("PSYdFeHBVXngTlEUfUfboaFHSXZkDfYlrevHaEldDqUNmQzpfwJzVhnaazEKZLbgbNmdbHBSoVjLL"), }, + { .name = IOV("Y"), .value = IOV("xGkSPbcuJpvUeskYNYavofvwQbGbOqTYHkJGTrWPHdUOPcKdIceUsrmONliNDwbodukMgdNCY"), }, + { .name = IOV("QkLvSMSwkuEgHwStrw"), .value = IOV("vPUFMcXyxvjseqDHHafeXJWjEQSquOLvSglgKrmDCerWEpPmYOtldioapVkWwxsuuRbodfmFcaOiv"), }, + { .name = IOV("nkr"), .value = IOV("MhvpalRHAhCTpnIyIqtHGVIXDcWLGILd"), }, + { .name = IOV("tTPvCXeiEkPB"), .value = IOV("pVTYapAKOyYAEmsEwFHg"), }, + { .name = IOV("z"), .value = IOV("nnnsQbFhgApcFlQYsGTXjRKEVqRuseEgkEtftNafLEQPpcIpiLKjfWCYZiekTAxF"), }, + { .name = IOV("oGXSaBbeT"), .value = IOV("dhXsFxZqGbQAAnhPnzJcmfyUEnPkAMTYLMuzgbVHIMQdsYJtf"), }, + { .name = IOV("Ua"), .value = IOV("HtKUXMEJxVbsCqTNsxkUIA"), }, + { .name = IOV("bcDTTzu"), .value = IOV("xhwFhxdxmlWyWFostPiurJqHxPpSrhnAHnfqfgjpYaGJxmGJvBNNstsxibaGrtFfuSpi"), }, + { .name = IOV("CoaVaorWwnjKhMafZ"), .value = IOV("VHMlktQeTRkexOUR"), }, + { .name = IOV("kmNgnpHzqRwfSDP"), .value = IOV("RpmCucncicmgznyWPhtSKYYjTdKLLPYmzqIhIBvCGejbwtkyHIVt"), }, + { .name = IOV("UnnhptrBpGWXordQk"), .value = IOV("aTyTApfetQJeOtLv"), }, + { .name = IOV("YtGAkppSRhLnMBi"), .value = IOV("sHaHunzXNyShDtjaZNeNfifDux"), }, + { .name = IOV("wBxloetJJsF"), .value = IOV("GLFXTiJYjRhoekFBAimfu"), }, + { .name = IOV("kEyEmlLNOkWQtSLrK"), .value = IOV("WNIzQtLKTBbWLMnquQrdAtwBqkIXtyeeCjjfDLKyaYlN"), }, + { .name = IOV("GRDIzoFxZthWUvtA"), .value = IOV("AozNfkIpzRSGsayLPGMNKjFSyiAELHDGflmMSyZsmtOPwkvIqOyiZgHdwy"), }, + { .name = IOV("WiPqmcHDUTMOzDKUAadf"), .value = IOV("xjzKGNdRDrLXCbuCzZFk"), }, + { .name = IOV("JCfjYghLPifZotsAsnR"), .value = IOV("dWeKVLFUFjRSOpnZHyJhuFBZzzoEcljfxprRBF"), }, + { .name = IOV("sbkUzALyjDMduQJ"), .value = IOV("kPTHemvRjceUfpdQxxrmpJkKxooTaEEAcQd"), }, + { .name = IOV("TNZ"), .value = IOV("AOWktqXgCkdwporAsMlqqYkLxiHubTVceIH"), }, + { .name = IOV("HQJeDGBNgXXHdSGyXj"), .value = IOV("Tz"), }, + { .name = IOV("cZxjXiVy"), .value = IOV("kGPLRqjWSZmHfqyviRXvnzV"), }, + { .name = IOV("yCr"), .value = IOV("XletSwHlKjAUahPboWjmhIVLmpLmCVtoZDEWizvwA"), }, + { .name = IOV("lnVcBZzzOpWT"), .value = IOV("NAgtkOJhOlmqkzSnhXBuMjUmtfYURfBCoTCKQANUcbLHXroLZrAmUcZu"), }, + { .name = IOV("NeNPebFSapiTIHvg"), .value = IOV("MunAXVNaRxaDIRneChGSqoJPInzhwuQjVskUWEPjxWyllcsFqwznaheYAUzsbKoIGKZ"), }, + { .name = IOV("RuprHLYWV"), .value = IOV("nuJHImpONbZKCkFeBbDWnJGOtTBrwKho"), }, + { .name = IOV("r"), .value = IOV("NVLXI"), }, + { .name = IOV("SmudpJkiFJHwZOJE"), .value = IOV("RGgQklEoYaRxImLkzozzOgxpukJivMc"), }, + { .name = IOV("xeOzprscJfHsWZeCSaJt"), .value = IOV("EdX"), }, + { .name = IOV("Tt"), .value = IOV("dTVHSSZNjHFQnjRpKSUvSNGziPXGUOmLrEcGrevaffJbTJWkBTP"), }, + { .name = IOV("GFAnDmqbXOm"), .value = IOV("hRNwgdoItfIYzjxAszImKEbwmaFNajFgDyIBYppfeFScZdYWTRUKsOhJXytMCyaNMqchpWZKROfVNe"), }, + { .name = IOV("L"), .value = IOV("KHeeaLtjdIRaycocbREXsbplRFscXBvcHmQRwYuQQtvjg"), }, + { .name = IOV("DHbW"), .value = IOV("UagQlAFyMilxlXkOsDZQRHx"), }, + { .name = IOV("V"), .value = IOV("AkdiVqrGbRFGGxhGfwHYmOWcYBVPFXSQLQUGHzBQkndzGbptadEcdpfUd"), }, + { .name = IOV("fxrUdZ"), .value = IOV("pzjGUgYMNFqHsghYlYWZkgtOBRMrqTDEzfPlipvLDtoqApdVuwStYwFfowT"), }, + { .name = IOV("ZbcPP"), .value = IOV("WshnkVVZTYJXgccfWVKPBouEKDfmVCgKNsiEVbMoRBJQUBuTqNLCHmKmsXHXW"), }, + { .name = IOV("MwKcabdmrlbl"), .value = IOV("DSaZmMBhtrzfTsWbmCKgtUchXAxDkhaIvfnQDIXIvJbcUP"), }, + { .name = IOV("BOWeaIjqCWjqLMsw"), .value = IOV("RFKclTECJaxiDfZEgk"), }, + { .name = IOV("q"), .value = IOV("mfRvHGpeMgONUnwORoTTUfoPEZBEqlGnAnnPFHcEiOwMm"), }, + { .name = IOV("sitTGWEyuzHgqRr"), .value = IOV("DZHMjNscDYOyADkPyVlQCUVfKnPSyUA"), }, + { .name = IOV("wgHYyvARYDMkXXtUCE"), .value = IOV("msdPosWMWXHWDXUkAzybWCJedTHFHlhIyodfOojSgkWRssiwNIvlYJRLeWAzEdDty"), }, + { .name = IOV("azXSNWXQmgdMRtcyo"), .value = IOV("roZN"), }, + { .name = IOV("lATewJyDsbuY"), .value = IOV("TGCJjltdCVzqmybTNHWKQrBYDuvyamYNtieiuEDWQrkPxhxvPLPCLJRIJRZNlixCfDSFyZganHp"), }, + { .name = IOV("tyIUuQxVweEaJ"), .value = IOV("INIowBXJG"), }, + { .name = IOV("eCFHuptrAmdOKFyvTxj"), .value = IOV("gFncNWzzDqMwIfQeGBraQGfoekfcVSQtHpNKIkdqrPpUeycNQcrsUN"), }, + { .name = IOV("bxSEL"), .value = IOV("RIphlEQpVrlrxnNHNAMpWdehbnomKNPRaXdUAYiXKuOKFuNLONFkuBRPJJQmjOAxwhRcYXhhowERu"), }, + { .name = IOV("wcjYVtcny"), .value = IOV("KuafCgdxWVLratKZImSjYVPhmNYluWcPKPcTivpxmuhvGFNIHDBRLiXGedCfDPKzmivbljhJSScG"), }, + { .name = IOV("xBgazEQgVvsB"), .value = IOV("LCfjAipxHNPAF"), }, + { .name = IOV("WxxkdZvWJfV"), .value = IOV("KmwdjfCQP"), }, + { .name = IOV("ysEbo"), .value = IOV("bXCWazWyTlovnpTsVkRwuaoYfp"), }, + { .name = IOV("EYoVM"), .value = IOV("BRwkOzMSrgRJgFWYNeRvUbLpanwFBnr"), }, + { .name = IOV("nYNsmZJZpPQ"), .value = IOV("AEQCqIwXhGAdU"), }, + { .name = IOV("siM"), .value = IOV("ypXOuhnCekpbTAY"), }, + { .name = IOV("ELp"), .value = IOV("qt"), }, + { .name = IOV("cjzDPBwZEbgDQV"), .value = IOV("bXpcBByLc"), }, + { .name = IOV("RNASTCp"), .value = IOV("SLyaIjPFckMuEDUDRKxUgSLkBnTWMlDgCsEWmSljntYRcoS"), }, + { .name = IOV("aNUEVAN"), .value = IOV("sYBCrvsRVbhrPReenyoPdKQ"), }, + { .name = IOV("uUrYYkPyTRAM"), .value = IOV("TrjNTdXJdFfCecNmB"), }, + { .name = IOV("KujpzzlyUWWhbDBs"), .value = IOV("KAAHhbDmBHoETtdwdWvMnfKAgkwwtEZTBxfxOoxveEDNMlxJ"), }, + { .name = IOV("DlSbcvjqKA"), .value = IOV("lNkwDbNYNlhpcmjtvnAIPMeQUdtdQVpOpJYqMobiskFSCSBFFlIqpGipilszXwhkYNulxCdJxWBtj"), }, + { .name = IOV("GZnLLExR"), .value = IOV("vbVWYgSQYgHsqqYoDpwNVBjVuWkVovmTsoMvqtPIptNYRFxnvm"), }, + { .name = IOV("rV"), .value = IOV("LmFQnruMNzDmWABeCdXhmDWAUMaIeKSQkeIoxmZHoYBsrNweFxBKQNXtOI"), }, + { .name = IOV("CXYFPPMZ"), .value = IOV("e"), }, + { .name = IOV("zkXUcWPZV"), .value = IOV("VsEnjahuOniXzQdKpwRteyqSYPNZifyqLyL"), }, + { .name = IOV("e"), .value = IOV("IyboOCwIsjlsfUGqEUEDfKGBgPnIjhQnYErq"), }, + { .name = IOV("rNAMgtUkmyHs"), .value = IOV("KXxFyqVyOOHXDsGkYiOJSYDmEUoUvFJanXPmxaOaFHvJirCnwjHzUxCAuvm"), }, + { .name = IOV("RgQD"), .value = IOV("CzgwJQPBSSOGcwkSanOEgyKoeqelsgtaUGKChZmfGqHjmPyqaHHFmWWX"), }, + { .name = IOV("GLMpokPrSiyWr"), .value = IOV("xycNYUjnPgnwJzbCJsgydGBGSACIYBfmRaODmOZDgAjXRxdEftdDicTAVREFmKdlLEvCypuzxAux"), }, + { .name = IOV("AUIhVqwk"), .value = IOV("JDxLubiQmFOUdaYFVZMDRcZbFvjevILMNFZSBfkhG"), }, + { .name = IOV("Fx"), .value = IOV("jzafJUoGargrllyZNI"), }, + { .name = IOV("nuaLcLzcWeUI"), .value = IOV("XmEYoMvZpNChFtCuAEvuJpqnKxHyNZUXZYfoWOmqiUqQYxLUKLqBwdoUCs"), }, + { .name = IOV("fGnuwvpOqMKaT"), .value = IOV("KunOKnickrqfkHKfqEbuSwiXPhrBQTwBXbuoKMDRgqxsAfrAiiSYG"), }, + { .name = IOV("zRSQR"), .value = IOV("UlFdaoSsxiguxuWJBWlKzMEynVnnBEefptdnPiadcZZhgPnCLkkPckEgNJKvJZCj"), }, + { .name = IOV("yWBUFpIABLTCFn"), .value = IOV("bhjTFoVyuPkdjzUYhenlnWNnXoVulimhedfjBM"), }, + { .name = IOV("sVfbVrzpUQjcjV"), .value = IOV("MWXau"), }, + { .name = IOV("xXETsYHbZfzGb"), .value = IOV("AHyyUNXkUzgAPuluWcPpKocZ"), }, + { .name = IOV("KCIxW"), .value = IOV("PlCCbUbfIpGtleiErJzIstrFqjDeVEkdALCfRPsxAcbTTzsjnMvfaGM"), }, + { .name = IOV("KWwrn"), .value = IOV("RXiUrkwqCVaNTSruT"), }, + { .name = IOV("MrggUyhtcTsaDhxqH"), .value = IOV("oCeFXkGyIEPNvfhKVzTEaysbgTfEsNpiiRpNiYlECOiNDwTTMpKlKiwhVo"), }, + { .name = IOV("jsOma"), .value = IOV("OAPAvvqocoRDXoGRQgXpwldUnSZYUVhIObQrTZFOXYxq"), }, + { .name = IOV("ueYLZwLsqMc"), .value = IOV("TjjvZCJBmKogzlomg"), }, + { .name = IOV("nE"), .value = IOV("QdiZqkmHaKNyWNDmfWajjVAIMiyCXUClJcPrvOazWbJYtbeEVrGpgOLozrZMgUqOrnSejjzKLnRUryvp"), }, + { .name = IOV("HvxFDLrhuKkiOgIsy"), .value = IOV("uZTECnnvjGSyJyBIhhUuaGmWqsAIGElBpTHxlqrHy"), }, + { .name = IOV("BFlBJvaOqAOBUahSLSu"), .value = IOV("PaNIvDGlaqMBywgSrUprlmihmFbywMyfzKI"), }, + { .name = IOV("CxYQSJUHIYhigm"), .value = IOV("uyIqvpAM"), }, + { .name = IOV("XjdusXbBrE"), .value = IOV("oNfPNfXZkmpqbOogxwWNwfQ"), }, + { .name = IOV("lw"), .value = IOV("JwCeYbVBZggLGDrgYLFtEFPLdJJmghYjeWStDKFoVb"), }, + { .name = IOV("mszeVaPXc"), .value = IOV("owSTEGlKVppOYnkWnLyYcxECTAEtuAKymZKCrCQHMOaRpNoSWDASAMDPtHoytVLbcwqqdN"), }, + { .name = IOV("uIDcoJdCyYGRvJc"), .value = IOV("gvcRdkJeDmcvUFnWCrG"), }, + { .name = IOV("hajXsSmFrt"), .value = IOV("qLlvFIGybuJqtYAomUPZJqBFwJtcRVNyeZBAOOxQlUCkUPZeKIIbWWVCrVlFyHBBwKNIGwbouxHjInRx"), }, + { .name = IOV("NBVqCGnWCqSLEptext"), .value = IOV("c"), }, + { .name = IOV("aqmkQMpuohmSKtFbEVRQ"), .value = IOV("MZAbmfQZMjhotTrfaaUASTXcjuiBRLKRBCatkZePYBBI"), }, + { .name = IOV("HJLciv"), .value = IOV("yzKVstEJSkRXfIAdyfxBYYcqlJhEFwgRusEcVnlXPxMVLvilDzWeI"), }, + { .name = IOV("PqudH"), .value = IOV("PqGPtPvrFzwUlOZDUaRKMbFqDzWybfpFToVKDOHEqgZMKaQdhpXvjeMIkjEYDAENRPrnLKYaoPuSC"), }, + { .name = IOV("SmiMLO"), .value = IOV("FpFEgeRwJmLmHIxdWJXDOuINCIrErqxKjVOCMkNsjyQBdGBryGxSPluIkt"), }, + { .name = IOV("VjJAtt"), .value = IOV("ioEyUtFnPqaYaAkb"), }, + { .name = IOV("hmga"), .value = IOV("QkMRpGofgySGhQZznRhXRTEHvRhnvmUNSb"), }, + { .name = IOV("cB"), .value = IOV("nmzwQFEislrJCYnMnzWcHJzcZkuVXCXZLJmImHkKNXeokZUsimsrmPsSnVWDYxc"), }, + { .name = IOV("jWeeeEbnfEk"), .value = IOV("jtNDNTeQOLVYPXhIcgUYiaYQYwuPLYzbCoCgFSwjzwLdqVVakLROojRvoQeGwFuFD"), }, + { .name = IOV("mFqqOhwVdknYB"), .value = IOV("EhyxDuzwRifiykfgSodkQComrlOultcfBcaclGeKENZyZFEDtrxIFdaUMoDQJgJgYNcR"), }, + { .name = IOV("xHRofQuqSWvBCf"), .value = IOV("CakQxgdVwXsfRZeihNnyIsiwqywQFHbVFZQ"), }, + { .name = IOV("KyQtCrUYBztyQUGLH"), .value = IOV("sTFHPUIpTEYsQHoYNNHcZVNGkaheMIpnvterADtxO"), }, + { .name = IOV("TpDhLxStLIZDw"), .value = IOV("TWQBCIQXdLkqgGiwgztVU"), }, + { .name = IOV("IiJiyVrIgTSJebfwvEhJ"), .value = IOV("QV"), }, + { .name = IOV("Ob"), .value = IOV("vOWSmhNefdwLcbeBOBgvfkxQKOuwdJubdozpYOKFTuGGLOLoPJoyorsZMQQIIXEUamGZfdQLETNYD"), }, + { .name = IOV("kPBqt"), .value = IOV("QaVnRhxndBESuEKxCXWBjLPpMNQu"), }, + { .name = IOV("qbpiPaMuMnIS"), .value = IOV("IldTIGQgQKahcyjlcETqTnJbHNVppThqYrfnJOdYzOuCLjznuOJEFyeEsZaGRNXPTOJMqWdTjNK"), }, + { .name = IOV("mzbYcEJL"), .value = IOV("gFFfwSLZs"), }, + { .name = IOV("VftZZEJhek"), .value = IOV("WCrfOXItybVNZRJuEsPODDCITHYfouNOSEEiXOkGbHlMyIxyhSeNfLlfdlM"), }, + { .name = IOV("Pxx"), .value = IOV("JoXuOLWEQasGrVKmVNIaDSqWApSMMyVNfcNNeXFlcLRnFgBCOPjO"), }, + { .name = IOV("zCpzcScQhehYA"), .value = IOV("VLdQMTUJyCckGojYPhQVEsIffQiQWhltEYZDhEqXtqAbMmuEvNYLOdUJcKixXMCixhRAB"), }, + { .name = IOV("Lz"), .value = IOV("qzGOxlgfdJBMuIdVBFlpQTVERhfO"), }, + { .name = IOV("ZwPMUtRru"), .value = IOV("fxdfLnTWErULGBZeqciEdydcffuhaHfYGqYhazcRnv"), }, + { .name = IOV("q"), .value = IOV("sCcRhzaIUYMXkod"), }, + { .name = IOV("RNWiwhsUo"), .value = IOV("TeWpMubUBfFJOQfYewR"), }, + { .name = IOV("pLt"), .value = IOV("OlVDrigCaOvhjQQpkBKozHqhYzZzpZpjqloZWBAFHdDmFmrijVUUigZxitWIEOCIoFgujhF"), }, + { .name = IOV("fqzGnV"), .value = IOV("AKmgBSsgOnzFkyajUamZYQbXzmKgZFjAnLGaaEIZagBCwqLRSghOYxhqucDm"), }, + { .name = IOV("hYhNnFOG"), .value = IOV("bJFgGmFUsATcqnRjQoCpxFW"), }, + { .name = IOV("hpEwuLmwjf"), .value = IOV("ZNYiDITzviZIidrZnfwWoNhleyLnJwipspascbgTkccqBIettozWbytNfSvDGNrkXJwkBMU"), }, + { .name = IOV("laKhlok"), .value = IOV("YyoogdYsxlQfUeHJEqmRzMKtoUTRPTPQoRyCEFSlOHhlHMNeEFeYKutj"), }, + { .name = IOV("pVgivKUIIihbfRKEnbQO"), .value = IOV("EljbkVdIYuUXDlasDzLhmVrQiwSnBrcQjCqGiIFoPjmvbnSYXnoGyNeTmLYOrcPqwJru"), }, + { .name = IOV("ovVUxUnwcWfCsoQx"), .value = IOV("oczGhxFtcGmficEnVpFXWpGcFGJIsivEUZzpbYbHhxCiuJMwarv"), }, + { .name = IOV("vITN"), .value = IOV("TYLMERkUExcfZhTkgQkLXBMKfnwUqMcSJQVjiZ"), }, + { .name = IOV("ONMcjqaJkrlxcbyxbXKY"), .value = IOV("FFFnNZFVTpePalQgVySDYWwrgDCbKQBEroeqhaDJZWxtTEcDAHIEnHwnItjlfPWrSMeDsdhZZyLM"), }, + { .name = IOV("UgPzBieLlFiQs"), .value = IOV("LrDwpmVNZLOwUlCHGFepFFznrLAalTfjSlmOnOFeuhYxdJZlSVkytrenzBNFgQvZwGWRXZGwQ"), }, + { .name = IOV("vACMl"), .value = IOV("uKjWix"), }, + { .name = IOV("YiTQSNsryqf"), .value = IOV("YaFTInJMQuJvvjEizBkHMBHzsxImLYWIIPiHBmjeLJaQnKliDSlCpIO"), }, + { .name = IOV("oUshIiLOXGSLOzcWPVOn"), .value = IOV("rwyyWjUxRvjmpZaHOgqSMACejTtletaNpOuTYDkEzXzujnZrL"), }, + { .name = IOV("fpb"), .value = IOV("nCoeVzqiBzCMKzpwZrYZMMaRsCQpVBDSJssulffSSwlcqNAgBZtVwnPFOIacQHe"), }, + { .name = IOV("MInLXiQOCVVWGrjPPf"), .value = IOV("IiPtAuODbQsHtPaFfi"), }, + { .name = IOV("ccLJrJMOhTTyMWnsU"), .value = IOV("UfLRJwzxDowIvyNZEKQmMtcABRYWYSxdwysMchNRU"), }, + { .name = IOV("tTgfhz"), .value = IOV("glJeOWBnZFHsIGbBhJHqAmMpYbCWssOMDMZiBQuCAVQbrUpXeUpEK"), }, + { .name = IOV("xvevlGT"), .value = IOV("qEMZXIccaHVbuNsOVBvJPXbzotewUWt"), }, + { .name = IOV("HHkPjlhkuH"), .value = IOV("uBBgvMThdbfcLuJGBzKqlyOYythknHNYCgFJyIkzNOmuJdNjdHQJbsyqdfsmvglQEqrvzlY"), }, + { .name = IOV("JZG"), .value = IOV("Q"), }, + { .name = IOV("WfsUAxepKmhcP"), .value = IOV("iBalIlCmlgAdXCYQXZFqKnSQ"), }, + { .name = IOV("EZWjD"), .value = IOV("DUhlymDyQqpHKvXsecKqzjUvaICqAfBmWEOHSkIGlZFpnmYObAmRtYANXm"), }, + { .name = IOV("BXaojj"), .value = IOV("eEtTjUJeoVscgEavFlc"), }, + { .name = IOV("WyMxg"), .value = IOV("iDVFl"), }, + { .name = IOV("oMYuLQcVcm"), .value = IOV("GHnpyiSJSFnuMEvTONQgITzwigBMvnHWESdhTOuNmcCdFtMAorfZhuAkUih"), }, + { .name = IOV("CGdLTlHRoHYCslvPxeZ"), .value = IOV("SpeP"), }, + { .name = IOV("yxFvCSc"), .value = IOV("BZJHvYIbhJlTNtwOMKwbjYFFlY"), }, + { .name = IOV("zDk"), .value = IOV("tnvNmZqtLBUxAQMnfRHc"), }, + { .name = IOV("qCaNZAqeVhXniCfdE"), .value = IOV("VV"), }, + { .name = IOV("FxtvKjgfmQin"), .value = IOV("qucttfPjeNNJNdQOMVSHlSfK"), }, + { .name = IOV("iwOrXqwu"), .value = IOV("qnnqHhsslvCHJJglzaqNsDdiC"), }, + { .name = IOV("iyFbxrifkddxhOltu"), .value = IOV("zEdF"), }, + { .name = IOV("TSruaNbPlbeMqUgnLRIq"), .value = IOV("stemDAFiIGTyHqFdoOpmMRlfEnCcTWvVlNlfOeuHSttcvTbDWrTnELUNepakkYFwgJKToISftwrUPPU"), }, + { .name = IOV("pNPUHoKivcaDEjSsvNXa"), .value = IOV("xButwFrsrFFyKfPuYnVsSmVxEXQJzMbyXARgyCVlOzcYdImg"), }, + { .name = IOV("GWjSCKVgHdm"), .value = IOV("Cd"), }, + { .name = IOV("WKslTjhi"), .value = IOV("jaPGtJYLx"), }, + { .name = IOV("GNTjzGY"), .value = IOV("zKCVuQqxMhUO"), }, + { .name = IOV("g"), .value = IOV("ZxzCPEYLfbEeccSUdltlofjANZdNAOoIfxKmobuDRZdtfKOxIeA"), }, + { .name = IOV("EWDufXt"), .value = IOV("GNPjANosOQHUwMvlBxFQFkkfGbKcEk"), }, + { .name = IOV("VHAZ"), .value = IOV("ZdkRnIdZYmNyFUBlcRcB"), }, + { .name = IOV("uqBBXQmAm"), .value = IOV("dhlgzsLhbiTRYFTQQpIFSCTtvufcbQMGJOzqcdwYozFEPUtIFrdtrYpVKmuQjTagUW"), }, + { .name = IOV("TFUnDGyahINlLXVFalzr"), .value = IOV("iCOMceaGMcYBOzSnqKYYDRcgG"), }, + { .name = IOV("IKTlwEQYQrv"), .value = IOV("pMyJqSAOhmdKOcYqCoIzqjigBCnBlPpLX"), }, + { .name = IOV("DLkzGYWyNx"), .value = IOV("ySJFjoutNuavXCoCnSMqQrhpPeUqwJLtixeBqUHZw"), }, + { .name = IOV("nae"), .value = IOV("qGnNUBMhoKIffuhrrKGdAKmpRiPvWqySkRhnufUtJMLYyoiSSGijvWMLQNSwOIELUTPPmsRexFjZts"), }, + { .name = IOV("vyXWGXEurQqBxp"), .value = IOV("vaVDZsxUcphryrImQqArjoMkzOqvYhkPUydnp"), }, + { .name = IOV("YpTliymBkFzzu"), .value = IOV("rBCCExPzpoKbfpZraXIMTJTZp"), }, + { .name = IOV("pmieMzFgEZxHhj"), .value = IOV("NjwvFCyGftCojnItsgZwxUcDFZOfrDdRau"), }, + { .name = IOV("NTOxNRi"), .value = IOV("HhfCfuinqAaFPjQaXLmmSENRbunTFPxODeNNLZsxksxogkmhg"), }, + { .name = IOV("YIplWMlRSnyy"), .value = IOV("nRHCKVTBDUYWNKcmcRareKgmWFuTankAYAJHuyYBiaaqNrzHxGG"), }, + { .name = IOV("qDGbvP"), .value = IOV("gDXpHVPslbNDsMPQqHnejrlBjqrU"), }, + { .name = IOV("YUGntrcxvU"), .value = IOV("bjlLHVQggNDWDoQcLmmUQvixAMKzkrJuAAJuePpbdsdpofKLq"), }, + { .name = IOV("tBtdOvVh"), .value = IOV("zPmftYVOJvu"), }, + { .name = IOV("rlVysIt"), .value = IOV("pqrmmVyYXQjQtcNKgDhZFleHQGPvrLXPYreqrAjvyawqlOQO"), }, + { .name = IOV("ldoshrhUeVqLgmAJJsQC"), .value = IOV("ZnXYdmuTADzURRCisbsgdIegbpIPO"), }, + { .name = IOV("JzLlOQrO"), .value = IOV("DugmkOuUnIhfcQLEpLxDmTH"), }, + { .name = IOV("zpwhADGZmlOh"), .value = IOV("AWWlZDJZjbORoProsGkQKTGqBVwMlBhexLhQ"), }, + { .name = IOV("zClrGxHpCfoCpDFIpi"), .value = IOV("xcpAyKxkEKmYDNTFbweoYrkSSWD"), }, + { .name = IOV("fvGpLvMlPjSSvDCNK"), .value = IOV("uWzjhtPIoaNpBmWcroQdUHnBuGFxxLLeGrxPLNIFUMfcIBKuutBAUQVW"), }, + { .name = IOV("firbnGxlCYVxQO"), .value = IOV("jFsHdGUsnYQLeyrWnedZXraSPOOtaqhdxjKOXWwgSzJjmpz"), }, + { .name = IOV("QXcr"), .value = IOV("lztQLDNIMlbwbASCBbZloFJqLmPntIsMq"), }, + { .name = IOV("BpzDaaNDC"), .value = IOV("GmGWttdVUdyFenxicSfAjfbelNk"), }, + { .name = IOV("V"), .value = IOV("gqGrWqqxuqfiuuZXvXrFTRbNdoJeLGqfcXfMJgpxDvIRGIBmPctLPvaarMqykbbPAPcl"), }, + { .name = IOV("k"), .value = IOV("FREZsusazQAqtzarxFvlqyeQJFoVuJobQSTpktGodqJBAfaYl"), }, + { .name = IOV("a"), .value = IOV("yJFzPZvwGqQIiBgZsZKxgleKzkKnIjSUGeLlfLZxzsTUcTOnXpGGfmKat"), }, + { .name = IOV("XekgIBIxXaHt"), .value = IOV("bmOmktRxWncNJwIBQMXjjBdbWOhVyrSIzJdXFuegNjifdSmGJUNRdHmzdjF"), }, + { .name = IOV("kXU"), .value = IOV("VnBTtwTjMWnrVYeoWFFcaJJdAREooqhsxtDbQw"), }, + { .name = IOV("UpRLXCYSsBUUJsJ"), .value = IOV("YOQUxDul"), }, + { .name = IOV("aqDWotTlgvIKWuDHQl"), .value = IOV("SPfvpN"), }, + { .name = IOV("gNMwziB"), .value = IOV("nubWmiWnlpFfacSCPKyYuYPWOYxYiNEOkuszDlYRcBwibQBrHeyetVbLcpwhDK"), }, + { .name = IOV("rCHVRtQbziAjRC"), .value = IOV("gUamVKmXyPrYMMUypSzpEHKwAZtHpzGoSzosYGBV"), }, + { .name = IOV("raulWkwt"), .value = IOV("CducCLavHHSElpQDofXFJBzhRwgwZbxYdXbIuROmstyiYdNpeQxReuqChdMxiiPtazSmsfGXlSqYP"), }, + { .name = IOV("ffVSsPQuoqwCvWZQM"), .value = IOV("NRLGDRQegGsImkGmSSSReTOKLysPkzBClIvxHkDlqMbFSAQsOpxcEZhusLCEKuUIgLRIyYHoDYsG"), }, + { .name = IOV("CeSbNNpev"), .value = IOV("KBaNVFRPP"), }, + { .name = IOV("oRPPpqTsSFB"), .value = IOV("nrBvRBvreWcl"), }, + { .name = IOV("GNOCdvkyqVuzx"), .value = IOV("odLlcopaznrboWcIVmusYOnZGbThlpxDgvWpZgtwytyjyhvgdcGvdHGBO"), }, + { .name = IOV("TVxnVErIChjqe"), .value = IOV("tpIWQHzvbNZnQtCCzWxiyxcDuawPiCEbsLmSAwaMGTVMH"), }, + { .name = IOV("wMjgjwEhSbTNzwyiTKss"), .value = IOV("rwnxKfIrbzPTbvl"), }, + { .name = IOV("LxLwdMzWwxojrnABpkC"), .value = IOV("EWEAlemDPYoNFxADGWCEHPrYpIelSurQFOnlCCwWluCbVrgokUVFvTZILNkbexp"), }, + { .name = IOV("xbp"), .value = IOV("ByoevjmtmpDxxqzHFalwTnNwaKTjlVZDviddkJDEWXz"), }, + { .name = IOV("wfbhujtHrNv"), .value = IOV("FjwlvsDWPCTMfvejvhtBlaJvCFPNcvMNRyDCFuLZAcrHXKYlpzztyRXFVC"), }, + { .name = IOV("M"), .value = IOV("YOYbnuhcgx"), }, + { .name = IOV("jmkuyJUuSLhIaVRRmb"), .value = IOV("gRicdJGksXyjuSozOZfIgsNccYVjMmgUGp"), }, + { .name = IOV("TeiIBFrrJRR"), .value = IOV("WknIjksZLgJiVSjZIkOnzlkJuLYeJYKNvhpeukwXoMinR"), }, + { .name = IOV("xRYgaTHxMlqdNhN"), .value = IOV("SGWWpNEDIijWWaMwQiUZdWJcKVEUJGfwOFRkHduwmKfsl"), }, + { .name = IOV("fADGUShqNjPLQhFmZd"), .value = IOV("udXapEgoDmkPVzBZmqZVUDGGJgfmScuVYMCVzwyxkWGyPhIKUKIxOSCqgIfnmIUAgAdtTQaBOrqx"), }, + { .name = IOV("GQbZukKeV"), .value = IOV("tcTvifwfUdmFW"), }, + { .name = IOV("yDHHtKrQnybwUZYHzUO"), .value = IOV("fGT"), }, + { .name = IOV("XJDMPOefMeNkwhaQo"), .value = IOV("kiZSzkgwsIOhNIevvuzAtuZnYWafHarfeSLVLgfzZCwedzniHhFLasjZjouEZOadgT"), }, + { .name = IOV("Y"), .value = IOV("uKunUViOFQWCsTpXb"), }, + { .name = IOV("rBbN"), .value = IOV("JqEvhSQfmqjEoKwDoHOUBgLrEkyEdsUkJLwJhPtEewsXDgHSuCA"), }, + { .name = IOV("WDlXSuakJQSU"), .value = IOV("tPXfJoJgeZXCVHUv"), }, + { .name = IOV("VnYagwKqLOe"), .value = IOV("WJKdRqjpZNYUXNvweVsbNcYKozTXRlRUENlUznrcsIHkDWMFYoiYYPvZIOImpwfKn"), }, + { .name = IOV("UgrzWaNAsz"), .value = IOV("OCvPMtPxfnliiwNtJszVleBTOeLAbPYXDcsuiBGWtApgKHySsPW"), }, + { .name = IOV("RaSjZdwK"), .value = IOV("whupLsPRX"), }, + { .name = IOV("zCwenMIyNaGl"), .value = IOV("kZpmuZWknFCAlrKjrEezLtSDUsAiKbvtNofRvGVWSIwRkfAJIeeCAZwiiRVgoSyEZ"), }, + { .name = IOV("TnEWWaFGzzQd"), .value = IOV("iqIEYdVYyRayqvkHERFgdkqLjYbuEEiOg"), }, + { .name = IOV("bwKiFvsoGb"), .value = IOV("zFEOtXkaLrQDeIrRvZbpbBNLlZSvVRfGPRYXZHURVPlhXjWOBKDD"), }, + { .name = IOV("KWPnOPlmnogIGysa"), .value = IOV("whGHGUIWwlQMRAEZNbgIFoRkTnfRQpmTYlaarQGJondfSkGrHjVsOxmGbWM"), }, + { .name = IOV("NToPBRqIsKmL"), .value = IOV("ydRdNyLznJGnCxVfkFauYw"), }, + { .name = IOV("HjAhhQuh"), .value = IOV("TFTGgyoFoZWlhvDXdsAtZTXGcYgfjOyGWXCLxSnndQTmYQTxnOJsOWZmSMpekOmZosAv"), }, + { .name = IOV("wGHBMCaUhReonwLFb"), .value = IOV("XgvMMFXylARAu"), }, + { .name = IOV("uCeQLbtvRJARPWeDB"), .value = IOV("PenNwCJXAPivnXigHSyVlERqHj"), }, + { .name = IOV("nZlUMe"), .value = IOV("IUmzYZrCebOeFHfOV"), }, + { .name = IOV("NIBGVseknNEWtwZXaAt"), .value = IOV("xJFqKedOcAAkpaKjdcRORSFYuIKJncSZVmNtvgQfnybgENQasjvAImbmXspoVzkLLylLngsWKAwGmyAu"), }, + { .name = IOV("RXEipSAQTm"), .value = IOV("lYxhOkAxIfOzwPaHLfSkLVKdazHpAczSqlQqAMdJWHppfCTkPaAURTvlOBZtTIRHbICGyjOPWaF"), }, + { .name = IOV("gPpuGSQcZZ"), .value = IOV("KlhC"), }, + { .name = IOV("dZUokszYbAZk"), .value = IOV("IusRNoi"), }, + { .name = IOV("kUqlYDgHXn"), .value = IOV("LVRajOZixngJmsKiBGdJIowrdfZGOrBGcbYRMOwHX"), }, + { .name = IOV("nbAHToMaeURsZGrKXQOU"), .value = IOV("NnpnVghkoydcBRsLaJgeFJzGwm"), }, + { .name = IOV("GsULvGkWOCGvNdQT"), .value = IOV("GngzVzMYHEvzPZFaPJ"), }, + { .name = IOV("JuqsZQFROmu"), .value = IOV("NFrmbNhJMNhTSAhwnZykmHvugszWNZTgPxlxIbykfpeXyApNBVzVoJNukSDARHtXwTPStSraRJZYlClI"), }, + { .name = IOV("IteZV"), .value = IOV("igJUPJDDDIuIhDICrBxitAVrpgER"), }, + { .name = IOV("HXdgifhEUD"), .value = IOV("BForwFU"), }, + { .name = IOV("NXivZkObFX"), .value = IOV("MGwQwjMGnWSXGogLNCGRhoELqgjGwn"), }, + { .name = IOV("RWWDcC"), .value = IOV("agXErbUjSbRLZCUMmFWoxijQdgoVVVmUkplBEnYmiQBTjeFhuBEFXzrlKsCZFutAmYWMevFW"), }, + { .name = IOV("TpuBBcwWfNUIqm"), .value = IOV("PcBQzNXxASPzkQgUFWyLsFzEyWC"), }, + { .name = IOV("upDjNhjsuxeDaeEqgX"), .value = IOV("yKrcgbVUSnnRTTusMYHtMjPfQcyQQzkSkZqvIvMazOIDRXfuaMqRpEGrkzFKQ"), }, + { .name = IOV("unfjwvqK"), .value = IOV("cgXptMQCJIAWMjvdgnAFGpLpVLByDpjIHYRAtgvEimUTEQFFceKKJDXNYTnEoKWJVuXBrRKlkgYsaA"), }, + { .name = IOV("rUbBcvFJ"), .value = IOV("djzIavRl"), }, + { .name = IOV("kPP"), .value = IOV("WYvudqKxIIttcTpfyHPYAIrdiosTcTUbHgTIhSGXPNby"), }, + { .name = IOV("cFEIsuZHLiyRkKG"), .value = IOV("joPBfxqDMkTpqMTzIBbZcLWTgqLkbtCXWKfAGqCZfIIVDW"), }, + { .name = IOV("BBXxT"), .value = IOV("DPrhgPopMwnNkKrOUTGWeyVUMemWFHXXxGifHbmadWqxXyNfIXSM"), }, + { .name = IOV("bzxeaJjGIxZToBkaW"), .value = IOV("sabdQFNiDxsJlKTaysdctqDqOAGvBcCUtgILMGwbNOOIWqTghNHkoCYOYhRnbOJdYeJyFVXIkMkLW"), }, + { .name = IOV("eLGjtiHvmrDUeD"), .value = IOV("E"), }, + { .name = IOV("WSDDfAfVX"), .value = IOV("OsomdBZWyPzvn"), }, + { .name = IOV("JbSKcTe"), .value = IOV("oXmrjtKUdeelBuFuMvLauaFGvLhMSTDJiN"), }, + { .name = IOV("DodZOFW"), .value = IOV("YQYEcrRmuqMaEJfXHcfRJRindUtTnjmzNlWyTSREM"), }, + { .name = IOV("wGDFKVJa"), .value = IOV("HPQhZzFRHYXHKZpckZiJmnFpVKTVRgRKArG"), }, + { .name = IOV("R"), .value = IOV("ocUhHyKxWoJHlKEAdnW"), }, + { .name = IOV("IU"), .value = IOV("dgdnsbDAUWjYtYSfazX"), }, + { .name = IOV("uDbgwGUUrYyDn"), .value = IOV("MUDvnttizrXtOUaUjPlhiEpGvivUoeuSFuaZnMfuCMvrSqsgVBZPzNjZmBJKKlSOcSojVpvc"), }, + { .name = IOV("tqZk"), .value = IOV("pGmxcHddUBTkTkDgDFTsPLIfrcpLQluwQivJpisyFIjbuoIVYcelAXEshRLbHxGNMyb"), }, + { .name = IOV("EINeYYw"), .value = IOV("sCBtUegaFVu"), }, + { .name = IOV("dCP"), .value = IOV("LITICyXfZEgMxAYzVNvcTifZIHWwQLxWfZjTSpwETmmponVQVSA"), }, + { .name = IOV("r"), .value = IOV("wkTeqmmOYzSYgEwLYARkozSTKwCeDevevZMtvNPzxzWVsCiDozuerm"), }, + { .name = IOV("BDl"), .value = IOV("HYBWtvtIOYPibUHRjyOvygdecvkqovAsHikMoREgSnjKXCyiHThnCjgQNV"), }, + { .name = IOV("IpeAqxx"), .value = IOV("oUECPohxaPDvWfXGoCNwympntHPCyLnfNKFJmcMCSIhvZdmsg"), }, + { .name = IOV("LetdTqKDXDKLxhtJw"), .value = IOV("woLJXYQsVpTwHMHTBmYyzHcPWiMmWYuhSmMtXXubmOavPbuNMZHN"), }, + { .name = IOV("fxgSqFdxsSKhUDlCQY"), .value = IOV("hzFLiDUSkIlditXAEnx"), }, + { .name = IOV("QClr"), .value = IOV("iqSbaMOmBgDkUeNlyBfOpUhwgkUxuc"), }, + { .name = IOV("fzTzSisdh"), .value = IOV("ETbxqGAenNqouAmYylaNJtowVVJADHJaEOivZenuMLpAcOcuOXzVmBtTCuQolkPvGXFhPt"), }, + { .name = IOV("GeYpRxnoPuobzsu"), .value = IOV("sxOxkfodPtJUxo"), }, + { .name = IOV("rhERxjtYKdjlsQqxBnuI"), .value = IOV("ZLUaftLBpcoKevebluTgXhzMQKuGMUCAYLlcEDQy"), }, + { .name = IOV("XxzjAugSH"), .value = IOV("YbjUdRMoSycDlfAbgllf"), }, + { .name = IOV("GhkhJfzxNQAvYBnIz"), .value = IOV("UzlYkKarBuMOeOnZzOnXjoMsHh"), }, + { .name = IOV("YuXYRN"), .value = IOV("UXWXbKgIs"), }, + { .name = IOV("zDi"), .value = IOV("aYKhZNQOCuVWvneWcJIkJGpeHQVNwARnLBzAujQJGNHBCyzIpfo"), }, + { .name = IOV("yaYAVO"), .value = IOV("iweINjGpgutPaDFXuOhKQaaR"), }, + { .name = IOV("gtp"), .value = IOV("suiuRHkBIXAyCwtThrfkeHECYdkwIDbfDRsPhOi"), }, + { .name = IOV("bbLtNSDUxYplmlMhv"), .value = IOV("yNhZiKlZfMCVFtAuPNuvAyAZqoHLVGGLAai"), }, + { .name = IOV("VhkcOwGucB"), .value = IOV("PjjsAjrAMpmGOYsCurxrTuUegtBxLodmwMKbukpvaAhqFvdggCpZDzinXvkxVGCVgjMiFCr"), }, + { .name = IOV("lSQfF"), .value = IOV("TQFNNWASZVSxOWlRyzuDsfCpyKJXqhoWttAQLTcCdfUDLJZuuIPJuxixrEMAszrbYjLrNBgrFRiFHJ"), }, + { .name = IOV("gHVKZuiQGKusHdV"), .value = IOV("uSxMNTvfsKgDlfhmjuQFXjmnCNjBfsucBMKBTCchvcCzdJagOCkYjZ"), }, + { .name = IOV("zzvXNSjohm"), .value = IOV("diRCdhRXFu"), }, + { .name = IOV("C"), .value = IOV("jm"), }, + { .name = IOV("KEEUerQgFVdHvobTrDYL"), .value = IOV("iOONsGiobMVrYDTIMCHnhEhqxsEiySgiybClgradfOETHolgpaVTogAvraV"), }, + { .name = IOV("BFneGei"), .value = IOV("CpOFEXWPnPEyLJxWGRpMHbBTZFkgYCretRSaJmUOleOxKI"), }, + { .name = IOV("pAlUiX"), .value = IOV("GbGubmGxftqp"), }, + { .name = IOV("YgRZLFfRuwx"), .value = IOV("CXNNnyWFJkEyhrzZXGQbbZdPrUNjOcGNnFlXprbzrYrrSWaUqTqOJYdTrNWidnJLY"), }, + { .name = IOV("lwmXXTxlSTkAGEpzCuM"), .value = IOV("xogrtcnmljFoFXuAlkPDoSPGxaQlaVuQIOTzKwKLuNDlFlhM"), }, + { .name = IOV("gWaQFUkgzkFVFK"), .value = IOV("AGrhmtvKGAvNughOuyMvqgy"), }, + { .name = IOV("gqhIKlohPeeUMRdIy"), .value = IOV("XhwlsbiYwVqdxdIlVhqxlzKXEacyAXXEMomLAngMvwujuSjcfwotBbDFcAPGEQetjNBLfLcCtpY"), }, + { .name = IOV("XppXRlSX"), .value = IOV("ysVkXogkDQaODlhISVnmHteTHFRzzLMWmBQMxxmQfhjimgQPoRpunEIZCZadcSTZdHKLRPbskRppRS"), }, + { .name = IOV("pHr"), .value = IOV("uxfCXRvrydpDRupzJyApjBeCouhSPMzlAq"), }, + { .name = IOV("EkvALaiwDhImGo"), .value = IOV("NBifHmxaqRQuoYBnYdHbfPAnrldxTdOylxpdYbkCAv"), }, + { .name = IOV("jk"), .value = IOV("rCrIzAGJuZyURPPLmFPyDGazQeMPdHOBUuAfmbnVFQuJUhKutp"), }, + { .name = IOV("qxTwiGOArdwvcb"), .value = IOV("gTDnVOKqzCZruodlrySkkECWZyJYnUBkzDeLuWHEnAjFmjJOoRFCxljxSgnprYYJbi"), }, + { .name = IOV("UlVuQuzvDaheq"), .value = IOV("pxsMXXnBxTOzKWrYFBVpjXvHwWjcxsMKoMlOvPrdRajnWhgRdxVQGGjtmNEulVFbAjlmspLH"), }, + { .name = IOV("jEULBUDYFuLecLSW"), .value = IOV("EcFpGKDPlpyXXzPa"), }, + { .name = IOV("sqcMpp"), .value = IOV("RnmHQvUWcmQeGoCAeCDLzQFyGRBLnJnxqBrYyqSLjY"), }, + { .name = IOV("awsQDhG"), .value = IOV("etxabSANbGiHikRvpzDLaBviVJMNlnmiBTwUWHcPqclzmVWHhtYrQIjfaGbpDYJuAwr"), }, + { .name = IOV("vZSdmPdOSwxQGkwj"), .value = IOV("DcYHMJUophMNtIGFRUsUJfKOvxJw"), }, + { .name = IOV("rlPFLmzriyFoognJpspJ"), .value = IOV("sgAYdGGwMYmbhuakCoMMOWmuoROJeWnDPKWdeUqWz"), }, + { .name = IOV("NOcFZgfrUhWeq"), .value = IOV("SkkvS"), }, + { .name = IOV("emNDlpka"), .value = IOV("ubiFaCiHlrDUkpetzNIJdBOTSDRsHOjXchLgCtALAFAsmqQQzb"), }, + { .name = IOV("vSAuzgywfAGp"), .value = IOV("RXAitFNoxDhPoBXcMeTkyTwtiTDwjsLklUdbWJkUrgaZwEftuzYnsrgZqWkTpCvXtZ"), }, + { .name = IOV("fiwUZn"), .value = IOV("efOjTPTknXDYhkeeVWbEZvTGdMIGyXPTumPHasjBNSJLmNLQVpXS"), }, + { .name = IOV("cvKywdbhVAIm"), .value = IOV("boxMbzI"), }, + { .name = IOV("OIS"), .value = IOV("ZkrzXxdIPFXpWchR"), }, + { .name = IOV("FcXsiqLaLUYK"), .value = IOV("rYrsEehYSoWJP"), }, + { .name = IOV("vUdFTlBa"), .value = IOV("fXmRtRkOflvcLRCWrbgcuTiuLCVhAMWcmdfOIlOwEvYtVtZVBrMXaGvOhTfulz"), }, + { .name = IOV("wRKUpRrbqG"), .value = IOV("qtDovZEIQKchHrsJKGeyXqtVoHFErNHkCXuXWiolBZhLUOJKmvEZoPSMP"), }, + { .name = IOV("yESBJvy"), .value = IOV("BSEAksyoBXOljIEMiKVTqBUReMrfTOJHelYczVhmAQaogEBMATGABANRHa"), }, + { .name = IOV("STnVLWzFUqRdCcmtwxYc"), .value = IOV("gmMGFHEjzgvxZktmQoDEFptRzLpWuZRPxNSQiGeKh"), }, + { .name = IOV("dgjEos"), .value = IOV("dm"), }, + { .name = IOV("cbWqUKatRIxxfjHftI"), .value = IOV("dDNgfBJRWzzZycqrDZEHERPO"), }, + { .name = IOV("ehNgNtntUsbDrjtSpOs"), .value = IOV("wSllUWpwtFuXiMLFaWNZeKnCAOUzFWkevMQirswHZGYsF"), }, + { .name = IOV("fRKxGDNQrc"), .value = IOV("fUHfL"), }, + { .name = IOV("BZIbF"), .value = IOV("kwEtdMKvKNHNJBquHwuXXKWphKYPoOxmtQLDrxioFxpGxOzAOCwpbS"), }, + { .name = IOV("kDDYLRHJjOKyJijnwd"), .value = IOV("owsGuGNUQXoDpwTSmxRpglwAwPaxPGZwByCdqiYxNDpedjAuEDLRpqMBqTewJUxwKnBcJQUKYTDjIdu"), }, + { .name = IOV("FfzvhUH"), .value = IOV("CVUuINwIhqQgOCGZwyTpMpziXbShdLFZCcphjWFErAt"), }, + { .name = IOV("yZXSRDZDcU"), .value = IOV("TbFqUqalRuXTbbXqarwbeuUVdgaWSpYNwTKcD"), }, + { .name = IOV("TnBg"), .value = IOV("hFkaOuFuIpxtDtusASwdbqRsufUfDIsNWZbKvkXinJwZAmoazgMHsCZGzsx"), }, + { .name = IOV("oiybWiJH"), .value = IOV("nSDaoZBNnHwWbBIYMyQgySoPqSqdyjrTaLPdVcTNmyHoXBhRzXMbMWZRjgNPvR"), }, + { .name = IOV("RMCsfkwtvu"), .value = IOV("FDkVPCbPZSlwzIwtjsnYLwxDPjXLIPDjnWCWUFZDsTDajhKcYddfptYHDKKEGpDYFPbQuCD"), }, + { .name = IOV("jO"), .value = IOV("vLnpRsoRIlSuqkulXNhEEEvupgsSQXDlAyYYeRGDWaaNCHhfPxhXpWcKjsDqivesDYKjnnsaBUNuCsGQ"), }, + { .name = IOV("x"), .value = IOV("GTTCHRuXJyif"), }, + { .name = IOV("XAEDChkKqpgWWduHac"), .value = IOV("hgRDWzHOVqWjKjFcdCcVzh"), }, + { .name = IOV("GM"), .value = IOV("OththxyDLdDByxEJYtXOjcSaFhuGRLwfiJZvzX"), }, + { .name = IOV("EC"), .value = IOV("cNOfoUoqlWWFxKgkZcdqqKvlNOjqelLIwrprxYpSJhwjqvYkjAyTtN"), }, + { .name = IOV("gvHTApWqxYyO"), .value = IOV("qulspZdmEbSOtGZhmgbOAjcdErGuwGpfjwHDkuhzAHzxfRalkHStGHD"), }, + { .name = IOV("LOTnDCOSUbn"), .value = IOV("SpXgPUMZgjnXyFUQXAgwtENvdSZevmllH"), }, + { .name = IOV("pWnDlqVZRhIFRUaJsZ"), .value = IOV("hiIkmfZaAdpgnJMhBBVfwRXBIODVTkLIiwNHzKvnmcGHYSM"), }, + { .name = IOV("ZeSvQEdcPs"), .value = IOV("kvdyJXzHQcXizrLPNBgaugTuBZfMGjavwX"), }, + { .name = IOV("jBaDa"), .value = IOV("mErCaCwYfbfMjjZuhevv"), }, + { .name = IOV("q"), .value = IOV("gxTiysYyTKnwCztKjgLLbkcuhqRPmdcITGCKgmNyLyd"), }, + { .name = IOV("ZnbCXJwZWCPWclbuw"), .value = IOV("metdiyBGuiXi"), }, + { .name = IOV("PtXSeLBqNl"), .value = IOV("aCOTqkTheOpXkZplvliUllAaSKDVymckgVZtqJrQToOKViZiaLvtCWBtxhosGNfzFbYvXJjmaJcoGjK"), }, + { .name = IOV("GlB"), .value = IOV("GxGVsgYQkMFDApVrnpzHBnzxlMdoPmFvmAkDQhNhENqjkJbKX"), }, + { .name = IOV("GCtOHBRfdOIZPy"), .value = IOV("jeDJXhTaaNWaKALc"), }, + { .name = IOV("UlUDKUVuSXjiOVziU"), .value = IOV("eUayvkCOuojpndUIOQswYxhwnSSgMwAbrSRYMJOYZeRUxOtOZBITjiEsCTMUsOGvLXHoA"), }, + { .name = IOV("GcehOVEeINdyrRptiG"), .value = IOV("cNzSocdwGtbKJ"), }, + { .name = IOV("Iq"), .value = IOV("ujQpuNhleuNMdpApXbbyYYqJdLdsyRESMasdqaxDfvxqRhmgLutbsNXFhRGsECQksmjYpOTnZf"), }, + { .name = IOV("j"), .value = IOV("FTewovSgXsSLXHsEtBLWVrEpIZUzGwxOShqGfgvICkxhWRMhseEnT"), }, + { .name = IOV("AUbWWLEjAClTsV"), .value = IOV("LYwsxxnkXWFvmJbhORvIYzktQjzqh"), }, + { .name = IOV("cxgetFWeUK"), .value = IOV("jtesYQYgDBVkwGCeuvKtMbWQh"), }, + { .name = IOV("EIllXuUXYek"), .value = IOV("vcbyfoUDxDlJoeS"), }, + { .name = IOV("NHukLmCLtjIyqecRP"), .value = IOV("fCxcjVKfhZpwZQSsbIaTlONkgVKiCfNvLSlXboma"), }, + { .name = IOV("DDTSAqoJGvr"), .value = IOV("pJJrvlAVDIIWWoOochCfYMUlqQkHhMqZPzuSVgVZZjQhMStTocWHLSJsNgqyGV"), }, + { .name = IOV("jguPFksT"), .value = IOV("mmGUpJbokxdonvjENWjXdNbMnfkdoVRYOCTHJcKoSQDeWCeUrSfmNiT"), }, + { .name = IOV("SEQ"), .value = IOV("BYGsZbmmGuWhiwQwqNsqIKUpsoAkJDqILycqJJYsxVFhfadlyVzCqlQfkOScmzxzSCdqVrz"), }, + { .name = IOV("AtBxlEkjBexO"), .value = IOV("ZVDWQqtbRSZhRuWQNWqYQeMzPdiACdHLVhbsiaZHlhVPpqrISTPJMFl"), }, + { .name = IOV("VctsRWlZl"), .value = IOV("jqgXgPFRYqQdSkYGBOOPsLtJgfeuaRMoMiIteKPbyQocPZwT"), }, + { .name = IOV("aYZYvIPtBqSSFVD"), .value = IOV("klWUlxfEjqsHcpXEvbtiWNBSb"), }, + { .name = IOV("t"), .value = IOV("eotqwPdhmLhujFusFdwtNjfvcASghdpWZWcRELmSYjqCkU"), }, + { .name = IOV("hOjpubkoaEiyeY"), .value = IOV("xXuuXUvJpLwLUFhrEEreUendfpUFBBVcvushPJZxShTvqmYONuFLnJeBnmpoNwBcrvMqOMJOEKqzXP"), }, + { .name = IOV("TetN"), .value = IOV("gvMIhbgLixscDTeBaDSkJzduLY"), }, + { .name = IOV("rAU"), .value = IOV("zKnhWuCsBVLNCOYVLSEoQnSvIBLtyEDWZMIJMqurFcHUdmOsPLdtWKXlgJqCQRo"), }, + { .name = IOV("zyZbIBlSSArVIRzlNfcY"), .value = IOV("lOKXPMxqLqhnTsuCHEQChR"), }, + { .name = IOV("oNQGg"), .value = IOV("HxXlZiMbYKwtCSlruISgyJEPPdRCRoegKnsVhQMDN"), }, + { .name = IOV("uZdbWguVttC"), .value = IOV("xfCjxUDKCOyXEIQJbCzmJgYmVhOQMJbYZDxGKnqJdAIzMHdALojFFU"), }, + { .name = IOV("eNTetHGycvp"), .value = IOV("UoMWR"), }, + { .name = IOV("JhboTHqGJboMdERLkdS"), .value = IOV("r"), }, + { .name = IOV("KAyhoOqELunJyXQn"), .value = IOV("ThmTNNsvuWcIPihbzdYbvEZjrBJCquMkCZXiRlDluRHBMCiKpIBkI"), }, + { .name = IOV("uOzyE"), .value = IOV("JyMqMJIJMkSjcunshqzQejwttQLtcvUNPKdxKPYwJVWVWtgEmYzUqcHcvrSmPpIpMVvSQqu"), }, + { .name = IOV("MenBriNwB"), .value = IOV("sMshvMdEMMXnGSFVZmmbLXyNoDlSIbGuvztuobXVJGjRHkalgspxJVshMOlpCFcMbfrOHYvUr"), }, + { .name = IOV("DpOyIGj"), .value = IOV("fZFbAUxhXgHnbUCbBaCrpOBfsNZYLkDweByPiDsH"), }, + { .name = IOV("JHno"), .value = IOV("encSmqafLAgyOfXCVaKiXtarqZLuiTbplDYTNX"), }, + { .name = IOV("OvfHDfkgHGYEUuPWOxbt"), .value = IOV("WPWTynsWubpKDwMFfdCEFkqrJxKdskfxPACSMWXfhQfqGKwAqstTPKgVgKZGUzuJFH"), }, + { .name = IOV("HUVqghPjPeEpt"), .value = IOV("KzO"), }, + { .name = IOV("JOleKrDuegDRe"), .value = IOV("iIyXzSrZCYbqDoLwducPawHCrBmnpabNziZDrCEIqFvnYWywbKVPa"), }, + { .name = IOV("JfyLDalUWrwQYAoe"), .value = IOV("GHDocuVAMGrsoPCHOpLOKNUdohtSMPjDzGJI"), }, + { .name = IOV("M"), .value = IOV("TBkXrexMggWxatzHHaBoirrALLIydEdIJgBfHjbirQEjRcRaooaudrTGbtbQhAPfBTE"), }, + { .name = IOV("JGrE"), .value = IOV("aTxqqWGLHAqyBpeoQWHfoQHCqLQqQcRGwTYLXuUXcEuxLauHjUFfnGCsZvbxbwJMJU"), }, + { .name = IOV("DiPDJGUmsCcBNH"), .value = IOV("RINRPCDxPKZJaXanyNawgXuwdtZkfNhlBSctXfHQELOLSVTq"), }, + { .name = IOV("pnWIablptRhLrJOz"), .value = IOV("klguKNhMXApPPzGSwBAChUvkCCPODcimcbccZUkNQeyWjFbCDxsgcgp"), }, + { .name = IOV("N"), .value = IOV("wFjMEILrlwqjJVEliwsosvhuPISoHeQZHPapPkx"), }, + { .name = IOV("bTfBTIbnCE"), .value = IOV("wjLw"), }, + { .name = IOV("zOhVFWgU"), .value = IOV("AaHsbbsfpgOjtVtHaqbrpWNAjUcAYsrOrwEfSpHzHuWOAbkdfsUedoH"), }, + { .name = IOV("OjgPvCEYZVfJxbjKQ"), .value = IOV("rOAQuxPsKSrZzZPJyNRfzxASElyyTANOJvhJaevhfRLEwkKItQJxsPoyJWLdN"), }, + { .name = IOV("TXGBYIrHxZjQKR"), .value = IOV("RNjsTjUZuphubadIlosEPJBwlStWhsFBkvLnEThMGzPLushUX"), }, + { .name = IOV("LTxfbDQsKRsD"), .value = IOV("lxkMkgTlPykaoILWErecrseYiSRPbSDJHWgODTVXhJLEOghPlCqXKNqwARdpwyaCWTzZwJZu"), }, + { .name = IOV("arHoe"), .value = IOV("BuhnOARdzPNwvjSLyLlmwdoRZVixhmPAbPdMrmjEunqMcxL"), }, + { .name = IOV("rZTlXmlGrMTKnf"), .value = IOV("YVyFJwBRnzApnAJgQJQNHqOmepfbteSnERbyS"), }, + { .name = IOV("kSJKWydTAzQ"), .value = IOV("hLzUbMrLpBKmLHaeASHURLxvVUEgodOTcJnP"), }, + { .name = IOV("HFMDnoXTk"), .value = IOV("IVJlrSiOqdZSbcubPgOApnmSQnIKFfrpFxOUqiCmdZIPBfhTHMlRVhjtlfklaKmkdEqFxCKqm"), }, + { .name = IOV("xFktbzTxCJYtjurUmsdj"), .value = IOV("qrFaTPkwOlCxclZHBWaKawphNewrfxKeYLgNPfsqfcDDhssRZsXJrzKFNBRkUwVScAdbngBgSxNXc"), }, + { .name = IOV("QjLyOFrPKGrNOqoUrlD"), .value = IOV("FyJWpWjQBfEaBLIflyHQdjIARePYiYwgyEEXEOnlYkraaiGSjXjrytuSfkGGCHaluxLsvXXzEcbZ"), }, + { .name = IOV("W"), .value = IOV("BAw"), }, + { .name = IOV("OXmDTpltnCY"), .value = IOV("tQwpalapoOnEdlgtlWlSUOyvl"), }, + { .name = IOV("zlKWcLIgzTKpqmoMn"), .value = IOV("ckBVUvJLaaOlVbFuEwULEHicOjkFishrSXOxcGeqpJxESnFzTIplwmpzSvXklRJYuoJq"), }, + { .name = IOV("YjNTUWbh"), .value = IOV("bIJcAtlAteocgoicbNnubsGgOidXBouF"), }, + { .name = IOV("fXnvl"), .value = IOV("DAvzyGjDwGjNEUXNjVmIqJPiplKGaxLjHiagrFhojMWPpVpekPwDwBvxeQidpczXeBsYsGwDCpfdUZMG"), }, + { .name = IOV("FSeKdjJZ"), .value = IOV("jnAQpvQKTVVMoKhskiejEHKCvYUcStrKhJapFeLjBVWdYhPjfZeTJslbVBh"), }, + { .name = IOV("BBsDNTBnKCknOAdWoIm"), .value = IOV("NcghAPfrIoSOeBYrzjFYMKKtciPraFMEXddzlQSWpkijCEtAmbZrFKBeTkLlCzAkHtjLgjnI"), }, + { .name = IOV("RibIECYJG"), .value = IOV("yAJDshFQNNDkUwSXhWbBtsjqZTfEqNFDhDqnrnfdIbwhXNAnTInmFZaLmiCPgueJbidCpx"), }, + { .name = IOV("zokHpbzuOnj"), .value = IOV("pPtvuwiejVCGZymlboPjrQtlYNwZEeSzOHJPAObTKAVtSvUQafFVsMKLVyYso"), }, + { .name = IOV("WSWKzfBaOKEGkjnBGa"), .value = IOV("rUyonADAyUpWmLOCCOrmEJzySyToPsNptkqChJciJAfHnaQFWuQEFLU"), }, + { .name = IOV("KSWXpyMtDjvwmH"), .value = IOV("dIpchLDbcIVbgmLJlnxeYSyKOLQJZCfRchxTQydcdJmmngInTfGymFPGLZcPknLfCePqUNicz"), }, + { .name = IOV("rcSqYlnK"), .value = IOV("zVnwYguvDPSZJlDVPPdyDzzTPTIjBsMQliGnzwiWusuVE"), }, + { .name = IOV("WjJYlIdSRFk"), .value = IOV("mHTkGLNuncbSXXIylJCXZqJXwLjHS"), }, + { .name = IOV("Qgyj"), .value = IOV("nBjVHsVQvqpiDuwgyVsLjlifwWEicnAldrfkGGmvitmymzsCjRMfU"), }, + { .name = IOV("iZEcyImTViDjzR"), .value = IOV("lcNLqlslqGeAmIbMLbFwzKSBzkuKUmwBMPXUpfkDUGTHlpA"), }, + { .name = IOV("LZYjlSbswcFDi"), .value = IOV("VBZAjFZCmKAVphoCDfsMrdQEBvbIgkMsmWdzmVGIbNXDapDfQVRynMwzhDsEvOJWiRjoovLSBELoppg"), }, + { .name = IOV("DpEx"), .value = IOV("MtcZcGRrjeDRNMokFnZDgIQmiueceYYcRmixrYipGkHAjcxnNxKUwsjcJYSkfOWBOQpl"), }, + { .name = IOV("qpxWykN"), .value = IOV("AUjIia"), }, + { .name = IOV("YhrdvxvNkAt"), .value = IOV("zMLUpmMQbRN"), }, + { .name = IOV("tt"), .value = IOV("EWNfQAbCHvrZZblhlcfoFPRkdSlRSoTHaiIBJWuZDcOaAdI"), }, + { .name = IOV("OJKe"), .value = IOV("jlaswZALZWagGrpIatgAMzhTKEUZdhmKfTmdCBzHrwtBSXJedXASHNgLdnCawXXZBdFwwzwWf"), }, + { .name = IOV("RNEMctgcKkhuzBXEujq"), .value = IOV("wgMOmfiGFebISmHVBBCvPnKBHfvvbbACZUYihHXtimpJXyLGmrXvGCVu"), }, + { .name = IOV("qpg"), .value = IOV("ubIpGUiHzJFeHcIjkAjSkc"), }, + { .name = IOV("PojhnkZbIIBJG"), .value = IOV("RNtcvfDMQUNNNuG"), }, + { .name = IOV("pzuiXSCPIQYn"), .value = IOV("YJAMowsghrxGuLrursKsseoQgBIiCBTsAngWCQFpVfSpKQFIcrxbFPRlBnZrzFaFovpM"), }, + { .name = IOV("wRXjmxdbLGCalmaSC"), .value = IOV("IDMZeNgPCktkHOtbSwoxy"), }, + { .name = IOV("MJKyMN"), .value = IOV("YSVuENfZfIxZGgFxjSVODhClPivv"), }, + { .name = IOV("YrYZdMy"), .value = IOV("PdvgVZElFEgzwMkGHbcGWzIobQhfaRwpeiRKWFgdmouFGEkr"), }, + { .name = IOV("dxopGEKXxYFAxydI"), .value = IOV("jYZXjp"), }, + { .name = IOV("cX"), .value = IOV("hoxPOucC"), }, + { .name = IOV("zJtAcxCOZIhpvp"), .value = IOV("lSiQsPlbypDLxszUroSQJRbQeMWqPTjIXVUBAmluPJujEukbIOPmcgkSjVBbjTFixAJM"), }, + { .name = IOV("mQeAFOsPsohQLQji"), .value = IOV("WldiAuSyqZPNKakZOeLsfsbXJFDQPsFTEMBTuNkeDsYSZikAZWiqOVGKtOLxsrEWvfEarzPMs"), }, + { .name = IOV("qPNFMyCjfcpQseoDSDvb"), .value = IOV("sd"), }, + { .name = IOV("nehFQcDz"), .value = IOV("IANZPmpfESVPNExMUpkbfuWBjxafyKOXVPJXDgZJvruAVExCjqXgyjsyzUKeMWmSJDQpJjtVo"), }, + { .name = IOV("FMktuhxAvLUyvkQiIe"), .value = IOV("GXsZZblSFfAXi"), }, + { .name = IOV("DzmzSkdnvvBzYJALKaT"), .value = IOV("xGtKHuPdpimiRuNfrVuoQaTHitYDGmJRnocbmWNctrKELfUbgkigsevaXrZYyrYEBlmGOuHRcPct"), }, + { .name = IOV("wmduYjgUgMxsB"), .value = IOV("guApqgTQDhiNKBmYBdvIgPJfFjFLvpgqLKUNdaHcCJzJfHC"), }, + { .name = IOV("QPCuwdcCQKEVeOpaS"), .value = IOV("rOQeTuAgj"), }, + { .name = IOV("ZHkrWYGYOVspOkD"), .value = IOV("zDDNRmsay"), }, + { .name = IOV("azWqCOmcwQ"), .value = IOV("OMFpsc"), }, + { .name = IOV("jbTNJmrfXsq"), .value = IOV("vHdDUmxspapqzrJflzcnNlkdWLMPqqRUXmGHWhQVlIXbJqqhmZsLJEdWnGFCwu"), }, + { .name = IOV("wxWvEHXnmQGKZSYDv"), .value = IOV("omjVFyBuhRrLhhfhezZFTpooRIHmRLoJTNPBiYfdosn"), }, + { .name = IOV("pd"), .value = IOV("ayVdhcpZbNHhmGYFJpCGYqVgPARgiyKjYNmfvHyMMyHMCRZjiCFKSHFqPuul"), }, + { .name = IOV("Nxim"), .value = IOV("VUWrVRArrnimkiOLWGJxrLURqmxyCaSbANMjSsSTOhnIBWysdbTyzJ"), }, + { .name = IOV("XPuwOqaFbTvBFvSW"), .value = IOV("fQFlnbsaGAFGAbhPBYGWQCVVSzRfzwreXepvhIbuDAYiZfdyVypIVQgtChPXqVNuGG"), }, + { .name = IOV("WyAMGMVVAXFpMTCHpZGj"), .value = IOV("VNDDMqppeJBgiRBTwvCXNvuwhwoxFksGmTWJhqxgQCgx"), }, + { .name = IOV("AwGemiooup"), .value = IOV("UcWaoVKYKAywynPylBOoUSRIT"), }, + { .name = IOV("EzASCqHJ"), .value = IOV("B"), }, + { .name = IOV("LV"), .value = IOV("QuohDYvriHwFebTJVdQtyvlTuQAZISdTpOTzxIsiVGhBmWkajwcCSVwYQYXQA"), }, + { .name = IOV("VMBwicuVAmRmsUqGIRHX"), .value = IOV("BDIdzkyxiuhohMRweYwRLWyuEKjBGhwnpJzXhdGwkIZBmfmDcJqljzD"), }, + { .name = IOV("QMPKoeJAfzw"), .value = IOV("JksflYOeffoTTMMEHixSyxUhWJu"), }, + { .name = IOV("uyqePVXFCejHbvucs"), .value = IOV("dFamSIpWNkmBhHvrjyMPmVFrVnWTEUSdUQmKBpXSiJJWvFpOJUJbkfisPcmeblaScdSaDKnaTBYoBoae"), }, + { .name = IOV("SLPFqblKEGQALkF"), .value = IOV("husfrqfPiGnLzxWbjAOawOPWribAprCDUycTGKshBnYAlxLSAxkD"), }, + { .name = IOV("BKNfQGutYsDSoeO"), .value = IOV("lepwHQTRO"), }, + { .name = IOV("OJyDcXzZ"), .value = IOV("yuRoyiaXNieddpQSDPvTbnD"), }, + { .name = IOV("IkVhWQQSZbyLO"), .value = IOV("MczAOtAaHmRYlupiEbDfsyxLNROWZJZNgMVQtEhHdCwCyfaIyPBoftlBqFmYl"), }, + { .name = IOV("Wy"), .value = IOV("eicGzx"), }, + { .name = IOV("Wf"), .value = IOV("QxDVWLYeUiIFYFIybUdDjptNgZkGtklqRnMvXEQXICpUpUrhbwnKmjtnQrvQEnhzbbvodBtpehDlWXa"), }, + { .name = IOV("JfSqbXxitGpBALgRtgU"), .value = IOV("qBXakyFeAtmizIMaaAULaWKGEGohkAblxCQuBoFubfparkwVTHlbcckGczDXizmgNHHA"), }, + { .name = IOV("UyIYBJJWAlpKsXXMZ"), .value = IOV("yZqIPbgfzCCmhgMSuMxsWpoDjapaDbLVDMlQUSh"), }, + { .name = IOV("vGfxMyLviqLTxLqxXJch"), .value = IOV("SHAAhejLHPOUmrhipDcKdEydKjRyRoLNJANQlRugASvwYonBLwnggxfLpEp"), }, + { .name = IOV("xiSExcNDWeLIiFxZCf"), .value = IOV("LEMLuTuvqtxYvzAhBxDedquvaGtIByJOagDbiImCsDYciLPfWQAbDRXgJYmUdhaBDIoJHODVy"), }, + { .name = IOV("AZhozjuNAMKQbQs"), .value = IOV("oHwlzAMLHcchXCHQyPrucmGzLYrRBQijUlnDdEjCQLFgxpUYyMwHqNAiLSPFrqsvOq"), }, + { .name = IOV("ydxtDgrXiyaLbYHv"), .value = IOV("tSWqDdJk"), }, + { .name = IOV("nfWpkzvElYnCynUsG"), .value = IOV("vERqYcosrj"), }, + { .name = IOV("aWCeiQera"), .value = IOV("uOpflvJpRfDSLPOdenmPIfzdqjRDmUaKUqegNaNeBCwbdhRsdzsOzyaUgEserxKIdINAEpruJvudCu"), }, + { .name = IOV("nnjjmEEYU"), .value = IOV("C"), }, + { .name = IOV("kloQRXaEXzVMpussD"), .value = IOV("SEoWbVDrfyTgITwPaLBIXCkevVUNGk"), }, + { .name = IOV("XWaJVLcmfucTuYIuAX"), .value = IOV("WyWeAvKgLgfxEHOldkaxSRfwcasFghyFcsGcLhYkwtvekq"), }, + { .name = IOV("aarFOp"), .value = IOV("cbEAjKxCHkzDmRcvCueWyITvDJwJH"), }, + { .name = IOV("StPasJLXLnVieqPCdt"), .value = IOV("yGhBIsssECdZUyqsyFG"), }, + { .name = IOV("tLvSvBVOgS"), .value = IOV("sScWgfajYyAVZuhwn"), }, + { .name = IOV("bMRUHaefJvq"), .value = IOV("yhaUjvyupmEVeDbThXQf"), }, + { .name = IOV("YWLMFVvvPvnwtsHXNyj"), .value = IOV("zxqWaawLGBwKgqGUtHfohxgfXrioQHiaCPLdafiaJsDrxalOV"), }, + { .name = IOV("HDAwTnrmRtYQhrf"), .value = IOV("aqFYULCjSEyQAJAurBnLgMYl"), }, + { .name = IOV("gBiptSwMLigk"), .value = IOV("SIDapbgoTJUFlMcG"), }, + { .name = IOV("yMYayBNLy"), .value = IOV("XgSIRHRbzXHNaSrPLwggsxzeovlUPQpRFvMtEfhqofsHpWRTh"), }, + { .name = IOV("QjekXjidk"), .value = IOV("xxhhJupvgmloKzxLYMZxtMtDcyMUbunDdYvxVHqOVfbZCxzfjstlWu"), }, + { .name = IOV("iEscwEDQsUTDfnFwT"), .value = IOV("mUMQXcrMEoYJqmLyozazbJKlbvozSdzjrMv"), }, + { .name = IOV("mOUgLBaPVZn"), .value = IOV("ahvnNTMgCXnbMbdAnpnBDmWxJJGNQoTMXvqWrhUACVTNvNrrsDjHeyRBVzaLAotNRAhh"), }, + { .name = IOV("a"), .value = IOV("wraPdktdUVbyLt"), }, + { .name = IOV("vr"), .value = IOV("GvhtIXyhYGMHIYvoJxceWwc"), }, + { .name = IOV("RSX"), .value = IOV("SuhivRKJmZjYtaTWIErxLjIUPtQlqjRetPtdkCA"), }, + { .name = IOV("oeplpBMlpNRIw"), .value = IOV("iEreVOvvzdXdLIGGvMUHnVkb"), }, + { .name = IOV("VGfopw"), .value = IOV("kPRiOAOfvesftoebIZlJvRTPCLTsoXdgkDISPrzkAjGz"), }, + { .name = IOV("rnGceMdnDt"), .value = IOV("kqDurLwwxyOa"), }, + { .name = IOV("zEXPHSBaGHQtkPwXHKuG"), .value = IOV("cEqRdOAJuZBeMKYAFozkzXoxKMEukrUaidpI"), }, + { .name = IOV("mBgvylj"), .value = IOV("UaiA"), }, + { .name = IOV("ascaREBylSSPL"), .value = IOV("aALMpLhbdXJRaYLvp"), }, + { .name = IOV("DSz"), .value = IOV("MqhNmyjKvXucENgyvXAEVjPyx"), }, + { .name = IOV("uydHoVRzZt"), .value = IOV("WjVQNIblVbUnNHsMHbdss"), }, + { .name = IOV("izrNZJdFZHrsxyvuSr"), .value = IOV("AQWbKscCoJgubRMDErPvgx"), }, + { .name = IOV("OVpI"), .value = IOV("FZMIpEbYngDIUQwdIfhwzF"), }, + { .name = IOV("sVvCYbr"), .value = IOV("LDzaOzawmVzVAxEKqLmKphiLUuMUWEpunufkNurHUgLTuESVXJeNasRpOxBiZSvqGm"), }, + { .name = IOV("VD"), .value = IOV("QMGthYwyiHPmAvAILgFSLBdZeDCbWCeFoFkIVmaXRV"), }, + { .name = IOV("UOjyAGxNoMVryec"), .value = IOV("bwbTfpVjgEGwkIHATwOmxCydLeAoxsJZRqSxnAqMcDkaRY"), }, + { .name = IOV("AOjMhwNOwQsGT"), .value = IOV("aCtjQkZSqvPfpfjZljiikkTNmpkrBiXRSudrUTOQ"), }, + { .name = IOV("sPLCkvRzIOoASddtfv"), .value = IOV("ShrKBOlikQeWxwfvdoUMNsRJhAYSBwbOVBXzcSmKXNxyWbeOefPSmNFjerkcwpcDFEMOm"), }, + { .name = IOV("InfZQbKRV"), .value = IOV("FcFihWEwRaoEsxvGVytanBXiDYXSkJ"), }, + { .name = IOV("ByRmIflXkh"), .value = IOV("ZdzEnqvofavgeHAtqMDrqckPOm"), }, + { .name = IOV("gjrcfWryinP"), .value = IOV("bLXevgRSGLaDmrJbmRIFHSRspAEIWPnLPxHYoCSSStqscmSNhYaZmalIFTYtg"), }, + { .name = IOV("ySfYlrHKH"), .value = IOV("RoEgBz"), }, + { .name = IOV("rKHxdCvErMeEjzpk"), .value = IOV("TZbnfDvkOzvlAJqdZZFwnPtHiUaGPfkPicglMmXmBHscPdcyIVKwksOmAsRksF"), }, + { .name = IOV("XVDiXGJDLAjNgtU"), .value = IOV("mLeyNmMfUXyeFeUqhMhuSxKz"), }, + { .name = IOV("UZTdNIdZTtTF"), .value = IOV("dlaDSbaFXVOMpRvJdBemAzEViqyMz"), }, + { .name = IOV("wwhfokCKDjRjnmGyUeJw"), .value = IOV("YgXZGDZBbHlP"), }, + { .name = IOV("yxScVHKVULnrhh"), .value = IOV("EGGJKQyaHTMcl"), }, + { .name = IOV("OCYaCm"), .value = IOV("AaMRBkYSOzKwyxmyyOpSGlaUMoBHWWDyMAEBbvMZSiOrhhIspwQrnWDemcJDliUIBBVFfCmYtTxgJ"), }, + { .name = IOV("gFDopstkJw"), .value = IOV("IQoVsJVForeEmrqYUXoAIHLNWvTpUyqvHVUrelhebarEFXtIxbwzKWr"), }, + { .name = IOV("gXUvXs"), .value = IOV("bAdtFFHQzlCyMCFlgSaTZpVjShlZIJNvsFSAFQmGeVOWpLeyuzHFZq"), }, + { .name = IOV("gLqPLKiUEeSRqPjbMjL"), .value = IOV("szOlllEyGEiNOUxjtCwXhdXVPxGUUaeFIwuMXOVfRgAZwbQnHyMQGQhGUvHHRWtTzsCzEinU"), }, + { .name = IOV("XjvnrJjIKvFbRuiNcdGP"), .value = IOV("ZvCHKvBfJKfFXGioerflbzXmFPyKaMBRiHIWXXODKUBdSXeRvGHAYNvvUFluaIzRjSIZrAcBp"), }, + { .name = IOV("ZjFQmofaMo"), .value = IOV("QeEwYXeOSmEfBOUbWdJEBPWPNELTQaRDImHLpicsSzsRLcSHmNmIHEgAuVpUKSnSysyMvjBVrS"), }, + { .name = IOV("Akm"), .value = IOV("AzGKRQLIJJnsdAMzDREmEn"), }, + { .name = IOV("CEPTO"), .value = IOV("DDuaGYMjoAFYGjWrMImyn"), }, + { .name = IOV("nUDkSjxPP"), .value = IOV("NuISIBfuHSrkUjGpqWtmlK"), }, + { .name = IOV("jIKFuzjHKmdyOMzc"), .value = IOV("nUPDYretgbFdvXpSEFVdWKAGKPqwQuzfLBdIFxwbn"), }, + { .name = IOV("EDYgAQHMuuPnmpJxICdJ"), .value = IOV("QzHQXpbSXrtfdsHlCxFQTTNJGrTNdvVAYXxfhsQyikCQbeqhduOlaDBFmOTtPihx"), }, + { .name = IOV("wZZVdo"), .value = IOV("eYDWOtgJCEFlDslRONEhPRUcB"), }, + { .name = IOV("y"), .value = IOV("VuAjHsGmHBYqakGDBqIUiDfjjAVgykluZiT"), }, + { .name = IOV("rKGeYzpJkD"), .value = IOV("WOxxlRVVIQIvOH"), }, + { .name = IOV("Ccvscv"), .value = IOV("iexttCRrzyZZhqKuXmrMlVQcPOMSqphuDe"), }, + { .name = IOV("ZUIctW"), .value = IOV("BaVfNdLLoNcmNwGOhwAfbsytMDsk"), }, + { .name = IOV("EzgDRVFQnlpXttrPYJ"), .value = IOV("AHHvaAOJOGwtVUCiezqWmonYJlwEBtaPMNwftRNnTShjfKsbNeDBzomQ"), }, + { .name = IOV("mxlFrtosLWP"), .value = IOV("QAzHhjfnKTUhosQOgtWywxanUVyVeaZEiSlNjvFDRJlWLBHfFQBTOsThrYFsYbDtuCyNSoGZHb"), }, + { .name = IOV("HIazJAYEqfEmYmyiuQXK"), .value = IOV("AMMCdcvFtCPkVJWSQSYepRLwpqgEKPOeBQEECdFDmmclEBLtjFneLluDhpANBnaPa"), }, + { .name = IOV("SoHJhMZkkJNEY"), .value = IOV("vBl"), }, + { .name = IOV("TzZPvxDDeMtBKcB"), .value = IOV("TcGdgAhlJkUGhBZcVgkiHiPgpJEJgqWqAmcoTGRvZDDIiAGjjHwpVphUdiGJHtTFS"), }, + { .name = IOV("QqhNmmjlWCCJ"), .value = IOV("OrCuYWoOnaStWjVhoBsCdjhPqCAtQ"), }, + { .name = IOV("PcunfTFLgStZYEqKMpEg"), .value = IOV("XpBCZAFXxnzgQmDRhxqmovWKzkuzEVzgFyurDALrULfKRGahjOcirlxjAgJfbNgwHrSg"), }, + { .name = IOV("KOWPWYMRHtVmXTGjtmMG"), .value = IOV("MrgwvWlMTghxMjEjxHQTdCEzjUJxIYczoOdgLuFxD"), }, + { .name = IOV("BYZrcNsLqxnej"), .value = IOV("cDoJLQpFBmxEdeDViZuelSVQtaBrpvIaDCfWDJORbnLkiKhGvLOMsoQ"), }, + { .name = IOV("DpVDmYAp"), .value = IOV("SBbWExTThqwbMJCMEHbRqYHDByHtqWiwMaJTkIyxeksFgdbQCUmNrhHzOZXkTWrBiDeegPGFUWxXqyPX"), }, + { .name = IOV("OpCvRiqgWGWMpb"), .value = IOV("bXkPSohlNhItNltJWfEATufEgdvAZSsMYNAtB"), }, + { .name = IOV("sAGIgObLufNp"), .value = IOV("DxFRnbqNR"), }, + { .name = IOV("YhgwBCzHO"), .value = IOV("PdPnjLAkhABrqFELmRKWYsSSqheRmBksXtOl"), }, + { .name = IOV("dNsziPqm"), .value = IOV("bIzkijwtIkatiIeTBoyxMcHYWBQqugnPRxoWrcnFkSrsbfJ"), }, + { .name = IOV("kYVclWBKCEBDPIRaxZaS"), .value = IOV("cQOSJrstemhYID"), }, + { .name = IOV("ARzYTgBkLkREeWYp"), .value = IOV("FiwCKvgBEfGjyFxKFZcyXrcWxgPyqDfbGZsjAFVAOSPT"), }, + { .name = IOV("pTVrDooVxl"), .value = IOV("xshhbJaGxUaoFEJkHaWuBQpuCcKDpCgyZQmqrfSkswgzTLsdiwJevPZRIryyOvNfahqAHncowzGqRD"), }, + { .name = IOV("gpwgcHebUS"), .value = IOV("YsbzyRJWeHWnJCcnlMpMQQCRsFcuSwafprdqcXimDrDWtsFJLbMeBRLFhHYRuYWufgrvaSLALzvrPRdA"), }, + { .name = IOV("UeagNvJYlGMwQLghtkG"), .value = IOV("zgXqpyfDSEOZqqLzMPYmoNJGvynCdnFSmGnFN"), }, + { .name = IOV("cKaSTGZJmJVgHhlm"), .value = IOV("rxRUruJgtyTPhDXcrwvZQnWNDZrMbOXgchahpGb"), }, + { .name = IOV("LMYwtQghgCwUN"), .value = IOV("XKxpGkypxMsjanlAcDlxRsTGPYYE"), }, + { .name = IOV("YFnwSLhK"), .value = IOV("mSPjkurJKRyUAvdQrGtEdjwWzgprPgqUXksmcWiLXhpAxLRsdoprOZplDRzrYKtCthwwxeoCx"), }, + { .name = IOV("sGsog"), .value = IOV("vWVeIcScexePobQybEyPTCSnCzYVEAlaFZesVeTMhrUjQpoxzkYXUjKIPRgDkqbtBItPHjdbpH"), }, + { .name = IOV("LlmzEVUQ"), .value = IOV("EqBLtSvmrxsEDtVQwZDHnQtLGQhbgVdxwvMTfoHUaYCuptmuMTfFyTmPVih"), }, + { .name = IOV("tQPqsYfK"), .value = IOV("HnvVompwZagDEtYbaGVuWCwCbIAfkvKBxqgAhsOwhOEbWbeyVM"), }, + { .name = IOV("MPlCcwujk"), .value = IOV("RXDvZWxQvsz"), }, + { .name = IOV("FkUgtdEk"), .value = IOV("ytCUSkdcqMPotakceAuqIjpIiLMeJOKp"), }, + { .name = IOV("GRHMwfBWzGbVpWpThlq"), .value = IOV("wuEbQJXeOxcuTMddtwZwNNDlDsRPaYdKipOdbxunNgsPuUgowfJWWePqWGtEQdiJ"), }, + { .name = IOV("EttsVm"), .value = IOV("IcmftgwulJqYqHrfNWhItKtlsTpTmwMbnhfvNaVkNOjUxuifNN"), }, + { .name = IOV("XTBMDpdXJZboegWCRngQ"), .value = IOV("ZkJUHQcuxLmYIzfKvAXxrfISteJIuTdJg"), }, + { .name = IOV("leTCBkoxXu"), .value = IOV("lvIIoLIWPwMiKCGqAzxuZzGGOrTNWkMpSgDfaGRvTOAAhyinpR"), }, + { .name = IOV("XgxzUGg"), .value = IOV("asvyEuTOzrdAyJSoVlrXIaRhtRlXJzZhspOFYIKclzjxQtqpKsIALFFiHEtssJg"), }, + { .name = IOV("sETnJpotJqvSgpSOXXO"), .value = IOV("NavsgFUdSem"), }, + { .name = IOV("qNj"), .value = IOV("MtcwxxyzhXdYjykTIAbvuiiIJMkAuLlGHmeZoOEohpcqlOClJnGujRQZiPrXNKzCuobEQq"), }, + { .name = IOV("OwsUiwPUcrvcQks"), .value = IOV("disdzqgJRbUGwetqmuvOcJfZGtWFMYGHgngiVliGajcpFaZdSx"), }, + { .name = IOV("nT"), .value = IOV("UmHBpqYwuUwcsRlqSxLzvwnqMZoCr"), }, + { .name = IOV("QYm"), .value = IOV("twDPM"), }, + { .name = IOV("AihpvRwvmdC"), .value = IOV("JEPsNpQmPOTVXfavpvlmsomYlQIYukkZaDNcpdVryqgPFgOlpfzqSGgvTNI"), }, + { .name = IOV("YO"), .value = IOV("vAlTKEbaKOGYPsBoUJEzRDhwptKGMroOyWqLZ"), }, + { .name = IOV("uKSgwfd"), .value = IOV("rpfyZaKqcN"), }, + { .name = IOV("vlZcLiyzWAMq"), .value = IOV("YGmcmoJKoVwxoYSGimzLtmLBmMzDeCXYsPnDdhyjFYetdHjSFiBoSovxqcSUT"), }, + { .name = IOV("DzsUCLyEghLBIjqsLfC"), .value = IOV("ZxMAUvWwZAIEyImNgnWEWOjgFmNKjOhGHNWTTyCaZeZXtv"), }, + { .name = IOV("fvwNBXCd"), .value = IOV("FbZXTrspcdQttMAZlgBKKDxiUdurubErIArrbmgJIaZSYJBLOEBkBMZ"), }, + { .name = IOV("sSNi"), .value = IOV("WqAnTDEsksoZMkRepSlblEhCqgjcObPloAFctgOhUoChvBNXXjuVwOEUBDjJzJGFyTHIlraCEGbMSLu"), }, + { .name = IOV("rJuXeEhiiHseyY"), .value = IOV("nUhTYEZHzKIKdbT"), }, + { .name = IOV("iYBENmWlDJTfqgu"), .value = IOV("vjyfmmPgEMQgCMlOygGgifQCtkdzMqUtWyAFStdHtfVKIamZyqbbrHQccuilLTBHYMT"), }, + { .name = IOV("TykRCgJVPRNffSffDxWU"), .value = IOV("TPItiLsJppSyRPAmnHsyqYonFusjhuUIsiDUtfsZZjslKYvZGTaPOoBSocU"), }, + { .name = IOV("pT"), .value = IOV("lRXbPXDBJaPvitedcNtbQGeMLgAdZIJdvgukeOiatiVcMgwFrzxJlqBXLcPEIEkPhXmQJTwFPGelz"), }, + { .name = IOV("JHsunpAaWC"), .value = IOV("zdIiDkxkqKsMXoajAqQQMXtyXsKSOMqxxhzMOJTsCjauJjqJFAjcNJYzjbGJRHgRSZxw"), }, + { .name = IOV("omuZobNbmafdIEbIoZa"), .value = IOV("JZemrqTUMOLkvxuaZolBnJmuyYymYFIclTZBBXHlOXeKkpgR"), }, + { .name = IOV("gGJ"), .value = IOV("ZCVZqQjKuIIFijTwjGTnwGHSaLARVCdCBsdptQSYAYYjlWrBeGWVpraSnfDuK"), }, + { .name = IOV("rcqgmhAnFfQ"), .value = IOV("kuxSvzgXkclJXkkkfkjxQLlN"), }, + { .name = IOV("FhktoD"), .value = IOV("gyZrmvxgtQfSKUDEDWiQNpeQJGkxJWhNMxbTdhaPtaof"), }, + { .name = IOV("nLaGU"), .value = IOV("yRDHmAugpEfQyXkzjGZtqcMtRozrSRIrABEoNhhBpNg"), }, + { .name = IOV("OLqjwxrmjRFZqmxeb"), .value = IOV("GfGzPxeuvzYqhnMsCdGhtnPOfRWRjCmDnilhNiHKXQIEFDktqXWVjreFrbJyKegB"), }, + { .name = IOV("OGTFMADHehVcyAzAqFv"), .value = IOV("spkcwOBJCnxBVhScOECqd"), }, + { .name = IOV("gNFlsCkkzBLXg"), .value = IOV("ontlzipQudWtfMprpqfKxxBTHe"), }, + { .name = IOV("QG"), .value = IOV("HidDgVMjAXdGJKdsveUwvwKCiheAhRpkkDwopjsIXTNQCq"), }, + { .name = IOV("moIVDugLJDjJqRaZWDI"), .value = IOV("XMqCSRzDiFxuItjFstcUtXCoWJeTKKRDOBzudvWEyWUsLqJuNtxfHIcQaGcewQgrjdwHGRHj"), }, + { .name = IOV("wDMZBZZEyGm"), .value = IOV("iDtmp"), }, + { .name = IOV("fWvCBklhZKofWVywhIEQ"), .value = IOV("OzkRcodFuDxOEufcyEGxKJOjfKpOizfZJBvJAznixxI"), }, + { .name = IOV("OMoEeCcFZaSglMJsDYov"), .value = IOV("MmKKjNDjjsyJTQmGmhNJTJoOsvjSzmTieEvqhQeAxGfWPcaaXWOqTPoMTlkgFnZwOl"), }, + { .name = IOV("eOAHBlzOEMTX"), .value = IOV("kBPlltPFp"), }, + { .name = IOV("xKqzEotZwGbS"), .value = IOV("myTRFVFaTWBUFVPuomVOdjYVfw"), }, + { .name = IOV("pcTjcmYKonNOuZZvjZ"), .value = IOV("lcgLNiQbDUGfcWpIPgISquIndzDmTGowRZvboAycNUwhftjcHFYztoHyLbSOqzSphbJy"), }, + { .name = IOV("QVgha"), .value = IOV("KhWuBhvv"), }, + { .name = IOV("JwriImjPZLATPt"), .value = IOV("LwygxGkORJgaUyKbkXNtzkQXbXMyPn"), }, + { .name = IOV("cQszTvwh"), .value = IOV("KaRTriyxARZWsDiFq"), }, + { .name = IOV("KrJfXhHMEiqm"), .value = IOV("GRPJapTeD"), }, + { .name = IOV("xqiCwOniE"), .value = IOV("ZDKzaSFKmrMphZJVoWEGeDhWkWgKXVwPhILArtZHAaiuKlghrmTnSdtQfojydjKAhnHWbGIi"), }, + { .name = IOV("hqXxcwMQo"), .value = IOV("EhVGGTUjYsJeytKwZAQomvAWrpobtvATWyNewTacyIZCrHFHiknimkFy"), }, + { .name = IOV("mgvorhyBckfhxpMmK"), .value = IOV("PhwbHkPCtfDUgwOrgpnFGEObWbsKzAaXafQUhuiNIqAGMiXfLGtinTULpbPDekfJy"), }, + { .name = IOV("ZiYGbzoklvwyMVGoRu"), .value = IOV("tWSgJbRouipWYoftQfvPjxWJNDbqXQdpBEWYHHFzNErdhogUjBTdBURswNhQLiHFo"), }, + { .name = IOV("uCHsQNRmsvZUuXbxZZ"), .value = IOV("OzKUalfOPQeX"), }, + { .name = IOV("oVchdMFkrcdeRLAXCTqe"), .value = IOV("udpawQjmxrKRCCYeMLSqkKDeqv"), }, + { .name = IOV("Eo"), .value = IOV("OoQxjguXmzxuSGXZVkJJZAJcpCIRCTMreocaIuWoDvZrq"), }, + { .name = IOV("xOBHBMYvINobLjdhzmVi"), .value = IOV("bnUmHuTzjiCnRMCxEk"), }, + { .name = IOV("ABDsIsyj"), .value = IOV("SbQuEjZXwnEtLniRkeVkIFxkElTRCjefw"), }, + { .name = IOV("xjLcoLGkPdaOioXuV"), .value = IOV("IoublOfgZzMSGBIOOWrurUrrBLoZzKrsZoOFxDe"), }, + { .name = IOV("IaAqEBWgurPnFi"), .value = IOV("hcTrLdEir"), }, + { .name = IOV("ickG"), .value = IOV("NIsFVhCneQwivQZXO"), }, + { .name = IOV("dqTCSuVwMjqvJyoPIoh"), .value = IOV("KQxswaTjoBeuqecJvfNxDrtQWCWypWSdbfzEJNsQLpDDMqHckoRpFIFHBfzWkiqTacdwlSDzRPx"), }, + { .name = IOV("CtyEFRtTjaNB"), .value = IOV("IXKXkJJUtNcIiyQUPVnnauBhxJDRvFWIZCcjdShev"), }, + { .name = IOV("uONmoQD"), .value = IOV("niLDmVdyLqwJLxGLVNCDTKhBTwsFdKtZdw"), }, + { .name = IOV("YFdqLAc"), .value = IOV("vaOYZyotrVdhC"), }, + { .name = IOV("odINdFmyTNoVbfaojB"), .value = IOV("KmIzyDVWjlabtloAPwj"), }, + { .name = IOV("kwTkdLhmyS"), .value = IOV("lbtCJFzDMJBwEQocHVZxLrmANIOyBtszaQMfRNXAMfjZWGToMONczFeicdrcnTWQRBhACeeoxR"), }, + { .name = IOV("zfrFwQrUJEihGkbVt"), .value = IOV("vMdjrqYbdJGkBlMEfBcFcDjBYaJiqSRBFqIxK"), }, + { .name = IOV("B"), .value = IOV("AQlGiMImYQqWGdjwCllWyxPNsYsjmBVztFJAwlXwnAGyUGlZyAPsZrCLbGROXvFMFqtF"), }, + { .name = IOV("tWRszaiSbjZBwSpq"), .value = IOV("eczKMUPVnFJEBdQNbLEINobWpKWYiqSv"), }, + { .name = IOV("QY"), .value = IOV("ctIBpVwRqK"), }, + { .name = IOV("EYCE"), .value = IOV("UflEwCOkfVtLgfRReVD"), }, + { .name = IOV("RqU"), .value = IOV("YQWSbyOMwqidILzqZClTPnBmOisnuXcbafzCZMClyEfun"), }, + { .name = IOV("JYI"), .value = IOV("fwQGacyMBlfRLLCRMXRElaKjKMmCUSPKWTLVFlktPccZlnFmgcoqDxkvBUcdZhhOQFTMtomoz"), }, + { .name = IOV("koWDlGj"), .value = IOV("GtLtQiMTMqZsDnFyYpLMsBNgiwEYIiIJNHAttcNOilQossgkFYBJkCPwWdIjyinTAkzxyInFLEyth"), }, + { .name = IOV("CIKopyQIYHyU"), .value = IOV("pDqNQdOuYaBVAcmmlv"), }, + { .name = IOV("nGmRNiClw"), .value = IOV("inhfmuWpyzocuaHOkZUZLSSMMfhOGIJbZGGdjEIFqzU"), }, + { .name = IOV("YE"), .value = IOV("wUepTUSuGduzMLFkDIAqZrLXGCPZUkzxCmAUAQQHS"), }, + { .name = IOV("OwJFdLX"), .value = IOV("MLXNxHEsbNRKiMavOFomnbUUK"), }, + { .name = IOV("mLgYlccyFW"), .value = IOV("qlotmDxEqoYJLJohhqkew"), }, + { .name = IOV("qGFH"), .value = IOV("gNRfAWDqpObXvPtZqaxSycEDRl"), }, + { .name = IOV("rky"), .value = IOV("EuIGISL"), }, + { .name = IOV("OyJ"), .value = IOV("XAoPRoZYLEOhxMLgzYDQPYjCakNN"), }, + { .name = IOV("PjHOZbWZt"), .value = IOV("mGUfH"), }, + { .name = IOV("aJjnjMSqsnvSMPDTes"), .value = IOV("qZkHYiHlabGPETuobRDTpaULVUGfhBhyTuZahLQKKAMZgYaVOTKGgkXuOnngaaUVSnzQWsnCnY"), }, + { .name = IOV("MptGBdbFV"), .value = IOV("tdaPWYXnngeujMbTVXyuMAErBzpsIDKsBNjRukFxvYQDthJNsApShTD"), }, + { .name = IOV("cr"), .value = IOV("BQFqsRlAsqZWKgWSOJFgWtKCyVrzezeFcQAiD"), }, + { .name = IOV("PbEBYfXvWAIafcP"), .value = IOV("UENCgAMNNqQEeqClzuvsGZiKMYYmJrTAXmDKoymmCeamfRmflTNEqQxbPRrEgRAn"), }, + { .name = IOV("nACQFwHXgNtEiYmRH"), .value = IOV("GcUnOdhQvzPKTTvZYozceHNlOWHWmeXgisJAOwJjIFkFwPrGjMuJAFiXzPRth"), }, + { .name = IOV("uocMMlnVkBLYGQjbFQ"), .value = IOV("wPFSpjCHXdizgqaWN"), }, + { .name = IOV("BmcG"), .value = IOV("QDWGrUfvkRrBdJCPL"), }, + { .name = IOV("UDRxSzcTgZzlcL"), .value = IOV("wkmzQNiTnaxNXmWgmeHMfbtEXKeBFjgUsxLbEwJGXJeMybwF"), }, + { .name = IOV("ll"), .value = IOV("bRGkcaABNkWXuCMeNeKVwFsCspUFWkEyilMdTVoOLuBrchExLUFcbACAaEFZU"), }, + { .name = IOV("ToMggb"), .value = IOV("FCompJxJIGnlwoBGF"), }, + { .name = IOV("pHtHoPwaCHb"), .value = IOV("vwVErXRUqjeZyLjvgOmKFKkWrjhQekYOZzAQzUDtvCmyVbLapKxYXWeIDlNIgBxDvkzZKDu"), }, + { .name = IOV("MVPmggujZiuU"), .value = IOV("LjWLIFhoncWZpMtrspzNAvaiicnbbobudPJfVpaOCmyRtzpBNUCVtZlRueqiernpyJDnxCJjcZzDPLC"), }, + { .name = IOV("OsyL"), .value = IOV("GBzKLdsknssSDAsPaTiNubPXLfBSGXZXPmdPEYPOBJEsuMGnuRBVgwtdEXjcsVPHFspXwXyTtXW"), }, + { .name = IOV("gZHmVYHCFpoQXNNU"), .value = IOV("YpiI"), }, + { .name = IOV("LifckEi"), .value = IOV("qTIlSESNTLtMABQUeNTEaPHQGQPTnWnFPEBvNcLYXYvIjFDMWH"), }, + { .name = IOV("CHz"), .value = IOV("rrkwwNfcGlPIRCopqTUDIcRgQpHfzqYimcsbwAUyvcaLxidqnLXUbjjtwlbYkvigUUGw"), }, + { .name = IOV("uR"), .value = IOV("sDRVOdsjsERhbMSDklVJWWyxqaPYsDyUMqjYWrjjJNLmxptcZ"), }, + { .name = IOV("OHz"), .value = IOV("cFJENsbnUuRYrinlcKoksgVaeUBOJhbyTMIlzpndFtqnIDexxfDJbLuwhLCOfsFiaSnwY"), }, + { .name = IOV("Qubfyq"), .value = IOV("kuccROYEkJjglJqHkMJ"), }, + { .name = IOV("LtxZDYzLCczxzWUc"), .value = IOV("yRhsdlOiRjtNqXeGWEOmxzQshHMqvTiB"), }, + { .name = IOV("YlXaITvDSwZnWCOjUf"), .value = IOV("OXZTnrMdAtldxdcWJlQnT"), }, + { .name = IOV("Lmb"), .value = IOV("SFcTBNOzVkLmhITNbjldJPkutylaVZgdGQrBfKWSqptsbBItOqsIVudilOTYdTEZYRvGArioQHpRog"), }, + { .name = IOV("hqBIbnpsvt"), .value = IOV("tyhLIuqsKbEhsCTNlqBXzOEwAQMpvIUqzWhGhSSucSennUmqtVlmPImDyzxTzoTnkVvCjOveP"), }, + { .name = IOV("AFZwhPcehyhWgI"), .value = IOV("arHpatEgzParqKleCmRFNGWTdJDDzPWHowgBv"), }, + { .name = IOV("IyOWCOwppPctLy"), .value = IOV("BM"), }, + { .name = IOV("EzryXabSz"), .value = IOV("UbsNUMbGVDrLtansISxLjWExeXtQkOAUBgHHRkSJOriuuUuPMKkcEBzLeEdAMQhsq"), }, + { .name = IOV("UV"), .value = IOV("MUz"), }, + { .name = IOV("RGsiZklBcqJ"), .value = IOV("VdocjqTJvgKzDuQEJOnBCotUXAqqlijmYZOcmUAmPgoxdiUJfAZfnPpNtnhRLt"), }, + { .name = IOV("GCQXAnz"), .value = IOV("fCpDwIYbyRXZuDOtLqZUbFcDIhQRpO"), }, + { .name = IOV("xjaDbDDPOUPhMNxWoZ"), .value = IOV("zLHoRScQLXPpgC"), }, + { .name = IOV("M"), .value = IOV("cpVWMULaybpszPtxYHfHGwRWnqAOOaTPPRDOBUSWvOORdKeBpejoch"), }, + { .name = IOV("sFujlZgaQiWZhCBUBnL"), .value = IOV("fiMwAgQntkgTZktaZGxNpmjWEeFynShfDly"), }, + { .name = IOV("itcgDRbvklOCXDCms"), .value = IOV("hbPxQMsFpyKUVqmhtNfDcyGGTURhBuwytmwdmXzIdMUFltuLyf"), }, + { .name = IOV("pltnnyeLgIZHHnsAsoV"), .value = IOV("rTSkcKgVxJtgwktdvXRboPXLuxNxmpUfSbSUbLGnahjRKsVfhuFCJcsyp"), }, + { .name = IOV("xEclNqaaSbdvZG"), .value = IOV("yfCusHhQyQrptpgvqOzJOMfkYjbmeCZyqgOkiNi"), }, + { .name = IOV("TMUqSURFRtzbyhrJtr"), .value = IOV("zrzpwNPRDFzobdHDFlxdRbkAOcUWCMBWrdJFVJuxbtzyFvhmvfqioarTUfTZGctZhgZBRfNCAa"), }, + { .name = IOV("lCJPVn"), .value = IOV("jIEolkRQOIhPJxBOMwOBVQkvovLRrmAPHRXUUzUwDFxGvIzOKYtgNxpxdlCDVPNgWugkvPLqquB"), }, + { .name = IOV("RfFG"), .value = IOV("wIXiMlZjdeOAArmtjAftaTmxUbWYwWNLzS"), }, + { .name = IOV("NXX"), .value = IOV("gPJBiLdXaKKzdnQTFdqEQqLqJUb"), }, + { .name = IOV("Y"), .value = IOV("FZUKDWrRFfgHrYfizfcACthTjALKinhQhcOYvFEghxUk"), }, + { .name = IOV("JFlHRoFdUURAdk"), .value = IOV("mJXpDAJCRTLEMLXBbmwGinBBBjntUvCzyAQKXwFhCqxfQoYSpwM"), }, + { .name = IOV("CAAqzrnwmDV"), .value = IOV("QlIYfgNNugDAeYmSmn"), }, + { .name = IOV("zjcnxTWRwigOAvP"), .value = IOV("xfWOreXkRSFtEJRPnZGQHVEIm"), }, + { .name = IOV("wk"), .value = IOV("ULxsqyHMSrdQCBLFMsEPjAooFMhCbkvrnGLptMHhIIGlJXjXSaMIDvsDzjygcxLuanSUNdZEz"), }, + { .name = IOV("EnqHbMCeggkkMfKNq"), .value = IOV("lC"), }, + { .name = IOV("RbNlhLFTfwsRnqNrqD"), .value = IOV("rIXQcfQDdDWLKOfzVo"), }, + { .name = IOV("BSYwwmOk"), .value = IOV("wtxxDLHOlbrtlTpPYdBQxJrmqSxDNk"), }, + { .name = IOV("AfIhZO"), .value = IOV("MYqqZolCoizRMETTufqFwrvypbsOSxDIifvwxww"), }, + { .name = IOV("weWqgFRGaVi"), .value = IOV("cqQjBFGlFkTcIFBRbYqKHJkvIov"), }, + { .name = IOV("NqEOzvok"), .value = IOV("NHwRdVkbherrfcchrzktIEKKnMvWLwMLfsWbdeeFzIFSLFMOQWAyoWMpxZ"), }, + { .name = IOV("fvoTZJazMiyzgGADf"), .value = IOV("RSNDQSaNKLanlW"), }, + { .name = IOV("VRkIuXCkrBSi"), .value = IOV("mPEsRpfgwWJQivZZusPsOtNHDnGGqyiWBFTGxqauCTNzeHFVShKROKnJxGhNFEy"), }, + { .name = IOV("dWlbZCVHCYAaIFhwgZtW"), .value = IOV("yGWUbERHrBIIdHHoArCTePqyAoNNjAmNmEMlBfwnUdoZ"), }, + { .name = IOV("iBBuZPEHALsbmmtvIHJ"), .value = IOV("gDNqvSWNOFUiRFOcXORaAKHWYfgObiZQODCmnurJIaQwbHwwEaBkvRhPWXffGvrCHpcMchQQUmUob"), }, + { .name = IOV("kjHD"), .value = IOV("hveKMxAksQPDexdOqoIcfctekambImJvruYtassnSVvOJozYkWjDVZKfAPmmue"), }, + { .name = IOV("vplXKgvtASN"), .value = IOV("tqpGsKEIGTcPNBRtKKqDESsMGbSnoFmZUGhmONQzSaRrhzoxlMpTwXCAPElgABKIWQzOVieWpfto"), }, + { .name = IOV("djYOJ"), .value = IOV("WSTkuqJMMziDnVTZxUSTidiPIpwbDeahOhZPUYAkYEpScRGzZjeynFvARTDbPSylULqPYuy"), }, + { .name = IOV("PDvMSlTxeG"), .value = IOV("V"), }, + { .name = IOV("jQttxhuRLcL"), .value = IOV("iiQIdvtLFzAAexQOEEFVarWnjHVNsuyRZSQUYOKsBWFXZt"), }, + { .name = IOV("aIbVAJM"), .value = IOV("RLiCTYFcHjUFTkXOrHTvfaWqdOLnmCUEdLjoJuonbwV"), }, + { .name = IOV("koXE"), .value = IOV("SupFUOIecSveIrZDBvIsqjMjnkPJcysRnZXXjeCLDabuYABRJJRoMiKELdxbrFfAhqoLxJrLn"), }, + { .name = IOV("wDqqowzhimLsk"), .value = IOV("aHogbtsBfaJgJYxwepzxbbVGELqBA"), }, + { .name = IOV("G"), .value = IOV("KGBccmVNPXAmqwZMJmEMabRSopfAhofFSAdfNET"), }, + { .name = IOV("SWRFKpPk"), .value = IOV("NKHXjnMgYLeExpDOBPegPHRkbUMAjrSUDTeJhBPjatzhnSrHqxGTyVOdEIPUDSJehQ"), }, + { .name = IOV("iPOuoSdyLDVLqovotkz"), .value = IOV("VTpwrEAlLUPaaSEQQTguXVVHA"), }, + { .name = IOV("pWNrwZfLPlHO"), .value = IOV("OmsfRaynPqoYUxezeAIiEkmr"), }, + { .name = IOV("DSyyX"), .value = IOV("GBpkQYxnxKcmJuiogGULNaHYv"), }, + { .name = IOV("SiLtrpwBmdrF"), .value = IOV("dMUtWNDOjnEIPASaLlZhDxwtEDDqxGVPlPAIVJlItsdXohWsTtoHiXCJykQGGXuPJ"), }, + { .name = IOV("v"), .value = IOV("AFitXzvGzsIMyhDLsFfWqZWGrGrTpPQuLrrpBXrfzYPRqruJySRPsVhJBqopzWoXQasCCb"), }, + { .name = IOV("cSDrRDzYAuxsvL"), .value = IOV("VVjSpAZSysrfmUcLOUSvpjpymCbFqKwXtkRgzPXeI"), }, + { .name = IOV("qFgITEbMRtE"), .value = IOV("CwVdUQXkCkROdYYFkqtyoAcshZlcoVUampTUNpQYPIbjWROpUSev"), }, + { .name = IOV("gMdzzNsEx"), .value = IOV("HFClenlbXpqvYnDnGdFFtqjpjcVKRicMeEvDnseqpockDSSvHVAODevBw"), }, + { .name = IOV("uEdLqz"), .value = IOV("CAkfWnSwBAzZSPKnQ"), }, + { .name = IOV("scoahtjBHX"), .value = IOV("GYUBuvkNbwlFZbPDlMpaMnNBitwIaAqzFAUPHopPKuUvXeNMeFmhLaODedmQREPQgfJgS"), }, + { .name = IOV("InahQHhQ"), .value = IOV("uDXuuszeLWmpNBlSfMOvsmiDFWEZtmzNLqFJCUZFMMNUetQJInRMDWrPAya"), }, + { .name = IOV("kHjVqkbGiwBGT"), .value = IOV("RiJkniQC"), }, + { .name = IOV("MgEjyr"), .value = IOV("YmzeQjVcjqnuXgtyFrVgberVcNOSFnzyIQEHeuZeQPZpMZdGzsWTbXMtsPjwsSFfpJesJD"), }, + { .name = IOV("HncTEgQUv"), .value = IOV("vERWMdlWH"), }, + { .name = IOV("FYe"), .value = IOV("gRpKfUHYtUDfCPwUHRixxrkxLmyaCMXqrKIBzjypwqWENPfPCIxACtioXDzCqPiCBJbB"), }, + { .name = IOV("LrBd"), .value = IOV("DPgZqybQYTUknjOnSszVXqnSfoTgGFfViSczVzQYyiLTQyhGOTlSaTwCIDCkbtXCGjHepsyOF"), }, + { .name = IOV("g"), .value = IOV("aAjiccpWliNzMsRwcUGlIXyRxQZeHiDAryYrRnKg"), }, + { .name = IOV("RcaIdohrxxLco"), .value = IOV("henxaNKowohXLRSUEbbkoTNAWMUFdIbMyRcGPZPJMkXVLHgWnWEXAPlQpsFbrQzjsLhLwY"), }, + { .name = IOV("VHgPEEReUMLvGkv"), .value = IOV("loopvwQCkmGCfrpyUUDfbeMgtltXrGKKCKGpOWPMrxYRbAGkrLqbGvrdNCtYciWkelagsR"), }, + { .name = IOV("GdwVAXtP"), .value = IOV("tCpEMOxzcvmDpoFmseKdcpUppcYDdynZAEvLlkeCANoTZflpJXlUZfGImaJoLLwFZvq"), }, + { .name = IOV("evBngIWDMdLGpBeVYg"), .value = IOV("qFxkYNNlBzjscsUBupshHoeOQlZKyEnCujHKROIQx"), }, + { .name = IOV("nBhDoAwnMPjZjTiJXsS"), .value = IOV("JhheMHoENrPpLGeXmNlEZ"), }, + { .name = IOV("bhNBLa"), .value = IOV("yWcFJjYNaMtZWhEolheyJFokRNKwvRIOyoLakpHRlOAKiLVaNuFVAUxR"), }, + { .name = IOV("O"), .value = IOV("ZSbLeUHWmutqhRdSMzLFEUjczypmaokBLdNrgDrSyCzhiByMTgAAuyGsUtuooKKZB"), }, + { .name = IOV("TlTONKhtsMclkET"), .value = IOV("DpYW"), }, + { .name = IOV("MkTaX"), .value = IOV("krFXFRUsYoEQSaMqGcefoCWsiuIYBZsbnMSFJdjZwXFUpCPccxvUWRkXwwNXRmAbGItYCAJz"), }, + { .name = IOV("VGgthesa"), .value = IOV("vvYuvdItLLzMbwRYoavdjDuc"), }, + { .name = IOV("XzFKkJdfQcbdUqvcNY"), .value = IOV("cdSGQftScFsDvYG"), }, + { .name = IOV("IMm"), .value = IOV("nZZaGpgIQCpeTbgslQoJATBBtViCQrqGmnnaJulKYN"), }, + { .name = IOV("HNfrZZTuhGvgzGldpiFD"), .value = IOV("WwTtPEppmdPPorepmNFCOeNKHdnyEOBaBOaYHogTGKCmJksUF"), }, + { .name = IOV("ZLvAOLkXxwwFPKe"), .value = IOV("yfqGYnkJokiXYuihtPytKzCeGyCqmkvIzcFwGhTDxnUCzGVnH"), }, + { .name = IOV("gE"), .value = IOV("zGRONTXoQkTOIwYItfwqDaQFtmLbZuPvnZ"), }, + { .name = IOV("ztwB"), .value = IOV("cVMNNskZDVDxxtYHPYbHbdRDTERDxmeFikhavkTGSbkVM"), }, + { .name = IOV("Szu"), .value = IOV("dJghDxddDvEHEJUpkNbOcLSimrncLOzVRZdxpAXZSChQIGDDXTtMxYMzVNhnApUJ"), }, + { .name = IOV("b"), .value = IOV("UChYttdMSsYTrAJrssZGmtttnOJGMbzbkeTpMh"), }, + { .name = IOV("KIsbAxnOLgnTxp"), .value = IOV("XXgssykBkSBUeNAtCUQSLGAyLZJygVapiANrVzfQVIYXqiTcAimlaVYEUmhngUEFMyJSwObAkcQcYT"), }, + { .name = IOV("ZcjrGTLxXWrZBRcoxALR"), .value = IOV("qpCXkcRsCiDSoWT"), }, + { .name = IOV("yygBXmamIMQMQmjwtz"), .value = IOV("mApeZBBgNKTpZpNbfIBclMHjrxBmgEdT"), }, + { .name = IOV("rZtxYoQcFVdGwX"), .value = IOV("NomOECQJYhTcYAnPTkXUISgHaMxpkdWRcHKYdLRuhqKU"), }, + { .name = IOV("LSIdKKNytjwwWTVcdeG"), .value = IOV("epABMHi"), }, + { .name = IOV("zbvdJLhcDjIZVUI"), .value = IOV("vhwPcnjfXxuXCLYrSVLybDdJwCunrFVdmNRis"), }, + { .name = IOV("XHmUzX"), .value = IOV("ifqpRQBYfJtuLCqCWXEqYDLxErxVrzhhhTXAQmwUOdbXXjmVPuFFU"), }, + { .name = IOV("gfueu"), .value = IOV("sibJxiAxhZMgzaPrjMOUjzcvahXfPKplAC"), }, + { .name = IOV("ssjBjZ"), .value = IOV("jSxRxPuwBqRjGkgOMvuTEVIxQertgrDFIeM"), }, + { .name = IOV("afBBpWlyzkj"), .value = IOV("Bph"), }, + { .name = IOV("vNllHtPqEvbiUEwr"), .value = IOV("CHPyuuOHSNEpNLKMvFsbtgnAzxbmjCjQqNIgCBtqSnEZRTLKGZjVUuVarrV"), }, + { .name = IOV("BRfUhoqpjsIo"), .value = IOV("bNuqGeqHhGcDNdzzJPWHtpfOophJjDriZOXpXKxyObOdydNBqSpmEiMJm"), }, + { .name = IOV("xxLVigaLlaytTbj"), .value = IOV("mvlkwaudtkFJmHLwvakQQJLAdHgUYnsrnTCWGiAbihXgSkcBTGVxbvmGRyUAEqm"), }, + { .name = IOV("GYcDnTah"), .value = IOV("MknAqzLutuVxGdWcbtBWw"), }, + { .name = IOV("BhJqkZvnpROAHEu"), .value = IOV("uauGtiMVLYFpsGFSprsZVKyPERttPWXQDcNJVfRXWcOqoLoZWDAzsUmIXQuCotLWMtOtpKtKFVfudVHZ"), }, + { .name = IOV("TNqVRDGrFEVkrLwJX"), .value = IOV("dad"), }, + { .name = IOV("LsOgNNSgRviTSsDi"), .value = IOV("jOhNGchKUygiRXlaCtIgrBLgtaEEASEecxVRybdWojFOEwCUFkbDAdnNsMXcV"), }, + { .name = IOV("mdvgP"), .value = IOV("viqPYYncImcjNwYJyuOEhpirjW"), }, + { .name = IOV("uItgaE"), .value = IOV("VsADEIAPyCjWtpVgWtxBOHQfbrzxZbOblrGRUfZgdVzlEEH"), }, + { .name = IOV("uJKegxZETCiPoBqv"), .value = IOV("FT"), }, + { .name = IOV("TKiGDCqHAMW"), .value = IOV("zKXmfrfReNVWkjiZXErFoMidLSDehRo"), }, + { .name = IOV("i"), .value = IOV("FroBjlUMTmRUFWQRVGXNYdRRWlTHDoFszXSxcWMKDbpapiVFObepKgM"), }, + { .name = IOV("GOsSoiwEJ"), .value = IOV("hUwiEGpOEEE"), }, + { .name = IOV("QtoMcbgOHDxXzL"), .value = IOV("wlKCbxXkprEQpDiN"), }, + { .name = IOV("NAUEMt"), .value = IOV("btcyuQJRepmCFMVkerDbglBhOOoduWjSAxAIUtCtSZfTMjNppOEPeUpESTNTgaMNybqsyIUVwZOh"), }, + { .name = IOV("BzKNsgehlfsLAYbYhn"), .value = IOV("dQiSUoERtZibvNesSpx"), }, + { .name = IOV("UxeCpWl"), .value = IOV("glXQIYQtFcTuLYCEIGW"), }, + { .name = IOV("hYLmbxvqO"), .value = IOV("itoujIrLKISQvivFzpKmoeesEfanMjOBCorHDWhsTMqwGeETABILeaPKndDACyGItGHNehc"), }, + { .name = IOV("w"), .value = IOV("gIWcGQDPcYJATWn"), }, + { .name = IOV("whGMXGTfrdbLIJiBFfe"), .value = IOV("hEHteqgAsPRnjMYFSobMu"), }, + { .name = IOV("QNdprePEULESPzdaSYYm"), .value = IOV("AUuJQrvTOPzqaWaKfmPcgxSNJdKrOLIqSwEVXVuvDoVVsQ"), }, + { .name = IOV("MFHMezD"), .value = IOV("msMUHEkiDoBRQDMeTZdXMAyimnCIlZiYAY"), }, + { .name = IOV("kskgLXkJy"), .value = IOV("thCbeCYVQxpNODnJLkeImsYz"), }, + { .name = IOV("QHFxzctXwBdCoaOYwqh"), .value = IOV("TTTlAbCLtKOZsSdxxaOQwjHSfnZKoJWiPbCqgmZTubVtIkwcOQPPJvRQELKUibPjyIvgBemzX"), }, + { .name = IOV("wrDyEeJEQSXJWeUImU"), .value = IOV("RHpjrLasyiUfrVGtXgiVP"), }, + { .name = IOV("DfNnwOujbCM"), .value = IOV("QiS"), }, + { .name = IOV("wRpDiF"), .value = IOV("T"), }, + { .name = IOV("LhGWSWo"), .value = IOV("uAMRvshbQrLBaLqSYiIGXqJItQUnkeiWwtzOzMXTxScb"), }, + { .name = IOV("rCtsODPgW"), .value = IOV("F"), }, + { .name = IOV("YZeanCWl"), .value = IOV("yVTxpMMarTGfhujHdYZsnkYHXFWsKhc"), }, + { .name = IOV("BZGbiWZoYuSaIvnAymm"), .value = IOV("lUzmbvAxFEDvIOqlPoPcyIpxFEhrXDoXDkiGORuXdvWCsfNrUnLFPaLXpqGXwTIvBobcJCPcdIdL"), }, + { .name = IOV("foAdstKPrwiQ"), .value = IOV("CohfKWBUIJRCzOouCFrz"), }, + { .name = IOV("xTcveRa"), .value = IOV("Iy"), }, + { .name = IOV("kAyxqGsmiFKljHbHJu"), .value = IOV("pSnjETugWvFNmRMXVaiIOcqmllpOwHRbmuPAYGXyaXpuBtbHLPxktw"), }, + { .name = IOV("PedjVaKst"), .value = IOV("qIsjfUJhqHOyCjXVgpOcqBPtPdiPVq"), }, + { .name = IOV("jCrGDMTECDXY"), .value = IOV("OJZYJhrUZpWLmjHXDhAYMTykzgDLIXarNBPEDXSkDbxSLkUbVNUzxkzkrxXfHlKvocCB"), }, + { .name = IOV("dsKhNRXeIDbKmujuukQ"), .value = IOV("rcoivaYczxAsWvZaNIImtGJgZzTCZLTdAAQFcRPgiNpMxjoBSQIVokSdbRRttVGksqcS"), }, + { .name = IOV("myuwPXWRwj"), .value = IOV("DrJcQxgwOPzOkvneTcesZtocdMuidvplOiZBFFBtImHBySzjAXyTy"), }, + { .name = IOV("YaIeFpmlylOUlOCPKKFY"), .value = IOV("TbbsMeKgHHGVpRrjkcKT"), }, + { .name = IOV("zdDFUrWhkVJLbD"), .value = IOV("iRhbjgmmTQiDOerxNIeLsefCHCKNbOVMxBpZzSRGNYRCQfSUemhlTsku"), }, + { .name = IOV("FlgYPGfzIrQ"), .value = IOV("vjINwrubCJsAuGNfdxpcNWgOhrcXZ"), }, + { .name = IOV("XLjzyUGrvQrLICm"), .value = IOV("zzxFjClaMdoJbxrKwhFKCBqqoaBlyVrWDLEraekplCaPCUxDHjLWgp"), }, + { .name = IOV("cwqwyzZjMXjbvRCAA"), .value = IOV("KOnAlZkvDABdMKFpLx"), }, + { .name = IOV("vHFThALNYiCCcnAlEgX"), .value = IOV("EEkUwSPDV"), }, + { .name = IOV("CyCtjW"), .value = IOV("ReEujjTXpGsnBSolugysiP"), }, + { .name = IOV("cqNRvfNYbnzlRGMKnWlR"), .value = IOV("cNKlragGNcD"), }, + { .name = IOV("gR"), .value = IOV("diorCBJdCIuMKOrvpjFYLUuCJEmGoDdZypyAnqJNnXOpiy"), }, + { .name = IOV("yuhFHivPsdCQh"), .value = IOV("rAaBDGLywxHjzxsKuqmVHS"), }, + { .name = IOV("NoKOZOE"), .value = IOV("OBjF"), }, + { .name = IOV("pNp"), .value = IOV("SkdUXNjDEkRglViJrsBnVRINSWAwNCTUdfXCYFotHBNEhcxkGZ"), }, + { .name = IOV("KmoZiBcFFSq"), .value = IOV("PrjitHItdQDALAGrJUPLHCcuOxTN"), }, + { .name = IOV("A"), .value = IOV("vJQbpdRhDqDJtXkIlRcJvZhJDPlujfTregyANKQRDfuXaoJaMvhy"), }, + { .name = IOV("ypVuMP"), .value = IOV("RcpHYRFehVJQbYhskmiBQsBhNrDWNQLUyXw"), }, + { .name = IOV("TwyPlprekM"), .value = IOV("mprPyYmvNyyYmqIVQpOKpxodEWOPxSNeGSLmHTnZVGmhidkayETUaBNEWKyCMjk"), }, + { .name = IOV("SFkakIdUsSITekAm"), .value = IOV("okzbqRMyZXeRwqMNnFDXGKoBBCnVnsZRYmYYgQtFdxeevLEzhb"), }, + { .name = IOV("fYLvYR"), .value = IOV("GDnmlHR"), }, + { .name = IOV("DvCLUVywTwh"), .value = IOV("orWcLEvrhhA"), }, + { .name = IOV("oBdLZXPlLhMyODazk"), .value = IOV("tOhFzQtdUjMOiEz"), }, + { .name = IOV("NhbDYmlPiw"), .value = IOV("YYRjVgnnwnytlwrqpvzNtIWhCRAXwIAodZuBiKJxzeZvJNnctyEUenfdpuMiAWWKHSFSzaroimhfROS"), }, + { .name = IOV("BhGWvVfsyFDSWtGGL"), .value = IOV("p"), }, + { .name = IOV("krVfkddRwGa"), .value = IOV("HramWaDlYP"), }, + { .name = IOV("XiDafO"), .value = IOV("FldFbXBubKBByMatmvtikIsZgXrASFyrWXktyWKSVPHdNPBEzERpBigZOokpCjfHczoCweqTNCMx"), }, + { .name = IOV("uK"), .value = IOV("OuYQtHFJtoYzoThyyxTcAHYzbOJslQjcZSeUDTIHVaxHJbTDkXnVXnAXbmHAWqpWDqmVIrIoTVghq"), }, + { .name = IOV("V"), .value = IOV("JStxsiAeXmHUQyQDiqfaalLLTGWgOCZIdFsPou"), }, + { .name = IOV("gARdcbgFxtHfIE"), .value = IOV("hxCKhHWkQdREApGNtsVcaPhibhMplrIFsAEkQIJhGazkSlQRU"), }, + { .name = IOV("AjXLmKqXKH"), .value = IOV("LgdGyXwriAluBUqLscGeuRvhCiBcvncMqNREckwtaHnhXvDoddzGZdbferXU"), }, + { .name = IOV("ONJfMFocEkhkFQ"), .value = IOV("ZTViciCIty"), }, + { .name = IOV("hmWEqaboHnpEHVclyLfL"), .value = IOV("CseKCDseSauSgBgwGDveHqOYDXoVTIcfsDwxyjggGSf"), }, + { .name = IOV("poGbrsseo"), .value = IOV("seQTualCNwspwsNPkMEWirywcViWHZyK"), }, + { .name = IOV("ukBbpRfKe"), .value = IOV("sIkHpcfUbwCGsULlauixQagpAnkLwCwyGFEwIAdCnAS"), }, + { .name = IOV("WiZslbLsvQQ"), .value = IOV("aMAaijQUyIkSWIJUVJgyfTstaU"), }, + { .name = IOV("RRczZdnrFwyJxk"), .value = IOV("TgRNFcKwtorSMFtgjLFumUUtTGZFkFqJEzAVIhCIlcaAHHxZZnsbHYZgXpGaGeiVtzMS"), }, + { .name = IOV("BFYOM"), .value = IOV("PPJbroCsNsYJbMqghPoiprSvrSTADootfnHUQQodWIrIqWTpvsQiouTyOHq"), }, + { .name = IOV("v"), .value = IOV("tdfeHjZJEKJBZ"), }, + { .name = IOV("DCRLcDcPfC"), .value = IOV("cwQxHBUxTWFLIevjZFBvXVFQGOHXWNujgKjvBXdVPbpthJl"), }, + { .name = IOV("u"), .value = IOV("LuhLBlUmisZQjOsnJQTyQnowotLhBfyOmzcKqZaFDWpWcTudRNlWjfkGDvxayRhGDbSHS"), }, + { .name = IOV("SNJnnMgwossEcpKqQKYB"), .value = IOV("dSG"), }, + { .name = IOV("HYfqCrVPaW"), .value = IOV("YZIupfAFIQjupVsicweVxBMoefnDDtKSjstCBxSRTZHGZNgIqkzBWXWjsTHcyAHIqDQLoEDsnZtTtjx"), }, + { .name = IOV("qExPFCLDCIYn"), .value = IOV("XrMXgRyeDdOtKXjVrLECQRRInlBlQFaHFktvNliyKCAeNVDu"), }, + { .name = IOV("ScqnEmbMKQIjjB"), .value = IOV("aIBRadsqPAXgVgThvdoHcFcmpG"), }, + { .name = IOV("alwthYiqpRzntoQVG"), .value = IOV("SSVyDDzTspWgDsKfsENxhCDKxtOHFjOTozaaQxUfkIlqwTkfvPikArEiqmfGfIGgJrhzSZofCFx"), }, + { .name = IOV("SowH"), .value = IOV("CZcxuYspsoTZsbEiDve"), }, + { .name = IOV("PNoZIWFpnjQdR"), .value = IOV("YIsfmEqCuvOIFVImYUIsRHRCDrRbuflSlHoXVGYicmLppcZlFsyuaAgVKuKfzJbCZNIaw"), }, + { .name = IOV("BvvdXxbVYfPhTXzv"), .value = IOV("TORjetuADQzMDPinFWJxLvHSaIyZgaKozdvYYNVeaOkdgUphTzfUSBGYyRCjYYkIgkc"), }, + { .name = IOV("ibzAxixxMHntwHtovCE"), .value = IOV("ZeLBGrhjsAPSiqyfeGfjuAnlnVKtCPRtqcUYVRFaxOZBzUPSLSZvAYmbKKNflmHnkhfyisfZxWGTWTW"), }, + { .name = IOV("GrjGKgmdoXeE"), .value = IOV("qajWUtJzcUqZdbsMnEQSDKnRFtQzwJjSOXpdBaPUaM"), }, + { .name = IOV("sMvRpv"), .value = IOV("iWbORJtCvPngZKnHrduFtzXIEOyIrCfl"), }, + { .name = IOV("TK"), .value = IOV("XPjLBKxXNsLKnVFJuLJegvMEZkN"), }, + { .name = IOV("eLPMEnBbDcSFT"), .value = IOV("BydKvTaIqaQURIa"), }, + { .name = IOV("QfJd"), .value = IOV("LEzMxxeEjpdzAYgWTQmywYKmAWSdgLzhYSivORWHArHnXIeHVNLiaiJjpLbskSmLKHtOOjcMtGTLfWkb"), }, + { .name = IOV("WESgOAklgmiJapfkO"), .value = IOV("VwEWILnGSWxggWDOQysDOdd"), }, + { .name = IOV("GsaBUmnKHSQmJkTFVUm"), .value = IOV("orLFfeRpxuBiwrqbayWtVQVvqeVwdAeSLZbQpQoKrwKxDQ"), }, + { .name = IOV("ilRqBRFVvmMuPlKMoqr"), .value = IOV("kRAGcbPIraLPIErBPYHtyBqBGylUteBuJRoYmGXjAyetEyVeGJgoQxpTfyyxvpx"), }, + { .name = IOV("HFOfzt"), .value = IOV("eeTolmBErmwwPvzsxgeAQTOhUcJtHGmEqmHWEpVsYNhRqSzJnABLSzYb"), }, + { .name = IOV("MtfvMNNQhxM"), .value = IOV("gIUrfpbUIsbNJvpnXEIsRpFjjBq"), }, + { .name = IOV("UJtzmmjKVIfu"), .value = IOV("WvTEmBQgwlifCnX"), }, + { .name = IOV("ZrmWYaJwQ"), .value = IOV("ebjHbgkNiMuYrmkyXQztNcbYQEXzvIwUOZDDqndDBPXVqfuAMzBjAkHyvRAYTFvteeFRsLmFmAdBwkc"), }, + { .name = IOV("u"), .value = IOV("jkIkSqogiEJCWWZkidHwTBGil"), }, + { .name = IOV("SNpcswToCBghHF"), .value = IOV("tptjKhwxahknCPnbZTlwKQLfiFUFsOGENURYexyvRPVjmm"), }, + { .name = IOV("VpBsVYmPyVzlXhheA"), .value = IOV("zctjmZSZphwazUBbZVWQlfXFUlnYltfatYruyCbqJZWZvImWuFTOOSAmihKJBKMSspVDzDbTqshDQMy"), }, + { .name = IOV("MXWtBGdpXBLosWHeupxO"), .value = IOV("RuSRBRmGlNfRyjNyIV"), }, + { .name = IOV("DrMpSwpmHIAudLpn"), .value = IOV("nqgnIZROOJzszTAP"), }, + { .name = IOV("ZvWwvWROhpUwUiP"), .value = IOV("gQJYinKyPZBaUlfaUzUnxqNZmqscEIfSSZ"), }, + { .name = IOV("ZWoUgyQkiINtV"), .value = IOV("ldLYapcOyrYMAWoMmFJimFaFH"), }, + { .name = IOV("uWJyeIgCfNcrYXxAZS"), .value = IOV("vIqERLjrKYCGwPDVuxdD"), }, + { .name = IOV("mQT"), .value = IOV("GdHXdZgTSHwefiGpfUoYlfkvtjciHDDeWoltWdgbeVfIhgUNCfEUarbqmpN"), }, + { .name = IOV("JSKjgzEYCDOptIU"), .value = IOV("YeRzcEftbtvQDRBanbUCuosNCVloVMDddOumHGEOanBAMSfaLpdyMtbX"), }, + { .name = IOV("rdSWBMinuarMPtV"), .value = IOV("yoRErmYHYBBoyJHSiMmekfADbZSPQlb"), }, + { .name = IOV("bweHVKkBKd"), .value = IOV("tyveokcSmPDmdWxkVqrWEWBOeZbFEUvTTXIoxJNsTOAGSNOjxExw"), }, + { .name = IOV("ZuhmcnSDgseiWUsRofP"), .value = IOV("vMotGEwGgmTDwDjFJkNGcFCk"), }, + { .name = IOV("bbHQkbVVieU"), .value = IOV("RTBMWy"), }, + { .name = IOV("IovhLLkPO"), .value = IOV("pWfBGGSxgSEvAabTcSeZrcBMjCXxXGGkpoBCMFOUKvqWfwUpmjNGumyktctGMgCujAfmOj"), }, + { .name = IOV("jzAzflbgxF"), .value = IOV("PKzMdybyYdYydUEDstkjQVr"), }, + { .name = IOV("UgsuQVZYAzdxmznj"), .value = IOV("qKNbwkxBnrfLdGuLPTfZAzDkawjxYM"), }, + { .name = IOV("wJeKwPVLs"), .value = IOV("RwutN"), }, + { .name = IOV("ojpekPhVMLuAzyagJ"), .value = IOV("nGHUpwYTauOGWeANyqnkaHDsvgxYrVqLkJFBItThRNVfHxeHCpYsxlXTyYZNMKnTaaumfomYX"), }, + { .name = IOV("kmoA"), .value = IOV("oZUdFRKRrmshRSGyRhnIXTEkMpDTEPuICQmNvwPkwJOxcjxQ"), }, + { .name = IOV("DIHtrzDG"), .value = IOV("bTNcFATJDzxNubtbEcUgSfIrsYTdobiOPxjwVzRwcwjgK"), }, + { .name = IOV("feBgusRrGmhw"), .value = IOV("xgKLTKhBkCBhehMCWzbKfIJYsWayEdvzabGCeMfROWhlpprOJlgaXNafahof"), }, + { .name = IOV("hUgnrIwcgIbAm"), .value = IOV("plhMrEnECkfhljWUJNoCUZmGo"), }, + { .name = IOV("LZUpZ"), .value = IOV("XMak"), }, + { .name = IOV("PRDETdyoanhoS"), .value = IOV("agEDoftdvsTvxjkUVhNjCz"), }, + { .name = IOV("hncKkQnhKczyyCFYSGR"), .value = IOV("qoYDOGxFLqwLEalhLIeKsSvTwaUjurbNicsXBlqyWrksXktFdrLxUosjVpgLYiMSE"), }, + { .name = IOV("EYMTHrbhJkUtjaMd"), .value = IOV("DBDEoB"), }, + { .name = IOV("La"), .value = IOV("hStOaAoDxUeENtjpdjBpcXIOzdajXoNwoVdanxktiaCpDSVAQFjjtqEydPoHKjLbrEmuOejBOnX"), }, + { .name = IOV("V"), .value = IOV("IFtvCUdFitblIoqbFOLlpgMEtZdrbgvCWxcmGWialeKByTSfsUpvkQTnsUBplJEomtMbKEakGas"), }, + { .name = IOV("XWKkHntfExfKeKW"), .value = IOV("LiJHnSLvLAboJGeLXYnqhS"), }, + { .name = IOV("gdKZYq"), .value = IOV("pFWyBohROxRxDUEGYOpfHGVyrgjeyiXCa"), }, + { .name = IOV("ypOQEHAxbaJhHYtTX"), .value = IOV("ZtcCrTUwFyKageAavXueMmxDUZyIYrKISfvqTPQorVEsDJRssXAVqVcgoKkcDkigcVVVZjBCrOfyfK"), }, + { .name = IOV("JNVKa"), .value = IOV("RIEkDAtbd"), }, + { .name = IOV("JNFSpqWgdq"), .value = IOV("PAMQrMOIWdtVCOrCGEZFIdrdbtJOLSAOaxnCisWYdom"), }, + { .name = IOV("RMDlpuxgSGSVFM"), .value = IOV("lWxriDZfjTjhHEgaWNxLtpqZWvfSbeoHxB"), }, + { .name = IOV("mubueo"), .value = IOV("mnunFxwiAWTWepdPDomODHgmOaqhjfUdRPCdaTTu"), }, + { .name = IOV("xzHXWhZgX"), .value = IOV("kwhNrgBoxkDPPkgqYJANygOSKtCosizhvWwpLoPpIqbVHRqbM"), }, + { .name = IOV("ZxyVWnpcAjKTbwiQWZoc"), .value = IOV("XPwCPPiqGSrPYjsxdph"), }, + { .name = IOV("NHEDOhEF"), .value = IOV("H"), }, + { .name = IOV("Xfs"), .value = IOV("dTMQYfwhhISCFAmSSIsH"), }, + { .name = IOV("mspMtHmlbLGcflhpnTl"), .value = IOV("eCTokKhGUTUZNViUDHdUFveTrvQOGIleJthiHGmZNzZztDWhQcMVcAJIDvFbcSesnSKSnDMVGoga"), }, + { .name = IOV("aWRikSnWrehqqyhQQ"), .value = IOV("SLMyuPoJfYOvyXNxVjkKHSyatWEUj"), }, + { .name = IOV("uVrhIz"), .value = IOV("giPyDBGTWWDULYZwfbFtfKEZWMHDWdgxgrPhaJUnqhfGZTwYekmUi"), }, + { .name = IOV("HlgxzCnf"), .value = IOV("NgwaQCASesPCzjbFhsdUBWKkasIhXYzWh"), }, + { .name = IOV("ZNgXU"), .value = IOV("GEANrzybijHEBKfZxxILuNfUBhruZahHXeHSrUCyVmALVtPYTpfqbkcfulZcjrXLSRbxcsrvWL"), }, + { .name = IOV("RKd"), .value = IOV("VmwpBbJhHbKyaRu"), }, + { .name = IOV("tDiduGpa"), .value = IOV("AmsxgGAYJfqTSeRCfkKcbTilobxZUiSpBOBBWEFfYGInhykkpCUZEJkya"), }, + { .name = IOV("mNVoOqJQSTbyS"), .value = IOV("KEQBGUwzgKQzJVdISluWvgDskFrgaRUERzdTKBztQlmORnpcwNtVHWzInykYoYFvWniEaKxrBEyHHE"), }, + { .name = IOV("lN"), .value = IOV("aIqhJHHAxAecNlGcfBKFRZvieFBbzzOHRwJHZCcgddfbHAaadRJCEQifbjujZtNb"), }, + { .name = IOV("odLnVbMrihMCgylFzfm"), .value = IOV("ZuQBqsPQrERtxvgoZGdIcDxScsSLFlSFoxpAdoHvIfpjchgDnArlUvbEiXfKYfKGcbh"), }, + { .name = IOV("tQKtOQpLclUrTfFZlKbq"), .value = IOV("AXqgfiRssyRHNnGxRPUKnP"), }, + { .name = IOV("LSqMOpKbzCSt"), .value = IOV("dcVlfrwJSJpHaiogzBhbFlLXfALIMZTeedQQMjNfVJEfqeImhMfTjhqHMpjmgjyknXiZSN"), }, + { .name = IOV("uumKmgFWDssg"), .value = IOV("OInajW"), }, + { .name = IOV("YIuCNweIPiIYkgqa"), .value = IOV("bNBxteknNhpTvwN"), }, + { .name = IOV("NAxkKnykjBalMAhAqGvH"), .value = IOV("nadVgpGXRYUSCbatPAxWPWhrTukTkdlJWAnEybyMJpJNuaVuADTajPhUWJvbIBBmE"), }, + { .name = IOV("ToviAAhdjgM"), .value = IOV("JWeyaKFqSHZJkVNSsvfDsAeqehvsCzMrJgAZoRXfyftqKxPtahuVeQICMAHoNwbimz"), }, + { .name = IOV("jiiKjxmEnrgbQ"), .value = IOV("hkmRBnCPmudkYuETuKlGSkYNOPGuztrGGEZStClnQwhGOMBzLhabrfeE"), }, + { .name = IOV("gKCVhcyMrwNIyuWfjI"), .value = IOV("mFoEbppUWtkvvJutKWjKaoHpipVLYaWfcnfFP"), }, + { .name = IOV("fbCOQMSIAL"), .value = IOV("DuNrRKjzNmNJmECfhpfostIdgMrOMjZzRdWtwwKwXMRkhmGm"), }, + { .name = IOV("rvhpi"), .value = IOV("TFXdUVDquyUImRrJyAGFdELAgFhutAINcaQpITNVzDBxCOwPfQrOGdvmblJOg"), }, + { .name = IOV("VDok"), .value = IOV("rGkuxxnsOXrUyFjKtCYGaQKoPEf"), }, + { .name = IOV("txnublMBhgJYzUora"), .value = IOV("LeoFOWyLpBdVCgluALYvNewnCaMvzt"), }, + { .name = IOV("GxuCEXgpbTarAug"), .value = IOV("sZfQsADstTRzJHDUmevVvrjtqQMAcuBwezsJWwCBhJGATAdiFBYuMBpWR"), }, + { .name = IOV("rMIEJEKwNpJETSziWWLu"), .value = IOV("SWDDMmDxSYzeYhTgXLtkDlKCIfWbpktPkAkHiBEYSbUHflTryAVyQyNGBejKotJ"), }, + { .name = IOV("nQz"), .value = IOV("alZjnyJzxxdaifWmCmGDEISEIHUsvFuKyYqIsXBuvBaBDwkYuDSBXjlJOPVHZGyVp"), }, + { .name = IOV("w"), .value = IOV("koYeVxfAApPrXDcqmgSlXGXkjSxcoJnKWHNXfTIBfCCNxOJjCyIYBdgAhfxTPqiGFAWBsNMyQqKAvsf"), }, + { .name = IOV("Whx"), .value = IOV("XUawHfLmhlCusUviZxQZExSGDpZGlLsQn"), }, + { .name = IOV("IEiyrTWfBhsmGncWFal"), .value = IOV("gsYEWSGxOOQXQbQymRXFHCanBWodIRLOGugpDAutiWqcUkvIQcVOkCKNWcczPfQsfNyGJUoQdsiICmd"), }, + { .name = IOV("SRewxMmPNshGCubWqR"), .value = IOV("WjOpdzHZknyicuNsySgllZAaqWFdYoXlNKxckjUEhWqPSa"), }, + { .name = IOV("nxXJSltLUMHSO"), .value = IOV("GDCMgDyCZyaTQuCPYHYSWCSWgZuEKn"), }, + { .name = IOV("rFPvahAhaIjUPAoQXR"), .value = IOV("YmAOBrYIiOjBpfPnfmGvyHEUuWldzkMWBasWlhSsLrcisAzvklcObrqbElVmVgBMGrvkZg"), }, + { .name = IOV("tkeyzjCrOQRHaF"), .value = IOV("LnvMZFzmaQAucubROiwSrdxotPoBLuWzcYbPRDHXCMTOZTyjTlxzJQPlPhFNUggJNiSrHjdTr"), }, + { .name = IOV("neITBiMHmIhda"), .value = IOV("gRnkyFSDaaPJrTEVGk"), }, + { .name = IOV("wYatBlfbAGyHKSnKme"), .value = IOV("NTTSHZbvIxNmeqjKqxNysqmktOIBKBTgxjKrUoPTZoCwWISACrfYINfsewX"), }, + { .name = IOV("iotxdYbE"), .value = IOV("WaTHznMmGoMmROtJFdfAUvlEAsAkowiUUbNunZbkSaaqvLiLUJWlOBwQxiSvpSSturbDDHqpTxCxIr"), }, + { .name = IOV("KWvqlYuMmhrFfMvholMc"), .value = IOV("IsrEisrETDFKRuYEeMamMYeQqUkSUNlPFzzxHgTuxSq"), }, + { .name = IOV("DjFIqFtOy"), .value = IOV("uDuWBkBoIFFYqTfuPFzBTYtxqfaqPLvanjuFgGHucmowuPjzktsYkDNhnrYfLccepcLaH"), }, + { .name = IOV("oaZNyBpih"), .value = IOV("EMlnoXhSRAUXjVLwrsuKKQy"), }, + { .name = IOV("xOMDQrfNPG"), .value = IOV("EYlKVCvPlrMdcnVqLYSYlfJEuxgoYoekkcGsgxbyZkLEdDqeuUbKdZRNbPrGULOiefqNjLuVLFl"), }, + { .name = IOV("jgTdtCHdEZ"), .value = IOV("XiXIJFMaegLoJuqtKucYLFbDKOZKzrcsBpovLmMXvb"), }, + { .name = IOV("BzhKNOfNg"), .value = IOV("kSfRMrMJafSaliuWyr"), }, + { .name = IOV("NWwA"), .value = IOV("MzZYXCccQJFKJVHnRbhDleOhxHEyQrV"), }, + { .name = IOV("WVnggUqIItNhaJcVn"), .value = IOV("LltywkigN"), }, + { .name = IOV("qguNAAzL"), .value = IOV("dWiozKWDhOFlCKjJLufuwTzTypQHuwPGhFQimxcuHAGjSINyQlQoHUYSIoKsHC"), }, + { .name = IOV("FxshQXQRHjffJfBAik"), .value = IOV("NvEBoRvQrdKqBbAKtCHcQOkrSInVcsjyezGrfouAHRWGjifQGoiyZpdtQheEPBV"), }, + { .name = IOV("BwGh"), .value = IOV("kSlzUMsTlwwDDCriqmKJWowIVyrpLkzcyndvoTvXefobG"), }, + { .name = IOV("gW"), .value = IOV("sTCAssJSzOXPYHffRQwFpAtsmsGlUJEKZoFSWTrDwTaSoApZncFahoJuDlrPquVQzWRwDEesZrp"), }, + { .name = IOV("T"), .value = IOV("grsGxrvwFGPAOJFDFnTKeqOPvTdKJscUDKTSczEYumYvQVmmxAuGQhgOhygZcHJSVKlfpTd"), }, + { .name = IOV("YnKKdJGLB"), .value = IOV("YNojsbrwcYsvZcVlxYGrACHjHvyJEyNspdBbRnrnoJgVnu"), }, + { .name = IOV("bYPQaAhmckkP"), .value = IOV("BgJLZPNGSsBbEAOkTrtEWSzKkNFkuvlSonEvjZxUoad"), }, + { .name = IOV("AGpGxaACnHZbI"), .value = IOV("UAdHobxBPIttRFfwzdwqGvjmIjQkGSKuzpslIKLHBoEAmOsJoRDoMjUGYOnLwmkJfHkdpuzzKSMkOFOb"), }, + { .name = IOV("klgd"), .value = IOV("LPhTowuUSeklcyR"), }, + { .name = IOV("GlzBjNJeXztaqVLzGYh"), .value = IOV("krdnHRaiZr"), }, + { .name = IOV("yUmVtkELQqw"), .value = IOV("gRPPBwtdEKsFWzomoPjsQksbUSlqOPaZSjCndLiWIanpUrbvqFOPBpqLhndNPkKdZxFBREDhOqkHsdy"), }, + { .name = IOV("myPxkLOyJhjNrsptlL"), .value = IOV("mNubzClQBysktvicAWzGovfOBcSGOCsERifvlDiOXxrKyenClyWdRmiwtB"), }, + { .name = IOV("RciiEsVslcUXVHhV"), .value = IOV("oxenVacVDoNEmNUNATrOwKiQoOlaMhvnnaaZhQolwHAFJZerbJXsvuxprWuKIkqliTTrBtvDOrTh"), }, + { .name = IOV("aAgqlmZHdsNvYETjbJ"), .value = IOV("hdsmBTROkSmDSpvrtXxlNDz"), }, + { .name = IOV("VwjIsuMfMeIUNRMJ"), .value = IOV("TKWgspDiGEmnAtdXuaYjpedWetsnSUEYKIbkgoQXAZmgeBEo"), }, + { .name = IOV("CnedcjaDYDy"), .value = IOV("VXkLqUsCeVYqTJnGoSPsYHQXuuHDnaGpCEUC"), }, + { .name = IOV("puiJkHXiytcNNef"), .value = IOV("wrYAqriVvseuabqVseeoZasJRWZjNVYO"), }, + { .name = IOV("dJunvvLodjK"), .value = IOV("ICOKbfvmPYMOrYSdWlkyHdedMZgaNxieCiCjHNHezckmPnCOOpdLReWACTNuprekijkZQynIXARVq"), }, + { .name = IOV("XlfFkubmwsLMlLU"), .value = IOV("IibwRiYqLakifUideNoyRxSqOgoLwazY"), }, + { .name = IOV("lZCOlqjVOW"), .value = IOV("rRLmJzIDKhdKDuGtVSI"), }, + { .name = IOV("KfMqNRRFcEvDKpCc"), .value = IOV("HvJxseAwYFQAKhiAzHABQCLyHffCOu"), }, + { .name = IOV("SnVUgyL"), .value = IOV("qyBoWhFdFxwt"), }, + { .name = IOV("iEmieZzjYgTV"), .value = IOV("rnQTWIEaKMjYKoVrGFWmaTgHvPUMcpXMEvvVhzZzUYZlPADHDHiaMZToLBfstDenCkOa"), }, + { .name = IOV("LpH"), .value = IOV("NficVAZkTSKV"), }, + { .name = IOV("oaPeF"), .value = IOV("CNxrMKvaOsjQVoeGnJKunujXbTNgZpMZaoqEzPUrTVHpIcXnLojehxoblVqpCjCsGl"), }, + { .name = IOV("tKqOldQFUGpnXEkpObF"), .value = IOV("bucecSAPYdQMjhGoftjmoxip"), }, + { .name = IOV("PgxXaPVkpeWILcMQMG"), .value = IOV("hgGpPxzzyqGlyUpNtJCGnsVmmjajdZJIiiFUQxjxiQNLwJa"), }, + { .name = IOV("jXC"), .value = IOV("ZGUb"), }, + { .name = IOV("PJaH"), .value = IOV("QUQkpjwS"), }, + { .name = IOV("rgWLyJaNiKS"), .value = IOV("lAtIjfpkHSi"), }, + { .name = IOV("leDWWCpIv"), .value = IOV("JBgQrDvrbUFgRDGrKtUdWDPzoJvIYqVCirVW"), }, + { .name = IOV("wiWB"), .value = IOV("hOIvobPgNQeRADNRAOUqg"), }, + { .name = IOV("wsYAJvN"), .value = IOV("gAuWvQpNf"), }, + { .name = IOV("IGfOJ"), .value = IOV("HLCmgL"), }, + { .name = IOV("edtRFoz"), .value = IOV("upCUYqLghJYQUEBNej"), }, + { .name = IOV("QYbLy"), .value = IOV("OgdYuIdxFwvDSzVapCbdEoGBzuEaHWKRrwCJGXWulynLLtRLIG"), }, + { .name = IOV("tNmS"), .value = IOV("xlsgnddAJLN"), }, + { .name = IOV("QhquzqK"), .value = IOV("EEKdFIbQRzOxFYbveBMhrDGPV"), }, + { .name = IOV("oBRTFjwzsQE"), .value = IOV("QETw"), }, + { .name = IOV("bpqdfYJcUMkpMCcpOoj"), .value = IOV("VoxnUZdWQWYQVlHNzUDvnhHrYVfMjILdDSvQPridDluSLkNnrXyFaTnZVOHFUkQWgq"), }, + { .name = IOV("nxKE"), .value = IOV("GHdgAjowSjfmZkerqMVeSfFbyPQkTJRIcDYCsTCidRfebNzvLGYqRtHgxCjvOMzycWcXqlyefOU"), }, + { .name = IOV("omCyxfhEeCl"), .value = IOV("gwWODUWesHQDYDApwbaIlctzlDoQmBVYhtfzjrgGV"), }, + { .name = IOV("F"), .value = IOV("zGTTsHlcgRjZTBOasAAXuiReAjxafCQrcGOLmZcukDGvoZpyOabFYWWnUIbRiSCZZkOjhqpc"), }, + { .name = IOV("QJyFhcjean"), .value = IOV("ClCCFRshtOBuhLwZbGbvkBVgQOeqncrDMGyqSFKbjPpqRl"), }, + { .name = IOV("zTzlUehTBxdBPSWec"), .value = IOV("ULGblQokBHGlHzdhIuILaoeaUKpqUdAYUQzyfkUoCwdnWjmoWkoUcZDPmKxCQLHrQlVqgXBknOVYnd"), }, + { .name = IOV("uVWgAXyqoXI"), .value = IOV("AZIpcnvzblXSGmhougNYOWJwksLk"), }, + { .name = IOV("CwzRHYcIoFTxLUDxBeI"), .value = IOV("MOYwGUhKZlygUCFBMllyBdkitLkkXNbccPhDQpvMMrFXeHmRWDXtbHnBWcckHOUXhwOoTuSTWKT"), }, + { .name = IOV("ylMemytst"), .value = IOV("RLJWAlqefRwJY"), }, + { .name = IOV("YBcBTnsRcgDE"), .value = IOV("IqRBiKFqntjQjykcZaYOSaKLMaWxELYLGVnYrFLPinEzfgyYYHzwSiSIYObfEPpBF"), }, + { .name = IOV("pz"), .value = IOV("mX"), }, + { .name = IOV("myPbUTGKGuVUbC"), .value = IOV("uiJgfuOwuWhikoDMQYRMlUHqVLZnWopaXJGNePtAEXiTxhiyUyBQ"), }, + { .name = IOV("flTD"), .value = IOV("RQDrYlyoKWsomisTHP"), }, + { .name = IOV("IvCTFPuOMpTdFaPY"), .value = IOV("zyICaPXkJPYMpcgKuMMdxYoEZqgcWXeIibgZqwRMgqrZuhMWdlTEsMHMITbYifEzaQlZmOVLUKFpg"), }, + { .name = IOV("tAWNmEdzxKiL"), .value = IOV("TikoxVsFrlQgeIivNBnslNEEGYemeVAxpaCZVkKqRfPs"), }, + { .name = IOV("tUABMxLTZ"), .value = IOV("ITdvQsslhvUaenBwQl"), }, + { .name = IOV("CkSWyMvmYkt"), .value = IOV("gmdsGqvxeOjWxkOiSimHPtGdWDavqHJigYYqsEjTefUfKEJFlsmgAtK"), }, + { .name = IOV("N"), .value = IOV("eSEtLolABC"), }, + { .name = IOV("IhTaymcyqFe"), .value = IOV("WIemBSmLaXuUcRcsPFGx"), }, + { .name = IOV("bvknctgIBMBdu"), .value = IOV("wjqUeCtIIpvWPzxgKrIDzIHgGVSdLK"), }, + { .name = IOV("VLFDZA"), .value = IOV("MfEGUfBYy"), }, + { .name = IOV("zyVkza"), .value = IOV("j"), }, + { .name = IOV("fpA"), .value = IOV("SRXkrwEKswrCiAuwCIXiLKWtkNhaEClhrEngCSIOfpxUXxgyryXGWbxgIvxGtGynHOLzYV"), }, + { .name = IOV("lOeYc"), .value = IOV("BnCkhZhEztkCTidRoEMRgLcLlaewooVPczuuHY"), }, + { .name = IOV("wttiUE"), .value = IOV("HIKyaYrvteqxMiXgLdAGctbBTzoyRcApBSVtVSLrpQalkVQoJVsUChottmwlANOUlqWfjN"), }, + { .name = IOV("bPjAjg"), .value = IOV("ribOwCdUREehrRtCyomCKJAxLJUmRGxlpfVrLsmgsQrxANLlimMaHrjlhCRfEoJXggBYLBdfhABmEpw"), }, + { .name = IOV("bpBaTvjDKtwodZYB"), .value = IOV("KQJYsVOgSgQJHlthdAjLsfCcBBFgOkLFjfLpueXkXIKzbOZTzQzkkupLqdxUVWEhcrMqqDdfCswJjbsk"), }, + { .name = IOV("X"), .value = IOV("FKJKBTMHRTiqEaqECsogacXaobiO"), }, + { .name = IOV("IQWLn"), .value = IOV("qJyTFuxSEeVAAKrzojiqgeBTdYEJtLXDLTQQMMeWjjpRjPsOBHLYXo"), }, + { .name = IOV("pfXErBwgRrrZwjpsXG"), .value = IOV("dfiofhgXmBSWZvVbYLRYuQYzCIeqU"), }, + { .name = IOV("RzqVYIJbLzdA"), .value = IOV("JSzzLKGxHIgxCLjbctXOvFGCihsfzWthzKJSkqV"), }, + { .name = IOV("fEWHziztfPqyPrZvK"), .value = IOV("uukmhbtUITFaCwsOlkaVcvgOlpRIsPypMehycaqvNHVmI"), }, + { .name = IOV("hjYzADumzwqevNIbd"), .value = IOV("gCuzNFhsMpo"), }, + { .name = IOV("ajXrUpDJrjlmbHjQlA"), .value = IOV("qqfNZOTBMRmXvrzbgkFhDorYRLyweiPJZNWnMuRdEydZtUjHwIdoWBncChkRhvvsZBBaBlVt"), }, + { .name = IOV("KqBvjSb"), .value = IOV("gUoGTzdYihbTPFTQPuSjbJmc"), }, + { .name = IOV("OsXqWUsWEsFAsyfu"), .value = IOV("NUtIGjssgshHYGkbvBcFtgXYNFqBooFxv"), }, + { .name = IOV("GB"), .value = IOV("RPZnBZEFvqZPmfyRdqGCbMTzMvFAMUFu"), }, + { .name = IOV("NKzvGuLeC"), .value = IOV("CaKPxqohGUzLMuvMGAHblxMnxoZaihtSUaaVZGrOmTomUpUnAWxeBAmcWzi"), }, + { .name = IOV("uMoBWknCGxTrQ"), .value = IOV("WqpcawUeFgzwbMHdvbtkWAsDWcluzsQTXGxaBPsLIqjFbHXyjKHCFQHERBgZhmiERidrJfPzCgC"), }, + { .name = IOV("GQqUnSdVpar"), .value = IOV("gutJIAhwZtootocMYmCnZABvJdhOdkRM"), }, + { .name = IOV("DnXIYoqzudBPokXhdolL"), .value = IOV("ykkcnWTeAdwYhXycClzIJlJqlGWjTciGVKjEJoonfeKGlyCKgrTgSyQCrP"), }, + { .name = IOV("vigMJNiRxnOaTSgRr"), .value = IOV("KvSZbemuYrqSXHNJiwXbTMYsTackXLPLuO"), }, + { .name = IOV("clLJi"), .value = IOV("wjHtkXWRMHqphVVucLszaYqGeJrfMvafvSeqpYsuxzSLrbJBWFGpMfBnmU"), }, + { .name = IOV("iz"), .value = IOV("qnGwGsWgJQOyGgwnvKXKwdMnHbZlbCalOH"), }, + { .name = IOV("uMg"), .value = IOV("GRtPBfzFlxPdbJNPrRPXLwqYZoQekF"), }, + { .name = IOV("QnknnZumNY"), .value = IOV("MiUgLyTeukrQclZCUYgUoHXFZsudAMxHQwCZmdlCCtdROPkoCmivgvFVSi"), }, + { .name = IOV("mDGWLD"), .value = IOV("BENFVPvFEVTpZYWftZVXBdifgPWMhRrcljBOEHqIIAFBXDKHAaHBpZKhvrqLaxossUXacNYkb"), }, + { .name = IOV("BAbaYPn"), .value = IOV("HtsWKWLzL"), }, + { .name = IOV("KghCOoyQOYfhgnGB"), .value = IOV("BpSeEqcMAnHbjpJZfysUcenPxJOpvdJZKwmkCY"), }, + { .name = IOV("ZESskcWVMEB"), .value = IOV("AuhwDbySIKUAxAyvHNmtKfEf"), }, + { .name = IOV("VfLVaHhtRoLQwINN"), .value = IOV("gxE"), }, + { .name = IOV("U"), .value = IOV("wrvoLlvxaHLfgvGxQhnvMaiaLvNcHalevbDMrfmGZocmPrMpvaNj"), }, + { .name = IOV("r"), .value = IOV("WgnCbRowIDtxpqWdxsucmUtKtvuYJDmlLxVOmOVpyV"), }, + { .name = IOV("IyWLIWqiobRt"), .value = IOV("ByMHtxoTMms"), }, + { .name = IOV("KtCFrBGGqqORPpQLx"), .value = IOV("boskGJgmEzMUJunUjuGcocLDOWfKeYYnyBbSafTnGnUcRivNNzdTVVHTmiORdGdcrurdFjOynzjMUHK"), }, + { .name = IOV("EkrRR"), .value = IOV("FEuiHeSruEQSyDquVDSgNXwdpHmCRAovkGlRoGovXMPBYeUUCxJIyjl"), }, + { .name = IOV("noZIDvFursbj"), .value = IOV("SlvaNkJwWJ"), }, + { .name = IOV("ZmtundyiV"), .value = IOV("qixhEiaHHdKSwklwRLAdxPjibVDghNKpiIPBnGhZqTPhvhaTYHwJyfdwurPaiSTSErT"), }, + { .name = IOV("qqFtLNSriBg"), .value = IOV("lXboFjyJGtzzsnpPBSAfOZCNLvHmQOSnpIlsAWGhelHYiOTTAFwZBxSewxHRUVSAZKUwjVKaQy"), }, + { .name = IOV("D"), .value = IOV("CMutsQGMLdZJvpBNUfJcpwUqOCccJeZwDxSsZUvrpUmalAFQdENsUxXdWwVfdHXrdlXDlepOXkveUuIw"), }, + { .name = IOV("MUesDKbTrqMT"), .value = IOV("wrsxazpVutCNMOYerVXEEeXZyJQxjsgYytHjXo"), }, + { .name = IOV("ihxaHXxneqLfBR"), .value = IOV("vddBNIpCYJYCjeLPLHHSZvRsCGJxMLxbiUDfSVgAvZSZwjcCqxeJ"), }, + { .name = IOV("XkOeNGNlE"), .value = IOV("NwJSRxsrSQPKIFfUvFFMeXuOcZdfNGzmUrjMjiWgnAWnOclZhAhcevxlqElceFTawoa"), }, + { .name = IOV("LtvErVrbpjsMAUYY"), .value = IOV("RZzWUAyk"), }, + { .name = IOV("VnHiJTflOm"), .value = IOV("g"), }, + { .name = IOV("EPoJF"), .value = IOV("erMtImqMEHbXLaXFIsdOvXyIZmKRixJFAzGGcFtclPVpzh"), }, + { .name = IOV("KvRfedWmDLEPtX"), .value = IOV("BKnfsIDPAZWQTpGPlxzElhVnuYUVJwvBcQNZsihwzUiBScvZksYWZBuEkTBmvHKCeYPLJhvIp"), }, + { .name = IOV("LHCAkmpXzFs"), .value = IOV("MLabgEbXgzERnuSTktZouhwLFFkIuIxQwjLsijfcWqUDyNrpytrxLi"), }, + { .name = IOV("gOjw"), .value = IOV("IqZKqGvavlPeYrNRWtSF"), }, + { .name = IOV("KmDwcHMQk"), .value = IOV("ulggdjlYDoJFDYWD"), }, + { .name = IOV("owxfPQPS"), .value = IOV("oweZNxooGskdYERaqRniGkNXCnqbWZqVgkvCCEaexixTdftSJQCUmkuz"), }, + { .name = IOV("yuBUPewL"), .value = IOV("gOqoXdtivMAjMUjATHnEZm"), }, + { .name = IOV("ctBX"), .value = IOV("erVFnRiVryAFiToqnVzfGVoVpIYAOTRxCjhIvakHKdmCzY"), }, + { .name = IOV("RdFR"), .value = IOV("ZHMYZqcHUvNRXzAzKNkwuouvFbdDcwCVwxDNnjNtCAChYEyeKTy"), }, + { .name = IOV("njgydHvkqIH"), .value = IOV("dsvi"), }, + { .name = IOV("GAAjt"), .value = IOV("CcrinxtqWuFjMQWYCbHtFDwA"), }, + { .name = IOV("WDqpWxKOxzhxAIoO"), .value = IOV("YpJPfhLYZRif"), }, + { .name = IOV("CAmxKIPCHFPpnEywKe"), .value = IOV("bNtiKXToFONOYkxQ"), }, + { .name = IOV("NAZNqcXjTir"), .value = IOV("YkxNVymoFjPmuQaAucuLLBfCAzuMvUUCkTnRjBoYzznVuuzixhLHjgMAUCMXuVTM"), }, + { .name = IOV("bqRvOvYaEtalfjUoWBo"), .value = IOV("VLmtCAioYEfKYCHXShZgxCLtNvjbhNoVmOmDlDLjvVZgbSLcUgPO"), }, + { .name = IOV("AGzbjvg"), .value = IOV("HSIkRVzfvJurhjuKytWFLehQbexkFJeHtD"), }, + { .name = IOV("jhZMmgspYtvqIXvz"), .value = IOV("bncJNxzKOgnyNzCwVGFdelDFAkmZKneluuDSfsbpGqZgWHNsZXyHMSnMqHbKjETirxr"), }, + { .name = IOV("SFOfjidIvuNrHMmJWXu"), .value = IOV("wVllGlRcePsAreSnaGsaoOLbMPinYhROsIpzKQJGRAipGGruaErWIGqcGOYChAfzjMWVgAxqs"), }, + { .name = IOV("en"), .value = IOV("YEEakjxJWCiLteRMxWxxpvoYKcXINwHkDitJpYJWgkYJeFQpABHvqHuGFOvSuHlwfSayTv"), }, + { .name = IOV("npOwbyLNHQT"), .value = IOV("SGyvuGVwVSyiCnWhBZNsOoibCIFDhklmpmvUvnisYXoeMECFjALvikOnsujVdrZLa"), }, + { .name = IOV("EybeOp"), .value = IOV("cbfKjhAAsQrdsiehSojmtKxZgzReSICOYLObkiklJzpKCoFWeHNNtncgiEQvxCspO"), }, + { .name = IOV("zkCLMxQHZqRby"), .value = IOV("CerFKgGjUetxhCOpRKeRzIbJUZVEWFEQLMgMQaeVtBEeMYWzCfvzfcMrzqtcRLJZTWBEdMPe"), }, + { .name = IOV("izWXzN"), .value = IOV("FzwFYwIJRZTwytusihxVRMH"), }, + { .name = IOV("eojBIzbTFGmD"), .value = IOV("NOxSxvlKFcgcxemsBDBLky"), }, + { .name = IOV("PnwHPdQNxfDexT"), .value = IOV("AKyuscVxFlTulbJSGXDrzKDvHny"), }, + { .name = IOV("m"), .value = IOV("NyAnlInDLnOufkvmwvBdhzAEewMlTnsRCwxLTlcziLeTSNjhoKjLGCXUbD"), }, + { .name = IOV("fKLhsqHnaqQzkCs"), .value = IOV("eaWmQPztfwAlBYdgdJCufTGeM"), }, + { .name = IOV("rihTFHrNVymUz"), .value = IOV("pozmgqmBQ"), }, + { .name = IOV("TIlhdXubEePwaaZ"), .value = IOV("FlWjxuAuNvyWqsFMQybaqzDftqzELuySl"), }, + { .name = IOV("p"), .value = IOV("EgtxOBWUsrUACBsWzfoiitRtmb"), }, + { .name = IOV("z"), .value = IOV("jsPmWDSocbsKJmZzSwltvLEpZihRgEAsBUaIdHzriXsFdLniqEydBCZVUsrlu"), }, + { .name = IOV("tigG"), .value = IOV("uahaAqpJrWpUZUNzvPxXhpXkpzogtsVjGsPBRGFSvcYUYKStbmiyXRaEYAhVTWUdyhnSkH"), }, + { .name = IOV("BkYo"), .value = IOV("rGeMBMqNzoFWIiDxzhENRYMgmXRJqXyrDQJfzmIivmpGhotYeZvRZteVNmMtUXHniQCtByLxPHk"), }, + { .name = IOV("StNemKUUdcZL"), .value = IOV("kleyWcIdEwImSddbkYblscltGvq"), }, + { .name = IOV("SjIORBv"), .value = IOV("uuwMgTZjQXVkBETWLQHqZfjqpQiOslvCeLvOaIzJox"), }, + { .name = IOV("EYa"), .value = IOV("LEUVAvAPbOwqpnktXZPxwDnvSLmnBvldjcQbGpqryEBqHm"), }, + { .name = IOV("QlenrRAFilHrCqVyB"), .value = IOV("RzAWLEpDyOdSkEQYrTJuoyUvhqNKvbKS"), }, + { .name = IOV("C"), .value = IOV("UrwVHWsnPXuPuKXNSqxVrTtIiDLZGYFhxOoxPgUeGigwviwluwjKpgbklMRceZtYBGrwIJHSYt"), }, + { .name = IOV("TMkHDpnUXnEC"), .value = IOV("wDvtUhcmaLPLoLULzofu"), }, + { .name = IOV("BjduFMSkkubBKDOPzhbm"), .value = IOV("fGrRGfiXNniMdZCFoyUCSCKprlpnAzOZYPumuuLrWLBppdjrpKYXXTBJRM"), }, + { .name = IOV("iUEwEeBQwue"), .value = IOV("OGMzfrWMGQfoVrmmLASmMSZAbxq"), }, + { .name = IOV("g"), .value = IOV("VTRlNOdWGwQojVTZYSpzcBDPwjpvapqthOWUuQe"), }, + { .name = IOV("ofW"), .value = IOV("ldyPnpflClEzLihsQkdOmgzsTqlZLnNsqzwscFZlrODq"), }, + { .name = IOV("VgnnyrFuWyMrcRRXls"), .value = IOV("NLxPRhHYOMDjeJJaUqOgwLVfvJiRIZMOtrCuduMxlOXzatyCOqpEYw"), }, + { .name = IOV("buScnbbOgjMvrF"), .value = IOV("sCctNVbgvVHocxULzCYXhBHsubUCaOoiTkZfzEtJYzbCsLHdreOwIkkoVppj"), }, + { .name = IOV("kMhwKnrhcZji"), .value = IOV("rgNaLcFtQrgMzZfYSABgromdFBXgCfRJRtHXVNTOmwLeUlBeiEFOcKmveIAnIRPUwOpcBIc"), }, + { .name = IOV("kQdH"), .value = IOV("xahnfIAypPAVoscKxdTBaNDIgtZmvLLDMOxkpYlgbLyZRTpgfkdH"), }, + { .name = IOV("Sqh"), .value = IOV("NqAlWDtqjuNWoAbCorozjXupvogesJDdbisqgGJKpbpdTARZAXnmPSphTDApZeLsGKcQSz"), }, + { .name = IOV("iLNZgrp"), .value = IOV("vnyqbjOEIWlcFOkrkcAmbXdJiVkWSpSQprSOVrtSKwwYlpz"), }, + { .name = IOV("PcaWyrjtC"), .value = IOV("uHCKkxxpXVxiBadRePgYerrfTfMGQOBCVAnbxT"), }, + { .name = IOV("DB"), .value = IOV("cdzLsGttuDGVmerUVefKOdn"), }, + { .name = IOV("ofSgDi"), .value = IOV("BsgwHKvweeHTuAORM"), }, + { .name = IOV("aefmFakMPC"), .value = IOV("ZmGdWASHxsIHWefvyDCZLY"), }, + { .name = IOV("dLtMnuLCxxwMOIpDQ"), .value = IOV("qvhELpVbvVycfnVXDtSaGnGMSajeBbnjkcKTdTdPExCvLqHapPpqpAeiHGYaGaZFiypoZwiQio"), }, + { .name = IOV("gdBOlEdEcQeJ"), .value = IOV("JrMFhKiVZfkLCUwGXZmQmllFcQNkYmxbsrEJVuAZmkMyWQTepvTLfBRrLxBTCipRxFUUyitMKM"), }, + { .name = IOV("tWfwpCXxK"), .value = IOV("myaGgTYcGuqNXjSMtKZB"), }, + { .name = IOV("GeZdjOrAMNhG"), .value = IOV("VKgPHbYoYNeAvfYatIcyzzMPlQNIPWMWCtCfprkXKTsaMVjXdb"), }, + { .name = IOV("YlmhM"), .value = IOV("bOhMhaRcePQxoAyhXuOWzYioWnLhz"), }, + { .name = IOV("rkxNLYuv"), .value = IOV("oLTKgoFhotzVoAbwVnrkykEkbYUjewkoILpgP"), }, + { .name = IOV("CpjSfVPxiTVezZ"), .value = IOV("wTLtMLuhSrHDWTRAWWeSYAkpMWuv"), }, + { .name = IOV("eZOYGCxWzaSwtpoNjOiA"), .value = IOV("DpQkrcRHUnnjaMSYGySApZN"), }, + { .name = IOV("XcMjIYu"), .value = IOV("jDSXeGeMQQqZDGQRTXGvikR"), }, + { .name = IOV("EkEcFAIwZbxhntuCZdd"), .value = IOV("GgbxFRLmLylqiueIHtdqIHvoeNL"), }, + { .name = IOV("mWnpzJNFhTu"), .value = IOV("IJyCzhlJ"), }, + { .name = IOV("MQvLKX"), .value = IOV("GNGfBioaggEnIvlMHvQnPGCHtGDotyoGTCgghsHxzDWCbIUafRmpXyNWSlTYibAS"), }, + { .name = IOV("bcEPmu"), .value = IOV("EzmqQXeyldWdfPdGZsjAMWDPqiVbJwgsMVlvupRv"), }, + { .name = IOV("VQwsXVWKYoMAsJgNkKo"), .value = IOV("vKokIRnOltXFYPSrvyQfJoGgWoBLybwOxXyhcuxUVeJEJPuqoDVcMlofeT"), }, + { .name = IOV("enzHR"), .value = IOV("VgyJIGZChyOk"), }, + { .name = IOV("uwSrdkeAmkjYtxhzHEW"), .value = IOV("mCFcyNIRmXijcgpvcqwCAKstMVrpOfpeSMBYiOzsXRSxKnM"), }, + { .name = IOV("WDu"), .value = IOV("AY"), }, + { .name = IOV("zsamdMaBS"), .value = IOV("grdRBqsupNWXabZUtLpluqZkzjjeISVhMLOyNUeozHonPLPBQxqTuxmGAW"), }, + { .name = IOV("XNKhkjFRFSh"), .value = IOV("hhFFdMUjcSWjCAtXaGJzxpTGWJaUTIgVFNW"), }, + { .name = IOV("GnNJmyytaWCuQnBtnaW"), .value = IOV("GsMlgjtDp"), }, + { .name = IOV("zcHLzkWyDLttpUfiQoHV"), .value = IOV("aoqAmBiBIjUVPyyQFgcNrqqeGLRJBExAzfJWpwpkFKwDirjyouoLTFQiJZyuojWSVpwW"), }, + { .name = IOV("hnphJeaI"), .value = IOV("ERgdlvNIBNDoBtkimoVgrWMHcoXUAQeJsouqfyuEjkBkUWpmhhQADikQjkdRRTYlz"), }, + { .name = IOV("xrtVyDPXwq"), .value = IOV("YxCzJScvpRUsNrRrXIHKLYnHjjEtDsWrQCxyBOuSelvimajOIDaZszsWHqBxBjCqRBzRychYwyl"), }, + { .name = IOV("bfThtEqsEWJTsq"), .value = IOV("obyRXtowVLBgrBDkrNFuEYxStWpxlypuHEsuTEAywvHarlziZiIcesjNqBALxbATxGLeMyMv"), }, + { .name = IOV("YFpGKX"), .value = IOV("xwHWjTGrUJqXofwxXZlctUSlZVHlKYvRuFoAmmqNqrtjPQADXmMEzPd"), }, + { .name = IOV("NMPbvkjj"), .value = IOV("hCJRMnJDVOJeDDtzArNpuqGi"), }, + { .name = IOV("m"), .value = IOV("UBsiyBLCEFiewYXNCHvUzCmOUBhEfyenKzLcYmHuViOjeEbyhQQTWdJpwbcM"), }, + { .name = IOV("uFARhrhoaAcUzgoknOeR"), .value = IOV("LWTnHuZmbnSkgSEjsxRgWsNigGexRImbWAdLsvvCZiISWsgvL"), }, + { .name = IOV("vsuycRosjUF"), .value = IOV("nFSRCzWGNdnyJsiVBNgvFUauaIucGDQcsnVWCFDFFoFEQaoGYvUYLfduTFroLxIjDrT"), }, + { .name = IOV("ASCgZPASLttDc"), .value = IOV("RHyuncafISVPgTZqUqUpRhaeDIAnEDINkhrJUKfayYOmrMuZz"), }, + { .name = IOV("FhHbF"), .value = IOV("WklaIwUgazCwlVBDYasRwrJPkbPtFoFKedYbqFoAckwCHEGhydvZPMPVmVhqnQTVFHS"), }, + { .name = IOV("peyqVWrsBOMOBJr"), .value = IOV("ibHBKACjPNUkjTtwzMMEjTZtUMJlFtrfshmOYKnRlvkyQlXjckAlYcUFVfCCtuAmVRVd"), }, + { .name = IOV("XXcHHNrcQ"), .value = IOV("XnnnLonFoeOBPXlObsSRRGhzLLIBSzNgbuKYIGGmagU"), }, + { .name = IOV("StcBmfALzCkdKnXK"), .value = IOV("vsIvGGoAXkeJTgiisZkzZvHsiCZSznEkyXHIOkNgtXhMIzmlfzgdzVWwZxkHzvBMMxfl"), }, + { .name = IOV("vWROjaGbdSD"), .value = IOV("fCbtequPdfBTqJhKkpfhQKVbZcZpIvsfsrOgJYtFtgqiZjwCgVSYX"), }, + { .name = IOV("eVNTmXtBMiAQWXZPAw"), .value = IOV("YZ"), }, + { .name = IOV("sWPwihToLJKMPJRhS"), .value = IOV("vEgHcjaIrbbgsEGJeCZDzOBVJXCfwkbi"), }, + { .name = IOV("q"), .value = IOV("kFWwvsKHz"), }, + { .name = IOV("Zq"), .value = IOV("SRsSHqqyYBOmtoYDKPrbsUTANWarUTOJHSnwdkJPZLKydVYcGUTXdscotncuhGdCRmXWhTj"), }, + { .name = IOV("OnQIp"), .value = IOV("QPJBtylMQfKWzkCVXhYfSwxXoLCXeZhlgeMGqzrZsWqKJKmlaPrkhFKXukCeUBDSLUjBOooGILrfkY"), }, + { .name = IOV("iLvS"), .value = IOV("INTDcjeORGomNOKv"), }, + { .name = IOV("MLiiTNM"), .value = IOV("pGuLhBcNFWAQSGcvjpleGMc"), }, + { .name = IOV("Qstx"), .value = IOV("wwEvdIPHAjoXLRoBCIuFCtGBNOieSjathYy"), }, + { .name = IOV("yZXEeMryJVHHXfPodN"), .value = IOV("HvFpynqasmQjWbeyLcHHlyHORfn"), }, + { .name = IOV("nHQhACzUMAWWfNjfiN"), .value = IOV("iawFHvvDqXtTLusVDgLgfsmyocIbrKhzxFpooXRWXTGGwtLqPKtceYCBtRuHATVgYaDeoknDEoZXG"), }, + { .name = IOV("SYSNkwOEBYsDiirAS"), .value = IOV("ZtBgCAtdnxuFklwCOIBEcpmZxDlIce"), }, + { .name = IOV("LdlMKSZEoKqSdfP"), .value = IOV("yapMLOEUzTvriIBmmmlNPnpcmTcXxaXuFjlUdkcGovjJjcCQpENNnwtsRjAvLSMQazmHJmFboSSSOjgV"), }, + { .name = IOV("DQrAfrsGBrRRFNbDTA"), .value = IOV("dMHHfsOiPFYwa"), }, + { .name = IOV("nTUhDJUi"), .value = IOV("ucmBDMyullQBgJn"), }, + { .name = IOV("CcvYPNt"), .value = IOV("EwLBraenvYlMMrFoeTfIWKmafGRBZElxxCgAZLE"), }, + { .name = IOV("cZyEPSteXXk"), .value = IOV("MKwoAnDDHxJBwKbVoMbxIYZsJIAr"), }, + { .name = IOV("jrzfbbbMzvBaVoUzM"), .value = IOV("NuqcmOm"), }, + { .name = IOV("FXyXqDnhiRGSIyh"), .value = IOV("z"), }, + { .name = IOV("TPevRplDeFYHouwaxEDj"), .value = IOV("HfTPnHIVMKuPgXmXgoihZxegGwAShCaFGjjXdogtLNgBKNGpINdQIAUnMlarAKVED"), }, + { .name = IOV("xJEBEmClth"), .value = IOV("tZmXYYhCNqpmFIBjTrGsCVgpovZz"), }, + { .name = IOV("ycdKNlWMcffcQcwwoLxf"), .value = IOV("LvkugqnGfuFZMIHrVOXEFftpOCWoVgXIsRaaWRSYtOiJAZebkJTFxcWOvIaRVoKEEhyIAFBvkZ"), }, + { .name = IOV("qZCnrhvYInCS"), .value = IOV("wxCoWCtexjyaSWpEskKotuDnGwapliJbXNGVNnPlvDMNFVSaJ"), }, + { .name = IOV("ActEayGSHSlpvSnPlD"), .value = IOV("wHcjqDadMs"), }, + { .name = IOV("ijxcbNUH"), .value = IOV("KAFzdXGYCjxhsjCDcwNw"), }, + { .name = IOV("NzjgGN"), .value = IOV("JcJPwBjfnrMuHSGuwdsEnQFoHURgyNsiQFCzOPImsqEVIKmNVkvOsgCmpoUS"), }, + { .name = IOV("zSkyeHbZ"), .value = IOV("jPznbwLPsgLCrLFKYdRyhaqIsQnuByruzFkMQyaqlvrjNGSTLPydBPhcRfSnWKgipkYViUsMyJQ"), }, + { .name = IOV("pqmrpkzUDvVfxovCCVUL"), .value = IOV("vSZdqILPgFSJgTRCYEpURRdgN"), }, + { .name = IOV("kLUxChWnoeVo"), .value = IOV("ipQDnxKKFPtqTYuuTnieNnUqwYJCdUjHBweUQRqhnCAjRaPLBXQN"), }, + { .name = IOV("tgXUreDManbXUGQT"), .value = IOV("ODnshUiWEgeASiZTyHCbkJYMaLVYFNSTGYFtdDBdCuht"), }, + { .name = IOV("pvmctpJvpmHIE"), .value = IOV("dTBycLSyWavBeQ"), }, + { .name = IOV("wwrqLbGghFJYNpE"), .value = IOV("GiOOuBUY"), }, + { .name = IOV("tOxYpIvZDuvwO"), .value = IOV("GDlaNfmFQXxpWYWGyGfatYHKlrfUZKQMOkfsAqbUiPxECbRnPGAl"), }, + { .name = IOV("FUlNpqUcqZSDfjVD"), .value = IOV("ucVVvBodHCbRQTOIiZaBMgkjSsOLPgCsDyqHyhzICDaBWRyjMKdHH"), }, + { .name = IOV("cv"), .value = IOV("iUnZxTYvtGgpmvvJR"), }, + { .name = IOV("psKaJplpkmeYkrTJj"), .value = IOV("VJdGiDuGRJbvkluKUyToaPFQItiazGkDlbsvriHedJSeCgFoQWZhYiaLVndthSNCDHIYlnsYEaG"), }, + { .name = IOV("tgSITnODrNX"), .value = IOV("uDeOeINHfESqurHsEcNjnyOzegORs"), }, + { .name = IOV("Sr"), .value = IOV("JaGRVRfpBALZUrhvxKdpvDlBtVfsPAIMbVAjxuMjniPujwxBHSmgHopBUHve"), }, + { .name = IOV("RdGQT"), .value = IOV("WffIIIsfkHlQqHGlegMpKJOvKGytMiKmFLobDktmrBKVhxcJfzMQxyZV"), }, + { .name = IOV("HVucrPxOlOPEIKvmSeoU"), .value = IOV("wuxn"), }, + { .name = IOV("mibwyXEUZd"), .value = IOV("xuujkxjkbcBYakYlJoyl"), }, + { .name = IOV("IoMfGQSnMbMjnyOU"), .value = IOV("HyuSRajxEbIJWSXqhHaVMqJvNbjsUvAgOivgYjBBLPcRGVqRqfWhYpeQCGlJITbYQEMqjmGLx"), }, + { .name = IOV("BqWdwaGyqByaBrEpkRcF"), .value = IOV("blLcPZlcjBBXWgisUcmFsxPTHgQfEmiUmtjC"), }, + { .name = IOV("LIv"), .value = IOV("N"), }, + { .name = IOV("Ilmv"), .value = IOV("ZEEZUSFpFIEqLTlvSdkCKbqlPqXObTkOpocTsLwjsbVbZUCdhbzyXkHMnjAqtZwWVS"), }, + { .name = IOV("PdIVxnEHIqjqk"), .value = IOV("pTIlOSdiERHPMYEEQGrAJIfVAZAindEMDgTlIFteAxLSVxLdlyLGsamhpGRoXnkW"), }, + { .name = IOV("ATGyLdotS"), .value = IOV("InMkSNVDrDbZCpJHmiIBgABDa"), }, + { .name = IOV("DLgppXCe"), .value = IOV("aSYptgGtvidZSZwcOQIdknjFvEYHEGJQkJCTgCviNcCmmbGwVnXVeVBpsAYPVfvRwXawLkwWmL"), }, + { .name = IOV("QBDPmzELB"), .value = IOV("YhjLsvpUslykWpaBcIgunjQWjNkbYSlefgGKHy"), }, + { .name = IOV("DQ"), .value = IOV("dGxRPLevIuzYJQgigZDSXhWyBdvfFRCHkZbxgJpkPSRrYPFmqMmrzYWIaKhVBj"), }, + { .name = IOV("rUmPQsTLfQqRRdYVS"), .value = IOV("UbmcLYKFzZ"), }, + { .name = IOV("XtWnYw"), .value = IOV("ErAWzPcigydcRIuLvvTugfRSdyHlZasByDUnVhyzpBsdFpyUYBG"), }, + { .name = IOV("AFReJawusNrB"), .value = IOV("oJIXsiJGrjZmdHBShPimPIJTygeiehMzhqvZmjXtZCkFFC"), }, + { .name = IOV("kF"), .value = IOV("TVbTzgdUMUGhE"), }, + { .name = IOV("TmIIltkeZPiLKk"), .value = IOV("vsZOWVIpIpLNnvYzzobqGKVfFvHiCzfHLjSfLQefYcPftTjZJVd"), }, + { .name = IOV("vXvWprfHaRefCKWhsvOq"), .value = IOV("avgYVScnlVlQyfAqLOqpetdrAtX"), }, + { .name = IOV("honePIGeIKh"), .value = IOV("uekwxNputOwIGdNdHcoIuRPYpiozp"), }, + { .name = IOV("rUBqGU"), .value = IOV("zdTqIriihYKKvxeGapPnrKrhMVVwDmGWfYLFFeZQeSoNioEqYTNdoycTmAFiFOmVSxuvlisCt"), }, + { .name = IOV("MuZfHXBeauMqQOVlVZwy"), .value = IOV("yZvLteokUDeQp"), }, + { .name = IOV("FjOTUrTpVHdzuG"), .value = IOV("KXpAvEFozuJQaZvnOHzCffTgCS"), }, + { .name = IOV("Fk"), .value = IOV("ybdzpNSqCQdAegDzpoolTWlWZlTmyNVTFsqRvleIYaMFBghrEbDGEKiToYzlzgRaXpqhxlEdqzDmhKn"), }, + { .name = IOV("RQUVMKvHuUiKZbMkeZRX"), .value = IOV("iohcvQqbCoJADIjXjuDRVIbYeEbaNXXHgPel"), }, + { .name = IOV("KBdShdepg"), .value = IOV("WDHolFLyLLSeYEUJkeNkjgVQCpVMneNDcBSnZcptGapmsCavLQykKAjfcxUjkktXnYvFWDPjMVHPyl"), }, + { .name = IOV("ANTqpdqBwE"), .value = IOV("ADXNvrzGXXPlAPPFZrLCHtzmLyZRiYzMKnBJaTdkttjcfvjImgpXyAXLbggbEBU"), }, + { .name = IOV("SLdlVqWhI"), .value = IOV("UjTJTHDaGzMBXIRhSIMQpucaaVtJwEq"), }, + { .name = IOV("jhbhEdjxrkge"), .value = IOV("clCzJZl"), }, + { .name = IOV("mEgBy"), .value = IOV("uIYVwGgbinJCLCjSsONFXGqzYoRgrScclCabAqevKWUxPibWGcCjjbIfuqoGbBIVzF"), }, + { .name = IOV("V"), .value = IOV("zqFiJZWKk"), }, + { .name = IOV("kSQTzvEjOPZPrFZwKgP"), .value = IOV("kpkKRYbqeGTmLYOh"), }, + { .name = IOV("YZJAprRP"), .value = IOV("agNXoXqWVhDMIVrfmwfErrveHihVcefKGOwbpPELXWJNnEUwsPoKHCAIrLSjEGamtjbZlIM"), }, + { .name = IOV("pzHumxzaGC"), .value = IOV("TMKRLPyeeHG"), }, + { .name = IOV("JeoxyLpnrUDggbZNn"), .value = IOV("gryjepOsUwUXVvjt"), }, + { .name = IOV("jbqdTrot"), .value = IOV("hGZH"), }, + { .name = IOV("befvldowIgTw"), .value = IOV("QItWcSDEJwwvFScysXKTLajmUmiYGGegIfLrApuijQkndFdatUfB"), }, + { .name = IOV("clxQf"), .value = IOV("vXbSIZmJcuZvKcarINjPuSwabLFfipWWQFStvFMxSNuiizOZIgaiHfViMJeGwIuGwfJdkz"), }, + { .name = IOV("GHjSGzdumTpovMS"), .value = IOV("wqPExwywtsHYcJJGRWjxjSMOhADAKOOFDbCAyUFOwNnXzlJuKRPBrVvaAF"), }, + { .name = IOV("MOJypFoNZvnY"), .value = IOV("YjHESDlgRj"), }, + { .name = IOV("fgdLeYM"), .value = IOV("IiTGIGSgtOCCWDnUFfWnSqscQPktkppqfOlNHsOAQhxuTS"), }, + { .name = IOV("KZVwlSurHFKXLpW"), .value = IOV("QJATFxbKpAzZCsSGiHWOOZKCSeKEcXKZcQwNCrTICbfiSNqbSIrCVtQqVvGnnLQ"), }, + { .name = IOV("HoJApjPkGywUVQT"), .value = IOV("yNuHyALQsgFxmAJUuIMWyZVmXmwYBZPeYldhOCIKVOZQtjueXTtazKCQrZpXbQCjfgZEn"), }, + { .name = IOV("qQANsoBylferetwb"), .value = IOV("kXfITdoVYwYoAJHVDZpftFeziNLKrRgudNobPtfbN"), }, + { .name = IOV("kzhGlSyNb"), .value = IOV("uxHIdwRzhwkaDPDsFdNSFYYdXmaGPAad"), }, + { .name = IOV("iNjlAujVUPRGGo"), .value = IOV("jN"), }, + { .name = IOV("leZEqHHebILbEbrVwiCm"), .value = IOV("tphZNwDpPvbbJbFOgRtBQOxUypxPewGaJwnPWSbFhROIaBFj"), }, + { .name = IOV("IIIalFIj"), .value = IOV("eJEHDQJscPNrcZIZHTGAOCRvQsNychNZZXschjnUSXGnXiKVbM"), }, + { .name = IOV("WePvu"), .value = IOV("txhdxcuMrFdcwRtSDDHktKASbhHoYtJkHGqzGwUOHsBtvNsuTHIjwsUGJFJLxEazlUs"), }, + { .name = IOV("gbe"), .value = IOV("ul"), }, + { .name = IOV("inxL"), .value = IOV("zaCVQQIxINjtlVEMxV"), }, + { .name = IOV("ziShJIdSgGuAvFATwLHC"), .value = IOV("jKMbzBIJWwQOKHgOfRebhRZObGVAqBDYiNPOljWSItvJzBJhYSvHayt"), }, + { .name = IOV("DBbbwuEwydKZDLqfTM"), .value = IOV("HnBCzqTmVaghKfXfOaIrlTmIKkzoipcceCrrqytiHHTUOEURYCtFt"), }, + { .name = IOV("ZkQwDZ"), .value = IOV("Sb"), }, + { .name = IOV("yV"), .value = IOV("mjvsYWHHwVQYmeSZZQsDyqwXlajBLyAo"), }, + { .name = IOV("uMjriqCC"), .value = IOV("FrcqFdXPqFeDUxcCyJkZbmQOLJVcdJAKmQuaIxIlIVBrnRKTTAyomLLlDbvO"), }, + { .name = IOV("WEIvVamrCxy"), .value = IOV("UyJpDUuBIgeOTweaMaJJcwTxOtXoqSVYnjWruMrNG"), }, + { .name = IOV("RVCOhAMOIUPDsabH"), .value = IOV("mqCAIuuPHNHNfsJKZORTrlvFHnQzVABjeOnPAxyViMrcAuZBnqyyEInqjxGIxiMlOA"), }, + { .name = IOV("VrVoMFDFrohgjBLi"), .value = IOV("cgbYIYJUgATcNQyTFBbZOeJlIDaFbjgqMnOpeJrwCmDQkqYbxDZJveeAkdbgXCmc"), }, + { .name = IOV("YHSF"), .value = IOV("eYpRxyhhmmezlCUkBeGJmLsyKDtVxxVTlAdnCRlINvsVQWLJkSBCj"), }, + { .name = IOV("EVrTnyO"), .value = IOV("ZltJGecGEFRkT"), }, +}; diff --git a/external/lsquic/src/lshpack/test/test_int.c b/external/lsquic/src/lshpack/test/test_int.c new file mode 100644 index 0000000..5870ec1 --- /dev/null +++ b/external/lsquic/src/lshpack/test/test_int.c @@ -0,0 +1,218 @@ +#include +#include +#include +#include + +#include "lshpack.h" +#include "lshpack-test.h" + +struct int_test +{ + int it_lineno; + unsigned it_prefix_bits; + unsigned char it_encoded[20]; + size_t it_enc_sz; + uint32_t it_decoded; + int it_dec_retval; +}; + +static const struct int_test tests[] = +{ + + { .it_lineno = __LINE__, + .it_prefix_bits = 7, + .it_encoded = { 0x7F, 0x02, }, + .it_enc_sz = 2, + .it_decoded = 0x81, + .it_dec_retval = 0, + }, + + /* RFC 7541, Appendinx C.1.1 */ + { .it_lineno = __LINE__, + .it_prefix_bits = 5, + .it_encoded = { 0b1010, 0x02, }, + .it_enc_sz = 1, + .it_decoded = 10, + .it_dec_retval = 0, + }, + + /* RFC 7541, Appendinx C.1.2 */ + { .it_lineno = __LINE__, + .it_prefix_bits = 5, + .it_encoded = { 0b11111, 0b10011010, 0b00001010, }, + .it_enc_sz = 3, + .it_decoded = 1337, + .it_dec_retval = 0, + }, + + /* RFC 7541, Appendinx C.1.3 */ + { .it_lineno = __LINE__, + .it_prefix_bits = 8, + .it_encoded = { 0b101010, }, + .it_enc_sz = 1, + .it_decoded = 42, + .it_dec_retval = 0, + }, + + { .it_lineno = __LINE__, + .it_prefix_bits = 7, + .it_encoded = { 0b01111111, 0b10000001, 0b10000010, 0b00000011, }, + .it_enc_sz = 4, + /* 01234560123456 */ + .it_decoded = 0b1100000100000001 + 0b1111111, + .it_dec_retval = 0, + }, + + { .it_lineno = __LINE__, + .it_prefix_bits = 7, + .it_encoded = { 0b01111111, 0b10000001, 0b10000010, 0b10000011, + 0b00000011, }, + .it_enc_sz = 5, + /* 012345601234560123456 */ + .it_decoded = 0b11000001100000100000001 + 0b1111111, + .it_dec_retval = 0, + }, + + { .it_lineno = __LINE__, + .it_prefix_bits = 7, + .it_encoded = { 0b01111111, 0b10000000, 0b11111111, 0b11111111, + 0b11111111, 0b00001111, }, + .it_enc_sz = 6, + .it_decoded = UINT32_MAX, + .it_dec_retval = 0, + }, + + { .it_lineno = __LINE__, + .it_prefix_bits = 7, + /* Same as above, but with extra bit that overflows it */ + /* ----v---- */ + .it_encoded = { 0b01111111, 0b10010000, 0b11111111, 0b11111111, + 0b11111111, 0b00001111, }, + .it_enc_sz = 6, + .it_dec_retval = -2, + }, + + { .it_lineno = __LINE__, + .it_prefix_bits = 7, + .it_encoded = { 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, }, + .it_enc_sz = 11, + .it_dec_retval = -2, + }, + + { .it_lineno = __LINE__, + .it_encoded = { 0xFE, }, + .it_enc_sz = 1, + .it_prefix_bits = 4, + .it_dec_retval = 0, + .it_decoded = 0xE, + }, + + { .it_lineno = __LINE__, + .it_encoded = { 0x3F, 0x64, }, + .it_enc_sz = 2, + .it_prefix_bits = 6, + .it_dec_retval = 0, + .it_decoded = 0x3F + 0x64, + }, + + { .it_lineno = __LINE__, + .it_encoded = { 0xFF, }, + .it_enc_sz = 1, + .it_prefix_bits = 4, + .it_dec_retval = -1, /* Ran out of buffer */ + .it_decoded = 0, + }, + + { .it_lineno = __LINE__, + .it_encoded = { 0x87, 0xF0, 0x80, 0x7F, }, + .it_enc_sz = 4, + .it_prefix_bits = 3, + .it_dec_retval = 0, + .it_decoded = 0b111111100000001110111, + }, + + { .it_lineno = __LINE__, + .it_encoded = { 0x87, 0x80, 0x80, 0x80, 0x01, }, + .it_enc_sz = 5, + .it_prefix_bits = 3, + .it_dec_retval = 0, + .it_decoded = 0b1000000000000000000111, + }, + + { .it_lineno = __LINE__, + .it_encoded = { 0x87, 0x80, 0x80, 0x80, 0x01, }, + .it_enc_sz = 4, + .it_prefix_bits = 3, + .it_dec_retval = -1, /* Ran out of buffer */ + .it_decoded = 0, + }, + + { .it_lineno = __LINE__, + .it_encoded = { 0x87, 0x80, 0x80, 0x80, 0x80, 0x01, }, + .it_enc_sz = 6, + .it_prefix_bits = 3, + .it_dec_retval = 0, + .it_decoded = 0b10000000000000000000000000111, + }, + +}; + +int +main (void) +{ + const struct int_test *test; + const unsigned char *src; + unsigned char *dst; + unsigned char buf[ sizeof(((struct int_test *) NULL)->it_encoded) ]; + uint32_t val; + size_t sz; + int rv; + + /* Test the decoder */ + for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) + { + for (sz = 0; sz < test->it_enc_sz - 1; ++sz) + { + src = test->it_encoded; + rv = lshpack_dec_dec_int(&src, src + sz, test->it_prefix_bits, &val); + if (test->it_dec_retval == -2) + assert(-1 == rv || -2 == rv); + else + assert(-1 == rv); + } + src = test->it_encoded; + rv = lshpack_dec_dec_int(&src, src + test->it_enc_sz, + test->it_prefix_bits, &val); + assert(rv == test->it_dec_retval); + if (0 == rv) + assert(val == test->it_decoded); + } + + /* Test the encoder */ + for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) + { + if (test->it_dec_retval != 0) + continue; + for (sz = 1; sz < test->it_enc_sz; ++sz) + { + dst = lshpack_enc_enc_int(buf, buf + sz, test->it_decoded, + test->it_prefix_bits); + assert(dst == buf); /* Not enough room */ + } + for (; sz <= sizeof(buf); ++sz) + { + buf[0] = '\0'; + dst = lshpack_enc_enc_int(buf, buf + sz, test->it_decoded, + test->it_prefix_bits); + assert(dst - buf == (intptr_t) test->it_enc_sz); + assert((test->it_encoded[0] & ((1 << test->it_prefix_bits) - 1)) + == buf[0]); + if (test->it_enc_sz > 1) + assert(0 == memcmp(buf + 1, test->it_encoded + 1, + test->it_enc_sz - 1)); + } + } + + return 0; +} diff --git a/external/lsquic/tests/CMakeLists.txt b/external/lsquic/tests/CMakeLists.txt new file mode 100644 index 0000000..fab22d3 --- /dev/null +++ b/external/lsquic/tests/CMakeLists.txt @@ -0,0 +1,161 @@ +# Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. +INCLUDE_DIRECTORIES(../src/liblsquic) + +ENABLE_TESTING() + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLSQUIC_TEST=1") + +IF (MSVC) + SET(LIB_FLAGS "-FORCE:MULTIPLE") +ELSE() + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-value") + IF (CMAKE_C_COMPILER_ID STREQUAL GNU) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-override-init") + ENDIF() + IF (CMAKE_C_COMPILER_ID STREQUAL Clang) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-initializer-overrides") + ENDIF() +ENDIF() + +include_directories(../src/liblsquic/ls-qpack) +INCLUDE_DIRECTORIES(../src/lshpack) + +SET(TESTS + ack + ackgen_gquic_be + ackparse_gquic_be + ackparse_ietf + alarmset + alt_svc_ver + arr + attq + blocked_gquic_be + bw_sampler + conn_close_gquic_be + crypto_gen + cubic + dec + di_nocopy + elision + engine_ctor + export_key + frame_chop + frame_reader + frame_writer + goaway_gquic_be + hkdf + hpi + lsquic_hash + packet_out + packet_resize + packno_len + parse_packet_in + purga + qlog + quic_be_floats + reg_pkt_headergen + rst_stream_gquic_be + rtt + send_headers + senhist + set + sfcw + shi + spi + stop_waiting_gquic_be + streamgen + streamparse + tokgen + trapa + varint + ver_nego + wuf_gquic_be +) + +IF (CMAKE_SYSTEM_NAME STREQUAL "Linux") + # Linux has fmemopen + SET(TESTS ${TESTS} frame_rw) +ENDIF() + +IF (NOT CMAKE_SYSTEM_NAME STREQUAL "Windows") + # No regexes on Windows + SET(TESTS ${TESTS} ack_merge) + # No open_memstream() on Windows + SET(TESTS ${TESTS} hcsi_reader) + # Takes forever on Windows, for whatever reason. Or maybe it's the + # MS C compilers. Something to investigate... later. + LIST(APPEND TESTS h3_framing) +ENDIF() + + +FOREACH(TEST_NAME ${TESTS}) + ADD_EXECUTABLE(test_${TEST_NAME} test_${TEST_NAME}.c ${ADDL_SOURCES}) + IF(NOT MSVC) + TARGET_LINK_LIBRARIES(test_${TEST_NAME} ${LIBS} ${LIB_FLAGS}) + ELSE() + TARGET_LINK_LIBRARIES(test_${TEST_NAME} ${LIBS} ${GETOPT_LIB} ${LIB_FLAGS}) + # copy any dependencies local to the tests + #IF (${CMAKE_VERSION} VERSION_LESS "3.21.0") + ADD_CUSTOM_COMMAND(TARGET test_${TEST_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy \"$ENV{VCPKG_ROOT}/installed/x64-windows$<$:/debug>/bin/getopt.dll\" \"$\" + COMMAND_EXPAND_LISTS + ) + #ELSE() + # ADD_CUSTOM_COMMAND(TARGET test_${TEST_NAME} POST_BUILD + # COMMAND if not \"\"=="$" ${CMAKE_COMMAND} -E copy $ $ + # COMMAND_EXPAND_LISTS + # ) + #ENDIF() + ENDIF() + ADD_TEST(${TEST_NAME} test_${TEST_NAME}) +ENDFOREACH() + +ADD_EXECUTABLE(test_stream test_stream.c ${ADDL_SOURCES}) +TARGET_LINK_LIBRARIES(test_stream ${LIBS} ${LIB_FLAGS}) +IF(MSVC) + TARGET_LINK_LIBRARIES(test_stream ${GETOPT_LIB}) +ENDIF() +ADD_TEST(stream test_stream) +ADD_TEST(stream_hash test_stream -h) +ADD_TEST(stream_A test_stream -A) +ADD_TEST(stream_hash_A test_stream -A -h) + +IF(NOT MSVC) +ADD_EXECUTABLE(graph_cubic graph_cubic.c ${ADDL_SOURCES}) +TARGET_LINK_LIBRARIES(graph_cubic ${LIBS}) + +ADD_EXECUTABLE(mini_parse mini_parse.c ${ADDL_SOURCES}) +TARGET_LINK_LIBRARIES(mini_parse ${LIBS}) +ENDIF() + +ADD_EXECUTABLE(test_min_heap test_min_heap.c ../src/liblsquic/lsquic_min_heap.c) +ADD_TEST(min_heap test_min_heap) + +SET(MALO_SRC test_malo.c ../src/liblsquic/lsquic_malo.c) +ADD_EXECUTABLE(test_malo_pooled ${MALO_SRC}) +IF(MSVC) + TARGET_LINK_LIBRARIES(test_malo_pooled ${GETOPT_LIB}) +ENDIF() +SET_TARGET_PROPERTIES(test_malo_pooled + PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLSQUIC_USE_POOLS=1") +ADD_TEST(malo_pooled test_malo_pooled) + +ADD_EXECUTABLE(test_malo_nopool ${MALO_SRC}) +IF(MSVC) + TARGET_LINK_LIBRARIES(test_malo_nopool ${GETOPT_LIB}) +ENDIF() +SET_TARGET_PROPERTIES(test_malo_nopool + PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -DLSQUIC_USE_POOLS=0") +ADD_TEST(malo_nopool test_malo_nopool) + +ADD_EXECUTABLE(test_minmax test_minmax.c ../src/liblsquic/lsquic_minmax.c) +IF(MSVC) + TARGET_LINK_LIBRARIES(test_minmax ${GETOPT_LIB}) +ENDIF() +ADD_TEST(minmax test_minmax) + +ADD_EXECUTABLE(test_rechist test_rechist.c ../src/liblsquic/lsquic_rechist.c) +ADD_TEST(rechist test_rechist) + +ADD_EXECUTABLE(test_trechist test_trechist.c ../src/liblsquic/lsquic_trechist.c) +ADD_TEST(trechist test_trechist) diff --git a/external/lsquic/tests/graph_cubic.c b/external/lsquic/tests/graph_cubic.c new file mode 100644 index 0000000..f91ce69 --- /dev/null +++ b/external/lsquic/tests/graph_cubic.c @@ -0,0 +1,160 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * This is not really a test: this program prints out cwnd histogram + * for visual inspection. + */ + +#include +#include +#include +#ifndef WIN32 +#include +#include +#include +#else +#include +#endif + +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_cong_ctl.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_out.h" +#include "lsquic_cubic.h" + +static const struct cong_ctl_if *const cci = &lsquic_cong_cubic_if; + +#define MS(n) ((n) * 1000) /* MS: Milliseconds */ + +enum event { EV_ACK, EV_LOSS, EV_TIMEOUT, }; + +static const char *const evstr[] = { + [EV_ACK] = "ACK", + [EV_LOSS] = "LOSS", + [EV_TIMEOUT] = "TIMEOUT", +}; + +struct rec +{ + enum event event; + unsigned cwnd; +}; + +#define REC(ev) do { \ + if (i >= n_recs_alloc) \ + { \ + if (n_recs_alloc) \ + n_recs_alloc *= 2; \ + else \ + n_recs_alloc = 20; \ + recs = realloc(recs, n_recs_alloc * \ + sizeof(recs[0])); \ + } \ + recs[i].event = ev; \ + recs[i].cwnd = cci->cci_get_cwnd(&cubic); \ + if (max_cwnd < recs[i].cwnd) \ + max_cwnd = recs[i].cwnd; \ +} while (0) + +int +main (int argc, char **argv) +{ + int i, n, opt; + int n_recs_alloc = 0; + int app_limited = 0; + unsigned unit = 100; /* Default to 100 ms */ + unsigned rtt_ms = 10; /* Default to 10 ms */ + struct lsquic_cubic cubic; + struct rec *recs = NULL; + unsigned max_cwnd, width; + char *line; +#ifndef WIN32 + struct winsize winsize; +#endif + enum cubic_flags flags; + struct lsquic_packet_out packet_out; + + cci->cci_init(&cubic, 0, 0); + max_cwnd = 0; + i = 0; + memset(&packet_out, 0, sizeof(packet_out)); + + while (-1 != (opt = getopt(argc, argv, "s:u:r:f:l:A:L:T:"))) + { + switch (opt) + { + case 's': + cubic.cu_ssthresh = atoi(optarg); + break; + case 'r': + rtt_ms = atoi(optarg); + break; + case 'f': + flags = atoi(optarg); + lsquic_cubic_set_flags(&cubic, flags); + break; + case 'l': + app_limited = atoi(optarg); + break; + case 'A': + n = i + atoi(optarg); + for ( ; i < n; ++i) + { + packet_out.po_sent = MS(unit * i) - MS(rtt_ms); + cci->cci_ack(&cubic, &packet_out, 1370, MS(unit * i), app_limited); + REC(EV_ACK); + } + break; + case 'L': + n = i + atoi(optarg); + for ( ; i < n; ++i) + { + cci->cci_loss(&cubic); + REC(EV_LOSS); + } + break; + case 'T': + n = i + atoi(optarg); + for ( ; i < n; ++i) + { + cci->cci_timeout(&cubic); + REC(EV_TIMEOUT); + } + break; + case 'u': + unit = atoi(optarg); + break; + default: + exit(1); + } + } + +#ifndef WIN32 + if (isatty(STDIN_FILENO)) + { + if (0 == ioctl(STDIN_FILENO, TIOCGWINSZ, &winsize)) + width = winsize.ws_col; + else + { + perror("ioctl"); + width = 80; + } + } + else +#endif + width = 80; + + width -= 5 /* cwnd */ + 1 /* space */ + 1 /* event type */ + + 1 /* space */ + 1 /* newline */; + line = malloc(width); + memset(line, '+', width); + + for (n = i, i = 0; i < n; ++i) + printf("%c % 5d %.*s\n", *evstr[recs[i].event], recs[i].cwnd, + (int) ((float) recs[i].cwnd / max_cwnd * width), line); + + free(recs); + free(line); + + return 0; +} diff --git a/external/lsquic/tests/mini_parse.c b/external/lsquic/tests/mini_parse.c new file mode 100644 index 0000000..b078351 --- /dev/null +++ b/external/lsquic/tests/mini_parse.c @@ -0,0 +1,115 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * Convert from our hexdump format to binary: + * + * perl -p -ne 's/^[[:xdigit:]]+\s+//;s~ \|.*~~;s/\s+//g;s/([[:xdigit:]]{2})/chr hex$1/ge' + */ + +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#include +#else +#include "getopt.h" +#endif + +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_gquic.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_mm.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_rtt.h" +#include "lsquic_mini_conn.h" +#include "lsquic_engine_public.h" +#include "lsquic_util.h" +#include "lsquic_logger.h" +#include "lsquic_str.h" + + +int +lsquic_enc_session_decrypt (void *enc_session_p, enum lsquic_version version, + uint8_t path_id, uint64_t pack_num, + unsigned char *buf, size_t *header_len, size_t data_len, + unsigned char *diversification_nonce, + unsigned char *buf_out, size_t max_out_len, size_t *out_len) +{ + memcpy(buf_out, buf, *header_len + data_len); + *out_len = data_len; + return 0; +} + + +int +main (int argc, char **argv) +{ + int opt; + int fd = STDIN_FILENO; + struct lsquic_engine_public enpub; + struct lsquic_conn *lconn; + lsquic_packet_in_t packet_in; + unsigned char buf[0x1000]; + ssize_t packet_sz; + enum lsquic_version ver = LSQVER_043; + + memset(&enpub, 0, sizeof(enpub)); + lsquic_mm_init(&enpub.enp_mm); + + lsquic_log_to_fstream(stderr, LLTS_NONE); + lsq_log_levels[LSQLM_MINI_CONN] = LSQ_LOG_DEBUG; + lsq_log_levels[LSQLM_NOMODULE] = LSQ_LOG_DEBUG; + + while (-1 != (opt = getopt(argc, argv, "v:f:h"))) + { + switch (opt) + { + case 'v': + ver = atoi(optarg); + break; + case 'f': + fd = open(optarg, O_RDONLY); + if (fd < 0) + { + perror("open"); + exit(EXIT_FAILURE); + } + break; + case 'h': + fprintf(stderr, "usage: %s [-v version] [-f input-file]\n", argv[0]); + exit(EXIT_SUCCESS); + default: + exit(EXIT_FAILURE); + } + } + + packet_sz = read(fd, buf, sizeof(buf)); + if (packet_sz < 0) + { + perror("read"); + exit(EXIT_FAILURE); + } + + memset(&packet_in, 0, sizeof(packet_in)); + packet_in.pi_packno = 1; + packet_in.pi_header_sz = 0; + packet_in.pi_data_sz = packet_sz; + packet_in.pi_data = buf; + packet_in.pi_refcnt = 1; + + lconn = lsquic_mini_conn_new(&enpub, &packet_in, ver); + lconn->cn_if->ci_packet_in(lconn, &packet_in); + + exit(EXIT_SUCCESS); +} diff --git a/external/lsquic/tests/test_ack.c b/external/lsquic/tests/test_ack.c new file mode 100644 index 0000000..dde5571 --- /dev/null +++ b/external/lsquic/tests/test_ack.c @@ -0,0 +1,219 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* Test both generation and parsing of IETF ACK frames */ + +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_sizes.h" +#include "lsquic_parse.h" +#include "lsquic_trans_params.h" + +struct test +{ + int lineno; + int skip_gen; + + struct ack_info acki; + + size_t encoded_sz; + unsigned char encoded[0x1000]; +}; + +static const lsquic_time_t now = 0x12345676890; + +static const struct test tests[] = +{ + { + .lineno = __LINE__, + .acki = + { + .n_ranges = 2, + .lack_delta = 0xFEDCB0, + .ranges = + { + [0] = { 7, 7, }, + [1] = { 0, 0, }, + }, + }, + .encoded = + { + /* Type */ 0x02, + /* Largest acked */ 0x07, + /* ACK delay */ 0x80, 0x1F, 0xDB, 0x96, + /* Addl block count */ 0x01, + /* First ACK block */ 0x00, + /* Gap */ 0x05, + /* ACK block */ 0x00, + }, + .encoded_sz = 10, + }, + + { + .lineno = __LINE__, + .acki = + { + .n_ranges = 3, + .lack_delta = 0xFEDCB0, + .ranges = + { + [0] = { 10, 10, }, + [1] = { 7, 7, }, + [2] = { 0, 0, }, + }, + }, + .encoded = + { + /* Type */ 0x02, + /* Largest acked */ 10, + /* ACK delay */ 0x80, 0x1F, 0xDB, 0x96, + /* Addl block count */ 2, + /* First ACK block */ 0x00, + /* Gap */ 0x01, + /* ACK block */ 0x00, + /* Gap */ 0x05, + /* ACK block */ 0x00, + }, + .encoded_sz = 12, + }, + + { + .lineno = __LINE__, + .acki = + { + .flags = AI_ECN, + .n_ranges = 3, + .lack_delta = 0xFEDCB0, + .ecn_counts = { 0, 0x010203, 1, 0x49, }, + .ranges = + { + [0] = { 10, 10, }, + [1] = { 7, 7, }, + [2] = { 0, 0, }, + }, + }, + .encoded = + { + /* Type */ 0x03, + /* Largest acked */ 10, + /* ACK delay */ 0x80, 0x1F, 0xDB, 0x96, + /* Addl block count */ 2, + /* First ACK block */ 0x00, + /* Gap */ 0x01, + /* ACK block */ 0x00, + /* Gap */ 0x05, + /* ACK block */ 0x00, + /* ECT(1) count */ 0x01, + /* ECT(0) count */ 0x80, 0x01, 0x02, 0x03, + /* ECN-CE count */ 0x40, 0x49, + }, + .encoded_sz = 19, + }, + +}; + +struct rechist +{ + const struct ack_info *acki; + unsigned next_range; +}; + + +static const struct lsquic_packno_range * +rechist_next (void *ctx) +{ + struct rechist *rechist = ctx; + if (rechist->next_range < rechist->acki->n_ranges) + return rechist->acki->ranges + rechist->next_range++; + else + return NULL; +} + +static const struct lsquic_packno_range * +rechist_first (void *ctx) +{ + struct rechist *rechist = ctx; + rechist->next_range = 0; + return rechist_next(rechist); +} + +static lsquic_time_t +rechist_largest_recv (void *ctx) +{ + struct rechist *rechist = ctx; + return now - rechist->acki->lack_delta; +} + + +static void +compare_ackis (const struct ack_info *exp, const struct ack_info *got) +{ + unsigned i; + + assert(exp->flags == got->flags); + assert(exp->n_ranges == got->n_ranges); + assert(exp->lack_delta == got->lack_delta); + + for (i = 0; i < exp->n_ranges; ++i) + { + assert(exp->ranges[i].high == got->ranges[i].high); + assert(exp->ranges[i].low == got->ranges[i].low); + } + + if (exp->flags & AI_ECN) + for (i = 1; i <= 3; ++i) + assert(exp->ecn_counts[i] == got->ecn_counts[i]); +} + + +static void +run_test (const struct test *test) +{ + int len, has_missing; + lsquic_packno_t largest_received; + const struct parse_funcs *pf; + struct rechist rechist; + struct ack_info acki; + size_t sz; + unsigned char buf[0x1000]; + + pf = select_pf_by_ver(LSQVER_I001); + if (!test->skip_gen) + { + rechist.acki = &test->acki; + len = pf->pf_gen_ack_frame(buf, sizeof(buf), rechist_first, rechist_next, + rechist_largest_recv, &rechist, now, &has_missing, &largest_received, + test->acki.flags & AI_ECN ? rechist.acki->ecn_counts : NULL); + assert(len > 0); + assert(largest_received == largest_acked(&test->acki)); + assert((size_t) len == test->encoded_sz); + assert(0 == memcmp(test->encoded, buf, test->encoded_sz)); + } + + /* Test that shorter buffers cannot get parsed */ + for (sz = 1; sz < test->encoded_sz; ++sz) + { + len = pf->pf_parse_ack_frame(test->encoded, sz, &acki, + TP_DEF_ACK_DELAY_EXP); + assert(len < 0); + } + + len = pf->pf_parse_ack_frame(test->encoded, sizeof(test->encoded), &acki, + TP_DEF_ACK_DELAY_EXP); + assert(len > 0); + assert((size_t) len == test->encoded_sz); + compare_ackis(&test->acki, &acki); +} + +int +main (void) +{ + const struct test *test; + + for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) + run_test(test); + + return 0; +} diff --git a/external/lsquic/tests/test_ack_merge.c b/external/lsquic/tests/test_ack_merge.c new file mode 100644 index 0000000..da3654e --- /dev/null +++ b/external/lsquic/tests/test_ack_merge.c @@ -0,0 +1,185 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* Test ACK merge */ + +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_sizes.h" +#include "lsquic_parse.h" + +struct test +{ + int lineno; + int expect_failure; + char a[MAX_ACKI_STR_SZ]; + char b[MAX_ACKI_STR_SZ]; + char result[MAX_ACKI_STR_SZ]; +}; + + +static const struct test tests[] = +{ + + { + .lineno = __LINE__, + .expect_failure = 1, + .a = "", + .b = "[3-3]", + }, + + { + .lineno = __LINE__, + .expect_failure = 1, + .a = "", + .b = "", + }, + + { + .lineno = __LINE__, + .a = "[3-3]", + .b = "[3-3]", + .result = "[3-3]", + }, + + { + .lineno = __LINE__, + .a = "[3-2]", + .b = "[1-1]", + .result = "[3-1]", + }, + + { + .lineno = __LINE__, + .a = "[15-15][3-2]", + .b = "[1-1]", + .result = "[15-15][3-1]", + }, + + { + .lineno = __LINE__, + .a = "[15-10][5-2]", + .b = "[9-6][1-1]", + .result = "[15-1]", + }, + + { + .lineno = __LINE__, + .a = "[15-10][5-2]", + .b = "[15-10][5-2]", + .result = "[15-10][5-2]", + }, + + { + .lineno = __LINE__, + .a = "[33803-33803][33800-33800][33788-33788][33775-33775][33759-33759][33744-33744][33732-33732][33717-33717][33706-33706][33691-33691][33679-33679][33664-33664][33649-33649][33638-33638][33622-33622][33613-33613][33585-33585][33574-33574][33562-33562][33546-33546][33531-33531][33516-33516][33504-33504][33490-33490][33483-33483][33481-32910][32906-32906][32894-32894][32880-32880][32869-32869][32854-32854][32844-32844][32817-32817][32806-32806][32791-32791][32780-32780][32766-32766][32752-32752][32741-32741][32726-32726][32716-32716][32702-32702][32697-32697][32682-32682][32672-32672][32657-32657][32651-32651][32636-32636][32626-32626][32611-32611][32600-32600][32589-32589][32574-32574][32564-32564][32551-32551][32536-32536][32525-32525][32511-32511][32500-32500][32485-32485][32475-32475][32460-32460][32449-32449][32438-32438][32423-32423][32412-32412][32399-32399][32385-32385][32375-32375][32360-32360][32349-32349][32334-32334][32326-32326][32312-32312][32302-32302][32287-32287][32277-32277][32262-32262][32252-32252][32239-32239][32224-32224][32214-32214][32200-32200][32190-32190][32175-32175][32161-32161][32151-32151][32136-32136][32126-32126][32111-32111][32103-32103][32090-32090][32080-32080][32069-32033][32008-30698][30696-30467]", + .b = "[33480-32910][32906-32906][32894-32894][32880-32880][32869-32869][32854-32854][32844-32844][32817-32817][32806-32806][32791-32791][32780-32780][32766-32766][32752-32752][32741-32741][32726-32726][32716-32716][32702-32702][32697-32697][32682-32682][32672-32672][32657-32657][32651-32651][32636-32636][32626-32626][32611-32611][32600-32600][32589-32589][32574-32574][32564-32564][32551-32551][32536-32536][32525-32525][32511-32511][32500-32500][32485-32485][32475-32475][32460-32460][32449-32449][32438-32438][32423-32423][32412-32412][32399-32399][32385-32385][32375-32375][32360-32360][32349-32349][32334-32334][32326-32326][32312-32312][32302-32302][32287-32287][32277-32277][32262-32262][32252-32252][32239-32239][32224-32224][32214-32214][32200-32200][32190-32190][32175-32175][32161-32161][32151-32151][32136-32136][32126-32126][32111-32111][32103-32103][32090-32090][32080-32080][32069-32033][32008-30698][30696-30467]", + .result = "[33803-33803][33800-33800][33788-33788][33775-33775][33759-33759][33744-33744][33732-33732][33717-33717][33706-33706][33691-33691][33679-33679][33664-33664][33649-33649][33638-33638][33622-33622][33613-33613][33585-33585][33574-33574][33562-33562][33546-33546][33531-33531][33516-33516][33504-33504][33490-33490][33483-33483][33481-32910][32906-32906][32894-32894][32880-32880][32869-32869][32854-32854][32844-32844][32817-32817][32806-32806][32791-32791][32780-32780][32766-32766][32752-32752][32741-32741][32726-32726][32716-32716][32702-32702][32697-32697][32682-32682][32672-32672][32657-32657][32651-32651][32636-32636][32626-32626][32611-32611][32600-32600][32589-32589][32574-32574][32564-32564][32551-32551][32536-32536][32525-32525][32511-32511][32500-32500][32485-32485][32475-32475][32460-32460][32449-32449][32438-32438][32423-32423][32412-32412][32399-32399][32385-32385][32375-32375][32360-32360][32349-32349][32334-32334][32326-32326][32312-32312][32302-32302][32287-32287][32277-32277][32262-32262][32252-32252][32239-32239][32224-32224][32214-32214][32200-32200][32190-32190][32175-32175][32161-32161][32151-32151][32136-32136][32126-32126][32111-32111][32103-32103][32090-32090][32080-32080][32069-32033][32008-30698][30696-30467]", + }, + +}; + + +static regex_t re; + + +static void +init_ranges (struct ack_info *a, const char *s) +{ + regmatch_t m[3]; + + while (0 == regexec(&re, s, sizeof(m) / sizeof(m[0]), m, 0)) + { + a->ranges[a->n_ranges].high = atoi(s + m[1].rm_so); + a->ranges[a->n_ranges].low = atoi(s + m[2].rm_so); + /* Self-check: */ + assert(a->ranges[a->n_ranges].high >= a->ranges[a->n_ranges].low); + ++a->n_ranges; + s += m[0].rm_eo; + } +} + + +static void +run_test_ext (const struct test *test, const char *a_str, const char *b_str) +{ + struct ack_info a, b; + int s; + char ack_str[MAX_ACKI_STR_SZ]; + + memset(&a, 0, sizeof(a)); + memset(&b, 0, sizeof(b)); + + init_ranges(&a, a_str); + init_ranges(&b, b_str); + + s = lsquic_merge_acks(&a, &b); + if (test->expect_failure) + { + assert(s != 0); + return; + } + + assert(s == 0); + lsquic_acki2str(&a, ack_str, sizeof(ack_str)); + assert(0 == strcmp(ack_str, test->result)); +} + + +static void +run_test (const struct test *test) +{ + run_test_ext(test, test->a, test->b); + /* If flipped result should be the same: */ + run_test_ext(test, test->b, test->a); +} + + +static void +test_out_of_ranges (int success) +{ + struct ack_info a, b; + int i, s; + + memset(&a, 0, sizeof(a)); + memset(&b, 0, sizeof(b)); + + for (i = 0; i < 129 - success; ++i) + { + a.ranges[i].high = a.ranges[i].low = 100000 - i * 10; + b.ranges[i].high = b.ranges[i].low = 100000 - 5 - i * 10; + } + a.n_ranges = i; + b.n_ranges = i; + + s = lsquic_merge_acks(&a, &b); + if (success) + assert(s == 0); + else + assert(s != 0); +} + + +int +main (void) +{ + const struct test *test; + int s; + + s = regcomp(&re, "\\[([0-9][0-9]*)-([0-9][0-9]*)\\]", REG_EXTENDED); + assert(s == 0); + + for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) + run_test(test); + + test_out_of_ranges(0); + test_out_of_ranges(1); + + regfree(&re); + + return 0; +} diff --git a/external/lsquic/tests/test_ackgen_gquic_be.c b/external/lsquic/tests/test_ackgen_gquic_be.c new file mode 100644 index 0000000..f60ab9b --- /dev/null +++ b/external/lsquic/tests/test_ackgen_gquic_be.c @@ -0,0 +1,389 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * Test how ACK frame is encoded. Receive history module is tested by a + * separate unit test. + */ + +#include +#include +#include +#include + +#ifdef WIN32 +#include "vc_compat.h" +#endif + +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_rechist.h" +#include "lsquic_parse.h" +#include "lsquic_util.h" +#include "lsquic_logger.h" +#include "lsquic.h" + +//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC +#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) + +static void +test1 (void) /* Inverse of quic_framer_test.cc -- NewAckFrameOneAckBlock */ +{ + lsquic_rechist_t rechist; + lsquic_time_t now = lsquic_time_now(); + lsquic_packno_t largest = 0; + + lsquic_rechist_init(&rechist, 0, 0); + + unsigned i; + for (i = 1; i <= 0x1234; ++i) + (void) lsquic_rechist_received(&rechist, i, now); + + const unsigned char expected_ack_frame[] = { + 0x45, + 0x12, 0x34, /* Largest acked */ + 0x87, 0xFF, /* Delta time */ + 0x12, 0x34, /* Block length */ + 0x00, /* Number of timestamps */ + }; + unsigned char outbuf[0x100]; + + int has_missing = -1; + int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now + 0x7FF8000, &has_missing, &largest, NULL); + assert(("ACK frame generation successful", w > 0)); + assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); + assert(("ACK frame contents are as expected", + 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); + assert(("ACK frame has no missing packets", has_missing == 0)); + assert(largest == 0x1234); + + lsquic_rechist_cleanup(&rechist); +} + +static void +test2 (void) /* Inverse of quic_framer_test.cc -- NewAckFrameOneAckBlock, minus + * delta times. + */ +{ + lsquic_rechist_t rechist; + lsquic_time_t now = lsquic_time_now(); + + lsquic_rechist_init(&rechist, 0, 0); + + /* Encode the following ranges: + * high low + * 0x1234 0x1234 + * 0x1232 0x384 + * 0x1F3 0xA + * 0x4 0x1 + */ + unsigned i; + for (i = 4; i >= 1; --i) + (void) lsquic_rechist_received(&rechist, i, now); + (void) lsquic_rechist_received(&rechist, 0x1234, now); + for (i = 0xA; i <= 0x1F3; ++i) + (void) lsquic_rechist_received(&rechist, i, now); + for (i = 0x1232; i >= 0x384; --i) + (void) lsquic_rechist_received(&rechist, i, now); + + const unsigned char expected_ack_frame[] = { + 0x65, + 0x12, 0x34, /* Largest acked */ + 0x00, 0x00, /* Zero delta time. */ + 0x04, /* Num ack blocks ranges. */ + 0x00, 0x01, /* First ack block length. */ + 0x01, /* Gap to next block. */ + 0x0e, 0xaf, /* Ack block length. */ + 0xff, /* Gap to next block. */ + 0x00, 0x00, /* Ack block length. */ + 0x91, /* Gap to next block. */ + 0x01, 0xea, /* Ack block length. */ + 0x05, /* Gap to next block. */ + 0x00, 0x04, /* Ack block length. */ + 0x00, /* Number of timestamps. */ + }; + unsigned char outbuf[0x100]; + + int has_missing = -1; + lsquic_packno_t largest = 0; + int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now, &has_missing, &largest, NULL); + assert(("ACK frame generation successful", w > 0)); + assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); + assert(("ACK frame contents are as expected", + 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); + assert(("ACK frame has missing packets", has_missing > 0)); + assert(largest == 0x1234); + + lsquic_rechist_cleanup(&rechist); +} + +static void +test3 (void) +{ + lsquic_rechist_t rechist; + lsquic_time_t now = lsquic_time_now(); + + lsquic_rechist_init(&rechist, 0, 0); + + /* Encode the following ranges: + * high low + * 3 3 + * 1 1 + */ + (void) lsquic_rechist_received(&rechist, 1, now); + (void) lsquic_rechist_received(&rechist, 3, now); + + const unsigned char expected_ack_frame[] = { + 0x60, + 0x03, + 0x00, 0x00, /* Zero delta time. */ + 0x01, /* Num ack blocks ranges. */ + 0x01, /* First ack block length. */ + 0x01, /* Gap to next block. */ + 0x01, /* Ack block length. */ + 0x00, /* Number of timestamps. */ + }; + unsigned char outbuf[0x100]; + + int has_missing = -1; + lsquic_packno_t largest = 0; + int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now, &has_missing, &largest, NULL); + assert(("ACK frame generation successful", w > 0)); + assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); + assert(("ACK frame contents are as expected", + 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); + assert(("ACK frame has missing packets", has_missing > 0)); + assert(largest == 0x03); + + lsquic_rechist_cleanup(&rechist); +} + + +static void +test4 (void) +{ + lsquic_rechist_t rechist; + int i; + + lsquic_rechist_init(&rechist, 0, 0); + + lsquic_time_t now = lsquic_time_now(); + lsquic_rechist_received(&rechist, 1, now); + + { + const unsigned char expected_ack_frame[] = { + 0x40, + 0x01, /* Largest acked */ + 0x00, 0x00, /* Delta time */ + 0x01, /* Block length */ + 0x00, /* Number of timestamps */ + }; + unsigned char outbuf[0x100]; + int has_missing = -1; + lsquic_packno_t largest = 0; + int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now, &has_missing, &largest, NULL); + assert(("ACK frame generation successful", w > 0)); + assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); + assert(("ACK frame contents are as expected", + 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); + assert(("ACK frame has no missing packets", has_missing == 0)); + assert(largest == 1); + } + + for (i = 3; i <= 5; ++i) + lsquic_rechist_received(&rechist, i, now); + + { + const unsigned char expected_ack_frame[] = { + 0x60, + 0x05, /* Largest acked */ + 0x00, 0x00, /* Delta time */ + 0x01, /* Num ack blocks */ + 0x03, /* First block length [3, 5] */ + 0x01, /* Gap to next block */ + 0x01, /* Second block length [1, 1] */ + 0x00, /* Number of timestamps */ + }; + unsigned char outbuf[0x100]; + int has_missing = -1; + lsquic_packno_t largest = 0; + int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now, &has_missing, &largest, NULL); + assert(("ACK frame generation successful", w > 0)); + assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); + assert(("ACK frame contents are as expected", + 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); + assert(("ACK frame has missing packets", has_missing > 0)); + assert(largest == 5); + } + + lsquic_rechist_cleanup(&rechist); +} + + +static void +test_4byte_packnos (void) +{ + lsquic_packno_t packno; + lsquic_rechist_t rechist; + lsquic_time_t now = lsquic_time_now(); + + lsquic_rechist_init(&rechist, 0, 0); + + packno = 0x23456789; + (void) lsquic_rechist_received(&rechist, packno - 33, now); + (void) lsquic_rechist_received(&rechist, packno, now); + + /* Adjust: */ + rechist.rh_elems[0].re_low = 1; + rechist.rh_elems[0].re_count = packno - 33; + + const unsigned char expected_ack_frame[] = { + 0x60 + | (2 << 2) /* Four-byte largest acked */ + | (2 << 0) /* Four-byte ACK block length */ + , + 0x23, 0x45, 0x67, 0x89, + 0x00, 0x00, /* Zero delta time. */ + 0x01, /* Num ack blocks ranges. */ + 0x00, 0x00, 0x00, 0x01, /* First ack block length. */ + 33 - 1, /* Gap to next block. */ + 0x23, 0x45, 0x67, 0x68, /* Ack block length. */ + 0x00, /* Number of timestamps. */ + }; + unsigned char outbuf[0x100]; + + int has_missing = -1; + lsquic_packno_t largest = 0; + int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now, &has_missing, &largest, NULL); + assert(("ACK frame generation successful", w > 0)); + assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); + assert(("ACK frame contents are as expected", + 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); + assert(("ACK frame has missing packets", has_missing > 0)); + assert(largest == 0x23456789); + + lsquic_rechist_cleanup(&rechist); +} + + +/* lsquic_rechist no longer supports ranges that require integers + * wider than four bytes -- modify the test to use a custom receive + * history. + */ +static const struct lsquic_packno_range test_6byte_ranges[] = { + { .high = 0xABCD23456789, .low = 0xABCD23456789, }, + { .high = 0xABCD23456789 - 33, .low = 1, }, +}; + + +static const struct lsquic_packno_range * +test_6byte_rechist_first (void *rechist) +{ + int *next = rechist; + *next = 1; + return &test_6byte_ranges[0]; +}; + + +static const struct lsquic_packno_range * +test_6byte_rechist_next (void *rechist) +{ + int *next = rechist; + if (*next == 1) + { + ++*next; + return &test_6byte_ranges[1]; + } + else + return NULL; +} + + +static lsquic_time_t s_test_6byte_now; +static lsquic_time_t +test_6byte_rechist_largest_recv (void *rechist) +{ + return s_test_6byte_now; +} + + +static void +test_6byte_packnos (void) +{ + int rechist = 0; + s_test_6byte_now = lsquic_time_now(); + + const unsigned char expected_ack_frame[] = { + 0x60 + | (3 << 2) /* Six-byte largest acked */ + | (3 << 0) /* Six-byte ACK block length */ + , + 0xAB, 0xCD, 0x23, 0x45, 0x67, 0x89, + 0x00, 0x00, /* Zero delta time. */ + 0x01, /* Num ack blocks ranges. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, /* First ack block length. */ + 33 - 1, /* Gap to next block. */ + 0xAB, 0xCD, 0x23, 0x45, 0x67, 0x68, /* Ack block length. */ + 0x00, /* Number of timestamps. */ + }; + unsigned char outbuf[0x100]; + + int has_missing = -1; + lsquic_packno_t largest = 0; + int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), + test_6byte_rechist_first, + test_6byte_rechist_next, + test_6byte_rechist_largest_recv, + &rechist, s_test_6byte_now, &has_missing, &largest, NULL); + assert(("ACK frame generation successful", w > 0)); + assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); + assert(("ACK frame contents are as expected", + 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); + assert(("ACK frame has missing packets", has_missing > 0)); + assert(largest == 0xABCD23456789ULL); +} + + +int +main (void) +{ + lsquic_global_init(LSQUIC_GLOBAL_SERVER); + lsquic_log_to_fstream(stderr, LLTS_NONE); + lsq_log_levels[LSQLM_PARSE] = LSQ_LOG_DEBUG; + + test1(); + + test2(); + + test3(); + + test4(); + + test_4byte_packnos(); + + test_6byte_packnos(); + + return 0; +} diff --git a/external/lsquic/tests/test_ackgen_gquic_le.c b/external/lsquic/tests/test_ackgen_gquic_le.c new file mode 100644 index 0000000..32f09a8 --- /dev/null +++ b/external/lsquic/tests/test_ackgen_gquic_le.c @@ -0,0 +1,359 @@ +/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * Test how ACK frame is encoded. Receive history module is tested by a + * separate unit test. + */ + +#include +#include +#include +#include + +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_rechist.h" +#include "lsquic_parse.h" +#include "lsquic_util.h" +#include "lsquic_logger.h" +#include "lsquic.h" + +static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); + +static void +test1 (void) /* Inverse of quic_framer_test.cc -- NewAckFrameOneAckBlock */ +{ + lsquic_rechist_t rechist; + lsquic_time_t now = lsquic_time_now(); + lsquic_packno_t largest = 0; + + lsquic_rechist_init(&rechist, 0); + + unsigned i; + for (i = 1; i <= 0x1234; ++i) + (void) lsquic_rechist_received(&rechist, i, now); + + const unsigned char expected_ack_frame[] = { + 0x45, + 0x34, 0x12, /* Largest acked */ + 0xFF, 0x87, /* Delta time */ + 0x34, 0x12, /* Block length */ + 0x00, /* Number of timestamps */ + }; + unsigned char outbuf[0x100]; + + int has_missing = -1; + int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now + 0x7FF8000, &has_missing, &largest); + assert(("ACK frame generation successful", w > 0)); + assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); + assert(("ACK frame contents are as expected", + 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); + assert(("ACK frame has no missing packets", has_missing == 0)); + assert(largest == 0x1234); + + lsquic_rechist_cleanup(&rechist); +} + +static void +test2 (void) /* Inverse of quic_framer_test.cc -- NewAckFrameOneAckBlock, minus + * delta times. + */ +{ + lsquic_rechist_t rechist; + lsquic_time_t now = lsquic_time_now(); + + lsquic_rechist_init(&rechist, 0); + + /* Encode the following ranges: + * high low + * 0x1234 0x1234 + * 0x1232 0x384 + * 0x1F3 0xA + * 0x4 0x1 + */ + unsigned i; + for (i = 4; i >= 1; --i) + (void) lsquic_rechist_received(&rechist, i, now); + (void) lsquic_rechist_received(&rechist, 0x1234, now); + for (i = 0xA; i <= 0x1F3; ++i) + (void) lsquic_rechist_received(&rechist, i, now); + for (i = 0x1232; i >= 0x384; --i) + (void) lsquic_rechist_received(&rechist, i, now); + + const unsigned char expected_ack_frame[] = { + 0x65, + 0x34, 0x12, /* Largest acked */ + 0x00, 0x00, /* Zero delta time. */ + 0x04, /* Num ack blocks ranges. */ + 0x01, 0x00, /* First ack block length. */ + 0x01, /* Gap to next block. */ + 0xaf, 0x0e, /* Ack block length. */ + 0xff, /* Gap to next block. */ + 0x00, 0x00, /* Ack block length. */ + 0x91, /* Gap to next block. */ + 0xea, 0x01, /* Ack block length. */ + 0x05, /* Gap to next block. */ + 0x04, 0x00, /* Ack block length. */ + 0x00, /* Number of timestamps. */ + }; + unsigned char outbuf[0x100]; + + int has_missing = -1; + lsquic_packno_t largest = 0; + int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now, &has_missing, &largest); + assert(("ACK frame generation successful", w > 0)); + assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); + assert(("ACK frame contents are as expected", + 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); + assert(("ACK frame has missing packets", has_missing > 0)); + assert(largest == 0x1234); + + lsquic_rechist_cleanup(&rechist); +} + +static void +test3 (void) +{ + lsquic_rechist_t rechist; + lsquic_time_t now = lsquic_time_now(); + + lsquic_rechist_init(&rechist, 0); + + /* Encode the following ranges: + * high low + * 3 3 + * 1 1 + */ + (void) lsquic_rechist_received(&rechist, 1, now); + (void) lsquic_rechist_received(&rechist, 3, now); + + const unsigned char expected_ack_frame[] = { + 0x60, + 0x03, + 0x00, 0x00, /* Zero delta time. */ + 0x01, /* Num ack blocks ranges. */ + 0x01, /* First ack block length. */ + 0x01, /* Gap to next block. */ + 0x01, /* Ack block length. */ + 0x00, /* Number of timestamps. */ + }; + unsigned char outbuf[0x100]; + + int has_missing = -1; + lsquic_packno_t largest = 0; + int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now, &has_missing, &largest); + assert(("ACK frame generation successful", w > 0)); + assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); + assert(("ACK frame contents are as expected", + 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); + assert(("ACK frame has missing packets", has_missing > 0)); + assert(largest == 0x03); + + lsquic_rechist_cleanup(&rechist); +} + + +static void +test4 (void) +{ + lsquic_rechist_t rechist; + int i; + + lsquic_rechist_init(&rechist, 0); + + lsquic_time_t now = lsquic_time_now(); + lsquic_rechist_received(&rechist, 1, now); + + { + const unsigned char expected_ack_frame[] = { + 0x40, + 0x01, /* Largest acked */ + 0x00, 0x00, /* Delta time */ + 0x01, /* Block length */ + 0x00, /* Number of timestamps */ + }; + unsigned char outbuf[0x100]; + int has_missing = -1; + lsquic_packno_t largest = 0; + int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now, &has_missing, &largest); + assert(("ACK frame generation successful", w > 0)); + assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); + assert(("ACK frame contents are as expected", + 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); + assert(("ACK frame has no missing packets", has_missing == 0)); + assert(largest == 1); + } + + for (i = 3; i <= 5; ++i) + lsquic_rechist_received(&rechist, i, now); + + { + const unsigned char expected_ack_frame[] = { + 0x60, + 0x05, /* Largest acked */ + 0x00, 0x00, /* Delta time */ + 0x01, /* Num ack blocks */ + 0x03, /* First block length [3, 5] */ + 0x01, /* Gap to next block */ + 0x01, /* Second block length [1, 1] */ + 0x00, /* Number of timestamps */ + }; + unsigned char outbuf[0x100]; + int has_missing = -1; + lsquic_packno_t largest = 0; + int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now, &has_missing, &largest); + assert(("ACK frame generation successful", w > 0)); + assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); + assert(("ACK frame contents are as expected", + 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); + assert(("ACK frame has missing packets", has_missing > 0)); + assert(largest == 5); + } + + lsquic_rechist_cleanup(&rechist); +} + + +static void +test_4byte_packnos (void) +{ + lsquic_packno_t packno; + lsquic_rechist_t rechist; + struct packet_interval *pint; + lsquic_time_t now = lsquic_time_now(); + + lsquic_rechist_init(&rechist, 0); + + packno = 0x23456789; + (void) lsquic_rechist_received(&rechist, packno - 33, now); + pint = TAILQ_FIRST(&rechist.rh_pints.pk_intervals); + (void) lsquic_rechist_received(&rechist, packno, now); + + /* Adjust: */ + pint->range.low = 1; + + const unsigned char expected_ack_frame[] = { + 0x60 + | (2 << 2) /* Four-byte largest acked */ + | (2 << 0) /* Four-byte ACK block length */ + , + 0x89, 0x67, 0x45, 0x23, + 0x00, 0x00, /* Zero delta time. */ + 0x01, /* Num ack blocks ranges. */ + 0x01, 0x00, 0x00, 0x00, /* First ack block length. */ + 33 - 1, /* Gap to next block. */ + 0x68, 0x67, 0x45, 0x23, /* Ack block length. */ + 0x00, /* Number of timestamps. */ + }; + unsigned char outbuf[0x100]; + + int has_missing = -1; + lsquic_packno_t largest = 0; + int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now, &has_missing, &largest); + assert(("ACK frame generation successful", w > 0)); + assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); + assert(("ACK frame contents are as expected", + 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); + assert(("ACK frame has missing packets", has_missing > 0)); + assert(largest == 0x23456789); + + lsquic_rechist_cleanup(&rechist); +} + + +static void +test_6byte_packnos (void) +{ + lsquic_packno_t packno; + lsquic_rechist_t rechist; + struct packet_interval *pint; + lsquic_time_t now = lsquic_time_now(); + + lsquic_rechist_init(&rechist, 0); + + packno = 0xABCD23456789; + (void) lsquic_rechist_received(&rechist, packno - 33, now); + pint = TAILQ_FIRST(&rechist.rh_pints.pk_intervals); + (void) lsquic_rechist_received(&rechist, packno, now); + + /* Adjust: */ + pint->range.low = 1; + + const unsigned char expected_ack_frame[] = { + 0x60 + | (3 << 2) /* Six-byte largest acked */ + | (3 << 0) /* Six-byte ACK block length */ + , + 0x89, 0x67, 0x45, 0x23, 0xCD, 0xAB, + 0x00, 0x00, /* Zero delta time. */ + 0x01, /* Num ack blocks ranges. */ + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, /* First ack block length. */ + 33 - 1, /* Gap to next block. */ + 0x68, 0x67, 0x45, 0x23, 0xCD, 0xAB, /* Ack block length. */ + 0x00, /* Number of timestamps. */ + }; + unsigned char outbuf[0x100]; + + int has_missing = -1; + lsquic_packno_t largest = 0; + int w = pf->pf_gen_ack_frame(outbuf, sizeof(outbuf), + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now, &has_missing, &largest); + assert(("ACK frame generation successful", w > 0)); + assert(("ACK frame length is correct", w == sizeof(expected_ack_frame))); + assert(("ACK frame contents are as expected", + 0 == memcmp(outbuf, expected_ack_frame, sizeof(expected_ack_frame)))); + assert(("ACK frame has missing packets", has_missing > 0)); + assert(largest == 0xABCD23456789ULL); + + lsquic_rechist_cleanup(&rechist); +} + + + +int +main (void) +{ + lsquic_global_init(LSQUIC_GLOBAL_SERVER); + lsquic_log_to_fstream(stderr, 0); + lsq_log_levels[LSQLM_PARSE] = LSQ_LOG_DEBUG; + + test1(); + + test2(); + + test3(); + + test4(); + + test_4byte_packnos(); + + test_6byte_packnos(); + + return 0; +} diff --git a/external/lsquic/tests/test_ackparse_gquic_be.c b/external/lsquic/tests/test_ackparse_gquic_be.c new file mode 100644 index 0000000..1b8c9de --- /dev/null +++ b/external/lsquic/tests/test_ackparse_gquic_be.c @@ -0,0 +1,470 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include "vc_compat.h" +#endif + +#include "lsquic_types.h" +#include "lsquic_parse.h" +#include "lsquic_rechist.h" +#include "lsquic_util.h" +#include "lsquic.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" + +static struct lsquic_conn lconn = LSCONN_INITIALIZER_CIDLEN(lconn, 0); + +//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC +#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) + + +static lsquic_packno_t +n_acked (const struct ack_info *acki) +{ + lsquic_packno_t n = 0; + unsigned i; + for (i = 0; i < acki->n_ranges; ++i) + n += acki->ranges[i].high - acki->ranges[i].low + 1; + return n; +} + + +static void +test1 (void) +{ + /* Test taken from quic_framer_test.cc -- NewAckFrameOneAckBlock */ + unsigned char ack_buf[] = { + 0x45, + 0x12, 0x34, /* Largest acked */ + 0x00, 0x00, /* Delta time */ + 0x12, 0x34, /* Block length */ + 0x00, /* Number of timestamps */ + }; + + struct ack_info acki; + memset(&acki, 0xF1, sizeof(acki)); + + int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki, 0); + assert(("Parsed length is correct (8)", len == sizeof(ack_buf))); + assert(("Number of ranges is 1", acki.n_ranges == 1)); + assert(("Largest acked is 0x1234", acki.ranges[0].high == 0x1234)); + assert(("Lowest acked is 1", acki.ranges[0].low == 1)); + unsigned n = n_acked(&acki); + assert(("Number of acked packets is 0x1234", n == 0x1234)); + + { + size_t sz; + for (sz = 1; sz < sizeof(ack_buf); ++sz) + { + len = pf->pf_parse_ack_frame(ack_buf, sz, &acki, 0); + assert(("Parsing truncated frame failed", len < 0)); + } + } +} + + +static void +test2 (void) +{ + /* Test taken from quic_framer_test.cc -- NewAckFrameOneAckBlock */ + unsigned char ack_buf[] = { + 0x65, + 0x12, 0x34, /* Largest acked */ + 0x00, 0x00, /* Zero delta time. */ + 0x04, /* Num ack blocks ranges. */ + 0x00, 0x01, /* First ack block length. */ + 0x01, /* Gap to next block. */ + 0x0e, 0xaf, /* Ack block length. */ + 0xff, /* Gap to next block. */ + 0x00, 0x00, /* Ack block length. */ + 0x91, /* Gap to next block. */ + 0x01, 0xea, /* Ack block length. */ + 0x05, /* Gap to next block. */ + 0x00, 0x04, /* Ack block length. */ + 0x02, /* Number of timestamps. */ + 0x01, /* Delta from largest observed. */ + 0x10, 0x32, 0x54, 0x76, /* Delta time. */ /* XXX do we use this at all? */ + 0x02, /* Delta from largest observed. */ + 0x10, 0x32, /* Delta time. */ + }; + + /* We should get the following array of ranges: + * high low + * 0x1234 0x1234 + * 0x1232 0x384 + * 0x1F3 0xA + * 0x4 0x1 + */ + static const struct { unsigned high, low; } ranges[] = { + { 0x1234, 0x1234 }, + { 0x1232, 0x384 }, + { 0x1F3, 0xA }, + { 0x4, 0x1 }, + }; + + struct ack_info acki; + memset(&acki, 0xF1, sizeof(acki)); + + int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki, 0); + assert(("Parsed length is correct (29)", len == sizeof(ack_buf))); + assert(("Number of ranges is 4", acki.n_ranges == 4)); + assert(("Largest acked is 0x1234", acki.ranges[0].high == 0x1234)); + unsigned n = n_acked(&acki); + assert(("Number of acked packets is 4254", n == 4254)); + + for (n = 0; n < 4; ++n) + assert(("Range checks out", ranges[n].high == acki.ranges[n].high + && ranges[n].low == acki.ranges[n].low)); + + { + size_t sz; + for (sz = 1; sz < sizeof(ack_buf); ++sz) + { + len = pf->pf_parse_ack_frame(ack_buf, sz, &acki, 0); + assert(("Parsing truncated frame failed", len < 0)); + } + } +} + + +static void +test3 (void) +{ + /* Generated by our own code, but failed to parse... */ + unsigned char ack_buf[] = { + 0x60, /* More than one ack block, 1 byte largest observed, 1 byte block length */ + 0x06, /* Largest ACKed */ + 0x00, 0x00, /* Delta time */ + 0x01, /* Num ACK block ranges */ + 0x01, /* First ACK block length */ + 0x02, /* Gap to next block */ + 0x03, /* Ack block length */ + 0x00 /* Number of timestamps */ + }; + + /* We should get the following array of ranges: + * high low + * 6 6 + * 3 1 + */ + static const struct { unsigned high, low; } ranges[] = { + { 6, 6, }, + { 3, 1, }, + }; + + struct ack_info acki; + memset(&acki, 0xF1, sizeof(acki)); + + int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki, 0); + assert(("Parsed length is correct (9)", len == sizeof(ack_buf))); + assert(("Number of ranges is 2", acki.n_ranges == 2)); + assert(("Largest acked is 6", acki.ranges[0].high == 6)); + unsigned n = n_acked(&acki); + assert(("Number of acked packets is 4", n == 4)); + + for (n = 0; n < 2; ++n) + assert(("Range checks out", ranges[n].high == acki.ranges[n].high + && ranges[n].low == acki.ranges[n].low)); + + { + size_t sz; + for (sz = 1; sz < sizeof(ack_buf); ++sz) + { + len = pf->pf_parse_ack_frame(ack_buf, sz, &acki, 0); + assert(("Parsing truncated frame failed", len < 0)); + } + } +} + + +static void +test4 (void) +{ + unsigned char ack_buf[] = { + 0x60, /* More than one ack block, 1 byte largest observed, 1 byte block length */ + 0x03, /* Largest ACKed */ + 0x23, 0x00, /* Delta time */ + 0x01, /* Num ACK block ranges */ + 0x01, /* First ack block length */ + 0x01, /* Gap */ + 0x01, /* Ack block length */ + 0x00, /* Number of timestamps */ + }; + + /* We should get the following array of ranges: + * high low + * 6 6 + * 3 1 + */ + static const struct { unsigned high, low; } ranges[] = { + { 3, 3, }, + { 1, 1, }, + }; + + struct ack_info acki; + memset(&acki, 0xF1, sizeof(acki)); + + int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki, 0); + assert(("Parsed length is correct (9)", len == sizeof(ack_buf))); + assert(("Number of ranges is 2", acki.n_ranges == 2)); + assert(("Largest acked is 3", acki.ranges[0].high == 3)); + unsigned n = n_acked(&acki); + assert(("Number of acked packets is 2", n == 2)); + + for (n = 0; n < 2; ++n) + assert(("Range checks out", ranges[n].high == acki.ranges[n].high + && ranges[n].low == acki.ranges[n].low)); + + { + size_t sz; + for (sz = 1; sz < sizeof(ack_buf); ++sz) + { + len = pf->pf_parse_ack_frame(ack_buf, sz, &acki, 0); + assert(("Parsing truncated frame failed", len < 0)); + } + } +} + + +/* Four-byte packet numbers */ +static void +test5 (void) +{ + unsigned char ack_buf[] = { + 0x60 + | (2 << 2) /* Four-byte largest acked */ + | (2 << 0) /* Four-byte ACK block length */ + , + 0x23, 0x45, 0x67, 0x89, + 0x00, 0x00, /* Zero delta time. */ + 0x01, /* Num ack blocks ranges. */ + 0x00, 0x00, 0x00, 0x01, /* First ack block length. */ + 33 - 1, /* Gap to next block. */ + 0x23, 0x45, 0x67, 0x68, /* Ack block length. */ + 0x00, /* Number of timestamps. */ + }; + + /* We should get the following array of ranges: + * high low + * 6 6 + * 3 1 + */ + static const struct { unsigned high, low; } ranges[] = { + { 0x23456789, 0x23456789, }, + { 0x23456768, 1, }, + }; + + struct ack_info acki; + memset(&acki, 0xF1, sizeof(acki)); + + int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki, 0); + assert(("Parsed length is correct (9)", len == sizeof(ack_buf))); + assert(("Number of ranges is 2", acki.n_ranges == 2)); + assert(("Largest acked is 0x23456789", acki.ranges[0].high == 0x23456789)); + lsquic_packno_t n = n_acked(&acki); + assert(("Number of acked packets is correct", n == 0x23456768 + 1)); + + for (n = 0; n < 2; ++n) + assert(("Range checks out", ranges[n].high == acki.ranges[n].high + && ranges[n].low == acki.ranges[n].low)); + + { + size_t sz; + for (sz = 1; sz < sizeof(ack_buf); ++sz) + { + len = pf->pf_parse_ack_frame(ack_buf, sz, &acki, 0); + assert(("Parsing truncated frame failed", len < 0)); + } + } +} + + +/* Six-byte packet numbers */ +static void +test6 (void) +{ + unsigned char ack_buf[] = { + 0x60 + | (3 << 2) /* Six-byte largest acked */ + | (3 << 0) /* Six-byte ACK block length */ + , + 0xAB, 0xCD, 0x23, 0x45, 0x67, 0x89, + 0x00, 0x00, /* Zero delta time. */ + 0x01, /* Num ack blocks ranges. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, /* First ack block length. */ + 33 - 1, /* Gap to next block. */ + 0xAB, 0xCD, 0x23, 0x45, 0x67, 0x68, /* Ack block length. */ + 0x00, /* Number of timestamps. */ + }; + + static const struct { lsquic_packno_t high, low; } ranges[] = { + { 0xABCD23456789, 0xABCD23456789, }, + { 0xABCD23456768, 1, }, + }; + + struct ack_info acki; + memset(&acki, 0xF1, sizeof(acki)); + + int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki, 0); + assert(("Parsed length is correct", len == sizeof(ack_buf))); + assert(("Number of ranges is 2", acki.n_ranges == 2)); + assert(("Largest acked is 0xABCD23456789", acki.ranges[0].high == 0xABCD23456789)); + lsquic_packno_t n = n_acked(&acki); + assert(("Number of acked packets is correct", n == 0xABCD23456768 + 1)); + + for (n = 0; n < 2; ++n) + assert(("Range checks out", ranges[n].high == acki.ranges[n].high + && ranges[n].low == acki.ranges[n].low)); + + { + size_t sz; + for (sz = 1; sz < sizeof(ack_buf); ++sz) + { + len = pf->pf_parse_ack_frame(ack_buf, sz, &acki, 0); + assert(("Parsing truncated frame failed", len < 0)); + } + } +} + + +static void +test_max_ack (void) +{ + lsquic_rechist_t rechist; + lsquic_time_t now; + unsigned i; + int has_missing, sz[2]; + const struct lsquic_packno_range *range; + unsigned char buf[1500]; + struct ack_info acki; + + lsquic_rechist_init(&rechist, 0, 0); + now = lsquic_time_now(); + + for (i = 1; i <= 300; ++i) + { + lsquic_rechist_received(&rechist, i * 10, now); + now += i * 1000; + } + + memset(buf, 0xAA, sizeof(buf)); + + lsquic_packno_t largest = 0; + sz[0] = pf->pf_gen_ack_frame(buf, sizeof(buf), + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now, &has_missing, &largest, NULL); + assert(sz[0] > 0); + assert(sz[0] <= (int) sizeof(buf)); + assert(has_missing); + + assert(0 == buf[ sz[0] - 1 ]); /* Number of timestamps */ + assert(0xAA == buf[ sz[0] ]); + + sz[1] = pf->pf_parse_ack_frame(buf, sizeof(buf), &acki, 0); + assert(sz[1] == sz[0]); + assert(256 == acki.n_ranges); + + for (range = lsquic_rechist_first(&rechist), i = 0; + range && i < acki.n_ranges; + range = lsquic_rechist_next(&rechist), ++i) + { + assert(range->high == acki.ranges[i].high); + assert(range->low == acki.ranges[i].low); + } + assert(i == 256); + + lsquic_rechist_cleanup(&rechist); +} + + +static void +test_ack_truncation (void) +{ + lsquic_rechist_t rechist; + lsquic_time_t now; + unsigned i; + int has_missing, sz[2]; + const struct lsquic_packno_range *range; + unsigned char buf[1500]; + struct ack_info acki; + size_t bufsz; + + lsquic_rechist_init(&rechist, 0, 0); + now = lsquic_time_now(); + + for (i = 1; i <= 300; ++i) + { + lsquic_rechist_received(&rechist, i * 10, now); + now += i * 1000; + } + + for (bufsz = 200; bufsz < 210; ++bufsz) + { + memset(buf, 0xAA, sizeof(buf)); + lsquic_packno_t largest = 0; + sz[0] = pf->pf_gen_ack_frame(buf, bufsz, + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now, &has_missing, &largest, NULL); + assert(sz[0] > 0); + assert(sz[0] <= (int) bufsz); + assert(has_missing); + + assert(0 == buf[ sz[0] - 1 ]); /* Number of timestamps */ + assert(0xAA == buf[ sz[0] ]); + + sz[1] = pf->pf_parse_ack_frame(buf, sizeof(buf), &acki, 0); + assert(sz[1] == sz[0]); + assert(acki.n_ranges < 256); + + for (range = lsquic_rechist_first(&rechist), i = 0; + range && i < acki.n_ranges; + range = lsquic_rechist_next(&rechist), ++i) + { + assert(range->high == acki.ranges[i].high); + assert(range->low == acki.ranges[i].low); + } + } + + lsquic_rechist_cleanup(&rechist); +} + + +static void +test_empty_ack (void) +{ + int len; + unsigned char buf[] = { 0x40, 0x00, 0xFF, 0xFF, 0x00, 0x00, + /* fluff: */ 0x12, 0x23, 0x34, 0x45, }; + struct ack_info acki; + + len = pf->pf_parse_ack_frame(buf, sizeof(buf), &acki, 0); + assert(6 == len); + assert(empty_ack_frame(&acki)); +} + + +int +main (void) +{ + lsquic_global_init(LSQUIC_GLOBAL_SERVER); + test1(); + test2(); + test3(); + test4(); + test5(); + test6(); + test_max_ack(); + test_ack_truncation(); + test_empty_ack(); + return 0; +} diff --git a/external/lsquic/tests/test_ackparse_gquic_le.c b/external/lsquic/tests/test_ackparse_gquic_le.c new file mode 100644 index 0000000..013e51a --- /dev/null +++ b/external/lsquic/tests/test_ackparse_gquic_le.c @@ -0,0 +1,452 @@ +/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic_types.h" +#include "lsquic_parse.h" +#include "lsquic_rechist.h" +#include "lsquic_util.h" +#include "lsquic.h" + +static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); + +static lsquic_packno_t +n_acked (const ack_info_t *acki) +{ + lsquic_packno_t n = 0; + unsigned i; + for (i = 0; i < acki->n_ranges; ++i) + n += acki->ranges[i].high - acki->ranges[i].low + 1; + return n; +} + + +static void +test1 (void) +{ + /* Test taken from quic_framer_test.cc -- NewAckFrameOneAckBlock */ + unsigned char ack_buf[] = { + 0x45, + 0x34, 0x12, /* Largest acked */ + 0x00, 0x00, /* Delta time */ + 0x34, 0x12, /* Block length */ + 0x00, /* Number of timestamps */ + }; + + ack_info_t acki; + memset(&acki, 0xF1, sizeof(acki)); + + int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki); + assert(("Parsed length is correct (8)", len == sizeof(ack_buf))); + assert(("Number of ranges is 1", acki.n_ranges == 1)); + assert(("Largest acked is 0x1234", acki.ranges[0].high == 0x1234)); + assert(("Lowest acked is 1", acki.ranges[0].low == 1)); + assert(("Number of timestamps is 0", acki.n_timestamps == 0)); + unsigned n = n_acked(&acki); + assert(("Number of acked packets is 0x1234", n == 0x1234)); + + { + size_t sz; + for (sz = 1; sz < sizeof(ack_buf); ++sz) + { + len = pf->pf_parse_ack_frame(ack_buf, sz, &acki); + assert(("Parsing truncated frame failed", len < 0)); + } + } +} + + +static void +test2 (void) +{ + /* Test taken from quic_framer_test.cc -- NewAckFrameOneAckBlock */ + unsigned char ack_buf[] = { + 0x65, + 0x34, 0x12, /* Largest acked */ + 0x00, 0x00, /* Zero delta time. */ + 0x04, /* Num ack blocks ranges. */ + 0x01, 0x00, /* First ack block length. */ + 0x01, /* Gap to next block. */ + 0xaf, 0x0e, /* Ack block length. */ + 0xff, /* Gap to next block. */ + 0x00, 0x00, /* Ack block length. */ + 0x91, /* Gap to next block. */ + 0xea, 0x01, /* Ack block length. */ + 0x05, /* Gap to next block. */ + 0x04, 0x00, /* Ack block length. */ + 0x02, /* Number of timestamps. */ + 0x01, /* Delta from largest observed. */ + 0x10, 0x32, 0x54, 0x76, /* Delta time. */ + 0x02, /* Delta from largest observed. */ + 0x10, 0x32, /* Delta time. */ + }; + + /* We should get the following array of ranges: + * high low + * 0x1234 0x1234 + * 0x1232 0x384 + * 0x1F3 0xA + * 0x4 0x1 + */ + static const struct { unsigned high, low; } ranges[] = { + { 0x1234, 0x1234 }, + { 0x1232, 0x384 }, + { 0x1F3, 0xA }, + { 0x4, 0x1 }, + }; + + ack_info_t acki; + memset(&acki, 0xF1, sizeof(acki)); + + int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki); + assert(("Parsed length is correct (29)", len == sizeof(ack_buf))); + assert(("Number of ranges is 4", acki.n_ranges == 4)); + assert(("Largest acked is 0x1234", acki.ranges[0].high == 0x1234)); + assert(("Number of timestamps is 2", acki.n_timestamps == 2)); + unsigned n = n_acked(&acki); + assert(("Number of acked packets is 4254", n == 4254)); + + for (n = 0; n < 4; ++n) + assert(("Range checks out", ranges[n].high == acki.ranges[n].high + && ranges[n].low == acki.ranges[n].low)); + + { + size_t sz; + for (sz = 1; sz < sizeof(ack_buf); ++sz) + { + len = pf->pf_parse_ack_frame(ack_buf, sz, &acki); + assert(("Parsing truncated frame failed", len < 0)); + } + } +} + + +static void +test3 (void) +{ + /* Generated by our own code, but failed to parse... */ + unsigned char ack_buf[] = { + 0x60, /* More than one ack block, 1 byte largest observed, 1 byte block length */ + 0x06, /* Largest ACKed */ + 0x00, 0x00, /* Delta time */ + 0x01, /* Num ACK block ranges */ + 0x01, /* First ACK block length */ + 0x02, /* Gap to next block */ + 0x03, /* Ack block length */ + 0x00 /* Number of timestamps */ + }; + + /* We should get the following array of ranges: + * high low + * 6 6 + * 3 1 + */ + static const struct { unsigned high, low; } ranges[] = { + { 6, 6, }, + { 3, 1, }, + }; + + ack_info_t acki; + memset(&acki, 0xF1, sizeof(acki)); + + int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki); + assert(("Parsed length is correct (9)", len == sizeof(ack_buf))); + assert(("Number of ranges is 2", acki.n_ranges == 2)); + assert(("Largest acked is 6", acki.ranges[0].high == 6)); + assert(("Number of timestamps is 0", acki.n_timestamps == 0)); + unsigned n = n_acked(&acki); + assert(("Number of acked packets is 4", n == 4)); + + for (n = 0; n < 2; ++n) + assert(("Range checks out", ranges[n].high == acki.ranges[n].high + && ranges[n].low == acki.ranges[n].low)); + + { + size_t sz; + for (sz = 1; sz < sizeof(ack_buf); ++sz) + { + len = pf->pf_parse_ack_frame(ack_buf, sz, &acki); + assert(("Parsing truncated frame failed", len < 0)); + } + } +} + + +static void +test4 (void) +{ + unsigned char ack_buf[] = { + 0x60, /* More than one ack block, 1 byte largest observed, 1 byte block length */ + 0x03, /* Largest ACKed */ + 0x23, 0x00, /* Delta time */ + 0x01, /* Num ACK block ranges */ + 0x01, /* First ack block length */ + 0x01, /* Gap */ + 0x01, /* Ack block length */ + 0x00, /* Number of timestamps */ + }; + + /* We should get the following array of ranges: + * high low + * 6 6 + * 3 1 + */ + static const struct { unsigned high, low; } ranges[] = { + { 3, 3, }, + { 1, 1, }, + }; + + ack_info_t acki; + memset(&acki, 0xF1, sizeof(acki)); + + int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki); + assert(("Parsed length is correct (9)", len == sizeof(ack_buf))); + assert(("Number of ranges is 2", acki.n_ranges == 2)); + assert(("Largest acked is 3", acki.ranges[0].high == 3)); + assert(("Number of timestamps is 0", acki.n_timestamps == 0)); + unsigned n = n_acked(&acki); + assert(("Number of acked packets is 2", n == 2)); + + for (n = 0; n < 2; ++n) + assert(("Range checks out", ranges[n].high == acki.ranges[n].high + && ranges[n].low == acki.ranges[n].low)); + + { + size_t sz; + for (sz = 1; sz < sizeof(ack_buf); ++sz) + { + len = pf->pf_parse_ack_frame(ack_buf, sz, &acki); + assert(("Parsing truncated frame failed", len < 0)); + } + } +} + + +/* Four-byte packet numbers */ +static void +test5 (void) +{ + unsigned char ack_buf[] = { + 0x60 + | (2 << 2) /* Four-byte largest acked */ + | (2 << 0) /* Four-byte ACK block length */ + , + 0x89, 0x67, 0x45, 0x23, + 0x00, 0x00, /* Zero delta time. */ + 0x01, /* Num ack blocks ranges. */ + 0x01, 0x00, 0x00, 0x00, /* First ack block length. */ + 33 - 1, /* Gap to next block. */ + 0x68, 0x67, 0x45, 0x23, /* Ack block length. */ + 0x00, /* Number of timestamps. */ + }; + + /* We should get the following array of ranges: + * high low + * 6 6 + * 3 1 + */ + static const struct { unsigned high, low; } ranges[] = { + { 0x23456789, 0x23456789, }, + { 0x23456768, 1, }, + }; + + ack_info_t acki; + memset(&acki, 0xF1, sizeof(acki)); + + int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki); + assert(("Parsed length is correct (9)", len == sizeof(ack_buf))); + assert(("Number of ranges is 2", acki.n_ranges == 2)); + assert(("Largest acked is 0x23456789", acki.ranges[0].high == 0x23456789)); + assert(("Number of timestamps is 0", acki.n_timestamps == 0)); + lsquic_packno_t n = n_acked(&acki); + assert(("Number of acked packets is correct", n == 0x23456768 + 1)); + + for (n = 0; n < 2; ++n) + assert(("Range checks out", ranges[n].high == acki.ranges[n].high + && ranges[n].low == acki.ranges[n].low)); + + { + size_t sz; + for (sz = 1; sz < sizeof(ack_buf); ++sz) + { + len = pf->pf_parse_ack_frame(ack_buf, sz, &acki); + assert(("Parsing truncated frame failed", len < 0)); + } + } +} + + +/* Six-byte packet numbers */ +static void +test6 (void) +{ + unsigned char ack_buf[] = { + 0x60 + | (3 << 2) /* Six-byte largest acked */ + | (3 << 0) /* Six-byte ACK block length */ + , + 0x89, 0x67, 0x45, 0x23, 0xCD, 0xAB, + 0x00, 0x00, /* Zero delta time. */ + 0x01, /* Num ack blocks ranges. */ + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, /* First ack block length. */ + 33 - 1, /* Gap to next block. */ + 0x68, 0x67, 0x45, 0x23, 0xCD, 0xAB, /* Ack block length. */ + 0x00, /* Number of timestamps. */ + }; + + static const struct { lsquic_packno_t high, low; } ranges[] = { + { 0xABCD23456789, 0xABCD23456789, }, + { 0xABCD23456768, 1, }, + }; + + ack_info_t acki; + memset(&acki, 0xF1, sizeof(acki)); + + int len = pf->pf_parse_ack_frame(ack_buf, sizeof(ack_buf), &acki); + assert(("Parsed length is correct", len == sizeof(ack_buf))); + assert(("Number of ranges is 2", acki.n_ranges == 2)); + assert(("Largest acked is 0xABCD23456789", acki.ranges[0].high == 0xABCD23456789)); + assert(("Number of timestamps is 0", acki.n_timestamps == 0)); + lsquic_packno_t n = n_acked(&acki); + assert(("Number of acked packets is correct", n == 0xABCD23456768 + 1)); + + for (n = 0; n < 2; ++n) + assert(("Range checks out", ranges[n].high == acki.ranges[n].high + && ranges[n].low == acki.ranges[n].low)); + + { + size_t sz; + for (sz = 1; sz < sizeof(ack_buf); ++sz) + { + len = pf->pf_parse_ack_frame(ack_buf, sz, &acki); + assert(("Parsing truncated frame failed", len < 0)); + } + } +} + + +static void +test_max_ack (void) +{ + lsquic_rechist_t rechist; + lsquic_time_t now; + unsigned i; + int has_missing, sz[2]; + const struct lsquic_packno_range *range; + unsigned char buf[1500]; + struct ack_info acki; + + lsquic_rechist_init(&rechist, 12345); + now = lsquic_time_now(); + + for (i = 1; i <= 300; ++i) + { + lsquic_rechist_received(&rechist, i * 10, now); + now += i * 1000; + } + + memset(buf, 0xAA, sizeof(buf)); + + lsquic_packno_t largest = 0; + sz[0] = pf->pf_gen_ack_frame(buf, sizeof(buf), + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now, &has_missing, &largest); + assert(sz[0] > 0); + assert(sz[0] <= (int) sizeof(buf)); + assert(has_missing); + + assert(0 == buf[ sz[0] - 1 ]); /* Number of timestamps */ + assert(0xAA == buf[ sz[0] ]); + + sz[1] = pf->pf_parse_ack_frame(buf, sizeof(buf), &acki); + assert(sz[1] == sz[0]); + assert(256 == acki.n_ranges); + + for (range = lsquic_rechist_first(&rechist), i = 0; + range && i < acki.n_ranges; + range = lsquic_rechist_next(&rechist), ++i) + { + assert(range->high == acki.ranges[i].high); + assert(range->low == acki.ranges[i].low); + } + assert(i == 256); + + lsquic_rechist_cleanup(&rechist); +} + + +static void +test_ack_truncation (void) +{ + lsquic_rechist_t rechist; + lsquic_time_t now; + unsigned i; + int has_missing, sz[2]; + const struct lsquic_packno_range *range; + unsigned char buf[1500]; + struct ack_info acki; + size_t bufsz; + + lsquic_rechist_init(&rechist, 12345); + now = lsquic_time_now(); + + for (i = 1; i <= 300; ++i) + { + lsquic_rechist_received(&rechist, i * 10, now); + now += i * 1000; + } + + for (bufsz = 200; bufsz < 210; ++bufsz) + { + memset(buf, 0xAA, sizeof(buf)); + lsquic_packno_t largest = 0; + sz[0] = pf->pf_gen_ack_frame(buf, bufsz, + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now, &has_missing, &largest); + assert(sz[0] > 0); + assert(sz[0] <= (int) bufsz); + assert(has_missing); + + assert(0 == buf[ sz[0] - 1 ]); /* Number of timestamps */ + assert(0xAA == buf[ sz[0] ]); + + sz[1] = pf->pf_parse_ack_frame(buf, sizeof(buf), &acki); + assert(sz[1] == sz[0]); + assert(acki.n_ranges < 256); + + for (range = lsquic_rechist_first(&rechist), i = 0; + range && i < acki.n_ranges; + range = lsquic_rechist_next(&rechist), ++i) + { + assert(range->high == acki.ranges[i].high); + assert(range->low == acki.ranges[i].low); + } + } + + lsquic_rechist_cleanup(&rechist); +} + + +int +main (void) +{ + lsquic_global_init(LSQUIC_GLOBAL_SERVER); + test1(); + test2(); + test3(); + test4(); + test5(); + test6(); + test_max_ack(); + test_ack_truncation(); + return 0; +} diff --git a/external/lsquic/tests/test_ackparse_ietf.c b/external/lsquic/tests/test_ackparse_ietf.c new file mode 100644 index 0000000..8738ad0 --- /dev/null +++ b/external/lsquic/tests/test_ackparse_ietf.c @@ -0,0 +1,140 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include "vc_compat.h" +#endif + +#include "lsquic_types.h" +#include "lsquic_parse.h" +#include "lsquic_rechist.h" +#include "lsquic_util.h" +#include "lsquic.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" + +static struct lsquic_conn lconn = LSCONN_INITIALIZER_CIDLEN(lconn, 0); + +//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_I001); // will not work on MSVC +#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_I001)) + + +static void +test_max_ack (void) +{ + lsquic_rechist_t rechist; + lsquic_time_t now; + unsigned i; + int has_missing, sz[2]; + const struct lsquic_packno_range *range; + unsigned char buf[1500]; + struct ack_info acki; + + lsquic_rechist_init(&rechist, 0, 0); + now = lsquic_time_now(); + + for (i = 1; i <= 300; ++i) + { + lsquic_rechist_received(&rechist, i * 10, now); + now += i * 1000; + } + + memset(buf, 0xAA, sizeof(buf)); + + lsquic_packno_t largest = 0; + sz[0] = pf->pf_gen_ack_frame(buf, sizeof(buf), + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now, &has_missing, &largest, NULL); + assert(sz[0] > 0); + assert(sz[0] <= (int) sizeof(buf)); + assert(has_missing); + + assert(0 == buf[ sz[0] - 1 ]); /* Number of timestamps */ + assert(0xAA == buf[ sz[0] ]); + + sz[1] = pf->pf_parse_ack_frame(buf, sizeof(buf), &acki, 0); + assert(sz[1] == sz[0]); + assert(256 == acki.n_ranges); + + for (range = lsquic_rechist_first(&rechist), i = 0; + range && i < acki.n_ranges; + range = lsquic_rechist_next(&rechist), ++i) + { + assert(range->high == acki.ranges[i].high); + assert(range->low == acki.ranges[i].low); + } + assert(i == 256); + + lsquic_rechist_cleanup(&rechist); +} + + +static void +test_ack_truncation (void) +{ + lsquic_rechist_t rechist; + lsquic_time_t now; + unsigned i; + int has_missing, sz[2]; + const struct lsquic_packno_range *range; + unsigned char buf[1500]; + struct ack_info acki; + size_t bufsz; + + lsquic_rechist_init(&rechist, 0, 0); + now = lsquic_time_now(); + + for (i = 1; i <= 300; ++i) + { + lsquic_rechist_received(&rechist, i * 10, now); + now += i * 1000; + } + + for (bufsz = 200; bufsz < 210; ++bufsz) + { + memset(buf, 0xAA, sizeof(buf)); + lsquic_packno_t largest = 0; + sz[0] = pf->pf_gen_ack_frame(buf, bufsz, + (gaf_rechist_first_f) lsquic_rechist_first, + (gaf_rechist_next_f) lsquic_rechist_next, + (gaf_rechist_largest_recv_f) lsquic_rechist_largest_recv, + &rechist, now, &has_missing, &largest, NULL); + assert(sz[0] > 0); + assert(sz[0] <= (int) bufsz); + assert(has_missing); + + assert(0 == buf[ sz[0] - 1 ]); /* Number of timestamps */ + assert(0xAA == buf[ sz[0] ]); + + sz[1] = pf->pf_parse_ack_frame(buf, sizeof(buf), &acki, 0); + assert(sz[1] == sz[0]); + assert(acki.n_ranges < 256); + + for (range = lsquic_rechist_first(&rechist), i = 0; + range && i < acki.n_ranges; + range = lsquic_rechist_next(&rechist), ++i) + { + assert(range->high == acki.ranges[i].high); + assert(range->low == acki.ranges[i].low); + } + } + + lsquic_rechist_cleanup(&rechist); +} + + +int +main (void) +{ + lsquic_global_init(LSQUIC_GLOBAL_SERVER); + test_max_ack(); + test_ack_truncation(); + return 0; +} diff --git a/external/lsquic/tests/test_alarmset.c b/external/lsquic/tests/test_alarmset.c new file mode 100644 index 0000000..faf7f6e --- /dev/null +++ b/external/lsquic/tests/test_alarmset.c @@ -0,0 +1,130 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include + +#include "lsquic.h" + +#include "lsquic_packet_common.h" +#include "lsquic_alarmset.h" + + +static lsquic_time_t global_now; + +static struct cb_ctx { + lsquic_time_t last_expiry; + unsigned n_calls; +} global_ctx; + + +static void +alarm_cb (enum alarm_id al_id, void *ctx, lsquic_time_t expiry, + lsquic_time_t now) +{ + struct cb_ctx *cb_ctx = ctx; + assert(cb_ctx == &global_ctx); + assert(cb_ctx->last_expiry <= expiry); /* This checks sortedness */ + assert(global_now == now); + ++cb_ctx->n_calls; + cb_ctx->last_expiry = expiry; +} + + +#if __GNUC__ +# define popcount __builtin_popcount +#else +static int +popcount (unsigned v) +{ + int count, i; + for (i = 0, count = 0; i < sizeof(v) * 8; ++i) + if (v & (1 << i)) + ++count; + return count; +} +#endif + + +int +main (void) +{ + unsigned i; + lsquic_alarmset_t alset; + + lsquic_alarmset_init(&alset, 0); + + for (i = 0; i < MAX_LSQUIC_ALARMS; ++i) + lsquic_alarmset_init_alarm(&alset, i, alarm_cb, &global_ctx); + + lsquic_alarmset_set(&alset, 0, 20); + lsquic_alarmset_set(&alset, 1, 5); + lsquic_alarmset_set(&alset, 2, 11); + lsquic_alarmset_set(&alset, 3, 15); + + assert(lsquic_alarmset_is_set(&alset, 3)); + lsquic_alarmset_unset(&alset, 3); + assert(!lsquic_alarmset_is_set(&alset, 3)); + lsquic_alarmset_set(&alset, 3, 15); + + global_ctx.last_expiry = 0; + global_ctx.n_calls = 0; + + lsquic_alarmset_ring_expired(&alset, global_now = 1); + + assert(0 == global_ctx.n_calls); + + assert(lsquic_alarmset_is_set(&alset, 1)); + lsquic_alarmset_ring_expired(&alset, global_now = 10); + assert(!lsquic_alarmset_is_set(&alset, 1)); + + assert(1 == global_ctx.n_calls); + assert(5 == global_ctx.last_expiry); + + lsquic_alarmset_ring_expired(&alset, global_now = 12); + + assert(2 == global_ctx.n_calls); + assert(11 == global_ctx.last_expiry); + + lsquic_alarmset_ring_expired(&alset, global_now = 20); + + /* expiry must be strictly smaller than current time */ + assert(3 == global_ctx.n_calls); + assert(15 == global_ctx.last_expiry); + + lsquic_alarmset_ring_expired(&alset, global_now = 21); + + assert(4 == global_ctx.n_calls); + assert(20 == global_ctx.last_expiry); + + unsigned t = 1; + for (i = 1; i < (1u << MAX_LSQUIC_ALARMS); ++i) + { + alset.as_armed_set = 0; /* Unset all */ + unsigned const count = popcount(i); + unsigned const min_n = i % count; + unsigned const min_t = t++; + unsigned j, n; + enum alarm_id ids[2]; + for (j = 0, n = 0; j < MAX_LSQUIC_ALARMS; ++j) + { + if ((1u << j) & i) + { + if (n == min_n) + { + ids[0] = j; + lsquic_alarmset_set(&alset, j, min_t); + } + else + lsquic_alarmset_set(&alset, j, t++); + ++n; + } + } + lsquic_time_t found_min_t = lsquic_alarmset_mintime(&alset, &ids[1]); + assert(min_t == found_min_t); + assert(ids[0] == ids[1]); + } + + return 0; +} diff --git a/external/lsquic/tests/test_alt_svc_ver.c b/external/lsquic/tests/test_alt_svc_ver.c new file mode 100644 index 0000000..e3c5184 --- /dev/null +++ b/external/lsquic/tests/test_alt_svc_ver.c @@ -0,0 +1,18 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include + +#include "lsquic.h" + +#define B(x) (1<<(x)) + +int +main (void) +{ + assert(0 == strcmp("", lsquic_get_alt_svc_versions(0xF000))); /* Invalid bits ignored and no crash */ + assert(0 == strcmp("43", lsquic_get_alt_svc_versions(B(LSQVER_043)))); + assert(0 == strcmp("43,46", lsquic_get_alt_svc_versions(B(LSQVER_046)|B(LSQVER_043)))); + assert(0 == strcmp("43,46", lsquic_get_alt_svc_versions(0xFF0000|B(LSQVER_046)|B(LSQVER_043)))); + assert(0 == strcmp("46", lsquic_get_alt_svc_versions(B(LSQVER_046)|B(LSQVER_050)))); + return 0; +} diff --git a/external/lsquic/tests/test_arr.c b/external/lsquic/tests/test_arr.c new file mode 100644 index 0000000..0a4e366 --- /dev/null +++ b/external/lsquic/tests/test_arr.c @@ -0,0 +1,223 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include + +#include "lsquic_arr.h" + +static void +test1 (void) +{ + struct lsquic_arr arr; + lsquic_arr_init(&arr); + lsquic_arr_push(&arr, 0x21ecba0); + lsquic_arr_push(&arr, 0x21eccb0); + lsquic_arr_push(&arr, 0x21ecdb0); + lsquic_arr_push(&arr, 0x21ece90); + lsquic_arr_push(&arr, 0x21ecf70); + lsquic_arr_push(&arr, 0x21ed0e0); + lsquic_arr_push(&arr, 0x21ed1e0); + lsquic_arr_push(&arr, 0x21ed2c0); + lsquic_arr_push(&arr, 0x21ed3a0); + lsquic_arr_push(&arr, 0x21ed510); + lsquic_arr_push(&arr, 0x21ed5d0); + lsquic_arr_push(&arr, 0x21ed6b0); + lsquic_arr_push(&arr, 0x21ed7b0); + lsquic_arr_push(&arr, 0x21ed890); + lsquic_arr_push(&arr, 0x21ed970); + lsquic_arr_push(&arr, 0x21eda50); + lsquic_arr_push(&arr, 0x21ec450); + lsquic_arr_push(&arr, 0x21ec510); + lsquic_arr_push(&arr, 0x21ee210); + lsquic_arr_push(&arr, 0x21ee310); + lsquic_arr_push(&arr, 0x21ee3f0); + lsquic_arr_push(&arr, 0x21ee4e0); + lsquic_arr_push(&arr, 0x21ee5f0); + lsquic_arr_push(&arr, 0x21ee6d0); + lsquic_arr_push(&arr, 0x21edb50); + lsquic_arr_push(&arr, 0x21edb90); + lsquic_arr_push(&arr, 0x21eea20); + lsquic_arr_push(&arr, 0x21eeb00); + lsquic_arr_push(&arr, 0x21ec790); + lsquic_arr_push(&arr, 0x21ec870); + lsquic_arr_push(&arr, 0x21ec990); + lsquic_arr_push(&arr, 0x21eca70); + lsquic_arr_push(&arr, 0x21ecb50); + lsquic_arr_push(&arr, 0x21ee820); + lsquic_arr_push(&arr, 0x21ee860); + lsquic_arr_push(&arr, 0x21ef830); + lsquic_arr_push(&arr, 0x21ef930); + lsquic_arr_push(&arr, 0x21efa30); + lsquic_arr_push(&arr, 0x21efb40); + lsquic_arr_push(&arr, 0x21efc20); + lsquic_arr_push(&arr, 0x21ef470); + lsquic_arr_push(&arr, 0x21ef530); + lsquic_arr_push(&arr, 0x21eff40); + lsquic_arr_push(&arr, 0x21f0020); + lsquic_arr_push(&arr, 0x21f0100); + lsquic_arr_push(&arr, 0x21f0200); + lsquic_arr_push(&arr, 0x21f02c0); + lsquic_arr_push(&arr, 0x21f03d0); + lsquic_arr_push(&arr, 0x21efd20); + lsquic_arr_push(&arr, 0x21efe00); + lsquic_arr_push(&arr, 0x21edc30); + lsquic_arr_push(&arr, 0x21edd10); + lsquic_arr_push(&arr, 0x21eddf0); + lsquic_arr_push(&arr, 0x21edf00); + lsquic_arr_push(&arr, 0x21ee000); + assert(0x21ecba0 == lsquic_arr_shift(&arr)); + assert(0x21eccb0 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21eccb0); + assert(0x21ecdb0 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ecdb0); + assert(0x21ece90 == lsquic_arr_shift(&arr)); + assert(0x21ecf70 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ecf70); + lsquic_arr_push(&arr, 0x21ece90); + assert(0x21ed0e0 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ed0e0); + assert(0x21ed1e0 == lsquic_arr_shift(&arr)); + assert(0x21ed2c0 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ed2c0); + assert(0x21ed3a0 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ed3a0); + assert(0x21ed510 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ed510); + assert(0x21ed5d0 == lsquic_arr_shift(&arr)); + assert(0x21ed6b0 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ed6b0); + lsquic_arr_push(&arr, 0x21ed5f0); + assert(0x21ed7b0 == lsquic_arr_shift(&arr)); + assert(0x21ed890 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ed890); + assert(0x21ed970 == lsquic_arr_shift(&arr)); + assert(0x21eda50 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21eda50); + lsquic_arr_push(&arr, 0x21ed990); + assert(0x21ec450 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ec450); + assert(0x21ec510 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ec510); + assert(0x21ee210 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ee210); + assert(0x21ee310 == lsquic_arr_shift(&arr)); + assert(0x21ee3f0 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ee3f0); + assert(0x21ee4e0 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ee4e0); + lsquic_arr_push(&arr, 0x21ee330); + assert(0x21ee5f0 == lsquic_arr_shift(&arr)); + assert(0x21ee6d0 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ee6d0); + assert(0x21edb50 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21edb50); + assert(0x21edb90 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21edb90); + assert(0x21eea20 == lsquic_arr_shift(&arr)); + assert(0x21eeb00 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21eeb00); + assert(0x21ec790 == lsquic_arr_shift(&arr)); + assert(0x21ec870 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ec870); + assert(0x21ec990 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ec990); + assert(0x21eca70 == lsquic_arr_shift(&arr)); + assert(0x21ecb50 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ecb50); + assert(0x21ee820 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ee820); + assert(0x21ee860 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ee860); + assert(0x21ef830 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ef830); + assert(0x21ef930 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ef930); + assert(0x21efa30 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21efa30); + lsquic_arr_push(&arr, 0x21eca90); + assert(0x21efb40 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21efb40); + assert(0x21efc20 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21efc20); + assert(0x21ef470 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ef470); + lsquic_arr_push(&arr, 0x21ec7d0); + assert(0x21ef530 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21ef530); + assert(0x21eff40 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21eff40); + assert(0x21f0020 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21f0020); + assert(0x21f0100 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21f0100); + assert(0x21f0200 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21f0200); + assert(0x21f02c0 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21f02c0); + assert(0x21f03d0 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21f03d0); + assert(0x21efd20 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21efd20); + assert(0x21efe00 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21efe00); + assert(0x21edc30 == lsquic_arr_shift(&arr)); + lsquic_arr_push(&arr, 0x21edc30); + assert(0x21edd10 == lsquic_arr_shift(&arr)); + assert(0x21eddf0 == lsquic_arr_shift(&arr)); + lsquic_arr_cleanup(&arr); +} + + +int +main (void) +{ + struct lsquic_arr arr; + uintptr_t val; + + lsquic_arr_init(&arr); + + lsquic_arr_push(&arr, 1); + lsquic_arr_push(&arr, 2); + lsquic_arr_push(&arr, 3); + lsquic_arr_push(&arr, 4); + + assert(4 == lsquic_arr_count(&arr)); + + val = lsquic_arr_get(&arr, 0); + assert(1 == val); + val = lsquic_arr_get(&arr, 3); + assert(4 == val); + + val = lsquic_arr_shift(&arr); + + assert(1 == val); + assert(3 == lsquic_arr_count(&arr)); + + val = lsquic_arr_shift(&arr); + assert(2 == val); + val = lsquic_arr_shift(&arr); + assert(3 == val); + assert(1 == lsquic_arr_count(&arr)); + val = lsquic_arr_get(&arr, 0); + assert(4 == val); + + lsquic_arr_push(&arr, 5); + val = lsquic_arr_get(&arr, 0); + assert(4 == val); + assert(2 == lsquic_arr_count(&arr)); + + lsquic_arr_push(&arr, 6); + lsquic_arr_push(&arr, 7); + lsquic_arr_push(&arr, 8); + assert(5 == lsquic_arr_count(&arr)); + assert(4 == lsquic_arr_shift(&arr)); + assert(5 == lsquic_arr_shift(&arr)); + assert(6 == lsquic_arr_shift(&arr)); + assert(7 == lsquic_arr_shift(&arr)); + assert(8 == lsquic_arr_shift(&arr)); + assert(0 == lsquic_arr_count(&arr)); + + lsquic_arr_cleanup(&arr); + + test1(); + + return 0; +} diff --git a/external/lsquic/tests/test_attq.c b/external/lsquic/tests/test_attq.c new file mode 100644 index 0000000..8901972 --- /dev/null +++ b/external/lsquic/tests/test_attq.c @@ -0,0 +1,231 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_attq.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" + + +static char curiosity[] = + "Dogs say cats love too much, are irresponsible," + "are changeable, marry too many wives," + "desert their children, chill all dinner tables" + "with tales of their nine lives." + "Well, they are lucky. Let them be" + "nine-lived and contradictory," + "curious enough to change, prepared to pay" + "the cat price, which is to die" + "and die again and again," + "each time with no less pain." + "A cat minority of one" + "is all that can be counted on" + "to tell the truth. And what cats have to tell" + "on each return from hell" + "is this: that dying is what the living do," + "that dying is what the loving do," + "and that dead dogs are those who do not know" + "that dying is what, to live, each has to do." + ; + + +static int +cmp_chars_asc (const void *ap, const void *bp) +{ + char a = * (char *) ap; + char b = * (char *) bp; + return (a > b) - (b > a); +} + + +static int +cmp_chars_desc (const void *ap, const void *bp) +{ + char a = * (char *) ap; + char b = * (char *) bp; + return (a < b) - (b < a); +} + + +enum sort_action { SORT_NONE, SORT_ASC, SORT_DESC, }; + +static void +test_attq_ordering (enum sort_action sa) +{ + struct attq *q; + struct lsquic_conn *conns, *conn; + const struct attq_elem *next_attq; + lsquic_time_t prev; + lsquic_time_t t; + unsigned i; + int s; + + switch (sa) + { + case SORT_NONE: + break; + case SORT_ASC: + qsort(curiosity, sizeof(curiosity) * + sizeof(curiosity[0]), sizeof(curiosity[0]), cmp_chars_asc); + break; + case SORT_DESC: + qsort(curiosity, sizeof(curiosity) * + sizeof(curiosity[0]), sizeof(curiosity[0]), cmp_chars_desc); + break; + } + + q = lsquic_attq_create(); + + for (i = 0; i < sizeof(curiosity); ++i) + { + unsigned count_before = lsquic_attq_count_before(q, curiosity[i]); + assert(count_before == 0); + } + + conns = calloc(sizeof(curiosity), sizeof(conns[0])); + for (i = 0; i < sizeof(curiosity); ++i) + { + s = lsquic_attq_add(q, &conns[i], (lsquic_time_t) curiosity[i], 0); + assert(s == 0); + } + + for (i = 0; i < sizeof(curiosity); ++i) + assert(conns[i].cn_attq_elem); + + if (sa == SORT_ASC) + { + unsigned counts[ sizeof(curiosity) ]; + unsigned count_before; + counts[0] = 0; + for (i = 1; i < sizeof(curiosity); ++i) + { + if (curiosity[i - 1] == curiosity[i]) + counts[i] = counts[i - 1]; + else + counts[i] = i; + } + for (i = 1; i < sizeof(curiosity); ++i) + { + count_before = lsquic_attq_count_before(q, curiosity[i]); + assert(count_before == counts[i]); + } + } + +#ifdef _MSC_VER + prev = 0; +#endif + for (i = 0; i < sizeof(curiosity); ++i) + { + next_attq = lsquic_attq_next(q); + assert(next_attq); + t = next_attq->ae_adv_time; + if (i > 0) + assert(t >= prev); + prev = t; + conn = lsquic_attq_pop(q, ~0ULL); + assert(conn); + } + + next_attq = lsquic_attq_next(q); + assert(!next_attq); + conn = lsquic_attq_pop(q, ~0ULL); + assert(!conn); + + free(conns); + lsquic_attq_destroy(q); +} + + +/* Filter up */ +static void +test_attq_removal_1 (void) +{ + struct attq *q; + struct lsquic_conn *conns; + + q = lsquic_attq_create(); + conns = calloc(6, sizeof(conns[0])); + + lsquic_attq_add(q, &conns[0], 1, 0); + lsquic_attq_add(q, &conns[1], 4, 0); + lsquic_attq_add(q, &conns[2], 2, 0); + lsquic_attq_add(q, &conns[3], 5, 0); + lsquic_attq_add(q, &conns[4], 6, 0); + lsquic_attq_add(q, &conns[5], 3, 0); + + lsquic_attq_remove(q, &conns[3]); + + free(conns); + lsquic_attq_destroy(q); +} + + +/* Filter down */ +static void +test_attq_removal_2 (void) +{ + struct attq *q; + struct lsquic_conn *conns; + + q = lsquic_attq_create(); + conns = calloc(9, sizeof(conns[0])); + + lsquic_attq_add(q, &conns[0], 1, 0); + lsquic_attq_add(q, &conns[1], 5, 0); + lsquic_attq_add(q, &conns[2], 6, 0); + lsquic_attq_add(q, &conns[3], 9, 0); + lsquic_attq_add(q, &conns[4], 11, 0); + lsquic_attq_add(q, &conns[5], 8, 0); + lsquic_attq_add(q, &conns[6], 15, 0); + lsquic_attq_add(q, &conns[7], 17, 0); + lsquic_attq_add(q, &conns[8], 21, 0); + + lsquic_attq_remove(q, &conns[1]); + + free(conns); + lsquic_attq_destroy(q); +} + + +/* Filter up */ +static void +test_attq_removal_3 (void) +{ + struct attq *q; + struct lsquic_conn *conns; + + q = lsquic_attq_create(); + conns = calloc(9, sizeof(conns[0])); + + lsquic_attq_add(q, &conns[0], 1, 0); + lsquic_attq_add(q, &conns[1], 9, 0); + lsquic_attq_add(q, &conns[2], 22, 0); + lsquic_attq_add(q, &conns[3], 17, 0); + lsquic_attq_add(q, &conns[4], 11, 0); + lsquic_attq_add(q, &conns[5], 33, 0); + lsquic_attq_add(q, &conns[6], 27, 0); + lsquic_attq_add(q, &conns[7], 21, 0); + lsquic_attq_add(q, &conns[8], 19, 0); + + lsquic_attq_remove(q, &conns[1]); + + free(conns); + lsquic_attq_destroy(q); +} + + +int +main (void) +{ + test_attq_ordering(SORT_NONE); + test_attq_ordering(SORT_ASC); + test_attq_ordering(SORT_DESC); + test_attq_removal_1(); + test_attq_removal_2(); + test_attq_removal_3(); + return 0; +} diff --git a/external/lsquic/tests/test_blocked_gquic_be.c b/external/lsquic/tests/test_blocked_gquic_be.c new file mode 100644 index 0000000..2ab947c --- /dev/null +++ b/external/lsquic/tests/test_blocked_gquic_be.c @@ -0,0 +1,70 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_parse.h" + +//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC +#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) + + +/* The test is both for generation and parsing: */ +struct wuf_test { + unsigned char buf[0x10]; + size_t buf_len; + lsquic_stream_id_t stream_id; +}; + +static const struct wuf_test wuf_tests[] = { + { + .buf = { 0x05, 0x00, 0x67, 0x45, 0x34, }, + .buf_len = GQUIC_BLOCKED_FRAME_SZ, + .stream_id = 0x674534, + }, + + { .buf = { 0 }, } +}; + + +static void +run_parse_tests (void) +{ + const struct wuf_test *test; + for (test = wuf_tests; test->buf[0]; ++test) + { + lsquic_stream_id_t stream_id = ~0; + int sz = pf->pf_parse_blocked_frame(test->buf, test->buf_len, &stream_id); + assert(sz == GQUIC_BLOCKED_FRAME_SZ); + assert(stream_id == test->stream_id); + } +} + + +static void +run_gen_tests (void) +{ + const struct wuf_test *test; + for (test = wuf_tests; test->buf[0]; ++test) + { + unsigned char buf[0x100]; + int sz = pf->pf_gen_blocked_frame(buf, test->buf_len, test->stream_id); + assert(sz == GQUIC_BLOCKED_FRAME_SZ); + assert(0 == memcmp(buf, test->buf, sz)); + } +} + + +int +main (void) +{ + run_parse_tests(); + run_gen_tests(); + return 0; +} diff --git a/external/lsquic/tests/test_blocked_gquic_le.c b/external/lsquic/tests/test_blocked_gquic_le.c new file mode 100644 index 0000000..1715c87 --- /dev/null +++ b/external/lsquic/tests/test_blocked_gquic_le.c @@ -0,0 +1,70 @@ +/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_alarmset.h" +#include "lsquic_parse.h" + +static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); + + +/* The test is both for generation and parsing: */ +struct wuf_test { + unsigned char buf[0x10]; + size_t buf_len; + uint32_t stream_id; +}; + +static const struct wuf_test wuf_tests[] = { + { + .buf = { 0x05, 0x34, 0x45, 0x67, 0x00, }, + .buf_len = QUIC_BLOCKED_FRAME_SZ, + .stream_id = 0x674534, + }, + + { .buf = { 0 }, } +}; + + +static void +run_parse_tests (void) +{ + const struct wuf_test *test; + for (test = wuf_tests; test->buf[0]; ++test) + { + uint32_t stream_id = ~0; + int sz = pf->pf_parse_blocked_frame(test->buf, test->buf_len, &stream_id); + assert(sz == QUIC_BLOCKED_FRAME_SZ); + assert(stream_id == test->stream_id); + } +} + + +static void +run_gen_tests (void) +{ + const struct wuf_test *test; + for (test = wuf_tests; test->buf[0]; ++test) + { + unsigned char buf[0x100]; + int sz = pf->pf_gen_blocked_frame(buf, test->buf_len, test->stream_id); + assert(sz == QUIC_BLOCKED_FRAME_SZ); + assert(0 == memcmp(buf, test->buf, sz)); + } +} + + +int +main (void) +{ + run_parse_tests(); + run_gen_tests(); + return 0; +} diff --git a/external/lsquic/tests/test_bw_sampler.c b/external/lsquic/tests/test_bw_sampler.c new file mode 100644 index 0000000..07796e2 --- /dev/null +++ b/external/lsquic/tests/test_bw_sampler.c @@ -0,0 +1,644 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* Test adapted from Chromium bandwidth_sampler_test.cc */ +// Copyright 2016 The Chromium Authors. All rights reserved. + +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_hash.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_out.h" +#include "lsquic_bw_sampler.h" +#include "lsquic_conn.h" +#include "lsquic_malo.h" + + +/* Convert seconds to microseconds */ +#define sec(val) ((val) * 1000 * 1000) + +/* Convert milliseconds to lsquic_time_t, which is microseconds */ +#define ms(val) ((val) * 1000) + +/* Microseconds */ +#define us(val) (val) + +#define kRegularPacketSize 1280 + +#define PacketsToBytes(count_) ((count_) * kRegularPacketSize) + +#define FromKBytesPerSecond(size_) (size_ * 8000) + +// Enforce divisibility for some of the tests: +// "kRegularPacketSize has to be five times divisible by 2" +typedef char packet_size_has_to_be_five_times_divisible_by_2[ + (kRegularPacketSize & 31) == 0 ? 1 : -1]; + +struct sampler_test +{ + struct bw_sampler sampler; + lsquic_time_t time; + uint64_t bytes_in_flight; + struct lsquic_conn conn; + struct malo *malo_po; +}; + + +static void +sampler_test_init (struct sampler_test *stest) +{ + memset(stest, 0, sizeof(*stest)); + stest->time = ms(1000); /* Time must not be zero, or test breaks */ + LSCONN_INITIALIZE(&stest->conn); + lsquic_bw_sampler_init(&stest->sampler, &stest->conn, QUIC_FTBIT_STREAM); + stest->malo_po = lsquic_malo_create(sizeof(struct lsquic_packet_out)); + assert(stest->malo_po); +} + + +static void +sampler_test_cleanup (struct sampler_test *stest) +{ + lsquic_bw_sampler_cleanup(&stest->sampler); + lsquic_malo_destroy(stest->malo_po); +} + + +static struct lsquic_packet_out * +sampler_test_send_packet (struct sampler_test *stest, lsquic_packno_t packno, + bool retx) +{ + struct lsquic_packet_out *packet_out; + + packet_out = lsquic_malo_get(stest->malo_po); + assert(packet_out); + memset(packet_out, 0, sizeof(*packet_out)); + packet_out->po_packno = packno; + packet_out->po_flags |= PO_SENT_SZ; + packet_out->po_flags |= PO_HELLO; /* Bypass sanity check */ + packet_out->po_sent_sz = kRegularPacketSize; + packet_out->po_sent = stest->time; + if (retx) + packet_out->po_frame_types |= QUIC_FTBIT_STREAM; + lsquic_bw_sampler_packet_sent(&stest->sampler, packet_out, + stest->bytes_in_flight); + if (retx) + stest->bytes_in_flight += packet_out->po_sent_sz; + return packet_out; +} + + +static struct bw_sample * +sampler_test_ack_packet (struct sampler_test *stest, + struct lsquic_packet_out *packet_out) +{ + if (packet_out->po_frame_types & QUIC_FTBIT_STREAM) + stest->bytes_in_flight -= packet_out->po_sent_sz; + return lsquic_bw_sampler_packet_acked(&stest->sampler, packet_out, + stest->time); +} + + +static void +sampler_test_lose_packet (struct sampler_test *stest, + struct lsquic_packet_out *packet_out) +{ + if (packet_out->po_frame_types & QUIC_FTBIT_STREAM) + stest->bytes_in_flight -= packet_out->po_sent_sz; + lsquic_bw_sampler_packet_lost(&stest->sampler, packet_out); +} + + +static void +sampler_test_send_40_packets_and_ack_first_20 (struct sampler_test *stest, + lsquic_time_t time_between_packets, struct lsquic_packet_out *packets[]) +{ + struct bw_sample *sample; + unsigned i; + + // Send 20 packets at a constant inter-packet time. + for (i = 1; i <= 20; i++) + { + packets[i] = sampler_test_send_packet(stest, i, true); + stest->time += time_between_packets; + } + + // Ack packets 1 to 20, while sending new packets at the same rate as + // before. + for (i = 1; i <= 20; i++) + { + sample = sampler_test_ack_packet(stest, packets[i]); + assert(sample); + lsquic_malo_put(sample); + packets[i + 20] = sampler_test_send_packet(stest, i + 20, true); + stest->time += time_between_packets; + } +} + + +// Test the sampler in a simple stop-and-wait sender setting. +static void +test_send_and_wait (void) +{ + struct sampler_test stest; + lsquic_time_t time_between_packets = ms(10); + uint64_t expected_bandwidth = kRegularPacketSize * 100 * 8; + unsigned i; + struct bw_sample *sample; + struct lsquic_packet_out *packet; + + sampler_test_init(&stest); + + // Send packets at the constant bandwidth. + for (i = 1; i < 20; ++i) + { + packet = sampler_test_send_packet(&stest, i, true); + stest.time += time_between_packets; + sample = sampler_test_ack_packet(&stest, packet); + assert(sample); + assert(expected_bandwidth == BW_VALUE(&sample->bandwidth)); + lsquic_malo_put(sample); + } + + // Send packets at the exponentially decreasing bandwidth. + for (i = 20; i < 25; i++) + { + time_between_packets = time_between_packets * 2; + expected_bandwidth = expected_bandwidth / 2; + packet = sampler_test_send_packet(&stest, i, true); + stest.time += time_between_packets; + sample = sampler_test_ack_packet(&stest, packet); + assert(sample); + assert(expected_bandwidth == BW_VALUE(&sample->bandwidth)); + lsquic_malo_put(sample); + } + + assert(lsquic_bw_sampler_entry_count(&stest.sampler) == 0); + assert(stest.bytes_in_flight == 0); + + sampler_test_cleanup(&stest); +} + + +static void +test_send_time_state (void) +{ + struct sampler_test stest; + lsquic_time_t time_between_packets = ms(10); + struct bw_sample *sample; + unsigned i; + struct lsquic_packet_out *packets[11]; + + sampler_test_init(&stest); + + // Send packets 1-5. + for (i = 1; i <= 5; i++) { + packets[i] = sampler_test_send_packet(&stest, i, true); + assert(PacketsToBytes(i) == stest.sampler.bws_total_sent); + stest.time += time_between_packets; + } + + /* The order of tests here is different. Because the send state is + * deleted when packet is acked, we have to check its values first. + */ +#define SEND_STATE(idx_) (&packets[idx_]->po_bwp_state->bwps_send_state) + + // Ack packet 1. + assert(PacketsToBytes(1) == SEND_STATE(1)->total_bytes_sent); + assert(0 == SEND_STATE(1)->total_bytes_acked); + assert(0 == SEND_STATE(1)->total_bytes_lost); + sample = sampler_test_ack_packet(&stest, packets[1]); + assert(sample); + lsquic_malo_put(sample); + assert(PacketsToBytes(1) == stest.sampler.bws_total_acked); + + // Lose packet 2. + assert(PacketsToBytes(2) == SEND_STATE(2)->total_bytes_sent); + assert(0 == SEND_STATE(2)->total_bytes_acked); + assert(0 == SEND_STATE(2)->total_bytes_lost); + sampler_test_lose_packet(&stest, packets[2]); + assert(PacketsToBytes(1) == stest.sampler.bws_total_lost); + + // Lose packet 3. + assert(PacketsToBytes(3) == SEND_STATE(3)->total_bytes_sent); + assert(0 == SEND_STATE(3)->total_bytes_acked); + assert(0 == SEND_STATE(3)->total_bytes_lost); + sampler_test_lose_packet(&stest, packets[3]); + assert(PacketsToBytes(2) == stest.sampler.bws_total_lost); + + // Send packets 6-10. + for (i = 6; i <= 10; i++) + { + packets[i] = sampler_test_send_packet(&stest, i, true); + assert(PacketsToBytes(i) == stest.sampler.bws_total_sent); + stest.time += time_between_packets; + } + + // Ack all inflight packets. + unsigned acked_packet_count = 1; + assert(PacketsToBytes(acked_packet_count) == + stest.sampler.bws_total_acked); + for (i = 4; i <= 10; i++) + { + assert(PacketsToBytes(i) == SEND_STATE(i)->total_bytes_sent); + if (i <= 5) + { + assert(0 == SEND_STATE(i)->total_bytes_acked); + assert(0 == SEND_STATE(i)->total_bytes_lost); + } + else + { + assert(PacketsToBytes(1) == SEND_STATE(i)->total_bytes_acked); + assert(PacketsToBytes(2) == SEND_STATE(i)->total_bytes_lost); + } + sample = sampler_test_ack_packet(&stest, packets[i]); + assert(sample); + lsquic_malo_put(sample); + ++acked_packet_count; + assert(PacketsToBytes(acked_packet_count) == + stest.sampler.bws_total_acked); + stest.time += time_between_packets; + } + + assert(lsquic_bw_sampler_entry_count(&stest.sampler) == 0); + + sampler_test_cleanup(&stest); +} + + +// Test the sampler during regular windowed sender scenario with fixed +// CWND of 20. +static void +test_send_paced (void) +{ + struct sampler_test stest; + const lsquic_time_t time_between_packets = ms(1); + uint64_t expected_bw = FromKBytesPerSecond(kRegularPacketSize); + unsigned i; + struct bw_sample *sample; + struct lsquic_packet_out *packets[41]; + + sampler_test_init(&stest); + sampler_test_send_40_packets_and_ack_first_20(&stest, + time_between_packets, packets); + + // Ack the packets 21 to 40, arriving at the correct bandwidth. + for (i = 21; i <= 40; ++i) + { + sample = sampler_test_ack_packet(&stest, packets[i]); + assert(sample); + assert(expected_bw == BW_VALUE(&sample->bandwidth)); + stest.time += time_between_packets; + lsquic_malo_put(sample); + } + + assert(lsquic_bw_sampler_entry_count(&stest.sampler) == 0); + assert(stest.bytes_in_flight == 0); + + sampler_test_cleanup(&stest); +} + + +// Test the sampler in a scenario where 50% of packets is consistently lost. +static void +test_send_with_losses (void) +{ + struct sampler_test stest; + const lsquic_time_t time_between_packets = ms(1); + uint64_t expected_bw = FromKBytesPerSecond(kRegularPacketSize) / 2; + unsigned i; + struct bw_sample *sample; + struct lsquic_packet_out *packets[41]; + + sampler_test_init(&stest); + + // Send 20 packets, each 1 ms apart. + for (i = 1; i <= 20; i++) + { + packets[i] = sampler_test_send_packet(&stest, i, true); + stest.time += time_between_packets; + } + + // Ack packets 1 to 20, losing every even-numbered packet, while sending new + // packets at the same rate as before. + for (i = 1; i <= 20; i++) + { + if (i % 2 == 0) + { + sample = sampler_test_ack_packet(&stest, packets[i]); + assert(sample); + lsquic_malo_put(sample); + } + else + sampler_test_lose_packet(&stest, packets[i]); + packets[i + 20] = sampler_test_send_packet(&stest, i + 20, true); + stest.time += time_between_packets; + } + + // Ack the packets 21 to 40 with the same loss pattern. + for (i = 21; i <= 40; i++) + { + if (i % 2 == 0) + { + sample = sampler_test_ack_packet(&stest, packets[i]); + assert(sample); + assert(expected_bw == BW_VALUE(&sample->bandwidth)); + lsquic_malo_put(sample); + } + else + sampler_test_lose_packet(&stest, packets[i]); + stest.time += time_between_packets; + } + + assert(lsquic_bw_sampler_entry_count(&stest.sampler) == 0); + assert(stest.bytes_in_flight == 0); + + sampler_test_cleanup(&stest); +} + + +// Test the sampler in a scenario where the 50% of packets are not +// congestion controlled (specifically, non-retransmittable data is not +// congestion controlled). Should be functionally consistent in behavior with +// the SendWithLosses test. +static void +test_not_congestion_controlled (void) +{ + struct sampler_test stest; + const lsquic_time_t time_between_packets = ms(1); + uint64_t expected_bw = FromKBytesPerSecond(kRegularPacketSize) / 2; + unsigned i; + struct bw_sample *sample; + struct lsquic_packet_out *packets[41]; + + sampler_test_init(&stest); + + /* Note the mismatch between the comment and the code. This is + * inherited from the original code. + */ + // Send 20 packets, each 1 ms apart. Every even packet is not congestion + // controlled. + for (i = 1; i <= 20; i++) + { + packets[i] = sampler_test_send_packet(&stest, i, + i % 2 == 0 ? true : false); + stest.time += time_between_packets; + } + + assert(lsquic_bw_sampler_entry_count(&stest.sampler) == 10); + + // Ack packets 2 to 21, ignoring every even-numbered packet, while sending new + // packets at the same rate as before. + for (i = 1; i <= 20; i++) + { + if (i % 2 == 0) + { + sample = sampler_test_ack_packet(&stest, packets[i]); + assert(sample); + lsquic_malo_put(sample); + } + packets[i + 20] = sampler_test_send_packet(&stest, i + 20, + i % 2 == 0 ? true : false); + stest.time += time_between_packets; + } + + // Ack the packets 22 to 41 with the same congestion controlled pattern. + for (i = 21; i <= 40; i++) + { + if (i % 2 == 0) + { + sample = sampler_test_ack_packet(&stest, packets[i]); + assert(sample); + assert(expected_bw == BW_VALUE(&sample->bandwidth)); + lsquic_malo_put(sample); + } + stest.time += time_between_packets; + } + + // Since only congestion controlled packets are entered into the map, it has + // to be empty at this point. + assert(lsquic_bw_sampler_entry_count(&stest.sampler) == 0); + assert(stest.bytes_in_flight == 0); + + sampler_test_cleanup(&stest); +} + + +// Simulate a situation where ACKs arrive in burst and earlier than usual, thus +// producing an ACK rate which is higher than the original send rate. +static void +test_compressed_ack (void) +{ + struct sampler_test stest; + const lsquic_time_t time_between_packets = ms(1), + ridiculously_small_time_delta = us(20); + uint64_t expected_bw = FromKBytesPerSecond(kRegularPacketSize); + uint64_t bw; + unsigned i; + struct bw_sample *sample; + struct lsquic_packet_out *packets[41]; + + sampler_test_init(&stest); + sampler_test_send_40_packets_and_ack_first_20(&stest, + time_between_packets, packets); + + // Simulate an RTT somewhat lower than the one for 1-to-21 transmission. + stest.time += time_between_packets * 15; + + // Ack the packets 21 to 40 almost immediately at once. + for (i = 21; i <= 40; i++) + { + sample = sampler_test_ack_packet(&stest, packets[i]); + assert(sample); + stest.time += ridiculously_small_time_delta; + bw = BW_VALUE(&sample->bandwidth); + lsquic_malo_put(sample); + } + + assert(bw == expected_bw); + assert(lsquic_bw_sampler_entry_count(&stest.sampler) == 0); + assert(stest.bytes_in_flight == 0); + + sampler_test_cleanup(&stest); +} + + +// Tests receiving ACK packets in the reverse order. +static void +test_reordered_ack (void) +{ + struct sampler_test stest; + const lsquic_time_t time_between_packets = ms(1); + uint64_t expected_bw = FromKBytesPerSecond(kRegularPacketSize); + unsigned i; + struct bw_sample *sample; + struct lsquic_packet_out *packets[61]; + + sampler_test_init(&stest); + sampler_test_send_40_packets_and_ack_first_20(&stest, + time_between_packets, packets); + + // Ack the packets 21 to 40 in the reverse order, while sending packets 41 to + // 60. + for (i = 0; i < 20; i++) + { + sample = sampler_test_ack_packet(&stest, packets[40 - i]); + assert(sample); + assert(expected_bw == BW_VALUE(&sample->bandwidth)); + packets[41 + i] = sampler_test_send_packet(&stest, 41 + i, true); + stest.time += time_between_packets; + lsquic_malo_put(sample); + } + + // Ack the packets 41 to 60, now in the regular order. + for (i = 41; i <= 60; i++) + { + sample = sampler_test_ack_packet(&stest, packets[i]); + assert(sample); + assert(expected_bw == BW_VALUE(&sample->bandwidth)); + stest.time += time_between_packets; + lsquic_malo_put(sample); + } + + assert(lsquic_bw_sampler_entry_count(&stest.sampler) == 0); + assert(stest.bytes_in_flight == 0); + + sampler_test_cleanup(&stest); +} + + +// Test the app-limited logic. +static void +test_app_limited (void) +{ + struct sampler_test stest; + const lsquic_time_t time_between_packets = ms(1); + uint64_t expected_bw = FromKBytesPerSecond(kRegularPacketSize); + unsigned i; + struct bw_sample *sample; + struct lsquic_packet_out *packets[81]; + + sampler_test_init(&stest); + sampler_test_send_40_packets_and_ack_first_20(&stest, + time_between_packets, packets); + + // We are now app-limited. Ack 21 to 40 as usual, but do not send anything for + // now. + lsquic_bw_sampler_app_limited(&stest.sampler); + for (i = 21; i <= 40; i++) + { + sample = sampler_test_ack_packet(&stest, packets[i]); + assert(sample); + assert(expected_bw == BW_VALUE(&sample->bandwidth)); + stest.time += time_between_packets; + lsquic_malo_put(sample); + } + + stest.time += sec(1); + + // Send packets 41 to 60, all of which would be marked as app-limited. + for (i = 41; i <= 60; i++) + { + packets[i] = sampler_test_send_packet(&stest, i, true); + stest.time += time_between_packets; + } + + // Ack packets 41 to 60, while sending packets 61 to 80. 41 to 60 should be + // app-limited and underestimate the bandwidth due to that. + for (i = 41; i <= 60; i++) + { + sample = sampler_test_ack_packet(&stest, packets[i]); + assert(sample); + assert(sample->is_app_limited); + assert(BW_VALUE(&sample->bandwidth) < 0.7 * expected_bw); + packets[i + 20] = sampler_test_send_packet(&stest, i + 20, true); + stest.time += time_between_packets; + lsquic_malo_put(sample); + } + + // Run out of packets, and then ack packet 61 to 80, all of which should have + // correct non-app-limited samples. + for (i = 61; i <= 80; i++) + { + sample = sampler_test_ack_packet(&stest, packets[i]); + assert(sample); + assert(BW_VALUE(&sample->bandwidth) == expected_bw); + stest.time += time_between_packets; + lsquic_malo_put(sample); + } + + assert(lsquic_bw_sampler_entry_count(&stest.sampler) == 0); + assert(stest.bytes_in_flight == 0); + + sampler_test_cleanup(&stest); +} + + +// Test the samples taken at the first flight of packets sent. +static void +test_first_round_trip (void) +{ + struct sampler_test stest; + const lsquic_time_t time_between_packets = ms(1), + rtt = ms(800); + const unsigned num_packets = 10; + const uint64_t num_bytes = num_packets * kRegularPacketSize; + struct bandwidth real_bandwidth = BW_FROM_BYTES_AND_DELTA(num_bytes, rtt); + uint64_t last_bw; + unsigned i; + struct bw_sample *sample; + struct lsquic_packet_out *packets[11]; + + sampler_test_init(&stest); + + for (i = 1; i <= 10; i++) + { + packets[i] = sampler_test_send_packet(&stest, i, true); + stest.time += time_between_packets; + } + + stest.time += rtt - num_packets * time_between_packets; + + last_bw = 0; + for (i = 1; i <= 10; i++) + { + sample = sampler_test_ack_packet(&stest, packets[i]); + assert(sample); + assert(BW_VALUE(&sample->bandwidth) > last_bw); + last_bw = BW_VALUE(&sample->bandwidth); + stest.time += time_between_packets; + lsquic_malo_put(sample); + } + + // The final measured sample for the first flight of sample is expected to be + // smaller than the real bandwidth, yet it should not lose more than 10%. The + // specific value of the error depends on the difference between the RTT and + // the time it takes to exhaust the congestion window (i.e. in the limit when + // all packets are sent simultaneously, last sample would indicate the real + // bandwidth). + assert(last_bw < real_bandwidth.value); + assert(last_bw > 0.9f * real_bandwidth.value); + + sampler_test_cleanup(&stest); +} + + +int +main (void) +{ + test_send_and_wait(); + test_send_time_state(); + test_send_paced(); + test_send_with_losses(); + test_not_congestion_controlled(); + test_compressed_ack(); + test_reordered_ack(); + test_app_limited(); + test_first_round_trip(); + + return 0; +} diff --git a/external/lsquic/tests/test_chlo_gen.c b/external/lsquic/tests/test_chlo_gen.c new file mode 100644 index 0000000..b40a77c --- /dev/null +++ b/external/lsquic/tests/test_chlo_gen.c @@ -0,0 +1,72 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * test_chlo_gen.c -- Test Client Hello generation. + */ + +#include +#include +#include + +#include + +#include "lsquic.h" +#include "lsquic_hsk_cli_ietf.h" +#include "lsquic_logger.h" + + +static int +my_bwrite (BIO *bio, const char *buf, int len) +{ + return 0; +} + +static int +my_bread (BIO *bio, char *buf, int len) +{ + return 0; +} + +static const BIO_METHOD bio_method = { + .type = 0, /* XXX ? */ + .name = __FILE__, + .bwrite = my_bwrite, + .bread = my_bread, +}; + +int +main (int argc, char **argv) +{ + int opt, s; + + lsquic_log_to_fstream(stderr, LLTS_NONE); + + while (-1 != (opt = getopt(argc, argv, "l:L:"))) + { + switch (opt) + { + case 'l': + lsquic_logger_lopt(optarg); + break; + case 'L': + lsquic_set_log_level(optarg); + break; + default: + exit(EXIT_FAILURE); + } + } + + const lsquic_cid_t dcid = { .len = 10, .idbuf = "wild thing", }; + struct hsk_cli *cli = lsquic_hsk_cli_new(&dcid, &bio_method, NULL, + (unsigned char *) "some params", 11); + + assert(cli); + s = lsquic_hsk_cli_write(cli); + assert(0 == s); + + (void) + lsquic_hsk_cli_write(cli); + + lsquic_hsk_cli_destroy(cli); + + exit(EXIT_SUCCESS); +} diff --git a/external/lsquic/tests/test_clear_aead.c b/external/lsquic/tests/test_clear_aead.c new file mode 100644 index 0000000..e053837 --- /dev/null +++ b/external/lsquic/tests/test_clear_aead.c @@ -0,0 +1,120 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * See + * https://github.com/quicwg/base-drafts/wiki/Test-Vector-for-the-Clear-Text-AEAD-key-derivation + */ + +#include +#include + +#include +#include + +#include "lsquic_types.h" +#include "lsquic_hkdf.h" + +int +main (void) +{ + const EVP_MD *const md = EVP_sha256(); + + const lsquic_cid_t dcid = { + .idbuf = "\xc6\x54\xef\xd8\xa3\x1b\x47\x92", + .len = 8, + }; + unsigned char secret[100]; + size_t secret_len; + + const unsigned char expected_secret[] = { + 0x5f, 0x8d, 0xa5, 0x94, 0xfe, 0xca, 0x72, 0xc1, + 0x0f, 0x9e, 0xc8, 0x78, 0x81, 0x11, 0x05, 0x57, + 0x81, 0xa9, 0x6f, 0x6a, 0x06, 0x53, 0x58, 0xbf, + 0xb4, 0x5a, 0xba, 0x4b, 0xc0, 0x37, 0xf3, 0xb2, + }; + + HKDF_extract(secret, &secret_len, md, dcid.idbuf, dcid.len, + HSK_SALT_PRE29, HSK_SALT_SZ); + + assert(sizeof(expected_secret) == secret_len); + assert(0 == memcmp(secret, expected_secret, sizeof(expected_secret))); + + unsigned char client_secret[32]; + const unsigned char expected_client_secret[] = { + 0x0c, 0x74, 0xbb, 0x95, 0xa1, 0x04, 0x8e, 0x52, + 0xef, 0x3b, 0x72, 0xe1, 0x28, 0x89, 0x35, 0x1c, + 0xd7, 0x3a, 0x55, 0x0f, 0xb6, 0x2c, 0x4b, 0xb0, + 0x87, 0xe9, 0x15, 0xcc, 0xe9, 0x6c, 0xe3, 0xa0, + }; + lsquic_qhkdf_expand(md, secret, secret_len, CLIENT_LABEL, CLIENT_LABEL_SZ, + client_secret, sizeof(client_secret)); + assert(0 == memcmp(client_secret, expected_client_secret, + sizeof(client_secret))); + const unsigned char expected_client_key[] = { + 0x86, 0xd1, 0x83, 0x04, 0x80, 0xb4, 0x0f, 0x86, + 0xcf, 0x9d, 0x68, 0xdc, 0xad, 0xf3, 0x5d, 0xfe, + }; + const unsigned char expected_client_iv[] = { + 0x12, 0xf3, 0x93, 0x8a, 0xca, 0x34, 0xaa, 0x02, + 0x54, 0x31, 0x63, 0xd4, + }; + const unsigned char expected_client_hp[] = { + 0xcd, 0x25, 0x3a, 0x36, 0xff, 0x93, 0x93, 0x7c, + 0x46, 0x93, 0x84, 0xa8, 0x23, 0xaf, 0x6c, 0x56, + }; + unsigned char client_key[sizeof(expected_client_key)], + client_iv[sizeof(expected_client_iv)], + client_hp[sizeof(expected_client_hp)]; + lsquic_qhkdf_expand(md, client_secret, sizeof(client_secret), "quic key", 8, + client_key, sizeof(client_key)); + assert(0 == memcmp(client_key, expected_client_key, + sizeof(expected_client_key))); + lsquic_qhkdf_expand(md, client_secret, sizeof(client_secret), "quic iv", 7, + client_iv, sizeof(client_iv)); + assert(0 == memcmp(client_iv, expected_client_iv, + sizeof(expected_client_iv))); + lsquic_qhkdf_expand(md, client_secret, sizeof(client_secret), "quic hp", 7, + client_hp, sizeof(client_hp)); + assert(0 == memcmp(client_hp, expected_client_hp, + sizeof(expected_client_hp))); + + unsigned char server_secret[32]; + const unsigned char expected_server_secret[] = { + 0x4c, 0x9e, 0xdf, 0x24, 0xb0, 0xe5, 0xe5, 0x06, + 0xdd, 0x3b, 0xfa, 0x4e, 0x0a, 0x03, 0x11, 0xe8, + 0xc4, 0x1f, 0x35, 0x42, 0x73, 0xd8, 0xcb, 0x49, + 0xdd, 0xd8, 0x46, 0x41, 0x38, 0xd4, 0x7e, 0xc6, + }; + lsquic_qhkdf_expand(md, secret, secret_len, SERVER_LABEL, SERVER_LABEL_SZ, + server_secret, sizeof(server_secret)); + assert(0 == memcmp(server_secret, expected_server_secret, + sizeof(server_secret))); + const unsigned char expected_server_key[] = { + 0x2c, 0x78, 0x63, 0x3e, 0x20, 0x6e, 0x99, 0xad, + 0x25, 0x19, 0x64, 0xf1, 0x9f, 0x6d, 0xcd, 0x6d, + }; + const unsigned char expected_server_iv[] = { + 0x7b, 0x50, 0xbf, 0x36, 0x98, 0xa0, 0x6d, 0xfa, + 0xbf, 0x75, 0xf2, 0x87, + }; + const unsigned char expected_server_hp[] = { + 0x25, 0x79, 0xd8, 0x69, 0x6f, 0x85, 0xed, 0xa6, + 0x8d, 0x35, 0x02, 0xb6, 0x55, 0x96, 0x58, 0x6b, + }; + unsigned char server_key[sizeof(expected_server_key)], + server_iv[sizeof(expected_server_iv)], + server_hp[sizeof(expected_server_hp)]; + lsquic_qhkdf_expand(md, server_secret, sizeof(server_secret), "quic key", 8, + server_key, sizeof(server_key)); + assert(0 == memcmp(server_key, expected_server_key, + sizeof(expected_server_key))); + lsquic_qhkdf_expand(md, server_secret, sizeof(server_secret), "quic iv", 7, + server_iv, sizeof(server_iv)); + assert(0 == memcmp(server_iv, expected_server_iv, + sizeof(expected_server_iv))); + lsquic_qhkdf_expand(md, server_secret, sizeof(server_secret), "quic hp", 7, + server_hp, sizeof(server_hp)); + assert(0 == memcmp(server_hp, expected_server_hp, + sizeof(expected_server_hp))); + + return 0; +} diff --git a/external/lsquic/tests/test_conn_close_gquic_be.c b/external/lsquic/tests/test_conn_close_gquic_be.c new file mode 100644 index 0000000..c0608ba --- /dev/null +++ b/external/lsquic/tests/test_conn_close_gquic_be.c @@ -0,0 +1,161 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_parse.h" + +//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC +#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) + + +struct conn_close_parse_test { + int lineno; + unsigned char buf[0x100]; + size_t buf_len; + uint32_t error_code; + uint16_t reason_len; + uint8_t reason_off; + int retval; +}; + +static const struct conn_close_parse_test parse_tests[] = { + + { + .lineno = __LINE__, + .buf = { 0x02, 0x00, 0x00, 0x00, 0x31, 0x00, 0x05, 'D', 'u', 'd', 'e', '!', }, + .buf_len = 0x100, + .error_code = 0x31, + .reason_len = 0x05, + .reason_off = 7, + .retval = 7 + 5, + }, + + { + .lineno = __LINE__, + .buf = { 0x02, 0x00, 0x00, 0x00, 0x31, 0x00, 0x05, 'D', 'u', 'd', 'e', '!', }, + .buf_len = 6, /* Too short #1 */ + .error_code = 0x31, + .reason_len = 0x05, + .reason_off = 7, + .retval = -1, + }, + + { + .lineno = __LINE__, + .buf = { 0x02, 0x00, 0x00, 0x00, 0x31, 0x00, 0x05, 'D', 'u', 'd', 'e', '!', }, + .buf_len = 9, /* Too short #2 */ + .error_code = 0x31, + .reason_len = 0x05, + .reason_off = 7, + .retval = -2, + }, + + { .buf = { 0 }, } +}; + + +struct conn_close_gen_test { + int lineno; + uint32_t error_code; + const char *reason; + int retval; + unsigned char buf[0x100]; + size_t buf_len; +}; + + +static const struct conn_close_gen_test gen_tests[] = { + + { + .lineno = __LINE__, + .error_code = 0x12345678, + .reason = "Dude, where is my car?", + .retval = 7 + sizeof("Dude, where is my car?") - 1, + .buf_len = 0x100, + .buf = { + 0x02, + 0x12, 0x34, 0x56, 0x78, + 0x00, sizeof("Dude, where is my car?") - 1, + 'D', 'u', 'd', 'e', ',', ' ', 'w', 'h', 'e', 'r', 'e', ' ', 'i', 's', ' ', 'm', 'y', ' ', 'c', 'a', 'r', '?', + }, + }, + + { + .lineno = __LINE__, + .error_code = 0x12345678, + .reason = NULL, + .retval = 7, + .buf_len = 0x100, + .buf = { + 0x02, + 0x12, 0x34, 0x56, 0x78, + 0x00, 0x00, /* Zero-sized string */ + }, + }, + + { + .lineno = __LINE__, + .error_code = 0x12345678, + .reason = "Dude, where is my car?", + .retval = -1, /* Too short */ + .buf_len = 0x10, + }, + + { .buf = { 0 }, } + +}; + + +static void +run_parse_tests (void) +{ + const struct conn_close_parse_test *test; + for (test = parse_tests; test->buf[0]; ++test) + { + uint64_t error_code = ~0; + uint16_t reason_len = ~0; + uint8_t reason_off = ~0; + int sz = pf->pf_parse_connect_close_frame(test->buf, test->buf_len, + NULL, &error_code, &reason_len, &reason_off); + assert(sz == test->retval); + if (0 == sz) + { + assert(test->error_code == error_code); + assert(test->reason_len == reason_len); + assert(test->reason_off == reason_off); + } + } +} + + +static void +run_gen_tests (void) +{ + const struct conn_close_gen_test *test; + for (test = gen_tests; test->buf[0]; ++test) + { + unsigned char buf[0x100]; + int sz = pf->pf_gen_connect_close_frame(buf, sizeof(buf), + 0, test->error_code, test->reason, + test->reason ? strlen(test->reason) : 0); + assert(sz == test->retval); + if (0 == sz) + assert(0 == memcmp(test->buf, buf, sz)); + } +} + + +int +main (void) +{ + run_parse_tests(); + run_gen_tests(); + return 0; +} diff --git a/external/lsquic/tests/test_conn_close_gquic_le.c b/external/lsquic/tests/test_conn_close_gquic_le.c new file mode 100644 index 0000000..6bb5164 --- /dev/null +++ b/external/lsquic/tests/test_conn_close_gquic_le.c @@ -0,0 +1,161 @@ +/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_alarmset.h" +#include "lsquic_parse.h" + +static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); + + +struct conn_close_parse_test { + int lineno; + unsigned char buf[0x100]; + size_t buf_len; + uint32_t error_code; + uint16_t reason_len; + uint8_t reason_off; + int retval; +}; + +static const struct conn_close_parse_test parse_tests[] = { + + { + .lineno = __LINE__, + .buf = { 0x02, 0x31, 0x00, 0x00, 0x00, 0x05, 0x00, 'D', 'u', 'd', 'e', '!', }, + .buf_len = 0x100, + .error_code = 0x31, + .reason_len = 0x05, + .reason_off = 7, + .retval = 7 + 5, + }, + + { + .lineno = __LINE__, + .buf = { 0x02, 0x31, 0x00, 0x00, 0x00, 0x05, 0x00, 'D', 'u', 'd', 'e', '!', }, + .buf_len = 6, /* Too short #1 */ + .error_code = 0x31, + .reason_len = 0x05, + .reason_off = 7, + .retval = -1, + }, + + { + .lineno = __LINE__, + .buf = { 0x02, 0x31, 0x00, 0x00, 0x00, 0x05, 0x00, 'D', 'u', 'd', 'e', '!', }, + .buf_len = 9, /* Too short #2 */ + .error_code = 0x31, + .reason_len = 0x05, + .reason_off = 7, + .retval = -2, + }, + + { .buf = { 0 }, } +}; + + +struct conn_close_gen_test { + int lineno; + uint32_t error_code; + const char *reason; + int retval; + unsigned char buf[0x100]; + size_t buf_len; +}; + + +static const struct conn_close_gen_test gen_tests[] = { + + { + .lineno = __LINE__, + .error_code = 0x12345678, + .reason = "Dude, where is my car?", + .retval = 7 + sizeof("Dude, where is my car?") - 1, + .buf_len = 0x100, + .buf = { + 0x02, + 0x78, 0x56, 0x34, 0x12, + sizeof("Dude, where is my car?") - 1, 0x00, + 'D', 'u', 'd', 'e', ',', ' ', 'w', 'h', 'e', 'r', 'e', ' ', 'i', 's', ' ', 'm', 'y', ' ', 'c', 'a', 'r', '?', + }, + }, + + { + .lineno = __LINE__, + .error_code = 0x12345678, + .reason = NULL, + .retval = 7, + .buf_len = 0x100, + .buf = { + 0x02, + 0x78, 0x56, 0x34, 0x12, + 0x00, 0x00, /* Zero-sized string */ + }, + }, + + { + .lineno = __LINE__, + .error_code = 0x12345678, + .reason = "Dude, where is my car?", + .retval = -1, /* Too short */ + .buf_len = 0x10, + }, + + { .buf = { 0 }, } + +}; + + +static void +run_parse_tests (void) +{ + const struct conn_close_parse_test *test; + for (test = parse_tests; test->buf[0]; ++test) + { + uint32_t error_code = ~0; + uint16_t reason_len = ~0; + uint8_t reason_off = ~0; + int sz = pf->pf_parse_connect_close_frame(test->buf, test->buf_len, + &error_code, &reason_len, &reason_off); + assert(sz == test->retval); + if (0 == sz) + { + assert(test->error_code == error_code); + assert(test->reason_len == reason_len); + assert(test->reason_off == reason_off); + } + } +} + + +static void +run_gen_tests (void) +{ + const struct conn_close_gen_test *test; + for (test = gen_tests; test->buf[0]; ++test) + { + unsigned char buf[0x100]; + int sz = pf->pf_gen_connect_close_frame(buf, sizeof(buf), + test->error_code, test->reason, + test->reason ? strlen(test->reason) : 0); + assert(sz == test->retval); + if (0 == sz) + assert(0 == memcmp(test->buf, buf, sz)); + } +} + + +int +main (void) +{ + run_parse_tests(); + run_gen_tests(); + return 0; +} diff --git a/external/lsquic/tests/test_conn_hash.c b/external/lsquic/tests/test_conn_hash.c new file mode 100644 index 0000000..590672b --- /dev/null +++ b/external/lsquic/tests/test_conn_hash.c @@ -0,0 +1,87 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_types.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_conn_hash.h" +#include "lsquic_mm.h" +#include "lsquic_malo.h" +#include "lsquic_logger.h" +#include "lsquic.h" + + +static struct lsquic_conn * +get_new_lsquic_conn (struct malo *malo) +{ + struct lsquic_conn *lconn = lsquic_malo_get(malo); + memset(lconn, 0, sizeof(*lconn)); + memcpy(lconn->cn_cid.idbuf, &lconn, sizeof(lconn)); + lconn->cn_cid.len = sizeof(lconn); + return lconn; +} + + +int +main (int argc, char **argv) +{ + struct malo *malo; + struct conn_hash conn_hash; + unsigned n, nelems; + struct lsquic_conn *lconn, *find_lsconn; + int s; + + if (argc > 1) + nelems = atoi(argv[1]); + else + nelems = 1000000; + + lsquic_log_to_fstream(stderr, LLTS_HHMMSSMS); + lsquic_set_log_level("info"); + + malo = lsquic_malo_create(sizeof(*lconn)); + s = conn_hash_init(&conn_hash, 0); + assert(0 == s); + + for (n = 0; n < nelems; ++n) + { + lconn = get_new_lsquic_conn(malo); + lconn->cn_if = (void *) (uintptr_t) n; /* This will be used for verification later the test */ + find_lsconn = conn_hash_find_by_cid(&conn_hash, &lconn->cn_cid); + assert(!find_lsconn); + s = conn_hash_add(&conn_hash, lconn); + assert(0 == s); + lconn->cn_flags = 1; /* In hash */ + } + + assert(nelems == conn_hash_count(&conn_hash)); + + for (lconn = lsquic_malo_first(malo); lconn; + lconn = lsquic_malo_next(malo)) + { + assert(lconn->cn_flags == 1); + find_lsconn = conn_hash_find_by_cid(&conn_hash, &lconn->cn_cid); + assert(find_lsconn == lconn); + conn_hash_remove(&conn_hash, lconn); + lconn->cn_flags = 0; + find_lsconn = conn_hash_find_by_cid(&conn_hash, &lconn->cn_cid); + assert(!find_lsconn); + } + + assert(0 == conn_hash_count(&conn_hash)); + + conn_hash_cleanup(&conn_hash); + lsquic_malo_destroy(malo); + + exit(0); +} diff --git a/external/lsquic/tests/test_crypto_gen.c b/external/lsquic/tests/test_crypto_gen.c new file mode 100644 index 0000000..0fa3f64 --- /dev/null +++ b/external/lsquic/tests/test_crypto_gen.c @@ -0,0 +1,143 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_parse.h" + + +struct test { + int lineno; + const struct parse_funcs * + pf; + uint64_t offset; + size_t avail; /* Space to write stream frame to */ + size_t min_sz; /* Minimum size needed to generate CRYPTO + * frame. Any sizes smaller than this + * should fail. + */ + size_t data_sz; + char data[0x100]; + + /* Output. This is how we expect the resulting frame to look. + */ + int len; /* Return value of pf_gen_crypto_frame() */ + char out[0x100]; +}; + +struct test_ctx { + const struct test *test; + unsigned off; +}; + + +static size_t +crypto_read (void *ctx, void *buf, size_t len, int *fin) +{ + struct test_ctx *test_ctx = ctx; + if (test_ctx->test->data_sz - test_ctx->off < len) + len = test_ctx->test->data_sz - test_ctx->off; + memcpy(buf, test_ctx->test->data, len); + test_ctx->off += len; + return len; +} + + +static void +init_ctx (struct test_ctx *test_ctx, const struct test *test) +{ + test_ctx->test = test; + test_ctx->off = 0; +} + + +static void +run_test (const struct test *const test) +{ + + int len; + size_t min; + struct test_ctx test_ctx; + unsigned char out[0x100]; + + if (test->len > 0) + { + /* Test that all sizes under specified min fail to produce a frame */ + for (min = 0; min < test->min_sz; ++min) + { + init_ctx(&test_ctx, test); + len = test->pf->pf_gen_crypto_frame(out, min, 0, test->offset, 0, + test->data_sz, crypto_read, &test_ctx); + assert(-1 == len); + } + + /* Test that it succeeds now: */ + init_ctx(&test_ctx, test); + len = test->pf->pf_gen_crypto_frame(out, min, 0, test->offset, 0, + test->data_sz, crypto_read, &test_ctx); + assert(len == (int) min); + } + + init_ctx(&test_ctx, test); + len = test->pf->pf_gen_crypto_frame(out, test->avail, 0, test->offset, 0, + test->data_sz, crypto_read, &test_ctx); + + if (test->len > 0) { + assert(test->len == len); + assert(0 == memcmp(test->out, out, test->len)); + } + else + { + assert(len < 0); + } +} + + +int +main (void) +{ + const struct test tests[] = { + + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_I001), + .offset = 0, + .data_sz = 10, + .data = "0123456789", + .avail = 0x100, + .out = + { /* Type */ 0x06, + /* Offset */ 0x00, + /* Size */ 0x0A, + /* Data */ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + }, + .len = 1 + 1 + 1 + 10, + .min_sz = 1 + 1 + 1 + 1, + }, + + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_I001), + .offset = 500, + .data_sz = 10, + .data = "0123456789", + .avail = 0x100, + .out = + { /* Type */ 0x06, + /* Offset */ 0x41, 0xF4, + /* Size */ 0x0A, + /* Data */ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + }, + .len = 1 + 2 + 1 + 10, + .min_sz = 1 + 2 + 1 + 1, + }, + + }; + + unsigned i; + for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) + run_test(&tests[i]); + return 0; +} diff --git a/external/lsquic/tests/test_cubic.c b/external/lsquic/tests/test_cubic.c new file mode 100644 index 0000000..295c1e3 --- /dev/null +++ b/external/lsquic/tests/test_cubic.c @@ -0,0 +1,126 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include +#endif + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_cong_ctl.h" +#include "lsquic_cubic.h" +#include "lsquic_logger.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_sfcw.h" +#include "lsquic_conn_flow.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_stream.h" +#include "lsquic_rtt.h" +#include "lsquic_conn_public.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_out.h" + +//static const struct cong_ctl_if *const cci = &lsquic_cong_cubic_if; // will not work on MSVC +#define cci ((const struct cong_ctl_if *const)&lsquic_cong_cubic_if) + +static void +test_post_quiescence_explosion (void) +{ + struct lsquic_cubic cubic; + lsquic_time_t const rtt = 10000; + lsquic_time_t t = 12345600; + struct lsquic_conn lconn = LSCONN_INITIALIZER_CIDLEN(lconn, 8); + struct lsquic_conn_public conn_pub = { .lconn = &lconn, }; + int i; + struct lsquic_packet_out packet_out; memset(&packet_out, 0, sizeof(packet_out)); + + cci->cci_init(&cubic, &conn_pub, 0); + cubic.cu_ssthresh = cubic.cu_cwnd = 32 * 1370; + + for (i = 0; i < 10; ++i) + { + packet_out.po_sent = t - rtt; + cci->cci_ack(&cubic, &packet_out, 1370, t, 0); + } + + assert(cci->cci_get_cwnd(&cubic) == 47026); + + t += 25 * 1000 * 1000; + cci->cci_was_quiet(&cubic, t, 0 /* bytes in flight (unused) */); + packet_out.po_sent = t - rtt; + cci->cci_ack(&cubic, &packet_out, 1370, t, 0); + assert(cci->cci_get_cwnd(&cubic) == 47060); + + t += 2 * 1000 * 1000; + packet_out.po_sent = t - rtt; + cci->cci_ack(&cubic, &packet_out, 1370, t, 0); +} + + +static void +test_post_quiescence_explosion2 (void) +{ + struct lsquic_cubic cubic; + lsquic_time_t const rtt = 10000; + lsquic_time_t t = 12345600; + struct lsquic_conn lconn = LSCONN_INITIALIZER_CIDLEN(lconn, 8); + struct lsquic_conn_public conn_pub = { .lconn = &lconn, }; + int i; + struct lsquic_packet_out packet_out; memset(&packet_out, 0, sizeof(packet_out)); + + cci->cci_init(&cubic, &conn_pub, 0); + cubic.cu_ssthresh = cubic.cu_cwnd = 32 * 1370; + + for (i = 0; i < 10; ++i) + { + packet_out.po_sent = t - rtt; + cci->cci_ack(&cubic, &packet_out, 1370, t, 1); + } + + assert(cci->cci_get_cwnd(&cubic) == 45300); + + t += 25 * 1000 * 1000; + cci->cci_was_quiet(&cubic, t, 0 /* bytes in flight (unused) */); + packet_out.po_sent = t - rtt; + cci->cci_ack(&cubic, &packet_out, 1370, t, 0); + assert(cci->cci_get_cwnd(&cubic) == 46754); + + t += 2 * 1000 * 1000; + packet_out.po_sent = t - rtt; + cci->cci_ack(&cubic, &packet_out, 1370, t, 1); +} + + + +int +main (int argc, char **argv) +{ + int opt; + + lsquic_log_to_fstream(stderr, LLTS_NONE); + + while (-1 != (opt = getopt(argc, argv, "l:"))) + { + switch (opt) + { + case 'l': + lsquic_logger_lopt(optarg); + break; + default: + exit(EXIT_FAILURE); + break; + } + } + + test_post_quiescence_explosion(); + test_post_quiescence_explosion2(); + + exit(EXIT_SUCCESS); +} diff --git a/external/lsquic/tests/test_dec.c b/external/lsquic/tests/test_dec.c new file mode 100644 index 0000000..b48bd5b --- /dev/null +++ b/external/lsquic/tests/test_dec.c @@ -0,0 +1,82 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * test_dec.c -- Benchmark decryption using aligned and non-aligned buffers. + */ + +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include +#endif + +#include +#include + +#define MAX_SIZE 1400 + +int +main (int argc, char **argv) +{ + EVP_AEAD_CTX aead_ctx; + int opt, n = 1, r; + size_t sealed_len, opened_len; + unsigned char key[16]; + unsigned char data[1328]; + unsigned char sealed_buf[63 + MAX_SIZE], *sealed = sealed_buf; + unsigned char opened_buf[63 + MAX_SIZE], *opened = opened_buf; + + while (-1 != (opt = getopt(argc, argv, "an:"))) + { + switch (opt) + { + case 'a': + if ((uintptr_t) sealed & (64 - 1)) + sealed += 64 - ((uintptr_t) sealed & (64 - 1)); + if ((uintptr_t) opened & (64 - 1)) + opened += 64 - ((uintptr_t) opened & (64 - 1)); + break; + case 'n': /* Number of decrypt iterations */ + n = atoi(optarg); + break; + default: + exit(EXIT_FAILURE); + } + } + + RAND_bytes(key, sizeof(key)); + RAND_bytes(data, sizeof(data)); + + EVP_AEAD_CTX_init(&aead_ctx, EVP_aead_aes_128_gcm(), key, sizeof(key), + 12, NULL); + r = EVP_AEAD_CTX_seal(&aead_ctx, sealed, &sealed_len, MAX_SIZE, + key, sizeof(key), data, sizeof(data), NULL, 0); + if (!r) + { + fprintf(stderr, "cannot seal\n"); + exit(EXIT_FAILURE); + } + + printf("buffers are %saligned\n", ((uintptr_t) opened & (64 - 1)) || + ((uintptr_t) sealed & (64 - 1)) ? "not " : ""); + + /* Check that decryption works first time around */ + r = EVP_AEAD_CTX_open(&aead_ctx, opened, &opened_len, MAX_SIZE, + key, sizeof(key), sealed, sealed_len, NULL, 0); + assert(r && opened_len == sizeof(data) && + 0 == memcmp(data, opened, sizeof(data))); + --n; + + /* Do no bother checking return value in the loop */ + while (n-- > 0) + { + EVP_AEAD_CTX_open(&aead_ctx, opened, &opened_len, MAX_SIZE, + key, sizeof(key), sealed, sealed_len, NULL, 0); + } + + exit(EXIT_SUCCESS); +} diff --git a/external/lsquic/tests/test_di_nocopy.c b/external/lsquic/tests/test_di_nocopy.c new file mode 100644 index 0000000..441cbed --- /dev/null +++ b/external/lsquic/tests/test_di_nocopy.c @@ -0,0 +1,356 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * Test the "nocopy" data in stream + */ + +#include +#include +#include +#include +#ifdef WIN32 +#include "getopt.h" +#else +#include +#endif + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_sfcw.h" +#include "lsquic_rtt.h" +#include "lsquic_conn_flow.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_conn.h" +#include "lsquic_conn_public.h" +#include "lsquic_malo.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_mm.h" +#include "lsquic_logger.h" +#include "lsquic_data_in_if.h" + + +struct nocopy_test +{ + int lineno; + + /* Setup: initial set of frames to insert and read until some offset */ + unsigned n_init_frames; + struct data_frame initial_frames[5]; + unsigned read_until; + + /* Test: data frame to insert and expected insert result */ + struct data_frame data_frame; + enum ins_frame ins; +}; + + +#define F(off, size, fin) { .df_offset = (off), .df_fin = (fin), .df_size = (size), } + +static const struct nocopy_test tests[] = +{ + + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(0, 300, 0), }, + .read_until = 300, + .data_frame = F(200, 100, 0), + .ins = INS_FRAME_DUP, + }, + + { .lineno = __LINE__, + .n_init_frames = 2, + .initial_frames = { F(0, 300, 0), F(300, 100, 0), }, + .read_until = 300, + .data_frame = F(200, 100, 0), + .ins = INS_FRAME_DUP, + }, + + { .lineno = __LINE__, + .n_init_frames = 2, + .initial_frames = { F(0, 300, 0), F(300, 0, 1), }, + .read_until = 300, + .data_frame = F(200, 100, 1), + .ins = INS_FRAME_DUP, + }, + + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(0, 301, 0), }, + .read_until = 301, + .data_frame = F(200, 100, 1), + .ins = INS_FRAME_ERR, + }, + + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(0, 400, 0), }, + .read_until = 301, + .data_frame = F(200, 100, 0), + .ins = INS_FRAME_DUP, + }, + + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(200, 100, 1), }, + .read_until = 0, + .data_frame = F(200, 50, 1), + .ins = INS_FRAME_ERR, + }, + + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(200, 100, 1), }, + .read_until = 0, + .data_frame = F(200, 150, 1), + .ins = INS_FRAME_ERR, + }, + + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(200, 100, 1), }, + .read_until = 0, + .data_frame = F(200, 101, 0), + .ins = INS_FRAME_ERR, + }, + + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(200, 100, 1), }, + .read_until = 0, + .data_frame = F(500, 1, 0), + .ins = INS_FRAME_ERR, + }, + + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(0, 100, 0), }, + .read_until = 100, + .data_frame = F(0, 100, 1), + .ins = INS_FRAME_OVERLAP, + }, + + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(0, 100, 1), }, + .read_until = 100, + .data_frame = F(0, 100, 1), + .ins = INS_FRAME_DUP, + }, + + /* TODO: Case 'F' and 'L' -- remove "case 'F'" */ + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(0, 100, 0), }, + .read_until = 100, + .data_frame = F(0, 100, 0), + .ins = INS_FRAME_DUP, + }, + + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(0, 100, 1), }, + .read_until = 10, + .data_frame = F(0, 100, 0), + .ins = INS_FRAME_DUP, + }, + + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(0, 100, 0), }, + .read_until = 10, + .data_frame = F(0, 100, 1), + .ins = INS_FRAME_OVERLAP, + }, + + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(0, 100, 0), }, + .read_until = 100, + .data_frame = F(100, 0, 0), + .ins = INS_FRAME_DUP, + }, + + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(0, 100, 0), }, + .read_until = 0, + .data_frame = F(50, 100, 0), + .ins = INS_FRAME_OVERLAP, + }, + + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(0, 100, 1), }, + .read_until = 0, + .data_frame = F(50, 100, 0), + .ins = INS_FRAME_ERR, + }, + + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(100, 100, 0), }, + .read_until = 0, + .data_frame = F(50, 100, 0), + .ins = INS_FRAME_OVERLAP, + }, + + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(100, 100, 0), }, + .read_until = 0, + .data_frame = F(50, 100, 1), + .ins = INS_FRAME_OVERLAP, /* This is really an error, + * but we ignore it. + */ + }, + + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(100, 100, 1), }, + .read_until = 0, + .data_frame = F(50, 100, 0), + .ins = INS_FRAME_OVERLAP, + }, + + { .lineno = __LINE__, + .n_init_frames = 1, + .initial_frames = { F(0, 100, 1), }, + .read_until = 60, + .data_frame = F(50, 2, 0), + .ins = INS_FRAME_DUP, + }, + + { .lineno = __LINE__, + .n_init_frames = 2, + .initial_frames = { F(0, 100, 0), F(200, 100, 0), }, + .read_until = 0, + .data_frame = F(50, 200, 0), + .ins = INS_FRAME_OVERLAP, + }, + + { .lineno = __LINE__, + .n_init_frames = 2, + .initial_frames = { F(0, 100, 0), F(200, 100, 0), }, + .read_until = 0, + .data_frame = F(100, 100, 0), + .ins = INS_FRAME_OK, + }, + + { .lineno = __LINE__, + .n_init_frames = 2, + .initial_frames = { F(0, 100, 0), F(200, 100, 0), }, + .read_until = 0, + .data_frame = F(100, 100, 1), + .ins = INS_FRAME_OK, /* Ignore another error */ + }, + + { .lineno = __LINE__, + .n_init_frames = 2, + .initial_frames = { F(0, 60, 0), F(60, 60, 0), }, + .read_until = 120, + .data_frame = F(0, 180, 0), + .ins = INS_FRAME_OVERLAP, + }, + + { .lineno = __LINE__, + .n_init_frames = 3, + .initial_frames = { F(0, 60, 0), F(60, 60, 0), F(180, 60, 0), }, + .read_until = 120, + .data_frame = F(0, 180, 0), + .ins = INS_FRAME_OVERLAP, + }, + +}; + + +static void +run_di_nocopy_test (const struct nocopy_test *test) +{ + struct lsquic_mm mm; + struct lsquic_conn_public conn_pub; + struct lsquic_conn conn; + struct stream_frame *frame; + struct data_in *di; + struct data_frame *data_frame; + enum ins_frame ins; + unsigned i; + unsigned nread, n_to_read; + + LSQ_NOTICE("running test on line %d", test->lineno); + + lsquic_mm_init(&mm); + memset(&conn, 0, sizeof(conn)); + conn_pub.lconn = &conn; + conn_pub.mm = &mm; + + di = lsquic_data_in_nocopy_new(&conn_pub, 3); + + for (i = 0; i < test->n_init_frames; ++i) + { + frame = lsquic_malo_get(mm.malo.stream_frame); + frame->packet_in = lsquic_mm_get_packet_in(&mm); + frame->packet_in->pi_refcnt = 1; + frame->data_frame = test->initial_frames[i]; + ins = di->di_if->di_insert_frame(di, frame, 0); + assert(INS_FRAME_OK == ins); /* Self-test */ + } + + nread = 0; + while (nread < test->read_until) + { + data_frame = di->di_if->di_get_frame(di, nread); + assert(data_frame); /* Self-check */ + n_to_read = test->read_until - nread > (unsigned) data_frame->df_size - data_frame->df_read_off + ? (unsigned) data_frame->df_size - data_frame->df_read_off : test->read_until - nread; + data_frame->df_read_off += n_to_read; + nread += n_to_read; + if (data_frame->df_read_off == data_frame->df_size) + di->di_if->di_frame_done(di, data_frame); + else + { + assert(nread == test->read_until); + break; + } + } + + frame = lsquic_malo_get(mm.malo.stream_frame); + frame->packet_in = lsquic_mm_get_packet_in(&mm); + frame->packet_in->pi_refcnt = 1; + frame->data_frame = test->data_frame; + ins = di->di_if->di_insert_frame(di, frame, test->read_until); + assert(test->ins == ins); + + di->di_if->di_destroy(di); + lsquic_mm_cleanup(&mm); +} + + +int +main (int argc, char **argv) +{ + const struct nocopy_test *test; + int opt; + + lsquic_log_to_fstream(stderr, LLTS_NONE); + + while (-1 != (opt = getopt(argc, argv, "l:"))) + { + switch (opt) + { + case 'l': + lsquic_logger_lopt(optarg); + break; + default: + return 1; + } + } + + for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) + run_di_nocopy_test(test); + + return 0; +} diff --git a/external/lsquic/tests/test_elision.c b/external/lsquic/tests/test_elision.c new file mode 100644 index 0000000..e6bef80 --- /dev/null +++ b/external/lsquic/tests/test_elision.c @@ -0,0 +1,420 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#include + +#include "lsquic.h" + +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_gquic.h" +#include "lsquic_packet_out.h" +#include "lsquic_parse.h" +#include "lsquic_conn_flow.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_types.h" +#include "lsquic_malo.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_logger.h" + + +//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC +#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) + +static struct { + unsigned char buf[0x1000]; + size_t bufsz; + uint64_t off; +} stream_contents; + + +void +setup_stream_contents (uint64_t off, const char *str) +{ + stream_contents.bufsz = strlen(str); + stream_contents.off = off; + memcpy(stream_contents.buf, str, stream_contents.bufsz); +} + + +void +setup_stream_contents_n (uint64_t off, const unsigned char *buf, size_t size) +{ + stream_contents.bufsz = size; + stream_contents.off = off; + memcpy(stream_contents.buf, buf, size); +} + + +int +lsquic_stream_tosend_fin (const lsquic_stream_t *stream) +{ + return 0; +} + + +uint64_t +lsquic_stream_tosend_offset (const lsquic_stream_t *stream) +{ + return stream_contents.off; +} + + +size_t +lsquic_stream_tosend_read (lsquic_stream_t *stream, void *buf, size_t len, + int *reached_fin) +{ + if (stream_contents.bufsz < len) + len = stream_contents.bufsz; + memcpy(buf, stream_contents.buf, len); + *reached_fin = lsquic_stream_tosend_fin(stream); + return len; +} + + +size_t +lsquic_stream_tosend_sz (const lsquic_stream_t *stream) +{ + return stream_contents.bufsz; +} + + +void +lsquic_stream_acked (lsquic_stream_t *stream, enum quic_frame_type frame_type) +{ + --stream->n_unacked; +} + + +static void +elide_single_stream_frame (void) +{ + struct packet_out_frec_iter pofi; + struct lsquic_engine_public enpub; + lsquic_stream_t streams[1]; + lsquic_packet_out_t *packet_out; + int len, off = 0; + + memset(streams, 0, sizeof(streams)); + memset(&enpub, 0, sizeof(enpub)); + lsquic_mm_init(&enpub.enp_mm); + packet_out = lsquic_mm_get_packet_out(&enpub.enp_mm, NULL, GQUIC_MAX_PAYLOAD_SZ); + + setup_stream_contents(123, "Dude, where is my car?"); + len = pf->pf_gen_stream_frame(packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), + streams[0].id, lsquic_stream_tosend_offset(&streams[0]), + lsquic_stream_tosend_fin(&streams[0]), + lsquic_stream_tosend_sz(&streams[0]), + (gsf_read_f) lsquic_stream_tosend_read, + &streams[0]); + packet_out->po_data_sz += len; + packet_out->po_frame_types |= (1 << QUIC_FRAME_STREAM); + lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[0], + QUIC_FRAME_STREAM, off, len); + assert(1 == streams[0].n_unacked); + assert(lsquic_pofi_first(&pofi, packet_out)); + + streams[0].stream_flags |= STREAM_RST_SENT; + + lsquic_packet_out_elide_reset_stream_frames(packet_out, UINT64_MAX); + assert(0 == streams[0].n_unacked); + assert(0 == packet_out->po_frame_types); + assert(!lsquic_pofi_first(&pofi, packet_out)); + + lsquic_packet_out_destroy(packet_out, &enpub, NULL); + lsquic_mm_cleanup(&enpub.enp_mm); +} + + +/* In this test, we check that if the last STREAM frame is moved due to + * elision and PO_STREAM_END is set, the packet size is adjusted. This + * is needed to prevent data corruption for STREAM frames that have + * implicit length. + */ +static void +shrink_packet_post_elision (void) +{ + struct packet_out_frec_iter pofi; + struct lsquic_engine_public enpub; + lsquic_stream_t streams[2]; + lsquic_packet_out_t *packet_out; + const struct frame_rec *frec; + int len, off = 0; + unsigned char stream2_data[0x1000]; + + memset(stream2_data, '2', sizeof(stream2_data)); + memset(streams, 0, sizeof(streams)); + memset(&enpub, 0, sizeof(enpub)); + lsquic_mm_init(&enpub.enp_mm); + packet_out = lsquic_mm_get_packet_out(&enpub.enp_mm, NULL, GQUIC_MAX_PAYLOAD_SZ); + + setup_stream_contents(123, "Dude, where is my car?"); + len = pf->pf_gen_stream_frame(packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), + streams[0].id, lsquic_stream_tosend_offset(&streams[0]), + lsquic_stream_tosend_fin(&streams[0]), + lsquic_stream_tosend_sz(&streams[0]), + (gsf_read_f) lsquic_stream_tosend_read, + &streams[0]); + packet_out->po_data_sz += len; + packet_out->po_frame_types |= (1 << QUIC_FRAME_STREAM); + lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[0], + QUIC_FRAME_STREAM, off, len); + + /* We want to fill the packet just right so that PO_STREAM_END gets set */ + const int exp = lsquic_packet_out_avail(packet_out); + setup_stream_contents_n(0, stream2_data, exp - 2); + len = pf->pf_gen_stream_frame(packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), + streams[1].id, lsquic_stream_tosend_offset(&streams[1]), + lsquic_stream_tosend_fin(&streams[1]), + lsquic_stream_tosend_sz(&streams[1]), + (gsf_read_f) lsquic_stream_tosend_read, + &streams[1]); + assert(len == exp); + packet_out->po_data_sz += len; + packet_out->po_frame_types |= (1 << QUIC_FRAME_STREAM); + lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[1], + QUIC_FRAME_STREAM, off, len); + assert(0 == lsquic_packet_out_avail(packet_out)); /* Same as len == exp check really */ + packet_out->po_flags |= PO_STREAM_END; + + assert(1 == streams[0].n_unacked); + assert(1 == streams[1].n_unacked); + assert(lsquic_pofi_first(&pofi, packet_out)); + + streams[0].stream_flags |= STREAM_RST_SENT; + + lsquic_packet_out_elide_reset_stream_frames(packet_out, UINT64_MAX); + assert(0 == streams[0].n_unacked); + + assert(QUIC_FTBIT_STREAM == packet_out->po_frame_types); + frec = lsquic_pofi_first(&pofi, packet_out); + assert(frec->fe_stream == &streams[1]); + assert(packet_out->po_data_sz == exp); + + lsquic_packet_out_destroy(packet_out, &enpub, NULL); + lsquic_mm_cleanup(&enpub.enp_mm); +} + + +/* This test is more involved. We will construct the following packet: + * + * | ACK | STREAM A | STREAM B | STREAM C | RST A | STREAM D | STREAM E + * + * and elide STREAM A, STREAM C, and STREAM E to get + * + * | ACK | STREAM B | RST A | STREAM D | + * + * If `chop_regen' is set, ACK is dropped (this tests what happens when + * packet is resent). + * + * This should test most of the corner cases. + */ +static void +elide_three_stream_frames (int chop_regen) +{ + struct packet_out_frec_iter pofi; + struct lsquic_engine_public enpub; + lsquic_stream_t streams[5]; + lsquic_packet_out_t *packet_out, *ref_out; + struct frame_rec *frec; + unsigned short b_off, d_off; + int len; + + memset(streams, 0, sizeof(streams)); + memset(&enpub, 0, sizeof(enpub)); + lsquic_mm_init(&enpub.enp_mm); + + /* First, we construct the reference packet. We will only use it to + * compare payload and sizes: + */ + { + ref_out = lsquic_mm_get_packet_out(&enpub.enp_mm, NULL, GQUIC_MAX_PAYLOAD_SZ); + /* This is fake data for regeneration */ + strcpy((char *) ref_out->po_data, "REGEN"); + lsquic_packet_out_add_frame(ref_out, &enpub.enp_mm, 0, + QUIC_FRAME_ACK, ref_out->po_data_sz, 5); + ref_out->po_data_sz = ref_out->po_regen_sz = 5; + /* STREAM B */ + setup_stream_contents(123, "BBBBBBBBBB"); + streams[0].id = 'B'; + len = pf->pf_gen_stream_frame(ref_out->po_data + ref_out->po_data_sz, + lsquic_packet_out_avail(ref_out), + streams[0].id, lsquic_stream_tosend_offset(&streams[0]), + lsquic_stream_tosend_fin(&streams[0]), + lsquic_stream_tosend_sz(&streams[0]), + (gsf_read_f) lsquic_stream_tosend_read, + &streams[0]); + b_off = ref_out->po_data_sz; + ref_out->po_data_sz += len; + len = pf->pf_gen_rst_frame(ref_out->po_data + ref_out->po_data_sz, + lsquic_packet_out_avail(ref_out), 'A', 133, 0); + ref_out->po_data_sz += len; + /* STREAM D */ + setup_stream_contents(123, "DDDDDDDDDD"); + streams[0].id = 'D'; + len = pf->pf_gen_stream_frame(ref_out->po_data + ref_out->po_data_sz, + lsquic_packet_out_avail(ref_out), + streams[0].id, lsquic_stream_tosend_offset(&streams[0]), + lsquic_stream_tosend_fin(&streams[0]), + lsquic_stream_tosend_sz(&streams[0]), + (gsf_read_f) lsquic_stream_tosend_read, + &streams[0]); + d_off = ref_out->po_data_sz; + ref_out->po_data_sz += len; + } + + /* Construct packet from which we will elide streams. Here, we attach + * stream objects to the packet. + */ + { + packet_out = lsquic_mm_get_packet_out(&enpub.enp_mm, NULL, GQUIC_MAX_PAYLOAD_SZ); + /* This is fake data for regeneration */ + strcpy((char *) packet_out->po_data, "REGEN"); + lsquic_packet_out_add_frame(packet_out, &enpub.enp_mm, 0, + QUIC_FRAME_ACK, packet_out->po_data_sz, 5); + packet_out->po_data_sz = packet_out->po_regen_sz = 5; + /* STREAM A */ + setup_stream_contents(123, "AAAAAAAAAA"); + streams[0].id = 'A'; + len = pf->pf_gen_stream_frame(packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), + streams[0].id, lsquic_stream_tosend_offset(&streams[0]), + lsquic_stream_tosend_fin(&streams[0]), + lsquic_stream_tosend_sz(&streams[0]), + (gsf_read_f) lsquic_stream_tosend_read, + &streams[0]); + lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[0], + QUIC_FRAME_STREAM, packet_out->po_data_sz, len); + packet_out->po_data_sz += len; + /* STREAM B */ + setup_stream_contents(123, "BBBBBBBBBB"); + streams[1].id = 'B'; + len = pf->pf_gen_stream_frame(packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), + streams[1].id, lsquic_stream_tosend_offset(&streams[1]), + lsquic_stream_tosend_fin(&streams[1]), + lsquic_stream_tosend_sz(&streams[1]), + (gsf_read_f) lsquic_stream_tosend_read, + &streams[1]); + lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[1], + QUIC_FRAME_STREAM, packet_out->po_data_sz, len); + packet_out->po_data_sz += len; + /* STREAM C */ + setup_stream_contents(123, "CCCCCCCCCC"); + streams[2].id = 'C'; + len = pf->pf_gen_stream_frame(packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), + streams[2].id, lsquic_stream_tosend_offset(&streams[2]), + lsquic_stream_tosend_fin(&streams[2]), + lsquic_stream_tosend_sz(&streams[2]), + (gsf_read_f) lsquic_stream_tosend_read, + &streams[2]); + lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[2], + QUIC_FRAME_STREAM, packet_out->po_data_sz, len); + packet_out->po_data_sz += len; + /* Reset A */ + len = pf->pf_gen_rst_frame(packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), 'A', 133, 0); + lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[0], + QUIC_FRAME_RST_STREAM, packet_out->po_data_sz, len); + packet_out->po_data_sz += len; + /* STREAM D */ + setup_stream_contents(123, "DDDDDDDDDD"); + streams[3].id = 'D'; + len = pf->pf_gen_stream_frame(packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), + streams[3].id, lsquic_stream_tosend_offset(&streams[3]), + lsquic_stream_tosend_fin(&streams[3]), + lsquic_stream_tosend_sz(&streams[3]), + (gsf_read_f) lsquic_stream_tosend_read, + &streams[3]); + lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[3], + QUIC_FRAME_STREAM, packet_out->po_data_sz, len); + packet_out->po_data_sz += len; + /* STREAM E */ + setup_stream_contents(123, "EEEEEEEEEE"); + streams[4].id = 'E'; + len = pf->pf_gen_stream_frame(packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), + streams[4].id, lsquic_stream_tosend_offset(&streams[4]), + lsquic_stream_tosend_fin(&streams[4]), + lsquic_stream_tosend_sz(&streams[4]), + (gsf_read_f) lsquic_stream_tosend_read, + &streams[4]); + lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[4], + QUIC_FRAME_STREAM, packet_out->po_data_sz, len); + packet_out->po_data_sz += len; + packet_out->po_frame_types = (1 << QUIC_FRAME_STREAM) | (1 << QUIC_FRAME_RST_STREAM); + } + + /* Reset streams A, C, and E: */ + streams[0].stream_flags |= STREAM_RST_SENT; + streams[2].stream_flags |= STREAM_RST_SENT; + streams[4].stream_flags |= STREAM_RST_SENT; + + if (chop_regen) + lsquic_packet_out_chop_regen(packet_out); + lsquic_packet_out_elide_reset_stream_frames(packet_out, UINT64_MAX); + + assert(ref_out->po_data_sz == packet_out->po_data_sz + (chop_regen ? 5 : 0)); + assert(ref_out->po_regen_sz == packet_out->po_regen_sz + (chop_regen ? 5 : 0)); + if (chop_regen) + assert(0 == memcmp(ref_out->po_data + 5, packet_out->po_data, packet_out->po_data_sz)); + else + assert(0 == memcmp(ref_out->po_data, packet_out->po_data, packet_out->po_data_sz)); + + assert(1 == streams[0].n_unacked); /* Still has RST outstanding */ + assert(1 == streams[1].n_unacked); + assert(0 == streams[2].n_unacked); + assert(1 == streams[3].n_unacked); + assert(0 == streams[4].n_unacked); + + assert(packet_out->po_frame_types == ((1 << QUIC_FRAME_STREAM) | (1 << QUIC_FRAME_RST_STREAM))); + + frec = lsquic_pofi_first(&pofi, packet_out); + if (!chop_regen) + frec = lsquic_pofi_next(&pofi); + assert(frec->fe_stream == &streams[1]); + assert(frec->fe_frame_type == QUIC_FRAME_STREAM); + assert(frec->fe_off == b_off - (chop_regen ? 5 : 0)); + + frec = lsquic_pofi_next(&pofi); + assert(frec->fe_stream == &streams[0]); + assert(frec->fe_frame_type == QUIC_FRAME_RST_STREAM); + + frec = lsquic_pofi_next(&pofi); + assert(frec->fe_stream == &streams[3]); + assert(frec->fe_frame_type == QUIC_FRAME_STREAM); + assert(frec->fe_off == d_off - (chop_regen ? 5 : 0)); + + frec = lsquic_pofi_next(&pofi); + assert(!frec); + + lsquic_packet_out_destroy(packet_out, &enpub, NULL); + lsquic_packet_out_destroy(ref_out, &enpub, NULL); + lsquic_mm_cleanup(&enpub.enp_mm); +} + + +int +main (void) +{ + /* TODO-ENDIAN: test with every PF */ + elide_single_stream_frame(); + shrink_packet_post_elision(); + elide_three_stream_frames(0); + elide_three_stream_frames(1); + + return 0; +} diff --git a/external/lsquic/tests/test_engine_ctor.c b/external/lsquic/tests/test_engine_ctor.c new file mode 100644 index 0000000..5e9f677 --- /dev/null +++ b/external/lsquic/tests/test_engine_ctor.c @@ -0,0 +1,36 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include + +#include "lsquic.h" + + +int +main (void) +{ + struct lsquic_engine_settings settings; + lsquic_engine_t *engine; + unsigned versions; + const unsigned flags = LSENG_SERVER; + + lsquic_engine_init_settings(&settings, flags); + + struct lsquic_engine_api api; + memset(&api, 0, sizeof(api)); + api.ea_settings = &settings; + api.ea_packets_out = (void *) (uintptr_t) 1; + api.ea_stream_if = (void *) (uintptr_t) 2; + + engine = lsquic_engine_new(flags, &api); + assert(engine); + versions = lsquic_engine_quic_versions(engine); + assert(versions == settings.es_versions); + lsquic_engine_destroy(engine); + + settings.es_versions |= (1 << N_LSQVER /* Invalid value by definition */); + engine = lsquic_engine_new(flags, &api); + assert(!engine); + + return 0; +} diff --git a/external/lsquic/tests/test_export_key.c b/external/lsquic/tests/test_export_key.c new file mode 100644 index 0000000..7e0de9c --- /dev/null +++ b/external/lsquic/tests/test_export_key.c @@ -0,0 +1,477 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include + +#include + +#include "lsquic_crypto.h" + +#ifdef WIN32 +#pragma warning(disable:4295 4245) //4295: array is too small to include a terminating null character, 4245:initializing': conversion from 'int' to 'unsigned char', signed/unsigned mismatch +#endif + +struct export_key_test +{ + /* Line number for easy verification: */ + int ekt_lineno; + /* Input: */ + size_t ekt_ikm_sz, + ekt_salt_sz, + ekt_context_sz; + unsigned char ekt_ikm[0x20], + ekt_salt[0x60], + ekt_context[0x1000]; + size_t ekt_server_key_sz, + ekt_server_iv_sz, + ekt_client_key_sz, + ekt_client_iv_sz; + /* Output: */ + unsigned char ekt_server_key[32], + ekt_client_key[32], + ekt_server_iv[4], + ekt_client_iv[4]; +}; + + +static const struct export_key_test tests[] = { + +#define BUF_PAIR(name, buf) .ekt_##name = buf, .ekt_##name##_sz = sizeof(buf) - 1 + +/* Convert using + * sed '/^0x/{s/0x....: /"/; s~ .*~"~; s/ /\\x/g}' + */ + +/* +[0112/144512.438811:VERBOSE4:hkdf.cc(87)] secret: +0x0000: 73 65 63 72 65 74 secret + +[0112/144512.438876:VERBOSE4:hkdf.cc(88)] salt: +0x0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +0x0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + +[0112/144512.438916:VERBOSE4:hkdf.cc(89)] info: +0x0000: 51 55 49 43 20 73 6f 75 72 63 65 20 61 64 64 72 QUIC.source.addr +0x0010: 65 73 73 20 74 6f 6b 65 6e 20 6b 65 79 ess.token.key + +[0112/144512.438983:VERBOSE4:hkdf.cc(103)] PRK: +0x0000: 18 10 e8 d3 41 b9 e6 1e 88 89 5f ba 0b 1a a2 bd ....A....._..... +0x0010: 03 cb 6c 8f ff 2b 36 8e 66 6e f8 ef de f5 b4 fb ..l..+6.fn...... + +[0112/144512.439042:VERBOSE4:hkdf.cc(149)] client key: +0x0000: 59 58 f5 06 ac 1f f9 e6 2d 0b f9 77 df 05 c9 35 YX......-..w...5 + +[0112/144512.439076:VERBOSE4:hkdf.cc(156)] server key: +0x0000: 45 ca 99 4a 40 bc e3 3b 32 16 59 51 98 36 d4 21 E..J@..;2.YQ.6.! + */ + { + .ekt_lineno = __LINE__, + .ekt_ikm = "secret", + .ekt_ikm_sz = 6, + BUF_PAIR(salt, + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + ), + BUF_PAIR(context, "QUIC source address token key"), + BUF_PAIR(client_key, + "\x59\x58\xf5\x06\xac\x1f\xf9\xe6\x2d\x0b\xf9\x77\xdf\x05\xc9\x35" + ), + BUF_PAIR(server_key, + "\x45\xca\x99\x4a\x40\xbc\xe3\x3b\x32\x16\x59\x51\x98\x36\xd4\x21" + ), + }, + +/* +[0112/144522.376235:VERBOSE4:hkdf.cc(87)] secret: +0x0000: ab 62 c8 e1 03 63 b5 4e b9 c5 e4 f1 d9 47 ed 60 .b...c.N.....G.` +0x0010: 43 2f 3b c2 27 c3 2c 51 e7 7f e7 4b 5e a4 08 29 C/;.'.,Q...K^..) + +[0112/144522.376323:VERBOSE4:hkdf.cc(88)] salt: +0x0000: 58 77 dc d2 a5 d0 b3 7f 65 c3 cd 6b 03 a7 34 53 Xw......e..k..4S +0x0010: d7 8b 6e 56 3c a0 22 a2 ab 7a 1e 4c 40 e9 cf d6 ..nV<."..z.L@... +0x0020: 02 2e ef d3 08 bc d1 be cb 70 f1 92 8e ec 27 7b .........p....'{ +0x0030: b6 b5 27 ce ea 43 7d c2 34 b7 be 44 a3 89 70 9a ..'..C}.4..D..p. +0x0040: 62 65 46 fa e5 86 44 04 fb 66 22 2d 7c 07 b8 b8 beF...D..f"-|... + +[0112/144522.376423:VERBOSE4:hkdf.cc(89)] info: +0x0000: 51 55 49 43 20 6b 65 79 20 65 78 70 61 6e 73 69 QUIC.key.expansi +0x0010: 6f 6e 00 a8 9f 60 a0 05 e6 1a 02 43 48 4c 4f 18 on...`.....CHLO. +0x0020: 00 00 00 50 41 44 00 01 02 00 00 53 4e 49 00 10 ...PAD.....SNI.. +0x0030: 02 00 00 53 54 4b 00 44 02 00 00 53 4e 4f 00 74 ...STK.D...SNO.t +0x0040: 02 00 00 56 45 52 00 78 02 00 00 43 43 53 00 88 ...VER.x...CCS.. +0x0050: 02 00 00 4e 4f 4e 43 a8 02 00 00 4d 53 50 43 ac ...NONC....MSPC. +0x0060: 02 00 00 41 45 41 44 b0 02 00 00 53 43 49 44 c0 ...AEAD....SCID. +0x0070: 02 00 00 50 44 4d 44 c4 02 00 00 53 4d 48 4c c8 ...PDMD....SMHL. +0x0080: 02 00 00 49 43 53 4c cc 02 00 00 43 54 49 4d d4 ...ICSL....CTIM. +0x0090: 02 00 00 4e 4f 4e 50 f4 02 00 00 50 55 42 53 14 ...NONP....PUBS. +0x00a0: 03 00 00 4d 49 44 53 18 03 00 00 53 43 4c 53 1c ...MIDS....SCLS. +0x00b0: 03 00 00 4b 45 58 53 20 03 00 00 58 4c 43 54 28 ...KEXS....XLCT( +0x00c0: 03 00 00 43 53 43 54 28 03 00 00 43 43 52 54 30 ...CSCT(...CCRT0 +0x00d0: 03 00 00 43 46 43 57 34 03 00 00 53 46 43 57 38 ...CFCW4...SFCW8 +0x00e0: 03 00 00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ...------------- +0x00f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0100: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0110: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0120: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0130: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0140: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0150: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0160: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0170: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0180: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0190: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x01a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x01b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x01c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x01d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x01e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x01f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0210: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0220: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0230: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0240: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0250: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0260: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0270: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x0290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x02a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x02b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x02c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x02d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- +0x02e0: 2d 2d 2d 2d 77 77 77 2e 65 78 61 6d 70 6c 65 2e ----www.example. +0x02f0: 6f 72 67 2f 22 e6 5d e0 f8 78 94 5a 23 2d ba b4 org/".]..x.Z#-.. +0x0300: d7 e8 aa 1a 46 21 20 20 94 7f 0d 7a 5e 2e 41 98 ....F!.....z^.A. +0x0310: 66 0e 44 88 eb f3 41 c5 b1 e2 65 a7 38 01 3c 2c f.D...A...e.8.<, +0x0320: 0d eb 00 2b 73 48 da 02 2e ef d3 08 bc d1 be cb ...+sH.......... +0x0330: 70 f1 92 8e ec 27 7b b6 b5 27 ce ea 43 7d c2 34 p....'{..'..C}.4 +0x0340: b7 be 44 a3 89 70 9a 62 65 46 fa e5 86 44 04 fb ..D..p.beF...D.. +0x0350: 66 22 2d 7c 07 b8 b8 51 30 33 37 01 e8 81 60 92 f"-|...Q037...`. +0x0360: 92 1a e8 7e ed 80 86 a2 15 82 91 58 77 dc d2 a5 ...~.......Xw... +0x0370: d0 b3 7f 65 c3 cd 6b 03 a7 34 53 d7 8b 6e 56 3c ...e..k..4S..nV< +0x0380: a0 22 a2 ab 7a 1e 4c 40 e9 cf d6 64 00 00 00 43 ."..z.L@...d...C +0x0390: 43 32 30 08 68 02 10 36 fa fb 68 b3 8a aa a4 e7 C20.h..6..h..... +0x03a0: 96 41 ca 58 35 30 39 01 00 00 00 58 02 00 00 d2 .A.X509....X.... +0x03b0: dc 77 58 00 00 00 00 2d c8 07 0e 2a 4b 39 15 ae .wX....-...*K9.. +0x03c0: 98 1f 5c b1 6f ac 77 0e f7 ea dd 57 93 8b 38 f2 ..\.o.w....W..8. +0x03d0: 8a 45 f5 d3 01 c1 9b a5 79 21 45 36 4f c6 f6 83 .E......y!E6O... +0x03e0: bc ba 1d e5 06 c1 8e 69 4c b6 e2 99 35 17 a1 ca .......iL...5... +0x03f0: f0 d2 82 d9 a5 b0 3e 64 00 00 00 01 00 00 00 43 ......>d.......C +0x0400: 32 35 35 b4 e2 9f fc ab 17 f2 4a b4 e2 9f fc ab 255.......J..... +0x0410: 17 f2 4a 00 00 f0 00 00 00 60 00 53 43 46 47 06 ..J......`.SCFG. +0x0420: 00 00 00 41 45 41 44 08 00 00 00 53 43 49 44 18 ...AEAD....SCID. +0x0430: 00 00 00 50 55 42 53 3b 00 00 00 4b 45 58 53 3f ...PUBS;...KEXS? +0x0440: 00 00 00 4f 42 49 54 47 00 00 00 45 58 50 59 4f ...OBITG...EXPYO +0x0450: 00 00 00 41 45 53 47 43 43 32 30 08 68 02 10 36 ...AESGCC20.h..6 +0x0460: fa fb 68 b3 8a aa a4 e7 96 41 ca 20 00 00 f6 00 ..h......A...... +0x0470: dd 9e 3e 30 4f d9 fb 26 77 4e ce 35 79 6d 98 6d ..>0O..&wN.5ym.m +0x0480: 9a e6 a5 19 c0 b8 72 66 cd 46 b1 b6 90 4a 43 32 ......rf.F...JC2 +0x0490: 35 35 a5 d0 b3 7f 65 c3 cd 6b c8 2a 65 59 00 00 55....e..k.*eY.. +0x04a0: 00 00 30 82 03 b4 30 82 02 9c a0 03 02 01 02 02 ..0...0......... +0x04b0: 01 01 30 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 ..0...*.H....... +0x04c0: 00 30 1e 31 1c 30 1a 06 03 55 04 03 0c 13 51 55 .0.1.0...U....QU +0x04d0: 49 43 20 53 65 72 76 65 72 20 52 6f 6f 74 20 43 IC.Server.Root.C +0x04e0: 41 30 1e 17 0d 31 36 31 32 32 32 32 31 32 39 30 A0...16122221290 +0x04f0: 34 5a 17 0d 31 36 31 32 32 35 32 31 32 39 30 34 4Z..161225212904 +0x0500: 5a 30 64 31 0b 30 09 06 03 55 04 06 13 02 55 53 Z0d1.0...U....US +0x0510: 31 13 30 11 06 03 55 04 08 0c 0a 43 61 6c 69 66 1.0...U....Calif +0x0520: 6f 72 6e 69 61 31 16 30 14 06 03 55 04 07 0c 0d ornia1.0...U.... +0x0530: 4d 6f 75 6e 74 61 69 6e 20 56 69 65 77 31 14 30 Mountain.View1.0 +0x0540: 12 06 03 55 04 0a 0c 0b 51 55 49 43 20 53 65 72 ...U....QUIC.Ser +0x0550: 76 65 72 31 12 30 10 06 03 55 04 03 0c 09 31 32 ver1.0...U....12 +0x0560: 37 2e 30 2e 30 2e 31 30 82 01 22 30 0d 06 09 2a 7.0.0.10.."0...* +0x0570: 86 48 86 f7 0d 01 01 01 05 00 03 82 01 0f 00 30 .H.............0 +0x0580: 82 01 0a 02 82 01 01 00 f0 55 bf b6 81 96 69 f3 .........U....i. +0x0590: 7a 06 f7 68 89 af fe 9c 30 e9 bb e7 0d 9b 37 c1 z..h....0.....7. +0x05a0: f6 a0 b8 28 72 bc 53 8e 8c 2c 99 a0 63 fe 7e 84 ...(r.S..,..c.~. +0x05b0: cb 35 11 96 24 98 20 ee 22 59 53 61 47 aa bc 66 .5..$..."YSaG..f +0x05c0: 8f 05 4f ec b6 a7 9c 3c fb de a7 24 3f d8 fd 97 ..O....<...$?... +0x05d0: a8 79 50 80 86 11 3a a8 a4 1e fa 7b 1e cf 4b 5c .yP...:....{..K\ +0x05e0: 7e 1c 23 5b b2 e1 d4 d7 ca 32 6e 4c 74 01 42 f0 ~.#[.....2nLt.B. +0x05f0: 36 14 09 f8 c7 22 6f 13 69 4a 32 9d e1 33 36 1b 6...."o.iJ2..36. +0x0600: e6 4d 74 6c b8 fa 49 f0 9a 0d 81 9f c6 b8 88 79 .Mtl..I........y +0x0610: 70 6c 0c 1c fb f9 70 27 e8 c1 c7 dd ba d0 97 f9 pl....p'........ +0x0620: ca 1a 1f 24 64 3b f7 3d 4c 67 b1 e2 87 07 f9 a2 ...$d;.=Lg...... +0x0630: b8 d5 82 06 80 cd 1f 97 ca 4b 39 87 4f 0a b7 a7 .........K9.O... +0x0640: 36 cf f2 fe 08 7b 46 7d 25 61 f5 ec 18 13 f5 e1 6....{F}%a...... +0x0650: 4b a9 eb ec a8 53 7f ad 66 19 fb 22 70 cc fa df K....S..f.."p... +0x0660: 64 da f4 b1 07 17 3d b0 0f d7 0d df fe e8 9b 3a d.....=........: +0x0670: 86 fc a0 85 d1 03 a3 4d 89 9c cc de c6 c6 de 9a .......M........ +0x0680: d0 f3 7f 6d 1d 0a 8e 27 02 03 01 00 01 a3 81 b6 ...m...'........ +0x0690: 30 81 b3 30 0c 06 03 55 1d 13 01 01 ff 04 02 30 0..0...U.......0 +0x06a0: 00 30 1d 06 03 55 1d 0e 04 16 04 14 1a 79 b5 96 .0...U.......y.. +0x06b0: b0 18 f3 1a 21 fd 8c 82 30 b9 af 94 60 d1 62 fe ....!...0...`.b. +0x06c0: 30 1f 06 03 55 1d 23 04 18 30 16 80 14 f2 38 71 0...U.#..0....8q +0x06d0: 39 4b 66 26 ac 8c 4b 3e cc 03 88 d7 55 1f aa 5d 9Kf&..K>....U..] +0x06e0: 92 30 1d 06 03 55 1d 25 04 16 30 14 06 08 2b 06 .0...U.%..0...+. +0x06f0: 01 05 05 07 03 01 06 08 2b 06 01 05 05 07 03 02 ........+....... +0x0700: 30 44 06 03 55 1d 11 04 3d 30 3b 82 0f 77 77 77 0D..U...=0;..www +0x0710: 2e 65 78 61 6d 70 6c 65 2e 6f 72 67 82 10 6d 61 .example.org..ma +0x0720: 69 6c 2e 65 78 61 6d 70 6c 65 2e 6f 72 67 82 10 il.example.org.. +0x0730: 6d 61 69 6c 2e 65 78 61 6d 70 6c 65 2e 63 6f 6d mail.example.com +0x0740: 87 04 7f 00 00 01 30 0d 06 09 2a 86 48 86 f7 0d ......0...*.H... +0x0750: 01 01 0b 05 00 03 82 01 01 00 68 24 9a 07 f7 b8 ..........h$.... +0x0760: 7d 96 ef fd e5 0c 7c 2c 31 a8 95 e2 fa 05 a7 3e }.....|,1......> +0x0770: 98 3b 77 3c 0a e1 a2 16 51 7f 58 43 82 6c c4 66 .;w<....Q.XC.l.f +0x0780: f3 88 26 17 bd e5 d3 b1 84 2a b7 cf e1 d1 b2 85 ..&......*...... +0x0790: 3b fc 20 1a df 1d 24 f5 dc 58 b7 ef 36 72 9f d7 ;.....$..X..6r.. +0x07a0: da c5 f4 46 08 4b 17 64 99 1a b1 1e de 68 00 74 ...F.K.d.....h.t +0x07b0: 4c 1a 7c 55 b9 7f c3 2d fa 58 3b 6b 93 5a 0a 43 L.|U...-.X;k.Z.C +0x07c0: e3 41 4e 4e 5c 2c a6 0c cf 17 c4 86 ea 58 37 a2 .ANN\,.......X7. +0x07d0: 40 de 22 eb ad 07 77 05 cb 57 df 49 56 96 f7 d4 @."...w..W.IV... +0x07e0: a6 9a ac 65 c9 2e 0e dc 53 14 6c 1d 41 68 22 8d ...e....S.l.Ah". +0x07f0: 1f 40 49 6d b2 a7 6c 26 a5 60 52 a7 aa 8a 57 0c .@Im..l&.`R...W. +0x0800: d6 45 54 5b 18 75 00 c2 cb 64 ae 66 45 0d 96 67 .ET[.u...d.fE..g +0x0810: 0b 6d 11 c6 51 b5 2b e3 e8 68 2d 60 91 b0 bc 3c .m..Q.+..h-`...< +0x0820: 03 69 99 06 9f 16 e4 a8 b9 8c ac 04 9f 1f e9 0a .i.............. +0x0830: 81 eb 60 ae 27 6d 87 f7 0b cf 9c bb 1a db 15 8a ..`.'m.......... +0x0840: 92 08 28 5a ac 9d 37 2c 35 f2 c1 bb e6 01 4a f6 ..(Z..7,5.....J. +0x0850: 4b 67 f5 ec 1f 1f a7 04 9b 21 Kg.......! + +[0112/144522.378102:VERBOSE4:hkdf.cc(103)] PRK: +0x0000: 76 54 6a 15 79 39 65 66 5c 63 0d a9 85 d9 f8 89 vTj.y9ef\c...... +0x0010: a7 a5 c5 41 62 e0 6c 26 fb 42 32 30 3d 0a 32 80 ...Ab.l&.B20=.2. + +[0112/144522.378351:VERBOSE4:hkdf.cc(149)] client key: +0x0000: 52 79 c1 44 f0 8d 83 99 6b f3 b6 83 11 ff 31 25 Ry.D....k.....1% +0x0010: 86 79 d6 af 62 bc b3 71 1d 7e fa 71 35 9f f2 aa .y..b..q.~.q5... + +[0112/144522.378422:VERBOSE4:hkdf.cc(156)] server key: +0x0000: bf 3d 5e 92 6e 8f 09 15 3f 0b f3 0b 91 e8 84 50 .=^.n...?......P +0x0010: 73 33 81 86 be 9c 32 56 d7 b2 6a 57 67 80 46 fd s3....2V..jWg.F. + +[0112/144522.378489:VERBOSE4:hkdf.cc(163)] client IV: +0x0000: a1 c0 66 60 ..f` + +[0112/144522.378549:VERBOSE4:hkdf.cc(170)] server IV: +0x0000: fa 93 8b 39 ...9 + +[0112/144522.378594:VERBOSE4:hkdf.cc(176)] subkey secret: +0x0000: 55 3a eb 1e 23 82 a7 6b a6 22 a9 c8 23 7d c7 11 U:..#..k."..#}.. +0x0010: 7e 35 ca c8 c8 26 8c 36 cb 75 78 18 58 c5 d3 3a ~5...&.6.ux.X..: +*/ + { + .ekt_lineno = __LINE__, + BUF_PAIR(ikm, + "\xab\x62\xc8\xe1\x03\x63\xb5\x4e\xb9\xc5\xe4\xf1\xd9\x47\xed\x60" + "\x43\x2f\x3b\xc2\x27\xc3\x2c\x51\xe7\x7f\xe7\x4b\x5e\xa4\x08\x29" + ), + BUF_PAIR(salt, + "\x58\x77\xdc\xd2\xa5\xd0\xb3\x7f\x65\xc3\xcd\x6b\x03\xa7\x34\x53" + "\xd7\x8b\x6e\x56\x3c\xa0\x22\xa2\xab\x7a\x1e\x4c\x40\xe9\xcf\xd6" + "\x02\x2e\xef\xd3\x08\xbc\xd1\xbe\xcb\x70\xf1\x92\x8e\xec\x27\x7b" + "\xb6\xb5\x27\xce\xea\x43\x7d\xc2\x34\xb7\xbe\x44\xa3\x89\x70\x9a" + "\x62\x65\x46\xfa\xe5\x86\x44\x04\xfb\x66\x22\x2d\x7c\x07\xb8\xb8" + ), + BUF_PAIR(context, + "\x51\x55\x49\x43\x20\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69" + "\x6f\x6e\x00\xa8\x9f\x60\xa0\x05\xe6\x1a\x02\x43\x48\x4c\x4f\x18" + "\x00\x00\x00\x50\x41\x44\x00\x01\x02\x00\x00\x53\x4e\x49\x00\x10" + "\x02\x00\x00\x53\x54\x4b\x00\x44\x02\x00\x00\x53\x4e\x4f\x00\x74" + "\x02\x00\x00\x56\x45\x52\x00\x78\x02\x00\x00\x43\x43\x53\x00\x88" + "\x02\x00\x00\x4e\x4f\x4e\x43\xa8\x02\x00\x00\x4d\x53\x50\x43\xac" + "\x02\x00\x00\x41\x45\x41\x44\xb0\x02\x00\x00\x53\x43\x49\x44\xc0" + "\x02\x00\x00\x50\x44\x4d\x44\xc4\x02\x00\x00\x53\x4d\x48\x4c\xc8" + "\x02\x00\x00\x49\x43\x53\x4c\xcc\x02\x00\x00\x43\x54\x49\x4d\xd4" + "\x02\x00\x00\x4e\x4f\x4e\x50\xf4\x02\x00\x00\x50\x55\x42\x53\x14" + "\x03\x00\x00\x4d\x49\x44\x53\x18\x03\x00\x00\x53\x43\x4c\x53\x1c" + "\x03\x00\x00\x4b\x45\x58\x53\x20\x03\x00\x00\x58\x4c\x43\x54\x28" + "\x03\x00\x00\x43\x53\x43\x54\x28\x03\x00\x00\x43\x43\x52\x54\x30" + "\x03\x00\x00\x43\x46\x43\x57\x34\x03\x00\x00\x53\x46\x43\x57\x38" + "\x03\x00\x00\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d" + "\x2d\x2d\x2d\x2d\x77\x77\x77\x2e\x65\x78\x61\x6d\x70\x6c\x65\x2e" + "\x6f\x72\x67\x2f\x22\xe6\x5d\xe0\xf8\x78\x94\x5a\x23\x2d\xba\xb4" + "\xd7\xe8\xaa\x1a\x46\x21\x20\x20\x94\x7f\x0d\x7a\x5e\x2e\x41\x98" + "\x66\x0e\x44\x88\xeb\xf3\x41\xc5\xb1\xe2\x65\xa7\x38\x01\x3c\x2c" + "\x0d\xeb\x00\x2b\x73\x48\xda\x02\x2e\xef\xd3\x08\xbc\xd1\xbe\xcb" + "\x70\xf1\x92\x8e\xec\x27\x7b\xb6\xb5\x27\xce\xea\x43\x7d\xc2\x34" + "\xb7\xbe\x44\xa3\x89\x70\x9a\x62\x65\x46\xfa\xe5\x86\x44\x04\xfb" + "\x66\x22\x2d\x7c\x07\xb8\xb8\x51\x30\x33\x37\x01\xe8\x81\x60\x92" + "\x92\x1a\xe8\x7e\xed\x80\x86\xa2\x15\x82\x91\x58\x77\xdc\xd2\xa5" + "\xd0\xb3\x7f\x65\xc3\xcd\x6b\x03\xa7\x34\x53\xd7\x8b\x6e\x56\x3c" + "\xa0\x22\xa2\xab\x7a\x1e\x4c\x40\xe9\xcf\xd6\x64\x00\x00\x00\x43" + "\x43\x32\x30\x08\x68\x02\x10\x36\xfa\xfb\x68\xb3\x8a\xaa\xa4\xe7" + "\x96\x41\xca\x58\x35\x30\x39\x01\x00\x00\x00\x58\x02\x00\x00\xd2" + "\xdc\x77\x58\x00\x00\x00\x00\x2d\xc8\x07\x0e\x2a\x4b\x39\x15\xae" + "\x98\x1f\x5c\xb1\x6f\xac\x77\x0e\xf7\xea\xdd\x57\x93\x8b\x38\xf2" + "\x8a\x45\xf5\xd3\x01\xc1\x9b\xa5\x79\x21\x45\x36\x4f\xc6\xf6\x83" + "\xbc\xba\x1d\xe5\x06\xc1\x8e\x69\x4c\xb6\xe2\x99\x35\x17\xa1\xca" + "\xf0\xd2\x82\xd9\xa5\xb0\x3e\x64\x00\x00\x00\x01\x00\x00\x00\x43" + "\x32\x35\x35\xb4\xe2\x9f\xfc\xab\x17\xf2\x4a\xb4\xe2\x9f\xfc\xab" + "\x17\xf2\x4a\x00\x00\xf0\x00\x00\x00\x60\x00\x53\x43\x46\x47\x06" + "\x00\x00\x00\x41\x45\x41\x44\x08\x00\x00\x00\x53\x43\x49\x44\x18" + "\x00\x00\x00\x50\x55\x42\x53\x3b\x00\x00\x00\x4b\x45\x58\x53\x3f" + "\x00\x00\x00\x4f\x42\x49\x54\x47\x00\x00\x00\x45\x58\x50\x59\x4f" + "\x00\x00\x00\x41\x45\x53\x47\x43\x43\x32\x30\x08\x68\x02\x10\x36" + "\xfa\xfb\x68\xb3\x8a\xaa\xa4\xe7\x96\x41\xca\x20\x00\x00\xf6\x00" + "\xdd\x9e\x3e\x30\x4f\xd9\xfb\x26\x77\x4e\xce\x35\x79\x6d\x98\x6d" + "\x9a\xe6\xa5\x19\xc0\xb8\x72\x66\xcd\x46\xb1\xb6\x90\x4a\x43\x32" + "\x35\x35\xa5\xd0\xb3\x7f\x65\xc3\xcd\x6b\xc8\x2a\x65\x59\x00\x00" + "\x00\x00\x30\x82\x03\xb4\x30\x82\x02\x9c\xa0\x03\x02\x01\x02\x02" + "\x01\x01\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05" + "\x00\x30\x1e\x31\x1c\x30\x1a\x06\x03\x55\x04\x03\x0c\x13\x51\x55" + "\x49\x43\x20\x53\x65\x72\x76\x65\x72\x20\x52\x6f\x6f\x74\x20\x43" + "\x41\x30\x1e\x17\x0d\x31\x36\x31\x32\x32\x32\x32\x31\x32\x39\x30" + "\x34\x5a\x17\x0d\x31\x36\x31\x32\x32\x35\x32\x31\x32\x39\x30\x34" + "\x5a\x30\x64\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53" + "\x31\x13\x30\x11\x06\x03\x55\x04\x08\x0c\x0a\x43\x61\x6c\x69\x66" + "\x6f\x72\x6e\x69\x61\x31\x16\x30\x14\x06\x03\x55\x04\x07\x0c\x0d" + "\x4d\x6f\x75\x6e\x74\x61\x69\x6e\x20\x56\x69\x65\x77\x31\x14\x30" + "\x12\x06\x03\x55\x04\x0a\x0c\x0b\x51\x55\x49\x43\x20\x53\x65\x72" + "\x76\x65\x72\x31\x12\x30\x10\x06\x03\x55\x04\x03\x0c\x09\x31\x32" + "\x37\x2e\x30\x2e\x30\x2e\x31\x30\x82\x01\x22\x30\x0d\x06\x09\x2a" + "\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30" + "\x82\x01\x0a\x02\x82\x01\x01\x00\xf0\x55\xbf\xb6\x81\x96\x69\xf3" + "\x7a\x06\xf7\x68\x89\xaf\xfe\x9c\x30\xe9\xbb\xe7\x0d\x9b\x37\xc1" + "\xf6\xa0\xb8\x28\x72\xbc\x53\x8e\x8c\x2c\x99\xa0\x63\xfe\x7e\x84" + "\xcb\x35\x11\x96\x24\x98\x20\xee\x22\x59\x53\x61\x47\xaa\xbc\x66" + "\x8f\x05\x4f\xec\xb6\xa7\x9c\x3c\xfb\xde\xa7\x24\x3f\xd8\xfd\x97" + "\xa8\x79\x50\x80\x86\x11\x3a\xa8\xa4\x1e\xfa\x7b\x1e\xcf\x4b\x5c" + "\x7e\x1c\x23\x5b\xb2\xe1\xd4\xd7\xca\x32\x6e\x4c\x74\x01\x42\xf0" + "\x36\x14\x09\xf8\xc7\x22\x6f\x13\x69\x4a\x32\x9d\xe1\x33\x36\x1b" + "\xe6\x4d\x74\x6c\xb8\xfa\x49\xf0\x9a\x0d\x81\x9f\xc6\xb8\x88\x79" + "\x70\x6c\x0c\x1c\xfb\xf9\x70\x27\xe8\xc1\xc7\xdd\xba\xd0\x97\xf9" + "\xca\x1a\x1f\x24\x64\x3b\xf7\x3d\x4c\x67\xb1\xe2\x87\x07\xf9\xa2" + "\xb8\xd5\x82\x06\x80\xcd\x1f\x97\xca\x4b\x39\x87\x4f\x0a\xb7\xa7" + "\x36\xcf\xf2\xfe\x08\x7b\x46\x7d\x25\x61\xf5\xec\x18\x13\xf5\xe1" + "\x4b\xa9\xeb\xec\xa8\x53\x7f\xad\x66\x19\xfb\x22\x70\xcc\xfa\xdf" + "\x64\xda\xf4\xb1\x07\x17\x3d\xb0\x0f\xd7\x0d\xdf\xfe\xe8\x9b\x3a" + "\x86\xfc\xa0\x85\xd1\x03\xa3\x4d\x89\x9c\xcc\xde\xc6\xc6\xde\x9a" + "\xd0\xf3\x7f\x6d\x1d\x0a\x8e\x27\x02\x03\x01\x00\x01\xa3\x81\xb6" + "\x30\x81\xb3\x30\x0c\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x02\x30" + "\x00\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x1a\x79\xb5\x96" + "\xb0\x18\xf3\x1a\x21\xfd\x8c\x82\x30\xb9\xaf\x94\x60\xd1\x62\xfe" + "\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\xf2\x38\x71" + "\x39\x4b\x66\x26\xac\x8c\x4b\x3e\xcc\x03\x88\xd7\x55\x1f\xaa\x5d" + "\x92\x30\x1d\x06\x03\x55\x1d\x25\x04\x16\x30\x14\x06\x08\x2b\x06" + "\x01\x05\x05\x07\x03\x01\x06\x08\x2b\x06\x01\x05\x05\x07\x03\x02" + "\x30\x44\x06\x03\x55\x1d\x11\x04\x3d\x30\x3b\x82\x0f\x77\x77\x77" + "\x2e\x65\x78\x61\x6d\x70\x6c\x65\x2e\x6f\x72\x67\x82\x10\x6d\x61" + "\x69\x6c\x2e\x65\x78\x61\x6d\x70\x6c\x65\x2e\x6f\x72\x67\x82\x10" + "\x6d\x61\x69\x6c\x2e\x65\x78\x61\x6d\x70\x6c\x65\x2e\x63\x6f\x6d" + "\x87\x04\x7f\x00\x00\x01\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d" + "\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x68\x24\x9a\x07\xf7\xb8" + "\x7d\x96\xef\xfd\xe5\x0c\x7c\x2c\x31\xa8\x95\xe2\xfa\x05\xa7\x3e" + "\x98\x3b\x77\x3c\x0a\xe1\xa2\x16\x51\x7f\x58\x43\x82\x6c\xc4\x66" + "\xf3\x88\x26\x17\xbd\xe5\xd3\xb1\x84\x2a\xb7\xcf\xe1\xd1\xb2\x85" + "\x3b\xfc\x20\x1a\xdf\x1d\x24\xf5\xdc\x58\xb7\xef\x36\x72\x9f\xd7" + "\xda\xc5\xf4\x46\x08\x4b\x17\x64\x99\x1a\xb1\x1e\xde\x68\x00\x74" + "\x4c\x1a\x7c\x55\xb9\x7f\xc3\x2d\xfa\x58\x3b\x6b\x93\x5a\x0a\x43" + "\xe3\x41\x4e\x4e\x5c\x2c\xa6\x0c\xcf\x17\xc4\x86\xea\x58\x37\xa2" + "\x40\xde\x22\xeb\xad\x07\x77\x05\xcb\x57\xdf\x49\x56\x96\xf7\xd4" + "\xa6\x9a\xac\x65\xc9\x2e\x0e\xdc\x53\x14\x6c\x1d\x41\x68\x22\x8d" + "\x1f\x40\x49\x6d\xb2\xa7\x6c\x26\xa5\x60\x52\xa7\xaa\x8a\x57\x0c" + "\xd6\x45\x54\x5b\x18\x75\x00\xc2\xcb\x64\xae\x66\x45\x0d\x96\x67" + "\x0b\x6d\x11\xc6\x51\xb5\x2b\xe3\xe8\x68\x2d\x60\x91\xb0\xbc\x3c" + "\x03\x69\x99\x06\x9f\x16\xe4\xa8\xb9\x8c\xac\x04\x9f\x1f\xe9\x0a" + "\x81\xeb\x60\xae\x27\x6d\x87\xf7\x0b\xcf\x9c\xbb\x1a\xdb\x15\x8a" + "\x92\x08\x28\x5a\xac\x9d\x37\x2c\x35\xf2\xc1\xbb\xe6\x01\x4a\xf6" + "\x4b\x67\xf5\xec\x1f\x1f\xa7\x04\x9b\x21" + ), + BUF_PAIR(client_key, + "\x52\x79\xc1\x44\xf0\x8d\x83\x99\x6b\xf3\xb6\x83\x11\xff\x31\x25" + "\x86\x79\xd6\xaf\x62\xbc\xb3\x71\x1d\x7e\xfa\x71\x35\x9f\xf2\xaa" + ), + BUF_PAIR(server_key, + "\xbf\x3d\x5e\x92\x6e\x8f\x09\x15\x3f\x0b\xf3\x0b\x91\xe8\x84\x50" + "\x73\x33\x81\x86\xbe\x9c\x32\x56\xd7\xb2\x6a\x57\x67\x80\x46\xfd" + ), + BUF_PAIR(client_iv, "\xa1\xc0\x66\x60"), + BUF_PAIR(server_iv, "\xfa\x93\x8b\x39"), +/* +[0112/144522.378594:VERBOSE4:hkdf.cc(176)] subkey secret: +"\x55\x3a\xeb\x1e\x23\x82\xa7\x6b\xa6\x22\xa9\xc8\x23\x7d\xc7\x11" +"\x7e\x35\xca\xc8\xc8\x26\x8c\x36\xcb\x75\x78\x18\x58\xc5\xd3\x3a" +*/ + }, + + +}; + + +static void +run_ekt_test (const struct export_key_test *test) +{ + int s, i; + + unsigned char client_key[0x100], + server_key[0x100], + client_iv[0x100], + server_iv[0x100]; + + unsigned char sub_key[32]; + unsigned char c_hp[16], s_hp[16]; + + /* Sanity check the test itself: */ + assert(test->ekt_client_key_sz < sizeof(client_key)); + assert(test->ekt_server_key_sz < sizeof(server_key)); + assert(test->ekt_server_iv_sz < sizeof(server_iv)); + assert(test->ekt_client_iv_sz < sizeof(client_iv)); + + for (i = 0; i < 2; ++i) + { + if (i && !(test->ekt_ikm_sz == 32 && test->ekt_client_key_sz == 16 && test->ekt_server_key_sz == 16)) + continue; + s = lsquic_export_key_material(test->ekt_ikm, (uint32_t)test->ekt_ikm_sz, + test->ekt_salt, (int)test->ekt_salt_sz, + test->ekt_context, (uint32_t)test->ekt_context_sz, + (uint16_t)test->ekt_client_key_sz, client_key, + (uint16_t)test->ekt_server_key_sz, server_key, + (uint16_t)test->ekt_client_iv_sz, client_iv, + (uint16_t)test->ekt_server_iv_sz, server_iv, + sub_key, + /* Keys should not change because HP pointers are given */ + i ? c_hp : NULL, + i ? s_hp : NULL + ); + assert(0 == s); /* This function always returns zero */ + if (test->ekt_client_key_sz) + assert(0 == memcmp(client_key, test->ekt_client_key, + test->ekt_client_key_sz)); + if (test->ekt_server_key_sz) + assert(0 == memcmp(server_key, test->ekt_server_key, + test->ekt_server_key_sz)); + } +} + + +int +main (void) +{ + unsigned n; + for (n = 0; n < sizeof(tests) / sizeof(tests[0]); ++n) + run_ekt_test(&tests[n]); + return 0; +} diff --git a/external/lsquic/tests/test_frame_chop.c b/external/lsquic/tests/test_frame_chop.c new file mode 100644 index 0000000..518b849 --- /dev/null +++ b/external/lsquic/tests/test_frame_chop.c @@ -0,0 +1,219 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * Write several things to HEADERS stream and check the results. What + * varies is the amount of bytes that are written to stream every time. + * This will exercise buffering in frame writer and verify that contents + * are written out correctly no matter where frab writing leaves off + * and picks up. + */ + +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include +#endif +#include + +#include "lsquic.h" +#include "lshpack.h" +#include "lsquic_logger.h" +#include "lsquic_mm.h" +#include "lsquic_frame_common.h" +#include "lsquic_frame_writer.h" +#include "lsquic_frame_reader.h" +#if LSQUIC_CONN_STATS +#include "lsquic_int_types.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#endif + + +struct lsquic_stream +{ + size_t sm_write_off, + sm_buf_sz; /* Number of bytes allocated */ + size_t sm_max_write; + size_t sm_read_off; + unsigned char *sm_buf; +}; + + +static struct lsquic_stream * +stream_new (size_t max_write) +{ + struct lsquic_stream *stream = calloc(1, sizeof(*stream)); + stream->sm_max_write = max_write; + return stream; +} + + +static void +stream_destroy (struct lsquic_stream *stream) +{ + free(stream->sm_buf); + free(stream); +} + + +#define reset_output(max_) do { \ + output.sz = 0; \ + if (max_) \ + output.max = max_; \ + else \ + output.max = sizeof(output.buf);\ +} while (0) + + +static ssize_t +stream_write (struct lsquic_stream *stream, struct lsquic_reader *reader) +{ + size_t sz; + + sz = reader->lsqr_size(reader->lsqr_ctx); + if (sz > stream->sm_max_write) + sz = stream->sm_max_write; + if (stream->sm_write_off + sz > stream->sm_buf_sz) + { + if (stream->sm_write_off + sz < stream->sm_buf_sz * 2) + stream->sm_buf_sz *= 2; + else + stream->sm_buf_sz = stream->sm_write_off + sz; + stream->sm_buf = realloc(stream->sm_buf, stream->sm_buf_sz); + } + + sz = reader->lsqr_read(reader->lsqr_ctx, + stream->sm_buf + stream->sm_write_off, sz); + stream->sm_write_off += sz; + + return sz; +} + + +#define XHDR(name_, value_) .buf = name_ value_, .name_offset = 0, .name_len = sizeof(name_) - 1, .val_offset = sizeof(name_) - 1, .val_len = sizeof(value_) - 1, + + +static void +test_chop (unsigned max_write_sz) +{ + struct lsquic_frame_writer *fw; + struct lsquic_stream *stream; + struct lsquic_mm mm; + struct lshpack_enc henc; + int s; + +#if LSQUIC_CONN_STATS + struct conn_stats conn_stats; + memset(&conn_stats, 0, sizeof(conn_stats)); +#endif + + lsquic_mm_init(&mm); + lshpack_enc_init(&henc); + stream = stream_new(max_write_sz); + + fw = lsquic_frame_writer_new(&mm, stream, 0, &henc, stream_write, +#if LSQUIC_CONN_STATS + &conn_stats, +#endif + 0); + + struct lsxpack_header header_arr[] = + { + { XHDR(":status", "302") }, + }; + + struct lsquic_http_headers headers = { + .count = 1, + .headers = header_arr, + }; + + s = lsquic_frame_writer_write_headers(fw, 12345, &headers, 0, 100); + assert(0 == s); + + struct lsquic_http2_setting settings[] = { { 1, 2, }, { 3, 4, } }; + s = lsquic_frame_writer_write_settings(fw, settings, 2); + assert(0 == s); + + /* TODO: server must not send priority frames, add a check for that + * error condition. + */ + s = lsquic_frame_writer_write_priority(fw, 3, 0, 1, 256); + assert(0 == s); + + while (lsquic_frame_writer_have_leftovers(fw)) + { + s = lsquic_frame_writer_flush(fw); + assert(0 == s); + } + + const unsigned char expected_buf[] = { + /* Length: */ 0x00, 0x00, 0x09, + /* Type: */ HTTP_FRAME_HEADERS, + /* Flags: */ HFHF_END_HEADERS|HFHF_PRIORITY, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Dep stream id: */0x00, 0x00, 0x00, 0x00, + /* Weight: */ 100 - 1, + /* Block fragment: */ + 0x48, 0x82, 0x64, 0x02, + /* Length: */ 0x00, 0x00, 0x0C, + /* Type: */ HTTP_FRAME_SETTINGS, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x00, 0x00, + /* Payload: */ 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, + /* Length: */ 0x00, 0x00, 5, + /* Type: */ HTTP_FRAME_PRIORITY, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x00, 0x03, + /* Dep stream Id: */0x00, 0x00, 0x00, 0x01, + /* Weight: */ 0xFF, + }; + + assert(stream->sm_write_off == sizeof(expected_buf)); + assert(0 == memcmp(stream->sm_buf, expected_buf, sizeof(expected_buf))); + + lsquic_frame_writer_destroy(fw); + stream_destroy(stream); + lshpack_enc_cleanup(&henc); + lsquic_mm_cleanup(&mm); +} + + +int +main (int argc, char **argv) +{ + const unsigned write_sizes[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 20, + 30, 100, 200, 255, 0xFFF, 0x1000, 0x100D, + UINT_MAX, }; + unsigned i; + int opt, max_write_sz = -1; + + while (-1 != (opt = getopt(argc, argv, "l:s:"))) + { + switch (opt) + { + case 'l': + lsquic_log_to_fstream(stderr, LLTS_NONE); + lsquic_logger_lopt(optarg); + break; + case 's': + max_write_sz = atoi(optarg); + break; + default: + exit(1); + } + } + + if (-1 == max_write_sz) + for (i = 0; i < sizeof(write_sizes) / sizeof(write_sizes[0]); ++i) + test_chop(write_sizes[i]); + else + test_chop(max_write_sz); + + return 0; +} diff --git a/external/lsquic/tests/test_frame_reader.c b/external/lsquic/tests/test_frame_reader.c new file mode 100644 index 0000000..f2180ac --- /dev/null +++ b/external/lsquic/tests/test_frame_reader.c @@ -0,0 +1,1219 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include +#endif +#include + +#include "lsquic.h" +#include "lsquic_frame_common.h" +#include "lshpack.h" +#include "lsquic_mm.h" +#include "lsquic_int_types.h" +#include "lsquic_conn_flow.h" +#include "lsquic_sfcw.h" +#include "lsquic_rtt.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_stream.h" +#include "lsquic_conn_public.h" +#include "lsquic_logger.h" +#if LSQUIC_CONN_STATS +#include "lsquic_int_types.h" +#include "lsquic_conn.h" +#endif + +#include "lsquic_frame_reader.h" +#include "lsquic_headers.h" +#include "lsquic_http1x_if.h" + + +struct callback_value /* What callback returns */ +{ + enum { + CV_HEADERS, + CV_SETTINGS, + CV_PUSH_PROMISE, + CV_PRIORITY, + CV_ERROR, + } type; + unsigned stream_off; /* Checked only if not zero */ + union { + struct headers { + uint32_t stream_id; + uint32_t oth_stream_id; + unsigned short weight; + signed char exclusive; + unsigned char flags; + unsigned size; + unsigned off; + char buf[0x100]; + } headers; + struct { + uint16_t id; + uint32_t value; + } setting; + void *push_promise; + struct cv_error { + enum frame_reader_error code; + lsquic_stream_id_t stream_id; + } error; + struct cv_priority { + lsquic_stream_id_t stream_id; + int exclusive; + lsquic_stream_id_t dep_stream_id; + unsigned weight; + } priority; + } u; +}; + + +void +compare_headers (const struct headers *got_h, const struct headers *exp_h) +{ + assert(got_h->stream_id == exp_h->stream_id); + assert(got_h->oth_stream_id == exp_h->oth_stream_id); + assert(got_h->weight == exp_h->weight); + assert(got_h->exclusive == exp_h->exclusive); + assert(got_h->size == exp_h->size); + assert(strlen(got_h->buf) == got_h->size); + assert(got_h->off == exp_h->off); + assert(got_h->flags == exp_h->flags); + assert(0 == memcmp(got_h->buf, exp_h->buf, got_h->size)); +} + + +void +compare_push_promises (const struct headers *got_h, const struct headers *exp_h) +{ + assert(got_h->stream_id == exp_h->stream_id); + assert(got_h->oth_stream_id == exp_h->oth_stream_id); + assert(got_h->size == exp_h->size); + assert(strlen(got_h->buf) == got_h->size); + assert(got_h->off == exp_h->off); + assert(got_h->flags == exp_h->flags); + assert(0 == memcmp(got_h->buf, exp_h->buf, got_h->size)); +} + + +void +compare_priorities (const struct cv_priority *got_prio, + const struct cv_priority *exp_prio) +{ + assert(got_prio->stream_id == exp_prio->stream_id); + assert(got_prio->exclusive == exp_prio->exclusive); + assert(got_prio->dep_stream_id == exp_prio->dep_stream_id); + assert(got_prio->weight == exp_prio->weight); +} + + +void +compare_errors (const struct cv_error *got_err, + const struct cv_error *exp_err) +{ + assert(got_err->code == exp_err->code); + assert(got_err->stream_id == exp_err->stream_id); +} + + +static void +compare_cb_vals (const struct callback_value *got, + const struct callback_value *exp) +{ + assert(got->type == exp->type); + if (exp->stream_off) + assert(exp->stream_off == got->stream_off); + switch (got->type) + { + case CV_HEADERS: + compare_headers(&got->u.headers, &exp->u.headers); + break; + case CV_PUSH_PROMISE: + compare_push_promises(&got->u.headers, &exp->u.headers); + break; + case CV_ERROR: + compare_errors(&got->u.error, &exp->u.error); + break; + case CV_PRIORITY: + compare_priorities(&got->u.priority, &exp->u.priority); + break; + case CV_SETTINGS: + /* TODO */ + break; + } +} + + +static struct { + size_t in_sz; + size_t in_off; + size_t in_max_req_sz; + size_t in_max_sz; + unsigned char in_buf[0x1000]; +} input; + + +static struct cb_ctx { + unsigned n_cb_vals; + struct callback_value cb_vals[10]; +} g_cb_ctx; + + +static void +reset_cb_ctx (struct cb_ctx *cb_ctx) +{ + cb_ctx->n_cb_vals = 0; + memset(&cb_ctx->cb_vals, 0xA5, sizeof(cb_ctx->cb_vals)); +} + + +static void +copy_uh_to_headers (const struct uncompressed_headers *uh, struct headers *h) +{ + const struct http1x_headers *h1h = uh->uh_hset; + h->flags = uh->uh_flags; + h->weight = uh->uh_weight; + h->stream_id = uh->uh_stream_id; + h->exclusive = uh->uh_exclusive; + h->oth_stream_id = uh->uh_oth_stream_id; + h->size = h1h->h1h_size; + h->off = h1h->h1h_off; + memcpy(h->buf, h1h->h1h_buf, h->size); + h->buf[h->size] = '\0'; +} + + +static void +on_incoming_headers (void *ctx, struct uncompressed_headers *uh) +{ + struct cb_ctx *cb_ctx = ctx; + assert(cb_ctx == &g_cb_ctx); + unsigned i = cb_ctx->n_cb_vals++; + assert(i < sizeof(cb_ctx->cb_vals) / sizeof(cb_ctx->cb_vals[0])); + cb_ctx->cb_vals[i].type = CV_HEADERS; + cb_ctx->cb_vals[i].stream_off = input.in_off; + copy_uh_to_headers(uh, &cb_ctx->cb_vals[i].u.headers); + assert(uh->uh_flags & UH_H1H); + lsquic_http1x_if->hsi_discard_header_set(uh->uh_hset); + free(uh); +} + + +static void +on_push_promise (void *ctx, struct uncompressed_headers *uh) +{ + struct cb_ctx *cb_ctx = ctx; + assert(cb_ctx == &g_cb_ctx); + unsigned i = cb_ctx->n_cb_vals++; + assert(i < sizeof(cb_ctx->cb_vals) / sizeof(cb_ctx->cb_vals[0])); + cb_ctx->cb_vals[i].type = CV_PUSH_PROMISE; + cb_ctx->cb_vals[i].stream_off = input.in_off; + copy_uh_to_headers(uh, &cb_ctx->cb_vals[i].u.headers); + assert(uh->uh_flags & UH_H1H); + lsquic_http1x_if->hsi_discard_header_set(uh->uh_hset); + free(uh); +} + + +static void +on_error (void *ctx, lsquic_stream_id_t stream_id, enum frame_reader_error error) +{ + struct cb_ctx *cb_ctx = ctx; + assert(cb_ctx == &g_cb_ctx); + unsigned i = cb_ctx->n_cb_vals++; + assert(i < sizeof(cb_ctx->cb_vals) / sizeof(cb_ctx->cb_vals[0])); + cb_ctx->cb_vals[i].type = CV_ERROR; + cb_ctx->cb_vals[i].u.error.stream_id = stream_id; + cb_ctx->cb_vals[i].u.error.code = error; + cb_ctx->cb_vals[i].stream_off = input.in_off; +} + + +static void +on_settings (void *ctx, uint16_t id, uint32_t value) +{ + struct cb_ctx *cb_ctx = ctx; + assert(cb_ctx == &g_cb_ctx); + unsigned i = cb_ctx->n_cb_vals++; + assert(i < sizeof(cb_ctx->cb_vals) / sizeof(cb_ctx->cb_vals[0])); + cb_ctx->cb_vals[i].type = CV_SETTINGS; + cb_ctx->cb_vals[i].u.setting.id = id; + cb_ctx->cb_vals[i].u.setting.value = value; + cb_ctx->cb_vals[i].stream_off = input.in_off; +} + + +static void +on_priority (void *ctx, lsquic_stream_id_t stream_id, int exclusive, + lsquic_stream_id_t dep_stream_id, unsigned weight) +{ + struct cb_ctx *cb_ctx = ctx; + assert(cb_ctx == &g_cb_ctx); + unsigned i = cb_ctx->n_cb_vals++; + assert(i < sizeof(cb_ctx->cb_vals) / sizeof(cb_ctx->cb_vals[0])); + cb_ctx->cb_vals[i].type = CV_PRIORITY; + cb_ctx->cb_vals[i].u.priority.stream_id = stream_id; + cb_ctx->cb_vals[i].u.priority.exclusive = exclusive; + cb_ctx->cb_vals[i].u.priority.dep_stream_id = dep_stream_id; + cb_ctx->cb_vals[i].u.priority.weight = weight; + cb_ctx->cb_vals[i].stream_off = input.in_off; +} + + +static const struct frame_reader_callbacks frame_callbacks = { + .frc_on_headers = on_incoming_headers, + .frc_on_push_promise = on_push_promise, + .frc_on_settings = on_settings, + .frc_on_priority = on_priority, + .frc_on_error = on_error, +}; + + +static ssize_t +read_from_stream (struct lsquic_stream *stream, void *buf, size_t sz) +{ + if (sz > input.in_max_req_sz) + input.in_max_req_sz = sz; + if (input.in_sz - input.in_off < sz) + sz = input.in_sz - input.in_off; + if (sz > input.in_max_sz) + sz = input.in_max_sz; + memcpy(buf, input.in_buf + input.in_off, sz); + input.in_off += sz; + return sz; +} + + +struct frame_reader_test { + unsigned frt_lineno; + /* Input */ + enum frame_reader_flags frt_fr_flags; + unsigned char frt_buf[0x100]; + unsigned short frt_bufsz; + unsigned frt_max_headers_sz; + /* Output */ + unsigned short frt_in_off; + int frt_err; /* True if expecting error */ + unsigned frt_n_cb_vals; + struct callback_value frt_cb_vals[10]; +}; + + +#define HEADERS(str) .buf = (str), .size = sizeof(str) - 1 + +static const struct frame_reader_test tests[] = { + { .frt_lineno = __LINE__, + .frt_fr_flags = 0, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x04, + /* Type: */ 0x01, + /* Flags: */ HFHF_END_HEADERS, + 0x80| /* <----- This bit must be ignored */ + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Block fragment: */ + 0x48, 0x82, 0x64, 0x02, + }, + .frt_bufsz = 13, + .frt_n_cb_vals = 1, + .frt_cb_vals = { + { + .type = CV_HEADERS, + .u.headers = { + .stream_id = 12345, + .oth_stream_id = 0, + .weight = 0, + .exclusive = -1, + .off = 0, + .flags = UH_H1H, + HEADERS("HTTP/1.1 302 Found\r\n\r\n"), + }, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = 0, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x16, + /* Type: */ 0x01, + /* Flags: */ HFHF_END_HEADERS|HFHF_PADDED, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Padding length */0x11, + /* Block fragment: */ + 0x48, 0x82, 0x64, 0x02, + /* Padding: */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, + }, + .frt_bufsz = 9 + 1 + 4 + 17, + .frt_n_cb_vals = 1, + .frt_cb_vals = { + { + .type = CV_HEADERS, + .u.headers = { + .stream_id = 12345, + .oth_stream_id = 0, + .weight = 0, + .exclusive = -1, + .off = 0, + .flags = UH_H1H, + HEADERS("HTTP/1.1 302 Found\r\n\r\n"), + }, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = 0, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x1B, + /* Type: */ 0x01, + /* Flags: */ HFHF_END_HEADERS|HFHF_PADDED|HFHF_PRIORITY| + HFHF_END_STREAM, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Padding length */0x11, + /* Exclusive: */ 0x80| + /* Dep Stream Id: */ + 0x00, 0x00, 0x12, 0x34, + /* Weight: */ 0xFF, + /* Block fragment: */ + 0x48, 0x82, 0x64, 0x02, + /* Padding: */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, + /* Length: */ 0x00, 0x00, 0x05, + /* Type: */ HTTP_FRAME_PRIORITY, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x00, 0x39, + /* Dep Stream Id: */0x80, 0x00, 0x00, 0x19, + /* Weight: */ 0x77, + }, + .frt_bufsz = 9 + 1 + 5 + 4 + 17 + + 9 + 5, + .frt_n_cb_vals = 2, + .frt_cb_vals = { + { + .type = CV_HEADERS, + .u.headers = { + .stream_id = 12345, + .oth_stream_id = 0x1234, + .weight = 0xFF + 1, + .exclusive = 1, + .off = 0, + .flags = UH_FIN | UH_H1H, + HEADERS("HTTP/1.1 302 Found\r\n\r\n"), + }, + }, + { + .type = CV_PRIORITY, + .u.priority = { + .stream_id = 0x39, + .exclusive = 1, + .dep_stream_id = 0x19, + .weight = 0x77 + 1, + }, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = 0, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x09, + /* Type: */ 0x01, + /* Flags: */ HFHF_END_HEADERS|HFHF_PRIORITY, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Exclusive: */ 0x00| + /* Dep Stream Id: */ + 0x00, 0x00, 0x12, 0x34, + /* Weight: */ 0x00, + /* Block fragment: */ + 0x48, 0x82, 0x64, 0x02, + }, + .frt_bufsz = 9 + 5 + 4, + .frt_n_cb_vals = 1, + .frt_cb_vals = { + { + .type = CV_HEADERS, + .u.headers = { + .stream_id = 12345, + .oth_stream_id = 0x1234, + .weight = 1, + .exclusive = 0, + .off = 0, + .flags = UH_H1H, + HEADERS("HTTP/1.1 302 Found\r\n\r\n"), + }, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = 0, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x0E, + /* Type: */ 0x01, + /* Flags: */ HFHF_END_HEADERS|HFHF_PRIORITY, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Exclusive: */ 0x00| + /* Dep Stream Id: */ + 0x00, 0x00, 0x12, 0x34, + /* Weight: */ 0x00, + /* Block fragment: */ + 0x48, 0x82, 0x64, 0x02, + 0x60, 0x03, 0x61, 0x3d, 0x62, + }, + .frt_bufsz = 9 + 5 + 4 + 5, + .frt_n_cb_vals = 1, + .frt_cb_vals = { + { + .type = CV_HEADERS, + .u.headers = { + .stream_id = 12345, + .oth_stream_id = 0x1234, + .weight = 1, + .exclusive = 0, + .off = 0, + .flags = UH_H1H, + HEADERS("HTTP/1.1 302 Found\r\n" + "Cookie: a=b\r\n\r\n"), + }, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = 0, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x18, + /* Type: */ 0x01, + /* Flags: */ HFHF_END_HEADERS|HFHF_PRIORITY, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Exclusive: */ 0x00| + /* Dep Stream Id: */ + 0x00, 0x00, 0x12, 0x34, + /* Weight: */ 0x00, + /* Block fragment: */ + 0x48, 0x82, 0x64, 0x02, + 0x60, 0x03, 0x61, 0x3d, 0x62, + 0x60, 0x03, 0x63, 0x3d, 0x64, + 0x60, 0x03, 0x65, 0x3d, 0x66, + }, + .frt_bufsz = 9 + 5 + 4 + 15, + .frt_n_cb_vals = 1, + .frt_cb_vals = { + { + .type = CV_HEADERS, + .u.headers = { + .stream_id = 12345, + .oth_stream_id = 0x1234, + .weight = 1, + .exclusive = 0, + .off = 0, + .flags = UH_H1H, + HEADERS("HTTP/1.1 302 Found\r\n" + "Cookie: a=b; c=d; e=f\r\n\r\n"), + }, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = FRF_SERVER, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x16, + /* Type: */ 0x01, + /* Flags: */ HFHF_END_HEADERS|HFHF_PRIORITY, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Exclusive: */ 0x00| + /* Dep Stream Id: */ + 0x00, 0x00, 0x12, 0x34, + /* Weight: */ 0x00, + /* Block fragment: */ + 0x82, 0x84, 0x86, 0x41, 0x8c, 0xf1, 0xe3, 0xc2, + 0xe5, 0xf2, 0x3a, 0x6b, 0xa0, 0xab, 0x90, 0xf4, + 0xff, + /* Length: */ 0x00, 0x00, 0xEE, + /* Type: */ HTTP_FRAME_CONTINUATION, + /* Flags: */ HFHF_END_HEADERS, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Block fragment: */ + 'W', 'H', 'A', 'T', 'E', 'V', 'E', 'R', + }, + .frt_bufsz = 9 + 5 + 17 + + 9 + 0 + 8, + .frt_err = 1, + .frt_in_off = 9 + 5 + 17 + 9, + .frt_n_cb_vals = 1, + .frt_cb_vals = { + { + .type = CV_HEADERS, + .u.headers = { + .stream_id = 12345, + .oth_stream_id = 0x1234, + .weight = 1, + .exclusive = 0, + .off = 0, + .flags = UH_H1H, + HEADERS("GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"), + }, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = FRF_SERVER, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x16, + /* Type: */ 0x01, + /* Flags: */ HFHF_END_HEADERS|HFHF_PRIORITY, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Exclusive: */ 0x00| + /* Dep Stream Id: */ + 0x00, 0x00, 0x12, 0x34, + /* Weight: */ 0x00, + /* Block fragment: */ + 0x82, 0x84, 0x86, 0x41, 0x8c, 0xf1, 0xe3, 0xc2, + 0xe5, 0xf2, 0x3a, 0x6b, 0xa0, 0xab, 0x90, 0xf4, + 0xff, + /* Length: */ 0x00, 0x00, 0xEE, + /* Type: */ HTTP_FRAME_CONTINUATION, + /* Flags: */ HFHF_END_HEADERS, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Block fragment: */ + 'W', 'H', 'A', 'T', 'E', 'V', 'E', 'R', + }, + .frt_bufsz = 9 + 5 + 17 + + 9 + 0 + 8, + .frt_err = 1, + .frt_in_off = 9 + 5 + 17 + 9, + .frt_n_cb_vals = 1, + .frt_cb_vals = { + { + .type = CV_HEADERS, + .u.headers = { + .stream_id = 12345, + .oth_stream_id = 0x1234, + .weight = 1, + .exclusive = 0, + .off = 0, + .flags = UH_H1H, + HEADERS("GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"), + }, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = FRF_SERVER, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x16, + /* Type: */ 0x01, + /* Flags: */ HFHF_PRIORITY, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Exclusive: */ 0x00| + /* Dep Stream Id: */ + 0x00, 0x00, 0x12, 0x34, + /* Weight: */ 0x00, + /* Block fragment: */ + 0x82, 0x84, 0x86, 0x41, 0x8c, 0xf1, 0xe3, 0xc2, + 0xe5, 0xf2, 0x3a, 0x6b, 0xa0, 0xab, 0x90, 0xf4, + 0xff, + /* Length: */ 0x00, 0x00, 0xEE, + /* Type: */ HTTP_FRAME_CONTINUATION, + /* Flags: */ HFHF_END_HEADERS, + /* Stream Id: */ 0x00, 0xFF, 0x30, 0x39, /* Stream ID does not match */ + /* Block fragment: */ + 'W', 'H', 'A', 'T', 'E', 'V', 'E', 'R', + }, + .frt_bufsz = 9 + 5 + 17 + + 9 + 0 + 8, + .frt_err = 1, + .frt_in_off = 9 + 5 + 17 + 9, + .frt_n_cb_vals = 0, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = FRF_SERVER, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0xEE, + /* Type: */ HTTP_FRAME_CONTINUATION, + /* Flags: */ HFHF_END_HEADERS, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Block fragment: */ + 'W', 'H', 'A', 'T', 'E', 'V', 'E', 'R', + }, + .frt_bufsz = 9 + 0 + 8, + .frt_err = 1, + .frt_in_off = 9, + .frt_n_cb_vals = 0, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = FRF_SERVER, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x10, + /* Type: */ 0x01, + /* Flags: */ 0x00, /* Note absence of HFHF_END_HEADERS */ + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Block fragment: + * perl hpack.pl :method GET :path / host www.example.com + */ + 0x82, 0x84, 0x66, 0x8c, 0xf1, 0xe3, 0xc2, 0xe5, + 0xf2, 0x3a, 0x6b, 0xa0, 0xab, 0x90, 0xf4, 0xff, + /* Length: */ 0x00, 0x00, 0x08, + /* Type: */ 0x01, + /* Flags: */ HFHF_END_HEADERS, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Block fragment: */ + 'W', 'H', 'A', 'T', 'E', 'V', 'E', 'R', + }, + .frt_bufsz = 9 + 0 + 16 + + 9 + 0 + 8, + .frt_in_off = 9 + 16 + 9, + .frt_err = 1, + .frt_n_cb_vals = 1, + .frt_cb_vals = { + { + .type = CV_ERROR, + .u.error = { + .stream_id = 0x3039, + .code = FR_ERR_EXPECTED_CONTIN, + }, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = FRF_SERVER, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x10, + /* Type: */ 0x01, + /* Flags: */ HFHF_END_HEADERS, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Block fragment: + * perl hpack.pl :method GET :path / host www.example.com + */ + 0x82, 0x84, 0x66, 0x8c, 0xf1, 0xe3, 0xc2, 0xe5, + 0xf2, 0x3a, 0x6b, 0xa0, 0xab, 0x90, 0xf4, 0xff, + /* Length: */ 0x00, 0x00, 0x1A, + /* Type: */ 0x01, + /* Flags: */ HFHF_END_HEADERS|HFHF_PRIORITY, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Exclusive: */ 0x00| + /* Dep Stream Id: */ + 0x00, 0x00, 0x12, 0x34, + /* Weight: */ 0x00, + /* Block fragment: + * perl hpack.pl :method GET :path / :scheme http Host www.example.com + */ + 0x82, 0x84, 0x86, 0x40, 0x83, 0xc6, 0x74, 0x27, + 0x8c, 0xf1, 0xe3, 0xc2, 0xe5, 0xf2, 0x3a, 0x6b, + 0xa0, 0xab, 0x90, 0xf4, 0xff, + /* Length: */ 0x00, 0x00, 0x11, + /* Type: */ 0x01, + /* Flags: */ HFHF_END_HEADERS, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Block fragment: */ + 0x82, 0x84, 0x86, 0x41, 0x8c, 0xf1, 0xe3, 0xc2, + 0xe5, 0xf2, 0x3a, 0x6b, 0xa0, 0xab, 0x90, 0xf4, + 0xff, + }, + .frt_bufsz = 9 + 0 + 16 + + 9 + 5 + 21 + + 9 + 0 + 17, + .frt_n_cb_vals = 3, + .frt_cb_vals = { + { + .type = CV_ERROR, + .u.error = { + .stream_id = 12345, + .code = FR_ERR_BAD_HEADER, + }, + }, + { + .type = CV_ERROR, + .u.error = { + .stream_id = 12345, + .code = FR_ERR_BAD_HEADER, + }, + }, + { + .type = CV_HEADERS, + .u.headers = { + .stream_id = 12345, + .oth_stream_id = 0, + .weight = 0, + .exclusive = -1, + .off = 0, + .flags = UH_H1H, + HEADERS("GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"), + }, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = 0, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x15, + /* Type: */ HTTP_FRAME_PUSH_PROMISE, + /* Flags: */ HFHF_END_HEADERS, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Dep stream Id: */0x00, 0x12, 0x34, 0x56, + /* Block fragment: */ + 0x82, 0x84, 0x86, 0x41, 0x8c, 0xf1, 0xe3, 0xc2, + 0xe5, 0xf2, 0x3a, 0x6b, 0xa0, 0xab, 0x90, 0xf4, + 0xff, + }, + .frt_bufsz = 9 + 0 + 0x15, + .frt_n_cb_vals = 1, + .frt_cb_vals = { + { + .type = CV_PUSH_PROMISE, + .u.headers = { + .stream_id = 12345, + .oth_stream_id = 0x123456, + .flags = UH_PP | UH_H1H, + HEADERS("GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"), + }, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = 0, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x02, + /* Type: */ HTTP_FRAME_HEADERS, + /* Flags: */ 0x00, + 0x80| /* <----- This bit must be ignored */ + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Block fragment: */ + 0x48, 0x82, + /* Length: */ 0x00, 0x00, 0x02, + /* Type: */ HTTP_FRAME_CONTINUATION, + /* Flags: */ HFHF_END_HEADERS, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Block fragment: */ + 0x64, 0x02, + }, + .frt_bufsz = 9 + 2 + 9 + 2, + .frt_n_cb_vals = 1, + .frt_cb_vals = { + { + .type = CV_HEADERS, + .u.headers = { + .stream_id = 12345, + .oth_stream_id = 0, + .weight = 0, + .exclusive = -1, + .off = 0, + .flags = UH_H1H, + HEADERS("HTTP/1.1 302 Found\r\n\r\n"), + }, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = 0, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x00, + /* Type: */ HTTP_FRAME_SETTINGS, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + }, + .frt_bufsz = 9, + .frt_n_cb_vals = 1, + .frt_err = 1, + .frt_cb_vals = { + { + .type = CV_ERROR, + .u.error.code = FR_ERR_INVALID_FRAME_SIZE, + .u.error.stream_id = 12345, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = 0, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x07, + /* Type: */ HTTP_FRAME_SETTINGS, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + }, + .frt_bufsz = 9 + 7, + .frt_n_cb_vals = 1, + .frt_err = 1, + .frt_in_off = 9, + .frt_cb_vals = { + { + .type = CV_ERROR, + .u.error.code = FR_ERR_INVALID_FRAME_SIZE, + .u.error.stream_id = 12345, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = 0, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x06, + /* Type: */ HTTP_FRAME_SETTINGS, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + }, + .frt_bufsz = 9 + 6, + .frt_n_cb_vals = 1, + .frt_err = 1, + .frt_in_off = 9, + .frt_cb_vals = { + { + .type = CV_ERROR, + .u.error.code = FR_ERR_NONZERO_STREAM_ID, + .u.error.stream_id = 12345, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = 0, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x0C, + /* Type: */ HTTP_FRAME_SETTINGS, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x00, 0x00, + 0x00, SETTINGS_INITIAL_WINDOW_SIZE, + 0x01, 0x02, 0x03, 0x04, + 0x00, SETTINGS_HEADER_TABLE_SIZE, + 0x02, 0x03, 0x04, 0x05, + }, + .frt_bufsz = 9 + 12, + .frt_n_cb_vals = 2, + .frt_cb_vals = { + { + .type = CV_SETTINGS, + .u.setting.id = SETTINGS_INITIAL_WINDOW_SIZE, + .u.setting.value = 0x01020304, + }, + { + .type = CV_SETTINGS, + .u.setting.id = SETTINGS_HEADER_TABLE_SIZE, + .u.setting.value = 0x02030405, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = 0, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x09, + /* Type: */ 0x01, + /* Flags: */ HFHF_END_HEADERS|HFHF_PRIORITY, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Exclusive: */ 0x00| + /* Dep Stream Id: */ + 0x00, 0x00, 0x12, 0x34, + /* Weight: */ 0x00, + /* Block fragment: */ + 0x48, 0x82, 0x64, 0x02, + /* Length: */ 0x00, 0x00, 0x06, + /* Type: */ HTTP_FRAME_SETTINGS, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x00, 0x00, + 0x00, SETTINGS_INITIAL_WINDOW_SIZE, + 0x01, 0x02, 0x03, 0x04, + }, + .frt_bufsz = 9 + 5 + 4 + 9 + 6, + .frt_max_headers_sz = 10, + .frt_n_cb_vals = 2, + .frt_cb_vals = { + { + .type = CV_ERROR, + .stream_off = 9 + 5 + 4, + .u.error.code = FR_ERR_BAD_HEADER, + .u.error.stream_id = 12345, + }, + { + .type = CV_SETTINGS, + .u.setting.id = SETTINGS_INITIAL_WINDOW_SIZE, + .u.setting.value = 0x01020304, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = 0, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x11, + /* Type: */ 0x01, + /* Flags: */ HFHF_END_HEADERS, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Block fragment: */ + /* 0x11 bytes of no consequence: they are not + * parsed. + */ + 000, 001, 002, 003, 004, 005, 006, 007, + 010, 011, 012, 013, 014, 015, 016, 017, + 020, + /* Length: */ 0x00, 0x00, 0x06, + /* Type: */ HTTP_FRAME_SETTINGS, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x00, 0x00, + 0x00, SETTINGS_INITIAL_WINDOW_SIZE, + 0x01, 0x02, 0x03, 0x04, + }, + .frt_bufsz = 9 + 0 + 0x11 + 9 + 6, + .frt_max_headers_sz = 0x10, + .frt_n_cb_vals = 2, + .frt_cb_vals = { + { + .type = CV_ERROR, + .stream_off = 9, + .u.error.code = FR_ERR_BAD_HEADER, + .u.error.stream_id = 12345, + }, + { + .type = CV_SETTINGS, + .u.setting.id = SETTINGS_INITIAL_WINDOW_SIZE, + .u.setting.value = 0x01020304, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = 0, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x10, + /* Type: */ 0x01, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Block fragment: */ + /* 0x10 bytes of no consequence: they are not + * parsed. + */ + 000, 001, 002, 003, 004, 005, 006, 007, + 010, 011, 012, 013, 014, 015, 016, 017, + /* Length: */ 0x00, 0x00, 0x10, + /* Type: */ HTTP_FRAME_CONTINUATION, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Block fragment: */ + 000, 001, 002, 003, 004, 005, 006, 007, + 010, 011, 012, 013, 014, 015, 016, 017, + /* Length: */ 0x00, 0x00, 0x10, + /* Type: */ HTTP_FRAME_CONTINUATION, + /* Flags: */ HFHF_END_HEADERS, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Block fragment: */ + 000, 001, 002, 003, 004, 005, 006, 007, + 010, 011, 012, 013, 014, 015, 016, 017, + /* Length: */ 0x00, 0x00, 0x06, + /* Type: */ HTTP_FRAME_SETTINGS, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x00, 0x00, + 0x00, SETTINGS_INITIAL_WINDOW_SIZE, + 0x01, 0x02, 0x03, 0x04, + }, + .frt_bufsz = 9 + 0 + 0x10 + 9 + 0 + 0x10 + 9 + 0 + 0x10 + 9 + 6, + .frt_max_headers_sz = 0x19, + .frt_n_cb_vals = 2, + .frt_cb_vals = { + { + .type = CV_ERROR, + .stream_off = 9 + 0 + 0x10 + 9, + .u.error.code = FR_ERR_BAD_HEADER, + .u.error.stream_id = 12345, + }, + { + .type = CV_SETTINGS, + .u.setting.id = SETTINGS_INITIAL_WINDOW_SIZE, + .u.setting.value = 0x01020304, + }, + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = 0, + .frt_buf = { + /* Length: */ 0x00, 0x00, + 0x04, /* <-- wrong payload size */ + /* Type: */ HTTP_FRAME_PRIORITY, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x00, 0x39, + /* Dep Stream Id: */0x80, 0x00, 0x00, 0x19, + /* Weight: */ 0x77, + }, + .frt_bufsz = 9 + 5, + .frt_n_cb_vals = 1, + .frt_err = 1, + .frt_in_off = 9, + .frt_cb_vals = { + { + .type = CV_ERROR, + .stream_off = 9, + .u.error.code = FR_ERR_INVALID_FRAME_SIZE, + .u.error.stream_id = 0x39, + } + }, + }, + + { .frt_lineno = __LINE__, + .frt_fr_flags = 0, + .frt_buf = { + /* Length: */ 0x00, 0x00, 0x05, + /* Type: */ HTTP_FRAME_PRIORITY, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x00, 0x00, /* Invalid stream ID */ + /* Dep Stream Id: */0x80, 0x00, 0x00, 0x19, + /* Weight: */ 0x77, + }, + .frt_bufsz = 9 + 5, + .frt_n_cb_vals = 1, + .frt_err = 1, + .frt_in_off = 9, + .frt_cb_vals = { + { + .type = CV_ERROR, + .stream_off = 9, + .u.error.code = FR_ERR_ZERO_STREAM_ID, + .u.error.stream_id = 0x00, + } + }, + }, + + { + .frt_bufsz = 0, + }, +}; + + +static struct lsquic_stream * +my_get_stream_by_id (struct lsquic_conn *conn, lsquic_stream_id_t stream_id) +{ + return (void *) my_get_stream_by_id; +} + + +static void +test_one_frt (const struct frame_reader_test *frt) +{ + struct lsquic_frame_reader *fr; + unsigned short exp_off; + struct lshpack_dec hdec; + struct lsquic_mm mm; + struct lsquic_conn lconn; + struct lsquic_conn_public conn_pub; + struct lsquic_stream stream; + int s; + struct conn_iface my_conn_if; + +#if LSQUIC_CONN_STATS + struct conn_stats conn_stats; + memset(&conn_stats, 0, sizeof(conn_stats)); +#endif + + memset(&stream, 0, sizeof(stream)); + memset(&lconn, 0, sizeof(lconn)); + memset(&conn_pub, 0, sizeof(conn_pub)); + memset(&my_conn_if, 0, sizeof(my_conn_if)); + my_conn_if.ci_get_stream_by_id = my_get_stream_by_id; + lconn.cn_if = &my_conn_if; + stream.conn_pub = &conn_pub; + conn_pub.lconn = &lconn; + + lsquic_mm_init(&mm); + + top: + lshpack_dec_init(&hdec); + memset(&input, 0, sizeof(input)); + memcpy(input.in_buf, frt->frt_buf, frt->frt_bufsz); + input.in_sz = frt->frt_bufsz; + + do + { + reset_cb_ctx(&g_cb_ctx); + input.in_off = 0; + ++input.in_max_sz; + + fr = lsquic_frame_reader_new(frt->frt_fr_flags, frt->frt_max_headers_sz, + &mm, &stream, read_from_stream, &hdec, &frame_callbacks, &g_cb_ctx, +#if LSQUIC_CONN_STATS + &conn_stats, +#endif + lsquic_http1x_if, NULL); + do + { + s = lsquic_frame_reader_read(fr); + if (s != 0) + break; + } + while (input.in_off < input.in_sz); + + assert(frt->frt_err || 0 == s); + + if (my_conn_if.ci_get_stream_by_id) + { + assert(g_cb_ctx.n_cb_vals == frt->frt_n_cb_vals); + + unsigned i; + for (i = 0; i < g_cb_ctx.n_cb_vals; ++i) + compare_cb_vals(&g_cb_ctx.cb_vals[i], &frt->frt_cb_vals[i]); + } + + exp_off = frt->frt_in_off; + if (!exp_off) + exp_off = frt->frt_bufsz; + assert(input.in_off == exp_off); + + lsquic_frame_reader_destroy(fr); + } + while (input.in_max_sz < input.in_max_req_sz); + lshpack_dec_cleanup(&hdec); + + if (!(frt->frt_fr_flags & FRF_SERVER) && my_conn_if.ci_get_stream_by_id) + { + /* Do it again, but this time test header block skip logic */ + my_conn_if.ci_get_stream_by_id = NULL; + goto top; + } + + lsquic_mm_cleanup(&mm); +} + + +int +main (int argc, char **argv) +{ + int opt; + + while (-1 != (opt = getopt(argc, argv, "l:"))) + { + switch (opt) + { + case 'l': + lsquic_log_to_fstream(stderr, LLTS_NONE); + lsquic_logger_lopt(optarg); + break; + default: + exit(1); + } + } + + const struct frame_reader_test *frt; + for (frt = tests; frt->frt_bufsz > 0; ++frt) + test_one_frt(frt); + return 0; +} diff --git a/external/lsquic/tests/test_frame_rw.c b/external/lsquic/tests/test_frame_rw.c new file mode 100644 index 0000000..f4b7dbb --- /dev/null +++ b/external/lsquic/tests/test_frame_rw.c @@ -0,0 +1,10350 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * Generate a few thousand headers, frame them using frame writer, read them + * using frame reader, parse them, and compare with the original list: the + * two should be identical (we ignore pseudo-headers). + * + * Two variables change: + * 1. Maximum frame size for the writer; and + * 2. Maximum read size for the reader. + */ + +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include "getopt.h" +#endif +#include + +#include "lsquic.h" +#include "lshpack.h" +#include "lsquic_logger.h" +#include "lsquic_mm.h" +#include "lsquic_frame_common.h" +#include "lsquic_frame_writer.h" +#include "lsquic_frame_reader.h" +#include "lsquic_headers.h" +#include "lsquic_http1x_if.h" +#include "lsquic_int_types.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" + + +struct lsquic_stream +{ + size_t sm_sz, /* Useable bytes in `buf' */ + sm_buf_sz; /* Number of bytes allocated */ + size_t sm_off, /* Offset when reading */ + sm_max_req_sz, /* Maximum read size recorded */ + sm_max_sz; /* Maximum read size */ + unsigned char *sm_buf; +}; + + +static const lsquic_cid_t my_cid = { .len = 8, }; + +#if !defined(NDEBUG) && __GNUC__ +__attribute__((weak)) +#endif +const lsquic_cid_t * +lsquic_conn_id (const lsquic_conn_t *lconn) +{ + return &my_cid; +} + +static struct lsquic_stream * +my_get_stream_by_id (struct lsquic_conn *conn, lsquic_stream_id_t stream_id) +{ + return (void *) my_get_stream_by_id; +} + +static const struct conn_iface s_if = { .ci_get_stream_by_id = my_get_stream_by_id, }; +static struct lsquic_conn s_conn = { .cn_if = &s_if, }; + +#if !defined(NDEBUG) && __GNUC__ +__attribute__((weak)) +#endif +lsquic_conn_t * +lsquic_stream_conn (const lsquic_stream_t *stream) +{ + return &s_conn; +} + + +static struct lsquic_stream * +stream_new (void) +{ + struct lsquic_stream *stream = calloc(1, sizeof(*stream)); + return stream; +} + + +static void +stream_destroy (struct lsquic_stream *stream) +{ + free(stream->sm_buf); + free(stream); +} + + +#define reset_output(max_) do { \ + output.sz = 0; \ + if (max_) \ + output.max = max_; \ + else \ + output.max = sizeof(output.buf);\ +} while (0) + + +static ssize_t +stream_write (struct lsquic_stream *stream, struct lsquic_reader *reader) +{ + size_t sz; + + sz = reader->lsqr_size(reader->lsqr_ctx); + if (stream->sm_sz + sz > stream->sm_buf_sz) + { + if (stream->sm_sz + sz < stream->sm_buf_sz * 2) + stream->sm_buf_sz *= 2; + else + stream->sm_buf_sz = stream->sm_sz + sz; + stream->sm_buf = realloc(stream->sm_buf, stream->sm_buf_sz); + } + + sz = reader->lsqr_read(reader->lsqr_ctx, + stream->sm_buf + stream->sm_sz, sz); + stream->sm_sz += sz; + + return sz; +} + + +static ssize_t +read_from_stream (struct lsquic_stream *stream, void *buf, size_t sz) +{ + if (sz > stream->sm_max_req_sz) + stream->sm_max_req_sz = sz; + if (stream->sm_sz - stream->sm_off < sz) + sz = stream->sm_sz - stream->sm_off; + if (sz > stream->sm_max_sz) + sz = stream->sm_max_sz; + memcpy(buf, stream->sm_buf + stream->sm_off, sz); + stream->sm_off += sz; + return sz; +} + + +static void +on_incoming_headers (void *ctx, struct uncompressed_headers *uh) +{ + struct uncompressed_headers **uhp = ctx; + *uhp = uh; +} + + +static void +on_error (void *ctx, lsquic_stream_id_t stream_id, + enum frame_reader_error error) +{ + assert(0); +} + + +static const struct frame_reader_callbacks frame_callbacks = { + .frc_on_headers = on_incoming_headers, + .frc_on_error = on_error, +}; + +#define N_HEADERS 10001 +static struct lsxpack_header header_arr[N_HEADERS]; + + +static void +compare_headers (struct uncompressed_headers *uh) +{ + struct http1x_headers *h1h; + char line[0x100], *s; + FILE *in; + unsigned i; + + assert(uh->uh_flags & UH_H1H); + h1h = uh->uh_hset; + in = fmemopen(h1h->h1h_buf, h1h->h1h_size, "r"); + for (i = 0; i < N_HEADERS; ++i) + { + s = fgets(line, sizeof(line), in); + assert(s); + if (i == 0) + assert(0 == strcmp(line, "HTTP/1.1 200 OK\r\n")); + else + { + s = strchr(line, ':'); + assert(s); + assert(' ' == s[1]); + assert(s - line == (long) header_arr[i].name_len); + assert(0 == memcmp(lsxpack_header_get_name(&header_arr[i]), line, s - line)); + s += 2; + assert(strlen(s) == (size_t) header_arr[i].val_len + 2); + assert(0 == memcmp(lsxpack_header_get_value(&header_arr[i]), s, header_arr[i].val_len)); + assert(0 == strcmp(s + header_arr[i].val_len, "\r\n")); + } + } + + s = fgets(line, sizeof(line), in); + assert(s); + assert(0 == strcmp(s, "\r\n")); + + s = fgets(line, sizeof(line), in); + assert(!s); + assert(feof(in)); + + fclose(in); +} + +static void +test_rw (unsigned max_frame_sz) +{ + struct lsquic_frame_writer *fw; + struct lsquic_frame_reader *fr; + struct lsquic_stream *stream; + struct uncompressed_headers *uh; + struct lsquic_mm mm; + struct lshpack_enc henc; + struct lshpack_dec hdec; + int s; +#if LSQUIC_CONN_STATS + struct conn_stats conn_stats; + memset(&conn_stats, 0, sizeof(conn_stats)); +#endif + + lsquic_mm_init(&mm); + lshpack_enc_init(&henc); + lshpack_dec_init(&hdec); + stream = stream_new(); + stream->sm_max_sz = 1; + + fw = lsquic_frame_writer_new(&mm, stream, max_frame_sz, &henc, + stream_write, +#if LSQUIC_CONN_STATS + &conn_stats, +#endif + 0); + + struct lsquic_http_headers headers = { + .count = N_HEADERS, + .headers = header_arr, + }; + + s = lsquic_frame_writer_write_headers(fw, 12345, &headers, 0, 100); + assert(0 == s); + + do + { + uh = NULL; + stream->sm_off = 0; + + fr = lsquic_frame_reader_new(0, 0, &mm, stream, read_from_stream, &hdec, + &frame_callbacks, &uh, +#if LSQUIC_CONN_STATS + &conn_stats, +#endif + lsquic_http1x_if, NULL); + do + { + s = lsquic_frame_reader_read(fr); + if (s != 0) + break; + } + while (stream->sm_off < stream->sm_sz); + assert(0 == s); + assert(uh); + + compare_headers(uh); + + lsquic_frame_reader_destroy(fr); + lsquic_http1x_if->hsi_discard_header_set(uh->uh_hset); + free(uh); + + assert(stream->sm_max_req_sz >= sizeof(struct http_frame_header)); + stream->sm_max_sz += stream->sm_max_req_sz / 8; + } + while (stream->sm_max_sz < stream->sm_max_req_sz); + + lsquic_frame_writer_destroy(fw); + stream_destroy(stream); + lshpack_enc_cleanup(&henc); + lshpack_dec_cleanup(&hdec); + lsquic_mm_cleanup(&mm); +} + + +int +main (int argc, char **argv) +{ + const unsigned frame_sizes[] = { +#if defined(__has_feature) +#if __has_feature(address_sanitizer) +#define TEST_SMALL_FRAME_SIZES 0 +#endif +#endif +#ifndef TEST_SMALL_FRAME_SIZES +#define TEST_SMALL_FRAME_SIZES 1 +#endif +#if TEST_SMALL_FRAME_SIZES + /* Do not test small frame sizes if Address Sanitizer is compiled + * in -- it cannot cope with many allocations that are produced by + * this test. + */ + 6, 7, 8, 9, 10, 11, 20, +#endif + 30, 100, 200, 255, 0xFFF, 0x1000, 0x100D, + UINT_MAX, }; + unsigned i; + int opt, max_frame_sz = -1; + + while (-1 != (opt = getopt(argc, argv, "l:s:"))) + { + switch (opt) + { + case 'l': + lsquic_log_to_fstream(stderr, LLTS_NONE); + lsquic_logger_lopt(optarg); + break; + case 's': + max_frame_sz = atoi(optarg); + break; + default: + exit(1); + } + } + + if (max_frame_sz < 0) + for (i = 0; i < sizeof(frame_sizes) / sizeof(frame_sizes[0]); ++i) + test_rw(frame_sizes[i]); + else if ((size_t) max_frame_sz < sizeof(struct http_prio_frame)) + { + fprintf(stderr, "max_frame_sz = %d is too small a value\n", + max_frame_sz); + return 1; + } + else + test_rw(max_frame_sz); + + return 0; +} + + +#define XHDR(name_, value_) .buf = name_ value_, .name_offset = 0, .name_len = sizeof(name_) - 1, .val_offset = sizeof(name_) - 1, .val_len = sizeof(value_) - 1, + +/* This list is hardcoded to make the test deterministic */ +static struct lsxpack_header header_arr[N_HEADERS] = +{ + { XHDR(":status", "200") }, + /* Generated using tools/generate-headers.pl */ + { XHDR("a", "Fv") }, + { XHDR("jwfgrxwwlgxk", "tVoAUIJANdnIXvqcLOHBgiDaNkFlTbtwwrJbnqPSM") }, + { XHDR("nozwn", "PLvXBHdzgTxVNxHGVD") }, + { XHDR("kixxrjdkztouvl", "SMRwVKJkYvPNZISQQI") }, + { XHDR("jfnymjcccnrxaswc", "SQwkiHAIMrrOHQwIauZqbUtmoXzsXQCqWBcBOxXkSIcQQCbtHqctWkpEWhlYWUMtzFWOqnkoGzvL") }, + { XHDR("fsokryuwcirnwa", "hsZveHerAFgMSQPklcOlqmetjIGlVcYtTqZWadpLaKss") }, + { XHDR("ildcdoml", "czrUShQL") }, + { XHDR("bomrhltgvwcxggp", "hRIY") }, + { XHDR("uswjmcnejgcomgrchloe", "AKDeVINsfggLfyLsOduXrP") }, + { XHDR("rpx", "pFTzuQXxrlFeDQXZnYpMZDamKKJWVpqjgJtN") }, + { XHDR("ooucpbffasju", "EP") }, + { XHDR("coseljcqnlkferea", "PrjIaXCaZBMCpFzpmSJjaHvGCCRsYoPzSGUQgUtK") }, + { XHDR("wmmgbskgkmjz", "gIS") }, + { XHDR("ikmnlqg", "fsBOEejxktYebN") }, + { XHDR("wxzrttatcbjjcmdztx", "EWFrgVw") }, + { XHDR("jibigghpnjifkefgxrgo", "onujtLRvOEIPZtFJBsmohvNkvfEouJZRJyUoxUUjQFvA") }, + { XHDR("fqkvdxnnbyajs", "QtrUzVQZBsgTKMiVUansPcLvWkkCnafnxoFQvTBxpZcjuidQgbIZwSXAeO") }, + { XHDR("qiyihctufcwoxynhjwz", "iegCbvHkeo") }, + { XHDR("d", "fKbBzxCBWPJLzpPHISuMTwoZHFtyiRpzlyXRlgHACMarnboPAQMp") }, + { XHDR("crvcg", "tYAQQRvbwemzItfohlzqq") }, + { XHDR("yf", "SHiJIobvtGrJVZdwwVUvukFSpKE") }, + { XHDR("vjmnnpijhhdtrisnz", "bUDtxTfKzZipbafXGUprYElYfShmvkzlWaGMtWPjPniCPMarWwyaTQldvSeWwVNDE") }, + { XHDR("bwswbhtftzqee", "EKHLAVPOjwNcMMX") }, + { XHDR("u", "EAtoQWetslSrVTeVJTIzXbmwVYUtAYYaObEOARSJKERNLuDHGKdOBsMzyaNTVItnWKgW") }, + { XHDR("kxvervxetmysjcpcsqp", "nOtKFxnHPSNaDWLojeQiYkJNgSCwGkfFaHIfuVdVPr") }, + { XHDR("xbwgtmuoznllapzaj", "vvqlYHnwZZHIAIaeweEhechJMGcqTwTOhkeGmKcXucSpgPRxvydm") }, + { XHDR("awhlzhgklpxqjq", "XNEkYXFOmj") }, + { XHDR("fqfsuhropauu", "TqoAFegeY") }, + { XHDR("djgckfmmyg", "hVbmbsyawdK") }, + { XHDR("trmvf", "eZXQfrWYssiJSviraCdgHJxnQNZdBTbkvqNObubYXHbAgEbYqgsQhdImYuXIxoHVWHpdwVaFK") }, + { XHDR("yzatdlj", "bwZKJi") }, + { XHDR("srqsqrwobxgmd", "uZH") }, + { XHDR("fvrueysquqgwvbo", "YxMHTlsf") }, + { XHDR("ab", "XtpTxRnzHVhLZhPQsfHiSfQsxWoRWsRpEHjXjcFcRQHzysvMVyVIu") }, + { XHDR("apjycglorwluenpiy", "OvEKJhywkUXSNgNikHijjLeSpKPixICfFNvHEJctZttJeghRtSwCaAKMdEHaAb") }, + { XHDR("qxklmfzoxk", "gGAgeeRuBaNYYBZpLxfVrVqsotCWpljSMBRlWgoZjZCLdLq") }, + { XHDR("sysecb", "KneinITgCFRBdfGCitwGYVGWzDPJkhFCdJaRUKXVdzTtzKpCgXb") }, + { XHDR("xwn", "TkaUBBWsJRSXtFOlmVEplIPQfRrzrFdqkgzZDaCZwrcMXufnLKmbEKyDTcOAofXUD") }, + { XHDR("mdalnxpv", "vnCfFo") }, + { XHDR("vpfvlkodosunui", "xQxrvDHmsfcposZDivxiyhBClmcmBgSCEkaCumYvhBxJeSQPWBgZs") }, + { XHDR("phzskahgwpwctududk", "uMyjPWZQjOjItzXbtalNXlTnh") }, + { XHDR("iqkbvwutzvtxlpzobhx", "gZOzjZfNVGfJJfePdMlddzIAYwrUfcxKxyBgfdyIMwAknADEIByNxSRcrOPURvNKdsvHDzaZl") }, + { XHDR("cjfadyhpshp", "lCoAXdHT") }, + { XHDR("qffcwlzrantvlh", "gplMDEYgvOXGwkqD") }, + { XHDR("vowtuifcsrr", "dOLiwrfveWeXuRvRMBtuJocxRadeZQMckJBwWcWViOcxQf") }, + { XHDR("ltvwxqgzifvfwwrupj", "wWFfEKEtPZhvRlHNGuFvEYzETO") }, + { XHDR("lgykfyoegywelmnmk", "gVuHvUZlfsCOZsvdfKYnWDocojREJmBzSfRCuyfNBtXXfGPfQNJcbckkJKr") }, + { XHDR("ianjs", "XZnCGEKTBNkbTdcMrdEGcqxZyVGrJVkEymVxzsi") }, + { XHDR("xkkhqxwqcvluwsz", "NxIZeewUfDiSiD") }, + { XHDR("mltmixj", "AncPKVLzUchKoKLSFyCop") }, + { XHDR("tkgztwkbsdoxrohnwnmq", "XRfzukuHYD") }, + { XHDR("nrx", "dDWMrNUMwCSsvOw") }, + { XHDR("faubvno", "RcqaiSjrxRJgjPAGHxbdOyRVGlpFaIsbyCwCdkouQYuPUDOrBFcyeCLVlwzEcraWdyQ") }, + { XHDR("rbucgu", "cktucIrsNANCanonVPwVZAZLDwpovifsenoaDVyjdSDVcaGKidpuEfr") }, + { XHDR("vmprnqzhtcina", "cAZTtjsaxmfcwbjWeQyeACrdJFCbKOuYMtRprGVweBBDEIBnecroFVGRdbkMwDiUevfZRHtQsHUuZwXi") }, + { XHDR("wlzfjudhgmhabhcdywun", "hyJMsJUEHfeQyVLDVFoBnxqjQXwtc") }, + { XHDR("udfyi", "autGUVfpsCZICUQOyTFkcssjURUFvsNTsRpduCizBoZLG") }, + { XHDR("eocdyfayzvofes", "wSxNqBvLryBGcNxmXHpKMozIrVmjztcDymlCIyUwdCgVkGgk") }, + { XHDR("qcwdllognwweakv", "LhOiOxJwYve") }, + { XHDR("jjz", "NaCGdOodBGYXXlJmFOJjmvvtNbXXZLfWxwdCbHoKNeXhwnXTlXbedsWOhYLtRmEKfaKCKtqc") }, + { XHDR("tkejgyxdsimn", "igfTEPPlHFMgtWIQMElRBEoLwlahmKnRouiVDGIktcCFvzMKnM") }, + { XHDR("nqjfmra", "pyUXfaafdHHxCYCriwWQNjtRmuXmFmhYmogMhoZUkxRdGNTcIuf") }, + { XHDR("bumr", "pQVxPKkcuZVjAfvrZaNPuYyTxei") }, + { XHDR("yxkyuravwowfpsotsao", "XeGUmAddSWSnuXbTjS") }, + { XHDR("ogjvsgo", "oirQCiiNqSChgMzwkDSsyrTkbjkKpIXyzybazCauGIuaw") }, + { XHDR("mtxvstjbgymgsohvygi", "sERlIUZMPxqGjWyIWtCtCcGgnIkpbpuHoorgnEYLzmklZQpdhrQSdQYGlX") }, + { XHDR("ejsmeavqywbvizvlvyd", "iK") }, + { XHDR("eitwamw", "anAHAgmoWJrIDAgcMIWHrnQRZeiaQg") }, + { XHDR("qtu", "KdlzoMxxeIZqIwudosadAgQyUDscmBvZExFtukiMCpBTgcMAXPJnvOtkzvAYLHJQoEZixnjBVoQ") }, + { XHDR("xwzsjf", "zPeEApsMZDjxuMqHfmvRkkJLNcrHMIybOjNrBdzBqg") }, + { XHDR("wyf", "ahUCoivUrHgcjsdyhSCoogklZffxdFFXBRBsGrrqZMidcvcu") }, + { XHDR("gvvijkhvsl", "xDDAqvMlyCbHEXWxEZUHwEgvWkPtXyiEyjdwhapOQtyFQwMoU") }, + { XHDR("uijgjxijyxpektoqwd", "POTha") }, + { XHDR("uidssnanlyxzzns", "ODvezqwvHsHrjdrlMdclZBefSBFinwkyvYWfvLxaEswxgZnQmCBmC") }, + { XHDR("bv", "WUYOGCyLOPgZFKpvtYSKAmNWqHUbZeZlpxSgZeMmewEyPnFtzFnzNRqhxMbtgoIpeDIvT") }, + { XHDR("rcvtifvnbfrzwsn", "HWgAOYKAYMyGkPkmkqLfwUHQoHlOoXwMfplHrMjBvlaLAqdAYnozkiOplrDyyQuaPKLXEwpyrZ") }, + { XHDR("eucjpsrkdvtdju", "waXsyzKzyAeeTFlJlZiTWMoXqQIcIEsumPZshHRzWniDKJXMIJdxlgpdhygywat") }, + { XHDR("rluwiiinim", "xmmhNiyIRZGfCTJqYShqtwlcKUgAYpRhQzLpphYPqEtLUFvUFwbFKVLOGLbhhYMXuFsdLGHNWIkpfcvq") }, + { XHDR("cxtgakjnszpbmhr", "DOBvUnTgaXPgePVXUGnoGbLUPdusotheRNsbtzhUMizukWGsexAnYXYXRxzqftzUWtamX") }, + { XHDR("hrxu", "eSYXicRILNtmOucqCxYiJSnas") }, + { XHDR("hwxtb", "nENDaICzxxTdGfStCjxBnPCXErglMHncPptgqKQApRHPHgHXbRRLarLUcaOHRS") }, + { XHDR("qecjrytmsxk", "okOFRwOhlYbhqzLLyLOR") }, + { XHDR("tmrtuvh", "eCqwBoWaALxkrHGtMmggzaPqUwdGMztrcBZmWcXcnjIySGzZVBcpoewvRrO") }, + { XHDR("ufbpadohzdvgpgffjqa", "nITdQrwEhuPGhnIJLpdOgzjNBDTOPKinQpNtVyVsSLNBKmHYQyyuUx") }, + { XHDR("uxol", "NOwKNkVIAMxwCCUSWMfuwQvmYSHyQUpzjzkxujGcOGVPUCJsnocHefHSLCJzNOfjs") }, + { XHDR("xfibdpdmc", "AXMqhobsCYYnysgg") }, + { XHDR("r", "CLOqTHNnUj") }, + { XHDR("kilzzlmiqik", "bcnHGGbuPGyqOuCLui") }, + { XHDR("iqqszt", "SZukuowHIesKYC") }, + { XHDR("txhzzgduulxyet", "GEDNIQcCUpFNvDtZ") }, + { XHDR("pbihd", "xCQHqmFsxbzWpuPOTBFgLUpYzdgJtyPBkEYHVRODlLRoXHQoWmDvMNBq") }, + { XHDR("ncaasdysey", "SmixDbQXHMkJOujGzjyWkm") }, + { XHDR("bvgcmwnwbwfbrncqsg", "mLjpHRXUyklruCrY") }, + { XHDR("xdddctrdv", "eWtEJLhrmYgrSHEZiunrMVMLxHcYBjMfmdzIeHKhptBdZmKFOEkHfIDg") }, + { XHDR("ioseo", "jyvYgOqCauYdvpYTGxPalaASrVUsKkYRwLAzbdCohEn") }, + { XHDR("tbqkulxvicgyorotgeuy", "zFCiDjetrVK") }, + { XHDR("orceihetaoqdqrpl", "BIjGGLreOSDXqkVYVoaupQxXmkhYAUnRosolhUvF") }, + { XHDR("tkexneuwlwkto", "jAmbLURPmEMYousdrVcNdeyxxRIZq") }, + { XHDR("dmyeirhtu", "JDaULQUqQkvOzEpPKIWouWMEuxTNyRiFevh") }, + { XHDR("di", "AecJgvXAT") }, + { XHDR("mqbzyedyzrpbgrsl", "VZzydvYbYXVnYOBHoWTBBLfUZMKuOpztzemMBFqNgzpMOAqQEVKMKGdWB") }, + { XHDR("bzlqhfxyviuaxosiudq", "foUjCUhNZSDAqLWgVMqdnprkLsZNhBdmrzXPJsXxuU") }, + { XHDR("zmunpnwxetjsftvpo", "eDHwaGgNEz") }, + { XHDR("abyn", "nsRKRzDjCYvLuQNbKuWgWtAHDJuCJALAQPofQqpRSzStVjwSEyporbjMnnPMIlH") }, + { XHDR("rfwokjpijqdslu", "BoaxDwAvoorhJRjCI") }, + { XHDR("nbphdigpkajry", "YeXHMKPAfJYqkSoQbmapFIPnjPcSqJkYOxQEKOOqBecfYbUFpKXOKdTvjytCa") }, + { XHDR("ltapcdtacdm", "kkvUBOnBuEArmUweYcUbNRNyZzMPkEsaXSEdsfCkPEFWE") }, + { XHDR("swe", "mMEQvujpOLJdSQbOLTqTOcEdpyFcLICqlJJpRHKhqs") }, + { XHDR("pxrpqhkcryo", "CLqaYWCQjlQnmiIGQUTTkWtVEONdUNZVvywShCnanbtGJDIqnOwGLutYmGyNlPCmPHjfvrn") }, + { XHDR("jmjazyjgeqrvaocaoxuc", "dFjAvsTJqJKBknyLRlLtcEXHKUqGvdPStFjcRnFoOxkkpFHLDxw") }, + { XHDR("bfilakfoqrq", "DiHFtXTmcQZZCfUkbPVcwBFzhSTWTLQEkDxpEByxAoVyOAvQUiMfiKBmdtlLNLVcEjtuAHPLxRmfZR") }, + { XHDR("kiof", "YdqRfXmxswrglyjJnVFJaVyNkHCbbNgQGqDaIhMTZgOHHZKMqPjMgyiKdnrmrrrS") }, + { XHDR("rtqpdpltdhcgwg", "VkNJxHEDWGphtXEcMQjlJ") }, + { XHDR("rhfxnxzfnn", "xowlQuPzarHsbVjzLDsrCIeKjqdDxclUpIypebbalSbAizqEkIMdWdw") }, + { XHDR("qbjdivjblschpr", "gTRiBzTSYuuYxBryNefUriTUaJAWoJAJhdkRzcsedPZTArxoWbviXWRORyGKlfYcejSSyitKH") }, + { XHDR("nplfprff", "zkFjnIfFMxIVHcVZAIePhmMmHHvLaskTLBGbDvCwRThJhpGZNvsAQwciYGBXJV") }, + { XHDR("vhvmn", "vBmqJTKMVTOEyDLXN") }, + { XHDR("cyebzpdsmsjvpdzv", "WnhrmYkHrqUHHqAEcWlCIhEYitrpCNsYrliIiniygKSRrVpLPjghdNcvWQPsYsMWXtrodHAHe") }, + { XHDR("zwok", "BXoHFLSEOhOZKkdUVjJYPkWRdXULrzzBIkbyTNzfOSJUogRgFWizxorgdrAhyFBSWJULyZrkHMzDszX") }, + { XHDR("q", "eaAtxYzmdcUhkhfsARRGtEWJTOjEyhXrIpGmUztxnIQP") }, + { XHDR("nxzhbolzxulgnfinbwsr", "dExcZgETTboatzXcxlaYuKyPuZnzdUFbYSNNEjNdVN") }, + { XHDR("uvturmpvoixseyuow", "lYIpQDB") }, + { XHDR("ryqckixf", "fGnJENfnWWHZhcrwexVPMhdohatQFSHMmVzvVWelmNJyRdGbMTyOxLUWnQgNRhZyikpIYg") }, + { XHDR("exquepdknajutrisn", "ntqsxPnrhkUoldcV") }, + { XHDR("nszzfgpcdbv", "fGVtdENzyLXcZKbWIIwYYOynkpWldRhpwagfQCeZZLlJPUtpq") }, + { XHDR("khydspqzqfvdlfkx", "TXjPxRkwYbWpPIqanigQbuvlrdbnlSnRSFPvwPrTnJVKPlFdXtABbxuRCAmWKXAQIK") }, + { XHDR("fcmrsjtpfbwogyxc", "HrKnmIPDOBcbKmICogZDctLQZdSqRJoqyqAKvTvKnuhjbuAbFkYlDpyghpGBoNBjHofLGt") }, + { XHDR("dsmqnmgzvpquabfyia", "DwDnbnTxmnyjruISXCYwHQHLAFCeFQbRDjnJtLTQQHueVrWoGfsGS") }, + { XHDR("wbjmqthdef", "rMlAwIBbMXsmyBEqPfFbSnQrx") }, + { XHDR("exvifjnbbmizt", "U") }, + { XHDR("dntavnks", "rIrdRaSFbLRoDhfbrwLZdfWqKNtgGNTITESnAVHhZaSvAsemeS") }, + { XHDR("o", "ZhzCRteLLESjeBYPcNprCWzEyqIGtOzWWbawtxbAL") }, + { XHDR("dwbuznphtzchdtuixots", "gfleeyOPENAyiSrorleyWFzBCjLYWilBrCcztaVRuecBYcymReNYcKOsWuneRLmDdqARGTGlZiZTEFW") }, + { XHDR("wymxywmfeatqzwwpxh", "BVEjjhnFgRWPiFPxVLxyKeMTcBCxociXVKNFalOhF") }, + { XHDR("wxcmyvh", "EGuKlhPOfEyy") }, + { XHDR("gbuaujwqtbnhyaqntpq", "o") }, + { XHDR("ye", "sthvbpytXfSPzEvzCizJXHjRPtmfOJfWMURdrKawBxPUeIuqUVVoxRcOOEQFp") }, + { XHDR("gshdjqallfsufdlqap", "vagEuPwWwLkJruVOJNmNUBgxTrjhXoZqIPNEbbYwdkimYGgzWsRqqazypjgJlawPJQSmMCAsvwMyU") }, + { XHDR("iotoydilydxuwwzu", "y") }, + { XHDR("ieiazxafdajw", "VbWrafZwoCdjbnZpVGXEhFqsIpAWnyMcuMMLzrNv") }, + { XHDR("ch", "uOAtUsxZdDfCpAVSpwFGwkDoQNwVPcoxQhVJLHWwYzuYcdzgfipzggPu") }, + { XHDR("cgnmtcmfmilrpnte", "SeaVyhuzOjDtDlpbuMYbuQRGkOuoGcaXoZsGtpKClAceJVlMXgWWdOMXAGBlnjpqLavnc") }, + { XHDR("edhggg", "MugWswitOBpamaigqKKhoby") }, + { XHDR("emszsllhkt", "zcqJdtWiEbYrYXGdOPZAMVEdmBdBgIwIfPeqLitDPNOzOPMGeCOPIoOX") }, + { XHDR("crpbzcadymjkeqopoen", "dodwdskMMZCIhCkgTZhXDbszdihZsSEuSFKremTMEPDsNbizJLOqMuErTFwFyPJDPeSvGIWwMTo") }, + { XHDR("jbhzyqlepjqzxsqzumsn", "BgSbZFlfVEIbXIVGjbZJmJNGKzPrDbLYMdRHljMyrFrBaPinZfsBLfBntQyoUpagHGezOAsFpjlKWQ") }, + { XHDR("hiwztqiqgadvtbslg", "WIjqnNIpQarNrvjRD") }, + { XHDR("ctf", "MDIvJKeKIreWpXMqYlJaTQW") }, + { XHDR("ldrqjsqnwgcgvb", "BePauQrBGeWbLeSKrsyoKOvYQIwjcIVTbgWwgRnBK") }, + { XHDR("hcz", "wpymhFgtgJRKNmHjjz") }, + { XHDR("retheychugcllsuiw", "QoZZLiUDeGtvrbvEMKYL") }, + { XHDR("rnqdhuiabjmuywun", "iVXxpnbzMNEzzuVmM") }, + { XHDR("ygildgrceltcbm", "GkmsgeygvBOEXZLDwkXplTKXtdxAlIpwqRygfFNhRRFuaaBTR") }, + { XHDR("hpzhcsohfp", "eejlKtIKcTkRzFcEqwn") }, + { XHDR("vzokgnytldobv", "WF") }, + { XHDR("yxzoohbingbiavglq", "tgiWBUgUYAbPiIthmbTUtkQcYYvuIOwgRfGxIDmQcnFIVvVFDzuROaHTnQVf") }, + { XHDR("euk", "HNbxdIyoAUUZctZuCTWuvZOlTo") }, + { XHDR("kykcemwxzdlz", "FuDdIVebUuLXHhfUdZEJZXAzJeOCVNKKKrvIDyDHZJbqktisAk") }, + { XHDR("wscxsnfefsrain", "cWuDFJNYDHmTsmrFRifzo") }, + { XHDR("jyficqzgxgekyvz", "VPyaOazRcipXPadxLhejwjdTHzMbFGipOxgmqKpXMSGoISwiPvEltmpyfBDRJj") }, + { XHDR("gdjvmtnpltfjcq", "ZwplKmLjyGlJCtkdDBFjOnEhMQbOIdaBWZuLVPAqTvntgJr") }, + { XHDR("xfu", "SyJDmvxdOsKWGCqAsVSraYQEaGWCcCNMTS") }, + { XHDR("bap", "OZVordXvlZTMbOjTeCmiLOnXXvoDVTnNxDqLceBVrS") }, + { XHDR("ermxekvhhkgswpfwn", "ptZiD") }, + { XHDR("tdzjtiozeohwu", "BDjlJRVpJutiNKQV") }, + { XHDR("sn", "zswqsvMIBladiYJsl") }, + { XHDR("xsajjrygddxfu", "QsfCetKI") }, + { XHDR("vthqykscro", "tExiChTEiarsrcHVlpRJXHgtTbEsnLXtL") }, + { XHDR("qycszfh", "kopPVoKmyCqcuSEPCeRseyoJbUcBWYlpmCdyequbybwdtMBTgChM") }, + { XHDR("uzwd", "OajMzZeXvehMNVLJQBsczGx") }, + { XHDR("gdd", "JMNpBzzbGRgWZzOIPcWtenMFFMtipVZnGzagGTXWRWCstNAeuASRiRjAFPZ") }, + { XHDR("ikbeufnqupqysxjsr", "hskUPcFhplixqvVuDGTPxHpOg") }, + { XHDR("bxregvtydbdxwgrnvujq", "fTMhBwUGAhzDHjwNmfKjEvHbmhqQlvJwOOrQk") }, + { XHDR("wumyxelgadiupfgxl", "ShBbGhPawS") }, + { XHDR("lxgjecggpkympar", "rzyTVyCqiRGXgMfkjPfBUbntbHhKXYEiXZJDKhxHfvamZoWZfOfsZvDCNQYlIHQRTgaEQlx") }, + { XHDR("xhjictpnow", "obuvpjfoReBNIX") }, + { XHDR("jtevpwcwsk", "bHVemoFZVBkmrssQOafrwGkRDgAcOpKIJPMrVBQBQGDvHuTJMdtEfeKmZwOlRBORG") }, + { XHDR("eybmrtobwqtqomkbfonk", "FThuoUlAjqEGISHBRYTmYA") }, + { XHDR("cgxegj", "DYpwAydJzXnIgMZDOaCStqbIYwdyD") }, + { XHDR("dyetdzqttuluyygtk", "KXReaziMoos") }, + { XHDR("ngkdfu", "K") }, + { XHDR("sigjwgjinzi", "PoUXACXNuYVaPAMtsvhfeZhRUcdYcWgvgtMOjTCW") }, + { XHDR("ikzh", "VLSjRsktLMYuDXmgZFJXfVHbeQTLxeAjcLWLzyGHFYxewnC") }, + { XHDR("vmvwzpcgismy", "vTbgqxX") }, + { XHDR("ptle", "LGQwNdJKM") }, + { XHDR("hg", "cYxBOZGHzVWKRtFNOCvYgXYXrWqDBAfxlRyGxBnqHpNTEunKfDUDAhRlyETZTT") }, + { XHDR("vjvkcsg", "MTjhsfopnB") }, + { XHDR("hee", "GfQaTFgIWpRltXCledjVzRuaYtmSmzPZeg") }, + { XHDR("gmasiyjkoogwy", "vyCpAXvvhSvDejVsMrvCAQSIjXbrDnnoXRzUXhcCchXBJXeG") }, + { XHDR("zofozgwraduc", "BoKOSgcGaKljRknepviLbjJQXctApFomLOTkyLMMQudiGzkIpiHsBKpXKkgOOGve") }, + { XHDR("l", "KwLIaTKVEii") }, + { XHDR("rpotnzljvdpxwhbm", "lqhspDQumXhsgDRoFqRRvAfOAi") }, + { XHDR("htetmtdruhoteulzd", "LtZZrKDc") }, + { XHDR("kdxrehalmcctnlisnj", "hjUTWlFzSZxrxjULRUzlzYMATvZcsCkklgLXPIJgRofKM") }, + { XHDR("stuljlnboovwvztdfp", "eMzSibzbtLwWHtXLEByPhwKsUQftmTrGasKvfIJENbUwNcZfTVjjSsTzJOOz") }, + { XHDR("zc", "ZCaotQadYAxToDpATgiVfTKGR") }, + { XHDR("l", "TCTkEIsvpocbLO") }, + { XHDR("dgmbglwe", "EyVFAObJjqBUFRqHlEtgahCWdltzvMOHxStWawWgYQhjQZTr") }, + { XHDR("pprwdwgbd", "WxvJOnuEFlQBxrdzzbubYVljtWUENcOyHnUxGVRIEuHFsLECApNYNg") }, + { XHDR("tnuojhlzxfixgs", "sxjNRxcrFuJyXqiUTQmqJtHkYfFrUTiVgaYyLjzmNLwMmIEofLfrdpu") }, + { XHDR("islutxyexuqmwvdt", "yvEfoIvlqgoYwsUKGhMLpzBlWHThQnpglDQFjWwXLUEcCTHykbspTWOmhtzZROpqLkRwriugwkb") }, + { XHDR("pn", "brLFxQbMxVLtmFNZAhUingVlrXiVvnxWBqNVPfwTmmVUdZscYwxgabOGuXzKwmRf") }, + { XHDR("uzazfqodctzbv", "XirwLqLXhncGXnFvMGJIifKYUjsjUZPAvjNeNXascOjkxAHVQ") }, + { XHDR("yhbcs", "ZaZHUxGcJuDLjvCkASpjVBnQSpWCl") }, + { XHDR("dihyoepewuol", "qFwlbxuVuMBDVMLSrasAoweuQjJyudBdTWNrmOOYLvhLu") }, + { XHDR("ipblgfxfmece", "fpmCn") }, + { XHDR("oxdpgtlvupmitff", "UiAOuMYDEYVMpZtLYxecYXcZNlPSPIuloNQQHoYK") }, + { XHDR("zzsilzvxcysgdheurld", "WGyBZlGIteRkXZRVMqplVzkwvmUsOrpHByYadfcRZsnk") }, + { XHDR("jadagxhtk", "DjUHhhuMKiUulzrYnhDLQN") }, + { XHDR("ivq", "xjSwoSE") }, + { XHDR("vv", "pdTvkRzccpjdcZbyhgqpXfsKFxJgUWdqbbTGfVwUyYsrvTvfHYEMXSCgZJBFtdTybDUxHOMoyxWKSxm") }, + { XHDR("iycd", "eftknguulFyzpVpENvk") }, + { XHDR("xaekjaylthk", "kvgvxPganJrN") }, + { XHDR("qlfypnrknmgja", "LgjTpfXFGoGoKSZXvGAwEslJncPRogHQalXLaAxqGESgLliZsbtLfbJRJxeNGgeeeotNtjvpRW") }, + { XHDR("rg", "cGICkeJNXHchilhzXWxknpBaDZLwLivEMTtczdnTzA") }, + { XHDR("wfrpzfqikteiujdg", "jFLWDNcVJaElosYVHLaKGSkGxVMXCtUtxOEHUWrEpxQGlZXhXGXwdxFhogZNizmBnqqAPnjaqLcGdnct") }, + { XHDR("mguwaxithpnqasjlxwut", "lvJUkiPWcCXmhTIDFIBVqQYsOHxCSIrfGWWSdDwCVBRJuMqt") }, + { XHDR("gnrkrubbvqyp", "KUmEUOwLsXthxZhnwEbucFGZYzCgbtbZjfmhP") }, + { XHDR("qznzwidbdlzfxz", "BSlmLeMUHzaJrTmfBnldBmgaqEAznaWywNvVIiW") }, + { XHDR("lc", "dKWvYdBmnTfmyUVqpmtKwsF") }, + { XHDR("vqlx", "djuCTiztFzJ") }, + { XHDR("djibol", "EdHSMuVUdlsCsS") }, + { XHDR("aqzrqvyzzxog", "fcrpbvWFavlTPZDZzpordNiPOODdRHTfWzqgKBrGAEhjSHShpxvihMJnK") }, + { XHDR("obh", "OuKVREmnyGlgcEBo") }, + { XHDR("jtyydxmqoyzil", "JvzKKMQIYwzXLYxQfoSCsFtSOOUgeOFjywwohYvGFGvrvblhpzUBrgkb") }, + { XHDR("lxbrxupdn", "HABWtqXSHWpnLAtwCZEeaodgYGiCELiPMuyPmzSpCEfjMQgVeLMtfh") }, + { XHDR("rkhdssfxicwormnt", "QLGzdzFXpDrmEp") }, + { XHDR("yzhwajpfbalaarovn", "xfJRbDKUeEnqECAhqBzFYDMTFWASDUiQorMIaMbHSHbzAvUEkEKOJf") }, + { XHDR("tmmpa", "xgKNLeCmuctGjPZGSRbPyHifvgAxZNLTdUQcBRERZdBkRmJYNA") }, + { XHDR("ucephjfdhuodmlmotgla", "leiKacyWcfXpZEyUzEomcQjwEdQwOIsHhQFSuRsaVpmgOnUoKglGPtHL") }, + { XHDR("aoftiqhyxuuscc", "fnslWBXpmKYUqoQnvfOQunucfom") }, + { XHDR("tjwxsbwhvjpo", "YYpiwXjKelHCuNpq") }, + { XHDR("doxijoszugcvtapj", "UmkyEyEkXLeEbGMzvKzBajsokvhzaYTfqsQnFgEO") }, + { XHDR("kinrrpt", "EbVqNfncJKGYrfyoqOYwntLpZFpKpfDJFsFgzlnpVtCGRiOdjLzsrxFppvyAQcGw") }, + { XHDR("iyofreefkz", "tSDSaxoBHPiZZfzeMyusFjJLZWO") }, + { XHDR("hsdzbyvhugam", "vlnRLvuQHrnlpbsQoGwFEJeyzaKeiGubsNKxMiukYBGBFoDYLSEPl") }, + { XHDR("qrlstdd", "I") }, + { XHDR("gbtdvdviltybhekjspss", "VVlMWYcRfPDrAcqTbtkSoHCpyFVqrtsaUBepatkgOvXTrDahwBbHuSidZuPxCKFcFRBPfNY") }, + { XHDR("qrbbzu", "EvaAObJUoTLdHccIJDLNvyDHaGeTlO") }, + { XHDR("xxxiclvirjpbz", "hDXWokhxnxvgLqHWyMwFwtyxXo") }, + { XHDR("egxiaghzdla", "cRzxrFntYQCTRRJfaEUqqWomDtpGxnYlnHlOeoXepII") }, + { XHDR("u", "VwuNWmQkhoyYimzyUz") }, + { XHDR("pzsjegb", "KcbIoCk") }, + { XHDR("uceidhwyuewgerf", "SJLDFIWXJFqKBNAfXUfPECiIlaHpmtYQvFVDtksjZcZnkteokOrAbLCwAyUHoaJXTYXyr") }, + { XHDR("uaysqpudnchsvfty", "UDxQtvMguVFAK") }, + { XHDR("aidpb", "cMStWAMwkEVzEgXPZPJsTrWndrqPXcToIjHxwtMQtpmwT") }, + { XHDR("flgbzvywsnytnf", "HrebbyAWIsNLPDxltddcABjpjHKySpcAoopNcOwRQvWga") }, + { XHDR("rbls", "hqVSaYqganXHoEFBboTTzekfhFGQFTYgpxTFDvjibcYDiLljmN") }, + { XHDR("vwqftmwayocbekmrupt", "ShyIDUcS") }, + { XHDR("ethu", "uO") }, + { XHDR("cgo", "aoqsHtAPHiBglQzdqlQTFKRhjxfMUjOxAjuMKcKEduqlgZKBuOP") }, + { XHDR("unwbzkvbrcnrr", "VmHHCijXVFCNPibTEzsvEOQLlEnCxmFYlvRfTufqMhtwdBPMZMnUqEdLihBSthntIJarB") }, + { XHDR("slyzuqwxkxtjwydymzob", "jodWslRbRuAzqQOlVUPuWayWXivuwDBGqwYpuQGvEQrtLSUsPNNNLYDkEPRS") }, + { XHDR("ixrh", "hbNDPAzwHmTCCzsUOKBRTdbLVTNyVtPtzvzxUvlhoqoCikmNXeCXyDQDBCPIVNpNFyufInJzR") }, + { XHDR("dfyigqdeauzgdbmyq", "YSSgTLeenKFwrcvPHRoRzUviLnuvxGbzmOIziFzfZuaowriqraDcfIrbvdFvvRu") }, + { XHDR("tctqvi", "OSKM") }, + { XHDR("e", "olb") }, + { XHDR("wkyvsugrnsw", "UkDoWJYRVvFMMbwOGOuYtLvhRzdapxBBPXVVBWlfDlKmEWYTBsWgwsbMUDtpbkfJezPcTzPRRKMSLWc") }, + { XHDR("qltjtazizjkktgyiv", "LuHmRlsoHANwVNxJzQCvItmGeEljIQvaSNaitkSiBZLTzGwPXPjewQ") }, + { XHDR("jucim", "bjNkiAqrOxHqypamPmOAhbnrZPWpxhZuDqIEDcVisjpPDUuabCVfDuTujVjcMIG") }, + { XHDR("dcbgzifrcshjr", "rIHCTHmIduNHAtZvoxLPgNVskeFoXWOuWiUuUsf") }, + { XHDR("zppkfswjqxw", "cGpYNkpnxsGTLdDqHUAQujkykImngFpELrKTdPBCLjwBrAOBomhaakztYfrGvDiGhYaKyjrB") }, + { XHDR("oalngsdvlk", "OGkrphPwElStwkAhZaEsCfgRAlQpfbdEzdQrRZzwTttJyYqEZghpkkKjTTpeOAKTLZs") }, + { XHDR("qdnhwzgjqrhhkxw", "zoGKyoRRlrhNbgAgqTgQ") }, + { XHDR("bhvkqbsrwsbn", "kRXcIhAQBCLbxBIuUnxLopytsqlvJlSpv") }, + { XHDR("ksowzvpbiirmytwofpxm", "nCOoxhEMyylkpYmUWdcLpsPHOQHGCobedazSCZPBaIZQ") }, + { XHDR("evl", "POgjgrgwEcicMmeGknMgXmYTiGarUDtaogLMZoqCGrX") }, + { XHDR("ymkvuqdxtd", "UpTVFnTmYbdVBLzRRbawBNubTIqMgbMUiEDKQbQzWNuFBHtACOdssXZQzSYVroYaXuUWHjkOD") }, + { XHDR("uwfrzcneyzojigiize", "XxkCnbLihBvyaJvhByVxQSaIYwYfNANsAfZBQpKAFSSDYsVkaweGxXEcmRHKODEyZWrSEMUvOeE") }, + { XHDR("adifqlkpiobtqudi", "uiapyeEdkmQKogWWoxHfUyRjceypoKgIqLvGmSrVQfvWGPiHPHvCMNHPoQyImUjILrXcxSlvXz") }, + { XHDR("kdtuxd", "okOTTjecInfPowWvKkKpQRFgm") }, + { XHDR("wj", "CYgPjIlBMAFPgtJzWitKSZMsqwpLhEcbezPTj") }, + { XHDR("ysqq", "gQsEsCeFDYLabCRIVBCUMDjIoSpHzxGaaDxZnFyvCwaeIXYHDhTMmnWxaiyJHRjUdxyabGryLp") }, + { XHDR("kltpooswjhpttvcokazm", "BxRoqTqfNJnASmkdihthPolfjuEkOyytLJer") }, + { XHDR("adbkobvyv", "DjxXcEHjyFeRDpnZaPmXSHpwoVgtAiOsBMOUhoJHtWykYRDXQWzZnoRBaHZ") }, + { XHDR("jdrnykkqjmmmsvasx", "HlxuTOkhxRWBVanbuKlsDPsHizWqLsaxmHMhdwuyDk") }, + { XHDR("taqsznebbxqfpg", "dblDBypTpDMUwMKAtcPDLcI") }, + { XHDR("osdphgw", "MGWrTjjrvvKBTEeDyFCEogIwyTQmxCsPSPwdMkoxMaGxlKvfLVGQanSauBXTJzkhFpkLiGbXuN") }, + { XHDR("sv", "ymthSFFz") }, + { XHDR("kkywrpxmk", "LhXuMnGJOhGNjghCYRYTEYHiFYeG") }, + { XHDR("lrl", "jNdCgZsTDDiLYjQmrDgLsEpt") }, + { XHDR("hvecleuwynlyc", "GmlgeqnUfuaIDlDyGcsYbHoufvXrFuweUjqOBW") }, + { XHDR("qtnlsjtbepybu", "FFlXlLCnEQDueBPdhPvjShtqEpAFjmtsorclgSwZCIQEogvYHkQyrbbheE") }, + { XHDR("sdulfgdbwccvyaeofz", "AVFHQiOHUNJEVXvHNQGBVsb") }, + { XHDR("bbujf", "UUaFEDlgdcVdJhCrwRufTxqNLPONrLovqalcOpDAoQLfYEvuHzqTzUjbCtZWnFHojKwjUWph") }, + { XHDR("jnqdrzqojxncfe", "TzkGMjeXVG") }, + { XHDR("bkvovqmeavx", "SSIZxiGmVoGHwwutohaUfgeGdauCyzwQ") }, + { XHDR("ntjckohvdzm", "tGqIhrixrpWFPKqtkMNVAmbSPPNHErCuSYJUyiCbiExHoMSIIREJaRpkzIqyq") }, + { XHDR("kyrfippndrtepzif", "TFWYodQROiJsFFSFAQ") }, + { XHDR("qvjdtzlidkw", "AQoWUReVzHCPSjfxaEpnEreFaCIHVLaCiibjkGcrjPwanrpWCaLlflDIkbEKhDhxkaVrDXLTzUYFKniu") }, + { XHDR("xzpk", "mYTxgbXZPJRLBbJDcTxWzIsRcqRkiZpMKhpMMERDhtTSVJZJMRNtADvKjJuNzpQNqEjHZPTpPT") }, + { XHDR("tdufixsdhewqiar", "qaDEzJzTSYBftgxXabbEuxpxyCDilfEpJ") }, + { XHDR("kpnl", "yhcRdHpJJHBXBbJTNEYQ") }, + { XHDR("vxjwrrnxhnkkmil", "mSDNdywqqCpusPMtX") }, + { XHDR("iu", "jGJUmHWkcnlHbZKXQFpOVxPJg") }, + { XHDR("qhqwrkqiexdprwvodpsn", "IjPFWZKtXttHmMTGkhhbinkSckKrndlWIgLRDrZnezXFplg") }, + { XHDR("a", "ZonwWcaEplDwjbOmcsIuLFldnRMSAHdyRlkYLfcfVREXUJSLz") }, + { XHDR("bsjsgeprjd", "roKqYmpNMOQngRGkwuOtvPxOwHSlzJZUThDJUPldTYNG") }, + { XHDR("xwo", "FBDkxnBMEVah") }, + { XHDR("fhyn", "EDHVCdyGbtfbQiqOXgM") }, + { XHDR("tzmoyeleirseydwf", "UDXAmhPggwmqstxkuMwXqnppoHOtFDhTOXPURLtqQmBLep") }, + { XHDR("uqkmowmqnphdhbgoe", "rVIMixzEfNpJRlNknjtLjcuxG") }, + { XHDR("ut", "HnIxGDfAVOaiXAxAmqpldWNuDqVyLewJryL") }, + { XHDR("cygokbyoxaduxua", "W") }, + { XHDR("yblavhgo", "SOAhtTyJmJmxXxwfvuTCrYNycoMgIBOILEggoZszpuzISJJjCaSwtunkyd") }, + { XHDR("krsofrdngehdrz", "dBiUwrudmnfiVoeASJcwtiANJTsmgPSjcItGYVSryTFffpEAIGJWYLGzxUvWW") }, + { XHDR("ggwk", "TjKz") }, + { XHDR("upespzufuk", "qSfULfySxbjurtaNYXHHVOYAJkrLDIDDbIuiyDdFaXrDskGFjjfdIypLdKZpvKIJrRleFPworxbRQR") }, + { XHDR("uepbdqgogbm", "cbCnurwSREhPyNqDHjhgKDe") }, + { XHDR("pown", "VFALtiLxfriyUMihTplKmSjalhrdtjQIxuUSkHUYBzRcPYSfMBNqQlTvLtOZhMseJGyYt") }, + { XHDR("f", "pEpDMSWwDgQqDZToF") }, + { XHDR("hllmsnpzrb", "hXrAIjBTzdfdnUYTsbuFhdBYhYoKGi") }, + { XHDR("otialwpcflydvbhsma", "tTxlvsuiAmfbCCJZhqoPlSXKcfkjCwztqSlsfSwcuUIpfq") }, + { XHDR("tmp", "gxTTlbaiucyANDKmfkQbBPFvBeFgTAmlYxmVhjAstgjLBDEFFRkw") }, + { XHDR("lusvtuvznqcwuhnbdll", "yswsmvNgybkpvPhEcIMhbugXlacRquvqGZKxZuVbBYvzfEVloAqbbh") }, + { XHDR("lookm", "uRsSKuIzgTaknZhzTAEMevHdqdGQkeydOCMWErgdCuSdMxAGLLeNPvE") }, + { XHDR("gij", "PJUzgbZOPOZ") }, + { XHDR("xeukqnkihnjcuysw", "kKNAeupvmvcEKAlE") }, + { XHDR("iwwbjgybyfrxmgdbzhjg", "RneYsgDnUNCzUuNZkIVXmFbeHLXUQrXqOEEuJKcOvZ") }, + { XHDR("jsuhtydybyia", "YcQctxiznOZnrManjHtHWTRKLJfdGMULUjjzxXgjiBJGbkwNalMsuYCbiXqnDGNmuvOZilvUsXWzEROp") }, + { XHDR("da", "VcPUXPSRgzfbwARhtWHyhJuNNKjIVYFJtWJhRpbEFlK") }, + { XHDR("efyvqmvcxg", "eIJgYMlicZQcGgYLuARYZCDGZwUpzVHjmogTaRHOhKOdLsCNCfAWUTwHFdqsPl") }, + { XHDR("rkhzqfupxubma", "aYDaOWMcpalNNxohTVyEoVBWWgVqRaVBOGNIRbqQoBgXAHbQcQCUGGofdvMFtctjUbOBeZOC") }, + { XHDR("uzdsmqepxa", "ADUAKOkRrStSbDQSUKPLhPckJQuqzstyBHRwVwctiKpxgMDlYxSrcJHnqdYG") }, + { XHDR("sjopmdyimmqnpoxcmx", "HgucXRtcOEhYHZBNmINF") }, + { XHDR("izu", "tQAEmHLSyOHvDbiBrAMvIutlhiFsficajuGzmhnJftjTuxsmmqvsaeGrNwhtPBqwxlk") }, + { XHDR("esgykszndkzlkh", "oQWKRbNcPuYgReXKonUYnzONcNIGxJAZyySGkxPjFlFuy") }, + { XHDR("svtcfnkkmeglmaqyeyd", "AOmxdIxPkpyKZrrZWPQighlqpDRM") }, + { XHDR("xyxf", "xnudGQhbrohSQPASuPjMINmUfhmJFUWyMaInKQIirdXebHOpRvqqPrThZRphiLJKEJE") }, + { XHDR("zgw", "XINcAIevSouOaThxRUmsrCrYACGMHJJpmPTnzypFVtVMQasFkIlPXAaCUmiOdZaQm") }, + { XHDR("tgqnqs", "jQZVAhMXtZFbbpjjsHjCftwqEgFVriOeYDMDTbYmwRf") }, + { XHDR("zjbpdxcmlwfbgixqgpvy", "MbLAXijjcsmSrlFDwwQolnlWztzAKuwQQadllKodTULXPoamxCHaRO") }, + { XHDR("dtnvkzhpfqfitxyn", "YGuZDoRZtJahdfBnzAnKQxWGV") }, + { XHDR("dffhscou", "KBbQqWt") }, + { XHDR("gesplrbegdfrfr", "LhdNJxHclBNIzfxFkRcjueW") }, + { XHDR("osbz", "KhQleFXTnyOwFPxmLghURmdDncwjzBtgWytPMDUUEKx") }, + { XHDR("sigktshcep", "DEKxlTAjoLoNwYZZrYNdTQfmFAxWlJNSUluZrjiaJgITqlITFEoTPtfDhXblBuv") }, + { XHDR("ss", "uLiHArSnDCdSArptbRqqZHGhFjIrnQRqSiW") }, + { XHDR("eogep", "HROwadHcPHANdclgMzMDuVmRSpdyYjrsdQQQKMFWBfieRyRH") }, + { XHDR("kvdwmywkjdxvymhej", "YJAWFcBDluNfjMbosvuUgXycipAYChrToEJRPdvnGRubPbWBdYiwGLYh") }, + { XHDR("asymdcthprhjqbxcu", "EvYykVrIJqueFffDrsmxMFAzGsWsndDlMvTwujCeDHOhFdLXsJMlk") }, + { XHDR("htcajb", "JXvLvByNmeardMOBHPiUbIMkcspTASnsGSKqkO") }, + { XHDR("otl", "PG") }, + { XHDR("loziymsxgqd", "PfgByoECgMOnQKNDTockUdJnLvSStMwaLI") }, + { XHDR("atjmpdjtullyshsph", "iCmazGpSAfakFaJMnyONWumBuRWzbfaQiJqocoAGEGiMZHWGyHhJbcgAcYdtFhanwS") }, + { XHDR("lspqfms", "eGTPTURtvSfDllQgIcTSsMgGjDrQBqsvMtAEbCdkBjykrtbmzddIzpa") }, + { XHDR("oui", "lgOcKdUrHPinFRzoJjjHPItLHtZGGTpeMreBbeBIjccREfyIQyWUHtklFgTpeQ") }, + { XHDR("e", "jNGMEWsrWTrTHZLOHYBnrjUdjFVJQCBPTugrqtqxpXkUoNLMhhPQmSqgqPbQUqKokdJKeWmJN") }, + { XHDR("gypxafukwhembx", "OODlQqyjsuLRnGbkiirIhxgTUfjoVmnItRnGzcG") }, + { XHDR("dnsjegeymvjubstts", "ZBgNaCeWZdDX") }, + { XHDR("omllmswps", "QweNIhoPQJabvXLoxaeUQhTNQfdLEmbOSmJWzZShRYqpupzyIajGLjLPFJxSHZTTYrPBZsVER") }, + { XHDR("szpkiaowqmi", "gHwWTAsvaIWmMpJZmKHeVIZZTccSRfHqqacunUNgSoehmVpjjjbtGRrnuxxwSacBwtLGTWI") }, + { XHDR("yberbickzfqrafpam", "DoTDwMBZDaCzQciurvpUnIEZIkWaGuyfjWLyCMZzhRqVaGFwQI") }, + { XHDR("ypknciutezp", "ePVbyRCMCJfTtvaApZVxjrvmzYarfoiXFcoUzdiOREIAwLvSUcuHcjThsUmQqOnTOGcnO") }, + { XHDR("ckkdr", "BARJRaJBIOSAYhtlbFjaFyAzWLfAjNJYJzTotubuDhTifQEqXGHwDtDNVrNLyyKAZ") }, + { XHDR("vkyrtidkfhtwqtnyzzsl", "KQlgCeYkWzfRPlPUVrTsOuvJLfuOXR") }, + { XHDR("qszoqnyjwr", "yVIUcBgtEMjUqbluN") }, + { XHDR("wpsazkcmbbmyestl", "PpIPVaMLmqsjyoBBuhXhHLzfIGeVEzjcNAOsjsLXUKisegI") }, + { XHDR("btaocpxmx", "OVVqosfAKrqFxdwrmgKEGbcFPuYwLoZwOhMOoxAmx") }, + { XHDR("rhqsmjzdmboozegmg", "utTWMdYNQMWrNvdAKbREgCATLVzlMZemHoWJdvGScdnGgkDHmQCNlKLFhIqtJXhOODPboIiVEMZWPpHR") }, + { XHDR("nlaxxfjxtgwbbw", "NcdMdovUJEA") }, + { XHDR("mxojbldsudhexv", "j") }, + { XHDR("rutknjnyzxqxcz", "mZYJPzmtwJRrddFZjKXUWvHfqMwSAEmuPZKZFPB") }, + { XHDR("owt", "SazOQVNwq") }, + { XHDR("oxocjkfijqfsj", "vyoeAPAsUaXfIISFyK") }, + { XHDR("htpnfnprieu", "splWaAvNWLttxjtIGCjAPhDJYnFJYLgBLGCnhnwXQJhUFTWxzjOwLoJkpEse") }, + { XHDR("smiiuhskdoc", "ZRKTDoNSFmIpoVvDgvAxDqbxurfXHJUxHiHgUUrXRdzXMBX") }, + { XHDR("wxbocmfcqbwvtte", "LHHPuzvrhwzEzLJ") }, + { XHDR("wjlwaobtbm", "DUXvJqaDBOAvIPcSrZcqSejORFJmEFNGLgMOibYTXQMlgPndoSEmOkHdsTAXGdVmt") }, + { XHDR("joiukxrudkc", "WQdlHfEAnwxxbySFbVQCqqdqQNkalpPERjNtdSYkqxcbpbiGsnjNBUBNMGgddBQkCYleq") }, + { XHDR("bfvqibqut", "ZUcJDireURbRCOoTYsYpZPOJ") }, + { XHDR("hbcm", "UZKNxWdGwUsyUtbcAbyMDzkROgolPxUiFfJVTzlIqGTyhHTIjpwTrxoxfKgex") }, + { XHDR("baotrpxroommt", "dbXsrgBfJKwEtdMajMQPBjvhcOJXjraWvqqQheyfSjMsoYxZGFubNpLXRKSTsZpZ") }, + { XHDR("nnwotdkqf", "lkWLYjgOKiDwzAWmvUZQwfKCmDHHoNltoxBAAVAneIAfveBkafVgobZUEvjyvBpHvVWAbsNgVJ") }, + { XHDR("byppj", "uwcMlhOHBoShbYJOuKTtJYqGacQYrGqfoGmJMwstuPmmBSsbsaPJKoUWhRfUTVfhVwcQksRj") }, + { XHDR("fnxaxrtnhgjskoegdmez", "vaDfWvclVlnguGJGmsRLZhbGXV") }, + { XHDR("bpayczms", "kMSxFCisEmPRGNAXaqViNJLGYyutTHqxsaiNLxQyNguyYQshYPBfNoZxYQvvpGebJ") }, + { XHDR("s", "InsPvxoSAzfhdByPLEBZzSPHAcETymlTZFaqcFGHrIlwf") }, + { XHDR("edmxcbyyvlqjtzugs", "igMJKOmHjUyPTKAoGnslzpHtfHxZhgScgAeAfDFHIgWhoYtfdYZaXbse") }, + { XHDR("pslmzzbeikstfvkfpi", "Sf") }, + { XHDR("hbhuhpedcmzrbodqulq", "hodbtJJnpzXiFLJIVxaJTEDPzbsjcpnZzguHOBTyKnExR") }, + { XHDR("ohxguoyof", "eNAjFblgqgD") }, + { XHDR("gidozg", "aYrisJccqopZgSwnwaQiTlrJsQINARdKlnXR") }, + { XHDR("hptvtrbgmi", "kEXnTvomiTvZtmMIepxAJFyvgNhMTJpggCftIpYFijiGlR") }, + { XHDR("voopnpphloishmrirwsd", "VwIxCTrtsJDFTzQdkBxQMWcVQnEYAyChdAYKxKmPpFROVsyHdwiuAVulxLOTPpTOv") }, + { XHDR("zedqakljpbtsjgv", "iXtYyDVbvICJLEFmOBlfMBTChGRqxOyCNJyfOWwblLSAMcxVQCXOvJjMQXBxjhFYYqAuG") }, + { XHDR("bmefjitredlaapgjrrfk", "dKDPGNfynulAVJvgCxWOXNZzLjHFIIH") }, + { XHDR("wwbksnlsso", "KxwGxagRMFRyhhOyfOxwzTpGIhdSPTlGRCkhhMsKWMoPaPlFKCiumEtlIflnwwktfIARQhSIWqLBJU") }, + { XHDR("mhusqjcviuhekxqjvkit", "fovCxETttpADNURFrEmbAkpAGcnenkHxuGUcgfwHHbzfexzuXVaiAgllI") }, + { XHDR("cnrxtzskuf", "nByRlRVtmChzwqMxkVLNfuxfmUCAsOuo") }, + { XHDR("hsjasdrurchith", "vZnrPZgbkRiQMjOcfGvDVqlhAwRAaPPHDagpyYyakPbakYratiOrGEWIT") }, + { XHDR("i", "YuJp") }, + { XHDR("awebjligyhspxzb", "jLCWKpyAfyxmQNgflQNHfUnJArVRUFVnMWdNzQvQaBuMKCnpIAfNZXNcBiZuHsuBiHGj") }, + { XHDR("frduvlqui", "gCqljwrHCwtwQybRrjQqRZyjfkdZvHZRNUjqXyTpENNNt") }, + { XHDR("kolssoyaftxu", "IVioVCXsnuoOtpUOcXJ") }, + { XHDR("joodygydzztykenh", "YAqSSsCIOArHNVFBJGbciOJrlYuAoYuQvrUhoadoPiqZSzalIzAIv") }, + { XHDR("jzvpjyfieezhb", "rtdmnABdEDtKPsvGaNCsjcqwUfnjHSyfJITidNE") }, + { XHDR("aybzknsaewcgxscyog", "DbLuLFSyvNUWBvjNKGCFIohZYFqLRlJYCarMhOPOyAWbFXRKgcnhXYqaSUdazfdgFYGt") }, + { XHDR("hyxu", "WHLgOWhrkVqiXNhZsKsezStqYpNMGKlishHrP") }, + { XHDR("ynootjn", "ZsfJKKFJWlZwZvtCvgPgKPwZBgbkniVsCOADBZWcvXvIkHtxhAnTsTPsMPdhRSvGflQB") }, + { XHDR("fshwcfutcgcep", "mAZtazzHsGZXdvXlLaJeDlERHPHWKflFrJUXslJiLukOdOZhWjfChrQTFMwFhOfJHZjm") }, + { XHDR("zbzbiyngsvmt", "SbxjiFSGAGbNvGSevZgEehOCaGCDRURpQmBiQYXqUeKvSqqPyDuCieBWTYccnhUolvsCfQE") }, + { XHDR("xvwuddluy", "iGrBelMWlDxwKEUx") }, + { XHDR("yeupeqkqze", "xHDEiZ") }, + { XHDR("ojgsykkijpor", "fSRuNKPvKoYJyRsflDwOMuWSRfTTPsCSkqaTFgyQAgTyzaaoOzuKeT") }, + { XHDR("jzc", "APbswRAzpmfOeHNiBayjVYrfFmcLozL") }, + { XHDR("nphrallketsjzlc", "zyNEEOxaCZvVfIUpYkXshfJTZ") }, + { XHDR("uavkyzjupih", "WeyUtEVzuL") }, + { XHDR("fwtveaowg", "eANfdoDphZVTUOmSfsUlLTGD") }, + { XHDR("vymgpwstdmlyiluzo", "gIywippHYmtmDONpEPzEYNeJuUBdRwpgo") }, + { XHDR("zyldfphtgliuwklfm", "ENpFCkWnTGRMtyoTGmsGXvJSEdDrjjBKlnBIfRdnWvDIJpXtEUPSNzpZmpIygHLKrpxWgAjGotAEfA") }, + { XHDR("ltbjtkopyt", "wbShkVZjREIVoUrJzEWiliIcEqIJAVmoxIntLlpKAtbNSnl") }, + { XHDR("zbzdmzyk", "HgZvtUoTciQEIwPd") }, + { XHDR("glmxluqqhbngr", "ZYQJGuSwqyAkyuwsJ") }, + { XHDR("yjhef", "CDVtrRVgWZrgCIehirzkSaMuylIfcvkpzDrrTbwFsLTNWsxeWYdLxvBrgGUF") }, + { XHDR("mmcyzerifz", "OwhZtJSViAyvrqzRZsVlexDOSDMPJiUWyIJiIdrEjjacYTLAALFCtSjEOfIJGpsP") }, + { XHDR("jglxsrdusuxna", "sccyilHtAQwVfgzQHlnvUtmeiywkVKoebaHh") }, + { XHDR("iemilu", "BXDpDxukNDnZpxUuhOVqJBfgjeGRcVRtRTzlMPa") }, + { XHDR("fzistnvopvbwostfw", "UOnmfYUTGOJIDIwQKlDRflzSmbkXfeIvMrJhUGkXXbxThaPZWOQwGIuAPVjSTu") }, + { XHDR("atucmtqxplzwmuyzubfo", "HjnuMGKeKkogbdDdskzYBSloQaLlgYUnWVxphAPUgXkcbo") }, + { XHDR("zbyvlwzt", "NbKXeGQBmOdZta") }, + { XHDR("ea", "FRKInXYZIzwbLKtfPKhbsQnUItLEoRbcQAWJbNmJiqMuUCDOU") }, + { XHDR("asxfzyumqqe", "PZRrEvuynPvJyamQVeYhbaWglkW") }, + { XHDR("qplwxkjuoahbhllvjn", "DtXymDErsDKQjAOcqHJPEbzIrngmooWvDdTfzyMeXtPQxiTJvlmwAlDElmitOziKd") }, + { XHDR("w", "dTNKrpatagiQJcTlPZwauSqQLLvWIhqIjDNDaZxqq") }, + { XHDR("bpioasd", "HPCqjneazQsUkDbbFwachFTIhfawInTrfiRcOQDPIOBwquDhPinyOQUokHigThAwdJUoMlEDNBu") }, + { XHDR("vwiwvdxttoe", "loBhMkXyDoQLEIhwQCjJiBFarMzIqsxdtpkrHBYPbaldJtYeaDVhdxgW") }, + { XHDR("sbplzfex", "dpxEtdyUhzrRBVwgKdjcOIBAhKQbfYneBhLCwgPwjaETl") }, + { XHDR("huqceejcnwk", "rBOwyAHfdsNpHlsTfkGkyyJezotjkEvTbQbQhiJPffCEuqnKUXQdEBorxNkahbNowSHFIYd") }, + { XHDR("vvenexmuj", "HRnQbbhKQtqMHYwBaxzHEG") }, + { XHDR("xxysgwao", "qAgMNhvavBaVGQibamnYfsYwZGAeYWepMNQceyycyjBwNGwYbFOoDsCvBuBrrbnukSMG") }, + { XHDR("sdy", "UsfVnUByYHhCytPstQHJhogVKAkXeK") }, + { XHDR("ndephmctxhws", "TomsRsPlwdFQiFaFzMUbcKtzMoDBBRFTUjTHYygNkwU") }, + { XHDR("qzukl", "LjZRFruXTQrrmcWoqdOGUZvXZMFPkDSxSzNhMzlgySPWTR") }, + { XHDR("fojpvrscfgmxtrloti", "zNjVhyTdvpddwTuMI") }, + { XHDR("jfeipaztwkhfcwuropl", "mVTWQEyfhaXTDMZSvnAITPBlxshwsEvHVCtbgqMbsnEObqSWtrmsSUreVzbTFEtMzPELaQ") }, + { XHDR("xslhmiabrlvpnlw", "llMhYjqleqrdsAXmyPpRmoNLjnpovCpDx") }, + { XHDR("wthcvjxsgpqplrejzfyj", "DRgQDiVBKzWHvdSwHpgumHpDuadACzVUoYTwjQrtvpNFXHWUeExDWuHIlQGEkDJEuUby") }, + { XHDR("vz", "SVdkOvxhYHa") }, + { XHDR("ga", "aKtjgFJPzDO") }, + { XHDR("bishdmptbxis", "HEteZieprmyfRIMPzMERvuXIlxWVsqZYgtDRniqD") }, + { XHDR("xkx", "nHvBIXraWAdZwBIrRxyYHGhgkgKFBtcIJEQDhvQKEWPQIcOkAGJCaRiyuYoSWWdanGxxhJeogJ") }, + { XHDR("piwaalzwdmeo", "RnTlVmetGTDILbEigRruEHshopqZcUVnkWDXXtF") }, + { XHDR("nckyfveq", "mDoBUYi") }, + { XHDR("gcliqshrgywamx", "zwPDiDiUounJRAocRvCTMWIn") }, + { XHDR("hhyxrlqtgwyvbhop", "DDMuVKxwVlBUTXjbdGncVjoaCATMVUyTfcXdVdWVpJqBCiHTdKSYdiZEMiOOAmamNfAxGoKS") }, + { XHDR("qujqelqpkgqa", "skVbMVFjTOppVMrxKEBKmajFBnhXxIyEXSdzQhqerUvKaYIFULTgJePUmBAqAFijaMfikEzwnIIKg") }, + { XHDR("npysdxosie", "RBqaYpsDlXMUMgwZeIXegMZtNserqjwqGejTEwzhS") }, + { XHDR("fbofepqqvckkkqu", "TJMemovHOtpxrFdQGmuoWkTrctTicYIpDCUrzFPkONdDtyekDInkYNcHHsLnsvXoKEFp") }, + { XHDR("smwtokdzrvwecjrlcki", "TENOCMxLXaFyZmAYTYUsJjOqwfdtnuHpZAz") }, + { XHDR("herfmqgoenywwilfgee", "KePjzrsKBeUQfSazAlR") }, + { XHDR("gkozykxdrnklopja", "ZwjAOTgUFUQI") }, + { XHDR("kt", "LbfCiGqdG") }, + { XHDR("etwehywgsko", "WaBMjmYKKkWJwzvfHoKzsXsXCTEhOzBBMYqeywwkiQFcMWNaIGecXOCMbGucRCUeRuuCuqcqItzCffh") }, + { XHDR("wbpiptovcctmgctg", "wXZGDQzwZTgSSSGGOmwfJadWMoUuaSLj") }, + { XHDR("gakeeddnxuzamaqhoetu", "mJdtfFVhFQAOifAvHSQZoaueNXoThRZqbFOLqVZvXSfOWHjaOBexWHYeambNsTwvFr") }, + { XHDR("hbxosvqdavgqvcir", "RUoTQINIdFMhiPcOsQjtKwPevhkAWPippVfOBAMPXzaHuAijaWBWLK") }, + { XHDR("hneybwsmptdktri", "nTbYHgEAolNSSecuMxAMHvVPfAIvwOHJkhmkPaF") }, + { XHDR("ykzcrgbbujc", "xwAlfwRDuBWuHLdjVs") }, + { XHDR("i", "COqboqlEdaiephhEbuab") }, + { XHDR("dutinpmannpwq", "ZvrEslKWT") }, + { XHDR("gqjuypml", "QJdHxSjUjuKOJdFKGmwugUYituKppOzFbWXnqpPaNPUbYBwiKRNrfNVXwBQlnKlwPcUwBkfZerCmQ") }, + { XHDR("whjzlwl", "vYjYFQzNMxzduRFjSIHBezCncMqMkoPsjfdyKJtTVQplfQpOsrGCtgCQDTbobXXA") }, + { XHDR("bexsagqehsslfeehsjha", "zcoUK") }, + { XHDR("seyrwbn", "xNIFLnuRfmzeFRZqaciWBxaqomWqXUFHurSFEYrLahnfMewFfpQYaNniqSxxNMSkU") }, + { XHDR("iap", "NuPODfgkArrOfqgalWalvwZAnkAubQAIbFZtfdgAnKrFuSjLIDZtoSfclgazWRwqtWIPXnWaFm") }, + { XHDR("whfpxrdcfjmartawakb", "eIzKjDtiGfCqddehDlwYhPzVduJZUcYsytmhgxQAbasWNEBVJIgBRoiclDQnUYTIkhAsaaoA") }, + { XHDR("lnpyiy", "Qxm") }, + { XHDR("ggncofkufvkyqfulzt", "vYnIuIPmKoKamLbWKcydBIxexNlDkpfHXFWXQhhFRxbsFoMwOPvfIqFgtVybcRxHvipgBqUGmhn") }, + { XHDR("jtmkooewvbzbz", "WuGLQrDOrXKQswnMODvCfQSaAfEeffeHHWzKXBQTCcAzGUtqkqnjtSYVQEnHviapAipDMRkwEI") }, + { XHDR("mdywgpravpf", "RXFotSxQFZriFm") }, + { XHDR("zbxqzdvxd", "WWxzlHAUoDuOhSJXtdSxKodSaWkoFSLfImIwUPheqYpXORFElHnGvHLlSDZTxFpZiyVPyv") }, + { XHDR("sjetlb", "SStuCgDAJkIQZncWHTcASPdFBVVmKTAcChcQGOSw") }, + { XHDR("wwcsujh", "iZfhcafjaSJyjtfYkzKrNmDaVctQqOMwmbnGisdWanuSqWacuQfUKrQPzUffZyddNalfdrcGLTtnPaYB") }, + { XHDR("mglbq", "XzlMngLWtlXZkbfJOlFNdKNNsSykVMFYVCpM") }, + { XHDR("rizprrbsegwyuemsdm", "KQUMrSluVBiFxpSuAQkXbLBjQrZMXfvanNJGqjXPZOiiqHlGaiW") }, + { XHDR("nkgolw", "xDBEOjuIrGtUtPUoNBpTEBDjBziljhfmIESnGiyrkBTjHOwCFeRhsAPvi") }, + { XHDR("crnhndlos", "YtWrPVVVjflqZevVddBu") }, + { XHDR("qlmygvbmxzfsgeys", "XSuUzF") }, + { XHDR("gwgusyrkddtpdv", "lnUElPoXYMErLuLt") }, + { XHDR("jlya", "sOa") }, + { XHDR("sxdmxynhnjvnwp", "TTINpeMjWZtdpTLALdptJHXzoMFkFRjDIcUTYbnOESZsrNrjmUxIXaeRfVFnfpPjfLfQcbdb") }, + { XHDR("ks", "OTaPEoInyQBBkmWvEqCagxUHKGdmKpZMaeaQymJVZJWlNWDYnlWQXNAP") }, + { XHDR("fbrjsjxau", "EkQXtcWEJoGCumPZNyEkzpjaezapCfmMNctHKYYUfuGjGggIBLjhgetOTXSVW") }, + { XHDR("qpdwet", "CmvKnXvnkhKKiqEhHsAU") }, + { XHDR("ba", "sSUPWQNyKHQrgiDSTMNLjiINSdEUMSRihy") }, + { XHDR("lsco", "RAuSyUoxQAdXtlqt") }, + { XHDR("zmnbehrirs", "UQxQhSvlovRYnhgufhTIkMadiytMNHceWxLTAydoaKJPcnfJMAUqvnYPdJQjRg") }, + { XHDR("uuwyzfrcfdpcnjmd", "luBHAPrMT") }, + { XHDR("uezdmhztpubqylwnj", "HXUBrhkMUuVkDGPfftWHLZxCqHFMaZOx") }, + { XHDR("nkplkunryhnunqp", "DqXmqTTvGYgBCoIALyRb") }, + { XHDR("ppfqkeq", "YYqqQilEZBdXnpsswSYgDrIGbOGypEAEDilYkEyiLomyzkpCuioTPEWhrXcQyA") }, + { XHDR("axmb", "VbXiE") }, + { XHDR("dlxidxjaro", "qKyDtkVYDLjJMpwldJMMSfZdklgKApKdkmvLfxFFUAlRljxzBBaebmgygrRtlzysyTd") }, + { XHDR("fymvpmryadyxl", "GJktTPOJmbiIDrRlUObZILf") }, + { XHDR("caklnxhfoe", "OLvgYDxbEZFVQAYgmyQRLklDRssynPVdzI") }, + { XHDR("dpwqjl", "lTyLReffFaukxTCSkRZwRvksAEaCmevglIOgqvRpK") }, + { XHDR("wgz", "LWcVhCvXzSsXopaCzxYBzZhcAXlSfnxsRiiW") }, + { XHDR("skqplednheoftxjo", "YblUyjbQXkYIqtjDaWVngZUQVVSQQWw") }, + { XHDR("rxroanegobrnghyq", "lUKfihAVmmGkRFyNbUiGqGPvamquGdmXRRRisOvIjwPzpehGxyXbQWjcpgtXSi") }, + { XHDR("txlizpsja", "uCxaWcnMPEZhH") }, + { XHDR("syhqlerfzr", "y") }, + { XHDR("jxh", "qcgXtlOPEQUtGrqWmEnWuKkhTlpGkDmbrnRuY") }, + { XHDR("lzugsuikknqjrx", "gNwwXnzwuyUpxqEieugDdFjnYf") }, + { XHDR("cnkwcjboqnjoypzzhpa", "nOmkJSmETHcawFj") }, + { XHDR("qlqlhqyzrhigbe", "sViRVdDeVGUNNpMlXrloviqZLNacfkICugoC") }, + { XHDR("lrhprwdsqyzhd", "cZcUfytIDjbeSurkihXeusCkpcTmQkhCUTiUKKfiotFU") }, + { XHDR("qjxqnhrigzlmtx", "vmwLPQcZmwqxMhajgVbBcLaowNTZMtkSOetakSGUY") }, + { XHDR("rfwqzlxlnofkueiz", "llklFJXYChQaJKJYloEGLbbkzyYPmSlYmJKFtpbCQd") }, + { XHDR("vdmky", "YXquUpiIiSyiUUdn") }, + { XHDR("ikqhxxtt", "IaOXNGAsaVMoLrIEXDugjnjUPZDgZpsmWwxCMTGngqBt") }, + { XHDR("h", "ALkagStdVzKAKwUqonumFABKScRWckihDutpgOjQFwwPgpUQgWZiRpSiOLdPceEvNkvgGlzDyjRBh") }, + { XHDR("yuydnifjykb", "UktCjnGlTdfgN") }, + { XHDR("xdswifpzseqagfbjdbh", "feXTyygpnEjnjUjFiOQmPCDChMNKtm") }, + { XHDR("ckqqjxry", "EYvkUGWciwzrTIbsgErxQgUauCVVRFIdBxRVlgbRnsvhvbITYbDuqjs") }, + { XHDR("zwxlplnlgfgnvpu", "ZpAMkfrMCNDdPtIooyQxtQCnpFfgLItEPvtecZvHnNBclFUlmYQoSDJhLorshbnWpUJKuuY") }, + { XHDR("aqq", "ARaareClfFLkGLBaLSrVkmrAhSEV") }, + { XHDR("zcblsgrpcv", "FocHUjViaMPvWdtUJNrWwYabICitmVXPYbdaeYBgv") }, + { XHDR("rblbmqyjzvtgcmtasqbx", "zzGaTXZhZvBVkAtRapiAmWmWTOFkUWmBVzmnkkhAKGVBXcWBbcYq") }, + { XHDR("kprwzbtdz", "UiQiwAfUyJeOctcthxUKkKsoNTpLfRcCoWQoMHfOvbxn") }, + { XHDR("tcgxkvqedfukbbb", "YJDqNOiiDuXIjqxQhmkmvazZZZgIXdeZZHyUMOecCAOnlt") }, + { XHDR("rgdkbqh", "hNzTKvtNXUSJAHOttrOqCLZVyaOnlVfzOkzoBtREFDcRfGvUuVWdkeqOazWFBzBSUGsyUvZ") }, + { XHDR("hsudyusijxxeayx", "EjVqZwHQDOQzpptfdycbvMFHqggFFtmguqhGFxwxIsrqiVcGshsBqxQhFYvUKwMg") }, + { XHDR("tnedumuavdfowowkscu", "zfUURQKCjOSKz") }, + { XHDR("amwlljxxqdphzuaoii", "SPQuqcPkguQHwgMahTDOAIelpmw") }, + { XHDR("uu", "xFOUZGvyHpDiEJOJYhFQ") }, + { XHDR("mzcyyvoj", "iAumUuPCrCIARsMqSlOEgjnPGhysSYmxGXmmswroseXavn") }, + { XHDR("qvxqroslyhmeaukdt", "jnKdfiDEcqeQrpMtxKrcNEuMelbdRNvJwapfIVcJIuBNCcM") }, + { XHDR("kfrundippavcrvcn", "KoGNsuDBkDodCSsQgvKrxRKchZErKHbtPgNRZAqoZBnFhBmCScnxwKhBRoRGNIhefvYvDEZVUSpD") }, + { XHDR("jm", "TRVFVGHYlwKVovzlupsIgvAI") }, + { XHDR("vctmuknquizgrkbaclqi", "sCljrOdlCJUsYcPEQDzypvWNPGWUyOPINJvdzNEYzdYpGuqZlXPNkLzFQAMOzag") }, + { XHDR("dozftnmpugeuihko", "eMkyCkLWIFbeDWkUrzgUAWoBwXSQdMEsrAhqkmdHGJiAGYDaUzmBVQaoyOAeqTYxw") }, + { XHDR("agiyay", "cSBuegKHTwkdSZkQSKxqXvP") }, + { XHDR("fxf", "gWUpaxYOrcgjgzgDnmxPwhzXmiDIIVLrqb") }, + { XHDR("ydyijyoznyahsoq", "fjBjitklgIyYmXIBBXKrfQqvi") }, + { XHDR("vmgwjaotsbxsbacncbpy", "XjBRsYDhzhJIjedglWXHSsibnnPHoqgxrFyeUuEFWpydnSCPoAMgnghcVekuWn") }, + { XHDR("cwob", "RVperRXcuERIMTZBirsbmbYcUQeos") }, + { XHDR("rqrsla", "uhmBLuSytpCZWEZNIjRHXvVIindui") }, + { XHDR("apgmtqkubp", "kzDgftdKiwrDakvuvCtQuuXNNYFJOisOCTdzwtfMqdgxtuxowimecKRMmIzjT") }, + { XHDR("kuigqjdrutkjhkp", "UuZOzhPlDxKkYCtYbvyWeDAEnwZxwhhlBvmfuTMDLTzUfqihuxjkndNSQDWZbVOcPFNLxPlKONKEi") }, + { XHDR("bwyfeqtfvpbbtygx", "sIBCCknpmHCrtYYGDlgiOHTvXZPGOxUhmfnHrYnExjZJuVtckyxnMZCiQtPYExhoyIPK") }, + { XHDR("btmfclvjwsietuoa", "PxieFayaWEpqdjDxikQLAYyGaGlSQFnWokhphcQJVYtFiAcmLNweUkpewHquecPVdtw") }, + { XHDR("agk", "wNmjZVVwIgJhcHKZDGRrHdbpRvujTtMyBZEppmppnuXdgeQIEsKYquRItIXsWPAAFq") }, + { XHDR("io", "ivdKyMhpvVHDfwqpNMkDUFSXYujglSJiYhFCtuZITdmAVmDVOdAPTYSUnmivFskxzUNxyqYRp") }, + { XHDR("lzilakidjdpotc", "SjZkMUbmUqJdrSnvSbhApeTFpDCoWSzvLBpXFIMLCoetsuK") }, + { XHDR("ewittgrsy", "uKmqrBIiyFVuawwoSZArDJEEyCyESVkk") }, + { XHDR("gpcmekorqo", "aOPNTeDgpCIjdiRnzfnPgitvOPfEhrnl") }, + { XHDR("hnabtmeigjipeltbfi", "JhRFhgrnWzoyzGCzmNBwEMzNSEILyJexxcISyqlvfWompCNEL") }, + { XHDR("gyjgvdjynweilu", "PpWFTrpxGKG") }, + { XHDR("mvdfkkdfujjpwzr", "chPodVigujg") }, + { XHDR("zwa", "RXnLyoPGvUsaviXZkljIdLjRlPAtKMyRydGrWFGUXXocJAElwtTljKIWtcXMJjCksrgB") }, + { XHDR("tqcsmudunmwciw", "jpHUDiaByUygFAQtWqwrZrsUNmgbOLqLUoORySrd") }, + { XHDR("xhsxwwmjpvnydgkvpvao", "mPCNdTZOzjIylIdeZyNjtrYqPyzmyXkjeASxJSVJIuZGObVoCLRsSArHVhsVyGoE") }, + { XHDR("tunzz", "HbwgZLwbvIpqNACzvDiUezqBgtkRZeXsmkqUnnid") }, + { XHDR("gwjhckdsujqxiajpmk", "Dd") }, + { XHDR("gkxzhrcbtkpocowbpn", "xridGhURkJgsVvEwdjmspnfPBUTLezpUqAmRRm") }, + { XHDR("jenltbkwtj", "jeIbLCmVYmHqygHEOYTgEcRRnQJHfwZmBHoxCNuuMbSFBxRYNDnGFvj") }, + { XHDR("ddxjhzrxhulpv", "IgdDOQjJT") }, + { XHDR("tjykgp", "OdtJELFuqjwWCexBgBYzPhETYXHiOXZUPuzIvYbiEjALa") }, + { XHDR("lmysifggsmzj", "yUUNMcMrHlsMGFndJCNgzMcrFmXjnubAPeQdxjFNkBMkZbEekSSeqffKg") }, + { XHDR("zqgxelxes", "kmCzFALgoJbIwYEXrWZBdcPcT") }, + { XHDR("oehzjdwyojen", "DOghTGmSTtQkttULFqPjrfQOBKvDxZpphTfwSJzJFDxZRcRTIWyegiyjvmkwCWeyRHBgxezXmAOV") }, + { XHDR("qrlkjkrj", "zGLlKNooABTDrMZYRHWomckqvjPJgqzyZRhPPoRJvWbcbyOIRI") }, + { XHDR("ewlakjvpty", "WiyooOhkmCvnkkUwAvblbNTcaLGuIjwhBlMYfipakUvOvrXsGBGVqLXcCRCPP") }, + { XHDR("lyyeyysriy", "DsFWJKzyHHjxbiErbGSfBYpmIrwQwIFJxenXQzUsBTFcUDLkScWWqJFFFenfdosMZAQswMNAVEzNWkgp") }, + { XHDR("uofqwwvnracpolsilwoi", "pUXfqumhNXcJvxlcBshZmgx") }, + { XHDR("hoiaupyhxbaeonwqkwu", "uooxguKKMDsMKXyMYKdhjbyqspaMOgWARXyFRtfGKEmkSQZWmiAydeuqjenfDWieCplxhrTuHBW") }, + { XHDR("eruwvildpypxbtm", "WLqNzPUMDFAetSluRFMAhgaOGWXPYnqYUhtcWVbyYdYAjwboHiiuzLIHmqygUEjltIGidsyLNYjLhbp") }, + { XHDR("stxyf", "dDbYndXvViaITTLAeYwvLwaUTsKariCBtzNNYZjvFXYoJywOuZHy") }, + { XHDR("hicohdc", "upbYEQszgJxSwIBuvukLdRUPKeukBKYUexPSjREuldhWK") }, + { XHDR("wnavqr", "tBvQgLjbEHq") }, + { XHDR("sjkmkuw", "WELzmDadsRauhkfKDuASJQyyCdBhsbrBsRjqKapdbtOhRzcQXMDQdblrXrCtzqotHCCLGtbadmVUyQI") }, + { XHDR("heqqaopcvfairff", "Uq") }, + { XHDR("elygmgabqyadbqtovdw", "shcWmgXjRZiQhlRXKrPHgTYueVLmhpfdQKaOiIqAQpQSqogGyUWTFtslEPMtXfAPtNyYcLXfkPcHAsLR") }, + { XHDR("lplpqtgnvv", "FZDkFAYGZgBLqaSHFlSONQxhIukDAeaIfGWYPKEgNRjOxkJnOSCMDZHKaQUpzFltbtEWo") }, + { XHDR("qvlllocwatevbpvqxsdj", "XWIaEUZOzetHaZmdBGAGLPUSEiRQAclOibjLmXh") }, + { XHDR("ewgcfrmiyc", "pbkPVtS") }, + { XHDR("evwxgzhunixmxcfx", "VFkCouqaPhcxjbxMEQIXgZvhPKjUTaAyJhhtIaXHOPKcxQGuw") }, + { XHDR("mqnxufgf", "owGWqGItfebXrpvHiydAvGGKiSgFIzdfQaWkYjbWISsfcglCZwRzRjqjCvnKj") }, + { XHDR("hzrdbtxycikeczudxkf", "oZQbRAGRNTZIpopamQcpBfqDJWAOzKpHcGiwwfpjuPdMvUlmOxuF") }, + { XHDR("ny", "kBXyEqRkZrrXTyUfRrKhsVORYwwAFdgUsdUKrHoAqgkqQNgxYMAEPAulyHlGPLqtUEsYAzMumEjOsPJ") }, + { XHDR("enyuy", "BNtvNillmvL") }, + { XHDR("ipgvkqwcbnguodhmovjc", "lYiBnorRErolGwNKhzdmFDFevLuwvzrsuisyYuoFkf") }, + { XHDR("by", "LlEPYUGM") }, + { XHDR("k", "JHnh") }, + { XHDR("muzgncwsowg", "XXZglZmEhflkhadIIlnEJCgYgSDtVoejXQTHVpqKAnttZeszxYQeKEzqZ") }, + { XHDR("aydsgohd", "AXZE") }, + { XHDR("sjnqsvcersriihhlwdm", "urhuTOtXLwqzVvIux") }, + { XHDR("zhmyolgffau", "vfwgAesbmNnImTcdfpttthijqYRtQNxBHFSNzTFCodNstgAarABmTqnZLTvTi") }, + { XHDR("xlilqkjcogrsf", "MArKwSWbWTQiEeMmQQLlaMwLmqriQUQsgAPZBBhzzviGJomLgZFZZYbyWDKasAGDFyzafjojuEwQL") }, + { XHDR("munfofiucpuyfn", "KbqiuRPhfarIOBsXEZXzvAPAnyTsMYZuYrwdoGwUjNbkYAeUMLRCorJwRAapkKSNQqdv") }, + { XHDR("ndvgwkfnckvehydvf", "tgunRtYnAMNRmHVGCCHoSrFWGvwbulngTQXnygKvXPiTWIxMGULkcgBvecghbdcqOejqVBJNt") }, + { XHDR("eomgheuad", "cZbe") }, + { XHDR("hfgvruyqnhcmgjlibh", "JsmfWURcnjcbXnfeCcCtEgjFSwCwgEpNaDvHbMdLhcTkqceYBI") }, + { XHDR("mz", "RfCmykSteELcPPnwkUZiOxFAapPJlgHiOiERxwbtvKFnpdFHIzVsfhLyJZAxFqxtmBQUatSOLtIU") }, + { XHDR("rr", "VePXDJcKCNMaDipEZwNLMJyBgBNteiepWCuLcBUeXtTZdJZLpGLRAozDiJqEncTEnspsw") }, + { XHDR("skgvkwkkpzolhjcfzvls", "lpvSBxBiviEHviXEWgkecSOKeuWKDcA") }, + { XHDR("jklopisnlcvv", "AdJQAWuIjwDveXsUfcEj") }, + { XHDR("sapekosmyim", "dXvyKgOSYASTUFqbJCsAbteQnNQMcBwEwmyfpEepdeAkDhiGLJYzHGJKcisPuMBvPqOoTc") }, + { XHDR("dkeyqsssffkysoqwyy", "JFPWSTwQLhYLCS") }, + { XHDR("orqnxilxdlpmymo", "masypIGyVDLbzDImwjUUnOAruuUYmgUPoorFVLlWGkoeNATpYLMjkSadGuMMqmoVw") }, + { XHDR("retittps", "UltxpufTTBDlqQFkU") }, + { XHDR("ohyxefgugdfwalk", "dLGDqpjAPehRmQkbbrqvJuqujhFKyOISqBigGEfzaEtiPWgsMuxdmOESQoaW") }, + { XHDR("e", "ZtwTrnqGCNTSuwYBcvzjRFzxSzbvNoUxMBzbCSfXpiLEcsvaaENwZbZspNqliDnBXlaC") }, + { XHDR("ohufxbutnmesecf", "CalmfhHlGGQjXKYEbgAdpmlDOIXBAgMNUTvQyUbPFbqJWiEzqGUjpQdUfuSs") }, + { XHDR("x", "LgijZYpscVhHQtBgqAarKlwBlvzpOcAFKHIYkEXbwKeYaFqKecAIuvBTErySAAmOIROkWhIUy") }, + { XHDR("loltjjjejastqafablxh", "dGlfeZhkEmyQHVrIYMVAcJHBVyDcaOXwedfAKSZXbyXtIjC") }, + { XHDR("xqf", "TWYsHXVqEIh") }, + { XHDR("zosijzxmoxdbydiqyzzy", "orkOveWwOykvltokpNQxLdQvqNboYZbVpoLwHMqKkhjxHabEcweo") }, + { XHDR("qejmnacroakjofafj", "TGRdcJMYkyozyFgWjXMhzp") }, + { XHDR("t", "zNKi") }, + { XHDR("wgyfk", "BBODMRcxCnX") }, + { XHDR("ejme", "aH") }, + { XHDR("mdtmamylsd", "DtNBxlGTKZGTFZHBrFNtPDFgNvDQEyjjDqNTKhKOkBSIjBYoAXIKitJlsgiiFrzxT") }, + { XHDR("rgiclsmanyegq", "GrfcYTPJWLCBNXMDKDZoy") }, + { XHDR("sooiwhnaowohyofipt", "VngNAxHuRqmbPnmtI") }, + { XHDR("vwurhemwyu", "RsHYWFalwQepWpevvRPtvvaBzFddqbMEBrRawzhudoTRJozJjTuJuNblqOGqhsYTVbEndOehyZAilruu") }, + { XHDR("uqniosu", "zFfUopXHTSwEphweBFXehagodIJjJIRfbOalrkMQZbVj") }, + { XHDR("bdtv", "YvGvWceKhKtNGmwDzslormaHfsXbHJ") }, + { XHDR("ybj", "bHFyJJPGpOupmsPgwGiRkLNQzcJjYCtugbDRKltGcFcoicaOqkNqIgYEenRBbMGBUvgzgpHMintqA") }, + { XHDR("ylsbzdbjurtbpbkoi", "HnAtjsaDjFNGdVvEjnEeSxJPpvYyPhSMAhJYzzKEfzirvtOkzxOymVGSiImviG") }, + { XHDR("u", "MCBbhfspeHXpZcjztFMqRkEclSCjNZ") }, + { XHDR("hqkyyolg", "UDwyWpvLjiympoqadVoFtjjS") }, + { XHDR("sqzzji", "MlewxdwxQNwgWBBleFkLUoYvHLfHXlxptYc") }, + { XHDR("pgxaefyjmxvqrurlvf", "lXbEAbYkqfOLbIE") }, + { XHDR("rec", "uLXmxkiakaTsis") }, + { XHDR("uh", "IRuZyIAyQYIIPcsJGxnryKYkxTGEPiAJQGjihwprWaWvYqGgwaKuTbJafcPrZrZSl") }, + { XHDR("juvhhimgchmuoaxadm", "PQtzZsUuhYxBiGvNKbRtOVkzptYbPcfoCNEPYrYVDdFNbzAUQhaal") }, + { XHDR("hzruicfovjuyncyef", "PoEmBJbZwRPWGWRlaXeLvJJradTeyRtAAmIBepYVmkdZGplUoggQgFsXRTelVIQvaTRCzywHzBd") }, + { XHDR("ozhshjwwobo", "qaAnyRXyOZiaaaAsNwzvAFLDMlMWsiBWFFtpznXBPmfTPAWRFRNrIwzSrZevuzlEhMJ") }, + { XHDR("c", "kEp") }, + { XHDR("bncbbghvqjgtqctcfg", "irQLHjErEsTmkomNiJXFoG") }, + { XHDR("qzevrdfmojc", "MvETXrNXrwddpurNbVSHDYbqUbrhZehxjjMwdDPEGymmIr") }, + { XHDR("j", "yIb") }, + { XHDR("gokqyeatwns", "OjSSSOCKkTTqVFvGwDPJzNgpKhECpLmoexQSzKiItqnRAUphwe") }, + { XHDR("xclwmkzmkfyvmc", "ArDyWppGsmbXZpAVvwUylMJTqaTOlYuURRgaPpXOYHXzVlqnDQmJEdHrvMPloBBDYyUV") }, + { XHDR("yhgzymgi", "UJrKyUupdYwZPYnvQgEHcZcthMaXluemumRiSmANMyPWjswiSvByKiZvDFr") }, + { XHDR("misterdidnrvaybtbbsi", "qjulAOVwiaJSIsbhrulbAmBNvsFTnAewjlNxBsNE") }, + { XHDR("wkwlecxlqlrin", "LuRzUgpJbxeENzmrAqMLstgDPUcKv") }, + { XHDR("higcrkyifmrreming", "jXCJekKqUmyRuWmAhasdFIRJZBLEeBAhtlJczsAPWCYFdN") }, + { XHDR("qoshpjsyzrfdvu", "LhOwUIYcuPdprzVVlYZRnIOdMOwIljlXfPEEIhIhqVwApqcqsMnMQAzgkGtkfTapnFYHR") }, + { XHDR("qbvatc", "CsJAvvGvQ") }, + { XHDR("ujoqb", "w") }, + { XHDR("uorvuam", "kvFKjYdnbZztJUxmabhDcakcZuOIbVHxalFjOpgdafqsDDJWPIgjDNMGTmXGMjJZwnNcfUEKz") }, + { XHDR("ewsdzw", "NxBeWAwmvqBtBLuSklJzdAxFCZoShxXfWdReIkrswmtnrmqSKuvYsZL") }, + { XHDR("ejnmi", "LpDMwRnyFMyDEChsyijwBpDjZXUMkyfpFNusIBAngOmvMkZoMIZKr") }, + { XHDR("u", "NzACTHmmkMJJTyXKdLNAiuBXFaeGNsadBAIDNkgqTctCjBk") }, + { XHDR("mvkavbwir", "jDZPHWhPeEIwDFdzExBDsKBoeZbcwjvxwnHUHfMgoRRTZVgcnUCd") }, + { XHDR("oxolzgosol", "DdQLGqqkuxxSBufunQKZbguUFnOqyWNpBOTlxdVAFviXn") }, + { XHDR("ptrczbyt", "veZagdOTlDydBXRkhrJqChLPkUJzgdnyoTGAscGKQUFPbmxXsOTrniEwNlvGQVnvqOTiBSVnOLtPxd") }, + { XHDR("yqejbwdfennwnuhrzh", "AMPWIATXpWLOXJnpicbPmwUclNnyYJumjVvOCceeZaRmWbJNtfowfBxkzAoGgi") }, + { XHDR("iankj", "fsWkVsvQomrpzgDbtlywIfJRbHeXOhpzgCFXhgQpexmismyZtAisYHQfenkGRwFi") }, + { XHDR("egvamohnuyghk", "ogQGfDMrYcMVivvPEPDhbLTwSDrGbRrogrZJklxSVUEIztPMznLcuCDK") }, + { XHDR("nbphirkhqjqvwmgnqebt", "ihkwAsuqhQrnRxcdahFoNQZIaNEAgOTlzrHuRDgsjLmohbwikDCWhexIvnUPPCFjEQ") }, + { XHDR("tbakibgyiqtgnesnd", "LQGwv") }, + { XHDR("psikgtowqxmidroyn", "JpKGVRJNerxGPUkKWmbCaStQMinelCLjhlhfagSEcaiEAoGAPYkIvuZTHJjW") }, + { XHDR("bxvkucywmyswzvkey", "yfcUdjTaTzzOoTJcmzbMkVgHkBJZoOTkVaXPkLwEFOAJQrrtCCCXgnuiqi") }, + { XHDR("igr", "vRGsloNTaXV") }, + { XHDR("a", "CAMgcTDPwcfeRsRIsGxF") }, + { XHDR("mugvwbnfjxcnrvy", "yUiAcphuTnYirkBPsdveaBAxIgLkVGSMfFOJHBxNYPYDGxSCUAhcc") }, + { XHDR("nmmfkzqrxdzpwk", "ohpswvcHlMLpLkJtReYJPOQMQLlsRilLxGA") }, + { XHDR("u", "OlTKkhQgySyAqoWEvJ") }, + { XHDR("gbadatfyvqlgrzhrkqw", "uKlDZFQiHRMZVhHCLt") }, + { XHDR("npheohzmoaqjwuuakq", "nltDngVY") }, + { XHDR("kqvkfweubiyknwgak", "HmhqKlIOLMgKDOWRNqkaqGREBYkuMLugqiWPkfdmjCSrooODJmtf") }, + { XHDR("j", "ApQ") }, + { XHDR("tkxnrmdhjzuhtdoegi", "UMcjdINDTAlHUQdsdPlarpPkHVsYfWcaUBKbAXLxBeBBCLSfKDjbsagKGM") }, + { XHDR("spcbjpgtrqkvlzrf", "sVtokkAan") }, + { XHDR("euealmndnqyntvnresgg", "jPiDigcECRIzvuDosUhTnLphSeflbeqddJTnzKSDMGlCDxJ") }, + { XHDR("upltkxcacijemyneare", "muPMjBZnIzcvyKWTMikrvBKqr") }, + { XHDR("dfauqopcfspqvs", "eqZURndLmwhxYbisphAdFgTUVrCyYsGbIkfKSoldQvCdiJVn") }, + { XHDR("jdjufepbnk", "xaFkDfKMuPjEcrAlUOuKlelCNvtOJoQUJV") }, + { XHDR("xxrdkedwgeyryd", "QzqrtRoiCTtAxzksnHlCXFQMoFbLEclHmDnKbZDRuhlcSfqyghAl") }, + { XHDR("rqgrgroabbova", "yvQmiOXnoytxvTWLTWhkyZlLBLajBDiOKJuQJpPWHeloxqNytxojalyviOcqav") }, + { XHDR("yqeqbesipteywpui", "xBqoAzFBbSNKMmoIHjicdriILazpbGOeOuSVCWvfAhQHYmLlMEwRBoNVQyENjoXuHKPXVNxmk") }, + { XHDR("fqpuvjyoxztiqaagdj", "VinLfGfFEerKVYDxeSPpDbDzdNTTriKEDPYHsTdXohKjsKeLBYzOHzSuLr") }, + { XHDR("qy", "RWytgyHZezyRIhUJwSMTkaMVANcLDaLFrytyHUmurXMWQdtLMPGbcPGdfkPGFQIv") }, + { XHDR("t", "GfHoREfoweibCczMhPyDnOhw") }, + { XHDR("jekdpdjnvlelxlbly", "PbjUOcIns") }, + { XHDR("zbgztovpyyk", "XWjUGjOOajtRSTBJxmMMPQhcRddewWdliJUfSDAVmlCyapPVCZBRp") }, + { XHDR("qidixlupf", "rQLuISRJieYQjlQveMgURSCbMvsfMoaOiBkOSGFrJ") }, + { XHDR("ztuiuwolftwskqbbesv", "xYtOKaZvHjgWlENojBRwVvDdxyeSRk") }, + { XHDR("lwzwzhsdilmrkzbeqfeh", "gUalVmOFBxQo") }, + { XHDR("kjdy", "rlcUOQtVBtZpin") }, + { XHDR("kev", "nsPV") }, + { XHDR("pszkaq", "MHCYcKhTUVVATRUKRIVETWDjmxtZnDqRCOeuLjZvvMKuWxsnwzHnNrKfEWRrW") }, + { XHDR("sjtturyawxfd", "JUCVzTdBawGUkKSKaForeFTKvMKpWdgQPRKVkuskOiEwTGXRBikUlSgeSB") }, + { XHDR("vovwtvfoedkhzk", "CRSJffalYqwDdwytrSDTDxzcBuBsvJVrefMvRijGIZyADtlVQCHjAGAvxyDKHrDRiQOCmmEXujJ") }, + { XHDR("rxsouwmsesyya", "RgfIQMgXJdqCExmcrcGkuEn") }, + { XHDR("oodqvaaadjyyxfy", "TNXOyUnOHXSreTOUZMJLkntoyRNFCLuFGwfaAdfxKZeiGouMMKbXidQmpHEaLXbZFRGWaZAPnGHUPAle") }, + { XHDR("ytwfmeaggwnvayujausu", "xVYsmidxMRMnYSZXsTKuJQfkHLwtCibWiQbuwFXsAYS") }, + { XHDR("x", "pGlRVIZuKeDAOYunGxQNWFaoIAWdRlplaIHP") }, + { XHDR("ocmqxxacrjtqgli", "NEoQcFriquLHGMOXRlhEbgkQdhYEB") }, + { XHDR("fyiulvxlarfx", "ojnGIBfSxQOgLFNfJaxpRCUkPQtqv") }, + { XHDR("eiajsxnuxyrojbygdhl", "MTjZOeKwFgQmHvvtnBpVKTBaGbTQKZYQLgzxKHszKRglhmgyzykvRwI") }, + { XHDR("rfanqfnj", "rSngmSlkk") }, + { XHDR("jb", "BuKoKUASbBDyhFqDvtOKcZsFlHSoeZZRDajQhlinHdqrIcRhCYKOOzBXahDmGAijCnkBQQJ") }, + { XHDR("nid", "SUElVoFOjGSRRaYpSFOdhDKiPKvnuOiPyXKJAD") }, + { XHDR("popiilitlcgwggrt", "KRguHvuuuNbiTyFXElEdfjbeHamXmDOICuGMuhDQFxCfVfpnBiCDuELvofWYXTl") }, + { XHDR("cuzuv", "znAnJWPTVGkIJCtzTJlmOWqzolXmSeTZCbqCDNNTFsbrjjqrPpDsFfJCXOm") }, + { XHDR("mvywpkgqjbqhczn", "mQBlAJrfTCDygHcSOAVjTrCmnEBpQOUOJoYcOYgyCvmMgspdlQUZmSY") }, + { XHDR("fsitljxzidaq", "djiXFLTFhJtQmFvYOuhDdUmyktYcBYFjpXhYmMfpxNVQZyGabTbFgOilZbipxlDoxhRutlsSZrvhJG") }, + { XHDR("rehnlecjgdxlqk", "Jaw") }, + { XHDR("ahnsgdivjdsjiberhwf", "jtXbxgDZzftWTSgCaEvXmmjayyRyuxGGN") }, + { XHDR("adrxcjbntjkfqdgmj", "RABJmAMDcJMKYkARaDkqDFbPeNbRRcQknGHlTEKYJEpOjPqncPcgfmmfgEwjp") }, + { XHDR("eiqclybe", "elXJdWMQlItsZeOgfmicNuujTOK") }, + { XHDR("ltuzmwofgdzgozds", "YctxGlSkwwGGYzhkMrFsdgC") }, + { XHDR("trhyxgzgcdclm", "rHTbPGTbnwBOEfkycbvAnKqRqVQNCOmmElLPGcYHIcBcQJpJQoYLlOKvinQBqQDfMQjAgSOOBST") }, + { XHDR("lw", "BBvlWOeIaakBPYggspYf") }, + { XHDR("zwhvjalkyqltocuyvsax", "eLldMctEkytcWhuqIlBiSUGaeWxJVSWLKRibdVblpRZQxjy") }, + { XHDR("umjtzyxhrsmeoku", "zcJgXJULlPCkJWCYkpjGtEcKuDzDEIITfJJnVOPhMplnKAsXvcMGstUsdEi") }, + { XHDR("eivtypdctspufmoaqthd", "YjWHQNJlncMRJNREjtHfMcYibGqLmwiHTwkVBPZvKTUwQReeaYIlUdSmvmuQSUTuEeYRlXtiXVksg") }, + { XHDR("vbo", "gUlTqQicRmGaIZugxXlbdDKNSeqrU") }, + { XHDR("tzbaybposmre", "MyQPDWDWYxTzPW") }, + { XHDR("xeputvntoubtuzbqnyoh", "BhfHUbXRHZlvdiOvESubYJDAmDvfbAQClkmlpZSSbpKsgfYxQWbHElooVoYuse") }, + { XHDR("mujnytqwohrrhsbouwvt", "WHgeqroGILJmRHHgdMoJoSzbDwzgqkrdeeQDvsuooQwpBUUxcBrfcRhTCFpTX") }, + { XHDR("ddlx", "vfiBkNYQpKZMzDPmbHsNhfAQKanlQXd") }, + { XHDR("dfglugexwgpssjt", "HRrdnyzAYdVFvSDcK") }, + { XHDR("jfnllrsisnfth", "waWCswLkEozGDyfJFduROPvQQUGCDfICfScPqWXaAN") }, + { XHDR("zxjsoje", "pJayqLtEaUiavdyHHQwWMTbJydudTXajeMqR") }, + { XHDR("yeut", "fN") }, + { XHDR("u", "ghVMgkjkGamHIoWWCBlSfvKHBwjJRsurllMEWKhjkhtGkQlaqGkyMMgXJQ") }, + { XHDR("ffe", "LqpEEsExLoryjPgjBtfjjBBbJAAnMjvRaaBkUceysFfxkPmEzCyVUNkJykFKMYxYNhdxwU") }, + { XHDR("lrbdstjlhkekawsdobt", "QtBCSvnTiKZzPQvPcqeyWxToQouqhOqbKyMlDalEthZJvHMwSLgH") }, + { XHDR("djpcudsbxicjw", "VhyDWMgclwMcRIUwOMneqZTfDWMMPnRerMRSisvdPtZArSkGeMHkdTrgrOOumd") }, + { XHDR("plbki", "MxyDQG") }, + { XHDR("uimle", "LFSJsRzRhzsENazPMYwmSqDflhYIqNYbdVnS") }, + { XHDR("fhnyvlykpgmblyx", "cuHbqbcHdDeDwLHU") }, + { XHDR("cmblcvcdrjkka", "utTmNMWkRcLSpQqlYifRCjjZXFoBConLUaagFtiVlGDtaFdOyHTHxFSDOlBsxlHDYtMWXueGxhcRYl") }, + { XHDR("vqfrcnwudhyuhate", "PklAjVLOJWvZEIBVwrZEYoDlsoSJTxfgpkSAbtvATmeKsPwQWTXWKZjNGd") }, + { XHDR("rvzzywjvrprrofcutvwx", "sTkgBr") }, + { XHDR("glcgksnmizjufdb", "oivOBsEeY") }, + { XHDR("sonbqosmsabm", "hWjhwvcnWLLLDUnfxlgSOXUroBQWwPsbaUJVGqBYBWkFxjqeXZ") }, + { XHDR("ta", "dNLJSukPggaERkRlMHQnpEAhHGtbknhxIvvpsnkrrJHaZhxJCOtWCCMdsL") }, + { XHDR("anlsuihpdohzbxgcbhc", "rvxJEpVsZmglBnGJWPyDvFiKovjEYghbocwUvxfGbSDxMVeNNddrnnWvYXMWSnATqhifzORJ") }, + { XHDR("qapzbvuutlxu", "nbiBtJIjjqjLZfJhORCkko") }, + { XHDR("vnwyencfwvvabzmezwqp", "glUoYPFOXRlhlULLIKdHyQWbRzYJezWtSgOuCzoMWPPhEZfETSk") }, + { XHDR("mgbkapgnsvzzcmmsreo", "mJbUHTwzrdEXengEfXWkkzZBGLAoQWJhluYaIUXYcpTBmPVcuF") }, + { XHDR("jb", "dtgkajHrVHrClxGhWuVaunVwlstldnL") }, + { XHDR("lpbioqpwnujkzo", "iSUtFzPpMdkrOmKIpbXXreDAXhjJjD") }, + { XHDR("nmtrdzvqunwtqhzj", "LBiDDqBfAoxzZWCib") }, + { XHDR("qxsykhjmnkseodswuom", "EoxnczkaNAtigYibOwt") }, + { XHDR("wdyzjbideihtolqda", "vPCaLgEIusXaXCqIlriIKIInTAxVVMRhTnAESixBmLPe") }, + { XHDR("xshizuyyjoqrggssjrv", "nlA") }, + { XHDR("occvwjibgtdqxhck", "NJONHfpTzKmHTDoyJgqyLehhJFzXKVJzicGml") }, + { XHDR("mfuwmqidxwgrslnieg", "hVDVgpkLvNXNLfUuLsgtnAvddgjdmTYWeWXzHcRkhLQsM") }, + { XHDR("hhqi", "FwbrtdMNShdx") }, + { XHDR("fxim", "DRBtVLqyvoMoYOkKfalaiatwPWNpfYnfSErqgTiHsYdheeAxOLqJxtxqzLlyIobJLCG") }, + { XHDR("oyrepkqj", "oDiYU") }, + { XHDR("vfgmggzny", "IezqzanLXVtqESdooiilBocJySzqDCTdkQUWjjkTpWiqTKkHNmrlvivmReHtKxA") }, + { XHDR("drjryhgbinenmvlpai", "nPjCPJXxcSVsmkLwCgCSsuFkpLIyTYyRvVWCJEjvVEt") }, + { XHDR("bb", "GpKqjHYwqqUtQXHOKUIoXGanLFNJIMvNFLyVfyFBI") }, + { XHDR("pykcw", "OQxkYWZNXMqgCsVrxNoTgEjPXRwWtTMmCscRcGYTp") }, + { XHDR("hpvegreqtlbmd", "jFGmflJiRjDKzaJGKehbyTAHftiMnQFLeHFnXmLdcrIZIimxRkEcZzudrcnbaTUmxITwuPSdt") }, + { XHDR("baoakthakun", "cGOUGkABSDQvsuWToExBoWRfrIZQpvvlcpvXjCgp") }, + { XHDR("kfinptepwsvssgsb", "XKHstiROGvaKSnJsEtDugZZOAtirrOCNczxGjBWSkLuQB") }, + { XHDR("mpgltpdgnudfxr", "ApBvTwEWeHixISrZmItWZAkYDLSldTUp") }, + { XHDR("xikyjgeodalqyrxhch", "HmShZgZwBRZJDbxKlHmCWViQvtq") }, + { XHDR("hwam", "AaWEvpZThvkeLXfHZPNAQPUQFCPiCGxNLgwnBLLZyeZmsGyYjELwhojifSxwtutqXJj") }, + { XHDR("dugnnisdwzaxlcwxagi", "XXDZAicCZVvvblvpOdISivaHSQsNBqAjUoatcCBVABFfCYoyvwpYeCBqNnrJVxQtdnnqTReZfseTeQm") }, + { XHDR("yzjey", "bQnLR") }, + { XHDR("pafvrqstansyptkxxdza", "gyHfqjLtFJurmMpBdlLmaxnsVwRrodfcrWGnmGjQCzzKBdanRCSFjFBFwVCwzqohFoMB") }, + { XHDR("odvofg", "HBfQOzeedwkhtbqGraObPmkcHARnoeiRAGaAuLakjKvZDGHHREJOZkYGKePYCmWpyZggehbWjgbe") }, + { XHDR("wwfwmdmpotdvtlzqps", "gEpMGhEnhoypmPVQvyvsbilzuqdmNELzZQXtEQCehgtmukdSCgxRWjcRGXilEqceyHQ") }, + { XHDR("wpjsapjxldlc", "VHUQhHsxEnjSxcPPymDTyWrGvzPnpBfQlfnn") }, + { XHDR("ggzrhmgzobn", "lKHepIwYxctnuZvQNCHjacpnGWTGDjjlQoJrYdyzNSeAPtVyuNnEzhovl") }, + { XHDR("khyztd", "DM") }, + { XHDR("rxadxsseyor", "STlFqLj") }, + { XHDR("epouxfgb", "yrrpAAUuASuMzXdOEVhsrLFpWtVZJbDske") }, + { XHDR("lhkksfgcz", "SxDjdyFTKqbRlVXCyelDAyduuOzhsG") }, + { XHDR("kyqugxyskjzlq", "bTOAFExjGAxfNAarvkrEPayfoeJHHzcCLVEeSNLlKVMMSlfLshlZOO") }, + { XHDR("mwwh", "vqQrjHkpHuupKWHVWDNtPuzdMhjEXzthldDGWBhbbVsWVdRH") }, + { XHDR("wtmkmlwgmli", "mambeRexAPaSFcotaHowytmmBclJ") }, + { XHDR("rziac", "zmicHcnCYqZiiPImtUYdPxUmjfMbLCDCIyvRllzMBPkJMbXpQmtQcG") }, + { XHDR("fazabudwjvqjrbmucbp", "doZvKMnMsuPCtngjAPERKEuIGpwnuMwKccBSZzUUWZvZaaBoSwCfDfKOYARlQsQ") }, + { XHDR("gjnulryi", "EiEMSymGDuETHYNLrnitvsMDxQAiztwCPOBFRcF") }, + { XHDR("uoxlppdqtuqy", "plibHBondtFjFdUPFafYTQZBRtRsoVxG") }, + { XHDR("sslwqceqoqbv", "USNtyaihLdNGdigDJomMhkPTCFkvlCHWGzWmwITGMoOrzKDuRZZVhFJEg") }, + { XHDR("rivpmqpegsrbdirlpe", "rtwMGIEEgVZHZkunHQqXEdaKBPmQWvvLffHKCVWxpacOfmoELJPiBcWNDceLJQLF") }, + { XHDR("hrkhahwyoozcl", "tpwhDbDEaCnDsDsFcewWJJoVtEvTXrbFFZPSuoKnKaEpYUXOzVSChiWaLTT") }, + { XHDR("l", "lht") }, + { XHDR("wsgqzwtchlzvvhdzqs", "vxpNUQTLSkUvqRbZTAnbnVKalBaoTAKJbnXWEPITOwSzalZlefUsktHwNnCN") }, + { XHDR("gqvjnvlszwkgad", "dheqPmqgjehfURPsXoNaqXQPIVqhSEQIDeGhIhmuprWxSeQubLZinPqRWIBNYdj") }, + { XHDR("qrqdvgkjxez", "irSfGFRQvlSovoJLlEtjhjUCgEcQSKxEKPloTrWZwJRWAAb") }, + { XHDR("icvbjwan", "erhdFGCjvEEWZyILNHTRXbwNmbByYoSzafvGMsrSltYTbQTEYGMRvEiStmUJZqJutJKq") }, + { XHDR("edmaqfdcxbgylyzbmd", "eAEqYVoSbOWKEVMcLkv") }, + { XHDR("acezwgxqftzazdoquou", "kCQCpKZPbfoMPDlhnQLtBQFYplUxjVZmIEbhIDMSVKBqDkHIYBBtqjnVlhuMrdLB") }, + { XHDR("ukeadotnpsamkpphzun", "TMAaHtcZS") }, + { XHDR("dhynuuc", "IRkhYVIyDDlEQkUQdXsweKukvUVcBGlh") }, + { XHDR("dczhp", "ZP") }, + { XHDR("jkaxxckphgnpwfql", "So") }, + { XHDR("xxgl", "olNISLyzbynbTUYCUEMeARlcwOVnxmKsxxnthqSoSFOaSNeQHzBkfE") }, + { XHDR("kgglnmjeydmzm", "NWTJSOdPxp") }, + { XHDR("pw", "PyrsJBIBXlKtxEnoxTGVMKAMlPoUiaJLvRkPneybjdrusyTrbgoxKSZTsIhRmeEBw") }, + { XHDR("mlofhmzohgi", "uBqgXvS") }, + { XHDR("p", "OYBrrNpSjesHeTjfjJm") }, + { XHDR("nglpk", "VmAXmYaXNgVMLeaURyTFhzKpxuZwRxsODYSdzibVbwhBHjBZOignQUgwyzThKAuJzUHoAJfG") }, + { XHDR("dvuhfbrtsykqnytov", "HOebknKzKmOJfjPorsxRdTBteAfBCbwqngVJaDwofILhvfTybP") }, + { XHDR("ntptpaqmnarr", "YEXPZSPhwhayVaHISIzkrBzVoaydaBbDjkihLovCee") }, + { XHDR("urqewlt", "NUfErGQmFJwylUgTaalqamrBTOcbZfCeaHWbPlEDfWoZrXVddDkwVQLFFLuZSb") }, + { XHDR("qmfuuctkvizdwnitmhoq", "PLBynGB") }, + { XHDR("msxpmuq", "cmbJgrzikhBZZVMSWFeEELxOcqhwDjMgHphnIREAHDjiRozltMj") }, + { XHDR("amyhqefufipitdiphl", "XiwzRnTENhJMam") }, + { XHDR("hdgw", "tCOhQFMothjTMIarOJexpYYfoSCNwfXXufzoCIvVPYtEmEjy") }, + { XHDR("kvflyumzthttg", "Vi") }, + { XHDR("hewvmttu", "ZOXSJMlcNCqXkNghswNiLvCqtaTjfD") }, + { XHDR("rtq", "uQVtwbmuiunEsdsHfTUyCOWADusxZnurxKLPnhSrnyYvnfDNflvnJw") }, + { XHDR("eefuyyyfwesmnafhgn", "zjavJPsGhetGJdJhR") }, + { XHDR("byfzeddpwjqcqdcnsr", "OKGOYjNgsQezhCoYiWZjBjMGivIQWsOFgdqWAQrVJXuBzIkL") }, + { XHDR("edwicochfwtmuqt", "FgxREGEayGESkBzizA") }, + { XHDR("vkawjbqeedcolhv", "wwcqd") }, + { XHDR("xsmkgpdwv", "wjzwFIQcbJpQALfUebnxHPwWJObQsDkUKWYkJmzuvtGDCtSOPsTcdwhpEfWFASKB") }, + { XHDR("zet", "dlIaVktwgMbSHakLJbczS") }, + { XHDR("ulrkr", "aXZhtzAxRvsIhpbL") }, + { XHDR("nphkcniqvx", "yfbDyOJQMcIZMfYMhRFovP") }, + { XHDR("zxommnxbarpwlvdry", "IjWYJMfYySKTDPlECOoYJRadaWgPQjFjCRtUgeISTQRnRdXDZmgNmkALOUytNJttdrvdhGDfHsfD") }, + { XHDR("smsplhqirnenadibs", "wnHHMruLAoaXmCnfyXzYFfbJ") }, + { XHDR("rjjxi", "owzSoDCCETPXSuTxLWpXqZWODNwmAqEDJsbAvEbmADaSQoOdJGLFQmWHVMyeRgvBLrJpV") }, + { XHDR("ibg", "qe") }, + { XHDR("kwhasohodh", "YhkOEmzZCcriHwbvMNsGBW") }, + { XHDR("jwjnr", "KUcNlEMAeucUNIXgSCfTcVniHWRJPHOLyKXdUKpFZxVkDKpvTwgJxYLu") }, + { XHDR("nvwkswazo", "ocraulRROizhQROLAe") }, + { XHDR("yglawgpgjwfgopcj", "vi") }, + { XHDR("gvfab", "oxmEnlDAazzX") }, + { XHDR("hf", "YyWmYwnbFQvvuaPadcODofGSBMYwqmvQHTRCuhADdQQW") }, + { XHDR("yikhn", "KYLFLDACgeWkFelEzqNxIkrvLAiiWrNjsI") }, + { XHDR("kzirvscpqdweb", "SDHWnSMooInMaqFiHgKAvXkyAuKQsZlDtmnXQRvsUnSzFORy") }, + { XHDR("kbz", "AHRmRrmgwqJbtVvolUSjGgsUiAxUlDDqnoPaQuRiUEJhXvPLUp") }, + { XHDR("kkabrkvokibyjtfjz", "esmpSVmAgaHZuipdsLWjvWKiNmWLkENPMUjIKNhztFcrHfWRM") }, + { XHDR("bk", "gQCcjTUjbWgyanLDptit") }, + { XHDR("cw", "IDkvIEUNJefFupEZa") }, + { XHDR("axezosphlfuvubniypw", "erdWKboqDXcBPRAWboeHGzUAUNxRgsXrIvCtZEDHDqxBrufFbfTIiMBqrUxiJxmH") }, + { XHDR("rhzqjyrbohzuabpbyjjo", "tLte") }, + { XHDR("jdqgwbay", "CToCyaVrMCJIZZroYPBNbdqLBcdLhojjJNkSWOJonitCKShSxhmAAgrwPD") }, + { XHDR("jrnckjfllcektnizol", "GXycuLjSfgXzCMbvJtvvuMmtgePzCbGHAPPiftjzPfBlczwjbVaPccYfpKmBMIFwqejLPEvVyBtiJXv") }, + { XHDR("aviasfna", "GCAxLaUllgMljXhGjpgbvRfEcCWFyGHVKrHLqCeRBHPhRTGlgTfHgYWe") }, + { XHDR("jhsu", "XUkkdtPxAybRPcSLWdkYtKiLcMhYokZA") }, + { XHDR("eooki", "istn") }, + { XHDR("qtzowzmpb", "fWvjKmEtzScDbxQOMCJyBfpyvGwiJdod") }, + { XHDR("vmannifpo", "nvBHtGfGasKtXjuAWjyomArxuxwXoEgBihUCMpZCMgtyYpjci") }, + { XHDR("kmcmhkhrn", "fnlYPygzLYOndhFmOlpbVETRIVemoPmYcJIlUDmOQbahGXctjNGoyTsvNtJwjnp") }, + { XHDR("oaoue", "TqOsOoR") }, + { XHDR("mqcufvywdkcjlmt", "iTiGJHVISGVMQEbgBEKMEvAY") }, + { XHDR("lxnkygdzsr", "fzuGctVbKauxaPLLjjWSaKpsVtsbfgQDdYkStTFyEzzUymeSXmlaiqaP") }, + { XHDR("knfqb", "uGkEOiSdQdmNgveaxZwTFMFBQTZnhNTMevpwzMtIBAHvolpiFalxTKKvrhYHPDHujyVudgUyRD") }, + { XHDR("znxxvjynoi", "ENXtNWgsLdqskpZrELThUCVHZCVQ") }, + { XHDR("cyovdfysczuzdtafj", "yNzCCBznkajziKfIGuzirKAcDzFthzWoBytKcwSZZHuXSZNNWkOUHMwvxwBGdkGxb") }, + { XHDR("slnxnybk", "eJieKWcImJnlOJFohwmIvrDsqEfwIpKzbVhQZymQxqcgAPbsyjlngNWs") }, + { XHDR("jaslguqsszblsai", "qicjbuVftca") }, + { XHDR("qcmdhogmrb", "ZjglNqWBrLfIdOpXRyHOWPeXUwmrJHacs") }, + { XHDR("uqkjqiz", "AMFITgIaAWRlMoEdgvPxHDHJGGVvaqxeOqXofVSqewtQU") }, + { XHDR("qvh", "DOnBCUMDSwbqZnjXErGDzJfoqBjpGecBCznUAVIiCubgqNePJUeqjqE") }, + { XHDR("gcozmthhpgdukngvbo", "szpwOVGbvpZeBh") }, + { XHDR("yhr", "TdRgucVJDROsqmooxKUnytprngGWVweymDWIfbdNrc") }, + { XHDR("mtsylsur", "LeLQSPELvueShYVoJcjlUXfVhrVvkytGhkgEhLgDFTvllkru") }, + { XHDR("wjojwrxhlfu", "VOpjkHIxdppXCTWTJdm") }, + { XHDR("i", "KTYQxfPKGqwcEbXNlvYVLidCilsnUsLCNsrTwKCUZCWzjRPyjmJFvAseERYIOzMbKYCKIMnWPqeujDi") }, + { XHDR("lhdackxjixhbxb", "IhIToMsxXoAENLhPZcfamYPTKDRSAnkgmlJRcnBzVcHLfmCsUNTOVTSeXsAaBetYovVFHJo") }, + { XHDR("s", "UzmkbMjYACjmrTNoCXsmKaRMHaPgcstWdmXRmQLMNR") }, + { XHDR("qtwgcefp", "wYFqmCOrOUqPeGaaGNEfldRYRCOrsXOetbXEZffxoleSxmRkHPyQvcYcz") }, + { XHDR("pbxplqlhmhnqxbpx", "piBwKlNDBXgxYoymYzwhgmkCJUcWuuyRPLrlMfPCTwZEOKsCqsWQWTGeAIDDxtzwCyNacvY") }, + { XHDR("trli", "SWDcDNZO") }, + { XHDR("yqvwhjeqfgflooegqbkz", "XwTLY") }, + { XHDR("fhrt", "wXwVZlyUUaIAHMHCBW") }, + { XHDR("onluugbibebc", "WIpCEFRnTVRJbkKnQhxjMerusMMRgmnMHAyKuZw") }, + { XHDR("kfdhd", "sxGmPcplGWmIxQ") }, + { XHDR("qxwmtjtnpyzevawrmqk", "kKgGgPtQuDEVYUrkUoAtvWvLdeBjgAsDIAuYJmCOSwhBIsmnISZlmaAp") }, + { XHDR("lufaelgyxrns", "jXMoKC") }, + { XHDR("kpxbmbbxasqzdxlr", "drISwspxAzkDoxNyGmSzwYWiTZnDl") }, + { XHDR("omdmaumgcdplzvscd", "PKXrhoBjQkzQVLGdypEMWUOKECfbGuHfmDuDNQdpxXJzi") }, + { XHDR("gzzktszmxkepbkvyt", "qZuCCHImPWgzDODCgfSZapxFHEoVIsnzGwBsSnRwRAsbjTdGovpphVQfSOPvuaQw") }, + { XHDR("mmpbjcilyyfevhpbu", "WYUIyAFnSknVMZKyMpaaNdChnwF") }, + { XHDR("yoaypdrdwemevn", "IqhqlcWcQWcsbWpqoAfrronwBdcrtSPfyXkYucmsTpDq") }, + { XHDR("orcyegtvlh", "mM") }, + { XHDR("nurbstbibcmqr", "gFmWsZxHvZcakLeNwCJMvwdaTdWK") }, + { XHDR("leyj", "vIdRzHCSxCKGdAVyKQqlaIRYfGFrlpPOEVUjQX") }, + { XHDR("vddlepmqzk", "SuiFzPNBgMvzRLkGyFFchHpfUIpwkx") }, + { XHDR("wkmllsazt", "mQoDuodMyNqgFFcCqRojyBwWAXvgRaAvsKUICsSrFJtYuFgPqdidGgbIjANYSt") }, + { XHDR("avgcrjbfcealllvbodjj", "fMLLCCWFNHPeajdLzFzIApVwapbrBgxiLaekweWkeuptlI") }, + { XHDR("iyeejrlapzj", "cxsjUDQgIWVERGmqUShuIbTRCjTUbWGHnFujvhFKrYaHYwxkSkeWFVtUgnHEPikZjKPQ") }, + { XHDR("quwesaxxeocqdvblcv", "EsPLsuneFvskumD") }, + { XHDR("yorcjjsrwcgacejvixt", "VtzFgjgXdXoVfjoKTUwWwobWDQdzC") }, + { XHDR("qbdikwjemsnrnnj", "mPeWXrnPyaSQYOKvcBrVofZtPRbMwLVCmjCvCFBNgfejLlmdqKaRHAJLJsFBcm") }, + { XHDR("kawlao", "eCKlbObXyyLtJDAsTuCFqEJBurjKwsZYufSD") }, + { XHDR("mbnsivkrlox", "ounDzfhiYvtpuSNIYiaBDAYaWIjQLCilwIrRtueoY") }, + { XHDR("l", "DGANQFwgGBOQURelTMMuLSniRdTztdHfNwtkT") }, + { XHDR("awvqgrnr", "UhAOrFtDhDTRBNniRgWpYFdzdprmArWUySjQwusmRGnpcFQggTzJwqccsckpUpzTu") }, + { XHDR("cnukqove", "KkxivJrbcZjBmhYcleYLdwKNPLpfUWrMKlprCprPTQaANCaGSFtIMI") }, + { XHDR("v", "NArDJkNmEMXh") }, + { XHDR("wtyx", "CYUfhapIBsmuOBPWspObPzonmqwzCDEevwVKcBmhroEAYDOrVyuWbXCssEZOflkNFvLxhaGflGxpN") }, + { XHDR("aoibsvlrtovxly", "avYHhW") }, + { XHDR("qoicywzkwtmced", "hyZggoitpoLHxnmEPfJeN") }, + { XHDR("iklrapewllrob", "dGFiIlyfKyNvHOJkX") }, + { XHDR("heyrhe", "zleaTTryYWIOuiWRtmJQxLemaCmHQRDq") }, + { XHDR("gvaufiesybirfrzjx", "RKutYdDKQIylyjJHHlKtbieGzanVgKtzobxE") }, + { XHDR("cxahpuifcsdis", "A") }, + { XHDR("zhnfbof", "QFzTXCzIhrQmVHGpvCTPxyUHJLhkJJESJrawwBBp") }, + { XHDR("jpuaplqsjxkbxg", "PLcTFGuXYGMPKPvSYlTxN") }, + { XHDR("cuy", "PGyJEzfYvXUPJwyltIBQAXMgeMIyua") }, + { XHDR("gupbhkbjukpoumdfur", "ZZHtmsenMxKKVwHOslgyUr") }, + { XHDR("yifynabxtfimpmqebkh", "UZOP") }, + { XHDR("n", "mwTbxEDqwEMLXzQYpSFKXhYPnIu") }, + { XHDR("rvwlbfglpxs", "DtOpqxfXTSDhIJwrVVrVxjyddlgasjxhEoqqvlhzsYGHYUmmqidlAQ") }, + { XHDR("wuuswddw", "UJiMLZxxhmaxopmYCVQiVqcreamvOmpVuBMb") }, + { XHDR("ahniyixfehwdz", "lAeAUrwPPryaINIXNvIgfpAEmlihLZcqsbMLGIfSqKPLQep") }, + { XHDR("bxdtjrrrrswvkvo", "ECuII") }, + { XHDR("nqjydga", "FubBoMwSqvkSPIaOpxbhzOJcMpYkYIRhnjSwFhlDlLGcijVsifKVqycOrVqDaLwowcjHaTalLF") }, + { XHDR("fejixlwensicsdyfkuf", "BwWUozsuuwrsjHnJfJSuEMBdRlaJm") }, + { XHDR("kwa", "wogQobhbngzIASjlSPDIMhchxKSZFxgkF") }, + { XHDR("kdeovovwymvihoq", "GQuhCUQOfdFVjOpDDcFqoLTVJqiVmIvuLGBrLTudDmsVIyNzZtEZkYcqqExEfsAGXXOUKSbMTAXOW") }, + { XHDR("qhycukiszuw", "eXeNMNZjbCcYIuARkqClvmyiEgeMKwdeEXxLmUopjnZxDflGBkWCKlfq") }, + { XHDR("akvbbbukbtto", "gwoVWKnDFhhImeGcfZpQdhUzpZKMVGSmqlASmShCsIudMTfIbMcInoGKuFVYvsiVJMExrUZCvAKMKvwW") }, + { XHDR("yddwvnygyfemxon", "khFijXWgKrIKWAHuAaLGBLjJIzLkbHovlAjTExahKWDkwemUFCcAIr") }, + { XHDR("tfsgfckxwlacx", "KLmFWKWrHCQSpuTyLhNZHodIdVmzpJTjdoeCBcoLtmOvFW") }, + { XHDR("erbbfpxrek", "uIcVbNWwMuPvzcQyCIlnuwkmnTTDZDUnqFCQDKECkQkMcSuaqHAT") }, + { XHDR("wxtemeygjlxqukqia", "zL") }, + { XHDR("nifrkqutxnxxg", "ULmomeMarpZJBrJ") }, + { XHDR("qtfga", "vx") }, + { XHDR("utwflekfkdmeej", "PQcYSYroujJEHNassmFXPEKUxOKebdVcgxKTBoNOLqeTZAdGMMtPteOYUXIZjKWOgj") }, + { XHDR("gaxyorpgvqsvdbywcosk", "iVQRDyuRyQxVsMoyCfgJYtLxncthWNjhvlWBMJKSHUQVrwlDLWMRUkrSisIcuPfGnGvogqMUnZp") }, + { XHDR("nx", "JsXATvboxOYzi") }, + { XHDR("izivytisabkzppkfwkfw", "WsqOzovDUFbxlMKwRMCNKzNIypSpBsDkbPPJYRerLBuUOVmxDPFDcDTtBHcmzK") }, + { XHDR("pnsxaugt", "aeDiOErukoYD") }, + { XHDR("nbetxzfclimd", "YiDVZXrzaKXvNNqmvgOFFauvLtAwnnqgyCHkxnhmzFKJhWdaMIqoPEUCsiPBtkFnenTHb") }, + { XHDR("g", "BuipkOttjgbcgjWnFCxoPfOlgpgfxGxxPNizNYiIDhvNudZjPOjRKJSNYz") }, + { XHDR("mcetru", "pLgIvJgtHINelNCKqeCdpggkZrnprCxGIzufF") }, + { XHDR("pvkphgjjr", "OOucLW") }, + { XHDR("mtenvtgnzqfk", "QBIo") }, + { XHDR("r", "NoAXsocdZHSLKlNlBaFampCOqjWtgyaExVTpLIelMO") }, + { XHDR("zbrzzhwbqzs", "SZiOiPNIUgufEcLjkdoycUURgDsgBSvEzLYNfSjsZpIrXoVUYnHmcNZ") }, + { XHDR("hdwrvurnuwodmozjr", "BeMbCNEfEsmISMjLXDNArtFG") }, + { XHDR("gxp", "GdEXmZhfTagtJBOuGXDfKHIfgwOCBklvtpthxAhKkpguGObyWuPsRCKELrVavslvQtFgm") }, + { XHDR("xjjzezickbswibymbdo", "uxkrBbinYjhzcTeYYTZjKHRYNNsCveRmzHWHiOZlZPOHyhIVYUKuMqebL") }, + { XHDR("bybfednmcghleerwbg", "C") }, + { XHDR("xwmsxhnkilh", "crOVwmgFCJaEwuqBofCOEqguhJcjAFBXmoFWwLPULPavURzFWHoDLzdYnGjkwOoqjtAckaBPfY") }, + { XHDR("vdridlcnhpeezfk", "azPjVDlvcxxlvXtMKAcBjMKloXKUhlEhmrbkJsraqNWdWREyXBvLonwLEbqtskfaAoFnvCUuZ") }, + { XHDR("gvbrvg", "YkrIqvSzggVRHiKoxGHHVbqkqauCrXnuIIIJSlLhhmJna") }, + { XHDR("nrgdeb", "bPqBlEiRUNqKVZNqPbsXjcKtedbWaSyarpixWjImVzVexcQGSvjujXXGlLhnUSUNVpsbvr") }, + { XHDR("pd", "fePtfHblOUcvSoCDJFZsGRTxBCgZnALaIAqfDMqoykjubzokeXHWmLucLnFOKHoexBiODUnd") }, + { XHDR("zvnla", "uvmjhyYHgGJgrlOdzewAoiSobmwzAoMxgiVohkDqRcvLixeTRBaOaPVTgUdpUAgoLf") }, + { XHDR("qj", "gaHiJccpdCbYNrpyNWCUvTcXdFFabkEDxiAazsceCwYOOYIlMU") }, + { XHDR("hhrxswynbmvvwydpt", "AVDOsdHDZHvvcXVynmwEXyrrSxkgRMzPffOPUjQpbybBJSPMVaPwNtnrxSmoJUdlFvQTdu") }, + { XHDR("ygpgodcshcln", "NZPnCochTVkGwYnppaIA") }, + { XHDR("cgogiymcnqjjpmg", "wNEemAapWEnSFhTQLjdJc") }, + { XHDR("jytmnpgasxtyjvqf", "wDqTCndkjOVxkXQThNKfR") }, + { XHDR("blmeaaey", "cWaeCTJGJEQjZBmUTDSGOVXsiEMwlpZCyiAvxxNhPfcSCPkrfjFOtUQJ") }, + { XHDR("aautupt", "fbCcUQAbExYiupFMKhReTACHjsgMgBsyZQNhYsuqWQSCWACZCAETGSQHlm") }, + { XHDR("hwjsjyuqldatraukwj", "GVCiXLGgERCghRgXvbtYuHOiLCBqxetoRPmxLrnJOcXulvFTpwgBxlPjUKPfEUTjBPmTJdbWi") }, + { XHDR("ukvjyyikckkyzvbcrvt", "EWMfigDHcMKrsgTNseFnfBdGHnubPJhfXVFoBNraxRqLbkHi") }, + { XHDR("kkdkeyhipnarad", "dami") }, + { XHDR("nnghfj", "BUU") }, + { XHDR("mfxmvwoadfq", "TvFERrJdqYwbpQTrUpjJraCljuWgFvGIGdkUZqpsJQZ") }, + { XHDR("jdntlftofejmjkej", "hXBFoHQbPqtGLKyGHoypmVKwekIeuRgZljPxnXXmEKUr") }, + { XHDR("sigouasoobkpxku", "mymKaVxAIWObnKKYdYkQRQCuMJeHqrbYYRWipp") }, + { XHDR("rrad", "dTFtNrJniNxWzQaBQifGMiwmyKhJTAehgcrrjpJMUGreOCRbDDnr") }, + { XHDR("gpsiolucoknzvtlgcj", "UZzMudsmJVOWDdlPwSycWvDJsiFjYpZgzJsFkNHrqGSVusEBtERKOYVrQBucPtUsF") }, + { XHDR("pzlntn", "BPRoaoLciknDjRhrqGgBkgHmwbnqGRtjvBoNUjXYqgqcsIjThyWDoDXtFPHubHCsyWpzHiWeG") }, + { XHDR("evexvbo", "HqhfVstFZQPGT") }, + { XHDR("yulbxkvzzsqrshgn", "EHxnbPvVrYpZEKdOHfYkEBiaDWfzQZ") }, + { XHDR("d", "YzQhFZJtUsdGSFKHdHR") }, + { XHDR("kxwnepktkx", "KsltrNaJFqZnKJyuXBTshLWIczcFYJGJMoBGdVVinopwKyAPgIvWsJzeXPuAGvnpcE") }, + { XHDR("eppbpnwmxfwowdybl", "RCHogUXgtWCgcjRhkmtDPOukSWSRfPRBklkhMfzePHlGLTMUikbFIqEewMIGDPldNEcxqDji") }, + { XHDR("ltqehwxgbcu", "dwjrSVBdkaKTcrfqEaPtgWaRqdSChkUmbTxoChAISQqCZENUPmaZxCjXGvBUAHjzZ") }, + { XHDR("ykvvwbkoaadudzdiif", "loKGiwtanGs") }, + { XHDR("qasuuktvylrtoxajj", "srgFWCIdxNuJYRTNhEmgeAygHTUbnXwTnju") }, + { XHDR("uhcntkz", "IpdU") }, + { XHDR("uw", "oYhXWuiTUDCFhwVMHZuqxBtqoqNhERqxNZDjTsBbJR") }, + { XHDR("qabrhwltwybspsyyzocy", "hPBeqUzvsOMjACgDgUZMYpUYxUAgDLFkttygoxqmHyrXmpaCBCWyhtOtdTtCultGKSkIdDvmuiOBjhsF") }, + { XHDR("eleoiqkrdq", "sAMYxLlXIK") }, + { XHDR("jsjfshmpea", "ZEgboXjNAUtoldbGTzTunVkqrGCgVMVVaTMVkZ") }, + { XHDR("xetfxbprzndwxogwwrzh", "EkpOVKyUouqqImxmVFkmzpxjOltnTBeiyYqUdVxPXq") }, + { XHDR("uhm", "gPcETtjYdqiqpabHFNJPGvYDyemzBKQeNyA") }, + { XHDR("ltuouqntiy", "ZbXGOicCkMMohycRtHcbw") }, + { XHDR("oqwfretzmikinfrcjd", "xHEc") }, + { XHDR("bdnkdzohz", "uIUnBFcibqEIBHzIigTyKcirBgUzaqxyJyBUEPVdQJJcNKDlMOrPDjWcChA") }, + { XHDR("njbajjjg", "ZrRMuqt") }, + { XHDR("gpcw", "CWopizZpsWHNaQtdXBhXywAdLZxpdZXMaTQINtTAyzSFNvMfvTougBQCvmXCmUrkafB") }, + { XHDR("uxyyb", "rtrFBqHRLTmVROUrMbtTAEiJibwDJvFIBVRJbTpQdwlhJxsaEjijkZZOHQrQQYNZbBTakOjWjs") }, + { XHDR("rudxisjrkdelchymmgv", "XfJCxmiMUQNQNAQViaaVyGPnudRgNDZqUZtKkCpkOmoCmaoBRTPxEGCdbTmLnYRlaCziaDiFujA") }, + { XHDR("jucyhvtauhedw", "wNrEVsaERCFRNsqRLLDFpCpSnySHiwodvxqsBOiFjNOhaSGgeXQUccWLh") }, + { XHDR("ltwwlmuxx", "roclUkvJrAmYsRzcBgADysGqoPnpiQCXbXMWJLsvNSeUdmaFqpSaFAvLPOeMIRC") }, + { XHDR("mffudo", "zSjNGbRKtpUocPE") }, + { XHDR("kjajxxhnwsgtytd", "MjbXczOedaDpJgsvybNXQxrreShqisVzowsIeDTtCHzbGjVJNlhlXNzaOMifHDYv") }, + { XHDR("fpxqm", "OThKEAgdeDZIqJxHBD") }, + { XHDR("rqsbfcyqp", "taGUUIWbfBCPUJVvJCGoRIF") }, + { XHDR("wuhtxldnjpcujqskdo", "PntzBL") }, + { XHDR("gydrasnxbghvaf", "QxJCAxZpfxxJEFqvXEcLRSuOxepXSRPYqlIXxmAgaKTPITGtEhFvUVSqkJqdycHs") }, + { XHDR("ajrujsscmzmq", "fSiRvVGAzZvJI") }, + { XHDR("mdtuywhozlj", "bXTKyNFQJhIkWLInLsfzUtzZSJReIEclWeoQnqKkhsFMlwfHrgqtHTOBrsSzyLcaSvYgjnV") }, + { XHDR("xafrwdjmuyuilnjmuyvt", "LxbUMnVKfceXXF") }, + { XHDR("rwkf", "iIjDCfTnCstAsMqpHNDMSoBjebrUwfqNpTGZSHfMoDJggfBnb") }, + { XHDR("ikvabfnyfzhnmxzldf", "ifnNSjWWwFPPeNMNMHWfDkRlnYsNBGcVFZuENDq") }, + { XHDR("vowlqsihpbfttqud", "wZitFGhFonrbGEkCaVxtSPBTtqsIFLEGWQwprxfDqhOFUvDvRWQTdKsABBdtqGBUUKXseeMjj") }, + { XHDR("yxazqbszbtidyokwojpe", "qLFbEgSmKtUylXeMdLjAO") }, + { XHDR("yvaxysiktsmninjg", "JSaFwsQGvouyzhqyJiZYfDRvGkcfHnaxqCXUW") }, + { XHDR("uinock", "HHKOoGlJOTCQwfenybeIZkSgfWkEtNqlyhWCBPQMdTPzQcYpziwhRvrFhIWPBPlecJdLKVHd") }, + { XHDR("vfaygdlbwvm", "EhHgUzVnzepFXEovjmhyBfADLZQMFJVITnWnUiYHFOOOvkftsJTyFrjIOghmgG") }, + { XHDR("keu", "tWlOCBlqysaVvrxFtDDVkHRQboElMNDDVlSVLzotRxZMMUNaLxFOKOQclZGsOAmdhMlSefQZ") }, + { XHDR("aa", "JUPjxsbFxawgylqobBwGfOaSufRuRpZcVTzPIMuJAFhLutDDzmfh") }, + { XHDR("xoizlppoqczlhm", "QYNbZOsob") }, + { XHDR("t", "IHXsLY") }, + { XHDR("xqwvguklszeqzeaqgj", "xMYlvfvwoEWQaxRVaGrBugVprjFMsvIixtDFTFVVVWZCqesLSubvXxM") }, + { XHDR("hbuibblimowmz", "RzaP") }, + { XHDR("plehzqwudqaa", "eGSQbeStVfemvOGVXFiNjeFVYTXRjYhZAjeIjglHYFfHfHdeWXqGbKkzMwoLnobSWDJ") }, + { XHDR("qnbuhmk", "jIRLTbtYu") }, + { XHDR("bornjwpzqawqcrmd", "GFVX") }, + { XHDR("dbnyrerjy", "Ttg") }, + { XHDR("mknwzfzarofpzzih", "RUyBasRWrOmqcHrRGXngZQNIOaRqzYHodUErsIkimqoHrlhBHLiknBDPBexOJwktk") }, + { XHDR("rkhf", "FXzYmqpUvmMqPTKNdgWaWnUgRKmbYBEInLrtYDBPvD") }, + { XHDR("undstoimtxdimiunq", "dRQxZBkhOhEHHOAQrlxYoCFmbmlTgrykpfVWTOiFWmohLEvVzkxbhOvouZLnbUvDtdoFmFKoElaXhY") }, + { XHDR("echhydyfcmovfwxvxt", "PAymcOCwRcrFQbmLDVcZXLmdrcFsyfWmMCY") }, + { XHDR("hq", "BrFvqKAlkIAjYYDcbqFVoFcizxywbBCMyqnRcrjUNRgNnbEIdFkUuxvVTLAQx") }, + { XHDR("cynclxhwdv", "lB") }, + { XHDR("vmvbbsnvymuenwyghvi", "GbqlfMamisdeEVTHKPHeGMtkfGggLjgiGfAArAq") }, + { XHDR("egoaz", "LuASmuKJXzZlBYqAlmXgLRQKIlYXfre") }, + { XHDR("plkir", "FxNojdsysnlOrholIEsqdDVOPiArSeHw") }, + { XHDR("bblouemlopza", "YjncOtMMTBLLM") }, + { XHDR("lghvmhjxamuocmg", "tuslJlxmaClenHeVlVkbINObkeBmvYNYBiNiQ") }, + { XHDR("cdwxpmixuxh", "AKlJZKQeKuiiyDAqMoDAnMEBqAEPhqOAriVjJnpdnHrupuugvyOIHMuQIiAhxUwmlSk") }, + { XHDR("z", "NMsp") }, + { XHDR("is", "odcYkumJrjuyjEmBvdnplVsUzAhoBlUCiNHnlUjvfgnxXMLvBECOJIQlNCqGfpDgyRPBGWejKuQajY") }, + { XHDR("tx", "eLlKMsuhWZDiaAaOxhcXASKylzrBruNhZBEREFtr") }, + { XHDR("lwlptcaujnusypggxtes", "zIjjocFywRYUlYaLvwsltFnSwoVELiBgECnmbYqKDz") }, + { XHDR("owyaqefafwfyqojs", "EGlgyYUJMfrTwFiAuPLqSHTHbxYKfKwlNvlrbkAfnLkRTgkwlB") }, + { XHDR("zhs", "uHVfEsFSGTraBwbtKCKMCmLnjqUuuOglkDhYscYKbhPJnPGWIQYgULwoOXVEHPvTRDSKUMS") }, + { XHDR("usxfmqmwwnz", "PLtBKYwNJFakpiKwQyVUU") }, + { XHDR("zpkwxmta", "BsbjeFKNAtorcGsglkhdlvRMZzgTAAyPtqdmxh") }, + { XHDR("uejacddpgwzmyeqy", "JZxPQIaGDyeLbZDtTyCxzHKdzqqHTDLGvdYkkMtRlClCOgD") }, + { XHDR("iybnsmzvmughophonzup", "qYbvQIZDtuQkBEbBdJfvDGeKviLSPTynsbwLs") }, + { XHDR("udjmyfqptsab", "hjNxsIoOTTpNPqWmSapRhg") }, + { XHDR("drkygeosyhgpa", "SeFGpAbimMdLVcFqZyVAZKZTbuhDDJsPbyDIkOvAbRR") }, + { XHDR("cnqoy", "tRfrTvabQpHeskyAuqnKZUHOJJMlLBlZAzZdxZpmnknPDsOVPDeXfbNfrneiFl") }, + { XHDR("vkfebazddiua", "sZVpV") }, + { XHDR("loyzhcxkrlzk", "UXXkXHBZXqScIShhJmLgZWePzbROtNmMeSXrYzHhloGZmGRWRqlZSNYZGshbGTAnGiOzWBKwmD") }, + { XHDR("mwacstkk", "qJEHmqklezWVGOvJRVxpIaSJXePpuTzNpLCZDzvmieJrUXwGJwZYqPNCLtWysQRDfqsxBdatfBlzi") }, + { XHDR("bpoe", "cvnwRJXwjneJtgCXISNW") }, + { XHDR("fqrncp", "mvWwbferLaAFMS") }, + { XHDR("wysjpcsvbw", "WPhULYaFmDDyhGqyJdQCTUALJdNNcitXdWmlErUBOaJ") }, + { XHDR("udevssdaigvzcibyslu", "jPeqGIDZmPKZficlcqjXokhqRTnWCjhjIcdnJTHwkuksjXHcLlSmWND") }, + { XHDR("kgldjgzcmbcd", "BIgVYGHWEoAHLjXfQKLtFNjbdASILyrmUANvWZkQLrQHrdTiyACtwxzJBXAJLBRC") }, + { XHDR("vkedzculqzuw", "fgStFgdeAwpPzcUhEjnALqNSVpyEQLBCPhLanKaLqutntzQXVjMPAOQzRDBOtZFuMoXMEjrdsM") }, + { XHDR("kgxwljwpke", "uqmyEQhYiron") }, + { XHDR("pgbr", "NQwuliMNAjZLCgHHAywIzbsfOrxCZkJOlandOhXOKXqclUq") }, + { XHDR("klfkfqpi", "AYOhkyqHqLorIPzLgVNLXevoPDMjAgrUDMWDSHPqMMwSRnqoVvedwZnZgZJXcfXbACsGqpmTwvxk") }, + { XHDR("fbvc", "owSSSFJzz") }, + { XHDR("pxrukeixzsjzkxy", "goQzAkTDFcUQqiCvPnQnDaIEzJXjHVlqeVWgBjdXfizEHpViiXtgkHCvVPJyHCjIEELqVMDv") }, + { XHDR("cznm", "yEudljmsBvuifYqnmwYtXyCSDBWPPjHPDSbszRQqSxbvhtCfdIjgJhnBdtqWiawiesn") }, + { XHDR("jtvejmisas", "LnMcwseTHxcNzeKpWSfmJMQtmPGRCDCSYUSNTduxMyDvriskZyTLrD") }, + { XHDR("bcdqpsnocdhmzkhidr", "HVyBxutFbuYVYUmjiqnuAcVPDOBYdoykLzyOXBcKeOkLhMZmGpTCIQ") }, + { XHDR("ybsem", "KAUTAoxOMBXQLwlVbrWXtXZzuGOXnInORyaYzPPHPBTxleZqIphLtkbTWHxKaWOAP") }, + { XHDR("qdvsmheldpu", "hUEMWebt") }, + { XHDR("tkkqazzqdwvcsutcc", "qnhQDoPbXfjZbueBTBktdPrBpKNtflfJcyAyCBRzkkNROKsHSPFhSfNLNvgIctLoVMjUkIHztqpAU") }, + { XHDR("wwjyqtkdowfpjv", "FblpSSDYUMJEdoGoCkGuJAPhmYuOqcorGwjQBeieYLTcxavHfCcRsSGabhxYuWbFV") }, + { XHDR("d", "FfInZrzJXxuwhmkVNed") }, + { XHDR("huyac", "yjkNabbELOuRIdsRBFbOrasPbvgpZCBqUHuLOeVPWJJWhndeAonhAquXnuYaYSjdbyMZJQjMrux") }, + { XHDR("mwflnm", "ZfUCcPnIqfdXQefBPNxxPUpZAJtFUntchDblLumcIbDkBWeQ") }, + { XHDR("rjk", "cVlGJBxvZSvjrMuSGFRD") }, + { XHDR("rivnzjbsnimxuht", "ZbztlGhbxqmUFKssoSCZgeoBoTMRUPFspaosBPxaOKtiqZSnUHDxraCFxgsGEy") }, + { XHDR("nlogwwwxjehfd", "sQyqEKUmKlYCEdPnWwSNjeSFrXazeFYMPYmQuWRIVAICJEQHLkBc") }, + { XHDR("vfupsaszxlpdjcs", "TBBdoSVoTswfsZeeuvYLaspNWaHPzQIjtAZShUWKC") }, + { XHDR("exbtad", "pWIkgGlSAPOPbxStroJvHJGdQLDnaXBmTbbCIoCGgujRVWzBWcXeykesHpQXkQFFHItUAhm") }, + { XHDR("vvytfrrlu", "qzHtdwiWZOPFAXRCuJRwfLYtPFuIKYwwBgrYpFMxeVUYusemUie") }, + { XHDR("dbhtv", "OnUuAIzZYqOrfiYBqxVbOcYLe") }, + { XHDR("fdiudhatcthlrmksuk", "QMjsXQhlibtkeJEwPHudjmBjFfMCvXNqb") }, + { XHDR("oib", "tppmocCBWkYleltQUzviEZAgAxJXLzJarbGNIXrbGea") }, + { XHDR("psujvst", "cKjd") }, + { XHDR("xpeeemnjcufqbi", "ibOHcUj") }, + { XHDR("erinyuxkncaexdkm", "GWYgGprXwaWgnP") }, + { XHDR("puyd", "GdNCXOTFZCyzRejsiDpzRSrpULHdrHVhZEwBNRUxYilhikmXIQAtJKCv") }, + { XHDR("kxvzasvtfcvkfcclwsma", "RwyDRsNPwEreyezpdM") }, + { XHDR("yifyh", "DRsvJcfZaJiQgzXKuiWB") }, + { XHDR("vilhm", "vmFoDmnnGSplnhUckudebXfePclvEKytHDoCUTPJLRt") }, + { XHDR("hqsvg", "ufdINwBrgXFoqXHOQUpMEVYIYKHExEXYPkcNJZlTNLIBPZIYTTkozQWsFmdIqDPV") }, + { XHDR("oixpcajzlwvwb", "AvrqQZAtnAdetfuAgDcjaAEADrvjCizqAZHJuUxyKDKSHuRuaZljEcQTDHgxMWgFjnEM") }, + { XHDR("gtyepewqgfcng", "kUxuUyksefFRwGrZnsOrbEFVZyogaIlYdFeSoQkmAXyT") }, + { XHDR("betnwbjdentnibecn", "ZvGzjCQflsesYmNLKsWCFQOccudEvmvqaykPbFfQBsbcvgRoY") }, + { XHDR("brprkbomxnvhgwz", "xOLy") }, + { XHDR("ovexaunhic", "YosQiVCNyTpkJtqXYdcHOykMWVIsOmNLxZEFGmRBsnztTZRwZSQtVubbTAEsCoKRUdwyhQN") }, + { XHDR("ciotbupz", "WrvRgwO") }, + { XHDR("obapgeukmazjtney", "PHVcxVSiAdFDzNHLdtBEZsKBCt") }, + { XHDR("tlk", "QGqDhiTCiWxMbc") }, + { XHDR("lwpltifkyp", "wKbSiBdIxZYMJrLFasSrSxiWUrPOyYICCwKctRkOzAsxrzfHAHoBQUiRxf") }, + { XHDR("frzqyrslcqwxjtbexb", "mzajTFLwpWAfYXHtRZGodMDJXLvOORvaQsxJwiMVXbHUABbavG") }, + { XHDR("ihdnjtbuvmr", "KmbnqlAOnKCtpbMygiaFiQxdvaJbTyhhaxNxKJFLtBVOdVhgnWGRKSwIQExETRyFKGSMw") }, + { XHDR("yvjdkzqiccbpbx", "HGQncEKTgolRQfrfZvuKEFKZqasEPHcTmuriOd") }, + { XHDR("uznytweiabe", "EbgFHERBzTzJiMHNJNmkwHRHIsyqYHjynErLKhogiVqwWtIgfM") }, + { XHDR("yjhqtfoatmrouxkj", "YHWxUoMXdEwyCDMIaOPGngbPyaITKoShsPwMnUksiEoQOYWdhgS") }, + { XHDR("mummtfuvyiofmuq", "mnxraQWXmqrethFKOoNJBFlnCIWsjJagFBsXFVSzcYHQSELhhbiQSHcAq") }, + { XHDR("ebpywdqysxzesrzowr", "xEhfGnEGkDDbhhXsCUNPAXgiAkIEAiAMkCHeqmkVrQltBFwnluZAOpFtyXPoxfZHWpGkBVI") }, + { XHDR("k", "cgUShvWzSeomPegZVuYVtPdYMlZQxRYFjjSLULKz") }, + { XHDR("oijnhhty", "egAtjBbOYoxePgtbBFBNdzTunJqLdTwsizAwxTZQmjpUgSyFHbBYynPs") }, + { XHDR("izvukbedbmaljp", "aKYbapfFcEYyRHiyrzlteLijlctxafqoGzASG") }, + { XHDR("bcaaegyzjzhbtpbspghf", "xL") }, + { XHDR("eqjngxtqqsvnneuz", "BuplDTdZCVTCwfqxYHhmFVBAMVKwRWszCNIlBaDShEmFGGMKQcBTBRfCor") }, + { XHDR("vjqht", "wbsyAZjCWqK") }, + { XHDR("nnpxiyug", "cvNmtQFAIOKHaBSziJansReJwAjdLYCa") }, + { XHDR("gq", "RVLNeZWChAGtfimPMUyKilZtKAmEEkLaubCQQYEhbHZAhLHCsznFdAQhEqpZkPbhywrQyeCCfiSgP") }, + { XHDR("izdqfsjgeil", "rQZbgiWJBlVgclWaonDpHLZiwXfXALFMgKraIKvPLZVmvAaoAfLkbHZMl") }, + { XHDR("ubotey", "dkuNTUIoXcODdkXirLENDa") }, + { XHDR("jnddmdrlcsljsbkgc", "SfSMFDUTKaSkzfNhDQLFmbrnPpAhzzqOjrDjgYlyGkTiMVGTOyGJySbDnRghhMULS") }, + { XHDR("zvzv", "aDrXUojMKFCsAoSaDRylAnnhXyFdIEtyuDetCMJLIAtwbjNRzJDzGBnyOCDeTkwhl") }, + { XHDR("eqzskdekikrh", "mwWYYchHEoMHC") }, + { XHDR("fcfgdbvstmcmsjul", "QKdFZCZHFpkFP") }, + { XHDR("jiwiuoqsiktvaorrkj", "XWIVCLVnEGjRdNuRVpkNwWqDDOKfQNyeGWoDZePbLU") }, + { XHDR("yzwfu", "zpPmDhrIcPfCEK") }, + { XHDR("aceeuvixaulhryrz", "bzjVnroHiVOPObuQayMkxnTWoMgncfNEIoRMYiPGmNLmRStjOwNgaRLMgDeTFVcyKeESBNwvZhgaXSCz") }, + { XHDR("vvozcrztz", "ZzUWzcnBRajzZsPIpKAJBKEgQOaIytbOPAJUtmwcMmdTAmsuYWFGGNWFZAoHcGwVoThmhNjp") }, + { XHDR("axejnclnwspwalookrw", "sYNaLDxxCrwvoEOpjIxkLSLiJEsEpQxmmKbqXupLJkoccgqsCkoMbc") }, + { XHDR("zyv", "zEUubbtZefGnikCSe") }, + { XHDR("tdvenywr", "RtDJVvEaGEhZZWsBKEoLfIbOHriMdhnuczFZjdCcxZgrAgGhtctnJIcXHDBOumdKYBBthtgBeLAcHNY") }, + { XHDR("qnlt", "zltsGMNMRtvAiVNKIOxoNqCiJQDooedClDmeHkgAOgsJMMMmvxbnFeHW") }, + { XHDR("ynwpksikbysprkel", "zaZNCIoUwdKEXRTIVWBEeNRtPDrMvYJEBChWUGDvmyVQWjerXjoIaAkW") }, + { XHDR("muwnkffop", "TonciiYxXRHMDqhbe") }, + { XHDR("ckqvapgny", "uPklfbeqRoIFAfAQNNINaSlCCXeXnqCKzYUwoSzngCXjrYFUNQhTLHDMpXOTsxCEuAACB") }, + { XHDR("m", "pcqIZlzAtgYpXBoCmaEjhj") }, + { XHDR("zjbeuoovlprxpluqlxx", "D") }, + { XHDR("qcfnqnvhiewusce", "foLvlKetpmxQZtAVyHGBFnEXIuFjOAOtVJUCwGsSiBFiCWYOYhKevdaZAmAMaUMKJIlffjsBNwC") }, + { XHDR("wjjcqgklspbyspyy", "dfThbyrXbCliCmVtkkXApEMMYPvMCgckyehNCvucbPYXWpqGxWkdMYyWXttQLPYHTmPgfyQHroJCNmq") }, + { XHDR("ivxfxctvcjygrvmjd", "aldZjTqyRdtYmOh") }, + { XHDR("yifck", "BPQeezuIsoyYpPGsywohVcPEVVMmCXYpkJnDntUIukaJeoxNfkinljMo") }, + { XHDR("xzwincmxrnqdsql", "IdYTEJrlFMavGEvLGrckYryAGdldmWWPdvsZCIlTTzY") }, + { XHDR("uwwlvrwneprfkhmmr", "DhYmpZMHVVcfvBTSMAGffLGuwabjIuttRvMUlbjuvlXGFdcpLLU") }, + { XHDR("tpnqztpllw", "XFZWVJadMxjVHcd") }, + { XHDR("vtlxu", "SAKULlQpwDvBjXzFGsnGQpFpUzAiRjDcMmtLmNltWuufVKBJfrNwaCdEhwjTyMxCvpfPjYBZJmMZVvUR") }, + { XHDR("bi", "CjghrPNhQgzKdTYDoBGoQYmIYutTWTqVdmUrpTgrdxoZKwmAlxMCAMqkSaThwncoZHZyOtoK") }, + { XHDR("acred", "HWRuHVnvGWMlyPktkogiqPOlzSAWohlXrmzyGeiCsMjjXRaTBfYVzokiqhpFArISiyCTeqQvdl") }, + { XHDR("jvaem", "FsowmUOnKTiqefmhx") }, + { XHDR("l", "BjIJRzuoLqlojBDjub") }, + { XHDR("qscvcciyyueoa", "lQZqrZpVwLmhAmZsrGQotHMYgryC") }, + { XHDR("ypoqjtgpagqbawnsue", "UNJJQrzWHjnLmcxrYeYiXfZKvbkx") }, + { XHDR("vforaq", "zBb") }, + { XHDR("xfhlulpjwqoxt", "mdOVPfDAgUVxKFxGFTERsiOpBMxvLbnGVzBIvbqooaMVSWxYWYfakokWRqBsVXxzG") }, + { XHDR("qkymqqwjeboqgoy", "XJTeuUDTpfpCJabdSdamCkB") }, + { XHDR("zrgemfnlquvfyk", "gRmMApaLWYWjxSICfixrbhi") }, + { XHDR("ihakiuvnxc", "jWhoJrovBpyLWPPwDLUOZOEQqyzLfWIFwjQWpiQMzinTlZbvjKFZlBIwhVqnGuuuTEGtakTWvGRVUX") }, + { XHDR("bvppz", "jKPsnHcLwZlcXdBIjlDhWsKWhzTSWKrgKnTLkQwKxsDJQUO") }, + { XHDR("kuftfjsk", "rWgiqQRghBCdujxpcndyOabbsfmykIeYRwgGbQjhR") }, + { XHDR("ajlyryegvbxsu", "KWyngGezwpcLrKmBqgSCZpwmdJV") }, + { XHDR("epelux", "poBLXeqiGisrJLMehGtmwWxNugTLTWZXJznlEhAUBkTRqzEHVxdvwFMTZHIxgdVtWyGIGBdkL") }, + { XHDR("huroheuznhoyifwdqad", "KbVnuUfGcPPCJmMGhUIwrliYZoqxvtsxbBsAwUOzzCSMMvoIQHzvzWf") }, + { XHDR("kvadghepr", "NtRnRSpMQqiAVrTHRCJGMPrOFzCeAzDFJrpeSqOKFxFsROfMseHiob") }, + { XHDR("oov", "gzmadtqnQrsJiFjXOMlAPtNzsCfscmmmNNfSFcb") }, + { XHDR("leasvkdmju", "gcIvAdiZvlDnpqTnYinAtOPVqgNdBgbqCYInhvDvbHWvySWlKc") }, + { XHDR("ccfiodzgsahulcavvvp", "pSgbHsGVRCKGatVaSOJyWEMSYCSAmBIVizgxeziyYWYvpMapviJFrRyUqEkHHYrgd") }, + { XHDR("hysxeruewwfvqsjoxxps", "gSMElrLAOAozxcDUzYWsdgWVDjUCEEKuDYYOMfZGSUPpElGaBOIxNewpI") }, + { XHDR("n", "XMKQxgWAXXahAeDLKCclpUIzJJCJWfMytnJkq") }, + { XHDR("wuqadussobcdthzfn", "OwwMsTWqMZYbpgxiudeHhtSKxZEbbtJWIhXxEBprkdKBzOMGsKnoMRt") }, + { XHDR("nktohlpflqump", "fQbnPcqcEyFlBJTXQ") }, + { XHDR("ogmedgto", "QSvBRNJ") }, + { XHDR("hbjp", "rGAkftoFnAiHfhvyxRWXfUwEOwvdGFZYjlhJCmctzddekGOYTezIowkroMRQaRXuFykfeyTiwFPu") }, + { XHDR("riqyjzacazn", "uZlbEujvSzbYJpUzkdzWmPdsoRdwUXInZLAdTL") }, + { XHDR("vihtozj", "KbHZOQoIyqOaFsjcXdgubbvKUqDOwdUTPcsXpgReQfEVgPl") }, + { XHDR("pb", "ZgrjMqy") }, + { XHDR("jeuwfcweqogccxoj", "NkEQlqEUwnebcvNxSKwazZBpeLcJgznUklFydumLiZelwpirTULoSLouoAEQfbaDPwveuaVR") }, + { XHDR("ihhjummujixqp", "plJLKXBmZxRpdGbEAIKhQS") }, + { XHDR("oouide", "YRDsLtTuLVpwBEKcUZuqr") }, + { XHDR("i", "HLZCfOlkuPhNlHRKaNpANUUHwOrCIUaIRzSrEGcTRADaFQHyuDYTedLFGRveZJwuRBcciDrCB") }, + { XHDR("fvruejdgpopjpazdja", "cPvgxZWmPpVVAImPgGTWZtoEZMhdRlxdrZM") }, + { XHDR("chqmosfkmedazgrsjugt", "iQndArxRiBNSXZeUoEkeFRtYcLBMqxwSfvWVJRlPYSSdRLEolqwWCfzhnKzZmaDZZPbZXYtUNc") }, + { XHDR("j", "SLkcJbHOjMMWwALVKdpGhBoDswxiVPcpfPEDJXCVpXVDCauPTuJdCSFnyifIDjHASLPYssX") }, + { XHDR("jjinykv", "bCLuJSiegbprmuvjlTRnXazmJRANPwqnF") }, + { XHDR("arneznfz", "LAZUsJMfsVnMNOJbegPktCoAXKUaNHMvWHSfdJTgdMek") }, + { XHDR("ir", "RXSIfmQdSMhJRcL") }, + { XHDR("x", "KdyYAIIOJvJrDmibmZGhYrHnnKvyhwjZwHDTsVvTgCRWLtLCSOCYvYgWYgvCPAzZ") }, + { XHDR("l", "jreMPygQPpjWYQWwuXJmjUnHlpBqejtReremNidElH") }, + { XHDR("zaqmouzdamv", "eEHzdHFdlJPwtFFcmGahnqcCsKBMODmIlOGwgIVloGHwhalkQPYohLGzsivOEmfMQufaDa") }, + { XHDR("jgifiyjwwz", "wpMLpSzORwNDzVbIeTMQuxBrzkWqwiJvmhSIOyUJehEyxNXlQDlpYy") }, + { XHDR("bkzqkrarwdaayrsnqpwz", "i") }, + { XHDR("oceidtun", "tnfkDxIoxgqhR") }, + { XHDR("hnwwrpxzcipvfa", "WdHCOzVR") }, + { XHDR("mq", "SafFUtdFtzyfauet") }, + { XHDR("aionadbqq", "kajseSgDmdMHjVttBEFNhfYaXTXnQoMIfTfsuCvPvCmLpZKTjVkxkEkeJHOfmtYF") }, + { XHDR("plxbjvckhcawtuqrq", "drxgJrLpaZlFzorSzNPXWjtvinrkYmtTKZCyiwxgxJYOMhTvPizRpXKlAWLsBGcKMKYIi") }, + { XHDR("ajgwblcd", "IyVRuLyaJNAsFWLXPpgNlwvXwvQrUBXyGffDoBSWPmmY") }, + { XHDR("vld", "YPHBvUNTcQKkByHOsFKolaJvKcyeplkiWFtxtMBOLNxfKGiTPuCdJNBCmMJdedWNuSlq") }, + { XHDR("xhyxwp", "EuPLJwpBAFtHtdccUcEXmkcImn") }, + { XHDR("kz", "ygmJCvgLqjXUhKuePKJByemeCzHWVmNzLENlWPYlPkfCkuYsjtWcYRwafiTOrvQ") }, + { XHDR("ukiordm", "uCJjCXNsepZNqASqDTOnDOqcRcku") }, + { XHDR("ykggrzhka", "VJDtGcKEYYMINhmPJFPXmHHKWgiROTheNHpnaSJoKgubUbPtQpENhbNkrSEISRXWYmAGgkhPbRxTdw") }, + { XHDR("buygeaoqceaweh", "nENVjWcoHrVteLpxpOgyEu") }, + { XHDR("inzowvovyccaippgtrhw", "PjhcKPhPAOZRESVRoBPdAf") }, + { XHDR("kgcqmmt", "mnqhgWIpDfdzOCjPMtQvkqKwpLvhElZSpexnWKCDuQnNMZZUVkkvfVlzD") }, + { XHDR("vhwdslcpntflmjbo", "llCVRkBjXDpJPCTLZXEeTiYJjOFv") }, + { XHDR("pdptqe", "JX") }, + { XHDR("nmrycwr", "BXEjYqugrOEewswHUakdGWgkrUMtWkIztOhXQiztvXBlzQSiezDDNRkvnaYbCPxDmrFkgYHKjiFIl") }, + { XHDR("tkvazetzxue", "yhvgqqPFbotaBEkYCVTtMLVpnmsxlzxLh") }, + { XHDR("efrlquyveplstonqg", "oQkCKrlLhUIXXKnZViKBtekDpEr") }, + { XHDR("xgphblia", "ZXLRYPsZxmdGXgcUtUeMuyTuAuYRbiZMXKByLvdAkPRuiHIuNixgMXHV") }, + { XHDR("serz", "GzfuNtKORUUnqCdyuZNapEUyPLARnCXxbhChidbQWzGGfEuyxymMPiDoqSoImGKTIEfrybuPwv") }, + { XHDR("betxovcyistbxqp", "WJgpGmfanVXQiYtUbX") }, + { XHDR("plsnlswujmxcf", "JfqypkgjVKrXchmQHMgTTyQDWykGZldJkzAGfeYtyStsQpiMENOFatYYb") }, + { XHDR("tnbjubrojabhkpto", "cvGfYbMnXexWBMiuA") }, + { XHDR("oulyzagbyoaqncpgum", "XpwEDfsAyAodwvUozntws") }, + { XHDR("tjqhhx", "NQqkBVpHRfnCrvsKfogvKLeYUfgz") }, + { XHDR("kqtiagqopncnsfmbgnzr", "DyHnGpxqFDeVVzmMbskEGFlZoexhIwIVIQrtFcSnNYLGomU") }, + { XHDR("blyaasjfsedjqtj", "VYmSoQdtEdkrICwrRljGPcFPWlyerqLka") }, + { XHDR("bziui", "mRWCInootOYRslAblWeIshWCoXvZZQWPUbFPrIrCrzvvDUjtRCIUmpKStLfnWEYgBZJCUxaHQw") }, + { XHDR("k", "KapgMOoQlUfGgY") }, + { XHDR("oxlwiu", "dQbTwCMiQClGPEiIbJIPdEEDLJpDFGmXckuvZPocSlFencGhxc") }, + { XHDR("wwthplzn", "OcgniIxBnIuNUwFAbIPHUydsYmvIxGuXAJxRrEUmTwIEG") }, + { XHDR("spemlvw", "wkgwBVTlRgztQkbPzYCiYMVGRcRKeVU") }, + { XHDR("wuyuwsewhigsknxegie", "oeMMHCWaTcVUrSnERFTSAbYdOyzIQlDcNnuRRXhVhJbvSIVeXHWvSmJVOZ") }, + { XHDR("epypsylw", "jhpsklTdaPxq") }, + { XHDR("asogpfcqvesuc", "tzFMgTHuMxcGUwrZxIttlorVyySldHtEthWyHokFNkwnAajjXWD") }, + { XHDR("mqjygseqnkbgtktjwopu", "QpoUgOFFlCMZWRNcnsQQqGwWZsgVsrdb") }, + { XHDR("hmggeabxtnygsblvyu", "ApkiBEgRwRQzPvgGzWWcWXDwYwMHTOzIGrYXOceZEgWwmfcBqTgIdsQnVrpGQTCOppjFrSBKjf") }, + { XHDR("lqotzkru", "ktDVWtKrkjXoEAKOhoTUgIVRTXHTloUYLhUZYVacT") }, + { XHDR("fjaopsnnqbvqyyyhmhd", "INxbIWWxUncnBKCJaMRZkWtqJYbJCsYBSrlEkIwDrhsCtr") }, + { XHDR("zi", "pcpnLZIAjbRUBVKOmpoAnqqVsuRAjlkEVqQHyTQeMExH") }, + { XHDR("emyertzllgzhkdjdbk", "vGwMOlatv") }, + { XHDR("uxhzeccrict", "eFBbtsMFTiemFQiPQGpnvkhbbqKQYzjazrp") }, + { XHDR("ik", "syqTTupkCSerUxXxBMnvszPphulemPIGjuqA") }, + { XHDR("zrrxauvgwdrnvz", "uOuBOICpOZdJBmRLPuOpkYwzohJBOgtPakjckvsFCcBfbPeELLWQPxoJdgTpPmlxg") }, + { XHDR("qjhgdubvfiis", "QsPKFhhhrgTxaxRUKdZubxItMa") }, + { XHDR("uhodjyajwkjnrxxmysyw", "pE") }, + { XHDR("objvapoozzkjffc", "DxLjTJJyAtYMmxswGliyfKDjGTPdhczkzsXWSfgBNYUYotTIiX") }, + { XHDR("uogtxnclm", "obTOcEgPgVHAibVmsfvtZiPCRFUVJpWuxIgrEcfJySoeiLLIVnZcQkvAhYFfVSrCxmPBDbImYs") }, + { XHDR("jkvbcvkclvqpdr", "yDw") }, + { XHDR("mfyvzqsupbsxjdkl", "Mzpy") }, + { XHDR("yjvwtmwvzqa", "mLOfElX") }, + { XHDR("bcbzlpkfuhmuic", "ywpRDmzBTtXStygeSqClS") }, + { XHDR("ygnjxfudlmq", "AOcTuKCbalsPexVducAcjpesIMtQdDbE") }, + { XHDR("ibdnwezzkxrkuhrf", "UfEZqtjAikhDPogScWUrlEd") }, + { XHDR("vgp", "zgdoWqmTyAuvQCUILspDdcqvtRouRQRPVTuBpz") }, + { XHDR("aqcsxpcpzwotntzyzot", "DVSHIwHYyPpvarBUxNLavzfcgyHdsMOCqxacdmqtLTaapAqzYhNYetAPaAESO") }, + { XHDR("pvmkkykqzriglezk", "HRhBHZnzvMkmrEASdzstfMaUoOtiaGcBDYYBrIEexppijAoCj") }, + { XHDR("rsxvm", "bXjmwN") }, + { XHDR("rnduugxiqln", "KMjMKuiHCGdFJicoVMmgGeqIpUbBhXEZqlUXdOF") }, + { XHDR("yoksqhepsulhxurbc", "yLdOAwNiocQrAcZRpiDVNKrnkVXfgHgGliOGNFBzUPvovJVcgzVTlpyvRKEOsLKXDbnQZuU") }, + { XHDR("mwkgfnsgtgassv", "zBFZqSXqUGLmvdXySffHNJyudnYwSBtSdVKYcbDGukSZyaOmKUpPrWxDlKJVrfvinOjH") }, + { XHDR("wzlndkauv", "gtWuWlxyoNhKFWgeiQjKBrDfQBqLJfHnYsHWvNjaGqEWSuyuUBZwIK") }, + { XHDR("afz", "rkvEeikfQgZeraz") }, + { XHDR("pmpvoiurlogx", "ajxYZfSKLljERnSsJQhFaINeVQMhuMdldKYqzdLgKbnIzrDWLZjTv") }, + { XHDR("grfrvc", "YXAYpFNNEIhxjkeEDkPQdk") }, + { XHDR("muzmwedoeiwd", "ELfbqxnbzVhNsrMEOfuXklmpblTIKDx") }, + { XHDR("jqceoavegckseoajpf", "oMEJQaInAXVLMEDxGIkMWbL") }, + { XHDR("almdqccqua", "eeqCoMOrBkuTzIqsGyKvdRCDawPoTHxJHJHBT") }, + { XHDR("maztqxgkgrxtr", "dvEDKqCvoxIgSGKboBoLKEHExFMdRDseFKijQBHNROLPtNxsEgmvsBxjWCOMNiuFmEl") }, + { XHDR("uaswbpzgyqrgozrv", "jFrPiAudCPDl") }, + { XHDR("epnv", "CKsHGaBKlxZtIWoJSafBtjWECUbSYJGpUiJStPrEhgPcEfbUgMRXgxi") }, + { XHDR("vvzshopjuasebktriwp", "bjVjbeCDPekSACnnXURnZklJiplRThQQtdWzYEVtousNpQhIeoeQqZrOjtZr") }, + { XHDR("rbgnpaw", "WcTJxPef") }, + { XHDR("zvioxjjkettzei", "dCkJAtEEGYObkOSlhAQIolrnKFYEFPPuwZtUNdZsbBEpWgVwpLuthrqgZRCs") }, + { XHDR("ljogxlslcdcpdbfbzir", "TBXvzXxmJQBcWhNLgZREbuKqLxTGbnZGnEVYRFNeWpljdpAjgthpQlCkBKZxnKaaBlYGzBpvLrwZpMHE") }, + { XHDR("th", "MLzZoyp") }, + { XHDR("froxyfqwfppsxld", "MgdFYoDGJtOidZzhtKhcDvGZBatVguIOHqQKiEArtxvJyUdQzBeyeIlhqDXJzNeXJgvtAiplyAWxHLY") }, + { XHDR("aefhkwofa", "JtmgnZnpBcMUIJUTTQMyubJcEDsFkfdVUqfdTUwzIluDXyMQg") }, + { XHDR("wd", "PMXLmMbIwKFlNpyOGKIfsPWVpsIYpVRMMpcQVUupWaIZkxKSzswVSFSfnZzgPrb") }, + { XHDR("knvr", "ykgBsuWVFkrKVQsSvw") }, + { XHDR("fsfqq", "oru") }, + { XHDR("frfuiotelxbtrds", "UanWdVOrhZEYhiFNXROwBnPBTKraYaXFTGokCsWcUxEqGoDzOdaJh") }, + { XHDR("plznicfdqnbwxfofbjr", "vNICCfEyR") }, + { XHDR("zhbwnsdlxuqfpdxcw", "XQeYHfBBrVqpTtWGGvDZgvsHKtEchxjwbjjOraEJnGEzuBZNGyKosBvMjLIOQKZqQihDDLTzT") }, + { XHDR("pegkdytvclzyispugcb", "AkDrnqIAgtPSYorcNvuJGguzPBYMCZfXXVpdixPnCCmoYIVjGItxjwLmcplML") }, + { XHDR("viaoezozqcgcs", "imjdjlRHP") }, + { XHDR("sh", "qTVSv") }, + { XHDR("gscciqpv", "ogBXjB") }, + { XHDR("xijcnlgeegome", "CeerGuKklzWhNTiPvehlnUXygyDgiRvlBpfaqUrcOWkZLjNsndgKDEqMkBxRSpRyBCHLJ") }, + { XHDR("zrvinfjgamw", "zhWLIWcJaxyAxFSaLhlInhxicgwEoEtONyWjESEdMITxIkFQtjaoGwQSqlj") }, + { XHDR("hg", "QoUSBRBmllMgOqizhwlHxPixSWy") }, + { XHDR("zenmhbjeeibe", "LaWMBhHxHLDEvHQNajsQzioFWVVMraTTskTxLCXEepuBzPyvaaIlJZeCllZfSaNhdKheXtiPXD") }, + { XHDR("izqhqpadvqnbuge", "rWgiSpBVwwuwPDaWyD") }, + { XHDR("ppmyofsaasdbp", "XJjHkxmutwPQRNseRFFLKy") }, + { XHDR("mbpjyh", "AzArdbNCLRbYcsQFCkpHMzJAFHTdEVtjukOVxRsfBwdFEnWHYUJiDBfzdLddrBdNtxN") }, + { XHDR("d", "rbmIcjBAbpJeEptznRdBCGAeqnrnWZCzUngduBUZsWtPZtmCqqXsfaUDzMUFRHYLbZjzrSerhQGwUAW") }, + { XHDR("qjvinzhzd", "HKYowUSUzEqbrEoQrGGLbuIJffpOELMMlYCzeXVYGzChBTDkvfoepwnORrOI") }, + { XHDR("pyavkteyrz", "fwYmYiRvHdNyrtTXKedkxcSDCICsTieJYOgmFJfRUBUqHqutSau") }, + { XHDR("k", "jTMoEBHQaoyaM") }, + { XHDR("fhxtoqxnnjjupobzfelp", "VZGpvUYUVkvMxpLlPwXVtthIGgRXnbpNFsuxQxMtWxkhLMhsKQcKmLxgkHZcJpdTdmJTDpWTHfiNg") }, + { XHDR("vkhjshiencduiihjk", "WeVkiMtrsQ") }, + { XHDR("eex", "cgoWcKjwkseqpH") }, + { XHDR("tdbrtbjmkwsoia", "kopSTiDkJorbAHeSDGbXjCXbOPsIgZJJByvWwfpqKmEtJOdjFVKYIOeAKXrrcYtsQAG") }, + { XHDR("dbpnvlsmjwgd", "heRaJtaPSVumMSgrbrOuGQKWCujAlaiSnUVHEAC") }, + { XHDR("dutvyziaxnuw", "dPAxdmoAZeAThLwt") }, + { XHDR("orlrqsdccoani", "EszATNyfELQZKNkxYDwtzTzCuZvnS") }, + { XHDR("bvbqmfmolhifppcsq", "mLuWE") }, + { XHDR("mqccgmnfrzpeh", "hSxRAALZUEFGAtJXcXTOucWxRInucJCNBbXWQBKoDkoiIOjGEwgQnZnMneuJEoJYFkLMmcSnDqgaPuY") }, + { XHDR("jvnlqjpdqhxuq", "ysOCFWEwxJgpTDpaFpnSRQiepXLThMnvyORiCERA") }, + { XHDR("csl", "uHkFGHKGfbaRUjDkMamIgBVPZezYxblaWGxuXVnEEfsHZvXgBxQlogRsd") }, + { XHDR("xlugekohvsm", "kBnZSHowmzNYRBrdJYgeJnolOJPcqMGfHFECBQUoQWcZWdrZautuIlocUrKZkQhTIAfSlFjBcxB") }, + { XHDR("ftwxki", "lzhXeHhG") }, + { XHDR("rkdsecwujrokoyabtpfa", "MYpmATUxQiXAemCDoNeWxchoLcDgnGVvQjFPmoy") }, + { XHDR("lq", "eYDBfFyalDOGRCmoxjhrMxFbyuNWMQAmmbYEHQJuvviLKtSTkBNLVoJChQxHPOpiFHRnkkSyFFPHTFKI") }, + { XHDR("tazgfl", "LkNrIqdjmLhsieXWFknahsTPpolbwkXIfkFLtKDKccYOaSeQ") }, + { XHDR("hartiuuf", "gFYBryxUxeLNJUOGRcClZPdjgX") }, + { XHDR("fxffdekpi", "dapCrAIPxv") }, + { XHDR("ulfluueifuhheod", "cDdGerfnhgMNXhlWnwlIlJsWIGDIwAgyVLjqUYTsRvPwrKtIg") }, + { XHDR("xwobfrpufpw", "eZBoaNZveoYVDURvTdbINMrWFU") }, + { XHDR("z", "GnfdCidOblAGdepHkLirlWgPaItxrkoHKMQnawDagtphVue") }, + { XHDR("xibdaa", "lyyMzxpxsLtbBvExFocHwQxkDqGYFSeEIVlpEevnQgZzPmrixzjMTSMzucewqjGJOCVGoeVJsyF") }, + { XHDR("vbjqlteckx", "KBpdPQJehLAptWudVWJLCPjtAfhVzERmxCGDJtiMzDHUgoSTFVgGpHOyzxfHnfWcJObRtNxXIYjH") }, + { XHDR("dtefspnlaval", "iyErZfjmXQREOSONVGPriXMAQFQsCljiWRfvLSxGqfgmLBkTefHvFwhgdWeYitjNQDHoBaHaACEm") }, + { XHDR("barmxt", "NbtRce") }, + { XHDR("kzhchxgqmlcrdyjsufot", "yjPtNWjfONqDZUqCoiFhGKuHkzYURoNZhOEWVZpMpgNHaeDuXihWbBTXUcyXqite") }, + { XHDR("awxvzgocj", "qTlqxJpEhJXVTeClSYfknjghzVDWrcCLFmyRFvgsEtnGbnYntoAirHRlj") }, + { XHDR("kunjfavsqcldezgl", "ffiwOkdgjvwYzkQIFrULXVXasQnkhYqiqHZZNskFhrPkYaBlkseUhYXuupLXqmJBXEDxHLk") }, + { XHDR("vkpfmw", "OdRbpjXMxRUBSdDwyKbEy") }, + { XHDR("fdnj", "KwrhDMqvWrNQuknLmpbPjiFITEYqm") }, + { XHDR("kpqftbmrcvvi", "gCNkBt") }, + { XHDR("xwcsbi", "CLWoBeghSTMVCN") }, + { XHDR("ludfoeehf", "kOUGDvPLOGiefFJVusqLKBibodpZSMIoAeuzdujCpx") }, + { XHDR("wciwff", "JhNzjTGQrUabodvEmkivYohRHdzrbJLHkufDQByaRLBxPyYETvVGaKbjfTBi") }, + { XHDR("bmdodznyntezdpwp", "fiiXrUhbyOPwhxDPqgOyHQLFqzcujARHnieZJlHcjtdbhAtHaArdCQBabXwmKRawrGUrGbBebnvymY") }, + { XHDR("yrzvqjkuwk", "mkkQSvlMfLWGhEyQhhlMtGVMOQJuFEdnCdHFeqEajjqyvmOJ") }, + { XHDR("ph", "UQHTKwkXcPfjMaWMyirbZAuzzPwzRcDBEeqsMiiayRPoXIWDDeevNOdpdBzWaBDhh") }, + { XHDR("uthhkhikltkmpmgdba", "VcBalgGsMWtVwpcBStLPNpOzVrBHXbkWrDYOaarEJk") }, + { XHDR("ckgcgsxwe", "lzaEGCjQsjMLBPezdRfZMdKLhqAXfJzGeeJAShEjtKzICKrSSiGYKlrdKUF") }, + { XHDR("cfe", "NAalsTmKUSOLKfptxGviisAuyJVFUkYnlhHTGoEUMUZcZeFHZfJKWeaeGClXXO") }, + { XHDR("d", "mQvUoLdLwxLDLztDgwoqbQmGldkKVSCuOupW") }, + { XHDR("cadcwitsuxk", "BWHuPEj") }, + { XHDR("td", "nwQYAvzKD") }, + { XHDR("wvsuquwnaapsqgtf", "npEIXtDiFoslD") }, + { XHDR("qodeqrbxvfsgackytva", "zyoJOgaKTNeVU") }, + { XHDR("tjppxvefqlweu", "zRhFehFPGCOeiaxmpaytkYmhkOpoBjLrCDGwTQjbfiPGRpAQoiWlnFasurfoCXP") }, + { XHDR("c", "rrcMEdLiSUDNwXsTtatpuWXNDZuCptDyhCxHNUoxHIdaYLxtXbqlbpfvH") }, + { XHDR("olg", "MavMSOCazaaVRwraKhhUTbZfZMpJsrpFKIphUUMMqUyntOMCcVMMdDhnIjVhNEJE") }, + { XHDR("mulyjvhqixhnu", "FPqpvVEKxJgytdoQYvPGCrNgFLDUxPcsLZX") }, + { XHDR("zchildfgfqtryshhlh", "YoKGLCvrLhQguoFsihOSqKdpvkBNqKCvaZmYFVUEMnMOfLRwcqegHHX") }, + { XHDR("pwv", "HVLfGUfVFlpEkHIsTvdAiqfLbAozLFDw") }, + { XHDR("z", "aEXNmfYxzNmUKIixRRjRzDERtWLPpLiwHJYYjCDxPDihUqcU") }, + { XHDR("vuvw", "MysvjkQLSZTAFAUuhu") }, + { XHDR("yhkkwtcj", "kUgmjYZTZqVxhqYcSnixsbfMLBWMaSUkOxRJyggoeducHNXvFyGpKPYdvlrRhBAlimGsl") }, + { XHDR("cfav", "sVGnBEuoqTzBvngCsoKnxXxgZpzFIfQIIMEHLlewKHx") }, + { XHDR("sovrerjnawbaaxykvv", "RZgqCueEZgRBWR") }, + { XHDR("y", "vNwRWmHcoVZafEqYeYTIJpkcpPrxk") }, + { XHDR("qnrzccitjmfjqsbw", "JnwiRZqrhjPvgYVWdvwLrLgjWSaIjjCnIDQqsKOlyqmGog") }, + { XHDR("mhs", "atWtlTLPGVO") }, + { XHDR("yeqcviqpscezjog", "sJzGzbOLlekmdfMcVuunVeTpCSSbOyOJbcFXYsN") }, + { XHDR("v", "GnwZJkUrlfGyWCrvQfWnPs") }, + { XHDR("ecvtylsnalu", "BnNfIpYjfN") }, + { XHDR("jb", "YUDhLFUGyJmvXPGUFQcWchhr") }, + { XHDR("wy", "NNBhwKobpTt") }, + { XHDR("dakukcdzjvvqfmleh", "rAajeQUvwLYfJ") }, + { XHDR("tanqwwgegtfe", "fBslEGjuaVyZUhXgwPLkQPbymRMxBIhbBHozDOflNwPaYHqmzJxKLFJXFY") }, + { XHDR("rrifsdikacmetsdj", "mjV") }, + { XHDR("jfzdupizlrvneffl", "FXzXTWzQprFAUXvDXbYmzACnamcjcHw") }, + { XHDR("ndhclpbwngp", "IHFLxLCdPjbtYlyHBLslCHgLpBpcxXTOPdBpWauOxDjWGMEPgLDSGcvmfXCx") }, + { XHDR("jcnkynriqhp", "wfrtBChtLBDZqXoUOVctXhOSbovuKfoEH") }, + { XHDR("medgmxnpwcv", "nAQxVBlLfJVASxCrHGRFIoQqAkhUodAhgX") }, + { XHDR("y", "LpnSPPHkFHESHzgQGhtibPJyGGzdfGXlUlLmbRQQBvXbwZfjxqkfOQInYAyYEOlt") }, + { XHDR("njatqk", "IOkeBnUnXXgVBVWkxJYjbMvYoAAIvnAIYWYuTmSfcDQykyChvWpTFwjfhomMr") }, + { XHDR("wjksegdsxam", "cchiQfEVjGXFLHKOmBuDbfFluCDYrGZkAIU") }, + { XHDR("ldre", "NstBZUFCWcqUDnhXLsUspYbNVhtLAKZDUnsDpeDPjDpJkNeC") }, + { XHDR("beqyyjsosu", "wemWgcjuLvjjvjGeKyPBMtMiCMLOIwtXFcsSzqLUqWLmKYBxVvvqXHEONOj") }, + { XHDR("lxtfatwdj", "rOKInwQ") }, + { XHDR("sauuoaktzyocinllltat", "euinLBvmDEMwbJUPREoZFUufUulLuYLfVynSxMNnQFDoGcmWIDzBdrtSyJRQnJPf") }, + { XHDR("rpixbjqtvdiebzgrleo", "HlWQ") }, + { XHDR("wgcx", "kKBQyhXzxlKmeNTLkSYBOrjZVEQKe") }, + { XHDR("tzaouchviyrthagtjesc", "PHvqjMVGbqKDNMOuHTTZMR") }, + { XHDR("vwuskfz", "nGEsrXKEMMBDQLeWSVCxNmVnfDkCb") }, + { XHDR("yd", "FkCicUwMrfbOtvLpknIBBkhrpQ") }, + { XHDR("fmcpzmahwradvzb", "VmrYZZSzbQVtguyzynTuHaWERxCDorAvZqYKGuirQaDkoFhMgFcdojUCWGLqM") }, + { XHDR("wj", "BlEieZsnoBcDTwKzxkNJmYNXjzZeWqUSmVZACyLJUPurFnFSwBdFdBip") }, + { XHDR("fxc", "zshoANq") }, + { XHDR("yusigsqalcakbb", "tTYXQm") }, + { XHDR("grwtxzabipdodz", "CdpAtahrmShYbEEADqRujyBAPiinNqpFSjEqfFlfmoWrXpxnhltZIjRYL") }, + { XHDR("vgtyfecbuvxuzv", "cBozJQcnSqRzpiNtNnYoLYQNtIlCYRljftlCNNKDoxLEFuaNFZJBLhpTQjgaGJBLoqv") }, + { XHDR("oqzkclvvamj", "zflrAZTFREiejPObxhNmdtaDwjJvTeyQfVZbOLHvyihUlkgzzDbrxexfBpiaJuJbZjuJTqllQanm") }, + { XHDR("dfxpedrrkaoreilv", "rNPwiOEUulBNRRYbRBxGHDDJRYLsZCgshDHOfeAWoAWgHpimVEHqXJEYZaIwSyhnZYmUv") }, + { XHDR("wlbgbxfnzjag", "IZkGQZfUiD") }, + { XHDR("c", "VliAvbNTcnVtapBoraPZJFlXztSzbssAFBY") }, + { XHDR("jvjcjvhsfvpsiiwdkxg", "pNceqTaYCesmkQWvogIiztDdsnheyUCDZkRawSlQXFhvTyFAIMdUySUaqJM") }, + { XHDR("kfhwbba", "uTyAnNugVOPIBXziLqTFpXpjSYmmaHtEBugNsYmGIQdTHXsTXFZ") }, + { XHDR("yd", "LjtuZFvMHqBJbAkZaxOwiToDDisqZhtuCwEWyFcsWCTqhTaW") }, + { XHDR("otnwtidlqfulekvuk", "DlvZDfLwqtQLiarbncBkQRKkPYhZcNRrBLZrRCZBZDPOxZHZt") }, + { XHDR("rsefmuojrdalyu", "fdTfMpdtIYkYtjduhTmQzxpjMPmyIecUToCwGgFwrvraIjmqImYBIozZZQRPt") }, + { XHDR("qyvzek", "jOggkEKCpdiCNRdoUzEVYHWBTONIHJQqZELyTzDpyUSQrORVeBPTFEmZTUdWZZFMsap") }, + { XHDR("ljflpxrx", "IGDiLMRtfvwCLLDCSEiAyrcEDLKdEejQiCtTOFIraLABVnRezBPzMxVFlvOnVlCWEJYHfNgfyCYT") }, + { XHDR("rscrlvxpszebnkc", "KTSvfkNhsnLEjXwGduRBmRapGNIRtscZUzTGNmPlhuJqMiwJHNhqXFoMwj") }, + { XHDR("avomvzxqgmdataeptst", "fNIOQDvlqnxcUlLiNOiViPtnJWogcHFcChpNCnGEIQSDwnUmQI") }, + { XHDR("dpoewcwcozxth", "xIwlYwXXsnLcDQzkBZGIQcjVjPvmNSAnQPhCNn") }, + { XHDR("ikgsbjejbqjahax", "ZCHdtU") }, + { XHDR("wetotcsqrqgbrffdi", "GWQmFjMmMNfewiFgEiWYOpYUqaruWNhYXIjsmqUafTOI") }, + { XHDR("gegtbojtixkxnq", "xdqbICCSNTeegGpsZsqxnajrKVFbzxIGVCIfhiaexqKyebbdyHZM") }, + { XHDR("vzxeuvcxdmrjuvy", "IoATBsHOzNsgZupwuDWJJPyRgrPzmgmltZGQCwjUmFUYcghmbDaXmauCwcfRsxhtaB") }, + { XHDR("lzfcspnfnwdgycqr", "jNHKUammELVmjY") }, + { XHDR("bslanqrnzdnybn", "eiTQYYLbRcaY") }, + { XHDR("majkuskvjanlk", "CuIFfqVFjaiaNZBsnRqCcaxAiE") }, + { XHDR("mkqsamfgnkhfzxqwm", "vXteqejjEQEFCu") }, + { XHDR("msf", "yInMuwBOQWsVNfYehkEQrLCyvEtmRPsrHjfyLIZjrQHSgVAKOtwpzF") }, + { XHDR("ifpgqwzehsu", "QVRSluQTqutjAKVsoPBYvnGUgGfOJqYdEqNfspxSLYNaAsVrAVbWGHGMDnLsiTi") }, + { XHDR("qwqmnvkdpintltdjqbgq", "wzJhRofMPFaVNPCuPIYHKOHmDCgehjBevbMyhJSpULklwgPeszgmXyBPnl") }, + { XHDR("icdvufpefn", "urcfvWZlnXfSVSBqxhcAMZiwLxvRPEAuIPApgtgzTQLHeVvxXhLFHtDOQ") }, + { XHDR("wkabp", "FhxJwfcKFfogmeOUspZXqnxzapMGCbnbNgKecZqFtFywIsjTYoeAWLJpeOrHfuaDGhX") }, + { XHDR("fsnvleryuarzzgs", "WSBSHZzUOdMhBiQMnBTIQGxNSNBgW") }, + { XHDR("ujhcebktdagli", "BdzawhdpDWoOuepsWtPuOEJMnprdcBqpJVyMkdFMSmhvHuW") }, + { XHDR("mshmvia", "DsDqeAwmllCiQnsmIfHNLrwMvnAWtuWZXlsQOMnLvyYapJfyKakZlwQDCXFgy") }, + { XHDR("yawzmnqazeabpqj", "PhTNoKcpkVBnzkjPvvCjhGuvZEThGIHWSSIPzbEa") }, + { XHDR("lzthsktpcj", "bgDPNOjMtdvbEMqZDoVLAhbdKxtKMocvezNYxgQTFhnLztXqhnmErnCZCBB") }, + { XHDR("wmxoajjuivhwpam", "VErazZqWKbziXGVrShyBbeaeMrxTRAvstqNLZqoCxoqJNgTHiqBtMzSn") }, + { XHDR("hiexupoe", "rY") }, + { XHDR("ocjreeuxubztq", "zZctwdLMGrfmOxtGHkDHalZWWqqcIDcqXpfwtzZXEETaDSJGZzoPwnUQfhEbiUUtI") }, + { XHDR("alssiyhmh", "loAZsjlIUoqZyfYeqFmtqwVKwwiLHIJxBiSK") }, + { XHDR("fxxpukykncyx", "MimpFUZnnczCurWsZYjIJQrRMvPEEsaWqWigeBXGEUNxCkmcrGeRptsXwBhKZhzoTOUWnEe") }, + { XHDR("tqhaqpjqbmljni", "dzCYGjnYJpJdjuhdNQbkbdIYVZPHFNSDSjHamEvqTIqGKIhyQSXVYCwdGpMuPFGSUROD") }, + { XHDR("jpzwmzdoocb", "bFhQbtGdlRgQtmfxweGHvpGOIMVgpVmLuunG") }, + { XHDR("avpsuhf", "DBWOfVreHUXnlbiYxUnbabK") }, + { XHDR("zzltbhl", "GpdsWyRYaRflpekGvunhoquJoFYXIuAcwrJTpBt") }, + { XHDR("yhemuosgnar", "XaukBdMUSEYbKMoxREcDXKqjqYbeftQdZJnEflDaBEXxXadwYVgNQGIdtNm") }, + { XHDR("cuorpb", "HzrijvxyVzbaUcujvjzlWnOFwqPehaykZoqzqNkdcTNhQjAjzxJEJLIXsftCaNLajTiqQKWSuiKVVsTE") }, + { XHDR("yjmwkuqacrxlziyac", "MnJIpLEnZfeTDEFQYOvqEhjiXEtXkMwXLSEKUflzUJAQWSZNLjYTkZKYPxHImsvdOqT") }, + { XHDR("z", "SedZXlsFbZvkHGZiMgzcodlVIGKrlUIRXJahSBsRPhhdMVOzlApErL") }, + { XHDR("neixukgasnettgu", "PZYaIew") }, + { XHDR("tpkxbudsc", "LILEYHhaZDyhFWJIxJpiSCOGqjgDcnNkGmGXxjDxfokPzwklNUVCAdGvCnYxzZDgXzMDKVyrryuIet") }, + { XHDR("bfrhqowxyaglwzydjr", "MGyScLosijPqbdkhiSSGtMHVXIwHOcMnkeFHprlPaDMSpwwTEZOVrjduRzWJVBwcHCVMuMi") }, + { XHDR("ddiptqzmzkucsku", "wwttjtojrCvZIpeIQCNrGczOmhthOWTNmPzJIZQNAeDAjHwA") }, + { XHDR("ednrbdzwjulmqlndstux", "HQkFXaVZcrWECSHzxZqrEjOxchRUYmOGuyyhQwzQWJSHvJbLsgvUYRjXYO") }, + { XHDR("rfipjvvcixfdt", "DFjRnvjERWKcVCPkWNuLahTPXuKOuZBJhGtBEXkkVffzTEwieiowonaqMhZBRUQkiWEajNVTLRs") }, + { XHDR("utdparc", "IcWHWcIRWrGnUjsVkooF") }, + { XHDR("atcrjs", "QvJArOAtWquzgQxaVWBQfcYXbjkDGHCJng") }, + { XHDR("bylb", "NtWpKMFvxilmLBUwDQiOVszBEcBzBB") }, + { XHDR("ndl", "uQmPmDLWeUnyzYCPxVeKcIUXdnLYsjgMphTTSLoqoEhUKkdqUGseKBpPQnMlBXx") }, + { XHDR("kiltrcktwhrawormwv", "ujryFMolfTuKmdoWpuPasmQUnkGKriDKZZaehSkdOS") }, + { XHDR("u", "vTEPfrcvTASJpYWvksbSVZJQeFFszxnnsWdYjqvxkE") }, + { XHDR("uxcsrrifdm", "AioKMggjsYuAVFOCmYYeJPoAgblmhLUuFMcqdFsJ") }, + { XHDR("d", "hUkwUorPWypzLMhJViYNaDXasaUduLeASLDfUNDe") }, + { XHDR("dpxdtmucuslsr", "OnTEFIVKpLwTgPzQmXxDTJTMbjnyXnZUlUVqgaIYxCmHIAVfnRGwhqpQPwHWjshKKCpJYhutzmkVlZHD") }, + { XHDR("qzidsscdihp", "QDKAnjMorCQYggGDzSjfEnKmRmKzHnrfhFMeqEdEzzATgCeSrZbaibdENcAIEQLDZwLGbxoQIklyNS") }, + { XHDR("dglocsjihao", "GzLvphtfCLtfajnMicqbeayLVpyLhiqtXxZAOpVxgZKUFsATLqAkJrwJwjZYvrVGzdEhiZUsehkUAG") }, + { XHDR("ahfzds", "gIBVEqVSYzcFKXhertxacHCuaCdERjqCfqoroVSKlWeFNw") }, + { XHDR("xujlvp", "MnCdLpbWPLMgszKlmXUGutwdJlpYkgBghZVnGTsanMRyVmNEyiM") }, + { XHDR("p", "nEIIBflbiStRDEIsWmpMLIAaqUcKARsZxTjkbbNZAl") }, + { XHDR("qmvkuztdngaj", "pJVJDgCvlZzasqjgOrpbITYBfPrRkmFSSvXXSZTMiSNriiW") }, + { XHDR("lmalgkrt", "sArEtbsXYhGhSCgqgGRIVDNsnSjHxazBNITvODPUCKJEoAwrDQyHIigoSPYIVaFLnEAmyxGuLbdzyE") }, + { XHDR("onnspzucpuyc", "eeQIAHmqWanARKX") }, + { XHDR("khwsjduzhm", "iaOGLgzuiTPhygfw") }, + { XHDR("crqxto", "nvKiodjuJWggQMRgEBHVAXDXWgXZfGqgVCzSnBZlTqCKQSZsGlar") }, + { XHDR("kxeqmillrd", "TdRWLSEcdKfeHzYxQ") }, + { XHDR("fqangxghf", "GmreAOSgMoaKKlZBBTpCFzBNBELAlfArOfBBxfZtq") }, + { XHDR("qfbhnaaltbgws", "iITgAxaPdhUCBDNjRzIrDluEWEs") }, + { XHDR("pbf", "H") }, + { XHDR("oeke", "PPKMejGroDZRpCtLdccyzlzidlDlJjOXHJODGiglMTpxSfsj") }, + { XHDR("oxs", "AuPEhsVlMRoouqxPLPQyHUOyHaWTjpszcahMqxGBLmX") }, + { XHDR("zryrairpz", "UzNYRkzDSWWdjOQCHnIZyxiLSYnGAsZELKxsvuvwMCzWotWt") }, + { XHDR("aje", "bLBUYsXcLxaqBsJdNddGZdQnSbdwHJdsCtmRxRWAUeMcYVCpjy") }, + { XHDR("bgyfpnkckk", "bBAVDEmuvTtBSZnIGmespIqGKVMsmLKrewzfWdMWBXLDUisjtgcdsuqRsDcjrcHezddv") }, + { XHDR("mfvjlhcmaxacip", "bdwxdTUnNeOqQNySivqhLkGydPOKsLxgJZcdEiGkJMbLbafvYGsfkENvUiB") }, + { XHDR("ysqdktbrtbdrtp", "pcVLrpzmtaygUPQZBineZWVtBzJZETvQRzOFfsNaEbrpDFqHVMWqtEYimqJmpwar") }, + { XHDR("owwpivzcdwjjzqwjbh", "gJalBbxokPUBCeRSKtSjQNnzVdPdeENrGYWdqYkwgzgjYDBfCxfpzSRFGt") }, + { XHDR("jvbwtl", "UHBlXmKqYAGBljVVhdKKTgzSBBsHPCvfGleFFQfnVriWqZhQkenqF") }, + { XHDR("lkklhnghrvaddiaqihw", "kCAlFxQcRMRkcDMjwxxRZmGPwTqNksKIFPsVvgjvESBGyjxvrLMu") }, + { XHDR("potv", "gcdpckJySiHvRXDEEgLrTiWTLFzpSAgMlacisOX") }, + { XHDR("jz", "hZHZwzNtBWRVluLiYiQIvSTcqpTQlsAiOXxxzisWIBxhkOiGKI") }, + { XHDR("b", "HTwWsRJoPUFCwwONCroLPXitAWeJKhqTncilPeizOUTbTNZZzgIuO") }, + { XHDR("pd", "wLKipEdCXafgpFieyFuEeRLoQbfUeIegasPehKiKTVsIALknjOlWJyZGyQfLpeNKTRIOzbbZVwaHnE") }, + { XHDR("sqttghhlharcmrtelfu", "KzRjuwCGyLMfFVb") }, + { XHDR("jhlebvcoy", "xWNLpYdXqEQFwEtPFvAddrBhGLLpWaowSamsppdnGJqjyfolZRzTg") }, + { XHDR("zlkcgfbl", "JYkFuvQRvbvLvvEkHaOLvUCGUHpWtRgfiGqhSEHdNgLsePEMLcZjbpnjJXHIzmUuZBUgiywuGmL") }, + { XHDR("mwzgcl", "wbhlCDSlcZCKXiLsNgtItQQAzLqLMLYHwFlXUNGBtovTvNcFhjSFjbZJFzhobuEckgLNex") }, + { XHDR("wyfpnpsncclsfbk", "vDPDgXrmWxBRtul") }, + { XHDR("dyfdqnejfchrcrz", "kWTcSVOjdRwHmRJoeMnHCWXsSPRrjTCLnZSjX") }, + { XHDR("phwzahqgnjapfphcyxat", "mNSpIHFaZHLxrZPDsNrvNq") }, + { XHDR("viy", "uaFhiEMT") }, + { XHDR("psqgfujdlfrexwpfe", "ydmfMEnkcUsuOjsfrZaKpwZwaxgUuetjptigxFlHsruFvWvDrDWIxnXSDoRhcKnGfjNdp") }, + { XHDR("bhxpcufpofl", "YMSLoNQgawQboHQSGzhjKhzzLoCMlSiEVkGVRdyhzmULiMJYFRhCZiaJrdzYTFweYZUMGGnIMwlpXo") }, + { XHDR("sj", "vHKceTgIbOZYEDCiGXLhsFwxCFAWrKoWmvptiwAnGrF") }, + { XHDR("sntjx", "UsBBgzlMMzCSTtWULQNTF") }, + { XHDR("aqssvbkkpbw", "oCxejJXhupCqdPyUCYAezTrcmIzMoUbRMbwmKuGZXeQFCZHF") }, + { XHDR("i", "snZlOgymGcdRhHgeniOBnGCUGbGQiZV") }, + { XHDR("w", "HpJJVMEXmLBUdreHYnzRZHMaecHtqJzhoDuabPCAuLftnslKyU") }, + { XHDR("ijmterswadn", "pFoIMWOTjqxSkjRoPMrHnKwIOIRTzADvtfdbwZxzJxVIoicZWBHizzGHjhYeNUQjBXInsLbehLPJwOFd") }, + { XHDR("ctxyqirfzmukxmnlqkks", "ndaoKVFndoiFbernZrFyAXBYzyvCGIBfRJKpViODwusDXkxyzEys") }, + { XHDR("kuykndjvtatwq", "PceZrfEtlUfqEYozbRoYnFJnNFuNFzFS") }, + { XHDR("oszfxg", "XYbMDGQZVBdKUxeijufpfLcB") }, + { XHDR("oaudfwxqmalvo", "fYTCBfAZFweYLywjILPJRCwSvGKgXgKtIgvFJjEG") }, + { XHDR("vd", "zSwiIkppfOIVKVFoflOWoiLmUeYDulDPodPoviYlbgwQrUcptLKStGawVWodDPDT") }, + { XHDR("rcbvrahdtnlwti", "GDoCAkLnIPmWjaPpIAhDREvPGBXJyURuRfl") }, + { XHDR("edicrkbhruhmqx", "XMTmDsmHomcaDotsCKRELoKpoRPkrXwxiREMRG") }, + { XHDR("lvfcwgmjtclgwdj", "IxWMliGFCRvAopSwjRwJsjGZTwRCSWhrkloHM") }, + { XHDR("ivanpwjhoydmlzmoqg", "rnaIzKJleGfeerVDViPAyHnKKBgFvyLAebxHHhRVLBXPXkaQzaBlIVJzddpXy") }, + { XHDR("jlak", "UkUzzXMpNyWijOQvIEezOVvJCFaxaR") }, + { XHDR("ccoblrgaweiuamymzp", "WTtMzYUmILbGWbTCIfMNwzkEXZNZv") }, + { XHDR("otrdvmns", "MoPBOWiTZFUaHFNTAJkhmZl") }, + { XHDR("fvme", "ifCjqeqzxmpBhqOrRfgWTexnSSIzeMhyJvvKJsynzAfdtQIVsPoFJUGnRZKIRbYzmHNdzBdOpnDQT") }, + { XHDR("guyt", "zfXAUbgUuGdKmVWFTdkoKJCDLCYOdLHIRZOCunXkeFU") }, + { XHDR("ygvvvgmtdpjetwqigky", "qUUaETYsGNVY") }, + { XHDR("aedjkihnhvvwbnx", "onlyylWVRUhUMgBwgFTAcrYqmynIWuDuDSelRnItblpkcrqWnIHxMGgcEkRKDetKvULwCU") }, + { XHDR("egds", "OZgnBhXdzLlHPSUVJBePwoCTtSXTszLJwek") }, + { XHDR("ywcy", "oCQwoxrYUqwhYnZSXzJprADuySBfKjoPNBCfLLPUlGJdrnfENCNfpEdFurNsCpnCjh") }, + { XHDR("zhadpwolyqenq", "hLKwvbMyc") }, + { XHDR("lwyejfvha", "orCvrOJnpqwjUAbqhgHOcSYLCImNJVfBRqRtGAwvWecsviLoACmtMTsVJcGihTTdAgdrlB") }, + { XHDR("nuuncq", "WYEHQgaIDbRkPvWlogSBMWI") }, + { XHDR("fi", "gvFAUICjhGM") }, + { XHDR("nvcndhumx", "HjQBhGkpbuHLdWyqlZoSjbPGssyHSqLAHqBWIDf") }, + { XHDR("tnd", "aRUBAxAfseotbeiDKWlDivJOMKlJmwfkkCIwGtrfftUkzinMDRaUTO") }, + { XHDR("gsimtmtskxqgo", "kyUyBjFuURtIO") }, + { XHDR("gbxhlsj", "WCMdlWMQzDhfrrZAjMbzJEriRorGZWcjddtVscWTulOPZoSxxnqOGE") }, + { XHDR("twfbhuonhlguio", "ZfeXMkzOroSXjmlGTZQkIqJGSbFAXgtFkwchKtgM") }, + { XHDR("fgclqu", "GDHSroEJoljabZXDDdaRzlTjioBJGgRnvGYF") }, + { XHDR("vxikesssijys", "xMHrXAhGQYXCFlQWgmDJSZZOHPndVgVjjIQQyKKJKJxSFDOqpUMtJOlOyWJut") }, + { XHDR("iejpnkmkrezdb", "RKDXuCl") }, + { XHDR("pcgzz", "nPRooCRvAKESgGkFEeyOSxQZzyaoGDuPxHPYtQGhq") }, + { XHDR("ckpzovlpoi", "DsDLYaWSRFLquRaCWekBmMDitMWIzyybQkMmaSSFGGxjANrDupWgaNsBVqZCOp") }, + { XHDR("tusxarkmusinrwbuvgg", "McKJXKJlljCLSlACNCPsSWUVAbvWIsVWTaNNxlaJTTSYkEOEQaPHNYiJrbswKuFmjVZxrAdzilsLXn") }, + { XHDR("zezduq", "dwNRgxqovLnNPvjKm") }, + { XHDR("uotagsxafbhuggrnsl", "IfvcYscqzhKPdqwxBrqQZVYONYLsegpOJGeIGCZExDOPQPXxeoK") }, + { XHDR("hbtihaxte", "xlOWZiBXzIWUvkvAFIfIVEdSHLPlBXxkSgrhMjNqXDOPeMnCdRILNbMdAtXzzmmroTWpwhPJOk") }, + { XHDR("orsfmnfdlnernk", "mqwOLKNEhjdRByJcdwwqcDglnFHfKvSENuZRJVsNbATgtySPmwgsGaKq") }, + { XHDR("rccsntnxmiuuvjmiqfoz", "HQaOiatG") }, + { XHDR("mxb", "wDAQLVGCfGenfOGRyTNsDugUXx") }, + { XHDR("xenvcxo", "ZTXbhFuwfLIBhqoayPRoDZdtIwdMDvrtOPjVGpswBKTwvgwoXMyGLJGmVGxfrtDewJhNhqLNopsIeoPA") }, + { XHDR("b", "tKLitDe") }, + { XHDR("ok", "ndaqnRJpTYAtxzszFQbSIzrtHNSqsVtOhtGUHfP") }, + { XHDR("uq", "ZijyhFvLiuCwSKtVNjgrmcpwELmEEGXPWTBFopwJYIkLE") }, + { XHDR("vzbz", "sslvaElFgSaSUQhrcBHnhxoFDtVXoTOZQqtltfVqctnbJ") }, + { XHDR("fbqj", "QUzEyZOMLKIqbTLqmtBLoNAhzFYpUPRUpMXcgBYwjggAkcaFCNFw") }, + { XHDR("fvdxohvtyj", "YUSaaBZOHAPpWUeIPFddSCxKUvnpeDTImZsUtbFYOFZWhU") }, + { XHDR("rxwfrwgzptshadxnbx", "NzsswMiCczDyfWwKtwnexkfnQHRWJUmGkPkeDervyxrxTYdUupPdIvhDqXDfKBzlxa") }, + { XHDR("g", "FbFdZhuOcCbRKnNKjkbdanoJVjptQypusXiiABAyzEWtbSHWxswVAFSjACXwcbtE") }, + { XHDR("vkjxturclmf", "DYhIzFWRzjZrknWEwsvDVIzVWlfVYbcpHRKSTafXrYpMKXnDu") }, + { XHDR("vkgsoqjzrheklwzazvu", "rhCYbmyAYaFPswTPoHQXRYECAcw") }, + { XHDR("quvimllkxnokygvkzpoi", "HJsHYJasiLmJSVURKNIuHhfZtQegucuyEtAoMavcHDqJcPmZnZskNTedlvopRzQvoJRAuWhOaA") }, + { XHDR("zrej", "reZVcMIpBxLeFPyjRKCMjVYKPvFtMlXjVeXbVYUSJXfPggxIkmhHcZDjxiEro") }, + { XHDR("wyapecbkqvxvqw", "vLaajnGTggeXtYm") }, + { XHDR("quklopqwbgpis", "tZLmfSDEBFCUrPbxHxBVZgxHDRwlZPHot") }, + { XHDR("izzxljabmvrqwxxqmw", "QTHLSTnevCOFPkzQzo") }, + { XHDR("fnqljtjqjaootcjint", "aipQPbBPjUOUIoDbhQpgOFFbME") }, + { XHDR("ohyxkbywyrgkkditp", "YIBrBXfCZNWUjlJJNVmhXGSlBEDMoJyOLXyhVrzeWZPsKJoHkVfhrtOSZtu") }, + { XHDR("bzwwntqmqpufm", "qIrpjzSGntZgYuVkFOMKlBCBHeGygDLiyvzplsQS") }, + { XHDR("ydsmhq", "ndCsjppCNhJyTFZeMiZDsEcdNH") }, + { XHDR("pj", "IdIYYmmvOQmjhnbkDOBJkLawYgNJYylOiPsDcTNW") }, + { XHDR("uqfdbphne", "pQbmVTNQugNDwCmxLWWbLmDMmtgcyLk") }, + { XHDR("vntqgqvrydr", "bqglLkMjNmQdgGpblWzDoOAEbbkUicGniTmmqbW") }, + { XHDR("stvvuwtzst", "gscVQbXCWiITuUYRCgGSjcKGCiZDHDlNUIwpGyFNuqgSokMtFxoisDVqrvpRVqabBNSLBlTcHrMWHOfh") }, + { XHDR("rv", "OmflOevtTOFgSQpYdqMXxmmigQKqzURfHETZKRl") }, + { XHDR("anczhtdbulvnxcng", "VgJPUTIZzOlQepfwShIzDHAreyNWzbezTMYDzRKzkhOuRJueaJcOjqecqMmDZucwaPSs") }, + { XHDR("xhwesgkgsu", "QzSDexGfNPvKysrxYn") }, + { XHDR("tsvpruosvf", "yHgdwosJafSRquyJVgjEINlSbLqOCvmmlnNgZRdBsZoflfkgohZE") }, + { XHDR("ummwcrejfisry", "OtmIcvxUaogUOfpfeEoeQBIjyqVCIkiAcZBhgZFcMPQtlHwWD") }, + { XHDR("ubrtpyosrp", "aWVEoBMIMICfRIYIUdpQRCmKSizBrRbq") }, + { XHDR("havexybq", "OQyPJOEXQuXpFTvAkzhV") }, + { XHDR("n", "VAz") }, + { XHDR("bryxjqsdal", "flRlOiPIfaRZraSzuAcePfIUHkKsZBqHWyaRoAXyWfVuGOcDymcaajuVFxJSkwFxiEoXIjDywu") }, + { XHDR("nub", "xGIebbIcXoPPHwHUiHqLDaZuPapQzioIbmApDTzTNVVrzjDeqcKKtFhiaclIeAPByeycTpKTVujASr") }, + { XHDR("gfmppqtpobav", "XgAebFkMjtbJlvXhkyPkNQNjnMitTBUXr") }, + { XHDR("vukeqixpiwjfzr", "lECdJtJikwMugPBsBVZdlr") }, + { XHDR("ppbbbvmnekclgmr", "VJzKnqingsRZGKSVFTlwDsEQnjisKQFJSEyTSo") }, + { XHDR("mcfyvcsgpmphthwlsjym", "hjOsoqZmgDwPAmYSSqqDrXaZYMGpZTsWJMcDdMmoLORUemYdDChmNQrZMn") }, + { XHDR("hiaswrtxggnnegdyp", "BpfVJopCUIpsjldGGJBHCRkAnVLfTppXGWknuuJQc") }, + { XHDR("ycrhvwvjyypwicj", "cHQlVoBYuxhybnjJEibexwWdSsQfH") }, + { XHDR("vioghjtmh", "OLilUpyVJHYqpfZBBDikKgPTyUcGpqABfXDhB") }, + { XHDR("jnfiifrfh", "IqPvvCvaSqjJIfrIdQxaFFGXWGrAWdJSZd") }, + { XHDR("lxissuause", "PIVrgcJjN") }, + { XHDR("rtxrvikcvyfx", "MrYYodWwXxJPolzJEccBVaqqxoNvIMxgXVzEvnVmKiEyWjLVDPb") }, + { XHDR("wtjud", "FWWMmusgOjRWpJwAOEPrdmqOppOsc") }, + { XHDR("noydmeesbiviacyt", "zuyGAURiyqxQZfRzhIBTBAIrmqJxvRNOzazqrxVabCOZyiHAWqJtZWAaKJBHGCPeAORoNkmrvhfYeELH") }, + { XHDR("nrvfeklzuxrqday", "jWEEAziZzLajYadHZGIEpsAwxxqXOmpbanAflsuvcUPImSLanFqlKCADXyPebOvqeQaErJgZcV") }, + { XHDR("ajasrm", "ToIrOFUebSGranhWzjGj") }, + { XHDR("kudvzvj", "ydLMpmkzqjXFouLjLGR") }, + { XHDR("clhyxhprhxiah", "jwVxnqfiGEwLMduwAlsLnxGRlaUaGXbqJFtYvU") }, + { XHDR("mukkcpuflwszkxced", "aozCOZeedcrJHtaBNJPXJCdwVcdFHDeVnUjVARPBDBnGfBkSiwMiNErxdXAHSyihPXW") }, + { XHDR("zlucqzqh", "ZzzshayKQgsJCBXDPpcfbWijnIKIaEsHydThoEvXRWCtQcpnIbxXFGydaykudtGdNSuFdn") }, + { XHDR("hmvztzfmgxlubivswhum", "erTGjLJpwiYqTyqKZa") }, + { XHDR("opmgqdqvliafldlk", "ROOVCWSovGNqYoMWUaiRxCILpGDpbQrQqprGuczpbJaclRMSkJkmHYlQYDCCxYEZjL") }, + { XHDR("lqkzwkme", "kXqhoOHUVYYyjVuTsFXGSouHeDfzAKlIHVLHBJwFJSgpErGwCiql") }, + { XHDR("wryseos", "gxSbimYPkEYNtTEQIdWtZBFtrtNpdaaskYUYBKPHQrimaAyzhUsYe") }, + { XHDR("rxrcwxcvmvymtzulfr", "Bxthx") }, + { XHDR("ovjspmzhrsiuavlmlgk", "kupXltbGQDlJtDIPRZUQUCWfSQbqbYQfvSLGZgoURYFJqPJyiwIGxIdlhnLIQiXvqeeOlijSTRtJT") }, + { XHDR("bbavw", "UvgUENmHwMmzamqbIqOXjnssonehuiZgLNduUkWglNdwvYkdXJBTLbgFRjKl") }, + { XHDR("jmfjlcsajygkmnqkagll", "oEeWakMjGWUFC") }, + { XHDR("wjfcy", "shKbzTZpdqexJlQdGJQDntZURzheAUscsWbAMeqyvdaNKEHwSNuohRhFFrfunlGEwH") }, + { XHDR("emczepfjgfkkooy", "AWqsfngFgFbZtzy") }, + { XHDR("gezfaoedsncybndfhvc", "grHRC") }, + { XHDR("ply", "SjHeitRtfWawFnWkAamfImMNm") }, + { XHDR("dmvtguvcbpkcj", "bzGSpsYEmAKSmVHhajCKJxqGxRVdXHltoTNYWIFZ") }, + { XHDR("zdwukvsd", "pjLRdsGtClQyiwmPViigVTQhgZKOJfAGhJkDQwZeKcyIqLo") }, + { XHDR("zgcpgqohztsalyt", "tgsbbwnZIamTanFR") }, + { XHDR("vmnfuvqu", "YmAMYzFdn") }, + { XHDR("pg", "ZfNgDSLieinIewPsZfifRlBOwCmyIcywlYCTLIuROoXxELpTgyojaleWOikCXsKUwrw") }, + { XHDR("oofl", "Yp") }, + { XHDR("jsgsbuzodfgxdjinfh", "LOnPfCENppyuBOR") }, + { XHDR("hvqdcd", "ULpyYfntcaKACtpBtaLyXZuCZGIbJLSuDwF") }, + { XHDR("zdcn", "cjwPiOchonTETT") }, + { XHDR("npfxdkujtvuo", "GljtliHaGJlZ") }, + { XHDR("xgtiongsbgmyobbikksc", "ADgiOHXHoLGrQKmizMHFSuSqZYMngMVdYNzngyhXTfYIkRqtaRxTalqlxXaayqiIH") }, + { XHDR("kunrvd", "FAfNvDmSHVHsEGvertvvLIUEasNjcO") }, + { XHDR("dtcwx", "IZcXwgLiwbaoKMcImXaTQyQRyRrazovWXwljAozDDmIGMfjvDREa") }, + { XHDR("mdya", "cgFnqqddHhItCEUxjUwPhXU") }, + { XHDR("gzvil", "FPklVoOgTpjTNCPWdYyZWbmy") }, + { XHDR("gzdyaqhdgp", "ApTUJWJnwnGakUhjEyluwnnvUHeHSomltXRTHFp") }, + { XHDR("soporpgyqvedazwvzro", "NyMxjgJu") }, + { XHDR("bgzdpcjws", "XPcajNUtoSAyQAFPrIFgPgpxhQvTKpJbsHDOCvFtFurNWAqmDRxAbCfIEzQl") }, + { XHDR("zjbxrdxmjqkaxyg", "wOTgLrQdHWnfoTPdHkUQCLntlHXjlnOvDZlsYFKCdhCmnCLSUiunAquOVJHgGkbdKo") }, + { XHDR("awuhrltvhsxdfwezfcus", "XgMmSZeqJNLgWEqXQIosnWBnVuKzZjrfRxkqhDegDVwXenIHwVZsd") }, + { XHDR("jfctafjtm", "xLhqTqlYvcvOxERGhGvIOYC") }, + { XHDR("qpe", "KwNjPrSPVdYIJeOIxlCZfVcLzQmZCSrfhTukGqKWMkoeqeu") }, + { XHDR("dbcn", "WJsxeeqRwuyOvDHgaUoSoMiwiBYDcVstDMYQPgNoYzVKliaCgnjdvJGDfRIIgc") }, + { XHDR("rmlayoiqxlgwzjsx", "qMdeAxTIofWjpAmrrSBJoyjMyVXevIfLdimWgoVKCncbMNvhHVljEDqtWgFyDKv") }, + { XHDR("vygfcqjihn", "XhPwFChwFaWCHbXX") }, + { XHDR("o", "JCyYsJZHdMMKxycvtfpyJyZPzdhAaZjUHOcfobeiCpsRHltLIcGIjRTnYBXsqeL") }, + { XHDR("h", "YfdItJAxFzRqDxSeYUOhtjqEnYECcIeBpnDDaVhuMNIeNMxKplPxJDYvwvrNL") }, + { XHDR("shbcd", "OxXXQXwPFHQRGBOVSRiUIlGjoPQrf") }, + { XHDR("wdrwyeoxntcscpl", "oJbQnueIRTKaXdABmNKnyxeCHzrxLJMAAXFrUBGmFiNOgXufSoyDDKhpjgEa") }, + { XHDR("jafdah", "SMIzPlGOkJbnWVzXQrJlhZmEEkLOEHzELPGhDEw") }, + { XHDR("f", "lBheeRGcMMqzWYjVvNgOiqsgfsyzngVTkENZKBjyrceWMZpYIFUxrcbedxNwMrNnoF") }, + { XHDR("nfqklmwpwhxskxlm", "dezcKSE") }, + { XHDR("gokffjt", "AYXQmXRdfPdJqesqaeFygsATnzP") }, + { XHDR("cyhugymlebpgygcic", "eVrDXJMyTKTCnPQBlpwoQevWHQEPnCrdTWhEcJPywIQlOAQHloX") }, + { XHDR("gzcxmrzibec", "TAqIwOhkSJKTxWghoAwSoXjsQ") }, + { XHDR("awnlqcktvzfukjbarwg", "fXTvUrwPlkDeiiMjFpbnVxZXyHQhtIVPvMsgccfqhAcwvCCxCPkyRXAjivLGqnymZ") }, + { XHDR("zjkdk", "tPMKPOCRaSXAsAAjpofbjBvYpeYWVbrNfAVPaLELXufXFFpecTiMKDtBfggISpDSwFZcYPaWRtMKg") }, + { XHDR("bdbeicaxne", "QoHzOqBwtOulvoXrMVgetfCXRSVHXDeeDdVQcgtqjAUrIIzL") }, + { XHDR("nehfhxzzvccvlvwfjfzh", "vHrPohLgwSrXWwnYWdzuDQyheaFZQDDRGFSqZTMpPbImhVnWyqzsEOrEUHFYcgikjmzsZaJJki") }, + { XHDR("rbvfjzgfhbtfisfteauv", "hXylmmjTuiHOSPAISYsrCwTpQbrGzztgdLHATbDggsotxTaCUfZDnX") }, + { XHDR("gnlgsc", "whROob") }, + { XHDR("g", "LojkrPulkgjzJcJlatIiIU") }, + { XHDR("qdvpswdhx", "khJkgbWKkOcGodlvoHCNLxgJRmjXIK") }, + { XHDR("tjjxtub", "CLwEBZictmeoxaxwWFEiKeBlfkyyuCAFVTFOWdWFGivcbACYeQuntvnNDmPKUuFXw") }, + { XHDR("krjtysllrppfwxilfn", "fbKkxflMtmIZmKUWWAtTQETITyIXqIxMsUGIaIIIeAFZdRcPCmDpldaShWGBzdFnQlyaYHunPAT") }, + { XHDR("wlsyaztdxbvctdzx", "AAQTqJlHXBsBkO") }, + { XHDR("palzykbdco", "QmnRFQBNQXCXqONjqirMOhhspDPwYtMuutmZPSslfeMEktLOslhIwXKuqzfeZyLeSqgHTyIIy") }, + { XHDR("bxxkjleusgk", "AHFc") }, + { XHDR("wxrsfgyzors", "VzPXNcuAMcVbsUdIbOcSYlTiBKWddPHbCBH") }, + { XHDR("x", "eXppadJguhkFSOMfkoNIASLvTnhqyBoFSNaeOviZUoAXPNr") }, + { XHDR("hzkndtawmbgk", "XznjknDsIMxtcxRHDXmrIHYzDrPigIADtiocp") }, + { XHDR("jpgpe", "ikvSrfJRaXqXtfAKPqDUHcrkIFNgcyEnfJqWusDqCdTQFhtLpIYk") }, + { XHDR("wvmearfkqni", "ELBvLlkwCkPuAVfHyrUEarXxoYYvxWOGcUMAfGZTUqOsHTvamuQfVZJiECGOUTQVnveL") }, + { XHDR("bjtnhyzhs", "aaDOHZmDqwOOpgoGSHSJnJuysLDsAJHyydkvIdxUpAJNtwDuainbiQgeVbidUc") }, + { XHDR("wqwlvhb", "DKkTTaicdVYSjTAenucpshueiwyFMIvWDnlrCxrjgFmPsbILNaZUqGqRzfhhYUSSgSwbzZ") }, + { XHDR("pvc", "bZsWoMbJSdcxwKhAmXmTGLRGACuJkEEffnHVsCngPWmRNEwaUATBgM") }, + { XHDR("waopmgpr", "sYPsmMnzQayzMvGDMsnYxafwgxgDhEigOaibiSMAIGONwrTRocFqLaUCbtaXBnBwteLJA") }, + { XHDR("qpyqrglbao", "DAQXOOIifbybIcJldJCQYdChEFdtqzioIfRgNfvuyHGgYYvY") }, + { XHDR("zmhpgypsvnpuh", "gNsrwjPsYWGHsPZMhwBOZuLizMmKsnLUINWXFsViGuJNSxYdHMcvRVYBRxfZgYAzqpsLv") }, + { XHDR("ixyyzawafquvad", "tKAvApSShcBbSz") }, + { XHDR("qxvdtola", "vmJLnCtlBOsROtGdWklgzvlkO") }, + { XHDR("rqw", "cGI") }, + { XHDR("hojhjeajnjpfdzkriskg", "xfsdtGwOMBDSiGtZwjdMgDJsUJITIKYeTXtJqiVkjPMYrKzVqnmPxGBLsVSFCUUbZoFThFlFn") }, + { XHDR("prieldieicsribipqbkb", "StUOwvgRqMgNrxQczTvcshHUKtXOSnMZgmNTxYDuSpmVZ") }, + { XHDR("lomraz", "ctrjKLAaniyNYXhIfvksEMoxMgNLptNNhITiudFeXxPqbzw") }, + { XHDR("ggfmx", "KiROZUzkrfezX") }, + { XHDR("pyvd", "CcBRQwBFhFAybUQBiBMgCRfeiovxaWWqVQIVjvbHvfaEDbuHQOFtQmTBfEgHSeNIgGrbBVBd") }, + { XHDR("xjwkjeprli", "xyqQsikLseXBuXbKzLyRkQDhaWzMkNcqZds") }, + { XHDR("xtda", "HbJtncEKXmTWJOuRVhbCgYVZewfBIWHpqQihQuortaB") }, + { XHDR("yygamrra", "pggJIBArKAc") }, + { XHDR("twwmywoonxmskce", "SmjqhtbT") }, + { XHDR("pws", "oKtAjYaCEvQaflCozKmMIrBfXwUMqZqNIaZnbddsKzEDjTn") }, + { XHDR("yegmjkvxcrbryumxw", "udspTVWgPffRNKCtJDFcTnMKUmsjCTKkbYPEQOlvSSwWQQHiUKYoWGInSuSLlJfVVsNlnGzGmS") }, + { XHDR("bzyprlenlqmhhobptv", "RRiOUpDaiEaAVHXBdbbMvVAAITinOYdhvUjgIf") }, + { XHDR("hibghqgxexnnnlwy", "VgomgKPCdamBFZnIGlmutvIXdtVHkUkOVGXhIJgsjANyChiKuHVHFWKATlXIqwKNwSBIsEYIj") }, + { XHDR("tyqrluiflkuavyep", "coIYvfyqmREmQYIpoywUBNzpzBdsLUTZdkGbAhuiajeffXHkYlpBzqlrbzDjQFIDjAbckaNvegyBi") }, + { XHDR("hlgcgenol", "EybTmZfVgWawVbgquoafFJsTyXLvUzyAWxdxj") }, + { XHDR("josbm", "CQrSOJFboxgiMhEQdiyakLAqTlWQjmTveJOaFwXvYXGILGHkTILTfZVtvqlAzAcBATltJOrMCAamvmPf") }, + { XHDR("doabxpfbnqhcjiglew", "KcZG") }, + { XHDR("yumnnhjqgtcf", "IIpNHnQXKUgLoPbfbQAtSjGxEZtdwLZhvgGKSdKaLYEuDAY") }, + { XHDR("tfwcrurxxthohfylyo", "DGpylbvUmpflemgHRvkqpglDBUZZxUWMBSLJwqajrPIgiaurqVazcEKZlrWiLAhxUpe") }, + { XHDR("lfhfltw", "CgTwYoSeavwxDDZKeLvclKbMvqnHLOROTyWCSUeQNjIdqzgLlmFuZIAMCZWEELaQLiNNuPxHKTAD") }, + { XHDR("ombszr", "kKnlluLUFCQcmtsSuoBphfpXFlkelFFhEORHplNBxXCnrVdvZCZmGsqYUJTZHqxISaLtXzQDBeM") }, + { XHDR("ezxonfejjbff", "KJTIZyUujYLFmqzhCUweujYLQjIPpAlxPjoxwkRWfPLvikBnBS") }, + { XHDR("bpdrhedsgpdnehr", "tOfhVPYYxjhAtVmImpuSKsOlOmKQxVjldqQYN") }, + { XHDR("nmbixcyiufigghle", "EEuplsTHNOaZuEOQCkFEHJPgWHPSHLChjNtVPUTbRveuVfdhOpBqtPJcqTrxoBztWWnYKlLPOKgO") }, + { XHDR("pumh", "rGoBazMQvQKKGboVKgEHFGAlrbUcWyfrXekObZaTlhBnCncdirnEqdSzkVluENojKcMxvLfvhdXJmM") }, + { XHDR("bofshizpujvfe", "fzQLvqvAiUXoiNirPXyjacOHWCsjyjMGFPwQLYBrfYQVMYTqpMZCphQbTSXOkuOAnLgQkctQhnFgRS") }, + { XHDR("laqbv", "I") }, + { XHDR("my", "bCAnAggNUpgKfVBJkortecjXzwGYYTxGnWhc") }, + { XHDR("mfx", "IcqXQDAUUDljHHXoTrNqVnfCjrkdsUqabqJPaqSE") }, + { XHDR("pqmaan", "VMijkReBhNaMeAcRaIeEDNXsqDzNHzxwykhbHanvxnHsbhNzyUkHjwvmBpoETJSwrhN") }, + { XHDR("gzbvt", "ochABjoHYOxxkaVivgzjnuvFUnUZQXzBEAguVKT") }, + { XHDR("dxutyucu", "j") }, + { XHDR("mojwgfeotanyqbmtk", "qZqngBRtGGYhIDGMTNCbmZRnSXyjeRZYzaNjjrxavUjxTfDGsnPYIn") }, + { XHDR("seqxc", "oqrUFfaKkUbnDFFbxRdr") }, + { XHDR("aucewfkwlnqrdmbw", "FJGvBnLQKIWYLmHCrKaxSJEMAmRIzBCSzGhUTfdCommyKVifWRaWYddWWvNYbcFitduUnKtDEDxxqISc") }, + { XHDR("kaywynmnnrrlqc", "TTwhgAYmgtqwDHhPHvLThRcIzbXkRqqxKEQmvCiPSQAZXtSWD") }, + { XHDR("nfxzkweiuvwi", "ugxWfRlgvMhlQgVoxnlBAQPbEMEz") }, + { XHDR("wljtcheeincsiiv", "KdiweoMRLLGBOrtBAbNTkIZHJbnPTZTkWjfcUJVkHFFT") }, + { XHDR("spjtsrfjztjiitjc", "BrM") }, + { XHDR("axtoufodsdgwbotnpzl", "oCPwXTiqZXrSooHawTIhGiKkariunjFUTWvOsOvWqfpXRokQCcAZXMepFSKnyywGXpcSYfX") }, + { XHDR("cufymunafbahreobbifw", "EpMyYGDNWoxJnGZejEziewBSNIQREiawIyiejuLOhGVJViLmcHStCYZvSPk") }, + { XHDR("dgwdwi", "jguRqmWPKYxMBrgmrAtEyqiXtxztlRmsqBJlqHbx") }, + { XHDR("i", "PeXujKWceRfafUvSmOfTSrBMoAZDOkUzZWJBJNHHvijgObqxKQeXYLl") }, + { XHDR("exhkxfdqsg", "ezIAJwabtMcIAeCphhNqqvWVjouqrtevNlHnxxGncPVmQnAqfwXBmYupcNrMHjgCpcFdUQEiLWCu") }, + { XHDR("phjodghmlrnofrcangu", "SbITusmjsm") }, + { XHDR("wpnuqigy", "mWkhvJXdpnXOAaqrivLIdOmSyKHXphLJjqPzspDZKTgnhAmVwymnwyGAeKGTpkrGXCXEfpbo") }, + { XHDR("lhji", "ZwxqfHsetmwUGlUXWKmmiwi") }, + { XHDR("wlajpcvjtf", "EcQvJYgkPHvItPkznHcLMfQzrLUqmldRnzpyjKHHIQfHAPmvskpvisrSbuHUxvcMenv") }, + { XHDR("gnouipiod", "VuEiDCyAKIH") }, + { XHDR("qscgyj", "QRsVvLKmLRCnZBtlNBXoXfpepYldSAmGWtLmYiYFjlJcPGIfERfR") }, + { XHDR("swaediuiegw", "VjlMbVEHSHywZrQrKhFKmJOnjObTpuPqIqDbKvGbyXCYAsiQHajKLlvM") }, + { XHDR("aaexyb", "ERvVbmdCebgpcrvkYxh") }, + { XHDR("tflkomcqvgzazp", "eAZHR") }, + { XHDR("rxboy", "xAppjKQJVAAsaFrMtFoK") }, + { XHDR("gqiafsemcn", "ZavKizgJxezQeqCtervQDwDlMxhmLffVQ") }, + { XHDR("idtolyltdoeanfxb", "SLCxVnVXncxYxvbFFKkSiPxWxeaiVTrHDghoKrDKnZCKbxGHOKFoPmqXSxZmtDBDnCttjqYgwTFuKkj") }, + { XHDR("yujwc", "YZbYWVADwNhdcObVPMnvNESHNFxVUOvUAHvaIJOFnPfrtpWoDFMHqCgvcwvuYSFCreTpBP") }, + { XHDR("rqlyaa", "MRCwSLHLwqVbgAYVqjlfaANccq") }, + { XHDR("wrsemhn", "ZQSexaSACHnoMHirswgkmTIdbJDhXmtbhBTRJGhS") }, + { XHDR("tsmqdwqdqer", "gYKItbxJkT") }, + { XHDR("rzdl", "JURVoeqJTrjpApgogTxktTFUmBoDbmgQFUIOdadhuVBdnuBEPgQefcYOGUacedeShuZsufzcgEiQaU") }, + { XHDR("dxgvrculgs", "lcgLhRMehKdIeFAyiAdvtFGiMGfbxUWXrBLFCycYmTLkOFlbBED") }, + { XHDR("l", "ABgZIDcFtqifszpFAQwDfNddFnhhTdMgaSsQjXoemKfILNvLSzWulQzdgvz") }, + { XHDR("gtypomfccd", "USezumCWlVTiAPIQieZMzHLuLDtQGJGXZQBBkpNcwlNJXQvyUziKxJXKJLvnNkvalswy") }, + { XHDR("ysowgwrlcymlvf", "TRlJOKvxDyxHEFjecoAqEHFBgEYsvlOPwRNWtOxPCYOzTOACkSdUsshwxjHDx") }, + { XHDR("f", "jgdRzzHKWkvtinBOoZGq") }, + { XHDR("bkzwpigy", "DpMKoIIGtuvLDoBLlNvwXZWOaejHGIOwBjN") }, + { XHDR("xumtswrqo", "KfJMplvCPRNqJmGmoWwIzyaxCRRAAvtkbIYoDyqlsXAZjqtriv") }, + { XHDR("ae", "SolwzhZprdlKtbpAxgfzWyuEXnIffMAzcIvULEaYgrCDGBczyufpuI") }, + { XHDR("rwbmuo", "rnffAkGyNENUKqvHfJjuVbgJNUAENjwokKAJlScXUyxUdBMiAdKFvJeU") }, + { XHDR("paaiwopm", "kiAoFtxVYqXUIRY") }, + { XHDR("lncercjktapjr", "YKojZtRZOupsTTYIGSJpbyCGPBOCLffdaRQBLDeWWmKGZkcJUmtHeoLCyeeXtwO") }, + { XHDR("fxpcxfajurxduqusjrr", "lPqNHBLWkUKqNHdVPaAGYbCrzhSQbUxaTWPqpONRmJDnuDhdAsPvW") }, + { XHDR("m", "ePCdBXRBhiWuMWXlJtJBXyrGfgolslOdEyvDALAKBvaLp") }, + { XHDR("htefacmqwasgcqtkdl", "CyUlrYorizpvFTZSjJkoBxUHXkIiAmuRGSjmEWuIpGIoWQKuWVebIhKHMfTEePHhSq") }, + { XHDR("ed", "AzBFGVcVLQwPucZUoffeBqOJs") }, + { XHDR("jtozkeusebz", "MmpkGqkUtvJoCvRfOJftUaQRMtTDywSRYjDoSdUveCymfOqyTlNhIKmltqXCdhvpuPSUaB") }, + { XHDR("knyyzqbn", "byaSsCaGEanbjdXSowPbCrMMFwrydpwXGgilszfTItWFnUrykgOSelRfshjLLgfjXfrsiqgChqpwHkWN") }, + { XHDR("fcjhx", "oHTdMwjbhdSNkaoasdFxUeaTS") }, + { XHDR("zzyxfhoeoxpiqidpejcx", "QiLTzjESvIWJsfHgAaDQMGiqtcSjNUBChiZ") }, + { XHDR("vanbmmkq", "sflyNO") }, + { XHDR("luadrydoxmecf", "aPqEXKLCVwFPq") }, + { XHDR("vgwfkdnsd", "jSRPeTKNyPnfyjkypWFcLEtcMZENsLVggQAOaSzBwMHhmjZY") }, + { XHDR("qgg", "CdlcZzguUkdFnZaNwTjDjaIqhFOB") }, + { XHDR("gwzagsnrgpxbwai", "UK") }, + { XHDR("khtmygwsi", "ddpNGvsjmJVhzJXBKtwAisVlgieDSUBSBAjhdqyLSSqzNLgpDAINnPUFiDhRqZFiPtOQSBoIdVgJYTFH") }, + { XHDR("usjfeibewcpenkyknsrc", "cFyIdhGGKNVBezwGnEHjCbefPUzoxTDcVOWAMSIKYZaAACqBFOHmWmIQBltiSUeoRQlIykRC") }, + { XHDR("tpim", "KUEVjnKYKrJvAIkfkXOaxxPDikKXiwtcYaEUMmMjIINexIimvzzobUIEkoymD") }, + { XHDR("qc", "UucJUtaQoxTqnqVzTqHtKuewGxTqbNODQBrYfrXhPUfZXEGAPPwiofDsSxyNzzRZqERv") }, + { XHDR("mrkgoizshbmi", "RvjeDWEFqurSWxFNBltMnchrjg") }, + { XHDR("btkgvtmduxmjyagpf", "CvpvYxintPlTjMvEVBIQyXvQYqe") }, + { XHDR("krtrstkzovkb", "OmmdyhdDcawcEqifrCAk") }, + { XHDR("rpcnykzrhhkauzldhjr", "ItaIPopqIyHWCFBZQDhsrVXHxJxy") }, + { XHDR("okfqsbkygmbhfoabrxz", "aKwvzXsjARkBrCPBGIqGpWlppGvDJdoFAThcqauMSUeCYK") }, + { XHDR("vwdmodhmqu", "XdFuLTJqwIcXxpZmUDCPzvVml") }, + { XHDR("tupkcfuzrabj", "UoMkgFuYWVVnEXgJyFjzuHKJQFiRKfJEZuOloOlmbIOvDX") }, + { XHDR("ofnzpmsdtubrklz", "PVMhBiiOhhEndb") }, + { XHDR("fzil", "WyGAqEOsAhXmEVmXjOOHxfYygLEbqYN") }, + { XHDR("qt", "gUPxIKJcwJurMarZBMyUNZEEcmQfvUrGZHhvYqHCyaNH") }, + { XHDR("boga", "tzURfeUYUDkHnvHLxFLpbwuBwCIVsTGVWdqlHUwcvtzZgJsxbMRaRDwevUNnmFyqfGEwyvqCPEg") }, + { XHDR("geadjhowrvad", "APiTKXzrpGpSmdgvJnTrey") }, + { XHDR("yerutagh", "beYkO") }, + { XHDR("qgmzinhtrkbrkoibk", "wPTDgvCKpqDiPbaFHArgIQYsmsdQWuERcrhJyRWtnKrFhgsDbxw") }, + { XHDR("un", "XfSxIJMKTRrdUhstNwkyXKccZYyoCPrFLTkc") }, + { XHDR("icrtysjqfxthclegdwzv", "eexUOiCamxzgqGQAhLDMXOPJozMZZSNqBATQKwoWMInHWmXFVefpuLyXDBAmFcy") }, + { XHDR("ufgu", "mpGVlLVkobDDQPjTLEenJdynfcxnKVHmvzowPVljDCpvCOc") }, + { XHDR("nnvzdwxjis", "LpRcSb") }, + { XHDR("spboyfjyaxqmydhknmpe", "pcaHfWCuMquKxiXtoXaOhjnSlyraC") }, + { XHDR("fdjqccergbzflcsqubm", "bxfkhMWlUIuGxfJOiPbaIcTwFxizuTslTNLJOBqn") }, + { XHDR("z", "HitjogxDLOGYjWIiBDrJdSONdFwdrLWMsvcnRb") }, + { XHDR("cavlsddqsitor", "njiZsomdyNsJsgIpg") }, + { XHDR("i", "vkRpcvQOVfLuXmuRE") }, + { XHDR("vgq", "uguNLdYsjrqqQhgDFszCYifUUQGgYxIzIGqsk") }, + { XHDR("tws", "iLPQJMOnDBsdxwYcegkeinczBypIsvgxfejImGPXMMalAwS") }, + { XHDR("rwumes", "YCgdppB") }, + { XHDR("grrgexkpuqvltjkr", "WQdhMUzePROAWCzCMiPjdpmGJBryznPKufhScbfVtWSJErBnnSOHhcSfmYPNYQFuNC") }, + { XHDR("bmfrnu", "KLufLbmiionOhJCQwcVZcZeMRpGIOhHKjWBbfKrJERrLqoePeFnLMqvQIgiPACwnUDpGuqvZ") }, + { XHDR("vbxzhz", "AfHfoSrNasgxriWcaGwROAgqQySzLFstApQYIgpCUyNQZmWAjwjEzZGmLKUFGmWvfzaSIBm") }, + { XHDR("ioppgjuqsi", "bJcTMXDbrbCdeGJUvOylUiyFMfJwRunXA") }, + { XHDR("w", "dhOVlhijj") }, + { XHDR("zkpihkqiujagrlpmcx", "TlYtUJYjEViYmYIROPxVVMfFiMSZDbylQPqXNtJFgTBdM") }, + { XHDR("vpzltyvqi", "NbEfmGJEVgYglSwdEyHReaPDWATUcLcxQSJxBIvxBisZugde") }, + { XHDR("iowofbioxlkpstznyzg", "awgyfHHMQdmDIRHLLpdBECFhnaLEzOOzdyIboaqAqpwPUpvUcCnYTLlZBqeriFnZoFZnSHXlDJFr") }, + { XHDR("cnadekqcbht", "fGrEktjxGZZHJO") }, + { XHDR("bwqjvinolgilkai", "htNZnmbahCWpZYnzccBagRpnGHOvqQgcSZbtwtraWTJ") }, + { XHDR("dxsbdmllnrioq", "QnabNNfhVHeHiwRpBqMfaDeLMuQcsuDSoKTEeiXYzBKCFAuYERFjop") }, + { XHDR("xptefse", "AQiYgYRVDtPaYDeejRvThlqMiCCjphvxCuhvPIp") }, + { XHDR("wc", "MzwlxKWvEnzpGoWFUEurwtouKscVwWGtdNNuqzrcalejJl") }, + { XHDR("zdpoym", "GLrTPwylNMlqbCVfxPZPumnBxbfgIJSEfRUYyhmowTLpFRexdmWlLia") }, + { XHDR("mtcvilpskbobaqlg", "ZRKycpl") }, + { XHDR("dslrpeyvhrxag", "WrZiksNUWOcKBuUQFfWBOoghAMlxSIAdhyafkeCZUtQztRWHTsjMI") }, + { XHDR("uhlcjixs", "RUQOqhHSLvZCscikKhnOCwppjpcQWtkcIWXFa") }, + { XHDR("vljw", "QAHKOHSBlJvUuUAfXqzFmveXJeT") }, + { XHDR("hwjdvwhpzmwdxdl", "dpvhknoKzILYrNLrZKmlrl") }, + { XHDR("awnsymsfi", "lEkqGrQsZcXjcViSvtRFoMGQrEtRrHmaxmoMOzNTQkdWZYqWSxauSvBL") }, + { XHDR("znxifiwmkjeps", "MkcfnKOCUb") }, + { XHDR("yxpasgacuhhufy", "kPjnOwOiPKjksJPTJXOxtebpmIcWwuGinTzJrLbVsyxXXaOsYkDkRaEOGtbkNQ") }, + { XHDR("upwgaio", "ExYDrfDUeIMCsYRXUw") }, + { XHDR("xdwjfgalp", "LYbXGJRLVBdiQnyyJqcfXGRQsuqfzglZTTeCMEVCgpnxOOGFHDOgLqmpOmPeFXZSlBxWF") }, + { XHDR("vh", "PEhrCKjrmtKAebsgBCPvetUKOYidhtmSuIPYT") }, + { XHDR("ilufhajraswuzwf", "hmidzefZzkiYyIeMBoTddzBtxFmwniucQCyyutESqIIAAaoCCJdlewbETYdVuFLkYRkWFcVEW") }, + { XHDR("qvquqnathlqu", "OtTxaUFTrVCSQHRYoNnDqmXXhRvlZCrwGqVUFyfRseUZWnhmYUWailOaxGrucOPirvWFChnykYEjdwWz") }, + { XHDR("cslvpedeuikg", "SYuTOhoZdpFkmIJpqAVfUmJuScPYWZi") }, + { XHDR("gajxykfxvy", "NdWDBRGyRDBQhDXTYqNtES") }, + { XHDR("oyblrg", "qLxhdyJOiPAmUkaoebNdFOOJjzxMjLFRKlxcUHeTLVX") }, + { XHDR("oksojbusdidazezl", "NSGwabebEKkuyKLIPyYuQnOtFbNlYeVFWwvpwwJDyowMAmDPGqaihEZnCjdiLmKTmrtW") }, + { XHDR("krvoitwcrmrsmnmw", "bJLudqgmrSFNZGNlJKqZUhoKdMsMFCDJDrrVMcqAurDCGnEubWJpOYlgDdKIDKCHrUjBjFHStlWVrKJ") }, + { XHDR("iwreofocjqbhztbvz", "XCSIPWKcngUcfOaVFKHeYU") }, + { XHDR("jj", "iqSICxRjQfstpemuGKOhnelzLNGMs") }, + { XHDR("he", "gKVwprFYNhrflTLYeeGjMaXdpsbKpjjVvLLThwjtxOLxtFczgyOvjjfqp") }, + { XHDR("kdvjvetkxukaa", "cjOmSioKHyuJoF") }, + { XHDR("gmjs", "IosRASdiIdGJNiyQeCFAmJacqflgEPKijIVRuAJz") }, + { XHDR("ultf", "aauyMejbCyVfAhPwpGypXbTQGztKpZUG") }, + { XHDR("feupqfdu", "xWEEIqgZJQkkQAEGomjIYrYXIpPtaVVQHtkaBzRrcSmkyCTVs") }, + { XHDR("lrg", "fmmcqacyGlHaGMsBIbowurqebKdXxlaAMKftfRC") }, + { XHDR("cllhxhxewoehdhlge", "KWOwvFfDGzdtSfAfzaQkXzwFvGMRVRqIjW") }, + { XHDR("uuavheepc", "YSyKwtmYDZg") }, + { XHDR("ltw", "lVVbdxIgZWpmDKhoUOjHZzcrKpTYHRvGOHSlnVTS") }, + { XHDR("qzddtmtdjecciyfsmo", "mM") }, + { XHDR("winromoatjnkzorh", "nUuMbVofgUQdKcRqpKpEQsSnThZAleGGPpatXDaacIWvHlxyQKGZbHStVJLwRUxi") }, + { XHDR("ewixlhysysewg", "IrUZHZDidlKZxGfgETRmNLXkHT") }, + { XHDR("imashhrl", "aKVFFeAKUbTOaVhzRciBpEwyjvfZwOIKljWQpKCjTn") }, + { XHDR("npuehbxpqrlhqwn", "vsdwpGQhhcEjvihrPTx") }, + { XHDR("bxbc", "xujNvqoIdhUPjXK") }, + { XHDR("z", "YoUrxFbQKYNFBdekTHbAdrGvZIeNqYKAGvQVS") }, + { XHDR("bjzyozojkemlke", "JvwUwul") }, + { XHDR("uamiavxbyuv", "zpKWEZXTiNmWhrJewJDyohSueWaywjqtiDJLSRFNsmrcoKrvZSKpsrywAYtKuSmldawenEIShIcv") }, + { XHDR("th", "IZfJsmhIPxCWOduhHdFcsjXcLYmyMXITNjMp") }, + { XHDR("lgdebryabldmnottfnqz", "vbKrypeBvmtbwwyNTiPvGfLFpvtAbMSslujqWcQilwMmOgmXanZysEVjTZ") }, + { XHDR("fpmthxhyqhhupd", "vUxZfwDaxyMnRgtJVnJKJMkyyctPjOQTxHLfw") }, + { XHDR("bulxthomfyppaotqxpqb", "FsxkBKecHSwKmzalIOvwcMgxaqXRayta") }, + { XHDR("pbte", "NgzFWJUPOjKEZQmEXQKhJzagxu") }, + { XHDR("arpd", "oWImpvNIzVYYzazwKiHDJP") }, + { XHDR("qgklnusavzzgdp", "pVjnEVqKVzRfhwjHrKbspPXbELFDDyRGfeBNGd") }, + { XHDR("codii", "JjvKYPTZTCwIPqQAQhJpWSLgnwVYuXIYCItVGrPiowsEnOsAoPfiUId") }, + { XHDR("hftgwqnsdxacnnzutyn", "UBrHnBNGUhIRrntIkHNORsVCePdBMZZjVBhbPhKjhnJMvDhWyLMCdznUkQlEzwdzUVGIxmU") }, + { XHDR("njmcfqcjqney", "knyjbqZYrrYZqSe") }, + { XHDR("syzmmbmyldmmrgzb", "bNIZdUFOohPYx") }, + { XHDR("bdhqkeqell", "JXLP") }, + { XHDR("rlmcpytprr", "qJmxifjwx") }, + { XHDR("xc", "hAgMTmdr") }, + { XHDR("whokkuq", "dHtMWNZXBoSWrYfaznAeggClSCahjFvFRIXdifQrsJrfygxXaTfeFUlmuvgQeXFCt") }, + { XHDR("oyfrlhgohhrduskufin", "ZQOvRUtrNjMC") }, + { XHDR("pmtpkbexnjtf", "WSJZsEznVqKPBNPXydiEVfearL") }, + { XHDR("ycixiqhhxszmx", "gx") }, + { XHDR("oemktxkkbwm", "xfmFoeJDQqyTwlRiXjNVTDlFeZVJRRtAaUIrJkSBBSgTYqbuThfhLwFkpeSRqdyPFAQIjrUvRbflH") }, + { XHDR("oisbmbeivmdarrtlxm", "BFJuVHuixdmikGcEhObREJMKnRMhtAHORfXkxBKIIZgVPgAKprMIbqODRLEJeKxjmLHmLuh") }, + { XHDR("qrrudcgghronqenz", "JX") }, + { XHDR("hznufahseaebal", "PvmDpKpwpwPbyxVhxnlgrkSwyTGzoLhDltQ") }, + { XHDR("cgrv", "DQePABJxTEOrroHBcmvTzzfkbHDJMZSBYyeECaDnrIRUvNDPMLKtVyjUwHJen") }, + { XHDR("yjnwidwvmv", "xFQq") }, + { XHDR("hp", "TYpefrvClILObrEiBRVGsfWDIsBaK") }, + { XHDR("hhtlyhuvbfwkpoegjhra", "xwBYAfyXEGdIWtHddNLovuhMgUvgOpVmQQPKOoGqUtnChPtssjQdwDoLnBKXdUgQakxqSYIvljvJ") }, + { XHDR("vwxvzpuwknf", "xeiZnZ") }, + { XHDR("hsqvptt", "JZikbGFaVHGIDnDGCKmcavaJFcmqb") }, + { XHDR("jixyuezezzdwlgtvowp", "l") }, + { XHDR("ycntxorxqs", "TSFwQxAXCukemiQoHskDwyLKveALqZKqBzBhBrWyOwGfJpxazPlrZDYJlSHpis") }, + { XHDR("menpibwelrigq", "jOVFoebK") }, + { XHDR("cmuxefjbcyvgqhwfhkq", "MfvMcTeHEAJmMvoSVUvYMbBYsnOZNpdZyp") }, + { XHDR("ietu", "TBXqRouQJeyFJqlFemzHlHDMpCge") }, + { XHDR("xppgcilajbijubtkkrl", "HXfYwnLjdweWYLTsrTeefxoUENto") }, + { XHDR("h", "fMOFkn") }, + { XHDR("jzvsukcqls", "RLcIiqyiXDSBbZbpjcwJxEdffKGsJcvjiXAYMDVkQMAuwRJAiFkkUzPvhjzu") }, + { XHDR("e", "s") }, + { XHDR("mwgacvctguozq", "mJLFWHZeBaHpjwynEntyEnykulOIEjmvtugruamTELPaicsTlFfvviVjqAtnZlvYsnevkb") }, + { XHDR("snnfznyocewhoikvlm", "pqImTwJQPKHtwUEFpSjDZSJeHvheVkVfkPTkILVsdQtqapIsBpXRTpktpSyCzxnUCoTRQKt") }, + { XHDR("ewklxeajbgef", "uImPeotGwbTYtPojdvuPMkhwZcYtQYJUyfVesaZTLuYiSaiwwydudcbekaYdUvSCwuJFsAwxfiK") }, + { XHDR("nlntdxhgb", "SuopmTlaX") }, + { XHDR("wpojluuxr", "kvqhgvRJJIhzymKMxJnoLCSujRBLUQx") }, + { XHDR("edudnmdxsxm", "xp") }, + { XHDR("zasrysf", "HOKYJwyzRkACDxbhsLnqzytP") }, + { XHDR("jewoxconeuvpfuz", "yFlx") }, + { XHDR("djudjbr", "dCmswlOYznrwPJMuXlKEvgZaHPEHmQxAcENzEgJNU") }, + { XHDR("viyvfysljpbms", "tYVeAPSmJhdNNLbDqYmDJeUNzPzYMwasAZEBiezosKFRFeggcz") }, + { XHDR("phllnrbpqldhmt", "iNaPlcYijVMwS") }, + { XHDR("diqxsmvkehgy", "lQDPrxMdcpCsrnECMibpnxNF") }, + { XHDR("bqjwqdxkhfsvwmhfjia", "oOfTSapzbHKepmzRBuRnfsPVYYWHrlOxyoJLpTWHmSezJZUrgFEgRFZOpYEVK") }, + { XHDR("uidouqmtwltnxftkj", "iufsorCyQsiAcKVuHeIzglYoPFkgkDzwBNBZyUehSYyeVdOVDMDosJFQl") }, + { XHDR("jxovqnxvcxdztv", "bCbECQEQZpgfxHUURWIqVkElghYzO") }, + { XHDR("eopl", "EsieWdDKnwvvsLM") }, + { XHDR("bhz", "tnDBFAFXhPoCFkLBbTGvDGtyrMnQIMgCZeFPYRHlLRjtYjKOnYNSknWqZysWnqHgBpVACUDslctX") }, + { XHDR("kiqhdfyem", "QlUmoPDMyoJEPLIgSMQtI") }, + { XHDR("kptjvudxod", "OWcVpNCsQEaaeotTQbjpnIHpfpZwwvTysEBZXcIbnsEckpvlhWDfHBVXoEKdGNZ") }, + { XHDR("cgo", "rZKLFaJldubWcspVawtukhwSxaaGX") }, + { XHDR("pvjhkja", "zIBXZGAcOuuLrSUtdHVlmaDQhiKtRDafftwgElaCHFZveGgRjkaYswICufkLRtfsuzOUFxNWJFwE") }, + { XHDR("zrsascn", "LfkyExCUQhtoBrzzQQjRj") }, + { XHDR("fd", "iAUSKNhIMOggxpmlIyIOHNjmIyyWfvqNSFmi") }, + { XHDR("euw", "maLBQfRJgMAlbYpFbLkZLIqJWNoseXtALZbjWxJiAk") }, + { XHDR("ubbhvhbphy", "dltppwWBrKcPjWB") }, + { XHDR("bkzinrxqe", "wrVcqlgmDfVOzqbiZlHEfKTgThvXcfaPxZFHbTQXhwOIrrZnSMTubiRSrjMkS") }, + { XHDR("ekugwgqdonbclpeqclr", "gQlZhKzBZpvQrjhnTfEIObaWmLE") }, + { XHDR("iyjrddljrbdlib", "szzuidNWLjpndnjLXeEHljpMJTJoAZVLQorWieFVoiIrYZrEs") }, + { XHDR("vjwfjpmgijmtbf", "axGgozKzDEZLRUkOoGuEmAHlEDgAILOhEcYhbcfFtMCGNlNldZOcRyKOxiAqMkVpCIBNzDrYdrZlDhg") }, + { XHDR("gbjgob", "doXMXfVeIbunnzEYgNDsnywTyZwaIJyAqNfTjFMtkZgwhyKrRVwIeSKHiSNMeNEeZZggWQnPK") }, + { XHDR("yxpccfvl", "boB") }, + { XHDR("a", "Hf") }, + { XHDR("ad", "GhoGerKRSIxbrTYadmsyqMWhRZWyXasToBHadwELYXqJYdqIQRXsbSfaTlIoVfzRzpKtEwXOt") }, + { XHDR("thdytznnjq", "htqelIcCFGMHMejVABmYEfZpYvfjkixYgUp") }, + { XHDR("mjbu", "PVZthmUfcjDqvUdNmbsCTQMAWjKbuQwGuuEkxrIVyShHTxDiCJjxXJFGYpAyhXsirunmwqQkT") }, + { XHDR("bakvzayalpivpdmqw", "yEmuuqLlNQqVDZRMKMzRFQXpYmoPZytvmgczjKKOW") }, + { XHDR("jmvpi", "zkzjbzzgotCwJqBdUSzYrGetJEpuebAUFpoZGNcjyeAZAjqbgCKXofpgxCYSWZWPZMRkODu") }, + { XHDR("bzwkh", "ougqIzmRzkKpvdCjnMZZiFEGQSYpUzLUCrcWLJRchZwFnqPlMwbzLMbAanCY") }, + { XHDR("rzyqzbxtwkni", "sJRicBwShlSeDFgihSiZtAHseLVFcIlkvtxfrgsu") }, + { XHDR("osbmfhymciertbi", "XSLYudYUfsiSr") }, + { XHDR("njwafvvdybfhsc", "ExEGydcByKPViIpgjmpQaUcWdNBfWXEyldFen") }, + { XHDR("xjcccdvpgym", "tutgTbVafbKzGBZkQCgAcPeDKGEdPfnHlfacduoMwtqxfgHJ") }, + { XHDR("oxgxrkgh", "cWNerFRyaBAMawDAWCWeHiVFxEQxZrllyVwZSpTGwlUIJNxXRAPkptHTkJxuSKugyWhalYWhYjKoh") }, + { XHDR("ktoisonybfvt", "PJPSEpAMslPgDIEPRFuPgxOpNKqgrmkWUIwCsXLtLLzF") }, + { XHDR("fjshzhslfyiz", "fGikfVtoGpc") }, + { XHDR("atmbsjqzdixqa", "juwXpuPAqIYsfuzJnakphDUNQHSOubyk") }, + { XHDR("rnqgqdwwfw", "ROJmWWWigiGMrVcmzAmThWLsorJlHzTtrpPlxXKMBJJzKpOlCyxWHfqQS") }, + { XHDR("bpbhpwfokksqbw", "oMLZsUgOzdpUsKiUCWGPARXExmsEUEUKVwKNdvxPAVTrqRIsfxzjqeqvwRwDcOPdHgIRLxcY") }, + { XHDR("mxmmgbwxhq", "hNmEELDWdaSjRDbBbPrEaTzojip") }, + { XHDR("kcelxorhlgkz", "VKPLqYIDgRhATyCUnpDBiYCqNIorQzuubBYdhUfrVRyzlcILyCxeGfSsKaKmtTHkCczhlk") }, + { XHDR("ae", "SuOKukmKVMsLfUtgyJxZxlTIkKfVWITVfynoASamcjXRnUmXioIsLJAvesQH") }, + { XHDR("fijqciqybxldnfefz", "LQySwHBFnpXBwOMxIBoApyGxfdysOwQnndJArsHZeRsoYDbgxjLxSAOOwWbSHbrZwSyStjcR") }, + { XHDR("hwz", "eiMFCaNKJAzWAtXpUKooRRNP") }, + { XHDR("qsjriofgfq", "VttDExkybjbmFjgnDysnPZQJuVD") }, + { XHDR("cmwdkuxxgoazyxpuy", "QluppySnnUdwWskOJwQQDGvOhWBCRYiK") }, + { XHDR("xmagrkqkqddqlsvpa", "XSdnYaMtiGdAjDFBwsZdjWanvNdUHsMTPVyLboY") }, + { XHDR("djtwqoygrpkqgxrwu", "BdTPxdzEzrFrCnuBBYPHXxelroka") }, + { XHDR("qdhj", "jgITntPOL") }, + { XHDR("ajj", "KkIkzOBQhw") }, + { XHDR("yijyiikjiil", "XlKeYdyDaFqZdKCLbGDmHjCmmmuhrjD") }, + { XHDR("mfapywupx", "iAuLZcCLDlHPwcbBzoeOOyFkOweCEWQVgRDvwJVWzMIDkZ") }, + { XHDR("ujkb", "e") }, + { XHDR("aid", "coWOCmLgLGBtOxpdNFirqdEJyjMwbYrHUxycfJLKKnnKrGKAAZUKaLxyoLtqnYyxZNN") }, + { XHDR("ofmzyx", "ZdZRrsDIAXRGNLrjXtEnNiyNzIWxVbEmLMLebxBrMNYTnyPngnRWzd") }, + { XHDR("vt", "aiZvZdDzIYBitANeUewSlRtvKqhGCtWtWnFJYyWuHVNZ") }, + { XHDR("fzfxwwpuqfr", "rGUECp") }, + { XHDR("jrovyhbydcilafpzrr", "bVSWWaCpfuCtSOCWktWdAjqVGvIypcFjGEJhYolLkAiIjUNWSM") }, + { XHDR("xacs", "PLgUmPVgLzRgoTzAwhQGyurwBBRUEGiqJjjBkJoA") }, + { XHDR("uzcougdenvsldh", "DvXUjWUKHvxxZHEaoiVw") }, + { XHDR("cg", "ZhDfEKzJoMhfeqU") }, + { XHDR("cuzekdrawynxro", "oAgEygUrluagUGvhrfoFeQoCLBGttuCqUkoCSVaslqJqnkoWTv") }, + { XHDR("cazjgipkuzzxpjsgahh", "BZAvSGGdTaHC") }, + { XHDR("vdbwrksjyhozckpn", "qLHGALydfkaPliInHvcX") }, + { XHDR("bmzzvlssankzrylbxg", "iYNvVUGYKnZlqlMOPVNADiOeKkyaOlBdgHdkudYejqKcZGHMbvNXlyvLUMTyHwJ") }, + { XHDR("b", "xIyKiEeJnIofABUthzsPQknbIFuuVmDzhSH") }, + { XHDR("klkbxaevisos", "btjWV") }, + { XHDR("itfgzwzbldajpjkdjcz", "PiitSmsfqIHXszJzdjivHLaxDr") }, + { XHDR("ocb", "vXVqboafFBWJEoRgMFTlpYQnaMqmNFpeFUyFOoaXaXuqgErLTa") }, + { XHDR("caego", "ZSyzijHRnQpXOknRdCUrHF") }, + { XHDR("lgpyjewwciil", "xzivWvSDwzbwBFdFsVNbnvtcFkJdSPDZqCJSvAitIKtViUOHvZUnkkqmDRZWsfUIicbrHwLZMzkmyMuO") }, + { XHDR("cwwrzqjjarrfl", "nWKghOUpYlRxHdhGWUMvlxtGiPzlbJawvjzbElZTcy") }, + { XHDR("wtnxfjjdea", "sRzMYdIWvVSmAKMOEXYBcfYgOaGlFJGIjwjCXzP") }, + { XHDR("yc", "vCLLajbTfTOcZbsSlaypKRhAIVnWAsWdsowLHjGdVMpDrcjCjQJFffhrGjvFIqTTBYmOrNto") }, + { XHDR("r", "rQvGYslIKLsmxMxoIvVhSMikbsWJ") }, + { XHDR("sqakrjumjtth", "zfKnfCmjUuXKCSRIuuAqEpZdLZvMAtDfnLNPJOpDkgQUUuAXCiXsDbsHBjI") }, + { XHDR("xhihblknfjvjckprtj", "ahNqYlfXlqwzAlBqcygxoavGDrVuwDWtbqYsAZttuvMLaJunbsEFfFZh") }, + { XHDR("u", "PjpFPxiGppaiidbsHyAAshDiumNtyLIkAkSwLxBfHMTfYvfadanNIwz") }, + { XHDR("zkkankvouxpfhjcsz", "neOplhuXGvcS") }, + { XHDR("bdqvdpnxmuwhuuyubgl", "OFQubZEDIyXXaGkdq") }, + { XHDR("ymbtzkvrpofgzvyt", "oWAegObfBkDtKbSTBjTIFneCRlbxgbHNgcudoDYVRLhsNqSbUGrOcvGPtitIw") }, + { XHDR("niezgbzmrxesqnquloik", "kkOJHTLfpkaK") }, + { XHDR("frdkomusqcqpgsahd", "SGkTOxQwBYhyMorYrkgWlEhIwVLmzhPCYVKOUnIfFJEieAbcVl") }, + { XHDR("bazijgo", "xfYcSIeNuKldhWUzrwOWztjeqia") }, + { XHDR("xtuallweoxmqc", "LolwOP") }, + { XHDR("amzpj", "GrzFuWvWmpVwdIPKNBBioYuIQUWdbPEVNwhAcIOwIOeRgvWuILmv") }, + { XHDR("cuk", "yHmPsfbPWdVIsPDmrtQLCMgQCTTUDGCTKibyQZ") }, + { XHDR("ylmxxpiodyt", "DeSoxzIocTZRzgijkwYLhKemfeh") }, + { XHDR("spjdivrfbtdotcmak", "idBbvoHlHjUYISPwqGjWBQUCjBJxXrCnyqtmsXDwNkAVkaCiLuFjrUIFtzLGUyEBjMo") }, + { XHDR("qmvamgnanvwcengpuaj", "kLfOTTvISzClIigMRqcejwVGrxoYX") }, + { XHDR("eualzxvlhciotq", "XNxupNmhbSPQwcAUPGlPWDTwIKfG") }, + { XHDR("fethowsxiapzwrdteqf", "kTRdwFIv") }, + { XHDR("rjq", "YjbzlaKZGXVjrxGMGJitdZoOqGUeSqvWafitmpQshLgkJBadWZUyvCjtOSkwZLpRx") }, + { XHDR("nqzyfrunqgbaiejootx", "LfBQrhxncZSVEyJgrfXqRFjENKkhoQiwXybTKvYenWeEVyurL") }, + { XHDR("yfkyxbngscialzpyocv", "EpOYYYdIbrhBdLbfzJOXGdKvDZekJusVoZCu") }, + { XHDR("z", "yQmQHCPOVcHClwhjSMVTlxnrJAQFrdstPsSAlvYh") }, + { XHDR("ofes", "HikzaRharLGIKzkNJHgGKuOMzAOqROBjKlbnaMeiBgEsXOHlmzBSrjTFNKKM") }, + { XHDR("bju", "RumDELqsWnHFidtIcJDkVJ") }, + { XHDR("uypwedwvovqzmnjwyua", "huXtuCKmHPamgvdGNqNCCtpVnMfBlshwtcwcoMSEOOowjflVtOGeKbHOHrp") }, + { XHDR("kacsekygp", "khrsUKzBDgRlqfyHpZFVBQMtJbpaUUcphzrT") }, + { XHDR("fssisderauxmkc", "XhifvZFgHMKWSXPgIYTweKfsIOpvjkTjKIOIzEWqXSzjzMkCV") }, + { XHDR("gv", "gJRTHHFBBJxf") }, + { XHDR("cgommfwvieojgmqvu", "Pjx") }, + { XHDR("upeheypfczy", "xcZkKdXAZLOSaWECrE") }, + { XHDR("hfhrlxxypphda", "BsBEHRxaQZZFndMzBlUnLDDbOLcuWZrkZyvhoyThcPVpmBjcYLpnZnpxKhOjEzJtEisvzaFcSHBEjDgP") }, + { XHDR("tubvpwlpsmzdwqmyhzi", "bGdptGWVLWccBOYFnUpgIHzYxNqGupQyMEWVxAelNfTecpzhYIWtXLkC") }, + { XHDR("moxjop", "ZlgQMHJIlmGRBySrU") }, + { XHDR("ehvdyq", "YhpGaieHAuAJlbbbanOqjjEIEgTdnbUjSWpZuSYRURYUBatHeSpVtdYnbRPwMNktGtTMizLCakIe") }, + { XHDR("fcaahnqk", "dNvTRmgdJaRtiYpuHgGSyKkpFxhsquLmpifd") }, + { XHDR("cdbxefnmqptbjoi", "AAzZNvbosJAgSXwaTGfJttKWxXvlHptbiGysHmnMysiSg") }, + { XHDR("qkuuvxlyohvxsm", "anJLYB") }, + { XHDR("nozo", "xagwZFYQHoOsahoQkPbWdMoXLMgBhAXVAQeFewTjsmwyfGgTA") }, + { XHDR("zpfsmrhnelct", "nVouQjsuxkMiPdMFEclJXgmYlFInUsqBsPAHEbiWvrBNKKDfHw") }, + { XHDR("hejdfskuvah", "IecLOrGDmNrRRQnLTImsxeDimGYwuvzWdotsVpcbDTfLJjyKIRvbVhDtXGuRWAvmLbrqjIpbwXnfqJEm") }, + { XHDR("qggndouctwogddbo", "xVTnrjlgvgWjWjDSMWoPzIJmrGqrLYSotNIzdNFcNXGSxqfoG") }, + { XHDR("zpolnbztwt", "PzsZmiDHhDlIfvtBTzbzmAAhKYifypnGuvvMkBuIDqZLmCleWpOPjWEgKLeFAChPUZNKbutEVQnC") }, + { XHDR("nyqhabn", "exKUUuxNPTNZcNdaSbiMoNhtdIlFtC") }, + { XHDR("tdbzuchhk", "VdJ") }, + { XHDR("mdmicrf", "lexjUgFTESRbnlfSmFsgXEgQatOeByfYVhxeZUWcLXhCqnSZBLXzKlytlHUMpZRlhS") }, + { XHDR("kctsigrupybvrakpmwh", "wWLPfc") }, + { XHDR("znupwnh", "GePOKOlnSUwvGWRqrSthRrqumFuBhn") }, + { XHDR("keasvpobanounrsnm", "SAXyqQpEIS") }, + { XHDR("fouhtxlmhjrkjuzc", "fYSFhjciosAaAnELtrKcfqeEXEXxBzhhgEvdemUnjiiVqmerKEFJtOIuB") }, + { XHDR("wiqofpbzhhuzbi", "AsDBVtmWhQkBUDugSWDqYOhZTPhmMHLRVELWWzchlhNkDziuyK") }, + { XHDR("jxll", "ocNztwKJruZktnWnLlkqIoAHqcRvdSMnE") }, + { XHDR("qziofguovdbrlqxnyzij", "LcbPLGxfcleDXArxPdFWfUnYIvHqJZQxBsSJwrWJrudOpWhuIVmToxbcosvcXwkzSOjiNFeuNMbs") }, + { XHDR("hsbl", "JLYGGHHpnSuGpEOTgYVlYCHgpwVRgqzFYBSMPsHqyWWKrlvxirwDeShSKXyUZGypzPkuceDtDoN") }, + { XHDR("vgtvmcwtjo", "MoALPMlBhibZXReytGr") }, + { XHDR("tzhyjp", "dIMxfXwJlCnVjSQuAQKgCboy") }, + { XHDR("bepmuiplouwaicwexw", "LMDMRiLCfZxmwisdTozJqnolIEHCgphknLuvYHVqAHKqcyO") }, + { XHDR("sulzcgtcbuyukn", "gfNJEVziUSlCtrzcJPdgymQihoFRSUDNBeDdAkwRsBEhAKBNGeaFJcEyqnAuFyL") }, + { XHDR("qsfvaoycapihbqzkwnp", "kORzG") }, + { XHDR("tsomouzis", "GNmuJztPCjRofzQNUFNfVcJMgfShKqukukJfVYrgOcBW") }, + { XHDR("kdjvjgwojqmk", "nycYShDZUIqTbGihjgxrktHJnmXFfwfaktbndSuNmdUrzWsYreSlHMnXIlZTxjaikqrUVGVQkqZVSOQ") }, + { XHDR("wwiuowmhlodgaytvzekp", "IAiXEHckjUWqujRvGySJ") }, + { XHDR("rcuovtf", "aJaIigIoyVrXxxjiSIRWVyOmXWgRFEXWufXqnZ") }, + { XHDR("ywmjsatmvw", "TtnxxYcvoBLyPDDZxhiemVkSnoIasTkoH") }, + { XHDR("rxwiizpio", "KeVAEgmYGzhsdSNSovXLKiPLgFXnKjVkSsBXOOOYwgioloXIoQJ") }, + { XHDR("x", "aouktGTtlIKQvxnXoSaproOVjdjjvHmIzfxnOBVMkqPPrpYe") }, + { XHDR("ouuqminkxjeqedy", "Q") }, + { XHDR("rqjflequfipnbzgd", "tvDkWPCMBBoHXNyJCFq") }, + { XHDR("zvrgjbellndyikrqt", "sEGBBNbomThIQYXSyzteABLgxaJnEqXGNtPGZaZSFLWjQWb") }, + { XHDR("nekktdonscddfkthwu", "YUqVrEiiPGwCloGVxDRmcdDFpvFAJcSrTgRamVbRcBbylriMmxNdnJzjLNRHEMtKBFLDPBhqWkpDN") }, + { XHDR("brhnrtnmnxajhzcda", "ZBSCuHcleGfdpDKRFUpcGkTcsScDEAJWWdjsEcVtySNrUnNMPQvlkB") }, + { XHDR("ucwuf", "MZSCOjiCcggGylFFYZdLhaAUYmiiaeuvpJEdAUCeHZKBQoFKdscrLRnSRLLwyDGaCokGgg") }, + { XHDR("rdvwvitrgwd", "rHUzHu") }, + { XHDR("ngojzkfwidfad", "ePezmeVZ") }, + { XHDR("efvifcdmrnobpj", "MldEPwKgcJWcZvdxAcbmnHnimINkrAoVCCfghxkcqDcZyGlCl") }, + { XHDR("qcuujlmdzekwyarowv", "NQFCQjMMUgnaqJsvHmAajDWExeYiS") }, + { XHDR("zwtpeqgf", "BzLONNvzodPyYxKPWLimwuUMHjRjQAwWrRdWEeCiMhdECMLnGfJRTEFTxn") }, + { XHDR("rmghpudwuwerseqlogcz", "QhQlBXp") }, + { XHDR("q", "LTzyyeuEyDIRReNSeNR") }, + { XHDR("sifzenobxjxblxjzz", "gFIMYKfCesOXwMGGAsZHKpEGirJzhKKgLwMqWdHzWFYyhZfLpfdvJcqZVyvRfBBSUyoFRBwhwF") }, + { XHDR("nqffhjcfpioghy", "TKRzUtZyAQIfVGWqFjsuHkllFkxQNVZyjvVoMBJlbpUQRKVegrEefQVRoHbDe") }, + { XHDR("jhg", "SDoXcvdSCbJbkrpJEDHqeuRhz") }, + { XHDR("uqxbaupenthqhbgiso", "nitaTJHLzsIhzjMiBhJQDNkhRgryVveHNexYtGalmbtVfwZPrxsESsYNNuICuZVthq") }, + { XHDR("hxj", "YlXaKPzyPvNpWJBDELRwSmQPKrBxSonpEdrEjGxcrRndXErgIETQaGVTPWQjIakm") }, + { XHDR("puqssdsxbsz", "JRCHaYc") }, + { XHDR("o", "UFtyZdUECtfoFmYVPOVPMFumUARFDvJdBPokKMMebkENXVAwQNIKjMXbfDJ") }, + { XHDR("tjahtwoeegq", "MZbIffIHnohtghStFBzQNtvfBUFaFMIBKdqoh") }, + { XHDR("r", "hFVeFRgQfdUpoVOYYjukMpPxfmMDFCYTvYjaNSLdsoLAeOXeySJUm") }, + { XHDR("cbwngrymznvb", "GBiEWfRxgErCLjnheRjPiULvHLkavZIisIHQOYSwduAsXXlARiRZkrTBpMjqRlfQPsUDNA") }, + { XHDR("vydckhkfkx", "GJQIAINFKXNIakatfbHksbdrIwYGowJqdRrTyLjX") }, + { XHDR("fkiheglka", "KEAlCTrBZbuwHZPwuekKOmCLzSiRpdHZaKEAdLRLQkAX") }, + { XHDR("sagvaz", "TZOeZiTBvXcwLfybbsnWqvUJVATmpAypdtagwMMRegVvtBeeskxbcxfTTTIR") }, + { XHDR("gari", "cxLTfZZMOvWXqLRhRwVLUCUupCCTMMRVWSpRMYEISOhzfVVwTphsMGaHyRez") }, + { XHDR("uifsvpbtkkcmkuiocpco", "RoKiQgBQvYseCoGgTUJzLUrPkOBoSGumoemRQAKoiVXjBLwTLsguiDMhbHMSEcKLPTnumeVcHimf") }, + { XHDR("hwrmzrsvv", "DTLMRGmaxCOdyUorczejiycSJxsfhDtwhmnEzhKQtKDJoyvFvaHItzsDUPLITmLPFGXSZXzONFVXNXJF") }, + { XHDR("hugsraqqiaa", "yHaAIKEesQWZuJaDrgYclPpzPCdkoFyTTmPVWArzll") }, + { XHDR("dxkzhcpuk", "VzXBOsXumnjDXGemMcJlmWrTch") }, + { XHDR("swkyxxlvpevpidk", "yumzAvUpa") }, + { XHDR("rrntghpwdfizyldmja", "MJeULWUncmYQkXxAFggKg") }, + { XHDR("sjbnjzzypxmqmgwu", "IsvMTWcOUnFWbjezXhMPVvykgBCsklzrZEEXkoGeGfEniakZ") }, + { XHDR("vslrpxmz", "avWvfoXKwPuwHEgPmhMLFxqWgDubNmfxJOJXwQqkddFGDurgAFuv") }, + { XHDR("wswzhuhewz", "UzFpqykMF") }, + { XHDR("lstkpiiextfeywrlhs", "dSHXtObyxWzasTseSJvmucNcJNzdDdrMZRzXaFawwBiHzn") }, + { XHDR("emhvgjuafnscp", "MAwcTuQhrgZlDVZWgrgCOrGQSkiPWjDkrylMmMGrwsZWTPoGcMImTTEHvOlittLjDwRiYZunftEiAi") }, + { XHDR("i", "YABFHGyYwcFsShLcXADdhkcJwOxEGIQpVBfPBvSVAXojsvaEjSvTYBumOHXuQdTlDv") }, + { XHDR("extllwcjbbyn", "RTXhLkOTyFrtYZcyjZwrPEMYtkHmIUVugAzqFpnrGvMqfIesIdcd") }, + { XHDR("b", "GvNbvzkZ") }, + { XHDR("invitavctm", "zcjvFNQgdxWdEfmyEeoWVhSI") }, + { XHDR("eyzte", "hbgXbfLNpZhCXBuQOlqYIBhsvmFbdWzvQfIeumvhxqwMM") }, + { XHDR("uvinyumjnuusejmfma", "BgRFXhaSfdojfWNyCaHUpFrAfpbLQAcDZjQgtYMlPqtPxplPHFMfLjHlZhySJvFERlyeaxdsvWAs") }, + { XHDR("vzzshulowxa", "sjoSgtewTmdPiMbGVhKDqTkqnJowMPuNeNTwQWidgVswFGpujJFCdJiTKLJHukFZvilzTrwvnRS") }, + { XHDR("vvxhurxwnzuyqm", "LVKRmdcyKGkkHthsdTPundHoBEuaGRxZFuYuItWkRgdQaWSysGnfWoVrpe") }, + { XHDR("xecrcuk", "IkktgmAfhXHkVzIrXCulpbZlvugdlRDEbMfKLvQ") }, + { XHDR("accbsntiy", "kxdLirgevGGkTVhBBXHziHvZtJFbNdEZEUPAnzYq") }, + { XHDR("rxjzavjojpsr", "ZXcOXNHdmdiKWLPcVdlrTCKusewEAvXfjCG") }, + { XHDR("skiiwvnfnf", "hdnNoTaIXVfZFYKM") }, + { XHDR("jhtuide", "KFFowjLbkvcPfNMBZfunXPIrAuiGXdDFaudRO") }, + { XHDR("cnaeqpmchukdz", "dlcOtodKLhTvXotlsNfVITPJjFZLEFWkSxAbCTXDzFTsstTCgvjw") }, + { XHDR("iuyauuvqkpiuzjzobw", "CgB") }, + { XHDR("kdxsxxez", "OydTeznSkOVkbyBhJCJNBNSbVstMOugRlUFfdgN") }, + { XHDR("mfivvnv", "bbLLS") }, + { XHDR("laipmuuavuodutvapdv", "LFQQMESkRoSvpxzXVCWDiSagxidvMfnIQulWfHvo") }, + { XHDR("qbeevyxcce", "uVJVPZPznloKqmYQoIjPyGOQYNWedODpVKOCZpqEuqQZZcNqyfJWVChDAQLmVIv") }, + { XHDR("jpguxqfajk", "TQPRU") }, + { XHDR("folkghgpxygelnirvtzs", "K") }, + { XHDR("wployxiul", "LHyzFJydBEFBLoDxSxAKfLkdtNQWGTxDgpWkXyStZARzY") }, + { XHDR("oipahzjt", "RurSCCswwsnPsYNGLgEKPkKDPouVuvWADvjVRrwmvMbpUdlOenJCvzizLOhGEsqhebNs") }, + { XHDR("homfridzwtxnlmyktyei", "EvvLWljqModVbPRQpSfIShHgZsQhjdROPZxaZPtJLPGJhc") }, + { XHDR("pxooxcdazabbionj", "yVvbCsR") }, + { XHDR("j", "EDPbFFXLZOpwMFqgdCgvXiuCypRHtGsyxgUsOFbdrPMiebqFFZBlKqZVADLd") }, + { XHDR("tfkaxxyayywwhs", "mjPKelM") }, + { XHDR("j", "MeeWAbljdsmbSHOifxRojdayltjqrkHTLEifdVRKlHeRnIbHQVWEFFnZnVoDlCWyYcEt") }, + { XHDR("mabgazd", "jwdjyzELobkJXihpNxjejuEOdmZVnHIQAMfEXZQlOjZGPMeSAzvAVRNQSZteysLZypssxPmjcjLoHexK") }, + { XHDR("dcjk", "ZNjOA") }, + { XHDR("eyh", "yjCrVXoKIoIMfARQrvKlftMHZcOpfiJlLIACcUPqObuEDMdT") }, + { XHDR("dminzagkbonpsvzky", "kUtrPGmLtZthoFXnRV") }, + { XHDR("qtwwofkpumpnrnho", "HAZuUxtBXUZyIzSLlojxykvtaMcKQCVzcupqzdKEOCUnIRdKHraRqVKdsWpTUPdH") }, + { XHDR("sqypmmmfxy", "VHdDKRrhnrHLqWDMqXLfGZpkMCFgOOTCyaLplguhkJSjBJOzLlwFngIorlvJfvMjLujQxAk") }, + { XHDR("btcnmvopuo", "qkXmvqTrKDrclJdCxfHKPKqFlIRPPJiGOkyMxEdM") }, + { XHDR("ci", "TqJwyFxpBioBLdVgcXpnlhT") }, + { XHDR("unyrqvqwpfhqtcjycl", "ZpFDe") }, + { XHDR("x", "mRZMcganloLNRWVrTZdsedmDhiQQuLPSXpZZMvUSnGyqfEfVrTVzQ") }, + { XHDR("uzif", "wQXIzckTgOsEwwKYgndcpDYnWbTxGjanCgtVh") }, + { XHDR("fosjetqyoqcfd", "EdCS") }, + { XHDR("dumtwijxzxlbn", "e") }, + { XHDR("wbnvpxqvs", "hweawBFlm") }, + { XHDR("zotlsphozhehfpfc", "aKBnFYlvsrvjLpEaI") }, + { XHDR("zked", "OYojrbogCFyNYtprfOXaLGVGfhOAIMvqMTLjERvImSBNDJxVVZclUtowMbSzPtKZeguAk") }, + { XHDR("sacsa", "Jooz") }, + { XHDR("uyuujbnff", "WnnepQYVtqTKZBDFygdeghzaZeKnhKYWqVcSmV") }, + { XHDR("myfnaifwsnxxhgpzhesq", "mTTVHJFIPRTUEidrcZpGBuwQeAPXRCBreltzALwyCvvuGIqMdwAsLlbJyUzOYu") }, + { XHDR("qdikfqa", "PrsusBjZeOFSOleBJHnWlRNhqOZJllyLhRqKAIoiBkmzYple") }, + { XHDR("ustguw", "CPkaBVoZHjnMnFRVxWspYxfcmlUcKZPcChjBmw") }, + { XHDR("yvggvkbgdytaevziw", "eFGLeoivGYmHLhyFfQWpNYQRaiajqJHjgIgeGLheeAWrdsJcMtgDLvZhDxUWfCyDgYgt") }, + { XHDR("xprmekygxfov", "ByrYLfxdRYRIwpcrBrQZiToNxqjjAizTePaDUweKHVDkPwrVCJnSTLzIdQOlGszeBi") }, + { XHDR("mujbdvwgw", "KQthBknixjANJGUJQXZtc") }, + { XHDR("uxldacpqvq", "vYMKaRQKpZktJVJWFJzmgXubrlJiK") }, + { XHDR("ixgaqb", "tFPsgvDQKxxzOjalHCmcuUjrLthZkTmOuYtgKQCBQo") }, + { XHDR("yedypovlpnoscas", "vyvIxKopeSRTSVlWCuCrvVzIg") }, + { XHDR("aczoqjyknpkjaaopeiou", "EXoKErzLZDjkuDWzndDBrbCTibyIJNDW") }, + { XHDR("mjrufwi", "YtePWwTkhOUEthrHQTVqwlSaUftwEYaaYRLyxDxqCWA") }, + { XHDR("zyzvrlxcplqplzhy", "GvcCwNNKPGwXafiMMkjjDyzOGeVTkaWGkFBNAdYLJfU") }, + { XHDR("iuwrailwqsffra", "HxXzcMFMjAcWMnNBORwQlKvVddnporlzJRMjfgOnPfuJPEbysFYCMWUnQfmAKlRwh") }, + { XHDR("nyfj", "DIdMALgAgnWwzHSMHwxIhMERmmiKmQStATQdRbhZZVRQVAJtF") }, + { XHDR("csrmxioosrhhfc", "ExVIuVEDktDbYrEoepdJkUYtHiUXdeyaeFh") }, + { XHDR("nbgadbngnkjbdhsmio", "YLkFhqBXfZQKYQySJuqpvnTNUWaAfDxZzOwsoZSdSFLXKiQSIEpCzqh") }, + { XHDR("bfwqmtkxvfwajfnsmdxi", "IztTMYxANBvnpwGJGbFrTFJGrxqUMNkRFQWijBxSZuPu") }, + { XHDR("zisobcviohrwoyclybw", "nFtMQRRtAyFNJIDhafYENFHyHKiaK") }, + { XHDR("ae", "QWvyLAKhIULNkobP") }, + { XHDR("aojdkevpwrnnjiuqdud", "QoqVwUndOvFXgghXeCeKHOsRQ") }, + { XHDR("qhkomjyvfowhujlrh", "PwUrDyNUmPWiqosgdyJQdSjMUEpYDPzETKoSbXdCrVcscj") }, + { XHDR("r", "uiYnQcaHJJaWNCozdevgMdoyKPHkNoTkVRacPISespjRPDtrofjrfysCQxlP") }, + { XHDR("eayeaczzs", "dQGnOtedCkbgvMgCniCXxtu") }, + { XHDR("zdeyfbrtg", "SpekZabBAipvTwrFPTlkVtFzBQiGVaXMJnIYVpPibZGaxIIqtsOEHsYAUnViVZQbNhpAzaYYdu") }, + { XHDR("gorgmfbmbnkbc", "jySnudwsIlpiuzdXwamsKvHERhdksc") }, + { XHDR("mhklgtkxso", "FTyBAdYJlZZNlBOesBPsafBUZauUMqrrIotLzQd") }, + { XHDR("apaqssxkyzpeyaut", "kysEwsnLShgcNUMAcrHIWLOdjKSGERQMLXLVKAlbzeQlJogMptjOQxwEmfgsKZcqVzF") }, + { XHDR("vdhenvcoswhaaxu", "tbErfDIlHVALkXZzzWTrzz") }, + { XHDR("nyz", "HODbgNFaaOmOAiuxfPWaEDjMgAxHha") }, + { XHDR("g", "dMNDQxxBMAyJOvVoiUSkowJdouULOJlkLUuKMPJAYpfbHShRHAKpuhPDMLnHxuxvHGqKUisLpcPTc") }, + { XHDR("zp", "LatlNwbuvMoIToHVpYzOSpQsIgLKpgJGXzcPMNXdoPjFaqOpipM") }, + { XHDR("lipjzvofmzbaoynzrxp", "aVfoxxLPlPIwdWUoqQjQBfSonDLMrwfszWoRRzJZHQlYhVczMQLlhIYAr") }, + { XHDR("evcpdcgvlh", "DKkgqbFxnUbrLqQgMkClyUeLzbsTVVkGQbyGNQlGjzvZBONbdYvSWPtZPRruCSCYbLz") }, + { XHDR("dav", "TmTGJvHDXkpgrYaMKGrRieyapfcRLdLbNPnAqddjPSTpwVJhpuuOaiyGNxRfYqY") }, + { XHDR("zkvvdjeczstp", "ECgzLMOdxpfzuyk") }, + { XHDR("mvfyala", "APcHMtZHENnVyIdDWmXjRTIZ") }, + { XHDR("mibjzqnaoi", "XTejqAOLftskpLZmugkLWuQGxNRYnpSsSFnePwBAerEhLIsBpwKzSvzQrmgbuozrjFNDDycNeDaHPa") }, + { XHDR("zeuuwhfxgrupknfrw", "tjHjUvLnrTFshnwbIianhyxmpRlmAVVBgWTOivKhSOErBX") }, + { XHDR("infeqnecgjlowonkbpvq", "FvOTwAVBhwPBsUIGnyCKPThbsyHKfLVQdxYSGsiufmKYbqowFRizOKtRmuMllSQp") }, + { XHDR("lmkpjiihlcb", "RZVFrHysxvtxy") }, + { XHDR("ffa", "KpTddnrGpvUFhmquyLFhIWkbjFLSpzhSAEEPViNVVQoajkCiFDvDxpJ") }, + { XHDR("ouvtoucwdbeuw", "NLFRtaGqaTPLFiJUhAOxnVUVkQJyDdlLK") }, + { XHDR("jdcecqrocfwsvsgjpcpa", "JyeoHwETEVlytAVUTObiMrCwAeuNCzXFMFXixEteriM") }, + { XHDR("qnmhiotulw", "BRRYpyyEScVWfWRcTOwRsVWtrHOrcTHKwkStofUz") }, + { XHDR("gmajrciwfqkxxgifbqz", "lzgGVxu") }, + { XHDR("avayem", "emlHqLwuXMRriCraUocNJuOeXAGbNuIbn") }, + { XHDR("jcdpcntuydtjyc", "sbSzcNmoQjsLOqBHWmTibnbzpRyJquJEIesFgvp") }, + { XHDR("gqrtsoabgwura", "gfcaDMPZPBOPFLCwOtHRQHKZSEnXnXSda") }, + { XHDR("jr", "MavBjThOrPo") }, + { XHDR("dmsfowp", "IoIrkETMKsAyayNgqxcPEBkRoCZlCJLqC") }, + { XHDR("uwdcxylhyxhvytrrnkw", "dMaSoibUtTZmncwOHLrKXcmPdRNoPJKKcaMgVoogZLJZOpf") }, + { XHDR("yasouhmpknjkibuwqef", "NmjSOexxGHOLYGjcDnqRchdYnFNpIlhlELQjjCBSYsLlPD") }, + { XHDR("olhtxyrjmmaffhkjs", "SzE") }, + { XHDR("ordulvmpkrqt", "DrLrvavCRqnEuLMGpZuknLbIXYAmopJmH") }, + { XHDR("firgofp", "MeKMKbOINyILMHTprdFDJepfVFQXPLHdAufzoddu") }, + { XHDR("bdgcsgar", "JgqUAExoytCYXmcxcqstcHhMuaHVaDU") }, + { XHDR("olnicum", "kWGGkQKzXwQYgSTUKFYuBFEHmRwZmWZCMRdWizEYohBxZHMRHJatvYIgqcxFOBs") }, + { XHDR("ahoiqtmtgj", "oRyaANpgEEIUrqSMfGcacsZzhoBWTUlFGPWqcYAiZwHkruulUavhINEiFCBSSrpSp") }, + { XHDR("jowjitpruxmmxpp", "EBIjAgzehBuLCRejhrlJZVXooQNoXMfHwiiYQWoaduB") }, + { XHDR("bsoazskchuesn", "vJtpETkGekrLGABJwpPWbJseRqGDOfCJHjOYiHidCmZnFBcpEgmDIIBztuHHWHdnAzDkCYKU") }, + { XHDR("tiebffxpdjjg", "NdqznhOoSnxwcAFTAmrCWPPKuyICxyxFyNljXpZwOltWIjt") }, + { XHDR("xartzfzkqk", "tTcFypEGXYXKbfYQHqFmoHyrQAEuBKfYmfxreuFuJR") }, + { XHDR("ttuzkhezsvleudcm", "boGE") }, + { XHDR("rjtn", "LhQVtIjZhQvoAYFuUtDQbdFJHrumQZiHETwNveLyyfZqvycvgWn") }, + { XHDR("lwlkvzboqtaqi", "iCRmmugyfAYPkOkflRRzTUbyuxEYPkouZfdyrervERhQsbmOemYBzbvnYXhzZzDPRheZMZMuWKejfTfj") }, + { XHDR("yiylkfz", "vrSBVPrZkNQ") }, + { XHDR("gp", "ZzCTHJbflegnWzwhKzTbybxAyARZNnWUqWuGvVYLpTHrOFQmIAuKqRAYjMnvUBEyUFv") }, + { XHDR("vclaxmmlde", "DqpkDuOLaQRrTODJivscwRzRQejmKWz") }, + { XHDR("noec", "SReWUsWMCZYxU") }, + { XHDR("xnrebjgnqawazngnpr", "EcNmgETKHiKZdBPFpCCzEqxrHzRXdxvRBOTNvUj") }, + { XHDR("ybwpfmotxe", "FFz") }, + { XHDR("tuxoekcatrs", "EvzrimilxkrlzPndtSBVFCuUoEeqHvSyDhziuPkLaylusGcmSwbWFWkhmoqXzawGiKxokbQzlpe") }, + { XHDR("veatzgfhkgwfumopku", "GAZSrbpxTGEyOUgJrqS") }, + { XHDR("rhwrcdiznnx", "veNevTOtDs") }, + { XHDR("gbqdjkzttccaenckqebs", "VziSkWiOxzGKyVpjqoPhlipOGaJJoZfxIOyplBPAwkNFXzyvtoXDWNlHSUhVywRLoWAn") }, + { XHDR("opqzwdzfgksgyisgg", "xnqwqaejNrSjAtZEHELjluIzPCcOweSBBFhMTQIvfcFFdXEzitTSBkxgLFr") }, + { XHDR("ejeqw", "OudlWFJu") }, + { XHDR("oy", "gLHfElpXuLonImjiPLesCkhsNXxbQemlQjxuLUaC") }, + { XHDR("ziinpwcdjdtenrzyq", "HHlV") }, + { XHDR("eoqwvgewacnqlqmiv", "pxgxUnjaffVkBKXegLHOOxEOAuLEZQHexGdIxWbDOWSEHNEmNVefLHNUKvPpo") }, + { XHDR("rtjqlsegayqpni", "NONrZlFMCFfSxHCWEtfAalGpgFYypRISUFirDJOCoLoMRXyOnfrJBGdnAQqgwZePZSAYXLa") }, + { XHDR("zjpbfotrghlguvva", "bMOLCiCUJ") }, + { XHDR("x", "anIWqHipklqMnFFOzVXLoLBcOzbElOzcDjWlcEftzWQgAjSxVLmahxzSgsjtlD") }, + { XHDR("cuakroatyoebzfsmueq", "ZFXaiDMvRqdUsbfSoayFFzxVlRimjECWjSaqgxnLYxooC") }, + { XHDR("vuivxplhciovswrzn", "cQFDnFYfUfVdHhdDDYGzhnSNLVyXdnZiMzbwgUiPTApxHwHXsvASIUtmcmEFjxYjObsVSWQHTGj") }, + { XHDR("zvkti", "wWEWZmydVeKCTfrHOWewqrvjhRXCJYapsvQAGuUvxxwRdfCqneJAHOdEIUjd") }, + { XHDR("ashshptuaol", "aTQzJxlbUSSTraHaytmKVLfuDWwVpAWf") }, + { XHDR("myysxughhkma", "sOKceaCsHPcyUuMfRaBpDgaPJvtRuiPoAgmXzmTqKMnZGGnkqDLLZfpjORMbI") }, + { XHDR("phmveqvgbt", "sxihIBlXmizSalLFVRuzdgAhxrLmTVVZGStTRGDpTGSDjbiPHRxTMmdwKOcuHaQTnOzUlnuRN") }, + { XHDR("ckvxzgrxstzpqcqfh", "zbArsQpAqjTVjQCBOLXkvocKXXqGyutJnMSyboaiSRsXmHNWdSLKLPoLePwTRGMMcFPiKKwkQjVTtAah") }, + { XHDR("swqvafo", "QXehRZdCUgepQlbwaUzibTTL") }, + { XHDR("trogwmcevuis", "lqSjLvrOdDmRoKWGqrniGzOlnYUClmmwsenFsZnjabJtfoevwQcyrwlZnSkmcnqiBdKinh") }, + { XHDR("dgqzt", "OMBiNAtojJkByVSZaDmXwtJMJYmwsmKZjjKdOgzXIKovfIpYmZjkzMUsxmeGqNPPUKqYI") }, + { XHDR("hlvubmvibtm", "DvmBwcyHalyuqaiQJgTuTgtLBpSfcpghewJHVygL") }, + { XHDR("dddsspkom", "EJsaNdHQiPislYbstZhOvOSEcEqpKGlaG") }, + { XHDR("puhkqtnegsluhitt", "NxoBwgvjss") }, + { XHDR("zejua", "mAKJoTDasHTvAlVFiSJnDwcQfcG") }, + { XHDR("zchsexc", "XKLAQKSsxjFHoESsUZISAWIbOslTKbQuGuhQRMZ") }, + { XHDR("ozzdwmrkgpnd", "RftDSjRoBaGqIrCXAyheKZMIrILDzx") }, + { XHDR("ybwtijpyihrzyqecvn", "CAjKK") }, + { XHDR("jbqvxnbow", "xFeYBWLOJOYRHsOrpxydgNevfwpzXmrCECMhiWcMUAXUWDnNIaqQj") }, + { XHDR("hvtteijjigbkpqhy", "kcaGnoWfvZKuEvBWXOWcZTjGbtSoxzNopoKeohzwDFddANhMaYEArvhMdXGSGS") }, + { XHDR("wpqllj", "rzbp") }, + { XHDR("xln", "HREWQvGlAKHqiaxxLaBbHUGXYdddteeIYuEwCNJhQbKCNeBUNYsJbUoFkiLiGKJgbWTwEDLH") }, + { XHDR("rstoubrozulwr", "VVRJHoV") }, + { XHDR("sshthkgrsybgckzco", "ZEwbWOibkHOlbNpFoPqXXDNEcanduTg") }, + { XHDR("r", "jJkGkLUsiBlJsByznfnGxXfHPgDxXMQUyZtJRPDqXsGScAmTAh") }, + { XHDR("dosvpzbfj", "zsSmctoQpILvdYxUtYZeGA") }, + { XHDR("wdzshuhuclpqtgtvivzy", "fPgjGOMjkbEIxhBdgFDZXCIyxvOywfUAlhFoTmcyaCLTvdww") }, + { XHDR("itwbdpeufkwwjez", "PbQXijBAjihyWjealvvheWpy") }, + { XHDR("rumaeijyuzeiorj", "nNnvbrBRsvtukMOCHbbutJnzIkoNvvwbbuuJZLwMexdmeMHLBhMSVMaMFZdnuLoaGJpsBTVpmo") }, + { XHDR("ide", "lGrMcTYbbuefjFFscpWnodoOL") }, + { XHDR("nlatopcxcuhivfe", "RnDywMfOskbmPClSpAYTyYctIJGZhBhFYMHIbWV") }, + { XHDR("kfyr", "IHNKojnWyYrhImnHFYTuuymbKdnxKO") }, + { XHDR("gji", "cEmSAXQ") }, + { XHDR("hnm", "elsQYLAntwJlfGUqVrJu") }, + { XHDR("q", "sNtyhotgokZSgHUqnmnMWrYfasrQXjWcMuziWXSWjEfHZHyofYHfJpubPQmZhUyttTNJZh") }, + { XHDR("wbhsad", "fKOzaklqrZkphglHMSaWhOPzBxgUNkfpgEzPIqyjcMroacOOrmNbRsLwpeiIAgBdQ") }, + { XHDR("wkewtkwpspybvgyuuy", "FFOAvrCJHaqOFcUoGUvTTyPxrvxgVAejciVnZvvoCVAahGfYXnpjeoSeUwRNfiykyT") }, + { XHDR("ftytoywrgpur", "NeVkOhnejYWYJtOiNRiojCEJnnyTBqyELQFFxMgtgSpILbfiQcCCCMjFLziFavUBgrOAtA") }, + { XHDR("dntbze", "AsZIEMMGRsphvfUMBGYECgbzbMVxCozuyuUNkVrMwCNWZpiLCoyX") }, + { XHDR("enyarttilga", "tNZNwdXXbKgzwfJVlsTaJStMiXcxTGrLgYIzyJEZbunQebCtfP") }, + { XHDR("scv", "DrAQzTZoqYkWWQdOJBCubrCnVrbrGIorJEnwhayNgUVn") }, + { XHDR("snggmkibe", "KqYzlVpRFLwiWWCtfpkiWPMHnYWGpxgPBhTUWFrZJQdlvYANvKxbcWaFMDadAFmOnKc") }, + { XHDR("mroaqvyblvttj", "cjxFlxQuaXurjIxEcfYQAnJ") }, + { XHDR("nze", "wghtXfcgSgJVaLFZLFfjLFKcxNxGBPLMLcBFiHitHKAPUUGGwxbJXRvlBAtrzZXswalirOrERbNARhp") }, + { XHDR("zhgngmfpsweqjgvlvk", "EZlfzbBRpfrNtnsHVvqHtqYGWtWEVuElJbYejYOsaNMzjWTZ") }, + { XHDR("molapm", "BZSkvRiEgTGqxMqOtGgewtnRwgahsYQwtWCKjkhUbPSIRghPfWaUkWfazmKmnMaXWdTw") }, + { XHDR("ccfqyexozxtys", "vEgMfdVfJRnuxGudVsSEtKXPcOzjhjssIPNzfROHsoxdEJoaKxlEUz") }, + { XHDR("cg", "vwjhnLkQflcAxuMuLJTTlxgvPpKWNNBYojueogkN") }, + { XHDR("ozhvhezsyoettqozc", "HnZTgFKmbmVdXQCTPcfXmLhxCbmrJydAkeOHJQcQhMglGYzPNnNiVtUeDNw") }, + { XHDR("iorcmyxtbynxxuww", "LIZZIogVVJOACDEKlAYXqUnBGTDAsZgBsmu") }, + { XHDR("hxyqcrfnbqmlnglzkdhy", "lEVhnAv") }, + { XHDR("sjxmlawwveq", "unyoDdMzdfAcPBKzlBwivSDAtocftrKSVNpxKDMyNZRaLnICH") }, + { XHDR("kpmjjqqxrpg", "rOg") }, + { XHDR("kpysofrcwcaxwj", "dFQLnQICHeDNQsEQAIcLrPIBpAomJHLZfdnvByiQHILhZZXpGvsVSz") }, + { XHDR("c", "bGoEIcyCmuQydqeYVwRNskUVKdxRNuxSiHZmfPWcJNnyXruxqjUKKAKHgQ") }, + { XHDR("wtm", "TRkhJRGxlynfCAIjGJTHWGsRwGTDsDltiqaOTGvEjACGYRFxfdaoGeyFhEwGbdGQw") }, + { XHDR("hzarnrdws", "g") }, + { XHDR("ufeny", "AuRtckSNVvwLUmBcPLvBI") }, + { XHDR("g", "sxzUbQErdWlqUwiYsmWfZqpLEjiJdr") }, + { XHDR("mhmzd", "sOAzZRRpowUqhVehCUcdQOXtdcEKgUiJQFHujsVUKGBUkpwU") }, + { XHDR("aooukvqolxwsh", "cblOwcnfRFjZATALbXWmGvQkG") }, + { XHDR("vbxnzaeuuskau", "nMZTfwaCkjzZNxyXMpxqYbdNVRXmrNtOUJrMkVBFxr") }, + { XHDR("gbgxgdiwhjvt", "aXNJCmOOF") }, + { XHDR("mvguljayr", "WlC") }, + { XHDR("xxoohiggariug", "KBolBjJXEHib") }, + { XHDR("psnjhnokvdgtdunvp", "khRyqwvkZcaUrpvGLqCxNsLTFuoKMkRTnfRxzKETsCYbpmqqkjUalQaahzaIKXJMHkKfFvKCNLTglw") }, + { XHDR("mdci", "pBAsuAgXULuPwlRaioGMVUODnC") }, + { XHDR("jxhp", "bzdkedhDPPLcbocBLBojabZGBZgvdZcSFRkFetqYXrZVFdyjqLTQJnmQNtV") }, + { XHDR("jhlmz", "AjgFvHRtkegDm") }, + { XHDR("qmjemmwzmuabqrn", "UveutFTuQjksuUYQGksglgEoQBcdsMRWTziLMNXZEnmgUIYllcRZA") }, + { XHDR("gmq", "CeoAnBBWFg") }, + { XHDR("fonfgfcsubxzejqxjpc", "nCBvhCUPw") }, + { XHDR("huylymiysszlmqdctim", "iSneQVwDsJUWVTKHxeWOhYUJZfoItrxFCBUpIVqcfKGLqYLwMX") }, + { XHDR("owhfr", "XYBTlUkhuiVmKItpqtONSOWWlCrsirIJMAMDYdJSPMNHxwfDHsiQnBFSKSPcUVEHeDshzHDhXnneJzKQ") }, + { XHDR("hivnnjt", "jrRRNEKOlJXARFligVrlNixObgQKXPiRFgzbzCopoEnqumVJhKYXoUJgsbUVUiCyzbJL") }, + { XHDR("xnuxdesthlrcuaw", "sDaYYiZjRGepqcQwQLoAKcfWbpSJCINdcXdUibhGEDbQEoMyhyMlTkB") }, + { XHDR("hjl", "EVpPieRovwIGTWgdYMAwZpgEvIlrwxSssQMqIrLfNg") }, + { XHDR("mt", "XqtisNlhiCWbcacCtyUDQNawsoATYmOFM") }, + { XHDR("li", "lFuAbkWebLjpINOCbrPRdl") }, + { XHDR("fkzugpolfkcmeepbgec", "DSmgfxmBDVRDhjctcvzcXUPabLiHvomGxXFKGcZsTEVYeRO") }, + { XHDR("dvryyycvqbdvrra", "xZsLzpvodHZSPCIOmoMOdRbCTFavLQZmWpnXnFjiJxTLsnLCarTDxE") }, + { XHDR("ercapxnacbeu", "neLhNprUMDwZsvYobFdOKxr") }, + { XHDR("nvufrimsjgryh", "DRjyAtCFaFXHfL") }, + { XHDR("oyrvedfxykhzi", "nVzaIRVwWt") }, + { XHDR("ngltelzoaznyrkmi", "WDCiYZOcIDTAbAsOKYJXF") }, + { XHDR("yoxzspxmktulhzf", "dfdmqOLHusfkLCdgikStxZRrshncdNeXiuaYztZJquhWgkaQfuzKoagFLtxqxBXhWltVuJguMuW") }, + { XHDR("ikoppytcifcso", "DAqTFOlgkarfPmukXyphsPVAAsgYSwhvpucpLbYiQoNEAIVWVEfNVWutrpquyRSJDdRek") }, + { XHDR("ouhjbyeipoh", "WuVhSstybiXofqvLbEMTwTBjtNYrznnXWjREmxLfLtrkwIIlmUwaXsaW") }, + { XHDR("mkhxkhftngbp", "zQYGfmHcTjKocVtPKjgcGCuQIHrbqGJvIrOtMLvucNATwvjOEnavyBWPYGtTXoyUn") }, + { XHDR("zaieldwgjm", "symYUMQkncdlFBAgJMOOZRRwAOhcKFUfPOyPWvj") }, + { XHDR("w", "GTRhZPkwcttUjwbILmBqygvbjfOOlbgQwSbYxFTambSThSrzXSMmUykbKJDR") }, + { XHDR("mucfaorfepbyltr", "XUuiJrKyKmlmRfeLXDMGOQKDNYFzhGJLNGUspGWEeLVlnFAdORpZTXb") }, + { XHDR("vpaxgnzd", "kjcpoODvnITffpTTjsgtsJaUQGMZYsqMbCEaitFbeqFkMb") }, + { XHDR("psjzuegoaa", "FdCaAYSlUOLdzxRhVtCOmloYVn") }, + { XHDR("grvhanmsfhv", "iONeaQVjyTYuNJixPHuidcPpAalWDRBBzHiIpKGXIouoIKSNaFzYrByrG") }, + { XHDR("kyztwo", "HiBLZiiysaIJezPYRLAblfOrTHCspjFQwdkUilwJZ") }, + { XHDR("lxmoodnwhswrubqayfig", "wnvweDJCoNqsmECjcZVMxKhQOChnEZ") }, + { XHDR("ocghfrihlqjjvlhyqdg", "LnNkpFjNyzMqOJgDxENGKSFkoKoGMMpIdpmuIKWppoZEDmEQ") }, + { XHDR("qfgyutvtrvhexdbepqnk", "YkJnqGkMBNZgZzBxOsWzLojVodNviKJTLIZDnxZR") }, + { XHDR("cfvxszsgpqtlhxjtort", "WUsuhKWMaeLgZxZqvwxvcoblSLOVJAjBct") }, + { XHDR("afjvypv", "vobVMzwtRpACOlVOhecnBAfWFzDPVYGZOQTPxNxdZNPGzirheCZtApHiTBEqaRGH") }, + { XHDR("abqvooni", "zYbuQvFuthbUVyTcHKHlB") }, + { XHDR("fk", "TNZQEJSVMAxmXjNQmfymwxcRFXnssRDZgjuOmmloyIHr") }, + { XHDR("ijhddcgb", "kgHgHFygTQNEKANcKByLNFfYcDbaZJuanyvjEYiOJfG") }, + { XHDR("dgwzpbbhqkcnfjsgxdm", "TMMOwLhvTSgWVryOURlnlBzONmxPxbWtUJwGZAPgFVhvXGzspRApyjMneUnvENE") }, + { XHDR("tvpbwlncpmmjdb", "SOxNNWoqTdRInwtoxaQttDuPyxNlKGecRyjqkZiWNvlXcSQtiWOLaoVuEBOTzZQWYp") }, + { XHDR("ctohetjsjglzdgvd", "eHbQxbbknmrtnNhncsbhsWHjidjHTi") }, + { XHDR("vrj", "XOFcOE") }, + { XHDR("lawwqxhokkyhhh", "nkgmAnMNpwncZxzCJMEcypBWzqZGctiRXJwboPgXVuTjsuDUVGebatHZzwwJcTlLNnMBQmBGh") }, + { XHDR("vazvfmuzvt", "qloFbBJz") }, + { XHDR("zprkx", "oQYheEVXVFngHCpqoIekWvMUOCjTDLDNWJpovacNpaBeOLGnSqPFFXlIcwTCow") }, + { XHDR("jnzszgshktgxbyu", "MGbrPUyiWSjlGrVYVaZHlkAVDpmwxlmcG") }, + { XHDR("ayhkdaj", "CphqdzHsieSrowcoojNVCyv") }, + { XHDR("yan", "IcUfKxamUjnSdkAbPkcOWdylotsPL") }, + { XHDR("cldarmgifzqgyuajykf", "OUcgsnpWxpCJNcLkBxvDeNyMUBYkHJhYVaNEVhDzJaKvktKTaXrGBOsijIEgIQ") }, + { XHDR("bwoolhlrkmh", "pyYygK") }, + { XHDR("lc", "vwiqgljRkyYjoeEBncGTpaDcOdMbrxHNCzflBYkkdwX") }, + { XHDR("cyjeta", "CMd") }, + { XHDR("aeexvfhixeysxjgthzxc", "FQbpgzgPkIJiGdITjcuMsGWQtuJwGFSYVggKiwayvofRgbwwmfcTPZUwNFGtmWtI") }, + { XHDR("zpuovezcomscsqtjx", "JXHuBhecVKPZlajaArMNbaIMzNSHcJPlSGanSyIDJfFjbNm") }, + { XHDR("kyqjjyandf", "tMEAdCiv") }, + { XHDR("fhyqpxqfusttzwtsp", "yqcADGQvsXUlzNDUaOdnJYQLznAUhEbeqNquYeLcXDwrZAnUulhrgJjShKPlWvczqagJZMCz") }, + { XHDR("hmuuesmhibnqepql", "bvYHDqztDeDRNGQkyiqlQiRsrGgQVnrRQCFhSmGmLXEgLJS") }, + { XHDR("vvihfytjxe", "wppIFHfcEaqKYzTsRSGTFNKhdUFyGdWvDjjuOEgLrwQDpKWtQGmRIaUfdDpqbpjJZZbUWfeTANU") }, + { XHDR("uhzwjuccoegfdeofr", "cTZGpaLMQjCzOfunPkTMmJBUYcNdWYrTBDmJSxIWXRZiNo") }, + { XHDR("jewicxz", "MDjeslAiNPFvnb") }, + { XHDR("wdxpjhrsysihtvlkbo", "WCasHiugswjPpKEoFSecmtprvPOecmDpjh") }, + { XHDR("obeghemq", "LKpzjZJbeEPmtVGrfOkLNenKlUiiarVIFcXnhmzRFRfULixKReLoODyLkPheSRaSLsWgpCcOMRzuYY") }, + { XHDR("mznbvpytg", "uLaSjNlfoeJCPCiNojhotzRoVLkGvbVcdNwh") }, + { XHDR("uxhpebnreqe", "nPnbW") }, + { XHDR("cuk", "sjoxyOcuWNULUifjGnQgXmpmqdVXIRww") }, + { XHDR("zcvqhgrxdtlgq", "PCyaRQtFxmgqLdSVgiIpQBC") }, + { XHDR("bldkpjcdnmnpfemtejth", "yTaMLZGureyupgKShlhKxBxxQLyIsAxHGqEynRktpPXYTq") }, + { XHDR("c", "jJHqhwsihiBJAFVOZVrGqIXaTHQYhKAwdUxTqVrpRDuxJmtFarQAyLnuMSXqhhpMSr") }, + { XHDR("eb", "cVbaIlrKOCofieiYKQtsOvHKiydSCHmCSNhciYJSHwZEeTINgqDqRCoFoxs") }, + { XHDR("ppcnsnuagtfzdgisj", "PMZImyfPCqndJJjJpSDAWvTyIwQkcAFXPtnKvblgMqHNSkRMwszAcxMOU") }, + { XHDR("qnccbchrt", "vBcAbyrEZinKBlomVD") }, + { XHDR("hce", "QYSAPOSSdJDznXFaUfJbCDSzNzjO") }, + { XHDR("tllwgrc", "BAsFTDtiQXFjETNnKQ") }, + { XHDR("tjlohmyw", "lhzRznMJCmHXNLTfZteecafKQVWNrKAmeUGMOaWPYkQGFqRwCZrOdKpYIxqZVWxWRdyizccKPntfu") }, + { XHDR("xhpiowbbyfemwuyhyrib", "YGrOwJUNDPUxeRtcjIjnpzQxM") }, + { XHDR("tvahzgxvwg", "OomnZPyFX") }, + { XHDR("soyffakcxpc", "LprImJhQeGrEibEeZdOZBvFuxk") }, + { XHDR("packlo", "aHuVUguRQYrmdoQ") }, + { XHDR("mfdj", "qEoVhxGlwOxGjyijJARBzKvfeCXYtpBNlhbymEZUkWeQKDNIPPHFcco") }, + { XHDR("kzasfoaewp", "rGoFlkoKcrMPmHuVrfjEVDTroEpPIsorahtqqDmhWOQbEHOofvbmylxVEfEOYaBrvWDiK") }, + { XHDR("vgfuuyhj", "vEElpQQpOkoNkGIolytcCfTVWgoXSYURxzEFleF") }, + { XHDR("hg", "YuTafOQZEQbQXJTCSQGXlcHnkWNenMwakejTcTJPaWtjgljxMRpwgRCx") }, + { XHDR("pimha", "DBofYOdUBlLddVAQVIVayJzo") }, + { XHDR("ogfpbgusij", "nmwnjIoFJOSHHCcInghdgsEoJfFlIRxYL") }, + { XHDR("uhg", "MLQLqmUICzkMxRLvSmazkBrkHlYQdPHkpWiLzGBirBhsfNht") }, + { XHDR("gngdrykgmku", "JCYNapRIFiGgrheSHNPjcqEznpOMMlPsUJybKAksYWXNHAGZlbbx") }, + { XHDR("wshswexixjbbjs", "ffJnyiXgqnJxGucC") }, + { XHDR("tpw", "znrBZoPNltCrLyxGJqvmLllnNTqD") }, + { XHDR("oxpupxazamlhisgglr", "eGZBRGBphNTYJMbsbPXKQNLSbiYmYQUnJnvDtGltWeOLjcG") }, + { XHDR("gkjjrkxhzsvxwbznepzy", "vYTvYTvhgGloDSoaGoXnrLpdMzhzmiAdoIFPCzSyfZiyLjFHIhrvPhinHQbBliyy") }, + { XHDR("miwzuofttx", "IIjUXWmyzVmcqHrRxRDlINANdGvnMTgkZIxBKjpKooWHC") }, + { XHDR("lcndokv", "YhYFajmAtwdVLAAUWEIiCcVAXBcigvMbAbbJfICo") }, + { XHDR("kbn", "mTukF") }, + { XHDR("ug", "fhbbPtZqKRwFHRFhPVqvcbiwfbUwKAzCjoULUw") }, + { XHDR("vethcztddicabgeaj", "yJbAWLVvMatJuneMrPrlQvuxQVJNEMRYWHkeKwGgSJmuNsZxS") }, + { XHDR("id", "UfnjMxMbBhtZKaKNEVcKhSSLwupRZDoCkMfxOnYHJZMpD") }, + { XHDR("frkjkhmjbqo", "DWKgaDbRlyPsJODwtTyIvCmBiIijlzmXUqWXJertDmbKlEIKovwsWZHunZigWozxMoTOxjw") }, + { XHDR("zpqwb", "aZTdyANmagKGRbwSv") }, + { XHDR("wpz", "KwWzsZeOhVwrfhdEvymHNWxMcFqkPgmbpcrUURoinLOIrARUsjXQevnwgjMCQJSwyNvcwCNkX") }, + { XHDR("ossszzmqiou", "tJEyDzqajAvinVRbTErSZNbvbOKCPcUvqqAtxQOGLLGMkTtBCQtmBWdSwLsfwY") }, + { XHDR("bfqhoggqafyrpkmrrilf", "GFzEBNMTekcGylbDLIjsgAppNcNvkWLoelkZlrwenvNjMxhEZplUdXacRTYzHAz") }, + { XHDR("klq", "cmMaHQYONsxZFhMslZgxPuQSCRfvazZvepTBHmqKCPLsnfqSwAl") }, + { XHDR("wojytmbhq", "AiTdudmKqZaUfeanIAtvTBM") }, + { XHDR("jdlgevgr", "KRXoMyXIemfwSmi") }, + { XHDR("dkbeopogvjnvcdf", "pwhkWxzJswCtVfNdqzyWBBfhoJPGQGwLkXbHbHBjCRWUwNBRxyRQhbXofwKanKajVfAaMYy") }, + { XHDR("nnbnveqzjoqtc", "OZE") }, + { XHDR("qzdigfdk", "IuXopaDsXExViJTRCYWtGeXCnNbTUWwDXSVzfzRnEdfPs") }, + { XHDR("psmvibxzufmvau", "RIXjAcZrryinXnfK") }, + { XHDR("i", "yswqHiwUGBJCuYtEBQDsVWUwPBbbbBDOCNVygGKAefZdlbepUXQoNboihFgEXHwYn") }, + { XHDR("mzl", "xXLlILsDW") }, + { XHDR("soldgwlxwk", "tyVbgowOvJhbVyGvqvXLBuISqHdCUSBXzVBYFmteXVunIfQcaZHaKCtIxqngZovLRtBlbKN") }, + { XHDR("fqjsfryhyfzupn", "sGoaZDQwPOxwhkYcGfrnRjanbEHjyJjRYCzvkdrmljwC") }, + { XHDR("xnyqtcdrqupnqzecrtfq", "hxjhtIsKUDC") }, + { XHDR("ibxcmyhkigklmej", "MVRBdOPXvYTADQGNAYEyUvmdyikPSlwcDZPuhzwTEEHsRUCjUaHLhNrbsAOyPgzcROiruGSwYrPYsYr") }, + { XHDR("bx", "cLzovQKXILVVrnTGxVNSNxZXMpunQJIrsTMAyrsgmdRipoLrItkBRsuCVPaNMOlPMPppTAYbhRKRO") }, + { XHDR("ydhung", "nUgSaPUhkSfYGLgKYCVwaSwpaaEYKWaZUuceohaMgxBZknQECmqnjeHGUiFsUCsljEWg") }, + { XHDR("k", "GYYSAeqTNZsVZmbupjcLMvaWGiWEnMLLuKvGquHQm") }, + { XHDR("bvqexejttbvtcgm", "OOfDHrZnrFQQWFZnlqfKQXkyFcX") }, + { XHDR("ostomzibeivxxry", "vbgDZ") }, + { XHDR("hykjujpsvyguvmlse", "DUFuNNIZGrkivEJbNJzNAAXdkKWrdrJrrTMqPjjvoDymKnFYXizMmtJUae") }, + { XHDR("z", "IIHvhklrSusqulsQxioiZCXyiszmzpokvRNKzVOuebRaGfgBoLPWHrQgGZAcpXkNOxyeERXzozBnYB") }, + { XHDR("jvmeshclqubhrt", "kVlLRTaAVkaVLXKjgqpYOjaduaVTmJvkmulwSsNamkzDxGGqxzdZhBbjDPZuLRRFxjfZxmjqkWfRGVNw") }, + { XHDR("nwceqvulvfswwsm", "jfChoohuIrEiBvGMypHcW") }, + { XHDR("gkcbclllqtauejbey", "tPgefXsSvbzNOtAdvdcgqEbMpNiiPdpbXHsOkZSnxQcBSkbonJVMoX") }, + { XHDR("hwyqy", "ovYkdUgCoVwObEsY") }, + { XHDR("cczpkmdaoh", "dvPMXdLijgNsayjwNPZWJDHGCNvLsrPAT") }, + { XHDR("mdiw", "m") }, + { XHDR("lgoslxiydclechqgqgn", "KrLnYR") }, + { XHDR("mkhgfsuxzumsdwfvjl", "piZpJKPHqnIRoMygLimvNPnreYYLuyvPm") }, + { XHDR("mnzlwe", "SVZu") }, + { XHDR("abdjytwkxaplpf", "YxfckXTHwqSOcJyaihQioiHICYlCafMYgKTHDkWxsTBgVTqvUNJDDtAIXGNdHXDgDRjwO") }, + { XHDR("nldixxgzq", "aDVdQotzVgXVxYykXjDTJgaqrmJDsEOdPGtiXzLtrkCbjpQ") }, + { XHDR("htnjxzrfvgqevkdx", "mvmNABxFywFeTJZAZMvX") }, + { XHDR("zmhumrsgbweefeekbwra", "cvtktHuVBTnaCHbMiSRbsgDejquAGrfEXq") }, + { XHDR("ewijhwlsynonef", "kUxhnrKdOdZCcrxSTxoLIaaCgd") }, + { XHDR("gemvemdmz", "rHYuJYCGzKLnDKQlXjskyiTFuuMRQFXpmyYAAkgyTBa") }, + { XHDR("kwyieg", "qoil") }, + { XHDR("hfdveylxkdxumdrmjfkg", "paCNLZYOsBCbPFmuPcAonGwcBkEdDJTcIA") }, + { XHDR("ruueb", "eMwWAXlTKrVOYTxTpHXpSeLLEZNriYToyTVGCmPYDRuaOmAagiInwYoihXxy") }, + { XHDR("eiywkalzpo", "sghjIreWyaGgkbVzAnDxeXRXQSWQTyPKHaoMwYllvYimxrNHMrQQbpdczpCoD") }, + { XHDR("wfdyiqocfo", "tjCAkdwJEsdTAxUfhCjcCqKJcRwBrgCdqCSzcq") }, + { XHDR("xeocdnmvmybpkpk", "lNhwBwaBEpuiAnKzFazMvigsLZszhxRUVrdaIEXAVIkpjsBm") }, + { XHDR("tshxzvakvbkpkb", "rUUjoLdSFkQEFWZPugjPOPbdXHdHEostjKgIsoICqJgVBbRmqXZCAixCEFRxcLaq") }, + { XHDR("dkinryhclnfqyca", "SwOMlEbZWCmcdvaWYysrIsRkyrLLLXIWKaWXfMxFkuYbLfzH") }, + { XHDR("s", "yKpjkhgPBGleJFtoEgjHunpoLcyVEBFFjadFfWIscPCXnLIdyQjzqdELieUhAcjfNTYyOLeQrUaIIIH") }, + { XHDR("kzhimcmkczwyuleht", "lwMFGZrrhZDDY") }, + { XHDR("m", "veZVQqrPfgoDPHABKXWRuhPkTI") }, + { XHDR("kdgcp", "eiBEoQgOpknPsqzXbGEIMrnnxvxcKAoJXTFFrmOHuLCMOpAUTiWmSeZSqQkmvFoQrm") }, + { XHDR("oxbdzhevxzewd", "dLBo") }, + { XHDR("ocpmmfyashy", "WlUPVttiNgimYNyTGvsNIhRFzyHWzwhDHgdPUSunINGkkuApfeAhKHxZKxCVnQjcHNDgtfVp") }, + { XHDR("jocdwmxdvqy", "lokiCSJogzQcSzvEZMfFwTJarTYRkQynPf") }, + { XHDR("qofqyivntzcjk", "hy") }, + { XHDR("fljwrpbrojgwednso", "ZniMBBuFMxCKhBAQWKYbRWWnsymADzytlZbXTcPPXaKTbAlyTFVDmQDlPGQWoixmhgBzmIn") }, + { XHDR("ktrkarjgkgeicbj", "VeAKbGLPeRhhAUghuhU") }, + { XHDR("ba", "RfPynZrBhaUeqaMtRqCFKSQFGzfZjvNzBfgCDxzCcHwqUootOaKitMkOLSUsEOftHcZEIZQhEMG") }, + { XHDR("moyxiudcosxhluflfb", "MxvBqTUUWzGtuyaorvdBkqXRQrxfIpRSttf") }, + { XHDR("lpdfstvukm", "BPYHaiDrXaVxXAZgtUJoOmUameIfCMlUczBxnyPFa") }, + { XHDR("gvrndemxk", "naRWAiCweaHpGzOzVdxQrVOzJGzWAnOCpgbhASNjTYQvKpmJMnXYiLtRRDpmR") }, + { XHDR("mrmw", "tDllVsxxilbyfLFpWixHfovpRCeSNCprgKQVVp") }, + { XHDR("boirbeuuexhhqekoqpld", "TpMMvnKpYHbQPrlqclhsVhSaDEUCbwvDbK") }, + { XHDR("nceibnsnykzuhfgif", "AuGmcVFjLvdZfzvlAbqpIfcszzbSPRkUAFGNocaTGeCjEdFwxITZuYqrcGFglEeKdPvXhLBy") }, + { XHDR("wvorpjpdspuytsgkj", "FfbEbHFeiPQBXAb") }, + { XHDR("wpahpmnmeynyeuvz", "mNHRFhOI") }, + { XHDR("howhwxfcxxxekxbpdl", "fEZKTVDVXBCgyDHuhRAnMRBGnAmLhWGCawPOVPoTciCkbMhecQCD") }, + { XHDR("bmmitx", "AXMZocoXiASjezNlaEzqiEkOgkVSKfvFrhtwtwwghgwLtsjdvnvtibEWMhoVplMjyC") }, + { XHDR("vdkrhrztpx", "qbjXZHXNWrfLTJYJBxdv") }, + { XHDR("wqdmckiqmvo", "VxhnexEkhLAsPeuYlMgdtmzjerrGegPifHIlmeLQHYgbRqdVpWSipFACEMhMzQ") }, + { XHDR("y", "tLwMsK") }, + { XHDR("fltpuartr", "PqbXwMxuDLtqPrfmTb") }, + { XHDR("ds", "dDIeaIo") }, + { XHDR("ugfbmhllp", "VVWKSvXvKuSUGOOXaoFqcYMVyf") }, + { XHDR("jqoufspuhaqofblnez", "vippxyDsaQnvadQBfbbntnXShyssjMhjGvYPTegNGRtICtuirC") }, + { XHDR("wlymrrbftxjrhqmgd", "FFZPGSDYcpSXcPFjhceLNZDYBiEwN") }, + { XHDR("yqpijcrrsjimq", "zlLuZTXcgdzGYmOHcIfRHWV") }, + { XHDR("zvkmohuyqsehxy", "pZLRNvHALJLreIlWrgqLnEkUIggJmmtLQJJnUnhMTuIidpHbucsYdjeKWZvTgeacRGsolTSbhV") }, + { XHDR("abxfvnlwhyoz", "gMKCgzzOWMFpUTempaGWQhrCDMiNVpxUgegUcmxCItG") }, + { XHDR("oivwemz", "lwYHanTmlmeWCvCVHFlOrxzYBgdgTl") }, + { XHDR("fdrrqmpghljv", "zFzpGPNVSeKfVOoaJLljMXbwIwqURlcqvJjwCb") }, + { XHDR("fs", "HXNbnJBgfkpbgvYSmgGmVuLZicCHfOMKUQYKkYnHPbfnnwNMrkrmJEKtMZYGzcfu") }, + { XHDR("bazulgff", "rAeVfIiNJCwQdOjDwtJzRFDFWBpfizKipdaghGoUuACaSRQekREZzBvGOScYnFqelktbQyUaCOLCZVE") }, + { XHDR("j", "fiRktEIupFUGxyLfRmdfZIwPxThlNtAhSAsoaDhSNIDTEMFDjtogeUtoUKlmgsxNSddFQdVTyWNh") }, + { XHDR("cctlnkkcrkvekmehpjxw", "pJOUgonOSuNlSvgDvVAfIBnrMnwXJhfpTRQeWEwwSkYMqbzRuwZAywZMRXdRtjBqazjQLcAATlFwg") }, + { XHDR("ebtscpyigug", "mfQMHG") }, + { XHDR("omwyxtphftlfwk", "KOclsbGkaZQwOcRyQDhAHIJVMJeBUpVnZkzyXWhJxbaxGgiIURMGMwPYLRpyJmFYSOolIeBqpTqhzSKg") }, + { XHDR("msvxcmbu", "TxFIWFRENDGxnJCCKLecTjsHXjiCvUYJTsIkmMhRamYe") }, + { XHDR("mmakfzebapx", "mdVxAhvcaHvfzyDmwBoKIWBRJdkfSRjvkLJSUjYWqmfCNRUBLIdslrhsaOBYlIEvnqy") }, + { XHDR("yjhxyexrkuatkdg", "MPdQwtrxdVabcYQxO") }, + { XHDR("yluvavtkvnluhdwnrzo", "se") }, + { XHDR("xbfhwawjqrygmrmbxam", "QTpPbNyUXuWa") }, + { XHDR("jn", "oDJyOvOLhna") }, + { XHDR("dzejdfthnflvjkzvyp", "KeerdUWbSVvPqjYjOPYvPdmVBAkGhaGOPfDYyZjBYPECEBDiyQvGxRXwqGG") }, + { XHDR("bdxholvxbxbtppvm", "QESWISNtiYAsdi") }, + { XHDR("lqwaqw", "uGCZiLCzxVAovrJqqLzJuaTgxdsOmPkQFdUccEhOcEgAaMhVaKNkojkpwlQDWavjfRqUz") }, + { XHDR("oe", "GFdfyNcIihvSbQfAddGCNmVrGEpZEidltDBBfAxSHhowffBJlGMZHSlAuGZFGJU") }, + { XHDR("vlznayjdqmb", "OhTvHnqMuASAqEHwTBOyvsNxijBsawgellnhhEffLuJhsXHZ") }, + { XHDR("upkmo", "YWCOTxbVcEIRsPAiluoLwwghQgWegTpfrHERE") }, + { XHDR("daivd", "ljjpYhlAviXLSXbTzfGlkjeMDRAPBVQqMQAKRPVaMeQucAKiFdMdYIl") }, + { XHDR("g", "tPmSAPHovhKfvMUEHmPFNeEeRmnYMcnl") }, + { XHDR("gmjmjudl", "uXoCmmznIZmXsFWEhFbmHkfHNVDSKsQoohfDJUXeKeBjCrUwOJyUwQWJffufbOosDGENbepNrhNibFw") }, + { XHDR("tzlwnugpa", "sLOGRQQsSKfounNpeuESJchtOVAZCTUZnCvpCZWxwaGxhsJXjuYuYDiSbZRHbJQOFJhnrzwcsSFxfc") }, + { XHDR("gtpknmeximfbhlgzlqk", "hKAqBcrJKmr") }, + { XHDR("ulsjx", "ZNIXXHd") }, + { XHDR("vfbxulbv", "gupIVKeJESBmZrGpuvXZzdLjJjSUCtbkyuUuGOZFAnGoKoiFYaazAKa") }, + { XHDR("ffumzwjazcfatijn", "GBxjVDSBchNquDttHRutlyRObtJSucCUbgtcpuDuZrkrbTmksBEesSDQIExkYmsUo") }, + { XHDR("bjojohlegsuppveoyxc", "MwyWRVHRnbBjFuPgKrdQrTXiYrtXDKeUJDXiMiJplgvrRQlprxJdcdGehggdkspFSOmqBdQXbYT") }, + { XHDR("veendj", "pfAGZpLxDVNRKIBXgIarGBZJkLrQfz") }, + { XHDR("mgsiryvpyl", "xulkTvekhskctwCEvnaTiqPkyHTtqBRxHMmQzKLdmePFLsitwM") }, + { XHDR("cz", "vsaxPhV") }, + { XHDR("fwxycpjyua", "mHpfCuIzEj") }, + { XHDR("hjafnpfmzxuurytift", "NWrUwUflTsGfhUMfKuxpTWibhWytsrNqiwwWRRABKbckGtbadDd") }, + { XHDR("vjeachyb", "XvYiHtEXQerWplyWOPHJTTckbRRWTodTncyJCMZigJ") }, + { XHDR("ufw", "yrlDwEUjKogZODGpOUVIZEnnLhomENpzNNYxkrgKdYWvCeJoJUDkpLRQcJYnGSSUATprdENAdxZiBi") }, + { XHDR("urdey", "aeDIMV") }, + { XHDR("eryhoyvntaj", "NTRObNiDoBbeGcBHsQzFMPrKZUVzihvpwxVufoTNpYMmBWohhOwVhrBOhtMilTPLCKThVdXM") }, + { XHDR("q", "ZbiqpqjxsulcSKsNMGxPplpvXcTzofBLJtbtGtjyUiqvpXMeEdhSICUqvpzIdmMbvrQlMZSyxo") }, + { XHDR("mlolappwxasgljuwv", "qMywvNQSVjgzTWTbPbByIuHASpRKRCxNSeCVLFKcVxQaqDSYxovnzdcHqQuQvgiLba") }, + { XHDR("hultc", "lDqmNPacR") }, + { XHDR("vcamzxf", "omEiJQpaaVcfygMobKSePPIsbKiYDcDVjlDEcGwhsGbOk") }, + { XHDR("txmqaxb", "ZRJl") }, + { XHDR("rzsg", "KXbTmijOjITeOprVndXKYIPwqIHEXrlPpvsIbPCaCYJQOZ") }, + { XHDR("woo", "chjGipwKBeQOSgZILLhkjfuGxSoJvAaHbLNrfnDXRWavLLMfSSZjSEiqSksleiOgaeVsUmxYEKAkHcf") }, + { XHDR("fihlmhq", "kJJstbMpAcxETQDjNQvyDPGRLBMOajgRKOtqiUbSPtJXmDGrJZCTOdoOusYXUH") }, + { XHDR("opzzeieyfmfhbbao", "STTaakLtqZKRxlZlSKbIOellFvTXtXPqbccVRfnSKuBQBWxfHoE") }, + { XHDR("sowuedqbnzqj", "JxmFJHiOUyCmtOxjcNnfyUTzkWSbbsIM") }, + { XHDR("tvmcuunmbt", "EiKfprA") }, + { XHDR("pomzrpprbjksbezccnp", "peVsefKSbcsrSyhzejopiGYUvTkt") }, + { XHDR("mheqagcuilymhzcix", "BKebHWhptxBQwyWFiQuPKLnNAAiueldGICXANwyqLXiyz") }, + { XHDR("nzpcmyxgyn", "ewAOPVVwOUTYFdWDIwUzVeAlXbBsXCFGJrgsZJaGzYsMRlqeBSNuZvylEenBhThhNpwqooFwYNbMhK") }, + { XHDR("kcxfyy", "AyGpzgtU") }, + { XHDR("gbzxhvhmzvc", "cNMolVWSFwvSmfLFzbsU") }, + { XHDR("aedkl", "GjiQILLYyEdbiLQKlVeClqDB") }, + { XHDR("xdjtbluzbqjgmrnjddkv", "jyBYXQRaCVMsQlkxPdJhgMRukOVGQIPTypMNXNBNdivxxSesSEhORIDPuVnHDAEdPC") }, + { XHDR("rstuakmmfxexwc", "TMgiGlOKTcxtYXqofNCo") }, + { XHDR("vpbogfuhinmpfnhziojo", "iNAAh") }, + { XHDR("jdcfyfghsmtufe", "YbgFXCaNcZDFWPeRwdUxSFioKzesFvGMbwPRpWVoQeCAwYHSSsANqo") }, + { XHDR("ezqum", "BifNvRnflOMghGZdHyIPdiuZYesqXqCkoazqPxZOTqyrljmVSfRnRD") }, + { XHDR("ymorvu", "FcBaadPYpIoDSKECbKISMaDPqzmYznBiIqnzbboeSFOfaniTqnEvmGoFWncNzkjqvexQQR") }, + { XHDR("vywnznnnqvj", "lXOzHJkJsLkwausUCakaHnvkmrUSOCPFQESfKaVK") }, + { XHDR("byplaievzznhfby", "dAtEpnkTOMcMffzKmSwgOGuuGMUTWKsKfjRlrecwcbpeTlpqRSUrwvsJOTxrPLCphIvUJP") }, + { XHDR("pvjnfgffbrzzow", "lwxhVmgKBwTWJMQYHHnxfhAYXtgVTOnYMtvaPkRUGpNTbrerko") }, + { XHDR("wgnfcxqkkdtp", "aJDkMkCzzseFOjicYGZhVIkdveFkeaTvFvYdVRMzhf") }, + { XHDR("dk", "BujuYApSCLpEhpWhrkFLOmBBzppNocqsapQqxxsrxweqt") }, + { XHDR("hrlcfsezdwe", "GCgQEueDxodtinSvbRVoOceMBC") }, + { XHDR("aimkttf", "MyExVVzCYNBohxrWFAKCCttOUtFlkXk") }, + { XHDR("ox", "oAGnCGJnUoiSTZkbBrEfzfQbIVOJAbVPTAReEJLqDUEJPeBJnaCkkTutdokyxZ") }, + { XHDR("qhcfbehgkbwfovyvbbih", "TjbnkXHaKWBMzBlVgxcIUHdpmLkSiDzuhWEIhXQMKrG") }, + { XHDR("nmqdxt", "KCTyElFQbhZVKGMbKXXfVwRxvINjwfARb") }, + { XHDR("zwvmipin", "vVAMkNCbcSjRpaflRHQEFjzBzAtktWGXiZXCECdohkTNjRTuZ") }, + { XHDR("cvduqvqzeplhgsfqfrmv", "KCPhbGwEbXnkAvXkylSV") }, + { XHDR("lflvs", "cKirvXerYHkZMdaWHMxGJgPCs") }, + { XHDR("whxqghrxfdaqmhxrsvc", "pqziBiBDIddgn") }, + { XHDR("dqjeuy", "cwGUvnbGelnU") }, + { XHDR("msctrcmpfwljl", "ShrDACGHRgErGBubrixbRLtSbQilceYJPSCdrLthiInUhaoWcYfNUI") }, + { XHDR("twcwmpvmrkx", "exBNvznHKRiSWzRYreQoBxuldzewJrKQKMXEVZSQQvfIAlHBBfBPyRjf") }, + { XHDR("iwlrzunudlvk", "WoCkUXRvojfaUkobHQxLTMbLQXxjalaqpSqqbWSBCWzvzzWQdmEnEZvXk") }, + { XHDR("ewbeqwiqcqwqyvizylh", "UTUtrwzAWoJSAlWhdzPvBV") }, + { XHDR("rgo", "DDdsJATmqIfAJbsMPBgRGXRKLMeSCTHqWjdOZXPlxkKQuyGtvgqZaPXePYo") }, + { XHDR("qdfizjyimvtocfupa", "VJoYraBaKUbNdsjODklrRZbWRcxIQklPV") }, + { XHDR("btvmassdsmrpigb", "kDMylTtRyGplXxNtOaDi") }, + { XHDR("dwrsdxraqlxaqyuaqud", "kzvfSDzuXIp") }, + { XHDR("of", "Qny") }, + { XHDR("sekhwgnctazjzhsu", "OdYnKDTVsEJAwkjpezU") }, + { XHDR("olaebqspmqze", "g") }, + { XHDR("dm", "SFNqmdUdhUPbAMUdqxCCYvEhZkOzabPnBBoKWdJU") }, + { XHDR("bywvqj", "bEGMqLKeMtHpmZxWONdPuBWIeqElvjHqhtZWZTfecemUxFTdSAyVdbCzSpkdIfbEdcGTNFaxksDuhNEO") }, + { XHDR("u", "SDfgevnQOiAgvczmEctnECzVyN") }, + { XHDR("onpjbfexikrlnmbmaqx", "AxlNytNMyYHWSYMaGhSBksjJMicJjxlLkXnoGvHBlRtSTsttxAoRpYVmrnpYvPJdeuXEdSKJt") }, + { XHDR("xrqsuhyhxyvqd", "KSeaaTRaQyDoVaVdmFwMQluKiGlxonmbSSYnUERIwUiTREzrJlrTdkkcpYTCJgOaJLVoOKNibDiys") }, + { XHDR("ctifyaghdjvscqkh", "PYYFZHCViThHFtTvSHflYmzdXtlLgnzdarNPfDQgfTZbKuJLhpFtGzyUBAPlLpmmiMWqY") }, + { XHDR("tuqvspmlxhrwxzrble", "fxoJAgtyXcgDzJztZzXWJXDFKbuWIgWMryRwj") }, + { XHDR("vucgbjwgmmfih", "wszRbsVPZdEuHFQbtakdbSYge") }, + { XHDR("olce", "kijyulXkXwMWxibYGFNLZOyGAPUVXgruZNRNennqFEkjUbFXwnwulOiWKeLPtGDWDGGiDhjiYmGWO") }, + { XHDR("fbbvzdlhxafyykreevt", "ZvxidlHFvPdKtwgioTaeopehQjKAgWurLOPrMHrJXLMfQDOSXHDxmhwUPrXDKeMfECLCwruIqaAzkMae") }, + { XHDR("ghpudkxhia", "GsWWVTrZdtKjMXBQUHOaAroXFyiazGbNfGeaLpTmcijWTp") }, + { XHDR("eueeijkprkpjisqigz", "eKIMfFGmTVbpYYHFnKrjstIrIwbnxAoitKCmSiOJBifBUY") }, + { XHDR("qlsgvntmxqdjprw", "dwYNYbdChLetm") }, + { XHDR("xqjtutvw", "uigfDiAdvqwShgzEcAHhlIWcsHWgYrjxaIbXstbxuQAOSiHnMkotzLDBQVOYmb") }, + { XHDR("mjfsvlgdwjuhjmotzgqh", "WJByljnyxhqIRHGOQiIsDvuTodcHYirIkpaznLYxfnjBcugOSNTNkrViTetfMyXTaPr") }, + { XHDR("wiwud", "pWJZIJPURbakvQbQUoDhaaKwAnxxUCmGLpYtqLFevFaiEQIOqsHOTBgTkdnfQoFONLCZGUrjd") }, + { XHDR("xnajxszyxmqweughqpmc", "exyzjgdFaYwlqzWcOcTDCWgYiHcsJ") }, + { XHDR("r", "PvlmDUXBAaymHlRoOiUTUxtrBaUpZeAxztXljMPzokmpAmVtkEMcVpiykzxOjl") }, + { XHDR("dzgqhrrivtrnnne", "mqCYvedEPtfQbROTZFpBZZYLvjqlZDfZHEeHJlztzcJRjNeeWBEvqKps") }, + { XHDR("knxamjtiojgme", "RQYjSKWZffzNoGlJcDZuzTIrumlCbkMNVCLDwcCfjVMkahLFR") }, + { XHDR("l", "JnKbEHbCAnaHpYXVkuDRlSekzdzDjQBWpVUWZTUQs") }, + { XHDR("ifytgojlrbragmppdy", "DdITasMamXhCPMFvHZFWAczONgvAEIiKUdKhDYCeJLONfiNGiPNBBUKGnwpTmYadoLg") }, + { XHDR("j", "QStxmgESdCXZxaICGsPejjvscKBBRzXtDxKuWNtqSpkBhDLhXBMFRgJPiuNHTojJltq") }, + { XHDR("pxbdy", "UneGVsVoTNnlBHwpbNiwqxEJAAcxoDjjLspvQrVQWdv") }, + { XHDR("ttpvp", "jKNbEHJmGAtHyiVnsCftVHvJAcMdTrYmPPMgdMirjPVYbyTBfOQqvkjCINcPvMQijybNvkayGg") }, + { XHDR("iibmouzoid", "h") }, + { XHDR("p", "WUmFqXWxfCmOqGYjEHBAMhSA") }, + { XHDR("csjaiyvgfqr", "MjpHHKeybbb") }, + { XHDR("csnwvjkcd", "LpNmFMGbWEzXSrhlkMTaoBpMMSukCWhGDblpzRXMNcRybtSFUbsNIHM") }, + { XHDR("tupa", "VdVYUWhdlJTRvAPPSVBXUGLfjeZJeZpzjxwG") }, + { XHDR("nfwnicq", "coJjtFpHRIkqkPISvnahJQBurccZvllqmyB") }, + { XHDR("hftnlr", "yIvsIUhavsIVpWuCUHlPODTEFFIMTCZbqhtkbCwIbvLfAqRKDwvAHBXaskXJGRHXwyLTBjpSjnGR") }, + { XHDR("kivbrauehklourgotssl", "JaDAalIrrwtRMLSWVPXPkxpBWLolEZhmvkVrNTUNovjJJTRUtT") }, + { XHDR("pwihnekurqdqwjjgoz", "LtjaRYuTXGQCvG") }, + { XHDR("gucavhugnwvu", "fGbvHYxgJht") }, + { XHDR("grxqljydsfphpnc", "puLMDQUOXMygerWLqEGlFisywaTquiFFZInPGRIVlemgrA") }, + { XHDR("sckgclkaxdzok", "QUkZPlegxVHMGhfDdyKXCitDkDnsaeZFOkIFdWNylNOspQAGNnAHyaLTnDfTUlplfpHz") }, + { XHDR("iswzsfhqnxtos", "axYXblgoOAClPyeBvSOvLIXBqNscrIjGPEtxrPkxiDEMeCxuCsZCGZ") }, + { XHDR("lgoljsfrid", "KQVNgcPUnLqIsQqEBNsgBcHcmXGgerzbyzUHaiGmWCDneRDXMcCPMtx") }, + { XHDR("t", "tJCKceVzgguVxRzSBRNCJPlcttRqiIHghZmSWUyzuMMeonZXttnjFQumOKaQYDQJSvnVJsdlAiu") }, + { XHDR("cmwwbz", "DalbtZXUioTeuDdxLpekhEKribAPsWfsiCtJJsVOEDUAEgErgXqQplBp") }, + { XHDR("rsmgxe", "zPsuyvopzESCptjzeVcaHdaLcvBFCwadaKMqrzmrlydJ") }, + { XHDR("cckwqxy", "gVmsHTxWYTmIFssTyjwCxaGPMUAuIAQrxCLhRXQhfAQECCYUYJxEfiyxNhJUAZKUGQ") }, + { XHDR("wjfbxtmgyaylpdmcobcc", "RbYpKIHFJtlJNktnPNsYFoueSoyMPWDAPxSaFJLbHuNRDyJlX") }, + { XHDR("fdapsisaeejsh", "oMFOtAgcLLNktmizLFHZRDVD") }, + { XHDR("cqjogfaamd", "ONsWVBnjmFGc") }, + { XHDR("us", "YFvKXJHJIDSSSKNBvAvVwndjwUXdDVYrcXiPBPhqUZNfXDascYFUyocYCukAV") }, + { XHDR("nwujpgsvjpn", "XyDJWFtxqILE") }, + { XHDR("rhpm", "Mf") }, + { XHDR("kpwmj", "OUFUgwLolxHVTxfvygINISrPjnHdntjjDmtPBztMeFqpzMZUaBfyQUfV") }, + { XHDR("hqwtwisadhrfhjoyqkh", "PMVHOmNyyjIomshSwACOyppfFXHimtIHiTrCztPwhuQDQZqHCdMNfLcMag") }, + { XHDR("jbfypnbfflpgdkstvd", "UaGQfXhWmpCnfaHoDpKgrjaSJxQOrQjGy") }, + { XHDR("dtsmpg", "IPlhSWNYVlVHtUVvBNTrXfXcGOlecMynqdRFmwWkgfSrrHKaEmmMLfNJoJQnqhTpetOHitFwQuymPnC") }, + { XHDR("shdb", "MSTItJcHbZdUNUtCWEvkjCjNInByyOlpjRvNrazsNaHWAHEaZMhe") }, + { XHDR("av", "qAGoqDKjYdJBvGqVJpPcSFbQjXOuxi") }, + { XHDR("geufurnibrabmbyuao", "pvGngoKLTiJVxgVwaevbCdNwJCu") }, + { XHDR("pncgojqhondmuxzta", "bcevZdglDhJHxNgpRzDqzrPuRbqoXSCbxvpWDy") }, + { XHDR("bhmsksianerpu", "TsaMAalzTQNmqwNsFgmoLkBOWWBxjrwZUgaoOgwE") }, + { XHDR("eri", "NqGakXkWesfkpjFcDhuOCGIknkUfQpNyWz") }, + { XHDR("n", "KSLWXZCAUqqMqpzyMTMnKnRscaoejjlvEyIafJEmPinXfhBprxGgyLCjfGyzvXptnbYGFJCggArekg") }, + { XHDR("ukkbermgarmaxph", "HvkkPQOWxyP") }, + { XHDR("ienldliowffnljncu", "TjRCPhpLCTtNisWjvcIkuQtXaDwoDMoPrMoFnBmLvYoPvWvwRHocvMYPXq") }, + { XHDR("apsomcnofqga", "nHIHoHDPgFFAsAZSWTL") }, + { XHDR("nwik", "rDpvWDEMdgEqHXmMakxCPHDiokbeHKcHPDwiXpSNFUQMsHFuKiFkzDSngjHnPJBMyNtJLbZY") }, + { XHDR("raaxvcipwnpuaxry", "QqwDKjTMufHuKBTtABCdlQfyOWTUAvSXkXZKxsWFOKcSWvPn") }, + { XHDR("shureppfmhifxpslzu", "wwrWkobORxUeBsuiAdXTMrVifgtLBvuDRXjaODRpIMUuSHfofToRcImFpitRBSppypqnDcBviJ") }, + { XHDR("pqjcdohckjdzkc", "vyrVYvx") }, + { XHDR("um", "OrYHFuaxsqbxWTDbowVaNEQZdiNpxNMkQpOCRnljaBqTGipJHHOlYhvdmXBJ") }, + { XHDR("txxbevxm", "nLrhuOhDpafDfdP") }, + { XHDR("rwiraoqmqcsnhxwdel", "sYrHBQJabojUGrjUuvHKcoVSa") }, + { XHDR("dpyxbthrsigpacqa", "OqyjyMwalDvzohydGIkjakzyRDTZBkqjFfgvvWwrCoIFidgYvzAyd") }, + { XHDR("mzzvpyshfauoqelwpm", "uZeAJgvevAhwerqfVbqIYXgybwzUQpmKISoseJXjfPtJdKvT") }, + { XHDR("kb", "IWUTwsUo") }, + { XHDR("oknwiraaskyaqerzjkp", "ue") }, + { XHDR("nottnzsopfj", "OEoCXBYHXIDvUoDdvebLODBDKJwgdMboCDXmwkGFRNrw") }, + { XHDR("ik", "WUGuOrUaFNyrbnUtWspxeGohHwpXxDjPjdKxKRa") }, + { XHDR("tfycwavtohqvciobeai", "uwncuyxWIjTscFSmdlhwDkJgrWMZKNmpLXvjgvLCIlWBqxMTnKxJtkXdrzdYVXOIUCUuEKUehK") }, + { XHDR("qwctlzxzobktyrycx", "HhhpdgkDwMYBhjhcFetorZKdpVAWZMBhMJtSJfMW") }, + { XHDR("heckamlspxnmzhrui", "FKCvcQMCmbOxVWGbZUmpxVOSrVGEfJUDaRtjTkmJQrbNWDuVElYSIFgWUIQVNCoxjQJGsqbOeYze") }, + { XHDR("gzupt", "mqLIqXeONfgTKQdFQlDYRLMdSVPfFvNhQbtcSJtFjGSLYWxVWcnHDqQqZcjUpXKWWJ") }, + { XHDR("rsjmdbqbluowvyh", "PpApugaUKcUVYkHOVuyMKQ") }, + { XHDR("go", "lnmSyZCtWrYvJymoCDBEDxDlkCrUucAwwfu") }, + { XHDR("saljjj", "pvLtEQuZxhz") }, + { XHDR("mohpmmuvlvtahpcequ", "CAuabkYztjrNXCWkRUjQxzXwcpBpmmyqYlUNYnOyLQT") }, + { XHDR("rqvupcv", "ZXgWsimgXXoAIweL") }, + { XHDR("msuuxteqz", "EaFcaqDrYDX") }, + { XHDR("oyyybvcswnhnmxrvawm", "vJDZVxIoSoCDpYJCCMApcaWmNFJJxQuLKIFmHrEawOWaymPHLGUNvmDrmnAcpEBmezCNwZgAEvz") }, + { XHDR("brpuilgqlclllmzxzoew", "hOSvvzscmEiIovcavnAkxvSJtrBbemdPSuBFXqlZAfxmDAXFDw") }, + { XHDR("ginddfnpxzcitnha", "hayQL") }, + { XHDR("jlb", "RiRiSBIXCezECuQlDhRzbwvmHRqAviSkyZZscTaTqJfXFQMsKDVSsFaPcbVFkRUxaWoKIbvGGBHqN") }, + { XHDR("xtxqbptldbrucrgvyzvd", "Q") }, + { XHDR("rpqvurfn", "lvPPuYdkcPIYpDhcfSszGyFNQXVnX") }, + { XHDR("qcpf", "YeZtRbHUgjRHHfQgmogSpbVzKjBioLg") }, + { XHDR("hxvkctkwrvyagllbsa", "yhrSUaSuoenWcRBkatoQILrJlsNsLlkxAmVcehnGjcIrGBggZDfIByZSzj") }, + { XHDR("ykhoebytvwgj", "olfqMpKwLYqOtEkcpDmHZVFGggzJNcDxyhhAHGccGDaGzVlyhywIOKZGF") }, + { XHDR("hpggcexfhrjdpjtvwxek", "xdhVwuDQBcsRdhWeKuKJIqLPDLSFDdciQjHvpaPINCZvWA") }, + { XHDR("jjgrpzgcwl", "vPPtXsZwyuyJcnxlYWyQjYpQLMCZebgzjmdUlcyhGxqcQYnYpglofKUrhXpq") }, + { XHDR("wjhipovdfpvvkslrrlib", "kwcSZkSTivnilugmAVyREHQiFOM") }, + { XHDR("byjq", "NuAURooqUhQZWtolUAlOIpfHktAplYxbdMDscgaxuPwpqelcqfPzkuoSnHmbKNTnGnLQDIGazsXnn") }, + { XHDR("zalynv", "NtBKcFQYpeEVVUMDlRlMutLbJDePwyLENekmq") }, + { XHDR("porboo", "WvOEbHlFMFRmiGpVOgfRFKFgwlWgcngsNRBNHuulucSmpRZLRiojrsXMmilnVwWVZhEwCU") }, + { XHDR("yyejya", "asmhaNJNnZETdZjnZUGiBYrvUDKGFBekiAMyf") }, + { XHDR("oxfwkvkpsqjbtqbz", "WuprBNRKqJjhqAffZsfEKbLQ") }, + { XHDR("fzbngiabfappwbsia", "FQnIbqCThFlpQgLrMRbeJPVSHdm") }, + { XHDR("sownmkzwvf", "RjtbwmWfnuGngMhPyrBaHKHIZqPDDdTfplZOtEiNbnBkbkVBRpNdVpVACvClOcqavWQYNs") }, + { XHDR("xwupuojallgmmxmbhx", "HSqgxVWImPxSbuDzDVXjWPZlwp") }, + { XHDR("jupmvpqcp", "FodUPoOCkekMbahuoQhngzUTHUHINVlydIiLGJFYJzfBaVbVB") }, + { XHDR("sczpd", "gtsWkDxJHBBwgrWDBDTQuhFHGZesqtPFNTsTIMZmPPPZuPtVPvMWJwL") }, + { XHDR("dndqklcdsad", "mUILxMtuhXGXsiDIoGQqzrBZQuaDOLLdVVnMUyyBfIWGSZaYnoALACLBb") }, + { XHDR("emgokhi", "gTybqrLeORNpxHWSdFrizPkgSHfBOTnfTHzpIYRkchOqOEkxNyBXThUyDW") }, + { XHDR("ouhbrfkocnnfpf", "kT") }, + { XHDR("gaqt", "EFevb") }, + { XHDR("pzcupiumfxpsqnwgyoyg", "GwwgaxiEOvsEEAiOxueYhnIVuVCxeJCwYcQAxouzrdlMLSPv") }, + { XHDR("bjnldnju", "SexJnBvQMTZKd") }, + { XHDR("kjhbqgxrufu", "JOAgFpbkjCgPuYNWBebzVMwFkDMHbitBzoenZGeWaOtaBYKEkGrmeGWlkfLzhcj") }, + { XHDR("yjwlqdb", "JrlYJgygvrddGMQgJToYzTCQwQzkjSGFBSImKrvZpLpQhzDtpONtXeYKGcBxquaUmT") }, + { XHDR("dvrqwd", "KnJdjPIGarAcxcSoVLzieGBwFCktbfYkoecmvWjfQVtaUedomkNENxOMEXJouiifKuLgReskNViXvtZg") }, + { XHDR("hvxuinpnlimhl", "PWMbIvrjhRhWGsUirOBpGPzVRXTCtzsydrxWlaSXKmbLBj") }, + { XHDR("kxcetkqphqenhh", "IZNdUbZxVcjelBXrluZpDFrTMTriMbyImDzVKnnspqzjrXYFyOFZIhTMIAWkWzkgsWlBXJMFHmmOTr") }, + { XHDR("kqvzmajzqarexze", "MwdLhEaGJRQOwnxsCTBEvktruIJNUrgTjpDMzAtMzxqaQVRsbQyMDKYnjtBH") }, + { XHDR("exodjkmwevexygd", "HxHiaYSIPJCRrDDGnRYyOBcRIOyYEPPfZjWTlBDdLnovLjCLVYfIMKlNpDTkpnlEOGUpCoXtAG") }, + { XHDR("irvsceoywngzdx", "EemdVMMIFwAIvTq") }, + { XHDR("vwwfdiitcq", "fohGWcMtOjUvtNjAegaaztsrcYPMEGEgLBMmMPjCGqNZHjBjnia") }, + { XHDR("n", "CvGvYqHwuXishjKOqJfw") }, + { XHDR("mitskjmzndiy", "rNMwDjveESDxWStHHpYvCYqMMJGBMQI") }, + { XHDR("r", "dWmozRAJQHESwwSaYgHpdpLSJXDUItqKainYipzIeiMVikELcmlSbn") }, + { XHDR("qzpcxjkmtyovzii", "EzDhwRFHsk") }, + { XHDR("rsujhifgvokqszo", "KHajIuJVTfwYqlWtyHgZBEGGCtOzpwxqZiqXoLiZZPcNGLvXJtfTjkAFrpjM") }, + { XHDR("vqiadrlngjarbqo", "SyMTJDrEXsAZpHleJsjEuRbAzfptkhctWSVanOgf") }, + { XHDR("beorg", "KoWtaRiRRniTUoMOXWmITMweCadNdaQGcKPMgVKnOJJAXiOBbnzCvuNgiGvdTyVChTWTfv") }, + { XHDR("vxzhsrwd", "JbMVgZKPtQrNPOzSYNfAlhcfLvvARPBLFKIFFDIyGLI") }, + { XHDR("tszohfhfmh", "JtDdrrDAhFuHEYwsA") }, + { XHDR("trtgshwdtttzqtv", "qsQQEupIufTCViJtpnrebMaJ") }, + { XHDR("dzierolyqudcnu", "yExszJNydibnDJSHwyD") }, + { XHDR("wk", "NVJuanFpfqlAUFQpjGOXwIXSUcMGnDXbfBJZtBjXmPUCPRUHUHhmmuZMXHfmKQioprCVCbJltpESIRvh") }, + { XHDR("tfkpw", "QtxBDAZqdWuadlcthHYNXPAUvCKSAGwdnlfurNPpzfogaIbKLNfHnkboZPVN") }, + { XHDR("urpgndbgrnn", "ebsfnjNhsgGRsjucMOcHlMJBMnwiCUaAYdZeXVUqabLqtrdrwsPDHwwo") }, + { XHDR("ejrxwlaofnbmokf", "sQQQUmpmaXbCyEemjq") }, + { XHDR("wzxxikdv", "WrzmAqnZrLwelxhEEhmUFQLuuoemgvpwUldHJs") }, + { XHDR("nyphtnmqv", "lojZoxRRPAZQFIObgTbfCHBYDJMTseZsuKzQFIjXEOTDIWmyNxwaibagGCWZySjbKHsCeJZw") }, + { XHDR("uzz", "IzpCUKLWsaSThdqQuBFQjHeErvWKObEfoHAYIIDrLUWRIa") }, + { XHDR("eixcihlrkmqbtfa", "uLYILCfarHpGAuBXwhnRzGlAbDElGVmYXIMFxFzwRRtoklmZJBvVMObiOvVYIHBDkf") }, + { XHDR("rtrhqkwovfigwowi", "fBzsokRCGAduyHhumSzpurunPBVbBRHqoEbFFDpkiJvmxZJFKQVLAnvEmQALwXCCrjbBGTv") }, + { XHDR("rtjbpxyzcxlbkwfzbqgj", "BVktoeDNJNQMdhEZKZYdLfZwBcoTDzPNYqRvtVqvZtMtGUtnJStwKqoYVayEBKmVDdPZwBImEEAd") }, + { XHDR("kobdhgihoxulfei", "rlku") }, + { XHDR("ymiamwipxchyd", "Ldw") }, + { XHDR("zlrtydegu", "VIjvxZYytysjabDrjwzAtRvvLgTsxcpxmmIAjknsDGFqAASxEQgzSEQmpWRhzqvkqFaQjKslpyUSz") }, + { XHDR("opkdtgarn", "lBKYTUrqeUJiOhOJjOiaovIphqLHyjGyTTrFpkxcKUsOGdhPTsQdnmeLuTdMA") }, + { XHDR("khivoqtuseaqphuxwbfw", "OoiKVYbXORODNjAgkxSSSWMSbiMENoYDJFbTkhqnCapNGmTrQesjYTXiQmRkgNfObZXGd") }, + { XHDR("jp", "dp") }, + { XHDR("xycymywmsgojkhni", "ARNLdyWCRUrAtuLgwglRaVBJqywdiRmcsSCRaxIlPki") }, + { XHDR("zsdkiegpoi", "rVTDMWJIaRpTiHsNVHtyBSkHgIxMeyxNQQUjyTCzkBUMsCqbPuOtRVCRNvNiUeypcDwpogK") }, + { XHDR("vezdkgiubfqffvhl", "JoDlFiLglBQVMFjbFMFJlWzQpYBMneVfJFjhokcpQTfZnNOKjQcb") }, + { XHDR("ugvjentdusxqww", "PPiXipNqjSHrvIrOgwtJnaQVqlkUBvTdRAVqFJIsUCwbZehLoRQOfkWxzQfEtwIarCKrXI") }, + { XHDR("sbyviqdnb", "YBocmxdSfEozBPUWnZWwRLeskYfaDgRavXqXalxYWSpmdPWwkoJSNvbKGQyvAgwZkUpfOXmoBAX") }, + { XHDR("jgufwpkx", "txDlwzsxAjLPkSo") }, + { XHDR("qbhgzwzarylfzdnb", "LezfURnZXefYUIbHDoQHgDKZFjyALsZOHhLzJbjFdALYXDzejLmDwVQRmtTdo") }, + { XHDR("xzchlemifyaxpvcozgc", "dVRynjsYVKqItSDQWtiYqQZUolasoPsWkeBrLEZxgObbYjgiVnk") }, + { XHDR("plndezk", "uagUzAuAKpJTIQYxGzPcUdKCOsuoJKdXBLcAvevfYZSoXSBlhnqZQOzNPeKnSDyAlI") }, + { XHDR("jwefip", "ULAYUrDPQVyUVfobVBxCHpQqvKSAqAKLFVmdoOKOvUfzDS") }, + { XHDR("oddhvourapuc", "ncYBymSOFxXLvlChaVXtKVRVZjopSWIkLlPVgwWFwHfbhwK") }, + { XHDR("fztoxpmvikd", "RGshzbjfPMYmykEWBRDeUsrdc") }, + { XHDR("chjkdc", "GYSiXnPSGdgfnzasOKgabEsKKOZOcV") }, + { XHDR("vgu", "bDEyqYJdKybPgwjjAjBzqyPEXQUsnwVrsyIkAVXjUXXG") }, + { XHDR("tsqgghncrhlair", "FOLAJYliNfgYyTnQxlrGnnKHbUnXkuMFpNVmGNS") }, + { XHDR("hcheuteuaeuwf", "cth") }, + { XHDR("cfm", "IwpaEKILpQNnQzozLjDktZYxGlkAFmLqEGVpmJwycmLzpIplFNyxrmAyN") }, + { XHDR("mcnh", "VLajYpJVdPHLUbTEGHEWxIkQMPbfYdivXm") }, + { XHDR("d", "PpoHZEMmXHHitZUcLSpoquWAhWblWxjHttCSrPMQrpOXAtBOjUHFxBbdgnsMx") }, + { XHDR("gleshxypkqfomttvuv", "dkgDeMBYWOhIoeYCLGCrpdjwnnVUQZHGKGJfQwnLCTkRUMucuqvdE") }, + { XHDR("mo", "K") }, + { XHDR("njcj", "FovSURVypqaLChrGxfGrbHVjt") }, + { XHDR("xjgjdhtjmftnbfleuy", "GztOaSmFuYnsmmTtcILXPv") }, + { XHDR("jjalp", "qqOZzKWghJfQjbmBYliDKVA") }, + { XHDR("hldbjmyownzzhyl", "EuJLTDGshOSNCUBUxcbbhjHjouSRBBrxAqqCsz") }, + { XHDR("qguslmhpzjhsqf", "GoYbxvRG") }, + { XHDR("udbqxknhptvhuxw", "vBRaqsqFEDWtQklemGYeGfbdCnNpDuj") }, + { XHDR("xntnjlttfeiqclouu", "bXkeDVdrCQxQLHkYkjxVmZRwPgLChBcmztrHenvbwjTDJIYhsGsbmqJdHepED") }, + { XHDR("bsyonabcsrhueuqx", "EpQvCNqsXGVTJfPaxzfi") }, + { XHDR("spbxeinz", "UHFGeAKVWsBYsILOiSOHoVpTTKrVhCDltwOr") }, + { XHDR("pxrjfcbopqatbkivrpux", "UFQfKwmdBAgeUQIwKXNoKaEmDeSYshXTtiCzeowsiqlLIldsdlddDxJngGIcEDvlUaTRO") }, + { XHDR("kuhfopbwqmjcwllt", "SZDctExyspIAbrIQHqjPXqXoymy") }, + { XHDR("hhwfvsgn", "MXcHzeYudCvy") }, + { XHDR("cpccszslkrfpqjoocn", "IJmYNmMuj") }, + { XHDR("nohfaffwbcpadzj", "OtTNHkwrBVoQsCqcsRXpXIrTPasnKznLPEazatybJRMXeDgRYwreSGVAsYBBZnzRxjVQaIPMrUas") }, + { XHDR("aawcpiwwry", "EdkYPDQNXAcWGSdgmSTlHVdEfEzFRoHLbeEUqtjfJSeldSVMkLaMnY") }, + { XHDR("ilagh", "yVpdiYARu") }, + { XHDR("qomfdewbqxtmp", "UrBhzpSPbbarDdHsbTfYDwqIUmDNkOXJdPiiHsjnNuprhEZvoV") }, + { XHDR("js", "oJXwuNMkDusVWALtZmWGIRpAFIExlXaXfZNlqzySjIDMJ") }, + { XHDR("ab", "aztanLiXPAlqBuSpYmAvOFkhINVVgpcKxQgTZAmnbyufASypkndEXSTsghMbnSxbiBCU") }, + { XHDR("jndkfpceouitjf", "tslrAOtTWJdXkSU") }, + { XHDR("bksi", "ykloFQmguTtkdaUoMjYUPePZaUcdrZkAneMany") }, + { XHDR("pmhr", "wgvxknYxTjhNlLtSYV") }, + { XHDR("vqsqwzwwtczz", "CAOsZiQCHDRpKBDdNTOpJoCbUDXaLMhFycgOaIdFRqsfjTmzxPuEhCnVCUeObLDmjHSn") }, + { XHDR("z", "nsdwTGViJkEtrhvJINHaLDMDuCtMFJsQQnLXxougEOPBLEdeRFbYCNPzleKoOwuLLbDXcYpe") }, + { XHDR("vbwmxfbfkj", "DFKXsHVbYUBbxvBpYSDlHJehj") }, + { XHDR("zozjfa", "WVnWSxqUrnbNHEfEmokeEIbMaFlXxSzJxnqpDBOvmNlnsCXQUQxfaiNySpJUpk") }, + { XHDR("yqhxxkwrfuxgk", "XQRCNzXHSrroUnNnPnpKJXaPLxFwqDupmTrSGxjyffyisWSDDmZCZTkojBzUPbsrdabsiDrCddihn") }, + { XHDR("mcoo", "yHmiUJZsFFWvvZcEfSP") }, + { XHDR("i", "wzoSfXMmwbQysofGwtKmcfIkUWnKGFJHTknFjYCQOFXcYTWBfPWZmHFImbppF") }, + { XHDR("erz", "XePzXoMLFWsTohOfEfZDmmpNjjCNDkCQwpyVCNPBAwNcqQCSwKfSQrdEjyjSFEhHruN") }, + { XHDR("dstackvasu", "t") }, + { XHDR("pm", "XxzkKQtfi") }, + { XHDR("urstibwcdmpjtn", "jRZijKatpsSFEfzIINeOYbCEAhTofCcgM") }, + { XHDR("bassz", "LaSLvQtmMOrDTCVXAndZTroGwkfv") }, + { XHDR("ujrifnuanxj", "VZeSwhONzhOQWTRLPLwvjHmVQSsOmSiITgylcVjjFNbhXstLGOzkfdkqcBKkzL") }, + { XHDR("gnusgrpsdc", "uwGodcVfNzyPMz") }, + { XHDR("cuncrazmhzlpqwzsxw", "TPscrMvjepBQmjcEbverYEqAIhZdcRbbMphUsCulNkCyNrUnGpTWJqkG") }, + { XHDR("lw", "BbyBntTZu") }, + { XHDR("ddevnqqfcsndu", "WoTXdpaW") }, + { XHDR("amyufn", "zvtLX") }, + { XHDR("yxhtgvtfd", "xdSYKhznQamqbstLJNIGWFUgSqYkOkTDMmHZmzvdmaDXOozbXyqTcVQkPYiVq") }, + { XHDR("lfsjs", "pqDUvlHMeXcjYIdCAKm") }, + { XHDR("vitlczwojk", "RJpqQzJiygnCqoiKkfAebMZmmtuQOnkGDWLzscHKCNQDGtlVziueIgopOVF") }, + { XHDR("oplpwoub", "LHgTDdFkdrpZyhGUbSuzPXzROSteDWilmckpwUdpYDDkgnvCvigkafyRQUZyhXjJmzWEggMuhVWJqQ") }, + { XHDR("ndjsks", "wmoKOXXXdpszoZFyzzNaClgdKBhxPHkRdVCzwTF") }, + { XHDR("gxqkkpveahfvynusevd", "xQQNbgCyMXBEBBpSXfcBcMMlcuMdTgUUswtZTfG") }, + { XHDR("opthmueihyph", "sqIPkywULXHt") }, + { XHDR("dqxcbjitzwqhtlp", "kobnsKRfZHxTqcyyqPUuyFYIxEcnifCxtPzEABQBQepdqaSQEeRcrHtBgtyTgpeuY") }, + { XHDR("o", "jAqrljXhAFypKxwjiSxheYtpAwEuAADxxGJluXuGcILnviSkHRwQPgUXXqjeEj") }, + { XHDR("n", "mXojdGEwTFsskcLMsZZAlaOkpvoKOaeoZYPkUrAq") }, + { XHDR("ftp", "pj") }, + { XHDR("htuflppnptthr", "lPjNdujuBRvAySNXcFkoxYKusJDzhsIOLsdUz") }, + { XHDR("dkyc", "iyuQelIMYZgdAvxyxSJsZZBQmNOuXOriZOjVCWofTPCevUwjHAhjhqnpNovWHSiItwOzRMUq") }, + { XHDR("agdvycyf", "CeRMxBxFyzkHGGcDOyqlrgmhrtMZDzTZmhlBdZJnGSpBpVkgLF") }, + { XHDR("eiopehmq", "nNbbJBKofDrAYjcmesdKRpUtGKOBUUjPMQxiXyVITuEtWGMyjgBNm") }, + { XHDR("iroxudfdulloiihv", "DrntRwDiVFKufNOqoMXrkTVDdkphJBBdiGaxiLS") }, + { XHDR("dxfjq", "NIEjBZXcHGaTqRCukWiIwrutJne") }, + { XHDR("ccyunmokplxgh", "DpSVBiYShckJZbxMDJsyrrAFEYrDxDqiyWSwFPFCYVkAIwqAmyXNJUIkumKekaKtFWEH") }, + { XHDR("ywqcbxrwhpbogct", "EVxDwEeLXgVoDDTtNZangTVpAkjkTNiplmGgnKl") }, + { XHDR("qsseomhxir", "agtfAnlZSPuGgolEuzmQHoSqcPnMARAHPNhbXjnHHQo") }, + { XHDR("yprvfmns", "qMFxrkXAPUeGmiuvIWHkNBQlHwElumccMEMMrlqyjVCyaIAgjpvSCPJwIjywSfBHqrDpnkWSd") }, + { XHDR("k", "OfYPNqIZznfxpkuOdiryiAmhDvQaqtJWBFvFvRMLWeGuuoWPvHw") }, + { XHDR("eqjezaewqzm", "SuFCIHaJcdUbVJSJIkZcNUoANVOTXDdGoLyPVhgfbWjcggteGSKFjIcebJRQpjFVTTGrLeAf") }, + { XHDR("swbvqkvhz", "InzYCFDNRsauYODKFnMvlRVpWFSFmUZmnPYRmVFjyDfcpmukzxpyeUrgBroJ") }, + { XHDR("vsz", "hXtEWZrPHDJUtSnqnPPzunIOKPjXNOpeKJHAEvwEOqsfxoNhQbwuQjKCVnDbF") }, + { XHDR("fikf", "iLIm") }, + { XHDR("rwezpbz", "IhuAepJuvrggWewRwlyvzpBAWOMxqqMDJkkQArZmXwNxZly") }, + { XHDR("zlarvqzajmwzzzqssrv", "jNMafejrzUGxyWYyCFV") }, + { XHDR("tu", "dDMESCfkEvkKLFOYVWipwrftKecLCCEYmsirYLc") }, + { XHDR("kejp", "bnaHsMHpXydrpHUXo") }, + { XHDR("zbetndq", "YdFqcJjiMExmUFYXcORtRwZkxOdEmBkyjNuaJJeoQGbdSTDwccoKpJDUMUm") }, + { XHDR("pladbud", "enxcGBYFleCTrkhnBgdJxAOrDSkwGFgHdsSKjLyhXxLuLGFugBpsGOJJAJqUXwpyqnrEOiRerGqHK") }, + { XHDR("jcqwldbkmev", "hteutfLCQqjMwWopWWYXTkLjPlJgrFGVMywJ") }, + { XHDR("fypsb", "UovipqNfvCQiyLwhPMFMiTKLpeIBBWDJISBfVFfxPpmfUyEzPVRYIyXktTQouWptbuHBTJct") }, + { XHDR("bmzjtemxhqcmthnkph", "ZqiTKDCtCPjEicvyTYUpfynoViBCGC") }, + { XHDR("gvdmbajygnt", "SBYboMjSSPilJIXRhFzVWZrWmEpbEhAuQTTDcNzUILE") }, + { XHDR("nssaoutczgatoqtmfpk", "kEPNAHSF") }, + { XHDR("tncqjzbnfttnrazfv", "qYndnetaljErPoJXbMiZOfKmgVzZsDxiyHzCwECiJYRHxFZ") }, + { XHDR("gpxlymthv", "KHjaYOxUzLVESnlFPLNnVgmANBOVAWCIYhuinigZWESYF") }, + { XHDR("xlsbdnsgxrkrhyuuppr", "DsNEGzYKPNDuVbJVDuIFtiVfMUugMLyuAjLDCynpbOXJZQAnzkj") }, + { XHDR("wtiy", "oMOKCYnwjpoaGlnFxrNsZRABWzcjJmetvSEScuKuteNSiWKPMCOhoYiHufbFPbyoLapalYPulgkLZik") }, + { XHDR("zixrgbn", "rqQtigLaBZaqXykJrXMnpjXaaeXjjrznafkGHwAHUY") }, + { XHDR("yttmiujieavub", "VYjhLKEAPNffGhcFjrIosqzznewnDNiBj") }, + { XHDR("xc", "rhffjnNgATakyhlWJfORKysnWBLpAKlyEmkYnuVFKIcbBHQDdjuttlazLgGPfvl") }, + { XHDR("wzvbgnuxbxomqix", "PtKgPseCbZlSIKWyVPFaAfzimRttxEPGRwcEKxxqsjVcqPu") }, + { XHDR("jzujcvlfbzaovfnqnar", "tfBJGxHZOpQWFtpzZVufczCRecVxgrIOHjrvYtuYSAidUkYHgwpCwyGwEbveyjDRgSWyZiL") }, + { XHDR("cpnfgrfpnty", "KeAtWHufNdKqjYoJaYOXyaFfIHbtRGBpjqVGSROXqYioMeCQIUpVsssuAsL") }, + { XHDR("sahqmwhmltbrevkikx", "kFqhYxMrFtMjRTG") }, + { XHDR("m", "hLjqUiGQLlWUwKzEcJXbPqxRCWUOZPhdOtMtiBUKHZDVpOjv") }, + { XHDR("zafuuozxgrfhnnpdz", "RejXauBjvMPjCHZwCNUxGzZHiNmoUXyAebZTaafpWbEhCpznFGyEVrbcAFaHYNuNGTAT") }, + { XHDR("wtqossvtzuqgb", "ENnvGhMxGzSElTwvsMbXYhPKuZyxFQSTKBWXBkWlzQLTOvqHjNQbSZmfq") }, + { XHDR("aqfyvwbw", "NFnJOZClAVmivrhtYZhSnHdOuTqHLmPMiszXXpRxMXHoXGZjXmhGVXpSoPl") }, + { XHDR("cyzlx", "dPTuluGhaDhdSbMeQIHbmtifcXQtOqqMEBSpMuCAhXUfzGwZckXTeNoswrzvyCyjKTNKPzfoI") }, + { XHDR("aqd", "NVicullBUZRgWSdxKWWJhH") }, + { XHDR("bfseb", "nLRilzLElNpHwbAiwAOWwEFbwSYBhGoXWrIsawIh") }, + { XHDR("buhcoiqssgomjvbhtoa", "VxpkaVwKYCDJ") }, + { XHDR("a", "RKPyqPfZZChqWnp") }, + { XHDR("fnsrfqtzwayamc", "LyEXKLZXQzAdNqUGNKahZHMoQkMuVqocsoJURIFKRIaabLTWBySImgkwkUeZVcCkfTmHmcaVRBYOg") }, + { XHDR("tt", "aRbacwSuZUqgKlBthFKFSqFmvEeqjgDJrB") }, + { XHDR("bdzxyr", "UMtZMZpctGorbxVppWyGmwPabUoxrbLZazerJuJGgvcomKLRcpsbHNNXVQlDHTzk") }, + { XHDR("filxrfitgmnalwfryztt", "efEdpEYWsFtUgWLhmQfLGOdUgmUzfzYprXWfMYUfXhwnSrjPmFNsbYdWNOuYTvPgHTSRolqCEvjDDm") }, + { XHDR("snzfldcolfngakqpr", "kkchcHIEEVOcqovFa") }, + { XHDR("poxxdfeglqcqnxqgpxxf", "oumuuVvriwcTg") }, + { XHDR("bgyf", "CwTcZWxKBxWyDVUHjnzAWpEu") }, + { XHDR("fpjlkxzxzzjkcvbwlp", "xrmCkdDvqtrlsocGfuWVyyqLwWUuZnnftKoQxbBNAmhwWYYYrmLHvD") }, + { XHDR("obdfcbaqfmeucjth", "VISozMphNKIvwbBInHXoYGFkpkqmqhCFBmbpzeN") }, + { XHDR("px", "UDMlgRGVFdkttHQCDyiDYbMSfgKmNdCnRaLODoehRCrerQyvmPBPttSuFGkgFRr") }, + { XHDR("kuzycuyqgjksp", "QQyQxYLsHGiCTVSVcGysYRhnkmHsjmpkgM") }, + { XHDR("wpvjjjxkqkkmiclt", "XyqVREhWNLbKJnoCNDVaUXuWAVKfGTgrVUJxMRjHIjCEmlYHSCFAjrTNsbMVBHbjpxpurWX") }, + { XHDR("onbg", "afwDbAyLxoMSwmKMqEdARJwWQbJYabkyYDAoilidTdJMpidQxWVcbO") }, + { XHDR("wrqctqswb", "gWerPY") }, + { XHDR("dgifxqlncfvlthob", "gtbtgKERWRGCUSacOJamBrbgxu") }, + { XHDR("ye", "uQDjkqBIynLwj") }, + { XHDR("soc", "vCdgerRYFVhzyksPBiXwYZbnnEqDWajvyyVWuXdBHclBkTqUVi") }, + { XHDR("jnzgjdoditoheyjy", "fkIBKiUaGuAvjgMYVjVpSyUoUyQcOLBEqTgKJsqjFemGAfoXHqlnNWsYnJvahAWFrLPQFe") }, + { XHDR("hfkrbweppjfftm", "BxslPBMlOwJWDxx") }, + { XHDR("svhzwmrvhnhgtyys", "lkcwzhOIlblApSPmEzLlezRIrzOQtheeuUlml") }, + { XHDR("gb", "QZMoFqvDEnfPHRixXWZIckFgarFQ") }, + { XHDR("yowcfeokjczazav", "JwDfreouGpayxDMfMDanCsEKSBbk") }, + { XHDR("xjrushvgb", "NAOZkQNjAhpxpBdIOOMPoINGFZqg") }, + { XHDR("pzelgewuflu", "nSCvyVXMoDjYzvfLyEbTcdcxUSIedgIXbPFCCPVdZczhGZPRQiMF") }, + { XHDR("ggzbnncgojjvbnzu", "VPtdFILcgpTWtirlKpszHHlVMQCUipcwztewUtFYpmWQQSVLKkityjtyQHHIDBcsPcoQhIrlI") }, + { XHDR("eok", "sZOPfDxHDhrJdiHVdWkfydxcsNTAGFrzh") }, + { XHDR("yvervsfzlosfun", "dVVcDh") }, + { XHDR("lukfkghj", "glgSxwhgKONbvEGMBWHBRvZpoKfVWbdvozXZKelslUU") }, + { XHDR("vmibw", "HygmLHRKCCIDTufWDGICcOKmVEbxdPjDU") }, + { XHDR("w", "DomfCVmLjHiwiutyInlLytQRNqLCSnxbkCx") }, + { XHDR("nmblwghrcfeguduzr", "BfrhGpoVPHBGmyGshaBqH") }, + { XHDR("vbjmryqzeuhkzer", "IorrLroFbzMxojblHcIGgvpksyAshRrjGkLstwlviHQeee") }, + { XHDR("izsqct", "KpTIMrgMnbOobwjorDxMgtGSfcUqzGiB") }, + { XHDR("ndhkmfwvgnjzmh", "cmNSJXMOV") }, + { XHDR("lskwykovevzviz", "NaFpNWWRJyCmfDXkRlVGvyJttpGbBi") }, + { XHDR("pvmawksviyjonwfltof", "CXKMSSVrbDkuBSYuGKJIcGFTUowLyzsJmPmrsMRTSqgvafsRnshRbIMzyzKFKFWFpk") }, + { XHDR("nqelp", "mUWYHfVPLFmHlBbgHqJxvAVncOWUmvXkppbmBimRgeSYJSq") }, + { XHDR("zssxeyflgvjmrkhny", "EcIMfCNLRnwKbICtYRVLPGzaHQtkDgmhxucmuSGhKogWTpbeVFfZkcjyVrHdK") }, + { XHDR("eqgbkyhmtehnxurixt", "BXwaUzcqQvyJaCkgYSnvodLEYYDCcaveVnIVTIXKpaZtdSTktgakeCnHo") }, + { XHDR("kbfd", "OXdjJcFgPYg") }, + { XHDR("jezsfkzspyzadpdukl", "CONHhQcBWkHdvDAbcMSxKxJa") }, + { XHDR("fdlpybwh", "EHGDBZRtIEhyMklKEvwhXUIMcQKhMWySsUpBrVplAlDwvSksKSnaJtzyCJzPOSUSNrS") }, + { XHDR("czaemjkfg", "likJcSZtvpxzAngqcVwHGDSzuTMUVwpJrKcSSeTQIjNCZTKRD") }, + { XHDR("rxfuvkrewqyabjbvdx", "jdkILQctskMRIDRVKIeXhsvuBtpngtsmxPsfMjtsKMjjWWOJihcAuNRadUo") }, + { XHDR("lmmczvzjocbp", "TDenxsjzPwZNmtTFsRHXvAEQmXsMmfMQQPoRDYCQuK") }, + { XHDR("obthtfn", "mjGaNxyXLy") }, + { XHDR("e", "bS") }, + { XHDR("mrmxrmkqgamhreoexuo", "rbSCFxiez") }, + { XHDR("beuvdzldwgzvebtvhmr", "eMgTovUlQIyiJZLQNLNYv") }, + { XHDR("ncwkcomglu", "PBYidKgFgDQHvbNvsTomOfImUOQOibsWuTDvxzqyhwpteccRGvD") }, + { XHDR("tuibfrwecluasho", "tLvqEzdAfNTIOvkOHIjiseurRDpqLBZelDqxUhhlmPiAmSmyCWx") }, + { XHDR("ssnfshgfevxfyal", "MyufBfxtfxCoZMpHBLNVxpRGsmCvjTnzjZAtXoaSQhuFuACmMtgpwKJsMtegwMpv") }, + { XHDR("ey", "TAvpI") }, + { XHDR("vqslahxljymas", "hhqsGnzVaiYXKltLxGoc") }, + { XHDR("dme", "tDZqbxqgfeEKvZuuUWIgfYTYycuRIyunBeXqr") }, + { XHDR("qinyuettk", "XLvJfkXMg") }, + { XHDR("vypiagknonjogz", "bpmcklVIhN") }, + { XHDR("vpwaujtgwtzdjpjkashu", "ETPJEPQBOpUEbcJBJxDVYGbSkapttDoZQywulKUwHhWljFwl") }, + { XHDR("byllgdnnsv", "pzLZqaYNuCMLvWohHaPCgYRUpUGWUsdgRdBoszixzGpcJxRkHnABAhFCJJuPDGFn") }, + { XHDR("jwmfisurbgnn", "rfZwFORlaJILpSbcEGqPFlFzsBwQRbBXoohQZzvPQLQmDN") }, + { XHDR("tbjup", "ycu") }, + { XHDR("qxdfmdqqvphwu", "ThQCNGvnIZBgUQTNkRMvAivzxHDPRJjwkegrMkfPknLKmUqEfDMkJvOj") }, + { XHDR("ixgbye", "BHvppPeLbFjliYVQdvMaRtirGmCDmYQujsKvSlIFJhxmXqKGmpwRzwZqIPigNxn") }, + { XHDR("au", "aTkSlApkuhDinDpyDJRDJxCDbHamUxTtTFlLsyNbHGSdIYMTpXHvtIAbSBJMNEWKN") }, + { XHDR("antanmbszftgawmbzp", "ebouerBUJWewNEHBoKyKKRZdvmzXWTxyGrr") }, + { XHDR("ifheddeevxg", "BDcwRUViLsxzOWaLPTAVdDUEDOasAJLSLfzwmUYwhwhBafrRaEyEfYXffcMICScaxSFIoJTAwuCvovz") }, + { XHDR("kvqmxxspm", "bloyfqYGBpwgsmSAwzM") }, + { XHDR("h", "pCtZdUVIgmJnTXvgxaOWYmYkqSFihcmzWzKGriXllLBaSrndAaRytrFJuMnOXfllejzssRQvEWXVgpL") }, + { XHDR("bbzofhvrpopucgmh", "cpnV") }, + { XHDR("onlsyogzyqntwgmmt", "agFFEvcXzMTZdcYJWWkxlcduHHAeAeuzSXwAPEMrOdfppkTD") }, + { XHDR("zjxwlzcfxxy", "NdhMwEGzmuuNSSsEvFZSNJiNsNOFskYOlfHRUNNFkAgIJkZsUmiVOjSCgFkNgidVbiJotNqKERlk") }, + { XHDR("mskmoxsolaegbsm", "DfkTFDfuOZnDodhtbIuwdwyrDxdpROGoABBRgyPhJJR") }, + { XHDR("us", "OUjYVkmviTxeKsNSclGoUCAdYdKXACcKCeGTVkGgdJzOfJwcdnsUKWqseJcPfsbljUICVVhES") }, + { XHDR("aznfoazichcyzpafapyw", "gAMDyMYKiJmgonSVZYGLZgrpkMZpHdOEgebxrtuIPyHGYWkWaTnnAduM") }, + { XHDR("hqtyguhamejgr", "tKqEyvABUBHJdfNKuJYVjVjEmuMXUxVEgVfxglyPOPRpELTRJDXcUVoyPCliySVm") }, + { XHDR("yxmswlent", "zzKMnpdCAaTidDGfBngwVUecaZyrOepzo") }, + { XHDR("zohsxwhdbki", "RoVNScqnpfXxczNDKOzoumI") }, + { XHDR("qrbvamyczuwv", "UxgoxyvORQlEJeovoYnschCcWgcrkCbeuROcHPiLsktSOfRmoDgoIxeNMcofIePrfHKj") }, + { XHDR("kpitdrijwua", "oZqgufzZCvUDXXioOroePgTASqBLLNqWMFYQSXSdm") }, + { XHDR("dhzlu", "UrfJnjsLvJRoHlNCuQNcAQKshHVrcDVjphsWF") }, + { XHDR("yeiusplvajab", "lUcIowaYsDOqDOfthUwfVtrCI") }, + { XHDR("esblgrrzmmrphzatdqu", "QkrLODruSSgmDgnKlhRgPUScRmfDLDyjePNbNFwneMWNFojKBaUwJLjKjHZyGlwPgAdJXzknk") }, + { XHDR("cjdibsihumyn", "wxfTCeOXYqDYMQzfoYAvintzUrwlXctCqGeOKPcOhihEEQjFiMSAmDBZstOMdyjIKEJukEVBIYk") }, + { XHDR("kchp", "xVQkQNlQmcNxPUmjYmpSARvrETESNaVXLflZOeLDECZJpePXIs") }, + { XHDR("kjia", "QSlgaU") }, + { XHDR("ly", "UZPaNhWQvdYxpAtLbjzdKrhjCjndPsBtvaYMcIfdFHbnXCHnkMxVdPTWknuaPTcPmAXhdhuUybaYymV") }, + { XHDR("kt", "BhVGAKNqPERpGjknkmcsCksMjCPkTVoOfBvt") }, + { XHDR("rkxltdgrbotnctij", "kWQTpMZdUOwrVOKiSuPSIJuNBSqoWHvayEzBRhXCUjp") }, + { XHDR("y", "TjhAvNWnZVCrxlHigGjXxGcKNXbeVoGKEuwuahlc") }, + { XHDR("mwzegautyyqv", "McEEaliMHeUmtkVsZiGzECTggGCppiESffikKCNVzwXSkgceBJwdiKdlWwMuxX") }, + { XHDR("w", "lJBsdpceNAMgCRJhQNnlfLfgvnYj") }, + { XHDR("bsmuxiyptvgl", "UVMQJiCdHuqMJZfGblqguNNCVCfVCnvZHRTFxiZXc") }, + { XHDR("tnjxnps", "uBqfhpxYTNyDQpWKJyTkaTQlWYWfhYmzeAqwbOCGuCiEhtjrxqneJuLiMRRnNfJjDXxMlaxojG") }, + { XHDR("dt", "RZHuqIYwGnGstewuyECSpfrtbkPpBCiHrqNptmopLZRcIGtBPczYG") }, + { XHDR("etttrbj", "eLJsaJzXkBGPwdNIMvveKogrOmDBaaJTvvJTZpatfFWoBBXTGmDRcfQJidIENsaqdtERtN") }, + { XHDR("yanaomilfaxavocewht", "aZaWkDDvqFELheYJSrsJwHEjyUKkMCOUtYpZCNiStuhTmTSFnducPylvbMZUkNpAW") }, + { XHDR("ynnxfwwcdplxhahk", "qZjtyaXLYQvMlCOwChjlzGRKYWTbPtanAmCnbcJBXCoqstjvtxsbQKPsEequPIHTqxwA") }, + { XHDR("lspeseyajt", "TmQaORXYvONAIXnRaOWIJcXKeruLuxjqjiTCQZaaWBzltyjTNbAPvwK") }, + { XHDR("ylvbxkfbptyklbnjm", "FgqAOFdIAQSbjaClKeLLlxMmKlGwaFsNQsScFqxBLfGy") }, + { XHDR("qwsgzasgbpowkqja", "IRLIJUxfyjdJUxrLkRmpMZTObrWvTyvNqoQUObIeYaALbqELIwJZZecVebGnYQBYwBLIfxv") }, + { XHDR("thlwjotpmnsoisb", "SvmNmoIwyunDVpqolFsUKWZudnZoWWCNdVGQhCxEon") }, + { XHDR("vulfizlkirozgvbho", "AfxGYFStrwUQvByWdFPjGbMKevQMaUvoySDuPzFQ") }, + { XHDR("zbobjwxfhqmai", "RRAvVrhfognxn") }, + { XHDR("xpsyxjasyecdomvg", "umhjfCOkfoTiiZhVjde") }, + { XHDR("glrzimmrzmie", "wIDCtVLjLFqwnrJfnqtxQeTWacAobxQmXVZEpnUZL") }, + { XHDR("ocxaryau", "NUSaNnYVEBpfzHZaRGBor") }, + { XHDR("c", "rhqx") }, + { XHDR("tzdvbmi", "nOxGQiPIBSPLLwUoKaxKdWNCk") }, + { XHDR("x", "HPMXiOQOPOhbHXQuRBADgkJCfyzqa") }, + { XHDR("o", "kzIgjOWfpeFNFAJxJFkSwiXpJvUcaEWExhVyFxqEAVUDdgcuZmvvoa") }, + { XHDR("vvpbdoh", "DxTeRwKTqVHdERgjQNIaytVykEwVtrzdqIkPqO") }, + { XHDR("ulmtvhyiuhxrzd", "lIqdqZUbDrZfXjiRVYULpgvmISIVCuqJkRMtNwwma") }, + { XHDR("rjooov", "LIO") }, + { XHDR("lpljfhyz", "advooiVPeUtLTOpejYjcUMvKuOWYQxa") }, + { XHDR("odlnfamyeyzmgtehqcbu", "SvFqQRhLtbylBjwODTOYRuGRRcqUVNSvLmgspZCouKfomOtzwzEMWzhLLtX") }, + { XHDR("jebojdfrx", "hLdWsbtFAipoIZrZZbTqBmtEcygwxXAUISRpVXWfhPPzpUKvatsly") }, + { XHDR("arohlhrbkqkvwcudwbxn", "uiKuKtGwSzkdSvooAvdxCVXOfcLyCqIEDbJFejrEGHpaXpFGAbEHrwIwoGYxDozyOo") }, + { XHDR("i", "fDUcpsh") }, + { XHDR("brokocwjidmvmlyg", "RkotrqRctuimJrZkHEXSAmWoqGMBy") }, + { XHDR("qmuagrtlmfjdpz", "gHHdDtVTWyLZJmfYOreU") }, + { XHDR("gprkoay", "xWXNxRXVD") }, + { XHDR("eysuphssgazukjnkgooy", "FpuFVXuSnJUSEQsAjjPq") }, + { XHDR("cwy", "DvClZKQOsccloJGExMmxKkZlMnIgyCobrvYxUEwLeXcjfncUUHrIJagzpmmTLvwKGZuXVpIqkOUkkmb") }, + { XHDR("kjddcryubjc", "HfPpsYdhLIbcIbfTeZzmRHfJazgSibXDeOgkuLmIGIantyyr") }, + { XHDR("qjlwm", "rJpFBvdQboRWUOEbEzcaVptAcyhlufOCKyzAgmIYWHMRbcBXyyybiih") }, + { XHDR("ei", "nrFKzTjanLlalZKRmCuGoKAbKqOECYMbD") }, + { XHDR("lmgftbkgprgaqqjvsb", "JztbGPAayszKodnPilXQMlJNSjqJdzVJpk") }, + { XHDR("ffj", "iuQZfPiKMvmhCScOkblVdOXzAleZzaOVn") }, + { XHDR("utdcggbs", "FkGtJBgLBODTiSDAkjvwJAkLTnoqEmMJpaFFzA") }, + { XHDR("kjkwjmoeubbvmlzhnwf", "PmswyIBMktRDrZVqjFJWxdPUlmzg") }, + { XHDR("onzaxpfmtcpndqmd", "moNvGlYBwCLZvyZunbVSPvNgVonXPqDQXzwYhZdffbLkUWGXLrpXiAPGbsooN") }, + { XHDR("ddrlx", "XOrgIjtjfJzHVOuhRocJOQgVlZexbuMJsWvhswJjxHekGgXzgNCsmYSbgsUO") }, + { XHDR("pmjwfnpzfqhzdp", "ZVTexJSskiCKNtLEISxnOZfQflloshFmUCfOHcPq") }, + { XHDR("mh", "cUFNUIYroehjbiovzcBjEmeBZKJuGALFqbHohPsdWlMUgkfzXc") }, + { XHDR("ukzpxtgxsc", "csQswyFSARVZqVPNIUeiIzGFCKFZezRQYXGtR") }, + { XHDR("pljafteipf", "xJKYU") }, + { XHDR("jsoprxfdds", "tHKnfGhUSXhaEnzGwCkXtZELWRWadtJvlYPGhCHHbqhUYoPxmDaBbcORMm") }, + { XHDR("u", "kNQRAQesZEZKGWnbuQRsnVHiTCzmNZOALsOzVyCwvcRflDUaEsDiKQIUSmmWmFJXNbf") }, + { XHDR("qmapb", "gKpquwifEhuYeCQl") }, + { XHDR("llxxmaqfnalbxwlzmj", "hyFVkrJaPCNxSrHSlsBiuBmqZZDiycNzMllW") }, + { XHDR("akjxoic", "OBrcLcQwJtIHlxyoSRXVbgTReHPzbQCtqqZXlQlvWKwkKDsCiyJZUplNTsulMKedvifz") }, + { XHDR("abfqeyqwogqpohqsir", "rCDIbLfAeWjQXjsxsyoevaYAzYTsjjuROoytcSeRxhTh") }, + { XHDR("xnlnkaniverqb", "gkDIVdQGbqmWgnFJRmsMmiYuQBFeJpA") }, + { XHDR("qgemsztglwikmvunfa", "DTlOuSXnLLfnZXLfusZhmVwXgrKNnmzExRnXKofqvvWexRMJRTYVLrkVwoLgTCfEWUmu") }, + { XHDR("rdptxkoowvyvb", "CTiCjBkIiUJrfQamMAGWxwgmxUWYqmQhZmivCDhobpKyCjXOOvHntstsMBKqIPKYIMvF") }, + { XHDR("pgthjv", "PQObzUeiRQDiGLcIklos") }, + { XHDR("d", "JScKGSUUwCJfrpZNbLltMzJzdmywZwBCNazRunXDwpYhDXoZTwfzLEKKbKGdfuxSJ") }, + { XHDR("m", "iFDMoyoCPNWLnhDFAWFdeTbSoNAzcoKSaUUrCikfQnkfibEuhc") }, + { XHDR("x", "mcfpgyBMVcvoXrwsWdYbvDuCAfrSUyJLEsBEKJhmfXLMJaXPvkbd") }, + { XHDR("ims", "wErNVFuUSpNWnwtdcOoDJikPlOSlOPjhiAOutuN") }, + { XHDR("oonwfzsxvdgiwdltfw", "fBFbomzzVjAvcAJfKDdaaBLkzhKYccSftSUptUlvhLljFETxwkMqJvbLbKcaXgiDvVMNtBodJ") }, + { XHDR("hhlhmnpp", "fUeejYbpjZByebSRnYysCrOJipcBydBPhlmXCnVtwuQIOLiXZI") }, + { XHDR("uqcpusgiolldstk", "aOqATEANwgrSuikHEwNFusyYIdTszrDMAFXLzSmecklXoTJ") }, + { XHDR("ghamziycf", "npGnEMDVnXuuPbvAJTGMWDDQXefnoZnVrAkLBSbCnDgpSQlsfpmzL") }, + { XHDR("wfqcskudfaw", "TTCfJGqxyJgOLJlJKvbNolRwVhDsKLKAxEZtzkzEPpltsRhoQ") }, + { XHDR("lasrjfbpwqsqnus", "MQjAEDpeadhAEboKZwPCCFFVYvjMR") }, + { XHDR("nmklybetqmk", "VzHMQcmJKdghFGMYnUfrVLXImaJANNEihYZjJKRbnPsszutOxVpNf") }, + { XHDR("auu", "qkTnivUxzAtWfrTkgGWQUiipGCru") }, + { XHDR("zrbotal", "BjfsDPbscXjcnpTAm") }, + { XHDR("hpjeuaozqoxkwxx", "UEENidjpcFJkVXRdAvLjbQXtpltsosMzdXKQSrXSquetNeEbMcCTLYjovaFHFCOEDxSyHeCZaqY") }, + { XHDR("ccl", "wwdDVCUnDUzFQIgWCdAEovFlUcthHKSzockzJrxFPtPWAutoZiQxoRVb") }, + { XHDR("wahzu", "JKdoNSUlTnFFMEshevdGRUNLF") }, + { XHDR("wrdcjmqh", "wJQVATstBzeLAGGvNKqGjzbbuKkuDfsqydLvms") }, + { XHDR("odzuzneeozg", "vIbhomu") }, + { XHDR("iopjbfhbto", "ksUiDUlCtXbdJOYVETmGXvKRCknteoKMEKlLOObGjhfeREzvGOcMTYFIiqFytPOHAJgQ") }, + { XHDR("hvvk", "GmMeqNQPsaZtTsLAmJvMfWclbBMKrcVPvSKrmmZMOidzRfhVGozUpFtAboxquihhbhq") }, + { XHDR("pdiygzacmrle", "XnfHlmOsgHUmtJkIkKxyBUAcdjKIEHgINNAHlRXFFXyXFzxruQBUF") }, + { XHDR("gb", "KDZ") }, + { XHDR("ivmpnyqdefvun", "IjDUg") }, + { XHDR("ecabhlvnmxryfxglaog", "rycJRydRuRBhPUQUzwpgUCKgzDAdEzCOTTZiAOUgQLUFp") }, + { XHDR("dtfkwzckfqniely", "ocoqTUfCehDOef") }, + { XHDR("rhcjddvswypg", "IaIcfhQNxUPBRGsKdHDQGWpaLdkCFEuTtDBUugTEskSotaCoPUo") }, + { XHDR("ryiknjczqzbq", "DNfolkbBcmhIltWhWmEwEqFcHgbGiwqtJmczsniksPaJsUhTzatradeMMdTSLbIaoSjM") }, + { XHDR("bqrnvnt", "mWSrpMyaJfgvtueRsskxVSaPUjBzf") }, + { XHDR("dpkojsyviqsjm", "fgykKZXcXgmFyByzegOIFdcLRwJdEOAjKfJBmGUSyj") }, + { XHDR("dbvpahdrleovbtsmqmc", "zpHohdSzQdFmhX") }, + { XHDR("yxjegowtcyrk", "MpGxOynewaCxzukSdSQYGAmZjAbpnWdfxXoysJJFruoJtFYAtQofoDZrZxKqSVacZWDKPXfASwu") }, + { XHDR("fnnvkr", "XKcVUJHbbVqdusPauGsuiOLQmAPrkLzpcmnFsGzARUQjNdyCLy") }, + { XHDR("ofmcvseflpldihkk", "IAImKwmfGJPOFEyMwUESKpzZatKbgMwaqAfXrfQZBRcoWYMRTNGgJkRt") }, + { XHDR("sjio", "tGqqcELTqIEvLaSTGwhNnxMOkSJDQEKBMreTnmwJYmyABSyPInbdVQsLzngNMtKdyZZfiGyA") }, + { XHDR("rylcecbojowiu", "RxvKQnHqsCiShpRRGnOhFpVWBRan") }, + { XHDR("thdldpqoerxcrhh", "BMxwaOTZUssuRNFysoulgNoHnHRzcjbCOHdsyGqfqRCKrlzW") }, + { XHDR("hlvoxfzly", "tFihYsAyszXCxSVHbqSYFHruZvYHtQujlOZqEMBzFo") }, + { XHDR("vrszfvwd", "rTyFWD") }, + { XHDR("qjrwygzwennxfy", "NKpJUOnibUAuLncQHtrXIXPnrleXdxGDSaABsFiVsSRYNYBW") }, + { XHDR("amyvgueigsebymkeqff", "meHEUKXGpf") }, + { XHDR("nkiofew", "qAnFFKGddSWoQhJzpOdcRFrwfIEllKqDtnCvTPNiYEfUDgfZkwMaqFJaRkEmlMx") }, + { XHDR("mjmwmwil", "jXikWOkNwyeSUWO") }, + { XHDR("goibxxphizmezhmawb", "bSBAMnnwznBSdwXem") }, + { XHDR("hcourtftynza", "qWOhKZdzgoXhVBTNmSSRgMOyDGbgTFsRgE") }, + { XHDR("vrxsr", "dJlLicNgzQzgfoRizMALwAtVmYuLEPcYJINJEgfXnIdiPs") }, + { XHDR("mvjoxjrifdxbim", "lxbnbGaIQHAKVpYmbChraqmJgZjpQrVZneOUDHPbDSTlOOkvUgfOvKw") }, + { XHDR("nsqqey", "DTDLpcnPwTHBpwZnuvGjFTjBXrBScwyRbtVSiAsvRkxYBPEKw") }, + { XHDR("cmbukcl", "bYLNtywtCkhxQvlCLRacTBTdBzIQsXRYIesZHHifillmIDWMOqVmHwAyIMBooCjlQeOiHpWgn") }, + { XHDR("p", "YYjxrFyQbpDErOrxSENhpeYFYiPVJfmQvdSNqYBIRk") }, + { XHDR("bgtnrchybp", "EMHTg") }, + { XHDR("dpilhsapq", "AeYCLnECCJjRwZTCVtsqSVnKYKpnJlitYnrZczxefTtlJltnMyEYzvNXowrOLIAxzNOlUzorfxp") }, + { XHDR("svyoschalyz", "qahqFlnLnuAJqoMMVpyHTqNFeCMYubLjuEjmuJWeUeEhZrWoAFFzZRPfWOwtiMxRe") }, + { XHDR("inagfzsufhtniatjhnvz", "LLPOWCwHgd") }, + { XHDR("yerqabxkhmgbrqdr", "WFpsRpwTBCDONZIDMujHOOuFhCJaIuXDWIjCzpmuXQGANWMsRTMiMjBfto") }, + { XHDR("obpedpygkcahtmqocab", "QSiogqSYMvWqpExyOKyvBGsUmHuodZFXsLhYAnSLEbYalApVOJ") }, + { XHDR("tfstmeqypbn", "eqCKxP") }, + { XHDR("rusljtatnkwzrnwnswzb", "PJbYSMSPZTzs") }, + { XHDR("eifxbvhfbglxyjy", "RKsHjMvvfVDyoPpjB") }, + { XHDR("keaeaapfhkfzjeufh", "ogyDmvONZAEBxBYhWkXBAXaIPYWedqAgUHGTwun") }, + { XHDR("t", "kMtlCVYzKiKDkUlDCUnXYbRzOLEsLBOaewJIVbTLRoGs") }, + { XHDR("mdojvxexamrihlcj", "UEHaaihJxqEvsDqwU") }, + { XHDR("sycbhtamfdxzg", "fFrCuMTaeyvaoPCuBPPqkOicvvO") }, + { XHDR("ekizrisfc", "bpulFZAwCSkXXSMhaSmiwwlMUjLkptyR") }, + { XHDR("vyagwvsxhstqn", "eAOmxpWXJJrONuhdhgLsWSnwKNyBkiuZSdZpPJcaYfqDPnJeYOjSeHyIdbztrjnysTCG") }, + { XHDR("dyurvayoslqfeeasxeb", "wgLVhPhleWiXCMZExBixTKyy") }, + { XHDR("bivrflnv", "aONjCqpyDjbzoIJdLmWqAYfdPdkPqNRrELXcAnNZpIusRJTqvyuBhENQghnDXf") }, + { XHDR("zawbxbxqkpisgrfe", "gQymkvosLf") }, + { XHDR("tfybanqsyqvyqrujjwf", "aDXpIwrQIcKSyTiBYi") }, + { XHDR("rmt", "WMjxbmCCFWPdjXblzvPeXABSKHunBXKFaBiazbFGJYuxfabIiIOvWccGPvRmG") }, + { XHDR("kdrzz", "FvYyWVULbyvcSCKYFYgvLUSDQMWxcOombfWA") }, + { XHDR("ozsyzryxdpiudu", "tazJjcxmPKmmRoknYOUHmIeEzmjJeEPBFVGmLdPYGgqpIgMXIBsoYRWWKimEqrvrQAxHrvtTU") }, + { XHDR("dgjdkovsbnv", "Tsa") }, + { XHDR("gpqtyrahztqt", "njtTjajgFvtAiLxwTqnvmstxAuuFnJStyuRnnet") }, + { XHDR("yscez", "MQHpbglYDhBTMGSbOhYGbFNzPO") }, + { XHDR("cgxjelwftoizwuu", "BAZvhNIEpPVyIJYYPDTTgVrQAHYSAAQSiMfckhDLhXDLbTmNazFMHDHFSwvlohmqkcBNNfKW") }, + { XHDR("ammdxqbttv", "TKYLpixZYJJ") }, + { XHDR("nvnnvaynhm", "OXOwHAGANyJQqMgY") }, + { XHDR("fl", "DOIebUwKbwXlrQsaFBogbTsbzrFcCdoJBYYrtGWnBhVVgdHudrmFSGTdjwA") }, + { XHDR("pqtndxrcbzxijbvoiiyc", "EWVVwVOCfdfCfFCPJGATmMAwmiKfhbuXVkEEBZhKVYdc") }, + { XHDR("rde", "kLdTlkyyorlXlpFbUyePhHPSK") }, + { XHDR("sambdlgargwrxxwja", "OgzdHcTcFDDMpQYvcBCeloMoBYCmybZTNdufHiubXSiTfzUIQNwfjrJuACFUyihXgodTOlfQnXsRk") }, + { XHDR("llurvejxrd", "eWmjAwsscvBOQTNLlpXMeWPlCTwgvKXysBZaBzTcqIUIVHQkqrGTdwvZbavebvkhQkdZpWhPhbtg") }, + { XHDR("zoieonx", "RYllDZuKAydKxorSlKUzwJtSFhmREvXZwNR") }, + { XHDR("rsuppaxaqae", "owwbIhRDEXJexlcRqkCbkx") }, + { XHDR("hlxubbrul", "xliDCrbMeTNueIywC") }, + { XHDR("rouiyckdjzfingden", "ecuJNLSKQBhnWGECRsFogLePvQaXMUlrvbBOtKCTTjyPkYwDdmY") }, + { XHDR("ryknpeuqnzaub", "dixlKwfFzf") }, + { XHDR("oiyjup", "IWwaPEVVTBawhNxQQbwQDvWjmuDWmpew") }, + { XHDR("vprbnfenkoyjtk", "CZkWWdwuNreAiwopIxtIqQNtmZmEWUkccTWQSLao") }, + { XHDR("dapjwkibldl", "HyXCobTcSVDaKGWaZxPVRyHdapILDqOkKBNWqrvhhUPCWXGaoTXGztfpdUD") }, + { XHDR("uvgdypbzfxcrpiylzge", "hpeEGEoQjvDFoBcqjBuKQVwilkLbgSOJpxqKInJIuolAqKiHQFaKjzmgAwYFiuTCwvIh") }, + { XHDR("dduxcywlaygntcw", "DxJOjoVgVAeQHupLQVfqNuZCthMkpHpSgdhaIGoCZncLOehprfavLcvYVKcIxVJt") }, + { XHDR("iwgvksdoucmpekxocspm", "CMIKtOKMgrVxfQdk") }, + { XHDR("um", "HSRacjsJsdduJCdYMKyfeUdcEjBHwcNLqbXNVMQxduxoqYYnbEKPsUlJjtKUwBMnWXRrvlauz") }, + { XHDR("whtawlw", "OmzBFktdNkeHijaevttINxKQy") }, + { XHDR("fausigmatvxgnosxy", "TSIUoAkkdQudVXCqXuRMTMXqXYHadBezIKlvliUYrczZEqhcUs") }, + { XHDR("guolusnnwooq", "DNwjNmqRBFOoYV") }, + { XHDR("x", "snJopNBhwIX") }, + { XHDR("diwahbvo", "s") }, + { XHDR("xqvysngnjkwwrbkffbd", "yLTJLgHWUuydFkZOnl") }, + { XHDR("amocvtj", "yfhHklXZkAZAW") }, + { XHDR("d", "dnhQihDjSvkgfPYDXDxsPAoMCYWVgGZoJYWlkNAmeUHtIHUiEktEeuRvrRnEAcZBPpeofWWoSwfBljQ") }, + { XHDR("xxjlsvujxsthm", "PDaklTy") }, + { XHDR("xbrwdz", "hHKT") }, + { XHDR("h", "TdLcsOakhAYqvscIqRsneozCrj") }, + { XHDR("pav", "VPDBxZWiHIGPZaBglmqqxSTvTEUccutPyPXcenQIGJtJpiPRQoZxxnV") }, + { XHDR("dqlzembxxuqgyecfboep", "GKhtQsdPSXHoAHCymIXdzPEIfvLOfNIjMhHfqBCaFAINJuXPgnzeXMVtaZZTgDhZksmtekq") }, + { XHDR("pviqqodeoagi", "eIppovbSHsfVKmgNEciNVNFoKhVIZeBPK") }, + { XHDR("vchiulbgxscfwiu", "jkFgkeyHcdzWTRdGpjMAuBmIICQpMwFSyZxFYODgvUaiqkZydGZLdfiiusCzDPydpzPQYP") }, + { XHDR("vsvixf", "ZGJcyBRThJeFghyqVqCKSOQdVbmLOVvkXjnqhpgWwgvCNyFvxxiKMxFUZWrgpsKZzzjn") }, + { XHDR("ynjoknict", "xxeRdEBRgpsXNZnctBhJCdpaICRwQXYmXVgWnFcBhPaTYcbFYyeAAWfUOiPKTlYzlTDLanAmbhtkDMg") }, + { XHDR("nqxuqm", "bnuUaWNmxqwjFHvSkMsEmacscyYIZHoIt") }, + { XHDR("bygwukiouywyjfjc", "ECe") }, + { XHDR("rkmznichxkgpmkgvxje", "lTNBBKGMuEniOkvuJoxpdiPrCxbeBknskpEKwjMJGxyWVsegCoTMVVvClyltlzppvvy") }, + { XHDR("zfsl", "mKYRuieNyOqQGnOjyUmHuSeJlWHhntCp") }, + { XHDR("wwcqeergrnph", "yiwxpcfEgEsysYFKWkEkrmVeYTsbraKsgPACFOnPPSkVHLSjpTomKSUSPrsYCWEWkxGcLixzbFerZRR") }, + { XHDR("kibmn", "twERdKznXHunikCErwaKYpAHJbhMtP") }, + { XHDR("zrykcrslotompriqbw", "ljgRkGsgTBeuImgCpeMrKTYejLrHy") }, + { XHDR("nxqkdvduseil", "LIIfp") }, + { XHDR("pwukloavrirxels", "GxEevDdLVLocyYfNGIGJgaeqHJJxUmtRBqGnoTCrqVLpxEOL") }, + { XHDR("bvn", "bpmpUXSLlCYeaPwhgSsGBGIpjTJjDRbTTXNbuPaCVKUkHNdwfPzMQpEbtYwRRdLpabQZGy") }, + { XHDR("ssfzruyenuhbnh", "yvGzPQiyIDbCLXabmPprNKNSQuZtbNuntUyovWMoglTQWyPSRAVUqHJqGntjGkpwgzu") }, + { XHDR("cwchjajeqnmfpj", "RtodSrW") }, + { XHDR("bvhymrwzxbbq", "PlrOcClAXofzKmhhmSPOHSsSpZuymtjtVJaQbQawgxtEvCOu") }, + { XHDR("dadywooyowrqky", "qLRaNuKaSBOhyTlUu") }, + { XHDR("lbhsehkscybuvg", "JOtToRAfIzcmPUUxwUvvNBsuwABIuqLAiYljfvbfMjRyhCfBzCGuABEeLfytSKpBjOAngkipGegl") }, + { XHDR("fpolbdnnces", "fXuQdxxYuxReCqLahgmHRisIoymuUFUTXOpGLwGRBxDeXcMEQWq") }, + { XHDR("ihbj", "cqw") }, + { XHDR("iazpp", "EPARPIiEkcbgUdUfbjUw") }, + { XHDR("nknqfuib", "AIBIxilmiyquiNFcJQqRpHFllrlqNiuuHYeexzdFxWI") }, + { XHDR("tqzydbzscgbqmia", "rERIjTQBjPxMNVCaE") }, + { XHDR("isvrdkbjtxpxzfwpblne", "oelFOGzHLKDYfTdanYrKETTRCMqhEnfSMRZgzjhIqvmRaLxvXrXEJxqTUcgTTytlEjS") }, + { XHDR("wqjpgiloapbdqlfl", "BnmtzvcCnMQWQLuhdmykS") }, + { XHDR("nv", "CzxPWDrmLyUiNqPPgWAEBDE") }, + { XHDR("nygszfpxpnmwvzh", "FIUwsytdJHWTxoZWFFoJfRVzsgl") }, + { XHDR("hks", "WDucJruCLBGspndCJsXbrlYuhuAHwNYTfNRgvVEHjsjEnvYFYVGWkm") }, + { XHDR("duffvsypkepsn", "QDNw") }, + { XHDR("uuansknxemg", "BxaBADBoiIvhAmpPxVMtjTqPKPv") }, + { XHDR("rosmgmwhhufeocjtwhr", "wkSnjiQWMJGTSbUoqhhUAeNaAFFYfjscINyxsXBYXfUBYWLjVZsIdEfXXjxbgWcss") }, + { XHDR("qmjhsgjlvar", "lsHBsXXoaQOdDXsVIVVCvyeABsmfOeuDePWBEUmzNWTPRXmVHksYPZO") }, + { XHDR("mmxxkmqahseyhfistz", "ZBBwdKcUJvNabOVIPMKgxPApvtBKegqqOLFyXIlHQJNkZ") }, + { XHDR("odavs", "VttGCEOKLLbWaWrhtcVDzaCDyeYdnYEbNoQODjMGvsBIRkLYNpRBIaPitLsUQFQCmWhKyVNXknPCRx") }, + { XHDR("iyofqjmqhntyaxzuf", "uxqQbFRTyNINjPoQUJzB") }, + { XHDR("ggcrpozeqrs", "OOZbwONULRMvthqgggZvPyUaPGLKeWgRqv") }, + { XHDR("omqfagelnguscavafvg", "zaACHaDQxsJxLpqoRsXBmmOqiJHspd") }, + { XHDR("jxvff", "qCdlIaJcluHyipgRKyPNKKYTuJqBuqST") }, + { XHDR("cnvkkmsjtcjwdtln", "IyPrjDimViSzdDQkLVAAsHJVRjaJhWAj") }, + { XHDR("mhhdxhnusfockipjcu", "hftTRLcRfrpOvJAwpUPdgFcHeUnIGFkbwXGcDiqsPyJhGuSYNBYUMRtmNdBVxagt") }, + { XHDR("mgfsdcxazlga", "UeZOHFnnTAYxPxxMtZASIfpxUOWwUa") }, + { XHDR("nnhnmibm", "EzzKHThEsAj") }, + { XHDR("p", "jiHPkoigUkhjCpKuBqHOGzsEKvhQystXQkJcBaOkUVXeRKAMXUy") }, + { XHDR("bupzpbsw", "EVJIgKczPvmOuUInhGlLKbZpThyF") }, + { XHDR("fbprbrrits", "dCJUsGseQEfzCRBIMoDhqEOhhrWcwsC") }, + { XHDR("pzqe", "SZuPDU") }, + { XHDR("dta", "wtjrVyNnzzpeLhKcURaNuWZGzIVanigsJmcFaQWlxyttFKdZQmHAWDRLaeoHALUgArT") }, + { XHDR("jhiyboume", "lMbJCEqTJfDaEtuXiicXgQiZr") }, + { XHDR("owcqnfacndqpeeb", "FwJohplQbEBpOQqpCRajsSZdFX") }, + { XHDR("mf", "bWmKtAbDcfVbdTBArrtjuRbwdA") }, + { XHDR("cgamcd", "rYoFjwSLxAQzcDekExckVexTHPutjQwk") }, + { XHDR("uktljtbneevdmkt", "BwquwWAQXdMSOUGoVZQOjXrqcy") }, + { XHDR("lmhetxxbxdm", "VFFlExebaMgcMhhpQbkuNpNtYLNrTKboSTBrWgzXgsBNLtzHMMCCrdKBVfLuwzPePYf") }, + { XHDR("mwxaoeoyipj", "HqpLoSiUdKkWdRflKaCcGdns") }, + { XHDR("kxf", "piEwVrPhYKCxwXuUtMoxdrkjrKMVdNOqwVm") }, + { XHDR("yxylha", "BXVutcGUcympvawcPR") }, + { XHDR("twzjkoimrsqinxfycpi", "LsjtedRNuRBKPZtSALZETQIDqBkrCscvycwXYsgCtACf") }, + { XHDR("khxzhhdp", "rtrkXHiqHFXYEdCrvmsDugaVZFOkxizMdPcrlytsBtmJbeiwhjdGODdJPLauWjnPBS") }, + { XHDR("pysiysmgcnbwtueqj", "vnvnYvvjuGQUThFfrRt") }, + { XHDR("ynbqxzxswwla", "RNLyFDuHiSrMCwSYfHHkgRKqMtOgNyifFSZlsdRCHPcAChFNW") }, + { XHDR("maopu", "eGxsMfCvMrPzhXloWQNCtQYsxfnlHHFVjmaUmlQfeTO") }, + { XHDR("gmxcmqenprqdod", "zkDbwMffgrReWATJiHajbnlEfwqntpktjOuCbSTrSvxReJCjRbpUyobJMLDlEENzvsxHEnMRcYvRUM") }, + { XHDR("h", "WcNTITnfXJKehiUOHJHmPiDDFpEhGcpEYrbvkDrwPiDIGAldHBAyTRBrbXLJk") }, + { XHDR("tzwngshcrzupab", "mNyaxgllNCnubfOXtzJADZdZnXqfyBSlgLqMqtNyBXTNQYJEwIJJryRZHvqveq") }, + { XHDR("xwscewafcqd", "EIEZkAsCsetDGMNCfLqJETwPGwFGmNoEDSYhpwMeDdrbWzMzzaStwJxvjCBERglJ") }, + { XHDR("ooxfxnlryu", "KoMbwuDiJNjSiUbuEEZnmYhlJfaahMXgGXhOWReITPaTVnacpUQGoQFPFJtQlsqtYd") }, + { XHDR("utxlhuheyintfn", "UuKMkoqwOhkHUkrNIXAMTUVlCXOyrkZenZbazmUpvFpledhIwNRWm") }, + { XHDR("jndbbecguzb", "PyJxNsDbBWHvaJHabHY") }, + { XHDR("ijpaazs", "GndHxxWgHMDkZWPpWICJJOPvnHhezggy") }, + { XHDR("djw", "uEvuBj") }, + { XHDR("wxkxvwhxpik", "LevKDGNlMQAUmJYEqlqrErgZuLTMMiGefbCOooRWOeccZiuyBihpCPkPPHkF") }, + { XHDR("vtabezsvqq", "ReuTGUGHKBFkovEptNLvqPYlemoQZGJNUabcVErQTolUcy") }, + { XHDR("fsigfxgibaznhycuy", "rycantdDMBTNPRUvvbIXdnEcUGJtsEGWwiwHEQhfevKyKLwuAXtEuhHYrsnptEQRlLfe") }, + { XHDR("invvjaavemm", "aJdTLiGMpnrrHMybnUHyguRMVvcDzoJOlPHreJSfaiqSKVvyigZUeASMbEob") }, + { XHDR("ekqnlvsmunsf", "sybJjMaIU") }, + { XHDR("qhjhghac", "jBMHEXbtTMvpAYrOvdLPOUgMTtldCxAumKUFzH") }, + { XHDR("zgagezilluyodvajqew", "NMLNNLHfZ") }, + { XHDR("a", "BkKRQnqALTiMPeIUuWnzRWyojglZRfIGklYrgGspwuXLkljIiWNUBdYx") }, + { XHDR("ov", "zZIYkmzoNWuTBziPbiXuH") }, + { XHDR("l", "uRlIjSHzOkjrToKHepBir") }, + { XHDR("i", "XBosKKlkBmldgdasGoPnXXbRiJJtaenqHqshTioFHFAWoqienGXppuPdKjgSZnT") }, + { XHDR("roxqjgywqc", "AXVbnSeoIpxfhqLVwZvvOlyaktBQSVYrFqmjBMIoiJfQ") }, + { XHDR("shuzenjqanogngigip", "BCFWeVSDzbgqSxeVdBIGSPKnxGEsYILyWvDjZAtlANZwaVpeWbRxlUcsgiKatH") }, + { XHDR("tyeevgnvslbnr", "HDUtBjrTw") }, + { XHDR("jag", "iRArlLCbJOpsgQuLRAMsmWxKcnKHLBpXDEmQUEIDoPbzclAycJbRUmFGm") }, + { XHDR("uyacmtbwa", "woBXGucFFLAmkhbJrxspCATuaLdJOhnsCPpcjwuShhkTVdmZBpeejnHLGWfAiUoWOIatSFQH") }, + { XHDR("rmfntjtkh", "ebPLKxrXGiQmHkxjVaSmzW") }, + { XHDR("wocafzcqk", "zxZsaNIWprCRrocrXbkYSMHYcVXWLVCcVQJEm") }, + { XHDR("dxtrfbcjc", "yiswjowXSzksfxrtwRHwmFXeVRpGrDEDmSPNtAHjSmFIvtrdJiSfJLOKwhUyDzdUUqPW") }, + { XHDR("aviyybczf", "RUEpHVSrcCryAkdsghIYKphHtjeeHQPjAJGShCYXJiePwXNtaHJYVRBrXmCfgSkgUwkMYekSCtosj") }, + { XHDR("glkrshwxyouqkmwry", "mmIUnKVSSrOiDlNSLTWGQvXhsAnQWzRKWyGWvhbFYJuqsdcVQtTJH") }, + { XHDR("jeeechaxgiznecxzsu", "RfFwBWPgtgsHzmpYgTFZdsFMQEEOIZtANMPAHBPvdkqyFUs") }, + { XHDR("beerzvhdvgcnqsdojyve", "mWoNajktlcrnsAsnerzsuONMYwAQdFUafGLydWElnVszAycxaRLvTYWZzpODaGWOKtFTHzJnfEdYIwZ") }, + { XHDR("iy", "eJXozZKmmspOPFqsDQhRERunZYdRTqpVSMgEHusVlAdnBtTKDpjt") }, + { XHDR("qubmuutnal", "rJhiOPcPkGdYlnfFxrmpGsMKYZPxlQHTBmPkMjAOkbRJctqlytbQWEx") }, + { XHDR("jy", "KvdbkjExVmnTnqYFDW") }, + { XHDR("ctliypxegrm", "IGfFmSahErPahefBHrjuEf") }, + { XHDR("tzjomc", "KSwJAVrPqiKRyvfhMVvXaUXtcrTLeueFycehjOaQBMqiVZEqXWJvFnudckcTbvDhOcjtGpKlVMwu") }, + { XHDR("dcwuqdoyrviyq", "rTygueqtUbaGnohcrmWujxypYiQLkfsvm") }, + { XHDR("hwsbzhxbouwn", "gOeXeFFkhTQlaGnpJfuHLGqFJkksTzFoCoTsLbOYPfEfjfJNTMQUkuEmsiAjkPDOHOA") }, + { XHDR("gbvnjoqfzifypkcioya", "WuDswVMLKKfIfOsCIqwLVXqizcGzFGuSJFLRvxbdXVdiBFEmpEqKKxUPOkeCzAlpiHZsPL") }, + { XHDR("clfkxscjqfhy", "wXfsSDtsD") }, + { XHDR("yphbankwzekxg", "DpyfHMcoVag") }, + { XHDR("nbnedspgyee", "yPSHjxmumEDmqUAmckBb") }, + { XHDR("afoecf", "CaZsnljmsre") }, + { XHDR("koykttwozcnvvdgg", "aTwZGryvTxRkfPQbKbYikrjmxm") }, + { XHDR("aecczyboeudltqipy", "keylLRUEx") }, + { XHDR("juvjtsvo", "OsmBHwKLRZCoDkugiXmyUqbBwsICmQkfyRGwzNHBCqXUtZZXgfFsLfDehKrIVatbsxSqEWDEyPnYDSq") }, + { XHDR("ssovmmvonurkj", "dCCophecSNhcbD") }, + { XHDR("xeilfz", "OhZRnWEhheDxQQysMadAtWHRjntEAfuNisyGpUHfqYNlNKOKfLTwweMqRT") }, + { XHDR("amwgqukuhjprraiba", "fVQsEiMXAoMZXVFeHyZEbGKOFOGfPLKbuDkIOLiTekOlmxCbCYgNbDbjsYZGbOtGtajjK") }, + { XHDR("zvnyjazvmqdfcipjspt", "zCoOgqZPdwveWJEzscgCFCNNBszoesOxGvfiirDowufQgkfSBHcZVoaTkzSShvzQfBYZkvoABb") }, + { XHDR("hdyakmqnmhuyf", "zTHWqXb") }, + { XHDR("uhlsxlladm", "YfKioZPjyPFDuRRUwLoZMICEAiZlqNmIaJKlyhwdoDD") }, + { XHDR("fvbcnkcxhjnbjfyg", "Sxzgo") }, + { XHDR("oqwtnjdgl", "edomCyEXrktcJhCFFcVdBTXLwPsMsdycDolZaNBWWrkoAQKJcjHXFeEPEPCeZqdpihIo") }, + { XHDR("mlzxkbfwqhnvpb", "TQgIhRqKqBExEEsuOfjNYiWWEFiLRJbAdeYKYlstyXYDfcbsd") }, + { XHDR("vgxrtswmmo", "SgQEjegzVBWIDhNyMlcr") }, + { XHDR("euaknefhxi", "RNKAvXEKfSpPDzeVxDEuLttHMUDqeYVfgNVEjsmeLNLzwVwKt") }, + { XHDR("okmntyhpwfeiyab", "LVcIZWuZuMWWlLwUVdQVqRK") }, + { XHDR("ksnqd", "paXJYWXImKxVG") }, + { XHDR("gloejieq", "IEjDNttWqxLRIEwhChrhtrTtessUzlfBKiwDglDwFvvzECbGoWIzAciCzCgESllnECoUh") }, + { XHDR("ofsmjq", "ecH") }, + { XHDR("c", "djQhrLaNKwMFKXXGEYUKbicGfeDVjBqSpXjDLHCNdyHVbLPOHCFErnkCftiqItqhUryUUqeiq") }, + { XHDR("yhqzdnblwnwsfnmjf", "frKENbHrWgQttuykSMtFFkCidxS") }, + { XHDR("buoknexdmf", "kJJPciDVhHFpQoUufKmohmybLdFgYOMXKjuGffNdco") }, + { XHDR("ijv", "kTUkXxHbSSNIYQwrkHqfKNMZDPhVGwXYZm") }, + { XHDR("zailuldylnjnbodnxfy", "PtOrZcCmYayyMVcVoeYevogmjXkObcbJbaZDowIexDMdZItUHNlVAgvKeZeqlp") }, + { XHDR("wyskwt", "VtyGfMXstmQdmrpwCvLMEaVZaehjzFrDZtUHTRtufVHBKwAlAAaEpCYkLvexRSKRjnmbGMT") }, + { XHDR("rtkg", "rmRyXTLBNrspTilqzxjyTcYEcRwfwiZtTgnpHmgtlfaFrqpdKe") }, + { XHDR("qhrpgetqfrtannb", "MJoMBOvBrJBIeJXypSzUvSSJDjJCuniWHZtQSWgwGFEuIoFeHIXQYcGiGStPZuIfiotyQftEgPNOK") }, + { XHDR("capchnbdtxxbojjmd", "ZpCGwRNnOxUUiPuKYkNQbIcPQKphtnhknvMRwMAMcxjscNWJeKpJxONdGyP") }, + { XHDR("ge", "iSDuOJytbRMDGGVWuBgOQtWLKlTnvAVSCksFEQyoZYqPAlecKoEc") }, + { XHDR("f", "aTtVnfBxmGuJiEmIRHjFVelqPKPDp") }, + { XHDR("luomz", "gamEzwbBFlrbHXMnFWMNlMdtSICBLUbRp") }, + { XHDR("xipjjkpauudmvwoo", "tECmwTvfa") }, + { XHDR("i", "y") }, + { XHDR("la", "wKjHYjsvOiNsXqmTOdbQzGtyjYaDIuezjGxyGDQGdWqODKwoZvP") }, + { XHDR("lvfvrplguzxoqm", "RJiqDRsQisYnYVwsUvKgXIIXkEILfArrclQekcmdbRlgnpEyHxqQNQKKGFgIEEmPjeNmlmisjtOst") }, + { XHDR("gmptidwuhewancewcng", "feMxbmQHdtgaNqMUKOUMXtkJebf") }, + { XHDR("twmxs", "XVdMJRuwQlRTaBzvFVbpHPuFvLYiYNbbwwXnatGGaOREvzks") }, + { XHDR("tzdxjn", "bpakXtHeIXxYHpHrtkwvXeQMyhAzyOohgxbPRAiRardWQiDcyAYflP") }, + { XHDR("jfdaftlbpulexnel", "fDiCfNhIFMqOEMcpyvUpHvSXlcBZDJuNzlqWiiAZIT") }, + { XHDR("prgqguczyrjlexaubmc", "r") }, + { XHDR("zddiqwwtkjrobrfp", "yooEEnlZgHAeQ") }, + { XHDR("iukrfkkwsgfc", "GgKWSDlLhtZxmp") }, + { XHDR("aixgjmkoacrqc", "ETNmjlRPtKuXPYTzEfEfHUSIJnSgLmENUGavkmcAnWqFMafYBJXlgbLpmmSSAUhj") }, + { XHDR("jmmhbnjzvjrhgpi", "fqkFC") }, + { XHDR("ggiwdnvo", "HB") }, + { XHDR("q", "VGMvZnyabbvmmyL") }, + { XHDR("d", "pTcsfYnuuMWrB") }, + { XHDR("cfvs", "cEkJrXxikarHu") }, + { XHDR("ptcyxuadnisznobf", "ggafIqbbcbJxTuhjH") }, + { XHDR("hraheueyrtpopsrqdil", "xrlsulwkWLXfvUMsaqgXSHKJB") }, + { XHDR("gzfulviyrofb", "MWMieasCDSmlbceynvkAbUYaeylznXtLiBRCjmvpERlZikhn") }, + { XHDR("kxlooqdgsdbugbswuu", "bgyehiJLipqAFPrNbyTVMjGBbEVwgTUysgHiABuHejJtJGdekkemOFANvPmiuEEPfKGCBzaSITBQlc") }, + { XHDR("rurzpq", "QFEFBqibtlinhRskDDtX") }, + { XHDR("qiqjgndwkseraolaf", "AcznRCJDLVCTwWSlBJGcvbiCdUsuLhgEDMXFkWuO") }, + { XHDR("mnftbfnhhebx", "HoAfKIt") }, + { XHDR("gamnmtsiq", "XuiG") }, + { XHDR("eeghvno", "yq") }, + { XHDR("yemeb", "SiFyLYAMAza") }, + { XHDR("xrttcqqailaupzjq", "GZUJmEXHiXQlAZIuomirgeDqzVYmWhOstvasGapBaYHHvzcUobctLgeZzgKzYXczmIftdSMSL") }, + { XHDR("velpjafgmhqc", "AkbXkVipvRXZduYMa") }, + { XHDR("oaxkdu", "gVMufiMqToAPTeZPuGReuMDSPJePjAOgqNNYuLicjSsXVFSNdGPiHKXfQFwQuhyOeDTKlF") }, + { XHDR("tsaqwevtp", "fUbnOmoDQCkoJeXUFvpKXPeYhtoaqrzNXdPwxIebxskSafrXlZDsjoKoOpUPOoPvst") }, + { XHDR("mceheftdr", "KtEAMNWuDqwyCYxVGXZoFIoODQNNnxgrfIkhAKhOPjrHEpxMIYMaVWqDiYNrUoErLcLublLl") }, + { XHDR("ckryavazcgsuu", "dNpOiJZfYksHxWp") }, + { XHDR("ungqbzzr", "LXmDxTgBpvpjDliLuXHdaDoaWoxSlNqaBLyYLYglBsonXDmMpUSgdyfnk") }, + { XHDR("wsfovlodnfboxggdhz", "hcZMUAVkNLNLhrdvaFoomcBBkoMyOVvBnpnmRphGPNENhiwmRlQzvfdmBOAWkOHHPQky") }, + { XHDR("joctap", "hxPQyNvXOOFpfCWKwPNGHvlX") }, + { XHDR("egqak", "QWBzuRUBazfYWevcbzSmQYYnoigJ") }, + { XHDR("bstiyaq", "kuUchQrquMvsUZLSqsKKnNNSBnTUPymwduOoo") }, + { XHDR("csejv", "KTzBIxTiIQcjCqcTGdpiSvtsgBbQUtUyhcttAeTImpqqPWdjVxazT") }, + { XHDR("yxngljw", "LgRsojxhVipHvTxZetfIYQwKHoFrycVRkXFYwljxXMJNtK") }, + { XHDR("v", "eBKhEgpupZeUwajMYQOizXVWrWrQOclkRrEoTgaglxTKESSwSvqpK") }, + { XHDR("oioy", "EQyTJfuwNKSSkFbTlueQDVsTji") }, + { XHDR("wsnalfzsaftrcqbr", "sxXpTKUqFXUCsuHMMldsteVEFXOrXkcXFpMIJMRToLgdMRGJuEG") }, + { XHDR("e", "ZUbChknaYjVdzTuqilnxuLDcRBBVrzQVW") }, + { XHDR("qrnksevwxe", "YXShgKSelSkABGEBVIxMANFXcpvkvAkpTzUZX") }, + { XHDR("jstwbcwkoebm", "JkvbGeaqDRr") }, + { XHDR("ruektwijndzakl", "lAsBemJoyHtZDrjnEEJNLAJHARBHtMmDgwiFxGVdUAbOfSLRNqaSDmirMlRLfyQUnCbBe") }, + { XHDR("nchjqrvfvmwdgwu", "mQyJriDkRMATtorMeLNgaWcQLCynAhWXECIZQUCkgArZCWQapDlBadXvNcCV") }, + { XHDR("szagxcvehdxhlfnaar", "DauTu") }, + { XHDR("vmgqilyfh", "uXQIhDEKdqGbrwzqBroGOVFPvqwQUWU") }, + { XHDR("mdsxquwqpnjil", "XkVMBNVkfurzqPZrdnwo") }, + { XHDR("mgltjepyhzpl", "zzHaRIEAVJWYQOTfzisOMitVRhYkPjPzU") }, + { XHDR("atodtorioqyhxizppr", "bQonqjTRXWzSuTmopXDYETVNhcCuPpQCAMpQyrZQUCRqUHRFPrhqREMorkFFT") }, + { XHDR("yqzopo", "oNWvLVSQPlEjxYEpVcNrtAFkfEPElfCGYUQXnjgv") }, + { XHDR("futgucatsubyxysakqur", "DqqjuQepxfgYsitvPVQDHMzkhDOMzhUGCSbGtUiZGTyS") }, + { XHDR("pjs", "OtepKYgtJAYHBbGCWqBiTPjLGbEvQzeFSUzlHceQXqplhtgcbIbGECZgLBzhpbJgVqGXjPGKhL") }, + { XHDR("uysfwlczfw", "SGzhshVnWhsPbzchLWSs") }, + { XHDR("bwrs", "bxPNbOyILuYeHJLAnAdjlVbpTkIPoPwrGrIUKydPxVpbpqZpsAk") }, + { XHDR("imtwuwd", "qlfqsTzHrHxgxyLMKIIPvQfGwJwFIJJielJMccAanUfWhRQBPnckEFMtxNnPZoJwyvwegiB") }, + { XHDR("xxajtsxayxcehyg", "KfBeInOpRbCivKKHyOYbyuJdDFCtWMeadgsgmDApYRFiltLhlqsBTuqFjvHNaDKABjNQoEmAOqsTcSW") }, + { XHDR("rshrvixdyqu", "buQSbyVpRcVsDpPLFIXsXovqGxHnlTehglecBFLrqLxXTQXbrJlqLbarFPEtrJqMeTppMVJm") }, + { XHDR("dwzagbhubcdgo", "HfCdLNXeMkvYjnEUQuUsybfamYIzBueDQlaWldtxJaEvplsDhcFqcJBlqruVKqYadvPqaqTfluBhYq") }, + { XHDR("s", "yOcxCdJCGCovDlZvNPQlQethMBQFHOlZFCztYlwMGf") }, + { XHDR("ke", "XDkPLFGBOBrfGVDYSHSNKmOBrEFzXrdztmZHOJbukuTbiaxTRiimsLoem") }, + { XHDR("qjopwxsvmdqpsm", "joNHpJfBTjMIBjiOTXDOquGpEVyDHtZqdzNObrGkEPMXIRpBoqMghICgSuL") }, + { XHDR("nxhthnszcnpl", "XXSjwJzFKtJNnvSgWlYGGviSmXAJQAaUQNbtwYakXuaYGG") }, + { XHDR("k", "qqoQyunIZRz") }, + { XHDR("xseiwoypkvxdtcy", "sPvouL") }, + { XHDR("vdykzsgrgvwvvqq", "BPzGjEKxNQ") }, + { XHDR("icldginhwx", "OYQnzBMaHlFrTFfwateNfxLjLYgR") }, + { XHDR("bbncmntz", "QrhdEMpEcLwpiPREMPzloQbLenBYUtCtFOZyEkIDXvwhKQLIADvRJbTFLgMJtJhtWudb") }, + { XHDR("zxhynusigyzod", "UNojknjQYXigCd") }, + { XHDR("clan", "sWQIUefAhAVEfFFzNNuPMFfJzuMVmherKfwKJEVTSAGBbCUcJU") }, + { XHDR("utizjdfvpsdd", "GggrPfoEYOCoXNUhLXCyZWbeArDgccLCYNskrssTzVKiCAdVheXjU") }, + { XHDR("qupzxw", "HYyPIRgvPdKY") }, + { XHDR("yjd", "LUwCIJEwIcBqkiYhqLqxpMlchqNjHmSehlVvWBPcLmMVXcivEYvFQcoJveHbvaUPTuWei") }, + { XHDR("yonbjqsthhdksrqzai", "kpMsIwGaLftpiR") }, + { XHDR("vl", "VNnyvLxTuYdHyYwocztpEPz") }, + { XHDR("bundgsjactnytstmnaco", "BWKMWKWfZGEfvodUeCONwWZqBullnSFTPeyb") }, + { XHDR("kjjixluaseqsrsiyc", "UdhmkKdiCxkkiHJkXTjZsPGlzJasMIgWSHesWROnMqDMVvYVa") }, + { XHDR("rukrmlnfmokb", "qUYppfwvYSsfthXLTmtyeKfsePDpmGamwQkQxcyrtuAtAGaVOuW") }, + { XHDR("cnygfzlafirageebi", "VGcLHylARPZdJwqdgulAaMmdNwymWhBYoCfnsUlqqSbEuayEzmYneXXVjCQSYOOuiITLQDBD") }, + { XHDR("xjpfltmqcho", "vZgdkMUEBxHH") }, + { XHDR("nelqpuyoejiaytwgq", "CLZOE") }, + { XHDR("aoljqkjbfpvroepmwmjx", "FcGWtXpFowqYWHhalucDsCdvjcDzfUHKwQAiQnyTSjInbbWBpbPYXywPxStrsqQGV") }, + { XHDR("naho", "EyrXyWlbrknMnYCHmVcvtsXFAmavYdMHrZrYSUmPkkcVVjfPmtymxEMFVkzoIt") }, + { XHDR("qcebobnrcgcoqhibp", "SHyqdsIQSPjFVkGEuFqf") }, + { XHDR("vdwwzcrqexi", "IKwCdSvPuQWoXgdQcVQwUZJIebanbypQLTxQknuleOXzNhdLa") }, + { XHDR("phyrul", "sPZYElmaNzNljixCwpvYYDabqZf") }, + { XHDR("qvvz", "bONuqlrfWusqIuJQxgbkZNBilZXGAEdzNdNbjLeNgEU") }, + { XHDR("zgwuq", "SZPqVs") }, + { XHDR("bgwukbzekfoavwboyk", "fwmiSCQdxaWNqlmjPiRRoPzRSZNCRCgJtvBOALBFMRDYNMqbgtZANcO") }, + { XHDR("wihyzlq", "atzTWokHFQ") }, + { XHDR("cujjusxbxxkrwxpsd", "amHGzNtzGZCimeFUoseATdxWwsZJR") }, + { XHDR("wxqbwlrm", "LqMYlENZKKvACITqmoAfSHMLtdRcIPZYcBMTkAccCpCDpXJmjabDyBsqaxHprZXjMeZcsndZWBqusMz") }, + { XHDR("vedec", "YxXJoAbyZckbuDslrDHWqsNOzMNvxbYDHGgZtGjAYQIDsWvdtKsYhgieIuHHGUMicIlfjozg") }, + { XHDR("bgddarttwzoistmz", "slkJvEz") }, + { XHDR("kghcfepkoazqhnb", "uMMCzvbXeQrhPPsDSzvIUDQZENdqotWhEcIlHkKwaUEymGfhWnWgfREcfwjAffakziHKZqbIRnPC") }, + { XHDR("sdwpbsprwwlhmukn", "zZteaduUTWCRxCHUBujLCARNKXHPLyBJhmvERuIMqSbCAnQppguXQvntZ") }, + { XHDR("lfygy", "QDlwaHbpviaLDRHKYrWwTsBEwbebQGlymOWWQQzDkfQvOfDOyNPnMhwBaFseNwjUAyzBOHoRoBylVnj") }, + { XHDR("axcldvxzshwc", "QOrvBJAWCiDEFzgmqj") }, + { XHDR("wiywwulhjnacwrzatts", "ngaWOBiPzPFVtxfKPJkFfdAlFzspedrhQQdCUyzTKocppelmLoPbNMphwZsKItrGQ") }, + { XHDR("tfpfok", "dosOYGGVfnjYNpxSDsXFtWxsTFOCxSzoODnAAT") }, + { XHDR("efnqfjj", "fUpyl") }, + { XHDR("pohgq", "xwpPheEZqEMSyxfUffAidyxmWADyEOMHtPXC") }, + { XHDR("gtyttrbgmfwaz", "hwbBMUGmlZqQeCxvtYkezQLWp") }, + { XHDR("blglaq", "wwRxMMkzbsJAAApzDIByMELAQVWIVWGUBGizSvKfqGJKJGVPIvVwPgFYxTjKPl") }, + { XHDR("wdibglugquba", "v") }, + { XHDR("kytxsoqabnhnfj", "zeVnfGjpXzOpWqisCLlwRBiwhpCGDJHPGqqhhUANbeFUfVonliJMqqGCvHmMBaMQN") }, + { XHDR("mvctambdeldzmxwyzu", "CFOfqfBYiPFVeDmKhoBVpweTIOuNxelboFptOyNpqfEgqPtNXEopKeCaTBSgVqWXaBkcCiHltFSYdj") }, + { XHDR("cgisbjzjxhmpivjxg", "RMMEmOySfSKXjRyxWeSRHPRXxBTBi") }, + { XHDR("pxkhbwouoy", "REnWSPMxzpQEsSvnphpCnglAqiCeXXFeMc") }, + { XHDR("grcayjbymigcaxnp", "vqmSmwORKFivhURQyHAswgJQBASS") }, + { XHDR("nzzzutukqo", "RJDVvnOrESUzmmhgHXFqBTtHpCkgfpsqJxhRRWMkWzTmU") }, + { XHDR("jvprymkfoe", "GYnZVbIdPuDndGZTcwfQgAQIzkIvzhXXqbMmeGRkHTLBzDsCoRyhocTsRU") }, + { XHDR("r", "srEYETxjitnSkRrtFVbrPgyFbLuclzZNXIfymjDFygzWyUbpJbZKobMVSbd") }, + { XHDR("vbgmsiglw", "npMHbp") }, + { XHDR("rawmwntugeqrxg", "ByspxYtVajvPyMklNIXozv") }, + { XHDR("rexrthbdnrsxdily", "YwHpqBxsxvfIjNWsMp") }, + { XHDR("qovefhnjplytj", "IOoCNVbPKTkgtZWOIFmWGaEGHiLXbhhmlwxiJDZFpJhaLJWJqBRaibADcQxM") }, + { XHDR("zxtjvoxudwd", "xCnMxapNgjUDrLwDyEHFYzUQGLikrjCfNUgOtUJBuzuWFOexxYQFzU") }, + { XHDR("csxsdmvfygmgolbb", "MMNXykgzURLnjgTzmnerKyhmJGCWCByAEtSELuFXdwCYGRdjDIuzmJAAhRuOfJNPfEeSp") }, + { XHDR("qygcuqucdvkyjwoxx", "YwdzotTzxeAKfFiIyGCimVgRVSDXCobnbwHNK") }, + { XHDR("q", "bLDfJFiILquVKriaPQSJpqVtsTaUcWZOnr") }, + { XHDR("pld", "vfaLApaN") }, + { XHDR("cpdpnydrnv", "uaHroAAZfMPGLyKuzioolb") }, + { XHDR("erahmgfgnvfaosjzn", "HLsqXDwTtFsLbuaeUcDUWTGYbkLCdWpVwcayWtIZMKlgKTJbEUaRSYUmRRr") }, + { XHDR("tqgvbpcnl", "IRClvfMRtoaBwWCXjDICwlkeaBqUtCyWKprUuwtzud") }, + { XHDR("yklezyuhbwjdeykmz", "uuM") }, + { XHDR("glcnraadktaypt", "yt") }, + { XHDR("xrkxregavvjxg", "jBOWpbgTDLuJKgcZxJiquOFzIKQPzIkFMEPIMGVMlBMTCxBmYsrGRmxEcCFaq") }, + { XHDR("dkidud", "yvnxomQFcstdrLAkYNMgzOXvhRRTqgtzazgzFgeM") }, + { XHDR("mgswgxchpvnkwsylodg", "GRutOjZoGjkNMKweXgnZaBXqAbztEVTAbKwvIWlQCA") }, + { XHDR("uahkzpeanfzpczabu", "f") }, + { XHDR("ekanqeyqhawfditnko", "HRpRByrzKuSsqVCYZCvAAQXizUuBFLYbGZyuwyTh") }, + { XHDR("vhmplqpupbhpzdt", "jFnoNomCIPufXtLhqbqqPfcMsVPUlTaKwkcKhAEtlXHKsrkOTwHSIE") }, + { XHDR("scc", "QQmZCKyOgisSRYJAnVgawqtJBFGJULznwJoULFeMcpfbYmbFbfNxDE") }, + { XHDR("dguubr", "xSNqtvMGxcPgigUVTyMqrGBRYpmWdqXBRnuYRNWpnyWDRbLSoipY") }, + { XHDR("xsixghcwlsst", "sTaKsYQvIdufUfoWmUboQZeDILlSILxGUIjfIoyxkpxPVVqAGjAUSzZOjcigxbFq") }, + { XHDR("ahteovowybdwiolnxnro", "GmFOFalVszZJKLiyVdyKLvSsJXjtITqWIIxZEOLfSLNuLMyTNrEBsFskNcTtdQryduuuSFIc") }, + { XHDR("z", "wqEexmcZiUkgzmeqaEtAixDPtNi") }, + { XHDR("kfliypha", "nueMQNnEhpNmtpdVsPQpdrIuCqQWMhbjZLyNGDYAGlQoRRmgewutUTPAvvJevNPnMjxlUueowXPL") }, + { XHDR("osq", "uKWIGtKkTZrONudiIlaYXnraXDgHaEqqJMpTolNFMCQAqsJZ") }, + { XHDR("uabjuglbsfmfgfhrupuh", "OcywLftxghDLVJepCgdqzWJQzY") }, + { XHDR("hmvpma", "mWDOKQVyksuuLIHLbzjhRzldaxCkVzeSMVZdDNBJrhkRzkPzIRUxRBQvNlxLYpSeSFmXqtreBAIsGlH") }, + { XHDR("wwcmbpopreecpq", "wPAgSHJtsutSDiplaFhpsMcg") }, + { XHDR("wslj", "ugomdPdDDAlDHwHTqMBuTzJSzOngfKwGjcWOpMXkqHhsiThJbnGblbPGiBZNsWqPn") }, + { XHDR("xdtitqj", "VtmLJnEPiZIzpvE") }, + { XHDR("qwabjooiiallpbznqbp", "srPLxrMjawWlQGOOpYRonWfHXjaMrGBuXZqtHbcrfMEQSrrOHQg") }, + { XHDR("t", "KotVpKpAzxXKrbVpjeuMYzqjYRAlwddKvVvQITELPHkuAgXWSphbZDMHoUbxTYBesifjvBCGWBBpiOsu") }, + { XHDR("hglf", "EwyyEpagVKgzBbaq") }, + { XHDR("rcvmubkiwytj", "IMrmHBmkLYEPBgvPkCIvQ") }, + { XHDR("krzlc", "ebQLlQYqfPMnQLbJENQYAfuSSbUvsKYarvXxaatvlFcFgMV") }, + { XHDR("jwpj", "ew") }, + { XHDR("w", "PIyKITREsUZmpzhnvKitWYcGhbDWEbzVrjDFaATGWqHigOhE") }, + { XHDR("mufbbfgavczmurgj", "ZiLWYOrpgSnGRyfuwQSNCBkYDIgzgvUXRwcPKjaKfkuGYoKmFAromHFKGpbcyBdLHvTbbptlRrhLhoCb") }, + { XHDR("mbfuqmztket", "KlBno") }, + { XHDR("t", "jIsTSSvdgRGctPuDaygXFEAqPNlkErVgIUaYgIVNffooLk") }, + { XHDR("hzdytcczuamedrp", "Zszx") }, + { XHDR("fdmixewtrrjfvj", "JUMCiBpqDwwFLycVbnkip") }, + { XHDR("jxhtqiihnad", "VVRbEUtIITJEOCcRWAClRDE") }, + { XHDR("bmbkuzopwdelpvb", "dEPbZ") }, + { XHDR("uk", "JOgKDGLbpjqkRTiORjGZpSp") }, + { XHDR("rzsjfeqxysmpaa", "RkaoRgFnIPyPwyqVehfdnNihQhyxiYHYrmPUOtWzqBsmxidnsqAwKQCu") }, + { XHDR("kcggmrvzbpsahntel", "HhbtRbZRODcZJSwLBfGgYadhgobCiJywsBMLLhGHF") }, + { XHDR("zrertk", "KMirBNIgFlHtbDhvprpMolrmMvQxYCrqdQnrdt") }, + { XHDR("jxrtxvregiraqveabfy", "dDqPOIhRSUhwyBuBUToFSAxiGjqpRWQGraQYCNuXHXhQAbqHGseg") }, + { XHDR("dhtmblfvqozkojrjmpxu", "vwRyrFYFA") }, + { XHDR("artzildeec", "LUNkVTZFczqnDFkKMCmIEK") }, + { XHDR("kqbcyorivmecvih", "TUGYXJjUAzmepujdsxlUmkKIiuZPdggjfZTgixoYEpbtDYYwxLrysyWDvxsFMNNgVdLXkGwKKgxetczv") }, + { XHDR("auipwfpsckc", "rUX") }, + { XHDR("kbothrsi", "GTQehfSPifqdxmQaJHNGdKMLNUHtHcdlewjUFKafmmjf") }, + { XHDR("j", "tJAlJvXfXPPMpmTlnguWFeUblIJuzXRuEFmlntVuYoRi") }, + { XHDR("ynmzw", "qkcVsBVEYSdnVKV") }, + { XHDR("tebjkp", "qQtrMFTyljEVEMGZLOrBhLfzmPfCZbeIKGDivVUyt") }, + { XHDR("kr", "YRCyGOd") }, + { XHDR("kqdtjscfe", "HBHqFAQfTuCrMqHUyyBOFJiHQajRyugGCcHGnLtez") }, + { XHDR("xnxwgfnkej", "zFrQiJlndTDfQGExeo") }, + { XHDR("n", "BrZBOKRAKZnmKakcbr") }, + { XHDR("rvdzkbgjktmqrnhu", "UvtwpTqedKmuYummzPJFgOFHgrFixLFdgAAGBTUMgBAinLOILOqxyfjfMaMbUvrUSeugvFVmNDFQLgOP") }, + { XHDR("ffalcygsqxwhtlzfs", "YXcmtxcrLIMIXJuEztReLMscAcRPIkMpTGEXp") }, + { XHDR("mmhtieeqqykxbxigwkfn", "hPHCDxrawRAnHjDuYdhDNhsKwTZRrEuETuvbTgUTrOribObWfDMcUfNoZRHHFjdGgjFNQtFGyZVmQVa") }, + { XHDR("mvhiqcdowoyxygrh", "jbdpYPosFJKDnVNCNXpeiWNJRD") }, + { XHDR("ghdgwvuhqrovmgjkm", "WoodzIuWcJTSGtLEsYvtwUHMUQDFAXtcDTQrxdmzNMXssInhuNRkPziluxNbYAhINPJs") }, + { XHDR("jyxvgkndsrjhxjsini", "niNlrICnCPQzGGLFIuYzvoMCMzibzvU") }, + { XHDR("okljdhbkwxettmfmqs", "lNioPinauCmiYAFovEYyFjlKDKZCfvlYsAfSMDIoixqazVGwMqNp") }, + { XHDR("uwlrebkptpoejeu", "nGhasuAeSZGZBzZJMELWwUh") }, + { XHDR("bwg", "UTwAQNlOEjJGtmtSYnbOEcNDeTLyo") }, + { XHDR("bpgpmrujaxr", "VjxjjYIKJLQPlfSgAsRexm") }, + { XHDR("yygiqwaunnu", "mJNgfVeTqfIGgYwhuMMYtVqhOZXmYUWgEqqfMsyakchqiASTynALoksTJkNQGGnXOlYOV") }, + { XHDR("roflyopiywabukejnuao", "KrqCkZFYzgYuSQejPRBFiLlscfEwqyYrmvyYzblTWYh") }, + { XHDR("cfrzw", "TjEBknfNhL") }, + { XHDR("botzmyhjazvfh", "cVSduAEnZmNQQpZRlKrxZzhFdrWOEFboGFRcB") }, + { XHDR("whshbidbtvzph", "dAvUxxIbcmWXPrvKgGHQGTbeUXzoDrRYcXDfQEcQZtpQLbuLATieUJdMLENAzsVFzkNyoou") }, + { XHDR("gecircbjugfwttkaf", "FEQNDlmVOOrvU") }, + { XHDR("vmphjem", "FpmiBxuVteBYMzaPc") }, + { XHDR("isqcbenjuep", "tTAwtuXXkqSZrcnKlrwSPrpdoLbXHwxzniFiTDWBOruditJxdZSAOaRwdoixEuNNLPcndhZXtLS") }, + { XHDR("pwtrrzhwloggbtwshi", "oqdhZugAfdRemJMTYsTBBFPOEAxIRWKuaLgSiwhrqsiWFKdCVxObPxOxcspQTuigtiFCBEtZ") }, + { XHDR("odfsfa", "ZdRlgZXPtKSDZgnzEWoAgtPVKeAiyavPdOFpMVoWTeRYbFEuroGOVYcqNcjdCfHpFNVUtKBHbzSYe") }, + { XHDR("kqwuipooe", "aiztLEc") }, + { XHDR("srwctuuoibbnswi", "aclIgeKvigRNVYmFgbiYpXA") }, + { XHDR("sdvawucuzczwgsmckyr", "DGYzPQuMHkMBNPfipLjqQVNzItPBhKyTgJlNuvg") }, + { XHDR("c", "pKMlbKEjwNRfynLmYDzAiWBesAnwSIfJaGnCzdyAuGpOhGxYTHcM") }, + { XHDR("kzugyfbxuwdecfu", "MhJUejgPLUTFjCyslcdHvqXlqSzSYQCdpBHmrVBgEdWZfLIzMWolCuUxjxt") }, + { XHDR("prexn", "PXZqAGMxDqzXiKMmEZLJCEgxNzAIVaWUdcA") }, + { XHDR("go", "ePzJBMKuTWuwqMxrmfMzeOVxPdFfLIUGoiLGFRrAiAPCrnhqoyNKvBXqviUBuUgzUdVIOwOwBVCcXS") }, + { XHDR("osg", "YhDvghxIsSsYPvIuwCxMpVRIzazGzsDGIDValJIhrryXHyqpvlpXjRDnJYnYATHqnAJOkQdkVP") }, + { XHDR("khmuwkguivezz", "VLvmythDtAUhNdeeTUFOKtEXTZfnTRraeLjXJOdzRsoTgevrmXlOnINkMRFmhhRMJKAfFlJpLfoXd") }, + { XHDR("s", "GicOLGscgyMwRymhZAibsbuMDFNSqWLaAUpAIlsVpkCopfCtJJZNymkqwADHwqGNenkX") }, + { XHDR("rnbehtjnxdmmu", "igMwFpCtYNHYOiMYvgiakzKOtaEJCtXKutGbNPENBHIhilzZJsmaCSOXuimShxfLCZaTVyeN") }, + { XHDR("cfvzycaujsjbdkdci", "DghJbByWJVrvHyYjonjhZybknQZkSnCXcdamvvNN") }, + { XHDR("idllbjwpdeytwqrsiv", "ABHejHlXiPWLdPOKmDiUaUwnajipVZWWDZzGTUpywGJVxUpbtaswlMpahAbWLGxEo") }, + { XHDR("pucw", "bwkMwUbqGuYzwJEYRbByEshGweESxFzxkryhXVSYz") }, + { XHDR("jyvnvtzcfdafiwqvke", "hJjZVExBpbgGRVmhqPVhATRMfacxkTGM") }, + { XHDR("celmikkkjw", "wNB") }, + { XHDR("vebqbmcwnxenhoinehx", "tmrUPtjOjhrvxBmtOfuivEdWgiCjUWuZfXhlwjDNndwLyDvjucYlwIshzGCnkPpHwTNvtu") }, + { XHDR("bxm", "dWcUyKbX") }, + { XHDR("jusgkmgeui", "FmeqkflITxHatSlyalKuedgwdiSikmqDNSRRUZhLrYAcqlbanLNRfLDclioqhGskxGjDsLpmUVFNM") }, + { XHDR("ssk", "fwGhAmrHzaETUVwrzk") }, + { XHDR("xiyi", "cYILKAObzE") }, + { XHDR("xsqtgqyga", "LAoFTlbKWtpBarahMjtOuowOd") }, + { XHDR("qonrsydlwkymvzqub", "XmFESZWCsKugnnThZBTJChOhcjBhgbuBNdACtrEtosurQw") }, + { XHDR("ncfedv", "Q") }, + { XHDR("iauybcxbufedckdjpv", "zvMjkmpuxOOwOpJPZfTErIFj") }, + { XHDR("cnvsey", "FkdMJznXKvQJVCvc") }, + { XHDR("qozdupjgvxa", "LGElzgYSnUibITXrSPbIwFNVrFmmNiXzZTISoIj") }, + { XHDR("rpfitnwhdotwxv", "mcA") }, + { XHDR("rprwnnckpdcm", "IagqhbcGbTNDCd") }, + { XHDR("szqnvf", "oG") }, + { XHDR("vnbjbeetvkbe", "SMTqHGBRHXRngjoJaYLavlbKHjzsxnLyDMAHXZKhnqCpemJJuTZhJntKmzTTOORbIdGxvxsGyIyaI") }, + { XHDR("n", "sEoYyZtOqlqibaEJMCNxmveSkyZVzGzyTkfWndtpAEFifvLGoKUMaPCQqDUKWK") }, + { XHDR("ucwg", "dnS") }, + { XHDR("ewjmmy", "tHHOLzaiKLJrrVdAKO") }, + { XHDR("qwfgogszgvohg", "mYlZjaQMyDrVilTFDJvSxpsGfMmdTOMHamiNFvsk") }, + { XHDR("octptdzfhqpx", "cZzFglvcEcYtOxxNnqRHVhPemufXycKG") }, + { XHDR("daeybvjsmholylwkhmtl", "MseiNDisooKXDsZhEKZF") }, + { XHDR("nbjgqwlsetwkwynbmiv", "VgQXvfvWcnUJHOTrNdFHnabSVhOGTspgqdSYlyTMtdcZCYA") }, + { XHDR("clf", "SqOYNV") }, + { XHDR("ytpimnnjvzrt", "cPdgysioGrAmuMYPfZOrVbnTqCGPRKPpqLNaZLSTzIyCQsSdKQKfuFkpyaeMMWz") }, + { XHDR("kl", "BOLQZuoWWjpeanLCtACiMyZQNlGpeeQyReXwaIlSrRdISgRwRuOzsZbroeucyOmOhXSD") }, + { XHDR("mdwjrpbmukrxhgnspp", "djUsEfeuvrDnd") }, + { XHDR("txcjqtj", "mBRxvANLaWPbXsNklRJLzJoqGWgPXJhKOGXwzvbZegzSUIFnwzhRcrbioF") }, + { XHDR("bsjchvtpndskcf", "lFhHeTodUUTHZdjHWFbMGULiZkxUVEdJMrfLhdsbCJuNZQKgCwsnVlcGHMrTdgilwqqSfCXapyMP") }, + { XHDR("jz", "rlKjrBTHLTmx") }, + { XHDR("offtls", "CMMrgGhhbsjJEmfIThKssFcPwYkSeLwIiQiskXDuWSQrjFEPcVbhwBDXL") }, + { XHDR("un", "cwzSLN") }, + { XHDR("brlsuvmgwizduasqaij", "lcPVwpWXTjjNZUdTyrnJNWwCZwRSmktkNCOPwsBduzhQeb") }, + { XHDR("objhcshkmpy", "dZswGBGoOLLcoQAdJGHVqOggWBXpfgimamTAqdhfcLXonLvHXdcOAqrDdj") }, + { XHDR("ozkfvifcuvtme", "DhkPCCkCuCNkPPDD") }, + { XHDR("euot", "bKNXQnKWxFKIvYNePgatJZeWCjzyKfSZPZtmTiUfPgNVMsURlnZfyzteI") }, + { XHDR("etfwcwkz", "PzMQwk") }, + { XHDR("rfedorzdiljbzdmxwgwn", "ypWIypsHLMlkzSSsPcRLJHOFfFJCw") }, + { XHDR("ozezoic", "gumdXeqXUDgXscFYhNkSIpf") }, + { XHDR("lpdvy", "SyWZuNmiATOYbqnahnRpSWCTghLbQgUNPLXvKxShjrqtiROarVelqpC") }, + { XHDR("xzoqojvxi", "PIbFROqIhmdSPlePvObt") }, + { XHDR("iulyamhe", "PxohigVkTbxYBnogkCNHIrSxgzbk") }, + { XHDR("chpdzivtvlarz", "vcKqIbvjYXDRuLVwpaFEHmkLPjnSnUaIAYjAsdoEhKsWshRXu") }, + { XHDR("njmehdoec", "qTorYXcaQbuaCUmPrSQzKhdK") }, + { XHDR("csricvkvclxbxwrf", "caKUCfxGnNfsWjLThHaUyTGEnIvXJqUzbyHEISaWKzgTeRtpy") }, + { XHDR("fir", "IvEsCfMycjhHLUtLvVrpTcXfxQbEQDETbBYUiVGcChwEyY") }, + { XHDR("xvo", "GScRgNfsqzPbuKToUQFonGDuKZWotvOdDKaavxjEADRHzXdNUYvTWYB") }, + { XHDR("xlcdembfrnhslqucvbgw", "EWQRawTLESzCVxOpDVMmZxWTWqlMMvBnONyqnIDigsCByYSUTDrMLGjRsZCGnkquxZEvlO") }, + { XHDR("jgfgmvkderfym", "rdPhSxLmTHylNPpZcsvjwDawTEzboKAmBSlglXaKmlpfWvrNcSNcxnBvdGHJXOUaJPtGw") }, + { XHDR("ejbqhzikedxxylmkyqul", "EJndIByxlwSrzAypMkljmgVzfyAzrnMBRWTWBfstFGKFunEAXWXMmQbgoEzaDAxoMW") }, + { XHDR("kzjaiybkamcj", "HcTjcQdfHwjVFdPido") }, + { XHDR("mfpupqtodbmxwzyvucqz", "owoENHgSRPKFDbEvBdoqkggvycih") }, + { XHDR("qupreoulsonfezvfub", "mfdqQGmShhhXyzWoYwyPOAsvlftfjjlWhUkKEcvgAXoNGKpcirw") }, + { XHDR("mrlxsr", "TEmgMDclzRNiYmtAqVbZAyIqAjkkmlxGvTthFrXstIpSInE") }, + { XHDR("cfdsgy", "OmLnNlHdrxqXtxzMOZQArfRmwIuYxBBsggbfUsCkxehZWZEiydYKGGwndSHlcpGCDIjOMQeXofBkjXvy") }, + { XHDR("gmstwuarroncpz", "RMdkNDLGXEKrQfnqbvwvqpTmoqlENrtwhiyvNhcnYbPEpXzNtTnOUMIhSQIPGJrFJOoGPNYy") }, + { XHDR("psckohefyes", "NeAPHQPOCKsjFcIjokTohjeVYLgbggSnRNVAKRWLesQoHNpkBkFyCNxGMUHqFsz") }, + { XHDR("mqnnsocmohoydm", "aBpGOAbGrYzaxDAUrTqThJbxwsqjONEe") }, + { XHDR("szfkuo", "j") }, + { XHDR("qqumspugxwaum", "mlsKOyHhTSFWIMRScmmhHljSZ") }, + { XHDR("rfajkdmelxs", "lXAWXWyhxBiOwxjCEyQKHqNhXvcWfiAvmJpGCETVwnduxUydCyZRguCanReDCN") }, + { XHDR("cagyqab", "qXLnKCmoblVbmmEJCicIfoozvpBnzIUAyy") }, + { XHDR("uoidnkn", "DfxuTXkzQurWmycPBsmpJQSbZHempsJ") }, + { XHDR("jbupjfhaafikjhd", "RHOYwFekQDCoBaZFjRFACjlHnyPDfEWqnIisbqkZMKntEO") }, + { XHDR("qihxhsb", "VibwmSLkisqtrnQQxdxBntWLQLcljyXPKIssKugujjTPwVMQwPxPvMWE") }, + { XHDR("inlqfcbiv", "grdgpUAusR") }, + { XHDR("qewbltipe", "oHLXPMyWQxWYsPNHNNOwvnJEgSCeapimjoiFeMCBeWvIl") }, + { XHDR("wraxtegvqsuvnq", "YTxuLJWceQeDLAUJrkitRCwcXaYMKPBiVcGXkCyWTOHsZBEMuPGQlWCxyrnRYhjL") }, + { XHDR("op", "LzCCDbBRjpLlBnOsrBBWNTSVateMElmOqkCwWEROBdgnKxehmEWDsjniEVnw") }, + { XHDR("rreswte", "uNNnaIwWbWkCqxKnOJOGqculyGptxiBzXugZXCPtnEAfmdjFyPge") }, + { XHDR("zxmlkkbfecgrntva", "CQuilxgGAhbEFVmmMAdyHOLaMWnRDjOUEyZiZtICOWwKvcvXSqAawvIeJSkOEGTVJnUZlrvoLOu") }, + { XHDR("xtnf", "UlVysSPlUQdSWFMGsgcFRSFuatMLnUtWnWpEaNCmGuWfBUzYnDSCLEM") }, + { XHDR("bjbxncpwehmosiyhyir", "eYxJevLSAzAjwfFyIupRwZtNGbqrFIqAqKXstswqykXgMFEnvMQROHoUnMKwMLHfMpByfOwFW") }, + { XHDR("qsmiwgsmrbqk", "IHoHkXPegdLljszjYjnqijNWqz") }, + { XHDR("iegxeagwlprjfir", "m") }, + { XHDR("zq", "pHxNcqQPwEUXgHhGjothFfiQByoIwirfaONIzvKTtojJAbDfRVomiCrTogcBGJzNnZbwbbzgaJtLRDzU") }, + { XHDR("b", "BAGWUvEWdVnqQayDIiFjaxfSgy") }, + { XHDR("jpacweopbcpd", "ioMbGtdihXigZeZoloeFpIqqIZZoYGZnbSbmMTSAnWWFXvMl") }, + { XHDR("dasqfykrqmqfa", "EfqeDDYaxKradDEHqTVqjLFPXKtZhMHiL") }, + { XHDR("ennunh", "DRWADERrCEbHlstneeXVIplUiJOVsXBeNHxHTlwRGHXPoLUoHHbVTdXRJvMjUX") }, + { XHDR("rtzgijdlk", "AkREZTQyqxJsZLhUFhDdkHkbGABvaHrpMFdSehhdgXIrDFIclmstDtYPYbuKZCFWFSsEJHncFVS") }, + { XHDR("jvlbluvji", "lGUsjfeaxvjhfPQFkcqVvUVNtyLleZjDjkhJdUNZAUawSaBPXvLuFoxpZsrnvcVADTQtLDOf") }, + { XHDR("evnuqezyfjoquqqwxczy", "dmcFey") }, + { XHDR("wh", "TiLiQwubAtOkKBKrbuMJeqXhKfBDUuQNphziYENRgz") }, + { XHDR("ptub", "eWa") }, + { XHDR("umdox", "LrrzXXgDcqZAgopDuBXjCOjoZjCdXwoVqpwYXXUOokduKlsmFzbIlVXDpKHlSccqrwAheV") }, + { XHDR("ftrgokduslzcowpsqa", "pRjbEAkbAuORueDTgMgWTTPnTboqGQioFyCFlyKimsJsvZOJaJoROcMWjkly") }, + { XHDR("fneq", "xNoyPGDGGXyfdIjQEnnLJAmRtK") }, + { XHDR("gx", "ArS") }, + { XHDR("n", "BwCPYMztRiHmkdRUIvVcRgZTQcbVobrEuJtWcTsX") }, + { XHDR("itjgorcnszruskbrjz", "EdIBkhyAUvmXlwcSQ") }, + { XHDR("fmfbrom", "vDLPZNlHofninGkVxrAxJIMxwMkERLUPo") }, + { XHDR("viamqrxqec", "MrxwzQeVGycfBybCDEQoXmzlPDNFeoqKUNldlecpgNklsXJfXKEuuSETOrUE") }, + { XHDR("pubzsbkhpwgipw", "LlQGHmOjalPmiknBgOUdgTcI") }, + { XHDR("dswhlfohyvlszjcqs", "kXTLmzTYgwDaRQHAduqsqwYcRHlrRNSCVXKfTnGtKoCojQhWthHPtlIdmDqztFkpILjnxxSVfj") }, + { XHDR("czxhiuuneetsfh", "MTchqLWbQktgCQgBdlHJOD") }, + { XHDR("bacrbftpubnepvxw", "PUgiCrmwcVYQDoPzLRFLcNVskPFkMUrmatcvMGKoWJaDaSlkcNPEqCnbpO") }, + { XHDR("rblmsxrpztktuqajkolu", "cUHeeOsWZPIwtPzNvHXAKLorNlofFswj") }, + { XHDR("qdq", "zgvzsTAmACqAMRvWTrAHtVqtCRjtHDZRLkPrrqxdngRXKhwq") }, + { XHDR("oljxnlgefwqjzwfohsak", "IjUJvNdDdzUqnPfljSiGLDwiWvOem") }, + { XHDR("rtsopfjksbmvn", "oYczeTZZFporqStnJywbvSAgfxiwYkC") }, + { XHDR("fi", "fYmDcheGRWAvCnZunydtypznZquvOVytpIkZArzxUuvYfomsyRHypwy") }, + { XHDR("ijusict", "nBqmgSITBHWteqLBKConuJZKOpXdRudkRSWYq") }, + { XHDR("ngencfopxafpabytqfn", "DsShuriSLvGxfAP") }, + { XHDR("gtegeudwhmfdeqkn", "zJaOZTfjDpdBgMNplxAdVolD") }, + { XHDR("icvtaqig", "LnSfxokRlppmCioLGapxfYwAdTwirqZYUqYltV") }, + { XHDR("mosuepkbe", "GNwdDlTMOuedfhixhEtWGTjGHojQmGSPlqzUMZijvOXuquCORjEUiCPhREAz") }, + { XHDR("dzqasijrdhagyddmz", "UXzQPfrwjBfzUZePPwsTqjSvPvwVhvrZsgKEaEbhUqPLrsEXIFyDFAhNYrWeVN") }, + { XHDR("wexyeu", "eYGluPeodggClPYpEZWaUyUZCPILolykYZgghLBLZUHIVT") }, + { XHDR("eylmnpsrfauvnjiqipfw", "uQoCgAIAdEGQPuUFoVgPBJLDcwTsJiyF") }, + { XHDR("gmtgmorsmju", "vXkdhMhGXnvhlnCyaWeceMZIrbLrLogIGnBhRXKxYBQFatZeJsXXothDlew") }, + { XHDR("eqcpxruxembjsf", "VTtvsHsaeOohjNoOZjHwwZuRUSMwsBlOqGCetqRAZLaLZKsechsJasPBrgsBcGBkrgRDtmGFCVFGATJz") }, + { XHDR("loqpegldekyndooqndah", "YfncFImTMXwHXEPbJefoDVSYpcrhdQwKtEtHUiulZfYULgHjwlQOXDVRDmLYydSihRsSWplwOjXPK") }, + { XHDR("burxyymybiqvbn", "QYLmIzdNUtzFM") }, + { XHDR("kslmxyavf", "aErwvVobuGNVZOFuZHqoCEDlrCffqPxoClBhrMshQFRHmTYjWSBxj") }, + { XHDR("xvuyhcvopmqu", "RuGSCSCxUltmmmj") }, + { XHDR("ruvtjy", "aytEQNbBsE") }, + { XHDR("qdvwlyg", "fdcbxzFRlegozpYEzyHrmtlcZAjhqmacRRefaRlsjDEbRmpRYLwKvtOtzp") }, + { XHDR("boqjyrhk", "DvGVlAjiTeTioGUCzdFTUYFnlrXBEJH") }, + { XHDR("jqvvuthrejegiryplj", "WWdTlpWIiAKFAkSQbDlYstgToVTKVboyYbJDLJI") }, + { XHDR("odkzclxojfawqtkpzba", "mcBdWSnRhbKIlfXVA") }, + { XHDR("tpe", "TGAtgcvuzZFVdXXgWbhQxFpJorfDCkkHIJHGyBzBatwkqQppJWGkDNNaOugdvOVwCMbhoebfv") }, + { XHDR("dqnr", "AllZxnqljswFGtLUHZGzcbhjvgLLAIwYsJFpaxeba") }, + { XHDR("eywvrrd", "nNaLpbByABzbwaW") }, + { XHDR("zmfdhkfwjwcxvzrmwd", "YxeycbxKdVaVCJCKE") }, + { XHDR("tjlonyxozd", "EVMaKtpNtniPkdDZAVhYLfhXnPFzKQhbpmqpYhknDsClOdXRhxgEnMcWOLRZWyUNZmejyZwucMlIlTn") }, + { XHDR("ffxaets", "FNzkNXzqzq") }, + { XHDR("wnnqfefowawmmraofb", "egQvED") }, + { XHDR("napdk", "MDUSBD") }, + { XHDR("hzplthlxjkcf", "gvjFkciZHjLqgZvbVyRlIHSwyRGDKDJvSHoqtCXNjHpnhHBhvVtdzboGyQKEE") }, + { XHDR("tzchpelyazvb", "nirMDOW") }, + { XHDR("qxxbfyeo", "ZTcJMnakxWKacPBQtnACazgCkUHP") }, + { XHDR("bvporcmudpp", "RvyFksBUYMGOHp") }, + { XHDR("itdygdwwiwbx", "YaPjSONOwgvPjwoFJnMTljvnYKeQAqGUzTrUYjfTdiV") }, + { XHDR("tjfaqomjfzyyjx", "mJCZNIquwaEWSOj") }, + { XHDR("ibvqvfskrqfybdqydlst", "dtJnmsjEKtZernYdkkuJeyBAyjVJ") }, + { XHDR("lafzhgafqvd", "KwUMB") }, + { XHDR("kpsppp", "jMxkhIBKCDPyQMgNNoEECjXKsMzEXWxpFoHexSnSvKdXsVpWbqfEZRytwziP") }, + { XHDR("vtmmemrllpeejaubvy", "rWOMZzYXDhM") }, + { XHDR("vtqclr", "zhPtKbuIADfKdOvM") }, + { XHDR("cpcpqgquxvuvsor", "fiZkroxxxjWpjXoQeJoMZdmFstQqVNmPzKLZkWBgXcqMqiwAlWljTjGrBKuHudkUYfccJzSp") }, + { XHDR("eqxmzayoxzrfnrldih", "NqrzUHWSALcZsukqJrJyZSlaRSYBrvzOobLIZWSpqGEJkV") }, + { XHDR("cmexugtubdrvo", "gCpzCrPWnbBQxILEYggHjKmBMtaFtpMfGqkdAJskrwCsUFRThhYlaSpllY") }, + { XHDR("apqu", "MsrApiCYTkQBYYWHLtrYEKKiY") }, + { XHDR("fugxbo", "hFZVOjmuMshRbNhzKfSnhDghJzHcgAzfhFkUurWQbddwhcTVwOVOJAZCOW") }, + { XHDR("rmhjvlyjrjrbxeod", "yAxrCvLtnhIRsrTaveFAEHCdJRuZJgAJynL") }, + { XHDR("subigbujepos", "mXSquZXMgxQWfdqSaitJki") }, + { XHDR("gyhmzdjlqhn", "VQdopxQHEICXoSyrFtzLzvHdjR") }, + { XHDR("cjnzouhrenmnvs", "wMvOzQyYPIhuMBlNiZIsuvRNWf") }, + { XHDR("lansliylrmfrkkfmcbc", "btouKWQJuReltmFyVs") }, + { XHDR("pnjrnsgm", "uYDtDtNFGufYcweTSSexgOGyiRfKWsOjspwuQZmXzNcoRVATALmObRVYiSWOJLgZkbMQENp") }, + { XHDR("rnsfhgkktjukbzot", "uXOmVzHNrsAYSLXEcORXUwiXZteqtPjZTOHVWtPqnwguLnCtuYn") }, + { XHDR("oxpbpxafn", "RmeJznwojUsAhHfoqAFWHAbloYj") }, + { XHDR("gsujfjtejdd", "nPghlhANaeLloQdlwOpfYKOrHUQgXD") }, + { XHDR("icyfniahldpejwg", "RvREirsbFISEzRKqYlYSdQgKFMIRjGtMZrZMSuztAHyIlBtTWSHBYpi") }, + { XHDR("hxdaadbh", "bEyIKRZCLUNS") }, + { XHDR("vaccx", "OpzOZSyXZJgfAXtUTANXApErzdJcMlZoWadpZwgwucjWIlWpBDcaHGWal") }, + { XHDR("gigvynfo", "cmpiWFQnRnuCNWjQpAXljNhRssglIx") }, + { XHDR("rjnqcyvsxmahio", "jbGSqDimrtloEKYiLKNXwckXzJCRQMjNdbChXijjRmgThWCbcUBl") }, + { XHDR("mojuusmv", "yKWJYmjzVEhPWtWGnrYFxpNxevzBpHCRRvPGKE") }, + { XHDR("m", "tzosPRhyNrmfGQmwHQmmsqkQOCfsIvRhNWKaQKxXCbrKHdxpsFhpVxRgQpPoWSoVZSFz") }, + { XHDR("btqptibuwpaqxbhg", "jpRBsZUTUKilXdtbvFxOESqHWLjroHUtvEEtXpTYz") }, + { XHDR("bht", "MwMuYquGnRxLYkcTZPZPCWukPcY") }, + { XHDR("rvlkvlrx", "JQpNTHwuYvLuhQugDuwFQSowAnxilLyDRKFwdrPEiyiJC") }, + { XHDR("dooiumcbcjltxlsw", "FpKLPaQbeYDvCAXmRkczYidHlhOpGwboEXjTbjIWSbzlTCpZbSGZjcKjynx") }, + { XHDR("yhywbtspk", "OayxfUJEQmSRFfPKaSaijoDCfRevZCYbZOaxfDJJjfKenCbkMGBWUdcReWUlZoXTXN") }, + { XHDR("xykqeullqhgthtjgigwy", "HoOKQlk") }, + { XHDR("rgqz", "tGYUHxrmCEwhxeSonDTVsitVFrletocYRxvZ") }, + { XHDR("pf", "yCbYWlcoCTERGUzHgqHAxRyxTHpwZtQbqjNGipRAS") }, + { XHDR("suhlrspwmbjwmtdrvth", "IprsNQYWlZQuoMBvnYJCHkougLQzPWhtRUZkYJoXLsxBrNzHZwd") }, + { XHDR("vdwoputkpbz", "XQeZzXlTuPteTbxqmloZYpWVFBptlPalp") }, + { XHDR("auevdmovuxqybyx", "itVeeZTzBjRo") }, + { XHDR("xvjgujyff", "uxIoTZqDnlbpaTaJTPSHRMbsPcqQUQMWBRBWNhQlvjViwknQ") }, + { XHDR("mczyrx", "rldwfLhtKKRTjCIIvcbTRDysfvRxRBZvkUGLFELXBbMLAxPJKCqjneWsvDbrOBkQbFZOJAlzZ") }, + { XHDR("hzitvbzrwetsni", "CcznuougrbSzdrdvaTCrdmuOMvnLiOwwFiCYvrqsbivvwMldEmBgJxCvPAvMKptiyFFmA") }, + { XHDR("exkto", "gZrbwJWJB") }, + { XHDR("hldpqrub", "MEMhGkVPo") }, + { XHDR("wbg", "YhNpTJkaKRvIJsfVYTjFUnUCTdxGOufFenSHawhRkYLCIsDxagdOjtNpIwcVJM") }, + { XHDR("dmeasnpsxyrc", "tCDxXynGJANqzu") }, + { XHDR("kigzerzepkrg", "Z") }, + { XHDR("kcy", "AHOjhxIWeNLQYDKsfEpRSn") }, + { XHDR("rbpmfiuzlp", "JKPfwo") }, + { XHDR("heidhgtwulm", "PhMVJZxjOCIuTACGIXoqofxzPRaTqxMRFYapgVWFlaBLARLYobLetsvMrxDAvUWWwPT") }, + { XHDR("yjbuokjfftkcikqfkhb", "ZdEvFGBjLQkkN") }, + { XHDR("szaqtnnihbcxoyc", "OREwjIKtobiTcvgWDmmSpkWhGefSGzYiabrjH") }, + { XHDR("jlozk", "QKsLpuXSzwTuuooscRdMzndTmehDNakJUcNKxKCcKJOquJCGPT") }, + { XHDR("xsqupxjxlgcsrftkjsxe", "anOgVuxEhhyXhFfqGeAcuaqXVt") }, + { XHDR("gzhaxvagbwzlyzlkfo", "rrsXZMqhajpZaCUXrgYEIocYoHbpzWdXWdcJqOfEKoBbjXMQ") }, + { XHDR("zofnqdplc", "ASuS") }, + { XHDR("ejerahdwsdkdtdeak", "UJsxUqUgNPvGWKOzawKyiUePrqHWkwTJsTMoLYsYYHvgMVUINKnVOQBIIZ") }, + { XHDR("zhlazhxycdbugcjrswha", "fJKmWaddKdwWFZEdUdeXBTwyKjzyYDQEGZuxIokAvXPpnPBKABnrwBGyrFpfCLuuwXHuVBNouDNy") }, + { XHDR("px", "QHLdbPRlewpCThMRUvZaInlMRlnFQMCIYFvzfjDKBjZcPVDMtzWBXAEKLbkaQxPgEReKMirBysyOU") }, + { XHDR("zjepaxpkkowfpvvaseer", "xgB") }, + { XHDR("xukjkeapcsyvmxupj", "cgvqJcwPYqWElQZYsIXzeBEJjjYjXTySRQyIRAdu") }, + { XHDR("ypbdbtonffhexdttee", "LUMGwApYrFghbJnePNlEzq") }, + { XHDR("arpdsugrryc", "bQrYJSywKDpLbBWgtAmE") }, + { XHDR("rablvivjfyuottovnz", "tmXnZeOQCQLphNgpCijBSLEBCBsRUsXBmdWv") }, + { XHDR("fn", "LukDqqPJnvPybZsoTnETwiRCEgrydYKKSXrbmmbYOUHGzkbkBPZTqDhXG") }, + { XHDR("zcuzedfhmvgaymsdue", "MqPrlnWGyvrPMsHkpEyfdqKxQSLWBqszlhSWvdFUq") }, + { XHDR("bi", "SoUixuzoFioVuzvuqyrPqEOWEWykJcPcnaIFjmFSsNIhbjCgzRvklSgxVojpopdHKFDCRDhFkpx") }, + { XHDR("xhmimixdn", "wkqTuiDmdLvcIdJCJcMGgiODLo") }, + { XHDR("onotsaysmsppxipfd", "GqJJYJcmMtCWJYprksRdiwS") }, + { XHDR("ghk", "citnIAKpYFHYBgsUtePWEXAngJhOhWuacrJxrvSzfxTDkbnvvqnYWpBsRNqbkIItjSUpBCjOuC") }, + { XHDR("i", "bjXlxsK") }, + { XHDR("cvagee", "dvdngfpzYkrjFnSRKstElJKQlEGuXDBzqhTlHckPJBtaLtjlaRWILFWmsZCUvQykqQOtMS") }, + { XHDR("zax", "MMbJlcIn") }, + { XHDR("vikwfhwxjssbqumvgo", "BWNGLomvrkbmkVxdJPsfGrwNQvYHSdAJBfeGarhSgNpvkpXhtjUPVtJqwwbxPBZtNdXxbZ") }, + { XHDR("jqfzeqyeynjxgydpsh", "uuyNywTbIpshRhSUNJhzOzWpdGLvuMKrBMylggtkwbpog") }, + { XHDR("zqsk", "wlACHWKQVxEZi") }, + { XHDR("upthhyobjnul", "HsVOdGHXEo") }, + { XHDR("nffsvih", "VYwSehCFToeVQtMFSmyMqjiTxKBMZNXuiGzVnOepuESAHSpJgFxZHLRyeGegaRrefIaWpsnyWptfF") }, + { XHDR("qo", "owe") }, + { XHDR("bqcnjidxpc", "vjUAsrrJZS") }, + { XHDR("dwrpqz", "cNAbPokHMYIRkKPtfljEGMPXGVcdEeRHuNZwybhBKvnO") }, + { XHDR("hdwmcuwex", "ehYFHXTUvFlLgkFamPUJeqMQSCMOKzPfVQuePaEaZXhHJvEbFyLLOtRtQGxUOodxObxHcNOR") }, + { XHDR("orlhonqk", "fohyeNMhafqUpuawtznAAPNhbXMAIikYOxzgLKeoHPYPLeubuHJW") }, + { XHDR("euvb", "jUfrffnrNVbDxzyRkdJbyYtpwhizGrbPbTwyD") }, + { XHDR("lsyldioiwobscusbzf", "vnMMyUpMMQJhkLuRxdoBWs") }, + { XHDR("ajxiy", "WMQXAVBGzgLYXTEASGRm") }, + { XHDR("bjhgrriwxevpapa", "oYNJOZfhCCqdUP") }, + { XHDR("lnlgktxzjotoo", "sKplJk") }, + { XHDR("aaxinglbvefnu", "EzqoyVrqFDIPitIiEMQksFuEHNGckHorCsUXDDbZLYVxDCkWsMnynLZnjuJHHVzplyxgWA") }, + { XHDR("wuemss", "sReXpLcMzrtnG") }, + { XHDR("qxemgjtnzfmxfksq", "mywnWjfv") }, + { XHDR("thzeezskclnqaxprtgx", "MXSsHyTqTrFRyQYhcXiQNCJUHOAifteyKMDlpxyScPYBlgsyHBkat") }, + { XHDR("qgfngswen", "ohgpWuaVgICgUiLJyOIspkfZ") }, + { XHDR("ghivdnvdvauzoret", "ADnipsyQnzPbdhL") }, + { XHDR("emidcgdo", "QofbgpZOanjFCuZGRCLAsrOCynitNIjlEdIFkmbleXVVyIekzAbdDIUCdo") }, + { XHDR("jukk", "yhNxfhlnSehnPaMKiYXthZyjseZUyhEI") }, + { XHDR("oysdz", "bTRYuibebbFFLyAFTfHcwSfOAYuPtAVhPIxMtjlJfySpHwpOderbdr") }, + { XHDR("htkmph", "UnhxVLcJpSPXfZ") }, + { XHDR("rpdquru", "ZDALoHdvuRY") }, + { XHDR("fvjc", "QiXvtkXoQNunjrnwLwpslGV") }, + { XHDR("spqvnbkzlbkjcuwbllo", "BmqweypYJYRzFaFJTRtHcQMuXYaYAxbcbHsGj") }, + { XHDR("qyb", "sUwijtRBmnDrttHrsLQbzbsZptzXMKqZXFsLfIVIaevrdoRSxBytCaAChKeHGXQlvkEC") }, + { XHDR("oibsnhvtgeowedis", "fmzBJoFisuQvEXDFcDWEDyMpVqLFMqsYIhXLozZwSzRmSmHCaKhRlbWzBQ") }, + { XHDR("ugsroorgligctmctjyqe", "bCqAGqWh") }, + { XHDR("nrdzefzvbwfnqdom", "yQvwtxmxtYvmjHnVwRLSIiryhYUdQuPFfVwHVRUuwDJV") }, + { XHDR("hpcklmryjkemriuo", "frVtSKWTgFAvNAEVJApudAuhVzKAN") }, + { XHDR("leecvtanijvp", "PDXeYpXogmkBDEePhfTWsBNHKKeXOjibJYyEnpNOLllHaGNuVoErnpAQzuacYsDrRPQssfNqdobfrzZ") }, + { XHDR("phwodym", "HdAgNMcc") }, + { XHDR("ssc", "nlLTozbWPgUbOTCeRWbPfwnpxGfuVVeyUyWkpAWpayJBfImzvwYqJvdgpDx") }, + { XHDR("serzywkvmrq", "DSjEfrTvCUmxunfgdNYdUgndYcNIzuXWXPzjQDUUjd") }, + { XHDR("fblxdvuyop", "jRngPLxsKwtRlhHmGHTSMNSfbcxn") }, + { XHDR("akcaembzvtjtnpij", "VuIvkRTzjidpLkV") }, + { XHDR("dhjpwgnjumbwafiyntp", "xYPGpZjfbDzjLkXzqwzBUbPrix") }, + { XHDR("uhwdmfczovijdd", "WJSllYmnjRPuPBLdgFNHwvuc") }, + { XHDR("gqzsycbdao", "UpffJplNCoSKqzrCJdSlegOVsRJywSbv") }, + { XHDR("zjgtnkaoyxwxbiyz", "MR") }, + { XHDR("ziwolzphuowghkswdi", "BMcAXPiowsA") }, + { XHDR("enjmggyrutespwazdr", "RFaizHMCxCEnx") }, + { XHDR("cknqgvvyfys", "Myjle") }, + { XHDR("yiblpppkkmer", "zcakTpgbLFQTOptugYqkTNaWWKDQpzCgUlFfPprcwIhdoplMT") }, + { XHDR("bahyfbyvcxrtdiyl", "RTbjKPBpicyTMlAGbGPVDmjKCr") }, + { XHDR("mbdarczbdx", "vDdRGOvdqBX") }, + { XHDR("qokncjcqefg", "NywzzvybFEGsAXwjdEa") }, + { XHDR("d", "oOulVaViyZaHFByqlxeuLRvDVgkTUUlBGuoRMhOZKYbXmjCyyfzwRlSgmKtVqeoPiPLsoqEeswZtLyJX") }, + { XHDR("wassakdjfl", "SPVjpaclbmckEZlZZsO") }, + { XHDR("f", "lZhRwaveIDncChYCcFIGrJZflfWCVidteZUSlmMIFYibAeiwgHxDZzLWXHpOEDI") }, + { XHDR("wrljtnvgn", "loDPUAchxEirbszFtDKXRkpzgvxqpxkrBqlPKvngdDS") }, + { XHDR("cfpnutbtbao", "FHTqJOxkPotjAYXzquEEVNcISrvwJfyLnmgwuvJEtZ") }, + { XHDR("ekijameddphttmzd", "tPydgLyigyrlqYNQTLzyzllSrAZVPjIdpGqK") }, + { XHDR("nefed", "trWYFwReNvPfzsbjKGJDahlbNbNbNRneYBneVgaawiQAyceXUFVlbpNZjfYwEhGUbjPLEBUdjc") }, + { XHDR("kfettuwsrvwaqbcivia", "aBwQqpeTVFrIWaMgdwd") }, + { XHDR("vqzhdcfqhycnnpofx", "zmEecpUMRwXhCOeBXm") }, + { XHDR("ocmcradffgn", "vmFvVFXlJs") }, + { XHDR("peipllhfmmhii", "cJgfzYRlYlPrFbaPNxEisBrD") }, + { XHDR("xdikampdoibojqyyuq", "CjXnCrJUOGwWmUXXIuTtswmAFfXRwdfeOlPGVuAyCnrPmPUydKNrYtuJsbF") }, + { XHDR("lddgqvxwsociofz", "ZgLOiITjohBqrTIANtwBciGMXLNKqpVwEifLEjrZDAMGQDnUYSaFsmGPBdYKkIZXRYtRluPIGUdTML") }, + { XHDR("zisbpemqtds", "dpaJuYCLdZFZRtxwQtBvIKhMouUJfduJGxisyPEdSYR") }, + { XHDR("tyrzegzkdstvktlnm", "GfDAIGRQgXtNUNxGxLYNVzwcoKOGTplvaYkkBAVTOhubjSWocNCwvRiAJVAmhHhtcgxCLKWLgpWFRTE") }, + { XHDR("jtbylnexvrmxj", "GPhEa") }, + { XHDR("roc", "otRzJrOfiAxsaoOduJenFfTlSQbQuWYFSXcDHDBpFccghpFjGXIVjEgtvBMrBOxDmwJ") }, + { XHDR("zsou", "AMjRczBZOLlIQdVqszpmCGhUoavYDYMezzYYEGeVDGMYEvubkLfRmcwkKcnTEtdvJf") }, + { XHDR("qi", "pVTpXigjjTApplyAuvRjsWvQjnSJZyNrZxImAHJSJgXSSogHkZjtVIIblHAuSuTyoztyQBjwv") }, + { XHDR("ck", "XfaGZwtVCqyiXWTlKyxDsxOjC") }, + { XHDR("vyjh", "yGOJWfOzBErQklQKDHdosuHCycUwCUQJn") }, + { XHDR("pdz", "xxcuhqaIqKPyZciUSoADGdd") }, + { XHDR("alydhcqp", "PPTbGPLMsJKTYoJHAGzffjmmElowGJlBoGxIsuwCSgwwOKfpnhpnkLQQAebiXpsITubndT") }, + { XHDR("wwxx", "pOOJq") }, + { XHDR("cpw", "LoImOiWXuvPbnchsVAlsvqnayAEMACxwQZeKSmlCeXhHLrbuIKwnYIrPXxBoJfIcLJwAbVFEQ") }, + { XHDR("fq", "LiwHefYSuEgVMJAQWLdiTjFEnHKNEWKJkDQw") }, + { XHDR("nrenitweguf", "smIggeXV") }, + { XHDR("tzlpkkddqfn", "UMGpdeoaUIaulnSIqFDGIFvHHcE") }, + { XHDR("xmifujluaqubvkwqzlpd", "MBtPDZgbYCDqVulyAAxSQZMAzOVBqvPyXSNhGPviSwc") }, + { XHDR("wmbagllnwhxhixd", "zZxWTFkcgSnwnJnPXlrfwGWDTsLylnCeMIjWPFbEFOLpL") }, + { XHDR("wzqxmbdba", "pkrljiRQsoDLmonFBFnjNqUMJbaPhulWbGENXntiMZRYvdidAkvuZabPzIsnq") }, + { XHDR("mmahhgkhsrmnqlvyyfqr", "InSSEtiNhwhcWikqWUzEorcAOlpsHbodBUsSGYPHePSLVWnZrcPSxVTSIUrmFcnLxeJQzwkADm") }, + { XHDR("tvvrlbua", "ttYsniAkRoosUhXEkwpZUcgxfJGqTavCQApZfZqhBZKOTkKMtJlGJb") }, + { XHDR("wrraejir", "rdQJYqLQtaCVIEcEr") }, + { XHDR("oippwpbjkczlqjzw", "kygrAlFhsYHbca") }, + { XHDR("laotjmtepreh", "JHEqgvNDtoRNodqHYHKyWXyUuWXIFBmXsFBpdDSz") }, + { XHDR("ddzg", "hdgzRvFWpkyCMgMMVoTzUOZ") }, + { XHDR("xidqugaweoh", "XwjZNHeOJyBKTjyGZEMJOMioNflbZLXVrFlSnBsildFbWeUTdsP") }, + { XHDR("pcplauqxz", "lXMKsaiOXZSGoMKJeIVagzGxnvIXKniWjnfsBIzwVIGB") }, + { XHDR("agmmazkv", "hPLpJHtrKQtxARiKXUgxshCWqmmbRTsmycTxdvJkQwkDMktvbHH") }, + { XHDR("rsioqudnfbnbebntk", "SdmOVAVfZ") }, + { XHDR("hjqxz", "JssAIvkZCdhZYPzNbPNMMwWWBnvgrybW") }, + { XHDR("cdevpejfocjvlqow", "IBlbXDhbdfgTLETFhlNRSHOGfczVVyIqzvxEvGwHLrghu") }, + { XHDR("hee", "TLMzJTrYmFfjQMFXLQAmmuFbe") }, + { XHDR("bqayhgkozmzlot", "ZhXIfkF") }, + { XHDR("wionurwfiwgqausinzde", "IQkeVZDFZTBDcKRQEIvJkQVVLoFLjKQPklQOAMIzqNZqFNmijWcdHObZBLIAihXoCXwx") }, + { XHDR("grdsigdquynaoeizalh", "ROUOILDXSrOTRASYIW") }, + { XHDR("ydqfvwdsbvrrbszto", "TTKpyWUDnpHzKgSRtGrEOZmNzrwuYDmjArsUfHMtdjcKwzYMRlr") }, + { XHDR("qwzz", "mSqpIdlyBhLPXinyVIDhNSDMePRHAhTemGPQqcp") }, + { XHDR("llzmjv", "uEjruPDUaReQmUxAkejoaPcSLcRCdSXaMASVVPCYzJKOieo") }, + { XHDR("od", "ylcArjqCERheghnmTnHDMJQFyeOQdsFPBjHwIGMwzEYCncLSfNULVMGYtAhxtBpQoaTaMhxbKBLbfh") }, + { XHDR("crqcyivaqfajkj", "kZMxWarxQCLUOUKdvvONhskJajokQJPyzjNKiDkNzKpqABbrWLIGJLQLJqqIilMXtBVsCWwAlVmQ") }, + { XHDR("xmfwqptasijq", "mQgrYgyEBRaEbHnanquUARxShKdhwJV") }, + { XHDR("pxfkwzlzkhiqpbk", "xBcXHYRjhXLAFpqJIZlBqZiDcmNVDPlXNtaylsTUsWxXEHrguRtrYFGzHaMZumsKbZA") }, + { XHDR("khvcbsyk", "qicJKaNpFRkzLRentKIlbQDnSjobYtBBbBbKlNCMBxvsRNd") }, + { XHDR("kb", "cKZLperzOXIbWQjdjJZKaCXFZVaUEJFeJXDGMsjmDxjShWewZLmAjJdTOnoBYbOWnDQuMedzZnskSeOW") }, + { XHDR("ouwrspe", "AChurkXesUHMgfTAWQz") }, + { XHDR("jlyhbuu", "lPamhCr") }, + { XHDR("axofxarghxseknvtxth", "ib") }, + { XHDR("uzlsgbhfosbit", "nVpczI") }, + { XHDR("gbkhfkle", "QlDPjXGK") }, + { XHDR("cuojvrskhixs", "Wc") }, + { XHDR("fjdlxbvxixeizs", "bEVcSEpEaTUlxWFmiIxonsilAhuaDMuMszXKwamYsP") }, + { XHDR("qwspildau", "ufJamqeWMsQsXaHbhQrSvbVWVPXaZyWuYszhVRYlCYiRoIlYSYtkBuBcJGsERSmYCoWTFNAdOzkstN") }, + { XHDR("wzpwgbdbpoezhsrxp", "DREjvuzfkNGUsRhQBLlgdUJBPlDyXphYnETWWKZsRhAgWdTI") }, + { XHDR("pkor", "kcRZEduqTlbXEVcLovrnEyRciDzTuhMhaZTIJhbcrrnILVNIvgHyryYPdZRe") }, + { XHDR("bcimlvhkhrvzzdqnrcll", "WBUJJwIvEIHZnJUQy") }, + { XHDR("gyylyhtswmaxxjbycd", "rYkS") }, + { XHDR("rymem", "WNknXOuOBFAutrlJphnWrgBHeJoMU") }, + { XHDR("ddjcskfwkqvak", "mprhIQcPChNMrfvRKJrYJbQrTwKyeAyuCsJObisHGPRjwFTmrOyTpPziGhIhwUB") }, + { XHDR("ekfzvouxrlyyv", "aJMPWNkYonVuPKkSKjSUThOfJexGeudAhsSskuLzNlztA") }, + { XHDR("fxzikjfhhseoobeznfb", "AOgWKkbfnZTkgoAolJ") }, + { XHDR("wougo", "LPnBDsCRzRicNARqtYBmasJSXPvvvAkk") }, + { XHDR("trweusarqjlrkhe", "TmDAZOlCTRpmHwPLjHQcLLDDzAXhtoNtQiM") }, + { XHDR("vbmycsuxsst", "ekjvyCwgPMvyLcbkaamPlicxJaQHdWwGiZZummiepvkPbGFvHWsqjHJPxWwUSHubnnKlMnTx") }, + { XHDR("icfnuixiiz", "LjHETpnhvtcTGdaJKmQFsxFuzJzrHgbRRDOvTIBDtlr") }, + { XHDR("axyb", "KgEofPH") }, + { XHDR("fqlblu", "jmgTJUUPJnuMVkStWlsZgcfcLibRMKggqGQeEfFlGbLZpwih") }, + { XHDR("crqrwmyscewmuwqpagvc", "myleQTEDUgqQXaVfiQplYWRPUBZZCkqKiADURddckGxtqPMlAdxX") }, + { XHDR("kaswnhfbywi", "LrFLkyOwaDVbWGEukGdSG") }, + { XHDR("fpychmuf", "URmjtxfcqDotBMBqdsCKWCPGMsOvmPdYmLTDpbOOGaOSILRKxZedHRqsZnmyuAY") }, + { XHDR("yubomeudu", "eqCpHlhkebfOJQHBlNFFMGNCuFzqNXBEGfYeccirITSxUauqvgsnORUZSR") }, + { XHDR("mxfgajhmbikvjjdg", "GmZsmabRxMcOmujrsvAIWcRkojVfNTQVjIklQfgYowBrHhNsmChTxJTL") }, + { XHDR("zsztqghpcikjtx", "NvGgfcIDmMOQvXanMspyhYhLEDYYuLRWznjqQBsD") }, + { XHDR("hoyckc", "EgThAjBAjkim") }, + { XHDR("jomkwgnmric", "IoJJvmFYCXJtzCwHETIKCdccGXKfbOkDsPTsQPVTiRlZbxJgKTQqFIsqgWMb") }, + { XHDR("vtrqedorzemmmo", "ySPdvUWNpqWeOAElCtFRisDchokoQkZbFeeUljhCQrIhQxbbiIQeFuDDfsY") }, + { XHDR("hjmbqi", "fxgJiZSjrELFeKbSoVxcPkXgIylLC") }, + { XHDR("hwcbmdkye", "S") }, + { XHDR("nhhitmemziciofhrfnh", "cgfFGdvoNazNkoyPIlGBvjDPZjdinSzkfhuailevnDbaMfoJPPsGpyprgof") }, + { XHDR("hq", "HUzmyfOuekZKboIUkiSEYOBHuSiOjPwkuwIcfjYYgOFwjPnS") }, + { XHDR("kypkfjlhkyiyvqrtujop", "xtzdiBRonLMvQwcwIaoPfPTOOfbqyCJNsdCGTXGReYy") }, + { XHDR("qrmppsqjfzgwvbckudna", "WRKsafViyFHnVrgKbVPywXayHUTzOjlccnVMQPXMArtzuKRcFMccYVzgfPWKgDbdsdXMXs") }, + { XHDR("anzyoumesnlummabwpc", "fCktKnbtUeprSnYOQgxbQilKLDgHOBPubnsG") }, + { XHDR("wcigx", "hPRSuZOoKJZfCvmSWX") }, + { XHDR("bjhkwkvoqqumlky", "dawyRxLRSfC") }, + { XHDR("xywiclxuhakqfi", "yOFymGHGnqlfNoirifVpaPzuSKyvJsSzSWq") }, + { XHDR("huzekpwpstpzjub", "dsgQRBiIipvTsYbsHNKNYYSiVfgrpHCOboTjBwPxLyNprt") }, + { XHDR("gbkuta", "qUSDNwqgpdiuZRfCyDAIDBOeytLssj") }, + { XHDR("eobdnsoodsrtejmz", "SqnDLoWYCafYUBlN") }, + { XHDR("uqcbisjnmrrovmxej", "TiNBrrkLNYwvRvVhMFNmlaoqywdJAnpMIjyEWBrsCcDAfBUJAXixGQdlBQo") }, + { XHDR("kwedyndkbghehkstd", "biaagrUpKTmKaVSZAonHMmYNLtqeCqhmJUr") }, + { XHDR("gqmwhamz", "lcBAgEHaaoViEYxdtYVAyvWA") }, + { XHDR("wnknf", "EMPbsUg") }, + { XHDR("spfijmmlbd", "jOuVVdTMOWnNhqOdDSCuQRFraynFkaVEPARxjLhreJIuWkwE") }, + { XHDR("wshx", "bRYjMQ") }, + { XHDR("xdypj", "eftLfZdqjblTNir") }, + { XHDR("xskgxzzbeeqevagyhxxh", "KpBSWyJOUDOzJbIezhMZokWpLWLxWAMROUeOVxcZhLPrPuMzHuMGTWEtD") }, + { XHDR("oc", "LFk") }, + { XHDR("oeyeoovhrgrguumn", "YrpRZvrQxkzKibprkfFWvXfVkrOSigmgzXlxfwlBUKKZOLKqYmtVbCxnKG") }, + { XHDR("uttsnusny", "bjPCigYDmaOkejxiejSDqbrVOSWQNosUyfDxi") }, + { XHDR("mgqwvjlgxokjfd", "LVPHwvLtrshIUotgAXbBLTNTSBtmUSYkgUAUxsSj") }, + { XHDR("vdozfjjvgt", "GpEWdTLesTjDFXtMuRKbbdQNzyttoqnICFsfUHgetbaWqfnShMouIyKkQtibjmKLm") }, + { XHDR("enbtgpdrmyueqbyd", "UkdZjNnzCHjpIvLWsYBOOIdYJgxCMztMqxJowqLHklVgUNsruijmOLHBxdmNfWrjAGYYH") }, + { XHDR("yfcuhefkethyavdl", "fnBNburQzHKUnXGicaEkQYJMeeYYdtvmj") }, + { XHDR("ucgvjgppdbmtztmk", "bUyNilBkGjHtzjGnjpLIDhhBBkjNgcGHpFdoXDABHDOoisrHLKGXPGpuE") }, + { XHDR("gcrvoiyjsulddktghjr", "UpgKsRcWklQnxkAslyOHJTWnuXNCegUQKpCyogywtxpJTnAEfBTKtNojAIWKkfHipMHyucEXB") }, + { XHDR("dctrwungeoxdfz", "EoqtL") }, + { XHDR("kj", "NsIHLIGT") }, + { XHDR("mpxlvqwbmk", "lxVVetpmkeMQYaAXYPoYhRrqBnSUMYqpQlVIUxkEecVFw") }, + { XHDR("ixgdgnqqptlu", "SWGEoIXrcecFsxPnluCpLaxnklNsKVGrouuNcpmJgwIxaRBRaNQGsgNxjONmfakelWeBAzO") }, + { XHDR("z", "QxcJnZ") }, + { XHDR("wqgwtzcjhwbds", "TdrTZZSfJRQavrXrzO") }, + { XHDR("pnouzmdssckxqdac", "CoaTXByEdqLJp") }, + { XHDR("ouebuadwkpjt", "ggWJeAAEqEYXuWC") }, + { XHDR("hdsp", "wPrKoKyvNJejMfawlXyjugAFwdPRbvZ") }, + { XHDR("nfnpxqqlcrlfkykn", "UePsJdhgbSlmdkcCiFzRtmkoAycNWcyolTTdvopviVKqLentfealgQPzDcLhqlE") }, + { XHDR("pjkvobdevllqcctqe", "ghXuzujFvuvPaQpeZkRMrqxk") }, + { XHDR("nrgvzt", "jtCeekXeVbpSiibSCbIsvSOX") }, + { XHDR("c", "HJNuvrlINrNScUpzuyRljhfaLUtpNDotKUiICC") }, + { XHDR("j", "CkhCVyLNhaeWpxqMLWwCHFXSuakJfAswaNKRdIhQoaEbDQmsoSkFgjXVagWMOAQxLsBoBMQjsAT") }, + { XHDR("iqrfewyjxyl", "fFdAAFbNqrQWCGJRMJtcBeskNcKWtcP") }, + { XHDR("nkqph", "zsdXZAzJQXVAkoKcdCuPMWLoJATHXJFfYMddtVmL") }, + { XHDR("wgdw", "LGEnARCCGbLbNhbJUEb") }, + { XHDR("abhlrfm", "KsDVNzcfnmOQZQzQaEIpNOUIRHUTPRotHfdqjBbxdogJdtKJNjICf") }, + { XHDR("jdmpofsbnwglafzn", "dKDRVzbcEhIDzcWtTXtSFyifUnDrApZanPCgWgWeYlRLkOSht") }, + { XHDR("uznoeggvo", "oZYRDKbWjYAwlPDpwdgEVMcFbfADOKJlldrXINfwAaKSdsRHnxAfRVEJyNuNx") }, + { XHDR("uxstz", "WgiUZftHgcxTFScpUeewTrVTDpgKmKhtmMgrMHKfzHO") }, + { XHDR("zzdzosim", "zwFqZtvGUEeuaUCpyGiqCeZsjIbbeTUGkvjSKCGi") }, + { XHDR("gifguqdi", "ZyVYPaWqGTLSsMrZiPLFtfCUhiVTsZNZYtJrIJYGCCfrvGShKdOwxbveZoOXFLvO") }, + { XHDR("nzyhduthghfhy", "PfVgwTHjuuOIWhAjRMJfRYggUCOdTlFFESyGXfjpsufj") }, + { XHDR("dzxcpccaeqnutpkasg", "BZnxUxwzFkxlUgKnBjRuXimuKJyUtsoj") }, + { XHDR("vnuf", "pBzzTkgIYyegzRYSnUgJVJxHuUcbPWGwlgoneYLpXJRQreaXWMJIvlHdqkhmQOCXOn") }, + { XHDR("dasovfmxrvhjc", "EGdjjxDTuVPfvbvuMAYhdGSCEIS") }, + { XHDR("jhrklspczta", "ZxkYbDMmrFAZiQOHbYvgKagevSpHszbRJUBJpKZeaabaiPdnXitQXNvPkkTNqcahGlEA") }, + { XHDR("exjltlxqhvobvyo", "ugaxIuaMexQTeoFKcOKjQvBsfnmtTNdZcsjDRFQAWvPgnvImEltNkCpQLgDkhAXNHPNZjJkwm") }, + { XHDR("cynu", "OgNCIazL") }, + { XHDR("ggvmxtwd", "TpFSutvC") }, + { XHDR("atko", "zPvxvNmDQIch") }, + { XHDR("jsvslnsehffytprvbia", "UGVaWvVavrvwtLTidJPqTChCnAkcSsdVBCoVtLsiubXtztpaDLrch") }, + { XHDR("zw", "ukVOJXywIgbtOYNlicXfbejHkfvfaLXKqLpXCErKcs") }, + { XHDR("hxxzsq", "FgrAQYNsEwNUrZGLdYowhNNhoqBSRfLqtfpoeNAKylpULSfVtmcEu") }, + { XHDR("llfaiol", "kbR") }, + { XHDR("wf", "CkeEZPpZUOpeBRMjEEiJIfttafWxzLgLuQLdzOqLztqWdhRZiHOFf") }, + { XHDR("f", "RZdwadAEtjTKYlhpORtxFPEgCiH") }, + { XHDR("rnmeyxabfl", "SAVDnmfoEKpazdwFcoLQsCDUlpfIobBOtN") }, + { XHDR("imijnvro", "Ihe") }, + { XHDR("zfzrxdvtospsgf", "MDMefwwUUXOAbsxoyGmHYPWYUHjm") }, + { XHDR("vyjbwwzhg", "MiQjnjyOArglhBVFGBGCLka") }, + { XHDR("uduergimratj", "aYGgJgoBIMX") }, + { XHDR("fshcpuxdtne", "JXz") }, + { XHDR("dn", "txhdvtgpriuETLXVkqIhaEGEBtvkuClLylwVsHTSDCNDtKXQZKirRIjajJnvJsFkFmmWxk") }, + { XHDR("h", "uxZmNxqiDsHyUOMwtpAlb") }, + { XHDR("bgjjlitt", "IblGPBgEbtZdXxtutHrrZrIBPiuoPnxUha") }, + { XHDR("ljufyjxdmm", "RleuyOXWJgVrgHgW") }, + { XHDR("qfdumtapdtrdthpyet", "pNkYwRLCCYvEcZDaVvU") }, + { XHDR("rgkspesctclpygwaoiq", "QvdRDdNzXnkxCKbyvNvJvifpq") }, + { XHDR("uozoan", "cQOZkBtZDZddStaWEvXiJzweRMqWUIrYnxvnpuU") }, + { XHDR("bnxoyzqicbzfhcvygn", "aDZJufOaFgcWGrs") }, + { XHDR("bzkmskiajqgatrtqikd", "robgBQqFzvWISKjvjPRosJaxHLnxgfIVba") }, + { XHDR("mmpjebclcspk", "ZglOFlwWtBeUduVCEEiSoenuEZRZcxJgvNrYEvXbRJ") }, + { XHDR("fiztbpqjzahiw", "JOPiKwhkOxeqtRoFatfizQVIYqjfsPBtunXGQLpWgGIrzB") }, + { XHDR("j", "NEcuiSaWyuASUjLTblCtAzKeLKpHVZBAtNQWIklHOUMiEgjdnONZVmoCdJSGvWlGi") }, + { XHDR("ivowiulpio", "RQSAXfXKSQxKToYEXnegwcndKApJIShfMCfqkLzmOWhv") }, + { XHDR("ejeetco", "TnJBaLSMZoLElpkCaMbhrTdqyPCizPLkve") }, + { XHDR("paohezajxmjyotygug", "eBUdHCpIfhnPjA") }, + { XHDR("unefstrb", "RmefUxjlVBqjrfzGjWCahKggql") }, + { XHDR("mfxctaih", "YNBINbCljlDCDzGBdvVnYDOxpJOmdJfFtfwMvByUMdqGPSPhMCUmWwwuWUVuXnA") }, + { XHDR("lgyggldgrujeirovrz", "vsjmnHFkIOdhfNewNPQbTohptBAuHIoFjBPAtdhejewpmheMOaRDvVZHuStwMxblsHGUWLaARQ") }, + { XHDR("zrfqlae", "VYebPzJNBCeqtQdQBURDvoOr") }, + { XHDR("wknqefoseivvqyy", "TCWMtPIHxDzppRIGsxcKxIeJTVyjKWiZWvAHfD") }, + { XHDR("alezovdmbminpbw", "pmaJGwvuGIwCAFdFoQNC") }, + { XHDR("aysgnwhcj", "tBoDKbTBEQlEfQXQUUjydCxyXvgegcznJaanTUvoVFikUZycxhiTIiESknoQxOpmorw") }, + { XHDR("hajcvrl", "UUmvQSdLcoxjkxGmHA") }, + { XHDR("hcq", "qwJ") }, + { XHDR("c", "LFyvctGpXiorewVLtUQXTAyBsKVRRptQIbZK") }, + { XHDR("wtoyoyqnjnyq", "EFjXjTSPe") }, + { XHDR("xe", "sSawXbGzWdGdKIDKTbAKUySskNHwTOhpKAYHZDEBLRKUoJW") }, + { XHDR("lmudgjojgjcv", "YCIuARdfnGGMSuwhWonmRhrTTtxzKgPQtjaPLixPVrD") }, + { XHDR("ycogenoiwfbvesdo", "ghjtwlVHZCJEpqQrCe") }, + { XHDR("ihisc", "jeqhODBQmVJoxhSYoaYLKSZmekFeqN") }, + { XHDR("eydqyl", "VLFzdGasYcfHrRgsdIbecqZdFMaSwrcRjTiuIJHaBCUHqibxdkLBLXXJggBD") }, + { XHDR("c", "qQvOGWOQEiNSduAtotFEGhdBXfVVBYzcobUjAhTGeSVeFbILJzCyF") }, + { XHDR("vpk", "ydhbLVgSBURDLBQAMgwIYIgKpJuBKFkZsLHMVppMhzpfMMjrpeHlFFZZyM") }, + { XHDR("notznmyple", "SEeYAIpzUTzVkHGShoUpCKGJGBOtiQBfyBVuhdaYcLNfwPQoRPxPRYDaShgIkHoufbTCF") }, + { XHDR("elneekvqfnbj", "nXcJvNMVSnZOGYJrgWYSPw") }, + { XHDR("idzwpje", "nNi") }, + { XHDR("llpqvhlbirssgmo", "KCbIkUZIqldLllLgOEstkgbyZoNjnXocRcAzJnNcSJpQjKwlijKgNKnQCUQIE") }, + { XHDR("qxgqnsjrgvrsvlzx", "xFoifZzJSNDyMByacchwxsKLUIGkoGYMeYeGhlOttVaZdkNkpVr") }, + { XHDR("pq", "JnxOFcGYEtVleWHgVqNTpbpjbRAFhiBJpLHEzSNXMHMGJNHihVFWcfudazhC") }, + { XHDR("scyfyh", "ZwGVKlKzoUnOxdKJfdSrkaPJCImiAJAvQAFRAhDkmgVXUAjRLpOXuGbWcORRJvdKvrKZUQTrSaqZZc") }, + { XHDR("bdbynyavrdmxi", "AfVDI") }, + { XHDR("hshacii", "DyKbOuZwBRbSuPlqhheMXXVzadbcvDwQiqUsmZpVlNfSKdPucmhhDzHIwEoqNFVdge") }, + { XHDR("yqvpugagbkr", "dyeMhExsbWsOKjTXEpDioHPqmYSogWZEkqiulAtzKlioNmVd") }, + { XHDR("qwkqsfghoxdius", "PyWJxBURcFpmy") }, + { XHDR("hkhxmrala", "iDpEoFmJMngdlRfbZH") }, + { XHDR("wepogxlijmf", "yxvHIsJczJasZHtdGGRsgLtGOwSECm") }, + { XHDR("mjynrsoeylhthqaqf", "HgiMtnFOcnWRPLEEbcPzKgwIcsGWNWvBgCFzyEtejh") }, + { XHDR("acctsbpnjpcg", "PsCrnHCgbCiBbVGFJLvQmICspDNLHcFPuJdHrgjznxGHrFh") }, + { XHDR("yw", "ZIZovKeidMPqFqbTSBBSQsOWWfPJoWAsJHsYRqSPFacrZBMWUcgPDDEQmdwmWlLGFr") }, + { XHDR("dwordqsoxbq", "HvBPVrRGXxXiJXSMzlgqyNJcFPNkyskXwuLKyeYCPMXzfidOzHszGwWgMnUZTpohRzMBKzRYUzrIhjMj") }, + { XHDR("j", "wQCfRlxxaLLJycdvTgWJEeiP") }, + { XHDR("dustitvcvuqpcqsm", "drtcUYrGoxeWeRLJc") }, + { XHDR("avpelljsicevds", "TSdMXJyutihUVoYZsxTKEvBarQJhNmZbYCKxxCdHprpaFb") }, + { XHDR("cufepvysysoa", "fJepwEtaCxxUBPzUBBeeOMFQHtRONjTvMkSyukwdfoGEudkdqnUTgNzQdVlhUkZgHvMDq") }, + { XHDR("wmbop", "fUlhsIgnaBYOcuMBFfWPHEDRmwRahciuDJPExktuzArdP") }, + { XHDR("lmae", "DgDuR") }, + { XHDR("hrgzwjvkjrv", "vlqsEqWbxLnXpvdRouoeqouVvAhWcGpFWafQLaKJgORZIV") }, + { XHDR("nxscdlcmwifnizmif", "hxainAPtQzzxqQdDZUUvkWPeaCDigrvvKFgpcwnXCExXplFTtcdHgMnJaVqOHuQNGTwSrdHWXEkjV") }, + { XHDR("ucnx", "NxcNcKXG") }, + { XHDR("a", "pmhnFXVPdigEbDFxTXtQzIGDYEPbNBcCVbRQqzQh") }, + { XHDR("pg", "pckNITfEZQaYJjxGDJOWTHWiWpBcy") }, + { XHDR("pplmyyjzqkdidtiekk", "LkqiqkIAEVkraXlxRnbDwhtAWUxrTDnIOkLpPdGXqWlQVDGslnbIShKyauPMXppNWjHGJwwrOcWlnV") }, + { XHDR("kijfpzxuvrurfxrnck", "faqDCGcsyRBamWZJkv") }, + { XHDR("pmvaogh", "fFAOPvVaPwlIAEaLotNvU") }, + { XHDR("krnmtnta", "HIDonRNMcstkttGhZOjFjomJXUzEcNbzAafdZfUSTMlrQrOKHJyOBHNatFpb") }, + { XHDR("awdhlb", "tRnIfzeGtybnZONYPRLQfpqXPPDNuPnACewsMzPNettEFXaLEuJEKFTvyFSmaNIiQWWUh") }, + { XHDR("idmhhyncygv", "WzEbuHYmxohemBqEsypqbNhKLTyfWloEKQlSiudvmKf") }, + { XHDR("x", "oUVmPhavLTreNQQTWhsGfCAamSpDPOQNKEiJhHpnmjgRBzV") }, + { XHDR("kopsfueubobqefrxzu", "eGibuGvysLjcKyXJInQyZxpOiQHAzMEWFLHCLpvzWYpcYGdqNrRuVhNFTQeB") }, + { XHDR("wmiy", "GxatmOZzsUPFtSkxuO") }, + { XHDR("nfqqlbyptzmtdthkn", "stzhMbtpspuLrWJqwnsAShepNBqlNJMpsChvhCQouJvCBaVdJbuWShGYRFTlzumMZSqhbXTdeK") }, + { XHDR("jugfobh", "dDMLcJnQVDpOFfSQzgDrLcuGRvEvzWFkAnWdNsbWn") }, + { XHDR("biacraztm", "LDhdjbjkDAjhGkCWxFsaXBuTyiKZLsahGJSnLnAXSyHvBrWhdhQjNz") }, + { XHDR("zupaaxcs", "YJcNnbtVUeZGzdiLcuFVWuzObVKclpegGqnk") }, + { XHDR("cajznmvaskqrc", "ryTjZUemEkbgMvxsUskCPWhLMVSGKddunolUfTUvexx") }, + { XHDR("lboxjnduxwwuwibcyrg", "BrlkqMfxdqpAgrwLSfUBguGpLSrkNbPBcQdzYllHaMQISmf") }, + { XHDR("ah", "ybJROFkzVfljMcTiGXCdWnZmgjLCvBmAeilxaYXyvUznimPLaSWjl") }, + { XHDR("rnouoiylyzqkbwf", "nNIyBPpfEtC") }, + { XHDR("sytmarmay", "ZtVdirrIfGRGotigYVXNrTlZKQySAwmAoikkdaNW") }, + { XHDR("ufbknpvgqnwzwcad", "bTiahvHz") }, + { XHDR("gccchn", "CiSgpULwaXrfkVGpJhaCoIpTTSlFKQmpsOBkhsUeNNUNpKYWtzKgqHvowTzRIPAWtjXplXUZmKFqc") }, + { XHDR("ispeltnlrlgse", "lflvmaQIcsFfPmstMKkLunUfYgcXugJhaFLtSDjphQIxyXMReIUkBoKpwoVcWo") }, + { XHDR("vdpecgowrtgzzml", "eXdNisjsnGgMHCejxcTbAWnlNpMinjlNLs") }, + { XHDR("espbjjolby", "ofmEIdXeEZqiNALRpZHNQwNQLMhTRsAkZSkqqJmDP") }, + { XHDR("nxvrwul", "iupc") }, + { XHDR("vlkangbjitss", "lyFJZReVIuXtRbieMVhDdcagVQqvXFPHGzpzhcPApAZcRImfCmlnQdoGLuhugjAQ") }, + { XHDR("fueqoti", "sIwPedxRRoRFsMHnNahhlAACkJfFrSlvIOzgOKgxLdvA") }, + { XHDR("whplb", "wwoMXQwRTQFlhBAiKIcVZcVNISSTUyODruCOfYaTlKxAvtBdjTmjPTJLGvHMyHthebtQSbBvdvPJCuyS") }, + { XHDR("rhwdlyvwssoxmij", "nzCljpLmPzBbsaOgVPZdcFqXfQBbbphgueJlBmAIa") }, + { XHDR("otq", "VnSqPyROJiKOdPxUhHOOxqEXQYhkopSfCifueOQlAujYpivYmn") }, + { XHDR("mc", "ZTTWnfDoKjmufpiXNKOMJbwwZRupNHYyCdGJjfpPAxeGXTjZIlGxoxlbWSIqtZMOshlDJxqgaAIeyAYU") }, + { XHDR("qqlwdrskzswiigdrgb", "zdOkFEdT") }, + { XHDR("ekrddiojaooeko", "bzbLXJhbCBD") }, + { XHDR("jokhtcatlhpl", "GtyjXjrlIEf") }, + { XHDR("nzpl", "VcFfBHXFYvzQJglEFSimqMfSjJ") }, + { XHDR("k", "ocIWxOWZcAjivyYXEEzJhwkSHzqzuazQkrczSNnDIPPrwalnUqqDGlaMYvkjqqBsFGYcanaQXLLHbka") }, + { XHDR("xhupzexo", "oU") }, + { XHDR("xurw", "LrJsfLkwKprxKX") }, + { XHDR("qhjppuer", "NseSfeBTHwhgjZrpzvnpQiugdUKsFfArWcLAULtyonj") }, + { XHDR("fd", "mfXFXFlzAcMvVCXUsVbpupuCSqcLimdeJgDQkjLndBDFgaUhoayXxwycafqzf") }, + { XHDR("rcbjjj", "IDjMnBAQHAQhttdGWbnXNuxNnrbrRVZuGNgRnhJhqIWWUIDPWbNdlsBlshr") }, + { XHDR("mtccvqxkxtks", "RiEOHrIRyUayuwdJyQQoxaGQsyPkAfYNUblBIAcUrlxKGyeaUzXlDAHPSqowUPapVABolQlBzKESqHiZ") }, + { XHDR("yrvzeiavrjdyjy", "uyjJmOLxvJARLORzeXbbbziKnkgxSMbwEMGoQ") }, + { XHDR("zrpol", "b") }, + { XHDR("houfjealityume", "LfKrQMkimRmhyOLfGVYgFXynYuxYYlvxFkVRobyWRrAYuvUyIYjGowASdzkg") }, + { XHDR("ajyonvyght", "RNvkKFW") }, + { XHDR("dimetsstevcebqd", "BsDuDJbJvduqcWBAwMAPbMkbEREhPpu") }, + { XHDR("leuomiqdevorqj", "RAHppplpOFcUTumnPcWKFLBdEeHXCvGSRedyvBsZORSOZK") }, + { XHDR("qnrjjuc", "DbDciKuxVhHlsNCOiBGURPeLcJdjFzDnwbNIenatyqGKQtT") }, + { XHDR("ddordj", "skoPpRAvWKzgWLcznWnUpCaWXRFbmgaeCZfSAqeSiIBHrqNy") }, + { XHDR("x", "Wig") }, + { XHDR("oycqhnbmkockut", "RGfeMQTyiBBfnxuYTATZekxsxfuBaHbLZNliDbzwpNdIfXQnhnSTwepSZLMyDlrAhJUI") }, + { XHDR("vryqg", "WFvrIsNLtExOVlXcYvfALoAANGrHvpbaCGj") }, + { XHDR("mapgdgcf", "VIJWujJbUwodWhjttjMnoSRKKHOkwDeYhEskxowUBxOvnAxFfnGPYtwEroXkFIIHTbBHWWJiGbdRJ") }, + { XHDR("ffguohkmqk", "gKMczcBxwmrYOthmmwjJwskPCKIoAGqXKYyJHbWuhL") }, + { XHDR("jgrdn", "XeNugcEXsSD") }, + { XHDR("yfngtjtwobbfyije", "QnrByyRuVnwUSJXCxDzJOfwiqJulniYKroiNtOSKDQQyztDctzH") }, + { XHDR("mmipblttaf", "UWPKnyDnvQHDUmkYtWtFuOvHSnbHhgDaVqFsVNNvGRlagFVBhMp") }, + { XHDR("kzdhpdpsfzg", "NMvMAYwx") }, + { XHDR("wztiftsqd", "ZJrMnISDWQpGdoQTInkBgyoCYJCxISLbmsdzwSVXQtUyyKAtHNnFTssPU") }, + { XHDR("rcw", "PHFNZkZgBcxS") }, + { XHDR("vxpxvwimmqbjwoq", "RMEFRyyvlEMwOhcHCvTAmKlwtxKrMURlrGNzdLjvUUhelLOEMjpJreOxqkpndDUisft") }, + { XHDR("yfrcgi", "xJOXNrqVpLiiNPLVSxM") }, + { XHDR("bwjgkvrkmmow", "dZIlfMZqiIMpAjLPeiENTMBzktEjrarpawuOLIcoKgHDUeIbxH") }, + { XHDR("dkvqwxb", "UTHiEGafof") }, + { XHDR("gzlf", "PmiNTRhbOkIuovBhPT") }, + { XHDR("fxsehrf", "BzKPlegrAlWVtLseXlElbtktJvSUzoYGGYeKdwkzGjgpqgOuwKMkzxElZlNqUpNvhFqZ") }, + { XHDR("izqptu", "iZRmMODeJqgazEQrujQGFuThXXnUdlKtZyBVxPezFwTiwOXEDctefjhNkJRTQ") }, + { XHDR("y", "vLvVGwnTwYErfwifryJEouJXLzzdKTOlrx") }, + { XHDR("lpswtzszufvsvaiokmsy", "iuqsgqADBRqgAqIKtqyuBSMJNkQkIKEzjXFJzgMrToGTlENxoeldq") }, + { XHDR("ecggwhba", "ZWPKWnDMotACaLZpaQkYRpdBjmGtnoeqYCCxCBlhJixGnMxqcfjWomRfGh") }, + { XHDR("gg", "dkhYtGBFUxGZBGkpKVPWcAHYGUGYMfENfXAJL") }, + { XHDR("bwzeqljjgyihhbgsmita", "dKARLsQvTOqdCFiqUZHiqZomJzMTWKYrxryxUUYzCjmCGfjeTyfuttcRrzOMViuZJzxKcagbXvPLRrfd") }, + { XHDR("bxecwtbcqs", "lBpDyfZXUwt") }, + { XHDR("rsxsz", "or") }, + { XHDR("mmsr", "EJZnGXRvuU") }, + { XHDR("onzxmbfctbm", "x") }, + { XHDR("aayh", "GmZoqSXzOgRErlQURTiJQSzlWPAAoVhqyoSyxOQzWJdjdvypYXbTZyshyRWMq") }, + { XHDR("endtickm", "VXueNsUAMukeJSAQiQbXGwZsRSuFFrWQdeatlrNXAKZddsaZUmKjEJmUpDijfNsFs") }, + { XHDR("caz", "xgUQkEkHsBZvYiXSEieZMPL") }, + { XHDR("iiy", "hBxNHnwqHLmJmOgOVrSuWylFHrKlejkJquCwxCmmzYaeZNpfeLxqDVUWoVhCOmMbDUDqX") }, + { XHDR("m", "ZuldxUKrnzrSFhjnNziUyRxppwPMhdUceXxzkHiCAvzSjFgXdvAXOakWWXnNaIzqClJqwUSkqtpaefE") }, + { XHDR("gdewwnovjdpkknntpgp", "UjKHttXSeUCLmENqbaHeJJQrQokIHTKtUOiMkTkzIjqBxbxwBrO") }, + { XHDR("wagjmmr", "JPIfduFSvEtoEgWZnzjmnRszWev") }, + { XHDR("vslrftunext", "VBFbRfDbowzdZQuxQSOoheQdqBtsnDiJLGCnlLqmnrWmpmENAZnomaflOFxj") }, + { XHDR("nhjykecwlzds", "JaczWoxXeclQNZaldwgVtxQJkTvUKUVTEqgJyCxgmhXZf") }, + { XHDR("hqmqh", "khGAoQzXBjhoAywHu") }, + { XHDR("llajcmhd", "eJspyxqXQehCwOxorjPYppbBsMedtcWmPokrIXIQAqjRBGc") }, + { XHDR("bhknoyfeijbvzb", "PIeNAhw") }, + { XHDR("thpnvdhfnotl", "ZcRisLjVQHXUJYWCWgdpcTtbBopAhiCPRidAhGaDZtTFhMLUbecSPduUclKl") }, + { XHDR("vgxbbbqwqjhharhdwzqn", "yHjKyYIkwvOJqoVgvAZgEXPldxLxJJg") }, + { XHDR("ieaan", "qGvqWG") }, + { XHDR("oyxvchvfdsh", "ywsvARKdFJhrytTroTD") }, + { XHDR("s", "rhiwEGphmyyvEMZcVoZFHrMSntSHLyySkuvorHmAmAibSMNPBpapNMKPbNJMaZVtvrBzqJMK") }, + { XHDR("wvsivpu", "bMxwtuDLgrDbZjDiqLjPjbXPDQJRaW") }, + { XHDR("oayluramvtrjfhsbgk", "ALfBqEjqVvdYvORHqZGHEDrKActLJeZonAUjoLQFrbULMyuyhuXwBYzMIPGJtqNDdjqBGkXLyJBEOvjU") }, + { XHDR("kvqyzgcatrcgoiofeia", "qdah") }, + { XHDR("cgr", "mGUNbahONjsuZDBvgPnpjWOmiFNAMepjBQPowKRxAVrTCYyxpiIngGneihqyAewwKgocnG") }, + { XHDR("cnfrlwtuxdasqkfg", "EEdbCJHnCDMHkOfczOiwuCUOgMdNrRUJhlkdhYUwsgAfrlZcsvqIahtt") }, + { XHDR("qwzmuc", "FKXHlTzYKWBUsQnEsnjJAKSiZbeMdKadGtJMKNdvkKnZcp") }, + { XHDR("pjde", "RGoQDPKWWRYPMIKZwgkbVobpfb") }, + { XHDR("zwzerjdxdqvtyigr", "uHKKUjcewGPvmqEwqZfNBna") }, + { XHDR("yrlkx", "ALmJeaADGWKYpIznTFyXpVQCvZ") }, + { XHDR("egkeevnqekc", "HZtHnwsXpkidkwrKRJWfSyDXcGbmlsnUmmHrTkDIlGpJhewEDd") }, + { XHDR("camm", "USxhuKBkUpOkJYUTObSfCPoAATohj") }, + { XHDR("yvkqropczvabyld", "UyZrOcEOokSVfBwVmtpSWBtMkfefPUl") }, + { XHDR("vsfsnejteglyxzrf", "MyusLITOgivANCLEiPkJiOqIlRLjmljsK") }, + { XHDR("gxsrajxzu", "SeJTjGOotLxzgNfHpCzxDfDdPMRaKmtzbkLFzckKzdxPBWDOBEtRHfOkVlr") }, + { XHDR("pztg", "oEEhQHvMHjhYzQMWfLqJdmPlrLUSjtewKRnXBjJZX") }, + { XHDR("wvzmcnifocfdcl", "zsWMQRFRTYZMUAIkVpKwNKAxBwQizUHQbihKlycIQHraoVTyEaTGufoKFBybHiuKLTWJqGLmtMpno") }, + { XHDR("cx", "tD") }, + { XHDR("kpe", "sWPJAuGDLDylkGCRtxBUDOIWwbgRLjJzsakcPlbmJIKDkKkcyoWstOQxECMYeUkMPUihwhAEWVxOYMrt") }, + { XHDR("xsscaxnja", "CtGwTOKjIwvYOKAHrcGTWAopIFOKSXombeiqKYVMnsXoxUwSiETKzEeyAXwICDUylveikjNiY") }, + { XHDR("mnnasiavwp", "pCEwwyCNledjTrdhmLKdKlQujwtjUSwhUvTXXawLAqYGTUcAXYCebkmtURewNEgkgnECavA") }, + { XHDR("gjnfxod", "gePwRHwPjdFshCyiSrFATJaeyWUGDZiWOyLdTWtCLhRZrVIeMnxcNHbfIXKMGxGhziMLOmFOOx") }, + { XHDR("pldefzt", "qHGZTnydwRocoQwLqCjUqutPEXDrKQJYKAYtRccRvwbycYMaPtJVepbXW") }, + { XHDR("vizntzdqohlffz", "TZCXsnWjAzaMBisHRP") }, + { XHDR("cswsnrpck", "EbBYJIVGeOhBKnrPktJpUMjMXvjtrupXPWGcARaAQrKDbonIFDnkfQVzyOIciV") }, + { XHDR("azakjqgy", "PguUaypwgSnzOeDBxCrLbFJUdiaEtSGuZPLEYhLQImsWXUtJSAuVHVHORMbSfPlbeCYB") }, + { XHDR("hnp", "rtlcnehnmNiohHZOcqzvPEsEFmwhUDnZsnETLVcMSgLgYOUhMSzKsnRdHdiTzRfyYrJjHcBmd") }, + { XHDR("eonruygmsxqbqtzk", "TJAKRHqHMudabHFbtvtOqVPQdeofHdSsLYkSlPtKSkbbHRoXyHkUqnCFzQTJij") }, + { XHDR("lxje", "nxbVsLxpYBtdahTGmhDiYKYhoSUgFtyUMNlrhoVrQmEiYmCY") }, + { XHDR("owjusmwogiran", "GKWfsibDhCRjALTZUvZPqWwNdoKVQaNpOCcaHXBoNnbpPAMMfWRFAGQDEdqhNbTHMC") }, + { XHDR("zxvjgdmf", "wLuhhDFSEh") }, + { XHDR("lntgehkmmlxtujq", "TP") }, + { XHDR("jmadmacxxipfshkham", "QyccmPegAebmgJX") }, + { XHDR("wyoxutbemepme", "epCYUufmNSjfAKuzhpkiBRVyzrLplKaURrX") }, + { XHDR("nxwdulykqgbtgawout", "aabsYzSjLabPgqldegwUodInrWShdSNmbcdZPKtOPJWQZUnCnRVXIWIlWqTXQXWYYdc") }, + { XHDR("xzgody", "BhFjHtIxniNVCMpLijhNyrrBuTaajtoBIwbVqtspxCVRYDePHtBEJKlNQjFjGknWP") }, + { XHDR("r", "uFcTzoRplEDOvRoAqNNidDtlRiKSwBBjXJCUpkbVixLfcVCwKeglgaeCaLjjxsCtxoKctUnZIlR") }, + { XHDR("dyrtflee", "OLGmUjRUSNxpnLLsXTHwimJgkHTrCfByWJpNhwadYpovPwrDK") }, + { XHDR("wkfvmjdgcoxmbywa", "iRgsfHwfmUuMGVnqnnVYCksMUGRxRLrrKpREPE") }, + { XHDR("zmncv", "XrQmrSRRDyhGYkRkvGAFqzfXQJwDEIPmapVwsXTksNkkYaJLcXmznUZPOANLuDvkHBgm") }, + { XHDR("hcmuaxrhbgvuqphsvia", "KDOdaUSxCSdGxfTuoWtAz") }, + { XHDR("ttvorwdhrcoixwaccxs", "AuOrbEnBILGNQUxsCjJavVzYxOoFf") }, + { XHDR("rgutgk", "jPBSVzEZkFEInGwhCxlndmtfANkOYqcwZZL") }, + { XHDR("vcjpesohbuhw", "UYHUSSArUVvdfwSWZdKnk") }, + { XHDR("aqusjivth", "EESdBQyuXxCOSVRDUBvKDmrCjntPljQdSDFNkUuuuWgp") }, + { XHDR("cduhhzfoxxetitjathhh", "GygDqxatidEkNOXVEXlSdBIHlibROXaCQADyrBedKsmzkyPUt") }, + { XHDR("g", "OqWhIKCLngFChmycWmdCzRCMdgodbUOsFzd") }, + { XHDR("mwfrmsqgvztd", "NjOERflYsoxzuArGLBPfSIJYOntjolDQZGREzoyvrOZUY") }, + { XHDR("bbvpaqmk", "MntarEziVXMTWBmEsxDGWGoqIfJGkqPzmASMWIfidzNEJaVwoAhmzYzgedvNVywPqQpmOm") }, + { XHDR("ozatugptkyjm", "VZIgesH") }, + { XHDR("c", "ZjvCYRkkgGjAKgBfvOTRhXuewEJOlvvCGjrsCrwtYqvdiHVcTmYJIPjAYLITdiyaLGwfGHgfMUTiIF") }, + { XHDR("cpdkwhsmwtcbhvnj", "BjgnIcdlFBCyLpSiIkDVOWkusdfILYOtueIUPsZbHMpPVSUulWvvUjAKgwPRXLqJXYCzj") }, + { XHDR("krxhqmmwjnrjmo", "ZoRlQMUCldYdcTVaeotxyyWbLYawJctFFoPIwHvbRbdHrEycWxYVcwSMFo") }, + { XHDR("vipcyjtfyoyudlxq", "mAniVgJZgYDzBjwDPMJYizbjYUVqxpXT") }, + { XHDR("kb", "ZpXMDnMuRvEMALFVGWEHDc") }, + { XHDR("irw", "BbjFSYOxBSOIBOfpugIyLapvZwIiOIyHklPCCSznSfGJWDlMeFZtMWNBZomCIeRapWCzHYDitvDYenF") }, + { XHDR("k", "HqkruZTmusuFqyJZYVMUXmGtwwvLa") }, + { XHDR("relnlzwk", "jESxDCtgzjhMYWxSgdXnj") }, + { XHDR("bmnlkcukuheinjru", "aBOfHOazNCIPbWBmjXKdkadjiqmoLTkYupYwXkPJoVMiLJoFVIJApSwso") }, + { XHDR("h", "VjuSpkquQwqqeHzgwdTgRGJTdLmUBxRimZezDqCiOwjJuJLIFHKxaANKoAKcYktLCe") }, + { XHDR("lyzwfakmutcwbkfzszh", "zqeMAhGTgUfZCEzhxSpaIVVZREEuwwGQBPqZINhuDnbLhLjQqESaFPwdMPJjuwPZ") }, + { XHDR("mvrwztzknzkibafegn", "HyCQwgaCbeyQPvbiLNTyGoOVpkyiyWxTTkAYofyBIWbdAyjWdr") }, + { XHDR("fdkmiiapycnmmgau", "LeOqyqRdqRHPtuIMCoESZoVCOXwMsXvmRZRVnRcKbdTwXmEHimlOlPJy") }, + { XHDR("xpfphr", "kAZuizfzQmWHRh") }, + { XHDR("jbjnuwcrt", "nvAyUhTXAiiZpnOmtJEmraUyeWvBgaiZdHCPqpnhKSOAJb") }, + { XHDR("iojq", "roBunISAlbKSwiDzDdmlAdVsfKVjvXZSjsATedybncIlQQcgpfpPyaMWNAtytaGwtMKLoXgIyD") }, + { XHDR("lr", "zTMW") }, + { XHDR("zpto", "piRHYbBswKWcEqHLJzJFkthcPLLBPYdhHPpddyelkCgh") }, + { XHDR("xxyhrhdharbeewqsf", "VavmMrqqfViXqpeObIY") }, + { XHDR("buacdbuudvglnpnuu", "lUzSqzINQtNMXgeUfnoZUQJiRjvHLGWwJGLVylXauO") }, + { XHDR("icg", "uBDanrxWJGdRRPCLhgrQBgljSkkhGgakjNjXrCkpkBE") }, + { XHDR("dbhihmlnolehzquw", "gVCwQBDkmJgoOUqXnrlLDEWF") }, + { XHDR("cwsoxfeyy", "jssMsaiCzsSxqLblYMXDCFNYxWJdpnaWiEQCGFpIvwFWMdNCsBNOji") }, + { XHDR("qmgfstulycwr", "JngxLXUunywDMItLmnZRBfIodOCHJGdNRFMANMoUXNNeDQxMIqSAQLhLfZhxMjOhpKu") }, + { XHDR("yieyejcp", "NYiXnRkEp") }, + { XHDR("bjwlzl", "DXZGYHMXtKiqhCSGqpLx") }, + { XHDR("nzsymgaxpwes", "MafUerbYcIhmrbpexjbMTmFMIeWHpspeUpPePJGfQWujNoZSxJgtwzAJaH") }, + { XHDR("tcyscz", "nZnywKudaQZ") }, + { XHDR("paldcbjjqztwr", "MGnTcyGfYuruAkSyVqoIQRTxItshmKOLgBBqdUTwEcKtgjbiFZ") }, + { XHDR("wwpbzwmopvtsj", "AkyfGtSLfVazzVNKJDrnQNiLuoKepRbwubfvQOvMLOUOBXuwlDTrPMkPvBvGifXBmozvxFbXxHku") }, + { XHDR("wppvkjsnguta", "KGROfwttxGAitWtzlGTmyuNsxHZLbDLIwuAVjXhroTLaWrSEknAZhoQDqDTO") }, + { XHDR("hsv", "HjGeNESjmqSoMtmEqsCIKnoSBXnmmKWkWtJaLBguftcKVdYtQPYuMJdsxIaPcUpboSRoGOgaasw") }, + { XHDR("ouupivhlnmuoikjbxf", "LhVdATSXtLUSVPUEQcLWqOu") }, + { XHDR("aomoajrkpuggc", "EtpSd") }, + { XHDR("nivvvdlaadmsmkahqxn", "SWmgqkqBMXTAmtkEhPbJMNZtLElNbXSZRKflj") }, + { XHDR("sndyagcli", "FtNttJvL") }, + { XHDR("zvhwcdoxhwuouej", "EUsCziBAWNsxMRLZoSmvCyJNabEcLNEnSzHBGjgsnMPRcsdhZTppHBLJBjqa") }, + { XHDR("jixglgejbudxeojlxbr", "F") }, + { XHDR("vk", "METfoykwqAerpnQUNscgHjrUVDcTRJVncOQbsYuBQ") }, + { XHDR("jtkzmufazouvb", "qLxnMIJnOkuFGkyKPViWAtkKENgimj") }, + { XHDR("ilgqmcreebsalhlvpxk", "KiMXSOdgIMoVqypcOivrYnJJUdfgzijtgpYpcIeOBoWEYPnjyZrBaHcJYEeTPrpnlvuXnkXolvjhfD") }, + { XHDR("fd", "ZWWnWjpVabWMlpjCHyUEsPmphgMvNINJNvlqVqoAjlB") }, + { XHDR("qoltrzsofrfzwrqjiu", "viVmCuprfQOtaODYxbjozCqatUiKXTDWfTLHjbWlUMFqkrgNltaDdgdeJIplyinthomJXpgivWEPOo") }, + { XHDR("xqsjdmaigzpmpmmfdn", "lVkZUBoCPnNJqzurDADpIdmkKMsKdcjKLQVVFpTMkq") }, + { XHDR("ekhmeldzzbqkvr", "dNwhIumHXuPjRHhBrEYfwDHDytxmWYeuYqaFJpLsmgSAuDpfXpVjLkGwSaRPYhoAewcFYxRLbIDDI") }, + { XHDR("proc", "IVtRNdeSGZnBMydBEwnYDmtGcHPSxrDzKvFxW") }, + { XHDR("isvyr", "XnElflmxdPZGJpQiatCsvOjjBQIhhfbhijmnoMoJmbIqekid") }, + { XHDR("nv", "BtDQQNLeRRNVVztGNlryCnCoP") }, + { XHDR("kpkgddwndr", "fRi") }, + { XHDR("dxymwc", "toMa") }, + { XHDR("vswautieixjgm", "vITCkPaLv") }, + { XHDR("sagvhsip", "WzmianlJ") }, + { XHDR("yllgplkuuu", "hMBzWZYyvARfIkyUfEUTpCuBBkDOWKmhibTnBWclaRyhYNwTDBmoqdpf") }, + { XHDR("pgdlakiovhluepmjo", "XLNpDRFqMAEugwMEgbOwkdAP") }, + { XHDR("uhklvnxfvrerytdrp", "wDzDfzYvARyQEMPaLLwAGfwrnPzeOWSnrHK") }, + { XHDR("mmlsqbpivje", "jvkgAUgYRerlkdLPYRahauAVUzOQBKoSwCMQJjXfEITzbRJWaslNcAPRZYC") }, + { XHDR("cdwzayaanjumzkhdv", "UkjkhiuvOOfcFSvuIxqLeUSOSctrHsAiFATEIhZXQerAoglsdvweRUsVZBMXErdH") }, + { XHDR("btrmtonfnmmvifvlcpvy", "FwXvNUpTyWcpocTlZhLYEQRMSoYbLRrRGYl") }, + { XHDR("pxnksj", "DDKmUAVoRsTeNOIOhzLLJqfuGuBHGrMfRUsBLvrvipoIISetLVVAVnPudFJFFUY") }, + { XHDR("baz", "AKlPJdvINNUrJjLtBqEdrdTtDkiOlxTYmFRLuyZkPqjqqPANMOhGeEhQzJWhhjxLIDezdDXWOYJRarH") }, + { XHDR("jyhlmmuwnblfolvl", "oGxdLjrCglMSQMghKGcKQvvQiYVMvKRksEXUHESv") }, + { XHDR("noawcwpdueluz", "grVxRXfqghoVktaaDgNLFxMiNnuJFuUxzlnCfgtzCkArDg") }, + { XHDR("xciezyoohj", "RRKdqFFmojBQS") }, + { XHDR("o", "azDhwnXBrSwLdnGndHtbXlLBKhIPMWMgiaNylvFNrVlVmMnaTfSqACQucanKmJwMiEZMyp") }, + { XHDR("svnxqzuqzhe", "RWaPifeZsDWNqqJwKRqwidnXruATXRXhxlqdeLJcuanXU") }, + { XHDR("dygvvrztvtussqd", "LqwvaWIzxNnVffBwIayNnIHJeSnQnXLSIibmIzgXSetKfLgulcZFnZcbegToofY") }, + { XHDR("p", "mNGtkISiTWwEWpseB") }, + { XHDR("zokjc", "CtutRZ") }, + { XHDR("kjarglqlqkapf", "uqWOpIPsVGUBmJ") }, + { XHDR("uuvbs", "YSZhvBehXraHgXpOgyXdhAklqSmMLpUmBBiPPJNzDDzkEVVYScaAeWtDgkJFDRQhAqhhXfg") }, + { XHDR("mullqnofrbynlgyef", "FSPRKVbTCyjFgOwJkWSXDKugMhxCdRSTvZKFTUhGycFpGJQrObgUFMfqweBCwnhfOvKOhUc") }, + { XHDR("fkkwnbsiqikpfpx", "AxrHzHpKnWxHeNuVQVyVgOoOKQfdFSrCVWBZNtAoOhjHDKKbKJRMojtIdSUJbrZCMptcyRsKzVQs") }, + { XHDR("uuvsioylxo", "DTWCpAmRDEucYwaWHYsGvCRhvxUtEFsqBhNDQjAy") }, + { XHDR("wzv", "kKpEChnbXgB") }, + { XHDR("bitelbqbxwoeoc", "HCKwfuUmUUoRcdRUPFwzCBUDxyRVTJTmyCdYxtHILiUYTxwUkijpRdx") }, + { XHDR("rtx", "UeXUzUAvyMKLbYNVfgNjOJparGVtIRCboIQSN") }, + { XHDR("nmqwjtvbuxlkvpjorgyw", "BRhOzGAHuUMIEfforqKySNaMOPrhWjqsSNVRdeRFoLUWISpfmumOfj") }, + { XHDR("lhfvq", "OQOwEUVrLpGBGSsKxohQTBqeEPzpuUuu") }, + { XHDR("hzldbxvxqoquakpapfaf", "ejlbmMuOZKcPpptYLmCQuOgGZSmAcrYLZNvbnBfVOrpcsCPu") }, + { XHDR("j", "knDMrbLSRFqtstcGtpNjbHPyYsnYIGFmsjOFhjXHVRvCw") }, + { XHDR("dewzxppgkiblgggyhb", "CFCjjCXCUemZXLEuEvRGcMJIsWRYeBh") }, + { XHDR("sojdsnnzvg", "YaElSsDtwMDeTtfFormCcgLaWnolicfQCPmZAiJNlsECgCEpzpGsEAJWpXNjV") }, + { XHDR("kvhnnfwlol", "LeBwGwzBinrkVXRYkpOabydrZutzPbpTaeccXsHusXHQL") }, + { XHDR("qbvbi", "oxlvGPchBGrngsjqltmrORJoidacmDLhUbZSuGQJZmBxiTqgLQKH") }, + { XHDR("gdfgsvzb", "aFsYamsONjFPHRgRzKGtlqYg") }, + { XHDR("mzyh", "TJxwUOxyKouyjLEmDRddGPCAmKcqGSFEQVRYdXGhUJNbzPziKUO") }, + { XHDR("xzrnnycytbxykmwhi", "ZxHcKhnMgMvFfKOzAsfmDpANePuXaefZXSlcpycpAqHZTcU") }, + { XHDR("arnsdsvwisezbaegaugh", "UqjXPJDoAKJvIJbyjGQvtnKEbZdwzUMAUCtYzYhfEFFMKJgysYXTBoGlLwGGTtJEcDvbWHQyhGtdju") }, + { XHDR("pvwgiivxoa", "yHCVDBkMYTYGIEcxtNydMuzFPGFHtzPOAsUhhEGGwMYDHeCUDaBWJxXouZyZcHRiRimMdaWnNpqkkE") }, + { XHDR("lijccnqoupstbqldwee", "JybcbqoSKdCYQoAWbzjTGDALjtflHI") }, + { XHDR("linkjfztmsu", "uCGUvBTVOq") }, + { XHDR("uivakyamjqbx", "nTQtQHLhxIXPlBlineUKqGZCPoMJOGTORVuhCwPhpwFeAsgDmRGgYtnlCY") }, + { XHDR("jywbvvqoekv", "mAYXBbFbqiIeFTLQIFwjpczXqlqzFGvTkCjQJFKIWqvpxTnrmQsvYCfPBXKUWgLc") }, + { XHDR("xsgusyowxdg", "EJMwPcyS") }, + { XHDR("mxzbg", "fiBIAGsbMdNsMnwKfuSjZIRbjdajMqgTBvekHJtbhzDjFqmovTcEWzdSyGIILwg") }, + { XHDR("sxjtuiq", "jCHHFKUMpFMgSyGIIGGMvahqfDVYeNBaGCKYIjNAQtGihZSXuCHgfEWIBrjUxinAaABZUeK") }, + { XHDR("vugnjboycxmnsnc", "BkHEkBAXAknYJLqmPYvRivjHtgscgiiZdbzvXWcqcgeTdvviSTvRQwzwd") }, + { XHDR("mqblnpwkojmjyxalpljx", "CjsZfFojkHQMLwnpyoCZyhdrPNxfVkfgSshaQbVLiuCtBypDtvtESaYBOLdVIOdfqPDdz") }, + { XHDR("neqwqs", "uefmpzEJaWOFrLwmItLnFUFhbblRUSkPsdsPghaFzYFTBlaBIR") }, + { XHDR("gxoqfgikqsrwgpfgxqx", "ArevoeffimBkdMmRjCI") }, + { XHDR("dlqjpjfmrkatitslafp", "mheJ") }, + { XHDR("spbninhtmdkdoinujia", "RAiDhwPZoMsdJdLIotgxeVcRPsdUXChUqJc") }, + { XHDR("qjgorlfxyeveeiurmvi", "eqOopPbOLjwPhxummbOjFbcUvLRILhmBWAIrKUzyYqIwfEcMigvBxCAyoeDILIPxcYPtHOkn") }, + { XHDR("wdbhbzb", "xYSFWjvuVfjEkOksQqjVYUMPhPMVRoTJSxlcmfjRDnZCjkqPpHcSYggklYJRueCszNJBiVI") }, + { XHDR("k", "EywkAKURBYLcTlfybZrWNOTAAgUkPfcCksyBHUhdLDsFckYLqoP") }, + { XHDR("hvbfichigjjihwp", "yzukzaYERMkisFRvlKnUbM") }, + { XHDR("etxowcaklzswvqpim", "gFTCKUDPXDDJH") }, + { XHDR("jmqbbhx", "MXMKcNunmeCDDTIMINLZHcaaZorbICvHaVejqrLBofofGSGxurmKnofyPUQueJehEuJc") }, + { XHDR("ywbsuafa", "VenMaJVnaejhj") }, + { XHDR("oyvlvytvgosgnf", "YKnGiDuUsFPBnvdomqpbWYJWKFBuzKQIFJdyVFBNMugMvKzIuTCXEUtTGEwxfNLPEPtazm") }, + { XHDR("hltyzdkpjkgf", "PItKCJZBkFuMIkfzJDdBIiptztOaaZhLBYjxHrg") }, + { XHDR("byrnmshphtp", "gVdUevlSbyOFGIlzOKkMWDsGVsTpZkDZIOqRJsejkMBlNHcZImUJPFfIxSibMvQBdOkSrgGDfFNaYL") }, + { XHDR("bchloopmtijyknij", "xyICeeoHIvbQLzSOzaxRyZTmWfuLUOpsTHTuuRlGjwJzyhsxAWYtUHbfFHAxfbAkpQPxJk") }, + { XHDR("jwjvuimw", "XvgMozSMcACZIXxjrLujJQjIzIOCAFqtJFefbIiGEwKlxRuGxvSoPX") }, + { XHDR("ttrhe", "lrLZPFnlnaXKmUCqqJGbCPxqWqOkFFamzxOUTLlAsBMUAhtJRAcKd") }, + { XHDR("kmzs", "dQCAcnYqhFYc") }, + { XHDR("rgmdmszpg", "OFjmCypHsWCggKpGExougKa") }, + { XHDR("iibm", "zCSDfVrjBUPmJXkJlE") }, + { XHDR("flzrupvuzwnqmdqlie", "DXRnlbLASfnvTLVFZTZOvrLuSyAFIslgvKAQeLfURbSHtdIhHaxYdzBWNYvU") }, + { XHDR("yqhsxcdbcjwktbymfhop", "lngiCoqNTsNdrHrvpiryALTVqyfQ") }, + { XHDR("txbkwlotfwrrpmzvy", "eOKEKljrhxuwfrjTBLKwlwQsRWBvx") }, + { XHDR("mvi", "CyLOutOHggNlRGJcOh") }, + { XHDR("ktsjhg", "aCIaNVRcsdvUwfomQzJUFodEnUXwKpvrosKRCwpEDQlLxsnpKPAhgmoOAjHPwA") }, + { XHDR("slvmihzvjhqbedinfmn", "SEzIZxvPffacXvjGFqDyljYPzJDWOSGsAJCjIWLgXXPzYkkQfuOSqHBtmCtOvLeDqI") }, + { XHDR("ejnlrqkms", "nnZunKnllQZCXnQVieJtJtiObeqlHWhIPEMyoflvbclsSrmKaJDPFAWAiOzdgIWHrx") }, + { XHDR("yjyxyfs", "xCRvodpTcReUexrJvvJWNXkUccOHXhXjCeJERKNvu") }, + { XHDR("ksplwzdbgumi", "TjnAuiPdGcQZJXsLeIiHlUfSwOcOVDAARyknW") }, + { XHDR("pudefxmaxu", "OYMGTOaFIURnuISuVpETopQFrRMWmAcCTd") }, + { XHDR("jqoegxpaqiqdihi", "LXlysmMOfmXQilKmLnXDRPsmjNTwJOTaBfKhnIbPUqZtKzDPHcrwboZrlGWpZQgNeaqIckTABwYGm") }, + { XHDR("wf", "PtDbMjGyetPOmSoxmcCZZxZbyeFcEeJMWbjtNCqxeWdfTSocANvwVA") }, + { XHDR("cfpkxwgjkmugxqh", "vZGmjfb") }, + { XHDR("ogrkd", "TpjpMdQLenZfUBkOZKLLsOrcvxHtQBfviFCNmomaiOInUIstwzuXtWAJdkyIcolRBLsrOwiBo") }, + { XHDR("unpsqmpea", "OnTIWNcBshtqHgKvQzroXcpforSvGunKUrirStpwPmqzNKUUuPAxWqikPqHGEXLVGyVowccqsdozVdA") }, + { XHDR("gotfjwwyors", "ytpdKLygZzLePkaVkIMgQkjNuQQIjeJTVR") }, + { XHDR("ynxxbklwjaljplcyiht", "rcEjLaLhNlldXveXQEObnryKKZTeq") }, + { XHDR("mudnb", "ljZfjaklQymiWp") }, + { XHDR("qfqdiw", "PSThgWRgnAzHwAArQTGThRemcBIp") }, + { XHDR("iuvla", "dGFWtsOOMwvHhjLLNDdyxpFhHHFltgKUTJDC") }, + { XHDR("ucyhdeiehlblwxqkwm", "yoeRCFCqpdttfBRjGAcUa") }, + { XHDR("eouzqjgdeftqagfbdp", "oeSEGuhLMHKZmqyeqFEDPPEpTEVEydWoYAkemUCXOxNRWwVLbJKuxQxPElWnVLHiNOgPBVpCjn") }, + { XHDR("r", "PNtWgiNYygPkASTIQEEsIgWTu") }, + { XHDR("mbhksqnswpscn", "vSJdkySuyxYfuDyzGWdjsLkXruBjjgP") }, + { XHDR("aikynfxrarplijc", "JChNJ") }, + { XHDR("jqnyxa", "QPcevDTtEIQJcwY") }, + { XHDR("bfnnqetv", "kqvepEIIZfNOJQJXHbkoyyPpFAVXJCt") }, + { XHDR("zi", "ILiZgZXiTJHRFFnJQA") }, + { XHDR("kaqinnhbf", "mvjIMjPxBgxRAdlwxjtWFFMKQxhZo") }, + { XHDR("ynlukanbbgappzpdetr", "lcHbSKCaYKNRNaRFtmcqsCryBEvlJwCZRmTfaPeqLacBDHFVdRusAJYgROKSlhVHkWYarAExghBHahJ") }, + { XHDR("pmqkhzm", "SqFQxoYYSTixqXxoThksItZceBxlcZdxdzEAYUbwFLBSstROhqfvPGr") }, + { XHDR("rblicevkwctsf", "gsJECSyibWIsAGWu") }, + { XHDR("xxjsudiveax", "eRoxDLnTggFxuG") }, + { XHDR("bxmltocxvbtkvnp", "HUUFNJQwdHZiGNbJYofEOMgSrakMuWGRBGZXUKHFUqiGGDYCdSEKTPAULzSamBWzigWNvDGZy") }, + { XHDR("fdulkupcxgrhkuqqdhz", "qjXjGFBMabUrsZEOVJFxyqvMcpVNystIyivZvHRSkZJugIOfukcPlmtwHDtUBHLzbedaOAHzUjUQl") }, + { XHDR("smgiywisi", "fnQgtNuJHMiUBbUSwgaIoOfVzpjKquJHulnranMhJEVUDfIIdCmdlprkSDlPi") }, + { XHDR("vmzdi", "JoHaaQnjasBXsgXxTKWltAKzdqGbNGQWXJNUDshP") }, + { XHDR("kczjsymrtdwqvzp", "nmHWaCzAeukb") }, + { XHDR("ujnhwpf", "kuSNbUluKoAiCLtxddYPMthyWIkUDUbGUpRtqNBofcEkel") }, + { XHDR("aovlqymzjjryhzfcj", "OQtFSegjfoimUZcecRXHMswqHhFvLufanJGm") }, + { XHDR("xolyfrekuzfrdmhd", "WMKRYKGuPgUoTGjSF") }, + { XHDR("pxplmdawsy", "QIYAPpgpLgraVkSbkliwDkRieFxtUdAALPRKlvq") }, + { XHDR("hnzmlub", "yKrFckIrHYtrmQBDKHsnZrELWekDNKnXDQvpMHaZBzsIsgQYPmGoMxXnPbXugjNNLHEqw") }, + { XHDR("hdwhxamc", "WHCpnPyCHsrFOIQZcupoMiMcksiELbHtgxfqHNGEJvXhDyeBKmHIaxPKAJXyPf") }, + { XHDR("bjtrogybpvfujbbdvkxi", "vmkoNGhgCmkooBovuCCZHgIhGdgNdCVrfMtWltypaUSkmoqgyYERkdaRLhIAcVFEAauYz") }, + { XHDR("aeqogihcfgmk", "dRWzFpVVcatQupwcgvuwtaEgJHfbdWifTdUpiAZOYvABtHWPyteMAHTYWvxedisJyeKjNpL") }, + { XHDR("ca", "zRhgPqEOwYDNRPJUitCwnafJnnNpyQvgZi") }, + { XHDR("kvhxmniyhclmzcwvixsl", "XgTcdr") }, + { XHDR("t", "HKhUsKUdOlczywcjiYjtwByUEyTYOAEHkxueleRFVOyNArJoIHTgXOCTLHSBjRVUEEaCxH") }, + { XHDR("dtmhfnf", "qWWDfrm") }, + { XHDR("a", "ukOYhBFsHuQUhdxPdnxFnRdYMnURdatoIgvOIfatijJhTaLbNyxKdRZmSmkyVgYHLlQIvaqmtXcb") }, + { XHDR("qe", "AAq") }, + { XHDR("xvmzgrfgccznn", "RoxRRaaYTuyHwcXmmpZkmHCuoOiOTGcvEkTCdUWwYdnEyWPTebBvzGBhQhUMO") }, + { XHDR("vuolbl", "vLSSbklG") }, + { XHDR("n", "jDkwzUpgYqddEhCiQoRmCtuaISlRsiuWs") }, + { XHDR("jdsuhcodjzo", "ZqQlGTtrPTUqYWXFyQ") }, + { XHDR("xyktirmdybycyndv", "HrITopprWgrVjIoqcFESBGzKSvpXbcrVhAvxYyIVEpDxSgysYGDNAidPtTcUQOWKvQIWslE") }, + { XHDR("nnncaoruvfcvr", "D") }, + { XHDR("slvrvuxmr", "dNDopYECOFkqmrcxdbPWpOoruHneiPUyxTNduolZhXItnOuBzYbP") }, + { XHDR("unsxkl", "ZqXeGisEJCAjYIckkdQVnBJzKOGvVGsmoeGfnItUOOyPOXWeRUAbnAzOqNLfGA") }, + { XHDR("pmljhuaganpukguoge", "YmqDkmuNdpKNd") }, + { XHDR("ostvrvdbqiu", "tlRZWdjaPxVXFePERFHAkqn") }, + { XHDR("gmsegxkgkizevxir", "Xusw") }, + { XHDR("codtmlcjizpoikpg", "vFnSTKdqbOWMTBIZyEUhiLQYiHrUATMAlBBmjbAiMqdgYHNEzapmRVeWxInHeMhiUUVObAIZwOQXa") }, + { XHDR("idmazjftz", "qqWGMPKluqzyzrTMAaWarRvLWRaRiCq") }, + { XHDR("mcvtwmqg", "TQmLotUQJjXotpujmJDUUPpLDJuenkXpdxjLuBHWV") }, + { XHDR("wcvpfijagrrgwdf", "JODoYaloyOhBhvuNoJeUmaOdcwolXzFlLPbUXoZHLhojDccAeKnWyPgnVwikjQhJJmrLI") }, + { XHDR("nlvkahznpwgkhxczqrr", "RTlicDDlMgGqwRvchgXncZEhinORVTcJmvxKVUURF") }, + { XHDR("fgijbhxqmhglo", "PWQFFAcHtpJRQGmcgmWHTKFWbVRHVUMFtQNLENsLKhUQUy") }, + { XHDR("lcwyjruwesghuzxnez", "nhmEtUaHyzyjjQLpHFbA") }, + { XHDR("nrbnasnnlregyzo", "ktJrAcMpp") }, + { XHDR("bfqxybfnlzaarbwt", "moWVhOMrrBIWsGBTePkbHriypOyBixUogyQAUrLnLYqSaSZgZYHwnLhZafDihFCxrGCIIFUSTKMS") }, + { XHDR("iohuuhwwbohxdh", "ENoFjwpN") }, + { XHDR("mvyncrutvawtdnxcbm", "lvqJIRdn") }, + { XHDR("mpoa", "jUffUXGHeVrSOTdYshzkHeTiiKZHILKvRQitBQvQRgiQOCJbTpZLiaSskDABQfKvLMlDoa") }, + { XHDR("kxpilsorkp", "SdcVqNXFVbjEFQLOSRUcekWxRtWQOqCkcJNMnEOmFarDgHBSHlyMrzFhyDlxmXbEHQABnuUtA") }, + { XHDR("nllrsrthdyxpu", "JANwngIwiIYzirwOUaSWwZeKmromH") }, + { XHDR("dctckspcqotecppxunot", "CjbLAbRDSgdAzfBpcfObctJcabRhiNUDEwppWXxGyYcDvhedVdjbxBwBeVSP") }, + { XHDR("jnkhxwiazsxfvdbb", "rpaLHBTxLYuimXYNJfHczFLxISqYglNjMxjAJhbFVmjL") }, + { XHDR("fvw", "rarbUqfuqAyQIotyhiROMKEnjLHk") }, + { XHDR("wzcmzmvrnigbeznpkhxv", "uCnRzBHucHkrCxwTMAsnTihCjyZxxnJXsPJwxcwRxVFavsPkB") }, + { XHDR("ackkndmmegeiskcvra", "phSiYHbcSpbCUkagVIwkzbdvsHFKYaNpeZvYhbsvSHTbGOgbfsDjf") }, + { XHDR("gbngxqurldytvxlpwdsv", "sOZcBzwISQRTLCaMsJmRyWcqBJWniRdiWdTxUE") }, + { XHDR("lsfduzmoxtsvxz", "IYWPBbqTAzETIuAVJSxmUkDGRfCbv") }, + { XHDR("prcxfbzxz", "pWfQaSMtzykCA") }, + { XHDR("innirwdl", "kwwlSXRBzAKmUEnUdnXervTkKoGrHSkpIgLhCPiiJiFTwYgtcegSBIKZlleoXLkmGFtXHwLlcpgP") }, + { XHDR("zskfnpazfflo", "LPVsiQwpZCYXvhzfWyIceSeKySgeKgBNiIrxmokXrzHfCzNiaycUxdJQNVtIvgiGNHtuFhjO") }, + { XHDR("cijsackwu", "oWnoLyRfQypVoBabCBolnqKslRauoyGrVuaqzaIrZvKbKVSlQcSgmdenEsnVxzf") }, + { XHDR("ullkedaovxusljjl", "GkdDsAcHchsRYwnpkNkPvZAyRcfxgQtFEIYYmaXFXtofpanxcLkDFyAoXavUyqJ") }, + { XHDR("ezjdittvem", "AZVxJUPhtnLJpspyiyzvYwGTdFMuoUmdmuwMPwBqCmsJ") }, + { XHDR("aexcsn", "RGVvdmNeYTxuhfeIBvlquZTSjyOkAFXhKKHOPyVJfIxcoSMCgxfNyfsAgMCyYYAg") }, + { XHDR("ihotfd", "gnWXIcvvQaePwfpJFvcwmHle") }, + { XHDR("jurutaacemycwdxv", "duImmdDXaoaunGvqLlNnLMdKuWrsAMlcfnBBBu") }, + { XHDR("myjdiz", "gdhyDYyw") }, + { XHDR("ppjczlezyina", "QaCFwHANxsdmtIxCfwfvaMhXeqkYDUFbRUIsGxFgQqMEkRuSxlEllAXgvNdK") }, + { XHDR("eplrvslqgllsoyohz", "ntrgIUOAjkKJBvJZaIgeAvXCpUNeQlJYiceHNcIRNfAsuUkX") }, + { XHDR("ryvhyrodfypvaqwx", "waRJxnZFaKoMOqzkHPgOdNeESC") }, + { XHDR("ed", "WAXoRxBxBvNFPMbdgcoOWWvqLpQaCaNUIGQncJoMyDIzqssEtkywakFDfxmsMVMncISiDhloH") }, + { XHDR("xrwzrqpykl", "kQGMHyNVgcpcvNPOcrtzKyMmOtDVhlJBeDimSyGEVbpkygCMQ") }, + { XHDR("ulioti", "BOTMXMamzauHZlnYrzyDXgPnamKoZhxpaqBEymcvYkqqpNMiqtnBMcMmrKgQcxvZ") }, + { XHDR("ekwdmsghjopayalqy", "SfLvWPeODcdBxVfMMoWLZMuQtnXHjVqSgcEUEtEJHaJSRAunYeqTfytbuGf") }, + { XHDR("htv", "eJEXNIASIDMeIfAxrhlEEcISDKatKsefrHMhhSIWIXklOuabOyhZiLvuowmYDQXz") }, + { XHDR("isonsorkqhdnixmapjgk", "oFKQClWAPOzEeNduTIAddUGGrbXOcqFboMGKIzdnUSdttnTOACkdFXPCZhpKDMUbxKqblvWLmDPNbz") }, + { XHDR("kimqxshculass", "kNbrdDxFXJReElVfgAQKBstKypfXFYyOQLKdd") }, + { XHDR("pnyxzencotbb", "mbbfUUGItBqrFixsIakBUzNPMTYfLKNDQYRmaaYFmMhTBshfHXf") }, + { XHDR("ssaqqvpeqzsaqsm", "bweHznDKEWUZQOfCBEgLAXuUXNzjojMlHRgTZUPSrwEPGmvo") }, + { XHDR("mcteiulviz", "aQLhAGUnPKDzERTY") }, + { XHDR("nkrjejiohzc", "bVEObskNSgBByOhgsFlVVpDiWZufSzoLdoiCLRoakbpcxIlyAmkaYnLTisH") }, + { XHDR("owdsspheitzdoxg", "eyP") }, + { XHDR("wnbthowxdb", "tSubsMYnsypRPHAIDhALbOzBjlC") }, + { XHDR("zabfklsfmiigly", "JSrZygLIfQAUUNaxUrJosVtzSWFtHqMULoYQibLzZVKQmudmdeHzMueKbzyampn") }, + { XHDR("fuguokegvoqonvfqqd", "JPyqahkSFOCWgIVUrGxgDCgflBpnRrZQAosBFhfhwDMTAskbNitcrGeMXVIXR") }, + { XHDR("yxyjywaimnyrieorj", "hkrifPrfYzYyAgRmibJkXsDQyYXWYrDGaqcuxGuCAmqbBdJhE") }, + { XHDR("ittayt", "VbGBkPncbmHnPUdmhngtWnAHeJZPfxXPSHXZekRkNWnNniRWmnHLGlbyjFAQWVmac") }, + { XHDR("japatyvirqomhtvdjfls", "ybrpfEGJQcFJUyRGoHVdA") }, + { XHDR("azdyhsxf", "sXjyzym") }, + { XHDR("ecczqzyzx", "PRuFTS") }, + { XHDR("addlggvoedmqf", "rKpErnUmzxwGStKxJRdKwpRWPvwFTOBLRUglZtDzkMZwwQlyDGWJlQwhTHUGQjbGFAc") }, + { XHDR("osdqpdqrumc", "wfnYQaLvVDaJboy") }, + { XHDR("tyywzelesxgzuacf", "WpZLYMJZ") }, + { XHDR("ioohxssuk", "quJUzVTcPMkQnKGPAwPebHzoNxoLCbBiMVKfBxzKwZtKalTpSLRJHFiS") }, + { XHDR("iwlvahqtiz", "GLPKWTcBktojWJOkPsBTMvVWvZDHGkKdIguMRwgMBVWVln") }, + { XHDR("qbpicbgfnprlpoinihi", "ejXVwoLMxxWwsnjkYRiWnFeUdRsxVYxsQBvunbZwYVTWIociJMhcpjKrGsYIp") }, + { XHDR("cojnl", "UMZVpiekkywHxNlsMGnJXUPHaKbbKjhsPwMQyQYTgNLj") }, + { XHDR("wryevcb", "QMTOEybsqZCjvfwVWZpooyaycyYyQcgYOrBpATrEXhpuMZRKqcyPyhRMlCIh") }, + { XHDR("oagwjyzhxvblnga", "SnDECYhuqOwieFMWxmAbgzzrxWlCalOovQSgp") }, + { XHDR("pjv", "WDsznnEgLAyyDIklMBjqVtBwrBpZRPweqWZUAPchAfH") }, + { XHDR("ehznsgwpopcuvguvkvi", "iWwSLvZKTADunbgGmbouPSDhesnwwoOEf") }, + { XHDR("ieonl", "xUhmQAOpTXVllLpyImgeZymCGFMv") }, + { XHDR("liqfgleocxmvpm", "RBGeMXVGVndoHOsFYGWWLElnnQCyyRjrLpIGmhkMmjtYruBMZhvWGIfKxhnArDvrB") }, + { XHDR("wlkxctvtrhzu", "KbTnCiIFMtGeAVvKOZQEREabBXwwXmCEsKyokejQravQkLVzILCCoMctjuwUaWMmSYFKsSrpn") }, + { XHDR("pbqi", "gjsJVIvmGaGKWTINFdsvkIPioMhJhVBvbtfHzCMjnvDKaq") }, + { XHDR("l", "tYWz") }, + { XHDR("ywixkctelghwlwaofrsm", "jxmZuWyXVrEo") }, + { XHDR("uvsmlkzvelfxumfnw", "CcEgOawFFOeecbqeZHysQXLiflEHWrYHQibmwezMVYIVtGQHba") }, + { XHDR("mazd", "tRlmKQUFcuzMGAUqXpcgK") }, + { XHDR("q", "YAeKrdYsOoSubhiFILQIszYKvR") }, + { XHDR("yn", "JOiPlUhplchygfrVGTozwWIbRwgJeCmYZPpZHzFNMwRnuxThgSSMdYzsnfStARXsaEGqAfJaM") }, + { XHDR("urghmdghizhntkwqf", "yiQQQeRoNdJjZzsLvMHXvOygoEOPdiKGuXpyiaEbjimpEINmtudYffyxTXQCBZpYzMTstMRmqP") }, + { XHDR("awirphkfmfjhdce", "NbtDNtMGFKeJiPaKBkpy") }, + { XHDR("azrfnosepnyaw", "BwvVQmlThpxNTAdmVpFWkGPrypvpzYLDue") }, + { XHDR("ovulrfl", "vizLUbXMufGYmgCdXURNsFewmJrUYHAcpTvsWMQC") }, + { XHDR("bvvfhcrfnkgeyswnftbr", "m") }, + { XHDR("ykvgeizrlw", "vdkDTIRPWhvZfHpnpXZeonrQeNSXazON") }, + { XHDR("wehyocihmyepajldgyfu", "SaxAVJPpIkCPPbtNQSazDUSazlpEyWwePIPnDGghrpcuV") }, + { XHDR("awntfnh", "BFLPetwXzDWWyBydXC") }, + { XHDR("dips", "vlODSXBKTbNdEVpEhBOXfzCYlXpCtvqxpCnhTACMmbDDKDBGMfSomYKTXqllSINwXlCtbDbqguYG") }, + { XHDR("ytgozzwvmruwwyyc", "oGsBHPvheYyOJWFRSbG") }, + { XHDR("zjflwlcuznn", "srnTvtsMQxMdzlIcaOsbeTpLGHyKoYzdCebIKAFgqlfcLTeEoOPObkjViNLAoAFvthjgThOyx") }, + { XHDR("yy", "FXyYeURvjBnktdwCzylyjYWQKxHaoSmvqvZMroQYJZ") }, + { XHDR("ihcqgyw", "rXFYJWtMCJSUrSaN") }, + { XHDR("ccfwbrkvdz", "HWKhqfBBMOvGJhnyiVQhACLHrqc") }, + { XHDR("mwmjqlqrl", "ragdHhhmMALSXhQtiFwSCFeFlzjnRYKPMSUjYVgkUscTJyOuQIkBzoJafcGWriKxhcCHhVwbgQwNcX") }, + { XHDR("ogsutsmbapxwu", "otkuUjEkRfYKXWmdxBciyKTsDVu") }, + { XHDR("tgthuuajermzfzz", "NMSrSIlyexPjzYdSHVVQEoJDSPDPdBSVcVqtGBehGbteQN") }, + { XHDR("izkpjhllunmnzbejf", "aFqApRaYS") }, + { XHDR("nnkyj", "LLXvNPlTsmkDGuNIcrrLJdjVIgrLjjZjKezGnqIEIFIqLjYBwZn") }, + { XHDR("wgvovrj", "JdyaHtKqdhiqswgZDzULlvlfHonHTgVMDeHDteEruRRqDDMkXWwaid") }, + { XHDR("dektviuu", "ioqPjwUphJjVORgemgJhtKtDDNFuqucaHgalktTSPhkKIerM") }, + { XHDR("xxdm", "wOrSFn") }, + { XHDR("oazvykvb", "vwFhAybKFIjgacVXPikDOUepUrCLTxpomDAOiiEDZSkSF") }, + { XHDR("xngziqfrwbwz", "tLIgOLPdLyHbyaAdvinucpzooLeVkpJhVxQRmEmopyvKQjAFUMXtRhwOYkK") }, + { XHDR("cqbxtlhwudadwgj", "VoKelfbxdBfYQxKGnOKMHfogGJOgZfhDFUEvanBTvojPhPP") }, + { XHDR("nnmdemcjftmxusysyj", "NRTeYwFlOvIMPCOEPfuuPIhooBNaQLBdXFMfBtrQaGyjtBbrysGsWVNeJndMuoLD") }, + { XHDR("pq", "CqLIHVNzSsilgyqUsPMmnjnPfZQugd") }, + { XHDR("eeptsnkumtjpdzhi", "FXTyQMusdaAhJUXRhwkghncGgUb") }, + { XHDR("nrdrdwfsev", "YuPooLAcIKbDmmdptc") }, + { XHDR("fqjsftnodeqbjktzi", "wSvGaSFzlrpHucEVQfJmTYGafTcrzKHxgRDWPmsooAgCJHmEjcymmtaUJzBTisLxlGGJTqtHRVvyEAB") }, + { XHDR("fohxvmpswpz", "RqPZmTuQBlihglVehPgwMeMfmtxkEgnPVPIhZvIGvEsvjVyuOgxWuzgvPYZqneiFyBOE") }, + { XHDR("romvlrptryeks", "AAcZudXMnNoeYlYnKdrHOTiWKWbSnqyIHkilXmvuTMQrQvTdraGiiqieCcpxkKdDKpxfYuVxfkDMg") }, + { XHDR("wqfraucpgasuvpsogqi", "kSyivcceZjZclmFMEQFmfVMdWlV") }, + { XHDR("uodtdy", "EdyslYCaIhPqAlTfuchdCFApDVNWlx") }, + { XHDR("jgigqadiaiikvz", "cGRhfywwxDbzVQnbYpYVlStkSZRfDesGQoCSdSGffCbRXcxfTsOTwZVEYnkIHP") }, + { XHDR("lyvuiurdt", "CprLUkezLBAXEPxJXGeLaMbPuWiROYCaXAflcwGOlTIuBbVjFXBMEBkxrcFNmatwUIuphthAwLDAP") }, + { XHDR("epykyrqjsrmtvep", "JQYYSpsTbBTZbuvsrtDMbnmkhQEEId") }, + { XHDR("cdsosjwshahepkth", "kYrLeYjcLdYdbsFariLfLuKtgkKRs") }, + { XHDR("nkydmmhcvddcztudcfti", "ZNruHQjCkKUAWsvVAulsrXomvoxIoJKVArFlHvazxRLtFRGocTapbHt") }, + { XHDR("haodms", "cGWLdVcTyklCCabpiTHnrkdaPpDJrpMtZMT") }, + { XHDR("nrpoqqrkcbafrbw", "dsJwEzKmoMCmbgqmaEvjuJeOiUgUKnlfktZlHiECSWkQDSTqiQbUrVJRiKxWUUwCZQdPLrJOQw") }, + { XHDR("xpsrtv", "YtarcN") }, + { XHDR("grrbixahxjliutq", "AtkbfsOEPLdDaLGIZIBUwqRAMewIWAsRviEMFNREDq") }, + { XHDR("r", "CxYfSkpAkejMQpFaYlHTDgzT") }, + { XHDR("lfynb", "aBOJ") }, + { XHDR("yzhflripeiisaajhr", "y") }, + { XHDR("irrv", "rDsHWQDsgZZDiERrVaKPJOKyUUXMjPzBJKuteu") }, + { XHDR("dgrqszjtrsecliohad", "oUEpdFYcC") }, + { XHDR("eu", "JJfnYyKTsH") }, + { XHDR("wkghbcwvcau", "GaCGbepRztydFljThEwCbfOMGUfWnQ") }, + { XHDR("wvluhkgpzpgyiyppbdni", "edznCwYnUFNmVueiAViaiRUtDNOoyXRYSBpiqFMHaLDoUHOOLcWxIr") }, + { XHDR("cvnhgnx", "bLbrTGsapAFG") }, + { XHDR("fodiwobalkcrkuyaqhb", "dVHXxqMBYKjNxhdZ") }, + { XHDR("rmtyoltrde", "azjUDAxZICGxhFAGzCVNlwb") }, + { XHDR("sicqblmmcdaemyzy", "ffvzKDbEQYVZpcqnNoYjTsscwYTtWOulBWZoPzRHhvyTMvyEGcDPIErdDPtoXGIwZzJxZzDaDfhSefgT") }, + { XHDR("ihhadvcty", "BKVsSIvlqJHflWIyzieWKWSQHoGJNAFzr") }, + { XHDR("dvzhcbshrfhcbetd", "ClQBGCmybJQfRtFUCltStCtxnBdAiFrgGLKxXQdvnxpjTLNNNnFbB") }, + { XHDR("odkhlmjbvpxavhvac", "QaaBjaEcovNINnmGIcTfujGboalqvlePQOSGwGHoVXVeqnVCjEVx") }, + { XHDR("hjczwmytilcqvshhc", "sUA") }, + { XHDR("iphdt", "ZYMAEXFGwodhjwulRCtmRtHa") }, + { XHDR("zlawkefw", "bKdYurjuKOUwyvxehkqIQCuJcALkjAgLSHQNTupWRHljyJnAMlnYTfJaTbbxTfNtgUbxHkrLwhDkgYp") }, + { XHDR("vrqjgsgyoqbn", "pYUqqeqwGAFKcdzYhobNZmAzvfNAxxFMNS") }, + { XHDR("vjnicaplxspcldhlz", "UiZtTPhhnqsAcDWlvhYiVxGNZdRXjulZEDChqGKXfhYJdvZRgoPoyJvxUYItpCkYEoKymUkt") }, + { XHDR("mzbsjpnrarvv", "tYnNCQXPdUyIcEfePmXYkWe") }, + { XHDR("cw", "CBmCIdhpjzVjnKMbhmIqEXxVjEFhPnZidbfwDUR") }, + { XHDR("zxngvhrjzuxtffapdte", "hbaDUFOyRtpTmnrEjrQrMIjgRzEWIDkhctVrOHmXiRATPAwA") }, + { XHDR("trsnlcobvvhmcdeleto", "WlsntsUxYosXBnLIizLstlcxEhPQlBrNjSXbrMhngYshNdNGhyutUtNEqyLGpwdzMwzuTAx") }, + { XHDR("nqflb", "DfmNJwdEXdlpUALqBsBiDFgzpomPoikTd") }, + { XHDR("xuudb", "IiWchzWIQyylmsCcgsMLHSmTvZmzaTPjiaCuJLgcWzaAtpLYuotOEwwmFUeHu") }, + { XHDR("igjkxxzzpewaaatvtt", "DDRQRdIFAaBhvtTjgDlUPloHXRGHCeQQklUCEXPnhRpNaqkhgnRTppYOpYJAwDz") }, + { XHDR("ccyp", "RRNKWnocFUEgdTgURoFPBeIj") }, + { XHDR("lmauodmz", "MsfnWTQBZWkwODupfOzPlqYWvJsuTwwiUAeZbYHoyyxwxdJbC") }, + { XHDR("jrxuy", "xdYlWmAvCBDbdOudRujGuHsIIPZRnNKlFWpAobZMxTMNeBOFoCkOnLnyqBpTi") }, + { XHDR("jroqhfypz", "yWngaTAYdYnDQIzCuDzYlVwWiNuvXmIlPlcjyxuPIRkLtpljprwYn") }, + { XHDR("q", "NYhkCOonVqnFygejVKGRjQioEZTVGdYXlpXeXQzuWjfMJwooL") }, + { XHDR("tukqhjgtrrxiirl", "PVZzUFUiVVywQpLwrwjayyQRHbqGpKRaCofuFPtycixT") }, + { XHDR("xkfkpxnlzaeyqdiddnaf", "ulhBYncbcXSxEqCbQBjHfcNMjmHvRcIZYiMPphFh") }, + { XHDR("lubyjwpg", "fgnKsgGXGnBpdJphjRFzLHkSGJkCUxniNnhvSioubIBNMrHIWTeZOrhOhyiWchWDGQDObAySwiSna") }, + { XHDR("yezmzusdixxtnztozto", "dwGacYQqaAmAoWuaVlTyMbQRtDNGxlovokArFExshJU") }, + { XHDR("jdlaqjx", "xUvvXSyqywZmmzwKMqLCyHjjxVRzKzEVgJzKxaAxryZLBdHFbD") }, + { XHDR("tsrswcivwjfysxv", "xstbVleoPtgpNptWmTULWbZPYrYHnWbYXIXBVpSJcyFIbtHnyMOsJhQum") }, + { XHDR("jfgrguwpnrbl", "JPWPaypkDATPmhm") }, + { XHDR("eavvrjvccjhabkvanov", "zvYmxsFluEoMCYmQTHAVbkbASdpexQLJBMkHq") }, + { XHDR("atxtucdaltvy", "qNnuTsZFEufsbpdpHYgRoJKqqqJHWcUfKrBQyzUPcGnMPJmWrtSJVEHVWzVEATGhgRZkUmKioOk") }, + { XHDR("oggetksu", "qpjncefjtMhIaWYMTdtncSuxaQBPIsLPNfmAawhlGJacyzU") }, + { XHDR("hjwiyyugcpd", "OMRTyemMWGlVzZuUKESJHSypxPKOXfmdifszjHNtIYGdqPdcqLbUEdcFSeoKWUB") }, + { XHDR("lmzecxtkva", "iKspCsmmwEnQXTOeKrwNlIlOCLfGLUUqOkYGL") }, + { XHDR("hkzkkyatihdnfw", "IDJvDGQzPpkbltBTBiDgsYWPmwgaSWLzHOEWobO") }, + { XHDR("sianregcum", "XeZjuSolAEiKOiIQRzIZ") }, + { XHDR("ln", "ovzFNbYEwMFRWsfJPhYxswqnfxqQaNQzAiTfQNaZcWTXZnNypMxeAaCL") }, + { XHDR("ckfxwlbxpsnodggxkbdx", "MrZSLbfLqkNAYWWKmw") }, + { XHDR("ylgcjjmdxfjw", "nuu") }, + { XHDR("urgxthjhyqbonw", "gjFBUfmmqZLSg") }, + { XHDR("se", "gywgiQwAholAFEQsZKEqNYfnofkbfLIFvyZdqxjaXWMVRVAWfKafNBidoqtZZBBbaqyhfUKTxyEc") }, + { XHDR("ymnc", "RzBpxCAylrbqHWOWpfDPhkdGyvonDyLdNqMLjDNgbBt") }, + { XHDR("svqztiqrt", "xtfZcukUqWCTmgxwLDPqyzCvlidzZqjWpo") }, + { XHDR("e", "HkZINgwiAhFZryOSCTXpyR") }, + { XHDR("wvpaiccksaprflfiuv", "vEmeUhBDswVGcAQmC") }, + { XHDR("kvnlmliiiewf", "zdbqcijhBmwrIVRJDWTFbxlovnNSmrFkYLIIkyQppmoeIUh") }, + { XHDR("xiazierebr", "tnvHjyPEYklyDXTzvTOucciRGsgXLRascEQxtQraXxHwvFuDBRDImlGfeYwXArkLVzGEpCKfCvu") }, + { XHDR("z", "hxbOeUGbBtaHixbxquuUAKaVlfZJousBdfQC") }, + { XHDR("gpypkzs", "XOBdNLsZYVmjoGiolZyGmqkcahCpYCJZqPZcAdkjufpRTDeNdaEPWugG") }, + { XHDR("przsojommuhpfqy", "PZKTnnVIKYFGuZpcyVbCoBShDWpaAZFPhgUdJayKwnOSYbWRKjuVzFnrSwRtktW") }, + { XHDR("wl", "EDuzKi") }, + { XHDR("ta", "iMUgHeTcVcmMEzncWaRHGrUkjFtNOPglCRgQvgLMPtIBXYhIHkZCSMqtXmb") }, + { XHDR("tchy", "JxTRpclRpLOfUvHZSJQfHSJfkuDfiFADpUKQjhryuxswLOHSvcQ") }, + { XHDR("klaahkatphxtlhhvottc", "HFctsYBQGCtlTyRsOohcUlIjQjoXwiBDAMNqOWnUigPUNEMoePttEXdBfIdNZVW") }, + { XHDR("qcovqzytfpnfcnlhws", "aUWxhpAKsYRscsKaqGIIvfTZiXuSGPKRzxDKuBUZMdMxEqc") }, + { XHDR("mdfuqfelfhstki", "vLEniAsYEuonVpETVbUVKKCekKuJyQRPUOpSVRNGCxvZgXUoOcHcuLlleC") }, + { XHDR("hmfzleafynwgz", "aeBRJySKaCQE") }, + { XHDR("rugmfhpr", "EyPGBoOBuAiLFmFSgQCvIxrjiTiMe") }, + { XHDR("ymnxcpd", "YKpHfSkdiTLmZBEXefMpiFLjggKudRvjTPkjZDbmIHfDueFywIseoMdIelTXlwbCGCWxTrGx") }, + { XHDR("wlwddamqufz", "tsiIlTwMxYNxZPxsJVkUBcdWSzCEcVF") }, + { XHDR("uoxjuazbythicctdd", "TKFmRtnsXmdUxSzxPv") }, + { XHDR("mzucfijuyiy", "LqkvpScqlgzjtnmTQxhoiVnphtPJBOsdosjSgDcxSFqmkGCyvVhlyxGMTMWPENlQUSnldsavWsWqGfaK") }, + { XHDR("xkqlefckdnjqlgzj", "cbnkKKtnFYJgTfxOsvUEGBrpFrxcxjim") }, + { XHDR("lfrewbymicr", "oGfxIFWjLEiEFyGAFXZXIuokkE") }, + { XHDR("ecojxbjsjtigxyxrhxk", "rPV") }, + { XHDR("qfjcnnucm", "zKivqFKzPVidhvIJdDqQaWwtrxSQOE") }, + { XHDR("pnubbmkj", "iExJmkRcHbcokwKaSujEVJehUAzZkqmTxnena") }, + { XHDR("iesi", "HEL") }, + { XHDR("qbcumcovlpus", "rTpdcnLCCqqgAwYwGvxHJMwobtDuscPfjOWBYHmR") }, + { XHDR("whjidbrqkrzteuzfgjrk", "kHXjOMVzqxyZZvhaRnKAIwGCjVGlLZOEQqcBUTMPkoozuIlGSEZAFVQplHmsEMpBPPCyKmjE") }, + { XHDR("nplcgnjlsukpcakumyc", "DAdCwbsrmjnCRibrsWtJEhZQpaHfxbBiNZd") }, + { XHDR("jdwwrpaghzbhlocu", "MSFSipGBkXazVfBiMGBbZsXvSBOVcEWdcDglXCnVMfcaSdJsnS") }, + { XHDR("vucrqsdrjpshqft", "HFcGfKrdLzrntjbetIyyXCaWSWbhmShyxiab") }, + { XHDR("nmkxlkqncktb", "APZKzsgAZIMbvyJcZybjERaYccvjAAXhFaUZTCXQcBmaYctLpIcTaUxPuaZLr") }, + { XHDR("luamvlezpbggxbshgzi", "POrjpRcXHXtVYUbjW") }, + { XHDR("syqjoxujczgucsgezlb", "dRhzDNykiuQertkTqCxclGwHixkprsrbJbvW") }, + { XHDR("bivncfqxejehmpvru", "QVXd") }, + { XHDR("echfyvhujlea", "JNRCkx") }, + { XHDR("aujjdrardlilcjv", "oTdVDCitWDMrYrKvMNtavJlFdOVCPzkGhMZOBxJDceldH") }, + { XHDR("hcvjxhngsogqpedlvjrs", "vJDIXUUFWb") }, + { XHDR("wnhhpmwnygjhl", "cJSoxADYPwmQyXFvbgZeKxvJkgJEctPkLshGgCbkVsirzsarWNGJihpAlOPJQw") }, + { XHDR("tp", "hRoMHwYsdc") }, + { XHDR("bcsewsrsdnyagvqnej", "GOGsqhImexsfIujYlhwqjQMDLsqfozyioDYNGuYgnccuYRTIctICKnQ") }, + { XHDR("pzvk", "xgeNYImQOQMIPiEDextgmSsDXXDGCOIdQbTgvZ") }, + { XHDR("alskodd", "vEOOYjwfPvEkHwJhZBDYi") }, + { XHDR("sfvtc", "RuxFTFJFSxBPPtelFgmnzdLPmQwdQiergwoiUtGitqkOrJOIRdREHbqnerUlXMg") }, + { XHDR("xkrjgktocqpwf", "zACcSNgRyirVdixzxTZrZRFQdKjSZoIGWYSDJPTyEbfz") }, + { XHDR("y", "yGhcaJLxMHyKBORuAOGSYroLotVjsExvkTvyA") }, + { XHDR("sqfprfvgf", "ZwRoIwUjIzFufdSCUsqygfSmOqNUjpPmCseVjWSkaoRyvawccofjx") }, + { XHDR("rbykdocsxxbzkwimabf", "SiihZTaaXRvwMm") }, + { XHDR("lcskjvvz", "lOHBgagIaVuCGgRbzqqESWApzttdtRxMlYCGOKucMCHRlqhfVkpurCn") }, + { XHDR("nzp", "nFmNNopYwJEKCMhGihwedsRGjXFxTjszJhWokTFjqI") }, + { XHDR("naoxuagwgbf", "QLgHWsVXz") }, + { XHDR("qnph", "HMiGPBzoafFjlAtmxDZRdmFRFRHWqYAaahWSKkskCpRLPABYLiIfKGHKDUdyjYXCGQllzTeTVSdTNjf") }, + { XHDR("riadnrnfznq", "hgvRMlfvqFqvTazwQgyLjvqmZutDUTvfyYOTHPViLUeZJBAACSMeK") }, + { XHDR("bnzezpkbwactej", "kmJBrtxjPykFLwjualLnWPjrkuMXP") }, + { XHDR("vmyxslejl", "FqIknfNwRpWLPaQQABOnswubeKpMWyZBILlEYIYKoCfytkrTdNUp") }, + { XHDR("nbrtodnxhqgmotk", "zCzEZThytpTpyLYYjeblwOrtuAlRZmPmyaGWFHeHj") }, + { XHDR("nrxmatcsmtdiqummmqps", "JPRHpyDIItvzHHOdcbvSSzcGmYKUTagxYzBsSCNGTTHLJSEONyYy") }, + { XHDR("powfykbtjtbavxu", "DQeXdbqVBjQoqPVSazflRrhe") }, + { XHDR("g", "rpgClxNvoMSjYtuSJYEJyHCGSNcrWzgRZZTkfdYNSnJwdNgzxCzmLvf") }, + { XHDR("bjjiynudlttovvebsk", "vEhQesKSwUVshAHwJIVbiNuFYseCMtqVIqgrrpzziSRZwlorRhTJUBDpKvlIyHCjFV") }, + { XHDR("s", "HtbLmBnqXiMJEejslXedWJbkT") }, + { XHDR("ovnsixrdsypya", "EjMOzkLb") }, + { XHDR("yiv", "VhcwRLGSwMEoVAIvOFOpaWEGbTyYRYIVMffqZoYmubxOwKZXeDyyOXcDkbZUudygXWKp") }, + { XHDR("aujbvtklqnrihkfghlvu", "JwDsJwaafAuAXigSVUVFiPdjHyzhLkhMArqtpiqcrJXyoJThSd") }, + { XHDR("pkctilptpftnhxqrxcf", "gGTbmxJrAvdPMIRYEemduYJQmSCxuJbelFUaMz") }, + { XHDR("hzwm", "qahyXyWsXxUhJjZMSEuBUvmFYqGLfOdpmRpGCCLXkmTLSGDUTZvhtxGgcblFKKFPtSDLlMJ") }, + { XHDR("mpspgcvjfjb", "VddNrYVOKHJqxUZwRKzTmMEBJHYushMkuVIEOIE") }, + { XHDR("opmqxszjakny", "IhhhvbEQUtpscMSkFNwLicowqrBrIzHvnpNFqOuKMxZidVSWREEZ") }, + { XHDR("menbw", "mrYZoZnWTBdFTmGPFLpckCrYoVHiTCG") }, + { XHDR("cel", "faZROfAaLiIPMzKPhllVcqRiTxADWAkAJMSgldTMeRTRdT") }, + { XHDR("uzggj", "jiMiVyqsIfdKYqjfmBygnTmXEoXizIuQUYSTU") }, + { XHDR("enmstl", "UsNIIClSwZupGLlTvARoVk") }, + { XHDR("exlbukrueoinkhka", "biezBmlvadHxmzperHaffXxZGfQcvITrcMNNMNNgNqBrqTZMPQiyAyXvOQnLlWKDVXVgcQcfgWkxy") }, + { XHDR("ggamtrgb", "PQAoCpO") }, + { XHDR("tnfdrnixzdcjmq", "AHmdapELEgDJQPMtCDGaXrslTGaXCt") }, + { XHDR("sheoed", "cpHJ") }, + { XHDR("zcatqx", "JFvDQypHgYuAABRpWUkoIbQRujWTIYOBxzXGxMPKkr") }, + { XHDR("pvmplwcantuokh", "Bzg") }, + { XHDR("indwomgrxshru", "jExNxzirbQEzwYllRqkOTsLLDfoTwcWiwKpJ") }, + { XHDR("ogzzqciggy", "woiZfNwmLSsNZsmVgtCZWlZEZkkvKoaEs") }, + { XHDR("quzaqhnglj", "GpkkxOrldZfByEyRJWdtwoEtA") }, + { XHDR("fbqxatbhsi", "QEsaYXOYItYUCPIWZjFpRIgEwuuiisdKFfVGWhEXRqGJzcnwyaeaMQQfpJTJCpx") }, + { XHDR("idejlnad", "JWrJAXmvYawaoznZASDZXFSfLybPievUvTXyiONYAyedcdHY") }, + { XHDR("rahydliwscmuqaqe", "rMgLpnBdOTD") }, + { XHDR("seyjuwzvdgmyjdlrenvr", "CRlPmrMxZvfCmordTOXSKjUiTuxpadVFBjJveaYHmxcxjWnwBMeqtCdlcsNgxxRdObXPfTbYn") }, + { XHDR("coez", "ORzK") }, + { XHDR("nmfxovvq", "DOINJPrcjNsNjrnpgbWqrTiDqnkHZMrEJbQy") }, + { XHDR("faeypmrczgzbgfar", "YBQcqGMlYXybjIa") }, + { XHDR("psfuqmxabsompbi", "FCaHKVzghRmXfvnTEHhNODsgrqdQwxTEAYtyRQakiUBZtLPqkK") }, + { XHDR("yulsuqxeuqczzej", "weClAzhAjotKczHnNDAbxWUWBUBiqS") }, + { XHDR("kriooul", "McMVpFpkuVnyurwbIvhVRpqCAtvocTBnSIWSWkoKWzVGEZZbJLrrytiIsNZBquVquDaYNPyDBIQrS") }, + { XHDR("aotaaf", "rtwGFjXklUCMlaYSfWTlmVdjXUixmBeZeYDAXMeBoCSmeqaoIZ") }, + { XHDR("wvfjjpzrmdqkqjah", "QYSprcliubNzKwdzdnqAqIuWiAhcdVCRHhteQsHdGPs") }, + { XHDR("xhjwzxkxseldwafs", "fwcCGqJTcJewPIW") }, + { XHDR("ylxxzktlsb", "qivOMsGBMEVzPuftygIhsFvKHUEUrblxpFeOK") }, + { XHDR("lswximz", "iAEjhULrWkncYCjUZOMpRajDnswMkkSPbqYEoarymertCUnffkPuemZaaqlSmIFGKvFjO") }, + { XHDR("twws", "wsPGNuYEGgzgWuGLjtKHfieLoQhOLmxtSlqOLiJAn") }, + { XHDR("fgwpegxxnxhjcqwfzmbl", "ICyWxaKjjlTrozUqgwgFsSVkZCYLwj") }, + { XHDR("rtciweeebsmvy", "N") }, + { XHDR("pzdvhmkooilmmjjdjfs", "XIpRrvkRJQNbFMYWmrtsxsIKxa") }, + { XHDR("tmudpirewfmauntnn", "ltJKPgyXp") }, + { XHDR("fggqsf", "WuIlmvKmEuJnOBCsSCpeTFIFUAhoNHCiLHOEhghwvxfpFpCCcCCmksAmgbw") }, + { XHDR("gmsbezrizzgzwh", "wsAZhlDQxLlhTFduyHp") }, + { XHDR("qzpeg", "i") }, + { XHDR("iszoffpaqutzcpeg", "E") }, + { XHDR("xbemfanijhdudyqysh", "YSlsyudecbePdGRoxLfmXFawKfuaMFfMyCJKaea") }, + { XHDR("mwyihrdrjulzgokji", "xiisiVrzPPPKeJkdGNpsyvmuauwUHmKxKznaHXJWhIANdV") }, + { XHDR("spjtzshohc", "GKeSWbIpzMZGszoRDgeWsDfecFBXhxbE") }, + { XHDR("fnhk", "oKVRFzyyqiztsQh") }, + { XHDR("adpdjogpdmxutmwtkq", "AbIkDTdXSnkoKLQGQxhdzdjuPKiPDkgscHPOgHAncMsVPPIcdNBzKnylvdokvLPVul") }, + { XHDR("orzqwxveyyaniluuijh", "ojrpVKYBJcWIMIusxnuOxIQiuBYqtvbdKymHspdkTHvfEYUBpUoSLSXqkxBVuruonW") }, + { XHDR("wwxrlzkiw", "kqdQwgKDNKZgbrVWFnMgygBHeGIScfJiB") }, + { XHDR("ovdmpxidbbe", "XdmkJdcFWkuiiOpiPReAmqXUpbmJQDhToNAqcKjRNdkpkJbwo") }, + { XHDR("ykgkgeeckvq", "fQfSbyEtyZpKLIaccoWFXCA") }, + { XHDR("knpxeuyvda", "nXp") }, + { XHDR("xa", "bMpNwajFjzKZseuIlnLjPtjbVYEWmwTICHjsRlxDyaaUFQlGbrGxdCGEeqdHEkeLzaCQsCRpehvsSa") }, + { XHDR("gzdrjarqnpwajkmpou", "WrSUmTJNIuIQXhHnIKHjdJPvHhoaZeWWZYhHgCkTRbDMbuAhEyAjOeUzhuOyDXLvELaqliAVsoQVsM") }, + { XHDR("pp", "ywlaXVteFqHmVbnpsZcMAuio") }, + { XHDR("mzgocetoywszmqxz", "xDkLZcoLArTHFoWSuLZtuvPhGbwGCJxtKRsjvznOdYpdDQyIICScuQesNqaizhgHRHHuoa") }, + { XHDR("lbum", "sSJjioicIatEYRTDXOsiWbmTmlERFzZHKTGlBnaDyALLdPzlYJAxDVEwjwGFjQmqFbUiCQofvfjcACHd") }, + { XHDR("qfrgihenrpheebpvdwch", "VpeMOVTMkvoMGUjXlSEyNOaKutefeObAfBJQITIfccfQaSEtcQcOZsqEFwkEHmM") }, + { XHDR("ajskhb", "GoYDtWTvNUZodwTzJZvCQndOieEIFZHWlSCrkBxJlLuTxTkvgyLDEowmJEcqx") }, + { XHDR("kkdlqcyvzccfdlgdekzc", "VMVLZpUlorFLYDcDseELSG") }, + { XHDR("lopyapwbocyy", "MijuxYPOgODdSvzpJIRkatopLSgK") }, + { XHDR("zrawwmzchuztjfyytukj", "kZznbHWPYHJQTVLFhVSJangsBJFOZiCXchaKkqVOcbeGNaJHcJZZAtuclxepIzHFbObErVyeN") }, + { XHDR("aub", "SPjsYnrvVZMtGeyizmHVGBzkeqLPxKNKuyYYzshdGlY") }, + { XHDR("uivbmujctzinhbg", "jhiosNJHlKSuzWlPRpwfbbPoaEYb") }, + { XHDR("h", "MnKLNxWXruuIYrVSMaMiuCcQYRXPpBZxBfNi") }, + { XHDR("ed", "WVaKayWztFqbbsGrFtuaJSwkT") }, + { XHDR("bkksrshd", "KXLfpYDrTDxKXDeUiPZZjqydnJzmqPhecXArMZXBJtEpRUwFyf") }, + { XHDR("swbpjtrxeammyliwcvk", "sgtSXUUJZcwcYgLlaOooTpQZT") }, + { XHDR("kagud", "EPFpSahisdJsvFihXCjZitJpqGaeeeFSiFJa") }, + { XHDR("ldkbqos", "yalzyGVnvsfMq") }, + { XHDR("sut", "hxJTrsuWYcTTqzbpwHDKfLnJvpQehjvyhyDjFbYuUfroaUBIKqLfXwQAujOgbpNMqOScRl") }, + { XHDR("vpck", "cKTOdQwabzAmlgEzAiZrDmiZa") }, + { XHDR("sytsnuqjj", "ZDXmYJaxYKyqLlaTXuB") }, + { XHDR("rnmmhwpseclalklrzzew", "iSWEByJoTfEFcRNyOjnAwNpyYopCMmUwYPet") }, + { XHDR("qkitzymselzowxqimece", "OUPWuJXSFPRhrrJAQASgbpFdloWCjMJBrzoZWrjjcNUlRLbwIemWEjVLfyAhrR") }, + { XHDR("grcmt", "gq") }, + { XHDR("ownhzdwyysixof", "dtMuEogtrqqBOYXPQmkKTtLpxOsChMRzKXqvgmbfWtyqUNsBiNNw") }, + { XHDR("xuwlxwnld", "EwSYiiV") }, + { XHDR("dfworfm", "rHtjEMNilsJBvbsMhrYlUHnbRrB") }, + { XHDR("iqzwqr", "fvPBiOxeHikHUhns") }, + { XHDR("jhwd", "eGHdSAaIyAZDDDwQWHho") }, + { XHDR("lbprba", "ekXYHKZbcuzLuDpzKQBvUFcYRdvWTlmOixfZF") }, + { XHDR("hcqcnbsoeftuxuli", "VzmonOHrCpjrQKInFxtRSnYaWMgl") }, + { XHDR("gwbjdrpdnuvyyxxum", "aIBFnXfW") }, + { XHDR("qhfcenizydbwoqkcz", "aRddOcWJsrAvfwnosVQOYXRgwbErMelaMsbmOuEQJGPFQZiDUXnZDzUUthnIjrrzDcMGWjOE") }, + { XHDR("wwbarlghd", "gSdkzwxOiloLSxuUcBbZJA") }, + { XHDR("isxpuglkyzuf", "KiLeUyMIdGBkrXIDazLTTcn") }, + { XHDR("ithjzkpmiomubpftkxjt", "TvToINGIwQclDrdOileLynDcXYeFOiCshUvDxmzTiSjgLZJwvJfBqYXsEaSAHqwBjBBthAzvemwFyw") }, + { XHDR("aalbnakjr", "OJfNOrncqvzaGJWReyzCwpkJQZTHlJlwTApvOTBOyrwPJWiWZNvuBkqXlhHz") }, + { XHDR("kxpzmptrjhl", "pQBeidtvnQLZNnNuIuHGPoaaJifFTPDBbbNXyMflBFHiGpZShQwwUpgpCRBPJdzVkZhFGePupMmcXkfn") }, + { XHDR("bepllk", "wAPnlDXqippmAfNVBxQdjsSGbPpzEtTMaBPbqMxZOrkAUlhOUBoXcbco") }, + { XHDR("wcosjdlvbvddjqpql", "AdYejLltjXlJEHCbVwQPGg") }, + { XHDR("oylxwxlrvevru", "uckgxFxy") }, + { XHDR("tsuvnammmboyfa", "wLNMEQKMnvnZkkCRAdsQHDoaqtSOKMAZfdXkn") }, + { XHDR("ovbyxxgexmjxwpsvsawt", "tsEzwl") }, + { XHDR("gefkhyfpzgwifafmko", "tQ") }, + { XHDR("nrvugepov", "rBdVdCryGYlhnboY") }, + { XHDR("ghitbz", "MnhMWtvJOGJIcsSxVxZuA") }, + { XHDR("uqpxsoogoca", "JOIgSfboVtDABydMvGjfzLPyZvUwarfXyzZNdGa") }, + { XHDR("divahcztdwhta", "RAsIlRPo") }, + { XHDR("caddriyfgjz", "EPejVjmDYeKdrwuWTbPetlCmbaDGXGTNyJZq") }, + { XHDR("cplua", "KTtGgfJhKXlEartdWSAratLIdoPgfzksHVQENoewMdxxszaYagrdXdJlxytjEm") }, + { XHDR("pyfzpsklujofu", "TlHHejqHEZnHOHGZZAlvxuE") }, + { XHDR("zaz", "xhBhBkzSTtrFFXganghFOJMEoFvyAHyZGb") }, + { XHDR("kgojedmt", "gLrvvRBuZGOSFmqmsPwHiecIjULcNLtXfvvleeFaTRIXkonocOTwcGZtZSWHMEhmzXTCwkpZwL") }, + { XHDR("rkrxzifq", "RnIJMtxdpYrtigPmeVozyirlwjFvavJExxFmwgjYjt") }, + { XHDR("sr", "whJzPXfxDIdsEVGTSCfmcxQnNvcGaeQEscALgwshvGRuDzuuIxeMuXqzPkfSwRCfMRqKgYndD") }, + { XHDR("akgbhv", "HIYWzzQMxnutWvrhEChwzZuGLBQOmGiWPNvGzUswNWXgpduuCD") }, + { XHDR("kcqcovgnnbhlospixp", "LquyUhzWVanqHUKzJErcfhwwROmANUlYwzjgKQAzDODZbQviAfWrsClBpXVpH") }, + { XHDR("abkbe", "BVyAPMEiZpMYjXHdTYaVJTQpmKWLitYoVaNIgvRRmROmDDEYustfSsUUEQnaqsScInkgVueglftb") }, + { XHDR("xdidcplglmloiqhwmdtx", "zzDpAIiBdBYxIyeofdilLZCXqDlyMsbmGHiVzNDCnBTrPwkwQcMUoOIFPMHiHotIRd") }, + { XHDR("mmlweqpoqolsf", "ZjKrSoYuPaOaPrcnboXheQQUKsFPMoZPIuVivYNPuZhYKdSqhSqPKYOhBOzua") }, + { XHDR("wqstrrkbzuhmhwl", "fHUYZN") }, + { XHDR("exqsqlpeapofxxvixua", "fjekTTSGkbmVteelkRhgsuluCBiWoSDdYKVswgTmoKmvFLKpqEradaTUpiOXfQqgPtCITJY") }, + { XHDR("rhihftgdpmwv", "nRdxHvRSBzOe") }, + { XHDR("dehawfevjorsz", "UKxqj") }, + { XHDR("bqrvw", "sAsZvlCboSnmPwkZbsUIxSugcIcldpBBGPm") }, + { XHDR("mqubof", "xjKXWBYzJ") }, + { XHDR("r", "CUvnYzOvcQWlieCxhIzgyygXshZldjZtPrdGPzcGuswPGhrLqcfhweWbOPeqRETjArpE") }, + { XHDR("xjgawgtv", "ORXHlKsufYdlAvMJZ") }, + { XHDR("eegaztcmwxuwvs", "goiUAsHioFl") }, + { XHDR("ndfbjryccwxilqwcdh", "rBPyDjdHXZrcBeZfUBm") }, + { XHDR("vjngsucbttn", "fWIXEAhCdxxghbLLcQTDNNemETT") }, + { XHDR("qptubakeiawrhpdw", "YTORcuehvcaTQQniBmscjzLApOhQraULxGDjMxDiucVueqOh") }, + { XHDR("pjjqvgakexbzyltupym", "yXuLGMSrJjhuHDQNzXTRV") }, + { XHDR("ysxosimgovwni", "jwLTJQRjkrTcylyiSmS") }, + { XHDR("km", "fUVMiBXjstNSdSbIZZpIWltSxFqibYjH") }, + { XHDR("vcekoct", "GBJPhlrTbWTeBeHCqRRbYBRJKKxXSKOmnCNog") }, + { XHDR("rkqtgix", "kLosbZEURrQgqBixvXYnoYKZmXcEFxATcTiskMhHkEdTYXcOjfOlLWhXSaIYLYTXUyYz") }, + { XHDR("bjmrklqdacyyjbvk", "RuuOIPVMOCJaCQLnsHeYocMLyCdWcrsEiqsKblxAbXdoUhQflW") }, + { XHDR("emfqkbcobfwcnu", "wpjZPUHnUqVaThZMzDfzcmVNYLSaUzTWjUaNHPGToXgWCzYlzXXPsqRoVtZmgcblGkVyRnHfEaMw") }, + { XHDR("dezmwse", "SBQFGmhQXPemkQyPEXZXtGeURUoOhetVNJowEOEsKUMSHzwSaojRzOBJjaevUlbexbbEjcYGYBVPjyj") }, + { XHDR("va", "cLCvdJtSwMeVKhxFJAhVZKRhcYApVSPPOlu") }, + { XHDR("exlfgc", "NyZcoqQYSQcHEMNDCyUScgJFuRMOOMjKZ") }, + { XHDR("teghzacw", "VnDOqnASpfHCjKdkXsKdhFZjRLdKIupuySwRopeeaJwgY") }, + { XHDR("kfndfntnpaq", "OPFogKshipkjZHgOgcShSOQCrdZyQvmcyKmFOjxNArAIKxMyyUiSOEGuTFFo") }, + { XHDR("mrooqoentdywgenm", "zfUWqlpGQqtC") }, + { XHDR("nzpk", "gMVCLmzGhqxfEPAyGaualbWDZqXqEcFihmmoUymBOcTeLnomE") }, + { XHDR("yijyakdkhodjazry", "hkVJsvzmkEALpj") }, + { XHDR("hkcoydcqveqtxpxtpt", "uhiIdVSANkKLBicPMrFuQldOUVDcpXesgpTcRUVxgXiCbitFTZUqqXhntNWVgTffXmUKPxyVwhngKnIB") }, + { XHDR("zf", "IOqdNmmJTcoRPXWrEJcveBqHRdsHnooCLkfvUelocKRawxMhWqdZzOQCS") }, + { XHDR("vkaodelghiqe", "vYSrHveZmvtRYMlIKKWgMOpfsOxUaFYkmfpBunHaGZZDKOvPvrTAnyTHhNsOjRHTgKoqfW") }, + { XHDR("vuibyjhohuloee", "qTJOAUpuXnhSqcaxtgKnEqWKgHYjjyMPhenXRsRUMyUiLRnUdYthA") }, + { XHDR("jh", "USGMmBpsuxNbniFmPeypqyuYOPjMUaseDFzHHaovQUJRaKRbZpzCrqLwptPwuLajyGTLVhjPWLovH") }, + { XHDR("ptbupkcmuleviitwl", "FxLGirbwyiBvmeKeycjKIxvYoHlVtivdKUDaChGEzMvMrOVHmXmJJuP") }, + { XHDR("vffgerb", "UjCg") }, + { XHDR("drbhrlfdfxfybmouvl", "eoWIeny") }, + { XHDR("fsjpvmtpgyd", "tJGpzaXkmSSVTpclZyiKkgMuiaQvxfEWCJtWdcyXUkG") }, + { XHDR("wmgdzaqndmhh", "uraLXecjbuOFJorGQdaGPTLaCMzJHzPLICRmmxQFwBuBXJQLNTpIoqDnuYQvOUMxJdwnRTDlG") }, + { XHDR("dvqnitsrpznhanc", "rWGNXaijAZToKLgAddCMMYHzmfhmJLqsMx") }, + { XHDR("xrwves", "hBXfyStxoBmwqIgfpfzOxWIouhfFisMUpHhYPesnTMToCiQWYDoEECcJXFxOqOLAZ") }, + { XHDR("pyrazdrlqi", "xavFM") }, + { XHDR("xx", "DmOKOZ") }, + { XHDR("f", "wVMNsbievsdxfmeCuYVjNLonTSiOzEzUbBbYhmROJFgBYJxZPXfFAIyhvwoDywKf") }, + { XHDR("dazvfstawefvmpy", "FYBQ") }, + { XHDR("yfj", "VWyxXOdSWKGQNpwHLbxBGsUlxZfIJdtxZrAXMcvhlXztCOfqhFKhhHwKLmNQGwEuZAxFCGDoClvy") }, + { XHDR("bn", "CvjiwKGQbBeIGCekRGfgYkodHCFdRVzXHSNPEJaVNHYB") }, + { XHDR("tmfrwnpb", "iUcNDsUztQdOcYqQXrnIBNhoqsPjDIikNOsYgMJRecqWNvPUXwfEuaEUHXB") }, + { XHDR("yv", "c") }, + { XHDR("vs", "EwqSuoQuwMuJdoagfp") }, + { XHDR("z", "paUzUtFhfJoXmJjJACKcKSunTgAYHcuekdsfroQhnIFidZkTKcplqCWNignjGyTJKiWcDPVvbisDIal") }, + { XHDR("vtqr", "kuHyHcsnKXzrfXKJdHhJVJlWWiPZFgXyDnbPrGkaBFUrvcrNKFbRcdFAQu") }, + { XHDR("qyaaer", "QzyISgbvKrxraTORtvGLgfIegZggigHtW") }, + { XHDR("qjujsghgpmergoxqe", "RSdRdRldOJhyaYfHJ") }, + { XHDR("goyvrpyne", "toDjlAzKmLvAlLkdNIDHDmAiDHpSroTVDGNihRrwsgLjP") }, + { XHDR("vhedq", "qFImttLlcaPRhceOHAioKThcbTPyrpcqrqUEMyUiiQttkjpZfzhVXaNzsbOmuRM") }, + { XHDR("wzgtfcykjgm", "oHhymPEViGLPuuuLMSPmpES") }, + { XHDR("hhpkwiansl", "rxKurjInkenHFvBIsbXtOTOWJVECzGKCKVBZaEIAkqqRLeaMJGYSn") }, + { XHDR("afdulpqqzxebzkpqstby", "mjQwsfmMkZlfotqytNfnwXcKohNy") }, + { XHDR("ltem", "HPJZOiydhbsBAuoRuiSNhEWUbnvkyNhwwhIxgG") }, + { XHDR("abqafv", "HBKLcCuRCdaMsbrJMprLcRzBMACkzSKpzlBZrOvXuTXvtQtyoBQtAaouuwkmfMxgXDRkPKYOXbcs") }, + { XHDR("ugnijbhvhsvak", "GtXfKglUnmjZeoeeomisqNdArpYBXVncTy") }, + { XHDR("dnluvvl", "tVPstlIqCbwKqpHKqHmuSXbxRcmgrUERffTflATnafZZztGhiAzE") }, + { XHDR("zzqr", "jUdXyHoySiFFBTBDHAbjdFHChkHeTiBKsxrKnSr") }, + { XHDR("hywacu", "QeQYYmgurLpDjzuJkoUrrlUmnVxlLyobyshiBioSfIvqNehGDiMNvsBWTrGKbHFYsv") }, + { XHDR("ujn", "cvlSKNYSPAvtTiByGuMyCwPAyt") }, + { XHDR("mguledd", "KPqvfUjFOKgQDyaHIbbvgvHzhvG") }, + { XHDR("aftkwhg", "TNNYDDjidYHYgaoZzQBjiRPuGBkLetSfbcUlZNUqsPdKLKVBeIUhVdcTuXYsdhlrTYYlxOxmM") }, + { XHDR("gtyojtqky", "oIlrzjMoruDfbRpGavFvNcfjamSJjMdQmOuFkMoTshgalPPDrB") }, + { XHDR("ezacogyod", "trth") }, + { XHDR("y", "VYZeyrqEAlasGKcUWjIGmJVyzNQhtLsMYjVoXtfNwvsYbGgbTkWsNpgsdNzPGQnZObSLNcvJAUJVXk") }, + { XHDR("zamxwlso", "yKuXBdFHMuSjLnUILXpDZvJblhfwhNQT") }, + { XHDR("yxrcgazqbdi", "qPtsWgcLhFrZFefjetJdCalYtxsSFdJJTwYNMoFWxdQliiqAjkcHZnzlQeZhwUnuEsPBUTsaXGZzyIf") }, + { XHDR("wymxsdiwkdle", "cVCruQFcuLCHbOhaTmJQzaaeJfTPrlSKmosevINXVcgQ") }, + { XHDR("auxh", "mqaSDuuPmjXVPmGnuzPxaSjkAzwbbwxbezPlIfsIfOXKpwmweaLcxvDZKLpEifygxiQGoWtNIZW") }, + { XHDR("mfynoe", "xXZHPMJIEYtKfkQfIcQnQ") }, + { XHDR("zijefqt", "duppyRbhCYiEJXtkHJorjiAmilAbBypMwkzoyGFbXwTDByTy") }, + { XHDR("lqdngdlotkcda", "BrunfgQBkCUPHHWCgqMlXmNIqKizxWfkEPjaRhumGbNBPf") }, + { XHDR("onbr", "VokEohaOXlashjYObAvkWeJT") }, + { XHDR("zqjbkxoffwjlfi", "oNxtueOxFyAmtcjsbPOKnYPXtBTWcZYmBqAMREGyQmtfPwjJQHnyDzmGndfgQrKfuqlc") }, + { XHDR("yb", "pNXOYcoInfUVUgIHubgam") }, + { XHDR("htbzttlf", "EBqzZeegrtPGwxheRVJVhSaMePCFZFeGTcsvDxPvFKOgBlNjbinPhOg") }, + { XHDR("pje", "ZdHPpsVbTAhZSvBrsQlzHNfzuMtZhOBYmCHbQwtXeYVJhBHMBYKkxWxWAPy") }, + { XHDR("waamusojr", "OCLjZgCKZKPhiqWxguwmOtLviBmMZAEKBSUQcnUWEEhNeEUNH") }, + { XHDR("pqyforssogiv", "eGOJGneIVTfHueBPNvQNdUyepeCWnYbEplHxH") }, + { XHDR("wsqirobtfjkh", "XbDeTajQxQYnmETWmpWooXpmQHNlyMJQZYsfcAYDyMvNZIUCXemgQgucOxITbUw") }, + { XHDR("ynthghlqbumo", "VGhPiWQsIWKqYEeqkSajNxqTP") }, + { XHDR("rpefggiczvyxsfxyp", "FNrzxD") }, + { XHDR("ktip", "oVfKcCVSYXkCCHJmNvHrK") }, + { XHDR("e", "sKiyWdFD") }, + { XHDR("kwo", "OWdkfLCFwrCRNoPHQHdZPCdyEVmtFNYwsXrqpAwvWbkWWULOcqyPBtXnbnjnmUTLlzY") }, + { XHDR("uifm", "wtMZcQlItoRTHiezIVtuTeOhaCQosBErPrmldMy") }, + { XHDR("vgrsn", "OCdFVBkwIoHI") }, + { XHDR("vpsiarngusvwby", "n") }, + { XHDR("mvqxfylzghucd", "zFsABxKJRDmclAGFZeUv") }, + { XHDR("o", "yPXSUbPUaRyqdcPhIYUMwutIbhWFQLoQFqakoDNVFFsiCiIjISpDOXSiPHhJAuMPtmgcZxPwACfIj") }, + { XHDR("qqo", "gcYHMzkJXuAOIdWNUfwZsmOjxAn") }, + { XHDR("u", "HAsw") }, + { XHDR("hvr", "bmuBaMBoOeDnKsnJOKhdBByohedSA") }, + { XHDR("tbwsvlpvteqagqnxdytu", "gHDnQElCb") }, + { XHDR("txqswwamglkvd", "AXOrCBVVpRhLCbaIoBqESdyizbBlYgrQgrrGeVhAVnBsva") }, + { XHDR("c", "wKSMYgYDseXnMKKDnZdGMWkRtWxtsQAoYqfhXrjVZmdthP") }, + { XHDR("qlfanef", "FFlfXSaSJYVgCtrNqlOhIEpSunjWWCr") }, + { XHDR("rztn", "ShSHfXLObNqugsePuAeGrHSoUNPreUyawa") }, + { XHDR("ytnwnkhrm", "IksBjommLCsPgckYoinzFPVQRqCmnLGgpZezwHotWxGCLYOlWnZICnhUwPYwY") }, + { XHDR("yazgzlwnoqsoniwljv", "lvVpEQrFZRfRHdXDrWYYXHMOzofCeImnUoTONNMKlPjiliahramGYmQvCskMSfn") }, + { XHDR("glfmloixsgvivdglb", "IafnhnLvMxBDXcBKBZCKtuyUZgCVFBeERDGDoQQND") }, + { XHDR("wrvxyggzf", "bkVYKzepcYVvpqmzdinVptCaYJwbBkAPpXzgXrDOJZHqsnpHlJnqCiDwpPSJbcUb") }, + { XHDR("cykce", "RygBvpcRCTyOrXIxKZSIZDgYkXROY") }, + { XHDR("cuxmbnscpn", "uBkqNLTxhWIxPBjAAJntkMgsWHPeWFYCgkQdcdifCfPmLglxBHOKMfRMyAvdHUZvtPalNinDSqZro") }, + { XHDR("ikunigoirvafl", "GLlWorqWlZSpPxlVzRsHnvGzrwLJnLmhIfFvitXPtQbcRLnhEezvbOOIXhaKPRQIDNzeziBPOVZW") }, + { XHDR("tgrektkpxekrrpre", "JdpnoZrFcAfntcOoQolTXjFAH") }, + { XHDR("abqoesvbnkojqee", "tiCFHLtWJyDWCpcBVGfGqkrQOttWesseVR") }, + { XHDR("fpelfxnisbacn", "rdIVUvUaURPcaqzQWxtzOYuzrRrxxrkZKkVAMfkW") }, + { XHDR("tuwrrmgco", "LnfnZKh") }, + { XHDR("mvbltcuvmi", "F") }, + { XHDR("apyfqzkxsehm", "EbloHwmfWeIkqlwwvaHamlgpLplSv") }, + { XHDR("mpzrpisrdcyzqy", "bnkvPqRb") }, + { XHDR("trcsyevndls", "xkVYsAEvOkOWaVGDDnuyeWqDmatgzutfLFJvQhMSIiByc") }, + { XHDR("kybzhh", "ARctasIPdASSNhLxNQpcQMiZDMoihfNmYpUEiHVzNITOgVSsjrLfXbNZaRLLyp") }, + { XHDR("xscetqohpjdmzsxvlr", "TsyRpjxqKOPADKf") }, + { XHDR("ffignsdxanwdqr", "DTYH") }, + { XHDR("tt", "VcNFSdsraOCrkmAPIWeivizyIBGxTAWgHImplQWOXUPLzuaypOuPGATcxKFqwEZuHANhxZYTYRFFRd") }, + { XHDR("qzfwabixdyelvinajkdg", "pdQeiLucOGvkUxzNPODSowzBpUfZKDMdafzPuIsHsBfuoMkPUFvGJCeWDwtRmRSNGePSaXfGnXVqXfjR") }, + { XHDR("couxiefnwgc", "LjdbYxJvOFCMuObGLFDWOEMUiyJAESuTtCpAHuhsQfkquloFOQiUTheifkTLEZKvZvAnLd") }, + { XHDR("lxqwdteexpysbfeblok", "rMeEjoX") }, + { XHDR("uyqyfpwmnedpvntolinq", "vecuGlHNOgPKMfhqrLuvImYXaHgLoPgm") }, + { XHDR("y", "ygzDCvTPctKAxW") }, + { XHDR("zrpjmylqaqxhzwny", "VrONKVmYJzWB") }, + { XHDR("bouuhqdapyllknifjsgj", "YrBvGdRoONvsLEvTbEKhneNRjCUATtyoHURbbAyJWOcokFocUDQcUxi") }, + { XHDR("cotd", "xiBhxEBpUowWtangeUIKGXWDPjruPycZo") }, + { XHDR("uptbxvqihzaeuswome", "lRYrPtMufJczeyMaxPeaUIigGTqSMbvTcMzDpDqQbsnhxoQmtZMBbhaeVOvqfnaGkcawkvJPedMNSVr") }, + { XHDR("flbnkkjolrjlyrpohq", "qffUrURbPmKOUpmlfbXFmFEXPJSBxtYa") }, + { XHDR("seblwret", "ZprbmKprEoIyhIKzhFUxQTLbEDoguKHsonwSCzIXoXJZGRJkllT") }, + { XHDR("ztbsbszecgvtbejv", "LnbzEhyhpdfXiTUsjdwttCcdlAIBGvcRGaLcEKkunEAjarZNbZLLCSYCPwXysVeWZkdMZniDYL") }, + { XHDR("kxfndkfvjyyaxtmhswvx", "XFcEzY") }, + { XHDR("etqhzwhwqvaybvoehn", "ikoVOjDJXfGezsFgUbBSVKyNVkoCrDLm") }, + { XHDR("mvkjkjhwhemibtqapatw", "GJSysJlC") }, + { XHDR("oivwtlllvn", "xTdkhZumBkazvOdllSUOfScjZsDgowGFYnzzZUqLliosVwu") }, + { XHDR("fgnyseykutqmnvevspva", "aucVziTQtSzLOmVbFDnHELnzmlTRvsWluQXhWasrQPIkQCzOikUSlWgSvwlDyvUQDbpmyPAbPZt") }, + { XHDR("gcc", "hWMbwfNiUMCYzUyGcDOIHiInzGunGJQTUiLcfocarH") }, + { XHDR("mgjyakv", "MIbMEImL") }, + { XHDR("xbyufnifgzbkmmesiy", "ZSPzzlsfNjKGqyYdwTIRvdTDLXgyCVhurQCQOjxfOCThmmcFehwRQPOxNSAcKmZ") }, + { XHDR("p", "gaDaGFqJEyOxBLCFhhKEPcWw") }, + { XHDR("s", "upgOvWjFQfdvEiGBmkTQasURdQmuwLZPHDoQtuPaABJDppZuiNPFS") }, + { XHDR("mjdbtuogash", "CTStQwqJc") }, + { XHDR("vrnqytwdrxmzdvsouh", "HIsoEmDXisEXHAvBErqrgtqKkIVgTNpLCJZnxaDRIUeGpEZNLRgElP") }, + { XHDR("bwudqbfyua", "BSWRXrfuMgxR") }, + { XHDR("mfkjv", "cSwwECKmgksTGDvsVREvkghqEMYSzZaKPvzOqdePZ") }, + { XHDR("apzuvwlqk", "ludvXoqDKieGfQPQZeSCbwSGjAButISnjAtEgInkdVIoEhR") }, + { XHDR("rrclibqcrpvsixzpwkpe", "kEnJuTtKfRcxLffQdWblEBFQDmpCgBcULWlSfFAtNGbQjqDmHxsajkctdDwvEhvIHEZEseH") }, + { XHDR("ybqfofwtynyfnp", "tkVtlBDbcbwVrGDHWHRljVubphEcHsXMFafiTgDdmBZYnbMCJCkIihpjNhZOekVoqJ") }, + { XHDR("mfiummgzm", "IrYoZPicWzPZhOZWhsgSRFmXHrfBFOZxjrksXwhBPbDZnCOhlZQC") }, + { XHDR("mokznw", "fwEJdxuGrhmMrlTAHxIuvFLsVCYalTXVhzBiiizXzcsbsBErCEViArXDhTxtMIEoyFtieemzEafFLkS") }, + { XHDR("misxclsztezpshacii", "jJSVfzSJwQxUaPupIoAyzAePIOcvDqToOxnmfgFzRI") }, + { XHDR("yqs", "UzzGILdSgDMYrCZCpbbfRVygQrEQVsgwLIWvhyZmMbOoTdknHkFiZlkSuAHXObgNVEjgpbQDd") }, + { XHDR("kuddbcxwqwhhzd", "NwRdwAnjmxeNmlRoMBXdtRFTRmUvQHBpgYMjDoFDGbGNJoMmXecRLtUtpNnQTKc") }, + { XHDR("gkncgycdfqrehedn", "TkyvczIUetDyQoRelktK") }, + { XHDR("pyqltbt", "oybIpzbinGgrMblSncatAD") }, + { XHDR("aeszbho", "LiKMtUqLRlFyWvNGHtCEKXbsMROWjdOwHevvWOtGeoeaknmvkaHDBUmSdHmZEsZfigeWPhgUOpXiR") }, + { XHDR("sijaqo", "InvPmnGXzUwIGocFGScEfXivHFegAotzcUjiNbYwygrHZvjrgsuLRIHOgQngthoxPcYtEm") }, + { XHDR("bwqsiharagzqebolp", "EPkvXRvsaXXvQdHlFiERaMLZHGEBJMqlzDVcOuGqQzOVMzDhtKvwJsE") }, + { XHDR("bcnfebkmt", "iFQGGsHwLCSIywlQmRJr") }, + { XHDR("vbchecipminmbvjo", "mBdYYaALbLCPywktH") }, + { XHDR("yhlxobupyxfpzsfecvx", "adNrgkkZcZXOtwlaYHKIcJQARJryuyJlvm") }, + { XHDR("wvjlpnmvbzmpntkbrfl", "ft") }, + { XHDR("mkzrriabocxfdbgpwhh", "VBPLvxeOmhEYTEMsNnOOwyAXxcVzRvfCknDBxdTZf") }, + { XHDR("sicukoeolezamieivey", "bvIaZfAIaQhNfUWyTFfZFnKksmCzQQqMDVfaHdxlrUzASTqCuXHmLbOmOEmPywAd") }, + { XHDR("kzecxosawb", "PfLxDaKvwriobyKIkebDPbri") }, + { XHDR("xfn", "VEfXMWwdcuLaPuInNHVlgmFJGslgAImfLJFbWIFXqcAGMAJVqszyWUWEAGkTqOIwTITy") }, + { XHDR("rdgwr", "RKPjDBf") }, + { XHDR("wlvafao", "o") }, + { XHDR("qmwwvmvsiqklnei", "QEdjwBvIVMxSfqLoxeeZW") }, + { XHDR("uwlbcxokuebxzdnuuo", "qd") }, + { XHDR("ewmkqlzopojbw", "aumUWASQiqESBQnoEUSZlwkIWGryNYZhOQrL") }, + { XHDR("gqoqjtbqo", "tNswFUSZAhFmtScWsFzhxNUNCJdzkLiKmjxAOWjGqAzwEledEDYvNuKORzjhhmt") }, + { XHDR("kdvrbp", "WrHdLIykypwkwBQQUrvxDAeJnOXtgAMIF") }, + { XHDR("ahjgmysiz", "ZAWKYJkUBRhqnMPMIYVJJjBObBuwZJilhtKiZsjWRycfeTNMzBAYanERMGD") }, + { XHDR("qjiagekr", "JxTRssWHmlsCWYBEMoXnjZPxOTqichwAOSBdENvJeO") }, + { XHDR("sbpjw", "nTvXDzlPizfODOPuWNlOYUCBwbcbfSkoGg") }, + { XHDR("mpiniquehlojacim", "KOopJVAzfiCswltvFjmNSfPOWQPcmWyMpiWDIoDYVIKsaTiLF") }, + { XHDR("eehf", "jlTrRXIQnBKwXhlbzcwdALJBIFJkUTHYWgqpfEF") }, + { XHDR("usouzibcncqqnsjjex", "eAvrzmffhgwOtxlsbuFdetkGabEqq") }, + { XHDR("zaitii", "ReBcgCpkINgGe") }, + { XHDR("eezfnqxxncykgxd", "EHJzCRQGXaJyntCqschWZnbqmEaUsLqnZZhPPaViASgTBVeGAM") }, + { XHDR("fltgsqitnaenkcw", "hr") }, + { XHDR("speykejmcnnhmlhcptvq", "lXwgzjuMvfmPwFCwUxzJgXhSCxjWIOvmJvbEaLzmpRnb") }, + { XHDR("sxctfvhbtkjam", "yFku") }, + { XHDR("r", "yMBsjkSaNoLca") }, + { XHDR("wrpfwenhncsb", "vBMxaNpoqJJhcSAjm") }, + { XHDR("xulyl", "QisatHWMxbuHfXyrHJvsIUWNPYieDJYKhQJXPseDjhBno") }, + { XHDR("y", "wevOtIhMUfWxKltmgOFbiVlMTzrRvxMqdPzBlMwKZzYqUmGBbGbNJWBnNelrUrADkEnhGVMynCIvgnil") }, + { XHDR("fsslqtzbwxbylitivfv", "UWxTtKNONFVgFOpNHNeOdnOpayjemxBgeKhtGjqoEXqKwqj") }, + { XHDR("forjhzwirydm", "UNsALnXdjBmpVjimLknatNS") }, + { XHDR("ho", "vAelcIbtctORgxTFdtxjxUatEyhEOUfwQW") }, + { XHDR("xg", "ZNBZIyFAexMMXxhXpkZNBMYnmLIyriGpxCtwHVRUyPlLxJvjDQqf") }, + { XHDR("ejxcanyfkfxgfezbrmt", "XfLpPGdLFawzWhhLPtbrJxYuJfExQSFLTJRnXvfTl") }, + { XHDR("sznjsrlfrrh", "QlzAHlDcGUkdwgcBGbTrNRrRnQhRztXmuBMvIVkqOsjSmv") }, + { XHDR("plkdzpwfzmmtuzvfhnjx", "xJyGJRpMjQyoSRuIRInpdYCpYnYuookVOtfispRQCSunsoXTlrtacTqYILhtyG") }, + { XHDR("dodfaoalbfpeifdqiqj", "vR") }, + { XHDR("hcnjcleixptps", "YhoybSJABYQMBRrdxmGjltoJkVmafKpBuiaqXkeEPFSUFdJCEKkfYu") }, + { XHDR("fzwohpq", "okGqZFw") }, + { XHDR("wla", "GNRYjWKbTmjHtnZbNAiDOaCujCjmHsipEaBpHlBezyNHzDcjSI") }, + { XHDR("twfbvsieiomnebxtig", "bARmqoaEYsKiiaBEGwZEHzrwqcKhqtzRPkwNopZPRxcYbzZbjrCDFTrgMyWOmMIzwX") }, + { XHDR("lcyprhxnivhjvcbi", "DlplxubsxVrrVcevKWVAQrXUfCDrXCmlkdsARpgHpjZIhCVniuBedWaTPoY") }, + { XHDR("izwxh", "ncuUqCfxLwDWRzIGptWbdiRGcSMnHYEmgmHbdvuWWTZzfCFQdoIDsvlUUppCvCLAPa") }, + { XHDR("jmsxdfyjanpbmrx", "xiwKkvdwvXMGBlEmZzSIgFmuXZWKKCuNZBgIxdpVMGDoQzCgzgeCGxEBPIpPM") }, + { XHDR("zqsziylperp", "GCkZypuFPqUomzkxgJPoiMPszRWVJdwfpBBfCwUrabqoUZm") }, + { XHDR("wzvu", "xoAQivgapKTBhlckVReSJsfWEgtfvZScMlvQysyXyPultllwvhOFxTaPiykDKyVgcXWhsdtaR") }, + { XHDR("eqssltjnbbf", "iDUTBrJTvmUFVGNIPHVwCrKVYLikaqDYQt") }, + { XHDR("aq", "SEXahhhIEeqZAkOJpNMoZyCwEg") }, + { XHDR("sqxmqwhnlozl", "TVPjljXfWHhHF") }, + { XHDR("tcetwkzgtzk", "fjsOdddAWCmyTbl") }, + { XHDR("im", "o") }, + { XHDR("stu", "HWMmRyjZwSKJERJpsCerqXowmnZYxKIwCcWlsDXyxshufXTuMzARFnUuTioSUeMdbWotNJoGUdPm") }, + { XHDR("ojqqigvogz", "xnYCeQLJbVVeWFaHqbWirxyylTRxJqeLzdVAJiBdVOEIxokNMvyZKMgZ") }, + { XHDR("urbtnpjhoupzaqzeo", "GidplNMqLduXjLYrNweeQgtEmzCvrpUsZDswAtKG") }, + { XHDR("nykyfaajpggxtvvho", "zQmVBNahttpWDQGWaKIAPamNnJVPPhWIZgwUXkKgzojocUjmrKOVYhQFPQtGrKljIHtFmyJ") }, + { XHDR("ikbkuqbfxgkxm", "xbmacJQqOrMlnaQWsakEzSYixHFeuzMYhBHXuPLIjL") }, + { XHDR("lsynmfmjewytgfgbctsq", "jxJIEorbZjbUMNnyfWmwHSziFDDfvsoeamHclLTNvydfsbKEuAQVITFToGYsIqbyAQnOEZFgc") }, + { XHDR("hj", "VpedWTKxOCXjZzduFnGnGWFfSQFVcoRDQrqFIOrMfmyt") }, + { XHDR("chvroqypswgkjbysf", "MJYwFXZXRaWuoEGkFCHtlbiyKrnPxMXww") }, + { XHDR("qttxqbejwyd", "EeEbIoxTOkvOabOVrNGdGlnSurJILHBOQcLkVYZzEsulMWbA") }, + { XHDR("kbxlsayimhtbkjoi", "gdkTFMeFEYeWevnVIFNrYVoVgTPXHiyTBgCBVgtDKGdaBxFwVpfGGzqaJThJVves") }, + { XHDR("gbwjrmscgx", "WSguypTVCjdeOnLDPdMCbqPrrJmjamWSGzCR") }, + { XHDR("wtsboyyddpkheabe", "ciAtMQqoPjyvryY") }, + { XHDR("towrrbetdkvwwmbjw", "HAlmzkScZnbaOWRhAaFwnLTbbTXUouZovcxgSUMkyZaHKRDHalintPL") }, + { XHDR("qiomipwefnrwcpzgp", "tsdhSQbLsiiZLvYWMcfPuuDTqBWewmiEgxmQnekkHKDg") }, + { XHDR("wxsgaikwgee", "vEbjeIxBKEfVffnBOJfFpEyYagHKkArrcPzDGKORRWTPPBHEreJbAZiphyrpvTPOQW") }, + { XHDR("ahzciwrwpnrd", "LIvjVllveSroYhdtwJPayGEizabLyzqIu") }, + { XHDR("nlinl", "HnM") }, + { XHDR("aiedheuqqgukwtjx", "KcUJCOdmZuffmJVJxPCFzJnGKvRGKAyLqBCEwpmCvKrQTFsSBpAXqcHiWd") }, + { XHDR("gvlkqm", "RLXDSKBYKOMBVAuKeuFXkRVurSQFfYrABtKmEkZTS") }, + { XHDR("eqbragmvkkzabexo", "asSfTPFxdjZTkZoTEZsYQhsaUkjMXrzww") }, + { XHDR("ltkzjqv", "TEMhlHMOTvQmSYfrlMQlDQJgmJLhwBeulPlMlOERUJSbaDctQRCqUZlycSBE") }, + { XHDR("qvikkdktrgews", "HDEUUXEquCvKjNgqqyYJhmoiKMlIJEhkOpHVfRIMunuLj") }, + { XHDR("jptp", "WlujGREUNSdxe") }, + { XHDR("ipzf", "ODgevKn") }, + { XHDR("jmpqtts", "kpVWPV") }, + { XHDR("yjl", "hapSCEyvCHSYJuohGwQ") }, + { XHDR("hqoqvqaeubhrpzvjxqa", "vsuDrYlcgFvGfpCpwqruBVBzzPDiQmGuJzJgxBuS") }, + { XHDR("jcyeadzzkzbwetbcap", "SeAgmZKujmzrxAtuAAkwuyVAZljovZ") }, + { XHDR("qzndyadc", "tZmfdcWdHknJbAmZtSoAYuFdQFsrlNcPHEcVTCZWppTEBTWihtplCTElXMlPTmDDYGdQzwknFYdbsdVS") }, + { XHDR("x", "fCXkzmWuLSLSOUyljpFolICPcEgLxWRzhOZqveZvHXSlJpPHGicxqdemWwtBXRAEbfxMljZzxzMxEB") }, + { XHDR("mgl", "RicvjK") }, + { XHDR("tapprchivushnozksyp", "aKKhyBmpBVnbRRCTVCvxwjrHn") }, + { XHDR("nmzluwzpaiwdsgfnajb", "xjbiMaUedAagaDxssjxQMtWSqTuzQLngMYVTfgIlsqSswe") }, + { XHDR("snsmtkgss", "mWsSVDcWIxarBTSQOJOOGoDyhaAnHnsGkaMhmCPNbLXKbAvrMcXcyfvnbCHEeRaDPTJrNEReqjW") }, + { XHDR("t", "FycwJiDuXtuzydPaLynscrR") }, + { XHDR("uzctvhkt", "qBORVLOkoYcYVF") }, + { XHDR("fskrry", "cChVbAsiRcKPiAqs") }, + { XHDR("cszlfnrrvedimlvp", "TiuFeG") }, + { XHDR("wznnygfjoaajasj", "PgMKNcaIoopvCkHmrSsTbZcfi") }, + { XHDR("mvvolzkctyvwuvnlcsdd", "GQuUy") }, + { XHDR("fxhbotrtvzcqbcardawm", "EciZgFcBMybBthMKYSrwpptkTIDojWnmEsjrewWFFLwlCPvMcEsMaHfULiFuAfroB") }, + { XHDR("ahwkoxnmrtggxwnsz", "uelZqRJbtiVHoLVmgTqDpkiURQCtNqumQBwnFHTYYZeolPJRMmNLoSkTWCverwvFCRrkMxmUSUPkuTn") }, + { XHDR("qudhaawnqaotef", "pgvtcVxPELpJbXUNGLUmOhEkjqgLqEmpA") }, + { XHDR("q", "GpDlWuRRaYVmSudzDzmxBaPTuzebMjPXOiXvdVKvavlAwamHnWvoQT") }, + { XHDR("gxs", "rTRBXCbqOrbmdqvzMuiKaucwSEDrzVIMPMosbUoiBuP") }, + { XHDR("ibfnbswbfjuysyn", "wzruGTUsyrAnClzGncVwXJsyFfelRoLMhC") }, + { XHDR("fvfpfxahpkcw", "HcLnYQnzAVfAsulZYoIZGYFsZsVcqYcVZBptayfAljF") }, + { XHDR("lavngkewowssearrh", "dVUlLfUdeKRoiiWdTBZyotbSBSmWmoQBAMTzcWQGusuXFFDDgwEuIBurUFCLMymtdYjVQuJpEgqpe") }, + { XHDR("xf", "eSDITMQtaDUQARgwVcpBOooFhnMeEeFWySeRXcZfTe") }, + { XHDR("qtxgvvqhjbfyc", "yRemKkXQpt") }, + { XHDR("njreayckf", "jKrVCGsDkqaPlzbrtwTBmDtMKfjTdQiMnGYmpyVPZvxWfjlkPXh") }, + { XHDR("xcnht", "QXOyQuDpafMvwSmrUwjixlpEgQOANUvRItnxeovRAhNZNILixdWZKRsIJfpCwtNheITV") }, + { XHDR("umtooooiryyms", "kLIQxqeqjouEftwiyTrNWVQkD") }, + { XHDR("fbrvmfsw", "QSBcSXaojWMsebTxpWQeP") }, + { XHDR("xwgs", "AHBANWaisjRZOmIQvuMOskVpPmFKNSYVqYRPjGXORlwgcoOTuhfForJCVFdveYGFYxiWhUic") }, + { XHDR("c", "GNYELBAuCWKOyqdjfdXfHqYGThhlkJzyGHpgiJBYNhguGSxVcvqhtuvSANnjvjuEGRyPe") }, + { XHDR("ddxjtbvy", "aOzWRUQtJpchnqvvMIQWwxzCsemSGlCBz") }, + { XHDR("khvoorrjdjubsxbnbdx", "QghufyDWsVDuJNogxdAtuPKEWRQBjGnQpHmgEsVoZNOxapqRXeV") }, + { XHDR("uaiqonynd", "bucNyAgKGBjtyabeVjOEDbGMhV") }, + { XHDR("fxwbuefgpmyhimznzri", "yXzPBNvRZqDTGRfzIBrYJkkoMRfHDkg") }, + { XHDR("dr", "HaHhMvryLukAdOvP") }, + { XHDR("ledybhagqonzxlpla", "EPuSBSkdEIdpEKfXXBfxcmJXhtkBOTsIffLLCAiiodFwRdAcZjRuWXvzBtkESPXCTedgFt") }, + { XHDR("yf", "nOFBJePfaPmHLQZqDbbfdzDxRaXPpvVdyZrZNLfxJEaJvfhIoITcZEveYfwLcaNqsmASDydIBHosh") }, + { XHDR("elquz", "Qn") }, + { XHDR("tnudxdkfjv", "rGZlnImZZlgB") }, + { XHDR("x", "kWyxYfdlvncIpIDohSIDowNsTUxjxeCckAECIyPNYqKpMfPhjMpgi") }, + { XHDR("mmvqdphaec", "bhulFUhGwyCSQwiKMbLdfFvtHQfPa") }, + { XHDR("hm", "ZKNpZMIRgJaw") }, + { XHDR("o", "SoKYAJUNsDlgBpdGXiqVzVxPUvrlXu") }, + { XHDR("yywomdcjszyxhylljns", "UHsvwYrefQdLEtSlwLAzchbqfGjTCFDpJFfRtifOnfwrpIDXORSnSPjqfrSQMDBwQnRkcm") }, + { XHDR("rrzagbynxgm", "rgfUsuKPUsqLtASBDkvsXtqA") }, + { XHDR("zmhldamhfrzabcpnqwn", "jgonbpXsXDfiHykRbtYzvgbqskTYgLLltZXGTPNWKRnyTmvvMdFmSybUvGVzhwP") }, + { XHDR("eghlanpx", "kRrKVyyzKpIIxIlhig") }, + { XHDR("cmdcupp", "thPAQqXRKdlZnw") }, + { XHDR("zfaklipnebvwkhce", "vGNaweQhodaBcayRlpWqZDuCKZETcVqpQQDuCBGDgbQrkU") }, + { XHDR("humitjudnlspcxliprlz", "xoKJWPeuzHinGDDINQbcCfSKfEYxBPAsbcIjcswUMUoSkrnoDSFDiIkKUfqhMcOoqKjOrZVKm") }, + { XHDR("fozypizzymcfu", "GzgGxdxXgwsFdZleDkrNhlrhDvWjvxSqINshgncfDFTcYjyDBvF") }, + { XHDR("xsqtsqjp", "yACBBUDKpXmVATMqSVaizkMkfqJYOVJEjqgBShVkwIU") }, + { XHDR("tii", "EpQYcqIUxrFlHgPORwBtlwTqERWIUCuEwauwaFarvkTCsVRVoTPJJMZUxRWpw") }, + { XHDR("mfvirasvgyfq", "ODfxbRLbBwnHwKZERYmtJxdUIHx") }, + { XHDR("zhytqgui", "fClHlpGEpunbbkhgRcBuqQowEWjKdHyTFKHTrVFDxxrxPbYaYnyDZAfViUuSVP") }, + { XHDR("qijed", "YnFiVYrGKyXGEhttiWyJzwEQhLLkwSDzWkmk") }, + { XHDR("jakeyiqjjbuyen", "pqKdpQxwQDJRYAQGhDceoUhesSqfmNMcjHxBmeoOPddpYl") }, + { XHDR("icmuwacragzmqb", "mnUCCsreoGXaojOnJiJILejdFIurUNntvKEjhvdSlgKjCLmwgVfnTmnnJJcKSdcIPMklv") }, + { XHDR("jnx", "QaveKWuVZYXMrFkdxqsfMhPXNZgZdsrrIgqghJUSIXRrJPUsGabmJtudxDMNTMiCHJYSMovGuyMih") }, + { XHDR("wh", "MTiAMjJHCEbJKONCPOzlZiPfUuUmpFkpJgjBVDPSJABtv") }, + { XHDR("yoeybcdympqybj", "WMyfVyMPkWwlIWHXFoFptRpiL") }, + { XHDR("cjafynr", "zMmoWZItpnHpIwXIPBsHInEaScbbqvDV") }, + { XHDR("fmpmsktgxemsgjlmzsu", "yZHc") }, + { XHDR("efmlsyuosjsafhrimr", "NhLbHrdpwmUJFFOKNenikjksgJaOBtQcasyZxxTWIAVhMmTQhrxRaETpIkqwfEMggc") }, + { XHDR("dfyqruxpwgekl", "pFVrmklVWilM") }, + { XHDR("nkw", "PyWuYFjrVHarPJXSF") }, + { XHDR("uyxvrlj", "EgZWDzcaeqVZNEUwwiEHCfOLGnCBmIvcwZAoVdGhVnxCKaTYRLBZeWJZOsGMqtn") }, + { XHDR("btfgbiecrrjgdofjvvyt", "QGZpQkwpTJgGUDlkVopvJymPCHNKSPZoGIzGZKG") }, + { XHDR("taqqhtqtgsyjtxxaqf", "SnKurFzAzfxuCNHSXHGwRbgYL") }, + { XHDR("m", "ZS") }, + { XHDR("q", "vycUuKKymhKdyPVQFPkOdWuLLrPQTPGyOigNlVjplNTfGbsFZqXzpzPxgYBXkvedUXBIctzLXXgE") }, + { XHDR("vasjlqvgqjfemsmvk", "ndjBmawVjGTCyqlbKUYfzRYWHzHKbhIVXuFeDMoUctytYgzNIkxacEwXUzbbPHmVtBWTSePUD") }, + { XHDR("ftezmkfctauqvkzssw", "AjdbNLbUyJsBhnN") }, + { XHDR("iltgf", "hViCIMUVPtRuPTOPxpVvcFGpqcYIsiRYDMSJIzbvqQTsovVCcMFKwlqxdGSYDXUXvoKUF") }, + { XHDR("touoicvyisyzs", "KtaXaFMrYQWfKJFHlslmYtXjCEyEkGLxAPSiE") }, + { XHDR("wcdjnrckhzesmshl", "jvdFqGjQWEjXccJjxtMbbgnWnShERCyEcPBBibsPIYFikrSHIzg") }, + { XHDR("u", "MNjU") }, + { XHDR("dsyqvvlwgyohndibflw", "gHt") }, + { XHDR("csfylkppvtpmwgvsrfk", "BvzPXhEobrGSyqfB") }, + { XHDR("zbcxfilwmtoc", "VQzgBhvOtJLPjX") }, + { XHDR("rjkxxpopkvsnt", "RfRFnUjGSyxxtvRMmsvMtWPSSqCkeAwyQRNFFQmkLmMlpuqMfKbiFlFzowizwubwACDsgffKsOcc") }, + { XHDR("mbhjirctynh", "ESdZBwXJFiRbD") }, + { XHDR("hvpzykjhdpts", "N") }, + { XHDR("bcstjbn", "IPrPZbRIBSRvZBvGwljRmwsIG") }, + { XHDR("dqlilnadhdwyuarsd", "nncpszUqohdNCnEaMBLohUraezULLrgnxMFVHyQtqgaRPbMtBrQTUV") }, + { XHDR("gplfpztuba", "OJKMRugidRZzgRrpPBSDDiuENJcjNJbSsMZvPTzP") }, + { XHDR("ykbmtbidszbzdmsxhw", "XaWcJnuencsqtJttHeOkdb") }, + { XHDR("chofagdzkwfrhzdfm", "bqhalKBfYNSmVbeUbfAddGjpUVFnfWsBSKTEQMVXu") }, + { XHDR("vytipghsfrk", "atIIkzNBgdkqwKvujhEIJjWeOyEjHMnwDoJmgUWzNS") }, + { XHDR("xn", "VVOkCFdxozifJDolkvBOXoAyTCrbYdXGazJgnxjsrqLUVudfUfJKHOwfVXY") }, + { XHDR("fbus", "lOwcHPCcapjdCZyRqudpndCRAl") }, + { XHDR("esrki", "EVDvEjY") }, + { XHDR("gw", "iUsotFaUldSIinhLdURfwKBZPNfaqTUsLPivwTngmujxwaECVhyoEvYSBQSwygydNxtZwSzYps") }, + { XHDR("fcnfnpq", "ganwcuowwnLVOAXIOIPgpRYyLKAVhhTliFJczDJEgd") }, + { XHDR("hwjpneeyda", "PNdhICDIOpoAyzTwrhiiD") }, + { XHDR("uwbrgozahmuyuotztoyu", "YynlqyRysANGUIjpndJzsIMScploXtERvdgBIkbYobuEZStHjVLZzOYodvxCpStOeUq") }, + { XHDR("lanznvgcvjkevovfsbau", "kHwVvFoXqNyFxphuW") }, + { XHDR("vm", "GnJCuQUpsEKQCHHCusfhhKappv") }, + { XHDR("lbsaipoamyyypucrli", "mkBRwfaxebhoJUrqRnpSBuoBPUlfNRRZlWZcQEFDYGQaKGzDGVRYslwsUKALa") }, + { XHDR("weweqhfzyplwusewbonk", "HwUEBEZHxNIaQXjEBMgDybn") }, + { XHDR("pgnyuyyeyubzkufmxit", "UpnIhHvfJqRJnAsarMtqRWMwNmFCb") }, + { XHDR("zkqumzuuihuirbzmyy", "JRUMgdCFXYaocJMXujgEEjUvmbqVPxVmzyyJLLDXVoKjXZKUZDFaXjsHupEbUiWyuVtPDsktc") }, + { XHDR("ccpjwtptwgoiadekejg", "qFGuhxeUquErcEDM") }, + { XHDR("jtlldzjburaqvvagdr", "ADTNzHCOggBGWMmYNIJbyRwLoLLyasZUnSQRTJdtjT") }, + { XHDR("kuritmxcspln", "kvCrcWqudpYffsSGcjAEXDlkf") }, + { XHDR("jmjwrhqpuzke", "PYGdmIWpYmEMmJSyKruLrzCGeev") }, + { XHDR("gnwxzw", "IKaTYZmfnkyXOqzfIlikuVO") }, + { XHDR("zlseyquqol", "hIGWlJTrWRlsCbgIxeAnkUXueBw") }, + { XHDR("hrjxlxshpblbv", "mXmcWtVN") }, + { XHDR("qfbmqmchrnkzo", "XdNKdWZPqhORQzKYUFjRxKSxBMvoDAVZZzMBOWWfHOmadeWAlQgYwtayrqnVFGKKfIMYctwrbfhFyp") }, + { XHDR("uuysespioottbuw", "evcJiAbdvQqvrmCQ") }, + { XHDR("inwwvvtjxphkillhkzv", "WGSgMLMAjSugEfBg") }, + { XHDR("vnjmtxfyl", "ikyLJpcVidJHzbABNvaiHOxgaYzUQIKSCaQYyeNuEzBlcxMzERrxGPmtOFnpGVgJfobakVJLqCovCaz") }, + { XHDR("wh", "YsaLgxSx") }, + { XHDR("dfrwtljdlpdq", "AuheabKtchetXgsIiFD") }, + { XHDR("mswcncrb", "voEdxJmqKCcnHRiflGEnrQXewXVFnmkKYTTrScWUHGOONvgcu") }, + { XHDR("hxwbujjqgjbzj", "BHp") }, + { XHDR("fxxyiknczqxkyty", "RgXdDFFzBJvrSlDi") }, + { XHDR("vobckzpkrpjjhixyzhdl", "rEaFrInlpbVochcJBqQWUVefBxjbbsdaXkvbslOzKDslrAaDeIQ") }, + { XHDR("jbhdidthojqzhtke", "YtSvcHUxGJIoqVUAIWFnvBZRnnHUdrDkbUWUpswhccoiXFoQUYcmFhZnxJuWYdTclU") }, + { XHDR("bxbsernanqi", "zvoUxJjHotBcOziuorCTQzEiQByRSvIScjCLDviAqVgJWqlySidUPdZksuJZxIea") }, + { XHDR("hya", "KwefEWiyoamctwYeaLQhAqNZGIwqoVxaGAfQnDsNSiGYaGEdkxQMcZ") }, + { XHDR("o", "uvtyxeruBCRqekHchBeWYXrgAMbMcaJSNyejQ") }, + { XHDR("y", "aGmJGszPyTbWnhIHHdXtdyabCFzgyVrNKtOihADWoIGESuNrXWjPRHFodgBg") }, + { XHDR("hwmespgawoqfmyvm", "NoxyzdZkaedppxHPwJQcvCnUPIbDgeXYIEWYgrUarffGIqWKyoLdDThvcUjLna") }, + { XHDR("qwuov", "QobxsIfwflRtYWGePcYzKFAhbyLvFRopthVfmFSSZvBvLDEPHFxkFAggiMphSBxgrzJci") }, + { XHDR("ukxownpx", "MyBaFOQgDToNFCJDxShlOaElAFCkLWKxreslITcoFlCvjfFFXCwSAgzhWhKwfZCXgPhPIHs") }, + { XHDR("bzgxupbvcifuldo", "YsJCNGEojIOeTUaOFErIeUyyVbmKJPiRgSoftrhSfAgZDXgXTsxSwFVOXdHGoylGRVemhh") }, + { XHDR("ahsayvn", "TembtVXFupPdzlMZpHbyiWkbCpVexJFisGQLAkwReVnTXELbvqxfapcAGrROL") }, + { XHDR("hcvgyilbhjwmnyrxvbvr", "oqQcKMWbRcrhvIwxAHOIySMROZt") }, + { XHDR("rxrfbfimafyzbpbfemiu", "NpiTklnWdTawKtMFhmclqUoyIpDiZuzpNWW") }, + { XHDR("cejchzekgjiju", "IzUqpssFEdBYAmzQgMNbSjqJGYPGKWBLRRCmhMqNlstWTKyRuZSHfjZVUtMLEAy") }, + { XHDR("iwgcgmjxxtdnee", "wotEGOLyfCDLIwAfuDEyGnEKwftFPRDQXeVAFdLxRUlpCdHgFJ") }, + { XHDR("yfinmpfzc", "gudYAdKzAcWQpPyEfAjFslzoJbXWraodXtW") }, + { XHDR("uimoe", "vhXhHfUsmJZJGgqUYUdSnkAbGFERDxyYvVeXGojKJNJyrevlz") }, + { XHDR("oginqub", "XpTpHBwrsBgbcrMOvelwmCCYvWfkWabzBRquyZsiutgHFkFyuzfWgPtiomxVIKTj") }, + { XHDR("osfenhcgzmzhap", "YwiNAdcxnzapwxyxBZxszKGJZllOdCzPHyQsrwKxDQeAKdDaqXUxEUdJJYcYDTYgEFHLyrCMIzeSyUYd") }, + { XHDR("bochrecrlkkanvpkv", "tyNteZQrDvzKxXTvfdvYwrmzvuEEwVBrNhjYIUPJHzIMVgUuhZpdlFuzbXfpZyHmDGraCiDq") }, + { XHDR("qat", "iVFuUiStFLdKoaAFMGampDMnTErqIOFiUDuHXrpsiskkHz") }, + { XHDR("rygzgfmhuvagcvsu", "fifxtIxYvlsG") }, + { XHDR("bxknlcuacjitvkboopr", "merbmbPIgpLwTlYoNSoNUiMAZEbETfHZwMdHzArbwxCeSrHJGsnOrBFwtfpMgTjpWVwoWIlJu") }, + { XHDR("sznyg", "snzSnafpisMJsJbGnXknkwjUVQgDDSAIQUjzIDBAIaDICkpCBvMxVnjMXYVN") }, + { XHDR("aoiflzgjzkpm", "hNhDcsiwCZDYbExtoaKaYUiXCBDVKLyiwjWhtodAFtASxeYOzucrTbcOvIFzgRhHhIh") }, + { XHDR("iikdysud", "lD") }, + { XHDR("shhmymdyhbydcqgdmi", "fcTyeSPtkFEJeFMSrDGBJFpCCKMkTimsk") }, + { XHDR("bmdzbhvvmfneqmrtlfoe", "LBwxrwTGzs") }, + { XHDR("ssimofrqvsrnaqaelqgi", "tDQSBkivspLXNyjgiWcGdcopbOleZLVWVYgZvsOGXqeHktCogfWEFYhFoNoReoRnNoGihbimSWxYVxb") }, + { XHDR("baiyiupicug", "wKkpKXDgBIMLighYMvkYoXLDndRUXxoVoOvgrlIQtGOvECll") }, + { XHDR("gg", "oNmAoMtpkAzGxRQKXlxxpzbLmszOD") }, + { XHDR("dxjbilxxxvccj", "YjYVtibnINhXweUPcHDqYtWryWJwmyrYtUdnAMRwXd") }, + { XHDR("iaehciudhddpvtp", "CVVr") }, + { XHDR("aw", "iFPJMyTfdNIsEBeYGFYpRnkKbfgfoZXobmZOBqFYpgOQjwaOPENvihA") }, + { XHDR("ilbhaykonqiefrcwe", "wTekudFBSUMvsLcRISeTQilgHaElaCetDaDmiBZZMwexJMKhhFzgys") }, + { XHDR("dtdeybdtloarmoqme", "aEHahTQKimXUlCPrUzelEZkkjkVnqwFxmnoU") }, + { XHDR("efinwfyhmaopywl", "BMvqpzukoILpsGeRqPDKMoixWlORUQFEcfBiUKsfWcJdCWAdwVUrxyqpYayNCMHE") }, + { XHDR("cvhgpjydrrgpparvhr", "CmvwuIiEvRBKftDpXNgAhjpqtjQbvHVNcjKYDzGlGFmFQgoytkGWKdVjnTIZbR") }, + { XHDR("skt", "xiXLhXAxoRQcYRBdOQCDTpKIUTqtFssKtbikxMxYGGYUelRuwKKLXEjUEuL") }, + { XHDR("cmrfgsbltiweejjwqyj", "JOPWJeOEpIywyynbILpXsoEgfuAnWbZcfB") }, + { XHDR("rbheurrqu", "SsPUzQKUmAlPUaJTaQNXHzPBMgTOdayvmHonfovIqhbqWvyyCZXpBjlmsGXFwd") }, + { XHDR("rd", "IrGZHobMOtTaYDMNxJmgNfbin") }, + { XHDR("kkrlvrrpmplovr", "KWxJMkniUPskokuEYSbYSbPrhoqNgvSsxiVLBTTHoVu") }, + { XHDR("e", "syfVcUFgEYLOVqlanFEwoniqUpniqTru") }, + { XHDR("tkekeaqtkyhi", "vUMbKTUEoNKbttMcgqVrxPmesNYrCyfExVSdYyGiqzrPvHZMoBUjX") }, + { XHDR("ntzlgsfqv", "bLFLqZsmPfGvlCexHIJaMeEocyhBeaKvFBINNdJDkgzsxWSeLKtpKgCkCptWOuJmtTZRlRrEVqd") }, + { XHDR("uwicuqugwycvgfbrn", "fIviJLftGNEzTH") }, + { XHDR("xrwdy", "vwcYyYdNItbpoZzklJYwpLaPNBO") }, + { XHDR("qumyvsmtzbo", "pUfgFbYTEdgDlHMiolNuEGJHBzPdlKMhAHfVNIzRqblCDzLFaCpyJcaLKtdHkYuhmDwFphe") }, + { XHDR("znhdvqzzqhyukymxnssg", "wLMYvKimGwJBIXteFYkjQezWjlStugpmNOlO") }, + { XHDR("ksujup", "gYuJyFVgGYeOiEvZoQTLPpwiuqavbARcrILrSApYIM") }, + { XHDR("hflxipfc", "wCpPcwBVWkwVgQtBmSKrkkQBSWzmmWThoVYnveZIOe") }, + { XHDR("j", "RrdbQezfdxiawnxXkFrJrNqDUvRtmTtBgZpOlNBZpwNsVzTkOLewD") }, + { XHDR("odixwiivwttcf", "TLNOYQhmIBRLiCDPxxNEnCmRVDUpPKtcp") }, + { XHDR("wb", "WHHDUmBq") }, + { XHDR("tdzdkzqxdpria", "CfgUlrGpqsluexqTQkMirAOURqguNCqrepsJDWq") }, + { XHDR("daeomnfeyu", "ztcYFgXojIOFKyAvjfiPQlHMjKkPBAswhgCYxuSxKYeYZUDZszCjgO") }, + { XHDR("htqynolo", "uWxxAwxnyxoqoXWQwgRjOwpdUyvGcWKkktjjGWypOutiGkhp") }, + { XHDR("kjbneensr", "cbUevkbiusWeFSANsjbEPUVeBYgvoOhYFyyRe") }, + { XHDR("jowl", "csmNffAIHVTroLZntvACEmCR") }, + { XHDR("vanfwylhlfimemqsn", "iIhSRw") }, + { XHDR("y", "UjY") }, + { XHDR("xuvwttdghfjxoaib", "QvZhtznkNIodSNcmXkOYKJAlGwdCDfPetVVregHdNOJyaOMC") }, + { XHDR("m", "DJXuPzZQwuX") }, + { XHDR("dvmtkqrvu", "OANoxGjttXZCcoMnaj") }, + { XHDR("vpmxvbwxv", "JIc") }, + { XHDR("mhmdvlcf", "C") }, + { XHDR("vfovyjtltwfgxu", "mcSJijcGxrY") }, + { XHDR("cphc", "WpiInNqzUPXrsZsYxTKrYMczegBPfIKZvNHswjUIMcUWyygGGNKOfjwuFQyViydlU") }, + { XHDR("utamzmibqrvcppraow", "sfigFizHQPBLMvRERGPCPf") }, + { XHDR("ladsiavkuqefaaglxvu", "JinRfGhSlEQboMDJWfsxlUbQY") }, + { XHDR("oniiwwpt", "AWQFjkgyG") }, + { XHDR("rgdikv", "hzBHLxGlIlfNyiVOrjvKevDwXTAiaJNNTJQbhcXDSXJhsvmF") }, + { XHDR("kgwzmrwhie", "aamtiOXCLWWtKpShqmdmkJsCAlOdMQGrVGTdxka") }, + { XHDR("ajqcexumzinrzjl", "cGEgMTGKcumuIMaweZDplohbVLuGqYHnxFdF") }, + { XHDR("ibdfufvrftyuvqi", "WNlJMBKyGGqbsWpjYXHEamII") }, + { XHDR("rnpehzyfpasnbnq", "QmBkhC") }, + { XHDR("hwcfcjiiifbyapjxl", "ZMJzoyLhQWUGvhIJoKYuLBbopgeePkyZqq") }, + { XHDR("spnmsxfxmbnbyltpd", "UpsOFSsmOzqAOVVIrwYrGKpREpLYirxYtkiRhTmLGGHGNvnHyLgdSpqhEECtwfYIdHygPNxwjtbQe") }, + { XHDR("qji", "dsZGwGyRCXyzmZOFrvTBxkdOwcvqZkNSyYncbTXWzWoaZrrGxVPmjMnLOBKtvkZVivo") }, + { XHDR("kwuojujmdjgeykyknikj", "rVrhVGlcrwzysmMrleVTmajaWRyROUzjBGKXQtcYorHfjGjUFDYfZFrhsIjsTqQEsgu") }, + { XHDR("ncrempowebjopocdvqc", "nGVAhBrXlcOmqspGEqwKDwGMdyihdgKmR") }, + { XHDR("zxtcojlxsocrgbeu", "tDeZrpzvQPaDqlRKebBMCYcbkECZAHFUQarOpDEqUvxgTIwTFtGifOVJWsVrQkRJlSJimxFzlEdj") }, + { XHDR("ckfyqkl", "FwSGvzzgxTkYEFWliNlFzAPTVGEFIDgoiuuCUJBEGfIlnCDAVFGZVTDAB") }, + { XHDR("kcj", "XixQjsxpasYBqAEkzCmYnRXYkiGwpVyORCXCfOnzAJhoGfJepzLKascysLosKDbSIYubpAzBzZM") }, + { XHDR("yjwilwkb", "SDTwtifyXHNdyHcBpNgIDILSqhmmMVWYbFJXN") }, + { XHDR("xufug", "npLNmVsUtIuNNnRoURGipCgKzQJUMtOHEjyJDNvwnEWrnQwfVmwdcFc") }, + { XHDR("jqrjfnzmjimu", "sRKxaelyerzTxYUejDicJDUwFIxzer") }, + { XHDR("ygywxituqylcvamnx", "NRvqGLtcHtrCxFKOIEYRHUBlKGuWpZBxgWqPCQXRPFoisEBhoZMRAtrgzwMnWodBdkldghFC") }, + { XHDR("fgn", "GdHXxWsLpCdjRizSjPmmuVwYQUWmRYfUrjQgtzHHVWwObYwYAaLPgrZRrmr") }, + { XHDR("bgexltsfs", "VrgWPsZdkpkyxDQAOkQNuorxGKVO") }, + { XHDR("bvuvacfqhr", "mLTAuicuGvllCcktcXcygEpnWViqbtpo") }, + { XHDR("jdjvxy", "PrMpPiDvJWzpTqxRaZNWUZaPFfbtCSVnsvUGrIEWXHeRIQwSoNycEqjsbTICWvrBojdrxYCSZqKgKRJZ") }, + { XHDR("ddbldzcjrhmqq", "youHwjiRWhAPuMNCbMKRlMSzTEkDQKZrxquCDtXmxQLevqHPFYdNGVjFSKngZisTVcmvFwZzOFFxQu") }, + { XHDR("ewuyhbjnklretj", "bVMOZkNyUqBYRMSWwSSANUkgttfgfFIJUzLoOtuhKEzfAhoRNBOmfTrvgZtRGNGVolipbCpXVdeiikFW") }, + { XHDR("psuorlqq", "MvDfrUhJwUAOThYlRdxuzoSYvjZgciFwzEdrHviPIrChJevFesoDAyRFtfpplKLcDdndAgOOxXRgO") }, + { XHDR("tsnlpco", "lhvXMliWoOiUmSyvcPMBPnFemqcLqaDrBqXZE") }, + { XHDR("n", "IHKYOlYzDtFFnBDqsbCK") }, + { XHDR("bhjl", "clbORMvAoGaxSYd") }, + { XHDR("qkafqnfubgq", "HbDzjtbthqHJCsSAGUlylpZqHeS") }, + { XHDR("onpqhdgsk", "hdrXdEZFuAcfbnTRAvVOYLayTQwhdBDuYVgOVxROYxvgvThrSWcnbNzGUUlcOow") }, + { XHDR("cirbncmnydaanazscml", "DgAjlFHUXguRoxYYVAhAgwKsdTkFo") }, + { XHDR("nyphqbympieumctyduqj", "BpVZIxfKRPMI") }, + { XHDR("ruapsadqvnvei", "jbiuueVB") }, + { XHDR("zlwagllxdjykkomb", "jHCogHdhdraodTKeMlYlvBnyWgQawBxbotYfUZcllKQjRzCiHltlSFpw") }, + { XHDR("qgqlmkmoxskkw", "aRxVBECMShIZDzZhaCzinLnfhzSHUKbptZpdHNQJSjitnphLgK") }, + { XHDR("nukyitmepu", "vkxsjupRZvvDhQduIcFuVupgywpOYZHKzMqlRETRvPqRbTgIeScnGunoCotBiTEdEGMMBAzSpmEx") }, + { XHDR("dsqpglle", "cEUpRNkbqTLrCuEotwiZnvvHpCOOyxBmluZkpo") }, + { XHDR("cfhgwzwlhnuivwelc", "SyZgyOOHjedEENStgxsuFqsDDXJtiFkDQKYFkCzlAWmkHIKvkCKHiuNVljQfrqfiwFwqb") }, + { XHDR("rhujnrkoyxuv", "iY") }, + { XHDR("yoschogxvdyype", "yRQryAgpvWLGAeNPrdJkpMWqwmkALPkllLAegP") }, + { XHDR("litdhmidjgufitfmrfqj", "SfMwxcFAJDCpjvOwvyKzNhHNqQitztbKzdgXEJtyWmjSsAgFbhZPwqGAAbeWrSkElBgIXJJ") }, + { XHDR("z", "WtGcyrYqLWgutszsUWmfMlRlpovzctwNPSOvyfHnzsisnkWnfsjoLXgHw") }, + { XHDR("dnqvjukwpsplefvbg", "whUBgTtAUDiHwbnzo") }, + { XHDR("zvcvyftoac", "DzfJNaJcooAKtiC") }, + { XHDR("iwcecakbfsxcisxtzoz", "LmBxHIwOCPTpRKiDnOGaPpsZVLwEsWlCPRGbzcIwggTihUvX") }, + { XHDR("hzfuildkpwxlymdyvjn", "iUHtRwKtPLOAnUNMjLFlwCPDKWmHrfFTRY") }, + { XHDR("ss", "oHILtRYdMpahzHqKCyULlHGrFzRdwnccKMQTqdOphbvlqQJNkaHRNCdEHpiMactF") }, + { XHDR("jg", "ZYCaBvjGvsetqcuzkTwszMpkCYihcohXqPCCnQzzHApKpKDdQoCdCDZzlqNLUZPBbWXzWUq") }, + { XHDR("elmj", "ZduuQfJWpSVbUtvQyzhhRUO") }, + { XHDR("ycetqcjymgg", "TN") }, + { XHDR("ncrgym", "aeELGXaiGpgzwHEfMEAapwdWzqnRNSkdSxkskleLbtrdvUeha") }, + { XHDR("fgcokk", "HUiLzDhJwjhtUTxnNgnXauZWSfrZeUleJIfcHoSSRjLfbTiVy") }, + { XHDR("vuspencud", "saAcaEvqJBUxeJEensDQTUaiZZRRVHUkHOMVkC") }, + { XHDR("yynktnyotczgczyrn", "NBbwDPzrRGXHnFgmTZqDovEFDppGbOBAKFfAWfVNWIAYZIjWbNlcNjQUimhwatmsMF") }, + { XHDR("qy", "viymzEqxZz") }, + { XHDR("jfdjhsso", "NJGlgxOF") }, + { XHDR("kfroshdeipqgoalwr", "ydSWIIYLZeATrzyGVvxlahDSWhGNtbjQoKHOaMRrSmwsnOFhjizWfbTzNRGguiWRMBhbprfSGdRtvnB") }, + { XHDR("d", "cIdaVrxnUAjivHgMWdfmNSyANBYCiXrDHUVYACaLAKKEEDHPFZYmJIcNZSAgrDcAmpjW") }, + { XHDR("rbhztpartfzkskuy", "YaTRpvVSnADxhNKohIpuhQvONavDSCGkXTDTZpEoRSVqnIwVzczfYSKtIrzNYv") }, + { XHDR("noroybhjskjnkxoxd", "iYZFumtcpceYcKmCZoIfypaTSpGczgXkEtGAaoVjVSCGcEJzFeRcJfPnTichzasDLYhjKWRBMhoM") }, + { XHDR("ftpskhcrxhljiexpl", "ywMNIZqndlavNEAbHUFBNBEntOxerAdHhWfdsyUaqqRkZhMGwNougGjtk") }, + { XHDR("wztopqcc", "zGjTouklYDngaeZfRQpSmQAXRlETHbNLCDvIcKpnAaSRWC") }, + { XHDR("kcnumlfyq", "QGQsBbEiLsnVDrlorbxdLFHRnhoJzVXtvdGnydZcTiUEIPtWbJQu") }, + { XHDR("vqyzxwnabfrjghxlpqp", "PCJsqFIufupf") }, + { XHDR("emmhhdutdfk", "adrwzocxEqGDUaQauvgjoJNZhPkHOTB") }, + { XHDR("urlkjpdy", "emZDuvMAQZKKopJqbdXJXCJSvPkmPLCzFofGdFPxvcFrRNhwThlrSJXFPFUlgLdyDX") }, + { XHDR("uaxyqbpxgldla", "KuICbFSzyMEbYXNzTaWzpTOEpwdRbnTEpBgxcNHvGyDKHSYGujbfw") }, + { XHDR("znsaa", "SuNEgUpDSYFPIWNwapaWHvFgNpNWVpzetCwppaBfRTOGDBGwjJZdDoPbFgwIRtGSqIW") }, + { XHDR("iep", "LTTRWfuZlCtpAaNfDhGy") }, + { XHDR("cr", "mUxDkLJLTQTCCEktbQWIbTKIxmhiB") }, + { XHDR("oaomrqds", "SqOjdUXuTtvcYcUjQTxJKpqQxkrUmO") }, + { XHDR("flfbaiee", "ETGKZuFXcuEtVwfEbIfOuzQeZjPDdlSdwgcWyGfSdCuYxMPyV") }, + { XHDR("whzoyufazxbzladox", "zjmxIhHNTxzPButjwNzQWMZEZawzuOaFCWcJIFQeQUYvEJjENOzmxOdNVQplXtXJTWo") }, + { XHDR("ioh", "Dctf") }, + { XHDR("qfbzpud", "KdKmlrfnpryLHqBeTTrwouJnJrPn") }, + { XHDR("y", "poTBVocEGMafJvaGGEiRFKDlPdATrydTUFpJwEoHeAgnZrVzzRaY") }, + { XHDR("gjwhvjsyfvethuwrxlv", "bFFerGhSERAhHXJTqZoZsEnIKFADDpgwIcHPNtxWSlWPMbDLdRaqySrVqUkQfp") }, + { XHDR("mzjdekgbnfattb", "ETufNPOXyrbbpvKtqzdxnllyOVAxCkQvyNlxaJXHetKc") }, + { XHDR("vhhrs", "dUKSUizhaOhsHjmSlOdLBCmKqKqfhtGlvTztZwZqsPwIWShxIorwUZSvkfmtLfR") }, + { XHDR("nqvvgswm", "cnxZdOyxxskOcXFTudqYDbZkPJbQiWFkAofDNMMBisHLRENewswfWhurSLm") }, + { XHDR("memvionxzuuvq", "fGTbgUPcpkBJeZEKylcPFhaRzfjgAThWIxrXZwQVufE") }, + { XHDR("ezwoflcbayreijneyyv", "uWhWtLnNLPCETNcyTzoyXHbxpHovJwIkHjCzdvqNYyhTNBVXfPnGMiqSCjdlzyxnvothrDixDaljqApw") }, + { XHDR("l", "yrmMcZCPpZZfqPKSmCyFPrmwfrVeRIwdGcRnRjBXVbcTODVcHJtGeTAq") }, + { XHDR("g", "snkNCSovfEduLnCUeGK") }, + { XHDR("oqqvrgagjtmk", "ftlPccKraGRYgKkPlkemDwWizOFRVQFNRwSXwwUAODAlfFQUrOEqBFlDgFnWaDBFobUBJzTzFfJGGd") }, + { XHDR("iozcegtrtrtwqsb", "yxXTMrXcDjAwRLMMplerCNFBGKAaFrbTmPL") }, + { XHDR("jqxdbkrdxxveblfv", "IjKwwERaAnGioTrYMbHnrRRTgZjAFqfvWCwOtpRikaQDCpMsV") }, + { XHDR("zhnhkhrimjafxuwoc", "pmdEqoQFfhtJMZQouBGgKCMzObdULtZzLbXVRIqdJSFUenXRAJSWecsWVKkoNaxUPTBvUb") }, + { XHDR("pnhulple", "NTlNMAOvumEwsHvxtDFGKkgfQI") }, + { XHDR("hjrziu", "cKglGWzWesxtWoPEaqEKmGbjrVPZC") }, + { XHDR("loziywx", "reUEEtEkIxRE") }, + { XHDR("pxpeflnsxdodsvcywc", "hTmoHOyZyiXrQeULLfbrBtkSPKx") }, + { XHDR("ot", "MKWXRdSTepepQANagQdvatDVNDDYpgPBqktWlrJnKjNBFOQIk") }, + { XHDR("mqvvqibuatfiqjie", "GLSacsFiyDShgynEBhgkHMtnTuD") }, + { XHDR("szqwffn", "B") }, + { XHDR("avuvttngzlffrttvi", "MVkaiuuNacmNJGIrfahkZxPDphqzgSDxoWhLhzzMFeWVcIIqODHovbMbF") }, + { XHDR("gpkuqxxgtiauxhhl", "OECbiOqbdamlUqXAAcjGgsqFQGjoqDOxEGuith") }, + { XHDR("lmt", "tUismcayuTYWtUzkdtPavzGIvjWQhXvbDNqFUahheunalGQDFTQJtvjWRavgi") }, + { XHDR("rdv", "vUBkBCwMELvnSrwmHDAjNGSwZBVYQcWnujqWlHgp") }, + { XHDR("qzuwvts", "vfcNBVgFLroCNLgULecEQqDaXPDIejoLSgFnBXfMUHmeZDkyUOiEewKCcQBonuZphJlaSNgWGZDyL") }, + { XHDR("qbnuihhoynrudibxw", "lpEnJxubLStsylhWxXCCasFqZkqKLWCGPaeOoArHFEvLtOpozNB") }, + { XHDR("daaigakngdber", "cEwfLJBSYnWPNIQanqNnEsqBQAgpegEkT") }, + { XHDR("zu", "XzadfjTnvCCcPUrMFnueHtuXIDtjIuIkKWDB") }, + { XHDR("fyiyrkbwgaaka", "AXBARKEoIeZZMwhAfunbFMQmhaRYADlVtjqfZUMeYWMljEwH") }, + { XHDR("wzfaisujgbdka", "zYuGzqUQhyQGDVyW") }, + { XHDR("pofofyxvmrphfrrtpte", "UIrRSlbRpdt") }, + { XHDR("jelifmcwexhxfgu", "vzsaKFvJIzvV") }, + { XHDR("oer", "GGvshMDci") }, + { XHDR("giajawvq", "mQaVMIZlBblbhgQBbc") }, + { XHDR("prjktnwv", "JDsOygbkyDpeDfCHkMTqVnfOJmpiFDZGsYgiHjSdgGLVKGcqxsyxBuNNuonDqfjrwlVYquFiRVUuSij") }, + { XHDR("kyqpaxmhulvpsjanwx", "VuV") }, + { XHDR("lbgcfnlnyvqatdeyoy", "bHVgCKFkgMoyrZFgCJuzaaHNKmbFlFoT") }, + { XHDR("gs", "xcFB") }, + { XHDR("fkboarbuyjyvzaiwgcg", "OLiKZPAtMZA") }, + { XHDR("etqtj", "mEhZGWDXxRIcPyNGhCJ") }, + { XHDR("vx", "xvjeRf") }, + { XHDR("qsglcydop", "UgRbtbOCJfJCeOVrOmJUaCFRGRhBxKiFeEJFVhQrKBbJOkgIHfdmLGcXOHseF") }, + { XHDR("eukbhmj", "gBbEzSivWsURSbyHnrdzAbyhvFWRSBkhoPSJeeTwKMtw") }, + { XHDR("ansowkxcyqpcighjeurn", "iqJFVdopSAKnBN") }, + { XHDR("odtc", "sviWHCxEtBFEHqLzZ") }, + { XHDR("qxzbt", "ZQTNnCDUbYmnsTWxfMAiIK") }, + { XHDR("euleu", "Umgwr") }, + { XHDR("xlweniuhtwu", "pxBXbGuOBqQycgiREGRjhjucugjRoQDURULcOAj") }, + { XHDR("f", "cQJSzMDRbrPlQUyqVydpZxPQ") }, + { XHDR("mmynxmfkfylkjtajye", "hxxnsEd") }, + { XHDR("gqziunjfoahwvv", "PvfQiwhpNGFuZifoobqcCrHiEQwugFJZmMcpJcyiDNAqYhKcMivLtuqKbcHzLMnoTHDDZbSGmw") }, + { XHDR("d", "LBWKRJsYsK") }, + { XHDR("iuedifhovrbborlyxgyz", "wPdTEBXLDcFOkyQtQskwsCrXwaqwStIwTxhQGrXClsRgSQDCTRLoabXTVgiLcgtHFFUwpT") }, + { XHDR("ugj", "zhfqIiHxuzRfFMfxEoJ") }, + { XHDR("inuakodsor", "LHLWvkLcgqJTWnkknNkxNdYJkRttRxYbXBSgtqLvPVNbiQurtJKSCqh") }, + { XHDR("d", "aPeWvMBLhQdEALTCywbJLsZuOs") }, + { XHDR("deimhvrfw", "ZtXRFtTZTaiJgtibCSLOiISFEGIeCVVTuGeVStPFCHlxTU") }, + { XHDR("knmcdbrfjmnktktu", "KcgIoVmNfyAayvNKoxveWZfljdsskQOqLsIp") }, + { XHDR("sopbuvckhh", "gUEazvoniXHQderecSyLXpNlihUpWzltsbgHzRlaZdlwao") }, + { XHDR("jbyzomlwi", "HbZIUAvNOtKtUqfXFVXJseisBKdeovnAOsTnkZFvHVOqJVPjTWWQnclYaUdeOnbNXCjVQfZOwxwFY") }, + { XHDR("nbefstnxfxypkc", "qUGpcUOLOzVIcbBBfLdlhstCJyDleXeYNlWqahlopvwhgFJNeVSsqPXGlsiKFwyvvpUBl") }, + { XHDR("hqwocfdcugldqqn", "GGZYvJLwcPsriLNipnAOvw") }, + { XHDR("ggpbnliaozztenvigtbh", "PeKJheyZrZsIZhpAXiAOHvsnYzZGqIbBXZxXsEpRsq") }, + { XHDR("cjctzegiqpwhlfk", "qcMxzmHtLTIsLWIXwZznGNYgmuInESXKUdFFiPxNeNuNu") }, + { XHDR("piurjlgrazuoj", "ZgxjFllEtkmkMEDXcYznZyquQaWQgfoMJuXSSpZjeVdvQIbhOrvzUBqIvLMUDzY") }, + { XHDR("frdcmecbjd", "nRayPXxpeGYlmGGnlpIdpTsJqwgsiZ") }, + { XHDR("vejvrppy", "cvFPCKpBafsIsYgoROPhkZOvfdJHdbaacuzqZpkuPvtJZnWxLikBkdhVAJCVr") }, + { XHDR("zagbqlfmjpgpxfj", "UxuwmCUThLtjmVNezxLULlLVVzGFTSGlXXORAVHaUmbUNONHUucEVXhoRmGGsBehLSSvyJ") }, + { XHDR("ckntjjmjwzbpzxahmi", "lxvMzptCKswkgfDNLhoYwhHbzGymkUexXPenulIUITeWfzRsYcJwZPNoTFvSMzUENhpOcgbYTPSiuNv") }, + { XHDR("cegmy", "MofsXryXsFEM") }, + { XHDR("ugriv", "ULMifbanEUpHqfYfpVAbcDCCYEzeIGoUOQNxcqGfHaStn") }, + { XHDR("flj", "WzMhMMCXusPDXzBKjBrNxUfiXkHGyFWoIGMRiIXgOZSXWJciySOpUtWijBPNJ") }, + { XHDR("sygdhsqj", "BKXdMYoXUeacSVhhRPErpALukgwbUvTRIqspsmdrEar") }, + { XHDR("ijerxnfxify", "FZKnJoaxFtVasAUaSkzln") }, + { XHDR("bfnr", "HHeUZzLmiAqSlxqOmAZtARcJnYX") }, + { XHDR("v", "I") }, + { XHDR("slzgorbwhleuvf", "wjBGwRmJWdkGlckCKdiZDfTjRYLdFfSvVWuszPquSOwKhCOtiLKtnHgEwVXNwSYBaU") }, + { XHDR("dyqreodog", "lMxRaZGsYqgmZOFeytSThBdZBLtmOqJhaMhNeBizdYJNcARskpXKA") }, + { XHDR("xxygvgysodxxrpq", "guGxp") }, + { XHDR("tnnosd", "KQxQJRfrrbLZHvTqqPlxdDqwAgHMJCLzaHmvJsNpXMpVZUZnXOeMbqhotReThJXkmmuT") }, + { XHDR("gfhon", "SXZBbPHslApKCNIeHBXUTJaLJnAobghJOWWlpKWurMYFfCRdZpwTlklwcmlAEIwolEyhxAtlx") }, + { XHDR("n", "jsWwBsZoCXj") }, + { XHDR("f", "xSzEDbJtmBGZwgpjWwwNsaoCCqYAHANokRbowrBWDLuvfFyHYYCmDbpPhhxcO") }, + { XHDR("vksxibdrv", "tAgnLzGMghOvZtxRqKMR") }, + { XHDR("bbbdm", "wBdSuJJVOUR") }, + { XHDR("borklbghpvfptlym", "gqwFdOxjhTUGGEldmQaiWPdwyGUvDVFvNltUhgeybPxgygPGgSuPgmepGPZGHHPTQtoyUDOnvGO") }, + { XHDR("qbzpbqyvqxwefuhskpej", "VDubyFsNGenyfxKUNgvNjdiEIbLjXesVTNzEEngOttgNKsLvebqoSCqSeuUXNMcVgnZoU") }, + { XHDR("d", "TXLHCoInIkQyZRBnazCPOCrXIJXlwXjWjhAjGYiVvdSutPXXDNe") }, + { XHDR("lom", "LvGuMqprnfuABqdxv") }, + { XHDR("zpwjyydxokmkntaxibn", "SPmLMMfyKAoygjsaOlgPAhRTpkeIcPaYZoFzvhIdmDUXOjsPdbneHElRvIFw") }, + { XHDR("kotskilnmnxvjffdal", "mlhF") }, + { XHDR("ebkxohrz", "CPxfaloqGIvHeIECPHZSiowNLhzENdGjKFXvCnTBpdZEHOacKEurmTJCjYTujkRWEzsBudlN") }, + { XHDR("u", "erUsWQDqnyvGbWVAeLvfaKGJQiKJh") }, + { XHDR("lpzcrdjnyicomp", "NjTYBdKpCRkcvmUQwmFsXNsBrwFZzylnDuBzgFuZQrCLrywSiuEWLkhHclvshlYpAiOPjILQ") }, + { XHDR("gwptkldkvrawwgozsizy", "w") }, + { XHDR("bcdjwrfhkwp", "VYiV") }, + { XHDR("tvoe", "GJwJuYMKedjmCzdobBRdSzoTxkbjGaxZIELMFJiA") }, + { XHDR("lbcwnzjilshhgubt", "DlyisjQK") }, + { XHDR("bfmfquqklpbrsiiqzdd", "oMQWClWpdLEfdJHHFAAmiQuslBRhbpPRUNwBNgy") }, + { XHDR("mcrujzthahmoyuke", "jqFSxqGjFBdUzNsTHFyFsVTPBad") }, + { XHDR("rhgjavnxntyuposn", "vLQFGIDNclyvRSNnBuwDTFSokliRchZhQVNfjGTasMU") }, + { XHDR("wb", "HYSLZPKoxzO") }, + { XHDR("yu", "qlPgjVKIRevUMRRyTMuyZmOCkD") }, + { XHDR("amws", "XaGRjltsfrBsIZKuBVOYTKSdneTGDBEgZczulLeYhfFalVtKxGgJzBPwJL") }, + { XHDR("stsiohu", "WsTAHw") }, + { XHDR("i", "CrTkZoQBHQwpKVRjKgQiJPxQqjuLTRVzRfuuUzNhwsQyJZzhqqPrbzHvjwjUkVtrPPEXqv") }, + { XHDR("dwh", "EhvkuldDwIjapXpNApxjTN") }, + { XHDR("rjdnerjnktiulew", "Lp") }, + { XHDR("hryfzdhlsrpvlut", "FvaledTcqRZRjYzfEtnBcFeOTlkxLQmxKuruaIMrFOQHerF") }, + { XHDR("ccmibykgzkedvbdq", "ipOidedozSkyfGdcBRvGSrtnxUOprbbCsfTSPquYZhqApReFr") }, + { XHDR("rhskeknpapda", "ZLnkjlVxLcPYDSUAOeqkWnyAgVYEnUpTbCXHnFX") }, + { XHDR("kyavrakgwhcx", "QnhujuEGTvILSL") }, + { XHDR("obgtno", "pynjEPOQoxXzZtvBnXBbLdneFjPFDkVhlTfBwShBPufcyylGeMFFa") }, + { XHDR("enafvrqvptgtmtnpphou", "TmQZBNouFzCwOmfBqfbmpPzmFkLSFfmVPMw") }, + { XHDR("tvtxks", "vAzScgFwPergyMEkNGSqxBRQEIQdfZyyrlZrkRWwsy") }, + { XHDR("kiekrguitr", "wtPLWtEmMkdJuvuYsrNTxpfoLTEezXPbklbGqELrHztyTINpNXTShNtnrNcSiJR") }, + { XHDR("wmrcidddswcn", "mrXYaCRxriCuuVeB") }, + { XHDR("bhdidevcdwgjirmc", "nHehQqRRbCHUpgWZeCGYCOHnAmXgGmoQpo") }, + { XHDR("glvykulcclahzd", "xsS") }, + { XHDR("dybhbfrdbcatljwza", "fNZBSEXyYJsotZierhAhiYacyMrbsHVvfhIpHhFfg") }, + { XHDR("h", "anzWUeRpwLXkgXFNPsiaAvajB") }, + { XHDR("csjo", "JSHacsElpZIYSLSOxpLWWiExZiwwkGxmkVElGmhyyKT") }, + { XHDR("bqm", "MofOGHIARgLxhrOODqvHjZWEzgNxIbVCIJbbIEMmLowpJdCnCnpIHiiBhDxWcm") }, + { XHDR("e", "cXOoElLhWyobwbQVezbkiQnEN") }, + { XHDR("tmqvhyrmamhdzxrvyjll", "UtXVgGheuqFIJBblQIFHzKIqESvIsBmCujiXsvNeo") }, + { XHDR("jqvtxshvunvmbth", "ujRLuXzeADZfBevermdwQidnMSQtTITLdHssZaOCIxGmRzwyxVnDIwRyoyFFbHiIfKNOVlXYLmFbPQnW") }, + { XHDR("yfpbvwowsdmqirpttudl", "qnkvcLQcvkkvfvOTGsBDoQpzCZNIAgwWxSSuTDcEfblVBjjEOjUXFIfTtOCcdxdDNorJytr") }, + { XHDR("jmyghk", "BWyZLdWNHNfppAYlcnxGxzGUKwifYUlAiqmpCDVdVwBnbVvqmoizdpoAOYvYpEnzuTnEoZrWpNo") }, + { XHDR("yygjqxv", "dxbGHLztkieBiLFJtduqsGIymXuSeRmQYPuJFYAkYWjPeNzAtqYKkRU") }, + { XHDR("npqkmij", "LQcFFqFiacNIMKqclpuYVQeS") }, + { XHDR("dakouqxtlvlupqhbmxe", "tkEHJrHmTjsQakrnCyLENgXfxKPQPtUyrALtMpzVPJMwPkQJFlcLnGQZsKrdJjxU") }, + { XHDR("usgegvvnmiylpp", "bGEAQSveFdVlVyoOtFCQggTozyIBGAeleQRtvZehItfLbkgTGVMzlDIURgfKFBsiyfntvkBWk") }, + { XHDR("qzaornyzavqhrttyjvn", "qTAWYNJAljZEnxayDXobHxgQYDEoLXCnCiDzhLHabgsvXocGqvrHrgMOfSdqOQt") }, + { XHDR("i", "qNumgTeYuRzCKfsQpAVGK") }, + { XHDR("anodkdvkflmoxmo", "ATXKhnNHejVqLSrklNqbbiUuvqVcWGP") }, + { XHDR("zb", "KaoUmwnxgfBDsSaNOAJEALPRFKbXBpagKozpwdlyLuFDEUligfxhFXVI") }, + { XHDR("qxdndebohrarpdgbdkqr", "JEHzOIhdMeyNLWjHrLHQFhmXLLdMrPbVunRptlsSEqieRTBvbcmapqDFDHvRWXcUSPwMDzfDaVF") }, + { XHDR("gveymkalsi", "ebOSBLxRkxHjTiLw") }, + { XHDR("zjwyh", "EpziBtsyfyvktwxoZblqcOJSsoAEiRrLZigRHfTWzPPlXXZSLKrEMh") }, + { XHDR("vxxzxqktina", "ihynSWPmXgdFiclOCMRoHoUrnreqwKlcPvzcBgcGtPSgpyKSNIXVpvFnzLpYBYyqmHgGirnJHt") }, + { XHDR("posvekp", "rSDfwEvfWaGIlcQgD") }, + { XHDR("egmbllv", "EkSIfrNnoylIdhdGBjbngOfvPQVoCezHNnRLeBncyxHMWOhDcrTZeDgmkKFQhcdLBIQoHsqfPcsU") }, + { XHDR("qehjslxp", "lEQpSrPhRzOcnQJwDSknPBiHUcQeFJEqpxYrgdIngzRZGXluvspDvDmgFvUksb") }, + { XHDR("oreyucbgocrll", "PPiZYLSgUTZnAlRxfpawUwOghoXEMOODFeBPfCUQFBoYffPBwrYGIVejJvbnEiBpXbRQiGjbDk") }, + { XHDR("fmczqhjkpswfbbaolh", "JFingtSPHGOpmgLQnjnWSdENwsOZoiVqAawhgpJrxVbZLzweOUPux") }, + { XHDR("ws", "JeyPQtkkVeXSYBdGwqlZGuQcaSA") }, + { XHDR("pnxluficcjtudnydrh", "gvJiXYCVnEybricNfKnMjxkhIJxwQnFNrPKjSrseGWTmaMtokhqbXj") }, + { XHDR("ezurnf", "XrmUsz") }, + { XHDR("gnqmigqxeeoujsnmrzt", "dZgaSKCXLLf") }, + { XHDR("v", "QYilcTYysbfxvmNKLiXyqWBtgSYVEhkFRzYIkPcaqRaoM") }, + { XHDR("xygdcutpn", "qszRcBECTrDkBCZTmZGWUjwssTxTGokUYRDmbQjuZbnZGhODUgqZzldKFWwMDuiEGDKHBdquopli") }, + { XHDR("etycqycperpwqynvvsw", "NdwWsFWxvNGYAedgMVLxcTLSVCUSdcaktGRjClLjcpbMVgoQDQbAHTnUlWCpiCztpMmIzKW") }, + { XHDR("iowcgghbhjwpucsfs", "goAGxRiJjBCDbWSfweITIPtwJvJsXibwxfbOeZEvNJvFSnbzaFheyPWuSoeVDCulRFZJhvbq") }, + { XHDR("krcvywqoftbposmcx", "hzPlaPLCEp") }, + { XHDR("tsxicqbiycahroweemi", "kBDRkV") }, + { XHDR("vldlmbt", "SntjJAiYrsMBWOyikwERMDJDDP") }, + { XHDR("qwgtm", "zexlcqXReLxXaRueYfCTzs") }, + { XHDR("zrphmiphrzhsqfpy", "kgzJUGhVIOPkmeQsjYdVTpgYGkoLOKttUMTDRdhkG") }, + { XHDR("dvllsey", "SPgYTfFxViZbjDQVStxkaQJUOmPJstAMIfHlxeEIkwTTnUMRQQXJEpOiruvFmcZNC") }, + { XHDR("xeqdfmpheojmncjyf", "sRGEJNjhQPosxbJbQsFZnQOmGaFAiphdugjvowOIvlPNyfMsgEgwM") }, + { XHDR("rxf", "dNwGTOwbEPjGebWxjALHLkVMSWLDwZGBfKMKVrqUMIVKMqnUcmgOAbNcUHqyNEDpaxoIsHNQ") }, + { XHDR("giafgoxk", "HRzEEnqtkFldcWKTdhbTtEPwGlENxVHCDLJxvAQlnkBBUwFcehIIZultnKJfjXt") }, + { XHDR("xlzgqdqsufxk", "eYqoDqXuxFxnljomTDPaAHc") }, + { XHDR("yymhjzsphthsznfoewl", "Idbtp") }, + { XHDR("bvsjfajpbpbc", "znnTnDKTPQfwMmLQaGPLURVLIUEjQiRGzaXjqZFtKsX") }, + { XHDR("enrohjpjmgegcx", "QSuFVpwzIfyEeDhZRTzFFqeuyfZMkqXAEYebHKMTcfmUUKWyGQIcU") }, + { XHDR("smqolgmartxxzl", "BLroQzrQBmUdynKsYpcRxOVDYJGAgKoalzYEXkxljmU") }, + { XHDR("qnabfewvbqxiqipbkza", "BhBbjnhGORV") }, + { XHDR("sqtypehvbvexnptkks", "IqQbcoECICahPljTxOVwrLzSxjtDnDJDEFHxKXLdFFuvUnDwo") }, + { XHDR("euiyslsnsvanq", "mOgnUQyRfSs") }, + { XHDR("ioqasi", "wCrCxNVJjLvjvNYtbnqXryodcIjYFBFHTnLryXsWZAYwkMGTRUHEomyeeZRvfwgjEPH") }, + { XHDR("shug", "TzcTSleSaDFUgAcXIRBlKTGchAeitrVoAWlKNhsFowEorbVVSLRHgFZMopUSg") }, + { XHDR("ibu", "ZgqQZzZXqmtPeoKVpzDPBdjgeVwHvDeTXQP") }, + { XHDR("amgojbtoyhomsvhuylnz", "dtzFjiDECNcMfBZAzWnmcEOdGMmFOsmxscjYxa") }, + { XHDR("zopttjfyxvhgbanr", "yrdCHFoYWXsfUPuauJcFqeMvIJIVa") }, + { XHDR("f", "QuxJxvTyNuLHLakZnXPtvjQHcynjJw") }, + { XHDR("iyrxfnnnxlun", "oYyYJtiertFrnfEkcHnmvolnqeWIYwYNRctrUWTCVjeoKKTnjGadtFlJSfafDjXzM") }, + { XHDR("zsgdcoljhbgbq", "FDZFydrOjvTHAKUePLedfgJFKBFfmVzXFvObWFwJlOxU") }, + { XHDR("z", "zhlUUKNfrNJzegadzxSIMuNnkryNFYzohlYqQIko") }, + { XHDR("jottuqelgfu", "RFsGzpoAfDrLwunzXqtWRQsNnGXVMANuWDWRMqwQEZDPIaJUDZJyEhPeEnVpgxMdSuENJktckdcIH") }, + { XHDR("inweaz", "VftxbpboBnztUcuxd") }, + { XHDR("hw", "UfjCyyECVqbNTrqfeAiRINxcMfDQuQfAildAB") }, + { XHDR("kjigmarjdg", "gXuUbeGurorRNguvuhmNWiDoGmgSZsSaCZVeYOsyTXPeAOnGbLgfOkzhwCjVXbyed") }, + { XHDR("qdffdrkzbmbs", "TJssMypQNKTVzcgQCBcNcIbxNlnSZIvLwRaiVRjNhBTeMxY") }, + { XHDR("p", "SCwbkxSldVgsayyhsMxYTiNbPkYodiaGJxAheLz") }, + { XHDR("vks", "FLjoLPnuwxqQhweoUkBlKPspdGsXWr") }, + { XHDR("nhpfazgd", "kyeRQRpJNzVpYpXMrWgGAoEiWi") }, + { XHDR("mkssroxhjcjdaj", "rGKqWWODzYSeGhHRrZnXRFQdicITNbyJhgVrtQKJUkKoduHfRWUCZRQdNmjQeYoB") }, + { XHDR("shjpa", "uCLkucacFRNqsWfxqCqlnOQMcvGQgCPfYXzmZqzHLbLQS") }, + { XHDR("zgadecegqugokrj", "QzBLCsKHQZYqAUPHOruExZSXtvGNvXKuKWjZmyqzOPWuALgUkeCUliXvwxWvFvagAn") }, + { XHDR("hiwibcvznryyanvwe", "SIpqMWAEsVM") }, + { XHDR("kyatmatvzconcyagd", "eOUhEEzJwuyQLQdNsADPlMvgGeVZTrPOnybmWfQLvxdRnzqNlcsuqwVuEAsgBTOTGlbijrNTjs") }, + { XHDR("jiicarc", "AwcplhwUlHVtLLHqCOZqfXvzGKyejIaMRxFXfkDZD") }, + { XHDR("czzkbqlxa", "UQeuRGKlpMZnNFCDWwNVizBBlKODPEjwZeeXwqnIktXGeeKEZkxcmcZfEyHEP") }, + { XHDR("uezramgubkoyymjmd", "GstaJdfXYp") }, + { XHDR("orgzibkloenfjvvuxw", "IMxhmHbpXFoKqcfjppdOBgGeqBFXOnJdEqnh") }, + { XHDR("sbemszerpl", "oWEuScWllSyNWBAMOexpRyzUeUBHYYALEtNxEsfMLYmnvUABRQpUzmruDyvgpKTZUaJHpEOmuY") }, + { XHDR("n", "gXWhTDQyEBtEOxBcaCANWECWSRfnurTobJzDJdyRJgojuNLFvOXoJAGic") }, + { XHDR("borpklcpqralrnf", "tzvIrJZAVvwyzNdEWesKLjdvAEdqyBIVMefFrTFjpcraAt") }, + { XHDR("kw", "kJkSpDqrbOdE") }, + { XHDR("joxepw", "rUEGofLFPOhlSdwHVdaXKcGwiVXaiIshFOjSJtXooEFzprKEGjuULEVHpkwYwSPsDVGHVUueZYsw") }, + { XHDR("bzqs", "prrzqENgDjljwmgpYpAdsBSPbNIqZhPrAOpdwzHl") }, + { XHDR("vcygn", "uYUiluZIRMJFkMIGKMErzxKXprroOmgTJtYBoGqbISYbrKIWLdFcIYFihlkWGAI") }, + { XHDR("fp", "KaDyjlgHYGppexqDBcyhObhKjGvDflFXFBYKauSIaTIqukcLjSiNBKwFikpRmdXKXroJUEnuQ") }, + { XHDR("yhorkuehwgqxy", "yFRbNZgukAdqefLcrC") }, + { XHDR("uh", "qAzbToEPNrkXpxVhgOeBgyKGyHpeCsopvTsBNgljsqqfbMFKnvdlxofCfoeUCUj") }, + { XHDR("mxmwffrfv", "VqbzqZmVusXyljwScFNWHDLXy") }, + { XHDR("ugjiruiuendto", "grepbgmTogUFNqQpucbUMpGAGbDIJaKDNDfsZoqWACSiFizFlzhVibneQjMovDhKKR") }, + { XHDR("rgcnosn", "hZSjjbpzb") }, + { XHDR("piwna", "hF") }, + { XHDR("jbcwsafeumuuk", "QLLVMSLsofTZZnziNXeHXRXjJpITtaJCorDImYeTOQFsEfwA") }, + { XHDR("pedxdewhddnhbdgw", "jmgnKsKgPXEIfwrUraAMJBpBEjdvxlNgJNXVSLTPIfbpTfFZBVDoUDIYPlykYssDK") }, + { XHDR("lrbfekjurstueo", "WzF") }, + { XHDR("cwjjinbxymcxdk", "YYgVsDxjQvHhUTEBQxEzgnUqkqDJBcFRVStywqnrOiLspiFLvvxbRfLkXeYbHemwvjDoZnqVIVJeVS") }, + { XHDR("ohdmbucuonrtnqdhhl", "nIgRVlTEAkqEIEYIipAmAnoZESqISDbjaMZxuTJcviHbVWAaKfIQpBeaJhFDFDMqD") }, + { XHDR("czlinmainisnjaw", "PivCVJbNriPfEJOMWbpAbvtcIEOdZxVenVlNkNIGSyYriMvKfFqvrxCaCxsSJ") }, + { XHDR("sckbcgp", "DdOVwfpRKsRuuhiuaSHOGrOheEjPUfdiQUiiuXPoTAn") }, + { XHDR("xlmxctgphd", "QtYzczSuPLihWsnAsoFHLeotMYzuECxyhkg") }, + { XHDR("nqvfupyqicidlkm", "wsqdvVZRyutKkAIhHCBtvtbLftUEGfbcxcdKMPoYxHOyeAHnvYXTOIIr") }, + { XHDR("wdtcnuagxx", "BAeMSYwRXZDhAVPjnBdlOrfjmGBwZZWYsLPenoDZ") }, + { XHDR("lzilex", "AjjpIktQMfczaEeDqxmWbrPkClCEXvUzTWdErxmFHbxmPAI") }, + { XHDR("rwsfk", "woYFrgGgukPjEnfCkxRTVMCUOhsNxluSgZSOaRWkkORjDiiOBFkzRvAozjfusJ") }, + { XHDR("djsqkgly", "sBKmEqXqBSaSOovqtJSPitKzlSSBvuUZLslaraWXbksGejvvInAvYwziqRTqvsJ") }, + { XHDR("xngb", "LZnVbHHlKINvZTAaZYsZxydVjVpIIrSnFZmSXfgLgridCoEURRAtNnfOURZazxhmdoIelpQX") }, + { XHDR("agp", "GQQuFOaVPqCVjcvQCHlFeKAvLQxvwPnkwsynFdmZOn") }, + { XHDR("iavpirprzoc", "hxxcgyRyPiARhMtWSyxrVIxCtGQCYqMHNMNCpELIaAkKzSy") }, + { XHDR("rdjucsnfdrv", "ixrrjLYqTGJuUkajuZGBupZUYZetwaFyypSZOhMrXPWXpyvOdkSuQK") }, + { XHDR("bwfh", "THhcMzeheglfApOBEnRERmsLHllhFIlCOIGXdLFzaUXgvWJUaaP") }, + { XHDR("rftlafckzfwlzxsfanbf", "KMiQVQZPeTvIQTYmyRqCxuUETHIYWUMpEbhUMqkZaQNvRwn") }, + { XHDR("kcnnqnzvtugqzdnsyr", "dffxOjoOWWcTnVPorfnGfBHsJXvMrwfardzRJuZdHIlXoHsEAUJ") }, + { XHDR("mpzolafzwxdodnxrq", "shdlMewPyVwmNOJAeqtKxLMAshgrCuVYzbnWZssGAZPOspJshTdRVrQDUCzhldrZQZJ") }, + { XHDR("trcdboarmgwxnwvt", "tikLMgqgRbSXLCtSjskbZRmNpqbJKnjSeIsIKwLGJv") }, + { XHDR("ohefclbkmtdfokaenvrq", "pNXONXbiyiQGrNmWYkQCLQ") }, + { XHDR("owarezyttregr", "zqkdWOWmsIcyNUSrvihFuPkgiJNITkYkzeZhYgKydGnMSntiIForEn") }, + { XHDR("todmxtjfpzkoljgnqb", "efmoyInkIQZFiVeVmhaEfRKfJMsCYNNvPcoxvOLoRKRgXabouPw") }, + { XHDR("nf", "TPJeLblWhYwVIrbiMnAqlcISeRdYzZQFzSSHCEOGkLmjzcwCsKEJcdXs") }, + { XHDR("ysjuyyfvrxjgsbaoz", "HcmFLcdLqPyBjEVVsKuXAtvMTRobF") }, + { XHDR("tbuwwwqzhljg", "rzRsJzAwj") }, + { XHDR("obtgxdjjitpusj", "dMccrDDadiIXkspUHRPFyeHwQGCDTlbZrGDMAleJCUObIwjuoQGJpRCuRonhqntORIgdfq") }, + { XHDR("bzqgzmn", "KSAtXaYNPIMtUiLtOuPMEpWSLHyXUnwTbHHrsAwmk") }, + { XHDR("tyjhuotfczezhgonhsn", "kmQEhctrscOnFTJPzdYPOorUYzudEHNfisL") }, + { XHDR("gjpjeijxx", "yZnfDmmszZKDIePkRGTtWmLkBaTtUeyVzOIahrScnTWEZQHdOANjFiyeTBnHAHHkrPRCGRLtXDUtaTcQ") }, + { XHDR("jtyjhtnngxzbijspb", "aUnddyUMWDtvUBDXALkhzDQxTbYbejsT") }, + { XHDR("tklrfquc", "GoUAEaQdWlekvjsJwrQ") }, + { XHDR("mvqtjhuydzdeakdl", "vcOnaQxawxLdkXKvyNCjWJonfzbWaRjEJVuovEp") }, + { XHDR("z", "tBCHYssnWrcUGOqARbSDqIrAaZXbfscmsNXBbrytlakmdFSuGvPrMeMxrzPHYdqEnmxOsgiwQ") }, + { XHDR("xwxdyitbucnqdww", "QdaeaYhx") }, + { XHDR("odzui", "VcaNr") }, + { XHDR("hqdrnmtbgurrioy", "fIYSYpKKlcxjszqVlooVHjYuplEPIZDKomSFMEiVJybHLaVwUHsvrdldwgBpS") }, + { XHDR("uvnrzfgvadmoewvmdxa", "kUETwyiBTYtKOsTxHyyamWcmW") }, + { XHDR("unrtlszqmokuxsfhcttz", "ngBzpckEyIrEFS") }, + { XHDR("jnf", "ZSiPtpOoRCcvgmESJdCHYFZoMgSC") }, + { XHDR("foemola", "lqkVajtJIUQBbeISwROFJvFwOlgAvMWaEiApMafIXPbGpVXyvhHnozVuqYahVRbyMBSJqtwYAZutT") }, + { XHDR("srjr", "hqBVSShDmLeNlSbOvESxwnsdKfQLmqRedmqHjHOrcBOqzfwflQAaecfSiSb") }, + { XHDR("wldslwlmlzbjvbuwrq", "aniQmYVZMnUQMayjEwnFUhXtqrvt") }, + { XHDR("g", "UClyIrvcrKhHihLBdyWwtSSTNBMvejFseXGfQzOMpIwxgRnEABcwRJXXDJRwLuGlxpkqiUDVPNudyKvc") }, + { XHDR("qtmucectm", "vEJP") }, + { XHDR("gaibegptltdb", "lYiaxWQxkCuiIdfxLsUPjELoiKbCFCPxftWXch") }, + { XHDR("vw", "voPvLZFdxKpVfCDbXaHLTBqXaJTzOUevBwngEIsbl") }, + { XHDR("mndeluluqxhn", "PqQeWjvhMOhNTTsPxvgcVoTt") }, + { XHDR("uyjzjxcye", "CTMSphWELAOkkaKzIaXwTBwdOxNcpfODVfsoHEXtWIrr") }, + { XHDR("onhuw", "IgMtjgCTmlUZpRDbVSjGNmDTXDe") }, + { XHDR("qioazlf", "BrecvbqJlUjhrbQjOlKhdWcBLhcpip") }, + { XHDR("rstwcklteunb", "mkWjcSPWHXQUTwdskttolUOdKqysCXlrxgJgthrGDbIJuNlwYcHPjSTxJpEjteQDECayXKLT") }, + { XHDR("reltbthzksdxtswz", "xRJyEyUJozzoNBsddbOwUTyxfGgHIGP") }, + { XHDR("gxkqfmbpqv", "wRGPUFOgWBrJBUcOgvgcOWNYKSHodMYWSEshJqCKNASELXPPMGXNfZC") }, + { XHDR("wdspmdkauc", "yjufkoDbpwLAzwLFrHJxbmfwEtFwxyOPbuhhgcWYMXQSrbHvDFjGHxWdwATvcAsh") }, + { XHDR("vqslrkijsojnexn", "qeqdQoqMOzmFoMGJKVcuMoBdYTUTvBNUVPTEgKokVjUaxgaB") }, + { XHDR("shihdbld", "mUmZEscTzAxbdiadcEpJMdwADAXV") }, + { XHDR("xg", "qxKJKGhCbltECzZbJCmHWXeYenuAZonYCGIoaIIiLRFCFLljFFWpyhtSYUqNnGnURWLdjoUZUDOX") }, + { XHDR("sdjxocuqvjzqbgwqnm", "MaOPsZRKyERTZSfmapTAgXbrLmmQWpfAHyPsfdCwKCChwoBkOuAHlobguPnY") }, + { XHDR("ktdmr", "hYYFvtNDsLbf") }, + { XHDR("ygnpzrnvfdwznapxuotg", "XafE") }, + { XHDR("witovqpgnbovjfzpmwk", "CtfpqQFjkfPweqlwZnUftmuJvnaUSPwtLTIFBPPYEvtyvw") }, + { XHDR("urca", "wJUlKjIQKAKBCbFpXvzsdAKxXdGMOucEBEbqhQJwhqj") }, + { XHDR("augzexahmbxujwzdxz", "GiSQzDqYMnFdZjdEkapUxdDVK") }, + { XHDR("swhvxlen", "zZhIhWcb") }, + { XHDR("hyhsii", "oBzkAsKzgBFoTeSxpcb") }, + { XHDR("lrlqzxcj", "oRqXlgWtnl") }, + { XHDR("iuovyjebbmm", "zBLXAyTysLFsmOdVhRqakCTaCDDhWVpJvAMyppusPLCUxbXKOgUSZrSuStyMCzpjvrT") }, + { XHDR("gwtepbciirkb", "UiEfoXkTeUZWVGnJhaSOfokUffuqMcwDXKXghSEdUFoMaYHlWImMtcizemIDUzyW") }, + { XHDR("rzrgxltd", "NIai") }, + { XHDR("nyoptgefedgwdexyjv", "jtHjNcpIDPSrZWtOyShonDfgqTPNRgJTcyEaan") }, + { XHDR("wpepejeqkxaznioeevbr", "sttZWxiWSpzjTdmkyPlTXUmvUeFRNmBhARIAidcdbz") }, + { XHDR("ujsztpjnzofxq", "SxkKjNzLcOMsnccvayamnWnuXegvwsfWUnDeFUPYBTYlMplkcSbbHcHlFchEcgRycZUYfvLhWhBoDzj") }, + { XHDR("asgfzptuhbzip", "mN") }, + { XHDR("qfjblnw", "dTuSWQuOSkRoTTcsqXykmMmHBLDeAUCRSsviJKRXMfnCVBaheJOBYDhAnJeWKeqPS") }, + { XHDR("r", "vTRwGDcOJZCzOhlBrOrBSZLlvkHP") }, + { XHDR("txrcm", "HSZOxWHGMpWyd") }, + { XHDR("cmadjfcycrh", "CqcatrpoQOkXiyNjZyHBEGGjVIqdRLKfSUIjpJNcQDJBjtT") }, + { XHDR("cwzf", "cmiaeIsmSdUMzyli") }, + { XHDR("jmfqvzwdpudnfdinzi", "bjcfGjIHKyaWXOqEVXsJCuQhxpPlHlAUASlLGqCNzDkHuorbOvEErACTyCWUHNlJueNJcOCBThQ") }, + { XHDR("gyqtriukywvixuvfztp", "QHaBlUP") }, + { XHDR("vdlmq", "yeJatHCJIPTweoTRlfcxXgcpjjInhfgC") }, + { XHDR("vcnzvb", "XxXBWRvCiIzkrTFLUdGixzeowpHSeIupvQHZIUqhWFdWAJPtpTR") }, + { XHDR("gaszfleysvbygx", "nMdyiJHPyePiyDQyHQgwpnDUzDQpXeJwKVoyIMtJHwqEATWAuKTNRiPtyDLrNRA") }, + { XHDR("bvhbgopdyyukouaqw", "LtzEQSnIrrnqjIWzixoNvNEgXgffhAEkvRoCEKpiYUicHAGtBvS") }, + { XHDR("tstcrydvgskzlpljcaxo", "ogDrDdlstgKbHyPeaQRGMPpyTFtQWEmmIoZlLYyQvtYlSrFOezxaWbjkiXbaxXHXlqVaLdNIY") }, + { XHDR("elhtbz", "neRV") }, + { XHDR("resqbapcpes", "LuJMDDJfWpAQiYqOIelzSVWrDywSNmfre") }, + { XHDR("ftkvxydltst", "BUUXBXmmUjMhnhzdwshvRkkRcSREIivhRKdjBAmQCVVhY") }, + { XHDR("rsvihtegqvm", "DPOskubftoeaZxublinjkEmhXVtWiyYqevMBxXYNUGXmdcsIq") }, + { XHDR("y", "xRuULWxofVIwLanvJApEgkEGLBcAnuWERYlVNlZeOjyKfDNJmmpDlCObTAqba") }, + { XHDR("oaomozhxvkwococo", "APCVdLgjpcXZDMixjIrsWvVZcn") }, + { XHDR("tdldfbgtf", "fYNipIGKRcfrcmfCuVeLKeTNdvc") }, + { XHDR("rkdgqiparqwlxqqswgvn", "OykDdHRbegtVYcoipQJFstLlrJrUbWmtTZBJSwaWDXfUYVglVkkpfXNV") }, + { XHDR("qdsh", "QxOUfqJzakKTQMVjegUMDzfKJe") }, + { XHDR("nhhaotpwxdnuppuoj", "SoThiOQoCLqauvBwPncii") }, + { XHDR("oxkxixlbppywl", "XevhcBcttJwCbyyBfegNBUCqLzsjMKHbXBbRjrmkGyONRJvSVfmlsurfkkRvDACpVscMgWKA") }, + { XHDR("jejpzfebymaedp", "xIRWsndDNqwGiYJMIknGMDmANmjvuqH") }, + { XHDR("qzszob", "qhJSBSuGMTCembaNyTqXBGYyhZnmEw") }, + { XHDR("dctorjldhjmseolwok", "kWn") }, + { XHDR("qw", "OiQXOYCYmmQMvRubDRTaBBGpIkKUoKFNDEPViSaouqdShzBVKcPQOQGjMMwYJmlYIXKFbnC") }, + { XHDR("srdc", "AGeligyegCvXcAhwaIGQNzOWKNWb") }, + { XHDR("ondol", "BrbeMNsTvMxJhyRu") }, + { XHDR("oxglgpoib", "lwKyoSfpuKPuNICVVPTdKlJrqqjtKJUVlzxpQ") }, + { XHDR("qd", "GqlCsiQnZSPiKCTeUFjFaBtYfIsCSLYpAaNrrjHdgFEyM") }, + { XHDR("dscesmv", "EQ") }, + { XHDR("nlpnhyuwhihfvrf", "GGvPgIRYdTGsKyhqMeQjrpavKmJJALWQzJ") }, + { XHDR("ifdzfjcz", "WgacpKeyJrnqQCUDjAPgMFZdOjATZFFYnLheUhvHVQIbyUouEVMOWfrsgIXYYSc") }, + { XHDR("kdidvvgeuoirapw", "fPkNajgNKtDxnCOAPEDvrkXDwxQTcTydMtuADPHBxEhIgiDFFOsEJgWrrIYsA") }, + { XHDR("m", "DFKHCpygNjCAAnSiPncSBVsHCIaQazAEDBszTWcbYeRzJPvkHksTfXPIhHbGAl") }, + { XHDR("syiktlljvebiyzs", "mswzsnYfcHdoPQnUBhlUKRqjpMfrpxiRtTPXcGbyyRkgRdw") }, + { XHDR("kxv", "ZlwLOVijxLvYncwvkmxPNX") }, + { XHDR("mv", "AVbAjCDZZZAGMUjJbn") }, + { XHDR("yynxvvr", "xTDZZE") }, + { XHDR("vdtcmxhrgknn", "wWzdkCFrEmYncZeLoYxNw") }, + { XHDR("ykcphajdyfhc", "xfPUJAqXOAzXHGmOmiivLRPuZIgzwKuJskGbXaVfqDipxhMhkrcrIFQmEuKlZkULsEeYIwy") }, + { XHDR("letrqrrhmtv", "BrIxtSNliSxHplUakNPVhgEbYXDFjFLCQugKcdwiDPXpoBbwibQeSjZFDUaBfmwgCPXPEQH") }, + { XHDR("ejmdjed", "mnjVOABjDCkdFbINXPZWOKDnNOVVJyLAuKwgIBjnnfEkdq") }, + { XHDR("jkxeh", "trHIzxUCQLfEGXjH") }, + { XHDR("hzjgf", "CCEBTRvRzcZEVhSPXNoMOrHoILaaCgWCovAEENxnRkNhwdGEMkP") }, + { XHDR("opuwddd", "SLASwlMLnuCEYCyzrogpGgZaasCujKWLyaeTncZGAGnGm") }, + { XHDR("mjkv", "iCvBphyQjmjiiuGylFyXKZRYbgZuoUBQqIu") }, + { XHDR("ebexkekjkjcetydr", "BKvwehVTluZNfsyYXRPDWkYEsityhGkPmftmcgTnLVEWcIYBsZBOrVOLeSQP") }, + { XHDR("taeolckfvanzweidto", "FaNRMNxgksLdNDhZuYtvARbWkmCoDAiRCgDShpTxCDPrqweeJXSzybSEXAqaUcqyjhmBfhEICl") }, + { XHDR("lldwbygvfnbanqkkyaab", "RFRFBlSUgdpVKXulQibEjkVctXFLIYwtcAQOSnVqUOJRLuafVMiIJxxKUzoh") }, + { XHDR("klmjzm", "AdVmkutGYkRE") }, + { XHDR("dzcqcp", "EzQnaEeKTYzOATprz") }, + { XHDR("qogmq", "VWdNCbrGRAILoNhiw") }, + { XHDR("xncrvnmxcvonbzky", "WBxJobttRpWLmXK") }, + { XHDR("ua", "WuGqhijBQucBnmRmxfGvnJBVWiwpknplMTyBfOTbKswEeGVEdPifonL") }, + { XHDR("ojelzcjbvzrvsml", "DgvRFrNlshTYSzrVdZZIUpYqRlYlGEDgOwxLKECgCnsQZmYajLvViAsSSPvQwpucjAkJqKZBN") }, + { XHDR("ffmbbvnpgshjqh", "VaAVRqAGzCJezYZyuaUAVngjwwRnOPIAtORAPWHHmDzBbRUDELKonKlXSqUpY") }, + { XHDR("qsidwotuoq", "RALCfZszVZSCxUXcocxSJQSznEIyYdVsNykYImgTBInbTmKNCTqChgnoAIITDKCxozM") }, + { XHDR("xpjteiec", "YBInkbXyrrdIWyLRSOjyigiFXUmDiTnKsWe") }, + { XHDR("krpxajr", "eFdoiztHSMlliNGIWcUwEQjoGLhSzTInAqhwncIsjtHxshMmkrtozJQfwhTejvl") }, + { XHDR("gmyflqneicfatsdmop", "NxIERNWV") }, + { XHDR("lbft", "Pci") }, + { XHDR("lzisvtddupucci", "TxRlpjCKCSJpVaSjKXpWEgESPmroZFpnTiGoQsZcHwIRaApStCYUgmnPwgOrXEfqrfMMqsv") }, + { XHDR("dwmkrwgkmdmc", "RBzZpYFLagepqLwNLpgDcqaaS") }, + { XHDR("ipnvsxze", "RAJba") }, + { XHDR("cokqibgvwbqpkzaldezd", "XcqBzAYcmQZWERQfqyUtpLIHUfwJESxoQLHEBkeJHjmHzdssnNaOxIk") }, + { XHDR("ndlcxptnaw", "twxnNwMltoqiljjbQeKiIPPqimWTefH") }, + { XHDR("xmpppmfgdaahrpb", "HrVUFqjQphfZNqkhfNXLKXxzrauYvQireiviuUwRgTmESjulQHZGgyoayuJvlEJvdyNOyGuGGpVOxq") }, + { XHDR("aqodr", "CwmWwYHMfKHCpIrsCQAlIwKkGbYFehatmWxvtZOaMkYfzrVIfJyxBVvqiDrSjqMDYqFOKS") }, + { XHDR("nkg", "RuhTieopSDOCcTM") }, + { XHDR("rvodqstrxxqwaommy", "YCT") }, + { XHDR("sz", "kixjZcbujivEepsAzOaetMYmXKjAJQWMiEfZYLvCLvHgnFecmktEm") }, + { XHDR("evddrxfmisw", "JrptUcMXJbhnyAgxWJOIZHCHZsHFNKIYHdNBTpn") }, + { XHDR("zzgeavvxuqanpcf", "cQ") }, + { XHDR("ayvxcaecruthwrdpiyd", "afhxCvzTGApJMDNgPEGhBehqWEmDBAiJIyMqUXKLDjZne") }, + { XHDR("bccrszxxen", "ErLHpcGOiEvwvdJwWtQgSwcbLJOIUdexeLlEBfkWEGVjRJKWvstBHFKefnsX") }, + { XHDR("o", "iykdtBAXfpDkjSgnqmQgNpqfbEnSyPMkbvhBGfVfzDPdOC") }, + { XHDR("bnpfkahmybdybnkjrfxd", "nJvhACKjnYDZuitemsYiyhhkqNumXVkWXfsvnHzYUpyAIwoVdEqWesNe") }, + { XHDR("tsec", "tnxWeSlwDeCYzmp") }, + { XHDR("wsrtdmeth", "SuWqiUlGIyIauQvezisdtNBXCjKpUQkWPaXyWgKmwgySMOSNKnGxnjfriBP") }, + { XHDR("gsislmctbnqll", "RdamcIITHkCoOyIlYTKIQraaBuLQtKCYDdQMMnxIIDjWmxlIvxaRY") }, + { XHDR("stn", "qRIMjRrDnZltlKN") }, + { XHDR("fsnpiaewhonv", "qnzdzMpctlOFoFgpUkCkrDZ") }, + { XHDR("funmjwzoormatzlguki", "ZPlvFyWtDwDTAspttqyURMgurRSkgedgIQSDzLqpEJKvsWTas") }, + { XHDR("obbahanqzd", "JtGpMKfHcHobGgioCTnOQzodrdXbgmGPYBSoaNxMVRrQWhthgUQlmBIBFIuqAiepLElyvkZJJtagOz") }, + { XHDR("rhoshvia", "BWthovcQokLRuZDdiyjVwztbBOESxoqiaeTddvSvAbnsdIlpieJZDbZdFWbpLOfuPaFUp") }, + { XHDR("uosndyoczsglzkpmyy", "MsVIRlJgUHnSRtWRs") }, + { XHDR("gbkwpsvamtwaj", "gxkTqX") }, + { XHDR("tcbvp", "VJGsbXRbeyZFdgGzTpPEmDQEOmPjawqWsebQK") }, + { XHDR("rir", "BLLFksqebHXHYaAyZiTbksCFFvoyxcZXrJwTeYhaprMJxrtSLXLsgtaPlG") }, + { XHDR("wkvkwdi", "tQwCXQyksHHsbxbQAvVLdIDTLXJNGhDyaXDhefTilmdCVapIkiOazevJMsXzfnabAAiNuwkrUyZZbmgV") }, + { XHDR("reohsynqwjzmtfzmpipj", "dtSHikdfTSNPLt") }, + { XHDR("kpc", "tZWKzkBsXfqshBMQProjdYNILkGvpMZLPioKMfNPzMSePYQVTIZtPyN") }, + { XHDR("zr", "qBwRwGcSewNgqNPLTDohnPGZKiVOSIiW") }, + { XHDR("xidbrdzmmtp", "COpQTvJBiUmFGbNjZeqbemgHtBlAEDZZljHXqwfKRCIeODai") }, + { XHDR("zggneqzwvercdgta", "gkEKwagqQSyQYmqWOmridzVIXouMazqcqICHxYZeSyVGVrcbYHXsQmcwLICncETVExEJCDEEzvwPkOf") }, + { XHDR("yisyjxznwiqlhiygwznp", "EbltfnaydoTxBF") }, + { XHDR("dzlzlkwuwkuhqk", "YAexZqUUrnpzuPBcmigdWgHfsLouovGgQciqTZbzcJsvhRepiJoaTqBRyZTXRdOkCay") }, + { XHDR("ycthzcnbpdrqhtcnlvvc", "JuexItHiOsrlofHghOGIXmzowjPmacHhjqjHEvsxvQhZlTKxxgxOXpYnqrrNSxpqNCPHLIdPUOeeNlZ") }, + { XHDR("morzodfp", "oCohQtdOrAWsikSGpAIkBNscNxAIDTjFoqEtuYzFWPzzHPeWneHpOSRSUypJEXVgrUvGtmHNzduLOO") }, + { XHDR("sdasri", "ILSFprbztHXXaMKPpMPNkLkoFMyuzHwXNFvyNKBoMaNdCmPshilKEhzpfgByknODHYSuAP") }, + { XHDR("yahtl", "nQmgDAvTiPvsMITOvcQbHlLi") }, + { XHDR("zzngrv", "kTieuKQPxAOBzNBpexQphMWbhSqgMscFIEVBPZLdQCnc") }, + { XHDR("vmizdgywrbgcx", "bAgDyPOmQFLMonIQpVdTsSbOQwsnkQMfPMOBEbxHuYogEGAaT") }, + { XHDR("jul", "AP") }, + { XHDR("e", "fhIDGKlbjurRvwudWJOvNipXXRv") }, + { XHDR("gkapjnf", "PVjBwOKRCBoyeFnokqpaLAWEYJBVbuqJlbrEqSpzXSQURNIZVuDbohNMlXulcsdfCExclVJRxqH") }, + { XHDR("vmufpjqqrwqitfmi", "TnenIgIkeRLikCCKosVkypzOzYGHVtSKjKEjNdUodjgENeTbCnMxGZYbFOKCIooqrnznEyaOJxxitrD") }, + { XHDR("zfvitkgcxxjbxsneb", "dYfdJGyxizIpKKDPc") }, + { XHDR("bwdlveit", "atSOUQSEkTJdSyYaKSblFvROZgfkBIQoFrfSIcVYBnaJOBjk") }, + { XHDR("liyriwlj", "WmIWnXv") }, + { XHDR("ruayyrtoqpviywmhs", "hQBJTzXldmUGbvlYWAZOtmdeUKAEe") }, + { XHDR("w", "EscRAaFDLpkVwSxsSmrxvaknSafqoniUG") }, + { XHDR("fshgdefohtkjdhhu", "JrJayyTWeZbJwBbfBWBobMAONLFYUgnpyOfRGlMCTqbrJkDjewNkByfIzPMUlLTTmwcmXWltpiL") }, + { XHDR("rvcncwhxj", "LgWMppmYa") }, + { XHDR("wsulfbrephdwohir", "XlnBvhICKVEuTkRHrvxjDkrDZKCjeIZOYewoyFXlkmWRWFBi") }, + { XHDR("wgyrchabfcdspjk", "NcPmvjqns") }, + { XHDR("icnzozxjqrvnl", "LhhuYuwqlQJQrckKsAuEqKvLdOMsZIsypCYmWntxubFXfDkKwqqRLuSbOdEQeVonYOl") }, + { XHDR("lhkbxezqxgetmqqhby", "ACohJEoNyJWvwfDgjDDXPmUpPJuLpoZgpCazmaK") }, + { XHDR("rflgow", "YkuuvzibWfkTnGpvbaeAaIyHYHSkNYitPeaRUaLbkfmsnvQEfgeTHsiBfYFbDiuiAWyBzQzED") }, + { XHDR("sdtjdtjpgzxhbreru", "SrCjcNWghrPgRF") }, + { XHDR("wcdqtrgvtrrohb", "JyJzEhetvftqOxymuE") }, + { XHDR("yjxvzflfhiluneqsvuz", "MykUjCfIpgEtQbcPZCcIQuMMgavztzXHcwIJOkGAIcfEqCdBn") }, + { XHDR("gpzfmlxas", "jKkOlnfWSSChsBPNieovMwIlLCywxDMqeWuTpdvxqEp") }, + { XHDR("nylkgjjqwsskelaycdg", "ekFRbrdaYwPtqkzgGnmzpjGxpGZwfqmRdw") }, + { XHDR("xkvcchbeinsiafv", "YxTinNk") }, + { XHDR("mhvwpjovquk", "vpjpaGJqTsgttRBDbyukxJrz") }, + { XHDR("hjtltoutur", "MEttbLMevfEZla") }, + { XHDR("wzubmqveqjedrltl", "xvNYzTlRExLsxt") }, + { XHDR("dihrywqacjorykanfl", "IpjycKKfLaDUYpSCDlnuMxaNKLwyTrqzNrDkWyEzCYakClDvtMjkjbmNCxYOIACLvRnitxIzYyFfxccp") }, + { XHDR("yikvondr", "lKvbbFifdcQUYizvVmNTtcFqhWDRPrPfsoVCrflPiXsBWNNOSQwrdGpmPK") }, + { XHDR("qmoqigqmqat", "wPrgXJjldNixvOBzitrFixyRmcoaiKAbXepc") }, + { XHDR("k", "vTdgZtyFZABjSaXCyOzggBTjOYmdBmKZrkfGYDBwhsAlxjjLqsUMOieaQgZXoRkIBbFLECvZLsCVHV") }, + { XHDR("cpsybx", "MQedxqheQXoLwereufNSZBWSUowqTdCsSOuFgfnyAVyD") }, + { XHDR("usbwdkkyprlgerdmvfb", "kTsuxRIJUDjrSFcSxyYpmrkppvygCQNuAMLbMDDYqofoxONZTZJFnRmOxZwTKkctEssvN") }, + { XHDR("nypgtvckjbalg", "xdIdduYgtrfPbuNDtlhMqNYXI") }, + { XHDR("wobkzisqjwtng", "mZtCdBFZjGnmIPEoYEGarzrcLNVkNvtjIpCHlfcrTcDtcOPtyXWcFTxwB") }, + { XHDR("tvlkzevdudtpns", "SwdeHNPmXLBwiGmHILLjFwgWQIZdNp") }, + { XHDR("uvglvyl", "GdYvZaYOwPvtMnxMunEdeBtOUGJSCSlYEfmcQjzIMhiAbTnsHGJNjHoLn") }, + { XHDR("qvnlhulzklnmsflyoxle", "UWmnSlahXTcbPsuaVpuSgrloozFcAcEFYffUmuPIhDUUKUBdxySNvvDIWGJgXNfHe") }, + { XHDR("rz", "VpuVNMxNPOoegZKhMxmJMvKfQCxqEDyTCLiYiqIJTtzkHiBGYxmtYeSIOV") }, + { XHDR("fytwdie", "Vl") }, + { XHDR("ebkbgectbcdwrlsqkcw", "TKODutQtRWoQQQqZntLTaLrlZeInfmdBPbJTsJjMriGBiIeFeb") }, + { XHDR("aldjoobkhlhif", "omQKXYmNcmvk") }, + { XHDR("zfiopjgueflonhlpvkb", "GjXDVpgnxXZrInzGSUQxP") }, + { XHDR("qbvdkjntwacwvarvkgjj", "LDwKUDFqehowhiScZnxQURiOcVowacEUsjsUgbVFIVaFFtuHJUubfZpUxjwmf") }, + { XHDR("zpokjukwqsngh", "DTeGUGEWEIA") }, + { XHDR("mjouowzsdgwg", "EZRRlVadZIHSdFpEAtGJZUcSoSjnUFgDeCkZJpGcWruyURO") }, + { XHDR("qyojevrkur", "rrVILZAKTdmmPYAjAnRxySFEY") }, + { XHDR("gqrwsugjjffdv", "YjljHocYYHQNwEFkUOWVKJmpdtLWXhdAzUCVCjOodxnGVJOmzGzgoWZqCNRaAfGshWWaUaAHibL") }, + { XHDR("bppxdgmedsjexvrwyw", "ybBRcjBbWEuORdGwHYOAH") }, + { XHDR("jiwvfsxa", "VMNgcPXQPgpzZuHYGtiFqyLSpJfdiZmjNAQTftCJLesmnXPInBPlOGDmpSCtSxprDZqzXLeLyIvP") }, + { XHDR("hjk", "riKzQttdveaJgjtUxHEoWyNVUPSjGLPWzpUhyMAhcTpcprQhKOvrfscawSjUKjFyDtbnrmqbsBcKmep") }, + { XHDR("wno", "QkFagHbnOrSZxreYsgxhZQiQTstucRcYqAGdXcV") }, + { XHDR("animmptvlfpzehho", "AxfMqLwnSXVRnjFcCIivawPwPJpsAWTwVpUHEPIbmqpcAaFBHFqxF") }, + { XHDR("bzriiu", "FHNIUapQGfVpgnssjVLwuMxPXokpSpigvdRVLLBsaAEGImSfkrMT") }, + { XHDR("zviuoigtlikjvcsuorpa", "zjVdySvdRhnxUTDuZzhrkL") }, + { XHDR("j", "sLGCRXwINUEiGkvyot") }, + { XHDR("f", "XqCrEKVzxkS") }, + { XHDR("wqxkwvqbz", "SdnSugpoQBEQZHRtreKjPrRmNwZToMfCXw") }, + { XHDR("ngw", "wktQCctgfzXjflsmTjqYYbigaNaFZfIBSPhNJoVmxxcXoPvMFsWbOVTQFpItLGsIxAyCWftcsHXqxQml") }, + { XHDR("ao", "pRKlFciKzfDuPSepylWUqpSyNYghdHopXXdGwpstCgebrRbTFAVLjDPU") }, + { XHDR("vlbxwpucyjx", "mnsdffnBLhqkdGWtTVHPCKblpMkwuDgiDZdWxfFWxqYRWejUVYvoNDKBIcmPuTMK") }, + { XHDR("la", "JoumnXySSxNMTNDwZjelZpDoLUnMIqmmZNFrDflb") }, + { XHDR("vctrsjwvvcrykvks", "tCkWuiVqehmWSfyHUKzmk") }, + { XHDR("jrufjhgiakjzrqtybkjl", "VkdDcRDEtagqDlVNDleIBTEbetnlpWSqlgkeboprYMIOWhYQQkRcPD") }, + { XHDR("e", "rLXUuryRYTnFISonXDRqcMeDFEwwKsdTcqsnFolaTiLKzpQevszaufrUGcAKxBMGjmdX") }, + { XHDR("fsfjheszgpwearoelmz", "ItJEhnKgFUqFxni") }, + { XHDR("hqekchln", "pyUmANWXyMCdYScVvlemU") }, + { XHDR("jnvwsutseadr", "vhSPuLKSgJYOBIhvSdVoEZsRNispKOCdFFYYLNFmwyBkuqnJDqJJkgrChqVgKxYwjhBETnVeJEEuWM") }, + { XHDR("tazzidsbaqeklrmx", "cnmtqAmLjOXaVOBTpLBwuqEJNoRgfuNJseEgbXRTTzWNKsCbBbUUXfjONVxHWBDqbVAJVYsaVBh") }, + { XHDR("jz", "WeiGxxgAOIFZhUjPuXPtoOMwWvJbyxvlz") }, + { XHDR("xbvymngiw", "ugoGhWloyMpChJRxMXpWuEDpsneJWmqlMSQmFgNoytEJAHVUuEWGceyEchvScyQUycLVoGWpTaQsJKp") }, + { XHDR("svdgxyhdejbyot", "ILTwyYkZThbPrVSphJHZkRnqylOrroFglCdUmvnTukkyOxoUsdkSVVrkIgMXZNnWPDmhnOfjxLSC") }, + { XHDR("xd", "aPIMjcRjIbmzvgblXHZfilonCVzsXtcxg") }, + { XHDR("jsmqk", "kntdfIOJVpbvjmhlQETKJmkAuTjNFILkSEgPtuKaKbfhVUMmpTGUfTwgKPOJBmwJg") }, + { XHDR("x", "MtywDyTDlfOLjvxURcoGnsbIXNeDyJuZsvRxu") }, + { XHDR("bnksjvpo", "MIlonOZGAUVFuoXJYbXSewATDOxVczRWPJxKfrTRWNLSHVT") }, + { XHDR("gpggpodu", "AZOlFUUyRoSwqdHlENKOHNZxlfKLyoTZNLkwRizLfQraXqrZHZydKUOrOlcXeNxglwIBOThcjCcQ") }, + { XHDR("bw", "asWpkPsvjJBXgOUuYfRtmBlrTAjMnjsBC") }, + { XHDR("phnubchckwtcnwsuss", "gJVImQKtcuQMBvfmYUbbypFcsRLSbssIlDQrcDKAlJghKupcjzFCMWLGnTilyOS") }, + { XHDR("idluusgvrrcydoigg", "wppBGRQAjuZWIjmXh") }, + { XHDR("spqpv", "eHkcGRKXRzyYBDFoUVTgDOzvCOZIefrrFNoJCKSDidkAfhhMmhKIKCeCDEYDdZzzxKd") }, + { XHDR("rgulagqyb", "pMSPiBPPjcdYYzDxlYmUPpBVbAVDbOQZhXSSm") }, + { XHDR("qwbappl", "iKwyxHWepPEDuPshqYVaLg") }, + { XHDR("cxzgbazesxfnkawpwl", "DgCRkYKvHQcVOooBUrFBRteSXzaZvLAMagO") }, + { XHDR("zyupwbyissx", "dIEwNkQDQsdnGPryVMrRPLSlHkIxoEJLGuXApAApWJEiBGvY") }, + { XHDR("rypx", "yMByKmSeTuNvjaxHdJcvAohKTaStuCMcFhYx") }, + { XHDR("haheevmmx", "bGFuCruqvAuoVRQpcpDGKbxBNgXz") }, + { XHDR("yauwjap", "xOYgxJYGCJtMXf") }, + { XHDR("d", "LXhUgNaYiMgArSSscLdRdoqEswsRDvMlNVgZLCoOvxgVgXuCTpvaZAHkoonfRVigGe") }, + { XHDR("ksgepfr", "QtbEpcIcTbfCITAuhMlJvNJHEsYkmzOScsvtWJ") }, + { XHDR("ozoahknfzkcxws", "zPDLVHOFfxLEApmDAUuoEzKMunaSQHmBuLOvogpWPWaLj") }, + { XHDR("k", "HqszZLAdJJOQw") }, + { XHDR("iognfjkzx", "lViJdCMdFVLjVndQBbfjdHPuCPxu") }, + { XHDR("pgylrgdwtv", "sAiZNgEBUQqrohTLDWthitmzyRovVNjxlglVrEHExVFtSJiYiEcpgDKFKBgORqRcKKYQ") }, + { XHDR("lkgvnbifqkwmjrwcjm", "pxbYpltHHCbqVEezQFUPnccyvKsbXYlqRtNkWRFRxYOgNDhdzeZiPqZkripNLZxRDZ") }, + { XHDR("vrtjc", "HaZQEcHzVEUYXGkCuGtwvnVoRbDErziSfTausTolRiBcV") }, + { XHDR("hqrxo", "nHjAmMtAkDpHdazFtUEZKMVZsKvgDLgSweDC") }, + { XHDR("ftdptptmuficgmihrn", "IHjwASnvRJlMtRKkrZcBHqZUGAEeYwTBailviNstBpTAGLZtenwuKjsbZtsXkhnNkQpEjaksXSZ") }, + { XHDR("zqfozvsguaqeyr", "O") }, + { XHDR("qhwecd", "GWhHfVcMoPpMXMihAcucptemRGmnyQQcYxroNfWdDM") }, + { XHDR("nash", "eRzDaulxtDioQhbfLutuNWrsVMoSAlABPAlaxSiOVtGpZwXyPAgkjEdTRajHSF") }, + { XHDR("oheqoyhkfjzobmtffmru", "OWMWJDUUjBjiYNESAmcDmXaCjpHWRDqacBhrOuCCHWDOZINvZBGEyAAXFxRFcuGMRZYNtvDYonBue") }, + { XHDR("pwvlj", "WmmyoDdEHSNQvjssFZZnRmLgVqALyWMyhXlHHfdOdyNmdU") }, + { XHDR("aomljyayaqusl", "GapqwrwiBLvihRCombd") }, + { XHDR("wsy", "KysXFymQgmlYluMRogxJ") }, + { XHDR("enfeiqjgxnnkgkiki", "DTa") }, + { XHDR("ez", "yDMxqjiPLrqQJslXrABoXHo") }, + { XHDR("cfuex", "FoOtrNj") }, + { XHDR("fvtspkyqjkaqplxqtwj", "KzCLCATHqTxdPBDlOWEkbVYFpom") }, + { XHDR("sbbvhusvdu", "bWWRisUWnihdySytXzaTcyQmpGhZsEnuFr") }, + { XHDR("hui", "uPQMJKzqXcDOGnbiXJjzTePDZxEgfJHjuKXJZXBftOyfEgoRDZZixKlGyJK") }, + { XHDR("pegepkdbnexijj", "UTxhRYVCfVtMLiPGUGwqAnGabbzUdIqosRmVQbNryatWBOvlGBBdoYM") }, + { XHDR("dnmqvqrf", "RcXISNjlWCpnuCqFZdkmnGhhsxBJWDVaOnXGuRngpCbmcbKSvzTFUZrgtRGqKcyX") }, + { XHDR("rjeuo", "OArikvFlAsmmWYJkhKpJVHMSLoycPTKpnqNl") }, + { XHDR("jj", "afaIIDg") }, + { XHDR("sbyaspqatm", "FrsmFOPhqBXIYZZkza") }, + { XHDR("ehhwdvlo", "RHguGdiAoVxWEcg") }, + { XHDR("jkibvihgwzbyuuendwlv", "JGXSU") }, + { XHDR("jgenbiqaxbyirdw", "aTNDvIODWgSGxJuMEHfqfiiIpOFbNXYAQynIcUKHabEDFpwtTMeag") }, + { XHDR("biauqoovtokypgcbcmp", "rSOBNxuNwBucQoEmEWASghXWQhLVVjfRqkcIsEfhBQpEuDQU") }, + { XHDR("ftliubninbgknp", "EAKoAQXOXwuZOf") }, + { XHDR("o", "n") }, + { XHDR("vthed", "fCghKJasMLkNYvwWPwfxOsAhXeyHMKHhuYihhieZjPeJcKWnQAntNipUJdyRdgYBWlrxSvAtOygwZp") }, + { XHDR("rvxaukyrbqo", "cd") }, + { XHDR("efqcuvtwvqbsdk", "sWIbdlKgQHWVUKXPhZeOhXDprrJJPiNvzCZbjSxLSszZYuCG") }, + { XHDR("gdn", "xblBvH") }, + { XHDR("sk", "intz") }, + { XHDR("wgbwszqxsmwtceulnad", "NXHknwUTglzHQYnZjoWeIWfDbYfGISUBYsEqmtHtktLMXuWqwdFPIihCXBrmWdKrDeAvlHbX") }, + { XHDR("nqwlw", "jVJPysBFKZoJEvDdlhrHqgQXZywNEsgiOtMGmreswOwjsBzBFGIBNKriigL") }, + { XHDR("kcws", "dtMbgUrpXZeaqqPjPjXRpQYCeEGQCqSdtTGz") }, + { XHDR("wyhvuxifwabzieefuwfz", "VSlkztqPlojvIVxFJeoSBwiTMWQTSbpRhXPCxGrNLSVLEobUtOelGbGrLIfUCORDVMFZFsvELGDgd") }, + { XHDR("dmehxonkecqlwlj", "qHIIVSvJopxUK") }, + { XHDR("x", "HfzpKAXnjDggwkEjVwdPqBX") }, + { XHDR("twnntiyy", "hVcXGosWhJRSEobxaNejvheASfeKEYnQfMwTQPJXkWFNrnNrBMNPiMqXOeu") }, + { XHDR("phazbr", "MdlwzaQNyCZhlvwtGJktjvjGaDOXDYInSoURRCIHqGvjdBtWmzHjmOgimTjzsZf") }, + { XHDR("wxrzoxq", "XyIiZquAvFGfNcgyBElpSozPMFGkTntqVMKnBTCiMUPywjaYjdQjvPHStiNJm") }, + { XHDR("uw", "RGfGQFnGgJseyqLsGSbLKzMqMzrybyfDRUYcwhcGhdRGuRmypKTk") }, + { XHDR("gitcbwisefonv", "EulIlaJFAfpgu") }, + { XHDR("sgdjixfqi", "YE") }, + { XHDR("bucadiosanceb", "CnPaXpS") }, + { XHDR("sxthd", "tSOiBldnIkkBskSoOogpbobWUXzINEqNKlUqmstUOsMDIIIwpUNALTFLAmhPKEShyMKKqaPhjcswD") }, + { XHDR("lbn", "UYqvzcIUPQhztyUJGhlscWXqgbmf") }, + { XHDR("ssfrdyveehjagd", "ev") }, + { XHDR("mrohxb", "PVEUZQNFQPKqRvdCyCrJwrsHNHXOgv") }, + { XHDR("zpp", "rtWfYDBagSZPtImxjKwtbhtgAeeFDrGgUlpRQOUFZXIxlBgNDkXLiMJwXJLIDjMOMEw") }, + { XHDR("f", "lkJMNSLPhMOEfFTzvFDWgTmyvTuncIELLEQsorAqIszysThqrqOKfgPKDupztgXLcdwZJ") }, + { XHDR("ey", "JGQUPRvyNCckQT") }, + { XHDR("konx", "eZwhcuiimQEOxrkBCgWlZpEwnYeoPSFkaphi") }, + { XHDR("iylhrsjmsxbzj", "CjxdBKwFzltHAgEPMtnnsBf") }, + { XHDR("djnxsbegjprnplox", "jiDkSXTqWGdkGdBDukoVHofvNFunXVcZyosQQpDVXZPKMHIRWaVsGvKFxsHOi") }, + { XHDR("nsxbppzymyr", "zAwTEAJFNNnTWNRuEiAKksoAyMlFyunNjOgkaUGERqAvOFzfqdoBQvTcTM") }, + { XHDR("rbarhdxjnvwwr", "dVLGEAfQwIZNvxlTYJYwQocYSBkTicDDXqcnDzRTtnMAqMveogAhDkxQvBJyOltuPbVSPmkJH") }, + { XHDR("kjavxfrwpikirwpvsqfx", "zAdbiBvowajqMvanZvNszapaWTivGfEUTAMqPYOLjkCgMXCJoNYF") }, + { XHDR("txemmnjsk", "LsgvjULzGWcRqgRRfdgfGVeLMgTdiyObwpnJ") }, + { XHDR("fguypbllxtrnkxnais", "pYMEqeISJmpEnZjxWvMuxqpOUnDuDYKPuqsJHzQYYWPqpesc") }, + { XHDR("msi", "avVMPpBqiTwUSdQJTOlGbPUnVSWAOOpsJmlZQpbtNfvBSDpXJRKNsSvKTMDiWDlnVrNSZotwELlGW") }, + { XHDR("aoblqudksjnot", "DdqPjmnxwyiHDCJnYgePXLothUGZATSBNnsZiyieRLsWvaGyTYouERBzqcNh") }, + { XHDR("bmjfaaederpcgord", "dYyfDUTDDbUaGXbMrjyUyKghgvOiDyjLZRhuzR") }, + { XHDR("pscmuflteommkrrjpdf", "fePswGDMKrIJUDXubicLtZxVVeHzjLIDkDamcyteUyIwxAlDVKqagKNmAafKMV") }, + { XHDR("vtxfdemvuyiwgzrj", "WIfdEclxKTL") }, + { XHDR("rfnfxsmzoamhpbzzor", "HLPxLTmpuwSQLghGolntGaeFpujsClblmDPDbPNpZRfyYpaqzQdjZRcdVDwL") }, + { XHDR("lhlsaztpi", "TSsTtrZRgfzmOPMoGjcmxxKBQawFKEdDmmLXsQVzmelffAMZSakjqqTKBAMaJBoJLdIAVoJRwUfMf") }, + { XHDR("eh", "HiMGHPndDYCqvFu") }, + { XHDR("ts", "npLPASzqirorshTFvcbmEsg") }, + { XHDR("mvrqt", "NvzosTRKAzfwEkpTtxcOWvqi") }, + { XHDR("yxknhmxwlvnhdevgwd", "XAoWY") }, + { XHDR("ngmztopchk", "hKZHCuVtxStCljFxYFEDzXpsCwXKnNFkjXtEqzUVyWsQmYnOAiELIrpbV") }, + { XHDR("jcvpffzczcspx", "MRgcyRXysSJiQhalFaY") }, + { XHDR("znflssacisjcsfosysod", "dNUFYkuyvTbwZSKWpdlqQadVAfLSAGuMKqGUJgHlVtfBsbrSbKkVsYnqgydQghFffEblcKyG") }, + { XHDR("ebovmbfdyyil", "BFeuhtFfzZBYjCQAmoeTWeqpYFcGfRRHlDgLxLskzvEcPTxfIjciKyIioLlXOScf") }, + { XHDR("tdjeorzmf", "YQnldRPzErwGWzRWasldEDOljbdJOsyhzELjsufVkZviOnloHbbExLtnN") }, + { XHDR("xhvvslbaraq", "YwV") }, + { XHDR("mnw", "VLJTUYFyqpHEwuRqKsEunFXHFCqaAoXiRzzgN") }, + { XHDR("kmxmfsixecees", "AjrXvePlmssnzzXJpUFqNDrWIztpTpmWgFYOJHwvSUteCNxWyYZEYusGJa") }, + { XHDR("oojdekdntmncyq", "dWkwrUGvuyDmQLtoZVMNddimuJNDBCyeRSDasxSK") }, + { XHDR("cylutzdnklkl", "WAFnYqdkoJjRxtEfUqNmVqrsQrHOXnSqLDRYGgJLmZEEyflMkUXVJBHwPCTZrtORXsg") }, + { XHDR("iorbfbma", "uaWEUGkUFulOHRMmLAT") }, + { XHDR("kjjsz", "KVHVvspAidtwGiBNTBQROyYryaMUKAeWpJsirTNVOpqLGTiBhZcPK") }, + { XHDR("bexvxcqlbbzpfwplp", "MgXGLq") }, + { XHDR("womsajwovq", "tDRyCCDkouLXguYOEosgQsgCQfxgpTwfMqBLzyCPUDWihMSlLuqpIltALuWHvBlhYImxoTTlQZoMYuaf") }, + { XHDR("mharomka", "TBLDdf") }, + { XHDR("miuu", "HpKfXygfoSOaDDlkARppWGJjumCkcBZsidSMRhlVgqsOTvTWfdWbrOuBOjjTxRAVOluJVLknjKaGxj") }, + { XHDR("ciqzbrpxyalqq", "TuTIXslWgkCgZLtkL") }, + { XHDR("szogukvcajn", "qunuDSUkiJRDKNCqQapUZ") }, + { XHDR("dxpvvskwerdmaotx", "kJBwRmxrSdmNRmrXexKwtOqAHpvUCUFpvCKSMgNrUFLTCYpPZuMNsO") }, + { XHDR("xrorkagjqwnw", "cswxwkABXsTloBhtFkYFegnMWPYVgqGXJsAHVAcPlFHrnimBGafXmodwrkfNV") }, + { XHDR("jysvl", "HFXbIKyRz") }, + { XHDR("pmznutlhubierhati", "iTdjwdxZueiwcbZYQTKRNGKGv") }, + { XHDR("dkjnpqwcijgqfdrpuw", "kfoOEKeNqcdQlGeoiNrjxJKzswclnDbdxtWJOCEBtIuRsUJlAjdEFpTytXALMwgGnLVPAVp") }, + { XHDR("snpikkpugtrzvkwcyx", "TSoCSXwkgnBQCKSZrhDCTcZnBXTmNPTUzgPForOiZZgqKHIMeao") }, + { XHDR("ot", "NvKihJwh") }, + { XHDR("ob", "NrXKwcICeOdvZtOMbsFcomigApWXWDevSwzOAomLHcPQjoHecOCkiFzNjyVbuXVKVBXoFDf") }, + { XHDR("kkfdbipcjlsbjmzxsy", "yfrOPzVPJxddIQtKniJqalPRBDhCzacIQfQZvlKactpJ") }, + { XHDR("usg", "etYdBEKfXPGzwBzUXyANtxZXgdkdzuuIQhfcfVXqsBrJxcwjpBNUuCwocYScDHPsYwwBlFUEV") }, + { XHDR("ceibrtoeosfjgioqjis", "ZFSjSDsAGwTgKMQhSbYUuYG") }, + { XHDR("vytpqexwpkzpgcwf", "mpAZcriRrqkoRmWYOaNzOtGyqIXqUYzKBJyinESMlthmDIUIevtJGSHTq") }, + { XHDR("gztyx", "FvcNhJ") }, + { XHDR("xhnhnfvojga", "gtqaSvPqveDAaTXOLymMNTsXGIqmUwcoasXUGD") }, + { XHDR("hswnnpzlm", "SEWyVlDGaSdumTttxfry") }, + { XHDR("pxvwzzimqfxrpteqdgiz", "oDGQCbCARAgbHHgEbvYgseQrCahsJPhXVNgmSnKuKGSIKukXoDCvTBDYab") }, + { XHDR("swckg", "kLu") }, + { XHDR("lvgxcelrslbn", "utdrtYxEGyjuzudcmibRsBhtsUbanHKNmafZEqovKdyFiepXGaShSJyxBUoitDiYNajUsZu") }, + { XHDR("szkihoapqrypu", "UGVfCoOyMDEDgXkBDpkjOSqY") }, + { XHDR("uynaenlkrclllarwu", "PZNlyu") }, + { XHDR("waz", "nzvATrDbvqVDnjPwPaXEPuLMjQnrzg") }, + { XHDR("fry", "yRzMJNoZlyIFfNxbCyHEHniRVsbUvOUBqzObApDPhNdjqXIrXTFXjMUMmFHMEbUqPpLii") }, + { XHDR("eundtmcjjoote", "elfHNpHhxXbVmajiTcLPZUaRCeUiSvpxZTBvkLOaCseBDHXxgtKnftCvNfemQwybegoTVnLxqea") }, + { XHDR("ucjetgfzlbrs", "XxoyzbZwFxICposHhEtEErTkwodR") }, + { XHDR("qukicgene", "UoIwZinqWRYVFBbfBetzhpABJnYDhbDmgRwsGvx") }, + { XHDR("hvbipyltqmj", "kGEtLElXKliYTEwbTNsQNjOBHzMYzCE") }, + { XHDR("ip", "lcaUHIfPT") }, + { XHDR("jwzbhwq", "SqGBcDiKzWIIHdtnR") }, + { XHDR("dowfwj", "zAgSjLqGfyTTdsbKdsfNOdHWxSWSfRlmyNOmXBHvWZdwNtnU") }, + { XHDR("ywtgad", "uezcTEYijsuUwQZIKILYyddezIyUs") }, + { XHDR("rcar", "tJSDRYqvzQGlDlMKAAQuC") }, + { XHDR("ugojfozpak", "aQGIqsrJWAhyRyopJkJpCDBkhipeTrwUrtIauBxXMiIKebewCZfk") }, + { XHDR("kmnyzbiymkxwpkrjzteg", "oVmKcGHqMAkOkCZzKWIjks") }, + { XHDR("thttqgmirm", "kGflRjPYmkUhautThFnUXAzkVjKRvDMNXN") }, + { XHDR("h", "ZKwonOEBIbaUdOgsfHUBTgOkuxfsGZRRGmVttG") }, + { XHDR("bayvzxuqalqioca", "bAtgKZeMMxHtmueCLlSEapP") }, + { XHDR("zbwvetctvcofcosesjlj", "GypWNJZqGXgwTRYdpkPjfJjvvtJxKJImLRs") }, + { XHDR("ridczimcknce", "USaJgHhFdLcrzNpRT") }, + { XHDR("tvqgmymjcbloxvbmpdgx", "CrbEHznyGgWcMfKFZGmpDxFTCw") }, + { XHDR("egcbnrqbrgndytvnqwse", "lKKCChLheOLMsuwhLEvCGiDIBuPiWrhIsbyrEmenhFCqHC") }, + { XHDR("ykjcaosrhcjwkz", "OgihGuBFiTKtFPmMphrsbGlnHYbzSHeimfdEYQ") }, + { XHDR("hbgdetvs", "GgnukRMztOJQCxeNWnMcUIrMKeltUOjCrPCaFLehAVJXAwboBrpOTEke") }, + { XHDR("qsybnmpqyrijrfkh", "nOrGZguunkdhyPSzYlmGBRCFoRAlsFQN") }, + { XHDR("vnpmgygfswaxu", "YGGZJNXttRKhvrcjgPCoGjgWLFYtGQkCZUUcCOODDphjlaGJfQIJn") }, + { XHDR("qcditmezgsw", "ZqjWBORlBvlf") }, + { XHDR("fnjmiilmukxlm", "y") }, + { XHDR("pj", "qcqZzfEFDSVIAPGjrEwAWKpMDfbJIevSLEKnIKSmjQJpxZCbTjMzPIgAbFecXmcTrUbpdIWj") }, + { XHDR("lehufqfjupdr", "NvdkHPhlbWipgnYwmXaQDRiGlexSpLQ") }, + { XHDR("z", "IjaYWEWZCqSOWzaRyANTImQlFHNFRAFHuNoMXhuWqzcDPBbWsNTsPkBzfMvOVt") }, + { XHDR("qlpmoym", "KNspArTvshjXamEdwEqUsZimQxcFVPsFEsCUDZDyeJWer") }, + { XHDR("qdsndvcqiflaxq", "DwITvRxYizmaJsAAhoXpSCnRdqFQgcSunIFQkw") }, + { XHDR("lnbhzqovemmqm", "kLXCoywxyRqtZiRsiNAYizdPMbbfHxDqo") }, + { XHDR("eyqcv", "FBKITneyatiPQAxGMraswuIQzgtNjZldZCxqZqq") }, + { XHDR("postwrehyzsckhtsbeoy", "YIRXpUnOKaDJyrWBWCdCcksuUST") }, + { XHDR("d", "gtXBLEXISHNQwhxosYjONNOJarEowFPNsZ") }, + { XHDR("dvspd", "kaolqKyBGMUlKsTJnsgtaxrVqoPpjFElRXZeQrJw") }, + { XHDR("totqteydmsg", "hXKphnOwMHcDaNauTnBpDxQFxZhRBMmopHfveiZnPMpjhxxIrwulZuBSzVUoHBwY") }, + { XHDR("htqfookqvdyqqqygjf", "FyfcZqUyPeOfhLmJrLFLyTBuIQgeEdJjpIhllwdMMDvRTsJdgrsYhVxaueCfNmSEnYOikjbvN") }, + { XHDR("ctlt", "LUITYmMnLtVfYCPblGsWfGoUmoSQ") }, + { XHDR("qijuo", "ZhOblfImvqalMayDjngJDnP") }, + { XHDR("mpqnoh", "cvoRYmTvnqcuThtBSTVrrxmSLHOYpiOkFgTKt") }, + { XHDR("wfkezdtaecoqkaihe", "YSPpZUkYCFvGosdlWrNJhQCNSdnmyRgyweMpLBJxovDCaIGMigGLUHAvfNvaaeuLjf") }, + { XHDR("ylfcftybrjm", "MuCjjSkxYuCivQSSKbjxYzqlOPXObVptQdANDURgnRcBrhSDhOm") }, + { XHDR("egjikjxczklxwqtfpu", "VRVvsjjORqrJOmWprafZeeqFEPBhTraplXGyGzDmh") }, + { XHDR("lftjjaefrkmmwzeccsr", "EjonKeeHRxY") }, + { XHDR("ha", "xXXNgUSYxjDKcAAcZYNrQGiXN") }, + { XHDR("ibjmpddhr", "v") }, + { XHDR("wkncmgmatko", "fhTFSXqCEjOFjWDuZiPbXgqfgXLEixjs") }, + { XHDR("qbrz", "qGMlHBDB") }, + { XHDR("g", "LQvZhwBzjdbRUqkPrWQPeZLvSEvmgqMjpknlRrpolnASWymXPwhgUhzLNBWvPylGCB") }, + { XHDR("jb", "QKGtiNTKawekjKFXYwSAylDkVEHhmOTQTCkSjaXwLOmQhSuvcKCKYomhlqfzDNh") }, + { XHDR("jnnknqhdi", "BqzzmtPBCqxOvfBPhuML") }, + { XHDR("xdrxmo", "JobASkiulZrpXVbldUivXVn") }, + { XHDR("huknhklxuxdvnmk", "oZIplBzBiSlHkleqNfYacPVDxzEnXCaW") }, + { XHDR("z", "mspwRRcuaIUezCWNpb") }, + { XHDR("drztxejwtmbfgmnyjsns", "XZpWseBIHISKgtXHXvwkUMXhnzOWXqxwaIwUyycwIQCjxcXlYIuTeOptCrjJ") }, + { XHDR("mpnzoioquuudqlwghqsa", "jScITAXVPtGJMGsvHYsKCYbzzjtNeTPBHwlqKbmOybDhskFNDlDrgoofFQwmI") }, + { XHDR("ute", "cIaPXLmJrcbOEOiZiaTJaGdwvvlPRcGRGdUayNMJGtwqhUazPdvu") }, + { XHDR("wbsvynxgpv", "fMBnyDDYyfEmzOXZwoNWdPyIorYwTAPzpEeUcyVtKkzKbyFcgTnRsHHFWhvTudcKSUQFXWpdd") }, + { XHDR("ih", "rhRQ") }, + { XHDR("wrhtudxzjkuukf", "NqpMBoXMscAdtmItXHevr") }, + { XHDR("ogawitdahflgadhjjx", "FeeCtMMPhBEhFZrNMPVOIaxyULtcnJewxMxntZrI") }, + { XHDR("unutdutiyad", "eTFcXKpAQOULETcjixDBCbNirQjmZWdwXXzVycbz") }, + { XHDR("shgbwocapgilemgvlf", "jOEIKMyySTZFYcWPuOKJSnSHeqIxVDySjpaSVgIrSSbfGzpekzllWUhnUfUESbMibGZq") }, + { XHDR("xawzpuhjzseow", "FpcMcnpQPzFFYJnRxo") }, + { XHDR("brc", "WrWKjVnHxJQJeLDUnsTKpJqsKVz") }, + { XHDR("opz", "IpxSasmRvzjZLTfcrkjdiVWAPuTtZnDQiobxDzAJoFkdLKHSodpRJcNEuOKLgEZBeGDXvIa") }, + { XHDR("grfyzm", "IyniUjzipRZFnjqCwbXUtkYVpiBqVZXdtLzVyWbpN") }, + { XHDR("vjbkzx", "eKZZRarESmSWErQ") }, + { XHDR("ylxf", "YkJCAtVNzNWrHfqRuteiVRFjuhoWANpZtHIHsrPMvHwxSWUdXDzRAqhNdmaDNynggAfvinkkhkvmv") }, + { XHDR("qkhfajymkkzedkhogc", "TfPENWMPqaoEzVkoGbjNBi") }, + { XHDR("zn", "VgSzEMEiouWhpiGHxUAqTtvNpjDTZvcOznGeBKCOcFsGhnfNIyGUiBFgvxpPLUsHCJ") }, + { XHDR("tebkdvmwiizsyvjhpyo", "wDFIPSCRByezhLCMwfpiipqjKMusKrPYovoBSHDtwlWtarXQcKYlmoTnPrmDBeiQqHZg") }, + { XHDR("ifbhfslikgulcbdx", "IVdUUkZESJHyoEOVlBNxlJyBJyGstlmXoRJxjKjLVBazHMrZBYMFbZvLdifusTrVzjm") }, + { XHDR("sfuzpip", "YWoUGEgrzLbTFsIWMnbddtfKrvWQUYvJgpXVgJDAbEKlPYhDtNOqUFXJTfssXkfBQUxUISeJoBFkHM") }, + { XHDR("eqgtqhap", "jqYsnHqqMloTumQDcXWSeKtXulNhSlKiufARXKMqWRUdeEuhWkmZlggFzDlnpUK") }, + { XHDR("hztyhqqvidujbmgaqvrg", "osfsliAetALlMvYEjxlexrxGHmaimwwuvcMnJugRqHOVTBhEfQZPajWzHBNCeVquQZmxyBlyM") }, + { XHDR("jsdrlkqysvpwuwipla", "EfkfSEflobzKGmHXeTKkzMChETUrRMQdmwiwBtBzzgCNY") }, + { XHDR("joudokkhjijwewywet", "GqbSsjLliWcbnJYuXEMQjXVsKtZOOFMiOoCHGNTCBomcVIcIKzrx") }, + { XHDR("htkguc", "HvDkKZakZsjBykkxiXrGGLgZrOqHHlxArMaEbFoVTAOShgmifyQrTecUdRUVNKXWlEDE") }, + { XHDR("hcxpkegz", "txHvAH") }, + { XHDR("vbmp", "YOjoChvJZXOSjzyAQFZqfkHHdWnzpEIj") }, + { XHDR("umgbgxbdizxofirihzy", "MSLkeElPfGLuhm") }, + { XHDR("uwvjtlej", "bzmYnOvWakzAnuWAKmDtPuFlByZDddQeeyJSVoAv") }, + { XHDR("uxrvphjel", "wpolNxwCQedtQPVGbuwbgTZpNrnHhxPfldoVrVMZYvQlelkVGppDBFPebyoKD") }, + { XHDR("lbqphdgbhbeeykjrrv", "ETamjUKLcfQWSXh") }, + { XHDR("ofkjwaxgacbf", "ollBqQXnMftjHFQzfGeyhxOnDWl") }, + { XHDR("w", "jpNDKCeC") }, + { XHDR("dwnjp", "ZwjgHoNONvvSGFTiKoDzirZzjUlPndTFPXBwaS") }, + { XHDR("xsr", "ddksBjqaLqyJrTBAFgkDiGQnayPtVpOAi") }, + { XHDR("ubriwiuc", "KUthFZVLywRNjfPnNJEmuusAOtphVBgJHSXcTIIAHMSSrhpmntKFiJhUuyJMQe") }, + { XHDR("mpunspoxcta", "qjMDLxEwRjm") }, + { XHDR("t", "OxaaZuKuADKDAAJdKJlZRvOfEKYmzYVwRJuHMfkJXghcaYSgr") }, + { XHDR("ch", "fewVYTAmXmcVlwgjgDoUEMaktAPdjXutXnXZggkjvjTzuLAPUldsPIXSPtTFDymgSRbIzUWytFejDVd") }, + { XHDR("ccgbzlmkwkj", "goQryXhLxHTWAoLxIZFQ") }, + { XHDR("ofhnyttqp", "YJpYysFKpWgFfiFjCHoFjqWbSrzoFqtHsPIqqBNHvMVCUcVHA") }, + { XHDR("jhjgbirgdbtlxbfsxpj", "UBjLywqfI") }, + { XHDR("l", "caDsAbhuxeZTaeSdYN") }, + { XHDR("zzrikhgzskasiyoq", "CqiDiMEDVNNkWzzYYKqgSBBDwoyBgKodvDuSmkoAEhfKfdlRADLUjOYoMy") }, + { XHDR("jzjkingdqaokoft", "CLWCSmArFNKPrbeSLTfhkJOljOiqq") }, + { XHDR("gxkgivb", "EvKfBgPYNPcQKeEpKuMzmdaV") }, + { XHDR("zpl", "DUCyKIaCBKthBGjXBkXHAVnSUYfpms") }, + { XHDR("grov", "IOiwXIJIFmgj") }, + { XHDR("oxpbontar", "TUOMNDebEoOSuvVROXqbFZfdSgKTnbmWWZQXAMVpvpuJQyHwrEBjKgzIwcFzmVciIleA") }, + { XHDR("odfxfmtcmet", "JOiLdLSgbHYxuCCcvXhfLXDtcLHKOXpbpKRFSXDxvsuGPjSgKDIxyJwqIxtuXrpZHzZnwahxCNyIibB") }, + { XHDR("dcpstpuhwlhyle", "UdsvlcFrlJvlFXhQCMyhZTpSJJbDjmsw") }, + { XHDR("hueijba", "WRvTUFpAyHwgiPIjlBPPFMSXfOxpGBZM") }, + { XHDR("pgjjiakkbafujpz", "yiqyvUURKGUtkyVgxTyTBLKKnIqQDyBqBFbibhzLhSxrETSEBJnEhTKVs") }, + { XHDR("exvsezbhybzpcdaxas", "dBQlckBVKNTYlAjYUftLJFQvywQOgahEcBXaQjInbcArOUChrlWRUZihxczkXVbjbPNwEro") }, + { XHDR("rbucmsinvmqzrikhn", "MUdccXXvmLzJK") }, + { XHDR("zcw", "bPdPfsnisXnkUrsOFDJFzcoMqkvtkfdZbkNv") }, + { XHDR("cowj", "ROlbi") }, + { XHDR("jvsskijlb", "RlvgOqWJURuSVQOgnxsrhnPPcshTemXRweHDNjlicaVl") }, + { XHDR("yvjlobyk", "EGQSzhIwBzBiSePlxgTOsZLlIUDjQxLIRfbFRnqQsWzNCXUGyrlCRAyAAmbWuajnLbwfvvIAToFNDDMu") }, + { XHDR("qgvgs", "njJYYJfmBsKnUQiRCOekmrZQREjgTAOCMKapMxOO") }, + { XHDR("unupfrccxizr", "JAoYFYYKOJcaOoToDLJHEEKReNIFlCGTUaXUPblDFZnmN") }, + { XHDR("drisecgvjgxqwyi", "mlE") }, + { XHDR("ldqmneivqbrpthdnyyfx", "PbnvfnkOWYiRBQAokEzWgwzrXHyLrDqROHflXBRYGqIAfShuCtEFgGfdjDyZuYzFCMFBDjZVULowYLLq") }, + { XHDR("xlbxzbphbegeka", "NDESTFQvIUxfFMmJH") }, + { XHDR("l", "SUjruJGFIE") }, + { XHDR("pea", "GK") }, + { XHDR("gla", "jnMjHNqQETcxVrhcJPkWmzawFeosXLjGMZQSzONHwEdcyLDrZOzL") }, + { XHDR("dqddorqv", "eBjoxZRLsSJLbqEBOsnzCQGVASfaPhZmbMOvKchduvocFWbdQzeVVQNE") }, + { XHDR("gxuzpqsydyit", "shCuSLqvxADirNZxvuZzGEcTUbokhI") }, + { XHDR("nqtkirrtvkimkefpmrhm", "qyiBCVOFnHNRPVFSOyljWzXInyaQauqxXgyeaKsRLKknI") }, + { XHDR("zuyloxmgtkxljsdhnrv", "dVutwwoZQFTsfauGCOyZIyxBPJRHkNdPnnxyMJGJltN") }, + { XHDR("wjbegcjhonc", "NIyhrsZUCBectHxY") }, + { XHDR("svdohuiluends", "FhbwdemqNDvHALBGdPpaUXPoEMABPk") }, + { XHDR("oqazyubbcvbyyi", "STNtLIhSiKdH") }, + { XHDR("utmjubvairdr", "ffYotBQIJzLpWabGzMeUNlyyJaSFMjXEHvDFayEDlOaUWHbntgyPuKWcWtUzTDDhyNNtXB") }, + { XHDR("mrwpeejqptllahu", "yxpxvnPxGOEltQdAXsQJrVxhihEYSmPhFmJdnavMkCJtLxWyTcLAaULZSz") }, + { XHDR("rtsxmjiapesmr", "AYqDYaQFlJgznFRlCjwpmBxekUqeitkxfwOwJAYGSZhZReQKccfOuOfAtmaYcBNBDrhd") }, + { XHDR("dftggeaff", "uRaTYIuliOVtQfYDoeChRHLGxjxLVwXlSBjNZaQDwJRvpkQ") }, + { XHDR("btxxiydptzcjxppcexzl", "bwNOmyjtGkw") }, + { XHDR("nretzxjivopauqa", "HfskuVD") }, + { XHDR("yexxfjzrfhgnngmh", "WUdXfgJqUtUieXfWKRBcjRtWyUgWowBREYGVPy") }, + { XHDR("hchbxnpbgylzx", "sW") }, + { XHDR("krsaatywbxlnwhw", "jCFsgwufbYLZbfyIYwiKYevYRdCmAH") }, + { XHDR("bqcjwotfga", "DsFZB") }, + { XHDR("wcm", "SlBzgFqnbitkmnuYYMtcfmvvcVwLaHHbRpEsYXxWVZAmfqjvomTfSOCAOniyVslaER") }, + { XHDR("nt", "fEViIkzzyaeZGypjzSiFwnVMRXtzVLtdJJcnCFXzwAbutMpbqkmcQTvanUfTSdCfHkWhqRFIooVAzilk") }, + { XHDR("bmtukuloyrvxaahzjvoy", "jb") }, + { XHDR("hxvehjblbchmupueijx", "seukNLwXpUMRBIYXTCWdxyVeGLkGUeakYZqBWXbftyzut") }, + { XHDR("oopvtkeoitfoyenh", "fiKDbeWYkEXxmaMHYteLlIJRGXmHaqxVXaxJUtvUVrQibcvfMJeMbruMxRJBWURkTMvyv") }, + { XHDR("gxsgqbjk", "WbYhzLtCHepcaMAlQNbPmsiiUbtjKOTqvstjYDLjQpswyDXndkToyfFYDceiUMIxg") }, + { XHDR("fksztvukeuqwmlls", "Xml") }, + { XHDR("gzflecyejlzuraceat", "nWlboYhwNrfYpGJdUHPiFpAhTnNxxPdELf") }, + { XHDR("rkuoogpixjpzt", "tJJbcFhHaZKZnsusZQbZyQWaWjWyQUAFKcZblAFaSyXjVri") }, + { XHDR("lbronmckiscm", "rhVjKggYdEmefSRE") }, + { XHDR("uglx", "VxRlWlVdTgEfJtWbIRvGuATa") }, + { XHDR("hmgxszkwbi", "ZoWIGtnxMNOSwnSMYvTAVPuuYdyUCPGumUyctuZwmswQXKXxfLpIQjhbV") }, + { XHDR("zw", "AWVgjNKHPradJWcVRYWchfullretmgVjLKTNpINNXxLYsgXlnyioJHMWSCZmzSQA") }, + { XHDR("x", "FdggVYubFZHEinvpPRicqOFyIOcdwovsCFZnFQZdlRyElgkVjxYjFQikkZtXCIAYXNEHiABbuBp") }, + { XHDR("eze", "OgK") }, + { XHDR("sobrynaqzsyiv", "QTGzZKqSvoTGLsGmkxYkMEIpIKbOlhXBYqStWSkxNGzCz") }, + { XHDR("izeqoutb", "nlNORkMrvUFXEkHktcdmyNECXpmiRypvJVzs") }, + { XHDR("pvsfcpw", "aVtbrZMUIyMsKt") }, + { XHDR("dmjqmfpudqidesbgb", "BpEILPRqYagwvXiUWdhMdjFwieHGvahPEJOVdHbmwpQkeZHa") }, + { XHDR("rjxstnvqkqnvmckdcc", "uTEPBjTGrSsUSmWbrYDdyPeegKBBcFIpKnTaDAdrvyqFCRNyM") }, + { XHDR("qz", "LIUQgsIHToWpxNI") }, + { XHDR("rbjspcyzl", "ZzPVeNbRuUNsEkQJSqKcPcjzPblHzmfdmMMYflnbVvbakyHNRVitjIbmvPzJiGulBttNTa") }, + { XHDR("otkjcwvjay", "ulApkeQEaYFTgXNCsOsiahZpAXgWGxckyuwkNHDCCYeKGnPfwwLugPnyeCGAswLUmJmEEQCpw") }, + { XHDR("ykdnnjzwppsrj", "DaCscXUjkYFhqiLFiBQgVxaYjCLUosNVFXnzMSbHxsJYMwRIZHIlYQNFTcKD") }, + { XHDR("vnvhxhaxlmqzc", "nGiYvCANwhmCzhqShkbvXscZyoIEykPOtXuaKyMCSUCqDtqqA") }, + { XHDR("vfy", "rloXslMSRAN") }, + { XHDR("nsbdqstcpvpgrxjf", "JXaJGCwcgGWIGejbhiJMNbjnByksIRAADVdJVm") }, + { XHDR("xnjqmscegnqolq", "UXjHmqiiaCNhebCHbUbIGnHmZfznoXGpiXggNtfvXybsyMJesYaiBYkuXt") }, + { XHDR("cmcvnicrs", "qaliJHie") }, + { XHDR("ovupmuayswtdtw", "gQcnncwdRWxEQLMxggRQriYIHgCGpRycAD") }, + { XHDR("okqdvqzqbyrnl", "ZEVpGYxchTWIHlKqGPrNEdKxBbbqLSxrKarvcSYeQuzeOoROpmjooEVPHuxdmiPs") }, + { XHDR("easihc", "ZDgdXiPqLPJFQBZvZHiGDoeVbEoNJXGdiDhcUoWO") }, + { XHDR("xmmwrykesybgdbsnmp", "BLqxOlQsaRqfhNSyspvMKskFkdmKub") }, + { XHDR("ozfhvyxd", "LJsvwehUQknkOlQvJOnVGhCbTRcMGYOIS") }, + { XHDR("gtyiapuncrqdrlfmbwhy", "WNaXDLmWECLWmiwHMabswQfbrjTliCwJmVXrjiWLDy") }, + { XHDR("vrzbtujfz", "gPYtuurannICwy") }, + { XHDR("wfycsoocmvvixji", "pIurKmdywSIU") }, + { XHDR("ssgxjhiwe", "ioHPXlAlAVoTgQpMsIEZgAgCpjERfSjWeRfjvfYiQxrtilGDJWufEcGnPGgMjFTdBUu") }, + { XHDR("iuhuonwwaxi", "NoovpUuLpnoAlQFgkVFrlDUDkhlAk") }, + { XHDR("lgfnyz", "YBTxtPFbNdoxFzAeOBFLxjNmfvALwgUEvcCUkdCTfIHPrqOztjmHBlpSbtncKIViTG") }, + { XHDR("rlrqlzonubfodwyyb", "eEXqrVNw") }, + { XHDR("gjumoutxapmrzhay", "dFnjbmgsYMytqse") }, + { XHDR("gkagd", "LvYxrxCmZKLDbxOGtMQYKxnuiobDPwunVRPGadCFEJytbCgkhMLDTXllFyTO") }, + { XHDR("ttotjqejcdg", "CWFvKwmdgBknyGCJFAWVS") }, + { XHDR("fllltxac", "btZrMHgKPzTrWHyaDwWXaNRKbNHLEJPhoMtcOWx") }, + { XHDR("t", "ZespsSqkpAlZzCxVdo") }, + { XHDR("piouiuebtjbyjnbcli", "xTEqfvvOtMeFYDgBiGBEIFFgjTYrpICUsBGgpMtZxzXpCRvKRUtKzOEtzzePhVYvZ") }, + { XHDR("xcxeztwcjvhf", "VJkkuovbbfuTqkpEVNiKepmVWBdPnaKGV") }, + { XHDR("rsnozcjblpllbtabyray", "pWXePpyIiFOcBWuCKQBeQqTTklJaLUmpNmwnvSlFy") }, + { XHDR("klz", "OWZdovZVQRbGITXHzCDVlbOmnYeSKmphiliZBhViiiDKjEmeDtagGetLYRFoscCWNvTp") }, + { XHDR("jmtnp", "WhgMwaLqZnITIyKATrPzLrtovPPYRruOPkISDSAlUkNHbPyPWg") }, + { XHDR("kvyaffoalviw", "GYqbmxHCWUBuMVgYgbbZPOKHthXgFSXHyUiWUQKHUQKDuxsGqvVsnHbaIiEgOuhHuNZUPMAImX") }, + { XHDR("nbjuuv", "CORgUSlpkenupDHaiPZHvNOcQRSloGwbRBArgtcNsqKmmrpwtbnjpghFFIIatnYHheGNelULbt") }, + { XHDR("boppsdfyxxesz", "ZqWxA") }, + { XHDR("nhbuzmfuow", "OQNWVZzfNihnGfCUgORSRRhZMZJNWajSuPtQKSDlagXCUvRaaUnIvhPechWAUbFhpVO") }, + { XHDR("l", "mFnYbyUCFOKfJgPNYjhBqoIkwHaoSlJzJzqjNfVhMnvkkYdGTukTyefOupAMWgsCZ") }, + { XHDR("cnaxlerqdeuhmubbi", "dWIGCidLfAUiMXomXMIYfzsrdPishsbGiwfGhhKW") }, + { XHDR("ehnyvnfhyrtmykfhsuf", "UVOcMwOvtPodtRmlUHuFfdSTslTzoKeIyhtOwLGcrnWqXAtLNHGpdapiMJWrQiDb") }, + { XHDR("zbjoddaqvwis", "bOtRb") }, + { XHDR("dfpylfdtmtpfrohvtlf", "baJBBDpveohFVo") }, + { XHDR("cknjcuwpmefc", "NGRRKiHlDGZYfvPEEQTUSARWfjRXUmmoxQPYXarkmoHkaZZtKRRkMXiZZuf") }, + { XHDR("mtc", "zsarmBFNEEpwELaghOyPYyV") }, + { XHDR("bovvrqnundaxoagjrv", "DaoTiwWUQEOnSctgqPhwACEfFLTkOOxAmtSXWCpTllUYPn") }, + { XHDR("cfhmqlihfffdekln", "EvfKiYKSjyUnnIzDCbdWdMBWiPfiSIFFxNNQnqrckZjfddYEkxROOfpuMnolrYoeejCxXgxaDNCI") }, + { XHDR("bfufcfeg", "LEeQgKbxLneEMKwiAtHfEASArPwrRnfIFdTfUyWNqwjRbqsc") }, + { XHDR("dnbfikcb", "JmQutBzgbcgDLeereteMCtpeFTsjtTJhtNVYQckEWNeFLhKIcKygHUwicXsDLIeWCSrWKhFEvUdmVr") }, + { XHDR("nhbq", "lEDJMFZGssBquMrJGlnGJRsIhlbKPvVVaDstjAlrttldElkM") }, + { XHDR("nlvbywapamt", "BUiGQuMgdXVPHGQcZYcMdadRcPZNPdQOErUkXjN") }, + { XHDR("lfzcthejpiafktckypa", "gRHZICyPIU") }, + { XHDR("ctatmwpmptddhgyohrez", "hCVdSHEAnQWEUrZgjRJk") }, + { XHDR("hmznono", "aawcsTGmbhpQJCmSjokVNYGmvcAPmYNkfNliehjcdgTETsP") }, + { XHDR("dpgcobblenlybce", "ySwvuwCrDOUQnxxPzqmYjfqDXDkSnvGYFxyFvQbKDauTVf") }, + { XHDR("xyhdgwsozfoz", "CmuBoRLrmNSGJZIYMxiLdafSKwNRRUKRaEYIdTBQTDkPQXbWLHKXOUKHjt") }, + { XHDR("tzlhcec", "phQLqkVygFsrKZeIzoOxthF") }, + { XHDR("gapgwwupfskxhfujezu", "TXfyEagcprTHCWtvnTaTdegwjcmfrbLRYNSuDgiLjSGKCHXnEntfyIxOEjyjsIXgMeExZXkgz") }, + { XHDR("dksmgmufhm", "jGJs") }, + { XHDR("ifxncelvdu", "DIDgdmGTFVcuopOOcpUfxSYUrYkoxSJqsnOESiRAXComXyWBitvpglULVHXEMJVbdIJNFAMYLCDcU") }, + { XHDR("by", "lAkwKpmlCGjJqbpyqjZRyEGfPaUYDqODmvlztiMthTFTYHd") }, + { XHDR("hcodnsscvgxz", "ZhdhKqqIigQCwtscUhEGucwcnMpeqlAaTdUVlawyGgxTdoHoOLuNizAKCJdAkzSJXVthKh") }, + { XHDR("xsqiqioqbwktjlgacngm", "ipSZQZliizIaDfPMABYpFnKvDrOKNasWHXPmFuvOIbkFojhaD") }, + { XHDR("hjabchurwmui", "SHkBdAnVsYVITalNQ") }, + { XHDR("a", "HwDc") }, + { XHDR("gpvlhciyuuzvg", "hRJxkZliKfOBkpcPHlaJnEpXgRakxAeAHdkBNLBnTpwBI") }, + { XHDR("g", "jadwvAHviSccyhyFeaeamPVeCVPhmvQQZSnjvRCsJfYhshzsMlqMxqvnB") }, + { XHDR("llphchpexmebvtvlf", "igewkkXvKpjfForTHthWEcYkuSP") }, + { XHDR("adldoglejmhcvbxpqmbz", "ppBHzCKeyruJYZwiHFNbJWQoXBvKDYXHaJQwxTItBIGNdBOTTPyAu") }, + { XHDR("amsqlbl", "jassyEUeGh") }, + { XHDR("xwnpjtdacgvlxwztm", "xBRuOZgPPUNIajAsRvmFJfyfKXTxyhVxMRitAzfrTAYorRgTHMnGIbKWKkQvirGClBzuCXIND") }, + { XHDR("bsyrbfzzqfagzdkprl", "lQIpFuoMGjqHXVXDxTtsqwHYldAxXhQUjlfARjaqZdBdjsOlIOdUYUcayBAjxyFLZjQNjUMveJIuVTR") }, + { XHDR("f", "AyCBDEBtJPZNdPUqbxokZtjGnaQnKgVvcWeoraxkOhwSh") }, + { XHDR("kwkixvzbn", "uNbWHZFTpjSINOUoWlivxkGtZEkIRsHInCkWTMipvXUEuJycuAcdHzozfltyQJOQiishsCvygNjit") }, + { XHDR("kmwhnasklla", "CqoSEkaYFegLUMeghGxxqsAdSL") }, + { XHDR("rlajmvylmiq", "eNSjWlOaaPlTJRroLKzIsLjkEpTQsLJumMMJiu") }, + { XHDR("ehfauzyiw", "PMiDyzQFjOfRvZrlQ") }, + { XHDR("r", "ZbUbskZjzCRkTduvAmiBcqGnZqiYOrBDlFLTbrkAYOTnMGwuXtMUxzEaGoCjRhxhaItkpWFMPv") }, + { XHDR("jjbqgdrmxifs", "wpRLzbgg") }, + { XHDR("hagoafgtvpfgmdnpz", "hhSmyhHQqhZzLJBGuqpiBlbYWbjVfRgSpRTSyoCBrHrkmGgDSMNLdaaVFX") }, + { XHDR("feknz", "ycRcsoTLFYHMFqBzoijsdfuYIVejjUEOHZmlACsPKXdtWlZmcYciMQk") }, + { XHDR("jezeqgujuoaun", "EGBDJWQigfnAd") }, + { XHDR("rlpjjgqwpaszklnsata", "LQQaJHVrtlGxrorwVcGArqjUAahxTZFaCdatzHlGVKkxyUTkeIi") }, + { XHDR("yabfsbfp", "LQjFyi") }, + { XHDR("w", "ZODVgxBTvNylVVHkTYacUmVfqsfwCqFTttYnkuZOWWHLPNrnsLaCbrknkgtKidUjiXMSMGibJnh") }, + { XHDR("jcqcrwpv", "r") }, + { XHDR("tprihueaa", "fjGyFuwkxZVgLLUSEQjprJOxfboBEdjYknIRcauUczKHkZptlLwmINNIvxguZhP") }, + { XHDR("oqdhgcijzrfmvavbxa", "BDSNcJogWHKMbiSETrfjNwSiIbWfwHNHZzlBTRPtjXOIINvpJnTeNStciLUVlBANgtiO") }, + { XHDR("uiip", "AeQtiyGUeZTabmNeyXBOsXKvtxxdgdyyFKWwGEbpaJokDwZIsZNiuCGfClNkYqChCRPfvaEpeGNPtSuV") }, + { XHDR("qmhhodkwkee", "hMmWlquPjpMCjBMQKHGnxYYMfkdV") }, + { XHDR("hlxe", "gxUGDslIZCwjXTydsrzLrumkgHagGivSTdsUQEeccLZSEDItuoTRvZnJDIDPuswTwS") }, + { XHDR("iymenbfkqoyjsnsuw", "ZyFhsafQEfDEVYSBVPlGOFojaMMDsUYpuxCqMwzsmWmYevZiwoDvgcAH") }, + { XHDR("vcmflm", "oFwyRLQbKakcKVylvRzNFYxeapwkiHLKcTrhLNWQqDePfscEPVQnmhCLuqAhAdObwYZaEyOsY") }, + { XHDR("fiqhyqhlifb", "TNlftPHDqrpBqKljNDPKiTIwrnbAhJzhNZwWDBmmQfWSIpLOQDtmyKLtYZCMULKGrNsiZ") }, + { XHDR("rufwjlpcohzf", "DsmRKLmDbvMBvImnbdcerPWtxWkMeHHpGDwjkoDZbegPxEhUMUPCgJVDEDGHQcEaFugCglsucmLts") }, + { XHDR("ihxku", "dmEtoCVDKMCXYPFwZHqhBOJoyqdVFINDcbINsPwjzpFdbKGKnkjMUuJ") }, + { XHDR("wjowj", "VnvrvaGhnNhEvW") }, + { XHDR("oezykuexsuzrn", "jDWxzXDFtldy") }, + { XHDR("o", "HmIGukwAaWpzfyibQrPuimPqXhyTghHTRTyiMnGWPHHsgUUZEAoLcXqoVOUdaXfz") }, + { XHDR("fmnz", "VerLZXQMhiGivvSsSbitAwoDSpwJEuhhvKiECFyoTXzumdjUDGtnrfQrgNhgXDWlANwIPflCikGuK") }, + { XHDR("shsmvtrurwukjoowqimk", "oivqyEcHUgQPbzEFcDyLBAqFHzxG") }, + { XHDR("lkru", "NLXwodYUbtluIYVrtkjLEdomgYPVfEE") }, + { XHDR("zgrbpilndocskqah", "BjKyoezLMvdvnQjJvzDgaUeLHTLsxYaseEtJnIfsBTZMcEKZElUBYtpSIRl") }, + { XHDR("pobhukib", "DocARNavRkLcwZHdJJFFntqxUxgQMY") }, + { XHDR("vbcqiekodgk", "AyzJSrCZhjuYMiwLWiNmHXjhJOTkhraUhnGMtfdAHaxrjMAQBXKIroOPCwpFpYomqOohuoZJNA") }, + { XHDR("rhxntxkwmnwggvqn", "BAwPDsUtWjwvsBgLFdnobAYQFNUCxgFJPq") }, + { XHDR("qmnone", "RiuqbHZyPmYMlHZsLkGDcpswJtfaVTf") }, + { XHDR("lkgweouzu", "ni") }, + { XHDR("xqidqmcrzlpiphkbwawt", "PpxgOyAqobAUCTfbSbuSBgWMxETCsryJrIvCCfdBaWEhoBptcRfkDmqtirlmHWgQazcNXAkItrkKPu") }, + { XHDR("kqdhdevxvc", "SxrcAgJKWyapwPdhdodPYzIsTEVatvKP") }, + { XHDR("ze", "LEjGdLScKVzRvWpQFFPfWhEZKUsHJBdyOuqcQJfkb") }, + { XHDR("ihrtyzatlch", "HYuRMCIUSOQsyMONqhCqQool") }, + { XHDR("whqsfptffxqvgsdthebx", "KjjEIC") }, + { XHDR("rimeou", "CgzPoBpesIBubIOopfqHhaDALGXrgenbasLiKbzYDR") }, + { XHDR("axuamjhwb", "DcHXDqJlwdWTdMvpqtKAJp") }, + { XHDR("vez", "OofTbWyMcW") }, + { XHDR("at", "aBws") }, + { XHDR("cglvmuxhrdctzmwcuhhq", "NIRLnUUDllfIqTWyRjbqjcmBCDhNwwQgPFqcZaTbGwvwrnyQm") }, + { XHDR("axjl", "pusPYfXINO") }, + { XHDR("llunttzglisfdmerr", "HclsEDVxbFlucIwqepegJrADijKyABHsRimykmHPcM") }, + { XHDR("ooxbpqkvunmlakdrjrgu", "wNrNEfjHlRMGWCmBZHfhapvKeqsowCWjLJEgGFnvRkZbxQrdZXuh") }, + { XHDR("ltxwrsmhoasuiuqr", "wh") }, + { XHDR("gylvfrorrkynacnkvc", "BKUQHBBowtFRiwLmxPCocTiptjPrJJvlzITgNCSfwejWBLhxO") }, + { XHDR("vtrtgxrmqpegstcmc", "NCbjtMxpeNFJGsuGavnReeEzBiIIYpsiyhMdsF") }, + { XHDR("xhuibitkmdifjzfg", "xcALtFptquvzJULDTkxNbDHFyA") }, + { XHDR("mvqpjewnfppfrva", "eGmrzxghAFrcvQnNeNwYvQdeDDKvFubMQYXgJmnxNjDpSpNEkMGiVIewCkgaDmZn") }, + { XHDR("mglai", "FYIdknOjcXtSHrhDt") }, + { XHDR("qhlbwaqrsyglwzgbnb", "XrJbZZTyKdnpSObPRHKqAuDQPTenRBJQBXYWtyTHmBdIJWvnrtDAPKlpDuYMYpXbIDotTeaireaEOJS") }, + { XHDR("bllmhztrvygxg", "ux") }, + { XHDR("xdytjk", "YIgz") }, + { XHDR("qugp", "JYPslniMvvNSZzlwQIMkVwMljNdqmYaezDhSBcidnixDeRsgVboYAHvfFuFaaAUgOcf") }, + { XHDR("ihvtuugysduxsgkgekm", "mHFpSJHBLvaRZwGOJXbBfulNsHnWqSqWeTFbBe") }, + { XHDR("osavstj", "fYWtyPSGNUnYIzouzbcRleFLOpKCdWjbvuGgUzKSBVEtkKhnFD") }, + { XHDR("cmebsdykwzxalkt", "rAzlCQgRLVwXwsxEgMNVhsxiAENDRiqFmFsEfMBHd") }, + { XHDR("kaevxacoj", "DeMCyaBVMRUQNE") }, + { XHDR("yfzdzdexsxhsot", "tdsCaKUoeCmaTygSCcgrQvNm") }, + { XHDR("biecknrgp", "KcJoqeuBszKbdVjocXKIdYVLioMWFtRgNdrLsRW") }, + { XHDR("oicxcpliqfbvmjni", "faHszcmeJIQMBDpwbLEOhrUNMnJIOcHUgfYILIrkTBIdLVurnxc") }, + { XHDR("rluudvb", "lDkILBVTDQpykogrZfcIanAsfOygYkYEuyPAVIbGQjrNUKrFLREzub") }, + { XHDR("utvjsmezgbhnt", "cgzCqsWpZHreJYzpmiILHlhWWsuouaGrbNkAfqhjZywfdZWPeDKd") }, + { XHDR("oxirynrnqvzcsmrcipv", "QbXymwWloEaXFBFZxKYAMdzhzPznapYrFLxqaVzufxSJwEbSFmgJTIBMgstpxASRLSzdOwjIj") }, + { XHDR("c", "i") }, + { XHDR("ybcxojetvxt", "VU") }, + { XHDR("fktcceqcalldo", "oVHt") }, + { XHDR("hucavavz", "ClmllYodPQDsENBlkhyKUMTzdIimVNaszhrcW") }, + { XHDR("duduigsgtumb", "gvchmyhhhCFPgPDWTZmztUfXZesaFcKtHAIwjWSxgxlfkFYKs") }, + { XHDR("vdsupmngp", "lyHFnHFkuvjQpTQmRPYUvJoxxiyFzsuJoeHrJGiUSWghTnBerJTevtPVrHmEwBsnTaoyMJXokU") }, + { XHDR("qdpwrmmecvachirqtw", "fPqsGSFXmYbANdsRkTMYGQSzuAPMFmsiKpjXx") }, + { XHDR("phehfuwscgr", "njgrv") }, + { XHDR("smstnuqjonkogbdk", "dxqOrueoeFdia") }, + { XHDR("zpvyold", "qtmtVaumbIFDnICNfHhpUmEMvwwL") }, + { XHDR("vxive", "aoMCkutMsGlZkZzshoJAQBsRbIPVyehKXOShkbmhbHDrBlOWjFwnBJdFiaigl") }, + { XHDR("oinxajhkveenzb", "MDBFkXPBatJWFdVfouYMcYKEqcLaYMHhpVNQUdCsPZlCAdcTvbpVWjpjPAsMBBneSMvHvWyI") }, + { XHDR("ilrkujeiprbzumpkg", "pOaWFtGUKXUPTbuXhmIiRWrbuTrBmDcRpldnLKIEPKFMLQBTWDKYgOCJJlhWZsspF") }, + { XHDR("mjrjphx", "WPmnUC") }, + { XHDR("kgdrwhdxtbfntjr", "jPAPoyDuofmRePbNvoDPpukXtWxgTGsbGUeBOGqKpLeEMeihWTYgt") }, + { XHDR("fiohqumwfuyfwhdgz", "tZhHcXwLU") }, + { XHDR("z", "bfPHVZaiyQZGHyWvCtQpZOOWdjcRdlUeTSCIcVNHBCSlnbqQKNWoeWBbrhm") }, + { XHDR("kecvtiydohw", "VpdtVKZN") }, + { XHDR("onztzibfxwoati", "wiMvawBkqRdPJHfwHbxEtzPyADccMCcFKaUxnzNLokuorGQAbrvTttzxEJNzCBAXrwz") }, + { XHDR("kvsrcgfycjbmhbi", "zlJxsNHPpVRXzFaTlJqP") }, + { XHDR("uq", "gQdCZwPUTFkLIcUSAEIGLSkNF") }, + { XHDR("qkggkggzfqbqquc", "mgjnbwCEIQDxCltklonnTCjgZCrnbLYmRDgCau") }, + { XHDR("ppbdcczzqat", "NNhEGtDVMQhKPhmztKFpEnWYeeoxrsBQZJbECseSqOquBynDEqDZtfbJwMgK") }, + { XHDR("ppaaaatxixuqgliqvtv", "iaopEFmrqbumfWurBWvytQHrxtROeftUrYeQpOZEinSpCogbbkGxrcmKzwLGMBkXMRwpQoZPF") }, + { XHDR("dvytcabmgaaudsn", "QDhaybjWwzpXrgzslgiXUhZyWRDwKOovCYzxVx") }, + { XHDR("vfdqktenitlu", "WSdmWjFzWjjlXmlm") }, + { XHDR("shqcdo", "FLDohERfrhYj") }, + { XHDR("jv", "WOxbuNgXNkXfmVt") }, + { XHDR("pfrppapebyekpezoa", "qMqCZGgUBKbWHUSpstUtzvYTJoBUNmOKgnXmnVKrNApqxedezSVYRrUUMstLCdDwqpnN") }, + { XHDR("dlmksffl", "mHPeekAvsYxLYyyhcwkcHwoNZmoEDjFPRiQSvHpNuTJWXOAFAKdoiMhBst") }, + { XHDR("echbmdudyfvbqvupba", "gdAeUnmwElChpvfjCajqQhwgeH") }, + { XHDR("mcsdccyoxgtyrjtcey", "ycRRYzYtXWUzisWdddlcgJlbGdPjMZoLNOtYQIEhVVAXIygDzszD") }, + { XHDR("wpupziswcmkguyampyp", "JgBPIapzIwUCPapWKsXgCXbiQjwqPWCfFwMEaEMDpZMtWI") }, + { XHDR("ukyaypiut", "UXiXPzmZkHdMAOcJnFRRV") }, + { XHDR("qrjkneytskesin", "hFFtIJgEAbSTfWPipvVfpLPohYUYDOxkheyWUSYzRztWZBiQsbWGdntzVZRVpPiKW") }, + { XHDR("zpfgcnycgaqlsys", "EDREXajpdgNhJseTiUEuHKDEjFILTyGmedobPqLMxGfVigDnCDEWhCGENiGlzoMlPGojxVQaDSjcEK") }, + { XHDR("thepykyirphmytlfo", "jiDiDVBQetGZqSgyagXRdKXeXiyggpNhLoEyBReEXfTZiZmKkFcovdFEZpMdRpFBYLWOWXhKGvBwQM") }, + { XHDR("zhhrfthgncqeylb", "HIsjotPNSmZKviqJPWTtlQDxREZNEwrCLVOcHKSmtjBmpnqhnmqQqeexQJFimO") }, + { XHDR("jlrgfiiavpq", "IjXWyxwaoYUDtZfbYyCExjuVtuicbMaivwjrZJqlEDTGUlaGobEpvnlThZgQCDFMNCiN") }, + { XHDR("sfymq", "DmuDofuqCFciKPqdvqikbdh") }, + { XHDR("dlsggb", "FofRhIevgiWWGPcfmkoHWuJpGtBSvlpLzQHNhhnxKMqSpeNPwGGm") }, + { XHDR("gulkecqaeqssnycgs", "gxQaceHBjBUobXBbzwTEwgVnZlOyJhjUuSTFVijJVBOPXgSme") }, + { XHDR("el", "pnpOVIyxHxXg") }, + { XHDR("xmdcfrtmotarmyjlsyuk", "VRLUTwhZXnPcTPQhCmmlEbSlOrZgyXnNnfvCjDLmHmNGFeomBVNrEjreMiJLNz") }, + { XHDR("stlhtfsyzjlsf", "szrVbAEMEnUlNAYaVQEQngYglTAjjYUgfathTAjIwrxVCEJgAWJ") }, + { XHDR("eqrq", "tjtyKIfHBTWAgjiaRiHHzCrX") }, + { XHDR("ihfvkwxmn", "LGTTcuhNiKpZHlflyECaUMwVVubDteYlaXLettnPCQDt") }, + { XHDR("qa", "tnSwYLwZDacSYvjzhDPeLOFhBmMgJSFiGIalTtvdwZzoZQYKIBvyxXrxA") }, + { XHDR("rpaxoaexlc", "pcXPJGFpmRxYPrVsckQvTLdITwzQIDa") }, + { XHDR("lweibl", "yKIXqKqZUkyrpHvpFLPjnRYVXvwxkZHOQYSEUSjbyVeCrlMUOaydAeoEjiyjtItet") }, + { XHDR("wpcczpvako", "xYciBlNcvejJmtZiUkGKxxoZJfDhoNejqdCl") }, + { XHDR("ceijxbztndpkllof", "OnqMaQRcTvxyADhSKxyFCyllYkTjBlWpRiBb") }, + { XHDR("bqnhgwab", "kUssjhOqPFrEdryJTViQezCKYlZcbnogNgroPOx") }, + { XHDR("pdaxjddryrtnzwqwc", "kACdDZdmsOZoNNmZpBKTsOeGKnFLjfgbQcSHLFObyecZKfPObCaFtcM") }, + { XHDR("cprakqnveaoyahfkdu", "KeULukxOtBdvdlkwJUNPoWKLujYPAYKhGDaHeBXWcbHQCOsVIfDftVCtBLxVYHuFcktFmK") }, + { XHDR("xvnzhmxpscmkijobew", "FSnAfXghCFKyNWaxBmOqDlZMqujw") }, + { XHDR("hpdpa", "pWJkPvNEbMVxccNsmyNsShFSkvFkuKSKHLpucodJuRIPVhbTCsvFpwA") }, + { XHDR("cviqrvizgx", "NehOeZKKGtgSWfrZupPWGujiaePsifHbylCmvkyyFRqgC") }, + { XHDR("kvkxjuptm", "jQsoBBivRpiAxp") }, + { XHDR("maep", "mWKal") }, + { XHDR("dodciyxldtv", "tCnepqgftHXNLGydzLKYmXRSTtnxmCVAOoZukRekmiMCRW") }, + { XHDR("lycxyutqtovmkzmchyq", "XWSERRCrLCscFosxpzUzFspFLvmOHppCiqJWpYeVsfBvJdRwwwjJjRmkLMBMgGADGvylfgxhNz") }, + { XHDR("rgcjdpfoxheele", "AlYRlZvcoIEaUaOroYMQkNAdgtzAmYKmelGqKa") }, + { XHDR("gnpjgp", "HSBXsQshZOSLNvEToeqvsTMOxYIaRqkWdEwkkvyhFOKyfOUuoSHSafVDDERtz") }, + { XHDR("dzejsdugofm", "DYJgqcRLjlAaz") }, + { XHDR("euwkpprb", "DjHRJiwGfJyLteMMJXrxNsLejdoCzeUBtrWHNYvWfzKiMifxhZXDVrqNiLYXZKRvyVMlLGzOqCxe") }, + { XHDR("qqeauv", "AIsWzpSLzkgEJTsyLHgtLiEiQlEPsb") }, + { XHDR("lxwvkhwhlsde", "bCYpTPPJoYdQRwXiPqCZxdrCGzvlUiNVRVaLFtZbkhlpDZMerzXcvIXvS") }, + { XHDR("wpayzqmoejwl", "EALiGeWtFTSAvjKxYAKgoQqoObHCMslwbqvFxBNVekXERJxzdNcuIJD") }, + { XHDR("qoojrvgdciwhvwpdn", "pXQLyCgMxPnpRtgApMJaCcnqfaWgltdrpsWVouDcMSGiytYmrCyktFJDj") }, + { XHDR("tqnoi", "YawGSOvPrZlQyP") }, + { XHDR("arrv", "mRQJudJRAlnWOIxvKEgHKfPZWhNFNVJEDelhFav") }, + { XHDR("kslivktfqmwbfdrma", "rqPElkneJiRcQmjEuPvPGaFYAOVsYHswmarTbXdfUxmBNpiQVtbHYd") }, + { XHDR("zpnczqjdxavdcvpi", "JWIxqJLgGmDydNppSObE") }, + { XHDR("jz", "UMiFOgbvVDmLjCaFevTwnkoEbVsTL") }, + { XHDR("ssquimet", "LJeERl") }, + { XHDR("hzxrpjyqxffvymykn", "AcRFZVsksacBMyRpM") }, + { XHDR("ymwullnnsxlctonnvopc", "iYrISKRgmwTfmQxzYRHryGUsSllVIWZEOmIYiHkEPwdvwIw") }, + { XHDR("unynclyxjnjaxnsrdzf", "G") }, + { XHDR("fqmdygkemojldkf", "blVbWytVTalNSWCoAvILaVePymIyQLodyAH") }, + { XHDR("kgcxj", "tClhpLzQiZGpefDhhfufjuKGDvOgPjscDWIGZLpGFzAlXpt") }, + { XHDR("mtnrstzsjeotgcf", "apvLPMMEHhzdcqvOVYwiBuAmmlbiqmZQbtCOekEbrQfyTliwYiXeIEFVnQdfoNMQTX") }, + { XHDR("b", "DMogRuBmojJgmMxpNskhTRXSpZeFviPdkCvLRLFEsUK") }, + { XHDR("fpvapvxpajb", "LCVnDA") }, + { XHDR("ricmckagzfqdw", "kMKKo") }, + { XHDR("oufrbnttrzadz", "XsbcCnrMsBOwEkoMTOSiBZfPEsaExtPnjhPUoeunOYWBfBR") }, + { XHDR("nzyf", "YlBPmaZjqVzFkBLnfDBWtSHKPLJrNPHAJZzDP") }, + { XHDR("ionkqgcnsswbhiz", "Q") }, + { XHDR("bbb", "DgYTJBEiahI") }, + { XHDR("ebx", "wwKnnTXMXkNboyoGobiEqnMVXmRpMhtrlfGyETj") }, + { XHDR("clhvxrirlegjyiuhu", "clHSgxeQnvZnIc") }, + { XHDR("krbpvpfpjrss", "jPahPWvjXDAIjnHxrIsO") }, + { XHDR("qfypihhjqqfenjflp", "NmeFfxTPCsUu") }, + { XHDR("ikz", "mxgmhKCFxo") }, + { XHDR("nifilpqy", "jvvegtLgDjdQtMMzQmQikGflgolrDWTCAjBlxYpWCnJjuVCcTHtbLORUvhUPLEscBxSnCJjG") }, + { XHDR("njrxlpw", "PwOsTiYDKTYMzxiEKZqkQKZjO") }, + { XHDR("aibwaivwmpaxl", "RnoVkjhEMaFKyjRctGOzcyH") }, + { XHDR("smea", "YBfPWmNtfMKmCJagNBkJROWyciSVUFPSEXHVdDQSoUUlrqIxzgw") }, + { XHDR("v", "qkFTWhsXpxodxwIiaCHjcTjwXxQDwPeLESYZui") }, + { XHDR("gmbqbylbglxutuuglol", "HAFYRDefgGUnimuWNvTzgQdThsgLKEggXHtPCpnvvDAfZDTyHTfmkUjErbGGQMhkCNbleKM") }, + { XHDR("uahdnlz", "lLumFZRUQKonGcnKOqgNYivouROMcreDiIBkUILyWlEBhUbxCqi") }, + { XHDR("uejkuefppx", "dZgfRBMPKdxeZAm") }, + { XHDR("bukctpf", "iIXnySoDytjBbyeoVmscXtAneFyrHXXjLCmhFVgKApFfcIR") }, + { XHDR("kwfgu", "BJjuxqfkOcubYeAvdaBDSotaJHmbgSLmuIqXygbjPvJMChofpgJmgNEoYsDhCpeLxxdwh") }, + { XHDR("ptzwddxloygrwa", "MRzMmUbmkCue") }, + { XHDR("nytxb", "tFDevniaWYkYlowgxqZkqwdrMLSVLdRtApsZDeUbGtWyOvVYPgsVFfbwHodpSA") }, + { XHDR("mlrbebba", "lqkpoJuJfgKiaLMLMVtvaTfpUySSLsOGhPsOQpkVXinwej") }, + { XHDR("byf", "zGZAqqEtBrejZEoCALMXypfBj") }, + { XHDR("lvuxenyjtdgiktpq", "uSBssRkdSIOCSan") }, + { XHDR("urhiaqlbkdxha", "kMogNmguGxrUBBBPhnpRyCSDGISEKoEhMoeMpqvRkGltoCFpCxrRHpFbR") }, + { XHDR("gpoojnrao", "XAAEzCSeVvq") }, + { XHDR("kwjpbqhhmmkkzpas", "rOZmWVYgOWYjzimBeALKQFjSglVIriDvOefufRfvsvihJEsnKXKsbBFpcEU") }, + { XHDR("akzcdrkzomgjxfxxv", "oEYXqyEonlxAShuaLmSPZdPXeoVxHGyQoMOggzPzmXZvsSHTNGQzbPvcpaEgecpZOMJ") }, + { XHDR("fgvro", "fmMZvArIObOHCJausThTPv") }, + { XHDR("snyhxpihnjlbo", "SKghdJdMdJBrRQWvSNMfDWemGTpojNJLPXvCUfOYDQruzqktUIljPXWMaebwQcpXQsOAenvWBiPbYP") }, + { XHDR("lrubbwlja", "qRZVkuhKzDwHfElJFVnEfAOyLnyzktRzErtIIIzWDifivfGgDYBe") }, + { XHDR("enzkoocjlymfhsmulkdg", "vrQteOrFNIfBLPKCKuPDcGPCVGBelHEcOCZlcnElkWOnbTykpQSH") }, + { XHDR("wtmxhgrgzagorhpfxdg", "FpjNcHIqeYUJKJilBHkHhLNHGRlqZYRpdZEKzAauKyLEUFsWqgCy") }, + { XHDR("dji", "npdEKVgVcmeeAiFiEfiNpxBNymsTiLiOQSlrbRNV") }, + { XHDR("pvrojmpghlscquygn", "SSMsbSjZKESTtjiGhownYrGyMAlxjmQMtpmisilkLmyjQiBhVQkVrLGdjXIaXwrPCe") }, + { XHDR("tunfdpzxr", "EsAysUpFoeNaMcNmvRRxWzwaWiwNmoZFlylmyuWBSkgrqwSYtEHHZKThwh") }, + { XHDR("jsm", "pMxBveGkeAhlZkEhuxLDtdRolSVupWnWnpEVkjYWZpwzINEyaIFKLXhgQhsmLFOdkQ") }, + { XHDR("l", "EWnUhCqdjlzH") }, + { XHDR("kflvcgssccyrotvqxe", "fWxWooxDXhDCMFkPXbIwAOIewTVcLwxbTujKGucSJXkFykTGfQPBRNnHxXsReaMQXOG") }, + { XHDR("uvimtycfyaoorn", "GNSXtWzKlLcIHkecoeLIBrAYxPAJUclMinecxPhKmURItunmemVMvCeUdrwIeJOxiajibMgZbXCHGFbt") }, + { XHDR("pdfzobwxnmrfgtssf", "XvYGCJrLcuRE") }, + { XHDR("jlhtjfwvevnobnmchj", "DgmREdAGSXPVzwSHxSArWyGoJUYuBImmtZUrciuEYHnLz") }, + { XHDR("reopbwrgcrhuboycfuod", "qzMEVrjkgiLXwHuBxWbqumqHdXcIlWXfbMnpaCHFZjndiKQj") }, + { XHDR("dodsio", "jBXZMWKWgSiVcjgpTAWsUNolgEnRrnqRsOeD") }, + { XHDR("pnmpflpzbf", "UfOLnFmipcDCqfQkHAopxSHKsxkyeeWmPegQLJdVzmxceSScyNDu") }, + { XHDR("im", "CwDWkLnbpPtYKvHyesBXlDZxMWImVPWHviMukl") }, + { XHDR("bogzednb", "yGCYlOPcFImCtZegWKnbcxBHJJrLsYcEWSJNKYlepTJldmWbcWsoDup") }, + { XHDR("xqdzrchfphwghhapx", "UOUpzQBvIhrtSyPMRGKvJGXQMNHadKBevlUAEWLLezvpBSGocRMoMtopEfBpPUTOG") }, + { XHDR("nxdashfxhbjafa", "NeVcnQnNZTCyzLAttrfSohbzXDmNsKTXtOXuzXaqrGfKcQEwxtYKdrOdhNgOQT") }, + { XHDR("xdlmyooccdmhbjfj", "aHspjhpccYWXrnkQbNrnpXuF") }, + { XHDR("m", "DnpgXajxTwifRfOvHRzcEslrzAUazNSKnmrWAIPkYvGVHSHG") }, + { XHDR("yjyfqiamksrdovlj", "rezmSCYTCVdIPbikgx") }, + { XHDR("vjbkcbceamy", "LjyKIloApamxCQwwigedWiHHmAslFgPcyCgvzFmfEujavfsJwBcMFElcwllzklYenViKG") }, + { XHDR("dmlvyhqbijlgbarrkv", "PwgcwlCmlwEwTbEYfIn") }, + { XHDR("zjncn", "XxiegQzmyWOzFDSlNBsprCcBuuludAEsRANkGQQl") }, + { XHDR("pcldblkegfcfflns", "CHziAvtzJoHPnsMrMfqtIJpNzjCUkwiZNaDHsoUDfiAIZzDKrUdFJATeYVapxlUEhvDyLxRwpKO") }, + { XHDR("xiglyughpidddzoe", "QPfwknHPNwFOCcFFKPMcZ") }, + { XHDR("asskdlhiqnca", "olSWxWDkrvuNTrbpaKZcAzXMNYuwvfWVwLrrJFrNkj") }, + { XHDR("fxzfkveepnglll", "KLJjmLbGyTWnUOUKwvdLZatJqYlmjAwtiNDyL") }, + { XHDR("hzcazxiyswxpjz", "EFZXgNZJUkgSPOofYQNAIKnyrt") }, + { XHDR("kjcrki", "EOnjgRMFYcNDNpYQxtmcBbrDqUwHyxVwxNfrmDn") }, + { XHDR("dqojdubarvpqcdwpbct", "ZgZfLyHHgsoiOYVVBNWcusQBjCCUUpJAQVniuAINhjjpfzGkm") }, + { XHDR("hivzaajnmmfvzpmsw", "zSjtLkKvzOOLwejVgFMftbFktxevWmcNvXcOzpgqMrLIqYotXvIbly") }, + { XHDR("nzvxn", "EuLOSjAIYinaSiyPBFLAttdVXPyHdYpzHVhCgnNaunWvjJoGgGQjlgNOLsLDtygzo") }, + { XHDR("ys", "bSbNGLrfQfymHeRwbsbCjrFyjNylZTWmZzMIIjXyQuiUpgubhxESWduDUKbffMkuGgGWkJDXgr") }, + { XHDR("ncbxqnqoygpccptyvjo", "N") }, + { XHDR("rsv", "AgmjyxzK") }, + { XHDR("lfckuocpjzbawa", "iyKPMwZRSrOojAsZBvzMtRArfnSuHCoeexLyxSoTxlfGsXuSbuEfnbVIbgPnGSbBuXPhHAL") }, + { XHDR("ncyumwc", "XxoE") }, + { XHDR("csclkaux", "yIXZtxHECJxLCrGQnxvjidWUgodshtTtyPRVEdCZJo") }, + { XHDR("faszzzfxluumr", "mfakkTYMQcLYuRtOhZmuysVijaiwPHNmLZASaGvHJxkxXmxNNkKUGceocrqkTwmyPNFmIrF") }, + { XHDR("jiuxjv", "kjVLCedVbrUvKcCHCyVCAIqhwxuhSPtxlPQyqACNexUngAemVkjGJFkTKfppXHlCr") }, + { XHDR("vzqswtewaokxb", "oSpnZfFzNGM") }, + { XHDR("wnroqysohseetfhirxp", "YWOVqhUBFCXTaTsiMstddSSeidiSR") }, + { XHDR("nlefgcmbdvglatde", "petikGQyauAQCPCDya") }, + { XHDR("w", "aVzSBAbiSZKtbxuUUDaEfKlaFxqoFGgoZrfcXITkbCsOqBLGMXiOuixGfsbgYARWgVducxjSkKaYmRqM") }, + { XHDR("urcqi", "iORJLHPopWgYdEtQuYUyRkzKqYiHuSQvONDHi") }, + { XHDR("kqoeutjggkgo", "eGnbifuRYdLSzuEvRcy") }, + { XHDR("kxyajdiucrdkj", "degmhdOHKksYsuaQUKxpkqlociyzDTkOOiTnyMcTHCtdRjkjIZrmMRYMCwvLuaqftsBNBrkAdvvrUEAQ") }, + { XHDR("gpwvatkoyjmoauhqnp", "VIWqslmkWJMfhSBVqGhoCrUNDUdPpcJW") }, + { XHDR("gjmqxdelfkcogcpcjnq", "NdtLJxRRbAmlwtfRqzPuJMZPabKldVwLAIzfGKZ") }, + { XHDR("bjdxwxguuzsqnb", "fuUDDSZqCRyVLXgE") }, + { XHDR("jdzwpblmbltkbtorcfj", "byUVxKwflc") }, + { XHDR("gzwjuvrddxygjh", "nzZcIvrBtjajSNYQkOII") }, + { XHDR("xllnxbeldhlkyjwqav", "NreNSMlb") }, + { XHDR("cwxul", "XRAuxXVzjmaIfYaTNhazMIXmnZqtlTjZVHcPBdbegfvepNPRoXhlFEEZiNBZUwuxnfODaWyc") }, + { XHDR("yrhbeldobfecgu", "hUhbuDBevmtZdqaElmGCQObJuglhIeCplBRzcNLKXPFFUvXBSFmAYgbEhTLDrL") }, + { XHDR("aofu", "fHVDgxCCqLoydMpnbLuqNG") }, + { XHDR("rj", "GcdVDzbkxFUDcOlVfKdqToqCSWHGMAkQBQiPihbqVV") }, + { XHDR("lpqwgtyi", "LmSlqFsOoAHinnVvSaReDjmdZpQarBpdLwaSt") }, + { XHDR("gtmoznmbeqkkiu", "zcD") }, + { XHDR("xbnkegsalmgljwp", "ivDMwJWYcGcCSNVZO") }, + { XHDR("yapoaeeg", "iamkckUvSYHNdqTupwvBuYqdGLLxyILUaKwOUdcmZbFukmHlMrxcuWQY") }, + { XHDR("ixcpgnicagprtvpi", "BZOOgmEWCWsQHMjjtsaMgwxDFq") }, + { XHDR("jf", "umpCZQCVabmuDBcOrD") }, + { XHDR("hfmkllfvvzavcpeefaon", "zzGZWdfyHQmxHpZDKYGhqgVmiaMavKRtFDjJEDIcsVTvYMunkocKoJlFTgADxsWJbOGxsZt") }, + { XHDR("dhzjrfufrzdl", "naILrRCQaDTpELzZKqckvgls") }, + { XHDR("qypwsblcqbl", "qgrDUIPxpSmtRJNCZSiqgMJsVOfGEswMXNMIufIQlIRaVdmiMALqChblHwZpVoZczuSINPRttXloI") }, + { XHDR("kqujdfjvqtxgiv", "GDfVMfnSISsQRgTuklYirVlbFYldpjIwzHwKnexnibcXzZlZvXQjpBSckQztAz") }, + { XHDR("ebkimfrkx", "qnCsmlDAOHjnzXPbKSXDTlnuaEAHBoXYznmju") }, + { XHDR("kdlkxcnw", "snVyIyUoZpseYrMPlbrCpVVnshimjLswspXDMFKZQzHrVv") }, + { XHDR("gtezrzmxiwmyt", "knQwAwykMICnlgOfSmbUQkKUjAMbouSDOctyoH") }, + { XHDR("gosfbmtcqrn", "mRZhVJwaWy") }, + { XHDR("yafrbaswy", "pOXPQXUjkDEjaBvbOjsCgPqKlveywPwWyIMGTvCgUmtpqqtnJJ") }, + { XHDR("jbifc", "uqnzCbKMVkDkNQfuxtTlMLhJTsTcHOvOTnXhIRRYsQqqPryWtBJYWJYKqoE") }, + { XHDR("eotymspcwepnwpsk", "fyceSyHHEtZR") }, + { XHDR("loqs", "npwHLImwmfANNVNfGA") }, + { XHDR("bjrmwhioklmfi", "XUsTjEWiELgaJeisRXxmGyQVmKGfKDLSPOvcCEpjLqliYkWjCnfhcjllWPEzowJyI") }, + { XHDR("gnorrlzryfselesry", "UgghiaSMxpEDIgmJOOedcEhCIyjDVCKOEXPattoBukzVIZLXCsSd") }, + { XHDR("xvz", "rrIv") }, + { XHDR("hbkuxnjanhzaxfpptglv", "wntQTqzFCY") }, + { XHDR("gfzdfxl", "uwrahaJlNEbLGMOUzShOxCdHoARbpzMCuksD") }, + { XHDR("mhvddmfnqrnfszvaaaas", "GPCaDihffB") }, + { XHDR("gspgvcdkr", "tBQLsXvDldKqloSeYe") }, + { XHDR("muvosefqjznoxwfufvyz", "GvIbCglJDlREpF") }, + { XHDR("iptrvzozzc", "sbikKHKKmdysvTDSkaUhzcaeFrsgGOYJGIfcVjOLxAIO") }, + { XHDR("ckkb", "ZNaFfvSWvpyGUskznzkuNCdPeMWIELkpxdXLSqmQBJRofqnhazQ") }, + { XHDR("xtkaeslz", "ulPfKcDhAIyNFDkuDPZjnHJCtzfViPNBRPiIuuLvBbhBgUFdHzZlGvZird") }, + { XHDR("utyu", "lOPLUhoAuAvxxossxY") }, + { XHDR("mhuezkdn", "ZjaFfskZtdeLgJXfeDlHdAGqnoOAOIHaSdRpamjIKh") }, + { XHDR("takvsvqiuwhv", "OWKbzqcpatNqaahYhXOTTVBdDiIqDokAZfvFyYmDcApHyw") }, + { XHDR("xozbaogdgzblrxfir", "KslYolihoasPlbcsudxnJvjorTQoAMBxMQVWeuNdILkvJZUECsuHMkBRQCUJqfHpocrKXx") }, + { XHDR("pqpl", "FCScjUUhEpnunIiCEzCNAFRlaGBfTSWnpWRMpGdfibkInIXkizYhf") }, + { XHDR("rbmzutgzoren", "OJIxGHeFrZAUYaGGhLZvpONiDbMwLmwvZeHQ") }, + { XHDR("kuuomyy", "mXUGRnLFIfTvsDFxefvYtjfmeqDbhBwWWgcW") }, + { XHDR("esfuijeknux", "SqQMObcMFAIEYypScCxOgWfngOSBOIXukWEGWaqINzqLLUkeUnNPvTivD") }, + { XHDR("hnvtesqtrlx", "pmregoGHHGUKZFpjrLMHczMGvDxXZBAWEapOzrEaRM") }, + { XHDR("vkglp", "FGEjBegQqrDyihcokFAcBNZCsQDXlJUGipaOjDnJiyjcqrghsarszMozjtWgYfeIbznstWT") }, + { XHDR("gnvjatnqxezhej", "AVcGcXScem") }, + { XHDR("ylurblqhbllobwdhor", "ZzIjBuyRQSGmbYTjFJdCZyRDkiUjRlAofebyMSkWoLCOSvxzDYrtadLKYYjMSkIwG") }, + { XHDR("vvcbdowxyo", "USWVEmZrkFGUUNlpaMZzgsZpeQTIKEgGYgXjRyEWl") }, + { XHDR("ygyssed", "ZTSIdkxSkCdEWSPQeExQZfNPQeteJYTiYLRDVQHo") }, + { XHDR("issoynlgyqjrnzqso", "mmITFlIEydjlJjEDeOgskokXKWEvrkbkQUTldEwpUgZrSBIkIY") }, + { XHDR("fxibmgme", "tsYlRdb") }, + { XHDR("wieuqggpdkcmrgzb", "mnUWarhhZNvP") }, + { XHDR("byghdkjzdlgoatpsjnoe", "edAAJEvknAzRbIABiLvypQfxg") }, + { XHDR("qgwbwjclropwd", "xsxKyAoBfTP") }, + { XHDR("lbvxrzfkkofrgxjzj", "dqNFbZvxYvTurhsBbclrhWdtxjhyYDwDUwqeABIrZgsNAQZClejTCPiKwHwIY") }, + { XHDR("kk", "NxXpGpztJLnJsFIGpmoMindREypCFvHLaYPiFFcujDEJxXxxrqMSPdsekn") }, + { XHDR("akfhjyw", "SsjGAbjBUTfQyavaaimLTuEngJNIsJfRTBzffQTtKrctjrwABiRaTFglNGpTqbmWBXDYIDu") }, + { XHDR("iaccush", "liNcUrFXUPlvkWWDsykJJuFtyzUKjWrKHao") }, + { XHDR("ufroz", "gWljUbJlgBVCc") }, + { XHDR("wbzxzagbulunle", "ryoKX") }, + { XHDR("yifizfzfuagttu", "cgAyZcbRcfreIReILChNcfckuVKNYelsBCMCbrzQioIABxlIkpVFoeHrHZClVghKphtqNQyoL") }, + { XHDR("jzq", "zWxHSsCcJPYxgkFQDaFdhZZdlLyigFLDvXeytYhbElnUcaCJKtRBP") }, + { XHDR("tlgczcoofieflqfdfv", "EkafPodOFBAntsZDTXpifRdcUhLLWbQxbaZV") }, + { XHDR("xvpee", "NVSaYItKMnjnaUVSpaqsRSpYsxweLyCUrNyPJfPawnkcTm") }, + { XHDR("pb", "No") }, + { XHDR("trsefucmubwsfoehf", "BhyEpHJRCSIEWbRMcLrSArwkgZLeCrnmMkVoTLJvMTjBznQgPaeQNpboUthHtvxBW") }, + { XHDR("rbzhdsssfb", "qUJoHrvleFpUedFjwYAmGuJpUsNQoYvrASGidw") }, + { XHDR("sho", "JcjmKPwuLgJOG") }, + { XHDR("oxreqscxcpvilfojoi", "QQElGFdOiPlDLGSgsgoieRqBEQJqudHTzwWDXAMCsleZD") }, + { XHDR("lackhnccrcst", "SDriCgvA") }, + { XHDR("vdoxxttvyxzh", "QKPVybYggfCIRNysHfsbXzDJFk") }, + { XHDR("toydfch", "EscydTkHqVZjliMURgaGoKWhkwchoivQwtvqBdT") }, + { XHDR("soy", "jEvNtElvzzKcNGqtnXthRnqJUFXcctIKBTOSTFL") }, + { XHDR("rrvetynianbqrmxy", "RGmPUeARKRtKAPtXRLHlxbKHYEVUQQaexYJOwzHPYOVjOBVsrwGeWPRxVCmySXBwPBoic") }, + { XHDR("lpiaorhqio", "TpLxHRNSVLtuUItqAfBfXStAokzV") }, + { XHDR("iuocwwxqjyfiqtum", "gIhsvhcvtUUkFtuYEMhpxLYVlbgszDgnkOSxGqmtYNkMNeuRwFvXpgCrjLGNlUQe") }, + { XHDR("mfbgqqdj", "XCktgOEmmWRqWxARXdGpYOswdtmPhuuUfSCUbppYfhCmyApdIJsjhGQqe") }, + { XHDR("imzwawngnzfxeh", "CtQmwdPkeqqKUBJMeivXJLTJTNueDwhhGUjNfOiXbFryNBSUeotqDfPozRoCmyhN") }, + { XHDR("kwqzusgpoavuciwtyrw", "GMzaDtnMqVJdkcllYnCrWdUUMFDDvvDfmajRNsqDqBhQjccrOTdSWkQeLXETNyuNdZZDGMlxNWu") }, + { XHDR("xojohaqmnwuk", "hFCWtfxniiJf") }, + { XHDR("alwdstphvrwlv", "PGeGXbQ") }, + { XHDR("avceslwwsb", "WhItzAUfDNadSnitEHUuDfkGVrHwOvtBIukmClydtuEeTGXCTMTicTcXV") }, + { XHDR("ughwvrbkqspftegssoz", "bKnkSGAYGDmIrDYubZsgNWJmCqYXRKNsJuwdyucMlCewhbswmHqOk") }, + { XHDR("gbalutcowrwmxmzomk", "diuUSqzFEpiifWfYTegzIDEPkrsPhIsHTSGRbhKFnQKEsGkBxzPrEn") }, + { XHDR("fppk", "mvYCZwTuUwJjDyVzgDzJKLjWWi") }, + { XHDR("bfy", "qzQUOyxEnxmBHBkpFFjQaOJzAqjcpamAunkUCCWjdzVCTNvSXSLWhskVThtcFPZVFRmyIQYE") }, + { XHDR("sslhbmcij", "uyGCyclaKiMtcPIVMzPdTzOmHRCECmuDgnfKceXXBnyxNpWTgrDQwaRBwGIhJIIQNLICkoBA") }, + { XHDR("ydjnyty", "pIyVQDSYHTimidauzdTioNCzPuZWnmFhAiFcPGtbglxmaztsYcgHP") }, + { XHDR("mxuhppajdmbv", "XubuUVCT") }, + { XHDR("oyrkmz", "MlFjgWzeeaDbEAEcuxJxQFzfqqLkAwDQQIjpwT") }, + { XHDR("ad", "losAnxOHzngcSokYAZXrKYugvTMADyRuRKdBwtFrbYHDqj") }, + { XHDR("itf", "YSIRVKBszVMXPdinFMRgaFxe") }, + { XHDR("jpwfeingbx", "puualBJMzmAQXkQmVbOwtPRQiULrmhJ") }, + { XHDR("u", "awRUmuMpBfOVmFxKIySepyFmPZVxqPe") }, + { XHDR("jalnzncqvgnuayu", "usLPhMmRxUQaUoHqhLZHfDzsuvxudYUwyeOFoYkPB") }, + { XHDR("xvu", "VAoSHEptFKTTp") }, + { XHDR("eavhpnf", "gBeKlnMDnUsUQDtICLdHLFLslEgFYQCQRkWrjavvcdOVMRoDKYRHWvMlGLHzfDKzbHHemqoNhwMIsjkQ") }, + { XHDR("gwkwjo", "wj") }, + { XHDR("dfpmlwqtxxafgdqgi", "hXkIgNyKzpAWFMOoPYjamNWQmV") }, + { XHDR("o", "sVrssjhcgikIbPaTXvdusCVHXWvKVcSUlDOEdCWhnIvEXndCWsEkJETeThbBEcHOcvWzqYeK") }, + { XHDR("ftqvjpnwvxo", "TDnjQtfXysPuQflfPuooPslQyHM") }, + { XHDR("swqnjtfcjtmbynsdvp", "DQkntMPMBuPnlhOZoxkTtfXhDB") }, + { XHDR("qnbru", "jkuynTQtfgwDrdROeBOsXCqATLyVGQVdqfHixzuxyMpZGtalVIFhxWE") }, + { XHDR("nbm", "BNBuetWezTHRslnHwktEIjgVHPZMWHsnPZAXOIiLcJdiIFQOBzmfRqsfIqZzhSnzNtf") }, + { XHDR("cjjjugrksws", "UxQngRBfYMroNkTREQwMkOhJBxdufcoAsrDZdY") }, + { XHDR("ukyetnrkv", "jLwzWHdXFwylaaKFGKIbLdqoOSWnknoNNTxGDlWCcRdRDFB") }, + { XHDR("fyvfgqmqfsokxgew", "mJt") }, + { XHDR("vgskrelcubuzuz", "UUneDnMdFsVOATmzNzwWdxGAOeMJzVLnofqxVKiZsjtpdSiDleLVgFeuXZgtIAcPU") }, + { XHDR("weoyhluclcihfokopb", "nEqkmWIuISSVZxcrkXlBNjrUBRhkaA") }, + { XHDR("hdmynwlnmhwxqh", "ELRqCwRwMTcfYjBYhgPrhfetCFvAydYozQCGnODHcZCWuuKIzWGnXRe") }, + { XHDR("tetgeabvtrckxgeybnnh", "ONZXqUocKGErE") }, + { XHDR("fsgmr", "hZhHZcFfNwuNXFKgHczHmKyQoNDDbsmbBlcEACrZnWyLYxFKAiZPC") }, + { XHDR("mrqplljwuuxwo", "WhnxreyXZthZnDQcDHTjJdWPHilloWbzEWXMeqihX") }, + { XHDR("efgy", "WmDMjsvjRjPORHuZZZibVHgKsljJCGopbcUSXxjXusjQfEWGLjEQXZRmGcpXYSFqSnTiqY") }, + { XHDR("uqotwj", "FlieSOkTFZGgdFURoSuzkywcDKCjmrAheyTyYFfxR") }, + { XHDR("uzlhnwqokx", "QUXaKQvwCFjhhsYHheaOdFdMzEvyBTvojVKjME") }, + { XHDR("pgikwahhrrl", "BXGNKylwqrRktRxmGbowOqJaeNSIkjNLohx") }, + { XHDR("hlkcscieyzquveunrx", "qXFwzsFTjTYrjHZTFapgAVXiauxrMSuYPxEujpp") }, + { XHDR("dpedtkrzpdojav", "dKjkWwmAtwWDvnGGAMvXnXEVsTNzLCMYwbvmOxWGX") }, + { XHDR("fgcosmbxgjwmgwxke", "z") }, + { XHDR("mb", "ZFCvpfkhxcT") }, + { XHDR("maankpjg", "fjjOVkLUwDOjQLGnUFVbjvPYVdqNbjNiTSrOggsTyVpmzPnPuzaldSnMqmAMI") }, + { XHDR("xkxaatzs", "TmzZ") }, + { XHDR("canrwh", "xocTrXHsP") }, + { XHDR("fzzjrduludnmeapv", "NcJZdpxCaxxYbYypHbFABXMNVgcPwdERlncXAKZeFZVJndZGsSw") }, + { XHDR("z", "esJTdVTTxtRMejaRCXFBddRDvdOkuJnCkCU") }, + { XHDR("wlgqxdgdbku", "fHhHFsoFtYyygnAhDtDvkghaIdclDsVvRFZdlpXIqlUFlqVhM") }, + { XHDR("ubgetfkwaikoi", "zrIGYKinVCMDovHPpPKOOgtOIdOSwUBsFnGauvWA") }, + { XHDR("fhhgkxbokrbsastbcs", "UAyDpowtIsGzaaTSseLJQeTOgOSjizIChIDdNWUKOUeCEFddGJkxDULzxRBqhrIBdHIGwj") }, + { XHDR("nuazvdusqkjlczcfskeb", "buuFnSuTUee") }, + { XHDR("ydfcupvtokkfnktvx", "WbYarnTmJhpLJYTzmFonltZOOuTUhVoOEVLAAMPUXTKlztdTfwWWi") }, + { XHDR("vcurgfhvhgpw", "UWTnFSUOfoZxscWcsKMROmUSYdhypvSYnKAJLToCCLiMtK") }, + { XHDR("jllziycld", "tsZAipwMeMdWnpwdfPsonhIW") }, + { XHDR("wszzsodzjaok", "QVoNCnXLpdpnqCPDzfbvMgThOxupkfO") }, + { XHDR("kjwzbojyujkddj", "HsSAZgjWnMoimuHNwGcOAOhKey") }, + { XHDR("zknyoelkacrpour", "ePYBTNKPIJHgqzZSJorlTXQUFfzmdVWsdONGQUKtZdLKswA") }, + { XHDR("ypxfrfwgoqkhrbzxuvnv", "jXRJIAZwuZQOzxqvodhusfFoXnZjYGZzJVEgmmmWiwEBvvldHEyZryvFEdmdQMjFIh") }, + { XHDR("mdobkydzon", "EpxEMVVXPZhvMQeZGZwDFpZBxLEKxeSuxUjqMCIDTUTeAiFgbmexCCVIkttDDZJcSIYLFhtezY") }, + { XHDR("r", "TfCKpDMhhmdkTCldEUjwCPsSGgGgmmJeLbZTnLhOMDLnysHiftZLJuoQEFkVXa") }, + { XHDR("zsetsifqvvuaqtrvyqp", "gZjKttaInDghptkbWNXAvbMDBzLsrYUBSOawSkioBvpBenkfNFnkFBpi") }, + { XHDR("ipitbzhwiytqwdqy", "xvmGHtNXUnCseGSHXOddfuKbEOqyJBXMwjEpGigKHokeEVmXlJQJaJzZdWkebirWpHsLNHxHCeo") }, + { XHDR("ofdcatyvvvsgtqwleiby", "TLcZxq") }, + { XHDR("fselboemyqz", "sEIWfLDx") }, + { XHDR("cpfootviqtguwptc", "upUMopod") }, + { XHDR("jjjgjesjmwyripbtst", "hUx") }, + { XHDR("znuiekprmoxka", "cQcAjZSGyvHIBBqhFwoFouvtuOjLUFOihjjMGrtdIFlGlQuQGwKpwbeWIkxXimdsnBAz") }, + { XHDR("y", "BqTQplWVpPghUpkTtlxndazmL") }, + { XHDR("gztnexs", "qnnCnaMRIXjwjdhYkUJveWIkhoXUgHgwVHClPeQcSkKvOSWiRPMtfrB") }, + { XHDR("kqrrvffcabvlqhiajsk", "XfzmfGXVIGQgm") }, + { XHDR("uloatbuwatrjxf", "YxNOAgeapbrKjybwUMomUOwUvHBX") }, + { XHDR("queeubksfssnvpginc", "waLQprUwkWxCBZsspaqVGpAKASWYCWtmmQeTVVkBalVauvTaCPexfkFUC") }, + { XHDR("ojyptjkq", "cWyuIdoMeaMOwP") }, + { XHDR("iyugtgqheg", "ZWquKGbgZmI") }, + { XHDR("try", "aXcmzmntgMr") }, + { XHDR("wnglvf", "UqUHkSEKmlprZUeMtialTSzyGrEgTRGwjZ") }, + { XHDR("mzfdqugpd", "NWQquWNAJuzkfnjRhnCfQNpvmRfoHMtgMzyhUppKYaAsGTK") }, + { XHDR("qyeq", "bDRqdYeCnoLsFvuqPoegPWQ") }, + { XHDR("ccxbdgwpqafxctbrmp", "uIaDFYYtJjtcRkSlOhEtInYFHBjRZwnAexNQvm") }, + { XHDR("ebzwl", "UxUrsuLlOfDnzCvYrHSKneKXYCRdbruZNioBVleBzMQuuwdSmROtjxdAVgdQeSDHRPJpxiKJrN") }, + { XHDR("zztgb", "DPqDeWCQvGYVxVkrfaOXkgiqdzKcBryZrFtJJGLuygZHfQdSqWEZrlMQXCtsPRnbew") }, + { XHDR("qodwrogwygdgmdedqno", "AZOLkIxebrcbWBPwloKOnrlroRhzNHOaKlitZxRLsW") }, + { XHDR("oszulw", "UpJnYvXAiHSXnMhcoGqEwsApdhwDgxZBjPkbmdTNQTzGGmylvTpPVZOqcppgWQuRfpKntGdzFvhcO") }, + { XHDR("zqziumioenzlamrxh", "KfzRcJTSoUEZJafAepPvCBNygwVujfElilovlypHkzPuFwgvOnyNJBbBSRmpggEaxiTVzJnlJcTGVLP") }, + { XHDR("qzwdytban", "vTvNJbosRc") }, + { XHDR("sbarlxblw", "sWDeHiUPbvertgjIsdSOJvqlDqvTCUMe") }, + { XHDR("dga", "iZpApgFGyeUvnCKsuqDgidfJDZhfJPlDDHHeQnIkkvxqCTQIjoTMel") }, + { XHDR("ab", "bpBxCcPtGKKKRjNvgYybEOFbHbDGW") }, + { XHDR("ipkbsbte", "QATWJLaSGeRfumMtPptqzILgIPxBctnHtXiuaJYRjynSPqXCPQNOkMeIPtMJlrrbg") }, + { XHDR("hxhqvivly", "QVzTbNdSjpmOXwdAJVniyiHHqUWohkxqYQHPwLziQHOLYLUcLLgIjZpCeqLZSSaxWsafxkz") }, + { XHDR("scrbr", "MnWqjSczCGhDyQZLqvFohyvEPslFPa") }, + { XHDR("lwfopczarxfjwnih", "CEofICRYX") }, + { XHDR("mihxdzw", "rcvwJooAgGAGbZAlGLNUpWTRdVJPSoHwSKlqMxCZZqZrCpUkMqtBlUgYGczMpUAz") }, + { XHDR("acwf", "TSdzYcqZZueHHtvRWWoVyTnysHIcLeODenxkRJ") }, + { XHDR("riwg", "bknufjvvMbkCcJLQxYweKinbuqQNN") }, + { XHDR("fqysnmsjecxa", "ujGnNTmPwgtQUdUMnrRMmjQMeGqzLXucJCVLqksTsILfNPOdoRerRC") }, + { XHDR("hfluox", "nXoddbzIMxyceMNWHMIbTMqSouyCGpvTxxPgLXJttaXvLV") }, + { XHDR("lqvxkvn", "PlTPuIwkoETxwkGeSXYDVriEIyOQgmOzVUcWIfpGaGUGhnkHoyFQVCXdsxibERLNcJgZcK") }, + { XHDR("uspod", "BLxDfpfGVbuvHlq") }, + { XHDR("q", "TqqPaHtXiyzSXiftZeYChtzPlJiOKHTiEyyEteZalWdEKgNIEiUlxuakAEgiehTeXVYHRriVAd") }, + { XHDR("hiucl", "tZHVkwUPSfwXwUtjbXKDBGBhwdRtXZDNuAUHuoKTtNBByVtinurXnHGoEwbYQaYsTsSKq") }, + { XHDR("phu", "QYtuLblPzzeTuptqVZagGlKQHpNbfGwPBcB") }, + { XHDR("puhrmttcsynpa", "nqfLveGLQpsnVeCOcDCZMVlBwcGdRHoBSEDRTSVQLMqXbHkKqFGyNKjjb") }, + { XHDR("nchrd", "bPMPjTxjKBKkrhtaQEImGAtVXHnfxlgDYlFlUyzQdJvejOynRYTmOQ") }, + { XHDR("oj", "OokRqcdlVUmYPMaTkXmwScSmcyzyPqzR") }, + { XHDR("hhkyk", "DqabpeOTZYLqeioBkISUbIosxYRHnrTqXhfm") }, + { XHDR("vdcgw", "NiaptRRwgghIFZvefsUPjjd") }, + { XHDR("aazuqxyw", "mBJlYuXkrcgxiUJBzHVmymUsy") }, + { XHDR("gnnxozusfrgfmzfstmo", "KUUEXLxvTXJiMpQSPGCNvjDtrrsioKupkPFIqSmBfIaPtdqrg") }, + { XHDR("uoyhoigaoebzklcpmcpu", "euvErNcUNcxPaxBnehlysJv") }, + { XHDR("g", "JKFyNLpczAcZIyDdStLKfuu") }, + { XHDR("vtxtvf", "AJjleoYTAtfJTJiyLsIBVLhujZ") }, + { XHDR("chiorina", "rHJxXlf") }, + { XHDR("ixyrnrlidiccnsjr", "TfUTxrvuDyXbiUwXHfzfXaaGAgmzcVfwUEtExCxXWQtHoHGoDuXjTERlqhmKcpLZCx") }, + { XHDR("s", "JChQjzNsxZdfhjfGPoRZewnIYIwgGnoSfxkIAiuttnloWFtopaKUGJFZihZHpeZCUPvbruCIIbX") }, + { XHDR("omjwjd", "XATUCTkKbzCkTfPRJXbjYHo") }, + { XHDR("xqcvyfway", "kBuocMWscSkYFlmtrCaVgIn") }, + { XHDR("bxe", "QwyiNqPPYiArMsBRTNbtZcbguxWNeALPjXFDFBkUlWVW") }, + { XHDR("riq", "ZHmfQTjwAOalCCHNdQfoJcEqBABAFVeBC") }, + { XHDR("jmzzkizyfcypf", "iYxVoIKAGgKXkEgWhSldeZCJnDHMmSxXQyWAhYOOBSGMCfAUmhjLKe") }, + { XHDR("dxxbozgpeuiyw", "zUHFRYxIiyRdwOdNhTABKHkaSNunzpuaUSO") }, + { XHDR("nmigmlrmp", "UiKuIsIsGxamIFGuZAeDvbWazkDmzlKOunrOOArFZADevQhHlaLKuNWeO") }, + { XHDR("dndunbdlkeidbfo", "qMCiItJkjvkoZQiOAYfzLVeCcQDTGqr") }, + { XHDR("adrnlibiaxnuesp", "kdBXeHPrYsPLrbFMJXFsjWvjCECdHVhJgTAWGxySZXVVVjWQGdLLPrhReIMlzgKSKSnCLrVG") }, + { XHDR("wdgegxwsjs", "mxKHfOkRqBoz") }, + { XHDR("ghhczstmod", "kZWjIJcUjRYn") }, + { XHDR("jtsjcl", "PjfAR") }, + { XHDR("etieikayuyfoxpxyvl", "LksbeBsmLxTvfnQCQTCRTdMEtecXTIBoHenuYgAGjFNU") }, + { XHDR("ortsjjqmroxs", "sx") }, + { XHDR("yjnrealgcgldwxbnmtdd", "kwzmCwoMfeUeQIgkbAgyNcWyjCJJRsXoBLXNEUsT") }, + { XHDR("kikinwpgrtghbwubd", "aESgKTdCfGJSrtCXNkudcWKOSSCOunBDhpfUuLkbaTcqccprwsflFYYHTbzRHUej") }, + { XHDR("vzagka", "daAVFENdZJAbYdisHeoUygOGEW") }, + { XHDR("ksufgecyucknfoflft", "PGtqrkDwJjHoHgzCZAxau") }, + { XHDR("ddhpccmxrxdmhvyxt", "UBCZqSkBkmnkWaAoJrlUXCjwfkTGoCeespQgEynJbJZVOXejJSTbnoiNEmTEKvHd") }, + { XHDR("pyayomqwgxtmday", "hTVXBnUZfDZwoUpcOfgpeviLzBMlBmfKWEeZcoSkpHVqCNAvdxzCCuRWFvToZHnykkPWouit") }, + { XHDR("r", "C") }, + { XHDR("odptqt", "mWIhDVmzyAKDKYAtgccJfJCYjjovjAykWTZudLSNIjSk") }, + { XHDR("ddyxsp", "fSmF") }, + { XHDR("avmshuuddk", "GnsmOOQBMIsOnDXmVPpkwuXYxt") }, + { XHDR("zccyaaljgtmi", "CXJWDCRDyjtSTtqMEIDuUDuJKsJNSYKFYYyXfTSiNh") }, + { XHDR("kmlpnwotxjcywfsjpcgh", "ZxQqKMghmNuXLZwODjTvxRcsGvtTuMKGVNsyonXNsonyetEXyDwmwBcXgCFKGFPFAASoNWyQFLrvP") }, + { XHDR("llxlv", "RXiuJYftnopEdzovDPSKBtUpRxuaALo") }, + { XHDR("ljyijgwyuial", "kcTSDOzrxvwnKjeuJRtrUokJdAv") }, + { XHDR("loriinakrxfpwiif", "ixGwYKSuXJtVHzKgIhMRFpUEiTrMCLwNLPTBiHwEtkeQJsi") }, + { XHDR("dtugfipneosefrle", "uYrIHUfoFMurlIOOBrbpJAgTUEfeNcPutWIFBocXfDXbOsRzeVkTfbXXmHMTjWQLvZSaACsSpaNEx") }, + { XHDR("yj", "tpzdltSlsBRnKNaZucdMvCzuFVpIVtlApmNcvCE") }, + { XHDR("uwhvohos", "BnSaeizYmSPHYhFpLwOORlnzoqSvfXRIzMXKi") }, + { XHDR("fvx", "epYjjGDLvXOWrHxpOUujQtNJCGiMvgXBuVuexhXGYPMjkldpeHRDcqXJhAxHRaALQptAxsMP") }, + { XHDR("rwcgcgwlxr", "ECJoGjTqqYcEkVtYdFyEuLLi") }, + { XHDR("uyfxrpfkc", "BomCCYPmuwSrkoAMAMiBsBRMzvnpnPqsGHCydqJWJKXkOGvbTxWKiltoEETyhlVVFeWqCbmFXD") }, + { XHDR("zgibyegzpiywbywecykk", "ffzdlyRYjRQxRLWvoDdmuxgdEAJxLp") }, + { XHDR("koounzokrwabezmxnqhx", "bjFmVMAdjQeH") }, + { XHDR("jpneej", "MabKixgsoFOMdUiE") }, + { XHDR("ktns", "lkeQ") }, + { XHDR("itsobdekjlxmyhnora", "tpTOKbCYMaFRieFoatUICFacCSQRCrIAQCIqDF") }, + { XHDR("gtq", "EAjHEQruUWQhPHafRiouDDOIU") }, + { XHDR("crlnmsouqoibeodgpx", "UHlSSJhhVkMrdSvDdgomeyFlHgLYNPVWjMjjYphOulFknaSM") }, + { XHDR("szgamcxn", "PTHehtwSAWDmIriiYKWcROHeYqvBZvXTeBDdrsNNBcLZgTATEbafZvfxwiCkkCLKdcfXh") }, + { XHDR("cneehuzsfle", "fRUu") }, + { XHDR("be", "ybQfHITjGhZfwKXDguzMQJFxwZZEePYw") }, + { XHDR("jqeefzdtfan", "zYsJuJkOHsUFCQwRKdKRhruXkhDiGbFQzDxfNfvAeKfncc") }, + { XHDR("vvmkjdqbdrbtxlhgzvs", "MTuaqVrPMHFZKCJcwSwSfMJxukbaEtUPddkrnvcqigJlRCrvnYiXqOydjKOtwrwefuBgTDwtWLcg") }, + { XHDR("lpyoqrsmpwmlotoqmv", "wTaQTtuvAaVLRNOvWPdxX") }, + { XHDR("nqwwbweuzhnekd", "qNEEynM") }, + { XHDR("rwfgzpgvx", "BrKkUmDlBqsSScPGpBhOUvWYnxUksi") }, + { XHDR("stn", "PnhUXnpSjdhRYznc") }, + { XHDR("thrgy", "bT") }, + { XHDR("qbsltffvdlpi", "GogpGLpyFkmosnSzTfVUHqSEQrNczxqcHyycwsKfNLT") }, + { XHDR("gsouorduv", "qSjeipaVqvpGiunSoooVBzmkw") }, + { XHDR("be", "keEVxQtQuUMMwqIYVVdfAL") }, + { XHDR("qheptqbjhfr", "gsRoYOmIkgmMZNXLTquPiLpfoKAiurwlafsyXTufKJNzwkNEQegOMaQbsUVaKL") }, + { XHDR("eyqrcbqfkgmynrkpiwh", "sTOKCPzsQyfQkQRXbUZQySbkNdfxBrLACJKQeKlNLdObEHrxeeqvyFfMyRFiGAlOBGCnuGYzCXvV") }, + { XHDR("dlduiw", "xqViMWJfHfipUTuRGFJIOcilWDWsDpZRnxsuDZRWYDIJMLWQWlPxwVkzhlvDucGm") }, + { XHDR("shrvqxffbnu", "PzQ") }, + { XHDR("cgciujmepeidoc", "CwpVFXGglJR") }, + { XHDR("qkxmetkjnwkolcptlcy", "xnFErP") }, + { XHDR("uwtxdh", "PisyhGhFZrZFGafmkeDfLEUiMazwZZUYERYmFZqRANpjnobPTnjwbzGGOVMTMlcgiuLAwHCBU") }, + { XHDR("jsajntchprhamb", "jdzSIFIeyfwFbtiRfRwvgWfDHJjnvCwYKayIHzZySRNDQdukENTm") }, + { XHDR("aaijndn", "kOSKxKkrGSAdoJvqFCLgJgYOiLoSiHDfZZxdXlQaiPOOXwAcaHGGPLDsMu") }, + { XHDR("fgxukpagqtdukyn", "MdBGnGUswTsXNrrKLGZBzNbXCqxxNwzOHiRDGGOmxkZJnz") }, + { XHDR("ewfcs", "jEbQGYwZwdyvMvkFDNpuKGuNzG") }, + { XHDR("eourkf", "eRZGAxQjzEgXZrluXAknFXdLTvhSRcZg") }, + { XHDR("zosyb", "GOYhddasjXARutPccvWZyLieKJteKgrZFirhpFJMMhZTIjPABwrlJEjMRbMqiJgsVtJRUWToNyZuc") }, + { XHDR("umqwakrwkggnjxmepbbj", "vgOqorNdBrjRRiXafZpTukVxMNlHjjTVBLsDOXRCyaQGIQJBXWsbnGXvRRDcRlknEHESf") }, + { XHDR("njsrgkvlflwyuttmlgit", "PMAqZPSeLzHlyOixBsPVIcGKUypSUnoNyU") }, + { XHDR("hemstrqymzdeawy", "elQtKSonQyhJsXxDYwUnIUEYEZF") }, + { XHDR("yjtacvviy", "ukPFAaOfcvFFFQogRZjJLZduGMcSiyRRsP") }, + { XHDR("kzq", "NaTynabluquxScQmVGpEsNQQw") }, + { XHDR("ujcvggipxhvwwa", "VgIBfooZmvVTPNDjn") }, + { XHDR("uytffekf", "QHlCyPZedvrRIPKWosRjbNkIcTunfUCtRUdWwnvhyyBiIjWUejJkaDHiQaVQvwhqAn") }, + { XHDR("efdrcwfesbbxlrl", "bSfvNVnHNxmMLSRSxIIKXAYmqGwVMdCCFfyDuA") }, + { XHDR("e", "xFjEjnFtjBVHZMtMLJniLd") }, + { XHDR("naarqmbjxbxg", "kYuQIQaIckIVQA") }, + { XHDR("qbqc", "voCfGJkhMXJzsbAeuhWZqYAAJnT") }, + { XHDR("yflzocqetsugdai", "roseFhkhcAoacLjvEVsiTmdLxQcHqBwZYzzVqKVWErbudNdyRwkpJCFeXnqqQVC") }, + { XHDR("bsibiumxfaaxgaea", "sOOyutpKMIhhVnXqJTZlAIxCLEtjkQQvdNVAuetTpKlBLpeAbEQwiLNUqUtcKtAtlLRDYxEDXrwWlU") }, + { XHDR("li", "RrWKdzjejDAWrhkHci") }, + { XHDR("bokpfb", "yeGZIHpxHKgKKkHOrcAueipxNspWvThwTlVsVUnGOyKPgExAEknDEfJZaulVmkTGKiiYqKuuYX") }, + { XHDR("tbiacqmtkn", "ag") }, + { XHDR("eurswsgfddkupwnckmn", "veTKBvaropuqRQwmLMTUjgajPeyTJlodCbDWcLYCbEuXpUBuqfIuGXj") }, + { XHDR("krtmmgnftexuprnwri", "QXgSuBvShFqZOAyqdpkXvDVotDCxJPqhXvZXABWufUvirVuQUyUdnBpulGDbkGSKwwG") }, + { XHDR("lekbdlfroblkvn", "xeNXZbjATTUEXcMiye") }, + { XHDR("c", "NtYHzUsdP") }, + { XHDR("cdolxlsyovwrvaw", "SiQZyDLrTPJecDbclrejBgYHhRVclSndUmTihwgEZZZ") }, + { XHDR("jfaqpa", "rJeSkWDVaXYiffMwCRGzkjfJLPKtylMqcnGneXKmeutubyUarSWRwqmUOd") }, + { XHDR("lhrmwcokr", "BrOwRHwZoeisgxnTFihzbRnCditOLFEfzwQpB") }, + { XHDR("ajhbhkwgcdrlmydtkirg", "LszaFWbEkQGIKcYYFwEExJZoB") }, + { XHDR("scyp", "JovmkeWFikJsvCzzWpoFRXKxxv") }, + { XHDR("tfkfwjvijecmieonbop", "bYuEuJLGFBuOhLtDqNscXlQSTPxXFwLFOCchpNyrLfOtrMsnaqniCFNqqFfmxBNPXVKihalSmdAK") }, + { XHDR("dhppgapzrhanxpx", "tUoWlHXpdurgmDXNDhWaAKSGoxXwUvswZJZWWDGtKzFXFLFOQv") }, + { XHDR("c", "ycdUatpAsEnNTOxKqCniWbLbwmBEkaAmPpBJkjmYrZCAErgGGKyIGSsAgGLvwqunpsomWiFaIN") }, + { XHDR("ynmilmyknu", "XnAxLmBMRxlCY") }, + { XHDR("zyvfff", "CYCNkLgyFeGKXqsdeeaLjeJpzybPfozFUGkcOUWPPEO") }, + { XHDR("femwabmkj", "LavsYYyYwkpvrdfUCkxJphBDZlbIZeVfVKNguNfbOBchoniMnuHJDQJLJlGGjpYRIiRssVMa") }, + { XHDR("rvqriijf", "cTsrfGTvcAIEycQywKMSGKjzMIrWvVTFjRR") }, + { XHDR("lafhmfryvoghjdqfidr", "u") }, + { XHDR("xjskszsrkkwgc", "fzEhgiXUozlW") }, + { XHDR("rhcxjzevyrldfl", "jwqeLEBYXFfPobhLeZtEeAVpjVaGSPYWXrFfWFzOUTWLBdrLfVjOquFR") }, + { XHDR("duhyzznqtipllwdm", "KgTNpmlOZTMOQXTQcnzTLqBtiXWb") }, + { XHDR("caxbuaxzea", "HygLmbAEgkYTRKmwXBgznjghqaTvVMQsoKYbgxXpEdODpqYZcpynCyVsywMaFQbKFqzfxrUFNSiQElY") }, + { XHDR("mxsii", "ZshkUxYoUezJHYlFFNbxxLOQNOGxjBifYRlVhnUMKDNAXOnZaysMBfKmrEOa") }, + { XHDR("jytvapkmjyblgrt", "pelMEhipPKJAKsTLCufijyeZcshBWDMMgojYorDgTH") }, + { XHDR("sxurjycf", "dJxIiTSjvDxy") }, + { XHDR("qayaczvadgvxpjvda", "AdvZZFrolYcePzETxJldmfoGpDUhFgsWclCzpocgABZPeOkAfmiJrjnVcRStPPiQTJboUiuKGoPAZZ") }, + { XHDR("gntvhdqfndeqmc", "ZuRxvjdTSLsMxezFzHLkZjfgCOldXPoxKcacZiwrIrTwmmJbJznbhbfdPUF") }, + { XHDR("hmhjilagjbc", "gVVOu") }, + { XHDR("kji", "RXySiGKVABBTHQDQYvWBDLHTGVjLtDitiTFXMOyKDGFKoTXJwWwvGtqvozgj") }, + { XHDR("dpioawxpmzgm", "wOBaNTIjUpVNoqOtAFOaEVLcEFxUmPEIclNcwiXxGcqvFBfGU") }, + { XHDR("riscvkpdwzjbafxvav", "PCQejwPdUobncakCWUCBqlDIJQjqLFhwZsEsO") }, + { XHDR("nhfztrbe", "VZquKjisHXsNJyCfZUVhUAyyKelmTsf") }, + { XHDR("pmlyulgpbmapw", "QXoLFgoSAKqZRFHiJbGyGTVUhvQdOIczFClvaVfvVoNgiFMJNWJatBTkxrksGYUsOLVwxIUtHJrFfs") }, + { XHDR("wzeuxdubdreyayyy", "KEscMyqjJvHwRaUhrNjRFiLRrnvSeWsJpUpQfgipCZKEKLSCatAB") }, + { XHDR("blkggngj", "fKYBgDvWPasYYFTeegcGHyMVJiCYMKhYVsXSTzoptKLtRCVWsBoJGZaybobBJxfSiCBrZQR") }, + { XHDR("qpfxxb", "UcTEnoiqkRsvTSsoWAbFYBEmOltrHWqmh") }, + { XHDR("sxketsxx", "sVLheNTXkhbVKYOuJRituTamIdNRWXpeOZHoXeXgmYJAvhmDNVNbSeWKUXDZrzOjKjt") }, + { XHDR("ljhusogaoxvflg", "ZhavOjXdOTfvdBLKTfkljZxBgVopWYbRls") }, + { XHDR("erwfhprzmxhknxmmj", "oNdjdJVxleYVpla") }, + { XHDR("m", "BIaCWfpJkFnNbEyMNaIeFYAsQvJSpCgrUqu") }, + { XHDR("aoeymgsdjpzsiujoykq", "ZZRcdjAXeUYhIpCWVyDtJrqXraxrJwAIbPxoazZjfDEc") }, + { XHDR("p", "ucIinbrLkhKiTU") }, + { XHDR("vqbdivkgs", "QYxdiySqCGnHhlXoEiwSQeewxmtBiBjIJskIattP") }, + { XHDR("kiafkcivlgsom", "WCZnUJAHIKuTtVXtjrppdugNFCHSRFTSqRzVbLnHBJx") }, + { XHDR("uevahtcvvnsqxivj", "NWZbtOvQsrjdLFrTzxJnMaqoVOnoHjWGUdQPYIvsNftLcbXKHhJ") }, + { XHDR("bksshpwxxhviulph", "uwpchobemIkluNRKYOFHzMktGfzPQvnwZjwZD") }, + { XHDR("u", "FRlEfVPpLHvDFiGcHnOuLYWG") }, + { XHDR("zvbzjnkpetpninjrl", "YtbiCMyQiaVgvQekqFUylfubmsQDzpWcIQMTq") }, + { XHDR("kwcqyxbybeoxknsycqx", "dfN") }, + { XHDR("j", "eHDtDnyAciWsRMjpNuPdTssKFwHnOQWMElXDTXAYiJiaWVfScI") }, + { XHDR("nef", "hlcbdDiZjDnKocpQGM") }, + { XHDR("mlmmjejihdgddyhgq", "LQTyNPyaNuigyBfYzvSbXZqhkBT") }, + { XHDR("ja", "hknTakToJFRLnJdnnTnzyMBcPxCUPgQFGTVgoEEmCNcDTrMKlyPqdHT") }, + { XHDR("zghayck", "EgXbOeQtZbFrKbkCtKoetwKawFoFxsDvGkZQGIsBDKqfXtETX") }, + { XHDR("pgwwxokrdkevc", "rNopXVEwSEhxSfWkAqCNFcup") }, + { XHDR("tmkyxeesraaljziwxldg", "JLLTZoWEVU") }, + { XHDR("jaqfogeuybdfuawff", "vSszrmcBxupFE") }, + { XHDR("uajthlfavqtpj", "mcaVXm") }, + { XHDR("tsmwvcgvel", "FbjxfbDqjMHkdeSWrSsWtnjNTFSMGWkJdsJQHQgWfthIkXtrHHunQkoajtTgOEwhvCX") }, + { XHDR("r", "vQyakNrnNbdn") }, + { XHDR("tbzjwhdeouxnt", "OXKyikanvolQudsZBfzNKGdDDdnRmXsJzEvgYHmsQWwWEzswRCmJBf") }, + { XHDR("jkyrhpzniqrslglalj", "sShFxfAAVhJej") }, + { XHDR("qnggpgwmbgnksezblup", "zLPZbijIJLtAtvkiYEQmeaGBdMYktwPpuvVCfB") }, + { XHDR("olgttgx", "MDaBNdgcweWRkILWQaciiLLmTifhPPeeZsRRvFoYfdLvjPhlGoJECH") }, + { XHDR("ahowdsxdgiavvdx", "JkRitLISZLUNvmlVApIqYUTtbVDzSIsYtaYVDliwJjMqVcFeivODMWnOSPUOKHAyNJFTGRMvpCZWkK") }, + { XHDR("sevt", "rygUpSjDubzfBHRccoOlhDyhepuJwrklSjHEFtAZsgsTewvjB") }, + { XHDR("xfhtlrxytbpya", "mohIelIbiWOgrSYFdSdpxsiqwypQMBtIgDspmRXDGpWqFy") }, + { XHDR("fcmafalwk", "aqefglSbTsuRkwxezBXFBXaskvBsbXXkLIqbkSnAsRMSenufUaiKfrnWPSajuvPgIdwDjmKMuWYLBtO") }, + { XHDR("kdafexar", "GCViqiAtqiXAjUZirn") }, + { XHDR("dpwle", "LTTgGPPBVyHUcXTnEMgkgDOgeDqABRZoRokoeYduvfYUiussjWr") }, + { XHDR("gplyuiyrskr", "gycdbEeAhblSlsnxHXBnqzeHrPhUiIeXvIYIXvggIJVR") }, + { XHDR("zyovmgsslzxnqe", "mugWuRXSRAqCmRdDmycqqTazgsgxtNCRIj") }, + { XHDR("cjvudelwipjomp", "TOGtJTOjpodDjnlwkzTGVhfuFKNCKYgbczvNANycrMvrGruaxrgalnuTYXhTwgzPjirfDQcbSuCZcOTY") }, + { XHDR("usnkdxeizzagkiheb", "LbITYWgXITMoxDdrMvDUcmXVkjYuafcknUMYLsItHXEAbKqDpFXWiLtQUrMncOCXztTsOohL") }, + { XHDR("kggny", "OQRGBPUaZOFtMMBPPeRDNXVCvKvQDbwuaBw") }, + { XHDR("vuf", "XttgkaPlTjsIvrxcZjsrmSLxiOpJtDeIQbTuokfzQVTbqqeAhvakwllRIlSLEUhymHgoQVHlTFcEz") }, + { XHDR("jwrtlposksizzybkgsb", "WrdasnHcugMkSGvidcv") }, + { XHDR("hzskqhrrww", "EPmQGEWEAzJxQfOzALzANfbelJgbTaTtKWIPpldhIqIURTukYMDV") }, + { XHDR("fptnvz", "SUwbuXOjWtUGqCCyQNwkFmSWWhBbwgDrwFxvJXrikLIMgin") }, + { XHDR("xvkglzbzdgt", "vuKdgurBhjjKBerRZWeiwDQBRTKdLNbZjKHRsHwkuXpyDZNOAmwxgRkNkp") }, + { XHDR("privdoekotekypwn", "slcJiJdQYHisRlfRR") }, + { XHDR("wiuxgjjsdwvi", "JSyxd") }, + { XHDR("crzjowfg", "NpbBAIzAoHGw") }, + { XHDR("gidvkauzdgpcc", "PaEYxYEMOxpiWrajaHRlvoCsrZHRzWkc") }, + { XHDR("pfkunksrklqsozwcvf", "IoJybLRJvVHqaLopzZzmDPWAowyQwvOOlWbGpHYHVPggtbg") }, + { XHDR("tjgkykokzkwlefnkrhq", "dQSDANFwceNYrOlspxuMhzODDFYXoTYkAahYqwGNIrjQSuYesQnXJpX") }, + { XHDR("huzfgjsjsbecr", "CpozhOOuMAoGVDebVWOJqhXadAN") }, + { XHDR("ynbbdgo", "UBWnxXGkYXslfXCurjEhESfucmbMlzTWdUkWyQGNNhE") }, + { XHDR("onmpevbacdpc", "WSTmQOQetcgZoYtWkK") }, + { XHDR("goohbnz", "PxMOeUfWucjLHWQAHQvlfvyqmQglEdxXWSoaNxFoGNVwLvEFDBlMoVehJfFcLZarDpgDiCLrTtnbMra") }, + { XHDR("nifuyjyxwz", "dmfnRfncclbKJspHqjpEfyCIvFXIDuhbuJzyyjOvCZEXBYBSZtOXNipuwOSbRhIWWrpQsSJ") }, + { XHDR("ypcd", "jmfdQA") }, + { XHDR("rsqwfupguwhp", "byBNaLpIjJJqWIATBhCHRRCCYSBgaClLmZmvLXUwWCwJTaDzXNIcsjvqXsXupzSQYf") }, + { XHDR("tcevl", "qsdUNUFcvEHcjnKfXKCgGixcczQUKNjWbAQXUaPQJFROFMpufjjiQY") }, + { XHDR("nhlcaavhs", "jeWCwwWfcL") }, + { XHDR("fyjctmcn", "VnbctPXdzieufdeIQQZMBIIlfRkuYhItDMZOFeFstiyzwEtSnYOKRKEWSwuRxKlfrIeDJPL") }, + { XHDR("goegjwyrmcxd", "GTlLWNZORigxRCwQWwaTnXSe") }, + { XHDR("wmwabeywdty", "bhloHxJhzUMtyxnOdNQmwWEToNXHpDICxC") }, + { XHDR("adecljecdqjdxxke", "XowcuRUuryMyuoJKOOE") }, + { XHDR("qacuzeqkdqckvqtvkldt", "gfXSK") }, + { XHDR("dpdoxjbpnh", "O") }, + { XHDR("myyheisjzibiekkemo", "UhXlhqMemmkefzMnOpLhVvuOzPkakZuAUtBZOOaOfkKgNjiIuoXuKJfM") }, + { XHDR("o", "oxCpQgoSLOghWbkTwGpptUhTjyfjIQCqLTgxFySFXVpDmWLeVBVChastWswTQqJmLtObFoqFUHubp") }, + { XHDR("haiy", "djnNnLeYczAflhjytahV") }, + { XHDR("znajtwhkjpqp", "jWwIiKADFYDHkrWSAbiiVkWuPtANOPZxHmWlAS") }, + { XHDR("nzfydba", "UnfJVdhCBBwYOwtRfCJrRFJhbXTIVDGAzcObLlbZXyuCDbWIZnvmFaLDFIugjTpqo") }, + { XHDR("zvldoafaolyncdm", "ldqucsoPDvSiwPSrdrcYpooUTNCsTaeltLnbpPbvskUbXYaBLRwQYiZOMwnjQvk") }, + { XHDR("unkcxpghzgj", "GFgnhiyTlwRWlrXqTvmkhdmcWTvzQVrfPkeWTRyrdOWtoRtRJbbYSfaCgagS") }, + { XHDR("ssjszvs", "ZmMNDVQkexevUlpGGPHIlDPlUiYrtjzpdokwoukvvHmqaCbFXJHdmmdnuevwuclTBGBZrBJGicBGKkmT") }, + { XHDR("shkqymlyzhowgfwayy", "fwjVwPAFim") }, + { XHDR("wepyzj", "wgFwjHUDndQuIEnKrjVpQPdpOzvuQIQjuOmgfcpEprqWOFfGjAHGkxUeaXhoJbBAubuYaKh") }, + { XHDR("gsyzgysinhrzkkq", "ntSWFbgzCjBIWZjgbNDiwfEyMndAGPNxxr") }, + { XHDR("pxgs", "ELYuTfuDewQUiJwCyMCdXkCLJKuRrIZDAKjPcigZb") }, + { XHDR("l", "XsZpOfZssLAjqTUQLnvvckWvOqfdwrJcIZhxXNveJAuSK") }, + { XHDR("cd", "AsrTtnkXTIoLjJUfIxt") }, + { XHDR("uchagyddrweiozgkpxw", "kYjDvuZfhyyuFBaLRAwfbCeObeZJSIYqKHoxaZOvBXjIexyWL") }, + { XHDR("ajfrn", "UrwJ") }, + { XHDR("bbncvrldolonql", "y") }, + { XHDR("pippynbc", "tjodRNZEeujSyDccqyybiVsW") }, + { XHDR("psydc", "MXFUObmwuZlmRufCOjFM") }, + { XHDR("ni", "FPpZucbMrNuZLGgUkHYIUe") }, + { XHDR("eboysay", "thGxWsULRGoGmJf") }, + { XHDR("yrnzhgvmxmodrjss", "LYmiZUvMNEbjkxgDhuffkjqRoQsHptG") }, + { XHDR("kegoei", "FfuZnwtPfZNzplFUblrumjmBoJyMCjsQSdzWQHegxPwONyYVmCOtYevHIfZ") }, + { XHDR("nncyjhchbfdmv", "ElSIDqlMQlmPShjwSFaFFbtoUoufLVoAKjTFRorkgpSESBed") }, + { XHDR("ykrukxad", "DGlYYfuAAQxtxmgUoipBnrloUyGTTbfIAOPfsXhNRpIHXZevICRfSGMTgtWqOszTTdyhQirucUkR") }, + { XHDR("tadwiksrsiw", "LtpNALBVCDcbHkNCOoxhs") }, + { XHDR("zsgszhfrtqikdautiazo", "RKUsdwvZzGiRcJjqrcfkEEgSjqgJEMrGvJJIUVhXWhqhdjwtoGrjStFyMrkoHLQrAgjj") }, + { XHDR("hkree", "ZfuiOqmjHfoixfNzlhjLJxTJlIvpWlnMof") }, + { XHDR("ndrxijhmofuabgq", "XSRTETKNaWdmCCtgoMgHcmIaJoFsOBItgthVTDDBGKRPGMKRzhpHjbqznHagmfRHzFjRKYTVcMCOOoT") }, + { XHDR("oyqjuclvcgfgnxfiaex", "bzIKrAgtKYhSlYwhqbLzcpEejxztduzUwaqSNRwTjmrgE") }, + { XHDR("wvupz", "EwFZxrpjiXixPmSKGVwJUePLtGtWmIO") }, + { XHDR("pkjfmcvbmha", "tsZlaG") }, + { XHDR("s", "AVLDDvKNGNVzMPgtUTwzXEeInMUFGioGIzJKGwooAwcKnnYUnQDUMalAfJLdGswqpVhBDdgnKvW") }, + { XHDR("wwiowygghfm", "u") }, + { XHDR("ibqifctbupnunzc", "TpEcRjPmwAIvgYwMRzJPkIhbfSmcxoMRMFcyNoZMMUfNUQptOPZzEfJmnjAoHu") }, + { XHDR("tujctqww", "YAQnArfaOhnpQPCGWYEEVTyxeucpwSKmnhihIcYTtupBFO") }, + { XHDR("tkmimppxinhwwjxz", "AzjTrWheCHkCpYJwXvUOJADHHJhYyElwIXsS") }, + { XHDR("ncpgasxxplvk", "vKwqV") }, + { XHDR("mzkffjcpwqglvvly", "SADeFBojafTCcIWXuCzhRzHVMDEUFtnepwNBtZHumtTteziIiRLnFNEvVTtEQvAQQHwfpdspxygYW") }, + { XHDR("fohuidzttfmgmjv", "TYiWjmEXPlbQggxqTMMkVZuiWxBDAezIYLLNvuiSzTY") }, + { XHDR("mgcgtmwenorc", "EPTEHjRPQNxyEJjUlFlXCwxNSadNiCsitBmvIJEGvuAiGsROPt") }, + { XHDR("zomtmcsdq", "bfskfmzJcYpBONMwBCvCENOxELtHJNzTeQCgRm") }, + { XHDR("bxycnopgrsx", "ZoWrSOFLDJi") }, + { XHDR("xyyrtwzptfdx", "SZ") }, + { XHDR("kyfeymusfpux", "EagaGnVEk") }, + { XHDR("g", "AGNXNbjbyzZrFDdzRDRmcgtXHdbdQCOmcsHsbWrKJPoCpDVEhMleBpEiufjkGgNNFh") }, + { XHDR("vawonzawrsgqalzhsez", "moBLgGkCvyrVqtAaFIxNOZFlKRGxznxoNykjRZeTyG") }, + { XHDR("shbolwlsz", "BVqtUHZZMDSJwwMckPOTBYXfdGWvRuepbHVaJCwCPxMukQKWgZmmsLYovQAgNCVf") }, + { XHDR("mjbzyhkogs", "KOZq") }, + { XHDR("hhvmfldhctnoeklu", "LwEQLNXBIzaTLVUaybbaHwCIrrzMSgurVHhpWdpR") }, + { XHDR("eyaxkwx", "KGYvicfqmcsDkYnyHlrLd") }, + { XHDR("ek", "ttdQFoOpqvAjPqRlPXswVcoLfBbdxKhvctEmYOTQJzcBk") }, + { XHDR("vmgoxbzbq", "dsdxdCUwZjklQcqeTYZuJjtQJCR") }, + { XHDR("vvaeyangwecvfpngwd", "AkDmldvofbqkGGsMQMvlP") }, + { XHDR("buqziphyxdshhlii", "zrsDLTxXtSDMEUSfnhykdKkamxHxrGvdcdhWCNVRtbEB") }, + { XHDR("qlxaodzpbqa", "VTFXu") }, + { XHDR("psnhhfqlzuxdvgjbb", "hOaJofFsSpriNaiLnCOVrDozuAGeCfHUYnimhFpxgfLjejLYhrWLYHMNMGBqfOmS") }, + { XHDR("itejonsdvbzdsgaretee", "FEqZoyCJXpPspOrygnMJpKdPqaA") }, + { XHDR("ljsgczciuavhs", "qvbtCYrLZyuiIzvRoUvHfzCoKAFgneiciOMPdBAdGrfrKABSGXEyvCCArrkkNzFKdIRznpnKBWyL") }, + { XHDR("pqmsqfhkjysazuo", "rKYHILkJMIaRoJhbMeem") }, + { XHDR("tmjy", "SlOPRDGbjgxWdwfyQYnQgGMrqfkqclcNDESaDEnrdycsdmbMVmtMsNEVZhjpqxIxJsYilaFSdtz") }, + { XHDR("kzsiqvklhfvzjpxhvrm", "lxOjtdzHVKc") }, + { XHDR("wxvfzwcdwjj", "TSNaPsXynrVRbOZskUKgVhYymIBQzRDcuiVqjZNjWy") }, + { XHDR("ewmax", "HuFMOKMGiZqlOkREAgwpFQmwryndFbxTDqytBhdoukBlFOFFJoHeJvinWeTTOsCWtgbp") }, + { XHDR("rygcdpzringgnsckxqy", "FgLBRduMkboQuOJOX") }, + { XHDR("uj", "ugkinfqVKgvmKbxcBiNGvHtEHwmsDodNLwXxgXcgklJPXMvNzUmzCozckSNaxyPPscaRK") }, + { XHDR("gmrnvtql", "ZYZwNCZoTJMnHEsbBxlnlngPEfVdNTpGeiDHxovYDDgVrcLSh") }, + { XHDR("ckmclzavcqgfecv", "WoxnqLWOuYtyUqlhZjNHSjSSWIsLkbUBSNEi") }, + { XHDR("mmcqtusezefyou", "xHMbHCPzOSqfpYtFKWGOuDHSgZibbZHnIewpwYTtzomvhwYebcUAUCdfePpJtYOYFpeWzKIOWFTmoZUx") }, + { XHDR("ouzwjigfejgwahvl", "sTbBvpf") }, + { XHDR("pfxtb", "FjYBxvGtihWSRrgHxLeCbelrHITDACvgLgqqxTVTZX") }, + { XHDR("tcegdxfraa", "ErZLjknSGwbZTEXfCahtHWkOCXtsNiSuIRoGOqMgLxfTmDQyyEsvkJKyZwuG") }, + { XHDR("nuzurbdaqzjnkvbftqr", "UGWOjayCUqjyGfsbHmPShSdOVqAQfHnfkaKkfGLLYkxrPBXWgeHfoTFc") }, + { XHDR("mgtwycdu", "NlcBSATCVbf") }, + { XHDR("liljcdbtniefxplgu", "VXkMbOFDpGMOunvPFNLMHFcQKktnbTQEiIojPuoKsApdjyeRCBAWCoXiOnGZtZacFCM") }, + { XHDR("pvcbopmltcsdtp", "zDardxBPiptDHxQNekDJuOjJJfOAMJOjanhTvhUZzYalEJ") }, + { XHDR("bumqnmiluykmfcrtynio", "XoIyscXIaUBQOBvPmNCSnvOowrLplnIfzRCzDDbKjyWQWoVgUtgOIygdDJsAWVSIeLBKtvSqE") }, + { XHDR("ogxksbxohk", "LkJbFBBPNDoaXQwLaaruIJZCEXICMxHWFBBInpwNjyqdH") }, + { XHDR("txplhcuhawlk", "EmPJIMYmkJZqhoTVsUeaecZlWcizEUaaNOMSeZDUY") }, + { XHDR("jd", "SYpynnEVlfJP") }, + { XHDR("xbdkgsgxenebxglrequ", "vNmtMBqMPUwFxwOrvuqhXakwBdFVQIgtUuQdFGBuPSr") }, + { XHDR("nchxs", "vxdiWuuEzebZsUbttEoJOaSMjJBEMrsUnvXlEcbWcbfSzzsXb") }, + { XHDR("ndvmoijh", "BlrqXioGfBeDMqLYljhEdA") }, + { XHDR("lafrivdirexzvlos", "o") }, + { XHDR("akufenymvo", "YIFtJdOFgPnglMoPfbnMKuYpd") }, + { XHDR("dfbfbfplwwheufjkqpeg", "RYJIlheTnoCzLJhJxsOjhMITOZKTDJkxzJXEiElStxtNREzUEuoUJiAIofhZtLOvWiV") }, + { XHDR("yjyx", "HIdqbnJRQKvmmDjgLpUjVrJQcLcACiqOzcnANvDbaOSSszoFfaclzyZGvXWahXoDcVfJRmwN") }, + { XHDR("xuovn", "dxjZQUL") }, + { XHDR("sxofvrkcuwoyliooblv", "WCDXpIOetFqFS") }, + { XHDR("spknpzdxgvnvp", "fzRxhAGiMRJJVYCZZfOAKOwaQBILkDyFkM") }, + { XHDR("bqhpqkhgomwsq", "wVGZkIrncbYTTZeYgVUSxHAjWTiROmvJrNTiJXTwUtYIiWUPAj") }, + { XHDR("proneafrshmtfdhaus", "RjYbffLXsoCysahwMzFEytDIGHahQl") }, + { XHDR("cldystizj", "aIufNqhxTAOwWBqxOCOgujojwKNbhopitvktjPkHuXSJBCkrCoivDNyoiDEPkPttzrBBlRll") }, + { XHDR("pcyefuddszexh", "EgyDHxbDjljXIpcvcfdEEIKylYOPRkihMkYmhHvCOKNxmvHhfHbJ") }, + { XHDR("sianwhwqzem", "WBi") }, + { XHDR("awayzdbmdaumer", "BGIVShTHCZDbdTlPVzMJQuMAskNgaTlPLLtDNpMmsooaSJfFhDMOV") }, + { XHDR("xa", "AoXuhxBuAaaPcedRBhrKDGjEdUIaivOsgIowzHxlYGXXPqIuJAUovENEuvSwb") }, + { XHDR("speujytsdnkt", "eKKHEhznRmoOsEKxhriEEXLrLCODCpjrMsHxRuM") }, + { XHDR("admdjmllnjfjly", "mwVHQXRMvTOLPhrXZaGhjuKKHPgXjZJRUwTzo") }, + { XHDR("cvyu", "rxmTBTGoTShIhZMccIUuMsXmJKOxnZoseOMmobPZmfGtwtdXIOsFu") }, + { XHDR("nmzgklqiwwopxch", "ODLBdfIQYvoYTgjbtEIHMjGEIbYMODyPYPwFDcXszfYIvIzslQtKEEcRpWYnukJqrQMOrJecd") }, + { XHDR("ltaoqkzjeokvvvkekm", "FYrRX") }, + { XHDR("w", "WGitGnSAnrcmJtvXNqPTHoQbjJvclZJCQRKoDmgn") }, + { XHDR("wdivqlrmemgz", "MeCUwKebeFJgYfwPGrVTPeWiYVphNLQzsyVnRpjllocjKVmlftaQaKBJwDweoVosSAhPV") }, + { XHDR("tdminkchsicgtokj", "nbajyQYgSN") }, + { XHDR("nmuhltywfspdaemhlhlb", "KyER") }, + { XHDR("htogxwylmic", "OjKYPtqRjCeXXMBjptbxTUuokCqkOuvDwTrwaQhHlzkiFGffMIIUbOICLQUeiBErEcog") }, + { XHDR("inwzxfsll", "FeBbDTUZHJnNaYaAfDURpBQIKCBzlPBB") }, + { XHDR("txizfdbvwoccss", "aIMpzdYSbxGirTtCJdNeXJSDpQQkYVNAEFACMdE") }, + { XHDR("qy", "uPfkuRNoskHKwNhTEgUhIDQ") }, + { XHDR("fzmnuzsfixqzmlzqyme", "VWTyTDMvThkJeHvsDZhqHpMPWcEe") }, + { XHDR("ehfbetdudzlsqjql", "IGfkPBblOTIjkaDbtMnAcgxwmMubcKMSSqUuNUSmfUBhqUftyQNufehjceVRLQRIjcV") }, + { XHDR("xfnlowalvzmjkgjal", "lbRxrYD") }, + { XHDR("gzy", "sBLY") }, + { XHDR("ljamoup", "PwMWIVGpizHcNKCMOUtcCjnWoPZrTwTJmEZClNP") }, + { XHDR("opaadlynclz", "TLoXwBCiGHcFoYoSdzJjoDresQafnhggNIwFZJrlFQZbMRLYVDuBmzEwpAJuWNmi") }, + { XHDR("gfhqnaf", "CqnpTAdimiuMvqTd") }, + { XHDR("lhuciyueg", "BMvKfBFytgwBBoicCrVrwJntbKflLGRDIyBwBDTijCxhctqGheCp") }, + { XHDR("vahfl", "TIhbarWmpcVJTsWeVhXKVmBZqPQzFsecEm") }, + { XHDR("sadlo", "ykOvQBSniJOSMArDmdIHgNfWBoFnrVdOJHDllPwDLAmnnpWuuVjJTgJXxMAKCXVeoTPmFmbfHq") }, + { XHDR("jqkvrunsvllkxliv", "XvcxDWubBfwF") }, + { XHDR("vuirjierjchukpndd", "RZsdkucvtHeeSBbJlpVVqKVXFPtJWPjxakRgvsDUbEmgfJsxGGwIpDeZNUFFhwflZOHGxNCmbn") }, + { XHDR("afeinpmqinbfw", "qTqipGFkikgqaEleGfHtF") }, + { XHDR("zjymnbvvyzcacasd", "kfkJPKoDMIhHxmwKFdVshOOAcQoNPsbYFLhloiXmt") }, + { XHDR("zr", "qSmpmDypGFIGDnlsrNznkNDyQbkVYxbnCDWtRVZKIlGHjteZY") }, + { XHDR("btswwnfx", "NpIfPWNMJrCwDKeEcvCFjertbWVbkrKCftUiRSMWncOiZekQHUQSOd") }, + { XHDR("pclgxwkncjsemvgi", "KFDaNIMlAHJjKFadXEOQOEEWdEEd") }, + { XHDR("tjkyoizmokwr", "rnYsgPUVGFKggSsxnPJseyXCbrJO") }, + { XHDR("ufsxickzr", "YbrNOcmEIZMfWLseEDlNYTsylzHnGFLWjfwaBkypXh") }, + { XHDR("daicztuocuurc", "TCcMLGQHjNGZxIWRIeXAOMwivndenepatoFmUPJXmhzLQouiSziTBgruUDtyMajXjCHmRiJCalXwlRrR") }, + { XHDR("hrwdik", "R") }, + { XHDR("uopxpnjsskxbyjeuxdlp", "hzjgGviSpzmGuSopNYcR") }, + { XHDR("wrpqpbaoioovvgju", "sKaQNQEKFymvAEsTWFzJCJWqpgALSIABZzgDSKSVGBPlFAlFDEM") }, + { XHDR("dcgufxdpinusocxenocm", "VWNWpidhJZcieeXYJWCsbcGLzeJZRVjauPWkrHCXmnhUNonwmkXJnVcQEhkZJTVMoOC") }, + { XHDR("jlgrhdag", "puvXCiJYAxRgBCQxVJmgYaKqkHUjpJbFhszOlyQLbZwynwaHDLNfbhcHYPvnWj") }, + { XHDR("ksufwcstrz", "kJsKTkSt") }, + { XHDR("bauzjmbfo", "ZRtpCtPzDaUkwgjKoGjLLqoAJDrSOeahnakVrhfhuXnXZAHRsXkOTOnHfUWXgdhAaEvtFbUY") }, + { XHDR("ofha", "DVGmnxcgNHQzjcrAObRpyquDLcRosuOUgBJntwjHXfRibVieUHtrkYtwvGzeUPaHJIAzq") }, + { XHDR("knpvdmivy", "KkQCUPgMfYmegarLFGiVsnNPQlY") }, + { XHDR("gdtngakfxsjgbeqmwhb", "JUDvfvMUEMNhAYpvcWNSSeAePxUiybANTqrHpHVSewrnBCJKuCNMxXBoVygTIHoPPRVHNjCUOyPwLsoc") }, + { XHDR("g", "mOtPRotWbFuDBnKJJjlokRoJuYoegAnBRle") }, + { XHDR("tdtz", "wRXnNtkclCNJSkNaCBlfFIZhaOsmgsXhOncXaHPYoNLSMZxRtpxpRCsFjd") }, + { XHDR("hoxmbswhrj", "TANGekGJdXvdGTIlqZbSIdrmVylPOiff") }, + { XHDR("rxssbxmojjjozqdlgs", "zERFYhjXuaheNcRBfLSKntFfRetAHdQFCkicrkoofGfDpEeLS") }, + { XHDR("pxfqtkrusuvtmlsy", "CJhoXqGNmRemePXASAJoqBtSjxIBDJNUYGVYoADvTLJuEfqrrSPRrDkdUBHGeXD") }, + { XHDR("dlrhendtu", "bsYgAAGdXtgvicTKytktgdONLBrtyMheGRzWGdnjZcsuwJUskXscQPWfPrxDhMdkeQbbC") }, + { XHDR("jmlmkfvcq", "lQAFDWslWwHYeOchFRDmsuwLtfLsipIZXBRfwthoWpUe") }, + { XHDR("agstrk", "DQUiaYtVbLnMyYW") }, + { XHDR("eedlf", "iSvfsgXjBokXhUojCGZteTNOKSrciSMEiZnCiYeSCTKqrLtFjnrRDNTkDuiwwwmNTqiC") }, + { XHDR("cjynnhzpybsv", "hDpzSdLlhnQXAaJkQggzrLVIZyaADYBwVwhNyhwGyondWksiqxdU") }, + { XHDR("hgxqyvpnzt", "VIRuMNssWqWLgdGnuPN") }, + { XHDR("xjwdyqehlycjot", "WpLhwRRzpWJCTXAieHxWLUpYdDLghuZrSzAUEwaHyodxsOZetuAfZgqT") }, + { XHDR("wytretztksriuplag", "QOAIQgnIXZpFSFcsNNnOrApOfWnpPSOwBPRNtdIxReV") }, + { XHDR("ufwu", "SUFabKksOkHUZBClEZqkCsIfFtXVTXkkkg") }, + { XHDR("vh", "ITLCxMzqlZLtYARli") }, + { XHDR("pwkpsxmneecgmnxuizk", "DKQfpG") }, + { XHDR("jdhmrmvzzteyrrff", "mSRrvNriHsZdWCcGThDkRMisKWdDlSuIjapEBQScCmwRfPcMfxXbCMaTIPIvTkjYQrWb") }, + { XHDR("uxpkrphmmzpuusct", "hVzKJSzEsbEXMPZbVXsZvUOeEVnlZrAbUAEFfeTVfrReZyotacvCLvqPghJKrkBYmB") }, + { XHDR("dsoqzneeaoctcn", "Hdd") }, + { XHDR("hlm", "BLCAciQqMUmnnLc") }, + { XHDR("aqwkubnz", "cbdsfekVdrQczCeYGrTItRJtsAsKmVVViNsaTZokFghRqUWlkiVjSXLynwsceEhnnsf") }, + { XHDR("nc", "GGkQiEKvCQXNWcDkXOlYlRxHxZUdWhTIgKQcVXEaglpKGLtFcKxNGSfMRNGY") }, + { XHDR("whmhy", "zAHcSlGmISSzyPtlOrUCMwgXEOfLBmSgwdrXzOzg") }, + { XHDR("oyahmagyk", "GEQGsuigFlmXycjPWZNPTvjBeuikMEPfvfrdhlfUbnDMoputdWmimFIQotNKHMaRs") }, + { XHDR("enmjqrgk", "u") }, + { XHDR("xvunuwvsswwlnod", "tiSqLIxTYeOPCseKneBQhYjBnSmLPuMNjTwxXbtZMJXOtiLwpKJWHOIJQxATddN") }, + { XHDR("jixglh", "RitgoACiJtBkVkPFLiNTUJJjWDdNDBvVpVmDchhfxjJDJmaEzOzIsccMGzLUhpRBiGDsZsx") }, + { XHDR("whjbwgjec", "RQcYcwWEuCKhUOpjcgpRYcqOSTQbXD") }, + { XHDR("qmhmsvft", "gLONOAQUEwPaIyZswwtYykAqnIUONscMYyisWoaqDYbTqQDnjMZxSHRPTVhsgZZUdrWTqQrQH") }, + { XHDR("gnnqtogtr", "bFKSPTDHegbuoeVnuXlJufJZZstYbktdimJumHD") }, + { XHDR("nul", "cuszmbNnfssujAuECV") }, + { XHDR("ntjgqzyfvhazgsg", "IKGyzBHyWArvYsgLmHmEPNbsFVbO") }, + { XHDR("nenwt", "OpUtpYZuBbW") }, + { XHDR("nddednek", "AtUsHiyYDcXAGMDxKYzUVkqHNKfejbTMYkmxHvu") }, + { XHDR("nomrbdton", "BxkXYNmMHDjGUufU") }, + { XHDR("oyzgswwjailstxdxe", "paraXtFcjYlRApIuUFbenFNPpeUWlgQmsRpUJKirVmLpwpznvh") }, + { XHDR("uwtlscilysllgu", "rhcxULTgKdYnEqsDyZcnMRzbYe") }, + { XHDR("ywfizr", "SHLZJmFlXoBDOtyQGQBZrdyEXbJHbFLIQyFdv") }, + { XHDR("celuxmtnjw", "vAuABGRHAQoqPIiavkXVMqElwstnolNjrXPbHycfGPZKOvkDGjzqfDcFunODJtiPc") }, + { XHDR("zhvakzhdjrazhqg", "yfyHMMVmoVCMRyQUvaUWkScNrTBRyIDchdLtaDAtBL") }, + { XHDR("broiufwukpwbdwos", "cMcRlhwbTalpRmuVXgastqDGUpTkdn") }, + { XHDR("kuivvzrzuqyb", "RAcRdtSEFEUOWHLDTPPGfGfbnuHMMaDHOfIkzytHEHuNZHYWTKGkZbxtH") }, + { XHDR("crxkekspdfaz", "VnZYalWOSLVhdEswAyddvravaDscyMOtJUQWZDfMiHMxpliVUhSoHlROFaPeYderMjnbSosvlVrbocZ") }, + { XHDR("hnl", "RawdBhnPWERi") }, + { XHDR("uyqntmjxiyuzr", "TRv") }, + { XHDR("omfsn", "aramrpqXcBtUDKGIXTGXM") }, + { XHDR("gsvhxomti", "XyxGEKDCOCqgSyAFaeihXPnTFxVUsfmXTtgOtDHJFhkmXuaEcJpnD") }, + { XHDR("careftrs", "IjjZPcMhLurpXmrFg") }, + { XHDR("ggr", "KGH") }, + { XHDR("zuaaop", "kWHVzMeAOXHzrcvMsEhjoyjaPCwGCrLUpzhODTHKmdyMyBVJDykGIpnCrrB") }, + { XHDR("faka", "QWNby") }, + { XHDR("uqhunzubrepb", "LOiOLyrBjDIPOYYaOeKZQVeyfVmjkxPpTINXsmIfwCbrMiLvFQtVqAhRYUYuzNuaKCYVxIKAz") }, + { XHDR("pjiirl", "qKUNVWrVshOjFEZCyMBVjLGdfhNTIz") }, + { XHDR("moeifpem", "laCrqSuLhXTycQqjiLKqhLFHpWAvcIFKrYBImuwvdLVzPyfGSKRMHmlQIKHsTo") }, + { XHDR("wux", "FTyIkmIiXiqjMhRd") }, + { XHDR("iuwbaeunjhvnhfcxtz", "jQABqiKDvZQsnIzDVXVYYPYCkTaEHdDaUpKtpOsFxnRiecmfrfFCFBflEYQFFhrqDKzMJBaAc") }, + { XHDR("znotjtzhomtkmpyxqjuf", "cypOBcR") }, + { XHDR("maptqdgkvimroqujsffh", "LgvoykAlumSevYuYHcjvqeOARdbSzj") }, + { XHDR("mjvsbicuw", "vURMNfeLehTppBzDn") }, + { XHDR("vemkeibyhm", "NFzZSyQoKuoLbU") }, + { XHDR("afxlvhkixw", "qdMiIAOuokqvdFPdT") }, + { XHDR("kdsb", "VaaxPEbpMvcXfvKatmsuAywiZhRTynnxSBDAgAjQDTwYRUcgCHdjsXkBxAbrPEBAZGzzUohPZdNKJIU") }, + { XHDR("uv", "rGggEyiwFsirwGvVuFLQNwbnlIpvqLDRCPvhtdWPMdtBLraoJjymdgvroMiuGRFQfWdLWj") }, + { XHDR("iaqczrcsq", "TcTWyzo") }, + { XHDR("zxsgnzqxywlu", "WmHMRhIVJlaZKEmCQkWCela") }, + { XHDR("yckllscwgetpljebush", "FfDDPjAvjgqfyAgLthl") }, + { XHDR("jlkqdyqxvbwirfxczwyq", "eHGoBVSIQlJY") }, + { XHDR("rqnef", "yGQlLeU") }, + { XHDR("msxgpacb", "uCtJBBmXazciRAtEsUIADKppRtbVYqsHeHbmTytoakmvqgYyuQaRxuL") }, + { XHDR("janejomfzgbhrcujgs", "PLuVkQHBDDco") }, + { XHDR("rovfducmcdc", "pthNmNZljhCwYFmSnnvac") }, + { XHDR("hmuuzhsrnxiz", "zPCjYEeQB") }, + { XHDR("s", "itslftswvQdWuLwbfMnJuYfgHYcGHLnSDMXfPVonDUYHEsC") }, + { XHDR("amqmznbdrpwkkf", "YNEiIwSXKOgRZDWo") }, + { XHDR("vofueclcybwykakw", "joBzcmdzzbVuFFGIWuSRDwiapjZBZJhpzelpfGykgPDRGZPzJikyccIDokLdyRe") }, + { XHDR("edgxqqhbxtje", "CqtlazNuJgd") }, + { XHDR("drb", "chToziZnVBxWVyMXxcg") }, + { XHDR("kiukzmnlqyf", "ttXQcsVuCGaApgJwkBwimuYanhjIwbMHMxDFGnXpTPYMMzrGTGLbUHaAxCnkbNqwZbcRDpALBEVIssa") }, + { XHDR("skicgadpxswl", "uWHQZByYSFBkIEiBkkwoBURSCVjCAgguKbKjNucEq") }, + { XHDR("rnwtdqnq", "OwNGAtfSvTxXDvXERuylLpvrCCCQSiGX") }, + { XHDR("enappok", "YaaMIvnhXJRnNaUYtDvALrldWpsLbtrEhdFVtBgfA") }, + { XHDR("iukc", "qPShmohAsmVgNSxpfrOkGxUGJxbybKALfXJxTcbMSTKUgwWiisPKufULlvwBmvOiuQL") }, + { XHDR("slxnjuvjdnh", "ghuaEQjOpzvP") }, + { XHDR("dmjs", "CkYyAyadNRxVBcLSMjJuxcJnfBRcIPvtuHkgoEwNtgHVXEnRWfeVuMDRxjQGeOGV") }, + { XHDR("glmrvypredkcmnfhhz", "MHaPChvQovfniWIjSVGjMRNUvdRXcmUaMpMquKidPsTEUVlwzXYiXqWrrMNLojRTEQWTm") }, + { XHDR("ij", "JYgHFiBkGZKPKrJTJX") }, + { XHDR("feumefytdsfotj", "YlbgDsHkENYPjXBGAbrCwyRSmEVXQLOfEqGL") }, + { XHDR("qu", "sAVZYnxmtLwqERTICUNJJcUdEgomoiSifXCOMjXMQTwoIprHIfebQNNwEpdRIRzXmUKCMR") }, + { XHDR("bdysmedtkecddghjm", "RHtNCpkMBnfbcQhPWdVrlZDoQLiWSocdrJeYFjRsMuGeGwoaaFVtqETukfNiI") }, + { XHDR("slhpfpksmcegbydurqr", "gjVuDeNgkLBCUKjOQfQfrKzMfubgHubmGoqNOjTWktVjtyMtHpayymiPBvCze") }, + { XHDR("ayg", "RpMUZkjSQBEgaoffRNFMAHfOKiCKvYtNyPtEDEqzyMbuzKyXvdkVzEUebbnzBgTvdWep") }, + { XHDR("eqirjmmfysuur", "awVfIKQAnQZQYyjTuTfTVGxuNNIhm") }, + { XHDR("ihhiubfvwsngprfmzdnb", "cDyaYRDHSmjsVYVymPSdZYhIhLxBfYbFmhjzolzoUPm") }, + { XHDR("cbarnwfwfrgfwgnxjzy", "bqsvgwoLtwtVEnzHcrvGWFfDJrLEticSOBpxaYsxKDARNpWLWisvYIfvKfppdlXqXoT") }, + { XHDR("wlhofwgkx", "TSpmZiyFdBDUNFBbtQCiOGRXSjTIeTyDoZNYyPbjAicVEtPtpsBmisgw") }, + { XHDR("hp", "ylNpnxcYFVQVjaVDIMulBJphyENqIcVoYgJUMrDF") }, + { XHDR("wijfkjb", "rySGkpzJOmUxNvZeSNBgPjugqCjHUczBaqteZEdXdDnrVDcKb") }, + { XHDR("cejibvepdiqmzp", "XShWx") }, + { XHDR("rsvfhbbn", "flgeKVXUealtkXzrkeNbdmLBWeTmTmvvF") }, + { XHDR("b", "jUMVJKvzDOcePkZWPVdAZHwaKyKHkxdfZJZGzcFNtlyYkaqhKecvDIzGyEBoHvjUdVVdeaqMeDxQnZr") }, + { XHDR("hrgw", "rBEgzKCxiEXvsAAQXHTIWHCEpRQiTtjxbfekogavbCsCcCjjWUkbYQaCSNwvllvRhcNrbHeboYR") }, + { XHDR("cihldkjfxtrivbl", "xUwWjgmimQQzOrtiqSVrsPSfcPWbuyvHGKXPnyn") }, + { XHDR("bputoud", "eOKrvUNvcprUkfCLmqQsQuBbRFwRbyPDHIQNLEARhuqFMUIPrDlxWbfqjqmgFiREvbJsXjapnSTBAXC") }, + { XHDR("zjrl", "sApFIAhEbEuuTMZvAlWvpVkoMPMJVzcxbuXDQcmlFvqePkKbSQJAxrNZhkOhXZsFEfMdn") }, + { XHDR("pevee", "tFyoAeNyxBwHpUZpgWBKAubLTicqKcnDQNlsxwtXQXl") }, + { XHDR("qzrafegdufnc", "imeDzqyXxxxEfgnOczYcacdrQBIeJkBfPFytrQICz") }, + { XHDR("cxj", "SXjKAh") }, + { XHDR("ytjwfcwbkfquyldrjjjf", "BnypmvaotBgagumEvaRlliHuwnJrzMYfzSPxorO") }, + { XHDR("ygwdltvfv", "ysTfFMFyqQRsDVNwbqQRiWKpppjROCjHefCBV") }, + { XHDR("oobeytfblhydvyzvr", "lQiTRHiFmCitqpYmROMrdsQxYwYDvtAuYNfsOpQXuSoLAbOHncqHSTxOVlqkjTQDQi") }, + { XHDR("qmtsoqvif", "lkbBUVDMKvrPZhWdppQEXJoxJxwOoVCBJgUEVucmaqSPIJqGqsFpxEdLsDji") }, + { XHDR("dyusdbvrrclctdu", "zdfoavCKPAIMnjLXHRcvHsrdUSRnGhCuseAFhwopivNZTHNsmSNloVIxwsXA") }, + { XHDR("qsluzlnxkwhcdepqd", "MEpahDNEQrNFaSIJiYbnjEVAxyQsEBoHJKuErRjwYTyDkUyQzmXzeRutKrTQIlAZlqEAUyhDrbpC") }, + { XHDR("vl", "uYDdVveMSHtwrrTi") }, + { XHDR("buupfqcbpinyrbagyv", "HXESyLERLbVoIxMoKmXIjMjsESmrgfTJfHYchmRQNzZVNzvuiCLROntDHqQPQnjzPK") }, + { XHDR("nyguszmtzppuwxycoczp", "zWEjjlizRHzotSHxZcdUYuUzVxYW") }, + { XHDR("qbmdarolrbvplc", "QsyyJigJjvHnISyEsZzrNquYBqdLxAISReiRxKcTAUxXZevVAgBCXtMXizIVCGeCRQympuMzSjiS") }, + { XHDR("dheyzauqoq", "ZPrhtJdIrKeJAUecqd") }, + { XHDR("jkosgjltdiyyaqihnuwy", "dQuzxYGsgAGnttWVtRZFpPUSecPJiOEyEfmZMVwYthLGqOKew") }, + { XHDR("qwppaftou", "UJDmFVQjBvThFqnnfBCeDnfbFIKckjCFNOnoUcyfcEOISaiLGenegIliQrMvPMfd") }, + { XHDR("utxajljluiskjxcmztm", "viWgbRoZfqLdpGfcCWpwYLfDgRUrNMyMaYacHQYzxYofDGKmzKDVN") }, + { XHDR("tzbuyrnisqmfi", "POkbPpYNncbFaApIryNIFOkboGqoRxNU") }, + { XHDR("rtdqayazcbzudbrq", "EavNiBuWuhAIgAFosJQUllOAtlRC") }, + { XHDR("brejbqskhu", "NrbRvKaxTcHKbvrwimBwCUIIUYesbxcB") }, + { XHDR("qcngjcxrifqxkynry", "ROBvygIFCIKoDNLxCZoHuYmPebiBQkfkNEqzHIoNIvDdjStHtDqFKcIjR") }, + { XHDR("ckpjtsw", "NLtY") }, + { XHDR("hbolsjdpewaghr", "poAFtaGLhwYFqxJrLKdlyfbuQKwNrHRNwbHhadhHUPiwsWGrxqKvuDReyCdxovfzCwNugeHoWGqMXpA") }, + { XHDR("enkfrqeynxxwkezncf", "kNgGjXejIoMqcyjMsweEp") }, + { XHDR("z", "YEaMTNRCxcnOnpo") }, + { XHDR("jmi", "ofqZOSItGEWbWJyjjRGGHXsReVaiXAvTFcHWTYlNoHNkxUpqyvKOaKcdbZtRuGbBifqT") }, + { XHDR("shkguqsuwxxslnabxbbl", "GsGDFwIS") }, + { XHDR("dtm", "SduFQQR") }, + { XHDR("smegqradpnrwaw", "AOflZzHXPheThRfyevUeIYozqYIDXDjvwLHIxyWL") }, + { XHDR("hrthsbqdpckprj", "TvNNxXmfhqHxxTZkzhHqoMzoQQjpJbOUWGWizPkvJTImlkBSTRDdoYemPE") }, + { XHDR("jjjmiixx", "RrnmVVYUyYpEBXzNnhDdjJyxIMelzhzyTmDNsQJEyfrLkOGqCJhN") }, + { XHDR("akzgngpt", "scQFE") }, + { XHDR("zgemjriwgwl", "ERnTUPtBKtVUlcaiOBZaxHSvwIoaVedfqVHeNgIMxXl") }, + { XHDR("uqyaf", "LoOoFDrUkkGUHxIgSR") }, + { XHDR("voxoeazjhojgesxxnqj", "mjYOiMSxmGLflOTRqDgAygMFhVHiIDOwTJbv") }, + { XHDR("xydb", "feIBzbWwxOXoHLjTohmOpyIQEKFQXYOvrWlBVuPgrXgUWvTOARr") }, + { XHDR("mtgolhtw", "tRpnF") }, + { XHDR("nx", "dLiFkdFzsbRcimVqToPFMzyuUamnmNdrhmeNHJElqhkLeSdreOwPKppqshIjNuqagbIezeTVfoiqdOQ") }, + { XHDR("enkrcjirvsodlaxvegc", "wwJ") }, + { XHDR("cyuxwqzi", "HytzwMinsrksgklXmQwbyPUjFXhiERfJBeOHnMaVjMffAGdKxbdJYZEqgfnePb") }, + { XHDR("s", "VQXrDscmUeGSIN") }, + { XHDR("yqtajvqjtgbmft", "oQXdKPpnFDHZRsdgofuLdXFUQlbwRxlKjzYSPsTNuYRhZtQMchhCSnGbihWjVvGsZtBYOkeu") }, + { XHDR("xzhxyl", "SypqUZNiQdOUgBbY") }, + { XHDR("hif", "WsRXLcwBQAqHgEuTloZDYhvdiQKFZaujRCiPinjqQ") }, + { XHDR("kc", "wzxbUBcCKreosZCZQLIvyZidCXhOaVPAGkmuioajjdJNljThad") }, + { XHDR("zolhmx", "YIWpSczACUWnWSuvSTE") }, + { XHDR("fpklvpkwhclxhsq", "tkHNvzaksREsIWVdWjEq") }, + { XHDR("hzwjvbwitartskqo", "SOAkUzMXQfhudZOAFUBXFSaOfUbzvVbuAVOkcwcFoHhDMTjPtj") }, + { XHDR("swiuxnqndptmacvb", "jXEpddZKlc") }, + { XHDR("rhqfnehffiiodybyj", "CbkXjtovhYCTjFgIjNsWWmdPwoISoglJfrINxrbXgFvkrGeeXCHLyneMDZ") }, + { XHDR("keeenqikmyjvqu", "cKKOVrELzjyIxyJmBlMmzqSAGKIVMzfixPqwneVekR") }, + { XHDR("indjjsr", "wLOLIJsnuKLplJsKsSHmwVViXhzhYBYqHlkiJiSgsgjcTAqKTblip") }, + { XHDR("wkkasrw", "jgHIXQOTRwLzxgajNdqYUbNxgMTBEsfXkVzUIke") }, + { XHDR("tihsataiidsatm", "qWESANVdoNJbbs") }, + { XHDR("sgoatqjyzjeuf", "AQvceACWMRTWvNAsKVSfBtSI") }, + { XHDR("nsyxbbgnbqjgjkt", "O") }, + { XHDR("efwz", "AzMuXGBdqomffqwKprWRoqJKXcQNyEFsmaFzHiWL") }, + { XHDR("dwedpfp", "hZJzDySmJWWJSBrIFNQBVmAjyvjsoOzSxdtAzjonFUjOgKtJQpukLVW") }, + { XHDR("tnubteysfp", "ClKkSIejIuJftHgsKLdbJIlVvsKftKj") }, + { XHDR("oxq", "ZEPhGRMTQNnLtiKXkPfdhV") }, + { XHDR("erhkei", "hVPOVPvzpjCJTygAqoxXFFdAMPGdjmvuSMtnAMVafDKUGVBblSKZnzqibrPEexbwVnRnm") }, + { XHDR("uhzdtrddgxtsowdkji", "ljWvIbTgRjacndOiaeJShfenzudL") }, + { XHDR("i", "nami") }, + { XHDR("gdwqqh", "iSUgfdKAsaXHhOoKBIXZnWXrbl") }, + { XHDR("qwuvimhtdga", "cIWRdEZP") }, + { XHDR("opyby", "mmMHdiHNsXsyUKhGSDlmMRsxzctObIT") }, + { XHDR("cxpcj", "JRSMcDqiTIwQZcnXqBaTezWZGAHedAiYRYlRvlctAsxMVovVXqbLgotignZJoyjDjeTFXsBJ") }, + { XHDR("zeyyqmyujljjshojva", "eBWeWrWQJKKRGpDffwsgvQwUvyVhxlBUjFLPNSYPXlsaecHmXOrKX") }, + { XHDR("uvlfa", "wnBYfHlorXlqaFYBulycqkXyNWIJpjMITcDzlg") }, + { XHDR("wntcdhlanasuulpla", "CZZDYwdFZEAtQwTfpKVgFXRfbmZUBPlTlvWahxcCgMxxvBuCOUS") }, + { XHDR("qrogpmtagv", "mDqosSVQzWIOItaFWzjyVMqrFCJqpkvMVoxWYzLhwuhmGMj") }, + { XHDR("wolpaklelxhb", "xDFdlUGYccaSmZcllmRmzurlUczQzDDzEWxevwFeNlIwIHPmgwAYpjxezpPlZXvGlYuLubPfwT") }, + { XHDR("alltf", "mdJPRUNJBztOXRLDpeHzOPhVFUCfuLSLvMxnaZIhbfJTCVtxHENyStutFnRyI") }, + { XHDR("ujenlxtmupuhwbew", "MxrbgXUILZIziAUEjcefRsiPNKpzLaSbdgRXhNbxKg") }, + { XHDR("barkquwmad", "V") }, + { XHDR("fxuvtvbuawbeuhrrzw", "uEggUGJtQDuUSqkGADeTMScDXwVV") }, + { XHDR("krsqgkdozitjvofvll", "LbPvRGdrQVLsQkdRQGGlHwakPsMJzDvJctvqJPXCcVgxNEcMpjooaBzLQfkUsQVYRqFBQwlW") }, + { XHDR("mel", "fHlcOdlrIjdmNtIQwsWHOZsSHETrqYshrwCTToddddkmsHMzirNVSwlBOWzoiEuPEzLGxbULCl") }, + { XHDR("tfejpitlrbqiln", "cgmdJcDk") }, + { XHDR("axqelxrppsnapyrukd", "ARGdFudLfDzNqdeBBzgDBcHRXmqgGqOXiSZHuynHBA") }, + { XHDR("lskfrgeqgrveltmx", "JtLLdXdObyUivYUvqVxqTsweOTNEVMENdNLOuYyDKbfyEZ") }, + { XHDR("gv", "AzighmrnuDLvbiyrZqLcszetMxmtglaZlqxqIhnb") }, + { XHDR("xhiruvbhdrjvimntgyu", "XRwHwvpjWljcIZASwfeiteqbodiJOS") }, + { XHDR("ogvmvcmjwsroxqreur", "rsFhCCtxGMetV") }, + { XHDR("hfugyqsnzwpmvciggyo", "nGgwwfAhDKoovyTgwxDQkfgeagrwSGdGHduzoh") }, + { XHDR("toozlltop", "PIieVJc") }, + { XHDR("bvxqsnyic", "sokxGfzpRkvHFsyuSeZAROoYvXoiDeAtJyuAHpUXNHmhCFFSAFxrqrdiJYbmHybabmt") }, + { XHDR("bdivyxrx", "TkLsobUohlBqTfghcAHJaPrgSnSPEFhpjMQJQQn") }, + { XHDR("ku", "RStseADroionkaAokkPxxcybctGQBsMb") }, + { XHDR("pvj", "rNYliByuQJUqObdYDMATqZkJGgXobbMgwlXaTZfMpXmBeVFSvLcLzIalgG") }, + { XHDR("ghmhulm", "qcN") }, + { XHDR("ojy", "ahTwxPsUiMVvasSyasSMHufnVbXPksKfQw") }, + { XHDR("lfrmikofysjqbleotlsu", "CGqbGCivYggqFMbdfIagPdZzsLnLHSezujpYLpfVDNIX") }, + { XHDR("ciwjcrgjpirlptwsnvjr", "ABuiCGBfLIvQTHIUOiEEcefssaLhqGOctmF") }, + { XHDR("tresylduwtajilm", "vbGyUfIIxQygtXTpPWgKhWsMNwpZRXPAbROpphSypDNjxQQ") }, + { XHDR("y", "OfbtqFWCwTmYHjhETWwNfAwcLdZmXSbKCHlbkNKttXfGeMH") }, + { XHDR("lrkqecjeks", "fzmDeAcELH") }, + { XHDR("ucwunjwiudphoiv", "dBIsiPCJkMBHewSUzIOtoxUATYXCpKcMzyDveMaUxDkJBAJNWDDvaMIpYZExwFulC") }, + { XHDR("ypejrcvqiedf", "JGgTCABryPxiEFrcpkCmeATZrhAAnwmsUDqGF") }, + { XHDR("z", "hKGxDgriSrZ") }, + { XHDR("fz", "MMsaOtOyzXpXDctMnfBVdlJthMsVMeYBPcwkdGCJBHDyYrxLqYQThH") }, + { XHDR("crdnqftw", "yXwUEZNHcaYBKAfREtFNVEeXcoSqijWAgBavvZoVthprZAQgaiCwRAdYUldsmsMNoSORKbJnlXPJ") }, + { XHDR("yuxfznhjqvasses", "BHkYgXSffTAVHbbxFHrSBzlQVgnoYlwGeCpnPgkdOeyCqLaH") }, + { XHDR("exhpn", "bixITNuaOg") }, + { XHDR("mnkxceripjpbzitef", "FfHeZufCXxZRZwMywFnJFxiDWuBWluwRqWFRPCwSEsGMqiAIYyTezCsuIQXVutqCfohvUBAkrJkYY") }, + { XHDR("yroromy", "KDcLHjTIgOYpTBsmJxxJHsDHLyCrNVnOwfbpBlZPBGMqgqNqSCzkAbHWAgOPnmoHm") }, + { XHDR("uqffirywtl", "VgcUmtOJNGFDkBBjgJrTVRTXOtJpDoeSIPfHFyLxGxUqaRwRxuCWYuQtWH") }, + { XHDR("bizinf", "ctVWmnYPrtAUHYFtxNjUzwYaODSMsVmOCGgVJQNjH") }, + { XHDR("onslnulgnkn", "EFChbJsxElnGVoOYnBSpYDUhgrzENrNS") }, + { XHDR("gmxyejj", "IGgc") }, + { XHDR("u", "VGZUCDJjZtriUYZUahKdQgqQkYkKBovZSjVdKbnlkOwmjSRWJksxowLjHzTFeWihsDKsLOe") }, + { XHDR("yz", "EeTwRtEqtjnzrAzNWiVTNXlmYswPJkn") }, + { XHDR("thpymwsfx", "jvimFRzFhGbKUtrBFSXRNRyHKBM") }, + { XHDR("tzhzvlzwr", "TJYwbStgemHoMJZOHtLdRpMaKHjwqMcToNyReOgGWNoFeKUG") }, + { XHDR("ye", "UEKrkbwMgETlBscGXvtgOJTZrcBkVuSmOQVrqyOpZskdSScxnKeAKyFFRtnpvJBjpyfnNUwsYkliPIG") }, + { XHDR("ofgummwsscgshq", "aBHoPZOCkUEKCbXEcCgRcrjQEcRRXmyYLItHosaAcNxiniLCNbrrEqe") }, + { XHDR("kuxxyvuwvcywlzmji", "BI") }, + { XHDR("nagrwuouyfgescngvls", "UnbsOoAKuRbcHHMPxTWggfTPzinuARICdWlf") }, + { XHDR("hbmdybenjzvyfphl", "EvqyJSwmxFNRwknOzWyTpVbsdsldyihtjmcsjPla") }, + { XHDR("gwcgnvawuogwidcoxi", "ZIhfOMgnEoqihkNZjzPhsmfNtIrDDSYjDdirWTkmAvvKUXmdeiRBvVaHahGDQpZQBfgXwkuOLYSNz") }, + { XHDR("tnpwfrjofhvxbszsy", "wsrdBeoShINCvNUvmIUBLYK") }, + { XHDR("hdnjeplyp", "DlkiC") }, + { XHDR("etgbpdtfscwbdcao", "KhcPzfXjnEDWPplACjNXYygGRMxtZfUOgmUykbykjFpwaZPuAhryxPihxjSuBzqnQo") }, + { XHDR("wfpvw", "XgalcejRNlKsYNgijuYxxHsWWUPtAzbkHaLDikzL") }, + { XHDR("qrbgxl", "nFoRxmhykrudZ") }, + { XHDR("cs", "VpanIHw") }, + { XHDR("svbkpmubxlrtap", "BtqMRxaahUQVaSFNQVOSsAraZQZQQciGzQOkPhyYFZaEkRxhxOcaoABRqmits") }, + { XHDR("xqdrvmnouqngnbl", "XhLMsmRofgeBpPWjYFXduTawFvItiQqwGCDaeXStuqFIjyscOJfACrJxttXxI") }, + { XHDR("xxpta", "KEEnCpgGudrCJzLpvQHQNEbydLrWhigEZNhTpfFtMpbgdyApiTki") }, + { XHDR("a", "TzswZVZfXnrNEHvNrCfCZJJQvFkStrMDNdJykVVWslhQctFGq") }, + { XHDR("mf", "VIEOfCyGbdznLJsjdkn") }, + { XHDR("nhnkvhkxmzkhrn", "uPXEoTBA") }, + { XHDR("mvinplxinifgm", "CfxWAkzXguMJKEBTeKXVawNHEmEahdycExYqlHRUF") }, + { XHDR("ddevucctndkvoje", "SJCwlQEttNxzpHkszhJitBZZlzWiUGxolfqKOQyg") }, + { XHDR("nxkbfgsaa", "ccwBDsIhixaoEanounftGktnORIFXcbhaTlABygLHMyfxNtwkjhwstiuvBKiGTSEZOsY") }, + { XHDR("gnpoljnnzdsdeiepmb", "MBMojCquAJCXKCDytTzYDDfaBdWRBRebLHCA") }, + { XHDR("shdbslgzvgqkwd", "wHUStTJBXMkowSWoIleeAesMthxtUttVImuoAQjqDgFXiDyNSOyJhzYFrvwfnlQJ") }, + { XHDR("vqogz", "aVtVuUPsMMjNtXuUMHjIBHtH") }, + { XHDR("anqvvytdfblngezrswg", "hNbXbefRHkZBGBMIvnSmPBEcbzlrPxJnfElTYw") }, + { XHDR("uibffqdxtghvdxg", "sVMjNifwhMbAnbe") }, + { XHDR("nlqxucrigupocioeuhxm", "ZoXeSuUbopDZARZDalgyDCsJnYOpfyNQpgycrNxOR") }, + { XHDR("lqgi", "SWtEWDHYdy") }, + { XHDR("fzjrzckxdk", "tPfIZxOQtbfeXEXaTJcINMFdmbclEIHqzTkpdCTMUoMoLVykv") }, + { XHDR("jfjjbmfdtrjlk", "snvcLknEjkJltCzmtGoVIGqX") }, + { XHDR("hirdausffykpftqbacrx", "uBbDuQLnCPjCpzzUmWoFopxNo") }, + { XHDR("zrtaxbmiopvtnm", "YOgHDvavuYnMPirCnlMtQtgDGh") }, + { XHDR("bndrqikpesoi", "WXEVwEPhfYqqfYNfbkThdPiTffezsEvfgxBcaBcqpiZnGpsnWsYVgwHhrLpUxJJIHtyxiiN") }, + { XHDR("iqdhcl", "kDFtAbpuAkWdiwcBjJNNOnfNScPUlQKCPKHTchdcSUJEKDAoitgdwKid") }, + { XHDR("nwkxeftucbqrcanpvwmx", "ltwQpFgfUFMT") }, + { XHDR("lflvprux", "qZDjmruNwxoMGngisQbDRkiKDqFboZJCo") }, + { XHDR("vmeanv", "MdylIJfpArFioLJmRRuHSVdywkekwCmVrezlGxixZGrKjsqnRI") }, + { XHDR("xxbttztvmjhji", "ymmISbIWjcnblO") }, + { XHDR("rasixyhn", "IKuQwfDclsiHLZZekBIHBwGCYTwSbJBsFQXZHTSYUIxRsnUqPeW") }, + { XHDR("bbfemfcigau", "pjzEnUradOMasmvbSMLwgh") }, + { XHDR("ooixk", "rYKSrYtRMgispqgYIxEEDRrQQdZzxVZJlW") }, + { XHDR("hrtvefpfymgucgvzrzt", "DwaByKiWKeZwIAUPoIkZEwqlydsoLgHilVTuOkqGDgmlkZgrRNn") }, + { XHDR("gyuumoklqenme", "hXYcZKIOrMs") }, + { XHDR("seeqfxbgtmchxddcrv", "lFxwHdbtsLcAiDLhlyjZIi") }, + { XHDR("ospzjkfgbgaodwiv", "KRSXTcroBUgGWbMeXgPvwZOhglbZZGNFYaDszjvgEQYmrdJCrgr") }, + { XHDR("zexwqhy", "FguaCueuIXAqbCuEOnKN") }, + { XHDR("gxshbkmlpaldd", "MgCFotrZSwixmxLWzlgiAZnPNZuhIQCeVJfkrDkKSKJWKltHTBVXYJLFJQmGriAVnWXAyi") }, + { XHDR("evgmaggkccgj", "RUooXUxczZcedzKZVCwERGglLTCTtuNuROyJfukdCKvoIAByGtJmANyBlteAU") }, + { XHDR("qowthbousmms", "shhnhaaULLVfhxxXS") }, + { XHDR("hsiisrpnu", "iNoiGTscVtfaQcgjibundexEQlg") }, + { XHDR("cfgydnidcf", "cnGSVRfjxRIOcGaBxYrrGpYdoEEJpKYVRoLDaLFvPagizvTzpojl") }, + { XHDR("rgtrqigbhm", "NqwKCtxbcEqYayFtCjiwDieuVQtZd") }, + { XHDR("sdvpkdeykzd", "CnAHfSzyBoQKartxMhWoRTWhQAAphaDfVQBYwEIGTxWDXloQJWKGPOpsYICxXctWLVIcVAdoIk") }, + { XHDR("homvimlanteq", "WnvhNKqdmCIeIUJUpzqbcDqQenXIkwmMdrhvPrEOqqbUhqaDmyS") }, + { XHDR("igcuipkqohmhgj", "oIcGPrMgJbGHTvazglbgqgFUbPqSETWvAVoHRklREgxdfUBLfOEfUnYzzWRJzHGKyM") }, + { XHDR("qc", "AOkIVxsV") }, + { XHDR("kukbxcwuznfhjzwfvjf", "ZXTLYSCaCZXITvZhRrdSrPCcnvunQKxCxBeXnHfSQbpcIHQzRCPsYTueisNpJvLBUA") }, + { XHDR("uyiwvafpbgnjuefvwp", "YvGXlmzhiryRFRdLKcEEbDgdoSqVR") }, + { XHDR("icgrxgmlxnc", "tBPtHYOjNElTZLquYPhtiUk") }, + { XHDR("koamcf", "GgKnFJrgrjeaYh") }, + { XHDR("id", "TYCUIiIcyDCtIPxLcdtoPVdnHVkERygnfYTertGctGgSJOCdRLwgnkXpJohGaFztjnpT") }, + { XHDR("etgxunyayxjz", "cvCLWgcspjQHrBJMjdEJCHljJomSdurOQDfbFYBXIahRQIyXrANbqgZDAybWRH") }, + { XHDR("rfinemxylnvcc", "hrkaLZGSkbTiSPEfykSiwDliKSBwbXqaRcjsSJiGnBRfXuuyeFYGUhUS") }, + { XHDR("hyonkpeyv", "iaiBhQdZWLgOTpedPAMBqeumDJNYXjfcVDOEKnlqdZYGbByqwiKYeicUoSEGvU") }, + { XHDR("ylbsxbdufdmfarotf", "xZHIvgQxAHJbqTMxSuNbEhFqEFoGQDKiQZQIqRIxd") }, + { XHDR("irnxsfxglplsxylh", "XLaYaBMqXLcxbdvuJxmiCQcrvfDmAZfwOjQJiXqtCvjwPgaEzkhmjlBMZhcnRhLIbqT") }, + { XHDR("cqfdbvaciebywdfzxagu", "aBaubQhktJlditlQQUcVlOpdeGjzKRztfxXfvoiQQFtogOyuOgx") }, + { XHDR("zzjamm", "UXZdMKxABGDeOVKJvKojfBFQCLGSHhvGPemOP") }, + { XHDR("xartjpme", "mFgLGNIsFFCbEnQzUQLjmsnlUjKVuOMVhribsmTaqvxGCdRGMnyDHum") }, + { XHDR("fghpi", "GFfcrgDKzAgEIShyLXyYJAZ") }, + { XHDR("ntyhvw", "sYWZLtXoiNxBgsgnANdHcWZAMpVjIXdXZaqICDhYCCnFmLmNULuPnpkLhMgbPjyFrfWLCsG") }, + { XHDR("uhfvvka", "k") }, + { XHDR("qxnjmqn", "JyGnfZDEaJyLZhGWfjFYfbZqxbzPxiFXhqyWcggjcXtPRyCCL") }, + { XHDR("k", "tIbDSKoLJqnokivatVAKemOtKXryViQmZrjxnxtqAfpZvTIkdRbAaP") }, + { XHDR("dmsnb", "xCQiUNwibBrzXKlszAHTZhcSeBvaRtBTZspcWsSfWTgWITf") }, + { XHDR("c", "DGWJtdqEFURiegJcAMukbLAjlcnGzbUGKAXFFYsBfGhptHyNNytVylLDecFrmBqMJNUOnZyOZYHa") }, + { XHDR("fjzyustcftornkpobt", "qwGkRkBoiFLmEJnvadZVqSqAFPXFaCKURvcjbDbDoZVIRapY") }, + { XHDR("ujjinsdmmcxit", "aUFHcjyBkvgLYScAHAhUxuBUlAKXsZUDINxGXEgXTidJLF") }, + { XHDR("iojeihckwbiilmpjs", "cADVMcmYstGkTiTekEXveIISsdfirNjSLoPdJzYSkpbdfnikYBHChMbcPbxSDlb") }, + { XHDR("neqkbju", "iQJaJdNpslluCsFTeHGMydRSQpjYbbptdDxYclWXlXgycVJOYqBhyzPiRUHV") }, + { XHDR("qj", "aCsIeMKDBvAOBxF") }, + { XHDR("leemounabykdd", "QqKJFzzkHHIfpNCUypUvAeHzqAHUhhjPwktgkKtOgdPZlowQzufP") }, + { XHDR("iugo", "BfsbfBmIfFmhNIFKzVCxonxwWwPuCdmmaXebmguXUsXevtqfrkCDAYLRWLcfZdF") }, + { XHDR("sgzfnosbg", "vMAAeCYUecmTEdOUOmwQITrfNrXHWmnJROLsETcoHktPaiznzsxgeYTPMJNHUNjF") }, + { XHDR("ctfaxcakvxgrkysipn", "GBjVQVhbAcyyfDdHQhJQxQSLrjUsIUuqZzyLqgsetexhQXbhB") }, + { XHDR("gztiifvttjsfe", "InShiplZBTpOUZlWcyZRrAWUmgYHaDa") }, + { XHDR("rklif", "TyGuINSzonTBLgKaUDUIEymckQKBtuOGSFPaZqoHRBDyrMsDbRmZBJqJ") }, + { XHDR("csonvglh", "lymigrVkynEYgLxSIFFjamVDqfGpmLbOitnJ") }, + { XHDR("oddzqncubniba", "AhwukgikiTiVaNoysRlGRlhgEzVKlRVveZJDnbYVLgveZvryIdPCrdtSAyF") }, + { XHDR("czfuvvewqzv", "KQE") }, + { XHDR("qylwsnw", "TMGEaYGYFHsAtdcERYKzpQosrCbjfANedKIwTkEUFWFVPuzGmzuaHQcrjukgmMmvjgfPYlyL") }, + { XHDR("zgusvywqyfrd", "qLJiJOPAkJJHREfpdyysTjMLUNlHEwoToGjqlqZXvTpiRK") }, + { XHDR("zszvwhhfyvjvq", "IKQmGodtzHJRmaoYFimdIcGFRkPAGSELixXakKjiIiiIMnAk") }, + { XHDR("emvdj", "CLrgYQRJlJnJNqvsXFhpsQnmGIsYf") }, + { XHDR("lem", "YBzsLbGtFBSSAriBYhxeCwgArDExXIPkPCVrcosVrLjlxxnWebtoBeQW") }, + { XHDR("eubf", "gOFeeQYNLKUCBHVhFRnCVcvBUkJQImFTWRGteUBygSzdqLeGBCAeNoTnAhrACyBlq") }, + { XHDR("fm", "hEQgoGGwKFImadkMWvSactHQAHgpDEkhrSOyvIJCbRGdLUAfEqpgsqFy") }, + { XHDR("keiwbtfmgfg", "TvrwRszavAtDjpBUjZB") }, + { XHDR("szpkok", "RcXVrsQnzLGqgF") }, + { XHDR("bqovvpedgxurbpob", "FIELIzosLKjZGwkuUxgvJVdqCxtPmjJVfZAQUnVuYt") }, + { XHDR("vfdjhxgcm", "BhhfxebsgHJYzROAimlCURzlIjfTrQvUSsLIVeJecvdNTLVTXErCmRcPuScPmVzQCsrAdYy") }, + { XHDR("tnbzpugwdmsyxpw", "FRACPhSlDSGznjRxaDicjKfJfWbBb") }, + { XHDR("gkmwrsjfv", "uaWbAYkJAEfVEWbzROEGZnjpEtvwECboPBSlYAjYgxxK") }, + { XHDR("brdcqezvrayblec", "xvGTJIoXHuWbvxEcldQOplfXKWJSHPheLCWOeShXJqLKMflWBQHfSFozPXuBBWGKnRFMjC") }, + { XHDR("xmylspf", "vcMoNojBqMgNPXBjKtiC") }, + { XHDR("wvxvguscmjaqe", "gceKJgTRkCizlSOvfXzHWEQMQAwyONFPCmtCSxwOWHtkfswHFlhrPokHNzHaYqTrnwHTw") }, + { XHDR("ermlkd", "oaZGWpUeoOoDcEZqkMxKTFJVnJeVmeqVopeKXGawmhkiuaHLpgsqmfsRwVvTPyEpuhzbmx") }, + { XHDR("oznitnhz", "xzWLtbmGzraccjHEavrAkenIPdRHGEKwbfgJXyOuBhoEHBSnWufLtVHYcDKVyr") }, + { XHDR("ypcokhuktyhwhavz", "KkLpHvRJaVSTilTvhkNItojwrltFpRjsTSDkUQBYcXXpanvFeCLVyEquEYKmeXGZHdayeQqxLsN") }, + { XHDR("arbnttnhseivxovi", "BMxzPNOPRWPFKjAUtGGyUykJBVHlpUPXRpNbLKzsqCqbGsYiNIxafBdASQQpmy") }, + { XHDR("c", "ZnUfFDhMeeyCljaIbTSNbxApSqpEyakF") }, + { XHDR("zrvwiyywvjkttnbbz", "WHaWeidEnxHJsGeFWhMQrXbGCxzlyJMZCPuGU") }, + { XHDR("owcsjqeduuhyvonr", "iEfNwPGEKvtlSzkRgVkbhhXRwOTdNyVHNDguHQiGWnysACMecXJqFpUyRhPVFDyvIagi") }, + { XHDR("xgbp", "bMlyxgdxWPBaqmJDpHlzJqliSihGRTuLx") }, + { XHDR("lcpvciuuhe", "TxdpfJqMAL") }, + { XHDR("byslmm", "TcApvnrazVAKHWsFkVUvLzEYvtjhzDIAgCvVlkFdbFBNQYtVXg") }, + { XHDR("xc", "qNsLiAyDRtHrZkBqHgfNfqeTnTojNuwAdWmDZEwvxTORXUfgvkvMHbkYOmGEVaRiarnRv") }, + { XHDR("capmjijqgmrr", "TJNRrfKYVqfTBSBWHAmgOtGhSmeUGwqUAzKMyQPKiQaxf") }, + { XHDR("ihynmnkfdkimuc", "NNQexthjmRpUxOHUWCON") }, + { XHDR("nnjagzcmylcums", "OrtZxfNUeFVF") }, + { XHDR("ohgnwvjfgmlqclbfkf", "XUFKRcGKTApIXgjGeyiKkdDioIkdspsSzBPFwQcJjLkuGuzgfKDXjOPnvVZfXaTnzhXIBMoQtkkbqe") }, + { XHDR("iwhbhecltxwjbpzwz", "qrCnenheXERCKKIqOIDPqGqCrXWPuvUYbhBwTEYqAGcuCnmsGmskrVHP") }, + { XHDR("ztdtaslihlzgcyjvfff", "VhHderl") }, + { XHDR("srowmdvkd", "JHLYrhbMutgyaJxXKBzMPABRukdblkbOADNVOtoaeLdSx") }, + { XHDR("pjryngwnnvejppk", "RZKQoLnpNvGyecoL") }, + { XHDR("ejfvhyoyynbvqgoozfhb", "jTRZOwJajsjEiNDWRMRFvriIuvXOmOwBjVqdGkGQEwmCQssxBKXlCYHGYN") }, + { XHDR("gn", "lTqijackgLAnCVbJlaOnInaEtgxuzOxcNxVjAVfLIVRyQTSHmYvbECWDuaPoCKR") }, + { XHDR("aqcghypmmjzduvuh", "TfqFfCw") }, + { XHDR("fnxvooi", "qygKWDprtbtsdvgQw") }, + { XHDR("wbft", "WwotsE") }, + { XHDR("trwfllniqzfqzdm", "tuHjMtfyTAiSeTXQcyGAZmIuWAvXAzhgapiGYsELHLRLBGeZvBtGvqPOrOpMOhMJGHvjljFEKgxUVV") }, + { XHDR("inxcwlsamkonvgtll", "EpXsgRVLZbjJwnThndyIwTUNmBkOsEqplEEVHPVxjMUbrdTeRLxRspyBgz") }, + { XHDR("vskhnngcypucvz", "weiLiQFBKmqxmjiRnJCfXFQKRiWF") }, + { XHDR("rvwwjvwfjqjboxhhgke", "gXmvfZJMcUONnYSUuzTjzFpfbqFXZSi") }, + { XHDR("blwycsknjhwlsykeks", "bPXoOlVjLfKVNhSoRjnWe") }, + { XHDR("cbghj", "ghqCmKMIjVWDtbmjCsMETsHubkgEUqvjWvDMkpqRFcqzAY") }, + { XHDR("slxzfjgxt", "omMyKsTomgMdRfsUeJytcOlJVCrXaCuflZD") }, + { XHDR("jtjdl", "njFZIPezsVSvXkIQRNWvRuBjBK") }, + { XHDR("zyvbor", "IxwTzilcxKHLaTUokgqtNJfYpDFJUGHOviYcwKkhVTFsa") }, + { XHDR("spgknpzzwclhtqecfgk", "uNMuNBnArYxCFaBgC") }, + { XHDR("fdxbmzfkjfkbxkegu", "TpTEcPiMmItantgETGyBVDuqfoBHGMZwGhtKCsqYGPibeLBVYJAcUBmUBWbMCRswMAUNTzjWpmeBE") }, + { XHDR("dsibgdacdzhmraatjco", "ZNYIawDWDbVWtsCAOThfXRSzmspzmaVEKitFqSKlUUqizFTedahBvbOJSTQstxz") }, + { XHDR("qxvrorormqj", "svxJVdQZaNTvXnoNgWZGUwwhRnnsSATyQr") }, + { XHDR("boblecvpyosymtsyak", "iWckrtvooxyltsVUziBfFW") }, + { XHDR("hntarch", "PHCftamSGgnZrcCQqGYwJQYnJWFvWZauIoswzNusXNhgLqNIvUlagac") }, + { XHDR("xqgs", "JXvMRSQcmtDjhoNtRBzqzSKAdbsSuVSOTaXphIplppfsazNCegMxMmJsueRzsWCLzxjoHUJsLzT") }, + { XHDR("jlyvgirpeziitrpdcft", "eDFqZGgEWJNbXOJifUzTWEZoiOtphc") }, + { XHDR("bdok", "CPfkmcjQVrJILvMLKdlkhhiNxFXrcRLAbZDbjaPCAKiqygqkPlnmLzdqdzhrmhxMXQtwr") }, + { XHDR("ldswbchmsijgdrzfwade", "VAjszlmcDszvlTGNGkniuPgNHK") }, + { XHDR("wpkystgkshpqc", "pMCkpUK") }, + { XHDR("fbysurzaoltwtoyobqhv", "TNb") }, + { XHDR("iiyvxa", "QXvNtYWuswyvlptkmeA") }, + { XHDR("wziwkkkikummhksafnx", "dRRIXRAZfZouzKROgGTzfGUrdqRwciVCoRqqXlxtvWD") }, + { XHDR("r", "YmDATVLWaiicQqMLIfpCVxzGiubNSGdDMwEcPT") }, + { XHDR("f", "PbuWONWmprPkbfmhizVVCzPrjQZbvhItKNYknzxgi") }, + { XHDR("ddgsckpnox", "mjbhiNUoadmGsNymCRTdVMUdqlnmnUSEnkBxCegBzMIPyXmISUbvhyyZhUNREvUkF") }, + { XHDR("swbhy", "vfMuODourAwankrIcG") }, + { XHDR("b", "TZAIxYhKmoCRNzMsmMLvWfdkpUEzBhhWvvGGUaYoELPrmGNaFohgCKJnWRhb") }, + { XHDR("ujhfoqtmjkusa", "BvBfzRD") }, + { XHDR("jvknbzywpdrcztsg", "tJmilsHEZcO") }, + { XHDR("ouqmuxrzxveqd", "beWpimZosQjLsUDgiEVFXnyOPgJxPtgBcngsJfPROvMCnUSpHBldMpCekIoPQkIfmiAOxkGC") }, + { XHDR("gltyxnlygwe", "DqtZJlOGF") }, + { XHDR("dipa", "ySwoCrhPmuLiBpjfDuOCLFmUkHLRtoPbIzcLjIMwOFqRdOomVUOHJXsSkfTfHkoM") }, + { XHDR("ymxkwxnnhx", "KfqJqTAjxt") }, + { XHDR("nhowpldgsqdxcimodq", "ieskCyyRDvosFopnzndSrkIPoNHOTrFNFBb") }, + { XHDR("hzuuordsmeesil", "KYvlwqulCjHOuRodseMKMrkRsLXYKyRXbbcjImxJMTlWtSFC") }, + { XHDR("wbezbelgtxbtwe", "sK") }, + { XHDR("gicsi", "DyLJqNMboBzamVqnmwDZBqavwwdxRsWqeqpqlutdKWnVCoBTCLzAplTgIfqugPiReeJHkefVvfLx") }, + { XHDR("fmqvpzfkdtthkfhigh", "tRrlRxTiTxmQXasjRdUbikvSDJfPMOgbkBspFBocVjNikdVKSHmCqmBKL") }, + { XHDR("uxjnv", "ZyVdbJbtB") }, + { XHDR("au", "CAwTFDqplniaJgMYRCbtBulhOouUQdyblLQOZdQzATdEbQJdvLnvSLyzQgJVhMj") }, + { XHDR("vhgjvwqv", "bxJPcpdxLWhqqsmXTRbFhfwMlrNLWafHBNIVNZEHHrAmtbOUHgFfdP") }, + { XHDR("reqhwupc", "MsWTGAYJAYtdJjIKCm") }, + { XHDR("lpnukluclitt", "VirqCnHzb") }, + { XHDR("pkhtft", "EGC") }, + { XHDR("mle", "xAfYsuperwkWjPdbXPpvZ") }, + { XHDR("nyjzgvds", "AtWgywdtSxfoUZludoiriTiXSPWxdkEaBOltvnvATxngbgCIGbRGyxBVCAbxVDYxaoET") }, + { XHDR("hh", "fgJItWuQuxAEKoIDcJcOVjCrhI") }, + { XHDR("uuyynafxoehqlmcumbol", "kqAvXLrTWMdCiyIxjIsKwmAinCkYIJqngRenrzCEBlWIvLBokvNYYWMnI") }, + { XHDR("phxq", "cufwWrNYbwDbfXaOlBBGGDKIWrKrVgENtMsPwdqRKdjXtjNfVINVUJAmUDHIXbgkfqgJrdnoIrnClb") }, + { XHDR("wnv", "fMQrkkyLEwsynwsTjVudc") }, + { XHDR("zmagbpqckgu", "SXYTplxLPLvouUxJySbjpHFjgEVCn") }, + { XHDR("eyhmqqpkhhepux", "PbYbXPNuStsowwRzYeahxQwkVygQxeCShXUpFctaKCtepHSgd") }, + { XHDR("flllmodrkucr", "RUXqbYnkYnXYqDHPnsdncBvScTzGBIGmVTylPvV") }, + { XHDR("haka", "ktXfNDjMcrqVZgQCOEkVdBhjUkmuIJjUqdDXjNVnXIwSSrlRmXxXTLTiOhVygYDLy") }, + { XHDR("bxtvsxjlkqfg", "TYMWYsOuA") }, + { XHDR("hxvxhiysyakmkmw", "DtTaQeLgFRfqvXkQ") }, + { XHDR("oxirytkht", "aXHGcheNituWpPStpOtbjazzWUbKWrZuLkggxijNVH") }, + { XHDR("gzayibfjwqooqe", "lSvlsebQvUkZXUE") }, + { XHDR("zh", "WjZtJxTNszVkgXxPdFEWwEMdQngNNYpeYnKUWzg") }, + { XHDR("jwuuodmhyjunortrxle", "FRdEtWpSTkAJSwUvGkkbeYMzIJbNPFoVUYJgFflRHteAhAQGaSoPTWGZIeDemPyPiIAxrZRRuFp") }, + { XHDR("xkvcixi", "qrjuxSGfXakHnxdp") }, + { XHDR("pvugwg", "SlLsteujQzOkGSlsfTJUOsGyguOzIIoRFyywfAYpukhaApMPOkQjKZktWlOWZPiSDEZbJ") }, + { XHDR("soqwcrjdismaiv", "ZUnKcUHuimWFCHBskGvEiHCkYkiIFvSUmXYFYHvSiiHnBbVgfrycNlnLZfnnoSVqvZylwJAMKZjT") }, + { XHDR("ijgwvbh", "REnaSnwYyKTwOPrsnQpoBUvqfpaRmdovDWQBhLFIPfQjy") }, + { XHDR("qonscshbjwswfwqnn", "pSOphWgBIkTfntcWurjwPesRzfgxqvdqldVCBNGaFLcfypLyDRyEDhBYFHwDHrWYTzBtanVoZnsldMZv") }, + { XHDR("estsupgjqwln", "sDgKRUaqERivoPJBQtfxRlkgxaRKNxfhNYGmuATpyCszkpbEkYWKaFEgdcQVroI") }, + { XHDR("axxleenllfrm", "EJEiZqsZpAHrJgYgbGTRtZhichXAOrIrZBFtGKQGjnPlMWBWrYPduaMOxxCQPisMItWZtpuhbAuXl") }, + { XHDR("hlxubgmszbmhvifbaslc", "RbELRE") }, + { XHDR("xiafiq", "NoKyOmvlIWiqmsIxPDbzcSrViKpJqBpTBsOFmmkdUmusKOnrNCTvEJeSx") }, + { XHDR("wdyfjsok", "nNELgm") }, + { XHDR("muv", "dldCbSqTxIAxkiIlFLFvbCwKMvuPJeAqneemoOaYYcTevMILDJyyLbc") }, + { XHDR("dnwoprhg", "eNJqsQrsfWjtoZdLyBPDmXSXqOvbXdPRtKeitOfATgzdGHDllMeKGmvBdubDZTSmanxNpBTrEKvBb") }, + { XHDR("yxscrsjodkbud", "bXoKXtwawTFJIdHdLOsbsqnuAUfeEIBHlXVZmHnaPxgQxKrVGnTZfEctitKYVxNKDgsebaSWfmU") }, + { XHDR("jqzxzyj", "ltJnYAqTYvlqPGWnYITQsvqoTFIWVLDtfsqGwLoKW") }, + { XHDR("ajtpvzkllkkvei", "qurtzoFCPCFNAitgWoADgbimWiMLoaxSaGjKrXEwIzoBzmiHfpfedIuAoflhlgUnbHDr") }, + { XHDR("xxfgsmewkdd", "pQrIcmYBZfWrhLGeBFIZoquyFkSAkjzyIEifYPkMmpLDd") }, + { XHDR("omzmuba", "EJMnbtSkGwjyIK") }, + { XHDR("alyikwtubskxkpjpqdgm", "ASPLqIuSmmLzKrAhWWqE") }, + { XHDR("wmsvg", "KxJqKkkcRYndyFhvwgXvxYvBdwGYzOejJZbKEkTZwzVydnBJkxCRsUbjyDaeKYPiDUnuR") }, + { XHDR("oqlppwffhvyfedpjx", "ROyJYuXvSRKNit") }, + { XHDR("olcvzyd", "uCEDLlFtCMwWvBKCBLcAHvqDRYfjpNnJHnlcbaukaLNDiQqpyOuFgYETPMlkp") }, + { XHDR("ztrurjproeizpzznbs", "oqHSUTvwtAJzEhgzCutwvzEuWAHMCgzJUCtJwmQNRACt") }, + { XHDR("lhgfeffzfgn", "yrVfeIoXNYEtOmXLgKpPFiZrgsyWZCHipvjDTnCsVOePwazQDzEpfzcwSnwRqvtbKUssN") }, + { XHDR("secyfyowxbyyce", "HFmUrfTIxwWFXOaHuubccpwfhNPFZGYcbIpegrYxdndHRq") }, + { XHDR("jrggjyvoolgpdgpxwy", "zmcWNuq") }, + { XHDR("xhl", "drJqIXyrozfXRrhanECeHQLvaeshQyQdlyvlNKeIpYzDDHfdqLzWRkEApuvcIRDHrCeuuMiq") }, + { XHDR("poegfaweeyhj", "pbfUojlBdUyFwfkiPZoaGnkWNNKbmaPRlLbVkcDHyHCWkhwEkKXLZewMeX") }, + { XHDR("u", "oiJCqMQAeuZIFbkNqlqZEaEVEnWunrljuXkPCQWvkdJckEITjeTTRvvIzgKOYAwkKkKRBvBKtTqTpN") }, + { XHDR("mwpnzh", "yUIaNJJDVQEIyjYRxBXXUdKFfjjWOrLgfriPQYrOFoBLoXK") }, + { XHDR("cjmqspmutglizwyva", "NcHly") }, + { XHDR("lgypalpfrrm", "VEZ") }, + { XHDR("edqrrcyftxp", "CrnXODFIGUvZTZfTmCuvsljrlfdjAbiEtCEpUSwOxMmpwXCYZYkLrtvcXuwDJvNFLFiXaoCiQgSZ") }, + { XHDR("s", "bmUutcqRIBySgLaddctGoo") }, + { XHDR("inutzis", "JyRpXcxtnuFbXziDhGMRCfYeqmuRlGImkkaiNxFPts") }, + { XHDR("kdfmped", "eBXXhjjjAoeLsQNfNH") }, + { XHDR("rumnsvqttfiofkvtfwu", "fInyJqFGKLLCKRJ") }, + { XHDR("vrowm", "qztupClrvHlZlwmkpnOCdRiGiJhYTRqFMJgpGbWiy") }, + { XHDR("agpmqhghrulnswndg", "xAtIYMSsewcuYrEeAazBmJdRqfcHRFgVXYYEfromJASptzkNvxxYjhjVuYnijBCBJYctuEkIy") }, + { XHDR("rqvbfic", "pXrpwiV") }, + { XHDR("ctnuemecamiqbcvf", "yTVtCCOUhogxXxwTLMmYqGQrmNUOaaZieJdBzTAhaUrTQeOkHPVzMMZUqEIXKTzDDPKFArHnxOYi") }, + { XHDR("cu", "nJfPDrgwNpPUUdjZDAvIzojxPfGuNyBveWtatkc") }, + { XHDR("d", "WZX") }, + { XHDR("njfmne", "RhTxSXuBONnyiVuyUta") }, + { XHDR("eqeskfga", "JlosklRGHYHWzHqSHvOBrmFurqtRgyDDwPlsQtjEMxWCpaIdwAKsAUIuOYpKSXFhDghhGSqoDvcK") }, + { XHDR("kzxu", "rmNbhoCsNpiatolhIVnlAsKCzFotCkwfMWmJwmcUOJcyLJWEZKvpsjQObJqXAKYnEnCIxFmG") }, + { XHDR("ipiatdijrtcczj", "RwbglXbxJmPVCBrAUpKGlDMuhrFnPaMSahxodtlFfVcMIKmFrvlHIecisXsmCyQTSpGnEdtzegGqJvKh") }, + { XHDR("vaiefkpckvyxybh", "EzpkVTqzmIklEcPLQYtMlzBsfJYNyDFUTMNSNtrkxFmujBGOMpsGnSP") }, + { XHDR("tlyhkjomjxwshkqwd", "qgFCjVlkCgbIuiaBR") }, + { XHDR("erhsqtozthynvbxxnv", "sRIdCWbmqDtzXBCjvcTprXebaMPnrnfL") }, + { XHDR("yfwiysrezyakmfq", "fnssZZkgjcEwHJNvAUXOkUtlxLKRqrnwoXJSlaiTsR") }, + { XHDR("rlqxvngwbrqpiq", "vSWLeCKcgbkIjmdNzGLkiyEFzExdPYjdijVxTPpATC") }, + { XHDR("bbnlbblfpi", "IiuyPvsaaBkSOidGF") }, + { XHDR("mlcpquikyhziv", "vaLfSVtiQyPtjbN") }, + { XHDR("rezy", "XQmmKudzUuTTxkngkhsM") }, + { XHDR("wfuc", "qnZIPlcFqWCMDgrqqzEzuwlrhhlNZGZmfWgmZtIYfFpPlSEmlQnXuNMOpPtrZBzMdISmuvNds") }, + { XHDR("lg", "cTsqjXptweGJPdNwzEKKsUWVXwOKpZOdeYqrnlVbGlmLUe") }, + { XHDR("ukkwgxpvyys", "DFajTmQLDRafpb") }, + { XHDR("dog", "JUwywMJLNcZMWPChXmCVBVmFRwbmmdBMUXsRlMgkkYZByVVX") }, + { XHDR("xjsvfrescmto", "idtvoPIXnijrBumfbuCEHNZCSXIIkqFNrYNSsOcymTyOUacaOg") }, + { XHDR("bicturccozacczqtzluz", "bbTloLVUAZS") }, + { XHDR("qoucomhdiiphj", "dzNSpZZUlgYVwVNBQGViowNGGNOrrhMJsebbsSiMLXOgAMXHTpxaIZACXshpIJts") }, + { XHDR("nocteu", "gLjxzeOowLuqHWXhjivTFomxwKU") }, + { XHDR("qt", "faRUNGKLtmUwzmsqdxrXkgxdCJOcKsHbDXOljLxcKLxCZGtGGBRVHWzZrotRgWMDmXhBxrCh") }, + { XHDR("ngrrpwtqvvyolmopsnw", "UiMPDMSqdblMUGxJbTcHsHRw") }, + { XHDR("kdfizbsg", "iQwRya") }, + { XHDR("qeepkddhpe", "NMGBsJVzfnDhSoDSuwASWxOzzukmLsLe") }, + { XHDR("edqrlivi", "CFxvPxcSJHswaAAIqtkxqspZUi") }, + { XHDR("dv", "alF") }, + { XHDR("pefyoasgdiji", "fFgkDGlsS") }, + { XHDR("kjtueuvco", "bEwnBHITheKg") }, + { XHDR("hqjajttwqageedu", "KEIDbQRWLJPblgMwhdioqjigxtOnLAMZVCjH") }, + { XHDR("zokbzatkwjuldcyx", "kUyHVSjEyLjEoYaiJbShtNomXGlZGOHyqLFnrEAbNeRqGLjcnzpXQEch") }, + { XHDR("otshygoospjnw", "MKvhayzFFKnZNGKDByiI") }, + { XHDR("hz", "bFgMDCKuCN") }, + { XHDR("kjqgbrmtypufvyhbckky", "okqltmUJnDOngDNABkKYaskwaKBrkgGQkebCSinsdBUBIRfbmQjJggXikwiN") }, + { XHDR("qoxkphpq", "dassibhlFaVAqUzKNGSR") }, + { XHDR("yswwniyd", "aqlwMyvfyBLqjmrZxyDv") }, + { XHDR("vtam", "jUcb") }, + { XHDR("pbdherpgyccqfcp", "xjNvzHDRKlmJhZilpRLwKLIDDgBlVBPTDGWwYbkHxXFQQiytXKb") }, + { XHDR("ozqfrcvzz", "NICHNzueidOaeKyDTRzXdpzvkMvbSWrdqUsbkzrJsgow") }, + { XHDR("sgfafbhllxxynfl", "ohjIxaMtArPNfdfIuLLEiWZFULQQscYgwYUBqvXcwkNXzluEWVjWRcgDoppJLQNd") }, + { XHDR("mrtpuoxqyrzg", "dsdPhn") }, + { XHDR("acgpng", "jHnHXrtCEGyCdZS") }, + { XHDR("rlneoelrmr", "rAtacYuqmHoUtejKadckbenEJpmfVWNdNqvosJfkGNqtGFDQwSBXWZnMorySvIVmLCeovgCqWlkkVNtq") }, + { XHDR("rghftjapdrpqdmfttscg", "wONeSFhRQKUOknBDjxJMYmFxzjDIxkKRQhBznQkrvZUsHlyEraBpNkXHwLcvx") }, + { XHDR("bjgbfnavupgztghz", "GqfbxFDbNwbkQyIcbNIgk") }, + { XHDR("vheykvgam", "PsCaNGdmZc") }, + { XHDR("xhns", "qqfLlScDbc") }, + { XHDR("djqqzzt", "PJQhQukMUjuopiwwbbYXSKrBcFIqA") }, + { XHDR("woxqy", "TfeDAtIdeJiTOFsZulfYGMtvcWTTYHujhoCgFGvuKRdsUtyUpLStnAnZdHZexeG") }, + { XHDR("zesypfxylo", "zmcyrppLLiDJIeRnxTCVHBRwVZLusXxVvJgXQFyQlMuPIQq") }, + { XHDR("sqeoandouasnsw", "yvhTlbeqNPzbBTWlmHrDuHqsvYMOYgmpAOkWzMfnafXEovklNyT") }, + { XHDR("nwswnqmxylm", "BhAuGYSrBdcsGNyUuwZrnUERZVXpZXURXhOETVkqiaRPGFftMhqHBXKr") }, + { XHDR("xhsktyphhob", "dWoAnBYsnqvJnUvwygUAPdFVEakHkeHHfNSvmRTWCP") }, + { XHDR("elfczwyi", "ahhQrKaBfJzLTHiOrKrMwwSwowmTUQfdnLHPwvWmFwvqnMpnWnLlmkmHpqIdpuKEcWQKzOhNQvlOiMym") }, + { XHDR("gnsgmmst", "kipguTIhnrlVfLSdfRnaSBZP") }, + { XHDR("hzaxjmgkuki", "zncOqHnNmuonmXRUxqjwPt") }, + { XHDR("eql", "XzcXSDPBviKLBRMXjt") }, + { XHDR("v", "MfulQUPFdmbWNGqFALWEpetJXjIxuGfmDxTrAHXEjWRdPwLJ") }, + { XHDR("xzxl", "moPSFfoQTzIhpdTbptAQtmgzicoQkEQfSwPZBDxz") }, + { XHDR("wjksllmz", "bjrTjJFzdOoAMCVxiwnkrTsFgMwLxLxWTWbDsqDBtAqSe") }, + { XHDR("bnxcpuw", "nJgqpSRNXpqpgBIphLbevuewCpZuuRllyMghUuwC") }, + { XHDR("qvisshzrqgq", "xaAYhdQRCcROREbMzlAGyXVowbBbxcQVrmrOqmFnRpLKqboRqJjyjooKcERWrIEhc") }, + { XHDR("zesq", "eZCUZBEeaJfcNSbjkPZfmsUhIPwcIWA") }, + { XHDR("jduyeqfctyil", "DWQIQKaDdupUAdSCRTTjSQUeRWRnczoXdOWvwMqkXgaVfbwPnQioRUcozloMfhFNEZbFyMkPj") }, + { XHDR("dbavebabbwc", "eDNTuiTzesPclHZzmAgwtDuK") }, + { XHDR("y", "UILcCfBnXThUXwxeBMsnSipYYiQstPQfhjBWmD") }, + { XHDR("rfkyqbmfpeqkwnfr", "dTGgOPdPAgAEUFIiTDqtoJSxtWZRsGenPkkoCZPfGXTXGxJBrqdOEnaSbBYAYTVeGxcGOkUSiV") }, + { XHDR("thffkyolwfqmyucwdcd", "FupDvgmqYdVjrmuLzjPufpsNyQLpYeIhncyJckzeDZDpqR") }, + { XHDR("ujlnyxdkyhieurxgc", "pgGkTIUrwaHHonnUUzIqgl") }, + { XHDR("lhfne", "BQzTbExOmPFXMByVnzqPNpqpEUkCApsReipWBQjXPKKmnmaNcWKwVwcxTvErHNgvrfBOu") }, + { XHDR("fjnhikjapx", "jXZDeBiPHVVXEOh") }, + { XHDR("etkgxt", "DHTImTFRixEhbQrFwCwiHMVXBUHnRADTlTzIJWpoNfkntCep") }, + { XHDR("ddonibffpe", "BKzJuKCQHazxRFoUAfuURIbJmDzsldUJMtMGMoMnULf") }, + { XHDR("gfaqhmhyozaabzxrvrh", "RNgwOxnluxJjPzQEIQOUOCRNkOoOBcICKzPRhBUIxlKCaXxbNWGojpSdYJxzZHjFNoQUNZAJHuqro") }, + { XHDR("p", "mODYdUujtxGPVKpZmxiQKceaMWPf") }, + { XHDR("ywxw", "LCgufZiiYNmGSfSLgBbbjouHstjHa") }, + { XHDR("ldazjkczkxdgomza", "VnKzSduZILwuzZFNKDtrVdxxlVphGAMEVCGYiiGcnkyEugARRCxgTbqECcn") }, + { XHDR("iwo", "CstRCgSaJqMPDKftejdUTirRwcFRqkmvJwUhApyvqVsteHujPrGnnRlrbkMrHATqpL") }, + { XHDR("yubvffubhk", "JewqduGFhJVoUZVIqmLpaYCxwTWtCnQPHnaihKIVSZEEznjjYRUZMJnSbM") }, + { XHDR("otqsiumpixdn", "jBrgKqEcQeNqKEjYdSCRCWNbAIXJRKoZwjHnPheIOsISJPyJhiozOEDm") }, + { XHDR("usuiidjoe", "yIElhaWWfWghtgxAPFChkmEWtFmxpbt") }, + { XHDR("iawfogyrpd", "EgNmWDWvtFlnuwhfnESyQzEKqIuVwJnZBgewTYAxwaJzbBPYuIRi") }, + { XHDR("zzvwgc", "aAlPnXWYtRBYHOunZzeqDVabiXKghStNrQKKFUats") }, + { XHDR("cvivgsflwafm", "kHwANcAFdsVaGNpvifyoQKdajvvsOzHHcKFnxlzDvTtDJbVziNTHguRh") }, + { XHDR("rsimtodwrytljwc", "IcPrFjmUpDQOrPZpfkqWhsAXkZsuYS") }, + { XHDR("io", "LzbHZFvbyjmPayLXwNhgGHvqalgCmpkVcsKkHxVeYBpDaUUVRDFaRTfsUTHgfDxtbmhFrwbe") }, + { XHDR("dvvketkawvyzisvrj", "RTpIBKhuIpqiWktjUufGS") }, + { XHDR("vcno", "nWYwFfYxXLdnXICxJnWNNnOvxytazSlIzdZVxQrpGvzgaNEzfAuwFVHgZeapxJaQRtvPDWeXcgfakpTa") }, + { XHDR("cpmfy", "ABfbnVhHKEqNaEECbpezHEkudInPSDCQtIbY") }, + { XHDR("ycakacwzrvjdvnojrbhg", "gZzyBAhxAzRBnkWpfsIncvPDgYnOTWbKFoAbKxlzxmXyoecOpmauVdJCSYFnNOdaoeRgVxe") }, + { XHDR("krvsjsoknfhjanp", "hBthXZsAkTJOTFPiLuvfiKyPdpVD") }, + { XHDR("rabpwnymramjbjhjg", "vYMlWcyZtTjnmXhuOnqY") }, + { XHDR("kovlvohbiech", "FtCTAbpbUQYz") }, + { XHDR("inkadg", "qmHNhmgwMnJfymnToTjHlBXkbuyLNHXjSUOfEf") }, + { XHDR("xninclzwgpvwwfba", "drqwWiTNfgSKraXehlqDLhXYqkTctRuXvEgNmYo") }, + { XHDR("vdzkuptxojkzgs", "QwELeGCvmJJWvsDWNuHpjDbtXKiUuYLtBGBwKGSVTKoWMpZJdqQsnFNjhzNo") }, + { XHDR("anmzbefmetcpmcumclxt", "gUpiCUApIPgtYuDHPS") }, + { XHDR("awbdmfdvadueeyey", "htrAajPlFSuRXFQhfdKmrZUJxIaQUCju") }, + { XHDR("tn", "VMvCHJqcBTCNRcRGeFnfJKvqQteNkiICxdyzVpZUcsdlnpTxPHYqqvilZSSaPjyhkzREazZYVNhQSnuy") }, + { XHDR("vmqm", "mVAuFZWQsmizHOFf") }, + { XHDR("lqjmduiahimnqxz", "vgKggwiweDPWqLwLixwQwZCUZbFOHsYAEgDCJvtHkMwdujfkakigQvyehx") }, + { XHDR("uuwjtty", "cuavqCWDESiNNNGQkexMvMklHWnlbqxTJjWUGxtgexNowmXnDtDQy") }, + { XHDR("jcknor", "kenppgUyOhrBrSJZaTyVffBSRLGACycUUEIsBpNmYlfr") }, + { XHDR("ksm", "OQEalFGvTypdxZJuEtfPzbRuBblXobDyXvxdvNnSdRwiNqkYPNvPynLxaDFvI") }, + { XHDR("sjvezynkomlvksqzzfoj", "iyZnYHMSnOiWnqnmAOclhttKlPRfeEUqCqDYyQWfcmBLVdPFCq") }, + { XHDR("mdgoss", "YGlzxgjjkjHjiOGRiZN") }, + { XHDR("bqxamqfvgptqejawecl", "NALlIVARHuzyKOzoxeRKmhpKScggQRtHZKdkQYcDkHsq") }, + { XHDR("uwxfajx", "RFdGznlnAPVmxFIsFCYqdtToaYpPCnmpSZOQvQH") }, + { XHDR("nklceg", "XTjujuFJiagSZiTJUZWtLmjoVXMdsSdZ") }, + { XHDR("nn", "EQMutzcqRKxmvYbWlyDQtdFqY") }, + { XHDR("wpbcfiuezyucsps", "QYoaJwUYZlbHOfnmIqROCzdwjCxwwmobXcwvVlULXOAEFtZYYixShfaEznHJmb") }, + { XHDR("cpnxjinjjudazobwr", "hFYjYKJVdvChEAoCbDzxOfSeyhNlcCXtfjjiNOnvzzHelPXqfzhpYrRxahsfZeDBIkGmhTZmcYN") }, + { XHDR("pflwp", "McaZrLqshpJRihNljaquJCW") }, + { XHDR("cdkb", "VBWZmVmhDWlPQwMzYtMmoABlqnZiPWIXgEzPacdpWiGiWXOESfjOENeeweLZbJIOVIs") }, + { XHDR("phabpd", "vipfiOXfsIGTNbUrpyecEFnrRwsiPOxUwEVymlaMHPeWSJadchNShjgH") }, + { XHDR("azwblui", "sAmHnpU") }, + { XHDR("bdvqrpfkatfptxsalu", "fwKTjxgYgazgHrQudKkxHZoCrKRIQkbztbANdLUzaVVtQyulvGrqhQxdtWRLIrtHsx") }, + { XHDR("idgr", "ymkOKLIRfRZuYCESCvbqIdKmIOrOeXVeJuxVpxnMqDsB") }, + { XHDR("sgeeobmrwad", "mLZFijMgGcrUAFEKNVNYrFVcJDJZWruySVaqHredwJyJyqQcYltreMlmyVEzXFMGWivDPjf") }, + { XHDR("qqmuc", "VfaDgDtrDQFvFIIzDCHjhtVzw") }, + { XHDR("uyarfm", "NdalqqsIcckcUhcrPsFxx") }, + { XHDR("ocjmdmusfasawtq", "LAGWAxTtzHrbCWhAvtkdVTMsjuWahaqTBEfBMaedFQsveMMbqBxNfyoXCySyFMyWCCiVJga") }, + { XHDR("lin", "BoCbDcQWFyKTdBkyOMjHRUJtZazAhqyxHHjSCRayRTIhrrMhzvAMOkKJcqQesn") }, + { XHDR("unsqfspsnzlrkqvpx", "lbncvt") }, + { XHDR("zaisc", "rmurUMFq") }, + { XHDR("esvmoifyoziwezila", "aOXOGOjZoaryglaJvInvHadTeHPFrac") }, + { XHDR("gbclgtbgcpje", "BKTdRvtznLHkDEAYNExnMsYNNWnUrdLwJu") }, + { XHDR("bpbdckkvrwmwibpkagwa", "egyV") }, + { XHDR("dgovedvtkzcq", "ZUrfIeeWUkOSLkcgfewNenGElSZmhIHdoSM") }, + { XHDR("xifyojzwewvqfr", "hwEtMKfpbyBqScjDONJPNLqsTclTpVhsyr") }, + { XHDR("uqbcyqbw", "DrnluRsFzncitXXEjECjJHrPSOzJCihHdzhkUtVHYkXLhksUasRZMsrnDZPWIxDCLQK") }, + { XHDR("bhljm", "yBGneYScTJuhgoOEXpHjFokegHKahjcObyoAezIbqOGwefwlCuEPbDPDif") }, + { XHDR("ketzykagllkb", "dTRNgrDJqScvWsIRwHdmvPfghCCQQLmjnFUSthLPefnvmWwhEaMOeTjFeTFsAbnL") }, + { XHDR("ixip", "SeBBtquvQBDrXWUufuOoZZ") }, + { XHDR("dqv", "XDNMjcLOOxKjzGzEhvVPER") }, + { XHDR("sapn", "tNbwjJPmyvnQoBhHzGyxHwLMavPPOOJeMLbfqHmCXSJQOksmvYPtovdIrzyZzQxFTaTClpj") }, + { XHDR("inhxa", "td") }, + { XHDR("ajqvtiscqmfmxlg", "HzmTeDyiTCsJnTnKiGdxlSeZalfbrxtusUkh") }, + { XHDR("yl", "vsUEBBAUjnMvxmKCfPrI") }, + { XHDR("pjhta", "xZTZMbSNnOzQaGmfVYTTbFVCAAJcaBATQFcstiERBgdiGEFlnBAPGikNnkGBTUqKEkYuyuInJgoJR") }, + { XHDR("bvjedmngliion", "iEYUEFEaUWQsIOMHsVygTUMFnFghEF") }, + { XHDR("jdoxbzrn", "MHLMaexMMpUwIV") }, + { XHDR("wnljnvin", "bUQKOtaVuHZSDKVzWLPWbQjencIQmQFfgNFjtbDyFzLOOncSavfkbzDOKMlC") }, + { XHDR("irgrhvxpyw", "MQzwOOyPoXSdKzjnrKrSmGJVYfSiXETLgGYbdIMoyNecAFvLNgZiXsYtpbYGCLxDCbYXWUKetu") }, + { XHDR("cjeodmvscmqzv", "pRccjYyUJiPFJYfDulfbegCzIExrdOJQUzwbhGzSDmeZwBxzfIjQHgPhLySaHueKevyohdyRF") }, + { XHDR("nhpdllletyxc", "UWcebcLhQSuMEBglZwBVUdccFwdDZuoVuuhmZifaJsEaoJoNpkmuLPdDUYfstpebirf") }, + { XHDR("icytdjpnvwhtyxzrmn", "FeZJBBblFXJiFjphDJiqoFhljq") }, + { XHDR("fyvgyxzkbyhondhdowfd", "RYxDbHpJQrRlVSaZxPeJyGvgKtWIHuSoOULFxTxKrkmacXhfgjjkgsYNFBWADN") }, + { XHDR("nhyfaclatqmh", "vizjIgmmcUlKnMxGdnkktlZLUmTZFrnmAaMIfMLbEbfUbFGeIuoKgqimPeI") }, + { XHDR("uooujg", "tsDiFQfXWBNlRxYVBASmTaZaZIja") }, + { XHDR("fwgoibbax", "GZKybtLSfuDbA") }, + { XHDR("zigfrmxeuqxyviocxy", "cuXVKjkCgJVYXABaUWKXYPNBuFLyOhEsfbROBJhfz") }, + { XHDR("r", "sbehcKeXzaVBDDKkDRkGVPiiLL") }, + { XHDR("gb", "DdGPzgbFObrxOSZeZwmcfiLNGSjkZJBGrKniiDUkZdHjPWwevqrybluGqdThNQlIqm") }, + { XHDR("htsigatlfswg", "mvHhRCCxNIjLrCVNmUiRXNFEfwsbgJPHWGXeGimPtWBXVKP") }, + { XHDR("kovicsqpfzqg", "CTbWDFWbwugqvsYeXZuUKvJxDgKbOKipPjNR") }, + { XHDR("wbtczgorylwessza", "ltyHDXMqwDIXnJwAYPkmpTNRzihFLOBgSwJGyLMeLhhSMLVPcn") }, + { XHDR("l", "gfIJWVsLdmHRdAKhCHDoJySYkTfFvYJZjIoFMbFVbDmZOOz") }, + { XHDR("yojkldrdj", "bCHujmyuZLmrfIBzTF") }, + { XHDR("cexhfxl", "ZNrNrxWKnDtYBKyOjWpZV") }, + { XHDR("zs", "vuEFEntHBEcKSrydHyQPOKaLkudxQRNCzDJMpvesuaLqWcPH") }, + { XHDR("efpdjcijkqzewwzhdz", "qEEbjFtBhsNViVdQyfbNd") }, + { XHDR("smvs", "LPIfWFXSzTxqcMCiTQhSFDmxszUXnmYaOrZBCBJcpiqjcEmxkHGvRPGPWrH") }, + { XHDR("mpgdvczqviuzuwta", "ymOls") }, + { XHDR("bpjttviri", "ncqgbogdZJxLZoNHsLHBkebPmJMPEiaFyjiEgOtPiPTnZPbHXfEXMJmVKYauGL") }, + { XHDR("gekaupnduldkh", "wz") }, + { XHDR("fscwnftui", "ZGwGiMOpfYUaDqIrtSl") }, + { XHDR("rvcqiubofndy", "QJeEffvjtUCNzRlekMSFAOomRVTgA") }, + { XHDR("igntquvmmut", "MzzKrXpaemFUUsRfztVXQWNZNHcMkPWQLoMAN") }, + { XHDR("bihfrjmfxzlhhi", "DJryvtKPbv") }, + { XHDR("kruzmnmlvhogbit", "gfCiXvitwjgXBcoqZYnJrpOgdgrsOyGKRemtiDEEcuIpIdOSjNaOV") }, + { XHDR("gyoxlogbh", "BXJPlOodJXOAgRqzVAAZmQjzVbbo") }, + { XHDR("tposbwshffjv", "kNnQtAYirfpYxrgevRqzTCacRkjVVVnGTLzROZshkNrNAKlBMTCzAxOuAQJ") }, + { XHDR("bmxlscvaduombiavqxi", "uXziMiaTcqytPLKOprFyfDMkJTaxxThvllJsBlROlbVjabGVXhSTtkBTKtzftYOeSqgxCup") }, + { XHDR("g", "DCvWkaMPdmIgBOJJnmJzgQTZSaIYQbmJCooeoXZpEDMfmrHOAFzuMWxweCIcu") }, + { XHDR("objrhdrggpmxwchjipk", "HNpMOrAPFkDgVIMptirsaFdPcJzQyaPyoisygnAiIpnjjXOibIOQDhfZrZvvLziTEzeHHn") }, + { XHDR("vcinwokv", "hqHYFTQMcmfaucCDmBmvKzpBzOlLbfUznbtBMsCtUQNZKL") }, + { XHDR("pwjaieimgzzpy", "YyDKUxFCwVHUmylYzmzReibYl") }, + { XHDR("hzjygrqfqdviqlveyt", "PmkLCyhjHYMjyMSxdzQTzNMoUvfvHlMwPhADuYDlSARRdMMYcqLZ") }, + { XHDR("wxa", "TSbYbemDYQwhOSytUlZmBMCfDcFqNhWIpMxzpThwWzCIAsDayShwZuguhYkQaeP") }, + { XHDR("jghjd", "itbXsQR") }, + { XHDR("iyzmoafbnua", "NgBOLcPcs") }, + { XHDR("tuwab", "pixpZBWUKNAlvuiCTfVscDjxPJEtGdNjldJvnjKvzkEwIPaKMzKGtecSjp") }, + { XHDR("idesjdawffnhz", "JFhNbHDNE") }, + { XHDR("my", "sqBOLLVCOYYJXTse") }, + { XHDR("twbvipshlvhfxb", "eLJLIzDqejctVWlZErOOjTHDKI") }, + { XHDR("zsuntcvrxy", "myLGbhB") }, + { XHDR("xaycnf", "eAOnJcEwGjgrzLKSzepamJcVCUZtmmKBUYexwA") }, + { XHDR("egcnspztlpreaixrug", "WXbDHtOtAjbhtVvYAvnhauoLTVDtpSi") }, + { XHDR("npropprgrzqagjiql", "QpWRiRGgwRXwlkEabkUSobZkyRdGIOxhESpSrndTiKjSOvxgNVHKnpkOUPxGbXnP") }, + { XHDR("zklksxrefpamidv", "TYRKnTRTxXSPZTTQfPDhvGRlLvIFJiwKimZxbqcpQwJLEtlKFqZUcSdrOvxCUtQRBGzPIXTYaDLe") }, + { XHDR("uodprhftfml", "wzyTtSJHelYoFtnpMUkcOfNKcauLJYOEemFJFEtxMlmGyPqnFayXgqKIkrZdXnsuNSxoVdsLMjq") }, + { XHDR("ovmveiatpf", "iBCycWgPgeURXTjPLzNuJLhIdrsHnvdtFcndJCDrGDPQtKQAiAJIfdpViCcuHeemCrCDL") }, + { XHDR("xemuggtjjcdelxr", "qmPcHwAMhCK") }, + { XHDR("ma", "fXZFxsghsslbxWBqZKuOzeFwbDdEJnjbWjhoLAAlxrOGXuvVRDOlMCmVL") }, + { XHDR("xox", "NjLthLEmFNrVuQGtwXLMCUlRJuQqkNQVwqkjTnLHizmqcDHeTx") }, + { XHDR("ozmdehgdzsxmgxgrecy", "QUtjEyQAGdBNWFCzF") }, + { XHDR("ilvpx", "Q") }, + { XHDR("i", "mHTzUFBBKfnPNuffgxuyazUDpQvHBWAMLxPdlQpaxsKPICLdMpykqcsLM") }, + { XHDR("kkizzpiwvqn", "vAfOhijBEXCdYRxWIZUpDUUMEHNLrET") }, + { XHDR("urkyusvxcuxjb", "UueijrBVgkUdhONCGnnEMT") }, + { XHDR("oqdhbskguunugygc", "hYNdcKEGkpimXsBBjdtNcTvreaDBzcqotbAcyIMoVwS") }, + { XHDR("ye", "NbkGr") }, + { XHDR("hyekkpobhaqmc", "UqpfSypNlMeguiIUSeZpPwBorZhraz") }, + { XHDR("f", "v") }, + { XHDR("rkcocm", "aKOD") }, + { XHDR("ixsedidhuezbel", "LNIyJuofuXjWCRMhBGIQLLrDrDVJRqxBjDrjFctUuCFUhXXEqg") }, + { XHDR("ljnfzoeejomb", "aADAEbWcPZauAHYojDopgBHHxyvBWJTetFJawgc") }, + { XHDR("fibwiksnkyvlkn", "nq") }, + { XHDR("gpcwnchwwnbwahlek", "rUpJGuGxlWjmKWoineZh") }, + { XHDR("mpn", "cHBLFinxDveqzpZfDjS") }, + { XHDR("aftbrrqjmi", "XsYVAQgZKMlzsKwxKGOlooPPgyOctW") }, + { XHDR("dn", "beurXom") }, + { XHDR("hetqxkgozpqjcy", "XnIxqDCTUKawbIeEOpbNqwsNkAcpPRqgkBTE") }, + { XHDR("lgotgyaydmg", "BksDSsehzGDrEqzwobVsLiBwHyYuSLzThqFbOUmURrXLfMkAfTixsPRZfDmlesRfwDqQsy") }, + { XHDR("ikopqmxaivuecuq", "bpwGxanRtFRRsMLZq") }, + { XHDR("a", "utQVlzsZagqBfFpSisPngLsWbFecfeXwDmMrzEJmUekrJ") }, + { XHDR("zfsxqumvi", "QFHBPLbYIdYVFGIupieqqhoFJPZgDVJlvxzeMoHgIeaL") }, + { XHDR("yodxmvfdgk", "iBBpyhBRmWqVJVmEDjvSKvykezBRSCoUvJjsuRZDdAJJdYtRWeJOKrWFRxFxOaFXNyEbzOMjxVhQYZsZ") }, + { XHDR("fqebtcx", "OyjGoeFsPiHhmIXMmvbWrMeHes") }, + { XHDR("taiovvbwmozupfjms", "xyefocsm") }, + { XHDR("sbohlwghrxsenxkddl", "dBmHSuQnvRdFmkqZxvezOq") }, + { XHDR("eharhnv", "MQYqmUtSpgYmrPASwaapkkZIVNtnxXnghp") }, + { XHDR("vhffttywkrwmdjm", "IaiyKBxtdYjnZARMOIoSRRSFjsLyw") }, + { XHDR("e", "wFcCsZXGabQyveLJs") }, + { XHDR("wuz", "kBHtYonqPOLTQPQBAeUrPkEmUfXM") }, + { XHDR("hurfgtyc", "VOFnIOKGZLWjaOdYFmgEfpdyHcYESSadQojPEHQfNMbEQHAuYtcygL") }, + { XHDR("smljj", "rQXLAulcvaxqrAo") }, + { XHDR("vbrgynvbigatnjow", "rPqWBtRBDoshNwnyQViBvLvvXwflqm") }, + { XHDR("wlevgjkxl", "EuDRBkWnmNEsIRnOGKQcdUMRlDWAZsWYEUoFwlRCAbarnsZptzQlnjqm") }, + { XHDR("ypavgladcbdrrwbmqi", "tFekDuuZLcIPhKduXKeOzrqucjbkLCBGgOSPBKjjyngVyyYUSFsfwJecbMEnssTFCysADCD") }, + { XHDR("llhdgajef", "VuKDASUGJGlDq") }, + { XHDR("zbjkyo", "lFQYAIUXTxbiZbDMbMWztTHlSWFDQhuqIQCbKYRmRGQnG") }, + { XHDR("lbfbgb", "GCujJgzRdGTxhbmIMoIIDJDZkHYDhcNTcCLcpzUaYnUsWFatvapnriqalmuOUlSjjNapzKYXyEGP") }, + { XHDR("slua", "aPrCDELZiybVZbNjOBVKGbKaCqWYaEUNjLZRmdlHD") }, + { XHDR("cbpecavefxdy", "TDOzYmmCkdpRyxdhyWIujpvdsKnBWNxmSCCrXzpumjJabdfBdtFveUnObsreiTqIh") }, + { XHDR("zfttjrasotsyqmzuoq", "WLljtCtlNugsDwDHCAjQLlrHZdtOBbySiEGVsHxzFQLkELoMRlk") }, + { XHDR("iik", "dwrtDGAQm") }, + { XHDR("mjaeyqellmkvnlpaph", "aIyGInlqCIgFGPGkPtjjZHzciFqJkkSHhxGaGIWNNEmTkTHgNMigLGpTOtEUoqdICOtPVSeFlM") }, + { XHDR("xygrxahqzw", "KiFXvHAvDWqJvFnvdsCAqmmBGmXLvwf") }, + { XHDR("hgznlivldnnzvhvfqc", "mlDgfgShAMdvNFhxvPavuXn") }, + { XHDR("loqaapnabjqdnpvshzw", "pSQhqvaMLSMJuxFBC") }, + { XHDR("kkua", "Gm") }, + { XHDR("ykgwsdqxjsyijair", "roVOifpwgXMXQPvFDjKJWQuqdlRBVYdnFqwljHmMgojvZnZVPdXVCXDXYLhhWgyQnns") }, + { XHDR("dld", "bglurAboQjzlMPUCjRCagvsAmwEwILkisdbiSEeZfwjjUevsBpUFhDpieNPizYxGwc") }, + { XHDR("wucbpybwxjwzyrfxz", "ZBnodWHaOVacGSscheqWakIjDeWqWarprlmB") }, + { XHDR("lqihjaoelmwkvmzka", "baAVhZgD") }, + { XHDR("gmju", "SLnKjBrrrJGTwJUfndbblvOOjrBcDkCDeMAeYnIPjGNpzJStOi") }, + { XHDR("terpzffqtpkfauedf", "EoWdyc") }, + { XHDR("ehbdkhtfldixkpi", "YVzQRhCXMlhKjtZNt") }, + { XHDR("yexbmfuigbqiycsioltj", "CKCOUPBBOuuOvFPRQyQShroWxsdzpfjPFXfZjfFGBPffmgukpn") }, + { XHDR("ujmaaajwdcra", "OhRDVJlVFFusDtTJMmzzYKdsjdzhTWzLd") }, + { XHDR("ljvzpnxx", "sSKsknyVDDcluHyONHcCdIuzCOWMxZPgQsKgAMRkrJYRjBrKsb") }, + { XHDR("yyjqornjlojekd", "aeieKUzXJiObdKoOTqKtDatuINe") }, + { XHDR("racrnhtvrvxayqw", "UQCKeKijuiHJXcxINheLuJZenUEIKcLbIVnSfgyAxyh") }, + { XHDR("luuk", "qBCtswnDEkqoLgtZHarXDwfhoTGihxavdyJmDRHbroXUicSTDkvODNjSaEDfwMdOVtXvkSTnJUx") }, + { XHDR("glywdfcxkqdskdu", "pAUaTBWtxcECanfxJJtuyziKbpkjnpPAqnhAOKl") }, + { XHDR("geuqfqdyxfldaakll", "YDBxTlMjmbBHTxulTkBaNeTSizoDfCfkCpvqeledhjVvfyeqXNNggX") }, + { XHDR("itrh", "iaeUsjOQHLhKksdh") }, + { XHDR("hdfrldvihtvtycvfnaja", "lWPhchuuzcyDDWpHWIRSQtBLESMgYNqVLJBMgAdKYJEiPBbvjwiXnuXMCtIVL") }, + { XHDR("dtlkuefujqtkorc", "BMWeJSYKVUAEvJasQDdvzrZflwYbczEFigETLGvjfXcCJeKUWCkReVGEXVHhwEmrgNekjQbcNLnSkZ") }, + { XHDR("qzwhmzg", "dwvMabRdwrEkuHGxpMNJgMnODNQxIanfygrKnBarPAtewCRhooyNt") }, + { XHDR("fyveofwfnyptmijzumgu", "mBTFTbjzuAxbDtCdzyxKRssZyerqcl") }, + { XHDR("xhtsulypstn", "DTvjviYElrrjrYQUSZpGUvNxMhWkDBAVyIINhEGAGFKpRjagpmwoPinxEfVSqfTMxfM") }, + { XHDR("ocqxnbasmhyjtxpj", "lQERINVWMdJUPqxfHOIdwpfairPERKmFHHvHEGVfuBGSTrRiiMlKsROAzQx") }, + { XHDR("cgtdhrxdgqyrp", "UcmdTgZxRGlxieoqUpxe") }, + { XHDR("vogbvfnrol", "BUcBdgKJglBlTfyCjVTUGfyGGGJriUHNGpzMbyAVLwB") }, + { XHDR("onbrrwqkbd", "aQIfHJMbEysAjFfulYLozZnKfLA") }, + { XHDR("xrliexscbmnaiki", "gRUbesHJrrjouqhbeHdVmXvEmMmCbjtKsIbRBfVqaazzFUgoiSsIpWqvgHIyqrxlIolYc") }, + { XHDR("dfuegggxxwyovrsiijq", "uTLGruArcxfFiFSwQASIXfASZJORaWswcEMIMsPTgiuRxLJdAOLdBcEOuuIgpDQQcGiPjRIPvaxbC") }, + { XHDR("nyqgloraim", "gqQsrmyKnv") }, + { XHDR("fqynzjdkhlckmshxqs", "yqYYkoCXAqzlMLVaEMuUsafx") }, + { XHDR("ofpzgitw", "QbeYZHubQaVltYlEQWIgvSSiyViOeXhDlCQHiOXIGEStPGmwBXkQoUuhpHtwForP") }, + { XHDR("cqtmukibzzbapszvg", "ExdHaMUowDrGuGECbf") }, + { XHDR("tmsv", "hIHlvKDksnZkKGGU") }, + { XHDR("dwkcrzvodkpavjv", "RJWGqLVkIybEewiOAbPiMNPNTMLowDtMQuWcaXMbabMsENwOTBVjeogVpYWFSIPxJRehigRxLmMUJJbE") }, + { XHDR("dcihps", "fYlDnGsbU") }, + { XHDR("si", "vVAIJrCwCcxU") }, + { XHDR("nlpsyhkmcizgsswaqod", "CDGNBepupeatpTKofxRqXdfabPxvGywFJjkRQhZXtHBuSrNqoe") }, + { XHDR("ch", "tePtUctJAXWdcEOvEKhresMmpDjejadEoCCEPRVrSSpWvDHpHsYDpjIEDUXdprIXgBz") }, + { XHDR("ywscnegylyphqfuvduz", "lVnWltvGQkuWXJCKTZeafDCPuPTEZSi") }, + { XHDR("zpwrckvgk", "mnGjFZIsliuXnLNMNLUWCOYCAehswpFuuRcLtnVhpsCIkyqwBkuJOkzuCQtKcRBmkLGaaJByk") }, + { XHDR("etowx", "ijGCEaCkrWHpvzKHbsMbhiBarYfIsWjnPqdCFtPd") }, + { XHDR("n", "wkPlqDWmanbrerBVwQHJjFDwFcVptimASVqXBUHgWuHCkjMstYEubwLBejHFBIFlPyEjI") }, + { XHDR("bhtxkvzorwlbf", "cfFcMVbhdiIErzNQPGfLvDdFchqfcTUfBASyZpzRkJAxmifTrmiBldPKqqUtJakbRfvGt") }, + { XHDR("zfw", "uRkICyKPPNzufUuJsXNvPIXwOCFpbCPhHRIoOZQCLdALGumYlBclzKfXFYByxxKxY") }, + { XHDR("eydqninkygitndxv", "DymMWxeSvVtKQSvsocuIQCdLFRpCNiGjQjwFFGZNDhLXDBgvcHyNKXqwhYXoiPCLh") }, + { XHDR("twmomxh", "WquWngjJrGDJOFWXRjTcqjufLkGwyvjuTqZkHwipZyvvfwHUfqkhPAtpSO") }, + { XHDR("zqpgnugluhwoyte", "IFWZNXqdmWCyEyuvsadPGgdULoZqHBzqMlhsNAxMbTtFgLFHuTiztnz") }, + { XHDR("dgwkzdbbae", "nCxznvDSNUcMJjqpulITPtFFUaRM") }, + { XHDR("kgdzcg", "ooFuvtrdwyorJDfnepQjUwJEpeDcBOIXxltNWmEQfFFHAyCkhhvnltlsBOrC") }, + { XHDR("wlzrgp", "NkzRPRoUtoNTlIIYXdcDpczAyTpgIflhxSulvPvRChRWmgGGoXqOKZIAmYiJR") }, + { XHDR("mgkd", "qKfCRoeordjjFXIsjnqpqrnCxostBKpWYBpA") }, + { XHDR("zehtiu", "GJhipEItCyxmAEAUSIsnbjCB") }, + { XHDR("juweclibnpiwc", "HiYNAzJCKUwgGcefiJPLctkPBeSIEDFbLvJWlTWtWftNttuqlexBPyzuypAiyFAYFubjLjcbVytMrof") }, + { XHDR("mrfy", "TrrhSAeQCodthskUExLysjFGEYXpAHdKQCHHfVBGVNvaqAcgtq") }, + { XHDR("ehylsautknuanovxbr", "tkLZPztJetNTxJkiXuWJ") }, + { XHDR("xwnj", "EaXdNshdiyIhAvOiJIWgzsXilRcCScTVvAxcuXTxt") }, + { XHDR("zr", "YIMPVIsAHKBklUlWQOJiwEUwdAXddCHAQZfCWeueeOJILUkseWWCUNjq") }, + { XHDR("urbq", "cgtJhyBZJmpqcsqspjsGvWItHRoaJoFhLPcaLyBX") }, + { XHDR("ynnfffrelbdf", "pCxFxfcRktYPCrVvsAgCxObDfMoQQtPPcaxolIivQZBRmQfIAMsUEHuNkQCYghuTyuIUxmDJuNjJ") }, + { XHDR("msscjfzuquluehdgtwzh", "EbGLlpFoSGZ") }, + { XHDR("o", "OoHdGvQVlDCtlzVRjWXckWkHaeDpjhMvTapGOMrmeqnRsROJMFkcfTvBJyalxrBaPswzrTFzV") }, + { XHDR("wgnnsdjo", "bkcldpsWNwzEvHOFMDsQefwPJHphVputN") }, + { XHDR("ulz", "edPwUVtpuhhCgrZIKBWFVIWRnUPVCYRUWVPC") }, + { XHDR("lwyqbnrhvycjoqwdzkf", "rmcYHerQjJbtpoxltcjbMyevSdtyeuePtHumNAHHVZbZfXFuYscyC") }, + { XHDR("iqsfpzwhq", "aGwbcEQOrToUvrcizPqIxVhRUYMlJOuBKJtJUIEoxuwaeyeOuyDoaEmVFPqtm") }, + { XHDR("vnkilwfzfmi", "ktQ") }, + { XHDR("zsmivwtn", "OVTQDAvrPHEsubHonK") }, + { XHDR("glxenr", "OWL") }, + { XHDR("cspjhbpbikvnpbjgooz", "AXjCPfRitfpVlsVwE") }, + { XHDR("uoy", "gtGimProGpdDF") }, + { XHDR("zayvejua", "aygIwpUBTCBSCTTnhHZnvTWhclUDKiPpayXONskIpIwUDdFwbisTxGkOisEGmLdNJVGaEyRxf") }, + { XHDR("cmqofwofetq", "PPQaldOWzlDZXvnNiatRORqKNMORLRfDMaLTdoHDuRqYMdOODqHHkeQLDHIaiCcdMjnug") }, + { XHDR("ovygfgyamkzl", "oncngNVXCIZEYdBtUzKIRsPStn") }, + { XHDR("xteew", "qtLZnHQMyGoPTYcPFqGAOLPoO") }, + { XHDR("wlzrvjkupyqhzzmvlatp", "NlPcapZoppWoVfHhhoXVGyDbcUQdrDIOWshlFjaIALkaNvGnyk") }, + { XHDR("wsfwvln", "LZE") }, + { XHDR("nymtjigpamehxudh", "qWbNaRwcWVcOCIvnMCcXHoVYjddfYEGCcBxNTJOuApxGzNavRulTdSTgbRGkPicMGH") }, + { XHDR("znqtxetioq", "dgPVPxTRpJ") }, + { XHDR("zcfvykenfgpoitf", "kNPSBPReGhxJUyFmZwkOeKYPtShiwDGZlvcwfwHUcYMfebftoON") }, + { XHDR("osy", "ZBgEgVEiiIuwcaEztLZtqLBzaqUdZByZTwstTWNqOtTMVWNUbafPkiVYMVqIxtdZNWxcNIrt") }, + { XHDR("dglzhqbqncrlnppbz", "FoIbonGa") }, + { XHDR("nwvekxtepurkq", "rubluLCZvYwkyXkSqqrudhRqxKtwpWiAqGnQFPDktyvtovMHIZ") }, + { XHDR("ldjasq", "nKem") }, + { XHDR("yzknsq", "pxLAOVLeSerCvBJpKRKlrDAjlUwRen") }, + { XHDR("hratoomxfocabkzfa", "INrwdMMHJfk") }, + { XHDR("wufftnxm", "dPRCrNgydamttKFEijwlvh") }, + { XHDR("hqhpetlvew", "DkdkvDcDvRUXZBMVYZghNmZe") }, + { XHDR("safhjvo", "JgIaFPXTjBdUqVmdGHBvLiClOyxrtFVikkSKNDwjaNSJrjsYnbZUxsWIQbeDHW") }, + { XHDR("pbwasroqhgxtkbftmlva", "YQmnownDsbTGTceIepJcDhTdVEeDNIvIFTXhTRmyYGdvavWXhhQFTFBgwJwKajxmMxjLbyGax") }, + { XHDR("rakicttjs", "NTBedFd") }, + { XHDR("ycg", "kZhTrBLMTJaj") }, + { XHDR("jc", "wsYYbOowsnzFQFBSckHJGDrVB") }, + { XHDR("flpakaekxrp", "N") }, + { XHDR("d", "edDqbyAsXDdqJkpepDPcYLTzWPsWXqnifUKkVypzCQPdFdEqoirtZ") }, + { XHDR("jkszxhzqvumgkx", "TaYoJQyUfoUiGxMQN") }, + { XHDR("eys", "jmIiMYIBeScWbzSeVXSHDBWbtcTzhxLzJfYBjwxFf") }, + { XHDR("xkazdjemyidxczeia", "dPvceNSfubyLNlxXObCFZfyfcqFhgTYaZQuHNF") }, + { XHDR("pelvih", "g") }, + { XHDR("xlxb", "CvcirQSoAgAgjScCLUCglpwyzxbshMoVoFhKCoypFkdarATyUyfMSbMbNBhOykwPEGuhCdJONaRJzVO") }, + { XHDR("abkxloefrghzldqoiy", "eVdXOyotjYaNNDfONExaDXVyRoQUejyRyjntovsQOURDlUqgbQwxBPPAHVRFHJtupKRynXiEn") }, + { XHDR("epbwaa", "oVGKvcnhiQMbosuEfEashMEULFVdxUEwfQBIvDvALrhCUdX") }, + { XHDR("lgebxcliwqkuflrg", "rTEHIgIPnzVAXEfgWARhTArwKBkrWRcvdCHUudYhzzBuoBLgSXoKjSYUenXWblsWthZ") }, + { XHDR("koukvyfqchwr", "SDMxnjNgIRfsFcmlRUAHrVDXztOYyzRXkYUmgLBfyoiBhNjgqyUOydEoDTXutarDBps") }, + { XHDR("jimev", "zxScHKdwqlMjfsFTXkl") }, + { XHDR("yfssdbgta", "UaeHTusnEKMZtLASzFCIrCaEuXLrnfBNwKKWar") }, + { XHDR("fqukgoqhkmotvo", "NM") }, + { XHDR("fjy", "kSWsTrPvDDs") }, + { XHDR("vtkpl", "AkyhdgPRfGZmXyqfFk") }, + { XHDR("hqnmkbytmjckmmjm", "PyeaHLCTQOcEEfzyJXh") }, + { XHDR("zlitbjrq", "VvDndsHdYoJcsxJVdYOHEaSyBjInczVSDBz") }, + { XHDR("dcgdmvysihr", "sdfrIRWPtNUmMrTnaFyVvayip") }, + { XHDR("bscaovvvrfwdmutsqv", "uReBjEq") }, + { XHDR("eatohdm", "KiLSziDKMlguiTZzNtDPghCCgzqrqYEqrCxfAecNtOotGeNFfqRtMehKpmaHdowRPfBTwDAFlP") }, + { XHDR("fcnbjqcwihsnlbpg", "gMnBJqXDRrMEaeipZvHhoEsOBlBOFMUSsDBDOurrVVEPYAugd") }, + { XHDR("vdkx", "kmpzvYhEUvsoOzjkdqiasEhcougstzHflhYAVadhOhvTAEjCjdKCtnHHnwKSkSYVZNk") }, + { XHDR("jidzvmiq", "FltKZssApxyudkEBggtIzPHvHHgnkDSxuuTidCTkDoxdYpUgucfYQkwvqGPfiAEYnxpO") }, + { XHDR("jufql", "yWZvQwIkntMoPGvDWxrdMBFAFtTujuRitToOWIRTGnaivbxQUYpVdzNtNCrzICAG") }, + { XHDR("ply", "WprEcCkpthWxZhFlJcEJpHjSoZkXjmAVQOpWaFfidsTGfCeDVbCFHFwWCsWjBESWUqMXkpsCaU") }, + { XHDR("asbcnxkrhxikkltxbr", "hOqLrUDSsWuzjnoPKWULJsVnaLmQCcBudstigXehZIkTXnPrDLdebqNWYFcIzHSXMmycUmS") }, + { XHDR("ygrkjrbst", "JuXOZAHKNfwNbhfleOOvcpUxhuMBG") }, + { XHDR("qkfrnkmdpcjfql", "DMRe") }, + { XHDR("tk", "VIXEUuKKulGbPRFCLSbgmxWLhHuYaNvdsYROlb") }, + { XHDR("qkcnexltwhqjnh", "xFRscDIMGOnmCkbaqhbTkXWZGCuNdXiCexMXpHxiJOMfKqcrixRBcKRZkFdLRJf") }, + { XHDR("gwzfzfhozrsrlnom", "JXwKPCIuzwUrvTonTSotpuQ") }, + { XHDR("ahrc", "rJtNxEsDAjjlwcnytQrqmIeInCKuWQTVyOIOIVDyTgTezeIuWyP") }, + { XHDR("bopcbxovninph", "NJsUmoRfjooiyAwPBVesMSTPuKOOfUoflSjJUayEGeOSGYjhvBTevchQnp") }, + { XHDR("oc", "mALaMmHWObQbasUufsnIZyGMotldaeWUoJoYFy") }, + { XHDR("xgxwxmmcjocz", "ugbBDgUfDAhoYVlOgdDHMlniqjSGmGTW") }, + { XHDR("sgkuokrfgtpawmgsobx", "eDFtlTvYKWapQPmw") }, + { XHDR("gipgwoblotia", "klLUSDYEljqvNYXovXVrGsWxAKXqHfjDDPBnlyCwNAPtZviWLrnWkrRkyneLzcMnY") }, + { XHDR("nunpcbmzzrimo", "tOpDIMqaKKwCtHbLwwfcWChRpwzSioOLvPOrqbLyKLINbSC") }, + { XHDR("kogpwxxmcmcyfeqdvbx", "VFVQBFoYFdja") }, + { XHDR("cvzkyesyxsyve", "KoeKBynY") }, + { XHDR("kivgcvnadtdxndhplvn", "mRwRChiKhLGNRfwmXbjAipyQiWrRrkzWXNMfIhheVKCquLgTdVUeMdxWGpueRKk") }, + { XHDR("wcsxj", "dXGOrIjDnDhCendzWDrPWwTzpAKzn") }, + { XHDR("wexbumgpriphe", "nhlLlWoidKiobZURuJeOTQnIRJuplI") }, + { XHDR("kjjamoswzau", "puZiUUpYQbiztirFvPbjeMfnldJwOsuKYdgBDgJz") }, + { XHDR("apnasxtnbnnqnf", "mwKIdTZHAQagMTRAwqdopEq") }, + { XHDR("xvsiyp", "YoELZaQuQHeNrxpZEgwWwFodKPwAJIpTGeinfnKIPoefZGJXkFNaMe") }, + { XHDR("qvjxrnjqwiccnylqxran", "grCgnsoqCPmfgArZKiByfIiSJrznAwSxTPRkLFZGFDpmsIMjCvMmHAgk") }, + { XHDR("e", "vuRoidTnQyDVnTjKbcuJyekszxidtmBpXxkZZOhLPrMczhgK") }, + { XHDR("snrpjnhgxknpyhjr", "DtsGKdipDuVKhLRZoKmNYCAVjzzLDNaWkEKgtMXLZOycrgUMStiGehvSRhtPWvimHJEINNRf") }, + { XHDR("axqjoofrwmm", "SEGanlxNSNVHCmECNpGctqHHzbsTVHQaPmYSJtdtaWsmEdUTjRgleZyxuZY") }, + { XHDR("rqhpyvuaioxrijqo", "HdO") }, + { XHDR("efrztuzgpruqqf", "cVEQbJNRVCCkKAyKFhbtmfhFdTxsyOfaQcOBXiYQBVKOECXn") }, + { XHDR("lqwpshgkamr", "xnPusCotAZSlVtPCnVOhZaptEewxLqxuBEbfqLeVvmNSWxtTvHwn") }, + { XHDR("ekktgcbnmosq", "FzTpmBplzpPxXsNlUKbZJaERWQcbT") }, + { XHDR("nniyos", "IilgzzpuJfvDFpTYzBebCHBQZHofPHBQSnfJjJVyepsIRceRmxzofmN") }, + { XHDR("yjmkxrmuxzex", "KgeoMmwtjmFnjucygS") }, + { XHDR("xuugfhcsy", "UShlpMQRMygMnamLUYWVcNBrcUhucrEdyaQEtTJO") }, + { XHDR("bzabrq", "ggKdLftlXyosrSkSMLIM") }, + { XHDR("osqaipxbypvnh", "DGrIbRpEKNdaZEliLMqQnobmkNaelbxyoynOB") }, + { XHDR("fadztmeswakqm", "iDkTpIgkX") }, + { XHDR("usicsooxndbfcqasuh", "aqYxpZvsaejTRnxrFMGhXWFiNZAydAOsHRZJXMAjyhJdGolrbTZZDGYznekd") }, + { XHDR("lbsfditolqsornpperp", "YHdVgzNddjoRnrXMTLsFYVnNUIDlfcLYlnKPGgoYCUNnfTIKyZoiaeNMabDq") }, + { XHDR("qghkbmftajhlcw", "MQsCH") }, + { XHDR("gde", "eMLFlDoQDZobXNFGgueDLUDFdBLUgCwOqgcmaQpjBBTmvVIjjkHwfFrlqgeFBQoYAdvlc") }, + { XHDR("zhalyjnrvdftuax", "NzaJTEZrzSepphrcKxzKTaX") }, + { XHDR("ymmdbaqsitjve", "ecHueuuFcWWhyJF") }, + { XHDR("vcrgmmtsavr", "EGINAR") }, + { XHDR("txlwrtzrhye", "lzSPoWTsnuUpADrfcDSOyafaPnx") }, + { XHDR("ocauygllfh", "JgFrXblVNvhFkBCfkVpEjpVDRINDzXasSSGgBnfkMqAWBClliyUYcBgxXFNmPnwCcVafxXrRLfGYUlsG") }, + { XHDR("ajkjvkang", "VxbrVNIOwwFfNgOvLRAHImYThoWJGDYNaICTHwxSlVNotktwOZitfLLJkeMWMkUrGaYbcb") }, + { XHDR("skvi", "pjAxMpOSNjwzxkRwezg") }, + { XHDR("mw", "oTvVFXJuywyuFzOEhaBoZzFVkn") }, + { XHDR("psajjoqygqymitwds", "ueIVUWvAfriyOzebhvfyyZPFnfnSj") }, + { XHDR("vs", "rj") }, + { XHDR("iwaaxwtpwesqsis", "ZzxafFPRpxfJJZPuCZylAitLWxhYOObUMKWmXESHTTTdYPmQoozkJOgroFmzENYWIWjoHOZBwUgm") }, + { XHDR("yoyqpfjmvjl", "XaNMzRZejMCbIthKhVtfRcqaJNvhzubwuzfJTbFKgePurqqSSJObhiclwPuiBQIdjmCYx") }, + { XHDR("qlqaofqz", "akbAGvFZVLwQekKUHnUSVAYFLXvtlRcnDYCUhQOxOSKiZHLctkQNvNJhiqMzjZgENZeE") }, + { XHDR("vtnmjxyewlnspoxlw", "qmpnsNtAbgPuqGvmJIKlAcjcZtkbsDuTmeNcKZKQOjiczXEJfaPYdYPqXhfQH") }, + { XHDR("zzg", "ongkL") }, + { XHDR("xsfohx", "KgbzbbERsmKnKtCchHmjGEhjELNkwzXFOnKLPOgryKrXzIiKT") }, + { XHDR("uuirdxwtxrljaga", "luCEcRgnRjyImvoFUIi") }, + { XHDR("swkt", "VfZylQjursWPYMVgvzqMLauqOoEKjxIYSRPhEzNwBukegIIKMzUQCcaSibJMMPU") }, + { XHDR("ehjffsjwpfoegwqqk", "ATcCAkqzjhlJLHfZZr") }, + { XHDR("aodcuw", "GlLEapOtBmEoPkGBEilybUHoNNHKeCCPfOkJ") }, + { XHDR("zcvdchwpx", "ALRkUdmFaYXXtLZDTaApjdYJWvDnMjKDSWLffCUrkmfOaFUOKvWqNciSRNgCEGEhJDf") }, + { XHDR("rezrjuaykopdbuy", "eRznGvhOyhbNdEupnHZbMIvbHQOvNimjPrBEQGlNYPXPLYXyaoTVALSEDoGMIiMtrstEjpaLXMbn") }, + { XHDR("elh", "HKbnRjlCzeMAnRdEoFgDKiOYujQBtSC") }, + { XHDR("apkwejso", "cWaaIRqdEoHdazGpSkKejjMrkalWUSelPHCiKPvwxlbbsmSdWvvwDXOggjfXSKgYYnnWYmWCIhnTS") }, + { XHDR("aspbgppqdvavzrjxqm", "iOR") }, + { XHDR("thkfeihwkueqh", "vpzRGNvvvVGAoPHjyPgVuhRLlyAZzCLaBnKhqcTEKrqmetsQJFxNcguuViwMezdlPCia") }, + { XHDR("a", "vlsnTcdZiVDfz") }, + { XHDR("vksdakqw", "afGtvstNk") }, + { XHDR("dopsusippjyvu", "hzTKqDdssrbQKDqrBYNB") }, + { XHDR("naddqlvpthdxwdvbh", "dBvbWDlrhNbLQgQl") }, + { XHDR("izxktfdqfnbmc", "TSofIQuYktQcgxUstKomzDRvyAJOaCjyJPQCpTrApQAsxoaKZIxHfvKHvTuMyKFYDJ") }, + { XHDR("gpevqetjtkre", "ugEqZaOS") }, + { XHDR("crflrcttbqwweoqdveu", "poiCESrZvinGllyRWnvjFdZVlBGSMjfPR") }, + { XHDR("sqrqobkgpmrxmyr", "NSkwXbLSkI") }, + { XHDR("wxkcckj", "Le") }, + { XHDR("tmiwjhiyfamtoho", "CYYuKyJaNAq") }, + { XHDR("cvamigtvzzainwetis", "qtZuNqSUSARxercNOchhPrCCFtLNCbrptxRKa") }, + { XHDR("zwiin", "eVwYOyloodE") }, + { XHDR("pijszotnjfmygs", "ZAobDdBTWdZRRPVjiGTcmNIJEhhXIHeVMlXwNIBatXsDUwsj") }, + { XHDR("pomwlfx", "EHmFWMPPuQJObLbrjuDAbvsRrmeAlHaOoYKWInTVRCEfpymcQOTSLInVpGscZCIBXMqtW") }, + { XHDR("kucrctcqwzwkw", "keRYeDvnCFQJgrJaLKEMXvCcoFDQBhVuQvegmFsvSSFcVrNaORUYgkrwNBPzNlGUwgxThM") }, + { XHDR("rawbnrxfqafjyrmyvrev", "hhWsXSEWMCtitJfxhbC") }, + { XHDR("cayuipzgqwiu", "cMbYDAlTdETTGIsoCGKJEeZBZetcYgmGFOxLmlNND") }, + { XHDR("hqnks", "dmUwMwKVhMUTZXwVBISqiRZYrQnQI") }, + { XHDR("ylgruvrnxhyhd", "fpBUslXqIXVFiPTYbDjA") }, + { XHDR("csdccrgglzfuon", "JoVxLQBYYQntmcVzIPNijuqMnlZXwJCpuIFTQzqBewhZ") }, + { XHDR("ppav", "aVimtwxagkibIqtVrsHRThD") }, + { XHDR("abcqdolhwbdxejzk", "JGsjjsVIijNBOucoiwRrRszDYAvJGqCFYHVihjuHREVqyBqhEgsMQaJMpMhKqpTBQIdPQisrBu") }, + { XHDR("hsxkwvogejqfyktnk", "qkJRtMRATnIzEAnWetFgrqZNyDHZyKEvKKCxnnhDaowXWGKZxJskvKSFxNxjrtQqu") }, + { XHDR("qhab", "jSmSemOqgxjVWwTUknSTRQZYALEbmGoQlBDiCVBLQpitzxCIYxhHl") }, + { XHDR("fjchqm", "DnjvccOZnRFauyZrzGDPFYJnMkioRujsvSLIizujpImoJhjrCnEAkMQieyJeHNkHIPgKUpRcmyrWSf") }, + { XHDR("ixquoriicqvdajhga", "OTOWTSuqJOQxPkESTEksWXhHxSHhlLiNAuRLSsCGaKbWQjPaWzehhaAmxymFhLPVZBF") }, + { XHDR("wczswdbg", "YNRnZYyFMXkhbnWxCUBsVjnlMzaxTHhjdIL") }, + { XHDR("bevhmgebqu", "GqoFKsHFuzkflDdTHWlvmCADUsfETkTcfHMvwcezqbkIPtkRZShWMFFgrxlFApnOziYtVfFXuW") }, + { XHDR("logwnuiippimdtbcem", "WDhJujtHQGzIboQLnWIfSfVpgORw") }, + { XHDR("ccjtntujisnvdlog", "rhfEuSQXkMJoLUxDIsgk") }, + { XHDR("bsqavcpxywm", "gMVh") }, + { XHDR("kxjbiozc", "hvCgM") }, + { XHDR("dfycbpx", "RjP") }, + { XHDR("jjxc", "rJiGeUjgpKcxunjpvKZecltSqwELDYOEQCRuHtIYfwajjzgofz") }, + { XHDR("xobsgzknkvtn", "XpegBgpUyVyFgPiLAKbtCHpAqOwOvC") }, + { XHDR("nebkniqbrktvyxax", "hdwkptKTL") }, + { XHDR("mvuhoc", "jeIcmiPjvepKZjgHeGheOAVVYdsMazKgMbEANAhtyNoBQLixCVaxGpdZcQzQy") }, + { XHDR("mfrbzdc", "juupciQpaglqnpYgynWTggGxqFeuvTXNzLGkAVrRvpmPpDAbjbGZhysgmoEcpm") }, + { XHDR("odaramxq", "WqLiAxwT") }, + { XHDR("tzwpmmnvqrvfdswzt", "IweSPGBhYBxkDAVLnSkYotuTOThpilDCZjDUGY") }, + { XHDR("ctbeqim", "OJHvsODcrIbMaJVfhyFyiLSDcZFjvWXTZbFBZncDoZSMfLhXRpdkvDNeRqszGvlF") }, + { XHDR("kh", "JSPxnwLwhPbgidJwVDnvKJHdgCzkxVBQmiHqmRLKiynsbqIpihxDoEnlPLdTQtcXnWNLATuBWI") }, + { XHDR("mshkzxrfolelamiu", "kFrOmQBGCjgCoqTqCIsiFCfmNTZUbVAdOyEgdhRkpeowsRhOuBgVahtnirax") }, + { XHDR("gcg", "rZbcMUexVcDedBjj") }, + { XHDR("wloquwxt", "WfYBqeNdgdEoUlUijvfxJguDfdBKdVMFZsXgclkKdvLMuXygeQsYqIASENlZEAYxpu") }, + { XHDR("lvelcrrysoaxmfiw", "TBg") }, + { XHDR("rgioxwcodzzxt", "ahycqnZoGqSuN") }, + { XHDR("otvjdnd", "WplPxciUrBbaCELmgXBsDAwAteLqnMxnLGfzIDbKJCpSnlSnaOC") }, + { XHDR("brgltjqrsnkcdtm", "LDJiABTMlvqdOIctBIzUIOKvCFDOPRwxnQmqtHDaIHBZBTeKZrmpwbroZWSAVHLQLI") }, + { XHDR("tuj", "wEIpAkwagUIaRKVzDrqyTyhzoHNezEFPqWBQmVwnoKbGrYzZOpEps") }, + { XHDR("rvjnh", "EGlQSyLsrIRahJEmQrgjOTYFGqsbYLgUcIwjrEWhzBmhJfWUtzVvXalmWNssJWSRID") }, + { XHDR("svzezieesodqmwq", "zWebRKVIWoPqOvxijOPtMFNQRp") }, + { XHDR("eikobwppiiqzloic", "wqvBfAIcXHxCYslIseeGSNNWsuAlxYfFlFHRMqfHRAeBOKJQFkVIlrG") }, + { XHDR("mbrslzsxk", "NIOsZhAKusv") }, + { XHDR("bljtrby", "UThOPmItqzZtyJQEpTbmFPmgCy") }, + { XHDR("nb", "XeiSlBpaWDioIXxqTeNVdxxrYUVnGNcSGJnODnkjliBBkBGuimDXXpIGlVeqBef") }, + { XHDR("tcckfcwewhetk", "CTEnItqYFkQvDYTSOJjaqGglfmrzqhKBsRpCcbhfQzuC") }, + { XHDR("xjpmoxrefjqygbnu", "uPGkczSdylrWWyNNXNtrpYqXEcCbYknTLAWXMcrxpPcrvKYgRlJgiJOwQgTPqlvBqtpcGMHFw") }, + { XHDR("zchemswyneih", "GqreIrvuNLopQGABNyshRzCQYislMFmohEtqZaHFyYadYDUJrxrgIOvBzeZpVTIuWWtVVHspexM") }, + { XHDR("rhpdwmxzhxzxduebglim", "OYqsAdjMkslj") }, + { XHDR("eomrsqdyafbgrzjgroa", "RnIbseoxChPFbvKXEOUoPiYOsOwzQGwMabEhmXXQNnXJqhyH") }, + { XHDR("orjpfycfh", "TjVmmQZNTjUeCWjOKUtVXSDMv") }, + { XHDR("lpd", "hXaXXShGaGFFNh") }, + { XHDR("rccmboqy", "qBTqaDSvrKEiItRZyShGzbMTnpabpiYXrlpyczsEDNgVeAqSbkGJlNkvdzmpTkOyQbdfZXWQ") }, + { XHDR("avrly", "eNNmlffuykkMxhnmYwYHZCGdbZOlzoobTwMNqOazaCEmbcQMaMcNsSqcjeEmWk") }, + { XHDR("kv", "OVsKJDELGXxddgoVukQVoQseIJjfzwgJyAAZzYHJmYFMaAUbVudUdFLjddTj") }, + { XHDR("g", "HGABnKDKNPQmlro") }, + { XHDR("mcliw", "bHlcoMLYpgYNJkVSFfIrMNKvUdbqadaJZRRHqBoOHMjmwaweUaknhWCOa") }, + { XHDR("qeszgc", "CKVGXqAyjqL") }, + { XHDR("d", "ZyIPINQtfhPVhSdkbDLMohuDDrqvhVyBAtUNmcMZuWlziSCe") }, + { XHDR("wpsfgsuaar", "fVwnpiixQhyeJMCHJrTcYYcDWw") }, + { XHDR("bmum", "RXkAkxAfogwXeVKgJGaRRRRPBTTezNHisNQZkimzxXaLqxgXdfWCp") }, + { XHDR("qaxplmfgnbboyo", "SFqeBdVyjeyRE") }, + { XHDR("xpjkpngmozynadzuaitg", "UFzusCjGSCXmSUpWjUvWvQeBkgmrbxMCMGVxbLxGrALOdDNKllycmvFumjIDZzcsQCxDXvNic") }, + { XHDR("apwneecxb", "b") }, + { XHDR("r", "NvOEKtHRcHJntYPWmuwsYQOtnoCyFpAtQgrAGxRUpfHtgmoBlSKgtkgsbgI") }, + { XHDR("zeyd", "oSCxwPvgOYLUHNXLGmDobXMMBWIjdOggIYwkJGzcGk") }, + { XHDR("ek", "mVpMiIFtzFidcrBmrgaYLuEsXvtazCXjLgmpqRdgRaXeMBUqsBLbOGBHZWRTXCgSGq") }, + { XHDR("znzl", "eAPaqNBeWeNOxlaqsJyCwbYsenugOFlmqtaJKsKFDbV") }, + { XHDR("xxjdnbnoznl", "znwsGjggpiAleTwOuzrOPLcNFABfSaoivWolOBoAe") }, + { XHDR("dokwusdyzcmqfnptyka", "MNPnvxttxIgxhNTSfXulhyGQJIUTByRQUHGNbZyQc") }, + { XHDR("ndfppvyujmjgdsipxg", "QIQsdUaiDDMQBdtZfICVjnOsFgLfHeeerXlsSljfLvBbHpXcDzNHoHQhzNtwueVYgtBDSHc") }, + { XHDR("jfcxssphpjeptl", "BNssFgrReplDmPURPhHjmCaQbeYYjQvWMgaabyaPiPJOhChIMjLLlilNZIew") }, + { XHDR("mvkfh", "dINbJtakdJPeXaQkRDQkHKBXlxgDVdabAzhZNVIyNRkxeJGJOQoCqCWG") }, + { XHDR("kxzuynarzvhqmav", "rXYpqlOraLtjvQkGGoAfMyONa") }, + { XHDR("gadmvbkisfmy", "tssGGmJYIBZnFvKOVUZzfAZuHCbIioKNPBikrZzTqUUCLqJgGTKJDMJOT") }, + { XHDR("nbtwydj", "HszDiXWTQVXnf") }, + { XHDR("ionuoamkktgfuvsp", "TJSFosVNSXMxVSClyhbNyfqmrBHEGmrOypA") }, + { XHDR("donczttssf", "SgCYMAxloVpveyveaPIuNbINyralmcFgdAiAvCKPwhEWISKGuIautPLYJVDHBczJEssWWeUJwUEzkJAw") }, + { XHDR("kbrwny", "XlwNBKLUJBRQAYhvEfbeQwLCJTlFztUshAusvs") }, + { XHDR("ncyt", "eJzRuflELMwVojuEqViRMOcuyMYpxHHdUlpuqxYguFUGrovmPGbBiuoLAtwJMYd") }, + { XHDR("owmilbywehh", "HnkKCNrSTcZAGytXFBnIYYPgEUyOMHXz") }, + { XHDR("egohevypx", "hxdhGMbzhZULssItoicxuzoJqBUHEEFPdQAGLGHvkMRQqGrEpDNaxa") }, + { XHDR("zskkhmtrazmutqg", "ZEDFCeSFNsBYVlMv") }, + { XHDR("mylafzofjuktjoovchn", "JdYxxmlfrXDhNWxfgfRywMLEibSbnnPcuAcCydyVABmmVxLWsVvCADuRNBMXbfNYIEAKSySQ") }, + { XHDR("ghmlomawprdj", "VfqSN") }, + { XHDR("plljtpcpwxcdxafzgwfa", "dnXXgiNwEvgLnLwxvJ") }, + { XHDR("oit", "BAHlQshgHvPHlUxcgVCvjTjjDYAPaazMIgArzfUIQVMgmlEXKgU") }, + { XHDR("zgbvz", "gFefLTcvZFJGuEdnMNnYjoBSVSEREGlSKesKMdKvsDiETobWwRMurzxZgBckMGyAmpRpsKqMkNfJdeD") }, + { XHDR("dmsypze", "ICbAkxeBPKKWqWkUKVdQYaBXUghVOWgoz") }, + { XHDR("kyxcceyjmgqxtpjf", "mmUBkoiNkFleKEGXtHRoBgEdzpUwfLVVAlWTBleymBuzyWVMXshaHuJBKSppBuBhmPy") }, + { XHDR("lwflafahcaaw", "JsoJZxpBdqWemOxHRoyDKbtUugFKgZLiDdaRoNrjIy") }, + { XHDR("u", "tUftgubJlGfOzefUCMsixpPEyWungl") }, + { XHDR("mjotidnpqchpe", "krZBBxBYdsrVfhe") }, + { XHDR("thoasyuthv", "nqMVnnsdRZsukcvlaBGgeKGnPuRZFAnqvBOTVfOwamvMMnhtGMqYxcXKKixbJyOlyMMLEJyxt") }, + { XHDR("aldyeeyrdbt", "fTIpDaooaXOLPSdaDsFcVXAUywRda") }, + { XHDR("aquvzqbmoudwjhf", "shKzzyTrTyf") }, + { XHDR("kgvcqwsxdkp", "EdyXZDhbpEFTirZezMZFTHu") }, + { XHDR("dh", "fXhmwhwjxaXvbEJPfvbftNqoSlkCwQVmpFcUOryacBhwrpDOPAUmndETZDUQuCutsFfrzTkHXxc") }, + { XHDR("sym", "liMUbtrDDqhWIMMRqEHyPUBzMVTMjGzOwWzoohcudLqAdInVeNqxbSswcAaa") }, + { XHDR("zhlmo", "PhinNktOVwnocZSJSJRrOICAngUodAWIylJDAeLiDdXqvoXcPpqmoNBgHaQVyBv") }, + { XHDR("ndgnzs", "noIexDZAmOabOpvQsfGksrzmJZsDQUYyhZZoFZImwE") }, + { XHDR("loxbjxcskxzubagi", "cgmVVvUuLRzoYKoVvbwxTujPSVZbWdlIgknBDmimaBqkrR") }, + { XHDR("ibxpjwazeox", "MrVVMdTDgElFdfAYjachWRDlcrNLZkJDztAbkruwDGPdRmSBnzZyjxPQCJgJdgb") }, + { XHDR("ohqq", "UJkGXAKcthZzmGcxcFQeULisSfLBsyrpVHvY") }, + { XHDR("acmdmpohkyxcavxssafs", "wRZQlrKgiRq") }, + { XHDR("taoytksygo", "zCPNNpknzePGuURfeoQxUaAKgWx") }, + { XHDR("wsypikqlfrnvukuqnh", "apJzxCXHsEfWtkENWoULMpT") }, + { XHDR("iax", "IuOBDmxZqoaaTSji") }, + { XHDR("fgqglnoqhbdcljgpbgsj", "ryRtFcGyaOgtAQRLPjceWaoFkgfIOllsPFxNnnNWvAkPugjtLtVlpzwMXtfMkollxPejvPhN") }, + { XHDR("tqwkjpfliqxpjlo", "MIobBifm") }, + { XHDR("uzrppanzjxnom", "wdbkgUEQELBRHolHNVKmvikKqlkQuLSokDmYjlmWBxcmXHeIAVLIqyeQElDYMEEFJwXlDpkO") }, + { XHDR("z", "JBFxcnoSNGWqlQI") }, + { XHDR("surjfhaxkgewrwrkow", "OQki") }, + { XHDR("wzd", "fEoHtqNhvVdMjaQrghcSEBeqPvcMQmxivYNaLeAWwBCcuSSPsYUvxBNSAZD") }, + { XHDR("yglkykylmflf", "bqauRNzjFEbPtyoD") }, + { XHDR("wnpasqeiidf", "sSkxXOPqUeUfPRNDaYymo") }, + { XHDR("nvssynndpdddak", "dPlxERdzLQGEhKvXeHrzpSowSZjjsGRkNvuSRGy") }, + { XHDR("pecwohvichyhmjaovv", "tKUMKpuWkdzCuJfEPwOmTRhDhUgTFmeMeNlzhHokFUcxYzzhkvAvkHmJBBoPRgWTT") }, + { XHDR("ck", "Q") }, + { XHDR("ioi", "YRHUINeyNefAbQGVcPjMMZIvtmvHZMasPtCWEHElxtTbEfnnoRVJmjsQhkpM") }, + { XHDR("fbetuuqnshhiusmm", "etSJrKqtAhbvxBMJKCBKUnLWqIRUqTtC") }, + { XHDR("aqalghfqdreytf", "VaDXletFaJitDPXIefqj") }, + { XHDR("zqkqoikgbmlnqtm", "dFUumMMzwoLXHBIMWAXGsHAGkSoIOwCdBZVMgenNgiKlqTUwsqOiRlR") }, + { XHDR("ggpmut", "UmOHdOrjwwTciFHTIddYbkCxfaX") }, + { XHDR("veyyctvpu", "PvDWvAWuiPBDihELtrhkpal") }, + { XHDR("lmtezswejhudlgk", "kTJHAZIkCxmnlEpqKijZvTabLBzVsdKHNjqMoWTzmWcyBFBAwoFJQZHUpXdBlidJH") }, + { XHDR("xubhyonxqlpqx", "vvDgRQRVbIGQDQujBUSFKSsSWqWYnjfIlj") }, + { XHDR("hntuvautesljqwm", "uWERARspAdzBKFcOllZUVuNEsyFgtYIEhjfsDjXslBjTkgKAxIDlVymMPVmODDWKeouQU") }, + { XHDR("zr", "DQlGasKVPAENpzKhOIfiWVuPHQsGAOjLqgSrxHIptioivqnBwXoDyDAHaKrUUYsZPosskFa") }, + { XHDR("wacqmxfwertailuivbhl", "XKIlVWCNhwsLvJMIvwnZvDhXXbQJetHJDVGpwYP") }, + { XHDR("jbbsggsviuvt", "HloJhvscuCGWOLjcSThKBIecuhpdjfzxtdDUknVGDpsPnK") }, + { XHDR("tdrbgrgwml", "X") }, + { XHDR("p", "osqCJacRtVWvZVvjICBBMuEGpPkaGtFMAtcTCpceBPmIrQMuVjUFxMadjeGkBpXKzlgsJBDvoRKILvz") }, + { XHDR("ixgwvd", "zgN") }, + { XHDR("ashtmjoxgdjp", "ZGQUTioWThLNKzdCKVxMKYEvwZWZOeREhttzrcLOe") }, + { XHDR("rvng", "kRTHfNImpIaNRekGmgbvFLeyUXUGpLDrbIxWfzsymhcKHhyyMoz") }, + { XHDR("ljaxvrweps", "cpfRGCeygayxVYeAAbcCKcTvcIcnJAQnywBfRo") }, + { XHDR("mlzamiacpeunrwb", "OO") }, + { XHDR("vamnigoklma", "WGTFkZHzh") }, + { XHDR("bsjakluxljnimju", "BJVSdPgyLKOVebwqmTSVuKYZWjXoHOLShaoIDHWfKahmVscwZnFDLfraKbtFhvKRK") }, + { XHDR("mgqnnwgzzlaixguqe", "FzjaJbhxIzQtiEc") }, + { XHDR("mneerexgkqvtx", "ZrQNh") }, + { XHDR("sxcwlcyjzh", "BPAKmmfVQcpSUHgzqmxZHTDFhujGfdqJdUiBybfFOfD") }, + { XHDR("ip", "nQQyGPPKYUIz") }, + { XHDR("sxf", "kACSfpHMkhjxVaKm") }, + { XHDR("iumylfqwoocrvxizkq", "YgFsKeEBPtIXRQUDYcAXoOWKyjCfIeekklOTndbXiceUPqRlhtmdLhGCsegDcpsR") }, + { XHDR("itqfqwdspsy", "TqlbvmUPCDeRSQxjiMgzEoZqldmnMGQaPCGLopkaxDWbPvQuSJCAQvsQzxVMixGUHHdEQAx") }, + { XHDR("szplvxfnzgxbnmzk", "tttsdmdafPqdsthUlVaxYCsflWeLEZLQyyZKlRblJAFk") }, + { XHDR("onloawiwrrkgy", "MvsdchUKeJslulVImmkGNcttLcgaVJXsLWfrRGw") }, + { XHDR("deunldmomix", "BiDeqeYYTemoIgWElgGkcvEetvtyGzTVPKuT") }, + { XHDR("yotyvuinjeyu", "qkjlBRomEkqyFEeKhRgtxvSIcVTLXpMv") }, + { XHDR("alirojlobbo", "CObnFXciyssUnDaXUjypwNHytrZaiuaxTEfEARu") }, + { XHDR("uitwsbgiixsaozzmf", "PUDPYsIJvGjXskhSxFYCsoAFtHHKA") }, + { XHDR("vmaydixa", "FODAVoBxiHCFRgrpQnMBCnJwbkidzLkERrhPYlsivvtJRFwUnmiEchhQVqniNciyhxCo") }, + { XHDR("tvfnjfdxaamw", "HROEUwFesvytuPCjbUoGRdCXuFatvf") }, + { XHDR("cbztq", "LhwFgtErCkIEuImzyQvyCleGoTvyFWVUwMrPUDnigMnmPT") }, + { XHDR("foaqdmceh", "VYXVJJdnQFPHGORjJuBYpkcENEXNeNamBvKKZouPyLDKJ") }, + { XHDR("ggjdnvmzeqlydwvnpj", "TmdQxUaCalgPGWYFYomkTpZEvmuxiThcPOAFQESvLwhtUfPquloBWp") }, + { XHDR("i", "tRsFhCItFtzDcvpAcWVsfCsuAAfevmzAsHwagxSWQJfTzsdNbqHIhAvWAAvT") }, + { XHDR("npepzlwsqrscrl", "MPTvBRGyDcyDynpdqQvEaqMptgC") }, + { XHDR("glbcsicuvog", "vgREVdAVddJJIKBPTJoQVjPdbTxzHonXTYvjgzJLHnw") }, + { XHDR("datmtvexebnthcnfu", "PtxBkfnZFlZHsxwaLxkiWFlD") }, + { XHDR("iraqrmrjbkrycuos", "EHZrCaimTuiJqLKWWBeWOjPEMkKSlegLH") }, + { XHDR("bdizqremim", "RvUsNTKkfcoGqSEzkmDmqLlDyEDoDPyKHwVNtVGqyRyfkD") }, + { XHDR("rfytnyfqtej", "MMrLlhPpg") }, + { XHDR("boykxrhnrnsxrenn", "xXYIbSO") }, + { XHDR("ezmgcuurpuouoqtnpl", "BwoHcOBrsYJprJqtLEetcPgeuTKCS") }, + { XHDR("saxowaoofq", "oGcZEVDRkdgwFlLKIQByYahrFcZvIzhuPZdUiVToosKUTjEnDbAJLvTndeGZVyAgpTtsxd") }, + { XHDR("uekuzy", "jqJfGuRRPKhfwwZSYkbVCfZfBLXmQbZs") }, + { XHDR("hgwrlgkqn", "mjBmZLqyrVUNDQCRPWsh") }, + { XHDR("kp", "Plmi") }, + { XHDR("cxequcxuv", "sSEBJAeDhLWDeRHsRtFhjPPjysCmYmesOQluGxJCztadNa") }, + { XHDR("urqbyvsvvqj", "ldtIZKjxAWuOXueLSPjTthrhBWSlf") }, + { XHDR("r", "EYIJfwWbWxbmOpOBnMilw") }, + { XHDR("rgjvcuxrfgyjcuzc", "XOjXckDXcxNkWkwPXjYQnsMyvXSiojFiXFkmnxiPrBeBOllBLGQLovLyULOvAmYFeqzQHIvwRhe") }, + { XHDR("xdyaxcnnzmwbhsnhnchl", "zRsGGjwxKafgUXlXOOlWtijmqVxhcUsHqJUaSwBiploCuUaZWGsSfLdoxRBeuQnyQgXisbwThuqDCd") }, + { XHDR("qorvropxydvovbwmjk", "wNMVVL") }, + { XHDR("ejzdibygskln", "CsOMiLRRqtzDaZiKeHKuHOxCVPVsOGBFPmLbEyjJUGylqBuqQxIyuevWtOhnCOWvmZadYaRKI") }, + { XHDR("lypswudzwjlz", "qAbxOCNMazNOaOcflXbOBFbPMnuzuweyOSIQQQgplYGOPveYlzgXJMItX") }, + { XHDR("omqiy", "ETVHVHNNjvZibNIgLucPK") }, + { XHDR("wsyvabtr", "KTiCIACaCnGWqyfmxksElPPWeUeSVqjdEwT") }, + { XHDR("ngfkwvqskirvulahrpq", "hWEasKzvqhyvh") }, + { XHDR("twaox", "JywlUbVxxHmwmzOhbDt") }, + { XHDR("mtskqmrbggsdgpv", "OkCQASogOiHZKVWTJhUyexqvXESGeJvOmubglsRXKBDmenwyTkTVRdcLqC") }, + { XHDR("ohlofqquulnfwmiwqvvt", "W") }, + { XHDR("zctuuhckwkquywuey", "KedPREwIDezCzMQMtRdUPrLRASwImSktjiRKFlokCywnOBynfywWudNuzXXItPwIWJk") }, + { XHDR("vkbzhrhvikdnrsykpug", "XkWrcHKJEYVFcAlaOUvJMitzDbcLkqMovYzPEFnVfQqYkLSkgbCJGUZdaZHJhSSlJecG") }, + { XHDR("ilfjycspwsusejx", "KFPmkNNyeIbQcjaiQEjAfVPpbCvYPygOhHFCyVadVRF") }, + { XHDR("rtpltrvvgxnbjhrp", "zNnYUbNgkkoJFBhcGRzCEWmKwiBXbWcexEYpA") }, + { XHDR("zgoi", "luoBTBeFzbHWaUepsBHbtTdkCeRlvvyhfJxTgLohkeTDYpFuGEJ") }, + { XHDR("nfizta", "L") }, + { XHDR("tlqxkehss", "GdqVgvsRhcaaUtmUcdVxjNXISsTFFargDhuJsCbJfsAusqRSbwuEU") }, + { XHDR("nh", "uLrjsaZBRvugl") }, + { XHDR("hxfrqyksjhxjfxsilh", "XqFJhvctsNLCKyhIbRFrovsEgkllVLhHVDLcbzBNFlcjhlkcWgiUeuOGStyZHCSMRftgVn") }, + { XHDR("dzbcfgutlnocywtxybi", "yJtYJZdDJIftYmnEJcLWjIuKBnaHETNnEpIWgZMGyMVUSZudVlWkkcn") }, + { XHDR("ft", "mlIJypHwYXTXdvRtOQqZnnKvUnmfjfJMpDyxUPpdeunswrR") }, + { XHDR("pladjtxaqkqmnukngjjc", "rIJneraSWyipWBRecMzlZTLLsnQZAvsUYyFZsTWIsreZMayPUHaWsgwnhbmvbTIsXOoZqgTzSy") }, + { XHDR("jpcvssndafmtgam", "GaWaNYmsswJdIhyxqrDTGCcoPHWPWcRKGN") }, + { XHDR("sdvmrqpoezbeorl", "dUfHEaJWlCDNwQqokGBqKB") }, + { XHDR("qjnaiwyfzhvbsueqx", "TarCkQhpPkXgPFXMBmfSSAQvXqIqEiqlDoRKXEqIgaaKxTJcAFRoh") }, + { XHDR("vjudutxewqxtjgeb", "LmPSjmCanGxn") }, + { XHDR("p", "sYlJKlOOoyDyTcApHkAruOMLBNUbWxKTYwyXIzymASdCHiDdHOoM") }, + { XHDR("kzvboh", "IfRJcZAZrZtACLBetCMaLZhefCiggSpgxLQDdjF") }, + { XHDR("zdvphlwqt", "GiQVHmoySXzkKBqGdNypPHQCDVxvObGgFsudbcdZpMggmuiAIACwOxLSPTIhhAgvrpEatQlMsNDx") }, + { XHDR("hlahkochyis", "hKfxiibMpGkNSLPt") }, + { XHDR("uzyewgl", "WMjparEEBKMlvESoDKTHiZReUUacmgIcNhuIJNZooby") }, + { XHDR("zaavvhtqbaesbz", "SspEcqrnkfaRHlyXTOsdwAllflrKNOEkbTlxRQwPUpWbVHeDClQYohPfx") }, + { XHDR("bqogceyxqaym", "GSkTWTlTwPIsnULiFHwMjMVthiQByEzIrlCrmZkVKrmzUpVarqAglpiXMCEoKmEBojnSUQntCO") }, + { XHDR("hpdmilh", "ScScAYjotJfhwScAKdRZrHlyLObtjhqHcjyUkDDlafyUefoqWYxhDjLGHiBwkXlOXNS") }, + { XHDR("jzqnbzjgfyzhhafzpm", "EiQfHsinnvYKOuvkhKKPOvyHRHleRrHySJTVOAk") }, + { XHDR("lfklcmykbkgqrgfzplwv", "kxUuQWiDuhkclcguhLzAEJPgIqOtPBFMz") }, + { XHDR("fxpfxmvdtnsangnrqqq", "qVlNk") }, + { XHDR("jeziwtfukkkvkn", "cUVPbBTcoFONLilREpUXoxheHUtcsQCvUSZRqRiwGICmJrad") }, + { XHDR("wlsq", "ucWFAtAJhXKBbdzwtvSHPoiUYHqzPMNrwqEzmYoUccKVLLJsYixXUEGDDHjPBe") }, + { XHDR("frwduari", "JZjJWkeUsIagKYSukZfxamviLKYJLwYZgIHPpVOankbCPyfxnvnTUdWnaIhifNKmJBhiKpVPflYLKGp") }, + { XHDR("cpqyhjvfsssclccraqq", "BUzdcAkMUftzzzPOeyxmkQQnhgktxgx") }, + { XHDR("xqxfy", "VzNvGNYlDHFvSQphUOWtaXksjXdjPSQzdVFPihHYZtZGdnxs") }, + { XHDR("kk", "OPdRtNWeKkhDzenxvRVcbG") }, + { XHDR("urrlvilgmesriqx", "oNFPX") }, + { XHDR("zxhdiilabiakey", "PpLGIiCoXmoDzVPcTrVIJHszGAObuvEX") }, + { XHDR("zyvwnzoeuwcacsaimibe", "TRAeuJUOecCHQRHpiKDsRlwHbJMZZJmmEuxQoYcEb") }, + { XHDR("knc", "aBMIONmNRbJrtNBpEucvvmnyeMzqdbtdAMjwTlfqekieSNKpjOj") }, + { XHDR("rffgiin", "kUWK") }, + { XHDR("kvlhusy", "BaoRWFukINob") }, + { XHDR("hy", "mYcQc") }, + { XHDR("rdlitlqeem", "cyDIZUJXCBHJuaqqorIeJsxJKyiJIVtfNtaCATsi") }, + { XHDR("sydyryjhovvqtyrmol", "cL") }, + { XHDR("yqoasodyfbfsp", "BPmxIBXQHGuKiHrNvGGlTh") }, + { XHDR("yooehm", "WoVEFvSCwmYQYaZktHuKtQ") }, + { XHDR("hfmeh", "JubUWYF") }, + { XHDR("cgxfospfszzfmrfuxo", "AFssqlRQlBxmUWvLkJbreKcUnVsOhcTifPsvKPnPpfCgtnkVLOcUPWunoPrS") }, + { XHDR("auxceo", "uPmxJMmbfCgvfn") }, + { XHDR("brezqxnqvoe", "xOSxzAdxHNsfZyotue") }, + { XHDR("dkyayccmewdcedl", "OANxiijgpyGBjicHYtsrLQuuTWiRKadHADPviIEzccArmWzcHwrvPhizWhxqAjPWzSMuq") }, + { XHDR("ylusmdyvqtf", "iEOaJMYGpPD") }, + { XHDR("bfxwbzxsocpaug", "ZDptHaAFAXilolEhWVzWBYUfgQnTexTZINvyBKcFvR") }, + { XHDR("lc", "XAAarpDfeiDYabXAtrFXZdYIjacYVE") }, + { XHDR("hmckmtiyfsayygqdmpx", "sSRqlKtiSyX") }, + { XHDR("dpuxhfofjdhkcofz", "TQiwQKlNIJGCpJiaChDptOpLlCDDMAUFxpORLtLUDvclDLWiiGWRdrtecYV") }, + { XHDR("abmfimojotdkyha", "WepeLTlAcpCqmFbWjUpdJqyNWbKnnxjLcKmspaH") }, + { XHDR("et", "LYYrRIYRQkDURWlraGGgJaQoxQMTdFRbFfcpZvoIOUTXmb") }, + { XHDR("hzdqhrekcvuptrgec", "DsboVxDRJxfutYFQbVRIefqBjUWtNfWLwSAWAvXhDsVy") }, + { XHDR("wfbrahug", "ysfXGOAP") }, + { XHDR("iaxdvxfxjwzmzoeduwx", "QfsNXJugsPHEQJIRWbCwVyIhxzSBsQNvTXnVlwJjZCatoCkTs") }, + { XHDR("hkwtocawolmi", "CCJAoInvGM") }, + { XHDR("zbyzznvcscsrew", "LIlfuyZRUZOiInBnACQvVbYgRbE") }, + { XHDR("uzzfaahmovmjxjmnjlou", "cPOfYhFymRPKOMKcCyJAJQCYeSkjGDSWEEJc") }, + { XHDR("ibaarh", "WwcUCGNYixFTSdyTjUGxEZHYLTITyKkxnhXomJKarMsDsDdHTnWbCOlPnimoxGVWLudJS") }, + { XHDR("spahhiniejbboomm", "cVAUGuoJPppeuIGmackkbTfLwLAZIdjxOkDBl") }, + { XHDR("rqteo", "afiqBopREPrpFudLJYeG") }, + { XHDR("lgzelvp", "DLKjHFeorSsYTG") }, + { XHDR("xplzullqkurxsijzuwi", "tQHXnFJplNImjyGeoJWBoKn") }, + { XHDR("vranopme", "XcoQZCFVRNunbcaunTjHvGcszkjbHUaMnDoQOiTHt") }, + { XHDR("lihdwaduphctwztvq", "gRbswhXSNnIoSvPVqskkuCuwgYnwezUtZsTOAzT") }, + { XHDR("gnempsavdrjokfimaa", "mGWbrGXYyCTpVtEMyuKtINSJItchrXwoeuHpDKxarvsLXJpl") }, + { XHDR("mgovzjlafwzgfjb", "oJgaDgBIjkalGtzqbpCzmqJCcvggTRPhgxYOFptnZPcHt") }, + { XHDR("kggtcjnnncy", "pk") }, + { XHDR("sfblzjvzxrw", "EKtRzd") }, + { XHDR("vxwfglhzxpoxvsz", "veNWZaFsfMCLKQqxFPEFnIOFahQWEFvqBwoYLdMOcJOkFcEFZXFhATx") }, + { XHDR("yvwrtybcprtoubikqt", "UMweEzsUqFfatVZwCCehGsnlKxvtsNqzVF") }, + { XHDR("xwlquepnwaxaib", "tHbRfWSSSZTAUilhBQuwOpOViSiheZCbFLZIdAWBTnreMjzWmusKAAJ") }, + { XHDR("viakwvrldxtzxp", "sKClryhAYSjImpQwbTLsEHXElTBytuTpc") }, + { XHDR("gqeusve", "tETieMDTjnWYmfilZLbCHPVBnsKlglOLHfeFpNimrg") }, + { XHDR("tomklautfmwl", "VXKfikrPjCMTJgHLItLjQLZZWNbSHpWWmImxEuSoyrEHbCRaA") }, + { XHDR("jiuno", "FFqy") }, + { XHDR("aedmxhbkvxws", "dhdJgikyvCjYGOKdZV") }, + { XHDR("wdgnkgmvqxgidozu", "iIslXwBBRpGefQhWOYWlZrusVpkUSdXlrPOHnrkkJhZrHcFhL") }, + { XHDR("kvkdb", "ynF") }, + { XHDR("kca", "mOKFUHOqeOLoQGwIZReQVhChhfhozRTxTczaaqsGtaudLyeUQwCDoPSkONpjQBJSXyMwjeokbAuNnRd") }, + { XHDR("efmldxx", "cPTWlxtdSKTpyMxOyKzgGiJjcYLEObNampWYXKKrPlYkOwJBNybcNfwSWaSXqEr") }, + { XHDR("ndilrcqbsuymjt", "nBwytBOGGyeWOuCtxtCUSdht") }, + { XHDR("rqrxovq", "KQVtPaytrnVjkvWbqDVdZ") }, + { XHDR("b", "jiooRWpGwZHKugvvFzcgjaNAIHIDCfNIjPCbONyySKHQOzVyVoTSAYe") }, + { XHDR("nhkbfngid", "BLVEaFgKxjDKEMKXlbHbaTxoGZpppwAMYNhdrWhtGHeAHUAQLnIfddsZBAHHhPm") }, + { XHDR("orizefclivwn", "BzWZJOjNWsWahMQFwm") }, + { XHDR("lruny", "WvUTBcqqjPFRzfdUBttXjEaSk") }, + { XHDR("oa", "S") }, + { XHDR("jfzslutbeegzebtgrq", "lAdmHLHRSNfiKocrljOnoARvR") }, + { XHDR("tbktjavrzfyjcxkriw", "PWOqTAxNteZNQWvnsWipEQcWrNqWlitilQvtWmXMJVxfqqvJXvFutSEheoZBY") }, + { XHDR("deajfvvapnack", "akmiQtjKDCkktelzFlpdixGNCkmgfuTSZqGtFvX") }, + { XHDR("uegdsxwmcv", "SjdQvosIgAWLcIffEbTqmyScnpAFeMFteuIhhfbDMakKiUDkhokXOvgdiFjBEswqVKGc") }, + { XHDR("fwkkudc", "fqEScKpxwMBaBEhZxluEGCJQkRPHCDZFRvUwEvvVQIQnZM") }, + { XHDR("wtbbwvnegr", "YZPFpjfqyKcxnZhavPhZoGQhVsaKzSapORtWoBrGXkVuhcymqnUOFEuYXzxLmNOJjGINVAZYypYiSx") }, + { XHDR("dzzltklfuhwgnk", "HIVHbYiy") }, + { XHDR("wmgxvwtybdimysft", "TPhTYhRwazQNOnLxVOKGvrGbpUYBUHOhJqhpBZMklqaNdXIiDJSka") }, + { XHDR("gsdhpnbrfxuqzwwmtcy", "wcjlEqcTmRArhLwJFjyOmceyCckDsGyYK") }, + { XHDR("vwifsrpkv", "DxxTYLRdXfAsmWTohIsxBRWpQQkSjYHQ") }, + { XHDR("psqyiluyrcsmsuyc", "GMSUPwhEJnDtkxKoJntVrHSzhorfKpZFYgxzZsGDBKGp") }, + { XHDR("vynox", "QAziSoUNdnDVXChjRTmLwhXglNGyavSTRHUfftREwJlezSbKiZ") }, + { XHDR("tpbzewyj", "HjAfPNZQilZlkPeUGYMfdTsprYcxkZhsgzjQBtC") }, + { XHDR("thpdtvqxqknitoesynaf", "bRwIzUKtUkhniUhLRZWGJadbVKSLyzEYErnLdntyaEFlDyZzNwdKWtAKwVHogEAYmuvfh") }, + { XHDR("tawhdkexhnlrjwcjai", "HbtrlxrdiZzbGFJpwpBr") }, + { XHDR("gngwafebm", "WgRjacujMLAJIireJjmYgsDSOAiOkvANEHsDsSGdYGnmQACeTcwDJ") }, + { XHDR("yrlosrqaengdmtgb", "XpWPVgUcvRUWcwbQ") }, + { XHDR("vlsdoplktcfqpdm", "mwRxsrKclJnoRHFlYnUUrIFXObAQjnBMUpqmkU") }, + { XHDR("nkawveswhl", "zexRJDIlhBrBXTOTVkwuGnNxfVckzSPtwhSYLwoRrUoRQEqTGGFVvWupmagPLHoshzdXAyFAvin") }, + { XHDR("cstq", "nfPXNnDTmdchrgijznycCipKHjtqi") }, + { XHDR("zpjmdgn", "GBrAjJVZTY") }, + { XHDR("dvjn", "YzmwnfT") }, + { XHDR("seykyucwhganhga", "vCQNvioVCaoryCdQcdOsCMdUPIPssNjvtvggomKMY") }, + { XHDR("ipycxzbpnogqor", "KqsQZxNamAgqHFrXvjLWTwkseehVuxLJwbuxhnjaVgtQFVIaiMxHbDghUkzUiRnjGzmKdLCHlEVuoAX") }, + { XHDR("kkjzhsarpjlzav", "XTCOSKwqMbPhkosBUPdwVnDgApTadZBKzRCalPvxPZodx") }, + { XHDR("pbdsicjaay", "GrpKAoWDVPOmqPieOFyzPHilqTkUBBOMhcqLyFUKlj") }, + { XHDR("juatydksgmqgtfrduzwk", "FWRPMZJSfhCMCUR") }, + { XHDR("gfhqtniixjeioni", "lMWfMvlOcGCkySlJrmlO") }, + { XHDR("hifbvkwod", "VkTUmTsKDOwxApEJKtGJKNENsGLU") }, + { XHDR("fgmxksywu", "hUkKuUfHncTfINpKVaVeVreHgedEhsMbPqnFvwdkfLgalfdDskLiyZunPiixrGFeKAHibgV") }, + { XHDR("woq", "jwJMmJXqLQlwklvSYHsphoACC") }, + { XHDR("t", "HJOKNZWSZmpcqD") }, + { XHDR("fnxntbt", "AiJbkKNEGPvDmVEykrOGiaaZVXraRtKqbcZTxiVrin") }, + { XHDR("jrsgbjzxzhw", "rogbRnarTJTDIkpttiRoRpfxqUdVfcRUXsFlxpeilWX") }, + { XHDR("zqbeztptsjzcmi", "SeFidDGujhnoDVGwnOV") }, + { XHDR("cavhmirgzahqco", "XcjNHYOkZhCaLCjkQClGlwjDheiALrTBEIkPlfNbbC") }, + { XHDR("flremzfumwinjyotckf", "gwNYcYIgvLOKmiwNnSPol") }, + { XHDR("yavfdklepgqzuunuvb", "tjBTxjqGKyjADcMyVbqlNnMKCATmVz") }, + { XHDR("zdnfrqgkvbyqbrhiya", "tsaaGaZTwPyruIbSJImHFrguQKzRBaLrycLgGZPGbdWTRbuXDnaTJUyu") }, + { XHDR("fwlsmeqjxrvkg", "hfqLUZgJhdFEEkZkdsfiKDKXzHMEXyStlASldVeEHAZYXuESJKTcXxaEfdupPYl") }, + { XHDR("sjdqdaxpobsgif", "SbmnPKwwGRmbfKyZHrrvOULbemCZEmrWWrhIrWkqZnVHOHzJHThmxXDnJVPvQlOZVGqhnFTMuasfVO") }, + { XHDR("eul", "AFKMyCyfMZGzFefYGRZaBzlEtUQsvmIFoeaeLVxAeAmACmXIxBryWAlUCwvFOtVesmJDM") }, + { XHDR("zoltsnnibc", "qryySHtsdWqdYLAtZophhUuXzNkqcUBdvPDhiRGyhkLoJsvwwswyAlmKTfKhxMlFQkOXgMysVC") }, + { XHDR("ggnixujktktgfayorc", "zQuHCSdaQUZYLLurcz") }, + { XHDR("xpiln", "OLrkcwjJNHqeQiIFrTDtzC") }, + { XHDR("iciqxrdbrkqyqmpuyweo", "DpRTweWFhPfnZgfmTIoXayyjAzhxtJKgnM") }, + { XHDR("edcud", "EmOeGhhzBpCVdaLJEkIWOQQQrCulOYKssfYAISigcuuOkzlhOdneZTdtHLXrpeuzstNgOGp") }, + { XHDR("fsiylwsjegtkjvnu", "ctbMkpqXcpKdsOQHyFToNWvGbGYDZCcg") }, + { XHDR("xye", "AChgDRTlPmYBcaJCQxpU") }, + { XHDR("yfkmzjh", "GzXLLAXmkpbpoDwDiOPFzlCjPwB") }, + { XHDR("ju", "LEhoQDmUFSDHwQBGeNBgSLbUsOWqjtOqKCdMETSHSdoVWuLFBDofUuCanQVgBXVpHstsFSQSCnHCZ") }, + { XHDR("wiourltnvm", "tzoXFEyGUdJnPSwrouTpTVKGqVuazAcLxlAlFMgLTPxZxljPTO") }, + { XHDR("frlym", "leweCBKvTvHsPZsBOdFDKbJCmjWSimArFVWgvnYFkXKcR") }, + { XHDR("fzztiwhgdmnljruaock", "rPFxxiTYJZTMgyJldXCJttFiYBweFbJmbADpvSz") }, + { XHDR("bvqprazahmszcfcc", "HeLsPFsPqccJOMPLzkFmDgERlvJwt") }, + { XHDR("tmwpokzatwkcvk", "LkQncQVvnvtdSWnNHLgCSqCEldF") }, + { XHDR("rkbvluvercu", "rfro") }, + { XHDR("irib", "ZKQjssDoniKgKWhsVYWCstEcSKXHEbQkaWapmHVXGZbXUvtongmyirHNedXfkBrxoDAJcaRODgWEwG") }, + { XHDR("nmrwxhgp", "cYrgaCpNwyYphPUqtmlGYPxHbljlahRAEcSvmNlBXhwVVEkIpQYXy") }, + { XHDR("rbgphrgpjxkaat", "dzrisBGLyiSEmANuydRamhuyuZoFlGwdILKfvmZimksTxZz") }, + { XHDR("dpgsalwvpvn", "AMhZnWPhVQOEtuphrvpeQJhVDhkVEtuMeRGrOHVwpEkkhjPOVwDzbAhAdFXuRCdDI") }, + { XHDR("aaulyd", "FdiofftiuQtxuPKLonxgJjeeojEUXwOjxixWxNMxtDvHLzNaCBFpFGmWSlbMnDyTN") }, + { XHDR("fcdvytujqxyvlp", "xuTyKmkzsacNLXJOGuvTEwzrLYOIFWIsvnLlfaVPxckHaHZZMe") }, + { XHDR("bskeocn", "TXdSxOYJUbHMJOvSAtKGufSEEdkWaxYRphJdabIuJHqyHvDoOIRlZaYxazOpCjnoXBuEBQ") }, + { XHDR("iwydmjdg", "FwdsdfFOfDgxDPiAHkFuKJuXwdAAr") }, + { XHDR("qfr", "hcArOaQsVHvvRZSMRLkdWPneWrKqJBaRSjXtbhBAtpZkuPBOpOmFIiqfLTErnyHNagaMUzbxbaxOLVfS") }, + { XHDR("ftgxs", "TpjogjSqjumlApudZPePzSwJhKtMxWZpQUIQqOtfXmNqGRPpuJWSiNVnvRDgrRRExgBLjLgYOKuWPIO") }, + { XHDR("gbvbjbeqmkhrlqkqnj", "USAhpQcyMiIPmYeIQUTBpUXiyGpFzKkkVqvqPRGFhpVkYhHtRuRuwBikPtP") }, + { XHDR("s", "XhDEtALACZmhGhxhtfORcssiXjcBsDLkWROHvcIbursjnSISwaeUgHaHDdaLxOlTQ") }, + { XHDR("fxovfsnwmhuzsb", "haRzVGGDiyjwhyjjuPIIKCkAvcprNWqZzSNBHLEQrKXiXxFGGEjoaeaCXYVUsYABj") }, + { XHDR("hecnkxw", "cOenDJgWITMOvHYJYzSnK") }, + { XHDR("uksfuphjppy", "AmOs") }, + { XHDR("rdwbzmbt", "KqGAunZmTrQmkQlKqynQrtCKzPmyhaNNjujJexhLexUsKuDcZbdhAWjSIbiiIFGxdmzSyQIf") }, + { XHDR("ljpoecogstfqxbvrjru", "RGkQPoaTSgbyvokgoWsubBTGZlrUFeWBwmjLPbPxrWQIJNfhfhlmSPcbCSsnH") }, + { XHDR("qk", "oboBcuwUcoNPhULCuBwMmWfeHDGNgyvccdxIspfmNALtLonZG") }, + { XHDR("dveqwyzxqkspcrlru", "BeaKXNUoMcVlamiwkqPZljYlEtFcIeBv") }, + { XHDR("ljgcgtb", "OyzQtkxotigpJeAkWKvBQhipxUxlEP") }, + { XHDR("xxsujryhntuzxpnvxig", "TZuiopWhaXuQisJwQgTGvCpquBWdvLTdptJsPnSHomh") }, + { XHDR("xgkabri", "MaDOmJNWdWhMSNGFmZOZMS") }, + { XHDR("zjqozghllcsngcdlsiu", "ixBmrhlMIAktUtxwXMIkSKsJyObkWnKUeGvkfhGXgAnyKljVWeaoCBOYXsCoghVC") }, + { XHDR("vqdbjxetr", "VxHjvwldnSbCnduyeKQIL") }, + { XHDR("zuhz", "CqskjkzGtIDnjtGFFFOjIphWyhoIqFjZQdrVCFcZte") }, + { XHDR("cawbsfeex", "TtzOQmlSaXkyOkvRIeDEfCoaQunAjfnPLsR") }, + { XHDR("ytaaqpjorrnebjyvj", "bLLQEuxOBXCVLBnySfpAHNlmLmnFotykxxjlMItsuKGPTtgRbuzCoWcLbchxFIOVTGwkoLyrrjxWzXDT") }, + { XHDR("mhbnuppy", "MTokzKOUdFXyqosoCYvwrqmXgQkyyeFbZAa") }, + { XHDR("nvlygz", "IchCCmWhdhwffyAZZRYGmjaKUOTakCjmKQveLklEvxoUobuAEbAxDPBnrDkjfYifwGE") }, + { XHDR("qifzqyrjxkvymmfj", "axLpBfNcDZHEcQYUodmPPXgBmkPdUy") }, + { XHDR("uudmgfm", "UvgkWBLSVqJRnutQdxNCZZvPpxktjxGYwPSoqtixTOhSYZtGdRv") }, + { XHDR("j", "PjCoANVSgHafRdswCTdTvAYZAfnQmotUrbudjzzaUHFDmYQxUYSnhaGTlCnNGyUpFGRQoYi") }, + { XHDR("oznv", "BacsOqLfTkPprrplRMoRfCJaXLOuNdkjjEBNXkLbNeTpWMQBYSjkavOaAgAJc") }, + { XHDR("sxwfqgcb", "sfcsKAoUyCRluVsxUnFmDATCBfZgCnTrHFjxUd") }, + { XHDR("jtmeeqzdvxfqva", "VNwCJFtWVR") }, + { XHDR("bjrjulpwlhdkcm", "WjdHcJoKvjLQiKWNwzjPIrwFymktSXMICBJYdiAasq") }, + { XHDR("sffyzykkvqfnqfeblhnn", "yPulezzbZHyvNayAzfaX") }, + { XHDR("dwcqwrfanyllwk", "ZebjAxCkvJUdfhCsryB") }, + { XHDR("oebwfcvsmgirrpzyx", "WiqTJGNwSaBCNxnpdVwGIhckeDHhwGInDcCPNRlPCAkFGhrIAkKhJStLrNQkQfn") }, + { XHDR("atnnfgenfi", "Y") }, + { XHDR("zkfbrjaz", "quMRGmwkPAMaFyWGDigzTpmEvCHDSWLzxlwtdXhNDUlRdfVIGTK") }, + { XHDR("qahmhrtilatwr", "yAcUYPMvIvoaFnOiIFVFWfSJxvohMxgBx") }, + { XHDR("fgjapagohnyae", "TvebthsSFKdcWWAudjhHoSWXQzEqubCTxgmjvQwLxNSvxCNYVtbQXoKg") }, + { XHDR("nyz", "CxddMrxyugmVCWpLIfZlfhAerKrAjuOEfWFoqFjQIvoVldKwSVwbQhZXDxSSkqw") }, + { XHDR("iaa", "Bgs") }, + { XHDR("eageowxbvtixnuzqxtte", "vhGWixouevjyEQjbDNJbKeHAbNjdmrzJOoIVcbQyXiNp") }, + { XHDR("aunoafztvxh", "GmVvVRlmPNhsUeejKpZrgwpPCv") }, + { XHDR("r", "wAhnpj") }, + { XHDR("eystwznzlibzyjslcnaj", "Y") }, + { XHDR("gsiw", "rEYuhZTNljFOOlhRBHBjTwASegUHknVaxAeumpgBBkaaBgnvwagBuvuoTOnDQacDWESZkKDNNd") }, + { XHDR("zfltwhcpuqxszp", "SEIVwowajyCNhrGaDC") }, + { XHDR("ahaxtzin", "QeIhWLwKqYBYiRrVLREkLDuCfMGjFESvfloBOUAbsXSATMXvPxsNruVoZyalwG") }, + { XHDR("dvtnnvdjxoxqh", "pynJxTGfNzPXpxwKNDVYvTrKMppRNDaGgHMHqEhzxaUiWVwBDjtCYAhXWcUEeF") }, + { XHDR("qct", "vwuHZVuYdaUNDODPIUyeLnERmZHXkRVrDJUHrieweElBiQkSLNiTbLQEYEbUMBYA") }, + { XHDR("icplydhvfb", "zExwGpXTfAzVRvDBiLlWivXXpfRewdZkTVdC") }, + { XHDR("jxtxczvumdy", "CwRrZvDMeqvaKVhkVABkTsCKDsRPyGjJIM") }, + { XHDR("wh", "DcLuuNRzyvgpVClfBUrBEnjNqfKWfHzUHCauPXIrLhDbLUjnyyiPltPIzEq") }, + { XHDR("ryyexrdwwqqfagdosy", "OKFJnjNwzvIPbRgHrtHLcOpRflUOTAWZJFujWopUdlCjlQge") }, + { XHDR("mzyucbfnahw", "SOyTRmOtGdloyVmvfCceOrfErVVHeSVtxeAdOGPUJBhRJILNDXxWBxpopMmDQgHlemXYSXWkCH") }, + { XHDR("sxyilshlkuponnvh", "qouryERGjOCEphZjmj") }, + { XHDR("pnnbgeuowejmehbtfvc", "aXlPIwNrotkwoS") }, + { XHDR("mfuhcjldyltqbd", "BEPmFSFCEwgjEZCidEEWC") }, + { XHDR("jcfagioqyievbnzvw", "tTCpbGUVfbYcnMTEUy") }, + { XHDR("txejuui", "FQLFJdNALQuqdzOXSpxRxmeqviEHqNpHq") }, + { XHDR("iuhluxdb", "YEFauTAXXnpAfcJVzVMCtykIKDnyhxPbqRiqxPrkLytAplvilAhWIQHIUIMSLLyDummDFl") }, + { XHDR("lreacwpafqszaddvnf", "nBqNmNnllLZpPjqlisvlcMnmLzbXjNfkxedOLLFukYylBGyMwjfGFYbgzyIzKVSSNQvNDeubqTSs") }, + { XHDR("kmipbwovunkxaacpcpaq", "YYrqRJxQNyMnOkGjgDpRJGuWELvaGBAUZrsm") }, + { XHDR("zzsavrn", "dfuiojgpvRSXOXbb") }, + { XHDR("mzznkkspgjsfvmo", "ZGKrDlHqfqUXyqEGaURwIprVqRKorZUZwKadQBkYKEaWWrDAqab") }, + { XHDR("fsjajdudcspzkoddenq", "yvodGdDTwQAIWMCgJOEIWjhgXZIAZbIcz") }, + { XHDR("ppelsxdzvlljxsmwbqvl", "TEAG") }, + { XHDR("dxxyec", "AHYdXRZafYjQ") }, + { XHDR("cabgl", "WzXQkJyCuXtJPiXOOLENxZkcWtqSDEmmBtVuxVoMsOMhYliWFSDKMukryZGJYnspkJvQUiFDG") }, + { XHDR("cozrleffhwwrcp", "KDamErBiah") }, + { XHDR("zpy", "fEpJmcPbgFboKblm") }, + { XHDR("spmdawizyik", "sIYxlDizrGOibTFdfNzmxiYheGQijFoqmqjYuKqUkGJQkBoXXCOfCQHZCBStXlwgixdGcmkqaRe") }, + { XHDR("zkk", "lgdxedYhyeZwFiyBlyGJEmejbFieODVnrGudkgNKhu") }, + { XHDR("dlheuctawqvizwjjwv", "mqnn") }, + { XHDR("rrbqyguhktffatl", "aPxkDhEkOckPgMgeUZcBiJorGQkwptZImTMFXCWpKyLiYFBOhNEf") }, + { XHDR("vt", "zjQldnprFcbrCHvfLXOXYryGTb") }, + { XHDR("yjx", "uESJJNpCSoBFXKlbaicPFMHFrDenappVLYXonCsHghiKdiIkMwGTYzBDcAPZKacCYzFCpxUrTcEVDAzJ") }, + { XHDR("rwlloiqvp", "duttKLmieQXgkJCxHBtlbjhDxAAOSvgbHerUTMoTMjyRfHXGvrk") }, + { XHDR("apb", "iTtZkUTBkQqobkyLpxoszfNAZtWhOrbcsaOHDMQzBWtEhqTWSEipVbCgMYmRsdwvqrfb") }, + { XHDR("lcsmzjdybkayuzezsy", "CWyxnTJSaJpipqFqpfikWRWnOEJxqHeKWouSPjykqAeR") }, + { XHDR("pjuwbhbxuua", "ImncXRuUIIUDzXhnJLqIeQvKDYaoLYxsURY") }, + { XHDR("gmx", "RLvwosDpKSKUAqsSgfwYButLiiqcPTSJUTJJpRIKGaYvzLjzHnwlIFDvUXbbrDZKHFKwskxT") }, + { XHDR("osusxi", "qwsMPhO") }, + { XHDR("drxxvtfixereojz", "qxTLszzayHfqWkEbUnrXhROjtpfulhgnxjoGZkvGBvjwRidJPTmUDZc") }, + { XHDR("kkinhijgraelovfr", "ujNSEfdKrGfXvhQzCDcHAXAskQPPNZhbNvQUrOcJCIUaTcGoNxbzaJcRTiLNJfDeTatFhuQrVjMWwwk") }, + { XHDR("nphfciymojdzxjddjipi", "KQbBOWavftZdzGofIocZJCywFjxEYjjiFjkSPX") }, + { XHDR("ezdpzvcvxzkvddiorwkv", "htfFlnjWpwfacUHLDvbgmcSgIuRhMhygCaNrpLivUKtjDbqmTztUqhHuZcHtEx") }, + { XHDR("jkwpyjbrjbogugwzbih", "gwcvejgtGUdRGJugHfsoPUoDPNOWkMqVkEvNkDhGkRJFT") }, + { XHDR("jbjmhykyun", "LakFhREtjaEVURkmUvpovRyqSYxURKiRucpHTlXyIOKPQNWweFzifEssmGOGiSURu") }, + { XHDR("qekwpuxxeuuoaodarj", "iulJBAmoL") }, + { XHDR("wnspnt", "ByFpuWFQUkvQjdjlMEkPXkWcjOuQGJQLCNzxZYJjUdMgWd") }, + { XHDR("kvflzvypaaw", "mgcxpdZqgtKxEbIhfnrx") }, + { XHDR("w", "lSqmkxqRALgFZhBzYCeeFL") }, + { XHDR("sfjhntwuldhuizswz", "EZHRCGXlRVrVXrNlHeOppLZfJxWXVyKLdVhVtUVzALysoXhakxtoaBLNHPvPZ") }, + { XHDR("gqqe", "sNfMuYsrnIXoIxZDzyCsONHcOYATQtUbvdHeShzUQCudHV") }, + { XHDR("ngzpnb", "mYsbBBJnOquSVVRXIOAeYdDeHGkQcG") }, + { XHDR("dftnaiugxananzhi", "mtgrbBKVFORXBYegidBSiDKOQGcDLZcYtUAfFIcLItgYNDNWmKnntHTiMrgOuZNVfoZbKZ") }, + { XHDR("yhyuinj", "jEKDIrDTjd") }, + { XHDR("efgqab", "SzhAXInyRcsdAxgILroPGZFaeWbTF") }, + { XHDR("mtpbpduc", "ZUxGtzExJJxgYiWnTchjsXqNjVI") }, + { XHDR("pxraicdielrkhed", "vgwmtJQgoAleLYTgRUFWJstIqcEoQGKn") }, + { XHDR("yugmqqzlszvhnavm", "rFzPZVgfXLNMIVkqLzMmCCgMSepSFOETDcWMHWSarsOiFzTYWBmOEoLIXgIGHKMFfH") }, + { XHDR("kjq", "QKDJwDk") }, + { XHDR("slxc", "tAomxfuBMNmUUrkdujOuZjtDDWJAZKFJULUGhcTiQm") }, + { XHDR("skusyjdnabwzlypikqn", "WCljEJOPiyoTlokFl") }, + { XHDR("vknrjtkfrawj", "dgZtuUekOwgiCWchqCsFAbdTYojfMjkTbMgGqZWNHOLEnIFJfSLYnpHZFBOFAj") }, + { XHDR("lfzglvnqdog", "LByOLmoABOhDmuDKogFmRIfZkUBNjdinlOwbMcymNiXWhfCoscgaramTCqcfEHoSTPt") }, + { XHDR("vbdmsnnvxpuhuwmlmghe", "PJwspiZAKtcVUPDGVDTjNeTNIJvDeEdJFPQWPGnqESFM") }, + { XHDR("ypmgyzcntr", "DGHJCaowTcdJOcEvHqdejqVRvspdfKbxARZNnwZYreuBBfTXeNvB") }, + { XHDR("r", "nqlCqmaThcEaOKLCelpFTJlkwrKcIVoZSremSbPPacYe") }, + { XHDR("dycmxvmeapaothqymrt", "BKsbwxsYXEYzeKDqcCutFnGZDCBTSGlXnFAakbfgAofbAIAJMvhcWiRwdyhrmBylmGRYINnFP") }, + { XHDR("feyncdkrfcxfsxdr", "wyAeklOuQCGaRKfQrXTGCe") }, + { XHDR("yjnacieojbz", "BVusTStaYCAfqeYuTlkrlq") }, + { XHDR("rzue", "wnRNFIAuJkXrumhISjfUykLOdfEzmXhyTWDlQmSlxdnbDtyRIBHlOqaEbSjkvDrjOMTRsLJCTLx") }, + { XHDR("jlezoe", "btPpreudMmIoamrvqivJAYtwhUcbbeFBTzqwArEhnOgOFmYVWyRQnKPtvMyUCKuVEVh") }, + { XHDR("o", "NApOyPedldFDIrFVOSXP") }, + { XHDR("sesocznnxvdtggo", "VUlrtmZAai") }, + { XHDR("xomgtqvtmhptqfovz", "gfHDbuouGPYzxKFYzEMmqS") }, + { XHDR("wlgntnalvtqkqoy", "SJAsiHXfdzqZjUZgAWjYyZYsZvFQpYIemraKRjMWEGSIFvVRzPVxmtnXy") }, + { XHDR("rfcknphcdaf", "TuoGICCZdifXuatbPpcWQDwpAJPGPRjiXmgNxUAVZIgMHjGRAMhzlw") }, + { XHDR("b", "jAlcGtFiIiCRdQRDlgxoDpppGHFCwhbXJlcsfYbkkVFOreDNEBrBqCaJjupRoDambYvSmJDOqNviQsaX") }, + { XHDR("exhz", "wvqKqwWQIDvAPbIQnoVWultjMFDfpvNwnpBPQrTAoOEOSlvLUgywTROCLKjJpeVWxdUzczaFnoyIUZP") }, + { XHDR("ckimzydmt", "yqeBSazzeLUyEcXiSUHlaHopQShStgQmFwCNkczxsmfjMmEasbNkdOYKopPgqqxkz") }, + { XHDR("dvczunjxxrpgbt", "IvqsqNCdqocGJVOkSJINvEEjVNDgnMUzTRMCwKxHdfIrxhOZaTcJkqSJIFOna") }, + { XHDR("nfmmimzapkhfwyvlzl", "FxjTPgHudLomWCwwJguoVuibQnPaBDDKVNOshsjyePrcMnHrHdKRSNNSJDkzLfwelAo") }, + { XHDR("uvlvztayiupgjhqpfb", "PwUxbjHpCOEnYkjYgcECguZJSGeqAPZYDYPHMkxrYHNsgHNrQtu") }, + { XHDR("dvsanxnugcptgsz", "fbxnKECdReSCcTvasxgaeETXTnCOSwhSQsKbEAUKmoeCkpRGkrUJbIXzbAHrYxdoZqctKKgCahRZJCI") }, + { XHDR("lyldqlkofhca", "RKKITEocKOrZbHMieCJOFHmMyEqeRhVFIApFEvvfbMUaqvOBWsFtEsPxaixDjVqRIDsHN") }, + { XHDR("xq", "fZBNeNeOpBYWfTVyWrIxqejUeredlncECIq") }, + { XHDR("cle", "XXVEAlSkQohCBSNZHePtjpLMorcwNudvQeEuXLpiNPLCKSXZBapnFylnBMaSlcMIBpPvWlkRDigd") }, + { XHDR("drrzyeztfhjadtsbjd", "ZrZDNEBZHUauSBEpLtyPvfcWOxPhlQsgWCRcEYfDttApcbvHuHdoWmdgYPYVEpjlsGEtrl") }, + { XHDR("cph", "OeSKNjZjzAHiGZRgJWdSlzMTf") }, + { XHDR("rzrkqvimh", "bAQccpjREPIwPpTPOLWrejOJExZeGJuSxQb") }, + { XHDR("cvdkmqmih", "ABfOZABctaUGsHFqFPRrnqjahhZMYVPRbpviDJCAAaZwqibngJdYQdXMZ") }, + { XHDR("h", "EqGrh") }, + { XHDR("knbanpiu", "AFaGkMxtXmLTGSULyAbdyySKmcFQkPaXSmGtpuoSFyIKghtkZJvTrecNNwLGFAzqNOLESmhV") }, + { XHDR("shlnvldkhnqvkstncr", "hsxpOYFNfYTRUWhASJQBtuMnotfANbojaZqnlUObHv") }, + { XHDR("elghoj", "zzSCGwsQTsFTwAXJbuPJJKVyMdXehrWUlxbQAKp") }, + { XHDR("gxlgbux", "TaKEPlysaTDuYcznoliXzGJhUlAWGYFOSKXGSgkarr") }, + { XHDR("ugebbbknosunpsojq", "mjjPFbOrLqfMSnUDoTcpkCj") }, + { XHDR("hubktp", "YhLjbvWxeysZOdMcsITcTIGsOJkZBqcysxXmSIxIsjXmvPESwBwwlAoEZrgayyMn") }, + { XHDR("ofabjgrfcqsxjbl", "JhMiqYvhjRxDcFYElYiZdiQexWGxoyLIVotaSS") }, + { XHDR("edqhnxyaxlao", "ZWwbgPNFPbhZjJWFfFcxuifCeFNAERjBNnGUQUqNmR") }, + { XHDR("wpmivcwmrqyo", "jmcwyQ") }, + { XHDR("osrg", "kvDskMgXabdNBlaoEhQaafZLeBzJTNbLGWXXjHjRNoztDcjOlHX") }, + { XHDR("qawmouvbjweocsix", "vlsMNYKbCsRRCYafuQJTBVufasv") }, + { XHDR("iwjryoggejinxhwcurdu", "UqIZzqentwzekaeXesKNVxtXOZLVFkQzmheqKin") }, + { XHDR("icksk", "hwVSDuikYJvYXvimDRHoplUdLJpkVPggUmbevXSGcjiSqKt") }, + { XHDR("dfzcgixi", "yLVbnNrSwCBwfutkExnpghXmgQQltsLgTn") }, + { XHDR("id", "myjzjdjbwkuGwBLjldAsfHRxfNBAIZSFpk") }, + { XHDR("qckmygsqzpptclcupuft", "RdmFpwzwWgYMywqJTCBuDwPMhTfDIxknjyBoZEUHVliuZHsOaERJwpaPKMhYRIJbVZibKQRf") }, + { XHDR("cpmzmg", "eQOti") }, + { XHDR("ejvq", "LHmtFQOrlpcdZnqlanIBvlyBonXsqEJviVEBqtiNpLDaRQIvJghUehhsHIUCo") }, + { XHDR("vlazbwfebnsfabfsw", "WXLIMZUuapVNKyTnmmQdXehRvCMGxHnGTrVnf") }, + { XHDR("gtixmopslhkvtycsxob", "YQJnOiQGLpnMgLDmicDbOiZQGsrSGfStIbhTVaZzNzyoapWayejaPnQvbSSpXCYrjTYbqtZtvonVLR") }, + { XHDR("jl", "MZiGWvISPwoIdktnJmFMNUIOhGGbjTeEJrkXAdFHWjjbcjILJdDigReqyxxVgbLbQ") }, + { XHDR("ygzydybdn", "vGljIcFelqxAeurlmmUEMyzw") }, + { XHDR("onuwoikuaqa", "tgHczAMaFyOYPCoYvjeuOosJoMKfbWSrqgrkuvlSiCYiJNnzNxZvabiFkVTnAdIhEPiMolBzcNjfOmvZ") }, + { XHDR("rkkcanpxjaxkcqkk", "kangIoOKzmlOmzfBFCbMs") }, + { XHDR("cjeml", "uUAfGQpSEzhOiTxQMJmdsMsLGseVHPLImNEQivADoBNBBlDZCIjkoTLITYKGKPOa") }, + { XHDR("tfezvboibuiethdts", "wQVDOHuizfHuBKOfqtQsuOzbCnYEyTwYL") }, + { XHDR("bc", "dUQqcgOTkHxrLYbikjUbAJTcaLwPuwoYnpxLdpQEOciZELdHhjTWluZAQluedVudYDYLwl") }, + { XHDR("kllgxzjohtgdgm", "PgxPCLsJevvVsdNXgSH") }, + { XHDR("dvyfxgfdzkwpdp", "fsgGNNXALHIZvHPIPZbNLPYAJAEoLGWxwyMGYnQ") }, + { XHDR("kthl", "nCdtHKTiEmoOramBbGQPWggpltegaRxBXiEVgLsOkbJMvlVWPTnOIyxPhzvSoHiWYIDNe") }, + { XHDR("txyeyfpulji", "HPQtHEMIiIg") }, + { XHDR("lrbsygvedactu", "asZsnnGcoVpDlKwArwFoVcOdihzhRSoqquPYTouSekegahnKzlXMUTmztGCUgAkNtBjysksKb") }, + { XHDR("a", "dioseIxa") }, + { XHDR("cyihjisdeennzqvubjhg", "CsRqjJQbcOEKkEILYRbQQkOgKIRNeJqBHNPNVWie") }, + { XHDR("djunsfsktvcgtvsks", "PvR") }, + { XHDR("mzdozwwjghucmpbitjq", "ZDYqmghlovYBbuQIJTukZglSvxIaeRSq") }, + { XHDR("ocf", "bFdPvZxBaxOqlQhyvOBxpblBUwCjMDGWhgvchzIppfSGihnIjyaAcDwngBa") }, + { XHDR("sybtxwtvpvwm", "jsVMdFxCrX") }, + { XHDR("oamypnpabbdsxygrf", "hUaZJqjTslpXDZGPaMkBtQkTtvoFLKThmzokIOhrmKWhirMMlhLAoC") }, + { XHDR("pcdlkziwxuwqxskny", "yUKDamomMyJuExLaPkuSwvdoewqZtDiEEsWkFzzCKdxlgRbLidPZywZXgq") }, + { XHDR("iwsfkdxv", "dJYLaFwjQXqJCXdSISWpmtIxxVViaPJuPpyADgZt") }, + { XHDR("pyr", "zfwkTSxqkwcrpaeJMFEWLwlvvpCumJUjnQBGMwjFgYNbVoSzEpynqqpQpbIW") }, + { XHDR("fywbck", "mXhQKRwfCGstLFXQRLmQoIBWBPsXALyPYIUGxgF") }, + { XHDR("ooglgfuqppv", "MtawwbujaoaReIfqSwR") }, + { XHDR("bktqx", "zOeBzoAHuUfBBcsnjFNmKbuTglZHlGzCOIGhreWpqXiEuhQlROqai") }, + { XHDR("h", "yOPTxkZAEziEXvlsQTTapkxRGrQpIBeUDNwTVinwGVuYNmCrTeWUOSdmcDAwBRiZvOqWrntEP") }, + { XHDR("kta", "mrmpweSzzIQALfrMRbrjWKzDJRUUeCKnIyNYTTtyDkXdyTEgoaLuJXhCxkgysnsVv") }, + { XHDR("jdkzrb", "WVrJHNsyTlekbocatoglScadsMOdkxzmiNYcgctGyNUUZzjehLCNp") }, + { XHDR("iyvklsuqdcowwefksw", "TVKvruGXSXsQTGWY") }, + { XHDR("zqtlosw", "pgqnrbLUGeRffKoMfBRpCiBvhfvzm") }, + { XHDR("cpuz", "PrOnBMvdFPZiYQtopzKvblsTqvAyJWbOOt") }, + { XHDR("nrrofdpfdglfsts", "RGsJInTMhOhimbbXHbeMpya") }, + { XHDR("bqtouzjzsrfzti", "GgTAagpZBSWHLAERICeCYSPlolILLDAfGntseNVZujbfRaCFSJFCbChFZFlZJATgDFdDdBGJptmQKuF") }, + { XHDR("zvjyz", "RTByLGmRlCLctkpUgoZAxZTHGHHZejBqqEgmWCFoYSHQSTasfbFwxTMVnoVHMRZAlPzbN") }, + { XHDR("jrpogstui", "SBnrqGYlUDk") }, + { XHDR("kqlsyuszwhbs", "FbFyfNUmXLWCObyaqScBRMdNlwvZTfsIeXUFLoKCUzNHxaJAlMIDBEGovczIPy") }, + { XHDR("g", "UhBHVAxsObuaInueUQQHFSpDIZvkQXaqaCj") }, + { XHDR("uumckjisbtnrxfp", "CgLhfBmDPwESQOmPATkXngbrZBTOVSXQSotDeQTWmyKzYBXqluaGVMyFWJZMhUwWuoDLdsfdce") }, + { XHDR("wwfdjhvqhyssedtp", "lxvlvReIabgwsamgrEmOPMYWChzxOyUZfaZXcHkgmgCdyQkktugRrgWisGamMWrJABaWeJpFdf") }, + { XHDR("awldigtc", "PsvVWbMafhZLiEbaiZDVwSOVQgHOvOyn") }, + { XHDR("aazztowuisbomupd", "cvBKQLgaBFRwLlIlGpVdUacrxrdJXLUQUPnROdzHBJ") }, + { XHDR("lpefoxpszjkkkhirvwv", "YfwOFIGbDOIETSoZRNqMdN") }, + { XHDR("zefakknp", "hrtRgnQjLFJzIEiXRIOnsldParYfBdrqwdPgRoU") }, + { XHDR("dwr", "IbdPrirWgiZUukxUtmfjzejGtdhCuLDSAdWNkZkieaotfVpRUhVQmpZNnEFTB") }, + { XHDR("jguetdouprockgbge", "vOFDeHXFaIgoz") }, + { XHDR("cjjvvonckceukwmxrep", "DpmAQaiNSQXXdlrwyAhBOoRwKfczAfzsRuzpbGyWj") }, + { XHDR("jktdhloy", "QBYjnYZOF") }, + { XHDR("phocdryvniva", "qzSfAgKtxy") }, + { XHDR("cdwwlmnrregcj", "ZqdRkYJmHsyGGmLMipJvdhVmroUIAPSvmYVXyAMqdbMFAIP") }, + { XHDR("xtlbrvxtgqkguemoek", "FHmHImRsBuiqlBPciGSyYhnDoLCvLKLTJj") }, + { XHDR("fvuxiotflc", "OYlYShLvgUEBgNZHvQUJhpjQdyKduc") }, + { XHDR("uaqkvfgtta", "WVUXdFBuMiGyHgvlxNVppsLeBhCMkhOcdJqLAdDGHWFGVbjIFpkyiuCLuhlcg") }, + { XHDR("xrjv", "cnVFlhJKpLbIiRkpdbaxxx") }, + { XHDR("thzszcfv", "bwJRWoedadpBrhXdVmZdkQxRQeSBPJYMQnBefWB") }, + { XHDR("irmvsdtvchveprpwz", "ugbIYkuxaBVAuAdOILrXSmIHOplM") }, + { XHDR("iceicxoxlncan", "BzhpYJhhevdCiLOUYtLBIKBjw") }, + { XHDR("laamswdfepshjszmdx", "uOJordeBfSCZWkLfCSfzWziANRORmXHDuHbFYJHmaAyntCLRPrZRhjVwFFwKhtRkg") }, + { XHDR("n", "hrkGfxwLQkfvrGQAPFLGLxHuKXNMSzuqeJhMffFzHXdPrMfQzauhlkrilhftfFkDqfpDo") }, + { XHDR("smwi", "XOieCMAdWwtKlErwiIryIVyAOMrOzHgALAYAEjJiAtFPkSVNpaBpPBsmUpdMzfZBLcwErFXInVd") }, + { XHDR("bxlobmxbuzks", "gnQhopwPrsEEXUjTirzsGkwkT") }, + { XHDR("jamxztsstlsnxzo", "Mf") }, + { XHDR("p", "BwfRnvNRgqzAAVwzzKwyYYBEaFDKNdR") }, + { XHDR("xbrfpqsyjxy", "KXiTmHNYBcQPFLhnxs") }, + { XHDR("mdvgigebtlctoqnsedtc", "hwXdWDsRmrZUTuResBOVojNkxdYxCqSmwAFySGuVIVbXoqTrNBdTwlmj") }, + { XHDR("niy", "tAobEWELaHAdues") }, + { XHDR("dqfyxvvczj", "uyibdZAmIjsxGzZzetxGyceNlDV") }, + { XHDR("tkyckzmrhrwny", "IWqCLSpqnvVMhBAJPjniiWhNVTeVcmmGpscTVcTrKOqKylqRxRskGHDZxYkLEGnibLdfLbxrB") }, + { XHDR("gnfbdh", "Tmox") }, + { XHDR("ythvitfahle", "dPMzZwSsDMyqo") }, + { XHDR("yhwit", "NeXPwccvsCGwsNzSWWDtgcmzb") }, + { XHDR("amnjogc", "JOIXDEGzFWPHbpotVXZpgCTSyYKbgDQgoYIhpLnvbDIMBJXhGfRYrayybLDNHhHqmBhWyoAmCcjpb") }, + { XHDR("swdwiwwrry", "FVrXpv") }, + { XHDR("ypwquifwmsmmceeov", "tqakSJOWU") }, + { XHDR("xebovlnsrhya", "VREzXPSqTeWONwjWrTEVohuGKBDuamIwRHtBCiMrAVljBbTweILLUJOEgfe") }, + { XHDR("jbkqmwqt", "avYCzzsjQboGOECqqJacixKEQxbdrbxxLbEylJIMhAvjHiRGdcDeoFvJKtpxclBECVGWWFGXKeOGgLu") }, + { XHDR("nxvq", "wgrMpbiSWqGahPUIpnFVmSiKffOOGAqoyyjnMsmNZOBaXSYqaDZIsLGiKUKjiLvGsXqfKBwZpUgvauD") }, + { XHDR("lndgg", "tTMXimjgWdSuklbzZGRrzwAApEytiOdaOE") }, + { XHDR("yzoisamgn", "jrOUXZYfuhvgbtWygspxOqXiUipgTXUuPVPnKeJhrUPKMoG") }, + { XHDR("sqxatgfonkstuwkdv", "kvaneyaJnGYdOttwGqaBZzBqhFFYOhrOGZnHvQOVCLbURHLpFXDRwTlLyBPdqrHaLRGMAKPKIpFPvte") }, + { XHDR("aidadbjpefcwxusurz", "mSxbnUCFZqCNBw") }, + { XHDR("uiwfrmsqzadkcrbfqgbp", "MRGrscpcwdOKBholFvKByAlaDQOmLZWcoclmAi") }, + { XHDR("mtl", "FitbQYxBfHsvvjSfLcoRXEaDQl") }, + { XHDR("oonpw", "zzuXfUzMtXNpkvdoRBAEMxasjDeyTqUclzEFMqPnjYFbdfvpcKmIthdFoImaORqZOooHC") }, + { XHDR("ed", "mvkSdmFduHujdatkrfJeWqJTCHFkPnuqaWNXeQtwsbERTUeAzfYdFuHjDpOwrhpLPHFzbDeO") }, + { XHDR("fjxgjh", "NSMyWxLbFMIrEQbJvOUtFHVjtNMSIFFiGIOTdZwjwEUCLRTHPkCrhHsJBFygjiYiCkSvDzrEvvpPnQjH") }, + { XHDR("wl", "eYngXgVow") }, + { XHDR("vyhpfvpvjkvipjlnd", "hFTDkmWvuAsfSnlynWbxsQGKWGywJEjsHXZwFBVMgIeYfTTGNzdMYkpJgXtsgSXpFTYmGxEAnwW") }, + { XHDR("yd", "XIrFFfmRlZKHXHgPVmrxgmfEhRDwgIslZSkAoTLkc") }, + { XHDR("xakwffxbroac", "aCtQFqGOLhLu") }, + { XHDR("jpmvm", "qaYLcEUHq") }, + { XHDR("dtvygrpmrqs", "JbByKRxMlPZAMpQdrdPucHdHCMelbDhsxBaXuXetXrTdjDRygDuNGCmwoLJ") }, + { XHDR("fzlimvzxnvs", "TbWsFQvDPWeZThMRFlhfsDYfAEDxqBfYfybpVhm") }, + { XHDR("tecsanvwlhjlr", "TYLZFiROeSOmCxSnOlsWLpYVEnRXhgyiJsYxJSARwhmXBqQzdDdRON") }, + { XHDR("zo", "fJZjRSrSqBHCCHPprtDCpWxMtPWpFOMvBWyqdMKns") }, + { XHDR("zioktcmr", "aTGcwTpQpZTrVbRQyLdSTDlWAC") }, + { XHDR("yxzxgucxuopcbwdh", "KAZdyYsDCnDZXa") }, + { XHDR("exiriffhitzuekbxj", "dExxHzGNJoNAdTxMIXxV") }, + { XHDR("onw", "QaPlASsTSQghTpDSmsFxGbotmCiEbZRDJ") }, + { XHDR("bbehzrgulujcx", "ItIcHhIwKnyCCqJ") }, + { XHDR("eqhdjzq", "CxPLogCAqadbiTzlCPbjHAMyAxmdtyBywPtQT") }, + { XHDR("dkwtgclmnuvhq", "WRYTHRrBKdfRexuFoohMjyjjUqxeDVMAnaLEeHkwEhD") }, + { XHDR("pszyhxjej", "uYILccFDeFzzveosyhijahotZZgmnvMDbgoSgK") }, + { XHDR("hhvrqisj", "kOZuaCPLyriSRlyszwODYieuTdvgBYnOjWVqaoX") }, + { XHDR("tnfajh", "TshASnhhWslloeKKaMZrcnYoGHAhMLYySCOOFRPTpSvlxuEJVfpNzJc") }, + { XHDR("wlclc", "jXCjXCJztUuJcgvIkQGgRAsywpnvGJYCvlgkUlUMeFSuQYSExrr") }, + { XHDR("rpdlrftqychxq", "vHwsmQUnIWgIVkHPvhhjyQCaUaGVvpJvtSxroCvdAhxPwYkyBjSPDdsocjcYxSFEggHrDsMT") }, + { XHDR("wpvumztzregwnt", "bKnPuXATxxfXloAcYoWLuaxKwNDkkAzgQTlWU") }, + { XHDR("cthyjnhlnwsshrr", "ZgowiBHLKxftYOpeKCzyRdPGRyc") }, + { XHDR("idmspenxlqfdtjgrgp", "tbecuCPlzPYwCWLiiUhylQOmqiqxstSmTYFVewreQhCxBLNsWEJIblFEaDEMjuONnnpqJb") }, + { XHDR("qygjessxrvrb", "TfGy") }, + { XHDR("wozejggb", "WzMsYEGpDboYPMiTdMfjRSmyllfjtRmxlX") }, + { XHDR("r", "JSddbAjQwOpGdwYEYDnEiAmeYRSKRSVWkOyDnNudFX") }, + { XHDR("hvvdbopqyjgpsnpzpwom", "WGeqlSTJDNAptNqExqnjICuStLqwaOwkiuryWBOutPkn") }, + { XHDR("fnkajvk", "hYhGfzxGlIccGFNoxYcKwENmXakXRP") }, + { XHDR("ercpl", "WbyfXztVPtbRJtQ") }, + { XHDR("vkfqmap", "RfChNQpUHWhIRClNCiArEUciYI") }, + { XHDR("elrrslfvlqgfv", "lngaaZgOjatEXitmyAkNNlRgbnzvrAVxppjLAmAeMRKiQvmYprGrAbFdVmAoUTvErtBNKizpvjCpgwf") }, + { XHDR("kkyziuhtoamasgkno", "NMtxVWOwMZoIGD") }, + { XHDR("jcy", "aHxrrIVlPgRevxjDjHSkzOydXAbKlyLloDGWyTCJuWtRUAKRUMOjxDRvtdOMhrZXcRzGdnxz") }, + { XHDR("zpe", "JToLsaMrlBrqkqPuMILBYgDFYfvMQHoyABZMYZAhDcSSxgUAWOOmdVThtNOZsSSNjGbtyjOUFNutpkSN") }, + { XHDR("bbhtlggonbzbarapwz", "vGijSLUtyvToO") }, + { XHDR("hljji", "FyfWSbpZOMMCmSwAvJyFKnVBYZOtgbbKHbRvCsxh") }, + { XHDR("xwjfplgkvbsigl", "vqbvfRoNJefkozReijpvZPr") }, + { XHDR("jamcdbn", "FoYpsAHwsxnLGWeRqCcNxmd") }, + { XHDR("pyddxcvaawxlvkb", "nnZGsuWEklrqPMWvFNzAVODSXyTYphYVmsIreBlEJFgbPUDe") }, + { XHDR("qpeslvc", "JyvkVUfZpNGXemTqrYlJkZNxPTQSEcPbWjMsGYWBqcojyciEpCsWYaOLPXNCJHBkCuy") }, + { XHDR("tdxckb", "ACpKphZGPBBQNRCbDKhJmxzSXHSBlisMIjXtoivSjiJioTcPdCuzFwd") }, + { XHDR("kvdfsb", "ZHPzJoRnAisQlGGJDSvQQoiZKVOvJmgUGbPbWeKXOfTkhHKFhTdynlRjOVKAMlWZThSdsW") }, + { XHDR("npdmjchfmwcsqclq", "fjMNvWmQzeiUyjnRXb") }, + { XHDR("oupvyfsvhzjweounovsu", "mZILpdjVFxNslOcPVpYIpbIRYDGdb") }, + { XHDR("bilzjssrjziqvhas", "gexRjhqm") }, + { XHDR("bbpvxtmeybkblux", "AOnKEzhKIaGgpRbchYKRApHpMWnxJM") }, + { XHDR("lcozsjii", "sZhIEmeoKZeEWYATuiEkiNedkbAWXhXJDkyUfarmCLomxqzzdgYFeyihrPxqTpVYx") }, + { XHDR("hvpvxv", "UySHfOVXVJBufSBXoeDUHcTVKaUIcExBmSKVwlqP") }, + { XHDR("mpdefrblhjmhn", "pjDtTpym") }, + { XHDR("haamocqzufc", "hglidj") }, + { XHDR("lllq", "fSboNRHyTBVQGhbZBIKvCdAmxoYxwyRPdSvNHwJAwmZW") }, + { XHDR("udctbgd", "eDjGEZfipiFVFhkMIgJcGRqqjFWJqUXmmpXAtWOcDqpAGlhGoRqoPjDNORxjUDSqjdpCcnwcOMoeYqn") }, + { XHDR("pcjkj", "HDZaVWVKGzx") }, + { XHDR("ukfscxzozfdgk", "n") }, + { XHDR("nsnbdouzxhpjq", "ERgBXtfDHTBMinSkZANNEahyBTcOAzUVuDydJtHaUbr") }, + { XHDR("exrhsyjjffjtzhw", "SaWxbzgxaB") }, + { XHDR("cridzhkcyohm", "REwXDqwdBwNgichvXJHEnNrkMIxQphrXqMiWzTCMBWhRZntLBzAQgecGpxQKyL") }, + { XHDR("wfzflwc", "bnZnatKvnBvzmTcZ") }, + { XHDR("abwu", "PntseLCKwXEeEqpStJRGLJsFoF") }, + { XHDR("smyxnbhfbsbdoyfvq", "s") }, + { XHDR("ndyoinuq", "tzgLeEzxoDgZbudzBhoeZSgGKSkTJPdKCMBDfZaDAmMejMlgthZlh") }, + { XHDR("qwfyjjdevuwhsgctg", "KKCPFyTMorPvdEaLDoghwJKhZtmbOQlCAcGvMhovEHszMNWtmySQbrbYUhCvCSDgGAFMES") }, + { XHDR("b", "cpxprSbXKoLvOiHApdxoikSgrEKNZtBIAYfqTsIUYxycwtltbLRBVNi") }, + { XHDR("lalh", "TODBJOKAKlPphFCQUyR") }, + { XHDR("bbvfgnzswgpxkhxt", "MxxOumatNdxnhFsmHTbrNkMHYkcQgdGESWbZ") }, + { XHDR("argemzlmn", "IvZrjInnQJklkMVkcMZrFNAuCKUnbrBjjRJbaifcSzaAAXrNzkLy") }, + { XHDR("bz", "oOGYJfIMYwwreZhsUBKtOObJeqalcWQivoVVqRxGKNcbMruaZBsfeyLkhHFBXoeEvsaOwfsP") }, + { XHDR("pxwwxofkojlestq", "chlEpVvPJGeMEvjZXShYHRtDPXhORvEmTKHkQVlNmparOesSNAbExbdbyYQIqtBBzhEAShzjI") }, + { XHDR("agvhmfz", "kZ") }, + { XHDR("zeuffocrmpqdwpxlqsbm", "dlXMyKwZmIuvasPtdrVOBcjGPRWOAfsaCfIIUfRbbIWRpjCsJoVvGUgWrciJnJuKbh") }, + { XHDR("wtappxoatqouknopbymj", "VsjxVTlJvUmWijFBGouqclgdoQTYJXEAesbCqdg") }, + { XHDR("wwxdydkxtadl", "RpcTHiqtNvFXd") }, + { XHDR("yxnhqqkoczjlsro", "KvZykETfBrACSnjGbDkBREivStHppjpnPBqUkZIWLmALyRMKVxNxsoXbPIYPPrsBMdLTOv") }, + { XHDR("mnfsarszxqbzsmn", "niqnYGjGDsEtYsGWTzC") }, + { XHDR("wsrqpcybnk", "okcFTqCwItdOrwHXuuDUtTzOxc") }, + { XHDR("mqbdtkmxrtrh", "docFihuSgyxErrMzCwFdsVfIkDfjtQILnWYhbAdblfPKFQTw") }, + { XHDR("lxeszxdmbmtwfg", "IHKBaXQLZNAwPJDUlNbRgZocpJCvTkwyxSACSAtPmlNPllPlHYkBcqq") }, + { XHDR("lggnfbtiouopneyezuf", "PQCNWkswHyCNtIEhGWCIVxNxVabIepmeqvdFsUsVAvneHndtXWVPAMsYFTn") }, + { XHDR("inv", "gFbPwkLcVjcXLeWegzlUkSwSAWXrdfLSoVfjccafygSUYnsLcciHjU") }, + { XHDR("dyvnx", "adKgGIFffIKjexjFrbcEhyVQHHbHhVmCwUckVHdXQBvkSmZPrj") }, + { XHDR("giykhscdonqd", "hHiOzKdAuLkYtvfeWuoYYUfqAZBRjskyiqOCHDKnJluanoyhybpSXeyaqITYXzHkBAaZGApShGnlc") }, + { XHDR("awoqu", "fquLtSwetxoiAvfbviH") }, + { XHDR("xprqonblur", "xSpQWjvawoBQHaBvhgsGXJtaMDYbonEUfmfpnCYUgaoSCFGeSyxLLzbB") }, + { XHDR("jwtzuwxqizb", "ZzkIYOwZAifQaAPpGREVStkveaedqssmrmLVZviqrYZcwaEJlqxZbqbJOWxmo") }, + { XHDR("hbqwfysjzsgptgyivax", "gHDErmkzVMFEImMNDxyEMIqMSgQIkwWEBUMARuTQXvVfkKCaAPoxAualQO") }, + { XHDR("uaqowaul", "HaqMWNXCOBBhcMcSyZlupcRUULhkAtMSOfhzyyQOfOUsz") }, + { XHDR("ykravbbejyqehvmapecz", "qmMkvN") }, + { XHDR("hnzvkgcsryucexcj", "TejvUirkELoQxNQUYlZlvgcfjYbNtEjwmlvRZJWy") }, + { XHDR("uccfuutclzinq", "tSvIZmDNOWHVRrFpmkrQKaIralNytakQJdohageAmQlsufbfczqQXF") }, + { XHDR("styzfasyxuxdyyzh", "rFsKdiKnFVyJxWkdKwbHrgKlxEnUJVsn") }, + { XHDR("jtl", "jkZSCjLyAcENZdsf") }, + { XHDR("rzwitjcvgdevwoazh", "McLKBNHhGRcXpRPEvoUDt") }, + { XHDR("xecilebqouwggjukuets", "ignKTINkeVwkNQeIqgHkwkocbDSrnXMKZkXiFVdVYfRuHcPNLaTorjOgfZ") }, + { XHDR("otqbafypdnwkp", "mRMzEOvpNVGuhopqmvkudWCGwbJyIolxKJWsZyYLuUwgqFLZeJQsEqzDCaDbMYOYJ") }, + { XHDR("gwmuzmjqtotiisfx", "wyvUqINeTUgCmCRYNwITtfOqdieNEmrwRzReEFJwMXrmMycOCcFjFGnF") }, + { XHDR("mculgdtqoms", "dKYGOirYBCwSgLHxCqqWspnYNwNP") }, + { XHDR("fbrzomnilght", "ENZvJymWlEjyLAtVDBwZSfLffrejWtgeGpbs") }, + { XHDR("rbv", "SaBMFPyDYScan") }, + { XHDR("rurjrvpvsfthxru", "PPketBSqhwgWKGmkbTnfqUzXYWGzoRWOEPamEFinfXYXawfaBuYJzQSMMmLjonyiRbiXuFjLvQdZb") }, + { XHDR("goghs", "sNNxFzULo") }, + { XHDR("cggl", "WxSGkZjPOuwcFCCBTziDmXjQnLtXXnggDcGSPngcIWAQHBdgwrSLLZrDxvHMpCkKFm") }, + { XHDR("izq", "ubGwqCYyyNEQIDLehmQjOtbaAPrwnVVGOHWXHWkGxPvyJQOEGXDUpi") }, + { XHDR("doqrnawyhekebswlse", "JqJtOKneUtfSNNDUD") }, + { XHDR("ykafybni", "VDUtEVnQ") }, + { XHDR("dxm", "goIvBpHrHGwYMdCsOGryatzkssnobSYViGXyLrVhrRQbTdnV") }, + { XHDR("izmwaskxzidcuwcrpd", "MXWvFhyQrBEmAjyjlXPkUDbBCqHEsRQCkybJWisIbIXdPiHuKNeWNfIoirgCaYSxOAw") }, + { XHDR("wmrha", "AvFpcWmBSGyDQngXGACKYxeXnHILhIRdHQQzVxlCTlbuPehASxasXp") }, + { XHDR("evoknlf", "IhSefYtAdogCjYITjZOrBDPJVWBSjmqCnFUKfy") }, + { XHDR("oxwzysp", "VyebfI") }, + { XHDR("o", "hhxENbVgPHdUTOGvhlFMagGhFEwimtHMNKOKiVcMOmsjdfsprCXDcDVenoFqwezguixiMk") }, + { XHDR("kwillgrrprzfiaylzldy", "M") }, + { XHDR("stohibnumk", "fJMxUPVIVGEWZimekOXS") }, + { XHDR("mojfycuzdmod", "YHzXVHJmbrJhmphIeyxNb") }, + { XHDR("puaozuqmiycfipugzoap", "LXGbkeAkYIOUVTEMVyMr") }, + { XHDR("km", "jCnnjCcWuRmRKoiBxxDnlgBbCfeICTksSQXVlmoPEhzPWsqLtaxOMIis") }, + { XHDR("dnidcqviqvfjivwctxuk", "WrXFxxOGQfWWzoVFZZlmNZKqXl") }, + { XHDR("isqqjnj", "KmmwGrocCXhrKkshlaNVoJdIdBEuZEEWDUagxHudiSQUvx") }, + { XHDR("ppvdmrmchtvksxj", "kuaMUDKxAaJLfNYqoagpsSOpSdZNyfjlRGMhmfB") }, + { XHDR("dj", "jWP") }, + { XHDR("shpuruzs", "wzbYUedqsLuzrPMODRRnRKMDLgzII") }, + { XHDR("rrvshnapjgeqhricjxof", "ccX") }, + { XHDR("eaoiozjmrlhtrgbtuird", "IJnWqbzKgTzFBkbLlBZA") }, + { XHDR("pdwzgzzshwzts", "QgHDEI") }, + { XHDR("rvarliownx", "wlMiGBHurZAqkaCTrAloszC") }, + { XHDR("mxpgwanptmwqm", "f") }, + { XHDR("yzzwejvftbn", "mjYirgOGoApigKZMV") }, + { XHDR("vtjeiumvy", "sJMCvNyUImbEsSIQANMGElUBwrZUcwiQZTCnJqOLhEAvdAIPFQqofxTbJqpQcwoGTcaKxVOSgledm") }, + { XHDR("lchobrsehhglygyzvy", "xLLgNLiJbwlqrFcUIjVRBg") }, + { XHDR("uidzizlbyhmvfeuaztxa", "zqtYUJDZqJgsKJKuLmwpmrgCoAihQluLmEJjsqnjEnoRtMIStoMDGIZMniOCaBfYMuU") }, + { XHDR("ektsvbnsbqecbkof", "agxCoIVwCvBQrxJlIdXTilzMSlwRWkcWdmSBiWVs") }, + { XHDR("msolx", "gzKJxMaSChKfKDjdWVsgXtnoKTxufDpHZyhkNJak") }, + { XHDR("csteyh", "ZSvXhlbHjwbQMXU") }, + { XHDR("ymbbiunr", "LugHoTZXuhXoDSNrtv") }, + { XHDR("hpkvffzbhyr", "izd") }, + { XHDR("snmjhkfpd", "kBwfFhyiiVYilsdQCoafIn") }, + { XHDR("azhm", "snWvEsFiaUYmQpVnrpKWYXshEsC") }, + { XHDR("sch", "hExkHxDSvjavPHvYwDWoANHYRqPtsWfj") }, + { XHDR("rrznzkoynwz", "FRMIurdfOEw") }, + { XHDR("sqljpn", "WsQZRSPlxgpEdFwGnStFNeLqXoiyQUPqrGveuKQFhANatBAGqlPOO") }, + { XHDR("yqmoxyxo", "eQVepeexRsmzSienupsRmseeweeCsvlcCfmFNCePAxDoXVXZfHjJcQ") }, + { XHDR("gfskcjgzezuwh", "slFhvOyrMziCn") }, + { XHDR("y", "oghv") }, + { XHDR("w", "SqfOWRBUqFyQpdYmnfsKDejVkauewOndlcDzVaPNMmgXfXOJcHCnFynpO") }, + { XHDR("rq", "ZvmKpKwnofkGjbxFrReYzBDD") }, + { XHDR("pwoxetlduantxohi", "iQnFYvNtdaeIQTJLcaBhPyWmBvmRoopPbPShIxKvTxoKmRJTgxkOJxYAQBWdcjRKMa") }, + { XHDR("olwjwiuid", "foDI") }, + { XHDR("wtkntnehvq", "r") }, + { XHDR("nwostnmimxook", "HEhdzhXUu") }, + { XHDR("okxndjzdzjbeonzhvgek", "sDwHxpFjJJWEwrjjBeDQtYCUjejhAriVXBNrzsTOYKyQcYtaLTxzIV") }, + { XHDR("zkeqmxjtkkqr", "gxRcJdyBTafpUIsbMkxmtXyCGJsnkbzsMbEvGyXkOhowoWrWhPgmq") }, + { XHDR("nquq", "injtmhbvUrYVrtjQXEQtnlqQalLtHnbkfbSgPVnEtkrvkK") }, + { XHDR("cwhbuptx", "vpLRtypWiwGv") }, + { XHDR("xwecamoy", "UpSVIVYhWIhyWUKMXZbYonNNEqgpmLOFHNsqEuuUUfDOKqLWnzWSFWGG") }, + { XHDR("esm", "YVEeMcHqZipzGmdbxyknZFqKjJSwXKGCAhapApzxUUtVEXqOOVkA") }, + { XHDR("xpjitgcnsseprr", "VrSazruVgnkUsMxHEahBGPcFeMajdEfwWkXSMOrxETqWXqzfCGCGD") }, + { XHDR("vqzyyazgsla", "owGKFwNpDxuhjwooGpFwhZJDOpGIfwsOajaJoZZrtPmGaSkSmTEFydnYqsFWYJjQKkAEB") }, + { XHDR("uskqpqcnwzdmwoaq", "MqUOGARYktMQdGRnJYoMwCWCaiKreXSpPYqiSFjzlMLcijBTkCTAdHTadVWKzKmFJRYpdYzeSbox") }, + { XHDR("zrgpqjqjqx", "GQwWescZMrruIRMxWPmipALFSQWsmPPrlCcQBgWZMAJaOkREGsEAlqCaFvdSZryswmzwXaCuV") }, + { XHDR("uscnzboeerupckyoztq", "WxoLCfgvJJmNYkYhDNdwzBavbvjHhxPcJGfyjUuqgHcksguIUjzepcYdHaWNIINgkxvdgyNdSRc") }, + { XHDR("uhbtkhhwiihpstlmcv", "AQdikFJWUbpCwWZLFynx") }, + { XHDR("iwldmgq", "wxWehcbpvjuSpekKxOjzkgcEzNSbyNffZ") }, + { XHDR("ok", "nfIadyMQZRxPGZlpbItvDYtqzlaYGfbsyEjfzDmNkUVqduDvRnhZFILkcDiZfzVLfT") }, + { XHDR("ehytjxajfgqbamvl", "PyZcvwQyviMuGIYPH") }, + { XHDR("f", "iLjVMCY") }, + { XHDR("zpzwwnjegek", "VVgpiAHpByxoqrehofDaPEHdzxSxRAOORGBMFmNFhxDN") }, + { XHDR("otgpxd", "n") }, + { XHDR("ukmxvchywtmudj", "ahKtNYriWMVrXaGkJQvljlE") }, + { XHDR("nivclfqjwec", "tuUEGxWBUBBiZwVfQnJTAKoOrkjYHUuoGzvvzUC") }, + { XHDR("whcervekdbvrxpf", "ELWwiEM") }, + { XHDR("jqrtwkpbbsyompsbjr", "ERgjtUDGukrtAYLAxkIsiMWeYFUPNwTMZxKXXUYpFE") }, + { XHDR("qlipkmnjxzlbqangikd", "n") }, + { XHDR("ujmzpamn", "pvUdTdDwKAkUrbFNDsaHsnbKVUbhCOUWOMLohSGoWER") }, + { XHDR("qkvkfdmdikah", "gmNEmnGycnVSCmRZxEhIcPhwQ") }, + { XHDR("hztrtjdthtvq", "MkoQEcmrFOHs") }, + { XHDR("jloxsquffnqut", "rIbWvzQWTvjKMJBodBvAmCpUIIViHMDxiFzsmWEWGkUfCNcGpfEZVNDWDriMETcpfWUHAaMHBNjRGuV") }, + { XHDR("nevookygltm", "ormSsXKeJjXlGxClAaMGlAEKYwyoovDceDFhkknvOffCSwWnaFMmAJAlJKLX") }, + { XHDR("qqzfngluqgr", "BMyIFnIiftLctJlzdymdbowxlkCilwX") }, + { XHDR("tealdhzsab", "bKW") }, + { XHDR("pheeegrxsmbpultkfpt", "vVCfFRPQyLxHfUFZCb") }, + { XHDR("azsa", "TvIBmbybBGSsgjJIAjoZGcuSPcJIVuTgyGoavfNALWKAYetPSaFGCiNubRnUUbdpTXkaSEprinmm") }, + { XHDR("ggpbbllatszqsadgevo", "clGgfkzbrsiIezFwuKkZwMwohZA") }, + { XHDR("jxoanignvmaogn", "OmNYExzwWxyWpjebLIatBXjobFWZhODPLexPJgWPJnmcASrGZmYFYpjksVdctTwrvgXxAJnKDx") }, + { XHDR("uqlqjclzkuvflpkspcw", "iKfqpWo") }, + { XHDR("qcyep", "yARiATyEPpJIFxmUEBVPeeUuJWGkXlDUcMXr") }, + { XHDR("ovqvpciyjpdzhvbq", "stNEpFdJFDtvHWnLOMTixkNfqxThTLifOnQFFzvIUzGdzHENVT") }, + { XHDR("l", "KgeqcbbrnW") }, + { XHDR("eymtetjt", "yPacYzXiawvcycMQkwPbEQbfHGDdgWGQAvihhrhjwMaywPHgtsWgJHJvCPWEuXA") }, + { XHDR("hjtfmodcdxlhfm", "KdIqcxKubGAOIcNFsWKbdZxGEtc") }, + { XHDR("kecquswsncavmnbyxx", "OqEQImUyzjLkQPQVOWnfHayzUIcvHKXAdSYtkgXnJUeztPQSxpuHAroLOJBEUhguxPNIqRRnyY") }, + { XHDR("viu", "ZynkVZpskppfeTFZjVx") }, + { XHDR("opuwm", "IShlOGEPXlsdzSiGiUQZjhWmYqOHAViIuoNThKOYsFKZEmzEFfoTaQPXH") }, + { XHDR("tltofnzzrxlemaecxvwx", "imlSkxed") }, + { XHDR("jycbr", "OBZFELAZQEdWBysOBqvBucJMZKjhnHmaJHbfGgBdHnVcwfAVBedEeWbuus") }, + { XHDR("wqdglyldaqtdiufvodpw", "OpvktGangwoWFRzkbnINcXMIGXbMlYDlKpZcwzcppfeFuVDK") }, + { XHDR("zoszikdqoymypcq", "ywXGGHOuAYlOMrvAhWqZVdLMmGWTlQuhDPRyGDrjtiZKwkHbrueOXBSSsdSNFALjdFpC") }, + { XHDR("c", "uXKUGKXTAHEYgaITGidjAMge") }, + { XHDR("mqaxa", "RmKZIUUJKYDRiLWPzG") }, + { XHDR("zzpetjbkcar", "UZPiqC") }, + { XHDR("rzec", "yfRmcNDCnVdKw") }, + { XHDR("ilajz", "WUgHYIylpaWSoaKHssihxeEZyzKDnaijadqcgxmfvTmZdXfoZQ") }, + { XHDR("rgpgaedjnhzbc", "rjAvBpAkMwrSnUXlqEPqDmXcPaiSDGvvhanpKMfwtqkesFnPpPjJuSCYpWxRlyMvlPm") }, + { XHDR("w", "CVFBqDYTKrGmEreEvtbKIx") }, + { XHDR("mzqjscips", "IdBysSiJJFNUcGqTtxIqMVkBaqTFOpdBiLyQvDfxgIxhacIqXBqGvioNSoHWaJ") }, + { XHDR("mpfogfrtynvxdcnl", "PLHpvn") }, + { XHDR("wctimrqgq", "BAxJCOrnsqPoeNarereYbaHKMKTtYHhtjUSruwtCqhWYXrLA") }, + { XHDR("ssekqwfmscvhhpcgyx", "WNpTsYiraYsZwurmtgfAgryo") }, + { XHDR("zpedpvazqbowhwlpn", "YvqwxCRrFjtBMJiHYzsfvFXwLSYOLXacvkJhIFrkpglEUc") }, + { XHDR("ojjgfrsvkzbvxbbaz", "aqjrIEvAOjZIBGEcWwiXaMIOyWiIGljuTJeEZDjuvYXYHZrIxTVKLK") }, + { XHDR("fjmfskxoqhdnvncnr", "VewrgUEqJRtlQHhtAdG") }, + { XHDR("dkj", "gpeiNqJecgPNePbJXlxXYAexkJxolxfQuBXgLNjBSnhAImJQIPCekaXPwThEbpSGfkhxZRpwdVMR") }, + { XHDR("xzcxnocom", "cjxpURVqaQGWGDoYadcCuoZhmADEIyFR") }, + { XHDR("xwbicquesyqm", "gyVlTMdrks") }, + { XHDR("fargderi", "OdfikyYQJaLEoJeakFmiXjRFbbbsttkgbjavIJrijEOCmLsadtevqndjHuD") }, + { XHDR("gqqbhgps", "wVRuXnAeEbAhJBRxzsypZjwcbUmChwCAxqSJOMRFgynlSVLDcrnViQSuXRAafMqcapQdzCYAbI") }, + { XHDR("mchawkssqnlzbcb", "dZqDXLRwrfzYabEqTzdDqQjNpXHeWSBGmKLSlUSIgGCIsoOzNQnA") }, + { XHDR("bknvzwxtx", "QCRwbNtQOMoZFPTGAfofnJcFSKGwDstNegbJidZjMWaoRuAMeZUkVugAjrG") }, + { XHDR("ungrpgjegv", "IJzSxpttpVlUmoRzWXrWkQhtaIkAahMOsJMLucr") }, + { XHDR("v", "JRYiMwqFZLhnMzbEOjnsaBG") }, + { XHDR("zapvqirqlogisx", "FcYotadrwxdfWmfVybqjdpRHKPHJUWSsGlQSihyzFbbwrhVsmEERKqOMAfpSyIKsRgT") }, + { XHDR("igmjvfwykefqxxieqoxo", "KcOOmAqbcnyvtcrqxzOuyxMvnMVJzWIByXPZbiRIkJWuQkhVDKLxKvlGlValmfPOxkizw") }, + { XHDR("xcfe", "zXcVjmAVieZWowiblNkKKnJRygJwOyCjqBEPBXcY") }, + { XHDR("mtuywjlqnftk", "NwcOrIIKwvaFIEilLPwHWOZwnCQGfWwQqDLYSNGlhUaLd") }, + { XHDR("zl", "MSNyz") }, + { XHDR("bstbplzsexmsbxrx", "XfHswpRlrxKrgoa") }, + { XHDR("zglyr", "yQWG") }, + { XHDR("nsfusmbvmjpiad", "wfHuVetDPLKpEZPkqxN") }, + { XHDR("bldzafltvegvqwzab", "HoQcjutQueosePHJkuEsVKUPmNvjnrWbIgSvRUnbBOhwtQkGkQBQIFGNLKHjECe") }, + { XHDR("lfvujn", "arjASdeWIYWilMrjNjwdEJLsvxmSxOQiNYPmJeEaeIUwoiahkxomSLbIjVvHnWaQrql") }, + { XHDR("jsuqjvtjkfhonhppsy", "Faev") }, + { XHDR("j", "laRfSyUlJygCeEwRJjnUeB") }, + { XHDR("bolqgfyqzwmg", "QXRzHyGOjjnPWnBYCnwONuyyjOe") }, + { XHDR("btms", "HAlyEExRrlQoQjaCCoOyWiAIWOljMNAmpWRiJIXBlJyUCDhzsgOBkeyueKoryClGCCCcPaddCgnLXxEL") }, + { XHDR("jirebuddcitq", "ZhCiMDpJxXAvoR") }, + { XHDR("sdtqvc", "kSNYnEHHBaEkmEDeMAzcsehvodKSzyZjSWVZJmSgTLdCNibJUKuQqxvEhuJwVEkCoJNMRmfEw") }, + { XHDR("qyzylytpjkksi", "yYFqrCPSkYmZpeweXdEXeiQqedAhrQnBuoDJgVgMqXSHWRuANMIR") }, + { XHDR("jarrqvgeyp", "ESPHdnAjtvcCgDNrYJuPEmeyfCZNduYYBGhJCF") }, + { XHDR("rotczzkxdialxmkle", "KkAndPGKerZGuGSsNxZGozkIZjhtEGI") }, + { XHDR("nexwaayxcb", "uYGXOBUCmWrFNooToJJQOgLVEfoFTYxMpIV") }, + { XHDR("cxevgxyfejgbm", "lFadQ") }, + { XHDR("umcjb", "NqSqFEEegLvPosiSwJdvemTqOHavymopprjEfOBjCbotMKZybFfSYflBWSWqbIUZ") }, + { XHDR("wcnnbumtin", "WJUcxSSWtukkmCHTtoFYivfYihvcjqBREkaFvGeWdgGFEnEVI") }, + { XHDR("qommjconkouvtfkxuxye", "QHWYjAIlnAgOdHkCuAWDbkJGrwhIQZgygDnHVhlaKgIPNoMnDaZHeYVd") }, + { XHDR("eevtowmnqprmic", "eOZQetfcZJpgZvUXwXJkLYqkV") }, + { XHDR("dbldzkvqfucfkk", "vHRNFocyjITkfljkeXLcxBROuobuL") }, + { XHDR("fhlfqzsxvziue", "eshzfrOAxBQgtwvFospDiKECuevFqLererdecRGrrahestwZXwfdtXvyYny") }, + { XHDR("zwugugrivsa", "qTUxaKfZVjFYHmTHtktdKiQfyomsTmUznvOOUxuADOgNnd") }, + { XHDR("rlpsybnexg", "UimwLruiiKlDOzFbpQiFEJIOCpzsOWPbyEk") }, + { XHDR("pdziasicvoezugln", "psbaMhWUkBqHzaCLDKUlwoZv") }, + { XHDR("ozxcym", "avrPxBMybhGIMMCdKJLOaiEZCzRjjgRTMJHfCnYsFvVzEKbSgySphyEDMNPAxnVNhiNBXfhyp") }, + { XHDR("jhxrshqkzxqui", "PlLsbrqHGNAqbIZzCqdvasBRQYiOhAQYcIHPBEYaFiPkwTydCqtiMJLPfgWdjMlciDVnmd") }, + { XHDR("sscjk", "YGlbcLuDlslaNIMaqDrEhfcKdoEUlGVPmzgXcWXfshzWUlwEnvcXKSJja") }, + { XHDR("edyuhvpfoggjyshfdcaz", "ZSXqWzUKnjbCPGSwBKViHRcyKdkbYizmmDTimjWtxBhsgMqsxAvzeHYDDGPLguVcSvsSUGKFXwicTy") }, + { XHDR("sntkkrlzupfur", "BfduFoXJiPXlNXjaZiEuWvYsbTfGoAZZHuL") }, + { XHDR("kmxvtuxavzpzaubpvup", "HBjjEwkehMazezEyDCWKZJXYlLoBHXlUPZpHUqtsdZDqQdsPbAnYJrVMyJUAuvtinZmlDlxXZmv") }, + { XHDR("iucmb", "banNicAfCOkSSzmazabCmoR") }, + { XHDR("eqsknkgprivvofqylq", "GrktaAdqiMyCSXHiNxgpdIniyIwlskZzxLjtpWQgSLUHqltizOsJHnbyjgtokWLMgUxxPGKRGeSzNQC") }, + { XHDR("auhirtwkynuiug", "AxtRAuIeiqjrHCR") }, + { XHDR("cbkulwoiihf", "bMlAoQKqU") }, + { XHDR("lpygymkrimihcsrjgs", "daspYRN") }, + { XHDR("nvhgheenayfo", "ruBxhiXjSeUgYKRa") }, + { XHDR("ovpufqvykxzpqzi", "cKxlcnnmWQmeVr") }, + { XHDR("oekod", "idhYwyCSwocpXIjGQNIsAaasCjkHJuIJPALiZFsWrMUo") }, + { XHDR("azkhaa", "hxczfWZuQQVXkMpIOfxyIfsuFpMhNgWWDfwkHnVUwyKCuNvwNJYUQplQVtGbJ") }, + { XHDR("flunbssxnfnnjlaaz", "rLiEDqYGcqFrfiXeeAKGMrkMuiIUVwkjswgQNZEjRHjijIiFppOpXgBfHQNMCse") }, + { XHDR("mg", "EkLJfIjyahsZpBTwKnsiXGGHcYnquEfJKWcs") }, + { XHDR("dkglhvtik", "oDVAZskqIzRkFVgerSTdlDLGZYQjIB") }, + { XHDR("xeybeerrf", "WXXdCSNfZTTtlbqQSkpZLUCp") }, + { XHDR("sxfwvnxhg", "zrDcGATOvjCGegLzMftBgVLSiFlS") }, + { XHDR("gtyfom", "WXNyqmQ") }, + { XHDR("hynstabjewagtbasu", "UuvePwesmeEHVNzXqoTywyVIWKbJuyLKUmtjZupkuidXKJxLIIbu") }, + { XHDR("lbymtdezzfuxvjzy", "vdgvjtPNAYrMaCpPjhorrvIckiMrGFciWHBDGvFvFyppUfSbIuP") }, + { XHDR("k", "onvyyeNDlTtKdUJfmneOzxFcmasmkrrzBLPKEhBjSSluxQbyqPKRCWKf") }, + { XHDR("rmp", "EiUf") }, + { XHDR("mmwbcrqerloqggtexzv", "zoaBeYKqCywDmnOfLlgcGmKcKhSFZM") }, + { XHDR("bcmdllvo", "QCKOZhwyEqfcAgPXRVbxRHgnGXbkYmMojANuB") }, + { XHDR("kzjixnkkbwsbxdt", "TngSAGyAEvNTAdeGGMdwHnjumtp") }, + { XHDR("kuytpy", "CUbrRamYAeAMuXlKPVvUrxlMOqbNEORurAGATmkadGxcVXmqrbLpjEDQboThdyJnEecmPVjWyLQk") }, + { XHDR("ugpnfxqlykb", "OxnosITvTbJirlBPxJksBFBU") }, + { XHDR("uuibsj", "wWZeYzLvXCSPSm") }, + { XHDR("smoudhosygxokwybc", "bHkwt") }, + { XHDR("x", "gHtojFxDJhUbCDRzavpFNEBQKbFTX") }, + { XHDR("uf", "daEZuzikBth") }, + { XHDR("wgmj", "wiQfMmevUObOvEgHExYwFOKEZEFfpHDvMTIwVBCKkDvhPUHkegjkFcJByLNLKbqBQjsXbSiAZJ") }, + { XHDR("coywfjywkhtlbyxxr", "VUHBPihOleyvhFQQizixEIEmdfXRArRuAMFalDGRTywIJSMDzvuRKzTeXQeoZJOVZAlMjUpUxnXMkhJ") }, + { XHDR("dppaypomrzvnofi", "aMiQVeqFvAFqQ") }, + { XHDR("ukrhzkiikk", "OVockSWMGjhnZpAVGFblobbOmqUnpDeB") }, + { XHDR("scwcarqnyhaovzc", "kLOrxKTtdUMsyciLUOgXmIgznrTnXBqVxkQSZyTJpEUcLzheQLPbGhijCSPRFtjjRdGpaJuH") }, + { XHDR("ocdvqwlk", "UpjrudUqSUufiNf") }, + { XHDR("gxxvihbbsklxcawaglr", "rZALrHpSOVWGAgkeDWkkHQRttHNAdMIguSugMlpvcSdWkJpJZVUo") }, + { XHDR("mb", "pJCqoAsSxUMUFCy") }, + { XHDR("hbstjegfwkhbdnaoey", "Kfp") }, + { XHDR("qgfpit", "iIehrlfnnl") }, + { XHDR("s", "aRkUUYxCNijOObRkxszZhonxYHpIwZ") }, + { XHDR("wzisqnjpgeptsglbge", "ddwBvdM") }, + { XHDR("idnewchyhpxf", "VgAkeXiazYchdLLimhVujagNGsSGEBlCxdPlxQemuBGlxiNdMoYIQhVc") }, + { XHDR("ruxyzqcwwoool", "ebJvgzWzOsaLp") }, + { XHDR("fgubrkxbrlpblv", "MwpTWTPPwYAl") }, + { XHDR("bmlanvub", "dMVZLzFoiBBkWTyPmzLVYkcWhxStsIIXSFPDBGLnda") }, + { XHDR("og", "TrXtcIkV") }, + { XHDR("odz", "NLXNGMjOJOtjbUBdwgUnawxCksdzvGMbxyvh") }, + { XHDR("eupysxfohxhygghtaxbn", "LXWlvbNxOCEmTFHAZdmP") }, + { XHDR("dodfxpqnmxppvdf", "BiPaRUYlsvAdwzDudVLRwBNRuuvzQHSsYDZpDdyUMKxFZRoO") }, + { XHDR("rqc", "JfLpWOZdQfxkAqtRtTrEIrpipTtMJTRAAUSmuaxUfOTPGkqpPaRCTHmP") }, + { XHDR("jpzhktcsfsh", "SdUgpKmTIvmfWvMhPueSaQUKqdEIBfxZsxfdOZw") }, + { XHDR("gdni", "pTsBikYdDrysGlpttdoMjZBrmlJCiQiXcoGCNTPYFilVIKDfVM") }, + { XHDR("cvjrrkbpgtojxkap", "O") }, + { XHDR("ketxsuasdzio", "TygejBvkqhZIsONvXsRc") }, + { XHDR("mzjgjeiewefmuot", "UwvcotNkbknuMazVaPsgTByZaf") }, + { XHDR("tlkuvseorajrcy", "mHullvuyJJHUgyg") }, + { XHDR("ffzegxemzrnmc", "vTLirOT") }, + { XHDR("jhmhrzijni", "pr") }, + { XHDR("kqhlrdvukzmzzrkbjz", "ObJqNHbwEaMZDyTuJBhMRFKdbYWcQKpMdkGh") }, + { XHDR("cixdkovwqfznrgmxbdc", "NFhZmXoOmdxBNiFwrJFlhXjvcBuQIzhBmpvJTS") }, + { XHDR("ih", "OCBytPUZkwjeHAzEzvFviTyTLWFDqdcxP") }, + { XHDR("zcyuztmzrelrodwv", "fzLiAhDGaOWrpcuSBtGXYGRAjm") }, + { XHDR("razklpk", "VvKKmmlVhHTfBeLXdorbJMMSRkEJZuK") }, + { XHDR("rzkqylvfunyj", "YHSNXnqNRMqrlHGJrOYvEtngighpreQWuupUKE") }, + { XHDR("l", "ORsuqaD") }, + { XHDR("unztx", "NGylKIfKkNYwJRvBWCuksKCJfqOfUdWdYwukMUkAHwSXr") }, + { XHDR("dpgzjorramok", "jHvHJDBGyovMSAppkUsKzMmASQHXPMpFqAjXhjfzBPFUgNjaGPTjSdttNZ") }, + { XHDR("e", "TfyTeNqQOgsEbpfHIcbQAnvLlcmSBimXxzMmIGjimJkkLcJmfmqZWVQrUtRBDTJlhojwZkPlUT") }, + { XHDR("smriyoveybljwv", "RodKicsiePmlvfjKfQWObDjPPiJMdjviOxKjeEmTtqdR") }, + { XHDR("bt", "fpXTFwJgqANYcxxuVNqsbymi") }, + { XHDR("b", "kQOAHiBmmPLsQsjCTIfwzjiWSHqVlElVahSnBQeYyfsJXgaocqGGpfOqB") }, + { XHDR("iqmsavrzeembgsrjruzf", "flptvVQWdKoi") }, + { XHDR("kcrptksiuxinoqin", "dYcUozawXprNGIsdFVOdAGEdNFcASEVwYYToMfBONpUyGkMeFcdMGyOkysXVvgYhEzaKOvjnZwg") }, + { XHDR("nymfhqcslzmgybj", "FnRJdsmBdTXwfaeYyyWKFswTLnKnUqHwqCElcZsmdCiHjIEPzcOoPzVFKIrou") }, + { XHDR("qmwflrvqkp", "uFMdovFuRDDeKGXqyCQXDwcungYRToGcKJCxYzsGQaAETwHEhRZPSg") }, + { XHDR("nsdirzhegyhc", "fkeNXpfUpVYBvJUbfLGSyLPtHnzKEMLHCGShygNqUNubujLpAFeSFGmlzHbRchnqaasUJLJZgsUP") }, + { XHDR("ert", "CepQArNgtlIdjUDAdSf") }, + { XHDR("qwdcrblcbhlvpkb", "pKwOnSZkoZGZDUEEgdTtCKvctsaOrntYiwtYbAncRbyZL") }, + { XHDR("vythvgl", "KgWAwrulGBocUSgBzyjcoGXeKRCimhPCBQJYwYZWVCLAXBRmFlJYBv") }, + { XHDR("xcccd", "rsCWujaihCiUDzWyxYSLii") }, + { XHDR("ed", "allabRwwtftSWMnccfjHgHNPybmukQ") }, + { XHDR("ecq", "PVvLxgVlrWryThMUCkcFINvMgjmnsuuxdeIpvEurHoIXprbamJIDJQNoaYwbrgZFOqELqwnpFzyCb") }, + { XHDR("vpsmapjatae", "nNHQkP") }, + { XHDR("stkfvfybfota", "wlfDQsNYRAWHPUxdGMTFrRYskxNZiimSlCtmiHznjOqISYxk") }, + { XHDR("g", "uSEPCWjvhWgWRMYfvGKDAphniqxPAGtdUBSowcHfchYRlMmQvZKSpJkayHfqBJJcUpaiOA") }, + { XHDR("kaeoxq", "DrGzxnaCDidocxqwNMLfPUBXkTXvjnwkkJRWPRWnMIVerFOzaGsilNKUNzEDJxQXKCkeaTp") }, + { XHDR("isw", "tohkdTtWsEORrGoJrdQrsArGnNfgSPpgKtlRWenKKvgBEOeKRWeIoIRj") }, + { XHDR("dvngbvhcwlkwboyce", "LQn") }, + { XHDR("dvdvlekiqckrkwsir", "FOS") }, + { XHDR("kbayjbqjcmfib", "JgIeE") }, + { XHDR("gheb", "yONQsTKZgHfpffWRPTOGwYpRLFCSZJHeWvUESrCoKFpdKNEEcLnQYNoGbnlmdzuuxYaRMkW") }, + { XHDR("mtaqlqfbgxefc", "wELNXNVMBMVrjKlWFmEsBLbfCsWQuPhF") }, + { XHDR("cwhax", "VdDcUMb") }, + { XHDR("cir", "OUquDPRPJtsTamxEtwStenrxsgoqJQSueSqZkyzGobYGKJEPKWO") }, + { XHDR("xkhpazhghs", "lb") }, + { XHDR("ufmrjcqg", "cLuivxTbBVepzXXRFDhzhDWZikbaeqQINpqDGfTRnPkyRTqogBoNCCuBcLxQF") }, + { XHDR("lftjts", "PDziPexpNGBvFzppdsKsWXJGiAyZLauakQorVwFtimASdFAdpDUXAVPtgoFGNJzxUtBYMCeGnA") }, + { XHDR("ahkaspgvksxurmlvq", "lMxhlvfBjDlIjKOmrykpPZViPIiJPwTYqDuagIUxwtKppsYElgFmEjhyvdglZnBLBgvT") }, + { XHDR("medgsjvqntyjhmymdri", "VDMRXQNGCOykLRYjXUrkstyAerhrZFHeA") }, + { XHDR("svlwi", "LLdInGDiaTCxClvjWinIfobxKFaGHI") }, + { XHDR("jbre", "FIqROnxuQPfIuqaUqHmq") }, + { XHDR("fcniazdesqustjy", "PpCxZDdKQwsaOpKnjgNcTuipDkQWpIioCaKsitqMSAIHEJsedODhmIAMQOcGfAVVjbBludDqlDJIas") }, + { XHDR("l", "hibLboIJnDelDrKxswiMhUw") }, + { XHDR("wxlytttrpwvuwcact", "PEyuDxDqlDnipkObxlKSSenkYqrepOI") }, + { XHDR("hcmk", "ZOKcLTjuwfIxixoVZJHAIGdQMXyHyynaTLPvdZRfIhxjv") }, + { XHDR("wfiachwmunjc", "xYRRlmPPcNFGAoRxRmaUiwiGcrvxaHG") }, + { XHDR("up", "XREgppNdnSIuFcYSQkHShCcJozJWwnVyHIoIRbhiAbAAJ") }, + { XHDR("wkikvdakypzkyxvrb", "jpypysRjlIPEmTySUEdTwa") }, + { XHDR("kwmbjubckhxclitgcx", "qneMgVbHEveRIUAIrVMncwBqFgozmXrWQeMFQGzbnkeGqrfHuvXbQOsiLhpFkYNzKh") }, + { XHDR("uzvdeqqe", "OmkqHQplcgqLRrrWjmcYybSYIyOhkDfqLHQBnzECmoNCyPSUoeArxUkNxHfmmxadIMJ") }, + { XHDR("npkaaunadzoclk", "ZFIZzcGmTUgShOxDkuRQvRJouteMMlVPksmwmiHbJjmHTvRaKNXSKJwZPLoCQzNfiDjqLjprkYZWzvS") }, + { XHDR("dzeikpudibov", "oYUfJiCPUgRxnfZLuVyNzyhFyGtsxpwdKujd") }, + { XHDR("dkiqgpfqssapjtde", "OKJNgpDGZwpWeRYIuVrBmwNvRrqsBvcnlXhRMqqquHfMVqGfJIQjpjIPQZhICzdFbOoQ") }, + { XHDR("yacyxmrnyghrsgidzzzn", "APaxoouMzNXuoRHngCAvBndeqOpZdPuTajLnogYWUpkuxcUIlIbSTVxMTSCpuuaSvEtqPYiKfnuWOnfh") }, + { XHDR("wzqiroe", "r") }, + { XHDR("ytumddnkvxcskazvvcjv", "DQDzQTZASdZLpakexGyHWeGfWiISbpzzMRAfTotz") }, + { XHDR("jyfryztt", "yAQXLnUKFoCNbKyT") }, + { XHDR("gvivz", "kDbUtTzWrpdjBpAeEzUIBFtxFVYXW") }, + { XHDR("mmmjzp", "WrrJVdXgruBTzuEFqWGWHsOwXtLCzHfkRWxUnqFDicZm") }, + { XHDR("zrumzqunpvptzknlnp", "yIeYFcZxqU") }, + { XHDR("cukiaktrmbgzofcatl", "wKeEqRwFMxVQBhzHGapNSljTdiRlnEdDQmXkimGdPAzLLImgnZAiYClUXJuXzLvnUITOyLoi") }, + { XHDR("wyoaxgmclxtu", "hjpQvCZUWtnEDQqTPigpPycOLGmBQrcQvxGQCzPXjBYLUUsmCbWtKmLZezPUVtUDSRVBETVGbYYQ") }, + { XHDR("prow", "VQiYfnceUvbunlutGNdvbhPQRYSKssqlTUHYrZlyJOXPZJIaNaVkdCKOEdUu") }, + { XHDR("ligwkzxeuxrxzav", "rjJmkxdmrKpWKfPjVwcIRFGVwyovNiYgOlhaMyJPHxnBef") }, + { XHDR("crnbvbtacek", "gRkJAhwSHxUqBMQjJBKvOviGJCIWHEdhzjBLAygrKaojNnDOZWuD") }, + { XHDR("gdyswjintgmka", "YqNkWAgYIlDtkDKH") }, + { XHDR("wdopmentr", "GbrpGmiTVWJnkXtOlFdTdr") }, + { XHDR("yjnk", "stLXdaqSdZdtcRffIGzjbpsEuzpzegWoKPJAtgncfiNelxHCe") }, + { XHDR("ihodggswqnnqg", "wAjZKsFLyaxArNvDxlZxjxGCCNCwYtNJrZ") }, + { XHDR("efapav", "OfnMDsatXcFfoLNAebAXgfYOCKIlgImwOsNbNBVYTqHZCZUyxt") }, + { XHDR("smkhxkkdahrkopztlet", "BsVgXMnussvEGUnbtFwWTJxxczGoguupShKwVRJFXrcxFXbjuWENsDDtXatCphUsgNGyuxPh") }, + { XHDR("shmbxvupqidaxjstqd", "UGVHOaDTFhnPbIGBbz") }, + { XHDR("qzkdxgokknocj", "JjQbMfvTOBNQllCJkekpBpwLOLMsbeVhVrPeNpZN") }, + { XHDR("kqznvfugn", "WIthQsRa") }, + { XHDR("irfqsqbashubn", "k") }, + { XHDR("gkit", "pnMvyQoMLAyfFOsyNfwJqfEPrkisRUriLKkuFQMAdJYJvuYuuDxMHB") }, + { XHDR("cfqe", "kWsVkRciFiooojJLoDLXSUVtUHhFmcCn") }, + { XHDR("aiqqgsrjowffsoxiftf", "QNRdeSeL") }, + { XHDR("pqxybzyguwfpyrj", "eLkpwuLGujpojBHvrYfFUgIxoVtPaaTJUmRLIzkYDBjnKLUDWrVdwxqfQRkwZKbsxirrjDdYd") }, + { XHDR("o", "SlUcSBAucascLdzA") }, + { XHDR("ghdbdsqdyuu", "tcphWegMkiROttCUSYCzLrTmAaXWqDrtpfggeRRFbzXQZZINVuli") }, + { XHDR("iiyjgelvyhoz", "EIrrKWhtHWCmescgnalexQdDnWvFFdnwpZlgakKJgoQmPNbTkxDmfISfuChYZlSxA") }, + { XHDR("dgbtgsfqvvzikuky", "qlQQsibAdaCtyxnKQHOeoqNrWrrXmTzGyDRMhxIJDnIjUPrTU") }, + { XHDR("afyelmkhv", "YCRmEaWmULhpDuykNMBgivsMCQllIVQFYgMitnYHUdZQspNBHXguXGCgPmGuvgKOFCb") }, + { XHDR("gn", "HrOcgTMGpMvkvGEGRCyMhvsQNHaYmazcnocCiPgAEJXHxIciOTpHRwuAQtubQHKcElKtHxMYCE") }, + { XHDR("jondpjzyayzkvg", "HAlrYzJSp") }, + { XHDR("wwxningvfxffppnldln", "yQkUBLZiEpxYPyTcFoRZLpRadyLHxRklrWxODWyliwaoPSncUAbTmMQdlldvHNYTttyNplh") }, + { XHDR("syoexdchbafpoqp", "HZVVNyIXrWz") }, + { XHDR("ozajtarlboucdeqcshjw", "HIucmYAlFLijdcAUgLkceIhwQvNeQLXPMuZPhRXVqebwcudXjDXdSxpJMlpbiDvdOiYqPqRyPi") }, + { XHDR("cfqiwzizyhhzr", "gQEPtoLeVttsrhAJVZsJJOOQoFOSoubYbgESNHikFxPYGdqMTxbcfMDNzlXBepGZgs") }, + { XHDR("xylbucneua", "eyZuRsDUglnurqwJKZpTMLzewmoPWnopQMWdRDUVfPGMZBUtLqoeZqeNmLIlAKeZvKhZddQKEOIhjwhj") }, + { XHDR("qwleetqfnhhr", "NytWggGvrypBigDiJdKDsdR") }, + { XHDR("dmpjzakzg", "KO") }, + { XHDR("zzlkkmooqziauso", "RVZWayngxcqrLvSEqGObmJtxOxDfDNGTbhXKeGMVemMQZrPzsDfxujHBcjAmbLkGna") }, + { XHDR("uvfz", "cVtYSskXdFwghCGcxAPmuWaojKnTZepWBsmCRaRLdteGrISJpLQeRyartqhlrtRNmnCxjJUDQRkfXT") }, + { XHDR("kfypamqkddarve", "Uq") }, + { XHDR("ufdykmiuud", "xNvoNNUOYRhTVzphdCCFROWODEscnoOJiDwBKz") }, + { XHDR("kpphmkrpolwr", "IlXyPHQxAkKWGccPQIPUvVxXtuUtJtJPRGURHwchadKblXfGnBt") }, + { XHDR("cjnlflpoh", "pMwDexQuvuWgwWBaFHMhaJsBFYjkiWmqJGTIKpvRoJyiCda") }, + { XHDR("udpwfdirah", "b") }, + { XHDR("fyhxjnjeoiunjbkxfa", "ArBrVscXZpWTuXiMNNWpwMZSoUVrApxDWhmIhJtWfYKAOUvj") }, + { XHDR("mokfciexiuxsanjyfn", "GogKEHWJuBtAiIsqYdJrwWUucKAgwgcVtDwHV") }, + { XHDR("eaukauuxodn", "VDGhXLMzFoESItaEeKiVelhOHWAsXdvilJTMRFaSuKHnbsnrWxEDCUkdLwIzaVxPyn") }, + { XHDR("cy", "waMwzApuVfVIWgRzQr") }, + { XHDR("vccthp", "uMnZTwOvVvkkhXCoKMcnRUebLvwhbtGORuuZnCczwNhTaAMphHeGAoUPSBvMIOgOJdOxauNNpOwNtV") }, + { XHDR("qbdnq", "umtBbqTtLRcXkhCfMUIchDKKGmMgcUEVQELFlcPvsdnxoBwxwmYccNqyoaNUsWVGMKInIUupuCfRG") }, + { XHDR("ihwzbbeoleyfqhul", "eICLBnpMQZMCgNYLmkpagFzQXFXHpCqeLBMGoDxZiAyyzabhTLVYbIJvtviCmXuorUSPlBmKjkbU") }, + { XHDR("ozfuaeylkkxyoasn", "qlFGzJCjcLIyHIbqbgcFiLgRECVBiOmYhmGvfYGfRmSvqHUaTIEge") }, + { XHDR("zzpfkiybm", "VlpTHJeGfLbJdzdporCkUOdbfoHcnxTUxSZHUjkQiPgOELwkMtt") }, + { XHDR("bket", "uxtDOQnxCTPGWIwlWJHnExhstPZSeukHapWmfoum") }, + { XHDR("wasunqw", "ByIifITTYsyiDlbauASELuGhcDQrXLeUdlqignj") }, + { XHDR("ggujzfwmqekxsikfhr", "QdRvYjZXeSQLzAUSAoRjBxHQsJcxtNshbFrQUKmgcprvHwQ") }, + { XHDR("hvwkqefd", "KhNsmeETFlJcEUkTOlDVUKAUQgUYsWifKKNBhOXYWxvuClOYTKhjwndryets") }, + { XHDR("ensrajbijlu", "ctSCKCxYcZOhIbsYKXFLnCseuKtGKXfAtEIDAsbcPMlmiOBtBIcwzwIQZZysLXBLOTJtgWe") }, + { XHDR("o", "vcfTkDeGMfVlSJYIaznDvnyLECzPDrffJjGrjvLqcjWwUHtUTNLfPyQHeutKhr") }, + { XHDR("xyy", "yyWxzPtERBeFqUvfDELFhV") }, + { XHDR("neffc", "WXIkjCZfoEUjmil") }, + { XHDR("phubw", "bmdDYstghuAZoRFzDPHbEJJrBctyXPIABHCEawFDIYcieDoY") }, + { XHDR("vj", "IahfCtWHFBDzovDCBLipUaRqolvQaRkisezNczfqnmcfL") }, + { XHDR("xtsgxb", "NExaNgJCTBcOujGN") }, + { XHDR("nlrjx", "yyqOcosPTRbPchkPIDhskbKbOwZEusNPxnppyqxQmZxIqQEoorbFQpZZeMqeSQaKBWNcnMYj") }, + { XHDR("eu", "BHpavLfcmdCAjUoANIUbbvguNhkQerfsDwocuTQvBIoEfFYntJeFYwqisSzpjvMLeREAfUYX") }, + { XHDR("dvocwbtyxrpyids", "EcEzkWBXaumqUQQjmkgOofittpcATXVTEkwamYxJB") }, + { XHDR("ratutnwchjjl", "IakGzaNrZfpTBJVIPcOMfoHTnCWhwkhOeMWYTKSmRtTBgoOSpqyEreDQq") }, + { XHDR("d", "LMuxuKdjnuZLUPGXQNEUYPjMfSAZklCHipMlwWGQgLCMpOFMUsLpMPLgKfCeTnhI") }, + { XHDR("lvaoz", "WRZQppGgQyGhASeSXMQxQCx") }, + { XHDR("c", "FRaAGRDWRcsRman") }, + { XHDR("omweebylnvwh", "CMZuTFiXnvMPyhJSBDzwV") }, + { XHDR("aqoejntutgauwqhi", "yVPpmusIqGoNZNiOCiFInpltJHpV") }, + { XHDR("yujycxecmypqdojxl", "iJybQnLzRBCEawIwWKccwRzyISBphrlgBOyduuFGQOsxkpBUmpPixAvYhQXTCWcJA") }, + { XHDR("f", "JcztZfIquhWxhjKyVQYyTKqLwKxJBVXSDeFMDgNPVHIpwIVmCotgXwTvnhPAQwoJwPuHZEG") }, + { XHDR("nwyrxnmhe", "GNhAfDx") }, + { XHDR("y", "EbgtPqEHXtxfJethyVrurPalFWOrZufxUHxWrompvVmqRbRVTqQgVUMucOfC") }, + { XHDR("ygqycyhxghlara", "LaYCsGqienqJrWMkBqMhluni") }, + { XHDR("fmsc", "bZSENKUuuWvlaogpfrUQsPXqWffEatODbndHJ") }, + { XHDR("ajzip", "gZnxrwILtMAiUdELpUQoeLhrRptglcpuvGiHBgimAeiHHOt") }, + { XHDR("blyfwfm", "QlyBOYUJjZSgOvkcJDEXCrkBycO") }, + { XHDR("ehlvzdyvwibdhbdw", "sUyMiWZrjJiLR") }, + { XHDR("bhpygkgjhwb", "UEcPGgXtaLLvBfZBihfFk") }, + { XHDR("fmbygnohjflbyecryad", "doGWOGmYTftXTjWsq") }, + { XHDR("jcgptkzruvqdifxk", "nUsTssgZKgJ") }, + { XHDR("gczaoxtvhtopy", "OBDupcLrHMRfVxYYHhixGUmYxjwASxLhVZKLnYQHvlFKZxjHru") }, + { XHDR("liafpcjzfwq", "qkEphImUyJIjFDeGHuyictZHBSFIfWfxDTviemukCeAgC") }, + { XHDR("bmzxoxuabuyeevosa", "rSMMPQigqgiigBhFWNJpvaoyN") }, + { XHDR("obgpvm", "btaZRMsbHPkVACNorlUFOXXfCXwdFazBYOLLbwCxiVUQBZhJFuxyjtdFcyASkkWs") }, + { XHDR("uzoqkfzrasuwqbanphy", "mElfVsGcnLEBsLLRxZdgSpoxoQzJaphjhKAttyXnffoDoIjHhzqRxvfCKTSArklCuRU") }, + { XHDR("y", "KtdXZtIZaTDoBleeShPykdQvdoggEIwpGdCQFCkzHPMtIwfqXYkzjIF") }, + { XHDR("axysvrbejlptkglmld", "cTFiffPGuwWpDBfs") }, + { XHDR("bvyvcvc", "itJqirrhdOOYvT") }, + { XHDR("nkccoupwaezxn", "seiUhaMTfwEXxxZDrBRuBPxCCBwDfFFLicqeWvWQAMTOwVNFRAVENqMlJvvoLFhyrNXI") }, + { XHDR("fswubxct", "SSlILexttxKkf") }, + { XHDR("o", "fDs") }, + { XHDR("rwnafp", "sjsDUfwjCOjNHhAURpsPGwqwPUleHrtveRAXRyTrvCCiR") }, + { XHDR("itsfpecoybf", "lrpJYhjNFTyJuZfJBfBYBDnoWHZstaZj") }, + { XHDR("udeegvlyzbptdizji", "guBqYZKYRJjAXWQsaEjTlXDMTSFawqARNlPCGXBFKkYAzaiUivWPgLu") }, + { XHDR("xj", "MJiJhqAhIqvlWatvKnik") }, + { XHDR("p", "vgibSeupgDWteWNQLuxwDrKCVixQTUyiwdrrWKilEaoyGgK") }, + { XHDR("gmdx", "FbrKtizQpatwovx") }, + { XHDR("tfptbxqlq", "VElXdXGdNxcLuxZTxJUZZYrlvqQZlsjJYTHzwXzXMoWRcfAD") }, + { XHDR("khusdvtinfierjokwejn", "soCdwZNWTf") }, + { XHDR("flxcsdkoggtqbia", "YjYinToDolHaSWBXQvjwiugdThVkGGuVBN") }, + { XHDR("hbdvukaqo", "xLiiOnMBGJXcSDnbaNFFMLaHOItTrPeSPYOHzZdkFOwqejQExcQEcqeogisVSGJaA") }, + { XHDR("mehqgjglcxdluceloijj", "KRIbABdIFuDPZFcGkjoGaYxDYBOfH") }, + { XHDR("sak", "qtvaLkjzOcTKKCC") }, + { XHDR("zftj", "zgIuIdpJhfBcNzzOMyBPMyyVKgjqIHEEnjscKBZjGiuEeJoxKBweto") }, + { XHDR("vdweohlaoeysvm", "JiheScELNizY") }, + { XHDR("wvy", "werATyYvLiayXAqncDTxOoQPZeXwpfPNav") }, + { XHDR("lqkg", "EeMGoyVJkZpXZTUyPSoobQMYUoPbUryJQDGUihnRmdrgpDckNdicluOsU") }, + { XHDR("ergfukrsnseknny", "RgofEpyzhmchBXrqPRkDfBvuexMaPVqkCtbScbtNIhWzYPsMifINBymlFhsfqdeiwjycYLeTSZSARXZS") }, + { XHDR("nucirlrfvdgcaikl", "NdHLLuVYlbnPElKTKTIaAnmuTQmkGYgTFaBtfOHSmFlelwrXbbweyAKtfXKJFXptCeMIrwMvakcn") }, + { XHDR("idruorgn", "iMcewsRPVLZyhWTVhubFMBAhKnOiberfWEDJiNfJfFBWByhPfAnBElj") }, + { XHDR("giitelmfnptobc", "gTXTVtVEPrHYCraNqjqUEf") }, + { XHDR("tgtzqcncmsxxq", "PHpwXqTHNhNhyiyGmDaWGCBUZgwLuROTZaiZxvbLOPVMhmLaZKxPpUChDNhJzBwlOvsdwWhxZtIkc") }, + { XHDR("sfzqq", "YewyaQKkOgOsQzFwwgHwLOGQdEuqZoRdRpcTsYGQBkvZUPGqvLgwzUnak") }, + { XHDR("slqm", "zWNcOQAiJUVhoLVyhwCzbbQzmQzEVXnGH") }, + { XHDR("eontwgqzxubv", "V") }, + { XHDR("ydrhsszixfdcwlkjs", "M") }, + { XHDR("lvurcn", "wYiMiFftdptmPrWxsiLKZHfYTeGYTljMlWIpaK") }, + { XHDR("wpolppathkccq", "PZitrfutJXJALFKFknuVQvnuwrQoyBrYJjEIvrpaFJuVWztGsnwnhFjxgZIZPREQVIJoFoa") }, + { XHDR("f", "GwUArmUgqrBBDwUwFyBcFhGlLInvcnvnTCMzIaQBfVXtDqCiQxptnJPKaogTpLwSCXfVQXqyrFum") }, + { XHDR("sneuekvkvuupx", "NucCQpZOOikyEeHcOxpPkYWr") }, + { XHDR("ygkzi", "pRAEPSZzfvmRUPT") }, + { XHDR("jvnqdpmklsjozpr", "t") }, + { XHDR("fihyxx", "drCnWTpxtyOHBfGmVjMtGJQxcKXkXQjkAKmSSTSrznze") }, + { XHDR("pxkpav", "kbQiasRxHEhXzlA") }, + { XHDR("gqvfhpvgpbheacjfs", "mpaxebzyoibDlGmcgWRMuPBgkjtLHudEwCAgAp") }, + { XHDR("kejsjalgldcjbj", "UULdRNSQgvGNcSPyqLHhOWjrsMEgXOipvgmNhPCLkccgFOBoNYWzkUbxxiHtUKUkun") }, + { XHDR("vihtsrvv", "AKCLGyHgGzRJBIvJCsGmJjCPSoanQGDbrjInrdpebCAFyzmSj") }, + { XHDR("koscxhyjsjsrotg", "GioWmrIzqV") }, + { XHDR("zhsgpuzezs", "qXzPuOPrfQtoCg") }, + { XHDR("wkoufiodrorq", "cfIHzjkTLFxtfjLVpYmiGcEkZIesKMIoXpOnciXBLQbIgFamBCoUdq") }, + { XHDR("aczmur", "dNuxSwFBmjmwm") }, + { XHDR("wfijpbdihg", "mPjQQRRPygGUMwmodfCShecdRFbCvrdCqPGMOyCTtbgVkRJ") }, + { XHDR("hhdcbjlhrqmbrus", "XNwYnDtjoonOlQvYURofygFXKfxstYp") }, + { XHDR("kcqyfgusaodpk", "KnxDFUGbvSWuNWXLHnHpRUZKMLXfvF") }, + { XHDR("slwvdouypllg", "mvXQgcAmwGuFZvF") }, + { XHDR("bqemsbjhhosf", "KZMbUEagOpdcSxEXevWndnR") }, + { XHDR("aeh", "bl") }, + { XHDR("uslnawaqi", "FVSXjXrTFuoPHBdjrQeTsYlGwLwoAeDDeQATDAQqAR") }, + { XHDR("lcclraizryphw", "pjponAcTQJJXIieMBdCfZKHBRKPcVRcdkZrvHYqmIBgprjEIYZvyHq") }, + { XHDR("olpqracqlvkdzc", "dRuDGz") }, + { XHDR("hhj", "cezItQeMjqhpqvkNeEKod") }, + { XHDR("vlrzszoii", "GLsMtqOHCwOb") }, + { XHDR("qmuhjeidbzpf", "LgwDEXMlqjrBGAhFzkwxgqRenYIyBoiAYwEtRJcAUtOpTYXLcRuywdFAnFRwQJQQUvtsMpgFmc") }, + { XHDR("xmdi", "TFRiVQOeyVhN") }, + { XHDR("syrs", "QUpsNHtfvZpBglCEnGgTQQrbbXnOaAgWSfGoILSlLLjWqPTPuGzlIQDpltEaODbwoR") }, + { XHDR("iejpkkptbjvxvn", "COfMKuynXDKPXVkVPvnkIaOptLdorWItTQLBjJXllPzlmxuhLzMlZdKjFkmTYLHXXtgPLgWhJ") }, + { XHDR("n", "vwUIWWEoqsAGidPpJODVKNTVfvgAFJbCULKfLBAfc") }, + { XHDR("ormo", "jnidkRoCLiGzhwvSTjfEXTmKGddSQSzTeQQxrbNBJqn") }, + { XHDR("fghybxzufqno", "OWSabAzrbPoRRCXQqGpMeXMBcillpFR") }, + { XHDR("ekiivpx", "eDqzvgtntClSDoHUuwzrFPXwNgPJHQucqNOAXqIpELv") }, + { XHDR("esziiylmczjjstphjxpd", "fmiecAeSiQVyuFikRAcglV") }, + { XHDR("uyxdwamrdbkrkjdyq", "YlGaNytWxNlJKjexUvbCQKCVoCDeVOlmwZmvMWpsjMQRsxPGRYEJNgi") }, + { XHDR("qbudehfdf", "mWBwEvGDubKsqcqahiLZsUpevWWMSJVGNyHyXIEMWFwQBVpxWclbFZvBuFnlBaXap") }, + { XHDR("scezcymijrzehnz", "akqMpspxsesnFrnEfDVTaSUXRlnTBoMLhur") }, + { XHDR("xljddmkt", "ubdfxLlBidGPzPnweZVRPbvUylVrGcOwOpYsWmDAvjrVFDFfeFThGohvbEWxnqwmNWiMREWPjCP") }, + { XHDR("xfbfgcuzwdbyda", "YnRAilgPxXyPLFvefJyfmWycGfpXnGItYRCMDAiTHUZTbGqgPzBXcJexDCaZdgxhOBmZWgo") }, + { XHDR("j", "QDVbGBJrdixNOuHbahoTYBfbLgCuotdVXMhTOUwFZbRhKqMhRYSVHvJvIVbgoLLdRrqBZlJoxI") }, + { XHDR("tomyzeewg", "hnhANcYfUkWZc") }, + { XHDR("bsjsbr", "TEhMWZQUwqVTgAYtTf") }, + { XHDR("sykagmcfcvmlxparn", "EicKMLZYTIphtaMAPaDvzsrNmr") }, + { XHDR("rqyl", "uOwEpeDuqosrLcrsuTXSUsOjDBPxlUeQqvyzjX") }, + { XHDR("h", "VXGtoJkHChsawMFXAnMWkehrGmYbnOrNZtoZdsSy") }, + { XHDR("tyrfco", "tSzjIfXcxOkBFUyujRDKPtevhHSOPlKqQgshjQ") }, + { XHDR("zknxubkheclkohfj", "drmTtbIZODBCrCmMcIsxFsbZWDoBboFMjlgXgHiGojvrFFMaQYMbcvOfNKCdbbbSPKIheGnyn") }, + { XHDR("gxpulrys", "ActYZVfymmDe") }, + { XHDR("rvz", "DOZhKTNFudyoeQXjWaOdcXFlPJMxdlYJczPvHPoWTBPMAVWmMfpbeSCDP") }, + { XHDR("ikxchgnlsuzs", "ciAXmxINgLIxLbqqOQVixUxySBm") }, + { XHDR("qts", "MaVmMIXfBjubFKYtNahsrDDzDbPjA") }, + { XHDR("bxuqbomwbpbecwe", "MYowVwLjuWOFspRvZGJegTVZEMkKrgyRXg") }, + { XHDR("jwmmw", "TUweIVjYzecEYPQBJlLcqPtphTEJEuHxcveRdndwmPtzwDgFBbQmOsaDxhRXyoKGIoAcesGDvqhwSdcM") }, + { XHDR("xrawmfgjh", "HXJTAlWyTdeLhELzcNeQCtKaHXXgPROgzvWljCWANKAKJcwUHkBbmJDxjAiJJqBADSQFpMh") }, + { XHDR("dhlluldox", "OQpEsBTfh") }, + { XHDR("pbbhizjkfqti", "TrITOqYYmJIUxSaeemJMcQvRyq") }, + { XHDR("uyqoatjn", "bRFd") }, + { XHDR("agidbzjrqanaptbrwzrd", "qzhypSnkSREiwTiSqlKZLAHGXMezqqLWbwFIgpGUftHgPNyRFsXsTQMxYMBFhJLgXBAFjAypOCER") }, + { XHDR("clzsoghjfnwjtgkkj", "wgIScRKwMWrwMOWdIrHvlsRHEOnZzeRmO") }, + { XHDR("gujsmjde", "TRoSCtPjstHGmNtIlzQCPvgnkaUdqkyUwPDaSXmpHBHIEboVpXyFaRKNXthkZuYPncWbEFOpblDpsWxr") }, + { XHDR("eovgiwykifj", "paTWYcTvgTFMMlZEqWWtxPQLzNrYpWbHKjESPgNejwxaeBEpyw") }, + { XHDR("pnemipzdsqfd", "noGIWImHztigZwxvfJugkjEQEfcxGF") }, + { XHDR("nbl", "sNSKhBrdaefHqqaxzkhhjTeHZrloVIwZmVdXGvWXbcvJRrvxPxHayEjwynYFDBzbKgzrFpT") }, + { XHDR("hy", "HVvXSXbrzvRYZwIBKibhJTveNOJSNozjJtuIXVe") }, + { XHDR("ihqbqjptzly", "HVaOuoAoNsSfQO") }, + { XHDR("axgreijtzoc", "eGivXEvuPmhfHQmjgugNBhlEjvMjXqcelJonQjlmmrsOVloByDMyaxfcTNMnAToq") }, + { XHDR("jztgbxxvdv", "wIiWIDYIVPbZZQXAERNahlISBErfBgpMROYAJZcznMROZMuR") }, + { XHDR("deudnltiixencwfogbhr", "VoUvMwzUBMcKkZBBXRlkiLowKWAJQPgEVWZoXJshsLhZLJrcTQtN") }, + { XHDR("xtsrnaqu", "ccOSwTGFUJOevqfLOiHnZ") }, + { XHDR("ognfkwmpsmlohjd", "KoSyeDlLrIutFALIeTFuWyQKcEvTgtsjVMKYAjlpKlj") }, + { XHDR("mq", "ewSXiXzSdHMcqPIAFPmwFWYGoHTqhvzMBFJUKXbyBbx") }, + { XHDR("roawxhpknu", "yFetfNOFUioouXtrnzhtZsjDEzYghRSMZFBYYhSGiVUZyRKrOlrG") }, + { XHDR("cyiowfbrjhrjq", "LDLyHBbzqGPhJqvSgXFJlDyAsAmzzGkHtVm") }, + { XHDR("nzsuninhjtjkdup", "KNpBykoMjiwHyRdpszbwgvcwokpVKCbSfVynvcu") }, + { XHDR("dxuvklpzhcp", "mGtopBhwnKsYcRVbBPkjagqLODuAFWSzTonPADyl") }, + { XHDR("cicz", "fMyjhfHUjiJFQgvziKbKFHGCdUAUKSHkrDJUwGdlBMnXbhVMOrLfcYT") }, + { XHDR("svryfevrewmnttsakms", "AgJsqJUdWvZCpOlpteQsZJkXnfibTJLjqzivwIYUc") }, + { XHDR("ehgyjmtgbslgsqol", "kWTYqzqLnyjTFZMOntYdEptskTgVHyhLHeBpptMNvCXALutxzlZGovFvPNLRxq") }, + { XHDR("oedltyhmkhz", "FKWzxa") }, + { XHDR("utwlxcctch", "AnhtJuCaXdaFfEwfeUrIWkrIQPGrabalEhouVVLZOaMIg") }, + { XHDR("eihyfldhshofhcxtedg", "COiOhfEMHdImdvZZwItJHidOOjduqarHxTwLMd") }, + { XHDR("j", "BvvlZiqvESYeMlEeMlxzlMXLPCkCPYEKbaweLLWkwoKKWobaZpWM") }, + { XHDR("nexnixeilyiadobqn", "qZFykyproNoqBUfOorZbbBJQIhYvVMcSykcgHoaDPjJJmp") }, + { XHDR("qqfodwsglvtnpu", "KRtGtADCWGHKEtYnUOgTPyaXcPMbEmxjAlNWaMHizapglFrEwyyzG") }, + { XHDR("etgjdisujvdn", "WBYdrTQDtHiOlCAhzBYzhnx") }, + { XHDR("rjakcdjluzp", "YcKHuEiPuVizVxDuTXfXuIHQbTaPhhoRToMSMBXNfXsjcENTfSGOQVnvimBQHKhhKWuHrcUFqZ") }, + { XHDR("og", "vIhQnAfGegdFupkqdCcVxdNnAhlvIf") }, + { XHDR("haapofewgzmbain", "EmAdhWKWHrlyYGCJAscFwSVTFrSbeymSTnMhRfakNjzwWkxLqisHXZNDhjOeO") }, + { XHDR("xjggmoqzofjenvgz", "RnyZxCtLtRrKgBjGkinGsneBRNiPjHPVggPJJhlknLTruhhRThvWzsVQAbNryomVsPgIMznr") }, + { XHDR("zklnwcjoccqbwcx", "haTJJtvpfHHjIGctVucGaVnOQFJrIfplOFQForzuOBoVgHrBD") }, + { XHDR("kuqlg", "vsGMDyuaEAUvaaojXgVNsvEbSxYGwOuDuX") }, + { XHDR("jupvjxqacfcvuupp", "lcopibdFovXqxLmPvMoBhGsLSvGieiziaLHqLtcoIFiBaDNSLfEZUraexKixEy") }, + { XHDR("ybjfsjockufwzkpuf", "fesASfUbIfWSzcvFUlZdBYcTtIvuUqCaBkDHeozMCBiLbGo") }, + { XHDR("mvinjspymlpafa", "Kjxd") }, + { XHDR("mopb", "QNWiWsGUoAtRzRqcYiCmKGrAjeeVHvVtApMFOmTZmmrpiwOWXSSCftKYb") }, + { XHDR("enoslcyftztky", "Wo") }, + { XHDR("ks", "GRfaOLKgcKwDArZGTZtIYvDhEbsySQYUoDZJVIrWEOateMTBzRhGhGXuE") }, + { XHDR("ftepaompkavdrkcu", "jNwgTNuYEkaZWSnFDKByCGnlBumKYJrVkHEgSkZnBdYVepuacWRXt") }, + { XHDR("belhzdhkvhs", "gwVeEZTBQWsyxCvnQmvn") }, + { XHDR("tcnqfkl", "IYynoCsnntCEerxXypopDUwqlQnLfKgRbHXWYRdBDpuNywcKPtfa") }, + { XHDR("tkssqcptjaqlwvwjm", "VytGEScYlwDHlGCdI") }, + { XHDR("qptdog", "MPBTFLsEbeWkGwrmKOAoPuUNHQxRILzHfdjkSYo") }, + { XHDR("oijdfb", "IKwkPuykmrPLXDUWfLEOGAqPZbRAjiUHBrydUgKGXU") }, + { XHDR("xffkiparhgdbtiz", "DTzBeDXmpatEeXqjyGOhXeoNmUapEHSCHTOZMFMNQ") }, + { XHDR("hmhjxqsvcixhjig", "zuxcgLhhEguEKYipxmyJdDVopfzcYTOiwwJlXaXmAlNFtvrZRyv") }, + { XHDR("xcuigscjlihydtvp", "AXhFaGupFHrptWzxsrhEfaazdOBwptzRvEXtlFMTishcpNLOIIRkdzZ") }, + { XHDR("txlapymtfvqpmhscy", "lfHwjHPKCrFxBSjwWAbkObfMIlPulYrskDCcRYMaetQstfp") }, + { XHDR("jdofsqee", "YJjnpvxNAdiZzwjiMbKWRcC") }, + { XHDR("tbszqzwxwll", "NDJgqxgyzQNLXZtwJtkTudrlndFcicnOmZjbJJCDuUUHjMpW") }, + { XHDR("vrmhvyftvtrqn", "TghH") }, + { XHDR("gfxhrxoocyakah", "qIrQndAuHPdQieEUuTGEoobUFWuwnKUWnLGrhCVqImIajBkgnvDnaao") }, + { XHDR("ukhcoarcsvk", "JQvcuTRgLQuzua") }, + { XHDR("hrbygtyh", "TaOggCCVMsFVJxWPcXylkefntoAmcDIqmO") }, + { XHDR("gfydleyqkaz", "apjraoHq") }, + { XHDR("ce", "LOmdOcsGJ") }, + { XHDR("fhm", "kTGAQfDhfelpBdFLtyTmuv") }, + { XHDR("vsosdcthb", "sAyLMqOAcgBitJZUghgkVKcgIcEtqKsAg") }, + { XHDR("nq", "XaVMWvMEmGudcdtcQIYsqYHzyiDtmVuGBONgdKglDRvRRKOO") }, + { XHDR("hmtkdaf", "qmWcKOKzQnbdDSSFgGSqoZdkoSiennIoGKeoIHwFGXFLBcuYNWZFEpSkZTUhSqperX") }, + { XHDR("fuckdvgzeyvlkbwiu", "rhHttZoQBTrtTOtAlaqAKMYqoSRqETHrsMFnNHMayCkDhwGcrHqrPGNhjSHJTcfhgZCprfUCGhc") }, + { XHDR("lgc", "tlvceaqBhQPwcmeCqplQYEqnuMI") }, + { XHDR("og", "wuqtUyIowwKktZEZnQBdoLuICQDGcoeKZTGxVNqLFwHCHDimRjgbhnJgWbCCdtSoODVwD") }, + { XHDR("qjccrydlqaksiqr", "vSdwfxvvLPkjEIPpDJfcluGiwIUH") }, + { XHDR("chsmcejfiufvtyrfmroo", "tZvWcvmuSasVsBzqSVzxbAeRcftcKOrKcWvdVmdPWyIMXpmVufXVy") }, + { XHDR("iozsvsw", "CEkWyddGOJfTKKIlmTGlwVszYvvxMRpIYMAmTNTkbJmZYHumRqgDFkPUIZAHTlPlNaR") }, + { XHDR("rvy", "KeDFXvznlJWtgwEAAYifFgLRLlxNZwaCsXgddBOlmSJeVBSOifWoGDTJyDrUONoAnee") }, + { XHDR("kxsskgvrmgvr", "PaqfMyaraUHouuiujccbvzwMcwrXGtVbVBuTHtWQtYt") }, + { XHDR("qab", "hqzrijxGhNxZFnzdlcjMAIqPRknMiwKroZ") }, + { XHDR("ocrh", "FIyMAwKUYqTOJscrYGkOWYAARkoNBONBNYcqJduFahwVzzhnXL") }, + { XHDR("ttwyqdisj", "MtQyjTCWvByYAqvrpyhHClPHDMcnPtNYuYOwwRntEmygTwIOTktQELZnalN") }, + { XHDR("anrqvbwkeysu", "JqgCJOdTPqXrCvZMOcHjeqKHrKznrNMskhGBAIs") }, + { XHDR("mvuurfmpgmcd", "YidrxdEMoyLrCKkmOGfLwqiUvQEtqnPujRoZWivkitVewXAuukieMyZcLfLlWwjuzvczdsmnxlK") }, + { XHDR("rdjfsgnehkfsitemcvth", "uE") }, + { XHDR("vhuwiuspnpckmnbudhy", "ZsxJrZzsprIshINSCmPOGHoyvJsjsZyaUEqlkAwUTPZswbQYGsgmLlSIyzBwLFqzWoxyLyGx") }, + { XHDR("tw", "GsqsOVPHUEuFfynRscKsZXVuLqRcloceQsaRDMdmBTJXL") }, + { XHDR("b", "oMqHZeqofVYrKwQvFPTeQPAgUVHtCwxaJSElmMzxVmzWWTyCStKWOizQmXfG") }, + { XHDR("ymmwgiqfrgdtzn", "qxXGMUFGTMwPkFsFNBDlVsrBaXHeCPgdfvIFuzTAOpxoUltlryCceTDGCtjJegvCbUKFLiBRel") }, + { XHDR("uwkcjvrkkbprvlrkbcg", "ePXlZXCpTwEwbXmacocoDNzaSLVXoDLbAvUHFjPvgbZxGBlBWZMtDHwZwSSMdet") }, + { XHDR("y", "mYMLJEfLDLbdoQCDl") }, + { XHDR("gvjgmqpgd", "oUzcGelHdZSCXgrdzIZhJqRVYqCzWUjclMYLJcfLpunIpmvaClMWNQSsZREIbhowxjjmLsNWfpgU") }, + { XHDR("kwnpar", "NjFeNdbQPDwHsghgspvmvgNCgqyVGUcufAZqLwuIYfZZIr") }, + { XHDR("clzmk", "xMZLUPQdON") }, + { XHDR("ufsxgafjswrj", "jZxvVByjBVtKXSNhznUcnZRoanULRJGkYgXHQXrDxBdvfYTvtHykgQTkWfbMbiZu") }, + { XHDR("devoejuszlnba", "QQSqDLXnYMxTkWhawViGWBkLIvLwAEJylIFzEwCrsMDcgmUpVdYGeJ") }, + { XHDR("znfkve", "TKBbAKbxXgKQtVxnfmoMRCksjXZWLExTcpMTMIxDFVBdXbypmtVFpYLwVPvZArO") }, + { XHDR("fsqrpezslcbjxisyaeny", "DpvTGsQjCrRlPEEjRldlRlXRkFPfNrCQrhSOEgCOLGtLIPJxKQeASEHJBynNkBzZ") }, + { XHDR("jmoixgxy", "RrIbLQtFdvoRuXnvDOAwuXNCBalSBtXoaJOFZkVFCboaycdFWAiV") }, + { XHDR("btdtrpyyqpuzjjk", "f") }, + { XHDR("upbxhvlgi", "S") }, + { XHDR("gfmwylibxhqch", "zKerKBtDtyApNtEdHjMbjJUHtfNjRjzYgWiUomuYWqQFrHFToIcKEhKKy") }, + { XHDR("qjwduerdcgnu", "IpjUrlvTANTsMOMylehHlxwtWDasrLIpoLXyFCwkMQOdSSxdNClEUvpLBsjaglIzPrhUnMtgeIHdvCfs") }, + { XHDR("km", "ZtsxaQJEJChdrkJrsNcBVILQbWeDHEeXNzX") }, + { XHDR("azyhbexzlcnhlsnahxt", "ZKISXFMBohXuLJLmrHPxIxTvkMuOuopFLgjwYMTCdTWEoLQWLZZIUwSkZZvRKUWwgvk") }, + { XHDR("bmonoecocbhajmqjrql", "FZUeNBfjVawlunpwenxSAKkcBFPyrgOWfftY") }, + { XHDR("cwqkulvuozcymvb", "wVdpDLKpAvGPwylripeTGnbkQMTB") }, + { XHDR("ja", "pJBGFpYafyBjKMOaFlXtYePQkSfjLHItSMe") }, + { XHDR("yglfakudfzgnurh", "Uronap") }, + { XHDR("df", "aYVvyBDxlVphcnGFuyphsvWSdLRVTPScfoSPgQMqeDLCeXIQ") }, + { XHDR("p", "dnSwfsgiTkiDcnbqogybPbfqKUfBDoFAInuYQyAckCznTndQptNcDPjgXrFwlhNjSIi") }, + { XHDR("tzqkqzlr", "gkyXpglQsgmPuSRylEAKOhqIDDcpncTZMYFPKSOfpmpKNJKyYYEdmbIPTNEVnStbCDMAe") }, + { XHDR("kumpg", "JPsCMvSncN") }, + { XHDR("dtwyno", "wRrYnOhFGKKEbNtmFTCfKvgmBABdGGzIzTWhudQTJuaUJQPCPDGBCHzOsPCjUIOOXjYriAuWkJKpcIdP") }, + { XHDR("rabyvieftqzaknqk", "LGoNmFuLWTgqcuRuIxHcsBFqQiEUNmxnNwqdGydqrbexKNUrngBMJPwKaFDOaVInb") }, + { XHDR("aahcxc", "SPmFPkORPSruQjdQaNOJmXguLWNEyksfFBKmkEfsEbJwvNCuUaUeIfANk") }, + { XHDR("qjjdldtosvhryc", "LcaMieUkorpBOgNjkLYCFUgVVbnOuBLGONKKSvtWfyVqNwODvdVuYfbmuebbePYBNJuQLFIAgc") }, + { XHDR("wtpovktckcnt", "iEKcgfjExuzwNSfrlYolYyvCSuoQIDbSRcBcCGxjaoeypLsnYmmWUiKooiMsa") }, + { XHDR("rebtusgmxhirbqcj", "dKHIvikndOAdwvNfDasCZuIXAOgN") }, + { XHDR("zhvmbvyiyjr", "vLtKCymmxFEknzMRRGPNOCpZomNnuRe") }, + { XHDR("gp", "VKgHygHxugkHqFSlohoBOBMbMUuhMmEoauRepNANXIYRtbAYRrFdSyVkEqQiSvMTNlIWAhgsX") }, + { XHDR("wngjhtklfepvxhx", "CEddDmjkArkeDbsrxhvB") }, + { XHDR("epyj", "wAvJYkYLWAJHErnqJtjxPucMcXYfvqdzkOIbBgG") }, + { XHDR("qbgylvewxdrtdl", "kOLjDAbjESpDlnsyJNymbNRbDEqBLgVS") }, + { XHDR("zzsaamcleicvh", "OfvirZlqTargVFwVlgXQnAALqrrKUIrLAKb") }, + { XHDR("efbjhapsiexucyxyqg", "zeSKMBWsTfOIqvuRCxK") }, + { XHDR("xlurpcxewjvpvfcdhfl", "MRufRGYeWVvZpRyQOKuBgrTodzxJiUGgsBGliDYUaekd") }, + { XHDR("pov", "DTvhxdOghGlfSmoyQQHYFmdQNZaBXuTkEqznqqVhGNYNGmgaUPrWF") }, + { XHDR("fwnje", "ZEpWzDyiwmpyIkGNWTTXFmDhJkTbVcvnwpNJxTNaHjxLYrKyBCcinV") }, + { XHDR("ikptysyszpakt", "aSjPXINUgkJlocPEflNpGKXgwhBZDRUMLAo") }, + { XHDR("pjkocjceqjzrrm", "sjlFvzHqKBQFvpRrrcbyUhSGbDFfcsSgvLbnCkLUSlumOJkCDKwCjcoyrf") }, + { XHDR("gvrsatunnldsozl", "TgzlfNaLsAxPpMpvBmPmmCthBgFwaEjZUlIouVSLEMOcXHlPVsHB") }, + { XHDR("gljiwewqcp", "HccrBleSwrKMrrIVIzaGGaAAVUGRDUZgW") }, + { XHDR("kjylgenjuvqrhjygqd", "zgnsDsEKDTUOAyfFqDZiSpKLZcZHHjVGqRNlVEtsgFZOJPJh") }, + { XHDR("gcwtz", "QhqgnuDxiCgJldrShMXeVSpsRjClWUeSieVScSBgNYPHhd") }, + { XHDR("d", "BAISaDgCBNKUUemTvVKzxIgZzDvVYWLfIsZM") }, + { XHDR("ciyntloigzulbvyea", "BsQvRxUDwlduAfUxpWiVJ") }, + { XHDR("aajxnccrjkbuiylemwi", "jJFjHDguJCeOVigxskomi") }, + { XHDR("c", "GsFNWRfaimnXFcHI") }, + { XHDR("nafhzvjqswzndxgdoymx", "CHPWmHhSiOZStlwYurBiERjFhkeIbdrHKObVfnJaiROIFkkLsnbVwphcHmjehxCFfCqjT") }, + { XHDR("opdhxkybnezinkvbrir", "eyhPHIHUrVpKLIaIIdThgiCdWNmGuRWUysleAraUqNzovpbtqPe") }, + { XHDR("ikcwmznzuqnnk", "ZXVYqaFOluRmBZ") }, + { XHDR("lpwxvqemelwukekxhs", "EScKTuxYJLtAAhzQxFbjCLFraTKqTcvGfJUcMRGPLZShzyVDuELCRyZDxwBXXMXTtlbGMU") }, + { XHDR("jxua", "WoYDdXsPnclPLYPPIXbKNxuxX") }, + { XHDR("ftoarbpjfzzjoqowwpy", "EKZJjpQCroSltLeOIjGDIAowfAjQRJGvOOGDCTREfKQFddmkjFdzopAZFbWqvHQrNwTiQwNgYUbC") }, + { XHDR("pzo", "EumZLrkBQUg") }, + { XHDR("jfqyrcoszmebkuoxzn", "hlVlngJzNevChmYcyOQSwaJOQnaWDIPOWJY") }, + { XHDR("eeurzfjayyhxaqmru", "RQfzmxrWEscAmqjGMiCJvSbJmRJNgVAXOvdKGTMzqTnJnWGX") }, + { XHDR("tsrcymmxquqwqy", "JJLerwYyeeywKJSRZFXJzYwEJuOoHakclVXEqwCWsSBQhqcErX") }, + { XHDR("fijwgk", "cKKtsowlDwjC") }, + { XHDR("jjfnfyuiyuhm", "GHIwuBGfrugnI") }, + { XHDR("wtqb", "YpoBFpeBPcchMcJxRjzAFimSBKWcsGYbKBoPlxTiQxTWEWdJICTQSbxE") }, + { XHDR("vnivacotefhninwodh", "DJzVI") }, + { XHDR("ncjbgtoxebqr", "dkTUqlNPnPgHxCxAgdQcttAsVqHUtwBSXGRLhuZkjZLOpsUZBwFHijMdvGKPpeaM") }, + { XHDR("kkqsaowldv", "YwvnBqZTvuVZhSnE") }, + { XHDR("vjkf", "TxjwptDeVCaZsIbiabtKNUnQllrnKMYTYZfOUDBsbwiAIPSPQWpmmkUPRtgdZskuRZ") }, + { XHDR("wtbce", "sPMyqAtTHfKnLVsVCwZaKXGquLgWczUnpzWmkhLiwaeklAPnrXuVVLbjvuOCkiYoPv") }, + { XHDR("jmnwmvxtzieicoe", "jzRPfXBtdSRbsCPjuNEttnDioryCmuvJQLRKCnVBlcHNGmeCfiUharBq") }, + { XHDR("syjjjrgltlpn", "vsSnANJ") }, + { XHDR("alzmos", "lYxcSdBObhPqXxwTTEDarLFYG") }, + { XHDR("hs", "nlsJmDvBHdcdqdQwtYCeTBG") }, + { XHDR("wcumrck", "ZBbFlxPrkkCBAmiqaXucOXTqvKLMtHKWBxcTDnemBPNIsVOtGTRYIAakFBlFLMHysOtfGrpYGrLkYZpD") }, + { XHDR("kta", "cPpYeYzXuucaQrTMZBHfyKotpKKcoMqu") }, + { XHDR("wejgkzugqtirktovqp", "HdZxKdiyfSTQvljgSLJNdinrKbDvSqWEUnMSiKmiFGFKhxhzdrKMwGC") }, + { XHDR("yfvzvmdees", "hbJsDSvtvTEHyDFPAXWZnLRsbmCjGyOUfzZgMcjVthxrhRlTQcLaomlnuJbhxDIptl") }, + { XHDR("sjzeffqplzilriqqrdqi", "EIeKMwFNTdojLirFXzHggb") }, + { XHDR("hjewfukfgbr", "qXlQNWes") }, + { XHDR("cobqewnivxi", "SjpCNlgZCdWAllHcfznxvDlruqHbNAvMTlUhiwULaHmOrcJiAcd") }, + { XHDR("njfcjttstskwzpzxz", "ddaqcnYrSSgsEgWZCthwLmxshfNocWdWWDYDVdpnQmvBIgfdsbajMKffkNPCBZxEmlk") }, + { XHDR("mxppgxqtfqegytaznp", "sgqskDodCPezg") }, + { XHDR("uyojaflhhdlpxmfq", "HifoLXymBlhjhNeLDRirVsiSbrIjzGaTWQwIywJKCoh") }, + { XHDR("gsofvovauq", "xkubOsfJrfSDbgTIpdKQUFPfDCtnaxKwacVSURfAJcGCgLcvBnGYJPctssISKvERlVaB") }, + { XHDR("ujg", "mXPSrNPufuXLnfKWUSHt") }, + { XHDR("znvikw", "PxsdpApdCFDHPo") }, + { XHDR("rocfdyea", "mWriqxrQtsCPsfozIoawQAbXiOyAhGAUMehToTcKYLXNRJdvojqPUWwWNsKdctcBZStmKGKed") }, + { XHDR("dcwinhaqtzyutwq", "vKXKrTpGvGwptTKcDNiypOGKLZopjcagBKlbMGSKvIGeuxuWJhfCSZ") }, + { XHDR("fhbizpmzlnqq", "sczLpvuVUqRroXLBicrxMeHBjgkd") }, + { XHDR("xrzondfjklupzwqc", "QLoFOlZayTQJTGiegBdjarzZWWSxNtQaJdDibZuORLXPzrTBIRpCYzpvLg") }, + { XHDR("mwxiqlfdnajitykeq", "xVrtqrebdEkHecICiYBgtpiwfhMvPZkfloRRNrEjkJlURhXgnettd") }, + { XHDR("soeswvpqv", "DOKNQtSOLvnXgLdFobumJFuOlFbrBRFJhdldwMaKWPftYFNsbzKqWBFQIZeTVsVldjaVKkozzFunDCBr") }, + { XHDR("uagpcwsvnxvwdpbhka", "tFWUDSxhmUBoDBympbrgFjRbVjppgpaVasDscyIuQW") }, + { XHDR("wpjahpbsdwbpnmmswz", "OAIrwVaEbcZdqZC") }, + { XHDR("yuimzl", "lGKnuJfEdzCgLqaihemmIsRvMqBWQTKUjdBxHSdRPFwagwLPdiaFPCjVfmosZIIDZMQivRn") }, + { XHDR("cuz", "KLawTYJVGyOwqJPpQboMxHHheFROmuXiJ") }, + { XHDR("ciqiik", "PsyzwPjCEvcxsOzNtRlCkZ") }, + { XHDR("drkjarjuwen", "pjJKmylWrOCVsJqiGjqAudYznIjsiWdXLPrRjsVeooacYdLRSmYDz") }, + { XHDR("wkjtqdsp", "PNzyBxssYlElBRBjuFKdXyNxSMlmEhxLYqYJogZJeBaVwUnXcNjnEHwBEOqplQq") }, + { XHDR("xsxibgsltaminxnkt", "HUWBaAEMastvjqGbpXCqWYFQbX") }, + { XHDR("vwbulfggwbzqyrwgbrc", "JPOoEPLdBKCAtxplv") }, + { XHDR("ww", "LqGHyyZacIYYlzJEtIRyqaKgnUmElrjdadnwZEwZxEVhVaTIvtFRItfrjCvEgw") }, + { XHDR("vwclpmtunkdwhazsujk", "kiYquNfWECxamWj") }, + { XHDR("ty", "hDUuHWHYGCRFuYmzUrqFAy") }, + { XHDR("vppabmuantijeetkrsw", "xuRjIrCLlTXjPccaejEVVLTeSYnXqPeRKBIJOdWiXBWUCrshMrEbMCSpyKTtrWUtOAsJUtyqFq") }, + { XHDR("ijhtpgi", "cNzbXYiCluMDqVYmhRkIqMmYZZIJPhprtyZivPPe") }, + { XHDR("jyamamd", "SlagJhorzmpVWouT") }, + { XHDR("oamugrpmc", "PbeIqfyySyEMHMNwFytumJbqvBp") }, + { XHDR("tvfefuu", "ONseqgzhUXKhZQegfYDUjOimglyJouzEraqqFIlUBJwVuYfdanaYsQtFVKMYROFG") }, + { XHDR("itztp", "SHiJZsTDOhZrIoDKtxByckZcSYzmbIbvmReYazTJlVvzayDSkvV") }, + { XHDR("yjqadzotvntkqnlb", "YiAiuRdMLVsJIeUDNSpiZKUukOfvKIycbCPqyeWfhvVUrHFPoJNO") }, + { XHDR("wezxhnvhkmsndjvgni", "djaRFrJLsOUXVevFFgnfVXDPFdSGlWEnVnTkHHoZcXAtTBqaTlBgyzFy") }, + { XHDR("yemkwklubyikocalz", "CQCYRJkxpQegLcRnILjHTUOwlqjXniyR") }, + { XHDR("eqxvokqlbaydja", "HArzvxVeYkBHOKuQJEVIhnZMQEBxCEIeZNfDSxvgoDSwXhSWFAwwYtbeztDstGTNw") }, + { XHDR("kveyibidhvrovcqn", "yAZQKpFuLceVZjRxRdWsSouxhSDrtUmUdhQaeUimRpgeIbHKWY") }, + { XHDR("rqbxcsfjoovqn", "ruMTcjGuaMZmZTqNbVeVZohnyMdPGEJT") }, + { XHDR("eyfkfmrnymp", "hgKRoiUcPFQutohffOKXjzmFzTnDQejXnhGRBUbHmejLDKQcvQbAQSJvdPsBuZCD") }, + { XHDR("xnlhwofnkygfdpcn", "lFRzieQkyKPhRYXdfrcOVXeZjHLejEnjIiATMDDhNalfZT") }, + { XHDR("bqeaerbqycrgiolaxwq", "jvkWtTeLeNvgxWEPIPeWepEbvqiNUfdzGBksUowmDqLrHxWgJKhsxAVSpOFhw") }, + { XHDR("meemqhkzkogqkkl", "CmGtlVvDBgvVNBYmsGgLDmmLDycQNkQZpthumUWEgQALfpsYLehFsGWsIUlnQznjWtGacmlvFsWXfh") }, + { XHDR("tyz", "ZvNDSmtVUcaktPkPqycJWiEnTMK") }, + { XHDR("zrmilsocrugewrzvcrv", "bLwLqcXLOVAXSJRYbpAeKBfWNrdZPvYykDSebzDDzxWWCdLdlSPuIxPzeCH") }, + { XHDR("cmcbzswnmtwiynj", "SUTdKWJvXdZcxJaMnLfGIvwkhmkElrMPXEohwGpIvPDMxGcUjnsUhEx") }, + { XHDR("az", "ZuRLvlChCEWVNKNlAgpMXynptlaaxF") }, + { XHDR("czb", "XOYhJkKGEjDIdPuHvUncxjqTNPspaapAQWAZdEFOthzKNkzJwFmbbOBNcNxKwYdZ") }, + { XHDR("wfqhcnbkkwzhpw", "eeOCvVFJjgkVBKsEuPVkGMgXcSApHoDWXh") }, + { XHDR("pqzzzuetuzomjufrab", "HZhPatpcfdtBNccwvBxnCKePIzQntL") }, + { XHDR("bzqqeju", "YOwxIfWD") }, + { XHDR("ldcvzebjnevaa", "JXlCimTHMYyhkLoirwUVxRuRiWjaJqeDpooFPcvqL") }, + { XHDR("giquefaygdihxq", "OpfnA") }, + { XHDR("eykffgpcot", "dmiGDSJxcbksAxigChVGk") }, + { XHDR("chgwzbacr", "yhFZSuunftczpQtqmWXyxZSKuZsPVHcfNIOazCESiHeWhwDEvfaDPjPTEnLVEZi") }, + { XHDR("js", "lMzUeZefZbrnyaEQIIFTzMvMzaVqlYuRbfCzUBiumTCnLMGFLcQeZDavqpnHYhfiwifeTOgiRIh") }, + { XHDR("adywtnnjfeekvsa", "sPtnXGQWflgfJROpyFxpoKinyzTluJuJkWoQoIqGnqdLQ") }, + { XHDR("y", "oxgWVZdMmQaosFObCuXanyPSYvOQVgUIPdnFiNpnMupXpfpzrLlouXn") }, + { XHDR("tbdsuauqoqqysxizggu", "keoUhHGrVMJpOFWczApDAtDrUzaaowtSIuyYcoUynvPRvKghvWjEqIZLyvNO") }, + { XHDR("bkywddzvzmzrqjky", "kQTnhKowgchBBuA") }, + { XHDR("esw", "rmRItvvVIJxNmgYHacDuTwL") }, + { XHDR("shykolpwycrbmsrraoe", "qoGwIaUwtW") }, + { XHDR("cvbqb", "IDUVplDIeSNIwsTfwZLbsPQHopIExgrgBBogx") }, + { XHDR("dprfjizllopkkbtrrpdu", "yDdsr") }, + { XHDR("glczqpzoc", "vrbRwkUAHNYQSrYHBzoVdrtdOMhVZdxOofekFiOGHzkEDrjaUFffVuxyZvVaoewdYyvfDpxXNvekjRVL") }, + { XHDR("bgpb", "qqLR") }, + { XHDR("luxrtgqatlgxatrwam", "kOqxViQvBNWUBGDnqkZWhAiVrxo") }, + { XHDR("kmsoagundgfokbizuaa", "KZseNpIyRujSEPausnmqIPnSLZDmllZqGObVGmlvYslgUoOhTrPqeGQFtOQpppqBIsdLwxVkOA") }, + { XHDR("db", "hbtcqmvkyMIrxuHaTBVCcqloqzFsXcnpjwJixLVqiuFiLfRUiJKQEMkCnGwTdLYllVIyVHP") }, + { XHDR("fdwxmlzuvb", "ZrwSLlFItzpzKbJDFlrRqKBiRHdYGyMjkfMuBlAPzsTKFdwFaOsYOQyiNGBeCExnkvWGNAzqEu") }, + { XHDR("gduppbueww", "ZmowwSExrKIfrMBAUHzcodlHUgGgONSLOCzQHgGtVPVxjXDKkpJIZNotYNxJoZdbIkOyvjaXslO") }, + { XHDR("ugldzdc", "fuvOCKySniOEtErHzsrBTwKRFNKwebzVhfVPPz") }, + { XHDR("nufyxzgrvjnolpz", "ZcuIlQKFEcKvlSsXbTaRUupYfnydEKvAWEYBeqTJVqziCQtmMhDeSRMuBpOqfr") }, + { XHDR("grnambeghduwvf", "dOFlWPhnPrxsOiXCIAgpq") }, + { XHDR("t", "SVlBuhmEfwSXOwAxkGBYhRNReTqDUrq") }, + { XHDR("xuiujffs", "AyNzwAEhzVjmXNlkXkfoXCerenksMWKajkFdflfuGb") }, + { XHDR("ekbnki", "pKvWoWINLmxFojnLfJgQjNBCaQyWtR") }, + { XHDR("wsuagkrwlwgh", "ZyDJFPwVYXGAXvykiqzVbWUrozlMJWkNYdGcNIVOwQSwkccGLegzdHZvZjvFinKXVLZc") }, + { XHDR("nwzrcxiwbvujcwev", "dMAevbtuCUWuTFfBMuOfIbOauNPrYqhAGtFtMUREzalLzp") }, + { XHDR("jdhip", "XUhxAbBIrKpIKtcCtqLzmheyUyMQGJcISYoSUGmoJtDzChhDBeqfD") }, + { XHDR("qquwmzpvuxvedkvnjcy", "PhLHCREvsllTzKhGtwxBTeursRtZzkCddSoPkmiMekBrRPL") }, + { XHDR("lnzopnrftbpowpqazj", "LsfynMxFWtIIzTUXenTlSnHELIvsqnfNAUqoajtEHutaqYnFRRfruDwKMhtMDcwydPISAwOK") }, + { XHDR("wkycn", "QaclzwqvLmvUdfmAHMPIUTlIbxsVUzejg") }, + { XHDR("ntftcaolabrzosc", "XCaxruWDMGuokneInnwHtxyzWVAuVolmEQ") }, + { XHDR("csflssydcdyr", "PSYdFeHBVXngTlEUfUfboaFHSXZkDfYlrevHaEldDqUNmQzpfwJzVhnaazEKZLbgbNmdbHBSoVjLL") }, + { XHDR("y", "xGkSPbcuJpvUeskYNYavofvwQbGbOqTYHkJGTrWPHdUOPcKdIceUsrmONliNDwbodukMgdNCY") }, + { XHDR("qklvsmswkueghwstrw", "vPUFMcXyxvjseqDHHafeXJWjEQSquOLvSglgKrmDCerWEpPmYOtldioapVkWwxsuuRbodfmFcaOiv") }, + { XHDR("nkr", "MhvpalRHAhCTpnIyIqtHGVIXDcWLGILd") }, + { XHDR("ttpvcxeiekpb", "pVTYapAKOyYAEmsEwFHg") }, + { XHDR("z", "nnnsQbFhgApcFlQYsGTXjRKEVqRuseEgkEtftNafLEQPpcIpiLKjfWCYZiekTAxF") }, + { XHDR("ogxsabbet", "dhXsFxZqGbQAAnhPnzJcmfyUEnPkAMTYLMuzgbVHIMQdsYJtf") }, + { XHDR("ua", "HtKUXMEJxVbsCqTNsxkUIA") }, + { XHDR("bcdttzu", "xhwFhxdxmlWyWFostPiurJqHxPpSrhnAHnfqfgjpYaGJxmGJvBNNstsxibaGrtFfuSpi") }, + { XHDR("coavaorwwnjkhmafz", "VHMlktQeTRkexOUR") }, + { XHDR("kmngnphzqrwfsdp", "RpmCucncicmgznyWPhtSKYYjTdKLLPYmzqIhIBvCGejbwtkyHIVt") }, + { XHDR("unnhptrbpgwxordqk", "aTyTApfetQJeOtLv") }, + { XHDR("ytgakppsrhlnmbi", "sHaHunzXNyShDtjaZNeNfifDux") }, + { XHDR("wbxloetjjsf", "GLFXTiJYjRhoekFBAimfu") }, + { XHDR("keyemllnokwqtslrk", "WNIzQtLKTBbWLMnquQrdAtwBqkIXtyeeCjjfDLKyaYlN") }, + { XHDR("grdizofxzthwuvta", "AozNfkIpzRSGsayLPGMNKjFSyiAELHDGflmMSyZsmtOPwkvIqOyiZgHdwy") }, + { XHDR("wipqmchdutmozdkuaadf", "xjzKGNdRDrLXCbuCzZFk") }, + { XHDR("jcfjyghlpifzotsasnr", "dWeKVLFUFjRSOpnZHyJhuFBZzzoEcljfxprRBF") }, + { XHDR("sbkuzalyjdmduqj", "kPTHemvRjceUfpdQxxrmpJkKxooTaEEAcQd") }, + { XHDR("tnz", "AOWktqXgCkdwporAsMlqqYkLxiHubTVceIH") }, + { XHDR("hqjedgbngxxhdsgyxj", "Tz") }, + { XHDR("czxjxivy", "kGPLRqjWSZmHfqyviRXvnzV") }, + { XHDR("ycr", "XletSwHlKjAUahPboWjmhIVLmpLmCVtoZDEWizvwA") }, + { XHDR("lnvcbzzzopwt", "NAgtkOJhOlmqkzSnhXBuMjUmtfYURfBCoTCKQANUcbLHXroLZrAmUcZu") }, + { XHDR("nenpebfsapitihvg", "MunAXVNaRxaDIRneChGSqoJPInzhwuQjVskUWEPjxWyllcsFqwznaheYAUzsbKoIGKZ") }, + { XHDR("ruprhlywv", "nuJHImpONbZKCkFeBbDWnJGOtTBrwKho") }, + { XHDR("r", "NVLXI") }, + { XHDR("smudpjkifjhwzoje", "RGgQklEoYaRxImLkzozzOgxpukJivMc") }, + { XHDR("xeozprscjfhswzecsajt", "EdX") }, + { XHDR("tt", "dTVHSSZNjHFQnjRpKSUvSNGziPXGUOmLrEcGrevaffJbTJWkBTP") }, + { XHDR("gfandmqbxom", "hRNwgdoItfIYzjxAszImKEbwmaFNajFgDyIBYppfeFScZdYWTRUKsOhJXytMCyaNMqchpWZKROfVNe") }, + { XHDR("l", "KHeeaLtjdIRaycocbREXsbplRFscXBvcHmQRwYuQQtvjg") }, + { XHDR("dhbw", "UagQlAFyMilxlXkOsDZQRHx") }, + { XHDR("v", "AkdiVqrGbRFGGxhGfwHYmOWcYBVPFXSQLQUGHzBQkndzGbptadEcdpfUd") }, + { XHDR("fxrudz", "pzjGUgYMNFqHsghYlYWZkgtOBRMrqTDEzfPlipvLDtoqApdVuwStYwFfowT") }, + { XHDR("zbcpp", "WshnkVVZTYJXgccfWVKPBouEKDfmVCgKNsiEVbMoRBJQUBuTqNLCHmKmsXHXW") }, + { XHDR("mwkcabdmrlbl", "DSaZmMBhtrzfTsWbmCKgtUchXAxDkhaIvfnQDIXIvJbcUP") }, + { XHDR("boweaijqcwjqlmsw", "RFKclTECJaxiDfZEgk") }, + { XHDR("q", "mfRvHGpeMgONUnwORoTTUfoPEZBEqlGnAnnPFHcEiOwMm") }, + { XHDR("sittgweyuzhgqrr", "DZHMjNscDYOyADkPyVlQCUVfKnPSyUA") }, + { XHDR("wghyyvarydmkxxtuce", "msdPosWMWXHWDXUkAzybWCJedTHFHlhIyodfOojSgkWRssiwNIvlYJRLeWAzEdDty") }, + { XHDR("azxsnwxqmgdmrtcyo", "roZN") }, + { XHDR("latewjydsbuy", "TGCJjltdCVzqmybTNHWKQrBYDuvyamYNtieiuEDWQrkPxhxvPLPCLJRIJRZNlixCfDSFyZganHp") }, + { XHDR("tyiuuqxvweeaj", "INIowBXJG") }, + { XHDR("ecfhuptramdokfyvtxj", "gFncNWzzDqMwIfQeGBraQGfoekfcVSQtHpNKIkdqrPpUeycNQcrsUN") }, + { XHDR("bxsel", "RIphlEQpVrlrxnNHNAMpWdehbnomKNPRaXdUAYiXKuOKFuNLONFkuBRPJJQmjOAxwhRcYXhhowERu") }, + { XHDR("wcjyvtcny", "KuafCgdxWVLratKZImSjYVPhmNYluWcPKPcTivpxmuhvGFNIHDBRLiXGedCfDPKzmivbljhJSScG") }, + { XHDR("xbgazeqgvvsb", "LCfjAipxHNPAF") }, + { XHDR("wxxkdzvwjfv", "KmwdjfCQP") }, + { XHDR("ysebo", "bXCWazWyTlovnpTsVkRwuaoYfp") }, + { XHDR("eyovm", "BRwkOzMSrgRJgFWYNeRvUbLpanwFBnr") }, + { XHDR("nynsmzjzppq", "AEQCqIwXhGAdU") }, + { XHDR("sim", "ypXOuhnCekpbTAY") }, + { XHDR("elp", "qt") }, + { XHDR("cjzdpbwzebgdqv", "bXpcBByLc") }, + { XHDR("rnastcp", "SLyaIjPFckMuEDUDRKxUgSLkBnTWMlDgCsEWmSljntYRcoS") }, + { XHDR("anuevan", "sYBCrvsRVbhrPReenyoPdKQ") }, + { XHDR("uuryykpytram", "TrjNTdXJdFfCecNmB") }, + { XHDR("kujpzzlyuwwhbdbs", "KAAHhbDmBHoETtdwdWvMnfKAgkwwtEZTBxfxOoxveEDNMlxJ") }, + { XHDR("dlsbcvjqka", "lNkwDbNYNlhpcmjtvnAIPMeQUdtdQVpOpJYqMobiskFSCSBFFlIqpGipilszXwhkYNulxCdJxWBtj") }, + { XHDR("gznllexr", "vbVWYgSQYgHsqqYoDpwNVBjVuWkVovmTsoMvqtPIptNYRFxnvm") }, + { XHDR("rv", "LmFQnruMNzDmWABeCdXhmDWAUMaIeKSQkeIoxmZHoYBsrNweFxBKQNXtOI") }, + { XHDR("cxyfppmz", "e") }, + { XHDR("zkxucwpzv", "VsEnjahuOniXzQdKpwRteyqSYPNZifyqLyL") }, + { XHDR("e", "IyboOCwIsjlsfUGqEUEDfKGBgPnIjhQnYErq") }, + { XHDR("rnamgtukmyhs", "KXxFyqVyOOHXDsGkYiOJSYDmEUoUvFJanXPmxaOaFHvJirCnwjHzUxCAuvm") }, + { XHDR("rgqd", "CzgwJQPBSSOGcwkSanOEgyKoeqelsgtaUGKChZmfGqHjmPyqaHHFmWWX") }, + { XHDR("glmpokprsiywr", "xycNYUjnPgnwJzbCJsgydGBGSACIYBfmRaODmOZDgAjXRxdEftdDicTAVREFmKdlLEvCypuzxAux") }, + { XHDR("auihvqwk", "JDxLubiQmFOUdaYFVZMDRcZbFvjevILMNFZSBfkhG") }, + { XHDR("fx", "jzafJUoGargrllyZNI") }, + { XHDR("nualclzcweui", "XmEYoMvZpNChFtCuAEvuJpqnKxHyNZUXZYfoWOmqiUqQYxLUKLqBwdoUCs") }, + { XHDR("fgnuwvpoqmkat", "KunOKnickrqfkHKfqEbuSwiXPhrBQTwBXbuoKMDRgqxsAfrAiiSYG") }, + { XHDR("zrsqr", "UlFdaoSsxiguxuWJBWlKzMEynVnnBEefptdnPiadcZZhgPnCLkkPckEgNJKvJZCj") }, + { XHDR("ywbufpiabltcfn", "bhjTFoVyuPkdjzUYhenlnWNnXoVulimhedfjBM") }, + { XHDR("svfbvrzpuqjcjv", "MWXau") }, + { XHDR("xxetsyhbzfzgb", "AHyyUNXkUzgAPuluWcPpKocZ") }, + { XHDR("kcixw", "PlCCbUbfIpGtleiErJzIstrFqjDeVEkdALCfRPsxAcbTTzsjnMvfaGM") }, + { XHDR("kwwrn", "RXiUrkwqCVaNTSruT") }, + { XHDR("mrgguyhtctsadhxqh", "oCeFXkGyIEPNvfhKVzTEaysbgTfEsNpiiRpNiYlECOiNDwTTMpKlKiwhVo") }, + { XHDR("jsoma", "OAPAvvqocoRDXoGRQgXpwldUnSZYUVhIObQrTZFOXYxq") }, + { XHDR("ueylzwlsqmc", "TjjvZCJBmKogzlomg") }, + { XHDR("ne", "QdiZqkmHaKNyWNDmfWajjVAIMiyCXUClJcPrvOazWbJYtbeEVrGpgOLozrZMgUqOrnSejjzKLnRUryvp") }, + { XHDR("hvxfdlrhukkiogisy", "uZTECnnvjGSyJyBIhhUuaGmWqsAIGElBpTHxlqrHy") }, + { XHDR("bflbjvaoqaobuahslsu", "PaNIvDGlaqMBywgSrUprlmihmFbywMyfzKI") }, + { XHDR("cxyqsjuhiyhigm", "uyIqvpAM") }, + { XHDR("xjdusxbbre", "oNfPNfXZkmpqbOogxwWNwfQ") }, + { XHDR("lw", "JwCeYbVBZggLGDrgYLFtEFPLdJJmghYjeWStDKFoVb") }, + { XHDR("mszevapxc", "owSTEGlKVppOYnkWnLyYcxECTAEtuAKymZKCrCQHMOaRpNoSWDASAMDPtHoytVLbcwqqdN") }, + { XHDR("uidcojdcyygrvjc", "gvcRdkJeDmcvUFnWCrG") }, + { XHDR("hajxssmfrt", "qLlvFIGybuJqtYAomUPZJqBFwJtcRVNyeZBAOOxQlUCkUPZeKIIbWWVCrVlFyHBBwKNIGwbouxHjInRx") }, + { XHDR("nbvqcgnwcqsleptext", "c") }, + { XHDR("aqmkqmpuohmsktfbevrq", "MZAbmfQZMjhotTrfaaUASTXcjuiBRLKRBCatkZePYBBI") }, + { XHDR("hjlciv", "yzKVstEJSkRXfIAdyfxBYYcqlJhEFwgRusEcVnlXPxMVLvilDzWeI") }, + { XHDR("pqudh", "PqGPtPvrFzwUlOZDUaRKMbFqDzWybfpFToVKDOHEqgZMKaQdhpXvjeMIkjEYDAENRPrnLKYaoPuSC") }, + { XHDR("smimlo", "FpFEgeRwJmLmHIxdWJXDOuINCIrErqxKjVOCMkNsjyQBdGBryGxSPluIkt") }, + { XHDR("vjjatt", "ioEyUtFnPqaYaAkb") }, + { XHDR("hmga", "QkMRpGofgySGhQZznRhXRTEHvRhnvmUNSb") }, + { XHDR("cb", "nmzwQFEislrJCYnMnzWcHJzcZkuVXCXZLJmImHkKNXeokZUsimsrmPsSnVWDYxc") }, + { XHDR("jweeeebnfek", "jtNDNTeQOLVYPXhIcgUYiaYQYwuPLYzbCoCgFSwjzwLdqVVakLROojRvoQeGwFuFD") }, + { XHDR("mfqqohwvdknyb", "EhyxDuzwRifiykfgSodkQComrlOultcfBcaclGeKENZyZFEDtrxIFdaUMoDQJgJgYNcR") }, + { XHDR("xhrofquqswvbcf", "CakQxgdVwXsfRZeihNnyIsiwqywQFHbVFZQ") }, + { XHDR("kyqtcruybztyquglh", "sTFHPUIpTEYsQHoYNNHcZVNGkaheMIpnvterADtxO") }, + { XHDR("tpdhlxstlizdw", "TWQBCIQXdLkqgGiwgztVU") }, + { XHDR("iijiyvrigtsjebfwvehj", "QV") }, + { XHDR("ob", "vOWSmhNefdwLcbeBOBgvfkxQKOuwdJubdozpYOKFTuGGLOLoPJoyorsZMQQIIXEUamGZfdQLETNYD") }, + { XHDR("kpbqt", "QaVnRhxndBESuEKxCXWBjLPpMNQu") }, + { XHDR("qbpipamumnis", "IldTIGQgQKahcyjlcETqTnJbHNVppThqYrfnJOdYzOuCLjznuOJEFyeEsZaGRNXPTOJMqWdTjNK") }, + { XHDR("mzbycejl", "gFFfwSLZs") }, + { XHDR("vftzzejhek", "WCrfOXItybVNZRJuEsPODDCITHYfouNOSEEiXOkGbHlMyIxyhSeNfLlfdlM") }, + { XHDR("pxx", "JoXuOLWEQasGrVKmVNIaDSqWApSMMyVNfcNNeXFlcLRnFgBCOPjO") }, + { XHDR("zcpzcscqhehya", "VLdQMTUJyCckGojYPhQVEsIffQiQWhltEYZDhEqXtqAbMmuEvNYLOdUJcKixXMCixhRAB") }, + { XHDR("lz", "qzGOxlgfdJBMuIdVBFlpQTVERhfO") }, + { XHDR("zwpmutrru", "fxdfLnTWErULGBZeqciEdydcffuhaHfYGqYhazcRnv") }, + { XHDR("q", "sCcRhzaIUYMXkod") }, + { XHDR("rnwiwhsuo", "TeWpMubUBfFJOQfYewR") }, + { XHDR("plt", "OlVDrigCaOvhjQQpkBKozHqhYzZzpZpjqloZWBAFHdDmFmrijVUUigZxitWIEOCIoFgujhF") }, + { XHDR("fqzgnv", "AKmgBSsgOnzFkyajUamZYQbXzmKgZFjAnLGaaEIZagBCwqLRSghOYxhqucDm") }, + { XHDR("hyhnnfog", "bJFgGmFUsATcqnRjQoCpxFW") }, + { XHDR("hpewulmwjf", "ZNYiDITzviZIidrZnfwWoNhleyLnJwipspascbgTkccqBIettozWbytNfSvDGNrkXJwkBMU") }, + { XHDR("lakhlok", "YyoogdYsxlQfUeHJEqmRzMKtoUTRPTPQoRyCEFSlOHhlHMNeEFeYKutj") }, + { XHDR("pvgivkuiiihbfrkenbqo", "EljbkVdIYuUXDlasDzLhmVrQiwSnBrcQjCqGiIFoPjmvbnSYXnoGyNeTmLYOrcPqwJru") }, + { XHDR("ovvuxunwcwfcsoqx", "oczGhxFtcGmficEnVpFXWpGcFGJIsivEUZzpbYbHhxCiuJMwarv") }, + { XHDR("vitn", "TYLMERkUExcfZhTkgQkLXBMKfnwUqMcSJQVjiZ") }, + { XHDR("onmcjqajkrlxcbyxbxky", "FFFnNZFVTpePalQgVySDYWwrgDCbKQBEroeqhaDJZWxtTEcDAHIEnHwnItjlfPWrSMeDsdhZZyLM") }, + { XHDR("ugpzbiellfiqs", "LrDwpmVNZLOwUlCHGFepFFznrLAalTfjSlmOnOFeuhYxdJZlSVkytrenzBNFgQvZwGWRXZGwQ") }, + { XHDR("vacml", "uKjWix") }, + { XHDR("yitqsnsryqf", "YaFTInJMQuJvvjEizBkHMBHzsxImLYWIIPiHBmjeLJaQnKliDSlCpIO") }, + { XHDR("oushiiloxgslozcwpvon", "rwyyWjUxRvjmpZaHOgqSMACejTtletaNpOuTYDkEzXzujnZrL") }, + { XHDR("fpb", "nCoeVzqiBzCMKzpwZrYZMMaRsCQpVBDSJssulffSSwlcqNAgBZtVwnPFOIacQHe") }, + { XHDR("minlxiqocvvwgrjppf", "IiPtAuODbQsHtPaFfi") }, + { XHDR("ccljrjmohttymwnsu", "UfLRJwzxDowIvyNZEKQmMtcABRYWYSxdwysMchNRU") }, + { XHDR("ttgfhz", "glJeOWBnZFHsIGbBhJHqAmMpYbCWssOMDMZiBQuCAVQbrUpXeUpEK") }, + { XHDR("xvevlgt", "qEMZXIccaHVbuNsOVBvJPXbzotewUWt") }, + { XHDR("hhkpjlhkuh", "uBBgvMThdbfcLuJGBzKqlyOYythknHNYCgFJyIkzNOmuJdNjdHQJbsyqdfsmvglQEqrvzlY") }, + { XHDR("jzg", "Q") }, + { XHDR("wfsuaxepkmhcp", "iBalIlCmlgAdXCYQXZFqKnSQ") }, + { XHDR("ezwjd", "DUhlymDyQqpHKvXsecKqzjUvaICqAfBmWEOHSkIGlZFpnmYObAmRtYANXm") }, + { XHDR("bxaojj", "eEtTjUJeoVscgEavFlc") }, + { XHDR("wymxg", "iDVFl") }, + { XHDR("omyulqcvcm", "GHnpyiSJSFnuMEvTONQgITzwigBMvnHWESdhTOuNmcCdFtMAorfZhuAkUih") }, + { XHDR("cgdltlhrohycslvpxez", "SpeP") }, + { XHDR("yxfvcsc", "BZJHvYIbhJlTNtwOMKwbjYFFlY") }, + { XHDR("zdk", "tnvNmZqtLBUxAQMnfRHc") }, + { XHDR("qcanzaqevhxnicfde", "VV") }, + { XHDR("fxtvkjgfmqin", "qucttfPjeNNJNdQOMVSHlSfK") }, + { XHDR("iworxqwu", "qnnqHhsslvCHJJglzaqNsDdiC") }, + { XHDR("iyfbxrifkddxholtu", "zEdF") }, + { XHDR("tsruanbplbemqugnlriq", "stemDAFiIGTyHqFdoOpmMRlfEnCcTWvVlNlfOeuHSttcvTbDWrTnELUNepakkYFwgJKToISftwrUPPU") }, + { XHDR("pnpuhokivcadejssvnxa", "xButwFrsrFFyKfPuYnVsSmVxEXQJzMbyXARgyCVlOzcYdImg") }, + { XHDR("gwjsckvghdm", "Cd") }, + { XHDR("wksltjhi", "jaPGtJYLx") }, + { XHDR("gntjzgy", "zKCVuQqxMhUO") }, + { XHDR("g", "ZxzCPEYLfbEeccSUdltlofjANZdNAOoIfxKmobuDRZdtfKOxIeA") }, + { XHDR("ewdufxt", "GNPjANosOQHUwMvlBxFQFkkfGbKcEk") }, + { XHDR("vhaz", "ZdkRnIdZYmNyFUBlcRcB") }, + { XHDR("uqbbxqmam", "dhlgzsLhbiTRYFTQQpIFSCTtvufcbQMGJOzqcdwYozFEPUtIFrdtrYpVKmuQjTagUW") }, + { XHDR("tfundgyahinllxvfalzr", "iCOMceaGMcYBOzSnqKYYDRcgG") }, + { XHDR("iktlweqyqrv", "pMyJqSAOhmdKOcYqCoIzqjigBCnBlPpLX") }, + { XHDR("dlkzgywynx", "ySJFjoutNuavXCoCnSMqQrhpPeUqwJLtixeBqUHZw") }, + { XHDR("nae", "qGnNUBMhoKIffuhrrKGdAKmpRiPvWqySkRhnufUtJMLYyoiSSGijvWMLQNSwOIELUTPPmsRexFjZts") }, + { XHDR("vyxwgxeurqqbxp", "vaVDZsxUcphryrImQqArjoMkzOqvYhkPUydnp") }, + { XHDR("yptliymbkfzzu", "rBCCExPzpoKbfpZraXIMTJTZp") }, + { XHDR("pmiemzfgezxhhj", "NjwvFCyGftCojnItsgZwxUcDFZOfrDdRau") }, + { XHDR("ntoxnri", "HhfCfuinqAaFPjQaXLmmSENRbunTFPxODeNNLZsxksxogkmhg") }, + { XHDR("yiplwmlrsnyy", "nRHCKVTBDUYWNKcmcRareKgmWFuTankAYAJHuyYBiaaqNrzHxGG") }, + { XHDR("qdgbvp", "gDXpHVPslbNDsMPQqHnejrlBjqrU") }, + { XHDR("yugntrcxvu", "bjlLHVQggNDWDoQcLmmUQvixAMKzkrJuAAJuePpbdsdpofKLq") }, + { XHDR("tbtdovvh", "zPmftYVOJvu") }, + { XHDR("rlvysit", "pqrmmVyYXQjQtcNKgDhZFleHQGPvrLXPYreqrAjvyawqlOQO") }, + { XHDR("ldoshrhuevqlgmajjsqc", "ZnXYdmuTADzURRCisbsgdIegbpIPO") }, + { XHDR("jzlloqro", "DugmkOuUnIhfcQLEpLxDmTH") }, + { XHDR("zpwhadgzmloh", "AWWlZDJZjbORoProsGkQKTGqBVwMlBhexLhQ") }, + { XHDR("zclrgxhpcfocpdfipi", "xcpAyKxkEKmYDNTFbweoYrkSSWD") }, + { XHDR("fvgplvmlpjssvdcnk", "uWzjhtPIoaNpBmWcroQdUHnBuGFxxLLeGrxPLNIFUMfcIBKuutBAUQVW") }, + { XHDR("firbngxlcyvxqo", "jFsHdGUsnYQLeyrWnedZXraSPOOtaqhdxjKOXWwgSzJjmpz") }, + { XHDR("qxcr", "lztQLDNIMlbwbASCBbZloFJqLmPntIsMq") }, + { XHDR("bpzdaandc", "GmGWttdVUdyFenxicSfAjfbelNk") }, + { XHDR("v", "gqGrWqqxuqfiuuZXvXrFTRbNdoJeLGqfcXfMJgpxDvIRGIBmPctLPvaarMqykbbPAPcl") }, + { XHDR("k", "FREZsusazQAqtzarxFvlqyeQJFoVuJobQSTpktGodqJBAfaYl") }, + { XHDR("a", "yJFzPZvwGqQIiBgZsZKxgleKzkKnIjSUGeLlfLZxzsTUcTOnXpGGfmKat") }, + { XHDR("xekgibixxaht", "bmOmktRxWncNJwIBQMXjjBdbWOhVyrSIzJdXFuegNjifdSmGJUNRdHmzdjF") }, + { XHDR("kxu", "VnBTtwTjMWnrVYeoWFFcaJJdAREooqhsxtDbQw") }, + { XHDR("uprlxcyssbuujsj", "YOQUxDul") }, + { XHDR("aqdwottlgvikwudhql", "SPfvpN") }, + { XHDR("gnmwzib", "nubWmiWnlpFfacSCPKyYuYPWOYxYiNEOkuszDlYRcBwibQBrHeyetVbLcpwhDK") }, + { XHDR("rchvrtqbziajrc", "gUamVKmXyPrYMMUypSzpEHKwAZtHpzGoSzosYGBV") }, + { XHDR("raulwkwt", "CducCLavHHSElpQDofXFJBzhRwgwZbxYdXbIuROmstyiYdNpeQxReuqChdMxiiPtazSmsfGXlSqYP") }, + { XHDR("ffvsspquoqwcvwzqm", "NRLGDRQegGsImkGmSSSReTOKLysPkzBClIvxHkDlqMbFSAQsOpxcEZhusLCEKuUIgLRIyYHoDYsG") }, + { XHDR("cesbnnpev", "KBaNVFRPP") }, + { XHDR("orpppqtssfb", "nrBvRBvreWcl") }, + { XHDR("gnocdvkyqvuzx", "odLlcopaznrboWcIVmusYOnZGbThlpxDgvWpZgtwytyjyhvgdcGvdHGBO") }, + { XHDR("tvxnverichjqe", "tpIWQHzvbNZnQtCCzWxiyxcDuawPiCEbsLmSAwaMGTVMH") }, + { XHDR("wmjgjwehsbtnzwyitkss", "rwnxKfIrbzPTbvl") }, + { XHDR("lxlwdmzwwxojrnabpkc", "EWEAlemDPYoNFxADGWCEHPrYpIelSurQFOnlCCwWluCbVrgokUVFvTZILNkbexp") }, + { XHDR("xbp", "ByoevjmtmpDxxqzHFalwTnNwaKTjlVZDviddkJDEWXz") }, + { XHDR("wfbhujthrnv", "FjwlvsDWPCTMfvejvhtBlaJvCFPNcvMNRyDCFuLZAcrHXKYlpzztyRXFVC") }, + { XHDR("m", "YOYbnuhcgx") }, + { XHDR("jmkuyjuuslhiavrrmb", "gRicdJGksXyjuSozOZfIgsNccYVjMmgUGp") }, + { XHDR("teiibfrrjrr", "WknIjksZLgJiVSjZIkOnzlkJuLYeJYKNvhpeukwXoMinR") }, + { XHDR("xrygathxmlqdnhn", "SGWWpNEDIijWWaMwQiUZdWJcKVEUJGfwOFRkHduwmKfsl") }, + { XHDR("fadgushqnjplqhfmzd", "udXapEgoDmkPVzBZmqZVUDGGJgfmScuVYMCVzwyxkWGyPhIKUKIxOSCqgIfnmIUAgAdtTQaBOrqx") }, + { XHDR("gqbzukkev", "tcTvifwfUdmFW") }, + { XHDR("ydhhtkrqnybwuzyhzuo", "fGT") }, + { XHDR("xjdmpoefmenkwhaqo", "kiZSzkgwsIOhNIevvuzAtuZnYWafHarfeSLVLgfzZCwedzniHhFLasjZjouEZOadgT") }, + { XHDR("y", "uKunUViOFQWCsTpXb") }, + { XHDR("rbbn", "JqEvhSQfmqjEoKwDoHOUBgLrEkyEdsUkJLwJhPtEewsXDgHSuCA") }, + { XHDR("wdlxsuakjqsu", "tPXfJoJgeZXCVHUv") }, + { XHDR("vnyagwkqloe", "WJKdRqjpZNYUXNvweVsbNcYKozTXRlRUENlUznrcsIHkDWMFYoiYYPvZIOImpwfKn") }, + { XHDR("ugrzwanasz", "OCvPMtPxfnliiwNtJszVleBTOeLAbPYXDcsuiBGWtApgKHySsPW") }, + { XHDR("rasjzdwk", "whupLsPRX") }, + { XHDR("zcwenmiynagl", "kZpmuZWknFCAlrKjrEezLtSDUsAiKbvtNofRvGVWSIwRkfAJIeeCAZwiiRVgoSyEZ") }, + { XHDR("tnewwafgzzqd", "iqIEYdVYyRayqvkHERFgdkqLjYbuEEiOg") }, + { XHDR("bwkifvsogb", "zFEOtXkaLrQDeIrRvZbpbBNLlZSvVRfGPRYXZHURVPlhXjWOBKDD") }, + { XHDR("kwpnoplmnogigysa", "whGHGUIWwlQMRAEZNbgIFoRkTnfRQpmTYlaarQGJondfSkGrHjVsOxmGbWM") }, + { XHDR("ntopbrqiskml", "ydRdNyLznJGnCxVfkFauYw") }, + { XHDR("hjahhquh", "TFTGgyoFoZWlhvDXdsAtZTXGcYgfjOyGWXCLxSnndQTmYQTxnOJsOWZmSMpekOmZosAv") }, + { XHDR("wghbmcauhreonwlfb", "XgvMMFXylARAu") }, + { XHDR("uceqlbtvrjarpwedb", "PenNwCJXAPivnXigHSyVlERqHj") }, + { XHDR("nzlume", "IUmzYZrCebOeFHfOV") }, + { XHDR("nibgvseknnewtwzxaat", "xJFqKedOcAAkpaKjdcRORSFYuIKJncSZVmNtvgQfnybgENQasjvAImbmXspoVzkLLylLngsWKAwGmyAu") }, + { XHDR("rxeipsaqtm", "lYxhOkAxIfOzwPaHLfSkLVKdazHpAczSqlQqAMdJWHppfCTkPaAURTvlOBZtTIRHbICGyjOPWaF") }, + { XHDR("gppugsqczz", "KlhC") }, + { XHDR("dzuokszybazk", "IusRNoi") }, + { XHDR("kuqlydghxn", "LVRajOZixngJmsKiBGdJIowrdfZGOrBGcbYRMOwHX") }, + { XHDR("nbahtomaeurszgrkxqou", "NnpnVghkoydcBRsLaJgeFJzGwm") }, + { XHDR("gsulvgkwocgvndqt", "GngzVzMYHEvzPZFaPJ") }, + { XHDR("juqszqfromu", "NFrmbNhJMNhTSAhwnZykmHvugszWNZTgPxlxIbykfpeXyApNBVzVoJNukSDARHtXwTPStSraRJZYlClI") }, + { XHDR("itezv", "igJUPJDDDIuIhDICrBxitAVrpgER") }, + { XHDR("hxdgifheud", "BForwFU") }, + { XHDR("nxivzkobfx", "MGwQwjMGnWSXGogLNCGRhoELqgjGwn") }, + { XHDR("rwwdcc", "agXErbUjSbRLZCUMmFWoxijQdgoVVVmUkplBEnYmiQBTjeFhuBEFXzrlKsCZFutAmYWMevFW") }, + { XHDR("tpubbcwwfnuiqm", "PcBQzNXxASPzkQgUFWyLsFzEyWC") }, + { XHDR("updjnhjsuxedaeeqgx", "yKrcgbVUSnnRTTusMYHtMjPfQcyQQzkSkZqvIvMazOIDRXfuaMqRpEGrkzFKQ") }, + { XHDR("unfjwvqk", "cgXptMQCJIAWMjvdgnAFGpLpVLByDpjIHYRAtgvEimUTEQFFceKKJDXNYTnEoKWJVuXBrRKlkgYsaA") }, + { XHDR("rubbcvfj", "djzIavRl") }, + { XHDR("kpp", "WYvudqKxIIttcTpfyHPYAIrdiosTcTUbHgTIhSGXPNby") }, + { XHDR("cfeisuzhliyrkkg", "joPBfxqDMkTpqMTzIBbZcLWTgqLkbtCXWKfAGqCZfIIVDW") }, + { XHDR("bbxxt", "DPrhgPopMwnNkKrOUTGWeyVUMemWFHXXxGifHbmadWqxXyNfIXSM") }, + { XHDR("bzxeajjgixztobkaw", "sabdQFNiDxsJlKTaysdctqDqOAGvBcCUtgILMGwbNOOIWqTghNHkoCYOYhRnbOJdYeJyFVXIkMkLW") }, + { XHDR("elgjtihvmrdued", "E") }, + { XHDR("wsddfafvx", "OsomdBZWyPzvn") }, + { XHDR("jbskcte", "oXmrjtKUdeelBuFuMvLauaFGvLhMSTDJiN") }, + { XHDR("dodzofw", "YQYEcrRmuqMaEJfXHcfRJRindUtTnjmzNlWyTSREM") }, + { XHDR("wgdfkvja", "HPQhZzFRHYXHKZpckZiJmnFpVKTVRgRKArG") }, + { XHDR("r", "ocUhHyKxWoJHlKEAdnW") }, + { XHDR("iu", "dgdnsbDAUWjYtYSfazX") }, + { XHDR("udbgwguuryydn", "MUDvnttizrXtOUaUjPlhiEpGvivUoeuSFuaZnMfuCMvrSqsgVBZPzNjZmBJKKlSOcSojVpvc") }, + { XHDR("tqzk", "pGmxcHddUBTkTkDgDFTsPLIfrcpLQluwQivJpisyFIjbuoIVYcelAXEshRLbHxGNMyb") }, + { XHDR("eineyyw", "sCBtUegaFVu") }, + { XHDR("dcp", "LITICyXfZEgMxAYzVNvcTifZIHWwQLxWfZjTSpwETmmponVQVSA") }, + { XHDR("r", "wkTeqmmOYzSYgEwLYARkozSTKwCeDevevZMtvNPzxzWVsCiDozuerm") }, + { XHDR("bdl", "HYBWtvtIOYPibUHRjyOvygdecvkqovAsHikMoREgSnjKXCyiHThnCjgQNV") }, + { XHDR("ipeaqxx", "oUECPohxaPDvWfXGoCNwympntHPCyLnfNKFJmcMCSIhvZdmsg") }, + { XHDR("letdtqkdxdklxhtjw", "woLJXYQsVpTwHMHTBmYyzHcPWiMmWYuhSmMtXXubmOavPbuNMZHN") }, + { XHDR("fxgsqfdxsskhudlcqy", "hzFLiDUSkIlditXAEnx") }, + { XHDR("qclr", "iqSbaMOmBgDkUeNlyBfOpUhwgkUxuc") }, + { XHDR("fztzsisdh", "ETbxqGAenNqouAmYylaNJtowVVJADHJaEOivZenuMLpAcOcuOXzVmBtTCuQolkPvGXFhPt") }, + { XHDR("geyprxnopuobzsu", "sxOxkfodPtJUxo") }, + { XHDR("rherxjtykdjlsqqxbnui", "ZLUaftLBpcoKevebluTgXhzMQKuGMUCAYLlcEDQy") }, + { XHDR("xxzjaugsh", "YbjUdRMoSycDlfAbgllf") }, + { XHDR("ghkhjfzxnqavybniz", "UzlYkKarBuMOeOnZzOnXjoMsHh") }, + { XHDR("yuxyrn", "UXWXbKgIs") }, + { XHDR("zdi", "aYKhZNQOCuVWvneWcJIkJGpeHQVNwARnLBzAujQJGNHBCyzIpfo") }, + { XHDR("yayavo", "iweINjGpgutPaDFXuOhKQaaR") }, + { XHDR("gtp", "suiuRHkBIXAyCwtThrfkeHECYdkwIDbfDRsPhOi") }, + { XHDR("bbltnsduxyplmlmhv", "yNhZiKlZfMCVFtAuPNuvAyAZqoHLVGGLAai") }, + { XHDR("vhkcowgucb", "PjjsAjrAMpmGOYsCurxrTuUegtBxLodmwMKbukpvaAhqFvdggCpZDzinXvkxVGCVgjMiFCr") }, + { XHDR("lsqff", "TQFNNWASZVSxOWlRyzuDsfCpyKJXqhoWttAQLTcCdfUDLJZuuIPJuxixrEMAszrbYjLrNBgrFRiFHJ") }, + { XHDR("ghvkzuiqgkushdv", "uSxMNTvfsKgDlfhmjuQFXjmnCNjBfsucBMKBTCchvcCzdJagOCkYjZ") }, + { XHDR("zzvxnsjohm", "diRCdhRXFu") }, + { XHDR("c", "jm") }, + { XHDR("keeuerqgfvdhvobtrdyl", "iOONsGiobMVrYDTIMCHnhEhqxsEiySgiybClgradfOETHolgpaVTogAvraV") }, + { XHDR("bfnegei", "CpOFEXWPnPEyLJxWGRpMHbBTZFkgYCretRSaJmUOleOxKI") }, + { XHDR("paluix", "GbGubmGxftqp") }, + { XHDR("ygrzlffruwx", "CXNNnyWFJkEyhrzZXGQbbZdPrUNjOcGNnFlXprbzrYrrSWaUqTqOJYdTrNWidnJLY") }, + { XHDR("lwmxxtxlstkagepzcum", "xogrtcnmljFoFXuAlkPDoSPGxaQlaVuQIOTzKwKLuNDlFlhM") }, + { XHDR("gwaqfukgzkfvfk", "AGrhmtvKGAvNughOuyMvqgy") }, + { XHDR("gqhiklohpeeumrdiy", "XhwlsbiYwVqdxdIlVhqxlzKXEacyAXXEMomLAngMvwujuSjcfwotBbDFcAPGEQetjNBLfLcCtpY") }, + { XHDR("xppxrlsx", "ysVkXogkDQaODlhISVnmHteTHFRzzLMWmBQMxxmQfhjimgQPoRpunEIZCZadcSTZdHKLRPbskRppRS") }, + { XHDR("phr", "uxfCXRvrydpDRupzJyApjBeCouhSPMzlAq") }, + { XHDR("ekvalaiwdhimgo", "NBifHmxaqRQuoYBnYdHbfPAnrldxTdOylxpdYbkCAv") }, + { XHDR("jk", "rCrIzAGJuZyURPPLmFPyDGazQeMPdHOBUuAfmbnVFQuJUhKutp") }, + { XHDR("qxtwigoardwvcb", "gTDnVOKqzCZruodlrySkkECWZyJYnUBkzDeLuWHEnAjFmjJOoRFCxljxSgnprYYJbi") }, + { XHDR("ulvuquzvdaheq", "pxsMXXnBxTOzKWrYFBVpjXvHwWjcxsMKoMlOvPrdRajnWhgRdxVQGGjtmNEulVFbAjlmspLH") }, + { XHDR("jeulbudyfuleclsw", "EcFpGKDPlpyXXzPa") }, + { XHDR("sqcmpp", "RnmHQvUWcmQeGoCAeCDLzQFyGRBLnJnxqBrYyqSLjY") }, + { XHDR("awsqdhg", "etxabSANbGiHikRvpzDLaBviVJMNlnmiBTwUWHcPqclzmVWHhtYrQIjfaGbpDYJuAwr") }, + { XHDR("vzsdmpdoswxqgkwj", "DcYHMJUophMNtIGFRUsUJfKOvxJw") }, + { XHDR("rlpflmzriyfoognjpspj", "sgAYdGGwMYmbhuakCoMMOWmuoROJeWnDPKWdeUqWz") }, + { XHDR("nocfzgfruhweq", "SkkvS") }, + { XHDR("emndlpka", "ubiFaCiHlrDUkpetzNIJdBOTSDRsHOjXchLgCtALAFAsmqQQzb") }, + { XHDR("vsauzgywfagp", "RXAitFNoxDhPoBXcMeTkyTwtiTDwjsLklUdbWJkUrgaZwEftuzYnsrgZqWkTpCvXtZ") }, + { XHDR("fiwuzn", "efOjTPTknXDYhkeeVWbEZvTGdMIGyXPTumPHasjBNSJLmNLQVpXS") }, + { XHDR("cvkywdbhvaim", "boxMbzI") }, + { XHDR("ois", "ZkrzXxdIPFXpWchR") }, + { XHDR("fcxsiqlaluyk", "rYrsEehYSoWJP") }, + { XHDR("vudftlba", "fXmRtRkOflvcLRCWrbgcuTiuLCVhAMWcmdfOIlOwEvYtVtZVBrMXaGvOhTfulz") }, + { XHDR("wrkuprrbqg", "qtDovZEIQKchHrsJKGeyXqtVoHFErNHkCXuXWiolBZhLUOJKmvEZoPSMP") }, + { XHDR("yesbjvy", "BSEAksyoBXOljIEMiKVTqBUReMrfTOJHelYczVhmAQaogEBMATGABANRHa") }, + { XHDR("stnvlwzfuqrdccmtwxyc", "gmMGFHEjzgvxZktmQoDEFptRzLpWuZRPxNSQiGeKh") }, + { XHDR("dgjeos", "dm") }, + { XHDR("cbwqukatrixxfjhfti", "dDNgfBJRWzzZycqrDZEHERPO") }, + { XHDR("ehngntntusbdrjtspos", "wSllUWpwtFuXiMLFaWNZeKnCAOUzFWkevMQirswHZGYsF") }, + { XHDR("frkxgdnqrc", "fUHfL") }, + { XHDR("bzibf", "kwEtdMKvKNHNJBquHwuXXKWphKYPoOxmtQLDrxioFxpGxOzAOCwpbS") }, + { XHDR("kddylrhjjokyjijnwd", "owsGuGNUQXoDpwTSmxRpglwAwPaxPGZwByCdqiYxNDpedjAuEDLRpqMBqTewJUxwKnBcJQUKYTDjIdu") }, + { XHDR("ffzvhuh", "CVUuINwIhqQgOCGZwyTpMpziXbShdLFZCcphjWFErAt") }, + { XHDR("yzxsrdzdcu", "TbFqUqalRuXTbbXqarwbeuUVdgaWSpYNwTKcD") }, + { XHDR("tnbg", "hFkaOuFuIpxtDtusASwdbqRsufUfDIsNWZbKvkXinJwZAmoazgMHsCZGzsx") }, + { XHDR("oiybwijh", "nSDaoZBNnHwWbBIYMyQgySoPqSqdyjrTaLPdVcTNmyHoXBhRzXMbMWZRjgNPvR") }, + { XHDR("rmcsfkwtvu", "FDkVPCbPZSlwzIwtjsnYLwxDPjXLIPDjnWCWUFZDsTDajhKcYddfptYHDKKEGpDYFPbQuCD") }, + { XHDR("jo", "vLnpRsoRIlSuqkulXNhEEEvupgsSQXDlAyYYeRGDWaaNCHhfPxhXpWcKjsDqivesDYKjnnsaBUNuCsGQ") }, + { XHDR("x", "GTTCHRuXJyif") }, + { XHDR("xaedchkkqpgwwduhac", "hgRDWzHOVqWjKjFcdCcVzh") }, + { XHDR("gm", "OththxyDLdDByxEJYtXOjcSaFhuGRLwfiJZvzX") }, + { XHDR("ec", "cNOfoUoqlWWFxKgkZcdqqKvlNOjqelLIwrprxYpSJhwjqvYkjAyTtN") }, + { XHDR("gvhtapwqxyyo", "qulspZdmEbSOtGZhmgbOAjcdErGuwGpfjwHDkuhzAHzxfRalkHStGHD") }, + { XHDR("lotndcosubn", "SpXgPUMZgjnXyFUQXAgwtENvdSZevmllH") }, + { XHDR("pwndlqvzrhifruajsz", "hiIkmfZaAdpgnJMhBBVfwRXBIODVTkLIiwNHzKvnmcGHYSM") }, + { XHDR("zesvqedcps", "kvdyJXzHQcXizrLPNBgaugTuBZfMGjavwX") }, + { XHDR("jbada", "mErCaCwYfbfMjjZuhevv") }, + { XHDR("q", "gxTiysYyTKnwCztKjgLLbkcuhqRPmdcITGCKgmNyLyd") }, + { XHDR("znbcxjwzwcpwclbuw", "metdiyBGuiXi") }, + { XHDR("ptxselbqnl", "aCOTqkTheOpXkZplvliUllAaSKDVymckgVZtqJrQToOKViZiaLvtCWBtxhosGNfzFbYvXJjmaJcoGjK") }, + { XHDR("glb", "GxGVsgYQkMFDApVrnpzHBnzxlMdoPmFvmAkDQhNhENqjkJbKX") }, + { XHDR("gctohbrfdoizpy", "jeDJXhTaaNWaKALc") }, + { XHDR("uludkuvusxjiovziu", "eUayvkCOuojpndUIOQswYxhwnSSgMwAbrSRYMJOYZeRUxOtOZBITjiEsCTMUsOGvLXHoA") }, + { XHDR("gcehoveeindyrrptig", "cNzSocdwGtbKJ") }, + { XHDR("iq", "ujQpuNhleuNMdpApXbbyYYqJdLdsyRESMasdqaxDfvxqRhmgLutbsNXFhRGsECQksmjYpOTnZf") }, + { XHDR("j", "FTewovSgXsSLXHsEtBLWVrEpIZUzGwxOShqGfgvICkxhWRMhseEnT") }, + { XHDR("aubwwlejacltsv", "LYwsxxnkXWFvmJbhORvIYzktQjzqh") }, + { XHDR("cxgetfweuk", "jtesYQYgDBVkwGCeuvKtMbWQh") }, + { XHDR("eillxuuxyek", "vcbyfoUDxDlJoeS") }, + { XHDR("nhuklmcltjiyqecrp", "fCxcjVKfhZpwZQSsbIaTlONkgVKiCfNvLSlXboma") }, + { XHDR("ddtsaqojgvr", "pJJrvlAVDIIWWoOochCfYMUlqQkHhMqZPzuSVgVZZjQhMStTocWHLSJsNgqyGV") }, + { XHDR("jgupfkst", "mmGUpJbokxdonvjENWjXdNbMnfkdoVRYOCTHJcKoSQDeWCeUrSfmNiT") }, + { XHDR("seq", "BYGsZbmmGuWhiwQwqNsqIKUpsoAkJDqILycqJJYsxVFhfadlyVzCqlQfkOScmzxzSCdqVrz") }, + { XHDR("atbxlekjbexo", "ZVDWQqtbRSZhRuWQNWqYQeMzPdiACdHLVhbsiaZHlhVPpqrISTPJMFl") }, + { XHDR("vctsrwlzl", "jqgXgPFRYqQdSkYGBOOPsLtJgfeuaRMoMiIteKPbyQocPZwT") }, + { XHDR("ayzyviptbqssfvd", "klWUlxfEjqsHcpXEvbtiWNBSb") }, + { XHDR("t", "eotqwPdhmLhujFusFdwtNjfvcASghdpWZWcRELmSYjqCkU") }, + { XHDR("hojpubkoaeiyey", "xXuuXUvJpLwLUFhrEEreUendfpUFBBVcvushPJZxShTvqmYONuFLnJeBnmpoNwBcrvMqOMJOEKqzXP") }, + { XHDR("tetn", "gvMIhbgLixscDTeBaDSkJzduLY") }, + { XHDR("rau", "zKnhWuCsBVLNCOYVLSEoQnSvIBLtyEDWZMIJMqurFcHUdmOsPLdtWKXlgJqCQRo") }, + { XHDR("zyzbiblssarvirzlnfcy", "lOKXPMxqLqhnTsuCHEQChR") }, + { XHDR("onqgg", "HxXlZiMbYKwtCSlruISgyJEPPdRCRoegKnsVhQMDN") }, + { XHDR("uzdbwguvttc", "xfCjxUDKCOyXEIQJbCzmJgYmVhOQMJbYZDxGKnqJdAIzMHdALojFFU") }, + { XHDR("entethgycvp", "UoMWR") }, + { XHDR("jhbothqgjbomderlkds", "r") }, + { XHDR("kayhooqelunjyxqn", "ThmTNNsvuWcIPihbzdYbvEZjrBJCquMkCZXiRlDluRHBMCiKpIBkI") }, + { XHDR("uozye", "JyMqMJIJMkSjcunshqzQejwttQLtcvUNPKdxKPYwJVWVWtgEmYzUqcHcvrSmPpIpMVvSQqu") }, + { XHDR("menbrinwb", "sMshvMdEMMXnGSFVZmmbLXyNoDlSIbGuvztuobXVJGjRHkalgspxJVshMOlpCFcMbfrOHYvUr") }, + { XHDR("dpoyigj", "fZFbAUxhXgHnbUCbBaCrpOBfsNZYLkDweByPiDsH") }, + { XHDR("jhno", "encSmqafLAgyOfXCVaKiXtarqZLuiTbplDYTNX") }, + { XHDR("ovfhdfkghgyeuupwoxbt", "WPWTynsWubpKDwMFfdCEFkqrJxKdskfxPACSMWXfhQfqGKwAqstTPKgVgKZGUzuJFH") }, + { XHDR("huvqghpjpeept", "KzO") }, + { XHDR("jolekrduegdre", "iIyXzSrZCYbqDoLwducPawHCrBmnpabNziZDrCEIqFvnYWywbKVPa") }, + { XHDR("jfyldaluwrwqyaoe", "GHDocuVAMGrsoPCHOpLOKNUdohtSMPjDzGJI") }, + { XHDR("m", "TBkXrexMggWxatzHHaBoirrALLIydEdIJgBfHjbirQEjRcRaooaudrTGbtbQhAPfBTE") }, + { XHDR("jgre", "aTxqqWGLHAqyBpeoQWHfoQHCqLQqQcRGwTYLXuUXcEuxLauHjUFfnGCsZvbxbwJMJU") }, + { XHDR("dipdjgumsccbnh", "RINRPCDxPKZJaXanyNawgXuwdtZkfNhlBSctXfHQELOLSVTq") }, + { XHDR("pnwiablptrhlrjoz", "klguKNhMXApPPzGSwBAChUvkCCPODcimcbccZUkNQeyWjFbCDxsgcgp") }, + { XHDR("n", "wFjMEILrlwqjJVEliwsosvhuPISoHeQZHPapPkx") }, + { XHDR("btfbtibnce", "wjLw") }, + { XHDR("zohvfwgu", "AaHsbbsfpgOjtVtHaqbrpWNAjUcAYsrOrwEfSpHzHuWOAbkdfsUedoH") }, + { XHDR("ojgpvceyzvfjxbjkq", "rOAQuxPsKSrZzZPJyNRfzxASElyyTANOJvhJaevhfRLEwkKItQJxsPoyJWLdN") }, + { XHDR("txgbyirhxzjqkr", "RNjsTjUZuphubadIlosEPJBwlStWhsFBkvLnEThMGzPLushUX") }, + { XHDR("ltxfbdqskrsd", "lxkMkgTlPykaoILWErecrseYiSRPbSDJHWgODTVXhJLEOghPlCqXKNqwARdpwyaCWTzZwJZu") }, + { XHDR("arhoe", "BuhnOARdzPNwvjSLyLlmwdoRZVixhmPAbPdMrmjEunqMcxL") }, + { XHDR("rztlxmlgrmtknf", "YVyFJwBRnzApnAJgQJQNHqOmepfbteSnERbyS") }, + { XHDR("ksjkwydtazq", "hLzUbMrLpBKmLHaeASHURLxvVUEgodOTcJnP") }, + { XHDR("hfmdnoxtk", "IVJlrSiOqdZSbcubPgOApnmSQnIKFfrpFxOUqiCmdZIPBfhTHMlRVhjtlfklaKmkdEqFxCKqm") }, + { XHDR("xfktbztxcjytjurumsdj", "qrFaTPkwOlCxclZHBWaKawphNewrfxKeYLgNPfsqfcDDhssRZsXJrzKFNBRkUwVScAdbngBgSxNXc") }, + { XHDR("qjlyofrpkgrnoqourld", "FyJWpWjQBfEaBLIflyHQdjIARePYiYwgyEEXEOnlYkraaiGSjXjrytuSfkGGCHaluxLsvXXzEcbZ") }, + { XHDR("w", "BAw") }, + { XHDR("oxmdtpltncy", "tQwpalapoOnEdlgtlWlSUOyvl") }, + { XHDR("zlkwcligztkpqmomn", "ckBVUvJLaaOlVbFuEwULEHicOjkFishrSXOxcGeqpJxESnFzTIplwmpzSvXklRJYuoJq") }, + { XHDR("yjntuwbh", "bIJcAtlAteocgoicbNnubsGgOidXBouF") }, + { XHDR("fxnvl", "DAvzyGjDwGjNEUXNjVmIqJPiplKGaxLjHiagrFhojMWPpVpekPwDwBvxeQidpczXeBsYsGwDCpfdUZMG") }, + { XHDR("fsekdjjz", "jnAQpvQKTVVMoKhskiejEHKCvYUcStrKhJapFeLjBVWdYhPjfZeTJslbVBh") }, + { XHDR("bbsdntbnkcknoadwoim", "NcghAPfrIoSOeBYrzjFYMKKtciPraFMEXddzlQSWpkijCEtAmbZrFKBeTkLlCzAkHtjLgjnI") }, + { XHDR("ribiecyjg", "yAJDshFQNNDkUwSXhWbBtsjqZTfEqNFDhDqnrnfdIbwhXNAnTInmFZaLmiCPgueJbidCpx") }, + { XHDR("zokhpbzuonj", "pPtvuwiejVCGZymlboPjrQtlYNwZEeSzOHJPAObTKAVtSvUQafFVsMKLVyYso") }, + { XHDR("wswkzfbaokegkjnbga", "rUyonADAyUpWmLOCCOrmEJzySyToPsNptkqChJciJAfHnaQFWuQEFLU") }, + { XHDR("kswxpymtdjvwmh", "dIpchLDbcIVbgmLJlnxeYSyKOLQJZCfRchxTQydcdJmmngInTfGymFPGLZcPknLfCePqUNicz") }, + { XHDR("rcsqylnk", "zVnwYguvDPSZJlDVPPdyDzzTPTIjBsMQliGnzwiWusuVE") }, + { XHDR("wjjylidsrfk", "mHTkGLNuncbSXXIylJCXZqJXwLjHS") }, + { XHDR("qgyj", "nBjVHsVQvqpiDuwgyVsLjlifwWEicnAldrfkGGmvitmymzsCjRMfU") }, + { XHDR("izecyimtvidjzr", "lcNLqlslqGeAmIbMLbFwzKSBzkuKUmwBMPXUpfkDUGTHlpA") }, + { XHDR("lzyjlsbswcfdi", "VBZAjFZCmKAVphoCDfsMrdQEBvbIgkMsmWdzmVGIbNXDapDfQVRynMwzhDsEvOJWiRjoovLSBELoppg") }, + { XHDR("dpex", "MtcZcGRrjeDRNMokFnZDgIQmiueceYYcRmixrYipGkHAjcxnNxKUwsjcJYSkfOWBOQpl") }, + { XHDR("qpxwykn", "AUjIia") }, + { XHDR("yhrdvxvnkat", "zMLUpmMQbRN") }, + { XHDR("tt", "EWNfQAbCHvrZZblhlcfoFPRkdSlRSoTHaiIBJWuZDcOaAdI") }, + { XHDR("ojke", "jlaswZALZWagGrpIatgAMzhTKEUZdhmKfTmdCBzHrwtBSXJedXASHNgLdnCawXXZBdFwwzwWf") }, + { XHDR("rnemctgckkhuzbxeujq", "wgMOmfiGFebISmHVBBCvPnKBHfvvbbACZUYihHXtimpJXyLGmrXvGCVu") }, + { XHDR("qpg", "ubIpGUiHzJFeHcIjkAjSkc") }, + { XHDR("pojhnkzbiibjg", "RNtcvfDMQUNNNuG") }, + { XHDR("pzuixscpiqyn", "YJAMowsghrxGuLrursKsseoQgBIiCBTsAngWCQFpVfSpKQFIcrxbFPRlBnZrzFaFovpM") }, + { XHDR("wrxjmxdblgcalmasc", "IDMZeNgPCktkHOtbSwoxy") }, + { XHDR("mjkymn", "YSVuENfZfIxZGgFxjSVODhClPivv") }, + { XHDR("yryzdmy", "PdvgVZElFEgzwMkGHbcGWzIobQhfaRwpeiRKWFgdmouFGEkr") }, + { XHDR("dxopgekxxyfaxydi", "jYZXjp") }, + { XHDR("cx", "hoxPOucC") }, + { XHDR("zjtacxcozihpvp", "lSiQsPlbypDLxszUroSQJRbQeMWqPTjIXVUBAmluPJujEukbIOPmcgkSjVBbjTFixAJM") }, + { XHDR("mqeafospsohqlqji", "WldiAuSyqZPNKakZOeLsfsbXJFDQPsFTEMBTuNkeDsYSZikAZWiqOVGKtOLxsrEWvfEarzPMs") }, + { XHDR("qpnfmycjfcpqseodsdvb", "sd") }, + { XHDR("nehfqcdz", "IANZPmpfESVPNExMUpkbfuWBjxafyKOXVPJXDgZJvruAVExCjqXgyjsyzUKeMWmSJDQpJjtVo") }, + { XHDR("fmktuhxavluyvkqiie", "GXsZZblSFfAXi") }, + { XHDR("dzmzskdnvvbzyjalkat", "xGtKHuPdpimiRuNfrVuoQaTHitYDGmJRnocbmWNctrKELfUbgkigsevaXrZYyrYEBlmGOuHRcPct") }, + { XHDR("wmduyjgugmxsb", "guApqgTQDhiNKBmYBdvIgPJfFjFLvpgqLKUNdaHcCJzJfHC") }, + { XHDR("qpcuwdccqkeveopas", "rOQeTuAgj") }, + { XHDR("zhkrwygyovspokd", "zDDNRmsay") }, + { XHDR("azwqcomcwq", "OMFpsc") }, + { XHDR("jbtnjmrfxsq", "vHdDUmxspapqzrJflzcnNlkdWLMPqqRUXmGHWhQVlIXbJqqhmZsLJEdWnGFCwu") }, + { XHDR("wxwvehxnmqgkzsydv", "omjVFyBuhRrLhhfhezZFTpooRIHmRLoJTNPBiYfdosn") }, + { XHDR("pd", "ayVdhcpZbNHhmGYFJpCGYqVgPARgiyKjYNmfvHyMMyHMCRZjiCFKSHFqPuul") }, + { XHDR("nxim", "VUWrVRArrnimkiOLWGJxrLURqmxyCaSbANMjSsSTOhnIBWysdbTyzJ") }, + { XHDR("xpuwoqafbtvbfvsw", "fQFlnbsaGAFGAbhPBYGWQCVVSzRfzwreXepvhIbuDAYiZfdyVypIVQgtChPXqVNuGG") }, + { XHDR("wyamgmvvaxfpmtchpzgj", "VNDDMqppeJBgiRBTwvCXNvuwhwoxFksGmTWJhqxgQCgx") }, + { XHDR("awgemiooup", "UcWaoVKYKAywynPylBOoUSRIT") }, + { XHDR("ezascqhj", "B") }, + { XHDR("lv", "QuohDYvriHwFebTJVdQtyvlTuQAZISdTpOTzxIsiVGhBmWkajwcCSVwYQYXQA") }, + { XHDR("vmbwicuvamrmsuqgirhx", "BDIdzkyxiuhohMRweYwRLWyuEKjBGhwnpJzXhdGwkIZBmfmDcJqljzD") }, + { XHDR("qmpkoejafzw", "JksflYOeffoTTMMEHixSyxUhWJu") }, + { XHDR("uyqepvxfcejhbvucs", "dFamSIpWNkmBhHvrjyMPmVFrVnWTEUSdUQmKBpXSiJJWvFpOJUJbkfisPcmeblaScdSaDKnaTBYoBoae") }, + { XHDR("slpfqblkegqalkf", "husfrqfPiGnLzxWbjAOawOPWribAprCDUycTGKshBnYAlxLSAxkD") }, + { XHDR("bknfqgutysdsoeo", "lepwHQTRO") }, + { XHDR("ojydcxzz", "yuRoyiaXNieddpQSDPvTbnD") }, + { XHDR("ikvhwqqszbylo", "MczAOtAaHmRYlupiEbDfsyxLNROWZJZNgMVQtEhHdCwCyfaIyPBoftlBqFmYl") }, + { XHDR("wy", "eicGzx") }, + { XHDR("wf", "QxDVWLYeUiIFYFIybUdDjptNgZkGtklqRnMvXEQXICpUpUrhbwnKmjtnQrvQEnhzbbvodBtpehDlWXa") }, + { XHDR("jfsqbxxitgpbalgrtgu", "qBXakyFeAtmizIMaaAULaWKGEGohkAblxCQuBoFubfparkwVTHlbcckGczDXizmgNHHA") }, + { XHDR("uyiybjjwalpksxxmz", "yZqIPbgfzCCmhgMSuMxsWpoDjapaDbLVDMlQUSh") }, + { XHDR("vgfxmylviqltxlqxxjch", "SHAAhejLHPOUmrhipDcKdEydKjRyRoLNJANQlRugASvwYonBLwnggxfLpEp") }, + { XHDR("xisexcndweliifxzcf", "LEMLuTuvqtxYvzAhBxDedquvaGtIByJOagDbiImCsDYciLPfWQAbDRXgJYmUdhaBDIoJHODVy") }, + { XHDR("azhozjunamkqbqs", "oHwlzAMLHcchXCHQyPrucmGzLYrRBQijUlnDdEjCQLFgxpUYyMwHqNAiLSPFrqsvOq") }, + { XHDR("ydxtdgrxiyalbyhv", "tSWqDdJk") }, + { XHDR("nfwpkzvelyncynusg", "vERqYcosrj") }, + { XHDR("awceiqera", "uOpflvJpRfDSLPOdenmPIfzdqjRDmUaKUqegNaNeBCwbdhRsdzsOzyaUgEserxKIdINAEpruJvudCu") }, + { XHDR("nnjjmeeyu", "C") }, + { XHDR("kloqrxaexzvmpussd", "SEoWbVDrfyTgITwPaLBIXCkevVUNGk") }, + { XHDR("xwajvlcmfuctuyiuax", "WyWeAvKgLgfxEHOldkaxSRfwcasFghyFcsGcLhYkwtvekq") }, + { XHDR("aarfop", "cbEAjKxCHkzDmRcvCueWyITvDJwJH") }, + { XHDR("stpasjlxlnvieqpcdt", "yGhBIsssECdZUyqsyFG") }, + { XHDR("tlvsvbvogs", "sScWgfajYyAVZuhwn") }, + { XHDR("bmruhaefjvq", "yhaUjvyupmEVeDbThXQf") }, + { XHDR("ywlmfvvvpvnwtshxnyj", "zxqWaawLGBwKgqGUtHfohxgfXrioQHiaCPLdafiaJsDrxalOV") }, + { XHDR("hdawtnrmrtyqhrf", "aqFYULCjSEyQAJAurBnLgMYl") }, + { XHDR("gbiptswmligk", "SIDapbgoTJUFlMcG") }, + { XHDR("ymyaybnly", "XgSIRHRbzXHNaSrPLwggsxzeovlUPQpRFvMtEfhqofsHpWRTh") }, + { XHDR("qjekxjidk", "xxhhJupvgmloKzxLYMZxtMtDcyMUbunDdYvxVHqOVfbZCxzfjstlWu") }, + { XHDR("iescwedqsutdfnfwt", "mUMQXcrMEoYJqmLyozazbJKlbvozSdzjrMv") }, + { XHDR("mouglbapvzn", "ahvnNTMgCXnbMbdAnpnBDmWxJJGNQoTMXvqWrhUACVTNvNrrsDjHeyRBVzaLAotNRAhh") }, + { XHDR("a", "wraPdktdUVbyLt") }, + { XHDR("vr", "GvhtIXyhYGMHIYvoJxceWwc") }, + { XHDR("rsx", "SuhivRKJmZjYtaTWIErxLjIUPtQlqjRetPtdkCA") }, + { XHDR("oeplpbmlpnriw", "iEreVOvvzdXdLIGGvMUHnVkb") }, + { XHDR("vgfopw", "kPRiOAOfvesftoebIZlJvRTPCLTsoXdgkDISPrzkAjGz") }, + { XHDR("rngcemdndt", "kqDurLwwxyOa") }, + { XHDR("zexphsbaghqtkpwxhkug", "cEqRdOAJuZBeMKYAFozkzXoxKMEukrUaidpI") }, + { XHDR("mbgvylj", "UaiA") }, + { XHDR("ascarebylsspl", "aALMpLhbdXJRaYLvp") }, + { XHDR("dsz", "MqhNmyjKvXucENgyvXAEVjPyx") }, + { XHDR("uydhovrzzt", "WjVQNIblVbUnNHsMHbdss") }, + { XHDR("izrnzjdfzhrsxyvusr", "AQWbKscCoJgubRMDErPvgx") }, + { XHDR("ovpi", "FZMIpEbYngDIUQwdIfhwzF") }, + { XHDR("svvcybr", "LDzaOzawmVzVAxEKqLmKphiLUuMUWEpunufkNurHUgLTuESVXJeNasRpOxBiZSvqGm") }, + { XHDR("vd", "QMGthYwyiHPmAvAILgFSLBdZeDCbWCeFoFkIVmaXRV") }, + { XHDR("uojyagxnomvryec", "bwbTfpVjgEGwkIHATwOmxCydLeAoxsJZRqSxnAqMcDkaRY") }, + { XHDR("aojmhwnowqsgt", "aCtjQkZSqvPfpfjZljiikkTNmpkrBiXRSudrUTOQ") }, + { XHDR("splckvrziooasddtfv", "ShrKBOlikQeWxwfvdoUMNsRJhAYSBwbOVBXzcSmKXNxyWbeOefPSmNFjerkcwpcDFEMOm") }, + { XHDR("infzqbkrv", "FcFihWEwRaoEsxvGVytanBXiDYXSkJ") }, + { XHDR("byrmiflxkh", "ZdzEnqvofavgeHAtqMDrqckPOm") }, + { XHDR("gjrcfwryinp", "bLXevgRSGLaDmrJbmRIFHSRspAEIWPnLPxHYoCSSStqscmSNhYaZmalIFTYtg") }, + { XHDR("ysfylrhkh", "RoEgBz") }, + { XHDR("rkhxdcvermeejzpk", "TZbnfDvkOzvlAJqdZZFwnPtHiUaGPfkPicglMmXmBHscPdcyIVKwksOmAsRksF") }, + { XHDR("xvdixgjdlajngtu", "mLeyNmMfUXyeFeUqhMhuSxKz") }, + { XHDR("uztdnidztttf", "dlaDSbaFXVOMpRvJdBemAzEViqyMz") }, + { XHDR("wwhfokckdjrjnmgyuejw", "YgXZGDZBbHlP") }, + { XHDR("yxscvhkvulnrhh", "EGGJKQyaHTMcl") }, + { XHDR("ocyacm", "AaMRBkYSOzKwyxmyyOpSGlaUMoBHWWDyMAEBbvMZSiOrhhIspwQrnWDemcJDliUIBBVFfCmYtTxgJ") }, + { XHDR("gfdopstkjw", "IQoVsJVForeEmrqYUXoAIHLNWvTpUyqvHVUrelhebarEFXtIxbwzKWr") }, + { XHDR("gxuvxs", "bAdtFFHQzlCyMCFlgSaTZpVjShlZIJNvsFSAFQmGeVOWpLeyuzHFZq") }, + { XHDR("glqplkiueesrqpjbmjl", "szOlllEyGEiNOUxjtCwXhdXVPxGUUaeFIwuMXOVfRgAZwbQnHyMQGQhGUvHHRWtTzsCzEinU") }, + { XHDR("xjvnrjjikvfbruincdgp", "ZvCHKvBfJKfFXGioerflbzXmFPyKaMBRiHIWXXODKUBdSXeRvGHAYNvvUFluaIzRjSIZrAcBp") }, + { XHDR("zjfqmofamo", "QeEwYXeOSmEfBOUbWdJEBPWPNELTQaRDImHLpicsSzsRLcSHmNmIHEgAuVpUKSnSysyMvjBVrS") }, + { XHDR("akm", "AzGKRQLIJJnsdAMzDREmEn") }, + { XHDR("cepto", "DDuaGYMjoAFYGjWrMImyn") }, + { XHDR("nudksjxpp", "NuISIBfuHSrkUjGpqWtmlK") }, + { XHDR("jikfuzjhkmdyomzc", "nUPDYretgbFdvXpSEFVdWKAGKPqwQuzfLBdIFxwbn") }, + { XHDR("edygaqhmuupnmpjxicdj", "QzHQXpbSXrtfdsHlCxFQTTNJGrTNdvVAYXxfhsQyikCQbeqhduOlaDBFmOTtPihx") }, + { XHDR("wzzvdo", "eYDWOtgJCEFlDslRONEhPRUcB") }, + { XHDR("y", "VuAjHsGmHBYqakGDBqIUiDfjjAVgykluZiT") }, + { XHDR("rkgeyzpjkd", "WOxxlRVVIQIvOH") }, + { XHDR("ccvscv", "iexttCRrzyZZhqKuXmrMlVQcPOMSqphuDe") }, + { XHDR("zuictw", "BaVfNdLLoNcmNwGOhwAfbsytMDsk") }, + { XHDR("ezgdrvfqnlpxttrpyj", "AHHvaAOJOGwtVUCiezqWmonYJlwEBtaPMNwftRNnTShjfKsbNeDBzomQ") }, + { XHDR("mxlfrtoslwp", "QAzHhjfnKTUhosQOgtWywxanUVyVeaZEiSlNjvFDRJlWLBHfFQBTOsThrYFsYbDtuCyNSoGZHb") }, + { XHDR("hiazjayeqfemymyiuqxk", "AMMCdcvFtCPkVJWSQSYepRLwpqgEKPOeBQEECdFDmmclEBLtjFneLluDhpANBnaPa") }, + { XHDR("sohjhmzkkjney", "vBl") }, + { XHDR("tzzpvxddemtbkcb", "TcGdgAhlJkUGhBZcVgkiHiPgpJEJgqWqAmcoTGRvZDDIiAGjjHwpVphUdiGJHtTFS") }, + { XHDR("qqhnmmjlwccj", "OrCuYWoOnaStWjVhoBsCdjhPqCAtQ") }, + { XHDR("pcunftflgstzyeqkmpeg", "XpBCZAFXxnzgQmDRhxqmovWKzkuzEVzgFyurDALrULfKRGahjOcirlxjAgJfbNgwHrSg") }, + { XHDR("kowpwymrhtvmxtgjtmmg", "MrgwvWlMTghxMjEjxHQTdCEzjUJxIYczoOdgLuFxD") }, + { XHDR("byzrcnslqxnej", "cDoJLQpFBmxEdeDViZuelSVQtaBrpvIaDCfWDJORbnLkiKhGvLOMsoQ") }, + { XHDR("dpvdmyap", "SBbWExTThqwbMJCMEHbRqYHDByHtqWiwMaJTkIyxeksFgdbQCUmNrhHzOZXkTWrBiDeegPGFUWxXqyPX") }, + { XHDR("opcvriqgwgwmpb", "bXkPSohlNhItNltJWfEATufEgdvAZSsMYNAtB") }, + { XHDR("sagigoblufnp", "DxFRnbqNR") }, + { XHDR("yhgwbczho", "PdPnjLAkhABrqFELmRKWYsSSqheRmBksXtOl") }, + { XHDR("dnszipqm", "bIzkijwtIkatiIeTBoyxMcHYWBQqugnPRxoWrcnFkSrsbfJ") }, + { XHDR("kyvclwbkcebdpiraxzas", "cQOSJrstemhYID") }, + { XHDR("arzytgbklkreewyp", "FiwCKvgBEfGjyFxKFZcyXrcWxgPyqDfbGZsjAFVAOSPT") }, + { XHDR("ptvrdoovxl", "xshhbJaGxUaoFEJkHaWuBQpuCcKDpCgyZQmqrfSkswgzTLsdiwJevPZRIryyOvNfahqAHncowzGqRD") }, + { XHDR("gpwgchebus", "YsbzyRJWeHWnJCcnlMpMQQCRsFcuSwafprdqcXimDrDWtsFJLbMeBRLFhHYRuYWufgrvaSLALzvrPRdA") }, + { XHDR("ueagnvjylgmwqlghtkg", "zgXqpyfDSEOZqqLzMPYmoNJGvynCdnFSmGnFN") }, + { XHDR("ckastgzjmjvghhlm", "rxRUruJgtyTPhDXcrwvZQnWNDZrMbOXgchahpGb") }, + { XHDR("lmywtqghgcwun", "XKxpGkypxMsjanlAcDlxRsTGPYYE") }, + { XHDR("yfnwslhk", "mSPjkurJKRyUAvdQrGtEdjwWzgprPgqUXksmcWiLXhpAxLRsdoprOZplDRzrYKtCthwwxeoCx") }, + { XHDR("sgsog", "vWVeIcScexePobQybEyPTCSnCzYVEAlaFZesVeTMhrUjQpoxzkYXUjKIPRgDkqbtBItPHjdbpH") }, + { XHDR("llmzevuq", "EqBLtSvmrxsEDtVQwZDHnQtLGQhbgVdxwvMTfoHUaYCuptmuMTfFyTmPVih") }, + { XHDR("tqpqsyfk", "HnvVompwZagDEtYbaGVuWCwCbIAfkvKBxqgAhsOwhOEbWbeyVM") }, + { XHDR("mplccwujk", "RXDvZWxQvsz") }, + { XHDR("fkugtdek", "ytCUSkdcqMPotakceAuqIjpIiLMeJOKp") }, + { XHDR("grhmwfbwzgbvpwpthlq", "wuEbQJXeOxcuTMddtwZwNNDlDsRPaYdKipOdbxunNgsPuUgowfJWWePqWGtEQdiJ") }, + { XHDR("ettsvm", "IcmftgwulJqYqHrfNWhItKtlsTpTmwMbnhfvNaVkNOjUxuifNN") }, + { XHDR("xtbmdpdxjzboegwcrngq", "ZkJUHQcuxLmYIzfKvAXxrfISteJIuTdJg") }, + { XHDR("letcbkoxxu", "lvIIoLIWPwMiKCGqAzxuZzGGOrTNWkMpSgDfaGRvTOAAhyinpR") }, + { XHDR("xgxzugg", "asvyEuTOzrdAyJSoVlrXIaRhtRlXJzZhspOFYIKclzjxQtqpKsIALFFiHEtssJg") }, + { XHDR("setnjpotjqvsgpsoxxo", "NavsgFUdSem") }, + { XHDR("qnj", "MtcwxxyzhXdYjykTIAbvuiiIJMkAuLlGHmeZoOEohpcqlOClJnGujRQZiPrXNKzCuobEQq") }, + { XHDR("owsuiwpucrvcqks", "disdzqgJRbUGwetqmuvOcJfZGtWFMYGHgngiVliGajcpFaZdSx") }, + { XHDR("nt", "UmHBpqYwuUwcsRlqSxLzvwnqMZoCr") }, + { XHDR("qym", "twDPM") }, + { XHDR("aihpvrwvmdc", "JEPsNpQmPOTVXfavpvlmsomYlQIYukkZaDNcpdVryqgPFgOlpfzqSGgvTNI") }, + { XHDR("yo", "vAlTKEbaKOGYPsBoUJEzRDhwptKGMroOyWqLZ") }, + { XHDR("uksgwfd", "rpfyZaKqcN") }, + { XHDR("vlzcliyzwamq", "YGmcmoJKoVwxoYSGimzLtmLBmMzDeCXYsPnDdhyjFYetdHjSFiBoSovxqcSUT") }, + { XHDR("dzsuclyeghlbijqslfc", "ZxMAUvWwZAIEyImNgnWEWOjgFmNKjOhGHNWTTyCaZeZXtv") }, + { XHDR("fvwnbxcd", "FbZXTrspcdQttMAZlgBKKDxiUdurubErIArrbmgJIaZSYJBLOEBkBMZ") }, + { XHDR("ssni", "WqAnTDEsksoZMkRepSlblEhCqgjcObPloAFctgOhUoChvBNXXjuVwOEUBDjJzJGFyTHIlraCEGbMSLu") }, + { XHDR("rjuxeehiihseyy", "nUhTYEZHzKIKdbT") }, + { XHDR("iybenmwldjtfqgu", "vjyfmmPgEMQgCMlOygGgifQCtkdzMqUtWyAFStdHtfVKIamZyqbbrHQccuilLTBHYMT") }, + { XHDR("tykrcgjvprnffsffdxwu", "TPItiLsJppSyRPAmnHsyqYonFusjhuUIsiDUtfsZZjslKYvZGTaPOoBSocU") }, + { XHDR("pt", "lRXbPXDBJaPvitedcNtbQGeMLgAdZIJdvgukeOiatiVcMgwFrzxJlqBXLcPEIEkPhXmQJTwFPGelz") }, + { XHDR("jhsunpaawc", "zdIiDkxkqKsMXoajAqQQMXtyXsKSOMqxxhzMOJTsCjauJjqJFAjcNJYzjbGJRHgRSZxw") }, + { XHDR("omuzobnbmafdiebioza", "JZemrqTUMOLkvxuaZolBnJmuyYymYFIclTZBBXHlOXeKkpgR") }, + { XHDR("ggj", "ZCVZqQjKuIIFijTwjGTnwGHSaLARVCdCBsdptQSYAYYjlWrBeGWVpraSnfDuK") }, + { XHDR("rcqgmhanffq", "kuxSvzgXkclJXkkkfkjxQLlN") }, + { XHDR("fhktod", "gyZrmvxgtQfSKUDEDWiQNpeQJGkxJWhNMxbTdhaPtaof") }, + { XHDR("nlagu", "yRDHmAugpEfQyXkzjGZtqcMtRozrSRIrABEoNhhBpNg") }, + { XHDR("olqjwxrmjrfzqmxeb", "GfGzPxeuvzYqhnMsCdGhtnPOfRWRjCmDnilhNiHKXQIEFDktqXWVjreFrbJyKegB") }, + { XHDR("ogtfmadhehvcyazaqfv", "spkcwOBJCnxBVhScOECqd") }, + { XHDR("gnflsckkzblxg", "ontlzipQudWtfMprpqfKxxBTHe") }, + { XHDR("qg", "HidDgVMjAXdGJKdsveUwvwKCiheAhRpkkDwopjsIXTNQCq") }, + { XHDR("moivdugljdjjqrazwdi", "XMqCSRzDiFxuItjFstcUtXCoWJeTKKRDOBzudvWEyWUsLqJuNtxfHIcQaGcewQgrjdwHGRHj") }, + { XHDR("wdmzbzzeygm", "iDtmp") }, + { XHDR("fwvcbklhzkofwvywhieq", "OzkRcodFuDxOEufcyEGxKJOjfKpOizfZJBvJAznixxI") }, + { XHDR("omoeeccfzasglmjsdyov", "MmKKjNDjjsyJTQmGmhNJTJoOsvjSzmTieEvqhQeAxGfWPcaaXWOqTPoMTlkgFnZwOl") }, + { XHDR("eoahblzoemtx", "kBPlltPFp") }, + { XHDR("xkqzeotzwgbs", "myTRFVFaTWBUFVPuomVOdjYVfw") }, + { XHDR("pctjcmykonnouzzvjz", "lcgLNiQbDUGfcWpIPgISquIndzDmTGowRZvboAycNUwhftjcHFYztoHyLbSOqzSphbJy") }, + { XHDR("qvgha", "KhWuBhvv") }, + { XHDR("jwriimjpzlatpt", "LwygxGkORJgaUyKbkXNtzkQXbXMyPn") }, + { XHDR("cqsztvwh", "KaRTriyxARZWsDiFq") }, + { XHDR("krjfxhhmeiqm", "GRPJapTeD") }, + { XHDR("xqicwonie", "ZDKzaSFKmrMphZJVoWEGeDhWkWgKXVwPhILArtZHAaiuKlghrmTnSdtQfojydjKAhnHWbGIi") }, + { XHDR("hqxxcwmqo", "EhVGGTUjYsJeytKwZAQomvAWrpobtvATWyNewTacyIZCrHFHiknimkFy") }, + { XHDR("mgvorhybckfhxpmmk", "PhwbHkPCtfDUgwOrgpnFGEObWbsKzAaXafQUhuiNIqAGMiXfLGtinTULpbPDekfJy") }, + { XHDR("ziygbzoklvwymvgoru", "tWSgJbRouipWYoftQfvPjxWJNDbqXQdpBEWYHHFzNErdhogUjBTdBURswNhQLiHFo") }, + { XHDR("uchsqnrmsvzuuxbxzz", "OzKUalfOPQeX") }, + { XHDR("ovchdmfkrcderlaxctqe", "udpawQjmxrKRCCYeMLSqkKDeqv") }, + { XHDR("eo", "OoQxjguXmzxuSGXZVkJJZAJcpCIRCTMreocaIuWoDvZrq") }, + { XHDR("xobhbmyvinobljdhzmvi", "bnUmHuTzjiCnRMCxEk") }, + { XHDR("abdsisyj", "SbQuEjZXwnEtLniRkeVkIFxkElTRCjefw") }, + { XHDR("xjlcolgkpdaoioxuv", "IoublOfgZzMSGBIOOWrurUrrBLoZzKrsZoOFxDe") }, + { XHDR("iaaqebwgurpnfi", "hcTrLdEir") }, + { XHDR("ickg", "NIsFVhCneQwivQZXO") }, + { XHDR("dqtcsuvwmjqvjyopioh", "KQxswaTjoBeuqecJvfNxDrtQWCWypWSdbfzEJNsQLpDDMqHckoRpFIFHBfzWkiqTacdwlSDzRPx") }, + { XHDR("ctyefrttjanb", "IXKXkJJUtNcIiyQUPVnnauBhxJDRvFWIZCcjdShev") }, + { XHDR("uonmoqd", "niLDmVdyLqwJLxGLVNCDTKhBTwsFdKtZdw") }, + { XHDR("yfdqlac", "vaOYZyotrVdhC") }, + { XHDR("odindfmytnovbfaojb", "KmIzyDVWjlabtloAPwj") }, + { XHDR("kwtkdlhmys", "lbtCJFzDMJBwEQocHVZxLrmANIOyBtszaQMfRNXAMfjZWGToMONczFeicdrcnTWQRBhACeeoxR") }, + { XHDR("zfrfwqrujeihgkbvt", "vMdjrqYbdJGkBlMEfBcFcDjBYaJiqSRBFqIxK") }, + { XHDR("b", "AQlGiMImYQqWGdjwCllWyxPNsYsjmBVztFJAwlXwnAGyUGlZyAPsZrCLbGROXvFMFqtF") }, + { XHDR("twrszaisbjzbwspq", "eczKMUPVnFJEBdQNbLEINobWpKWYiqSv") }, + { XHDR("qy", "ctIBpVwRqK") }, + { XHDR("eyce", "UflEwCOkfVtLgfRReVD") }, + { XHDR("rqu", "YQWSbyOMwqidILzqZClTPnBmOisnuXcbafzCZMClyEfun") }, + { XHDR("jyi", "fwQGacyMBlfRLLCRMXRElaKjKMmCUSPKWTLVFlktPccZlnFmgcoqDxkvBUcdZhhOQFTMtomoz") }, + { XHDR("kowdlgj", "GtLtQiMTMqZsDnFyYpLMsBNgiwEYIiIJNHAttcNOilQossgkFYBJkCPwWdIjyinTAkzxyInFLEyth") }, + { XHDR("cikopyqiyhyu", "pDqNQdOuYaBVAcmmlv") }, + { XHDR("ngmrniclw", "inhfmuWpyzocuaHOkZUZLSSMMfhOGIJbZGGdjEIFqzU") }, + { XHDR("ye", "wUepTUSuGduzMLFkDIAqZrLXGCPZUkzxCmAUAQQHS") }, + { XHDR("owjfdlx", "MLXNxHEsbNRKiMavOFomnbUUK") }, + { XHDR("mlgylccyfw", "qlotmDxEqoYJLJohhqkew") }, + { XHDR("qgfh", "gNRfAWDqpObXvPtZqaxSycEDRl") }, + { XHDR("rky", "EuIGISL") }, + { XHDR("oyj", "XAoPRoZYLEOhxMLgzYDQPYjCakNN") }, + { XHDR("pjhozbwzt", "mGUfH") }, + { XHDR("ajjnjmsqsnvsmpdtes", "qZkHYiHlabGPETuobRDTpaULVUGfhBhyTuZahLQKKAMZgYaVOTKGgkXuOnngaaUVSnzQWsnCnY") }, + { XHDR("mptgbdbfv", "tdaPWYXnngeujMbTVXyuMAErBzpsIDKsBNjRukFxvYQDthJNsApShTD") }, + { XHDR("cr", "BQFqsRlAsqZWKgWSOJFgWtKCyVrzezeFcQAiD") }, + { XHDR("pbebyfxvwaiafcp", "UENCgAMNNqQEeqClzuvsGZiKMYYmJrTAXmDKoymmCeamfRmflTNEqQxbPRrEgRAn") }, + { XHDR("nacqfwhxgnteiymrh", "GcUnOdhQvzPKTTvZYozceHNlOWHWmeXgisJAOwJjIFkFwPrGjMuJAFiXzPRth") }, + { XHDR("uocmmlnvkblygqjbfq", "wPFSpjCHXdizgqaWN") }, + { XHDR("bmcg", "QDWGrUfvkRrBdJCPL") }, + { XHDR("udrxszctgzzlcl", "wkmzQNiTnaxNXmWgmeHMfbtEXKeBFjgUsxLbEwJGXJeMybwF") }, + { XHDR("ll", "bRGkcaABNkWXuCMeNeKVwFsCspUFWkEyilMdTVoOLuBrchExLUFcbACAaEFZU") }, + { XHDR("tomggb", "FCompJxJIGnlwoBGF") }, + { XHDR("phthopwachb", "vwVErXRUqjeZyLjvgOmKFKkWrjhQekYOZzAQzUDtvCmyVbLapKxYXWeIDlNIgBxDvkzZKDu") }, + { XHDR("mvpmggujziuu", "LjWLIFhoncWZpMtrspzNAvaiicnbbobudPJfVpaOCmyRtzpBNUCVtZlRueqiernpyJDnxCJjcZzDPLC") }, + { XHDR("osyl", "GBzKLdsknssSDAsPaTiNubPXLfBSGXZXPmdPEYPOBJEsuMGnuRBVgwtdEXjcsVPHFspXwXyTtXW") }, + { XHDR("gzhmvyhcfpoqxnnu", "YpiI") }, + { XHDR("lifckei", "qTIlSESNTLtMABQUeNTEaPHQGQPTnWnFPEBvNcLYXYvIjFDMWH") }, + { XHDR("chz", "rrkwwNfcGlPIRCopqTUDIcRgQpHfzqYimcsbwAUyvcaLxidqnLXUbjjtwlbYkvigUUGw") }, + { XHDR("ur", "sDRVOdsjsERhbMSDklVJWWyxqaPYsDyUMqjYWrjjJNLmxptcZ") }, + { XHDR("ohz", "cFJENsbnUuRYrinlcKoksgVaeUBOJhbyTMIlzpndFtqnIDexxfDJbLuwhLCOfsFiaSnwY") }, + { XHDR("qubfyq", "kuccROYEkJjglJqHkMJ") }, + { XHDR("ltxzdyzlcczxzwuc", "yRhsdlOiRjtNqXeGWEOmxzQshHMqvTiB") }, + { XHDR("ylxaitvdswznwcojuf", "OXZTnrMdAtldxdcWJlQnT") }, + { XHDR("lmb", "SFcTBNOzVkLmhITNbjldJPkutylaVZgdGQrBfKWSqptsbBItOqsIVudilOTYdTEZYRvGArioQHpRog") }, + { XHDR("hqbibnpsvt", "tyhLIuqsKbEhsCTNlqBXzOEwAQMpvIUqzWhGhSSucSennUmqtVlmPImDyzxTzoTnkVvCjOveP") }, + { XHDR("afzwhpcehyhwgi", "arHpatEgzParqKleCmRFNGWTdJDDzPWHowgBv") }, + { XHDR("iyowcowpppctly", "BM") }, + { XHDR("ezryxabsz", "UbsNUMbGVDrLtansISxLjWExeXtQkOAUBgHHRkSJOriuuUuPMKkcEBzLeEdAMQhsq") }, + { XHDR("uv", "MUz") }, + { XHDR("rgsizklbcqj", "VdocjqTJvgKzDuQEJOnBCotUXAqqlijmYZOcmUAmPgoxdiUJfAZfnPpNtnhRLt") }, + { XHDR("gcqxanz", "fCpDwIYbyRXZuDOtLqZUbFcDIhQRpO") }, + { XHDR("xjadbddpouphmnxwoz", "zLHoRScQLXPpgC") }, + { XHDR("m", "cpVWMULaybpszPtxYHfHGwRWnqAOOaTPPRDOBUSWvOORdKeBpejoch") }, + { XHDR("sfujlzgaqiwzhcbubnl", "fiMwAgQntkgTZktaZGxNpmjWEeFynShfDly") }, + { XHDR("itcgdrbvklocxdcms", "hbPxQMsFpyKUVqmhtNfDcyGGTURhBuwytmwdmXzIdMUFltuLyf") }, + { XHDR("pltnnyelgizhhnsasov", "rTSkcKgVxJtgwktdvXRboPXLuxNxmpUfSbSUbLGnahjRKsVfhuFCJcsyp") }, + { XHDR("xeclnqaasbdvzg", "yfCusHhQyQrptpgvqOzJOMfkYjbmeCZyqgOkiNi") }, + { XHDR("tmuqsurfrtzbyhrjtr", "zrzpwNPRDFzobdHDFlxdRbkAOcUWCMBWrdJFVJuxbtzyFvhmvfqioarTUfTZGctZhgZBRfNCAa") }, + { XHDR("lcjpvn", "jIEolkRQOIhPJxBOMwOBVQkvovLRrmAPHRXUUzUwDFxGvIzOKYtgNxpxdlCDVPNgWugkvPLqquB") }, + { XHDR("rffg", "wIXiMlZjdeOAArmtjAftaTmxUbWYwWNLzS") }, + { XHDR("nxx", "gPJBiLdXaKKzdnQTFdqEQqLqJUb") }, + { XHDR("y", "FZUKDWrRFfgHrYfizfcACthTjALKinhQhcOYvFEghxUk") }, + { XHDR("jflhrofduuradk", "mJXpDAJCRTLEMLXBbmwGinBBBjntUvCzyAQKXwFhCqxfQoYSpwM") }, + { XHDR("caaqzrnwmdv", "QlIYfgNNugDAeYmSmn") }, + { XHDR("zjcnxtwrwigoavp", "xfWOreXkRSFtEJRPnZGQHVEIm") }, + { XHDR("wk", "ULxsqyHMSrdQCBLFMsEPjAooFMhCbkvrnGLptMHhIIGlJXjXSaMIDvsDzjygcxLuanSUNdZEz") }, + { XHDR("enqhbmceggkkmfknq", "lC") }, + { XHDR("rbnlhlftfwsrnqnrqd", "rIXQcfQDdDWLKOfzVo") }, + { XHDR("bsywwmok", "wtxxDLHOlbrtlTpPYdBQxJrmqSxDNk") }, + { XHDR("afihzo", "MYqqZolCoizRMETTufqFwrvypbsOSxDIifvwxww") }, + { XHDR("wewqgfrgavi", "cqQjBFGlFkTcIFBRbYqKHJkvIov") }, + { XHDR("nqeozvok", "NHwRdVkbherrfcchrzktIEKKnMvWLwMLfsWbdeeFzIFSLFMOQWAyoWMpxZ") }, + { XHDR("fvotzjazmiyzggadf", "RSNDQSaNKLanlW") }, + { XHDR("vrkiuxckrbsi", "mPEsRpfgwWJQivZZusPsOtNHDnGGqyiWBFTGxqauCTNzeHFVShKROKnJxGhNFEy") }, + { XHDR("dwlbzcvhcyaaifhwgztw", "yGWUbERHrBIIdHHoArCTePqyAoNNjAmNmEMlBfwnUdoZ") }, + { XHDR("ibbuzpehalsbmmtvihj", "gDNqvSWNOFUiRFOcXORaAKHWYfgObiZQODCmnurJIaQwbHwwEaBkvRhPWXffGvrCHpcMchQQUmUob") }, + { XHDR("kjhd", "hveKMxAksQPDexdOqoIcfctekambImJvruYtassnSVvOJozYkWjDVZKfAPmmue") }, + { XHDR("vplxkgvtasn", "tqpGsKEIGTcPNBRtKKqDESsMGbSnoFmZUGhmONQzSaRrhzoxlMpTwXCAPElgABKIWQzOVieWpfto") }, + { XHDR("djyoj", "WSTkuqJMMziDnVTZxUSTidiPIpwbDeahOhZPUYAkYEpScRGzZjeynFvARTDbPSylULqPYuy") }, + { XHDR("pdvmsltxeg", "V") }, + { XHDR("jqttxhurlcl", "iiQIdvtLFzAAexQOEEFVarWnjHVNsuyRZSQUYOKsBWFXZt") }, + { XHDR("aibvajm", "RLiCTYFcHjUFTkXOrHTvfaWqdOLnmCUEdLjoJuonbwV") }, + { XHDR("koxe", "SupFUOIecSveIrZDBvIsqjMjnkPJcysRnZXXjeCLDabuYABRJJRoMiKELdxbrFfAhqoLxJrLn") }, + { XHDR("wdqqowzhimlsk", "aHogbtsBfaJgJYxwepzxbbVGELqBA") }, + { XHDR("g", "KGBccmVNPXAmqwZMJmEMabRSopfAhofFSAdfNET") }, + { XHDR("swrfkppk", "NKHXjnMgYLeExpDOBPegPHRkbUMAjrSUDTeJhBPjatzhnSrHqxGTyVOdEIPUDSJehQ") }, + { XHDR("ipouosdyldvlqovotkz", "VTpwrEAlLUPaaSEQQTguXVVHA") }, + { XHDR("pwnrwzflplho", "OmsfRaynPqoYUxezeAIiEkmr") }, + { XHDR("dsyyx", "GBpkQYxnxKcmJuiogGULNaHYv") }, + { XHDR("siltrpwbmdrf", "dMUtWNDOjnEIPASaLlZhDxwtEDDqxGVPlPAIVJlItsdXohWsTtoHiXCJykQGGXuPJ") }, + { XHDR("v", "AFitXzvGzsIMyhDLsFfWqZWGrGrTpPQuLrrpBXrfzYPRqruJySRPsVhJBqopzWoXQasCCb") }, + { XHDR("csdrrdzyauxsvl", "VVjSpAZSysrfmUcLOUSvpjpymCbFqKwXtkRgzPXeI") }, + { XHDR("qfgitebmrte", "CwVdUQXkCkROdYYFkqtyoAcshZlcoVUampTUNpQYPIbjWROpUSev") }, + { XHDR("gmdzznsex", "HFClenlbXpqvYnDnGdFFtqjpjcVKRicMeEvDnseqpockDSSvHVAODevBw") }, + { XHDR("uedlqz", "CAkfWnSwBAzZSPKnQ") }, + { XHDR("scoahtjbhx", "GYUBuvkNbwlFZbPDlMpaMnNBitwIaAqzFAUPHopPKuUvXeNMeFmhLaODedmQREPQgfJgS") }, + { XHDR("inahqhhq", "uDXuuszeLWmpNBlSfMOvsmiDFWEZtmzNLqFJCUZFMMNUetQJInRMDWrPAya") }, + { XHDR("khjvqkbgiwbgt", "RiJkniQC") }, + { XHDR("mgejyr", "YmzeQjVcjqnuXgtyFrVgberVcNOSFnzyIQEHeuZeQPZpMZdGzsWTbXMtsPjwsSFfpJesJD") }, + { XHDR("hnctegquv", "vERWMdlWH") }, + { XHDR("fye", "gRpKfUHYtUDfCPwUHRixxrkxLmyaCMXqrKIBzjypwqWENPfPCIxACtioXDzCqPiCBJbB") }, + { XHDR("lrbd", "DPgZqybQYTUknjOnSszVXqnSfoTgGFfViSczVzQYyiLTQyhGOTlSaTwCIDCkbtXCGjHepsyOF") }, + { XHDR("g", "aAjiccpWliNzMsRwcUGlIXyRxQZeHiDAryYrRnKg") }, + { XHDR("rcaidohrxxlco", "henxaNKowohXLRSUEbbkoTNAWMUFdIbMyRcGPZPJMkXVLHgWnWEXAPlQpsFbrQzjsLhLwY") }, + { XHDR("vhgpeereumlvgkv", "loopvwQCkmGCfrpyUUDfbeMgtltXrGKKCKGpOWPMrxYRbAGkrLqbGvrdNCtYciWkelagsR") }, + { XHDR("gdwvaxtp", "tCpEMOxzcvmDpoFmseKdcpUppcYDdynZAEvLlkeCANoTZflpJXlUZfGImaJoLLwFZvq") }, + { XHDR("evbngiwdmdlgpbevyg", "qFxkYNNlBzjscsUBupshHoeOQlZKyEnCujHKROIQx") }, + { XHDR("nbhdoawnmpjzjtijxss", "JhheMHoENrPpLGeXmNlEZ") }, + { XHDR("bhnbla", "yWcFJjYNaMtZWhEolheyJFokRNKwvRIOyoLakpHRlOAKiLVaNuFVAUxR") }, + { XHDR("o", "ZSbLeUHWmutqhRdSMzLFEUjczypmaokBLdNrgDrSyCzhiByMTgAAuyGsUtuooKKZB") }, + { XHDR("tltonkhtsmclket", "DpYW") }, + { XHDR("mktax", "krFXFRUsYoEQSaMqGcefoCWsiuIYBZsbnMSFJdjZwXFUpCPccxvUWRkXwwNXRmAbGItYCAJz") }, + { XHDR("vggthesa", "vvYuvdItLLzMbwRYoavdjDuc") }, + { XHDR("xzfkkjdfqcbduqvcny", "cdSGQftScFsDvYG") }, + { XHDR("imm", "nZZaGpgIQCpeTbgslQoJATBBtViCQrqGmnnaJulKYN") }, + { XHDR("hnfrzztuhgvgzgldpifd", "WwTtPEppmdPPorepmNFCOeNKHdnyEOBaBOaYHogTGKCmJksUF") }, + { XHDR("zlvaolkxxwwfpke", "yfqGYnkJokiXYuihtPytKzCeGyCqmkvIzcFwGhTDxnUCzGVnH") }, + { XHDR("ge", "zGRONTXoQkTOIwYItfwqDaQFtmLbZuPvnZ") }, + { XHDR("ztwb", "cVMNNskZDVDxxtYHPYbHbdRDTERDxmeFikhavkTGSbkVM") }, + { XHDR("szu", "dJghDxddDvEHEJUpkNbOcLSimrncLOzVRZdxpAXZSChQIGDDXTtMxYMzVNhnApUJ") }, + { XHDR("b", "UChYttdMSsYTrAJrssZGmtttnOJGMbzbkeTpMh") }, + { XHDR("kisbaxnolgntxp", "XXgssykBkSBUeNAtCUQSLGAyLZJygVapiANrVzfQVIYXqiTcAimlaVYEUmhngUEFMyJSwObAkcQcYT") }, + { XHDR("zcjrgtlxxwrzbrcoxalr", "qpCXkcRsCiDSoWT") }, + { XHDR("yygbxmamimqmqmjwtz", "mApeZBBgNKTpZpNbfIBclMHjrxBmgEdT") }, + { XHDR("rztxyoqcfvdgwx", "NomOECQJYhTcYAnPTkXUISgHaMxpkdWRcHKYdLRuhqKU") }, + { XHDR("lsidkknytjwwwtvcdeg", "epABMHi") }, + { XHDR("zbvdjlhcdjizvui", "vhwPcnjfXxuXCLYrSVLybDdJwCunrFVdmNRis") }, + { XHDR("xhmuzx", "ifqpRQBYfJtuLCqCWXEqYDLxErxVrzhhhTXAQmwUOdbXXjmVPuFFU") }, + { XHDR("gfueu", "sibJxiAxhZMgzaPrjMOUjzcvahXfPKplAC") }, + { XHDR("ssjbjz", "jSxRxPuwBqRjGkgOMvuTEVIxQertgrDFIeM") }, + { XHDR("afbbpwlyzkj", "Bph") }, + { XHDR("vnllhtpqevbiuewr", "CHPyuuOHSNEpNLKMvFsbtgnAzxbmjCjQqNIgCBtqSnEZRTLKGZjVUuVarrV") }, + { XHDR("brfuhoqpjsio", "bNuqGeqHhGcDNdzzJPWHtpfOophJjDriZOXpXKxyObOdydNBqSpmEiMJm") }, + { XHDR("xxlvigallayttbj", "mvlkwaudtkFJmHLwvakQQJLAdHgUYnsrnTCWGiAbihXgSkcBTGVxbvmGRyUAEqm") }, + { XHDR("gycdntah", "MknAqzLutuVxGdWcbtBWw") }, + { XHDR("bhjqkzvnproaheu", "uauGtiMVLYFpsGFSprsZVKyPERttPWXQDcNJVfRXWcOqoLoZWDAzsUmIXQuCotLWMtOtpKtKFVfudVHZ") }, + { XHDR("tnqvrdgrfevkrlwjx", "dad") }, + { XHDR("lsognnsgrvitssdi", "jOhNGchKUygiRXlaCtIgrBLgtaEEASEecxVRybdWojFOEwCUFkbDAdnNsMXcV") }, + { XHDR("mdvgp", "viqPYYncImcjNwYJyuOEhpirjW") }, + { XHDR("uitgae", "VsADEIAPyCjWtpVgWtxBOHQfbrzxZbOblrGRUfZgdVzlEEH") }, + { XHDR("ujkegxzetcipobqv", "FT") }, + { XHDR("tkigdcqhamw", "zKXmfrfReNVWkjiZXErFoMidLSDehRo") }, + { XHDR("i", "FroBjlUMTmRUFWQRVGXNYdRRWlTHDoFszXSxcWMKDbpapiVFObepKgM") }, + { XHDR("gossoiwej", "hUwiEGpOEEE") }, + { XHDR("qtomcbgohdxxzl", "wlKCbxXkprEQpDiN") }, + { XHDR("nauemt", "btcyuQJRepmCFMVkerDbglBhOOoduWjSAxAIUtCtSZfTMjNppOEPeUpESTNTgaMNybqsyIUVwZOh") }, + { XHDR("bzknsgehlfslaybyhn", "dQiSUoERtZibvNesSpx") }, + { XHDR("uxecpwl", "glXQIYQtFcTuLYCEIGW") }, + { XHDR("hylmbxvqo", "itoujIrLKISQvivFzpKmoeesEfanMjOBCorHDWhsTMqwGeETABILeaPKndDACyGItGHNehc") }, + { XHDR("w", "gIWcGQDPcYJATWn") }, + { XHDR("whgmxgtfrdblijibffe", "hEHteqgAsPRnjMYFSobMu") }, + { XHDR("qndprepeulespzdasyym", "AUuJQrvTOPzqaWaKfmPcgxSNJdKrOLIqSwEVXVuvDoVVsQ") }, + { XHDR("mfhmezd", "msMUHEkiDoBRQDMeTZdXMAyimnCIlZiYAY") }, + { XHDR("kskglxkjy", "thCbeCYVQxpNODnJLkeImsYz") }, + { XHDR("qhfxzctxwbdcoaoywqh", "TTTlAbCLtKOZsSdxxaOQwjHSfnZKoJWiPbCqgmZTubVtIkwcOQPPJvRQELKUibPjyIvgBemzX") }, + { XHDR("wrdyeejeqsxjweuimu", "RHpjrLasyiUfrVGtXgiVP") }, + { XHDR("dfnnwoujbcm", "QiS") }, + { XHDR("wrpdif", "T") }, + { XHDR("lhgwswo", "uAMRvshbQrLBaLqSYiIGXqJItQUnkeiWwtzOzMXTxScb") }, + { XHDR("rctsodpgw", "F") }, + { XHDR("yzeancwl", "yVTxpMMarTGfhujHdYZsnkYHXFWsKhc") }, + { XHDR("bzgbiwzoyusaivnaymm", "lUzmbvAxFEDvIOqlPoPcyIpxFEhrXDoXDkiGORuXdvWCsfNrUnLFPaLXpqGXwTIvBobcJCPcdIdL") }, + { XHDR("foadstkprwiq", "CohfKWBUIJRCzOouCFrz") }, + { XHDR("xtcvera", "Iy") }, + { XHDR("kayxqgsmifkljhbhju", "pSnjETugWvFNmRMXVaiIOcqmllpOwHRbmuPAYGXyaXpuBtbHLPxktw") }, + { XHDR("pedjvakst", "qIsjfUJhqHOyCjXVgpOcqBPtPdiPVq") }, + { XHDR("jcrgdmtecdxy", "OJZYJhrUZpWLmjHXDhAYMTykzgDLIXarNBPEDXSkDbxSLkUbVNUzxkzkrxXfHlKvocCB") }, + { XHDR("dskhnrxeidbkmujuukq", "rcoivaYczxAsWvZaNIImtGJgZzTCZLTdAAQFcRPgiNpMxjoBSQIVokSdbRRttVGksqcS") }, + { XHDR("myuwpxwrwj", "DrJcQxgwOPzOkvneTcesZtocdMuidvplOiZBFFBtImHBySzjAXyTy") }, + { XHDR("yaiefpmlyloulocpkkfy", "TbbsMeKgHHGVpRrjkcKT") }, + { XHDR("zddfurwhkvjlbd", "iRhbjgmmTQiDOerxNIeLsefCHCKNbOVMxBpZzSRGNYRCQfSUemhlTsku") }, + { XHDR("flgypgfzirq", "vjINwrubCJsAuGNfdxpcNWgOhrcXZ") }, + { XHDR("xljzyugrvqrlicm", "zzxFjClaMdoJbxrKwhFKCBqqoaBlyVrWDLEraekplCaPCUxDHjLWgp") }, + { XHDR("cwqwyzzjmxjbvrcaa", "KOnAlZkvDABdMKFpLx") }, + { XHDR("vhfthalnyicccnalegx", "EEkUwSPDV") }, + { XHDR("cyctjw", "ReEujjTXpGsnBSolugysiP") }, + { XHDR("cqnrvfnybnzlrgmknwlr", "cNKlragGNcD") }, + { XHDR("gr", "diorCBJdCIuMKOrvpjFYLUuCJEmGoDdZypyAnqJNnXOpiy") }, + { XHDR("yuhfhivpsdcqh", "rAaBDGLywxHjzxsKuqmVHS") }, + { XHDR("nokozoe", "OBjF") }, + { XHDR("pnp", "SkdUXNjDEkRglViJrsBnVRINSWAwNCTUdfXCYFotHBNEhcxkGZ") }, + { XHDR("kmozibcffsq", "PrjitHItdQDALAGrJUPLHCcuOxTN") }, + { XHDR("a", "vJQbpdRhDqDJtXkIlRcJvZhJDPlujfTregyANKQRDfuXaoJaMvhy") }, + { XHDR("ypvump", "RcpHYRFehVJQbYhskmiBQsBhNrDWNQLUyXw") }, + { XHDR("twyplprekm", "mprPyYmvNyyYmqIVQpOKpxodEWOPxSNeGSLmHTnZVGmhidkayETUaBNEWKyCMjk") }, + { XHDR("sfkakidussitekam", "okzbqRMyZXeRwqMNnFDXGKoBBCnVnsZRYmYYgQtFdxeevLEzhb") }, + { XHDR("fylvyr", "GDnmlHR") }, + { XHDR("dvcluvywtwh", "orWcLEvrhhA") }, + { XHDR("obdlzxpllhmyodazk", "tOhFzQtdUjMOiEz") }, + { XHDR("nhbdymlpiw", "YYRjVgnnwnytlwrqpvzNtIWhCRAXwIAodZuBiKJxzeZvJNnctyEUenfdpuMiAWWKHSFSzaroimhfROS") }, + { XHDR("bhgwvvfsyfdswtggl", "p") }, + { XHDR("krvfkddrwga", "HramWaDlYP") }, + { XHDR("xidafo", "FldFbXBubKBByMatmvtikIsZgXrASFyrWXktyWKSVPHdNPBEzERpBigZOokpCjfHczoCweqTNCMx") }, + { XHDR("uk", "OuYQtHFJtoYzoThyyxTcAHYzbOJslQjcZSeUDTIHVaxHJbTDkXnVXnAXbmHAWqpWDqmVIrIoTVghq") }, + { XHDR("v", "JStxsiAeXmHUQyQDiqfaalLLTGWgOCZIdFsPou") }, + { XHDR("gardcbgfxthfie", "hxCKhHWkQdREApGNtsVcaPhibhMplrIFsAEkQIJhGazkSlQRU") }, + { XHDR("ajxlmkqxkh", "LgdGyXwriAluBUqLscGeuRvhCiBcvncMqNREckwtaHnhXvDoddzGZdbferXU") }, + { XHDR("onjfmfocekhkfq", "ZTViciCIty") }, + { XHDR("hmweqabohnpehvclylfl", "CseKCDseSauSgBgwGDveHqOYDXoVTIcfsDwxyjggGSf") }, + { XHDR("pogbrsseo", "seQTualCNwspwsNPkMEWirywcViWHZyK") }, + { XHDR("ukbbprfke", "sIkHpcfUbwCGsULlauixQagpAnkLwCwyGFEwIAdCnAS") }, + { XHDR("wizslblsvqq", "aMAaijQUyIkSWIJUVJgyfTstaU") }, + { XHDR("rrczzdnrfwyjxk", "TgRNFcKwtorSMFtgjLFumUUtTGZFkFqJEzAVIhCIlcaAHHxZZnsbHYZgXpGaGeiVtzMS") }, + { XHDR("bfyom", "PPJbroCsNsYJbMqghPoiprSvrSTADootfnHUQQodWIrIqWTpvsQiouTyOHq") }, + { XHDR("v", "tdfeHjZJEKJBZ") }, + { XHDR("dcrlcdcpfc", "cwQxHBUxTWFLIevjZFBvXVFQGOHXWNujgKjvBXdVPbpthJl") }, + { XHDR("u", "LuhLBlUmisZQjOsnJQTyQnowotLhBfyOmzcKqZaFDWpWcTudRNlWjfkGDvxayRhGDbSHS") }, + { XHDR("snjnnmgwossecpkqqkyb", "dSG") }, + { XHDR("hyfqcrvpaw", "YZIupfAFIQjupVsicweVxBMoefnDDtKSjstCBxSRTZHGZNgIqkzBWXWjsTHcyAHIqDQLoEDsnZtTtjx") }, + { XHDR("qexpfcldciyn", "XrMXgRyeDdOtKXjVrLECQRRInlBlQFaHFktvNliyKCAeNVDu") }, + { XHDR("scqnembmkqijjb", "aIBRadsqPAXgVgThvdoHcFcmpG") }, + { XHDR("alwthyiqprzntoqvg", "SSVyDDzTspWgDsKfsENxhCDKxtOHFjOTozaaQxUfkIlqwTkfvPikArEiqmfGfIGgJrhzSZofCFx") }, + { XHDR("sowh", "CZcxuYspsoTZsbEiDve") }, + { XHDR("pnoziwfpnjqdr", "YIsfmEqCuvOIFVImYUIsRHRCDrRbuflSlHoXVGYicmLppcZlFsyuaAgVKuKfzJbCZNIaw") }, + { XHDR("bvvdxxbvyfphtxzv", "TORjetuADQzMDPinFWJxLvHSaIyZgaKozdvYYNVeaOkdgUphTzfUSBGYyRCjYYkIgkc") }, + { XHDR("ibzaxixxmhntwhtovce", "ZeLBGrhjsAPSiqyfeGfjuAnlnVKtCPRtqcUYVRFaxOZBzUPSLSZvAYmbKKNflmHnkhfyisfZxWGTWTW") }, + { XHDR("grjgkgmdoxee", "qajWUtJzcUqZdbsMnEQSDKnRFtQzwJjSOXpdBaPUaM") }, + { XHDR("smvrpv", "iWbORJtCvPngZKnHrduFtzXIEOyIrCfl") }, + { XHDR("tk", "XPjLBKxXNsLKnVFJuLJegvMEZkN") }, + { XHDR("elpmenbbdcsft", "BydKvTaIqaQURIa") }, + { XHDR("qfjd", "LEzMxxeEjpdzAYgWTQmywYKmAWSdgLzhYSivORWHArHnXIeHVNLiaiJjpLbskSmLKHtOOjcMtGTLfWkb") }, + { XHDR("wesgoaklgmijapfko", "VwEWILnGSWxggWDOQysDOdd") }, + { XHDR("gsabumnkhsqmjktfvum", "orLFfeRpxuBiwrqbayWtVQVvqeVwdAeSLZbQpQoKrwKxDQ") }, + { XHDR("ilrqbrfvvmmuplkmoqr", "kRAGcbPIraLPIErBPYHtyBqBGylUteBuJRoYmGXjAyetEyVeGJgoQxpTfyyxvpx") }, + { XHDR("hfofzt", "eeTolmBErmwwPvzsxgeAQTOhUcJtHGmEqmHWEpVsYNhRqSzJnABLSzYb") }, + { XHDR("mtfvmnnqhxm", "gIUrfpbUIsbNJvpnXEIsRpFjjBq") }, + { XHDR("ujtzmmjkvifu", "WvTEmBQgwlifCnX") }, + { XHDR("zrmwyajwq", "ebjHbgkNiMuYrmkyXQztNcbYQEXzvIwUOZDDqndDBPXVqfuAMzBjAkHyvRAYTFvteeFRsLmFmAdBwkc") }, + { XHDR("u", "jkIkSqogiEJCWWZkidHwTBGil") }, + { XHDR("snpcswtocbghhf", "tptjKhwxahknCPnbZTlwKQLfiFUFsOGENURYexyvRPVjmm") }, + { XHDR("vpbsvympyvzlxhhea", "zctjmZSZphwazUBbZVWQlfXFUlnYltfatYruyCbqJZWZvImWuFTOOSAmihKJBKMSspVDzDbTqshDQMy") }, + { XHDR("mxwtbgdpxbloswheupxo", "RuSRBRmGlNfRyjNyIV") }, + { XHDR("drmpswpmhiaudlpn", "nqgnIZROOJzszTAP") }, + { XHDR("zvwwvwrohpuwuip", "gQJYinKyPZBaUlfaUzUnxqNZmqscEIfSSZ") }, + { XHDR("zwougyqkiintv", "ldLYapcOyrYMAWoMmFJimFaFH") }, + { XHDR("uwjyeigcfncryxxazs", "vIqERLjrKYCGwPDVuxdD") }, + { XHDR("mqt", "GdHXdZgTSHwefiGpfUoYlfkvtjciHDDeWoltWdgbeVfIhgUNCfEUarbqmpN") }, + { XHDR("jskjgzeycdoptiu", "YeRzcEftbtvQDRBanbUCuosNCVloVMDddOumHGEOanBAMSfaLpdyMtbX") }, + { XHDR("rdswbminuarmptv", "yoRErmYHYBBoyJHSiMmekfADbZSPQlb") }, + { XHDR("bwehvkkbkd", "tyveokcSmPDmdWxkVqrWEWBOeZbFEUvTTXIoxJNsTOAGSNOjxExw") }, + { XHDR("zuhmcnsdgseiwusrofp", "vMotGEwGgmTDwDjFJkNGcFCk") }, + { XHDR("bbhqkbvvieu", "RTBMWy") }, + { XHDR("iovhllkpo", "pWfBGGSxgSEvAabTcSeZrcBMjCXxXGGkpoBCMFOUKvqWfwUpmjNGumyktctGMgCujAfmOj") }, + { XHDR("jzazflbgxf", "PKzMdybyYdYydUEDstkjQVr") }, + { XHDR("ugsuqvzyazdxmznj", "qKNbwkxBnrfLdGuLPTfZAzDkawjxYM") }, + { XHDR("wjekwpvls", "RwutN") }, + { XHDR("ojpekphvmluazyagj", "nGHUpwYTauOGWeANyqnkaHDsvgxYrVqLkJFBItThRNVfHxeHCpYsxlXTyYZNMKnTaaumfomYX") }, + { XHDR("kmoa", "oZUdFRKRrmshRSGyRhnIXTEkMpDTEPuICQmNvwPkwJOxcjxQ") }, + { XHDR("dihtrzdg", "bTNcFATJDzxNubtbEcUgSfIrsYTdobiOPxjwVzRwcwjgK") }, + { XHDR("febgusrrgmhw", "xgKLTKhBkCBhehMCWzbKfIJYsWayEdvzabGCeMfROWhlpprOJlgaXNafahof") }, + { XHDR("hugnriwcgibam", "plhMrEnECkfhljWUJNoCUZmGo") }, + { XHDR("lzupz", "XMak") }, + { XHDR("prdetdyoanhos", "agEDoftdvsTvxjkUVhNjCz") }, + { XHDR("hnckkqnhkczyycfysgr", "qoYDOGxFLqwLEalhLIeKsSvTwaUjurbNicsXBlqyWrksXktFdrLxUosjVpgLYiMSE") }, + { XHDR("eymthrbhjkutjamd", "DBDEoB") }, + { XHDR("la", "hStOaAoDxUeENtjpdjBpcXIOzdajXoNwoVdanxktiaCpDSVAQFjjtqEydPoHKjLbrEmuOejBOnX") }, + { XHDR("v", "IFtvCUdFitblIoqbFOLlpgMEtZdrbgvCWxcmGWialeKByTSfsUpvkQTnsUBplJEomtMbKEakGas") }, + { XHDR("xwkkhntfexfkekw", "LiJHnSLvLAboJGeLXYnqhS") }, + { XHDR("gdkzyq", "pFWyBohROxRxDUEGYOpfHGVyrgjeyiXCa") }, + { XHDR("ypoqehaxbajhhyttx", "ZtcCrTUwFyKageAavXueMmxDUZyIYrKISfvqTPQorVEsDJRssXAVqVcgoKkcDkigcVVVZjBCrOfyfK") }, + { XHDR("jnvka", "RIEkDAtbd") }, + { XHDR("jnfspqwgdq", "PAMQrMOIWdtVCOrCGEZFIdrdbtJOLSAOaxnCisWYdom") }, + { XHDR("rmdlpuxgsgsvfm", "lWxriDZfjTjhHEgaWNxLtpqZWvfSbeoHxB") }, + { XHDR("mubueo", "mnunFxwiAWTWepdPDomODHgmOaqhjfUdRPCdaTTu") }, + { XHDR("xzhxwhzgx", "kwhNrgBoxkDPPkgqYJANygOSKtCosizhvWwpLoPpIqbVHRqbM") }, + { XHDR("zxyvwnpcajktbwiqwzoc", "XPwCPPiqGSrPYjsxdph") }, + { XHDR("nhedohef", "H") }, + { XHDR("xfs", "dTMQYfwhhISCFAmSSIsH") }, + { XHDR("mspmthmlblgcflhpntl", "eCTokKhGUTUZNViUDHdUFveTrvQOGIleJthiHGmZNzZztDWhQcMVcAJIDvFbcSesnSKSnDMVGoga") }, + { XHDR("awriksnwrehqqyhqq", "SLMyuPoJfYOvyXNxVjkKHSyatWEUj") }, + { XHDR("uvrhiz", "giPyDBGTWWDULYZwfbFtfKEZWMHDWdgxgrPhaJUnqhfGZTwYekmUi") }, + { XHDR("hlgxzcnf", "NgwaQCASesPCzjbFhsdUBWKkasIhXYzWh") }, + { XHDR("zngxu", "GEANrzybijHEBKfZxxILuNfUBhruZahHXeHSrUCyVmALVtPYTpfqbkcfulZcjrXLSRbxcsrvWL") }, + { XHDR("rkd", "VmwpBbJhHbKyaRu") }, + { XHDR("tdidugpa", "AmsxgGAYJfqTSeRCfkKcbTilobxZUiSpBOBBWEFfYGInhykkpCUZEJkya") }, + { XHDR("mnvooqjqstbys", "KEQBGUwzgKQzJVdISluWvgDskFrgaRUERzdTKBztQlmORnpcwNtVHWzInykYoYFvWniEaKxrBEyHHE") }, + { XHDR("ln", "aIqhJHHAxAecNlGcfBKFRZvieFBbzzOHRwJHZCcgddfbHAaadRJCEQifbjujZtNb") }, + { XHDR("odlnvbmrihmcgylfzfm", "ZuQBqsPQrERtxvgoZGdIcDxScsSLFlSFoxpAdoHvIfpjchgDnArlUvbEiXfKYfKGcbh") }, + { XHDR("tqktoqplclurtffzlkbq", "AXqgfiRssyRHNnGxRPUKnP") }, + { XHDR("lsqmopkbzcst", "dcVlfrwJSJpHaiogzBhbFlLXfALIMZTeedQQMjNfVJEfqeImhMfTjhqHMpjmgjyknXiZSN") }, + { XHDR("uumkmgfwdssg", "OInajW") }, + { XHDR("yiucnweipiiykgqa", "bNBxteknNhpTvwN") }, + { XHDR("naxkknykjbalmahaqgvh", "nadVgpGXRYUSCbatPAxWPWhrTukTkdlJWAnEybyMJpJNuaVuADTajPhUWJvbIBBmE") }, + { XHDR("toviaahdjgm", "JWeyaKFqSHZJkVNSsvfDsAeqehvsCzMrJgAZoRXfyftqKxPtahuVeQICMAHoNwbimz") }, + { XHDR("jiikjxmenrgbq", "hkmRBnCPmudkYuETuKlGSkYNOPGuztrGGEZStClnQwhGOMBzLhabrfeE") }, + { XHDR("gkcvhcymrwniyuwfji", "mFoEbppUWtkvvJutKWjKaoHpipVLYaWfcnfFP") }, + { XHDR("fbcoqmsial", "DuNrRKjzNmNJmECfhpfostIdgMrOMjZzRdWtwwKwXMRkhmGm") }, + { XHDR("rvhpi", "TFXdUVDquyUImRrJyAGFdELAgFhutAINcaQpITNVzDBxCOwPfQrOGdvmblJOg") }, + { XHDR("vdok", "rGkuxxnsOXrUyFjKtCYGaQKoPEf") }, + { XHDR("txnublmbhgjyzuora", "LeoFOWyLpBdVCgluALYvNewnCaMvzt") }, + { XHDR("gxucexgpbtaraug", "sZfQsADstTRzJHDUmevVvrjtqQMAcuBwezsJWwCBhJGATAdiFBYuMBpWR") }, + { XHDR("rmiejekwnpjetsziwwlu", "SWDDMmDxSYzeYhTgXLtkDlKCIfWbpktPkAkHiBEYSbUHflTryAVyQyNGBejKotJ") }, + { XHDR("nqz", "alZjnyJzxxdaifWmCmGDEISEIHUsvFuKyYqIsXBuvBaBDwkYuDSBXjlJOPVHZGyVp") }, + { XHDR("w", "koYeVxfAApPrXDcqmgSlXGXkjSxcoJnKWHNXfTIBfCCNxOJjCyIYBdgAhfxTPqiGFAWBsNMyQqKAvsf") }, + { XHDR("whx", "XUawHfLmhlCusUviZxQZExSGDpZGlLsQn") }, + { XHDR("ieiyrtwfbhsmgncwfal", "gsYEWSGxOOQXQbQymRXFHCanBWodIRLOGugpDAutiWqcUkvIQcVOkCKNWcczPfQsfNyGJUoQdsiICmd") }, + { XHDR("srewxmmpnshgcubwqr", "WjOpdzHZknyicuNsySgllZAaqWFdYoXlNKxckjUEhWqPSa") }, + { XHDR("nxxjsltlumhso", "GDCMgDyCZyaTQuCPYHYSWCSWgZuEKn") }, + { XHDR("rfpvahahaijupaoqxr", "YmAOBrYIiOjBpfPnfmGvyHEUuWldzkMWBasWlhSsLrcisAzvklcObrqbElVmVgBMGrvkZg") }, + { XHDR("tkeyzjcroqrhaf", "LnvMZFzmaQAucubROiwSrdxotPoBLuWzcYbPRDHXCMTOZTyjTlxzJQPlPhFNUggJNiSrHjdTr") }, + { XHDR("neitbimhmihda", "gRnkyFSDaaPJrTEVGk") }, + { XHDR("wyatblfbagyhksnkme", "NTTSHZbvIxNmeqjKqxNysqmktOIBKBTgxjKrUoPTZoCwWISACrfYINfsewX") }, + { XHDR("iotxdybe", "WaTHznMmGoMmROtJFdfAUvlEAsAkowiUUbNunZbkSaaqvLiLUJWlOBwQxiSvpSSturbDDHqpTxCxIr") }, + { XHDR("kwvqlyummhrffmvholmc", "IsrEisrETDFKRuYEeMamMYeQqUkSUNlPFzzxHgTuxSq") }, + { XHDR("djfiqftoy", "uDuWBkBoIFFYqTfuPFzBTYtxqfaqPLvanjuFgGHucmowuPjzktsYkDNhnrYfLccepcLaH") }, + { XHDR("oaznybpih", "EMlnoXhSRAUXjVLwrsuKKQy") }, + { XHDR("xomdqrfnpg", "EYlKVCvPlrMdcnVqLYSYlfJEuxgoYoekkcGsgxbyZkLEdDqeuUbKdZRNbPrGULOiefqNjLuVLFl") }, + { XHDR("jgtdtchdez", "XiXIJFMaegLoJuqtKucYLFbDKOZKzrcsBpovLmMXvb") }, + { XHDR("bzhknofng", "kSfRMrMJafSaliuWyr") }, + { XHDR("nwwa", "MzZYXCccQJFKJVHnRbhDleOhxHEyQrV") }, + { XHDR("wvngguqiitnhajcvn", "LltywkigN") }, + { XHDR("qgunaazl", "dWiozKWDhOFlCKjJLufuwTzTypQHuwPGhFQimxcuHAGjSINyQlQoHUYSIoKsHC") }, + { XHDR("fxshqxqrhjffjfbaik", "NvEBoRvQrdKqBbAKtCHcQOkrSInVcsjyezGrfouAHRWGjifQGoiyZpdtQheEPBV") }, + { XHDR("bwgh", "kSlzUMsTlwwDDCriqmKJWowIVyrpLkzcyndvoTvXefobG") }, + { XHDR("gw", "sTCAssJSzOXPYHffRQwFpAtsmsGlUJEKZoFSWTrDwTaSoApZncFahoJuDlrPquVQzWRwDEesZrp") }, + { XHDR("t", "grsGxrvwFGPAOJFDFnTKeqOPvTdKJscUDKTSczEYumYvQVmmxAuGQhgOhygZcHJSVKlfpTd") }, + { XHDR("ynkkdjglb", "YNojsbrwcYsvZcVlxYGrACHjHvyJEyNspdBbRnrnoJgVnu") }, + { XHDR("bypqaahmckkp", "BgJLZPNGSsBbEAOkTrtEWSzKkNFkuvlSonEvjZxUoad") }, + { XHDR("agpgxaacnhzbi", "UAdHobxBPIttRFfwzdwqGvjmIjQkGSKuzpslIKLHBoEAmOsJoRDoMjUGYOnLwmkJfHkdpuzzKSMkOFOb") }, + { XHDR("klgd", "LPhTowuUSeklcyR") }, + { XHDR("glzbjnjexztaqvlzgyh", "krdnHRaiZr") }, + { XHDR("yumvtkelqqw", "gRPPBwtdEKsFWzomoPjsQksbUSlqOPaZSjCndLiWIanpUrbvqFOPBpqLhndNPkKdZxFBREDhOqkHsdy") }, + { XHDR("mypxkloyjhjnrsptll", "mNubzClQBysktvicAWzGovfOBcSGOCsERifvlDiOXxrKyenClyWdRmiwtB") }, + { XHDR("rciiesvslcuxvhhv", "oxenVacVDoNEmNUNATrOwKiQoOlaMhvnnaaZhQolwHAFJZerbJXsvuxprWuKIkqliTTrBtvDOrTh") }, + { XHDR("aagqlmzhdsnvyetjbj", "hdsmBTROkSmDSpvrtXxlNDz") }, + { XHDR("vwjisumfmeiunrmj", "TKWgspDiGEmnAtdXuaYjpedWetsnSUEYKIbkgoQXAZmgeBEo") }, + { XHDR("cnedcjadydy", "VXkLqUsCeVYqTJnGoSPsYHQXuuHDnaGpCEUC") }, + { XHDR("puijkhxiytcnnef", "wrYAqriVvseuabqVseeoZasJRWZjNVYO") }, + { XHDR("djunvvlodjk", "ICOKbfvmPYMOrYSdWlkyHdedMZgaNxieCiCjHNHezckmPnCOOpdLReWACTNuprekijkZQynIXARVq") }, + { XHDR("xlffkubmwslmllu", "IibwRiYqLakifUideNoyRxSqOgoLwazY") }, + { XHDR("lzcolqjvow", "rRLmJzIDKhdKDuGtVSI") }, + { XHDR("kfmqnrrfcevdkpcc", "HvJxseAwYFQAKhiAzHABQCLyHffCOu") }, + { XHDR("snvugyl", "qyBoWhFdFxwt") }, + { XHDR("iemiezzjygtv", "rnQTWIEaKMjYKoVrGFWmaTgHvPUMcpXMEvvVhzZzUYZlPADHDHiaMZToLBfstDenCkOa") }, + { XHDR("lph", "NficVAZkTSKV") }, + { XHDR("oapef", "CNxrMKvaOsjQVoeGnJKunujXbTNgZpMZaoqEzPUrTVHpIcXnLojehxoblVqpCjCsGl") }, + { XHDR("tkqoldqfugpnxekpobf", "bucecSAPYdQMjhGoftjmoxip") }, + { XHDR("pgxxapvkpewilcmqmg", "hgGpPxzzyqGlyUpNtJCGnsVmmjajdZJIiiFUQxjxiQNLwJa") }, + { XHDR("jxc", "ZGUb") }, + { XHDR("pjah", "QUQkpjwS") }, + { XHDR("rgwlyjaniks", "lAtIjfpkHSi") }, + { XHDR("ledwwcpiv", "JBgQrDvrbUFgRDGrKtUdWDPzoJvIYqVCirVW") }, + { XHDR("wiwb", "hOIvobPgNQeRADNRAOUqg") }, + { XHDR("wsyajvn", "gAuWvQpNf") }, + { XHDR("igfoj", "HLCmgL") }, + { XHDR("edtrfoz", "upCUYqLghJYQUEBNej") }, + { XHDR("qybly", "OgdYuIdxFwvDSzVapCbdEoGBzuEaHWKRrwCJGXWulynLLtRLIG") }, + { XHDR("tnms", "xlsgnddAJLN") }, + { XHDR("qhquzqk", "EEKdFIbQRzOxFYbveBMhrDGPV") }, + { XHDR("obrtfjwzsqe", "QETw") }, + { XHDR("bpqdfyjcumkpmccpooj", "VoxnUZdWQWYQVlHNzUDvnhHrYVfMjILdDSvQPridDluSLkNnrXyFaTnZVOHFUkQWgq") }, + { XHDR("nxke", "GHdgAjowSjfmZkerqMVeSfFbyPQkTJRIcDYCsTCidRfebNzvLGYqRtHgxCjvOMzycWcXqlyefOU") }, + { XHDR("omcyxfheecl", "gwWODUWesHQDYDApwbaIlctzlDoQmBVYhtfzjrgGV") }, + { XHDR("f", "zGTTsHlcgRjZTBOasAAXuiReAjxafCQrcGOLmZcukDGvoZpyOabFYWWnUIbRiSCZZkOjhqpc") }, + { XHDR("qjyfhcjean", "ClCCFRshtOBuhLwZbGbvkBVgQOeqncrDMGyqSFKbjPpqRl") }, + { XHDR("ztzluehtbxdbpswec", "ULGblQokBHGlHzdhIuILaoeaUKpqUdAYUQzyfkUoCwdnWjmoWkoUcZDPmKxCQLHrQlVqgXBknOVYnd") }, + { XHDR("uvwgaxyqoxi", "AZIpcnvzblXSGmhougNYOWJwksLk") }, + { XHDR("cwzrhycioftxludxbei", "MOYwGUhKZlygUCFBMllyBdkitLkkXNbccPhDQpvMMrFXeHmRWDXtbHnBWcckHOUXhwOoTuSTWKT") }, + { XHDR("ylmemytst", "RLJWAlqefRwJY") }, + { XHDR("ybcbtnsrcgde", "IqRBiKFqntjQjykcZaYOSaKLMaWxELYLGVnYrFLPinEzfgyYYHzwSiSIYObfEPpBF") }, + { XHDR("pz", "mX") }, + { XHDR("mypbutgkguvubc", "uiJgfuOwuWhikoDMQYRMlUHqVLZnWopaXJGNePtAEXiTxhiyUyBQ") }, + { XHDR("fltd", "RQDrYlyoKWsomisTHP") }, + { XHDR("ivctfpuomptdfapy", "zyICaPXkJPYMpcgKuMMdxYoEZqgcWXeIibgZqwRMgqrZuhMWdlTEsMHMITbYifEzaQlZmOVLUKFpg") }, + { XHDR("tawnmedzxkil", "TikoxVsFrlQgeIivNBnslNEEGYemeVAxpaCZVkKqRfPs") }, + { XHDR("tuabmxltz", "ITdvQsslhvUaenBwQl") }, + { XHDR("ckswymvmykt", "gmdsGqvxeOjWxkOiSimHPtGdWDavqHJigYYqsEjTefUfKEJFlsmgAtK") }, + { XHDR("n", "eSEtLolABC") }, + { XHDR("ihtaymcyqfe", "WIemBSmLaXuUcRcsPFGx") }, + { XHDR("bvknctgibmbdu", "wjqUeCtIIpvWPzxgKrIDzIHgGVSdLK") }, + { XHDR("vlfdza", "MfEGUfBYy") }, + { XHDR("zyvkza", "j") }, + { XHDR("fpa", "SRXkrwEKswrCiAuwCIXiLKWtkNhaEClhrEngCSIOfpxUXxgyryXGWbxgIvxGtGynHOLzYV") }, + { XHDR("loeyc", "BnCkhZhEztkCTidRoEMRgLcLlaewooVPczuuHY") }, + { XHDR("wttiue", "HIKyaYrvteqxMiXgLdAGctbBTzoyRcApBSVtVSLrpQalkVQoJVsUChottmwlANOUlqWfjN") }, + { XHDR("bpjajg", "ribOwCdUREehrRtCyomCKJAxLJUmRGxlpfVrLsmgsQrxANLlimMaHrjlhCRfEoJXggBYLBdfhABmEpw") }, + { XHDR("bpbatvjdktwodzyb", "KQJYsVOgSgQJHlthdAjLsfCcBBFgOkLFjfLpueXkXIKzbOZTzQzkkupLqdxUVWEhcrMqqDdfCswJjbsk") }, + { XHDR("x", "FKJKBTMHRTiqEaqECsogacXaobiO") }, + { XHDR("iqwln", "qJyTFuxSEeVAAKrzojiqgeBTdYEJtLXDLTQQMMeWjjpRjPsOBHLYXo") }, + { XHDR("pfxerbwgrrrzwjpsxg", "dfiofhgXmBSWZvVbYLRYuQYzCIeqU") }, + { XHDR("rzqvyijblzda", "JSzzLKGxHIgxCLjbctXOvFGCihsfzWthzKJSkqV") }, + { XHDR("fewhziztfpqyprzvk", "uukmhbtUITFaCwsOlkaVcvgOlpRIsPypMehycaqvNHVmI") }, + { XHDR("hjyzadumzwqevnibd", "gCuzNFhsMpo") }, + { XHDR("ajxrupdjrjlmbhjqla", "qqfNZOTBMRmXvrzbgkFhDorYRLyweiPJZNWnMuRdEydZtUjHwIdoWBncChkRhvvsZBBaBlVt") }, + { XHDR("kqbvjsb", "gUoGTzdYihbTPFTQPuSjbJmc") }, + { XHDR("osxqwuswesfasyfu", "NUtIGjssgshHYGkbvBcFtgXYNFqBooFxv") }, + { XHDR("gb", "RPZnBZEFvqZPmfyRdqGCbMTzMvFAMUFu") }, + { XHDR("nkzvgulec", "CaKPxqohGUzLMuvMGAHblxMnxoZaihtSUaaVZGrOmTomUpUnAWxeBAmcWzi") }, + { XHDR("umobwkncgxtrq", "WqpcawUeFgzwbMHdvbtkWAsDWcluzsQTXGxaBPsLIqjFbHXyjKHCFQHERBgZhmiERidrJfPzCgC") }, + { XHDR("gqqunsdvpar", "gutJIAhwZtootocMYmCnZABvJdhOdkRM") }, + { XHDR("dnxiyoqzudbpokxhdoll", "ykkcnWTeAdwYhXycClzIJlJqlGWjTciGVKjEJoonfeKGlyCKgrTgSyQCrP") }, + { XHDR("vigmjnirxnoatsgrr", "KvSZbemuYrqSXHNJiwXbTMYsTackXLPLuO") }, + { XHDR("cllji", "wjHtkXWRMHqphVVucLszaYqGeJrfMvafvSeqpYsuxzSLrbJBWFGpMfBnmU") }, + { XHDR("iz", "qnGwGsWgJQOyGgwnvKXKwdMnHbZlbCalOH") }, + { XHDR("umg", "GRtPBfzFlxPdbJNPrRPXLwqYZoQekF") }, + { XHDR("qnknnzumny", "MiUgLyTeukrQclZCUYgUoHXFZsudAMxHQwCZmdlCCtdROPkoCmivgvFVSi") }, + { XHDR("mdgwld", "BENFVPvFEVTpZYWftZVXBdifgPWMhRrcljBOEHqIIAFBXDKHAaHBpZKhvrqLaxossUXacNYkb") }, + { XHDR("babaypn", "HtsWKWLzL") }, + { XHDR("kghcooyqoyfhgngb", "BpSeEqcMAnHbjpJZfysUcenPxJOpvdJZKwmkCY") }, + { XHDR("zesskcwvmeb", "AuhwDbySIKUAxAyvHNmtKfEf") }, + { XHDR("vflvahhtrolqwinn", "gxE") }, + { XHDR("u", "wrvoLlvxaHLfgvGxQhnvMaiaLvNcHalevbDMrfmGZocmPrMpvaNj") }, + { XHDR("r", "WgnCbRowIDtxpqWdxsucmUtKtvuYJDmlLxVOmOVpyV") }, + { XHDR("iywliwqiobrt", "ByMHtxoTMms") }, + { XHDR("ktcfrbggqqorppqlx", "boskGJgmEzMUJunUjuGcocLDOWfKeYYnyBbSafTnGnUcRivNNzdTVVHTmiORdGdcrurdFjOynzjMUHK") }, + { XHDR("ekrrr", "FEuiHeSruEQSyDquVDSgNXwdpHmCRAovkGlRoGovXMPBYeUUCxJIyjl") }, + { XHDR("nozidvfursbj", "SlvaNkJwWJ") }, + { XHDR("zmtundyiv", "qixhEiaHHdKSwklwRLAdxPjibVDghNKpiIPBnGhZqTPhvhaTYHwJyfdwurPaiSTSErT") }, + { XHDR("qqftlnsribg", "lXboFjyJGtzzsnpPBSAfOZCNLvHmQOSnpIlsAWGhelHYiOTTAFwZBxSewxHRUVSAZKUwjVKaQy") }, + { XHDR("d", "CMutsQGMLdZJvpBNUfJcpwUqOCccJeZwDxSsZUvrpUmalAFQdENsUxXdWwVfdHXrdlXDlepOXkveUuIw") }, + { XHDR("muesdkbtrqmt", "wrsxazpVutCNMOYerVXEEeXZyJQxjsgYytHjXo") }, + { XHDR("ihxahxxneqlfbr", "vddBNIpCYJYCjeLPLHHSZvRsCGJxMLxbiUDfSVgAvZSZwjcCqxeJ") }, + { XHDR("xkoengnle", "NwJSRxsrSQPKIFfUvFFMeXuOcZdfNGzmUrjMjiWgnAWnOclZhAhcevxlqElceFTawoa") }, + { XHDR("ltvervrbpjsmauyy", "RZzWUAyk") }, + { XHDR("vnhijtflom", "g") }, + { XHDR("epojf", "erMtImqMEHbXLaXFIsdOvXyIZmKRixJFAzGGcFtclPVpzh") }, + { XHDR("kvrfedwmdleptx", "BKnfsIDPAZWQTpGPlxzElhVnuYUVJwvBcQNZsihwzUiBScvZksYWZBuEkTBmvHKCeYPLJhvIp") }, + { XHDR("lhcakmpxzfs", "MLabgEbXgzERnuSTktZouhwLFFkIuIxQwjLsijfcWqUDyNrpytrxLi") }, + { XHDR("gojw", "IqZKqGvavlPeYrNRWtSF") }, + { XHDR("kmdwchmqk", "ulggdjlYDoJFDYWD") }, + { XHDR("owxfpqps", "oweZNxooGskdYERaqRniGkNXCnqbWZqVgkvCCEaexixTdftSJQCUmkuz") }, + { XHDR("yubupewl", "gOqoXdtivMAjMUjATHnEZm") }, + { XHDR("ctbx", "erVFnRiVryAFiToqnVzfGVoVpIYAOTRxCjhIvakHKdmCzY") }, + { XHDR("rdfr", "ZHMYZqcHUvNRXzAzKNkwuouvFbdDcwCVwxDNnjNtCAChYEyeKTy") }, + { XHDR("njgydhvkqih", "dsvi") }, + { XHDR("gaajt", "CcrinxtqWuFjMQWYCbHtFDwA") }, + { XHDR("wdqpwxkoxzhxaioo", "YpJPfhLYZRif") }, + { XHDR("camxkipchfppneywke", "bNtiKXToFONOYkxQ") }, + { XHDR("naznqcxjtir", "YkxNVymoFjPmuQaAucuLLBfCAzuMvUUCkTnRjBoYzznVuuzixhLHjgMAUCMXuVTM") }, + { XHDR("bqrvovyaetalfjuowbo", "VLmtCAioYEfKYCHXShZgxCLtNvjbhNoVmOmDlDLjvVZgbSLcUgPO") }, + { XHDR("agzbjvg", "HSIkRVzfvJurhjuKytWFLehQbexkFJeHtD") }, + { XHDR("jhzmmgspytvqixvz", "bncJNxzKOgnyNzCwVGFdelDFAkmZKneluuDSfsbpGqZgWHNsZXyHMSnMqHbKjETirxr") }, + { XHDR("sfofjidivunrhmmjwxu", "wVllGlRcePsAreSnaGsaoOLbMPinYhROsIpzKQJGRAipGGruaErWIGqcGOYChAfzjMWVgAxqs") }, + { XHDR("en", "YEEakjxJWCiLteRMxWxxpvoYKcXINwHkDitJpYJWgkYJeFQpABHvqHuGFOvSuHlwfSayTv") }, + { XHDR("npowbylnhqt", "SGyvuGVwVSyiCnWhBZNsOoibCIFDhklmpmvUvnisYXoeMECFjALvikOnsujVdrZLa") }, + { XHDR("eybeop", "cbfKjhAAsQrdsiehSojmtKxZgzReSICOYLObkiklJzpKCoFWeHNNtncgiEQvxCspO") }, + { XHDR("zkclmxqhzqrby", "CerFKgGjUetxhCOpRKeRzIbJUZVEWFEQLMgMQaeVtBEeMYWzCfvzfcMrzqtcRLJZTWBEdMPe") }, + { XHDR("izwxzn", "FzwFYwIJRZTwytusihxVRMH") }, + { XHDR("eojbizbtfgmd", "NOxSxvlKFcgcxemsBDBLky") }, + { XHDR("pnwhpdqnxfdext", "AKyuscVxFlTulbJSGXDrzKDvHny") }, + { XHDR("m", "NyAnlInDLnOufkvmwvBdhzAEewMlTnsRCwxLTlcziLeTSNjhoKjLGCXUbD") }, + { XHDR("fklhsqhnaqqzkcs", "eaWmQPztfwAlBYdgdJCufTGeM") }, + { XHDR("rihtfhrnvymuz", "pozmgqmBQ") }, + { XHDR("tilhdxubeepwaaz", "FlWjxuAuNvyWqsFMQybaqzDftqzELuySl") }, + { XHDR("p", "EgtxOBWUsrUACBsWzfoiitRtmb") }, + { XHDR("z", "jsPmWDSocbsKJmZzSwltvLEpZihRgEAsBUaIdHzriXsFdLniqEydBCZVUsrlu") }, + { XHDR("tigg", "uahaAqpJrWpUZUNzvPxXhpXkpzogtsVjGsPBRGFSvcYUYKStbmiyXRaEYAhVTWUdyhnSkH") }, + { XHDR("bkyo", "rGeMBMqNzoFWIiDxzhENRYMgmXRJqXyrDQJfzmIivmpGhotYeZvRZteVNmMtUXHniQCtByLxPHk") }, + { XHDR("stnemkuudczl", "kleyWcIdEwImSddbkYblscltGvq") }, + { XHDR("sjiorbv", "uuwMgTZjQXVkBETWLQHqZfjqpQiOslvCeLvOaIzJox") }, + { XHDR("eya", "LEUVAvAPbOwqpnktXZPxwDnvSLmnBvldjcQbGpqryEBqHm") }, + { XHDR("qlenrrafilhrcqvyb", "RzAWLEpDyOdSkEQYrTJuoyUvhqNKvbKS") }, + { XHDR("c", "UrwVHWsnPXuPuKXNSqxVrTtIiDLZGYFhxOoxPgUeGigwviwluwjKpgbklMRceZtYBGrwIJHSYt") }, + { XHDR("tmkhdpnuxnec", "wDvtUhcmaLPLoLULzofu") }, + { XHDR("bjdufmskkubbkdopzhbm", "fGrRGfiXNniMdZCFoyUCSCKprlpnAzOZYPumuuLrWLBppdjrpKYXXTBJRM") }, + { XHDR("iueweebqwue", "OGMzfrWMGQfoVrmmLASmMSZAbxq") }, + { XHDR("g", "VTRlNOdWGwQojVTZYSpzcBDPwjpvapqthOWUuQe") }, + { XHDR("ofw", "ldyPnpflClEzLihsQkdOmgzsTqlZLnNsqzwscFZlrODq") }, + { XHDR("vgnnyrfuwymrcrrxls", "NLxPRhHYOMDjeJJaUqOgwLVfvJiRIZMOtrCuduMxlOXzatyCOqpEYw") }, + { XHDR("buscnbbogjmvrf", "sCctNVbgvVHocxULzCYXhBHsubUCaOoiTkZfzEtJYzbCsLHdreOwIkkoVppj") }, + { XHDR("kmhwknrhczji", "rgNaLcFtQrgMzZfYSABgromdFBXgCfRJRtHXVNTOmwLeUlBeiEFOcKmveIAnIRPUwOpcBIc") }, + { XHDR("kqdh", "xahnfIAypPAVoscKxdTBaNDIgtZmvLLDMOxkpYlgbLyZRTpgfkdH") }, + { XHDR("sqh", "NqAlWDtqjuNWoAbCorozjXupvogesJDdbisqgGJKpbpdTARZAXnmPSphTDApZeLsGKcQSz") }, + { XHDR("ilnzgrp", "vnyqbjOEIWlcFOkrkcAmbXdJiVkWSpSQprSOVrtSKwwYlpz") }, + { XHDR("pcawyrjtc", "uHCKkxxpXVxiBadRePgYerrfTfMGQOBCVAnbxT") }, + { XHDR("db", "cdzLsGttuDGVmerUVefKOdn") }, + { XHDR("ofsgdi", "BsgwHKvweeHTuAORM") }, + { XHDR("aefmfakmpc", "ZmGdWASHxsIHWefvyDCZLY") }, + { XHDR("dltmnulcxxwmoipdq", "qvhELpVbvVycfnVXDtSaGnGMSajeBbnjkcKTdTdPExCvLqHapPpqpAeiHGYaGaZFiypoZwiQio") }, + { XHDR("gdboledecqej", "JrMFhKiVZfkLCUwGXZmQmllFcQNkYmxbsrEJVuAZmkMyWQTepvTLfBRrLxBTCipRxFUUyitMKM") }, + { XHDR("twfwpcxxk", "myaGgTYcGuqNXjSMtKZB") }, + { XHDR("gezdjoramnhg", "VKgPHbYoYNeAvfYatIcyzzMPlQNIPWMWCtCfprkXKTsaMVjXdb") }, + { XHDR("ylmhm", "bOhMhaRcePQxoAyhXuOWzYioWnLhz") }, + { XHDR("rkxnlyuv", "oLTKgoFhotzVoAbwVnrkykEkbYUjewkoILpgP") }, + { XHDR("cpjsfvpxitvezz", "wTLtMLuhSrHDWTRAWWeSYAkpMWuv") }, + { XHDR("ezoygcxwzaswtponjoia", "DpQkrcRHUnnjaMSYGySApZN") }, + { XHDR("xcmjiyu", "jDSXeGeMQQqZDGQRTXGvikR") }, + { XHDR("ekecfaiwzbxhntuczdd", "GgbxFRLmLylqiueIHtdqIHvoeNL") }, + { XHDR("mwnpzjnfhtu", "IJyCzhlJ") }, + { XHDR("mqvlkx", "GNGfBioaggEnIvlMHvQnPGCHtGDotyoGTCgghsHxzDWCbIUafRmpXyNWSlTYibAS") }, + { XHDR("bcepmu", "EzmqQXeyldWdfPdGZsjAMWDPqiVbJwgsMVlvupRv") }, + { XHDR("vqwsxvwkyomasjgnkko", "vKokIRnOltXFYPSrvyQfJoGgWoBLybwOxXyhcuxUVeJEJPuqoDVcMlofeT") }, + { XHDR("enzhr", "VgyJIGZChyOk") }, + { XHDR("uwsrdkeamkjytxhzhew", "mCFcyNIRmXijcgpvcqwCAKstMVrpOfpeSMBYiOzsXRSxKnM") }, + { XHDR("wdu", "AY") }, + { XHDR("zsamdmabs", "grdRBqsupNWXabZUtLpluqZkzjjeISVhMLOyNUeozHonPLPBQxqTuxmGAW") }, + { XHDR("xnkhkjfrfsh", "hhFFdMUjcSWjCAtXaGJzxpTGWJaUTIgVFNW") }, + { XHDR("gnnjmyytawcuqnbtnaw", "GsMlgjtDp") }, + { XHDR("zchlzkwydlttpufiqohv", "aoqAmBiBIjUVPyyQFgcNrqqeGLRJBExAzfJWpwpkFKwDirjyouoLTFQiJZyuojWSVpwW") }, + { XHDR("hnphjeai", "ERgdlvNIBNDoBtkimoVgrWMHcoXUAQeJsouqfyuEjkBkUWpmhhQADikQjkdRRTYlz") }, + { XHDR("xrtvydpxwq", "YxCzJScvpRUsNrRrXIHKLYnHjjEtDsWrQCxyBOuSelvimajOIDaZszsWHqBxBjCqRBzRychYwyl") }, + { XHDR("bfthteqsewjtsq", "obyRXtowVLBgrBDkrNFuEYxStWpxlypuHEsuTEAywvHarlziZiIcesjNqBALxbATxGLeMyMv") }, + { XHDR("yfpgkx", "xwHWjTGrUJqXofwxXZlctUSlZVHlKYvRuFoAmmqNqrtjPQADXmMEzPd") }, + { XHDR("nmpbvkjj", "hCJRMnJDVOJeDDtzArNpuqGi") }, + { XHDR("m", "UBsiyBLCEFiewYXNCHvUzCmOUBhEfyenKzLcYmHuViOjeEbyhQQTWdJpwbcM") }, + { XHDR("ufarhrhoaacuzgoknoer", "LWTnHuZmbnSkgSEjsxRgWsNigGexRImbWAdLsvvCZiISWsgvL") }, + { XHDR("vsuycrosjuf", "nFSRCzWGNdnyJsiVBNgvFUauaIucGDQcsnVWCFDFFoFEQaoGYvUYLfduTFroLxIjDrT") }, + { XHDR("ascgzpaslttdc", "RHyuncafISVPgTZqUqUpRhaeDIAnEDINkhrJUKfayYOmrMuZz") }, + { XHDR("fhhbf", "WklaIwUgazCwlVBDYasRwrJPkbPtFoFKedYbqFoAckwCHEGhydvZPMPVmVhqnQTVFHS") }, + { XHDR("peyqvwrsbomobjr", "ibHBKACjPNUkjTtwzMMEjTZtUMJlFtrfshmOYKnRlvkyQlXjckAlYcUFVfCCtuAmVRVd") }, + { XHDR("xxchhnrcq", "XnnnLonFoeOBPXlObsSRRGhzLLIBSzNgbuKYIGGmagU") }, + { XHDR("stcbmfalzckdknxk", "vsIvGGoAXkeJTgiisZkzZvHsiCZSznEkyXHIOkNgtXhMIzmlfzgdzVWwZxkHzvBMMxfl") }, + { XHDR("vwrojagbdsd", "fCbtequPdfBTqJhKkpfhQKVbZcZpIvsfsrOgJYtFtgqiZjwCgVSYX") }, + { XHDR("evntmxtbmiaqwxzpaw", "YZ") }, + { XHDR("swpwihtoljkmpjrhs", "vEgHcjaIrbbgsEGJeCZDzOBVJXCfwkbi") }, + { XHDR("q", "kFWwvsKHz") }, + { XHDR("zq", "SRsSHqqyYBOmtoYDKPrbsUTANWarUTOJHSnwdkJPZLKydVYcGUTXdscotncuhGdCRmXWhTj") }, + { XHDR("onqip", "QPJBtylMQfKWzkCVXhYfSwxXoLCXeZhlgeMGqzrZsWqKJKmlaPrkhFKXukCeUBDSLUjBOooGILrfkY") }, + { XHDR("ilvs", "INTDcjeORGomNOKv") }, + { XHDR("mliitnm", "pGuLhBcNFWAQSGcvjpleGMc") }, + { XHDR("qstx", "wwEvdIPHAjoXLRoBCIuFCtGBNOieSjathYy") }, + { XHDR("yzxeemryjvhhxfpodn", "HvFpynqasmQjWbeyLcHHlyHORfn") }, + { XHDR("nhqhaczumawwfnjfin", "iawFHvvDqXtTLusVDgLgfsmyocIbrKhzxFpooXRWXTGGwtLqPKtceYCBtRuHATVgYaDeoknDEoZXG") }, + { XHDR("sysnkwoebysdiiras", "ZtBgCAtdnxuFklwCOIBEcpmZxDlIce") }, + { XHDR("ldlmkszeokqsdfp", "yapMLOEUzTvriIBmmmlNPnpcmTcXxaXuFjlUdkcGovjJjcCQpENNnwtsRjAvLSMQazmHJmFboSSSOjgV") }, + { XHDR("dqrafrsgbrrrfnbdta", "dMHHfsOiPFYwa") }, + { XHDR("ntuhdjui", "ucmBDMyullQBgJn") }, + { XHDR("ccvypnt", "EwLBraenvYlMMrFoeTfIWKmafGRBZElxxCgAZLE") }, + { XHDR("czyepstexxk", "MKwoAnDDHxJBwKbVoMbxIYZsJIAr") }, + { XHDR("jrzfbbbmzvbavouzm", "NuqcmOm") }, + { XHDR("fxyxqdnhirgsiyh", "z") }, + { XHDR("tpevrpldefyhouwaxedj", "HfTPnHIVMKuPgXmXgoihZxegGwAShCaFGjjXdogtLNgBKNGpINdQIAUnMlarAKVED") }, + { XHDR("xjebemclth", "tZmXYYhCNqpmFIBjTrGsCVgpovZz") }, + { XHDR("ycdknlwmcffcqcwwolxf", "LvkugqnGfuFZMIHrVOXEFftpOCWoVgXIsRaaWRSYtOiJAZebkJTFxcWOvIaRVoKEEhyIAFBvkZ") }, + { XHDR("qzcnrhvyincs", "wxCoWCtexjyaSWpEskKotuDnGwapliJbXNGVNnPlvDMNFVSaJ") }, + { XHDR("acteaygshslpvsnpld", "wHcjqDadMs") }, + { XHDR("ijxcbnuh", "KAFzdXGYCjxhsjCDcwNw") }, + { XHDR("nzjggn", "JcJPwBjfnrMuHSGuwdsEnQFoHURgyNsiQFCzOPImsqEVIKmNVkvOsgCmpoUS") }, + { XHDR("zskyehbz", "jPznbwLPsgLCrLFKYdRyhaqIsQnuByruzFkMQyaqlvrjNGSTLPydBPhcRfSnWKgipkYViUsMyJQ") }, + { XHDR("pqmrpkzudvvfxovccvul", "vSZdqILPgFSJgTRCYEpURRdgN") }, + { XHDR("kluxchwnoevo", "ipQDnxKKFPtqTYuuTnieNnUqwYJCdUjHBweUQRqhnCAjRaPLBXQN") }, + { XHDR("tgxuredmanbxugqt", "ODnshUiWEgeASiZTyHCbkJYMaLVYFNSTGYFtdDBdCuht") }, + { XHDR("pvmctpjvpmhie", "dTBycLSyWavBeQ") }, + { XHDR("wwrqlbgghfjynpe", "GiOOuBUY") }, + { XHDR("toxypivzduvwo", "GDlaNfmFQXxpWYWGyGfatYHKlrfUZKQMOkfsAqbUiPxECbRnPGAl") }, + { XHDR("fulnpqucqzsdfjvd", "ucVVvBodHCbRQTOIiZaBMgkjSsOLPgCsDyqHyhzICDaBWRyjMKdHH") }, + { XHDR("cv", "iUnZxTYvtGgpmvvJR") }, + { XHDR("pskajplpkmeykrtjj", "VJdGiDuGRJbvkluKUyToaPFQItiazGkDlbsvriHedJSeCgFoQWZhYiaLVndthSNCDHIYlnsYEaG") }, + { XHDR("tgsitnodrnx", "uDeOeINHfESqurHsEcNjnyOzegORs") }, + { XHDR("sr", "JaGRVRfpBALZUrhvxKdpvDlBtVfsPAIMbVAjxuMjniPujwxBHSmgHopBUHve") }, + { XHDR("rdgqt", "WffIIIsfkHlQqHGlegMpKJOvKGytMiKmFLobDktmrBKVhxcJfzMQxyZV") }, + { XHDR("hvucrpxolopeikvmseou", "wuxn") }, + { XHDR("mibwyxeuzd", "xuujkxjkbcBYakYlJoyl") }, + { XHDR("iomfgqsnmbmjnyou", "HyuSRajxEbIJWSXqhHaVMqJvNbjsUvAgOivgYjBBLPcRGVqRqfWhYpeQCGlJITbYQEMqjmGLx") }, + { XHDR("bqwdwagyqbyabrepkrcf", "blLcPZlcjBBXWgisUcmFsxPTHgQfEmiUmtjC") }, + { XHDR("liv", "N") }, + { XHDR("ilmv", "ZEEZUSFpFIEqLTlvSdkCKbqlPqXObTkOpocTsLwjsbVbZUCdhbzyXkHMnjAqtZwWVS") }, + { XHDR("pdivxnehiqjqk", "pTIlOSdiERHPMYEEQGrAJIfVAZAindEMDgTlIFteAxLSVxLdlyLGsamhpGRoXnkW") }, + { XHDR("atgyldots", "InMkSNVDrDbZCpJHmiIBgABDa") }, + { XHDR("dlgppxce", "aSYptgGtvidZSZwcOQIdknjFvEYHEGJQkJCTgCviNcCmmbGwVnXVeVBpsAYPVfvRwXawLkwWmL") }, + { XHDR("qbdpmzelb", "YhjLsvpUslykWpaBcIgunjQWjNkbYSlefgGKHy") }, + { XHDR("dq", "dGxRPLevIuzYJQgigZDSXhWyBdvfFRCHkZbxgJpkPSRrYPFmqMmrzYWIaKhVBj") }, + { XHDR("rumpqstlfqqrrdyvs", "UbmcLYKFzZ") }, + { XHDR("xtwnyw", "ErAWzPcigydcRIuLvvTugfRSdyHlZasByDUnVhyzpBsdFpyUYBG") }, + { XHDR("afrejawusnrb", "oJIXsiJGrjZmdHBShPimPIJTygeiehMzhqvZmjXtZCkFFC") }, + { XHDR("kf", "TVbTzgdUMUGhE") }, + { XHDR("tmiiltkezpilkk", "vsZOWVIpIpLNnvYzzobqGKVfFvHiCzfHLjSfLQefYcPftTjZJVd") }, + { XHDR("vxvwprfharefckwhsvoq", "avgYVScnlVlQyfAqLOqpetdrAtX") }, + { XHDR("honepigeikh", "uekwxNputOwIGdNdHcoIuRPYpiozp") }, + { XHDR("rubqgu", "zdTqIriihYKKvxeGapPnrKrhMVVwDmGWfYLFFeZQeSoNioEqYTNdoycTmAFiFOmVSxuvlisCt") }, + { XHDR("muzfhxbeaumqqovlvzwy", "yZvLteokUDeQp") }, + { XHDR("fjoturtpvhdzug", "KXpAvEFozuJQaZvnOHzCffTgCS") }, + { XHDR("fk", "ybdzpNSqCQdAegDzpoolTWlWZlTmyNVTFsqRvleIYaMFBghrEbDGEKiToYzlzgRaXpqhxlEdqzDmhKn") }, + { XHDR("rquvmkvhuuikzbmkezrx", "iohcvQqbCoJADIjXjuDRVIbYeEbaNXXHgPel") }, + { XHDR("kbdshdepg", "WDHolFLyLLSeYEUJkeNkjgVQCpVMneNDcBSnZcptGapmsCavLQykKAjfcxUjkktXnYvFWDPjMVHPyl") }, + { XHDR("antqpdqbwe", "ADXNvrzGXXPlAPPFZrLCHtzmLyZRiYzMKnBJaTdkttjcfvjImgpXyAXLbggbEBU") }, + { XHDR("sldlvqwhi", "UjTJTHDaGzMBXIRhSIMQpucaaVtJwEq") }, + { XHDR("jhbhedjxrkge", "clCzJZl") }, + { XHDR("megby", "uIYVwGgbinJCLCjSsONFXGqzYoRgrScclCabAqevKWUxPibWGcCjjbIfuqoGbBIVzF") }, + { XHDR("v", "zqFiJZWKk") }, + { XHDR("ksqtzvejopzprfzwkgp", "kpkKRYbqeGTmLYOh") }, + { XHDR("yzjaprrp", "agNXoXqWVhDMIVrfmwfErrveHihVcefKGOwbpPELXWJNnEUwsPoKHCAIrLSjEGamtjbZlIM") }, + { XHDR("pzhumxzagc", "TMKRLPyeeHG") }, + { XHDR("jeoxylpnrudggbznn", "gryjepOsUwUXVvjt") }, + { XHDR("jbqdtrot", "hGZH") }, + { XHDR("befvldowigtw", "QItWcSDEJwwvFScysXKTLajmUmiYGGegIfLrApuijQkndFdatUfB") }, + { XHDR("clxqf", "vXbSIZmJcuZvKcarINjPuSwabLFfipWWQFStvFMxSNuiizOZIgaiHfViMJeGwIuGwfJdkz") }, + { XHDR("ghjsgzdumtpovms", "wqPExwywtsHYcJJGRWjxjSMOhADAKOOFDbCAyUFOwNnXzlJuKRPBrVvaAF") }, + { XHDR("mojypfonzvny", "YjHESDlgRj") }, + { XHDR("fgdleym", "IiTGIGSgtOCCWDnUFfWnSqscQPktkppqfOlNHsOAQhxuTS") }, + { XHDR("kzvwlsurhfkxlpw", "QJATFxbKpAzZCsSGiHWOOZKCSeKEcXKZcQwNCrTICbfiSNqbSIrCVtQqVvGnnLQ") }, + { XHDR("hojapjpkgywuvqt", "yNuHyALQsgFxmAJUuIMWyZVmXmwYBZPeYldhOCIKVOZQtjueXTtazKCQrZpXbQCjfgZEn") }, + { XHDR("qqansobylferetwb", "kXfITdoVYwYoAJHVDZpftFeziNLKrRgudNobPtfbN") }, + { XHDR("kzhglsynb", "uxHIdwRzhwkaDPDsFdNSFYYdXmaGPAad") }, + { XHDR("injlaujvuprggo", "jN") }, + { XHDR("lezeqhhebilbebrvwicm", "tphZNwDpPvbbJbFOgRtBQOxUypxPewGaJwnPWSbFhROIaBFj") }, + { XHDR("iiialfij", "eJEHDQJscPNrcZIZHTGAOCRvQsNychNZZXschjnUSXGnXiKVbM") }, + { XHDR("wepvu", "txhdxcuMrFdcwRtSDDHktKASbhHoYtJkHGqzGwUOHsBtvNsuTHIjwsUGJFJLxEazlUs") }, + { XHDR("gbe", "ul") }, + { XHDR("inxl", "zaCVQQIxINjtlVEMxV") }, + { XHDR("zishjidsgguavfatwlhc", "jKMbzBIJWwQOKHgOfRebhRZObGVAqBDYiNPOljWSItvJzBJhYSvHayt") }, + { XHDR("dbbbwuewydkzdlqftm", "HnBCzqTmVaghKfXfOaIrlTmIKkzoipcceCrrqytiHHTUOEURYCtFt") }, + { XHDR("zkqwdz", "Sb") }, + { XHDR("yv", "mjvsYWHHwVQYmeSZZQsDyqwXlajBLyAo") }, + { XHDR("umjriqcc", "FrcqFdXPqFeDUxcCyJkZbmQOLJVcdJAKmQuaIxIlIVBrnRKTTAyomLLlDbvO") }, + { XHDR("weivvamrcxy", "UyJpDUuBIgeOTweaMaJJcwTxOtXoqSVYnjWruMrNG") }, + { XHDR("rvcohamoiupdsabh", "mqCAIuuPHNHNfsJKZORTrlvFHnQzVABjeOnPAxyViMrcAuZBnqyyEInqjxGIxiMlOA") }, + { XHDR("vrvomfdfrohgjbli", "cgbYIYJUgATcNQyTFBbZOeJlIDaFbjgqMnOpeJrwCmDQkqYbxDZJveeAkdbgXCmc") }, + { XHDR("yhsf", "eYpRxyhhmmezlCUkBeGJmLsyKDtVxxVTlAdnCRlINvsVQWLJkSBCj") }, + { XHDR("evrtnyo", "ZltJGecGEFRkT") }, +}; diff --git a/external/lsquic/tests/test_frame_writer.c b/external/lsquic/tests/test_frame_writer.c new file mode 100644 index 0000000..12b5b1d --- /dev/null +++ b/external/lsquic/tests/test_frame_writer.c @@ -0,0 +1,644 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif +#include + +#include "lsquic.h" +#include "lshpack.h" +#include "lsquic_mm.h" +#include "lsquic_int_types.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_frame_common.h" +#include "lsquic_frame_writer.h" +#if LSQUIC_CONN_STATS +#include "lsquic_int_types.h" +#include "lsquic_conn.h" +#endif + +#if LSQUIC_CONN_STATS +static struct conn_stats s_conn_stats; +#endif + + +static struct { + size_t sz; + size_t max; + unsigned char buf[0x1000]; +} output; + + +#define reset_output(max_) do { \ + output.sz = 0; \ + if (max_) \ + output.max = max_; \ + else \ + output.max = sizeof(output.buf);\ +} while (0) + + +static ssize_t +output_write (struct lsquic_stream *stream, struct lsquic_reader *reader) +{ + size_t sz; + + sz = reader->lsqr_size(reader->lsqr_ctx); + if (output.max - output.sz < sz) + { + errno = ENOBUFS; + return -1; + } + + sz = reader->lsqr_read(reader->lsqr_ctx, output.buf + output.sz, sz); + output.sz += sz; + + return sz; +} + + +#define IOV(v) { .iov_base = (v), .iov_len = sizeof(v) - 1, } +#define XHDR(name_, value_) .buf = name_ value_, .name_offset = 0, .name_len = sizeof(name_) - 1, .val_offset = sizeof(name_) - 1, .val_len = sizeof(value_) - 1, + + +static void +test_max_frame_size (void) +{ + struct lshpack_enc henc; + struct lsquic_mm mm; + struct lsquic_frame_writer *fw; + unsigned max_size; + + lshpack_enc_init(&henc); + lsquic_mm_init(&mm); + + for (max_size = 1; max_size < 6 /* one settings frame */; ++max_size) + { + fw = lsquic_frame_writer_new(&mm, NULL, max_size, &henc, + output_write, +#if LSQUIC_CONN_STATS + &s_conn_stats, +#endif + 0); + assert(!fw); + } + + fw = lsquic_frame_writer_new(&mm, NULL, max_size, &henc, output_write, +#if LSQUIC_CONN_STATS + &s_conn_stats, +#endif + 0); + assert(fw); + + lsquic_frame_writer_destroy(fw); + lshpack_enc_cleanup(&henc); + lsquic_mm_cleanup(&mm); +} + + +static void +test_one_header (void) +{ + struct lshpack_enc henc; + struct lsquic_frame_writer *fw; + int s; + struct lsquic_mm mm; + + lshpack_enc_init(&henc); + lsquic_mm_init(&mm); + fw = lsquic_frame_writer_new(&mm, NULL, 0x200, &henc, output_write, +#if LSQUIC_CONN_STATS + &s_conn_stats, +#endif + 0); + reset_output(0); + + struct lsxpack_header header_arr[] = + { + { XHDR(":status", "302") }, + }; + + struct lsquic_http_headers headers = { + .count = 1, + .headers = header_arr, + }; + + s = lsquic_frame_writer_write_headers(fw, 12345, &headers, 0, 100); + assert(0 == s); + + struct http_frame_header fh; + struct http_prio_frame prio_frame; + + assert(4 + sizeof(struct http_frame_header) + sizeof(struct http_prio_frame) == output.sz); + + memcpy(&fh, output.buf, sizeof(fh)); + assert(4 + sizeof(struct http_prio_frame) == hfh_get_length(&fh)); + assert(HTTP_FRAME_HEADERS == fh.hfh_type); + assert((HFHF_END_HEADERS|HFHF_PRIORITY) == fh.hfh_flags); + assert(fh.hfh_stream_id[0] == 0); + assert(fh.hfh_stream_id[1] == 0); + assert(fh.hfh_stream_id[2] == 0x30); + assert(fh.hfh_stream_id[3] == 0x39); + + memcpy(&prio_frame, output.buf + sizeof(struct http_frame_header), + sizeof(struct http_prio_frame)); + + assert(prio_frame.hpf_stream_id[0] == 0); + assert(prio_frame.hpf_stream_id[1] == 0); + assert(prio_frame.hpf_stream_id[2] == 0); + assert(prio_frame.hpf_stream_id[3] == 0); + assert(prio_frame.hpf_weight == 100 - 1); + + assert(0 == memcmp(output.buf + sizeof(struct http_frame_header) + + sizeof(struct http_prio_frame), "\x48\x82\x64\x02", 4)); + + lsquic_frame_writer_destroy(fw); + lshpack_enc_cleanup(&henc); + lsquic_mm_cleanup(&mm); +} + +struct header_buf +{ + unsigned off; + char buf[UINT16_MAX]; +}; + + +int +header_set_ptr (struct lsxpack_header *hdr, struct header_buf *header_buf, + const char *name, size_t name_len, + const char *val, size_t val_len) +{ + if (header_buf->off + name_len + val_len <= sizeof(header_buf->buf)) + { + memcpy(header_buf->buf + header_buf->off, name, name_len); + memcpy(header_buf->buf + header_buf->off + name_len, val, val_len); + lsxpack_header_set_offset2(hdr, header_buf->buf + header_buf->off, + 0, name_len, name_len, val_len); + header_buf->off += name_len + val_len; + return 0; + } + else + return -1; +} + + +static void +test_oversize_header (void) +{ + struct lshpack_enc henc; + struct lsquic_frame_writer *fw; + int s; + struct lsquic_mm mm; + const size_t big_len = LSXPACK_MAX_STRLEN - 20; + char *value; + struct header_buf hbuf; + + lshpack_enc_init(&henc); + lsquic_mm_init(&mm); + fw = lsquic_frame_writer_new(&mm, NULL, 0x200, &henc, output_write, +#if LSQUIC_CONN_STATS + &s_conn_stats, +#endif + 0); + lsquic_frame_writer_max_header_list_size(fw, 1 << 16); + reset_output(0); + + value = malloc(big_len); + memset(value, 'A', big_len); + + struct lsxpack_header header_arr[3] = + { + { XHDR(":status", "302") }, + }; + hbuf.off = 0; + header_set_ptr(&header_arr[1], &hbuf, "some-header", 10, value, big_len); + header_set_ptr(&header_arr[2], &hbuf, "another-header", 10, value, big_len); + + struct lsquic_http_headers headers = { + .count = sizeof(header_arr) / sizeof(header_arr[0]), + .headers = header_arr, + }; + + s = lsquic_frame_writer_write_headers(fw, 12345, &headers, 0, 100); + assert(-1 == s); + + lsquic_frame_writer_destroy(fw); + lshpack_enc_cleanup(&henc); + lsquic_mm_cleanup(&mm); + free(value); +} + + +static void +test_continuations (void) +{ + struct lsquic_frame_writer *fw; + struct lshpack_enc henc; + int s; + struct lsquic_mm mm; + + lshpack_enc_init(&henc); + lsquic_mm_init(&mm); + fw = lsquic_frame_writer_new(&mm, NULL, 6, &henc, output_write, +#if LSQUIC_CONN_STATS + &s_conn_stats, +#endif + 0); + reset_output(0); + +/* +perl tools/henc.pl :status 302 x-some-header some-value | hexdump -C +00000000 48 82 64 02 40 8a f2 b2 0f 49 56 9c a3 90 b6 7f |H.d.@....IV.....| +00000010 87 41 e9 2a dd c7 45 a5 |.A.*..E.| +*/ + + struct lsxpack_header header_arr[] = + { + { XHDR(":status", "302") }, + { XHDR("x-some-header", "some-value") }, + }; + + struct lsquic_http_headers headers = { + .count = 2, + .headers = header_arr, + }; + + s = lsquic_frame_writer_write_headers(fw, 12345, &headers, 0, 100); + assert(0 == s); + + /* Expected payload is 5 bytes of http_prio_frame and 24 bytes of + * compressed headers, split into 4 15-byte chunks (9-byte header + * 6-byte payload) and 1 14-byte chunk (9-byte header and 5-byte + * payload). + */ + unsigned char expected_buf[] = { + /* Length: */ 0x00, 0x00, 0x06, /* 1 */ + /* Type: */ HTTP_FRAME_HEADERS, + /* Flags: */ HFHF_PRIORITY, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Payload (priority info): */ + 0x00, 0x00, 0x00, 0x00, 100 - 1, + /* Payload (headers): */ + 0x48, + /* Length: */ 0x00, 0x00, 0x06, /* 2 */ + /* Type: */ HTTP_FRAME_CONTINUATION, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Payload (headers): */ + 0x82, 0x64, 0x02, 0x40, 0x8A, 0xF2, + /* Length: */ 0x00, 0x00, 0x06, /* 3 */ + /* Type: */ HTTP_FRAME_CONTINUATION, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Payload (headers): */ + 0xb2, 0x0f, 0x49, 0x56, 0x9c, 0xa3, + /* Length: */ 0x00, 0x00, 0x06, /* 4 */ + /* Type: */ HTTP_FRAME_CONTINUATION, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Payload (headers): */ + 0x90, 0xb6, 0x7f, 0x87, 0x41, 0xe9, + /* Length: */ 0x00, 0x00, 0x05, /* 5 */ + /* Type: */ HTTP_FRAME_CONTINUATION, + /* Flags: */ HFHF_END_HEADERS, + /* Stream Id: */ 0x00, 0x00, 0x30, 0x39, + /* Payload (headers): */ + 0x2a, 0xdd, 0xc7, 0x45, 0xa5, + }; + + assert(sizeof(expected_buf) == output.sz); + + assert(0 == memcmp(output.buf + 0, expected_buf + 0, 15)); + assert(0 == memcmp(output.buf + 15, expected_buf + 15, 15)); + assert(0 == memcmp(output.buf + 30, expected_buf + 30, 15)); + assert(0 == memcmp(output.buf + 45, expected_buf + 45, 15)); + assert(0 == memcmp(output.buf + 60, expected_buf + 60, 14)); + + lsquic_frame_writer_destroy(fw); + lshpack_enc_cleanup(&henc); + lsquic_mm_cleanup(&mm); +} + + +static void +test_settings_short (void) +{ + struct lsquic_frame_writer *fw; + int s; + struct lsquic_mm mm; + + lsquic_mm_init(&mm); + fw = lsquic_frame_writer_new(&mm, NULL, 7, NULL, output_write, +#if LSQUIC_CONN_STATS + &s_conn_stats, +#endif + 0); + + { + reset_output(0); + struct lsquic_http2_setting settings[] = { { 1, 2, }, { 3, 4, } }; + s = lsquic_frame_writer_write_settings(fw, settings, 2); + assert(0 == s); + const unsigned char exp_buf[] = { + /* Length: */ 0x00, 0x00, 0x06, + /* Type: */ HTTP_FRAME_SETTINGS, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x00, 0x00, + /* Payload: */ 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, + /* Length: */ 0x00, 0x00, 0x06, + /* Type: */ HTTP_FRAME_SETTINGS, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x00, 0x00, + /* Payload: */ 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, + }; + assert(output.sz == sizeof(exp_buf)); + assert(0 == memcmp(output.buf, exp_buf, sizeof(exp_buf))); + } + + { + reset_output(0); + struct lsquic_http2_setting settings[] = { { 1, 2, }, { 3, 4, } }; + s = lsquic_frame_writer_write_settings(fw, settings, 0); + assert(-1 == s); + assert(EINVAL == errno); + } + + lsquic_frame_writer_destroy(fw); + lsquic_mm_cleanup(&mm); +} + + +static void +test_settings_normal (void) +{ + struct lsquic_frame_writer *fw; + int s; + struct lsquic_mm mm; + + lsquic_mm_init(&mm); + fw = lsquic_frame_writer_new(&mm, NULL, 0, NULL, output_write, +#if LSQUIC_CONN_STATS + &s_conn_stats, +#endif + 0); + + { + reset_output(0); + struct lsquic_http2_setting settings[] = { { 1, 2, }, { 3, 4, } }; + s = lsquic_frame_writer_write_settings(fw, settings, 2); + assert(0 == s); + const unsigned char exp_buf[] = { + /* Length: */ 0x00, 0x00, 0x0C, + /* Type: */ HTTP_FRAME_SETTINGS, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x00, 0x00, + /* Payload: */ 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, + /* Payload: */ 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, + }; + assert(output.sz == sizeof(exp_buf)); + assert(0 == memcmp(output.buf, exp_buf, sizeof(exp_buf))); + } + + { + reset_output(0); + struct lsquic_http2_setting settings[] = { { 1, 2, }, { 3, 4, } }; + s = lsquic_frame_writer_write_settings(fw, settings, 0); + assert(-1 == s); + assert(EINVAL == errno); + } + + lsquic_frame_writer_destroy(fw); + lsquic_mm_cleanup(&mm); +} + + +static struct lsquic_conn my_conn = LSCONN_INITIALIZER_CIDLEN(my_conn, 8); + + +#if !defined(NDEBUG) && __GNUC__ +__attribute__((weak)) +#endif +lsquic_conn_t * +lsquic_stream_conn (const lsquic_stream_t *stream) +{ + return &my_conn; +} + + +static void +test_priority (void) +{ + struct lsquic_frame_writer *fw; + int s; + struct lsquic_mm mm; + + lsquic_mm_init(&mm); + fw = lsquic_frame_writer_new(&mm, NULL, 6, NULL, output_write, +#if LSQUIC_CONN_STATS + &s_conn_stats, +#endif + 0); + + s = lsquic_frame_writer_write_priority(fw, 3, 0, 1UL << 31, 256); + assert(s < 0); /* Invalid dependency stream ID */ + + s = lsquic_frame_writer_write_priority(fw, 3, 0, 1, 0); + assert(s < 0); /* Invalid priority stream ID */ + + s = lsquic_frame_writer_write_priority(fw, 3, 0, 1, 257); + assert(s < 0); /* Invalid priority stream ID */ + + { + reset_output(0); + s = lsquic_frame_writer_write_priority(fw, 3, 0, 1, 256); + assert(0 == s); + const unsigned char exp_buf[] = { + /* Length: */ 0x00, 0x00, 5, + /* Type: */ HTTP_FRAME_PRIORITY, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x00, 0x03, + /* Dep stream Id: */0x00, 0x00, 0x00, 0x01, + /* Weight: */ 0xFF, + }; + assert(output.sz == sizeof(exp_buf)); + assert(0 == memcmp(output.buf, exp_buf, sizeof(exp_buf))); + } + + { + reset_output(0); + s = lsquic_frame_writer_write_priority(fw, 20, 1, 100, 256); + assert(0 == s); + const unsigned char exp_buf[] = { + /* Length: */ 0x00, 0x00, 5, + /* Type: */ HTTP_FRAME_PRIORITY, + /* Flags: */ 0x00, + /* Stream Id: */ 0x00, 0x00, 0x00, 0x14, + /* Dep stream Id: */0x80, 0x00, 0x00, 0x64, + /* Weight: */ 0xFF, + }; + assert(output.sz == sizeof(exp_buf)); + assert(0 == memcmp(output.buf, exp_buf, sizeof(exp_buf))); + } + + lsquic_frame_writer_destroy(fw); + lsquic_mm_cleanup(&mm); +} + + + +static void +test_errors (void) +{ + struct lsquic_frame_writer *fw; + struct lsquic_mm mm; + struct lshpack_enc henc; + int s; + + lshpack_enc_init(&henc); + lsquic_mm_init(&mm); + fw = lsquic_frame_writer_new(&mm, NULL, 0x200, &henc, output_write, +#if LSQUIC_CONN_STATS + &s_conn_stats, +#endif + 1); + reset_output(0); + + { + struct lsxpack_header header_arr[] = + { + { XHDR(":status", "200") }, + { XHDR("Content-type", "text/html") }, + }; + struct lsquic_http_headers headers = { + .count = 2, + .headers = header_arr, + }; + s = lsquic_frame_writer_write_headers(fw, 12345, &headers, 0, 80); + assert(-1 == s); + assert(EINVAL == errno); + } + + { + struct lsxpack_header header_arr[] = + { + { XHDR(":status", "200") }, + { XHDR("content-type", "text/html") }, + }; + struct lsquic_http_headers headers = { + .count = 2, + .headers = header_arr, + }; + lsquic_frame_writer_max_header_list_size(fw, 40); + s = lsquic_frame_writer_write_headers(fw, 12345, &headers, 0, 80); + /* Server ignores SETTINGS_MAX_HEADER_LIST_SIZE setting */ + assert(s == 0); + } + + lsquic_frame_writer_destroy(fw); + lshpack_enc_cleanup(&henc); + lsquic_mm_cleanup(&mm); +} + + +static void +test_push_promise (void) +{ + struct lshpack_enc henc; + struct lsquic_frame_writer *fw; + int s; + struct lsquic_mm mm; + + lshpack_enc_init(&henc); + lsquic_mm_init(&mm); + fw = lsquic_frame_writer_new(&mm, NULL, 0x200, &henc, output_write, +#if LSQUIC_CONN_STATS + &s_conn_stats, +#endif + 1); + reset_output(0); + +/* +perl tools/hpack.pl :method GET :path /index.html :authority www.example.com :scheme https x-some-header some-value| hexdump -C +00000000 82 85 41 8c f1 e3 c2 e5 f2 3a 6b a0 ab 90 f4 ff |..A......:k.....| +00000010 87 40 8a f2 b2 0f 49 56 9c a3 90 b6 7f 87 41 e9 |.@....IV......A.| +00000020 2a dd c7 45 a5 |*..E.| +*/ + + const unsigned char exp_headers[] = { + 0x82, 0x85, 0x41, 0x8c, 0xf1, 0xe3, 0xc2, 0xe5, 0xf2, 0x3a, + 0x6b, 0xa0, 0xab, 0x90, 0xf4, 0xff, 0x87, 0x40, 0x8a, 0xf2, + 0xb2, 0x0f, 0x49, 0x56, 0x9c, 0xa3, 0x90, 0xb6, 0x7f, 0x87, + 0x41, 0xe9, 0x2a, 0xdd, 0xc7, 0x45, 0xa5, + }; + + struct lsxpack_header header_arr[] = + { + { XHDR(":method", "GET") }, + { XHDR(":path", "/index.html") }, + { XHDR(":authority", "www.example.com") }, + { XHDR(":scheme", "https") }, + { XHDR("x-some-header", "some-value") }, + }; + + struct lsquic_http_headers headers = { + .count = 5, + .headers = header_arr, + }; + + s = lsquic_frame_writer_write_promise(fw, 12345, 0xEEEE, &headers); + assert(0 == s); + + struct http_frame_header fh; + struct http_push_promise_frame push_frame; + + assert(sizeof(exp_headers) + sizeof(struct http_frame_header) + + sizeof(struct http_push_promise_frame) == output.sz); + + memcpy(&fh, output.buf, sizeof(fh)); + assert(sizeof(exp_headers) + sizeof(struct http_push_promise_frame) == hfh_get_length(&fh)); + assert(HTTP_FRAME_PUSH_PROMISE == fh.hfh_type); + assert(HFHF_END_HEADERS == fh.hfh_flags); + assert(fh.hfh_stream_id[0] == 0); + assert(fh.hfh_stream_id[1] == 0); + assert(fh.hfh_stream_id[2] == 0x30); + assert(fh.hfh_stream_id[3] == 0x39); + + memcpy(&push_frame, output.buf + sizeof(struct http_frame_header), + sizeof(struct http_push_promise_frame)); + + assert(push_frame.hppf_promised_id[0] == 0); + assert(push_frame.hppf_promised_id[1] == 0); + assert(push_frame.hppf_promised_id[2] == 0xEE); + assert(push_frame.hppf_promised_id[3] == 0xEE); + + assert(0 == memcmp(output.buf + sizeof(struct http_frame_header) + + sizeof(struct http_push_promise_frame), exp_headers, + sizeof(exp_headers))); + + lsquic_frame_writer_destroy(fw); + lshpack_enc_cleanup(&henc); + lsquic_mm_cleanup(&mm); +} + + + +int +main (void) +{ + test_one_header(); + test_oversize_header(); + test_continuations(); + test_settings_normal(); + test_settings_short(); + test_priority(); + test_push_promise(); + test_errors(); + test_max_frame_size(); + return 0; +} diff --git a/external/lsquic/tests/test_goaway_gquic_be.c b/external/lsquic/tests/test_goaway_gquic_be.c new file mode 100644 index 0000000..a3db7f9 --- /dev/null +++ b/external/lsquic/tests/test_goaway_gquic_be.c @@ -0,0 +1,173 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_parse.h" + +//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC +#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) + + +struct goaway_parse_test { + int lineno; + unsigned char buf[0x100]; + size_t buf_len; + uint32_t error_code; + lsquic_stream_id_t last_stream_id; + uint16_t reason_len; + const char *reason; + int retval; +}; + +static const struct goaway_parse_test parse_tests[] = { + + { + .lineno = __LINE__, + .buf = { 0x03, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x12, 0x34, 0x00, 0x05, 'D', 'u', 'd', 'e', '!', }, + .buf_len = 0x100, + .error_code = 0x31, + .last_stream_id = 0x1234, + .reason_len = 0x05, + .reason = "Dude!", + .retval = 11 + 5, + }, + + { + .lineno = __LINE__, + .buf = { 0x03, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x12, 0x34, 0x00, 0x05, 'D', 'u', 'd', 'e', '!', }, + .buf_len = 8, /* Too short #1 */ + .error_code = 0x31, + .last_stream_id = 0x1234, + .reason_len = 0x05, + .reason = "Dude!", + .retval = -1, + }, + + { + .lineno = __LINE__, + .buf = { 0x03, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x12, 0x34, 0x00, 0x05, 'D', 'u', 'd', 'e', '!', }, + .buf_len = 12, /* Too short #2 */ + .error_code = 0x31, + .last_stream_id = 0x1234, + .reason_len = 0x05, + .reason = "Dude!", + .retval = -2, + }, + + { .buf = { 0 }, } +}; + + +struct goaway_gen_test { + int lineno; + uint32_t error_code; + lsquic_stream_id_t last_stream_id; + const char *reason; + int retval; + unsigned char buf[0x100]; + size_t buf_len; +}; + + +static const struct goaway_gen_test gen_tests[] = { + + { + .lineno = __LINE__, + .error_code = 0x12345678, + .last_stream_id = 0x1234, + .reason = "Dude, where is my car?", + .retval = 11 + sizeof("Dude, where is my car?") - 1, + .buf_len = 0x100, + .buf = { + 0x03, + 0x12, 0x34, 0x56, 0x78, + 0x00, 0x00, 0x12, 0x34, + 0x00, sizeof("Dude, where is my car?") - 1, + 'D', 'u', 'd', 'e', ',', ' ', 'w', 'h', 'e', 'r', 'e', ' ', 'i', 's', ' ', 'm', 'y', ' ', 'c', 'a', 'r', '?', + }, + }, + + { + .lineno = __LINE__, + .error_code = 0x12345678, + .last_stream_id = 0x2345, + .reason = NULL, + .retval = 11, + .buf_len = 0x100, + .buf = { + 0x02, + 0x12, 0x34, 0x56, 0x78, + 0x00, 0x00, 0x23, 0x45, + 0x00, 0x00, /* Zero-sized string */ + }, + }, + + { + .lineno = __LINE__, + .error_code = 0x12345678, + .last_stream_id = 0x2345, + .reason = "Dude, where is my car?", + .retval = -1, /* Too short */ + .buf_len = 0x10, + }, + + { .buf = { 0 }, } + +}; + + +static void +run_parse_tests (void) +{ + const struct goaway_parse_test *test; + for (test = parse_tests; test->buf[0]; ++test) + { + uint32_t error_code = ~0; + lsquic_stream_id_t last_stream_id = ~0; + uint16_t reason_len = ~0; + const char *reason; + int sz = pf->pf_parse_goaway_frame(test->buf, test->buf_len, + &error_code, &last_stream_id, &reason_len, &reason); + assert(sz == test->retval); + if (0 == sz) + { + assert(test->error_code == error_code); + assert(test->last_stream_id == last_stream_id); + assert(test->reason_len == reason_len); + assert(0 == memcmp(test->reason, reason, reason_len)); + } + } +} + + +static void +run_gen_tests (void) +{ + const struct goaway_gen_test *test; + for (test = gen_tests; test->buf[0]; ++test) + { + unsigned char buf[0x100]; + int sz = pf->pf_gen_goaway_frame(buf, sizeof(buf), + test->error_code, test->last_stream_id, test->reason, + test->reason ? strlen(test->reason) : 0); + assert(sz == test->retval); + if (0 == sz) + assert(0 == memcmp(test->buf, buf, sz)); + } +} + + +int +main (void) +{ + run_parse_tests(); + run_gen_tests(); + return 0; +} diff --git a/external/lsquic/tests/test_goaway_gquic_le.c b/external/lsquic/tests/test_goaway_gquic_le.c new file mode 100644 index 0000000..8a8a5e9 --- /dev/null +++ b/external/lsquic/tests/test_goaway_gquic_le.c @@ -0,0 +1,173 @@ +/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_alarmset.h" +#include "lsquic_parse.h" + +static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); + + +struct goaway_parse_test { + int lineno; + unsigned char buf[0x100]; + size_t buf_len; + uint32_t error_code; + uint32_t last_stream_id; + uint16_t reason_len; + const char *reason; + int retval; +}; + +static const struct goaway_parse_test parse_tests[] = { + + { + .lineno = __LINE__, + .buf = { 0x03, 0x31, 0x00, 0x00, 0x00, 0x34, 0x12, 0x00, 0x00, 0x05, 0x00, 'D', 'u', 'd', 'e', '!', }, + .buf_len = 0x100, + .error_code = 0x31, + .last_stream_id = 0x1234, + .reason_len = 0x05, + .reason = "Dude!", + .retval = 11 + 5, + }, + + { + .lineno = __LINE__, + .buf = { 0x03, 0x31, 0x00, 0x00, 0x00, 0x05, 0x00, 'D', 'u', 'd', 'e', '!', }, + .buf_len = 8, /* Too short #1 */ + .error_code = 0x31, + .last_stream_id = 0x1234, + .reason_len = 0x05, + .reason = "Dude!", + .retval = -1, + }, + + { + .lineno = __LINE__, + .buf = { 0x03, 0x31, 0x00, 0x00, 0x00, 0x34, 0x12, 0x00, 0x00, 0x05, 0x00, 'D', 'u', 'd', 'e', '!', }, + .buf_len = 12, /* Too short #2 */ + .error_code = 0x31, + .last_stream_id = 0x1234, + .reason_len = 0x05, + .reason = "Dude!", + .retval = -2, + }, + + { .buf = { 0 }, } +}; + + +struct goaway_gen_test { + int lineno; + uint32_t error_code; + uint32_t last_stream_id; + const char *reason; + int retval; + unsigned char buf[0x100]; + size_t buf_len; +}; + + +static const struct goaway_gen_test gen_tests[] = { + + { + .lineno = __LINE__, + .error_code = 0x12345678, + .last_stream_id = 0x1234, + .reason = "Dude, where is my car?", + .retval = 11 + sizeof("Dude, where is my car?") - 1, + .buf_len = 0x100, + .buf = { + 0x03, + 0x78, 0x56, 0x34, 0x12, + 0x34, 0x12, 0x00, 0x00, + sizeof("Dude, where is my car?") - 1, 0x00, + 'D', 'u', 'd', 'e', ',', ' ', 'w', 'h', 'e', 'r', 'e', ' ', 'i', 's', ' ', 'm', 'y', ' ', 'c', 'a', 'r', '?', + }, + }, + + { + .lineno = __LINE__, + .error_code = 0x12345678, + .last_stream_id = 0x2345, + .reason = NULL, + .retval = 11, + .buf_len = 0x100, + .buf = { + 0x02, + 0x78, 0x56, 0x34, 0x12, + 0x45, 0x23, 0x00, 0x00, + 0x00, 0x00, /* Zero-sized string */ + }, + }, + + { + .lineno = __LINE__, + .error_code = 0x12345678, + .last_stream_id = 0x2345, + .reason = "Dude, where is my car?", + .retval = -1, /* Too short */ + .buf_len = 0x10, + }, + + { .buf = { 0 }, } + +}; + + +static void +run_parse_tests (void) +{ + const struct goaway_parse_test *test; + for (test = parse_tests; test->buf[0]; ++test) + { + uint32_t error_code = ~0; + uint32_t last_stream_id = ~0; + uint16_t reason_len = ~0; + const char *reason; + int sz = pf->pf_parse_goaway_frame(test->buf, test->buf_len, + &error_code, &last_stream_id, &reason_len, &reason); + assert(sz == test->retval); + if (0 == sz) + { + assert(test->error_code == error_code); + assert(test->last_stream_id == last_stream_id); + assert(test->reason_len == reason_len); + assert(0 == memcmp(test->reason, reason, reason_len)); + } + } +} + + +static void +run_gen_tests (void) +{ + const struct goaway_gen_test *test; + for (test = gen_tests; test->buf[0]; ++test) + { + unsigned char buf[0x100]; + int sz = pf->pf_gen_goaway_frame(buf, sizeof(buf), + test->error_code, test->last_stream_id, test->reason, + test->reason ? strlen(test->reason) : 0); + assert(sz == test->retval); + if (0 == sz) + assert(0 == memcmp(test->buf, buf, sz)); + } +} + + +int +main (void) +{ + run_parse_tests(); + run_gen_tests(); + return 0; +} diff --git a/external/lsquic/tests/test_h3_framing.c b/external/lsquic/tests/test_h3_framing.c new file mode 100644 index 0000000..48d1b15 --- /dev/null +++ b/external/lsquic/tests/test_h3_framing.c @@ -0,0 +1,1761 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * test_h3_framing.c -- test generation of H3 frames + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include +#endif + +#include "lsquic.h" + +#include "lsquic_packet_common.h" +#include "lsquic_packet_ietf.h" +#include "lsquic_alarmset.h" +#include "lsquic_packet_in.h" +#include "lsquic_conn_flow.h" +#include "lsquic_rtt.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_types.h" +#include "lsquic_malo.h" +#include "lsquic_mm.h" +#include "lsquic_conn_public.h" +#include "lsquic_logger.h" +#include "lsquic_parse.h" +#include "lsquic_conn.h" +#include "lsquic_engine_public.h" +#include "lsquic_cubic.h" +#include "lsquic_pacer.h" +#include "lsquic_senhist.h" +#include "lsquic_bw_sampler.h" +#include "lsquic_minmax.h" +#include "lsquic_bbr.h" +#include "lsquic_adaptive_cc.h" +#include "lsquic_send_ctl.h" +#include "lsquic_ver_neg.h" +#include "lsquic_packet_out.h" +#include "lsquic_enc_sess.h" +#include "lsqpack.h" +#include "lsxpack_header.h" +#include "lsquic_frab_list.h" +#include "lsquic_qenc_hdl.h" +#include "lsquic_http1x_if.h" +#include "lsquic_qdec_hdl.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_data_in_if.h" + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define MAX(a, b) ((a) > (b) ? (a) : (b)) + +static const struct parse_funcs *g_pf = select_pf_by_ver(LSQVER_I001); + +struct test_ctl_settings +{ + int tcs_schedule_stream_packets_immediately; + int tcs_have_delayed_packets; + unsigned tcs_can_send; + enum buf_packet_type + tcs_bp_type; + enum packno_bits + tcs_guess_packno_bits, + tcs_calc_packno_bits; +}; + + +static struct test_ctl_settings g_ctl_settings; + + +static void +init_buf (void *buf, size_t sz); + + +/* Set values to default */ +static void +init_test_ctl_settings (struct test_ctl_settings *settings) +{ + settings->tcs_schedule_stream_packets_immediately = 1; + settings->tcs_have_delayed_packets = 0; + settings->tcs_can_send = UINT_MAX; + settings->tcs_bp_type = BPT_HIGHEST_PRIO; + settings->tcs_guess_packno_bits = PACKNO_BITS_1; + settings->tcs_calc_packno_bits = PACKNO_BITS_1; +} + + +enum packno_bits +lsquic_send_ctl_calc_packno_bits (struct lsquic_send_ctl *ctl) +{ + return g_ctl_settings.tcs_calc_packno_bits; +} + + +int +lsquic_send_ctl_schedule_stream_packets_immediately (struct lsquic_send_ctl *ctl) +{ + return g_ctl_settings.tcs_schedule_stream_packets_immediately; +} + + +int +lsquic_send_ctl_have_delayed_packets (const struct lsquic_send_ctl *ctl) +{ + return g_ctl_settings.tcs_have_delayed_packets; +} + + +int +lsquic_send_ctl_can_send (struct lsquic_send_ctl *ctl) +{ + return ctl->sc_n_scheduled < g_ctl_settings.tcs_can_send; +} + + +enum packno_bits +lsquic_send_ctl_guess_packno_bits (struct lsquic_send_ctl *ctl) +{ + return g_ctl_settings.tcs_guess_packno_bits; +} + + +enum buf_packet_type +lsquic_send_ctl_determine_bpt (struct lsquic_send_ctl *ctl, + const struct lsquic_stream *stream) +{ + return g_ctl_settings.tcs_bp_type; +} + + +/* This function is only here to avoid crash in the test: */ +void +lsquic_engine_add_conn_to_tickable (struct lsquic_engine_public *enpub, + lsquic_conn_t *conn) +{ +} + + +static unsigned n_closed; +static enum stream_ctor_flags stream_ctor_flags = + SCF_CALL_ON_NEW|SCF_DI_AUTOSWITCH; + +struct test_ctx { + lsquic_stream_t *stream; +}; + + +static lsquic_stream_ctx_t * +on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) +{ + struct test_ctx *test_ctx = stream_if_ctx; + test_ctx->stream = stream; + return NULL; +} + + +static void +on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + ++n_closed; +} + + +const struct lsquic_stream_if stream_if = { + .on_new_stream = on_new_stream, + .on_close = on_close, +}; + + +static size_t +read_from_scheduled_packets (lsquic_send_ctl_t *send_ctl, lsquic_stream_id_t stream_id, + unsigned char *const begin, size_t bufsz, uint64_t first_offset, int *p_fin, + int fullcheck) +{ + const struct parse_funcs *const pf_local = send_ctl->sc_conn_pub->lconn->cn_pf; + unsigned char *p = begin; + unsigned char *const end = p + bufsz; + const struct frame_rec *frec; + struct packet_out_frec_iter pofi; + struct lsquic_packet_out *packet_out; + struct stream_frame frame; + enum quic_frame_type expected_type; + int len, fin = 0; + + expected_type = QUIC_FRAME_STREAM; + + TAILQ_FOREACH(packet_out, &send_ctl->sc_scheduled_packets, po_next) + for (frec = lsquic_pofi_first(&pofi, packet_out); frec; + frec = lsquic_pofi_next(&pofi)) + { + if (fullcheck) + { + assert(frec->fe_frame_type == expected_type); + if (0 && packet_out->po_packno != 1) + { + /* First packet may contain two stream frames, do not + * check it. + */ + assert(!lsquic_pofi_next(&pofi)); + if (TAILQ_NEXT(packet_out, po_next)) + { + assert(packet_out->po_data_sz == packet_out->po_n_alloc); + assert(frec->fe_len == packet_out->po_data_sz); + } + } + } + if (frec->fe_frame_type == expected_type && + frec->fe_stream->id == stream_id) + { + assert(!fin); + if (QUIC_FRAME_STREAM == expected_type) + len = pf_local->pf_parse_stream_frame(packet_out->po_data + frec->fe_off, + packet_out->po_data_sz - frec->fe_off, &frame); + else + len = pf_local->pf_parse_crypto_frame(packet_out->po_data + frec->fe_off, + packet_out->po_data_sz - frec->fe_off, &frame); + assert(len > 0); + if (QUIC_FRAME_STREAM == expected_type) + assert(frame.stream_id == frec->fe_stream->id); + else + assert(frame.stream_id == ~0ULL); + /* Otherwise not enough to copy to: */ + assert(end - p >= frame.data_frame.df_size); + /* Checks offset ordering: */ + assert(frame.data_frame.df_offset == + first_offset + (uintptr_t) (p - begin)); + if (frame.data_frame.df_fin) + { + assert(!fin); + fin = 1; + } + memcpy(p, packet_out->po_data + frec->fe_off + len - + frame.data_frame.df_size, frame.data_frame.df_size); + p += frame.data_frame.df_size; + } + } + + if (p_fin) + *p_fin = fin; + return p + bufsz - end; +} + + +static struct test_ctx test_ctx; + + +struct test_objs { + struct lsquic_engine_public eng_pub; + struct lsquic_conn lconn; + struct lsquic_conn_public conn_pub; + struct lsquic_send_ctl send_ctl; + struct lsquic_alarmset alset; + void *stream_if_ctx; + struct ver_neg ver_neg; + const struct lsquic_stream_if * + stream_if; + unsigned initial_stream_window; + enum stream_ctor_flags ctor_flags; + struct qpack_enc_hdl qeh; + struct qpack_dec_hdl qdh; + struct lsquic_hset_if hsi_if; +}; + +static int s_ack_written; + +static void +write_ack (struct lsquic_conn *conn, struct lsquic_packet_out *packet_out) +{ + /* We don't need to generate full-blown ACK, as logic in + * lsquic_send_ctl_rollback() only looks at po_frame_types. + */ + packet_out->po_frame_types |= QUIC_FRAME_ACK; + s_ack_written = 1; +} + +static int s_can_write_ack; + +static int +can_write_ack (struct lsquic_conn *lconn) +{ + return s_can_write_ack; +} + + +static struct network_path network_path; + +static struct network_path * +get_network_path (struct lsquic_conn *lconn, const struct sockaddr *sa) +{ + return &network_path; +} + +static enum { + SNAPSHOT_STATE_NONE = 0, + SNAPSHOT_STATE_TAKEN = 1 << 0, + SNAPSHOT_STATE_ROLLED_BACK = 1 << 1, +} s_snapshot_state; + +static void +ack_snapshot (struct lsquic_conn *lconn, struct ack_state *ack_state) +{ + s_snapshot_state |= SNAPSHOT_STATE_TAKEN; +} + +static void +ack_rollback (struct lsquic_conn *lconn, struct ack_state *ack_state) +{ + s_snapshot_state |= SNAPSHOT_STATE_ROLLED_BACK; +} + +static const struct conn_iface our_conn_if = +{ + .ci_can_write_ack = can_write_ack, + .ci_write_ack = write_ack, + .ci_get_path = get_network_path, + .ci_ack_snapshot = ack_snapshot, + .ci_ack_rollback = ack_rollback, +}; + + +#if LSQUIC_CONN_STATS +static struct conn_stats s_conn_stats; +#endif + +static void +init_test_objs (struct test_objs *tobjs, unsigned initial_conn_window, + unsigned initial_stream_window, unsigned short packet_sz) +{ + int s; + memset(tobjs, 0, sizeof(*tobjs)); + LSCONN_INITIALIZE(&tobjs->lconn); + tobjs->lconn.cn_pf = g_pf; + tobjs->lconn.cn_version = LSQVER_I001; + tobjs->lconn.cn_esf_c = &lsquic_enc_session_common_ietf_v1; + network_path.np_pack_size = packet_sz; + tobjs->lconn.cn_if = &our_conn_if; + lsquic_mm_init(&tobjs->eng_pub.enp_mm); + TAILQ_INIT(&tobjs->conn_pub.sending_streams); + TAILQ_INIT(&tobjs->conn_pub.read_streams); + TAILQ_INIT(&tobjs->conn_pub.write_streams); + TAILQ_INIT(&tobjs->conn_pub.service_streams); + lsquic_cfcw_init(&tobjs->conn_pub.cfcw, &tobjs->conn_pub, + initial_conn_window); + lsquic_conn_cap_init(&tobjs->conn_pub.conn_cap, initial_conn_window); + lsquic_alarmset_init(&tobjs->alset, 0); + tobjs->conn_pub.mm = &tobjs->eng_pub.enp_mm; + tobjs->conn_pub.lconn = &tobjs->lconn; + tobjs->conn_pub.enpub = &tobjs->eng_pub; + tobjs->conn_pub.send_ctl = &tobjs->send_ctl; + tobjs->conn_pub.packet_out_malo = + lsquic_malo_create(sizeof(struct lsquic_packet_out)); + tobjs->conn_pub.path = &network_path; +#if LSQUIC_CONN_STATS + tobjs->conn_pub.conn_stats = &s_conn_stats; +#endif + tobjs->initial_stream_window = initial_stream_window; + tobjs->eng_pub.enp_settings.es_cc_algo = 1; /* Cubic */ + tobjs->eng_pub.enp_hsi_if = &tobjs->hsi_if; + lsquic_send_ctl_init(&tobjs->send_ctl, &tobjs->alset, &tobjs->eng_pub, + &tobjs->ver_neg, &tobjs->conn_pub, 0); + tobjs->send_ctl.sc_adaptive_cc.acc_cubic.cu_cwnd = ~0ull; + tobjs->send_ctl.sc_cong_ctl = &tobjs->send_ctl.sc_adaptive_cc.acc_cubic; + tobjs->stream_if = &stream_if; + tobjs->stream_if_ctx = &test_ctx; + tobjs->ctor_flags = stream_ctor_flags; + //if ((1 << tobjs->lconn.cn_version) & LSQUIC_IETF_VERSIONS) + { + lsquic_qeh_init(&tobjs->qeh, &tobjs->lconn); + s = lsquic_qeh_settings(&tobjs->qeh, 0, 0, 0, 0); + assert(0 == s); + tobjs->conn_pub.u.ietf.qeh = &tobjs->qeh; + lsquic_qdh_init(&tobjs->qdh, &tobjs->lconn, 0, &tobjs->eng_pub, 0, 0); + tobjs->conn_pub.u.ietf.qdh = &tobjs->qdh; + } +} + + +static void +deinit_test_objs (struct test_objs *tobjs) +{ + assert(!lsquic_malo_first(tobjs->eng_pub.enp_mm.malo.stream_frame)); + lsquic_send_ctl_cleanup(&tobjs->send_ctl); + lsquic_malo_destroy(tobjs->conn_pub.packet_out_malo); + lsquic_mm_cleanup(&tobjs->eng_pub.enp_mm); + //if ((1 << tobjs->lconn.cn_version) & LSQUIC_IETF_VERSIONS) + lsquic_qeh_cleanup(&tobjs->qeh); +} + + +static struct lsquic_stream * +new_stream (struct test_objs *tobjs, unsigned stream_id, uint64_t send_off) +{ + return lsquic_stream_new(stream_id, &tobjs->conn_pub, tobjs->stream_if, + tobjs->stream_if_ctx, tobjs->initial_stream_window, send_off, + tobjs->ctor_flags); +} + + +struct packetization_test_stream_ctx +{ + const unsigned char *buf; + unsigned len, off, write_size; + int flush_after_each_write; +}; + + +static lsquic_stream_ctx_t * +packetization_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) +{ + lsquic_stream_wantwrite(stream, 1); + return stream_if_ctx; +} + + +static void +packetization_on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ +} + + +#define RANDOM_WRITE_SIZE ~0U + +static unsigned +calc_n_to_write (unsigned write_size) +{ + if (write_size == RANDOM_WRITE_SIZE) + return rand() % 1000 + 1; + else + return write_size; +} + + +static void +packetization_write_as_much_as_you_can (lsquic_stream_t *stream, + lsquic_stream_ctx_t *ctx) +{ + struct packetization_test_stream_ctx *const pack_ctx = (void *) ctx; + unsigned n_to_write, n_sched; + ssize_t n_written; + size_t avail; + int s; + + while (pack_ctx->off < pack_ctx->len) + { + n_to_write = calc_n_to_write(pack_ctx->write_size); + n_sched = lsquic_send_ctl_n_scheduled(stream->conn_pub->send_ctl); + if (n_to_write > pack_ctx->len - pack_ctx->off) + n_to_write = pack_ctx->len - pack_ctx->off; + n_written = lsquic_stream_write(stream, pack_ctx->buf + pack_ctx->off, + n_to_write); + if (n_written == 0) + { + if (n_to_write && SSHS_BEGIN == stream->sm_send_headers_state + && lsquic_send_ctl_can_send(stream->conn_pub->send_ctl)) + { + avail = lsquic_stream_write_avail(stream); + assert(avail == 0 + || lsquic_send_ctl_n_scheduled( + stream->conn_pub->send_ctl) > n_sched); + } + break; + } + pack_ctx->off += n_written; + if (pack_ctx->flush_after_each_write) + { + s = lsquic_stream_flush(stream); + assert(s == 0); + } + } + + s = lsquic_stream_flush(stream); + assert(s == 0); + lsquic_stream_wantwrite(stream, 0); +} + + +static void +packetization_perform_one_write (lsquic_stream_t *stream, + lsquic_stream_ctx_t *ctx) +{ + struct packetization_test_stream_ctx *const pack_ctx = (void *) ctx; + unsigned n_to_write, n_sched; + ssize_t n_written; + size_t avail; + int s; + + n_to_write = calc_n_to_write(pack_ctx->write_size); + if (n_to_write > pack_ctx->len - pack_ctx->off) + n_to_write = pack_ctx->len - pack_ctx->off; + n_sched = lsquic_send_ctl_n_scheduled(stream->conn_pub->send_ctl); + n_written = lsquic_stream_write(stream, pack_ctx->buf + pack_ctx->off, + n_to_write); + assert(n_written >= 0); + if (n_written == 0 && SSHS_BEGIN == stream->sm_send_headers_state + && n_to_write + && lsquic_send_ctl_can_send(stream->conn_pub->send_ctl)) + { + avail = lsquic_stream_write_avail(stream); + assert(avail == 0 + || lsquic_send_ctl_n_scheduled( + stream->conn_pub->send_ctl) > n_sched); + } + pack_ctx->off += n_written; + if (pack_ctx->flush_after_each_write) + { + s = lsquic_stream_flush(stream); + assert(s == 0); + } + if (n_written == 0) + lsquic_stream_wantwrite(stream, 0); +} + + +static const struct lsquic_stream_if packetization_inside_once_stream_if = { + .on_new_stream = packetization_on_new_stream, + .on_close = packetization_on_close, + .on_write = packetization_write_as_much_as_you_can, +}; + + +static const struct lsquic_stream_if packetization_inside_many_stream_if = { + .on_new_stream = packetization_on_new_stream, + .on_close = packetization_on_close, + .on_write = packetization_perform_one_write, +}; + + +#define XHDR(name_, value_) .buf = name_ value_, .name_offset = 0, .name_len = sizeof(name_) - 1, .val_offset = sizeof(name_) - 1, .val_len = sizeof(value_) - 1, + +static void +test_hq_framing (int sched_immed, int dispatch_once, unsigned wsize, + int flush_after_each_write, size_t conn_limit, + unsigned n_packets, unsigned short packet_sz) +{ + struct test_objs tobjs; + struct lsquic_stream *stream; + size_t nw; + int fin, s; + unsigned char *buf_in, *buf_out; + const size_t buf_in_sz = 0x40000, buf_out_sz = 0x500000; + + /* We'll write headers first after which stream will switch to using + * data-framing writer. This is simply so that we don't have to + * expose more stream things only for testing. + */ + struct lsxpack_header header = { XHDR(":method", "GET") }; + struct lsquic_http_headers headers = { 1, &header, }; + + buf_in = malloc(buf_in_sz); + buf_out = malloc(buf_out_sz); + assert(buf_in && buf_out); + + struct packetization_test_stream_ctx packet_stream_ctx = + { + .buf = buf_in, + .off = 0, + .len = buf_in_sz, + .write_size = wsize, + .flush_after_each_write = flush_after_each_write, + }; + + init_buf(buf_in, buf_in_sz); + + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = sched_immed; + + stream_ctor_flags |= SCF_IETF; + init_test_objs(&tobjs, conn_limit ? conn_limit : buf_out_sz, buf_out_sz, packet_sz); + tobjs.stream_if_ctx = &packet_stream_ctx; + tobjs.ctor_flags |= SCF_HTTP|SCF_IETF; + if (sched_immed) + { + g_ctl_settings.tcs_can_send = n_packets; + if (dispatch_once) + { + tobjs.stream_if = &packetization_inside_once_stream_if; + tobjs.ctor_flags |= SCF_DISP_RW_ONCE; + } + else + tobjs.stream_if = &packetization_inside_many_stream_if; + } + else + { + lsquic_send_ctl_set_max_bpq_count(n_packets); + g_ctl_settings.tcs_can_send = INT_MAX; + /* Need this for on_new_stream() callback not to mess with + * the context, otherwise this is not used. + */ + tobjs.stream_if = &packetization_inside_many_stream_if; + } + + stream = new_stream(&tobjs, 0, buf_out_sz); + + s = lsquic_stream_send_headers(stream, &headers, 0); + assert(0 == s); + + if (sched_immed) + { + lsquic_stream_dispatch_write_events(stream); + lsquic_stream_flush(stream); + } + else + { + packetization_write_as_much_as_you_can(stream, + (void *) &packet_stream_ctx); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, BPT_HIGHEST_PRIO); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; + } + lsquic_send_ctl_set_max_bpq_count(10); + + /* Verify written data: */ + nw = read_from_scheduled_packets(&tobjs.send_ctl, 0, buf_out, buf_out_sz, + 0, &fin, 1); + if (!conn_limit) + assert(nw > buf_in_sz); + { /* Remove framing and verify contents */ + const unsigned char *src; + unsigned char *dst; + uint64_t sz; + unsigned frame_type; + int s; + + src = buf_out; + dst = buf_out; + while (src < buf_out + nw) + { + frame_type = *src++; + s = vint_read(src, buf_out + buf_out_sz, &sz); + assert(s > 0); + /* In some rare circumstances it is possible to produce zero-length + * DATA frames: + * + * assert(sz > 0); + */ + assert(sz < (1 << 14)); + src += s; + if (src == buf_out + s + 1) + { + /* Ignore headers */ + assert(frame_type == HQFT_HEADERS); + src += sz; + } + else + { + assert(frame_type == HQFT_DATA); + if (src + sz > buf_out + nw) /* Chopped DATA frame (last) */ + sz = buf_out + nw - src; + memmove(dst, src, sz); + dst += sz; + src += sz; + } + } + if (!conn_limit) + assert(buf_in_sz == (uintptr_t) dst - (uintptr_t) buf_out); + assert(0 == memcmp(buf_in, buf_out, (uintptr_t) dst - (uintptr_t) buf_out)); + } + + lsquic_stream_destroy(stream); + deinit_test_objs(&tobjs); + free(buf_in); + free(buf_out); + + stream_ctor_flags &= ~SCF_IETF; +} + + +static void +main_test_hq_framing (void) +{ + const unsigned wsizes[] = { 1, 2, 3, 7, 10, 50, 100, 201, 211, 1000, 2003, 20000, }; + const size_t conn_limits[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 30, 31, 32, 33, 63, 64, 128, 200, 255, + 256, 512, 1024, 2045, 2048, 2049, 3000, 4091, 4096, 4097, 5000, 8192, + 16 * 1024 - 1, 16 * 1024, 32 * 1024, 33 * 1024, }; + const unsigned n_packets[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, UINT_MAX, }; + const unsigned short packet_sz[] = { 1252, 1370, 0x1000, 0xFF00, }; + unsigned i, j, k, l; + int sched_immed, dispatch_once, flush_after_each_write; + + for (sched_immed = 0; sched_immed <= 1; ++sched_immed) + for (dispatch_once = 0; dispatch_once <= 1; ++dispatch_once) + for (i = 0; i < sizeof(wsizes) / sizeof(wsizes[i]); ++i) + for (j = 0; j < sizeof(conn_limits) / sizeof(conn_limits[j]); ++j) + for (flush_after_each_write = 0; flush_after_each_write < 2; ++flush_after_each_write) + for (k = 0; k < sizeof(n_packets) / sizeof(n_packets[0]); ++k) + for (l = 0; l < sizeof(packet_sz) / sizeof(packet_sz[0]); ++l) + test_hq_framing(sched_immed, dispatch_once, wsizes[i], flush_after_each_write, conn_limits[j], n_packets[k], packet_sz[l]); +} + + +/* Instead of the not-very-random testing done in main_test_hq_framing(), + * the fuzz-guided testing initializes parameters based on the fuzz input + * file. This allows afl-fuzz explore the code paths. + */ +void +fuzz_guided_hq_framing_testing (const char *input) +{ + /* Range */ /* Bytes from file */ + unsigned short packet_sz; /* [200, 0x3FFF] */ /* 2 */ + unsigned wsize; /* [1, 20000] */ /* 2 */ + unsigned n_packets; /* [1, 255] and UINT_MAX */ /* 1 */ + size_t conn_limit; /* [1, 33K] */ /* 2 */ + int sched_immed; /* 0 or 1 */ /* 1 */ + int dispatch_once; /* 0 or 1 */ /* 0 (same as above) */ + int flush_after_each_write; /* 0 or 1 */ /* 0 (same as above) */ + /* TOTAL: 8 bytes */ + + FILE *f; + size_t nread; + uint16_t tmp; + unsigned char buf[9]; + + f = fopen(input, "rb"); + if (!f) + { + assert(0); + return; + } + + nread = fread(buf, 1, sizeof(buf), f); + if (nread != 8) + goto cleanup; + + memcpy(&tmp, &buf[0], 2); + if (tmp < 200) + tmp = 200; + else if (tmp > IQUIC_MAX_OUT_PACKET_SZ) + tmp = IQUIC_MAX_OUT_PACKET_SZ; + packet_sz = tmp; + + memcpy(&tmp, &buf[2], 2); + if (tmp < 1) + tmp = 1; + else if (tmp > 20000) + tmp = 20000; + wsize = tmp; + + if (buf[4]) + n_packets = buf[4]; + else + n_packets = UINT_MAX; + + memcpy(&tmp, &buf[5], 2); + if (tmp < 1) + tmp = 1; + else if (tmp > 33 * 1024) + tmp = 33 * 1024; + conn_limit = tmp; + + sched_immed = !!(buf[7] & 1); + dispatch_once = !!(buf[7] & 2); + flush_after_each_write = !!(buf[7] & 4); + + test_hq_framing(sched_immed, dispatch_once, wsize, + flush_after_each_write, conn_limit, n_packets, packet_sz); + + cleanup: + (void) fclose(f); +} + + +struct pwritev_stream_ctx +{ + int limit; /* Test limit */ + size_t avail; + const unsigned char *input; + size_t input_sz; + ssize_t nw; /* Number of bytes written */ +}; + + +static ssize_t +my_preadv (void *user_data, const struct iovec *iov, int iovcnt) +{ + struct pwritev_stream_ctx *const pw_ctx = user_data; + const unsigned char *p; + size_t ntoread, tocopy; + int i; + + ntoread = 0; + for (i = 0; i < iovcnt; ++i) + ntoread += iov[i].iov_len; + + if (pw_ctx->limit < 0) + { + if ((size_t) -pw_ctx->limit < ntoread) + ntoread -= (size_t) -pw_ctx->limit; + } + else if ((size_t) pw_ctx->limit < ntoread) + ntoread = (size_t) pw_ctx->limit; + + assert(ntoread <= pw_ctx->input_sz); /* Self-check */ + + p = pw_ctx->input; + for (i = 0; i < iovcnt; ++i) + { + tocopy = MIN(iov[i].iov_len, ntoread - (p - pw_ctx->input)); + memcpy(iov[i].iov_base, p, tocopy); + p += tocopy; + if (ntoread == (size_t) (p - pw_ctx->input)) + break; + } + + assert(ntoread == (size_t) (p - pw_ctx->input)); + return (ssize_t) (p - pw_ctx->input); +} + + +static void +pwritev_on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *ctx) +{ + struct pwritev_stream_ctx *const pw_ctx = (void *) ctx; + ssize_t nw; + + nw = lsquic_stream_pwritev(stream, my_preadv, pw_ctx, pw_ctx->input_sz); + pw_ctx->nw = nw; + lsquic_stream_wantwrite(stream, 0); +} + + + +static const struct lsquic_stream_if pwritev_stream_if = { + .on_new_stream = packetization_on_new_stream, + .on_close = packetization_on_close, + .on_write = pwritev_on_write, +}; + + +static void +test_pwritev (enum lsquic_version version, int http, int sched_immed, + int limit, unsigned short packet_sz, size_t prologue_sz, + unsigned n_packets) +{ + struct test_objs tobjs; + struct lsquic_stream *stream; + size_t nw; + int fin, s; + unsigned char *buf_in, *buf_out; + /* Some values that are large enough: */ + const size_t buf_in_sz = MAX(n_packets * packet_sz, 0x1000), + buf_out_sz = (float) buf_in_sz * 1.1; + const int ietf = (1 << version) & LSQUIC_IETF_VERSIONS; + const enum stream_ctor_flags ietf_flags = ietf ? SCF_IETF : 0; + + s_snapshot_state = 0; + s_ack_written = 0; + + /* We'll write headers first after which stream will switch to using + * data-framing writer. This is simply so that we don't have to + * expose more stream things only for testing. + */ + struct lsxpack_header header = { XHDR(":method", "GET") }; + struct lsquic_http_headers headers = { 1, &header, }; + + buf_in = malloc(buf_in_sz); + buf_out = malloc(buf_out_sz); + assert(buf_in && buf_out); + + struct pwritev_stream_ctx pwritev_stream_ctx = + { + .input = buf_in + prologue_sz, + .input_sz = buf_in_sz - prologue_sz, + .limit = limit, + }; + + init_buf(buf_in, buf_in_sz); + + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = sched_immed; + + stream_ctor_flags |= ietf_flags; + init_test_objs(&tobjs, buf_out_sz, buf_out_sz, packet_sz); + tobjs.lconn.cn_version = version; + tobjs.lconn.cn_esf_c = select_esf_common_by_ver(version); + tobjs.stream_if_ctx = &pwritev_stream_ctx; + tobjs.ctor_flags |= (http ? SCF_HTTP : 0)|ietf_flags; + if (sched_immed) + { + g_ctl_settings.tcs_can_send = n_packets; + tobjs.stream_if = &pwritev_stream_if; + } + else + { + lsquic_send_ctl_set_max_bpq_count(n_packets); + g_ctl_settings.tcs_can_send = INT_MAX; + g_ctl_settings.tcs_bp_type = BPT_OTHER_PRIO; + /* Need this for on_new_stream() callback not to mess with + * the context, otherwise this is not used. + */ + tobjs.stream_if = &pwritev_stream_if; + } + + stream = new_stream(&tobjs, 0, buf_out_sz); + + if (http) + { + if (ietf) + { + s = lsquic_stream_send_headers(stream, &headers, 0); + assert(0 == s); + } + else + /* Here we fake it in order not to have to set up frame writer. */ + stream->stream_flags |= STREAM_HEADERS_SENT; + } + + if (prologue_sz) + { + ssize_t written = lsquic_stream_write(stream, buf_in, prologue_sz); + assert(written > 0 && (size_t) written == prologue_sz); + } + + if (sched_immed) + { + lsquic_stream_dispatch_write_events(stream); + assert(!(s_snapshot_state & SNAPSHOT_STATE_TAKEN)); + // lsquic_stream_flush(stream); + } + else + { + pwritev_on_write(stream, (void *) &pwritev_stream_ctx); + assert(s_snapshot_state & SNAPSHOT_STATE_TAKEN); + if (n_packets > 0 + && s_ack_written + && tobjs.send_ctl.sc_buffered_packets[BPT_OTHER_PRIO].bpq_count == 0) + assert(s_snapshot_state & SNAPSHOT_STATE_ROLLED_BACK); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, BPT_OTHER_PRIO); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; + lsquic_send_ctl_set_max_bpq_count(10); + } + + assert(pwritev_stream_ctx.nw >= 0); + + /* Verify written data: */ + nw = read_from_scheduled_packets(&tobjs.send_ctl, 0, buf_out, buf_out_sz, + 0, &fin, 1); + assert(nw <= buf_in_sz); + + if (ietf && http) + { /* Remove framing and verify contents */ + const unsigned char *src; + unsigned char *dst; + uint64_t sz; + unsigned frame_type; + int s; + + src = buf_out; + dst = buf_out; + while (src < buf_out + nw) + { + frame_type = *src++; + s = vint_read(src, buf_out + buf_out_sz, &sz); + assert(s > 0); + /* In some rare circumstances it is possible to produce zero-length + * DATA frames: + * + * assert(sz > 0); + */ + assert(sz < (1 << 14)); + src += s; + if (src == buf_out + s + 1) + { + /* Ignore headers */ + assert(frame_type == HQFT_HEADERS); + src += sz; + } + else + { + assert(frame_type == HQFT_DATA); + if (src + sz > buf_out + nw) /* Chopped DATA frame (last) */ + sz = buf_out + nw - src; + memmove(dst, src, sz); + dst += sz; + src += sz; + } + } + assert(nw <= buf_in_sz); + if (n_packets && pwritev_stream_ctx.nw) + { + assert((size_t) pwritev_stream_ctx.nw + prologue_sz == (uintptr_t) dst - (uintptr_t) buf_out); + assert(0 == memcmp(buf_in, buf_out, (uintptr_t) dst - (uintptr_t) buf_out)); + } + else + assert((uintptr_t) dst - (uintptr_t) buf_out == 0 + || (uintptr_t) dst - (uintptr_t) buf_out == prologue_sz); + } + else + { + assert(nw <= buf_in_sz); + assert(nw <= buf_out_sz); + if (n_packets && pwritev_stream_ctx.nw) + { + assert((size_t) pwritev_stream_ctx.nw + prologue_sz == nw); + assert(0 == memcmp(buf_in, buf_out, (size_t) nw)); + } + else + assert(nw == 0 || nw == prologue_sz); + } + + lsquic_stream_destroy(stream); + deinit_test_objs(&tobjs); + free(buf_in); + free(buf_out); + + stream_ctor_flags &= ~ietf_flags; +} + + +static void +main_test_pwritev (void) +{ + const int limits[] = { INT_MAX, -1, -2, -3, -7, -10, -50, -100, -201, -211, + -1000, -2003, -3000, -4000, -17803, -20000, 16 * 1024, 16 * 1024 - 1, + 16 * 1024 - 2, 8000, 273, 65, 63, 10, 5, 1, 0, }; + unsigned n_packets; + const unsigned short packet_sz[] = { 1252, 1370, 0x1000, 0xFF00, }; + const size_t prologues[] = { 0, 17, 238, }; + unsigned i, j, k; + enum lsquic_version version; + int http, sched_immed; + const struct { unsigned iovecs, frames; } combos[] = + { + { 32, 16, }, + { 16, 16, }, + { 16, 8, }, + { 3, 7, }, + { 7, 3, }, + { 100, 100, }, + }, *combo = combos; + + s_can_write_ack = 1; + + run_test: + for (version = 0; version < N_LSQVER; ++version) + if ((1 << version) & LSQUIC_SUPPORTED_VERSIONS) + for (http = 0; http < 2; ++http) + for (sched_immed = 0; sched_immed <= 1; ++sched_immed) + for (i = 0; i < sizeof(limits) / sizeof(limits[i]); ++i) + for (j = 0; j < sizeof(packet_sz) / sizeof(packet_sz[0]); + ++j) + for (k = 0; k < sizeof(prologues) / sizeof(prologues[0]); ++k) + for (n_packets = 1; n_packets < 21; ++n_packets) + test_pwritev(version, http, sched_immed, + limits[i], packet_sz[j], prologues[k], n_packets); + + if (combo < combos + sizeof(combos) / sizeof(combos[0])) + { + lsquic_stream_set_pwritev_params(combo->iovecs, combo->frames); + ++combo; + goto run_test; + } + + s_can_write_ack = 0; +} + + +/* Instead of the not-very-random testing done in main_test_pwritev(), + * the fuzz-guided testing initializes parameters based on the fuzz input + * file. This allows afl-fuzz explore the code paths. + */ +void +fuzz_guided_pwritev_testing (const char *input) +{ + /* Range */ /* Bytes from file */ + unsigned short packet_sz; /* [1200, 0xFF00] */ /* 2 */ + int limit; /* [INT_MIN, INT_MAX] */ /* 2 */ + unsigned n_packets; /* [0, 255] */ /* 1 */ + unsigned n_iovecs; /* [0, 255] */ /* 1 */ + unsigned n_frames; /* [0, 255] */ /* 1 */ + size_t prologue_sz; /* [0, 170] */ /* 1 */ + enum lsquic_version version;/* [0,7] */ /* 1 */ + int sched_immed; /* 0 or 1 */ /* 1 (same byte) */ + int http; /* 0 or 1 */ /* 1 (same byte) */ + + /* TOTAL: 9 bytes */ + + FILE *f; + size_t nread; + union { + uint16_t tmp; + int16_t itmp; + } u; + unsigned char buf[10]; + + f = fopen(input, "rb"); + if (!f) + { + assert(0); + return; + } + + nread = fread(buf, 1, sizeof(buf), f); + if (nread != 9) + goto cleanup; + + memcpy(&u.tmp, &buf[0], 2); + if (u.tmp < 1200) + u.tmp = 1200; + else if (u.tmp > 0xFF00) + u.tmp = 0xFF00; + packet_sz = u.tmp; + + memcpy(&u.itmp, &buf[2], 2); + if (u.itmp < SHRT_MIN / 2) + limit = INT_MIN; + else if (u.itmp < SHRT_MIN / 4) + limit = 0; + else if (u.itmp > SHRT_MAX / 2) + limit = INT_MAX; + else if (u.itmp > SHRT_MAX / 2) + limit = 0; + else + limit = u.itmp; + + n_packets = buf[4]; + n_iovecs = buf[5]; + n_frames = buf[6]; + + prologue_sz = buf[7]; + if (prologue_sz > 170) + prologue_sz = 170; + + switch (buf[8] & 7) + { + case 0: version = LSQVER_043; break; + case 1: version = LSQVER_046; break; + case 2: version = LSQVER_050; break; + case 3: version = LSQVER_ID27; break; + case 4: version = LSQVER_ID29; break; + default: + case 5: version = LSQVER_I001; break; + } + + sched_immed = !!(buf[8] & 0x08); + http = !!(buf[8] & 0x10); + + lsquic_stream_set_pwritev_params(n_iovecs, n_frames); + test_pwritev(version, http, sched_immed, limit, packet_sz, prologue_sz, + n_packets); + + cleanup: + (void) fclose(f); +} + + +static unsigned +count_hq_frames (const struct lsquic_stream *stream) +{ + const struct stream_hq_frame *shf; + unsigned n_frames = 0; + STAILQ_FOREACH(shf, &stream->sm_hq_frames, shf_next) + ++n_frames; + return n_frames; +} + + +static void +test_frame_header_split (unsigned n_packets, unsigned extra_sz, + int add_one_more) +{ + struct test_objs tobjs; + struct lsquic_stream *stream; + size_t nw; + int fin, s; + unsigned char *buf_in, *buf_out; + const unsigned wsize = 70; + const size_t buf_in_sz = wsize, buf_out_sz = 0x500000; + unsigned n_frames; + + struct lsxpack_header header = { XHDR(":method", "GET") }; + struct lsquic_http_headers headers = { 1, &header, }; + + buf_in = malloc(buf_in_sz); + buf_out = malloc(buf_out_sz); + assert(buf_in && buf_out); + + struct packetization_test_stream_ctx packet_stream_ctx = + { + .buf = buf_in, + .off = 0, + .len = buf_in_sz, + .write_size = wsize, + .flush_after_each_write = 0, + }; + + init_buf(buf_in, buf_in_sz); + + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + + stream_ctor_flags |= SCF_IETF; + init_test_objs(&tobjs, 0x1000, buf_out_sz, 1252); + tobjs.stream_if_ctx = &packet_stream_ctx; + tobjs.ctor_flags |= SCF_HTTP|SCF_IETF; + + g_ctl_settings.tcs_can_send = n_packets; + tobjs.stream_if = &packetization_inside_once_stream_if; + tobjs.ctor_flags |= SCF_DISP_RW_ONCE; + + struct lsquic_packet_out *const packet_out + = lsquic_send_ctl_new_packet_out(&tobjs.send_ctl, 0, PNS_APP, &network_path); + assert(packet_out); + const size_t pad_size = packet_out->po_n_alloc + - 2 /* STREAM header */ + - 5 /* 3-byte HEADERS frame */ + - extra_sz; + packet_out->po_data_sz = pad_size; + lsquic_send_ctl_scheduled_one(&tobjs.send_ctl, packet_out); + + stream = new_stream(&tobjs, 0, buf_out_sz); + + s = lsquic_stream_send_headers(stream, &headers, 0); + assert(0 == s); + + const ssize_t w = lsquic_stream_write(stream, buf_in, buf_in_sz); + assert(w >= 0 && (size_t) w == buf_in_sz); + n_frames = count_hq_frames(stream); + assert((int) n_frames == 1 + (w > 0)); + + lsquic_stream_flush(stream); + n_frames = count_hq_frames(stream); + assert((int) n_frames == !!stream->sm_n_buffered); + + if (add_one_more) + { + ++g_ctl_settings.tcs_can_send; + lsquic_stream_flush(stream); + } + + /* Verify written data: */ + nw = read_from_scheduled_packets(&tobjs.send_ctl, 0, buf_out, buf_out_sz, + 0, &fin, 1); + { /* Remove framing and verify contents */ + const unsigned char *src; + unsigned char *dst; + uint64_t sz; + unsigned frame_type; + int s; + + src = buf_out; + dst = buf_out; + while (src < buf_out + nw) + { + frame_type = *src++; + s = vint_read(src, buf_out + buf_out_sz, &sz); + assert(s > 0); + assert(sz > 0); + assert(sz < (1 << 14)); + src += s; + if (src == buf_out + s + 1) + { + /* Ignore headers */ + assert(frame_type == HQFT_HEADERS); + src += sz; + } + else + { + assert(frame_type == HQFT_DATA); + if (src + sz > buf_out + nw) /* Chopped DATA frame (last) */ + sz = buf_out + nw - src; + memmove(dst, src, sz); + dst += sz; + src += sz; + } + } + assert(0 == memcmp(buf_in, buf_out, (uintptr_t) dst - (uintptr_t) buf_out)); + } + + lsquic_stream_destroy(stream); + deinit_test_objs(&tobjs); + free(buf_in); + free(buf_out); + + stream_ctor_flags &= ~SCF_IETF; +} + + +static void +test_zero_size_frame (void) +{ + struct test_objs tobjs; + struct lsquic_stream *stream; + ssize_t w; + size_t nw; + int fin, s; + unsigned char *buf_in, *buf_out; + const unsigned wsize = 7000; + const size_t buf_in_sz = wsize, buf_out_sz = 0x500000; + + struct lsxpack_header header = { XHDR(":method", "GET") }; + struct lsquic_http_headers headers = { 1, &header, }; + + buf_in = malloc(buf_in_sz); + buf_out = malloc(buf_out_sz); + assert(buf_in && buf_out); + + struct packetization_test_stream_ctx packet_stream_ctx = + { + .buf = buf_in, + .off = 0, + .len = buf_in_sz, + .write_size = wsize, + .flush_after_each_write = 0, + }; + + init_buf(buf_in, buf_in_sz); + + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + + stream_ctor_flags |= SCF_IETF; + init_test_objs(&tobjs, 0x1000, buf_out_sz, 1252); + tobjs.stream_if_ctx = &packet_stream_ctx; + tobjs.ctor_flags |= SCF_HTTP|SCF_IETF; + + g_ctl_settings.tcs_can_send = 1; + tobjs.stream_if = &packetization_inside_once_stream_if; + tobjs.ctor_flags |= SCF_DISP_RW_ONCE; + + struct lsquic_packet_out *const packet_out + = lsquic_send_ctl_new_packet_out(&tobjs.send_ctl, 0, PNS_APP, &network_path); + assert(packet_out); + const size_t pad_size = packet_out->po_n_alloc + - 2 /* STREAM header */ + - 5 /* 3-byte HEADERS frame */ + - 3; + packet_out->po_data_sz = pad_size; + lsquic_send_ctl_scheduled_one(&tobjs.send_ctl, packet_out); + + stream = new_stream(&tobjs, 0, buf_out_sz); + + s = lsquic_stream_send_headers(stream, &headers, 0); + assert(0 == s); + + w = lsquic_stream_write(stream, buf_in, buf_in_sz); + assert(w >= 0); + lsquic_stream_flush(stream); + + g_ctl_settings.tcs_can_send++; + w = lsquic_stream_write(stream, buf_in, buf_in_sz); + assert(w >= 0); + lsquic_stream_flush(stream); + + /* Verify written data: */ + nw = read_from_scheduled_packets(&tobjs.send_ctl, 0, buf_out, buf_out_sz, + 0, &fin, 1); + { /* Remove framing and verify contents */ + const unsigned char *src; + unsigned char *dst; + uint64_t sz; + unsigned frame_type; + int s; + + src = buf_out; + dst = buf_out; + while (src < buf_out + nw) + { + frame_type = *src++; + s = vint_read(src, buf_out + buf_out_sz, &sz); + assert(s > 0); + assert(sz < (1 << 14)); + src += s; + if (src == buf_out + s + 1) + { + /* Ignore headers */ + assert(frame_type == HQFT_HEADERS); + src += sz; + } + else + { + assert(frame_type == HQFT_DATA); + if (src + sz > buf_out + nw) /* Chopped DATA frame (last) */ + sz = buf_out + nw - src; + memmove(dst, src, sz); + dst += sz; + src += sz; + } + } + assert(0 == memcmp(buf_in, buf_out, (uintptr_t) dst - (uintptr_t) buf_out)); + } + + lsquic_stream_destroy(stream); + deinit_test_objs(&tobjs); + free(buf_in); + free(buf_out); + + stream_ctor_flags &= ~SCF_IETF; +} + + +/* Create a new stream frame. Each stream frame has a real packet_in to + * back it up, just like in real code. The contents of the packet do + * not matter. + */ +static stream_frame_t * +new_frame_in_ext (struct test_objs *tobjs, size_t off, size_t sz, int fin, + const void *data) +{ + lsquic_packet_in_t *packet_in; + stream_frame_t *frame; + + assert(sz <= 1370); + + packet_in = lsquic_mm_get_packet_in(&tobjs->eng_pub.enp_mm); + if (data) + packet_in->pi_data = (void *) data; + else + { + packet_in->pi_data = lsquic_mm_get_packet_in_buf(&tobjs->eng_pub.enp_mm, 1370); + packet_in->pi_flags |= PI_OWN_DATA; + memset(packet_in->pi_data, 'A', sz); + } + /* This is not how stream frame looks in the packet: we have no + * header. In our test case it does not matter, as we only care + * about stream frame. + */ + packet_in->pi_data_sz = sz; + packet_in->pi_refcnt = 1; + + frame = lsquic_malo_get(tobjs->eng_pub.enp_mm.malo.stream_frame); + memset(frame, 0, sizeof(*frame)); + frame->packet_in = packet_in; + frame->data_frame.df_offset = off; + frame->data_frame.df_size = sz; + frame->data_frame.df_data = &packet_in->pi_data[0]; + frame->data_frame.df_fin = fin; + + return frame; +} + + +/* Receiving DATA frame with zero payload should result in lsquic_stream_read() + * returning -1. + */ +static void +test_reading_zero_size_data_frame (void) +{ + struct test_objs tobjs; + struct lsquic_stream *stream; + struct stream_frame *frame; + ssize_t nr; + int s; + unsigned char buf[2]; + + init_test_ctl_settings(&g_ctl_settings); + + stream_ctor_flags |= SCF_IETF; + init_test_objs(&tobjs, 0x1000, 0x2000, 1252); + tobjs.ctor_flags |= SCF_HTTP|SCF_IETF; + + stream = new_stream(&tobjs, 0, 0x1000); + + /* Fake out reading of HEADERS frame: */ + stream->stream_flags |= STREAM_HAVE_UH; + stream->sm_hq_filter.hqfi_flags |= HQFI_FLAG_HEADER; + + /* One-byte DATA frame */ + frame = new_frame_in_ext(&tobjs, 0, 3, 0, (uint8_t[3]){ 0, 1, 'a', }); + s = lsquic_stream_frame_in(stream, frame); + assert(s == 0); /* Self-check */ + + /* Zero-length DATA frame */ + frame = new_frame_in_ext(&tobjs, 3, 2, 0, (uint8_t[2]){ 0, 0, }); + s = lsquic_stream_frame_in(stream, frame); + assert(s == 0); /* Self-check */ + + assert(stream->read_offset == 2); /* Self-check */ + + /* Read 'a' */ + nr = lsquic_stream_read(stream, buf, 1); + assert(nr == 1); + assert(buf[0] == 'a'); + + /* Check that read returns -1 */ + nr = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(nr == -1); + + /* DATA frame was consumed: */ + assert(stream->read_offset == 5); + + lsquic_stream_destroy(stream); + deinit_test_objs(&tobjs); + + stream_ctor_flags &= ~SCF_IETF; +} + + +/* Receiving DATA frame with zero payload should result in lsquic_stream_read() + * returning -1. + */ +static void +test_reading_zero_size_data_frame_scenario2 (void) +{ + struct test_objs tobjs; + struct lsquic_stream *stream; + struct stream_frame *frame; + ssize_t nr; + int s; + unsigned char buf[2]; + + init_test_ctl_settings(&g_ctl_settings); + + stream_ctor_flags |= SCF_IETF; + init_test_objs(&tobjs, 0x1000, 0x2000, 1252); + tobjs.ctor_flags |= SCF_HTTP|SCF_IETF; + + stream = new_stream(&tobjs, 0, 0x1000); + + /* Fake out reading of HEADERS frame: */ + stream->stream_flags |= STREAM_HAVE_UH; + stream->sm_hq_filter.hqfi_flags |= HQFI_FLAG_HEADER; + + /* Zero-length DATA frame */ + frame = new_frame_in_ext(&tobjs, 0, 5, 0, (uint8_t[5]){ 0, 1, 'a', 0, 0, }); + s = lsquic_stream_frame_in(stream, frame); + assert(s == 0); /* Self-check */ + + assert(stream->read_offset == 2); /* Self-check */ + + /* Read 'a' */ + nr = lsquic_stream_read(stream, buf, 1); + assert(nr == 1); + assert(buf[0] == 'a'); + + /* Check that read returns -1 */ + nr = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(nr == -1); + + /* DATA frame was consumed: */ + assert(stream->read_offset == 5); + + lsquic_stream_destroy(stream); + deinit_test_objs(&tobjs); + + stream_ctor_flags &= ~SCF_IETF; +} + + +/* Receiving DATA frame with zero payload should result in lsquic_stream_read() + * returning -1. + */ +static void +test_reading_zero_size_data_frame_scenario3 (void) +{ + struct test_objs tobjs; + struct lsquic_stream *stream; + struct stream_frame *frame; + ssize_t nr; + int s; + unsigned char buf[2]; + + init_test_ctl_settings(&g_ctl_settings); + + stream_ctor_flags |= SCF_IETF; + init_test_objs(&tobjs, 0x1000, 0x2000, 1252); + tobjs.ctor_flags |= SCF_HTTP|SCF_IETF; + + stream = new_stream(&tobjs, 0, 0x1000); + + /* Fake out reading of HEADERS frame: */ + stream->stream_flags |= STREAM_HAVE_UH; + stream->sm_hq_filter.hqfi_flags |= HQFI_FLAG_HEADER; + + /* Zero-length DATA frame */ + frame = new_frame_in_ext(&tobjs, 0, 4, 0, (uint8_t[4]){ 0, 1, 'a', 0, }); + s = lsquic_stream_frame_in(stream, frame); + assert(s == 0); /* Self-check */ + + assert(stream->read_offset == 2); /* Self-check */ + + /* Read 'a' */ + nr = lsquic_stream_read(stream, buf, 1); + assert(nr == 1); + assert(buf[0] == 'a'); + + /* Check that read returns -1 */ + nr = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(nr == -1); + + /* Zero-length DATA frame */ + frame = new_frame_in_ext(&tobjs, 4, 1, 0, (uint8_t[1]){ 0, }); + s = lsquic_stream_frame_in(stream, frame); + assert(s == 0); /* Self-check */ + + /* Check that read returns -1 */ + nr = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(nr == -1); + + /* DATA frame was consumed: */ + assert(stream->read_offset == 5); + + lsquic_stream_destroy(stream); + deinit_test_objs(&tobjs); + + stream_ctor_flags &= ~SCF_IETF; +} + + +int +main (int argc, char **argv) +{ + const char *fuzz_hq_framing_input = NULL; + const char *fuzz_pwritev_input = NULL; + int opt, add_one_more; + unsigned n_packets, extra_sz; + + lsquic_global_init(LSQUIC_GLOBAL_SERVER); + + while (-1 != (opt = getopt(argc, argv, "f:p:l:"))) + { + switch (opt) + { + case 'f': + fuzz_hq_framing_input = optarg; + break; + case 'p': + fuzz_pwritev_input = optarg; + break; + case 'l': + lsquic_log_to_fstream(stderr, LLTS_NONE); + lsquic_logger_lopt(optarg); + break; + default: + exit(1); + } + } + + init_test_ctl_settings(&g_ctl_settings); + + if (fuzz_hq_framing_input) + fuzz_guided_hq_framing_testing(fuzz_hq_framing_input); + else if (fuzz_pwritev_input) + fuzz_guided_pwritev_testing(fuzz_pwritev_input); + else + { + main_test_pwritev(); + main_test_hq_framing(); + for (n_packets = 1; n_packets <= 2; ++n_packets) + for (extra_sz = 0; extra_sz <= 2; ++extra_sz) + for (add_one_more = 0; add_one_more <= 1; ++add_one_more) + test_frame_header_split(n_packets, extra_sz, add_one_more); + test_zero_size_frame(); + test_reading_zero_size_data_frame(); + test_reading_zero_size_data_frame_scenario2(); + test_reading_zero_size_data_frame_scenario3(); + } + + return 0; +} + +static const char on_being_idle[] = +"ON BEING IDLE." +"" +"Now, this is a subject on which I flatter myself I really am _au fait_." +"The gentleman who, when I was young, bathed me at wisdom's font for nine" +"guineas a term--no extras--used to say he never knew a boy who could" +"do less work in more time; and I remember my poor grandmother once" +"incidentally observing, in the course of an instruction upon the use" +"of the Prayer-book, that it was highly improbable that I should ever do" +"much that I ought not to do, but that she felt convinced beyond a doubt" +"that I should leave undone pretty well everything that I ought to do." +"" +"I am afraid I have somewhat belied half the dear old lady's prophecy." +"Heaven help me! I have done a good many things that I ought not to have" +"done, in spite of my laziness. But I have fully confirmed the accuracy" +"of her judgment so far as neglecting much that I ought not to have" +"neglected is concerned. Idling always has been my strong point. I take" +"no credit to myself in the matter--it is a gift. Few possess it. There" +"are plenty of lazy people and plenty of slow-coaches, but a genuine" +"idler is a rarity. He is not a man who slouches about with his hands in" +"his pockets. On the contrary, his most startling characteristic is that" +"he is always intensely busy." +"" +"It is impossible to enjoy idling thoroughly unless one has plenty of" +"work to do. There is no fun in doing nothing when you have nothing to" +"do. Wasting time is merely an occupation then, and a most exhausting" +"one. Idleness, like kisses, to be sweet must be stolen." +"" +"Many years ago, when I was a young man, I was taken very ill--I never" +"could see myself that much was the matter with me, except that I had" +"a beastly cold. But I suppose it was something very serious, for the" +"doctor said that I ought to have come to him a month before, and that" +"if it (whatever it was) had gone on for another week he would not have" +"answered for the consequences. It is an extraordinary thing, but I" +"never knew a doctor called into any case yet but what it transpired" +"that another day's delay would have rendered cure hopeless. Our medical" +"guide, philosopher, and friend is like the hero in a melodrama--he" +"always comes upon the scene just, and only just, in the nick of time. It" +"is Providence, that is what it is." +"" +"Well, as I was saying, I was very ill and was ordered to Buxton for a" +"month, with strict injunctions to do nothing whatever all the while" +"that I was there. \"Rest is what you require,\" said the doctor, \"perfect" +"rest.\"" +"" +"It seemed a delightful prospect. \"This man evidently understands my" +"complaint,\" said I, and I pictured to myself a glorious time--a four" +"weeks' _dolce far niente_ with a dash of illness in it. Not too much" +"illness, but just illness enough--just sufficient to give it the flavor" +"of suffering and make it poetical. I should get up late, sip chocolate," +"and have my breakfast in slippers and a dressing-gown. I should lie out" +"in the garden in a hammock and read sentimental novels with a melancholy" +"ending, until the books should fall from my listless hand, and I should" +"recline there, dreamily gazing into the deep blue of the firmament," +"watching the fleecy clouds floating like white-sailed ships across" +"its depths, and listening to the joyous song of the birds and the low" +"rustling of the trees. Or, on becoming too weak to go out of doors," +"I should sit propped up with pillows at the open window of the" +"ground-floor front, and look wasted and interesting, so that all the" +"pretty girls would sigh as they passed by." +"" +"And twice a day I should go down in a Bath chair to the Colonnade to" +"drink the waters. Oh, those waters! I knew nothing about them then," +"and was rather taken with the idea. \"Drinking the waters\" sounded" +"fashionable and Queen Anne-fied, and I thought I should like them. But," +"ugh! after the first three or four mornings! Sam Weller's description of" +"them as \"having a taste of warm flat-irons\" conveys only a faint idea of" +"their hideous nauseousness. If anything could make a sick man get well" +"quickly, it would be the knowledge that he must drink a glassful of them" +"every day until he was recovered. I drank them neat for six consecutive" +"days, and they nearly killed me; but after then I adopted the plan of" +"taking a stiff glass of brandy-and-water immediately on the top of them," +"and found much relief thereby. I have been informed since, by various" +"eminent medical gentlemen, that the alcohol must have entirely" +"counteracted the effects of the chalybeate properties contained in the" +"water. I am glad I was lucky enough to hit upon the right thing." +; + +static void +init_buf (void *buf, size_t sz) +{ + unsigned char *p = buf; + unsigned char *const end = (unsigned char*)buf + sz; + size_t n; + + while (p < end) + { + n = end - p; + if (sizeof(on_being_idle) - 1 < n) + n = sizeof(on_being_idle) - 1; + memcpy(p, on_being_idle, n); + p +=n; + } + + assert(p == end); +} diff --git a/external/lsquic/tests/test_hcsi_reader.c b/external/lsquic/tests/test_hcsi_reader.c new file mode 100644 index 0000000..8e688e6 --- /dev/null +++ b/external/lsquic/tests/test_hcsi_reader.c @@ -0,0 +1,303 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hcsi_reader.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" + +struct test +{ + int lineno; + + enum { + TEST_NO_FLAGS = 0, + TEST_NUL_OUT_LEST_FULL = 1 << 0, + } flags; + + unsigned char input[0x100]; + size_t input_sz; + + int retval; + char output[0x1000]; +}; + + +static const struct test tests[] = +{ + { + __LINE__, + TEST_NO_FLAGS, + { + 0x03, + 0x04, + 0x80, 0x12, 0x34, 0x45, + }, + 6, + 0, + "on_cancel_push: 1193029\n", + }, + + { + __LINE__, + TEST_NO_FLAGS, + { + HQFT_MAX_PUSH_ID, + 0x02, + 0x41, 0x23, + }, + 4, + 0, + "on_max_push_id: 291\n", + }, + + { + __LINE__, + TEST_NO_FLAGS, + { + HQFT_SETTINGS, + 0x00, + }, + 2, + 0, + "have SETTINGS frame\n", + }, + + { /* Frame contents do not match frame length */ + __LINE__, + TEST_NO_FLAGS, + { + HQFT_MAX_PUSH_ID, + 0x03, + 0x41, 0x23, + }, + 4, + -1, + "", + }, + + { + __LINE__, + TEST_NO_FLAGS, + { + HQFT_SETTINGS, + 13, + 0x52, 0x34, + 0xC0, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x78, + 0x52, 0x35, + 0x00, + }, + 15, + 0, + "on_setting: 0x1234=0x12233445566778\n" + "on_setting: 0x1235=0x0\n" + "have SETTINGS frame\n" + , + }, + + { + __LINE__, + TEST_NO_FLAGS, + { + 0x80, 0x0F, 0x07, 0x00, /* HQFT_PRIORITY_UPDATE_STREAM */ + 7, + 0x52, 0x34, + 0x41, 0x42, 0x43, 0x44, 0x45, /* ABCDE */ + HQFT_MAX_PUSH_ID, + 0x02, + 0x41, 0x23, + }, + 16, + 0, + "on_priority_update: stream=0x1234, [ABCDE]\n" + "on_max_push_id: 291\n" + , + }, + + { + __LINE__, + TEST_NO_FLAGS, + { + 0x80, 0x0F, 0x07, 0x01, /* HQFT_PRIORITY_UPDATE_PUSH */ + 6, + 0x08, + 0x50, 0x51, 0x52, 0x53, 0x54, /* PQRST */ + }, + 11, + 0, + "on_priority_update: push=0x8, [PQRST]\n" + , + }, + + { + __LINE__, + TEST_NUL_OUT_LEST_FULL, + { + 0x80, 0x0F, 0x07, 0x01, /* HQFT_PRIORITY_UPDATE_PUSH */ + 21, + 0x08, + 0x50, 0x51, 0x52, 0x53, 0x54, /* PQRST */ + 0x50, 0x51, 0x52, 0x53, 0x54, /* PQRST */ + 0x50, 0x51, 0x52, 0x53, 0x54, /* PQRST */ + 0x50, 0x51, 0x52, 0x53, 0x54, /* PQRST */ + }, + 26, + 0, + "on_priority_update: push=0x8, [PQRSTPQRSTPQRSTPQRST]\n" + , + }, + +}; + + +static void +on_cancel_push (void *ctx, uint64_t push_id) +{ + fprintf(ctx, "%s: %"PRIu64"\n", __func__, push_id); +} + +static void +on_max_push_id (void *ctx, uint64_t push_id) +{ + fprintf(ctx, "%s: %"PRIu64"\n", __func__, push_id); +} + +static void +on_settings_frame (void *ctx) +{ + fprintf(ctx, "have SETTINGS frame\n"); +} + +static void +on_setting (void *ctx, uint64_t setting_id, uint64_t value) +{ + fprintf(ctx, "%s: 0x%"PRIX64"=0x%"PRIX64"\n", __func__, setting_id, value); +} + +static void +on_goaway (void *ctx, uint64_t stream_id) +{ + fprintf(ctx, "%s: %"PRIu64"\n", __func__, stream_id); +} + +static void +on_frame_error (void *ctx, unsigned code, uint64_t frame_type) +{ + fprintf(ctx, "%s: %"PRIu64"\n", __func__, frame_type); +} + +static void +on_priority_update (void *ctx, enum hq_frame_type frame_type, + /* PFV: Priority Field Value */ + uint64_t id, const char *pfv, size_t pfv_sz) +{ + const char *type; + + switch (frame_type) + { + case HQFT_PRIORITY_UPDATE_STREAM: type = "stream"; break; + case HQFT_PRIORITY_UPDATE_PUSH: type = "push"; break; + default: assert(0); return; + } + + fprintf(ctx, "%s: %s=0x%"PRIX64", [%.*s]\n", __func__, type, id, + (int) pfv_sz, pfv); +} + +static const struct hcsi_callbacks callbacks = +{ + .on_cancel_push = on_cancel_push, + .on_max_push_id = on_max_push_id, + .on_settings_frame = on_settings_frame, + .on_setting = on_setting, + .on_goaway = on_goaway, + .on_frame_error = on_frame_error, + .on_priority_update = on_priority_update, +}; + + +static void +abort_error (struct lsquic_conn *conn, int is_app, unsigned error_code, + const char *format, ...) +{ +} + + +static const struct conn_iface conn_iface = { + .ci_abort_error = abort_error, +}; + + +static void +run_test (const struct test *test) +{ + struct hcsi_reader reader; + size_t read_sz, out_sz, toread; + FILE *out_f; + char *output; + const unsigned char *p; + int s; + struct lsquic_conn lconn = LSCONN_INITIALIZER_CIDLEN(lconn, 0); + lconn.cn_if = &conn_iface; + + for (read_sz = 1; read_sz <= test->input_sz; ++read_sz) + { + out_f = open_memstream(&output, &out_sz); + lsquic_hcsi_reader_init(&reader, &lconn, &callbacks, out_f); + reader.hr_flag |= HR_FLAG_RCVD_SETTING; + + p = test->input; + do + { + toread = test->input + test->input_sz - p; + if (toread > read_sz) + toread = read_sz; + s = lsquic_hcsi_reader_feed(&reader, p, toread); + if (s != 0) + break; + p += toread; + } + while (p < test->input + test->input_sz); + + assert(s == test->retval); + + fclose(out_f); + if (test->retval == 0 && read_sz < test->input_sz + && (test->flags & TEST_NUL_OUT_LEST_FULL)) + assert(0 == strcmp(output, "")); + else + assert(0 == strcmp(test->output, output)); + free(output); + } +} + +int +main (void) +{ + const struct test *test; + struct test coalesced_test; + + for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) + run_test(test); + + memset(&coalesced_test, 0, sizeof(coalesced_test)); + for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) + if (test->retval == 0 && !(test->flags & TEST_NUL_OUT_LEST_FULL)) + { + memcpy(coalesced_test.input + coalesced_test.input_sz, + test->input, test->input_sz); + coalesced_test.input_sz += test->input_sz; + strcat(coalesced_test.output, test->output); + } + run_test(&coalesced_test); + + return 0; +} diff --git a/external/lsquic/tests/test_hkdf.c b/external/lsquic/tests/test_hkdf.c new file mode 100644 index 0000000..a29ab4e --- /dev/null +++ b/external/lsquic/tests/test_hkdf.c @@ -0,0 +1,86 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include + +#include "lsquic_crypto.h" + +/* rfc 5869 examples*/ +void test_HKDF() +{ + unsigned char prk[32]; + unsigned char okm[100]; + uint16_t L; + /*test case 1 */ + lshkdf_extract((const unsigned char *) "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", + 22, + (const unsigned char *) "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c", + 13, + prk); + assert(memcmp(prk, "\x07\x77\x09\x36\x2c\x2e\x32\xdf\x0d\xdc\x3f\x0d\xc4\x7b\xba\x63\x90\xb6\xc7\x3b\xb5\x0f\x9c\x31\x22\xec\x84\x4a\xd7\xc2\xb3\xe5", + 32) == 0); + + L = 42; + lshkdf_expand(prk, (const unsigned char *) "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9", 10, L, okm, 0, NULL, 0, NULL, 0, NULL, 0, NULL, NULL, NULL); + assert(memcmp(okm, "\x3c\xb2\x5f\x25\xfa\xac\xd5\x7a\x90\x43\x4f\x64\xd0\x36\x2f\x2a" + "\x2d\x2d\x0a\x90\xcf\x1a\x5a\x4c\x5d\xb0\x2d\x56\xec\xc4\xc5\xbf" + "\x34\x00\x72\x08\xd5\xb8\x87\x18\x58\x65", L) == 0); + + + /* 2 */ + L = 82; + lshkdf_extract((const unsigned char *) "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" + "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f" + "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f" + "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f" + "\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f", + 80, + (const unsigned char *) "\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f" + "\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f" + "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f" + "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f" + "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf", + 80, + + prk); + assert(memcmp(prk, "\x06\xa6\xb8\x8c\x58\x53\x36\x1a\x06\x10\x4c\x9c\xeb\x35\xb4\x5c" + "\xef\x76\x00\x14\x90\x46\x71\x01\x4a\x19\x3f\x40\xc1\x5f\xc2\x44", + 32) == 0); + + lshkdf_expand(prk, (const unsigned char *) "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf" + "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf" + "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf" + "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef" + "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff", + 80, L, okm, 0, NULL, 0, NULL, 0, NULL, 0, NULL, NULL, NULL); + assert(memcmp(okm, "\xb1\x1e\x39\x8d\xc8\x03\x27\xa1\xc8\xe7\xf7\x8c\x59\x6a\x49\x34" + "\x4f\x01\x2e\xda\x2d\x4e\xfa\xd8\xa0\x50\xcc\x4c\x19\xaf\xa9\x7c" + "\x59\x04\x5a\x99\xca\xc7\x82\x72\x71\xcb\x41\xc6\x5e\x59\x0e\x09" + "\xda\x32\x75\x60\x0c\x2f\x09\xb8\x36\x77\x93\xa9\xac\xa3\xdb\x71" + "\xcc\x30\xc5\x81\x79\xec\x3e\x87\xc1\x4c\x01\xd5\xc1\xf3\x43\x4f" + "\x1d\x87", L) == 0); + + /* 3 */ + lshkdf_extract((const unsigned char *) "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", + 22, + NULL, + 0, + prk); + assert(memcmp(prk, "\x19\xef\x24\xa3\x2c\x71\x7b\x16\x7f\x33\xa9\x1d\x6f\x64\x8b\xdf" + "\x96\x59\x67\x76\xaf\xdb\x63\x77\xac\x43\x4c\x1c\x29\x3c\xcb\x04", + 32) == 0); + + L = 42; + lshkdf_expand(prk, NULL, 0, L, okm, 0, NULL, 0, NULL, 0, NULL, 0, NULL, NULL, NULL); + assert(memcmp(okm, "\x8d\xa4\xe7\x75\xa5\x63\xc1\x8f\x71\x5f\x80\x2a\x06\x3c\x5a\x31" + "\xb8\xa1\x1f\x5c\x5e\xe1\x87\x9e\xc3\x45\x4e\x5f\x3c\x73\x8d\x2d" + "\x9d\x20\x13\x95\xfa\xa4\xb6\x1a\x96\xc8", L) == 0); +} + + +int +main (void) +{ + test_HKDF(); + return 0; +} diff --git a/external/lsquic/tests/test_hpi.c b/external/lsquic/tests/test_hpi.c new file mode 100644 index 0000000..d08e3d1 --- /dev/null +++ b/external/lsquic/tests/test_hpi.c @@ -0,0 +1,353 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" + +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" +#include "lsquic_conn_flow.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_stream.h" +#include "lsquic_types.h" +#include "lsquic_rtt.h" +#include "lsquic_conn_flow.h" +#include "lsquic_conn_public.h" +#include "lsquic_mm.h" +#include "lsquic_min_heap.h" +#include "lsquic_hpi.h" +#include "lsquic_logger.h" + + +/* + * DSL: + * + * S\d+:\d+:\d+ Create stream and insert it into list. The three numbers + * are stream ID, priority, and incremental boolean flag. + * Priority can be negative, which indicates a critical + * stream. Otherwise, the priorirty should be in the range + * [0, MAX_HTTP_PRIORITY]. The incremental flag is ignored + * for critical streams. + * + * F\d+ Use filter identified by the number. For "F" to take + * effect, it should be called before "I". + * + * I Initialize the iterator. + * + * D[hH] Call drop high (h) or drop non-high (H). + * + * N\d+ Call "next" and verify that the stream ID is this number. + * If "next" returns NULL, the test fails. + * + */ + +static const struct test_spec { + int lineno; + const char *prog; +} test_specs[] = { + + { __LINE__, + "S0:3:0;" + "I;" + "N0;" + }, + + { __LINE__, + /* Insert non-incremental streams with same priority, check that + * they come back out in the order of stream IDs. + */ + "S1:3:0;" "S0:3:0;" "S2:3:0;" + "I;" + "N0;" "N1;" "N2;" + }, + + { __LINE__, + /* Insert incremental streams with same priority, check that they + * come back out in the same order. + */ + "S1:3:1;" "S0:3:1;" "S2:3:1;" + "I;" + "N1;" "N0;" "N2;" + }, + + { __LINE__, + /* Insert incremental streams with same priority, filter out out odd + * IDs, check that they come back out in the same order and without + * the odd stream ID" + */ + "S1:3:1;" "S0:3:1;" "S2:3:1;" + "F;" + "I;" + "N0;" "N2;" + }, + + { __LINE__, + /* Insert incremental and non-incremental streams with same priority. + * Check that non-incrementals are returned first. + */ + "S1:3:1;" "S0:3:1;" "S2:3:1;" + "S6:3:0;" "S10:3:0;" "S3:3:0;" + "I;" + "N3;N6;N10;" + "N1;N0;N2;" + }, + + { __LINE__, + /* Drop high with same priority: nothing should be dropped */ + "S1:3:1;" "S0:3:1;" "S2:3:1;" + "I;" + "Dh;" + "N1;" "N0;" "N2;" + }, + + { __LINE__, + /* Drop non-high with same priority: nothing should be dropped */ + "S1:3:1;" "S0:3:1;" "S2:3:1;" + "I;" + "DH;" + "N1;" "N0;" "N2;" + }, + + { __LINE__, + /* Drop high with same priority: drop non-incrementals */ + "S1:3:1;" "S0:3:1;" "S2:3:1;" + "S6:3:0;" "S10:3:0;" "S3:3:0;" + "I;" + "Dh;" + "N1;" "N0;" "N2;" + }, + + { __LINE__, + /* Drop non-high with same priority: drop incrementals */ + "S1:3:1;" "S0:3:1;" "S2:3:1;" + "S6:3:0;" "S10:3:0;" "S3:3:0;" + "I;" + "DH;" + "N3;N6;N10;" + }, + + { __LINE__, + /* Insert streams with different priorities */ + "S1:1:1;" "S2:2:1;" "S3:3:1;" + "S6:6:0;" "S5:5:0;" "S4:4:0;" + "I;" + "N1;N2;N3;N4;N5;N6;" + }, + + { __LINE__, + /* Insert regular and critical streams */ + "S1:1:1;" "S2:2:1;" "S3333:-1:1;" + "S6:6:0;" "S2222:-1:0;" "S4:4:0;" + "I;" + "N3333;N2222;N1;N2;N4;N6;" + }, + + { __LINE__, + /* Insert regular and critical streams; drop high */ + "S1:1:1;" "S2:2:1;" "S3333:-1:1;" + "S6:6:0;" "S2222:-1:0;" "S4:4:0;" + "I;" + "Dh;" + "N1;N2;N4;N6;" + }, + + { __LINE__, + /* Insert regular and critical streams; drop non-high */ + "S1:1:1;" "S2:2:1;" "S3333:-1:1;" + "S6:6:0;" "S2222:-1:0;" "S4:4:0;" + "I;" + "DH;" + "N3333;N2222;" + }, + + { __LINE__, + /* Insert streams with different priorities, non-incremental, + * several per bucket. + */ + "S1:1:0;" "S4:2:0;" "S3:2:0;" + "S6:1:0;" "S5:1:0;" "S2:2:0;" + "I;" + "N1;N5;N6;N2;N3;N4;" + }, + +}; + +/* Sharing the same HPI tests safety of reusing the same iterator object + * (no need to deinitialize it). + */ +static struct http_prio_iter hpi; + +static struct lsquic_conn lconn = LSCONN_INITIALIZER_CIDLEN(lconn, 0); + +static struct lsquic_conn_public conn_pub = { .lconn = &lconn, }; + + +static struct lsquic_stream * +new_stream (lsquic_stream_id_t stream_id, int priority, int incr) +{ + struct lsquic_stream *stream = calloc(1, sizeof(*stream)); + stream->id = stream_id; + if (priority >= 0) + { + stream->sm_priority = priority; + if (incr) + stream->sm_bflags |= SMBF_INCREMENTAL; + } + else + stream->sm_bflags |= SMBF_CRITICAL; + /* Critical streams are never incremental */ + return stream; +} + + +#define MAGIC 0x12312312U + +struct my_filter_ctx +{ + unsigned magic; +}; + +static int +filter_out_odd_stream_ids (void *ctx, struct lsquic_stream *stream) +{ + struct my_filter_ctx *fctx = ctx; + assert(fctx->magic == MAGIC); + return 0 == (stream->id & 1); +} + + +static int (*const filters[])(void *, struct lsquic_stream *) = { + filter_out_odd_stream_ids, +}; + +/* Just pick one (as long as it's not next_prio_stream) */ +#define next_field next_write_stream + + +static void +run_test (const struct test_spec *spec) +{ + struct lsquic_streams_tailq streams; + struct lsquic_stream *stream; + lsquic_stream_id_t stream_id; + long incr, priority, tmp; + const char *pc; + char cmd; + char name[20]; + struct my_filter_ctx filter_ctx = { MAGIC }; + int (*filter_cb)(void *, struct lsquic_stream *) = NULL; + int first_called = 0; + struct lsquic_mm mm; + + lsquic_mm_init(&mm); + conn_pub.mm = &mm; + TAILQ_INIT(&streams); + snprintf(name, sizeof(name), "line-%d", spec->lineno); + + for (pc = spec->prog; *pc; ++pc) + { + cmd = *pc++; + switch (cmd) + { + case 'S': + stream_id = strtol(pc, (char **) &pc, 10); + assert(':' == *pc); + priority = strtol(pc + 1, (char **) &pc, 10); + assert(':' == *pc); + incr = strtol(pc + 1, (char **) &pc, 10); + stream = new_stream(stream_id, priority, incr); + TAILQ_INSERT_TAIL(&streams, stream, next_field); + break; + case 'I': + lsquic_hpi_init(&hpi, TAILQ_FIRST(&streams), + TAILQ_LAST(&streams, lsquic_streams_tailq), + (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_field), + &conn_pub, name, filter_cb, &filter_ctx); + break; + case 'N': + stream_id = strtol(pc, (char **) &pc, 10); + if (first_called) + stream = lsquic_hpi_next(&hpi); + else + { + stream = lsquic_hpi_first(&hpi); + first_called = 1; + } + assert(stream); + assert(stream->id == stream_id); + break; + case 'F': + tmp = strtol(pc, (char **) &pc, 10); + assert(tmp >= 0 + && (size_t) tmp < sizeof(filters) / sizeof(filters[0])); + filter_cb = filters[tmp]; + break; + case 'D': + switch (*pc++) + { + case 'h': + lsquic_hpi_drop_high(&hpi); + break; + case 'H': + lsquic_hpi_drop_non_high(&hpi); + break; + default: + assert(0); + break; + } + break; + default: + assert(0); + } + assert(*pc == ';'); + } + lsquic_hpi_cleanup(&hpi); + + while (stream = TAILQ_FIRST(&streams), stream != NULL) + { + TAILQ_REMOVE(&streams, stream, next_field); + free(stream); + } + lsquic_mm_cleanup(&mm); +} + + +int +main (int argc, char **argv) +{ + unsigned n; + + lsquic_log_to_fstream(stderr, LLTS_NONE); + lsq_log_levels[LSQLM_HPI] = LSQ_LOG_DEBUG; + + for (n = 0; n < sizeof(test_specs) / sizeof(test_specs[0]); ++n) + run_test(&test_specs[n]); + +#ifndef NDEBUG + lsquic_hpi_set_heap_test(LSQUIC_HPI_HEAP_TEST_STACK_OK); + for (n = 0; n < sizeof(test_specs) / sizeof(test_specs[0]); ++n) + run_test(&test_specs[n]); + + lsquic_hpi_set_heap_test(LSQUIC_HPI_HEAP_TEST_4K_OK); + for (n = 0; n < sizeof(test_specs) / sizeof(test_specs[0]); ++n) + run_test(&test_specs[n]); + + lsquic_hpi_set_heap_test(0); + for (n = 0; n < sizeof(test_specs) / sizeof(test_specs[0]); ++n) + run_test(&test_specs[n]); +#endif + + return 0; +} diff --git a/external/lsquic/tests/test_lsquic_hash.c b/external/lsquic/tests/test_lsquic_hash.c new file mode 100644 index 0000000..f563901 --- /dev/null +++ b/external/lsquic/tests/test_lsquic_hash.c @@ -0,0 +1,79 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic_hash.h" + + +struct widget +{ + unsigned long key; + struct lsquic_hash_elem hash_el; + char data[30]; +}; + + +int +main (int argc, char **argv) +{ + struct lsquic_hash *hash; + struct lsquic_hash_elem *el; + unsigned n, nelems; + struct widget *widgets, *widget; + + hash = lsquic_hash_create(); + + if (argc > 1) + nelems = atoi(argv[1]); + else + nelems = 1000000; + + widgets = calloc(nelems, sizeof(widgets[0])); + + for (n = 0; n < nelems; ++n) + { + widget = &widgets[n]; + widget->key = n; /* This will be used for verification later the test */ + sprintf(widget->data, "%lu", widget->key); + el = lsquic_hash_find(hash, &widget->key, sizeof(widget->key)); + assert(!el); + el = lsquic_hash_insert(hash, &widget->key, sizeof(widget->key), widget, &widget->hash_el); + assert(el); + } + + assert(nelems == lsquic_hash_count(hash)); + + for (n = 0, el = lsquic_hash_first(hash); el; ++n, el = lsquic_hash_next(hash)) + { + widget = lsquic_hashelem_getdata(el); + assert(widget >= widgets); + assert(widget < widgets + nelems); + } + assert(n == nelems); + + for (n = 0; n < nelems; ++n) + { + unsigned long key = n; + el = lsquic_hash_find(hash, &key, sizeof(key)); + assert(el); + widget = lsquic_hashelem_getdata(el); + assert(widget->key == key); + lsquic_hash_erase(hash, el); + el = lsquic_hash_find(hash, &key, sizeof(key)); + assert(!el); + } + + assert(0 == lsquic_hash_count(hash)); + + lsquic_hash_destroy(hash); + free(widgets); + + exit(0); +} diff --git a/external/lsquic/tests/test_malo.c b/external/lsquic/tests/test_malo.c new file mode 100644 index 0000000..4f6615e --- /dev/null +++ b/external/lsquic/tests/test_malo.c @@ -0,0 +1,157 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include "getopt.h" +#endif + +#include "lsquic_malo.h" + +struct elem { + unsigned id; +}; + + +#define N_ELEMS 10000 /* More and it hits swap on smaller VMs */ + +static void +run_tests (size_t el_size) +{ + unsigned i; + struct malo *malo; + struct elem *el; + + malo = lsquic_malo_create(el_size); + assert(malo); + + for (i = 1; i <= N_ELEMS; ++i) + { + el = lsquic_malo_get(malo); + el->id = i; + } + + uint64_t sum = 0, deleted_sum = 0; + for (el = lsquic_malo_first(malo); el; el = lsquic_malo_next(malo)) + { + sum += el->id; + if (el->id % 3 == 0) /* Delete every third element */ + { + deleted_sum += el->id; + lsquic_malo_put(el); + } + } + + assert(sum == ((uint64_t) N_ELEMS + 1) * ((uint64_t) N_ELEMS / 2)); + + sum = 0; + for (el = lsquic_malo_first(malo); el; el = lsquic_malo_next(malo)) + { + sum += el->id; + lsquic_malo_put(el); + } + + assert(sum == ((uint64_t) N_ELEMS + 1) * ((uint64_t) N_ELEMS / 2) - + deleted_sum); + + el = lsquic_malo_first(malo); + assert(!el); + + lsquic_malo_destroy(malo); +} + + +static struct elem *elems[10000]; + +static void +alloc_using_malloc (int n) +{ + int i; + for (i = 0; i < n; ++i) + { + unsigned j; + for (j = 0; j < sizeof(elems) / sizeof(elems[0]); ++j) + { + elems[j] = malloc(sizeof(*elems[j])); + elems[j]->id = j; + } + for (j = 0; j < sizeof(elems) / sizeof(elems[0]); ++j) + { + free(elems[j]); + } + } +} + + +static void +alloc_using_malo (int n) +{ + struct malo *malo = lsquic_malo_create(sizeof(struct elem)); + int i; + for (i = 0; i < n; ++i) + { + unsigned j; + for (j = 0; j < sizeof(elems) / sizeof(elems[0]); ++j) + { + elems[j] = lsquic_malo_get(malo); + elems[j]->id = j; + } + for (j = 0; j < sizeof(elems) / sizeof(elems[0]); ++j) + { + lsquic_malo_put(elems[j]); + } + } + lsquic_malo_destroy(malo); +} + + +int +main (int argc, char **argv) +{ + int opt, mode = -1, n = 1; + while (-1 != (opt = getopt(argc, argv, "s:n:"))) + { + switch (opt) + { + case 's': + mode = atoi(optarg); + break; + case 'n': + n = atoi(optarg); + break; + default: + exit(1); + } + } + + switch (mode) + { + case -1: + { + size_t sz; + for (sz = sizeof(struct elem); sz < 0x800; sz <<= 1) + { + run_tests(sz - 3); + run_tests(sz - 1); + run_tests(sz); + run_tests(sz + 1); + run_tests(sz + 3); + } + break; + } + case 0: + alloc_using_malloc(n); + break; + case 1: + alloc_using_malo(n); + break; + default: + fprintf(stderr, "error: invalid mode %d\n", mode); + exit(2); + } + + return 0; +} diff --git a/external/lsquic/tests/test_min_heap.c b/external/lsquic/tests/test_min_heap.c new file mode 100644 index 0000000..cdd56d2 --- /dev/null +++ b/external/lsquic/tests/test_min_heap.c @@ -0,0 +1,165 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* Test min heap or benchmark heap creation */ + +/* Floyd mechanism has been removed. It's not faster. */ +#define FLOYD 0 + +#include +#include +#include +#include +#include + +#include "lsquic_min_heap.h" + +static void +verify_min_heap (const struct min_heap *heap) +{ + unsigned i; + + for (i = 0; i < heap->mh_nelem; ++i) + { + if (MHE_LCHILD(i) < heap->mh_nelem) + assert(heap->mh_elems[i].mhe_val <= + heap->mh_elems[MHE_LCHILD(i)].mhe_val); + if (MHE_RCHILD(i) < heap->mh_nelem) + assert(heap->mh_elems[i].mhe_val <= + heap->mh_elems[MHE_RCHILD(i)].mhe_val); + } +} + + +#define MAX_ELEMS 1000 + +static void +test_min_heap (void) +{ + struct min_heap heap; + uint64_t i, prev_val; + void *p; + struct min_heap_elem els[MAX_ELEMS]; + + heap.mh_elems = els; + heap.mh_nalloc = MAX_ELEMS; + + heap.mh_nelem = 0; + for (i = 0; i < MAX_ELEMS; ++i) + lsquic_mh_insert(&heap, (void *) i, i); + verify_min_heap(&heap); +#ifdef _MSC_VER + prev_val = 0; +#endif + for (i = 0; i < MAX_ELEMS; ++i) + { + p = lsquic_mh_pop(&heap); + if (i) + assert((uintptr_t) p >= prev_val); + prev_val = (uintptr_t) p; + } + + heap.mh_nelem = 0; + for (i = MAX_ELEMS; i > 0; --i) + lsquic_mh_insert(&heap, (void *) i, i); + verify_min_heap(&heap); + for (i = 0; i < MAX_ELEMS; ++i) + { + p = lsquic_mh_pop(&heap); + if (i) + assert((uintptr_t) p >= prev_val); + prev_val = (uintptr_t) p; + } + + heap.mh_nelem = 0; + +#if FLOYD + /* Now use Floyd method */ + heap.mh_nelem = 0; + for (i = 0; i < MAX_ELEMS; ++i) + lsquic_mh_push(&heap, NULL, i); + lsquic_mh_heapify(&heap); + verify_min_heap(&heap); + + heap.mh_nelem = 0; + for (i = MAX_ELEMS; i > 0; --i) + lsquic_mh_push(&heap, NULL, i); + lsquic_mh_heapify(&heap); + verify_min_heap(&heap); +#endif +} + + +int +main (int argc, char **argv) +{ + if (argc == 1) + { + test_min_heap(); + return 0; + } + + if (argc != 4) + { + fprintf(stderr, "usage: %s nelems iters method\n" + " method is 0: insert; 1: floyd\n", argv[0]); + return 1; + } + + unsigned i, j, n_iters, nelems; + struct min_heap_elem *els; + unsigned *vals; + struct min_heap heap; + + nelems = atoi(argv[1]); + n_iters = atoi(argv[2]); +#if FLOYD + const int floyd = atoi(argv[3]); +#endif + + vals = malloc(sizeof(vals[0]) * nelems); + assert(vals); + for (i = 0; i < nelems; ++i) + vals[i] = rand(); + els = malloc(sizeof(els[0]) * nelems); + assert(els); + heap.mh_elems = els; + heap.mh_nalloc = nelems; + heap.mh_nelem = 0; +#if FLOYD + if (floyd) + { + for (i = 0; i < nelems; ++i) + lsquic_mh_push(&heap, NULL, vals[i]); + lsquic_mh_heapify(&heap); + } + else +#endif + for (i = 0; i < nelems; ++i) + lsquic_mh_insert(&heap, NULL, vals[i]); + verify_min_heap(&heap); + +#if FLOYD + if (floyd) + { + for (j = 0; j < n_iters; ++j) + { + heap.mh_nelem = 0; + for (i = 0; i < nelems; ++i) + lsquic_mh_push(&heap, NULL, vals[i]); + lsquic_mh_heapify(&heap); + } + } + else +#endif + { + for (j = 0; j < n_iters; ++j) + { + heap.mh_nelem = 0; + for (i = 0; i < nelems; ++i) + lsquic_mh_insert(&heap, NULL, vals[i]); + } + } + + free(els); + free(vals); + return 0; +} diff --git a/external/lsquic/tests/test_minmax.c b/external/lsquic/tests/test_minmax.c new file mode 100644 index 0000000..60e071e --- /dev/null +++ b/external/lsquic/tests/test_minmax.c @@ -0,0 +1,457 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* Tests adopted from Chromium windowed_filter_test.cc */ +// Copyright (c) 2016 The Chromium Authors. All rights reserved. + +#include +#include +#include + +#include "lsquic_minmax.h" + +#ifdef _MSC_VER +#include "vc_compat.h" +#endif + +/* Convert milliseconds to lsquic_time_t, which is microseconds */ +#define ms(val) ((val) * 1000) + +static void +init_minmax (struct minmax *minmax) +{ + minmax_init(minmax, ms(99)); +} + + +// Sets up windowed_min_rtt_ to have the following values: +// Best = 20ms, recorded at 25ms +// Second best = 30ms, recorded at 50ms +// Third best = 50ms, recorded at 100ms +static void +init_min_filter (struct minmax *minmax) +{ + uint64_t now, rtt; + unsigned i; + + now = 0; + rtt = ms(10); + for (i = 0; i < 5; ++i) + { + minmax_upmin(minmax, now, rtt); + now += ms(25); + rtt += ms(10); + } + assert(ms(20) == minmax_get_idx(minmax, 0)); + assert(ms(30) == minmax_get_idx(minmax, 1)); + assert(ms(50) == minmax_get_idx(minmax, 2)); +} + + +// Sets up windowed_max_bw_ to have the following values: +// Best = 900 bps, recorded at 25ms +// Second best = 800 bps, recorded at 50ms +// Third best = 600 bps, recorded at 100ms +static void +init_max_filter (struct minmax *minmax) +{ + uint64_t now, bw; + unsigned i; + + now = 0; + bw = 1000; + for (i = 0; i < 5; ++i) + { + minmax_upmax(minmax, now, bw); + now += ms(25); + bw -= 100; + } + assert(900 == minmax_get_idx(minmax, 0)); + assert(800 == minmax_get_idx(minmax, 1)); + assert(600 == minmax_get_idx(minmax, 2)); +} + + +// Test helper function: updates the filter with a lot of small values in order +// to ensure that it is not susceptible to noise. +static void +update_with_irrelevant_samples (struct minmax *minmax, uint64_t max_value, + uint64_t time) +{ + uint64_t i; + + for (i = 0; i < 1000; ++i) + minmax_upmax(minmax, time, i % max_value); +} + + +static void +test_uninitialized_estimates (void) +{ + struct minmax minmax; + + init_minmax(&minmax); + assert(0 == minmax_get_idx(&minmax, 0)); + assert(0 == minmax_get_idx(&minmax, 1)); + assert(0 == minmax_get_idx(&minmax, 2)); +} + + +static void +test_monotonically_increasing_min (void) +{ + struct minmax minmax; + uint64_t rtt, now; + unsigned i; + + rtt = ms(10); + now = 0; + + init_minmax(&minmax); + minmax_upmin(&minmax, now, rtt); + + assert(ms(10) == minmax_get(&minmax)); + // Gradually increase the rtt samples and ensure the windowed min rtt starts + // rising. + for (i = 0; i < 6; ++i) + { + now += ms(25); + rtt += ms(10); + minmax_upmin(&minmax, now, rtt); + if (i < 3) + assert(minmax_get(&minmax) == ms(10)); + else if (i == 3) + assert(minmax_get(&minmax) == ms(20)); + else if (i == 4) + assert(minmax_get(&minmax) == ms(30)); + else + assert(minmax_get(&minmax) == ms(50)); + } +} + + +static void +test_monotonically_decreasing_max (void) +{ + struct minmax minmax; + uint64_t bw, now; + unsigned i; + + bw = 1000; + now = 0; + + init_minmax(&minmax); + minmax_upmax(&minmax, now, bw); + + assert(1000 == minmax_get(&minmax)); + // Gradually decrease the bw samples and ensure the windowed max bw starts + // decreasing. + for (i = 0; i < 6; ++i) + { + now += ms(25); + bw -= 100; + minmax_upmax(&minmax, now, bw); + if (i < 3) + assert(minmax_get(&minmax) == 1000); + else if (i == 3) + assert(minmax_get(&minmax) == 900); + else if (i == 4) + assert(minmax_get(&minmax) == 800); + else + assert(minmax_get(&minmax) == 600); + } +} + + +static void +sample_changes_third_best_min (void) +{ + struct minmax minmax; + uint64_t rtt, now; + + init_minmax(&minmax); + init_min_filter(&minmax); + rtt = minmax_get_idx(&minmax, 2); + rtt -= ms(5); + now = ms(101); + minmax_upmin(&minmax, now, rtt); + assert(rtt == minmax_get_idx(&minmax, 2)); + assert(ms(30) == minmax_get_idx(&minmax, 1)); + assert(ms(20) == minmax_get_idx(&minmax, 0)); +} + + +static void +sample_changes_third_best_max (void) +{ + struct minmax minmax; + uint64_t bw, now; + + init_minmax(&minmax); + init_max_filter(&minmax); + bw = minmax_get_idx(&minmax, 2); + bw += 50; + now = ms(101); + minmax_upmax(&minmax, now, bw); + assert(bw == minmax_get_idx(&minmax, 2)); + assert(800 == minmax_get_idx(&minmax, 1)); + assert(900 == minmax_get_idx(&minmax, 0)); +} + + +// RTT sample lower than the second-choice min sets that and also +// the third-choice min. +static void +sample_changes_second_best_min (void) +{ + struct minmax minmax; + uint64_t rtt, now; + + init_minmax(&minmax); + init_min_filter(&minmax); + rtt = minmax_get_idx(&minmax, 1); + rtt -= ms(5); + now = ms(101); + minmax_upmin(&minmax, now, rtt); + assert(rtt == minmax_get_idx(&minmax, 2)); + assert(rtt == minmax_get_idx(&minmax, 1)); + assert(ms(20) == minmax_get_idx(&minmax, 0)); +} + + +// BW sample higher than the second-choice max sets that and also +// the third-choice max. +static void +sample_changes_second_best_max (void) +{ + struct minmax minmax; + uint64_t bw, now; + + init_minmax(&minmax); + init_max_filter(&minmax); + bw = minmax_get_idx(&minmax, 1); + bw += 50; + now = ms(101); + minmax_upmax(&minmax, now, bw); + assert(bw == minmax_get_idx(&minmax, 2)); + assert(bw == minmax_get_idx(&minmax, 1)); + assert(900 == minmax_get_idx(&minmax, 0)); +} + + +// RTT sample lower than the first-choice min-rtt sets that and also +// the second and third-choice mins. +static void +sample_changes_all_mins (void) +{ + struct minmax minmax; + uint64_t rtt, now; + + init_minmax(&minmax); + init_min_filter(&minmax); + rtt = minmax_get(&minmax); + rtt -= ms(5); + now = ms(101); + minmax_upmin(&minmax, now, rtt); + assert(rtt == minmax_get_idx(&minmax, 2)); + assert(rtt == minmax_get_idx(&minmax, 1)); + assert(rtt == minmax_get_idx(&minmax, 0)); +} + + +// BW sample higher than the first-choice max sets that and also +// the second and third-choice maxs. +static void +sample_changes_all_maxs (void) +{ + struct minmax minmax; + uint64_t bw, now; + + init_minmax(&minmax); + init_max_filter(&minmax); + bw = minmax_get(&minmax); + bw += 50; + now = ms(101); + minmax_upmax(&minmax, now, bw); + assert(bw == minmax_get_idx(&minmax, 2)); + assert(bw == minmax_get_idx(&minmax, 1)); + assert(bw == minmax_get_idx(&minmax, 0)); +} + + +// Best min sample was recorded at 25ms, so expiry time is 124ms. +static void +expire_best_min (void) +{ + struct minmax minmax; + uint64_t rtt, now, old_2nd, old_3rd; + + init_minmax(&minmax); + init_min_filter(&minmax); + old_3rd = minmax_get_idx(&minmax, 2); + old_2nd = minmax_get_idx(&minmax, 1); + rtt = old_3rd + ms(5); + now = ms(125); + minmax_upmin(&minmax, now, rtt); + assert(rtt == minmax_get_idx(&minmax, 2)); + assert(old_3rd == minmax_get_idx(&minmax, 1)); + assert(old_2nd == minmax_get(&minmax)); +} + + +// Best max sample was recorded at 25ms, so expiry time is 124ms. +static void +expire_best_max (void) +{ + struct minmax minmax; + uint64_t bw, now, old_2nd, old_3rd; + + init_minmax(&minmax); + init_max_filter(&minmax); + old_3rd = minmax_get_idx(&minmax, 2); + old_2nd = minmax_get_idx(&minmax, 1); + bw = old_3rd - 50; + now = ms(125); + minmax_upmax(&minmax, now, bw); + assert(bw == minmax_get_idx(&minmax, 2)); + assert(old_3rd == minmax_get_idx(&minmax, 1)); + assert(old_2nd == minmax_get(&minmax)); +} + + +// Second best min sample was recorded at 75ms, so expiry time is 174ms. +static void +expire_second_best_min (void) +{ + struct minmax minmax; + uint64_t rtt, now, old_3rd; + + init_minmax(&minmax); + init_min_filter(&minmax); + old_3rd = minmax_get_idx(&minmax, 2); + rtt = old_3rd + ms(5); + now = ms(175); + minmax_upmin(&minmax, now, rtt); + assert(rtt == minmax_get_idx(&minmax, 2)); + assert(rtt == minmax_get_idx(&minmax, 1)); + assert(old_3rd == minmax_get(&minmax)); +} + + +// Second best max sample was recorded at 75ms, so expiry time is 174ms. +static void +expire_second_best_max (void) +{ + struct minmax minmax; + uint64_t bw, now, old_3rd; + + init_minmax(&minmax); + init_max_filter(&minmax); + old_3rd = minmax_get_idx(&minmax, 2); + bw = old_3rd - 50; + now = ms(175); + minmax_upmax(&minmax, now, bw); + assert(bw == minmax_get_idx(&minmax, 2)); + assert(bw == minmax_get_idx(&minmax, 1)); + assert(old_3rd == minmax_get(&minmax)); +} + + +// Third best min sample was recorded at 100ms, so expiry time is 199ms. +static void +expire_all_mins (void) +{ + struct minmax minmax; + uint64_t rtt, now, old_3rd; + + init_minmax(&minmax); + init_min_filter(&minmax); + old_3rd = minmax_get_idx(&minmax, 2); + rtt = old_3rd + ms(5); + now = ms(200); + minmax_upmin(&minmax, now, rtt); + assert(rtt == minmax_get_idx(&minmax, 2)); + assert(rtt == minmax_get_idx(&minmax, 1)); + assert(rtt == minmax_get(&minmax)); +} + + +// Third best max sample was recorded at 100ms, so expiry time is 199ms. +static void +expire_all_maxs (void) +{ + struct minmax minmax; + uint64_t bw, now, old_3rd; + + init_minmax(&minmax); + init_max_filter(&minmax); + old_3rd = minmax_get_idx(&minmax, 2); + bw = old_3rd - 50; + now = ms(200); + minmax_upmax(&minmax, now, bw); + assert(bw == minmax_get_idx(&minmax, 2)); + assert(bw == minmax_get_idx(&minmax, 1)); + assert(bw == minmax_get(&minmax)); +} + + +// Test the windowed filter where the time used is an exact counter instead of a +// timestamp. This is useful if, for example, the time is measured in round +// trips. +static void +expire_counter_based_max (void) +{ + struct minmax minmax; + + // Create a window which starts at t = 0 and expires after two cycles. + minmax_init(&minmax, 2); + + const uint64_t kBest = 50000; + // Insert 50000 at t = 1. + minmax_upmax(&minmax, 1, 50000); + assert(kBest == minmax_get(&minmax)); + update_with_irrelevant_samples(&minmax, 20, 1); + assert(kBest == minmax_get(&minmax)); + + // Insert 40000 at t = 2. Nothing is expected to expire. + minmax_upmax(&minmax, 2, 40000); + assert(kBest == minmax_get(&minmax)); + update_with_irrelevant_samples(&minmax, 20, 2); + assert(kBest == minmax_get(&minmax)); + + // Insert 30000 at t = 3. Nothing is expected to expire yet. + minmax_upmax(&minmax, 3, 30000); + assert(kBest == minmax_get(&minmax)); + update_with_irrelevant_samples(&minmax, 20, 3); + assert(kBest == minmax_get(&minmax)); + + // Insert 20000 at t = 4. 50000 at t = 1 expires, so 40000 becomes the new + // maximum. + const uint64_t kNewBest = 40000; + minmax_upmax(&minmax, 4, 20000); + assert(kNewBest == minmax_get(&minmax)); + update_with_irrelevant_samples(&minmax, 20, 4); + assert(kNewBest == minmax_get(&minmax)); +} + + +int +main (void) +{ + test_uninitialized_estimates(); + test_monotonically_increasing_min(); + test_monotonically_decreasing_max(); + sample_changes_third_best_min(); + sample_changes_third_best_max(); + sample_changes_second_best_min(); + sample_changes_second_best_max(); + sample_changes_all_mins(); + sample_changes_all_maxs(); + expire_best_min(); + expire_best_max(); + expire_second_best_min(); + expire_second_best_max(); + expire_all_mins(); + expire_all_maxs(); + expire_counter_based_max(); + + return 0; +} diff --git a/external/lsquic/tests/test_packet_out.c b/external/lsquic/tests/test_packet_out.c new file mode 100644 index 0000000..35478ed --- /dev/null +++ b/external/lsquic/tests/test_packet_out.c @@ -0,0 +1,100 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif +#include + +#include + +#include "lsquic.h" + +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_gquic.h" +#include "lsquic_packet_out.h" +#include "lsquic_conn_flow.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_types.h" +#include "lsquic_malo.h" +#include "lsquic_mm.h" +#include "lsquic_engine_public.h" +#include "lsquic_logger.h" + + +int +main (void) +{ + struct lsquic_engine_public enpub; + struct packet_out_frec_iter pofi; + lsquic_packet_out_t *packet_out; + struct lsquic_stream streams[6]; + struct frame_rec *frec; + + memset(&enpub, 0, sizeof(enpub)); + memset(&streams, 0, sizeof(streams)); + lsquic_mm_init(&enpub.enp_mm); + packet_out = lsquic_mm_get_packet_out(&enpub.enp_mm, NULL, GQUIC_MAX_PAYLOAD_SZ); + + lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[0], QUIC_FRAME_STREAM, 7, 1); + lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[1], QUIC_FRAME_STREAM, 8, 1); + lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[2], QUIC_FRAME_STREAM, 9, 1); + lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[1], QUIC_FRAME_RST_STREAM, 10, 0); + lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[3], QUIC_FRAME_STREAM, 11, 1); + lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[4], QUIC_FRAME_STREAM, 12, 1); + lsquic_packet_out_add_stream(packet_out, &enpub.enp_mm, &streams[5], QUIC_FRAME_STREAM, 13, 1); + + frec = lsquic_pofi_first(&pofi, packet_out); + assert(frec->fe_stream == &streams[0]); + assert(frec->fe_off == 7); + assert(frec->fe_frame_type == QUIC_FRAME_STREAM); + + frec = lsquic_pofi_next(&pofi); + assert(frec->fe_stream == &streams[1]); + assert(frec->fe_off == 8); + assert(frec->fe_frame_type == QUIC_FRAME_STREAM); + + frec = lsquic_pofi_next(&pofi); + assert(frec->fe_stream == &streams[2]); + assert(frec->fe_off == 9); + assert(frec->fe_frame_type == QUIC_FRAME_STREAM); + + frec = lsquic_pofi_next(&pofi); + assert(frec->fe_stream == &streams[1]); + assert(frec->fe_off == 10); + assert(frec->fe_frame_type == QUIC_FRAME_RST_STREAM); + + frec = lsquic_pofi_next(&pofi); + assert(frec->fe_stream == &streams[3]); + assert(frec->fe_off == 11); + assert(frec->fe_frame_type == QUIC_FRAME_STREAM); + + frec = lsquic_pofi_next(&pofi); + assert(frec->fe_stream == &streams[4]); + assert(frec->fe_off == 12); + assert(frec->fe_frame_type == QUIC_FRAME_STREAM); + + frec = lsquic_pofi_next(&pofi); + assert(frec->fe_stream == &streams[5]); + assert(frec->fe_off == 13); + assert(frec->fe_frame_type == QUIC_FRAME_STREAM); + + assert((void *) 0 == lsquic_pofi_next(&pofi)); + + lsquic_packet_out_destroy(packet_out, &enpub, NULL); + assert(!lsquic_malo_first(enpub.enp_mm.malo.frame_rec_arr)); + + lsquic_mm_cleanup(&enpub.enp_mm); + return 0; +} diff --git a/external/lsquic/tests/test_packet_resize.c b/external/lsquic/tests/test_packet_resize.c new file mode 100644 index 0000000..aea8f8e --- /dev/null +++ b/external/lsquic/tests/test_packet_resize.c @@ -0,0 +1,1651 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* Test packet resizing */ + +#include +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include "getopt.h" +#endif + +#define LSQUIC_TEST 1 +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" +#include "lsquic_packet_out.h" +#include "lsquic_packet_resize.h" +#include "lsquic_parse.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_mm.h" +#include "lsquic_enc_sess.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_stream.h" +#include "lsquic_engine_public.h" + +#include "lsquic_logger.h" + +#define N_STREAMS 4 + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + +static const char *s_data[N_STREAMS]; +static size_t s_data_sz[N_STREAMS]; + + +struct test_spec +{ + int lineno; + int expect_error; + unsigned versions; + const char *desc; + const char *prog; +}; + +/* Here we rely on the fact that QUIC_FRAME_STREAM is 1 and other valid frames + * are in a contiguous range. + */ +#define letter_2_frame_type(letter_) ((int) ((letter_) - 'a') + QUIC_FRAME_ACK) +#define frame_type_2_letter(frame_type_) ('a' + ((frame_type_) - QUIC_FRAME_ACK)) + + +/* DSL specification: + * + * P\d+ Set maximum packet size + * N Create new packet, append to input queue, and set as current + * S\d+-\d+f? The first number is stream ID; these values must be in + * range [0, 3]. The second number is the maximum number of + * bytes to read from stream, potentially filling the current + * packet. If `f' is set, set FIN flag. + * C\d+-\d+ Like 'S' above, but CRYPTO frame. Note that there is no 'f' + * flag as CRYPTO frames have no FINs. + * c\d+-\d+ RST_STREAM frame. It's different from frames [abd-z] in that + * n_unacked is changed. + * V Verify contents of packets, both STREAM and non-STREAM frames. + * R Resize packets + * L\d Label, valid values in range [0, 9] + * J\d[=<>]\d+ Jump to label if packet size is valid [1200, 65527] + * I\d+ Increase packet size + * D\d+ Decrease packet size + * [abd-z]\d+ Frame of type [a-z] of some bytes. See letter_2_frame_type() + * to see how the mapping works. + * F\d+ Standalone FIN frame. + */ + + +static struct test_spec test_specs[] = +{ + { + .lineno = __LINE__, + .desc = "split one packet with single STREAM frame into two", + .prog = "P2000;N;a7;S0-2000;V;P1500;R;V;", + }, + { + .lineno = __LINE__, + .desc = "split one 6000-byte packet with single STREAM frame into many, looping", + .prog = "P6000;N;S0-6000;V;L0;D100;R;V;J0>1200;L1;I29;R;V;J1<7000;", + }, + { + .lineno = __LINE__, + .desc = "split three 1500-byte packets with several STREAM frames from different streams", + .prog = "P1500;" + "N;p20;S0-200;S1-300;S2-200;h18;S3-20f;t2;S2-2000;" + "N;c0-30;j11;S2-2000;" + "N;S2-2000;" + "V;" + "L0;D1;R;V;J0>1200;" + , + }, + { + .lineno = __LINE__, + .desc = "one packet, STREAM frame and and empty STREAM FIN frame, split down by 1", + .prog = "P2000;N;S0-1900;F0;V;L0;D1;R;V;J0>1200;", + }, + { + .lineno = __LINE__, + .desc = "one packet, STREAM frame and and empty STREAM FIN frame, split down by 31", + .prog = "P2000;N;S0-1900;F0;V;L0;D31;R;V;J0>1200;", + }, + { + .lineno = __LINE__, + .desc = "one packet, STREAM frame with a FIN, split down by 1", + .prog = "P2000;N;S0-1900f;V;L0;D1;R;V;J0>1200;", + }, + { + .lineno = __LINE__, + .desc = "one packet, STREAM frame with a FIN, split down by 31", + .prog = "P2000;N;S0-1900f;V;L0;D31;R;V;J0>1200;", + }, + { + .lineno = __LINE__, + .desc = "one packet, frame too large", + .prog = "P2000;N;m1500;V;P1000;R;", + .expect_error = 1, + }, + { + .lineno = __LINE__, + .desc = "split one packet with single CRYPTO frame into two", + .prog = "P1252;N;C0-2000;V;P1200;R;V;", + .versions = LSQUIC_IETF_VERSIONS, + }, +}; + + +struct stream_read_cursor +{ + const char *data; /* Points to data that is used as circular buffer */ + unsigned data_sz; /* Size of data pointed to by data */ + unsigned off; /* Current offset */ + unsigned nread; /* Total number of bytes consumed from stream (packetized) */ + int fin; /* FIN is set, see fin_off */ + unsigned fin_off; /* Value of final offset */ +}; + + +struct test_ctx +{ + TAILQ_HEAD(, lsquic_packet_out) packets[2]; /* We move them from one queue to the other */ + int cur_input; /* 0 or 1, indexes packets */ + unsigned n_non_stream_frames; + struct stream_read_cursor stream_cursors[N_STREAMS]; + struct lsquic_stream streams[N_STREAMS]; + struct lsquic_engine_public enpub; + struct lsquic_conn lconn; + struct network_path path; +}; + + +static void +init_test_ctx (struct test_ctx *ctx, const struct test_spec *spec, + enum lsquic_version version) +{ + unsigned i; + + memset(ctx, 0, sizeof(*ctx)); + TAILQ_INIT(&ctx->packets[0]); + TAILQ_INIT(&ctx->packets[1]); + for (i = 0; i < N_STREAMS; ++i) + { + ctx->stream_cursors[i].data = s_data[i]; + ctx->stream_cursors[i].data_sz = s_data_sz[i]; + } + lsquic_mm_init(&ctx->enpub.enp_mm); + ctx->lconn.cn_flags |= LSCONN_HANDSHAKE_DONE; /* For short packet headers */ + ctx->lconn.cn_pf = select_pf_by_ver(version); + ctx->lconn.cn_esf_c = select_esf_common_by_ver(version); + LSCONN_INITIALIZE(&ctx->lconn); + ctx->lconn.cn_cces_buf[0].cce_cid.len = sizeof(spec->lineno); + memcpy(ctx->lconn.cn_cces_buf[0].cce_cid.idbuf, &spec->lineno, sizeof(spec->lineno)); +} + + +static void +cleanup_test_ctx (struct test_ctx *ctx) +{ + struct lsquic_packet_out *packet_out; + unsigned i; + + for (i = 0; i < 2; ++i) + while (packet_out = TAILQ_FIRST(&ctx->packets[i]), packet_out != NULL) + { + TAILQ_REMOVE(&ctx->packets[i], packet_out, po_next); + lsquic_packet_out_destroy(packet_out, &ctx->enpub, NULL); + } + lsquic_mm_cleanup(&ctx->enpub.enp_mm); +} + + +static struct lsquic_packet_out * +new_packet (struct test_ctx *ctx) +{ + struct lsquic_packet_out *packet_out; + static lsquic_packno_t packno; /* Each packet gets unique packet number + * to make them easier to track. + */ + + packet_out = lsquic_packet_out_new(&ctx->enpub.enp_mm, ctx->enpub.enp_mm.malo.packet_out, 1, + &ctx->lconn, PACKNO_BITS_0, 0, NULL, &ctx->path, HETY_SHORT); + if (packet_out) + packet_out->po_packno = packno++; + + return packet_out; +} + + +static struct lsquic_packet_out * +new_input_packet (struct test_ctx *ctx) +{ + struct lsquic_packet_out *packet_out; + + packet_out = new_packet(ctx); + if (packet_out) + TAILQ_INSERT_TAIL(&ctx->packets[ctx->cur_input], packet_out, po_next); + + return packet_out; +} + + +struct my_read_ctx { + struct stream_read_cursor *cursor; + /* XXX Turns out, gQUIC and IETF QUIC STREAM frame generators differ in + * what they pass to the read() function. The former does not limit + * itself to pf_gen_stream_frame()'s `size'. Rather than change and + * retest gQUIC code, put a limiter in this unit test file instead. + */ + size_t max; + int fin; +}; + + +static size_t +my_gsf_read (void *stream, void *buf, size_t len, int *fin) +{ + struct my_read_ctx *const mctx = stream; + struct stream_read_cursor *const cursor = mctx->cursor; + unsigned char *p = buf, *end; + size_t n; + + if (len > mctx->max) + len = mctx->max; + + end = p + len; + + while (p < end) + { + n = MIN(end - p, cursor->data_sz - cursor->off); + memcpy(p, cursor->data + cursor->off, n); + cursor->off += n; + if (cursor->off == cursor->data_sz) + cursor->off = 0; + cursor->nread += n; + p += n; + } + + if (mctx->fin) + { + cursor->fin = 1; + cursor->fin_off = cursor->nread; + LSQ_DEBUG("set FIN at offset %u", cursor->fin_off); + } + + *fin = mctx->fin; + return len; +} + + +static void +make_stream_frame (struct test_ctx *ctx, struct lsquic_packet_out *packet_out, + enum quic_frame_type frame_type, lsquic_stream_id_t stream_id, + size_t nbytes, int fin) +{ + struct my_read_ctx mctx = { &ctx->stream_cursors[stream_id], nbytes, fin, }; + int w; + + assert(!ctx->stream_cursors[stream_id].fin); + + if (nbytes == 0 && fin) + { + ctx->stream_cursors[stream_id].fin = 1; + ctx->stream_cursors[stream_id].fin_off + = ctx->stream_cursors[stream_id].nread; + LSQ_DEBUG("set FIN at offset %u", ctx->stream_cursors[stream_id].fin_off); + } + + w = (&ctx->lconn.cn_pf->pf_gen_stream_frame) + [frame_type == QUIC_FRAME_CRYPTO]( + packet_out->po_data + packet_out->po_data_sz, + lsquic_packet_out_avail(packet_out), + stream_id, ctx->stream_cursors[stream_id].nread, + nbytes == 0 && fin, nbytes, my_gsf_read, &mctx); + assert(w > 0); + LSQ_DEBUG("wrote %s frame of %d bytes", frame_type_2_str[frame_type], w); + lsquic_packet_out_add_stream(packet_out, &ctx->enpub.enp_mm, + &ctx->streams[stream_id], frame_type, + packet_out->po_data_sz, w); + packet_out->po_data_sz += w; + packet_out->po_frame_types |= 1 << frame_type; + if (0 == lsquic_packet_out_avail(packet_out)) + packet_out->po_flags |= PO_STREAM_END; +} + + +static void +make_non_stream_frame (struct test_ctx *ctx, + struct lsquic_packet_out *packet_out, enum quic_frame_type frame_type, + size_t nbytes) +{ + static unsigned char fill_byte; + + /* We don't truncate non-STREAM frames because we don't chop them up */ + assert(nbytes <= lsquic_packet_out_avail(packet_out)); + + memset(packet_out->po_data + packet_out->po_data_sz, fill_byte, nbytes); + lsquic_packet_out_add_frame(packet_out, &ctx->enpub.enp_mm, + fill_byte, frame_type, packet_out->po_data_sz, nbytes); + packet_out->po_data_sz += nbytes; + packet_out->po_frame_types |= 1 << frame_type; + if ((1 << frame_type) & BQUIC_FRAME_REGEN_MASK) + packet_out->po_regen_sz += nbytes; + LSQ_DEBUG("wrote %s frame of %zd bytes", frame_type_2_str[frame_type], + nbytes); + ++fill_byte; + ++ctx->n_non_stream_frames; +} + + +static void +make_rst_stream_frame (struct test_ctx *ctx, + struct lsquic_packet_out *packet_out, lsquic_stream_id_t stream_id, + size_t nbytes) +{ + int s; + + /* We don't truncate non-STREAM frames because we don't chop them up */ + assert(nbytes <= lsquic_packet_out_avail(packet_out)); + + memset(packet_out->po_data + packet_out->po_data_sz, 'R', nbytes); + s = lsquic_packet_out_add_stream(packet_out, &ctx->enpub.enp_mm, + &ctx->streams[stream_id], QUIC_FRAME_RST_STREAM, + packet_out->po_data_sz, nbytes); + assert(s == 0); + packet_out->po_data_sz += nbytes; + packet_out->po_frame_types |= 1 << QUIC_FRAME_RST_STREAM; + LSQ_DEBUG("wrote %s frame of %zd bytes", + frame_type_2_str[QUIC_FRAME_RST_STREAM], nbytes); + ++ctx->n_non_stream_frames; +} + + +/* STREAM frame ordering assumptions, with or without FINs, are specific to + * this unit test. These assumptions do not have to hold in real code. + * The assumptions are made in order to verify the operation of the "packet + * resize" module. + */ +static void +verify_stream_contents (struct test_ctx *ctx, lsquic_stream_id_t stream_id) +{ + char *data; + size_t len; + int dummy_fin = -1, parsed_len, seen_fin; + struct lsquic_packet_out *packet_out; + struct stream_read_cursor cursor; + struct my_read_ctx mctx; + struct stream_frame stream_frame; + struct packet_out_frec_iter pofi; + struct frame_rec *frec; + unsigned off, frec_count; + + LSQ_DEBUG("verifying stream #%"PRIu64, stream_id); + data = malloc(ctx->stream_cursors[stream_id].nread); + assert(data); + /* Copy cursor to re-read from the beginning and not affect real cursor */ + cursor = ctx->stream_cursors[stream_id]; + cursor.off = 0; + mctx = (struct my_read_ctx) { &cursor, ctx->stream_cursors[stream_id].nread, 0, }; + len = my_gsf_read(&mctx, data, ctx->stream_cursors[stream_id].nread, &dummy_fin); + assert(len == ctx->stream_cursors[stream_id].nread); + assert(dummy_fin == 0); /* Self-check */ + + /* Go packet by packet, and within each packet, frame by frame, and + * compare STREAM frame contents. + */ + off = 0; + seen_fin = 0; + frec_count = 0; + TAILQ_FOREACH(packet_out, &ctx->packets[ctx->cur_input], po_next) + { + LSQ_DEBUG("examining packet #%"PRIu64, packet_out->po_packno); + assert(packet_out->po_data_sz <= packet_out->po_n_alloc); + assert(packet_out->po_data_sz <= ctx->path.np_pack_size); + for (frec = lsquic_pofi_first(&pofi, packet_out); frec; + frec = lsquic_pofi_next(&pofi)) + { + if (!(((1 << frec->fe_frame_type) & (QUIC_FTBIT_STREAM|QUIC_FTBIT_CRYPTO|QUIC_FTBIT_RST_STREAM)) + && frec->fe_stream == &ctx->streams[stream_id])) + continue; + assert(!seen_fin); + ++frec_count; + if (frec->fe_frame_type == QUIC_FRAME_RST_STREAM) + continue; + parsed_len = (&ctx->lconn.cn_pf->pf_parse_stream_frame) + [frec->fe_frame_type == QUIC_FRAME_CRYPTO] + (packet_out->po_data + frec->fe_off, frec->fe_len, &stream_frame); + assert(parsed_len > 0); + assert(parsed_len == frec->fe_len); + LSQ_DEBUG("verify stream %"PRIu64", contents %hu bytes", + stream_id, stream_frame.data_frame.df_size); + assert(stream_frame.data_frame.df_offset == off); + assert(stream_frame.data_frame.df_size <= len - off); + assert(0 == memcmp(stream_frame.data_frame.df_data, data + off, + stream_frame.data_frame.df_size)); + off += stream_frame.data_frame.df_size; + if (stream_frame.data_frame.df_fin) + { + assert(ctx->stream_cursors[stream_id].fin); + assert(ctx->stream_cursors[stream_id].fin_off == off); + seen_fin = 1; + } + if (frec->fe_off + frec->fe_len == packet_out->po_n_alloc) + assert(packet_out->po_flags & PO_STREAM_END); + if (!(packet_out->po_flags & PO_STREAM_END)) + assert(frec->fe_off + frec->fe_len < packet_out->po_n_alloc); + } + } + + if (ctx->stream_cursors[stream_id].fin) + assert(seen_fin); + assert(frec_count == ctx->streams[stream_id].n_unacked); + free(data); +} + + +/* Verify that non-STREAM frames are in the same order, of the same size, and + * same contents. + */ +static void +verify_non_stream_frames (struct test_ctx *ctx, const struct test_spec *spec) +{ + const char *pos; + int w; + unsigned count, regen_sz, off; + struct lsquic_packet_out *packet_out; + struct packet_out_frec_iter pofi; + struct frame_rec *frec; + unsigned char fill; + char frame_str[30]; + + LSQ_DEBUG("verifying non-STREAM frames"); + + /* Go packet by packet, and within each packet, frame by frame, and + * verify relative position of non-STREAM frames (must be in the same + * order as in the order they were inserted) and their contents. + */ + count = 0; + pos = spec->prog; + TAILQ_FOREACH(packet_out, &ctx->packets[ctx->cur_input], po_next) + { + regen_sz = 0; + off = 0; + LSQ_DEBUG("examining packet #%"PRIu64, packet_out->po_packno); + assert(packet_out->po_data_sz <= packet_out->po_n_alloc); + assert(packet_out->po_data_sz <= ctx->path.np_pack_size); + for (frec = lsquic_pofi_first(&pofi, packet_out); frec; + frec = lsquic_pofi_next(&pofi)) + { + if ((1 << frec->fe_frame_type) & BQUIC_FRAME_REGEN_MASK) + { + assert(regen_sz == 0 || regen_sz == off); + regen_sz += frec->fe_len; + } + off += frec->fe_len; + if ((1 << frec->fe_frame_type) + & (QUIC_FTBIT_STREAM|QUIC_FTBIT_CRYPTO)) + continue; + ++count; + LSQ_DEBUG("checking %hu-byte %s", frec->fe_len, + frame_type_2_str[frec->fe_frame_type]); + if (frec->fe_frame_type == QUIC_FRAME_RST_STREAM) + w = snprintf(frame_str, sizeof(frame_str), "%c%u-%hu;", + frame_type_2_letter(frec->fe_frame_type), + (unsigned) (frec->fe_stream - ctx->streams), frec->fe_len); + else + w = snprintf(frame_str, sizeof(frame_str), "%c%hu;", + frame_type_2_letter(frec->fe_frame_type), frec->fe_len); + pos = strstr(pos, frame_str); + assert(pos); + pos += w; + /* Now check contents */ + fill = frec->fe_frame_type == QUIC_FRAME_RST_STREAM + ? 'R' : (unsigned char) frec->fe_u.data; + for (w = 0; w < (int) frec->fe_len; ++w) + assert(packet_out->po_data[frec->fe_off + w] == fill); + } + assert(packet_out->po_regen_sz == regen_sz); + assert(packet_out->po_data_sz == off); + } + + assert(count == ctx->n_non_stream_frames); +} + + +static void +verify_packet_contents (struct test_ctx *ctx, const struct test_spec *spec) +{ + lsquic_stream_id_t stream_id; + + for (stream_id = 0; stream_id < N_STREAMS; ++stream_id) + verify_stream_contents(ctx, stream_id); + verify_non_stream_frames(ctx, spec); +} + + +static struct lsquic_packet_out * +my_pri_next_packet (void *ctxp) +{ + struct test_ctx *ctx = ctxp; + struct lsquic_packet_out *packet_out; + + packet_out = TAILQ_FIRST(&ctx->packets[ctx->cur_input]); + if (packet_out) + LSQ_DEBUG("%s: return packet #%"PRIu64, __func__, + packet_out->po_packno); + else + LSQ_DEBUG("%s: out of packets", __func__); + + return packet_out; +} + + +static void +my_pri_discard_packet (void *ctxp, struct lsquic_packet_out *packet_out) +{ + struct test_ctx *ctx = ctxp; + + LSQ_DEBUG("%s: discard packet #%"PRIu64, __func__, packet_out->po_packno); + TAILQ_REMOVE(&ctx->packets[ctx->cur_input], packet_out, po_next); + lsquic_packet_out_destroy(packet_out, &ctx->enpub, NULL); +} + + +static struct lsquic_packet_out * +my_pri_new_packet (void *ctx) +{ + LSQ_DEBUG("%s: grab a new packet", __func__); + return new_packet(ctx); +} + + +static const struct packet_resize_if my_pr_if = +{ + .pri_next_packet = my_pri_next_packet, + .pri_new_packet = my_pri_new_packet, + .pri_discard_packet = my_pri_discard_packet, +}; + + +static int +resize_packets (struct test_ctx *ctx) +{ + struct packet_resize_ctx prctx; + struct lsquic_packet_out *new; + + lsquic_packet_resize_init(&prctx, &ctx->enpub, &ctx->lconn, ctx, &my_pr_if); + + while (new = lsquic_packet_resize_next(&prctx), new != NULL) + { + TAILQ_INSERT_TAIL(&ctx->packets[!ctx->cur_input], new, po_next); + LSQ_DEBUG("append new packet #%"PRIu64, new->po_packno); + } + ctx->cur_input = !ctx->cur_input; + LSQ_DEBUG("switch cur_input to %d", ctx->cur_input); + return lsquic_packet_resize_is_error(&prctx) ? -1 : 0; +} + + +static void +run_test (const struct test_spec *spec, enum lsquic_version version) +{ + struct lsquic_packet_out *packet_out; + struct test_ctx ctx; + long stream_id, nbytes; + char L[4] = "L?;", op, cmd; + const char *pc, *addr; + int jump, s; + enum quic_frame_type frame_type; + + LSQ_INFO("Running test on line %d: %s", spec->lineno, spec->desc); + if (spec->versions && !(spec->versions & (1 << version))) + { +#ifndef _MSC_VER + LSQ_INFO("Not applicable to version %s, skip", lsquic_ver2str[version]); +#else + LSQ_INFO("Not applicable to version %d, skip", version); +#endif + return; + } + + init_test_ctx(&ctx, spec, version); + + packet_out = NULL; + for (pc = spec->prog; *pc; ++pc) + { + cmd = *pc++; + switch (cmd) + { + case 'P': + ctx.path.np_pack_size = strtol(pc, (char **) &pc, 10); + LSQ_DEBUG("P: set packet size to %hu bytes", ctx.path.np_pack_size); + break; + case 'N': + packet_out = new_input_packet(&ctx); + LSQ_DEBUG("N: create new input packet"); + break; + case 'S': + case 'C': + stream_id = strtol(pc, (char **) &pc, 10); + assert('-' == *pc); + assert(stream_id >= 0 && stream_id < N_STREAMS); + nbytes = strtol(pc + 1, (char **) &pc, 10); + assert(nbytes > 0); + LSQ_DEBUG("%c: create frame for stream %ld of at most %ld bytes", + cmd, stream_id, nbytes); + if (cmd == 'S' && *pc == 'f') + ++pc; + make_stream_frame(&ctx, packet_out, + cmd == 'S' ? QUIC_FRAME_STREAM : QUIC_FRAME_CRYPTO, + stream_id, nbytes, pc[-1] == 'f'); + break; + case 'F': + stream_id = strtol(pc, (char **) &pc, 10); + make_stream_frame(&ctx, packet_out, QUIC_FRAME_STREAM, stream_id, + 0, 1); + break; + case 'V': + LSQ_DEBUG("V: verify packet contents"); + verify_packet_contents(&ctx, spec); + break; + case 'R': + LSQ_DEBUG("R: resize packets"); + s = resize_packets(&ctx); + if (0 != s) + { + LSQ_DEBUG("got error, expected: %d", spec->expect_error); + assert(spec->expect_error); + assert(pc[0] == ';'); + assert(pc[1] == '\0'); + goto end; + } + break; + case 'D': + nbytes = strtol(pc, (char **) &pc, 10); + ctx.path.np_pack_size -= nbytes; + LSQ_DEBUG("D: decrease packet size by %ld to %hu bytes", + nbytes, ctx.path.np_pack_size); + break; + case 'I': + nbytes = strtol(pc, (char **) &pc, 10); + ctx.path.np_pack_size += nbytes; + LSQ_DEBUG("I: increase packet size by %ld to %hu bytes", + nbytes, ctx.path.np_pack_size); + break; + case 'L': + assert(*pc >= '0' && *pc <= '9'); + ++pc; + break; + case 'J': + assert(*pc >= '0' && *pc <= '9'); + L[1] = *pc++; + addr = strstr(spec->prog, L); + assert(addr); + op = *pc++; + nbytes = strtol(pc, (char **) &pc, 10); + switch (op) + { + case '=': jump = ctx.path.np_pack_size == nbytes; break; + case '<': jump = ctx.path.np_pack_size < nbytes; break; + case '>': jump = ctx.path.np_pack_size > nbytes; break; + default: jump = 0; assert(0); break; + } + LSQ_DEBUG("J: jump if (%hu %c %ld) -> %sjumping", + ctx.path.np_pack_size, op, nbytes, jump ? "" : "not "); + if (jump) + pc = addr + 2; + break; + case 'c': + stream_id = strtol(pc, (char **) &pc, 10); + assert('-' == *pc); + assert(stream_id >= 0 && stream_id < N_STREAMS); + nbytes = strtol(pc + 1, (char **) &pc, 10); + assert(nbytes > 0); + make_rst_stream_frame(&ctx, packet_out, stream_id, nbytes); + break; + case 'a': case 'b': case 'd': case 'e': case 'f': case 'g': + case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': + case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': + case 'v': case 'w': case 'x': case 'y': case 'z': + frame_type = letter_2_frame_type(cmd); + nbytes = strtol(pc, (char **) &pc, 10); + make_non_stream_frame(&ctx, packet_out, frame_type, nbytes); + break; + default: + assert(0); + goto end; + } + assert(*pc == ';'); + } + + end: + cleanup_test_ctx(&ctx); +} + + +int +main (int argc, char **argv) +{ + const struct test_spec *spec; + enum lsquic_version version; + int opt; + + lsquic_log_to_fstream(stderr, LLTS_HHMMSSMS); + (void) lsquic_set_log_level("info"); + while (opt = getopt(argc, argv, "l:L:h"), opt != -1) + { + switch (opt) + { + case 'L': + if (0 != lsquic_set_log_level(optarg)) + { + perror("lsquic_set_log_level"); + return 1; + } + break; + case 'l': + if (0 != lsquic_logger_lopt(optarg)) + { + perror("lsquic_logger_lopt"); + return 1; + } + break; + case 'h': + printf("usage: %s [options]\n", argv[0]); + return 0; + default: + return 1; + } + } + + for (version = 0; version < N_LSQVER; ++version) + { + if (!((1 << version) & LSQUIC_DF_VERSIONS)) + continue; +#ifndef _MSC_VER + LSQ_INFO("testing version %s", lsquic_ver2str[version]); +#else + LSQ_INFO("testing version %d", version); +#endif + for (spec = test_specs; spec < test_specs + sizeof(test_specs) / sizeof(test_specs[0]); ++spec) + run_test(spec, version); + } + + return 0; +} + + +#define DATA_0 \ +"ON BEING IDLE.\n" \ +"\n" \ +"Now, this is a subject on which I flatter myself I really am _au fait_.\n" \ +"The gentleman who, when I was young, bathed me at wisdom's font for nine\n" \ +"guineas a term--no extras--used to say he never knew a boy who could\n" \ +"do less work in more time; and I remember my poor grandmother once\n" \ +"incidentally observing, in the course of an instruction upon the use\n" \ +"of the Prayer-book, that it was highly improbable that I should ever do\n" \ +"much that I ought not to do, but that she felt convinced beyond a doubt\n" \ +"that I should leave undone pretty well everything that I ought to do.\n" \ +"\n" \ +"I am afraid I have somewhat belied half the dear old lady's prophecy.\n" \ +"Heaven help me! I have done a good many things that I ought not to have\n" \ +"done, in spite of my laziness. But I have fully confirmed the accuracy\n" \ +"of her judgment so far as neglecting much that I ought not to have\n" \ +"neglected is concerned. Idling always has been my strong point. I take\n" \ +"no credit to myself in the matter--it is a gift. Few possess it. There\n" \ +"are plenty of lazy people and plenty of slow-coaches, but a genuine\n" \ +"idler is a rarity. He is not a man who slouches about with his hands in\n" \ +"his pockets. On the contrary, his most startling characteristic is that\n" \ +"he is always intensely busy.\n" \ +"\n" \ +"It is impossible to enjoy idling thoroughly unless one has plenty of\n" \ +"work to do. There is no fun in doing nothing when you have nothing to\n" \ +"do. Wasting time is merely an occupation then, and a most exhausting\n" \ +"one. Idleness, like kisses, to be sweet must be stolen.\n" \ +"\n" \ +"Many years ago, when I was a young man, I was taken very ill--I never\n" \ +"could see myself that much was the matter with me, except that I had\n" \ +"a beastly cold. But I suppose it was something very serious, for the\n" \ +"doctor said that I ought to have come to him a month before, and that\n" \ +"if it (whatever it was) had gone on for another week he would not have\n" \ +"answered for the consequences. It is an extraordinary thing, but I\n" \ +"never knew a doctor called into any case yet but what it transpired\n" \ +"that another day's delay would have rendered cure hopeless. Our medical\n" \ +"guide, philosopher, and friend is like the hero in a melodrama--he\n" \ +"always comes upon the scene just, and only just, in the nick of time. It\n" \ +"is Providence, that is what it is.\n" \ +"\n" \ +"Well, as I was saying, I was very ill and was ordered to Buxton for a\n" \ +"month, with strict injunctions to do nothing whatever all the while\n" \ +"that I was there. \"Rest is what you require,\" said the doctor, \"perfect\n" \ +"rest.\"\n" \ +"\n" \ +"It seemed a delightful prospect. \"This man evidently understands my\n" \ +"complaint,\" said I, and I pictured to myself a glorious time--a four\n" \ +"weeks' _dolce far niente_ with a dash of illness in it. Not too much\n" \ +"illness, but just illness enough--just sufficient to give it the flavor\n" \ +"of suffering and make it poetical. I should get up late, sip chocolate,\n" \ +"and have my breakfast in slippers and a dressing-gown. I should lie out\n" \ +"in the garden in a hammock and read sentimental novels with a melancholy\n" \ +"ending, until the books should fall from my listless hand, and I should\n" \ +"recline there, dreamily gazing into the deep blue of the firmament,\n" \ +"watching the fleecy clouds floating like white-sailed ships across\n" \ +"its depths, and listening to the joyous song of the birds and the low\n" \ +"rustling of the trees. Or, on becoming too weak to go out of doors,\n" \ +"I should sit propped up with pillows at the open window of the\n" \ +"ground-floor front, and look wasted and interesting, so that all the\n" \ +"pretty girls would sigh as they passed by.\n" \ +"\n" \ +"And twice a day I should go down in a Bath chair to the Colonnade to\n" \ +"drink the waters. Oh, those waters! I knew nothing about them then,\n" \ +"and was rather taken with the idea. \"Drinking the waters\" sounded\n" \ +"fashionable and Queen Anne-fied, and I thought I should like them. But,\n" \ +"ugh! after the first three or four mornings! Sam Weller's description of\n" \ +"them as \"having a taste of warm flat-irons\" conveys only a faint idea of\n" \ +"their hideous nauseousness. If anything could make a sick man get well\n" \ +"quickly, it would be the knowledge that he must drink a glassful of them\n" \ +"every day until he was recovered. I drank them neat for six consecutive\n" \ +"days, and they nearly killed me; but after then I adopted the plan of\n" \ +"taking a stiff glass of brandy-and-water immediately on the top of them,\n" \ +"and found much relief thereby. I have been informed since, by various\n" \ +"eminent medical gentlemen, that the alcohol must have entirely\n" \ +"counteracted the effects of the chalybeate properties contained in the\n" \ +"water. I am glad I was lucky enough to hit upon the right thing.\n" \ +"\n" \ +"But \"drinking the waters\" was only a small portion of the torture I\n" \ +"experienced during that memorable month--a month which was, without\n" \ +"exception, the most miserable I have ever spent. During the best part of\n" \ +"it I religiously followed the doctor's mandate and did nothing whatever,\n" \ +"except moon about the house and garden and go out for two hours a day in\n" \ +"a Bath chair. That did break the monotony to a certain extent. There is\n" \ +"more excitement about Bath-chairing--especially if you are not used to\n" \ +"the exhilarating exercise--than might appear to the casual observer. A\n" \ +"sense of danger, such as a mere outsider might not understand, is ever\n" \ +"present to the mind of the occupant. He feels convinced every minute\n" \ +"that the whole concern is going over, a conviction which becomes\n" \ +"especially lively whenever a ditch or a stretch of newly macadamized\n" \ +"road comes in sight. Every vehicle that passes he expects is going to\n" \ +"run into him; and he never finds himself ascending or descending a\n" \ +"hill without immediately beginning to speculate upon his chances,\n" \ +"supposing--as seems extremely probable--that the weak-kneed controller\n" \ +"of his destiny should let go.\n" \ +"\n" \ +"But even this diversion failed to enliven after awhile, and the _ennui_\n" \ +"became perfectly unbearable. I felt my mind giving way under it. It is\n" \ +"not a strong mind, and I thought it would be unwise to tax it too far.\n" \ +"So somewhere about the twentieth morning I got up early, had a good\n" \ +"breakfast, and walked straight off to Hayfield, at the foot of the\n" \ +"Kinder Scout--a pleasant, busy little town, reached through a lovely\n" \ +"valley, and with two sweetly pretty women in it. At least they were\n" \ +"sweetly pretty then; one passed me on the bridge and, I think, smiled;\n" \ +"and the other was standing at an open door, making an unremunerative\n" \ +"investment of kisses upon a red-faced baby. But it is years ago, and I\n" \ +"dare say they have both grown stout and snappish since that time.\n" \ +"Coming back, I saw an old man breaking stones, and it roused such strong\n" \ +"longing in me to use my arms that I offered him a drink to let me take\n" \ +"his place. He was a kindly old man and he humored me. I went for those\n" \ +"stones with the accumulated energy of three weeks, and did more work in\n" \ +"half an hour than he had done all day. But it did not make him jealous.\n" \ +"\n" \ +"Having taken the plunge, I went further and further into dissipation,\n" \ +"going out for a long walk every morning and listening to the band in\n" \ +"the pavilion every evening. But the days still passed slowly\n" \ +"notwithstanding, and I was heartily glad when the last one came and I\n" \ +"was being whirled away from gouty, consumptive Buxton to London with its\n" \ +"stern work and life. I looked out of the carriage as we rushed through\n" \ +"Hendon in the evening. The lurid glare overhanging the mighty city\n" \ +"seemed to warm my heart, and when, later on, my cab rattled out of St.\n" \ +"Pancras' station, the old familiar roar that came swelling up around me\n" \ +"sounded the sweetest music I had heard for many a long day.\n" \ +"\n" \ +"I certainly did not enjoy that month's idling. I like idling when I\n" \ +"ought not to be idling; not when it is the only thing I have to do. That\n" \ +"is my pig-headed nature. The time when I like best to stand with my\n" \ +"back to the fire, calculating how much I owe, is when my desk is heaped\n" \ +"highest with letters that must be answered by the next post. When I like\n" \ +"to dawdle longest over my dinner is when I have a heavy evening's work\n" \ +"before me. And if, for some urgent reason, I ought to be up particularly\n" \ +"early in the morning, it is then, more than at any other time, that I\n" \ +"love to lie an extra half-hour in bed.\n" \ +"\n" \ +"Ah! how delicious it is to turn over and go to sleep again: \"just for\n" \ +"five minutes.\" Is there any human being, I wonder, besides the hero of\n" \ +"a Sunday-school \"tale for boys,\" who ever gets up willingly? There\n" \ +"are some men to whom getting up at the proper time is an utter\n" \ +"impossibility. If eight o'clock happens to be the time that they should\n" \ +"turn out, then they lie till half-past. If circumstances change and\n" \ +"half-past eight becomes early enough for them, then it is nine before\n" \ +"they can rise. They are like the statesman of whom it was said that he\n" \ +"was always punctually half an hour late. They try all manner of schemes.\n" \ +"They buy alarm-clocks (artful contrivances that go off at the wrong time\n" \ +"and alarm the wrong people). They tell Sarah Jane to knock at the door\n" \ +"and call them, and Sarah Jane does knock at the door and does call them,\n" \ +"and they grunt back \"awri\" and then go comfortably to sleep again. I\n" \ +"knew one man who would actually get out and have a cold bath; and even\n" \ +"that was of no use, for afterward he would jump into bed again to warm\n" \ +"himself.\n" \ +"\n" \ +"I think myself that I could keep out of bed all right if I once got\n" \ +"out. It is the wrenching away of the head from the pillow that I find so\n" \ +"hard, and no amount of over-night determination makes it easier. I say\n" \ +"to myself, after having wasted the whole evening, \"Well, I won't do\n" \ +"any more work to-night; I'll get up early to-morrow morning;\" and I am\n" \ +"thoroughly resolved to do so--then. In the morning, however, I feel less\n" \ +"enthusiastic about the idea, and reflect that it would have been much\n" \ +"better if I had stopped up last night. And then there is the trouble of\n" \ +"dressing, and the more one thinks about that the more one wants to put\n" \ +"it off.\n" \ +"\n" \ +"It is a strange thing this bed, this mimic grave, where we stretch our\n" \ +"tired limbs and sink away so quietly into the silence and rest. \"O bed,\n" \ +"O bed, delicious bed, that heaven on earth to the weary head,\" as sang\n" \ +"poor Hood, you are a kind old nurse to us fretful boys and girls. Clever\n" \ +"and foolish, naughty and good, you take us all in your motherly lap and\n" \ +"hush our wayward crying. The strong man full of care--the sick man\n" \ +"full of pain--the little maiden sobbing for her faithless lover--like\n" \ +"children we lay our aching heads on your white bosom, and you gently\n" \ +"soothe us off to by-by.\n" \ +"\n" \ +"Our trouble is sore indeed when you turn away and will not comfort us.\n" \ +"How long the dawn seems coming when we cannot sleep! Oh! those hideous\n" \ +"nights when we toss and turn in fever and pain, when we lie, like living\n" \ +"men among the dead, staring out into the dark hours that drift so slowly\n" \ +"between us and the light. And oh! those still more hideous nights when\n" \ +"we sit by another in pain, when the low fire startles us every now and\n" \ +"then with a falling cinder, and the tick of the clock seems a hammer\n" \ +"beating out the life that we are watching.\n" \ +"\n" \ +"But enough of beds and bedrooms. I have kept to them too long, even for\n" \ +"an idle fellow. Let us come out and have a smoke. That wastes time just\n" \ +"as well and does not look so bad. Tobacco has been a blessing to us\n" \ +"idlers. What the civil-service clerk before Sir Walter's time found\n" \ +"to occupy their minds with it is hard to imagine. I attribute the\n" \ +"quarrelsome nature of the Middle Ages young men entirely to the want of\n" \ +"the soothing weed. They had no work to do and could not smoke, and\n" \ +"the consequence was they were forever fighting and rowing. If, by any\n" \ +"extraordinary chance, there was no war going, then they got up a deadly\n" \ +"family feud with the next-door neighbor, and if, in spite of this, they\n" \ +"still had a few spare moments on their hands, they occupied them with\n" \ +"discussions as to whose sweetheart was the best looking, the arguments\n" \ +"employed on both sides being battle-axes, clubs, etc. Questions of taste\n" \ +"were soon decided in those days. When a twelfth-century youth fell in\n" \ +"love he did not take three paces backward, gaze into her eyes, and tell\n" \ +"her she was too beautiful to live. He said he would step outside and see\n" \ +"about it. And if, when he got out, he met a man and broke his head--the\n" \ +"other man's head, I mean--then that proved that his--the first\n" \ +"fellow's--girl was a pretty girl. But if the other fellow broke _his_\n" \ +"head--not his own, you know, but the other fellow's--the other fellow\n" \ +"to the second fellow, that is, because of course the other fellow would\n" \ +"only be the other fellow to him, not the first fellow who--well, if he\n" \ +"broke his head, then _his_ girl--not the other fellow's, but the fellow\n" \ +"who _was_ the--Look here, if A broke B's head, then A's girl was a\n" \ +"pretty girl; but if B broke A's head, then A's girl wasn't a pretty\n" \ +"girl, but B's girl was. That was their method of conducting art\n" \ +"criticism.\n" \ +"\n" \ +"Nowadays we light a pipe and let the girls fight it out among\n" \ +"themselves.\n" \ +"\n" \ +"They do it very well. They are getting to do all our work. They are\n" \ +"doctors, and barristers, and artists. They manage theaters, and promote\n" \ +"swindles, and edit newspapers. I am looking forward to the time when we\n" \ +"men shall have nothing to do but lie in bed till twelve, read two novels\n" \ +"a day, have nice little five-o'clock teas all to ourselves, and tax\n" \ +"our brains with nothing more trying than discussions upon the latest\n" \ +"patterns in trousers and arguments as to what Mr. Jones' coat was\n" \ +"made of and whether it fitted him. It is a glorious prospect--for idle\n" \ +"fellows.\n" + +#define DATA_1 \ +"ON BEING IN LOVE.\n" \ +"\n" \ +"You've been in love, of course! If not you've got it to come. Love is\n" \ +"like the measles; we all have to go through it. Also like the measles,\n" \ +"we take it only once. One never need be afraid of catching it a second\n" \ +"time. The man who has had it can go into the most dangerous places and\n" \ +"play the most foolhardy tricks with perfect safety. He can picnic in\n" \ +"shady woods, ramble through leafy aisles, and linger on mossy seats to\n" \ +"watch the sunset. He fears a quiet country-house no more than he would\n" \ +"his own club. He can join a family party to go down the Rhine. He can,\n" \ +"to see the last of a friend, venture into the very jaws of the marriage\n" \ +"ceremony itself. He can keep his head through the whirl of a ravishing\n" \ +"waltz, and rest afterward in a dark conservatory, catching nothing more\n" \ +"lasting than a cold. He can brave a moonlight walk adown sweet-scented\n" \ +"lanes or a twilight pull among the somber rushes. He can get over a\n" \ +"stile without danger, scramble through a tangled hedge without being\n" \ +"caught, come down a slippery path without falling. He can look into\n" \ +"sunny eyes and not be dazzled. He listens to the siren voices, yet sails\n" \ +"on with unveered helm. He clasps white hands in his, but no electric\n" \ +"\"Lulu\"-like force holds him bound in their dainty pressure.\n" \ +"\n" \ +"No, we never sicken with love twice. Cupid spends no second arrow on\n" \ +"the same heart. Love's handmaids are our life-long friends. Respect, and\n" \ +"admiration, and affection, our doors may always be left open for, but\n" \ +"their great celestial master, in his royal progress, pays but one visit\n" \ +"and departs. We like, we cherish, we are very, very fond of--but we\n" \ +"never love again. A man's heart is a firework that once in its time\n" \ +"flashes heavenward. Meteor-like, it blazes for a moment and lights\n" \ +"with its glory the whole world beneath. Then the night of our sordid\n" \ +"commonplace life closes in around it, and the burned-out case, falling\n" \ +"back to earth, lies useless and uncared for, slowly smoldering into\n" \ +"ashes. Once, breaking loose from our prison bonds, we dare, as mighty\n" \ +"old Prometheus dared, to scale the Olympian mount and snatch from\n" \ +"Phoebus' chariot the fire of the gods. Happy those who, hastening down\n" \ +"again ere it dies out, can kindle their earthly altars at its flame.\n" \ +"Love is too pure a light to burn long among the noisome gases that we\n" \ +"breathe, but before it is choked out we may use it as a torch to ignite\n" \ +"the cozy fire of affection.\n" \ +"\n" \ +"And, after all, that warming glow is more suited to our cold little back\n" \ +"parlor of a world than is the burning spirit love. Love should be the\n" \ +"vestal fire of some mighty temple--some vast dim fane whose organ music\n" \ +"is the rolling of the spheres. Affection will burn cheerily when the\n" \ +"white flame of love is flickered out. Affection is a fire that can be\n" \ +"fed from day to day and be piled up ever higher as the wintry years draw\n" \ +"nigh. Old men and women can sit by it with their thin hands clasped, the\n" \ +"little children can nestle down in front, the friend and neighbor has\n" \ +"his welcome corner by its side, and even shaggy Fido and sleek Titty can\n" \ +"toast their noses at the bars.\n" \ +"\n" \ +"Let us heap the coals of kindness upon that fire. Throw on your pleasant\n" \ +"words, your gentle pressures of the hand, your thoughtful and unselfish\n" \ +"deeds. Fan it with good-humor, patience, and forbearance. You can let\n" \ +"the wind blow and the rain fall unheeded then, for your hearth will be\n" \ +"warm and bright, and the faces round it will make sunshine in spite of\n" \ +"the clouds without.\n" \ +"\n" \ +"I am afraid, dear Edwin and Angelina, you expect too much from love.\n" \ +"You think there is enough of your little hearts to feed this fierce,\n" \ +"devouring passion for all your long lives. Ah, young folk! don't rely\n" \ +"too much upon that unsteady flicker. It will dwindle and dwindle as the\n" \ +"months roll on, and there is no replenishing the fuel. You will watch it\n" \ +"die out in anger and disappointment. To each it will seem that it is the\n" \ +"other who is growing colder. Edwin sees with bitterness that Angelina no\n" \ +"longer runs to the gate to meet him, all smiles and blushes; and when he\n" \ +"has a cough now she doesn't begin to cry and, putting her arms round his\n" \ +"neck, say that she cannot live without him. The most she will probably\n" \ +"do is to suggest a lozenge, and even that in a tone implying that it is\n" \ +"the noise more than anything else she is anxious to get rid of.\n" \ +"\n" \ +"Poor little Angelina, too, sheds silent tears, for Edwin has given up\n" \ +"carrying her old handkerchief in the inside pocket of his waistcoat.\n" \ +"\n" \ +"Both are astonished at the falling off in the other one, but neither\n" \ +"sees their own change. If they did they would not suffer as they do.\n" \ +"They would look for the cause in the right quarter--in the littleness\n" \ +"of poor human nature--join hands over their common failing, and start\n" \ +"building their house anew on a more earthly and enduring foundation.\n" \ +"But we are so blind to our own shortcomings, so wide awake to those\n" \ +"of others. Everything that happens to us is always the other person's\n" \ +"fault. Angelina would have gone on loving Edwin forever and ever and\n" \ +"ever if only Edwin had not grown so strange and different. Edwin would\n" \ +"have adored Angelina through eternity if Angelina had only remained the\n" \ +"same as when he first adored her.\n" \ +"\n" \ +"It is a cheerless hour for you both when the lamp of love has gone out\n" \ +"and the fire of affection is not yet lit, and you have to grope about\n" \ +"in the cold, raw dawn of life to kindle it. God grant it catches light\n" \ +"before the day is too far spent. Many sit shivering by the dead coals\n" \ +"till night come.\n" \ +"\n" \ +"But, there, of what use is it to preach? Who that feels the rush of\n" \ +"young love through his veins can think it will ever flow feeble and\n" \ +"slow! To the boy of twenty it seems impossible that he will not love as\n" \ +"wildly at sixty as he does then. He cannot call to mind any middle-aged\n" \ +"or elderly gentleman of his acquaintance who is known to exhibit\n" \ +"symptoms of frantic attachment, but that does not interfere in his\n" \ +"belief in himself. His love will never fall, whoever else's may. Nobody\n" \ +"ever loved as he loves, and so, of course, the rest of the world's\n" \ +"experience can be no guide in his case. Alas! alas! ere thirty he has\n" \ +"joined the ranks of the sneerers. It is not his fault. Our passions,\n" \ +"both the good and bad, cease with our blushes. We do not hate, nor\n" \ +"grieve, nor joy, nor despair in our thirties like we did in our teens.\n" \ +"Disappointment does not suggest suicide, and we quaff success without\n" \ +"intoxication.\n" \ +"\n" \ +"We take all things in a minor key as we grow older. There are few\n" \ +"majestic passages in the later acts of life's opera. Ambition takes\n" \ +"a less ambitious aim. Honor becomes more reasonable and conveniently\n" \ +"adapts itself to circumstances. And love--love dies. \"Irreverence for\n" \ +"the dreams of youth\" soon creeps like a killing frost upon our hearts.\n" \ +"The tender shoots and the expanding flowers are nipped and withered, and\n" \ +"of a vine that yearned to stretch its tendrils round the world there is\n" \ +"left but a sapless stump.\n" \ +"\n" \ +"My fair friends will deem all this rank heresy, I know. So far from a\n" \ +"man's not loving after he has passed boyhood, it is not till there is a\n" \ +"good deal of gray in his hair that they think his protestations at all\n" \ +"worthy of attention. Young ladies take their notions of our sex from the\n" \ +"novels written by their own, and compared with the monstrosities\n" \ +"that masquerade for men in the pages of that nightmare literature,\n" \ +"Pythagoras' plucked bird and Frankenstein's demon were fair average\n" \ +"specimens of humanity.\n" \ +"\n" \ +"In these so-called books, the chief lover, or Greek god, as he is\n" \ +"admiringly referred to--by the way, they do not say which \"Greek god\"\n" \ +"it is that the gentleman bears such a striking likeness to; it might be\n" \ +"hump-backed Vulcan, or double-faced Janus, or even driveling Silenus,\n" \ +"the god of abstruse mysteries. He resembles the whole family of them,\n" \ +"however, in being a blackguard, and perhaps this is what is meant. To\n" \ +"even the little manliness his classical prototypes possessed, though,\n" \ +"he can lay no claim whatever, being a listless effeminate noodle, on\n" \ +"the shady side of forty. But oh! the depth and strength of this elderly\n" \ +"party's emotion for some bread-and-butter school-girl! Hide your heads,\n" \ +"ye young Romeos and Leanders! this _blase_ old beau loves with an\n" \ +"hysterical fervor that requires four adjectives to every noun to\n" \ +"properly describe.\n" \ +"\n" \ +"It is well, dear ladies, for us old sinners that you study only books.\n" \ +"Did you read mankind, you would know that the lad's shy stammering tells\n" \ +"a truer tale than our bold eloquence. A boy's love comes from a full\n" \ +"heart; a man's is more often the result of a full stomach. Indeed, a\n" \ +"man's sluggish current may not be called love, compared with the rushing\n" \ +"fountain that wells up when a boy's heart is struck with the heavenly\n" \ +"rod. If you would taste love, drink of the pure stream that youth pours\n" \ +"out at your feet. Do not wait till it has become a muddy river before\n" \ +"you stoop to catch its waves.\n" \ +"\n" \ +"Or is it that you like its bitter flavor--that the clear, limpid water\n" \ +"is insipid to your palate and that the pollution of its after-course\n" \ +"gives it a relish to your lips? Must we believe those who tell us that a\n" \ +"hand foul with the filth of a shameful life is the only one a young girl\n" \ +"cares to be caressed by?\n" \ +"\n" \ +"That is the teaching that is bawled out day by day from between those\n" \ +"yellow covers. Do they ever pause to think, I wonder, those devil's\n" \ +"ladyhelps, what mischief they are doing crawling about God's garden, and\n" \ +"telling childish Eves and silly Adams that sin is sweet and that decency\n" \ +"is ridiculous and vulgar? How many an innocent girl do they not degrade\n" \ +"into an evil-minded woman? To how many a weak lad do they not point out\n" \ +"the dirty by-path as the shortest cut to a maiden's heart? It is not as\n" \ +"if they wrote of life as it really is. Speak truth, and right will take\n" \ +"care of itself. But their pictures are coarse daubs painted from the\n" \ +"sickly fancies of their own diseased imagination.\n" \ +"\n" \ +"We want to think of women not--as their own sex would show them--as\n" \ +"Lorleis luring us to destruction, but as good angels beckoning us\n" \ +"upward. They have more power for good or evil than they dream of. It is\n" \ +"just at the very age when a man's character is forming that he tumbles\n" \ +"into love, and then the lass he loves has the making or marring of him.\n" \ +"Unconsciously he molds himself to what she would have him, good or bad.\n" \ +"I am sorry to have to be ungallant enough to say that I do not think\n" \ +"they always use their influence for the best. Too often the female world\n" \ +"is bounded hard and fast within the limits of the commonplace. Their\n" \ +"ideal hero is a prince of littleness, and to become that many a powerful\n" \ +"mind, enchanted by love, is \"lost to life and use and name and fame.\"\n" \ +"\n" \ +"And yet, women, you could make us so much better if you only would. It\n" \ +"rests with you, more than with all the preachers, to roll this world a\n" \ +"little nearer heaven. Chivalry is not dead: it only sleeps for want\n" \ +"of work to do. It is you who must wake it to noble deeds. You must be\n" \ +"worthy of knightly worship.\n" \ +"\n" \ +"You must be higher than ourselves. It was for Una that the Red Cross\n" \ +"Knight did war. For no painted, mincing court dame could the dragon have\n" \ +"been slain. Oh, ladies fair, be fair in mind and soul as well as face,\n" \ +"so that brave knights may win glory in your service! Oh, woman, throw\n" \ +"off your disguising cloaks of selfishness, effrontery, and affectation!\n" \ +"Stand forth once more a queen in your royal robe of simple purity. A\n" \ +"thousand swords, now rusting in ignoble sloth, shall leap from their\n" \ +"scabbards to do battle for your honor against wrong. A thousand Sir\n" \ +"Rolands shall lay lance in rest, and Fear, Avarice, Pleasure, and\n" \ +"Ambition shall go down in the dust before your colors.\n" \ +"\n" \ +"What noble deeds were we not ripe for in the days when we loved?\n" \ +"What noble lives could we not have lived for her sake? Our love was\n" \ +"a religion we could have died for. It was no mere human creature like\n" \ +"ourselves that we adored. It was a queen that we paid homage to, a\n" \ +"goddess that we worshiped.\n" \ +"\n" \ +"And how madly we did worship! And how sweet it was to worship! Ah, lad,\n" \ +"cherish love's young dream while it lasts! You will know too soon how\n" \ +"truly little Tom Moore sang when he said that there was nothing half so\n" \ +"sweet in life. Even when it brings misery it is a wild, romantic misery,\n" \ +"all unlike the dull, worldly pain of after-sorrows. When you have lost\n" \ +"her--when the light is gone out from your life and the world stretches\n" \ +"before you a long, dark horror, even then a half-enchantment mingles\n" \ +"with your despair.\n" \ +"\n" \ +"And who would not risk its terrors to gain its raptures? Ah, what\n" \ +"raptures they were! The mere recollection thrills you. How delicious\n" \ +"it was to tell her that you loved her, that you lived for her, that\n" \ +"you would die for her! How you did rave, to be sure, what floods of\n" \ +"extravagant nonsense you poured forth, and oh, how cruel it was of\n" \ +"her to pretend not to believe you! In what awe you stood of her! How\n" \ +"miserable you were when you had offended her! And yet, how pleasant to\n" \ +"be bullied by her and to sue for pardon without having the slightest\n" \ +"notion of what your fault was! How dark the world was when she snubbed\n" \ +"you, as she often did, the little rogue, just to see you look wretched;\n" \ +"how sunny when she smiled! How jealous you were of every one about\n" \ +"her! How you hated every man she shook hands with, every woman she\n" \ +"kissed--the maid that did her hair, the boy that cleaned her shoes, the\n" \ +"dog she nursed--though you had to be respectful to the last-named! How\n" \ +"you looked forward to seeing her, how stupid you were when you did see\n" \ +"her, staring at her without saying a word! How impossible it was for\n" \ +"you to go out at any time of the day or night without finding yourself\n" \ +"eventually opposite her windows! You hadn't pluck enough to go in, but\n" \ +"you hung about the corner and gazed at the outside. Oh, if the house had\n" \ +"only caught fire--it was insured, so it wouldn't have mattered--and you\n" \ +"could have rushed in and saved her at the risk of your life, and have\n" \ +"been terribly burned and injured! Anything to serve her. Even in little\n" \ +"things that was so sweet. How you would watch her, spaniel-like, to\n" \ +"anticipate her slightest wish! How proud you were to do her bidding! How\n" \ +"delightful it was to be ordered about by her! To devote your whole life\n" \ +"to her and to never think of yourself seemed such a simple thing. You\n" \ +"would go without a holiday to lay a humble offering at her shrine, and\n" \ +"felt more than repaid if she only deigned to accept it. How precious to\n" \ +"you was everything that she had hallowed by her touch--her little glove,\n" \ +"the ribbon she had worn, the rose that had nestled in her hair and whose\n" \ +"withered leaves still mark the poems you never care to look at now.\n" \ +"\n" \ +"And oh, how beautiful she was, how wondrous beautiful! It was as some\n" \ +"angel entering the room, and all else became plain and earthly. She was\n" \ +"too sacred to be touched. It seemed almost presumption to gaze at her.\n" \ +"You would as soon have thought of kissing her as of singing comic songs\n" \ +"in a cathedral. It was desecration enough to kneel and timidly raise the\n" \ +"gracious little hand to your lips.\n" \ +"\n" \ +"Ah, those foolish days, those foolish days when we were unselfish and\n" \ +"pure-minded; those foolish days when our simple hearts were full\n" \ +"of truth, and faith, and reverence! Ah, those foolish days of noble\n" \ +"longings and of noble strivings! And oh, these wise, clever days when we\n" \ +"know that money is the only prize worth striving for, when we believe in\n" \ +"nothing else but meanness and lies, when we care for no living creature\n" \ +"but ourselves!\n" + +#define DATA_2 \ +"ON BEING IN THE BLUES.\n" \ +"\n" \ +"I can enjoy feeling melancholy, and there is a good deal of satisfaction\n" \ +"about being thoroughly miserable; but nobody likes a fit of the blues.\n" \ +"Nevertheless, everybody has them; notwithstanding which, nobody can tell\n" \ +"why. There is no accounting for them. You are just as likely to have one\n" \ +"on the day after you have come into a large fortune as on the day after\n" \ +"you have left your new silk umbrella in the train. Its effect upon you\n" \ +"is somewhat similar to what would probably be produced by a combined\n" \ +"attack of toothache, indigestion, and cold in the head. You become\n" \ +"stupid, restless, and irritable; rude to strangers and dangerous toward\n" \ +"your friends; clumsy, maudlin, and quarrelsome; a nuisance to yourself\n" \ +"and everybody about you.\n" \ +"\n" \ +"While it is on you can do nothing and think of nothing, though feeling\n" \ +"at the time bound to do something. You can't sit still so put on your\n" \ +"hat and go for a walk; but before you get to the corner of the street\n" \ +"you wish you hadn't come out and you turn back. You open a book and try\n" \ +"to read, but you find Shakespeare trite and commonplace, Dickens is dull\n" \ +"and prosy, Thackeray a bore, and Carlyle too sentimental. You throw the\n" \ +"book aside and call the author names. Then you \"shoo\" the cat out of\n" \ +"the room and kick the door to after her. You think you will write your\n" \ +"letters, but after sticking at \"Dearest Auntie: I find I have five\n" \ +"minutes to spare, and so hasten to write to you,\" for a quarter of an\n" \ +"hour, without being able to think of another sentence, you tumble the\n" \ +"paper into the desk, fling the wet pen down upon the table-cloth,\n" \ +"and start up with the resolution of going to see the Thompsons. While\n" \ +"pulling on your gloves, however, it occurs to you that the Thompsons are\n" \ +"idiots; that they never have supper; and that you will be expected to\n" \ +"jump the baby. You curse the Thompsons and decide not to go.\n" \ +"\n" \ +"By this time you feel completely crushed. You bury your face in your\n" \ +"hands and think you would like to die and go to heaven. You picture to\n" \ +"yourself your own sick-bed, with all your friends and relations standing\n" \ +"round you weeping. You bless them all, especially the young and pretty\n" \ +"ones. They will value you when you are gone, so you say to yourself,\n" \ +"and learn too late what they have lost; and you bitterly contrast their\n" \ +"presumed regard for you then with their decided want of veneration now.\n" \ +"\n" \ +"These reflections make you feel a little more cheerful, but only for a\n" \ +"brief period; for the next moment you think what a fool you must be\n" \ +"to imagine for an instant that anybody would be sorry at anything that\n" \ +"might happen to you. Who would care two straws (whatever precise amount\n" \ +"of care two straws may represent) whether you are blown up, or hung\n" \ +"up, or married, or drowned? Nobody cares for you. You never have\n" \ +"been properly appreciated, never met with your due deserts in any one\n" \ +"particular. You review the whole of your past life, and it is painfully\n" \ +"apparent that you have been ill-used from your cradle.\n" \ +"\n" \ +"Half an hour's indulgence in these considerations works you up into\n" \ +"a state of savage fury against everybody and everything, especially\n" \ +"yourself, whom anatomical reasons alone prevent your kicking. Bed-time\n" \ +"at last comes, to save you from doing something rash, and you spring\n" \ +"upstairs, throw off your clothes, leaving them strewn all over the room,\n" \ +"blow out the candle, and jump into bed as if you had backed yourself\n" \ +"for a heavy wager to do the whole thing against time. There you toss\n" \ +"and tumble about for a couple of hours or so, varying the monotony by\n" \ +"occasionally jerking the clothes off and getting out and putting them\n" \ +"on again. At length you drop into an uneasy and fitful slumber, have bad\n" \ +"dreams, and wake up late the next morning.\n" \ +"\n" \ +"At least, this is all we poor single men can do under the circumstances.\n" \ +"Married men bully their wives, grumble at the dinner, and insist on the\n" \ +"children's going to bed. All of which, creating, as it does, a good deal\n" \ +"of disturbance in the house, must be a great relief to the feelings of a\n" \ +"man in the blues, rows being the only form of amusement in which he can\n" \ +"take any interest.\n" \ +"\n" \ +"The symptoms of the infirmity are much the same in every case, but the\n" \ +"affliction itself is variously termed. The poet says that \"a feeling\n" \ +"of sadness comes o'er him.\" 'Arry refers to the heavings of his wayward\n" \ +"heart by confiding to Jimee that he has \"got the blooming hump.\" Your\n" \ +"sister doesn't know what is the matter with her to-night. She feels out\n" \ +"of sorts altogether and hopes nothing is going to happen. The every-day\n" \ +"young man is \"so awful glad to meet you, old fellow,\" for he does \"feel\n" \ +"so jolly miserable this evening.\" As for myself, I generally say that \"I\n" \ +"have a strange, unsettled feeling to-night\" and \"think I'll go out.\"\n" \ +"\n" \ +"By the way, it never does come except in the evening. In the sun-time,\n" \ +"when the world is bounding forward full of life, we cannot stay to sigh\n" \ +"and sulk. The roar of the working day drowns the voices of the elfin\n" \ +"sprites that are ever singing their low-toned _miserere_ in our ears.\n" \ +"In the day we are angry, disappointed, or indignant, but never \"in the\n" \ +"blues\" and never melancholy. When things go wrong at ten o'clock in the\n" \ +"morning we--or rather you--swear and knock the furniture about; but if\n" \ +"the misfortune comes at ten P.M., we read poetry or sit in the dark and\n" \ +"think what a hollow world this is.\n" \ +"\n" \ +"But, as a rule, it is not trouble that makes us melancholy. The\n" \ +"actuality is too stern a thing for sentiment. We linger to weep over\n" \ +"a picture, but from the original we should quickly turn our eyes away.\n" \ +"There is no pathos in real misery: no luxury in real grief. We do not\n" \ +"toy with sharp swords nor hug a gnawing fox to our breast for choice.\n" \ +"When a man or woman loves to brood over a sorrow and takes care to keep\n" \ +"it green in their memory, you may be sure it is no longer a pain to\n" \ +"them. However they may have suffered from it at first, the recollection\n" \ +"has become by then a pleasure. Many dear old ladies who daily look at\n" \ +"tiny shoes lying in lavender-scented drawers, and weep as they think of\n" \ +"the tiny feet whose toddling march is done, and sweet-faced young ones\n" \ +"who place each night beneath their pillow some lock that once curled on\n" \ +"a boyish head that the salt waves have kissed to death, will call me\n" \ +"a nasty cynical brute and say I'm talking nonsense; but I believe,\n" \ +"nevertheless, that if they will ask themselves truthfully whether they\n" \ +"find it unpleasant to dwell thus on their sorrow, they will be compelled\n" \ +"to answer \"No.\" Tears are as sweet as laughter to some natures. The\n" \ +"proverbial Englishman, we know from old chronicler Froissart, takes his\n" \ +"pleasures sadly, and the Englishwoman goes a step further and takes her\n" \ +"pleasures in sadness itself.\n" \ +"\n" \ +"I am not sneering. I would not for a moment sneer at anything that\n" \ +"helps to keep hearts tender in this hard old world. We men are cold and\n" \ +"common-sensed enough for all; we would not have women the same. No, no,\n" \ +"ladies dear, be always sentimental and soft-hearted, as you are--be the\n" \ +"soothing butter to our coarse dry bread. Besides, sentiment is to women\n" \ +"what fun is to us. They do not care for our humor, surely it would be\n" \ +"unfair to deny them their grief. And who shall say that their mode of\n" \ +"enjoyment is not as sensible as ours? Why assume that a doubled-up\n" \ +"body, a contorted, purple face, and a gaping mouth emitting a series\n" \ +"of ear-splitting shrieks point to a state of more intelligent happiness\n" \ +"than a pensive face reposing upon a little white hand, and a pair of\n" \ +"gentle tear-dimmed eyes looking back through Time's dark avenue upon a\n" \ +"fading past?\n" \ +"\n" \ +"I am glad when I see Regret walked with as a friend--glad because I know\n" \ +"the saltness has been washed from out the tears, and that the sting must\n" \ +"have been plucked from the beautiful face of Sorrow ere we dare press\n" \ +"her pale lips to ours. Time has laid his healing hand upon the wound\n" \ +"when we can look back upon the pain we once fainted under and no\n" \ +"bitterness or despair rises in our hearts. The burden is no longer\n" \ +"heavy when we have for our past troubles only the same sweet mingling of\n" \ +"pleasure and pity that we feel when old knight-hearted Colonel Newcome\n" \ +"answers \"_adsum_\" to the great roll-call, or when Tom and Maggie\n" \ +"Tulliver, clasping hands through the mists that have divided them, go\n" \ +"down, locked in each other's arms, beneath the swollen waters of the\n" \ +"Floss.\n" \ +"\n" \ +"Talking of poor Tom and Maggie Tulliver brings to my mind a saying of\n" \ +"George Eliot's in connection with this subject of melancholy. She\n" \ +"speaks somewhere of the \"sadness of a summer's evening.\" How wonderfully\n" \ +"true--like everything that came from that wonderful pen--the observation\n" \ +"is! Who has not felt the sorrowful enchantment of those lingering\n" \ +"sunsets? The world belongs to Melancholy then, a thoughtful deep-eyed\n" \ +"maiden who loves not the glare of day. It is not till \"light thickens\n" \ +"and the crow wings to the rocky wood\" that she steals forth from her\n" \ +"groves. Her palace is in twilight land. It is there she meets us. At her\n" \ +"shadowy gate she takes our hand in hers and walks beside us through\n" \ +"her mystic realm. We see no form, but seem to hear the rustling of her\n" \ +"wings.\n" \ +"\n" \ +"Even in the toiling hum-drum city her spirit comes to us. There is a\n" \ +"somber presence in each long, dull street; and the dark river creeps\n" \ +"ghostlike under the black arches, as if bearing some hidden secret\n" \ +"beneath its muddy waves.\n" \ +"\n" \ +"In the silent country, when the trees and hedges loom dim and blurred\n" \ +"against the rising night, and the bat's wing flutters in our face, and\n" \ +"the land-rail's cry sounds drearily across the fields, the spell sinks\n" \ +"deeper still into our hearts. We seem in that hour to be standing by\n" \ +"some unseen death-bed, and in the swaying of the elms we hear the sigh\n" \ +"of the dying day.\n" \ +"\n" \ +"A solemn sadness reigns. A great peace is around us. In its light\n" \ +"our cares of the working day grow small and trivial, and bread and\n" \ +"cheese--ay, and even kisses--do not seem the only things worth striving\n" \ +"for. Thoughts we cannot speak but only listen to flood in upon us, and\n" \ +"standing in the stillness under earth's darkening dome, we feel that we\n" \ +"are greater than our petty lives. Hung round with those dusky curtains,\n" \ +"the world is no longer a mere dingy workshop, but a stately temple\n" \ +"wherein man may worship, and where at times in the dimness his groping\n" \ +"hands touch God's.\n" + +#define DATA_3 \ +"ON BEING HARD UP.\n" \ +"\n" \ +"It is a most remarkable thing. I sat down with the full intention of\n" \ +"writing something clever and original; but for the life of me I can't\n" \ +"think of anything clever and original--at least, not at this moment. The\n" \ +"only thing I can think about now is being hard up. I suppose having my\n" \ +"hands in my pockets has made me think about this. I always do sit with\n" \ +"my hands in my pockets except when I am in the company of my sisters,\n" \ +"my cousins, or my aunts; and they kick up such a shindy--I should say\n" \ +"expostulate so eloquently upon the subject--that I have to give in and\n" \ +"take them out--my hands I mean. The chorus to their objections is that\n" \ +"it is not gentlemanly. I am hanged if I can see why. I could understand\n" \ +"its not being considered gentlemanly to put your hands in other people's\n" \ +"pockets (especially by the other people), but how, O ye sticklers for\n" \ +"what looks this and what looks that, can putting his hands in his own\n" \ +"pockets make a man less gentle? Perhaps you are right, though. Now I\n" \ +"come to think of it, I have heard some people grumble most savagely when\n" \ +"doing it. But they were mostly old gentlemen. We young fellows, as a\n" \ +"rule, are never quite at ease unless we have our hands in our pockets.\n" \ +"We are awkward and shifty. We are like what a music-hall Lion Comique\n" \ +"would be without his opera-hat, if such a thing can be imagined. But let\n" \ +"us put our hands in our trousers pockets, and let there be some small\n" \ +"change in the right-hand one and a bunch of keys in the left, and we\n" \ +"will face a female post-office clerk.\n" \ +"\n" \ +"It is a little difficult to know what to do with your hands, even in\n" \ +"your pockets, when there is nothing else there. Years ago, when my whole\n" \ +"capital would occasionally come down to \"what in town the people call\n" \ +"a bob,\" I would recklessly spend a penny of it, merely for the sake of\n" \ +"having the change, all in coppers, to jingle. You don't feel nearly so\n" \ +"hard up with eleven pence in your pocket as you do with a shilling. Had\n" \ +"I been \"La-di-da,\" that impecunious youth about whom we superior folk\n" \ +"are so sarcastic, I would have changed my penny for two ha'pennies.\n" \ +"\n" \ +"I can speak with authority on the subject of being hard up. I have been\n" \ +"a provincial actor. If further evidence be required, which I do not\n" \ +"think likely, I can add that I have been a \"gentleman connected with the\n" \ +"press.\" I have lived on 15 shilling a week. I have lived a week on 10,\n" \ +"owing the other 5; and I have lived for a fortnight on a great-coat.\n" \ +"\n" \ +"It is wonderful what an insight into domestic economy being really hard\n" \ +"up gives one. If you want to find out the value of money, live on\n" \ +"15 shillings a week and see how much you can put by for clothes and\n" \ +"recreation. You will find out that it is worth while to wait for the\n" \ +"farthing change, that it is worth while to walk a mile to save a\n" \ +"penny, that a glass of beer is a luxury to be indulged in only at rare\n" \ +"intervals, and that a collar can be worn for four days.\n" \ +"\n" \ +"Try it just before you get married. It will be excellent practice. Let\n" \ +"your son and heir try it before sending him to college. He won't grumble\n" \ +"at a hundred a year pocket-money then. There are some people to whom it\n" \ +"would do a world of good. There is that delicate blossom who can't drink\n" \ +"any claret under ninety-four, and who would as soon think of dining\n" \ +"off cat's meat as off plain roast mutton. You do come across these\n" \ +"poor wretches now and then, though, to the credit of humanity, they are\n" \ +"principally confined to that fearful and wonderful society known only\n" \ +"to lady novelists. I never hear of one of these creatures discussing a\n" \ +"_menu_ card but I feel a mad desire to drag him off to the bar of\n" \ +"some common east-end public-house and cram a sixpenny dinner down his\n" \ +"throat--beefsteak pudding, fourpence; potatoes, a penny; half a pint of\n" \ +"porter, a penny. The recollection of it (and the mingled fragrance of\n" \ +"beer, tobacco, and roast pork generally leaves a vivid impression) might\n" \ +"induce him to turn up his nose a little less frequently in the future\n" \ +"at everything that is put before him. Then there is that generous party,\n" \ +"the cadger's delight, who is so free with his small change, but who\n" \ +"never thinks of paying his debts. It might teach even him a little\n" \ +"common sense. \"I always give the waiter a shilling. One can't give the\n" \ +"fellow less, you know,\" explained a young government clerk with whom I\n" \ +"was lunching the other day in Regent Street. I agreed with him as to the\n" \ +"utter impossibility of making it elevenpence ha'penny; but at the same\n" \ +"time I resolved to one day decoy him to an eating-house I remembered\n" \ +"near Covent Garden, where the waiter, for the better discharge of his\n" \ +"duties, goes about in his shirt-sleeves--and very dirty sleeves they\n" \ +"are, too, when it gets near the end of the month. I know that waiter.\n" \ +"If my friend gives him anything beyond a penny, the man will insist on\n" \ +"shaking hands with him then and there as a mark of his esteem; of that I\n" \ +"feel sure.\n" \ +"\n" \ +"There have been a good many funny things said and written about\n" \ +"hardupishness, but the reality is not funny, for all that. It is not\n" \ +"funny to have to haggle over pennies. It isn't funny to be thought\n" \ +"mean and stingy. It isn't funny to be shabby and to be ashamed of your\n" \ +"address. No, there is nothing at all funny in poverty--to the poor. It\n" \ +"is hell upon earth to a sensitive man; and many a brave gentleman who\n" \ +"would have faced the labors of Hercules has had his heart broken by its\n" \ +"petty miseries.\n" \ +"\n" \ +"It is not the actual discomforts themselves that are hard to bear.\n" \ +"Who would mind roughing it a bit if that were all it meant? What cared\n" \ +"Robinson Crusoe for a patch on his trousers? Did he wear trousers? I\n" \ +"forget; or did he go about as he does in the pantomimes? What did it\n" \ +"matter to him if his toes did stick out of his boots? and what if\n" \ +"his umbrella was a cotton one, so long as it kept the rain off? His\n" \ +"shabbiness did not trouble him; there was none of his friends round\n" \ +"about to sneer him.\n" \ +"\n" \ +"Being poor is a mere trifle. It is being known to be poor that is the\n" \ +"sting. It is not cold that makes a man without a great-coat hurry along\n" \ +"so quickly. It is not all shame at telling lies--which he knows will\n" \ +"not be believed--that makes him turn so red when he informs you that\n" \ +"he considers great-coats unhealthy and never carries an umbrella on\n" \ +"principle. It is easy enough to say that poverty is no crime. No; if\n" \ +"it were men wouldn't be ashamed of it. It's a blunder, though, and is\n" \ +"punished as such. A poor man is despised the whole world over; despised\n" \ +"as much by a Christian as by a lord, as much by a demagogue as by a\n" \ +"footman, and not all the copy-book maxims ever set for ink stained youth\n" \ +"will make him respected. Appearances are everything, so far as human\n" \ +"opinion goes, and the man who will walk down Piccadilly arm in arm with\n" \ +"the most notorious scamp in London, provided he is a well-dressed one,\n" \ +"will slink up a back street to say a couple of words to a seedy-looking\n" \ +"gentleman. And the seedy-looking gentleman knows this--no one\n" \ +"better--and will go a mile round to avoid meeting an acquaintance. Those\n" \ +"that knew him in his prosperity need never trouble themselves to look\n" \ +"the other way. He is a thousand times more anxious that they should not\n" \ +"see him than they can be; and as to their assistance, there is nothing\n" \ +"he dreads more than the offer of it. All he wants is to be forgotten;\n" \ +"and in this respect he is generally fortunate enough to get what he\n" \ +"wants.\n" \ +"\n" \ +"One becomes used to being hard up, as one becomes used to everything\n" \ +"else, by the help of that wonderful old homeopathic doctor, Time. You\n" \ +"can tell at a glance the difference between the old hand and the novice;\n" \ +"between the case-hardened man who has been used to shift and struggle\n" \ +"for years and the poor devil of a beginner striving to hide his misery,\n" \ +"and in a constant agony of fear lest he should be found out. Nothing\n" \ +"shows this difference more clearly than the way in which each will pawn\n" \ +"his watch. As the poet says somewhere: \"True ease in pawning comes from\n" \ +"art, not chance.\" The one goes into his \"uncle's\" with as much composure\n" \ +"as he would into his tailor's--very likely with more. The assistant is\n" \ +"even civil and attends to him at once, to the great indignation of the\n" \ +"lady in the next box, who, however, sarcastically observes that she\n" \ +"don't mind being kept waiting \"if it is a regular customer.\" Why, from\n" \ +"the pleasant and businesslike manner in which the transaction is carried\n" \ +"out, it might be a large purchase in the three per cents. Yet what a\n" \ +"piece of work a man makes of his first \"pop.\" A boy popping his first\n" \ +"question is confidence itself compared with him. He hangs about outside\n" \ +"the shop until he has succeeded in attracting the attention of all the\n" \ +"loafers in the neighborhood and has aroused strong suspicions in the\n" \ +"mind of the policeman on the beat. At last, after a careful examination\n" \ +"of the contents of the windows, made for the purpose of impressing the\n" \ +"bystanders with the notion that he is going in to purchase a diamond\n" \ +"bracelet or some such trifle, he enters, trying to do so with a careless\n" \ +"swagger, and giving himself really the air of a member of the swell mob.\n" \ +"When inside he speaks in so low a voice as to be perfectly inaudible,\n" \ +"and has to say it all over again. When, in the course of his rambling\n" \ +"conversation about a \"friend\" of his, the word \"lend\" is reached, he is\n" \ +"promptly told to go up the court on the right and take the first door\n" \ +"round the corner. He comes out of the shop with a face that you could\n" \ +"easily light a cigarette at, and firmly under the impression that the\n" \ +"whole population of the district is watching him. When he does get\n" \ +"to the right place he has forgotten his name and address and is in a\n" \ +"general condition of hopeless imbecility. Asked in a severe tone how he\n" \ +"came by \"this,\" he stammers and contradicts himself, and it is only a\n" \ +"miracle if he does not confess to having stolen it that very day. He is\n" \ +"thereupon informed that they don't want anything to do with his sort,\n" \ +"and that he had better get out of this as quickly as possible, which he\n" \ +"does, recollecting nothing more until he finds himself three miles off,\n" \ +"without the slightest knowledge how he got there.\n" \ +"\n" \ +"By the way, how awkward it is, though, having to depend on public-houses\n" \ +"and churches for the time. The former are generally too fast and the\n" \ +"latter too slow. Besides which, your efforts to get a glimpse of\n" \ +"the public house clock from the outside are attended with great\n" \ +"difficulties. If you gently push the swing-door ajar and peer in you\n" \ +"draw upon yourself the contemptuous looks of the barmaid, who at once\n" \ +"puts you down in the same category with area sneaks and cadgers. You\n" \ +"also create a certain amount of agitation among the married portion of\n" \ +"the customers. You don't see the clock because it is behind the door;\n" \ +"and in trying to withdraw quietly you jam your head. The only other\n" \ +"method is to jump up and down outside the window. After this latter\n" \ +"proceeding, however, if you do not bring out a banjo and commence to\n" \ +"sing, the youthful inhabitants of the neighborhood, who have gathered\n" \ +"round in expectation, become disappointed.\n" \ +"\n" \ +"I should like to know, too, by what mysterious law of nature it is that\n" \ +"before you have left your watch \"to be repaired\" half an hour, some one\n" \ +"is sure to stop you in the street and conspicuously ask you the time.\n" \ +"Nobody even feels the slightest curiosity on the subject when you've got\n" \ +"it on.\n" \ +"\n" \ +"Dear old ladies and gentlemen who know nothing about being hard up--and\n" \ +"may they never, bless their gray old heads--look upon the pawn-shop\n" \ +"as the last stage of degradation; but those who know it better (and my\n" \ +"readers have no doubt, noticed this themselves) are often surprised,\n" \ +"like the little boy who dreamed he went to heaven, at meeting so many\n" \ +"people there that they never expected to see. For my part, I think it a\n" \ +"much more independent course than borrowing from friends, and I always\n" \ +"try to impress this upon those of my acquaintance who incline toward\n" \ +"\"wanting a couple of pounds till the day after to-morrow.\" But they\n" \ +"won't all see it. One of them once remarked that he objected to the\n" \ +"principle of the thing. I fancy if he had said it was the interest that\n" \ +"he objected to he would have been nearer the truth: twenty-five per\n" \ +"cent. certainly does come heavy.\n" \ +"\n" \ +"There are degrees in being hard up. We are all hard up, more or\n" \ +"less--most of us more. Some are hard up for a thousand pounds; some for\n" \ +"a shilling. Just at this moment I am hard up myself for a fiver. I only\n" \ +"want it for a day or two. I should be certain of paying it back within a\n" \ +"week at the outside, and if any lady or gentleman among my readers would\n" \ +"kindly lend it me, I should be very much obliged indeed. They could send\n" \ +"it to me under cover to Messrs. Field & Tuer, only, in such case, please\n" \ +"let the envelope be carefully sealed. I would give you my I.O.U. as\n" \ +"security.\n" + +static const char *s_data[N_STREAMS] = { + DATA_0, + DATA_1, + DATA_2, + DATA_3, +}; + +static size_t s_data_sz[N_STREAMS] = { + sizeof(DATA_0) - 1, + sizeof(DATA_1) - 1, + sizeof(DATA_2) - 1, + sizeof(DATA_3) - 1, +}; diff --git a/external/lsquic/tests/test_packno_len.c b/external/lsquic/tests/test_packno_len.c new file mode 100644 index 0000000..9292ba3 --- /dev/null +++ b/external/lsquic/tests/test_packno_len.c @@ -0,0 +1,342 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_parse.h" + + +//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC +#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) + + +struct packno_bits_test { + int pbt_lineno; + /* Inputs: */ + lsquic_packno_t pbt_packno, + pbt_least_unacked; + uint64_t pbt_n_in_flight; + /* Output: */ + enum packno_bits pbt_packno_bits; +}; + + +static const struct packno_bits_test pb_tests[] = { + + { .pbt_lineno = __LINE__, + .pbt_packno = 1, + .pbt_least_unacked = 0, + .pbt_n_in_flight = 0, + .pbt_packno_bits = GQUIC_PACKNO_LEN_1, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = 101, + .pbt_least_unacked = 100, + .pbt_n_in_flight = 0, + .pbt_packno_bits = GQUIC_PACKNO_LEN_1, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = 10001, + .pbt_least_unacked = 10000, + .pbt_n_in_flight = 1 << 6, + .pbt_packno_bits = GQUIC_PACKNO_LEN_1, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = 10001, + .pbt_least_unacked = 10000, + .pbt_n_in_flight = (1 << 6) + 1, + .pbt_packno_bits = GQUIC_PACKNO_LEN_2, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = (1 << 16) + 1, + .pbt_least_unacked = 1 << 16, + .pbt_n_in_flight = 1 << 14, + .pbt_packno_bits = GQUIC_PACKNO_LEN_2, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = (1 << 16) + 1, + .pbt_least_unacked = 1 << 16, + .pbt_n_in_flight = (1 << 14) + 1, + .pbt_packno_bits = GQUIC_PACKNO_LEN_4, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = (1ULL << 33) + 1, + .pbt_least_unacked = 1ULL << 33, + .pbt_n_in_flight = 1ULL << 30, + .pbt_packno_bits = GQUIC_PACKNO_LEN_4, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = (1ULL << 33) + 1, + .pbt_least_unacked = 1ULL << 33, + .pbt_n_in_flight = (1ULL << 30) + 1, + .pbt_packno_bits = GQUIC_PACKNO_LEN_6, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = 100, + .pbt_least_unacked = 1, + .pbt_n_in_flight = 3, + .pbt_packno_bits = GQUIC_PACKNO_LEN_2, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = 100, + .pbt_least_unacked = 1, + .pbt_n_in_flight = 99, + .pbt_packno_bits = GQUIC_PACKNO_LEN_2, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = 1 + (1 << 6), + .pbt_least_unacked = 1, + .pbt_n_in_flight = 0, + .pbt_packno_bits = GQUIC_PACKNO_LEN_1, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = 1 + (1 << 6) + 1, + .pbt_least_unacked = 1, + .pbt_n_in_flight = 0, + .pbt_packno_bits = GQUIC_PACKNO_LEN_2, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = (1 << 20) + (1 << 14), + .pbt_least_unacked = 1 << 20, + .pbt_n_in_flight = 0, + .pbt_packno_bits = GQUIC_PACKNO_LEN_2, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = (1 << 20) + (1 << 14) + 1, + .pbt_least_unacked = 1 << 20, + .pbt_n_in_flight = 0, + .pbt_packno_bits = GQUIC_PACKNO_LEN_4, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = (1 << 20) + (1ULL << 30), + .pbt_least_unacked = 1 << 20, + .pbt_n_in_flight = 0, + .pbt_packno_bits = GQUIC_PACKNO_LEN_4, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = (1 << 20) + (1ULL << 30) + 1, + .pbt_least_unacked = 1 << 20, + .pbt_n_in_flight = 0, + .pbt_packno_bits = GQUIC_PACKNO_LEN_6, + }, + + /* Tests from Chrome: */ + { .pbt_lineno = __LINE__, + .pbt_packno = 65, + .pbt_least_unacked = 2, + .pbt_n_in_flight = 7, + .pbt_packno_bits = GQUIC_PACKNO_LEN_1, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = 64 * 256 - 1, + .pbt_least_unacked = 2, + .pbt_n_in_flight = 7, + .pbt_packno_bits = GQUIC_PACKNO_LEN_2, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = 64 * 256 * 256 - 1, + .pbt_least_unacked = 2, + .pbt_n_in_flight = 7, + .pbt_packno_bits = GQUIC_PACKNO_LEN_4, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = 64ULL * 256 * 256 * 256 * 256 - 1, + .pbt_least_unacked = 2, + .pbt_n_in_flight = 7, + .pbt_packno_bits = GQUIC_PACKNO_LEN_6, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = 2, + .pbt_least_unacked = 1, + .pbt_n_in_flight = 7, + .pbt_packno_bits = GQUIC_PACKNO_LEN_1, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = 2, + .pbt_least_unacked = 1, + .pbt_n_in_flight = 1896, + .pbt_packno_bits = GQUIC_PACKNO_LEN_2, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = 2, + .pbt_least_unacked = 1, + .pbt_n_in_flight = 48545, + .pbt_packno_bits = GQUIC_PACKNO_LEN_4, + }, + + { .pbt_lineno = __LINE__, + .pbt_packno = 2, + .pbt_least_unacked = 1, + .pbt_n_in_flight = 3181457256ULL, + .pbt_packno_bits = GQUIC_PACKNO_LEN_6, + }, + +}; + + +static void +run_pbt (int i) +{ + const struct packno_bits_test *const pbt = &pb_tests[i]; + enum packno_bits packno_bits = pf->pf_calc_packno_bits(pbt->pbt_packno, + pbt->pbt_least_unacked, pbt->pbt_n_in_flight); + assert(packno_bits == pbt->pbt_packno_bits); + unsigned packet_len = pf->pf_packno_bits2len(packno_bits); + /* Now see if we can restore it back: */ + lsquic_packno_t cur_packno = pbt->pbt_packno & + ((1ULL << (packet_len << 3)) - 1); + lsquic_packno_t orig_packno = lsquic_restore_packno(cur_packno, packet_len, + pbt->pbt_least_unacked); + assert(orig_packno == pbt->pbt_packno); +} + + +struct lsquic_restore_packno_test { + int rpt_lineno; + /* Input */ + enum packno_bits rpt_packno_bits; + lsquic_packno_t rpt_cur_packno; + lsquic_packno_t rpt_max_packno; + /* Output */ + lsquic_packno_t rpt_orig_packno; +}; + +static const struct lsquic_restore_packno_test rp_tests[] = +{ + + { .rpt_lineno = __LINE__, + .rpt_max_packno = 0, + .rpt_cur_packno = 1, + .rpt_packno_bits = GQUIC_PACKNO_LEN_1, + .rpt_orig_packno = 1, + }, + +}; + + +static void +run_rpt (int i) +{ + const struct lsquic_restore_packno_test *const rpt = &rp_tests[i]; + unsigned packet_len = pf->pf_packno_bits2len(rpt->rpt_packno_bits); + lsquic_packno_t orig_packno = lsquic_restore_packno(rpt->rpt_cur_packno, + packet_len, rpt->rpt_max_packno); + assert(orig_packno == rpt->rpt_orig_packno); +} + + +static void +test_restore (enum packno_bits bits) +{ + unsigned len, n; + enum { OP_PLUS, OP_MINUS, N_OPS } op; + uint64_t epoch, epoch_delta; + lsquic_packno_t orig_packno, cur_packno, restored_packno; + +#ifdef WIN32 + orig_packno = 0; +#endif + len = pf->pf_packno_bits2len(bits); + epoch_delta = 1ULL << (len << 3); + epoch = epoch_delta * 11 /* Just some number */; + + /* Test current epoch: */ + for (op = 0; op < N_OPS; ++op) + for (n = 0; n < 5; ++n) + { + /* Test at the ends of the epoch */ + if (op == OP_MINUS) + orig_packno = epoch - epoch_delta / 2 + n; + else if (op == OP_PLUS) + orig_packno = epoch + epoch_delta / 2 - n - 1; + else + assert(0); + cur_packno = orig_packno & (epoch_delta - 1); + restored_packno = lsquic_restore_packno(cur_packno, len, epoch); + assert(orig_packno == restored_packno); + /* Test in the middle of the epoch */ + if (op == OP_MINUS) + orig_packno = epoch - n; + else + orig_packno = epoch + n; + cur_packno = orig_packno & (epoch_delta - 1); + restored_packno = lsquic_restore_packno(cur_packno, len, epoch); + assert(orig_packno == restored_packno); + } + + /* Test previous epoch (max is to the left) */ + for (n = 0; n < 5; ++n) + { + /* Test at the end of the epoch */ + orig_packno = epoch + epoch_delta / 2 - n - 1; + cur_packno = orig_packno & (epoch_delta - 1); + restored_packno = lsquic_restore_packno(cur_packno, len, epoch - epoch_delta * 3 / 4); + assert(orig_packno == restored_packno + epoch_delta); + /* Test in the middle of the epoch */ + orig_packno = epoch + 2 - n; + cur_packno = orig_packno & (epoch_delta - 1); + restored_packno = lsquic_restore_packno(cur_packno, len, epoch - epoch_delta * 3 / 4); + assert(orig_packno == restored_packno + epoch_delta); + } + + /* Test previous epoch (max is to the right) */ + for (n = 0; n < 5; ++n) + { + /* Test at the end of the epoch */ + orig_packno = epoch - epoch_delta / 2 + n; + cur_packno = orig_packno & (epoch_delta - 1); + restored_packno = lsquic_restore_packno(cur_packno, len, epoch + epoch_delta * 3 / 4); + assert(orig_packno == restored_packno - epoch_delta); + /* Test in the middle of the epoch */ + orig_packno = epoch + 2 - n; + cur_packno = orig_packno & (epoch_delta - 1); + restored_packno = lsquic_restore_packno(cur_packno, len, epoch + epoch_delta * 3 / 4); + assert(orig_packno == restored_packno - epoch_delta); + } + +} + + +int +main (void) +{ + unsigned i; + for (i = 0; i < sizeof(pb_tests) / sizeof(pb_tests[0]); ++i) + run_pbt(i); + for (i = 0; i < sizeof(rp_tests) / sizeof(rp_tests[0]); ++i) + run_rpt(i); + test_restore(GQUIC_PACKNO_LEN_1); + test_restore(GQUIC_PACKNO_LEN_2); + test_restore(GQUIC_PACKNO_LEN_4); + test_restore(GQUIC_PACKNO_LEN_6); + return 0; +} diff --git a/external/lsquic/tests/test_parse_packet_in.c b/external/lsquic/tests/test_parse_packet_in.c new file mode 100644 index 0000000..66ab198 --- /dev/null +++ b/external/lsquic/tests/test_parse_packet_in.c @@ -0,0 +1,513 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_mm.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_parse.h" +#include "lsquic_parse_common.h" +#include "lsquic_packet_in.h" +#include "lsquic_engine_public.h" +#include "lsquic_version.h" + + +struct parse_packet_in_test +{ + int ppit_lineno; + /* Input */ + unsigned char ppit_buf[0x100]; + unsigned ppit_bufsz; + int ppit_is_server; + enum lsquic_version ppit_version; + /* Output */ + int ppit_retval; + int ppit_pi_flags; + uint64_t ppit_conn_id; + lsquic_packno_t ppit_packno; + unsigned short ppit_header_sz; + unsigned short ppit_data_sz; + unsigned char ppit_quic_ver; + unsigned char ppit_nonce; +}; + + +static const struct parse_packet_in_test tests[] = { + /* + * BIG-ENDIAN TESTS: + */ + { .ppit_lineno = __LINE__, + .ppit_buf = { + /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION| + PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, + /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, + /* Version: */ 'Q', '0', '4', '3', + /* Packet #: */ 0x73, + /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', + }, + .ppit_bufsz = 1 + 8 + 4 + 1 + 7, + .ppit_is_server = 1, + .ppit_version = LSQVER_043, + .ppit_retval = 0, + .ppit_pi_flags = PI_CONN_ID, + .ppit_conn_id = 0x5500000000000000, + .ppit_packno = 0x73, + .ppit_header_sz = 1 + 8 + 4 + 1, + .ppit_data_sz = 1 + 8 + 4 + 1 + 7, + .ppit_quic_ver = 1 + 8, + .ppit_nonce = 0, + }, + + { .ppit_lineno = __LINE__, + .ppit_buf = { + /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION| + 0x10 /* 2-byte packet number */| + PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, + /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, + /* Version: */ 'Q', '0', '4', '3', + /* Packet #: */ 0x73, 0x64, + /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', + }, + .ppit_bufsz = 1 + 8 + 4 + 2 + 7, + .ppit_is_server = 1, + .ppit_version = LSQVER_043, + .ppit_retval = 0, + .ppit_pi_flags = PI_CONN_ID, + .ppit_conn_id = 0x5500000000000000, + .ppit_packno = 0x7364, + .ppit_header_sz = 1 + 8 + 4 + 2, + .ppit_data_sz = 1 + 8 + 4 + 2 + 7, + .ppit_quic_ver = 1 + 8, + .ppit_nonce = 0, + }, + + { .ppit_lineno = __LINE__, + .ppit_buf = { + /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION| + 0x20 /* 4-byte packet number */| + PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, + /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, + /* Version: */ 'Q', '0', '4', '3', + /* Packet #: */ 0x73, 0x64, 0x55, 0x46, + /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', + }, + .ppit_bufsz = 1 + 8 + 4 + 4 + 7, + .ppit_is_server = 1, + .ppit_version = LSQVER_043, + .ppit_retval = 0, + .ppit_pi_flags = PI_CONN_ID, + .ppit_conn_id = 0x5500000000000000, + .ppit_packno = 0x73645546, + .ppit_header_sz = 1 + 8 + 4 + 4, + .ppit_data_sz = 1 + 8 + 4 + 4 + 7, + .ppit_quic_ver = 1 + 8, + .ppit_nonce = 0, + }, + + { .ppit_lineno = __LINE__, + .ppit_buf = { + /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION| + 0x30 /* 6-byte packet number */| + PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, + /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, + /* Version: */ 'Q', '0', '4', '3', + /* Packet #: */ 0x73, 0x64, 0x55, 0x46, 0x37, 0x28, + /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', + }, + .ppit_bufsz = 1 + 8 + 4 + 6 + 7, + .ppit_is_server = 1, + .ppit_version = LSQVER_043, + .ppit_retval = 0, + .ppit_pi_flags = PI_CONN_ID, + .ppit_conn_id = 0x5500000000000000, + .ppit_packno = 0x736455463728, + .ppit_header_sz = 1 + 8 + 4 + 6, + .ppit_data_sz = 1 + 8 + 4 + 6 + 7, + .ppit_quic_ver = 1 + 8, + .ppit_nonce = 0, + }, + + { .ppit_lineno = __LINE__, /* Same as above minus connection ID */ + .ppit_buf = { + /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION, + /* Version: */ 'Q', '0', '4', '3', + /* Packet #: */ 0x73, + /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', + }, + .ppit_bufsz = 1 + 0 + 4 + 1 + 7, + .ppit_is_server = 1, + .ppit_version = LSQVER_043, + .ppit_retval = 0, + .ppit_pi_flags = 0, + .ppit_conn_id = 0, + .ppit_packno = 0x73, + .ppit_header_sz = 1 + 0 + 4 + 1, + .ppit_data_sz = 1 + 0 + 4 + 1 + 7, + .ppit_quic_ver = 1 + 0, + .ppit_nonce = 0, + }, + + { .ppit_lineno = __LINE__, /* Same as above minus version */ + .ppit_buf = { + /* Flags: */ 0, + /* Packet #: */ 0x73, + /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', + }, + .ppit_bufsz = 1 + 0 + 0 + 1 + 7, + .ppit_is_server = 1, + .ppit_version = LSQVER_043, + .ppit_retval = 0, + .ppit_pi_flags = 0, + .ppit_conn_id = 0, + .ppit_packno = 0x73, + .ppit_header_sz = 1 + 0 + 0 + 1, + .ppit_data_sz = 1 + 0 + 0 + 1 + 7, + .ppit_quic_ver = 0, + .ppit_nonce = 0, + }, + + { .ppit_lineno = __LINE__, + .ppit_buf = { + /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION| + PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, + /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, + /* Version: */ 'Q', '0', '4', '3', + /* Packet #: */ 0x73, + /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', + }, + .ppit_bufsz = 1 + 8 + 4, + .ppit_is_server = 1, + .ppit_version = LSQVER_043, + .ppit_retval = -1, + }, + + { .ppit_lineno = __LINE__, + .ppit_buf = { + /* Flags: */ PACKET_PUBLIC_FLAGS_NONCE| + 0x10 /* 2-byte packet number */| + PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, + /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, + /* Nonce: */ 000, 001, 002, 003, 004, 005, 006, 007, + 010, 011, 012, 013, 014, 015, 016, 017, + 020, 021, 022, 023, 024, 025, 026, 027, + 030, 031, 032, 033, 034, 035, 036, 037, + /* Packet #: */ 0x73, 0x64, + /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', + }, + .ppit_bufsz = 1 + 8 + 32+ 2 + 7, + .ppit_is_server = 0, + .ppit_version = LSQVER_043, + .ppit_retval = 0, + .ppit_pi_flags = PI_CONN_ID, + .ppit_conn_id = 0x5500000000000000, + .ppit_packno = 0x7364, + .ppit_header_sz = 1 + 8 + 32+ 2, + .ppit_data_sz = 1 + 8 + 32+ 2 + 7, + .ppit_quic_ver = 0, + .ppit_nonce = 1 + 8, + }, + + { .ppit_lineno = __LINE__, + .ppit_buf = { + /* Flags: */ PACKET_PUBLIC_FLAGS_NONCE| + PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, + /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, + /* Nonce: */ 000, 001, 002, 003, 004, 005, 006, 007, + 010, 011, 012, 013, 014, 015, 016, 017, + 020, 021, 022, 023, 024, 025, 026, 027, + 030, 031, 032, 033, 034, 035, 036, 037, + /* Packet #: */ 0x73, + /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', + }, + .ppit_bufsz = 1 + 8 + 32+ 1 + 7, + .ppit_is_server = 0, + .ppit_version = LSQVER_043, + .ppit_retval = 0, + .ppit_pi_flags = PI_CONN_ID, + .ppit_conn_id = 0x5500000000000000, + .ppit_packno = 0x73, + .ppit_header_sz = 1 + 8 + 32+ 1, + .ppit_data_sz = 1 + 8 + 32+ 1 + 7, + .ppit_quic_ver = 0, + .ppit_nonce = 1 + 8, + }, + + { .ppit_lineno = __LINE__, + .ppit_buf = { + /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION| + 0x20 /* 4-byte packet number */| + PACKET_PUBLIC_FLAGS_NONCE| /* Nonce flag is ignored by server */ + PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, + /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, + /* Version: */ 'Q', '0', '4', '3', + /* Packet #: */ 0x73, 0x64, 0x55, 0x46, + /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', + }, + .ppit_bufsz = 1 + 8 + 4 + 4 + 7, + .ppit_is_server = 1, + .ppit_version = LSQVER_043, + .ppit_retval = 0, + .ppit_pi_flags = PI_CONN_ID, + .ppit_conn_id = 0x5500000000000000, + .ppit_packno = 0x73645546, + .ppit_header_sz = 1 + 8 + 4 + 4, + .ppit_data_sz = 1 + 8 + 4 + 4 + 7, + .ppit_quic_ver = 1 + 8, + .ppit_nonce = 0, + }, + + { .ppit_lineno = __LINE__, + .ppit_buf = { + /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION| + PACKET_PUBLIC_FLAGS_NONCE| /* Nonce flag is ignored by server */ + PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, + /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, + /* Version: */ 'Q', '0', '4', '3', + /* Packet #: */ 0x73, + /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', + }, + .ppit_bufsz = 1 + 8 + 4 + 1 + 7, + .ppit_is_server = 1, + .ppit_version = LSQVER_043, + .ppit_retval = 0, + .ppit_pi_flags = PI_CONN_ID, + .ppit_conn_id = 0x5500000000000000, + .ppit_packno = 0x73, + .ppit_header_sz = 1 + 8 + 4 + 1, + .ppit_data_sz = 1 + 8 + 4 + 1 + 7, + .ppit_quic_ver = 1 + 8, + .ppit_nonce = 0, + }, + + { .ppit_lineno = __LINE__, + .ppit_buf = { + /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION| + 0x30 /* 6-byte packet number */| + PACKET_PUBLIC_FLAGS_NONCE| /* Nonce flag is ignored by server */ + PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, + /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, + /* Version: */ 'Q', '0', '4', '3', + /* Packet #: */ 0x73, 0x64, 0x55, 0x46, 0x37, 0x28, + /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', + }, + .ppit_bufsz = 1 + 8 + 4 + 6 + 7, + .ppit_is_server = 1, + .ppit_version = LSQVER_043, + .ppit_retval = 0, + .ppit_pi_flags = PI_CONN_ID, + .ppit_conn_id = 0x5500000000000000, + .ppit_packno = 0x736455463728, + .ppit_header_sz = 1 + 8 + 4 + 6, + .ppit_data_sz = 1 + 8 + 4 + 6 + 7, + .ppit_quic_ver = 1 + 8, + .ppit_nonce = 0, + }, + + { .ppit_lineno = __LINE__, + .ppit_buf = { + /* Flags: */ PACKET_PUBLIC_FLAGS_VERSION| + PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, + /* CID: */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, + /* Versions: */ 'Q', '0', '4', '0', + 'Q', '0', '4', '3', + }, + .ppit_bufsz = 1 + 8 + 8, + .ppit_is_server = 0, + .ppit_version = LSQVER_043, + .ppit_retval = 0, + .ppit_pi_flags = PI_CONN_ID, + .ppit_conn_id = 0x5500000000000000, + .ppit_packno = 0, + .ppit_header_sz = 1 + 8 + 8, + .ppit_data_sz = 1 + 8 + 8, + .ppit_quic_ver = 1 + 8, + .ppit_nonce = 0, + }, + + { .ppit_lineno = __LINE__, + .ppit_buf = { + /* Flags: */ 0x40, + /* CID: */ 0x01, 0x02, 0x03, 0x04, 0x50, 0x60, 0x70, 0x80, + /* Packet number: */0x9B, + /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', + }, + .ppit_version = LSQVER_046, + .ppit_retval = 0, + .ppit_is_server = 1, + .ppit_pi_flags = PI_CONN_ID, + .ppit_conn_id = 0x8070605004030201, + .ppit_packno = 0x9B, + .ppit_header_sz = 1 + 8 + 1, + .ppit_data_sz = 1 + 8 + 1 + 7, + .ppit_bufsz = 1 + 8 + 1 + 7, + .ppit_quic_ver = 0, + .ppit_nonce = 0, + }, + + { .ppit_lineno = __LINE__, + .ppit_buf = { + /* Flags: */ 0x43, + /* CID: */ 0x01, 0x02, 0x03, 0x04, 0x50, 0x60, 0x70, 0x80, + /* Packet number: */0x9B, 0x03, 0x02, 0x01, + /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', + }, + .ppit_version = LSQVER_046, + .ppit_retval = 0, + .ppit_packno = 0x9B030201, + .ppit_is_server = 1, + .ppit_header_sz = 1 + 8 + 4, + .ppit_bufsz = 1 + 8 + 4 + 7, + .ppit_data_sz = 1 + 8 + 4 + 7, + .ppit_pi_flags = PI_CONN_ID, + .ppit_conn_id = 0x8070605004030201, + .ppit_quic_ver = 0, + .ppit_nonce = 0, + }, + + /* TODO: check invalid type in finish() -- convert the latter to return + * status instead of being void function. + */ +#if 0 + { .ppit_lineno = __LINE__, + .ppit_buf = { + /* Flags: */ 0x30 + | 0x3 /* <--- Invalid type */, + /* CID: */ 0x01, 0x02, 0x03, 0x04, 0x50, 0x60, 0x70, 0x80, + /* Packet number: */0x9B, + /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', + }, + .ppit_bufsz = 1 + 8 + 1 + 7, + .ppit_is_server = 1, + .ppit_version = LSQVER_044, + .ppit_retval = -1, + }, +#endif + + { .ppit_lineno = __LINE__, + .ppit_buf = { + /* Type: */ 0x83 /* Initial */, + /* Version: */ 'Q', '0', '4', '6', + /* DCIL/SCIL: */ 0x5 /* DCIL */ << 4 | 0x0 /* SCIL */, + /* CID: */ 0x01, 0x02, 0x03, 0x04, 0x50, 0x60, 0x70, 0x80, + /* Packet number: */0x21, 0x22, 0x23, 0x34, + /* Payload: */ 'P', 'A', 'Y', 'L', 'O', 'A', 'D', + }, + .ppit_bufsz = 1 + 4 + 1 + 8 + 4 + 7, + .ppit_is_server = 1, + .ppit_version = LSQVER_046, + .ppit_retval = 0, + .ppit_pi_flags = PI_CONN_ID, + .ppit_conn_id = 0x8070605004030201, + .ppit_packno = 0x21222334, + .ppit_header_sz = 1 + 4 + 1 + 8 + 4, + .ppit_data_sz = 1 + 4 + 1 + 8 + 4 + 7, + .ppit_quic_ver = 1, + .ppit_nonce = 0, + }, + +}; + + +static void +run_ppi_test (struct lsquic_mm *mm, const struct parse_packet_in_test *ppit) +{ + int s; + lsquic_packet_in_t *packet_in; + struct packin_parse_state ppstate; + + packet_in = lsquic_mm_get_packet_in(mm); + packet_in->pi_data = lsquic_mm_get_packet_in_buf(mm, 1370); + packet_in->pi_flags |= PI_OWN_DATA; + memcpy(packet_in->pi_data, ppit->ppit_buf, ppit->ppit_bufsz); + + /* Server should be able to differentiate different header formats + * because it expect the connection ID to be there, while the client + * needs help. + */ + if (ppit->ppit_is_server && + /* In addition, some tests verify parsing of GQUIC packets in + * server mode where there is no connection ID. This is for + * completeness and does not represent a real-life scenario, + * as the server will always require the client to send the + * connection ID. + */ + !(!(ppit->ppit_pi_flags & PI_CONN_ID) + && ppit->ppit_version < LSQVER_046)) + s = lsquic_parse_packet_in_server_begin(packet_in, ppit->ppit_bufsz, + ppit->ppit_is_server, 8, &ppstate); + else + if (ppit->ppit_version < LSQVER_046) + s = lsquic_gquic_parse_packet_in_begin(packet_in, ppit->ppit_bufsz, + ppit->ppit_is_server, -1 /* GQUIC does not use it */, &ppstate); + else if (ppit->ppit_version == LSQVER_046) + s = lsquic_Q046_parse_packet_in_begin(packet_in, ppit->ppit_bufsz, + ppit->ppit_is_server, 8, &ppstate); + else + s = lsquic_ietf_v1_parse_packet_in_begin(packet_in, ppit->ppit_bufsz, + ppit->ppit_is_server, 8, &ppstate); + + assert(s == ppit->ppit_retval); + if (0 == s) + { + const struct parse_funcs *pf; + if (ppit->ppit_quic_ver && ppit->ppit_is_server /* Server packets + with version are version negotiation packets. */) + { + uint32_t tag; + enum lsquic_version ver; + assert(packet_in->pi_quic_ver); + memcpy(&tag, packet_in->pi_data + packet_in->pi_quic_ver, 4); + ver = lsquic_tag2ver(tag); + assert((enum lsquic_version) -1 != ver); + assert(ver == ppit->ppit_version); + } + pf = select_pf_by_ver(ppit->ppit_version); + pf->pf_parse_packet_in_finish(packet_in, &ppstate); + } + + if (0 == s) + { + if (ppit->ppit_conn_id) + { + lsquic_cid_t cid; + memset(&cid, 0, sizeof(cid)); + cid.len = sizeof(ppit->ppit_conn_id);; + memcpy(cid.idbuf, &ppit->ppit_conn_id, sizeof(ppit->ppit_conn_id)); + assert(LSQUIC_CIDS_EQ(&packet_in->pi_conn_id, &cid)); + } + + assert((packet_in->pi_flags & PI_CONN_ID) == (ppit->ppit_pi_flags & PI_CONN_ID)); + assert(packet_in->pi_packno == ppit->ppit_packno); + assert(packet_in->pi_header_sz == ppit->ppit_header_sz); + assert(packet_in->pi_data_sz == ppit->ppit_data_sz); + assert(packet_in->pi_quic_ver == ppit->ppit_quic_ver); + assert(packet_in->pi_nonce == ppit->ppit_nonce); + if (ppit->ppit_nonce) + assert(lsquic_packet_in_nonce(packet_in)); + else + assert(!lsquic_packet_in_nonce(packet_in)); + } + + lsquic_mm_put_packet_in(mm, packet_in); +} + + +int +main (void) +{ + struct lsquic_mm mm; + unsigned i; + + lsquic_mm_init(&mm); + + for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) + run_ppi_test(&mm, &tests[i]); + + lsquic_mm_cleanup(&mm); + return 0; +} diff --git a/external/lsquic/tests/test_purga.c b/external/lsquic/tests/test_purga.c new file mode 100644 index 0000000..80faab6 --- /dev/null +++ b/external/lsquic/tests/test_purga.c @@ -0,0 +1,182 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#ifndef WIN32 +#include +#else +#include "getopt.h" +#endif + +#include + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_logger.h" +#include "lsquic_purga.h" + +#define MIN_CID_LEN 4 + +static int s_eight; + +static void +bloom_test (unsigned count, unsigned miss_searches, unsigned hit_searches) +{ +#ifndef NDEBUG + struct purga_bloom_stats *stats; +#endif + struct lsquic_purga *purga; + struct purga_el *puel; + lsquic_cid_t *cids, cid; + unsigned i, j; + + cids = malloc(count * sizeof(cids[0])); + assert(cids); + + for (i = 0; i < count; ++i) + { + cids[i].len = s_eight ? 8 : MIN_CID_LEN + rand() % (MAX_CID_LEN - MIN_CID_LEN); + RAND_bytes(cids[i].idbuf, cids[i].len); + } + + purga = lsquic_purga_new(~0, NULL, NULL); + + /* Add CIDs */ + for (i = 0; i < count; ++i) + lsquic_purga_add(purga, &cids[i], NULL, 0, 0); + + /* Check that they are all there */ + for (i = 0; i < count; ++i) + { + puel = lsquic_purga_contains(purga, &cids[i]); + assert(puel); + } + + /* Run hit searches */ + for (i = 0; i < hit_searches; ++i) + { + j = rand() % count; + puel = lsquic_purga_contains(purga, &cids[j]); + assert(puel); + } + + /* Generate random CIDs and check that they are not found: */ + for (i = 0; i < miss_searches; ++i) + { + cid.len = s_eight ? 8 : MIN_CID_LEN + rand() % (MAX_CID_LEN - MIN_CID_LEN); + RAND_bytes(cid.idbuf, cid.len); + puel = lsquic_purga_contains(purga, &cid); + if (puel) + { + for (j = 0; j < count; ++j) + if (LSQUIC_CIDS_EQ(&cids[j], &cid)) + break; + assert(j < count); + } + } + +#ifndef NDEBUG + stats = lsquic_purga_get_bloom_stats(purga); + LSQ_NOTICE("searches: %lu, false hits: %lu, false hit ratio: %lf", + stats->searches, stats->false_hits, + (double) stats->false_hits / (double) stats->searches); +#endif + + lsquic_purga_destroy(purga); + free(cids); +} + + +int +main (int argc, char **argv) +{ + int opt; + unsigned i, per_page, bloom_ins = 0, bloom_miss_sea = 0, bloom_hit_sea = 0; + lsquic_cid_t cid; + struct lsquic_purga *purga; + struct purga_el *puel; + + while (-1 != (opt = getopt(argc, argv, "b:h:l:s:v8"))) + { + switch (opt) + { + case '8': + s_eight = 1; + break; + case 'b': + bloom_ins = atoi(optarg); + break; + case 's': + bloom_miss_sea = atoi(optarg); + break; + case 'h': + bloom_hit_sea = atoi(optarg); + break; + case 'l': + lsquic_log_to_fstream(stderr, LLTS_NONE); + lsquic_logger_lopt(optarg); + break; + case 'v': + lsquic_log_to_fstream(stderr, LLTS_NONE); + lsquic_logger_lopt("purga=debug"); + break; + default: + exit(EXIT_FAILURE); + } + } + + if (bloom_ins) + { + LSQ_NOTICE("bloom test: will insert %u and search for %u missing " + "and %u extant CIDs", bloom_ins, bloom_miss_sea, bloom_hit_sea); + bloom_test(bloom_ins, bloom_miss_sea, bloom_hit_sea); + exit(EXIT_SUCCESS); + } + + per_page = lsquic_purga_cids_per_page(); + purga = lsquic_purga_new(10, NULL, NULL); + assert(purga); + + cid.len = 3; + for (i = 0; i < per_page; ++i) + { + cid.idbuf[0] = i >> 16; + cid.idbuf[1] = i >> 8; + cid.idbuf[2] = i; + puel = lsquic_purga_add(purga, &cid, NULL, PUTY_CONN_DELETED, 20); + assert(puel); + puel->puel_time = ~i; + } + + for (i = 0; i < per_page; ++i) + { + cid.idbuf[0] = i >> 16; + cid.idbuf[1] = i >> 8; + cid.idbuf[2] = i; + puel = lsquic_purga_contains(purga, &cid); + assert(puel && PUTY_CONN_DELETED == puel->puel_type); + assert(~i == puel->puel_time); + } + + ++cid.idbuf[1]; + lsquic_purga_add(purga, &cid, NULL, PUTY_CONN_DELETED, 31); + + for (i = 0; i < per_page; ++i) + { + cid.idbuf[0] = i >> 16; + cid.idbuf[1] = i >> 8; + cid.idbuf[2] = i; + puel = lsquic_purga_contains(purga, &cid); + assert(!puel); + } + + ++cid.idbuf[1]; + puel = lsquic_purga_contains(purga, &cid); + assert(puel && PUTY_CONN_DELETED == puel->puel_type); + + lsquic_purga_destroy(purga); + + bloom_test(20000, 200000, 2000); + + exit(EXIT_SUCCESS); +} diff --git a/external/lsquic/tests/test_qlog.c b/external/lsquic/tests/test_qlog.c new file mode 100644 index 0000000..fc8f40f --- /dev/null +++ b/external/lsquic/tests/test_qlog.c @@ -0,0 +1,58 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" + +#include "lsquic_qlog.h" + +#define LSQUIC_LOGGER_MODULE LSQLM_NOMODULE +#include "lsquic_logger.h" + + +int +main (void) +{ + lsquic_global_init(LSQUIC_GLOBAL_CLIENT | LSQUIC_GLOBAL_CLIENT); + lsquic_log_to_fstream(stderr, LLTS_HHMMSSMS); + lsquic_set_log_level("debug"); + + lsquic_qlog_create_connection(0, NULL, NULL); + struct in_addr local_addr = {.s_addr = htonl(0x0a000001),}; + struct sockaddr_in local = + { + .sin_family = AF_INET, + .sin_port = htons(12345), + .sin_addr = local_addr, + }; + struct in_addr peer_addr = {.s_addr = htonl(0x0a000002),}; + struct sockaddr_in peer = + { + .sin_family = AF_INET, + .sin_port = htons(443), + .sin_addr = peer_addr, + }; + lsquic_cid_t cid; memset(&cid, 0, sizeof(cid)); + lsquic_qlog_create_connection(&cid, (const struct sockaddr *)&local, + (const struct sockaddr *)&peer); + + lsquic_qlog_packet_rx(&cid, NULL, NULL, 0); + lsquic_qlog_hsk_completed(&cid); + lsquic_qlog_sess_resume(&cid); + lsquic_qlog_check_certs(&cid, NULL, 0); + + lsquic_qlog_version_negotiation(&cid, NULL, NULL); + lsquic_qlog_version_negotiation(&cid, "proposed", NULL); + lsquic_qlog_version_negotiation(&cid, "proposed", "Q035"); + lsquic_qlog_version_negotiation(&cid, "proposed", "Q046"); + lsquic_qlog_version_negotiation(&cid, "agreed", "Q044"); + lsquic_qlog_version_negotiation(&cid, "agreed", "Q098"); + lsquic_qlog_version_negotiation(&cid, "something else", "Q098"); + return 0; +} diff --git a/external/lsquic/tests/test_quic_be_floats.c b/external/lsquic/tests/test_quic_be_floats.c new file mode 100644 index 0000000..209b205 --- /dev/null +++ b/external/lsquic/tests/test_quic_be_floats.c @@ -0,0 +1,170 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_parse.h" + + +//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC +#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) + +struct float_test { + uint64_t long_time; + uint8_t float_time[2]; +}; + +static const struct float_test to_float_tests[] = { + /* Small numbers represent themselves. */ + { 0, { 0x00, 0x00, }, }, + { 1, { 0x00, 0x01, }, }, + { 2, { 0x00, 0x02, }, }, + { 3, { 0x00, 0x03, }, }, + { 4, { 0x00, 0x04, }, }, + { 5, { 0x00, 0x05, }, }, + { 6, { 0x00, 0x06, }, }, + { 7, { 0x00, 0x07, }, }, + { 15, { 0x00, 0x0F, }, }, + { 31, { 0x00, 0x1F, }, }, + { 42, { 0x00, 0x2A, }, }, + { 123, { 0x00, 0x7B, }, }, + { 1234, { 0x04, 0xD2, }, }, + /* Check transition through 2^11. */ + { 2046, { 0x07, 0xFE, }, }, + { 2047, { 0x07, 0xFF, }, }, + { 2048, { 0x08, 0x00, }, }, + { 2049, { 0x08, 0x01, }, }, + /* Running out of mantissa at 2^12. */ + { 4094, { 0x0F, 0xFE, }, }, + { 4095, { 0x0F, 0xFF, }, }, + { 4096, { 0x10, 0x00, }, }, + { 4097, { 0x10, 0x00, }, }, + { 4098, { 0x10, 0x01, }, }, + { 4099, { 0x10, 0x01, }, }, + { 4100, { 0x10, 0x02, }, }, + { 4101, { 0x10, 0x02, }, }, + /* Check transition through 2^13. */ + { 8190, { 0x17, 0xFF, }, }, + { 8191, { 0x17, 0xFF, }, }, + { 8192, { 0x18, 0x00, }, }, + { 8193, { 0x18, 0x00, }, }, + { 8194, { 0x18, 0x00, }, }, + { 8195, { 0x18, 0x00, }, }, + { 8196, { 0x18, 0x01, }, }, + { 8197, { 0x18, 0x01, }, }, + /* Half-way through the exponents. */ + { 0x7FF8000, { 0x87, 0xFF, }, }, + { 0x7FFFFFF, { 0x87, 0xFF, }, }, + { 0x8000000, { 0x88, 0x00, }, }, + { 0xFFF0000, { 0x8F, 0xFF, }, }, + { 0xFFFFFFF, { 0x8F, 0xFF, }, }, + { 0x10000000, { 0x90, 0x00, }, }, + /* Transition into the largest exponent. */ + { 0x1FFFFFFFFFE, { 0xF7, 0xFF, }, }, + { 0x1FFFFFFFFFF, { 0xF7, 0xFF, }, }, + { 0x20000000000, { 0xF8, 0x00, }, }, + { 0x20000000001, { 0xF8, 0x00, }, }, + { 0x2003FFFFFFE, { 0xF8, 0x00, }, }, + { 0x2003FFFFFFF, { 0xF8, 0x00, }, }, + { 0x20040000000, { 0xF8, 0x01, }, }, + { 0x20040000001, { 0xF8, 0x01, }, }, + /* Transition into the max value and clamping. */ + { 0x3FF80000000, { 0xFF, 0xFE, }, }, + { 0x3FFBFFFFFFF, { 0xFF, 0xFE, }, }, + { 0x3FFC0000000, { 0xFF, 0xFF, }, }, + { 0x3FFC0000001, { 0xFF, 0xFF, }, }, + { 0x3FFFFFFFFFF, { 0xFF, 0xFF, }, }, + { 0x40000000000, { 0xFF, 0xFF, }, }, + { 0xFFFFFFFFFFFFFFFF, { 0xFF, 0xFF, }, }, +}; + + +static void +run_to_float_tests (void) +{ + const struct float_test *test; + const struct float_test *const test_end = + &to_float_tests[ sizeof(to_float_tests) / sizeof(to_float_tests[0]) ]; + for (test = to_float_tests; test < test_end; ++test) + { + char out[2]; + pf->pf_write_float_time16(test->long_time, out); + assert(("Convertion to QUIC float format is successful", + 0 == memcmp(out, test->float_time, 2))); + } +} + + +static const struct float_test from_float_tests[] = { + /* Small numbers represent themselves. */ + { 0, { 0x00, 0x00, }, }, + { 1, { 0x00, 0x01, }, }, + { 2, { 0x00, 0x02, }, }, + { 3, { 0x00, 0x03, }, }, + { 4, { 0x00, 0x04, }, }, + { 5, { 0x00, 0x05, }, }, + { 6, { 0x00, 0x06, }, }, + { 7, { 0x00, 0x07, }, }, + { 15, { 0x00, 0x0F, }, }, + { 31, { 0x00, 0x1F, }, }, + { 42, { 0x00, 0x2A, }, }, + { 123, { 0x00, 0x7B, }, }, + { 1234, { 0x04, 0xD2, }, }, + /* Check transition through 2^11. */ + { 2046, { 0x07, 0xFE, }, }, + { 2047, { 0x07, 0xFF, }, }, + { 2048, { 0x08, 0x00, }, }, + { 2049, { 0x08, 0x01, }, }, + /* Running out of mantissa at 2^12. */ + { 4094, { 0x0F, 0xFE, }, }, + { 4095, { 0x0F, 0xFF, }, }, + { 4096, { 0x10, 0x00, }, }, + { 4098, { 0x10, 0x01, }, }, + { 4100, { 0x10, 0x02, }, }, + /* Check transition through 2^13. */ + { 8190, { 0x17, 0xFF, }, }, + { 8192, { 0x18, 0x00, }, }, + { 8196, { 0x18, 0x01, }, }, + /* Half-way through the exponents. */ + { 0x7FF8000, { 0x87, 0xFF, }, }, + { 0x8000000, { 0x88, 0x00, }, }, + { 0xFFF0000, { 0x8F, 0xFF, }, }, + { 0x10000000, { 0x90, 0x00, }, }, + /* Transition into the largest exponent. */ + { 0x1FFE0000000, { 0xF7, 0xFF, }, }, + { 0x20000000000, { 0xF8, 0x00, }, }, + { 0x20040000000, { 0xF8, 0x01, }, }, + /* Transition into the max value. */ + { 0x3FF80000000, { 0xFF, 0xFE, }, }, + { 0x3FFC0000000, { 0xFF, 0xFF, }, }, +}; + + +static void +run_from_float_tests (void) +{ + const struct float_test *test; + const struct float_test *const test_end = + &from_float_tests[ sizeof(from_float_tests) / sizeof(from_float_tests[0]) ]; + for (test = from_float_tests; test < test_end; ++test) + { + uint64_t result = pf->pf_read_float_time16(test->float_time); + assert(("Convertion to QUIC float format is successful", + result == test->long_time)); + } +} + + +int +main (void) +{ + run_to_float_tests(); + run_from_float_tests(); + return 0; +} diff --git a/external/lsquic/tests/test_quic_le_floats.c b/external/lsquic/tests/test_quic_le_floats.c new file mode 100644 index 0000000..78b4be9 --- /dev/null +++ b/external/lsquic/tests/test_quic_le_floats.c @@ -0,0 +1,170 @@ +/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_alarmset.h" +#include "lsquic_parse.h" + + +static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); + +struct float_test { + uint64_t long_time; + uint8_t float_time[2]; +}; + +static const struct float_test to_float_tests[] = { + /* Small numbers represent themselves. */ + { 0, { 0x00, 0x00, }, }, + { 1, { 0x01, 0x00, }, }, + { 2, { 0x02, 0x00, }, }, + { 3, { 0x03, 0x00, }, }, + { 4, { 0x04, 0x00, }, }, + { 5, { 0x05, 0x00, }, }, + { 6, { 0x06, 0x00, }, }, + { 7, { 0x07, 0x00, }, }, + { 15, { 0x0F, 0x00, }, }, + { 31, { 0x1F, 0x00, }, }, + { 42, { 0x2A, 0x00, }, }, + { 123, { 0x7B, 0x00, }, }, + { 1234, { 0xD2, 0x04, }, }, + /* Check transition through 2^11. */ + { 2046, { 0xFE, 0x07, }, }, + { 2047, { 0xFF, 0x07, }, }, + { 2048, { 0x00, 0x08, }, }, + { 2049, { 0x01, 0x08, }, }, + /* Running out of mantissa at 2^12. */ + { 4094, { 0xFE, 0x0F, }, }, + { 4095, { 0xFF, 0x0F, }, }, + { 4096, { 0x00, 0x10, }, }, + { 4097, { 0x00, 0x10, }, }, + { 4098, { 0x01, 0x10, }, }, + { 4099, { 0x01, 0x10, }, }, + { 4100, { 0x02, 0x10, }, }, + { 4101, { 0x02, 0x10, }, }, + /* Check transition through 2^13. */ + { 8190, { 0xFF, 0x17, }, }, + { 8191, { 0xFF, 0x17, }, }, + { 8192, { 0x00, 0x18, }, }, + { 8193, { 0x00, 0x18, }, }, + { 8194, { 0x00, 0x18, }, }, + { 8195, { 0x00, 0x18, }, }, + { 8196, { 0x01, 0x18, }, }, + { 8197, { 0x01, 0x18, }, }, + /* Half-way through the exponents. */ + { 0x7FF8000, { 0xFF, 0x87, }, }, + { 0x7FFFFFF, { 0xFF, 0x87, }, }, + { 0x8000000, { 0x00, 0x88, }, }, + { 0xFFF0000, { 0xFF, 0x8F, }, }, + { 0xFFFFFFF, { 0xFF, 0x8F, }, }, + { 0x10000000, { 0x00, 0x90, }, }, + /* Transition into the largest exponent. */ + { 0x1FFFFFFFFFE, { 0xFF, 0xF7, }, }, + { 0x1FFFFFFFFFF, { 0xFF, 0xF7, }, }, + { 0x20000000000, { 0x00, 0xF8, }, }, + { 0x20000000001, { 0x00, 0xF8, }, }, + { 0x2003FFFFFFE, { 0x00, 0xF8, }, }, + { 0x2003FFFFFFF, { 0x00, 0xF8, }, }, + { 0x20040000000, { 0x01, 0xF8, }, }, + { 0x20040000001, { 0x01, 0xF8, }, }, + /* Transition into the max value and clamping. */ + { 0x3FF80000000, { 0xFE, 0xFF, }, }, + { 0x3FFBFFFFFFF, { 0xFE, 0xFF, }, }, + { 0x3FFC0000000, { 0xFF, 0xFF, }, }, + { 0x3FFC0000001, { 0xFF, 0xFF, }, }, + { 0x3FFFFFFFFFF, { 0xFF, 0xFF, }, }, + { 0x40000000000, { 0xFF, 0xFF, }, }, + { 0xFFFFFFFFFFFFFFFF, { 0xFF, 0xFF, }, }, +}; + + +static void +run_to_float_tests (void) +{ + const struct float_test *test; + const struct float_test *const test_end = + &to_float_tests[ sizeof(to_float_tests) / sizeof(to_float_tests[0]) ]; + for (test = to_float_tests; test < test_end; ++test) + { + char out[2]; + pf->pf_write_float_time16(test->long_time, out); + assert(("Convertion to QUIC float format is successful", + 0 == memcmp(out, test->float_time, 2))); + } +} + + +static const struct float_test from_float_tests[] = { + /* Small numbers represent themselves. */ + { 0, { 0x00, 0x00, }, }, + { 1, { 0x01, 0x00, }, }, + { 2, { 0x02, 0x00, }, }, + { 3, { 0x03, 0x00, }, }, + { 4, { 0x04, 0x00, }, }, + { 5, { 0x05, 0x00, }, }, + { 6, { 0x06, 0x00, }, }, + { 7, { 0x07, 0x00, }, }, + { 15, { 0x0F, 0x00, }, }, + { 31, { 0x1F, 0x00, }, }, + { 42, { 0x2A, 0x00, }, }, + { 123, { 0x7B, 0x00, }, }, + { 1234, { 0xD2, 0x04, }, }, + /* Check transition through 2^11. */ + { 2046, { 0xFE, 0x07, }, }, + { 2047, { 0xFF, 0x07, }, }, + { 2048, { 0x00, 0x08, }, }, + { 2049, { 0x01, 0x08, }, }, + /* Running out of mantissa at 2^12. */ + { 4094, { 0xFE, 0x0F, }, }, + { 4095, { 0xFF, 0x0F, }, }, + { 4096, { 0x00, 0x10, }, }, + { 4098, { 0x01, 0x10, }, }, + { 4100, { 0x02, 0x10, }, }, + /* Check transition through 2^13. */ + { 8190, { 0xFF, 0x17, }, }, + { 8192, { 0x00, 0x18, }, }, + { 8196, { 0x01, 0x18, }, }, + /* Half-way through the exponents. */ + { 0x7FF8000, { 0xFF, 0x87, }, }, + { 0x8000000, { 0x00, 0x88, }, }, + { 0xFFF0000, { 0xFF, 0x8F, }, }, + { 0x10000000, { 0x00, 0x90, }, }, + /* Transition into the largest exponent. */ + { 0x1FFE0000000, { 0xFF, 0xF7, }, }, + { 0x20000000000, { 0x00, 0xF8, }, }, + { 0x20040000000, { 0x01, 0xF8, }, }, + /* Transition into the max value. */ + { 0x3FF80000000, { 0xFE, 0xFF, }, }, + { 0x3FFC0000000, { 0xFF, 0xFF, }, }, +}; + + +static void +run_from_float_tests (void) +{ + const struct float_test *test; + const struct float_test *const test_end = + &from_float_tests[ sizeof(from_float_tests) / sizeof(from_float_tests[0]) ]; + for (test = from_float_tests; test < test_end; ++test) + { + uint64_t result = pf->pf_read_float_time16(test->float_time); + assert(("Convertion to QUIC float format is successful", + result == test->long_time)); + } +} + + +int +main (void) +{ + run_to_float_tests(); + run_from_float_tests(); + return 0; +} diff --git a/external/lsquic/tests/test_rechist.c b/external/lsquic/tests/test_rechist.c new file mode 100644 index 0000000..a713f85 --- /dev/null +++ b/external/lsquic/tests/test_rechist.c @@ -0,0 +1,449 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include + +#ifdef WIN32 +#include "vc_compat.h" +#endif + +#include "lsquic_int_types.h" +#include "lsquic_rechist.h" +#include "lsquic_util.h" + + +static void +test4 (void) +{ + lsquic_rechist_t rechist; + const struct lsquic_packno_range *range; + lsquic_packno_t packno; + + lsquic_rechist_init(&rechist, 0, 0); + + for (packno = 11917; packno <= 11941; ++packno) + lsquic_rechist_received(&rechist, packno, 0); + for (packno = 11946; packno <= 11994; ++packno) + lsquic_rechist_received(&rechist, packno, 0); + + range = lsquic_rechist_first(&rechist); + assert(range); + assert(range->high == 11994); + assert(range->low == 11946); + range = lsquic_rechist_next(&rechist); + assert(range); + assert(range->high == 11941); + assert(range->low == 11917); + range = lsquic_rechist_next(&rechist); + assert(!range); + + lsquic_rechist_received(&rechist, 11995, 0); + lsquic_rechist_received(&rechist, 11996, 0); + + range = lsquic_rechist_first(&rechist); + assert(range); + assert(range->high == 11996); + assert(range->low == 11946); + range = lsquic_rechist_next(&rechist); + assert(range); + assert(range->high == 11941); + assert(range->low == 11917); + range = lsquic_rechist_next(&rechist); + assert(!range); + + lsquic_rechist_received(&rechist, 11912, 0); + lsquic_rechist_stop_wait(&rechist, 11860); + + range = lsquic_rechist_first(&rechist); + assert(range); + assert(range->high == 11996); + assert(range->low == 11946); + range = lsquic_rechist_next(&rechist); + assert(range); + assert(range->high == 11941); + assert(range->low == 11917); + range = lsquic_rechist_next(&rechist); + assert(range); + assert(range->high == 11912); + assert(range->low == 11912); + range = lsquic_rechist_next(&rechist); + assert(!range); + + for (packno = 12169; packno <= 12193; ++packno) + lsquic_rechist_received(&rechist, packno, 0); + + range = lsquic_rechist_first(&rechist); + assert(range); + assert(range->high == 12193); + assert(range->low == 12169); + range = lsquic_rechist_next(&rechist); + assert(range); + assert(range->high == 11996); + assert(range->low == 11946); + range = lsquic_rechist_next(&rechist); + assert(range); + assert(range->high == 11941); + assert(range->low == 11917); + range = lsquic_rechist_next(&rechist); + assert(range); + assert(range->high == 11912); + assert(range->low == 11912); + range = lsquic_rechist_next(&rechist); + assert(!range); + + lsquic_rechist_cleanup(&rechist); +} + + +static void +rechist2str (lsquic_rechist_t *rechist, char *buf, size_t bufsz) +{ + const struct lsquic_packno_range *range; + size_t off; + int n; + + for (off = 0, range = lsquic_rechist_first(rechist); + range && off < bufsz; + off += n, range = lsquic_rechist_next(rechist)) + { + n = snprintf(buf + off, bufsz - off, "[%"PRIu64"-%"PRIu64"]", + range->high, range->low); + if (n < 0 || (size_t) n >= bufsz - off) + break; + } +} + + +static void +test_range_copy (struct lsquic_rechist *orig, int ietf) +{ + char orig_str[0x1000], new_str[0x1000]; + struct lsquic_rechist new; + size_t len; + + rechist2str(orig, orig_str, sizeof(orig_str)); + + lsquic_rechist_init(&new, ietf, 0); + lsquic_rechist_copy_ranges(&new, orig, + (const struct lsquic_packno_range * (*) (void *)) lsquic_rechist_first, + (const struct lsquic_packno_range * (*) (void *)) lsquic_rechist_next); + rechist2str(&new, new_str, sizeof(new_str)); + assert(0 == strcmp(orig_str, new_str)); + lsquic_rechist_cleanup(&new); + + /* This tests that lower-numbered ranges do not overwrite higher-numbered + * ranges. + */ + lsquic_rechist_init(&new, ietf, 10); + lsquic_rechist_copy_ranges(&new, orig, + (const struct lsquic_packno_range * (*) (void *)) lsquic_rechist_first, + (const struct lsquic_packno_range * (*) (void *)) lsquic_rechist_next); + rechist2str(&new, new_str, sizeof(new_str)); + len = strlen(new_str); + assert(0 == strncmp(orig_str, new_str, len)); + lsquic_rechist_cleanup(&new); +} + + +static void +test5 (void) +{ + lsquic_rechist_t rechist; + char buf[100]; + + lsquic_rechist_init(&rechist, 0, 0); + + lsquic_rechist_received(&rechist, 1, 0); + /* Packet 2 omitted because it could not be decrypted */ + lsquic_rechist_received(&rechist, 3, 0); + lsquic_rechist_received(&rechist, 12, 0); + + rechist2str(&rechist, buf, sizeof(buf)); + assert(0 == strcmp(buf, "[12-12][3-3][1-1]")); + + lsquic_rechist_received(&rechist, 4, 0); + lsquic_rechist_received(&rechist, 10, 0); + + rechist2str(&rechist, buf, sizeof(buf)); + assert(0 == strcmp(buf, "[12-12][10-10][4-3][1-1]")); + + lsquic_rechist_received(&rechist, 6, 0); + + rechist2str(&rechist, buf, sizeof(buf)); + assert(0 == strcmp(buf, "[12-12][10-10][6-6][4-3][1-1]")); + + lsquic_rechist_received(&rechist, 7, 0); + lsquic_rechist_received(&rechist, 8, 0); + + rechist2str(&rechist, buf, sizeof(buf)); + assert(0 == strcmp(buf, "[12-12][10-10][8-6][4-3][1-1]")); + + lsquic_rechist_received(&rechist, 9, 0); + test_range_copy(&rechist, 0); + + rechist2str(&rechist, buf, sizeof(buf)); + assert(0 == strcmp(buf, "[12-12][10-6][4-3][1-1]")); + + lsquic_rechist_received(&rechist, 5, 0); + lsquic_rechist_received(&rechist, 11, 0); + + rechist2str(&rechist, buf, sizeof(buf)); + assert(0 == strcmp(buf, "[12-3][1-1]")); + + lsquic_rechist_cleanup(&rechist); +} + + +/* Regression test for bug where rechist ends up empty (rh_used == 0) + * with invalid head entry with a self-referential next, and + * lsquic_rechist_received would follow it because it didn't check rh_used. + */ +static void +test6 (void) +{ + lsquic_rechist_t rechist; + char buf[256]; + long int time = 12087061905875; + unsigned i; + + lsquic_rechist_init(&rechist, 0, 0); + + for (i = 0; i <= 3; i++) + lsquic_rechist_received(&rechist, i, (time += (i * 10))); + lsquic_rechist_stop_wait(&rechist, 2); + + lsquic_rechist_received(&rechist, 4, (time += 10)); + + lsquic_rechist_stop_wait(&rechist, 3); + + lsquic_rechist_received(&rechist, 5, (time += 10)); + + lsquic_rechist_stop_wait(&rechist, 3); + + lsquic_rechist_received(&rechist, 6, (time += 10)); + + lsquic_rechist_stop_wait(&rechist, 9); + + lsquic_rechist_received(&rechist, 7, (time += 10)); + lsquic_rechist_received(&rechist, 8, (time += 10)); + lsquic_rechist_received(&rechist, 9, (time += 10)); + + rechist2str(&rechist, buf, sizeof(buf)); + + lsquic_rechist_cleanup(&rechist); +} + + +static void +test_rand_sequence (unsigned seed, unsigned max) +{ + struct lsquic_rechist rechist; + const struct lsquic_packno_range *range; + lsquic_packno_t prev_low; + enum received_st st; + unsigned i, count; + + lsquic_rechist_init(&rechist, 1, max); + srand(seed); + + for (i = 0; i < 10000; ++i) + { + st = lsquic_rechist_received(&rechist, (unsigned) rand(), 0); + assert(st == REC_ST_OK || st == REC_ST_DUP); + } + + test_range_copy(&rechist, 1); + + range = lsquic_rechist_first(&rechist); + assert(range); + assert(range->high >= range->low); + prev_low = range->low; + count = 1; + + while (range = lsquic_rechist_next(&rechist), range != NULL) + { + ++count; + assert(range->high >= range->low); + assert(range->high < prev_low); + prev_low = range->low; + } + if (max) + assert(count <= max); + + lsquic_rechist_cleanup(&rechist); +} + + +struct shuffle_elem { + unsigned packno; + int rand; +}; + + +static int +comp_els (const void *a_p, const void *b_p) +{ + const struct shuffle_elem *a = a_p, *b = b_p; + if (a->rand < b->rand) + return -1; + if (a->rand > b->rand) + return 1; + return (a->packno > b->packno) - (b->packno > a->packno); +} + + +static void +test_shuffle_1000 (unsigned seed) +{ + struct lsquic_rechist rechist; + const struct lsquic_packno_range *range; + enum received_st st; + unsigned i; + struct shuffle_elem *els; + + els = malloc(sizeof(els[0]) * 10000); + lsquic_rechist_init(&rechist, 1, 0); + srand(seed); + + for (i = 0; i < 10000; ++i) + { + els[i].packno = i; + els[i].rand = rand(); + } + + qsort(els, 10000, sizeof(els[0]), comp_els); + + for (i = 0; i < 10000; ++i) + { + st = lsquic_rechist_received(&rechist, els[i].packno, 0); + assert(st == REC_ST_OK || st == REC_ST_DUP); + } + test_range_copy(&rechist, 1); + + range = lsquic_rechist_first(&rechist); + assert(range); + assert(range->high == 9999); + assert(range->low == 0); + range = lsquic_rechist_next(&rechist); + assert(!range); + + lsquic_rechist_cleanup(&rechist); + free(els); +} + + +int +main (void) +{ + enum received_st st; + lsquic_rechist_t rechist; + unsigned i; + const struct lsquic_packno_range *range; + + lsquic_rechist_init(&rechist, 0, 0); + + lsquic_time_t now = 1234; + st = lsquic_rechist_received(&rechist, 0, now); + assert(("inserting packet number zero results in error", st == REC_ST_ERR)); + + st = lsquic_rechist_received(&rechist, 1, now); + assert(("inserting packet number one is successful", st == REC_ST_OK)); + + st = lsquic_rechist_received(&rechist, 1, now); + assert(("inserting packet number one again results in duplicate error", + st == REC_ST_DUP)); + + range = lsquic_rechist_first(&rechist); + assert(("first range returned correctly", range)); + assert(("first range low value checks out", range->low == 1)); + assert(("first range high value checks out", range->high == 1)); + range = lsquic_rechist_next(&rechist); + assert(("second range does not exist", !range)); + + for (i = 3; i <= 5; ++i) + { + st = lsquic_rechist_received(&rechist, i, now); + assert(("inserting packet", st == REC_ST_OK)); + } + + range = lsquic_rechist_first(&rechist); + assert(("first range returned correctly", range)); + assert(("first range low value checks out", range->low == 3)); + assert(("first range high value checks out", range->high == 5)); + range = lsquic_rechist_next(&rechist); + assert(("second range returned correctly", range)); + assert(("second range low value checks out", range->low == 1)); + assert(("second range high value checks out", range->high == 1)); + range = lsquic_rechist_next(&rechist); + assert(("third range does not exist", !range)); + + lsquic_rechist_stop_wait(&rechist, 3); + + st = lsquic_rechist_received(&rechist, 1, now); + assert(("inserting packet number one is unsuccessful after cutoff 3", + st == REC_ST_DUP)); + + range = lsquic_rechist_first(&rechist); + assert(("first range returned correctly", range)); + assert(("first range low value checks out", range->low == 3)); + assert(("first range high value checks out", range->high == 5)); + range = lsquic_rechist_next(&rechist); + assert(("second range does not exist", !range)); + + for (i = 9; i >= 7; --i) + { + st = lsquic_rechist_received(&rechist, i, now); + assert(("inserting packet", st == REC_ST_OK)); + } + + range = lsquic_rechist_first(&rechist); + assert(("first range returned correctly", range)); + assert(("first range low value checks out", range->low == 7)); + assert(("first range high value checks out", range->high == 9)); + range = lsquic_rechist_next(&rechist); + assert(("second range returned correctly", range)); + assert(("second range low value checks out", range->low == 3)); + assert(("second range high value checks out", range->high == 5)); + range = lsquic_rechist_next(&rechist); + assert(("third range does not exist", !range)); + + lsquic_rechist_stop_wait(&rechist, 5); + + range = lsquic_rechist_first(&rechist); + range = lsquic_rechist_next(&rechist); + assert(("second range returned correctly", range)); + assert(("second range low value checks out", range->low == 5)); + assert(("second range high value checks out", range->high == 5)); + range = lsquic_rechist_next(&rechist); + assert(("third range does not exist", !range)); + + lsquic_rechist_stop_wait(&rechist, 8); + + range = lsquic_rechist_first(&rechist); + assert(("first range returned correctly", range)); + assert(("first range low value checks out", range->low == 8)); + assert(("first range high value checks out", range->high == 9)); + range = lsquic_rechist_next(&rechist); + assert(("second range does not exist", !range)); + + lsquic_rechist_cleanup(&rechist); + + test4(); + + test5(); + + test6(); + + for (i = 0; i < 10; ++i) + test_rand_sequence(i, 0); + + for (i = 0; i < 10; ++i) + test_rand_sequence(i, 111 + i * 3 /* Just something arbitrary */); + + for (i = 0; i < 10; ++i) + test_shuffle_1000(i); + + return 0; +} diff --git a/external/lsquic/tests/test_reg_pkt_headergen.c b/external/lsquic/tests/test_reg_pkt_headergen.c new file mode 100644 index 0000000..dbf400d --- /dev/null +++ b/external/lsquic/tests/test_reg_pkt_headergen.c @@ -0,0 +1,237 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif +#include + +#include "lsquic_types.h" +#include "lsquic.h" +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_out.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_parse.h" + +struct test { + /* Inputs. */ + const struct parse_funcs + *pf; + size_t bufsz; + uint64_t cid; /* Zero means connection ID is not specified */ + const char *nonce; + lsquic_packno_t packno; + enum packno_bits + bits; /* The test has been retrofitted by adding bits parameter. The test can + * be made more complicated by calculating packet number length based on + * some other inputs. However, this is tested elsewhere. + */ + union { + unsigned char buf[4]; + lsquic_ver_tag_t val; + } ver; + + /* Outputs */ + int len; /* Retval */ + char out[0x100]; /* Contents */ +}; + + +static void +run_test (const struct test *const test) +{ + + struct lsquic_packet_out packet_out = + { + .po_flags = (test->cid ? PO_CONN_ID : 0) + | (test->ver.val ? PO_VERSION : 0) + | (test->nonce ? PO_NONCE: 0) + , + .po_nonce = (unsigned char *) test->nonce, + .po_ver_tag = test->ver.val, + .po_packno = test->packno, + }; + lsquic_packet_out_set_packno_bits(&packet_out, test->bits); + + lsquic_cid_t cid; + memset(&cid, 0, sizeof(cid)); + cid.len = sizeof(test->cid); + memcpy(cid.idbuf, &test->cid, sizeof(test->cid)); + + struct lsquic_conn lconn = LSCONN_INITIALIZER_CID(lconn, cid); + + unsigned char out[GQUIC_MAX_PUBHDR_SZ]; + int len = test->pf->pf_gen_reg_pkt_header(&lconn, &packet_out, out, + sizeof(out), NULL, NULL); + + assert(("Packet length is correct", len == test->len)); + + if (test->len > 0) + assert(("Packet contents are correct", + 0 == memcmp(out, test->out, len))); +} + + +int +main (void) +{ + const struct test tests[] = { + { + .pf = select_pf_by_ver(LSQVER_043), + .bufsz = GQUIC_MAX_PUBHDR_SZ, + .cid = 0x0102030405060708UL, + .nonce = NULL, + .packno = 0x01020304, + .bits = GQUIC_PACKNO_LEN_4, + .len = 1 + 8 + 0 + 4, + .out = { (0 << 2) /* Nonce present */ + | 0x08 /* Connection ID present */ + | 0x20 /* Packet number length */ + , + 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Connection ID */ + 0x01, 0x02, 0x03, 0x04, /* Packet number */ + }, + }, + + { + .pf = select_pf_by_ver(LSQVER_043), + .bufsz = GQUIC_MAX_PUBHDR_SZ, + .cid = 0x0102030405060708UL, + .nonce = NULL, + .packno = 0x00, + .bits = GQUIC_PACKNO_LEN_1, + .len = 1 + 8 + 0 + 1, + .out = { (0 << 2) /* Nonce present */ + | 0x08 /* Connection ID present */ + | 0x00 /* Packet number length */ + , + 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Connection ID */ + 0x00, /* Packet number */ + }, + }, + + { + .pf = select_pf_by_ver(LSQVER_043), + .bufsz = GQUIC_MAX_PUBHDR_SZ, + .cid = 0x0102030405060708UL, + .nonce = NULL, + .packno = 0x09, + .bits = GQUIC_PACKNO_LEN_1, + .ver.buf= { 'Q', '0', '4', '3', }, + .len = 1 + 8 + 4 + 0 + 1, + .out = { (0 << 2) /* Nonce present */ + | 0x01 /* Version present */ + | 0x08 /* Connection ID present */ + | 0x00 /* Packet number length */ + , + 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Connection ID */ + 'Q', '0', '4', '3', + 0x09, /* Packet number */ + }, + }, + + #define NONCENSE "0123456789abcdefghijklmnopqrstuv" + #define NONCENSE_BYTES '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v' + + { + .pf = select_pf_by_ver(LSQVER_043), + .bufsz = GQUIC_MAX_PUBHDR_SZ, + .cid = 0x0102030405060708UL, + .nonce = NONCENSE, + .packno = 0x00, + .bits = GQUIC_PACKNO_LEN_1, + .len = 1 + 8 + 32 + 1, + .out = { (1 << 2) /* Nonce present */ + | 0x08 /* Connection ID present */ + | 0x00 /* Packet number length */ + , + 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Connection ID */ + NONCENSE_BYTES, + 0x00, /* Packet number */ + }, + }, + + { + .pf = select_pf_by_ver(LSQVER_043), + .bufsz = GQUIC_MAX_PUBHDR_SZ, + .cid = 0, /* Do not set connection ID */ + .nonce = NONCENSE, + .packno = 0x00, + .bits = GQUIC_PACKNO_LEN_1, + .len = 1 + 0 + 32 + 1, + .out = { (1 << 2) /* Nonce present */ + | 0x00 /* Packet number length */ + , + NONCENSE_BYTES, + 0x00, /* Packet number */ + }, + }, + + { + .pf = select_pf_by_ver(LSQVER_043), + .bufsz = GQUIC_MAX_PUBHDR_SZ, + .cid = 0x0102030405060708UL, + .nonce = NONCENSE, + .packno = 0x00, + .bits = GQUIC_PACKNO_LEN_1, + .ver.buf= { 'Q', '0', '4', '3', }, + .len = 1 + 8 + 4 + 32 + 1, + .out = { (1 << 2) /* Nonce present */ + | 0x01 /* Version present */ + | 0x08 /* Connection ID present */ + | 0x00 /* Packet number length */ + , + 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Connection ID */ + 'Q', '0', '4', '3', + NONCENSE_BYTES, + 0x00, /* Packet number */ + }, + }, + + { + .pf = select_pf_by_ver(LSQVER_043), + .bufsz = GQUIC_MAX_PUBHDR_SZ, + .cid = 0x0102030405060708UL, + .nonce = NONCENSE, + .packno = 0xA0A1A2A3A4A5A6A7UL, + .bits = GQUIC_PACKNO_LEN_6, + .len = 1 + 8 + 32 + 6, + .out = { (1 << 2) /* Nonce present */ + | 0x08 /* Connection ID present */ + | 0x30 /* Packet number length */ + , + 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Connection ID */ + NONCENSE_BYTES, + 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, + }, + }, + + { + .pf = select_pf_by_ver(LSQVER_043), + .bufsz = GQUIC_MAX_PUBHDR_SZ, + .cid = 0x0102030405060708UL, + .nonce = NONCENSE, + .packno = 0xA0A1A2A3A4A5A6A7UL, + .bits = GQUIC_PACKNO_LEN_6, + .len = 1 + 8 + 32 + 6, + .out = { (1 << 2) /* Nonce present */ + | 0x08 /* Connection ID present */ + | 0x30 /* Packet number length */ + , + 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Connection ID */ + NONCENSE_BYTES, + 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, + }, + }, + + }; + + unsigned i; + for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) + run_test(&tests[i]); + return 0; +} diff --git a/external/lsquic/tests/test_rst_stream_gquic_be.c b/external/lsquic/tests/test_rst_stream_gquic_be.c new file mode 100644 index 0000000..4997163 --- /dev/null +++ b/external/lsquic/tests/test_rst_stream_gquic_be.c @@ -0,0 +1,77 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_parse.h" + +//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC +#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) + + +/* The test is both for generation and parsing: */ +struct wuf_test { + unsigned char buf[0x20]; + size_t buf_len; + lsquic_stream_id_t stream_id; + uint64_t offset; + uint64_t error_code; +}; + +static const struct wuf_test wuf_tests[] = { + { + .buf = { 0x01, 0x00, 0x67, 0x45, 0x34, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x03, }, + .buf_len = GQUIC_RST_STREAM_SZ, + .stream_id = 0x674534, + .offset = 0x0102030405, + .error_code = 0x03, + }, + + { .buf = { 0 }, } +}; + + +static void +run_parse_tests (void) +{ + const struct wuf_test *test; + for (test = wuf_tests; test->buf[0]; ++test) + { + lsquic_stream_id_t stream_id = ~0; + uint64_t offset = ~0, error_code = ~0; + int sz = pf->pf_parse_rst_frame(test->buf, test->buf_len, &stream_id, &offset, &error_code); + assert(sz == GQUIC_RST_STREAM_SZ); + assert(stream_id == test->stream_id); + assert(offset == test->offset); + assert(error_code == test->error_code); + } +} + + +static void +run_gen_tests (void) +{ + const struct wuf_test *test; + for (test = wuf_tests; test->buf[0]; ++test) + { + unsigned char buf[0x100]; + int sz = pf->pf_gen_rst_frame(buf, test->buf_len, test->stream_id, test->offset, test->error_code); + assert(sz == GQUIC_RST_STREAM_SZ); + assert(0 == memcmp(buf, test->buf, sz)); + } +} + + +int +main (void) +{ + run_parse_tests(); + run_gen_tests(); + return 0; +} diff --git a/external/lsquic/tests/test_rst_stream_gquic_le.c b/external/lsquic/tests/test_rst_stream_gquic_le.c new file mode 100644 index 0000000..0adbf2d --- /dev/null +++ b/external/lsquic/tests/test_rst_stream_gquic_le.c @@ -0,0 +1,78 @@ +/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_alarmset.h" +#include "lsquic_parse.h" + +static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); + + +/* The test is both for generation and parsing: */ +struct wuf_test { + unsigned char buf[0x20]; + size_t buf_len; + uint32_t stream_id; + uint64_t offset; + uint32_t error_code; +}; + +static const struct wuf_test wuf_tests[] = { + { + .buf = { 0x01, 0x34, 0x45, 0x67, 0x00, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, }, + .buf_len = QUIC_RST_STREAM_SZ, + .stream_id = 0x674534, + .offset = 0x0102030405, + .error_code = 0x03, + }, + + { .buf = { 0 }, } +}; + + +static void +run_parse_tests (void) +{ + const struct wuf_test *test; + for (test = wuf_tests; test->buf[0]; ++test) + { + uint32_t stream_id = ~0; + uint64_t offset = ~0; + uint32_t error_code = ~0; + int sz = pf->pf_parse_rst_frame(test->buf, test->buf_len, &stream_id, &offset, &error_code); + assert(sz == QUIC_RST_STREAM_SZ); + assert(stream_id == test->stream_id); + assert(offset == test->offset); + assert(error_code == test->error_code); + } +} + + +static void +run_gen_tests (void) +{ + const struct wuf_test *test; + for (test = wuf_tests; test->buf[0]; ++test) + { + unsigned char buf[0x100]; + int sz = pf->pf_gen_rst_frame(buf, test->buf_len, test->stream_id, test->offset, test->error_code); + assert(sz == QUIC_RST_STREAM_SZ); + assert(0 == memcmp(buf, test->buf, sz)); + } +} + + +int +main (void) +{ + run_parse_tests(); + run_gen_tests(); + return 0; +} diff --git a/external/lsquic/tests/test_rst_stream_ietf.c b/external/lsquic/tests/test_rst_stream_ietf.c new file mode 100644 index 0000000..c43be94 --- /dev/null +++ b/external/lsquic/tests/test_rst_stream_ietf.c @@ -0,0 +1,81 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_parse.h" + +static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_041); + + +/* The test is both for generation and parsing: */ +struct rst_stream_test { + unsigned char buf[0x20]; + size_t buf_len; + lsquic_stream_id_t stream_id; + uint64_t offset; + uint32_t error_code; +}; + +static const struct rst_stream_test rst_stream_tests[] = { + { + .buf = { 0x01, + 0x00, 0x67, 0x45, 0x34, + 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + }, + .buf_len = GQUIC_RST_STREAM_SZ, + .stream_id = 0x674534, + .offset = 0x0102030405, + .error_code = 0x03, + }, + + { .buf = { 0 }, } +}; + + +static void +run_parse_tests (void) +{ + const struct rst_stream_test *test; + for (test = rst_stream_tests; test->buf[0]; ++test) + { + lsquic_stream_id_t stream_id = ~0; + uint64_t offset = ~0; + uint32_t error_code = ~0; + int sz = pf->pf_parse_rst_frame(test->buf, test->buf_len, &stream_id, &offset, &error_code); + assert(sz == GQUIC_RST_STREAM_SZ); + assert(stream_id == test->stream_id); + assert(offset == test->offset); + assert(error_code == test->error_code); + } +} + + +static void +run_gen_tests (void) +{ + const struct rst_stream_test *test; + for (test = rst_stream_tests; test->buf[0]; ++test) + { + unsigned char buf[0x100]; + int sz = pf->pf_gen_rst_frame(buf, test->buf_len, test->stream_id, test->offset, test->error_code); + assert(sz == GQUIC_RST_STREAM_SZ); + assert(0 == memcmp(buf, test->buf, sz)); + } +} + + +int +main (void) +{ + run_parse_tests(); + run_gen_tests(); + return 0; +} diff --git a/external/lsquic/tests/test_rtt.c b/external/lsquic/tests/test_rtt.c new file mode 100644 index 0000000..430046e --- /dev/null +++ b/external/lsquic/tests/test_rtt.c @@ -0,0 +1,33 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic_int_types.h" +#include "lsquic_rtt.h" + +int +main (void) +{ + struct lsquic_rtt_stats stats; + lsquic_time_t sent, received; + +#define RESET() memset(&stats, 0, sizeof(stats)) +#define TV(sec, usec) (sec * 1000000 + usec) + + RESET(); + sent = TV(2, 0), received = TV(3, 0); + lsquic_rtt_stats_update(&stats, received - sent, 0); + assert(("Initial RTT checks out", + 1000000 == lsquic_rtt_stats_get_srtt(&stats))); + sent = TV(2, 500000), received = TV(3, 0); + lsquic_rtt_stats_update(&stats, received - sent, 0); + assert(("Second RTT checks out", + 937500 == lsquic_rtt_stats_get_srtt(&stats))); + + return 0; +} diff --git a/external/lsquic/tests/test_send_headers.c b/external/lsquic/tests/test_send_headers.c new file mode 100644 index 0000000..380aa8a --- /dev/null +++ b/external/lsquic/tests/test_send_headers.c @@ -0,0 +1,711 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * test_send_headers.c -- Test what happens when lsquic_stream_send_headers() + * is called. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include +#endif + +#include "lsquic.h" + +#include "lsquic_packet_common.h" +#include "lsquic_packet_ietf.h" +#include "lsquic_alarmset.h" +#include "lsquic_packet_in.h" +#include "lsquic_conn_flow.h" +#include "lsquic_rtt.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_types.h" +#include "lsquic_malo.h" +#include "lsquic_mm.h" +#include "lsquic_conn_public.h" +#include "lsquic_logger.h" +#include "lsquic_parse.h" +#include "lsquic_conn.h" +#include "lsquic_engine_public.h" +#include "lsquic_cubic.h" +#include "lsquic_pacer.h" +#include "lsquic_senhist.h" +#include "lsquic_bw_sampler.h" +#include "lsquic_minmax.h" +#include "lsquic_bbr.h" +#include "lsquic_adaptive_cc.h" +#include "lsquic_send_ctl.h" +#include "lsquic_ver_neg.h" +#include "lsquic_packet_out.h" +#include "lsquic_enc_sess.h" +#include "lsqpack.h" +#include "lsquic_frab_list.h" +#include "lsquic_http1x_if.h" +#include "lsquic_qdec_hdl.h" +#include "lsquic_qenc_hdl.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_data_in_if.h" +#include "lsquic_headers.h" +#include "lsquic_push_promise.h" + +static int s_call_wantwrite_in_ctor; +static int s_wantwrite_arg; +static int s_onwrite_called; + +static lsquic_stream_ctx_t * +on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) +{ + if (s_call_wantwrite_in_ctor) + lsquic_stream_wantwrite(stream, s_wantwrite_arg); + return NULL; +} + + +static void +on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ +} + + +static void +on_write (lsquic_stream_t *stream, lsquic_stream_ctx_t *h) +{ + s_onwrite_called = 1; + lsquic_stream_wantwrite(stream, 0); +} + + +static struct reset_call_ctx { + struct lsquic_stream *stream; + int how; +} s_onreset_called = { NULL, -1, }; + + +static void +on_reset (lsquic_stream_t *stream, lsquic_stream_ctx_t *h, int how) +{ + s_onreset_called = (struct reset_call_ctx) { stream, how, }; +} + + +const struct lsquic_stream_if stream_if = { + .on_new_stream = on_new_stream, + .on_write = on_write, + .on_close = on_close, + .on_reset = on_reset, +}; + + +enum buf_packet_type +lsquic_send_ctl_determine_bpt (struct lsquic_send_ctl *ctl, + const struct lsquic_stream *stream) +{ + return BPT_HIGHEST_PRIO; +} + + +/* This function is only here to avoid crash in the test: */ +void +lsquic_engine_add_conn_to_tickable (struct lsquic_engine_public *enpub, + lsquic_conn_t *conn) +{ +} + + +struct test_objs { + struct lsquic_engine_public eng_pub; + struct lsquic_conn lconn; + struct lsquic_conn_public conn_pub; + struct lsquic_send_ctl send_ctl; + struct lsquic_alarmset alset; + void *stream_if_ctx; + struct ver_neg ver_neg; + const struct lsquic_stream_if * + stream_if; + unsigned initial_stream_window; + enum stream_ctor_flags ctor_flags; + struct qpack_enc_hdl qeh; + struct qpack_dec_hdl qdh; +}; + + +static int +unit_test_doesnt_write_ack (struct lsquic_conn *lconn) +{ + return 0; +} + + +static struct network_path network_path; + +static struct network_path * +get_network_path (struct lsquic_conn *lconn, const struct sockaddr *sa) +{ + return &network_path; +} + +static void +abort_error (struct lsquic_conn *lconn, int is_app, + unsigned error_code, const char *fmt, ...) +{ +} + +static const struct conn_iface our_conn_if = +{ + .ci_can_write_ack = unit_test_doesnt_write_ack, + .ci_get_path = get_network_path, + .ci_abort_error = abort_error, +}; + + +static struct http1x_ctor_ctx ctor_ctx = { .is_server = 0, }; + +#if LSQUIC_CONN_STATS +static struct conn_stats s_conn_stats; +#endif + +static void +init_test_objs (struct test_objs *tobjs, unsigned initial_conn_window, + unsigned initial_stream_window, enum stream_ctor_flags addl_ctor_flags) +{ + int s; + memset(tobjs, 0, sizeof(*tobjs)); + LSCONN_INITIALIZE(&tobjs->lconn); + tobjs->lconn.cn_pf = select_pf_by_ver(LSQVER_I001); + tobjs->lconn.cn_version = LSQVER_I001; + tobjs->lconn.cn_esf_c = &lsquic_enc_session_common_ietf_v1; + network_path.np_pack_size = IQUIC_MAX_IPv4_PACKET_SZ; + tobjs->lconn.cn_if = &our_conn_if; + lsquic_mm_init(&tobjs->eng_pub.enp_mm); + TAILQ_INIT(&tobjs->conn_pub.sending_streams); + TAILQ_INIT(&tobjs->conn_pub.read_streams); + TAILQ_INIT(&tobjs->conn_pub.write_streams); + TAILQ_INIT(&tobjs->conn_pub.service_streams); + lsquic_cfcw_init(&tobjs->conn_pub.cfcw, &tobjs->conn_pub, + initial_conn_window); + lsquic_conn_cap_init(&tobjs->conn_pub.conn_cap, initial_conn_window); + lsquic_alarmset_init(&tobjs->alset, 0); + tobjs->conn_pub.mm = &tobjs->eng_pub.enp_mm; + tobjs->conn_pub.lconn = &tobjs->lconn; + tobjs->conn_pub.enpub = &tobjs->eng_pub; + tobjs->conn_pub.send_ctl = &tobjs->send_ctl; + tobjs->conn_pub.packet_out_malo = + lsquic_malo_create(sizeof(struct lsquic_packet_out)); + tobjs->conn_pub.path = &network_path; +#if LSQUIC_CONN_STATS + tobjs->conn_pub.conn_stats = &s_conn_stats; +#endif + tobjs->initial_stream_window = initial_stream_window; + lsquic_send_ctl_init(&tobjs->send_ctl, &tobjs->alset, &tobjs->eng_pub, + &tobjs->ver_neg, &tobjs->conn_pub, 0); + tobjs->stream_if = &stream_if; + tobjs->stream_if_ctx = NULL; + tobjs->ctor_flags = SCF_CALL_ON_NEW|SCF_DI_AUTOSWITCH|SCF_HTTP + |addl_ctor_flags; + if ((1 << tobjs->lconn.cn_version) & LSQUIC_IETF_VERSIONS) + { + lsquic_qeh_init(&tobjs->qeh, &tobjs->lconn); + s = lsquic_qeh_settings(&tobjs->qeh, 0, 0, 0, 0); + assert(0 == s); + tobjs->conn_pub.u.ietf.qeh = &tobjs->qeh; + tobjs->conn_pub.enpub->enp_hsi_if = lsquic_http1x_if; + tobjs->conn_pub.enpub->enp_hsi_ctx = &ctor_ctx; + s = lsquic_qdh_init(&tobjs->qdh, &tobjs->lconn, 0, + tobjs->conn_pub.enpub, 0, 0); + tobjs->conn_pub.u.ietf.qdh = &tobjs->qdh; + assert(0 == s); + } +} + + +static void +deinit_test_objs (struct test_objs *tobjs) +{ + assert(!lsquic_malo_first(tobjs->eng_pub.enp_mm.malo.stream_frame)); + lsquic_send_ctl_cleanup(&tobjs->send_ctl); + lsquic_malo_destroy(tobjs->conn_pub.packet_out_malo); + lsquic_mm_cleanup(&tobjs->eng_pub.enp_mm); + if ((1 << tobjs->lconn.cn_version) & LSQUIC_IETF_VERSIONS) + { + lsquic_qeh_cleanup(&tobjs->qeh); + lsquic_qdh_cleanup(&tobjs->qdh); + } +} + + +static struct lsquic_stream * +new_stream (struct test_objs *tobjs, unsigned stream_id, uint64_t send_off) +{ + return lsquic_stream_new(stream_id, &tobjs->conn_pub, tobjs->stream_if, + tobjs->stream_if_ctx, tobjs->initial_stream_window, send_off, + tobjs->ctor_flags); +} + +static struct test_vals { + /* What lsquic_qeh_write_headers() returns or sets */ + enum qwh_status status; + size_t prefix_sz; + size_t headers_sz; + uint64_t completion_offset; +} test_vals; + + +enum qwh_status +lsquic_qeh_write_headers (struct qpack_enc_hdl *qeh, + lsquic_stream_id_t stream_id, unsigned seqno, + const struct lsquic_http_headers *headers, unsigned char *buf, + size_t *prefix_sz, size_t *headers_sz, uint64_t *completion_offset, + enum lsqpack_enc_header_flags *hflags) +{ + memset(buf - *prefix_sz, 0xC5, *prefix_sz + *headers_sz); + *prefix_sz = test_vals.prefix_sz; + *headers_sz = test_vals.headers_sz; + *completion_offset = test_vals.completion_offset; + if (hflags) + *hflags = 0; + return test_vals.status; +} + + +static uint64_t s_enc_off; + +uint64_t +lsquic_qeh_enc_off (struct qpack_enc_hdl *qeh) +{ + return s_enc_off; +} + + +static void +test_flushes_and_closes (void) +{ + struct test_objs tobjs; + struct lsquic_stream *stream; + ssize_t nw; + int s; + struct uncompressed_headers *uh; + void *hset; + + /* For our tests purposes, we treat headers as an opaque object */ + struct lsquic_http_headers *headers = (void *) 1; + + init_test_objs(&tobjs, 0x1000, 0x1000, SCF_IETF); + + stream = new_stream(&tobjs, 0, 0x1000); + test_vals.status = QWH_FULL; + test_vals.prefix_sz = 2; + test_vals.headers_sz = 40; + test_vals.completion_offset = 0; + s = lsquic_stream_send_headers(stream, headers, 0); + assert(0 == s); + assert(stream->sm_n_buffered == test_vals.prefix_sz + test_vals.headers_sz); + assert(0 == stream->sm_hblock_sz); + lsquic_stream_destroy(stream); + + stream = new_stream(&tobjs, 4, 0x1000); + test_vals.status = QWH_PARTIAL; + test_vals.prefix_sz = 2; + test_vals.headers_sz = 40; + test_vals.completion_offset = 10; + s = lsquic_stream_send_headers(stream, headers, 0); + assert(0 == s); + assert(stream->sm_hblock_sz == test_vals.prefix_sz + test_vals.headers_sz); + assert(0 == stream->sm_n_buffered); + nw = lsquic_stream_write(stream, "hello", 5); + assert(0 == nw); + s = lsquic_stream_flush(stream); + assert(s == 0); + lsquic_stream_destroy(stream); + + /* Mock server side stream cycle */ + stream = new_stream(&tobjs, 8, 0x1000); + uh = calloc(1, sizeof(*uh)); + *uh = (struct uncompressed_headers) { + .uh_stream_id = stream->id, + .uh_weight = 127, + .uh_hset = (void *) 12345, + }; + s = lsquic_stream_uh_in(stream, uh); + assert(s == 0); + hset = lsquic_stream_get_hset(stream); + assert(hset == (void *) 12345); + s = lsquic_stream_shutdown(stream, 0); + assert(0 == s); + test_vals.status = QWH_PARTIAL; + test_vals.prefix_sz = 2; + test_vals.headers_sz = 40; + test_vals.completion_offset = 10; + assert(!(stream->sm_qflags & SMQF_WANT_WRITE)); /* Begin with them off */ + s = lsquic_stream_send_headers(stream, headers, 0); + assert(0 == s); + assert(stream->sm_hblock_sz == test_vals.prefix_sz + test_vals.headers_sz); + assert(0 == stream->sm_n_buffered); + assert(stream->sm_qflags & SMQF_WANT_WRITE); /* Want write is now set */ + nw = lsquic_stream_write(stream, "hello", 5); + assert(0 == nw); + s = lsquic_stream_flush(stream); + assert(s == 0); + s = lsquic_stream_close(stream); + assert(s == 0); + /* OK, we did not read FIN, expect these flags: */ + assert((stream->sm_qflags & (SMQF_SEND_STOP_SENDING|SMQF_WAIT_FIN_OFF)) == (SMQF_SEND_STOP_SENDING|SMQF_WAIT_FIN_OFF)); + lsquic_stream_ss_frame_sent(stream); + assert(stream->sm_hblock_sz == test_vals.prefix_sz + test_vals.headers_sz); + assert(0 == stream->sm_n_buffered); + assert(stream->sm_qflags & SMQF_WANT_WRITE); /* Still set */ + s_enc_off = 10; /* Encoder is done writing */ + lsquic_stream_dispatch_write_events(stream); + assert(stream->sm_qflags & SMQF_CALL_ONCLOSE); + lsquic_stream_acked(stream, QUIC_FRAME_STREAM); + lsquic_stream_call_on_close(stream); + assert(!(stream->sm_qflags & SMQF_FREE_STREAM)); /* Not yet */ + s_onreset_called = (struct reset_call_ctx) { NULL, -1, }; + lsquic_stream_rst_in(stream, 0, 0); + assert(s_onreset_called.stream == NULL); + assert(s_onreset_called.how == -1); + assert(!(stream->sm_qflags & (SMQF_SEND_STOP_SENDING|SMQF_WAIT_FIN_OFF))); + assert(stream->sm_qflags & SMQF_FREE_STREAM); + lsquic_stream_destroy(stream); + + deinit_test_objs(&tobjs); +} + + +static void +test_headers_wantwrite_restoration (const int want_write) +{ + struct test_objs tobjs; + struct lsquic_stream *stream; + ssize_t nw; + int s; + struct uncompressed_headers *uh; + void *hset; + + s_call_wantwrite_in_ctor = 1; + s_wantwrite_arg = want_write; + + /* For our tests purposes, we treat headers as an opaque object */ + struct lsquic_http_headers *headers = (void *) 1; + + init_test_objs(&tobjs, 0x1000, 0x1000, SCF_IETF); + + /* Mock server side stream cycle */ + + stream = new_stream(&tobjs, 4 * __LINE__, 0x1000); + uh = calloc(1, sizeof(*uh)); + *uh = (struct uncompressed_headers) { + .uh_stream_id = stream->id, + .uh_weight = 127, + .uh_hset = (void *) 12345, + }; + s = lsquic_stream_uh_in(stream, uh); + assert(s == 0); + hset = lsquic_stream_get_hset(stream); + assert(hset == (void *) 12345); + stream->stream_flags |= STREAM_FIN_RECVD; /* Pretend we received FIN */ + s = lsquic_stream_shutdown(stream, 0); + assert(0 == s); + test_vals.status = QWH_PARTIAL; + test_vals.prefix_sz = 2; + test_vals.headers_sz = 40; + test_vals.completion_offset = 10; + assert(want_write == !!(stream->sm_qflags & SMQF_WANT_WRITE)); + s = lsquic_stream_send_headers(stream, headers, 0); + assert(0 == s); + assert(stream->sm_hblock_sz == test_vals.prefix_sz + test_vals.headers_sz); + assert(0 == stream->sm_n_buffered); + assert(stream->sm_qflags & SMQF_WANT_WRITE); /* Want write is now set */ + nw = lsquic_stream_write(stream, "hello", 5); + assert(0 == nw); + s = lsquic_stream_flush(stream); + assert(s == 0); + s = lsquic_stream_close(stream); + assert(s == 0); + assert(stream->sm_hblock_sz == test_vals.prefix_sz + test_vals.headers_sz); + assert(0 == stream->sm_n_buffered); + assert(stream->sm_qflags & SMQF_WANT_WRITE); /* Still set */ + s_enc_off = 10; /* Encoder is done writing */ + lsquic_stream_dispatch_write_events(stream); + assert(stream->sm_qflags & SMQF_CALL_ONCLOSE); + lsquic_stream_acked(stream, QUIC_FRAME_STREAM); + lsquic_stream_call_on_close(stream); + assert(stream->sm_qflags & SMQF_FREE_STREAM); + lsquic_stream_destroy(stream); + + stream = new_stream(&tobjs, 4 * __LINE__, 0x1000); + uh = calloc(1, sizeof(*uh)); + *uh = (struct uncompressed_headers) { + .uh_stream_id = stream->id, + .uh_weight = 127, + .uh_hset = (void *) 12345, + }; + s = lsquic_stream_uh_in(stream, uh); + assert(s == 0); + hset = lsquic_stream_get_hset(stream); + assert(hset == (void *) 12345); + s = lsquic_stream_shutdown(stream, 0); + assert(0 == s); + test_vals.status = QWH_PARTIAL; + test_vals.prefix_sz = 2; + test_vals.headers_sz = 40; + test_vals.completion_offset = 10; + assert(want_write == !!(stream->sm_qflags & SMQF_WANT_WRITE)); + s = lsquic_stream_send_headers(stream, headers, 0); + assert(0 == s); + assert(stream->sm_hblock_sz == test_vals.prefix_sz + test_vals.headers_sz); + assert(0 == stream->sm_n_buffered); + assert(stream->sm_qflags & SMQF_WANT_WRITE); /* Want write is now set */ + s_enc_off = 10; /* Encoder is done writing */ + lsquic_stream_dispatch_write_events(stream); + assert(0 == stream->sm_hblock_sz); /* Wrote header */ + assert(want_write == s_onwrite_called); + lsquic_stream_destroy(stream); + + deinit_test_objs(&tobjs); + s_call_wantwrite_in_ctor = 0; + s_wantwrite_arg = 0; + s_onwrite_called = 0; +} + + +static void +test_pp_wantwrite_restoration (const int want_write) +{ + struct test_objs tobjs; + struct lsquic_stream *stream; + int s; + struct uncompressed_headers *uh; + struct push_promise *promise; + void *hset; + + s_call_wantwrite_in_ctor = 1; + s_wantwrite_arg = want_write; + + init_test_objs(&tobjs, 0x1000, 0x1000, SCF_IETF); + + /* Mock server side stream cycle */ + + stream = new_stream(&tobjs, 4 * __LINE__, 10); + uh = calloc(1, sizeof(*uh)); + *uh = (struct uncompressed_headers) { + .uh_stream_id = stream->id, + .uh_weight = 127, + .uh_hset = (void *) 12345, + }; + s = lsquic_stream_uh_in(stream, uh); + assert(s == 0); + hset = lsquic_stream_get_hset(stream); + assert(hset == (void *) 12345); + s = lsquic_stream_shutdown(stream, 0); + assert(0 == s); + promise = calloc(1, sizeof(*promise) + 20); + promise->pp_id = 0; + promise->pp_content_len = 20; + assert(want_write == !!(stream->sm_qflags & SMQF_WANT_WRITE)); + s = lsquic_stream_push_promise(stream, promise); + assert(s == 0); + assert((stream->stream_flags & (STREAM_NOPUSH|STREAM_PUSHING)) + == (STREAM_NOPUSH|STREAM_PUSHING)); + assert(stream->sm_qflags & SMQF_WANT_WRITE); /* Want write is now set */ + /* Dispatch: there should be no progress made */ + lsquic_stream_dispatch_write_events(stream); + assert((stream->stream_flags & (STREAM_NOPUSH|STREAM_PUSHING)) + == (STREAM_NOPUSH|STREAM_PUSHING)); + assert(stream->sm_qflags & SMQF_WANT_WRITE); + assert(SLIST_FIRST(&stream->sm_promises)->pp_write_state != PPWS_DONE); + /* Now update window and dispatch again */ + lsquic_stream_window_update(stream, 100); + lsquic_stream_dispatch_write_events(stream); + assert((stream->stream_flags & (STREAM_NOPUSH|STREAM_PUSHING)) + /* After push promise was all written, STREAM_PUSHING is no longer set */ + == STREAM_NOPUSH); + assert(SLIST_FIRST(&stream->sm_promises)->pp_write_state == PPWS_DONE); /* Done! */ + assert(want_write == s_onwrite_called); /* Restored: and on_write called */ + + lsquic_stream_destroy(stream); + deinit_test_objs(&tobjs); + s_call_wantwrite_in_ctor = 0; + s_wantwrite_arg = 0; + s_onwrite_called = 0; +} + + +/* Create a new stream frame. Each stream frame has a real packet_in to + * back it up, just like in real code. The contents of the packet do + * not matter. + */ +static stream_frame_t * +new_frame_in_ext (struct test_objs *tobjs, size_t off, size_t sz, int fin, + const void *data) +{ + lsquic_packet_in_t *packet_in; + stream_frame_t *frame; + + assert(sz <= 1370); + + packet_in = lsquic_mm_get_packet_in(&tobjs->eng_pub.enp_mm); + if (data) + packet_in->pi_data = (void *) data; + else + { + packet_in->pi_data = lsquic_mm_get_packet_in_buf(&tobjs->eng_pub.enp_mm, 1370); + packet_in->pi_flags |= PI_OWN_DATA; + memset(packet_in->pi_data, 'A', sz); + } + /* This is not how stream frame looks in the packet: we have no + * header. In our test case it does not matter, as we only care + * about stream frame. + */ + packet_in->pi_data_sz = sz; + packet_in->pi_refcnt = 1; + + frame = lsquic_malo_get(tobjs->eng_pub.enp_mm.malo.stream_frame); + memset(frame, 0, sizeof(*frame)); + frame->packet_in = packet_in; + frame->data_frame.df_offset = off; + frame->data_frame.df_size = sz; + frame->data_frame.df_data = &packet_in->pi_data[0]; + frame->data_frame.df_fin = fin; + + return frame; +} + + +static stream_frame_t * +new_frame_in (struct test_objs *tobjs, size_t off, size_t sz, int fin) +{ + return new_frame_in_ext(tobjs, off, sz, fin, NULL); +} + + +/* Test that reading from stream returns -1/EWOULDBLOCK if no headers are + * available. + */ +static void +test_read_headers (int ietf, int use_hset) +{ + struct test_objs tobjs; + struct lsquic_stream *stream; + struct stream_frame *frame; + ssize_t nr; + int s; + void *hset; + unsigned char buf[1]; + + init_test_objs(&tobjs, 0x1000, 0x1000, ietf ? SCF_IETF : 0); + + stream = new_stream(&tobjs, 0, 0x1000); + frame = new_frame_in(&tobjs, 0, 35, 1); + s = lsquic_stream_frame_in(stream, frame); + assert(s == 0); + + if (use_hset) + { + hset = lsquic_stream_get_hset(stream); + assert(NULL == hset); + } + else + { + nr = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(-1 == nr); + /* In GQUIC mode, the error is that the headers are no available yet. + * In IETF mode, the error is that we hit EOF unexpectedly -- as headers + * are sent on the same stream in HEADERS frame. + */ + if (!ietf) + assert(EWOULDBLOCK == errno); + } + + lsquic_stream_destroy(stream); + + deinit_test_objs(&tobjs); +} + + +static void +test_read_headers_http1x (void) +{ + struct test_objs tobjs; + struct lsquic_stream *stream; + struct stream_frame *frame; + int s; + const unsigned char headers_frame[5] = { + 0x01, /* Headers frame */ + 0x03, /* Frame length */ + 0x00, + 0x00, + 0xC0 | 25 /* :status 200 */, + }; + ssize_t nr; + unsigned char buf[0x100]; + + init_test_objs(&tobjs, 0x1000, 0x1000, SCF_IETF); + + stream = new_stream(&tobjs, 0, 0x1000); + frame = new_frame_in(&tobjs, 0, sizeof(headers_frame), 1); + memcpy((unsigned char *) frame->data_frame.df_data, headers_frame, + sizeof(headers_frame)); + s = lsquic_stream_frame_in(stream, frame); + assert(s == 0); + + assert(stream->stream_flags & STREAM_FIN_REACHED); + s = lsquic_stream_readable(stream); + + nr = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(nr > 0); + assert(nr == 19); + assert(0 == memcmp(buf, "HTTP/1.1 200 OK\r\n\r\n", nr)); + + lsquic_stream_destroy(stream); + + deinit_test_objs(&tobjs); +} + + +int +main (int argc, char **argv) +{ + int opt; + + lsquic_global_init(LSQUIC_GLOBAL_SERVER); + + while (-1 != (opt = getopt(argc, argv, "l:"))) + { + switch (opt) + { + case 'l': + lsquic_log_to_fstream(stderr, LLTS_NONE); + lsquic_logger_lopt(optarg); + break; + default: + exit(1); + } + } + + test_flushes_and_closes(); + test_headers_wantwrite_restoration(0); + test_headers_wantwrite_restoration(1); + test_pp_wantwrite_restoration(0); + test_pp_wantwrite_restoration(1); + test_read_headers(0, 0); + test_read_headers(0, 1); + test_read_headers(1, 0); + test_read_headers(1, 1); + test_read_headers_http1x(); + + return 0; +} diff --git a/external/lsquic/tests/test_senhist.c b/external/lsquic/tests/test_senhist.c new file mode 100644 index 0000000..4804bef --- /dev/null +++ b/external/lsquic/tests/test_senhist.c @@ -0,0 +1,38 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#ifdef _MSC_VER +#include "vc_compat.h" +#endif +#include "lsquic_int_types.h" +#include "lsquic_senhist.h" +#include "lsquic_types.h" +#include "lsquic_logger.h" + + +int +main (void) +{ + struct lsquic_senhist hist = { 0, 0 +#if !LSQUIC_SENHIST_FATAL + , 0 +#endif + }; + lsquic_packno_t packno; + + lsquic_senhist_init(&hist, 0); + + assert(0 == lsquic_senhist_largest(&hist)); + + for (packno = 1; packno < 100; ++packno) + lsquic_senhist_add(&hist, packno); + + assert(99 == lsquic_senhist_largest(&hist)); + + lsquic_senhist_cleanup(&hist); + + return 0; +} diff --git a/external/lsquic/tests/test_set.c b/external/lsquic/tests/test_set.c new file mode 100644 index 0000000..28ce4a3 --- /dev/null +++ b/external/lsquic/tests/test_set.c @@ -0,0 +1,151 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include + +#include "lsquic_set.h" + +static void +test_lsquic_set32 (void) +{ + lsquic_set32_t set; + int i, s; + + lsquic_set32_init(&set); + + for (i = 2; i < 100; ++i) + { + assert(("Value is not yet in the set", !lsquic_set32_has(&set, i))); + s = lsquic_set32_add(&set, i); + assert(0 == s); + } + + assert(("Value is not yet in the set", !lsquic_set32_has(&set, 0))); + s = lsquic_set32_add(&set, 0); + assert(0 == s); + assert(("Value is not yet in the set", !lsquic_set32_has(&set, 1))); + s = lsquic_set32_add(&set, 1); + assert(0 == s); + + for (i = 0; i < 100; ++i) + assert(("Value is in the set", lsquic_set32_has(&set, i))); + + for (i = 300; i > 200; --i) + { + assert(("Value is not yet in the set", !lsquic_set32_has(&set, i))); + s = lsquic_set32_add(&set, i); + assert(0 == s); + } + + for (i = 300; i > 200; --i) + assert(("Value is in the set", lsquic_set32_has(&set, i))); + + for (i = 100; i <= 200; ++i) + assert(("Value is not in the set", !lsquic_set32_has(&set, i))); + + for (i = 1000; i < 2000; i += 4) + { + assert(("Value is not yet in the set", !lsquic_set32_has(&set, i))); + lsquic_set32_add(&set, i); + } + + for (i = 1000; i < 2000; i += 4) + assert(("Value is in the set", lsquic_set32_has(&set, i))); + + for (i = 1000; i < 2000; i += 4) + { + assert(("Value is not yet in the set", !lsquic_set32_has(&set, i + 1))); + lsquic_set32_add(&set, i + 1); + assert(("Value is not yet in the set", !lsquic_set32_has(&set, i + 3))); + lsquic_set32_add(&set, i + 3); + assert(("Value is not yet in the set", !lsquic_set32_has(&set, i + 2))); + lsquic_set32_add(&set, i + 2); + } + + for (i = 0; i < 100; ++i) + assert(("Value is in the set", lsquic_set32_has(&set, i))); + for (i = 100; i <= 200; ++i) + assert(("Value is not in the set", !lsquic_set32_has(&set, i))); + for (i = 201; i <= 300; ++i) + assert(("Value is in the set", lsquic_set32_has(&set, i))); + for (i = 1000; i < 2000; ++i) + assert(("Value is in the set", lsquic_set32_has(&set, i))); + + lsquic_set32_cleanup(&set); +} + + +static void +test_lsquic_set64 (void) +{ + lsquic_set64_t set; + int i; + + lsquic_set64_init(&set); + + for (i = 2; i < 100; ++i) + { + assert(("Value is not yet in the set", !lsquic_set64_has(&set, i))); + lsquic_set64_add(&set, i); + } + + assert(("Value is not yet in the set", !lsquic_set64_has(&set, 0))); + lsquic_set64_add(&set, 0); + assert(("Value is not yet in the set", !lsquic_set64_has(&set, 1))); + lsquic_set64_add(&set, 1); + + for (i = 0; i < 100; ++i) + assert(("Value is in the set", lsquic_set64_has(&set, i))); + + for (i = 300; i > 200; --i) + { + assert(("Value is not yet in the set", !lsquic_set64_has(&set, i))); + lsquic_set64_add(&set, i); + } + + for (i = 300; i > 200; --i) + assert(("Value is in the set", lsquic_set64_has(&set, i))); + + for (i = 100; i <= 200; ++i) + assert(("Value is not in the set", !lsquic_set64_has(&set, i))); + + for (i = 1000; i < 2000; i += 4) + { + assert(("Value is not yet in the set", !lsquic_set64_has(&set, i))); + lsquic_set64_add(&set, i); + } + + for (i = 1000; i < 2000; i += 4) + assert(("Value is in the set", lsquic_set64_has(&set, i))); + + for (i = 1000; i < 2000; i += 4) + { + assert(("Value is not yet in the set", !lsquic_set64_has(&set, i + 1))); + lsquic_set64_add(&set, i + 1); + assert(("Value is not yet in the set", !lsquic_set64_has(&set, i + 3))); + lsquic_set64_add(&set, i + 3); + assert(("Value is not yet in the set", !lsquic_set64_has(&set, i + 2))); + lsquic_set64_add(&set, i + 2); + } + + for (i = 0; i < 100; ++i) + assert(("Value is in the set", lsquic_set64_has(&set, i))); + for (i = 100; i <= 200; ++i) + assert(("Value is not in the set", !lsquic_set64_has(&set, i))); + for (i = 201; i <= 300; ++i) + assert(("Value is in the set", lsquic_set64_has(&set, i))); + for (i = 1000; i < 2000; ++i) + assert(("Value is in the set", lsquic_set64_has(&set, i))); + + lsquic_set64_cleanup(&set); +} + + +int +main (void) +{ + test_lsquic_set32(); + test_lsquic_set64(); + return 0; +} diff --git a/external/lsquic/tests/test_sfcw.c b/external/lsquic/tests/test_sfcw.c new file mode 100644 index 0000000..67c6598 --- /dev/null +++ b/external/lsquic/tests/test_sfcw.c @@ -0,0 +1,64 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include + +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic.h" +#include "lsquic_conn_flow.h" +#include "lsquic_rtt.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_conn_public.h" +#include "lsquic_conn.h" + + +int +main (void) +{ + lsquic_global_init(LSQUIC_GLOBAL_SERVER); + const unsigned INIT_WINDOW_SIZE = 16 * 1024; + struct lsquic_sfcw fc; + struct lsquic_conn lconn; + struct lsquic_conn_public conn_pub; + uint64_t recv_off; + int s; + + memset(&lconn, 0, sizeof(lconn)); + LSCONN_INITIALIZE(&lconn); + memset(&conn_pub, 0, sizeof(conn_pub)); + conn_pub.lconn = &lconn; + lsquic_sfcw_init(&fc, INIT_WINDOW_SIZE, NULL, &conn_pub, 123); + + recv_off = lsquic_sfcw_get_fc_recv_off(&fc); + assert(("First send update advertizes offset same as initial window size", + INIT_WINDOW_SIZE == recv_off)); + + s = lsquic_sfcw_fc_offsets_changed(&fc); + assert(("First time, recv offset has not changed", !s)); + + s = lsquic_sfcw_set_max_recv_off(&fc, recv_off + 1); + assert(("Cannot set max recv larger than flow control receive offset", !s)); + + s = lsquic_sfcw_set_max_recv_off(&fc, recv_off); + assert(("Set max recv larger to flow control receive offset successfully", s)); + + s = lsquic_sfcw_fc_offsets_changed(&fc); + assert(("fc recv offset has not changed: need to consume data", !s)); + + lsquic_sfcw_set_read_off(&fc, INIT_WINDOW_SIZE * 2 / 3); + s = lsquic_sfcw_fc_offsets_changed(&fc); + assert(("recv offset has now changed", s)); + + recv_off = lsquic_sfcw_get_fc_recv_off(&fc); + assert(("Updated flow control receive window checks out", + INIT_WINDOW_SIZE * 5 / 3 == recv_off)); + + return 0; +} diff --git a/external/lsquic/tests/test_shi.c b/external/lsquic/tests/test_shi.c new file mode 100644 index 0000000..492701d --- /dev/null +++ b/external/lsquic/tests/test_shi.c @@ -0,0 +1,119 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include "vc_compat.h" +#include +#endif + +#include "lsquic.h" +#include "lsquic_stock_shi.h" + +static const struct pair { + const char *key, *value; +} pairs[] = { + { "Dude,", "where is my car?", }, + { "Balls of fur", "y", }, + { "Grand", "piano", }, + { "sWeet", "Potato", }, + { "Mac ", "and CHEESE!", }, +}; + + + + +#define N_PAIRS (sizeof(pairs) / sizeof(pairs[0])) + +static const struct order { + int order[N_PAIRS]; + int expire; +} orderings[] = { + {{ 0, 1, 2, 3, 4, }, 1, }, + {{ 0, 2, 3, 1, 4, }, 2, }, + {{ 2, 1, 0, 4, 3, }, 3, }, +}; + + +static void +test_shi (const struct order *order) +{ + unsigned i; + int s; + struct stock_shared_hash *hash; + const struct pair *pair; + unsigned data_sz; + const time_t now = time(NULL); + time_t expiry; + void *datap; + + hash = lsquic_stock_shared_hash_new(); + + for (i = 0; i < N_PAIRS; ++i) + { + pair = &pairs[ order->order[i] ]; + if (order->order[i] == order->expire) + expiry = now + 1; + else + expiry = 0; + s = stock_shi.shi_insert(hash, (char *)pair->key, strlen(pair->key), + (char *)pair->value, strlen(pair->value), expiry); + assert(0 == s); + } + +#ifndef WIN32 + sleep(2); /* Let the thing expire */ +#else + Sleep(2000); /* Let the thing expire */ +#endif + + for (i = 0; i < N_PAIRS; ++i) + { + pair = &pairs[ order->order[i] ]; + s = stock_shi.shi_lookup(hash, pair->key, strlen(pair->key), + &datap, &data_sz); + if (order->order[i] == order->expire) + { + assert(0 == s); + } + else + { + assert(1 == s); + assert(data_sz == strlen(pair->value)); + assert(0 == strncmp(pair->value, datap, data_sz)); + } + } + + for (i = 0; i < N_PAIRS; ++i) + { + pair = &pairs[ order->order[i] ]; + s = stock_shi.shi_delete(hash, pair->key, strlen(pair->key)); + if (order->order[i] == order->expire) + assert(0 != s); + else + assert(0 == s); + } + + for (i = 0; i < N_PAIRS; ++i) + { + pair = &pairs[ order->order[i] ]; + s = stock_shi.shi_lookup(hash, pair->key, strlen(pair->key), + &datap, &data_sz); + assert(0 == s); + } + + lsquic_stock_shared_hash_destroy(hash); +} + + +int +main (void) +{ + unsigned i; + for (i = 0; i < sizeof(orderings) / sizeof(orderings[0]); ++i) + test_shi(&orderings[i]); + return 0; +} diff --git a/external/lsquic/tests/test_some_packets.c b/external/lsquic/tests/test_some_packets.c new file mode 100644 index 0000000..88766b4 --- /dev/null +++ b/external/lsquic/tests/test_some_packets.c @@ -0,0 +1,133 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* Tests in this file have been migrated out of maintest.c */ +/* TODO: fix warnings */ + +#include +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_parse.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" + +struct lsquic_stream_if; + +static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); + +lsquic_stream_t * +lsquic_stream_new_ext (uint32_t id, + struct lsquic_conn_public *conn_pub, + const struct lsquic_stream_if *stream_if, + void *stream_if_ctx, unsigned initial_sfcw, + unsigned initial_send_off, enum stream_ctor_flags ctor_flags) +{ + lsquic_stream_t *stream = calloc(1, sizeof(*stream)); + stream->id = id; + return stream; +} + +uint64_t +lsquic_stream_tosend_offset (const lsquic_stream_t *stream) +{ + return 1000; +} + +int +lsquic_stream_tosend_fin (const lsquic_stream_t *stream) +{ + return 0; +} + +size_t +lsquic_stream_tosend_read (lsquic_stream_t *stream, void *buf, size_t len, + int *reached_fin) +{ + memcpy(buf, "123456789012345678901234567890", 30); + *reached_fin = lsquic_stream_tosend_fin(stream); + return 30; +} + +size_t +lsquic_stream_tosend_sz (const lsquic_stream_t *stream) +{ + return 30; +} + +static int make_complex_packet(unsigned char *pkt_buf, int max_buf_len) +{ +#if 0 /* What is this function testing? Seems useless. */ + unsigned char *p = pkt_buf; + unsigned char *const pend = p + 1500; + lsquic_stream_t *stream = lsquic_stream_new(12345, NULL, NULL, NULL, 0, 0); + uint32_t stream_id = 13989; + uint64_t offset = 10000; + uint64_t conn_id = 123579; + const char nonce[] = "1234567890ABCDEF1234567890abcdef"; /*32 bytes*/ + uint64_t packet_num = 1356789; + + int buf_len = pf->pf_gen_reg_pkt_header(p, 100, &conn_id, NULL, (const unsigned char *) nonce, packet_num, + calc_packno_bits(packet_num, 0, 0)); + assert(buf_len > 0); + p += buf_len; + + buf_len = pf->pf_gen_stream_frame(p, pend - p, + stream->id, lsquic_stream_tosend_offset(stream), + lsquic_stream_tosend_fin(stream), + lsquic_stream_tosend_sz(stream), + (gsf_read_f) lsquic_stream_tosend_read, + stream); + p += buf_len; + + buf_len = pf->pf_gen_window_update_frame(p, pend - p, stream_id, offset); + p += buf_len; + + free(stream); + + return p - pkt_buf; +#endif + return 0; +} + + +void test_stream_frame() +{ + const uint8_t data[] = "123456789012345678901234567890"; + lsquic_stream_t *stream = lsquic_stream_new(12345, NULL, NULL, NULL, 0, 0); + uint8_t buf[1500]; + int buf_len = pf->pf_gen_stream_frame(buf, 1500, + stream->id, lsquic_stream_tosend_offset(stream), + lsquic_stream_tosend_fin(stream), + lsquic_stream_tosend_sz(stream), + (gsf_read_f) lsquic_stream_tosend_read, + stream); + stream_frame_t stream_frame2; + pf->pf_parse_stream_frame(buf, buf_len, &stream_frame2); + assert(0 == stream_frame2.data_frame.df_fin ); + assert(30 == stream_frame2.data_frame.df_size ); + assert(1000 == stream_frame2.data_frame.df_offset ); + assert(12345 == stream_frame2.stream_id); + assert(memcmp(data,stream_frame2.data_frame.df_data, stream_frame2.data_frame.df_size) == 0); + printf("test_stream_frame passed.\n"); + free(stream); +} + + +int +main (void) +{ + uint8_t pkt_buf[1500]; + size_t buf_len; + buf_len = make_complex_packet(pkt_buf, 1500); + (void) buf_len; + test_stream_frame(); + return 0; +} diff --git a/external/lsquic/tests/test_spi.c b/external/lsquic/tests/test_spi.c new file mode 100644 index 0000000..b603a4c --- /dev/null +++ b/external/lsquic/tests/test_spi.c @@ -0,0 +1,344 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" + +#include "lsquic_int_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" +#include "lsquic_conn_flow.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_conn.h" +#include "lsquic_stream.h" +#include "lsquic_types.h" +#include "lsquic_rtt.h" +#include "lsquic_conn_public.h" +#include "lsquic_spi.h" +#include "lsquic_logger.h" + + +/* Sharing the same SPI tests safety of reusing the same iterator object + * (no need to deinitialize it). + */ +static struct stream_prio_iter spi; + +static struct lsquic_conn lconn = LSCONN_INITIALIZER_CIDLEN(lconn, 0); + +static struct lsquic_conn_public conn_pub = { .lconn = &lconn, }; + + +static lsquic_stream_t * +new_stream (unsigned priority) +{ + lsquic_stream_t *stream = calloc(1, sizeof(*stream)); + stream->sm_priority = priority; + return stream; +} + + +static void +free_streams (lsquic_stream_t **streams, size_t count) +{ + size_t n; + for (n = 0; n < count; ++n) + free(streams[n]); +} + + +static void +test_same_priority (unsigned priority) +{ + lsquic_stream_t *stream_arr[4] = { + new_stream(priority), + new_stream(priority), + new_stream(priority), + new_stream(priority), + }; + struct lsquic_streams_tailq streams; + lsquic_stream_t *stream; + + TAILQ_INIT(&streams); + TAILQ_INSERT_TAIL(&streams, stream_arr[0], next_write_stream); + TAILQ_INSERT_TAIL(&streams, stream_arr[1], next_write_stream); + TAILQ_INSERT_TAIL(&streams, stream_arr[2], next_write_stream); + TAILQ_INSERT_TAIL(&streams, stream_arr[3], next_write_stream); + + lsquic_spi_init(&spi, TAILQ_FIRST(&streams), + TAILQ_LAST(&streams, lsquic_streams_tailq), + (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_write_stream), + &conn_pub, __func__, NULL, NULL); + + stream = lsquic_spi_first(&spi); + assert(stream == stream_arr[0]); + stream = lsquic_spi_next(&spi); + assert(stream == stream_arr[1]); + stream = lsquic_spi_next(&spi); + assert(stream == stream_arr[2]); + stream = lsquic_spi_next(&spi); + assert(stream == stream_arr[3]); + stream = lsquic_spi_next(&spi); + assert(stream == NULL); + + /* Test reinitialization: */ + lsquic_spi_init(&spi, stream_arr[0], stream_arr[1], + (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_write_stream), + &conn_pub, __func__, NULL, NULL); + stream = lsquic_spi_first(&spi); + assert(stream == stream_arr[0]); + stream = lsquic_spi_next(&spi); + assert(stream == stream_arr[1]); + stream = lsquic_spi_next(&spi); + assert(stream == NULL); + + free_streams(stream_arr, sizeof(stream_arr) / sizeof(stream_arr[0])); +} + + +static void +test_different_priorities (int *priority) +{ + struct lsquic_streams_tailq streams; + lsquic_stream_t *stream; + int prio, prev_prio, count, n_streams = 0; + + TAILQ_INIT(&streams); + + for ( ; *priority >= 0; ++priority) + { + assert(*priority < 256); + stream = new_stream(*priority); + TAILQ_INSERT_TAIL(&streams, stream, next_send_stream); + ++n_streams; + } + + lsquic_spi_init(&spi, TAILQ_FIRST(&streams), + TAILQ_LAST(&streams, lsquic_streams_tailq), + (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_send_stream), + &conn_pub, __func__, NULL, NULL); + for (prev_prio = -1, count = 0, stream = lsquic_spi_first(&spi); stream; + stream = lsquic_spi_next(&spi), ++count) + { + prio = stream->sm_priority; + assert(prio >= prev_prio); + if (prio > prev_prio) + prev_prio = prio; + } + + assert(count == n_streams); + + while ((stream = TAILQ_FIRST(&streams))) + { + TAILQ_REMOVE(&streams, stream, next_send_stream); + free(stream); + } +} + + +struct stream_info +{ + uint32_t stream_id; + enum stream_b_flags bflags; + unsigned char prio; +}; + + +const struct stream_info infos1[] = { + { 1, SMBF_CRITICAL, 0, }, + { 3, SMBF_CRITICAL, 0, }, + { 5, 0, 0, }, + { 7, 0, 1, }, + { 127, 0, 200, }, +}; + + +const struct stream_info infos2[] = { + { 1, SMBF_CRITICAL, 0, }, + { 3, SMBF_CRITICAL, 0, }, + { 5, 0, 4, }, + { 7, 0, 1, }, + { 127, 0, 200, }, +}; + + +const struct stream_info infos3[] = { + { 0, 0, 0, }, +}; + + +struct drop_test +{ + const struct stream_info *infos; + unsigned n_infos; + unsigned high_streams; +}; + + +static const struct drop_test drop_tests[] = { + { infos1, 5, 0x7, }, + { infos2, 5, 0x3, }, + { infos3, 1, 0x0, }, +}; + + +static void +test_drop (const struct drop_test *test) +{ + + struct lsquic_stream stream_arr[20]; + unsigned seen_mask, n; + struct lsquic_streams_tailq streams; + lsquic_stream_t *stream; + int drop_high; + + TAILQ_INIT(&streams); + for (n = 0; n < test->n_infos; ++n) + { + stream_arr[n].sm_priority = test->infos[n].prio; + stream_arr[n].id = test->infos[n].stream_id; + stream_arr[n].sm_bflags = SMBF_USE_HEADERS | test->infos[n].bflags; + } + + for (drop_high = 0; drop_high < 2; ++drop_high) + { + TAILQ_INIT(&streams); + for (n = 0; n < test->n_infos; ++n) + TAILQ_INSERT_TAIL(&streams, &stream_arr[n], next_write_stream); + + lsquic_spi_init(&spi, TAILQ_FIRST(&streams), + TAILQ_LAST(&streams, lsquic_streams_tailq), + (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_write_stream), + &conn_pub, __func__, NULL, NULL); + + if (drop_high) + lsquic_spi_drop_high(&spi); + else + lsquic_spi_drop_non_high(&spi); + + seen_mask = 0; + for (stream = lsquic_spi_first(&spi); stream; + stream = lsquic_spi_next(&spi)) + seen_mask |= 1 << (stream - stream_arr); + + if (test->n_infos == 1) + assert(seen_mask == (1u << test->infos[0].stream_id)); + else if (drop_high) + assert((((1 << test->n_infos) - 1) & ~test->high_streams) == seen_mask); + else + assert(test->high_streams == seen_mask); + } +} + + +#define MAGIC 0x12312312U + +struct my_filter_ctx +{ + unsigned magic; +}; + + +static int +filter_out_odd_priorities (void *ctx, lsquic_stream_t *stream) +{ + struct my_filter_ctx *fctx = ctx; + assert(fctx->magic == MAGIC); + return 0 == (stream->sm_priority & 1); +} + + +static void +test_different_priorities_filter_odd (int *priority) +{ + struct lsquic_streams_tailq streams; + lsquic_stream_t *stream; + int prio, prev_prio, count, n_streams = 0; + + TAILQ_INIT(&streams); + + for ( ; *priority >= 0; ++priority) + { + assert(*priority < 256); + stream = new_stream(*priority); + TAILQ_INSERT_TAIL(&streams, stream, next_send_stream); + ++n_streams; + } + + struct my_filter_ctx my_filter_ctx = { MAGIC }; + + lsquic_spi_init(&spi, TAILQ_FIRST(&streams), + TAILQ_LAST(&streams, lsquic_streams_tailq), + (uintptr_t) &TAILQ_NEXT((lsquic_stream_t *) NULL, next_send_stream), + &conn_pub, __func__, filter_out_odd_priorities, &my_filter_ctx); + + for (prev_prio = -1, count = 0, stream = lsquic_spi_first(&spi); stream; + stream = lsquic_spi_next(&spi), ++count) + { + prio = stream->sm_priority; + assert(0 == (prio & 1)); + assert(prio >= prev_prio); + if (prio > prev_prio) + prev_prio = prio; + } + + assert(count < n_streams); + + while ((stream = TAILQ_FIRST(&streams))) + { + TAILQ_REMOVE(&streams, stream, next_send_stream); + free(stream); + } +} + + +int +main (int argc, char **argv) +{ + lsquic_log_to_fstream(stderr, LLTS_NONE); + lsq_log_levels[LSQLM_SPI] = LSQ_LOG_DEBUG; + + test_same_priority(0); + test_same_priority(99); + test_same_priority(255); + + { + int prio[] = { 1, 2, 3, 4, 5, 6, 7, -1 }; + test_different_priorities(prio); + } + + { + int prio[] = { 7, 6, 5, 4, 3, 2, 1, -1 }; + test_different_priorities(prio); + } + + { + int prio[] = { 7, 100, 80, 1, 0, 0, 20, 23, 255, 30, 2, 101, -1 }; + test_different_priorities(prio); + } + + { + int prio[] = { 200, 202, 240, 201, 200, 199, -1 }; + test_different_priorities(prio); + } + + { + int prio[] = { 200, 202, 240, 201, 200, 199, -1 }; + test_different_priorities_filter_odd(prio); + } + + unsigned n; + for (n = 0; n < sizeof(drop_tests) / sizeof(drop_tests[0]); ++n) + test_drop(&drop_tests[n]); + + return 0; +} diff --git a/external/lsquic/tests/test_stop_waiting_gquic_be.c b/external/lsquic/tests/test_stop_waiting_gquic_be.c new file mode 100644 index 0000000..d1195c2 --- /dev/null +++ b/external/lsquic/tests/test_stop_waiting_gquic_be.c @@ -0,0 +1,101 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_parse.h" + +//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC +#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) + + +struct parse_test { + /* Input: */ + unsigned char buf[0x10]; + size_t buf_len; + lsquic_packno_t cur_packno; + enum packno_bits + bits; + /* Expected values: */ + int retval; + lsquic_packno_t least_unacked; +}; + +static const struct parse_test parse_tests[] = { + { + .buf = { 0x06, 0x34, 0x12, 0x45, 0x67, 0x89, 0xAB, }, + .buf_len = 3, + .least_unacked = 0x1111, + .cur_packno = 0x4523, + .bits = GQUIC_PACKNO_LEN_2, + .retval = 3, + }, + + { + .buf = { 0x06, 0x12, 0x34, 0x45, 0x67, 0x89, 0xAB, }, + .buf_len = 2, + .least_unacked = 0x1111, + .cur_packno = 0x4523, + .bits = GQUIC_PACKNO_LEN_2, + .retval = -1, + }, + + { + .buf = { 0x06, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, }, + .buf_len = 7, + .least_unacked = 0x1122324252627282, + .cur_packno = 0x1122334455667788, + .bits = GQUIC_PACKNO_LEN_6, + .retval = 7, + }, + + { .buf = { 0 }, } +}; + + +static void +run_parse_tests (void) +{ + const struct parse_test *test; + for (test = parse_tests; test->buf[0]; ++test) + { + lsquic_packno_t least; + memset(&least, 0x33, sizeof(least)); + int sz = pf->pf_parse_stop_waiting_frame(test->buf, test->buf_len, + test->cur_packno, test->bits, &least); + assert(("return value is correct", sz == test->retval)); + if (test->retval > 0) + assert(("least ACKed value is correct", least == test->least_unacked)); + } +} + + +static void +run_gen_tests (void) +{ + const struct parse_test *test; + for (test = parse_tests; test->buf[0]; ++test) + { + unsigned char buf[0x100]; + int sz = pf->pf_gen_stop_waiting_frame(buf, test->buf_len, + test->cur_packno, test->bits, test->least_unacked); + assert(("return value is correct", sz == test->retval)); + if (test->retval > 0) + assert(("generated frame is correct", 0 == memcmp(test->buf, buf, sz))); + } +} + + +int +main (void) +{ + run_parse_tests(); + run_gen_tests(); + return 0; +} diff --git a/external/lsquic/tests/test_stop_waiting_gquic_le.c b/external/lsquic/tests/test_stop_waiting_gquic_le.c new file mode 100644 index 0000000..93a18b3 --- /dev/null +++ b/external/lsquic/tests/test_stop_waiting_gquic_le.c @@ -0,0 +1,101 @@ +/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_alarmset.h" +#include "lsquic_parse.h" + +static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); + + +struct parse_test { + /* Input: */ + unsigned char buf[0x10]; + size_t buf_len; + lsquic_packno_t cur_packno; + enum packno_bits + bits; + /* Expected values: */ + int retval; + lsquic_packno_t least_unacked; +}; + +static const struct parse_test parse_tests[] = { + { + .buf = { 0x06, 0x12, 0x34, 0x45, 0x67, 0x89, 0xAB, }, + .buf_len = 3, + .least_unacked = 0x1111, + .cur_packno = 0x4523, + .bits = GQUIC_PACKNO_LEN_2, + .retval = 3, + }, + + { + .buf = { 0x06, 0x12, 0x34, 0x45, 0x67, 0x89, 0xAB, }, + .buf_len = 2, + .least_unacked = 0x1111, + .cur_packno = 0x4523, + .bits = GQUIC_PACKNO_LEN_2, + .retval = -1, + }, + + { + .buf = { 0x06, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, }, + .buf_len = 7, + .least_unacked = 0x1122324252627282, + .cur_packno = 0x1122334455667788, + .bits = GQUIC_PACKNO_LEN_6, + .retval = 7, + }, + + { .buf = { 0 }, } +}; + + +static void +run_parse_tests (void) +{ + const struct parse_test *test; + for (test = parse_tests; test->buf[0]; ++test) + { + lsquic_packno_t least; + memset(&least, 0x33, sizeof(least)); + int sz = pf->pf_parse_stop_waiting_frame(test->buf, test->buf_len, + test->cur_packno, test->bits, &least); + assert(("return value is correct", sz == test->retval)); + if (test->retval > 0) + assert(("least ACKed value is correct", least == test->least_unacked)); + } +} + + +static void +run_gen_tests (void) +{ + const struct parse_test *test; + for (test = parse_tests; test->buf[0]; ++test) + { + unsigned char buf[0x100]; + int sz = pf->pf_gen_stop_waiting_frame(buf, test->buf_len, + test->cur_packno, test->bits, test->least_unacked); + assert(("return value is correct", sz == test->retval)); + if (test->retval > 0) + assert(("generated frame is correct", 0 == memcmp(test->buf, buf, sz))); + } +} + + +int +main (void) +{ + run_parse_tests(); + run_gen_tests(); + return 0; +} diff --git a/external/lsquic/tests/test_stream.c b/external/lsquic/tests/test_stream.c new file mode 100644 index 0000000..5c7d50c --- /dev/null +++ b/external/lsquic/tests/test_stream.c @@ -0,0 +1,3858 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include +#endif + +#include "lsquic.h" + +#include "lsquic_packet_common.h" +#include "lsquic_alarmset.h" +#include "lsquic_packet_in.h" +#include "lsquic_conn_flow.h" +#include "lsquic_rtt.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" +#include "lsquic_types.h" +#include "lsquic_malo.h" +#include "lsquic_mm.h" +#include "lsquic_conn_public.h" +#include "lsquic_logger.h" +#include "lsquic_parse.h" +#include "lsquic_conn.h" +#include "lsquic_engine_public.h" +#include "lsquic_cubic.h" +#include "lsquic_pacer.h" +#include "lsquic_senhist.h" +#include "lsquic_bw_sampler.h" +#include "lsquic_minmax.h" +#include "lsquic_bbr.h" +#include "lsquic_adaptive_cc.h" +#include "lsquic_send_ctl.h" +#include "lsquic_ver_neg.h" +#include "lsquic_packet_out.h" +#include "lsquic_enc_sess.h" +#include "lsqpack.h" +#include "lsquic_frab_list.h" +#include "lsquic_qenc_hdl.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_data_in_if.h" + +static const struct parse_funcs *g_pf; // = select_pf_by_ver(LSQVER_043); // will not work on MSVC, moved init to main() + +static int g_use_crypto_ctor; + +struct test_ctl_settings +{ + int tcs_schedule_stream_packets_immediately; + int tcs_have_delayed_packets; + int tcs_can_send; + int tcs_write_ack; + enum buf_packet_type + tcs_bp_type; + enum packno_bits + tcs_guess_packno_bits, + tcs_calc_packno_bits; +}; + + +static struct test_ctl_settings g_ctl_settings; + + +static void +init_buf (void *buf, size_t sz); + + +/* Set values to default */ +static void +init_test_ctl_settings (struct test_ctl_settings *settings) +{ + settings->tcs_schedule_stream_packets_immediately = 1; + settings->tcs_have_delayed_packets = 0; + settings->tcs_can_send = 1; + settings->tcs_write_ack = 0; + settings->tcs_bp_type = BPT_HIGHEST_PRIO; + settings->tcs_guess_packno_bits = GQUIC_PACKNO_LEN_2; + settings->tcs_calc_packno_bits = GQUIC_PACKNO_LEN_2; +} + + +#if __GNUC__ +__attribute__((unused)) +#endif +static void +apply_test_ctl_settings (const struct test_ctl_settings *settings) +{ + g_ctl_settings = *settings; +} + + +enum packno_bits +lsquic_send_ctl_calc_packno_bits (struct lsquic_send_ctl *ctl) +{ + return g_ctl_settings.tcs_calc_packno_bits; +} + + +int +lsquic_send_ctl_schedule_stream_packets_immediately (struct lsquic_send_ctl *ctl) +{ + return g_ctl_settings.tcs_schedule_stream_packets_immediately; +} + + +int +lsquic_send_ctl_have_delayed_packets (const struct lsquic_send_ctl *ctl) +{ + return g_ctl_settings.tcs_have_delayed_packets; +} + + +int +lsquic_send_ctl_can_send (struct lsquic_send_ctl *ctl) +{ + return g_ctl_settings.tcs_can_send; +} + + +enum packno_bits +lsquic_send_ctl_guess_packno_bits (struct lsquic_send_ctl *ctl) +{ + return g_ctl_settings.tcs_guess_packno_bits; +} + + +enum buf_packet_type +lsquic_send_ctl_determine_bpt (struct lsquic_send_ctl *ctl, + const struct lsquic_stream *stream) +{ + return g_ctl_settings.tcs_bp_type; +} + + +/* This function is only here to avoid crash in the test: */ +void +lsquic_engine_add_conn_to_tickable (struct lsquic_engine_public *enpub, + lsquic_conn_t *conn) +{ +} + + +static unsigned n_closed; +static enum stream_ctor_flags stream_ctor_flags = + SCF_CALL_ON_NEW|SCF_DI_AUTOSWITCH; + +struct test_ctx { + lsquic_stream_t *stream; +}; + + +static lsquic_stream_ctx_t * +on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) +{ + struct test_ctx *test_ctx = stream_if_ctx; + test_ctx->stream = stream; + return NULL; +} + + +static void +on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ + ++n_closed; +} + + +static struct reset_call_ctx { + struct lsquic_stream *stream; + int how; +} s_onreset_called = { NULL, -1, }; + + +static void +on_reset (lsquic_stream_t *stream, lsquic_stream_ctx_t *h, int how) +{ + s_onreset_called = (struct reset_call_ctx) { stream, how, }; +} + + +const struct lsquic_stream_if stream_if = { + .on_new_stream = on_new_stream, + .on_close = on_close, + .on_reset = on_reset, +}; + + +/* This does not do anything beyond just acking the packet: we do not attempt + * to update the send controller to have the correct state. + */ +static void +ack_packet (lsquic_send_ctl_t *send_ctl, lsquic_packno_t packno) +{ + struct lsquic_packet_out *packet_out; + TAILQ_FOREACH(packet_out, &send_ctl->sc_unacked_packets[PNS_APP], po_next) + if (packet_out->po_packno == packno) + { + lsquic_packet_out_ack_streams(packet_out); + return; + } + assert(0); +} + + +static size_t +read_from_scheduled_packets (lsquic_send_ctl_t *send_ctl, lsquic_stream_id_t stream_id, + unsigned char *const begin, size_t bufsz, uint64_t first_offset, int *p_fin, + int fullcheck) +{ + const struct parse_funcs *const pf_local = send_ctl->sc_conn_pub->lconn->cn_pf; + unsigned char *p = begin; + unsigned char *const end = p + bufsz; + const struct frame_rec *frec; + struct packet_out_frec_iter pofi; + struct lsquic_packet_out *packet_out; + struct stream_frame frame; + enum quic_frame_type expected_type; + int len, fin = 0; + + if (g_use_crypto_ctor) + expected_type = QUIC_FRAME_CRYPTO; + else + expected_type = QUIC_FRAME_STREAM; + + TAILQ_FOREACH(packet_out, &send_ctl->sc_scheduled_packets, po_next) + for (frec = lsquic_pofi_first(&pofi, packet_out); frec; + frec = lsquic_pofi_next(&pofi)) + { + if (fullcheck) + { + assert(frec->fe_frame_type == expected_type); + if (packet_out->po_packno != 1) + { + /* First packet may contain two stream frames, do not + * check it. + */ + assert(!lsquic_pofi_next(&pofi)); + if (TAILQ_NEXT(packet_out, po_next)) + { + assert(packet_out->po_data_sz == packet_out->po_n_alloc); + assert(frec->fe_len == packet_out->po_data_sz); + } + } + } + if (frec->fe_frame_type == expected_type && + frec->fe_stream->id == stream_id) + { + assert(!fin); + if (QUIC_FRAME_STREAM == expected_type) + len = pf_local->pf_parse_stream_frame(packet_out->po_data + frec->fe_off, + packet_out->po_data_sz - frec->fe_off, &frame); + else + len = pf_local->pf_parse_crypto_frame(packet_out->po_data + frec->fe_off, + packet_out->po_data_sz - frec->fe_off, &frame); + assert(len > 0); + if (QUIC_FRAME_STREAM == expected_type) + assert(frame.stream_id == frec->fe_stream->id); + else + assert(frame.stream_id == ~0ULL); + /* Otherwise not enough to copy to: */ + assert(end - p >= frame.data_frame.df_size); + /* Checks offset ordering: */ + assert(frame.data_frame.df_offset == + first_offset + (uintptr_t) (p - begin)); + if (frame.data_frame.df_fin) + { + assert(!fin); + fin = 1; + } + memcpy(p, packet_out->po_data + frec->fe_off + len - + frame.data_frame.df_size, frame.data_frame.df_size); + p += frame.data_frame.df_size; + } + } + + if (p_fin) + *p_fin = fin; + return p + bufsz - end; +} + + +static struct test_ctx test_ctx; + + +struct test_objs { + struct lsquic_conn lconn; + struct lsquic_engine_public eng_pub; + struct lsquic_conn_public conn_pub; + struct lsquic_send_ctl send_ctl; + struct lsquic_alarmset alset; + void *stream_if_ctx; + struct ver_neg ver_neg; + const struct lsquic_stream_if * + stream_if; + unsigned initial_stream_window; + enum stream_ctor_flags ctor_flags; + struct qpack_enc_hdl qeh; +}; + + +static struct network_path network_path; + +static struct network_path * +get_network_path (struct lsquic_conn *lconn, const struct sockaddr *sa) +{ + return &network_path; +} + + +static int +can_write_ack (struct lsquic_conn *lconn) +{ + return g_ctl_settings.tcs_write_ack; +} + + +static void +write_ack (struct lsquic_conn *lconn, struct lsquic_packet_out *packet_out) +{ + struct test_objs *const tobjs = (void *) lconn; + const size_t ack_size = 9; /* Arbitrary */ + int s; + + packet_out->po_frame_types |= 1 << QUIC_FRAME_ACK; + s = lsquic_packet_out_add_frame(packet_out, &tobjs->eng_pub.enp_mm, 0, + QUIC_FRAME_ACK, packet_out->po_data_sz, ack_size); + assert(s == 0); + memcpy(packet_out->po_data + packet_out->po_data_sz, "ACKACKACK", 9); + lsquic_send_ctl_incr_pack_sz(&tobjs->send_ctl, packet_out, ack_size); + packet_out->po_regen_sz += ack_size; +} + + +static const struct conn_iface our_conn_if = +{ + .ci_can_write_ack = can_write_ack, + .ci_get_path = get_network_path, + .ci_write_ack = write_ack, +}; + +#if LSQUIC_CONN_STATS +static struct conn_stats s_conn_stats; +#endif + +static void +init_test_objs (struct test_objs *tobjs, unsigned initial_conn_window, + unsigned initial_stream_window, const struct parse_funcs *pf) +{ + int s; + memset(tobjs, 0, sizeof(*tobjs)); + LSCONN_INITIALIZE(&tobjs->lconn); + tobjs->lconn.cn_pf = pf ? pf : g_pf; + tobjs->lconn.cn_version = tobjs->lconn.cn_pf == &lsquic_parse_funcs_ietf_v1 ? + LSQVER_I001 : LSQVER_043; + tobjs->lconn.cn_esf_c = &lsquic_enc_session_common_gquic_1; + network_path.np_pack_size = 1370; + tobjs->lconn.cn_if = &our_conn_if; + lsquic_mm_init(&tobjs->eng_pub.enp_mm); + TAILQ_INIT(&tobjs->conn_pub.sending_streams); + TAILQ_INIT(&tobjs->conn_pub.read_streams); + TAILQ_INIT(&tobjs->conn_pub.write_streams); + TAILQ_INIT(&tobjs->conn_pub.service_streams); + lsquic_cfcw_init(&tobjs->conn_pub.cfcw, &tobjs->conn_pub, + initial_conn_window); + lsquic_conn_cap_init(&tobjs->conn_pub.conn_cap, initial_conn_window); + lsquic_alarmset_init(&tobjs->alset, 0); + tobjs->conn_pub.mm = &tobjs->eng_pub.enp_mm; + tobjs->conn_pub.lconn = &tobjs->lconn; + tobjs->conn_pub.enpub = &tobjs->eng_pub; + tobjs->conn_pub.send_ctl = &tobjs->send_ctl; + tobjs->conn_pub.packet_out_malo = + lsquic_malo_create(sizeof(struct lsquic_packet_out)); + tobjs->conn_pub.path = &network_path; +#if LSQUIC_CONN_STATS + tobjs->conn_pub.conn_stats = &s_conn_stats; +#endif + tobjs->initial_stream_window = initial_stream_window; + lsquic_send_ctl_init(&tobjs->send_ctl, &tobjs->alset, &tobjs->eng_pub, + &tobjs->ver_neg, &tobjs->conn_pub, 0); + tobjs->stream_if = &stream_if; + tobjs->stream_if_ctx = &test_ctx; + tobjs->ctor_flags = stream_ctor_flags; + if ((1 << tobjs->lconn.cn_version) & LSQUIC_IETF_VERSIONS) + { + lsquic_qeh_init(&tobjs->qeh, &tobjs->lconn); + s = lsquic_qeh_settings(&tobjs->qeh, 0, 0, 0, 0); + assert(0 == s); + tobjs->conn_pub.u.ietf.qeh = &tobjs->qeh; + } +} + + +static void +deinit_test_objs (struct test_objs *tobjs) +{ + assert(!lsquic_malo_first(tobjs->eng_pub.enp_mm.malo.stream_frame)); + lsquic_send_ctl_cleanup(&tobjs->send_ctl); + lsquic_malo_destroy(tobjs->conn_pub.packet_out_malo); + lsquic_mm_cleanup(&tobjs->eng_pub.enp_mm); + if ((1 << tobjs->lconn.cn_version) & LSQUIC_IETF_VERSIONS) + { + lsquic_qeh_cleanup(&tobjs->qeh); + } +} + + +/* Create a new stream frame. Each stream frame has a real packet_in to + * back it up, just like in real code. The contents of the packet do + * not matter. + */ +static stream_frame_t * +new_frame_in_ext (struct test_objs *tobjs, size_t off, size_t sz, int fin, + const void *data) +{ + lsquic_packet_in_t *packet_in; + stream_frame_t *frame; + + assert(sz <= 1370); + + packet_in = lsquic_mm_get_packet_in(&tobjs->eng_pub.enp_mm); + if (data) + packet_in->pi_data = (void *) data; + else + { + packet_in->pi_data = lsquic_mm_get_packet_in_buf(&tobjs->eng_pub.enp_mm, 1370); + packet_in->pi_flags |= PI_OWN_DATA; + memset(packet_in->pi_data, 'A', sz); + } + /* This is not how stream frame looks in the packet: we have no + * header. In our test case it does not matter, as we only care + * about stream frame. + */ + packet_in->pi_data_sz = sz; + packet_in->pi_refcnt = 1; + + frame = lsquic_malo_get(tobjs->eng_pub.enp_mm.malo.stream_frame); + memset(frame, 0, sizeof(*frame)); + frame->packet_in = packet_in; + frame->data_frame.df_offset = off; + frame->data_frame.df_size = sz; + frame->data_frame.df_data = &packet_in->pi_data[0]; + frame->data_frame.df_fin = fin; + + return frame; +} + + +static stream_frame_t * +new_frame_in (struct test_objs *tobjs, size_t off, size_t sz, int fin) +{ + return new_frame_in_ext(tobjs, off, sz, fin, NULL); +} + + +static lsquic_stream_t * +new_stream_ext (struct test_objs *tobjs, unsigned stream_id, uint64_t send_off) +{ + enum stream_ctor_flags ctor_flags; + + if (g_use_crypto_ctor) + return lsquic_stream_new_crypto(stream_id, &tobjs->conn_pub, + tobjs->stream_if, tobjs->stream_if_ctx, + tobjs->ctor_flags | SCF_CRITICAL); + else + { + /* For the purposes of the unit test, consider streams 1 and 3 critical */ + if (stream_id == 3 || stream_id == 1) + ctor_flags = SCF_CRITICAL; + else + ctor_flags = 0; + if ((1 << tobjs->lconn.cn_version) & LSQUIC_IETF_VERSIONS) + ctor_flags |= SCF_IETF; + return lsquic_stream_new(stream_id, &tobjs->conn_pub, tobjs->stream_if, + tobjs->stream_if_ctx, tobjs->initial_stream_window, send_off, + tobjs->ctor_flags | ctor_flags); + } +} + + +static lsquic_stream_t * +new_stream (struct test_objs *tobjs, unsigned stream_id) +{ + return new_stream_ext(tobjs, stream_id, 16 * 1024); +} + + +static void +run_frame_ordering_test (uint64_t run_id /* This is used to make it easier to set breakpoints */, + int *idx, size_t idx_sz, int read_asap) +{ + int s; + size_t nw = 0, i; + char buf[0x1000]; + + struct test_objs tobjs; + + init_test_objs(&tobjs, 0x4000, 0x4000, NULL); + + lsquic_stream_t *stream = new_stream(&tobjs, 123); + struct lsquic_mm *const mm = &tobjs.eng_pub.enp_mm; + struct malo *const frame_malo = mm->malo.stream_frame; + + lsquic_packet_in_t *packet_in = lsquic_mm_get_packet_in(mm); + packet_in->pi_data = lsquic_mm_get_packet_in_buf(mm, 1370); + packet_in->pi_flags |= PI_OWN_DATA; + assert(idx_sz <= 10); + memcpy(packet_in->pi_data, "0123456789", 10); + packet_in->pi_data_sz = 10; + packet_in->pi_refcnt = idx_sz; + + printf("inserting "); + for (i = 0; i < idx_sz; ++i) + { + stream_frame_t *frame; + frame = lsquic_malo_get(frame_malo); + memset(frame, 0, sizeof(*frame)); + frame->packet_in = packet_in; + frame->data_frame.df_offset = idx[i]; + if (idx[i] + 1 == (int) idx_sz) + { + printf(""); + frame->data_frame.df_size = 0; + frame->data_frame.df_fin = 1; + } + else + { + printf("%c", packet_in->pi_data[idx[i]]); + frame->data_frame.df_size = 1; + frame->data_frame.df_data = &packet_in->pi_data[idx[i]]; + } + if (frame->data_frame.df_fin && read_asap && i + 1 == idx_sz) + { /* Last frame is the FIN frame. Read before inserting zero-sized + * FIN frame. + */ + nw = lsquic_stream_read(stream, buf, 10); + assert(("Read idx_sz bytes", nw == idx_sz - 1)); + assert(("Have not reached fin yet (frame has not come in)", + -1 == lsquic_stream_read(stream, buf, 1) && errno == EWOULDBLOCK)); + } + s = lsquic_stream_frame_in(stream, frame); + assert(("Inserted frame", 0 == s)); + } + printf("\n"); + + if (read_asap && nw == idx_sz - 1) + { + assert(("Reached fin", 0 == lsquic_stream_read(stream, buf, 1))); + } + else + { + nw = lsquic_stream_read(stream, buf, 10); + assert(("Read idx_sz bytes", nw == idx_sz - 1)); + assert(("Reached fin", 0 == lsquic_stream_read(stream, buf, 1))); + } + + lsquic_stream_destroy(stream); + + assert(("all frames have been released", !lsquic_malo_first(frame_malo))); + deinit_test_objs(&tobjs); +} + + +static void +permute_and_run (uint64_t run_id, + int mask, int level, int *idx, size_t idx_sz) +{ + size_t i; + for (i = 0; i < idx_sz; ++i) + { + if (!(mask & (1 << i))) + { + idx[level] = i; + if (level + 1 == (int) idx_sz) + { + run_frame_ordering_test(run_id, idx, idx_sz, 0); + run_frame_ordering_test(run_id, idx, idx_sz, 1); + } + else + permute_and_run(run_id | (i << (8 * level)), + mask | (1 << i), level + 1, idx, idx_sz); + } + } +} + + +/* Client: we send some data and FIN, and remote end sends some data and + * FIN. + */ +static void +test_loc_FIN_rem_FIN (struct test_objs *tobjs) +{ + lsquic_stream_t *stream; + lsquic_packet_out_t *packet_out; + char buf_out[0x100]; + unsigned char buf[0x100]; + ssize_t n; + int s, fin; + enum stream_state_sending sss; + + init_buf(buf_out, sizeof(buf_out)); + + stream = new_stream(tobjs, 345); + n = lsquic_stream_write(stream, buf_out, 100); + assert(n == 100); + assert(0 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + + s = lsquic_stream_flush(stream); + assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + + n = read_from_scheduled_packets(&tobjs->send_ctl, stream->id, buf, + sizeof(buf), 0, &fin, 0); + assert(100 == n); + assert(0 == memcmp(buf_out, buf, 100)); + assert(!fin); + + /* Pretend we sent out a packet: */ + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); + lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); + + s = lsquic_stream_shutdown(stream, 1); + assert(s == 0); + assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); /* Shutdown performs a flush */ + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); /* No need to close stream yet */ + + n = read_from_scheduled_packets(&tobjs->send_ctl, stream->id, buf, + sizeof(buf), 100, &fin, 0); + assert(0 == n); + assert(fin); + sss = lsquic_stream_sending_state(stream); + assert(SSS_DATA_SENT == sss); + + /* Pretend we sent out this packet as well: */ + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); + lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); + + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); /* No need to close stream yet */ + + s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 0, 100, 0)); + assert(0 == s); + + n = lsquic_stream_read(stream, buf, 60); + assert(60 == n); + n = lsquic_stream_read(stream, buf, 60); + assert(40 == n); + + s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 100, 0, 1)); + assert(0 == s); + n = lsquic_stream_read(stream, buf, 60); + assert(0 == n); + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + + s = lsquic_stream_shutdown(stream, 0); + assert(0 == s); + assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert((stream->sm_qflags & (SMQF_SERVICE_FLAGS)) == (SMQF_CALL_ONCLOSE)); + ack_packet(&tobjs->send_ctl, 1); + ack_packet(&tobjs->send_ctl, 2); + assert((stream->sm_qflags & (SMQF_SERVICE_FLAGS)) == (SMQF_CALL_ONCLOSE|SMQF_FREE_STREAM)); + sss = lsquic_stream_sending_state(stream); + assert(SSS_DATA_RECVD == sss); + + lsquic_stream_destroy(stream); + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + + assert(100 == tobjs->conn_pub.cfcw.cf_max_recv_off); + assert(100 == tobjs->conn_pub.cfcw.cf_read_off); +} + + +/* Server: we read data and FIN, and then send data and FIN. + */ +static void +test_rem_FIN_loc_FIN (struct test_objs *tobjs) +{ + lsquic_stream_t *stream; + char buf_out[0x100]; + unsigned char buf[0x100]; + size_t n; + int s, fin; + lsquic_packet_out_t *packet_out; + + stream = new_stream(tobjs, 345); + + s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 0, 100, 0)); + assert(0 == s); + + n = lsquic_stream_read(stream, buf, 60); + assert(60 == n); + n = lsquic_stream_read(stream, buf, 60); + assert(40 == n); + + s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 100, 0, 1)); + assert(0 == s); + n = lsquic_stream_read(stream, buf, 60); + assert(0 == n); + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + + s = lsquic_stream_shutdown(stream, 0); + assert(0 == s); + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + + init_buf(buf_out, sizeof(buf_out)); + n = lsquic_stream_write(stream, buf_out, 100); + assert(n == 100); + assert(0 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + + s = lsquic_stream_flush(stream); + assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + + n = read_from_scheduled_packets(&tobjs->send_ctl, stream->id, buf, + sizeof(buf), 0, &fin, 0); + assert(100 == n); + assert(0 == memcmp(buf_out, buf, 100)); + assert(!fin); + + /* Pretend we sent out a packet: */ + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); + lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); + + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); /* No need to close stream yet */ + + s = lsquic_stream_shutdown(stream, 1); + assert(s == 0); + assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); /* Shutdown performs a flush */ + + /* Now we can call on_close: */ + assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert((stream->sm_qflags & (SMQF_SERVICE_FLAGS)) == SMQF_CALL_ONCLOSE); + + n = read_from_scheduled_packets(&tobjs->send_ctl, stream->id, buf, + sizeof(buf), 100, &fin, 0); + assert(0 == n); + assert(fin); + + /* Pretend we sent out this packet as well: */ + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); + lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); + + /* Cannot free stream yet: packets have not been acked */ + assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert((stream->sm_qflags & (SMQF_SERVICE_FLAGS)) == SMQF_CALL_ONCLOSE); + + ack_packet(&tobjs->send_ctl, 1); + ack_packet(&tobjs->send_ctl, 2); + + /* Now we can free the stream: */ + assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert((stream->sm_qflags & (SMQF_SERVICE_FLAGS)) == (SMQF_CALL_ONCLOSE|SMQF_FREE_STREAM)); + + lsquic_stream_destroy(stream); + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + + assert(100 == tobjs->conn_pub.cfcw.cf_max_recv_off); + assert(100 == tobjs->conn_pub.cfcw.cf_read_off); +} + + +/* Server: we read data and close the read side before reading FIN, which + * results in stream being reset. + */ +static void +test_rem_data_loc_close_and_rst_in (struct test_objs *tobjs) +{ + lsquic_stream_t *stream; + char buf[0x100]; + ssize_t n; + int s; + + stream = new_stream(tobjs, 345); + + s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 0, 100, 0)); + assert(0 == s); + + n = lsquic_stream_read(stream, buf, 60); + assert(60 == n); + + s = lsquic_stream_shutdown(stream, 0); + assert(0 == s); + /* Early read shutdown results in different frames on different QUIC + * transports: + */ + if (stream->sm_bflags & SMBF_IETF) + assert(stream->sm_qflags & SMQF_SEND_STOP_SENDING); + else + assert(stream->sm_qflags & SMQF_SEND_RST); + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert(!((stream->sm_qflags & (SMQF_SERVICE_FLAGS)) == SMQF_CALL_ONCLOSE)); + + n = lsquic_stream_read(stream, buf, 60); + assert(n == -1); /* Cannot read from closed stream */ + + /* Close write side */ + s = lsquic_stream_shutdown(stream, 1); + assert(0 == s); + + if (stream->sm_bflags & SMBF_IETF) + { + assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); /* Shutdown performs a flush */ + assert(stream->n_unacked == 1); + } + else + { + /* gQUIC has RST scheduled to be sent, so no FIN is written */ + } + + assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert((stream->sm_qflags & (SMQF_SERVICE_FLAGS)) == SMQF_CALL_ONCLOSE); + + s_onreset_called = (struct reset_call_ctx) { NULL, -1, }; + s = lsquic_stream_rst_in(stream, 100, 1); + assert(0 == s); + assert(s_onreset_called.stream == stream); + if (stream->sm_bflags & SMBF_IETF) + assert(s_onreset_called.how == 0); + else + assert(s_onreset_called.how == 2); + + assert(!(stream->sm_qflags & SMQF_FREE_STREAM)); /* Not yet */ + assert(stream->sm_qflags & SMQF_CALL_ONCLOSE); + + lsquic_stream_rst_frame_sent(stream); + if (stream->sm_bflags & SMBF_IETF) + { + stream->n_unacked++; /* RESET frame take a reference */ + assert(!(stream->sm_qflags & SMQF_FREE_STREAM)); /* Not yet, + because: */ assert(stream->n_unacked == 2); + } + + if (stream->sm_bflags & SMBF_IETF) + { + lsquic_stream_acked(stream, QUIC_FRAME_STREAM); + lsquic_stream_acked(stream, QUIC_FRAME_RST_STREAM); + } + else + assert(stream->n_unacked == 0); /* STREAM frame was elided */ + assert(stream->sm_qflags & SMQF_FREE_STREAM); /* OK, now */ + + lsquic_stream_destroy(stream); + /* This simply checks that the stream got removed from the queue: */ + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + + assert(100 == tobjs->conn_pub.cfcw.cf_max_recv_off); + assert(100 == tobjs->conn_pub.cfcw.cf_read_off); +} + + +/* Server: we read data and close the read side before reading FIN. No + * FIN or RST arrive from peer. This should schedule RST_STREAM to be + * sent (this is gQUIC) and add "wait for known FIN" flag. + */ +static void +test_rem_data_loc_close (struct test_objs *tobjs) +{ + lsquic_stream_t *stream; + char buf[0x100]; + ssize_t n; + int s; + + stream = new_stream(tobjs, 345); + + s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 0, 100, 0)); + assert(0 == s); + + n = lsquic_stream_read(stream, buf, 60); + assert(60 == n); + + s = lsquic_stream_shutdown(stream, 0); + assert(0 == s); + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert(!(stream->sm_qflags & SMQF_CALL_ONCLOSE)); + + n = lsquic_stream_read(stream, buf, 60); + assert(n == -1); /* Cannot read from closed stream */ + + /* Close write side */ + s = lsquic_stream_shutdown(stream, 1); + assert(0 == s); + + if (stream->sm_bflags & SMBF_IETF) + assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); /* Shutdown performs a flush */ + + assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert(stream->sm_qflags & SMQF_CALL_ONCLOSE); + + assert(!(stream->sm_qflags & SMQF_FREE_STREAM)); + if (stream->sm_bflags & SMBF_IETF) + lsquic_stream_acked(stream, QUIC_FRAME_STREAM); + + lsquic_stream_rst_frame_sent(stream); + stream->n_unacked++; /* RESET frame take a reference */ + assert(!(stream->sm_qflags & SMQF_FREE_STREAM)); /* No */ + + lsquic_stream_acked(stream, QUIC_FRAME_RST_STREAM); + assert(!(stream->sm_qflags & SMQF_FREE_STREAM)); /* Still no */ + + /* Stream will linger until we have the offset: */ + assert(stream->sm_qflags & SMQF_WAIT_FIN_OFF); + + lsquic_stream_destroy(stream); + /* This simply checks that the stream got removed from the queue: */ + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + + assert(100 == tobjs->conn_pub.cfcw.cf_max_recv_off); + assert(100 == tobjs->conn_pub.cfcw.cf_read_off); +} + + +/* Client: we send some data and FIN, but remote end sends some data and + * then resets the stream. The client gets an error when it reads from + * stream, after which it closes and destroys the stream. + */ +static void +test_loc_FIN_rem_RST (struct test_objs *tobjs) +{ + lsquic_packet_out_t *packet_out; + lsquic_stream_t *stream; + char buf_out[0x100]; + unsigned char buf[0x100]; + ssize_t n; + int s, fin; + + init_buf(buf_out, sizeof(buf_out)); + + stream = new_stream(tobjs, 345); + n = lsquic_stream_write(stream, buf_out, 100); + assert(n == 100); + assert(0 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + + s = lsquic_stream_flush(stream); + assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + + n = read_from_scheduled_packets(&tobjs->send_ctl, stream->id, buf, + sizeof(buf), 0, &fin, 0); + assert(100 == n); + assert(0 == memcmp(buf_out, buf, 100)); + assert(!fin); + + /* Pretend we sent out a packet: */ + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); + lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); + + s = lsquic_stream_shutdown(stream, 1); + assert(s == 0); + assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); /* Shutdown performs a flush */ + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); /* No need to close stream yet */ + + n = read_from_scheduled_packets(&tobjs->send_ctl, stream->id, buf, + sizeof(buf), 100, &fin, 0); + assert(0 == n); + assert(fin); + + /* Pretend we sent out this packet as well: */ + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); + lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); + + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); /* No need to close stream yet */ + + s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 0, 100, 0)); + assert(0 == s); + s_onreset_called = (struct reset_call_ctx) { NULL, -1, }; + s = lsquic_stream_rst_in(stream, 100, 0); + assert(0 == s); + assert(s_onreset_called.stream == stream); + if (stream->sm_bflags & SMBF_IETF) + assert(s_onreset_called.how == 0); + else + assert(s_onreset_called.how == 2); + + /* No RST to send, we already sent FIN */ + assert(0 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + + /* The stream is not yet done: the user code has not closed it yet */ + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert(0 == (stream->sm_qflags & (SMQF_SERVICE_FLAGS))); + assert(0 == (stream->stream_flags & STREAM_U_READ_DONE)); + + s = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(-1 == s); /* Error collected */ + s = lsquic_stream_close(stream); + assert(0 == s); /* Stream closed successfully */ + + assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert((stream->sm_qflags & (SMQF_SERVICE_FLAGS)) == (SMQF_CALL_ONCLOSE)); + + ack_packet(&tobjs->send_ctl, 1); + ack_packet(&tobjs->send_ctl, 2); + +#if 0 + /* OK, here we pretend that we sent a RESET and it was acked */ + assert(stream->sm_qflags & SMQF_SEND_RST); + stream->sm_qflags |= SMQF_SEND_RST; + stream->stream_flags +#endif + + assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert((stream->sm_qflags & (SMQF_SERVICE_FLAGS)) == (SMQF_CALL_ONCLOSE|SMQF_FREE_STREAM)); + + lsquic_stream_destroy(stream); + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + + assert(100 == tobjs->conn_pub.cfcw.cf_max_recv_off); + assert(100 == tobjs->conn_pub.cfcw.cf_read_off); +} + + +/* Client: we send some data (no FIN), and remote end sends some data and + * then resets the stream. + */ +static void +test_loc_data_rem_RST (struct test_objs *tobjs) +{ + lsquic_packet_out_t *packet_out; + lsquic_stream_t *stream; + char buf_out[0x100]; + unsigned char buf[0x100]; + ssize_t n; + int s, fin; + + init_buf(buf_out, sizeof(buf_out)); + + stream = new_stream(tobjs, 345); + n = lsquic_stream_write(stream, buf_out, 100); + assert(n == 100); + assert(0 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + + s = lsquic_stream_flush(stream); + assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + + n = read_from_scheduled_packets(&tobjs->send_ctl, stream->id, buf, + sizeof(buf), 0, &fin, 0); + assert(100 == n); + assert(0 == memcmp(buf_out, buf, 100)); + assert(!fin); + + /* Pretend we sent out a packet: */ + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); + lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); + + s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 0, 100, 0)); + assert(0 == s); + s_onreset_called = (struct reset_call_ctx) { NULL, -1, }; + s = lsquic_stream_rst_in(stream, 200, 0); + assert(0 == s); + assert(s_onreset_called.stream == stream); + if (stream->sm_bflags & SMBF_IETF) + assert(s_onreset_called.how == 0); + else + assert(s_onreset_called.how == 2); + + ack_packet(&tobjs->send_ctl, 1); + + if (!(stream->sm_bflags & SMBF_IETF)) + { + assert(!TAILQ_EMPTY(&tobjs->conn_pub.sending_streams)); + assert((stream->sm_qflags & SMQF_SENDING_FLAGS) == SMQF_SEND_RST); + } + + /* Not yet closed: error needs to be collected */ + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert(0 == (stream->sm_qflags & SMQF_SERVICE_FLAGS)); + + n = lsquic_stream_write(stream, buf, 100); + if (stream->sm_bflags & SMBF_IETF) + assert(100 == n); /* Write successful after reset in IETF */ + else + assert(-1 == n); /* Error collected */ + s = lsquic_stream_close(stream); + assert(0 == s); /* Stream successfully closed */ + + if (stream->sm_bflags & SMBF_IETF) + assert(stream->n_unacked == 1); + + assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert((stream->sm_qflags & SMQF_SERVICE_FLAGS) == SMQF_CALL_ONCLOSE); + + if (!(stream->sm_bflags & SMBF_IETF)) + lsquic_stream_rst_frame_sent(stream); + + lsquic_stream_call_on_close(stream); + + assert(TAILQ_EMPTY(&tobjs->conn_pub.sending_streams)); + + if (stream->sm_bflags & SMBF_IETF) + { + /* FIN packet has not been acked yet: */ + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + /* Now ack it: */ + ack_packet(&tobjs->send_ctl, 1); + } + + assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert((stream->sm_qflags & SMQF_SERVICE_FLAGS) == SMQF_FREE_STREAM); + + lsquic_stream_destroy(stream); + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + + assert(200 == tobjs->conn_pub.cfcw.cf_max_recv_off); + assert(200 == tobjs->conn_pub.cfcw.cf_read_off); +} + + +/* Client: we send some data (no FIN), and remote end sends some data and + * then sends STOP_SENDING + */ +static void +test_loc_data_rem_SS (struct test_objs *tobjs) +{ + lsquic_packet_out_t *packet_out; + lsquic_stream_t *stream; + char buf_out[0x100]; + unsigned char buf[0x100]; + ssize_t n; + int s, fin; + + init_buf(buf_out, sizeof(buf_out)); + + stream = new_stream(tobjs, 345); + assert(stream->sm_bflags & SMBF_IETF); /* STOP_SENDING is IETF-only */ + n = lsquic_stream_write(stream, buf_out, 100); + assert(n == 100); + assert(0 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + + s = lsquic_stream_flush(stream); + assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + + n = read_from_scheduled_packets(&tobjs->send_ctl, stream->id, buf, + sizeof(buf), 0, &fin, 0); + assert(100 == n); + assert(0 == memcmp(buf_out, buf, 100)); + assert(!fin); + + /* Pretend we sent out a packet: */ + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); + lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); + + s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 0, 100, 0)); + assert(0 == s); + s_onreset_called = (struct reset_call_ctx) { NULL, -1, }; + lsquic_stream_stop_sending_in(stream, 12345); + assert(s_onreset_called.stream == stream); + assert(s_onreset_called.how == 1); + + /* Incoming STOP_SENDING should not affect the ability to read from + * stream. + */ + unsigned char mybuf[123]; + const ssize_t nread = lsquic_stream_read(stream, mybuf, sizeof(mybuf)); + assert(nread == 100); + + ack_packet(&tobjs->send_ctl, 1); + + if (!(stream->sm_bflags & SMBF_IETF)) + { + assert(!TAILQ_EMPTY(&tobjs->conn_pub.sending_streams)); + assert((stream->sm_qflags & SMQF_SENDING_FLAGS) == SMQF_SEND_RST); + } + + /* Not yet closed: error needs to be collected */ + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert(0 == (stream->sm_qflags & SMQF_SERVICE_FLAGS)); + + n = lsquic_stream_write(stream, buf, 100); + assert(-1 == n); /* Error collected */ + s = lsquic_stream_close(stream); + assert(0 == s); /* Stream successfully closed */ + + assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert((stream->sm_qflags & SMQF_SERVICE_FLAGS) == SMQF_CALL_ONCLOSE); + + if (stream->sm_bflags & SMBF_IETF) + lsquic_stream_ss_frame_sent(stream); + lsquic_stream_rst_frame_sent(stream); + lsquic_stream_call_on_close(stream); + + assert(TAILQ_EMPTY(&tobjs->conn_pub.sending_streams)); + if (stream->sm_bflags & SMBF_IETF) + assert(stream->sm_qflags & SMQF_WAIT_FIN_OFF); + else + { + assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert((stream->sm_qflags & SMQF_SERVICE_FLAGS) == SMQF_FREE_STREAM); + } + + const unsigned expected_nread = stream->sm_bflags & SMBF_IETF ? 100 : 200; + lsquic_stream_destroy(stream); + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + + assert(expected_nread == tobjs->conn_pub.cfcw.cf_max_recv_off); + assert(expected_nread == tobjs->conn_pub.cfcw.cf_read_off); +} + + +/* We send some data and RST, receive data and FIN + */ +static void +test_loc_RST_rem_FIN (struct test_objs *tobjs) +{ + lsquic_packet_out_t *packet_out; + lsquic_stream_t *stream; + char buf_out[0x100]; + unsigned char buf[0x100]; + size_t n; + int s, fin; + enum stream_state_sending sss; + + init_buf(buf_out, sizeof(buf_out)); + + stream = new_stream(tobjs, 345); + + n = lsquic_stream_write(stream, buf_out, 100); + assert(n == 100); + assert(0 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + + s = lsquic_stream_flush(stream); + assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + + n = read_from_scheduled_packets(&tobjs->send_ctl, stream->id, buf, + sizeof(buf), 0, &fin, 0); + assert(100 == n); + assert(0 == memcmp(buf_out, buf, 100)); + assert(!fin); + + /* Pretend we sent out a packet: */ + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); + lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); + + assert(1 == stream->n_unacked); + ack_packet(&tobjs->send_ctl, 1); + assert(0 == stream->n_unacked); + sss = lsquic_stream_sending_state(stream); + assert(SSS_SEND == sss); + + lsquic_stream_maybe_reset(stream, 0, 1); + ++stream->n_unacked; /* Fake sending of packet with RST_STREAM */ + assert(!TAILQ_EMPTY(&tobjs->conn_pub.sending_streams)); + assert((stream->sm_qflags & SMQF_SENDING_FLAGS) == SMQF_SEND_RST); + if (stream->sm_bflags & SMBF_IETF) + { + sss = lsquic_stream_sending_state(stream); + assert(SSS_DATA_SENT == sss); /* FIN was packetized */ + } + + s = lsquic_stream_frame_in(stream, new_frame_in(tobjs, 0, 90, 1)); + assert(s == 0); + assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert((stream->sm_qflags & SMQF_SERVICE_FLAGS) == SMQF_CALL_ONCLOSE); + + lsquic_stream_rst_frame_sent(stream); + sss = lsquic_stream_sending_state(stream); + assert(SSS_RESET_SENT == sss); + + sss = lsquic_stream_sending_state(stream); + assert(SSS_RESET_SENT == sss); + lsquic_stream_acked(stream, QUIC_FRAME_RST_STREAM); /* Fake ack of RST_STREAM packet */ + sss = lsquic_stream_sending_state(stream); + assert(SSS_RESET_RECVD == sss); + + assert(TAILQ_EMPTY(&tobjs->conn_pub.sending_streams)); + + lsquic_stream_call_on_close(stream); + + if (stream->sm_bflags & SMBF_IETF) + { + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); /* Not acked yet */ + lsquic_stream_acked(stream, QUIC_FRAME_STREAM); + } + + assert(!TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + assert((stream->sm_qflags & SMQF_SERVICE_FLAGS) == SMQF_FREE_STREAM); + + lsquic_stream_destroy(stream); + assert(TAILQ_EMPTY(&tobjs->conn_pub.service_streams)); + + assert(90 == tobjs->conn_pub.cfcw.cf_max_recv_off); + assert(90 == tobjs->conn_pub.cfcw.cf_read_off); +} + + +/* Test that when stream frame is elided and the packet is dropped, + * the send controller produces a gapless sequence. + * + * Case "middle": 3 packets with STREAM frames for streams A, B, and A. + * Stream B is reset. We should get a gapless sequence + * of packets 1, 2. + */ +#ifndef NDEBUG +static void +test_gapless_elision_middle (struct test_objs *tobjs) +{ + lsquic_stream_t *streamA, *streamB; + unsigned char buf[0x1000], buf_out[0x1000]; + size_t n, thresh, written_to_A = 0; + int s, fin; + lsquic_packet_out_t *packet_out; + + streamA = new_stream(tobjs, 345); + streamB = new_stream(tobjs, 347); + + init_buf(buf_out, sizeof(buf_out)); + thresh = lsquic_stream_flush_threshold(streamA, 0); + n = lsquic_stream_write(streamA, buf_out, thresh); + assert(n == thresh); + assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + written_to_A += n; + + thresh = lsquic_stream_flush_threshold(streamB, 0); + n = lsquic_stream_write(streamB, buf_out, thresh); + assert(n == thresh); + assert(2 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + + thresh = lsquic_stream_flush_threshold(streamA, 0); + n = lsquic_stream_write(streamA, buf_out + written_to_A, thresh); + assert(n == thresh); + assert(3 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + written_to_A += n; + + /* Verify contents of A: */ + n = read_from_scheduled_packets(&tobjs->send_ctl, streamA->id, buf, + sizeof(buf), 0, &fin, 0); + assert(n == written_to_A); + assert(0 == memcmp(buf, buf_out, written_to_A)); + + /* Now reset stream B: */ + s_onreset_called = (struct reset_call_ctx) { NULL, -1, }; + if (streamB->sm_bflags & SMBF_IETF) + lsquic_stream_stop_sending_in(streamB, 12345); + else + { + s = lsquic_stream_rst_in(streamB, 0, 0); + assert(s == 0); + } + assert(s_onreset_called.stream == streamB); + if (streamB->sm_bflags & SMBF_IETF) + assert(s_onreset_called.how == 1); + else + assert(s_onreset_called.how == 2); + assert(2 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + /* Verify A again: */ + n = read_from_scheduled_packets(&tobjs->send_ctl, streamA->id, buf, + sizeof(buf), 0, &fin, 0); + assert(n == written_to_A); + assert(0 == memcmp(buf, buf_out, written_to_A)); + + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); + assert(packet_out->po_packno == 1); + lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); + + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); + assert(packet_out->po_packno == 2); + lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); + + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); + assert(!packet_out); + + /* Now we can call on_close: */ + lsquic_stream_destroy(streamA); + lsquic_stream_destroy(streamB); +} + +/* Test that when stream frame is elided and the packet is dropped, + * the send controller produces a gapless sequence. + * + * Case "beginnig": 3 packets with STREAM frames for streams B, A, and A. + * Stream B is reset. We should get a gapless sequence + * of packets 1, 2. + */ +static void +test_gapless_elision_beginning (struct test_objs *tobjs) +{ + lsquic_stream_t *streamA, *streamB; + unsigned char buf[0x1000], buf_out[0x1000]; + size_t n, thresh, written_to_A = 0; + int s, fin; + lsquic_packet_out_t *packet_out; + + streamA = new_stream(tobjs, 345); + streamB = new_stream(tobjs, 347); + + init_buf(buf_out, sizeof(buf_out)); + + thresh = lsquic_stream_flush_threshold(streamB, 0); + n = lsquic_stream_write(streamB, buf_out, thresh); + assert(n == thresh); + assert(1 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + + thresh = lsquic_stream_flush_threshold(streamA, 0); + n = lsquic_stream_write(streamA, buf_out, thresh); + assert(n == thresh); + assert(2 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + written_to_A += n; + + thresh = lsquic_stream_flush_threshold(streamA, 0); + n = lsquic_stream_write(streamA, buf_out + written_to_A, thresh); + assert(n == thresh); + assert(3 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + written_to_A += n; + + /* Verify contents of A: */ + n = read_from_scheduled_packets(&tobjs->send_ctl, streamA->id, buf, + sizeof(buf), 0, &fin, 0); + assert(n == written_to_A); + assert(0 == memcmp(buf, buf_out, written_to_A)); + + /* Now reset stream B: */ + assert(!(streamB->stream_flags & STREAM_FRAMES_ELIDED)); + if (streamB->sm_bflags & SMBF_IETF) + lsquic_stream_stop_sending_in(streamB, 12345); + else + { + s = lsquic_stream_rst_in(streamB, 0, 0); + assert(s == 0); + } + assert(streamB->stream_flags & STREAM_FRAMES_ELIDED); + assert(2 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + /* Verify A again: */ + n = read_from_scheduled_packets(&tobjs->send_ctl, streamA->id, buf, + sizeof(buf), 0, &fin, 0); + assert(n == written_to_A); + assert(0 == memcmp(buf, buf_out, written_to_A)); + + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); + assert(packet_out->po_packno == 1); + lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); + + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); + assert(packet_out->po_packno == 2); + lsquic_send_ctl_sent_packet(&tobjs->send_ctl, packet_out); + + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs->send_ctl, 0); + assert(!packet_out); + + /* Test on_reset() behavior. This is unrelated to the gapless elision + * test, but convenient to do here. + */ + if (streamA->sm_bflags & SMBF_IETF) + { + s_onreset_called = (struct reset_call_ctx) { NULL, -1, }; + lsquic_stream_stop_sending_in(streamA, 12345); + assert(s_onreset_called.stream == streamA); + assert(s_onreset_called.how == 1); + } + + /* Now we can call on_close: */ + lsquic_stream_destroy(streamA); + lsquic_stream_destroy(streamB); +} +#endif + + + +/* Write data to the stream, but do not flush: connection cap take a hit. + * After stream is destroyed, connection cap should go back up. + */ +static void +test_reset_stream_with_unflushed_data (struct test_objs *tobjs) +{ + lsquic_stream_t *stream; + char buf[0x100]; + size_t n; + const struct lsquic_conn_cap *const cap = &tobjs->conn_pub.conn_cap; + + assert(0x4000 == lsquic_conn_cap_avail(cap)); /* Self-check */ + stream = new_stream(tobjs, 345); + n = lsquic_stream_write(stream, buf, 100); + assert(n == 100); + + /* Unflushed data counts towards connection cap for connection-limited + * stream: + */ + assert(0x4000 - 100 == lsquic_conn_cap_avail(cap)); + + lsquic_stream_destroy(stream); + assert(0x4000 == lsquic_conn_cap_avail(cap)); /* Goes back up */ +} + + +/* Write a little data to the stream, flush and then reset it: connection + * cap should NOT go back up. + */ +static void +test_reset_stream_with_flushed_data (struct test_objs *tobjs) +{ + char buf[0x100]; + size_t n; + lsquic_stream_t *stream; + const struct lsquic_conn_cap *const cap = &tobjs->conn_pub.conn_cap; + + assert(0x4000 == lsquic_conn_cap_avail(cap)); /* Self-check */ + stream = new_stream(tobjs, 345); + n = lsquic_stream_write(stream, buf, 100); + assert(n == 100); + + /* Unflushed data counts towards connection cap for + * connection-limited stream: + */ + assert(0x4000 - 100 == lsquic_conn_cap_avail(cap)); + + /* Flush the stream: */ + lsquic_stream_flush(stream); + assert(0x4000 - 100 == lsquic_conn_cap_avail(cap)); + + lsquic_stream_destroy(stream); + assert(0x4000 - 100 == lsquic_conn_cap_avail(cap)); /* Still unchanged */ +} + + +/* Write data to the handshake stream and flush: this should not affect + * connection cap. + */ +static void +test_unlimited_stream_flush_data (struct test_objs *tobjs) +{ + char buf[0x100]; + size_t n; + lsquic_stream_t *stream; + const struct lsquic_conn_cap *const cap = &tobjs->conn_pub.conn_cap; + + assert(0x4000 == lsquic_conn_cap_avail(cap)); /* Self-check */ + stream = new_stream(tobjs, 1); + n = lsquic_stream_write(stream, buf, 100); + assert(n == 100); + + /* We DO NOT take connection cap hit after stream is flushed: */ + lsquic_stream_flush(stream); + assert(0x4000 == lsquic_conn_cap_avail(cap)); + + lsquic_stream_maybe_reset(stream, 0xF00DF00D, 1); + assert(0x4000 == lsquic_conn_cap_avail(cap)); /* Still unchanged */ + + lsquic_stream_destroy(stream); + assert(0x4000 == lsquic_conn_cap_avail(cap)); /* Still unchanged */ +} + + +/* Test that data gets flushed when stream is closed. */ +static void +test_data_flush_on_close (struct test_objs *tobjs) +{ + lsquic_stream_t *stream; + const struct lsquic_conn_cap *const cap = &tobjs->conn_pub.conn_cap; + char buf[0x100]; + size_t n; + + assert(0x4000 == lsquic_conn_cap_avail(cap)); /* Self-check */ + stream = new_stream(tobjs, 345); + n = lsquic_stream_write(stream, buf, 100); + assert(n == 100); + assert(0 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + + lsquic_stream_close(stream); + /* Nothing is scheduled because STREAM frames are elided */ + assert(0 == lsquic_send_ctl_n_scheduled(&tobjs->send_ctl)); + + assert(stream->sm_qflags & SMQF_SEND_RST); + assert(!(stream->sm_qflags & SMQF_FREE_STREAM)); + assert(stream->sm_qflags & SMQF_WAIT_FIN_OFF); + + /* We take connection cap hit after stream is flushed: */ + assert(0x4000 - 100 == lsquic_conn_cap_avail(cap)); /* Conn cap hit */ + + lsquic_stream_destroy(stream); +} + + +/* In this function, we test stream termination conditions. In particular, + * we are interested in when the stream becomes finished (this is when + * connection closes it and starts ignoring frames that come after this): + * we need to test the following scenarios, both normal and abnormal + * termination, initiated both locally and remotely. + * + * We avoid formalities like calling wantread() and wantwrite() and + * dispatching read and write callbacks. + */ +static void +test_termination (void) +{ + struct test_objs tobjs; + const struct { + int gquic; + int ietf; + void (*func)(struct test_objs *); + } test_funcs[] = { + { 1, 1, test_loc_FIN_rem_FIN, }, + { 1, 1, test_rem_FIN_loc_FIN, }, + { 1, 0, test_rem_data_loc_close_and_rst_in, }, + { 1, 0, test_rem_data_loc_close, }, + { 1, 1, test_loc_FIN_rem_RST, }, + { 1, 1, test_loc_data_rem_RST, }, + { 0, 1, test_loc_data_rem_SS, }, + { 1, 0, test_loc_RST_rem_FIN, }, +#ifndef NDEBUG + { 1, 1, test_gapless_elision_beginning, }, + { 1, 1, test_gapless_elision_middle, }, +#endif + }, *tf; + + for (tf = test_funcs; tf < test_funcs + sizeof(test_funcs) / sizeof(test_funcs[0]); ++tf) + { + if (tf->gquic) + { + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + init_test_objs(&tobjs, 0x4000, 0x4000, select_pf_by_ver(LSQVER_043)); + tf->func(&tobjs); + deinit_test_objs(&tobjs); + } + if (tf->ietf) + { + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + init_test_objs(&tobjs, 0x4000, 0x4000, select_pf_by_ver(LSQVER_I001)); + tf->func(&tobjs); + deinit_test_objs(&tobjs); + } + } +} + + +/* Test flush-related corner cases */ +static void +test_flushing (void) +{ + struct test_objs tobjs; + unsigned i; + void (*const test_funcs[])(struct test_objs *) = { + test_reset_stream_with_unflushed_data, + test_reset_stream_with_flushed_data, + test_unlimited_stream_flush_data, + test_data_flush_on_close, + }; + + for (i = 0; i < sizeof(test_funcs) / sizeof(test_funcs[0]); ++i) + { + init_test_objs(&tobjs, 0x4000, 0x4000, NULL); + test_funcs[i](&tobjs); + deinit_test_objs(&tobjs); + } +} + + +static void +test_writev (void) +{ + unsigned i; + struct test_objs tobjs; + lsquic_stream_t *stream; + ssize_t n; + unsigned char buf_in[0x4000]; + unsigned char buf_out[0x4000]; + int fin; + + struct { + struct iovec iov[0x20]; + int count; + } tests[] = { + { .iov = { + { .iov_base = buf_in, .iov_len = 0x4000, }, + }, + .count = 1, + }, + { .iov = { + { .iov_base = buf_in , .iov_len = 0x1000, }, + { .iov_base = buf_in + 0x1000, .iov_len = 0x3000, }, + }, + .count = 2, + }, + { .iov = { + { .iov_base = buf_in , .iov_len = 0x1000, }, + { .iov_base = buf_in + 0x1000, .iov_len = 0x1000, }, + { .iov_base = buf_in + 0x2000, .iov_len = 0x1000, }, + { .iov_base = buf_in + 0x3000, .iov_len = 0x1000, }, + }, + .count = 4, + }, + { .iov = { + { .iov_base = buf_in , .iov_len = 0x1000, }, + { .iov_base = buf_in + 0x1000, .iov_len = 0x1000, }, + { .iov_base = buf_in + 0x2000, .iov_len = 0x1000, }, + { .iov_base = buf_in + 0x3000, .iov_len = 0xFF0, }, + { .iov_base = buf_in + 0x3FF0, .iov_len = 1, }, + { .iov_base = buf_in + 0x3FF1, .iov_len = 0, }, + { .iov_base = buf_in + 0x3FF1, .iov_len = 0, }, + { .iov_base = buf_in + 0x3FF1, .iov_len = 1, }, + { .iov_base = buf_in + 0x3FF2, .iov_len = 1, }, + { .iov_base = buf_in + 0x3FF3, .iov_len = 1, }, + { .iov_base = buf_in + 0x3FF4, .iov_len = 1, }, + { .iov_base = buf_in + 0x3FF5, .iov_len = 1, }, + { .iov_base = buf_in + 0x3FF6, .iov_len = 1, }, + { .iov_base = buf_in + 0x3FF7, .iov_len = 1, }, + { .iov_base = buf_in + 0x3FF8, .iov_len = 1, }, + { .iov_base = buf_in + 0x3FF9, .iov_len = 1, }, + { .iov_base = buf_in + 0x3FFA, .iov_len = 1, }, + { .iov_base = buf_in + 0x3FFB, .iov_len = 1, }, + { .iov_base = buf_in + 0x3FFC, .iov_len = 1, }, + { .iov_base = buf_in + 0x3FFD, .iov_len = 1, }, + { .iov_base = buf_in + 0x3FFE, .iov_len = 1, }, + { .iov_base = buf_in + 0x3FFF, .iov_len = 1, }, + }, + .count = 22, + }, + }; + + memset(buf_in, 'A', 0x1000); + memset(buf_in + 0x1000, 'B', 0x1000); + memset(buf_in + 0x2000, 'C', 0x1000); + memset(buf_in + 0x3000, 'D', 0x1000); + + for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) + { + init_test_objs(&tobjs, UINT_MAX, UINT_MAX, NULL); + stream = new_stream(&tobjs, 12345); + n = lsquic_stream_writev(stream, tests[i].iov, tests[i].count); + assert(0x4000 == n); + lsquic_stream_flush(stream); + n = read_from_scheduled_packets(&tobjs.send_ctl, stream->id, buf_out, + sizeof(buf_out), 0, &fin, 0); + assert(0x4000 == n); + assert(0 == memcmp(buf_out, buf_in, 0x1000)); + assert(!fin); + lsquic_stream_destroy(stream); + deinit_test_objs(&tobjs); + } +} + + +static void +test_prio_conversion (void) +{ + struct test_objs tobjs; + lsquic_stream_t *stream; + unsigned prio; + int s; + + init_test_objs(&tobjs, UINT_MAX, UINT_MAX, NULL); + stream = new_stream(&tobjs, 123); + + s = lsquic_stream_set_priority(stream, -2); + assert(-1 == s); + s = lsquic_stream_set_priority(stream, 0); + assert(-1 == s); + s = lsquic_stream_set_priority(stream, 257); + assert(-1 == s); + + for (prio = 1; prio <= 256; ++prio) + { + s = lsquic_stream_set_priority(stream, prio); + assert(0 == s); + assert(prio == lsquic_stream_priority(stream)); + } + + lsquic_stream_destroy(stream); + deinit_test_objs(&tobjs); +} + + +static void +test_read_in_middle (void) +{ + int s; + size_t nw = 0; + char buf[0x1000]; + const char data[] = "AAABBBCCC"; + struct test_objs tobjs; + stream_frame_t *frame; + uint64_t n_readable; + + init_test_objs(&tobjs, 0x4000, 0x4000, NULL); + + lsquic_stream_t *stream = new_stream(&tobjs, 123); + + frame = new_frame_in_ext(&tobjs, 0, 3, 0, &data[0]); + s = lsquic_stream_frame_in(stream, frame); + assert(0 == s); + n_readable = stream->data_in->di_if->di_readable_bytes(stream->data_in, 0); + assert(3 == n_readable); + + /* Hole */ + + frame = new_frame_in_ext(&tobjs, 6, 3, 0, &data[6]); + s = lsquic_stream_frame_in(stream, frame); + assert(0 == s); + n_readable = stream->data_in->di_if->di_readable_bytes(stream->data_in, 0); + assert(3 == n_readable); + + /* Read up to hole */ + + nw = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(3 == nw); + assert(0 == memcmp(buf, "AAA", 3)); + n_readable = stream->data_in->di_if->di_readable_bytes(stream->data_in, 3); + assert(0 == n_readable); + + frame = new_frame_in_ext(&tobjs, 3, 3, 0, &data[3]); + s = lsquic_stream_frame_in(stream, frame); + assert(0 == s); + n_readable = stream->data_in->di_if->di_readable_bytes(stream->data_in, 3); + assert(6 == n_readable); + + nw = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(6 == nw); + assert(0 == memcmp(buf, "BBBCCC", 6)); + n_readable = stream->data_in->di_if->di_readable_bytes(stream->data_in, 9); + assert(0 == n_readable); + + lsquic_stream_destroy(stream); + deinit_test_objs(&tobjs); +} + + +/* Test that connection flow control does not go past the max when both + * connection limited and unlimited streams are used. + */ +static void +test_conn_unlimited (void) +{ + size_t nw; + struct test_objs tobjs; + lsquic_stream_t *header_stream, *data_stream; + + init_test_objs(&tobjs, 0x4000, 0x4000, NULL); + + unsigned char *const data = calloc(1, 0x4000); + + /* Test 1: first write headers, then data stream */ + header_stream = new_stream(&tobjs, 1); + data_stream = new_stream(&tobjs, 123); + nw = lsquic_stream_write(header_stream, data, 98); + assert(98 == nw); + lsquic_stream_flush(header_stream); + nw = lsquic_stream_write(data_stream, data, 0x4000); + assert(0x4000 == nw); + assert(tobjs.conn_pub.conn_cap.cc_sent <= tobjs.conn_pub.conn_cap.cc_max); + lsquic_stream_destroy(header_stream); + lsquic_stream_destroy(data_stream); + + /* Test 2: first write data, then headers stream */ + header_stream = new_stream(&tobjs, 1); + data_stream = new_stream(&tobjs, 123); + lsquic_conn_cap_init(&tobjs.conn_pub.conn_cap, 0x4000); + nw = lsquic_stream_write(data_stream, data, 0x4000); + assert(0x4000 == nw); + nw = lsquic_stream_write(header_stream, data, 98); + assert(98 == nw); + lsquic_stream_flush(header_stream); + assert(tobjs.conn_pub.conn_cap.cc_sent <= tobjs.conn_pub.conn_cap.cc_max); + + lsquic_stream_destroy(header_stream); + lsquic_stream_destroy(data_stream); + + deinit_test_objs(&tobjs); + free(data); +} + + +static void +test_reading_from_stream2 (void) +{ + struct test_objs tobjs; + char buf[0x1000]; + struct iovec iov[2]; + lsquic_packet_in_t *packet_in; + lsquic_stream_t *stream; + stream_frame_t *frame; + ssize_t nw; + int s; + enum stream_state_receiving ssr; + const char data[] = "1234567890"; + + init_test_objs(&tobjs, 0x4000, 0x4000, NULL); + stream = new_stream(&tobjs, 123); + ssr = lsquic_stream_receiving_state(stream); + assert(SSR_RECV == ssr); + + frame = new_frame_in_ext(&tobjs, 0, 6, 0, &data[0]); + s = lsquic_stream_frame_in(stream, frame); + assert(("Inserted frame #1", 0 == s)); + + frame = new_frame_in_ext(&tobjs, 6, 4, 0, &data[6]); + s = lsquic_stream_frame_in(stream, frame); + assert(("Inserted frame #2", 0 == s)); + + /* Invalid frame: FIN in the middle */ + frame = new_frame_in(&tobjs, 6, 0, 1); + s = lsquic_stream_frame_in(stream, frame); + assert(("Invalid frame: FIN in the middle", -1 == s)); + + /* Test for overlaps and DUPs: */ + if (!(stream_ctor_flags & SCF_USE_DI_HASH)) + { + int dup; + unsigned offset, length; + for (offset = 0; offset < 7; ++offset) + { + for (length = 1; length <= sizeof(data) - 1 - offset; ++length) + { + dup = (offset == 0 && length == 6) + || (offset == 6 && length == 4); + frame = new_frame_in_ext(&tobjs, offset, length, 0, data + offset); + s = lsquic_stream_frame_in(stream, frame); + if (dup) + assert(("Dup OK", 0 == s)); + else + assert(("Overlap OK", 0 == s)); + } + } + } + + { + uint64_t n_readable; + + n_readable = stream->data_in->di_if + ->di_readable_bytes(stream->data_in, 0); + assert(10 == n_readable); + } + + nw = lsquic_stream_read(stream, buf, 8); + assert(("Read 8 bytes", nw == 8)); + assert(("Expected 8 bytes", 0 == memcmp(buf, "12345678", nw))); + + /* Insert invalid frame: its offset + length is before the already-read + * offset. + */ + frame = new_frame_in_ext(&tobjs, 0, 6, 0, &data[0]); + packet_in = lsquic_packet_in_get(frame->packet_in); /* incref to check for dups below */ + assert(2 == packet_in->pi_refcnt); /* Self-check */ + s = lsquic_stream_frame_in(stream, frame); + assert(("Insert frame before already-read offset succeeds (duplicate)", + s == 0)); + assert(("Duplicate frame has been thrown out", + packet_in->pi_refcnt == 1)); + lsquic_packet_in_put(&tobjs.eng_pub.enp_mm, packet_in); + packet_in = NULL; + + iov[0].iov_base = buf; + iov[0].iov_len = 1; + iov[1].iov_base = buf + 1; + iov[1].iov_len = sizeof(buf) - 1; + nw = lsquic_stream_readv(stream, iov, 2); + assert(("Read 2 bytes", nw == 2)); + assert(("Expected 2 bytes", 0 == memcmp(buf, "90", nw))); + nw = lsquic_stream_read(stream, buf, 8); + assert(("Read -1 bytes (EWOULDBLOCK)", -1 == nw && errno == EWOULDBLOCK)); + nw = lsquic_stream_read(stream, buf, 8); + assert(("Read -1 bytes again (EWOULDBLOCK)", -1 == nw && errno == EWOULDBLOCK)); + + /* Insert invalid frame: its offset + length is before the already-read + * offset. This test is different from before: now there is buffered + * incoming data. + */ + frame = new_frame_in_ext(&tobjs, 0, 6, 0, &data[0]); + packet_in = lsquic_packet_in_get(frame->packet_in); /* incref to check for dups below */ + assert(2 == packet_in->pi_refcnt); /* Self-check */ + s = lsquic_stream_frame_in(stream, frame); + assert(("Insert frame before already-read offset succeeds (duplicate)", + s == 0)); + assert(("Duplicate frame has been thrown out", + packet_in->pi_refcnt == 1)); + lsquic_packet_in_put(&tobjs.eng_pub.enp_mm, packet_in); + packet_in = NULL; + + /* Last frame has no data but has a FIN flag set */ + frame = new_frame_in_ext(&tobjs, 10, 0, 1, + (void *) 1234 /* Intentionally invalid: this pointer + * should not be used + */); + s = lsquic_stream_frame_in(stream, frame); + assert(("Inserted frame #3", 0 == s)); + ssr = lsquic_stream_receiving_state(stream); + assert(SSR_DATA_RECVD == ssr); + + /* Invalid frame: writing after FIN */ + frame = new_frame_in(&tobjs, 10, 2, 0); + s = lsquic_stream_frame_in(stream, frame); + assert(("Invalid frame caught", -1 == s)); + + /* Duplicate FIN frame */ + frame = new_frame_in_ext(&tobjs, 10, 0, 1, + (void *) 1234 /* Intentionally invalid: this pointer + * should not be used + */); + s = lsquic_stream_frame_in(stream, frame); + assert(("Duplicate FIN frame", 0 == s)); + + nw = lsquic_stream_read(stream, buf, 1); + assert(("Read 0 bytes (at EOR)", 0 == nw)); + ssr = lsquic_stream_receiving_state(stream); + assert(SSR_DATA_READ == ssr); + + lsquic_stream_destroy(stream); + deinit_test_objs(&tobjs); +} + + +/* This tests stream overlap support */ +static void +test_overlaps (void) +{ + struct test_objs tobjs; + char buf[0x1000]; + lsquic_stream_t *stream; + stream_frame_t *frame; + int s; + const char data[] = "1234567890"; + + struct frame_spec + { + unsigned off; + unsigned len; + signed char fin; + }; + + struct frame_step + { + struct frame_spec frame_spec; + int insert_res; /* Expected result */ + }; + + struct overlap_test + { + int line; /* Test identifier */ + struct frame_step steps[10]; /* Sequence of steps */ + unsigned n_steps; + const unsigned char buf[20]; /* Expected result of read */ + ssize_t sz; /* Expected size of first read */ + ssize_t second_read; /* Expected size of second read: + * 0 means EOS (FIN). + */ + }; + + static const struct overlap_test tests[] = + { + + { + .line = __LINE__, + .steps = + { + { + .frame_spec = { .off = 0, .len = 10, .fin = 0, }, + .insert_res = 0, + }, + }, + .n_steps = 1, + .buf = "0123456789", + .sz = 10, + .second_read = -1, + }, + + { + .line = __LINE__, + .steps = + { + { + .frame_spec = { .off = 0, .len = 5, .fin = 0, }, + .insert_res = 0, + }, + { + .frame_spec = { .off = 0, .len = 10, .fin = 0, }, + .insert_res = 0, + }, + }, + .n_steps = 2, + .buf = "0123456789", + .sz = 10, + .second_read = -1, + }, + + { + .line = __LINE__, + .steps = + { + { + .frame_spec = { .off = 1, .len = 9, .fin = 0, }, + .insert_res = 0, + }, + { + .frame_spec = { .off = 1, .len = 9, .fin = 1, }, + .insert_res = 0, + }, + { + .frame_spec = { .off = 0, .len = 2, .fin = 0, }, + .insert_res = 0, + }, + { + .frame_spec = { .off = 2, .len = 6, .fin = 0, }, + .insert_res = 0, + }, + }, + .n_steps = 4, + .buf = "0123456789", + .sz = 10, + .second_read = 0, + }, + + { + .line = __LINE__, + .steps = + { + { + .frame_spec = { .off = 1, .len = 9, .fin = 1, }, + .insert_res = 0, + }, + { + .frame_spec = { .off = 0, .len = 2, .fin = 0, }, + .insert_res = 0, + }, + }, + .n_steps = 2, + .buf = "0123456789", + .sz = 10, + .second_read = 0, + }, + + { + .line = __LINE__, + .steps = + { + { .frame_spec = { .off = 1, .len = 6, .fin = 0, }, .insert_res = 0, }, + { .frame_spec = { .off = 2, .len = 1, .fin = 0, }, .insert_res = 0, }, + { .frame_spec = { .off = 8, .len = 2, .fin = 1, }, .insert_res = 0, }, + { .frame_spec = { .off = 3, .len = 2, .fin = 0, }, .insert_res = 0, }, + { .frame_spec = { .off = 4, .len = 1, .fin = 0, }, .insert_res = 0, }, + { .frame_spec = { .off = 5, .len = 2, .fin = 0, }, .insert_res = 0, }, + { .frame_spec = { .off = 6, .len = 1, .fin = 0, }, .insert_res = 0, }, + { .frame_spec = { .off = 7, .len = 3, .fin = 0, }, .insert_res = 0, }, + { .frame_spec = { .off = 9, .len = 1, .fin = 1, }, .insert_res = 0, }, + { .frame_spec = { .off = 0, .len = 2, .fin = 0, }, .insert_res = 0, }, + }, + .n_steps = 10, + .buf = "0123456789", + .sz = 10, + .second_read = 0, + }, + + }; + + init_test_objs(&tobjs, 0x4000, 0x4000, NULL); + + const struct overlap_test *test; + for (test = tests; test < tests + sizeof(tests) / sizeof(tests[0]); ++test) + { + LSQ_NOTICE("executing stream overlap test, line %d", test->line); + stream = new_stream(&tobjs, test->line); + + const struct frame_step *step; + for (step = test->steps; step < test->steps + test->n_steps; ++step) + { + frame = new_frame_in_ext(&tobjs, step->frame_spec.off, + step->frame_spec.len, step->frame_spec.fin, + &data[step->frame_spec.off]); + s = lsquic_stream_frame_in(stream, frame); + assert(s == step->insert_res); + } + + ssize_t nread = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(nread == test->sz); + assert(0 == memcmp(data, buf, test->sz)); + nread = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(nread == test->second_read); + if (nread < 0) + assert(EWOULDBLOCK == errno); + + lsquic_stream_destroy(stream); + } + + { + LSQ_NOTICE("Special test on line %d", __LINE__); + stream = new_stream(&tobjs, __LINE__); + frame = new_frame_in_ext(&tobjs, 0, 5, 0, &data[0]); + s = lsquic_stream_frame_in(stream, frame); + assert(0 == s); + ssize_t nread = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(nread == 5); + assert(0 == memcmp(data, buf, 5)); + nread = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(nread < 0); + assert(EWOULDBLOCK == errno); + /* Test that a frame with FIN that ends before the read offset + * results in an error. + */ + frame = new_frame_in_ext(&tobjs, 0, 3, 1, &data[0]); + s = lsquic_stream_frame_in(stream, frame); + assert(s < 0); + /* This frame should be a DUP: the next read should still return -1. + */ + frame = new_frame_in_ext(&tobjs, 3, 2, 0, &data[3]); + s = lsquic_stream_frame_in(stream, frame); + assert(s == 0); + nread = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(nread < 0); + assert(EWOULDBLOCK == errno); + /* This frame should be an overlap: FIN should register and + * the next read should return 0. + */ + frame = new_frame_in_ext(&tobjs, 0, 5, 1, &data[0]); + s = lsquic_stream_frame_in(stream, frame); + assert(s == 0); + nread = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(nread == 0); + lsquic_stream_destroy(stream); + } + + { + LSQ_NOTICE("Special test for bug 106 on line %d", __LINE__); + char *const data = malloc(5862); + init_buf(data, 5862); + assert(data); + stream = new_stream(&tobjs, __LINE__); + /* Insert four frames: */ + frame = new_frame_in_ext(&tobjs, 0, 1173, 0, data); + s = lsquic_stream_frame_in(stream, frame); + assert(0 == s); + frame = new_frame_in_ext(&tobjs, 1173, 1173, 0, data + 1173); + s = lsquic_stream_frame_in(stream, frame); + assert(0 == s); + frame = new_frame_in_ext(&tobjs, 2346, 1172, 0, data + 2346); + s = lsquic_stream_frame_in(stream, frame); + assert(0 == s); + frame = new_frame_in_ext(&tobjs, 3518, 578, 0, data + 3518); + s = lsquic_stream_frame_in(stream, frame); + assert(0 == s); + /* Read all data: */ + ssize_t nread = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(nread == 4096); + assert(0 == memcmp(data, buf, 4096)); + nread = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(nread < 0); + assert(EWOULDBLOCK == errno); + /* Insert overlapped frame and one more: */ + frame = new_frame_in_ext(&tobjs, 3518, 1172, 0, data + 3518); + s = lsquic_stream_frame_in(stream, frame); + assert(0 == s); + frame = new_frame_in_ext(&tobjs, 4690, 1172, 0, data + 4690); + s = lsquic_stream_frame_in(stream, frame); + assert(0 == s); + /* Verify that continued read from offset 4096 succeeds and + * contains expected data: + */ + nread = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(nread == 5862 - 4096); + assert(0 == memcmp(data + 4096, buf, 5862 - 4096)); + lsquic_stream_destroy(stream); + free(data); + } + + deinit_test_objs(&tobjs); +} + + +static void +test_insert_edge_cases (void) +{ + struct test_objs tobjs; + lsquic_stream_t *stream; + stream_frame_t *frame; + int s; + ssize_t nread; + const char data[] = "1234567890"; + enum stream_state_receiving ssr; + unsigned buf[0x1000]; + + init_test_objs(&tobjs, 0x4000, 0x4000, NULL); + + { + stream = new_stream(&tobjs, 123); + frame = new_frame_in_ext(&tobjs, 0, 6, 1, &data[0]); + s = lsquic_stream_frame_in(stream, frame); + assert(("Inserted frame #1", 0 == s)); + ssr = lsquic_stream_receiving_state(stream); + assert(SSR_DATA_RECVD == ssr); + /* Invalid frame: different FIN location */ + frame = new_frame_in_ext(&tobjs, 3, 2, 1, &data[3]); + s = lsquic_stream_frame_in(stream, frame); + assert(("Invalid frame: different FIN location", -1 == s)); + lsquic_stream_destroy(stream); + } + + { + stream = new_stream(&tobjs, 123); + frame = new_frame_in_ext(&tobjs, 0, 6, 0, &data[0]); + s = lsquic_stream_frame_in(stream, frame); + assert(("Inserted frame #1", 0 == s)); + nread = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(6 == nread); + frame = new_frame_in_ext(&tobjs, 6, 0, 0, &data[6]); + s = lsquic_stream_frame_in(stream, frame); + assert(("Duplicate frame", 0 == s)); + nread = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(nread == -1 && errno == EWOULDBLOCK); + frame = new_frame_in_ext(&tobjs, 6, 0, 1, &data[6]); + s = lsquic_stream_frame_in(stream, frame); + assert(("Frame OK", 0 == s)); + nread = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(nread == 0); /* Hit EOF */ + frame = new_frame_in_ext(&tobjs, 6, 0, 1, &data[6]); + s = lsquic_stream_frame_in(stream, frame); + assert(("Duplicate FIN frame", 0 == s)); + lsquic_stream_destroy(stream); + } + + { + stream = new_stream(&tobjs, 123); + frame = new_frame_in_ext(&tobjs, 6, 0, 1, &data[6]); + s = lsquic_stream_frame_in(stream, frame); + assert(("Frame OK", 0 == s)); + ssr = lsquic_stream_receiving_state(stream); + assert(SSR_SIZE_KNOWN == ssr); + frame = new_frame_in_ext(&tobjs, 0, 6, 0, &data[0]); + s = lsquic_stream_frame_in(stream, frame); + assert(("Inserted frame #1", 0 == s)); + nread = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(6 == nread); + frame = new_frame_in_ext(&tobjs, 6, 0, 0, &data[6]); + s = lsquic_stream_frame_in(stream, frame); + assert(("Duplicate frame", 0 == s)); + nread = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(nread == 0); /* Hit EOF */ + frame = new_frame_in_ext(&tobjs, 6, 0, 1, &data[6]); + s = lsquic_stream_frame_in(stream, frame); + assert(("Duplicate FIN frame", 0 == s)); + lsquic_stream_destroy(stream); + } + + { + stream = new_stream(&tobjs, 123); + frame = new_frame_in_ext(&tobjs, 0, 6, 1, &data[0]); + s = lsquic_stream_frame_in(stream, frame); + assert(("Inserted frame #1", 0 == s)); + nread = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(6 == nread); + nread = lsquic_stream_read(stream, buf, sizeof(buf)); + assert(0 == nread); /* Hit EOF */ + frame = new_frame_in_ext(&tobjs, 0, 6, 1, &data[0]); + s = lsquic_stream_frame_in(stream, frame); + assert(("Inserted duplicate frame", 0 == s)); + lsquic_stream_destroy(stream); + } + + deinit_test_objs(&tobjs); +} + + +/* When HTTP stream is closed unexpectedly, send a reset instead of creating + * an empty STREAM frame with a FIN bit set. + */ +static void +test_unexpected_http_close (void) +{ + struct test_objs tobjs; + lsquic_stream_t *stream; + int s; + + stream_ctor_flags |= SCF_HTTP; + init_test_objs(&tobjs, 0x4000, 0x4000, NULL); + + stream = new_stream(&tobjs, 123); + assert(stream->sm_bflags & SMBF_USE_HEADERS); /* Self-check */ + s = lsquic_stream_close(stream); + assert(s == 0); + assert(stream->sm_qflags & SMQF_SEND_RST); + assert(stream->sm_qflags & SMQF_CALL_ONCLOSE); + assert(!lsquic_send_ctl_has_buffered(&tobjs.send_ctl)); + + lsquic_stream_destroy(stream); + deinit_test_objs(&tobjs); + stream_ctor_flags &= ~SCF_HTTP; +} + + +static void +test_writing_to_stream_schedule_stream_packets_immediately (void) +{ + ssize_t nw; + struct test_objs tobjs; + struct lsquic_conn *const lconn = &tobjs.lconn; + struct lsquic_stream *stream; + int s; + unsigned char buf[0x1000]; + struct lsquic_conn_cap *const conn_cap = &tobjs.conn_pub.conn_cap; + + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + + init_test_objs(&tobjs, 0x4000, 0x4000, NULL); + n_closed = 0; + stream = new_stream(&tobjs, 123); + assert(("Stream initialized", stream)); + const struct test_ctx *const test_ctx_local = tobjs.stream_if_ctx; + assert(("on_new_stream called correctly", stream == test_ctx_local->stream)); + assert(LSQUIC_STREAM_DEFAULT_PRIO == lsquic_stream_priority(stream)); + + assert(lconn == lsquic_stream_conn(stream)); + + nw = lsquic_stream_write(stream, "Dude, where is", 14); + assert(("14 bytes written correctly", nw == 14)); + + assert(("not packetized", + 0 == lsquic_send_ctl_n_scheduled(&tobjs.send_ctl))); + /* Cap hit is taken immediately, even for flushed data */ + assert(("connection cap is reduced by 14 bytes", + lsquic_conn_cap_avail(conn_cap) == 0x4000 - 14)); + s = lsquic_stream_flush(stream); + assert(0 == s); + assert(("packetized -- 1 packet", + 1 == lsquic_send_ctl_n_scheduled(&tobjs.send_ctl))); + + nw = lsquic_stream_write(stream, " my car?!", 9); + assert(("9 bytes written correctly", nw == 9)); + s = lsquic_stream_flush(stream); + assert(0 == s); + assert(("packetized -- still 1 packet", + 1 == lsquic_send_ctl_n_scheduled(&tobjs.send_ctl))); + + assert(("connection cap is reduced by 23 bytes", + lsquic_conn_cap_avail(conn_cap) == 0x4000 - 23)); + + nw = read_from_scheduled_packets(&tobjs.send_ctl, stream->id, buf, + sizeof(buf), 0, NULL, 0); + assert(23 == nw); + assert(0 == memcmp(buf, "Dude, where is my car?!", 23)); + assert(("cannot reduce max_send below what's been sent already", + -1 == lsquic_stream_set_max_send_off(stream, 15))); + assert(("cannot reduce max_send below what's been sent already #2", + -1 == lsquic_stream_set_max_send_off(stream, 22))); + assert(("can set to the same value...", + 0 == lsquic_stream_set_max_send_off(stream, 23))); + assert(("...or larger", + 0 == lsquic_stream_set_max_send_off(stream, 23000))); + lsquic_stream_destroy(stream); + assert(("on_close called", 1 == n_closed)); + deinit_test_objs(&tobjs); +} + + +static void +test_writing_to_stream_outside_callback (void) +{ + ssize_t nw; + struct test_objs tobjs; + struct lsquic_conn *const lconn = &tobjs.lconn; + struct lsquic_stream *stream; + int s; + unsigned char buf[0x1000]; + struct lsquic_conn_cap *const conn_cap = &tobjs.conn_pub.conn_cap; + + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; + g_ctl_settings.tcs_bp_type = BPT_OTHER_PRIO; + const struct buf_packet_q *const bpq = + &tobjs.send_ctl.sc_buffered_packets[g_ctl_settings.tcs_bp_type]; + + init_test_objs(&tobjs, 0x4000, 0x4000, NULL); + n_closed = 0; + stream = new_stream(&tobjs, 123); + assert(("Stream initialized", stream)); + const struct test_ctx *const test_ctx_local = tobjs.stream_if_ctx; + assert(("on_new_stream called correctly", stream == test_ctx_local->stream)); + assert(LSQUIC_STREAM_DEFAULT_PRIO == lsquic_stream_priority(stream)); + + assert(lconn == lsquic_stream_conn(stream)); + + nw = lsquic_stream_write(stream, "Dude, where is", 14); + assert(("14 bytes written correctly", nw == 14)); + + assert(("not packetized", 0 == bpq->bpq_count)); + s = lsquic_stream_flush(stream); + assert(0 == s); + assert(("packetized -- 1 packet", 1 == bpq->bpq_count)); + + nw = lsquic_stream_write(stream, " my car?!", 9); + assert(("9 bytes written correctly", nw == 9)); + s = lsquic_stream_flush(stream); + assert(0 == s); + assert(("packetized -- still 1 packet", 1 == bpq->bpq_count)); + + assert(("connection cap is reduced by 23 bytes", + lsquic_conn_cap_avail(conn_cap) == 0x4000 - 23)); + + /* Now we are magically inside the callback: */ + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, + g_ctl_settings.tcs_bp_type); + assert(("packetized -- 1 packet", + 1 == lsquic_send_ctl_n_scheduled(&tobjs.send_ctl))); + + nw = read_from_scheduled_packets(&tobjs.send_ctl, stream->id, buf, + sizeof(buf), 0, NULL, 0); + assert(23 == nw); + assert(0 == memcmp(buf, "Dude, where is my car?!", 23)); + assert(("cannot reduce max_send below what's been sent already", + -1 == lsquic_stream_set_max_send_off(stream, 15))); + assert(("cannot reduce max_send below what's been sent already #2", + -1 == lsquic_stream_set_max_send_off(stream, 22))); + assert(("can set to the same value...", + 0 == lsquic_stream_set_max_send_off(stream, 23))); + assert(("...or larger", + 0 == lsquic_stream_set_max_send_off(stream, 23000))); + lsquic_stream_destroy(stream); + assert(("on_close called", 1 == n_closed)); + deinit_test_objs(&tobjs); +} + + +static void +verify_ack (struct lsquic_packet_out *packet_out) +{ + struct packet_out_frec_iter pofi; + const struct frame_rec *frec; + unsigned short regen_sz; + enum quic_ft_bit frame_types; + + assert(packet_out->po_regen_sz > 0); + assert(packet_out->po_frame_types & (1 << QUIC_FRAME_ACK)); + + regen_sz = 0; + frame_types = 0; + for (frec = lsquic_pofi_first(&pofi, packet_out); frec; + frec = lsquic_pofi_next(&pofi)) + { + frame_types |= 1 << frec->fe_frame_type; + if (frec->fe_frame_type == QUIC_FRAME_ACK) + { + assert(frec->fe_len == 9); + assert(0 == memcmp(packet_out->po_data + frec->fe_off, "ACKACKACK", 9)); + assert(regen_sz == frec->fe_off); + regen_sz += frec->fe_len; + } + } + + assert(frame_types & (1 << QUIC_FRAME_ACK)); + assert(regen_sz == packet_out->po_regen_sz); +} + + +/* Write to buffered streams: first to low-priority, then high-priority. This + * should trigger ACK generation and move. + */ +static void +test_stealing_ack (void) +{ + ssize_t nw; + struct test_objs tobjs; + struct lsquic_conn *const lconn = &tobjs.lconn; + struct lsquic_stream *lo_stream, *hi_stream;; + int s; + const struct buf_packet_q *bpq; + + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; + g_ctl_settings.tcs_write_ack = 1; + g_ctl_settings.tcs_bp_type = BPT_OTHER_PRIO; + + init_test_objs(&tobjs, 0x4000, 0x4000, NULL); + + lo_stream = new_stream(&tobjs, 123); + assert(("Stream initialized", lo_stream)); + assert(LSQUIC_STREAM_DEFAULT_PRIO == lsquic_stream_priority(lo_stream)); + assert(lconn == lsquic_stream_conn(lo_stream)); + nw = lsquic_stream_write(lo_stream, "Dude, where is", 14); + assert(("14 bytes written correctly", nw == 14)); + s = lsquic_stream_flush(lo_stream); + assert(0 == s); + + bpq = &tobjs.send_ctl.sc_buffered_packets[g_ctl_settings.tcs_bp_type]; + verify_ack(TAILQ_FIRST(&bpq->bpq_packets)); + + g_ctl_settings.tcs_bp_type = BPT_HIGHEST_PRIO; + + hi_stream = new_stream(&tobjs, 1); + assert(("Stream initialized", hi_stream)); + assert(lconn == lsquic_stream_conn(hi_stream)); + nw = lsquic_stream_write(hi_stream, "DATA", 4); + assert(("4 bytes written correctly", nw == 4)); + s = lsquic_stream_flush(hi_stream); + assert(0 == s); + + /* ACK is moved (stolen) from low-priority stream to high-priority stream */ + /* Check old packet */ + assert(!(TAILQ_FIRST(&bpq->bpq_packets)->po_frame_types & (1 << QUIC_FRAME_ACK))); + /* Check new packet */ + bpq = &tobjs.send_ctl.sc_buffered_packets[g_ctl_settings.tcs_bp_type]; + verify_ack(TAILQ_FIRST(&bpq->bpq_packets)); + + /* And now chop regen, see if we hit any asserts there */ + lsquic_packet_out_chop_regen(TAILQ_FIRST(&bpq->bpq_packets)); + /* And now verify that ACK is gone */ + assert(!(TAILQ_FIRST(&bpq->bpq_packets)->po_frame_types & (1 << QUIC_FRAME_ACK))); + + lsquic_stream_destroy(lo_stream); + lsquic_stream_destroy(hi_stream); + deinit_test_objs(&tobjs); +} + + +static void +test_changing_pack_size (void) +{ + ssize_t nw; + struct test_objs tobjs; + struct lsquic_conn *lconn = &tobjs.lconn; + struct lsquic_stream *stream; + int s, i; + unsigned char buf[0x2000]; + size_t len; + + init_buf(buf, sizeof(buf)); + + enum lsquic_version versions_to_test[3] = + { + LSQVER_046, + LSQVER_I001, + }; + + for (i = 0; i < 3; i++) + { + g_pf = select_pf_by_ver(versions_to_test[i]); + + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; + g_ctl_settings.tcs_bp_type = BPT_OTHER_PRIO; + const struct buf_packet_q *const bpq = + &tobjs.send_ctl.sc_buffered_packets[g_ctl_settings.tcs_bp_type]; + init_test_objs(&tobjs, 0x4000, 0x4000, NULL); + n_closed = 0; + if ((1 << versions_to_test[i]) & LSQUIC_IETF_VERSIONS) + { + tobjs.ctor_flags |= SCF_IETF; + lconn->cn_flags |= LSCONN_IETF; + network_path.np_pack_size = 4096; + } + stream = new_stream(&tobjs, 5); + assert(("Stream initialized", stream)); + const struct test_ctx *const test_ctx_local = tobjs.stream_if_ctx; + assert(("on_new_stream called correctly", stream == test_ctx_local->stream)); + + len = ((1 << versions_to_test[i]) & LSQUIC_IETF_VERSIONS) ? 2048 : 1024; + nw = lsquic_stream_write(stream, buf, len); + assert(("n bytes written correctly", (size_t)nw == len)); + + assert(("not packetized", 0 == bpq->bpq_count)); + + /* IETF: shrink packet size before a flush */ + if ((1 << versions_to_test[i]) & LSQUIC_IETF_VERSIONS) + network_path.np_pack_size = 1370; + + s = lsquic_stream_flush(stream); + assert(0 == s); + + if ((1 << versions_to_test[i]) & LSQUIC_IETF_VERSIONS) + assert(("packetized -- 2 packets", 2 == bpq->bpq_count)); + else + assert(("packetized -- 1 packets", 1 == bpq->bpq_count)); + + /* IETF: expand packet size before a write */ + if ((1 << versions_to_test[i]) & LSQUIC_IETF_VERSIONS) + network_path.np_pack_size = 4096; + + len = ((1 << versions_to_test[i]) & LSQUIC_IETF_VERSIONS) ? 2048 : 1024; + nw = lsquic_stream_write(stream, buf, len); + assert(("n bytes written correctly", (size_t)nw == len)); + if ((1 << versions_to_test[i]) & LSQUIC_IETF_VERSIONS) + assert(("packetized -- 3 packets", 3 == bpq->bpq_count)); + else + assert(("packetized -- 1 packets", 1 == bpq->bpq_count)); + + s = lsquic_stream_flush(stream); + assert(0 == s); + if ((1 << versions_to_test[i]) & LSQUIC_IETF_VERSIONS) + assert(("packetized -- 3 packets", 3 == bpq->bpq_count)); + else + assert(("packetized -- 2 packets", 2 == bpq->bpq_count)); + + lsquic_stream_destroy(stream); + assert(("on_close called", 1 == n_closed)); + deinit_test_objs(&tobjs); + } + g_pf = select_pf_by_ver(LSQVER_043); +} + + +/* This tests what happens when a stream data is buffered using one packet + * size, but then packet size get smaller (which is what happens when an RTO + * occurs), and then more data is written. + * + * In particular, the write sizes in this tests are structured to make + * maybe_resize_threshold() change the threshold. + */ +static void +test_reducing_pack_size (void) +{ + ssize_t nw; + struct test_objs tobjs; + struct lsquic_conn *lconn = &tobjs.lconn; + struct lsquic_stream *stream; + int s; + unsigned i; + unsigned char buf[0x4000]; + + init_buf(buf, sizeof(buf)); + + enum lsquic_version versions_to_test[] = + { + LSQVER_050, + LSQVER_ID29, + }; + + /* Particular versions should not matter as this is tests the logic in + * stream only, but we do it for completeness. + */ + for (i = 0; i < sizeof(versions_to_test) / sizeof(versions_to_test[0]); i++) + { + g_pf = select_pf_by_ver(versions_to_test[i]); + + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + g_ctl_settings.tcs_bp_type = BPT_OTHER_PRIO; + init_test_objs(&tobjs, 0x4000, 0x4000, NULL); + n_closed = 0; + if ((1 << versions_to_test[i]) & LSQUIC_IETF_VERSIONS) + { + tobjs.ctor_flags |= SCF_IETF; + lconn->cn_flags |= LSCONN_IETF; + } + network_path.np_pack_size = 2000; + stream = new_stream(&tobjs, 5); + assert(("Stream initialized", stream)); + const struct test_ctx *const test_ctx_local = tobjs.stream_if_ctx; + assert(("on_new_stream called correctly", stream == test_ctx_local->stream)); + + nw = lsquic_stream_write(stream, buf, 1400); + assert(stream->sm_n_allocated <= 2000); + assert(stream->sm_n_buffered > 0); + assert(("n bytes written correctly", (size_t)nw == 1400)); + + /* Shrink packet size */ + network_path.np_pack_size = 1300; + + nw = lsquic_stream_write(stream, buf, 3000); + assert(stream->sm_n_allocated <= 1300); + assert(stream->sm_n_buffered > 0); + assert(("n bytes written correctly", (size_t)nw == 3000)); + + s = lsquic_stream_flush(stream); + assert(stream->sm_n_buffered == 0); + assert(0 == s); + + lsquic_stream_destroy(stream); + assert(("on_close called", 1 == n_closed)); + deinit_test_objs(&tobjs); + } + g_pf = select_pf_by_ver(LSQVER_043); +} + + +/* Test window update logic, connection-limited */ +static void +test_window_update1 (void) +{ + ssize_t nw; + struct test_objs tobjs; + struct lsquic_stream *stream; + unsigned char buf[0x1000]; + lsquic_packet_out_t *packet_out; + struct lsquic_conn_cap *const conn_cap = &tobjs.conn_pub.conn_cap; + int s; + + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + + init_test_objs(&tobjs, 0x4000, 0x4000, NULL); + n_closed = 0; + stream = new_stream_ext(&tobjs, 123, 3); + nw = lsquic_stream_write(stream, "1234567890", 10); + assert(("lsquic_stream_write is limited by the send window", 3 == nw)); + assert(("cc_tosend is updated immediately", + 3 == conn_cap->cc_sent)); + s = lsquic_stream_flush(stream); + assert(0 == s); + assert(("cc_tosend is updated when limited by connection", + 3 == conn_cap->cc_sent)); + nw = read_from_scheduled_packets(&tobjs.send_ctl, stream->id, buf, + sizeof(buf), 0, NULL, 0); + assert(nw == 3); + assert(0 == memcmp(buf, "123", 3)); + + /* Pretend we sent out a packet: */ + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs.send_ctl, 0); + lsquic_send_ctl_sent_packet(&tobjs.send_ctl, packet_out); + + lsquic_stream_window_update(stream, 20); + nw = lsquic_stream_write(stream, "4567890", 7); + assert(("lsquic_stream_write: wrote remainig 7 bytes", 7 == nw)); + s = lsquic_stream_flush(stream); + assert(0 == s); + + /* Verify written data: */ + nw = read_from_scheduled_packets(&tobjs.send_ctl, stream->id, buf, + sizeof(buf), 3, NULL, 0); + assert(nw == 7); + assert(0 == memcmp(buf, "4567890", 7)); + + lsquic_stream_destroy(stream); + assert(("on_close called", 1 == n_closed)); + deinit_test_objs(&tobjs); +} + + +/* Test two: large frame in the middle */ +static void +test_bad_packbits_guess_2 (void) +{ + lsquic_packet_out_t *packet_out; + ssize_t nw; + struct test_objs tobjs; + struct lsquic_stream *streams[3]; + char buf[0x1000]; + unsigned char buf_out[0x1000]; + int s, fin; + + init_buf(buf, sizeof(buf)); + + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; + g_ctl_settings.tcs_guess_packno_bits = GQUIC_PACKNO_LEN_1; + + init_test_objs(&tobjs, 0x1000, 0x1000, NULL); + streams[0] = new_stream(&tobjs, 5); + streams[1] = new_stream(&tobjs, 7); + streams[2] = new_stream(&tobjs, 9); + + /* Perfrom writes on the three streams. This is tuned to fill a single + * packet completely -- we check this later in this function. + */ + s = lsquic_stream_shutdown(streams[0], 1); + assert(s == 0); + nw = lsquic_stream_write(streams[1], buf, 1337); + assert(nw == 1337); + s = lsquic_stream_flush(streams[1]); + assert(0 == s); + nw = lsquic_stream_write(streams[2], buf + 1337, 1); + assert(nw == 1); + s = lsquic_stream_shutdown(streams[2], 1); + assert(s == 0); + + /* Verify that we got one packet filled to the top: */ + const struct buf_packet_q *const bpq = + &tobjs.send_ctl.sc_buffered_packets[g_ctl_settings.tcs_bp_type]; + assert(("packetized -- 1 packet", 1 == bpq->bpq_count)); + packet_out = TAILQ_FIRST(&bpq->bpq_packets); + assert(0 == lsquic_packet_out_avail(packet_out)); + + assert(1 == streams[0]->n_unacked); + assert(1 == streams[1]->n_unacked); + assert(1 == streams[2]->n_unacked); + + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + g_ctl_settings.tcs_calc_packno_bits = GQUIC_PACKNO_LEN_6; + s = lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, + g_ctl_settings.tcs_bp_type); + assert(2 == lsquic_send_ctl_n_scheduled(&tobjs.send_ctl)); + + /* Verify written data: */ + nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[0]->id, buf_out, + sizeof(buf_out), 0, &fin, 0); + assert(nw == 0); + assert(fin); + nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[1]->id, buf_out, + sizeof(buf_out), 0, &fin, 0); + assert(nw == 1337); + assert(!fin); + assert(0 == memcmp(buf, buf_out, 1337)); + nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[2]->id, buf_out, + sizeof(buf_out), 0, &fin, 0); + assert(nw == 1); + assert(fin); + assert(0 == memcmp(buf + 1337, buf_out, 1)); + + /* Verify packets */ + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs.send_ctl, 0); + assert(lsquic_packet_out_packno_bits(packet_out) == GQUIC_PACKNO_LEN_6); + assert(1 == packet_out->po_packno); + assert(packet_out->po_frame_types & (1 << QUIC_FRAME_STREAM)); + lsquic_send_ctl_sent_packet(&tobjs.send_ctl, packet_out); + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs.send_ctl, 0); + assert(lsquic_packet_out_packno_bits(packet_out) == GQUIC_PACKNO_LEN_6); + assert(2 == packet_out->po_packno); + assert(packet_out->po_frame_types & (1 << QUIC_FRAME_STREAM)); + lsquic_send_ctl_sent_packet(&tobjs.send_ctl, packet_out); + + assert(1 == streams[0]->n_unacked); + assert(1 == streams[1]->n_unacked); + assert(1 == streams[2]->n_unacked); + ack_packet(&tobjs.send_ctl, 1); + assert(0 == streams[0]->n_unacked); + assert(0 == streams[1]->n_unacked); + assert(1 == streams[2]->n_unacked); + ack_packet(&tobjs.send_ctl, 2); + assert(0 == streams[0]->n_unacked); + assert(0 == streams[1]->n_unacked); + assert(0 == streams[2]->n_unacked); + + lsquic_stream_destroy(streams[0]); + lsquic_stream_destroy(streams[1]); + lsquic_stream_destroy(streams[2]); + deinit_test_objs(&tobjs); +} + + +/* Test three: split large STREAM frame into two halves. The second half + * goes into new packet. + */ +static void +test_bad_packbits_guess_3 (void) +{ + lsquic_packet_out_t *packet_out; + ssize_t nw; + struct test_objs tobjs; + struct lsquic_stream *streams[1]; + char buf[0x1000]; + unsigned char buf_out[0x1000]; + int s, fin; + + init_buf(buf, sizeof(buf)); + + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; + g_ctl_settings.tcs_guess_packno_bits = GQUIC_PACKNO_LEN_1; + + init_test_objs(&tobjs, 0x1000, 0x1000, NULL); + streams[0] = new_stream(&tobjs, 5); + + nw = lsquic_stream_write(streams[0], buf, + /* Use odd number to test halving logic: */ 1343); + assert(nw == 1343); + s = lsquic_stream_shutdown(streams[0], 1); + assert(s == 0); + + /* Verify that we got one packet filled to the top (minus one byte) */ + const struct buf_packet_q *const bpq = + &tobjs.send_ctl.sc_buffered_packets[g_ctl_settings.tcs_bp_type]; + assert(("packetized -- 1 packet", 1 == bpq->bpq_count)); + packet_out = TAILQ_FIRST(&bpq->bpq_packets); + assert(1 == lsquic_packet_out_avail(packet_out)); + + assert(1 == streams[0]->n_unacked); + + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + g_ctl_settings.tcs_calc_packno_bits = GQUIC_PACKNO_LEN_6; + s = lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, + g_ctl_settings.tcs_bp_type); + assert(2 == lsquic_send_ctl_n_scheduled(&tobjs.send_ctl)); + + /* Verify written data: */ + nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[0]->id, buf_out, + sizeof(buf_out), 0, &fin, 0); + assert(nw == 1343); + assert(fin); + assert(0 == memcmp(buf, buf_out, 1343)); + + /* Verify packets */ + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs.send_ctl, 0); + assert(lsquic_packet_out_packno_bits(packet_out) == GQUIC_PACKNO_LEN_6); + assert(1 == packet_out->po_packno); + assert(packet_out->po_frame_types & (1 << QUIC_FRAME_STREAM)); + lsquic_send_ctl_sent_packet(&tobjs.send_ctl, packet_out); + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs.send_ctl, 0); + assert(lsquic_packet_out_packno_bits(packet_out) == GQUIC_PACKNO_LEN_6); + assert(2 == packet_out->po_packno); + assert(packet_out->po_frame_types & (1 << QUIC_FRAME_STREAM)); + lsquic_send_ctl_sent_packet(&tobjs.send_ctl, packet_out); + + assert(2 == streams[0]->n_unacked); + ack_packet(&tobjs.send_ctl, 1); + assert(1 == streams[0]->n_unacked); + ack_packet(&tobjs.send_ctl, 2); + assert(0 == streams[0]->n_unacked); + + lsquic_stream_destroy(streams[0]); + deinit_test_objs(&tobjs); +} + + +/* Test resizing of buffered packets: + * 1. Write data to buffered packets + * 2. Reduce packet size + * 3. Resize buffered packets + * 4. Schedule them + * 5. Check contents + */ +static void +test_resize_buffered (void) +{ +#ifndef NDEBUG + ssize_t nw; + struct test_objs tobjs; + struct lsquic_stream *streams[1]; + const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_I001); + char buf[0x10000]; + unsigned char buf_out[0x10000]; + int s, fin; + unsigned packet_counts[2]; + + init_buf(buf, sizeof(buf)); + + lsquic_send_ctl_set_max_bpq_count(UINT_MAX); + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; + + init_test_objs(&tobjs, 0x100000, 0x100000, pf); + tobjs.send_ctl.sc_flags |= SC_IETF; /* work around asserts lsquic_send_ctl_resize() */ + network_path.np_pack_size = 4096; + streams[0] = new_stream_ext(&tobjs, 8, 0x100000); + + nw = lsquic_stream_write(streams[0], buf, sizeof(buf)); + assert(nw == sizeof(buf)); + s = lsquic_stream_shutdown(streams[0], 1); + assert(s == 0); + packet_counts[0] = tobjs.send_ctl.sc_buffered_packets[g_ctl_settings.tcs_bp_type].bpq_count; + + assert(streams[0]->n_unacked > 0); + + network_path.np_pack_size = 1234; + lsquic_send_ctl_resize(&tobjs.send_ctl); + packet_counts[1] = tobjs.send_ctl.sc_buffered_packets[g_ctl_settings.tcs_bp_type].bpq_count; + assert(packet_counts[1] > packet_counts[0]); + + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + s = lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, + g_ctl_settings.tcs_bp_type); + assert(lsquic_send_ctl_n_scheduled(&tobjs.send_ctl) > 0); + + /* Verify written data: */ + nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[0]->id, buf_out, + sizeof(buf_out), 0, &fin, 0); + assert(nw == sizeof(buf)); + assert(fin); + assert(0 == memcmp(buf, buf_out, nw)); + + lsquic_stream_destroy(streams[0]); + deinit_test_objs(&tobjs); + lsquic_send_ctl_set_max_bpq_count(10); +#endif +} + + +/* Test resizing of buffered packets: + * 1. Write data to buffered packets + * 2. Schedule them + * 3. Reduce packet size + * 4. Resize packets + * 5. Check contents + */ +static void +test_resize_scheduled (void) +{ +#ifndef NDEBUG // lsquic_send_ctl_set_max_bpq_count is debug only + ssize_t nw; + struct test_objs tobjs; + struct lsquic_stream *streams[1]; + const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_I001); + char buf[0x10000]; + unsigned char buf_out[0x10000]; + int s, fin; + unsigned packet_counts[2]; + + init_buf(buf, sizeof(buf)); + + lsquic_send_ctl_set_max_bpq_count(UINT_MAX); + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; + + init_test_objs(&tobjs, 0x100000, 0x100000, pf); + tobjs.send_ctl.sc_flags |= SC_IETF; /* work around asserts lsquic_send_ctl_resize() */ + network_path.np_pack_size = 4096; + streams[0] = new_stream_ext(&tobjs, 8, 0x100000); + + nw = lsquic_stream_write(streams[0], buf, sizeof(buf)); + assert(nw == sizeof(buf)); + s = lsquic_stream_shutdown(streams[0], 1); + assert(s == 0); + + assert(streams[0]->n_unacked > 0); + + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + s = lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, + g_ctl_settings.tcs_bp_type); + packet_counts[0] = lsquic_send_ctl_n_scheduled(&tobjs.send_ctl); + assert(packet_counts[0] > 0); + + network_path.np_pack_size = 1234; + lsquic_send_ctl_resize(&tobjs.send_ctl); + packet_counts[1] = lsquic_send_ctl_n_scheduled(&tobjs.send_ctl); + assert(packet_counts[1] > packet_counts[0]); + + /* Verify written data: */ + nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[0]->id, buf_out, + sizeof(buf_out), 0, &fin, 0); + assert(nw == sizeof(buf)); + assert(fin); + assert(0 == memcmp(buf, buf_out, nw)); + + lsquic_stream_destroy(streams[0]); + deinit_test_objs(&tobjs); + lsquic_send_ctl_set_max_bpq_count(10); +#endif +} + + +struct packetization_test_stream_ctx +{ + const unsigned char *buf; + unsigned len, off, write_size; +}; + + +static lsquic_stream_ctx_t * +packetization_on_new_stream (void *stream_if_ctx, lsquic_stream_t *stream) +{ + lsquic_stream_wantwrite(stream, 1); + return stream_if_ctx; +} + + +static void +packetization_on_close (lsquic_stream_t *stream, lsquic_stream_ctx_t *st_h) +{ +} + + +#define RANDOM_WRITE_SIZE ~0U + +static unsigned +calc_n_to_write (unsigned write_size) +{ + if (write_size == RANDOM_WRITE_SIZE) + return rand() % 1000 + 1; + else + return write_size; +} + + +static void +packetization_write_as_much_as_you_can (lsquic_stream_t *stream, + lsquic_stream_ctx_t *ctx) +{ + struct packetization_test_stream_ctx *const pack_ctx = (void *) ctx; + unsigned n_to_write; + ssize_t n_written; + int s; + + while (pack_ctx->off < pack_ctx->len) + { + n_to_write = calc_n_to_write(pack_ctx->write_size); + if (n_to_write > pack_ctx->len - pack_ctx->off) + n_to_write = pack_ctx->len - pack_ctx->off; + n_written = lsquic_stream_write(stream, pack_ctx->buf + pack_ctx->off, + n_to_write); + assert(n_written >= 0); + if (n_written == 0) + break; + pack_ctx->off += n_written; + } + + s = lsquic_stream_flush(stream); + assert(s == 0); + lsquic_stream_wantwrite(stream, 0); +} + + +static void +packetization_perform_one_write (lsquic_stream_t *stream, + lsquic_stream_ctx_t *ctx) +{ + struct packetization_test_stream_ctx *const pack_ctx = (void *) ctx; + unsigned n_to_write; + ssize_t n_written; + + n_to_write = calc_n_to_write(pack_ctx->write_size); + if (n_to_write > pack_ctx->len - pack_ctx->off) + n_to_write = pack_ctx->len - pack_ctx->off; + n_written = lsquic_stream_write(stream, pack_ctx->buf + pack_ctx->off, + n_to_write); + assert(n_written >= 0); + pack_ctx->off += n_written; + if (n_written == 0) + lsquic_stream_wantwrite(stream, 0); +} + + +static const struct lsquic_stream_if packetization_inside_once_stream_if = { + .on_new_stream = packetization_on_new_stream, + .on_close = packetization_on_close, + .on_write = packetization_write_as_much_as_you_can, +}; + + +static const struct lsquic_stream_if packetization_inside_many_stream_if = { + .on_new_stream = packetization_on_new_stream, + .on_close = packetization_on_close, + .on_write = packetization_perform_one_write, +}; + + +static void +test_packetization (int schedule_stream_packets_immediately, int dispatch_once, + unsigned write_size, unsigned first_stream_sz) +{ + struct test_objs tobjs; + struct lsquic_stream *streams[2]; + size_t nw; + int fin; + unsigned stream_ids[2]; + unsigned char buf[0x8000]; + unsigned char buf_out[0x8000]; + + struct packetization_test_stream_ctx packet_stream_ctx = + { + .buf = buf, + .off = 0, + .len = sizeof(buf), + .write_size = write_size, + }; + + init_buf(buf, sizeof(buf)); + + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = schedule_stream_packets_immediately; + + init_test_objs(&tobjs, + /* Test limits a bit while we are at it: */ + sizeof(buf) - 1, sizeof(buf) - 1, NULL); + tobjs.stream_if_ctx = &packet_stream_ctx; + + if (schedule_stream_packets_immediately) + { + if (dispatch_once) + { + tobjs.stream_if = &packetization_inside_once_stream_if; + tobjs.ctor_flags |= SCF_DISP_RW_ONCE; + } + else + tobjs.stream_if = &packetization_inside_many_stream_if; + } + else + /* Need this for on_new_stream() callback not to mess with + * the context, otherwise this is not used. + */ + tobjs.stream_if = &packetization_inside_many_stream_if; + + if (g_use_crypto_ctor) + { + stream_ids[0] = ENC_LEV_INIT; + stream_ids[1] = ENC_LEV_HSK; + } + else + { + stream_ids[0] = 7; + stream_ids[1] = 5; + } + + streams[0] = new_stream(&tobjs, stream_ids[0]); + streams[1] = new_stream_ext(&tobjs, stream_ids[1], sizeof(buf) - 1); + + if (first_stream_sz) + { + lsquic_stream_write(streams[0], buf, first_stream_sz); + lsquic_stream_flush(streams[0]); + } + + if (schedule_stream_packets_immediately) + { + lsquic_stream_dispatch_write_events(streams[1]); + lsquic_stream_flush(streams[1]); + } + else + { + packetization_write_as_much_as_you_can(streams[1], + (void *) &packet_stream_ctx); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, BPT_HIGHEST_PRIO); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; + } + + if (!g_use_crypto_ctor) + assert(packet_stream_ctx.off == packet_stream_ctx.len - first_stream_sz - 1); + + /* Verify written data: */ + nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[1]->id, buf_out, + sizeof(buf_out), 0, &fin, 1); + if (!g_use_crypto_ctor) + { + assert(nw == sizeof(buf) - first_stream_sz - 1); + assert(!fin); + assert(0 == memcmp(buf, buf_out, sizeof(buf) - first_stream_sz - 1)); + } + else + { + assert(sizeof(buf) == nw); + assert(0 == memcmp(buf, buf_out, nw)); + } + + lsquic_stream_destroy(streams[0]); + lsquic_stream_destroy(streams[1]); + deinit_test_objs(&tobjs); +} + + +/* Test condition when the room necessary to write a STREAM frame to a packet + * is miscalculated and a brand-new packet has to be allocated. + * + * This does not affect IETF QUIC because the STREAM frame uses varint data + * length representation and thus uses just a single byte to represent the + * length of a 1-byte stream data chunk. + */ +static void +test_cant_fit_frame (const struct parse_funcs *pf) +{ + struct test_objs tobjs; + struct lsquic_stream *streams[2]; + struct lsquic_packet_out *packet_out; + size_t pad_len, rem, nr; + int fin, s; + const char dude[] = "Dude, where is my car?!"; + unsigned char buf_out[100]; + + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; + + init_test_objs(&tobjs, 0x8000, 0x8000, pf); + + streams[0] = new_stream(&tobjs, 5); + streams[1] = new_stream(&tobjs, 7); + + /* Allocate a packet and pad it so just a few bytes remain to trigger + * the condition we're after. + */ + lsquic_stream_write(streams[0], dude, sizeof(dude) - 1); + lsquic_stream_flush(streams[0]); + + rem = pf->pf_calc_stream_frame_header_sz(streams[1]->id, 0, 1) + + 1 /* We'll write one byte */ + + 1 /* This triggers the refit condition */ + ; + + packet_out = TAILQ_FIRST(&tobjs.send_ctl.sc_buffered_packets[0].bpq_packets); + assert(NULL == TAILQ_NEXT(packet_out, po_next)); + pad_len = packet_out->po_n_alloc - packet_out->po_data_sz - rem; + memset(packet_out->po_data + packet_out->po_data_sz, 0, pad_len); + packet_out->po_data_sz += pad_len; + + lsquic_stream_write(streams[1], "A", 1); + s = lsquic_stream_flush(streams[1]); + assert(0 == s); + /* Allocated another packet */ + assert(TAILQ_NEXT(packet_out, po_next)); + + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, BPT_HIGHEST_PRIO); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; + + /* Verify written data: */ + nr = read_from_scheduled_packets(&tobjs.send_ctl, streams[0]->id, buf_out, + sizeof(buf_out), 0, &fin, 1); + assert(nr == sizeof(dude) - 1); + assert(!fin); + assert(0 == memcmp(dude, buf_out, sizeof(dude) - 1)); + nr = read_from_scheduled_packets(&tobjs.send_ctl, streams[1]->id, buf_out, + sizeof(buf_out), 0, &fin, 1); + assert(nr == 1); + assert(!fin); + assert(buf_out[0] == 'A'); + + lsquic_stream_destroy(streams[0]); + lsquic_stream_destroy(streams[1]); + deinit_test_objs(&tobjs); +} + + +/* Test window update logic, not connection limited */ +static void +test_window_update2 (void) +{ + ssize_t nw; + int s; + struct test_objs tobjs; + struct lsquic_stream *stream; + lsquic_packet_out_t *packet_out; + struct lsquic_conn_cap *const conn_cap = &tobjs.conn_pub.conn_cap; + unsigned char buf[0x1000]; + + init_test_objs(&tobjs, 0x4000, 0x4000, NULL); + n_closed = 0; + stream = new_stream_ext(&tobjs, 1, 3); + nw = lsquic_stream_write(stream, "1234567890", 10); + lsquic_stream_flush(stream); + assert(("lsquic_stream_write is limited by the send window", 3 == nw)); + s = lsquic_stream_flush(stream); + assert(0 == s); + assert(("cc_tosend is not updated when not limited by connection", + 0 == conn_cap->cc_sent)); + assert(stream->sm_qflags & SMQF_SEND_BLOCKED); + nw = read_from_scheduled_packets(&tobjs.send_ctl, stream->id, buf, + sizeof(buf), 0, NULL, 0); + assert(nw == 3); + assert(0 == memcmp(buf, "123", 3)); + + /* Pretend we sent out a packet: */ + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs.send_ctl, 0); + lsquic_send_ctl_sent_packet(&tobjs.send_ctl, packet_out); + + lsquic_stream_window_update(stream, 20); + nw = lsquic_stream_write(stream, "4567890", 7); + assert(("lsquic_stream_write: wrote remainig 7 bytes", 7 == nw)); + s = lsquic_stream_flush(stream); + assert(0 == s); + + /* Verify written data: */ + nw = read_from_scheduled_packets(&tobjs.send_ctl, stream->id, buf, + sizeof(buf), 3, NULL, 0); + assert(nw == 7); + assert(0 == memcmp(buf, "4567890", 7)); + + lsquic_stream_destroy(stream); + assert(("on_close called", 1 == n_closed)); + + deinit_test_objs(&tobjs); +} + + +/* Test that stream is marked as both stream- and connection-blocked */ +static void +test_blocked_flags (void) +{ + ssize_t nw; + struct test_objs tobjs; + struct lsquic_stream *stream; + struct lsquic_conn_cap *const conn_cap = &tobjs.conn_pub.conn_cap; + int s; + + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + + init_test_objs(&tobjs, 3, 3, NULL); + stream = new_stream_ext(&tobjs, 123, 3); + nw = lsquic_stream_write(stream, "1234567890", 10); + assert(("lsquic_stream_write is limited by the send window", 3 == nw)); + assert(("cc_tosend is updated immediately", + 3 == conn_cap->cc_sent)); + assert(1 == lsquic_send_ctl_n_scheduled(&tobjs.send_ctl)); /* Flush occurred already */ + s = lsquic_stream_flush(stream); + assert(0 == s); + assert(("cc_tosend is updated when limited by connection", + 3 == conn_cap->cc_sent)); + assert(stream->sm_qflags & SMQF_SEND_BLOCKED); + assert(3 == stream->blocked_off); + assert(tobjs.lconn.cn_flags & LSCONN_SEND_BLOCKED); + assert(3 == conn_cap->cc_blocked); + + lsquic_stream_destroy(stream); + deinit_test_objs(&tobjs); +} + + +static void +test_forced_flush_when_conn_blocked (void) +{ + ssize_t nw; + struct test_objs tobjs; + struct lsquic_stream *stream; + struct lsquic_conn_cap *const conn_cap = &tobjs.conn_pub.conn_cap; + enum stream_state_sending sss; + + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + + init_test_objs(&tobjs, 3, 0x1000, NULL); + stream = new_stream(&tobjs, 123); + sss = lsquic_stream_sending_state(stream); + assert(SSS_READY == sss); + nw = lsquic_stream_write(stream, "1234567890", 10); + assert(("lsquic_stream_write is limited by the send window", 3 == nw)); + assert(("cc_tosend is updated immediately", + 3 == conn_cap->cc_sent)); + assert(1 == lsquic_send_ctl_n_scheduled(&tobjs.send_ctl)); /* Flush occurred */ + sss = lsquic_stream_sending_state(stream); + assert(SSS_SEND == sss); + assert(tobjs.lconn.cn_flags & LSCONN_SEND_BLOCKED); + assert(3 == conn_cap->cc_blocked); + + lsquic_stream_destroy(stream); + deinit_test_objs(&tobjs); +} + + +static int +my_gen_stream_frame_err (unsigned char *buf, size_t bufsz, + lsquic_stream_id_t stream_id, uint64_t offset, + int fin, size_t size, gsf_read_f read, + void *stream) +{ + return -1; +} + + +static void +test_conn_abort (void) +{ + ssize_t nw; + struct test_objs tobjs; + struct lsquic_stream *stream; + struct parse_funcs my_pf; + int s; + + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + + init_test_objs(&tobjs, 0x1000, 0x1000, NULL); + my_pf = *tobjs.lconn.cn_pf; + my_pf.pf_gen_stream_frame = my_gen_stream_frame_err; + tobjs.lconn.cn_pf = &my_pf; + + stream = new_stream(&tobjs, 123); + nw = lsquic_stream_write(stream, "1234567890", 10); + assert(10 == nw); /* No error yet */ + s = lsquic_stream_flush(stream); + assert(s < 0); + assert(stream->sm_qflags & SMQF_ABORT_CONN); + assert(!TAILQ_EMPTY(&tobjs.conn_pub.service_streams)); + + lsquic_stream_destroy(stream); + deinit_test_objs(&tobjs); +} + + +/* Test one: large frame first, followed by small frames to finish off + * the packet. + */ +static void +test_bad_packbits_guess_1 (void) +{ + lsquic_packet_out_t *packet_out; + ssize_t nw; + struct test_objs tobjs; + struct lsquic_stream *streams[3]; + char buf[0x1000]; + unsigned char buf_out[0x1000]; + int s, fin; + + init_buf(buf, sizeof(buf)); + + init_test_ctl_settings(&g_ctl_settings); + g_ctl_settings.tcs_schedule_stream_packets_immediately = 0; + g_ctl_settings.tcs_guess_packno_bits = GQUIC_PACKNO_LEN_1; + + init_test_objs(&tobjs, 0x1000, 0x1000, NULL); + streams[0] = new_stream(&tobjs, 5); + streams[1] = new_stream(&tobjs, 7); + streams[2] = new_stream(&tobjs, 9); + + /* Perfrom writes on the three streams. This is tuned to fill a single + * packet completely -- we check this later in this function. + */ + nw = lsquic_stream_write(streams[0], buf, 1337); + assert(nw == 1337); + s = lsquic_stream_flush(streams[0]); + assert(0 == s); + s = lsquic_stream_shutdown(streams[1], 1); + assert(s == 0); + nw = lsquic_stream_write(streams[2], buf + 1337, 1); + assert(nw == 1); + s = lsquic_stream_shutdown(streams[2], 1); + assert(s == 0); + + /* Verify that we got one packet filled to the top: */ + const struct buf_packet_q *const bpq = + &tobjs.send_ctl.sc_buffered_packets[g_ctl_settings.tcs_bp_type]; + assert(("packetized -- 1 packet", 1 == bpq->bpq_count)); + packet_out = TAILQ_FIRST(&bpq->bpq_packets); + assert(0 == lsquic_packet_out_avail(packet_out)); + + assert(1 == streams[0]->n_unacked); + assert(1 == streams[1]->n_unacked); + assert(1 == streams[2]->n_unacked); + + g_ctl_settings.tcs_schedule_stream_packets_immediately = 1; + g_ctl_settings.tcs_calc_packno_bits = GQUIC_PACKNO_LEN_6; + s = lsquic_send_ctl_schedule_buffered(&tobjs.send_ctl, + g_ctl_settings.tcs_bp_type); + assert(2 == lsquic_send_ctl_n_scheduled(&tobjs.send_ctl)); + + /* Verify written data: */ + nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[0]->id, buf_out, + sizeof(buf_out), 0, &fin, 0); + assert(nw == 1337); + assert(!fin); + assert(0 == memcmp(buf, buf_out, 1337)); + nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[1]->id, buf_out, + sizeof(buf_out), 0, &fin, 0); + assert(nw == 0); + assert(fin); + nw = read_from_scheduled_packets(&tobjs.send_ctl, streams[2]->id, buf_out, + sizeof(buf_out), 0, &fin, 0); + assert(nw == 1); + assert(fin); + assert(0 == memcmp(buf + 1337, buf_out, 1)); + + /* Verify packets */ + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs.send_ctl, 0); + assert(lsquic_packet_out_packno_bits(packet_out) == GQUIC_PACKNO_LEN_6); + assert(1 == packet_out->po_packno); + assert(packet_out->po_frame_types & (1 << QUIC_FRAME_STREAM)); + lsquic_send_ctl_sent_packet(&tobjs.send_ctl, packet_out); + packet_out = lsquic_send_ctl_next_packet_to_send(&tobjs.send_ctl, 0); + assert(lsquic_packet_out_packno_bits(packet_out) == GQUIC_PACKNO_LEN_6); + assert(2 == packet_out->po_packno); + assert(packet_out->po_frame_types & (1 << QUIC_FRAME_STREAM)); + lsquic_send_ctl_sent_packet(&tobjs.send_ctl, packet_out); + + assert(1 == streams[0]->n_unacked); + assert(1 == streams[1]->n_unacked); + assert(1 == streams[2]->n_unacked); + ack_packet(&tobjs.send_ctl, 1); + assert(0 == streams[0]->n_unacked); + assert(1 == streams[1]->n_unacked); + assert(1 == streams[2]->n_unacked); + ack_packet(&tobjs.send_ctl, 2); + assert(0 == streams[0]->n_unacked); + assert(0 == streams[1]->n_unacked); + assert(0 == streams[2]->n_unacked); + + lsquic_stream_destroy(streams[0]); + lsquic_stream_destroy(streams[1]); + lsquic_stream_destroy(streams[2]); + deinit_test_objs(&tobjs); +} + + +static void +main_test_packetization (void) +{ + const unsigned fp_sizes[] = { 0, 10, 100, 501, 1290, }; + unsigned i; + for (i = 0; i < sizeof(fp_sizes) / sizeof(fp_sizes[0]); ++i) + { + int once; + unsigned write_size; + if (!g_use_crypto_ctor) /* No buffered packets for CRYPTO frames */ + { + for (write_size = 1; write_size < GQUIC_MAX_PACKET_SZ; ++write_size) + test_packetization(0, 0, write_size, fp_sizes[i]); + srand(7891); + for (write_size = 1; write_size < GQUIC_MAX_PACKET_SZ * 10; ++write_size) + test_packetization(0, 0, RANDOM_WRITE_SIZE, fp_sizes[i]); + } + for (once = 0; once < 2; ++once) + { + for (write_size = 1; write_size < GQUIC_MAX_PACKET_SZ; ++write_size) + test_packetization(1, once, write_size, fp_sizes[i]); + srand(7891); + for (write_size = 1; write_size < GQUIC_MAX_PACKET_SZ * 10; ++write_size) + test_packetization(1, once, RANDOM_WRITE_SIZE, fp_sizes[i]); + } + } +} + + +int +main (int argc, char **argv) +{ + g_pf = select_pf_by_ver(LSQVER_043); + + int opt; + + lsquic_global_init(LSQUIC_GLOBAL_SERVER); + + while (-1 != (opt = getopt(argc, argv, "Ahl:"))) + { + switch (opt) + { + case 'A': + stream_ctor_flags &= ~SCF_DI_AUTOSWITCH; + break; + case 'h': + stream_ctor_flags |= SCF_USE_DI_HASH; + break; + case 'l': + lsquic_log_to_fstream(stderr, LLTS_NONE); + lsquic_logger_lopt(optarg); + break; + default: + exit(1); + } + } + + init_test_ctl_settings(&g_ctl_settings); + + test_writing_to_stream_schedule_stream_packets_immediately(); + test_writing_to_stream_outside_callback(); + test_stealing_ack(); + test_changing_pack_size(); + test_reducing_pack_size(); + test_window_update1(); + test_window_update2(); + test_forced_flush_when_conn_blocked(); + test_blocked_flags(); + test_reading_from_stream2(); + test_overlaps(); + test_insert_edge_cases(); + test_unexpected_http_close(); + + { + int idx[6]; + permute_and_run(0, 0, 0, idx, sizeof(idx) / sizeof(idx[0])); + } + + test_termination(); + + test_writev(); + + test_prio_conversion(); + + test_read_in_middle(); + + test_conn_unlimited(); + + test_flushing(); + + test_conn_abort(); + + test_bad_packbits_guess_1(); + test_bad_packbits_guess_2(); + test_bad_packbits_guess_3(); + + test_resize_buffered(); + test_resize_scheduled(); + + main_test_packetization(); + + enum lsquic_version ver; + for (ver = 0; ver < N_LSQVER; ++ver) + if (!((1 << ver) & LSQUIC_IETF_VERSIONS)) + test_cant_fit_frame(select_pf_by_ver(ver)); + + /* Redo some tests using crypto streams and frames */ + g_use_crypto_ctor = 1; + g_pf = select_pf_by_ver(LSQVER_I001); + main_test_packetization(); + + return 0; +} + +static const char on_being_idle[] = +"ON BEING IDLE." +"" +"Now, this is a subject on which I flatter myself I really am _au fait_." +"The gentleman who, when I was young, bathed me at wisdom's font for nine" +"guineas a term--no extras--used to say he never knew a boy who could" +"do less work in more time; and I remember my poor grandmother once" +"incidentally observing, in the course of an instruction upon the use" +"of the Prayer-book, that it was highly improbable that I should ever do" +"much that I ought not to do, but that she felt convinced beyond a doubt" +"that I should leave undone pretty well everything that I ought to do." +"" +"I am afraid I have somewhat belied half the dear old lady's prophecy." +"Heaven help me! I have done a good many things that I ought not to have" +"done, in spite of my laziness. But I have fully confirmed the accuracy" +"of her judgment so far as neglecting much that I ought not to have" +"neglected is concerned. Idling always has been my strong point. I take" +"no credit to myself in the matter--it is a gift. Few possess it. There" +"are plenty of lazy people and plenty of slow-coaches, but a genuine" +"idler is a rarity. He is not a man who slouches about with his hands in" +"his pockets. On the contrary, his most startling characteristic is that" +"he is always intensely busy." +"" +"It is impossible to enjoy idling thoroughly unless one has plenty of" +"work to do. There is no fun in doing nothing when you have nothing to" +"do. Wasting time is merely an occupation then, and a most exhausting" +"one. Idleness, like kisses, to be sweet must be stolen." +"" +"Many years ago, when I was a young man, I was taken very ill--I never" +"could see myself that much was the matter with me, except that I had" +"a beastly cold. But I suppose it was something very serious, for the" +"doctor said that I ought to have come to him a month before, and that" +"if it (whatever it was) had gone on for another week he would not have" +"answered for the consequences. It is an extraordinary thing, but I" +"never knew a doctor called into any case yet but what it transpired" +"that another day's delay would have rendered cure hopeless. Our medical" +"guide, philosopher, and friend is like the hero in a melodrama--he" +"always comes upon the scene just, and only just, in the nick of time. It" +"is Providence, that is what it is." +"" +"Well, as I was saying, I was very ill and was ordered to Buxton for a" +"month, with strict injunctions to do nothing whatever all the while" +"that I was there. \"Rest is what you require,\" said the doctor, \"perfect" +"rest.\"" +"" +"It seemed a delightful prospect. \"This man evidently understands my" +"complaint,\" said I, and I pictured to myself a glorious time--a four" +"weeks' _dolce far niente_ with a dash of illness in it. Not too much" +"illness, but just illness enough--just sufficient to give it the flavor" +"of suffering and make it poetical. I should get up late, sip chocolate," +"and have my breakfast in slippers and a dressing-gown. I should lie out" +"in the garden in a hammock and read sentimental novels with a melancholy" +"ending, until the books should fall from my listless hand, and I should" +"recline there, dreamily gazing into the deep blue of the firmament," +"watching the fleecy clouds floating like white-sailed ships across" +"its depths, and listening to the joyous song of the birds and the low" +"rustling of the trees. Or, on becoming too weak to go out of doors," +"I should sit propped up with pillows at the open window of the" +"ground-floor front, and look wasted and interesting, so that all the" +"pretty girls would sigh as they passed by." +"" +"And twice a day I should go down in a Bath chair to the Colonnade to" +"drink the waters. Oh, those waters! I knew nothing about them then," +"and was rather taken with the idea. \"Drinking the waters\" sounded" +"fashionable and Queen Anne-fied, and I thought I should like them. But," +"ugh! after the first three or four mornings! Sam Weller's description of" +"them as \"having a taste of warm flat-irons\" conveys only a faint idea of" +"their hideous nauseousness. If anything could make a sick man get well" +"quickly, it would be the knowledge that he must drink a glassful of them" +"every day until he was recovered. I drank them neat for six consecutive" +"days, and they nearly killed me; but after then I adopted the plan of" +"taking a stiff glass of brandy-and-water immediately on the top of them," +"and found much relief thereby. I have been informed since, by various" +"eminent medical gentlemen, that the alcohol must have entirely" +"counteracted the effects of the chalybeate properties contained in the" +"water. I am glad I was lucky enough to hit upon the right thing." +; + +static void +init_buf (void *buf, size_t sz) +{ + unsigned char *p = buf; + unsigned char *const end = (unsigned char*)buf + sz; + size_t n; + + while (p < end) + { + n = end - p; + if (sizeof(on_being_idle) - 1 < n) + n = sizeof(on_being_idle) - 1; + memcpy(p, on_being_idle, n); + p +=n; + } + + assert(p == end); +} diff --git a/external/lsquic/tests/test_streamgen.c b/external/lsquic/tests/test_streamgen.c new file mode 100644 index 0000000..04c0fc7 --- /dev/null +++ b/external/lsquic/tests/test_streamgen.c @@ -0,0 +1,493 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_parse.h" +#include "lsquic_sfcw.h" +#include "lsquic_varint.h" +#include "lsquic_hq.h" +#include "lsquic_hash.h" +#include "lsquic_stream.h" + +struct test { + int lineno; + const struct parse_funcs * + pf; + /* Inputs. These are returned by lsquic_stream_tosend_fin(), + * lsquic_stream_tosend_read(), and lsquic_stream_tosend_offset(). + */ + int fin[2]; /* There may be two calls to lsquic_stream_tosend_fin() */ + uint64_t offset; + uint32_t stream_id; + size_t avail; /* Space to write stream frame to */ + size_t min_sz; /* Minimum size needed to generate stream frame. Any + * sizes smaller than this should fail. + */ + size_t data_sz; + char data[0x100]; + + /* Output. This is how we expect the resulting frame to look. + */ + int len; /* Return value of gen_stream_frame() */ + char out[0x100]; +}; + + +static struct test_ctx { + const struct test *test; + int next_fin; + lsquic_stream_t stream; +} test_ctx; + + +static int +stream_tosend_fin (void *stream) +{ + struct test_ctx *test_ctx2 = stream; + return test_ctx2->test->fin[ test_ctx2->next_fin++ ]; +} + + +static size_t +stream_tosend_read (void *stream, void *buf, size_t len, int *reached_fin) +{ + struct test_ctx *test_ctx2 = stream; + if (test_ctx2->test->data_sz < len) + len = test_ctx2->test->data_sz; + memcpy(buf, test_ctx2->test->data, len); + *reached_fin = stream_tosend_fin(stream); + return len; +} + + +static size_t +stream_tosend_size (void *stream) +{ + struct test_ctx *test_ctx2 = stream; + return test_ctx2->test->data_sz; +} + + +static void +reset_ctx (const struct test *test) +{ + test_ctx.test = test; + test_ctx.next_fin = 0; + test_ctx.stream.id = test->stream_id; +} + + +static void +run_test (const struct test *const test) +{ + + unsigned char out[0x100]; + int len; + size_t min; + + if (test->len > 0) + { + /* Test that all sizes under specified min fail to produce a frame */ + for (min = 0; min < test->min_sz; ++min) + { + reset_ctx(test); + len = test->pf->pf_gen_stream_frame(out, min, test->stream_id, + test_ctx.test->offset, stream_tosend_fin(&test_ctx), + stream_tosend_size(&test_ctx), stream_tosend_read, &test_ctx); + assert(len < 0); + } + + /* Test that it succeeds now: */ + reset_ctx(test); + len = test->pf->pf_gen_stream_frame(out, min, test->stream_id, + test_ctx.test->offset, stream_tosend_fin(&test_ctx), + stream_tosend_size(&test_ctx), stream_tosend_read, &test_ctx); + assert(len == (int) min); + } + + reset_ctx(test); + len = test->pf->pf_gen_stream_frame(out, test->avail, test->stream_id, + test_ctx.test->offset, stream_tosend_fin(&test_ctx), + stream_tosend_size(&test_ctx), stream_tosend_read, &test_ctx); + + if (test->len > 0) { + /* Check parser operation */ + assert(test->len == len); + assert(("Generated frame is correct", 0 == memcmp(test->out, out, test->len))); + } + else + { + assert(("This test should fail", len < 0)); + } +} + + +int +main (void) +{ + const struct test tests[] = { + /* + * Big-endian: + */ + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_043), + .fin = { 0, 1, }, + .offset = 0x0807060504030201UL, + .stream_id = 0x210, + .data_sz = 10, + .data = "0123456789", + .avail = 0x100, + .out = + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x40 | 0x20 | 0x1C | 0x01, + 0x02, 0x10, /* Stream ID */ + 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ + 0x00, 0x0A, /* Data length */ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + }, + .len = 1 + 2 + 8 + 2 + 10, + .min_sz = 1 + 2 + 8 + 0 + 1, + }, + + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_043), + .fin = { 0, 0, }, + .offset = 0x0807060504030201UL, + .stream_id = 0x210, + .data_sz = 10, + .data = "0123456789", + .avail = 0x100, + .out = + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x00 | 0x20 | 0x1C | 0x01, + 0x02, 0x10, /* Stream ID */ + 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ + 0x00, 0x0A, /* Data length */ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + }, + .len = 1 + 2 + 8 + 2 + 10, + .min_sz = 1 + 2 + 8 + 0 + 1, + }, + + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_043), + .fin = { 1, 0, }, + .offset = 0x0807060504030201UL, + .stream_id = 0x210, + .data_sz = 10, + .data = "0123456789", + .avail = 0x100, + .out = + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x40 | 0x20 | 0x1C | 0x01, + 0x02, 0x10, /* Stream ID */ + 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ + 0x00, 0x00, /* Data length */ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + }, + .len = 1 + 2 + 8 + 2, + .min_sz = 1 + 2 + 8 + 2, + }, + + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_043), + .fin = { 1, 0, }, + .offset = 0x0807060504030201UL, + .stream_id = 0x21, + .data_sz = 10, + .data = "0123456789", + .avail = 0x100, + .out = + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x40 | 0x20 | 0x1C | 0x00, + 0x21, /* Stream ID */ + 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ + 0x00, 0x00, /* Data length */ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + }, + .len = 1 + 1 + 8 + 2, + .min_sz = 1 + 1 + 8 + 2, + }, + + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_043), + .fin = { 0, 0, }, + .offset = 0x77, + .stream_id = 0x210, + .data_sz = 10, + .data = "0123456789", + .avail = 0x100, + .out = + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x00 | 0x20 | 0x04 | 0x01, + 0x02, 0x10, /* Stream ID */ + 0x00, 0x77, /* Offset */ + 0x00, 0x0A, /* Data length */ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + }, + .len = 1 + 2 + 2 + 2 + 10, + .min_sz = 1 + 2 + 2 + 0 + 1, + }, + + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_043), + .fin = { 0, 0, }, + .offset = 0x0, + .stream_id = 0x210, + .data_sz = 10, + .data = "0123456789", + .avail = 0x100, + .out = + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x00 | 0x20 | 0x00 | 0x01, + 0x02, 0x10, /* Stream ID */ + /* Offset */ + 0x00, 0x0A, /* Data length */ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + }, + .len = 1 + 2 + 0 + 2 + 10, + .min_sz = 1 + 2 + 0 + 0 + 1, + }, + + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_043), + .fin = { 0, 1, }, + .offset = 0x0, + .stream_id = 0x210, + .data_sz = 1, + .data = "0123456789", + .avail = 0x100, + .out = + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x40 | 0x20 | 0x00 | 0x01, + 0x02, 0x10, /* Stream ID */ + /* Offset */ + 0x00, 0x01, /* Data length */ + '0', + }, + .len = 1 + 2 + 0 + 2 + 1, + .min_sz = 1 + 2 + 0 + 0 + 1, + }, + + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_043), + .fin = { 0, 0, }, + .offset = 0xFFFFFF, + .stream_id = 0x210, + .data_sz = 10, + .data = "0123456789", + .avail = 0x100, + .out = + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x00 | 0x20 | 0x08 | 0x01, + 0x02, 0x10, /* Stream ID */ + 0xFF, 0xFF, 0xFF, /* Offset */ + 0x00, 0x0A, /* Data length */ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + }, + .len = 1 + 2 + 3 + 2 + 10, + .min_sz = 1 + 2 + 3 + 0 + 1, + }, + + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_043), + .fin = { 0, 0, }, + .offset = 0xFFFFFF + 1, + .stream_id = 0x210, + .data_sz = 10, + .data = "0123456789", + .avail = 0x100, + .out = + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x00 | 0x20 | 0x0C | 0x01, + 0x02, 0x10, /* Stream ID */ + 0x01, 0x00, 0x00, 0x00, /* Offset */ + 0x00, 0x0A, /* Data length */ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + }, + .len = 1 + 2 + 4 + 2 + 10, + .min_sz = 1 + 2 + 4 + 0 + 1, + }, + + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_043), + .fin = { 0, 0, }, + .offset = 0xFFFFFF + 1, + .stream_id = 0x210, + .data_sz = 10, + .data = "0123456789", + .avail = 10, + .out = + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x00 | 0x00 | 0x0C | 0x01, + 0x02, 0x10, /* Stream ID */ + 0x01, 0x00, 0x00, 0x00, /* Offset */ + '0', '1', '2', + }, + .len = 1 + 2 + 4 + 0 + 3, + .min_sz = 1 + 2 + 4 + 0 + 1, + }, + + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_043), + .fin = { 1, 0, }, + .offset = 0xB4, + .stream_id = 0x01, + .data_sz = 0, + .data = "0123456789", + .avail = 0x100, + .out = + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x40 | 0x20 | 0x04 | 0x00, + 0x01, /* Stream ID */ + 0x00, 0xB4, /* Offset */ + 0x00, 0x00, /* Data length */ + }, + .len = 6, + .min_sz = 6, + }, + + /* + * IETF QUIC Internet-Draft 17: + */ + + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_I001), + .fin = { 0, 1, }, + .offset = 0x0807060504030201UL, + .stream_id = 0x210, + .data_sz = 10, + .data = "0123456789", + .avail = 0x100, + .out = + /* TYPE OFF DLEN FIN */ + { 0x08 | 1<<2 | 1<<1 | 1<<0, + 0x42, 0x10, /* Stream ID */ + 0xC8, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ + 0x0A, /* Data length */ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + }, + .len = 1 + 2 + 8 + 1 + 10, + .min_sz = 1 + 2 + 8 + 0 + 1, + }, + + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_I001), + .fin = { 0, 0, }, + .offset = 0, + .stream_id = 0x210, + .data_sz = 10, + .data = "0123456789", + .avail = 0x100, + .out = + /* TYPE OFF DLEN FIN */ + { 0x08 | 0<<2 | 1<<1 | 0<<0, + 0x42, 0x10, /* Stream ID */ + 0x0A, /* Data length */ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + }, + .len = 1 + 2 + 0 + 1 + 10, + .min_sz = 1 + 2 + 0 + 0 + 1, + }, + + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_I001), + .fin = { 0, 0, }, + .offset = 0, + .stream_id = 0x21, + .data_sz = 10, + .data = "0123456789", + .avail = 12, + .out = + /* TYPE OFF DLEN FIN */ + { 0x08 | 0<<2 | 0<<1 | 0<<0, + 0x21, /* Stream ID */ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + }, + .len = 1 + 1 + 0 + 0 + 10, + .min_sz = 1 + 1 + 0 + 0 + 1, + }, + + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_I001), + .fin = { 0, 0, }, + .offset = 0x0807060504030201UL, + .stream_id = 0x210, + .data_sz = 10, + .data = "0123456789", + .avail = 0x100, + .out = + /* TYPE OFF DLEN FIN */ + { 0x08 | 1<<2 | 1<<1 | 0<<0, + 0x42, 0x10, /* Stream ID */ + 0xC8, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ + 0x0A, /* Data length */ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + }, + .len = 1 + 2 + 8 + 1 + 10, + .min_sz = 1 + 2 + 8 + 0 + 1, + }, + + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_I001), + .fin = { 1, 0, }, + .offset = 0x0807060504030201UL, + .stream_id = 0x210, + .data_sz = 0, + .data = "0123456789", + .avail = 11, + .out = + /* TYPE OFF DLEN FIN */ + { 0x08 | 1<<2 | 0<<1 | 1<<0, + 0x42, 0x10, /* Stream ID */ + 0xC8, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ + }, + .len = 1 + 2 + 8, + .min_sz = 1 + 2 + 8, + }, + + { .lineno = __LINE__, + .pf = select_pf_by_ver(LSQVER_I001), + .fin = { 1, 0, }, + .offset = 0x0807060504030201UL, + .stream_id = 0x210, + .data_sz = 0, + .data = "0123456789", + .avail = 0x100, + .out = + /* TYPE OFF DLEN FIN */ + { 0x08 | 1<<2 | 1<<1 | 1<<0, + 0x42, 0x10, /* Stream ID */ + 0xC8, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ + 0x00, /* Data length */ + }, + .len = 1 + 2 + 8 + 1, + .min_sz = 1 + 2 + 8, + }, + + }; + + unsigned i; + for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) + run_test(&tests[i]); + return 0; +} diff --git a/external/lsquic/tests/test_streamparse.c b/external/lsquic/tests/test_streamparse.c new file mode 100644 index 0000000..4e1e910 --- /dev/null +++ b/external/lsquic/tests/test_streamparse.c @@ -0,0 +1,450 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_parse.h" +#include "lsquic_packet_common.h" +#include "lsquic_packet_in.h" + +struct test { + const char *name; + int lineno; + const struct parse_funcs * + pf; + const unsigned char + buf[0x100]; /* Large enough for our needs */ + size_t buf_sz; /* # of stream frame bytes in `buf' */ + size_t rem_packet_sz; /* # of bytes remaining in the packet, + * starting at the beginning of the + * stream frame. + */ + stream_frame_t frame; /* Expected values */ + int should_succeed; +}; + +static void +run_test (const struct test *test) +{ + stream_frame_t frame; + memset(&frame, 0x7A, sizeof(frame)); + + int len = test->pf->pf_parse_stream_frame(test->buf, test->rem_packet_sz, &frame); + + if (test->should_succeed) { + /* Check parser operation */ + assert(("Parsed correct number of bytes", (size_t) len == test->buf_sz + test->frame.data_frame.df_size)); + assert(("Stream ID is correct", frame.stream_id == test->frame.stream_id)); + assert(("Data length is correct", frame.data_frame.df_size == test->frame.data_frame.df_size)); + assert(("Offset is correct", frame.data_frame.df_offset == test->frame.data_frame.df_offset)); + assert(("FIN is correct", frame.data_frame.df_fin == test->frame.data_frame.df_fin)); + + /* Check that initialization of other fields occurred correctly: */ + assert(0 == frame.packet_in); + assert(0 == frame.data_frame.df_read_off); + } + else + { + assert(("This test should fail", len < 0)); + } +} + + +int +main (void) +{ + + const struct test tests[] = { + + /* + * Big-endian tests + */ + { "Balls to the wall: every possible bit is set", + __LINE__, + select_pf_by_ver(LSQVER_043), + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x40 | 0x20 | 0x1C | 0x3, + 0x00, 0x00, 0x02, 0x10, /* Stream ID */ + 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ + 0x01, 0xC4, /* Data length */ + }, + 1 + 2 + 8 + 4, + 0x200, + { .data_frame.df_offset = 0x0807060504030201UL, + .stream_id = 0x210, + .data_frame.df_size = 0x1C4, + .data_frame.df_fin = 1, + }, + 1, + }, + + { "Balls to the wall #2: every possible bit is set, except FIN", + __LINE__, + select_pf_by_ver(LSQVER_043), + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x00 | 0x20 | 0x1C | 0x3, + 0x00, 0x00, 0x02, 0x10, /* Stream ID */ + 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ + 0x01, 0xC4, /* Data length */ + }, + 1 + 2 + 8 + 4, + 0x200, + { .data_frame.df_offset = 0x0807060504030201UL, + .stream_id = 0x210, + .data_frame.df_size = 0x1C4, + .data_frame.df_fin = 0, + }, + 1, + }, + + { "Data length is zero", + __LINE__, + select_pf_by_ver(LSQVER_043), + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x40 | 0x00 | 0x1C | 0x3, + 0x00, 0x00, 0x02, 0x10, /* Stream ID */ + 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ + 0xC4, 0x01, /* Data length: note this does not matter */ + }, + 1 + 0 + 8 + 4, + 0x200, + { .data_frame.df_offset = 0x0807060504030201UL, + .stream_id = 0x210, + .data_frame.df_size = 0x200 - (1 + 8 + 4), + .data_frame.df_fin = 1, + }, + 1, + }, + + { "Stream ID length is 1", + __LINE__, + select_pf_by_ver(LSQVER_043), + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x40 | 0x20 | 0x1C | 0x0, + 0xF0, /* Stream ID */ + 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Offset */ + 0x01, 0xC4, /* Data length */ + }, + 1 + 2 + 8 + 1, + 0x200, + { .data_frame.df_offset = 0x0807060504030201UL, + .stream_id = 0xF0, + .data_frame.df_size = 0x1C4, + .data_frame.df_fin = 1, + }, + 1, + }, + + { "All bits are zero save offset length", + __LINE__, + select_pf_by_ver(LSQVER_043), + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x00 | 0x00 | 0x04 | 0x0, + 0xF0, /* Stream ID */ + 0x02, 0x55, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, /* Offset */ + 0xC4, 0x01, /* Data length */ + }, + 1 + 0 + 2 + 1, + 0x200, + { .data_frame.df_offset = 0x255, + .stream_id = 0xF0, + .data_frame.df_size = 0x200 - 4, + .data_frame.df_fin = 0, + }, + 1, + }, + + { "Sanity check: either FIN must be set or data length is not zero #1", + __LINE__, + select_pf_by_ver(LSQVER_043), + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x00 | 0x00 | 0x04 | 0x0, + 0xF0, /* Stream ID */ + 0x02, 0x55, /* Offset */ + }, + 1 + 0 + 2 + 1, + 4, /* Same as buffer size: in the absense of explicit data + * length in the header, this would mean that data + * length is zero. + */ + { .data_frame.df_offset = 0x255, + .stream_id = 0xF0, + .data_frame.df_size = 0x200 - 4, + .data_frame.df_fin = 0, + }, + 0, + }, + + { "Sanity check: either FIN must be set or data length is not zero #2", + __LINE__, + select_pf_by_ver(LSQVER_043), + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x00 | 0x20 | 0x04 | 0x0, + 0xF0, /* Stream ID */ + 0x02, 0x55, /* Offset */ + 0x00, 0x00, + }, + 1 + 2 + 2 + 1, + 200, + { .data_frame.df_offset = 0x255, + .stream_id = 0xF0, + .data_frame.df_size = 0x200 - 4, + .data_frame.df_fin = 0, + }, + 0, + }, + + { "Sanity check: either FIN must be set or data length is not zero #3", + __LINE__, + select_pf_by_ver(LSQVER_043), + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x40 | 0x20 | 0x04 | 0x0, + 0xF0, /* Stream ID */ + 0x02, 0x55, /* Offset */ + 0x00, 0x00, + }, + 1 + 2 + 2 + 1, + 200, + { .data_frame.df_offset = 0x255, + .stream_id = 0xF0, + .data_frame.df_size = 0x0, + .data_frame.df_fin = 1, + }, + 1, + }, + + { "Check data bounds #1", + __LINE__, + select_pf_by_ver(LSQVER_043), + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x00 | 0x20 | 0x04 | 0x0, + 0xF0, /* Stream ID */ + 0x02, 0x55, /* Offset */ + 0x01, 0xFA, /* Data length */ + }, + 1 + 2 + 2 + 1, + 0x200, + { .data_frame.df_offset = 0x255, + .stream_id = 0xF0, + .data_frame.df_size = 0x1FA, + .data_frame.df_fin = 0, + }, + 1, + }, + + { "Check data bounds #2", + __LINE__, + select_pf_by_ver(LSQVER_043), + /* 1 f d ooo ss 1fdoooss */ + /* TYPE FIN DLEN OLEN SLEN */ + { 0x80 | 0x00 | 0x20 | 0x04 | 0x0, + 0xF0, /* Stream ID */ + 0x02, 0x55, /* Offset */ + 0x01, 0xFB, /* <--- One byte too many */ + }, + 1 + 2 + 2 + 1, + 0x200, + { .data_frame.df_offset = 0x255, + .stream_id = 0xF0, + .data_frame.df_size = 0x1FA, + .data_frame.df_fin = 0, + }, + 0, + }, + + /* + * IETF QUIC Internet-Draft 14 Tests. + */ + + { "Balls to the wall: every possible bit is set", + __LINE__, + select_pf_by_ver(LSQVER_I001), + /* TYPE OFF DLEN FIN */ + { 0x10 | 1<<2 | 1<<1 | 1<<0, + 0x41, 0x23, /* Stream ID */ + 0x08, /* Offset */ + 0x41, 0xC4, /* Data length */ + }, + 1 + 2 + 1 + 2, + 0x200, + { .data_frame.df_offset = 0x08, + .stream_id = 0x123, + .data_frame.df_size = 0x1C4, + .data_frame.df_fin = 1, + }, + 1, + }, + + { "Balls to the wall #2: every possible bit is set except FIN", + __LINE__, + select_pf_by_ver(LSQVER_I001), + /* TYPE OFF DLEN FIN */ + { 0x10 | 1<<2 | 1<<1 | 0<<0, + 0x81, 0x23, 0x00, 0xE4, /* Stream ID */ + 0xF0, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, /* Offset */ + 0x41, 0xC4, /* Data length */ + }, + 1 + 4 + 8 + 2, + 0x200, + { .data_frame.df_offset = 0x301234567890ABCDull, + .stream_id = 0x12300E4, + .data_frame.df_size = 0x1C4, + .data_frame.df_fin = 0, + }, + 1, + }, + + { "Data length is zero", + __LINE__, + select_pf_by_ver(LSQVER_I001), + /* TYPE OFF DLEN FIN */ + { 0x10 | 1<<2 | 0<<1 | 0<<0, + 0x81, 0x23, 0x00, 0xE4, /* Stream ID */ + 0xF0, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, /* Offset */ + }, + 1 + 4 + 8 + 0, + 0x200, + { .data_frame.df_offset = 0x301234567890ABCDull, + .stream_id = 0x12300E4, + .data_frame.df_size = 0x200 - 1 - 4 - 8, + .data_frame.df_fin = 0, + }, + 1, + }, + + { "Sanity check: what happens when data length is zero #1", + __LINE__, + select_pf_by_ver(LSQVER_I001), + /* TYPE OFF DLEN FIN */ + { 0x10 | 1<<2 | 1<<1 | 0<<0, + 0x81, 0x23, 0x00, 0xE4, /* Stream ID */ + 0xF0, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, /* Offset */ + 0x40, 0x00, /* Data length */ + }, + 1 + 4 + 8 + 2, + 0x200, + { .data_frame.df_offset = 0x301234567890ABCDull, + .stream_id = 0x12300E4, + .data_frame.df_size = 0, + .data_frame.df_fin = 0, + }, + 1, + }, + + { "Sanity check: what happens when data length is zero #2", + __LINE__, + select_pf_by_ver(LSQVER_I001), + /* TYPE OFF DLEN FIN */ + { 0x10 | 1<<2 | 1<<1 | 0<<0, + 0x81, 0x23, 0x00, 0xE4, /* Stream ID */ + 0x00, /* Offset */ + 0x40, 0x00, /* Data length */ + }, + 1 + 4 + 1 + 2, + 0x200, + { .data_frame.df_offset = 0, + .stream_id = 0x12300E4, + .data_frame.df_size = 0, + .data_frame.df_fin = 0, + }, + 1, + }, + + { "Sanity check: what happens when data length is zero #3", + __LINE__, + select_pf_by_ver(LSQVER_I001), + /* TYPE OFF DLEN FIN */ + { 0x10 | 0<<2 | 1<<1 | 0<<0, + 0x81, 0x23, 0x00, 0xE4, /* Stream ID */ + 0x40, 0x00, /* Data length */ + }, + 1 + 4 + 0 + 2, + 0x200, + { .data_frame.df_offset = 0, + .stream_id = 0x12300E4, + .data_frame.df_size = 0, + .data_frame.df_fin = 0, + }, + 1, + }, + + { "Sanity check: what happens when data length is zero #3", + __LINE__, + select_pf_by_ver(LSQVER_I001), + /* TYPE OFF DLEN FIN */ + { 0x10 | 1<<2 | 1<<1 | 1<<0, + 0x81, 0x23, 0x00, 0xE4, /* Stream ID */ + 0x12, /* Offset */ + 0x00, /* Data length */ + }, + 1 + 4 + 1 + 1, + 0x200, + { .data_frame.df_offset = 0x12, + .stream_id = 0x12300E4, + .data_frame.df_size = 0, + .data_frame.df_fin = 1, + }, + 1, + }, + + { "Check data bounds #1", + __LINE__, + select_pf_by_ver(LSQVER_I001), + /* TYPE OFF DLEN FIN */ + { 0x10 | 1<<2 | 1<<1 | 1<<0, + 0x81, 0x23, 0x00, 0xE4, /* Stream ID */ + 0x12, /* Offset */ + 0x41, 0xF8, /* Data length */ + }, + 1 + 4 + 1 + 2, + 0x200, + { .data_frame.df_offset = 0x12, + .stream_id = 0x12300E4, + .data_frame.df_size = 0x200 - 1 - 4 - 1 - 2, + .data_frame.df_fin = 1, + }, + 1, + }, + + { "Check data bounds #2", + __LINE__, + select_pf_by_ver(LSQVER_I001), + /* TYPE OFF DLEN FIN */ + { 0x10 | 1<<2 | 1<<1 | 1<<0, + 0x81, 0x23, 0x00, 0xE4, /* Stream ID */ + 0x12, /* Offset */ + 0x41, 0xF9, /* Data length */ + }, + 1 + 4 + 1 + 2, + 0x200, + { .data_frame.df_offset = 0x12, + .stream_id = 0x12300E4, + .data_frame.df_size = 0x200 - 1 - 4 - 1 - 2, + .data_frame.df_fin = 1, + }, + 0, + }, + + }; + + unsigned i; + for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) + run_test(&tests[i]); + return 0; +} diff --git a/external/lsquic/tests/test_tokgen.c b/external/lsquic/tests/test_tokgen.c new file mode 100644 index 0000000..0d66499 --- /dev/null +++ b/external/lsquic/tests/test_tokgen.c @@ -0,0 +1,41 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_int_types.h" +#include "lsquic_mm.h" +#include "lsquic_tokgen.h" +#include "lsquic_stock_shi.h" +#include "lsquic_engine_public.h" + +int +main (int argc, char **argv) +{ + struct lsquic_engine_public enpub = { + .enp_shi_ctx = lsquic_stock_shared_hash_new(), + .enp_shi = &stock_shi, + }; + struct token_generator *tg; + unsigned char token[16]; + unsigned i; + lsquic_cid_t cid; + + memset(&cid, 0, sizeof(cid)); + cid.len = 8; + + tg = lsquic_tg_new(&enpub); + + lsquic_tg_generate_sreset(tg, &cid, token); + for (i = 0; i < sizeof(token); ++i) + printf("%02X", token[i]); + printf("\n"); + + lsquic_tg_destroy(tg); + lsquic_stock_shared_hash_destroy(enpub.enp_shi_ctx); + + return 0; +} diff --git a/external/lsquic/tests/test_trapa.c b/external/lsquic/tests/test_trapa.c new file mode 100644 index 0000000..18bb59b --- /dev/null +++ b/external/lsquic/tests/test_trapa.c @@ -0,0 +1,286 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* + * test_trapa.c -- Test transport parameters. + */ + +#include + +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#else +#include "getopt.h" +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_sizes.h" +#include "lsquic_logger.h" +#include "lsquic_trans_params.h" + +#define ENC_BUF_SZ 0x1000 + +struct trapa_test +{ + int line; + enum { + TEST_ENCODE = 1 << 0, + TEST_DECODE = 1 << 1, + } flags; + struct transport_params params; + size_t enc_len, dec_len; + unsigned addl_set; + int is_server; + int expect_decode_err; + unsigned char encoded[ENC_BUF_SZ]; +}; + +static const struct trapa_test tests[] = +{ + + { + .line = __LINE__, + .flags = TEST_ENCODE | TEST_DECODE, + .params = { + TP_DEFAULT_VALUES, + }, + .enc_len = 0, + .encoded = + /* Trailer to make the end easily visible in gdb: */ + "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" + }, + + { + .line = __LINE__, + .flags = TEST_ENCODE | TEST_DECODE, + .params = { + .tp_set = (1 << TPI_INIT_MAX_STREAM_DATA_BIDI_LOCAL) + | (1 << TPI_INIT_MAX_DATA) + | (1 << TPI_MAX_IDLE_TIMEOUT) + | (1 << TPI_MAX_ACK_DELAY) + | (1 << TPI_MAX_UDP_PAYLOAD_SIZE) + | (1 << TPI_ACK_DELAY_EXPONENT) + | (1 << TPI_INITIAL_SOURCE_CID) + | (1 << TPI_ACTIVE_CONNECTION_ID_LIMIT), + .tp_init_max_stream_data_bidi_local = 0x12348877, + .tp_init_max_data = 0xAABB, + .tp_max_udp_payload_size = 1213, + .tp_max_idle_timeout = 10 * 1000, + .tp_max_ack_delay = TP_DEF_MAX_ACK_DELAY, + .tp_active_connection_id_limit = 7, + .tp_initial_source_cid = { .len = 8, .buf = "\x01\x02\x03\x04\x05\x06\x07\x08", }, + }, + .is_server = 0, + .enc_len = 36, + .encoded = + /* Idle timeout */ "\x01\x02\x67\x10" + /* Packet size */ "\x03\x02\x44\xBD" + /* Max data */ "\x04\x04\x80\x00\xAA\xBB" + /* Bidi local */ "\x05\x04\x92\x34\x88\x77" + /* Ack delay exp */ "\x0A\x01\x00" + /* Active CID limit */ "\x0E\x01\x07" + /* Initial SCID */ "\x0F\x08\x01\x02\x03\x04\x05\x06\x07\x08" + /* Trailer to make the end easily visible in gdb: */ + "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" + }, + + { + .line = __LINE__, + .flags = TEST_DECODE, + .dec_len = 1, + .expect_decode_err = 1, + }, + + { + .line = __LINE__, + .flags = TEST_DECODE, + .dec_len = 3, + .expect_decode_err = 1, + .encoded = "\x00\x04", + }, + + + { + .line = __LINE__, + .flags = TEST_ENCODE | TEST_DECODE, + .params = { + TP_DEFAULT_VALUES, + .tp_init_max_data = 0x123456, + .tp_init_max_stream_data_bidi_local = 0xABCDEF88, + .tp_max_udp_payload_size = 0x555, + }, + .is_server = 1, + .addl_set = 1 << TPI_DISABLE_ACTIVE_MIGRATION, + .enc_len = 22, + .encoded = + /* Packet size */ "\x03\x02\x45\x55" + /* Max data */ "\x04\x04\x80\x12\x34\x56" + /* Bidi local */ "\x05\x08\xC0\x00\x00\x00\xAB\xCD\xEF\x88" + /* Migration */ "\x0C\x00" + /* Trailer to make the end easily visible in gdb: */ + "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" + }, + + /* Test server preferred address. */ + { + .line = __LINE__, + .flags = TEST_DECODE, + .params = { + TP_DEFAULT_VALUES, + .tp_max_ack_delay = 25, + .tp_max_udp_payload_size = 0x555, + .tp_preferred_address = { + .ipv4_addr = "\x01\x02\x03\x04", + .ipv4_port = 0x1234, + .ipv6_addr = "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F", + .ipv6_port = 0x9001, + .cid = { .len = 11, .idbuf = "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A", }, + .srst = "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F", + }, + }, + .is_server = 1, + .addl_set = 1 << TPI_PREFERRED_ADDRESS, + .enc_len = 0x3A, + .dec_len = 0x3A, + .encoded = + /* Preferred Address */"\x0D" + "\x34" + "\x01\x02\x03\x04" + "\x12\x34" + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F" + "\x90\x01" + "\x0B" /* CID len */ + "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A" + "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F" + /* Packet size */ "\x03\x02\x45\x55" + /* Trailer to make the end easily visible in gdb: */ + "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" + }, + +}; + + +static int +params_are_equal (const struct transport_params *a, + const struct transport_params *b) +{ +#define MCMP(f) 0 == memcmp(&a->f, &b->f, sizeof(a->f)) + return MCMP(tp_numerics) + && MCMP(tp_set) + && MCMP(tp_stateless_reset_token) + && MCMP(tp_preferred_address.ipv4_addr) + && MCMP(tp_preferred_address.ipv6_addr) + && MCMP(tp_preferred_address.srst) + && MCMP(tp_preferred_address.cid.idbuf) + && a->tp_preferred_address.ipv4_port == b->tp_preferred_address.ipv4_port + && a->tp_preferred_address.ipv6_port == b->tp_preferred_address.ipv6_port + && a->tp_preferred_address.cid.len == b->tp_preferred_address.cid.len + && MCMP(tp_original_dest_cid.idbuf) + && a->tp_original_dest_cid.len == b->tp_original_dest_cid.len + ; +#undef MCMP +} + + +static void +run_test (const struct trapa_test *test) +{ + struct transport_params source_params; + struct transport_params decoded_params; + size_t dec_len; + int s; + unsigned char buf[ENC_BUF_SZ]; + + source_params = test->params; + source_params.tp_set |= test->addl_set; + + if (test->flags & TEST_ENCODE) + { + s = lsquic_tp_encode(&source_params, test->is_server, buf, sizeof(buf)); + assert(s >= 0); + assert((size_t) s == test->enc_len); + assert(0 == memcmp(test->encoded, buf, s)); + } + + if (test->flags & TEST_DECODE) + { + if (test->dec_len) + dec_len = test->dec_len; + else + dec_len = test->enc_len; + s = lsquic_tp_decode(test->encoded, dec_len, + test->is_server, &decoded_params); + if (!test->expect_decode_err) + { + assert(s >= 0); + assert((size_t) s == test->enc_len); + /* The decoder initializes all default values, so set the flag + * accordingly: + */ + source_params.tp_set |= ((1 << (MAX_NUM_WITH_DEF_TPI + 1)) - 1); + s = params_are_equal(&source_params, &decoded_params); + assert(s); + } + else + assert(s < 0); + } +} + + +static void +decode_file (const char *name) +{ + FILE *file; + size_t nread; + int s; + struct transport_params params; + unsigned char buf[0x1000]; + + file = fopen(name, "rb"); + if (!file) + { + perror("fopen"); + exit(1); + } + + nread = fread(buf, 1, sizeof(buf), file); + + s = lsquic_tp_decode(buf, nread, 0, ¶ms); + + fclose(file); + + printf("decoded params from %s: %d (%s)\n", name, s, s > 0 ? "OK" : "FAIL"); +} + + +int +main (int argc, char **argv) +{ + unsigned i; + int opt; + + while (-1 != (opt = getopt(argc, argv, "d:l:"))) + { + switch (opt) + { + case 'd': + decode_file(optarg); + return 0; + case 'l': + lsquic_log_to_fstream(stderr, LLTS_NONE); + lsquic_logger_lopt(optarg); + break; + default: + exit(1); + } + } + + for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) + run_test(&tests[i]); + + return 0; +} diff --git a/external/lsquic/tests/test_trechist.c b/external/lsquic/tests/test_trechist.c new file mode 100644 index 0000000..163bfca --- /dev/null +++ b/external/lsquic/tests/test_trechist.c @@ -0,0 +1,533 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/* Tests based on rechist tests */ + +#include +#include +#include +#include +#include +#include + +#ifdef WIN32 +#include "vc_compat.h" +#endif + +#include "lsquic_int_types.h" +#include "lsquic_trechist.h" + + +struct str_range_iter +{ + char *str; + struct lsquic_packno_range range; +}; + + +static const struct lsquic_packno_range * +next_str_range (void *ctx) +{ + struct str_range_iter *const str_iter = ctx; + + if (str_iter->str && str_iter->str[0] == '[') + { + str_iter->range.high = strtoul(str_iter->str + 1, &str_iter->str, 10); + assert('-' == *str_iter->str); + str_iter->range.low = strtoul(str_iter->str + 1, &str_iter->str, 10); + assert(']' == *str_iter->str); + ++str_iter->str; + return &str_iter->range; + } + else + return NULL; +} + + +static void +test_clone (trechist_mask_t src_mask, struct trechist_elem *src_elems) +{ + trechist_mask_t hist_mask; + struct trechist_elem *hist_elems; + const struct lsquic_packno_range *ranges[2]; + struct trechist_iter iters[2]; + + hist_elems = malloc(sizeof(hist_elems[0]) * TRECHIST_MAX_RANGES); + + lsquic_trechist_iter(&iters[0], src_mask, src_elems); + lsquic_trechist_copy_ranges(&hist_mask, hist_elems, &iters[0], + lsquic_trechist_first, lsquic_trechist_next); + + lsquic_trechist_iter(&iters[0], src_mask, src_elems); + lsquic_trechist_iter(&iters[1], hist_mask, hist_elems); + + for (ranges[0] = lsquic_trechist_first(&iters[0]), + ranges[1] = lsquic_trechist_first(&iters[1]); + + ranges[0] && ranges[1]; + + ranges[0] = lsquic_trechist_next(&iters[0]), + ranges[1] = lsquic_trechist_next(&iters[1])) + { + assert(ranges[0]->low == ranges[1]->low); + assert(ranges[0]->high == ranges[1]->high); + } + + assert(!ranges[0] && !ranges[1]); + + free(hist_elems); +} + + +static void +test4 (void) +{ + trechist_mask_t hist_mask; + struct trechist_elem *hist_elems; + const struct lsquic_packno_range *range; + struct trechist_iter iter; + lsquic_packno_t packno; + + hist_elems = malloc(sizeof(hist_elems[0]) * TRECHIST_MAX_RANGES); + hist_mask = 0; + test_clone(hist_mask, hist_elems); + + for (packno = 11917; packno <= 11941; ++packno) + lsquic_trechist_insert(&hist_mask, hist_elems, packno); + for (packno = 11946; packno <= 11994; ++packno) + lsquic_trechist_insert(&hist_mask, hist_elems, packno); + + test_clone(hist_mask, hist_elems); + lsquic_trechist_iter(&iter, hist_mask, hist_elems); + range = lsquic_trechist_first(&iter); + assert(range); + assert(range->high == 11994); + assert(range->low == 11946); + range = lsquic_trechist_next(&iter); + assert(range); + assert(range->high == 11941); + assert(range->low == 11917); + range = lsquic_trechist_next(&iter); + assert(!range); + + lsquic_trechist_insert(&hist_mask, hist_elems, 11995); + lsquic_trechist_insert(&hist_mask, hist_elems, 11996); + test_clone(hist_mask, hist_elems); + + lsquic_trechist_iter(&iter, hist_mask, hist_elems); + range = lsquic_trechist_first(&iter); + assert(range); + assert(range->high == 11996); + assert(range->low == 11946); + range = lsquic_trechist_next(&iter); + assert(range); + assert(range->high == 11941); + assert(range->low == 11917); + range = lsquic_trechist_next(&iter); + assert(!range); + test_clone(hist_mask, hist_elems); + + lsquic_trechist_insert(&hist_mask, hist_elems, 11912); + + lsquic_trechist_iter(&iter, hist_mask, hist_elems); + range = lsquic_trechist_first(&iter); + assert(range); + assert(range->high == 11996); + assert(range->low == 11946); + range = lsquic_trechist_next(&iter); + assert(range); + assert(range->high == 11941); + assert(range->low == 11917); + range = lsquic_trechist_next(&iter); + assert(range); + assert(range->high == 11912); + assert(range->low == 11912); + range = lsquic_trechist_next(&iter); + assert(!range); + + for (packno = 12169; packno <= 12193; ++packno) + lsquic_trechist_insert(&hist_mask, hist_elems, packno); + + test_clone(hist_mask, hist_elems); + + lsquic_trechist_iter(&iter, hist_mask, hist_elems); + range = lsquic_trechist_first(&iter); + assert(range); + assert(range->high == 12193); + assert(range->low == 12169); + range = lsquic_trechist_next(&iter); + assert(range); + assert(range->high == 11996); + assert(range->low == 11946); + range = lsquic_trechist_next(&iter); + assert(range); + assert(range->high == 11941); + assert(range->low == 11917); + range = lsquic_trechist_next(&iter); + assert(range); + assert(range->high == 11912); + assert(range->low == 11912); + range = lsquic_trechist_next(&iter); + assert(!range); + + test_clone(hist_mask, hist_elems); + + free(hist_elems); +} + + +static void +rechist2str (trechist_mask_t hist_mask, const struct trechist_elem *hist_elems, + char *buf, size_t bufsz) +{ + const struct lsquic_packno_range *range; + struct trechist_iter iter; + size_t off; + int n; + + lsquic_trechist_iter(&iter, hist_mask, hist_elems); + for (off = 0, range = lsquic_trechist_first(&iter); + range && off < bufsz; + off += n, range = lsquic_trechist_next(&iter)) + { + n = snprintf(buf + off, bufsz - off, "[%"PRIu64"-%"PRIu64"]", + range->high, range->low); + if (n < 0 || (size_t) n >= bufsz - off) + break; + } +} + + +static void +test5 (void) +{ + trechist_mask_t hist_mask; + struct trechist_elem *hist_elems; + char buf[100]; + + hist_elems = malloc(sizeof(hist_elems[0]) * TRECHIST_MAX_RANGES); + hist_mask = 0; + + lsquic_trechist_insert(&hist_mask, hist_elems, 1); + /* Packet 2 omitted because it could not be decrypted */ + lsquic_trechist_insert(&hist_mask, hist_elems, 3); + lsquic_trechist_insert(&hist_mask, hist_elems, 12); + + rechist2str(hist_mask, hist_elems, buf, sizeof(buf)); + assert(0 == strcmp(buf, "[12-12][3-3][1-1]")); + + lsquic_trechist_insert(&hist_mask, hist_elems, 4); + rechist2str(hist_mask, hist_elems, buf, sizeof(buf)); + assert(0 == strcmp(buf, "[12-12][4-3][1-1]")); + + lsquic_trechist_insert(&hist_mask, hist_elems, 10); + rechist2str(hist_mask, hist_elems, buf, sizeof(buf)); + assert(0 == strcmp(buf, "[12-12][10-10][4-3][1-1]")); + + lsquic_trechist_insert(&hist_mask, hist_elems, 6); + + rechist2str(hist_mask, hist_elems, buf, sizeof(buf)); + assert(0 == strcmp(buf, "[12-12][10-10][6-6][4-3][1-1]")); + + lsquic_trechist_insert(&hist_mask, hist_elems, 7); + lsquic_trechist_insert(&hist_mask, hist_elems, 8); + + rechist2str(hist_mask, hist_elems, buf, sizeof(buf)); + assert(0 == strcmp(buf, "[12-12][10-10][8-6][4-3][1-1]")); + test_clone(hist_mask, hist_elems); + assert(!(lsquic_trechist_contains(hist_mask, hist_elems, 0))); + assert(!(lsquic_trechist_contains(hist_mask, hist_elems, 9))); + assert(!(lsquic_trechist_contains(hist_mask, hist_elems, 20))); + assert(lsquic_trechist_contains(hist_mask, hist_elems, 4)); + assert(lsquic_trechist_contains(hist_mask, hist_elems, 1)); + assert(lsquic_trechist_contains(hist_mask, hist_elems, 7)); + assert(lsquic_trechist_contains(hist_mask, hist_elems, 8)); + assert(lsquic_trechist_contains(hist_mask, hist_elems, 6)); + + lsquic_trechist_insert(&hist_mask, hist_elems, 9); + + rechist2str(hist_mask, hist_elems, buf, sizeof(buf)); + assert(0 == strcmp(buf, "[12-12][10-6][4-3][1-1]")); + test_clone(hist_mask, hist_elems); + + lsquic_trechist_insert(&hist_mask, hist_elems, 5); + lsquic_trechist_insert(&hist_mask, hist_elems, 11); + + rechist2str(hist_mask, hist_elems, buf, sizeof(buf)); + assert(0 == strcmp(buf, "[12-3][1-1]")); + + free(hist_elems); +} + + +static void +basic_test (void) +{ + trechist_mask_t hist_mask; + struct trechist_elem *hist_elems; + const struct lsquic_packno_range *range; + struct trechist_iter iter; + unsigned i; + int s; + + hist_elems = malloc(sizeof(hist_elems[0]) * TRECHIST_MAX_RANGES); + hist_mask = 0; + + lsquic_trechist_iter(&iter, hist_mask, hist_elems); + range = lsquic_trechist_first(&iter); + assert(!range); + + s = lsquic_trechist_insert(&hist_mask, hist_elems, 1); + assert(("inserting packet number one is successful", 0 == s)); + + lsquic_trechist_iter(&iter, hist_mask, hist_elems); + range = lsquic_trechist_first(&iter); + assert(("first range returned correctly", range)); + assert(("first range low value checks out", range->low == 1)); + assert(("first range high value checks out", range->high == 1)); + range = lsquic_trechist_next(&iter); + assert(!range); + assert(("second range does not exist", !range)); + + for (i = 3; i <= 5; ++i) + { + s = lsquic_trechist_insert(&hist_mask, hist_elems, i); + assert(("inserting packet", s == 0)); + } + + lsquic_trechist_iter(&iter, hist_mask, hist_elems); + range = lsquic_trechist_first(&iter); + assert(("first range returned correctly", range)); + assert(("first range low value checks out", range->low == 3)); + assert(("first range high value checks out", range->high == 5)); + assert(!(lsquic_trechist_contains(hist_mask, hist_elems, 7))); + assert(!(lsquic_trechist_contains(hist_mask, hist_elems, 2))); + assert(lsquic_trechist_contains(hist_mask, hist_elems, 4)); + range = lsquic_trechist_next(&iter); + assert(("second range returned correctly", range)); + assert(("second range low value checks out", range->low == 1)); + assert(("second range high value checks out", range->high == 1)); + range = lsquic_trechist_next(&iter); + assert(("third range does not exist", !range)); + + assert(5 == lsquic_trechist_max(hist_mask, hist_elems)); + + s = lsquic_trechist_insert(&hist_mask, hist_elems, 10); + assert(("inserting packet", s == 0)); + + assert(10 == lsquic_trechist_max(hist_mask, hist_elems)); + + lsquic_trechist_iter(&iter, hist_mask, hist_elems); + range = lsquic_trechist_first(&iter); + assert(("first range returned correctly", range)); + assert(("first range low value checks out", range->low == 10)); + assert(("first range high value checks out", range->high == 10)); + test_clone(hist_mask, hist_elems); + + s = lsquic_trechist_insert(&hist_mask, hist_elems, 8); + assert(("inserting packet", s == 0)); + s = lsquic_trechist_insert(&hist_mask, hist_elems, 9); + assert(("inserting packet", s == 0)); + + /* Check merge */ + lsquic_trechist_iter(&iter, hist_mask, hist_elems); + range = lsquic_trechist_first(&iter); + assert(("first range returned correctly", range)); + assert(("first range low value checks out", range->low == 8)); + assert(("first range high value checks out", range->high == 10)); + + free(hist_elems); +} + + +static void +test_limits (void) +{ + trechist_mask_t hist_mask; + struct trechist_elem *hist_elems; + unsigned i; + int s; + + hist_elems = malloc(sizeof(hist_elems[0]) * TRECHIST_MAX_RANGES); + hist_mask = 0; + + for (i = 1; i <= UCHAR_MAX; ++i) + { + s = lsquic_trechist_insert(&hist_mask, hist_elems, i); + assert(s == 0); + } + + s = lsquic_trechist_insert(&hist_mask, hist_elems, i); + assert(s == -1); /* Overflow */ + + /* Always successful inserting new entries: */ + for (i = 0; i < TRECHIST_MAX_RANGES * 2; ++i) + { + s = lsquic_trechist_insert(&hist_mask, hist_elems, 1000 + 2 * i); + assert(s == 0); + } + + /* Always successful inserting new entries in descending order, too: */ + for (i = 0; i < TRECHIST_MAX_RANGES * 2; ++i) + { + s = lsquic_trechist_insert(&hist_mask, hist_elems, 10000 - 2 * i); + assert(s == 0); + } + + /* Test merge where count exceeds max: */ + hist_mask = 0; + lsquic_trechist_copy_ranges(&hist_mask, hist_elems, + & (struct str_range_iter) { .str = "[400-202][200-1]", }, + next_str_range, next_str_range); + s = lsquic_trechist_insert(&hist_mask, hist_elems, 201); + assert(s == -1); + + free(hist_elems); +} + + +static void +test_overflow (void) +{ + trechist_mask_t mask; + struct trechist_elem *elems; + int s; + char buf[0x1000]; + + struct str_range_iter str_iter = { .str = + "[395-390]" /* 1 */ + "[385-380]" + "[375-370]" + "[365-360]" + "[355-350]" /* 5 */ + "[345-340]" + "[335-330]" + "[325-320]" + "[315-310]" + "[305-300]" /* 10 */ + "[295-290]" + "[285-280]" + "[275-270]" + "[265-260]" + "[255-250]" /* 15 */ + "[245-240]" /* 16 */ + "[235-230]" /* Overflow vvvvvv */ + "[225-220]" + "[215-210]" + "[205-200]" + "[195-190]" + "[185-180]" }; + + elems = malloc(sizeof(elems[0]) * TRECHIST_MAX_RANGES); + lsquic_trechist_copy_ranges(&mask, elems, &str_iter, next_str_range, + next_str_range); + + rechist2str(mask, elems, buf, sizeof(buf)); + assert(0 == strcmp(buf, + "[395-390]" /* 1 */ + "[385-380]" + "[375-370]" + "[365-360]" + "[355-350]" /* 5 */ + "[345-340]" + "[335-330]" + "[325-320]" + "[315-310]" + "[305-300]" /* 10 */ + "[295-290]" + "[285-280]" + "[275-270]" + "[265-260]" + "[255-250]" /* 15 */ + "[245-240]" /* 16 */)); + + s = lsquic_trechist_insert(&mask, elems, 400); + assert(s == 0); + rechist2str(mask, elems, buf, sizeof(buf)); + assert(0 == strcmp(buf, + "[400-400]" + "[395-390]" + "[385-380]" + "[375-370]" + "[365-360]" + "[355-350]" + "[345-340]" + "[335-330]" + "[325-320]" + "[315-310]" + "[305-300]" + "[295-290]" + "[285-280]" + "[275-270]" + "[265-260]" + "[255-250]" + )); + + /* One more for a good measure */ + s = lsquic_trechist_insert(&mask, elems, 402); + assert(s == 0); + rechist2str(mask, elems, buf, sizeof(buf)); + assert(0 == strcmp(buf, + "[402-402]" + "[400-400]" + "[395-390]" + "[385-380]" + "[375-370]" + "[365-360]" + "[355-350]" + "[345-340]" + "[335-330]" + "[325-320]" + "[315-310]" + "[305-300]" + "[295-290]" + "[285-280]" + "[275-270]" + "[265-260]" + )); + + s = lsquic_trechist_insert(&mask, elems, 401); + assert(s == 0); + s = lsquic_trechist_insert(&mask, elems, 500); + assert(s == 0); + s = lsquic_trechist_insert(&mask, elems, 200); + assert(s == 0); + s = lsquic_trechist_insert(&mask, elems, 267); + assert(s == 0); + + /* One more for a good measure */ + s = lsquic_trechist_insert(&mask, elems, 402); + assert(s == 0); + rechist2str(mask, elems, buf, sizeof(buf)); + assert(0 == strcmp(buf, + "[500-500]" + "[402-400]" + "[395-390]" + "[385-380]" + "[375-370]" + "[365-360]" + "[355-350]" + "[345-340]" + "[335-330]" + "[325-320]" + "[315-310]" + "[305-300]" + "[295-290]" + "[285-280]" + "[275-270]" + "[267-267]" + )); + + free(elems); +} + + +int +main (void) +{ + basic_test(); + test4(); + test5(); + test_limits(); + test_overflow(); + + return 0; +} diff --git a/external/lsquic/tests/test_varint.c b/external/lsquic/tests/test_varint.c new file mode 100644 index 0000000..b6779b7 --- /dev/null +++ b/external/lsquic/tests/test_varint.c @@ -0,0 +1,124 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include + +#include "lsquic_varint.h" + +#ifdef _MSC_VER +#include "vc_compat.h" +#endif + +#define MAX_INPUT_SZ 8 + +struct test_read_varint +{ + /* Input: */ + unsigned char input[MAX_INPUT_SZ]; + size_t in_sz; + /* Output: */ + int rv; + uint64_t val; +}; + +static const struct test_read_varint read_tests[] = +{ + { + .input = "\x25", + .in_sz = 0, + .rv = -1, + }, + { + .input = "\x25", + .in_sz = 2, + .rv = 1, + .val = 0x25, + }, + { + .input = "\x40\x25", + .in_sz = 1, + .rv = -1, + }, + { + .input = "\x40\x25", + .in_sz = 2, + .rv = 2, + .val = 0x25, + }, + { + .input = "\x9d\x7f\x3e\x7d", + .in_sz = 2, + .rv = -1, + }, + { + .input = "\x9d\x7f\x3e\x7d", + .in_sz = 4, + .rv = 4, + .val = 494878333, + }, + { + .input = "\xc2\x19\x7c\x5e\xff\x14\xe8\x8c", + .in_sz = 7, + .rv = -1, + }, + { + .input = "\xc2\x19\x7c\x5e\xff\x14\xe8\x8c", + .in_sz = 8, + .rv = 8, + .val = 151288809941952652ull, + }, +}; + + +int +main (void) +{ + const struct test_read_varint *test; + const struct test_read_varint *const end + = read_tests + sizeof(read_tests) / sizeof(read_tests[0]); + size_t input_sz, avail; + struct varint_read_state state; + const unsigned char *p, *endp; + int s; + + for (test = read_tests; test < end; ++test) + { + uint64_t val; + const int rv = vint_read(test->input, test->input + test->in_sz, &val); + assert(rv == test->rv); + if (test->rv > 0) + assert(val == test->val); + + /* Test non-blocking read */ + for (input_sz = MAX_INPUT_SZ; input_sz > 0; --input_sz) + { + state.pos = 0; + p = test->input; + endp = p + test->in_sz; + while (p < endp) + { + avail = (uintptr_t) (endp - p); + if (avail > input_sz) + avail = input_sz; + s = lsquic_varint_read_nb(&p, p + avail, &state); + if (0 == s) + { + assert(state.val == test->val); + assert(p <= endp); + break; + } + else if (p == endp) + { + assert(test->rv == -1); + break; + } + else + { + assert(p < endp); + } + } + } + } + + return 0; +} diff --git a/external/lsquic/tests/test_ver_nego.c b/external/lsquic/tests/test_ver_nego.c new file mode 100644 index 0000000..e753d0a --- /dev/null +++ b/external/lsquic/tests/test_ver_nego.c @@ -0,0 +1,160 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_packet_common.h" +#include "lsquic_parse.h" +#include "lsquic_parse_common.h" +#include "lsquic_mm.h" +#include "lsquic_packet_in.h" +#include "lsquic_engine_public.h" +#include "lsquic_version.h" + + +/* The struct is used to test both generation and parsing of version + * negotiation packet. + */ +struct gen_ver_nego_test { + int gvnt_lineno; + /* Generate: inputs; parse: outputs */ + enum lsquic_version + gvnt_gen_ver; + uint64_t gvnt_cid; + unsigned gvnt_versions; + size_t gvnt_bufsz; + /* Generate: outputs; parse: inputs */ + int gvnt_len; /* Retval */ + char gvnt_buf[0x40]; /* Contents */ +}; + + +static const struct gen_ver_nego_test tests[] = { + + { .gvnt_lineno = __LINE__, + .gvnt_cid = 0x0102030405060708UL, + .gvnt_versions = (1 << LSQVER_043), + .gvnt_gen_ver = LSQVER_043, + .gvnt_bufsz = 12, + .gvnt_len = -1, /* Buffer size is too small */ + }, + + { .gvnt_lineno = __LINE__, + .gvnt_cid = 0x0102030405060708UL, + .gvnt_versions = (1 << LSQVER_043) | (1 << N_LSQVER), + .gvnt_gen_ver = LSQVER_043, + .gvnt_bufsz = 20, + .gvnt_len = -1, /* Invalid version specified in the bitmask */ + }, + + { .gvnt_lineno = __LINE__, + .gvnt_cid = 0x0102030405060708UL, + .gvnt_versions = (1 << LSQVER_043) | (1 << LSQVER_046), + .gvnt_gen_ver = LSQVER_043, + .gvnt_bufsz = 17, + .gvnt_len = 17, + .gvnt_buf = { + PACKET_PUBLIC_FLAGS_VERSION| + PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID, + 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, /* Connection ID */ + 'Q', '0', '4', '3', + 'Q', '0', '4', '6', + }, + }, + +}; + + +static void +test_parsing_ver_nego (const struct gen_ver_nego_test *gvnt) +{ + int s; + lsquic_packet_in_t *packet_in; + struct lsquic_mm mm; + struct ver_iter vi; + lsquic_ver_tag_t ver_tag; + enum lsquic_version version; + struct packin_parse_state ppstate; + unsigned version_bitmask = gvnt->gvnt_versions; + + lsquic_mm_init(&mm); + packet_in = lsquic_mm_get_packet_in(&mm); + packet_in->pi_data = lsquic_mm_get_packet_in_buf(&mm, 1370); + packet_in->pi_flags |= PI_OWN_DATA; + memcpy(packet_in->pi_data, gvnt->gvnt_buf, gvnt->gvnt_len); + s = lsquic_parse_packet_in_begin(packet_in, gvnt->gvnt_len, 0, GQUIC_CID_LEN, &ppstate); + assert(s == 0); + + for (s = lsquic_packet_in_ver_first(packet_in, &vi, &ver_tag); s; + s = lsquic_packet_in_ver_next(&vi, &ver_tag)) + { + version = lsquic_tag2ver(ver_tag); + assert(version < N_LSQVER); + assert(version_bitmask & (1 << version)); + version_bitmask &= ~(1 << version); + } + + assert(0 == version_bitmask); + + lsquic_mm_put_packet_in(&mm, packet_in); + lsquic_mm_cleanup(&mm); +} + + +static void +run_gvnt (int i) +{ + const struct gen_ver_nego_test *const gvnt = &tests[i]; + lsquic_cid_t scid, dcid; + int len; + + memset(&dcid, 0, sizeof(dcid)); + dcid.len = sizeof(gvnt->gvnt_cid); + memcpy(dcid.idbuf, &gvnt->gvnt_cid, sizeof(gvnt->gvnt_cid)); + + unsigned char out[0x40]; + assert(sizeof(out) <= sizeof(gvnt->gvnt_buf)); /* Internal sanity check */ + + if ((1 << gvnt->gvnt_gen_ver) & LSQUIC_GQUIC_HEADER_VERSIONS) + len = lsquic_gquic_gen_ver_nego_pkt(out, gvnt->gvnt_bufsz, &dcid, + gvnt->gvnt_versions); + else + { + /* XXX this is never executed, as there is no test case for this */ + scid = (lsquic_cid_t) { .len = 0, }; + len = lsquic_Q046_gen_ver_nego_pkt(out, gvnt->gvnt_bufsz, &dcid, + &scid, gvnt->gvnt_versions, ((unsigned char) rand()) & 0xF); + } + assert(("Packet length is correct", len == gvnt->gvnt_len)); + + if (gvnt->gvnt_len > 0) + { + if ((1 << gvnt->gvnt_gen_ver) & LSQUIC_GQUIC_HEADER_VERSIONS) + assert(("Packet contents are correct", + 0 == memcmp(out, gvnt->gvnt_buf, gvnt->gvnt_len))); + else + { + assert(("Packet contents are correct", + 0 == memcmp(out + 1, gvnt->gvnt_buf + 1, gvnt->gvnt_len - 1))); + assert(out[0] & 0x80); /* Other 7 bits are random */ + } + test_parsing_ver_nego(gvnt); + } +} + + +int +main (void) +{ + unsigned i; + for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) + run_gvnt(i); + return 0; +} diff --git a/external/lsquic/tests/test_wuf_gquic_be.c b/external/lsquic/tests/test_wuf_gquic_be.c new file mode 100644 index 0000000..992c78b --- /dev/null +++ b/external/lsquic/tests/test_wuf_gquic_be.c @@ -0,0 +1,74 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_parse.h" + +//static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_043); // will not work on MSVC +#define pf ((const struct parse_funcs *const)select_pf_by_ver(LSQVER_043)) + + +/* The test is both for generation and parsing: */ +struct wuf_test { + unsigned char buf[0x10]; + size_t buf_len; + lsquic_stream_id_t stream_id; + uint64_t offset; +}; + +static const struct wuf_test wuf_tests[] = { + { + .buf = { 0x04, 0x00, 0x67, 0x45, 0x34, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, }, + .buf_len = GQUIC_WUF_SZ, + .stream_id = 0x674534, + .offset = 0x0102030405, + }, + + { .buf = { 0 }, } +}; + + +static void +run_parse_tests (void) +{ + const struct wuf_test *test; + for (test = wuf_tests; test->buf[0]; ++test) + { + lsquic_stream_id_t stream_id = ~0; + uint64_t offset = ~0; + int sz = pf->pf_parse_window_update_frame(test->buf, test->buf_len, &stream_id, &offset); + assert(sz == GQUIC_WUF_SZ); + assert(stream_id == test->stream_id); + assert(offset == test->offset); + } +} + + +static void +run_gen_tests (void) +{ + const struct wuf_test *test; + for (test = wuf_tests; test->buf[0]; ++test) + { + unsigned char buf[0x100]; + int sz = pf->pf_gen_window_update_frame(buf, test->buf_len, test->stream_id, test->offset); + assert(sz == GQUIC_WUF_SZ); + assert(0 == memcmp(buf, test->buf, sz)); + } +} + + +int +main (void) +{ + run_parse_tests(); + run_gen_tests(); + return 0; +} diff --git a/external/lsquic/tests/test_wuf_gquic_le.c b/external/lsquic/tests/test_wuf_gquic_le.c new file mode 100644 index 0000000..7c0cb43 --- /dev/null +++ b/external/lsquic/tests/test_wuf_gquic_le.c @@ -0,0 +1,74 @@ +/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ +#include +#include +#include +#include +#ifndef WIN32 +#include +#endif + +#include "lsquic.h" +#include "lsquic_types.h" +#include "lsquic_alarmset.h" +#include "lsquic_parse.h" + +static const struct parse_funcs *const pf = select_pf_by_ver(LSQVER_035); + + +/* The test is both for generation and parsing: */ +struct wuf_test { + unsigned char buf[0x10]; + size_t buf_len; + uint32_t stream_id; + uint64_t offset; +}; + +static const struct wuf_test wuf_tests[] = { + { + .buf = { 0x04, 0x34, 0x45, 0x67, 0x00, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, }, + .buf_len = QUIC_WUF_SZ, + .stream_id = 0x674534, + .offset = 0x0102030405, + }, + + { .buf = { 0 }, } +}; + + +static void +run_parse_tests (void) +{ + const struct wuf_test *test; + for (test = wuf_tests; test->buf[0]; ++test) + { + uint32_t stream_id = ~0; + uint64_t offset = ~0; + int sz = pf->pf_parse_window_update_frame(test->buf, test->buf_len, &stream_id, &offset); + assert(sz == QUIC_WUF_SZ); + assert(stream_id == test->stream_id); + assert(offset == test->offset); + } +} + + +static void +run_gen_tests (void) +{ + const struct wuf_test *test; + for (test = wuf_tests; test->buf[0]; ++test) + { + unsigned char buf[0x100]; + int sz = pf->pf_gen_window_update_frame(buf, test->buf_len, test->stream_id, test->offset); + assert(sz == QUIC_WUF_SZ); + assert(0 == memcmp(buf, test->buf, sz)); + } +} + + +int +main (void) +{ + run_parse_tests(); + run_gen_tests(); + return 0; +} diff --git a/external/lsquic/tools/gen-rst-tags.pl b/external/lsquic/tools/gen-rst-tags.pl new file mode 100644 index 0000000..a3b7715 --- /dev/null +++ b/external/lsquic/tools/gen-rst-tags.pl @@ -0,0 +1,48 @@ +#!/usr/bin/env perl +# +# Parse .rst files and generate tags. + +use strict; +use warnings; + +my $id = '[a-zA-Z_0-9]'; +my @tags; +for my $file (@ARGV) { + open my $fh, '<', $file + or die "Cannot open $file for reading: $!"; + while (<$fh>) { + chomp; + if (m/^(\.\. function:: )(.+)/) { + my ($pfx, $val) = ($1, $2); + if ($val =~ m/($id+) \(/o) { + push @tags, "$1\t$file\t/^$pfx$val/\n"; + } else { + warn "unknown pattern in $file:$.: $_\n"; + } + } elsif (m/^(\s*\.\. (?:type|member):: )(.+)/) { + my ($pfx, $val) = ($1, $2); + if ($val =~ m/\(\*([^\)]+)\)/) { + push @tags, "$1\t$file\t/^$pfx$val/\n"; + } elsif ($val =~ m/($id+)(?::\d+)?\s*$/o) { + push @tags, "$1\t$file\t/^$pfx$val/\n"; + } else { + warn "unknown pattern in $file:$.: $_\n"; + } + } elsif (m/^(\s*\.\. var:: )(.+)/) { + my ($pfx, $val) = ($1, $2); + if ($val =~ m/($id+)(?:\[[^\]]*\])?\s*$/o) { + push @tags, "$1\t$file\t/^$pfx$val/\n"; + } else { + warn "unknown pattern in $file:$.: $_\n"; + } + } elsif (m/^(\s*\.\. macro::\s+)(\S+)\s*$/) { + push @tags, "$2\t$file\t/^$1$2/\n"; + } elsif (m/^\s*\.\. (?:toctree|image|highlight|code-block)::/) { + # Skip + } elsif (m/^\s*\.\.\s*\S+::/) { + warn "unknown pattern in $file:$.: $_\n"; + } + } +} + +print sort @tags; diff --git a/external/lsquic/tools/gen-tags.pl b/external/lsquic/tools/gen-tags.pl new file mode 100755 index 0000000..1012044 --- /dev/null +++ b/external/lsquic/tools/gen-tags.pl @@ -0,0 +1,68 @@ +#!/usr/bin/env perl +# +# Generate tags for lsquic project +# +# If your `ctags' is not Universal Ctags, set UCTAGS environment variable to +# point to it. + +use warnings; + +use Getopt::Long; + +GetOptions("docs!" => \my $do_docs); + +$tmpfile = '.tags.' . $$ . rand; +$ctags = $ENV{UCTAGS} || 'ctags'; +$queue_h = '/usr/include/sys/queue.h'; + +@dirs = qw(include bin tests src/lshpack src/liblsquic); + +system($ctags, '-f', $tmpfile, + ('--kinds-c=+p') x !!$do_docs, # Index function prototypes + qw(-R -I SLIST_ENTRY+=void -I LIST_ENTRY+=void + -I STAILQ_ENTRY+=void -I TAILQ_ENTRY+=void -I CIRCLEQ_ENTRY+=void + -I TAILQ_ENTRY+=void -I SLIST_HEAD+=void -I LIST_HEAD+=void + -I STAILQ_HEAD+=void -I TAILQ_HEAD+=void -I CIRCLEQ_HEAD+=void + -I TAILQ_HEAD+=void), @dirs) + and die "ctags failed"; + +-f $queue_h + and system($ctags, '-f', $tmpfile, '-a', $queue_h) + and die "ctags $queue_h failed"; + +if ($do_docs) { + @rst = glob("docs/*.rst"); + if (@rst) { + system("$^X tools/gen-rst-tags.pl @rst >> $tmpfile") + and die "cannot run tools/gen-rst-tags.pl"; + } +} + +END { unlink $tmpfile } + +open TMPFILE, "<", $tmpfile + or die "cannot open $tmpfile for reading: $!"; +while () +{ + push @lines, $_; + if ( + s/^(mini|full|ietf_full|ietf_mini|evanescent)_conn_ci_/ci_/ + or s/^(nocopy|hash|error)_di_/di_/ + or s/^(gquic)_(be|Q046|Q050)_/pf_/ + or s/^ietf_v[0-9][0-9]*_/pf_/ + or s/^stock_shi_/shi_/ + or s/^iquic_esf_/esf_/ + or s/^gquic[0-9]?_esf_/esf_/ + or s/^iquic_esfi_/esfi_/ + or s/^lsquic_[sh]pi_/pii_/ + or s/^(lsquic_cubic|lsquic_bbr)_/cci_/ + ) + { + push @lines, $_; + } +} +open TMPFILE, ">", $tmpfile + or die "cannot open $tmpfile for writing: $!"; +print TMPFILE sort @lines; +close TMPFILE; +rename $tmpfile, 'tags'; diff --git a/external/lsquic/wincompat/README.txt b/external/lsquic/wincompat/README.txt new file mode 100644 index 0000000..a5ced1f --- /dev/null +++ b/external/lsquic/wincompat/README.txt @@ -0,0 +1,11 @@ +# Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. +- only debug and release are expected in the Cmakelists.txt. If you need a different config, please follow the model in that file to add it. + +- vcpkg does not have boringssl, so you'll have to build it yourself. Follow the instructions at the boringssl repository. + With the caveat that you should do it from a VC command prompt for the correct architecture and make sure to set all + the paths for perl,ninja,etc. correctly. Also watch out for C runtime library mismatches with the externals you link. + + +- zlib and libevent do exist in vcpkg. + +- getopt files are really old and could probably use updating. \ No newline at end of file diff --git a/external/lsquic/wincompat/sys/queue.h b/external/lsquic/wincompat/sys/queue.h new file mode 100644 index 0000000..e15d61a --- /dev/null +++ b/external/lsquic/wincompat/sys/queue.h @@ -0,0 +1,860 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright (c) 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)queue.h 8.5 (Berkeley) 8/20/94 + * $FreeBSD$ + */ + +#ifndef _SYS_QUEUE_H_ +#define _SYS_QUEUE_H_ + + +/* + * This file defines four types of data structures: singly-linked lists, + * singly-linked tail queues, lists and tail queues. + * + * A singly-linked list is headed by a single forward pointer. The elements + * are singly linked for minimum space and pointer manipulation overhead at + * the expense of O(n) removal for arbitrary elements. New elements can be + * added to the list after an existing element or at the head of the list. + * Elements being removed from the head of the list should use the explicit + * macro for this purpose for optimum efficiency. A singly-linked list may + * only be traversed in the forward direction. Singly-linked lists are ideal + * for applications with large datasets and few or no removals or for + * implementing a LIFO queue. + * + * A singly-linked tail queue is headed by a pair of pointers, one to the + * head of the list and the other to the tail of the list. The elements are + * singly linked for minimum space and pointer manipulation overhead at the + * expense of O(n) removal for arbitrary elements. New elements can be added + * to the list after an existing element, at the head of the list, or at the + * end of the list. Elements being removed from the head of the tail queue + * should use the explicit macro for this purpose for optimum efficiency. + * A singly-linked tail queue may only be traversed in the forward direction. + * Singly-linked tail queues are ideal for applications with large datasets + * and few or no removals or for implementing a FIFO queue. + * + * A list is headed by a single forward pointer (or an array of forward + * pointers for a hash table header). The elements are doubly linked + * so that an arbitrary element can be removed without a need to + * traverse the list. New elements can be added to the list before + * or after an existing element or at the head of the list. A list + * may be traversed in either direction. + * + * A tail queue is headed by a pair of pointers, one to the head of the + * list and the other to the tail of the list. The elements are doubly + * linked so that an arbitrary element can be removed without a need to + * traverse the list. New elements can be added to the list before or + * after an existing element, at the head of the list, or at the end of + * the list. A tail queue may be traversed in either direction. + * + * For details on the use of these macros, see the queue(3) manual page. + * + * Below is a summary of implemented functions where: + * + means the macro is available + * - means the macro is not available + * s means the macro is available but is slow (runs in O(n) time) + * + * SLIST LIST STAILQ TAILQ + * _HEAD + + + + + * _CLASS_HEAD + + + + + * _HEAD_INITIALIZER + + + + + * _ENTRY + + + + + * _CLASS_ENTRY + + + + + * _INIT + + + + + * _EMPTY + + + + + * _FIRST + + + + + * _NEXT + + + + + * _PREV - + - + + * _LAST - - + + + * _FOREACH + + + + + * _FOREACH_FROM + + + + + * _FOREACH_SAFE + + + + + * _FOREACH_FROM_SAFE + + + + + * _FOREACH_REVERSE - - - + + * _FOREACH_REVERSE_FROM - - - + + * _FOREACH_REVERSE_SAFE - - - + + * _FOREACH_REVERSE_FROM_SAFE - - - + + * _INSERT_HEAD + + + + + * _INSERT_BEFORE - + - + + * _INSERT_AFTER + + + + + * _INSERT_TAIL - - + + + * _CONCAT s s + + + * _REMOVE_AFTER + - + - + * _REMOVE_HEAD + - + - + * _REMOVE s + s + + * _SWAP + + + + + * + */ +#ifdef QUEUE_MACRO_DEBUG +#warn Use QUEUE_MACRO_DEBUG_TRACE and/or QUEUE_MACRO_DEBUG_TRASH +#define QUEUE_MACRO_DEBUG_TRACE +#define QUEUE_MACRO_DEBUG_TRASH +#endif + +#ifdef QUEUE_MACRO_DEBUG_TRACE +/* Store the last 2 places the queue element or head was altered */ +struct qm_trace { + unsigned long lastline; + unsigned long prevline; + const char *lastfile; + const char *prevfile; +}; + +#define TRACEBUF struct qm_trace trace; +#define TRACEBUF_INITIALIZER { __LINE__, 0, __FILE__, NULL } , + +#define QMD_TRACE_HEAD(head) do { \ + (head)->trace.prevline = (head)->trace.lastline; \ + (head)->trace.prevfile = (head)->trace.lastfile; \ + (head)->trace.lastline = __LINE__; \ + (head)->trace.lastfile = __FILE__; \ +} while (0) + +#define QMD_TRACE_ELEM(elem) do { \ + (elem)->trace.prevline = (elem)->trace.lastline; \ + (elem)->trace.prevfile = (elem)->trace.lastfile; \ + (elem)->trace.lastline = __LINE__; \ + (elem)->trace.lastfile = __FILE__; \ +} while (0) + +#else /* !QUEUE_MACRO_DEBUG_TRACE */ +#define QMD_TRACE_ELEM(elem) +#define QMD_TRACE_HEAD(head) +#define TRACEBUF +#define TRACEBUF_INITIALIZER +#endif /* QUEUE_MACRO_DEBUG_TRACE */ + +#ifdef QUEUE_MACRO_DEBUG_TRASH +#define TRASHIT(x) do {(x) = (void *)-1;} while (0) +#define QMD_IS_TRASHED(x) ((x) == (void *)(intptr_t)-1) +#else /* !QUEUE_MACRO_DEBUG_TRASH */ +#define TRASHIT(x) +#define QMD_IS_TRASHED(x) 0 +#endif /* QUEUE_MACRO_DEBUG_TRASH */ + +#if defined(QUEUE_MACRO_DEBUG_TRACE) || defined(QUEUE_MACRO_DEBUG_TRASH) +#define QMD_SAVELINK(name, link) void **name = (void *)&(link) +#else /* !QUEUE_MACRO_DEBUG_TRACE && !QUEUE_MACRO_DEBUG_TRASH */ +#define QMD_SAVELINK(name, link) +#endif /* QUEUE_MACRO_DEBUG_TRACE || QUEUE_MACRO_DEBUG_TRASH */ + +#ifdef __cplusplus +/* + * In C++ there can be structure lists and class lists: + */ +#define QUEUE_TYPEOF(type) type +#else +#define QUEUE_TYPEOF(type) struct type +#endif + +/* + * Singly-linked List declarations. + */ +#define SLIST_HEAD(name, type) \ +struct name { \ + struct type *slh_first; /* first element */ \ +} + +#define SLIST_CLASS_HEAD(name, type) \ +struct name { \ + class type *slh_first; /* first element */ \ +} + +#define SLIST_HEAD_INITIALIZER(head) \ + { NULL } + +#define SLIST_ENTRY(type) \ +struct { \ + struct type *sle_next; /* next element */ \ +} + +#define SLIST_CLASS_ENTRY(type) \ +struct { \ + class type *sle_next; /* next element */ \ +} + +/* + * Singly-linked List functions. + */ +#if (defined(_KERNEL) && defined(INVARIANTS)) +#define QMD_SLIST_CHECK_PREVPTR(prevp, elm) do { \ + if (*(prevp) != (elm)) \ + panic("Bad prevptr *(%p) == %p != %p", \ + (prevp), *(prevp), (elm)); \ +} while (0) +#else +#define QMD_SLIST_CHECK_PREVPTR(prevp, elm) +#endif + +#define SLIST_CONCAT(head1, head2, type, field) do { \ + QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head1); \ + if (curelm == NULL) { \ + if ((SLIST_FIRST(head1) = SLIST_FIRST(head2)) != NULL) \ + SLIST_INIT(head2); \ + } else if (SLIST_FIRST(head2) != NULL) { \ + while (SLIST_NEXT(curelm, field) != NULL) \ + curelm = SLIST_NEXT(curelm, field); \ + SLIST_NEXT(curelm, field) = SLIST_FIRST(head2); \ + SLIST_INIT(head2); \ + } \ +} while (0) + +#define SLIST_EMPTY(head) ((head)->slh_first == NULL) + +#define SLIST_FIRST(head) ((head)->slh_first) + +#define SLIST_FOREACH(var, head, field) \ + for ((var) = SLIST_FIRST((head)); \ + (var); \ + (var) = SLIST_NEXT((var), field)) + +#define SLIST_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ + (var); \ + (var) = SLIST_NEXT((var), field)) + +#define SLIST_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = SLIST_FIRST((head)); \ + (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define SLIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \ + (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \ + for ((varp) = &SLIST_FIRST((head)); \ + ((var) = *(varp)) != NULL; \ + (varp) = &SLIST_NEXT((var), field)) + +#define SLIST_INIT(head) do { \ + SLIST_FIRST((head)) = NULL; \ +} while (0) + +#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ + SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \ + SLIST_NEXT((slistelm), field) = (elm); \ +} while (0) + +#define SLIST_INSERT_HEAD(head, elm, field) do { \ + SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \ + SLIST_FIRST((head)) = (elm); \ +} while (0) + +#define SLIST_NEXT(elm, field) ((elm)->field.sle_next) + +#define SLIST_REMOVE(head, elm, type, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.sle_next); \ + if (SLIST_FIRST((head)) == (elm)) { \ + SLIST_REMOVE_HEAD((head), field); \ + } \ + else { \ + QUEUE_TYPEOF(type) *curelm = SLIST_FIRST(head); \ + while (SLIST_NEXT(curelm, field) != (elm)) \ + curelm = SLIST_NEXT(curelm, field); \ + SLIST_REMOVE_AFTER(curelm, field); \ + } \ + TRASHIT(*oldnext); \ +} while (0) + +#define SLIST_REMOVE_AFTER(elm, field) do { \ + SLIST_NEXT(elm, field) = \ + SLIST_NEXT(SLIST_NEXT(elm, field), field); \ +} while (0) + +#define SLIST_REMOVE_HEAD(head, field) do { \ + SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \ +} while (0) + +#define SLIST_REMOVE_PREVPTR(prevp, elm, field) do { \ + QMD_SLIST_CHECK_PREVPTR(prevp, elm); \ + *(prevp) = SLIST_NEXT(elm, field); \ + TRASHIT((elm)->field.sle_next); \ +} while (0) + +#define SLIST_SWAP(head1, head2, type) do { \ + QUEUE_TYPEOF(type) *swap_first = SLIST_FIRST(head1); \ + SLIST_FIRST(head1) = SLIST_FIRST(head2); \ + SLIST_FIRST(head2) = swap_first; \ +} while (0) + +/* + * Singly-linked Tail queue declarations. + */ +#define STAILQ_HEAD(name, type) \ +struct name { \ + struct type *stqh_first;/* first element */ \ + struct type **stqh_last;/* addr of last next element */ \ +} + +#define STAILQ_CLASS_HEAD(name, type) \ +struct name { \ + class type *stqh_first; /* first element */ \ + class type **stqh_last; /* addr of last next element */ \ +} + +#define STAILQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).stqh_first } + +#define STAILQ_ENTRY(type) \ +struct { \ + struct type *stqe_next; /* next element */ \ +} + +#define STAILQ_CLASS_ENTRY(type) \ +struct { \ + class type *stqe_next; /* next element */ \ +} + +/* + * Singly-linked Tail queue functions. + */ +#define STAILQ_CONCAT(head1, head2) do { \ + if (!STAILQ_EMPTY((head2))) { \ + *(head1)->stqh_last = (head2)->stqh_first; \ + (head1)->stqh_last = (head2)->stqh_last; \ + STAILQ_INIT((head2)); \ + } \ +} while (0) + +#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL) + +#define STAILQ_FIRST(head) ((head)->stqh_first) + +#define STAILQ_FOREACH(var, head, field) \ + for((var) = STAILQ_FIRST((head)); \ + (var); \ + (var) = STAILQ_NEXT((var), field)) + +#define STAILQ_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ + (var); \ + (var) = STAILQ_NEXT((var), field)) + +#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = STAILQ_FIRST((head)); \ + (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define STAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \ + (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define STAILQ_INIT(head) do { \ + STAILQ_FIRST((head)) = NULL; \ + (head)->stqh_last = &STAILQ_FIRST((head)); \ +} while (0) + +#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \ + if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ + STAILQ_NEXT((tqelm), field) = (elm); \ +} while (0) + +#define STAILQ_INSERT_HEAD(head, elm, field) do { \ + if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ + STAILQ_FIRST((head)) = (elm); \ +} while (0) + +#define STAILQ_INSERT_TAIL(head, elm, field) do { \ + STAILQ_NEXT((elm), field) = NULL; \ + *(head)->stqh_last = (elm); \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ +} while (0) + +#define STAILQ_LAST(head, type, field) \ + (STAILQ_EMPTY((head)) ? NULL : \ + __containerof((head)->stqh_last, \ + QUEUE_TYPEOF(type), field.stqe_next)) + +#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next) + +#define STAILQ_REMOVE(head, elm, type, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.stqe_next); \ + if (STAILQ_FIRST((head)) == (elm)) { \ + STAILQ_REMOVE_HEAD((head), field); \ + } \ + else { \ + QUEUE_TYPEOF(type) *curelm = STAILQ_FIRST(head); \ + while (STAILQ_NEXT(curelm, field) != (elm)) \ + curelm = STAILQ_NEXT(curelm, field); \ + STAILQ_REMOVE_AFTER(head, curelm, field); \ + } \ + TRASHIT(*oldnext); \ +} while (0) + +#define STAILQ_REMOVE_AFTER(head, elm, field) do { \ + if ((STAILQ_NEXT(elm, field) = \ + STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ +} while (0) + +#define STAILQ_REMOVE_HEAD(head, field) do { \ + if ((STAILQ_FIRST((head)) = \ + STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \ + (head)->stqh_last = &STAILQ_FIRST((head)); \ +} while (0) + +#define STAILQ_SWAP(head1, head2, type) do { \ + QUEUE_TYPEOF(type) *swap_first = STAILQ_FIRST(head1); \ + QUEUE_TYPEOF(type) **swap_last = (head1)->stqh_last; \ + STAILQ_FIRST(head1) = STAILQ_FIRST(head2); \ + (head1)->stqh_last = (head2)->stqh_last; \ + STAILQ_FIRST(head2) = swap_first; \ + (head2)->stqh_last = swap_last; \ + if (STAILQ_EMPTY(head1)) \ + (head1)->stqh_last = &STAILQ_FIRST(head1); \ + if (STAILQ_EMPTY(head2)) \ + (head2)->stqh_last = &STAILQ_FIRST(head2); \ +} while (0) + + +/* + * List declarations. + */ +#define LIST_HEAD(name, type) \ +struct name { \ + struct type *lh_first; /* first element */ \ +} + +#define LIST_CLASS_HEAD(name, type) \ +struct name { \ + class type *lh_first; /* first element */ \ +} + +#define LIST_HEAD_INITIALIZER(head) \ + { NULL } + +#define LIST_ENTRY(type) \ +struct { \ + struct type *le_next; /* next element */ \ + struct type **le_prev; /* address of previous next element */ \ +} + +#define LIST_CLASS_ENTRY(type) \ +struct { \ + class type *le_next; /* next element */ \ + class type **le_prev; /* address of previous next element */ \ +} + +/* + * List functions. + */ + +#if (defined(_KERNEL) && defined(INVARIANTS)) +/* + * QMD_LIST_CHECK_HEAD(LIST_HEAD *head, LIST_ENTRY NAME) + * + * If the list is non-empty, validates that the first element of the list + * points back at 'head.' + */ +#define QMD_LIST_CHECK_HEAD(head, field) do { \ + if (LIST_FIRST((head)) != NULL && \ + LIST_FIRST((head))->field.le_prev != \ + &LIST_FIRST((head))) \ + panic("Bad list head %p first->prev != head", (head)); \ +} while (0) + +/* + * QMD_LIST_CHECK_NEXT(TYPE *elm, LIST_ENTRY NAME) + * + * If an element follows 'elm' in the list, validates that the next element + * points back at 'elm.' + */ +#define QMD_LIST_CHECK_NEXT(elm, field) do { \ + if (LIST_NEXT((elm), field) != NULL && \ + LIST_NEXT((elm), field)->field.le_prev != \ + &((elm)->field.le_next)) \ + panic("Bad link elm %p next->prev != elm", (elm)); \ +} while (0) + +/* + * QMD_LIST_CHECK_PREV(TYPE *elm, LIST_ENTRY NAME) + * + * Validates that the previous element (or head of the list) points to 'elm.' + */ +#define QMD_LIST_CHECK_PREV(elm, field) do { \ + if (*(elm)->field.le_prev != (elm)) \ + panic("Bad link elm %p prev->next != elm", (elm)); \ +} while (0) +#else +#define QMD_LIST_CHECK_HEAD(head, field) +#define QMD_LIST_CHECK_NEXT(elm, field) +#define QMD_LIST_CHECK_PREV(elm, field) +#endif /* (_KERNEL && INVARIANTS) */ + +#define LIST_CONCAT(head1, head2, type, field) do { \ + QUEUE_TYPEOF(type) *curelm = LIST_FIRST(head1); \ + if (curelm == NULL) { \ + if ((LIST_FIRST(head1) = LIST_FIRST(head2)) != NULL) { \ + LIST_FIRST(head2)->field.le_prev = \ + &LIST_FIRST((head1)); \ + LIST_INIT(head2); \ + } \ + } else if (LIST_FIRST(head2) != NULL) { \ + while (LIST_NEXT(curelm, field) != NULL) \ + curelm = LIST_NEXT(curelm, field); \ + LIST_NEXT(curelm, field) = LIST_FIRST(head2); \ + LIST_FIRST(head2)->field.le_prev = &LIST_NEXT(curelm, field); \ + LIST_INIT(head2); \ + } \ +} while (0) + +#define LIST_EMPTY(head) ((head)->lh_first == NULL) + +#define LIST_FIRST(head) ((head)->lh_first) + +#define LIST_FOREACH(var, head, field) \ + for ((var) = LIST_FIRST((head)); \ + (var); \ + (var) = LIST_NEXT((var), field)) + +#define LIST_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ + (var); \ + (var) = LIST_NEXT((var), field)) + +#define LIST_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = LIST_FIRST((head)); \ + (var) && ((tvar) = LIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define LIST_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : LIST_FIRST((head))); \ + (var) && ((tvar) = LIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define LIST_INIT(head) do { \ + LIST_FIRST((head)) = NULL; \ +} while (0) + +#define LIST_INSERT_AFTER(listelm, elm, field) do { \ + QMD_LIST_CHECK_NEXT(listelm, field); \ + if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\ + LIST_NEXT((listelm), field)->field.le_prev = \ + &LIST_NEXT((elm), field); \ + LIST_NEXT((listelm), field) = (elm); \ + (elm)->field.le_prev = &LIST_NEXT((listelm), field); \ +} while (0) + +#define LIST_INSERT_BEFORE(listelm, elm, field) do { \ + QMD_LIST_CHECK_PREV(listelm, field); \ + (elm)->field.le_prev = (listelm)->field.le_prev; \ + LIST_NEXT((elm), field) = (listelm); \ + *(listelm)->field.le_prev = (elm); \ + (listelm)->field.le_prev = &LIST_NEXT((elm), field); \ +} while (0) + +#define LIST_INSERT_HEAD(head, elm, field) do { \ + QMD_LIST_CHECK_HEAD((head), field); \ + if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \ + LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\ + LIST_FIRST((head)) = (elm); \ + (elm)->field.le_prev = &LIST_FIRST((head)); \ +} while (0) + +#define LIST_NEXT(elm, field) ((elm)->field.le_next) + +#define LIST_PREV(elm, head, type, field) \ + ((elm)->field.le_prev == &LIST_FIRST((head)) ? NULL : \ + __containerof((elm)->field.le_prev, \ + QUEUE_TYPEOF(type), field.le_next)) + +#define LIST_REMOVE(elm, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.le_next); \ + QMD_SAVELINK(oldprev, (elm)->field.le_prev); \ + QMD_LIST_CHECK_NEXT(elm, field); \ + QMD_LIST_CHECK_PREV(elm, field); \ + if (LIST_NEXT((elm), field) != NULL) \ + LIST_NEXT((elm), field)->field.le_prev = \ + (elm)->field.le_prev; \ + *(elm)->field.le_prev = LIST_NEXT((elm), field); \ + TRASHIT(*oldnext); \ + TRASHIT(*oldprev); \ +} while (0) + +#define LIST_SWAP(head1, head2, type, field) do { \ + QUEUE_TYPEOF(type) *swap_tmp = LIST_FIRST(head1); \ + LIST_FIRST((head1)) = LIST_FIRST((head2)); \ + LIST_FIRST((head2)) = swap_tmp; \ + if ((swap_tmp = LIST_FIRST((head1))) != NULL) \ + swap_tmp->field.le_prev = &LIST_FIRST((head1)); \ + if ((swap_tmp = LIST_FIRST((head2))) != NULL) \ + swap_tmp->field.le_prev = &LIST_FIRST((head2)); \ +} while (0) + +/* + * Tail queue declarations. + */ +#define TAILQ_HEAD(name, type) \ +struct name { \ + struct type *tqh_first; /* first element */ \ + struct type **tqh_last; /* addr of last next element */ \ + TRACEBUF \ +} + +#define TAILQ_CLASS_HEAD(name, type) \ +struct name { \ + class type *tqh_first; /* first element */ \ + class type **tqh_last; /* addr of last next element */ \ + TRACEBUF \ +} + +#define TAILQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).tqh_first, TRACEBUF_INITIALIZER } + +#define TAILQ_ENTRY(type) \ +struct { \ + struct type *tqe_next; /* next element */ \ + struct type **tqe_prev; /* address of previous next element */ \ + TRACEBUF \ +} + +#define TAILQ_CLASS_ENTRY(type) \ +struct { \ + class type *tqe_next; /* next element */ \ + class type **tqe_prev; /* address of previous next element */ \ + TRACEBUF \ +} + +/* + * Tail queue functions. + */ +#if (defined(_KERNEL) && defined(INVARIANTS)) +/* + * QMD_TAILQ_CHECK_HEAD(TAILQ_HEAD *head, TAILQ_ENTRY NAME) + * + * If the tailq is non-empty, validates that the first element of the tailq + * points back at 'head.' + */ +#define QMD_TAILQ_CHECK_HEAD(head, field) do { \ + if (!TAILQ_EMPTY(head) && \ + TAILQ_FIRST((head))->field.tqe_prev != \ + &TAILQ_FIRST((head))) \ + panic("Bad tailq head %p first->prev != head", (head)); \ +} while (0) + +/* + * QMD_TAILQ_CHECK_TAIL(TAILQ_HEAD *head, TAILQ_ENTRY NAME) + * + * Validates that the tail of the tailq is a pointer to pointer to NULL. + */ +#define QMD_TAILQ_CHECK_TAIL(head, field) do { \ + if (*(head)->tqh_last != NULL) \ + panic("Bad tailq NEXT(%p->tqh_last) != NULL", (head)); \ +} while (0) + +/* + * QMD_TAILQ_CHECK_NEXT(TYPE *elm, TAILQ_ENTRY NAME) + * + * If an element follows 'elm' in the tailq, validates that the next element + * points back at 'elm.' + */ +#define QMD_TAILQ_CHECK_NEXT(elm, field) do { \ + if (TAILQ_NEXT((elm), field) != NULL && \ + TAILQ_NEXT((elm), field)->field.tqe_prev != \ + &((elm)->field.tqe_next)) \ + panic("Bad link elm %p next->prev != elm", (elm)); \ +} while (0) + +/* + * QMD_TAILQ_CHECK_PREV(TYPE *elm, TAILQ_ENTRY NAME) + * + * Validates that the previous element (or head of the tailq) points to 'elm.' + */ +#define QMD_TAILQ_CHECK_PREV(elm, field) do { \ + if (*(elm)->field.tqe_prev != (elm)) \ + panic("Bad link elm %p prev->next != elm", (elm)); \ +} while (0) +#else +#define QMD_TAILQ_CHECK_HEAD(head, field) +#define QMD_TAILQ_CHECK_TAIL(head, headname) +#define QMD_TAILQ_CHECK_NEXT(elm, field) +#define QMD_TAILQ_CHECK_PREV(elm, field) +#endif /* (_KERNEL && INVARIANTS) */ + +#define TAILQ_CONCAT(head1, head2, field) do { \ + if (!TAILQ_EMPTY(head2)) { \ + *(head1)->tqh_last = (head2)->tqh_first; \ + (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \ + (head1)->tqh_last = (head2)->tqh_last; \ + TAILQ_INIT((head2)); \ + QMD_TRACE_HEAD(head1); \ + QMD_TRACE_HEAD(head2); \ + } \ +} while (0) + +#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL) + +#define TAILQ_FIRST(head) ((head)->tqh_first) + +#define TAILQ_FOREACH(var, head, field) \ + for ((var) = TAILQ_FIRST((head)); \ + (var); \ + (var) = TAILQ_NEXT((var), field)) + +#define TAILQ_FOREACH_FROM(var, head, field) \ + for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ + (var); \ + (var) = TAILQ_NEXT((var), field)) + +#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = TAILQ_FIRST((head)); \ + (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define TAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \ + for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \ + (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ + for ((var) = TAILQ_LAST((head), headname); \ + (var); \ + (var) = TAILQ_PREV((var), headname, field)) + +#define TAILQ_FOREACH_REVERSE_FROM(var, head, headname, field) \ + for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ + (var); \ + (var) = TAILQ_PREV((var), headname, field)) + +#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \ + for ((var) = TAILQ_LAST((head), headname); \ + (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ + (var) = (tvar)) + +#define TAILQ_FOREACH_REVERSE_FROM_SAFE(var, head, headname, field, tvar) \ + for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \ + (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ + (var) = (tvar)) + +#define TAILQ_INIT(head) do { \ + TAILQ_FIRST((head)) = NULL; \ + (head)->tqh_last = &TAILQ_FIRST((head)); \ + QMD_TRACE_HEAD(head); \ +} while (0) + +#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ + QMD_TAILQ_CHECK_NEXT(listelm, field); \ + if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\ + TAILQ_NEXT((elm), field)->field.tqe_prev = \ + &TAILQ_NEXT((elm), field); \ + else { \ + (head)->tqh_last = &TAILQ_NEXT((elm), field); \ + QMD_TRACE_HEAD(head); \ + } \ + TAILQ_NEXT((listelm), field) = (elm); \ + (elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \ + QMD_TRACE_ELEM(&(elm)->field); \ + QMD_TRACE_ELEM(&(listelm)->field); \ +} while (0) + +#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ + QMD_TAILQ_CHECK_PREV(listelm, field); \ + (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ + TAILQ_NEXT((elm), field) = (listelm); \ + *(listelm)->field.tqe_prev = (elm); \ + (listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \ + QMD_TRACE_ELEM(&(elm)->field); \ + QMD_TRACE_ELEM(&(listelm)->field); \ +} while (0) + +#define TAILQ_INSERT_HEAD(head, elm, field) do { \ + QMD_TAILQ_CHECK_HEAD(head, field); \ + if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \ + TAILQ_FIRST((head))->field.tqe_prev = \ + &TAILQ_NEXT((elm), field); \ + else \ + (head)->tqh_last = &TAILQ_NEXT((elm), field); \ + TAILQ_FIRST((head)) = (elm); \ + (elm)->field.tqe_prev = &TAILQ_FIRST((head)); \ + QMD_TRACE_HEAD(head); \ + QMD_TRACE_ELEM(&(elm)->field); \ +} while (0) + +#define TAILQ_INSERT_TAIL(head, elm, field) do { \ + QMD_TAILQ_CHECK_TAIL(head, field); \ + TAILQ_NEXT((elm), field) = NULL; \ + (elm)->field.tqe_prev = (head)->tqh_last; \ + *(head)->tqh_last = (elm); \ + (head)->tqh_last = &TAILQ_NEXT((elm), field); \ + QMD_TRACE_HEAD(head); \ + QMD_TRACE_ELEM(&(elm)->field); \ +} while (0) + +#define TAILQ_LAST(head, headname) \ + (*(((struct headname *)((head)->tqh_last))->tqh_last)) + +#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) + +#define TAILQ_PREV(elm, headname, field) \ + (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) + +#define TAILQ_REMOVE(head, elm, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.tqe_next); \ + QMD_SAVELINK(oldprev, (elm)->field.tqe_prev); \ + QMD_TAILQ_CHECK_NEXT(elm, field); \ + QMD_TAILQ_CHECK_PREV(elm, field); \ + if ((TAILQ_NEXT((elm), field)) != NULL) \ + TAILQ_NEXT((elm), field)->field.tqe_prev = \ + (elm)->field.tqe_prev; \ + else { \ + (head)->tqh_last = (elm)->field.tqe_prev; \ + QMD_TRACE_HEAD(head); \ + } \ + *(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \ + TRASHIT(*oldnext); \ + TRASHIT(*oldprev); \ + QMD_TRACE_ELEM(&(elm)->field); \ +} while (0) + +#define TAILQ_SWAP(head1, head2, type, field) do { \ + QUEUE_TYPEOF(type) *swap_first = (head1)->tqh_first; \ + QUEUE_TYPEOF(type) **swap_last = (head1)->tqh_last; \ + (head1)->tqh_first = (head2)->tqh_first; \ + (head1)->tqh_last = (head2)->tqh_last; \ + (head2)->tqh_first = swap_first; \ + (head2)->tqh_last = swap_last; \ + if ((swap_first = (head1)->tqh_first) != NULL) \ + swap_first->field.tqe_prev = &(head1)->tqh_first; \ + else \ + (head1)->tqh_last = &(head1)->tqh_first; \ + if ((swap_first = (head2)->tqh_first) != NULL) \ + swap_first->field.tqe_prev = &(head2)->tqh_first; \ + else \ + (head2)->tqh_last = &(head2)->tqh_first; \ +} while (0) + +#endif /* !_SYS_QUEUE_H_ */ diff --git a/external/lsquic/wincompat/vc_compat.h b/external/lsquic/wincompat/vc_compat.h new file mode 100644 index 0000000..f5369a7 --- /dev/null +++ b/external/lsquic/wincompat/vc_compat.h @@ -0,0 +1,35 @@ +/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ +#pragma once +#include +#include +typedef SSIZE_T ssize_t; +struct iovec { + void *iov_base; /* Starting address */ + size_t iov_len; /* Number of bytes to transfer */ +}; +#define strcasecmp(a,b) _strcmpi(a,b) +#define strncasecmp _strnicmp +#define strdup _strdup +#define PATH_MAX MAX_PATH + +#define posix_memalign(p, a, s) (((*(p)) = _aligned_malloc((s), (a))), *(p) ?0 :errno) + +#pragma warning(disable: 4018 4100 4127 4189 4200 4204 4152 4221 4244 4245 4267 4334 4702 4706 4804 ) + /* + 4018:signed/unsigned mismatch + 4100:unreferenced formal parameter, + 4127: conditional expression is constant + 4152: nonstandard extension, function/data pointer conversion in expression + 4189:local variable is initialized but not referenced + 4200:zero-sized-array in struct, + 4204: nonstandard extension used: non-constant aggregate initializer, + 4221: nonstandard extension used:xx cannot be initialized using address of automatic variable y, + 4244: '+=': conversion from 'int' to 'unsigned short', possible loss of data + 4245:'=': conversion from 'int' to 'unsigned int', signed/unsigned mismatch + 4267 function': conversion from 'size_t' to 'int', possible loss of data + 4334: '<<': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?) + 4702: unreachable code + 4706: assignment within conditional expression, + 4804: '-': unsafe use of type 'bool' in operation + */ + From f9ee5b298b9e3ac98c9661670cfcb01f665bf94f Mon Sep 17 00:00:00 2001 From: turuslan Date: Fri, 1 Aug 2025 14:57:07 +0500 Subject: [PATCH 02/13] lsquic-ns3, lsquic test --- CMakeLists.txt | 6 + cli.hpp | 15 + external/lsquic.cmake | 113 ++++ external/lsquic/include/lsquic-ns3.hpp | 9 + external/lsquic/src/liblsquic/lsquic_hash.c | 2 +- external/lsquic/src/liblsquic/lsquic_util.c | 2 +- external/lsquic/src/lsquic-ns3.cpp | 654 ++++++++++++++++++++ lsquic-test.cpp | 250 ++++++++ main.cpp | 4 +- src/beamsim/ns3/protocol.hpp | 8 + src/beamsim/ns3/routing.hpp | 2 +- src/beamsim/ns3/simulator.hpp | 78 ++- 12 files changed, 1118 insertions(+), 25 deletions(-) create mode 100644 external/lsquic.cmake create mode 100644 external/lsquic/include/lsquic-ns3.hpp create mode 100644 external/lsquic/src/lsquic-ns3.cpp create mode 100644 lsquic-test.cpp create mode 100644 src/beamsim/ns3/protocol.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 79b0855..78500a8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,8 +42,14 @@ find_package(ns3 CONFIG) if(ns3_FOUND) find_package(MPI REQUIRED) + include(external/lsquic.cmake) + + add_executable(lsquic-test lsquic-test.cpp) + target_link_libraries(lsquic-test lsquic) + target_compile_definitions(beamsim PRIVATE ns3_FOUND) target_link_libraries(beamsim + lsquic ns3::applications ns3::core ns3::internet diff --git a/cli.hpp b/cli.hpp index 72d8745..08ccaad 100644 --- a/cli.hpp +++ b/cli.hpp @@ -6,6 +6,7 @@ #include #include #include +#include struct Bitrate { uint64_t v; @@ -506,6 +507,10 @@ struct SimulationConfig { {Topology::GOSSIP, "gossip"}, {Topology::GRID, "grid"}, }}; + const Args::Enum enum_protocol_{{ + {beamsim::ns3_::Protocol::TCP, "tcp"}, + {beamsim::ns3_::Protocol::QUIC, "quic"}, + }}; beamsim::example::RolesConfig roles_config; @@ -529,6 +534,13 @@ struct SimulationConfig { "Communication topology", enum_topology_, }; + beamsim::ns3_::Protocol protocol = beamsim::ns3_::Protocol::TCP; + Args::FlagEnum flag_protocol{ + {"-p", "--protocol"}, + protocol, + "Network protocol (TCP/UDP)", + enum_protocol_, + }; Args::FlagInt flag_group_count{{ {"-g", "--groups"}, roles_config.group_count, @@ -617,6 +629,7 @@ struct SimulationConfig { return f(flag_config_path, flag_backend, flag_topology, + flag_protocol, flag_group_count, flag_validators_per_group, flag_shuffle, @@ -682,6 +695,7 @@ struct SimulationConfig { Yaml yaml{YAML::LoadFile(path)}; yaml.at({"backend"}).get(backend, enum_backend_); yaml.at({"topology"}).get(topology, enum_topology_); + yaml.at({"protocol"}).get(protocol, enum_protocol_); yaml.at({"shuffle"}).get(shuffle); yaml.at({"snark1_group_once"}).get(snark1_group_once); yaml.at({"snark1_pull"}).get(snark1_pull); @@ -759,6 +773,7 @@ struct SimulationConfig { std::println("Configuration:"); std::println(" Backend: {}", enum_backend_.str(backend)); std::println(" Topology: {}", enum_topology_.str(topology)); + std::println(" Protocol: {}", enum_protocol_.str(protocol)); std::println(" Groups: {}", roles_config.group_count); std::println(" Validators per group: {}", roles_config.group_validator_count); diff --git a/external/lsquic.cmake b/external/lsquic.cmake new file mode 100644 index 0000000..32f2d98 --- /dev/null +++ b/external/lsquic.cmake @@ -0,0 +1,113 @@ +set(lsquic_dir ${CMAKE_CURRENT_LIST_DIR}/lsquic) + +add_library(lsquic + ${lsquic_dir}/src/liblsquic/ls-qpack/lsqpack.c + ${lsquic_dir}/src/liblsquic/ls-sfparser.c + ${lsquic_dir}/src/liblsquic/lsquic_adaptive_cc.c + ${lsquic_dir}/src/liblsquic/lsquic_alarmset.c + ${lsquic_dir}/src/liblsquic/lsquic_arr.c + ${lsquic_dir}/src/liblsquic/lsquic_attq.c + ${lsquic_dir}/src/liblsquic/lsquic_bbr.c + ${lsquic_dir}/src/liblsquic/lsquic_bw_sampler.c + ${lsquic_dir}/src/liblsquic/lsquic_cfcw.c + ${lsquic_dir}/src/liblsquic/lsquic_chsk_stream.c + ${lsquic_dir}/src/liblsquic/lsquic_conn.c + ${lsquic_dir}/src/liblsquic/lsquic_crand.c + ${lsquic_dir}/src/liblsquic/lsquic_crt_compress.c + ${lsquic_dir}/src/liblsquic/lsquic_crypto.c + ${lsquic_dir}/src/liblsquic/lsquic_cubic.c + ${lsquic_dir}/src/liblsquic/lsquic_di_error.c + ${lsquic_dir}/src/liblsquic/lsquic_di_hash.c + ${lsquic_dir}/src/liblsquic/lsquic_di_nocopy.c + ${lsquic_dir}/src/liblsquic/lsquic_enc_sess_common.c + ${lsquic_dir}/src/liblsquic/lsquic_enc_sess_ietf.c + ${lsquic_dir}/src/liblsquic/lsquic_eng_hist.c + ${lsquic_dir}/src/liblsquic/lsquic_engine.c + ${lsquic_dir}/src/liblsquic/lsquic_ev_log.c + ${lsquic_dir}/src/liblsquic/lsquic_frab_list.c + ${lsquic_dir}/src/liblsquic/lsquic_frame_common.c + ${lsquic_dir}/src/liblsquic/lsquic_frame_reader.c + ${lsquic_dir}/src/liblsquic/lsquic_frame_writer.c + ${lsquic_dir}/src/liblsquic/lsquic_full_conn.c + ${lsquic_dir}/src/liblsquic/lsquic_full_conn_ietf.c + ${lsquic_dir}/src/liblsquic/lsquic_global.c + ${lsquic_dir}/src/liblsquic/lsquic_handshake.c + ${lsquic_dir}/src/liblsquic/lsquic_hash.c + ${lsquic_dir}/src/liblsquic/lsquic_hcsi_reader.c + ${lsquic_dir}/src/liblsquic/lsquic_hcso_writer.c + ${lsquic_dir}/src/liblsquic/lsquic_headers_stream.c + ${lsquic_dir}/src/liblsquic/lsquic_hkdf.c + ${lsquic_dir}/src/liblsquic/lsquic_hpi.c + ${lsquic_dir}/src/liblsquic/lsquic_hspack_valid.c + ${lsquic_dir}/src/liblsquic/lsquic_http.c + ${lsquic_dir}/src/liblsquic/lsquic_http1x_if.c + ${lsquic_dir}/src/liblsquic/lsquic_logger.c + ${lsquic_dir}/src/liblsquic/lsquic_malo.c + ${lsquic_dir}/src/liblsquic/lsquic_min_heap.c + ${lsquic_dir}/src/liblsquic/lsquic_mini_conn.c + ${lsquic_dir}/src/liblsquic/lsquic_mini_conn_ietf.c + ${lsquic_dir}/src/liblsquic/lsquic_minmax.c + ${lsquic_dir}/src/liblsquic/lsquic_mm.c + ${lsquic_dir}/src/liblsquic/lsquic_pacer.c + ${lsquic_dir}/src/liblsquic/lsquic_packet_common.c + ${lsquic_dir}/src/liblsquic/lsquic_packet_gquic.c + ${lsquic_dir}/src/liblsquic/lsquic_packet_in.c + ${lsquic_dir}/src/liblsquic/lsquic_packet_out.c + ${lsquic_dir}/src/liblsquic/lsquic_packet_resize.c + ${lsquic_dir}/src/liblsquic/lsquic_parse_Q046.c + ${lsquic_dir}/src/liblsquic/lsquic_parse_Q050.c + ${lsquic_dir}/src/liblsquic/lsquic_parse_common.c + ${lsquic_dir}/src/liblsquic/lsquic_parse_gquic_be.c + ${lsquic_dir}/src/liblsquic/lsquic_parse_gquic_common.c + ${lsquic_dir}/src/liblsquic/lsquic_parse_ietf_v1.c + ${lsquic_dir}/src/liblsquic/lsquic_parse_iquic_common.c + ${lsquic_dir}/src/liblsquic/lsquic_pr_queue.c + ${lsquic_dir}/src/liblsquic/lsquic_purga.c + ${lsquic_dir}/src/liblsquic/lsquic_qdec_hdl.c + ${lsquic_dir}/src/liblsquic/lsquic_qenc_hdl.c + ${lsquic_dir}/src/liblsquic/lsquic_qlog.c + ${lsquic_dir}/src/liblsquic/lsquic_qpack_exp.c + ${lsquic_dir}/src/liblsquic/lsquic_rechist.c + ${lsquic_dir}/src/liblsquic/lsquic_rtt.c + ${lsquic_dir}/src/liblsquic/lsquic_send_ctl.c + ${lsquic_dir}/src/liblsquic/lsquic_senhist.c + ${lsquic_dir}/src/liblsquic/lsquic_set.c + ${lsquic_dir}/src/liblsquic/lsquic_sfcw.c + ${lsquic_dir}/src/liblsquic/lsquic_shsk_stream.c + ${lsquic_dir}/src/liblsquic/lsquic_spi.c + ${lsquic_dir}/src/liblsquic/lsquic_stock_shi.c + ${lsquic_dir}/src/liblsquic/lsquic_str.c + ${lsquic_dir}/src/liblsquic/lsquic_stream.c + ${lsquic_dir}/src/liblsquic/lsquic_tokgen.c + ${lsquic_dir}/src/liblsquic/lsquic_trans_params.c + ${lsquic_dir}/src/liblsquic/lsquic_trechist.c + ${lsquic_dir}/src/liblsquic/lsquic_util.c + ${lsquic_dir}/src/liblsquic/lsquic_varint.c + ${lsquic_dir}/src/liblsquic/lsquic_version.c + ${lsquic_dir}/src/lshpack/lshpack.c + + ${lsquic_dir}/src/lsquic-ns3.cpp +) +target_compile_definitions(lsquic PRIVATE + XXH_HEADER_NAME="../liblsquic/lsquic_xxhash.h" +) +target_compile_options(lsquic PRIVATE + -Wno-unused-parameter + -Wno-sign-compare +) +target_include_directories(lsquic PUBLIC + ${lsquic_dir}/include + ${lsquic_dir}/src/liblsquic/ls-qpack + ${lsquic_dir}/src/lshpack + ${OpenSSL_DIR}/include + ${ZLIB_DIR}/include +) +target_link_libraries(lsquic + ns3::applications + ns3::internet + ns3::point-to-point + ${OpenSSL_DIR}/lib/libcrypto.dylib + ${OpenSSL_DIR}/lib/libssl.dylib + xxhash + ${ZLIB_DIR}/lib/libz.a +) diff --git a/external/lsquic/include/lsquic-ns3.hpp b/external/lsquic/include/lsquic-ns3.hpp new file mode 100644 index 0000000..6412b0d --- /dev/null +++ b/external/lsquic/include/lsquic-ns3.hpp @@ -0,0 +1,9 @@ +#pragma once + +#include + +namespace ns3 { + class Node; + + void InstallLsquic(const Ptr &node); +} // namespace ns3 diff --git a/external/lsquic/src/liblsquic/lsquic_hash.c b/external/lsquic/src/liblsquic/lsquic_hash.c index d6913ce..a63f226 100644 --- a/external/lsquic/src/liblsquic/lsquic_hash.c +++ b/external/lsquic/src/liblsquic/lsquic_hash.c @@ -44,7 +44,7 @@ struct lsquic_hash static uint64_t get_seed() { - static uint64_t seed = 0; + static uint64_t seed = 1; if (seed == 0) { #if defined(WIN32) diff --git a/external/lsquic/src/liblsquic/lsquic_util.c b/external/lsquic/src/liblsquic/lsquic_util.c index 0c295aa..dcf6411 100644 --- a/external/lsquic/src/liblsquic/lsquic_util.c +++ b/external/lsquic/src/liblsquic/lsquic_util.c @@ -69,7 +69,7 @@ lsquic_init_timers (void) lsquic_time_t -lsquic_time_now (void) +_lsquic_time_now (void) { #if LSQUIC_COUNT_TIME_CALLS ++n_time_now_calls; diff --git a/external/lsquic/src/lsquic-ns3.cpp b/external/lsquic/src/lsquic-ns3.cpp new file mode 100644 index 0000000..e01f16c --- /dev/null +++ b/external/lsquic/src/lsquic-ns3.cpp @@ -0,0 +1,654 @@ +#ifndef NS3_ASSERT_ENABLE +#define NS3_ASSERT_ENABLE +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "liblsquic/lsquic_int_types.h" + +extern "C" lsquic_time_t lsquic_time_now() { + return ns3::Simulator::Now().GetMicroSeconds(); +} + +template +inline auto optionTake(std::optional &optional) { + auto result = std::move(optional); + optional.reset(); + return result; +} + +namespace ns3 { + constexpr uint32_t kWindowSize = 64 << 10; + constexpr std::chrono::seconds kIdleTimeout{5}; + + struct LsquicCertificate { + static constexpr std::array kAlpn{3, 'n', 's', '3'}; + + static void setRelativeTime(ASN1_TIME *o_time, auto delta) { + NS_ASSERT(X509_gmtime_adj( + o_time, + std::chrono::duration_cast(delta).count())); + } + + LsquicCertificate() : ctx_{SSL_CTX_new(TLS_method())} { + static FILE *keylog = [] { + FILE *f = nullptr; + if (auto *path = getenv("SSLKEYLOGFILE")) { + f = fopen(path, "a"); + setvbuf(f, nullptr, _IOLBF, 0); + } + return f; + }(); + if (keylog) { + SSL_CTX_set_keylog_callback( + ctx_.get(), +[](const SSL *, const char *line) { + fputs(line, keylog); + fputc('\n', keylog); + }); + } + NS_ASSERT(SSL_CTX_set_alpn_protos(ctx_.get(), kAlpn.data(), kAlpn.size()) + == 0); + SSL_CTX_set_alpn_select_cb(ctx_.get(), alpn, this); + SSL_CTX_set_min_proto_version(ctx_.get(), TLS1_3_VERSION); + SSL_CTX_set_max_proto_version(ctx_.get(), TLS1_3_VERSION); + std::array prefs{SSL_SIGN_ED25519}; + NS_ASSERT(SSL_CTX_set_signing_algorithm_prefs( + ctx_.get(), prefs.data(), prefs.size())); + NS_ASSERT(SSL_CTX_set_verify_algorithm_prefs( + ctx_.get(), prefs.data(), prefs.size())); + bssl::UniquePtr x509(X509_new()); + setRelativeTime(X509_getm_notBefore(x509.get()), -std::chrono::days{1}); + setRelativeTime(X509_getm_notAfter(x509.get()), std::chrono::years{1}); + bssl::UniquePtr pkey_ctx( + EVP_PKEY_CTX_new_id(EVP_PKEY_ED25519, nullptr)); + NS_ASSERT(EVP_PKEY_keygen_init(pkey_ctx.get())); + EVP_PKEY *_pkey = nullptr; + NS_ASSERT(EVP_PKEY_keygen(pkey_ctx.get(), &_pkey)); + bssl::UniquePtr pkey{_pkey}; + NS_ASSERT(SSL_CTX_use_PrivateKey(ctx_.get(), pkey.get())); + NS_ASSERT(X509_set_pubkey(x509.get(), pkey.get())); + NS_ASSERT(X509_sign(x509.get(), pkey.get(), nullptr)); + NS_ASSERT(SSL_CTX_use_certificate(ctx_.get(), x509.get())); + } + + static int alpn(ssl_st *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *) { + uint8_t *out2 = nullptr; + int r = SSL_select_next_proto( + &out2, outlen, in, inlen, kAlpn.data(), kAlpn.size()); + *out = out2; + return r == OPENSSL_NPN_NEGOTIATED ? SSL_TLSEXT_ERR_OK + : SSL_TLSEXT_ERR_ALERT_FATAL; + } + + bssl::UniquePtr ctx_; + }; + + class LsquicSocket; + class LsquicSocketFactory; + + inline sockaddr toSockaddr(const ns3::Address &address) { + auto endpoint = InetSocketAddress::ConvertFrom(address); + sockaddr_in sockaddr_in{ + sizeof(sockaddr_in), + AF_INET, + htons(endpoint.GetPort()), + {htonl(endpoint.GetIpv4().Get())}, + {}, + }; + return reinterpret_cast(sockaddr_in); + } + inline ns3::Address fromSockaddr(const sockaddr &sockaddr) { + auto &sockaddr_in = reinterpret_cast(sockaddr); + return InetSocketAddress{ + Ipv4Address{ntohl(sockaddr_in.sin_addr.s_addr)}, + ntohs(sockaddr_in.sin_port), + }; + } + + class LsquicEngine : public Object { + public: + LsquicEngine(Ptr factory, + const std::optional